From d8e0bbbbc14af986fc291fc141c792db3019cec1 Mon Sep 17 00:00:00 2001 From: Vlad Ifrim Date: Thu, 7 Dec 2023 14:49:44 +0200 Subject: [PATCH 1/2] fixes lib --- lib/6925696524271b926a8e.js | 1630 ++ lib/9c4ab5d453e67f8e3a66.js | 11 - lib/9c4ab5d453e67f8e3a66.js.map | 1 - lib/index.css | 8 +- lib/index.css.map | 2 +- lib/index.js | 40537 +++++++++++++++++++++++++++++- lib/index.js.map | 2 +- lib/tyk-ui.css | 8 +- lib/tyk-ui.css.map | 2 +- lib/tyk-ui.js | 40537 +++++++++++++++++++++++++++++- lib/tyk-ui.js.map | 2 +- package-lock.json | 186 +- package.json | 14 +- webpack.config.js | 15 +- 14 files changed, 80541 insertions(+), 2414 deletions(-) create mode 100644 lib/6925696524271b926a8e.js delete mode 100644 lib/9c4ab5d453e67f8e3a66.js delete mode 100644 lib/9c4ab5d453e67f8e3a66.js.map diff --git a/lib/6925696524271b926a8e.js b/lib/6925696524271b926a8e.js new file mode 100644 index 00000000..00ddd4a3 --- /dev/null +++ b/lib/6925696524271b926a8e.js @@ -0,0 +1,1630 @@ +"no use strict"; +!(function(window) { +if (typeof window.window != "undefined" && window.document) + return; +if (window.require && window.define) + return; + +if (!window.console) { + window.console = function() { + var msgs = Array.prototype.slice.call(arguments, 0); + postMessage({type: "log", data: msgs}); + }; + window.console.error = + window.console.warn = + window.console.log = + window.console.trace = window.console; +} +window.window = window; +window.ace = window; + +window.onerror = function(message, file, line, col, err) { + postMessage({type: "error", data: { + message: message, + data: err && err.data, + file: file, + line: line, + col: col, + stack: err && err.stack + }}); +}; + +window.normalizeModule = function(parentId, moduleName) { + // normalize plugin requires + if (moduleName.indexOf("!") !== -1) { + var chunks = moduleName.split("!"); + return window.normalizeModule(parentId, chunks[0]) + "!" + window.normalizeModule(parentId, chunks[1]); + } + // normalize relative requires + if (moduleName.charAt(0) == ".") { + var base = parentId.split("/").slice(0, -1).join("/"); + moduleName = (base ? base + "/" : "") + moduleName; + + while (moduleName.indexOf(".") !== -1 && previous != moduleName) { + var previous = moduleName; + moduleName = moduleName.replace(/^\.\//, "").replace(/\/\.\//, "/").replace(/[^\/]+\/\.\.\//, ""); + } + } + + return moduleName; +}; + +window.require = function require(parentId, id) { + if (!id) { + id = parentId; + parentId = null; + } + if (!id.charAt) + throw new Error("worker.js require() accepts only (parentId, id) as arguments"); + + id = window.normalizeModule(parentId, id); + + var module = window.require.modules[id]; + if (module) { + if (!module.initialized) { + module.initialized = true; + module.exports = module.factory().exports; + } + return module.exports; + } + + if (!window.require.tlns) + return console.log("unable to load " + id); + + var path = resolveModuleId(id, window.require.tlns); + if (path.slice(-3) != ".js") path += ".js"; + + window.require.id = id; + window.require.modules[id] = {}; // prevent infinite loop on broken modules + importScripts(path); + return window.require(parentId, id); +}; +function resolveModuleId(id, paths) { + var testPath = id, tail = ""; + while (testPath) { + var alias = paths[testPath]; + if (typeof alias == "string") { + return alias + tail; + } else if (alias) { + return alias.location.replace(/\/*$/, "/") + (tail || alias.main || alias.name); + } else if (alias === false) { + return ""; + } + var i = testPath.lastIndexOf("/"); + if (i === -1) break; + tail = testPath.substr(i) + tail; + testPath = testPath.slice(0, i); + } + return id; +} +window.require.modules = {}; +window.require.tlns = {}; + +window.define = function(id, deps, factory) { + if (arguments.length == 2) { + factory = deps; + if (typeof id != "string") { + deps = id; + id = window.require.id; + } + } else if (arguments.length == 1) { + factory = id; + deps = []; + id = window.require.id; + } + + if (typeof factory != "function") { + window.require.modules[id] = { + exports: factory, + initialized: true + }; + return; + } + + if (!deps.length) + // If there is no dependencies, we inject "require", "exports" and + // "module" as dependencies, to provide CommonJS compatibility. + deps = ["require", "exports", "module"]; + + var req = function(childId) { + return window.require(id, childId); + }; + + window.require.modules[id] = { + exports: {}, + factory: function() { + var module = this; + var returnExports = factory.apply(this, deps.slice(0, factory.length).map(function(dep) { + switch (dep) { + // Because "require", "exports" and "module" aren't actual + // dependencies, we must handle them seperately. + case "require": return req; + case "exports": return module.exports; + case "module": return module; + // But for all other dependencies, we can just go ahead and + // require them. + default: return req(dep); + } + })); + if (returnExports) + module.exports = returnExports; + return module; + } + }; +}; +window.define.amd = {}; +window.require.tlns = {}; +window.initBaseUrls = function initBaseUrls(topLevelNamespaces) { + for (var i in topLevelNamespaces) + this.require.tlns[i] = topLevelNamespaces[i]; +}; + +window.initSender = function initSender() { + + var EventEmitter = window.require("ace/lib/event_emitter").EventEmitter; + var oop = window.require("ace/lib/oop"); + + var Sender = function() {}; + + (function() { + + oop.implement(this, EventEmitter); + + this.callback = function(data, callbackId) { + postMessage({ + type: "call", + id: callbackId, + data: data + }); + }; + + this.emit = function(name, data) { + postMessage({ + type: "event", + name: name, + data: data + }); + }; + + }).call(Sender.prototype); + + return new Sender(); +}; + +var main = window.main = null; +var sender = window.sender = null; + +window.onmessage = function(e) { + var msg = e.data; + if (msg.event && sender) { + sender._signal(msg.event, msg.data); + } + else if (msg.command) { + if (main[msg.command]) + main[msg.command].apply(main, msg.args); + else if (window[msg.command]) + window[msg.command].apply(window, msg.args); + else + throw new Error("Unknown command:" + msg.command); + } + else if (msg.init) { + window.initBaseUrls(msg.tlns); + sender = window.sender = window.initSender(); + var clazz = this.require(msg.module)[msg.classname]; + main = window.main = new clazz(sender); + } +}; +})(this); + +ace.define("ace/lib/oop",[], function(require, exports, module){"use strict"; +exports.inherits = function (ctor, superCtor) { + ctor.super_ = superCtor; + ctor.prototype = Object.create(superCtor.prototype, { + constructor: { + value: ctor, + enumerable: false, + writable: true, + configurable: true + } + }); +}; +exports.mixin = function (obj, mixin) { + for (var key in mixin) { + obj[key] = mixin[key]; + } + return obj; +}; +exports.implement = function (proto, mixin) { + exports.mixin(proto, mixin); +}; + +}); + +ace.define("ace/apply_delta",[], function(require, exports, module){"use strict"; +function throwDeltaError(delta, errorText) { + console.log("Invalid Delta:", delta); + throw "Invalid Delta: " + errorText; +} +function positionInDocument(docLines, position) { + return position.row >= 0 && position.row < docLines.length && + position.column >= 0 && position.column <= docLines[position.row].length; +} +function validateDelta(docLines, delta) { + if (delta.action != "insert" && delta.action != "remove") + throwDeltaError(delta, "delta.action must be 'insert' or 'remove'"); + if (!(delta.lines instanceof Array)) + throwDeltaError(delta, "delta.lines must be an Array"); + if (!delta.start || !delta.end) + throwDeltaError(delta, "delta.start/end must be an present"); + var start = delta.start; + if (!positionInDocument(docLines, delta.start)) + throwDeltaError(delta, "delta.start must be contained in document"); + var end = delta.end; + if (delta.action == "remove" && !positionInDocument(docLines, end)) + throwDeltaError(delta, "delta.end must contained in document for 'remove' actions"); + var numRangeRows = end.row - start.row; + var numRangeLastLineChars = (end.column - (numRangeRows == 0 ? start.column : 0)); + if (numRangeRows != delta.lines.length - 1 || delta.lines[numRangeRows].length != numRangeLastLineChars) + throwDeltaError(delta, "delta.range must match delta lines"); +} +exports.applyDelta = function (docLines, delta, doNotValidate) { + var row = delta.start.row; + var startColumn = delta.start.column; + var line = docLines[row] || ""; + switch (delta.action) { + case "insert": + var lines = delta.lines; + if (lines.length === 1) { + docLines[row] = line.substring(0, startColumn) + delta.lines[0] + line.substring(startColumn); + } + else { + var args = [row, 1].concat(delta.lines); + docLines.splice.apply(docLines, args); + docLines[row] = line.substring(0, startColumn) + docLines[row]; + docLines[row + delta.lines.length - 1] += line.substring(startColumn); + } + break; + case "remove": + var endColumn = delta.end.column; + var endRow = delta.end.row; + if (row === endRow) { + docLines[row] = line.substring(0, startColumn) + line.substring(endColumn); + } + else { + docLines.splice(row, endRow - row + 1, line.substring(0, startColumn) + docLines[endRow].substring(endColumn)); + } + break; + } +}; + +}); + +ace.define("ace/lib/event_emitter",[], function(require, exports, module){"use strict"; +var EventEmitter = {}; +var stopPropagation = function () { this.propagationStopped = true; }; +var preventDefault = function () { this.defaultPrevented = true; }; +EventEmitter._emit = + EventEmitter._dispatchEvent = function (eventName, e) { + this._eventRegistry || (this._eventRegistry = {}); + this._defaultHandlers || (this._defaultHandlers = {}); + var listeners = this._eventRegistry[eventName] || []; + var defaultHandler = this._defaultHandlers[eventName]; + if (!listeners.length && !defaultHandler) + return; + if (typeof e != "object" || !e) + e = {}; + if (!e.type) + e.type = eventName; + if (!e.stopPropagation) + e.stopPropagation = stopPropagation; + if (!e.preventDefault) + e.preventDefault = preventDefault; + listeners = listeners.slice(); + for (var i = 0; i < listeners.length; i++) { + listeners[i](e, this); + if (e.propagationStopped) + break; + } + if (defaultHandler && !e.defaultPrevented) + return defaultHandler(e, this); + }; +EventEmitter._signal = function (eventName, e) { + var listeners = (this._eventRegistry || {})[eventName]; + if (!listeners) + return; + listeners = listeners.slice(); + for (var i = 0; i < listeners.length; i++) + listeners[i](e, this); +}; +EventEmitter.once = function (eventName, callback) { + var _self = this; + this.on(eventName, function newCallback() { + _self.off(eventName, newCallback); + callback.apply(null, arguments); + }); + if (!callback) { + return new Promise(function (resolve) { + callback = resolve; + }); + } +}; +EventEmitter.setDefaultHandler = function (eventName, callback) { + var handlers = this._defaultHandlers; + if (!handlers) + handlers = this._defaultHandlers = { _disabled_: {} }; + if (handlers[eventName]) { + var old = handlers[eventName]; + var disabled = handlers._disabled_[eventName]; + if (!disabled) + handlers._disabled_[eventName] = disabled = []; + disabled.push(old); + var i = disabled.indexOf(callback); + if (i != -1) + disabled.splice(i, 1); + } + handlers[eventName] = callback; +}; +EventEmitter.removeDefaultHandler = function (eventName, callback) { + var handlers = this._defaultHandlers; + if (!handlers) + return; + var disabled = handlers._disabled_[eventName]; + if (handlers[eventName] == callback) { + if (disabled) + this.setDefaultHandler(eventName, disabled.pop()); + } + else if (disabled) { + var i = disabled.indexOf(callback); + if (i != -1) + disabled.splice(i, 1); + } +}; +EventEmitter.on = + EventEmitter.addEventListener = function (eventName, callback, capturing) { + this._eventRegistry = this._eventRegistry || {}; + var listeners = this._eventRegistry[eventName]; + if (!listeners) + listeners = this._eventRegistry[eventName] = []; + if (listeners.indexOf(callback) == -1) + listeners[capturing ? "unshift" : "push"](callback); + return callback; + }; +EventEmitter.off = + EventEmitter.removeListener = + EventEmitter.removeEventListener = function (eventName, callback) { + this._eventRegistry = this._eventRegistry || {}; + var listeners = this._eventRegistry[eventName]; + if (!listeners) + return; + var index = listeners.indexOf(callback); + if (index !== -1) + listeners.splice(index, 1); + }; +EventEmitter.removeAllListeners = function (eventName) { + if (!eventName) + this._eventRegistry = this._defaultHandlers = undefined; + if (this._eventRegistry) + this._eventRegistry[eventName] = undefined; + if (this._defaultHandlers) + this._defaultHandlers[eventName] = undefined; +}; +exports.EventEmitter = EventEmitter; + +}); + +ace.define("ace/range",[], function(require, exports, module){"use strict"; +var comparePoints = function (p1, p2) { + return p1.row - p2.row || p1.column - p2.column; +}; +var Range = /** @class */ (function () { + function Range(startRow, startColumn, endRow, endColumn) { + this.start = { + row: startRow, + column: startColumn + }; + this.end = { + row: endRow, + column: endColumn + }; + } + Range.prototype.isEqual = function (range) { + return this.start.row === range.start.row && + this.end.row === range.end.row && + this.start.column === range.start.column && + this.end.column === range.end.column; + }; + Range.prototype.toString = function () { + return ("Range: [" + this.start.row + "/" + this.start.column + + "] -> [" + this.end.row + "/" + this.end.column + "]"); + }; + Range.prototype.contains = function (row, column) { + return this.compare(row, column) == 0; + }; + Range.prototype.compareRange = function (range) { + var cmp, end = range.end, start = range.start; + cmp = this.compare(end.row, end.column); + if (cmp == 1) { + cmp = this.compare(start.row, start.column); + if (cmp == 1) { + return 2; + } + else if (cmp == 0) { + return 1; + } + else { + return 0; + } + } + else if (cmp == -1) { + return -2; + } + else { + cmp = this.compare(start.row, start.column); + if (cmp == -1) { + return -1; + } + else if (cmp == 1) { + return 42; + } + else { + return 0; + } + } + }; + Range.prototype.comparePoint = function (p) { + return this.compare(p.row, p.column); + }; + Range.prototype.containsRange = function (range) { + return this.comparePoint(range.start) == 0 && this.comparePoint(range.end) == 0; + }; + Range.prototype.intersects = function (range) { + var cmp = this.compareRange(range); + return (cmp == -1 || cmp == 0 || cmp == 1); + }; + Range.prototype.isEnd = function (row, column) { + return this.end.row == row && this.end.column == column; + }; + Range.prototype.isStart = function (row, column) { + return this.start.row == row && this.start.column == column; + }; + Range.prototype.setStart = function (row, column) { + if (typeof row == "object") { + this.start.column = row.column; + this.start.row = row.row; + } + else { + this.start.row = row; + this.start.column = column; + } + }; + Range.prototype.setEnd = function (row, column) { + if (typeof row == "object") { + this.end.column = row.column; + this.end.row = row.row; + } + else { + this.end.row = row; + this.end.column = column; + } + }; + Range.prototype.inside = function (row, column) { + if (this.compare(row, column) == 0) { + if (this.isEnd(row, column) || this.isStart(row, column)) { + return false; + } + else { + return true; + } + } + return false; + }; + Range.prototype.insideStart = function (row, column) { + if (this.compare(row, column) == 0) { + if (this.isEnd(row, column)) { + return false; + } + else { + return true; + } + } + return false; + }; + Range.prototype.insideEnd = function (row, column) { + if (this.compare(row, column) == 0) { + if (this.isStart(row, column)) { + return false; + } + else { + return true; + } + } + return false; + }; + Range.prototype.compare = function (row, column) { + if (!this.isMultiLine()) { + if (row === this.start.row) { + return column < this.start.column ? -1 : (column > this.end.column ? 1 : 0); + } + } + if (row < this.start.row) + return -1; + if (row > this.end.row) + return 1; + if (this.start.row === row) + return column >= this.start.column ? 0 : -1; + if (this.end.row === row) + return column <= this.end.column ? 0 : 1; + return 0; + }; + Range.prototype.compareStart = function (row, column) { + if (this.start.row == row && this.start.column == column) { + return -1; + } + else { + return this.compare(row, column); + } + }; + Range.prototype.compareEnd = function (row, column) { + if (this.end.row == row && this.end.column == column) { + return 1; + } + else { + return this.compare(row, column); + } + }; + Range.prototype.compareInside = function (row, column) { + if (this.end.row == row && this.end.column == column) { + return 1; + } + else if (this.start.row == row && this.start.column == column) { + return -1; + } + else { + return this.compare(row, column); + } + }; + Range.prototype.clipRows = function (firstRow, lastRow) { + if (this.end.row > lastRow) + var end = { row: lastRow + 1, column: 0 }; + else if (this.end.row < firstRow) + var end = { row: firstRow, column: 0 }; + if (this.start.row > lastRow) + var start = { row: lastRow + 1, column: 0 }; + else if (this.start.row < firstRow) + var start = { row: firstRow, column: 0 }; + return Range.fromPoints(start || this.start, end || this.end); + }; + Range.prototype.extend = function (row, column) { + var cmp = this.compare(row, column); + if (cmp == 0) + return this; + else if (cmp == -1) + var start = { row: row, column: column }; + else + var end = { row: row, column: column }; + return Range.fromPoints(start || this.start, end || this.end); + }; + Range.prototype.isEmpty = function () { + return (this.start.row === this.end.row && this.start.column === this.end.column); + }; + Range.prototype.isMultiLine = function () { + return (this.start.row !== this.end.row); + }; + Range.prototype.clone = function () { + return Range.fromPoints(this.start, this.end); + }; + Range.prototype.collapseRows = function () { + if (this.end.column == 0) + return new Range(this.start.row, 0, Math.max(this.start.row, this.end.row - 1), 0); + else + return new Range(this.start.row, 0, this.end.row, 0); + }; + Range.prototype.toScreenRange = function (session) { + var screenPosStart = session.documentToScreenPosition(this.start); + var screenPosEnd = session.documentToScreenPosition(this.end); + return new Range(screenPosStart.row, screenPosStart.column, screenPosEnd.row, screenPosEnd.column); + }; + Range.prototype.moveBy = function (row, column) { + this.start.row += row; + this.start.column += column; + this.end.row += row; + this.end.column += column; + }; + return Range; +}()); +Range.fromPoints = function (start, end) { + return new Range(start.row, start.column, end.row, end.column); +}; +Range.comparePoints = comparePoints; +Range.comparePoints = function (p1, p2) { + return p1.row - p2.row || p1.column - p2.column; +}; +exports.Range = Range; + +}); + +ace.define("ace/anchor",[], function(require, exports, module){"use strict"; +var oop = require("./lib/oop"); +var EventEmitter = require("./lib/event_emitter").EventEmitter; +var Anchor = /** @class */ (function () { + function Anchor(doc, row, column) { + this.$onChange = this.onChange.bind(this); + this.attach(doc); + if (typeof column == "undefined") + this.setPosition(row.row, row.column); + else + this.setPosition(row, column); + } + Anchor.prototype.getPosition = function () { + return this.$clipPositionToDocument(this.row, this.column); + }; + Anchor.prototype.getDocument = function () { + return this.document; + }; + Anchor.prototype.onChange = function (delta) { + if (delta.start.row == delta.end.row && delta.start.row != this.row) + return; + if (delta.start.row > this.row) + return; + var point = $getTransformedPoint(delta, { row: this.row, column: this.column }, this.$insertRight); + this.setPosition(point.row, point.column, true); + }; + Anchor.prototype.setPosition = function (row, column, noClip) { + var pos; + if (noClip) { + pos = { + row: row, + column: column + }; + } + else { + pos = this.$clipPositionToDocument(row, column); + } + if (this.row == pos.row && this.column == pos.column) + return; + var old = { + row: this.row, + column: this.column + }; + this.row = pos.row; + this.column = pos.column; + this._signal("change", { + old: old, + value: pos + }); + }; + Anchor.prototype.detach = function () { + this.document.off("change", this.$onChange); + }; + Anchor.prototype.attach = function (doc) { + this.document = doc || this.document; + this.document.on("change", this.$onChange); + }; + Anchor.prototype.$clipPositionToDocument = function (row, column) { + var pos = {}; + if (row >= this.document.getLength()) { + pos.row = Math.max(0, this.document.getLength() - 1); + pos.column = this.document.getLine(pos.row).length; + } + else if (row < 0) { + pos.row = 0; + pos.column = 0; + } + else { + pos.row = row; + pos.column = Math.min(this.document.getLine(pos.row).length, Math.max(0, column)); + } + if (column < 0) + pos.column = 0; + return pos; + }; + return Anchor; +}()); +Anchor.prototype.$insertRight = false; +oop.implement(Anchor.prototype, EventEmitter); +function $pointsInOrder(point1, point2, equalPointsInOrder) { + var bColIsAfter = equalPointsInOrder ? point1.column <= point2.column : point1.column < point2.column; + return (point1.row < point2.row) || (point1.row == point2.row && bColIsAfter); +} +function $getTransformedPoint(delta, point, moveIfEqual) { + var deltaIsInsert = delta.action == "insert"; + var deltaRowShift = (deltaIsInsert ? 1 : -1) * (delta.end.row - delta.start.row); + var deltaColShift = (deltaIsInsert ? 1 : -1) * (delta.end.column - delta.start.column); + var deltaStart = delta.start; + var deltaEnd = deltaIsInsert ? deltaStart : delta.end; // Collapse insert range. + if ($pointsInOrder(point, deltaStart, moveIfEqual)) { + return { + row: point.row, + column: point.column + }; + } + if ($pointsInOrder(deltaEnd, point, !moveIfEqual)) { + return { + row: point.row + deltaRowShift, + column: point.column + (point.row == deltaEnd.row ? deltaColShift : 0) + }; + } + return { + row: deltaStart.row, + column: deltaStart.column + }; +} +exports.Anchor = Anchor; + +}); + +ace.define("ace/document",[], function(require, exports, module){"use strict"; +var oop = require("./lib/oop"); +var applyDelta = require("./apply_delta").applyDelta; +var EventEmitter = require("./lib/event_emitter").EventEmitter; +var Range = require("./range").Range; +var Anchor = require("./anchor").Anchor; +var Document = /** @class */ (function () { + function Document(textOrLines) { + this.$lines = [""]; + if (textOrLines.length === 0) { + this.$lines = [""]; + } + else if (Array.isArray(textOrLines)) { + this.insertMergedLines({ row: 0, column: 0 }, textOrLines); + } + else { + this.insert({ row: 0, column: 0 }, textOrLines); + } + } + Document.prototype.setValue = function (text) { + var len = this.getLength() - 1; + this.remove(new Range(0, 0, len, this.getLine(len).length)); + this.insert({ row: 0, column: 0 }, text || ""); + }; + Document.prototype.getValue = function () { + return this.getAllLines().join(this.getNewLineCharacter()); + }; + Document.prototype.createAnchor = function (row, column) { + return new Anchor(this, row, column); + }; + Document.prototype.$detectNewLine = function (text) { + var match = text.match(/^.*?(\r\n|\r|\n)/m); + this.$autoNewLine = match ? match[1] : "\n"; + this._signal("changeNewLineMode"); + }; + Document.prototype.getNewLineCharacter = function () { + switch (this.$newLineMode) { + case "windows": + return "\r\n"; + case "unix": + return "\n"; + default: + return this.$autoNewLine || "\n"; + } + }; + Document.prototype.setNewLineMode = function (newLineMode) { + if (this.$newLineMode === newLineMode) + return; + this.$newLineMode = newLineMode; + this._signal("changeNewLineMode"); + }; + Document.prototype.getNewLineMode = function () { + return this.$newLineMode; + }; + Document.prototype.isNewLine = function (text) { + return (text == "\r\n" || text == "\r" || text == "\n"); + }; + Document.prototype.getLine = function (row) { + return this.$lines[row] || ""; + }; + Document.prototype.getLines = function (firstRow, lastRow) { + return this.$lines.slice(firstRow, lastRow + 1); + }; + Document.prototype.getAllLines = function () { + return this.getLines(0, this.getLength()); + }; + Document.prototype.getLength = function () { + return this.$lines.length; + }; + Document.prototype.getTextRange = function (range) { + return this.getLinesForRange(range).join(this.getNewLineCharacter()); + }; + Document.prototype.getLinesForRange = function (range) { + var lines; + if (range.start.row === range.end.row) { + lines = [this.getLine(range.start.row).substring(range.start.column, range.end.column)]; + } + else { + lines = this.getLines(range.start.row, range.end.row); + lines[0] = (lines[0] || "").substring(range.start.column); + var l = lines.length - 1; + if (range.end.row - range.start.row == l) + lines[l] = lines[l].substring(0, range.end.column); + } + return lines; + }; + Document.prototype.insertLines = function (row, lines) { + console.warn("Use of document.insertLines is deprecated. Use the insertFullLines method instead."); + return this.insertFullLines(row, lines); + }; + Document.prototype.removeLines = function (firstRow, lastRow) { + console.warn("Use of document.removeLines is deprecated. Use the removeFullLines method instead."); + return this.removeFullLines(firstRow, lastRow); + }; + Document.prototype.insertNewLine = function (position) { + console.warn("Use of document.insertNewLine is deprecated. Use insertMergedLines(position, ['', '']) instead."); + return this.insertMergedLines(position, ["", ""]); + }; + Document.prototype.insert = function (position, text) { + if (this.getLength() <= 1) + this.$detectNewLine(text); + return this.insertMergedLines(position, this.$split(text)); + }; + Document.prototype.insertInLine = function (position, text) { + var start = this.clippedPos(position.row, position.column); + var end = this.pos(position.row, position.column + text.length); + this.applyDelta({ + start: start, + end: end, + action: "insert", + lines: [text] + }, true); + return this.clonePos(end); + }; + Document.prototype.clippedPos = function (row, column) { + var length = this.getLength(); + if (row === undefined) { + row = length; + } + else if (row < 0) { + row = 0; + } + else if (row >= length) { + row = length - 1; + column = undefined; + } + var line = this.getLine(row); + if (column == undefined) + column = line.length; + column = Math.min(Math.max(column, 0), line.length); + return { row: row, column: column }; + }; + Document.prototype.clonePos = function (pos) { + return { row: pos.row, column: pos.column }; + }; + Document.prototype.pos = function (row, column) { + return { row: row, column: column }; + }; + Document.prototype.$clipPosition = function (position) { + var length = this.getLength(); + if (position.row >= length) { + position.row = Math.max(0, length - 1); + position.column = this.getLine(length - 1).length; + } + else { + position.row = Math.max(0, position.row); + position.column = Math.min(Math.max(position.column, 0), this.getLine(position.row).length); + } + return position; + }; + Document.prototype.insertFullLines = function (row, lines) { + row = Math.min(Math.max(row, 0), this.getLength()); + var column = 0; + if (row < this.getLength()) { + lines = lines.concat([""]); + column = 0; + } + else { + lines = [""].concat(lines); + row--; + column = this.$lines[row].length; + } + this.insertMergedLines({ row: row, column: column }, lines); + }; + Document.prototype.insertMergedLines = function (position, lines) { + var start = this.clippedPos(position.row, position.column); + var end = { + row: start.row + lines.length - 1, + column: (lines.length == 1 ? start.column : 0) + lines[lines.length - 1].length + }; + this.applyDelta({ + start: start, + end: end, + action: "insert", + lines: lines + }); + return this.clonePos(end); + }; + Document.prototype.remove = function (range) { + var start = this.clippedPos(range.start.row, range.start.column); + var end = this.clippedPos(range.end.row, range.end.column); + this.applyDelta({ + start: start, + end: end, + action: "remove", + lines: this.getLinesForRange({ start: start, end: end }) + }); + return this.clonePos(start); + }; + Document.prototype.removeInLine = function (row, startColumn, endColumn) { + var start = this.clippedPos(row, startColumn); + var end = this.clippedPos(row, endColumn); + this.applyDelta({ + start: start, + end: end, + action: "remove", + lines: this.getLinesForRange({ start: start, end: end }) + }, true); + return this.clonePos(start); + }; + Document.prototype.removeFullLines = function (firstRow, lastRow) { + firstRow = Math.min(Math.max(0, firstRow), this.getLength() - 1); + lastRow = Math.min(Math.max(0, lastRow), this.getLength() - 1); + var deleteFirstNewLine = lastRow == this.getLength() - 1 && firstRow > 0; + var deleteLastNewLine = lastRow < this.getLength() - 1; + var startRow = (deleteFirstNewLine ? firstRow - 1 : firstRow); + var startCol = (deleteFirstNewLine ? this.getLine(startRow).length : 0); + var endRow = (deleteLastNewLine ? lastRow + 1 : lastRow); + var endCol = (deleteLastNewLine ? 0 : this.getLine(endRow).length); + var range = new Range(startRow, startCol, endRow, endCol); + var deletedLines = this.$lines.slice(firstRow, lastRow + 1); + this.applyDelta({ + start: range.start, + end: range.end, + action: "remove", + lines: this.getLinesForRange(range) + }); + return deletedLines; + }; + Document.prototype.removeNewLine = function (row) { + if (row < this.getLength() - 1 && row >= 0) { + this.applyDelta({ + start: this.pos(row, this.getLine(row).length), + end: this.pos(row + 1, 0), + action: "remove", + lines: ["", ""] + }); + } + }; + Document.prototype.replace = function (range, text) { + if (!(range instanceof Range)) + range = Range.fromPoints(range.start, range.end); + if (text.length === 0 && range.isEmpty()) + return range.start; + if (text == this.getTextRange(range)) + return range.end; + this.remove(range); + var end; + if (text) { + end = this.insert(range.start, text); + } + else { + end = range.start; + } + return end; + }; + Document.prototype.applyDeltas = function (deltas) { + for (var i = 0; i < deltas.length; i++) { + this.applyDelta(deltas[i]); + } + }; + Document.prototype.revertDeltas = function (deltas) { + for (var i = deltas.length - 1; i >= 0; i--) { + this.revertDelta(deltas[i]); + } + }; + Document.prototype.applyDelta = function (delta, doNotValidate) { + var isInsert = delta.action == "insert"; + if (isInsert ? delta.lines.length <= 1 && !delta.lines[0] + : !Range.comparePoints(delta.start, delta.end)) { + return; + } + if (isInsert && delta.lines.length > 20000) { + this.$splitAndapplyLargeDelta(delta, 20000); + } + else { + applyDelta(this.$lines, delta, doNotValidate); + this._signal("change", delta); + } + }; + Document.prototype.$safeApplyDelta = function (delta) { + var docLength = this.$lines.length; + if (delta.action == "remove" && delta.start.row < docLength && delta.end.row < docLength + || delta.action == "insert" && delta.start.row <= docLength) { + this.applyDelta(delta); + } + }; + Document.prototype.$splitAndapplyLargeDelta = function (delta, MAX) { + var lines = delta.lines; + var l = lines.length - MAX + 1; + var row = delta.start.row; + var column = delta.start.column; + for (var from = 0, to = 0; from < l; from = to) { + to += MAX - 1; + var chunk = lines.slice(from, to); + chunk.push(""); + this.applyDelta({ + start: this.pos(row + from, column), + end: this.pos(row + to, column = 0), + action: delta.action, + lines: chunk + }, true); + } + delta.lines = lines.slice(from); + delta.start.row = row + from; + delta.start.column = column; + this.applyDelta(delta, true); + }; + Document.prototype.revertDelta = function (delta) { + this.$safeApplyDelta({ + start: this.clonePos(delta.start), + end: this.clonePos(delta.end), + action: (delta.action == "insert" ? "remove" : "insert"), + lines: delta.lines.slice() + }); + }; + Document.prototype.indexToPosition = function (index, startRow) { + var lines = this.$lines || this.getAllLines(); + var newlineLength = this.getNewLineCharacter().length; + for (var i = startRow || 0, l = lines.length; i < l; i++) { + index -= lines[i].length + newlineLength; + if (index < 0) + return { row: i, column: index + lines[i].length + newlineLength }; + } + return { row: l - 1, column: index + lines[l - 1].length + newlineLength }; + }; + Document.prototype.positionToIndex = function (pos, startRow) { + var lines = this.$lines || this.getAllLines(); + var newlineLength = this.getNewLineCharacter().length; + var index = 0; + var row = Math.min(pos.row, lines.length); + for (var i = startRow || 0; i < row; ++i) + index += lines[i].length + newlineLength; + return index + pos.column; + }; + Document.prototype.$split = function (text) { + return text.split(/\r\n|\r|\n/); + }; + return Document; +}()); +Document.prototype.$autoNewLine = ""; +Document.prototype.$newLineMode = "auto"; +oop.implement(Document.prototype, EventEmitter); +exports.Document = Document; + +}); + +ace.define("ace/lib/deep_copy",[], function(require, exports, module){exports.deepCopy = function deepCopy(obj) { + if (typeof obj !== "object" || !obj) + return obj; + var copy; + if (Array.isArray(obj)) { + copy = []; + for (var key = 0; key < obj.length; key++) { + copy[key] = deepCopy(obj[key]); + } + return copy; + } + if (Object.prototype.toString.call(obj) !== "[object Object]") + return obj; + copy = {}; + for (var key in obj) + copy[key] = deepCopy(obj[key]); + return copy; +}; + +}); + +ace.define("ace/lib/lang",[], function(require, exports, module){"use strict"; +exports.last = function (a) { + return a[a.length - 1]; +}; +exports.stringReverse = function (string) { + return string.split("").reverse().join(""); +}; +exports.stringRepeat = function (string, count) { + var result = ''; + while (count > 0) { + if (count & 1) + result += string; + if (count >>= 1) + string += string; + } + return result; +}; +var trimBeginRegexp = /^\s\s*/; +var trimEndRegexp = /\s\s*$/; +exports.stringTrimLeft = function (string) { + return string.replace(trimBeginRegexp, ''); +}; +exports.stringTrimRight = function (string) { + return string.replace(trimEndRegexp, ''); +}; +exports.copyObject = function (obj) { + var copy = {}; + for (var key in obj) { + copy[key] = obj[key]; + } + return copy; +}; +exports.copyArray = function (array) { + var copy = []; + for (var i = 0, l = array.length; i < l; i++) { + if (array[i] && typeof array[i] == "object") + copy[i] = this.copyObject(array[i]); + else + copy[i] = array[i]; + } + return copy; +}; +exports.deepCopy = require("./deep_copy").deepCopy; +exports.arrayToMap = function (arr) { + var map = {}; + for (var i = 0; i < arr.length; i++) { + map[arr[i]] = 1; + } + return map; +}; +exports.createMap = function (props) { + var map = Object.create(null); + for (var i in props) { + map[i] = props[i]; + } + return map; +}; +exports.arrayRemove = function (array, value) { + for (var i = 0; i <= array.length; i++) { + if (value === array[i]) { + array.splice(i, 1); + } + } +}; +exports.escapeRegExp = function (str) { + return str.replace(/([.*+?^${}()|[\]\/\\])/g, '\\$1'); +}; +exports.escapeHTML = function (str) { + return ("" + str).replace(/&/g, "&").replace(/"/g, """).replace(/'/g, "'").replace(/ 0xffff ? 2 : 1; +}; + +}); + +ace.define("ace/worker/mirror",[], function(require, exports, module) { +"use strict"; + +var Document = require("../document").Document; +var lang = require("../lib/lang"); + +var Mirror = exports.Mirror = function(sender) { + this.sender = sender; + var doc = this.doc = new Document(""); + + var deferredUpdate = this.deferredUpdate = lang.delayedCall(this.onUpdate.bind(this)); + + var _self = this; + sender.on("change", function(e) { + var data = e.data; + if (data[0].start) { + doc.applyDeltas(data); + } else { + for (var i = 0; i < data.length; i += 2) { + var d, err; + if (Array.isArray(data[i+1])) { + d = {action: "insert", start: data[i], lines: data[i+1]}; + } else { + d = {action: "remove", start: data[i], end: data[i+1]}; + } + + if ((d.action == "insert" ? d.start : d.end).row >= doc.$lines.length) { + err = new Error("Invalid delta"); + err.data = { + path: _self.$path, + linesLength: doc.$lines.length, + start: d.start, + end: d.end + }; + throw err; + } + + doc.applyDelta(d, true); + } + } + if (_self.$timeout) + return deferredUpdate.schedule(_self.$timeout); + _self.onUpdate(); + }); +}; + +(function() { + + this.$timeout = 500; + + this.setTimeout = function(timeout) { + this.$timeout = timeout; + }; + + this.setValue = function(value) { + this.doc.setValue(value); + this.deferredUpdate.schedule(this.$timeout); + }; + + this.getValue = function(callbackId) { + this.sender.callback(this.doc.getValue(), callbackId); + }; + + this.onUpdate = function() { + }; + + this.isPending = function() { + return this.deferredUpdate.isPending(); + }; + +}).call(Mirror.prototype); + +}); + +ace.define("ace/mode/json/json_parse",[], function(require, exports, module) { +"use strict"; + + var at, // The index of the current character + ch, // The current character + escapee = { + '"': '"', + '\\': '\\', + '/': '/', + b: '\b', + f: '\f', + n: '\n', + r: '\r', + t: '\t' + }, + text, + + error = function (m) { + + throw { + name: 'SyntaxError', + message: m, + at: at, + text: text + }; + }, + + next = function (c) { + + if (c && c !== ch) { + error("Expected '" + c + "' instead of '" + ch + "'"); + } + + ch = text.charAt(at); + at += 1; + return ch; + }, + + number = function () { + + var number, + string = ''; + + if (ch === '-') { + string = '-'; + next('-'); + } + while (ch >= '0' && ch <= '9') { + string += ch; + next(); + } + if (ch === '.') { + string += '.'; + while (next() && ch >= '0' && ch <= '9') { + string += ch; + } + } + if (ch === 'e' || ch === 'E') { + string += ch; + next(); + if (ch === '-' || ch === '+') { + string += ch; + next(); + } + while (ch >= '0' && ch <= '9') { + string += ch; + next(); + } + } + number = +string; + if (isNaN(number)) { + error("Bad number"); + } else { + return number; + } + }, + + string = function () { + + var hex, + i, + string = '', + uffff; + + if (ch === '"') { + while (next()) { + if (ch === '"') { + next(); + return string; + } else if (ch === '\\') { + next(); + if (ch === 'u') { + uffff = 0; + for (i = 0; i < 4; i += 1) { + hex = parseInt(next(), 16); + if (!isFinite(hex)) { + break; + } + uffff = uffff * 16 + hex; + } + string += String.fromCharCode(uffff); + } else if (typeof escapee[ch] === 'string') { + string += escapee[ch]; + } else { + break; + } + } else if (ch == "\n" || ch == "\r") { + break; + } else { + string += ch; + } + } + } + error("Bad string"); + }, + + white = function () { + + while (ch && ch <= ' ') { + next(); + } + }, + + word = function () { + + switch (ch) { + case 't': + next('t'); + next('r'); + next('u'); + next('e'); + return true; + case 'f': + next('f'); + next('a'); + next('l'); + next('s'); + next('e'); + return false; + case 'n': + next('n'); + next('u'); + next('l'); + next('l'); + return null; + } + error("Unexpected '" + ch + "'"); + }, + + value, // Place holder for the value function. + + array = function () { + + var array = []; + + if (ch === '[') { + next('['); + white(); + if (ch === ']') { + next(']'); + return array; // empty array + } + while (ch) { + array.push(value()); + white(); + if (ch === ']') { + next(']'); + return array; + } + next(','); + white(); + } + } + error("Bad array"); + }, + + object = function () { + + var key, + object = {}; + + if (ch === '{') { + next('{'); + white(); + if (ch === '}') { + next('}'); + return object; // empty object + } + while (ch) { + key = string(); + white(); + next(':'); + if (Object.hasOwnProperty.call(object, key)) { + error('Duplicate key "' + key + '"'); + } + object[key] = value(); + white(); + if (ch === '}') { + next('}'); + return object; + } + next(','); + white(); + } + } + error("Bad object"); + }; + + value = function () { + + white(); + switch (ch) { + case '{': + return object(); + case '[': + return array(); + case '"': + return string(); + case '-': + return number(); + default: + return ch >= '0' && ch <= '9' ? number() : word(); + } + }; + + return function (source, reviver) { + var result; + + text = source; + at = 0; + ch = ' '; + result = value(); + white(); + if (ch) { + error("Syntax error"); + } + + return typeof reviver === 'function' ? function walk(holder, key) { + var k, v, value = holder[key]; + if (value && typeof value === 'object') { + for (k in value) { + if (Object.hasOwnProperty.call(value, k)) { + v = walk(value, k); + if (v !== undefined) { + value[k] = v; + } else { + delete value[k]; + } + } + } + } + return reviver.call(holder, key, value); + }({'': result}, '') : result; + }; +}); + +ace.define("ace/mode/json_worker",[], function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var Mirror = require("../worker/mirror").Mirror; +var parse = require("./json/json_parse"); + +var JsonWorker = exports.JsonWorker = function(sender) { + Mirror.call(this, sender); + this.setTimeout(200); +}; + +oop.inherits(JsonWorker, Mirror); + +(function() { + + this.onUpdate = function() { + var value = this.doc.getValue(); + var errors = []; + try { + if (value) + parse(value); + } catch (e) { + var pos = this.doc.indexToPosition(e.at-1); + errors.push({ + row: pos.row, + column: pos.column, + text: e.message, + type: "error" + }); + } + this.sender.emit("annotate", errors); + }; + +}).call(JsonWorker.prototype); + +}); diff --git a/lib/9c4ab5d453e67f8e3a66.js b/lib/9c4ab5d453e67f8e3a66.js deleted file mode 100644 index bd5482ee..00000000 --- a/lib/9c4ab5d453e67f8e3a66.js +++ /dev/null @@ -1,11 +0,0 @@ -"no use strict";(()=>{var D=(u,h)=>()=>(h||u((h={exports:{}}).exports,h),h.exports);var E=D(M=>{(function(u){if(typeof u.window!="undefined"&&u.document||u.require&&u.define)return;u.console||(u.console=function(){var a=Array.prototype.slice.call(arguments,0);postMessage({type:"log",data:a})},u.console.error=u.console.warn=u.console.log=u.console.trace=u.console),u.window=u,u.ace=u,u.onerror=function(a,r,t,e,i){postMessage({type:"error",data:{message:a,data:i&&i.data,file:r,line:t,col:e,stack:i&&i.stack}})},u.normalizeModule=function(a,r){if(r.indexOf("!")!==-1){var t=r.split("!");return u.normalizeModule(a,t[0])+"!"+u.normalizeModule(a,t[1])}if(r.charAt(0)=="."){var e=a.split("/").slice(0,-1).join("/");for(r=(e?e+"/":"")+r;r.indexOf(".")!==-1&&i!=r;){var i=r;r=r.replace(/^\.\//,"").replace(/\/\.\//,"/").replace(/[^\/]+\/\.\.\//,"")}}return r},u.require=function(r,t){if(t||(t=r,r=null),!t.charAt)throw new Error("worker.js require() accepts only (parentId, id) as arguments");t=u.normalizeModule(r,t);var e=u.require.modules[t];if(e)return e.initialized||(e.initialized=!0,e.exports=e.factory().exports),e.exports;if(!u.require.tlns)return console.log("unable to load "+t);var i=h(t,u.require.tlns);return i.slice(-3)!=".js"&&(i+=".js"),u.require.id=t,u.require.modules[t]={},importScripts(i),u.require(r,t)};function h(a,r){for(var t=a,e="";t;){var i=r[t];if(typeof i=="string")return i+e;if(i)return i.location.replace(/\/*$/,"/")+(e||i.main||i.name);if(i===!1)return"";var o=t.lastIndexOf("/");if(o===-1)break;e=t.substr(o)+e,t=t.slice(0,o)}return a}u.require.modules={},u.require.tlns={},u.define=function(a,r,t){if(arguments.length==2?(t=r,typeof a!="string"&&(r=a,a=u.require.id)):arguments.length==1&&(t=a,r=[],a=u.require.id),typeof t!="function"){u.require.modules[a]={exports:t,initialized:!0};return}r.length||(r=["require","exports","module"]);var e=function(i){return u.require(a,i)};u.require.modules[a]={exports:{},factory:function(){var i=this,o=t.apply(this,r.slice(0,t.length).map(function(n){switch(n){case"require":return e;case"exports":return i.exports;case"module":return i;default:return e(n)}}));return o&&(i.exports=o),i}}},u.define.amd={},u.require.tlns={},u.initBaseUrls=function(r){for(var t in r)this.require.tlns[t]=r[t]},u.initSender=function(){var r=u.require("ace/lib/event_emitter").EventEmitter,t=u.require("ace/lib/oop"),e=function(){};return function(){t.implement(this,r),this.callback=function(i,o){postMessage({type:"call",id:o,data:i})},this.emit=function(i,o){postMessage({type:"event",name:i,data:o})}}.call(e.prototype),new e};var d=u.main=null,l=u.sender=null;u.onmessage=function(a){var r=a.data;if(r.event&&l)l._signal(r.event,r.data);else if(r.command)if(d[r.command])d[r.command].apply(d,r.args);else if(u[r.command])u[r.command].apply(u,r.args);else throw new Error("Unknown command:"+r.command);else if(r.init){u.initBaseUrls(r.tlns),l=u.sender=u.initSender();var t=this.require(r.module)[r.classname];d=u.main=new t(l)}}})(M);ace.define("ace/lib/oop",[],function(u,h,d){"use strict";h.inherits=function(l,a){l.super_=a,l.prototype=Object.create(a.prototype,{constructor:{value:l,enumerable:!1,writable:!0,configurable:!0}})},h.mixin=function(l,a){for(var r in a)l[r]=a[r];return l},h.implement=function(l,a){h.mixin(l,a)}});ace.define("ace/apply_delta",[],function(u,h,d){"use strict";function l(t,e){throw console.log("Invalid Delta:",t),"Invalid Delta: "+e}function a(t,e){return e.row>=0&&e.row=0&&e.column<=t[e.row].length}function r(t,e){e.action!="insert"&&e.action!="remove"&&l(e,"delta.action must be 'insert' or 'remove'"),e.lines instanceof Array||l(e,"delta.lines must be an Array"),(!e.start||!e.end)&&l(e,"delta.start/end must be an present");var i=e.start;a(t,e.start)||l(e,"delta.start must be contained in document");var o=e.end;e.action=="remove"&&!a(t,o)&&l(e,"delta.end must contained in document for 'remove' actions");var n=o.row-i.row,s=o.column-(n==0?i.column:0);(n!=e.lines.length-1||e.lines[n].length!=s)&&l(e,"delta.range must match delta lines")}h.applyDelta=function(t,e,i){var o=e.start.row,n=e.start.column,s=t[o]||"";switch(e.action){case"insert":var c=e.lines;if(c.length===1)t[o]=s.substring(0,n)+e.lines[0]+s.substring(n);else{var f=[o,1].concat(e.lines);t.splice.apply(t,f),t[o]=s.substring(0,n)+t[o],t[o+e.lines.length-1]+=s.substring(n)}break;case"remove":var m=e.end.column,v=e.end.row;o===v?t[o]=s.substring(0,n)+s.substring(m):t.splice(o,v-o+1,s.substring(0,n)+t[v].substring(m));break}}});ace.define("ace/lib/event_emitter",[],function(u,h,d){"use strict";var l={},a=function(){this.propagationStopped=!0},r=function(){this.defaultPrevented=!0};l._emit=l._dispatchEvent=function(t,e){this._eventRegistry||(this._eventRegistry={}),this._defaultHandlers||(this._defaultHandlers={});var i=this._eventRegistry[t]||[],o=this._defaultHandlers[t];if(!(!i.length&&!o)){(typeof e!="object"||!e)&&(e={}),e.type||(e.type=t),e.stopPropagation||(e.stopPropagation=a),e.preventDefault||(e.preventDefault=r),i=i.slice();for(var n=0;n ["+this.end.row+"/"+this.end.column+"]"},r.prototype.contains=function(t,e){return this.compare(t,e)==0},r.prototype.compareRange=function(t){var e,i=t.end,o=t.start;return e=this.compare(i.row,i.column),e==1?(e=this.compare(o.row,o.column),e==1?2:e==0?1:0):e==-1?-2:(e=this.compare(o.row,o.column),e==-1?-1:e==1?42:0)},r.prototype.comparePoint=function(t){return this.compare(t.row,t.column)},r.prototype.containsRange=function(t){return this.comparePoint(t.start)==0&&this.comparePoint(t.end)==0},r.prototype.intersects=function(t){var e=this.compareRange(t);return e==-1||e==0||e==1},r.prototype.isEnd=function(t,e){return this.end.row==t&&this.end.column==e},r.prototype.isStart=function(t,e){return this.start.row==t&&this.start.column==e},r.prototype.setStart=function(t,e){typeof t=="object"?(this.start.column=t.column,this.start.row=t.row):(this.start.row=t,this.start.column=e)},r.prototype.setEnd=function(t,e){typeof t=="object"?(this.end.column=t.column,this.end.row=t.row):(this.end.row=t,this.end.column=e)},r.prototype.inside=function(t,e){return this.compare(t,e)==0?!(this.isEnd(t,e)||this.isStart(t,e)):!1},r.prototype.insideStart=function(t,e){return this.compare(t,e)==0?!this.isEnd(t,e):!1},r.prototype.insideEnd=function(t,e){return this.compare(t,e)==0?!this.isStart(t,e):!1},r.prototype.compare=function(t,e){return!this.isMultiLine()&&t===this.start.row?ethis.end.column?1:0:tthis.end.row?1:this.start.row===t?e>=this.start.column?0:-1:this.end.row===t?e<=this.end.column?0:1:0},r.prototype.compareStart=function(t,e){return this.start.row==t&&this.start.column==e?-1:this.compare(t,e)},r.prototype.compareEnd=function(t,e){return this.end.row==t&&this.end.column==e?1:this.compare(t,e)},r.prototype.compareInside=function(t,e){return this.end.row==t&&this.end.column==e?1:this.start.row==t&&this.start.column==e?-1:this.compare(t,e)},r.prototype.clipRows=function(t,e){if(this.end.row>e)var i={row:e+1,column:0};else if(this.end.rowe)var o={row:e+1,column:0};else if(this.start.rowthis.row)){var n=e(o,{row:this.row,column:this.column},this.$insertRight);this.setPosition(n.row,n.column,!0)}},i.prototype.setPosition=function(o,n,s){var c;if(s?c={row:o,column:n}:c=this.$clipPositionToDocument(o,n),!(this.row==c.row&&this.column==c.column)){var f={row:this.row,column:this.column};this.row=c.row,this.column=c.column,this._signal("change",{old:f,value:c})}},i.prototype.detach=function(){this.document.off("change",this.$onChange)},i.prototype.attach=function(o){this.document=o||this.document,this.document.on("change",this.$onChange)},i.prototype.$clipPositionToDocument=function(o,n){var s={};return o>=this.document.getLength()?(s.row=Math.max(0,this.document.getLength()-1),s.column=this.document.getLine(s.row).length):o<0?(s.row=0,s.column=0):(s.row=o,s.column=Math.min(this.document.getLine(s.row).length,Math.max(0,n))),n<0&&(s.column=0),s},i}();r.prototype.$insertRight=!1,l.implement(r.prototype,a);function t(i,o,n){var s=n?i.column<=o.column:i.column=c&&(n=c-1,s=void 0);var f=this.getLine(n);return s==null&&(s=f.length),s=Math.min(Math.max(s,0),f.length),{row:n,column:s}},o.prototype.clonePos=function(n){return{row:n.row,column:n.column}},o.prototype.pos=function(n,s){return{row:n,column:s}},o.prototype.$clipPosition=function(n){var s=this.getLength();return n.row>=s?(n.row=Math.max(0,s-1),n.column=this.getLine(s-1).length):(n.row=Math.max(0,n.row),n.column=Math.min(Math.max(n.column,0),this.getLine(n.row).length)),n},o.prototype.insertFullLines=function(n,s){n=Math.min(Math.max(n,0),this.getLength());var c=0;n0,f=s=0&&this.applyDelta({start:this.pos(n,this.getLine(n).length),end:this.pos(n+1,0),action:"remove",lines:["",""]})},o.prototype.replace=function(n,s){if(n instanceof t||(n=t.fromPoints(n.start,n.end)),s.length===0&&n.isEmpty())return n.start;if(s==this.getTextRange(n))return n.end;this.remove(n);var c;return s?c=this.insert(n.start,s):c=n.start,c},o.prototype.applyDeltas=function(n){for(var s=0;s=0;s--)this.revertDelta(n[s])},o.prototype.applyDelta=function(n,s){var c=n.action=="insert";(c?n.lines.length<=1&&!n.lines[0]:!t.comparePoints(n.start,n.end))||(c&&n.lines.length>2e4?this.$splitAndapplyLargeDelta(n,2e4):(a(this.$lines,n,s),this._signal("change",n)))},o.prototype.$safeApplyDelta=function(n){var s=this.$lines.length;(n.action=="remove"&&n.start.row0;)t&1&&(e+=r),(t>>=1)&&(r+=r);return e};var l=/^\s\s*/,a=/\s\s*$/;h.stringTrimLeft=function(r){return r.replace(l,"")},h.stringTrimRight=function(r){return r.replace(a,"")},h.copyObject=function(r){var t={};for(var e in r)t[e]=r[e];return t},h.copyArray=function(r){for(var t=[],e=0,i=r.length;e=e.$lines.length)throw m=new Error("Invalid delta"),m.data={path:o.$path,linesLength:e.$lines.length,start:f.start,end:f.end},m;e.applyDelta(f,!0)}if(o.$timeout)return i.schedule(o.$timeout);o.onUpdate()})};(function(){this.$timeout=500,this.setTimeout=function(t){this.$timeout=t},this.setValue=function(t){this.doc.setValue(t),this.deferredUpdate.schedule(this.$timeout)},this.getValue=function(t){this.sender.callback(this.doc.getValue(),t)},this.onUpdate=function(){},this.isPending=function(){return this.deferredUpdate.isPending()}}).call(r.prototype)});ace.define("ace/mode/json/json_parse",[],function(u,h,d){"use strict";var l,a,r={'"':'"',"\\":"\\","/":"/",b:"\b",f:"\f",n:` -`,r:"\r",t:" "},t,e=function(p){throw{name:"SyntaxError",message:p,at:l,text:t}},i=function(p){return p&&p!==a&&e("Expected '"+p+"' instead of '"+a+"'"),a=t.charAt(l),l+=1,a},o=function(){var p,g="";for(a==="-"&&(g="-",i("-"));a>="0"&&a<="9";)g+=a,i();if(a===".")for(g+=".";i()&&a>="0"&&a<="9";)g+=a;if(a==="e"||a==="E")for(g+=a,i(),(a==="-"||a==="+")&&(g+=a,i());a>="0"&&a<="9";)g+=a,i();if(p=+g,isNaN(p))e("Bad number");else return p},n=function(){var p,g,y="",L;if(a==='"')for(;i();){if(a==='"')return i(),y;if(a==="\\")if(i(),a==="u"){for(L=0,g=0;g<4&&(p=parseInt(i(),16),!!isFinite(p));g+=1)L=L*16+p;y+=String.fromCharCode(L)}else if(typeof r[a]=="string")y+=r[a];else break;else{if(a==` -`||a=="\r")break;y+=a}}e("Bad string")},s=function(){for(;a&&a<=" ";)i()},c=function(){switch(a){case"t":return i("t"),i("r"),i("u"),i("e"),!0;case"f":return i("f"),i("a"),i("l"),i("s"),i("e"),!1;case"n":return i("n"),i("u"),i("l"),i("l"),null}e("Unexpected '"+a+"'")},f,m=function(){var p=[];if(a==="["){if(i("["),s(),a==="]")return i("]"),p;for(;a;){if(p.push(f()),s(),a==="]")return i("]"),p;i(","),s()}}e("Bad array")},v=function(){var p,g={};if(a==="{"){if(i("{"),s(),a==="}")return i("}"),g;for(;a;){if(p=n(),s(),i(":"),Object.hasOwnProperty.call(g,p)&&e('Duplicate key "'+p+'"'),g[p]=f(),s(),a==="}")return i("}"),g;i(","),s()}}e("Bad object")};return f=function(){switch(s(),a){case"{":return v();case"[":return m();case'"':return n();case"-":return o();default:return a>="0"&&a<="9"?o():c()}},function(p,g){var y;return t=p,l=0,a=" ",y=f(),s(),a&&e("Syntax error"),typeof g=="function"?function L(_,$){var P,b,w=_[$];if(w&&typeof w=="object")for(P in w)Object.hasOwnProperty.call(w,P)&&(b=L(w,P),b!==void 0?w[P]=b:delete w[P]);return g.call(_,$,w)}({"":y},""):y}});ace.define("ace/mode/json_worker",[],function(u,h,d){"use strict";var l=u("../lib/oop"),a=u("../worker/mirror").Mirror,r=u("./json/json_parse"),t=h.JsonWorker=function(e){a.call(this,e),this.setTimeout(200)};l.inherits(t,a),function(){this.onUpdate=function(){var e=this.doc.getValue(),i=[];try{e&&r(e)}catch(n){var o=this.doc.indexToPosition(n.at-1);i.push({row:o.row,column:o.column,text:n.message,type:"error"})}this.sender.emit("annotate",i)}}.call(t.prototype)})});E();})(); - -//# sourceMappingURL=9c4ab5d453e67f8e3a66.js.map \ No newline at end of file diff --git a/lib/9c4ab5d453e67f8e3a66.js.map b/lib/9c4ab5d453e67f8e3a66.js.map deleted file mode 100644 index 84cbdb3b..00000000 --- a/lib/9c4ab5d453e67f8e3a66.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack://@tyk-technologies/tyk-ui/9c4ab5d453e67f8e3a66.js"],"sourcesContent":["\"no use strict\";\n!(function(window) {\nif (typeof window.window != \"undefined\" && window.document)\n return;\nif (window.require && window.define)\n return;\n\nif (!window.console) {\n window.console = function() {\n var msgs = Array.prototype.slice.call(arguments, 0);\n postMessage({type: \"log\", data: msgs});\n };\n window.console.error =\n window.console.warn = \n window.console.log =\n window.console.trace = window.console;\n}\nwindow.window = window;\nwindow.ace = window;\n\nwindow.onerror = function(message, file, line, col, err) {\n postMessage({type: \"error\", data: {\n message: message,\n data: err && err.data,\n file: file,\n line: line, \n col: col,\n stack: err && err.stack\n }});\n};\n\nwindow.normalizeModule = function(parentId, moduleName) {\n // normalize plugin requires\n if (moduleName.indexOf(\"!\") !== -1) {\n var chunks = moduleName.split(\"!\");\n return window.normalizeModule(parentId, chunks[0]) + \"!\" + window.normalizeModule(parentId, chunks[1]);\n }\n // normalize relative requires\n if (moduleName.charAt(0) == \".\") {\n var base = parentId.split(\"/\").slice(0, -1).join(\"/\");\n moduleName = (base ? base + \"/\" : \"\") + moduleName;\n \n while (moduleName.indexOf(\".\") !== -1 && previous != moduleName) {\n var previous = moduleName;\n moduleName = moduleName.replace(/^\\.\\//, \"\").replace(/\\/\\.\\//, \"/\").replace(/[^\\/]+\\/\\.\\.\\//, \"\");\n }\n }\n \n return moduleName;\n};\n\nwindow.require = function require(parentId, id) {\n if (!id) {\n id = parentId;\n parentId = null;\n }\n if (!id.charAt)\n throw new Error(\"worker.js require() accepts only (parentId, id) as arguments\");\n\n id = window.normalizeModule(parentId, id);\n\n var module = window.require.modules[id];\n if (module) {\n if (!module.initialized) {\n module.initialized = true;\n module.exports = module.factory().exports;\n }\n return module.exports;\n }\n \n if (!window.require.tlns)\n return console.log(\"unable to load \" + id);\n \n var path = resolveModuleId(id, window.require.tlns);\n if (path.slice(-3) != \".js\") path += \".js\";\n \n window.require.id = id;\n window.require.modules[id] = {}; // prevent infinite loop on broken modules\n importScripts(path);\n return window.require(parentId, id);\n};\nfunction resolveModuleId(id, paths) {\n var testPath = id, tail = \"\";\n while (testPath) {\n var alias = paths[testPath];\n if (typeof alias == \"string\") {\n return alias + tail;\n } else if (alias) {\n return alias.location.replace(/\\/*$/, \"/\") + (tail || alias.main || alias.name);\n } else if (alias === false) {\n return \"\";\n }\n var i = testPath.lastIndexOf(\"/\");\n if (i === -1) break;\n tail = testPath.substr(i) + tail;\n testPath = testPath.slice(0, i);\n }\n return id;\n}\nwindow.require.modules = {};\nwindow.require.tlns = {};\n\nwindow.define = function(id, deps, factory) {\n if (arguments.length == 2) {\n factory = deps;\n if (typeof id != \"string\") {\n deps = id;\n id = window.require.id;\n }\n } else if (arguments.length == 1) {\n factory = id;\n deps = [];\n id = window.require.id;\n }\n \n if (typeof factory != \"function\") {\n window.require.modules[id] = {\n exports: factory,\n initialized: true\n };\n return;\n }\n\n if (!deps.length)\n // If there is no dependencies, we inject \"require\", \"exports\" and\n // \"module\" as dependencies, to provide CommonJS compatibility.\n deps = [\"require\", \"exports\", \"module\"];\n\n var req = function(childId) {\n return window.require(id, childId);\n };\n\n window.require.modules[id] = {\n exports: {},\n factory: function() {\n var module = this;\n var returnExports = factory.apply(this, deps.slice(0, factory.length).map(function(dep) {\n switch (dep) {\n // Because \"require\", \"exports\" and \"module\" aren't actual\n // dependencies, we must handle them seperately.\n case \"require\": return req;\n case \"exports\": return module.exports;\n case \"module\": return module;\n // But for all other dependencies, we can just go ahead and\n // require them.\n default: return req(dep);\n }\n }));\n if (returnExports)\n module.exports = returnExports;\n return module;\n }\n };\n};\nwindow.define.amd = {};\nwindow.require.tlns = {};\nwindow.initBaseUrls = function initBaseUrls(topLevelNamespaces) {\n for (var i in topLevelNamespaces)\n this.require.tlns[i] = topLevelNamespaces[i];\n};\n\nwindow.initSender = function initSender() {\n\n var EventEmitter = window.require(\"ace/lib/event_emitter\").EventEmitter;\n var oop = window.require(\"ace/lib/oop\");\n \n var Sender = function() {};\n \n (function() {\n \n oop.implement(this, EventEmitter);\n \n this.callback = function(data, callbackId) {\n postMessage({\n type: \"call\",\n id: callbackId,\n data: data\n });\n };\n \n this.emit = function(name, data) {\n postMessage({\n type: \"event\",\n name: name,\n data: data\n });\n };\n \n }).call(Sender.prototype);\n \n return new Sender();\n};\n\nvar main = window.main = null;\nvar sender = window.sender = null;\n\nwindow.onmessage = function(e) {\n var msg = e.data;\n if (msg.event && sender) {\n sender._signal(msg.event, msg.data);\n }\n else if (msg.command) {\n if (main[msg.command])\n main[msg.command].apply(main, msg.args);\n else if (window[msg.command])\n window[msg.command].apply(window, msg.args);\n else\n throw new Error(\"Unknown command:\" + msg.command);\n }\n else if (msg.init) {\n window.initBaseUrls(msg.tlns);\n sender = window.sender = window.initSender();\n var clazz = this.require(msg.module)[msg.classname];\n main = window.main = new clazz(sender);\n }\n};\n})(this);\n\nace.define(\"ace/lib/oop\",[], function(require, exports, module){\"use strict\";\nexports.inherits = function (ctor, superCtor) {\n ctor.super_ = superCtor;\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n};\nexports.mixin = function (obj, mixin) {\n for (var key in mixin) {\n obj[key] = mixin[key];\n }\n return obj;\n};\nexports.implement = function (proto, mixin) {\n exports.mixin(proto, mixin);\n};\n\n});\n\nace.define(\"ace/apply_delta\",[], function(require, exports, module){\"use strict\";\nfunction throwDeltaError(delta, errorText) {\n console.log(\"Invalid Delta:\", delta);\n throw \"Invalid Delta: \" + errorText;\n}\nfunction positionInDocument(docLines, position) {\n return position.row >= 0 && position.row < docLines.length &&\n position.column >= 0 && position.column <= docLines[position.row].length;\n}\nfunction validateDelta(docLines, delta) {\n if (delta.action != \"insert\" && delta.action != \"remove\")\n throwDeltaError(delta, \"delta.action must be 'insert' or 'remove'\");\n if (!(delta.lines instanceof Array))\n throwDeltaError(delta, \"delta.lines must be an Array\");\n if (!delta.start || !delta.end)\n throwDeltaError(delta, \"delta.start/end must be an present\");\n var start = delta.start;\n if (!positionInDocument(docLines, delta.start))\n throwDeltaError(delta, \"delta.start must be contained in document\");\n var end = delta.end;\n if (delta.action == \"remove\" && !positionInDocument(docLines, end))\n throwDeltaError(delta, \"delta.end must contained in document for 'remove' actions\");\n var numRangeRows = end.row - start.row;\n var numRangeLastLineChars = (end.column - (numRangeRows == 0 ? start.column : 0));\n if (numRangeRows != delta.lines.length - 1 || delta.lines[numRangeRows].length != numRangeLastLineChars)\n throwDeltaError(delta, \"delta.range must match delta lines\");\n}\nexports.applyDelta = function (docLines, delta, doNotValidate) {\n var row = delta.start.row;\n var startColumn = delta.start.column;\n var line = docLines[row] || \"\";\n switch (delta.action) {\n case \"insert\":\n var lines = delta.lines;\n if (lines.length === 1) {\n docLines[row] = line.substring(0, startColumn) + delta.lines[0] + line.substring(startColumn);\n }\n else {\n var args = [row, 1].concat(delta.lines);\n docLines.splice.apply(docLines, args);\n docLines[row] = line.substring(0, startColumn) + docLines[row];\n docLines[row + delta.lines.length - 1] += line.substring(startColumn);\n }\n break;\n case \"remove\":\n var endColumn = delta.end.column;\n var endRow = delta.end.row;\n if (row === endRow) {\n docLines[row] = line.substring(0, startColumn) + line.substring(endColumn);\n }\n else {\n docLines.splice(row, endRow - row + 1, line.substring(0, startColumn) + docLines[endRow].substring(endColumn));\n }\n break;\n }\n};\n\n});\n\nace.define(\"ace/lib/event_emitter\",[], function(require, exports, module){\"use strict\";\nvar EventEmitter = {};\nvar stopPropagation = function () { this.propagationStopped = true; };\nvar preventDefault = function () { this.defaultPrevented = true; };\nEventEmitter._emit =\n EventEmitter._dispatchEvent = function (eventName, e) {\n this._eventRegistry || (this._eventRegistry = {});\n this._defaultHandlers || (this._defaultHandlers = {});\n var listeners = this._eventRegistry[eventName] || [];\n var defaultHandler = this._defaultHandlers[eventName];\n if (!listeners.length && !defaultHandler)\n return;\n if (typeof e != \"object\" || !e)\n e = {};\n if (!e.type)\n e.type = eventName;\n if (!e.stopPropagation)\n e.stopPropagation = stopPropagation;\n if (!e.preventDefault)\n e.preventDefault = preventDefault;\n listeners = listeners.slice();\n for (var i = 0; i < listeners.length; i++) {\n listeners[i](e, this);\n if (e.propagationStopped)\n break;\n }\n if (defaultHandler && !e.defaultPrevented)\n return defaultHandler(e, this);\n };\nEventEmitter._signal = function (eventName, e) {\n var listeners = (this._eventRegistry || {})[eventName];\n if (!listeners)\n return;\n listeners = listeners.slice();\n for (var i = 0; i < listeners.length; i++)\n listeners[i](e, this);\n};\nEventEmitter.once = function (eventName, callback) {\n var _self = this;\n this.on(eventName, function newCallback() {\n _self.off(eventName, newCallback);\n callback.apply(null, arguments);\n });\n if (!callback) {\n return new Promise(function (resolve) {\n callback = resolve;\n });\n }\n};\nEventEmitter.setDefaultHandler = function (eventName, callback) {\n var handlers = this._defaultHandlers;\n if (!handlers)\n handlers = this._defaultHandlers = { _disabled_: {} };\n if (handlers[eventName]) {\n var old = handlers[eventName];\n var disabled = handlers._disabled_[eventName];\n if (!disabled)\n handlers._disabled_[eventName] = disabled = [];\n disabled.push(old);\n var i = disabled.indexOf(callback);\n if (i != -1)\n disabled.splice(i, 1);\n }\n handlers[eventName] = callback;\n};\nEventEmitter.removeDefaultHandler = function (eventName, callback) {\n var handlers = this._defaultHandlers;\n if (!handlers)\n return;\n var disabled = handlers._disabled_[eventName];\n if (handlers[eventName] == callback) {\n if (disabled)\n this.setDefaultHandler(eventName, disabled.pop());\n }\n else if (disabled) {\n var i = disabled.indexOf(callback);\n if (i != -1)\n disabled.splice(i, 1);\n }\n};\nEventEmitter.on =\n EventEmitter.addEventListener = function (eventName, callback, capturing) {\n this._eventRegistry = this._eventRegistry || {};\n var listeners = this._eventRegistry[eventName];\n if (!listeners)\n listeners = this._eventRegistry[eventName] = [];\n if (listeners.indexOf(callback) == -1)\n listeners[capturing ? \"unshift\" : \"push\"](callback);\n return callback;\n };\nEventEmitter.off =\n EventEmitter.removeListener =\n EventEmitter.removeEventListener = function (eventName, callback) {\n this._eventRegistry = this._eventRegistry || {};\n var listeners = this._eventRegistry[eventName];\n if (!listeners)\n return;\n var index = listeners.indexOf(callback);\n if (index !== -1)\n listeners.splice(index, 1);\n };\nEventEmitter.removeAllListeners = function (eventName) {\n if (!eventName)\n this._eventRegistry = this._defaultHandlers = undefined;\n if (this._eventRegistry)\n this._eventRegistry[eventName] = undefined;\n if (this._defaultHandlers)\n this._defaultHandlers[eventName] = undefined;\n};\nexports.EventEmitter = EventEmitter;\n\n});\n\nace.define(\"ace/range\",[], function(require, exports, module){\"use strict\";\nvar comparePoints = function (p1, p2) {\n return p1.row - p2.row || p1.column - p2.column;\n};\nvar Range = /** @class */ (function () {\n function Range(startRow, startColumn, endRow, endColumn) {\n this.start = {\n row: startRow,\n column: startColumn\n };\n this.end = {\n row: endRow,\n column: endColumn\n };\n }\n Range.prototype.isEqual = function (range) {\n return this.start.row === range.start.row &&\n this.end.row === range.end.row &&\n this.start.column === range.start.column &&\n this.end.column === range.end.column;\n };\n Range.prototype.toString = function () {\n return (\"Range: [\" + this.start.row + \"/\" + this.start.column +\n \"] -> [\" + this.end.row + \"/\" + this.end.column + \"]\");\n };\n Range.prototype.contains = function (row, column) {\n return this.compare(row, column) == 0;\n };\n Range.prototype.compareRange = function (range) {\n var cmp, end = range.end, start = range.start;\n cmp = this.compare(end.row, end.column);\n if (cmp == 1) {\n cmp = this.compare(start.row, start.column);\n if (cmp == 1) {\n return 2;\n }\n else if (cmp == 0) {\n return 1;\n }\n else {\n return 0;\n }\n }\n else if (cmp == -1) {\n return -2;\n }\n else {\n cmp = this.compare(start.row, start.column);\n if (cmp == -1) {\n return -1;\n }\n else if (cmp == 1) {\n return 42;\n }\n else {\n return 0;\n }\n }\n };\n Range.prototype.comparePoint = function (p) {\n return this.compare(p.row, p.column);\n };\n Range.prototype.containsRange = function (range) {\n return this.comparePoint(range.start) == 0 && this.comparePoint(range.end) == 0;\n };\n Range.prototype.intersects = function (range) {\n var cmp = this.compareRange(range);\n return (cmp == -1 || cmp == 0 || cmp == 1);\n };\n Range.prototype.isEnd = function (row, column) {\n return this.end.row == row && this.end.column == column;\n };\n Range.prototype.isStart = function (row, column) {\n return this.start.row == row && this.start.column == column;\n };\n Range.prototype.setStart = function (row, column) {\n if (typeof row == \"object\") {\n this.start.column = row.column;\n this.start.row = row.row;\n }\n else {\n this.start.row = row;\n this.start.column = column;\n }\n };\n Range.prototype.setEnd = function (row, column) {\n if (typeof row == \"object\") {\n this.end.column = row.column;\n this.end.row = row.row;\n }\n else {\n this.end.row = row;\n this.end.column = column;\n }\n };\n Range.prototype.inside = function (row, column) {\n if (this.compare(row, column) == 0) {\n if (this.isEnd(row, column) || this.isStart(row, column)) {\n return false;\n }\n else {\n return true;\n }\n }\n return false;\n };\n Range.prototype.insideStart = function (row, column) {\n if (this.compare(row, column) == 0) {\n if (this.isEnd(row, column)) {\n return false;\n }\n else {\n return true;\n }\n }\n return false;\n };\n Range.prototype.insideEnd = function (row, column) {\n if (this.compare(row, column) == 0) {\n if (this.isStart(row, column)) {\n return false;\n }\n else {\n return true;\n }\n }\n return false;\n };\n Range.prototype.compare = function (row, column) {\n if (!this.isMultiLine()) {\n if (row === this.start.row) {\n return column < this.start.column ? -1 : (column > this.end.column ? 1 : 0);\n }\n }\n if (row < this.start.row)\n return -1;\n if (row > this.end.row)\n return 1;\n if (this.start.row === row)\n return column >= this.start.column ? 0 : -1;\n if (this.end.row === row)\n return column <= this.end.column ? 0 : 1;\n return 0;\n };\n Range.prototype.compareStart = function (row, column) {\n if (this.start.row == row && this.start.column == column) {\n return -1;\n }\n else {\n return this.compare(row, column);\n }\n };\n Range.prototype.compareEnd = function (row, column) {\n if (this.end.row == row && this.end.column == column) {\n return 1;\n }\n else {\n return this.compare(row, column);\n }\n };\n Range.prototype.compareInside = function (row, column) {\n if (this.end.row == row && this.end.column == column) {\n return 1;\n }\n else if (this.start.row == row && this.start.column == column) {\n return -1;\n }\n else {\n return this.compare(row, column);\n }\n };\n Range.prototype.clipRows = function (firstRow, lastRow) {\n if (this.end.row > lastRow)\n var end = { row: lastRow + 1, column: 0 };\n else if (this.end.row < firstRow)\n var end = { row: firstRow, column: 0 };\n if (this.start.row > lastRow)\n var start = { row: lastRow + 1, column: 0 };\n else if (this.start.row < firstRow)\n var start = { row: firstRow, column: 0 };\n return Range.fromPoints(start || this.start, end || this.end);\n };\n Range.prototype.extend = function (row, column) {\n var cmp = this.compare(row, column);\n if (cmp == 0)\n return this;\n else if (cmp == -1)\n var start = { row: row, column: column };\n else\n var end = { row: row, column: column };\n return Range.fromPoints(start || this.start, end || this.end);\n };\n Range.prototype.isEmpty = function () {\n return (this.start.row === this.end.row && this.start.column === this.end.column);\n };\n Range.prototype.isMultiLine = function () {\n return (this.start.row !== this.end.row);\n };\n Range.prototype.clone = function () {\n return Range.fromPoints(this.start, this.end);\n };\n Range.prototype.collapseRows = function () {\n if (this.end.column == 0)\n return new Range(this.start.row, 0, Math.max(this.start.row, this.end.row - 1), 0);\n else\n return new Range(this.start.row, 0, this.end.row, 0);\n };\n Range.prototype.toScreenRange = function (session) {\n var screenPosStart = session.documentToScreenPosition(this.start);\n var screenPosEnd = session.documentToScreenPosition(this.end);\n return new Range(screenPosStart.row, screenPosStart.column, screenPosEnd.row, screenPosEnd.column);\n };\n Range.prototype.moveBy = function (row, column) {\n this.start.row += row;\n this.start.column += column;\n this.end.row += row;\n this.end.column += column;\n };\n return Range;\n}());\nRange.fromPoints = function (start, end) {\n return new Range(start.row, start.column, end.row, end.column);\n};\nRange.comparePoints = comparePoints;\nRange.comparePoints = function (p1, p2) {\n return p1.row - p2.row || p1.column - p2.column;\n};\nexports.Range = Range;\n\n});\n\nace.define(\"ace/anchor\",[], function(require, exports, module){\"use strict\";\nvar oop = require(\"./lib/oop\");\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar Anchor = /** @class */ (function () {\n function Anchor(doc, row, column) {\n this.$onChange = this.onChange.bind(this);\n this.attach(doc);\n if (typeof column == \"undefined\")\n this.setPosition(row.row, row.column);\n else\n this.setPosition(row, column);\n }\n Anchor.prototype.getPosition = function () {\n return this.$clipPositionToDocument(this.row, this.column);\n };\n Anchor.prototype.getDocument = function () {\n return this.document;\n };\n Anchor.prototype.onChange = function (delta) {\n if (delta.start.row == delta.end.row && delta.start.row != this.row)\n return;\n if (delta.start.row > this.row)\n return;\n var point = $getTransformedPoint(delta, { row: this.row, column: this.column }, this.$insertRight);\n this.setPosition(point.row, point.column, true);\n };\n Anchor.prototype.setPosition = function (row, column, noClip) {\n var pos;\n if (noClip) {\n pos = {\n row: row,\n column: column\n };\n }\n else {\n pos = this.$clipPositionToDocument(row, column);\n }\n if (this.row == pos.row && this.column == pos.column)\n return;\n var old = {\n row: this.row,\n column: this.column\n };\n this.row = pos.row;\n this.column = pos.column;\n this._signal(\"change\", {\n old: old,\n value: pos\n });\n };\n Anchor.prototype.detach = function () {\n this.document.off(\"change\", this.$onChange);\n };\n Anchor.prototype.attach = function (doc) {\n this.document = doc || this.document;\n this.document.on(\"change\", this.$onChange);\n };\n Anchor.prototype.$clipPositionToDocument = function (row, column) {\n var pos = {};\n if (row >= this.document.getLength()) {\n pos.row = Math.max(0, this.document.getLength() - 1);\n pos.column = this.document.getLine(pos.row).length;\n }\n else if (row < 0) {\n pos.row = 0;\n pos.column = 0;\n }\n else {\n pos.row = row;\n pos.column = Math.min(this.document.getLine(pos.row).length, Math.max(0, column));\n }\n if (column < 0)\n pos.column = 0;\n return pos;\n };\n return Anchor;\n}());\nAnchor.prototype.$insertRight = false;\noop.implement(Anchor.prototype, EventEmitter);\nfunction $pointsInOrder(point1, point2, equalPointsInOrder) {\n var bColIsAfter = equalPointsInOrder ? point1.column <= point2.column : point1.column < point2.column;\n return (point1.row < point2.row) || (point1.row == point2.row && bColIsAfter);\n}\nfunction $getTransformedPoint(delta, point, moveIfEqual) {\n var deltaIsInsert = delta.action == \"insert\";\n var deltaRowShift = (deltaIsInsert ? 1 : -1) * (delta.end.row - delta.start.row);\n var deltaColShift = (deltaIsInsert ? 1 : -1) * (delta.end.column - delta.start.column);\n var deltaStart = delta.start;\n var deltaEnd = deltaIsInsert ? deltaStart : delta.end; // Collapse insert range.\n if ($pointsInOrder(point, deltaStart, moveIfEqual)) {\n return {\n row: point.row,\n column: point.column\n };\n }\n if ($pointsInOrder(deltaEnd, point, !moveIfEqual)) {\n return {\n row: point.row + deltaRowShift,\n column: point.column + (point.row == deltaEnd.row ? deltaColShift : 0)\n };\n }\n return {\n row: deltaStart.row,\n column: deltaStart.column\n };\n}\nexports.Anchor = Anchor;\n\n});\n\nace.define(\"ace/document\",[], function(require, exports, module){\"use strict\";\nvar oop = require(\"./lib/oop\");\nvar applyDelta = require(\"./apply_delta\").applyDelta;\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar Range = require(\"./range\").Range;\nvar Anchor = require(\"./anchor\").Anchor;\nvar Document = /** @class */ (function () {\n function Document(textOrLines) {\n this.$lines = [\"\"];\n if (textOrLines.length === 0) {\n this.$lines = [\"\"];\n }\n else if (Array.isArray(textOrLines)) {\n this.insertMergedLines({ row: 0, column: 0 }, textOrLines);\n }\n else {\n this.insert({ row: 0, column: 0 }, textOrLines);\n }\n }\n Document.prototype.setValue = function (text) {\n var len = this.getLength() - 1;\n this.remove(new Range(0, 0, len, this.getLine(len).length));\n this.insert({ row: 0, column: 0 }, text || \"\");\n };\n Document.prototype.getValue = function () {\n return this.getAllLines().join(this.getNewLineCharacter());\n };\n Document.prototype.createAnchor = function (row, column) {\n return new Anchor(this, row, column);\n };\n Document.prototype.$detectNewLine = function (text) {\n var match = text.match(/^.*?(\\r\\n|\\r|\\n)/m);\n this.$autoNewLine = match ? match[1] : \"\\n\";\n this._signal(\"changeNewLineMode\");\n };\n Document.prototype.getNewLineCharacter = function () {\n switch (this.$newLineMode) {\n case \"windows\":\n return \"\\r\\n\";\n case \"unix\":\n return \"\\n\";\n default:\n return this.$autoNewLine || \"\\n\";\n }\n };\n Document.prototype.setNewLineMode = function (newLineMode) {\n if (this.$newLineMode === newLineMode)\n return;\n this.$newLineMode = newLineMode;\n this._signal(\"changeNewLineMode\");\n };\n Document.prototype.getNewLineMode = function () {\n return this.$newLineMode;\n };\n Document.prototype.isNewLine = function (text) {\n return (text == \"\\r\\n\" || text == \"\\r\" || text == \"\\n\");\n };\n Document.prototype.getLine = function (row) {\n return this.$lines[row] || \"\";\n };\n Document.prototype.getLines = function (firstRow, lastRow) {\n return this.$lines.slice(firstRow, lastRow + 1);\n };\n Document.prototype.getAllLines = function () {\n return this.getLines(0, this.getLength());\n };\n Document.prototype.getLength = function () {\n return this.$lines.length;\n };\n Document.prototype.getTextRange = function (range) {\n return this.getLinesForRange(range).join(this.getNewLineCharacter());\n };\n Document.prototype.getLinesForRange = function (range) {\n var lines;\n if (range.start.row === range.end.row) {\n lines = [this.getLine(range.start.row).substring(range.start.column, range.end.column)];\n }\n else {\n lines = this.getLines(range.start.row, range.end.row);\n lines[0] = (lines[0] || \"\").substring(range.start.column);\n var l = lines.length - 1;\n if (range.end.row - range.start.row == l)\n lines[l] = lines[l].substring(0, range.end.column);\n }\n return lines;\n };\n Document.prototype.insertLines = function (row, lines) {\n console.warn(\"Use of document.insertLines is deprecated. Use the insertFullLines method instead.\");\n return this.insertFullLines(row, lines);\n };\n Document.prototype.removeLines = function (firstRow, lastRow) {\n console.warn(\"Use of document.removeLines is deprecated. Use the removeFullLines method instead.\");\n return this.removeFullLines(firstRow, lastRow);\n };\n Document.prototype.insertNewLine = function (position) {\n console.warn(\"Use of document.insertNewLine is deprecated. Use insertMergedLines(position, ['', '']) instead.\");\n return this.insertMergedLines(position, [\"\", \"\"]);\n };\n Document.prototype.insert = function (position, text) {\n if (this.getLength() <= 1)\n this.$detectNewLine(text);\n return this.insertMergedLines(position, this.$split(text));\n };\n Document.prototype.insertInLine = function (position, text) {\n var start = this.clippedPos(position.row, position.column);\n var end = this.pos(position.row, position.column + text.length);\n this.applyDelta({\n start: start,\n end: end,\n action: \"insert\",\n lines: [text]\n }, true);\n return this.clonePos(end);\n };\n Document.prototype.clippedPos = function (row, column) {\n var length = this.getLength();\n if (row === undefined) {\n row = length;\n }\n else if (row < 0) {\n row = 0;\n }\n else if (row >= length) {\n row = length - 1;\n column = undefined;\n }\n var line = this.getLine(row);\n if (column == undefined)\n column = line.length;\n column = Math.min(Math.max(column, 0), line.length);\n return { row: row, column: column };\n };\n Document.prototype.clonePos = function (pos) {\n return { row: pos.row, column: pos.column };\n };\n Document.prototype.pos = function (row, column) {\n return { row: row, column: column };\n };\n Document.prototype.$clipPosition = function (position) {\n var length = this.getLength();\n if (position.row >= length) {\n position.row = Math.max(0, length - 1);\n position.column = this.getLine(length - 1).length;\n }\n else {\n position.row = Math.max(0, position.row);\n position.column = Math.min(Math.max(position.column, 0), this.getLine(position.row).length);\n }\n return position;\n };\n Document.prototype.insertFullLines = function (row, lines) {\n row = Math.min(Math.max(row, 0), this.getLength());\n var column = 0;\n if (row < this.getLength()) {\n lines = lines.concat([\"\"]);\n column = 0;\n }\n else {\n lines = [\"\"].concat(lines);\n row--;\n column = this.$lines[row].length;\n }\n this.insertMergedLines({ row: row, column: column }, lines);\n };\n Document.prototype.insertMergedLines = function (position, lines) {\n var start = this.clippedPos(position.row, position.column);\n var end = {\n row: start.row + lines.length - 1,\n column: (lines.length == 1 ? start.column : 0) + lines[lines.length - 1].length\n };\n this.applyDelta({\n start: start,\n end: end,\n action: \"insert\",\n lines: lines\n });\n return this.clonePos(end);\n };\n Document.prototype.remove = function (range) {\n var start = this.clippedPos(range.start.row, range.start.column);\n var end = this.clippedPos(range.end.row, range.end.column);\n this.applyDelta({\n start: start,\n end: end,\n action: \"remove\",\n lines: this.getLinesForRange({ start: start, end: end })\n });\n return this.clonePos(start);\n };\n Document.prototype.removeInLine = function (row, startColumn, endColumn) {\n var start = this.clippedPos(row, startColumn);\n var end = this.clippedPos(row, endColumn);\n this.applyDelta({\n start: start,\n end: end,\n action: \"remove\",\n lines: this.getLinesForRange({ start: start, end: end })\n }, true);\n return this.clonePos(start);\n };\n Document.prototype.removeFullLines = function (firstRow, lastRow) {\n firstRow = Math.min(Math.max(0, firstRow), this.getLength() - 1);\n lastRow = Math.min(Math.max(0, lastRow), this.getLength() - 1);\n var deleteFirstNewLine = lastRow == this.getLength() - 1 && firstRow > 0;\n var deleteLastNewLine = lastRow < this.getLength() - 1;\n var startRow = (deleteFirstNewLine ? firstRow - 1 : firstRow);\n var startCol = (deleteFirstNewLine ? this.getLine(startRow).length : 0);\n var endRow = (deleteLastNewLine ? lastRow + 1 : lastRow);\n var endCol = (deleteLastNewLine ? 0 : this.getLine(endRow).length);\n var range = new Range(startRow, startCol, endRow, endCol);\n var deletedLines = this.$lines.slice(firstRow, lastRow + 1);\n this.applyDelta({\n start: range.start,\n end: range.end,\n action: \"remove\",\n lines: this.getLinesForRange(range)\n });\n return deletedLines;\n };\n Document.prototype.removeNewLine = function (row) {\n if (row < this.getLength() - 1 && row >= 0) {\n this.applyDelta({\n start: this.pos(row, this.getLine(row).length),\n end: this.pos(row + 1, 0),\n action: \"remove\",\n lines: [\"\", \"\"]\n });\n }\n };\n Document.prototype.replace = function (range, text) {\n if (!(range instanceof Range))\n range = Range.fromPoints(range.start, range.end);\n if (text.length === 0 && range.isEmpty())\n return range.start;\n if (text == this.getTextRange(range))\n return range.end;\n this.remove(range);\n var end;\n if (text) {\n end = this.insert(range.start, text);\n }\n else {\n end = range.start;\n }\n return end;\n };\n Document.prototype.applyDeltas = function (deltas) {\n for (var i = 0; i < deltas.length; i++) {\n this.applyDelta(deltas[i]);\n }\n };\n Document.prototype.revertDeltas = function (deltas) {\n for (var i = deltas.length - 1; i >= 0; i--) {\n this.revertDelta(deltas[i]);\n }\n };\n Document.prototype.applyDelta = function (delta, doNotValidate) {\n var isInsert = delta.action == \"insert\";\n if (isInsert ? delta.lines.length <= 1 && !delta.lines[0]\n : !Range.comparePoints(delta.start, delta.end)) {\n return;\n }\n if (isInsert && delta.lines.length > 20000) {\n this.$splitAndapplyLargeDelta(delta, 20000);\n }\n else {\n applyDelta(this.$lines, delta, doNotValidate);\n this._signal(\"change\", delta);\n }\n };\n Document.prototype.$safeApplyDelta = function (delta) {\n var docLength = this.$lines.length;\n if (delta.action == \"remove\" && delta.start.row < docLength && delta.end.row < docLength\n || delta.action == \"insert\" && delta.start.row <= docLength) {\n this.applyDelta(delta);\n }\n };\n Document.prototype.$splitAndapplyLargeDelta = function (delta, MAX) {\n var lines = delta.lines;\n var l = lines.length - MAX + 1;\n var row = delta.start.row;\n var column = delta.start.column;\n for (var from = 0, to = 0; from < l; from = to) {\n to += MAX - 1;\n var chunk = lines.slice(from, to);\n chunk.push(\"\");\n this.applyDelta({\n start: this.pos(row + from, column),\n end: this.pos(row + to, column = 0),\n action: delta.action,\n lines: chunk\n }, true);\n }\n delta.lines = lines.slice(from);\n delta.start.row = row + from;\n delta.start.column = column;\n this.applyDelta(delta, true);\n };\n Document.prototype.revertDelta = function (delta) {\n this.$safeApplyDelta({\n start: this.clonePos(delta.start),\n end: this.clonePos(delta.end),\n action: (delta.action == \"insert\" ? \"remove\" : \"insert\"),\n lines: delta.lines.slice()\n });\n };\n Document.prototype.indexToPosition = function (index, startRow) {\n var lines = this.$lines || this.getAllLines();\n var newlineLength = this.getNewLineCharacter().length;\n for (var i = startRow || 0, l = lines.length; i < l; i++) {\n index -= lines[i].length + newlineLength;\n if (index < 0)\n return { row: i, column: index + lines[i].length + newlineLength };\n }\n return { row: l - 1, column: index + lines[l - 1].length + newlineLength };\n };\n Document.prototype.positionToIndex = function (pos, startRow) {\n var lines = this.$lines || this.getAllLines();\n var newlineLength = this.getNewLineCharacter().length;\n var index = 0;\n var row = Math.min(pos.row, lines.length);\n for (var i = startRow || 0; i < row; ++i)\n index += lines[i].length + newlineLength;\n return index + pos.column;\n };\n Document.prototype.$split = function (text) {\n return text.split(/\\r\\n|\\r|\\n/);\n };\n return Document;\n}());\nDocument.prototype.$autoNewLine = \"\";\nDocument.prototype.$newLineMode = \"auto\";\noop.implement(Document.prototype, EventEmitter);\nexports.Document = Document;\n\n});\n\nace.define(\"ace/lib/deep_copy\",[], function(require, exports, module){exports.deepCopy = function deepCopy(obj) {\n if (typeof obj !== \"object\" || !obj)\n return obj;\n var copy;\n if (Array.isArray(obj)) {\n copy = [];\n for (var key = 0; key < obj.length; key++) {\n copy[key] = deepCopy(obj[key]);\n }\n return copy;\n }\n if (Object.prototype.toString.call(obj) !== \"[object Object]\")\n return obj;\n copy = {};\n for (var key in obj)\n copy[key] = deepCopy(obj[key]);\n return copy;\n};\n\n});\n\nace.define(\"ace/lib/lang\",[], function(require, exports, module){\"use strict\";\nexports.last = function (a) {\n return a[a.length - 1];\n};\nexports.stringReverse = function (string) {\n return string.split(\"\").reverse().join(\"\");\n};\nexports.stringRepeat = function (string, count) {\n var result = '';\n while (count > 0) {\n if (count & 1)\n result += string;\n if (count >>= 1)\n string += string;\n }\n return result;\n};\nvar trimBeginRegexp = /^\\s\\s*/;\nvar trimEndRegexp = /\\s\\s*$/;\nexports.stringTrimLeft = function (string) {\n return string.replace(trimBeginRegexp, '');\n};\nexports.stringTrimRight = function (string) {\n return string.replace(trimEndRegexp, '');\n};\nexports.copyObject = function (obj) {\n var copy = {};\n for (var key in obj) {\n copy[key] = obj[key];\n }\n return copy;\n};\nexports.copyArray = function (array) {\n var copy = [];\n for (var i = 0, l = array.length; i < l; i++) {\n if (array[i] && typeof array[i] == \"object\")\n copy[i] = this.copyObject(array[i]);\n else\n copy[i] = array[i];\n }\n return copy;\n};\nexports.deepCopy = require(\"./deep_copy\").deepCopy;\nexports.arrayToMap = function (arr) {\n var map = {};\n for (var i = 0; i < arr.length; i++) {\n map[arr[i]] = 1;\n }\n return map;\n};\nexports.createMap = function (props) {\n var map = Object.create(null);\n for (var i in props) {\n map[i] = props[i];\n }\n return map;\n};\nexports.arrayRemove = function (array, value) {\n for (var i = 0; i <= array.length; i++) {\n if (value === array[i]) {\n array.splice(i, 1);\n }\n }\n};\nexports.escapeRegExp = function (str) {\n return str.replace(/([.*+?^${}()|[\\]\\/\\\\])/g, '\\\\$1');\n};\nexports.escapeHTML = function (str) {\n return (\"\" + str).replace(/&/g, \"&\").replace(/\"/g, \""\").replace(/'/g, \"'\").replace(/= doc.$lines.length) {\n err = new Error(\"Invalid delta\");\n err.data = {\n path: _self.$path,\n linesLength: doc.$lines.length,\n start: d.start,\n end: d.end\n };\n throw err;\n }\n\n doc.applyDelta(d, true);\n }\n }\n if (_self.$timeout)\n return deferredUpdate.schedule(_self.$timeout);\n _self.onUpdate();\n });\n};\n\n(function() {\n \n this.$timeout = 500;\n \n this.setTimeout = function(timeout) {\n this.$timeout = timeout;\n };\n \n this.setValue = function(value) {\n this.doc.setValue(value);\n this.deferredUpdate.schedule(this.$timeout);\n };\n \n this.getValue = function(callbackId) {\n this.sender.callback(this.doc.getValue(), callbackId);\n };\n \n this.onUpdate = function() {\n };\n \n this.isPending = function() {\n return this.deferredUpdate.isPending();\n };\n \n}).call(Mirror.prototype);\n\n});\n\nace.define(\"ace/mode/json/json_parse\",[], function(require, exports, module) {\n\"use strict\";\n\n var at, // The index of the current character\n ch, // The current character\n escapee = {\n '\"': '\"',\n '\\\\': '\\\\',\n '/': '/',\n b: '\\b',\n f: '\\f',\n n: '\\n',\n r: '\\r',\n t: '\\t'\n },\n text,\n\n error = function (m) {\n\n throw {\n name: 'SyntaxError',\n message: m,\n at: at,\n text: text\n };\n },\n\n next = function (c) {\n\n if (c && c !== ch) {\n error(\"Expected '\" + c + \"' instead of '\" + ch + \"'\");\n }\n\n ch = text.charAt(at);\n at += 1;\n return ch;\n },\n\n number = function () {\n\n var number,\n string = '';\n\n if (ch === '-') {\n string = '-';\n next('-');\n }\n while (ch >= '0' && ch <= '9') {\n string += ch;\n next();\n }\n if (ch === '.') {\n string += '.';\n while (next() && ch >= '0' && ch <= '9') {\n string += ch;\n }\n }\n if (ch === 'e' || ch === 'E') {\n string += ch;\n next();\n if (ch === '-' || ch === '+') {\n string += ch;\n next();\n }\n while (ch >= '0' && ch <= '9') {\n string += ch;\n next();\n }\n }\n number = +string;\n if (isNaN(number)) {\n error(\"Bad number\");\n } else {\n return number;\n }\n },\n\n string = function () {\n\n var hex,\n i,\n string = '',\n uffff;\n\n if (ch === '\"') {\n while (next()) {\n if (ch === '\"') {\n next();\n return string;\n } else if (ch === '\\\\') {\n next();\n if (ch === 'u') {\n uffff = 0;\n for (i = 0; i < 4; i += 1) {\n hex = parseInt(next(), 16);\n if (!isFinite(hex)) {\n break;\n }\n uffff = uffff * 16 + hex;\n }\n string += String.fromCharCode(uffff);\n } else if (typeof escapee[ch] === 'string') {\n string += escapee[ch];\n } else {\n break;\n }\n } else if (ch == \"\\n\" || ch == \"\\r\") {\n break;\n } else {\n string += ch;\n }\n }\n }\n error(\"Bad string\");\n },\n\n white = function () {\n\n while (ch && ch <= ' ') {\n next();\n }\n },\n\n word = function () {\n\n switch (ch) {\n case 't':\n next('t');\n next('r');\n next('u');\n next('e');\n return true;\n case 'f':\n next('f');\n next('a');\n next('l');\n next('s');\n next('e');\n return false;\n case 'n':\n next('n');\n next('u');\n next('l');\n next('l');\n return null;\n }\n error(\"Unexpected '\" + ch + \"'\");\n },\n\n value, // Place holder for the value function.\n\n array = function () {\n\n var array = [];\n\n if (ch === '[') {\n next('[');\n white();\n if (ch === ']') {\n next(']');\n return array; // empty array\n }\n while (ch) {\n array.push(value());\n white();\n if (ch === ']') {\n next(']');\n return array;\n }\n next(',');\n white();\n }\n }\n error(\"Bad array\");\n },\n\n object = function () {\n\n var key,\n object = {};\n\n if (ch === '{') {\n next('{');\n white();\n if (ch === '}') {\n next('}');\n return object; // empty object\n }\n while (ch) {\n key = string();\n white();\n next(':');\n if (Object.hasOwnProperty.call(object, key)) {\n error('Duplicate key \"' + key + '\"');\n }\n object[key] = value();\n white();\n if (ch === '}') {\n next('}');\n return object;\n }\n next(',');\n white();\n }\n }\n error(\"Bad object\");\n };\n\n value = function () {\n\n white();\n switch (ch) {\n case '{':\n return object();\n case '[':\n return array();\n case '\"':\n return string();\n case '-':\n return number();\n default:\n return ch >= '0' && ch <= '9' ? number() : word();\n }\n };\n\n return function (source, reviver) {\n var result;\n\n text = source;\n at = 0;\n ch = ' ';\n result = value();\n white();\n if (ch) {\n error(\"Syntax error\");\n }\n\n return typeof reviver === 'function' ? function walk(holder, key) {\n var k, v, value = holder[key];\n if (value && typeof value === 'object') {\n for (k in value) {\n if (Object.hasOwnProperty.call(value, k)) {\n v = walk(value, k);\n if (v !== undefined) {\n value[k] = v;\n } else {\n delete value[k];\n }\n }\n }\n }\n return reviver.call(holder, key, value);\n }({'': result}, '') : result;\n };\n});\n\nace.define(\"ace/mode/json_worker\",[], function(require, exports, module) {\n\"use strict\";\n\nvar oop = require(\"../lib/oop\");\nvar Mirror = require(\"../worker/mirror\").Mirror;\nvar parse = require(\"./json/json_parse\");\n\nvar JsonWorker = exports.JsonWorker = function(sender) {\n Mirror.call(this, sender);\n this.setTimeout(200);\n};\n\noop.inherits(JsonWorker, Mirror);\n\n(function() {\n\n this.onUpdate = function() {\n var value = this.doc.getValue();\n var errors = [];\n try {\n if (value)\n parse(value);\n } catch (e) {\n var pos = this.doc.indexToPosition(e.at-1);\n errors.push({\n row: pos.row,\n column: pos.column,\n text: e.message,\n type: \"error\"\n });\n }\n this.sender.emit(\"annotate\", errors);\n };\n\n}).call(JsonWorker.prototype);\n\n});\n"],"mappings":"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","names":["require_9c4ab5d453e67f8e3a66","__commonJSMin","exports","window","msgs","message","file","line","col","err","parentId","moduleName","chunks","base","previous","id","module","path","resolveModuleId","paths","testPath","tail","alias","i","deps","factory","req","childId","returnExports","dep","topLevelNamespaces","EventEmitter","oop","Sender","data","callbackId","name","main","sender","e","msg","clazz","require","ctor","superCtor","obj","mixin","key","proto","throwDeltaError","delta","errorText","positionInDocument","docLines","position","validateDelta","start","end","numRangeRows","numRangeLastLineChars","doNotValidate","row","startColumn","lines","args","endColumn","endRow","stopPropagation","preventDefault","eventName","listeners","defaultHandler","callback","_self","newCallback","resolve","handlers","old","disabled","capturing","index","comparePoints","p1","p2","Range","startRow","range","column","cmp","p","firstRow","lastRow","session","screenPosStart","screenPosEnd","Anchor","doc","point","$getTransformedPoint","noClip","pos","$pointsInOrder","point1","point2","equalPointsInOrder","bColIsAfter","moveIfEqual","deltaIsInsert","deltaRowShift","deltaColShift","deltaStart","deltaEnd","applyDelta","Document","textOrLines","text","len","match","newLineMode","l","length","deleteFirstNewLine","deleteLastNewLine","startCol","endCol","deletedLines","deltas","isInsert","docLength","MAX","from","to","chunk","newlineLength","deepCopy","copy","a","string","count","result","trimBeginRegexp","trimEndRegexp","array","arr","map","props","value","str","regExp","matches","fcn","timer","deferred","timeout","defaultTimeout","error","lang","Mirror","deferredUpdate","d","at","ch","escapee","m","next","c","number","hex","uffff","white","word","object","source","reviver","walk","holder","k","v","parse","JsonWorker","errors"],"sourceRoot":"","file":"9c4ab5d453e67f8e3a66.js"} \ No newline at end of file diff --git a/lib/index.css b/lib/index.css index 3c530cfa..2039b73f 100644 --- a/lib/index.css +++ b/lib/index.css @@ -1,6 +1,6 @@ -html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video{margin:0;padding:0;border:0;font-size:100%;font:inherit;vertical-align:baseline}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}body{line-height:1}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:before,blockquote:after{content:"";content:none}q:before,q:after{content:"";content:none}table{border-collapse:collapse;border-spacing:0}.container{max-width:1240px;margin:0 auto}.container,.container-fluid{padding:0 20px}.tyk-row{display:flex;box-sizing:border-box;list-style:none;flex:0 1 auto;flex-direction:row;flex-wrap:wrap;margin-left:-20px;width:calc(100% + 20px)}.tyk-row.no-gutters{margin:0}.tyk-row.tyk-row--gutterless{margin:0;width:100%}.tyk-row.tyk-row--reverse{flex-direction:row-reverse}.tyk-col{max-width:calc(100% - 20px);box-sizing:border-box;flex:0 0 auto;flex-grow:1;flex-basis:calc(100% - 20px);margin-left:20px;width:calc(100% - 20px)}.tyk-col:last-child{margin-right:0}.tyk-row--gutterless .tyk-col{margin:0}.tyk-col.tyk-col--reverse{flex-direction:column-reverse}.tyk-col.tyk-col--align-bottom{align-self:flex-end}.tyk-col.tyk-col--align-top{align-self:flex-start}.tyk-col.tyk-col--align-center{align-self:center}.tyk-col.tyk-col--align-baseline{align-self:baseline}.tyk-col.tyk-col--align-stretch{align-self:stretch}@media screen and (min-width: 1248px){.tyk-col--lg-0{flex-basis:calc(0% - 20px);max-width:calc(0% - 20px)}.tyk-col--offset-lg-0{margin-left:0%}.tyk-col--lg-1{flex-basis:calc(8.3333333333% - 20px);max-width:calc(8.3333333333% - 20px)}.tyk-col--offset-lg-1{margin-left:8.3333333333%}.tyk-col--lg-2{flex-basis:calc(16.6666666667% - 20px);max-width:calc(16.6666666667% - 20px)}.tyk-col--offset-lg-2{margin-left:16.6666666667%}.tyk-col--lg-3{flex-basis:calc(25% - 20px);max-width:calc(25% - 20px)}.tyk-col--offset-lg-3{margin-left:25%}.tyk-col--lg-4{flex-basis:calc(33.3333333333% - 20px);max-width:calc(33.3333333333% - 20px)}.tyk-col--offset-lg-4{margin-left:33.3333333333%}.tyk-col--lg-5{flex-basis:calc(41.6666666667% - 20px);max-width:calc(41.6666666667% - 20px)}.tyk-col--offset-lg-5{margin-left:41.6666666667%}.tyk-col--lg-6{flex-basis:calc(50% - 20px);max-width:calc(50% - 20px)}.tyk-col--offset-lg-6{margin-left:50%}.tyk-col--lg-7{flex-basis:calc(58.3333333333% - 20px);max-width:calc(58.3333333333% - 20px)}.tyk-col--offset-lg-7{margin-left:58.3333333333%}.tyk-col--lg-8{flex-basis:calc(66.6666666667% - 20px);max-width:calc(66.6666666667% - 20px)}.tyk-col--offset-lg-8{margin-left:66.6666666667%}.tyk-col--lg-9{flex-basis:calc(75% - 20px);max-width:calc(75% - 20px)}.tyk-col--offset-lg-9{margin-left:75%}.tyk-col--lg-10{flex-basis:calc(83.3333333333% - 20px);max-width:calc(83.3333333333% - 20px)}.tyk-col--offset-lg-10{margin-left:83.3333333333%}.tyk-col--lg-11{flex-basis:calc(91.6666666667% - 20px);max-width:calc(91.6666666667% - 20px)}.tyk-col--offset-lg-11{margin-left:91.6666666667%}.tyk-col--lg-12{flex-basis:calc(100% - 20px);max-width:calc(100% - 20px)}.tyk-col--offset-lg-12{margin-left:100%}}@media screen and (min-width: 1024px)and (max-width: 1247px){.tyk-col--md-0{flex-basis:calc(0% - 20px);max-width:calc(0% - 20px)}.tyk-col--offset-md-0{margin-left:0%}.tyk-col--md-1{flex-basis:calc(8.3333333333% - 20px);max-width:calc(8.3333333333% - 20px)}.tyk-col--offset-md-1{margin-left:8.3333333333%}.tyk-col--md-2{flex-basis:calc(16.6666666667% - 20px);max-width:calc(16.6666666667% - 20px)}.tyk-col--offset-md-2{margin-left:16.6666666667%}.tyk-col--md-3{flex-basis:calc(25% - 20px);max-width:calc(25% - 20px)}.tyk-col--offset-md-3{margin-left:25%}.tyk-col--md-4{flex-basis:calc(33.3333333333% - 20px);max-width:calc(33.3333333333% - 20px)}.tyk-col--offset-md-4{margin-left:33.3333333333%}.tyk-col--md-5{flex-basis:calc(41.6666666667% - 20px);max-width:calc(41.6666666667% - 20px)}.tyk-col--offset-md-5{margin-left:41.6666666667%}.tyk-col--md-6{flex-basis:calc(50% - 20px);max-width:calc(50% - 20px)}.tyk-col--offset-md-6{margin-left:50%}.tyk-col--md-7{flex-basis:calc(58.3333333333% - 20px);max-width:calc(58.3333333333% - 20px)}.tyk-col--offset-md-7{margin-left:58.3333333333%}.tyk-col--md-8{flex-basis:calc(66.6666666667% - 20px);max-width:calc(66.6666666667% - 20px)}.tyk-col--offset-md-8{margin-left:66.6666666667%}.tyk-col--md-9{flex-basis:calc(75% - 20px);max-width:calc(75% - 20px)}.tyk-col--offset-md-9{margin-left:75%}.tyk-col--md-10{flex-basis:calc(83.3333333333% - 20px);max-width:calc(83.3333333333% - 20px)}.tyk-col--offset-md-10{margin-left:83.3333333333%}.tyk-col--md-11{flex-basis:calc(91.6666666667% - 20px);max-width:calc(91.6666666667% - 20px)}.tyk-col--offset-md-11{margin-left:91.6666666667%}.tyk-col--md-12{flex-basis:calc(100% - 20px);max-width:calc(100% - 20px)}.tyk-col--offset-md-12{margin-left:100%}}@media screen and (min-width: 769px)and (max-width:1023px){.tyk-col--sm-0{flex-basis:calc(0% - 20px);max-width:calc(0% - 20px)}.tyk-col--offset-sm-0{margin-left:0%}.tyk-col--sm-1{flex-basis:calc(8.3333333333% - 20px);max-width:calc(8.3333333333% - 20px)}.tyk-col--offset-sm-1{margin-left:8.3333333333%}.tyk-col--sm-2{flex-basis:calc(16.6666666667% - 20px);max-width:calc(16.6666666667% - 20px)}.tyk-col--offset-sm-2{margin-left:16.6666666667%}.tyk-col--sm-3{flex-basis:calc(25% - 20px);max-width:calc(25% - 20px)}.tyk-col--offset-sm-3{margin-left:25%}.tyk-col--sm-4{flex-basis:calc(33.3333333333% - 20px);max-width:calc(33.3333333333% - 20px)}.tyk-col--offset-sm-4{margin-left:33.3333333333%}.tyk-col--sm-5{flex-basis:calc(41.6666666667% - 20px);max-width:calc(41.6666666667% - 20px)}.tyk-col--offset-sm-5{margin-left:41.6666666667%}.tyk-col--sm-6{flex-basis:calc(50% - 20px);max-width:calc(50% - 20px)}.tyk-col--offset-sm-6{margin-left:50%}.tyk-col--sm-7{flex-basis:calc(58.3333333333% - 20px);max-width:calc(58.3333333333% - 20px)}.tyk-col--offset-sm-7{margin-left:58.3333333333%}.tyk-col--sm-8{flex-basis:calc(66.6666666667% - 20px);max-width:calc(66.6666666667% - 20px)}.tyk-col--offset-sm-8{margin-left:66.6666666667%}.tyk-col--sm-9{flex-basis:calc(75% - 20px);max-width:calc(75% - 20px)}.tyk-col--offset-sm-9{margin-left:75%}.tyk-col--sm-10{flex-basis:calc(83.3333333333% - 20px);max-width:calc(83.3333333333% - 20px)}.tyk-col--offset-sm-10{margin-left:83.3333333333%}.tyk-col--sm-11{flex-basis:calc(91.6666666667% - 20px);max-width:calc(91.6666666667% - 20px)}.tyk-col--offset-sm-11{margin-left:91.6666666667%}.tyk-col--sm-12{flex-basis:calc(100% - 20px);max-width:calc(100% - 20px)}.tyk-col--offset-sm-12{margin-left:100%}}@media screen and (max-width: 768px){.tyk-col--xs-0{flex-basis:calc(0% - 20px);max-width:calc(0% - 20px)}.tyk-col--offset-xs-0{margin-left:0%}.tyk-col--xs-1{flex-basis:calc(8.3333333333% - 20px);max-width:calc(8.3333333333% - 20px)}.tyk-col--offset-xs-1{margin-left:8.3333333333%}.tyk-col--xs-2{flex-basis:calc(16.6666666667% - 20px);max-width:calc(16.6666666667% - 20px)}.tyk-col--offset-xs-2{margin-left:16.6666666667%}.tyk-col--xs-3{flex-basis:calc(25% - 20px);max-width:calc(25% - 20px)}.tyk-col--offset-xs-3{margin-left:25%}.tyk-col--xs-4{flex-basis:calc(33.3333333333% - 20px);max-width:calc(33.3333333333% - 20px)}.tyk-col--offset-xs-4{margin-left:33.3333333333%}.tyk-col--xs-5{flex-basis:calc(41.6666666667% - 20px);max-width:calc(41.6666666667% - 20px)}.tyk-col--offset-xs-5{margin-left:41.6666666667%}.tyk-col--xs-6{flex-basis:calc(50% - 20px);max-width:calc(50% - 20px)}.tyk-col--offset-xs-6{margin-left:50%}.tyk-col--xs-7{flex-basis:calc(58.3333333333% - 20px);max-width:calc(58.3333333333% - 20px)}.tyk-col--offset-xs-7{margin-left:58.3333333333%}.tyk-col--xs-8{flex-basis:calc(66.6666666667% - 20px);max-width:calc(66.6666666667% - 20px)}.tyk-col--offset-xs-8{margin-left:66.6666666667%}.tyk-col--xs-9{flex-basis:calc(75% - 20px);max-width:calc(75% - 20px)}.tyk-col--offset-xs-9{margin-left:75%}.tyk-col--xs-10{flex-basis:calc(83.3333333333% - 20px);max-width:calc(83.3333333333% - 20px)}.tyk-col--offset-xs-10{margin-left:83.3333333333%}.tyk-col--xs-11{flex-basis:calc(91.6666666667% - 20px);max-width:calc(91.6666666667% - 20px)}.tyk-col--offset-xs-11{margin-left:91.6666666667%}.tyk-col--xs-12{flex-basis:calc(100% - 20px);max-width:calc(100% - 20px)}.tyk-col--offset-xs-12{margin-left:100%}}@font-face{font-family:OpenSans-Bold;src:url(fonts/OpenSans-Bold.woff2) format("woff2"),url(fonts/OpenSans-Bold.woff) format("woff");font-weight:400;font-style:normal}@font-face{font-family:OpenSans-SemiBold;src:url(fonts/OpenSans-SemiBold.woff2) format("woff2"),url(fonts/OpenSans-SemiBold.woff) format("woff");font-weight:400;font-style:normal}@font-face{font-family:OpenSans-Regular;src:url(fonts/OpenSans-Regular.woff2) format("woff2"),url(fonts/OpenSans-Regular.woff) format("woff");font-weight:400;font-style:normal}@font-face{font-family:smoolthan_bold;src:url(fonts/smoolthan_bold-webfont.woff2) format("woff2"),url(fonts/smoolthan_bold-webfont.woff) format("woff");font-weight:400;font-style:normal}@font-face{font-family:smoolthan_medium;src:url(fonts/smoolthan_medium-webfont.woff2) format("woff2"),url(fonts/smoolthan_medium-webfont.woff) format("woff");font-weight:400;font-style:normal}@font-face{font-family:smoolthan_regular;src:url(fonts/smoolthan_regular-webfont.woff2) format("woff2"),url(fonts/smoolthan_regular-webfont.woff) format("woff");font-weight:400;font-style:normal}@font-face{font-family:tykon;src:url(fonts/tykon.woff2) format("woff2"),url(fonts/tykon.woff) format("woff");font-weight:400;font-style:normal}/*! -* Font Awesome Free 5.5.0 by @fontawesome - https://fontawesome.com -* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) -*/.fa,.fas,.far,.fal,.fab{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-.0667em}.fa-xs{font-size:.75em}.fa-sm{font-size:.875em}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:2.5em;padding-left:0}.fa-ul>li{position:relative}.fa-li{left:-2em;position:absolute;text-align:center;width:2em;line-height:inherit}.fa-border{border:solid .08em #eee;border-radius:.1em;padding:.2em .25em .15em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left,.fas.fa-pull-left,.far.fa-pull-left,.fal.fa-pull-left,.fab.fa-pull-left{margin-right:.3em}.fa.fa-pull-right,.fas.fa-pull-right,.far.fa-pull-right,.fal.fa-pull-right,.fab.fa-pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scale(-1,1);transform:scaleX(-1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scale(1,-1);transform:scaleY(-1)}.fa-flip-horizontal.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scale(-1,-1);transform:scale(-1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{-webkit-filter:none;filter:none}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-500px:before{content:"\f26e"}.fa-accessible-icon:before{content:"\f368"}.fa-accusoft:before{content:"\f369"}.fa-acquisitions-incorporated:before{content:"\f6af"}.fa-ad:before{content:"\f641"}.fa-address-book:before{content:"\f2b9"}.fa-address-card:before{content:"\f2bb"}.fa-adjust:before{content:"\f042"}.fa-adn:before{content:"\f170"}.fa-adversal:before{content:"\f36a"}.fa-affiliatetheme:before{content:"\f36b"}.fa-air-freshener:before{content:"\f5d0"}.fa-algolia:before{content:"\f36c"}.fa-align-center:before{content:"\f037"}.fa-align-justify:before{content:"\f039"}.fa-align-left:before{content:"\f036"}.fa-align-right:before{content:"\f038"}.fa-alipay:before{content:"\f642"}.fa-allergies:before{content:"\f461"}.fa-amazon:before{content:"\f270"}.fa-amazon-pay:before{content:"\f42c"}.fa-ambulance:before{content:"\f0f9"}.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-amilia:before{content:"\f36d"}.fa-anchor:before{content:"\f13d"}.fa-android:before{content:"\f17b"}.fa-angellist:before{content:"\f209"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-down:before{content:"\f107"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angry:before{content:"\f556"}.fa-angrycreative:before{content:"\f36e"}.fa-angular:before{content:"\f420"}.fa-ankh:before{content:"\f644"}.fa-app-store:before{content:"\f36f"}.fa-app-store-ios:before{content:"\f370"}.fa-apper:before{content:"\f371"}.fa-apple:before{content:"\f179"}.fa-apple-alt:before{content:"\f5d1"}.fa-apple-pay:before{content:"\f415"}.fa-archive:before{content:"\f187"}.fa-archway:before{content:"\f557"}.fa-arrow-alt-circle-down:before{content:"\f358"}.fa-arrow-alt-circle-left:before{content:"\f359"}.fa-arrow-alt-circle-right:before{content:"\f35a"}.fa-arrow-alt-circle-up:before{content:"\f35b"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-down:before{content:"\f063"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrows-alt:before{content:"\f0b2"}.fa-arrows-alt-h:before{content:"\f337"}.fa-arrows-alt-v:before{content:"\f338"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-asterisk:before{content:"\f069"}.fa-asymmetrik:before{content:"\f372"}.fa-at:before{content:"\f1fa"}.fa-atlas:before{content:"\f558"}.fa-atom:before{content:"\f5d2"}.fa-audible:before{content:"\f373"}.fa-audio-description:before{content:"\f29e"}.fa-autoprefixer:before{content:"\f41c"}.fa-avianex:before{content:"\f374"}.fa-aviato:before{content:"\f421"}.fa-award:before{content:"\f559"}.fa-aws:before{content:"\f375"}.fa-backspace:before{content:"\f55a"}.fa-backward:before{content:"\f04a"}.fa-balance-scale:before{content:"\f24e"}.fa-ban:before{content:"\f05e"}.fa-band-aid:before{content:"\f462"}.fa-bandcamp:before{content:"\f2d5"}.fa-barcode:before{content:"\f02a"}.fa-bars:before{content:"\f0c9"}.fa-baseball-ball:before{content:"\f433"}.fa-basketball-ball:before{content:"\f434"}.fa-bath:before{content:"\f2cd"}.fa-battery-empty:before{content:"\f244"}.fa-battery-full:before{content:"\f240"}.fa-battery-half:before{content:"\f242"}.fa-battery-quarter:before{content:"\f243"}.fa-battery-three-quarters:before{content:"\f241"}.fa-bed:before{content:"\f236"}.fa-beer:before{content:"\f0fc"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-bell:before{content:"\f0f3"}.fa-bell-slash:before{content:"\f1f6"}.fa-bezier-curve:before{content:"\f55b"}.fa-bible:before{content:"\f647"}.fa-bicycle:before{content:"\f206"}.fa-bimobject:before{content:"\f378"}.fa-binoculars:before{content:"\f1e5"}.fa-birthday-cake:before{content:"\f1fd"}.fa-bitbucket:before{content:"\f171"}.fa-bitcoin:before{content:"\f379"}.fa-bity:before{content:"\f37a"}.fa-black-tie:before{content:"\f27e"}.fa-blackberry:before{content:"\f37b"}.fa-blender:before{content:"\f517"}.fa-blender-phone:before{content:"\f6b6"}.fa-blind:before{content:"\f29d"}.fa-blogger:before{content:"\f37c"}.fa-blogger-b:before{content:"\f37d"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-bold:before{content:"\f032"}.fa-bolt:before{content:"\f0e7"}.fa-bomb:before{content:"\f1e2"}.fa-bone:before{content:"\f5d7"}.fa-bong:before{content:"\f55c"}.fa-book:before{content:"\f02d"}.fa-book-dead:before{content:"\f6b7"}.fa-book-open:before{content:"\f518"}.fa-book-reader:before{content:"\f5da"}.fa-bookmark:before{content:"\f02e"}.fa-bowling-ball:before{content:"\f436"}.fa-box:before{content:"\f466"}.fa-box-open:before{content:"\f49e"}.fa-boxes:before{content:"\f468"}.fa-braille:before{content:"\f2a1"}.fa-brain:before{content:"\f5dc"}.fa-briefcase:before{content:"\f0b1"}.fa-briefcase-medical:before{content:"\f469"}.fa-broadcast-tower:before{content:"\f519"}.fa-broom:before{content:"\f51a"}.fa-brush:before{content:"\f55d"}.fa-btc:before{content:"\f15a"}.fa-bug:before{content:"\f188"}.fa-building:before{content:"\f1ad"}.fa-bullhorn:before{content:"\f0a1"}.fa-bullseye:before{content:"\f140"}.fa-burn:before{content:"\f46a"}.fa-buromobelexperte:before{content:"\f37f"}.fa-bus:before{content:"\f207"}.fa-bus-alt:before{content:"\f55e"}.fa-business-time:before{content:"\f64a"}.fa-buysellads:before{content:"\f20d"}.fa-calculator:before{content:"\f1ec"}.fa-calendar:before{content:"\f133"}.fa-calendar-alt:before{content:"\f073"}.fa-calendar-check:before{content:"\f274"}.fa-calendar-minus:before{content:"\f272"}.fa-calendar-plus:before{content:"\f271"}.fa-calendar-times:before{content:"\f273"}.fa-camera:before{content:"\f030"}.fa-camera-retro:before{content:"\f083"}.fa-campground:before{content:"\f6bb"}.fa-cannabis:before{content:"\f55f"}.fa-capsules:before{content:"\f46b"}.fa-car:before{content:"\f1b9"}.fa-car-alt:before{content:"\f5de"}.fa-car-battery:before{content:"\f5df"}.fa-car-crash:before{content:"\f5e1"}.fa-car-side:before{content:"\f5e4"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-caret-square-down:before{content:"\f150"}.fa-caret-square-left:before{content:"\f191"}.fa-caret-square-right:before{content:"\f152"}.fa-caret-square-up:before{content:"\f151"}.fa-caret-up:before{content:"\f0d8"}.fa-cart-arrow-down:before{content:"\f218"}.fa-cart-plus:before{content:"\f217"}.fa-cat:before{content:"\f6be"}.fa-cc-amazon-pay:before{content:"\f42d"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-apple-pay:before{content:"\f416"}.fa-cc-diners-club:before{content:"\f24c"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-cc-visa:before{content:"\f1f0"}.fa-centercode:before{content:"\f380"}.fa-certificate:before{content:"\f0a3"}.fa-chair:before{content:"\f6c0"}.fa-chalkboard:before{content:"\f51b"}.fa-chalkboard-teacher:before{content:"\f51c"}.fa-charging-station:before{content:"\f5e7"}.fa-chart-area:before{content:"\f1fe"}.fa-chart-bar:before{content:"\f080"}.fa-chart-line:before{content:"\f201"}.fa-chart-pie:before{content:"\f200"}.fa-check:before{content:"\f00c"}.fa-check-circle:before{content:"\f058"}.fa-check-double:before{content:"\f560"}.fa-check-square:before{content:"\f14a"}.fa-chess:before{content:"\f439"}.fa-chess-bishop:before{content:"\f43a"}.fa-chess-board:before{content:"\f43c"}.fa-chess-king:before{content:"\f43f"}.fa-chess-knight:before{content:"\f441"}.fa-chess-pawn:before{content:"\f443"}.fa-chess-queen:before{content:"\f445"}.fa-chess-rook:before{content:"\f447"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-down:before{content:"\f078"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-chevron-up:before{content:"\f077"}.fa-child:before{content:"\f1ae"}.fa-chrome:before{content:"\f268"}.fa-church:before{content:"\f51d"}.fa-circle:before{content:"\f111"}.fa-circle-notch:before{content:"\f1ce"}.fa-city:before{content:"\f64f"}.fa-clipboard:before{content:"\f328"}.fa-clipboard-check:before{content:"\f46c"}.fa-clipboard-list:before{content:"\f46d"}.fa-clock:before{content:"\f017"}.fa-clone:before{content:"\f24d"}.fa-closed-captioning:before{content:"\f20a"}.fa-cloud:before{content:"\f0c2"}.fa-cloud-download-alt:before{content:"\f381"}.fa-cloud-meatball:before{content:"\f73b"}.fa-cloud-moon:before{content:"\f6c3"}.fa-cloud-moon-rain:before{content:"\f73c"}.fa-cloud-rain:before{content:"\f73d"}.fa-cloud-showers-heavy:before{content:"\f740"}.fa-cloud-sun:before{content:"\f6c4"}.fa-cloud-sun-rain:before{content:"\f743"}.fa-cloud-upload-alt:before{content:"\f382"}.fa-cloudscale:before{content:"\f383"}.fa-cloudsmith:before{content:"\f384"}.fa-cloudversify:before{content:"\f385"}.fa-cocktail:before{content:"\f561"}.fa-code:before{content:"\f121"}.fa-code-branch:before{content:"\f126"}.fa-codepen:before{content:"\f1cb"}.fa-codiepie:before{content:"\f284"}.fa-coffee:before{content:"\f0f4"}.fa-cog:before{content:"\f013"}.fa-cogs:before{content:"\f085"}.fa-coins:before{content:"\f51e"}.fa-columns:before{content:"\f0db"}.fa-comment:before{content:"\f075"}.fa-comment-alt:before{content:"\f27a"}.fa-comment-dollar:before{content:"\f651"}.fa-comment-dots:before{content:"\f4ad"}.fa-comment-slash:before{content:"\f4b3"}.fa-comments:before{content:"\f086"}.fa-comments-dollar:before{content:"\f653"}.fa-compact-disc:before{content:"\f51f"}.fa-compass:before{content:"\f14e"}.fa-compress:before{content:"\f066"}.fa-compress-arrows-alt:before{content:"\f78c"}.fa-concierge-bell:before{content:"\f562"}.fa-connectdevelop:before{content:"\f20e"}.fa-contao:before{content:"\f26d"}.fa-cookie:before{content:"\f563"}.fa-cookie-bite:before{content:"\f564"}.fa-copy:before{content:"\f0c5"}.fa-copyright:before{content:"\f1f9"}.fa-couch:before{content:"\f4b8"}.fa-cpanel:before{content:"\f388"}.fa-creative-commons:before{content:"\f25e"}.fa-creative-commons-by:before{content:"\f4e7"}.fa-creative-commons-nc:before{content:"\f4e8"}.fa-creative-commons-nc-eu:before{content:"\f4e9"}.fa-creative-commons-nc-jp:before{content:"\f4ea"}.fa-creative-commons-nd:before{content:"\f4eb"}.fa-creative-commons-pd:before{content:"\f4ec"}.fa-creative-commons-pd-alt:before{content:"\f4ed"}.fa-creative-commons-remix:before{content:"\f4ee"}.fa-creative-commons-sa:before{content:"\f4ef"}.fa-creative-commons-sampling:before{content:"\f4f0"}.fa-creative-commons-sampling-plus:before{content:"\f4f1"}.fa-creative-commons-share:before{content:"\f4f2"}.fa-creative-commons-zero:before{content:"\f4f3"}.fa-credit-card:before{content:"\f09d"}.fa-critical-role:before{content:"\f6c9"}.fa-crop:before{content:"\f125"}.fa-crop-alt:before{content:"\f565"}.fa-cross:before{content:"\f654"}.fa-crosshairs:before{content:"\f05b"}.fa-crow:before{content:"\f520"}.fa-crown:before{content:"\f521"}.fa-css3:before{content:"\f13c"}.fa-css3-alt:before{content:"\f38b"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-cut:before{content:"\f0c4"}.fa-cuttlefish:before{content:"\f38c"}.fa-d-and-d:before{content:"\f38d"}.fa-d-and-d-beyond:before{content:"\f6ca"}.fa-dashcube:before{content:"\f210"}.fa-database:before{content:"\f1c0"}.fa-deaf:before{content:"\f2a4"}.fa-delicious:before{content:"\f1a5"}.fa-democrat:before{content:"\f747"}.fa-deploydog:before{content:"\f38e"}.fa-deskpro:before{content:"\f38f"}.fa-desktop:before{content:"\f108"}.fa-dev:before{content:"\f6cc"}.fa-deviantart:before{content:"\f1bd"}.fa-dharmachakra:before{content:"\f655"}.fa-diagnoses:before{content:"\f470"}.fa-dice:before{content:"\f522"}.fa-dice-d20:before{content:"\f6cf"}.fa-dice-d6:before{content:"\f6d1"}.fa-dice-five:before{content:"\f523"}.fa-dice-four:before{content:"\f524"}.fa-dice-one:before{content:"\f525"}.fa-dice-six:before{content:"\f526"}.fa-dice-three:before{content:"\f527"}.fa-dice-two:before{content:"\f528"}.fa-digg:before{content:"\f1a6"}.fa-digital-ocean:before{content:"\f391"}.fa-digital-tachograph:before{content:"\f566"}.fa-directions:before{content:"\f5eb"}.fa-discord:before{content:"\f392"}.fa-discourse:before{content:"\f393"}.fa-divide:before{content:"\f529"}.fa-dizzy:before{content:"\f567"}.fa-dna:before{content:"\f471"}.fa-dochub:before{content:"\f394"}.fa-docker:before{content:"\f395"}.fa-dog:before{content:"\f6d3"}.fa-dollar-sign:before{content:"\f155"}.fa-dolly:before{content:"\f472"}.fa-dolly-flatbed:before{content:"\f474"}.fa-donate:before{content:"\f4b9"}.fa-door-closed:before{content:"\f52a"}.fa-door-open:before{content:"\f52b"}.fa-dot-circle:before{content:"\f192"}.fa-dove:before{content:"\f4ba"}.fa-download:before{content:"\f019"}.fa-draft2digital:before{content:"\f396"}.fa-drafting-compass:before{content:"\f568"}.fa-dragon:before{content:"\f6d5"}.fa-draw-polygon:before{content:"\f5ee"}.fa-dribbble:before{content:"\f17d"}.fa-dribbble-square:before{content:"\f397"}.fa-dropbox:before{content:"\f16b"}.fa-drum:before{content:"\f569"}.fa-drum-steelpan:before{content:"\f56a"}.fa-drumstick-bite:before{content:"\f6d7"}.fa-drupal:before{content:"\f1a9"}.fa-dumbbell:before{content:"\f44b"}.fa-dungeon:before{content:"\f6d9"}.fa-dyalog:before{content:"\f399"}.fa-earlybirds:before{content:"\f39a"}.fa-ebay:before{content:"\f4f4"}.fa-edge:before{content:"\f282"}.fa-edit:before{content:"\f044"}.fa-eject:before{content:"\f052"}.fa-elementor:before{content:"\f430"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-ello:before{content:"\f5f1"}.fa-ember:before{content:"\f423"}.fa-empire:before{content:"\f1d1"}.fa-envelope:before{content:"\f0e0"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-open-text:before{content:"\f658"}.fa-envelope-square:before{content:"\f199"}.fa-envira:before{content:"\f299"}.fa-equals:before{content:"\f52c"}.fa-eraser:before{content:"\f12d"}.fa-erlang:before{content:"\f39d"}.fa-ethereum:before{content:"\f42e"}.fa-etsy:before{content:"\f2d7"}.fa-euro-sign:before{content:"\f153"}.fa-exchange-alt:before{content:"\f362"}.fa-exclamation:before{content:"\f12a"}.fa-exclamation-circle:before{content:"\f06a"}.fa-exclamation-triangle:before{content:"\f071"}.fa-expand:before{content:"\f065"}.fa-expand-arrows-alt:before{content:"\f31e"}.fa-expeditedssl:before{content:"\f23e"}.fa-external-link-alt:before{content:"\f35d"}.fa-external-link-square-alt:before{content:"\f360"}.fa-eye:before{content:"\f06e"}.fa-eye-dropper:before{content:"\f1fb"}.fa-eye-slash:before{content:"\f070"}.fa-facebook:before{content:"\f09a"}.fa-facebook-f:before{content:"\f39e"}.fa-facebook-messenger:before{content:"\f39f"}.fa-facebook-square:before{content:"\f082"}.fa-fantasy-flight-games:before{content:"\f6dc"}.fa-fast-backward:before{content:"\f049"}.fa-fast-forward:before{content:"\f050"}.fa-fax:before{content:"\f1ac"}.fa-feather:before{content:"\f52d"}.fa-feather-alt:before{content:"\f56b"}.fa-female:before{content:"\f182"}.fa-fighter-jet:before{content:"\f0fb"}.fa-file:before{content:"\f15b"}.fa-file-alt:before{content:"\f15c"}.fa-file-archive:before{content:"\f1c6"}.fa-file-audio:before{content:"\f1c7"}.fa-file-code:before{content:"\f1c9"}.fa-file-contract:before{content:"\f56c"}.fa-file-csv:before{content:"\f6dd"}.fa-file-download:before{content:"\f56d"}.fa-file-excel:before{content:"\f1c3"}.fa-file-export:before{content:"\f56e"}.fa-file-image:before{content:"\f1c5"}.fa-file-import:before{content:"\f56f"}.fa-file-invoice:before{content:"\f570"}.fa-file-invoice-dollar:before{content:"\f571"}.fa-file-medical:before{content:"\f477"}.fa-file-medical-alt:before{content:"\f478"}.fa-file-pdf:before{content:"\f1c1"}.fa-file-powerpoint:before{content:"\f1c4"}.fa-file-prescription:before{content:"\f572"}.fa-file-signature:before{content:"\f573"}.fa-file-upload:before{content:"\f574"}.fa-file-video:before{content:"\f1c8"}.fa-file-word:before{content:"\f1c2"}.fa-fill:before{content:"\f575"}.fa-fill-drip:before{content:"\f576"}.fa-film:before{content:"\f008"}.fa-filter:before{content:"\f0b0"}.fa-fingerprint:before{content:"\f577"}.fa-fire:before{content:"\f06d"}.fa-fire-extinguisher:before{content:"\f134"}.fa-firefox:before{content:"\f269"}.fa-first-aid:before{content:"\f479"}.fa-first-order:before{content:"\f2b0"}.fa-first-order-alt:before{content:"\f50a"}.fa-firstdraft:before{content:"\f3a1"}.fa-fish:before{content:"\f578"}.fa-fist-raised:before{content:"\f6de"}.fa-flag:before{content:"\f024"}.fa-flag-checkered:before{content:"\f11e"}.fa-flag-usa:before{content:"\f74d"}.fa-flask:before{content:"\f0c3"}.fa-flickr:before{content:"\f16e"}.fa-flipboard:before{content:"\f44d"}.fa-flushed:before{content:"\f579"}.fa-fly:before{content:"\f417"}.fa-folder:before{content:"\f07b"}.fa-folder-minus:before{content:"\f65d"}.fa-folder-open:before{content:"\f07c"}.fa-folder-plus:before{content:"\f65e"}.fa-font:before{content:"\f031"}.fa-font-awesome:before{content:"\f2b4"}.fa-font-awesome-alt:before{content:"\f35c"}.fa-font-awesome-flag:before{content:"\f425"}.fa-font-awesome-logo-full:before{content:"\f4e6"}.fa-fonticons:before{content:"\f280"}.fa-fonticons-fi:before{content:"\f3a2"}.fa-football-ball:before{content:"\f44e"}.fa-fort-awesome:before{content:"\f286"}.fa-fort-awesome-alt:before{content:"\f3a3"}.fa-forumbee:before{content:"\f211"}.fa-forward:before{content:"\f04e"}.fa-foursquare:before{content:"\f180"}.fa-free-code-camp:before{content:"\f2c5"}.fa-freebsd:before{content:"\f3a4"}.fa-frog:before{content:"\f52e"}.fa-frown:before{content:"\f119"}.fa-frown-open:before{content:"\f57a"}.fa-fulcrum:before{content:"\f50b"}.fa-funnel-dollar:before{content:"\f662"}.fa-futbol:before{content:"\f1e3"}.fa-galactic-republic:before{content:"\f50c"}.fa-galactic-senate:before{content:"\f50d"}.fa-gamepad:before{content:"\f11b"}.fa-gas-pump:before{content:"\f52f"}.fa-gavel:before{content:"\f0e3"}.fa-gem:before{content:"\f3a5"}.fa-genderless:before{content:"\f22d"}.fa-get-pocket:before{content:"\f265"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-ghost:before{content:"\f6e2"}.fa-gift:before{content:"\f06b"}.fa-git:before{content:"\f1d3"}.fa-git-square:before{content:"\f1d2"}.fa-github:before{content:"\f09b"}.fa-github-alt:before{content:"\f113"}.fa-github-square:before{content:"\f092"}.fa-gitkraken:before{content:"\f3a6"}.fa-gitlab:before{content:"\f296"}.fa-gitter:before{content:"\f426"}.fa-glass-martini:before{content:"\f000"}.fa-glass-martini-alt:before{content:"\f57b"}.fa-glasses:before{content:"\f530"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-globe:before{content:"\f0ac"}.fa-globe-africa:before{content:"\f57c"}.fa-globe-americas:before{content:"\f57d"}.fa-globe-asia:before{content:"\f57e"}.fa-gofore:before{content:"\f3a7"}.fa-golf-ball:before{content:"\f450"}.fa-goodreads:before{content:"\f3a8"}.fa-goodreads-g:before{content:"\f3a9"}.fa-google:before{content:"\f1a0"}.fa-google-drive:before{content:"\f3aa"}.fa-google-play:before{content:"\f3ab"}.fa-google-plus:before{content:"\f2b3"}.fa-google-plus-g:before{content:"\f0d5"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-wallet:before{content:"\f1ee"}.fa-gopuram:before{content:"\f664"}.fa-graduation-cap:before{content:"\f19d"}.fa-gratipay:before{content:"\f184"}.fa-grav:before{content:"\f2d6"}.fa-greater-than:before{content:"\f531"}.fa-greater-than-equal:before{content:"\f532"}.fa-grimace:before{content:"\f57f"}.fa-grin:before{content:"\f580"}.fa-grin-alt:before{content:"\f581"}.fa-grin-beam:before{content:"\f582"}.fa-grin-beam-sweat:before{content:"\f583"}.fa-grin-hearts:before{content:"\f584"}.fa-grin-squint:before{content:"\f585"}.fa-grin-squint-tears:before{content:"\f586"}.fa-grin-stars:before{content:"\f587"}.fa-grin-tears:before{content:"\f588"}.fa-grin-tongue:before{content:"\f589"}.fa-grin-tongue-squint:before{content:"\f58a"}.fa-grin-tongue-wink:before{content:"\f58b"}.fa-grin-wink:before{content:"\f58c"}.fa-grip-horizontal:before{content:"\f58d"}.fa-grip-vertical:before{content:"\f58e"}.fa-gripfire:before{content:"\f3ac"}.fa-grunt:before{content:"\f3ad"}.fa-gulp:before{content:"\f3ae"}.fa-h-square:before{content:"\f0fd"}.fa-hacker-news:before{content:"\f1d4"}.fa-hacker-news-square:before{content:"\f3af"}.fa-hackerrank:before{content:"\f5f7"}.fa-hammer:before{content:"\f6e3"}.fa-hamsa:before{content:"\f665"}.fa-hand-holding:before{content:"\f4bd"}.fa-hand-holding-heart:before{content:"\f4be"}.fa-hand-holding-usd:before{content:"\f4c0"}.fa-hand-lizard:before{content:"\f258"}.fa-hand-paper:before{content:"\f256"}.fa-hand-peace:before{content:"\f25b"}.fa-hand-point-down:before{content:"\f0a7"}.fa-hand-point-left:before{content:"\f0a5"}.fa-hand-point-right:before{content:"\f0a4"}.fa-hand-point-up:before{content:"\f0a6"}.fa-hand-pointer:before{content:"\f25a"}.fa-hand-rock:before{content:"\f255"}.fa-hand-scissors:before{content:"\f257"}.fa-hand-spock:before{content:"\f259"}.fa-hands:before{content:"\f4c2"}.fa-hands-helping:before{content:"\f4c4"}.fa-handshake:before{content:"\f2b5"}.fa-hanukiah:before{content:"\f6e6"}.fa-hashtag:before{content:"\f292"}.fa-hat-wizard:before{content:"\f6e8"}.fa-haykal:before{content:"\f666"}.fa-hdd:before{content:"\f0a0"}.fa-heading:before{content:"\f1dc"}.fa-headphones:before{content:"\f025"}.fa-headphones-alt:before{content:"\f58f"}.fa-headset:before{content:"\f590"}.fa-heart:before{content:"\f004"}.fa-heartbeat:before{content:"\f21e"}.fa-helicopter:before{content:"\f533"}.fa-highlighter:before{content:"\f591"}.fa-hiking:before{content:"\f6ec"}.fa-hippo:before{content:"\f6ed"}.fa-hips:before{content:"\f452"}.fa-hire-a-helper:before{content:"\f3b0"}.fa-history:before{content:"\f1da"}.fa-hockey-puck:before{content:"\f453"}.fa-home:before{content:"\f015"}.fa-hooli:before{content:"\f427"}.fa-hornbill:before{content:"\f592"}.fa-horse:before{content:"\f6f0"}.fa-hospital:before{content:"\f0f8"}.fa-hospital-alt:before{content:"\f47d"}.fa-hospital-symbol:before{content:"\f47e"}.fa-hot-tub:before{content:"\f593"}.fa-hotel:before{content:"\f594"}.fa-hotjar:before{content:"\f3b1"}.fa-hourglass:before{content:"\f254"}.fa-hourglass-end:before{content:"\f253"}.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-start:before{content:"\f251"}.fa-house-damage:before{content:"\f6f1"}.fa-houzz:before{content:"\f27c"}.fa-hryvnia:before{content:"\f6f2"}.fa-html5:before{content:"\f13b"}.fa-hubspot:before{content:"\f3b2"}.fa-i-cursor:before{content:"\f246"}.fa-id-badge:before{content:"\f2c1"}.fa-id-card:before{content:"\f2c2"}.fa-id-card-alt:before{content:"\f47f"}.fa-image:before{content:"\f03e"}.fa-images:before{content:"\f302"}.fa-imdb:before{content:"\f2d8"}.fa-inbox:before{content:"\f01c"}.fa-indent:before{content:"\f03c"}.fa-industry:before{content:"\f275"}.fa-infinity:before{content:"\f534"}.fa-info:before{content:"\f129"}.fa-info-circle:before{content:"\f05a"}.fa-instagram:before{content:"\f16d"}.fa-internet-explorer:before{content:"\f26b"}.fa-ioxhost:before{content:"\f208"}.fa-italic:before{content:"\f033"}.fa-itunes:before{content:"\f3b4"}.fa-itunes-note:before{content:"\f3b5"}.fa-java:before{content:"\f4e4"}.fa-jedi:before{content:"\f669"}.fa-jedi-order:before{content:"\f50e"}.fa-jenkins:before{content:"\f3b6"}.fa-joget:before{content:"\f3b7"}.fa-joint:before{content:"\f595"}.fa-joomla:before{content:"\f1aa"}.fa-journal-whills:before{content:"\f66a"}.fa-js:before{content:"\f3b8"}.fa-js-square:before{content:"\f3b9"}.fa-jsfiddle:before{content:"\f1cc"}.fa-kaaba:before{content:"\f66b"}.fa-kaggle:before{content:"\f5fa"}.fa-key:before{content:"\f084"}.fa-keybase:before{content:"\f4f5"}.fa-keyboard:before{content:"\f11c"}.fa-keycdn:before{content:"\f3ba"}.fa-khanda:before{content:"\f66d"}.fa-kickstarter:before{content:"\f3bb"}.fa-kickstarter-k:before{content:"\f3bc"}.fa-kiss:before{content:"\f596"}.fa-kiss-beam:before{content:"\f597"}.fa-kiss-wink-heart:before{content:"\f598"}.fa-kiwi-bird:before{content:"\f535"}.fa-korvue:before{content:"\f42f"}.fa-landmark:before{content:"\f66f"}.fa-language:before{content:"\f1ab"}.fa-laptop:before{content:"\f109"}.fa-laptop-code:before{content:"\f5fc"}.fa-laravel:before{content:"\f3bd"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-laugh:before{content:"\f599"}.fa-laugh-beam:before{content:"\f59a"}.fa-laugh-squint:before{content:"\f59b"}.fa-laugh-wink:before{content:"\f59c"}.fa-layer-group:before{content:"\f5fd"}.fa-leaf:before{content:"\f06c"}.fa-leanpub:before{content:"\f212"}.fa-lemon:before{content:"\f094"}.fa-less:before{content:"\f41d"}.fa-less-than:before{content:"\f536"}.fa-less-than-equal:before{content:"\f537"}.fa-level-down-alt:before{content:"\f3be"}.fa-level-up-alt:before{content:"\f3bf"}.fa-life-ring:before{content:"\f1cd"}.fa-lightbulb:before{content:"\f0eb"}.fa-line:before{content:"\f3c0"}.fa-link:before{content:"\f0c1"}.fa-linkedin:before{content:"\f08c"}.fa-linkedin-in:before{content:"\f0e1"}.fa-linode:before{content:"\f2b8"}.fa-linux:before{content:"\f17c"}.fa-lira-sign:before{content:"\f195"}.fa-list:before{content:"\f03a"}.fa-list-alt:before{content:"\f022"}.fa-list-ol:before{content:"\f0cb"}.fa-list-ul:before{content:"\f0ca"}.fa-location-arrow:before{content:"\f124"}.fa-lock:before{content:"\f023"}.fa-lock-open:before{content:"\f3c1"}.fa-long-arrow-alt-down:before{content:"\f309"}.fa-long-arrow-alt-left:before{content:"\f30a"}.fa-long-arrow-alt-right:before{content:"\f30b"}.fa-long-arrow-alt-up:before{content:"\f30c"}.fa-low-vision:before{content:"\f2a8"}.fa-luggage-cart:before{content:"\f59d"}.fa-lyft:before{content:"\f3c3"}.fa-magento:before{content:"\f3c4"}.fa-magic:before{content:"\f0d0"}.fa-magnet:before{content:"\f076"}.fa-mail-bulk:before{content:"\f674"}.fa-mailchimp:before{content:"\f59e"}.fa-male:before{content:"\f183"}.fa-mandalorian:before{content:"\f50f"}.fa-map:before{content:"\f279"}.fa-map-marked:before{content:"\f59f"}.fa-map-marked-alt:before{content:"\f5a0"}.fa-map-marker:before{content:"\f041"}.fa-map-marker-alt:before{content:"\f3c5"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-markdown:before{content:"\f60f"}.fa-marker:before{content:"\f5a1"}.fa-mars:before{content:"\f222"}.fa-mars-double:before{content:"\f227"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mask:before{content:"\f6fa"}.fa-mastodon:before{content:"\f4f6"}.fa-maxcdn:before{content:"\f136"}.fa-medal:before{content:"\f5a2"}.fa-medapps:before{content:"\f3c6"}.fa-medium:before{content:"\f23a"}.fa-medium-m:before{content:"\f3c7"}.fa-medkit:before{content:"\f0fa"}.fa-medrt:before{content:"\f3c8"}.fa-meetup:before{content:"\f2e0"}.fa-megaport:before{content:"\f5a3"}.fa-meh:before{content:"\f11a"}.fa-meh-blank:before{content:"\f5a4"}.fa-meh-rolling-eyes:before{content:"\f5a5"}.fa-memory:before{content:"\f538"}.fa-menorah:before{content:"\f676"}.fa-mercury:before{content:"\f223"}.fa-meteor:before{content:"\f753"}.fa-microchip:before{content:"\f2db"}.fa-microphone:before{content:"\f130"}.fa-microphone-alt:before{content:"\f3c9"}.fa-microphone-alt-slash:before{content:"\f539"}.fa-microphone-slash:before{content:"\f131"}.fa-microscope:before{content:"\f610"}.fa-microsoft:before{content:"\f3ca"}.fa-minus:before{content:"\f068"}.fa-minus-circle:before{content:"\f056"}.fa-minus-square:before{content:"\f146"}.fa-mix:before{content:"\f3cb"}.fa-mixcloud:before{content:"\f289"}.fa-mizuni:before{content:"\f3cc"}.fa-mobile:before{content:"\f10b"}.fa-mobile-alt:before{content:"\f3cd"}.fa-modx:before{content:"\f285"}.fa-monero:before{content:"\f3d0"}.fa-money-bill:before{content:"\f0d6"}.fa-money-bill-alt:before{content:"\f3d1"}.fa-money-bill-wave:before{content:"\f53a"}.fa-money-bill-wave-alt:before{content:"\f53b"}.fa-money-check:before{content:"\f53c"}.fa-money-check-alt:before{content:"\f53d"}.fa-monument:before{content:"\f5a6"}.fa-moon:before{content:"\f186"}.fa-mortar-pestle:before{content:"\f5a7"}.fa-mosque:before{content:"\f678"}.fa-motorcycle:before{content:"\f21c"}.fa-mountain:before{content:"\f6fc"}.fa-mouse-pointer:before{content:"\f245"}.fa-music:before{content:"\f001"}.fa-napster:before{content:"\f3d2"}.fa-neos:before{content:"\f612"}.fa-network-wired:before{content:"\f6ff"}.fa-neuter:before{content:"\f22c"}.fa-newspaper:before{content:"\f1ea"}.fa-nimblr:before{content:"\f5a8"}.fa-nintendo-switch:before{content:"\f418"}.fa-node:before{content:"\f419"}.fa-node-js:before{content:"\f3d3"}.fa-not-equal:before{content:"\f53e"}.fa-notes-medical:before{content:"\f481"}.fa-npm:before{content:"\f3d4"}.fa-ns8:before{content:"\f3d5"}.fa-nutritionix:before{content:"\f3d6"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-oil-can:before{content:"\f613"}.fa-old-republic:before{content:"\f510"}.fa-om:before{content:"\f679"}.fa-opencart:before{content:"\f23d"}.fa-openid:before{content:"\f19b"}.fa-opera:before{content:"\f26a"}.fa-optin-monster:before{content:"\f23c"}.fa-osi:before{content:"\f41a"}.fa-otter:before{content:"\f700"}.fa-outdent:before{content:"\f03b"}.fa-page4:before{content:"\f3d7"}.fa-pagelines:before{content:"\f18c"}.fa-paint-brush:before{content:"\f1fc"}.fa-paint-roller:before{content:"\f5aa"}.fa-palette:before{content:"\f53f"}.fa-palfed:before{content:"\f3d8"}.fa-pallet:before{content:"\f482"}.fa-paper-plane:before{content:"\f1d8"}.fa-paperclip:before{content:"\f0c6"}.fa-parachute-box:before{content:"\f4cd"}.fa-paragraph:before{content:"\f1dd"}.fa-parking:before{content:"\f540"}.fa-passport:before{content:"\f5ab"}.fa-pastafarianism:before{content:"\f67b"}.fa-paste:before{content:"\f0ea"}.fa-patreon:before{content:"\f3d9"}.fa-pause:before{content:"\f04c"}.fa-pause-circle:before{content:"\f28b"}.fa-paw:before{content:"\f1b0"}.fa-paypal:before{content:"\f1ed"}.fa-peace:before{content:"\f67c"}.fa-pen:before{content:"\f304"}.fa-pen-alt:before{content:"\f305"}.fa-pen-fancy:before{content:"\f5ac"}.fa-pen-nib:before{content:"\f5ad"}.fa-pen-square:before{content:"\f14b"}.fa-pencil-alt:before{content:"\f303"}.fa-pencil-ruler:before{content:"\f5ae"}.fa-penny-arcade:before{content:"\f704"}.fa-people-carry:before{content:"\f4ce"}.fa-percent:before{content:"\f295"}.fa-percentage:before{content:"\f541"}.fa-periscope:before{content:"\f3da"}.fa-person-booth:before{content:"\f756"}.fa-phabricator:before{content:"\f3db"}.fa-phoenix-framework:before{content:"\f3dc"}.fa-phoenix-squadron:before{content:"\f511"}.fa-phone:before{content:"\f095"}.fa-phone-slash:before{content:"\f3dd"}.fa-phone-square:before{content:"\f098"}.fa-phone-volume:before{content:"\f2a0"}.fa-php:before{content:"\f457"}.fa-pied-piper:before{content:"\f2ae"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-pied-piper-hat:before{content:"\f4e5"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-piggy-bank:before{content:"\f4d3"}.fa-pills:before{content:"\f484"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-p:before{content:"\f231"}.fa-pinterest-square:before{content:"\f0d3"}.fa-place-of-worship:before{content:"\f67f"}.fa-plane:before{content:"\f072"}.fa-plane-arrival:before{content:"\f5af"}.fa-plane-departure:before{content:"\f5b0"}.fa-play:before{content:"\f04b"}.fa-play-circle:before{content:"\f144"}.fa-playstation:before{content:"\f3df"}.fa-plug:before{content:"\f1e6"}.fa-plus:before{content:"\f067"}.fa-plus-circle:before{content:"\f055"}.fa-plus-square:before{content:"\f0fe"}.fa-podcast:before{content:"\f2ce"}.fa-poll:before{content:"\f681"}.fa-poll-h:before{content:"\f682"}.fa-poo:before{content:"\f2fe"}.fa-poo-storm:before{content:"\f75a"}.fa-poop:before{content:"\f619"}.fa-portrait:before{content:"\f3e0"}.fa-pound-sign:before{content:"\f154"}.fa-power-off:before{content:"\f011"}.fa-pray:before{content:"\f683"}.fa-praying-hands:before{content:"\f684"}.fa-prescription:before{content:"\f5b1"}.fa-prescription-bottle:before{content:"\f485"}.fa-prescription-bottle-alt:before{content:"\f486"}.fa-print:before{content:"\f02f"}.fa-procedures:before{content:"\f487"}.fa-product-hunt:before{content:"\f288"}.fa-project-diagram:before{content:"\f542"}.fa-pushed:before{content:"\f3e1"}.fa-puzzle-piece:before{content:"\f12e"}.fa-python:before{content:"\f3e2"}.fa-qq:before{content:"\f1d6"}.fa-qrcode:before{content:"\f029"}.fa-question:before{content:"\f128"}.fa-question-circle:before{content:"\f059"}.fa-quidditch:before{content:"\f458"}.fa-quinscape:before{content:"\f459"}.fa-quora:before{content:"\f2c4"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-quran:before{content:"\f687"}.fa-r-project:before{content:"\f4f7"}.fa-rainbow:before{content:"\f75b"}.fa-random:before{content:"\f074"}.fa-ravelry:before{content:"\f2d9"}.fa-react:before{content:"\f41b"}.fa-reacteurope:before{content:"\f75d"}.fa-readme:before{content:"\f4d5"}.fa-rebel:before{content:"\f1d0"}.fa-receipt:before{content:"\f543"}.fa-recycle:before{content:"\f1b8"}.fa-red-river:before{content:"\f3e3"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-alien:before{content:"\f281"}.fa-reddit-square:before{content:"\f1a2"}.fa-redo:before{content:"\f01e"}.fa-redo-alt:before{content:"\f2f9"}.fa-registered:before{content:"\f25d"}.fa-renren:before{content:"\f18b"}.fa-reply:before{content:"\f3e5"}.fa-reply-all:before{content:"\f122"}.fa-replyd:before{content:"\f3e6"}.fa-republican:before{content:"\f75e"}.fa-researchgate:before{content:"\f4f8"}.fa-resolving:before{content:"\f3e7"}.fa-retweet:before{content:"\f079"}.fa-rev:before{content:"\f5b2"}.fa-ribbon:before{content:"\f4d6"}.fa-ring:before{content:"\f70b"}.fa-road:before{content:"\f018"}.fa-robot:before{content:"\f544"}.fa-rocket:before{content:"\f135"}.fa-rocketchat:before{content:"\f3e8"}.fa-rockrms:before{content:"\f3e9"}.fa-route:before{content:"\f4d7"}.fa-rss:before{content:"\f09e"}.fa-rss-square:before{content:"\f143"}.fa-ruble-sign:before{content:"\f158"}.fa-ruler:before{content:"\f545"}.fa-ruler-combined:before{content:"\f546"}.fa-ruler-horizontal:before{content:"\f547"}.fa-ruler-vertical:before{content:"\f548"}.fa-running:before{content:"\f70c"}.fa-rupee-sign:before{content:"\f156"}.fa-sad-cry:before{content:"\f5b3"}.fa-sad-tear:before{content:"\f5b4"}.fa-safari:before{content:"\f267"}.fa-sass:before{content:"\f41e"}.fa-save:before{content:"\f0c7"}.fa-schlix:before{content:"\f3ea"}.fa-school:before{content:"\f549"}.fa-screwdriver:before{content:"\f54a"}.fa-scribd:before{content:"\f28a"}.fa-scroll:before{content:"\f70e"}.fa-search:before{content:"\f002"}.fa-search-dollar:before{content:"\f688"}.fa-search-location:before{content:"\f689"}.fa-search-minus:before{content:"\f010"}.fa-search-plus:before{content:"\f00e"}.fa-searchengin:before{content:"\f3eb"}.fa-seedling:before{content:"\f4d8"}.fa-sellcast:before{content:"\f2da"}.fa-sellsy:before{content:"\f213"}.fa-server:before{content:"\f233"}.fa-servicestack:before{content:"\f3ec"}.fa-shapes:before{content:"\f61f"}.fa-share:before{content:"\f064"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-share-square:before{content:"\f14d"}.fa-shekel-sign:before{content:"\f20b"}.fa-shield-alt:before{content:"\f3ed"}.fa-ship:before{content:"\f21a"}.fa-shipping-fast:before{content:"\f48b"}.fa-shirtsinbulk:before{content:"\f214"}.fa-shoe-prints:before{content:"\f54b"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-shopping-cart:before{content:"\f07a"}.fa-shopware:before{content:"\f5b5"}.fa-shower:before{content:"\f2cc"}.fa-shuttle-van:before{content:"\f5b6"}.fa-sign:before{content:"\f4d9"}.fa-sign-in-alt:before{content:"\f2f6"}.fa-sign-language:before{content:"\f2a7"}.fa-sign-out-alt:before{content:"\f2f5"}.fa-signal:before{content:"\f012"}.fa-signature:before{content:"\f5b7"}.fa-simplybuilt:before{content:"\f215"}.fa-sistrix:before{content:"\f3ee"}.fa-sitemap:before{content:"\f0e8"}.fa-sith:before{content:"\f512"}.fa-skull:before{content:"\f54c"}.fa-skull-crossbones:before{content:"\f714"}.fa-skyatlas:before{content:"\f216"}.fa-skype:before{content:"\f17e"}.fa-slack:before{content:"\f198"}.fa-slack-hash:before{content:"\f3ef"}.fa-slash:before{content:"\f715"}.fa-sliders-h:before{content:"\f1de"}.fa-slideshare:before{content:"\f1e7"}.fa-smile:before{content:"\f118"}.fa-smile-beam:before{content:"\f5b8"}.fa-smile-wink:before{content:"\f4da"}.fa-smog:before{content:"\f75f"}.fa-smoking:before{content:"\f48d"}.fa-smoking-ban:before{content:"\f54d"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-snowflake:before{content:"\f2dc"}.fa-socks:before{content:"\f696"}.fa-solar-panel:before{content:"\f5ba"}.fa-sort:before{content:"\f0dc"}.fa-sort-alpha-down:before{content:"\f15d"}.fa-sort-alpha-up:before{content:"\f15e"}.fa-sort-amount-down:before{content:"\f160"}.fa-sort-amount-up:before{content:"\f161"}.fa-sort-down:before{content:"\f0dd"}.fa-sort-numeric-down:before{content:"\f162"}.fa-sort-numeric-up:before{content:"\f163"}.fa-sort-up:before{content:"\f0de"}.fa-soundcloud:before{content:"\f1be"}.fa-spa:before{content:"\f5bb"}.fa-space-shuttle:before{content:"\f197"}.fa-speakap:before{content:"\f3f3"}.fa-spider:before{content:"\f717"}.fa-spinner:before{content:"\f110"}.fa-splotch:before{content:"\f5bc"}.fa-spotify:before{content:"\f1bc"}.fa-spray-can:before{content:"\f5bd"}.fa-square:before{content:"\f0c8"}.fa-square-full:before{content:"\f45c"}.fa-square-root-alt:before{content:"\f698"}.fa-squarespace:before{content:"\f5be"}.fa-stack-exchange:before{content:"\f18d"}.fa-stack-overflow:before{content:"\f16c"}.fa-stamp:before{content:"\f5bf"}.fa-star:before{content:"\f005"}.fa-star-and-crescent:before{content:"\f699"}.fa-star-half:before{content:"\f089"}.fa-star-half-alt:before{content:"\f5c0"}.fa-star-of-david:before{content:"\f69a"}.fa-star-of-life:before{content:"\f621"}.fa-staylinked:before{content:"\f3f5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-steam-symbol:before{content:"\f3f6"}.fa-step-backward:before{content:"\f048"}.fa-step-forward:before{content:"\f051"}.fa-stethoscope:before{content:"\f0f1"}.fa-sticker-mule:before{content:"\f3f7"}.fa-sticky-note:before{content:"\f249"}.fa-stop:before{content:"\f04d"}.fa-stop-circle:before{content:"\f28d"}.fa-stopwatch:before{content:"\f2f2"}.fa-store:before{content:"\f54e"}.fa-store-alt:before{content:"\f54f"}.fa-strava:before{content:"\f428"}.fa-stream:before{content:"\f550"}.fa-street-view:before{content:"\f21d"}.fa-strikethrough:before{content:"\f0cc"}.fa-stripe:before{content:"\f429"}.fa-stripe-s:before{content:"\f42a"}.fa-stroopwafel:before{content:"\f551"}.fa-studiovinari:before{content:"\f3f8"}.fa-stumbleupon:before{content:"\f1a4"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-subscript:before{content:"\f12c"}.fa-subway:before{content:"\f239"}.fa-suitcase:before{content:"\f0f2"}.fa-suitcase-rolling:before{content:"\f5c1"}.fa-sun:before{content:"\f185"}.fa-superpowers:before{content:"\f2dd"}.fa-superscript:before{content:"\f12b"}.fa-supple:before{content:"\f3f9"}.fa-surprise:before{content:"\f5c2"}.fa-swatchbook:before{content:"\f5c3"}.fa-swimmer:before{content:"\f5c4"}.fa-swimming-pool:before{content:"\f5c5"}.fa-synagogue:before{content:"\f69b"}.fa-sync:before{content:"\f021"}.fa-sync-alt:before{content:"\f2f1"}.fa-syringe:before{content:"\f48e"}.fa-table:before{content:"\f0ce"}.fa-table-tennis:before{content:"\f45d"}.fa-tablet:before{content:"\f10a"}.fa-tablet-alt:before{content:"\f3fa"}.fa-tablets:before{content:"\f490"}.fa-tachometer-alt:before{content:"\f3fd"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-tape:before{content:"\f4db"}.fa-tasks:before{content:"\f0ae"}.fa-taxi:before{content:"\f1ba"}.fa-teamspeak:before{content:"\f4f9"}.fa-teeth:before{content:"\f62e"}.fa-teeth-open:before{content:"\f62f"}.fa-telegram:before{content:"\f2c6"}.fa-telegram-plane:before{content:"\f3fe"}.fa-temperature-high:before{content:"\f769"}.fa-temperature-low:before{content:"\f76b"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-terminal:before{content:"\f120"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-th:before{content:"\f00a"}.fa-th-large:before{content:"\f009"}.fa-th-list:before{content:"\f00b"}.fa-the-red-yeti:before{content:"\f69d"}.fa-theater-masks:before{content:"\f630"}.fa-themeco:before{content:"\f5c6"}.fa-themeisle:before{content:"\f2b2"}.fa-thermometer:before{content:"\f491"}.fa-thermometer-empty:before{content:"\f2cb"}.fa-thermometer-full:before{content:"\f2c7"}.fa-thermometer-half:before{content:"\f2c9"}.fa-thermometer-quarter:before{content:"\f2ca"}.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-think-peaks:before{content:"\f731"}.fa-thumbs-down:before{content:"\f165"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbtack:before{content:"\f08d"}.fa-ticket-alt:before{content:"\f3ff"}.fa-times:before{content:"\f00d"}.fa-times-circle:before{content:"\f057"}.fa-tint:before{content:"\f043"}.fa-tint-slash:before{content:"\f5c7"}.fa-tired:before{content:"\f5c8"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-toilet-paper:before{content:"\f71e"}.fa-toolbox:before{content:"\f552"}.fa-tooth:before{content:"\f5c9"}.fa-torah:before{content:"\f6a0"}.fa-torii-gate:before{content:"\f6a1"}.fa-tractor:before{content:"\f722"}.fa-trade-federation:before{content:"\f513"}.fa-trademark:before{content:"\f25c"}.fa-traffic-light:before{content:"\f637"}.fa-train:before{content:"\f238"}.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-trash:before{content:"\f1f8"}.fa-trash-alt:before{content:"\f2ed"}.fa-tree:before{content:"\f1bb"}.fa-trello:before{content:"\f181"}.fa-tripadvisor:before{content:"\f262"}.fa-trophy:before{content:"\f091"}.fa-truck:before{content:"\f0d1"}.fa-truck-loading:before{content:"\f4de"}.fa-truck-monster:before{content:"\f63b"}.fa-truck-moving:before{content:"\f4df"}.fa-truck-pickup:before{content:"\f63c"}.fa-tshirt:before{content:"\f553"}.fa-tty:before{content:"\f1e4"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-tv:before{content:"\f26c"}.fa-twitch:before{content:"\f1e8"}.fa-twitter:before{content:"\f099"}.fa-twitter-square:before{content:"\f081"}.fa-typo3:before{content:"\f42b"}.fa-uber:before{content:"\f402"}.fa-uikit:before{content:"\f403"}.fa-umbrella:before{content:"\f0e9"}.fa-umbrella-beach:before{content:"\f5ca"}.fa-underline:before{content:"\f0cd"}.fa-undo:before{content:"\f0e2"}.fa-undo-alt:before{content:"\f2ea"}.fa-uniregistry:before{content:"\f404"}.fa-universal-access:before{content:"\f29a"}.fa-university:before{content:"\f19c"}.fa-unlink:before{content:"\f127"}.fa-unlock:before{content:"\f09c"}.fa-unlock-alt:before{content:"\f13e"}.fa-untappd:before{content:"\f405"}.fa-upload:before{content:"\f093"}.fa-usb:before{content:"\f287"}.fa-user:before{content:"\f007"}.fa-user-alt:before{content:"\f406"}.fa-user-alt-slash:before{content:"\f4fa"}.fa-user-astronaut:before{content:"\f4fb"}.fa-user-check:before{content:"\f4fc"}.fa-user-circle:before{content:"\f2bd"}.fa-user-clock:before{content:"\f4fd"}.fa-user-cog:before{content:"\f4fe"}.fa-user-edit:before{content:"\f4ff"}.fa-user-friends:before{content:"\f500"}.fa-user-graduate:before{content:"\f501"}.fa-user-injured:before{content:"\f728"}.fa-user-lock:before{content:"\f502"}.fa-user-md:before{content:"\f0f0"}.fa-user-minus:before{content:"\f503"}.fa-user-ninja:before{content:"\f504"}.fa-user-plus:before{content:"\f234"}.fa-user-secret:before{content:"\f21b"}.fa-user-shield:before{content:"\f505"}.fa-user-slash:before{content:"\f506"}.fa-user-tag:before{content:"\f507"}.fa-user-tie:before{content:"\f508"}.fa-user-times:before{content:"\f235"}.fa-users:before{content:"\f0c0"}.fa-users-cog:before{content:"\f509"}.fa-ussunnah:before{content:"\f407"}.fa-utensil-spoon:before{content:"\f2e5"}.fa-utensils:before{content:"\f2e7"}.fa-vaadin:before{content:"\f408"}.fa-vector-square:before{content:"\f5cb"}.fa-venus:before{content:"\f221"}.fa-venus-double:before{content:"\f226"}.fa-venus-mars:before{content:"\f228"}.fa-viacoin:before{content:"\f237"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-vial:before{content:"\f492"}.fa-vials:before{content:"\f493"}.fa-viber:before{content:"\f409"}.fa-video:before{content:"\f03d"}.fa-video-slash:before{content:"\f4e2"}.fa-vihara:before{content:"\f6a7"}.fa-vimeo:before{content:"\f40a"}.fa-vimeo-square:before{content:"\f194"}.fa-vimeo-v:before{content:"\f27d"}.fa-vine:before{content:"\f1ca"}.fa-vk:before{content:"\f189"}.fa-vnv:before{content:"\f40b"}.fa-volleyball-ball:before{content:"\f45f"}.fa-volume-down:before{content:"\f027"}.fa-volume-mute:before{content:"\f6a9"}.fa-volume-off:before{content:"\f026"}.fa-volume-up:before{content:"\f028"}.fa-vote-yea:before{content:"\f772"}.fa-vr-cardboard:before{content:"\f729"}.fa-vuejs:before{content:"\f41f"}.fa-walking:before{content:"\f554"}.fa-wallet:before{content:"\f555"}.fa-warehouse:before{content:"\f494"}.fa-water:before{content:"\f773"}.fa-weebly:before{content:"\f5cc"}.fa-weibo:before{content:"\f18a"}.fa-weight:before{content:"\f496"}.fa-weight-hanging:before{content:"\f5cd"}.fa-weixin:before{content:"\f1d7"}.fa-whatsapp:before{content:"\f232"}.fa-whatsapp-square:before{content:"\f40c"}.fa-wheelchair:before{content:"\f193"}.fa-whmcs:before{content:"\f40d"}.fa-wifi:before{content:"\f1eb"}.fa-wikipedia-w:before{content:"\f266"}.fa-wind:before{content:"\f72e"}.fa-window-close:before{content:"\f410"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-windows:before{content:"\f17a"}.fa-wine-bottle:before{content:"\f72f"}.fa-wine-glass:before{content:"\f4e3"}.fa-wine-glass-alt:before{content:"\f5ce"}.fa-wix:before{content:"\f5cf"}.fa-wizards-of-the-coast:before{content:"\f730"}.fa-wolf-pack-battalion:before{content:"\f514"}.fa-won-sign:before{content:"\f159"}.fa-wordpress:before{content:"\f19a"}.fa-wordpress-simple:before{content:"\f411"}.fa-wpbeginner:before{content:"\f297"}.fa-wpexplorer:before{content:"\f2de"}.fa-wpforms:before{content:"\f298"}.fa-wpressr:before{content:"\f3e4"}.fa-wrench:before{content:"\f0ad"}.fa-x-ray:before{content:"\f497"}.fa-xbox:before{content:"\f412"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-y-combinator:before{content:"\f23b"}.fa-yahoo:before{content:"\f19e"}.fa-yandex:before{content:"\f413"}.fa-yandex-international:before{content:"\f414"}.fa-yelp:before{content:"\f1e9"}.fa-yen-sign:before{content:"\f157"}.fa-yin-yang:before{content:"\f6ad"}.fa-yoast:before{content:"\f2b1"}.fa-youtube:before{content:"\f167"}.fa-youtube-square:before{content:"\f431"}.fa-zhihu:before{content:"\f63f"}.sr-only{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.sr-only-focusable:active,.sr-only-focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}@font-face{font-family:"Font Awesome 5 Brands";font-style:normal;font-weight:400;src:url(fonts/fa-brands-400.eot);src:url(fonts/fa-brands-400.eot?#iefix) format("embedded-opentype"),url(fonts/fa-brands-400.woff2) format("woff2"),url(fonts/fa-brands-400.woff) format("woff"),url(fonts/fa-brands-400.ttf) format("truetype"),url(fonts/fa-brands-400.svg#fontawesome) format("svg")}.fab{font-family:"Font Awesome 5 Brands"}@font-face{font-family:"Font Awesome 5 Free";font-style:normal;font-weight:400;src:url(fonts/fa-regular-400.eot);src:url(fonts/fa-regular-400.eot?#iefix) format("embedded-opentype"),url(fonts/fa-regular-400.woff2) format("woff2"),url(fonts/fa-regular-400.woff) format("woff"),url(fonts/fa-regular-400.ttf) format("truetype"),url(fonts/fa-regular-400.svg#fontawesome) format("svg")}.far{font-family:"Font Awesome 5 Free";font-weight:400}@font-face{font-family:"Font Awesome 5 Free";font-style:normal;font-weight:900;src:url(fonts/fa-solid-900.eot);src:url(fonts/fa-solid-900.eot?#iefix) format("embedded-opentype"),url(fonts/fa-solid-900.woff2) format("woff2"),url(fonts/fa-solid-900.woff) format("woff"),url(fonts/fa-solid-900.ttf) format("truetype"),url(fonts/fa-solid-900.svg#fontawesome) format("svg")}.fa,.fas{font-family:"Font Awesome 5 Free";font-weight:900}.tykon:before{font-family:tykon!important;font-style:normal!important;font-weight:400!important;font-variant:normal!important;text-transform:none!important;speak:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.tykon-arrowdown:before{content:"a"}.tykon-arrowleft:before{content:"b"}.tykon-arrowright:before{content:"c"}.tykon-arrowup:before{content:"d"}.tykon-graph1:before{content:"g"}.tykon-graph2:before{content:"h"}.tykon-deployment:before{content:"n"}.tykon-team:before{content:"o"}.tykon-overview:before{content:"p"}.tykon-loadout:before{content:"q"}.tykon-entitlement:before{content:"r"}.tykon-users:before{content:"s"}.tykon-doublearrowdown:before{content:"e"}.tykon-arrowsort:before{content:"W"}.tykon-check:before{content:"V"}.tykon-copy:before{content:"C"}.tykon-delete:before{content:"U"}.tykon-download:before{content:"L"}.tykon-draft:before{content:"D"}.tykon-edit:before{content:"E"}.tykon-filter:before{content:"f"}.tykon-graphq2:before{content:"h"}.tykon-help:before{content:"?"}.tykon-label:before{content:"i"}.tykon-link:before{content:"R"}.tykon-lock1:before{content:"Y"}.tykon-lock2:before{content:"Z"}.tykon-notifications:before{content:"N"}.tykon-plus:before{content:"+"}.tykon-profile:before{content:"P"}.tykon-reload:before{content:"j"}.tykon-search:before{content:"O"}.tykon-select:before{content:"k"}.tykon-settings:before{content:"S"}.tykon-target:before{content:"l"}.tykon-undo:before{content:"m"}.tykon-warning:before{content:"!"}.tykon-x:before{content:"X"}.tykon-waiting:before{content:"T"}.tykon-fullscreen:before{content:"\e000"}.tykon-fullscreen-exit:before{content:"\e001"}.tykon-time:before{content:"t"}h1,h2,h3,h4,h5,h6{margin-bottom:15px;font-family:smoolthan_medium;font-weight:500;color:#36364c}label{display:inline-block;max-width:100%;margin-bottom:5px;color:#36364c}h1{font-size:25px;line-height:30px}h2{font-size:20px;line-height:24px}h3{font-size:17px;line-height:23px}h4{font-size:16px;line-height:22px}h5{font-size:14px;line-height:19px}h6{font-size:12px;line-height:16px}p,label{font-size:14px;line-height:19px;font-family:OpenSans-regular}strong{font-family:OpenSans-Bold}a:not(.tyk-button){cursor:pointer;color:#505071;font-family:OpenSans-regular}a:not(.tyk-button).link--bold{font-family:OpenSans-Bold}a:not(.tyk-button)+a{margin-left:5px}a:not(.tyk-button) i{font-size:9px}p a,label a{font-size:14px;text-decoration:underline}.font-family-regular{font-family:OpenSans-regular}.font-family-medium{font-family:OpenSans-SemiBold}.font-family-bold{font-family:OpenSans-Bold}.heading-font-family-regular{font-family:smoolthan_regular}.heading-font-family-medium{font-family:smoolthan_medium}.heading-font-family-bold{font-family:smoolthan_bold}.text--primary{color:#a2a2cc}.text--danger{color:#ff6c7d}.text--info{color:#82bbc6}.text-warning{color:#d6b218}.text--medium{font-family:OpenSans-SemiBold}.text--bold{font-family:OpenSans-Bold}.text--uppercase{text-transform:uppercase}.text--ellipsis{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.text--underline{text-decoration:underline}td.text-ellipsis{max-width:250px}.section-title{font-family:smoolthan_bold;margin-bottom:5px}.section-title .tyk-icon{margin-left:5px}.sub-section-title{margin-bottom:5px;font-family:OpenSans-SemiBold;font-size:16px;line-height:22px}.sub-section-title .tyk-icon{margin-left:5px}.section-group-title{margin-bottom:5px;font-family:OpenSans-Bold;font-size:14px;line-height:19px;text-transform:uppercase}.section-group-title .tyk-icon{margin-left:5px}.text--default-light{color:#c3c3e5!important}.text--default{color:#36364c!important}.text--primary{color:#a2a2cc!important}.text--danger{color:#ff6c7d!important}.text--success{color:#00d9ba!important}.text--warning{color:#d6b218!important}.tyk-form-section__title{font-size:16px;margin:5px 0 15px}.tyk-form-section__title--light{color:#43435b}.tyk-form-group{margin-bottom:15px}.tyk-form-group.has-error>.tyk-form-control__wrapper>.tyk-form-control,.tyk-form-group.has-error>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control,.tyk-form-group.has-error .tyk-file-input__wrapper>.tyk-form-control{border:2px solid #ff6c7d;border-left:2px solid #ea4766;outline:none}.tyk-form-group.has-error>.tyk-form-control__wrapper>.tyk-form-control:focus,.tyk-form-group.has-error>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control:focus,.tyk-form-group.has-error .tyk-file-input__wrapper>.tyk-form-control:focus{border-left:2px solid #ea4766;border-color:#ea4766;outline:none}.tyk-form-group label{font-family:OpenSans-SemiBold}.tyk-form-group--inline{align-items:stretch;display:flex;flex-wrap:nowrap}.tyk-form-group--inline .tyk-form-control__wrapper{flex:1}.tyk-form-group--inline label{display:flex;white-space:nowrap;margin-right:20px;margin-top:14px}.tyk-form-group--inline input,.tyk-form-group--inline select{display:flex}.tyk-form-group--inline .tyk-form-control__help-block{display:flex;margin-left:auto}.tyk-form-group--default{color:#505071}.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-form-control,.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control,.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control{border:2px solid #c3c3e5;color:#505071}.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-form-control[disabled],.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control[disabled],.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control[disabled]{border:2px solid #c3c3e5;background-color:#ededf9;color:#505071;cursor:not-allowed}.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-form-control[disabled]+.tyk-input-group__addon,.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control[disabled]+.tyk-input-group__addon,.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control[disabled]+.tyk-input-group__addon{background-color:#ededf9}.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-form-control::placeholder,.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control::placeholder,.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control::placeholder{opacity:.8}.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-form-control:-ms-input-placeholder,.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control:-ms-input-placeholder,.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control:-ms-input-placeholder{opacity:.8}.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-form-control::-ms-input-placeholder,.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control::-ms-input-placeholder,.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control::-ms-input-placeholder{opacity:.8}.tyk-form-group--default.tyk-form-group--addon-left .tyk-input-group__addon{border-bottom:2px solid #c3c3e5;border-left:2px solid #c3c3e5;border-top:2px solid #c3c3e5;color:#505071}.tyk-form-group--default.tyk-form-group--addon-right .tyk-input-group__addon{border-bottom:2px solid #c3c3e5;border-right:2px solid #c3c3e5;border-top:2px solid #c3c3e5;color:#505071}.tyk-form-group--primary{color:#505071}.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-form-control,.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control,.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control{border:2px solid #a2a2cc;color:#505071}.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-form-control[disabled],.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control[disabled],.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control[disabled]{border:2px solid #a2a2cc;background-color:#ededf9;color:#505071;cursor:not-allowed}.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-form-control[disabled]+.tyk-input-group__addon,.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control[disabled]+.tyk-input-group__addon,.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control[disabled]+.tyk-input-group__addon{background-color:#ededf9}.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-form-control::placeholder,.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control::placeholder,.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control::placeholder{opacity:.8}.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-form-control:-ms-input-placeholder,.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control:-ms-input-placeholder,.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control:-ms-input-placeholder{opacity:.8}.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-form-control::-ms-input-placeholder,.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control::-ms-input-placeholder,.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control::-ms-input-placeholder{opacity:.8}.tyk-form-group--primary.tyk-form-group--addon-left .tyk-input-group__addon{border-bottom:2px solid #a2a2cc;border-left:2px solid #a2a2cc;border-top:2px solid #a2a2cc;color:#a2a2cc}.tyk-form-group--primary.tyk-form-group--addon-right .tyk-input-group__addon{border-bottom:2px solid #a2a2cc;border-right:2px solid #a2a2cc;border-top:2px solid #a2a2cc;color:#a2a2cc}.tyk-form-group--success{color:#505071}.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-form-control,.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control,.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control{border:2px solid #00d9ba;color:#505071}.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-form-control[disabled],.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control[disabled],.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control[disabled]{border:2px solid #00d9ba;background-color:#ededf9;color:#505071;cursor:not-allowed}.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-form-control[disabled]+.tyk-input-group__addon,.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control[disabled]+.tyk-input-group__addon,.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control[disabled]+.tyk-input-group__addon{background-color:#ededf9}.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-form-control::placeholder,.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control::placeholder,.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control::placeholder{opacity:.8}.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-form-control:-ms-input-placeholder,.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control:-ms-input-placeholder,.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control:-ms-input-placeholder{opacity:.8}.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-form-control::-ms-input-placeholder,.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control::-ms-input-placeholder,.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control::-ms-input-placeholder{opacity:.8}.tyk-form-group--success.tyk-form-group--addon-left .tyk-input-group__addon{border-bottom:2px solid #00d9ba;border-left:2px solid #00d9ba;border-top:2px solid #00d9ba;color:#00d9ba}.tyk-form-group--success.tyk-form-group--addon-right .tyk-input-group__addon{border-bottom:2px solid #00d9ba;border-right:2px solid #00d9ba;border-top:2px solid #00d9ba;color:#00d9ba}.tyk-form-group--rounded-corners.has-error>.tyk-form-control__wrapper>.tyk-form-control{border-left:2px solid #ff6c7d}.tyk-form-group--rounded-corners.has-error>.tyk-form-control__wrapper>.tyk-form-control:focus{border-left:2px solid #ff6c7d;outline:none}.tyk-form-group--rounded-corners .tyk-form-control{border-radius:18px}.tyk-form-group--addon-right input{border-right:0!important;padding-right:0}.tyk-form-group--addon-left input{border-left:0!important;padding-left:0}.tyk-form-group--rounded-corners.tyk-form-group--addon-right input{border-top-right-radius:0;border-bottom-right-radius:0}.tyk-form-group--rounded-corners.tyk-form-group--addon-right .tyk-input-group__addon{background:#fff;border-top-right-radius:18px;border-bottom-right-radius:18px;color:#505071}.tyk-form-group--rounded-corners.tyk-form-group--addon-left input{border-top-left-radius:0;border-bottom-left-radius:0;border-left:0!important}.tyk-form-group--rounded-corners.tyk-form-group--addon-left .tyk-input-group__addon{background:#fff;border-top-left-radius:18px;border-bottom-left-radius:18px;color:#505071}.tyk-form-control__error-message{font-family:OpenSans-regular;font-size:12px;line-height:16px;margin-top:5px;padding:0 0 0 20px;position:relative}.tyk-form-control__error-message:before{content:"!";background:#ff6c7d;color:#fff;font-family:OpenSans-Bold;border-radius:8px;display:inline-block;margin-right:5px;padding:0 7px}.tyk-input-group{align-items:center;display:flex;outline:none}.tyk-input-group__addon{align-items:center;background-color:#fff;border:2px solid #c3c3e5;display:flex;height:39px;padding:10px}.tyk-input-group__addon:first-child{border-right:0}.tyk-input-group__addon:last-child{border-left:0}.tyk-form-control{font-family:OpenSans-SemiBold;font-size:14px;line-height:19px;border:2px solid #c3c3e5;background-color:#fff;color:#505071;display:block;height:39px;padding:10px 20px;transition:all .2s linear;width:100%}.tyk-form-control[disabled]{background-color:#ededf9;cursor:not-allowed}.tyk-form-control[disabled] .tyk-input-group__addon{background-color:#ededf9}.tyk-form-control::placeholder{font-family:OpenSans-SemiBold;color:#a2a2cc}.tyk-form-control:focus,.tyk-form-control:active{outline:none;border:2px solid #00d9ba!important}.tyk-form-control:focus+.tyk-input-group__addon,.tyk-form-control:active+.tyk-input-group__addon{border:2px solid #00d9ba!important;border-left:none!important}.tyk-form-control__help-block{color:#36364c;font-style:normal;font-family:OpenSans-regular;font-size:12px;line-height:16px;padding:0 0 0 20px;margin:5px 0 0}select{border-radius:0;-webkit-appearance:none}.inline-form-wrapper{align-items:center;display:flex;width:100%}.inline-form-wrapper .inline-form{width:100%}.inline-form-wrapper>button{margin-left:10px;margin-bottom:15px}.tyk-checkbox,.tyk-radio{margin:10px 0}.tyk-checkbox label,.tyk-radio label{font-family:OpenSans-SemiBold}.tyk-checkbox input,.tyk-radio input{margin:0 5px 0 0}.tyk-checkbox--inline,.tyk-radio--inline{display:inline-flex;margin-left:15px}.tyk-checkbox--inline:first-child,.tyk-radio--inline:first-child{margin-left:0}.tyk-inline-form{align-items:center;display:flex;flex-wrap:wrap}.tyk-inline-form .tyk-form-group{flex:1;margin-left:20px;min-width:200px}.tyk-inline-form .tyk-form-group:first-child{margin-left:0}.tyk-inline-form>.tyk-button{margin-left:20px;margin-bottom:15px}.tyk-accordion__item-header>button,.tyk-accordion__trigger{background:none;border:none;cursor:pointer;display:flex;font-size:14px;outline:none;padding:15px;width:100%}.tyk-accordion__item-header>button .tyk-icon,.tyk-accordion__trigger .tyk-icon{margin-left:auto}.tyk-accordion__item{display:grid}.tyk-accordion__item--trigger-position-left{grid-template-columns:40px auto;grid-template-areas:"trigger header" "trigger content"}.tyk-accordion__item--trigger-position-right{grid-template-columns:auto 40px;grid-template-areas:"header trigger" "content trigger"}.tyk-accordion__item--trigger-in-header{grid-template-columns:auto;grid-template-areas:"header" "content"}.tyk-accordion__trigger-wrapper{grid-area:trigger;display:flex;align-items:flex-start;justify-content:center}.tyk-accordion__trigger-wrapper .tyk-icon{margin-left:auto;margin-right:auto}.tyk-accordion__item-header{grid-area:header}.tyk-accordion__trigger--disabled{color:#e1e1e1}.tyk-accordion__item-header.tyk-accordion__arrow-trigger{align-items:center;display:flex}.tyk-accordion__item-header.tyk-accordion__arrow-trigger>div{flex:1}.tyk-accordion__item-header.tyk-accordion__arrow-trigger>button{margin-left:auto;width:auto}.tyk-accordion__item-content{grid-area:content}:root{--tooltip-max-width: 450px}.tyk-tooltip{display:flex;align-items:center;background-color:#ededf9;border:2px solid #a2a2cc;border-radius:18px;max-width:var(--tooltip-max-width);padding:20px}.tyk-tooltip>.tyk-icon:first-child{width:32px;height:32px;border-radius:50%;color:#fff;background-color:#7a79a1}.tyk-tooltip>.tyk-icon:first-child:before{display:flex;width:100%;height:100%;align-items:center;justify-content:center}.tyk-tooltip>.tyk-icon+.tyk-tooltip__content{margin-left:20px}.tyk-tooltip__content{color:#505071;word-break:break-word;word-wrap:break-word}.tyk-tooltip__content+.tyk-icon{margin-left:20px}.tyk-tooltip>.tyk-icon:last-child{cursor:pointer}.tyk-button{background-color:#0000;border:none;color:#fff;cursor:pointer;display:inline-block;font-family:OpenSans-Bold;text-align:center;text-transform:uppercase;text-decoration:none;transition:all .2s linear;user-select:none;vertical-align:middle;white-space:nowrap;padding:8px 23px;font-size:14px;line-height:22px;border-radius:20px}.tyk-button+.tyk-button,.tyk-button+.tyk-dropdown,.tyk-button+.tyk-toggle{margin-left:10px}.tyk-button span+i{margin-left:10px}.tyk-button i+span{margin-left:10px}.tyk-button.disabled{cursor:not-allowed;opacity:.7}.tyk-button:hover{color:#fff;text-decoration:none}.tyk-button:focus{outline:none}.tyk-button--white{background-color:#fff;color:#36364c;border:2px solid rgba(0,0,0,0)}.tyk-button--white:hover{background-color:#43435b;color:#fff}.tyk-button--primary{background-color:#7a79a1;color:#fff;border:2px solid #7a79a1}.tyk-button--primary:hover{background-color:#505071;color:#fff}.tyk-button--primary-link{background-color:#0000;border:2px solid rgba(0,0,0,0);color:#7a79a1}.tyk-button--primary-link:hover{background-color:#0000;color:#7a79a1;border-color:#7a79a1;text-decoration:underline}.tyk-button--primary-outline{border:2px solid #7a79a1;background-color:#0000;color:#7a79a1}.tyk-button--primary-outline:hover{background-color:#7a79a1;color:#fff}.tyk-button--primary-outline.disabled{color:#7a79a1}.tyk-button--primary-outline.disabled:hover{background-color:#0000;color:#7a79a1}.tyk-button--primary-gradient{border-image:linear-gradient(to right,#A2A2CC,#505071,#A2A2CC) 0 round;background:rgba(0,0,0,0) linear-gradient(to right,#A2A2CC,#505071,#A2A2CC);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-button--primary-gradient:hover,.tyk-button--primary-gradient:active,.tyk-button--primary-gradient:active:focus{border-image:linear-gradient(to right,#A2A2CC,#505071,#A2A2CC) 0 round;background:rgba(0,0,0,0) linear-gradient(to right,#A2A2CC,#505071,#A2A2CC);background-position:100% 0;background-size:200% auto;background-clip:border-box}.tyk-button--primary-gradient:hover.disabled,.tyk-button--primary-gradient:active.disabled,.tyk-button--primary-gradient:active:focus.disabled{border-image:linear-gradient(to right,#A2A2CC,#505071,#A2A2CC) 0 round;background:rgba(0,0,0,0) linear-gradient(to right,#A2A2CC,#505071,#A2A2CC);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-button--success{background-color:#00d9ba;color:#fff;border:2px solid #00d9ba}.tyk-button--success:hover{background-color:#00b798;color:#fff}.tyk-button--success-link{background-color:#0000;border:2px solid rgba(0,0,0,0);color:#00d9ba}.tyk-button--success-link:hover{background-color:#0000;color:#00d9ba;border-color:#00d9ba;text-decoration:underline}.tyk-button--success-outline{border:2px solid #00d9ba;background-color:#0000;color:#00d9ba}.tyk-button--success-outline:hover{background-color:#00d9ba;color:#fff}.tyk-button--success-outline.disabled{color:#00d9ba}.tyk-button--success-outline.disabled:hover{background-color:#0000;color:#00d9ba}.tyk-button--success-gradient{border-image:linear-gradient(to right,#00d9ba,#00B798,#00d9ba) 0 round;background:rgba(0,0,0,0) linear-gradient(to right,#00d9ba,#00B798,#00d9ba);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-button--success-gradient:hover,.tyk-button--success-gradient:active,.tyk-button--success-gradient:active:focus{border-image:linear-gradient(to right,#00d9ba,#00B798,#00d9ba) 0 round;background:rgba(0,0,0,0) linear-gradient(to right,#00d9ba,#00B798,#00d9ba);background-position:100% 0;background-size:200% auto;background-clip:border-box}.tyk-button--success-gradient:hover.disabled,.tyk-button--success-gradient:active.disabled,.tyk-button--success-gradient:active:focus.disabled{border-image:linear-gradient(to right,#00d9ba,#00B798,#00d9ba) 0 round;background:rgba(0,0,0,0) linear-gradient(to right,#00d9ba,#00B798,#00d9ba);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-button--danger{background-color:#ff6c7d;color:#fff;border:2px solid #ff6c7d}.tyk-button--danger:hover{background-color:#ea4766;color:#fff}.tyk-button--danger-link{background-color:#0000;border:2px solid rgba(0,0,0,0);color:#ff6c7d}.tyk-button--danger-link:hover{background-color:#0000;color:#ff6c7d;border-color:#ff6c7d;text-decoration:underline}.tyk-button--danger-outline{border:2px solid #ff6c7d;background-color:#0000;color:#ff6c7d}.tyk-button--danger-outline:hover{background-color:#ff6c7d;color:#fff}.tyk-button--danger-outline.disabled{color:#ff6c7d}.tyk-button--danger-outline.disabled:hover{background-color:#0000;color:#ff6c7d}.tyk-button--danger-gradient{border-image:linear-gradient(to right,#FF6C7D,#EA4766,#FF6C7D) 0 round;background:rgba(0,0,0,0) linear-gradient(to right,#FF6C7D,#EA4766,#FF6C7D);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-button--danger-gradient:hover,.tyk-button--danger-gradient:active,.tyk-button--danger-gradient:active:focus{border-image:linear-gradient(to right,#FF6C7D,#EA4766,#FF6C7D) 0 round;background:rgba(0,0,0,0) linear-gradient(to right,#FF6C7D,#EA4766,#FF6C7D);background-position:100% 0;background-size:200% auto;background-clip:border-box}.tyk-button--danger-gradient:hover.disabled,.tyk-button--danger-gradient:active.disabled,.tyk-button--danger-gradient:active:focus.disabled{border-image:linear-gradient(to right,#FF6C7D,#EA4766,#FF6C7D) 0 round;background:rgba(0,0,0,0) linear-gradient(to right,#FF6C7D,#EA4766,#FF6C7D);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-button--warning{background-color:#d6b218;color:#fff;border:2px solid rgba(0,0,0,0)}.tyk-button--warning:hover{background-color:#b49514;color:#fff}.tyk-button--warning-link{background-color:#0000;border:2px solid rgba(0,0,0,0);color:#d6b218}.tyk-button--warning-link:hover{background-color:#0000;color:#d6b218;border-color:#d6b218;text-decoration:underline}.tyk-button--warning-outline{border:2px solid #d6b218;background-color:#0000;color:#d6b218}.tyk-button--warning-outline:hover{background-color:#d6b218;color:#fff}.tyk-button--warning-outline.disabled{color:#d6b218}.tyk-button--warning-outline.disabled:hover{background-color:#0000;color:#d6b218}.tyk-button--warning-gradient{border-image:linear-gradient(to right,#D6B218,#FFE885,#D6B218) 0 round;background:rgba(0,0,0,0) linear-gradient(to right,#D6B218,#FFE885,#D6B218);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-button--warning-gradient:hover,.tyk-button--warning-gradient:active,.tyk-button--warning-gradient:active:focus{border-image:linear-gradient(to right,#D6B218,#FFE885,#D6B218) 0 round;background:rgba(0,0,0,0) linear-gradient(to right,#D6B218,#FFE885,#D6B218);background-position:100% 0;background-size:200% auto;background-clip:border-box}.tyk-button--warning-gradient:hover.disabled,.tyk-button--warning-gradient:active.disabled,.tyk-button--warning-gradient:active:focus.disabled{border-image:linear-gradient(to right,#D6B218,#FFE885,#D6B218) 0 round;background:rgba(0,0,0,0) linear-gradient(to right,#D6B218,#FFE885,#D6B218);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-button--info{background-color:#82bbc6;color:#fff;border:2px solid #82bbc6}.tyk-button--info:hover{background-color:#68adba;color:#fff}.tyk-button--info-link{background-color:#0000;border:2px solid rgba(0,0,0,0);color:#82bbc6}.tyk-button--info-link:hover{background-color:#0000;color:#82bbc6;border-color:#82bbc6;text-decoration:underline}.tyk-button--info-outline{border:2px solid #82bbc6;background-color:#0000;color:#82bbc6}.tyk-button--info-outline:hover{background-color:#82bbc6;color:#fff}.tyk-button--info-outline.disabled{color:#82bbc6}.tyk-button--info-outline.disabled:hover{background-color:#0000;color:#82bbc6}.tyk-button--info-gradient{border-image:linear-gradient(to right,#82BBC6,#D3EBEF,#82BBC6) 0 round;background:rgba(0,0,0,0) linear-gradient(to right,#82BBC6,#D3EBEF,#82BBC6);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#505071}.tyk-button--info-gradient:hover,.tyk-button--info-gradient:active,.tyk-button--info-gradient:active:focus{border-image:linear-gradient(to right,#82BBC6,#D3EBEF,#82BBC6) 0 round;background:rgba(0,0,0,0) linear-gradient(to right,#82BBC6,#D3EBEF,#82BBC6);background-position:100% 0;background-size:200% auto;background-clip:border-box}.tyk-button--info-gradient:hover.disabled,.tyk-button--info-gradient:active.disabled,.tyk-button--info-gradient:active:focus.disabled{border-image:linear-gradient(to right,#82BBC6,#D3EBEF,#82BBC6) 0 round;background:rgba(0,0,0,0) linear-gradient(to right,#82BBC6,#D3EBEF,#82BBC6);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#505071}.tyk-button--default{background-color:#36364c;color:#fff;border:2px solid #36364c}.tyk-button--default:hover{background-color:#505071;color:#fff}.tyk-button--default-link{background-color:#0000;border:2px solid rgba(0,0,0,0);color:#505071}.tyk-button--default-link:hover{background-color:#0000;color:#505071;border-color:#505071;text-decoration:underline}.tyk-button--default-outline{border:2px solid #36364c;background-color:#0000;color:#36364c}.tyk-button--default-outline:hover{background-color:#36364c;color:#fff}.tyk-button--default-outline.disabled{color:#36364c}.tyk-button--default-outline.disabled:hover{background-color:#0000;color:#36364c}.tyk-button--default-gradient{border-image:linear-gradient(to right,#36364C,#505071,#36364C) 0 round;background:rgba(0,0,0,0) linear-gradient(to right,#36364C,#505071,#36364C);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-button--default-gradient:hover,.tyk-button--default-gradient:active,.tyk-button--default-gradient:active:focus{border-image:linear-gradient(to right,#36364C,#505071,#36364C) 0 round;background:rgba(0,0,0,0) linear-gradient(to right,#36364C,#505071,#36364C);background-position:100% 0;background-size:200% auto;background-clip:border-box}.tyk-button--default-gradient:hover.disabled,.tyk-button--default-gradient:active.disabled,.tyk-button--default-gradient:active:focus.disabled{border-image:linear-gradient(to right,#36364C,#505071,#36364C) 0 round;background:rgba(0,0,0,0) linear-gradient(to right,#36364C,#505071,#36364C);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-button--sm{padding:3px 15px;font-size:12px;line-height:16px;border-radius:20px}.tyk-button--md{padding:8px 23px;font-size:14px;line-height:19px;border-radius:20px}.tyk-button--lg{padding:13px 23px;font-size:16px;line-height:22px;border-radius:20px}.tyk-button--icon-only{border-radius:18px;padding:0;line-height:20px;width:24px}.tyk-button--icon-only:hover{border-radius:18px}.tyk-button--fit{height:auto;width:auto;line-height:normal}.tyk-button--no-style,.tyk-button--no-style:hover{background:rgba(0,0,0,0);border:none;color:#505071}.tyk-button-group__wrapper{display:inline-block;position:relative;vertical-align:middle}.tyk-button-group__wrapper label{font-family:OpenSans-SemiBold}.tyk-button-group__wrapper .tyk-button-group{display:flex}.tyk-button-group__wrapper .tyk-button-group>.tyk-button-group:not(:first-child)>.tyk-button{border-top-left-radius:0;border-bottom-left-radius:0}.tyk-button-group__wrapper .tyk-button-group>.tyk-button-group:not(:last-child)>.tyk-button{border-top-right-radius:0;border-bottom-right-radius:0}.tyk-button-group__wrapper .tyk-button-group .tyk-button{border-radius:0}.tyk-button-group__wrapper .tyk-button-group .tyk-button+.tyk-button{margin-left:0}.tyk-button-group__wrapper .tyk-button-group .tyk-button+.tyk-dropdown{margin-left:0}.tyk-button-group__wrapper .tyk-button-group .tyk-button:first-child{border-top-left-radius:20px;border-bottom-left-radius:20px}.tyk-button-group__wrapper .tyk-button-group .tyk-button:last-child{border-top-right-radius:20px;border-bottom-right-radius:20px}.tyk-chart__wrapper{position:relative}.tyk-chart--no-data,.tyk-chart--loading-chart{filter:blur(10px);-webkit-filter:blur(10px)}.collapse-exit,.collapse-exit-active,.collapse-exit-done{height:0px}.collapse-wrapper{overflow:hidden;transition:all .2s}.collapse-horizontal-exit,.collapse-horizontal-exit-active,.collapse-horizontal-exit-done{width:0px}.collapse-horizontal-enter,.collapse-horizontal-enter-active,.collapse-horizontal-enter-done{width:100%}.tyk-copy-to-clipboard{position:absolute;left:-1000px;top:-1000px}.tyk-fixed-wrapper{left:0;position:sticky;right:0;top:0;z-index:8}.tyk-fixed-wrapper--scrolled{box-shadow:2px 2px 5px #0000001a}.tyk-icon+.tyk-icon{margin-left:10px}.tyk-infinite-scroller{height:100%;overflow:hidden;position:relative}.tyk-infinite-scroller .loading{background:linear-gradient(180deg,rgba(255,255,255,0),rgb(255,255,255));justify-content:center;display:flex;inset:auto 0 0;padding:15px 0;width:100%}.tyk-infinite-scroller__wrapper{height:100%;overflow-y:auto}.tyk-info-note{border-radius:0;position:relative}.tyk-info-note p+p{margin-top:15px}.tyk-info-note:after{content:"";border-style:solid;border-width:0 20px 20px 0;border-color:rgba(0,0,0,0) #82bbc6 rgba(0,0,0,0) rgba(0,0,0,0);height:0;position:absolute;right:0;top:0;width:0}.tyk-info-note .tyk-message{border-radius:0;padding-top:40px;padding-bottom:40px}.tyk-loading__wrapper{background:rgba(255,255,255,.6);position:absolute;inset:0;z-index:99}.loader-wrapper{min-height:100px;position:relative}.loading{position:absolute;top:calc(50% - 10px);left:50%}.loading.relative{left:auto;padding:25px;position:relative;text-align:center;top:auto;width:100%}.loading-bar{display:inline-block;width:4px;height:20px;border-radius:4px;animation:loading 1s ease-in-out infinite;margin-left:2px}.loading-bar:nth-child(1){animation-delay:0;background-color:#00d9ba;opacity:1}.loading-bar:nth-child(2){animation-delay:.09s;background-color:#00d9ba;opacity:.8}.loading-bar:nth-child(3){animation-delay:.18s;background-color:#00d9ba;opacity:.6}.loading-bar:nth-child(4){animation-delay:.27s;background-color:#00d9ba;opacity:.4}@keyframes loading{0%{transform:scale(1)}20%{transform:scaleY(2.2)}40%{transform:scale(1)}}.tyk-list{border:2px solid #c3c3e5;border-radius:18px;font-size:14px;list-style-type:none;margin:0;max-height:191px;padding:0;overflow:auto}.tyk-list--with-inline-label{display:flex}.tyk-list--with-inline-label>label{margin-right:20px}.tyk-list li{border-bottom:1px solid #c3c3e5;padding:10px 20px;font-family:OpenSans-SemiBold}.tyk-list li:last-child{border:none}.tyk-list--default{border-color:#c3c3e5}.tyk-list--primary{border-color:#a2a2cc}.tyk-list--primary li{border-color:#ededf9;color:#505071}.tyk-list--primary-light{border-color:#ededf9}.tyk-list--primary-light li{border-color:#ededf9;color:#505071}.tyk-list--success{border-color:#00d9ba;color:#00d9ba}.tyk-list--success li{border-color:#00d9ba}.tyk-list--danger{border-color:#ff6c7d;color:#505071}.tyk-list--danger li{border-color:#ffbbc5}ul.tyk-list--inline{align-items:center;display:flex}ul.tyk-list--inline li{padding:0 10px}ul.tyk-list--inline.tyk-list--with-separator li:not(:first-child){border-left:1px solid #36364c}.tyk-message{display:flex;align-items:center;border-radius:18px;margin-bottom:20px;padding:20px}.tyk-message__content{flex-grow:1;margin-left:20px;margin-right:20px}.tyk-message>.tyk-icon:first-child{width:32px;height:32px;flex-shrink:0;border-radius:50%;color:#fff}.tyk-message>.tyk-icon:first-child:before{display:flex;width:100%;height:100%;align-items:center;justify-content:center}.tyk-message>.tyk-icon:last-child{cursor:pointer}.tyk-message--default{background-color:#ededf9;border:2px solid #505071;color:#505071}.tyk-message--default>.tyk-icon:first-child{background-color:#505071}.tyk-message--default>.tyk-icon:first-child{transform:rotate(180deg)}.tyk-message--info{background-color:#d3ebef;border:2px solid #82bbc6;color:#82bbc6}.tyk-message--info>.tyk-icon:first-child{background-color:#82bbc6}.tyk-message--success{background-color:#c2f2e9;border:2px solid #00b798;color:#00b798}.tyk-message--success>.tyk-icon:first-child{background-color:#00b798}.tyk-message--warning{background-color:#ffe885;border:2px solid #d6b218;color:#c58c11}.tyk-message--warning>.tyk-icon:first-child{background-color:#d6b218}.tyk-message--danger{background-color:#f5ccd1;border:2px solid #ff6c7d;color:#ea4766}.tyk-message--danger>.tyk-icon:first-child{background-color:#ff6c7d}.tyk-modal{--theme-header-height: 15px;--theme-header-icon-size: 65px;align-items:center;inset:0;pointer-events:none;position:fixed;z-index:-1}.tyk-modal .tyk-panel{border:2px solid #43435b;box-shadow:none;-webkit-box-shadow:none}.tyk-modal .tyk-modal__dialog{opacity:0;transition:all .2s ease}.tyk-modal.opened{display:flex;z-index:1080}.tyk-modal.opened .tyk-modal__dialog{display:flex;max-height:92vh;opacity:1;pointer-events:all}.tyk-modal.appear-enter-done .tyk-modal__dialog{opacity:1;margin-top:0}.tyk-modal__theme-header{position:absolute;top:-1px;left:0;right:0;height:var(--theme-header-height);border-top-left-radius:18px;border-top-right-radius:18px}.tyk-modal__theme-header .tyk-icon{position:absolute;left:calc(50% - var(--theme-header-icon-size)/2);top:calc((var(--theme-header-icon-size) - var(--theme-header-height))/-2);width:var(--theme-header-icon-size);height:var(--theme-header-icon-size);border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:25px;color:#fff}.tyk-modal--theme-success .tyk-modal__theme-header,.tyk-modal--theme-success .tyk-modal__theme-header .tyk-icon{background-color:#00d9ba}.tyk-modal--theme-warning .tyk-modal__theme-header,.tyk-modal--theme-warning .tyk-modal__theme-header .tyk-icon{background-color:#d6b218}.tyk-modal--theme-danger .tyk-modal__theme-header,.tyk-modal--theme-danger .tyk-modal__theme-header .tyk-icon{background-color:#ff6c7d}.tyk-modal__dialog{opacity:0;margin:-5% auto 0;pointer-events:all;transition:all .2s linear;width:85%}@media only screen and (min-width: 768px){.tyk-modal__dialog{width:600px}}@media only screen and (min-width: 768px){.tyk-modal__dialog.tyk-modal--lg{width:800px}}.tyk-modal__content{background:#fff;border-radius:18px;display:flex;flex-direction:column;position:relative;width:100%}.tyk-modal__body{flex:1;overflow:auto;--padding-top: calc(25px + (var(--theme-header-icon-size) - var(--theme-header-height)) / 2);padding:var(--padding-top) 25px 25px}.tyk-modal__body.no-padding{padding:0}.tyk-modal__footer{align-items:center;display:flex;justify-content:flex-end;padding:25px}.tyk-modal__footer>:not(:first-child){margin-left:5px}.tyk-modal__backdrop{background-color:#505071;border:none;display:none;inset:0;position:fixed;width:100%;z-index:1079}.tyk-modal__backdrop.opened{display:block;opacity:.5;transition:opacity .2s ease}.tyk-modal__backdrop.fade-enter-done{opacity:.5}.tyk-modal__header{--padding-top: calc(25px + (var(--theme-header-icon-size) - var(--theme-header-height)) / 2);padding:var(--padding-top) 25px 25px;align-items:center;border-bottom:1px solid #ededf9;display:flex;width:100%}.tyk-modal--theme-none .tyk-modal__header{padding-top:25px}.tyk-modal__header button{margin-left:auto;padding:0 5px}.tyk-modal__header+.tyk-modal__body{padding-top:25px}.tyk-modal__title{font-family:OpenSans-SemiBold;font-weight:500;margin:0;width:100%}.tyk-navigation{background-color:#fff;height:100%;overflow:auto;padding:0;width:100%}.tyk-navigation .tyk-navigation-item{width:100%}.tyk-navigation .tyk-navigation-item a{color:#505071;display:flex;padding:10px 20px;text-decoration:none;transition:all .2s ease}.tyk-navigation .tyk-navigation-item a:hover{background-color:#a2a2cc;color:#fff}.tyk-navigation .tyk-navigation-item a.active{background-color:#505071;color:#fff}.tyk-nav-bar{align-items:center;border:none;background-color:#fff;font-family:OpenSans-regular;color:#36364c;margin:0;padding:0 20px;width:100%;z-index:8;transition:all .2s linear}.tyk-nav-bar__pre{align-self:flex-end;color:#505071;flex-basis:100%}.tyk-nav-bar__pre a{font-family:OpenSans-Bold;font-size:12px;line-height:16px;color:#505071}.tyk-nav-bar.tyk-nav-bar__with-tabs .tyk-tabs--default>ul li button{padding-top:0}@media screen and (max-width: 1024px){.tyk-nav-bar{padding-left:20px}.menu-opened .tyk-nav-bar{transform:translate(245px)}}.tyk-nav-bar h1{color:#36364c}.tyk-nav-bar h4{margin:0}.tyk-nav-bar .tyk-nav-bar__wrapper{align-items:center;padding-bottom:0;display:flex;flex-wrap:wrap;height:92px}.tyk-nav-bar .tyk-nav-bar__wrapper.tyk-nav-bar--align-top{align-items:flex-start}@media screen and (max-width: 1024px){.tyk-nav-bar .tyk-nav-bar__wrapper{padding-left:0}}.tyk-nav-bar .tyk-nav-bar__wrapper h1{font-size:25px;font-family:smoolthan_bold;line-height:30px;margin:0;padding-right:10px}.tyk-nav-bar .tyk-nav-bar__wrapper h4{padding-right:10px}.tyk-nav-bar .tyk-nav-bar__wrapper .tyk-nav-bar__container{align-items:center;display:flex;flex-grow:1;justify-content:space-between}.tyk-nav-bar .tyk-nav-bar__wrapper .tyk-nav-bar__left{flex-grow:1}.tyk-nav-bar .tyk-nav-bar__wrapper .tyk-nav-bar__right{margin-left:auto}.tyk-panel{background:#fff;border-radius:0;margin-bottom:20px;font-family:OpenSans-SemiBold;position:relative}.tyk-panel.has-error,.tyk-panel .tyk-panel.has-error{border:2px solid #ff6c7d}.tyk-panel__header{align-items:center;border-bottom:1px solid #e1e1e1;display:flex;font-family:OpenSans-regular}.tyk-panel__header>.tyk-icon,.tyk-panel__header>.tyk-tooltip__wrapper{margin-left:5px}.tyk-panel .tyk-panel{border:2px solid #c3c3e5;box-shadow:none;-webkit-box-shadow:none}.tyk-panel--blank.tyk-panel--collapsed{margin-bottom:20px}.tyk-panel--blank.tyk-panel--collapsed .tyk-panel__header{margin-bottom:0}.tyk-panel--blank .tyk-panel__header{margin-bottom:-20px;padding:20px 25px;background-color:#fff;border:none;color:#36364c;font-size:17px;line-height:23px}.tyk-panel--primary{background-color:#0000}.tyk-panel--primary .tyk-panel__header{background-color:#a2a2cc;border:none;color:#fff;font-size:17px;line-height:23px}.tyk-panel--primary .tyk-panel__body{background-color:#fff;border:none;color:#505071;font-size:17px;line-height:23px}.tyk-panel--primary .tyk-panel__header{border:none}.tyk-panel--primary .tyk-form-group label,.tyk-panel--primary .tyk-toggle .tyk-toggle__label{color:#505071}.tyk-panel--success .tyk-panel__header{background-color:#00d9ba;border:none;color:#fff;font-size:17px;line-height:23px}.tyk-panel--danger .tyk-panel__header{background-color:#ff6c7d;border:none;color:#fff;font-size:17px;line-height:23px}.tyk-panel--warning .tyk-panel__header{background-color:#d6b218;border:none;color:#fff;font-size:17px;line-height:23px}.tyk-panel__body{background-color:#fff;border-radius:0;font-family:OpenSans-regular;padding:25px;position:relative;transition:height .2s}.tyk-panel__body~.tyk-panel__header{border-bottom-left-radius:0;border-bottom-right-radius:0}.tyk-panel__body.no-padding{padding:0}.tyk-panel__header{border-radius:0;font-family:OpenSans-SemiBold;overflow:hidden;padding:10px 25px;position:relative}.tyk-panel--collapsed .tyk-panel__header{border-bottom-left-radius:0;border-bottom-right-radius:0}.tyk-panel__header~.tyk-panel__body{border-top-left-radius:0;border-top-right-radius:0}.tyk-panel__headerh3{margin:0}.tyk-panel__header ng-transclude{vertical-align:middle}.tyk-panel__header.collapsable{cursor:pointer}.tyk-panel__icon-collapse--right .tyk-panel__header.collapsable{padding-right:48px}.tyk-panel__icon-collapse--left .tyk-panel__header.collapsable{padding-left:48px}.tyk-panel__header .collapsable__arrow-right{font-size:14px;position:absolute;padding:10px;right:10px;top:calc(50% - 21px)}.tyk-panel__header .collapsable__arrow-left{font-size:14px;position:absolute;padding:8px 0 10px 20px;left:0;top:calc(50% - 21px)}.tyk-panel__footer{align-items:center;border-top:1px solid #ededf9;display:flex;justify-content:flex-end;padding:25px}.tyk-panel__footer>:not(:first-child){margin-left:5px}.tyk-pill{align-items:center;border-radius:18px;display:inline-flex;font-size:12px;line-height:19px;margin:0 0 10px;padding:6px 15px;font-family:OpenSans-SemiBold}.tyk-pill--square{border-radius:8px}.tyk-pill i{font-size:12px}.tyk-pill+.tyk-pill{margin-right:10px}.tyk-pill button+span{margin-left:10px}.tyk-pill span+button{margin-left:10px}.tyk-pill:first-child{margin-right:10px}.tyk-pill:last-child{margin-right:0}.tyk-pill--default{background-color:#36364c;color:#fff}.tyk-pill--default i{color:#fff}.tyk-pill--default-outline{box-shadow:inset 0 0 0 2px #36364c;color:#505071}.tyk-pill--default-outline i{color:#505071}.tyk-pill--primary{background-color:#a2a2cc;color:#fff}.tyk-pill--primary i{color:#fff}.tyk-pill--primary-outline{box-shadow:inset 0 0 0 2px #a2a2cc;color:#505071}.tyk-pill--primary-outline i{color:#505071}.tyk-pill--success{background-color:#00d9ba;color:#fff}.tyk-pill--success i{color:#fff}.tyk-pill--success-outline{box-shadow:inset 0 0 0 2px #00d9ba;color:#505071}.tyk-pill--success-outline i{color:#505071}.tyk-pill--danger{background-color:#ff6c7d;color:#fff}.tyk-pill--danger i{color:#fff}.tyk-pill--danger-outline{box-shadow:inset 0 0 0 2px #ff6c7d;color:#505071}.tyk-pill--danger-outline i{color:#505071}.tyk-pill--warning{background-color:#d6b218;color:#fff}.tyk-pill--warning i{color:#fff}.tyk-pill--warning-outline{box-shadow:inset 0 0 0 2px #d6b218;color:#505071}.tyk-pill--warning-outline i{color:#505071}.tyk-pill--info{background-color:#82bbc6;color:#fff}.tyk-pill--info i{color:#fff}.tyk-pill--info-outline{box-shadow:inset 0 0 0 2px #82bbc6;color:#505071}.tyk-pill--info-outline i{color:#505071}.tyk-ui-reveal-wrapper{display:flex;flex-direction:column;justify-content:flex-end;align-items:stretch;width:100%;height:100%;z-index:1000;position:absolute;bottom:0;left:0;pointer-events:none}.tyk-ui-reveal-wrapper__panel{max-height:calc(100% - 2rem);background-color:#fff;padding:0;margin:0;overflow-y:auto;display:flex;flex-direction:column;pointer-events:all;flex-shrink:0;overflow:auto}.tyk-ui-reveal-wrapper__hole{flex-grow:1;opacity:0;width:100%;background-color:green;-webkit-user-select:none;user-select:none;pointer-events:none;z-index:-1}.tyk-ui-reveal-wrapper__gutter{height:2rem;width:100%;cursor:row-resize;display:flex;background-color:#a2a2cc;z-index:2;pointer-events:all;justify-content:space-between;align-items:stretch;position:relative;box-shadow:0 5px 10px #0000004d}.tyk-ui-reveal-wrapper__gutter__headerleft,.tyk-ui-reveal-wrapper__gutter__headerright{display:flex;align-items:center;flex:1}.tyk-ui-reveal-wrapper__gutter__headerleft{justify-content:flex-start}.tyk-ui-reveal-wrapper__gutter__headerright{justify-content:flex-end}.tyk-ui-reveal-wrapper__gutter__logo{width:1rem;height:1rem;-webkit-user-select:none;user-select:none;pointer-events:none;padding:.2rem;z-index:2;background-image:url(images/drag.svg);align-self:center}.tyk-ui-reveal-wrapper__gutter__logo:hover{border:dashed}.tyk-sidebar{background-color:#fff;height:calc(100vh - 58px);flex:0 0 280px;padding:0;position:-webkit-sticky;position:sticky;overflow:auto;top:58px}.tyk-table{border-collapse:collapse;border-spacing:0;background-color:#fff;border-radius:18px;width:100%}.tyk-table__wrapper{border:2px solid #c3c3e5;border-radius:18px;overflow:auto}.tyk-table__wrapper--no-border{border:none}.tyk-table__wrapper.no-innner-horizontal-borders .tyk-table>thead th,.tyk-table__wrapper.no-innner-horizontal-borders .tyk-table>tbody td{border-right:none}.tyk-table>thead th{border-right:1px solid #c3c3e5;color:#505071;font-size:14px;line-height:19px;font-family:OpenSans-Bold;text-transform:uppercase}.tyk-table>thead th:last-child{border-right:none}.tyk-table>thead th i{font-size:12px}.tyk-table>thead th .tyk-button{background:none;color:#36364c;padding:0}.tyk-table>thead th{padding:15px 10px}.tyk-table>tbody tr:hover{background:rgba(237,237,249,.4)}.tyk-table>tbody td{border-right:1px solid #c3c3e5;font-size:14px;line-height:19px;font-family:OpenSans-regular;padding:5px 10px;vertical-align:middle}.tyk-table>tbody td:last-child{border-right:none}.tyk-table>tbody td.fit{white-space:nowrap;width:1%}.tyk-table>tbody td input:not([type=checkbox]):not([type=radio]){margin-top:15px}.tyk-table>tbody td a{color:#505071;font-family:OpenSans-SemiBold}.tyk-table>tbody td label{margin:0}.tyk-table>tbody td input[type=checkbox]{margin:0}.tyk-table tbody>tr{border-top:1px solid #c3c3e5;transition:all .4s linear;border-radius:18px}.tyk-table tbody>tr.clickable{cursor:pointer}.tyk-table>tbody tr td:first-child,.tyk-table>thead tr th:first-child{padding-left:20px}.tyk-table>tbody tr td:first-child.with-icon,.tyk-table>thead tr th:first-child.with-icon{padding-left:15px}.tyk-table>tbody tr td:last-child,.tyk-table>thead tr th:last-child{padding-right:20px}.tyk-table>tbody tr td:last-child.with-icon,.tyk-table>thead tr th:last-child.with-icon{padding-right:15px}.tyk-table .tyk-pagination{padding:20px 25px}.tyk-table .tyk-pagination li:first-child{margin-left:auto}.tyk-table .nowrap{white-space:nowrap}.tyk-table .wrap{word-break:break-all}.tyk-table-search{padding:10px 25px 0}.tyk-table-search label{font-size:14px;text-transform:uppercase}.header-sort{padding-left:3px;padding-top:5px;vertical-align:middle}.new-table-pagination{float:right}.selectable>div{margin-left:20px}.scrollable{display:block;overflow:auto}.fixed-header{background:#fff;position:sticky;top:0}.tyk-table.has-error,.tyk-table__wrapper.has-error{border:2px solid #ff6c7d!important}.tyk-tabs--default>ul{display:flex;list-style-type:none;margin:0;padding:0;overflow:auto}.tyk-tabs--default>ul li{display:flex;white-space:nowrap;margin-right:0}.tyk-tabs--default>ul li:last-child{margin-right:0}.tyk-tabs--default>ul li.active button,.tyk-tabs--default>ul li button:hover{border-bottom-color:#00d9ba;color:#505071;opacity:1}.tyk-tabs--default>ul li button{background:none;border:none;border-bottom:4px solid rgba(0,0,0,0);color:#505071;cursor:pointer;font-size:14px;font-family:OpenSans-SemiBold;padding:10px 2px 3px;margin-right:20px;transition:all .2s linear;opacity:.7}.tyk-tabs--default>ul li button:focus{outline:none}.tyk-tab__content{padding:25px}.tyk-toast__container{bottom:0;min-width:300px;position:fixed;right:20px;z-index:11}.tyk-toast__message{position:relative}.tyk-toast-message__button{color:#505071;height:20px;line-height:1;padding:5px;position:absolute;right:5px;top:5px;width:20px}.tyk-toast-message__button:hover{background:rgba(255,255,255,.3);color:#505071}.floating-container{position:fixed;top:-9999px;overflow:auto;z-index:1080}.tyk-combobox2{outline:none}.tyk-combobox2.disabled .tyk-form-control{border:2px solid #c3c3e5!important;background-color:#ededf9;color:#505071;cursor:not-allowed}.tyk-combobox2.disabled .tyk-combobox2__current-values .tyk-pill--combobox button{cursor:not-allowed}.tyk-combobox2.disabled:not(.is-expand-mode) .tyk-combobox2__values-container-trigger{cursor:not-allowed}.tyk-combobox2.disabled .tyk-combobox2__entry-field{background-color:#0000;cursor:not-allowed}.tyk-combobox2 .tyk-form-control{display:flex;flex-direction:row;position:relative;min-height:40px;height:auto;padding:0}.tyk-combobox2 .tyk-form-control:focus-within{outline:none;border:2px solid #00d9ba}.tyk-combobox2__current-values{display:flex;flex-grow:1;flex-wrap:wrap;padding-top:2px;padding-bottom:2px;padding-left:10px;max-width:calc(100% - 40px)}.tyk-combobox2__current-values.expand-mode{max-height:1000px;overflow:hidden;transition:max-height 1s ease}.tyk-combobox2__current-values--collapsed.expand-mode{max-height:38px;transition:max-height .2s ease}.tyk-combobox2__current-values .tyk-pill--combobox{margin-top:3px;margin-bottom:3px;background-color:#f0f0f0;border-radius:10px;color:#505071;padding:5px 10px;max-width:100%;max-height:26px}.tyk-combobox2__current-values .tyk-pill--combobox button{background:none;border:none;cursor:pointer;width:23px;outline:none}.tyk-combobox2__current-values .tyk-pill--combobox button+span{margin-left:0}.tyk-combobox2__current-values .tyk-pill--combobox span{overflow:hidden;text-overflow:ellipsis}.tyk-combobox2__current-values .tyk-pill--combobox i{margin-right:5px}.tyk-combobox2__entry-field{border:none;line-height:30px}.tyk-combobox2__entry-field:focus,.tyk-combobox2__entry-field:active{border:none;outline:none}.tyk-combobox2__entry-field::placeholder{color:#a2a2cc;font-family:OpenSans-SemiBold}.tyk-combobox2__text-value{font-family:OpenSans-SemiBold;font-size:14px;line-height:19px;padding:9px 5px;width:100%;overflow:hidden;text-overflow:ellipsis;line-height:1;outline:none}.tyk-combobox2__text-value.overflow-single{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tyk-combobox2__text-value.is-placeholder{color:#a2a2cc;font-family:OpenSans-SemiBold}.tyk-combobox2__values-container-trigger{position:relative;flex-basis:40px;display:flex;justify-content:center;align-items:center;cursor:pointer;outline:none;transition:all .2s}.tyk-combobox2__values-container-trigger--expanded{transform:rotate(180deg)}.tyk-combobox2__values-container-trigger .tyk-icon{height:14px}.tyk-form-group--rounded-corners .tyk-combobox2-disabled-overlay{border-radius:16px}.tyk-combobox2__combobox-dropdown{display:flex;flex-direction:column;border:2px solid #c3c3e5;background-color:#fff}.tyk-combobox2__combobox-dropdown.tyk-form-group--rounded-corners{border-radius:18px}.tyk-combobox2__combobox-dropdown .tyk-combobox2__combobox-search{background-color:#fff;position:sticky;top:0;padding:10px 20px}.tyk-combobox2__combobox-dropdown .tyk-combobox2__combobox-search+.combobox-list{border-top:1px solid #c3c3e5}.tyk-combobox2__combobox-dropdown .tyk-combobox2__combobox-list{max-height:255px}.tyk-combobox2__combobox-dropdown .tyk-combobox2__combobox-list li{display:flex;cursor:pointer;padding:9px 20px;transition:all .2s;font-family:OpenSans-SemiBold}.tyk-combobox2__combobox-dropdown .tyk-combobox2__combobox-list li:hover,.tyk-combobox2__combobox-dropdown .tyk-combobox2__combobox-list li.active{background-color:#ededf9}.tyk-combobox2__combobox-dropdown .tyk-combobox2__combobox-list li.disabled{color:#c3c3e5;background-color:initial}.tyk-combobox2__combobox-dropdown .tyk-combobox2__combobox-list li+li{border-top:1px solid #c3c3e5}.tyk-combobox2__combobox-dropdown .tyk-combobox2__combobox-list li i{margin-right:5px}.tyk-combobox2__combobox-dropdown .tyk-combobox2__combobox-list li .item-name{overflow:hidden;text-overflow:ellipsis;line-height:16px}.tyk-combobox2__values-container-trigger{color:#505071}.tyk-combobox2__combobox-dropdown.tyk-form-group--rounded-corners{z-index:1081}.tyk-checkbox label{display:flex;align-items:flex-start;padding-left:20px}.tyk-checkbox label input{margin-left:-20px;margin-top:5px}.tyk-checkbox--theme-light label,.tyk-checkbox--theme-light.tyk-checkbox--is-disabled label{color:#fff}.tyk-checkbox--is-disabled label,.tyk-checkbox--is-disabled p{cursor:not-allowed;opacity:.5}.flatpickr-day.selected,.flatpickr-day.startRange,.flatpickr-day.endRange,.flatpickr-day.selected.inRange,.flatpickr-day.startRange.inRange,.flatpickr-day.endRange.inRange,.flatpickr-day.selected:focus,.flatpickr-day.startRange:focus,.flatpickr-day.endRange:focus,.flatpickr-day.selected:hover,.flatpickr-day.startRange:hover,.flatpickr-day.endRange:hover,.flatpickr-day.selected.prevMonthDay,.flatpickr-day.startRange.prevMonthDay,.flatpickr-day.endRange.prevMonthDay,.flatpickr-day.selected.nextMonthDay,.flatpickr-day.startRange.nextMonthDay,.flatpickr-day.endRange.nextMonthDay{background:#00d9ba!important;border-color:#00d9ba!important}.tyk-dropdown{display:inline-block}.tyk-dropdown+.tyk-button,.tyk-dropdown+.tyk-dropdown,.tyk-dropdown+.tyk-toggle{margin-left:10px}.tyk-dropdown--block{left:20px;right:20px}.tyk-dropdown--relative{left:auto;right:auto}.tyk-dropdown--custom{padding:20px 25px}.tyk-dropdown label{display:block}.tyk-dropdown__trigger{position:relative}.tyk-dropdown.theme-list .tyk-button{background:#fff;border:2px solid #36364c;border-radius:18px;color:#505071}.tyk-dropdown.theme-list .tyk-button:hover,.tyk-dropdown.theme-list .tyk-button:active,.tyk-dropdown.theme-list .tyk-button:active:focus,.tyk-dropdown.theme-list .tyk-button:focus{background:#fff;border-color:#43435b;color:#505071}.tyk-dropdown-menu{background:#fff;border:2px solid #c3c3e5;border-radius:18px;-webkit-filter:drop-shadow(1px 2px 1px rgba(0,0,0,.1));filter:drop-shadow(1px 2px 1px rgba(0,0,0,.1));list-style-type:none;margin:3px 0 0;overflow:hidden;padding:0;z-index:1081}.tyk-dropdown-menu.tyk-dropdown--scrollable{overflow:auto}.tyk-dropdown-menu .tyk-panel{margin:0}.tyk-dropdown-menu.opened{display:flex;flex-direction:column;position:absolute}.tyk-dropdown-menu>li{background:#fff;border-bottom:1px solid #fff;display:flex;position:relative;z-index:7}.tyk-dropdown-menu>li:last-child{border:none}.tyk-dropdown-menu>li i{left:7px;position:absolute;top:9px}.tyk-dropdown-menu>li>a{cursor:pointer;color:#505071;display:flex;font-size:12px;padding:7px 24px;text-transform:uppercase;text-decoration:none;width:100%}.tyk-dropdown-menu>li>a:hover{color:#505071}.tyk-dropdown-menu>li>a .badge{background:#505071;color:#fff;font-size:10px;margin-top:-4px;margin-left:6px}.tyk-dropdown-menu>li>a:hover{background-color:#ededf9;text-decoration:none}.tyk-dropdown--relative.opened{position:relative}.tyk-editable-list__submit-btn{white-space:nowrap}.tyk-editable-list__form{align-items:center;display:flex}.tyk-editable-list__form .tyk-form-group{margin-bottom:0}.tyk-editable-list__form--sticked{margin-left:0}.tyk-editable-list__form--sticked button{border-radius:0 3px 3px 0/0px 3px 3px 0px;padding:10px 15px 11px}.tyk-editable-list__form span.inline{margin-top:0}.tyk-editable-list__form>span{margin-left:15px}.tyk-editable-list__form>span.inline-with-label{align-self:flex-end}.tyk-editable-list__header{padding-top:15px;border-bottom:1px solid #43435b;color:#505071;font-size:11px;padding-bottom:15px;text-transform:uppercase}.tyk-editable-list__header .tyk-row{margin:0}.tyk-editable-list-items{overflow:hidden;list-style:none;padding:20px 0 0}.tyk-editable-list-items .edit-mode-wrapper.table button{margin-top:23px}.tyk-editable-list-items .tyk-row{margin:0}.tyk-editable-list-items button[disabled]{cursor:not-allowed}.tyk-editable-list-items.tyk-editable-list-items--inline{align-items:center;color:#505071;display:flex;flex-wrap:wrap}.tyk-editable-list-items li{border-top:1px solid #c3c3e5;transition:all .2s linear}.tyk-editable-list-items li.tyk-editable-list-item--inline{background-color:#c3c3e5;border-radius:25px;border:none;color:#fff;float:left;font-family:OpenSans-SemiBold;margin-bottom:10px;margin-right:15px;padding:0 15px;white-space:nowrap}.tyk-editable-list-items li.tyk-editable-list-item--inline .tyk-editable-list-item__text{color:#505071;padding:5px 0}.tyk-editable-list-items li.tyk-editable-list-item--inline .tyk-editable-list-action__button.on-edit{margin-top:0}.tyk-editable-list-items li:first-child{border-top:none}.tyk-editable-list-items li .tyk-editable-list-item__text{display:flex;padding:10px 0}.tyk-editable-list-items li .tyk-editable-list-item__text>span{flex-grow:1}.tyk-editable-list-items li .tyk-editable-list-item__text>div:first-child{flex-grow:1}.tyk-editable-list-items li .tyk-editable-list-item__text>div:first-child .error-message{margin:0}.tyk-editable-list-items li .tyk-editable-list-items{overflow:hidden;padding-bottom:10px}.tyk-editable-list-items li .tyk-editable-list{border-top:5px solid #43435b;background:#ededf9;padding:10px 15px}.tyk-editable-list-items .tyk-editable-list-item__text{display:block;word-wrap:break-word;word-break:break-all}.tyk-editable-list-items .tyk-editable-list-action__button{border:none;background:rgba(0,0,0,0)}.tyk-editable-list-items .tyk-editable-list-action__button.on-edit{margin-left:10px}.tyk-editable-list-items .tyk-editable-list-item-controls{flex-grow:0;text-align:right}.tyk-editable-list-item__controls{text-align:right}.tyk-editable-list-items.table{background-color:#fff;border-radius:18px;border:2px solid #c3c3e5;padding:0!important}.tyk-editable-list-items.table li{border-color:#c3c3e5}.tyk-editable-list-items.table li:hover{background:#ededf9}.tyk-editable-list-items.table .tyk-editable-list-item__text{background:rgba(0,0,0,0)}.tyk-editable-list-items.table .tyk-editable-list-action__button{border-radius:6px;cursor:pointer;margin-right:10px}.tyk-editable-list__header{background-color:#fff;border-top-left-radius:18px;border-top-right-radius:18px;border:2px solid #c3c3e5;border-bottom:1px solid #c3c3e5!important;color:#505071!important;font-family:OpenSans-Bold;margin-top:10px}.tyk-editable-list__header+.tyk-editable-list-items.table{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.editable-list__header{align-items:center;display:flex;margin-bottom:10px}.editable-list__header .tyk-button{margin-left:auto}.editable-list__wrapper.has-error .editable-list__list{border:2px solid #ff6c7d}.editable-list__list{border:2px solid #c3c3e5;border-radius:18px;display:flex;flex-direction:column-reverse}.editable-list__item{border-bottom:1px solid #c3c3e5;display:flex;flex-wrap:nowrap;width:100%}.editable-list__item:first-child{border-bottom:none}.editable-list__item-header{border-bottom:1px solid #c3c3e5;color:#505071;font-size:14px;line-height:19px;font-family:OpenSans-Bold;text-transform:uppercase}.editable-list__item-header .editable-list__item-cell{padding:10px}.editable-list__item-cell{border-left:1px solid #c3c3e5;overflow:hidden;padding:0 10px}.editable-list__item-cell .tyk-form-control--readonly{overflow:hidden;text-overflow:ellipsis;word-break:break-all}.editable-list__item-cell:first-child{border-left:none;padding-left:15px}.editable-list__item-cell:last-child{padding-right:15px}.editable-list__item-cell .tyk-form-group{margin:10px 0;width:100%}.editable-list__item--size-1{display:flex;flex-grow:2;width:8.3333333333%}.editable-list__item--size-2{display:flex;flex-grow:3;width:16.6666666667%}.editable-list__item--size-3{display:flex;flex-grow:4;width:25%}.editable-list__item--size-4{display:flex;flex-grow:5;width:33.3333333333%}.editable-list__item--size-5{display:flex;flex-grow:6;width:41.6666666667%}.editable-list__item--size-6{display:flex;flex-grow:7;width:50%}.editable-list__item--size-7{display:flex;flex-grow:8;width:58.3333333333%}.editable-list__item--size-8{display:flex;flex-grow:9;width:66.6666666667%}.editable-list__item--size-9{display:flex;flex-grow:10;width:75%}.editable-list__item--size-10{display:flex;flex-grow:11;width:83.3333333333%}.editable-list__item--size-11{display:flex;flex-grow:12;width:91.6666666667%}.editable-list__item--size-12{display:flex;flex-grow:13;width:100%}.editable-list__item--size-fit{width:fit-content}.editable-list__item-action{align-items:flex-start;display:flex;justify-content:center;width:100px}.editable-list__item-action .tyk-button{margin-top:20px}.editable-list__item-action--read-only{color:#c3c3e5;align-items:center}.editable-list__item-action--read-only .tyk-button{margin-top:0}.tyk-file-input__wrapper{position:relative}.tyk-file-input__wrapper>input{padding:6px 20px}.tyk-file-input__wrapper>button{background:none;border:none;cursor:pointer;position:absolute;right:15px;top:9px}.tyk-multiselect{align-items:flex-start;border-radius:18px;flex-wrap:wrap;display:flex;margin-bottom:20px;width:100%}.tyk-multiselect .input-group .input-group-addon+.form-control{border-width:1px!important;border-left:none!important;border-radius:0!important}.tyk-multiselect .input-group .input-group-addon{background:rgba(0,0,0,0)!important;border-width:1px!important;border-right:0!important;border-radius:0!important}.tyk-multiselect.has-error{border:2px solid #ff6c7d}.tyk-multiselect__header{background-color:#36364c;border-top-left-radius:18px;border-top-right-radius:18px;color:#fff;display:flex;width:100%}.tyk-multiselect__header>div{padding:10px 15px;width:50%}.tyk-multiselect__panel-wrapper{border:2px solid #c3c3e5;border-top:none;border-bottom-left-radius:18px;border-bottom-right-radius:18px;display:flex;flex:1;height:265px;width:100%}.tyk-multiselect__panel{display:flex;flex-direction:column;margin:0 0 0 -1px;position:relative;width:calc(50% + 1px)}.tyk-multiselect__panel:last-child{border-left:2px solid #c3c3e5}.tyk-multiselect__panel:last-child .tyk-form-group{margin-left:-1px;width:calc(100% + 2px)}.tyk-multiselect__panel .tyk-message{margin:20px 20px 0}.tyk-multiselect__list{list-style-type:none;margin:0;padding:0}.tyk-multiselect__list--scroll{height:100%;overflow-y:auto}.tyk-multiselect__list>li{border-bottom:2px solid #c3c3e5;display:flex;flex-direction:column;padding:10px 15px}.tyk-multiselect__list>li>div{align-items:start;display:flex;width:100%}.tyk-multiselect__list>li .loading{justify-content:center}.tyk-multiselect__list>li:last-child{border-bottom:none}.tyk-multiselect-item__name{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tyk-multiselect .tyk-form-group{margin:0}.tyk-multiselect .tyk-multiselect-item__controls{display:flex;margin-left:auto;flex-wrap:nowrap}.tyk-multiselect .tyk-multiselect-item__controls .tyk-button{color:#505071;margin-left:5px}.tyk-multiselect .tyk-multiselect-item__controls .tyk-button:last-child{margin-left:0}.tyk-pagination{display:flex;list-style-type:none;margin:10px 0;padding:0}.tyk-pagination li{align-items:center;display:flex}.tyk-pagination li:first-child button{border-top-left-radius:18px;border-bottom-left-radius:18px}.tyk-pagination li:last-child button{border-top-right-radius:18px;border-bottom-right-radius:18px}.tyk-pagination span{margin:0 10px}.tyk-pagination button{background:#fff;border:none;font-size:14px;font-family:OpenSans-Bold;cursor:pointer;color:#36364c;margin-left:-1px;padding:10px 15px}.tyk-pagination button:hover{background-color:#c2f2e9}.tyk-pagination .active button{background-color:#00d9ba;color:#fff}.tyk-radio label{align-items:center;display:flex}.tyk-radio--is-disabled label,.tyk-radio--is-disabled p{cursor:not-allowed;opacity:.5}.tyk-radio__description-text{padding:0 0 0 20px}.tyk-select{background:rgba(0,0,0,0) url(images/arrow_down.svg) no-repeat calc(100% - 15px) center;background-size:15px 15px}.tyk-selectable-list{margin-bottom:20px;width:100%}.tyk-selectable-list li:not(.tyk-selectable-list__no-items-message){font-family:OpenSans-SemiBold;padding:0}.tyk-selectable-list li:not(.tyk-selectable-list__no-items-message) .tyk-message{margin-bottom:0}.tyk-selectable-list li:not(.tyk-selectable-list__no-items-message) label{font-family:OpenSans-SemiBold;margin:0}.tyk-selectable-list li:not(.tyk-selectable-list__no-items-message)>label{align-items:center;cursor:pointer;display:flex;padding:10px 20px}.tyk-selectable-list li:not(.tyk-selectable-list__no-items-message)>label input[type=checkbox]{margin-left:auto}.tyk-selectable-list__item--with-icon input[type=checkbox]{visibility:hidden}textarea.tyk-form-control{height:auto}.tyk-toggle{display:inline-flex;flex-wrap:wrap;font-family:OpenSans-Bold;font-size:14px;line-height:19px;white-space:nowrap}.tyk-toggle.block{margin-bottom:20px;width:100%}.tyk-toggle.block+.tyk-toggle{margin-left:0}.tyk-toggle.inline-label{align-items:center;flex-wrap:nowrap}.tyk-toggle__list--has-error{border:2px solid #ff6c7d}.tyk-toggle .tyk-toggle__label{display:block;font-family:OpenSans-SemiBold;font-size:14px;padding:0;width:100%;color:#36364c}.tyk-toggle.inline-label .tyk-toggle__label{margin-right:10px;width:auto}.tyk-toggle+.tyk-button,.tyk-toggle+.tyk-dropdown,.tyk-toggle+.tyk-toggle{margin-left:10px}.tyk-toggle--disabled-true{cursor:not-allowed;opacity:.7}.tyk-toggle--column .tyk-toggle__list--separated{display:flex;flex-direction:column;margin-right:20px}.tyk-toggle--column .tyk-toggle__list--separated .tyk-toggle__item{background-color:#ededf9;margin-right:auto}.tyk-toggle__list{background:#ededf9;border-radius:25px;display:flex;list-style-type:none;margin:0;padding:0;position:relative}.tyk-toggle__list--separated{background:rgba(0,0,0,0);flex-wrap:wrap}.tyk-toggle--on-dark .tyk-toggle__list{background:#fff}.tyk-toggle--default .tyk-toggle__item--active span{color:#fff}.tyk-toggle--default .tyk-toggle__list--single .tyk-toggle__item--active,.tyk-toggle--default .tyk-toggle__list--separated .tyk-toggle__item--active{background-color:#36364c;color:#fff;border:2px solid rgba(0,0,0,0)}.tyk-toggle--default .tyk-toggle__list--single .tyk-toggle__item--active span,.tyk-toggle--default .tyk-toggle__list--separated .tyk-toggle__item--active span{color:#fff}.tyk-toggle--default .tyk-toggle__list--single .tyk-toggle__item--active:hover,.tyk-toggle--default .tyk-toggle__list--separated .tyk-toggle__item--active:hover{background-color:#36364c;color:#fff}.tyk-toggle--primary .tyk-toggle__item--active span{color:#fff}.tyk-toggle--primary .tyk-toggle__list--single .tyk-toggle__item--active,.tyk-toggle--primary .tyk-toggle__list--separated .tyk-toggle__item--active{background-color:#a2a2cc;color:#fff;border:2px solid rgba(0,0,0,0)}.tyk-toggle--primary .tyk-toggle__list--single .tyk-toggle__item--active span,.tyk-toggle--primary .tyk-toggle__list--separated .tyk-toggle__item--active span{color:#fff}.tyk-toggle--primary .tyk-toggle__list--single .tyk-toggle__item--active:hover,.tyk-toggle--primary .tyk-toggle__list--separated .tyk-toggle__item--active:hover{background-color:#a2a2cc;color:#fff}.tyk-toggle--success .tyk-toggle__item--active span{color:#fff}.tyk-toggle--success .tyk-toggle__list--single .tyk-toggle__item--active,.tyk-toggle--success .tyk-toggle__list--separated .tyk-toggle__item--active{background-color:#00b798;color:#fff;border:2px solid rgba(0,0,0,0)}.tyk-toggle--success .tyk-toggle__list--single .tyk-toggle__item--active span,.tyk-toggle--success .tyk-toggle__list--separated .tyk-toggle__item--active span{color:#fff}.tyk-toggle--success .tyk-toggle__list--single .tyk-toggle__item--active:hover,.tyk-toggle--success .tyk-toggle__list--separated .tyk-toggle__item--active:hover{background-color:#00b798;color:#fff}.tyk-toggle--danger .tyk-toggle__item--active span{color:#fff}.tyk-toggle--danger .tyk-toggle__list--single .tyk-toggle__item--active,.tyk-toggle--danger .tyk-toggle__list--separated .tyk-toggle__item--active{background-color:#ff6c7d;color:#fff;border:2px solid rgba(0,0,0,0)}.tyk-toggle--danger .tyk-toggle__list--single .tyk-toggle__item--active:hover,.tyk-toggle--danger .tyk-toggle__list--separated .tyk-toggle__item--active:hover{background-color:#ff6c7d;color:#fff}.tyk-toggle--warning .tyk-toggle__item--active span{color:#505071}.tyk-toggle--warning .tyk-toggle__list--single .tyk-toggle__item--active,.tyk-toggle--warning .tyk-toggle__list--separated .tyk-toggle__item--active{background-color:#d6b218;color:#505071;border:2px solid rgba(0,0,0,0)}.tyk-toggle--warning .tyk-toggle__list--single .tyk-toggle__item--active:hover,.tyk-toggle--warning .tyk-toggle__list--separated .tyk-toggle__item--active:hover{background-color:#d6b218;color:#505071}.tyk-toggle--primary-gradient .tyk-toggle__item--active span{color:#fff}.tyk-toggle--primary-gradient .tyk-toggle__list--single .tyk-toggle__item--active,.tyk-toggle--primary-gradient .tyk-toggle__list--separated .tyk-toggle__item--active{border-image:linear-gradient(to right,#A2A2CC,#505071,#A2A2CC) 0 round;background:rgba(0,0,0,0) linear-gradient(to right,#A2A2CC,#505071,#A2A2CC);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-toggle--primary-gradient .tyk-toggle__list--single .tyk-toggle__item--active span,.tyk-toggle--primary-gradient .tyk-toggle__list--separated .tyk-toggle__item--active span,.tyk-toggle--success-gradient .tyk-toggle__item--active span{color:#fff}.tyk-toggle--success-gradient .tyk-toggle__list--single .tyk-toggle__item--active,.tyk-toggle--success-gradient .tyk-toggle__list--separated .tyk-toggle__item--active{border-image:linear-gradient(to right,#00d9ba,#00B798,#00d9ba) 0 round;background:rgba(0,0,0,0) linear-gradient(to right,#00d9ba,#00B798,#00d9ba);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-toggle--success-gradient .tyk-toggle__list--single .tyk-toggle__item--active span,.tyk-toggle--success-gradient .tyk-toggle__list--separated .tyk-toggle__item--active span,.tyk-toggle--danger-gradient .tyk-toggle__item--active span{color:#fff}.tyk-toggle--danger-gradient .tyk-toggle__list--single .tyk-toggle__item--active,.tyk-toggle--danger-gradient .tyk-toggle__list--separated .tyk-toggle__item--active{border-image:linear-gradient(to right,#FF6C7D,#EA4766,#FF6C7D) 0 round;background:rgba(0,0,0,0) linear-gradient(to right,#FF6C7D,#EA4766,#FF6C7D);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-toggle--danger-gradient .tyk-toggle__list--single .tyk-toggle__item--active span,.tyk-toggle--danger-gradient .tyk-toggle__list--separated .tyk-toggle__item--active span,.tyk-toggle--warning-gradient .tyk-toggle__item--active span{color:#fff}.tyk-toggle--warning-gradient .tyk-toggle__list--single .tyk-toggle__item--active,.tyk-toggle--warning-gradient .tyk-toggle__list--separated .tyk-toggle__item--active{border-image:linear-gradient(to right,#FFE885,#D6B218,#FFE885) 0 round;background:rgba(0,0,0,0) linear-gradient(to right,#FFE885,#D6B218,#FFE885);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#505071}.tyk-toggle--warning-gradient .tyk-toggle__list--single .tyk-toggle__item--active span,.tyk-toggle--warning-gradient .tyk-toggle__list--separated .tyk-toggle__item--active span{color:#fff}.tyk-toggle__item{color:#fff;text-transform:uppercase;z-index:2;border:2px solid rgba(0,0,0,0)}.tyk-toggle__item:first-child{border-top-left-radius:25px;border-bottom-left-radius:25px}.tyk-toggle__item:last-child{border-top-right-radius:25px;border-bottom-right-radius:25px}.tyk-toggle__list--separated .tyk-toggle__item{background:tyk-toggle__list--separated;border-radius:25px;margin-bottom:5px;margin-top:5px;margin-right:10px}.tyk-toggle__list--separated .tyk-toggle__item:last-child{margin-right:0}.tyk-toggle__item input{display:none}.tyk-toggle__item label{cursor:pointer;font-family:OpenSans-Bold;position:relative;margin:0;transition:all .2s ease}.tyk-toggle__list--single .tyk-toggle__item label{padding-left:45px}.tyk-toggle__list--single .tyk-toggle__item--active label{padding-left:25px;padding-right:45px}.tyk-toggle__list--single .tyk-toggle__item--active label .tyk-toggle__item-notch{left:calc(100% - 35px)}.tyk-toggle--on-dark .tyk-toggle__item:not(.tyk-toggle__item--active){color:#505071}.tyk-toggle--on-dark .tyk-toggle__item-notch--single{background:#ededf9}.tyk-toggle--sm label{padding:5px 17px;font-size:12px;line-height:16px;border-radius:20px}.tyk-toggle--sm .tyk-toggle__list--single label{padding-left:35px}.tyk-toggle--sm .tyk-toggle__list--single .tyk-toggle__item--active label{padding-left:17px;padding-right:35px}.tyk-toggle--sm .tyk-toggle__list--single .tyk-toggle__item--active label .tyk-toggle__item-notch{left:calc(100% - 27px)}.tyk-toggle--md label{padding:10px 25px;font-size:14px;line-height:16px;border-radius:20px}.tyk-toggle--lg label{padding:15px 25px;font-size:14px;line-height:16px;border-radius:20px}.tyk-toggle--lg .tyk-toggle__list--single label{padding-left:45px}.tyk-toggle--lg .tyk-toggle__list--single .tyk-toggle__item--active label{padding-left:25px;padding-right:45px}.tyk-toggle--lg .tyk-toggle__list--single .tyk-toggle__item--active label .tyk-toggle__item-notch{left:calc(100% - 43px)}.tyk-toggle__item-notch{border-radius:25px;bottom:2px;position:absolute;transition:all .2s ease;top:2px}.tyk-toggle__item-notch--single{background:#fff;left:2px;width:32px}.tyk-toggle--sm .tyk-toggle__item-notch--single{width:24px}.tyk-toggle--lg .tyk-toggle__item-notch--single{width:40px}.tyk-toggle__notch{border-radius:25px;left:0;position:absolute;bottom:4px;top:4px;transition:all .2s ease;width:100px;z-index:1}.tyk-toggle--default .tyk-toggle__notch{background-color:#36364c;color:#fff;border:2px solid rgba(0,0,0,0)}.tyk-toggle--default .tyk-toggle__notch:hover{background-color:#36364c;color:#fff}.tyk-toggle--primary .tyk-toggle__notch{background-color:#a2a2cc;color:#fff;border:2px solid rgba(0,0,0,0)}.tyk-toggle--primary .tyk-toggle__notch:hover{background-color:#a2a2cc;color:#fff}.tyk-toggle--success .tyk-toggle__notch{background-color:#00d9ba;color:#fff;border:2px solid rgba(0,0,0,0)}.tyk-toggle--success .tyk-toggle__notch:hover{background-color:#00d9ba;color:#fff}.tyk-toggle--danger .tyk-toggle__notch{background-color:#ff6c7d;color:#fff;border:2px solid rgba(0,0,0,0)}.tyk-toggle--danger .tyk-toggle__notch:hover{background-color:#ff6c7d;color:#fff}.tyk-toggle--warning .tyk-toggle__notch{background-color:#d6b218;color:#505071;border:2px solid rgba(0,0,0,0)}.tyk-toggle--warning .tyk-toggle__notch:hover{background-color:#d6b218;color:#505071}.tyk-toggle--primary-gradient .tyk-toggle__notch{border-image:linear-gradient(to right,#A2A2CC,#505071,#A2A2CC) 0 round;background:rgba(0,0,0,0) linear-gradient(to right,#A2A2CC,#505071,#A2A2CC);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-toggle--success-gradient .tyk-toggle__notch{border-image:linear-gradient(to right,#00d9ba,#00B798,#00d9ba) 0 round;background:rgba(0,0,0,0) linear-gradient(to right,#00d9ba,#00B798,#00d9ba);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-toggle--danger-gradient .tyk-toggle__notch{border-image:linear-gradient(to right,#FF6C7D,#EA4766,#FF6C7D) 0 round;background:rgba(0,0,0,0) linear-gradient(to right,#FF6C7D,#EA4766,#FF6C7D);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-toggle--warning-gradient .tyk-toggle__notch{border-image:linear-gradient(to right,#FFE885,#D6B218,#FFE885) 0 round;background:rgba(0,0,0,0) linear-gradient(to right,#FFE885,#D6B218,#FFE885);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#505071}.empty-toggle{padding:1px}.string-builder{position:relative;display:block}.string-builder__input{word-break:break-all;resize:none;overflow:hidden;background:rgba(0,0,0,0);position:absolute;border:none;font:inherit;display:block;z-index:1;width:100%;padding:0;width:calc(100% - 35px)}.string-builder__input:focus,.string-builder__input:active{border:none;outline:none}.string-builder__styled{font:inherit;position:absolute;pointer-events:none;width:calc(100% - 35px);color:#0000;z-index:2;border:none;word-wrap:break-word;word-break:break-all}.string-builder__disabled{background-color:#ededf9!important;color:#505071;cursor:not-allowed}.url-builder__options_name{font-weight:10px}.url-builder__options_description{color:gray}.string-builder-dropdown{display:flex;flex-direction:column;border:2px solid #c3c3e5;background-color:#fff}.string-builder-dropdown.tyk-form-group--rounded-corners{border-radius:18px}.string-builder-dropdown .string-builder-search{background-color:#fff;position:sticky;top:0;padding:10px 20px}.string-builder-dropdown .string-builder-search+.string-builder-list{border-top:1px solid #c3c3e5}.string-builder-dropdown .string-builder-list{max-height:255px}.string-builder-dropdown .string-builder-list li{cursor:pointer;padding:9px 20px;transition:all .2s;font-family:OpenSans-SemiBold}.string-builder-dropdown .string-builder-list li:hover,.string-builder-dropdown .string-builder-list li.active{background-color:#c3c3e5}.string-builder-dropdown .string-builder-list li+li{border-top:1px solid #c3c3e5}.string-builder-dropdown .string-builder-list li i{margin-right:5px}.string-builder-dropdown .string-builder-list li .item-name{overflow:hidden;text-overflow:ellipsis;line-height:16px}.invalid_token{box-shadow:0 0 0 1px #ea4766 inset;border-radius:5px;background:#ffbbc5;color:#ea4766;padding:4px;pointer-events:all}.invalid_token .invalid_token--icon{margin-left:2px;color:#ea4766}.string_builder_trigger{background-color:#fff;border-radius:5px;padding:1px 6px;margin:0 4px}.string-builder-footer>.tyk-form-control__error-message{padding:0!important}.string-builder-footer>.tyk-form-control__help-block{padding:0!important}.string-builder-search{padding-right:10px}.default-option-name{color:green}.data_source_argument{color:pink}.data_source_object{color:#8a2be2}*{box-sizing:border-box}body{background-color:#e1e1e1;color:#505071;font-size:14px;line-height:19px;font-family:OpenSans-regular}.tyk-main-wrapper{display:flex;flex-wrap:nowrap}.tyk-main-content-wrapper{flex:1}.well{background:rgba(0,0,0,0);border:2px solid #c3c3e5;border-radius:18px;box-shadow:none}.well.has-error{border-color:#ff6c7d}.title-medium{font-family:OpenSans-SemiBold;color:#36364c;font-size:16px}.right-align{text-align:right!important}.left-align{text-align:left!important}.center-align{text-align:center!important}.left{float:left!important}.right{float:right!important}.hide{display:none!important}.no-margin{margin:0!important}.no-margin-bottom{margin-bottom:0!important}.no-margin-top{margin-top:0!important}.no-margin-right,.no-margin-left{margin-right:0!important}.disabled-section{color:#c3c3e5}.top-buffer-large{margin-top:20px!important}.top-buffer-small{margin-top:5px!important}.top-buffer-medium{margin-top:10px!important}.bottom-buffer-large{margin-bottom:20px!important}.bottom-buffer-small{margin-bottom:5px!important}.bottom-buffer-medium{margin-bottom:10px!important}.right-buffer-large{margin-right:20px!important}.right-buffer-small{margin-right:5px!important}.right-buffer-medium{margin-right:10px!important}.left-buffer-large{margin-left:20px!important}.left-buffer-small{margin-left:5px!important}.left-buffer-medium{margin-left:10px!important}.word-wrap{word-wrap:break-word;word-break:break-all}.clear-left{clear:left}.flex-container{display:flex}.vertical-center-align{align-items:center}.right-align-controls{align-items:center;display:flex;margin-left:auto}.inline-label{margin-right:15px}.nowrap{white-space:nowrap} +html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video{margin:0;padding:0;border:0;font-size:100%;font:inherit;vertical-align:baseline}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}body{line-height:1}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:before,blockquote:after{content:"";content:none}q:before,q:after{content:"";content:none}table{border-collapse:collapse;border-spacing:0}.container{max-width:1240px;margin:0 auto}.container,.container-fluid{padding:0 20px}.tyk-row{display:flex;box-sizing:border-box;list-style:none;flex:0 1 auto;flex-direction:row;flex-wrap:wrap;margin-left:-20px;width:calc(100% + 20px)}.tyk-row.no-gutters{margin:0}.tyk-row.tyk-row--gutterless{margin:0;width:100%}.tyk-row.tyk-row--reverse{flex-direction:row-reverse}.tyk-col{max-width:calc(100% - 20px);box-sizing:border-box;flex:0 0 auto;flex-grow:1;flex-basis:calc(100% - 20px);margin-left:20px;width:calc(100% - 20px)}.tyk-col:last-child{margin-right:0}.tyk-row--gutterless .tyk-col{margin:0}.tyk-col.tyk-col--reverse{flex-direction:column-reverse}.tyk-col.tyk-col--align-bottom{align-self:flex-end}.tyk-col.tyk-col--align-top{align-self:flex-start}.tyk-col.tyk-col--align-center{align-self:center}.tyk-col.tyk-col--align-baseline{align-self:baseline}.tyk-col.tyk-col--align-stretch{align-self:stretch}@media screen and (min-width: 1248px){.tyk-col--lg-0{flex-basis:calc(0% - 20px);max-width:calc(0% - 20px)}.tyk-col--offset-lg-0{margin-left:0%}.tyk-col--lg-1{flex-basis:calc(8.3333333333% - 20px);max-width:calc(8.3333333333% - 20px)}.tyk-col--offset-lg-1{margin-left:8.3333333333%}.tyk-col--lg-2{flex-basis:calc(16.6666666667% - 20px);max-width:calc(16.6666666667% - 20px)}.tyk-col--offset-lg-2{margin-left:16.6666666667%}.tyk-col--lg-3{flex-basis:calc(25% - 20px);max-width:calc(25% - 20px)}.tyk-col--offset-lg-3{margin-left:25%}.tyk-col--lg-4{flex-basis:calc(33.3333333333% - 20px);max-width:calc(33.3333333333% - 20px)}.tyk-col--offset-lg-4{margin-left:33.3333333333%}.tyk-col--lg-5{flex-basis:calc(41.6666666667% - 20px);max-width:calc(41.6666666667% - 20px)}.tyk-col--offset-lg-5{margin-left:41.6666666667%}.tyk-col--lg-6{flex-basis:calc(50% - 20px);max-width:calc(50% - 20px)}.tyk-col--offset-lg-6{margin-left:50%}.tyk-col--lg-7{flex-basis:calc(58.3333333333% - 20px);max-width:calc(58.3333333333% - 20px)}.tyk-col--offset-lg-7{margin-left:58.3333333333%}.tyk-col--lg-8{flex-basis:calc(66.6666666667% - 20px);max-width:calc(66.6666666667% - 20px)}.tyk-col--offset-lg-8{margin-left:66.6666666667%}.tyk-col--lg-9{flex-basis:calc(75% - 20px);max-width:calc(75% - 20px)}.tyk-col--offset-lg-9{margin-left:75%}.tyk-col--lg-10{flex-basis:calc(83.3333333333% - 20px);max-width:calc(83.3333333333% - 20px)}.tyk-col--offset-lg-10{margin-left:83.3333333333%}.tyk-col--lg-11{flex-basis:calc(91.6666666667% - 20px);max-width:calc(91.6666666667% - 20px)}.tyk-col--offset-lg-11{margin-left:91.6666666667%}.tyk-col--lg-12{flex-basis:calc(100% - 20px);max-width:calc(100% - 20px)}.tyk-col--offset-lg-12{margin-left:100%}}@media screen and (min-width: 1024px)and (max-width: 1247px){.tyk-col--md-0{flex-basis:calc(0% - 20px);max-width:calc(0% - 20px)}.tyk-col--offset-md-0{margin-left:0%}.tyk-col--md-1{flex-basis:calc(8.3333333333% - 20px);max-width:calc(8.3333333333% - 20px)}.tyk-col--offset-md-1{margin-left:8.3333333333%}.tyk-col--md-2{flex-basis:calc(16.6666666667% - 20px);max-width:calc(16.6666666667% - 20px)}.tyk-col--offset-md-2{margin-left:16.6666666667%}.tyk-col--md-3{flex-basis:calc(25% - 20px);max-width:calc(25% - 20px)}.tyk-col--offset-md-3{margin-left:25%}.tyk-col--md-4{flex-basis:calc(33.3333333333% - 20px);max-width:calc(33.3333333333% - 20px)}.tyk-col--offset-md-4{margin-left:33.3333333333%}.tyk-col--md-5{flex-basis:calc(41.6666666667% - 20px);max-width:calc(41.6666666667% - 20px)}.tyk-col--offset-md-5{margin-left:41.6666666667%}.tyk-col--md-6{flex-basis:calc(50% - 20px);max-width:calc(50% - 20px)}.tyk-col--offset-md-6{margin-left:50%}.tyk-col--md-7{flex-basis:calc(58.3333333333% - 20px);max-width:calc(58.3333333333% - 20px)}.tyk-col--offset-md-7{margin-left:58.3333333333%}.tyk-col--md-8{flex-basis:calc(66.6666666667% - 20px);max-width:calc(66.6666666667% - 20px)}.tyk-col--offset-md-8{margin-left:66.6666666667%}.tyk-col--md-9{flex-basis:calc(75% - 20px);max-width:calc(75% - 20px)}.tyk-col--offset-md-9{margin-left:75%}.tyk-col--md-10{flex-basis:calc(83.3333333333% - 20px);max-width:calc(83.3333333333% - 20px)}.tyk-col--offset-md-10{margin-left:83.3333333333%}.tyk-col--md-11{flex-basis:calc(91.6666666667% - 20px);max-width:calc(91.6666666667% - 20px)}.tyk-col--offset-md-11{margin-left:91.6666666667%}.tyk-col--md-12{flex-basis:calc(100% - 20px);max-width:calc(100% - 20px)}.tyk-col--offset-md-12{margin-left:100%}}@media screen and (min-width: 769px)and (max-width:1023px){.tyk-col--sm-0{flex-basis:calc(0% - 20px);max-width:calc(0% - 20px)}.tyk-col--offset-sm-0{margin-left:0%}.tyk-col--sm-1{flex-basis:calc(8.3333333333% - 20px);max-width:calc(8.3333333333% - 20px)}.tyk-col--offset-sm-1{margin-left:8.3333333333%}.tyk-col--sm-2{flex-basis:calc(16.6666666667% - 20px);max-width:calc(16.6666666667% - 20px)}.tyk-col--offset-sm-2{margin-left:16.6666666667%}.tyk-col--sm-3{flex-basis:calc(25% - 20px);max-width:calc(25% - 20px)}.tyk-col--offset-sm-3{margin-left:25%}.tyk-col--sm-4{flex-basis:calc(33.3333333333% - 20px);max-width:calc(33.3333333333% - 20px)}.tyk-col--offset-sm-4{margin-left:33.3333333333%}.tyk-col--sm-5{flex-basis:calc(41.6666666667% - 20px);max-width:calc(41.6666666667% - 20px)}.tyk-col--offset-sm-5{margin-left:41.6666666667%}.tyk-col--sm-6{flex-basis:calc(50% - 20px);max-width:calc(50% - 20px)}.tyk-col--offset-sm-6{margin-left:50%}.tyk-col--sm-7{flex-basis:calc(58.3333333333% - 20px);max-width:calc(58.3333333333% - 20px)}.tyk-col--offset-sm-7{margin-left:58.3333333333%}.tyk-col--sm-8{flex-basis:calc(66.6666666667% - 20px);max-width:calc(66.6666666667% - 20px)}.tyk-col--offset-sm-8{margin-left:66.6666666667%}.tyk-col--sm-9{flex-basis:calc(75% - 20px);max-width:calc(75% - 20px)}.tyk-col--offset-sm-9{margin-left:75%}.tyk-col--sm-10{flex-basis:calc(83.3333333333% - 20px);max-width:calc(83.3333333333% - 20px)}.tyk-col--offset-sm-10{margin-left:83.3333333333%}.tyk-col--sm-11{flex-basis:calc(91.6666666667% - 20px);max-width:calc(91.6666666667% - 20px)}.tyk-col--offset-sm-11{margin-left:91.6666666667%}.tyk-col--sm-12{flex-basis:calc(100% - 20px);max-width:calc(100% - 20px)}.tyk-col--offset-sm-12{margin-left:100%}}@media screen and (max-width: 768px){.tyk-col--xs-0{flex-basis:calc(0% - 20px);max-width:calc(0% - 20px)}.tyk-col--offset-xs-0{margin-left:0%}.tyk-col--xs-1{flex-basis:calc(8.3333333333% - 20px);max-width:calc(8.3333333333% - 20px)}.tyk-col--offset-xs-1{margin-left:8.3333333333%}.tyk-col--xs-2{flex-basis:calc(16.6666666667% - 20px);max-width:calc(16.6666666667% - 20px)}.tyk-col--offset-xs-2{margin-left:16.6666666667%}.tyk-col--xs-3{flex-basis:calc(25% - 20px);max-width:calc(25% - 20px)}.tyk-col--offset-xs-3{margin-left:25%}.tyk-col--xs-4{flex-basis:calc(33.3333333333% - 20px);max-width:calc(33.3333333333% - 20px)}.tyk-col--offset-xs-4{margin-left:33.3333333333%}.tyk-col--xs-5{flex-basis:calc(41.6666666667% - 20px);max-width:calc(41.6666666667% - 20px)}.tyk-col--offset-xs-5{margin-left:41.6666666667%}.tyk-col--xs-6{flex-basis:calc(50% - 20px);max-width:calc(50% - 20px)}.tyk-col--offset-xs-6{margin-left:50%}.tyk-col--xs-7{flex-basis:calc(58.3333333333% - 20px);max-width:calc(58.3333333333% - 20px)}.tyk-col--offset-xs-7{margin-left:58.3333333333%}.tyk-col--xs-8{flex-basis:calc(66.6666666667% - 20px);max-width:calc(66.6666666667% - 20px)}.tyk-col--offset-xs-8{margin-left:66.6666666667%}.tyk-col--xs-9{flex-basis:calc(75% - 20px);max-width:calc(75% - 20px)}.tyk-col--offset-xs-9{margin-left:75%}.tyk-col--xs-10{flex-basis:calc(83.3333333333% - 20px);max-width:calc(83.3333333333% - 20px)}.tyk-col--offset-xs-10{margin-left:83.3333333333%}.tyk-col--xs-11{flex-basis:calc(91.6666666667% - 20px);max-width:calc(91.6666666667% - 20px)}.tyk-col--offset-xs-11{margin-left:91.6666666667%}.tyk-col--xs-12{flex-basis:calc(100% - 20px);max-width:calc(100% - 20px)}.tyk-col--offset-xs-12{margin-left:100%}}@font-face{font-family:"OpenSans-Bold";src:url(fonts/OpenSans-Bold.woff2) format("woff2"),url(fonts/OpenSans-Bold.woff) format("woff");font-weight:normal;font-style:normal}@font-face{font-family:"OpenSans-SemiBold";src:url(fonts/OpenSans-SemiBold.woff2) format("woff2"),url(fonts/OpenSans-SemiBold.woff) format("woff");font-weight:normal;font-style:normal}@font-face{font-family:"OpenSans-Regular";src:url(fonts/OpenSans-Regular.woff2) format("woff2"),url(fonts/OpenSans-Regular.woff) format("woff");font-weight:normal;font-style:normal}@font-face{font-family:"smoolthan_bold";src:url(fonts/smoolthan_bold-webfont.woff2) format("woff2"),url(fonts/smoolthan_bold-webfont.woff) format("woff");font-weight:normal;font-style:normal}@font-face{font-family:"smoolthan_medium";src:url(fonts/smoolthan_medium-webfont.woff2) format("woff2"),url(fonts/smoolthan_medium-webfont.woff) format("woff");font-weight:normal;font-style:normal}@font-face{font-family:"smoolthan_regular";src:url(fonts/smoolthan_regular-webfont.woff2) format("woff2"),url(fonts/smoolthan_regular-webfont.woff) format("woff");font-weight:normal;font-style:normal}@font-face{font-family:"tykon";src:url(fonts/tykon.woff2) format("woff2"),url(fonts/tykon.woff) format("woff");font-weight:normal;font-style:normal}/*! + * Font Awesome Free 5.5.0 by @fontawesome - https://fontawesome.com + * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) + */.fa,.fas,.far,.fal,.fab{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-0.0667em}.fa-xs{font-size:.75em}.fa-sm{font-size:.875em}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:2.5em;padding-left:0}.fa-ul>li{position:relative}.fa-li{left:-2em;position:absolute;text-align:center;width:2em;line-height:inherit}.fa-border{border:solid .08em #eee;border-radius:.1em;padding:.2em .25em .15em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left,.fas.fa-pull-left,.far.fa-pull-left,.fal.fa-pull-left,.fab.fa-pull-left{margin-right:.3em}.fa.fa-pull-right,.fas.fa-pull-right,.far.fa-pull-right,.fal.fa-pull-right,.fab.fa-pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scale(-1, 1);transform:scale(-1, 1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scale(1, -1);transform:scale(1, -1)}.fa-flip-horizontal.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scale(-1, -1);transform:scale(-1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{-webkit-filter:none;filter:none}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-500px:before{content:""}.fa-accessible-icon:before{content:""}.fa-accusoft:before{content:""}.fa-acquisitions-incorporated:before{content:""}.fa-ad:before{content:""}.fa-address-book:before{content:""}.fa-address-card:before{content:""}.fa-adjust:before{content:""}.fa-adn:before{content:""}.fa-adversal:before{content:""}.fa-affiliatetheme:before{content:""}.fa-air-freshener:before{content:""}.fa-algolia:before{content:""}.fa-align-center:before{content:""}.fa-align-justify:before{content:""}.fa-align-left:before{content:""}.fa-align-right:before{content:""}.fa-alipay:before{content:""}.fa-allergies:before{content:""}.fa-amazon:before{content:""}.fa-amazon-pay:before{content:""}.fa-ambulance:before{content:""}.fa-american-sign-language-interpreting:before{content:""}.fa-amilia:before{content:""}.fa-anchor:before{content:""}.fa-android:before{content:""}.fa-angellist:before{content:""}.fa-angle-double-down:before{content:""}.fa-angle-double-left:before{content:""}.fa-angle-double-right:before{content:""}.fa-angle-double-up:before{content:""}.fa-angle-down:before{content:""}.fa-angle-left:before{content:""}.fa-angle-right:before{content:""}.fa-angle-up:before{content:""}.fa-angry:before{content:""}.fa-angrycreative:before{content:""}.fa-angular:before{content:""}.fa-ankh:before{content:""}.fa-app-store:before{content:""}.fa-app-store-ios:before{content:""}.fa-apper:before{content:""}.fa-apple:before{content:""}.fa-apple-alt:before{content:""}.fa-apple-pay:before{content:""}.fa-archive:before{content:""}.fa-archway:before{content:""}.fa-arrow-alt-circle-down:before{content:""}.fa-arrow-alt-circle-left:before{content:""}.fa-arrow-alt-circle-right:before{content:""}.fa-arrow-alt-circle-up:before{content:""}.fa-arrow-circle-down:before{content:""}.fa-arrow-circle-left:before{content:""}.fa-arrow-circle-right:before{content:""}.fa-arrow-circle-up:before{content:""}.fa-arrow-down:before{content:""}.fa-arrow-left:before{content:""}.fa-arrow-right:before{content:""}.fa-arrow-up:before{content:""}.fa-arrows-alt:before{content:""}.fa-arrows-alt-h:before{content:""}.fa-arrows-alt-v:before{content:""}.fa-assistive-listening-systems:before{content:""}.fa-asterisk:before{content:""}.fa-asymmetrik:before{content:""}.fa-at:before{content:""}.fa-atlas:before{content:""}.fa-atom:before{content:""}.fa-audible:before{content:""}.fa-audio-description:before{content:""}.fa-autoprefixer:before{content:""}.fa-avianex:before{content:""}.fa-aviato:before{content:""}.fa-award:before{content:""}.fa-aws:before{content:""}.fa-backspace:before{content:""}.fa-backward:before{content:""}.fa-balance-scale:before{content:""}.fa-ban:before{content:""}.fa-band-aid:before{content:""}.fa-bandcamp:before{content:""}.fa-barcode:before{content:""}.fa-bars:before{content:""}.fa-baseball-ball:before{content:""}.fa-basketball-ball:before{content:""}.fa-bath:before{content:""}.fa-battery-empty:before{content:""}.fa-battery-full:before{content:""}.fa-battery-half:before{content:""}.fa-battery-quarter:before{content:""}.fa-battery-three-quarters:before{content:""}.fa-bed:before{content:""}.fa-beer:before{content:""}.fa-behance:before{content:""}.fa-behance-square:before{content:""}.fa-bell:before{content:""}.fa-bell-slash:before{content:""}.fa-bezier-curve:before{content:""}.fa-bible:before{content:""}.fa-bicycle:before{content:""}.fa-bimobject:before{content:""}.fa-binoculars:before{content:""}.fa-birthday-cake:before{content:""}.fa-bitbucket:before{content:""}.fa-bitcoin:before{content:""}.fa-bity:before{content:""}.fa-black-tie:before{content:""}.fa-blackberry:before{content:""}.fa-blender:before{content:""}.fa-blender-phone:before{content:""}.fa-blind:before{content:""}.fa-blogger:before{content:""}.fa-blogger-b:before{content:""}.fa-bluetooth:before{content:""}.fa-bluetooth-b:before{content:""}.fa-bold:before{content:""}.fa-bolt:before{content:""}.fa-bomb:before{content:""}.fa-bone:before{content:""}.fa-bong:before{content:""}.fa-book:before{content:""}.fa-book-dead:before{content:""}.fa-book-open:before{content:""}.fa-book-reader:before{content:""}.fa-bookmark:before{content:""}.fa-bowling-ball:before{content:""}.fa-box:before{content:""}.fa-box-open:before{content:""}.fa-boxes:before{content:""}.fa-braille:before{content:""}.fa-brain:before{content:""}.fa-briefcase:before{content:""}.fa-briefcase-medical:before{content:""}.fa-broadcast-tower:before{content:""}.fa-broom:before{content:""}.fa-brush:before{content:""}.fa-btc:before{content:""}.fa-bug:before{content:""}.fa-building:before{content:""}.fa-bullhorn:before{content:""}.fa-bullseye:before{content:""}.fa-burn:before{content:""}.fa-buromobelexperte:before{content:""}.fa-bus:before{content:""}.fa-bus-alt:before{content:""}.fa-business-time:before{content:""}.fa-buysellads:before{content:""}.fa-calculator:before{content:""}.fa-calendar:before{content:""}.fa-calendar-alt:before{content:""}.fa-calendar-check:before{content:""}.fa-calendar-minus:before{content:""}.fa-calendar-plus:before{content:""}.fa-calendar-times:before{content:""}.fa-camera:before{content:""}.fa-camera-retro:before{content:""}.fa-campground:before{content:""}.fa-cannabis:before{content:""}.fa-capsules:before{content:""}.fa-car:before{content:""}.fa-car-alt:before{content:""}.fa-car-battery:before{content:""}.fa-car-crash:before{content:""}.fa-car-side:before{content:""}.fa-caret-down:before{content:""}.fa-caret-left:before{content:""}.fa-caret-right:before{content:""}.fa-caret-square-down:before{content:""}.fa-caret-square-left:before{content:""}.fa-caret-square-right:before{content:""}.fa-caret-square-up:before{content:""}.fa-caret-up:before{content:""}.fa-cart-arrow-down:before{content:""}.fa-cart-plus:before{content:""}.fa-cat:before{content:""}.fa-cc-amazon-pay:before{content:""}.fa-cc-amex:before{content:""}.fa-cc-apple-pay:before{content:""}.fa-cc-diners-club:before{content:""}.fa-cc-discover:before{content:""}.fa-cc-jcb:before{content:""}.fa-cc-mastercard:before{content:""}.fa-cc-paypal:before{content:""}.fa-cc-stripe:before{content:""}.fa-cc-visa:before{content:""}.fa-centercode:before{content:""}.fa-certificate:before{content:""}.fa-chair:before{content:""}.fa-chalkboard:before{content:""}.fa-chalkboard-teacher:before{content:""}.fa-charging-station:before{content:""}.fa-chart-area:before{content:""}.fa-chart-bar:before{content:""}.fa-chart-line:before{content:""}.fa-chart-pie:before{content:""}.fa-check:before{content:""}.fa-check-circle:before{content:""}.fa-check-double:before{content:""}.fa-check-square:before{content:""}.fa-chess:before{content:""}.fa-chess-bishop:before{content:""}.fa-chess-board:before{content:""}.fa-chess-king:before{content:""}.fa-chess-knight:before{content:""}.fa-chess-pawn:before{content:""}.fa-chess-queen:before{content:""}.fa-chess-rook:before{content:""}.fa-chevron-circle-down:before{content:""}.fa-chevron-circle-left:before{content:""}.fa-chevron-circle-right:before{content:""}.fa-chevron-circle-up:before{content:""}.fa-chevron-down:before{content:""}.fa-chevron-left:before{content:""}.fa-chevron-right:before{content:""}.fa-chevron-up:before{content:""}.fa-child:before{content:""}.fa-chrome:before{content:""}.fa-church:before{content:""}.fa-circle:before{content:""}.fa-circle-notch:before{content:""}.fa-city:before{content:""}.fa-clipboard:before{content:""}.fa-clipboard-check:before{content:""}.fa-clipboard-list:before{content:""}.fa-clock:before{content:""}.fa-clone:before{content:""}.fa-closed-captioning:before{content:""}.fa-cloud:before{content:""}.fa-cloud-download-alt:before{content:""}.fa-cloud-meatball:before{content:""}.fa-cloud-moon:before{content:""}.fa-cloud-moon-rain:before{content:""}.fa-cloud-rain:before{content:""}.fa-cloud-showers-heavy:before{content:""}.fa-cloud-sun:before{content:""}.fa-cloud-sun-rain:before{content:""}.fa-cloud-upload-alt:before{content:""}.fa-cloudscale:before{content:""}.fa-cloudsmith:before{content:""}.fa-cloudversify:before{content:""}.fa-cocktail:before{content:""}.fa-code:before{content:""}.fa-code-branch:before{content:""}.fa-codepen:before{content:""}.fa-codiepie:before{content:""}.fa-coffee:before{content:""}.fa-cog:before{content:""}.fa-cogs:before{content:""}.fa-coins:before{content:""}.fa-columns:before{content:""}.fa-comment:before{content:""}.fa-comment-alt:before{content:""}.fa-comment-dollar:before{content:""}.fa-comment-dots:before{content:""}.fa-comment-slash:before{content:""}.fa-comments:before{content:""}.fa-comments-dollar:before{content:""}.fa-compact-disc:before{content:""}.fa-compass:before{content:""}.fa-compress:before{content:""}.fa-compress-arrows-alt:before{content:""}.fa-concierge-bell:before{content:""}.fa-connectdevelop:before{content:""}.fa-contao:before{content:""}.fa-cookie:before{content:""}.fa-cookie-bite:before{content:""}.fa-copy:before{content:""}.fa-copyright:before{content:""}.fa-couch:before{content:""}.fa-cpanel:before{content:""}.fa-creative-commons:before{content:""}.fa-creative-commons-by:before{content:""}.fa-creative-commons-nc:before{content:""}.fa-creative-commons-nc-eu:before{content:""}.fa-creative-commons-nc-jp:before{content:""}.fa-creative-commons-nd:before{content:""}.fa-creative-commons-pd:before{content:""}.fa-creative-commons-pd-alt:before{content:""}.fa-creative-commons-remix:before{content:""}.fa-creative-commons-sa:before{content:""}.fa-creative-commons-sampling:before{content:""}.fa-creative-commons-sampling-plus:before{content:""}.fa-creative-commons-share:before{content:""}.fa-creative-commons-zero:before{content:""}.fa-credit-card:before{content:""}.fa-critical-role:before{content:""}.fa-crop:before{content:""}.fa-crop-alt:before{content:""}.fa-cross:before{content:""}.fa-crosshairs:before{content:""}.fa-crow:before{content:""}.fa-crown:before{content:""}.fa-css3:before{content:""}.fa-css3-alt:before{content:""}.fa-cube:before{content:""}.fa-cubes:before{content:""}.fa-cut:before{content:""}.fa-cuttlefish:before{content:""}.fa-d-and-d:before{content:""}.fa-d-and-d-beyond:before{content:""}.fa-dashcube:before{content:""}.fa-database:before{content:""}.fa-deaf:before{content:""}.fa-delicious:before{content:""}.fa-democrat:before{content:""}.fa-deploydog:before{content:""}.fa-deskpro:before{content:""}.fa-desktop:before{content:""}.fa-dev:before{content:""}.fa-deviantart:before{content:""}.fa-dharmachakra:before{content:""}.fa-diagnoses:before{content:""}.fa-dice:before{content:""}.fa-dice-d20:before{content:""}.fa-dice-d6:before{content:""}.fa-dice-five:before{content:""}.fa-dice-four:before{content:""}.fa-dice-one:before{content:""}.fa-dice-six:before{content:""}.fa-dice-three:before{content:""}.fa-dice-two:before{content:""}.fa-digg:before{content:""}.fa-digital-ocean:before{content:""}.fa-digital-tachograph:before{content:""}.fa-directions:before{content:""}.fa-discord:before{content:""}.fa-discourse:before{content:""}.fa-divide:before{content:""}.fa-dizzy:before{content:""}.fa-dna:before{content:""}.fa-dochub:before{content:""}.fa-docker:before{content:""}.fa-dog:before{content:""}.fa-dollar-sign:before{content:""}.fa-dolly:before{content:""}.fa-dolly-flatbed:before{content:""}.fa-donate:before{content:""}.fa-door-closed:before{content:""}.fa-door-open:before{content:""}.fa-dot-circle:before{content:""}.fa-dove:before{content:""}.fa-download:before{content:""}.fa-draft2digital:before{content:""}.fa-drafting-compass:before{content:""}.fa-dragon:before{content:""}.fa-draw-polygon:before{content:""}.fa-dribbble:before{content:""}.fa-dribbble-square:before{content:""}.fa-dropbox:before{content:""}.fa-drum:before{content:""}.fa-drum-steelpan:before{content:""}.fa-drumstick-bite:before{content:""}.fa-drupal:before{content:""}.fa-dumbbell:before{content:""}.fa-dungeon:before{content:""}.fa-dyalog:before{content:""}.fa-earlybirds:before{content:""}.fa-ebay:before{content:""}.fa-edge:before{content:""}.fa-edit:before{content:""}.fa-eject:before{content:""}.fa-elementor:before{content:""}.fa-ellipsis-h:before{content:""}.fa-ellipsis-v:before{content:""}.fa-ello:before{content:""}.fa-ember:before{content:""}.fa-empire:before{content:""}.fa-envelope:before{content:""}.fa-envelope-open:before{content:""}.fa-envelope-open-text:before{content:""}.fa-envelope-square:before{content:""}.fa-envira:before{content:""}.fa-equals:before{content:""}.fa-eraser:before{content:""}.fa-erlang:before{content:""}.fa-ethereum:before{content:""}.fa-etsy:before{content:""}.fa-euro-sign:before{content:""}.fa-exchange-alt:before{content:""}.fa-exclamation:before{content:""}.fa-exclamation-circle:before{content:""}.fa-exclamation-triangle:before{content:""}.fa-expand:before{content:""}.fa-expand-arrows-alt:before{content:""}.fa-expeditedssl:before{content:""}.fa-external-link-alt:before{content:""}.fa-external-link-square-alt:before{content:""}.fa-eye:before{content:""}.fa-eye-dropper:before{content:""}.fa-eye-slash:before{content:""}.fa-facebook:before{content:""}.fa-facebook-f:before{content:""}.fa-facebook-messenger:before{content:""}.fa-facebook-square:before{content:""}.fa-fantasy-flight-games:before{content:""}.fa-fast-backward:before{content:""}.fa-fast-forward:before{content:""}.fa-fax:before{content:""}.fa-feather:before{content:""}.fa-feather-alt:before{content:""}.fa-female:before{content:""}.fa-fighter-jet:before{content:""}.fa-file:before{content:""}.fa-file-alt:before{content:""}.fa-file-archive:before{content:""}.fa-file-audio:before{content:""}.fa-file-code:before{content:""}.fa-file-contract:before{content:""}.fa-file-csv:before{content:""}.fa-file-download:before{content:""}.fa-file-excel:before{content:""}.fa-file-export:before{content:""}.fa-file-image:before{content:""}.fa-file-import:before{content:""}.fa-file-invoice:before{content:""}.fa-file-invoice-dollar:before{content:""}.fa-file-medical:before{content:""}.fa-file-medical-alt:before{content:""}.fa-file-pdf:before{content:""}.fa-file-powerpoint:before{content:""}.fa-file-prescription:before{content:""}.fa-file-signature:before{content:""}.fa-file-upload:before{content:""}.fa-file-video:before{content:""}.fa-file-word:before{content:""}.fa-fill:before{content:""}.fa-fill-drip:before{content:""}.fa-film:before{content:""}.fa-filter:before{content:""}.fa-fingerprint:before{content:""}.fa-fire:before{content:""}.fa-fire-extinguisher:before{content:""}.fa-firefox:before{content:""}.fa-first-aid:before{content:""}.fa-first-order:before{content:""}.fa-first-order-alt:before{content:""}.fa-firstdraft:before{content:""}.fa-fish:before{content:""}.fa-fist-raised:before{content:""}.fa-flag:before{content:""}.fa-flag-checkered:before{content:""}.fa-flag-usa:before{content:""}.fa-flask:before{content:""}.fa-flickr:before{content:""}.fa-flipboard:before{content:""}.fa-flushed:before{content:""}.fa-fly:before{content:""}.fa-folder:before{content:""}.fa-folder-minus:before{content:""}.fa-folder-open:before{content:""}.fa-folder-plus:before{content:""}.fa-font:before{content:""}.fa-font-awesome:before{content:""}.fa-font-awesome-alt:before{content:""}.fa-font-awesome-flag:before{content:""}.fa-font-awesome-logo-full:before{content:""}.fa-fonticons:before{content:""}.fa-fonticons-fi:before{content:""}.fa-football-ball:before{content:""}.fa-fort-awesome:before{content:""}.fa-fort-awesome-alt:before{content:""}.fa-forumbee:before{content:""}.fa-forward:before{content:""}.fa-foursquare:before{content:""}.fa-free-code-camp:before{content:""}.fa-freebsd:before{content:""}.fa-frog:before{content:""}.fa-frown:before{content:""}.fa-frown-open:before{content:""}.fa-fulcrum:before{content:""}.fa-funnel-dollar:before{content:""}.fa-futbol:before{content:""}.fa-galactic-republic:before{content:""}.fa-galactic-senate:before{content:""}.fa-gamepad:before{content:""}.fa-gas-pump:before{content:""}.fa-gavel:before{content:""}.fa-gem:before{content:""}.fa-genderless:before{content:""}.fa-get-pocket:before{content:""}.fa-gg:before{content:""}.fa-gg-circle:before{content:""}.fa-ghost:before{content:""}.fa-gift:before{content:""}.fa-git:before{content:""}.fa-git-square:before{content:""}.fa-github:before{content:""}.fa-github-alt:before{content:""}.fa-github-square:before{content:""}.fa-gitkraken:before{content:""}.fa-gitlab:before{content:""}.fa-gitter:before{content:""}.fa-glass-martini:before{content:""}.fa-glass-martini-alt:before{content:""}.fa-glasses:before{content:""}.fa-glide:before{content:""}.fa-glide-g:before{content:""}.fa-globe:before{content:""}.fa-globe-africa:before{content:""}.fa-globe-americas:before{content:""}.fa-globe-asia:before{content:""}.fa-gofore:before{content:""}.fa-golf-ball:before{content:""}.fa-goodreads:before{content:""}.fa-goodreads-g:before{content:""}.fa-google:before{content:""}.fa-google-drive:before{content:""}.fa-google-play:before{content:""}.fa-google-plus:before{content:""}.fa-google-plus-g:before{content:""}.fa-google-plus-square:before{content:""}.fa-google-wallet:before{content:""}.fa-gopuram:before{content:""}.fa-graduation-cap:before{content:""}.fa-gratipay:before{content:""}.fa-grav:before{content:""}.fa-greater-than:before{content:""}.fa-greater-than-equal:before{content:""}.fa-grimace:before{content:""}.fa-grin:before{content:""}.fa-grin-alt:before{content:""}.fa-grin-beam:before{content:""}.fa-grin-beam-sweat:before{content:""}.fa-grin-hearts:before{content:""}.fa-grin-squint:before{content:""}.fa-grin-squint-tears:before{content:""}.fa-grin-stars:before{content:""}.fa-grin-tears:before{content:""}.fa-grin-tongue:before{content:""}.fa-grin-tongue-squint:before{content:""}.fa-grin-tongue-wink:before{content:""}.fa-grin-wink:before{content:""}.fa-grip-horizontal:before{content:""}.fa-grip-vertical:before{content:""}.fa-gripfire:before{content:""}.fa-grunt:before{content:""}.fa-gulp:before{content:""}.fa-h-square:before{content:""}.fa-hacker-news:before{content:""}.fa-hacker-news-square:before{content:""}.fa-hackerrank:before{content:""}.fa-hammer:before{content:""}.fa-hamsa:before{content:""}.fa-hand-holding:before{content:""}.fa-hand-holding-heart:before{content:""}.fa-hand-holding-usd:before{content:""}.fa-hand-lizard:before{content:""}.fa-hand-paper:before{content:""}.fa-hand-peace:before{content:""}.fa-hand-point-down:before{content:""}.fa-hand-point-left:before{content:""}.fa-hand-point-right:before{content:""}.fa-hand-point-up:before{content:""}.fa-hand-pointer:before{content:""}.fa-hand-rock:before{content:""}.fa-hand-scissors:before{content:""}.fa-hand-spock:before{content:""}.fa-hands:before{content:""}.fa-hands-helping:before{content:""}.fa-handshake:before{content:""}.fa-hanukiah:before{content:""}.fa-hashtag:before{content:""}.fa-hat-wizard:before{content:""}.fa-haykal:before{content:""}.fa-hdd:before{content:""}.fa-heading:before{content:""}.fa-headphones:before{content:""}.fa-headphones-alt:before{content:""}.fa-headset:before{content:""}.fa-heart:before{content:""}.fa-heartbeat:before{content:""}.fa-helicopter:before{content:""}.fa-highlighter:before{content:""}.fa-hiking:before{content:""}.fa-hippo:before{content:""}.fa-hips:before{content:""}.fa-hire-a-helper:before{content:""}.fa-history:before{content:""}.fa-hockey-puck:before{content:""}.fa-home:before{content:""}.fa-hooli:before{content:""}.fa-hornbill:before{content:""}.fa-horse:before{content:""}.fa-hospital:before{content:""}.fa-hospital-alt:before{content:""}.fa-hospital-symbol:before{content:""}.fa-hot-tub:before{content:""}.fa-hotel:before{content:""}.fa-hotjar:before{content:""}.fa-hourglass:before{content:""}.fa-hourglass-end:before{content:""}.fa-hourglass-half:before{content:""}.fa-hourglass-start:before{content:""}.fa-house-damage:before{content:""}.fa-houzz:before{content:""}.fa-hryvnia:before{content:""}.fa-html5:before{content:""}.fa-hubspot:before{content:""}.fa-i-cursor:before{content:""}.fa-id-badge:before{content:""}.fa-id-card:before{content:""}.fa-id-card-alt:before{content:""}.fa-image:before{content:""}.fa-images:before{content:""}.fa-imdb:before{content:""}.fa-inbox:before{content:""}.fa-indent:before{content:""}.fa-industry:before{content:""}.fa-infinity:before{content:""}.fa-info:before{content:""}.fa-info-circle:before{content:""}.fa-instagram:before{content:""}.fa-internet-explorer:before{content:""}.fa-ioxhost:before{content:""}.fa-italic:before{content:""}.fa-itunes:before{content:""}.fa-itunes-note:before{content:""}.fa-java:before{content:""}.fa-jedi:before{content:""}.fa-jedi-order:before{content:""}.fa-jenkins:before{content:""}.fa-joget:before{content:""}.fa-joint:before{content:""}.fa-joomla:before{content:""}.fa-journal-whills:before{content:""}.fa-js:before{content:""}.fa-js-square:before{content:""}.fa-jsfiddle:before{content:""}.fa-kaaba:before{content:""}.fa-kaggle:before{content:""}.fa-key:before{content:""}.fa-keybase:before{content:""}.fa-keyboard:before{content:""}.fa-keycdn:before{content:""}.fa-khanda:before{content:""}.fa-kickstarter:before{content:""}.fa-kickstarter-k:before{content:""}.fa-kiss:before{content:""}.fa-kiss-beam:before{content:""}.fa-kiss-wink-heart:before{content:""}.fa-kiwi-bird:before{content:""}.fa-korvue:before{content:""}.fa-landmark:before{content:""}.fa-language:before{content:""}.fa-laptop:before{content:""}.fa-laptop-code:before{content:""}.fa-laravel:before{content:""}.fa-lastfm:before{content:""}.fa-lastfm-square:before{content:""}.fa-laugh:before{content:""}.fa-laugh-beam:before{content:""}.fa-laugh-squint:before{content:""}.fa-laugh-wink:before{content:""}.fa-layer-group:before{content:""}.fa-leaf:before{content:""}.fa-leanpub:before{content:""}.fa-lemon:before{content:""}.fa-less:before{content:""}.fa-less-than:before{content:""}.fa-less-than-equal:before{content:""}.fa-level-down-alt:before{content:""}.fa-level-up-alt:before{content:""}.fa-life-ring:before{content:""}.fa-lightbulb:before{content:""}.fa-line:before{content:""}.fa-link:before{content:""}.fa-linkedin:before{content:""}.fa-linkedin-in:before{content:""}.fa-linode:before{content:""}.fa-linux:before{content:""}.fa-lira-sign:before{content:""}.fa-list:before{content:""}.fa-list-alt:before{content:""}.fa-list-ol:before{content:""}.fa-list-ul:before{content:""}.fa-location-arrow:before{content:""}.fa-lock:before{content:""}.fa-lock-open:before{content:""}.fa-long-arrow-alt-down:before{content:""}.fa-long-arrow-alt-left:before{content:""}.fa-long-arrow-alt-right:before{content:""}.fa-long-arrow-alt-up:before{content:""}.fa-low-vision:before{content:""}.fa-luggage-cart:before{content:""}.fa-lyft:before{content:""}.fa-magento:before{content:""}.fa-magic:before{content:""}.fa-magnet:before{content:""}.fa-mail-bulk:before{content:""}.fa-mailchimp:before{content:""}.fa-male:before{content:""}.fa-mandalorian:before{content:""}.fa-map:before{content:""}.fa-map-marked:before{content:""}.fa-map-marked-alt:before{content:""}.fa-map-marker:before{content:""}.fa-map-marker-alt:before{content:""}.fa-map-pin:before{content:""}.fa-map-signs:before{content:""}.fa-markdown:before{content:""}.fa-marker:before{content:""}.fa-mars:before{content:""}.fa-mars-double:before{content:""}.fa-mars-stroke:before{content:""}.fa-mars-stroke-h:before{content:""}.fa-mars-stroke-v:before{content:""}.fa-mask:before{content:""}.fa-mastodon:before{content:""}.fa-maxcdn:before{content:""}.fa-medal:before{content:""}.fa-medapps:before{content:""}.fa-medium:before{content:""}.fa-medium-m:before{content:""}.fa-medkit:before{content:""}.fa-medrt:before{content:""}.fa-meetup:before{content:""}.fa-megaport:before{content:""}.fa-meh:before{content:""}.fa-meh-blank:before{content:""}.fa-meh-rolling-eyes:before{content:""}.fa-memory:before{content:""}.fa-menorah:before{content:""}.fa-mercury:before{content:""}.fa-meteor:before{content:""}.fa-microchip:before{content:""}.fa-microphone:before{content:""}.fa-microphone-alt:before{content:""}.fa-microphone-alt-slash:before{content:""}.fa-microphone-slash:before{content:""}.fa-microscope:before{content:""}.fa-microsoft:before{content:""}.fa-minus:before{content:""}.fa-minus-circle:before{content:""}.fa-minus-square:before{content:""}.fa-mix:before{content:""}.fa-mixcloud:before{content:""}.fa-mizuni:before{content:""}.fa-mobile:before{content:""}.fa-mobile-alt:before{content:""}.fa-modx:before{content:""}.fa-monero:before{content:""}.fa-money-bill:before{content:""}.fa-money-bill-alt:before{content:""}.fa-money-bill-wave:before{content:""}.fa-money-bill-wave-alt:before{content:""}.fa-money-check:before{content:""}.fa-money-check-alt:before{content:""}.fa-monument:before{content:""}.fa-moon:before{content:""}.fa-mortar-pestle:before{content:""}.fa-mosque:before{content:""}.fa-motorcycle:before{content:""}.fa-mountain:before{content:""}.fa-mouse-pointer:before{content:""}.fa-music:before{content:""}.fa-napster:before{content:""}.fa-neos:before{content:""}.fa-network-wired:before{content:""}.fa-neuter:before{content:""}.fa-newspaper:before{content:""}.fa-nimblr:before{content:""}.fa-nintendo-switch:before{content:""}.fa-node:before{content:""}.fa-node-js:before{content:""}.fa-not-equal:before{content:""}.fa-notes-medical:before{content:""}.fa-npm:before{content:""}.fa-ns8:before{content:""}.fa-nutritionix:before{content:""}.fa-object-group:before{content:""}.fa-object-ungroup:before{content:""}.fa-odnoklassniki:before{content:""}.fa-odnoklassniki-square:before{content:""}.fa-oil-can:before{content:""}.fa-old-republic:before{content:""}.fa-om:before{content:""}.fa-opencart:before{content:""}.fa-openid:before{content:""}.fa-opera:before{content:""}.fa-optin-monster:before{content:""}.fa-osi:before{content:""}.fa-otter:before{content:""}.fa-outdent:before{content:""}.fa-page4:before{content:""}.fa-pagelines:before{content:""}.fa-paint-brush:before{content:""}.fa-paint-roller:before{content:""}.fa-palette:before{content:""}.fa-palfed:before{content:""}.fa-pallet:before{content:""}.fa-paper-plane:before{content:""}.fa-paperclip:before{content:""}.fa-parachute-box:before{content:""}.fa-paragraph:before{content:""}.fa-parking:before{content:""}.fa-passport:before{content:""}.fa-pastafarianism:before{content:""}.fa-paste:before{content:""}.fa-patreon:before{content:""}.fa-pause:before{content:""}.fa-pause-circle:before{content:""}.fa-paw:before{content:""}.fa-paypal:before{content:""}.fa-peace:before{content:""}.fa-pen:before{content:""}.fa-pen-alt:before{content:""}.fa-pen-fancy:before{content:""}.fa-pen-nib:before{content:""}.fa-pen-square:before{content:""}.fa-pencil-alt:before{content:""}.fa-pencil-ruler:before{content:""}.fa-penny-arcade:before{content:""}.fa-people-carry:before{content:""}.fa-percent:before{content:""}.fa-percentage:before{content:""}.fa-periscope:before{content:""}.fa-person-booth:before{content:""}.fa-phabricator:before{content:""}.fa-phoenix-framework:before{content:""}.fa-phoenix-squadron:before{content:""}.fa-phone:before{content:""}.fa-phone-slash:before{content:""}.fa-phone-square:before{content:""}.fa-phone-volume:before{content:""}.fa-php:before{content:""}.fa-pied-piper:before{content:""}.fa-pied-piper-alt:before{content:""}.fa-pied-piper-hat:before{content:""}.fa-pied-piper-pp:before{content:""}.fa-piggy-bank:before{content:""}.fa-pills:before{content:""}.fa-pinterest:before{content:""}.fa-pinterest-p:before{content:""}.fa-pinterest-square:before{content:""}.fa-place-of-worship:before{content:""}.fa-plane:before{content:""}.fa-plane-arrival:before{content:""}.fa-plane-departure:before{content:""}.fa-play:before{content:""}.fa-play-circle:before{content:""}.fa-playstation:before{content:""}.fa-plug:before{content:""}.fa-plus:before{content:""}.fa-plus-circle:before{content:""}.fa-plus-square:before{content:""}.fa-podcast:before{content:""}.fa-poll:before{content:""}.fa-poll-h:before{content:""}.fa-poo:before{content:""}.fa-poo-storm:before{content:""}.fa-poop:before{content:""}.fa-portrait:before{content:""}.fa-pound-sign:before{content:""}.fa-power-off:before{content:""}.fa-pray:before{content:""}.fa-praying-hands:before{content:""}.fa-prescription:before{content:""}.fa-prescription-bottle:before{content:""}.fa-prescription-bottle-alt:before{content:""}.fa-print:before{content:""}.fa-procedures:before{content:""}.fa-product-hunt:before{content:""}.fa-project-diagram:before{content:""}.fa-pushed:before{content:""}.fa-puzzle-piece:before{content:""}.fa-python:before{content:""}.fa-qq:before{content:""}.fa-qrcode:before{content:""}.fa-question:before{content:""}.fa-question-circle:before{content:""}.fa-quidditch:before{content:""}.fa-quinscape:before{content:""}.fa-quora:before{content:""}.fa-quote-left:before{content:""}.fa-quote-right:before{content:""}.fa-quran:before{content:""}.fa-r-project:before{content:""}.fa-rainbow:before{content:""}.fa-random:before{content:""}.fa-ravelry:before{content:""}.fa-react:before{content:""}.fa-reacteurope:before{content:""}.fa-readme:before{content:""}.fa-rebel:before{content:""}.fa-receipt:before{content:""}.fa-recycle:before{content:""}.fa-red-river:before{content:""}.fa-reddit:before{content:""}.fa-reddit-alien:before{content:""}.fa-reddit-square:before{content:""}.fa-redo:before{content:""}.fa-redo-alt:before{content:""}.fa-registered:before{content:""}.fa-renren:before{content:""}.fa-reply:before{content:""}.fa-reply-all:before{content:""}.fa-replyd:before{content:""}.fa-republican:before{content:""}.fa-researchgate:before{content:""}.fa-resolving:before{content:""}.fa-retweet:before{content:""}.fa-rev:before{content:""}.fa-ribbon:before{content:""}.fa-ring:before{content:""}.fa-road:before{content:""}.fa-robot:before{content:""}.fa-rocket:before{content:""}.fa-rocketchat:before{content:""}.fa-rockrms:before{content:""}.fa-route:before{content:""}.fa-rss:before{content:""}.fa-rss-square:before{content:""}.fa-ruble-sign:before{content:""}.fa-ruler:before{content:""}.fa-ruler-combined:before{content:""}.fa-ruler-horizontal:before{content:""}.fa-ruler-vertical:before{content:""}.fa-running:before{content:""}.fa-rupee-sign:before{content:""}.fa-sad-cry:before{content:""}.fa-sad-tear:before{content:""}.fa-safari:before{content:""}.fa-sass:before{content:""}.fa-save:before{content:""}.fa-schlix:before{content:""}.fa-school:before{content:""}.fa-screwdriver:before{content:""}.fa-scribd:before{content:""}.fa-scroll:before{content:""}.fa-search:before{content:""}.fa-search-dollar:before{content:""}.fa-search-location:before{content:""}.fa-search-minus:before{content:""}.fa-search-plus:before{content:""}.fa-searchengin:before{content:""}.fa-seedling:before{content:""}.fa-sellcast:before{content:""}.fa-sellsy:before{content:""}.fa-server:before{content:""}.fa-servicestack:before{content:""}.fa-shapes:before{content:""}.fa-share:before{content:""}.fa-share-alt:before{content:""}.fa-share-alt-square:before{content:""}.fa-share-square:before{content:""}.fa-shekel-sign:before{content:""}.fa-shield-alt:before{content:""}.fa-ship:before{content:""}.fa-shipping-fast:before{content:""}.fa-shirtsinbulk:before{content:""}.fa-shoe-prints:before{content:""}.fa-shopping-bag:before{content:""}.fa-shopping-basket:before{content:""}.fa-shopping-cart:before{content:""}.fa-shopware:before{content:""}.fa-shower:before{content:""}.fa-shuttle-van:before{content:""}.fa-sign:before{content:""}.fa-sign-in-alt:before{content:""}.fa-sign-language:before{content:""}.fa-sign-out-alt:before{content:""}.fa-signal:before{content:""}.fa-signature:before{content:""}.fa-simplybuilt:before{content:""}.fa-sistrix:before{content:""}.fa-sitemap:before{content:""}.fa-sith:before{content:""}.fa-skull:before{content:""}.fa-skull-crossbones:before{content:""}.fa-skyatlas:before{content:""}.fa-skype:before{content:""}.fa-slack:before{content:""}.fa-slack-hash:before{content:""}.fa-slash:before{content:""}.fa-sliders-h:before{content:""}.fa-slideshare:before{content:""}.fa-smile:before{content:""}.fa-smile-beam:before{content:""}.fa-smile-wink:before{content:""}.fa-smog:before{content:""}.fa-smoking:before{content:""}.fa-smoking-ban:before{content:""}.fa-snapchat:before{content:""}.fa-snapchat-ghost:before{content:""}.fa-snapchat-square:before{content:""}.fa-snowflake:before{content:""}.fa-socks:before{content:""}.fa-solar-panel:before{content:""}.fa-sort:before{content:""}.fa-sort-alpha-down:before{content:""}.fa-sort-alpha-up:before{content:""}.fa-sort-amount-down:before{content:""}.fa-sort-amount-up:before{content:""}.fa-sort-down:before{content:""}.fa-sort-numeric-down:before{content:""}.fa-sort-numeric-up:before{content:""}.fa-sort-up:before{content:""}.fa-soundcloud:before{content:""}.fa-spa:before{content:""}.fa-space-shuttle:before{content:""}.fa-speakap:before{content:""}.fa-spider:before{content:""}.fa-spinner:before{content:""}.fa-splotch:before{content:""}.fa-spotify:before{content:""}.fa-spray-can:before{content:""}.fa-square:before{content:""}.fa-square-full:before{content:""}.fa-square-root-alt:before{content:""}.fa-squarespace:before{content:""}.fa-stack-exchange:before{content:""}.fa-stack-overflow:before{content:""}.fa-stamp:before{content:""}.fa-star:before{content:""}.fa-star-and-crescent:before{content:""}.fa-star-half:before{content:""}.fa-star-half-alt:before{content:""}.fa-star-of-david:before{content:""}.fa-star-of-life:before{content:""}.fa-staylinked:before{content:""}.fa-steam:before{content:""}.fa-steam-square:before{content:""}.fa-steam-symbol:before{content:""}.fa-step-backward:before{content:""}.fa-step-forward:before{content:""}.fa-stethoscope:before{content:""}.fa-sticker-mule:before{content:""}.fa-sticky-note:before{content:""}.fa-stop:before{content:""}.fa-stop-circle:before{content:""}.fa-stopwatch:before{content:""}.fa-store:before{content:""}.fa-store-alt:before{content:""}.fa-strava:before{content:""}.fa-stream:before{content:""}.fa-street-view:before{content:""}.fa-strikethrough:before{content:""}.fa-stripe:before{content:""}.fa-stripe-s:before{content:""}.fa-stroopwafel:before{content:""}.fa-studiovinari:before{content:""}.fa-stumbleupon:before{content:""}.fa-stumbleupon-circle:before{content:""}.fa-subscript:before{content:""}.fa-subway:before{content:""}.fa-suitcase:before{content:""}.fa-suitcase-rolling:before{content:""}.fa-sun:before{content:""}.fa-superpowers:before{content:""}.fa-superscript:before{content:""}.fa-supple:before{content:""}.fa-surprise:before{content:""}.fa-swatchbook:before{content:""}.fa-swimmer:before{content:""}.fa-swimming-pool:before{content:""}.fa-synagogue:before{content:""}.fa-sync:before{content:""}.fa-sync-alt:before{content:""}.fa-syringe:before{content:""}.fa-table:before{content:""}.fa-table-tennis:before{content:""}.fa-tablet:before{content:""}.fa-tablet-alt:before{content:""}.fa-tablets:before{content:""}.fa-tachometer-alt:before{content:""}.fa-tag:before{content:""}.fa-tags:before{content:""}.fa-tape:before{content:""}.fa-tasks:before{content:""}.fa-taxi:before{content:""}.fa-teamspeak:before{content:""}.fa-teeth:before{content:""}.fa-teeth-open:before{content:""}.fa-telegram:before{content:""}.fa-telegram-plane:before{content:""}.fa-temperature-high:before{content:""}.fa-temperature-low:before{content:""}.fa-tencent-weibo:before{content:""}.fa-terminal:before{content:""}.fa-text-height:before{content:""}.fa-text-width:before{content:""}.fa-th:before{content:""}.fa-th-large:before{content:""}.fa-th-list:before{content:""}.fa-the-red-yeti:before{content:""}.fa-theater-masks:before{content:""}.fa-themeco:before{content:""}.fa-themeisle:before{content:""}.fa-thermometer:before{content:""}.fa-thermometer-empty:before{content:""}.fa-thermometer-full:before{content:""}.fa-thermometer-half:before{content:""}.fa-thermometer-quarter:before{content:""}.fa-thermometer-three-quarters:before{content:""}.fa-think-peaks:before{content:""}.fa-thumbs-down:before{content:""}.fa-thumbs-up:before{content:""}.fa-thumbtack:before{content:""}.fa-ticket-alt:before{content:""}.fa-times:before{content:""}.fa-times-circle:before{content:""}.fa-tint:before{content:""}.fa-tint-slash:before{content:""}.fa-tired:before{content:""}.fa-toggle-off:before{content:""}.fa-toggle-on:before{content:""}.fa-toilet-paper:before{content:""}.fa-toolbox:before{content:""}.fa-tooth:before{content:""}.fa-torah:before{content:""}.fa-torii-gate:before{content:""}.fa-tractor:before{content:""}.fa-trade-federation:before{content:""}.fa-trademark:before{content:""}.fa-traffic-light:before{content:""}.fa-train:before{content:""}.fa-transgender:before{content:""}.fa-transgender-alt:before{content:""}.fa-trash:before{content:""}.fa-trash-alt:before{content:""}.fa-tree:before{content:""}.fa-trello:before{content:""}.fa-tripadvisor:before{content:""}.fa-trophy:before{content:""}.fa-truck:before{content:""}.fa-truck-loading:before{content:""}.fa-truck-monster:before{content:""}.fa-truck-moving:before{content:""}.fa-truck-pickup:before{content:""}.fa-tshirt:before{content:""}.fa-tty:before{content:""}.fa-tumblr:before{content:""}.fa-tumblr-square:before{content:""}.fa-tv:before{content:""}.fa-twitch:before{content:""}.fa-twitter:before{content:""}.fa-twitter-square:before{content:""}.fa-typo3:before{content:""}.fa-uber:before{content:""}.fa-uikit:before{content:""}.fa-umbrella:before{content:""}.fa-umbrella-beach:before{content:""}.fa-underline:before{content:""}.fa-undo:before{content:""}.fa-undo-alt:before{content:""}.fa-uniregistry:before{content:""}.fa-universal-access:before{content:""}.fa-university:before{content:""}.fa-unlink:before{content:""}.fa-unlock:before{content:""}.fa-unlock-alt:before{content:""}.fa-untappd:before{content:""}.fa-upload:before{content:""}.fa-usb:before{content:""}.fa-user:before{content:""}.fa-user-alt:before{content:""}.fa-user-alt-slash:before{content:""}.fa-user-astronaut:before{content:""}.fa-user-check:before{content:""}.fa-user-circle:before{content:""}.fa-user-clock:before{content:""}.fa-user-cog:before{content:""}.fa-user-edit:before{content:""}.fa-user-friends:before{content:""}.fa-user-graduate:before{content:""}.fa-user-injured:before{content:""}.fa-user-lock:before{content:""}.fa-user-md:before{content:""}.fa-user-minus:before{content:""}.fa-user-ninja:before{content:""}.fa-user-plus:before{content:""}.fa-user-secret:before{content:""}.fa-user-shield:before{content:""}.fa-user-slash:before{content:""}.fa-user-tag:before{content:""}.fa-user-tie:before{content:""}.fa-user-times:before{content:""}.fa-users:before{content:""}.fa-users-cog:before{content:""}.fa-ussunnah:before{content:""}.fa-utensil-spoon:before{content:""}.fa-utensils:before{content:""}.fa-vaadin:before{content:""}.fa-vector-square:before{content:""}.fa-venus:before{content:""}.fa-venus-double:before{content:""}.fa-venus-mars:before{content:""}.fa-viacoin:before{content:""}.fa-viadeo:before{content:""}.fa-viadeo-square:before{content:""}.fa-vial:before{content:""}.fa-vials:before{content:""}.fa-viber:before{content:""}.fa-video:before{content:""}.fa-video-slash:before{content:""}.fa-vihara:before{content:""}.fa-vimeo:before{content:""}.fa-vimeo-square:before{content:""}.fa-vimeo-v:before{content:""}.fa-vine:before{content:""}.fa-vk:before{content:""}.fa-vnv:before{content:""}.fa-volleyball-ball:before{content:""}.fa-volume-down:before{content:""}.fa-volume-mute:before{content:""}.fa-volume-off:before{content:""}.fa-volume-up:before{content:""}.fa-vote-yea:before{content:""}.fa-vr-cardboard:before{content:""}.fa-vuejs:before{content:""}.fa-walking:before{content:""}.fa-wallet:before{content:""}.fa-warehouse:before{content:""}.fa-water:before{content:""}.fa-weebly:before{content:""}.fa-weibo:before{content:""}.fa-weight:before{content:""}.fa-weight-hanging:before{content:""}.fa-weixin:before{content:""}.fa-whatsapp:before{content:""}.fa-whatsapp-square:before{content:""}.fa-wheelchair:before{content:""}.fa-whmcs:before{content:""}.fa-wifi:before{content:""}.fa-wikipedia-w:before{content:""}.fa-wind:before{content:""}.fa-window-close:before{content:""}.fa-window-maximize:before{content:""}.fa-window-minimize:before{content:""}.fa-window-restore:before{content:""}.fa-windows:before{content:""}.fa-wine-bottle:before{content:""}.fa-wine-glass:before{content:""}.fa-wine-glass-alt:before{content:""}.fa-wix:before{content:""}.fa-wizards-of-the-coast:before{content:""}.fa-wolf-pack-battalion:before{content:""}.fa-won-sign:before{content:""}.fa-wordpress:before{content:""}.fa-wordpress-simple:before{content:""}.fa-wpbeginner:before{content:""}.fa-wpexplorer:before{content:""}.fa-wpforms:before{content:""}.fa-wpressr:before{content:""}.fa-wrench:before{content:""}.fa-x-ray:before{content:""}.fa-xbox:before{content:""}.fa-xing:before{content:""}.fa-xing-square:before{content:""}.fa-y-combinator:before{content:""}.fa-yahoo:before{content:""}.fa-yandex:before{content:""}.fa-yandex-international:before{content:""}.fa-yelp:before{content:""}.fa-yen-sign:before{content:""}.fa-yin-yang:before{content:""}.fa-yoast:before{content:""}.fa-youtube:before{content:""}.fa-youtube-square:before{content:""}.fa-zhihu:before{content:""}.sr-only{border:0;clip:rect(0, 0, 0, 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.sr-only-focusable:active,.sr-only-focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}@font-face{font-family:"Font Awesome 5 Brands";font-style:normal;font-weight:normal;src:url(fonts/fa-brands-400.eot);src:url(fonts/fa-brands-400.eot?#iefix) format("embedded-opentype"),url(fonts/fa-brands-400.woff2) format("woff2"),url(fonts/fa-brands-400.woff) format("woff"),url(fonts/fa-brands-400.ttf) format("truetype"),url(fonts/fa-brands-400.svg#fontawesome) format("svg")}.fab{font-family:"Font Awesome 5 Brands"}@font-face{font-family:"Font Awesome 5 Free";font-style:normal;font-weight:400;src:url(fonts/fa-regular-400.eot);src:url(fonts/fa-regular-400.eot?#iefix) format("embedded-opentype"),url(fonts/fa-regular-400.woff2) format("woff2"),url(fonts/fa-regular-400.woff) format("woff"),url(fonts/fa-regular-400.ttf) format("truetype"),url(fonts/fa-regular-400.svg#fontawesome) format("svg")}.far{font-family:"Font Awesome 5 Free";font-weight:400}@font-face{font-family:"Font Awesome 5 Free";font-style:normal;font-weight:900;src:url(fonts/fa-solid-900.eot);src:url(fonts/fa-solid-900.eot?#iefix) format("embedded-opentype"),url(fonts/fa-solid-900.woff2) format("woff2"),url(fonts/fa-solid-900.woff) format("woff"),url(fonts/fa-solid-900.ttf) format("truetype"),url(fonts/fa-solid-900.svg#fontawesome) format("svg")}.fa,.fas{font-family:"Font Awesome 5 Free";font-weight:900}.tykon:before{font-family:"tykon" !important;font-style:normal !important;font-weight:normal !important;font-variant:normal !important;text-transform:none !important;speak:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.tykon-arrowdown:before{content:"a"}.tykon-arrowleft:before{content:"b"}.tykon-arrowright:before{content:"c"}.tykon-arrowup:before{content:"d"}.tykon-doublearrowdown:before{content:"e"}.tykon-filter:before{content:"f"}.tykon-graph1:before{content:"g"}.tykon-graph2:before{content:"h"}.tykon-label:before{content:"i"}.tykon-reload:before{content:"j"}.tykon-select:before{content:"k"}.tykon-target:before{content:"l"}.tykon-undo:before{content:"m"}.tykon-deployment:before{content:"n"}.tykon-team:before{content:"o"}.tykon-overview:before{content:"p"}.tykon-loadout:before{content:"q"}.tykon-entitlement:before{content:"r"}.tykon-users:before{content:"s"}.tykon-doublearrowdown:before{content:"e"}.tykon-arrowsort:before{content:"W"}.tykon-check:before{content:"V"}.tykon-copy:before{content:"C"}.tykon-delete:before{content:"U"}.tykon-download:before{content:"L"}.tykon-draft:before{content:"D"}.tykon-edit:before{content:"E"}.tykon-filter:before{content:"f"}.tykon-graphq2:before{content:"h"}.tykon-help:before{content:"?"}.tykon-label:before{content:"i"}.tykon-link:before{content:"R"}.tykon-lock1:before{content:"Y"}.tykon-lock2:before{content:"Z"}.tykon-notifications:before{content:"N"}.tykon-plus:before{content:"+"}.tykon-profile:before{content:"P"}.tykon-reload:before{content:"j"}.tykon-search:before{content:"O"}.tykon-select:before{content:"k"}.tykon-settings:before{content:"S"}.tykon-target:before{content:"l"}.tykon-undo:before{content:"m"}.tykon-warning:before{content:"!"}.tykon-x:before{content:"X"}.tykon-waiting:before{content:"T"}.tykon-fullscreen:before{content:""}.tykon-fullscreen-exit:before{content:""}.tykon-time:before{content:"t"}h1,h2,h3,h4,h5,h6{margin-bottom:15px;font-family:"smoolthan_medium";font-weight:500;color:#36364c}label{display:inline-block;max-width:100%;margin-bottom:5px;color:#36364c}h1{font-size:25px;line-height:30px}h2{font-size:20px;line-height:24px}h3{font-size:17px;line-height:23px}h4{font-size:16px;line-height:22px}h5{font-size:14px;line-height:19px}h6{font-size:12px;line-height:16px}p,label{font-size:14px;line-height:19px;font-family:"OpenSans-regular"}strong{font-family:"OpenSans-Bold"}a:not(.tyk-button){cursor:pointer;color:#505071;font-family:"OpenSans-regular"}a:not(.tyk-button).link--bold{font-family:"OpenSans-Bold"}a:not(.tyk-button)+a{margin-left:5px}a:not(.tyk-button) i{font-size:9px}p a,label a{font-size:14px;text-decoration:underline}.font-family-regular{font-family:"OpenSans-regular"}.font-family-medium{font-family:"OpenSans-SemiBold"}.font-family-bold{font-family:"OpenSans-Bold"}.heading-font-family-regular{font-family:"smoolthan_regular"}.heading-font-family-medium{font-family:"smoolthan_medium"}.heading-font-family-bold{font-family:"smoolthan_bold"}.text--primary{color:#a2a2cc}.text--danger{color:#ff6c7d}.text--info{color:#82bbc6}.text-warning{color:#d6b218}.text--medium{font-family:"OpenSans-SemiBold"}.text--bold{font-family:"OpenSans-Bold"}.text--uppercase{text-transform:uppercase}.text--ellipsis{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.text--underline{text-decoration:underline}td.text-ellipsis{max-width:250px}.section-title{font-family:"smoolthan_bold";margin-bottom:5px}.section-title .tyk-icon{margin-left:5px}.sub-section-title{margin-bottom:5px;font-family:"OpenSans-SemiBold";font-size:16px;line-height:22px}.sub-section-title .tyk-icon{margin-left:5px}.section-group-title{margin-bottom:5px;font-family:"OpenSans-Bold";font-size:14px;line-height:19px;text-transform:uppercase}.section-group-title .tyk-icon{margin-left:5px}.text--default-light{color:#c3c3e5 !important}.text--default{color:#36364c !important}.text--primary{color:#a2a2cc !important}.text--danger{color:#ff6c7d !important}.text--success{color:#00d9ba !important}.text--warning{color:#d6b218 !important}.tyk-form-section__title{font-size:16px;margin:5px 0 15px 0}.tyk-form-section__title--light{color:#43435b}.tyk-form-group{margin-bottom:15px}.tyk-form-group.has-error>.tyk-form-control__wrapper>.tyk-form-control,.tyk-form-group.has-error>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control,.tyk-form-group.has-error .tyk-file-input__wrapper>.tyk-form-control{border:2px solid #ff6c7d;border-left:2px solid #ea4766;outline:none}.tyk-form-group.has-error>.tyk-form-control__wrapper>.tyk-form-control:focus,.tyk-form-group.has-error>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control:focus,.tyk-form-group.has-error .tyk-file-input__wrapper>.tyk-form-control:focus{border-left:2px solid #ea4766;border-color:#ea4766;outline:none}.tyk-form-group label{font-family:"OpenSans-SemiBold"}.tyk-form-group--inline{align-items:stretch;display:flex;flex-wrap:nowrap}.tyk-form-group--inline .tyk-form-control__wrapper{flex:1}.tyk-form-group--inline label{display:flex;white-space:nowrap;margin-right:20px;margin-top:14px}.tyk-form-group--inline input,.tyk-form-group--inline select{display:flex}.tyk-form-group--inline .tyk-form-control__help-block{display:flex;margin-left:auto}.tyk-form-group--default{color:#505071}.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-form-control,.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control,.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control{border:2px solid #c3c3e5;color:#505071}.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-form-control[disabled],.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control[disabled],.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control[disabled]{border:2px solid #c3c3e5;background-color:#ededf9;color:#505071;cursor:not-allowed}.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-form-control[disabled]+.tyk-input-group__addon,.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control[disabled]+.tyk-input-group__addon,.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control[disabled]+.tyk-input-group__addon{background-color:#ededf9}.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-form-control::placeholder,.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control::placeholder,.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control::placeholder{opacity:.8}.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-form-control:-ms-input-placeholder,.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control:-ms-input-placeholder,.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control:-ms-input-placeholder{opacity:.8}.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-form-control::-ms-input-placeholder,.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control::-ms-input-placeholder,.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control::-ms-input-placeholder{opacity:.8}.tyk-form-group--default.tyk-form-group--addon-left .tyk-input-group__addon{border-bottom:2px solid #c3c3e5;border-left:2px solid #c3c3e5;border-top:2px solid #c3c3e5;color:#505071}.tyk-form-group--default.tyk-form-group--addon-right .tyk-input-group__addon{border-bottom:2px solid #c3c3e5;border-right:2px solid #c3c3e5;border-top:2px solid #c3c3e5;color:#505071}.tyk-form-group--primary{color:#505071}.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-form-control,.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control,.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control{border:2px solid #a2a2cc;color:#505071}.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-form-control[disabled],.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control[disabled],.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control[disabled]{border:2px solid #a2a2cc;background-color:#ededf9;color:#505071;cursor:not-allowed}.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-form-control[disabled]+.tyk-input-group__addon,.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control[disabled]+.tyk-input-group__addon,.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control[disabled]+.tyk-input-group__addon{background-color:#ededf9}.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-form-control::placeholder,.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control::placeholder,.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control::placeholder{opacity:.8}.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-form-control:-ms-input-placeholder,.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control:-ms-input-placeholder,.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control:-ms-input-placeholder{opacity:.8}.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-form-control::-ms-input-placeholder,.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control::-ms-input-placeholder,.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control::-ms-input-placeholder{opacity:.8}.tyk-form-group--primary.tyk-form-group--addon-left .tyk-input-group__addon{border-bottom:2px solid #a2a2cc;border-left:2px solid #a2a2cc;border-top:2px solid #a2a2cc;color:#a2a2cc}.tyk-form-group--primary.tyk-form-group--addon-right .tyk-input-group__addon{border-bottom:2px solid #a2a2cc;border-right:2px solid #a2a2cc;border-top:2px solid #a2a2cc;color:#a2a2cc}.tyk-form-group--success{color:#505071}.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-form-control,.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control,.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control{border:2px solid #00d9ba;color:#505071}.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-form-control[disabled],.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control[disabled],.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control[disabled]{border:2px solid #00d9ba;background-color:#ededf9;color:#505071;cursor:not-allowed}.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-form-control[disabled]+.tyk-input-group__addon,.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control[disabled]+.tyk-input-group__addon,.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control[disabled]+.tyk-input-group__addon{background-color:#ededf9}.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-form-control::placeholder,.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control::placeholder,.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control::placeholder{opacity:.8}.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-form-control:-ms-input-placeholder,.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control:-ms-input-placeholder,.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control:-ms-input-placeholder{opacity:.8}.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-form-control::-ms-input-placeholder,.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control::-ms-input-placeholder,.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control::-ms-input-placeholder{opacity:.8}.tyk-form-group--success.tyk-form-group--addon-left .tyk-input-group__addon{border-bottom:2px solid #00d9ba;border-left:2px solid #00d9ba;border-top:2px solid #00d9ba;color:#00d9ba}.tyk-form-group--success.tyk-form-group--addon-right .tyk-input-group__addon{border-bottom:2px solid #00d9ba;border-right:2px solid #00d9ba;border-top:2px solid #00d9ba;color:#00d9ba}.tyk-form-group--rounded-corners.has-error>.tyk-form-control__wrapper>.tyk-form-control{border-left:2px solid #ff6c7d}.tyk-form-group--rounded-corners.has-error>.tyk-form-control__wrapper>.tyk-form-control:focus{border-left:2px solid #ff6c7d;outline:none}.tyk-form-group--rounded-corners .tyk-form-control{border-radius:18px}.tyk-form-group--addon-right input{border-right:0 !important;padding-right:0}.tyk-form-group--addon-left input{border-left:0 !important;padding-left:0}.tyk-form-group--rounded-corners.tyk-form-group--addon-right input{border-top-right-radius:0;border-bottom-right-radius:0}.tyk-form-group--rounded-corners.tyk-form-group--addon-right .tyk-input-group__addon{background:#fff;border-top-right-radius:18px;border-bottom-right-radius:18px;color:#505071}.tyk-form-group--rounded-corners.tyk-form-group--addon-left input{border-top-left-radius:0;border-bottom-left-radius:0;border-left:0 !important}.tyk-form-group--rounded-corners.tyk-form-group--addon-left .tyk-input-group__addon{background:#fff;border-top-left-radius:18px;border-bottom-left-radius:18px;color:#505071}.tyk-form-control__error-message{font-family:"OpenSans-regular";font-size:12px;line-height:16px;margin-top:5px;padding:0 0 0 20px;position:relative}.tyk-form-control__error-message:before{content:"!";background:#ff6c7d;color:#fff;font-family:"OpenSans-Bold";border-radius:8px;display:inline-block;margin-right:5px;padding:0px 7px}.tyk-input-group{align-items:center;display:flex;outline:none}.tyk-input-group__addon{align-items:center;background-color:#fff;border:2px solid #c3c3e5;display:flex;height:39px;padding:10px 10px 10px 10px}.tyk-input-group__addon:first-child{border-right:0}.tyk-input-group__addon:last-child{border-left:0}.tyk-form-control{font-family:"OpenSans-SemiBold";font-size:14px;line-height:19px;border:2px solid #c3c3e5;background-color:#fff;color:#505071;display:block;height:39px;padding:10px 20px 10px 20px;transition:all .2s linear;width:100%}.tyk-form-control[disabled]{background-color:#ededf9;cursor:not-allowed}.tyk-form-control[disabled] .tyk-input-group__addon{background-color:#ededf9}.tyk-form-control::placeholder{font-family:"OpenSans-SemiBold";color:#a2a2cc}.tyk-form-control:focus,.tyk-form-control:active{outline:none;border:2px solid #00d9ba !important}.tyk-form-control:focus+.tyk-input-group__addon,.tyk-form-control:active+.tyk-input-group__addon{border:2px solid #00d9ba !important;border-left:none !important}.tyk-form-control__help-block{color:#36364c;font-style:normal;font-family:"OpenSans-regular";font-size:12px;line-height:16px;padding:0 0 0 20px;margin:5px 0 0 0}select{border-radius:0;-webkit-appearance:none}.inline-form-wrapper{align-items:center;display:flex;width:100%}.inline-form-wrapper .inline-form{width:100%}.inline-form-wrapper>button{margin-left:10px;margin-bottom:15px}.tyk-checkbox,.tyk-radio{margin:10px 0}.tyk-checkbox label,.tyk-radio label{font-family:"OpenSans-SemiBold"}.tyk-checkbox input,.tyk-radio input{margin:0 5px 0 0}.tyk-checkbox--inline,.tyk-radio--inline{display:inline-flex;margin-left:15px}.tyk-checkbox--inline:first-child,.tyk-radio--inline:first-child{margin-left:0}.tyk-inline-form{align-items:center;display:flex;flex-wrap:wrap}.tyk-inline-form .tyk-form-group{flex:1;margin-left:20px;min-width:200px}.tyk-inline-form .tyk-form-group:first-child{margin-left:0}.tyk-inline-form>.tyk-button{margin-left:20px;margin-bottom:15px}.tyk-accordion__item-header>button,.tyk-accordion__trigger{background:none;border:none;cursor:pointer;display:flex;font-size:14px;outline:none;padding:15px 15px;width:100%}.tyk-accordion__item-header>button .tyk-icon,.tyk-accordion__trigger .tyk-icon{margin-left:auto}.tyk-accordion__item{display:grid}.tyk-accordion__item--trigger-position-left{grid-template-columns:40px auto;grid-template-areas:"trigger header" "trigger content"}.tyk-accordion__item--trigger-position-right{grid-template-columns:auto 40px;grid-template-areas:"header trigger" "content trigger"}.tyk-accordion__item--trigger-in-header{grid-template-columns:auto;grid-template-areas:"header" "content"}.tyk-accordion__trigger-wrapper{grid-area:trigger;display:flex;align-items:flex-start;justify-content:center}.tyk-accordion__trigger-wrapper .tyk-icon{margin-left:auto;margin-right:auto}.tyk-accordion__item-header{grid-area:header}.tyk-accordion__trigger--disabled{color:#e1e1e1}.tyk-accordion__item-header.tyk-accordion__arrow-trigger{align-items:center;display:flex}.tyk-accordion__item-header.tyk-accordion__arrow-trigger>div{flex:1}.tyk-accordion__item-header.tyk-accordion__arrow-trigger>button{margin-left:auto;width:auto}.tyk-accordion__item-content{grid-area:content}:root{--tooltip-max-width: 450px}.tyk-tooltip{display:flex;align-items:center;background-color:#ededf9;border:2px solid #a2a2cc;border-radius:18px;max-width:var(--tooltip-max-width);padding:20px}.tyk-tooltip>.tyk-icon:first-child{width:32px;height:32px;border-radius:50%;color:#fff;background-color:#7a79a1}.tyk-tooltip>.tyk-icon:first-child:before{display:flex;width:100%;height:100%;align-items:center;justify-content:center}.tyk-tooltip>.tyk-icon+.tyk-tooltip__content{margin-left:20px}.tyk-tooltip__content{color:#505071;word-break:break-word;word-wrap:break-word}.tyk-tooltip__content+.tyk-icon{margin-left:20px}.tyk-tooltip>.tyk-icon:last-child{cursor:pointer}.tyk-button{background-color:rgba(0,0,0,0);border:none;color:#fff;cursor:pointer;display:inline-block;font-family:"OpenSans-Bold";text-align:center;text-transform:uppercase;text-decoration:none;transition:all .2s linear;user-select:none;vertical-align:middle;white-space:nowrap;padding:8px 23px;font-size:14px;line-height:22px;border-radius:20px}.tyk-button+.tyk-button,.tyk-button+.tyk-dropdown,.tyk-button+.tyk-toggle{margin-left:10px}.tyk-button span+i{margin-left:10px}.tyk-button i+span{margin-left:10px}.tyk-button.disabled{cursor:not-allowed;opacity:.7}.tyk-button:hover{color:#fff;text-decoration:none}.tyk-button:focus{outline:none}.tyk-button--white{background-color:#fff;color:#36364c;border:2px solid rgba(0,0,0,0)}.tyk-button--white:hover{background-color:#43435b;color:#fff}.tyk-button--primary{background-color:#7a79a1;color:#fff;border:2px solid #7a79a1}.tyk-button--primary:hover{background-color:#505071;color:#fff}.tyk-button--primary-link{background-color:rgba(0,0,0,0);border:2px solid rgba(0,0,0,0);color:#7a79a1}.tyk-button--primary-link:hover{background-color:rgba(0,0,0,0);color:#7a79a1;border-color:#7a79a1;text-decoration:underline}.tyk-button--primary-outline{border:2px solid #7a79a1;background-color:rgba(0,0,0,0);color:#7a79a1}.tyk-button--primary-outline:hover{background-color:#7a79a1;color:#fff}.tyk-button--primary-outline.disabled{color:#7a79a1}.tyk-button--primary-outline.disabled:hover{background-color:rgba(0,0,0,0);color:#7a79a1}.tyk-button--primary-gradient{border-image:linear-gradient(to right, #A2A2CC, #505071, #A2A2CC) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #A2A2CC, #505071, #A2A2CC);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-button--primary-gradient:hover,.tyk-button--primary-gradient:active,.tyk-button--primary-gradient:active:focus{border-image:linear-gradient(to right, #A2A2CC, #505071, #A2A2CC) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #A2A2CC, #505071, #A2A2CC);background-position:100% 0;background-size:200% auto;background-clip:border-box}.tyk-button--primary-gradient:hover.disabled,.tyk-button--primary-gradient:active.disabled,.tyk-button--primary-gradient:active:focus.disabled{border-image:linear-gradient(to right, #A2A2CC, #505071, #A2A2CC) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #A2A2CC, #505071, #A2A2CC);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-button--success{background-color:#00d9ba;color:#fff;border:2px solid #00d9ba}.tyk-button--success:hover{background-color:#00b798;color:#fff}.tyk-button--success-link{background-color:rgba(0,0,0,0);border:2px solid rgba(0,0,0,0);color:#00d9ba}.tyk-button--success-link:hover{background-color:rgba(0,0,0,0);color:#00d9ba;border-color:#00d9ba;text-decoration:underline}.tyk-button--success-outline{border:2px solid #00d9ba;background-color:rgba(0,0,0,0);color:#00d9ba}.tyk-button--success-outline:hover{background-color:#00d9ba;color:#fff}.tyk-button--success-outline.disabled{color:#00d9ba}.tyk-button--success-outline.disabled:hover{background-color:rgba(0,0,0,0);color:#00d9ba}.tyk-button--success-gradient{border-image:linear-gradient(to right, #00d9ba, #00B798, #00d9ba) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #00d9ba, #00B798, #00d9ba);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-button--success-gradient:hover,.tyk-button--success-gradient:active,.tyk-button--success-gradient:active:focus{border-image:linear-gradient(to right, #00d9ba, #00B798, #00d9ba) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #00d9ba, #00B798, #00d9ba);background-position:100% 0;background-size:200% auto;background-clip:border-box}.tyk-button--success-gradient:hover.disabled,.tyk-button--success-gradient:active.disabled,.tyk-button--success-gradient:active:focus.disabled{border-image:linear-gradient(to right, #00d9ba, #00B798, #00d9ba) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #00d9ba, #00B798, #00d9ba);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-button--danger{background-color:#ff6c7d;color:#fff;border:2px solid #ff6c7d}.tyk-button--danger:hover{background-color:#ea4766;color:#fff}.tyk-button--danger-link{background-color:rgba(0,0,0,0);border:2px solid rgba(0,0,0,0);color:#ff6c7d}.tyk-button--danger-link:hover{background-color:rgba(0,0,0,0);color:#ff6c7d;border-color:#ff6c7d;text-decoration:underline}.tyk-button--danger-outline{border:2px solid #ff6c7d;background-color:rgba(0,0,0,0);color:#ff6c7d}.tyk-button--danger-outline:hover{background-color:#ff6c7d;color:#fff}.tyk-button--danger-outline.disabled{color:#ff6c7d}.tyk-button--danger-outline.disabled:hover{background-color:rgba(0,0,0,0);color:#ff6c7d}.tyk-button--danger-gradient{border-image:linear-gradient(to right, #FF6C7D, #EA4766, #FF6C7D) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #FF6C7D, #EA4766, #FF6C7D);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-button--danger-gradient:hover,.tyk-button--danger-gradient:active,.tyk-button--danger-gradient:active:focus{border-image:linear-gradient(to right, #FF6C7D, #EA4766, #FF6C7D) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #FF6C7D, #EA4766, #FF6C7D);background-position:100% 0;background-size:200% auto;background-clip:border-box}.tyk-button--danger-gradient:hover.disabled,.tyk-button--danger-gradient:active.disabled,.tyk-button--danger-gradient:active:focus.disabled{border-image:linear-gradient(to right, #FF6C7D, #EA4766, #FF6C7D) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #FF6C7D, #EA4766, #FF6C7D);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-button--warning{background-color:#d6b218;color:#fff;border:2px solid rgba(0,0,0,0)}.tyk-button--warning:hover{background-color:#b49514;color:#fff}.tyk-button--warning-link{background-color:rgba(0,0,0,0);border:2px solid rgba(0,0,0,0);color:#d6b218}.tyk-button--warning-link:hover{background-color:rgba(0,0,0,0);color:#d6b218;border-color:#d6b218;text-decoration:underline}.tyk-button--warning-outline{border:2px solid #d6b218;background-color:rgba(0,0,0,0);color:#d6b218}.tyk-button--warning-outline:hover{background-color:#d6b218;color:#fff}.tyk-button--warning-outline.disabled{color:#d6b218}.tyk-button--warning-outline.disabled:hover{background-color:rgba(0,0,0,0);color:#d6b218}.tyk-button--warning-gradient{border-image:linear-gradient(to right, #D6B218, #FFE885, #D6B218) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #D6B218, #FFE885, #D6B218);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-button--warning-gradient:hover,.tyk-button--warning-gradient:active,.tyk-button--warning-gradient:active:focus{border-image:linear-gradient(to right, #D6B218, #FFE885, #D6B218) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #D6B218, #FFE885, #D6B218);background-position:100% 0;background-size:200% auto;background-clip:border-box}.tyk-button--warning-gradient:hover.disabled,.tyk-button--warning-gradient:active.disabled,.tyk-button--warning-gradient:active:focus.disabled{border-image:linear-gradient(to right, #D6B218, #FFE885, #D6B218) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #D6B218, #FFE885, #D6B218);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-button--info{background-color:#82bbc6;color:#fff;border:2px solid #82bbc6}.tyk-button--info:hover{background-color:#68adba;color:#fff}.tyk-button--info-link{background-color:rgba(0,0,0,0);border:2px solid rgba(0,0,0,0);color:#82bbc6}.tyk-button--info-link:hover{background-color:rgba(0,0,0,0);color:#82bbc6;border-color:#82bbc6;text-decoration:underline}.tyk-button--info-outline{border:2px solid #82bbc6;background-color:rgba(0,0,0,0);color:#82bbc6}.tyk-button--info-outline:hover{background-color:#82bbc6;color:#fff}.tyk-button--info-outline.disabled{color:#82bbc6}.tyk-button--info-outline.disabled:hover{background-color:rgba(0,0,0,0);color:#82bbc6}.tyk-button--info-gradient{border-image:linear-gradient(to right, #82BBC6, #D3EBEF, #82BBC6) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #82BBC6, #D3EBEF, #82BBC6);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#505071}.tyk-button--info-gradient:hover,.tyk-button--info-gradient:active,.tyk-button--info-gradient:active:focus{border-image:linear-gradient(to right, #82BBC6, #D3EBEF, #82BBC6) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #82BBC6, #D3EBEF, #82BBC6);background-position:100% 0;background-size:200% auto;background-clip:border-box}.tyk-button--info-gradient:hover.disabled,.tyk-button--info-gradient:active.disabled,.tyk-button--info-gradient:active:focus.disabled{border-image:linear-gradient(to right, #82BBC6, #D3EBEF, #82BBC6) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #82BBC6, #D3EBEF, #82BBC6);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#505071}.tyk-button--default{background-color:#36364c;color:#fff;border:2px solid #36364c}.tyk-button--default:hover{background-color:#505071;color:#fff}.tyk-button--default-link{background-color:rgba(0,0,0,0);border:2px solid rgba(0,0,0,0);color:#505071}.tyk-button--default-link:hover{background-color:rgba(0,0,0,0);color:#505071;border-color:#505071;text-decoration:underline}.tyk-button--default-outline{border:2px solid #36364c;background-color:rgba(0,0,0,0);color:#36364c}.tyk-button--default-outline:hover{background-color:#36364c;color:#fff}.tyk-button--default-outline.disabled{color:#36364c}.tyk-button--default-outline.disabled:hover{background-color:rgba(0,0,0,0);color:#36364c}.tyk-button--default-gradient{border-image:linear-gradient(to right, #36364C, #505071, #36364C) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #36364C, #505071, #36364C);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-button--default-gradient:hover,.tyk-button--default-gradient:active,.tyk-button--default-gradient:active:focus{border-image:linear-gradient(to right, #36364C, #505071, #36364C) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #36364C, #505071, #36364C);background-position:100% 0;background-size:200% auto;background-clip:border-box}.tyk-button--default-gradient:hover.disabled,.tyk-button--default-gradient:active.disabled,.tyk-button--default-gradient:active:focus.disabled{border-image:linear-gradient(to right, #36364C, #505071, #36364C) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #36364C, #505071, #36364C);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-button--sm{padding:3px 15px;font-size:12px;line-height:16px;border-radius:20px}.tyk-button--md{padding:8px 23px;font-size:14px;line-height:19px;border-radius:20px}.tyk-button--lg{padding:13px 23px;font-size:16px;line-height:22px;border-radius:20px}.tyk-button--icon-only{border-radius:18px;padding:0;line-height:20px;width:24px}.tyk-button--icon-only:hover{border-radius:18px}.tyk-button--fit{height:auto;width:auto;line-height:normal}.tyk-button--no-style{background:rgba(0,0,0,0);border:none;color:#505071}.tyk-button--no-style:hover{background:rgba(0,0,0,0);border:none;color:#505071}.tyk-button-group__wrapper{display:inline-block;position:relative;vertical-align:middle}.tyk-button-group__wrapper label{font-family:"OpenSans-SemiBold"}.tyk-button-group__wrapper .tyk-button-group{display:flex}.tyk-button-group__wrapper .tyk-button-group>.tyk-button-group:not(:first-child)>.tyk-button{border-top-left-radius:0;border-bottom-left-radius:0}.tyk-button-group__wrapper .tyk-button-group>.tyk-button-group:not(:last-child)>.tyk-button{border-top-right-radius:0;border-bottom-right-radius:0}.tyk-button-group__wrapper .tyk-button-group .tyk-button{border-radius:0}.tyk-button-group__wrapper .tyk-button-group .tyk-button+.tyk-button{margin-left:0}.tyk-button-group__wrapper .tyk-button-group .tyk-button+.tyk-dropdown{margin-left:0}.tyk-button-group__wrapper .tyk-button-group .tyk-button:first-child{border-top-left-radius:20px;border-bottom-left-radius:20px}.tyk-button-group__wrapper .tyk-button-group .tyk-button:last-child{border-top-right-radius:20px;border-bottom-right-radius:20px}.tyk-chart__wrapper{position:relative}.tyk-chart--no-data,.tyk-chart--loading-chart{filter:blur(10px);-webkit-filter:blur(10px)}.collapse-exit,.collapse-exit-active,.collapse-exit-done{height:0px}.collapse-wrapper{overflow:hidden;transition:all .2s}.collapse-horizontal-exit,.collapse-horizontal-exit-active,.collapse-horizontal-exit-done{width:0px}.collapse-horizontal-enter,.collapse-horizontal-enter-active,.collapse-horizontal-enter-done{width:100%}.tyk-copy-to-clipboard{position:absolute;left:-1000px;top:-1000px}.tyk-fixed-wrapper{left:0;position:sticky;right:0;top:0;z-index:8}.tyk-fixed-wrapper--scrolled{box-shadow:2px 2px 5px rgba(0,0,0,.1)}.floating-container{position:fixed;top:-9999px;overflow:auto;z-index:1080}.tyk-icon+.tyk-icon{margin-left:10px}.tyk-infinite-scroller{height:100%;overflow:hidden;position:relative}.tyk-infinite-scroller .loading{background:linear-gradient(180deg, rgba(255, 255, 255, 0), rgb(255, 255, 255));justify-content:center;bottom:0;display:flex;left:0;padding:15px 0;right:0;top:auto;width:100%}.tyk-infinite-scroller__wrapper{height:100%;overflow-y:auto}.tyk-info-note{border-radius:0;position:relative}.tyk-info-note p+p{margin-top:15px}.tyk-info-note:after{content:"";border-style:solid;border-width:0 20px 20px 0;border-color:rgba(0,0,0,0) #82bbc6 rgba(0,0,0,0) rgba(0,0,0,0);height:0;position:absolute;right:0;top:0;width:0}.tyk-info-note .tyk-message{border-radius:0;padding-top:40px;padding-bottom:40px}.tyk-loading__wrapper{background:rgba(255,255,255,.6);bottom:0;position:absolute;left:0;right:0;top:0;z-index:99}.loader-wrapper{min-height:100px;position:relative}.loading{position:absolute;top:calc(50% - 10px);left:50%}.loading.relative{left:auto;padding:25px;position:relative;text-align:center;top:auto;width:100%}.loading-bar{display:inline-block;width:4px;height:20px;border-radius:4px;animation:loading 1s ease-in-out infinite;margin-left:2px}.loading-bar:nth-child(1){animation-delay:0;background-color:#00d9ba;opacity:1}.loading-bar:nth-child(2){animation-delay:.09s;background-color:#00d9ba;opacity:.8}.loading-bar:nth-child(3){animation-delay:.18s;background-color:#00d9ba;opacity:.6}.loading-bar:nth-child(4){animation-delay:.27s;background-color:#00d9ba;opacity:.4}@keyframes loading{0%{transform:scale(1)}20%{transform:scale(1, 2.2)}40%{transform:scale(1)}}.tyk-list{border:2px solid #c3c3e5;border-radius:18px;font-size:14px;list-style-type:none;margin:0;max-height:191px;padding:0;overflow:auto}.tyk-list--with-inline-label{display:flex}.tyk-list--with-inline-label>label{margin-right:20px}.tyk-list li{border-bottom:1px solid #c3c3e5;padding:10px 20px;font-family:"OpenSans-SemiBold"}.tyk-list li:last-child{border:none}.tyk-list--default{border-color:#c3c3e5}.tyk-list--primary{border-color:#a2a2cc}.tyk-list--primary li{border-color:#ededf9;color:#505071}.tyk-list--primary-light{border-color:#ededf9}.tyk-list--primary-light li{border-color:#ededf9;color:#505071}.tyk-list--success{border-color:#00d9ba;color:#00d9ba}.tyk-list--success li{border-color:#00d9ba}.tyk-list--danger{border-color:#ff6c7d;color:#505071}.tyk-list--danger li{border-color:#ffbbc5}ul.tyk-list--inline{align-items:center;display:flex}ul.tyk-list--inline li{padding:0 10px}ul.tyk-list--inline.tyk-list--with-separator li:not(:first-child){border-left:1px solid #36364c}.tyk-message{display:flex;align-items:center;border-radius:18px;margin-bottom:20px;padding:20px 20px 20px 20px}.tyk-message__content{flex-grow:1;margin-left:20px;margin-right:20px}.tyk-message>.tyk-icon:first-child{width:32px;height:32px;flex-shrink:0;border-radius:50%;color:#fff}.tyk-message>.tyk-icon:first-child:before{display:flex;width:100%;height:100%;align-items:center;justify-content:center}.tyk-message>.tyk-icon:last-child{cursor:pointer}.tyk-message--default{background-color:#ededf9;border:2px solid #505071;color:#505071}.tyk-message--default>.tyk-icon:first-child{background-color:#505071}.tyk-message--default>.tyk-icon:first-child{transform:rotate(180deg)}.tyk-message--info{background-color:#d3ebef;border:2px solid #82bbc6;color:#82bbc6}.tyk-message--info>.tyk-icon:first-child{background-color:#82bbc6}.tyk-message--success{background-color:#c2f2e9;border:2px solid #00b798;color:#00b798}.tyk-message--success>.tyk-icon:first-child{background-color:#00b798}.tyk-message--warning{background-color:#ffe885;border:2px solid #d6b218;color:#c58c11}.tyk-message--warning>.tyk-icon:first-child{background-color:#d6b218}.tyk-message--danger{background-color:#f5ccd1;border:2px solid #ff6c7d;color:#ea4766}.tyk-message--danger>.tyk-icon:first-child{background-color:#ff6c7d}.tyk-modal{--theme-header-height: 15px;--theme-header-icon-size: 65px;align-items:center;bottom:0;left:0;pointer-events:none;position:fixed;right:0;top:0;z-index:-1}.tyk-modal .tyk-panel{border:2px solid #43435b;box-shadow:none;-webkit-box-shadow:none}.tyk-modal .tyk-modal__dialog{opacity:0;transition:all .2s ease}.tyk-modal.opened{display:flex;z-index:1080}.tyk-modal.opened .tyk-modal__dialog{display:flex;max-height:92vh;opacity:1;pointer-events:all}.tyk-modal.appear-enter-done .tyk-modal__dialog{opacity:1;margin-top:0}.tyk-modal__theme-header{position:absolute;top:-1px;left:0;right:0;height:var(--theme-header-height);border-top-left-radius:18px;border-top-right-radius:18px}.tyk-modal__theme-header .tyk-icon{position:absolute;left:calc(50% - var(--theme-header-icon-size)/2);top:calc((var(--theme-header-icon-size) - var(--theme-header-height))/-2);width:var(--theme-header-icon-size);height:var(--theme-header-icon-size);border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:25px;color:#fff}.tyk-modal--theme-success .tyk-modal__theme-header{background-color:#00d9ba}.tyk-modal--theme-success .tyk-modal__theme-header .tyk-icon{background-color:#00d9ba}.tyk-modal--theme-warning .tyk-modal__theme-header{background-color:#d6b218}.tyk-modal--theme-warning .tyk-modal__theme-header .tyk-icon{background-color:#d6b218}.tyk-modal--theme-danger .tyk-modal__theme-header{background-color:#ff6c7d}.tyk-modal--theme-danger .tyk-modal__theme-header .tyk-icon{background-color:#ff6c7d}.tyk-modal__dialog{opacity:0;margin:0 auto;margin-top:-5%;pointer-events:all;transition:all .2s linear;width:85%}@media only screen and (min-width: 768px){.tyk-modal__dialog{width:600px}}@media only screen and (min-width: 768px){.tyk-modal__dialog.tyk-modal--lg{width:800px}}.tyk-modal__content{background:#fff;border-radius:18px;display:flex;flex-direction:column;position:relative;width:100%}.tyk-modal__body{flex:1;overflow:auto;--padding-top: calc(25px + (var(--theme-header-icon-size) - var(--theme-header-height)) / 2);padding:var(--padding-top) 25px 25px}.tyk-modal__body.no-padding{padding:0}.tyk-modal__footer{align-items:center;display:flex;justify-content:flex-end;padding:25px}.tyk-modal__footer>:not(:first-child){margin-left:5px}.tyk-modal__backdrop{background-color:#505071;border:none;bottom:0;display:none;left:0;position:fixed;right:0;top:0;width:100%;z-index:1079}.tyk-modal__backdrop.opened{display:block;opacity:.5;transition:opacity .2s ease}.tyk-modal__backdrop.fade-enter-done{opacity:.5}.tyk-modal__header{--padding-top: calc(25px + (var(--theme-header-icon-size) - var(--theme-header-height)) / 2);padding:var(--padding-top) 25px 25px;align-items:center;border-bottom:1px solid #ededf9;display:flex;width:100%}.tyk-modal--theme-none .tyk-modal__header{padding-top:25px}.tyk-modal__header button{margin-left:auto;padding:0 5px}.tyk-modal__header+.tyk-modal__body{padding-top:25px}.tyk-modal__title{font-family:"OpenSans-SemiBold";font-weight:500;margin:0;width:100%}.tyk-navigation{background-color:#fff;height:100%;overflow:auto;padding:0;width:100%}.tyk-navigation .tyk-navigation-item{width:100%}.tyk-navigation .tyk-navigation-item a{color:#505071;display:flex;padding:10px 20px;text-decoration:none;transition:all .2s ease}.tyk-navigation .tyk-navigation-item a:hover{background-color:#a2a2cc;color:#fff}.tyk-navigation .tyk-navigation-item a.active{background-color:#505071;color:#fff}.tyk-nav-bar{align-items:center;border:none;background-color:#fff;font-family:"OpenSans-regular";color:#36364c;margin:0;padding:0 20px 0 20px;width:100%;z-index:8;transition:all .2s linear}.tyk-nav-bar__pre{align-self:flex-end;color:#505071;flex-basis:100%}.tyk-nav-bar__pre a{font-family:"OpenSans-Bold";font-size:12px;line-height:16px;color:#505071}.tyk-nav-bar.tyk-nav-bar__with-tabs .tyk-tabs--default>ul li button{padding-top:0}@media screen and (max-width: 1024px){.tyk-nav-bar{padding-left:20px}.menu-opened .tyk-nav-bar{transform:translate(245px)}}.tyk-nav-bar h1{color:#36364c}.tyk-nav-bar h4{margin:0}.tyk-nav-bar .tyk-nav-bar__wrapper{align-items:center;padding-bottom:0;display:flex;flex-wrap:wrap;height:92px}.tyk-nav-bar .tyk-nav-bar__wrapper.tyk-nav-bar--align-top{align-items:flex-start}@media screen and (max-width: 1024px){.tyk-nav-bar .tyk-nav-bar__wrapper{padding-left:0}}.tyk-nav-bar .tyk-nav-bar__wrapper h1{font-size:25px;font-family:"smoolthan_bold";line-height:30px;margin:0;padding-right:10px}.tyk-nav-bar .tyk-nav-bar__wrapper h4{padding-right:10px}.tyk-nav-bar .tyk-nav-bar__wrapper .tyk-nav-bar__container{align-items:center;display:flex;flex-grow:1;justify-content:space-between}.tyk-nav-bar .tyk-nav-bar__wrapper .tyk-nav-bar__left{flex-grow:1}.tyk-nav-bar .tyk-nav-bar__wrapper .tyk-nav-bar__right{margin-left:auto}.tyk-panel{background:#fff;border-radius:0;margin-bottom:20px;font-family:"OpenSans-SemiBold";position:relative}.tyk-panel.has-error,.tyk-panel .tyk-panel.has-error{border:2px solid #ff6c7d}.tyk-panel__header{align-items:center;border-bottom:1px solid #e1e1e1;display:flex;font-family:"OpenSans-regular"}.tyk-panel__header>.tyk-icon,.tyk-panel__header>.tyk-tooltip__wrapper{margin-left:5px}.tyk-panel .tyk-panel{border:2px solid #c3c3e5;box-shadow:none;-webkit-box-shadow:none}.tyk-panel--blank.tyk-panel--collapsed{margin-bottom:20px}.tyk-panel--blank.tyk-panel--collapsed .tyk-panel__header{margin-bottom:0}.tyk-panel--blank .tyk-panel__header{margin-bottom:-20px;padding:20px 25px;background-color:#fff;border:none;color:#36364c;font-size:17px;line-height:23px}.tyk-panel--primary{background-color:rgba(0,0,0,0)}.tyk-panel--primary .tyk-panel__header{background-color:#a2a2cc;border:none;color:#fff;font-size:17px;line-height:23px}.tyk-panel--primary .tyk-panel__body{background-color:#fff;border:none;color:#505071;font-size:17px;line-height:23px}.tyk-panel--primary .tyk-panel__header{border:none}.tyk-panel--primary .tyk-form-group label{color:#505071}.tyk-panel--primary .tyk-toggle .tyk-toggle__label{color:#505071}.tyk-panel--success .tyk-panel__header{background-color:#00d9ba;border:none;color:#fff;font-size:17px;line-height:23px}.tyk-panel--danger .tyk-panel__header{background-color:#ff6c7d;border:none;color:#fff;font-size:17px;line-height:23px}.tyk-panel--warning .tyk-panel__header{background-color:#d6b218;border:none;color:#fff;font-size:17px;line-height:23px}.tyk-panel__body{background-color:#fff;border-radius:0;font-family:"OpenSans-regular";padding:25px;position:relative;transition:height .2s}.tyk-panel__body~.tyk-panel__header{border-bottom-left-radius:0;border-bottom-right-radius:0}.tyk-panel__body.no-padding{padding:0}.tyk-panel__header{border-radius:0;border-bottom-left-radius:0;border-bottom-right-radius:0;font-family:"OpenSans-SemiBold";overflow:hidden;padding:10px 25px;position:relative}.tyk-panel--collapsed .tyk-panel__header{border-bottom-left-radius:0;border-bottom-right-radius:0}.tyk-panel__header~.tyk-panel__body{border-top-left-radius:0;border-top-right-radius:0}.tyk-panel__headerh3{margin:0}.tyk-panel__header ng-transclude{vertical-align:middle}.tyk-panel__header.collapsable{cursor:pointer}.tyk-panel__icon-collapse--right .tyk-panel__header.collapsable{padding-right:48px}.tyk-panel__icon-collapse--left .tyk-panel__header.collapsable{padding-left:48px}.tyk-panel__header .collapsable__arrow-right{font-size:14px;position:absolute;padding:10px;right:10px;top:calc(50% - 21px)}.tyk-panel__header .collapsable__arrow-left{font-size:14px;position:absolute;padding:8px 0px 10px 20px;left:0px;top:calc(50% - 21px)}.tyk-panel__footer{align-items:center;border-top:1px solid #ededf9;display:flex;justify-content:flex-end;padding:25px}.tyk-panel__footer>:not(:first-child){margin-left:5px}.tyk-pill{align-items:center;border-radius:18px;display:inline-flex;font-size:12px;line-height:19px;margin:0 0 10px 0;padding:6px 15px;font-family:"OpenSans-SemiBold"}.tyk-pill--square{border-radius:8px}.tyk-pill i{font-size:12px}.tyk-pill+.tyk-pill{margin-right:10px}.tyk-pill button+span{margin-left:10px}.tyk-pill span+button{margin-left:10px}.tyk-pill:first-child{margin-right:10px}.tyk-pill:last-child{margin-right:0}.tyk-pill--default{background-color:#36364c;color:#fff}.tyk-pill--default i{color:#fff}.tyk-pill--default-outline{box-shadow:inset 0px 0px 0px 2px #36364c;color:#505071}.tyk-pill--default-outline i{color:#505071}.tyk-pill--primary{background-color:#a2a2cc;color:#fff}.tyk-pill--primary i{color:#fff}.tyk-pill--primary-outline{box-shadow:inset 0px 0px 0px 2px #a2a2cc;color:#505071}.tyk-pill--primary-outline i{color:#505071}.tyk-pill--success{background-color:#00d9ba;color:#fff}.tyk-pill--success i{color:#fff}.tyk-pill--success-outline{box-shadow:inset 0px 0px 0px 2px #00d9ba;color:#505071}.tyk-pill--success-outline i{color:#505071}.tyk-pill--danger{background-color:#ff6c7d;color:#fff}.tyk-pill--danger i{color:#fff}.tyk-pill--danger-outline{box-shadow:inset 0px 0px 0px 2px #ff6c7d;color:#505071}.tyk-pill--danger-outline i{color:#505071}.tyk-pill--warning{background-color:#d6b218;color:#fff}.tyk-pill--warning i{color:#fff}.tyk-pill--warning-outline{box-shadow:inset 0px 0px 0px 2px #d6b218;color:#505071}.tyk-pill--warning-outline i{color:#505071}.tyk-pill--info{background-color:#82bbc6;color:#fff}.tyk-pill--info i{color:#fff}.tyk-pill--info-outline{box-shadow:inset 0px 0px 0px 2px #82bbc6;color:#505071}.tyk-pill--info-outline i{color:#505071}.tyk-ui-reveal-wrapper{display:flex;flex-direction:column;justify-content:flex-end;align-items:stretch;width:100%;height:100%;z-index:1000;position:absolute;bottom:0;left:0;pointer-events:none}.tyk-ui-reveal-wrapper__panel{max-height:calc(100% - 2rem);background-color:#fff;padding:0;margin:0;overflow-y:auto;display:flex;flex-direction:column;pointer-events:all;flex-shrink:0;overflow:auto}.tyk-ui-reveal-wrapper__hole{flex-grow:1;opacity:0;width:100%;background-color:green;-webkit-user-select:none;user-select:none;pointer-events:none;z-index:-1}.tyk-ui-reveal-wrapper__gutter{height:2rem;width:100%;cursor:row-resize;display:flex;background-color:#a2a2cc;z-index:2;pointer-events:all;justify-content:space-between;align-items:stretch;position:relative;box-shadow:0 5px 10px rgba(0,0,0,.3)}.tyk-ui-reveal-wrapper__gutter__headerleft,.tyk-ui-reveal-wrapper__gutter__headerright{display:flex;align-items:center;flex:1}.tyk-ui-reveal-wrapper__gutter__headerleft{justify-content:flex-start}.tyk-ui-reveal-wrapper__gutter__headerright{justify-content:flex-end}.tyk-ui-reveal-wrapper__gutter__logo{width:1rem;height:1rem;-webkit-user-select:none;user-select:none;pointer-events:none;padding:.2rem;z-index:2;background-image:url(images/drag.svg);align-self:center}.tyk-ui-reveal-wrapper__gutter__logo:hover{border:dashed}.tyk-sidebar{background-color:#fff;height:calc(100vh - 58px);flex:0 0 280px;padding:0;position:-webkit-sticky;position:sticky;overflow:auto;top:58px}.tyk-table{border-collapse:collapse;border-spacing:0;background-color:#fff;border-radius:18px;width:100%}.tyk-table__wrapper{border:2px solid #c3c3e5;border-radius:18px;overflow:auto}.tyk-table__wrapper--no-border{border:none}.tyk-table__wrapper.no-innner-horizontal-borders .tyk-table>thead th,.tyk-table__wrapper.no-innner-horizontal-borders .tyk-table>tbody td{border-right:none}.tyk-table>thead th{border-right:1px solid #c3c3e5;color:#505071;font-size:14px;line-height:19px;font-family:"OpenSans-Bold";text-transform:uppercase}.tyk-table>thead th:last-child{border-right:none}.tyk-table>thead th i{font-size:12px}.tyk-table>thead th .tyk-button{background:none;color:#36364c;padding:0}.tyk-table>thead th{padding:15px 10px}.tyk-table>tbody tr:hover{background:rgba(237,237,249,.4)}.tyk-table>tbody td{border-right:1px solid #c3c3e5;font-size:14px;line-height:19px;font-family:"OpenSans-regular";padding:5px 10px;vertical-align:middle}.tyk-table>tbody td:last-child{border-right:none}.tyk-table>tbody td.fit{white-space:nowrap;width:1%}.tyk-table>tbody td input:not([type=checkbox]):not([type=radio]){margin-top:15px}.tyk-table>tbody td a{color:#505071;font-family:"OpenSans-SemiBold"}.tyk-table>tbody td label{margin:0}.tyk-table>tbody td input[type=checkbox]{margin:0}.tyk-table tbody>tr{border-top:1px solid #c3c3e5;transition:all .4s linear;border-radius:18px}.tyk-table tbody>tr.clickable{cursor:pointer}.tyk-table>tbody tr td:first-child,.tyk-table>thead tr th:first-child{padding-left:20px}.tyk-table>tbody tr td:first-child.with-icon,.tyk-table>thead tr th:first-child.with-icon{padding-left:15px}.tyk-table>tbody tr td:last-child,.tyk-table>thead tr th:last-child{padding-right:20px}.tyk-table>tbody tr td:last-child.with-icon,.tyk-table>thead tr th:last-child.with-icon{padding-right:15px}.tyk-table .tyk-pagination{padding:20px 25px}.tyk-table .tyk-pagination li:first-child{margin-left:auto}.tyk-table .nowrap{white-space:nowrap}.tyk-table .wrap{word-break:break-all}.tyk-table-search{padding:10px 25px 0 25px}.tyk-table-search label{font-size:14px;text-transform:uppercase}.header-sort{padding-left:3px;padding-top:5px;vertical-align:middle}.new-table-pagination{float:right}.selectable>div{margin-left:20px}.scrollable{display:block;overflow:auto}.fixed-header{background:#fff;position:sticky;top:0}.tyk-table.has-error,.tyk-table__wrapper.has-error{border:2px solid #ff6c7d !important}.tyk-tabs--default>ul{display:flex;list-style-type:none;margin:0;padding:0;overflow:auto}.tyk-tabs--default>ul li{display:flex;white-space:nowrap;margin-right:0px}.tyk-tabs--default>ul li:last-child{margin-right:0}.tyk-tabs--default>ul li.active button,.tyk-tabs--default>ul li button:hover{border-bottom-color:#00d9ba;color:#505071;opacity:1}.tyk-tabs--default>ul li button{background:none;border:none;border-bottom:4px solid rgba(0,0,0,0);color:#505071;cursor:pointer;font-size:14px;font-family:"OpenSans-SemiBold";padding:10px 2px 3px 2px;margin-right:20px;transition:all .2s linear;opacity:.7}.tyk-tabs--default>ul li button:focus{outline:none}.tyk-tab__content{padding:25px}.tyk-toast__container{bottom:0;min-width:300px;position:fixed;right:20px;z-index:11}.tyk-toast__message{position:relative}.tyk-toast-message__button{color:#505071;height:20px;line-height:1;padding:5px;position:absolute;right:5px;top:5px;width:20px}.tyk-toast-message__button:hover{background:rgba(255,255,255,.3);color:#505071}.floating-container{position:fixed;top:-9999px;overflow:auto;z-index:1080}.tyk-combobox2{outline:none}.tyk-combobox2.disabled .tyk-form-control{border:2px solid #c3c3e5 !important;background-color:#ededf9;color:#505071;cursor:not-allowed}.tyk-combobox2.disabled .tyk-combobox2__current-values .tyk-pill--combobox button{cursor:not-allowed}.tyk-combobox2.disabled:not(.is-expand-mode) .tyk-combobox2__values-container-trigger{cursor:not-allowed}.tyk-combobox2.disabled .tyk-combobox2__entry-field{background-color:rgba(0,0,0,0);cursor:not-allowed}.tyk-combobox2 .tyk-form-control{display:flex;flex-direction:row;position:relative;min-height:40px;height:auto;padding:0}.tyk-combobox2 .tyk-form-control:focus-within{outline:none;border:2px solid #00d9ba}.tyk-combobox2__current-values{display:flex;flex-grow:1;flex-wrap:wrap;padding-top:2px;padding-bottom:2px;padding-left:10px;max-width:calc(100% - 40px)}.tyk-combobox2__current-values.expand-mode{max-height:1000px;overflow:hidden;transition:max-height 1s ease}.tyk-combobox2__current-values--collapsed.expand-mode{max-height:38px;transition:max-height .2s ease}.tyk-combobox2__current-values .tyk-pill--combobox{margin-top:3px;margin-bottom:3px;background-color:#f0f0f0;border-radius:10px;color:#505071;padding:5px 10px;max-width:100%;max-height:26px}.tyk-combobox2__current-values .tyk-pill--combobox button{background:none;border:none;cursor:pointer;width:23px;outline:none}.tyk-combobox2__current-values .tyk-pill--combobox button+span{margin-left:0}.tyk-combobox2__current-values .tyk-pill--combobox span{overflow:hidden;text-overflow:ellipsis}.tyk-combobox2__current-values .tyk-pill--combobox i{margin-right:5px}.tyk-combobox2__entry-field{border:none;line-height:30px}.tyk-combobox2__entry-field:focus,.tyk-combobox2__entry-field:active{border:none;outline:none}.tyk-combobox2__entry-field::placeholder{color:#a2a2cc;font-family:"OpenSans-SemiBold"}.tyk-combobox2__text-value{font-family:"OpenSans-SemiBold";font-size:14px;line-height:19px;padding:9px 5px;width:100%;overflow:hidden;text-overflow:ellipsis;line-height:1;outline:none}.tyk-combobox2__text-value.overflow-single{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tyk-combobox2__text-value.is-placeholder{color:#a2a2cc;font-family:"OpenSans-SemiBold"}.tyk-combobox2__values-container-trigger{position:relative;flex-basis:40px;display:flex;justify-content:center;align-items:center;cursor:pointer;outline:none;transition:all .2s}.tyk-combobox2__values-container-trigger--expanded{transform:rotate(180deg)}.tyk-combobox2__values-container-trigger .tyk-icon{height:14px}.tyk-form-group--rounded-corners .tyk-combobox2-disabled-overlay{border-radius:calc(18px - 2px)}.tyk-combobox2__combobox-dropdown{display:flex;flex-direction:column;border:2px solid #c3c3e5;background-color:#fff}.tyk-combobox2__combobox-dropdown.tyk-form-group--rounded-corners{border-radius:18px}.tyk-combobox2__combobox-dropdown .tyk-combobox2__combobox-search{background-color:#fff;position:sticky;top:0;padding:10px 20px}.tyk-combobox2__combobox-dropdown .tyk-combobox2__combobox-search+.combobox-list{border-top:1px solid #c3c3e5}.tyk-combobox2__combobox-dropdown .tyk-combobox2__combobox-list{max-height:255px}.tyk-combobox2__combobox-dropdown .tyk-combobox2__combobox-list li{display:flex;cursor:pointer;padding:9px 20px;transition:all .2s;font-family:"OpenSans-SemiBold"}.tyk-combobox2__combobox-dropdown .tyk-combobox2__combobox-list li:hover,.tyk-combobox2__combobox-dropdown .tyk-combobox2__combobox-list li.active{background-color:#ededf9}.tyk-combobox2__combobox-dropdown .tyk-combobox2__combobox-list li.disabled{color:#c3c3e5;background-color:initial}.tyk-combobox2__combobox-dropdown .tyk-combobox2__combobox-list li+li{border-top:1px solid #c3c3e5}.tyk-combobox2__combobox-dropdown .tyk-combobox2__combobox-list li i{margin-right:5px}.tyk-combobox2__combobox-dropdown .tyk-combobox2__combobox-list li .item-name{overflow:hidden;text-overflow:ellipsis;line-height:16px}.tyk-combobox2__values-container-trigger{color:#505071}.tyk-combobox2__combobox-dropdown.tyk-form-group--rounded-corners{z-index:1081}.tyk-checkbox label{display:flex;align-items:flex-start;padding-left:20px}.tyk-checkbox label input{margin-left:-20px;margin-top:5px}.tyk-checkbox--theme-light label{color:#fff}.tyk-checkbox--theme-light.tyk-checkbox--is-disabled label{color:#fff}.tyk-checkbox--is-disabled label,.tyk-checkbox--is-disabled p{cursor:not-allowed;opacity:.5}.flatpickr-day.selected,.flatpickr-day.startRange,.flatpickr-day.endRange,.flatpickr-day.selected.inRange,.flatpickr-day.startRange.inRange,.flatpickr-day.endRange.inRange,.flatpickr-day.selected:focus,.flatpickr-day.startRange:focus,.flatpickr-day.endRange:focus,.flatpickr-day.selected:hover,.flatpickr-day.startRange:hover,.flatpickr-day.endRange:hover,.flatpickr-day.selected.prevMonthDay,.flatpickr-day.startRange.prevMonthDay,.flatpickr-day.endRange.prevMonthDay,.flatpickr-day.selected.nextMonthDay,.flatpickr-day.startRange.nextMonthDay,.flatpickr-day.endRange.nextMonthDay{background:#00d9ba !important;border-color:#00d9ba !important}.tyk-dropdown{display:inline-block}.tyk-dropdown+.tyk-button,.tyk-dropdown+.tyk-dropdown,.tyk-dropdown+.tyk-toggle{margin-left:10px}.tyk-dropdown--block{left:20px;right:20px}.tyk-dropdown--relative{left:auto;right:auto}.tyk-dropdown--custom{padding:20px 25px}.tyk-dropdown label{display:block}.tyk-dropdown__trigger{position:relative}.tyk-dropdown.theme-list .tyk-button{background:#fff;border:2px solid #36364c;border-radius:18px;color:#505071}.tyk-dropdown.theme-list .tyk-button:hover,.tyk-dropdown.theme-list .tyk-button:active,.tyk-dropdown.theme-list .tyk-button:active:focus,.tyk-dropdown.theme-list .tyk-button:focus{background:#fff;border-color:#43435b;color:#505071}.tyk-dropdown-menu{background:#fff;border:2px solid #c3c3e5;border-radius:18px;-webkit-filter:drop-shadow(1px 2px 1px rgba(0, 0, 0, 0.1));filter:drop-shadow(1px 2px 1px rgba(0, 0, 0, 0.1));list-style-type:none;margin:0;margin-top:3px;overflow:hidden;padding:0;z-index:1081}.tyk-dropdown-menu.tyk-dropdown--scrollable{overflow:auto}.tyk-dropdown-menu .tyk-panel{margin:0}.tyk-dropdown-menu.opened{display:flex;flex-direction:column;position:absolute}.tyk-dropdown-menu>li{background:#fff;border-bottom:1px solid #fff;display:flex;position:relative;z-index:7}.tyk-dropdown-menu>li:last-child{border:none}.tyk-dropdown-menu>li i{left:7px;position:absolute;top:9px}.tyk-dropdown-menu>li>a{cursor:pointer;color:#505071;display:flex;font-size:12px;padding:7px 24px;text-transform:uppercase;text-decoration:none;width:100%}.tyk-dropdown-menu>li>a:hover{color:#505071}.tyk-dropdown-menu>li>a .badge{background:#505071;color:#fff;font-size:10px;margin-top:-4px;margin-left:6px}.tyk-dropdown-menu>li>a:hover{background-color:#ededf9;text-decoration:none}.tyk-dropdown--relative.opened{position:relative}.tyk-editable-list__submit-btn{white-space:nowrap}.tyk-editable-list__form{align-items:center;display:flex}.tyk-editable-list__form .tyk-form-group{margin-bottom:0}.tyk-editable-list__form--sticked{margin-left:0}.tyk-editable-list__form--sticked button{border-top-left-radius:0px;border-bottom-left-radius:0px;border-top-right-radius:3px;border-bottom-right-radius:3px;padding-bottom:11px;padding:10px 15px 11px 15px}.tyk-editable-list__form span.inline{margin-top:0}.tyk-editable-list__form>span{margin-left:15px}.tyk-editable-list__form>span.inline-with-label{align-self:flex-end}.tyk-editable-list__header{padding-top:15px;border-bottom:1px solid #43435b;color:#505071;font-size:11px;padding-bottom:15px;text-transform:uppercase}.tyk-editable-list__header .tyk-row{margin:0}.tyk-editable-list-items{overflow:hidden;list-style:none;padding:20px 0 0 0}.tyk-editable-list-items .edit-mode-wrapper.table button{margin-top:23px}.tyk-editable-list-items .tyk-row{margin:0}.tyk-editable-list-items button[disabled]{cursor:not-allowed}.tyk-editable-list-items.tyk-editable-list-items--inline{align-items:center;color:#505071;display:flex;flex-wrap:wrap}.tyk-editable-list-items li{border-top:1px solid #c3c3e5;transition:all .2s linear}.tyk-editable-list-items li.tyk-editable-list-item--inline{background-color:#c3c3e5;border-radius:25px;border:none;color:#fff;float:left;font-family:"OpenSans-SemiBold";margin-bottom:10px;margin-right:15px;padding:0 15px;white-space:nowrap}.tyk-editable-list-items li.tyk-editable-list-item--inline .tyk-editable-list-item__text{color:#505071;padding:5px 0}.tyk-editable-list-items li.tyk-editable-list-item--inline .tyk-editable-list-action__button.on-edit{margin-top:0}.tyk-editable-list-items li:first-child{border-top:none}.tyk-editable-list-items li .tyk-editable-list-item__text{display:flex;padding:10px 0}.tyk-editable-list-items li .tyk-editable-list-item__text>span{flex-grow:1}.tyk-editable-list-items li .tyk-editable-list-item__text>div:first-child{flex-grow:1}.tyk-editable-list-items li .tyk-editable-list-item__text>div:first-child .error-message{margin:0}.tyk-editable-list-items li .tyk-editable-list-items{overflow:hidden;padding-bottom:10px}.tyk-editable-list-items li .tyk-editable-list{border-top:5px solid #43435b;background:#ededf9;padding:10px 15px}.tyk-editable-list-items .tyk-editable-list-item__text{display:block;word-wrap:break-word;word-break:break-all}.tyk-editable-list-items .tyk-editable-list-action__button{border:none;background:rgba(0,0,0,0)}.tyk-editable-list-items .tyk-editable-list-action__button.on-edit{margin-left:10px}.tyk-editable-list-items .tyk-editable-list-item-controls{flex-grow:0;text-align:right}.tyk-editable-list-item__controls{text-align:right}.tyk-editable-list-items.table{background-color:#fff;border-radius:18px;border:2px solid #c3c3e5;padding:0 !important}.tyk-editable-list-items.table li{border-color:#c3c3e5}.tyk-editable-list-items.table li:hover{background:#ededf9}.tyk-editable-list-items.table .tyk-editable-list-item__text{background:rgba(0,0,0,0)}.tyk-editable-list-items.table .tyk-editable-list-action__button{border-radius:6px;cursor:pointer;margin-right:10px}.tyk-editable-list__header{background-color:#fff;border-top-left-radius:18px;border-top-right-radius:18px;border:2px solid #c3c3e5;border-bottom:1px solid #c3c3e5 !important;color:#505071 !important;font-family:"OpenSans-Bold";margin-top:10px}.tyk-editable-list__header+.tyk-editable-list-items.table{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.editable-list__header{align-items:center;display:flex;margin-bottom:10px}.editable-list__header .tyk-button{margin-left:auto}.editable-list__wrapper.has-error .editable-list__list{border:2px solid #ff6c7d}.editable-list__list{border:2px solid #c3c3e5;border-radius:18px;display:flex;flex-direction:column-reverse}.editable-list__item{border-bottom:1px solid #c3c3e5;display:flex;flex-wrap:nowrap;width:100%}.editable-list__item:first-child{border-bottom:none}.editable-list__item-header{border-bottom:1px solid #c3c3e5;color:#505071;font-size:14px;line-height:19px;font-family:"OpenSans-Bold";text-transform:uppercase}.editable-list__item-header .editable-list__item-cell{padding:10px}.editable-list__item-cell{border-left:1px solid #c3c3e5;overflow:hidden;padding:0 10px}.editable-list__item-cell .tyk-form-control--readonly{overflow:hidden;text-overflow:ellipsis;word-break:break-all}.editable-list__item-cell:first-child{border-left:none;padding-left:15px}.editable-list__item-cell:last-child{padding-right:15px}.editable-list__item-cell .tyk-form-group{margin:10px 0;width:100%}.editable-list__item--size-1{display:flex;flex-grow:2;width:8.3333333333%}.editable-list__item--size-2{display:flex;flex-grow:3;width:16.6666666667%}.editable-list__item--size-3{display:flex;flex-grow:4;width:25%}.editable-list__item--size-4{display:flex;flex-grow:5;width:33.3333333333%}.editable-list__item--size-5{display:flex;flex-grow:6;width:41.6666666667%}.editable-list__item--size-6{display:flex;flex-grow:7;width:50%}.editable-list__item--size-7{display:flex;flex-grow:8;width:58.3333333333%}.editable-list__item--size-8{display:flex;flex-grow:9;width:66.6666666667%}.editable-list__item--size-9{display:flex;flex-grow:10;width:75%}.editable-list__item--size-10{display:flex;flex-grow:11;width:83.3333333333%}.editable-list__item--size-11{display:flex;flex-grow:12;width:91.6666666667%}.editable-list__item--size-12{display:flex;flex-grow:13;width:100%}.editable-list__item--size-fit{width:fit-content}.editable-list__item-action{align-items:flex-start;display:flex;justify-content:center;width:100px}.editable-list__item-action .tyk-button{margin-top:20px}.editable-list__item-action--read-only{color:#c3c3e5;align-items:center}.editable-list__item-action--read-only .tyk-button{margin-top:0}.tyk-file-input__wrapper{position:relative}.tyk-file-input__wrapper>input{padding:6px 20px}.tyk-file-input__wrapper>button{background:none;border:none;cursor:pointer;position:absolute;right:15px;top:9px}.tyk-multiselect{align-items:flex-start;border-radius:18px;flex-wrap:wrap;display:flex;margin-bottom:20px;width:100%}.tyk-multiselect .input-group .input-group-addon+.form-control{border-width:1px !important;border-left:none !important;border-top-left-radius:0 !important;border-top-right-radius:0 !important;border-bottom-left-radius:0 !important;border-bottom-right-radius:0 !important}.tyk-multiselect .input-group .input-group-addon{background:rgba(0,0,0,0) !important;border-width:1px !important;border-right:0 !important;border-top-left-radius:0 !important;border-top-right-radius:0 !important;border-bottom-left-radius:0 !important;border-bottom-right-radius:0 !important}.tyk-multiselect.has-error{border:2px solid #ff6c7d}.tyk-multiselect__header{background-color:#36364c;border-top-left-radius:18px;border-top-right-radius:18px;color:#fff;display:flex;width:100%}.tyk-multiselect__header>div{padding:10px 15px;width:50%}.tyk-multiselect__panel-wrapper{border:2px solid #c3c3e5;border-top:none;border-bottom-left-radius:18px;border-bottom-right-radius:18px;display:flex;flex:1;height:265px;width:100%}.tyk-multiselect__panel{display:flex;flex-direction:column;margin:0 0 0 -1px;position:relative;width:calc(50% + 1px)}.tyk-multiselect__panel:last-child{border-left:2px solid #c3c3e5}.tyk-multiselect__panel:last-child .tyk-form-group{margin-left:-1px;width:calc(100% + 2px)}.tyk-multiselect__panel .tyk-message{margin:20px 20px 0 20px}.tyk-multiselect__list{list-style-type:none;margin:0;padding:0}.tyk-multiselect__list--scroll{height:100%;overflow-y:auto}.tyk-multiselect__list>li{border-bottom:2px solid #c3c3e5;display:flex;flex-direction:column;padding:10px 15px}.tyk-multiselect__list>li>div{align-items:start;display:flex;width:100%}.tyk-multiselect__list>li .loading{justify-content:center}.tyk-multiselect__list>li:last-child{border-bottom:none}.tyk-multiselect-item__name{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tyk-multiselect .tyk-form-group{margin:0}.tyk-multiselect .tyk-multiselect-item__controls{display:flex;margin-left:auto;flex-wrap:nowrap}.tyk-multiselect .tyk-multiselect-item__controls .tyk-button{color:#505071;margin-left:5px}.tyk-multiselect .tyk-multiselect-item__controls .tyk-button:last-child{margin-left:0}.tyk-pagination{display:flex;list-style-type:none;margin:10px 0;padding:0}.tyk-pagination li{align-items:center;display:flex}.tyk-pagination li:first-child button{border-top-left-radius:18px;border-bottom-left-radius:18px}.tyk-pagination li:last-child button{border-top-right-radius:18px;border-bottom-right-radius:18px}.tyk-pagination span{margin:0 10px}.tyk-pagination button{background:#fff;border:none;font-size:14px;font-family:"OpenSans-Bold";cursor:pointer;color:#36364c;margin-left:-1px;padding:10px 15px}.tyk-pagination button:hover{background-color:#c2f2e9}.tyk-pagination .active button{background-color:#00d9ba;color:#fff}.tyk-radio label{align-items:center;display:flex}.tyk-radio--is-disabled label,.tyk-radio--is-disabled p{cursor:not-allowed;opacity:.5}.tyk-radio__description-text{padding:0 0 0 20px}.tyk-select{background:rgba(0,0,0,0) url(images/arrow_down.svg) no-repeat calc(100% - 15px) center;background-size:15px 15px}.tyk-selectable-list{margin-bottom:20px;width:100%}.tyk-selectable-list li:not(.tyk-selectable-list__no-items-message){font-family:"OpenSans-SemiBold";padding:0}.tyk-selectable-list li:not(.tyk-selectable-list__no-items-message) .tyk-message{margin-bottom:0}.tyk-selectable-list li:not(.tyk-selectable-list__no-items-message) label{font-family:"OpenSans-SemiBold";margin:0}.tyk-selectable-list li:not(.tyk-selectable-list__no-items-message)>label{align-items:center;cursor:pointer;display:flex;padding:10px 20px}.tyk-selectable-list li:not(.tyk-selectable-list__no-items-message)>label input[type=checkbox]{margin-left:auto}.tyk-selectable-list__item--with-icon input[type=checkbox]{visibility:hidden}textarea.tyk-form-control{height:auto}.tyk-toggle{display:inline-flex;flex-wrap:wrap;font-family:"OpenSans-Bold";font-size:14px;line-height:19px;white-space:nowrap}.tyk-toggle.block{margin-bottom:20px;width:100%}.tyk-toggle.block+.tyk-toggle{margin-left:0}.tyk-toggle.inline-label{align-items:center;flex-wrap:nowrap}.tyk-toggle__list--has-error{border:2px solid #ff6c7d}.tyk-toggle .tyk-toggle__label{display:block;font-family:"OpenSans-SemiBold";font-size:14px;padding:0;width:100%;color:#36364c}.tyk-toggle.inline-label .tyk-toggle__label{margin-right:10px;width:auto}.tyk-toggle+.tyk-button,.tyk-toggle+.tyk-dropdown,.tyk-toggle+.tyk-toggle{margin-left:10px}.tyk-toggle--disabled-true{cursor:not-allowed;opacity:.7}.tyk-toggle--column .tyk-toggle__list--separated{display:flex;flex-direction:column;margin-right:20px}.tyk-toggle--column .tyk-toggle__list--separated .tyk-toggle__item{background-color:#ededf9;margin-right:auto}.tyk-toggle__list{background:#ededf9;border-radius:25px;display:flex;list-style-type:none;margin:0;padding:0;position:relative}.tyk-toggle__list--separated{background:rgba(0,0,0,0);flex-wrap:wrap}.tyk-toggle--on-dark .tyk-toggle__list{background:#fff}.tyk-toggle--default .tyk-toggle__item--active span{color:#fff}.tyk-toggle--default .tyk-toggle__list--single .tyk-toggle__item--active,.tyk-toggle--default .tyk-toggle__list--separated .tyk-toggle__item--active{background-color:#36364c;color:#fff;border:2px solid rgba(0,0,0,0)}.tyk-toggle--default .tyk-toggle__list--single .tyk-toggle__item--active span,.tyk-toggle--default .tyk-toggle__list--separated .tyk-toggle__item--active span{color:#fff}.tyk-toggle--default .tyk-toggle__list--single .tyk-toggle__item--active:hover,.tyk-toggle--default .tyk-toggle__list--separated .tyk-toggle__item--active:hover{background-color:#36364c;color:#fff}.tyk-toggle--primary .tyk-toggle__item--active span{color:#fff}.tyk-toggle--primary .tyk-toggle__list--single .tyk-toggle__item--active,.tyk-toggle--primary .tyk-toggle__list--separated .tyk-toggle__item--active{background-color:#a2a2cc;color:#fff;border:2px solid rgba(0,0,0,0)}.tyk-toggle--primary .tyk-toggle__list--single .tyk-toggle__item--active span,.tyk-toggle--primary .tyk-toggle__list--separated .tyk-toggle__item--active span{color:#fff}.tyk-toggle--primary .tyk-toggle__list--single .tyk-toggle__item--active:hover,.tyk-toggle--primary .tyk-toggle__list--separated .tyk-toggle__item--active:hover{background-color:#a2a2cc;color:#fff}.tyk-toggle--success .tyk-toggle__item--active span{color:#fff}.tyk-toggle--success .tyk-toggle__list--single .tyk-toggle__item--active,.tyk-toggle--success .tyk-toggle__list--separated .tyk-toggle__item--active{background-color:#00b798;color:#fff;border:2px solid rgba(0,0,0,0)}.tyk-toggle--success .tyk-toggle__list--single .tyk-toggle__item--active span,.tyk-toggle--success .tyk-toggle__list--separated .tyk-toggle__item--active span{color:#fff}.tyk-toggle--success .tyk-toggle__list--single .tyk-toggle__item--active:hover,.tyk-toggle--success .tyk-toggle__list--separated .tyk-toggle__item--active:hover{background-color:#00b798;color:#fff}.tyk-toggle--danger .tyk-toggle__item--active span{color:#fff}.tyk-toggle--danger .tyk-toggle__list--single .tyk-toggle__item--active,.tyk-toggle--danger .tyk-toggle__list--separated .tyk-toggle__item--active{background-color:#ff6c7d;color:#fff;border:2px solid rgba(0,0,0,0)}.tyk-toggle--danger .tyk-toggle__list--single .tyk-toggle__item--active:hover,.tyk-toggle--danger .tyk-toggle__list--separated .tyk-toggle__item--active:hover{background-color:#ff6c7d;color:#fff}.tyk-toggle--warning .tyk-toggle__item--active span{color:#505071}.tyk-toggle--warning .tyk-toggle__list--single .tyk-toggle__item--active,.tyk-toggle--warning .tyk-toggle__list--separated .tyk-toggle__item--active{background-color:#d6b218;color:#505071;border:2px solid rgba(0,0,0,0)}.tyk-toggle--warning .tyk-toggle__list--single .tyk-toggle__item--active:hover,.tyk-toggle--warning .tyk-toggle__list--separated .tyk-toggle__item--active:hover{background-color:#d6b218;color:#505071}.tyk-toggle--primary-gradient .tyk-toggle__item--active span{color:#fff}.tyk-toggle--primary-gradient .tyk-toggle__list--single .tyk-toggle__item--active,.tyk-toggle--primary-gradient .tyk-toggle__list--separated .tyk-toggle__item--active{border-image:linear-gradient(to right, #A2A2CC, #505071, #A2A2CC) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #A2A2CC, #505071, #A2A2CC);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-toggle--primary-gradient .tyk-toggle__list--single .tyk-toggle__item--active span,.tyk-toggle--primary-gradient .tyk-toggle__list--separated .tyk-toggle__item--active span{color:#fff}.tyk-toggle--success-gradient .tyk-toggle__item--active span{color:#fff}.tyk-toggle--success-gradient .tyk-toggle__list--single .tyk-toggle__item--active,.tyk-toggle--success-gradient .tyk-toggle__list--separated .tyk-toggle__item--active{border-image:linear-gradient(to right, #00d9ba, #00B798, #00d9ba) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #00d9ba, #00B798, #00d9ba);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-toggle--success-gradient .tyk-toggle__list--single .tyk-toggle__item--active span,.tyk-toggle--success-gradient .tyk-toggle__list--separated .tyk-toggle__item--active span{color:#fff}.tyk-toggle--danger-gradient .tyk-toggle__item--active span{color:#fff}.tyk-toggle--danger-gradient .tyk-toggle__list--single .tyk-toggle__item--active,.tyk-toggle--danger-gradient .tyk-toggle__list--separated .tyk-toggle__item--active{border-image:linear-gradient(to right, #FF6C7D, #EA4766, #FF6C7D) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #FF6C7D, #EA4766, #FF6C7D);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-toggle--danger-gradient .tyk-toggle__list--single .tyk-toggle__item--active span,.tyk-toggle--danger-gradient .tyk-toggle__list--separated .tyk-toggle__item--active span{color:#fff}.tyk-toggle--warning-gradient .tyk-toggle__item--active span{color:#fff}.tyk-toggle--warning-gradient .tyk-toggle__list--single .tyk-toggle__item--active,.tyk-toggle--warning-gradient .tyk-toggle__list--separated .tyk-toggle__item--active{border-image:linear-gradient(to right, #FFE885, #D6B218, #FFE885) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #FFE885, #D6B218, #FFE885);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#505071}.tyk-toggle--warning-gradient .tyk-toggle__list--single .tyk-toggle__item--active span,.tyk-toggle--warning-gradient .tyk-toggle__list--separated .tyk-toggle__item--active span{color:#fff}.tyk-toggle__item{color:#fff;text-transform:uppercase;z-index:2;border:2px solid rgba(0,0,0,0)}.tyk-toggle__item:first-child{border-top-left-radius:25px;border-bottom-left-radius:25px}.tyk-toggle__item:last-child{border-top-right-radius:25px;border-bottom-right-radius:25px}.tyk-toggle__list--separated .tyk-toggle__item{background:tyk-toggle__list--separated;border-radius:25px;margin-bottom:5px;margin-top:5px;margin-right:10px}.tyk-toggle__list--separated .tyk-toggle__item:last-child{margin-right:0}.tyk-toggle__item input{display:none}.tyk-toggle__item label{cursor:pointer;font-family:"OpenSans-Bold";position:relative;margin:0;transition:all .2s ease}.tyk-toggle__list--single .tyk-toggle__item label{padding-left:45px}.tyk-toggle__list--single .tyk-toggle__item--active label{padding-left:25px;padding-right:45px}.tyk-toggle__list--single .tyk-toggle__item--active label .tyk-toggle__item-notch{left:calc(100% - 35px)}.tyk-toggle--on-dark .tyk-toggle__item:not(.tyk-toggle__item--active){color:#505071}.tyk-toggle--on-dark .tyk-toggle__item-notch--single{background:#ededf9}.tyk-toggle--sm label{padding:calc(3px + 2px) calc(15px + 2px);font-size:12px;line-height:16px;border-radius:20px}.tyk-toggle--sm .tyk-toggle__list--single label{padding-left:35px}.tyk-toggle--sm .tyk-toggle__list--single .tyk-toggle__item--active label{padding-left:17px;padding-right:35px}.tyk-toggle--sm .tyk-toggle__list--single .tyk-toggle__item--active label .tyk-toggle__item-notch{left:calc(100% - 27px)}.tyk-toggle--md label{padding:calc(8px + 2px) calc(23px + 2px);font-size:14px;line-height:16px;border-radius:20px}.tyk-toggle--lg label{padding:calc(13px + 2px) calc(23px + 2px);font-size:14px;line-height:16px;border-radius:20px}.tyk-toggle--lg .tyk-toggle__list--single label{padding-left:45px}.tyk-toggle--lg .tyk-toggle__list--single .tyk-toggle__item--active label{padding-left:25px;padding-right:45px}.tyk-toggle--lg .tyk-toggle__list--single .tyk-toggle__item--active label .tyk-toggle__item-notch{left:calc(100% - 43px)}.tyk-toggle__item-notch{border-radius:25px;bottom:2px;position:absolute;transition:all .2s ease;top:2px}.tyk-toggle__item-notch--single{background:#fff;left:2px;width:32px}.tyk-toggle--sm .tyk-toggle__item-notch--single{width:24px}.tyk-toggle--lg .tyk-toggle__item-notch--single{width:40px}.tyk-toggle__notch{border-radius:25px;left:0;position:absolute;bottom:4px;top:4px;transition:all .2s ease;width:100px;z-index:1}.tyk-toggle--default .tyk-toggle__notch{background-color:#36364c;color:#fff;border:2px solid rgba(0,0,0,0)}.tyk-toggle--default .tyk-toggle__notch:hover{background-color:#36364c;color:#fff}.tyk-toggle--primary .tyk-toggle__notch{background-color:#a2a2cc;color:#fff;border:2px solid rgba(0,0,0,0)}.tyk-toggle--primary .tyk-toggle__notch:hover{background-color:#a2a2cc;color:#fff}.tyk-toggle--success .tyk-toggle__notch{background-color:#00d9ba;color:#fff;border:2px solid rgba(0,0,0,0)}.tyk-toggle--success .tyk-toggle__notch:hover{background-color:#00d9ba;color:#fff}.tyk-toggle--danger .tyk-toggle__notch{background-color:#ff6c7d;color:#fff;border:2px solid rgba(0,0,0,0)}.tyk-toggle--danger .tyk-toggle__notch:hover{background-color:#ff6c7d;color:#fff}.tyk-toggle--warning .tyk-toggle__notch{background-color:#d6b218;color:#505071;border:2px solid rgba(0,0,0,0)}.tyk-toggle--warning .tyk-toggle__notch:hover{background-color:#d6b218;color:#505071}.tyk-toggle--primary-gradient .tyk-toggle__notch{border-image:linear-gradient(to right, #A2A2CC, #505071, #A2A2CC) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #A2A2CC, #505071, #A2A2CC);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-toggle--success-gradient .tyk-toggle__notch{border-image:linear-gradient(to right, #00d9ba, #00B798, #00d9ba) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #00d9ba, #00B798, #00d9ba);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-toggle--danger-gradient .tyk-toggle__notch{border-image:linear-gradient(to right, #FF6C7D, #EA4766, #FF6C7D) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #FF6C7D, #EA4766, #FF6C7D);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-toggle--warning-gradient .tyk-toggle__notch{border-image:linear-gradient(to right, #FFE885, #D6B218, #FFE885) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #FFE885, #D6B218, #FFE885);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#505071}.empty-toggle{padding:1px}.string-builder{position:relative;display:block}.string-builder__input{word-break:break-all;resize:none;overflow:hidden;background:rgba(0,0,0,0);position:absolute;border:none;font:inherit;display:block;z-index:1;width:100%;padding:0px;width:calc(100% - 35px)}.string-builder__input:focus,.string-builder__input:active{border:none;outline:none}.string-builder__styled{font:inherit;position:absolute;pointer-events:none;width:calc(100% - 35px);color:rgba(0,0,0,0);z-index:2;border:none;word-wrap:break-word;word-break:break-all}.string-builder__disabled{background-color:#ededf9 !important;color:#505071;cursor:not-allowed}.url-builder__options_name{font-weight:10px}.url-builder__options_description{color:gray}.string-builder-dropdown{display:flex;flex-direction:column;border:2px solid #c3c3e5;background-color:#fff}.string-builder-dropdown.tyk-form-group--rounded-corners{border-radius:18px}.string-builder-dropdown .string-builder-search{background-color:#fff;position:sticky;top:0;padding:10px 20px}.string-builder-dropdown .string-builder-search+.string-builder-list{border-top:1px solid #c3c3e5}.string-builder-dropdown .string-builder-list{max-height:255px}.string-builder-dropdown .string-builder-list li{cursor:pointer;padding:9px 20px;transition:all .2s;font-family:"OpenSans-SemiBold"}.string-builder-dropdown .string-builder-list li:hover,.string-builder-dropdown .string-builder-list li.active{background-color:#c3c3e5}.string-builder-dropdown .string-builder-list li+li{border-top:1px solid #c3c3e5}.string-builder-dropdown .string-builder-list li i{margin-right:5px}.string-builder-dropdown .string-builder-list li .item-name{overflow:hidden;text-overflow:ellipsis;line-height:16px}.invalid_token{box-shadow:0px 0px 0px 1px #ea4766 inset;border-radius:5px;background:#ffbbc5;color:#ea4766;padding:4px;pointer-events:all}.invalid_token .invalid_token--icon{margin-left:2px;color:#ea4766}.string_builder_trigger{background-color:#fff;border-radius:5px;padding:1px 6px;margin:0px 4px}.string-builder-footer>.tyk-form-control__error-message{padding:0px !important}.string-builder-footer>.tyk-form-control__help-block{padding:0px !important}.string-builder-search{padding-right:10px}.default-option-name{color:green}.data_source_argument{color:pink}.data_source_object{color:#8a2be2}*{box-sizing:border-box}body{background-color:#e1e1e1;color:#505071;font-size:14px;line-height:19px;font-family:"OpenSans-regular"}.tyk-main-wrapper{display:flex;flex-wrap:nowrap}.tyk-main-content-wrapper{flex:1}.well{background:rgba(0,0,0,0);border:2px solid #c3c3e5;border-radius:18px;box-shadow:none}.well.has-error{border-color:#ff6c7d}.title-medium{font-family:"OpenSans-SemiBold";color:#36364c;font-size:16px}.right-align{text-align:right !important}.left-align{text-align:left !important}.center-align{text-align:center !important}.left{float:left !important}.right{float:right !important}.hide{display:none !important}.no-margin{margin:0 !important}.no-margin-bottom{margin-bottom:0 !important}.no-margin-top{margin-top:0 !important}.no-margin-right{margin-right:0 !important}.no-margin-left{margin-right:0 !important}.disabled-section{color:#c3c3e5}.top-buffer-large{margin-top:20px !important}.top-buffer-small{margin-top:5px !important}.top-buffer-medium{margin-top:10px !important}.bottom-buffer-large{margin-bottom:20px !important}.bottom-buffer-small{margin-bottom:5px !important}.bottom-buffer-medium{margin-bottom:10px !important}.right-buffer-large{margin-right:20px !important}.right-buffer-small{margin-right:5px !important}.right-buffer-medium{margin-right:10px !important}.left-buffer-large{margin-left:20px !important}.left-buffer-small{margin-left:5px !important}.left-buffer-medium{margin-left:10px !important}.word-wrap{word-wrap:break-word;word-break:break-all}.clear-left{clear:left}.flex-container{display:flex}.vertical-center-align{align-items:center}.right-align-controls{align-items:center;display:flex;margin-left:auto}.inline-label{margin-right:15px}.nowrap{white-space:nowrap} /*# sourceMappingURL=index.css.map*/ \ No newline at end of file diff --git a/lib/index.css.map b/lib/index.css.map index 7b409f32..ddb071ee 100644 --- a/lib/index.css.map +++ b/lib/index.css.map @@ -1 +1 @@ -{"version":3,"file":"index.css","mappings":"AAAA,KAAK,KAAK,IAAI,KAAK,OAAO,OAAO,OAAO,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,WAAW,IAAI,EAAE,KAAK,QAAQ,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,EAAE,EAAE,KAAK,MAAM,OAAO,OAAO,IAAI,IAAI,GAAG,IAAI,EAAE,EAAE,EAAE,OAAO,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,SAAS,KAAK,MAAM,OAAO,MAAM,QAAQ,MAAM,MAAM,MAAM,GAAG,GAAG,GAAG,QAAQ,MAAM,OAAO,QAAQ,MAAM,OAAO,WAAW,OAAO,OAAO,OAAO,KAAK,IAAI,OAAO,KAAK,QAAQ,QAAQ,KAAK,KAAK,MAAM,MAArZ,OCAA,EDAA,QCCE,EACA,SACA,eACA,aACA,uBACA,+EAKF,aACE,MAEF,aACE,OAEF,eACE,cAEF,WACE,oCAGA,WACE,YACA,kBAGF,WACE,YACA,OAEJ,yBACE,gBACA,YChCF,iBFHA,OGiIiB,MD5Hf,ED8BA,UC9BA,iBFLF,QEQA,MAEE,UAGF,aACE,sBACA,gBACA,cACA,mBACA,eACA,kBACA,uBACA,EAXA,OAWA,YFrBF,OEuBE,CACE,EAdF,OAcE,qBFxBJ,OE2BE,EACE,UACA,EAnBF,OAmBE,kBAGF,0BACE,UAIJ,4BACE,sBACA,cACA,YACA,6BACA,iBCsFY,uBDpFZ,EAXE,OAWF,YAEA,cACE,EAvBA,oBAuBA,CAdA,QFjCJ,OEkDE,CACE,EAlBA,OAkBA,kBAGF,6BACE,EAtBA,OAsBA,uBAGF,mBACE,EA1BA,OA0BA,oBAGF,qBACE,EA9BA,OA8BA,uBAGF,iBACE,EAlCA,OAkCA,yBAGF,mBACE,EAtCA,OAsCA,wBAGF,kBACE,uCAQF,eE9BE,2BACE,yBACA,uBAGF,cACE,gBANF,sCACE,oCACA,uBAGF,yBACE,gBANF,uCACE,qCACA,uBAGF,0BACE,gBANF,4BACE,0BACA,uBAGF,eACE,gBANF,uCACE,qCACA,uBAGF,0BACE,gBANF,uCACE,qCACA,uBAGF,0BACE,gBANF,4BACE,0BACA,uBAGF,eACE,gBANF,uCACE,qCACA,uBAGF,0BACE,gBANF,uCACE,qCACA,uBAGF,0BACE,gBANF,4BACE,0BACA,uBAGF,eACE,iBANF,uCACE,qCACA,wBAGF,0BACE,iBANF,uCACE,qCACA,wBAGF,0BACE,iBANF,6BACE,2BACA,wBAGF,gBACE,+DFwBJ,eE9BE,2BACE,yBACA,uBAGF,cACE,gBANF,sCACE,oCACA,uBAGF,yBACE,gBANF,uCACE,qCACA,uBAGF,0BACE,gBANF,4BACE,0BACA,uBAGF,eACE,gBANF,uCACE,qCACA,uBAGF,0BACE,gBANF,uCACE,qCACA,uBAGF,0BACE,gBANF,4BACE,0BACA,uBAGF,eACE,gBANF,uCACE,qCACA,uBAGF,0BACE,gBANF,uCACE,qCACA,uBAGF,0BACE,gBANF,4BACE,0BACA,uBAGF,eACE,iBANF,uCACE,qCACA,wBAGF,0BACE,iBANF,uCACE,qCACA,wBAGF,0BACE,iBANF,6BACE,2BACA,wBAGF,gBACE,6DFwBJ,eE9BE,2BACE,yBACA,uBAGF,cACE,gBANF,sCACE,oCACA,uBAGF,yBACE,gBANF,uCACE,qCACA,uBAGF,0BACE,gBANF,4BACE,0BACA,uBAGF,eACE,gBANF,uCACE,qCACA,uBAGF,0BACE,gBANF,uCACE,qCACA,uBAGF,0BACE,gBANF,4BACE,0BACA,uBAGF,eACE,gBANF,uCACE,qCACA,uBAGF,0BACE,gBANF,uCACE,qCACA,uBAGF,0BACE,gBANF,4BACE,0BACA,uBAGF,eACE,iBANF,uCACE,qCACA,wBAGF,0BACE,iBANF,uCACE,qCACA,wBAGF,0BACE,iBANF,6BACE,2BACA,wBAGF,gBACE,uCFwBJ,eE9BE,2BACE,yBACA,uBAGF,cACE,gBANF,sCACE,oCACA,uBAGF,yBACE,gBANF,uCACE,qCACA,uBAGF,0BACE,gBANF,4BACE,0BACA,uBAGF,eACE,gBANF,uCACE,qCACA,uBAGF,0BACE,gBANF,uCACE,qCACA,uBAGF,0BACE,gBANF,4BACE,0BACA,uBAGF,eACE,gBANF,uCACE,qCACA,uBAGF,0BACE,gBA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,yBJ+EM,EInEJ,uBJmEI,EI7EJ,gBJ6EI,YALA,uBAKA,CIjCF,uBJiCE,EI/EN,yBJ+EM,EItEN,eJsEM,EI7EJ,gBJ6EI,YALA,uBAKA,0BIjCF,uBJiCE,EI/EN,yBJ+EM,EI7EJ,gBJ6EI,eIjCF,uBJiCE,EI/EN,yBJgFQ,EIpEN,uBJwEE,EIlFF,gBJkFE,eItCA,uBJsCA,EIpFJ,yBJoFI,EI3EJ,eJ2EI,EIlFF,gBJkFE,0BItCA,uBJsCA,EIpFJ,yBJoFI,EIlFF,gBJkFE,wBItCA,uBJsCA,EIpFJ,yBJqFM,EIzEJ,uBJ4EE,EItFF,gBJsFE,wBI1CA,uBJ0CA,EIxFJ,yBJwFI,EI/EJ,eJ+EI,EItFF,gBJsFE,mCI1CA,uBJ0CA,EIxFJ,yBJwFI,EItFF,gBJsFE,yBI1CA,uBJ0CA,EIxFJ,yBJyFM,EI7EJ,uBJgFE,EI1FF,gBJ0FE,yBI9CA,uBJ8CA,EI5FJ,yBJ4FI,EInFJ,eJmFI,EI1FF,gBJ0FE,oCI9CA,uBJ8CA,6BAlBE,uBAkBF,yEACE,IAKF,6BIpDA,uBJoDA,6BACE,CAzBA,uBA0BA,gCACA,+BACA,WAKF,+FACE,EI5GN,yBJ6GM,EI3GJ,iBJ4GI,CAHF,uBAGE,EI9GN,yBAgEE,EApDA,uBJqDA,EI/DA,iBJiEA,CAwCE,uBAxCF,EInEF,yBJmEE,EI1DF,eJ0DE,EIjEA,iBJiEA,wCAwCE,uBAxCF,EInEF,yBJmEE,EIjEA,gBJiEA,YAwCE,uBAxCF,EInEF,yBJsEI,EI1DF,uBJ6DE,EIvEF,gBJuEE,YAkCA,uBAlCA,EIzEJ,yBJyEI,EIhEJ,eJgEI,EIvEF,gBJuEE,+FAkCA,uBAlCA,EIzEJ,yBJyEI,EIvEF,gBJwEI,mCACA,CAgCF,uBA/BE,EI5EN,yBJ+EM,EInEJ,uBJmEI,EI7EJ,gBJ6EI,YALA,uBAKA,CA4BF,uBA5BE,EI/EN,yBJ+EM,EItEN,eJsEM,EI7EJ,gBJ6EI,YALA,uBAKA,0BA4BF,uBA5BE,EI/EN,yBJ+EM,EI7EJ,gBJ6EI,eA4BF,uBA5BE,EI/EN,yBJgFQ,EIpEN,uBJwEE,EIlFF,gBJkFE,eAuBA,uBAvBA,EIpFJ,yBJoFI,EI3EJ,eJ2EI,EIlFF,gBJkFE,0BAuBA,uBAvBA,EIpFJ,yBJoFI,EIlFF,gBJkFE,wBAuBA,uBAvBA,EIpFJ,yBJqFM,EIzEJ,uBJ4EE,EItFF,gBJsFE,wBAmBA,uBAnBA,EIxFJ,yBJwFI,EI/EJ,eJ+EI,EItFF,gBJsFE,mCAmBA,uBAnBA,EIxFJ,yBJwFI,EItFF,gBJsFE,yBAmBA,uBAnBA,EIxFJ,yBJyFM,EI7EJ,uBJgFE,EI1FF,gBJ0FE,yBAeA,uBAfA,EI5FJ,yBJ4FI,EInFJ,eJmFI,EI1FF,gBJ0FE,oCAeA,uBAfA,6BAlBE,uBAkBF,yEACE,IAKF,6BASA,uBATA,6BACE,CAzBA,uBA0BA,gCACA,+BACA,WAKF,+FACE,EI5GN,yBJ6GM,EI3GJ,iBJ4GI,CAHF,uBAGE,EI9GN,yBAsEE,EA1DA,uBJqDA,EI/DA,iBJiEA,CAwCE,uBAxCF,EInEF,yBJmEE,EI1DF,eJ0DE,EIjEA,iBJiEA,wCAwCE,uBAxCF,EInEF,yBJmEE,EIjEA,gBJiEA,YAwCE,uBAxCF,EInEF,yBJsEI,EI1DF,uBJ6DE,EIvEF,gBJuEE,YAkCA,uBAlCA,EIzEJ,yBJyEI,EIhEJ,eJgEI,EIvEF,gBJuEE,+FAkCA,uBAlCA,EIzEJ,yBJyEI,EIvEF,gBJwEI,mCACA,CAgCF,uBA/BE,EI5EN,yBJ+EM,EInEJ,uBJmEI,EI7EJ,gBJ6EI,YALA,uBAKA,CA4BF,uBA5BE,EI/EN,yBJ+EM,EItEN,eJsEM,EI7EJ,gBJ6EI,YALA,uBAKA,0BA4BF,uBA5BE,EI/EN,yBJ+EM,EI7EJ,gBJ6EI,eA4BF,uBA5BE,EI/EN,yBJgFQ,EIpEN,uBJwEE,EIlFF,gBJkFE,eAuBA,uBAvBA,EIpFJ,yBJoFI,EI3EJ,eJ2EI,EIlFF,gBJkFE,0BAuBA,uBAvBA,EIpFJ,yBJoFI,EIlFF,gBJkFE,wBAuBA,uBAvBA,EIpFJ,yBJqFM,EIzEJ,uBJ4EE,EItFF,gBJsFE,wBAmBA,uBAnBA,EIxFJ,yBJwFI,EI/EJ,eJ+EI,EItFF,gBJsFE,mCAmBA,uBAnBA,EIxFJ,yBJwFI,EItFF,gBJsFE,yBAmBA,uBAnBA,EIxFJ,yBJyFM,EI7EJ,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,aCnBN,CDuBM,UCvBN,QDmBM,aCnBN,CDuBM,QCvBN,QDmBM,aCnBN,CDuBM,QCvBN,eDmBM,aCnBN,CDuBM,UCvBN,eDmBM,aCnBN,CDuBM,QCvBN,eDmBM,aCnBN,CDuBM,QCvBN,eDmBM,aCnBN,CDuBM,UCvBN,eDmBM,aCnBN,CDuBM,QCvBN,2EhCgBE,agChBF,sBhCgBE,YgChBF,ErCgCE,WqChCF,ChCgBE,YgChBF,EhCgBE,agChBF,ChCgBE,YgChBF,EhCkBE,WgCjBA,sCACA,oBCEF,yBACE,UAEA,iC7CPF,Q6COE,WjCSA,aiCTA,cAGE,6BAGF,SACE,QACA,EjCCF,YiCEA,atCcA,WsCbE,WACA,YAGF,kB7CvBF,c6CwBI,KAGF,ejCXA,YiCYE,CAVF,WAaA,CtCCA,UsCDA,OACE,CjChBF,YiCgBE,CAdF,WAiBA,CtCHA,UsCGA,SjCnBA,YiCoBE,CAlBF,WAmBE,CtCLF,UsCKE,cACA,CjCtBF,YiCsBE,CApBF,WAqBE,CtCPF,UsCSE,sH7CzCJ,c6CyCI,iDAIE,WACA,mBACA,Y1CKO,gB0CCX,gBACA,K7CtDF,O6CuDE,IADA,IACA,gB7CvDF,Q6CwDE,gBAfE,iBAeF,0BACA,eAhBE,kBAgBF,CjBpDA,U5BLF,O6C0DE,GAjBE,iBAkBF,CjB3CA,OiB4CA,QACA,oBACA,OACA,iBAEA,EAxBE,iBAwBF,oBACE,cAGF,qCACE,SAGF,WAhCE,iBAiCA,eACA,WACA,EAnCA,iBAsCF,wBACE,aACA,KAxCA,iBAwCA,aACA,QACA,sBACA,KAEA,e7CtFJ,Q6CsFI,wBAIA,0BACE,KACA,YAnDF,iBAyDJ,yBACE,EA1DE,iBA2DF,MACA,kBACA,cACA,eACA,iCACA,KAhEE,iBAmEF,qCACE,gBAGF,MA5GF,sBA6GI,CjBjGF,OiBiGE,SACA,QACA,gCAEA,kBAGF,0BACE,2BACA,MAFF,wBAMF,CtCmDI,esCnDJ,cACE,oCC3HA,YACE,GD0HF,iCCrHA,qBACA,EAMA,QAJA,EAFA,IAMA,QAJA,I9CbF,Q8CoBI,gBDoGF,wBCnGI,YACA,cDkGJ,uBCjGI,kBACA,MDgGJ,uBChGI,C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E,MACA,aAGF,YAtBE,qBAuBA,K7BtFJ,Q6BsFI,gBACA,OACA,CAzBA,qBA0BA,6BAEA,iCACE,QACA,eACA,OAGF,mCACE,QDpGN,gBCuGI,C1CyEF,ePjLJ,OiDwGM,GDvGJ,gBCwGM,gCAKN,QACE,iBACA,eACA,QDhHF,gBCiHE,CATI,+BAYN,C1CrFA,W0CqFA,MACE,QAGF,iBDxHA,gBCwHA,CAhBM,+BAkBJ,C1C3FF,U0C2FE,YACA,YAEA,GVZA,eUYA,kCjD9HJ,OiD+HM,OjD/HN,QiDgIM,GVdF,eUgBE,oCVhBF,eUgBE,eACE,8BC9HN,+BACA,IACA,EX2GE,eW1GF,cAEA,+BAEE,gCAGF,MXmGE,eWlGA,KlDhBJ,OkDgBI,QXkGA,eWjGA,uBAGF,uCACE,6BACA,0BAGF,KlDzBF,QkDyBE,SACE,EXwFA,eWrFF,8BACE,OACA,EXmFA,eWlFA,CrBhBE,OqBiBF,gCACA,WACA,C1CoMF,U0CpME,MACA,mBACA,YCpCwB,CDsCxB,8BACE,CADF,uBAKF,+BACE,8BlD7CJ,QoDIE,uBACE,WACA,cAIA,uDACE,uBACA,SAIJ,oCACE,WCjBJ,MDgBE,oBCfA,6ErDDF,QqDEE,GDcA,oBCdA,ECFF,MDCE,uCCCA,C/BYE,Y+BVF,iBFYA,oBEZA,QDHA,uCCIE,kBACA,kBtDNJ,OsDQI,GFQF,oBERE,QDPF,sCCQI,OAGF,+CtDZJ,QsDYI,WFIF,oBEHI,QDZJ,sCCgBE,mFAEE,KACA,gBACA,iBAEA,U9ClBJ,iB8CkBI,a1CLJ,W0CKI,+CACE,cAMJ,oD1CZF,U0CaI,qBC/BN,eACE,E3CiBA,U4ChBF,CF6BM,KE7BN,E5CgBE,W4CfA,YACA,G5CcA,U4CdA,cACA,mBACA,gBACA,8BACA,OAEA,iBACE,E5COF,W4CPE,CvBNF,kBuBSE,0BACE,kBAIJ,exDnBF,QwDoBI,aACA,e5CHF,U4CMA,CApBA,aAoBA,CvBnBA,kBuBoBE,aAGF,iB5CVA,U4CUA,EjDIA,WiDHE,C5CXF,U4CYE,E5CdF,a4CcE,C5CZF,U4CaE,E5CbF,W4CaE,YAEA,gCAIF,kDACE,6BAIF,sDALA,mBAQE,CAPA,4B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","sources":["webpack://@tyk-technologies/tyk-ui/./src/index.scss","webpack://@tyk-technologies/tyk-ui/./src/common/sass/reset.scss","webpack://@tyk-technologies/tyk-ui/./src/common/sass/grid.scss","webpack://@tyk-technologies/tyk-ui/./src/common/sass/variables.scss","webpack://@tyk-technologies/tyk-ui/./src/common/sass/mixins.scss","webpack://@tyk-technologies/tyk-ui/./src/common/sass/fontawesome.scss","webpack://@tyk-technologies/tyk-ui/./src/common/sass/tykon.scss","webpack://@tyk-technologies/tyk-ui/./src/common/sass/typography.scss","webpack://@tyk-technologies/tyk-ui/./src/common/sass/form.scss","webpack://@tyk-technologies/tyk-ui/./src/components/Accordion/sass/Accordion.scss","webpack://@tyk-technologies/tyk-ui/./src/components/Tooltip/sass/variables.scss","webpack://@tyk-technologies/tyk-ui/./src/components/Tooltip/sass/Tooltip.scss","webpack://@tyk-technologies/tyk-ui/./src/components/Button/sass/Button.scss","webpack://@tyk-technologies/tyk-ui/./src/components/Button/sass/mixins.scss","webpack://@tyk-technologies/tyk-ui/./src/components/Button/sass/variables.scss","webpack://@tyk-technologies/tyk-ui/./src/components/ButtonGroup/sass/ButtonGroup.scss","webpack://@tyk-technologies/tyk-ui/./src/components/Chart/sass/Chart.scss","webpack://@tyk-technologies/tyk-ui/./src/components/Collapsible/sass/Collapsible.scss","webpack://@tyk-technologies/tyk-ui/./src/components/CopyToClipboard/sass/CopyToClipboard.scss","webpack://@tyk-technologies/tyk-ui/./src/components/FixedWrapper/sass/FixedWrapper.scss","webpack://@tyk-technologies/tyk-ui/./src/components/FloatingContainer/sass/FloatingContainer.scss","webpack://@tyk-technologies/tyk-ui/./src/components/Icon/sass/Icon.scss","webpack://@tyk-technologies/tyk-ui/./src/components/InfiniteScroller/sass/InfiniteScroller.scss","webpack://@tyk-technologies/tyk-ui/./src/components/InfoNote/sass/InfoNote.scss","webpack://@tyk-technologies/tyk-ui/./src/components/Loader/sass/Loader.scss","webpack://@tyk-technologies/tyk-ui/./src/components/List/sass/List.scss","webpack://@tyk-technologies/tyk-ui/./src/components/Message/sass/Message.scss","webpack://@tyk-technologies/tyk-ui/./src/components/Message/sass/mixins.scss","webpack://@tyk-technologies/tyk-ui/./src/components/Modal/sass/Modal.scss","webpack://@tyk-technologies/tyk-ui/./src/components/Navigation/sass/Navigation.scss","webpack://@tyk-technologies/tyk-ui/./src/components/NavBar/sass/NavBar.scss","webpack://@tyk-technologies/tyk-ui/./src/components/NavBar/sass/variables.scss","webpack://@tyk-technologies/tyk-ui/./src/components/Panel/sass/Panel.scss","webpack://@tyk-technologies/tyk-ui/./src/components/Panel/sass/mixins.scss","webpack://@tyk-technologies/tyk-ui/./src/components/Panel/sass/variables.scss","webpack://@tyk-technologies/tyk-ui/./src/components/Pill/sass/Pill.scss","webpack://@tyk-technologies/tyk-ui/./src/components/RevealPanel/sass/RevealPanel.scss","webpack://@tyk-technologies/tyk-ui/./src/components/Sidebar/sass/Sidebar.scss","webpack://@tyk-technologies/tyk-ui/./src/components/Sidebar/sass/variables.scss","webpack://@tyk-technologies/tyk-ui/./src/components/Table/sass/Table.scss","webpack://@tyk-technologies/tyk-ui/./src/components/Tabs/sass/Tabs.scss","webpack://@tyk-technologies/tyk-ui/./src/components/Toast/sass/Toast.scss","webpack://@tyk-technologies/tyk-ui/./src/form/components/Combobox2/sass/Combobox.scss","webpack://@tyk-technologies/tyk-ui/./src/form/components/Checkbox/sass/Checkbox.scss","webpack://@tyk-technologies/tyk-ui/./src/form/components/DatePicker/sass/DatePicker.scss","webpack://@tyk-technologies/tyk-ui/./src/form/components/Dropdown/sass/Dropdown.scss","webpack://@tyk-technologies/tyk-ui/./src/form/components/EditableList/sass/EditableList.scss","webpack://@tyk-technologies/tyk-ui/./src/form/components/EditableList2/sass/EditableList2.scss","webpack://@tyk-technologies/tyk-ui/./src/form/components/FileInput/sass/FileInput.scss","webpack://@tyk-technologies/tyk-ui/./src/form/components/Multiselect/sass/Multiselect.scss","webpack://@tyk-technologies/tyk-ui/./src/form/components/Pagination/sass/Pagination.scss","webpack://@tyk-technologies/tyk-ui/./src/form/components/Pagination/sass/variables.scss","webpack://@tyk-technologies/tyk-ui/./src/form/components/Radio/sass/Radio.scss","webpack://@tyk-technologies/tyk-ui/./src/form/components/Select/sass/Select.scss","webpack://@tyk-technologies/tyk-ui/./src/form/components/SelectableList/sass/SelectableList.scss","webpack://@tyk-technologies/tyk-ui/./src/form/components/Textarea/sass/Textarea.scss","webpack://@tyk-technologies/tyk-ui/./src/form/components/Toggle/sass/Toggle.scss","webpack://@tyk-technologies/tyk-ui/./src/form/components/StringBuilder/sass/Stringbuilder.scss","webpack://@tyk-technologies/tyk-ui/./src/common/sass/layout.scss","webpack://@tyk-technologies/tyk-ui/./src/common/sass/texts.scss","webpack://@tyk-technologies/tyk-ui/./src/utils/css-helpers/helpers.scss"],"sourcesContent":["html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video{margin:0;padding:0;border:0;font-size:100%;font:inherit;vertical-align:baseline}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}body{line-height:1}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:before,blockquote:after{content:\"\";content:none}q:before,q:after{content:\"\";content:none}table{border-collapse:collapse;border-spacing:0}.container{max-width:1240px;margin:0 auto}.container,.container-fluid{padding:0 20px}.tyk-row{display:flex;box-sizing:border-box;list-style:none;flex:0 1 auto;flex-direction:row;flex-wrap:wrap;margin-left:-20px;width:calc(100% + 20px)}.tyk-row.no-gutters{margin:0}.tyk-row.tyk-row--gutterless{margin:0;width:100%}.tyk-row.tyk-row--reverse{flex-direction:row-reverse}.tyk-col{max-width:calc(100% - 20px);box-sizing:border-box;flex:0 0 auto;flex-grow:1;flex-basis:calc(100% - 20px);margin-left:20px;width:calc(100% - 20px)}.tyk-col:last-child{margin-right:0}.tyk-row--gutterless .tyk-col{margin:0}.tyk-col.tyk-col--reverse{flex-direction:column-reverse}.tyk-col.tyk-col--align-bottom{align-self:flex-end}.tyk-col.tyk-col--align-top{align-self:flex-start}.tyk-col.tyk-col--align-center{align-self:center}.tyk-col.tyk-col--align-baseline{align-self:baseline}.tyk-col.tyk-col--align-stretch{align-self:stretch}@media screen and (min-width: 1248px){.tyk-col--lg-0{flex-basis:calc(0% - 20px);max-width:calc(0% - 20px)}.tyk-col--offset-lg-0{margin-left:0%}.tyk-col--lg-1{flex-basis:calc(8.3333333333% - 20px);max-width:calc(8.3333333333% - 20px)}.tyk-col--offset-lg-1{margin-left:8.3333333333%}.tyk-col--lg-2{flex-basis:calc(16.6666666667% - 20px);max-width:calc(16.6666666667% - 20px)}.tyk-col--offset-lg-2{margin-left:16.6666666667%}.tyk-col--lg-3{flex-basis:calc(25% - 20px);max-width:calc(25% - 20px)}.tyk-col--offset-lg-3{margin-left:25%}.tyk-col--lg-4{flex-basis:calc(33.3333333333% - 20px);max-width:calc(33.3333333333% - 20px)}.tyk-col--offset-lg-4{margin-left:33.3333333333%}.tyk-col--lg-5{flex-basis:calc(41.6666666667% - 20px);max-width:calc(41.6666666667% - 20px)}.tyk-col--offset-lg-5{margin-left:41.6666666667%}.tyk-col--lg-6{flex-basis:calc(50% - 20px);max-width:calc(50% - 20px)}.tyk-col--offset-lg-6{margin-left:50%}.tyk-col--lg-7{flex-basis:calc(58.3333333333% - 20px);max-width:calc(58.3333333333% - 20px)}.tyk-col--offset-lg-7{margin-left:58.3333333333%}.tyk-col--lg-8{flex-basis:calc(66.6666666667% - 20px);max-width:calc(66.6666666667% - 20px)}.tyk-col--offset-lg-8{margin-left:66.6666666667%}.tyk-col--lg-9{flex-basis:calc(75% - 20px);max-width:calc(75% - 20px)}.tyk-col--offset-lg-9{margin-left:75%}.tyk-col--lg-10{flex-basis:calc(83.3333333333% - 20px);max-width:calc(83.3333333333% - 20px)}.tyk-col--offset-lg-10{margin-left:83.3333333333%}.tyk-col--lg-11{flex-basis:calc(91.6666666667% - 20px);max-width:calc(91.6666666667% - 20px)}.tyk-col--offset-lg-11{margin-left:91.6666666667%}.tyk-col--lg-12{flex-basis:calc(100% - 20px);max-width:calc(100% - 20px)}.tyk-col--offset-lg-12{margin-left:100%}}@media screen and (min-width: 1024px)and (max-width: 1247px){.tyk-col--md-0{flex-basis:calc(0% - 20px);max-width:calc(0% - 20px)}.tyk-col--offset-md-0{margin-left:0%}.tyk-col--md-1{flex-basis:calc(8.3333333333% - 20px);max-width:calc(8.3333333333% - 20px)}.tyk-col--offset-md-1{margin-left:8.3333333333%}.tyk-col--md-2{flex-basis:calc(16.6666666667% - 20px);max-width:calc(16.6666666667% - 20px)}.tyk-col--offset-md-2{margin-left:16.6666666667%}.tyk-col--md-3{flex-basis:calc(25% - 20px);max-width:calc(25% - 20px)}.tyk-col--offset-md-3{margin-left:25%}.tyk-col--md-4{flex-basis:calc(33.3333333333% - 20px);max-width:calc(33.3333333333% - 20px)}.tyk-col--offset-md-4{margin-left:33.3333333333%}.tyk-col--md-5{flex-basis:calc(41.6666666667% - 20px);max-width:calc(41.6666666667% - 20px)}.tyk-col--offset-md-5{margin-left:41.6666666667%}.tyk-col--md-6{flex-basis:calc(50% - 20px);max-width:calc(50% - 20px)}.tyk-col--offset-md-6{margin-left:50%}.tyk-col--md-7{flex-basis:calc(58.3333333333% - 20px);max-width:calc(58.3333333333% - 20px)}.tyk-col--offset-md-7{margin-left:58.3333333333%}.tyk-col--md-8{flex-basis:calc(66.6666666667% - 20px);max-width:calc(66.6666666667% - 20px)}.tyk-col--offset-md-8{margin-left:66.6666666667%}.tyk-col--md-9{flex-basis:calc(75% - 20px);max-width:calc(75% - 20px)}.tyk-col--offset-md-9{margin-left:75%}.tyk-col--md-10{flex-basis:calc(83.3333333333% - 20px);max-width:calc(83.3333333333% - 20px)}.tyk-col--offset-md-10{margin-left:83.3333333333%}.tyk-col--md-11{flex-basis:calc(91.6666666667% - 20px);max-width:calc(91.6666666667% - 20px)}.tyk-col--offset-md-11{margin-left:91.6666666667%}.tyk-col--md-12{flex-basis:calc(100% - 20px);max-width:calc(100% - 20px)}.tyk-col--offset-md-12{margin-left:100%}}@media screen and (min-width: 769px)and (max-width:1023px){.tyk-col--sm-0{flex-basis:calc(0% - 20px);max-width:calc(0% - 20px)}.tyk-col--offset-sm-0{margin-left:0%}.tyk-col--sm-1{flex-basis:calc(8.3333333333% - 20px);max-width:calc(8.3333333333% - 20px)}.tyk-col--offset-sm-1{margin-left:8.3333333333%}.tyk-col--sm-2{flex-basis:calc(16.6666666667% - 20px);max-width:calc(16.6666666667% - 20px)}.tyk-col--offset-sm-2{margin-left:16.6666666667%}.tyk-col--sm-3{flex-basis:calc(25% - 20px);max-width:calc(25% - 20px)}.tyk-col--offset-sm-3{margin-left:25%}.tyk-col--sm-4{flex-basis:calc(33.3333333333% - 20px);max-width:calc(33.3333333333% - 20px)}.tyk-col--offset-sm-4{margin-left:33.3333333333%}.tyk-col--sm-5{flex-basis:calc(41.6666666667% - 20px);max-width:calc(41.6666666667% - 20px)}.tyk-col--offset-sm-5{margin-left:41.6666666667%}.tyk-col--sm-6{flex-basis:calc(50% - 20px);max-width:calc(50% - 20px)}.tyk-col--offset-sm-6{margin-left:50%}.tyk-col--sm-7{flex-basis:calc(58.3333333333% - 20px);max-width:calc(58.3333333333% - 20px)}.tyk-col--offset-sm-7{margin-left:58.3333333333%}.tyk-col--sm-8{flex-basis:calc(66.6666666667% - 20px);max-width:calc(66.6666666667% - 20px)}.tyk-col--offset-sm-8{margin-left:66.6666666667%}.tyk-col--sm-9{flex-basis:calc(75% - 20px);max-width:calc(75% - 20px)}.tyk-col--offset-sm-9{margin-left:75%}.tyk-col--sm-10{flex-basis:calc(83.3333333333% - 20px);max-width:calc(83.3333333333% - 20px)}.tyk-col--offset-sm-10{margin-left:83.3333333333%}.tyk-col--sm-11{flex-basis:calc(91.6666666667% - 20px);max-width:calc(91.6666666667% - 20px)}.tyk-col--offset-sm-11{margin-left:91.6666666667%}.tyk-col--sm-12{flex-basis:calc(100% - 20px);max-width:calc(100% - 20px)}.tyk-col--offset-sm-12{margin-left:100%}}@media screen and (max-width: 768px){.tyk-col--xs-0{flex-basis:calc(0% - 20px);max-width:calc(0% - 20px)}.tyk-col--offset-xs-0{margin-left:0%}.tyk-col--xs-1{flex-basis:calc(8.3333333333% - 20px);max-width:calc(8.3333333333% - 20px)}.tyk-col--offset-xs-1{margin-left:8.3333333333%}.tyk-col--xs-2{flex-basis:calc(16.6666666667% - 20px);max-width:calc(16.6666666667% - 20px)}.tyk-col--offset-xs-2{margin-left:16.6666666667%}.tyk-col--xs-3{flex-basis:calc(25% - 20px);max-width:calc(25% - 20px)}.tyk-col--offset-xs-3{margin-left:25%}.tyk-col--xs-4{flex-basis:calc(33.3333333333% - 20px);max-width:calc(33.3333333333% - 20px)}.tyk-col--offset-xs-4{margin-left:33.3333333333%}.tyk-col--xs-5{flex-basis:calc(41.6666666667% - 20px);max-width:calc(41.6666666667% - 20px)}.tyk-col--offset-xs-5{margin-left:41.6666666667%}.tyk-col--xs-6{flex-basis:calc(50% - 20px);max-width:calc(50% - 20px)}.tyk-col--offset-xs-6{margin-left:50%}.tyk-col--xs-7{flex-basis:calc(58.3333333333% - 20px);max-width:calc(58.3333333333% - 20px)}.tyk-col--offset-xs-7{margin-left:58.3333333333%}.tyk-col--xs-8{flex-basis:calc(66.6666666667% - 20px);max-width:calc(66.6666666667% - 20px)}.tyk-col--offset-xs-8{margin-left:66.6666666667%}.tyk-col--xs-9{flex-basis:calc(75% - 20px);max-width:calc(75% - 20px)}.tyk-col--offset-xs-9{margin-left:75%}.tyk-col--xs-10{flex-basis:calc(83.3333333333% - 20px);max-width:calc(83.3333333333% - 20px)}.tyk-col--offset-xs-10{margin-left:83.3333333333%}.tyk-col--xs-11{flex-basis:calc(91.6666666667% - 20px);max-width:calc(91.6666666667% - 20px)}.tyk-col--offset-xs-11{margin-left:91.6666666667%}.tyk-col--xs-12{flex-basis:calc(100% - 20px);max-width:calc(100% - 20px)}.tyk-col--offset-xs-12{margin-left:100%}}@font-face{font-family:\"OpenSans-Bold\";src:url(\"../fonts/OpenSans-Bold.woff2\") format(\"woff2\"),url(\"../fonts/OpenSans-Bold.woff\") format(\"woff\");font-weight:normal;font-style:normal}@font-face{font-family:\"OpenSans-SemiBold\";src:url(\"../fonts/OpenSans-SemiBold.woff2\") format(\"woff2\"),url(\"../fonts/OpenSans-SemiBold.woff\") format(\"woff\");font-weight:normal;font-style:normal}@font-face{font-family:\"OpenSans-Regular\";src:url(\"../fonts/OpenSans-Regular.woff2\") format(\"woff2\"),url(\"../fonts/OpenSans-Regular.woff\") format(\"woff\");font-weight:normal;font-style:normal}@font-face{font-family:\"smoolthan_bold\";src:url(\"../fonts/smoolthan_bold-webfont.woff2\") format(\"woff2\"),url(\"../fonts/smoolthan_bold-webfont.woff\") format(\"woff\");font-weight:normal;font-style:normal}@font-face{font-family:\"smoolthan_medium\";src:url(\"../fonts/smoolthan_medium-webfont.woff2\") format(\"woff2\"),url(\"../fonts/smoolthan_medium-webfont.woff\") format(\"woff\");font-weight:normal;font-style:normal}@font-face{font-family:\"smoolthan_regular\";src:url(\"../fonts/smoolthan_regular-webfont.woff2\") format(\"woff2\"),url(\"../fonts/smoolthan_regular-webfont.woff\") format(\"woff\");font-weight:normal;font-style:normal}@font-face{font-family:\"tykon\";src:url(\"../fonts/tykon.woff2\") format(\"woff2\"),url(\"../fonts/tykon.woff\") format(\"woff\");font-weight:normal;font-style:normal}/*!\n * Font Awesome Free 5.5.0 by @fontawesome - https://fontawesome.com\n * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)\n */.fa,.fas,.far,.fal,.fab{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-0.0667em}.fa-xs{font-size:.75em}.fa-sm{font-size:.875em}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:2.5em;padding-left:0}.fa-ul>li{position:relative}.fa-li{left:-2em;position:absolute;text-align:center;width:2em;line-height:inherit}.fa-border{border:solid .08em #eee;border-radius:.1em;padding:.2em .25em .15em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left,.fas.fa-pull-left,.far.fa-pull-left,.fal.fa-pull-left,.fab.fa-pull-left{margin-right:.3em}.fa.fa-pull-right,.fas.fa-pull-right,.far.fa-pull-right,.fal.fa-pull-right,.fab.fa-pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.fa-rotate-90{-ms-filter:\"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)\";-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:\"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)\";-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:\"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)\";-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:\"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)\";-webkit-transform:scale(-1, 1);transform:scale(-1, 1)}.fa-flip-vertical{-ms-filter:\"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)\";-webkit-transform:scale(1, -1);transform:scale(1, -1)}.fa-flip-horizontal.fa-flip-vertical{-ms-filter:\"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)\";-webkit-transform:scale(-1, -1);transform:scale(-1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{-webkit-filter:none;filter:none}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-500px:before{content:\"\"}.fa-accessible-icon:before{content:\"\"}.fa-accusoft:before{content:\"\"}.fa-acquisitions-incorporated:before{content:\"\"}.fa-ad:before{content:\"\"}.fa-address-book:before{content:\"\"}.fa-address-card:before{content:\"\"}.fa-adjust:before{content:\"\"}.fa-adn:before{content:\"\"}.fa-adversal:before{content:\"\"}.fa-affiliatetheme:before{content:\"\"}.fa-air-freshener:before{content:\"\"}.fa-algolia:before{content:\"\"}.fa-align-center:before{content:\"\"}.fa-align-justify:before{content:\"\"}.fa-align-left:before{content:\"\"}.fa-align-right:before{content:\"\"}.fa-alipay:before{content:\"\"}.fa-allergies:before{content:\"\"}.fa-amazon:before{content:\"\"}.fa-amazon-pay:before{content:\"\"}.fa-ambulance:before{content:\"\"}.fa-american-sign-language-interpreting:before{content:\"\"}.fa-amilia:before{content:\"\"}.fa-anchor:before{content:\"\"}.fa-android:before{content:\"\"}.fa-angellist:before{content:\"\"}.fa-angle-double-down:before{content:\"\"}.fa-angle-double-left:before{content:\"\"}.fa-angle-double-right:before{content:\"\"}.fa-angle-double-up:before{content:\"\"}.fa-angle-down:before{content:\"\"}.fa-angle-left:before{content:\"\"}.fa-angle-right:before{content:\"\"}.fa-angle-up:before{content:\"\"}.fa-angry:before{content:\"\"}.fa-angrycreative:before{content:\"\"}.fa-angular:before{content:\"\"}.fa-ankh:before{content:\"\"}.fa-app-store:before{content:\"\"}.fa-app-store-ios:before{content:\"\"}.fa-apper:before{content:\"\"}.fa-apple:before{content:\"\"}.fa-apple-alt:before{content:\"\"}.fa-apple-pay:before{content:\"\"}.fa-archive:before{content:\"\"}.fa-archway:before{content:\"\"}.fa-arrow-alt-circle-down:before{content:\"\"}.fa-arrow-alt-circle-left:before{content:\"\"}.fa-arrow-alt-circle-right:before{content:\"\"}.fa-arrow-alt-circle-up:before{content:\"\"}.fa-arrow-circle-down:before{content:\"\"}.fa-arrow-circle-left:before{content:\"\"}.fa-arrow-circle-right:before{content:\"\"}.fa-arrow-circle-up:before{content:\"\"}.fa-arrow-down:before{content:\"\"}.fa-arrow-left:before{content:\"\"}.fa-arrow-right:before{content:\"\"}.fa-arrow-up:before{content:\"\"}.fa-arrows-alt:before{content:\"\"}.fa-arrows-alt-h:before{content:\"\"}.fa-arrows-alt-v:before{content:\"\"}.fa-assistive-listening-systems:before{content:\"\"}.fa-asterisk:before{content:\"\"}.fa-asymmetrik:before{content:\"\"}.fa-at:before{content:\"\"}.fa-atlas:before{content:\"\"}.fa-atom:before{content:\"\"}.fa-audible:before{content:\"\"}.fa-audio-description:before{content:\"\"}.fa-autoprefixer:before{content:\"\"}.fa-avianex:before{content:\"\"}.fa-aviato:before{content:\"\"}.fa-award:before{content:\"\"}.fa-aws:before{content:\"\"}.fa-backspace:before{content:\"\"}.fa-backward:before{content:\"\"}.fa-balance-scale:before{content:\"\"}.fa-ban:before{content:\"\"}.fa-band-aid:before{content:\"\"}.fa-bandcamp:before{content:\"\"}.fa-barcode:before{content:\"\"}.fa-bars:before{content:\"\"}.fa-baseball-ball:before{content:\"\"}.fa-basketball-ball:before{content:\"\"}.fa-bath:before{content:\"\"}.fa-battery-empty:before{content:\"\"}.fa-battery-full:before{content:\"\"}.fa-battery-half:before{content:\"\"}.fa-battery-quarter:before{content:\"\"}.fa-battery-three-quarters:before{content:\"\"}.fa-bed:before{content:\"\"}.fa-beer:before{content:\"\"}.fa-behance:before{content:\"\"}.fa-behance-square:before{content:\"\"}.fa-bell:before{content:\"\"}.fa-bell-slash:before{content:\"\"}.fa-bezier-curve:before{content:\"\"}.fa-bible:before{content:\"\"}.fa-bicycle:before{content:\"\"}.fa-bimobject:before{content:\"\"}.fa-binoculars:before{content:\"\"}.fa-birthday-cake:before{content:\"\"}.fa-bitbucket:before{content:\"\"}.fa-bitcoin:before{content:\"\"}.fa-bity:before{content:\"\"}.fa-black-tie:before{content:\"\"}.fa-blackberry:before{content:\"\"}.fa-blender:before{content:\"\"}.fa-blender-phone:before{content:\"\"}.fa-blind:before{content:\"\"}.fa-blogger:before{content:\"\"}.fa-blogger-b:before{content:\"\"}.fa-bluetooth:before{content:\"\"}.fa-bluetooth-b:before{content:\"\"}.fa-bold:before{content:\"\"}.fa-bolt:before{content:\"\"}.fa-bomb:before{content:\"\"}.fa-bone:before{content:\"\"}.fa-bong:before{content:\"\"}.fa-book:before{content:\"\"}.fa-book-dead:before{content:\"\"}.fa-book-open:before{content:\"\"}.fa-book-reader:before{content:\"\"}.fa-bookmark:before{content:\"\"}.fa-bowling-ball:before{content:\"\"}.fa-box:before{content:\"\"}.fa-box-open:before{content:\"\"}.fa-boxes:before{content:\"\"}.fa-braille:before{content:\"\"}.fa-brain:before{content:\"\"}.fa-briefcase:before{content:\"\"}.fa-briefcase-medical:before{content:\"\"}.fa-broadcast-tower:before{content:\"\"}.fa-broom:before{content:\"\"}.fa-brush:before{content:\"\"}.fa-btc:before{content:\"\"}.fa-bug:before{content:\"\"}.fa-building:before{content:\"\"}.fa-bullhorn:before{content:\"\"}.fa-bullseye:before{content:\"\"}.fa-burn:before{content:\"\"}.fa-buromobelexperte:before{content:\"\"}.fa-bus:before{content:\"\"}.fa-bus-alt:before{content:\"\"}.fa-business-time:before{content:\"\"}.fa-buysellads:before{content:\"\"}.fa-calculator:before{content:\"\"}.fa-calendar:before{content:\"\"}.fa-calendar-alt:before{content:\"\"}.fa-calendar-check:before{content:\"\"}.fa-calendar-minus:before{content:\"\"}.fa-calendar-plus:before{content:\"\"}.fa-calendar-times:before{content:\"\"}.fa-camera:before{content:\"\"}.fa-camera-retro:before{content:\"\"}.fa-campground:before{content:\"\"}.fa-cannabis:before{content:\"\"}.fa-capsules:before{content:\"\"}.fa-car:before{content:\"\"}.fa-car-alt:before{content:\"\"}.fa-car-battery:before{content:\"\"}.fa-car-crash:before{content:\"\"}.fa-car-side:before{content:\"\"}.fa-caret-down:before{content:\"\"}.fa-caret-left:before{content:\"\"}.fa-caret-right:before{content:\"\"}.fa-caret-square-down:before{content:\"\"}.fa-caret-square-left:before{content:\"\"}.fa-caret-square-right:before{content:\"\"}.fa-caret-square-up:before{content:\"\"}.fa-caret-up:before{content:\"\"}.fa-cart-arrow-down:before{content:\"\"}.fa-cart-plus:before{content:\"\"}.fa-cat:before{content:\"\"}.fa-cc-amazon-pay:before{content:\"\"}.fa-cc-amex:before{content:\"\"}.fa-cc-apple-pay:before{content:\"\"}.fa-cc-diners-club:before{content:\"\"}.fa-cc-discover:before{content:\"\"}.fa-cc-jcb:before{content:\"\"}.fa-cc-mastercard:before{content:\"\"}.fa-cc-paypal:before{content:\"\"}.fa-cc-stripe:before{content:\"\"}.fa-cc-visa:before{content:\"\"}.fa-centercode:before{content:\"\"}.fa-certificate:before{content:\"\"}.fa-chair:before{content:\"\"}.fa-chalkboard:before{content:\"\"}.fa-chalkboard-teacher:before{content:\"\"}.fa-charging-station:before{content:\"\"}.fa-chart-area:before{content:\"\"}.fa-chart-bar:before{content:\"\"}.fa-chart-line:before{content:\"\"}.fa-chart-pie:before{content:\"\"}.fa-check:before{content:\"\"}.fa-check-circle:before{content:\"\"}.fa-check-double:before{content:\"\"}.fa-check-square:before{content:\"\"}.fa-chess:before{content:\"\"}.fa-chess-bishop:before{content:\"\"}.fa-chess-board:before{content:\"\"}.fa-chess-king:before{content:\"\"}.fa-chess-knight:before{content:\"\"}.fa-chess-pawn:before{content:\"\"}.fa-chess-queen:before{content:\"\"}.fa-chess-rook:before{content:\"\"}.fa-chevron-circle-down:before{content:\"\"}.fa-chevron-circle-left:before{content:\"\"}.fa-chevron-circle-right:before{content:\"\"}.fa-chevron-circle-up:before{content:\"\"}.fa-chevron-down:before{content:\"\"}.fa-chevron-left:before{content:\"\"}.fa-chevron-right:before{content:\"\"}.fa-chevron-up:before{content:\"\"}.fa-child:before{content:\"\"}.fa-chrome:before{content:\"\"}.fa-church:before{content:\"\"}.fa-circle:before{content:\"\"}.fa-circle-notch:before{content:\"\"}.fa-city:before{content:\"\"}.fa-clipboard:before{content:\"\"}.fa-clipboard-check:before{content:\"\"}.fa-clipboard-list:before{content:\"\"}.fa-clock:before{content:\"\"}.fa-clone:before{content:\"\"}.fa-closed-captioning:before{content:\"\"}.fa-cloud:before{content:\"\"}.fa-cloud-download-alt:before{content:\"\"}.fa-cloud-meatball:before{content:\"\"}.fa-cloud-moon:before{content:\"\"}.fa-cloud-moon-rain:before{content:\"\"}.fa-cloud-rain:before{content:\"\"}.fa-cloud-showers-heavy:before{content:\"\"}.fa-cloud-sun:before{content:\"\"}.fa-cloud-sun-rain:before{content:\"\"}.fa-cloud-upload-alt:before{content:\"\"}.fa-cloudscale:before{content:\"\"}.fa-cloudsmith:before{content:\"\"}.fa-cloudversify:before{content:\"\"}.fa-cocktail:before{content:\"\"}.fa-code:before{content:\"\"}.fa-code-branch:before{content:\"\"}.fa-codepen:before{content:\"\"}.fa-codiepie:before{content:\"\"}.fa-coffee:before{content:\"\"}.fa-cog:before{content:\"\"}.fa-cogs:before{content:\"\"}.fa-coins:before{content:\"\"}.fa-columns:before{content:\"\"}.fa-comment:before{content:\"\"}.fa-comment-alt:before{content:\"\"}.fa-comment-dollar:before{content:\"\"}.fa-comment-dots:before{content:\"\"}.fa-comment-slash:before{content:\"\"}.fa-comments:before{content:\"\"}.fa-comments-dollar:before{content:\"\"}.fa-compact-disc:before{content:\"\"}.fa-compass:before{content:\"\"}.fa-compress:before{content:\"\"}.fa-compress-arrows-alt:before{content:\"\"}.fa-concierge-bell:before{content:\"\"}.fa-connectdevelop:before{content:\"\"}.fa-contao:before{content:\"\"}.fa-cookie:before{content:\"\"}.fa-cookie-bite:before{content:\"\"}.fa-copy:before{content:\"\"}.fa-copyright:before{content:\"\"}.fa-couch:before{content:\"\"}.fa-cpanel:before{content:\"\"}.fa-creative-commons:before{content:\"\"}.fa-creative-commons-by:before{content:\"\"}.fa-creative-commons-nc:before{content:\"\"}.fa-creative-commons-nc-eu:before{content:\"\"}.fa-creative-commons-nc-jp:before{content:\"\"}.fa-creative-commons-nd:before{content:\"\"}.fa-creative-commons-pd:before{content:\"\"}.fa-creative-commons-pd-alt:before{content:\"\"}.fa-creative-commons-remix:before{content:\"\"}.fa-creative-commons-sa:before{content:\"\"}.fa-creative-commons-sampling:before{content:\"\"}.fa-creative-commons-sampling-plus:before{content:\"\"}.fa-creative-commons-share:before{content:\"\"}.fa-creative-commons-zero:before{content:\"\"}.fa-credit-card:before{content:\"\"}.fa-critical-role:before{content:\"\"}.fa-crop:before{content:\"\"}.fa-crop-alt:before{content:\"\"}.fa-cross:before{content:\"\"}.fa-crosshairs:before{content:\"\"}.fa-crow:before{content:\"\"}.fa-crown:before{content:\"\"}.fa-css3:before{content:\"\"}.fa-css3-alt:before{content:\"\"}.fa-cube:before{content:\"\"}.fa-cubes:before{content:\"\"}.fa-cut:before{content:\"\"}.fa-cuttlefish:before{content:\"\"}.fa-d-and-d:before{content:\"\"}.fa-d-and-d-beyond:before{content:\"\"}.fa-dashcube:before{content:\"\"}.fa-database:before{content:\"\"}.fa-deaf:before{content:\"\"}.fa-delicious:before{content:\"\"}.fa-democrat:before{content:\"\"}.fa-deploydog:before{content:\"\"}.fa-deskpro:before{content:\"\"}.fa-desktop:before{content:\"\"}.fa-dev:before{content:\"\"}.fa-deviantart:before{content:\"\"}.fa-dharmachakra:before{content:\"\"}.fa-diagnoses:before{content:\"\"}.fa-dice:before{content:\"\"}.fa-dice-d20:before{content:\"\"}.fa-dice-d6:before{content:\"\"}.fa-dice-five:before{content:\"\"}.fa-dice-four:before{content:\"\"}.fa-dice-one:before{content:\"\"}.fa-dice-six:before{content:\"\"}.fa-dice-three:before{content:\"\"}.fa-dice-two:before{content:\"\"}.fa-digg:before{content:\"\"}.fa-digital-ocean:before{content:\"\"}.fa-digital-tachograph:before{content:\"\"}.fa-directions:before{content:\"\"}.fa-discord:before{content:\"\"}.fa-discourse:before{content:\"\"}.fa-divide:before{content:\"\"}.fa-dizzy:before{content:\"\"}.fa-dna:before{content:\"\"}.fa-dochub:before{content:\"\"}.fa-docker:before{content:\"\"}.fa-dog:before{content:\"\"}.fa-dollar-sign:before{content:\"\"}.fa-dolly:before{content:\"\"}.fa-dolly-flatbed:before{content:\"\"}.fa-donate:before{content:\"\"}.fa-door-closed:before{content:\"\"}.fa-door-open:before{content:\"\"}.fa-dot-circle:before{content:\"\"}.fa-dove:before{content:\"\"}.fa-download:before{content:\"\"}.fa-draft2digital:before{content:\"\"}.fa-drafting-compass:before{content:\"\"}.fa-dragon:before{content:\"\"}.fa-draw-polygon:before{content:\"\"}.fa-dribbble:before{content:\"\"}.fa-dribbble-square:before{content:\"\"}.fa-dropbox:before{content:\"\"}.fa-drum:before{content:\"\"}.fa-drum-steelpan:before{content:\"\"}.fa-drumstick-bite:before{content:\"\"}.fa-drupal:before{content:\"\"}.fa-dumbbell:before{content:\"\"}.fa-dungeon:before{content:\"\"}.fa-dyalog:before{content:\"\"}.fa-earlybirds:before{content:\"\"}.fa-ebay:before{content:\"\"}.fa-edge:before{content:\"\"}.fa-edit:before{content:\"\"}.fa-eject:before{content:\"\"}.fa-elementor:before{content:\"\"}.fa-ellipsis-h:before{content:\"\"}.fa-ellipsis-v:before{content:\"\"}.fa-ello:before{content:\"\"}.fa-ember:before{content:\"\"}.fa-empire:before{content:\"\"}.fa-envelope:before{content:\"\"}.fa-envelope-open:before{content:\"\"}.fa-envelope-open-text:before{content:\"\"}.fa-envelope-square:before{content:\"\"}.fa-envira:before{content:\"\"}.fa-equals:before{content:\"\"}.fa-eraser:before{content:\"\"}.fa-erlang:before{content:\"\"}.fa-ethereum:before{content:\"\"}.fa-etsy:before{content:\"\"}.fa-euro-sign:before{content:\"\"}.fa-exchange-alt:before{content:\"\"}.fa-exclamation:before{content:\"\"}.fa-exclamation-circle:before{content:\"\"}.fa-exclamation-triangle:before{content:\"\"}.fa-expand:before{content:\"\"}.fa-expand-arrows-alt:before{content:\"\"}.fa-expeditedssl:before{content:\"\"}.fa-external-link-alt:before{content:\"\"}.fa-external-link-square-alt:before{content:\"\"}.fa-eye:before{content:\"\"}.fa-eye-dropper:before{content:\"\"}.fa-eye-slash:before{content:\"\"}.fa-facebook:before{content:\"\"}.fa-facebook-f:before{content:\"\"}.fa-facebook-messenger:before{content:\"\"}.fa-facebook-square:before{content:\"\"}.fa-fantasy-flight-games:before{content:\"\"}.fa-fast-backward:before{content:\"\"}.fa-fast-forward:before{content:\"\"}.fa-fax:before{content:\"\"}.fa-feather:before{content:\"\"}.fa-feather-alt:before{content:\"\"}.fa-female:before{content:\"\"}.fa-fighter-jet:before{content:\"\"}.fa-file:before{content:\"\"}.fa-file-alt:before{content:\"\"}.fa-file-archive:before{content:\"\"}.fa-file-audio:before{content:\"\"}.fa-file-code:before{content:\"\"}.fa-file-contract:before{content:\"\"}.fa-file-csv:before{content:\"\"}.fa-file-download:before{content:\"\"}.fa-file-excel:before{content:\"\"}.fa-file-export:before{content:\"\"}.fa-file-image:before{content:\"\"}.fa-file-import:before{content:\"\"}.fa-file-invoice:before{content:\"\"}.fa-file-invoice-dollar:before{content:\"\"}.fa-file-medical:before{content:\"\"}.fa-file-medical-alt:before{content:\"\"}.fa-file-pdf:before{content:\"\"}.fa-file-powerpoint:before{content:\"\"}.fa-file-prescription:before{content:\"\"}.fa-file-signature:before{content:\"\"}.fa-file-upload:before{content:\"\"}.fa-file-video:before{content:\"\"}.fa-file-word:before{content:\"\"}.fa-fill:before{content:\"\"}.fa-fill-drip:before{content:\"\"}.fa-film:before{content:\"\"}.fa-filter:before{content:\"\"}.fa-fingerprint:before{content:\"\"}.fa-fire:before{content:\"\"}.fa-fire-extinguisher:before{content:\"\"}.fa-firefox:before{content:\"\"}.fa-first-aid:before{content:\"\"}.fa-first-order:before{content:\"\"}.fa-first-order-alt:before{content:\"\"}.fa-firstdraft:before{content:\"\"}.fa-fish:before{content:\"\"}.fa-fist-raised:before{content:\"\"}.fa-flag:before{content:\"\"}.fa-flag-checkered:before{content:\"\"}.fa-flag-usa:before{content:\"\"}.fa-flask:before{content:\"\"}.fa-flickr:before{content:\"\"}.fa-flipboard:before{content:\"\"}.fa-flushed:before{content:\"\"}.fa-fly:before{content:\"\"}.fa-folder:before{content:\"\"}.fa-folder-minus:before{content:\"\"}.fa-folder-open:before{content:\"\"}.fa-folder-plus:before{content:\"\"}.fa-font:before{content:\"\"}.fa-font-awesome:before{content:\"\"}.fa-font-awesome-alt:before{content:\"\"}.fa-font-awesome-flag:before{content:\"\"}.fa-font-awesome-logo-full:before{content:\"\"}.fa-fonticons:before{content:\"\"}.fa-fonticons-fi:before{content:\"\"}.fa-football-ball:before{content:\"\"}.fa-fort-awesome:before{content:\"\"}.fa-fort-awesome-alt:before{content:\"\"}.fa-forumbee:before{content:\"\"}.fa-forward:before{content:\"\"}.fa-foursquare:before{content:\"\"}.fa-free-code-camp:before{content:\"\"}.fa-freebsd:before{content:\"\"}.fa-frog:before{content:\"\"}.fa-frown:before{content:\"\"}.fa-frown-open:before{content:\"\"}.fa-fulcrum:before{content:\"\"}.fa-funnel-dollar:before{content:\"\"}.fa-futbol:before{content:\"\"}.fa-galactic-republic:before{content:\"\"}.fa-galactic-senate:before{content:\"\"}.fa-gamepad:before{content:\"\"}.fa-gas-pump:before{content:\"\"}.fa-gavel:before{content:\"\"}.fa-gem:before{content:\"\"}.fa-genderless:before{content:\"\"}.fa-get-pocket:before{content:\"\"}.fa-gg:before{content:\"\"}.fa-gg-circle:before{content:\"\"}.fa-ghost:before{content:\"\"}.fa-gift:before{content:\"\"}.fa-git:before{content:\"\"}.fa-git-square:before{content:\"\"}.fa-github:before{content:\"\"}.fa-github-alt:before{content:\"\"}.fa-github-square:before{content:\"\"}.fa-gitkraken:before{content:\"\"}.fa-gitlab:before{content:\"\"}.fa-gitter:before{content:\"\"}.fa-glass-martini:before{content:\"\"}.fa-glass-martini-alt:before{content:\"\"}.fa-glasses:before{content:\"\"}.fa-glide:before{content:\"\"}.fa-glide-g:before{content:\"\"}.fa-globe:before{content:\"\"}.fa-globe-africa:before{content:\"\"}.fa-globe-americas:before{content:\"\"}.fa-globe-asia:before{content:\"\"}.fa-gofore:before{content:\"\"}.fa-golf-ball:before{content:\"\"}.fa-goodreads:before{content:\"\"}.fa-goodreads-g:before{content:\"\"}.fa-google:before{content:\"\"}.fa-google-drive:before{content:\"\"}.fa-google-play:before{content:\"\"}.fa-google-plus:before{content:\"\"}.fa-google-plus-g:before{content:\"\"}.fa-google-plus-square:before{content:\"\"}.fa-google-wallet:before{content:\"\"}.fa-gopuram:before{content:\"\"}.fa-graduation-cap:before{content:\"\"}.fa-gratipay:before{content:\"\"}.fa-grav:before{content:\"\"}.fa-greater-than:before{content:\"\"}.fa-greater-than-equal:before{content:\"\"}.fa-grimace:before{content:\"\"}.fa-grin:before{content:\"\"}.fa-grin-alt:before{content:\"\"}.fa-grin-beam:before{content:\"\"}.fa-grin-beam-sweat:before{content:\"\"}.fa-grin-hearts:before{content:\"\"}.fa-grin-squint:before{content:\"\"}.fa-grin-squint-tears:before{content:\"\"}.fa-grin-stars:before{content:\"\"}.fa-grin-tears:before{content:\"\"}.fa-grin-tongue:before{content:\"\"}.fa-grin-tongue-squint:before{content:\"\"}.fa-grin-tongue-wink:before{content:\"\"}.fa-grin-wink:before{content:\"\"}.fa-grip-horizontal:before{content:\"\"}.fa-grip-vertical:before{content:\"\"}.fa-gripfire:before{content:\"\"}.fa-grunt:before{content:\"\"}.fa-gulp:before{content:\"\"}.fa-h-square:before{content:\"\"}.fa-hacker-news:before{content:\"\"}.fa-hacker-news-square:before{content:\"\"}.fa-hackerrank:before{content:\"\"}.fa-hammer:before{content:\"\"}.fa-hamsa:before{content:\"\"}.fa-hand-holding:before{content:\"\"}.fa-hand-holding-heart:before{content:\"\"}.fa-hand-holding-usd:before{content:\"\"}.fa-hand-lizard:before{content:\"\"}.fa-hand-paper:before{content:\"\"}.fa-hand-peace:before{content:\"\"}.fa-hand-point-down:before{content:\"\"}.fa-hand-point-left:before{content:\"\"}.fa-hand-point-right:before{content:\"\"}.fa-hand-point-up:before{content:\"\"}.fa-hand-pointer:before{content:\"\"}.fa-hand-rock:before{content:\"\"}.fa-hand-scissors:before{content:\"\"}.fa-hand-spock:before{content:\"\"}.fa-hands:before{content:\"\"}.fa-hands-helping:before{content:\"\"}.fa-handshake:before{content:\"\"}.fa-hanukiah:before{content:\"\"}.fa-hashtag:before{content:\"\"}.fa-hat-wizard:before{content:\"\"}.fa-haykal:before{content:\"\"}.fa-hdd:before{content:\"\"}.fa-heading:before{content:\"\"}.fa-headphones:before{content:\"\"}.fa-headphones-alt:before{content:\"\"}.fa-headset:before{content:\"\"}.fa-heart:before{content:\"\"}.fa-heartbeat:before{content:\"\"}.fa-helicopter:before{content:\"\"}.fa-highlighter:before{content:\"\"}.fa-hiking:before{content:\"\"}.fa-hippo:before{content:\"\"}.fa-hips:before{content:\"\"}.fa-hire-a-helper:before{content:\"\"}.fa-history:before{content:\"\"}.fa-hockey-puck:before{content:\"\"}.fa-home:before{content:\"\"}.fa-hooli:before{content:\"\"}.fa-hornbill:before{content:\"\"}.fa-horse:before{content:\"\"}.fa-hospital:before{content:\"\"}.fa-hospital-alt:before{content:\"\"}.fa-hospital-symbol:before{content:\"\"}.fa-hot-tub:before{content:\"\"}.fa-hotel:before{content:\"\"}.fa-hotjar:before{content:\"\"}.fa-hourglass:before{content:\"\"}.fa-hourglass-end:before{content:\"\"}.fa-hourglass-half:before{content:\"\"}.fa-hourglass-start:before{content:\"\"}.fa-house-damage:before{content:\"\"}.fa-houzz:before{content:\"\"}.fa-hryvnia:before{content:\"\"}.fa-html5:before{content:\"\"}.fa-hubspot:before{content:\"\"}.fa-i-cursor:before{content:\"\"}.fa-id-badge:before{content:\"\"}.fa-id-card:before{content:\"\"}.fa-id-card-alt:before{content:\"\"}.fa-image:before{content:\"\"}.fa-images:before{content:\"\"}.fa-imdb:before{content:\"\"}.fa-inbox:before{content:\"\"}.fa-indent:before{content:\"\"}.fa-industry:before{content:\"\"}.fa-infinity:before{content:\"\"}.fa-info:before{content:\"\"}.fa-info-circle:before{content:\"\"}.fa-instagram:before{content:\"\"}.fa-internet-explorer:before{content:\"\"}.fa-ioxhost:before{content:\"\"}.fa-italic:before{content:\"\"}.fa-itunes:before{content:\"\"}.fa-itunes-note:before{content:\"\"}.fa-java:before{content:\"\"}.fa-jedi:before{content:\"\"}.fa-jedi-order:before{content:\"\"}.fa-jenkins:before{content:\"\"}.fa-joget:before{content:\"\"}.fa-joint:before{content:\"\"}.fa-joomla:before{content:\"\"}.fa-journal-whills:before{content:\"\"}.fa-js:before{content:\"\"}.fa-js-square:before{content:\"\"}.fa-jsfiddle:before{content:\"\"}.fa-kaaba:before{content:\"\"}.fa-kaggle:before{content:\"\"}.fa-key:before{content:\"\"}.fa-keybase:before{content:\"\"}.fa-keyboard:before{content:\"\"}.fa-keycdn:before{content:\"\"}.fa-khanda:before{content:\"\"}.fa-kickstarter:before{content:\"\"}.fa-kickstarter-k:before{content:\"\"}.fa-kiss:before{content:\"\"}.fa-kiss-beam:before{content:\"\"}.fa-kiss-wink-heart:before{content:\"\"}.fa-kiwi-bird:before{content:\"\"}.fa-korvue:before{content:\"\"}.fa-landmark:before{content:\"\"}.fa-language:before{content:\"\"}.fa-laptop:before{content:\"\"}.fa-laptop-code:before{content:\"\"}.fa-laravel:before{content:\"\"}.fa-lastfm:before{content:\"\"}.fa-lastfm-square:before{content:\"\"}.fa-laugh:before{content:\"\"}.fa-laugh-beam:before{content:\"\"}.fa-laugh-squint:before{content:\"\"}.fa-laugh-wink:before{content:\"\"}.fa-layer-group:before{content:\"\"}.fa-leaf:before{content:\"\"}.fa-leanpub:before{content:\"\"}.fa-lemon:before{content:\"\"}.fa-less:before{content:\"\"}.fa-less-than:before{content:\"\"}.fa-less-than-equal:before{content:\"\"}.fa-level-down-alt:before{content:\"\"}.fa-level-up-alt:before{content:\"\"}.fa-life-ring:before{content:\"\"}.fa-lightbulb:before{content:\"\"}.fa-line:before{content:\"\"}.fa-link:before{content:\"\"}.fa-linkedin:before{content:\"\"}.fa-linkedin-in:before{content:\"\"}.fa-linode:before{content:\"\"}.fa-linux:before{content:\"\"}.fa-lira-sign:before{content:\"\"}.fa-list:before{content:\"\"}.fa-list-alt:before{content:\"\"}.fa-list-ol:before{content:\"\"}.fa-list-ul:before{content:\"\"}.fa-location-arrow:before{content:\"\"}.fa-lock:before{content:\"\"}.fa-lock-open:before{content:\"\"}.fa-long-arrow-alt-down:before{content:\"\"}.fa-long-arrow-alt-left:before{content:\"\"}.fa-long-arrow-alt-right:before{content:\"\"}.fa-long-arrow-alt-up:before{content:\"\"}.fa-low-vision:before{content:\"\"}.fa-luggage-cart:before{content:\"\"}.fa-lyft:before{content:\"\"}.fa-magento:before{content:\"\"}.fa-magic:before{content:\"\"}.fa-magnet:before{content:\"\"}.fa-mail-bulk:before{content:\"\"}.fa-mailchimp:before{content:\"\"}.fa-male:before{content:\"\"}.fa-mandalorian:before{content:\"\"}.fa-map:before{content:\"\"}.fa-map-marked:before{content:\"\"}.fa-map-marked-alt:before{content:\"\"}.fa-map-marker:before{content:\"\"}.fa-map-marker-alt:before{content:\"\"}.fa-map-pin:before{content:\"\"}.fa-map-signs:before{content:\"\"}.fa-markdown:before{content:\"\"}.fa-marker:before{content:\"\"}.fa-mars:before{content:\"\"}.fa-mars-double:before{content:\"\"}.fa-mars-stroke:before{content:\"\"}.fa-mars-stroke-h:before{content:\"\"}.fa-mars-stroke-v:before{content:\"\"}.fa-mask:before{content:\"\"}.fa-mastodon:before{content:\"\"}.fa-maxcdn:before{content:\"\"}.fa-medal:before{content:\"\"}.fa-medapps:before{content:\"\"}.fa-medium:before{content:\"\"}.fa-medium-m:before{content:\"\"}.fa-medkit:before{content:\"\"}.fa-medrt:before{content:\"\"}.fa-meetup:before{content:\"\"}.fa-megaport:before{content:\"\"}.fa-meh:before{content:\"\"}.fa-meh-blank:before{content:\"\"}.fa-meh-rolling-eyes:before{content:\"\"}.fa-memory:before{content:\"\"}.fa-menorah:before{content:\"\"}.fa-mercury:before{content:\"\"}.fa-meteor:before{content:\"\"}.fa-microchip:before{content:\"\"}.fa-microphone:before{content:\"\"}.fa-microphone-alt:before{content:\"\"}.fa-microphone-alt-slash:before{content:\"\"}.fa-microphone-slash:before{content:\"\"}.fa-microscope:before{content:\"\"}.fa-microsoft:before{content:\"\"}.fa-minus:before{content:\"\"}.fa-minus-circle:before{content:\"\"}.fa-minus-square:before{content:\"\"}.fa-mix:before{content:\"\"}.fa-mixcloud:before{content:\"\"}.fa-mizuni:before{content:\"\"}.fa-mobile:before{content:\"\"}.fa-mobile-alt:before{content:\"\"}.fa-modx:before{content:\"\"}.fa-monero:before{content:\"\"}.fa-money-bill:before{content:\"\"}.fa-money-bill-alt:before{content:\"\"}.fa-money-bill-wave:before{content:\"\"}.fa-money-bill-wave-alt:before{content:\"\"}.fa-money-check:before{content:\"\"}.fa-money-check-alt:before{content:\"\"}.fa-monument:before{content:\"\"}.fa-moon:before{content:\"\"}.fa-mortar-pestle:before{content:\"\"}.fa-mosque:before{content:\"\"}.fa-motorcycle:before{content:\"\"}.fa-mountain:before{content:\"\"}.fa-mouse-pointer:before{content:\"\"}.fa-music:before{content:\"\"}.fa-napster:before{content:\"\"}.fa-neos:before{content:\"\"}.fa-network-wired:before{content:\"\"}.fa-neuter:before{content:\"\"}.fa-newspaper:before{content:\"\"}.fa-nimblr:before{content:\"\"}.fa-nintendo-switch:before{content:\"\"}.fa-node:before{content:\"\"}.fa-node-js:before{content:\"\"}.fa-not-equal:before{content:\"\"}.fa-notes-medical:before{content:\"\"}.fa-npm:before{content:\"\"}.fa-ns8:before{content:\"\"}.fa-nutritionix:before{content:\"\"}.fa-object-group:before{content:\"\"}.fa-object-ungroup:before{content:\"\"}.fa-odnoklassniki:before{content:\"\"}.fa-odnoklassniki-square:before{content:\"\"}.fa-oil-can:before{content:\"\"}.fa-old-republic:before{content:\"\"}.fa-om:before{content:\"\"}.fa-opencart:before{content:\"\"}.fa-openid:before{content:\"\"}.fa-opera:before{content:\"\"}.fa-optin-monster:before{content:\"\"}.fa-osi:before{content:\"\"}.fa-otter:before{content:\"\"}.fa-outdent:before{content:\"\"}.fa-page4:before{content:\"\"}.fa-pagelines:before{content:\"\"}.fa-paint-brush:before{content:\"\"}.fa-paint-roller:before{content:\"\"}.fa-palette:before{content:\"\"}.fa-palfed:before{content:\"\"}.fa-pallet:before{content:\"\"}.fa-paper-plane:before{content:\"\"}.fa-paperclip:before{content:\"\"}.fa-parachute-box:before{content:\"\"}.fa-paragraph:before{content:\"\"}.fa-parking:before{content:\"\"}.fa-passport:before{content:\"\"}.fa-pastafarianism:before{content:\"\"}.fa-paste:before{content:\"\"}.fa-patreon:before{content:\"\"}.fa-pause:before{content:\"\"}.fa-pause-circle:before{content:\"\"}.fa-paw:before{content:\"\"}.fa-paypal:before{content:\"\"}.fa-peace:before{content:\"\"}.fa-pen:before{content:\"\"}.fa-pen-alt:before{content:\"\"}.fa-pen-fancy:before{content:\"\"}.fa-pen-nib:before{content:\"\"}.fa-pen-square:before{content:\"\"}.fa-pencil-alt:before{content:\"\"}.fa-pencil-ruler:before{content:\"\"}.fa-penny-arcade:before{content:\"\"}.fa-people-carry:before{content:\"\"}.fa-percent:before{content:\"\"}.fa-percentage:before{content:\"\"}.fa-periscope:before{content:\"\"}.fa-person-booth:before{content:\"\"}.fa-phabricator:before{content:\"\"}.fa-phoenix-framework:before{content:\"\"}.fa-phoenix-squadron:before{content:\"\"}.fa-phone:before{content:\"\"}.fa-phone-slash:before{content:\"\"}.fa-phone-square:before{content:\"\"}.fa-phone-volume:before{content:\"\"}.fa-php:before{content:\"\"}.fa-pied-piper:before{content:\"\"}.fa-pied-piper-alt:before{content:\"\"}.fa-pied-piper-hat:before{content:\"\"}.fa-pied-piper-pp:before{content:\"\"}.fa-piggy-bank:before{content:\"\"}.fa-pills:before{content:\"\"}.fa-pinterest:before{content:\"\"}.fa-pinterest-p:before{content:\"\"}.fa-pinterest-square:before{content:\"\"}.fa-place-of-worship:before{content:\"\"}.fa-plane:before{content:\"\"}.fa-plane-arrival:before{content:\"\"}.fa-plane-departure:before{content:\"\"}.fa-play:before{content:\"\"}.fa-play-circle:before{content:\"\"}.fa-playstation:before{content:\"\"}.fa-plug:before{content:\"\"}.fa-plus:before{content:\"\"}.fa-plus-circle:before{content:\"\"}.fa-plus-square:before{content:\"\"}.fa-podcast:before{content:\"\"}.fa-poll:before{content:\"\"}.fa-poll-h:before{content:\"\"}.fa-poo:before{content:\"\"}.fa-poo-storm:before{content:\"\"}.fa-poop:before{content:\"\"}.fa-portrait:before{content:\"\"}.fa-pound-sign:before{content:\"\"}.fa-power-off:before{content:\"\"}.fa-pray:before{content:\"\"}.fa-praying-hands:before{content:\"\"}.fa-prescription:before{content:\"\"}.fa-prescription-bottle:before{content:\"\"}.fa-prescription-bottle-alt:before{content:\"\"}.fa-print:before{content:\"\"}.fa-procedures:before{content:\"\"}.fa-product-hunt:before{content:\"\"}.fa-project-diagram:before{content:\"\"}.fa-pushed:before{content:\"\"}.fa-puzzle-piece:before{content:\"\"}.fa-python:before{content:\"\"}.fa-qq:before{content:\"\"}.fa-qrcode:before{content:\"\"}.fa-question:before{content:\"\"}.fa-question-circle:before{content:\"\"}.fa-quidditch:before{content:\"\"}.fa-quinscape:before{content:\"\"}.fa-quora:before{content:\"\"}.fa-quote-left:before{content:\"\"}.fa-quote-right:before{content:\"\"}.fa-quran:before{content:\"\"}.fa-r-project:before{content:\"\"}.fa-rainbow:before{content:\"\"}.fa-random:before{content:\"\"}.fa-ravelry:before{content:\"\"}.fa-react:before{content:\"\"}.fa-reacteurope:before{content:\"\"}.fa-readme:before{content:\"\"}.fa-rebel:before{content:\"\"}.fa-receipt:before{content:\"\"}.fa-recycle:before{content:\"\"}.fa-red-river:before{content:\"\"}.fa-reddit:before{content:\"\"}.fa-reddit-alien:before{content:\"\"}.fa-reddit-square:before{content:\"\"}.fa-redo:before{content:\"\"}.fa-redo-alt:before{content:\"\"}.fa-registered:before{content:\"\"}.fa-renren:before{content:\"\"}.fa-reply:before{content:\"\"}.fa-reply-all:before{content:\"\"}.fa-replyd:before{content:\"\"}.fa-republican:before{content:\"\"}.fa-researchgate:before{content:\"\"}.fa-resolving:before{content:\"\"}.fa-retweet:before{content:\"\"}.fa-rev:before{content:\"\"}.fa-ribbon:before{content:\"\"}.fa-ring:before{content:\"\"}.fa-road:before{content:\"\"}.fa-robot:before{content:\"\"}.fa-rocket:before{content:\"\"}.fa-rocketchat:before{content:\"\"}.fa-rockrms:before{content:\"\"}.fa-route:before{content:\"\"}.fa-rss:before{content:\"\"}.fa-rss-square:before{content:\"\"}.fa-ruble-sign:before{content:\"\"}.fa-ruler:before{content:\"\"}.fa-ruler-combined:before{content:\"\"}.fa-ruler-horizontal:before{content:\"\"}.fa-ruler-vertical:before{content:\"\"}.fa-running:before{content:\"\"}.fa-rupee-sign:before{content:\"\"}.fa-sad-cry:before{content:\"\"}.fa-sad-tear:before{content:\"\"}.fa-safari:before{content:\"\"}.fa-sass:before{content:\"\"}.fa-save:before{content:\"\"}.fa-schlix:before{content:\"\"}.fa-school:before{content:\"\"}.fa-screwdriver:before{content:\"\"}.fa-scribd:before{content:\"\"}.fa-scroll:before{content:\"\"}.fa-search:before{content:\"\"}.fa-search-dollar:before{content:\"\"}.fa-search-location:before{content:\"\"}.fa-search-minus:before{content:\"\"}.fa-search-plus:before{content:\"\"}.fa-searchengin:before{content:\"\"}.fa-seedling:before{content:\"\"}.fa-sellcast:before{content:\"\"}.fa-sellsy:before{content:\"\"}.fa-server:before{content:\"\"}.fa-servicestack:before{content:\"\"}.fa-shapes:before{content:\"\"}.fa-share:before{content:\"\"}.fa-share-alt:before{content:\"\"}.fa-share-alt-square:before{content:\"\"}.fa-share-square:before{content:\"\"}.fa-shekel-sign:before{content:\"\"}.fa-shield-alt:before{content:\"\"}.fa-ship:before{content:\"\"}.fa-shipping-fast:before{content:\"\"}.fa-shirtsinbulk:before{content:\"\"}.fa-shoe-prints:before{content:\"\"}.fa-shopping-bag:before{content:\"\"}.fa-shopping-basket:before{content:\"\"}.fa-shopping-cart:before{content:\"\"}.fa-shopware:before{content:\"\"}.fa-shower:before{content:\"\"}.fa-shuttle-van:before{content:\"\"}.fa-sign:before{content:\"\"}.fa-sign-in-alt:before{content:\"\"}.fa-sign-language:before{content:\"\"}.fa-sign-out-alt:before{content:\"\"}.fa-signal:before{content:\"\"}.fa-signature:before{content:\"\"}.fa-simplybuilt:before{content:\"\"}.fa-sistrix:before{content:\"\"}.fa-sitemap:before{content:\"\"}.fa-sith:before{content:\"\"}.fa-skull:before{content:\"\"}.fa-skull-crossbones:before{content:\"\"}.fa-skyatlas:before{content:\"\"}.fa-skype:before{content:\"\"}.fa-slack:before{content:\"\"}.fa-slack-hash:before{content:\"\"}.fa-slash:before{content:\"\"}.fa-sliders-h:before{content:\"\"}.fa-slideshare:before{content:\"\"}.fa-smile:before{content:\"\"}.fa-smile-beam:before{content:\"\"}.fa-smile-wink:before{content:\"\"}.fa-smog:before{content:\"\"}.fa-smoking:before{content:\"\"}.fa-smoking-ban:before{content:\"\"}.fa-snapchat:before{content:\"\"}.fa-snapchat-ghost:before{content:\"\"}.fa-snapchat-square:before{content:\"\"}.fa-snowflake:before{content:\"\"}.fa-socks:before{content:\"\"}.fa-solar-panel:before{content:\"\"}.fa-sort:before{content:\"\"}.fa-sort-alpha-down:before{content:\"\"}.fa-sort-alpha-up:before{content:\"\"}.fa-sort-amount-down:before{content:\"\"}.fa-sort-amount-up:before{content:\"\"}.fa-sort-down:before{content:\"\"}.fa-sort-numeric-down:before{content:\"\"}.fa-sort-numeric-up:before{content:\"\"}.fa-sort-up:before{content:\"\"}.fa-soundcloud:before{content:\"\"}.fa-spa:before{content:\"\"}.fa-space-shuttle:before{content:\"\"}.fa-speakap:before{content:\"\"}.fa-spider:before{content:\"\"}.fa-spinner:before{content:\"\"}.fa-splotch:before{content:\"\"}.fa-spotify:before{content:\"\"}.fa-spray-can:before{content:\"\"}.fa-square:before{content:\"\"}.fa-square-full:before{content:\"\"}.fa-square-root-alt:before{content:\"\"}.fa-squarespace:before{content:\"\"}.fa-stack-exchange:before{content:\"\"}.fa-stack-overflow:before{content:\"\"}.fa-stamp:before{content:\"\"}.fa-star:before{content:\"\"}.fa-star-and-crescent:before{content:\"\"}.fa-star-half:before{content:\"\"}.fa-star-half-alt:before{content:\"\"}.fa-star-of-david:before{content:\"\"}.fa-star-of-life:before{content:\"\"}.fa-staylinked:before{content:\"\"}.fa-steam:before{content:\"\"}.fa-steam-square:before{content:\"\"}.fa-steam-symbol:before{content:\"\"}.fa-step-backward:before{content:\"\"}.fa-step-forward:before{content:\"\"}.fa-stethoscope:before{content:\"\"}.fa-sticker-mule:before{content:\"\"}.fa-sticky-note:before{content:\"\"}.fa-stop:before{content:\"\"}.fa-stop-circle:before{content:\"\"}.fa-stopwatch:before{content:\"\"}.fa-store:before{content:\"\"}.fa-store-alt:before{content:\"\"}.fa-strava:before{content:\"\"}.fa-stream:before{content:\"\"}.fa-street-view:before{content:\"\"}.fa-strikethrough:before{content:\"\"}.fa-stripe:before{content:\"\"}.fa-stripe-s:before{content:\"\"}.fa-stroopwafel:before{content:\"\"}.fa-studiovinari:before{content:\"\"}.fa-stumbleupon:before{content:\"\"}.fa-stumbleupon-circle:before{content:\"\"}.fa-subscript:before{content:\"\"}.fa-subway:before{content:\"\"}.fa-suitcase:before{content:\"\"}.fa-suitcase-rolling:before{content:\"\"}.fa-sun:before{content:\"\"}.fa-superpowers:before{content:\"\"}.fa-superscript:before{content:\"\"}.fa-supple:before{content:\"\"}.fa-surprise:before{content:\"\"}.fa-swatchbook:before{content:\"\"}.fa-swimmer:before{content:\"\"}.fa-swimming-pool:before{content:\"\"}.fa-synagogue:before{content:\"\"}.fa-sync:before{content:\"\"}.fa-sync-alt:before{content:\"\"}.fa-syringe:before{content:\"\"}.fa-table:before{content:\"\"}.fa-table-tennis:before{content:\"\"}.fa-tablet:before{content:\"\"}.fa-tablet-alt:before{content:\"\"}.fa-tablets:before{content:\"\"}.fa-tachometer-alt:before{content:\"\"}.fa-tag:before{content:\"\"}.fa-tags:before{content:\"\"}.fa-tape:before{content:\"\"}.fa-tasks:before{content:\"\"}.fa-taxi:before{content:\"\"}.fa-teamspeak:before{content:\"\"}.fa-teeth:before{content:\"\"}.fa-teeth-open:before{content:\"\"}.fa-telegram:before{content:\"\"}.fa-telegram-plane:before{content:\"\"}.fa-temperature-high:before{content:\"\"}.fa-temperature-low:before{content:\"\"}.fa-tencent-weibo:before{content:\"\"}.fa-terminal:before{content:\"\"}.fa-text-height:before{content:\"\"}.fa-text-width:before{content:\"\"}.fa-th:before{content:\"\"}.fa-th-large:before{content:\"\"}.fa-th-list:before{content:\"\"}.fa-the-red-yeti:before{content:\"\"}.fa-theater-masks:before{content:\"\"}.fa-themeco:before{content:\"\"}.fa-themeisle:before{content:\"\"}.fa-thermometer:before{content:\"\"}.fa-thermometer-empty:before{content:\"\"}.fa-thermometer-full:before{content:\"\"}.fa-thermometer-half:before{content:\"\"}.fa-thermometer-quarter:before{content:\"\"}.fa-thermometer-three-quarters:before{content:\"\"}.fa-think-peaks:before{content:\"\"}.fa-thumbs-down:before{content:\"\"}.fa-thumbs-up:before{content:\"\"}.fa-thumbtack:before{content:\"\"}.fa-ticket-alt:before{content:\"\"}.fa-times:before{content:\"\"}.fa-times-circle:before{content:\"\"}.fa-tint:before{content:\"\"}.fa-tint-slash:before{content:\"\"}.fa-tired:before{content:\"\"}.fa-toggle-off:before{content:\"\"}.fa-toggle-on:before{content:\"\"}.fa-toilet-paper:before{content:\"\"}.fa-toolbox:before{content:\"\"}.fa-tooth:before{content:\"\"}.fa-torah:before{content:\"\"}.fa-torii-gate:before{content:\"\"}.fa-tractor:before{content:\"\"}.fa-trade-federation:before{content:\"\"}.fa-trademark:before{content:\"\"}.fa-traffic-light:before{content:\"\"}.fa-train:before{content:\"\"}.fa-transgender:before{content:\"\"}.fa-transgender-alt:before{content:\"\"}.fa-trash:before{content:\"\"}.fa-trash-alt:before{content:\"\"}.fa-tree:before{content:\"\"}.fa-trello:before{content:\"\"}.fa-tripadvisor:before{content:\"\"}.fa-trophy:before{content:\"\"}.fa-truck:before{content:\"\"}.fa-truck-loading:before{content:\"\"}.fa-truck-monster:before{content:\"\"}.fa-truck-moving:before{content:\"\"}.fa-truck-pickup:before{content:\"\"}.fa-tshirt:before{content:\"\"}.fa-tty:before{content:\"\"}.fa-tumblr:before{content:\"\"}.fa-tumblr-square:before{content:\"\"}.fa-tv:before{content:\"\"}.fa-twitch:before{content:\"\"}.fa-twitter:before{content:\"\"}.fa-twitter-square:before{content:\"\"}.fa-typo3:before{content:\"\"}.fa-uber:before{content:\"\"}.fa-uikit:before{content:\"\"}.fa-umbrella:before{content:\"\"}.fa-umbrella-beach:before{content:\"\"}.fa-underline:before{content:\"\"}.fa-undo:before{content:\"\"}.fa-undo-alt:before{content:\"\"}.fa-uniregistry:before{content:\"\"}.fa-universal-access:before{content:\"\"}.fa-university:before{content:\"\"}.fa-unlink:before{content:\"\"}.fa-unlock:before{content:\"\"}.fa-unlock-alt:before{content:\"\"}.fa-untappd:before{content:\"\"}.fa-upload:before{content:\"\"}.fa-usb:before{content:\"\"}.fa-user:before{content:\"\"}.fa-user-alt:before{content:\"\"}.fa-user-alt-slash:before{content:\"\"}.fa-user-astronaut:before{content:\"\"}.fa-user-check:before{content:\"\"}.fa-user-circle:before{content:\"\"}.fa-user-clock:before{content:\"\"}.fa-user-cog:before{content:\"\"}.fa-user-edit:before{content:\"\"}.fa-user-friends:before{content:\"\"}.fa-user-graduate:before{content:\"\"}.fa-user-injured:before{content:\"\"}.fa-user-lock:before{content:\"\"}.fa-user-md:before{content:\"\"}.fa-user-minus:before{content:\"\"}.fa-user-ninja:before{content:\"\"}.fa-user-plus:before{content:\"\"}.fa-user-secret:before{content:\"\"}.fa-user-shield:before{content:\"\"}.fa-user-slash:before{content:\"\"}.fa-user-tag:before{content:\"\"}.fa-user-tie:before{content:\"\"}.fa-user-times:before{content:\"\"}.fa-users:before{content:\"\"}.fa-users-cog:before{content:\"\"}.fa-ussunnah:before{content:\"\"}.fa-utensil-spoon:before{content:\"\"}.fa-utensils:before{content:\"\"}.fa-vaadin:before{content:\"\"}.fa-vector-square:before{content:\"\"}.fa-venus:before{content:\"\"}.fa-venus-double:before{content:\"\"}.fa-venus-mars:before{content:\"\"}.fa-viacoin:before{content:\"\"}.fa-viadeo:before{content:\"\"}.fa-viadeo-square:before{content:\"\"}.fa-vial:before{content:\"\"}.fa-vials:before{content:\"\"}.fa-viber:before{content:\"\"}.fa-video:before{content:\"\"}.fa-video-slash:before{content:\"\"}.fa-vihara:before{content:\"\"}.fa-vimeo:before{content:\"\"}.fa-vimeo-square:before{content:\"\"}.fa-vimeo-v:before{content:\"\"}.fa-vine:before{content:\"\"}.fa-vk:before{content:\"\"}.fa-vnv:before{content:\"\"}.fa-volleyball-ball:before{content:\"\"}.fa-volume-down:before{content:\"\"}.fa-volume-mute:before{content:\"\"}.fa-volume-off:before{content:\"\"}.fa-volume-up:before{content:\"\"}.fa-vote-yea:before{content:\"\"}.fa-vr-cardboard:before{content:\"\"}.fa-vuejs:before{content:\"\"}.fa-walking:before{content:\"\"}.fa-wallet:before{content:\"\"}.fa-warehouse:before{content:\"\"}.fa-water:before{content:\"\"}.fa-weebly:before{content:\"\"}.fa-weibo:before{content:\"\"}.fa-weight:before{content:\"\"}.fa-weight-hanging:before{content:\"\"}.fa-weixin:before{content:\"\"}.fa-whatsapp:before{content:\"\"}.fa-whatsapp-square:before{content:\"\"}.fa-wheelchair:before{content:\"\"}.fa-whmcs:before{content:\"\"}.fa-wifi:before{content:\"\"}.fa-wikipedia-w:before{content:\"\"}.fa-wind:before{content:\"\"}.fa-window-close:before{content:\"\"}.fa-window-maximize:before{content:\"\"}.fa-window-minimize:before{content:\"\"}.fa-window-restore:before{content:\"\"}.fa-windows:before{content:\"\"}.fa-wine-bottle:before{content:\"\"}.fa-wine-glass:before{content:\"\"}.fa-wine-glass-alt:before{content:\"\"}.fa-wix:before{content:\"\"}.fa-wizards-of-the-coast:before{content:\"\"}.fa-wolf-pack-battalion:before{content:\"\"}.fa-won-sign:before{content:\"\"}.fa-wordpress:before{content:\"\"}.fa-wordpress-simple:before{content:\"\"}.fa-wpbeginner:before{content:\"\"}.fa-wpexplorer:before{content:\"\"}.fa-wpforms:before{content:\"\"}.fa-wpressr:before{content:\"\"}.fa-wrench:before{content:\"\"}.fa-x-ray:before{content:\"\"}.fa-xbox:before{content:\"\"}.fa-xing:before{content:\"\"}.fa-xing-square:before{content:\"\"}.fa-y-combinator:before{content:\"\"}.fa-yahoo:before{content:\"\"}.fa-yandex:before{content:\"\"}.fa-yandex-international:before{content:\"\"}.fa-yelp:before{content:\"\"}.fa-yen-sign:before{content:\"\"}.fa-yin-yang:before{content:\"\"}.fa-yoast:before{content:\"\"}.fa-youtube:before{content:\"\"}.fa-youtube-square:before{content:\"\"}.fa-zhihu:before{content:\"\"}.sr-only{border:0;clip:rect(0, 0, 0, 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.sr-only-focusable:active,.sr-only-focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}@font-face{font-family:\"Font Awesome 5 Brands\";font-style:normal;font-weight:normal;src:url(\"../fonts/fa-brands-400.eot\");src:url(\"../fonts/fa-brands-400.eot?#iefix\") format(\"embedded-opentype\"),url(\"../fonts/fa-brands-400.woff2\") format(\"woff2\"),url(\"../fonts/fa-brands-400.woff\") format(\"woff\"),url(\"../fonts/fa-brands-400.ttf\") format(\"truetype\"),url(\"../fonts/fa-brands-400.svg#fontawesome\") format(\"svg\")}.fab{font-family:\"Font Awesome 5 Brands\"}@font-face{font-family:\"Font Awesome 5 Free\";font-style:normal;font-weight:400;src:url(\"../fonts/fa-regular-400.eot\");src:url(\"../fonts/fa-regular-400.eot?#iefix\") format(\"embedded-opentype\"),url(\"../fonts/fa-regular-400.woff2\") format(\"woff2\"),url(\"../fonts/fa-regular-400.woff\") format(\"woff\"),url(\"../fonts/fa-regular-400.ttf\") format(\"truetype\"),url(\"../fonts/fa-regular-400.svg#fontawesome\") format(\"svg\")}.far{font-family:\"Font Awesome 5 Free\";font-weight:400}@font-face{font-family:\"Font Awesome 5 Free\";font-style:normal;font-weight:900;src:url(\"../fonts/fa-solid-900.eot\");src:url(\"../fonts/fa-solid-900.eot?#iefix\") format(\"embedded-opentype\"),url(\"../fonts/fa-solid-900.woff2\") format(\"woff2\"),url(\"../fonts/fa-solid-900.woff\") format(\"woff\"),url(\"../fonts/fa-solid-900.ttf\") format(\"truetype\"),url(\"../fonts/fa-solid-900.svg#fontawesome\") format(\"svg\")}.fa,.fas{font-family:\"Font Awesome 5 Free\";font-weight:900}.tykon:before{font-family:\"tykon\" !important;font-style:normal !important;font-weight:normal !important;font-variant:normal !important;text-transform:none !important;speak:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.tykon-arrowdown:before{content:\"a\"}.tykon-arrowleft:before{content:\"b\"}.tykon-arrowright:before{content:\"c\"}.tykon-arrowup:before{content:\"d\"}.tykon-doublearrowdown:before{content:\"e\"}.tykon-filter:before{content:\"f\"}.tykon-graph1:before{content:\"g\"}.tykon-graph2:before{content:\"h\"}.tykon-label:before{content:\"i\"}.tykon-reload:before{content:\"j\"}.tykon-select:before{content:\"k\"}.tykon-target:before{content:\"l\"}.tykon-undo:before{content:\"m\"}.tykon-deployment:before{content:\"n\"}.tykon-team:before{content:\"o\"}.tykon-overview:before{content:\"p\"}.tykon-loadout:before{content:\"q\"}.tykon-entitlement:before{content:\"r\"}.tykon-users:before{content:\"s\"}.tykon-doublearrowdown:before{content:\"e\"}.tykon-arrowsort:before{content:\"W\"}.tykon-check:before{content:\"V\"}.tykon-copy:before{content:\"C\"}.tykon-delete:before{content:\"U\"}.tykon-download:before{content:\"L\"}.tykon-draft:before{content:\"D\"}.tykon-edit:before{content:\"E\"}.tykon-filter:before{content:\"f\"}.tykon-graphq2:before{content:\"h\"}.tykon-help:before{content:\"?\"}.tykon-label:before{content:\"i\"}.tykon-link:before{content:\"R\"}.tykon-lock1:before{content:\"Y\"}.tykon-lock2:before{content:\"Z\"}.tykon-notifications:before{content:\"N\"}.tykon-plus:before{content:\"+\"}.tykon-profile:before{content:\"P\"}.tykon-reload:before{content:\"j\"}.tykon-search:before{content:\"O\"}.tykon-select:before{content:\"k\"}.tykon-settings:before{content:\"S\"}.tykon-target:before{content:\"l\"}.tykon-undo:before{content:\"m\"}.tykon-warning:before{content:\"!\"}.tykon-x:before{content:\"X\"}.tykon-waiting:before{content:\"T\"}.tykon-fullscreen:before{content:\"\"}.tykon-fullscreen-exit:before{content:\"\"}.tykon-time:before{content:\"t\"}h1,h2,h3,h4,h5,h6{margin-bottom:15px;font-family:\"smoolthan_medium\";font-weight:500;color:#36364c}label{display:inline-block;max-width:100%;margin-bottom:5px;color:#36364c}h1{font-size:25px;line-height:30px}h2{font-size:20px;line-height:24px}h3{font-size:17px;line-height:23px}h4{font-size:16px;line-height:22px}h5{font-size:14px;line-height:19px}h6{font-size:12px;line-height:16px}p,label{font-size:14px;line-height:19px;font-family:\"OpenSans-regular\"}strong{font-family:\"OpenSans-Bold\"}a:not(.tyk-button){cursor:pointer;color:#505071;font-family:\"OpenSans-regular\"}a:not(.tyk-button).link--bold{font-family:\"OpenSans-Bold\"}a:not(.tyk-button)+a{margin-left:5px}a:not(.tyk-button) i{font-size:9px}p a,label a{font-size:14px;text-decoration:underline}.font-family-regular{font-family:\"OpenSans-regular\"}.font-family-medium{font-family:\"OpenSans-SemiBold\"}.font-family-bold{font-family:\"OpenSans-Bold\"}.heading-font-family-regular{font-family:\"smoolthan_regular\"}.heading-font-family-medium{font-family:\"smoolthan_medium\"}.heading-font-family-bold{font-family:\"smoolthan_bold\"}.text--primary{color:#a2a2cc}.text--danger{color:#ff6c7d}.text--info{color:#82bbc6}.text-warning{color:#d6b218}.text--medium{font-family:\"OpenSans-SemiBold\"}.text--bold{font-family:\"OpenSans-Bold\"}.text--uppercase{text-transform:uppercase}.text--ellipsis{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.text--underline{text-decoration:underline}td.text-ellipsis{max-width:250px}.section-title{font-family:\"smoolthan_bold\";margin-bottom:5px}.section-title .tyk-icon{margin-left:5px}.sub-section-title{margin-bottom:5px;font-family:\"OpenSans-SemiBold\";font-size:16px;line-height:22px}.sub-section-title .tyk-icon{margin-left:5px}.section-group-title{margin-bottom:5px;font-family:\"OpenSans-Bold\";font-size:14px;line-height:19px;text-transform:uppercase}.section-group-title .tyk-icon{margin-left:5px}.text--default-light{color:#c3c3e5 !important}.text--default{color:#36364c !important}.text--primary{color:#a2a2cc !important}.text--danger{color:#ff6c7d !important}.text--success{color:#00d9ba !important}.text--warning{color:#d6b218 !important}.tyk-form-section__title{font-size:16px;margin:5px 0 15px 0}.tyk-form-section__title--light{color:#43435b}.tyk-form-group{margin-bottom:15px}.tyk-form-group.has-error>.tyk-form-control__wrapper>.tyk-form-control,.tyk-form-group.has-error>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control,.tyk-form-group.has-error .tyk-file-input__wrapper>.tyk-form-control{border:2px solid #ff6c7d;border-left:2px solid #ea4766;outline:none}.tyk-form-group.has-error>.tyk-form-control__wrapper>.tyk-form-control:focus,.tyk-form-group.has-error>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control:focus,.tyk-form-group.has-error .tyk-file-input__wrapper>.tyk-form-control:focus{border-left:2px solid #ea4766;border-color:#ea4766;outline:none}.tyk-form-group label{font-family:\"OpenSans-SemiBold\"}.tyk-form-group--inline{align-items:stretch;display:flex;flex-wrap:nowrap}.tyk-form-group--inline .tyk-form-control__wrapper{flex:1}.tyk-form-group--inline label{display:flex;white-space:nowrap;margin-right:20px;margin-top:14px}.tyk-form-group--inline input,.tyk-form-group--inline select{display:flex}.tyk-form-group--inline .tyk-form-control__help-block{display:flex;margin-left:auto}.tyk-form-group--default{color:#505071}.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-form-control,.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control,.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control{border:2px solid #c3c3e5;color:#505071}.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-form-control[disabled],.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control[disabled],.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control[disabled]{border:2px solid #c3c3e5;background-color:#ededf9;color:#505071;cursor:not-allowed}.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-form-control[disabled]+.tyk-input-group__addon,.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control[disabled]+.tyk-input-group__addon,.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control[disabled]+.tyk-input-group__addon{background-color:#ededf9}.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-form-control::placeholder,.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control::placeholder,.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control::placeholder{opacity:.8}.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-form-control:-ms-input-placeholder,.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control:-ms-input-placeholder,.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control:-ms-input-placeholder{opacity:.8}.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-form-control::-ms-input-placeholder,.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control::-ms-input-placeholder,.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control::-ms-input-placeholder{opacity:.8}.tyk-form-group--default.tyk-form-group--addon-left .tyk-input-group__addon{border-bottom:2px solid #c3c3e5;border-left:2px solid #c3c3e5;border-top:2px solid #c3c3e5;color:#505071}.tyk-form-group--default.tyk-form-group--addon-right .tyk-input-group__addon{border-bottom:2px solid #c3c3e5;border-right:2px solid #c3c3e5;border-top:2px solid #c3c3e5;color:#505071}.tyk-form-group--primary{color:#505071}.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-form-control,.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control,.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control{border:2px solid #a2a2cc;color:#505071}.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-form-control[disabled],.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control[disabled],.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control[disabled]{border:2px solid #a2a2cc;background-color:#ededf9;color:#505071;cursor:not-allowed}.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-form-control[disabled]+.tyk-input-group__addon,.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control[disabled]+.tyk-input-group__addon,.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control[disabled]+.tyk-input-group__addon{background-color:#ededf9}.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-form-control::placeholder,.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control::placeholder,.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control::placeholder{opacity:.8}.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-form-control:-ms-input-placeholder,.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control:-ms-input-placeholder,.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control:-ms-input-placeholder{opacity:.8}.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-form-control::-ms-input-placeholder,.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control::-ms-input-placeholder,.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control::-ms-input-placeholder{opacity:.8}.tyk-form-group--primary.tyk-form-group--addon-left .tyk-input-group__addon{border-bottom:2px solid #a2a2cc;border-left:2px solid #a2a2cc;border-top:2px solid #a2a2cc;color:#a2a2cc}.tyk-form-group--primary.tyk-form-group--addon-right .tyk-input-group__addon{border-bottom:2px solid #a2a2cc;border-right:2px solid #a2a2cc;border-top:2px solid #a2a2cc;color:#a2a2cc}.tyk-form-group--success{color:#505071}.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-form-control,.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control,.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control{border:2px solid #00d9ba;color:#505071}.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-form-control[disabled],.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control[disabled],.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control[disabled]{border:2px solid #00d9ba;background-color:#ededf9;color:#505071;cursor:not-allowed}.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-form-control[disabled]+.tyk-input-group__addon,.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control[disabled]+.tyk-input-group__addon,.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control[disabled]+.tyk-input-group__addon{background-color:#ededf9}.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-form-control::placeholder,.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control::placeholder,.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control::placeholder{opacity:.8}.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-form-control:-ms-input-placeholder,.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control:-ms-input-placeholder,.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control:-ms-input-placeholder{opacity:.8}.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-form-control::-ms-input-placeholder,.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control::-ms-input-placeholder,.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control::-ms-input-placeholder{opacity:.8}.tyk-form-group--success.tyk-form-group--addon-left .tyk-input-group__addon{border-bottom:2px solid #00d9ba;border-left:2px solid #00d9ba;border-top:2px solid #00d9ba;color:#00d9ba}.tyk-form-group--success.tyk-form-group--addon-right .tyk-input-group__addon{border-bottom:2px solid #00d9ba;border-right:2px solid #00d9ba;border-top:2px solid #00d9ba;color:#00d9ba}.tyk-form-group--rounded-corners.has-error>.tyk-form-control__wrapper>.tyk-form-control{border-left:2px solid #ff6c7d}.tyk-form-group--rounded-corners.has-error>.tyk-form-control__wrapper>.tyk-form-control:focus{border-left:2px solid #ff6c7d;outline:none}.tyk-form-group--rounded-corners .tyk-form-control{border-radius:18px}.tyk-form-group--addon-right input{border-right:0 !important;padding-right:0}.tyk-form-group--addon-left input{border-left:0 !important;padding-left:0}.tyk-form-group--rounded-corners.tyk-form-group--addon-right input{border-top-right-radius:0;border-bottom-right-radius:0}.tyk-form-group--rounded-corners.tyk-form-group--addon-right .tyk-input-group__addon{background:#fff;border-top-right-radius:18px;border-bottom-right-radius:18px;color:#505071}.tyk-form-group--rounded-corners.tyk-form-group--addon-left input{border-top-left-radius:0;border-bottom-left-radius:0;border-left:0 !important}.tyk-form-group--rounded-corners.tyk-form-group--addon-left .tyk-input-group__addon{background:#fff;border-top-left-radius:18px;border-bottom-left-radius:18px;color:#505071}.tyk-form-control__error-message{font-family:\"OpenSans-regular\";font-size:12px;line-height:16px;margin-top:5px;padding:0 0 0 20px;position:relative}.tyk-form-control__error-message:before{content:\"!\";background:#ff6c7d;color:#fff;font-family:\"OpenSans-Bold\";border-radius:8px;display:inline-block;margin-right:5px;padding:0px 7px}.tyk-input-group{align-items:center;display:flex;outline:none}.tyk-input-group__addon{align-items:center;background-color:#fff;border:2px solid #c3c3e5;display:flex;height:39px;padding:10px 10px 10px 10px}.tyk-input-group__addon:first-child{border-right:0}.tyk-input-group__addon:last-child{border-left:0}.tyk-form-control{font-family:\"OpenSans-SemiBold\";font-size:14px;line-height:19px;border:2px solid #c3c3e5;background-color:#fff;color:#505071;display:block;height:39px;padding:10px 20px 10px 20px;transition:all .2s linear;width:100%}.tyk-form-control[disabled]{background-color:#ededf9;cursor:not-allowed}.tyk-form-control[disabled] .tyk-input-group__addon{background-color:#ededf9}.tyk-form-control::placeholder{font-family:\"OpenSans-SemiBold\";color:#a2a2cc}.tyk-form-control:focus,.tyk-form-control:active{outline:none;border:2px solid #00d9ba !important}.tyk-form-control:focus+.tyk-input-group__addon,.tyk-form-control:active+.tyk-input-group__addon{border:2px solid #00d9ba !important;border-left:none !important}.tyk-form-control__help-block{color:#36364c;font-style:normal;font-family:\"OpenSans-regular\";font-size:12px;line-height:16px;padding:0 0 0 20px;margin:5px 0 0 0}select{border-radius:0;-webkit-appearance:none}.inline-form-wrapper{align-items:center;display:flex;width:100%}.inline-form-wrapper .inline-form{width:100%}.inline-form-wrapper>button{margin-left:10px;margin-bottom:15px}.tyk-checkbox,.tyk-radio{margin:10px 0}.tyk-checkbox label,.tyk-radio label{font-family:\"OpenSans-SemiBold\"}.tyk-checkbox input,.tyk-radio input{margin:0 5px 0 0}.tyk-checkbox--inline,.tyk-radio--inline{display:inline-flex;margin-left:15px}.tyk-checkbox--inline:first-child,.tyk-radio--inline:first-child{margin-left:0}.tyk-inline-form{align-items:center;display:flex;flex-wrap:wrap}.tyk-inline-form .tyk-form-group{flex:1;margin-left:20px;min-width:200px}.tyk-inline-form .tyk-form-group:first-child{margin-left:0}.tyk-inline-form>.tyk-button{margin-left:20px;margin-bottom:15px}.tyk-accordion__item-header>button,.tyk-accordion__trigger{background:none;border:none;cursor:pointer;display:flex;font-size:14px;outline:none;padding:15px 15px;width:100%}.tyk-accordion__item-header>button .tyk-icon,.tyk-accordion__trigger .tyk-icon{margin-left:auto}.tyk-accordion__item{display:grid}.tyk-accordion__item--trigger-position-left{grid-template-columns:40px auto;grid-template-areas:\"trigger header\" \"trigger content\"}.tyk-accordion__item--trigger-position-right{grid-template-columns:auto 40px;grid-template-areas:\"header trigger\" \"content trigger\"}.tyk-accordion__item--trigger-in-header{grid-template-columns:auto;grid-template-areas:\"header\" \"content\"}.tyk-accordion__trigger-wrapper{grid-area:trigger;display:flex;align-items:flex-start;justify-content:center}.tyk-accordion__trigger-wrapper .tyk-icon{margin-left:auto;margin-right:auto}.tyk-accordion__item-header{grid-area:header}.tyk-accordion__trigger--disabled{color:#e1e1e1}.tyk-accordion__item-header.tyk-accordion__arrow-trigger{align-items:center;display:flex}.tyk-accordion__item-header.tyk-accordion__arrow-trigger>div{flex:1}.tyk-accordion__item-header.tyk-accordion__arrow-trigger>button{margin-left:auto;width:auto}.tyk-accordion__item-content{grid-area:content}:root{--tooltip-max-width: 450px}.tyk-tooltip{display:flex;align-items:center;background-color:#ededf9;border:2px solid #a2a2cc;border-radius:18px;max-width:var(--tooltip-max-width);padding:20px}.tyk-tooltip>.tyk-icon:first-child{width:32px;height:32px;border-radius:50%;color:#fff;background-color:#7a79a1}.tyk-tooltip>.tyk-icon:first-child:before{display:flex;width:100%;height:100%;align-items:center;justify-content:center}.tyk-tooltip>.tyk-icon+.tyk-tooltip__content{margin-left:20px}.tyk-tooltip__content{color:#505071;word-break:break-word;word-wrap:break-word}.tyk-tooltip__content+.tyk-icon{margin-left:20px}.tyk-tooltip>.tyk-icon:last-child{cursor:pointer}.tyk-button{background-color:rgba(0,0,0,0);border:none;color:#fff;cursor:pointer;display:inline-block;font-family:\"OpenSans-Bold\";text-align:center;text-transform:uppercase;text-decoration:none;transition:all .2s linear;user-select:none;vertical-align:middle;white-space:nowrap;padding:8px 23px;font-size:14px;line-height:22px;border-radius:20px}.tyk-button+.tyk-button,.tyk-button+.tyk-dropdown,.tyk-button+.tyk-toggle{margin-left:10px}.tyk-button span+i{margin-left:10px}.tyk-button i+span{margin-left:10px}.tyk-button.disabled{cursor:not-allowed;opacity:.7}.tyk-button:hover{color:#fff;text-decoration:none}.tyk-button:focus{outline:none}.tyk-button--white{background-color:#fff;color:#36364c;border:2px solid rgba(0,0,0,0)}.tyk-button--white:hover{background-color:#43435b;color:#fff}.tyk-button--primary{background-color:#7a79a1;color:#fff;border:2px solid #7a79a1}.tyk-button--primary:hover{background-color:#505071;color:#fff}.tyk-button--primary-link{background-color:rgba(0,0,0,0);border:2px solid rgba(0,0,0,0);color:#7a79a1}.tyk-button--primary-link:hover{background-color:rgba(0,0,0,0);color:#7a79a1;border-color:#7a79a1;text-decoration:underline}.tyk-button--primary-outline{border:2px solid #7a79a1;background-color:rgba(0,0,0,0);color:#7a79a1}.tyk-button--primary-outline:hover{background-color:#7a79a1;color:#fff}.tyk-button--primary-outline.disabled{color:#7a79a1}.tyk-button--primary-outline.disabled:hover{background-color:rgba(0,0,0,0);color:#7a79a1}.tyk-button--primary-gradient{border-image:linear-gradient(to right, #A2A2CC, #505071, #A2A2CC) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #A2A2CC, #505071, #A2A2CC);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-button--primary-gradient:hover,.tyk-button--primary-gradient:active,.tyk-button--primary-gradient:active:focus{border-image:linear-gradient(to right, #A2A2CC, #505071, #A2A2CC) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #A2A2CC, #505071, #A2A2CC);background-position:100% 0;background-size:200% auto;background-clip:border-box}.tyk-button--primary-gradient:hover.disabled,.tyk-button--primary-gradient:active.disabled,.tyk-button--primary-gradient:active:focus.disabled{border-image:linear-gradient(to right, #A2A2CC, #505071, #A2A2CC) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #A2A2CC, #505071, #A2A2CC);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-button--success{background-color:#00d9ba;color:#fff;border:2px solid #00d9ba}.tyk-button--success:hover{background-color:#00b798;color:#fff}.tyk-button--success-link{background-color:rgba(0,0,0,0);border:2px solid rgba(0,0,0,0);color:#00d9ba}.tyk-button--success-link:hover{background-color:rgba(0,0,0,0);color:#00d9ba;border-color:#00d9ba;text-decoration:underline}.tyk-button--success-outline{border:2px solid #00d9ba;background-color:rgba(0,0,0,0);color:#00d9ba}.tyk-button--success-outline:hover{background-color:#00d9ba;color:#fff}.tyk-button--success-outline.disabled{color:#00d9ba}.tyk-button--success-outline.disabled:hover{background-color:rgba(0,0,0,0);color:#00d9ba}.tyk-button--success-gradient{border-image:linear-gradient(to right, #00d9ba, #00B798, #00d9ba) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #00d9ba, #00B798, #00d9ba);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-button--success-gradient:hover,.tyk-button--success-gradient:active,.tyk-button--success-gradient:active:focus{border-image:linear-gradient(to right, #00d9ba, #00B798, #00d9ba) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #00d9ba, #00B798, #00d9ba);background-position:100% 0;background-size:200% auto;background-clip:border-box}.tyk-button--success-gradient:hover.disabled,.tyk-button--success-gradient:active.disabled,.tyk-button--success-gradient:active:focus.disabled{border-image:linear-gradient(to right, #00d9ba, #00B798, #00d9ba) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #00d9ba, #00B798, #00d9ba);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-button--danger{background-color:#ff6c7d;color:#fff;border:2px solid #ff6c7d}.tyk-button--danger:hover{background-color:#ea4766;color:#fff}.tyk-button--danger-link{background-color:rgba(0,0,0,0);border:2px solid rgba(0,0,0,0);color:#ff6c7d}.tyk-button--danger-link:hover{background-color:rgba(0,0,0,0);color:#ff6c7d;border-color:#ff6c7d;text-decoration:underline}.tyk-button--danger-outline{border:2px solid #ff6c7d;background-color:rgba(0,0,0,0);color:#ff6c7d}.tyk-button--danger-outline:hover{background-color:#ff6c7d;color:#fff}.tyk-button--danger-outline.disabled{color:#ff6c7d}.tyk-button--danger-outline.disabled:hover{background-color:rgba(0,0,0,0);color:#ff6c7d}.tyk-button--danger-gradient{border-image:linear-gradient(to right, #FF6C7D, #EA4766, #FF6C7D) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #FF6C7D, #EA4766, #FF6C7D);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-button--danger-gradient:hover,.tyk-button--danger-gradient:active,.tyk-button--danger-gradient:active:focus{border-image:linear-gradient(to right, #FF6C7D, #EA4766, #FF6C7D) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #FF6C7D, #EA4766, #FF6C7D);background-position:100% 0;background-size:200% auto;background-clip:border-box}.tyk-button--danger-gradient:hover.disabled,.tyk-button--danger-gradient:active.disabled,.tyk-button--danger-gradient:active:focus.disabled{border-image:linear-gradient(to right, #FF6C7D, #EA4766, #FF6C7D) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #FF6C7D, #EA4766, #FF6C7D);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-button--warning{background-color:#d6b218;color:#fff;border:2px solid rgba(0,0,0,0)}.tyk-button--warning:hover{background-color:#b49514;color:#fff}.tyk-button--warning-link{background-color:rgba(0,0,0,0);border:2px solid rgba(0,0,0,0);color:#d6b218}.tyk-button--warning-link:hover{background-color:rgba(0,0,0,0);color:#d6b218;border-color:#d6b218;text-decoration:underline}.tyk-button--warning-outline{border:2px solid #d6b218;background-color:rgba(0,0,0,0);color:#d6b218}.tyk-button--warning-outline:hover{background-color:#d6b218;color:#fff}.tyk-button--warning-outline.disabled{color:#d6b218}.tyk-button--warning-outline.disabled:hover{background-color:rgba(0,0,0,0);color:#d6b218}.tyk-button--warning-gradient{border-image:linear-gradient(to right, #D6B218, #FFE885, #D6B218) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #D6B218, #FFE885, #D6B218);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-button--warning-gradient:hover,.tyk-button--warning-gradient:active,.tyk-button--warning-gradient:active:focus{border-image:linear-gradient(to right, #D6B218, #FFE885, #D6B218) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #D6B218, #FFE885, #D6B218);background-position:100% 0;background-size:200% auto;background-clip:border-box}.tyk-button--warning-gradient:hover.disabled,.tyk-button--warning-gradient:active.disabled,.tyk-button--warning-gradient:active:focus.disabled{border-image:linear-gradient(to right, #D6B218, #FFE885, #D6B218) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #D6B218, #FFE885, #D6B218);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-button--info{background-color:#82bbc6;color:#fff;border:2px solid #82bbc6}.tyk-button--info:hover{background-color:#68adba;color:#fff}.tyk-button--info-link{background-color:rgba(0,0,0,0);border:2px solid rgba(0,0,0,0);color:#82bbc6}.tyk-button--info-link:hover{background-color:rgba(0,0,0,0);color:#82bbc6;border-color:#82bbc6;text-decoration:underline}.tyk-button--info-outline{border:2px solid #82bbc6;background-color:rgba(0,0,0,0);color:#82bbc6}.tyk-button--info-outline:hover{background-color:#82bbc6;color:#fff}.tyk-button--info-outline.disabled{color:#82bbc6}.tyk-button--info-outline.disabled:hover{background-color:rgba(0,0,0,0);color:#82bbc6}.tyk-button--info-gradient{border-image:linear-gradient(to right, #82BBC6, #D3EBEF, #82BBC6) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #82BBC6, #D3EBEF, #82BBC6);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#505071}.tyk-button--info-gradient:hover,.tyk-button--info-gradient:active,.tyk-button--info-gradient:active:focus{border-image:linear-gradient(to right, #82BBC6, #D3EBEF, #82BBC6) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #82BBC6, #D3EBEF, #82BBC6);background-position:100% 0;background-size:200% auto;background-clip:border-box}.tyk-button--info-gradient:hover.disabled,.tyk-button--info-gradient:active.disabled,.tyk-button--info-gradient:active:focus.disabled{border-image:linear-gradient(to right, #82BBC6, #D3EBEF, #82BBC6) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #82BBC6, #D3EBEF, #82BBC6);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#505071}.tyk-button--default{background-color:#36364c;color:#fff;border:2px solid #36364c}.tyk-button--default:hover{background-color:#505071;color:#fff}.tyk-button--default-link{background-color:rgba(0,0,0,0);border:2px solid rgba(0,0,0,0);color:#505071}.tyk-button--default-link:hover{background-color:rgba(0,0,0,0);color:#505071;border-color:#505071;text-decoration:underline}.tyk-button--default-outline{border:2px solid #36364c;background-color:rgba(0,0,0,0);color:#36364c}.tyk-button--default-outline:hover{background-color:#36364c;color:#fff}.tyk-button--default-outline.disabled{color:#36364c}.tyk-button--default-outline.disabled:hover{background-color:rgba(0,0,0,0);color:#36364c}.tyk-button--default-gradient{border-image:linear-gradient(to right, #36364C, #505071, #36364C) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #36364C, #505071, #36364C);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-button--default-gradient:hover,.tyk-button--default-gradient:active,.tyk-button--default-gradient:active:focus{border-image:linear-gradient(to right, #36364C, #505071, #36364C) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #36364C, #505071, #36364C);background-position:100% 0;background-size:200% auto;background-clip:border-box}.tyk-button--default-gradient:hover.disabled,.tyk-button--default-gradient:active.disabled,.tyk-button--default-gradient:active:focus.disabled{border-image:linear-gradient(to right, #36364C, #505071, #36364C) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #36364C, #505071, #36364C);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-button--sm{padding:3px 15px;font-size:12px;line-height:16px;border-radius:20px}.tyk-button--md{padding:8px 23px;font-size:14px;line-height:19px;border-radius:20px}.tyk-button--lg{padding:13px 23px;font-size:16px;line-height:22px;border-radius:20px}.tyk-button--icon-only{border-radius:18px;padding:0;line-height:20px;width:24px}.tyk-button--icon-only:hover{border-radius:18px}.tyk-button--fit{height:auto;width:auto;line-height:normal}.tyk-button--no-style{background:rgba(0,0,0,0);border:none;color:#505071}.tyk-button--no-style:hover{background:rgba(0,0,0,0);border:none;color:#505071}.tyk-button-group__wrapper{display:inline-block;position:relative;vertical-align:middle}.tyk-button-group__wrapper label{font-family:\"OpenSans-SemiBold\"}.tyk-button-group__wrapper .tyk-button-group{display:flex}.tyk-button-group__wrapper .tyk-button-group>.tyk-button-group:not(:first-child)>.tyk-button{border-top-left-radius:0;border-bottom-left-radius:0}.tyk-button-group__wrapper .tyk-button-group>.tyk-button-group:not(:last-child)>.tyk-button{border-top-right-radius:0;border-bottom-right-radius:0}.tyk-button-group__wrapper .tyk-button-group .tyk-button{border-radius:0}.tyk-button-group__wrapper .tyk-button-group .tyk-button+.tyk-button{margin-left:0}.tyk-button-group__wrapper .tyk-button-group .tyk-button+.tyk-dropdown{margin-left:0}.tyk-button-group__wrapper .tyk-button-group .tyk-button:first-child{border-top-left-radius:20px;border-bottom-left-radius:20px}.tyk-button-group__wrapper .tyk-button-group .tyk-button:last-child{border-top-right-radius:20px;border-bottom-right-radius:20px}.tyk-chart__wrapper{position:relative}.tyk-chart--no-data,.tyk-chart--loading-chart{filter:blur(10px);-webkit-filter:blur(10px)}.collapse-exit,.collapse-exit-active,.collapse-exit-done{height:0px}.collapse-wrapper{overflow:hidden;transition:all .2s}.collapse-horizontal-exit,.collapse-horizontal-exit-active,.collapse-horizontal-exit-done{width:0px}.collapse-horizontal-enter,.collapse-horizontal-enter-active,.collapse-horizontal-enter-done{width:100%}.tyk-copy-to-clipboard{position:absolute;left:-1000px;top:-1000px}.tyk-fixed-wrapper{left:0;position:sticky;right:0;top:0;z-index:8}.tyk-fixed-wrapper--scrolled{box-shadow:2px 2px 5px rgba(0,0,0,.1)}.floating-container{position:fixed;top:-9999px;overflow:auto;z-index:1080}.tyk-icon+.tyk-icon{margin-left:10px}.tyk-infinite-scroller{height:100%;overflow:hidden;position:relative}.tyk-infinite-scroller .loading{background:linear-gradient(180deg, rgba(255, 255, 255, 0), rgb(255, 255, 255));justify-content:center;bottom:0;display:flex;left:0;padding:15px 0;right:0;top:auto;width:100%}.tyk-infinite-scroller__wrapper{height:100%;overflow-y:auto}.tyk-info-note{border-radius:0;position:relative}.tyk-info-note p+p{margin-top:15px}.tyk-info-note:after{content:\"\";border-style:solid;border-width:0 20px 20px 0;border-color:rgba(0,0,0,0) #82bbc6 rgba(0,0,0,0) rgba(0,0,0,0);height:0;position:absolute;right:0;top:0;width:0}.tyk-info-note .tyk-message{border-radius:0;padding-top:40px;padding-bottom:40px}.tyk-loading__wrapper{background:rgba(255,255,255,.6);bottom:0;position:absolute;left:0;right:0;top:0;z-index:99}.loader-wrapper{min-height:100px;position:relative}.loading{position:absolute;top:calc(50% - 10px);left:50%}.loading.relative{left:auto;padding:25px;position:relative;text-align:center;top:auto;width:100%}.loading-bar{display:inline-block;width:4px;height:20px;border-radius:4px;animation:loading 1s ease-in-out infinite;margin-left:2px}.loading-bar:nth-child(1){animation-delay:0;background-color:#00d9ba;opacity:1}.loading-bar:nth-child(2){animation-delay:.09s;background-color:#00d9ba;opacity:.8}.loading-bar:nth-child(3){animation-delay:.18s;background-color:#00d9ba;opacity:.6}.loading-bar:nth-child(4){animation-delay:.27s;background-color:#00d9ba;opacity:.4}@keyframes loading{0%{transform:scale(1)}20%{transform:scale(1, 2.2)}40%{transform:scale(1)}}.tyk-list{border:2px solid #c3c3e5;border-radius:18px;font-size:14px;list-style-type:none;margin:0;max-height:191px;padding:0;overflow:auto}.tyk-list--with-inline-label{display:flex}.tyk-list--with-inline-label>label{margin-right:20px}.tyk-list li{border-bottom:1px solid #c3c3e5;padding:10px 20px;font-family:\"OpenSans-SemiBold\"}.tyk-list li:last-child{border:none}.tyk-list--default{border-color:#c3c3e5}.tyk-list--primary{border-color:#a2a2cc}.tyk-list--primary li{border-color:#ededf9;color:#505071}.tyk-list--primary-light{border-color:#ededf9}.tyk-list--primary-light li{border-color:#ededf9;color:#505071}.tyk-list--success{border-color:#00d9ba;color:#00d9ba}.tyk-list--success li{border-color:#00d9ba}.tyk-list--danger{border-color:#ff6c7d;color:#505071}.tyk-list--danger li{border-color:#ffbbc5}ul.tyk-list--inline{align-items:center;display:flex}ul.tyk-list--inline li{padding:0 10px}ul.tyk-list--inline.tyk-list--with-separator li:not(:first-child){border-left:1px solid #36364c}.tyk-message{display:flex;align-items:center;border-radius:18px;margin-bottom:20px;padding:20px 20px 20px 20px}.tyk-message__content{flex-grow:1;margin-left:20px;margin-right:20px}.tyk-message>.tyk-icon:first-child{width:32px;height:32px;flex-shrink:0;border-radius:50%;color:#fff}.tyk-message>.tyk-icon:first-child:before{display:flex;width:100%;height:100%;align-items:center;justify-content:center}.tyk-message>.tyk-icon:last-child{cursor:pointer}.tyk-message--default{background-color:#ededf9;border:2px solid #505071;color:#505071}.tyk-message--default>.tyk-icon:first-child{background-color:#505071}.tyk-message--default>.tyk-icon:first-child{transform:rotate(180deg)}.tyk-message--info{background-color:#d3ebef;border:2px solid #82bbc6;color:#82bbc6}.tyk-message--info>.tyk-icon:first-child{background-color:#82bbc6}.tyk-message--success{background-color:#c2f2e9;border:2px solid #00b798;color:#00b798}.tyk-message--success>.tyk-icon:first-child{background-color:#00b798}.tyk-message--warning{background-color:#ffe885;border:2px solid #d6b218;color:#c58c11}.tyk-message--warning>.tyk-icon:first-child{background-color:#d6b218}.tyk-message--danger{background-color:#f5ccd1;border:2px solid #ff6c7d;color:#ea4766}.tyk-message--danger>.tyk-icon:first-child{background-color:#ff6c7d}.tyk-modal{--theme-header-height: 15px;--theme-header-icon-size: 65px;align-items:center;bottom:0;left:0;pointer-events:none;position:fixed;right:0;top:0;z-index:-1}.tyk-modal .tyk-panel{border:2px solid #43435b;box-shadow:none;-webkit-box-shadow:none}.tyk-modal .tyk-modal__dialog{opacity:0;transition:all .2s ease}.tyk-modal.opened{display:flex;z-index:1080}.tyk-modal.opened .tyk-modal__dialog{display:flex;max-height:92vh;opacity:1;pointer-events:all}.tyk-modal.appear-enter-done .tyk-modal__dialog{opacity:1;margin-top:0}.tyk-modal__theme-header{position:absolute;top:-1px;left:0;right:0;height:var(--theme-header-height);border-top-left-radius:18px;border-top-right-radius:18px}.tyk-modal__theme-header .tyk-icon{position:absolute;left:calc(50% - var(--theme-header-icon-size)/2);top:calc((var(--theme-header-icon-size) - var(--theme-header-height))/-2);width:var(--theme-header-icon-size);height:var(--theme-header-icon-size);border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:25px;color:#fff}.tyk-modal--theme-success .tyk-modal__theme-header{background-color:#00d9ba}.tyk-modal--theme-success .tyk-modal__theme-header .tyk-icon{background-color:#00d9ba}.tyk-modal--theme-warning .tyk-modal__theme-header{background-color:#d6b218}.tyk-modal--theme-warning .tyk-modal__theme-header .tyk-icon{background-color:#d6b218}.tyk-modal--theme-danger .tyk-modal__theme-header{background-color:#ff6c7d}.tyk-modal--theme-danger .tyk-modal__theme-header .tyk-icon{background-color:#ff6c7d}.tyk-modal__dialog{opacity:0;margin:0 auto;margin-top:-5%;pointer-events:all;transition:all .2s linear;width:85%}@media only screen and (min-width: 768px){.tyk-modal__dialog{width:600px}}@media only screen and (min-width: 768px){.tyk-modal__dialog.tyk-modal--lg{width:800px}}.tyk-modal__content{background:#fff;border-radius:18px;display:flex;flex-direction:column;position:relative;width:100%}.tyk-modal__body{flex:1;overflow:auto;--padding-top: calc(25px + (var(--theme-header-icon-size) - var(--theme-header-height)) / 2);padding:var(--padding-top) 25px 25px}.tyk-modal__body.no-padding{padding:0}.tyk-modal__footer{align-items:center;display:flex;justify-content:flex-end;padding:25px}.tyk-modal__footer>:not(:first-child){margin-left:5px}.tyk-modal__backdrop{background-color:#505071;border:none;bottom:0;display:none;left:0;position:fixed;right:0;top:0;width:100%;z-index:1079}.tyk-modal__backdrop.opened{display:block;opacity:.5;transition:opacity .2s ease}.tyk-modal__backdrop.fade-enter-done{opacity:.5}.tyk-modal__header{--padding-top: calc(25px + (var(--theme-header-icon-size) - var(--theme-header-height)) / 2);padding:var(--padding-top) 25px 25px;align-items:center;border-bottom:1px solid #ededf9;display:flex;width:100%}.tyk-modal--theme-none .tyk-modal__header{padding-top:25px}.tyk-modal__header button{margin-left:auto;padding:0 5px}.tyk-modal__header+.tyk-modal__body{padding-top:25px}.tyk-modal__title{font-family:\"OpenSans-SemiBold\";font-weight:500;margin:0;width:100%}.tyk-navigation{background-color:#fff;height:100%;overflow:auto;padding:0;width:100%}.tyk-navigation .tyk-navigation-item{width:100%}.tyk-navigation .tyk-navigation-item a{color:#505071;display:flex;padding:10px 20px;text-decoration:none;transition:all .2s ease}.tyk-navigation .tyk-navigation-item a:hover{background-color:#a2a2cc;color:#fff}.tyk-navigation .tyk-navigation-item a.active{background-color:#505071;color:#fff}.tyk-nav-bar{align-items:center;border:none;background-color:#fff;font-family:\"OpenSans-regular\";color:#36364c;margin:0;padding:0 20px 0 20px;width:100%;z-index:8;transition:all .2s linear}.tyk-nav-bar__pre{align-self:flex-end;color:#505071;flex-basis:100%}.tyk-nav-bar__pre a{font-family:\"OpenSans-Bold\";font-size:12px;line-height:16px;color:#505071}.tyk-nav-bar.tyk-nav-bar__with-tabs .tyk-tabs--default>ul li button{padding-top:0}@media screen and (max-width: 1024px){.tyk-nav-bar{padding-left:20px}.menu-opened .tyk-nav-bar{transform:translate(245px)}}.tyk-nav-bar h1{color:#36364c}.tyk-nav-bar h4{margin:0}.tyk-nav-bar .tyk-nav-bar__wrapper{align-items:center;padding-bottom:0;display:flex;flex-wrap:wrap;height:92px}.tyk-nav-bar .tyk-nav-bar__wrapper.tyk-nav-bar--align-top{align-items:flex-start}@media screen and (max-width: 1024px){.tyk-nav-bar .tyk-nav-bar__wrapper{padding-left:0}}.tyk-nav-bar .tyk-nav-bar__wrapper h1{font-size:25px;font-family:\"smoolthan_bold\";line-height:30px;margin:0;padding-right:10px}.tyk-nav-bar .tyk-nav-bar__wrapper h4{padding-right:10px}.tyk-nav-bar .tyk-nav-bar__wrapper .tyk-nav-bar__container{align-items:center;display:flex;flex-grow:1;justify-content:space-between}.tyk-nav-bar .tyk-nav-bar__wrapper .tyk-nav-bar__left{flex-grow:1}.tyk-nav-bar .tyk-nav-bar__wrapper .tyk-nav-bar__right{margin-left:auto}.tyk-panel{background:#fff;border-radius:0;margin-bottom:20px;font-family:\"OpenSans-SemiBold\";position:relative}.tyk-panel.has-error,.tyk-panel .tyk-panel.has-error{border:2px solid #ff6c7d}.tyk-panel__header{align-items:center;border-bottom:1px solid #e1e1e1;display:flex;font-family:\"OpenSans-regular\"}.tyk-panel__header>.tyk-icon,.tyk-panel__header>.tyk-tooltip__wrapper{margin-left:5px}.tyk-panel .tyk-panel{border:2px solid #c3c3e5;box-shadow:none;-webkit-box-shadow:none}.tyk-panel--blank.tyk-panel--collapsed{margin-bottom:20px}.tyk-panel--blank.tyk-panel--collapsed .tyk-panel__header{margin-bottom:0}.tyk-panel--blank .tyk-panel__header{margin-bottom:-20px;padding:20px 25px;background-color:#fff;border:none;color:#36364c;font-size:17px;line-height:23px}.tyk-panel--primary{background-color:rgba(0,0,0,0)}.tyk-panel--primary .tyk-panel__header{background-color:#a2a2cc;border:none;color:#fff;font-size:17px;line-height:23px}.tyk-panel--primary .tyk-panel__body{background-color:#fff;border:none;color:#505071;font-size:17px;line-height:23px}.tyk-panel--primary .tyk-panel__header{border:none}.tyk-panel--primary .tyk-form-group label{color:#505071}.tyk-panel--primary .tyk-toggle .tyk-toggle__label{color:#505071}.tyk-panel--success .tyk-panel__header{background-color:#00d9ba;border:none;color:#fff;font-size:17px;line-height:23px}.tyk-panel--danger .tyk-panel__header{background-color:#ff6c7d;border:none;color:#fff;font-size:17px;line-height:23px}.tyk-panel--warning .tyk-panel__header{background-color:#d6b218;border:none;color:#fff;font-size:17px;line-height:23px}.tyk-panel__body{background-color:#fff;border-radius:0;font-family:\"OpenSans-regular\";padding:25px;position:relative;transition:height .2s}.tyk-panel__body~.tyk-panel__header{border-bottom-left-radius:0;border-bottom-right-radius:0}.tyk-panel__body.no-padding{padding:0}.tyk-panel__header{border-radius:0;border-bottom-left-radius:0;border-bottom-right-radius:0;font-family:\"OpenSans-SemiBold\";overflow:hidden;padding:10px 25px;position:relative}.tyk-panel--collapsed .tyk-panel__header{border-bottom-left-radius:0;border-bottom-right-radius:0}.tyk-panel__header~.tyk-panel__body{border-top-left-radius:0;border-top-right-radius:0}.tyk-panel__headerh3{margin:0}.tyk-panel__header ng-transclude{vertical-align:middle}.tyk-panel__header.collapsable{cursor:pointer}.tyk-panel__icon-collapse--right .tyk-panel__header.collapsable{padding-right:48px}.tyk-panel__icon-collapse--left .tyk-panel__header.collapsable{padding-left:48px}.tyk-panel__header .collapsable__arrow-right{font-size:14px;position:absolute;padding:10px;right:10px;top:calc(50% - 21px)}.tyk-panel__header .collapsable__arrow-left{font-size:14px;position:absolute;padding:8px 0px 10px 20px;left:0px;top:calc(50% - 21px)}.tyk-panel__footer{align-items:center;border-top:1px solid #ededf9;display:flex;justify-content:flex-end;padding:25px}.tyk-panel__footer>:not(:first-child){margin-left:5px}.tyk-pill{align-items:center;border-radius:18px;display:inline-flex;font-size:12px;line-height:19px;margin:0 0 10px 0;padding:6px 15px;font-family:\"OpenSans-SemiBold\"}.tyk-pill--square{border-radius:8px}.tyk-pill i{font-size:12px}.tyk-pill+.tyk-pill{margin-right:10px}.tyk-pill button+span{margin-left:10px}.tyk-pill span+button{margin-left:10px}.tyk-pill:first-child{margin-right:10px}.tyk-pill:last-child{margin-right:0}.tyk-pill--default{background-color:#36364c;color:#fff}.tyk-pill--default i{color:#fff}.tyk-pill--default-outline{box-shadow:inset 0px 0px 0px 2px #36364c;color:#505071}.tyk-pill--default-outline i{color:#505071}.tyk-pill--primary{background-color:#a2a2cc;color:#fff}.tyk-pill--primary i{color:#fff}.tyk-pill--primary-outline{box-shadow:inset 0px 0px 0px 2px #a2a2cc;color:#505071}.tyk-pill--primary-outline i{color:#505071}.tyk-pill--success{background-color:#00d9ba;color:#fff}.tyk-pill--success i{color:#fff}.tyk-pill--success-outline{box-shadow:inset 0px 0px 0px 2px #00d9ba;color:#505071}.tyk-pill--success-outline i{color:#505071}.tyk-pill--danger{background-color:#ff6c7d;color:#fff}.tyk-pill--danger i{color:#fff}.tyk-pill--danger-outline{box-shadow:inset 0px 0px 0px 2px #ff6c7d;color:#505071}.tyk-pill--danger-outline i{color:#505071}.tyk-pill--warning{background-color:#d6b218;color:#fff}.tyk-pill--warning i{color:#fff}.tyk-pill--warning-outline{box-shadow:inset 0px 0px 0px 2px #d6b218;color:#505071}.tyk-pill--warning-outline i{color:#505071}.tyk-pill--info{background-color:#82bbc6;color:#fff}.tyk-pill--info i{color:#fff}.tyk-pill--info-outline{box-shadow:inset 0px 0px 0px 2px #82bbc6;color:#505071}.tyk-pill--info-outline i{color:#505071}.tyk-ui-reveal-wrapper{display:flex;flex-direction:column;justify-content:flex-end;align-items:stretch;width:100%;height:100%;z-index:1000;position:absolute;bottom:0;left:0;pointer-events:none}.tyk-ui-reveal-wrapper__panel{max-height:calc(100% - 2rem);background-color:#fff;padding:0;margin:0;overflow-y:auto;display:flex;flex-direction:column;pointer-events:all;flex-shrink:0;overflow:auto}.tyk-ui-reveal-wrapper__hole{flex-grow:1;opacity:0;width:100%;background-color:green;-webkit-user-select:none;user-select:none;pointer-events:none;z-index:-1}.tyk-ui-reveal-wrapper__gutter{height:2rem;width:100%;cursor:row-resize;display:flex;background-color:#a2a2cc;z-index:2;pointer-events:all;justify-content:space-between;align-items:stretch;position:relative;box-shadow:0 5px 10px rgba(0,0,0,.3)}.tyk-ui-reveal-wrapper__gutter__headerleft,.tyk-ui-reveal-wrapper__gutter__headerright{display:flex;align-items:center;flex:1}.tyk-ui-reveal-wrapper__gutter__headerleft{justify-content:flex-start}.tyk-ui-reveal-wrapper__gutter__headerright{justify-content:flex-end}.tyk-ui-reveal-wrapper__gutter__logo{width:1rem;height:1rem;-webkit-user-select:none;user-select:none;pointer-events:none;padding:.2rem;z-index:2;background-image:url(\"../images/drag.svg\");align-self:center}.tyk-ui-reveal-wrapper__gutter__logo:hover{border:dashed}.tyk-sidebar{background-color:#fff;height:calc(100vh - 58px);flex:0 0 280px;padding:0;position:-webkit-sticky;position:sticky;overflow:auto;top:58px}.tyk-table{border-collapse:collapse;border-spacing:0;background-color:#fff;border-radius:18px;width:100%}.tyk-table__wrapper{border:2px solid #c3c3e5;border-radius:18px;overflow:auto}.tyk-table__wrapper--no-border{border:none}.tyk-table__wrapper.no-innner-horizontal-borders .tyk-table>thead th,.tyk-table__wrapper.no-innner-horizontal-borders .tyk-table>tbody td{border-right:none}.tyk-table>thead th{border-right:1px solid #c3c3e5;color:#505071;font-size:14px;line-height:19px;font-family:\"OpenSans-Bold\";text-transform:uppercase}.tyk-table>thead th:last-child{border-right:none}.tyk-table>thead th i{font-size:12px}.tyk-table>thead th .tyk-button{background:none;color:#36364c;padding:0}.tyk-table>thead th{padding:15px 10px}.tyk-table>tbody tr:hover{background:rgba(237,237,249,.4)}.tyk-table>tbody td{border-right:1px solid #c3c3e5;font-size:14px;line-height:19px;font-family:\"OpenSans-regular\";padding:5px 10px;vertical-align:middle}.tyk-table>tbody td:last-child{border-right:none}.tyk-table>tbody td.fit{white-space:nowrap;width:1%}.tyk-table>tbody td input:not([type=checkbox]):not([type=radio]){margin-top:15px}.tyk-table>tbody td a{color:#505071;font-family:\"OpenSans-SemiBold\"}.tyk-table>tbody td label{margin:0}.tyk-table>tbody td input[type=checkbox]{margin:0}.tyk-table tbody>tr{border-top:1px solid #c3c3e5;transition:all .4s linear;border-radius:18px}.tyk-table tbody>tr.clickable{cursor:pointer}.tyk-table>tbody tr td:first-child,.tyk-table>thead tr th:first-child{padding-left:20px}.tyk-table>tbody tr td:first-child.with-icon,.tyk-table>thead tr th:first-child.with-icon{padding-left:15px}.tyk-table>tbody tr td:last-child,.tyk-table>thead tr th:last-child{padding-right:20px}.tyk-table>tbody tr td:last-child.with-icon,.tyk-table>thead tr th:last-child.with-icon{padding-right:15px}.tyk-table .tyk-pagination{padding:20px 25px}.tyk-table .tyk-pagination li:first-child{margin-left:auto}.tyk-table .nowrap{white-space:nowrap}.tyk-table .wrap{word-break:break-all}.tyk-table-search{padding:10px 25px 0 25px}.tyk-table-search label{font-size:14px;text-transform:uppercase}.header-sort{padding-left:3px;padding-top:5px;vertical-align:middle}.new-table-pagination{float:right}.selectable>div{margin-left:20px}.scrollable{display:block;overflow:auto}.fixed-header{background:#fff;position:sticky;top:0}.tyk-table.has-error,.tyk-table__wrapper.has-error{border:2px solid #ff6c7d !important}.tyk-tabs--default>ul{display:flex;list-style-type:none;margin:0;padding:0;overflow:auto}.tyk-tabs--default>ul li{display:flex;white-space:nowrap;margin-right:0px}.tyk-tabs--default>ul li:last-child{margin-right:0}.tyk-tabs--default>ul li.active button,.tyk-tabs--default>ul li button:hover{border-bottom-color:#00d9ba;color:#505071;opacity:1}.tyk-tabs--default>ul li button{background:none;border:none;border-bottom:4px solid rgba(0,0,0,0);color:#505071;cursor:pointer;font-size:14px;font-family:\"OpenSans-SemiBold\";padding:10px 2px 3px 2px;margin-right:20px;transition:all .2s linear;opacity:.7}.tyk-tabs--default>ul li button:focus{outline:none}.tyk-tab__content{padding:25px}.tyk-toast__container{bottom:0;min-width:300px;position:fixed;right:20px;z-index:11}.tyk-toast__message{position:relative}.tyk-toast-message__button{color:#505071;height:20px;line-height:1;padding:5px;position:absolute;right:5px;top:5px;width:20px}.tyk-toast-message__button:hover{background:rgba(255,255,255,.3);color:#505071}.floating-container{position:fixed;top:-9999px;overflow:auto;z-index:1080}.tyk-combobox2{outline:none}.tyk-combobox2.disabled .tyk-form-control{border:2px solid #c3c3e5 !important;background-color:#ededf9;color:#505071;cursor:not-allowed}.tyk-combobox2.disabled .tyk-combobox2__current-values .tyk-pill--combobox button{cursor:not-allowed}.tyk-combobox2.disabled:not(.is-expand-mode) .tyk-combobox2__values-container-trigger{cursor:not-allowed}.tyk-combobox2.disabled .tyk-combobox2__entry-field{background-color:rgba(0,0,0,0);cursor:not-allowed}.tyk-combobox2 .tyk-form-control{display:flex;flex-direction:row;position:relative;min-height:40px;height:auto;padding:0}.tyk-combobox2 .tyk-form-control:focus-within{outline:none;border:2px solid #00d9ba}.tyk-combobox2__current-values{display:flex;flex-grow:1;flex-wrap:wrap;padding-top:2px;padding-bottom:2px;padding-left:10px;max-width:calc(100% - 40px)}.tyk-combobox2__current-values.expand-mode{max-height:1000px;overflow:hidden;transition:max-height 1s ease}.tyk-combobox2__current-values--collapsed.expand-mode{max-height:38px;transition:max-height .2s ease}.tyk-combobox2__current-values .tyk-pill--combobox{margin-top:3px;margin-bottom:3px;background-color:#f0f0f0;border-radius:10px;color:#505071;padding:5px 10px;max-width:100%;max-height:26px}.tyk-combobox2__current-values .tyk-pill--combobox button{background:none;border:none;cursor:pointer;width:23px;outline:none}.tyk-combobox2__current-values .tyk-pill--combobox button+span{margin-left:0}.tyk-combobox2__current-values .tyk-pill--combobox span{overflow:hidden;text-overflow:ellipsis}.tyk-combobox2__current-values .tyk-pill--combobox i{margin-right:5px}.tyk-combobox2__entry-field{border:none;line-height:30px}.tyk-combobox2__entry-field:focus,.tyk-combobox2__entry-field:active{border:none;outline:none}.tyk-combobox2__entry-field::placeholder{color:#a2a2cc;font-family:\"OpenSans-SemiBold\"}.tyk-combobox2__text-value{font-family:\"OpenSans-SemiBold\";font-size:14px;line-height:19px;padding:9px 5px;width:100%;overflow:hidden;text-overflow:ellipsis;line-height:1;outline:none}.tyk-combobox2__text-value.overflow-single{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tyk-combobox2__text-value.is-placeholder{color:#a2a2cc;font-family:\"OpenSans-SemiBold\"}.tyk-combobox2__values-container-trigger{position:relative;flex-basis:40px;display:flex;justify-content:center;align-items:center;cursor:pointer;outline:none;transition:all .2s}.tyk-combobox2__values-container-trigger--expanded{transform:rotate(180deg)}.tyk-combobox2__values-container-trigger .tyk-icon{height:14px}.tyk-form-group--rounded-corners .tyk-combobox2-disabled-overlay{border-radius:calc(18px - 2px)}.tyk-combobox2__combobox-dropdown{display:flex;flex-direction:column;border:2px solid #c3c3e5;background-color:#fff}.tyk-combobox2__combobox-dropdown.tyk-form-group--rounded-corners{border-radius:18px}.tyk-combobox2__combobox-dropdown .tyk-combobox2__combobox-search{background-color:#fff;position:sticky;top:0;padding:10px 20px}.tyk-combobox2__combobox-dropdown .tyk-combobox2__combobox-search+.combobox-list{border-top:1px solid #c3c3e5}.tyk-combobox2__combobox-dropdown .tyk-combobox2__combobox-list{max-height:255px}.tyk-combobox2__combobox-dropdown .tyk-combobox2__combobox-list li{display:flex;cursor:pointer;padding:9px 20px;transition:all .2s;font-family:\"OpenSans-SemiBold\"}.tyk-combobox2__combobox-dropdown .tyk-combobox2__combobox-list li:hover,.tyk-combobox2__combobox-dropdown .tyk-combobox2__combobox-list li.active{background-color:#ededf9}.tyk-combobox2__combobox-dropdown .tyk-combobox2__combobox-list li.disabled{color:#c3c3e5;background-color:initial}.tyk-combobox2__combobox-dropdown .tyk-combobox2__combobox-list li+li{border-top:1px solid #c3c3e5}.tyk-combobox2__combobox-dropdown .tyk-combobox2__combobox-list li i{margin-right:5px}.tyk-combobox2__combobox-dropdown .tyk-combobox2__combobox-list li .item-name{overflow:hidden;text-overflow:ellipsis;line-height:16px}.tyk-combobox2__values-container-trigger{color:#505071}.tyk-combobox2__combobox-dropdown.tyk-form-group--rounded-corners{z-index:1081}.tyk-checkbox label{display:flex;align-items:flex-start;padding-left:20px}.tyk-checkbox label input{margin-left:-20px;margin-top:5px}.tyk-checkbox--theme-light label{color:#fff}.tyk-checkbox--theme-light.tyk-checkbox--is-disabled label{color:#fff}.tyk-checkbox--is-disabled label,.tyk-checkbox--is-disabled p{cursor:not-allowed;opacity:.5}.flatpickr-day.selected,.flatpickr-day.startRange,.flatpickr-day.endRange,.flatpickr-day.selected.inRange,.flatpickr-day.startRange.inRange,.flatpickr-day.endRange.inRange,.flatpickr-day.selected:focus,.flatpickr-day.startRange:focus,.flatpickr-day.endRange:focus,.flatpickr-day.selected:hover,.flatpickr-day.startRange:hover,.flatpickr-day.endRange:hover,.flatpickr-day.selected.prevMonthDay,.flatpickr-day.startRange.prevMonthDay,.flatpickr-day.endRange.prevMonthDay,.flatpickr-day.selected.nextMonthDay,.flatpickr-day.startRange.nextMonthDay,.flatpickr-day.endRange.nextMonthDay{background:#00d9ba !important;border-color:#00d9ba !important}.tyk-dropdown{display:inline-block}.tyk-dropdown+.tyk-button,.tyk-dropdown+.tyk-dropdown,.tyk-dropdown+.tyk-toggle{margin-left:10px}.tyk-dropdown--block{left:20px;right:20px}.tyk-dropdown--relative{left:auto;right:auto}.tyk-dropdown--custom{padding:20px 25px}.tyk-dropdown label{display:block}.tyk-dropdown__trigger{position:relative}.tyk-dropdown.theme-list .tyk-button{background:#fff;border:2px solid #36364c;border-radius:18px;color:#505071}.tyk-dropdown.theme-list .tyk-button:hover,.tyk-dropdown.theme-list .tyk-button:active,.tyk-dropdown.theme-list .tyk-button:active:focus,.tyk-dropdown.theme-list .tyk-button:focus{background:#fff;border-color:#43435b;color:#505071}.tyk-dropdown-menu{background:#fff;border:2px solid #c3c3e5;border-radius:18px;-webkit-filter:drop-shadow(1px 2px 1px rgba(0, 0, 0, 0.1));filter:drop-shadow(1px 2px 1px rgba(0, 0, 0, 0.1));list-style-type:none;margin:0;margin-top:3px;overflow:hidden;padding:0;z-index:1081}.tyk-dropdown-menu.tyk-dropdown--scrollable{overflow:auto}.tyk-dropdown-menu .tyk-panel{margin:0}.tyk-dropdown-menu.opened{display:flex;flex-direction:column;position:absolute}.tyk-dropdown-menu>li{background:#fff;border-bottom:1px solid #fff;display:flex;position:relative;z-index:7}.tyk-dropdown-menu>li:last-child{border:none}.tyk-dropdown-menu>li i{left:7px;position:absolute;top:9px}.tyk-dropdown-menu>li>a{cursor:pointer;color:#505071;display:flex;font-size:12px;padding:7px 24px;text-transform:uppercase;text-decoration:none;width:100%}.tyk-dropdown-menu>li>a:hover{color:#505071}.tyk-dropdown-menu>li>a .badge{background:#505071;color:#fff;font-size:10px;margin-top:-4px;margin-left:6px}.tyk-dropdown-menu>li>a:hover{background-color:#ededf9;text-decoration:none}.tyk-dropdown--relative.opened{position:relative}.tyk-editable-list__submit-btn{white-space:nowrap}.tyk-editable-list__form{align-items:center;display:flex}.tyk-editable-list__form .tyk-form-group{margin-bottom:0}.tyk-editable-list__form--sticked{margin-left:0}.tyk-editable-list__form--sticked button{border-top-left-radius:0px;border-bottom-left-radius:0px;border-top-right-radius:3px;border-bottom-right-radius:3px;padding-bottom:11px;padding:10px 15px 11px 15px}.tyk-editable-list__form span.inline{margin-top:0}.tyk-editable-list__form>span{margin-left:15px}.tyk-editable-list__form>span.inline-with-label{align-self:flex-end}.tyk-editable-list__header{padding-top:15px;border-bottom:1px solid #43435b;color:#505071;font-size:11px;padding-bottom:15px;text-transform:uppercase}.tyk-editable-list__header .tyk-row{margin:0}.tyk-editable-list-items{overflow:hidden;list-style:none;padding:20px 0 0 0}.tyk-editable-list-items .edit-mode-wrapper.table button{margin-top:23px}.tyk-editable-list-items .tyk-row{margin:0}.tyk-editable-list-items button[disabled]{cursor:not-allowed}.tyk-editable-list-items.tyk-editable-list-items--inline{align-items:center;color:#505071;display:flex;flex-wrap:wrap}.tyk-editable-list-items li{border-top:1px solid #c3c3e5;transition:all .2s linear}.tyk-editable-list-items li.tyk-editable-list-item--inline{background-color:#c3c3e5;border-radius:25px;border:none;color:#fff;float:left;font-family:\"OpenSans-SemiBold\";margin-bottom:10px;margin-right:15px;padding:0 15px;white-space:nowrap}.tyk-editable-list-items li.tyk-editable-list-item--inline .tyk-editable-list-item__text{color:#505071;padding:5px 0}.tyk-editable-list-items li.tyk-editable-list-item--inline .tyk-editable-list-action__button.on-edit{margin-top:0}.tyk-editable-list-items li:first-child{border-top:none}.tyk-editable-list-items li .tyk-editable-list-item__text{display:flex;padding:10px 0}.tyk-editable-list-items li .tyk-editable-list-item__text>span{flex-grow:1}.tyk-editable-list-items li .tyk-editable-list-item__text>div:first-child{flex-grow:1}.tyk-editable-list-items li .tyk-editable-list-item__text>div:first-child .error-message{margin:0}.tyk-editable-list-items li .tyk-editable-list-items{overflow:hidden;padding-bottom:10px}.tyk-editable-list-items li .tyk-editable-list{border-top:5px solid #43435b;background:#ededf9;padding:10px 15px}.tyk-editable-list-items .tyk-editable-list-item__text{display:block;word-wrap:break-word;word-break:break-all}.tyk-editable-list-items .tyk-editable-list-action__button{border:none;background:rgba(0,0,0,0)}.tyk-editable-list-items .tyk-editable-list-action__button.on-edit{margin-left:10px}.tyk-editable-list-items .tyk-editable-list-item-controls{flex-grow:0;text-align:right}.tyk-editable-list-item__controls{text-align:right}.tyk-editable-list-items.table{background-color:#fff;border-radius:18px;border:2px solid #c3c3e5;padding:0 !important}.tyk-editable-list-items.table li{border-color:#c3c3e5}.tyk-editable-list-items.table li:hover{background:#ededf9}.tyk-editable-list-items.table .tyk-editable-list-item__text{background:rgba(0,0,0,0)}.tyk-editable-list-items.table .tyk-editable-list-action__button{border-radius:6px;cursor:pointer;margin-right:10px}.tyk-editable-list__header{background-color:#fff;border-top-left-radius:18px;border-top-right-radius:18px;border:2px solid #c3c3e5;border-bottom:1px solid #c3c3e5 !important;color:#505071 !important;font-family:\"OpenSans-Bold\";margin-top:10px}.tyk-editable-list__header+.tyk-editable-list-items.table{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.editable-list__header{align-items:center;display:flex;margin-bottom:10px}.editable-list__header .tyk-button{margin-left:auto}.editable-list__wrapper.has-error .editable-list__list{border:2px solid #ff6c7d}.editable-list__list{border:2px solid #c3c3e5;border-radius:18px;display:flex;flex-direction:column-reverse}.editable-list__item{border-bottom:1px solid #c3c3e5;display:flex;flex-wrap:nowrap;width:100%}.editable-list__item:first-child{border-bottom:none}.editable-list__item-header{border-bottom:1px solid #c3c3e5;color:#505071;font-size:14px;line-height:19px;font-family:\"OpenSans-Bold\";text-transform:uppercase}.editable-list__item-header .editable-list__item-cell{padding:10px}.editable-list__item-cell{border-left:1px solid #c3c3e5;overflow:hidden;padding:0 10px}.editable-list__item-cell .tyk-form-control--readonly{overflow:hidden;text-overflow:ellipsis;word-break:break-all}.editable-list__item-cell:first-child{border-left:none;padding-left:15px}.editable-list__item-cell:last-child{padding-right:15px}.editable-list__item-cell .tyk-form-group{margin:10px 0;width:100%}.editable-list__item--size-1{display:flex;flex-grow:2;width:8.3333333333%}.editable-list__item--size-2{display:flex;flex-grow:3;width:16.6666666667%}.editable-list__item--size-3{display:flex;flex-grow:4;width:25%}.editable-list__item--size-4{display:flex;flex-grow:5;width:33.3333333333%}.editable-list__item--size-5{display:flex;flex-grow:6;width:41.6666666667%}.editable-list__item--size-6{display:flex;flex-grow:7;width:50%}.editable-list__item--size-7{display:flex;flex-grow:8;width:58.3333333333%}.editable-list__item--size-8{display:flex;flex-grow:9;width:66.6666666667%}.editable-list__item--size-9{display:flex;flex-grow:10;width:75%}.editable-list__item--size-10{display:flex;flex-grow:11;width:83.3333333333%}.editable-list__item--size-11{display:flex;flex-grow:12;width:91.6666666667%}.editable-list__item--size-12{display:flex;flex-grow:13;width:100%}.editable-list__item--size-fit{width:fit-content}.editable-list__item-action{align-items:flex-start;display:flex;justify-content:center;width:100px}.editable-list__item-action .tyk-button{margin-top:20px}.editable-list__item-action--read-only{color:#c3c3e5;align-items:center}.editable-list__item-action--read-only .tyk-button{margin-top:0}.tyk-file-input__wrapper{position:relative}.tyk-file-input__wrapper>input{padding:6px 20px}.tyk-file-input__wrapper>button{background:none;border:none;cursor:pointer;position:absolute;right:15px;top:9px}.tyk-multiselect{align-items:flex-start;border-radius:18px;flex-wrap:wrap;display:flex;margin-bottom:20px;width:100%}.tyk-multiselect .input-group .input-group-addon+.form-control{border-width:1px !important;border-left:none !important;border-top-left-radius:0 !important;border-top-right-radius:0 !important;border-bottom-left-radius:0 !important;border-bottom-right-radius:0 !important}.tyk-multiselect .input-group .input-group-addon{background:rgba(0,0,0,0) !important;border-width:1px !important;border-right:0 !important;border-top-left-radius:0 !important;border-top-right-radius:0 !important;border-bottom-left-radius:0 !important;border-bottom-right-radius:0 !important}.tyk-multiselect.has-error{border:2px solid #ff6c7d}.tyk-multiselect__header{background-color:#36364c;border-top-left-radius:18px;border-top-right-radius:18px;color:#fff;display:flex;width:100%}.tyk-multiselect__header>div{padding:10px 15px;width:50%}.tyk-multiselect__panel-wrapper{border:2px solid #c3c3e5;border-top:none;border-bottom-left-radius:18px;border-bottom-right-radius:18px;display:flex;flex:1;height:265px;width:100%}.tyk-multiselect__panel{display:flex;flex-direction:column;margin:0 0 0 -1px;position:relative;width:calc(50% + 1px)}.tyk-multiselect__panel:last-child{border-left:2px solid #c3c3e5}.tyk-multiselect__panel:last-child .tyk-form-group{margin-left:-1px;width:calc(100% + 2px)}.tyk-multiselect__panel .tyk-message{margin:20px 20px 0 20px}.tyk-multiselect__list{list-style-type:none;margin:0;padding:0}.tyk-multiselect__list--scroll{height:100%;overflow-y:auto}.tyk-multiselect__list>li{border-bottom:2px solid #c3c3e5;display:flex;flex-direction:column;padding:10px 15px}.tyk-multiselect__list>li>div{align-items:start;display:flex;width:100%}.tyk-multiselect__list>li .loading{justify-content:center}.tyk-multiselect__list>li:last-child{border-bottom:none}.tyk-multiselect-item__name{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tyk-multiselect .tyk-form-group{margin:0}.tyk-multiselect .tyk-multiselect-item__controls{display:flex;margin-left:auto;flex-wrap:nowrap}.tyk-multiselect .tyk-multiselect-item__controls .tyk-button{color:#505071;margin-left:5px}.tyk-multiselect .tyk-multiselect-item__controls .tyk-button:last-child{margin-left:0}.tyk-pagination{display:flex;list-style-type:none;margin:10px 0;padding:0}.tyk-pagination li{align-items:center;display:flex}.tyk-pagination li:first-child button{border-top-left-radius:18px;border-bottom-left-radius:18px}.tyk-pagination li:last-child button{border-top-right-radius:18px;border-bottom-right-radius:18px}.tyk-pagination span{margin:0 10px}.tyk-pagination button{background:#fff;border:none;font-size:14px;font-family:\"OpenSans-Bold\";cursor:pointer;color:#36364c;margin-left:-1px;padding:10px 15px}.tyk-pagination button:hover{background-color:#c2f2e9}.tyk-pagination .active button{background-color:#00d9ba;color:#fff}.tyk-radio label{align-items:center;display:flex}.tyk-radio--is-disabled label,.tyk-radio--is-disabled p{cursor:not-allowed;opacity:.5}.tyk-radio__description-text{padding:0 0 0 20px}.tyk-select{background:rgba(0,0,0,0) url(\"../images/arrow_down.svg\") no-repeat calc(100% - 15px) center;background-size:15px 15px}.tyk-selectable-list{margin-bottom:20px;width:100%}.tyk-selectable-list li:not(.tyk-selectable-list__no-items-message){font-family:\"OpenSans-SemiBold\";padding:0}.tyk-selectable-list li:not(.tyk-selectable-list__no-items-message) .tyk-message{margin-bottom:0}.tyk-selectable-list li:not(.tyk-selectable-list__no-items-message) label{font-family:\"OpenSans-SemiBold\";margin:0}.tyk-selectable-list li:not(.tyk-selectable-list__no-items-message)>label{align-items:center;cursor:pointer;display:flex;padding:10px 20px}.tyk-selectable-list li:not(.tyk-selectable-list__no-items-message)>label input[type=checkbox]{margin-left:auto}.tyk-selectable-list__item--with-icon input[type=checkbox]{visibility:hidden}textarea.tyk-form-control{height:auto}.tyk-toggle{display:inline-flex;flex-wrap:wrap;font-family:\"OpenSans-Bold\";font-size:14px;line-height:19px;white-space:nowrap}.tyk-toggle.block{margin-bottom:20px;width:100%}.tyk-toggle.block+.tyk-toggle{margin-left:0}.tyk-toggle.inline-label{align-items:center;flex-wrap:nowrap}.tyk-toggle__list--has-error{border:2px solid #ff6c7d}.tyk-toggle .tyk-toggle__label{display:block;font-family:\"OpenSans-SemiBold\";font-size:14px;padding:0;width:100%;color:#36364c}.tyk-toggle.inline-label .tyk-toggle__label{margin-right:10px;width:auto}.tyk-toggle+.tyk-button,.tyk-toggle+.tyk-dropdown,.tyk-toggle+.tyk-toggle{margin-left:10px}.tyk-toggle--disabled-true{cursor:not-allowed;opacity:.7}.tyk-toggle--column .tyk-toggle__list--separated{display:flex;flex-direction:column;margin-right:20px}.tyk-toggle--column .tyk-toggle__list--separated .tyk-toggle__item{background-color:#ededf9;margin-right:auto}.tyk-toggle__list{background:#ededf9;border-radius:25px;display:flex;list-style-type:none;margin:0;padding:0;position:relative}.tyk-toggle__list--separated{background:rgba(0,0,0,0);flex-wrap:wrap}.tyk-toggle--on-dark .tyk-toggle__list{background:#fff}.tyk-toggle--default .tyk-toggle__item--active span{color:#fff}.tyk-toggle--default .tyk-toggle__list--single .tyk-toggle__item--active,.tyk-toggle--default .tyk-toggle__list--separated .tyk-toggle__item--active{background-color:#36364c;color:#fff;border:2px solid rgba(0,0,0,0)}.tyk-toggle--default .tyk-toggle__list--single .tyk-toggle__item--active span,.tyk-toggle--default .tyk-toggle__list--separated .tyk-toggle__item--active span{color:#fff}.tyk-toggle--default .tyk-toggle__list--single .tyk-toggle__item--active:hover,.tyk-toggle--default .tyk-toggle__list--separated .tyk-toggle__item--active:hover{background-color:#36364c;color:#fff}.tyk-toggle--primary .tyk-toggle__item--active span{color:#fff}.tyk-toggle--primary .tyk-toggle__list--single .tyk-toggle__item--active,.tyk-toggle--primary .tyk-toggle__list--separated .tyk-toggle__item--active{background-color:#a2a2cc;color:#fff;border:2px solid rgba(0,0,0,0)}.tyk-toggle--primary .tyk-toggle__list--single .tyk-toggle__item--active span,.tyk-toggle--primary .tyk-toggle__list--separated .tyk-toggle__item--active span{color:#fff}.tyk-toggle--primary .tyk-toggle__list--single .tyk-toggle__item--active:hover,.tyk-toggle--primary .tyk-toggle__list--separated .tyk-toggle__item--active:hover{background-color:#a2a2cc;color:#fff}.tyk-toggle--success .tyk-toggle__item--active span{color:#fff}.tyk-toggle--success .tyk-toggle__list--single .tyk-toggle__item--active,.tyk-toggle--success .tyk-toggle__list--separated .tyk-toggle__item--active{background-color:#00b798;color:#fff;border:2px solid rgba(0,0,0,0)}.tyk-toggle--success .tyk-toggle__list--single .tyk-toggle__item--active span,.tyk-toggle--success .tyk-toggle__list--separated .tyk-toggle__item--active span{color:#fff}.tyk-toggle--success .tyk-toggle__list--single .tyk-toggle__item--active:hover,.tyk-toggle--success .tyk-toggle__list--separated .tyk-toggle__item--active:hover{background-color:#00b798;color:#fff}.tyk-toggle--danger .tyk-toggle__item--active span{color:#fff}.tyk-toggle--danger .tyk-toggle__list--single .tyk-toggle__item--active,.tyk-toggle--danger .tyk-toggle__list--separated .tyk-toggle__item--active{background-color:#ff6c7d;color:#fff;border:2px solid rgba(0,0,0,0)}.tyk-toggle--danger .tyk-toggle__list--single .tyk-toggle__item--active:hover,.tyk-toggle--danger .tyk-toggle__list--separated .tyk-toggle__item--active:hover{background-color:#ff6c7d;color:#fff}.tyk-toggle--warning .tyk-toggle__item--active span{color:#505071}.tyk-toggle--warning .tyk-toggle__list--single .tyk-toggle__item--active,.tyk-toggle--warning .tyk-toggle__list--separated .tyk-toggle__item--active{background-color:#d6b218;color:#505071;border:2px solid rgba(0,0,0,0)}.tyk-toggle--warning .tyk-toggle__list--single .tyk-toggle__item--active:hover,.tyk-toggle--warning .tyk-toggle__list--separated .tyk-toggle__item--active:hover{background-color:#d6b218;color:#505071}.tyk-toggle--primary-gradient .tyk-toggle__item--active span{color:#fff}.tyk-toggle--primary-gradient .tyk-toggle__list--single .tyk-toggle__item--active,.tyk-toggle--primary-gradient .tyk-toggle__list--separated .tyk-toggle__item--active{border-image:linear-gradient(to right, #A2A2CC, #505071, #A2A2CC) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #A2A2CC, #505071, #A2A2CC);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-toggle--primary-gradient .tyk-toggle__list--single .tyk-toggle__item--active span,.tyk-toggle--primary-gradient .tyk-toggle__list--separated .tyk-toggle__item--active span{color:#fff}.tyk-toggle--success-gradient .tyk-toggle__item--active span{color:#fff}.tyk-toggle--success-gradient .tyk-toggle__list--single .tyk-toggle__item--active,.tyk-toggle--success-gradient .tyk-toggle__list--separated .tyk-toggle__item--active{border-image:linear-gradient(to right, #00d9ba, #00B798, #00d9ba) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #00d9ba, #00B798, #00d9ba);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-toggle--success-gradient .tyk-toggle__list--single .tyk-toggle__item--active span,.tyk-toggle--success-gradient .tyk-toggle__list--separated .tyk-toggle__item--active span{color:#fff}.tyk-toggle--danger-gradient .tyk-toggle__item--active span{color:#fff}.tyk-toggle--danger-gradient .tyk-toggle__list--single .tyk-toggle__item--active,.tyk-toggle--danger-gradient .tyk-toggle__list--separated .tyk-toggle__item--active{border-image:linear-gradient(to right, #FF6C7D, #EA4766, #FF6C7D) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #FF6C7D, #EA4766, #FF6C7D);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-toggle--danger-gradient .tyk-toggle__list--single .tyk-toggle__item--active span,.tyk-toggle--danger-gradient .tyk-toggle__list--separated .tyk-toggle__item--active span{color:#fff}.tyk-toggle--warning-gradient .tyk-toggle__item--active span{color:#fff}.tyk-toggle--warning-gradient .tyk-toggle__list--single .tyk-toggle__item--active,.tyk-toggle--warning-gradient .tyk-toggle__list--separated .tyk-toggle__item--active{border-image:linear-gradient(to right, #FFE885, #D6B218, #FFE885) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #FFE885, #D6B218, #FFE885);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#505071}.tyk-toggle--warning-gradient .tyk-toggle__list--single .tyk-toggle__item--active span,.tyk-toggle--warning-gradient .tyk-toggle__list--separated .tyk-toggle__item--active span{color:#fff}.tyk-toggle__item{color:#fff;text-transform:uppercase;z-index:2;border:2px solid rgba(0,0,0,0)}.tyk-toggle__item:first-child{border-top-left-radius:25px;border-bottom-left-radius:25px}.tyk-toggle__item:last-child{border-top-right-radius:25px;border-bottom-right-radius:25px}.tyk-toggle__list--separated .tyk-toggle__item{background:tyk-toggle__list--separated;border-radius:25px;margin-bottom:5px;margin-top:5px;margin-right:10px}.tyk-toggle__list--separated .tyk-toggle__item:last-child{margin-right:0}.tyk-toggle__item input{display:none}.tyk-toggle__item label{cursor:pointer;font-family:\"OpenSans-Bold\";position:relative;margin:0;transition:all .2s ease}.tyk-toggle__list--single .tyk-toggle__item label{padding-left:45px}.tyk-toggle__list--single .tyk-toggle__item--active label{padding-left:25px;padding-right:45px}.tyk-toggle__list--single .tyk-toggle__item--active label .tyk-toggle__item-notch{left:calc(100% - 35px)}.tyk-toggle--on-dark .tyk-toggle__item:not(.tyk-toggle__item--active){color:#505071}.tyk-toggle--on-dark .tyk-toggle__item-notch--single{background:#ededf9}.tyk-toggle--sm label{padding:calc(3px + 2px) calc(15px + 2px);font-size:12px;line-height:16px;border-radius:20px}.tyk-toggle--sm .tyk-toggle__list--single label{padding-left:35px}.tyk-toggle--sm .tyk-toggle__list--single .tyk-toggle__item--active label{padding-left:17px;padding-right:35px}.tyk-toggle--sm .tyk-toggle__list--single .tyk-toggle__item--active label .tyk-toggle__item-notch{left:calc(100% - 27px)}.tyk-toggle--md label{padding:calc(8px + 2px) calc(23px + 2px);font-size:14px;line-height:16px;border-radius:20px}.tyk-toggle--lg label{padding:calc(13px + 2px) calc(23px + 2px);font-size:14px;line-height:16px;border-radius:20px}.tyk-toggle--lg .tyk-toggle__list--single label{padding-left:45px}.tyk-toggle--lg .tyk-toggle__list--single .tyk-toggle__item--active label{padding-left:25px;padding-right:45px}.tyk-toggle--lg .tyk-toggle__list--single .tyk-toggle__item--active label .tyk-toggle__item-notch{left:calc(100% - 43px)}.tyk-toggle__item-notch{border-radius:25px;bottom:2px;position:absolute;transition:all .2s ease;top:2px}.tyk-toggle__item-notch--single{background:#fff;left:2px;width:32px}.tyk-toggle--sm .tyk-toggle__item-notch--single{width:24px}.tyk-toggle--lg .tyk-toggle__item-notch--single{width:40px}.tyk-toggle__notch{border-radius:25px;left:0;position:absolute;bottom:4px;top:4px;transition:all .2s ease;width:100px;z-index:1}.tyk-toggle--default .tyk-toggle__notch{background-color:#36364c;color:#fff;border:2px solid rgba(0,0,0,0)}.tyk-toggle--default .tyk-toggle__notch:hover{background-color:#36364c;color:#fff}.tyk-toggle--primary .tyk-toggle__notch{background-color:#a2a2cc;color:#fff;border:2px solid rgba(0,0,0,0)}.tyk-toggle--primary .tyk-toggle__notch:hover{background-color:#a2a2cc;color:#fff}.tyk-toggle--success .tyk-toggle__notch{background-color:#00d9ba;color:#fff;border:2px solid rgba(0,0,0,0)}.tyk-toggle--success .tyk-toggle__notch:hover{background-color:#00d9ba;color:#fff}.tyk-toggle--danger .tyk-toggle__notch{background-color:#ff6c7d;color:#fff;border:2px solid rgba(0,0,0,0)}.tyk-toggle--danger .tyk-toggle__notch:hover{background-color:#ff6c7d;color:#fff}.tyk-toggle--warning .tyk-toggle__notch{background-color:#d6b218;color:#505071;border:2px solid rgba(0,0,0,0)}.tyk-toggle--warning .tyk-toggle__notch:hover{background-color:#d6b218;color:#505071}.tyk-toggle--primary-gradient .tyk-toggle__notch{border-image:linear-gradient(to right, #A2A2CC, #505071, #A2A2CC) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #A2A2CC, #505071, #A2A2CC);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-toggle--success-gradient .tyk-toggle__notch{border-image:linear-gradient(to right, #00d9ba, #00B798, #00d9ba) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #00d9ba, #00B798, #00d9ba);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-toggle--danger-gradient .tyk-toggle__notch{border-image:linear-gradient(to right, #FF6C7D, #EA4766, #FF6C7D) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #FF6C7D, #EA4766, #FF6C7D);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-toggle--warning-gradient .tyk-toggle__notch{border-image:linear-gradient(to right, #FFE885, #D6B218, #FFE885) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #FFE885, #D6B218, #FFE885);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#505071}.empty-toggle{padding:1px}.string-builder{position:relative;display:block}.string-builder__input{word-break:break-all;resize:none;overflow:hidden;background:rgba(0,0,0,0);position:absolute;border:none;font:inherit;display:block;z-index:1;width:100%;padding:0px;width:calc(100% - 35px)}.string-builder__input:focus,.string-builder__input:active{border:none;outline:none}.string-builder__styled{font:inherit;position:absolute;pointer-events:none;width:calc(100% - 35px);color:rgba(0,0,0,0);z-index:2;border:none;word-wrap:break-word;word-break:break-all}.string-builder__disabled{background-color:#ededf9 !important;color:#505071;cursor:not-allowed}.url-builder__options_name{font-weight:10px}.url-builder__options_description{color:gray}.string-builder-dropdown{display:flex;flex-direction:column;border:2px solid #c3c3e5;background-color:#fff}.string-builder-dropdown.tyk-form-group--rounded-corners{border-radius:18px}.string-builder-dropdown .string-builder-search{background-color:#fff;position:sticky;top:0;padding:10px 20px}.string-builder-dropdown .string-builder-search+.string-builder-list{border-top:1px solid #c3c3e5}.string-builder-dropdown .string-builder-list{max-height:255px}.string-builder-dropdown .string-builder-list li{cursor:pointer;padding:9px 20px;transition:all .2s;font-family:\"OpenSans-SemiBold\"}.string-builder-dropdown .string-builder-list li:hover,.string-builder-dropdown .string-builder-list li.active{background-color:#c3c3e5}.string-builder-dropdown .string-builder-list li+li{border-top:1px solid #c3c3e5}.string-builder-dropdown .string-builder-list li i{margin-right:5px}.string-builder-dropdown .string-builder-list li .item-name{overflow:hidden;text-overflow:ellipsis;line-height:16px}.invalid_token{box-shadow:0px 0px 0px 1px #ea4766 inset;border-radius:5px;background:#ffbbc5;color:#ea4766;padding:4px;pointer-events:all}.invalid_token .invalid_token--icon{margin-left:2px;color:#ea4766}.string_builder_trigger{background-color:#fff;border-radius:5px;padding:1px 6px;margin:0px 4px}.string-builder-footer>.tyk-form-control__error-message{padding:0px !important}.string-builder-footer>.tyk-form-control__help-block{padding:0px !important}.string-builder-search{padding-right:10px}.default-option-name{color:green}.data_source_argument{color:pink}.data_source_object{color:#8a2be2}*{box-sizing:border-box}body{background-color:#e1e1e1;color:#505071;font-size:14px;line-height:19px;font-family:\"OpenSans-regular\"}.tyk-main-wrapper{display:flex;flex-wrap:nowrap}.tyk-main-content-wrapper{flex:1}.well{background:rgba(0,0,0,0);border:2px solid #c3c3e5;border-radius:18px;box-shadow:none}.well.has-error{border-color:#ff6c7d}.title-medium{font-family:\"OpenSans-SemiBold\";color:#36364c;font-size:16px}.right-align{text-align:right !important}.left-align{text-align:left !important}.center-align{text-align:center !important}.left{float:left !important}.right{float:right !important}.hide{display:none !important}.no-margin{margin:0 !important}.no-margin-bottom{margin-bottom:0 !important}.no-margin-top{margin-top:0 !important}.no-margin-right{margin-right:0 !important}.no-margin-left{margin-right:0 !important}.disabled-section{color:#c3c3e5}.top-buffer-large{margin-top:20px !important}.top-buffer-small{margin-top:5px !important}.top-buffer-medium{margin-top:10px !important}.bottom-buffer-large{margin-bottom:20px !important}.bottom-buffer-small{margin-bottom:5px !important}.bottom-buffer-medium{margin-bottom:10px !important}.right-buffer-large{margin-right:20px !important}.right-buffer-small{margin-right:5px !important}.right-buffer-medium{margin-right:10px !important}.left-buffer-large{margin-left:20px !important}.left-buffer-small{margin-left:5px !important}.left-buffer-medium{margin-left:10px !important}.word-wrap{word-wrap:break-word;word-break:break-all}.clear-left{clear:left}.flex-container{display:flex}.vertical-center-align{align-items:center}.right-align-controls{align-items:center;display:flex;margin-left:auto}.inline-label{margin-right:15px}.nowrap{white-space:nowrap}","html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, article, aside, canvas, details, embed, figure, figcaption, footer, header, hgroup, menu, nav, output, ruby, section, summary, time, mark, audio, video {\n margin: 0;\n padding: 0;\n border: 0;\n font-size: 100%;\n font: inherit;\n vertical-align: baseline;\n}\n\n/* HTML5 display-role reset for older browsers */\n\narticle, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section {\n display: block; }\n\nbody {\n line-height: 1; }\n\nol, ul {\n list-style: none; }\n\nblockquote, q {\n quotes: none; }\n\nblockquote {\n &:before, &:after {\n content: '';\n content: none; } }\n\nq {\n &:before, &:after {\n content: '';\n content: none; } }\n\ntable {\n border-collapse: collapse;\n border-spacing: 0; }\n","@import 'variables';\r\n@import 'mixins';\r\n\r\n.container {\r\n max-width: $grid-max-width;\r\n margin: 0 auto;\r\n}\r\n\r\n.container,\r\n.container-fluid {\r\n padding: 0 $grid-gutter;\r\n}\r\n\r\n.tyk-row {\r\n display: flex;\r\n box-sizing: border-box;\r\n list-style: none;\r\n flex: 0 1 auto;\r\n flex-direction: row;\r\n flex-wrap: wrap;\r\n margin-left: -$grid-gutter;\r\n width: calc(100% + #{$grid-gutter});\r\n\r\n &.no-gutters {\r\n margin: 0;\r\n }\r\n\r\n &.tyk-row--gutterless {\r\n margin: 0;\r\n width: 100%;\r\n }\r\n\r\n &.tyk-row--reverse {\r\n flex-direction: row-reverse;\r\n }\r\n}\r\n\r\n.tyk-col {\r\n max-width: calc(100% - #{$grid-gutter});\r\n box-sizing: border-box;\r\n flex: 0 0 auto;\r\n flex-grow: 1;\r\n flex-basis: calc(100% - #{$grid-gutter});\r\n margin-left: $grid-gutter;\r\n width: calc(100% - #{$grid-gutter});\r\n\r\n &:last-child {\r\n margin-right: 0;\r\n }\r\n\r\n .tyk-row--gutterless & {\r\n margin: 0;\r\n }\r\n\r\n &.tyk-col--reverse {\r\n flex-direction: column-reverse;\r\n }\r\n\r\n &.tyk-col--align-bottom {\r\n align-self: flex-end;\r\n }\r\n\r\n &.tyk-col--align-top {\r\n align-self: flex-start;\r\n }\r\n\r\n &.tyk-col--align-center {\r\n align-self: center;\r\n }\r\n\r\n &.tyk-col--align-baseline {\r\n align-self: baseline;\r\n }\r\n\r\n &.tyk-col--align-stretch {\r\n align-self: stretch;\r\n }\r\n}\r\n\r\n@each $breakpoint in $grid-breakpoints {\r\n $name: nth($breakpoint, 1);\r\n $declaration: nth($breakpoint, 2);\r\n\r\n @media screen and #{$declaration} {\r\n @include grid-loop($name);\r\n }\r\n}\r\n","$font-path: '../fonts/' !default;\n$component-images-path: '../images' !default;\n$general-border-radius: 18px !default;\n$general-border-width: 2px !default;\n\n$theme-colors: (\n 'default': (\n 'base': #36364C,\n 'base-light': #7A79A1,\n 'light': #C3C3E5,\n 'dark': #505071\n ),\n 'primary': (\n 'base': #A2A2CC,\n 'light': #EDEDF9,\n 'dark': #505071\n ),\n 'success': (\n 'base': #00d9ba,\n 'light': #C2F2E9,\n 'dark': #00B798\n ),\n 'info': (\n 'base': #82BBC6,\n 'light': #D3EBEF\n ),\n 'danger': (\n 'base': #FF6C7D,\n 'extra-light': #F5CCD1,\n 'light': #FFBBC5,\n 'dark': #EA4766\n ),\n 'warning': (\n 'base': #D6B218,\n 'light': #FFE885,\n 'dark': #C58C11\n ),\n 'foreground': (\n 'base': #393939,\n 'base-dark': #22272B,\n 'light': #5a5a68,\n 'dark': #161B20,\n 'extra-dark': #0A0D10\n ),\n 'background': (\n 'base': #E1E1E1,\n 'light': #EDEDF9,\n 'dark': #43435B,\n 'extra-dark': #0A0D10\n )\n) !default;\n\n$text-color: #505071 !default;\n$label-color: theme-color('default', 'base') !default;\n\n$contrast-colors: (\n 'dark': (\n 'primary': rgb(255, 255, 255),\n 'secondary': rgba(255, 255, 255, .70),\n 'disabled': rgba(255, 255, 255, .5),\n 'hint': rgba(255, 255, 255, .12)\n ),\n 'light': (\n 'primary': rgba(0, 0, 0, .87),\n 'secondary': rgba(0, 0, 0, .54),\n 'disabled': rgba(0, 0, 0, .38),\n 'hint': rgba(0, 0, 0, .12)\n ),\n) !default;\n\n$xs-line-height: 16px;\n$sm-line-height: 19px;\n$md-line-height: 22px;\n$lg-line-height: 23px;\n$xl-line-height: 24px;\n$xxl-line-height: 30px;\n\n$xs-font-size: 12px;\n$sm-font-size: 14px;\n$md-font-size: 16px;\n$lg-font-size: 17px;\n$xl-font-size: 20px;\n$xxl-font-size: 25px;\n\n$base-font-size: $sm-font-size !default;\n$base-line-height: $sm-line-height !default;\n\n$text-settings: (\n 'xs': (\n font-size: $xs-font-size,\n line-height: $xs-line-height\n ),\n 'sm': (\n font-size: $sm-font-size,\n line-height: $sm-line-height\n ),\n 'base': (\n font-size: $md-font-size,\n line-height: $md-line-height\n ),\n 'md': (\n font-size: $md-font-size,\n line-height: $md-line-height\n ),\n 'lg': (\n font-size: $lg-font-size,\n line-height: $lg-line-height\n ),\n 'xl': (\n font-size: $xl-font-size,\n line-height: $xl-line-height\n ),\n 'xxl': (\n font-size: $xxl-font-size,\n line-height: $xxl-line-height\n )\n) !default;\n\n$spacing: (\n 'xs': 5px,\n 'sm': 10px,\n 'base': 15px,\n 'md': 20px,\n 'lg': 25px,\n 'xl': 30px,\n 'xxl': 40px\n) !default;\n\n$grid-gutter: map-get($spacing, 'md') !default;\n$grid-max-width: 1200px + ($grid-gutter * 2) !default;\n$grid-columns: 12 !default;\n\n$breakpoint-xs: 420px !default;\n$breakpoint-sm: 768px !default;\n$breakpoint-md: 1024px !default;\n$breakpoint-lg: 1248px !default;\n\n$breakpoints: (\n \"xs\": $breakpoint-xs,\n \"sm\": $breakpoint-sm,\n \"md\": $breakpoint-md,\n \"lg\": $breakpoint-lg\n);\n\n$grid-breakpoints: (\n 'lg' '(min-width: ' + $breakpoint-lg + ')',\n 'md' '(min-width: ' + $breakpoint-md + ') and (max-width: ' + ($breakpoint-lg - 1) + ')',\n 'sm' '(min-width: ' + ($breakpoint-sm + 1) + ') and (max-width:' + ($breakpoint-md - 1) + ')',\n 'xs' '(max-width: ' + $breakpoint-sm + ')'\n) !default;\n\n$font-family-regular: 'OpenSans-regular' !default;\n$font-family-medium: 'OpenSans-SemiBold' !default;\n$font-family-bold: 'OpenSans-Bold' !default;\n\n$headings-color: #36364C !default;\n$headings-font-family-regular: 'smoolthan_regular' !default;\n$headings-font-family-medium: 'smoolthan_medium' !default;\n$headings-font-family-bold: 'smoolthan_bold' !default;\n\n$headings-margin-bottom: 15px !default;\n$headings-font-family: $headings-font-family-medium !default;\n$headings-font-weight: 500 !default;\n$headings-line-height: $base-line-height !default;\n\n$form-group-margin-bottom: 15px !default;\n$form-control-height: 39px !default;\n$form-control-padding-left: map-get($spacing, 'md') !default;\n$form-control-padding-right: map-get($spacing, 'md') !default;\n$form-control-padding-top: 10px !default;\n$form-control-padding-bottom: 10px !default;\n$form-control-addon-background-color: white !default;\n$form-control-addon-padding-top: 10px !default;\n$form-control-addon-padding-bottom: 10px !default;\n$form-control-addon-padding-left: 10px !default;\n$form-control-addon-padding-right: 10px !default;\n$form-control-disabled-background-color: theme-color('background', 'light') !default;\n$form-control-border: $general-border-width solid theme-color('default', 'light') !default;\n$form-control-disabled-border: $general-border-width solid theme-color('default', 'light') !default;\n$form-control-placeholder-color: #A2A2CC !default;\n$form-control-disabled-background-color: theme-color('default', 'light') !default;\n$form-control-disabled-color: $text-color !default;\n$form-control-border-focus: 2px solid theme-color('success', 'base') !default;\n$form-control-placeholder-font-family: $font-family-medium !default;\n$form-control-error-colour: theme-color('danger', 'dark') !default;\n$form-default-color: theme-color('default', 'light') !default;\n$form-primary-color: theme-color('primary', 'base') !default;\n$form-success-color: theme-color('success', 'base') !default;\n\n$error-border: $general-border-width solid theme-color('danger', 'base') !default;\n$error-border-left: 2px solid theme-color('danger', 'dark') !default;\n$help-block-color: theme-color('default', 'base') !default;\n$help-block-font-style: normal !default;\n$help-block-padding: 0 0 0 $form-control-padding-left !default;\n$error-message-padding: 0 0 0 $form-control-padding-left !default;\n$default-pill-background-color: theme-color('default', 'base') !default;\n$default-pill-color: white !default;\n$pill-margin: 0 0 10px 0 !default;\n$default-outline-pill-box-shadow: inset 0px 0px 0px 2px theme-color('default', 'base');\n$default-outline-pill-color: $text-color;\n\n$title-medium-font-size: 16px;\n\n//Buffers\n$bottom-buffer-large: map-get($spacing, 'md');\n$bottom-buffer-medium: 10px;\n$bottom-buffer-small: 5px;\n$top-buffer-large: map-get($spacing, 'md');\n$top-buffer-medium: 10px;\n$top-buffer-small: 5px;\n$right-buffer-large: map-get($spacing, 'md');\n$right-buffer-medium: 10px;\n$right-buffer-small: 5px;\n$left-buffer-large: map-get($spacing, 'md');\n$left-buffer-medium: 10px;\n$left-buffer-small: 5px;\n\n$modal-z-index: 1080;\n","@use \"sass:math\";\n\n@function theme-color($key: 'primary', $variant: 'base') {\n $map: map-get($theme-colors, $key);\n @return map-get($map, $variant);\n}\n\n@function contrast($background: 'light', $type: 'primary') {\n $map: map-get($contrast-colors, $background);\n @return map-get($map, $type);\n}\n\n@mixin contrast($background: 'light', $type: 'primary') {\n color: contrast($background, $type)\n}\n\n@function text-scale($level) {\n @return map-get(map-get($text-settings, $level), 'font-size');\n}\n\n@function line-height($level) {\n @return map-get(map-get($text-settings, $level), 'line-height');\n}\n\n@mixin text-setting($level) {\n font-size: text-scale($level);\n line-height: line-height($level);\n}\n\n@mixin font-face($font-family, $url) {\n\t@font-face {\n\t\tfont-family: '#{$font-family}';\n\t\tsrc: url('#{$url}.woff2') format('woff2'),\n\t\t url('#{$url}.woff') format('woff');\n\t\tfont-weight: normal;\n\t\tfont-style: normal;\n\t}\n}\n\n@mixin mq($width, $type: min) {\n @if map_has_key($breakpoints, $width) {\n $width: map_get($breakpoints, $width);\n @if $type == max {\n $width: $width - 1px;\n }\n @media only screen and (#{$type}-width: $width) {\n @content;\n }\n }\n}\n\n@mixin grid-loop($name) {\n @for $i from 0 through $grid-columns {\n .tyk-col--#{$name}-#{$i} {\n flex-basis: calc(#{percentage(math.div($i, $grid-columns))} - #{$grid-gutter});\n max-width: calc(#{percentage(math.div($i, $grid-columns))} - #{$grid-gutter});\n }\n\n .tyk-col--offset-#{$name}-#{$i} {\n margin-left: percentage(math.div($i, $grid-columns));\n }\n }\n}\n\n@mixin form-group-variant(\n $border-color,\n $color: $border-color,\n) {\n color: $text-color;\n\n > .tyk-form-control__wrapper > .tyk-form-control,\n > .tyk-form-control__wrapper > .tyk-file-input__wrapper > .tyk-form-control,\n > .tyk-form-control__wrapper > .tyk-input-group > .tyk-form-control {\n border: $general-border-width solid $border-color;\n color: $text-color;\n\n &[disabled] {\n border: $general-border-width solid $border-color;\n background-color: $form-control-disabled-background-color;\n color: $form-control-disabled-color;\n cursor: not-allowed;\n\n + .tyk-input-group__addon {\n background-color: $form-control-disabled-background-color;\n }\n }\n\n &::placeholder {\n opacity: 0.8;\n }\n\n &:-ms-input-placeholder {\n opacity: 0.8;\n }\n\n &::-ms-input-placeholder {\n opacity: 0.8;\n }\n }\n\n &.tyk-form-group--addon-left {\n .tyk-input-group__addon {\n border-bottom: 2px solid $border-color;\n border-left: 2px solid $border-color;\n border-top: 2px solid $border-color;\n color: $color;\n }\n }\n\n &.tyk-form-group--addon-right {\n .tyk-input-group__addon {\n border-bottom: 2px solid $border-color;\n border-right: 2px solid $border-color;\n border-top: 2px solid $border-color;\n color: $color;\n }\n }\n}\n","/*!\n * Font Awesome Free 5.5.0 by @fontawesome - https://fontawesome.com\n * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)\n */\n.fa,\n.fas,\n.far,\n.fal,\n.fab {\n -moz-osx-font-smoothing: grayscale;\n -webkit-font-smoothing: antialiased;\n display: inline-block;\n font-style: normal;\n font-variant: normal;\n text-rendering: auto;\n line-height: 1; }\n\n.fa-lg {\n font-size: 1.33333em;\n line-height: 0.75em;\n vertical-align: -.0667em; }\n\n.fa-xs {\n font-size: .75em; }\n\n.fa-sm {\n font-size: .875em; }\n\n.fa-1x {\n font-size: 1em; }\n\n.fa-2x {\n font-size: 2em; }\n\n.fa-3x {\n font-size: 3em; }\n\n.fa-4x {\n font-size: 4em; }\n\n.fa-5x {\n font-size: 5em; }\n\n.fa-6x {\n font-size: 6em; }\n\n.fa-7x {\n font-size: 7em; }\n\n.fa-8x {\n font-size: 8em; }\n\n.fa-9x {\n font-size: 9em; }\n\n.fa-10x {\n font-size: 10em; }\n\n.fa-fw {\n text-align: center;\n width: 1.25em; }\n\n.fa-ul {\n list-style-type: none;\n margin-left: 2.5em;\n padding-left: 0; }\n .fa-ul > li {\n position: relative; }\n\n.fa-li {\n left: -2em;\n position: absolute;\n text-align: center;\n width: 2em;\n line-height: inherit; }\n\n.fa-border {\n border: solid 0.08em #eee;\n border-radius: .1em;\n padding: .2em .25em .15em; }\n\n.fa-pull-left {\n float: left; }\n\n.fa-pull-right {\n float: right; }\n\n.fa.fa-pull-left,\n.fas.fa-pull-left,\n.far.fa-pull-left,\n.fal.fa-pull-left,\n.fab.fa-pull-left {\n margin-right: .3em; }\n\n.fa.fa-pull-right,\n.fas.fa-pull-right,\n.far.fa-pull-right,\n.fal.fa-pull-right,\n.fab.fa-pull-right {\n margin-left: .3em; }\n\n.fa-spin {\n -webkit-animation: fa-spin 2s infinite linear;\n animation: fa-spin 2s infinite linear; }\n\n.fa-pulse {\n -webkit-animation: fa-spin 1s infinite steps(8);\n animation: fa-spin 1s infinite steps(8); }\n\n@-webkit-keyframes fa-spin {\n 0% {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg); }\n 100% {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg); } }\n\n@keyframes fa-spin {\n 0% {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg); }\n 100% {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg); } }\n\n.fa-rotate-90 {\n -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)\";\n -webkit-transform: rotate(90deg);\n transform: rotate(90deg); }\n\n.fa-rotate-180 {\n -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)\";\n -webkit-transform: rotate(180deg);\n transform: rotate(180deg); }\n\n.fa-rotate-270 {\n -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)\";\n -webkit-transform: rotate(270deg);\n transform: rotate(270deg); }\n\n.fa-flip-horizontal {\n -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)\";\n -webkit-transform: scale(-1, 1);\n transform: scale(-1, 1); }\n\n.fa-flip-vertical {\n -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)\";\n -webkit-transform: scale(1, -1);\n transform: scale(1, -1); }\n\n.fa-flip-horizontal.fa-flip-vertical {\n -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)\";\n -webkit-transform: scale(-1, -1);\n transform: scale(-1, -1); }\n\n:root .fa-rotate-90,\n:root .fa-rotate-180,\n:root .fa-rotate-270,\n:root .fa-flip-horizontal,\n:root .fa-flip-vertical {\n -webkit-filter: none;\n filter: none; }\n\n.fa-stack {\n display: inline-block;\n height: 2em;\n line-height: 2em;\n position: relative;\n vertical-align: middle;\n width: 2.5em; }\n\n.fa-stack-1x,\n.fa-stack-2x {\n left: 0;\n position: absolute;\n text-align: center;\n width: 100%; }\n\n.fa-stack-1x {\n line-height: inherit; }\n\n.fa-stack-2x {\n font-size: 2em; }\n\n.fa-inverse {\n color: #fff; }\n\n/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen\nreaders do not read off random characters that represent icons */\n.fa-500px:before {\n content: \"\\f26e\"; }\n\n.fa-accessible-icon:before {\n content: \"\\f368\"; }\n\n.fa-accusoft:before {\n content: \"\\f369\"; }\n\n.fa-acquisitions-incorporated:before {\n content: \"\\f6af\"; }\n\n.fa-ad:before {\n content: \"\\f641\"; }\n\n.fa-address-book:before {\n content: \"\\f2b9\"; }\n\n.fa-address-card:before {\n content: \"\\f2bb\"; }\n\n.fa-adjust:before {\n content: \"\\f042\"; }\n\n.fa-adn:before {\n content: \"\\f170\"; }\n\n.fa-adversal:before {\n content: \"\\f36a\"; }\n\n.fa-affiliatetheme:before {\n content: \"\\f36b\"; }\n\n.fa-air-freshener:before {\n content: \"\\f5d0\"; }\n\n.fa-algolia:before {\n content: \"\\f36c\"; }\n\n.fa-align-center:before {\n content: \"\\f037\"; }\n\n.fa-align-justify:before {\n content: \"\\f039\"; }\n\n.fa-align-left:before {\n content: \"\\f036\"; }\n\n.fa-align-right:before {\n content: \"\\f038\"; }\n\n.fa-alipay:before {\n content: \"\\f642\"; }\n\n.fa-allergies:before {\n content: \"\\f461\"; }\n\n.fa-amazon:before {\n content: \"\\f270\"; }\n\n.fa-amazon-pay:before {\n content: \"\\f42c\"; }\n\n.fa-ambulance:before {\n content: \"\\f0f9\"; }\n\n.fa-american-sign-language-interpreting:before {\n content: \"\\f2a3\"; }\n\n.fa-amilia:before {\n content: \"\\f36d\"; }\n\n.fa-anchor:before {\n content: \"\\f13d\"; }\n\n.fa-android:before {\n content: \"\\f17b\"; }\n\n.fa-angellist:before {\n content: \"\\f209\"; }\n\n.fa-angle-double-down:before {\n content: \"\\f103\"; }\n\n.fa-angle-double-left:before {\n content: \"\\f100\"; }\n\n.fa-angle-double-right:before {\n content: \"\\f101\"; }\n\n.fa-angle-double-up:before {\n content: \"\\f102\"; }\n\n.fa-angle-down:before {\n content: \"\\f107\"; }\n\n.fa-angle-left:before {\n content: \"\\f104\"; }\n\n.fa-angle-right:before {\n content: \"\\f105\"; }\n\n.fa-angle-up:before {\n content: \"\\f106\"; }\n\n.fa-angry:before {\n content: \"\\f556\"; }\n\n.fa-angrycreative:before {\n content: \"\\f36e\"; }\n\n.fa-angular:before {\n content: \"\\f420\"; }\n\n.fa-ankh:before {\n content: \"\\f644\"; }\n\n.fa-app-store:before {\n content: \"\\f36f\"; }\n\n.fa-app-store-ios:before {\n content: \"\\f370\"; }\n\n.fa-apper:before {\n content: \"\\f371\"; }\n\n.fa-apple:before {\n content: \"\\f179\"; }\n\n.fa-apple-alt:before {\n content: \"\\f5d1\"; }\n\n.fa-apple-pay:before {\n content: \"\\f415\"; }\n\n.fa-archive:before {\n content: \"\\f187\"; }\n\n.fa-archway:before {\n content: \"\\f557\"; }\n\n.fa-arrow-alt-circle-down:before {\n content: \"\\f358\"; }\n\n.fa-arrow-alt-circle-left:before {\n content: \"\\f359\"; }\n\n.fa-arrow-alt-circle-right:before {\n content: \"\\f35a\"; }\n\n.fa-arrow-alt-circle-up:before {\n content: \"\\f35b\"; }\n\n.fa-arrow-circle-down:before {\n content: \"\\f0ab\"; }\n\n.fa-arrow-circle-left:before {\n content: \"\\f0a8\"; }\n\n.fa-arrow-circle-right:before {\n content: \"\\f0a9\"; }\n\n.fa-arrow-circle-up:before {\n content: \"\\f0aa\"; }\n\n.fa-arrow-down:before {\n content: \"\\f063\"; }\n\n.fa-arrow-left:before {\n content: \"\\f060\"; }\n\n.fa-arrow-right:before {\n content: \"\\f061\"; }\n\n.fa-arrow-up:before {\n content: \"\\f062\"; }\n\n.fa-arrows-alt:before {\n content: \"\\f0b2\"; }\n\n.fa-arrows-alt-h:before {\n content: \"\\f337\"; }\n\n.fa-arrows-alt-v:before {\n content: \"\\f338\"; }\n\n.fa-assistive-listening-systems:before {\n content: \"\\f2a2\"; }\n\n.fa-asterisk:before {\n content: \"\\f069\"; }\n\n.fa-asymmetrik:before {\n content: \"\\f372\"; }\n\n.fa-at:before {\n content: \"\\f1fa\"; }\n\n.fa-atlas:before {\n content: \"\\f558\"; }\n\n.fa-atom:before {\n content: \"\\f5d2\"; }\n\n.fa-audible:before {\n content: \"\\f373\"; }\n\n.fa-audio-description:before {\n content: \"\\f29e\"; }\n\n.fa-autoprefixer:before {\n content: \"\\f41c\"; }\n\n.fa-avianex:before {\n content: \"\\f374\"; }\n\n.fa-aviato:before {\n content: \"\\f421\"; }\n\n.fa-award:before {\n content: \"\\f559\"; }\n\n.fa-aws:before {\n content: \"\\f375\"; }\n\n.fa-backspace:before {\n content: \"\\f55a\"; }\n\n.fa-backward:before {\n content: \"\\f04a\"; }\n\n.fa-balance-scale:before {\n content: \"\\f24e\"; }\n\n.fa-ban:before {\n content: \"\\f05e\"; }\n\n.fa-band-aid:before {\n content: \"\\f462\"; }\n\n.fa-bandcamp:before {\n content: \"\\f2d5\"; }\n\n.fa-barcode:before {\n content: \"\\f02a\"; }\n\n.fa-bars:before {\n content: \"\\f0c9\"; }\n\n.fa-baseball-ball:before {\n content: \"\\f433\"; }\n\n.fa-basketball-ball:before {\n content: \"\\f434\"; }\n\n.fa-bath:before {\n content: \"\\f2cd\"; }\n\n.fa-battery-empty:before {\n content: \"\\f244\"; }\n\n.fa-battery-full:before {\n content: \"\\f240\"; }\n\n.fa-battery-half:before {\n content: \"\\f242\"; }\n\n.fa-battery-quarter:before {\n content: \"\\f243\"; }\n\n.fa-battery-three-quarters:before {\n content: \"\\f241\"; }\n\n.fa-bed:before {\n content: \"\\f236\"; }\n\n.fa-beer:before {\n content: \"\\f0fc\"; }\n\n.fa-behance:before {\n content: \"\\f1b4\"; }\n\n.fa-behance-square:before {\n content: \"\\f1b5\"; }\n\n.fa-bell:before {\n content: \"\\f0f3\"; }\n\n.fa-bell-slash:before {\n content: \"\\f1f6\"; }\n\n.fa-bezier-curve:before {\n content: \"\\f55b\"; }\n\n.fa-bible:before {\n content: \"\\f647\"; }\n\n.fa-bicycle:before {\n content: \"\\f206\"; }\n\n.fa-bimobject:before {\n content: \"\\f378\"; }\n\n.fa-binoculars:before {\n content: \"\\f1e5\"; }\n\n.fa-birthday-cake:before {\n content: \"\\f1fd\"; }\n\n.fa-bitbucket:before {\n content: \"\\f171\"; }\n\n.fa-bitcoin:before {\n content: \"\\f379\"; }\n\n.fa-bity:before {\n content: \"\\f37a\"; }\n\n.fa-black-tie:before {\n content: \"\\f27e\"; }\n\n.fa-blackberry:before {\n content: \"\\f37b\"; }\n\n.fa-blender:before {\n content: \"\\f517\"; }\n\n.fa-blender-phone:before {\n content: \"\\f6b6\"; }\n\n.fa-blind:before {\n content: \"\\f29d\"; }\n\n.fa-blogger:before {\n content: \"\\f37c\"; }\n\n.fa-blogger-b:before {\n content: \"\\f37d\"; }\n\n.fa-bluetooth:before {\n content: \"\\f293\"; }\n\n.fa-bluetooth-b:before {\n content: \"\\f294\"; }\n\n.fa-bold:before {\n content: \"\\f032\"; }\n\n.fa-bolt:before {\n content: \"\\f0e7\"; }\n\n.fa-bomb:before {\n content: \"\\f1e2\"; }\n\n.fa-bone:before {\n content: \"\\f5d7\"; }\n\n.fa-bong:before {\n content: \"\\f55c\"; }\n\n.fa-book:before {\n content: \"\\f02d\"; }\n\n.fa-book-dead:before {\n content: \"\\f6b7\"; }\n\n.fa-book-open:before {\n content: \"\\f518\"; }\n\n.fa-book-reader:before {\n content: \"\\f5da\"; }\n\n.fa-bookmark:before {\n content: \"\\f02e\"; }\n\n.fa-bowling-ball:before {\n content: \"\\f436\"; }\n\n.fa-box:before {\n content: \"\\f466\"; }\n\n.fa-box-open:before {\n content: \"\\f49e\"; }\n\n.fa-boxes:before {\n content: \"\\f468\"; }\n\n.fa-braille:before {\n content: \"\\f2a1\"; }\n\n.fa-brain:before {\n content: \"\\f5dc\"; }\n\n.fa-briefcase:before {\n content: \"\\f0b1\"; }\n\n.fa-briefcase-medical:before {\n content: \"\\f469\"; }\n\n.fa-broadcast-tower:before {\n content: \"\\f519\"; }\n\n.fa-broom:before {\n content: \"\\f51a\"; }\n\n.fa-brush:before {\n content: \"\\f55d\"; }\n\n.fa-btc:before {\n content: \"\\f15a\"; }\n\n.fa-bug:before {\n content: \"\\f188\"; }\n\n.fa-building:before {\n content: \"\\f1ad\"; }\n\n.fa-bullhorn:before {\n content: \"\\f0a1\"; }\n\n.fa-bullseye:before {\n content: \"\\f140\"; }\n\n.fa-burn:before {\n content: \"\\f46a\"; }\n\n.fa-buromobelexperte:before {\n content: \"\\f37f\"; }\n\n.fa-bus:before {\n content: \"\\f207\"; }\n\n.fa-bus-alt:before {\n content: \"\\f55e\"; }\n\n.fa-business-time:before {\n content: \"\\f64a\"; }\n\n.fa-buysellads:before {\n content: \"\\f20d\"; }\n\n.fa-calculator:before {\n content: \"\\f1ec\"; }\n\n.fa-calendar:before {\n content: \"\\f133\"; }\n\n.fa-calendar-alt:before {\n content: \"\\f073\"; }\n\n.fa-calendar-check:before {\n content: \"\\f274\"; }\n\n.fa-calendar-minus:before {\n content: \"\\f272\"; }\n\n.fa-calendar-plus:before {\n content: \"\\f271\"; }\n\n.fa-calendar-times:before {\n content: \"\\f273\"; }\n\n.fa-camera:before {\n content: \"\\f030\"; }\n\n.fa-camera-retro:before {\n content: \"\\f083\"; }\n\n.fa-campground:before {\n content: \"\\f6bb\"; }\n\n.fa-cannabis:before {\n content: \"\\f55f\"; }\n\n.fa-capsules:before {\n content: \"\\f46b\"; }\n\n.fa-car:before {\n content: \"\\f1b9\"; }\n\n.fa-car-alt:before {\n content: \"\\f5de\"; }\n\n.fa-car-battery:before {\n content: \"\\f5df\"; }\n\n.fa-car-crash:before {\n content: \"\\f5e1\"; }\n\n.fa-car-side:before {\n content: \"\\f5e4\"; }\n\n.fa-caret-down:before {\n content: \"\\f0d7\"; }\n\n.fa-caret-left:before {\n content: \"\\f0d9\"; }\n\n.fa-caret-right:before {\n content: \"\\f0da\"; }\n\n.fa-caret-square-down:before {\n content: \"\\f150\"; }\n\n.fa-caret-square-left:before {\n content: \"\\f191\"; }\n\n.fa-caret-square-right:before {\n content: \"\\f152\"; }\n\n.fa-caret-square-up:before {\n content: \"\\f151\"; }\n\n.fa-caret-up:before {\n content: \"\\f0d8\"; }\n\n.fa-cart-arrow-down:before {\n content: \"\\f218\"; }\n\n.fa-cart-plus:before {\n content: \"\\f217\"; }\n\n.fa-cat:before {\n content: \"\\f6be\"; }\n\n.fa-cc-amazon-pay:before {\n content: \"\\f42d\"; }\n\n.fa-cc-amex:before {\n content: \"\\f1f3\"; }\n\n.fa-cc-apple-pay:before {\n content: \"\\f416\"; }\n\n.fa-cc-diners-club:before {\n content: \"\\f24c\"; }\n\n.fa-cc-discover:before {\n content: \"\\f1f2\"; }\n\n.fa-cc-jcb:before {\n content: \"\\f24b\"; }\n\n.fa-cc-mastercard:before {\n content: \"\\f1f1\"; }\n\n.fa-cc-paypal:before {\n content: \"\\f1f4\"; }\n\n.fa-cc-stripe:before {\n content: \"\\f1f5\"; }\n\n.fa-cc-visa:before {\n content: \"\\f1f0\"; }\n\n.fa-centercode:before {\n content: \"\\f380\"; }\n\n.fa-certificate:before {\n content: \"\\f0a3\"; }\n\n.fa-chair:before {\n content: \"\\f6c0\"; }\n\n.fa-chalkboard:before {\n content: \"\\f51b\"; }\n\n.fa-chalkboard-teacher:before {\n content: \"\\f51c\"; }\n\n.fa-charging-station:before {\n content: \"\\f5e7\"; }\n\n.fa-chart-area:before {\n content: \"\\f1fe\"; }\n\n.fa-chart-bar:before {\n content: \"\\f080\"; }\n\n.fa-chart-line:before {\n content: \"\\f201\"; }\n\n.fa-chart-pie:before {\n content: \"\\f200\"; }\n\n.fa-check:before {\n content: \"\\f00c\"; }\n\n.fa-check-circle:before {\n content: \"\\f058\"; }\n\n.fa-check-double:before {\n content: \"\\f560\"; }\n\n.fa-check-square:before {\n content: \"\\f14a\"; }\n\n.fa-chess:before {\n content: \"\\f439\"; }\n\n.fa-chess-bishop:before {\n content: \"\\f43a\"; }\n\n.fa-chess-board:before {\n content: \"\\f43c\"; }\n\n.fa-chess-king:before {\n content: \"\\f43f\"; }\n\n.fa-chess-knight:before {\n content: \"\\f441\"; }\n\n.fa-chess-pawn:before {\n content: \"\\f443\"; }\n\n.fa-chess-queen:before {\n content: \"\\f445\"; }\n\n.fa-chess-rook:before {\n content: \"\\f447\"; }\n\n.fa-chevron-circle-down:before {\n content: \"\\f13a\"; }\n\n.fa-chevron-circle-left:before {\n content: \"\\f137\"; }\n\n.fa-chevron-circle-right:before {\n content: \"\\f138\"; }\n\n.fa-chevron-circle-up:before {\n content: \"\\f139\"; }\n\n.fa-chevron-down:before {\n content: \"\\f078\"; }\n\n.fa-chevron-left:before {\n content: \"\\f053\"; }\n\n.fa-chevron-right:before {\n content: \"\\f054\"; }\n\n.fa-chevron-up:before {\n content: \"\\f077\"; }\n\n.fa-child:before {\n content: \"\\f1ae\"; }\n\n.fa-chrome:before {\n content: \"\\f268\"; }\n\n.fa-church:before {\n content: \"\\f51d\"; }\n\n.fa-circle:before {\n content: \"\\f111\"; }\n\n.fa-circle-notch:before {\n content: \"\\f1ce\"; }\n\n.fa-city:before {\n content: \"\\f64f\"; }\n\n.fa-clipboard:before {\n content: \"\\f328\"; }\n\n.fa-clipboard-check:before {\n content: \"\\f46c\"; }\n\n.fa-clipboard-list:before {\n content: \"\\f46d\"; }\n\n.fa-clock:before {\n content: \"\\f017\"; }\n\n.fa-clone:before {\n content: \"\\f24d\"; }\n\n.fa-closed-captioning:before {\n content: \"\\f20a\"; }\n\n.fa-cloud:before {\n content: \"\\f0c2\"; }\n\n.fa-cloud-download-alt:before {\n content: \"\\f381\"; }\n\n.fa-cloud-meatball:before {\n content: \"\\f73b\"; }\n\n.fa-cloud-moon:before {\n content: \"\\f6c3\"; }\n\n.fa-cloud-moon-rain:before {\n content: \"\\f73c\"; }\n\n.fa-cloud-rain:before {\n content: \"\\f73d\"; }\n\n.fa-cloud-showers-heavy:before {\n content: \"\\f740\"; }\n\n.fa-cloud-sun:before {\n content: \"\\f6c4\"; }\n\n.fa-cloud-sun-rain:before {\n content: \"\\f743\"; }\n\n.fa-cloud-upload-alt:before {\n content: \"\\f382\"; }\n\n.fa-cloudscale:before {\n content: \"\\f383\"; }\n\n.fa-cloudsmith:before {\n content: \"\\f384\"; }\n\n.fa-cloudversify:before {\n content: \"\\f385\"; }\n\n.fa-cocktail:before {\n content: \"\\f561\"; }\n\n.fa-code:before {\n content: \"\\f121\"; }\n\n.fa-code-branch:before {\n content: \"\\f126\"; }\n\n.fa-codepen:before {\n content: \"\\f1cb\"; }\n\n.fa-codiepie:before {\n content: \"\\f284\"; }\n\n.fa-coffee:before {\n content: \"\\f0f4\"; }\n\n.fa-cog:before {\n content: \"\\f013\"; }\n\n.fa-cogs:before {\n content: \"\\f085\"; }\n\n.fa-coins:before {\n content: \"\\f51e\"; }\n\n.fa-columns:before {\n content: \"\\f0db\"; }\n\n.fa-comment:before {\n content: \"\\f075\"; }\n\n.fa-comment-alt:before {\n content: \"\\f27a\"; }\n\n.fa-comment-dollar:before {\n content: \"\\f651\"; }\n\n.fa-comment-dots:before {\n content: \"\\f4ad\"; }\n\n.fa-comment-slash:before {\n content: \"\\f4b3\"; }\n\n.fa-comments:before {\n content: \"\\f086\"; }\n\n.fa-comments-dollar:before {\n content: \"\\f653\"; }\n\n.fa-compact-disc:before {\n content: \"\\f51f\"; }\n\n.fa-compass:before {\n content: \"\\f14e\"; }\n\n.fa-compress:before {\n content: \"\\f066\"; }\n\n.fa-compress-arrows-alt:before {\n content: \"\\f78c\"; }\n\n.fa-concierge-bell:before {\n content: \"\\f562\"; }\n\n.fa-connectdevelop:before {\n content: \"\\f20e\"; }\n\n.fa-contao:before {\n content: \"\\f26d\"; }\n\n.fa-cookie:before {\n content: \"\\f563\"; }\n\n.fa-cookie-bite:before {\n content: \"\\f564\"; }\n\n.fa-copy:before {\n content: \"\\f0c5\"; }\n\n.fa-copyright:before {\n content: \"\\f1f9\"; }\n\n.fa-couch:before {\n content: \"\\f4b8\"; }\n\n.fa-cpanel:before {\n content: \"\\f388\"; }\n\n.fa-creative-commons:before {\n content: \"\\f25e\"; }\n\n.fa-creative-commons-by:before {\n content: \"\\f4e7\"; }\n\n.fa-creative-commons-nc:before {\n content: \"\\f4e8\"; }\n\n.fa-creative-commons-nc-eu:before {\n content: \"\\f4e9\"; }\n\n.fa-creative-commons-nc-jp:before {\n content: \"\\f4ea\"; }\n\n.fa-creative-commons-nd:before {\n content: \"\\f4eb\"; }\n\n.fa-creative-commons-pd:before {\n content: \"\\f4ec\"; }\n\n.fa-creative-commons-pd-alt:before {\n content: \"\\f4ed\"; }\n\n.fa-creative-commons-remix:before {\n content: \"\\f4ee\"; }\n\n.fa-creative-commons-sa:before {\n content: \"\\f4ef\"; }\n\n.fa-creative-commons-sampling:before {\n content: \"\\f4f0\"; }\n\n.fa-creative-commons-sampling-plus:before {\n content: \"\\f4f1\"; }\n\n.fa-creative-commons-share:before {\n content: \"\\f4f2\"; }\n\n.fa-creative-commons-zero:before {\n content: \"\\f4f3\"; }\n\n.fa-credit-card:before {\n content: \"\\f09d\"; }\n\n.fa-critical-role:before {\n content: \"\\f6c9\"; }\n\n.fa-crop:before {\n content: \"\\f125\"; }\n\n.fa-crop-alt:before {\n content: \"\\f565\"; }\n\n.fa-cross:before {\n content: \"\\f654\"; }\n\n.fa-crosshairs:before {\n content: \"\\f05b\"; }\n\n.fa-crow:before {\n content: \"\\f520\"; }\n\n.fa-crown:before {\n content: \"\\f521\"; }\n\n.fa-css3:before {\n content: \"\\f13c\"; }\n\n.fa-css3-alt:before {\n content: \"\\f38b\"; }\n\n.fa-cube:before {\n content: \"\\f1b2\"; }\n\n.fa-cubes:before {\n content: \"\\f1b3\"; }\n\n.fa-cut:before {\n content: \"\\f0c4\"; }\n\n.fa-cuttlefish:before {\n content: \"\\f38c\"; }\n\n.fa-d-and-d:before {\n content: \"\\f38d\"; }\n\n.fa-d-and-d-beyond:before {\n content: \"\\f6ca\"; }\n\n.fa-dashcube:before {\n content: \"\\f210\"; }\n\n.fa-database:before {\n content: \"\\f1c0\"; }\n\n.fa-deaf:before {\n content: \"\\f2a4\"; }\n\n.fa-delicious:before {\n content: \"\\f1a5\"; }\n\n.fa-democrat:before {\n content: \"\\f747\"; }\n\n.fa-deploydog:before {\n content: \"\\f38e\"; }\n\n.fa-deskpro:before {\n content: \"\\f38f\"; }\n\n.fa-desktop:before {\n content: \"\\f108\"; }\n\n.fa-dev:before {\n content: \"\\f6cc\"; }\n\n.fa-deviantart:before {\n content: \"\\f1bd\"; }\n\n.fa-dharmachakra:before {\n content: \"\\f655\"; }\n\n.fa-diagnoses:before {\n content: \"\\f470\"; }\n\n.fa-dice:before {\n content: \"\\f522\"; }\n\n.fa-dice-d20:before {\n content: \"\\f6cf\"; }\n\n.fa-dice-d6:before {\n content: \"\\f6d1\"; }\n\n.fa-dice-five:before {\n content: \"\\f523\"; }\n\n.fa-dice-four:before {\n content: \"\\f524\"; }\n\n.fa-dice-one:before {\n content: \"\\f525\"; }\n\n.fa-dice-six:before {\n content: \"\\f526\"; }\n\n.fa-dice-three:before {\n content: \"\\f527\"; }\n\n.fa-dice-two:before {\n content: \"\\f528\"; }\n\n.fa-digg:before {\n content: \"\\f1a6\"; }\n\n.fa-digital-ocean:before {\n content: \"\\f391\"; }\n\n.fa-digital-tachograph:before {\n content: \"\\f566\"; }\n\n.fa-directions:before {\n content: \"\\f5eb\"; }\n\n.fa-discord:before {\n content: \"\\f392\"; }\n\n.fa-discourse:before {\n content: \"\\f393\"; }\n\n.fa-divide:before {\n content: \"\\f529\"; }\n\n.fa-dizzy:before {\n content: \"\\f567\"; }\n\n.fa-dna:before {\n content: \"\\f471\"; }\n\n.fa-dochub:before {\n content: \"\\f394\"; }\n\n.fa-docker:before {\n content: \"\\f395\"; }\n\n.fa-dog:before {\n content: \"\\f6d3\"; }\n\n.fa-dollar-sign:before {\n content: \"\\f155\"; }\n\n.fa-dolly:before {\n content: \"\\f472\"; }\n\n.fa-dolly-flatbed:before {\n content: \"\\f474\"; }\n\n.fa-donate:before {\n content: \"\\f4b9\"; }\n\n.fa-door-closed:before {\n content: \"\\f52a\"; }\n\n.fa-door-open:before {\n content: \"\\f52b\"; }\n\n.fa-dot-circle:before {\n content: \"\\f192\"; }\n\n.fa-dove:before {\n content: \"\\f4ba\"; }\n\n.fa-download:before {\n content: \"\\f019\"; }\n\n.fa-draft2digital:before {\n content: \"\\f396\"; }\n\n.fa-drafting-compass:before {\n content: \"\\f568\"; }\n\n.fa-dragon:before {\n content: \"\\f6d5\"; }\n\n.fa-draw-polygon:before {\n content: \"\\f5ee\"; }\n\n.fa-dribbble:before {\n content: \"\\f17d\"; }\n\n.fa-dribbble-square:before {\n content: \"\\f397\"; }\n\n.fa-dropbox:before {\n content: \"\\f16b\"; }\n\n.fa-drum:before {\n content: \"\\f569\"; }\n\n.fa-drum-steelpan:before {\n content: \"\\f56a\"; }\n\n.fa-drumstick-bite:before {\n content: \"\\f6d7\"; }\n\n.fa-drupal:before {\n content: \"\\f1a9\"; }\n\n.fa-dumbbell:before {\n content: \"\\f44b\"; }\n\n.fa-dungeon:before {\n content: \"\\f6d9\"; }\n\n.fa-dyalog:before {\n content: \"\\f399\"; }\n\n.fa-earlybirds:before {\n content: \"\\f39a\"; }\n\n.fa-ebay:before {\n content: \"\\f4f4\"; }\n\n.fa-edge:before {\n content: \"\\f282\"; }\n\n.fa-edit:before {\n content: \"\\f044\"; }\n\n.fa-eject:before {\n content: \"\\f052\"; }\n\n.fa-elementor:before {\n content: \"\\f430\"; }\n\n.fa-ellipsis-h:before {\n content: \"\\f141\"; }\n\n.fa-ellipsis-v:before {\n content: \"\\f142\"; }\n\n.fa-ello:before {\n content: \"\\f5f1\"; }\n\n.fa-ember:before {\n content: \"\\f423\"; }\n\n.fa-empire:before {\n content: \"\\f1d1\"; }\n\n.fa-envelope:before {\n content: \"\\f0e0\"; }\n\n.fa-envelope-open:before {\n content: \"\\f2b6\"; }\n\n.fa-envelope-open-text:before {\n content: \"\\f658\"; }\n\n.fa-envelope-square:before {\n content: \"\\f199\"; }\n\n.fa-envira:before {\n content: \"\\f299\"; }\n\n.fa-equals:before {\n content: \"\\f52c\"; }\n\n.fa-eraser:before {\n content: \"\\f12d\"; }\n\n.fa-erlang:before {\n content: \"\\f39d\"; }\n\n.fa-ethereum:before {\n content: \"\\f42e\"; }\n\n.fa-etsy:before {\n content: \"\\f2d7\"; }\n\n.fa-euro-sign:before {\n content: \"\\f153\"; }\n\n.fa-exchange-alt:before {\n content: \"\\f362\"; }\n\n.fa-exclamation:before {\n content: \"\\f12a\"; }\n\n.fa-exclamation-circle:before {\n content: \"\\f06a\"; }\n\n.fa-exclamation-triangle:before {\n content: \"\\f071\"; }\n\n.fa-expand:before {\n content: \"\\f065\"; }\n\n.fa-expand-arrows-alt:before {\n content: \"\\f31e\"; }\n\n.fa-expeditedssl:before {\n content: \"\\f23e\"; }\n\n.fa-external-link-alt:before {\n content: \"\\f35d\"; }\n\n.fa-external-link-square-alt:before {\n content: \"\\f360\"; }\n\n.fa-eye:before {\n content: \"\\f06e\"; }\n\n.fa-eye-dropper:before {\n content: \"\\f1fb\"; }\n\n.fa-eye-slash:before {\n content: \"\\f070\"; }\n\n.fa-facebook:before {\n content: \"\\f09a\"; }\n\n.fa-facebook-f:before {\n content: \"\\f39e\"; }\n\n.fa-facebook-messenger:before {\n content: \"\\f39f\"; }\n\n.fa-facebook-square:before {\n content: \"\\f082\"; }\n\n.fa-fantasy-flight-games:before {\n content: \"\\f6dc\"; }\n\n.fa-fast-backward:before {\n content: \"\\f049\"; }\n\n.fa-fast-forward:before {\n content: \"\\f050\"; }\n\n.fa-fax:before {\n content: \"\\f1ac\"; }\n\n.fa-feather:before {\n content: \"\\f52d\"; }\n\n.fa-feather-alt:before {\n content: \"\\f56b\"; }\n\n.fa-female:before {\n content: \"\\f182\"; }\n\n.fa-fighter-jet:before {\n content: \"\\f0fb\"; }\n\n.fa-file:before {\n content: \"\\f15b\"; }\n\n.fa-file-alt:before {\n content: \"\\f15c\"; }\n\n.fa-file-archive:before {\n content: \"\\f1c6\"; }\n\n.fa-file-audio:before {\n content: \"\\f1c7\"; }\n\n.fa-file-code:before {\n content: \"\\f1c9\"; }\n\n.fa-file-contract:before {\n content: \"\\f56c\"; }\n\n.fa-file-csv:before {\n content: \"\\f6dd\"; }\n\n.fa-file-download:before {\n content: \"\\f56d\"; }\n\n.fa-file-excel:before {\n content: \"\\f1c3\"; }\n\n.fa-file-export:before {\n content: \"\\f56e\"; }\n\n.fa-file-image:before {\n content: \"\\f1c5\"; }\n\n.fa-file-import:before {\n content: \"\\f56f\"; }\n\n.fa-file-invoice:before {\n content: \"\\f570\"; }\n\n.fa-file-invoice-dollar:before {\n content: \"\\f571\"; }\n\n.fa-file-medical:before {\n content: \"\\f477\"; }\n\n.fa-file-medical-alt:before {\n content: \"\\f478\"; }\n\n.fa-file-pdf:before {\n content: \"\\f1c1\"; }\n\n.fa-file-powerpoint:before {\n content: \"\\f1c4\"; }\n\n.fa-file-prescription:before {\n content: \"\\f572\"; }\n\n.fa-file-signature:before {\n content: \"\\f573\"; }\n\n.fa-file-upload:before {\n content: \"\\f574\"; }\n\n.fa-file-video:before {\n content: \"\\f1c8\"; }\n\n.fa-file-word:before {\n content: \"\\f1c2\"; }\n\n.fa-fill:before {\n content: \"\\f575\"; }\n\n.fa-fill-drip:before {\n content: \"\\f576\"; }\n\n.fa-film:before {\n content: \"\\f008\"; }\n\n.fa-filter:before {\n content: \"\\f0b0\"; }\n\n.fa-fingerprint:before {\n content: \"\\f577\"; }\n\n.fa-fire:before {\n content: \"\\f06d\"; }\n\n.fa-fire-extinguisher:before {\n content: \"\\f134\"; }\n\n.fa-firefox:before {\n content: \"\\f269\"; }\n\n.fa-first-aid:before {\n content: \"\\f479\"; }\n\n.fa-first-order:before {\n content: \"\\f2b0\"; }\n\n.fa-first-order-alt:before {\n content: \"\\f50a\"; }\n\n.fa-firstdraft:before {\n content: \"\\f3a1\"; }\n\n.fa-fish:before {\n content: \"\\f578\"; }\n\n.fa-fist-raised:before {\n content: \"\\f6de\"; }\n\n.fa-flag:before {\n content: \"\\f024\"; }\n\n.fa-flag-checkered:before {\n content: \"\\f11e\"; }\n\n.fa-flag-usa:before {\n content: \"\\f74d\"; }\n\n.fa-flask:before {\n content: \"\\f0c3\"; }\n\n.fa-flickr:before {\n content: \"\\f16e\"; }\n\n.fa-flipboard:before {\n content: \"\\f44d\"; }\n\n.fa-flushed:before {\n content: \"\\f579\"; }\n\n.fa-fly:before {\n content: \"\\f417\"; }\n\n.fa-folder:before {\n content: \"\\f07b\"; }\n\n.fa-folder-minus:before {\n content: \"\\f65d\"; }\n\n.fa-folder-open:before {\n content: \"\\f07c\"; }\n\n.fa-folder-plus:before {\n content: \"\\f65e\"; }\n\n.fa-font:before {\n content: \"\\f031\"; }\n\n.fa-font-awesome:before {\n content: \"\\f2b4\"; }\n\n.fa-font-awesome-alt:before {\n content: \"\\f35c\"; }\n\n.fa-font-awesome-flag:before {\n content: \"\\f425\"; }\n\n.fa-font-awesome-logo-full:before {\n content: \"\\f4e6\"; }\n\n.fa-fonticons:before {\n content: \"\\f280\"; }\n\n.fa-fonticons-fi:before {\n content: \"\\f3a2\"; }\n\n.fa-football-ball:before {\n content: \"\\f44e\"; }\n\n.fa-fort-awesome:before {\n content: \"\\f286\"; }\n\n.fa-fort-awesome-alt:before {\n content: \"\\f3a3\"; }\n\n.fa-forumbee:before {\n content: \"\\f211\"; }\n\n.fa-forward:before {\n content: \"\\f04e\"; }\n\n.fa-foursquare:before {\n content: \"\\f180\"; }\n\n.fa-free-code-camp:before {\n content: \"\\f2c5\"; }\n\n.fa-freebsd:before {\n content: \"\\f3a4\"; }\n\n.fa-frog:before {\n content: \"\\f52e\"; }\n\n.fa-frown:before {\n content: \"\\f119\"; }\n\n.fa-frown-open:before {\n content: \"\\f57a\"; }\n\n.fa-fulcrum:before {\n content: \"\\f50b\"; }\n\n.fa-funnel-dollar:before {\n content: \"\\f662\"; }\n\n.fa-futbol:before {\n content: \"\\f1e3\"; }\n\n.fa-galactic-republic:before {\n content: \"\\f50c\"; }\n\n.fa-galactic-senate:before {\n content: \"\\f50d\"; }\n\n.fa-gamepad:before {\n content: \"\\f11b\"; }\n\n.fa-gas-pump:before {\n content: \"\\f52f\"; }\n\n.fa-gavel:before {\n content: \"\\f0e3\"; }\n\n.fa-gem:before {\n content: \"\\f3a5\"; }\n\n.fa-genderless:before {\n content: \"\\f22d\"; }\n\n.fa-get-pocket:before {\n content: \"\\f265\"; }\n\n.fa-gg:before {\n content: \"\\f260\"; }\n\n.fa-gg-circle:before {\n content: \"\\f261\"; }\n\n.fa-ghost:before {\n content: \"\\f6e2\"; }\n\n.fa-gift:before {\n content: \"\\f06b\"; }\n\n.fa-git:before {\n content: \"\\f1d3\"; }\n\n.fa-git-square:before {\n content: \"\\f1d2\"; }\n\n.fa-github:before {\n content: \"\\f09b\"; }\n\n.fa-github-alt:before {\n content: \"\\f113\"; }\n\n.fa-github-square:before {\n content: \"\\f092\"; }\n\n.fa-gitkraken:before {\n content: \"\\f3a6\"; }\n\n.fa-gitlab:before {\n content: \"\\f296\"; }\n\n.fa-gitter:before {\n content: \"\\f426\"; }\n\n.fa-glass-martini:before {\n content: \"\\f000\"; }\n\n.fa-glass-martini-alt:before {\n content: \"\\f57b\"; }\n\n.fa-glasses:before {\n content: \"\\f530\"; }\n\n.fa-glide:before {\n content: \"\\f2a5\"; }\n\n.fa-glide-g:before {\n content: \"\\f2a6\"; }\n\n.fa-globe:before {\n content: \"\\f0ac\"; }\n\n.fa-globe-africa:before {\n content: \"\\f57c\"; }\n\n.fa-globe-americas:before {\n content: \"\\f57d\"; }\n\n.fa-globe-asia:before {\n content: \"\\f57e\"; }\n\n.fa-gofore:before {\n content: \"\\f3a7\"; }\n\n.fa-golf-ball:before {\n content: \"\\f450\"; }\n\n.fa-goodreads:before {\n content: \"\\f3a8\"; }\n\n.fa-goodreads-g:before {\n content: \"\\f3a9\"; }\n\n.fa-google:before {\n content: \"\\f1a0\"; }\n\n.fa-google-drive:before {\n content: \"\\f3aa\"; }\n\n.fa-google-play:before {\n content: \"\\f3ab\"; }\n\n.fa-google-plus:before {\n content: \"\\f2b3\"; }\n\n.fa-google-plus-g:before {\n content: \"\\f0d5\"; }\n\n.fa-google-plus-square:before {\n content: \"\\f0d4\"; }\n\n.fa-google-wallet:before {\n content: \"\\f1ee\"; }\n\n.fa-gopuram:before {\n content: \"\\f664\"; }\n\n.fa-graduation-cap:before {\n content: \"\\f19d\"; }\n\n.fa-gratipay:before {\n content: \"\\f184\"; }\n\n.fa-grav:before {\n content: \"\\f2d6\"; }\n\n.fa-greater-than:before {\n content: \"\\f531\"; }\n\n.fa-greater-than-equal:before {\n content: \"\\f532\"; }\n\n.fa-grimace:before {\n content: \"\\f57f\"; }\n\n.fa-grin:before {\n content: \"\\f580\"; }\n\n.fa-grin-alt:before {\n content: \"\\f581\"; }\n\n.fa-grin-beam:before {\n content: \"\\f582\"; }\n\n.fa-grin-beam-sweat:before {\n content: \"\\f583\"; }\n\n.fa-grin-hearts:before {\n content: \"\\f584\"; }\n\n.fa-grin-squint:before {\n content: \"\\f585\"; }\n\n.fa-grin-squint-tears:before {\n content: \"\\f586\"; }\n\n.fa-grin-stars:before {\n content: \"\\f587\"; }\n\n.fa-grin-tears:before {\n content: \"\\f588\"; }\n\n.fa-grin-tongue:before {\n content: \"\\f589\"; }\n\n.fa-grin-tongue-squint:before {\n content: \"\\f58a\"; }\n\n.fa-grin-tongue-wink:before {\n content: \"\\f58b\"; }\n\n.fa-grin-wink:before {\n content: \"\\f58c\"; }\n\n.fa-grip-horizontal:before {\n content: \"\\f58d\"; }\n\n.fa-grip-vertical:before {\n content: \"\\f58e\"; }\n\n.fa-gripfire:before {\n content: \"\\f3ac\"; }\n\n.fa-grunt:before {\n content: \"\\f3ad\"; }\n\n.fa-gulp:before {\n content: \"\\f3ae\"; }\n\n.fa-h-square:before {\n content: \"\\f0fd\"; }\n\n.fa-hacker-news:before {\n content: \"\\f1d4\"; }\n\n.fa-hacker-news-square:before {\n content: \"\\f3af\"; }\n\n.fa-hackerrank:before {\n content: \"\\f5f7\"; }\n\n.fa-hammer:before {\n content: \"\\f6e3\"; }\n\n.fa-hamsa:before {\n content: \"\\f665\"; }\n\n.fa-hand-holding:before {\n content: \"\\f4bd\"; }\n\n.fa-hand-holding-heart:before {\n content: \"\\f4be\"; }\n\n.fa-hand-holding-usd:before {\n content: \"\\f4c0\"; }\n\n.fa-hand-lizard:before {\n content: \"\\f258\"; }\n\n.fa-hand-paper:before {\n content: \"\\f256\"; }\n\n.fa-hand-peace:before {\n content: \"\\f25b\"; }\n\n.fa-hand-point-down:before {\n content: \"\\f0a7\"; }\n\n.fa-hand-point-left:before {\n content: \"\\f0a5\"; }\n\n.fa-hand-point-right:before {\n content: \"\\f0a4\"; }\n\n.fa-hand-point-up:before {\n content: \"\\f0a6\"; }\n\n.fa-hand-pointer:before {\n content: \"\\f25a\"; }\n\n.fa-hand-rock:before {\n content: \"\\f255\"; }\n\n.fa-hand-scissors:before {\n content: \"\\f257\"; }\n\n.fa-hand-spock:before {\n content: \"\\f259\"; }\n\n.fa-hands:before {\n content: \"\\f4c2\"; }\n\n.fa-hands-helping:before {\n content: \"\\f4c4\"; }\n\n.fa-handshake:before {\n content: \"\\f2b5\"; }\n\n.fa-hanukiah:before {\n content: \"\\f6e6\"; }\n\n.fa-hashtag:before {\n content: \"\\f292\"; }\n\n.fa-hat-wizard:before {\n content: \"\\f6e8\"; }\n\n.fa-haykal:before {\n content: \"\\f666\"; }\n\n.fa-hdd:before {\n content: \"\\f0a0\"; }\n\n.fa-heading:before {\n content: \"\\f1dc\"; }\n\n.fa-headphones:before {\n content: \"\\f025\"; }\n\n.fa-headphones-alt:before {\n content: \"\\f58f\"; }\n\n.fa-headset:before {\n content: \"\\f590\"; }\n\n.fa-heart:before {\n content: \"\\f004\"; }\n\n.fa-heartbeat:before {\n content: \"\\f21e\"; }\n\n.fa-helicopter:before {\n content: \"\\f533\"; }\n\n.fa-highlighter:before {\n content: \"\\f591\"; }\n\n.fa-hiking:before {\n content: \"\\f6ec\"; }\n\n.fa-hippo:before {\n content: \"\\f6ed\"; }\n\n.fa-hips:before {\n content: \"\\f452\"; }\n\n.fa-hire-a-helper:before {\n content: \"\\f3b0\"; }\n\n.fa-history:before {\n content: \"\\f1da\"; }\n\n.fa-hockey-puck:before {\n content: \"\\f453\"; }\n\n.fa-home:before {\n content: \"\\f015\"; }\n\n.fa-hooli:before {\n content: \"\\f427\"; }\n\n.fa-hornbill:before {\n content: \"\\f592\"; }\n\n.fa-horse:before {\n content: \"\\f6f0\"; }\n\n.fa-hospital:before {\n content: \"\\f0f8\"; }\n\n.fa-hospital-alt:before {\n content: \"\\f47d\"; }\n\n.fa-hospital-symbol:before {\n content: \"\\f47e\"; }\n\n.fa-hot-tub:before {\n content: \"\\f593\"; }\n\n.fa-hotel:before {\n content: \"\\f594\"; }\n\n.fa-hotjar:before {\n content: \"\\f3b1\"; }\n\n.fa-hourglass:before {\n content: \"\\f254\"; }\n\n.fa-hourglass-end:before {\n content: \"\\f253\"; }\n\n.fa-hourglass-half:before {\n content: \"\\f252\"; }\n\n.fa-hourglass-start:before {\n content: \"\\f251\"; }\n\n.fa-house-damage:before {\n content: \"\\f6f1\"; }\n\n.fa-houzz:before {\n content: \"\\f27c\"; }\n\n.fa-hryvnia:before {\n content: \"\\f6f2\"; }\n\n.fa-html5:before {\n content: \"\\f13b\"; }\n\n.fa-hubspot:before {\n content: \"\\f3b2\"; }\n\n.fa-i-cursor:before {\n content: \"\\f246\"; }\n\n.fa-id-badge:before {\n content: \"\\f2c1\"; }\n\n.fa-id-card:before {\n content: \"\\f2c2\"; }\n\n.fa-id-card-alt:before {\n content: \"\\f47f\"; }\n\n.fa-image:before {\n content: \"\\f03e\"; }\n\n.fa-images:before {\n content: \"\\f302\"; }\n\n.fa-imdb:before {\n content: \"\\f2d8\"; }\n\n.fa-inbox:before {\n content: \"\\f01c\"; }\n\n.fa-indent:before {\n content: \"\\f03c\"; }\n\n.fa-industry:before {\n content: \"\\f275\"; }\n\n.fa-infinity:before {\n content: \"\\f534\"; }\n\n.fa-info:before {\n content: \"\\f129\"; }\n\n.fa-info-circle:before {\n content: \"\\f05a\"; }\n\n.fa-instagram:before {\n content: \"\\f16d\"; }\n\n.fa-internet-explorer:before {\n content: \"\\f26b\"; }\n\n.fa-ioxhost:before {\n content: \"\\f208\"; }\n\n.fa-italic:before {\n content: \"\\f033\"; }\n\n.fa-itunes:before {\n content: \"\\f3b4\"; }\n\n.fa-itunes-note:before {\n content: \"\\f3b5\"; }\n\n.fa-java:before {\n content: \"\\f4e4\"; }\n\n.fa-jedi:before {\n content: \"\\f669\"; }\n\n.fa-jedi-order:before {\n content: \"\\f50e\"; }\n\n.fa-jenkins:before {\n content: \"\\f3b6\"; }\n\n.fa-joget:before {\n content: \"\\f3b7\"; }\n\n.fa-joint:before {\n content: \"\\f595\"; }\n\n.fa-joomla:before {\n content: \"\\f1aa\"; }\n\n.fa-journal-whills:before {\n content: \"\\f66a\"; }\n\n.fa-js:before {\n content: \"\\f3b8\"; }\n\n.fa-js-square:before {\n content: \"\\f3b9\"; }\n\n.fa-jsfiddle:before {\n content: \"\\f1cc\"; }\n\n.fa-kaaba:before {\n content: \"\\f66b\"; }\n\n.fa-kaggle:before {\n content: \"\\f5fa\"; }\n\n.fa-key:before {\n content: \"\\f084\"; }\n\n.fa-keybase:before {\n content: \"\\f4f5\"; }\n\n.fa-keyboard:before {\n content: \"\\f11c\"; }\n\n.fa-keycdn:before {\n content: \"\\f3ba\"; }\n\n.fa-khanda:before {\n content: \"\\f66d\"; }\n\n.fa-kickstarter:before {\n content: \"\\f3bb\"; }\n\n.fa-kickstarter-k:before {\n content: \"\\f3bc\"; }\n\n.fa-kiss:before {\n content: \"\\f596\"; }\n\n.fa-kiss-beam:before {\n content: \"\\f597\"; }\n\n.fa-kiss-wink-heart:before {\n content: \"\\f598\"; }\n\n.fa-kiwi-bird:before {\n content: \"\\f535\"; }\n\n.fa-korvue:before {\n content: \"\\f42f\"; }\n\n.fa-landmark:before {\n content: \"\\f66f\"; }\n\n.fa-language:before {\n content: \"\\f1ab\"; }\n\n.fa-laptop:before {\n content: \"\\f109\"; }\n\n.fa-laptop-code:before {\n content: \"\\f5fc\"; }\n\n.fa-laravel:before {\n content: \"\\f3bd\"; }\n\n.fa-lastfm:before {\n content: \"\\f202\"; }\n\n.fa-lastfm-square:before {\n content: \"\\f203\"; }\n\n.fa-laugh:before {\n content: \"\\f599\"; }\n\n.fa-laugh-beam:before {\n content: \"\\f59a\"; }\n\n.fa-laugh-squint:before {\n content: \"\\f59b\"; }\n\n.fa-laugh-wink:before {\n content: \"\\f59c\"; }\n\n.fa-layer-group:before {\n content: \"\\f5fd\"; }\n\n.fa-leaf:before {\n content: \"\\f06c\"; }\n\n.fa-leanpub:before {\n content: \"\\f212\"; }\n\n.fa-lemon:before {\n content: \"\\f094\"; }\n\n.fa-less:before {\n content: \"\\f41d\"; }\n\n.fa-less-than:before {\n content: \"\\f536\"; }\n\n.fa-less-than-equal:before {\n content: \"\\f537\"; }\n\n.fa-level-down-alt:before {\n content: \"\\f3be\"; }\n\n.fa-level-up-alt:before {\n content: \"\\f3bf\"; }\n\n.fa-life-ring:before {\n content: \"\\f1cd\"; }\n\n.fa-lightbulb:before {\n content: \"\\f0eb\"; }\n\n.fa-line:before {\n content: \"\\f3c0\"; }\n\n.fa-link:before {\n content: \"\\f0c1\"; }\n\n.fa-linkedin:before {\n content: \"\\f08c\"; }\n\n.fa-linkedin-in:before {\n content: \"\\f0e1\"; }\n\n.fa-linode:before {\n content: \"\\f2b8\"; }\n\n.fa-linux:before {\n content: \"\\f17c\"; }\n\n.fa-lira-sign:before {\n content: \"\\f195\"; }\n\n.fa-list:before {\n content: \"\\f03a\"; }\n\n.fa-list-alt:before {\n content: \"\\f022\"; }\n\n.fa-list-ol:before {\n content: \"\\f0cb\"; }\n\n.fa-list-ul:before {\n content: \"\\f0ca\"; }\n\n.fa-location-arrow:before {\n content: \"\\f124\"; }\n\n.fa-lock:before {\n content: \"\\f023\"; }\n\n.fa-lock-open:before {\n content: \"\\f3c1\"; }\n\n.fa-long-arrow-alt-down:before {\n content: \"\\f309\"; }\n\n.fa-long-arrow-alt-left:before {\n content: \"\\f30a\"; }\n\n.fa-long-arrow-alt-right:before {\n content: \"\\f30b\"; }\n\n.fa-long-arrow-alt-up:before {\n content: \"\\f30c\"; }\n\n.fa-low-vision:before {\n content: \"\\f2a8\"; }\n\n.fa-luggage-cart:before {\n content: \"\\f59d\"; }\n\n.fa-lyft:before {\n content: \"\\f3c3\"; }\n\n.fa-magento:before {\n content: \"\\f3c4\"; }\n\n.fa-magic:before {\n content: \"\\f0d0\"; }\n\n.fa-magnet:before {\n content: \"\\f076\"; }\n\n.fa-mail-bulk:before {\n content: \"\\f674\"; }\n\n.fa-mailchimp:before {\n content: \"\\f59e\"; }\n\n.fa-male:before {\n content: \"\\f183\"; }\n\n.fa-mandalorian:before {\n content: \"\\f50f\"; }\n\n.fa-map:before {\n content: \"\\f279\"; }\n\n.fa-map-marked:before {\n content: \"\\f59f\"; }\n\n.fa-map-marked-alt:before {\n content: \"\\f5a0\"; }\n\n.fa-map-marker:before {\n content: \"\\f041\"; }\n\n.fa-map-marker-alt:before {\n content: \"\\f3c5\"; }\n\n.fa-map-pin:before {\n content: \"\\f276\"; }\n\n.fa-map-signs:before {\n content: \"\\f277\"; }\n\n.fa-markdown:before {\n content: \"\\f60f\"; }\n\n.fa-marker:before {\n content: \"\\f5a1\"; }\n\n.fa-mars:before {\n content: \"\\f222\"; }\n\n.fa-mars-double:before {\n content: \"\\f227\"; }\n\n.fa-mars-stroke:before {\n content: \"\\f229\"; }\n\n.fa-mars-stroke-h:before {\n content: \"\\f22b\"; }\n\n.fa-mars-stroke-v:before {\n content: \"\\f22a\"; }\n\n.fa-mask:before {\n content: \"\\f6fa\"; }\n\n.fa-mastodon:before {\n content: \"\\f4f6\"; }\n\n.fa-maxcdn:before {\n content: \"\\f136\"; }\n\n.fa-medal:before {\n content: \"\\f5a2\"; }\n\n.fa-medapps:before {\n content: \"\\f3c6\"; }\n\n.fa-medium:before {\n content: \"\\f23a\"; }\n\n.fa-medium-m:before {\n content: \"\\f3c7\"; }\n\n.fa-medkit:before {\n content: \"\\f0fa\"; }\n\n.fa-medrt:before {\n content: \"\\f3c8\"; }\n\n.fa-meetup:before {\n content: \"\\f2e0\"; }\n\n.fa-megaport:before {\n content: \"\\f5a3\"; }\n\n.fa-meh:before {\n content: \"\\f11a\"; }\n\n.fa-meh-blank:before {\n content: \"\\f5a4\"; }\n\n.fa-meh-rolling-eyes:before {\n content: \"\\f5a5\"; }\n\n.fa-memory:before {\n content: \"\\f538\"; }\n\n.fa-menorah:before {\n content: \"\\f676\"; }\n\n.fa-mercury:before {\n content: \"\\f223\"; }\n\n.fa-meteor:before {\n content: \"\\f753\"; }\n\n.fa-microchip:before {\n content: \"\\f2db\"; }\n\n.fa-microphone:before {\n content: \"\\f130\"; }\n\n.fa-microphone-alt:before {\n content: \"\\f3c9\"; }\n\n.fa-microphone-alt-slash:before {\n content: \"\\f539\"; }\n\n.fa-microphone-slash:before {\n content: \"\\f131\"; }\n\n.fa-microscope:before {\n content: \"\\f610\"; }\n\n.fa-microsoft:before {\n content: \"\\f3ca\"; }\n\n.fa-minus:before {\n content: \"\\f068\"; }\n\n.fa-minus-circle:before {\n content: \"\\f056\"; }\n\n.fa-minus-square:before {\n content: \"\\f146\"; }\n\n.fa-mix:before {\n content: \"\\f3cb\"; }\n\n.fa-mixcloud:before {\n content: \"\\f289\"; }\n\n.fa-mizuni:before {\n content: \"\\f3cc\"; }\n\n.fa-mobile:before {\n content: \"\\f10b\"; }\n\n.fa-mobile-alt:before {\n content: \"\\f3cd\"; }\n\n.fa-modx:before {\n content: \"\\f285\"; }\n\n.fa-monero:before {\n content: \"\\f3d0\"; }\n\n.fa-money-bill:before {\n content: \"\\f0d6\"; }\n\n.fa-money-bill-alt:before {\n content: \"\\f3d1\"; }\n\n.fa-money-bill-wave:before {\n content: \"\\f53a\"; }\n\n.fa-money-bill-wave-alt:before {\n content: \"\\f53b\"; }\n\n.fa-money-check:before {\n content: \"\\f53c\"; }\n\n.fa-money-check-alt:before {\n content: \"\\f53d\"; }\n\n.fa-monument:before {\n content: \"\\f5a6\"; }\n\n.fa-moon:before {\n content: \"\\f186\"; }\n\n.fa-mortar-pestle:before {\n content: \"\\f5a7\"; }\n\n.fa-mosque:before {\n content: \"\\f678\"; }\n\n.fa-motorcycle:before {\n content: \"\\f21c\"; }\n\n.fa-mountain:before {\n content: \"\\f6fc\"; }\n\n.fa-mouse-pointer:before {\n content: \"\\f245\"; }\n\n.fa-music:before {\n content: \"\\f001\"; }\n\n.fa-napster:before {\n content: \"\\f3d2\"; }\n\n.fa-neos:before {\n content: \"\\f612\"; }\n\n.fa-network-wired:before {\n content: \"\\f6ff\"; }\n\n.fa-neuter:before {\n content: \"\\f22c\"; }\n\n.fa-newspaper:before {\n content: \"\\f1ea\"; }\n\n.fa-nimblr:before {\n content: \"\\f5a8\"; }\n\n.fa-nintendo-switch:before {\n content: \"\\f418\"; }\n\n.fa-node:before {\n content: \"\\f419\"; }\n\n.fa-node-js:before {\n content: \"\\f3d3\"; }\n\n.fa-not-equal:before {\n content: \"\\f53e\"; }\n\n.fa-notes-medical:before {\n content: \"\\f481\"; }\n\n.fa-npm:before {\n content: \"\\f3d4\"; }\n\n.fa-ns8:before {\n content: \"\\f3d5\"; }\n\n.fa-nutritionix:before {\n content: \"\\f3d6\"; }\n\n.fa-object-group:before {\n content: \"\\f247\"; }\n\n.fa-object-ungroup:before {\n content: \"\\f248\"; }\n\n.fa-odnoklassniki:before {\n content: \"\\f263\"; }\n\n.fa-odnoklassniki-square:before {\n content: \"\\f264\"; }\n\n.fa-oil-can:before {\n content: \"\\f613\"; }\n\n.fa-old-republic:before {\n content: \"\\f510\"; }\n\n.fa-om:before {\n content: \"\\f679\"; }\n\n.fa-opencart:before {\n content: \"\\f23d\"; }\n\n.fa-openid:before {\n content: \"\\f19b\"; }\n\n.fa-opera:before {\n content: \"\\f26a\"; }\n\n.fa-optin-monster:before {\n content: \"\\f23c\"; }\n\n.fa-osi:before {\n content: \"\\f41a\"; }\n\n.fa-otter:before {\n content: \"\\f700\"; }\n\n.fa-outdent:before {\n content: \"\\f03b\"; }\n\n.fa-page4:before {\n content: \"\\f3d7\"; }\n\n.fa-pagelines:before {\n content: \"\\f18c\"; }\n\n.fa-paint-brush:before {\n content: \"\\f1fc\"; }\n\n.fa-paint-roller:before {\n content: \"\\f5aa\"; }\n\n.fa-palette:before {\n content: \"\\f53f\"; }\n\n.fa-palfed:before {\n content: \"\\f3d8\"; }\n\n.fa-pallet:before {\n content: \"\\f482\"; }\n\n.fa-paper-plane:before {\n content: \"\\f1d8\"; }\n\n.fa-paperclip:before {\n content: \"\\f0c6\"; }\n\n.fa-parachute-box:before {\n content: \"\\f4cd\"; }\n\n.fa-paragraph:before {\n content: \"\\f1dd\"; }\n\n.fa-parking:before {\n content: \"\\f540\"; }\n\n.fa-passport:before {\n content: \"\\f5ab\"; }\n\n.fa-pastafarianism:before {\n content: \"\\f67b\"; }\n\n.fa-paste:before {\n content: \"\\f0ea\"; }\n\n.fa-patreon:before {\n content: \"\\f3d9\"; }\n\n.fa-pause:before {\n content: \"\\f04c\"; }\n\n.fa-pause-circle:before {\n content: \"\\f28b\"; }\n\n.fa-paw:before {\n content: \"\\f1b0\"; }\n\n.fa-paypal:before {\n content: \"\\f1ed\"; }\n\n.fa-peace:before {\n content: \"\\f67c\"; }\n\n.fa-pen:before {\n content: \"\\f304\"; }\n\n.fa-pen-alt:before {\n content: \"\\f305\"; }\n\n.fa-pen-fancy:before {\n content: \"\\f5ac\"; }\n\n.fa-pen-nib:before {\n content: \"\\f5ad\"; }\n\n.fa-pen-square:before {\n content: \"\\f14b\"; }\n\n.fa-pencil-alt:before {\n content: \"\\f303\"; }\n\n.fa-pencil-ruler:before {\n content: \"\\f5ae\"; }\n\n.fa-penny-arcade:before {\n content: \"\\f704\"; }\n\n.fa-people-carry:before {\n content: \"\\f4ce\"; }\n\n.fa-percent:before {\n content: \"\\f295\"; }\n\n.fa-percentage:before {\n content: \"\\f541\"; }\n\n.fa-periscope:before {\n content: \"\\f3da\"; }\n\n.fa-person-booth:before {\n content: \"\\f756\"; }\n\n.fa-phabricator:before {\n content: \"\\f3db\"; }\n\n.fa-phoenix-framework:before {\n content: \"\\f3dc\"; }\n\n.fa-phoenix-squadron:before {\n content: \"\\f511\"; }\n\n.fa-phone:before {\n content: \"\\f095\"; }\n\n.fa-phone-slash:before {\n content: \"\\f3dd\"; }\n\n.fa-phone-square:before {\n content: \"\\f098\"; }\n\n.fa-phone-volume:before {\n content: \"\\f2a0\"; }\n\n.fa-php:before {\n content: \"\\f457\"; }\n\n.fa-pied-piper:before {\n content: \"\\f2ae\"; }\n\n.fa-pied-piper-alt:before {\n content: \"\\f1a8\"; }\n\n.fa-pied-piper-hat:before {\n content: \"\\f4e5\"; }\n\n.fa-pied-piper-pp:before {\n content: \"\\f1a7\"; }\n\n.fa-piggy-bank:before {\n content: \"\\f4d3\"; }\n\n.fa-pills:before {\n content: \"\\f484\"; }\n\n.fa-pinterest:before {\n content: \"\\f0d2\"; }\n\n.fa-pinterest-p:before {\n content: \"\\f231\"; }\n\n.fa-pinterest-square:before {\n content: \"\\f0d3\"; }\n\n.fa-place-of-worship:before {\n content: \"\\f67f\"; }\n\n.fa-plane:before {\n content: \"\\f072\"; }\n\n.fa-plane-arrival:before {\n content: \"\\f5af\"; }\n\n.fa-plane-departure:before {\n content: \"\\f5b0\"; }\n\n.fa-play:before {\n content: \"\\f04b\"; }\n\n.fa-play-circle:before {\n content: \"\\f144\"; }\n\n.fa-playstation:before {\n content: \"\\f3df\"; }\n\n.fa-plug:before {\n content: \"\\f1e6\"; }\n\n.fa-plus:before {\n content: \"\\f067\"; }\n\n.fa-plus-circle:before {\n content: \"\\f055\"; }\n\n.fa-plus-square:before {\n content: \"\\f0fe\"; }\n\n.fa-podcast:before {\n content: \"\\f2ce\"; }\n\n.fa-poll:before {\n content: \"\\f681\"; }\n\n.fa-poll-h:before {\n content: \"\\f682\"; }\n\n.fa-poo:before {\n content: \"\\f2fe\"; }\n\n.fa-poo-storm:before {\n content: \"\\f75a\"; }\n\n.fa-poop:before {\n content: \"\\f619\"; }\n\n.fa-portrait:before {\n content: \"\\f3e0\"; }\n\n.fa-pound-sign:before {\n content: \"\\f154\"; }\n\n.fa-power-off:before {\n content: \"\\f011\"; }\n\n.fa-pray:before {\n content: \"\\f683\"; }\n\n.fa-praying-hands:before {\n content: \"\\f684\"; }\n\n.fa-prescription:before {\n content: \"\\f5b1\"; }\n\n.fa-prescription-bottle:before {\n content: \"\\f485\"; }\n\n.fa-prescription-bottle-alt:before {\n content: \"\\f486\"; }\n\n.fa-print:before {\n content: \"\\f02f\"; }\n\n.fa-procedures:before {\n content: \"\\f487\"; }\n\n.fa-product-hunt:before {\n content: \"\\f288\"; }\n\n.fa-project-diagram:before {\n content: \"\\f542\"; }\n\n.fa-pushed:before {\n content: \"\\f3e1\"; }\n\n.fa-puzzle-piece:before {\n content: \"\\f12e\"; }\n\n.fa-python:before {\n content: \"\\f3e2\"; }\n\n.fa-qq:before {\n content: \"\\f1d6\"; }\n\n.fa-qrcode:before {\n content: \"\\f029\"; }\n\n.fa-question:before {\n content: \"\\f128\"; }\n\n.fa-question-circle:before {\n content: \"\\f059\"; }\n\n.fa-quidditch:before {\n content: \"\\f458\"; }\n\n.fa-quinscape:before {\n content: \"\\f459\"; }\n\n.fa-quora:before {\n content: \"\\f2c4\"; }\n\n.fa-quote-left:before {\n content: \"\\f10d\"; }\n\n.fa-quote-right:before {\n content: \"\\f10e\"; }\n\n.fa-quran:before {\n content: \"\\f687\"; }\n\n.fa-r-project:before {\n content: \"\\f4f7\"; }\n\n.fa-rainbow:before {\n content: \"\\f75b\"; }\n\n.fa-random:before {\n content: \"\\f074\"; }\n\n.fa-ravelry:before {\n content: \"\\f2d9\"; }\n\n.fa-react:before {\n content: \"\\f41b\"; }\n\n.fa-reacteurope:before {\n content: \"\\f75d\"; }\n\n.fa-readme:before {\n content: \"\\f4d5\"; }\n\n.fa-rebel:before {\n content: \"\\f1d0\"; }\n\n.fa-receipt:before {\n content: \"\\f543\"; }\n\n.fa-recycle:before {\n content: \"\\f1b8\"; }\n\n.fa-red-river:before {\n content: \"\\f3e3\"; }\n\n.fa-reddit:before {\n content: \"\\f1a1\"; }\n\n.fa-reddit-alien:before {\n content: \"\\f281\"; }\n\n.fa-reddit-square:before {\n content: \"\\f1a2\"; }\n\n.fa-redo:before {\n content: \"\\f01e\"; }\n\n.fa-redo-alt:before {\n content: \"\\f2f9\"; }\n\n.fa-registered:before {\n content: \"\\f25d\"; }\n\n.fa-renren:before {\n content: \"\\f18b\"; }\n\n.fa-reply:before {\n content: \"\\f3e5\"; }\n\n.fa-reply-all:before {\n content: \"\\f122\"; }\n\n.fa-replyd:before {\n content: \"\\f3e6\"; }\n\n.fa-republican:before {\n content: \"\\f75e\"; }\n\n.fa-researchgate:before {\n content: \"\\f4f8\"; }\n\n.fa-resolving:before {\n content: \"\\f3e7\"; }\n\n.fa-retweet:before {\n content: \"\\f079\"; }\n\n.fa-rev:before {\n content: \"\\f5b2\"; }\n\n.fa-ribbon:before {\n content: \"\\f4d6\"; }\n\n.fa-ring:before {\n content: \"\\f70b\"; }\n\n.fa-road:before {\n content: \"\\f018\"; }\n\n.fa-robot:before {\n content: \"\\f544\"; }\n\n.fa-rocket:before {\n content: \"\\f135\"; }\n\n.fa-rocketchat:before {\n content: \"\\f3e8\"; }\n\n.fa-rockrms:before {\n content: \"\\f3e9\"; }\n\n.fa-route:before {\n content: \"\\f4d7\"; }\n\n.fa-rss:before {\n content: \"\\f09e\"; }\n\n.fa-rss-square:before {\n content: \"\\f143\"; }\n\n.fa-ruble-sign:before {\n content: \"\\f158\"; }\n\n.fa-ruler:before {\n content: \"\\f545\"; }\n\n.fa-ruler-combined:before {\n content: \"\\f546\"; }\n\n.fa-ruler-horizontal:before {\n content: \"\\f547\"; }\n\n.fa-ruler-vertical:before {\n content: \"\\f548\"; }\n\n.fa-running:before {\n content: \"\\f70c\"; }\n\n.fa-rupee-sign:before {\n content: \"\\f156\"; }\n\n.fa-sad-cry:before {\n content: \"\\f5b3\"; }\n\n.fa-sad-tear:before {\n content: \"\\f5b4\"; }\n\n.fa-safari:before {\n content: \"\\f267\"; }\n\n.fa-sass:before {\n content: \"\\f41e\"; }\n\n.fa-save:before {\n content: \"\\f0c7\"; }\n\n.fa-schlix:before {\n content: \"\\f3ea\"; }\n\n.fa-school:before {\n content: \"\\f549\"; }\n\n.fa-screwdriver:before {\n content: \"\\f54a\"; }\n\n.fa-scribd:before {\n content: \"\\f28a\"; }\n\n.fa-scroll:before {\n content: \"\\f70e\"; }\n\n.fa-search:before {\n content: \"\\f002\"; }\n\n.fa-search-dollar:before {\n content: \"\\f688\"; }\n\n.fa-search-location:before {\n content: \"\\f689\"; }\n\n.fa-search-minus:before {\n content: \"\\f010\"; }\n\n.fa-search-plus:before {\n content: \"\\f00e\"; }\n\n.fa-searchengin:before {\n content: \"\\f3eb\"; }\n\n.fa-seedling:before {\n content: \"\\f4d8\"; }\n\n.fa-sellcast:before {\n content: \"\\f2da\"; }\n\n.fa-sellsy:before {\n content: \"\\f213\"; }\n\n.fa-server:before {\n content: \"\\f233\"; }\n\n.fa-servicestack:before {\n content: \"\\f3ec\"; }\n\n.fa-shapes:before {\n content: \"\\f61f\"; }\n\n.fa-share:before {\n content: \"\\f064\"; }\n\n.fa-share-alt:before {\n content: \"\\f1e0\"; }\n\n.fa-share-alt-square:before {\n content: \"\\f1e1\"; }\n\n.fa-share-square:before {\n content: \"\\f14d\"; }\n\n.fa-shekel-sign:before {\n content: \"\\f20b\"; }\n\n.fa-shield-alt:before {\n content: \"\\f3ed\"; }\n\n.fa-ship:before {\n content: \"\\f21a\"; }\n\n.fa-shipping-fast:before {\n content: \"\\f48b\"; }\n\n.fa-shirtsinbulk:before {\n content: \"\\f214\"; }\n\n.fa-shoe-prints:before {\n content: \"\\f54b\"; }\n\n.fa-shopping-bag:before {\n content: \"\\f290\"; }\n\n.fa-shopping-basket:before {\n content: \"\\f291\"; }\n\n.fa-shopping-cart:before {\n content: \"\\f07a\"; }\n\n.fa-shopware:before {\n content: \"\\f5b5\"; }\n\n.fa-shower:before {\n content: \"\\f2cc\"; }\n\n.fa-shuttle-van:before {\n content: \"\\f5b6\"; }\n\n.fa-sign:before {\n content: \"\\f4d9\"; }\n\n.fa-sign-in-alt:before {\n content: \"\\f2f6\"; }\n\n.fa-sign-language:before {\n content: \"\\f2a7\"; }\n\n.fa-sign-out-alt:before {\n content: \"\\f2f5\"; }\n\n.fa-signal:before {\n content: \"\\f012\"; }\n\n.fa-signature:before {\n content: \"\\f5b7\"; }\n\n.fa-simplybuilt:before {\n content: \"\\f215\"; }\n\n.fa-sistrix:before {\n content: \"\\f3ee\"; }\n\n.fa-sitemap:before {\n content: \"\\f0e8\"; }\n\n.fa-sith:before {\n content: \"\\f512\"; }\n\n.fa-skull:before {\n content: \"\\f54c\"; }\n\n.fa-skull-crossbones:before {\n content: \"\\f714\"; }\n\n.fa-skyatlas:before {\n content: \"\\f216\"; }\n\n.fa-skype:before {\n content: \"\\f17e\"; }\n\n.fa-slack:before {\n content: \"\\f198\"; }\n\n.fa-slack-hash:before {\n content: \"\\f3ef\"; }\n\n.fa-slash:before {\n content: \"\\f715\"; }\n\n.fa-sliders-h:before {\n content: \"\\f1de\"; }\n\n.fa-slideshare:before {\n content: \"\\f1e7\"; }\n\n.fa-smile:before {\n content: \"\\f118\"; }\n\n.fa-smile-beam:before {\n content: \"\\f5b8\"; }\n\n.fa-smile-wink:before {\n content: \"\\f4da\"; }\n\n.fa-smog:before {\n content: \"\\f75f\"; }\n\n.fa-smoking:before {\n content: \"\\f48d\"; }\n\n.fa-smoking-ban:before {\n content: \"\\f54d\"; }\n\n.fa-snapchat:before {\n content: \"\\f2ab\"; }\n\n.fa-snapchat-ghost:before {\n content: \"\\f2ac\"; }\n\n.fa-snapchat-square:before {\n content: \"\\f2ad\"; }\n\n.fa-snowflake:before {\n content: \"\\f2dc\"; }\n\n.fa-socks:before {\n content: \"\\f696\"; }\n\n.fa-solar-panel:before {\n content: \"\\f5ba\"; }\n\n.fa-sort:before {\n content: \"\\f0dc\"; }\n\n.fa-sort-alpha-down:before {\n content: \"\\f15d\"; }\n\n.fa-sort-alpha-up:before {\n content: \"\\f15e\"; }\n\n.fa-sort-amount-down:before {\n content: \"\\f160\"; }\n\n.fa-sort-amount-up:before {\n content: \"\\f161\"; }\n\n.fa-sort-down:before {\n content: \"\\f0dd\"; }\n\n.fa-sort-numeric-down:before {\n content: \"\\f162\"; }\n\n.fa-sort-numeric-up:before {\n content: \"\\f163\"; }\n\n.fa-sort-up:before {\n content: \"\\f0de\"; }\n\n.fa-soundcloud:before {\n content: \"\\f1be\"; }\n\n.fa-spa:before {\n content: \"\\f5bb\"; }\n\n.fa-space-shuttle:before {\n content: \"\\f197\"; }\n\n.fa-speakap:before {\n content: \"\\f3f3\"; }\n\n.fa-spider:before {\n content: \"\\f717\"; }\n\n.fa-spinner:before {\n content: \"\\f110\"; }\n\n.fa-splotch:before {\n content: \"\\f5bc\"; }\n\n.fa-spotify:before {\n content: \"\\f1bc\"; }\n\n.fa-spray-can:before {\n content: \"\\f5bd\"; }\n\n.fa-square:before {\n content: \"\\f0c8\"; }\n\n.fa-square-full:before {\n content: \"\\f45c\"; }\n\n.fa-square-root-alt:before {\n content: \"\\f698\"; }\n\n.fa-squarespace:before {\n content: \"\\f5be\"; }\n\n.fa-stack-exchange:before {\n content: \"\\f18d\"; }\n\n.fa-stack-overflow:before {\n content: \"\\f16c\"; }\n\n.fa-stamp:before {\n content: \"\\f5bf\"; }\n\n.fa-star:before {\n content: \"\\f005\"; }\n\n.fa-star-and-crescent:before {\n content: \"\\f699\"; }\n\n.fa-star-half:before {\n content: \"\\f089\"; }\n\n.fa-star-half-alt:before {\n content: \"\\f5c0\"; }\n\n.fa-star-of-david:before {\n content: \"\\f69a\"; }\n\n.fa-star-of-life:before {\n content: \"\\f621\"; }\n\n.fa-staylinked:before {\n content: \"\\f3f5\"; }\n\n.fa-steam:before {\n content: \"\\f1b6\"; }\n\n.fa-steam-square:before {\n content: \"\\f1b7\"; }\n\n.fa-steam-symbol:before {\n content: \"\\f3f6\"; }\n\n.fa-step-backward:before {\n content: \"\\f048\"; }\n\n.fa-step-forward:before {\n content: \"\\f051\"; }\n\n.fa-stethoscope:before {\n content: \"\\f0f1\"; }\n\n.fa-sticker-mule:before {\n content: \"\\f3f7\"; }\n\n.fa-sticky-note:before {\n content: \"\\f249\"; }\n\n.fa-stop:before {\n content: \"\\f04d\"; }\n\n.fa-stop-circle:before {\n content: \"\\f28d\"; }\n\n.fa-stopwatch:before {\n content: \"\\f2f2\"; }\n\n.fa-store:before {\n content: \"\\f54e\"; }\n\n.fa-store-alt:before {\n content: \"\\f54f\"; }\n\n.fa-strava:before {\n content: \"\\f428\"; }\n\n.fa-stream:before {\n content: \"\\f550\"; }\n\n.fa-street-view:before {\n content: \"\\f21d\"; }\n\n.fa-strikethrough:before {\n content: \"\\f0cc\"; }\n\n.fa-stripe:before {\n content: \"\\f429\"; }\n\n.fa-stripe-s:before {\n content: \"\\f42a\"; }\n\n.fa-stroopwafel:before {\n content: \"\\f551\"; }\n\n.fa-studiovinari:before {\n content: \"\\f3f8\"; }\n\n.fa-stumbleupon:before {\n content: \"\\f1a4\"; }\n\n.fa-stumbleupon-circle:before {\n content: \"\\f1a3\"; }\n\n.fa-subscript:before {\n content: \"\\f12c\"; }\n\n.fa-subway:before {\n content: \"\\f239\"; }\n\n.fa-suitcase:before {\n content: \"\\f0f2\"; }\n\n.fa-suitcase-rolling:before {\n content: \"\\f5c1\"; }\n\n.fa-sun:before {\n content: \"\\f185\"; }\n\n.fa-superpowers:before {\n content: \"\\f2dd\"; }\n\n.fa-superscript:before {\n content: \"\\f12b\"; }\n\n.fa-supple:before {\n content: \"\\f3f9\"; }\n\n.fa-surprise:before {\n content: \"\\f5c2\"; }\n\n.fa-swatchbook:before {\n content: \"\\f5c3\"; }\n\n.fa-swimmer:before {\n content: \"\\f5c4\"; }\n\n.fa-swimming-pool:before {\n content: \"\\f5c5\"; }\n\n.fa-synagogue:before {\n content: \"\\f69b\"; }\n\n.fa-sync:before {\n content: \"\\f021\"; }\n\n.fa-sync-alt:before {\n content: \"\\f2f1\"; }\n\n.fa-syringe:before {\n content: \"\\f48e\"; }\n\n.fa-table:before {\n content: \"\\f0ce\"; }\n\n.fa-table-tennis:before {\n content: \"\\f45d\"; }\n\n.fa-tablet:before {\n content: \"\\f10a\"; }\n\n.fa-tablet-alt:before {\n content: \"\\f3fa\"; }\n\n.fa-tablets:before {\n content: \"\\f490\"; }\n\n.fa-tachometer-alt:before {\n content: \"\\f3fd\"; }\n\n.fa-tag:before {\n content: \"\\f02b\"; }\n\n.fa-tags:before {\n content: \"\\f02c\"; }\n\n.fa-tape:before {\n content: \"\\f4db\"; }\n\n.fa-tasks:before {\n content: \"\\f0ae\"; }\n\n.fa-taxi:before {\n content: \"\\f1ba\"; }\n\n.fa-teamspeak:before {\n content: \"\\f4f9\"; }\n\n.fa-teeth:before {\n content: \"\\f62e\"; }\n\n.fa-teeth-open:before {\n content: \"\\f62f\"; }\n\n.fa-telegram:before {\n content: \"\\f2c6\"; }\n\n.fa-telegram-plane:before {\n content: \"\\f3fe\"; }\n\n.fa-temperature-high:before {\n content: \"\\f769\"; }\n\n.fa-temperature-low:before {\n content: \"\\f76b\"; }\n\n.fa-tencent-weibo:before {\n content: \"\\f1d5\"; }\n\n.fa-terminal:before {\n content: \"\\f120\"; }\n\n.fa-text-height:before {\n content: \"\\f034\"; }\n\n.fa-text-width:before {\n content: \"\\f035\"; }\n\n.fa-th:before {\n content: \"\\f00a\"; }\n\n.fa-th-large:before {\n content: \"\\f009\"; }\n\n.fa-th-list:before {\n content: \"\\f00b\"; }\n\n.fa-the-red-yeti:before {\n content: \"\\f69d\"; }\n\n.fa-theater-masks:before {\n content: \"\\f630\"; }\n\n.fa-themeco:before {\n content: \"\\f5c6\"; }\n\n.fa-themeisle:before {\n content: \"\\f2b2\"; }\n\n.fa-thermometer:before {\n content: \"\\f491\"; }\n\n.fa-thermometer-empty:before {\n content: \"\\f2cb\"; }\n\n.fa-thermometer-full:before {\n content: \"\\f2c7\"; }\n\n.fa-thermometer-half:before {\n content: \"\\f2c9\"; }\n\n.fa-thermometer-quarter:before {\n content: \"\\f2ca\"; }\n\n.fa-thermometer-three-quarters:before {\n content: \"\\f2c8\"; }\n\n.fa-think-peaks:before {\n content: \"\\f731\"; }\n\n.fa-thumbs-down:before {\n content: \"\\f165\"; }\n\n.fa-thumbs-up:before {\n content: \"\\f164\"; }\n\n.fa-thumbtack:before {\n content: \"\\f08d\"; }\n\n.fa-ticket-alt:before {\n content: \"\\f3ff\"; }\n\n.fa-times:before {\n content: \"\\f00d\"; }\n\n.fa-times-circle:before {\n content: \"\\f057\"; }\n\n.fa-tint:before {\n content: \"\\f043\"; }\n\n.fa-tint-slash:before {\n content: \"\\f5c7\"; }\n\n.fa-tired:before {\n content: \"\\f5c8\"; }\n\n.fa-toggle-off:before {\n content: \"\\f204\"; }\n\n.fa-toggle-on:before {\n content: \"\\f205\"; }\n\n.fa-toilet-paper:before {\n content: \"\\f71e\"; }\n\n.fa-toolbox:before {\n content: \"\\f552\"; }\n\n.fa-tooth:before {\n content: \"\\f5c9\"; }\n\n.fa-torah:before {\n content: \"\\f6a0\"; }\n\n.fa-torii-gate:before {\n content: \"\\f6a1\"; }\n\n.fa-tractor:before {\n content: \"\\f722\"; }\n\n.fa-trade-federation:before {\n content: \"\\f513\"; }\n\n.fa-trademark:before {\n content: \"\\f25c\"; }\n\n.fa-traffic-light:before {\n content: \"\\f637\"; }\n\n.fa-train:before {\n content: \"\\f238\"; }\n\n.fa-transgender:before {\n content: \"\\f224\"; }\n\n.fa-transgender-alt:before {\n content: \"\\f225\"; }\n\n.fa-trash:before {\n content: \"\\f1f8\"; }\n\n.fa-trash-alt:before {\n content: \"\\f2ed\"; }\n\n.fa-tree:before {\n content: \"\\f1bb\"; }\n\n.fa-trello:before {\n content: \"\\f181\"; }\n\n.fa-tripadvisor:before {\n content: \"\\f262\"; }\n\n.fa-trophy:before {\n content: \"\\f091\"; }\n\n.fa-truck:before {\n content: \"\\f0d1\"; }\n\n.fa-truck-loading:before {\n content: \"\\f4de\"; }\n\n.fa-truck-monster:before {\n content: \"\\f63b\"; }\n\n.fa-truck-moving:before {\n content: \"\\f4df\"; }\n\n.fa-truck-pickup:before {\n content: \"\\f63c\"; }\n\n.fa-tshirt:before {\n content: \"\\f553\"; }\n\n.fa-tty:before {\n content: \"\\f1e4\"; }\n\n.fa-tumblr:before {\n content: \"\\f173\"; }\n\n.fa-tumblr-square:before {\n content: \"\\f174\"; }\n\n.fa-tv:before {\n content: \"\\f26c\"; }\n\n.fa-twitch:before {\n content: \"\\f1e8\"; }\n\n.fa-twitter:before {\n content: \"\\f099\"; }\n\n.fa-twitter-square:before {\n content: \"\\f081\"; }\n\n.fa-typo3:before {\n content: \"\\f42b\"; }\n\n.fa-uber:before {\n content: \"\\f402\"; }\n\n.fa-uikit:before {\n content: \"\\f403\"; }\n\n.fa-umbrella:before {\n content: \"\\f0e9\"; }\n\n.fa-umbrella-beach:before {\n content: \"\\f5ca\"; }\n\n.fa-underline:before {\n content: \"\\f0cd\"; }\n\n.fa-undo:before {\n content: \"\\f0e2\"; }\n\n.fa-undo-alt:before {\n content: \"\\f2ea\"; }\n\n.fa-uniregistry:before {\n content: \"\\f404\"; }\n\n.fa-universal-access:before {\n content: \"\\f29a\"; }\n\n.fa-university:before {\n content: \"\\f19c\"; }\n\n.fa-unlink:before {\n content: \"\\f127\"; }\n\n.fa-unlock:before {\n content: \"\\f09c\"; }\n\n.fa-unlock-alt:before {\n content: \"\\f13e\"; }\n\n.fa-untappd:before {\n content: \"\\f405\"; }\n\n.fa-upload:before {\n content: \"\\f093\"; }\n\n.fa-usb:before {\n content: \"\\f287\"; }\n\n.fa-user:before {\n content: \"\\f007\"; }\n\n.fa-user-alt:before {\n content: \"\\f406\"; }\n\n.fa-user-alt-slash:before {\n content: \"\\f4fa\"; }\n\n.fa-user-astronaut:before {\n content: \"\\f4fb\"; }\n\n.fa-user-check:before {\n content: \"\\f4fc\"; }\n\n.fa-user-circle:before {\n content: \"\\f2bd\"; }\n\n.fa-user-clock:before {\n content: \"\\f4fd\"; }\n\n.fa-user-cog:before {\n content: \"\\f4fe\"; }\n\n.fa-user-edit:before {\n content: \"\\f4ff\"; }\n\n.fa-user-friends:before {\n content: \"\\f500\"; }\n\n.fa-user-graduate:before {\n content: \"\\f501\"; }\n\n.fa-user-injured:before {\n content: \"\\f728\"; }\n\n.fa-user-lock:before {\n content: \"\\f502\"; }\n\n.fa-user-md:before {\n content: \"\\f0f0\"; }\n\n.fa-user-minus:before {\n content: \"\\f503\"; }\n\n.fa-user-ninja:before {\n content: \"\\f504\"; }\n\n.fa-user-plus:before {\n content: \"\\f234\"; }\n\n.fa-user-secret:before {\n content: \"\\f21b\"; }\n\n.fa-user-shield:before {\n content: \"\\f505\"; }\n\n.fa-user-slash:before {\n content: \"\\f506\"; }\n\n.fa-user-tag:before {\n content: \"\\f507\"; }\n\n.fa-user-tie:before {\n content: \"\\f508\"; }\n\n.fa-user-times:before {\n content: \"\\f235\"; }\n\n.fa-users:before {\n content: \"\\f0c0\"; }\n\n.fa-users-cog:before {\n content: \"\\f509\"; }\n\n.fa-ussunnah:before {\n content: \"\\f407\"; }\n\n.fa-utensil-spoon:before {\n content: \"\\f2e5\"; }\n\n.fa-utensils:before {\n content: \"\\f2e7\"; }\n\n.fa-vaadin:before {\n content: \"\\f408\"; }\n\n.fa-vector-square:before {\n content: \"\\f5cb\"; }\n\n.fa-venus:before {\n content: \"\\f221\"; }\n\n.fa-venus-double:before {\n content: \"\\f226\"; }\n\n.fa-venus-mars:before {\n content: \"\\f228\"; }\n\n.fa-viacoin:before {\n content: \"\\f237\"; }\n\n.fa-viadeo:before {\n content: \"\\f2a9\"; }\n\n.fa-viadeo-square:before {\n content: \"\\f2aa\"; }\n\n.fa-vial:before {\n content: \"\\f492\"; }\n\n.fa-vials:before {\n content: \"\\f493\"; }\n\n.fa-viber:before {\n content: \"\\f409\"; }\n\n.fa-video:before {\n content: \"\\f03d\"; }\n\n.fa-video-slash:before {\n content: \"\\f4e2\"; }\n\n.fa-vihara:before {\n content: \"\\f6a7\"; }\n\n.fa-vimeo:before {\n content: \"\\f40a\"; }\n\n.fa-vimeo-square:before {\n content: \"\\f194\"; }\n\n.fa-vimeo-v:before {\n content: \"\\f27d\"; }\n\n.fa-vine:before {\n content: \"\\f1ca\"; }\n\n.fa-vk:before {\n content: \"\\f189\"; }\n\n.fa-vnv:before {\n content: \"\\f40b\"; }\n\n.fa-volleyball-ball:before {\n content: \"\\f45f\"; }\n\n.fa-volume-down:before {\n content: \"\\f027\"; }\n\n.fa-volume-mute:before {\n content: \"\\f6a9\"; }\n\n.fa-volume-off:before {\n content: \"\\f026\"; }\n\n.fa-volume-up:before {\n content: \"\\f028\"; }\n\n.fa-vote-yea:before {\n content: \"\\f772\"; }\n\n.fa-vr-cardboard:before {\n content: \"\\f729\"; }\n\n.fa-vuejs:before {\n content: \"\\f41f\"; }\n\n.fa-walking:before {\n content: \"\\f554\"; }\n\n.fa-wallet:before {\n content: \"\\f555\"; }\n\n.fa-warehouse:before {\n content: \"\\f494\"; }\n\n.fa-water:before {\n content: \"\\f773\"; }\n\n.fa-weebly:before {\n content: \"\\f5cc\"; }\n\n.fa-weibo:before {\n content: \"\\f18a\"; }\n\n.fa-weight:before {\n content: \"\\f496\"; }\n\n.fa-weight-hanging:before {\n content: \"\\f5cd\"; }\n\n.fa-weixin:before {\n content: \"\\f1d7\"; }\n\n.fa-whatsapp:before {\n content: \"\\f232\"; }\n\n.fa-whatsapp-square:before {\n content: \"\\f40c\"; }\n\n.fa-wheelchair:before {\n content: \"\\f193\"; }\n\n.fa-whmcs:before {\n content: \"\\f40d\"; }\n\n.fa-wifi:before {\n content: \"\\f1eb\"; }\n\n.fa-wikipedia-w:before {\n content: \"\\f266\"; }\n\n.fa-wind:before {\n content: \"\\f72e\"; }\n\n.fa-window-close:before {\n content: \"\\f410\"; }\n\n.fa-window-maximize:before {\n content: \"\\f2d0\"; }\n\n.fa-window-minimize:before {\n content: \"\\f2d1\"; }\n\n.fa-window-restore:before {\n content: \"\\f2d2\"; }\n\n.fa-windows:before {\n content: \"\\f17a\"; }\n\n.fa-wine-bottle:before {\n content: \"\\f72f\"; }\n\n.fa-wine-glass:before {\n content: \"\\f4e3\"; }\n\n.fa-wine-glass-alt:before {\n content: \"\\f5ce\"; }\n\n.fa-wix:before {\n content: \"\\f5cf\"; }\n\n.fa-wizards-of-the-coast:before {\n content: \"\\f730\"; }\n\n.fa-wolf-pack-battalion:before {\n content: \"\\f514\"; }\n\n.fa-won-sign:before {\n content: \"\\f159\"; }\n\n.fa-wordpress:before {\n content: \"\\f19a\"; }\n\n.fa-wordpress-simple:before {\n content: \"\\f411\"; }\n\n.fa-wpbeginner:before {\n content: \"\\f297\"; }\n\n.fa-wpexplorer:before {\n content: \"\\f2de\"; }\n\n.fa-wpforms:before {\n content: \"\\f298\"; }\n\n.fa-wpressr:before {\n content: \"\\f3e4\"; }\n\n.fa-wrench:before {\n content: \"\\f0ad\"; }\n\n.fa-x-ray:before {\n content: \"\\f497\"; }\n\n.fa-xbox:before {\n content: \"\\f412\"; }\n\n.fa-xing:before {\n content: \"\\f168\"; }\n\n.fa-xing-square:before {\n content: \"\\f169\"; }\n\n.fa-y-combinator:before {\n content: \"\\f23b\"; }\n\n.fa-yahoo:before {\n content: \"\\f19e\"; }\n\n.fa-yandex:before {\n content: \"\\f413\"; }\n\n.fa-yandex-international:before {\n content: \"\\f414\"; }\n\n.fa-yelp:before {\n content: \"\\f1e9\"; }\n\n.fa-yen-sign:before {\n content: \"\\f157\"; }\n\n.fa-yin-yang:before {\n content: \"\\f6ad\"; }\n\n.fa-yoast:before {\n content: \"\\f2b1\"; }\n\n.fa-youtube:before {\n content: \"\\f167\"; }\n\n.fa-youtube-square:before {\n content: \"\\f431\"; }\n\n.fa-zhihu:before {\n content: \"\\f63f\"; }\n\n.sr-only {\n border: 0;\n clip: rect(0, 0, 0, 0);\n height: 1px;\n margin: -1px;\n overflow: hidden;\n padding: 0;\n position: absolute;\n width: 1px; }\n\n.sr-only-focusable:active, .sr-only-focusable:focus {\n clip: auto;\n height: auto;\n margin: 0;\n overflow: visible;\n position: static;\n width: auto; }\n@font-face {\n font-family: 'Font Awesome 5 Brands';\n font-style: normal;\n font-weight: normal;\n src: url($font-path + \"fa-brands-400.eot\");\n src: url($font-path + \"fa-brands-400.eot?#iefix\") format(\"embedded-opentype\"), url($font-path + \"fa-brands-400.woff2\") format(\"woff2\"), url($font-path + \"fa-brands-400.woff\") format(\"woff\"), url($font-path + \"fa-brands-400.ttf\") format(\"truetype\"), url($font-path + \"fa-brands-400.svg#fontawesome\") format(\"svg\"); }\n\n.fab {\n font-family: 'Font Awesome 5 Brands'; }\n@font-face {\n font-family: 'Font Awesome 5 Free';\n font-style: normal;\n font-weight: 400;\n src: url($font-path + \"fa-regular-400.eot\");\n src: url($font-path + \"fa-regular-400.eot?#iefix\") format(\"embedded-opentype\"), url($font-path + \"fa-regular-400.woff2\") format(\"woff2\"), url($font-path + \"fa-regular-400.woff\") format(\"woff\"), url($font-path + \"fa-regular-400.ttf\") format(\"truetype\"), url($font-path + \"fa-regular-400.svg#fontawesome\") format(\"svg\"); }\n\n.far {\n font-family: 'Font Awesome 5 Free';\n font-weight: 400; }\n@font-face {\n font-family: 'Font Awesome 5 Free';\n font-style: normal;\n font-weight: 900;\n src: url($font-path + \"fa-solid-900.eot\");\n src: url($font-path + \"fa-solid-900.eot?#iefix\") format(\"embedded-opentype\"), url($font-path + \"fa-solid-900.woff2\") format(\"woff2\"), url($font-path + \"fa-solid-900.woff\") format(\"woff\"), url($font-path + \"fa-solid-900.ttf\") format(\"truetype\"), url($font-path + \"fa-solid-900.svg#fontawesome\") format(\"svg\"); }\n\n.fa,\n.fas {\n font-family: 'Font Awesome 5 Free';\n font-weight: 900; }\n",".tykon:before {\n font-family: \"tykon\" !important;\n font-style: normal !important;\n font-weight: normal !important;\n font-variant: normal !important;\n text-transform: none !important;\n speak: none;\n line-height: 1;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\n.tykon-arrowdown:before {\n content: \"\\61\";\n}\n.tykon-arrowleft:before {\n content: \"\\62\";\n}\n.tykon-arrowright:before {\n content: \"\\63\";\n}\n.tykon-arrowup:before {\n content: \"\\64\";\n}\n.tykon-doublearrowdown:before {\n content: \"\\65\";\n}\n.tykon-filter:before {\n content: \"\\66\";\n}\n.tykon-graph1:before {\n content: \"\\67\";\n}\n.tykon-graph2:before {\n content: \"\\68\";\n}\n.tykon-label:before {\n content: \"\\69\";\n}\n.tykon-reload:before {\n content: \"\\6a\";\n}\n.tykon-select:before {\n content: \"\\6b\";\n}\n.tykon-target:before {\n content: \"\\6c\";\n}\n.tykon-undo:before {\n content: \"\\6d\";\n}\n.tykon-deployment:before {\n content: \"\\6e\";\n}\n.tykon-team:before {\n content: \"\\6f\";\n}\n.tykon-overview:before {\n content: \"\\70\";\n}\n.tykon-loadout:before {\n content: \"\\71\";\n}\n.tykon-entitlement:before {\n content: \"\\72\";\n}\n.tykon-users:before {\n content: \"\\73\";\n}\n.tykon-doublearrowdown:before {\n content: \"\\65\";\n}\n.tykon-arrowsort:before {\n content: \"\\57\";\n}\n.tykon-check:before {\n content: \"\\56\";\n}\n.tykon-copy:before {\n content: \"\\43\";\n}\n.tykon-delete:before {\n content: \"\\55\";\n}\n.tykon-download:before {\n content: \"\\4c\";\n}\n.tykon-draft:before {\n content: \"\\44\";\n}\n.tykon-edit:before {\n content: \"\\45\";\n}\n.tykon-filter:before {\n content: \"\\66\";\n}\n.tykon-graphq2:before {\n content: \"\\68\";\n}\n.tykon-help:before {\n content: \"\\3f\";\n}\n.tykon-label:before {\n content: \"\\69\";\n}\n.tykon-link:before {\n content: \"\\52\";\n}\n.tykon-lock1:before {\n content: \"\\59\";\n}\n.tykon-lock2:before {\n content: \"\\5A\";\n}\n.tykon-notifications:before {\n content: \"\\4E\";\n}\n.tykon-plus:before {\n content: \"\\2B\";\n}\n.tykon-profile:before {\n content: \"\\50\";\n}\n.tykon-reload:before {\n content: \"\\6A\";\n}\n.tykon-search:before {\n content: \"\\4F\";\n}\n.tykon-select:before {\n content: \"\\6B\";\n}\n.tykon-settings:before {\n content: \"\\53\";\n}\n.tykon-target:before {\n content: \"\\6C\";\n}\n.tykon-undo:before {\n content: \"\\6D\";\n}\n.tykon-warning:before {\n content: \"\\21\";\n}\n.tykon-x:before {\n content: \"\\58\";\n}\n.tykon-waiting:before {\n content: \"\\54\";\n}\n.tykon-fullscreen:before {\n content: \"\\e000\";\n}\n.tykon-fullscreen-exit:before {\n content: \"\\e001\";\n}\n.tykon-time:before {\n content: \"\\74\";\n}\n","h1, h2, h3, h4, h5, h6 {\n margin-bottom: $headings-margin-bottom;\n font-family: $headings-font-family;\n font-weight: $headings-font-weight;\n color: $headings-color;\n}\n\nlabel {\n display: inline-block;\n max-width: 100%;\n margin-bottom: 5px;\n color: $label-color;\n}\n\nh1 {\n font-size: text-scale('xxl');\n line-height: line-height('xxl');\n}\nh2 {\n font-size: text-scale('xl');\n line-height: line-height('xl');\n}\nh3 {\n font-size: text-scale('lg');\n line-height: line-height('lg');\n}\nh4 {\n font-size: text-scale('md');\n line-height: line-height('md');\n}\nh5 {\n font-size: text-scale('sm');\n line-height: line-height('sm');\n}\nh6 {\n font-size: text-scale('xs');\n line-height: line-height('xs');\n}\n\np,\nlabel {\n font-size: text-scale('sm');\n line-height: line-height('sm');\n font-family: $font-family-regular;\n}\n\nstrong {\n font-family: $font-family-bold;\n}\n\na:not(.tyk-button) {\n cursor: pointer;\n color: $text-color;\n font-family: $font-family-regular;\n \n &.link--bold {\n font-family: $font-family-bold;\n }\n\n + a {\n margin-left: 5px;\n }\n\n i {\n font-size: 9px\n }\n}\n\np,\nlabel {\n a {\n font-size: text-scale('sm');\n text-decoration: underline;\n }\n}\n\n.font-family-regular {\n font-family: $font-family-regular;\n}\n.font-family-medium {\n font-family: $font-family-medium;\n}\n.font-family-bold {\n font-family: $font-family-bold;\n}\n.heading-font-family-regular {\n font-family: $headings-font-family-regular;\n}\n.heading-font-family-medium {\n font-family: $headings-font-family-medium;\n}\n.heading-font-family-bold {\n font-family: $headings-font-family-bold;\n}\n\n.text {\n &--primary {\n color: theme-color('primary', 'base');\n }\n &--danger {\n color: theme-color('danger', 'base');\n }\n &--info {\n color: theme-color('info', 'base');\n }\n &-warning {\n color: theme-color('warning', 'base');\n }\n &--medium {\n font-family: $font-family-medium;\n }\n &--bold {\n font-family: $font-family-bold;\n }\n &--uppercase {\n text-transform: uppercase;\n }\n &--ellipsis {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n &--underline {\n text-decoration: underline;\n }\n}\n\ntd.text-ellipsis {\n max-width: 250px;\n}\n\n.section-title {\n font-family: $headings-font-family-bold;\n margin-bottom: 5px;\n\n .tyk-icon {\n margin-left: 5px;\n }\n}\n\n.sub-section-title {\n margin-bottom: 5px;\n font-family: $font-family-medium;\n font-size: text-scale('md');\n line-height: line-height('md');\n\n .tyk-icon {\n margin-left: 5px;\n }\n}\n\n.section-group-title {\n margin-bottom: 5px;\n font-family: $font-family-bold;\n font-size: text-scale('sm');\n line-height: line-height('sm');\n text-transform: uppercase;\n\n .tyk-icon {\n margin-left: 5px;\n }\n}\n\n.text {\n &--default-light {\n color: theme-color('default', 'light') !important;\n }\n &--default {\n color: theme-color('default', 'base') !important;\n }\n &--primary {\n color: theme-color('primary', 'base') !important;\n }\n &--danger {\n color: theme-color('danger', 'base') !important;\n }\n &--success {\n color: theme-color('success', 'base') !important;\n }\n &--warning {\n color: theme-color('warning', 'base') !important;\n }\n}","@import 'mixins';\n@import 'variables';\n\n.tyk-form-section__title {\n font-size: text-scale('base');\n margin: map-get($spacing, 'xs') 0 map-get($spacing, 'base') 0;\n\n &--light {\n color: theme-color('background', 'dark');\n }\n}\n\n.tyk-form-group {\n margin-bottom: $form-group-margin-bottom;\n\n &.has-error > .tyk-form-control__wrapper > .tyk-form-control,\n &.has-error > .tyk-form-control__wrapper > .tyk-input-group > .tyk-form-control,\n &.has-error .tyk-file-input__wrapper > .tyk-form-control {\n border: $error-border;\n border-left: $error-border-left;\n outline: none;\n\n &:focus {\n border-left: 2px solid theme-color('danger', 'dark');\n border-color: theme-color('danger', 'dark');\n outline: none;\n }\n }\n\n label {\n font-family: $font-family-medium;\n }\n\n &--inline {\n align-items: stretch;\n display: flex;\n flex-wrap: nowrap;\n\n .tyk-form-control__wrapper {\n flex: 1;\n }\n\n label {\n display: flex;\n white-space: nowrap;\n margin-right: map-get($spacing, 'md');\n margin-top: 14px;\n }\n\n input,\n select {\n display: flex;\n }\n\n .tyk-form-control__help-block {\n display: flex;\n margin-left: auto;\n }\n }\n\n &--default {\n @include form-group-variant(\n $form-default-color,\n $text-color\n );\n }\n\n &--primary {\n @include form-group-variant(\n $form-primary-color\n );\n }\n\n &--success {\n @include form-group-variant(\n $form-success-color\n );\n }\n\n &--rounded-corners {\n &.has-error > .tyk-form-control__wrapper > .tyk-form-control {\n border-left: $error-border;\n\n &:focus {\n border-left: $error-border;\n outline: none;\n }\n }\n\n .tyk-form-control {\n border-radius: $general-border-radius;\n }\n }\n}\n\n.tyk-form-group--addon-right input {\n border-right: 0 !important;\n padding-right: 0;\n}\n\n.tyk-form-group--addon-left input {\n border-left: 0 !important;\n padding-left: 0;\n}\n\n.tyk-form-group--rounded-corners.tyk-form-group--addon-right {\n input {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n }\n .tyk-input-group__addon {\n background: $form-control-addon-background-color;\n border-top-right-radius: $general-border-radius;\n border-bottom-right-radius: $general-border-radius;\n color: $text-color;\n }\n}\n\n.tyk-form-group--rounded-corners.tyk-form-group--addon-left {\n input {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n border-left: 0 !important;\n }\n .tyk-input-group__addon {\n background: $form-control-addon-background-color;\n border-top-left-radius: $general-border-radius;\n border-bottom-left-radius: $general-border-radius;\n color: $text-color;\n }\n}\n\n.tyk-form-control__error-message {\n font-family: $font-family-regular;\n font-size: text-scale('xs');\n line-height: line-height('xs');\n margin-top: 5px;\n padding: $error-message-padding;\n position: relative;\n\n &:before {\n content: '!';\n background: theme-color('danger', 'base');\n color: white;\n font-family: $font-family-bold;\n border-radius: 8px;\n display: inline-block;\n margin-right: 5px;\n padding: 0px 7px;\n }\n}\n\n.tyk-input-group {\n align-items: center;\n display: flex;\n outline: none;\n\n &__addon {\n align-items: center;\n background-color: $form-control-addon-background-color;\n border: $form-control-border;\n display: flex;\n height: $form-control-height;\n padding: $form-control-addon-padding-top $form-control-addon-padding-right $form-control-addon-padding-bottom $form-control-addon-padding-left;\n\n &:first-child {\n border-right: 0;\n }\n\n &:last-child {\n border-left: 0;\n }\n }\n}\n\n.tyk-form-control {\n font-family: $font-family-medium;\n font-size: text-scale('sm');\n line-height: line-height('sm');\n border: $form-control-border;\n background-color: white;\n color: $text-color;\n display: block;\n height: $form-control-height;\n padding: $form-control-padding-top $form-control-padding-right $form-control-padding-bottom $form-control-padding-left;\n transition: all .2s linear;\n width: 100%;\n\n &[disabled] {\n background-color: $form-control-disabled-background-color;\n\n .tyk-input-group__addon {\n background-color: $form-control-disabled-background-color;\n }\n\n cursor: not-allowed;\n }\n\n &::placeholder {\n font-family: $form-control-placeholder-font-family;\n color: $form-control-placeholder-color;\n }\n\n &:focus,\n &:active {\n outline: none;\n border: $form-control-border-focus !important;\n\n + .tyk-input-group__addon {\n border: $form-control-border-focus !important;\n border-left: none !important;\n }\n }\n\n &__help-block {\n color: $help-block-color;\n font-style: $help-block-font-style;\n font-family: $font-family-regular;\n font-size: text-scale('xs');\n line-height: line-height('xs');\n padding: $help-block-padding;\n margin: 5px 0 0 0;\n }\n}\n\nselect {\n border-radius: 0;\n -webkit-appearance: none;\n}\n\n.inline-form-wrapper {\n align-items: center;\n display: flex;\n width: 100%;\n\n .inline-form {\n width: 100%;\n }\n\n > button {\n margin-left: 10px;\n margin-bottom: map-get($spacing, 'base');\n }\n}\n\n.tyk-checkbox,\n.tyk-radio {\n margin: 10px 0;\n\n label {\n font-family: $font-family-medium;\n }\n\n input {\n margin: 0 5px 0 0;\n }\n\n &--inline {\n display: inline-flex;\n margin-left: map-get($spacing, 'base');\n\n &:first-child {\n margin-left: 0;\n }\n }\n}\n\n.tyk-inline-form {\n align-items: center;\n display: flex;\n flex-wrap: wrap;\n\n .tyk-form-group {\n flex: 1;\n margin-left: map-get($spacing, 'md');\n min-width: 200px;\n\n &:first-child {\n margin-left:0\n }\n }\n\n > .tyk-button {\n margin-left: map-get($spacing, 'md');\n margin-bottom: map-get($spacing, 'base');\n }\n}\n","@import './variables';\n\n%tyk-accordion__trigger {\n background: none;\n border: none;\n cursor: pointer;\n display: flex;\n font-size: $accordion-item-header-font-size;\n outline: none;\n padding: $accordion-item-header-padding-y $accordion-item-header-padding-x;\n width: 100%;\n\n .tyk-icon {\n margin-left: auto;\n }\n}\n\n.tyk-accordion {\n &__item {\n display: grid;\n\n &--trigger-position-left {\n grid-template-columns: $accordion-item-outside-trigger-width auto;\n grid-template-areas:\n \"trigger header\"\n \"trigger content\";\n }\n\n &--trigger-position-right {\n grid-template-columns: auto $accordion-item-outside-trigger-width;\n grid-template-areas:\n \"header trigger\"\n \"content trigger\";\n }\n\n &--trigger-in-header {\n grid-template-columns: auto;\n grid-template-areas:\n \"header\"\n \"content\";\n }\n }\n\n &__trigger-wrapper {\n grid-area: trigger;\n display: flex;\n align-items: flex-start;\n justify-content: center;\n\n .tyk-icon {\n margin-left: auto;\n margin-right: auto;\n }\n }\n\n &__trigger {\n @extend %tyk-accordion__trigger;\n }\n\n &__item-header {\n grid-area: header;\n\n > button {\n @extend %tyk-accordion__trigger;\n }\n }\n\n &__trigger--disabled {\n color: theme-color('background', 'base');\n }\n\n &__item-header.tyk-accordion__arrow-trigger {\n align-items: center;\n display: flex;\n\n > div {\n flex: 1;\n }\n\n > button {\n margin-left: auto;\n width: auto;\n }\n }\n\n &__item-content {\n grid-area: content;\n }\n}\n",":root {\n --tooltip-max-width: 450px;\n}","@import './variables';\n\n.tyk-tooltip {\n display: flex;\n align-items: center;\n background-color: theme-color('primary', 'light');\n border: 2px solid theme-color('primary', 'base');\n border-radius: $general-border-radius;\n max-width: var(--tooltip-max-width);\n padding: map-get($spacing, 'md');\n\n > .tyk-icon:first-child {\n width: 32px;\n height: 32px;\n border-radius: 50%;\n color: white;\n background-color: theme-color('default', 'base-light');\n\n &:before {\n display: flex;\n width: 100%;\n height: 100%;\n align-items: center;\n justify-content: center;\n }\n }\n\n > .tyk-icon + .tyk-tooltip__content {\n margin-left: map-get($spacing, 'md');\n }\n\n &__content {\n color: theme-color('default', 'dark');\n word-break: break-word;\n word-wrap: break-word;\n\n + .tyk-icon {\n margin-left: map-get($spacing, 'md');\n }\n }\n\n > .tyk-icon:last-child {\n cursor: pointer;\n }\n}\n","@import '../../../common/sass/variables';\n@import '../../../common/sass/mixins';\n@import './variables';\n@import './mixins';\n\n.tyk-button {\n background-color: transparent;\n border: none;\n color: white;\n cursor: pointer;\n display: inline-block;\n font-family: $button-font-family;\n text-align: center;\n text-transform: uppercase;\n text-decoration: none;\n transition: all .2s linear;\n user-select: none;\n vertical-align: middle;\n white-space: nowrap;\n\n + .tyk-button,\n + .tyk-dropdown,\n + .tyk-toggle {\n margin-left: map-get($spacing, 'sm');\n }\n\n span + i {\n margin-left: map-get($spacing, 'sm');\n }\n\n i + span {\n margin-left: map-get($spacing, 'sm');\n }\n\n &.disabled {\n cursor: not-allowed;\n opacity: 0.7;\n }\n\n &:hover {\n color: white;\n text-decoration: none;\n }\n\n &:focus {\n outline: none;\n }\n\n @include button-size(\n $padding-y-button-md,\n $padding-x-button-md,\n text-scale('sm'),\n $line-height-button-md,\n $button-border-radius\n );\n\n &--white {\n @include button-variant(\n white,\n transparent,\n theme-color('default', 'base'),\n theme-color('background', 'dark'),\n theme-color('background', 'dark'),\n theme-color('background', 'dark'),\n theme-color('background', 'dark'),\n white\n );\n }\n\n &--primary {\n @include button-variant(\n $button-primary-color,\n $button-primary-color,\n $button-primary-text-color,\n $button-primary-hover-color\n );\n\n &-link {\n @include button-variant-link(\n $button-primary-color\n );\n }\n\n &-outline {\n @include button-variant-outline(\n $button-primary-color,\n );\n }\n\n &-gradient {\n @include button-variant-gradient(\n $button-primary-gradient-start-color,\n $button-primary-gradient-end-color\n );\n }\n }\n &--success {\n @include button-variant(\n $button-success-color,\n $button-success-color,\n white,\n $button-success-hover-color,\n );\n\n &-link {\n @include button-variant-link(\n $button-success-color\n );\n }\n\n &-outline {\n @include button-variant-outline(\n $button-success-color\n );\n }\n\n &-gradient {\n @include button-variant-gradient(\n $button-success-gradient-start-color,\n $button-success-gradient-end-color\n );\n }\n }\n &--danger {\n @include button-variant(\n $button-danger-color,\n $button-danger-color,\n white,\n $button-danger-hover-color\n );\n\n &-link {\n @include button-variant-link(\n $button-danger-color\n );\n }\n\n &-outline {\n @include button-variant-outline(\n $button-danger-color\n );\n }\n\n &-gradient {\n @include button-variant-gradient(\n $button-danger-gradient-start-color,\n $button-danger-gradient-end-color\n );\n }\n }\n\n &--warning {\n @include button-variant(\n $button-warning-color,\n transparent,\n $button-warning-font-color\n );\n\n &-link {\n @include button-variant-link(\n $button-warning-color\n );\n }\n\n &-outline {\n @include button-variant-outline(\n $button-warning-color\n );\n }\n\n &-gradient {\n @include button-variant-gradient(\n $button-warning-gradient-start-color,\n $button-warning-gradient-end-color,\n $button-warning-font-color\n );\n }\n }\n &--info {\n @include button-variant(\n $button-info-color\n );\n\n &-link {\n @include button-variant-link(\n $button-info-color\n );\n }\n\n &-outline {\n @include button-variant-outline(\n $button-info-color\n );\n }\n\n &-gradient {\n @include button-variant-gradient(\n $button-info-gradient-start-color,\n $button-info-gradient-end-color,\n $button-info-font-color\n );\n }\n }\n\n &--default {\n @include button-variant(\n $button-default-color,\n $button-default-color,\n white,\n $button-default-hover-color\n );\n\n &-link {\n @include button-variant-link(\n $text-color\n );\n }\n\n &-outline {\n @include button-variant-outline(\n $button-default-color\n );\n }\n\n &-gradient {\n @include button-variant-gradient(\n $button-default-gradient-start-color,\n $button-default-gradient-end-color\n );\n }\n }\n\n &--sm {\n @include button-size(\n $padding-y-button-sm,\n $padding-x-button-sm,\n text-scale('xs'),\n line-height('xs'),\n $button-border-radius\n );\n }\n\n &--md {\n @include button-size(\n $padding-y-button-md,\n $padding-x-button-md,\n text-scale('sm'),\n line-height('sm'),\n $button-border-radius\n );\n }\n &--lg {\n @include button-size(\n $padding-y-button-lg,\n $padding-x-button-lg,\n text-scale('md'),\n line-height('md'),\n $button-border-radius\n );\n }\n\n &--icon-only {\n border-radius: $general-border-radius;\n padding: 0;\n line-height: map-get($spacing, 'md');\n width: 24px;\n\n &:hover {\n border-radius: $general-border-radius;\n }\n }\n\n &--fit {\n height: auto;\n width: auto;\n line-height: normal;\n }\n\n &--no-style {\n background: transparent;\n border: none;\n color: $text-color;\n\n &:hover {\n background: transparent;\n border: none;\n color: $text-color;\n }\n }\n}\n","@mixin button-size($padding-y, $padding-x, $font-size, $line-height, $border-radius) {\n padding: $padding-y $padding-x;\n font-size: $font-size;\n line-height: $line-height;\n border-radius: $border-radius;\n}\n\n@mixin button-variant(\n $background,\n $border: $background,\n $color: white,\n $hover-background: darken($background, 7.5%),\n $hover-border: darken($border, 10%),\n $active-background: darken($background, 10%),\n $active-border: darken($border, 12.5%),\n $hover-color: $color\n) {\n background-color: $background;\n color: $color;\n border: $general-border-width solid $border;\n\n &:hover {\n background-color: $hover-background;\n color: $hover-color;\n }\n}\n\n@mixin button-variant-link(\n $color: white\n) {\n background-color: transparent;\n border: $general-border-width solid transparent;\n color: $color;\n\n &:hover {\n background-color: transparent;\n color: $color;\n border-color: $color;\n text-decoration: underline;\n }\n}\n\n@mixin button-variant-outline(\n $border,\n $color: $border,\n $hover-color: white,\n $hover-background: $border,\n $hover-border: $border,\n $active-background: darken($border, 10%),\n $active-border: darken($border, 12.5%)\n) {\n border: $general-border-width solid $border;\n background-color: transparent;\n color: $color;\n\n &:hover {\n background-color: $border;\n color: $hover-color;\n }\n\n &.disabled {\n color: $border;\n\n &:hover {\n background-color: transparent;\n color: $border;\n }\n }\n}\n\n@mixin button-variant-gradient ($left-color, $right-color, $color: white, $hover-enabled: true) {\n border-image: linear-gradient(to right, $left-color, $right-color, $left-color) 0 round;\n background: transparent linear-gradient(to right, $left-color, $right-color, $left-color);\n background-origin: border-box;\n background-clip: border-box;\n background-size: 200% auto;\n background-position: 0 0;\n color: $color;\n\n @if $hover-enabled {\n &:hover,\n &:active,\n &:active:focus {\n border-image: linear-gradient(to right, $left-color, $right-color, $left-color) 0 round;\n background: transparent linear-gradient(to right, $left-color, $right-color, $left-color);\n background-position: 100% 0;\n background-size: 200% auto;\n background-clip: border-box;\n\n &.disabled {\n border-image: linear-gradient(to right, $left-color, $right-color, $left-color) 0 round;\n background: transparent linear-gradient(to right, $left-color, $right-color, $left-color);\n background-origin: border-box;\n background-clip: border-box;\n background-size: 200% auto;\n background-position: 0 0;\n color: $color;\n }\n }\n }\n}\n","$button-font-family: $font-family-bold !default;\n$button-border-radius: map-get($spacing, 'md') !default;\n\n$padding-y-button-sm: 3px !default;\n$padding-x-button-sm: map-get($spacing, 'base') !default;\n$padding-y-button-md: 8px !default;\n$padding-x-button-md: 23px !default;\n$padding-y-button-lg: 13px !default;\n$padding-x-button-lg: 23px !default;\n\n$line-height-button-sm: line-height('xs') !default;\n$line-height-button-md: line-height('md') !default;\n$line-height-button-lg: line-height('lg') !default;\n\n$button-default-color: theme-color('default', 'base') !default;\n$button-default-hover-color: theme-color('default', 'dark') !default;\n$button-default-gradient-start-color: theme-color('default', 'base') !default;\n$button-default-gradient-end-color: theme-color('default', 'dark') !default;\n\n$button-primary-color: theme-color('default', 'base-light') !default;\n$button-primary-hover-color: theme-color('default', 'dark') !default;\n$button-primary-text-color: white !default;\n$button-primary-gradient-start-color: theme-color('primary', 'base') !default;\n$button-primary-gradient-end-color: theme-color('primary', 'dark') !default;\n\n$button-success-color: theme-color('success', 'base') !default;\n$button-success-hover-color: theme-color('success', 'dark') !default;\n$button-success-gradient-start-color: theme-color('success', 'base') !default;\n$button-success-gradient-end-color: theme-color('success', 'dark') !default;\n\n$button-danger-color: theme-color('danger', 'base') !default;\n$button-danger-hover-color: theme-color('danger', 'dark') !default;\n$button-danger-gradient-start-color: theme-color('danger', 'base') !default;\n$button-danger-gradient-end-color: theme-color('danger', 'dark') !default;\n\n$button-warning-color: theme-color('warning', 'base') !default;\n$button-warning-font-color: white !default;\n$button-warning-gradient-start-color: theme-color('warning', 'base') !default;\n$button-warning-gradient-end-color: theme-color('warning', 'light') !default;\n\n$button-info-color: theme-color('info', 'base') !default;\n$button-info-font-color: $text-color;\n$button-info-gradient-start-color: theme-color('info', 'base') !default;\n$button-info-gradient-end-color: theme-color('info', 'light') !default;\n\n$button-icon-only-background-hover: theme-color('background', 'light') !default;\n",".tyk-button-group__wrapper {\n display: inline-block;\n position: relative;\n vertical-align: middle;\n\n label {\n font-family: $font-family-medium;\n }\n\n .tyk-button-group {\n display: flex;\n\n > .tyk-button-group:not(:first-child) {\n > .tyk-button {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n }\n }\n\n > .tyk-button-group:not(:last-child) {\n > .tyk-button {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n }\n }\n\n .tyk-button {\n border-radius: 0;\n\n + .tyk-button {\n margin-left: 0;\n }\n\n + .tyk-dropdown {\n margin-left: 0;\n }\n\n &:first-child {\n border-top-left-radius: map-get($spacing, 'md');\n border-bottom-left-radius: map-get($spacing, 'md');\n }\n\n &:last-child {\n border-top-right-radius: map-get($spacing, 'md');\n border-bottom-right-radius: map-get($spacing, 'md');\n }\n }\n }\n}\n",".tyk-chart__wrapper {\n position: relative;\n}\n\n.tyk-chart--no-data,\n.tyk-chart--loading-chart {\n filter: blur(map-get($spacing, 'sm'));\n -webkit-filter: blur(map-get($spacing, 'sm'));\n}\n",".collapse-exit,\n.collapse-exit-active,\n.collapse-exit-done {\n height: 0px;\n}\n\n.collapse-wrapper {\n overflow: hidden;\n transition: all .2s;\n}\n\n.collapse-horizontal-exit,\n.collapse-horizontal-exit-active,\n.collapse-horizontal-exit-done {\n width: 0px;\n}\n\n.collapse-horizontal-enter,\n.collapse-horizontal-enter-active,\n.collapse-horizontal-enter-done {\n width: 100%;\n}\n",".tyk-copy-to-clipboard {\n position: absolute;\n left: -1000px;\n top: -1000px;\n}","@import './variables';\n\n.tyk-fixed-wrapper {\n left: $fixed-wrapper-left;\n position: sticky;\n right: $fixed-wrapper-right;\n top: $fixed-wrapper-top;\n z-index: 8;\n\n &--scrolled {\n box-shadow: 2px 2px 5px rgba(0, 0, 0, 0.1);\n }\n}\n",".floating-container {\n position: fixed;\n top: -9999px;\n overflow: auto;\n z-index: $modal-z-index;\n}",".tyk-icon {\n + .tyk-icon {\n margin-left: map-get($spacing, 'sm');\n }\n}\n",".tyk-infinite-scroller {\n height: 100%;\n overflow: hidden;\n position: relative;\n\n .loading {\n background: linear-gradient(180deg, rgba(255,255,255,0), rgba(255,255,255,1));\n justify-content: center;\n bottom: 0;\n display: flex;\n left: 0;\n padding: map-get($spacing, 'base') 0;\n right: 0;\n top: auto;\n width: 100%;\n }\n\n &__wrapper {\n height: 100%;\n overflow-y: auto;\n }\n}\n","@import '../../../common/sass/variables';\n@import '../../../common/sass/mixins';\n\n.tyk-info-note {\n border-radius: 0;\n position: relative;\n\n p + p {\n margin-top: map-get($spacing, 'base');\n }\n\n &:after {\n content: '';\n border-style: solid;\n border-width: 0 map-get($spacing, 'md') map-get($spacing, 'md') 0;\n border-color: transparent theme-color(\"info\", \"base\") transparent transparent;\n height: 0;\n position: absolute;\n right: 0;\n top: 0;\n width: 0;\n }\n\n .tyk-message {\n border-radius: 0;\n padding-top: 40px;\n padding-bottom: 40px;\n }\n}\n","@import '../../../common/sass/variables';\n@import '../../../common/sass/mixins';\n\n.tyk-loading__wrapper {\n background: rgba(255, 255, 255, 0.6);\n bottom: 0;\n position: absolute;\n left: 0;\n right: 0;\n top: 0;\n z-index: 99;\n}\n\n.loader-wrapper {\n min-height: 100px;\n position: relative;\n}\n\n.loading {\n position: absolute;\n top: calc(50% - map-get($spacing, 'sm'));\n left: 50%;\n\n &.relative {\n left: auto;\n padding: 25px;\n position: relative;\n text-align: center;\n top: auto;\n width: 100%;\n }\n}\n\n.loading-bar {\n display: inline-block;\n width: 4px;\n height: map-get($spacing, 'md');\n border-radius: 4px;\n animation: loading 1s ease-in-out infinite;\n margin-left: 2px;\n}\n.loading-bar:nth-child(1) {\n animation-delay: 0;\n background-color: theme-color('success', 'base');\n opacity: 1;\n}\n.loading-bar:nth-child(2) {\n animation-delay: 0.09s;\n background-color: theme-color('success', 'base');\n opacity: 0.80;\n}\n.loading-bar:nth-child(3) {\n animation-delay: .18s;\n background-color: theme-color('success', 'base');\n opacity: 0.60;\n}\n.loading-bar:nth-child(4) {\n animation-delay: .27s;\n background-color: theme-color('success', 'base');\n opacity: 0.40;\n}\n\n@keyframes loading {\n 0% {\n transform: scale(1);\n }\n 20% {\n transform: scale(1, 2.2);\n }\n 40% {\n transform: scale(1);\n }\n}\n",".tyk-list {\n border: $general-border-width solid theme-color('default', 'light');\n border-radius: $general-border-radius;\n font-size: text-scale('sm');\n list-style-type: none;\n margin: 0;\n max-height: 191px;\n padding: 0;\n overflow: auto;\n\n &--with-inline-label {\n display: flex;\n\n > label {\n margin-right: map-get($spacing, 'md');\n }\n }\n\n li {\n border-bottom: 1px solid theme-color('default', 'light');\n padding: map-get($spacing, 'sm') map-get($spacing, 'md');\n font-family: $font-family-medium;\n\n &:last-child {\n border: none;\n }\n }\n\n &--default {\n border-color: theme-color('default', 'light');\n }\n\n &--primary {\n border-color: theme-color('primary', 'base');\n\n li {\n border-color: theme-color('primary', 'light');\n color: $text-color;\n }\n }\n\n &--primary-light {\n border-color: theme-color('primary', 'light');\n\n li {\n border-color: theme-color('primary', 'light');\n color: $text-color;\n }\n }\n\n &--success {\n border-color: theme-color('success', 'base');\n color: theme-color('success', 'base');\n\n li {\n border-color: theme-color('success', 'base');\n }\n }\n\n &--danger {\n border-color: theme-color('danger', 'base');\n color: $text-color;\n\n li {\n border-color: theme-color('danger', 'light');\n }\n }\n}\n\nul.tyk-list--inline {\n align-items: center;\n display: flex;\n\n li {\n padding: 0 map-get($spacing, 'sm');\n }\n\n &.tyk-list--with-separator {\n\n li:not(:first-child) {\n border-left: 1px solid theme-color('default', 'base');\n }\n }\n}\n","@import '../../../common/sass/variables';\n@import '../../../common/sass/mixins';\n@import './mixins';\n@import './variables';\n\n.tyk-message {\n display: flex;\n align-items: center;\n border-radius: $tyk-message-border-radius;\n margin-bottom: map-get($spacing, 'md');\n padding: $tyk-message-padding-top $tyk-message-padding-right $tyk-message-padding-bottom $tyk-message-padding-left;\n\n &__content {\n flex-grow: 1;\n margin-left: map-get($spacing, 'md');\n margin-right: map-get($spacing, 'md');\n }\n\n > .tyk-icon:first-child {\n width: 32px;\n height: 32px;\n flex-shrink: 0;\n border-radius: 50%;\n color: white;\n\n &:before {\n display: flex;\n width: 100%;\n height: 100%;\n align-items: center;\n justify-content: center;\n }\n }\n\n > .tyk-icon:last-child {\n cursor: pointer;\n }\n\n &--default {\n @include message-variant(\n $tyk-message-default-background,\n $tyk-message-default-border,\n $tyk-message-default-text-color\n );\n\n > .tyk-icon:first-child {\n transform: rotate(180deg);\n }\n }\n\n &--info {\n @include message-variant(\n $tyk-message-info-background,\n $tyk-message-info-border,\n $tyk-message-info-text-color\n );\n }\n\n &--success {\n @include message-variant(\n $tyk-message-success-background,\n $tyk-message-success-border,\n $tyk-message-success-text-color\n );\n }\n\n &--warning {\n @include message-variant(\n $tyk-message-warning-background,\n $tyk-message-warning-border,\n $tyk-message-warning-text-color\n );\n }\n\n &--danger {\n @include message-variant(\n $tyk-message-danger-background,\n $tyk-message-danger-border,\n $tyk-message-danger-text-color\n );\n }\n}\n","@mixin message-variant(\n $background,\n $border: transparent,\n $color: $text-color\n) {\n background-color: $background;\n border: $general-border-width solid $border;\n color: $color;\n\n & > .tyk-icon:first-child {\n background-color: $border;\n }\n}\n","@import '../../../common/sass/variables';\n@import '../../../common/sass/mixins';\n@import './variables';\n\n.tyk-modal {\n --theme-header-height: 15px;\n --theme-header-icon-size: 65px;\n align-items: center;\n bottom: 0;\n left: 0;\n pointer-events: none;\n position: fixed;\n right: 0;\n top: 0;\n z-index: -1;\n\n .tyk-panel {\n border: $general-border-width solid theme-color('background', 'dark');\n box-shadow: none;\n -webkit-box-shadow: none;\n }\n\n .tyk-modal__dialog {\n opacity: 0;\n transition: all .2s ease;\n }\n\n &.opened {\n display: flex;\n z-index: $modal-z-index;\n\n .tyk-modal__dialog {\n display: flex;\n max-height: 92vh;\n opacity: 1;\n pointer-events: all;\n }\n }\n\n &.appear-enter-done {\n .tyk-modal__dialog {\n opacity: 1;\n margin-top: 0;\n }\n }\n\n &__theme-header {\n position: absolute;\n top: -1px;\n left: 0;\n right: 0;\n height: var(--theme-header-height);\n border-top-left-radius: $general-border-radius;\n border-top-right-radius: $general-border-radius;\n\n .tyk-icon {\n position: absolute;\n left: calc(50% - var(--theme-header-icon-size) / 2);\n top: calc((var(--theme-header-icon-size) - var(--theme-header-height)) / -2);\n width: var(--theme-header-icon-size);\n height: var(--theme-header-icon-size);\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: text-scale('xxl');\n color: white;\n }\n }\n\n &--theme-success {\n .tyk-modal__theme-header {\n background-color: theme-color('success', 'base');\n\n .tyk-icon {\n background-color: theme-color('success', 'base');\n }\n }\n }\n\n &--theme-warning {\n .tyk-modal__theme-header {\n background-color: theme-color('warning', 'base');\n\n .tyk-icon {\n background-color: theme-color('warning', 'base');\n }\n }\n }\n\n &--theme-danger {\n .tyk-modal__theme-header {\n background-color: theme-color('danger', 'base');\n\n .tyk-icon {\n background-color: theme-color('danger', 'base');\n }\n }\n }\n}\n\n.tyk-modal__dialog {\n opacity: 0;\n margin: 0 auto;\n margin-top: -5%;\n pointer-events: all;\n transition: all .2s linear;\n width: 85%;\n\n @include mq('sm') {\n width: 600px;\n }\n\n &.tyk-modal--lg {\n @include mq('sm') {\n width: 800px;\n }\n }\n}\n\n.tyk-modal__content {\n background: white;\n border-radius: $general-border-radius;\n display: flex;\n flex-direction: column;\n position: relative;\n width: 100%;\n}\n\n.tyk-modal__body {\n flex: 1;\n overflow: auto;\n --padding-top: calc(#{$tyk-modal-body-padding} + (var(--theme-header-icon-size) - var(--theme-header-height)) / 2);\n padding: var(--padding-top) $tyk-modal-body-padding $tyk-modal-body-padding;\n\n &.no-padding {\n padding: 0;\n }\n}\n\n.tyk-modal__footer {\n align-items: center;\n display: flex;\n justify-content: flex-end;\n padding: $tyk-modal-footer-padding;\n\n >:not(:first-child) {\n margin-left: map-get($spacing, 'xs');\n }\n}\n\n.tyk-modal__backdrop {\n background-color: theme-color('default', 'dark');\n border: none;\n bottom: 0;\n display: none;\n left: 0;\n position: fixed;\n right: 0;\n top: 0;\n width: 100%;\n z-index: $modal-z-index - 1;\n\n &.opened {\n display: block;\n opacity: 0.5;\n transition: opacity .2s ease;\n }\n\n &.fade-enter-done {\n opacity: 0.5;\n }\n}\n\n/* Deprecated Modal.Header and Modal.Title */\n.tyk-modal__header {\n --padding-top: calc(#{$tyk-modal-header-padding} + (var(--theme-header-icon-size) - var(--theme-header-height)) / 2);\n padding: var(--padding-top) $tyk-modal-header-padding $tyk-modal-header-padding;\n align-items: center;\n border-bottom: 1px solid $tyk-modal-borders-color;\n display: flex;\n width: 100%;\n\n .tyk-modal--theme-none & {\n padding-top: $tyk-modal-header-padding;\n }\n\n button {\n margin-left: auto;\n padding: 0 5px;\n }\n\n + .tyk-modal__body {\n padding-top: $tyk-modal-body-padding;\n }\n}\n\n.tyk-modal__title {\n font-family: $font-family-medium;\n font-weight: 500;\n margin: 0;\n width: 100%;\n}\n/* End of deprecated styles */\n","@import './variables';\n\n.tyk-navigation {\n background-color: $navigation-background-color;\n height: 100%;\n overflow: auto;\n padding: $navigation-padding;\n width: 100%;\n\n .tyk-navigation-item {\n width: 100%;\n\n a {\n color: $navigation-item-color;\n display: flex;\n padding: $navigation-item-padding-y $navigation-item-padding-x;\n text-decoration: none;\n transition: all .2s ease;\n\n &:hover {\n background-color: $navigation-item-hover-background-color;\n color: $navigation-item-hover-color;\n }\n\n &.active {\n background-color: $navigation-item-active-background-color;\n color: $navigation-item-active-color;\n }\n }\n }\n}\n","@import './variables';\n\n.tyk-nav-bar {\n align-items: center;\n border: none;\n background-color: $nav-bar-background-color;\n font-family: $nav-bar-font-family;\n color: $nav-bar-text-color;\n margin: 0;\n padding: $nav-bar-padding;\n width: 100%;\n z-index: 8;\n transition: all .2s linear;\n\n &__pre {\n align-self: flex-end;\n color: $text-color;\n flex-basis: 100%;\n\n a {\n font-family: $font-family-bold;\n font-size: text-scale('xs');\n line-height: line-height('xs');\n color: $text-color;\n }\n }\n\n &.tyk-nav-bar__with-tabs .tyk-tabs--default > ul li button {\n padding-top: 0;\n }\n\n @media screen and (max-width: 1024px) {\n padding-left: map-get($spacing, 'md');\n\n .menu-opened & {\n transform: translate($nav-bar-animate-left);\n }\n }\n\n h1 {\n color: $nav-bar-text-color;\n }\n\n h4 {\n margin: 0;\n }\n\n .tyk-nav-bar__wrapper {\n align-items: center;\n padding-bottom: $nav-bar-bottom-padding;\n display: flex;\n flex-wrap: wrap;\n height: $nav-bar-height;\n\n &.tyk-nav-bar--align-top {\n align-items: flex-start;\n }\n\n @media screen and (max-width: 1024px) {\n padding-left: 0;\n }\n\n h1 {\n font-size: $nav-bar-header-font-size;\n font-family: $nav-bar-header-font-family;\n line-height: $nav-bar-header-line-height;\n margin: 0;\n padding-right: map-get($spacing, 'sm');\n }\n\n h4 {\n padding-right: map-get($spacing, 'sm');\n }\n\n .tyk-nav-bar__container {\n align-items: center;\n display: flex;\n flex-grow: 1;\n justify-content: space-between;\n }\n\n .tyk-nav-bar__left {\n flex-grow: 1;\n }\n\n .tyk-nav-bar__right {\n margin-left: auto;\n }\n }\n}\n","$nav-bar-background-color: white !default;\n$nav-bar-text-color: theme-color('default', 'base') !default;\n$nav-bar-padding-left: 265px !default;\n$nav-bar-animate-left: 245px !default;\n$nav-bar-top-padding: map-get($spacing, 'sm') !default;\n$nav-bar-bottom-padding: 0 !default;\n$nav-bar-left-padding: map-get($spacing, 'md') !default;\n$nav-bar-right-padding: map-get($spacing, 'md') !default;\n$nav-bar-padding: 0 $nav-bar-right-padding 0 $nav-bar-left-padding !default;\n$nav-bar-top: 51px !default;\n$nav-bar-header-font-size: text-scale('xxl') !default;\n$nav-bar-header-font-family: $headings-font-family-bold !default;\n$nav-bar-header-line-height: line-height('xxl') !default;\n$nav-bar-height: 92px !default;\n$nav-bar-font-family: $font-family-regular !default;\n","@import '../../../common/sass/variables';\n@import '../../../common/sass/mixins';\n@import './variables';\n@import './mixins';\n\n.tyk-panel {\n background: white;\n border-radius: $panel-border-radius;\n margin-bottom: 20px;\n font-family: $font-family-medium;\n position: relative;\n\n &.has-error,\n & &.has-error {\n border: $general-border-width solid theme-color('danger', 'base');\n }\n\n &__header {\n align-items: center;\n border-bottom: 1px solid $panel-default-border-bottom-color;\n display: flex;\n font-family: $font-family-regular;\n\n > .tyk-icon,\n > .tyk-tooltip__wrapper {\n margin-left: 5px;\n }\n }\n\n .tyk-panel {\n border: $general-border-width solid theme-color('default', 'light');\n box-shadow: none;\n -webkit-box-shadow: none;\n }\n\n &--blank {\n &.tyk-panel--collapsed {\n margin-bottom: 20px;\n\n .tyk-panel__header {\n margin-bottom: 0;\n }\n }\n\n .tyk-panel__header {\n margin-bottom: -20px;\n padding: $padding-y-blank-panel-header $padding-x-panel-header;\n @include panel-variant(\n white,\n theme-color('default', 'base')\n );\n }\n }\n\n &--primary {\n background-color: transparent;\n\n .tyk-panel__header {\n @include panel-variant($panel-primary-header-color, $panel-primary-header-text-color);\n }\n\n .tyk-panel__body {\n @include panel-variant($panel-primary-body-color, $panel-primary-body-text-color);\n }\n .tyk-panel__header {\n border: $panel-primary-border-color;\n }\n\n & .tyk-form-group {\n label {\n color: $panel-primary-label-color;\n }\n }\n\n .tyk-toggle {\n .tyk-toggle__label {\n color: $panel-primary-label-color;\n }\n }\n }\n\n &--success {\n .tyk-panel__header {\n @include panel-variant(\n theme-color('success', 'base')\n );\n }\n }\n &--danger {\n .tyk-panel__header {\n @include panel-variant(\n theme-color('danger', 'base')\n );\n }\n }\n &--warning {\n .tyk-panel__header {\n @include panel-variant(\n theme-color('warning', 'base')\n );\n }\n }\n}\n\n.tyk-panel__body {\n background-color: white;\n border-radius: $panel-border-radius;\n font-family: $font-family-regular;\n padding: $padding-panel-body;\n position: relative;\n transition: height .2s;\n\n & ~ .tyk-panel__header {\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0;\n }\n\n &.no-padding {\n padding: 0;\n }\n}\n\n.tyk-panel__header {\n border-radius: $panel-border-radius;\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0;\n font-family: $panel-header-font-family;\n overflow: hidden;\n padding: $padding-y-panel-header $padding-x-panel-header;\n position: relative;\n\n .tyk-panel--collapsed & {\n border-bottom-left-radius: $panel-border-radius;\n border-bottom-right-radius: $panel-border-radius;\n }\n\n & ~ .tyk-panel__body {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n }\n\n &h3 {\n margin: 0;\n }\n\n ng-transclude {\n vertical-align: middle;\n }\n\n &.collapsable {\n cursor: pointer;\n\n .tyk-panel__icon-collapse--right & {\n padding-right: $padding-x-right-panel-collapsable;\n }\n\n .tyk-panel__icon-collapse--left & {\n padding-left: $padding-x-left-panel-collapsable;\n }\n }\n\n .collapsable__arrow-right {\n font-size: text-scale('sm');\n position: absolute;\n padding: map-get($spacing, 'sm');\n right: map-get($spacing, 'sm');\n top: calc(50% - 21px);\n }\n .collapsable__arrow-left {\n font-size: text-scale('sm');\n position: absolute;\n padding: 8px 0px map-get($spacing, 'sm') 20px;\n left: 0px;\n top: calc(50% - 21px);\n }\n}\n\n.tyk-panel__footer {\n align-items: center;\n border-top: 1px solid theme-color('background', 'light');\n display: flex;\n justify-content: flex-end;\n padding: map-get($spacing, 'lg');\n\n >:not(:first-child) {\n margin-left: 5px;\n }\n}\n","@mixin panel-variant($background: white, $color: white) {\n background-color: $background;\n border: none;\n color: $color;\n font-size: text-scale('lg');\n line-height: line-height('lg');\n}\n","$padding-y-panel-header: map-get($spacing, 'sm') !default;\n$padding-x-panel-header: 25px !default;\n$padding-y-blank-panel-header: map-get($spacing, 'md') !default;\n$padding-panel-body: 25px !default;\n$padding-x-right-panel-collapsable: 48px !default;\n$padding-x-left-panel-collapsable: $padding-x-right-panel-collapsable !default;\n$panel-border-radius: 0 !default;\n$panel-default-border-bottom-color: theme-color('background', 'base') !default;\n$panel-header-font-size: text-scale('base') !default;\n$panel-header-font-family: $font-family-medium !default;\n$panel-primary-header-color: theme-color('primary', 'base') !default;\n$panel-primary-body-color: white !default;\n$panel-primary-header-text-color: white !default;\n$panel-primary-body-text-color: $text-color !default;\n$panel-primary-label-color: $text-color !default;\n$panel-primary-border-color: none !default;\n",".tyk-pill {\n align-items: center;\n border-radius: $general-border-radius;\n display: inline-flex;\n font-size: text-scale('xs');\n line-height: 19px;\n margin: $pill-margin;\n padding: 6px map-get($spacing, 'base');\n font-family: $font-family-medium;\n\n &--square {\n border-radius: 8px;\n }\n\n i {\n font-size: text-scale('xs');\n }\n\n + .tyk-pill {\n margin-right: map-get($spacing, 'sm');\n }\n\n button + span {\n margin-left: map-get($spacing, 'sm');\n }\n\n span + button {\n margin-left: map-get($spacing, 'sm');\n }\n\n &:first-child {\n margin-right: map-get($spacing, 'sm');\n }\n\n &:last-child {\n margin-right: 0;\n }\n\n &--default {\n background-color: $default-pill-background-color;\n color: $default-pill-color;\n\n i {\n color: $default-pill-color;\n }\n }\n\n &--default-outline {\n box-shadow: $default-outline-pill-box-shadow;\n color: $text-color;\n\n i {\n color: $text-color;\n }\n }\n\n &--primary {\n background-color: theme-color('primary', 'base');\n color: white;\n\n i {\n color: $default-pill-color;\n }\n }\n\n &--primary-outline {\n box-shadow: inset 0px 0px 0px 2px theme-color('primary', 'base');\n color: $text-color;\n\n i {\n color: $text-color;\n }\n }\n\n &--success {\n background-color: theme-color('success', 'base');\n color: white;\n\n i {\n color: white;\n }\n }\n\n &--success-outline {\n box-shadow: inset 0px 0px 0px 2px theme-color('success', 'base');\n color: $text-color;\n\n i {\n color: $text-color;\n }\n }\n\n &--danger {\n background-color: theme-color('danger', 'base');\n color: white;\n\n i {\n color: white;\n }\n }\n\n &--danger-outline {\n box-shadow: inset 0px 0px 0px 2px theme-color('danger', 'base');\n color: $text-color;\n\n i {\n color: $text-color;\n }\n }\n\n &--warning {\n background-color: theme-color('warning', 'base');\n color: white;\n\n i {\n color: white;\n }\n }\n\n &--warning-outline {\n box-shadow: inset 0px 0px 0px 2px theme-color('warning', 'base');\n color: $text-color;\n\n i {\n color: $text-color;\n }\n }\n\n &--info {\n background-color: theme-color('info', 'base');\n color: white;\n\n i {\n color: white;\n }\n }\n\n &--info-outline {\n box-shadow: inset 0px 0px 0px 2px theme-color('info', 'base');\n color: $text-color;\n\n i {\n color: $text-color;\n }\n }\n}\n","\n.tyk-ui-reveal-wrapper {\n display: flex;\n flex-direction: column;\n justify-content: flex-end;\n align-items: stretch;\n width: 100%;\n height: 100%;\n z-index: 1000;\n position: absolute;\n bottom: 0;\n left: 0;\n pointer-events: none;\n\n &__panel {\n max-height: calc(100% - 2rem);\n background-color: white;\n padding: 0;\n margin: 0;\n overflow-y: auto;\n display: flex;\n flex-direction: column;\n pointer-events: all;\n flex-shrink: 0;\n overflow: auto;\n }\n\n &__hole {\n flex-grow: 1;\n opacity: 0;\n width: 100%;\n background-color: green;\n -webkit-user-select: none;\n user-select: none;\n pointer-events: none;\n z-index: -1;\n }\n\n &__gutter {\n height: 2rem;\n width: 100%;\n cursor: row-resize;\n display: flex;\n background-color: theme-color('primary', 'base');\n z-index: 2;\n pointer-events: all;\n justify-content: space-between;\n align-items: stretch;\n position: relative;\n box-shadow: 0 5px 10px rgba(0, 0, 0, 0.3);\n\n &__headerleft, &__headerright\n {\n display: flex;\n align-items: center;\n flex: 1;\n }\n\n &__headerleft {\n justify-content: flex-start;\n }\n\n &__headerright {\n justify-content: flex-end;\n }\n\n &__logo {\n width: 1rem;\n height: 1rem;\n -webkit-user-select: none;\n user-select: none;\n pointer-events: none;\n padding: 0.2rem;\n z-index: 2;\n background-image: url('#{$component-images-path}/drag.svg');\n align-self: center;\n }\n }\n\n\n &__gutter__logo:hover {\n border: dashed;\n }\n\n}","@import './variables';\n\n.tyk-sidebar {\n background-color: $sidebar-background-color;\n height: $sidebar-height;\n flex: 0 0 $sidebar-width;\n padding: $sidebar-padding;\n position: -webkit-sticky;\n position: sticky;\n overflow: auto;\n top: $sidebar-top;\n}\n","$sidebar-background-color: white !default;\n$sidebar-top: 58px !default;\n$sidebar-height: calc(100vh - 58px) !default;\n$sidebar-width: 280px !default;\n$sidebar-padding: 0 !default;\n","@import '../../../common/sass/variables';\n@import '../../../common/sass/mixins';\n@import './variables';\n\n.tyk-table {\n border-collapse: collapse;\n border-spacing: 0;\n background-color: white;\n border-radius: $general-border-radius;\n width: 100%;\n\n &__wrapper {\n border: $general-border-width solid theme-color('default', 'light');\n border-radius: $general-border-radius;\n overflow: auto;\n\n &--no-border {\n border: none\n }\n\n &.no-innner-horizontal-borders {\n & .tyk-table > thead th,\n & .tyk-table > tbody td {\n border-right: none;\n }\n }\n }\n\n > thead th {\n border-right: 1px solid theme-color('default', 'light');\n color: $text-color;\n font-size: text-scale('sm');\n line-height: line-height('sm');\n font-family: $font-family-bold;\n text-transform: uppercase;\n\n &:last-child {\n border-right: none;\n }\n\n i {\n font-size: text-scale('xs');\n }\n\n .tyk-button {\n background: none;\n color: theme-color('default', 'base');\n padding: 0;\n }\n }\n\n > thead th {\n padding: $table-th-padding;\n }\n\n > tbody tr:hover {\n background: rgba(theme-color('background', 'light'), 0.4);\n }\n\n > tbody td {\n border-right: 1px solid theme-color('default', 'light');\n font-size: text-scale('sm');\n line-height: line-height('sm');\n font-family: $font-family-regular;\n padding: $table-td-padding-y $table-td-padding-x;\n\n &:last-child {\n border-right: none;\n }\n \n vertical-align: middle;\n\n &.fit {\n white-space: nowrap;\n width: 1%;\n }\n\n input:not([type='checkbox']):not([type='radio']) {\n margin-top: map-get($spacing, 'base');\n }\n\n a {\n color: $text-color;\n font-family: $font-family-medium;\n }\n\n label {\n margin: 0;\n }\n\n input[type='checkbox'] {\n margin: 0;\n }\n }\n\n tbody > tr {\n border-top: 1px solid theme-color('default', 'light');\n transition: all .4s linear;\n border-radius: $general-border-radius;\n \n &.clickable {\n cursor: pointer;\n }\n }\n\n > tbody tr td:first-child,\n > thead tr th:first-child {\n padding-left: $table-first-last-padding;\n\n &.with-icon {\n padding-left: map-get($spacing, 'base');\n }\n }\n\n > tbody tr td:last-child,\n > thead tr th:last-child {\n padding-right: $table-first-last-padding;\n\n &.with-icon {\n padding-right: map-get($spacing, 'base');\n }\n }\n\n .tyk-pagination {\n padding: $table-pagination-padding;\n\n li:first-child {\n margin-left: auto;\n }\n }\n\n .nowrap {\n white-space: nowrap;\n }\n\n .wrap {\n word-break: break-all;\n }\n}\n\n.tyk-table-search {\n padding: map-get($spacing, 'sm') 25px 0 25px;\n\n label {\n font-size: text-scale('sm');\n text-transform: uppercase;\n }\n}\n\n.header-sort {\n padding-left: 3px;\n padding-top: map-get($spacing, 'xs');\n vertical-align: middle;\n}\n\n.new-table-pagination {\n float: right;\n}\n\n.selectable > div {\n margin-left: map-get($spacing, 'md');\n}\n\n.scrollable {\n display: block;\n overflow: auto;\n}\n\n.fixed-header {\n background: white;\n position: sticky;\n top: 0;\n}\n\n.tyk-table.has-error,\n.tyk-table__wrapper.has-error {\n border: $general-border-width solid theme-color('danger', 'base') !important;\n}","@import '../../../common/sass/variables';\n@import '../../../common/sass/mixins';\n@import './variables';\n\n.tyk-tabs {\n &--default {\n > ul {\n display: flex;\n list-style-type: none;\n margin: 0;\n padding: 0;\n overflow: auto;\n\n li {\n display: flex;\n white-space: nowrap;\n margin-right: $tab-button-margin;\n\n &:last-child {\n margin-right: 0;\n }\n\n &.active button,\n button:hover {\n border-bottom-color: $tab-border-color;\n color: $tab-active-button-color;\n opacity: 1;\n }\n\n button {\n background: none;\n border: none;\n border-bottom: 4px solid transparent;\n color: $tab-button-color;\n cursor: pointer;\n font-size: text-scale('sm');\n font-family: $tabs-font-familly;\n padding: $tab-button-padding;\n margin-right: map-get($spacing, 'md');\n transition: all .2s linear;\n opacity: 0.7;\n\n &:focus {\n outline: none;\n }\n }\n }\n }\n }\n}\n\n.tyk-tab {\n &__content {\n padding: $tabs-default-content-padding;\n }\n}\n",".tyk-toast {\n &__container {\n bottom: 0;\n min-width: 300px;\n position: fixed;\n right: map-get($spacing, 'md');\n z-index: 11;\n }\n\n &__message {\n position: relative;\n }\n\n &-message__button {\n color: $text-color;\n height: map-get($spacing, 'md');\n line-height: 1;\n padding: map-get($spacing, 'xs');\n position: absolute;\n right: map-get($spacing, 'xs');\n top: map-get($spacing, 'xs');\n width: map-get($spacing, 'md');\n\n &:hover {\n background: rgba(255, 255, 255, 0.3);\n color: $text-color;\n }\n }\n}\n","@import '../../../../common/sass/variables';\n@import '../../../../common/sass/mixins';\n@import './variables';\n@import '../../../../components/FloatingContainer/sass/FloatingContainer';\n\n.tyk-combobox2 {\n $container-trigger-width: 40px;\n $values-default-height: 38px;\n outline: none;\n\n &.disabled {\n .tyk-form-control {\n border: $form-control-disabled-border !important;\n background-color: $form-control-disabled-background-color;\n color: $form-control-disabled-color;\n cursor: not-allowed;\n }\n\n .tyk-combobox2__current-values .tyk-pill--combobox button {\n cursor: not-allowed;\n }\n\n &:not(.is-expand-mode) .tyk-combobox2__values-container-trigger {\n cursor: not-allowed;\n }\n\n .tyk-combobox2__entry-field {\n background-color: transparent;\n cursor: not-allowed;\n }\n }\n\n .tyk-form-control {\n display: flex;\n flex-direction: row;\n position: relative;\n min-height: 40px;\n height: auto;\n padding: 0;\n\n &:focus-within {\n outline: none;\n border: $form-control-border-focus;\n }\n }\n\n &__current-values {\n display: flex;\n flex-grow: 1;\n flex-wrap: wrap;\n padding-top: 2px;\n padding-bottom: 2px;\n padding-left: map-get($spacing, 'sm');\n max-width: calc(100% - #{$container-trigger-width});\n\n &.expand-mode {\n max-height: 1000px;\n overflow: hidden;\n transition: max-height 1s ease;\n }\n\n &--collapsed.expand-mode {\n max-height: $values-default-height;\n transition: max-height .2s ease;\n }\n\n .tyk-pill--combobox {\n margin-top: 3px;\n margin-bottom: 3px;\n background-color: $tyk-combobox-pill-background;\n border-radius: map-get($spacing, 'sm');\n color: $tyk-combobox-pill-color;\n padding: map-get($spacing, 'xs') map-get($spacing, 'sm');\n max-width: 100%;\n max-height: 26px;\n\n button {\n background: none;\n border: none;\n cursor: pointer;\n width: 23px;\n outline: none;\n\n + span {\n margin-left: 0;\n }\n }\n\n span {\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n i {\n margin-right: map-get($spacing, 'xs');\n }\n }\n }\n\n &__entry-field {\n border: none;\n line-height: 30px;\n\n &:focus,\n &:active {\n border: none;\n outline: none;\n }\n\n &::placeholder {\n color: $form-control-placeholder-color;\n font-family: $form-control-placeholder-font-family;\n }\n }\n\n &__text-value {\n font-family: $font-family-medium;\n font-size: text-scale('sm');\n line-height: line-height('sm');\n padding: 9px 5px;\n width: 100%;\n overflow: hidden;\n text-overflow: ellipsis;\n line-height: 1;\n outline: none;\n\n &.overflow-single {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n &.is-placeholder {\n color: $form-control-placeholder-color;\n font-family: $form-control-placeholder-font-family;\n }\n }\n\n &__values-container-trigger {\n position: relative;\n flex-basis: $container-trigger-width;\n display: flex;\n justify-content: center;\n align-items: center;\n cursor: pointer;\n outline: none;\n transition: all .2s;\n\n &--expanded {\n transform: rotate(180deg);\n }\n\n .tyk-icon {\n height: 14px;\n }\n }\n}\n\n.tyk-form-group--rounded-corners .tyk-combobox2-disabled-overlay {\n border-radius: calc(#{$general-border-radius} - 2px);\n}\n\n.tyk-combobox2__combobox-dropdown {\n display: flex;\n flex-direction: column;\n border: $general-border-width solid $form-default-color;\n background-color: white;\n\n &.tyk-form-group--rounded-corners {\n border-radius: $general-border-radius;\n }\n\n .tyk-combobox2__combobox-search {\n background-color: white;\n position: sticky;\n top: 0;\n padding: map-get($spacing, 'sm') map-get($spacing, 'md');\n\n + .combobox-list {\n border-top: 1px solid $form-default-color;\n }\n }\n\n .tyk-combobox2__combobox-list {\n max-height: 255px;\n\n li {\n display: flex;\n cursor: pointer;\n padding: 9px map-get($spacing, 'md');\n transition: all .2s;\n font-family: $font-family-medium;\n\n &:hover,\n &.active {\n background-color: $tyk-combobox-list-item-hover-color;\n }\n\n &.disabled {\n color: $tyk-combobox-list-item-disabled-color;\n background-color: initial;\n }\n\n + li {\n border-top: 1px solid $form-default-color;\n }\n\n i {\n margin-right: map-get($spacing, 'xs');\n }\n\n .item-name {\n overflow: hidden;\n text-overflow: ellipsis;\n line-height: 16px;\n }\n }\n }\n}\n.tyk-combobox2__values-container-trigger {\n color: $text-color;\n}\n\n.tyk-combobox2__combobox-dropdown.tyk-form-group--rounded-corners {\n z-index: 1081;\n}","@import '../../../../common/sass/variables';\n@import '../../../../common/sass/mixins';\n@import './variables';\n\n.tyk-checkbox {\n label {\n $label-indent: 20px;\n display: flex;\n align-items: flex-start;\n padding-left: $label-indent;\n\n input {\n margin-left: -1 * $label-indent;\n margin-top: 5px;\n }\n }\n\n &--theme-light {\n label {\n color: $tyk-checkbox-theme-light-label-color;\n }\n\n &.tyk-checkbox--is-disabled {\n label {\n color: $tyk-checkbox-theme-light-label-disabled-color;\n }\n }\n }\n\n &--is-disabled {\n label, p {\n cursor: not-allowed;\n opacity: 0.5;\n }\n }\n}",".flatpickr-day.selected, .flatpickr-day.startRange, .flatpickr-day.endRange, .flatpickr-day.selected.inRange, .flatpickr-day.startRange.inRange, .flatpickr-day.endRange.inRange, .flatpickr-day.selected:focus, .flatpickr-day.startRange:focus, .flatpickr-day.endRange:focus, .flatpickr-day.selected:hover, .flatpickr-day.startRange:hover, .flatpickr-day.endRange:hover, .flatpickr-day.selected.prevMonthDay, .flatpickr-day.startRange.prevMonthDay, .flatpickr-day.endRange.prevMonthDay, .flatpickr-day.selected.nextMonthDay, .flatpickr-day.startRange.nextMonthDay, .flatpickr-day.endRange.nextMonthDay {\n background: theme-color('success', 'base') !important;\n border-color: theme-color('success', 'base') !important;\n}","@import '../../../../common/sass/variables';\n@import '../../../../common/sass/mixins';\n@import './variables';\n\n.tyk-dropdown {\n display: inline-block;\n\n + .tyk-button,\n + .tyk-dropdown,\n + .tyk-toggle {\n margin-left: map-get($spacing, 'sm')\n }\n\n &--block {\n left: map-get($spacing, 'md');\n right: map-get($spacing, 'md');\n }\n\n &--relative {\n left: auto;\n right: auto;\n }\n\n &--custom {\n padding: map-get($spacing, 'md') 25px;\n }\n\n label {\n display: block;\n }\n\n &__trigger {\n position: relative;\n }\n\n &.theme-list .tyk-button {\n background: white;\n border: $general-border-width solid theme-color('default', 'base');\n border-radius: $general-border-radius;\n color: $text-color;\n\n &:hover,\n &:active,\n &:active:focus,\n &:focus {\n background: white;\n border-color: theme-color('background', 'dark');\n color: $text-color;\n }\n }\n}\n\n.tyk-dropdown-menu {\n background: $tyk-dropdown-item-background;\n border: $general-border-width solid theme-color('default', 'light');\n border-radius: $general-border-radius;\n -webkit-filter: drop-shadow(1px 2px 1px rgba(0, 0, 0, 0.1));\n filter: drop-shadow(1px 2px 1px rgba(0, 0, 0, 0.1));\n list-style-type: none;\n margin: 0;\n margin-top: 3px;\n overflow: hidden;\n padding: 0;\n z-index: 1081;\n\n &.tyk-dropdown--scrollable {\n overflow: auto;\n }\n\n .tyk-panel {\n margin: 0;\n }\n\n &.opened {\n display: flex;\n flex-direction: column;\n position: absolute;\n }\n\n > li {\n background: $tyk-dropdown-item-background;\n border-bottom: 1px solid $tyk-dropdown-item-border-color;\n display: flex;\n position: relative;\n z-index: 7;\n\n &:last-child {\n border: none;\n }\n\n i {\n left: 7px;\n position: absolute;\n top: 9px;\n }\n }\n}\n\n.tyk-dropdown-menu > li > a {\n cursor: pointer;\n color: $tyk-dropdown-item-text-color;\n display: flex;\n font-size: 12px;\n padding: 7px 24px;\n text-transform: uppercase;\n text-decoration: none;\n width: 100%;\n\n &:hover {\n color: $tyk-dropdown-item-hover-text-color;\n }\n\n .badge {\n background: $text-color;\n color: white;\n font-size: map-get($spacing, 'sm');\n margin-top: -4px;\n margin-left: 6px;\n }\n\n &:hover {\n background-color: $tyk-dropdown-item-background-hover;\n text-decoration: none;\n }\n}\n\n.tyk-dropdown--relative.opened {\n position: relative;\n}\n","@import '../../../../common/sass/variables';\n@import '../../../../common/sass/mixins';\n\n.tyk-editable-list {\n &__submit-btn {\n white-space: nowrap;\n }\n}\n\n.tyk-editable-list__form {\n align-items: center;\n display: flex;\n\n .tyk-form-group {\n margin-bottom: 0;\n }\n\n &--sticked {\n margin-left: 0;\n\n button {\n border-top-left-radius: 0px;\n border-bottom-left-radius: 0px;\n border-top-right-radius: 3px;\n border-bottom-right-radius: 3px;\n padding-bottom: 11px;\n padding: map-get($spacing, 'sm') map-get($spacing, 'base') 11px map-get($spacing, 'base');\n }\n }\n\n span.inline {\n margin-top: 0;\n }\n\n > span {\n margin-left: map-get($spacing, 'base');\n\n &.inline-with-label {\n align-self: flex-end;\n }\n }\n}\n\n.tyk-editable-list__header {\n padding-top: map-get($spacing, 'base');\n border-bottom: 1px solid theme-color('background', 'dark');\n color: $text-color;\n font-size: 11px;\n padding-bottom: map-get($spacing, 'base');\n text-transform: uppercase;\n\n .tyk-row {\n margin: 0;\n }\n}\n\n.tyk-editable-list-items {\n overflow: hidden;\n list-style: none;\n padding: map-get($spacing, 'md') 0 0 0;\n\n .edit-mode-wrapper.table button {\n margin-top: 23px;\n }\n\n .tyk-row {\n margin: 0;\n }\n\n button[disabled] {\n cursor: not-allowed;\n }\n\n &.tyk-editable-list-items--inline {\n align-items: center;\n color: $text-color;\n display: flex;\n flex-wrap: wrap;\n }\n\n li {\n border-top: 1px solid theme-color('default', 'light');\n transition: all .2s linear;\n\n &.tyk-editable-list-item--inline {\n background-color: theme-color('default', 'light');\n border-radius: 25px;\n border: none;\n color: white;\n float: left;\n font-family: $font-family-medium;\n margin-bottom: map-get($spacing, 'sm');\n margin-right: map-get($spacing, 'base');\n padding: 0 map-get($spacing, 'base');\n white-space: nowrap;\n\n .tyk-editable-list-item__text {\n color: $text-color;\n padding: map-get($spacing, 'xs') 0;\n }\n\n .tyk-editable-list-action__button.on-edit {\n margin-top: 0;\n }\n }\n\n &:first-child {\n border-top: none;\n }\n\n .tyk-editable-list-item__text {\n display: flex;\n padding: map-get($spacing, 'sm') 0;\n\n > span {\n flex-grow: 1;\n }\n\n > div:first-child {\n flex-grow: 1;\n\n .error-message {\n margin: 0;\n }\n }\n }\n\n .tyk-editable-list-items {\n overflow: hidden;\n padding-bottom: map-get($spacing, 'sm');\n }\n\n .tyk-editable-list {\n border-top: map-get($spacing, 'xs') solid theme-color('background', 'dark');\n background: theme-color('background', 'light');\n padding: map-get($spacing, 'sm') map-get($spacing, 'base');\n }\n }\n\n .tyk-editable-list-item__text {\n display: block;\n word-wrap: break-word;\n word-break:break-all;\n }\n\n .tyk-editable-list-action__button {\n border: none;\n background: transparent;\n\n &.on-edit {\n margin-left: map-get($spacing, 'sm');\n }\n }\n\n .tyk-editable-list-item-controls {\n flex-grow: 0;\n text-align: right;\n }\n}\n\n.tyk-editable-list-item__controls {\n text-align: right;\n}\n\n.tyk-editable-list-items.table {\n background-color: white;\n border-radius: $general-border-radius;\n border: $general-border-width solid theme-color('default', 'light');\n padding: 0 !important;\n\n li {\n border-color: theme-color('default', 'light');\n\n &:hover {\n background: theme-color('background', 'light');\n }\n }\n\n .tyk-editable-list-item__text {\n background: transparent;\n }\n\n .tyk-editable-list-action__button {\n border-radius: 6px;\n cursor: pointer;\n margin-right: map-get($spacing, 'sm');\n }\n}\n\n.tyk-editable-list__header {\n background-color: white;\n border-top-left-radius: $general-border-radius;\n border-top-right-radius: $general-border-radius;\n border: $general-border-width solid theme-color('default', 'light');\n border-bottom: 1px solid theme-color('default', 'light') !important;\n color: $text-color !important;\n font-family: $font-family-bold;\n margin-top: map-get($spacing, 'sm');\n\n & + .tyk-editable-list-items.table {\n border-top: none;\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n }\n}\n","@use \"sass:math\";\n\n.editable-list {\n &__header {\n align-items: center;\n display: flex;\n margin-bottom: 10px;\n\n .tyk-button {\n margin-left: auto;\n }\n }\n\n &__wrapper.has-error &__list{\n border: $general-border-width solid theme-color('danger', 'base');\n }\n\n &__list {\n border: $general-border-width solid theme-color('default', 'light');\n border-radius: $general-border-radius;\n display: flex;\n flex-direction: column-reverse;\n }\n\n &__item {\n border-bottom: 1px solid theme-color('default', 'light');\n display: flex;\n flex-wrap: nowrap;\n width: 100%;\n\n &:first-child {\n border-bottom: none;\n }\n\n &-header {\n border-bottom: 1px solid theme-color('default', 'light');\n color: $text-color;\n font-size: text-scale('sm');\n line-height: line-height('sm');\n font-family: $font-family-bold;\n text-transform: uppercase;\n\n .editable-list__item-cell {\n padding: 10px;\n }\n }\n\n &-cell {\n border-left: 1px solid theme-color('default', 'light');\n overflow: hidden;\n padding: 0 10px;\n\n .tyk-form-control--readonly {\n overflow: hidden;\n text-overflow: ellipsis;\n word-break: break-all;\n }\n\n &:first-child {\n border-left: none;\n padding-left: 15px;\n }\n &:last-child {\n padding-right: 15px;\n }\n\n .tyk-form-group {\n margin: 10px 0;\n width: 100%;\n }\n }\n\n $start: 1;\n $end: 12;\n\n @for $i from $start through $end {\n &--size-#{$i} {\n display: flex;\n flex-grow: #{$i + 1};\n $my_width: #{math.div($i, 12) * 100%};\n width: $my_width;\n }\n }\n\n &--size-fit {\n width: fit-content;\n }\n\n &-action {\n align-items: flex-start;\n display: flex;\n justify-content: center;\n width: 100px;\n\n .tyk-button {\n margin-top: 20px;\n }\n\n &--read-only {\n color: theme-color(\"default\", \"light\");\n align-items: center;\n\n .tyk-button {\n margin-top: 0;\n }\n }\n\n }\n }\n}",".tyk-file-input__wrapper {\n position: relative;\n\n > input {\n padding: 6px map-get($spacing, 'md');\n }\n\n > button {\n background: none;\n border: none;\n cursor: pointer;\n position: absolute;\n right: map-get($spacing, 'base');\n top: 9px;\n }\n}\n",".tyk-multiselect {\n align-items: flex-start;\n border-radius: $general-border-radius;\n flex-wrap: wrap;\n display: flex;\n margin-bottom: map-get($spacing, 'md');\n width: 100%;\n\n /*FALLBACK FOR ANGULAR COMPONENTS*/\n .input-group .input-group-addon + .form-control {\n border-width: 1px !important;\n border-left: none !important;\n border-top-left-radius: 0 !important;\n border-top-right-radius: 0 !important;\n border-bottom-left-radius: 0 !important;\n border-bottom-right-radius: 0 !important;\n }\n\n .input-group .input-group-addon {\n background: transparent !important;\n border-width: 1px !important;\n border-right: 0 !important;\n border-top-left-radius: 0 !important;\n border-top-right-radius: 0 !important;\n border-bottom-left-radius: 0 !important;\n border-bottom-right-radius: 0 !important;\n }\n /*END FALLBACK FOR ANGULAR COMPONENTS*/\n\n &.has-error {\n border: $general-border-width solid theme-color('danger', 'base');\n }\n\n &__header {\n background-color: theme-color('default', 'base');\n border-top-left-radius: $general-border-radius;\n border-top-right-radius: $general-border-radius;\n color: white;\n display: flex;\n width: 100%;\n\n > div {\n padding: map-get($spacing, 'sm') map-get($spacing, 'base');\n width: 50%;\n }\n }\n\n &__panel-wrapper {\n border: $form-control-border;\n border-top: none;\n border-bottom-left-radius: $general-border-radius;\n border-bottom-right-radius: $general-border-radius;\n display: flex;\n flex: 1;\n height: 265px;\n width: 100%;\n }\n\n &__panel {\n display: flex;\n flex-direction: column;\n margin: 0 0 0 -1px;\n position: relative;\n width: calc(50% + 1px);\n\n &:last-child {\n border-left: $form-control-border;\n .tyk-form-group {\n margin-left: -1px;\n width: calc(100% + 2px);\n }\n }\n\n .tyk-message {\n margin: map-get($spacing, 'md') map-get($spacing, 'md') 0 map-get($spacing, 'md');\n }\n }\n\n &__list {\n list-style-type: none;\n margin: 0;\n padding: 0;\n\n &--scroll {\n height: 100%;\n overflow-y: auto;\n }\n\n > li {\n border-bottom: $form-control-border;\n display: flex;\n flex-direction: column;\n padding: map-get($spacing, 'sm') map-get($spacing, 'base');\n\n > div {\n align-items: start;\n display: flex;\n width: 100%;\n }\n\n .loading {\n justify-content: center;\n }\n\n &:last-child {\n border-bottom: none;\n }\n }\n }\n\n &-item__name {\n display: block;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .tyk-form-group {\n margin: 0;\n }\n\n .tyk-multiselect-item__controls {\n display: flex;\n margin-left: auto;\n flex-wrap: nowrap;\n\n .tyk-button {\n color: $text-color;\n margin-left: map-get($spacing, 'xs');\n\n &:last-child {\n margin-left: 0;\n }\n }\n }\n}\n","@import '../../../../common/sass/variables';\n@import '../../../../common/sass/mixins';\n@import './variables';\n\n.tyk-pagination {\n display: flex;\n list-style-type: none;\n margin: map-get($spacing, 'sm') 0;\n padding: 0;\n\n li {\n align-items: center;\n display: flex;\n }\n\n li:first-child button {\n border-top-left-radius: $pagination-border-radius;\n border-bottom-left-radius: $pagination-border-radius;\n }\n\n li:last-child button {\n border-top-right-radius: $pagination-border-radius;\n border-bottom-right-radius: $pagination-border-radius;\n }\n\n span {\n margin: 0 map-get($spacing, 'sm');\n }\n\n button {\n background: white;\n border: none;\n font-size: text-scale('sm');\n font-family: $font-family-bold;\n cursor: pointer;\n color: theme-color('default', 'base');\n margin-left: -1px;\n padding: $pagination-button-padding;\n\n &:hover {\n background-color: theme-color('success', 'light');\n }\n }\n\n .active button {\n background-color: theme-color('success', 'base');\n color: white;\n }\n}\n","$pagination-border-radius: $general-border-radius !default;\n$pagination-button-padding: map-get($spacing, 'sm') map-get($spacing, 'base') !default;\n","@import '../../../../common/sass/variables';\n@import '../../../../common/sass/mixins';\n@import './variables';\n.tyk-radio{\n label {\n align-items: center;\n display: flex;\n }\n\n &--is-disabled {\n label, p {\n cursor: not-allowed;\n opacity: 0.5;\n }\n }\n\n &__description-text {\n padding: $radio-description-text-padding;\n }\n}",".tyk-select {\n background: transparent url('#{$component-images-path}/arrow_down.svg') no-repeat calc(100% - 15px) center;\n background-size: map-get($spacing, 'base') map-get($spacing, 'base');\n}",".tyk-selectable-list {\n margin-bottom: map-get($spacing, 'md');\n width: 100%;\n\n li:not(.tyk-selectable-list__no-items-message) {\n font-family: $font-family-medium;\n padding: 0;\n\n .tyk-message {\n margin-bottom: 0;\n }\n\n label {\n font-family: $font-family-medium;\n margin: 0;\n }\n\n > label {\n align-items: center;\n cursor: pointer;\n display: flex;\n padding: map-get($spacing, 'sm') map-get($spacing, 'md');\n\n input[type=\"checkbox\"] {\n margin-left: auto;\n }\n }\n }\n\n &__item--with-icon {\n input[type=\"checkbox\"] {\n visibility: hidden;\n }\n }\n}\n","textarea.tyk-form-control {\n height: auto;\n}\n","@import './variables';\n\n.tyk-toggle {\n display: inline-flex;\n flex-wrap: wrap;\n font-family: $toggle-font-family;\n font-size: text-scale('sm');\n line-height: line-height('sm');\n white-space: nowrap;\n\n &.block {\n margin-bottom: map-get($spacing, 'md');\n width: 100%;\n\n + .tyk-toggle {\n margin-left: 0;\n }\n }\n\n &.inline-label {\n align-items: center;\n flex-wrap: nowrap;\n }\n\n &__list--has-error {\n border: $error-border;\n }\n\n & &__label {\n display: block;\n font-family: $toggle-label-font-family;\n font-size: $toggle-label-font-size;\n padding: $toggle-padding;\n width: 100%;\n color: $toggle-label-color;\n }\n\n &.inline-label &__label {\n margin-right: map-get($spacing, 'sm');\n width: auto;\n }\n\n + .tyk-button,\n + .tyk-dropdown,\n + .tyk-toggle {\n margin-left: map-get($spacing, 'sm')\n }\n\n &--disabled-true {\n cursor: not-allowed;\n opacity: 0.7;\n }\n\n &--column {\n .tyk-toggle__list--separated {\n display: flex;\n flex-direction: column;\n margin-right: map-get($spacing, 'md');\n\n .tyk-toggle__item {\n background-color: $toggle-list-background-color;\n margin-right: auto;\n }\n }\n }\n\n &__list {\n background: $toggle-list-background-color;\n border-radius: 25px;\n display: flex;\n list-style-type: none;\n margin: 0;\n padding: 0;\n position: relative;\n\n &--separated {\n background: transparent;\n flex-wrap: wrap;\n }\n }\n\n &--on-dark &__list {\n background: $toggle-list-background-color-on-dark;\n }\n\n &--default &__item--active span {\n color: white;\n }\n\n &--default &__list--single &__item--active,\n &--default &__list--separated &__item--active {\n span {\n color: white;\n }\n\n @include button-variant(\n $button-default-color,\n transparent,\n white,\n $button-default-color,\n transparent,\n $button-default-color\n );\n }\n\n &--primary &__item--active span {\n color: white;\n }\n\n &--primary &__list--single &__item--active,\n &--primary &__list--separated &__item--active {\n span {\n color: white;\n }\n @include button-variant(\n theme-color('primary', 'base'),\n transparent,\n white,\n theme-color('primary', 'base'),\n transparent,\n theme-color('primary', 'base')\n );\n }\n\n &--success &__item--active span {\n color: white;\n }\n\n &--success &__list--single &__item--active,\n &--success &__list--separated &__item--active {\n span {\n color: white;\n }\n @include button-variant(\n theme-color('success', 'dark'),\n transparent,\n white,\n theme-color('success', 'dark'),\n transparent,\n theme-color('success', 'dark')\n );\n }\n\n &--danger &__item--active span {\n color: white;\n }\n\n &--danger &__list--single &__item--active,\n &--danger &__list--separated &__item--active {\n @include button-variant(\n theme-color('danger', 'base'),\n transparent,\n white,\n theme-color('danger', 'base'),\n transparent,\n theme-color('danger', 'base')\n );\n }\n\n &--warning &__item--active span {\n color: $text-color;\n }\n\n &--warning &__list--single &__item--active,\n &--warning &__list--separated &__item--active {\n @include button-variant(\n theme-color('warning', 'base'),\n transparent,\n $text-color,\n theme-color('warning', 'base'),\n transparent,\n theme-color('warning', 'base')\n );\n }\n\n\n &--primary-gradient &__item--active span {\n color: white;\n }\n &--primary-gradient &__list--single &__item--active,\n &--primary-gradient &__list--separated &__item--active {\n span {\n color: white;\n }\n @include button-variant-gradient(\n theme-color('primary', 'base'),\n theme-color('primary', 'dark'),\n white,\n false\n );\n }\n\n &--success-gradient &__item--active span {\n color: white;\n }\n &--success-gradient &__list--single &__item--active,\n &--success-gradient &__list--separated &__item--active {\n span {\n color: white;\n }\n @include button-variant-gradient(\n theme-color('success', 'base'),\n theme-color('success', 'dark'),\n white,\n false\n );\n }\n\n\n &--danger-gradient &__item--active span {\n color: white;\n }\n &--danger-gradient &__list--single &__item--active,\n &--danger-gradient &__list--separated &__item--active {\n span {\n color: white;\n }\n @include button-variant-gradient(\n theme-color('danger', 'base'),\n theme-color('danger', 'dark'),\n white,\n false\n );\n }\n\n\n &--warning-gradient &__item--active span {\n color: white;\n }\n &--warning-gradient &__list--single &__item--active,\n &--warning-gradient &__list--separated &__item--active {\n span {\n color: white;\n }\n @include button-variant-gradient(\n theme-color('warning', 'light'),\n theme-color('warning', 'base'),\n $text-color,\n false\n );\n }\n\n &__item {\n color: $toggle-list-text-color;\n text-transform: uppercase;\n z-index: 2;\n border: 2px solid transparent;\n\n &:first-child {\n border-top-left-radius: 25px;\n border-bottom-left-radius: 25px;\n }\n &:last-child {\n border-top-right-radius: 25px;\n border-bottom-right-radius: 25px;\n }\n\n .tyk-toggle__list--separated & {\n background: tyk-toggle__list--separated;\n border-radius: 25px;\n margin-bottom: map-get($spacing, 'xs');\n margin-top: map-get($spacing, 'xs');\n margin-right: map-get($spacing, 'sm');\n\n &:last-child {\n margin-right: 0;\n }\n }\n\n input {\n display: none;\n }\n\n label {\n cursor: pointer;\n font-family: $toggle-font-family;\n position: relative;\n margin: 0;\n transition: all .2s ease;\n\n .tyk-toggle__list--single & {\n padding-left: 45px;\n }\n }\n\n .tyk-toggle__list--single &--active {\n label {\n padding-left: 25px;\n padding-right: 45px;\n\n .tyk-toggle__item-notch {\n left: calc(100% - 35px);\n }\n }\n }\n }\n\n &--on-dark &__item:not(.tyk-toggle__item--active) {\n color: $toggle-list-text-color-on-dark;\n }\n\n &--on-dark &__item-notch--single {\n background: theme-color('background', 'light');\n }\n\n &--sm label {\n @include button-size(\n calc(#{$padding-y-button-sm} + 2px),\n calc(#{$padding-x-button-sm} + 2px),\n text-scale('xs'),\n line-height('xs'),\n $button-border-radius\n );\n }\n\n &--sm &__list--single label {\n padding-left: 35px;\n }\n\n &--sm .tyk-toggle__list--single .tyk-toggle__item--active label {\n padding-left: 17px;\n padding-right: 35px;\n\n .tyk-toggle__item-notch {\n left: calc(100% - 27px);\n }\n }\n\n &--md label {\n @include button-size(\n calc(#{$padding-y-button-md} + 2px),\n calc(#{$padding-x-button-md} + 2px),\n text-scale('sm'),\n $line-height-button-sm,\n $button-border-radius\n );\n }\n\n &--lg label {\n @include button-size(\n calc(#{$padding-y-button-lg} + 2px),\n calc(#{$padding-x-button-lg} + 2px),\n text-scale('sm'),\n $line-height-button-sm,\n $button-border-radius\n );\n }\n\n &--lg &__list--single label {\n padding-left: 45px;\n }\n\n &--lg .tyk-toggle__list--single .tyk-toggle__item--active label {\n padding-left: 25px;\n padding-right: 45px;\n\n .tyk-toggle__item-notch {\n left: calc(100% - 43px);\n }\n }\n\n &__item-notch {\n border-radius: 25px;\n bottom: 2px;\n position: absolute;\n transition: all .2s ease;\n top: 2px;\n\n &--single {\n background: white;\n left: 2px;\n width: 32px;\n }\n }\n\n &--sm &__item-notch--single {\n width: 24px;\n }\n\n &--lg &__item-notch--single {\n width: 40px;\n }\n\n &__notch {\n border-radius: 25px;\n left: 0;\n position: absolute;\n bottom: $toggle-bottom;\n top: $toggle-top;\n transition: all .2s ease;\n width: 100px;\n z-index: 1;\n }\n\n &--default &__notch {\n @include button-variant(\n $button-default-color,\n transparent,\n white,\n $button-default-color,\n transparent,\n $button-default-color\n );\n }\n\n &--primary &__notch {\n @include button-variant(\n theme-color('primary', 'base'),\n transparent,\n white,\n theme-color('primary', 'base'),\n transparent,\n theme-color('primary', 'base')\n );\n }\n\n &--success &__notch {\n @include button-variant(\n theme-color('success', 'base'),\n transparent,\n white,\n theme-color('success', 'base'),\n transparent,\n theme-color('success', 'base')\n );\n }\n\n &--danger &__notch {\n @include button-variant(\n theme-color('danger', 'base'),\n transparent,\n white,\n theme-color('danger', 'base'),\n transparent,\n theme-color('danger', 'base')\n );\n }\n\n &--warning &__notch {\n @include button-variant(\n theme-color('warning', 'base'),\n transparent,\n $text-color,\n theme-color('warning', 'base'),\n transparent,\n theme-color('warning', 'base')\n );\n }\n\n &--primary-gradient &__notch {\n @include button-variant-gradient(\n theme-color('primary', 'base'),\n theme-color('primary', 'dark'),\n white,\n false\n );\n }\n\n &--success-gradient &__notch {\n @include button-variant-gradient(\n theme-color('success', 'base'),\n theme-color('success', 'dark'),\n white,\n false\n );\n }\n\n &--danger-gradient &__notch {\n @include button-variant-gradient(\n theme-color('danger', 'base'),\n theme-color('danger', 'dark'),\n white,\n false\n );\n }\n\n &--warning-gradient &__notch {\n @include button-variant-gradient(\n theme-color('warning', 'light'),\n theme-color('warning', 'base'),\n $text-color,\n false\n );\n }\n}\n\n.empty-toggle {\n padding: 1px;\n}","@import '../../../../common/sass/variables';\n\n.string-builder{\n position: relative;\n display: block;\n}\n\n.string-builder__input {\n word-break: break-all;\n resize: none;\n overflow: hidden;\n background:transparent;\n position: absolute;\n border: none;\n font: inherit;\n display: block;\n z-index: 1;\n width: 100%;\n padding: 0px;\n width: calc(100% - 35px);\n &:focus,\n &:active {\n border: none;\n outline: none;\n }\n}\n.string-builder__styled {\n font: inherit;\n position: absolute;\n pointer-events: none;\n width: calc(100% - 35px);\n color: transparent;\n z-index: 2;\n border: none;\n word-wrap: break-word;\n word-break: break-all;\n \n}\n\n.string-builder__disabled{\n background-color: $form-control-disabled-background-color !important;\n color: $form-control-disabled-color;\n cursor: not-allowed;\n}\n\n\n.url-builder__options_name {\n font-weight: 10px;\n}\n\n.url-builder__options_description{\n color: gray;\n}\n\n.string-builder-dropdown {\n display: flex;\n flex-direction: column;\n border: $general-border-width solid $form-default-color;\n background-color: #ffffff;\n\n &.tyk-form-group--rounded-corners {\n border-radius: $general-border-radius;\n }\n\n .string-builder-search {\n background-color: #ffffff;\n position: sticky;\n top: 0;\n padding: map-get($spacing, 'sm') map-get($spacing, 'md');\n\n + .string-builder-list {\n border-top: 1px solid $form-default-color;\n }\n }\n\n .string-builder-list {\n max-height: 255px;\n\n li {\n cursor: pointer;\n padding: 9px map-get($spacing, 'md');\n transition: all .2s;\n font-family: $font-family-medium;\n\n &:hover,\n &.active {\n background-color: $form-default-color;\n }\n\n + li {\n border-top: 1px solid $form-default-color;\n }\n\n i {\n margin-right: map-get($spacing, 'xs');\n }\n\n .item-name {\n overflow: hidden;\n text-overflow: ellipsis;\n line-height: 16px;\n }\n }\n }\n}\n\n.invalid_token {\n box-shadow: 0px 0px 0px 1px theme-color('danger', 'dark') inset;\n border-radius: 5px;\n background: theme-color('danger', 'light');\n color: theme-color('danger', 'dark');\n padding: 4px;\n pointer-events: all;\n .invalid_token--icon {\n margin-left: 2px;\n color: theme-color('danger', 'dark');\n }\n}\n\n.string_builder_trigger {\n background-color: #ffffff;\n border-radius: 5px;\n padding: 1px 6px;\n margin: 0px 4px;\n}\n\n.string-builder-footer {\n > .tyk-form-control__error-message {\n padding: 0px !important;\n }\n > .tyk-form-control__help-block{\n padding: 0px !important;\n }\n}\n\n.string-builder-search {\n padding-right: 10px;\n}\n\n.default-option-name {\n color: green;\n}\n\n\n// NOTE :: FOR DEMO ONLY\n.data_source_argument {\n color: pink;\n}\n.data_source_object {\n color: blueviolet;\n}\n","\n* {\n box-sizing: border-box;\n}\n\nbody {\n background-color: theme-color('background', 'base');\n color: $text-color;\n font-size: text-scale('sm');\n line-height: line-height('sm');\n font-family: $font-family-regular;\n}\n\n.tyk-main-wrapper {\n display: flex;\n flex-wrap: nowrap;\n}\n\n.tyk-main-content-wrapper {\n flex: 1;\n}\n\n.well {\n background: transparent;\n border: $general-border-width solid theme-color('default', 'light');\n border-radius: $general-border-radius;\n box-shadow: none;\n\n &.has-error {\n border-color: theme-color('danger', 'base');\n }\n}\n",".title-medium {\n font-family: $font-family-medium;\n color: $label-color;\n font-size: $title-medium-font-size;\n}",".right-align {\n text-align: right !important;\n}\n\n.left-align {\n text-align: left !important;\n}\n\n.center-align {\n text-align: center !important;\n}\n\n.left {\n float: left !important;\n}\n\n.right {\n float: right !important;\n}\n\n.hide {\n display: none !important;\n}\n\n.no-margin {\n margin: 0 !important;\n}\n\n.no-margin-bottom {\n margin-bottom: 0 !important;\n}\n\n.no-margin-top {\n margin-top: 0 !important;\n}\n\n.no-margin-right {\n margin-right: 0 !important;\n}\n\n.no-margin-left {\n margin-right: 0 !important;\n}\n\n.disabled-section {\n color: theme-color('default', 'light');\n}\n\n.top-buffer-large {\n margin-top: $top-buffer-large !important; \n}\n\n.top-buffer-small {\n margin-top: $top-buffer-small !important; \n}\n\n.top-buffer-medium {\n margin-top: $top-buffer-medium !important; \n}\n\n.bottom-buffer-large {\n margin-bottom: $bottom-buffer-large !important; \n}\n\n.bottom-buffer-small {\n margin-bottom: $bottom-buffer-small !important; \n}\n\n.bottom-buffer-medium {\n margin-bottom: $bottom-buffer-medium !important; \n}\n\n.right-buffer-large {\n margin-right: $right-buffer-large !important; \n}\n\n.right-buffer-small {\n margin-right: $right-buffer-small !important; \n}\n\n.right-buffer-medium {\n margin-right: $right-buffer-medium !important; \n}\n\n.left-buffer-large {\n margin-left: $left-buffer-large !important; \n}\n\n.left-buffer-small {\n margin-left: $left-buffer-small !important; \n}\n\n.left-buffer-medium {\n margin-left: $left-buffer-medium !important; \n}\n\n.word-wrap {\n word-wrap: break-word;\n word-break: break-all;\n}\n\n.clear-left {\n clear: left;\n}\n\n.flex-container {\n display: flex;\n}\n\n.vertical-center-align {\n align-items: center;\n}\n\n\n.right-align-controls {\n align-items: center;\n display: flex;\n margin-left: auto;\n}\n\n.inline-label {\n margin-right: 15px;\n}\n\n.nowrap { \n white-space: nowrap;\n}\n"],"names":[],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"index.css","mappings":"AAAA,2ZCAA,QACE,UACA,SACA,eACA,aACA,wBACA,+EAKF,aACE,MAEF,aACE,OAEF,eACE,cAEF,WACE,oCAGA,UACE,aACA,kBAGF,UACE,aACA,OAEJ,wBACE,iBACA,YChCF,gBC8HiB,cD5Hf,6BAGF,cAEE,UAGF,YACE,sBACA,gBACA,cACA,mBACA,eACA,kBACA,wBACA,qBAEA,QACE,8BAGF,QACE,WACA,2BAGF,0BACE,UAIJ,2BACE,sBACA,cACA,YACA,6BACA,iBCsFY,wBDpFZ,qBAEA,cACE,+BAGF,QACE,2BAGF,6BACE,gCAGF,mBACE,6BAGF,qBACE,gCAGF,iBACE,kCAGF,mBACE,iCAGF,kBACE,uCAQF,eE9BE,0BACE,0BACA,uBAGF,cACE,gBANF,qCACE,qCACA,uBAGF,yBACE,gBANF,sCACE,sCACA,uBAGF,0BACE,gBANF,2BACE,2BACA,uBAGF,eACE,gBANF,sCACE,sCACA,uBAGF,0BACE,gBANF,sCACE,sCACA,uBAGF,0BACE,gBANF,2BACE,2BACA,uBAGF,eACE,gBANF,sCACE,sCACA,uBAGF,0BACE,gBANF,sCACE,sCACA,uBAGF,0BACE,gBANF,2BACE,2BACA,uBAGF,eACE,iBANF,sCACE,sCACA,wBAGF,0BACE,iBANF,sCACE,sCACA,wBAGF,0BACE,iBANF,4BACE,4BACA,wBAGF,gBACE,+DFwBJ,eE9BE,0BACE,0BACA,uBAGF,cACE,gBANF,qCACE,qCACA,uBAGF,yBACE,gBANF,sCACE,sCACA,uBAGF,0BACE,gBANF,2BACE,2BACA,uBAGF,eACE,gBANF,sCACE,sCACA,uBAGF,0BACE,gBANF,sCACE,sCACA,uBAGF,0BACE,gBANF,2BACE,2BACA,uBAGF,eACE,gBANF,sCACE,sCACA,uBAGF,0BACE,gBANF,sCACE,sCACA,uBAGF,0BACE,gBANF,2BACE,2BACA,uBAGF,eACE,iBANF,sCACE,sCACA,wBAGF,0BACE,iBANF,sCACE,sCACA,wBAGF,0BACE,iBANF,4BACE,4BACA,wBAGF,gBACE,6DFwBJ,eE9BE,0BACE,0BACA,uBAGF,cACE,gBANF,qCACE,qCACA,uBAGF,yBACE,gBANF,sCACE,sCACA,uBAGF,0BACE,gBANF,2BACE,2BACA,uBAGF,eACE,gBANF,sCACE,sCACA,uBAGF,0BACE,gBANF,sCACE,sCACA,uBAGF,0BACE,gBANF,2BACE,2BACA,uBAGF,eACE,gBANF,sCACE,sCACA,uBAGF,0BACE,gBANF,sCACE,sCACA,uBAGF,0BACE,gBANF,2BACE,2BACA,uBAGF,eACE,iBANF,sCACE,sCACA,wBAGF,0BACE,iBANF,sCACE,sCACA,wBAGF,0BACE,iBANF,4BACE,4BACA,wBAGF,gBACE,uCFwBJ,eE9BE,0BACE,0BACA,uBAGF,cACE,gBANF,qCACE,qCACA,uBAGF,yBACE,gBANF,sCACE,sCACA,uBAGF,0BACE,gBANF,2BACE,2BACA,uBAGF,eACE,gBANF,sCACE,sCACA,uBAGF,0BACE,gBANF,sCACE,sCACA,uBAGF,0BACE,gBANF,2BACE,2BACA,uBAGF,eACE,gBANF,sCACE,sCACA,uBAGF,0BACE,gBANF,sCACE,sCACA,uBAGF,0BACE,gBANF,2BACE,2BACA,uBAGF,eACE,iBANF,sCACE,sCACA,wBAGF,0BACE,iBANF,sCACE,sCACA,wBAGF,0BACE,iBANF,4BACE,4BACA,wBAGF,gBACE,aA7BL,2BACC,mHACA,mBAEA,kBACA,YALD,+BACC,mHACA,mBAEA,kBACA,YALD,8BACC,mHACA,mBAEA,kBACA,YALD,4BACC,mHACA,mBAEA,kBACA,YALD,8BACC,mHACA,mBAEA,kBACA,YALD,+BACC,qHACA,mBAEA,kBACA,YALD,mBACC,qHACA,mBAEA,kBACA;;;ECnCF,CAIA,wBAKE,kCACA,mCACA,qBACA,kBACA,oBACA,oBACA,cAEF,OACE,oBACA,kBACA,yBAEF,OACE,gBAEF,OACE,iBAEF,OACE,cAEF,OACE,cAEF,OACE,cAEF,OACE,cAEF,OACE,cAEF,OACE,cAEF,OACE,cAEF,OACE,cAEF,OACE,cAEF,QACE,eAEF,OACE,kBACA,aAEF,OACE,qBACA,kBACA,eACA,UACE,kBAEJ,OACE,UACA,kBACA,kBACA,UACA,oBAEF,WACE,wBACA,mBACA,yBAEF,cACE,WAEF,eACE,YAEF,yFAKE,kBAEF,8FAKE,iBAEF,SACE,6CACQ,qCAEV,UACE,+CACQ,uCAEV,2BACE,GACE,+BACQ,uBACV,KACE,iCACQ,0BAEZ,mBACE,GACE,+BACQ,uBACV,KACE,iCACQ,0BAEZ,cACE,sEACA,gCACQ,wBAEV,eACE,sEACA,iCACQ,yBAEV,eACE,sEACA,iCACQ,yBAEV,oBACE,gFACA,+BACQ,uBAEV,kBACE,gFACA,+BACQ,uBAEV,qCACE,gFACA,gCACQ,wBAEV,gHAKE,oBACQ,YAEV,UACE,qBACA,WACA,gBACA,kBACA,sBACA,YAEF,0BAEE,OACA,kBACA,kBACA,WAEF,aACE,oBAEF,aACE,cAEF,YACE,WAIF,iBACE,YAEF,2BACE,YAEF,oBACE,YAEF,qCACE,YAEF,cACE,YAEF,wBACE,YAEF,wBACE,YAEF,kBACE,YAEF,eACE,YAEF,oBACE,YAEF,0BACE,YAEF,yBACE,YAEF,mBACE,YAEF,wBACE,YAEF,yBACE,YAEF,sBACE,YAEF,uBACE,YAEF,kBACE,YAEF,qBACE,YAEF,kBACE,YAEF,sBACE,YAEF,qBACE,YAEF,+CACE,YAEF,kBACE,YAEF,kBACE,YAEF,mBACE,YAEF,qBACE,YAEF,6BACE,YAEF,6BACE,YAEF,8BACE,YAEF,2BACE,YAEF,sBACE,YAEF,sBACE,YAEF,uBACE,YAEF,oBACE,YAEF,iBACE,YAEF,yBACE,YAEF,mBACE,YAEF,gBACE,YAEF,qBACE,YAEF,yBACE,YAEF,iBACE,YAEF,iBACE,YAEF,qBACE,YAEF,qBACE,YAEF,mBACE,YAEF,mBACE,YAEF,iCACE,YAEF,iCACE,YAEF,kCACE,YAEF,+BACE,YAEF,6BACE,YAEF,6BACE,YAEF,8BACE,YAEF,2BACE,YAEF,sBACE,YAEF,sBACE,YAEF,uBACE,YAEF,oBACE,YAEF,sBACE,YAEF,wBACE,YAEF,wBACE,YAEF,uCACE,YAEF,oBACE,YAEF,sBACE,YAEF,cACE,YAEF,iBACE,YAEF,gBACE,YAEF,mBACE,YAEF,6BACE,YAEF,wBACE,YAEF,mBACE,YAEF,kBACE,YAEF,iBACE,YAEF,eACE,YAEF,qBACE,YAEF,oBACE,YAEF,yBACE,YAEF,eACE,YAEF,oBACE,YAEF,oBACE,YAEF,mBACE,YAEF,gBACE,YAEF,yBACE,YAEF,2BACE,YAEF,gBACE,YAEF,yBACE,YAEF,wBACE,YAEF,wBACE,YAEF,2BACE,YAEF,kCACE,YAEF,eACE,YAEF,gBACE,YAEF,mBACE,YAEF,0BACE,YAEF,gBACE,YAEF,sBACE,YAEF,wBACE,YAEF,iBACE,YAEF,mBACE,YAEF,qBACE,YAEF,sBACE,YAEF,yBACE,YAEF,qBACE,YAEF,mBACE,YAEF,gBACE,YAEF,qBACE,YAEF,sBACE,YAEF,mBACE,YAEF,yBACE,YAEF,iBACE,YAEF,mBACE,YAEF,qBACE,YAEF,qBACE,YAEF,uBACE,YAEF,gBACE,YAEF,gBACE,YAEF,gBACE,YAEF,gBACE,YAEF,gBACE,YAEF,gBACE,YAEF,qBACE,YAEF,qBACE,YAEF,uBACE,YAEF,oBACE,YAEF,wBACE,YAEF,eACE,YAEF,oBACE,YAEF,iBACE,YAEF,mBACE,YAEF,iBACE,YAEF,qBACE,YAEF,6BACE,YAEF,2BACE,YAEF,iBACE,YAEF,iBACE,YAEF,eACE,YAEF,eACE,YAEF,oBACE,YAEF,oBACE,YAEF,oBACE,YAEF,gBACE,YAEF,4BACE,YAEF,eACE,YAEF,mBACE,YAEF,yBACE,YAEF,sBACE,YAEF,sBACE,YAEF,oBACE,YAEF,wBACE,YAEF,0BACE,YAEF,0BACE,YAEF,yBACE,YAEF,0BACE,YAEF,kBACE,YAEF,wBACE,YAEF,sBACE,YAEF,oBACE,YAEF,oBACE,YAEF,eACE,YAEF,mBACE,YAEF,uBACE,YAEF,qBACE,YAEF,oBACE,YAEF,sBACE,YAEF,sBACE,YAEF,uBACE,YAEF,6BACE,YAEF,6BACE,YAEF,8BACE,YAEF,2BACE,YAEF,oBACE,YAEF,2BACE,YAEF,qBACE,YAEF,eACE,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6BACE,YAEF,mBACE,YAEF,kBACE,YAEF,kBACE,YAEF,uBACE,YAEF,gBACE,YAEF,gBACE,YAEF,sBACE,YAEF,mBACE,YAEF,iBACE,YAEF,iBACE,YAEF,kBACE,YAEF,0BACE,YAEF,cACE,YAEF,qBACE,YAEF,oBACE,YAEF,iBACE,YAEF,kBACE,YAEF,eACE,YAEF,mBACE,YAEF,oBACE,YAEF,kBACE,YAEF,kBACE,YAEF,uBACE,YAEF,yBACE,YAEF,gBACE,YAEF,qBACE,YAEF,2BACE,YAEF,qBACE,YAEF,kBACE,YAEF,oBACE,YAEF,oBACE,YAEF,kBACE,YAEF,uBACE,YAEF,mBACE,YAEF,kBACE,YAEF,yBACE,YAEF,iBACE,YAEF,sBACE,YAEF,wBACE,YAEF,sBACE,YAEF,uBACE,YAEF,gBACE,YAEF,mBACE,YAEF,iBACE,YAEF,gBACE,YAEF,qBACE,YAEF,2BACE,YAEF,0BACE,YAEF,wBACE,YAEF,qBACE,YAEF,qBACE,YAEF,gBACE,YAEF,gBACE,YAEF,oBACE,YAEF,uBACE,YAEF,kBACE,YAEF,iBACE,YAEF,qBACE,YAEF,gBACE,YAEF,oBACE,YAEF,mBACE,YAEF,mBACE,YAEF,0BACE,YAEF,gBACE,YAEF,qBACE,YAEF,+BACE,YAEF,+BACE,YAEF,gCACE,YAEF,6BACE,YAEF,sBACE,YAEF,wBACE,YAEF,gBACE,YAEF,mBACE,YAEF,iBACE,YAEF,kBACE,YAEF,qBACE,YAEF,qBACE,YAEF,gBACE,YAEF,uBACE,YAEF,eACE,YAEF,sBACE,YAEF,0BACE,YAEF,sBACE,YAEF,0BACE,YAEF,mBACE,YAEF,qBACE,YAEF,oBACE,YAEF,kBACE,YAEF,gBACE,YAEF,uBACE,YAEF,uBACE,YAEF,yBACE,YAEF,yBACE,YAEF,gBACE,YAEF,oBACE,YAEF,kBACE,YAEF,iBACE,YAEF,mBACE,YAEF,kBACE,YAEF,oBACE,YAEF,kBACE,YAEF,iBACE,YAEF,kBACE,YAEF,oBACE,YAEF,eACE,YAEF,qBACE,YAEF,4BACE,YAEF,kBACE,YAEF,mBACE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kBACE,YAEF,oBACE,YAEF,sBACE,YAEF,mBACE,YAEF,yBACE,YAEF,qBACE,YAEF,gBACE,YAEF,oBACE,YAEF,mBACE,YAEF,iBACE,YAEF,wBACE,YAEF,kBACE,YAEF,sBACE,YAEF,mBACE,YAEF,0BACE,YAEF,eACE,YAEF,gBACE,YAEF,gBACE,YAEF,iBACE,YAEF,gBACE,YAEF,qBACE,YAEF,iBACE,YAEF,sBACE,YAEF,oBACE,YAEF,0BACE,YAEF,4BACE,YAEF,2BACE,YAEF,yBACE,YAEF,oBACE,YAEF,uBACE,YAEF,sBACE,YAEF,cACE,YAEF,oBACE,YAEF,mBACE,YAEF,wBACE,YAEF,yBACE,YAEF,mBACE,YAEF,qBACE,YAEF,uBACE,YAEF,6BACE,YAEF,4BACE,YAEF,4BACE,YAEF,+BACE,YAEF,sCACE,YAEF,uBACE,YAEF,uBACE,YAEF,qBACE,YAEF,qBACE,YAEF,sBACE,YAEF,iBACE,YAEF,wBACE,YAEF,gBACE,YAEF,sBACE,YAEF,iBACE,YAEF,sBACE,YAEF,qBACE,YAEF,wBACE,YAEF,mBACE,YAEF,iBACE,YAEF,iBACE,YAEF,sBACE,YAEF,mBACE,YAEF,4BACE,YAEF,qBACE,YAEF,yBACE,YAEF,iBACE,YAEF,uBACE,YAEF,2BACE,YAEF,iBACE,YAEF,qBACE,YAEF,gBACE,YAEF,kBACE,YAEF,uBACE,YAEF,kBACE,YAEF,iBACE,YAEF,yBACE,YAEF,yBACE,YAEF,wBACE,YAEF,wBACE,YAEF,kBACE,YAEF,eACE,YAEF,kBACE,YAEF,yBACE,YAEF,cACE,YAEF,kBACE,YAEF,mBACE,YAEF,0BACE,YAEF,iBACE,YAEF,gBACE,YAEF,iBACE,YAEF,oBACE,YAEF,0BACE,YAEF,qBACE,YAEF,gBACE,YAEF,oBACE,YAEF,uBACE,YAEF,4BACE,YAEF,sBACE,YAEF,kBACE,YAEF,kBACE,YAEF,sBACE,YAEF,mBACE,YAEF,kBACE,YAEF,eACE,YAEF,gBACE,YAEF,oBACE,YAEF,0BACE,YAEF,0BACE,YAEF,sBACE,YAEF,uBACE,YAEF,sBACE,YAEF,oBACE,YAEF,qBACE,YAEF,wBACE,YAEF,yBACE,YAEF,wBACE,YAEF,qBACE,YAEF,mBACE,YAEF,sBACE,YAEF,sBACE,YAEF,qBACE,YAEF,uBACE,YAEF,uBACE,YAEF,sBACE,YAEF,oBACE,YAEF,oBACE,YAEF,sBACE,YAEF,iBACE,YAEF,qBACE,YAEF,oBACE,YAEF,yBACE,YAEF,oBACE,YAEF,kBACE,YAEF,yBACE,YAEF,iBACE,YAEF,wBACE,YAEF,sBACE,YAEF,mBACE,YAEF,kBACE,YAEF,yBACE,YAEF,gBACE,YAEF,iBACE,YAEF,iBACE,YAEF,iBACE,YAEF,uBACE,YAEF,kBACE,YAEF,iBACE,YAEF,wBACE,YAEF,mBACE,YAEF,gBACE,YAEF,cACE,YAEF,eACE,YAEF,2BACE,YAEF,uBACE,YAEF,uBACE,YAEF,sBACE,YAEF,qBACE,YAEF,oBACE,YAEF,wBACE,YAEF,iBACE,YAEF,mBACE,YAEF,kBACE,YAEF,qBACE,YAEF,iBACE,YAEF,kBACE,YAEF,iBACE,YAEF,kBACE,YAEF,0BACE,YAEF,kBACE,YAEF,oBACE,YAEF,2BACE,YAEF,sBACE,YAEF,iBACE,YAEF,gBACE,YAEF,uBACE,YAEF,gBACE,YAEF,wBACE,YAEF,2BACE,YAEF,2BACE,YAEF,0BACE,YAEF,mBACE,YAEF,uBACE,YAEF,sBACE,YAEF,0BACE,YAEF,eACE,YAEF,gCACE,YAEF,+BACE,YAEF,oBACE,YAEF,qBACE,YAEF,4BACE,YAEF,sBACE,YAEF,sBACE,YAEF,mBACE,YAEF,mBACE,YAEF,kBACE,YAEF,iBACE,YAEF,gBACE,YAEF,gBACE,YAEF,uBACE,YAEF,wBACE,YAEF,iBACE,YAEF,kBACE,YAEF,gCACE,YAEF,gBACE,YAEF,oBACE,YAEF,oBACE,YAEF,iBACE,YAEF,mBACE,YAEF,0BACE,YAEF,iBACE,YAEF,SACE,SACA,sBACA,WACA,YACA,gBACA,UACA,kBACA,UAEF,mDACE,UACA,YACA,SACA,iBACA,gBACA,WACF,WACE,oCACA,k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,YlBqNc,CmBxNd,oBACE,iBCFJ,uBACE,YACA,gBACA,kBAEA,gCACE,+EACA,uBACA,SACA,aACA,OACA,eACA,QACA,SACA,WAGF,gCACE,YACA,gBChBJ,eACE,gBACA,kBAEA,mBACE,gBAGF,qBACE,WACA,mBACA,2BACA,+DACA,SACA,kBACA,QACA,MACA,QAGF,4BACE,gBACA,iBACA,oBCvBJ,sBACE,gCACA,SACA,kBACA,OACA,QACA,MACA,WAGF,gBACE,iBACA,kBAGF,SACE,kBACA,qBACA,SAEA,kBACE,UACA,aACA,kBACA,kBACA,SACA,WAIJ,aACE,qBACA,UACA,YACA,kBACA,0CACA,gBAEF,0BACE,kBACA,yBACA,UAEF,0BACE,qBACA,yBACA,WAEF,0BACE,qBACA,yBACA,WAEF,0BACE,qBACA,yBACA,WAGF,mBACE,GACE,mBAEF,IACE,wBAEF,IACE,oBCtEJ,UACE,yBACA,mBACA,eACA,qBACA,SACA,iBACA,UACA,cAEA,6BACE,aAEA,mCACE,kBAIJ,aACE,gCACA,kBACA,+BvBmIiB,CuBjIjB,wBACE,YAIJ,mBACE,qBAGF,mBACE,qBAEA,sBACE,qBACA,avBeO,CuBXX,yBACE,qBAEA,4BACE,qBACA,avBMO,CuBFX,mBACE,qBACA,cAEA,sBACE,qBAIJ,kBACE,qBACA,avBTS,CuBWT,qBACE,qBAKN,oBACE,mBACA,aAEA,uBACE,eAKA,kEACE,8BC3EN,aACE,aACA,mBACA,kBxBNsB,CwBOtB,mBACA,4BAEA,sBACE,YACA,iBACA,kBAGF,mCACE,WACA,YACA,cACA,kBACA,WAEA,0CACE,aACA,WACA,YACA,mBACA,uBAIJ,kCACE,eAGF,sBCjCA,yBACA,yBACA,cAEA,4CACE,wBCJyB,CFuCzB,4CACE,yBAIJ,mBC7CA,wBCG4B,CDF5B,yBACA,aCG4B,CDD5B,yCACE,wBCDsB,CFiDxB,sBCrDA,wBCM+B,CDL/B,yBACA,aCM+B,CDJ/B,4CACE,wBCEyB,CFsD3B,sBC7DA,wBCS+B,CDR/B,yBACA,aCS+B,CDP/B,4CACE,wBCKyB,CF2D3B,qBCrEA,wBCY8B,CDX9B,yBACA,aCY8B,CDV9B,2CACE,wBCQwB,CCd5B,WACE,4BACA,+BACA,mBACA,SACA,OACA,oBACA,eACA,QACA,MACA,WAEA,sBACE,yBACA,gBACA,wBAGF,8BACE,UACA,wBAGF,kBACE,aACA,Y3B4LY,C2B1LZ,qCACE,aACA,gBACA,UACA,mBAKF,gDACE,UACA,aAIJ,yBACE,kBACA,SACA,OACA,QACA,kCACA,2B3BlDoB,C2BmDpB,4B3BnDoB,C2BqDpB,mCACE,kBACA,iDACA,0EACA,oCACA,qCACA,kBACA,aACA,mBACA,uBACA,eACA,WAKF,mDACE,yBAEA,6DACE,yBAMJ,mDACE,yBAEA,6DACE,yBAMJ,kDACE,yBAEA,4DACE,yBAMR,mBACE,UACA,cACA,eACA,mBACA,0BACA,U1B9DM,0C0BwDR,mBASI,a1BjEI,0C0BoEN,iCAEI,aAKN,oBACE,gBACA,kB3BxHsB,C2ByHtB,aACA,sBACA,kBACA,WAGF,iBACE,OACA,cACA,6FACA,qCAEA,4BACE,UAIJ,mBACE,mBACA,aACA,yBACA,YC/IyB,CDiJzB,sCACE,gBAIJ,qBACE,yBACA,YACA,SACA,aACA,OACA,eACA,QACA,MACA,WACA,aAEA,4BACE,cACA,WACA,4BAGF,qCACE,WAKJ,mBACE,6FACA,qCACA,mBACA,gCACA,aACA,WAEA,0CACE,gBCrLuB,CDwLzB,0BACE,iBACA,cAGF,oCACE,gBCjMqB,CDqMzB,kBACE,+B3B9CmB,C2B+CnB,gBACA,SACA,WEvMF,gBACE,qBCH4B,CDI5B,YACA,cACA,SCGmB,CDFnB,WAEA,qCACE,WAEA,uCACE,a7BuCO,C6BtCP,aACA,kBACA,qBACA,wBAEA,6CACE,wBCfiC,CDgBjC,UCfsB,CDkBxB,8CACE,wBClBkC,CDmBlC,UClBuB,CCN/B,aACE,mBACA,YACA,qBCLyB,CDMzB,8B/BiJoB,C+BhJpB,aCNmB,CDOnB,SACA,qBCDgB,CDEhB,WACA,UACA,0BAEA,kBACE,oBACA,a/BoCS,C+BnCT,gBAEA,oBACE,2B/BqIa,C+BpIb,eACA,iBACA,a/B6BO,C+BzBX,oEACE,cAGF,sCA7BF,aA8BI,kBAEA,0BACE,4BAIJ,gBACE,aCvCiB,CD0CnB,gBACE,SAGF,mCACE,mBACA,gBC5CqB,CD6CrB,aACA,eACA,WCvCa,CDyCb,0DACE,uBAGF,sCAXF,mCAYI,gBAGF,sCACE,cCrDqB,CDsDrB,4B/B8FsB,C+B7FtB,gBCrDuB,CDsDvB,SACA,mBAGF,sCACE,mBAGF,2DACE,mBACA,aACA,YACA,8BAGF,sDACE,YAGF,uDACE,iBEjFN,WACE,gBACA,eCDoB,CDEpB,mBACA,+BjC+ImB,CiC9InB,kBAEA,qDAEE,yBAGF,mBACE,mBACA,gCACA,aACA,8BjCkIkB,CiChIlB,sEAEE,gBAIJ,sBACE,yBACA,gBACA,wBAIA,uCACE,mBAEA,0DACE,gBAIJ,qCACE,oBACA,kBE7CJ,qBF+CM,CE9CN,YACA,aF8CM,CE7CN,eACA,iBFiDA,oBACE,+BAEA,uCExDF,wBDS2B,CCR3B,YACA,UDSgC,CCRhC,eACA,iBFwDE,qCE5DF,qBDUyB,CCTzB,YACA,anCiDW,CmChDX,eACA,iBF2DE,uCACE,WClDuB,CDsDvB,0CACE,ajClBK,CiCuBP,mDACE,ajCxBK,CiC8BT,uCEjFF,wBFmFM,CElFN,YACA,UAH+C,CAI/C,eACA,iBFoFE,sCExFF,wBF0FM,CEzFN,YACA,UAH+C,CAI/C,eACA,iBF2FE,uCE/FF,wBFiGM,CEhGN,YACA,UAH+C,CAI/C,eACA,iBFmGF,iBACE,sBACA,eCpGoB,CDqGpB,8BjC4CoB,CiC3CpB,YCzGmB,CD0GnB,kBACA,sBAEA,oCACE,4BACA,6BAGF,4BACE,UAIJ,mBACE,eCrHoB,CDsHpB,4BACA,6BACA,+BjC0BmB,CiCzBnB,gBACA,kBACA,kBAEA,yCACE,2BC9HkB,CD+HlB,4BC/HkB,CDkIpB,oCACE,yBACA,0BAGF,qBACE,SAGF,iCACE,sBAGF,+BACE,eAEA,gEACE,kBCrJ8B,CDwJhC,+DACE,iBCzJ8B,CD6JlC,6CACE,eACA,kBACA,aACA,WACA,qBAEF,4CACE,eACA,kBACA,0BACA,SACA,qBAIJ,mBACE,mBACA,6BACA,aACA,yBACA,aAEA,sCACE,gBGzLJ,UACE,mBACA,mBACA,oBACA,eACA,iBACA,iBpC+LY,CoC9LZ,iBACA,+BpCgJmB,CoC9InB,kBACE,kBAGF,YACE,eAGF,oBACE,kBAGF,sBACE,iBAGF,sBACE,iBAGF,sBACE,kBAGF,qBACE,eAGF,mBACE,wBpC4J4B,CoC3J5B,UpC4JiB,CoC1JjB,qBACE,UpCyJe,CoCrJnB,2BACE,wCpCsJ8B,CoCrJ9B,apCGS,CoCDT,6BACE,cAIJ,mBACE,yBACA,WAEA,qBACE,UpCuIe,CoCnInB,2BACE,yCACA,apCfS,CoCiBT,6BACE,apClBO,CoCsBX,mBACE,yBACA,WAEA,qBACE,WAIJ,2BACE,yCACA,apCjCS,CoCmCT,6BACE,apCpCO,CoCwCX,kBACE,yBACA,WAEA,oBACE,WAIJ,0BACE,yCACA,apCnDS,CoCqDT,4BACE,apCtDO,CoC0DX,mBACE,yBACA,WAEA,qBACE,WAIJ,2BACE,yCACA,apCrES,CoCuET,6BACE,apCxEO,CoC4EX,gBACE,yBACA,WAEA,kBACE,WAIJ,wBACE,yCACA,apCvFS,CoCyFT,0BACE,apC1FO,CqCnDb,uBACI,aACA,sBACA,yBACA,oBACA,WACA,YACA,aACA,kBACA,SACA,OACA,oBAEA,8BACI,6BACA,sBACA,UACA,SACA,gBACA,aACA,sBACA,mBACA,cACA,cAGJ,6BACI,YACA,UACA,WACA,uBACA,yBACA,iBACA,oBACA,WAGJ,+BACI,YACA,WACA,kBACA,aACA,yBACA,UACA,mBACA,8BACA,oBACA,kBACA,qCAEA,uFAEI,aACA,mBACA,OAGJ,2CACI,2BAGJ,4CACI,yBAGJ,qCACI,WACA,YACA,yBACA,iBACA,oBACA,cACA,UACA,0DACA,kBAKR,2CACI,cC/ER,aACE,qBCHyB,CDIzB,yBCFe,CDGf,eACA,SCFgB,CDGhB,wBACA,gBACA,cACA,QCTY,CCGd,WACE,yBACA,iBACA,sBACA,kBxCNsB,CwCOtB,WAEE,oBACE,yBACA,kBxCXkB,CwCYlB,cAEA,+BACE,YAIA,0IAEE,kBAKN,oBACE,+BACA,axCsBO,CwCrBP,eACA,iBACA,2BxCwHa,CwCvHb,yBAEA,+BACE,kBAGF,sBACE,eAGF,gCACE,gBACA,cACA,UAIJ,oBACE,iBCpDa,CDuDf,0BACE,gCAGF,oBACE,+BACA,eACA,iBACA,8BxCwFgB,CwCvFhB,iBAMA,sBAJA,+BACE,kBAKF,wBACE,mBACA,SAGF,iEACE,gBAGF,sBACE,axC9BK,CwC+BL,+BxCqEa,CwClEf,0BACE,SAGF,yCACE,SAIJ,oBACE,6BACA,0BACA,kBxChGkB,CwCkGlB,8BACE,eAIJ,sEAEE,iBCxGqB,CD0GrB,0FACE,kBAIJ,oEAEE,kBCjHqB,CDmHrB,wFACE,mBAIJ,2BACE,iBCxHqB,CD0HrB,0CACE,iBAIJ,mBACE,mBAGF,iBACE,qBAIN,kBACE,yBAEA,wBACE,eACA,yBAIJ,aACE,iBACA,gBACA,sBAGF,sBACE,YAGF,gBACE,iBAGF,YACE,cACA,cAGF,cACE,gBACA,gBACA,MAGF,mDAEI,oCE1KA,sBACE,aACA,qBACA,SACA,UACA,cAEA,yBACE,aACA,mBACA,gBCdY,CDgBZ,oCACE,eAGF,6EAEE,2BClBS,CDmBT,a1C2BG,C0C1BH,UAGF,gCACE,gBACA,YACA,sCACA,a1CmBG,C0ClBH,eACA,eACA,+B1CoHW,C0CnHX,wBCpCW,CDqCX,kBACA,0BACA,WAEA,sCACE,aASV,kBACE,YCrD2B,CCC7B,sBACE,SACA,gBACA,eACA,WACA,WAGF,oBACE,kBAGF,2BACE,a5CsCS,C4CrCT,YACA,cACA,YACA,kBACA,UACA,QACA,WAEA,iCACE,gCACA,a5C2BO,CkBpDb,oBACE,eACA,YACA,cACA,YlBqNc,C6CpNhB,eAGE,aAGE,0CACE,oCACA,wB7CmKmC,C6ClKnC,a7CsCO,C6CrCP,mBAGF,kFACE,mBAGF,sFACE,mBAGF,oDACE,+BACA,mBAIJ,iCACE,aACA,mBACA,kBACA,gBACA,YACA,UAEA,8CACE,aACA,wB7C4IsB,C6CxI1B,+BACE,aACA,YACA,eACA,gBACA,mBACA,kBACA,4BAEA,2CACE,kBACA,gBACA,8BAGF,sDACE,eAvDoB,CAwDpB,+BAGF,mDACE,eACA,kBACA,wBCrEyB,CDsEzB,mBACA,a7CnBO,C6CoBP,iBACA,eACA,gBAEA,0DACE,gBACA,YACA,eACA,WACA,aAEA,+DACE,cAIJ,wDACE,gBACA,uBAGF,qDACE,iBAKN,4BACE,YACA,iBAEA,qEAEE,YACA,aAGF,yCACE,a7CqE2B,C6CpE3B,+B7CyCe,C6CrCnB,2BACE,+B7CoCiB,C6CnCjB,eACA,iBACA,gBACA,WACA,gBACA,uBACA,cACA,aAEA,2CACE,mBACA,gBACA,uBAGF,0CACE,a7C8C2B,C6C7C3B,+B7CkBe,C6CdnB,yCACE,kBACA,eAtIwB,CAuIxB,aACA,uBACA,mBACA,eACA,aACA,mBAEA,mDACE,yBAGF,mDACE,YAKN,iEACE,+BAGF,kCACE,aACA,sBACA,yBACA,sBAEA,kEACE,kB7CvKoB,C6C0KtB,kEACE,sBACA,gBACA,MACA,kBAEA,iFACE,6BAIJ,gEACE,iBAEA,mEACE,aACA,eACA,iBACA,mBACA,+B7CvCe,C6CyCf,mJAEE,wBCjM6B,CDoM/B,4EACE,a7Cda,C6Ceb,yBAGF,sEACE,6BAGF,qEACE,iBAGF,8EACE,gBACA,uBACA,iBAKR,yCACE,a7CxKW,C6C2Kb,kEACE,aE3NA,oBAEE,aACA,uBACA,iBAHe,CAKf,0BACE,kBACA,eAKF,iCACE,UCnBiC,CDuBjC,2DACE,UCvBwC,CD6B5C,8DACE,mBACA,WEhCN,skBACE,8BACA,gCCEF,cACE,qBAEA,gFAGE,iBAGF,qBACE,UACA,WAGF,wBACE,UACA,WAGF,sBACE,kBAGF,oBACE,cAGF,uBACE,kBAGF,qCACE,gBACA,yBACA,kBlDpCoB,CkDqCpB,alDaS,CkDXT,oLAIE,gBACA,qBACA,alDKO,oBkDCX,eCrD6B,CDsD7B,yBACA,kBlDrDsB,CkDsDtB,2DACA,mDACA,qBACA,SACA,eACA,gBACA,UACA,aAEA,4CACE,cAGF,8BACE,SAGF,0BACE,aACA,sBACA,kBAGF,sBACE,eChF2B,CDiF3B,6BACA,aACA,kBACA,UAEA,iCACE,YAGF,wBACE,SACA,kBACA,QAKN,wBACE,eACA,alDhDW,CkDiDX,aACA,eACA,iBACA,yBACA,qBACA,WAEA,8BACE,alDzDS,CkD4DX,+BACE,kBlD7DS,CkD8DT,WACA,eACA,gBACA,gBAGF,8BACE,wBCxHiC,CDyHjC,qBAIJ,+BACE,kBE3HA,+BACE,mBAIJ,yBACE,mBACA,aAEA,yCACE,gBAGF,kCACE,cAEA,yCACE,2BACA,8BACA,4BACA,+BACA,oBACA,4BAIJ,qCACE,aAGF,8BACE,iBAEA,gDACE,oBAKN,2BACE,iBACA,gCACA,apDMW,CoDLX,eACA,oBACA,yBAEA,oCACE,SAIJ,yBACE,gBACA,gBACA,mBAEA,yDACE,gBAGF,kCACE,SAGF,0CACE,mBAGF,yDACE,mBACA,apDvBS,CoDwBT,aACA,eAGF,4BACE,6BACA,0BAEA,2DACE,yBACA,mBACA,YACA,WACA,WACA,+BpD8De,CoD7Df,mBACA,kBACA,eACA,mBAEA,yFACE,apD7CK,CoD8CL,cAGF,qGACE,aAIJ,wCACE,gBAGF,0DACE,aACA,eAEA,+DACE,YAGF,0EACE,YAEA,yFACE,SAKN,qDACE,gBACA,oBAGF,+CACE,6BACA,mBACA,kBAIJ,uDACE,cACA,qBACA,qBAGF,2DACE,YACA,yBAEA,mEACE,iBAIJ,0DACE,YACA,iBAIJ,kCACE,iBAGF,+BACE,sBACA,kBpDpKsB,CoDqKtB,yBACA,qBAEA,kCACE,qBAEA,wCACE,mBAIJ,6DACE,yBAGF,iEACI,kBACA,eACA,kBAIN,2BACI,sBACA,2BpD7LoB,CoD8LpB,4BpD9LoB,CoD+LpB,yBACA,2CACA,yBACA,2BpD3Ce,CoD4Cf,gBAEA,0DACI,gBACA,yBACA,0BCvMN,uBACE,mBACA,aACA,mBAEA,mCACE,iBAIJ,uDACE,yBAGF,qBACE,yBACA,kBrDjBoB,CqDkBpB,aACA,8BAGF,qBACE,gCACA,aACA,iBACA,WAEA,iCACE,mBAGF,4BACE,gCACA,arDgBO,CqDfP,eACA,iBACA,2BrDkHa,CqDjHb,yBAEA,sDACE,aAIJ,0BACE,8BACA,gBACA,eAEA,sDACE,gBACA,uBACA,qBAGF,sCACE,iBACA,kBAEF,qCACE,mBAGF,0CACE,cACA,WAQF,6BACE,aACA,YAEA,mBADW,CAHb,6BACE,aACA,YAEA,oBADW,CAHb,6BACE,aACA,YAEA,SADW,CAHb,6BACE,aACA,YAEA,oBADW,CAHb,6BACE,aACA,YAEA,oBADW,CAHb,6BACE,aACA,YAEA,SADW,CAHb,6BACE,aACA,YAEA,oBADW,CAHb,6BACE,aACA,YAEA,oBADW,CAHb,6BACE,aACA,aAEA,SADW,CAHb,8BACE,aACA,aAEA,oBADW,CAHb,8BACE,aACA,aAEA,oBADW,CAHb,8BACE,aACA,aAEA,UADW,CAKf,+BACE,kBAGF,4BACE,uBACA,aACA,uBACA,YAEA,wCACE,gBAGF,uCACE,cACA,mBAEA,mDACE,aCvGV,yBACE,kBAEA,+BACE,iBAGF,gCACE,gBACA,YACA,eACA,kBACA,WACA,QCbJ,iBACE,uBACA,mBACA,eACA,aACA,mBACA,WAGA,+DACE,4BACA,4BACA,oCACA,qCACA,uCACA,wCAGF,iDACE,oCACA,4BACA,0BACA,oCACA,qCACA,uCACA,wCAIF,2BACE,yBAGF,yBACE,yBACA,2BvDjCoB,CuDkCpB,4BvDlCoB,CuDmCpB,WACA,aACA,WAEA,6BACE,kBACA,UAIJ,gCACE,wBvDiIkB,CuDhIlB,gBACA,8BvDhDoB,CuDiDpB,+BvDjDoB,CuDkDpB,aACA,OACA,aACA,WAGF,wBACE,aACA,sBACA,kBACA,kBACA,sBAEA,mCACE,6BvD+GgB,CuD9GhB,mDACE,iBACA,uBAIJ,qCACE,wBAIJ,uBACE,qBACA,SACA,UAEA,+BACE,YACA,gBAGF,0BACE,+BvDwFgB,CuDvFhB,aACA,sBACA,kBAEA,8BACE,kBACA,aACA,WAGF,mCACE,uBAGF,qCACE,mBAKN,4BACE,cACA,gBACA,uBACA,mBAGF,iCACE,SAGF,iDACE,aACA,iBACA,iBAEA,6DACE,avD3EO,CuD4EP,gBAEA,wEACE,cC/HR,gBACE,aACA,qBACA,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","sources":["webpack://@tyk-technologies/tyk-ui/./src/index.scss","webpack://@tyk-technologies/tyk-ui/./src/common/sass/reset.scss","webpack://@tyk-technologies/tyk-ui/./src/common/sass/grid.scss","webpack://@tyk-technologies/tyk-ui/./src/common/sass/variables.scss","webpack://@tyk-technologies/tyk-ui/./src/common/sass/mixins.scss","webpack://@tyk-technologies/tyk-ui/./src/common/sass/fontawesome.scss","webpack://@tyk-technologies/tyk-ui/./src/common/sass/tykon.scss","webpack://@tyk-technologies/tyk-ui/./src/common/sass/typography.scss","webpack://@tyk-technologies/tyk-ui/./src/common/sass/form.scss","webpack://@tyk-technologies/tyk-ui/./src/components/Accordion/sass/Accordion.scss","webpack://@tyk-technologies/tyk-ui/./src/components/Tooltip/sass/variables.scss","webpack://@tyk-technologies/tyk-ui/./src/components/Tooltip/sass/Tooltip.scss","webpack://@tyk-technologies/tyk-ui/./src/components/Button/sass/Button.scss","webpack://@tyk-technologies/tyk-ui/./src/components/Button/sass/mixins.scss","webpack://@tyk-technologies/tyk-ui/./src/components/Button/sass/variables.scss","webpack://@tyk-technologies/tyk-ui/./src/components/ButtonGroup/sass/ButtonGroup.scss","webpack://@tyk-technologies/tyk-ui/./src/components/Chart/sass/Chart.scss","webpack://@tyk-technologies/tyk-ui/./src/components/Collapsible/sass/Collapsible.scss","webpack://@tyk-technologies/tyk-ui/./src/components/CopyToClipboard/sass/CopyToClipboard.scss","webpack://@tyk-technologies/tyk-ui/./src/components/FixedWrapper/sass/FixedWrapper.scss","webpack://@tyk-technologies/tyk-ui/./src/components/FixedWrapper/sass/variables.scss","webpack://@tyk-technologies/tyk-ui/./src/components/FloatingContainer/sass/FloatingContainer.scss","webpack://@tyk-technologies/tyk-ui/./src/components/Icon/sass/Icon.scss","webpack://@tyk-technologies/tyk-ui/./src/components/InfiniteScroller/sass/InfiniteScroller.scss","webpack://@tyk-technologies/tyk-ui/./src/components/InfoNote/sass/InfoNote.scss","webpack://@tyk-technologies/tyk-ui/./src/components/Loader/sass/Loader.scss","webpack://@tyk-technologies/tyk-ui/./src/components/List/sass/List.scss","webpack://@tyk-technologies/tyk-ui/./src/components/Message/sass/Message.scss","webpack://@tyk-technologies/tyk-ui/./src/components/Message/sass/mixins.scss","webpack://@tyk-technologies/tyk-ui/./src/components/Message/sass/variables.scss","webpack://@tyk-technologies/tyk-ui/./src/components/Modal/sass/Modal.scss","webpack://@tyk-technologies/tyk-ui/./src/components/Modal/sass/variables.scss","webpack://@tyk-technologies/tyk-ui/./src/components/Navigation/sass/Navigation.scss","webpack://@tyk-technologies/tyk-ui/./src/components/Navigation/sass/variables.scss","webpack://@tyk-technologies/tyk-ui/./src/components/NavBar/sass/NavBar.scss","webpack://@tyk-technologies/tyk-ui/./src/components/NavBar/sass/variables.scss","webpack://@tyk-technologies/tyk-ui/./src/components/Panel/sass/Panel.scss","webpack://@tyk-technologies/tyk-ui/./src/components/Panel/sass/variables.scss","webpack://@tyk-technologies/tyk-ui/./src/components/Panel/sass/mixins.scss","webpack://@tyk-technologies/tyk-ui/./src/components/Pill/sass/Pill.scss","webpack://@tyk-technologies/tyk-ui/./src/components/RevealPanel/sass/RevealPanel.scss","webpack://@tyk-technologies/tyk-ui/./src/components/Sidebar/sass/Sidebar.scss","webpack://@tyk-technologies/tyk-ui/./src/components/Sidebar/sass/variables.scss","webpack://@tyk-technologies/tyk-ui/./src/components/Table/sass/Table.scss","webpack://@tyk-technologies/tyk-ui/./src/components/Table/sass/variables.scss","webpack://@tyk-technologies/tyk-ui/./src/components/Tabs/sass/Tabs.scss","webpack://@tyk-technologies/tyk-ui/./src/components/Tabs/sass/variables.scss","webpack://@tyk-technologies/tyk-ui/./src/components/Toast/sass/Toast.scss","webpack://@tyk-technologies/tyk-ui/./src/form/components/Combobox2/sass/Combobox.scss","webpack://@tyk-technologies/tyk-ui/./src/form/components/Combobox2/sass/variables.scss","webpack://@tyk-technologies/tyk-ui/./src/form/components/Checkbox/sass/Checkbox.scss","webpack://@tyk-technologies/tyk-ui/./src/form/components/Checkbox/sass/variables.scss","webpack://@tyk-technologies/tyk-ui/./src/form/components/DatePicker/sass/DatePicker.scss","webpack://@tyk-technologies/tyk-ui/./src/form/components/Dropdown/sass/Dropdown.scss","webpack://@tyk-technologies/tyk-ui/./src/form/components/Dropdown/sass/variables.scss","webpack://@tyk-technologies/tyk-ui/./src/form/components/EditableList/sass/EditableList.scss","webpack://@tyk-technologies/tyk-ui/./src/form/components/EditableList2/sass/EditableList2.scss","webpack://@tyk-technologies/tyk-ui/./src/form/components/FileInput/sass/FileInput.scss","webpack://@tyk-technologies/tyk-ui/./src/form/components/Multiselect/sass/Multiselect.scss","webpack://@tyk-technologies/tyk-ui/./src/form/components/Pagination/sass/Pagination.scss","webpack://@tyk-technologies/tyk-ui/./src/form/components/Pagination/sass/variables.scss","webpack://@tyk-technologies/tyk-ui/./src/form/components/Radio/sass/Radio.scss","webpack://@tyk-technologies/tyk-ui/./src/form/components/Radio/sass/variables.scss","webpack://@tyk-technologies/tyk-ui/./src/form/components/Select/sass/Select.scss","webpack://@tyk-technologies/tyk-ui/./src/form/components/SelectableList/sass/SelectableList.scss","webpack://@tyk-technologies/tyk-ui/./src/form/components/Textarea/sass/Textarea.scss","webpack://@tyk-technologies/tyk-ui/./src/form/components/Toggle/sass/Toggle.scss","webpack://@tyk-technologies/tyk-ui/./src/form/components/Toggle/sass/variables.scss","webpack://@tyk-technologies/tyk-ui/./src/form/components/StringBuilder/sass/Stringbuilder.scss","webpack://@tyk-technologies/tyk-ui/./src/common/sass/layout.scss","webpack://@tyk-technologies/tyk-ui/./src/common/sass/texts.scss","webpack://@tyk-technologies/tyk-ui/./src/utils/css-helpers/helpers.scss"],"sourcesContent":["html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video{margin:0;padding:0;border:0;font-size:100%;font:inherit;vertical-align:baseline}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}body{line-height:1}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:before,blockquote:after{content:\"\";content:none}q:before,q:after{content:\"\";content:none}table{border-collapse:collapse;border-spacing:0}.container{max-width:1240px;margin:0 auto}.container,.container-fluid{padding:0 20px}.tyk-row{display:flex;box-sizing:border-box;list-style:none;flex:0 1 auto;flex-direction:row;flex-wrap:wrap;margin-left:-20px;width:calc(100% + 20px)}.tyk-row.no-gutters{margin:0}.tyk-row.tyk-row--gutterless{margin:0;width:100%}.tyk-row.tyk-row--reverse{flex-direction:row-reverse}.tyk-col{max-width:calc(100% - 20px);box-sizing:border-box;flex:0 0 auto;flex-grow:1;flex-basis:calc(100% - 20px);margin-left:20px;width:calc(100% - 20px)}.tyk-col:last-child{margin-right:0}.tyk-row--gutterless .tyk-col{margin:0}.tyk-col.tyk-col--reverse{flex-direction:column-reverse}.tyk-col.tyk-col--align-bottom{align-self:flex-end}.tyk-col.tyk-col--align-top{align-self:flex-start}.tyk-col.tyk-col--align-center{align-self:center}.tyk-col.tyk-col--align-baseline{align-self:baseline}.tyk-col.tyk-col--align-stretch{align-self:stretch}@media screen and (min-width: 1248px){.tyk-col--lg-0{flex-basis:calc(0% - 20px);max-width:calc(0% - 20px)}.tyk-col--offset-lg-0{margin-left:0%}.tyk-col--lg-1{flex-basis:calc(8.3333333333% - 20px);max-width:calc(8.3333333333% - 20px)}.tyk-col--offset-lg-1{margin-left:8.3333333333%}.tyk-col--lg-2{flex-basis:calc(16.6666666667% - 20px);max-width:calc(16.6666666667% - 20px)}.tyk-col--offset-lg-2{margin-left:16.6666666667%}.tyk-col--lg-3{flex-basis:calc(25% - 20px);max-width:calc(25% - 20px)}.tyk-col--offset-lg-3{margin-left:25%}.tyk-col--lg-4{flex-basis:calc(33.3333333333% - 20px);max-width:calc(33.3333333333% - 20px)}.tyk-col--offset-lg-4{margin-left:33.3333333333%}.tyk-col--lg-5{flex-basis:calc(41.6666666667% - 20px);max-width:calc(41.6666666667% - 20px)}.tyk-col--offset-lg-5{margin-left:41.6666666667%}.tyk-col--lg-6{flex-basis:calc(50% - 20px);max-width:calc(50% - 20px)}.tyk-col--offset-lg-6{margin-left:50%}.tyk-col--lg-7{flex-basis:calc(58.3333333333% - 20px);max-width:calc(58.3333333333% - 20px)}.tyk-col--offset-lg-7{margin-left:58.3333333333%}.tyk-col--lg-8{flex-basis:calc(66.6666666667% - 20px);max-width:calc(66.6666666667% - 20px)}.tyk-col--offset-lg-8{margin-left:66.6666666667%}.tyk-col--lg-9{flex-basis:calc(75% - 20px);max-width:calc(75% - 20px)}.tyk-col--offset-lg-9{margin-left:75%}.tyk-col--lg-10{flex-basis:calc(83.3333333333% - 20px);max-width:calc(83.3333333333% - 20px)}.tyk-col--offset-lg-10{margin-left:83.3333333333%}.tyk-col--lg-11{flex-basis:calc(91.6666666667% - 20px);max-width:calc(91.6666666667% - 20px)}.tyk-col--offset-lg-11{margin-left:91.6666666667%}.tyk-col--lg-12{flex-basis:calc(100% - 20px);max-width:calc(100% - 20px)}.tyk-col--offset-lg-12{margin-left:100%}}@media screen and (min-width: 1024px)and (max-width: 1247px){.tyk-col--md-0{flex-basis:calc(0% - 20px);max-width:calc(0% - 20px)}.tyk-col--offset-md-0{margin-left:0%}.tyk-col--md-1{flex-basis:calc(8.3333333333% - 20px);max-width:calc(8.3333333333% - 20px)}.tyk-col--offset-md-1{margin-left:8.3333333333%}.tyk-col--md-2{flex-basis:calc(16.6666666667% - 20px);max-width:calc(16.6666666667% - 20px)}.tyk-col--offset-md-2{margin-left:16.6666666667%}.tyk-col--md-3{flex-basis:calc(25% - 20px);max-width:calc(25% - 20px)}.tyk-col--offset-md-3{margin-left:25%}.tyk-col--md-4{flex-basis:calc(33.3333333333% - 20px);max-width:calc(33.3333333333% - 20px)}.tyk-col--offset-md-4{margin-left:33.3333333333%}.tyk-col--md-5{flex-basis:calc(41.6666666667% - 20px);max-width:calc(41.6666666667% - 20px)}.tyk-col--offset-md-5{margin-left:41.6666666667%}.tyk-col--md-6{flex-basis:calc(50% - 20px);max-width:calc(50% - 20px)}.tyk-col--offset-md-6{margin-left:50%}.tyk-col--md-7{flex-basis:calc(58.3333333333% - 20px);max-width:calc(58.3333333333% - 20px)}.tyk-col--offset-md-7{margin-left:58.3333333333%}.tyk-col--md-8{flex-basis:calc(66.6666666667% - 20px);max-width:calc(66.6666666667% - 20px)}.tyk-col--offset-md-8{margin-left:66.6666666667%}.tyk-col--md-9{flex-basis:calc(75% - 20px);max-width:calc(75% - 20px)}.tyk-col--offset-md-9{margin-left:75%}.tyk-col--md-10{flex-basis:calc(83.3333333333% - 20px);max-width:calc(83.3333333333% - 20px)}.tyk-col--offset-md-10{margin-left:83.3333333333%}.tyk-col--md-11{flex-basis:calc(91.6666666667% - 20px);max-width:calc(91.6666666667% - 20px)}.tyk-col--offset-md-11{margin-left:91.6666666667%}.tyk-col--md-12{flex-basis:calc(100% - 20px);max-width:calc(100% - 20px)}.tyk-col--offset-md-12{margin-left:100%}}@media screen and (min-width: 769px)and (max-width:1023px){.tyk-col--sm-0{flex-basis:calc(0% - 20px);max-width:calc(0% - 20px)}.tyk-col--offset-sm-0{margin-left:0%}.tyk-col--sm-1{flex-basis:calc(8.3333333333% - 20px);max-width:calc(8.3333333333% - 20px)}.tyk-col--offset-sm-1{margin-left:8.3333333333%}.tyk-col--sm-2{flex-basis:calc(16.6666666667% - 20px);max-width:calc(16.6666666667% - 20px)}.tyk-col--offset-sm-2{margin-left:16.6666666667%}.tyk-col--sm-3{flex-basis:calc(25% - 20px);max-width:calc(25% - 20px)}.tyk-col--offset-sm-3{margin-left:25%}.tyk-col--sm-4{flex-basis:calc(33.3333333333% - 20px);max-width:calc(33.3333333333% - 20px)}.tyk-col--offset-sm-4{margin-left:33.3333333333%}.tyk-col--sm-5{flex-basis:calc(41.6666666667% - 20px);max-width:calc(41.6666666667% - 20px)}.tyk-col--offset-sm-5{margin-left:41.6666666667%}.tyk-col--sm-6{flex-basis:calc(50% - 20px);max-width:calc(50% - 20px)}.tyk-col--offset-sm-6{margin-left:50%}.tyk-col--sm-7{flex-basis:calc(58.3333333333% - 20px);max-width:calc(58.3333333333% - 20px)}.tyk-col--offset-sm-7{margin-left:58.3333333333%}.tyk-col--sm-8{flex-basis:calc(66.6666666667% - 20px);max-width:calc(66.6666666667% - 20px)}.tyk-col--offset-sm-8{margin-left:66.6666666667%}.tyk-col--sm-9{flex-basis:calc(75% - 20px);max-width:calc(75% - 20px)}.tyk-col--offset-sm-9{margin-left:75%}.tyk-col--sm-10{flex-basis:calc(83.3333333333% - 20px);max-width:calc(83.3333333333% - 20px)}.tyk-col--offset-sm-10{margin-left:83.3333333333%}.tyk-col--sm-11{flex-basis:calc(91.6666666667% - 20px);max-width:calc(91.6666666667% - 20px)}.tyk-col--offset-sm-11{margin-left:91.6666666667%}.tyk-col--sm-12{flex-basis:calc(100% - 20px);max-width:calc(100% - 20px)}.tyk-col--offset-sm-12{margin-left:100%}}@media screen and (max-width: 768px){.tyk-col--xs-0{flex-basis:calc(0% - 20px);max-width:calc(0% - 20px)}.tyk-col--offset-xs-0{margin-left:0%}.tyk-col--xs-1{flex-basis:calc(8.3333333333% - 20px);max-width:calc(8.3333333333% - 20px)}.tyk-col--offset-xs-1{margin-left:8.3333333333%}.tyk-col--xs-2{flex-basis:calc(16.6666666667% - 20px);max-width:calc(16.6666666667% - 20px)}.tyk-col--offset-xs-2{margin-left:16.6666666667%}.tyk-col--xs-3{flex-basis:calc(25% - 20px);max-width:calc(25% - 20px)}.tyk-col--offset-xs-3{margin-left:25%}.tyk-col--xs-4{flex-basis:calc(33.3333333333% - 20px);max-width:calc(33.3333333333% - 20px)}.tyk-col--offset-xs-4{margin-left:33.3333333333%}.tyk-col--xs-5{flex-basis:calc(41.6666666667% - 20px);max-width:calc(41.6666666667% - 20px)}.tyk-col--offset-xs-5{margin-left:41.6666666667%}.tyk-col--xs-6{flex-basis:calc(50% - 20px);max-width:calc(50% - 20px)}.tyk-col--offset-xs-6{margin-left:50%}.tyk-col--xs-7{flex-basis:calc(58.3333333333% - 20px);max-width:calc(58.3333333333% - 20px)}.tyk-col--offset-xs-7{margin-left:58.3333333333%}.tyk-col--xs-8{flex-basis:calc(66.6666666667% - 20px);max-width:calc(66.6666666667% - 20px)}.tyk-col--offset-xs-8{margin-left:66.6666666667%}.tyk-col--xs-9{flex-basis:calc(75% - 20px);max-width:calc(75% - 20px)}.tyk-col--offset-xs-9{margin-left:75%}.tyk-col--xs-10{flex-basis:calc(83.3333333333% - 20px);max-width:calc(83.3333333333% - 20px)}.tyk-col--offset-xs-10{margin-left:83.3333333333%}.tyk-col--xs-11{flex-basis:calc(91.6666666667% - 20px);max-width:calc(91.6666666667% - 20px)}.tyk-col--offset-xs-11{margin-left:91.6666666667%}.tyk-col--xs-12{flex-basis:calc(100% - 20px);max-width:calc(100% - 20px)}.tyk-col--offset-xs-12{margin-left:100%}}@font-face{font-family:\"OpenSans-Bold\";src:url(\"../fonts/OpenSans-Bold.woff2\") format(\"woff2\"),url(\"../fonts/OpenSans-Bold.woff\") format(\"woff\");font-weight:normal;font-style:normal}@font-face{font-family:\"OpenSans-SemiBold\";src:url(\"../fonts/OpenSans-SemiBold.woff2\") format(\"woff2\"),url(\"../fonts/OpenSans-SemiBold.woff\") format(\"woff\");font-weight:normal;font-style:normal}@font-face{font-family:\"OpenSans-Regular\";src:url(\"../fonts/OpenSans-Regular.woff2\") format(\"woff2\"),url(\"../fonts/OpenSans-Regular.woff\") format(\"woff\");font-weight:normal;font-style:normal}@font-face{font-family:\"smoolthan_bold\";src:url(\"../fonts/smoolthan_bold-webfont.woff2\") format(\"woff2\"),url(\"../fonts/smoolthan_bold-webfont.woff\") format(\"woff\");font-weight:normal;font-style:normal}@font-face{font-family:\"smoolthan_medium\";src:url(\"../fonts/smoolthan_medium-webfont.woff2\") format(\"woff2\"),url(\"../fonts/smoolthan_medium-webfont.woff\") format(\"woff\");font-weight:normal;font-style:normal}@font-face{font-family:\"smoolthan_regular\";src:url(\"../fonts/smoolthan_regular-webfont.woff2\") format(\"woff2\"),url(\"../fonts/smoolthan_regular-webfont.woff\") format(\"woff\");font-weight:normal;font-style:normal}@font-face{font-family:\"tykon\";src:url(\"../fonts/tykon.woff2\") format(\"woff2\"),url(\"../fonts/tykon.woff\") format(\"woff\");font-weight:normal;font-style:normal}/*!\n * Font Awesome Free 5.5.0 by @fontawesome - https://fontawesome.com\n * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)\n */.fa,.fas,.far,.fal,.fab{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-0.0667em}.fa-xs{font-size:.75em}.fa-sm{font-size:.875em}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:2.5em;padding-left:0}.fa-ul>li{position:relative}.fa-li{left:-2em;position:absolute;text-align:center;width:2em;line-height:inherit}.fa-border{border:solid .08em #eee;border-radius:.1em;padding:.2em .25em .15em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left,.fas.fa-pull-left,.far.fa-pull-left,.fal.fa-pull-left,.fab.fa-pull-left{margin-right:.3em}.fa.fa-pull-right,.fas.fa-pull-right,.far.fa-pull-right,.fal.fa-pull-right,.fab.fa-pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.fa-rotate-90{-ms-filter:\"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)\";-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:\"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)\";-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:\"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)\";-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:\"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)\";-webkit-transform:scale(-1, 1);transform:scale(-1, 1)}.fa-flip-vertical{-ms-filter:\"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)\";-webkit-transform:scale(1, -1);transform:scale(1, -1)}.fa-flip-horizontal.fa-flip-vertical{-ms-filter:\"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)\";-webkit-transform:scale(-1, -1);transform:scale(-1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{-webkit-filter:none;filter:none}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-500px:before{content:\"\"}.fa-accessible-icon:before{content:\"\"}.fa-accusoft:before{content:\"\"}.fa-acquisitions-incorporated:before{content:\"\"}.fa-ad:before{content:\"\"}.fa-address-book:before{content:\"\"}.fa-address-card:before{content:\"\"}.fa-adjust:before{content:\"\"}.fa-adn:before{content:\"\"}.fa-adversal:before{content:\"\"}.fa-affiliatetheme:before{content:\"\"}.fa-air-freshener:before{content:\"\"}.fa-algolia:before{content:\"\"}.fa-align-center:before{content:\"\"}.fa-align-justify:before{content:\"\"}.fa-align-left:before{content:\"\"}.fa-align-right:before{content:\"\"}.fa-alipay:before{content:\"\"}.fa-allergies:before{content:\"\"}.fa-amazon:before{content:\"\"}.fa-amazon-pay:before{content:\"\"}.fa-ambulance:before{content:\"\"}.fa-american-sign-language-interpreting:before{content:\"\"}.fa-amilia:before{content:\"\"}.fa-anchor:before{content:\"\"}.fa-android:before{content:\"\"}.fa-angellist:before{content:\"\"}.fa-angle-double-down:before{content:\"\"}.fa-angle-double-left:before{content:\"\"}.fa-angle-double-right:before{content:\"\"}.fa-angle-double-up:before{content:\"\"}.fa-angle-down:before{content:\"\"}.fa-angle-left:before{content:\"\"}.fa-angle-right:before{content:\"\"}.fa-angle-up:before{content:\"\"}.fa-angry:before{content:\"\"}.fa-angrycreative:before{content:\"\"}.fa-angular:before{content:\"\"}.fa-ankh:before{content:\"\"}.fa-app-store:before{content:\"\"}.fa-app-store-ios:before{content:\"\"}.fa-apper:before{content:\"\"}.fa-apple:before{content:\"\"}.fa-apple-alt:before{content:\"\"}.fa-apple-pay:before{content:\"\"}.fa-archive:before{content:\"\"}.fa-archway:before{content:\"\"}.fa-arrow-alt-circle-down:before{content:\"\"}.fa-arrow-alt-circle-left:before{content:\"\"}.fa-arrow-alt-circle-right:before{content:\"\"}.fa-arrow-alt-circle-up:before{content:\"\"}.fa-arrow-circle-down:before{content:\"\"}.fa-arrow-circle-left:before{content:\"\"}.fa-arrow-circle-right:before{content:\"\"}.fa-arrow-circle-up:before{content:\"\"}.fa-arrow-down:before{content:\"\"}.fa-arrow-left:before{content:\"\"}.fa-arrow-right:before{content:\"\"}.fa-arrow-up:before{content:\"\"}.fa-arrows-alt:before{content:\"\"}.fa-arrows-alt-h:before{content:\"\"}.fa-arrows-alt-v:before{content:\"\"}.fa-assistive-listening-systems:before{content:\"\"}.fa-asterisk:before{content:\"\"}.fa-asymmetrik:before{content:\"\"}.fa-at:before{content:\"\"}.fa-atlas:before{content:\"\"}.fa-atom:before{content:\"\"}.fa-audible:before{content:\"\"}.fa-audio-description:before{content:\"\"}.fa-autoprefixer:before{content:\"\"}.fa-avianex:before{content:\"\"}.fa-aviato:before{content:\"\"}.fa-award:before{content:\"\"}.fa-aws:before{content:\"\"}.fa-backspace:before{content:\"\"}.fa-backward:before{content:\"\"}.fa-balance-scale:before{content:\"\"}.fa-ban:before{content:\"\"}.fa-band-aid:before{content:\"\"}.fa-bandcamp:before{content:\"\"}.fa-barcode:before{content:\"\"}.fa-bars:before{content:\"\"}.fa-baseball-ball:before{content:\"\"}.fa-basketball-ball:before{content:\"\"}.fa-bath:before{content:\"\"}.fa-battery-empty:before{content:\"\"}.fa-battery-full:before{content:\"\"}.fa-battery-half:before{content:\"\"}.fa-battery-quarter:before{content:\"\"}.fa-battery-three-quarters:before{content:\"\"}.fa-bed:before{content:\"\"}.fa-beer:before{content:\"\"}.fa-behance:before{content:\"\"}.fa-behance-square:before{content:\"\"}.fa-bell:before{content:\"\"}.fa-bell-slash:before{content:\"\"}.fa-bezier-curve:before{content:\"\"}.fa-bible:before{content:\"\"}.fa-bicycle:before{content:\"\"}.fa-bimobject:before{content:\"\"}.fa-binoculars:before{content:\"\"}.fa-birthday-cake:before{content:\"\"}.fa-bitbucket:before{content:\"\"}.fa-bitcoin:before{content:\"\"}.fa-bity:before{content:\"\"}.fa-black-tie:before{content:\"\"}.fa-blackberry:before{content:\"\"}.fa-blender:before{content:\"\"}.fa-blender-phone:before{content:\"\"}.fa-blind:before{content:\"\"}.fa-blogger:before{content:\"\"}.fa-blogger-b:before{content:\"\"}.fa-bluetooth:before{content:\"\"}.fa-bluetooth-b:before{content:\"\"}.fa-bold:before{content:\"\"}.fa-bolt:before{content:\"\"}.fa-bomb:before{content:\"\"}.fa-bone:before{content:\"\"}.fa-bong:before{content:\"\"}.fa-book:before{content:\"\"}.fa-book-dead:before{content:\"\"}.fa-book-open:before{content:\"\"}.fa-book-reader:before{content:\"\"}.fa-bookmark:before{content:\"\"}.fa-bowling-ball:before{content:\"\"}.fa-box:before{content:\"\"}.fa-box-open:before{content:\"\"}.fa-boxes:before{content:\"\"}.fa-braille:before{content:\"\"}.fa-brain:before{content:\"\"}.fa-briefcase:before{content:\"\"}.fa-briefcase-medical:before{content:\"\"}.fa-broadcast-tower:before{content:\"\"}.fa-broom:before{content:\"\"}.fa-brush:before{content:\"\"}.fa-btc:before{content:\"\"}.fa-bug:before{content:\"\"}.fa-building:before{content:\"\"}.fa-bullhorn:before{content:\"\"}.fa-bullseye:before{content:\"\"}.fa-burn:before{content:\"\"}.fa-buromobelexperte:before{content:\"\"}.fa-bus:before{content:\"\"}.fa-bus-alt:before{content:\"\"}.fa-business-time:before{content:\"\"}.fa-buysellads:before{content:\"\"}.fa-calculator:before{content:\"\"}.fa-calendar:before{content:\"\"}.fa-calendar-alt:before{content:\"\"}.fa-calendar-check:before{content:\"\"}.fa-calendar-minus:before{content:\"\"}.fa-calendar-plus:before{content:\"\"}.fa-calendar-times:before{content:\"\"}.fa-camera:before{content:\"\"}.fa-camera-retro:before{content:\"\"}.fa-campground:before{content:\"\"}.fa-cannabis:before{content:\"\"}.fa-capsules:before{content:\"\"}.fa-car:before{content:\"\"}.fa-car-alt:before{content:\"\"}.fa-car-battery:before{content:\"\"}.fa-car-crash:before{content:\"\"}.fa-car-side:before{content:\"\"}.fa-caret-down:before{content:\"\"}.fa-caret-left:before{content:\"\"}.fa-caret-right:before{content:\"\"}.fa-caret-square-down:before{content:\"\"}.fa-caret-square-left:before{content:\"\"}.fa-caret-square-right:before{content:\"\"}.fa-caret-square-up:before{content:\"\"}.fa-caret-up:before{content:\"\"}.fa-cart-arrow-down:before{content:\"\"}.fa-cart-plus:before{content:\"\"}.fa-cat:before{content:\"\"}.fa-cc-amazon-pay:before{content:\"\"}.fa-cc-amex:before{content:\"\"}.fa-cc-apple-pay:before{content:\"\"}.fa-cc-diners-club:before{content:\"\"}.fa-cc-discover:before{content:\"\"}.fa-cc-jcb:before{content:\"\"}.fa-cc-mastercard:before{content:\"\"}.fa-cc-paypal:before{content:\"\"}.fa-cc-stripe:before{content:\"\"}.fa-cc-visa:before{content:\"\"}.fa-centercode:before{content:\"\"}.fa-certificate:before{content:\"\"}.fa-chair:before{content:\"\"}.fa-chalkboard:before{content:\"\"}.fa-chalkboard-teacher:before{content:\"\"}.fa-charging-station:before{content:\"\"}.fa-chart-area:before{content:\"\"}.fa-chart-bar:before{content:\"\"}.fa-chart-line:before{content:\"\"}.fa-chart-pie:before{content:\"\"}.fa-check:before{content:\"\"}.fa-check-circle:before{content:\"\"}.fa-check-double:before{content:\"\"}.fa-check-square:before{content:\"\"}.fa-chess:before{content:\"\"}.fa-chess-bishop:before{content:\"\"}.fa-chess-board:before{content:\"\"}.fa-chess-king:before{content:\"\"}.fa-chess-knight:before{content:\"\"}.fa-chess-pawn:before{content:\"\"}.fa-chess-queen:before{content:\"\"}.fa-chess-rook:before{content:\"\"}.fa-chevron-circle-down:before{content:\"\"}.fa-chevron-circle-left:before{content:\"\"}.fa-chevron-circle-right:before{content:\"\"}.fa-chevron-circle-up:before{content:\"\"}.fa-chevron-down:before{content:\"\"}.fa-chevron-left:before{content:\"\"}.fa-chevron-right:before{content:\"\"}.fa-chevron-up:before{content:\"\"}.fa-child:before{content:\"\"}.fa-chrome:before{content:\"\"}.fa-church:before{content:\"\"}.fa-circle:before{content:\"\"}.fa-circle-notch:before{content:\"\"}.fa-city:before{content:\"\"}.fa-clipboard:before{content:\"\"}.fa-clipboard-check:before{content:\"\"}.fa-clipboard-list:before{content:\"\"}.fa-clock:before{content:\"\"}.fa-clone:before{content:\"\"}.fa-closed-captioning:before{content:\"\"}.fa-cloud:before{content:\"\"}.fa-cloud-download-alt:before{content:\"\"}.fa-cloud-meatball:before{content:\"\"}.fa-cloud-moon:before{content:\"\"}.fa-cloud-moon-rain:before{content:\"\"}.fa-cloud-rain:before{content:\"\"}.fa-cloud-showers-heavy:before{content:\"\"}.fa-cloud-sun:before{content:\"\"}.fa-cloud-sun-rain:before{content:\"\"}.fa-cloud-upload-alt:before{content:\"\"}.fa-cloudscale:before{content:\"\"}.fa-cloudsmith:before{content:\"\"}.fa-cloudversify:before{content:\"\"}.fa-cocktail:before{content:\"\"}.fa-code:before{content:\"\"}.fa-code-branch:before{content:\"\"}.fa-codepen:before{content:\"\"}.fa-codiepie:before{content:\"\"}.fa-coffee:before{content:\"\"}.fa-cog:before{content:\"\"}.fa-cogs:before{content:\"\"}.fa-coins:before{content:\"\"}.fa-columns:before{content:\"\"}.fa-comment:before{content:\"\"}.fa-comment-alt:before{content:\"\"}.fa-comment-dollar:before{content:\"\"}.fa-comment-dots:before{content:\"\"}.fa-comment-slash:before{content:\"\"}.fa-comments:before{content:\"\"}.fa-comments-dollar:before{content:\"\"}.fa-compact-disc:before{content:\"\"}.fa-compass:before{content:\"\"}.fa-compress:before{content:\"\"}.fa-compress-arrows-alt:before{content:\"\"}.fa-concierge-bell:before{content:\"\"}.fa-connectdevelop:before{content:\"\"}.fa-contao:before{content:\"\"}.fa-cookie:before{content:\"\"}.fa-cookie-bite:before{content:\"\"}.fa-copy:before{content:\"\"}.fa-copyright:before{content:\"\"}.fa-couch:before{content:\"\"}.fa-cpanel:before{content:\"\"}.fa-creative-commons:before{content:\"\"}.fa-creative-commons-by:before{content:\"\"}.fa-creative-commons-nc:before{content:\"\"}.fa-creative-commons-nc-eu:before{content:\"\"}.fa-creative-commons-nc-jp:before{content:\"\"}.fa-creative-commons-nd:before{content:\"\"}.fa-creative-commons-pd:before{content:\"\"}.fa-creative-commons-pd-alt:before{content:\"\"}.fa-creative-commons-remix:before{content:\"\"}.fa-creative-commons-sa:before{content:\"\"}.fa-creative-commons-sampling:before{content:\"\"}.fa-creative-commons-sampling-plus:before{content:\"\"}.fa-creative-commons-share:before{content:\"\"}.fa-creative-commons-zero:before{content:\"\"}.fa-credit-card:before{content:\"\"}.fa-critical-role:before{content:\"\"}.fa-crop:before{content:\"\"}.fa-crop-alt:before{content:\"\"}.fa-cross:before{content:\"\"}.fa-crosshairs:before{content:\"\"}.fa-crow:before{content:\"\"}.fa-crown:before{content:\"\"}.fa-css3:before{content:\"\"}.fa-css3-alt:before{content:\"\"}.fa-cube:before{content:\"\"}.fa-cubes:before{content:\"\"}.fa-cut:before{content:\"\"}.fa-cuttlefish:before{content:\"\"}.fa-d-and-d:before{content:\"\"}.fa-d-and-d-beyond:before{content:\"\"}.fa-dashcube:before{content:\"\"}.fa-database:before{content:\"\"}.fa-deaf:before{content:\"\"}.fa-delicious:before{content:\"\"}.fa-democrat:before{content:\"\"}.fa-deploydog:before{content:\"\"}.fa-deskpro:before{content:\"\"}.fa-desktop:before{content:\"\"}.fa-dev:before{content:\"\"}.fa-deviantart:before{content:\"\"}.fa-dharmachakra:before{content:\"\"}.fa-diagnoses:before{content:\"\"}.fa-dice:before{content:\"\"}.fa-dice-d20:before{content:\"\"}.fa-dice-d6:before{content:\"\"}.fa-dice-five:before{content:\"\"}.fa-dice-four:before{content:\"\"}.fa-dice-one:before{content:\"\"}.fa-dice-six:before{content:\"\"}.fa-dice-three:before{content:\"\"}.fa-dice-two:before{content:\"\"}.fa-digg:before{content:\"\"}.fa-digital-ocean:before{content:\"\"}.fa-digital-tachograph:before{content:\"\"}.fa-directions:before{content:\"\"}.fa-discord:before{content:\"\"}.fa-discourse:before{content:\"\"}.fa-divide:before{content:\"\"}.fa-dizzy:before{content:\"\"}.fa-dna:before{content:\"\"}.fa-dochub:before{content:\"\"}.fa-docker:before{content:\"\"}.fa-dog:before{content:\"\"}.fa-dollar-sign:before{content:\"\"}.fa-dolly:before{content:\"\"}.fa-dolly-flatbed:before{content:\"\"}.fa-donate:before{content:\"\"}.fa-door-closed:before{content:\"\"}.fa-door-open:before{content:\"\"}.fa-dot-circle:before{content:\"\"}.fa-dove:before{content:\"\"}.fa-download:before{content:\"\"}.fa-draft2digital:before{content:\"\"}.fa-drafting-compass:before{content:\"\"}.fa-dragon:before{content:\"\"}.fa-draw-polygon:before{content:\"\"}.fa-dribbble:before{content:\"\"}.fa-dribbble-square:before{content:\"\"}.fa-dropbox:before{content:\"\"}.fa-drum:before{content:\"\"}.fa-drum-steelpan:before{content:\"\"}.fa-drumstick-bite:before{content:\"\"}.fa-drupal:before{content:\"\"}.fa-dumbbell:before{content:\"\"}.fa-dungeon:before{content:\"\"}.fa-dyalog:before{content:\"\"}.fa-earlybirds:before{content:\"\"}.fa-ebay:before{content:\"\"}.fa-edge:before{content:\"\"}.fa-edit:before{content:\"\"}.fa-eject:before{content:\"\"}.fa-elementor:before{content:\"\"}.fa-ellipsis-h:before{content:\"\"}.fa-ellipsis-v:before{content:\"\"}.fa-ello:before{content:\"\"}.fa-ember:before{content:\"\"}.fa-empire:before{content:\"\"}.fa-envelope:before{content:\"\"}.fa-envelope-open:before{content:\"\"}.fa-envelope-open-text:before{content:\"\"}.fa-envelope-square:before{content:\"\"}.fa-envira:before{content:\"\"}.fa-equals:before{content:\"\"}.fa-eraser:before{content:\"\"}.fa-erlang:before{content:\"\"}.fa-ethereum:before{content:\"\"}.fa-etsy:before{content:\"\"}.fa-euro-sign:before{content:\"\"}.fa-exchange-alt:before{content:\"\"}.fa-exclamation:before{content:\"\"}.fa-exclamation-circle:before{content:\"\"}.fa-exclamation-triangle:before{content:\"\"}.fa-expand:before{content:\"\"}.fa-expand-arrows-alt:before{content:\"\"}.fa-expeditedssl:before{content:\"\"}.fa-external-link-alt:before{content:\"\"}.fa-external-link-square-alt:before{content:\"\"}.fa-eye:before{content:\"\"}.fa-eye-dropper:before{content:\"\"}.fa-eye-slash:before{content:\"\"}.fa-facebook:before{content:\"\"}.fa-facebook-f:before{content:\"\"}.fa-facebook-messenger:before{content:\"\"}.fa-facebook-square:before{content:\"\"}.fa-fantasy-flight-games:before{content:\"\"}.fa-fast-backward:before{content:\"\"}.fa-fast-forward:before{content:\"\"}.fa-fax:before{content:\"\"}.fa-feather:before{content:\"\"}.fa-feather-alt:before{content:\"\"}.fa-female:before{content:\"\"}.fa-fighter-jet:before{content:\"\"}.fa-file:before{content:\"\"}.fa-file-alt:before{content:\"\"}.fa-file-archive:before{content:\"\"}.fa-file-audio:before{content:\"\"}.fa-file-code:before{content:\"\"}.fa-file-contract:before{content:\"\"}.fa-file-csv:before{content:\"\"}.fa-file-download:before{content:\"\"}.fa-file-excel:before{content:\"\"}.fa-file-export:before{content:\"\"}.fa-file-image:before{content:\"\"}.fa-file-import:before{content:\"\"}.fa-file-invoice:before{content:\"\"}.fa-file-invoice-dollar:before{content:\"\"}.fa-file-medical:before{content:\"\"}.fa-file-medical-alt:before{content:\"\"}.fa-file-pdf:before{content:\"\"}.fa-file-powerpoint:before{content:\"\"}.fa-file-prescription:before{content:\"\"}.fa-file-signature:before{content:\"\"}.fa-file-upload:before{content:\"\"}.fa-file-video:before{content:\"\"}.fa-file-word:before{content:\"\"}.fa-fill:before{content:\"\"}.fa-fill-drip:before{content:\"\"}.fa-film:before{content:\"\"}.fa-filter:before{content:\"\"}.fa-fingerprint:before{content:\"\"}.fa-fire:before{content:\"\"}.fa-fire-extinguisher:before{content:\"\"}.fa-firefox:before{content:\"\"}.fa-first-aid:before{content:\"\"}.fa-first-order:before{content:\"\"}.fa-first-order-alt:before{content:\"\"}.fa-firstdraft:before{content:\"\"}.fa-fish:before{content:\"\"}.fa-fist-raised:before{content:\"\"}.fa-flag:before{content:\"\"}.fa-flag-checkered:before{content:\"\"}.fa-flag-usa:before{content:\"\"}.fa-flask:before{content:\"\"}.fa-flickr:before{content:\"\"}.fa-flipboard:before{content:\"\"}.fa-flushed:before{content:\"\"}.fa-fly:before{content:\"\"}.fa-folder:before{content:\"\"}.fa-folder-minus:before{content:\"\"}.fa-folder-open:before{content:\"\"}.fa-folder-plus:before{content:\"\"}.fa-font:before{content:\"\"}.fa-font-awesome:before{content:\"\"}.fa-font-awesome-alt:before{content:\"\"}.fa-font-awesome-flag:before{content:\"\"}.fa-font-awesome-logo-full:before{content:\"\"}.fa-fonticons:before{content:\"\"}.fa-fonticons-fi:before{content:\"\"}.fa-football-ball:before{content:\"\"}.fa-fort-awesome:before{content:\"\"}.fa-fort-awesome-alt:before{content:\"\"}.fa-forumbee:before{content:\"\"}.fa-forward:before{content:\"\"}.fa-foursquare:before{content:\"\"}.fa-free-code-camp:before{content:\"\"}.fa-freebsd:before{content:\"\"}.fa-frog:before{content:\"\"}.fa-frown:before{content:\"\"}.fa-frown-open:before{content:\"\"}.fa-fulcrum:before{content:\"\"}.fa-funnel-dollar:before{content:\"\"}.fa-futbol:before{content:\"\"}.fa-galactic-republic:before{content:\"\"}.fa-galactic-senate:before{content:\"\"}.fa-gamepad:before{content:\"\"}.fa-gas-pump:before{content:\"\"}.fa-gavel:before{content:\"\"}.fa-gem:before{content:\"\"}.fa-genderless:before{content:\"\"}.fa-get-pocket:before{content:\"\"}.fa-gg:before{content:\"\"}.fa-gg-circle:before{content:\"\"}.fa-ghost:before{content:\"\"}.fa-gift:before{content:\"\"}.fa-git:before{content:\"\"}.fa-git-square:before{content:\"\"}.fa-github:before{content:\"\"}.fa-github-alt:before{content:\"\"}.fa-github-square:before{content:\"\"}.fa-gitkraken:before{content:\"\"}.fa-gitlab:before{content:\"\"}.fa-gitter:before{content:\"\"}.fa-glass-martini:before{content:\"\"}.fa-glass-martini-alt:before{content:\"\"}.fa-glasses:before{content:\"\"}.fa-glide:before{content:\"\"}.fa-glide-g:before{content:\"\"}.fa-globe:before{content:\"\"}.fa-globe-africa:before{content:\"\"}.fa-globe-americas:before{content:\"\"}.fa-globe-asia:before{content:\"\"}.fa-gofore:before{content:\"\"}.fa-golf-ball:before{content:\"\"}.fa-goodreads:before{content:\"\"}.fa-goodreads-g:before{content:\"\"}.fa-google:before{content:\"\"}.fa-google-drive:before{content:\"\"}.fa-google-play:before{content:\"\"}.fa-google-plus:before{content:\"\"}.fa-google-plus-g:before{content:\"\"}.fa-google-plus-square:before{content:\"\"}.fa-google-wallet:before{content:\"\"}.fa-gopuram:before{content:\"\"}.fa-graduation-cap:before{content:\"\"}.fa-gratipay:before{content:\"\"}.fa-grav:before{content:\"\"}.fa-greater-than:before{content:\"\"}.fa-greater-than-equal:before{content:\"\"}.fa-grimace:before{content:\"\"}.fa-grin:before{content:\"\"}.fa-grin-alt:before{content:\"\"}.fa-grin-beam:before{content:\"\"}.fa-grin-beam-sweat:before{content:\"\"}.fa-grin-hearts:before{content:\"\"}.fa-grin-squint:before{content:\"\"}.fa-grin-squint-tears:before{content:\"\"}.fa-grin-stars:before{content:\"\"}.fa-grin-tears:before{content:\"\"}.fa-grin-tongue:before{content:\"\"}.fa-grin-tongue-squint:before{content:\"\"}.fa-grin-tongue-wink:before{content:\"\"}.fa-grin-wink:before{content:\"\"}.fa-grip-horizontal:before{content:\"\"}.fa-grip-vertical:before{content:\"\"}.fa-gripfire:before{content:\"\"}.fa-grunt:before{content:\"\"}.fa-gulp:before{content:\"\"}.fa-h-square:before{content:\"\"}.fa-hacker-news:before{content:\"\"}.fa-hacker-news-square:before{content:\"\"}.fa-hackerrank:before{content:\"\"}.fa-hammer:before{content:\"\"}.fa-hamsa:before{content:\"\"}.fa-hand-holding:before{content:\"\"}.fa-hand-holding-heart:before{content:\"\"}.fa-hand-holding-usd:before{content:\"\"}.fa-hand-lizard:before{content:\"\"}.fa-hand-paper:before{content:\"\"}.fa-hand-peace:before{content:\"\"}.fa-hand-point-down:before{content:\"\"}.fa-hand-point-left:before{content:\"\"}.fa-hand-point-right:before{content:\"\"}.fa-hand-point-up:before{content:\"\"}.fa-hand-pointer:before{content:\"\"}.fa-hand-rock:before{content:\"\"}.fa-hand-scissors:before{content:\"\"}.fa-hand-spock:before{content:\"\"}.fa-hands:before{content:\"\"}.fa-hands-helping:before{content:\"\"}.fa-handshake:before{content:\"\"}.fa-hanukiah:before{content:\"\"}.fa-hashtag:before{content:\"\"}.fa-hat-wizard:before{content:\"\"}.fa-haykal:before{content:\"\"}.fa-hdd:before{content:\"\"}.fa-heading:before{content:\"\"}.fa-headphones:before{content:\"\"}.fa-headphones-alt:before{content:\"\"}.fa-headset:before{content:\"\"}.fa-heart:before{content:\"\"}.fa-heartbeat:before{content:\"\"}.fa-helicopter:before{content:\"\"}.fa-highlighter:before{content:\"\"}.fa-hiking:before{content:\"\"}.fa-hippo:before{content:\"\"}.fa-hips:before{content:\"\"}.fa-hire-a-helper:before{content:\"\"}.fa-history:before{content:\"\"}.fa-hockey-puck:before{content:\"\"}.fa-home:before{content:\"\"}.fa-hooli:before{content:\"\"}.fa-hornbill:before{content:\"\"}.fa-horse:before{content:\"\"}.fa-hospital:before{content:\"\"}.fa-hospital-alt:before{content:\"\"}.fa-hospital-symbol:before{content:\"\"}.fa-hot-tub:before{content:\"\"}.fa-hotel:before{content:\"\"}.fa-hotjar:before{content:\"\"}.fa-hourglass:before{content:\"\"}.fa-hourglass-end:before{content:\"\"}.fa-hourglass-half:before{content:\"\"}.fa-hourglass-start:before{content:\"\"}.fa-house-damage:before{content:\"\"}.fa-houzz:before{content:\"\"}.fa-hryvnia:before{content:\"\"}.fa-html5:before{content:\"\"}.fa-hubspot:before{content:\"\"}.fa-i-cursor:before{content:\"\"}.fa-id-badge:before{content:\"\"}.fa-id-card:before{content:\"\"}.fa-id-card-alt:before{content:\"\"}.fa-image:before{content:\"\"}.fa-images:before{content:\"\"}.fa-imdb:before{content:\"\"}.fa-inbox:before{content:\"\"}.fa-indent:before{content:\"\"}.fa-industry:before{content:\"\"}.fa-infinity:before{content:\"\"}.fa-info:before{content:\"\"}.fa-info-circle:before{content:\"\"}.fa-instagram:before{content:\"\"}.fa-internet-explorer:before{content:\"\"}.fa-ioxhost:before{content:\"\"}.fa-italic:before{content:\"\"}.fa-itunes:before{content:\"\"}.fa-itunes-note:before{content:\"\"}.fa-java:before{content:\"\"}.fa-jedi:before{content:\"\"}.fa-jedi-order:before{content:\"\"}.fa-jenkins:before{content:\"\"}.fa-joget:before{content:\"\"}.fa-joint:before{content:\"\"}.fa-joomla:before{content:\"\"}.fa-journal-whills:before{content:\"\"}.fa-js:before{content:\"\"}.fa-js-square:before{content:\"\"}.fa-jsfiddle:before{content:\"\"}.fa-kaaba:before{content:\"\"}.fa-kaggle:before{content:\"\"}.fa-key:before{content:\"\"}.fa-keybase:before{content:\"\"}.fa-keyboard:before{content:\"\"}.fa-keycdn:before{content:\"\"}.fa-khanda:before{content:\"\"}.fa-kickstarter:before{content:\"\"}.fa-kickstarter-k:before{content:\"\"}.fa-kiss:before{content:\"\"}.fa-kiss-beam:before{content:\"\"}.fa-kiss-wink-heart:before{content:\"\"}.fa-kiwi-bird:before{content:\"\"}.fa-korvue:before{content:\"\"}.fa-landmark:before{content:\"\"}.fa-language:before{content:\"\"}.fa-laptop:before{content:\"\"}.fa-laptop-code:before{content:\"\"}.fa-laravel:before{content:\"\"}.fa-lastfm:before{content:\"\"}.fa-lastfm-square:before{content:\"\"}.fa-laugh:before{content:\"\"}.fa-laugh-beam:before{content:\"\"}.fa-laugh-squint:before{content:\"\"}.fa-laugh-wink:before{content:\"\"}.fa-layer-group:before{content:\"\"}.fa-leaf:before{content:\"\"}.fa-leanpub:before{content:\"\"}.fa-lemon:before{content:\"\"}.fa-less:before{content:\"\"}.fa-less-than:before{content:\"\"}.fa-less-than-equal:before{content:\"\"}.fa-level-down-alt:before{content:\"\"}.fa-level-up-alt:before{content:\"\"}.fa-life-ring:before{content:\"\"}.fa-lightbulb:before{content:\"\"}.fa-line:before{content:\"\"}.fa-link:before{content:\"\"}.fa-linkedin:before{content:\"\"}.fa-linkedin-in:before{content:\"\"}.fa-linode:before{content:\"\"}.fa-linux:before{content:\"\"}.fa-lira-sign:before{content:\"\"}.fa-list:before{content:\"\"}.fa-list-alt:before{content:\"\"}.fa-list-ol:before{content:\"\"}.fa-list-ul:before{content:\"\"}.fa-location-arrow:before{content:\"\"}.fa-lock:before{content:\"\"}.fa-lock-open:before{content:\"\"}.fa-long-arrow-alt-down:before{content:\"\"}.fa-long-arrow-alt-left:before{content:\"\"}.fa-long-arrow-alt-right:before{content:\"\"}.fa-long-arrow-alt-up:before{content:\"\"}.fa-low-vision:before{content:\"\"}.fa-luggage-cart:before{content:\"\"}.fa-lyft:before{content:\"\"}.fa-magento:before{content:\"\"}.fa-magic:before{content:\"\"}.fa-magnet:before{content:\"\"}.fa-mail-bulk:before{content:\"\"}.fa-mailchimp:before{content:\"\"}.fa-male:before{content:\"\"}.fa-mandalorian:before{content:\"\"}.fa-map:before{content:\"\"}.fa-map-marked:before{content:\"\"}.fa-map-marked-alt:before{content:\"\"}.fa-map-marker:before{content:\"\"}.fa-map-marker-alt:before{content:\"\"}.fa-map-pin:before{content:\"\"}.fa-map-signs:before{content:\"\"}.fa-markdown:before{content:\"\"}.fa-marker:before{content:\"\"}.fa-mars:before{content:\"\"}.fa-mars-double:before{content:\"\"}.fa-mars-stroke:before{content:\"\"}.fa-mars-stroke-h:before{content:\"\"}.fa-mars-stroke-v:before{content:\"\"}.fa-mask:before{content:\"\"}.fa-mastodon:before{content:\"\"}.fa-maxcdn:before{content:\"\"}.fa-medal:before{content:\"\"}.fa-medapps:before{content:\"\"}.fa-medium:before{content:\"\"}.fa-medium-m:before{content:\"\"}.fa-medkit:before{content:\"\"}.fa-medrt:before{content:\"\"}.fa-meetup:before{content:\"\"}.fa-megaport:before{content:\"\"}.fa-meh:before{content:\"\"}.fa-meh-blank:before{content:\"\"}.fa-meh-rolling-eyes:before{content:\"\"}.fa-memory:before{content:\"\"}.fa-menorah:before{content:\"\"}.fa-mercury:before{content:\"\"}.fa-meteor:before{content:\"\"}.fa-microchip:before{content:\"\"}.fa-microphone:before{content:\"\"}.fa-microphone-alt:before{content:\"\"}.fa-microphone-alt-slash:before{content:\"\"}.fa-microphone-slash:before{content:\"\"}.fa-microscope:before{content:\"\"}.fa-microsoft:before{content:\"\"}.fa-minus:before{content:\"\"}.fa-minus-circle:before{content:\"\"}.fa-minus-square:before{content:\"\"}.fa-mix:before{content:\"\"}.fa-mixcloud:before{content:\"\"}.fa-mizuni:before{content:\"\"}.fa-mobile:before{content:\"\"}.fa-mobile-alt:before{content:\"\"}.fa-modx:before{content:\"\"}.fa-monero:before{content:\"\"}.fa-money-bill:before{content:\"\"}.fa-money-bill-alt:before{content:\"\"}.fa-money-bill-wave:before{content:\"\"}.fa-money-bill-wave-alt:before{content:\"\"}.fa-money-check:before{content:\"\"}.fa-money-check-alt:before{content:\"\"}.fa-monument:before{content:\"\"}.fa-moon:before{content:\"\"}.fa-mortar-pestle:before{content:\"\"}.fa-mosque:before{content:\"\"}.fa-motorcycle:before{content:\"\"}.fa-mountain:before{content:\"\"}.fa-mouse-pointer:before{content:\"\"}.fa-music:before{content:\"\"}.fa-napster:before{content:\"\"}.fa-neos:before{content:\"\"}.fa-network-wired:before{content:\"\"}.fa-neuter:before{content:\"\"}.fa-newspaper:before{content:\"\"}.fa-nimblr:before{content:\"\"}.fa-nintendo-switch:before{content:\"\"}.fa-node:before{content:\"\"}.fa-node-js:before{content:\"\"}.fa-not-equal:before{content:\"\"}.fa-notes-medical:before{content:\"\"}.fa-npm:before{content:\"\"}.fa-ns8:before{content:\"\"}.fa-nutritionix:before{content:\"\"}.fa-object-group:before{content:\"\"}.fa-object-ungroup:before{content:\"\"}.fa-odnoklassniki:before{content:\"\"}.fa-odnoklassniki-square:before{content:\"\"}.fa-oil-can:before{content:\"\"}.fa-old-republic:before{content:\"\"}.fa-om:before{content:\"\"}.fa-opencart:before{content:\"\"}.fa-openid:before{content:\"\"}.fa-opera:before{content:\"\"}.fa-optin-monster:before{content:\"\"}.fa-osi:before{content:\"\"}.fa-otter:before{content:\"\"}.fa-outdent:before{content:\"\"}.fa-page4:before{content:\"\"}.fa-pagelines:before{content:\"\"}.fa-paint-brush:before{content:\"\"}.fa-paint-roller:before{content:\"\"}.fa-palette:before{content:\"\"}.fa-palfed:before{content:\"\"}.fa-pallet:before{content:\"\"}.fa-paper-plane:before{content:\"\"}.fa-paperclip:before{content:\"\"}.fa-parachute-box:before{content:\"\"}.fa-paragraph:before{content:\"\"}.fa-parking:before{content:\"\"}.fa-passport:before{content:\"\"}.fa-pastafarianism:before{content:\"\"}.fa-paste:before{content:\"\"}.fa-patreon:before{content:\"\"}.fa-pause:before{content:\"\"}.fa-pause-circle:before{content:\"\"}.fa-paw:before{content:\"\"}.fa-paypal:before{content:\"\"}.fa-peace:before{content:\"\"}.fa-pen:before{content:\"\"}.fa-pen-alt:before{content:\"\"}.fa-pen-fancy:before{content:\"\"}.fa-pen-nib:before{content:\"\"}.fa-pen-square:before{content:\"\"}.fa-pencil-alt:before{content:\"\"}.fa-pencil-ruler:before{content:\"\"}.fa-penny-arcade:before{content:\"\"}.fa-people-carry:before{content:\"\"}.fa-percent:before{content:\"\"}.fa-percentage:before{content:\"\"}.fa-periscope:before{content:\"\"}.fa-person-booth:before{content:\"\"}.fa-phabricator:before{content:\"\"}.fa-phoenix-framework:before{content:\"\"}.fa-phoenix-squadron:before{content:\"\"}.fa-phone:before{content:\"\"}.fa-phone-slash:before{content:\"\"}.fa-phone-square:before{content:\"\"}.fa-phone-volume:before{content:\"\"}.fa-php:before{content:\"\"}.fa-pied-piper:before{content:\"\"}.fa-pied-piper-alt:before{content:\"\"}.fa-pied-piper-hat:before{content:\"\"}.fa-pied-piper-pp:before{content:\"\"}.fa-piggy-bank:before{content:\"\"}.fa-pills:before{content:\"\"}.fa-pinterest:before{content:\"\"}.fa-pinterest-p:before{content:\"\"}.fa-pinterest-square:before{content:\"\"}.fa-place-of-worship:before{content:\"\"}.fa-plane:before{content:\"\"}.fa-plane-arrival:before{content:\"\"}.fa-plane-departure:before{content:\"\"}.fa-play:before{content:\"\"}.fa-play-circle:before{content:\"\"}.fa-playstation:before{content:\"\"}.fa-plug:before{content:\"\"}.fa-plus:before{content:\"\"}.fa-plus-circle:before{content:\"\"}.fa-plus-square:before{content:\"\"}.fa-podcast:before{content:\"\"}.fa-poll:before{content:\"\"}.fa-poll-h:before{content:\"\"}.fa-poo:before{content:\"\"}.fa-poo-storm:before{content:\"\"}.fa-poop:before{content:\"\"}.fa-portrait:before{content:\"\"}.fa-pound-sign:before{content:\"\"}.fa-power-off:before{content:\"\"}.fa-pray:before{content:\"\"}.fa-praying-hands:before{content:\"\"}.fa-prescription:before{content:\"\"}.fa-prescription-bottle:before{content:\"\"}.fa-prescription-bottle-alt:before{content:\"\"}.fa-print:before{content:\"\"}.fa-procedures:before{content:\"\"}.fa-product-hunt:before{content:\"\"}.fa-project-diagram:before{content:\"\"}.fa-pushed:before{content:\"\"}.fa-puzzle-piece:before{content:\"\"}.fa-python:before{content:\"\"}.fa-qq:before{content:\"\"}.fa-qrcode:before{content:\"\"}.fa-question:before{content:\"\"}.fa-question-circle:before{content:\"\"}.fa-quidditch:before{content:\"\"}.fa-quinscape:before{content:\"\"}.fa-quora:before{content:\"\"}.fa-quote-left:before{content:\"\"}.fa-quote-right:before{content:\"\"}.fa-quran:before{content:\"\"}.fa-r-project:before{content:\"\"}.fa-rainbow:before{content:\"\"}.fa-random:before{content:\"\"}.fa-ravelry:before{content:\"\"}.fa-react:before{content:\"\"}.fa-reacteurope:before{content:\"\"}.fa-readme:before{content:\"\"}.fa-rebel:before{content:\"\"}.fa-receipt:before{content:\"\"}.fa-recycle:before{content:\"\"}.fa-red-river:before{content:\"\"}.fa-reddit:before{content:\"\"}.fa-reddit-alien:before{content:\"\"}.fa-reddit-square:before{content:\"\"}.fa-redo:before{content:\"\"}.fa-redo-alt:before{content:\"\"}.fa-registered:before{content:\"\"}.fa-renren:before{content:\"\"}.fa-reply:before{content:\"\"}.fa-reply-all:before{content:\"\"}.fa-replyd:before{content:\"\"}.fa-republican:before{content:\"\"}.fa-researchgate:before{content:\"\"}.fa-resolving:before{content:\"\"}.fa-retweet:before{content:\"\"}.fa-rev:before{content:\"\"}.fa-ribbon:before{content:\"\"}.fa-ring:before{content:\"\"}.fa-road:before{content:\"\"}.fa-robot:before{content:\"\"}.fa-rocket:before{content:\"\"}.fa-rocketchat:before{content:\"\"}.fa-rockrms:before{content:\"\"}.fa-route:before{content:\"\"}.fa-rss:before{content:\"\"}.fa-rss-square:before{content:\"\"}.fa-ruble-sign:before{content:\"\"}.fa-ruler:before{content:\"\"}.fa-ruler-combined:before{content:\"\"}.fa-ruler-horizontal:before{content:\"\"}.fa-ruler-vertical:before{content:\"\"}.fa-running:before{content:\"\"}.fa-rupee-sign:before{content:\"\"}.fa-sad-cry:before{content:\"\"}.fa-sad-tear:before{content:\"\"}.fa-safari:before{content:\"\"}.fa-sass:before{content:\"\"}.fa-save:before{content:\"\"}.fa-schlix:before{content:\"\"}.fa-school:before{content:\"\"}.fa-screwdriver:before{content:\"\"}.fa-scribd:before{content:\"\"}.fa-scroll:before{content:\"\"}.fa-search:before{content:\"\"}.fa-search-dollar:before{content:\"\"}.fa-search-location:before{content:\"\"}.fa-search-minus:before{content:\"\"}.fa-search-plus:before{content:\"\"}.fa-searchengin:before{content:\"\"}.fa-seedling:before{content:\"\"}.fa-sellcast:before{content:\"\"}.fa-sellsy:before{content:\"\"}.fa-server:before{content:\"\"}.fa-servicestack:before{content:\"\"}.fa-shapes:before{content:\"\"}.fa-share:before{content:\"\"}.fa-share-alt:before{content:\"\"}.fa-share-alt-square:before{content:\"\"}.fa-share-square:before{content:\"\"}.fa-shekel-sign:before{content:\"\"}.fa-shield-alt:before{content:\"\"}.fa-ship:before{content:\"\"}.fa-shipping-fast:before{content:\"\"}.fa-shirtsinbulk:before{content:\"\"}.fa-shoe-prints:before{content:\"\"}.fa-shopping-bag:before{content:\"\"}.fa-shopping-basket:before{content:\"\"}.fa-shopping-cart:before{content:\"\"}.fa-shopware:before{content:\"\"}.fa-shower:before{content:\"\"}.fa-shuttle-van:before{content:\"\"}.fa-sign:before{content:\"\"}.fa-sign-in-alt:before{content:\"\"}.fa-sign-language:before{content:\"\"}.fa-sign-out-alt:before{content:\"\"}.fa-signal:before{content:\"\"}.fa-signature:before{content:\"\"}.fa-simplybuilt:before{content:\"\"}.fa-sistrix:before{content:\"\"}.fa-sitemap:before{content:\"\"}.fa-sith:before{content:\"\"}.fa-skull:before{content:\"\"}.fa-skull-crossbones:before{content:\"\"}.fa-skyatlas:before{content:\"\"}.fa-skype:before{content:\"\"}.fa-slack:before{content:\"\"}.fa-slack-hash:before{content:\"\"}.fa-slash:before{content:\"\"}.fa-sliders-h:before{content:\"\"}.fa-slideshare:before{content:\"\"}.fa-smile:before{content:\"\"}.fa-smile-beam:before{content:\"\"}.fa-smile-wink:before{content:\"\"}.fa-smog:before{content:\"\"}.fa-smoking:before{content:\"\"}.fa-smoking-ban:before{content:\"\"}.fa-snapchat:before{content:\"\"}.fa-snapchat-ghost:before{content:\"\"}.fa-snapchat-square:before{content:\"\"}.fa-snowflake:before{content:\"\"}.fa-socks:before{content:\"\"}.fa-solar-panel:before{content:\"\"}.fa-sort:before{content:\"\"}.fa-sort-alpha-down:before{content:\"\"}.fa-sort-alpha-up:before{content:\"\"}.fa-sort-amount-down:before{content:\"\"}.fa-sort-amount-up:before{content:\"\"}.fa-sort-down:before{content:\"\"}.fa-sort-numeric-down:before{content:\"\"}.fa-sort-numeric-up:before{content:\"\"}.fa-sort-up:before{content:\"\"}.fa-soundcloud:before{content:\"\"}.fa-spa:before{content:\"\"}.fa-space-shuttle:before{content:\"\"}.fa-speakap:before{content:\"\"}.fa-spider:before{content:\"\"}.fa-spinner:before{content:\"\"}.fa-splotch:before{content:\"\"}.fa-spotify:before{content:\"\"}.fa-spray-can:before{content:\"\"}.fa-square:before{content:\"\"}.fa-square-full:before{content:\"\"}.fa-square-root-alt:before{content:\"\"}.fa-squarespace:before{content:\"\"}.fa-stack-exchange:before{content:\"\"}.fa-stack-overflow:before{content:\"\"}.fa-stamp:before{content:\"\"}.fa-star:before{content:\"\"}.fa-star-and-crescent:before{content:\"\"}.fa-star-half:before{content:\"\"}.fa-star-half-alt:before{content:\"\"}.fa-star-of-david:before{content:\"\"}.fa-star-of-life:before{content:\"\"}.fa-staylinked:before{content:\"\"}.fa-steam:before{content:\"\"}.fa-steam-square:before{content:\"\"}.fa-steam-symbol:before{content:\"\"}.fa-step-backward:before{content:\"\"}.fa-step-forward:before{content:\"\"}.fa-stethoscope:before{content:\"\"}.fa-sticker-mule:before{content:\"\"}.fa-sticky-note:before{content:\"\"}.fa-stop:before{content:\"\"}.fa-stop-circle:before{content:\"\"}.fa-stopwatch:before{content:\"\"}.fa-store:before{content:\"\"}.fa-store-alt:before{content:\"\"}.fa-strava:before{content:\"\"}.fa-stream:before{content:\"\"}.fa-street-view:before{content:\"\"}.fa-strikethrough:before{content:\"\"}.fa-stripe:before{content:\"\"}.fa-stripe-s:before{content:\"\"}.fa-stroopwafel:before{content:\"\"}.fa-studiovinari:before{content:\"\"}.fa-stumbleupon:before{content:\"\"}.fa-stumbleupon-circle:before{content:\"\"}.fa-subscript:before{content:\"\"}.fa-subway:before{content:\"\"}.fa-suitcase:before{content:\"\"}.fa-suitcase-rolling:before{content:\"\"}.fa-sun:before{content:\"\"}.fa-superpowers:before{content:\"\"}.fa-superscript:before{content:\"\"}.fa-supple:before{content:\"\"}.fa-surprise:before{content:\"\"}.fa-swatchbook:before{content:\"\"}.fa-swimmer:before{content:\"\"}.fa-swimming-pool:before{content:\"\"}.fa-synagogue:before{content:\"\"}.fa-sync:before{content:\"\"}.fa-sync-alt:before{content:\"\"}.fa-syringe:before{content:\"\"}.fa-table:before{content:\"\"}.fa-table-tennis:before{content:\"\"}.fa-tablet:before{content:\"\"}.fa-tablet-alt:before{content:\"\"}.fa-tablets:before{content:\"\"}.fa-tachometer-alt:before{content:\"\"}.fa-tag:before{content:\"\"}.fa-tags:before{content:\"\"}.fa-tape:before{content:\"\"}.fa-tasks:before{content:\"\"}.fa-taxi:before{content:\"\"}.fa-teamspeak:before{content:\"\"}.fa-teeth:before{content:\"\"}.fa-teeth-open:before{content:\"\"}.fa-telegram:before{content:\"\"}.fa-telegram-plane:before{content:\"\"}.fa-temperature-high:before{content:\"\"}.fa-temperature-low:before{content:\"\"}.fa-tencent-weibo:before{content:\"\"}.fa-terminal:before{content:\"\"}.fa-text-height:before{content:\"\"}.fa-text-width:before{content:\"\"}.fa-th:before{content:\"\"}.fa-th-large:before{content:\"\"}.fa-th-list:before{content:\"\"}.fa-the-red-yeti:before{content:\"\"}.fa-theater-masks:before{content:\"\"}.fa-themeco:before{content:\"\"}.fa-themeisle:before{content:\"\"}.fa-thermometer:before{content:\"\"}.fa-thermometer-empty:before{content:\"\"}.fa-thermometer-full:before{content:\"\"}.fa-thermometer-half:before{content:\"\"}.fa-thermometer-quarter:before{content:\"\"}.fa-thermometer-three-quarters:before{content:\"\"}.fa-think-peaks:before{content:\"\"}.fa-thumbs-down:before{content:\"\"}.fa-thumbs-up:before{content:\"\"}.fa-thumbtack:before{content:\"\"}.fa-ticket-alt:before{content:\"\"}.fa-times:before{content:\"\"}.fa-times-circle:before{content:\"\"}.fa-tint:before{content:\"\"}.fa-tint-slash:before{content:\"\"}.fa-tired:before{content:\"\"}.fa-toggle-off:before{content:\"\"}.fa-toggle-on:before{content:\"\"}.fa-toilet-paper:before{content:\"\"}.fa-toolbox:before{content:\"\"}.fa-tooth:before{content:\"\"}.fa-torah:before{content:\"\"}.fa-torii-gate:before{content:\"\"}.fa-tractor:before{content:\"\"}.fa-trade-federation:before{content:\"\"}.fa-trademark:before{content:\"\"}.fa-traffic-light:before{content:\"\"}.fa-train:before{content:\"\"}.fa-transgender:before{content:\"\"}.fa-transgender-alt:before{content:\"\"}.fa-trash:before{content:\"\"}.fa-trash-alt:before{content:\"\"}.fa-tree:before{content:\"\"}.fa-trello:before{content:\"\"}.fa-tripadvisor:before{content:\"\"}.fa-trophy:before{content:\"\"}.fa-truck:before{content:\"\"}.fa-truck-loading:before{content:\"\"}.fa-truck-monster:before{content:\"\"}.fa-truck-moving:before{content:\"\"}.fa-truck-pickup:before{content:\"\"}.fa-tshirt:before{content:\"\"}.fa-tty:before{content:\"\"}.fa-tumblr:before{content:\"\"}.fa-tumblr-square:before{content:\"\"}.fa-tv:before{content:\"\"}.fa-twitch:before{content:\"\"}.fa-twitter:before{content:\"\"}.fa-twitter-square:before{content:\"\"}.fa-typo3:before{content:\"\"}.fa-uber:before{content:\"\"}.fa-uikit:before{content:\"\"}.fa-umbrella:before{content:\"\"}.fa-umbrella-beach:before{content:\"\"}.fa-underline:before{content:\"\"}.fa-undo:before{content:\"\"}.fa-undo-alt:before{content:\"\"}.fa-uniregistry:before{content:\"\"}.fa-universal-access:before{content:\"\"}.fa-university:before{content:\"\"}.fa-unlink:before{content:\"\"}.fa-unlock:before{content:\"\"}.fa-unlock-alt:before{content:\"\"}.fa-untappd:before{content:\"\"}.fa-upload:before{content:\"\"}.fa-usb:before{content:\"\"}.fa-user:before{content:\"\"}.fa-user-alt:before{content:\"\"}.fa-user-alt-slash:before{content:\"\"}.fa-user-astronaut:before{content:\"\"}.fa-user-check:before{content:\"\"}.fa-user-circle:before{content:\"\"}.fa-user-clock:before{content:\"\"}.fa-user-cog:before{content:\"\"}.fa-user-edit:before{content:\"\"}.fa-user-friends:before{content:\"\"}.fa-user-graduate:before{content:\"\"}.fa-user-injured:before{content:\"\"}.fa-user-lock:before{content:\"\"}.fa-user-md:before{content:\"\"}.fa-user-minus:before{content:\"\"}.fa-user-ninja:before{content:\"\"}.fa-user-plus:before{content:\"\"}.fa-user-secret:before{content:\"\"}.fa-user-shield:before{content:\"\"}.fa-user-slash:before{content:\"\"}.fa-user-tag:before{content:\"\"}.fa-user-tie:before{content:\"\"}.fa-user-times:before{content:\"\"}.fa-users:before{content:\"\"}.fa-users-cog:before{content:\"\"}.fa-ussunnah:before{content:\"\"}.fa-utensil-spoon:before{content:\"\"}.fa-utensils:before{content:\"\"}.fa-vaadin:before{content:\"\"}.fa-vector-square:before{content:\"\"}.fa-venus:before{content:\"\"}.fa-venus-double:before{content:\"\"}.fa-venus-mars:before{content:\"\"}.fa-viacoin:before{content:\"\"}.fa-viadeo:before{content:\"\"}.fa-viadeo-square:before{content:\"\"}.fa-vial:before{content:\"\"}.fa-vials:before{content:\"\"}.fa-viber:before{content:\"\"}.fa-video:before{content:\"\"}.fa-video-slash:before{content:\"\"}.fa-vihara:before{content:\"\"}.fa-vimeo:before{content:\"\"}.fa-vimeo-square:before{content:\"\"}.fa-vimeo-v:before{content:\"\"}.fa-vine:before{content:\"\"}.fa-vk:before{content:\"\"}.fa-vnv:before{content:\"\"}.fa-volleyball-ball:before{content:\"\"}.fa-volume-down:before{content:\"\"}.fa-volume-mute:before{content:\"\"}.fa-volume-off:before{content:\"\"}.fa-volume-up:before{content:\"\"}.fa-vote-yea:before{content:\"\"}.fa-vr-cardboard:before{content:\"\"}.fa-vuejs:before{content:\"\"}.fa-walking:before{content:\"\"}.fa-wallet:before{content:\"\"}.fa-warehouse:before{content:\"\"}.fa-water:before{content:\"\"}.fa-weebly:before{content:\"\"}.fa-weibo:before{content:\"\"}.fa-weight:before{content:\"\"}.fa-weight-hanging:before{content:\"\"}.fa-weixin:before{content:\"\"}.fa-whatsapp:before{content:\"\"}.fa-whatsapp-square:before{content:\"\"}.fa-wheelchair:before{content:\"\"}.fa-whmcs:before{content:\"\"}.fa-wifi:before{content:\"\"}.fa-wikipedia-w:before{content:\"\"}.fa-wind:before{content:\"\"}.fa-window-close:before{content:\"\"}.fa-window-maximize:before{content:\"\"}.fa-window-minimize:before{content:\"\"}.fa-window-restore:before{content:\"\"}.fa-windows:before{content:\"\"}.fa-wine-bottle:before{content:\"\"}.fa-wine-glass:before{content:\"\"}.fa-wine-glass-alt:before{content:\"\"}.fa-wix:before{content:\"\"}.fa-wizards-of-the-coast:before{content:\"\"}.fa-wolf-pack-battalion:before{content:\"\"}.fa-won-sign:before{content:\"\"}.fa-wordpress:before{content:\"\"}.fa-wordpress-simple:before{content:\"\"}.fa-wpbeginner:before{content:\"\"}.fa-wpexplorer:before{content:\"\"}.fa-wpforms:before{content:\"\"}.fa-wpressr:before{content:\"\"}.fa-wrench:before{content:\"\"}.fa-x-ray:before{content:\"\"}.fa-xbox:before{content:\"\"}.fa-xing:before{content:\"\"}.fa-xing-square:before{content:\"\"}.fa-y-combinator:before{content:\"\"}.fa-yahoo:before{content:\"\"}.fa-yandex:before{content:\"\"}.fa-yandex-international:before{content:\"\"}.fa-yelp:before{content:\"\"}.fa-yen-sign:before{content:\"\"}.fa-yin-yang:before{content:\"\"}.fa-yoast:before{content:\"\"}.fa-youtube:before{content:\"\"}.fa-youtube-square:before{content:\"\"}.fa-zhihu:before{content:\"\"}.sr-only{border:0;clip:rect(0, 0, 0, 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.sr-only-focusable:active,.sr-only-focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}@font-face{font-family:\"Font Awesome 5 Brands\";font-style:normal;font-weight:normal;src:url(\"../fonts/fa-brands-400.eot\");src:url(\"../fonts/fa-brands-400.eot?#iefix\") format(\"embedded-opentype\"),url(\"../fonts/fa-brands-400.woff2\") format(\"woff2\"),url(\"../fonts/fa-brands-400.woff\") format(\"woff\"),url(\"../fonts/fa-brands-400.ttf\") format(\"truetype\"),url(\"../fonts/fa-brands-400.svg#fontawesome\") format(\"svg\")}.fab{font-family:\"Font Awesome 5 Brands\"}@font-face{font-family:\"Font Awesome 5 Free\";font-style:normal;font-weight:400;src:url(\"../fonts/fa-regular-400.eot\");src:url(\"../fonts/fa-regular-400.eot?#iefix\") format(\"embedded-opentype\"),url(\"../fonts/fa-regular-400.woff2\") format(\"woff2\"),url(\"../fonts/fa-regular-400.woff\") format(\"woff\"),url(\"../fonts/fa-regular-400.ttf\") format(\"truetype\"),url(\"../fonts/fa-regular-400.svg#fontawesome\") format(\"svg\")}.far{font-family:\"Font Awesome 5 Free\";font-weight:400}@font-face{font-family:\"Font Awesome 5 Free\";font-style:normal;font-weight:900;src:url(\"../fonts/fa-solid-900.eot\");src:url(\"../fonts/fa-solid-900.eot?#iefix\") format(\"embedded-opentype\"),url(\"../fonts/fa-solid-900.woff2\") format(\"woff2\"),url(\"../fonts/fa-solid-900.woff\") format(\"woff\"),url(\"../fonts/fa-solid-900.ttf\") format(\"truetype\"),url(\"../fonts/fa-solid-900.svg#fontawesome\") format(\"svg\")}.fa,.fas{font-family:\"Font Awesome 5 Free\";font-weight:900}.tykon:before{font-family:\"tykon\" !important;font-style:normal !important;font-weight:normal !important;font-variant:normal !important;text-transform:none !important;speak:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.tykon-arrowdown:before{content:\"a\"}.tykon-arrowleft:before{content:\"b\"}.tykon-arrowright:before{content:\"c\"}.tykon-arrowup:before{content:\"d\"}.tykon-doublearrowdown:before{content:\"e\"}.tykon-filter:before{content:\"f\"}.tykon-graph1:before{content:\"g\"}.tykon-graph2:before{content:\"h\"}.tykon-label:before{content:\"i\"}.tykon-reload:before{content:\"j\"}.tykon-select:before{content:\"k\"}.tykon-target:before{content:\"l\"}.tykon-undo:before{content:\"m\"}.tykon-deployment:before{content:\"n\"}.tykon-team:before{content:\"o\"}.tykon-overview:before{content:\"p\"}.tykon-loadout:before{content:\"q\"}.tykon-entitlement:before{content:\"r\"}.tykon-users:before{content:\"s\"}.tykon-doublearrowdown:before{content:\"e\"}.tykon-arrowsort:before{content:\"W\"}.tykon-check:before{content:\"V\"}.tykon-copy:before{content:\"C\"}.tykon-delete:before{content:\"U\"}.tykon-download:before{content:\"L\"}.tykon-draft:before{content:\"D\"}.tykon-edit:before{content:\"E\"}.tykon-filter:before{content:\"f\"}.tykon-graphq2:before{content:\"h\"}.tykon-help:before{content:\"?\"}.tykon-label:before{content:\"i\"}.tykon-link:before{content:\"R\"}.tykon-lock1:before{content:\"Y\"}.tykon-lock2:before{content:\"Z\"}.tykon-notifications:before{content:\"N\"}.tykon-plus:before{content:\"+\"}.tykon-profile:before{content:\"P\"}.tykon-reload:before{content:\"j\"}.tykon-search:before{content:\"O\"}.tykon-select:before{content:\"k\"}.tykon-settings:before{content:\"S\"}.tykon-target:before{content:\"l\"}.tykon-undo:before{content:\"m\"}.tykon-warning:before{content:\"!\"}.tykon-x:before{content:\"X\"}.tykon-waiting:before{content:\"T\"}.tykon-fullscreen:before{content:\"\"}.tykon-fullscreen-exit:before{content:\"\"}.tykon-time:before{content:\"t\"}h1,h2,h3,h4,h5,h6{margin-bottom:15px;font-family:\"smoolthan_medium\";font-weight:500;color:#36364c}label{display:inline-block;max-width:100%;margin-bottom:5px;color:#36364c}h1{font-size:25px;line-height:30px}h2{font-size:20px;line-height:24px}h3{font-size:17px;line-height:23px}h4{font-size:16px;line-height:22px}h5{font-size:14px;line-height:19px}h6{font-size:12px;line-height:16px}p,label{font-size:14px;line-height:19px;font-family:\"OpenSans-regular\"}strong{font-family:\"OpenSans-Bold\"}a:not(.tyk-button){cursor:pointer;color:#505071;font-family:\"OpenSans-regular\"}a:not(.tyk-button).link--bold{font-family:\"OpenSans-Bold\"}a:not(.tyk-button)+a{margin-left:5px}a:not(.tyk-button) i{font-size:9px}p a,label a{font-size:14px;text-decoration:underline}.font-family-regular{font-family:\"OpenSans-regular\"}.font-family-medium{font-family:\"OpenSans-SemiBold\"}.font-family-bold{font-family:\"OpenSans-Bold\"}.heading-font-family-regular{font-family:\"smoolthan_regular\"}.heading-font-family-medium{font-family:\"smoolthan_medium\"}.heading-font-family-bold{font-family:\"smoolthan_bold\"}.text--primary{color:#a2a2cc}.text--danger{color:#ff6c7d}.text--info{color:#82bbc6}.text-warning{color:#d6b218}.text--medium{font-family:\"OpenSans-SemiBold\"}.text--bold{font-family:\"OpenSans-Bold\"}.text--uppercase{text-transform:uppercase}.text--ellipsis{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.text--underline{text-decoration:underline}td.text-ellipsis{max-width:250px}.section-title{font-family:\"smoolthan_bold\";margin-bottom:5px}.section-title .tyk-icon{margin-left:5px}.sub-section-title{margin-bottom:5px;font-family:\"OpenSans-SemiBold\";font-size:16px;line-height:22px}.sub-section-title .tyk-icon{margin-left:5px}.section-group-title{margin-bottom:5px;font-family:\"OpenSans-Bold\";font-size:14px;line-height:19px;text-transform:uppercase}.section-group-title .tyk-icon{margin-left:5px}.text--default-light{color:#c3c3e5 !important}.text--default{color:#36364c !important}.text--primary{color:#a2a2cc !important}.text--danger{color:#ff6c7d !important}.text--success{color:#00d9ba !important}.text--warning{color:#d6b218 !important}.tyk-form-section__title{font-size:16px;margin:5px 0 15px 0}.tyk-form-section__title--light{color:#43435b}.tyk-form-group{margin-bottom:15px}.tyk-form-group.has-error>.tyk-form-control__wrapper>.tyk-form-control,.tyk-form-group.has-error>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control,.tyk-form-group.has-error .tyk-file-input__wrapper>.tyk-form-control{border:2px solid #ff6c7d;border-left:2px solid #ea4766;outline:none}.tyk-form-group.has-error>.tyk-form-control__wrapper>.tyk-form-control:focus,.tyk-form-group.has-error>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control:focus,.tyk-form-group.has-error .tyk-file-input__wrapper>.tyk-form-control:focus{border-left:2px solid #ea4766;border-color:#ea4766;outline:none}.tyk-form-group label{font-family:\"OpenSans-SemiBold\"}.tyk-form-group--inline{align-items:stretch;display:flex;flex-wrap:nowrap}.tyk-form-group--inline .tyk-form-control__wrapper{flex:1}.tyk-form-group--inline label{display:flex;white-space:nowrap;margin-right:20px;margin-top:14px}.tyk-form-group--inline input,.tyk-form-group--inline select{display:flex}.tyk-form-group--inline .tyk-form-control__help-block{display:flex;margin-left:auto}.tyk-form-group--default{color:#505071}.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-form-control,.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control,.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control{border:2px solid #c3c3e5;color:#505071}.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-form-control[disabled],.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control[disabled],.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control[disabled]{border:2px solid #c3c3e5;background-color:#ededf9;color:#505071;cursor:not-allowed}.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-form-control[disabled]+.tyk-input-group__addon,.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control[disabled]+.tyk-input-group__addon,.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control[disabled]+.tyk-input-group__addon{background-color:#ededf9}.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-form-control::placeholder,.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control::placeholder,.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control::placeholder{opacity:.8}.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-form-control:-ms-input-placeholder,.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control:-ms-input-placeholder,.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control:-ms-input-placeholder{opacity:.8}.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-form-control::-ms-input-placeholder,.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control::-ms-input-placeholder,.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control::-ms-input-placeholder{opacity:.8}.tyk-form-group--default.tyk-form-group--addon-left .tyk-input-group__addon{border-bottom:2px solid #c3c3e5;border-left:2px solid #c3c3e5;border-top:2px solid #c3c3e5;color:#505071}.tyk-form-group--default.tyk-form-group--addon-right .tyk-input-group__addon{border-bottom:2px solid #c3c3e5;border-right:2px solid #c3c3e5;border-top:2px solid #c3c3e5;color:#505071}.tyk-form-group--primary{color:#505071}.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-form-control,.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control,.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control{border:2px solid #a2a2cc;color:#505071}.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-form-control[disabled],.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control[disabled],.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control[disabled]{border:2px solid #a2a2cc;background-color:#ededf9;color:#505071;cursor:not-allowed}.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-form-control[disabled]+.tyk-input-group__addon,.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control[disabled]+.tyk-input-group__addon,.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control[disabled]+.tyk-input-group__addon{background-color:#ededf9}.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-form-control::placeholder,.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control::placeholder,.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control::placeholder{opacity:.8}.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-form-control:-ms-input-placeholder,.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control:-ms-input-placeholder,.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control:-ms-input-placeholder{opacity:.8}.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-form-control::-ms-input-placeholder,.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control::-ms-input-placeholder,.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control::-ms-input-placeholder{opacity:.8}.tyk-form-group--primary.tyk-form-group--addon-left .tyk-input-group__addon{border-bottom:2px solid #a2a2cc;border-left:2px solid #a2a2cc;border-top:2px solid #a2a2cc;color:#a2a2cc}.tyk-form-group--primary.tyk-form-group--addon-right .tyk-input-group__addon{border-bottom:2px solid #a2a2cc;border-right:2px solid #a2a2cc;border-top:2px solid #a2a2cc;color:#a2a2cc}.tyk-form-group--success{color:#505071}.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-form-control,.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control,.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control{border:2px solid #00d9ba;color:#505071}.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-form-control[disabled],.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control[disabled],.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control[disabled]{border:2px solid #00d9ba;background-color:#ededf9;color:#505071;cursor:not-allowed}.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-form-control[disabled]+.tyk-input-group__addon,.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control[disabled]+.tyk-input-group__addon,.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control[disabled]+.tyk-input-group__addon{background-color:#ededf9}.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-form-control::placeholder,.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control::placeholder,.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control::placeholder{opacity:.8}.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-form-control:-ms-input-placeholder,.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control:-ms-input-placeholder,.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control:-ms-input-placeholder{opacity:.8}.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-form-control::-ms-input-placeholder,.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control::-ms-input-placeholder,.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control::-ms-input-placeholder{opacity:.8}.tyk-form-group--success.tyk-form-group--addon-left .tyk-input-group__addon{border-bottom:2px solid #00d9ba;border-left:2px solid #00d9ba;border-top:2px solid #00d9ba;color:#00d9ba}.tyk-form-group--success.tyk-form-group--addon-right .tyk-input-group__addon{border-bottom:2px solid #00d9ba;border-right:2px solid #00d9ba;border-top:2px solid #00d9ba;color:#00d9ba}.tyk-form-group--rounded-corners.has-error>.tyk-form-control__wrapper>.tyk-form-control{border-left:2px solid #ff6c7d}.tyk-form-group--rounded-corners.has-error>.tyk-form-control__wrapper>.tyk-form-control:focus{border-left:2px solid #ff6c7d;outline:none}.tyk-form-group--rounded-corners .tyk-form-control{border-radius:18px}.tyk-form-group--addon-right input{border-right:0 !important;padding-right:0}.tyk-form-group--addon-left input{border-left:0 !important;padding-left:0}.tyk-form-group--rounded-corners.tyk-form-group--addon-right input{border-top-right-radius:0;border-bottom-right-radius:0}.tyk-form-group--rounded-corners.tyk-form-group--addon-right .tyk-input-group__addon{background:#fff;border-top-right-radius:18px;border-bottom-right-radius:18px;color:#505071}.tyk-form-group--rounded-corners.tyk-form-group--addon-left input{border-top-left-radius:0;border-bottom-left-radius:0;border-left:0 !important}.tyk-form-group--rounded-corners.tyk-form-group--addon-left .tyk-input-group__addon{background:#fff;border-top-left-radius:18px;border-bottom-left-radius:18px;color:#505071}.tyk-form-control__error-message{font-family:\"OpenSans-regular\";font-size:12px;line-height:16px;margin-top:5px;padding:0 0 0 20px;position:relative}.tyk-form-control__error-message:before{content:\"!\";background:#ff6c7d;color:#fff;font-family:\"OpenSans-Bold\";border-radius:8px;display:inline-block;margin-right:5px;padding:0px 7px}.tyk-input-group{align-items:center;display:flex;outline:none}.tyk-input-group__addon{align-items:center;background-color:#fff;border:2px solid #c3c3e5;display:flex;height:39px;padding:10px 10px 10px 10px}.tyk-input-group__addon:first-child{border-right:0}.tyk-input-group__addon:last-child{border-left:0}.tyk-form-control{font-family:\"OpenSans-SemiBold\";font-size:14px;line-height:19px;border:2px solid #c3c3e5;background-color:#fff;color:#505071;display:block;height:39px;padding:10px 20px 10px 20px;transition:all .2s linear;width:100%}.tyk-form-control[disabled]{background-color:#ededf9;cursor:not-allowed}.tyk-form-control[disabled] .tyk-input-group__addon{background-color:#ededf9}.tyk-form-control::placeholder{font-family:\"OpenSans-SemiBold\";color:#a2a2cc}.tyk-form-control:focus,.tyk-form-control:active{outline:none;border:2px solid #00d9ba !important}.tyk-form-control:focus+.tyk-input-group__addon,.tyk-form-control:active+.tyk-input-group__addon{border:2px solid #00d9ba !important;border-left:none !important}.tyk-form-control__help-block{color:#36364c;font-style:normal;font-family:\"OpenSans-regular\";font-size:12px;line-height:16px;padding:0 0 0 20px;margin:5px 0 0 0}select{border-radius:0;-webkit-appearance:none}.inline-form-wrapper{align-items:center;display:flex;width:100%}.inline-form-wrapper .inline-form{width:100%}.inline-form-wrapper>button{margin-left:10px;margin-bottom:15px}.tyk-checkbox,.tyk-radio{margin:10px 0}.tyk-checkbox label,.tyk-radio label{font-family:\"OpenSans-SemiBold\"}.tyk-checkbox input,.tyk-radio input{margin:0 5px 0 0}.tyk-checkbox--inline,.tyk-radio--inline{display:inline-flex;margin-left:15px}.tyk-checkbox--inline:first-child,.tyk-radio--inline:first-child{margin-left:0}.tyk-inline-form{align-items:center;display:flex;flex-wrap:wrap}.tyk-inline-form .tyk-form-group{flex:1;margin-left:20px;min-width:200px}.tyk-inline-form .tyk-form-group:first-child{margin-left:0}.tyk-inline-form>.tyk-button{margin-left:20px;margin-bottom:15px}.tyk-accordion__item-header>button,.tyk-accordion__trigger{background:none;border:none;cursor:pointer;display:flex;font-size:14px;outline:none;padding:15px 15px;width:100%}.tyk-accordion__item-header>button .tyk-icon,.tyk-accordion__trigger .tyk-icon{margin-left:auto}.tyk-accordion__item{display:grid}.tyk-accordion__item--trigger-position-left{grid-template-columns:40px auto;grid-template-areas:\"trigger header\" \"trigger content\"}.tyk-accordion__item--trigger-position-right{grid-template-columns:auto 40px;grid-template-areas:\"header trigger\" \"content trigger\"}.tyk-accordion__item--trigger-in-header{grid-template-columns:auto;grid-template-areas:\"header\" \"content\"}.tyk-accordion__trigger-wrapper{grid-area:trigger;display:flex;align-items:flex-start;justify-content:center}.tyk-accordion__trigger-wrapper .tyk-icon{margin-left:auto;margin-right:auto}.tyk-accordion__item-header{grid-area:header}.tyk-accordion__trigger--disabled{color:#e1e1e1}.tyk-accordion__item-header.tyk-accordion__arrow-trigger{align-items:center;display:flex}.tyk-accordion__item-header.tyk-accordion__arrow-trigger>div{flex:1}.tyk-accordion__item-header.tyk-accordion__arrow-trigger>button{margin-left:auto;width:auto}.tyk-accordion__item-content{grid-area:content}:root{--tooltip-max-width: 450px}.tyk-tooltip{display:flex;align-items:center;background-color:#ededf9;border:2px solid #a2a2cc;border-radius:18px;max-width:var(--tooltip-max-width);padding:20px}.tyk-tooltip>.tyk-icon:first-child{width:32px;height:32px;border-radius:50%;color:#fff;background-color:#7a79a1}.tyk-tooltip>.tyk-icon:first-child:before{display:flex;width:100%;height:100%;align-items:center;justify-content:center}.tyk-tooltip>.tyk-icon+.tyk-tooltip__content{margin-left:20px}.tyk-tooltip__content{color:#505071;word-break:break-word;word-wrap:break-word}.tyk-tooltip__content+.tyk-icon{margin-left:20px}.tyk-tooltip>.tyk-icon:last-child{cursor:pointer}.tyk-button{background-color:rgba(0,0,0,0);border:none;color:#fff;cursor:pointer;display:inline-block;font-family:\"OpenSans-Bold\";text-align:center;text-transform:uppercase;text-decoration:none;transition:all .2s linear;user-select:none;vertical-align:middle;white-space:nowrap;padding:8px 23px;font-size:14px;line-height:22px;border-radius:20px}.tyk-button+.tyk-button,.tyk-button+.tyk-dropdown,.tyk-button+.tyk-toggle{margin-left:10px}.tyk-button span+i{margin-left:10px}.tyk-button i+span{margin-left:10px}.tyk-button.disabled{cursor:not-allowed;opacity:.7}.tyk-button:hover{color:#fff;text-decoration:none}.tyk-button:focus{outline:none}.tyk-button--white{background-color:#fff;color:#36364c;border:2px solid rgba(0,0,0,0)}.tyk-button--white:hover{background-color:#43435b;color:#fff}.tyk-button--primary{background-color:#7a79a1;color:#fff;border:2px solid #7a79a1}.tyk-button--primary:hover{background-color:#505071;color:#fff}.tyk-button--primary-link{background-color:rgba(0,0,0,0);border:2px solid rgba(0,0,0,0);color:#7a79a1}.tyk-button--primary-link:hover{background-color:rgba(0,0,0,0);color:#7a79a1;border-color:#7a79a1;text-decoration:underline}.tyk-button--primary-outline{border:2px solid #7a79a1;background-color:rgba(0,0,0,0);color:#7a79a1}.tyk-button--primary-outline:hover{background-color:#7a79a1;color:#fff}.tyk-button--primary-outline.disabled{color:#7a79a1}.tyk-button--primary-outline.disabled:hover{background-color:rgba(0,0,0,0);color:#7a79a1}.tyk-button--primary-gradient{border-image:linear-gradient(to right, #A2A2CC, #505071, #A2A2CC) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #A2A2CC, #505071, #A2A2CC);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-button--primary-gradient:hover,.tyk-button--primary-gradient:active,.tyk-button--primary-gradient:active:focus{border-image:linear-gradient(to right, #A2A2CC, #505071, #A2A2CC) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #A2A2CC, #505071, #A2A2CC);background-position:100% 0;background-size:200% auto;background-clip:border-box}.tyk-button--primary-gradient:hover.disabled,.tyk-button--primary-gradient:active.disabled,.tyk-button--primary-gradient:active:focus.disabled{border-image:linear-gradient(to right, #A2A2CC, #505071, #A2A2CC) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #A2A2CC, #505071, #A2A2CC);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-button--success{background-color:#00d9ba;color:#fff;border:2px solid #00d9ba}.tyk-button--success:hover{background-color:#00b798;color:#fff}.tyk-button--success-link{background-color:rgba(0,0,0,0);border:2px solid rgba(0,0,0,0);color:#00d9ba}.tyk-button--success-link:hover{background-color:rgba(0,0,0,0);color:#00d9ba;border-color:#00d9ba;text-decoration:underline}.tyk-button--success-outline{border:2px solid #00d9ba;background-color:rgba(0,0,0,0);color:#00d9ba}.tyk-button--success-outline:hover{background-color:#00d9ba;color:#fff}.tyk-button--success-outline.disabled{color:#00d9ba}.tyk-button--success-outline.disabled:hover{background-color:rgba(0,0,0,0);color:#00d9ba}.tyk-button--success-gradient{border-image:linear-gradient(to right, #00d9ba, #00B798, #00d9ba) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #00d9ba, #00B798, #00d9ba);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-button--success-gradient:hover,.tyk-button--success-gradient:active,.tyk-button--success-gradient:active:focus{border-image:linear-gradient(to right, #00d9ba, #00B798, #00d9ba) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #00d9ba, #00B798, #00d9ba);background-position:100% 0;background-size:200% auto;background-clip:border-box}.tyk-button--success-gradient:hover.disabled,.tyk-button--success-gradient:active.disabled,.tyk-button--success-gradient:active:focus.disabled{border-image:linear-gradient(to right, #00d9ba, #00B798, #00d9ba) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #00d9ba, #00B798, #00d9ba);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-button--danger{background-color:#ff6c7d;color:#fff;border:2px solid #ff6c7d}.tyk-button--danger:hover{background-color:#ea4766;color:#fff}.tyk-button--danger-link{background-color:rgba(0,0,0,0);border:2px solid rgba(0,0,0,0);color:#ff6c7d}.tyk-button--danger-link:hover{background-color:rgba(0,0,0,0);color:#ff6c7d;border-color:#ff6c7d;text-decoration:underline}.tyk-button--danger-outline{border:2px solid #ff6c7d;background-color:rgba(0,0,0,0);color:#ff6c7d}.tyk-button--danger-outline:hover{background-color:#ff6c7d;color:#fff}.tyk-button--danger-outline.disabled{color:#ff6c7d}.tyk-button--danger-outline.disabled:hover{background-color:rgba(0,0,0,0);color:#ff6c7d}.tyk-button--danger-gradient{border-image:linear-gradient(to right, #FF6C7D, #EA4766, #FF6C7D) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #FF6C7D, #EA4766, #FF6C7D);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-button--danger-gradient:hover,.tyk-button--danger-gradient:active,.tyk-button--danger-gradient:active:focus{border-image:linear-gradient(to right, #FF6C7D, #EA4766, #FF6C7D) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #FF6C7D, #EA4766, #FF6C7D);background-position:100% 0;background-size:200% auto;background-clip:border-box}.tyk-button--danger-gradient:hover.disabled,.tyk-button--danger-gradient:active.disabled,.tyk-button--danger-gradient:active:focus.disabled{border-image:linear-gradient(to right, #FF6C7D, #EA4766, #FF6C7D) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #FF6C7D, #EA4766, #FF6C7D);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-button--warning{background-color:#d6b218;color:#fff;border:2px solid rgba(0,0,0,0)}.tyk-button--warning:hover{background-color:#b49514;color:#fff}.tyk-button--warning-link{background-color:rgba(0,0,0,0);border:2px solid rgba(0,0,0,0);color:#d6b218}.tyk-button--warning-link:hover{background-color:rgba(0,0,0,0);color:#d6b218;border-color:#d6b218;text-decoration:underline}.tyk-button--warning-outline{border:2px solid #d6b218;background-color:rgba(0,0,0,0);color:#d6b218}.tyk-button--warning-outline:hover{background-color:#d6b218;color:#fff}.tyk-button--warning-outline.disabled{color:#d6b218}.tyk-button--warning-outline.disabled:hover{background-color:rgba(0,0,0,0);color:#d6b218}.tyk-button--warning-gradient{border-image:linear-gradient(to right, #D6B218, #FFE885, #D6B218) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #D6B218, #FFE885, #D6B218);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-button--warning-gradient:hover,.tyk-button--warning-gradient:active,.tyk-button--warning-gradient:active:focus{border-image:linear-gradient(to right, #D6B218, #FFE885, #D6B218) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #D6B218, #FFE885, #D6B218);background-position:100% 0;background-size:200% auto;background-clip:border-box}.tyk-button--warning-gradient:hover.disabled,.tyk-button--warning-gradient:active.disabled,.tyk-button--warning-gradient:active:focus.disabled{border-image:linear-gradient(to right, #D6B218, #FFE885, #D6B218) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #D6B218, #FFE885, #D6B218);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-button--info{background-color:#82bbc6;color:#fff;border:2px solid #82bbc6}.tyk-button--info:hover{background-color:#68adba;color:#fff}.tyk-button--info-link{background-color:rgba(0,0,0,0);border:2px solid rgba(0,0,0,0);color:#82bbc6}.tyk-button--info-link:hover{background-color:rgba(0,0,0,0);color:#82bbc6;border-color:#82bbc6;text-decoration:underline}.tyk-button--info-outline{border:2px solid #82bbc6;background-color:rgba(0,0,0,0);color:#82bbc6}.tyk-button--info-outline:hover{background-color:#82bbc6;color:#fff}.tyk-button--info-outline.disabled{color:#82bbc6}.tyk-button--info-outline.disabled:hover{background-color:rgba(0,0,0,0);color:#82bbc6}.tyk-button--info-gradient{border-image:linear-gradient(to right, #82BBC6, #D3EBEF, #82BBC6) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #82BBC6, #D3EBEF, #82BBC6);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#505071}.tyk-button--info-gradient:hover,.tyk-button--info-gradient:active,.tyk-button--info-gradient:active:focus{border-image:linear-gradient(to right, #82BBC6, #D3EBEF, #82BBC6) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #82BBC6, #D3EBEF, #82BBC6);background-position:100% 0;background-size:200% auto;background-clip:border-box}.tyk-button--info-gradient:hover.disabled,.tyk-button--info-gradient:active.disabled,.tyk-button--info-gradient:active:focus.disabled{border-image:linear-gradient(to right, #82BBC6, #D3EBEF, #82BBC6) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #82BBC6, #D3EBEF, #82BBC6);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#505071}.tyk-button--default{background-color:#36364c;color:#fff;border:2px solid #36364c}.tyk-button--default:hover{background-color:#505071;color:#fff}.tyk-button--default-link{background-color:rgba(0,0,0,0);border:2px solid rgba(0,0,0,0);color:#505071}.tyk-button--default-link:hover{background-color:rgba(0,0,0,0);color:#505071;border-color:#505071;text-decoration:underline}.tyk-button--default-outline{border:2px solid #36364c;background-color:rgba(0,0,0,0);color:#36364c}.tyk-button--default-outline:hover{background-color:#36364c;color:#fff}.tyk-button--default-outline.disabled{color:#36364c}.tyk-button--default-outline.disabled:hover{background-color:rgba(0,0,0,0);color:#36364c}.tyk-button--default-gradient{border-image:linear-gradient(to right, #36364C, #505071, #36364C) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #36364C, #505071, #36364C);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-button--default-gradient:hover,.tyk-button--default-gradient:active,.tyk-button--default-gradient:active:focus{border-image:linear-gradient(to right, #36364C, #505071, #36364C) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #36364C, #505071, #36364C);background-position:100% 0;background-size:200% auto;background-clip:border-box}.tyk-button--default-gradient:hover.disabled,.tyk-button--default-gradient:active.disabled,.tyk-button--default-gradient:active:focus.disabled{border-image:linear-gradient(to right, #36364C, #505071, #36364C) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #36364C, #505071, #36364C);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-button--sm{padding:3px 15px;font-size:12px;line-height:16px;border-radius:20px}.tyk-button--md{padding:8px 23px;font-size:14px;line-height:19px;border-radius:20px}.tyk-button--lg{padding:13px 23px;font-size:16px;line-height:22px;border-radius:20px}.tyk-button--icon-only{border-radius:18px;padding:0;line-height:20px;width:24px}.tyk-button--icon-only:hover{border-radius:18px}.tyk-button--fit{height:auto;width:auto;line-height:normal}.tyk-button--no-style{background:rgba(0,0,0,0);border:none;color:#505071}.tyk-button--no-style:hover{background:rgba(0,0,0,0);border:none;color:#505071}.tyk-button-group__wrapper{display:inline-block;position:relative;vertical-align:middle}.tyk-button-group__wrapper label{font-family:\"OpenSans-SemiBold\"}.tyk-button-group__wrapper .tyk-button-group{display:flex}.tyk-button-group__wrapper .tyk-button-group>.tyk-button-group:not(:first-child)>.tyk-button{border-top-left-radius:0;border-bottom-left-radius:0}.tyk-button-group__wrapper .tyk-button-group>.tyk-button-group:not(:last-child)>.tyk-button{border-top-right-radius:0;border-bottom-right-radius:0}.tyk-button-group__wrapper .tyk-button-group .tyk-button{border-radius:0}.tyk-button-group__wrapper .tyk-button-group .tyk-button+.tyk-button{margin-left:0}.tyk-button-group__wrapper .tyk-button-group .tyk-button+.tyk-dropdown{margin-left:0}.tyk-button-group__wrapper .tyk-button-group .tyk-button:first-child{border-top-left-radius:20px;border-bottom-left-radius:20px}.tyk-button-group__wrapper .tyk-button-group .tyk-button:last-child{border-top-right-radius:20px;border-bottom-right-radius:20px}.tyk-chart__wrapper{position:relative}.tyk-chart--no-data,.tyk-chart--loading-chart{filter:blur(10px);-webkit-filter:blur(10px)}.collapse-exit,.collapse-exit-active,.collapse-exit-done{height:0px}.collapse-wrapper{overflow:hidden;transition:all .2s}.collapse-horizontal-exit,.collapse-horizontal-exit-active,.collapse-horizontal-exit-done{width:0px}.collapse-horizontal-enter,.collapse-horizontal-enter-active,.collapse-horizontal-enter-done{width:100%}.tyk-copy-to-clipboard{position:absolute;left:-1000px;top:-1000px}.tyk-fixed-wrapper{left:0;position:sticky;right:0;top:0;z-index:8}.tyk-fixed-wrapper--scrolled{box-shadow:2px 2px 5px rgba(0,0,0,.1)}.floating-container{position:fixed;top:-9999px;overflow:auto;z-index:1080}.tyk-icon+.tyk-icon{margin-left:10px}.tyk-infinite-scroller{height:100%;overflow:hidden;position:relative}.tyk-infinite-scroller .loading{background:linear-gradient(180deg, rgba(255, 255, 255, 0), rgb(255, 255, 255));justify-content:center;bottom:0;display:flex;left:0;padding:15px 0;right:0;top:auto;width:100%}.tyk-infinite-scroller__wrapper{height:100%;overflow-y:auto}.tyk-info-note{border-radius:0;position:relative}.tyk-info-note p+p{margin-top:15px}.tyk-info-note:after{content:\"\";border-style:solid;border-width:0 20px 20px 0;border-color:rgba(0,0,0,0) #82bbc6 rgba(0,0,0,0) rgba(0,0,0,0);height:0;position:absolute;right:0;top:0;width:0}.tyk-info-note .tyk-message{border-radius:0;padding-top:40px;padding-bottom:40px}.tyk-loading__wrapper{background:rgba(255,255,255,.6);bottom:0;position:absolute;left:0;right:0;top:0;z-index:99}.loader-wrapper{min-height:100px;position:relative}.loading{position:absolute;top:calc(50% - 10px);left:50%}.loading.relative{left:auto;padding:25px;position:relative;text-align:center;top:auto;width:100%}.loading-bar{display:inline-block;width:4px;height:20px;border-radius:4px;animation:loading 1s ease-in-out infinite;margin-left:2px}.loading-bar:nth-child(1){animation-delay:0;background-color:#00d9ba;opacity:1}.loading-bar:nth-child(2){animation-delay:.09s;background-color:#00d9ba;opacity:.8}.loading-bar:nth-child(3){animation-delay:.18s;background-color:#00d9ba;opacity:.6}.loading-bar:nth-child(4){animation-delay:.27s;background-color:#00d9ba;opacity:.4}@keyframes loading{0%{transform:scale(1)}20%{transform:scale(1, 2.2)}40%{transform:scale(1)}}.tyk-list{border:2px solid #c3c3e5;border-radius:18px;font-size:14px;list-style-type:none;margin:0;max-height:191px;padding:0;overflow:auto}.tyk-list--with-inline-label{display:flex}.tyk-list--with-inline-label>label{margin-right:20px}.tyk-list li{border-bottom:1px solid #c3c3e5;padding:10px 20px;font-family:\"OpenSans-SemiBold\"}.tyk-list li:last-child{border:none}.tyk-list--default{border-color:#c3c3e5}.tyk-list--primary{border-color:#a2a2cc}.tyk-list--primary li{border-color:#ededf9;color:#505071}.tyk-list--primary-light{border-color:#ededf9}.tyk-list--primary-light li{border-color:#ededf9;color:#505071}.tyk-list--success{border-color:#00d9ba;color:#00d9ba}.tyk-list--success li{border-color:#00d9ba}.tyk-list--danger{border-color:#ff6c7d;color:#505071}.tyk-list--danger li{border-color:#ffbbc5}ul.tyk-list--inline{align-items:center;display:flex}ul.tyk-list--inline li{padding:0 10px}ul.tyk-list--inline.tyk-list--with-separator li:not(:first-child){border-left:1px solid #36364c}.tyk-message{display:flex;align-items:center;border-radius:18px;margin-bottom:20px;padding:20px 20px 20px 20px}.tyk-message__content{flex-grow:1;margin-left:20px;margin-right:20px}.tyk-message>.tyk-icon:first-child{width:32px;height:32px;flex-shrink:0;border-radius:50%;color:#fff}.tyk-message>.tyk-icon:first-child:before{display:flex;width:100%;height:100%;align-items:center;justify-content:center}.tyk-message>.tyk-icon:last-child{cursor:pointer}.tyk-message--default{background-color:#ededf9;border:2px solid #505071;color:#505071}.tyk-message--default>.tyk-icon:first-child{background-color:#505071}.tyk-message--default>.tyk-icon:first-child{transform:rotate(180deg)}.tyk-message--info{background-color:#d3ebef;border:2px solid #82bbc6;color:#82bbc6}.tyk-message--info>.tyk-icon:first-child{background-color:#82bbc6}.tyk-message--success{background-color:#c2f2e9;border:2px solid #00b798;color:#00b798}.tyk-message--success>.tyk-icon:first-child{background-color:#00b798}.tyk-message--warning{background-color:#ffe885;border:2px solid #d6b218;color:#c58c11}.tyk-message--warning>.tyk-icon:first-child{background-color:#d6b218}.tyk-message--danger{background-color:#f5ccd1;border:2px solid #ff6c7d;color:#ea4766}.tyk-message--danger>.tyk-icon:first-child{background-color:#ff6c7d}.tyk-modal{--theme-header-height: 15px;--theme-header-icon-size: 65px;align-items:center;bottom:0;left:0;pointer-events:none;position:fixed;right:0;top:0;z-index:-1}.tyk-modal .tyk-panel{border:2px solid #43435b;box-shadow:none;-webkit-box-shadow:none}.tyk-modal .tyk-modal__dialog{opacity:0;transition:all .2s ease}.tyk-modal.opened{display:flex;z-index:1080}.tyk-modal.opened .tyk-modal__dialog{display:flex;max-height:92vh;opacity:1;pointer-events:all}.tyk-modal.appear-enter-done .tyk-modal__dialog{opacity:1;margin-top:0}.tyk-modal__theme-header{position:absolute;top:-1px;left:0;right:0;height:var(--theme-header-height);border-top-left-radius:18px;border-top-right-radius:18px}.tyk-modal__theme-header .tyk-icon{position:absolute;left:calc(50% - var(--theme-header-icon-size)/2);top:calc((var(--theme-header-icon-size) - var(--theme-header-height))/-2);width:var(--theme-header-icon-size);height:var(--theme-header-icon-size);border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:25px;color:#fff}.tyk-modal--theme-success .tyk-modal__theme-header{background-color:#00d9ba}.tyk-modal--theme-success .tyk-modal__theme-header .tyk-icon{background-color:#00d9ba}.tyk-modal--theme-warning .tyk-modal__theme-header{background-color:#d6b218}.tyk-modal--theme-warning .tyk-modal__theme-header .tyk-icon{background-color:#d6b218}.tyk-modal--theme-danger .tyk-modal__theme-header{background-color:#ff6c7d}.tyk-modal--theme-danger .tyk-modal__theme-header .tyk-icon{background-color:#ff6c7d}.tyk-modal__dialog{opacity:0;margin:0 auto;margin-top:-5%;pointer-events:all;transition:all .2s linear;width:85%}@media only screen and (min-width: 768px){.tyk-modal__dialog{width:600px}}@media only screen and (min-width: 768px){.tyk-modal__dialog.tyk-modal--lg{width:800px}}.tyk-modal__content{background:#fff;border-radius:18px;display:flex;flex-direction:column;position:relative;width:100%}.tyk-modal__body{flex:1;overflow:auto;--padding-top: calc(25px + (var(--theme-header-icon-size) - var(--theme-header-height)) / 2);padding:var(--padding-top) 25px 25px}.tyk-modal__body.no-padding{padding:0}.tyk-modal__footer{align-items:center;display:flex;justify-content:flex-end;padding:25px}.tyk-modal__footer>:not(:first-child){margin-left:5px}.tyk-modal__backdrop{background-color:#505071;border:none;bottom:0;display:none;left:0;position:fixed;right:0;top:0;width:100%;z-index:1079}.tyk-modal__backdrop.opened{display:block;opacity:.5;transition:opacity .2s ease}.tyk-modal__backdrop.fade-enter-done{opacity:.5}.tyk-modal__header{--padding-top: calc(25px + (var(--theme-header-icon-size) - var(--theme-header-height)) / 2);padding:var(--padding-top) 25px 25px;align-items:center;border-bottom:1px solid #ededf9;display:flex;width:100%}.tyk-modal--theme-none .tyk-modal__header{padding-top:25px}.tyk-modal__header button{margin-left:auto;padding:0 5px}.tyk-modal__header+.tyk-modal__body{padding-top:25px}.tyk-modal__title{font-family:\"OpenSans-SemiBold\";font-weight:500;margin:0;width:100%}.tyk-navigation{background-color:#fff;height:100%;overflow:auto;padding:0;width:100%}.tyk-navigation .tyk-navigation-item{width:100%}.tyk-navigation .tyk-navigation-item a{color:#505071;display:flex;padding:10px 20px;text-decoration:none;transition:all .2s ease}.tyk-navigation .tyk-navigation-item a:hover{background-color:#a2a2cc;color:#fff}.tyk-navigation .tyk-navigation-item a.active{background-color:#505071;color:#fff}.tyk-nav-bar{align-items:center;border:none;background-color:#fff;font-family:\"OpenSans-regular\";color:#36364c;margin:0;padding:0 20px 0 20px;width:100%;z-index:8;transition:all .2s linear}.tyk-nav-bar__pre{align-self:flex-end;color:#505071;flex-basis:100%}.tyk-nav-bar__pre a{font-family:\"OpenSans-Bold\";font-size:12px;line-height:16px;color:#505071}.tyk-nav-bar.tyk-nav-bar__with-tabs .tyk-tabs--default>ul li button{padding-top:0}@media screen and (max-width: 1024px){.tyk-nav-bar{padding-left:20px}.menu-opened .tyk-nav-bar{transform:translate(245px)}}.tyk-nav-bar h1{color:#36364c}.tyk-nav-bar h4{margin:0}.tyk-nav-bar .tyk-nav-bar__wrapper{align-items:center;padding-bottom:0;display:flex;flex-wrap:wrap;height:92px}.tyk-nav-bar .tyk-nav-bar__wrapper.tyk-nav-bar--align-top{align-items:flex-start}@media screen and (max-width: 1024px){.tyk-nav-bar .tyk-nav-bar__wrapper{padding-left:0}}.tyk-nav-bar .tyk-nav-bar__wrapper h1{font-size:25px;font-family:\"smoolthan_bold\";line-height:30px;margin:0;padding-right:10px}.tyk-nav-bar .tyk-nav-bar__wrapper h4{padding-right:10px}.tyk-nav-bar .tyk-nav-bar__wrapper .tyk-nav-bar__container{align-items:center;display:flex;flex-grow:1;justify-content:space-between}.tyk-nav-bar .tyk-nav-bar__wrapper .tyk-nav-bar__left{flex-grow:1}.tyk-nav-bar .tyk-nav-bar__wrapper .tyk-nav-bar__right{margin-left:auto}.tyk-panel{background:#fff;border-radius:0;margin-bottom:20px;font-family:\"OpenSans-SemiBold\";position:relative}.tyk-panel.has-error,.tyk-panel .tyk-panel.has-error{border:2px solid #ff6c7d}.tyk-panel__header{align-items:center;border-bottom:1px solid #e1e1e1;display:flex;font-family:\"OpenSans-regular\"}.tyk-panel__header>.tyk-icon,.tyk-panel__header>.tyk-tooltip__wrapper{margin-left:5px}.tyk-panel .tyk-panel{border:2px solid #c3c3e5;box-shadow:none;-webkit-box-shadow:none}.tyk-panel--blank.tyk-panel--collapsed{margin-bottom:20px}.tyk-panel--blank.tyk-panel--collapsed .tyk-panel__header{margin-bottom:0}.tyk-panel--blank .tyk-panel__header{margin-bottom:-20px;padding:20px 25px;background-color:#fff;border:none;color:#36364c;font-size:17px;line-height:23px}.tyk-panel--primary{background-color:rgba(0,0,0,0)}.tyk-panel--primary .tyk-panel__header{background-color:#a2a2cc;border:none;color:#fff;font-size:17px;line-height:23px}.tyk-panel--primary .tyk-panel__body{background-color:#fff;border:none;color:#505071;font-size:17px;line-height:23px}.tyk-panel--primary .tyk-panel__header{border:none}.tyk-panel--primary .tyk-form-group label{color:#505071}.tyk-panel--primary .tyk-toggle .tyk-toggle__label{color:#505071}.tyk-panel--success .tyk-panel__header{background-color:#00d9ba;border:none;color:#fff;font-size:17px;line-height:23px}.tyk-panel--danger .tyk-panel__header{background-color:#ff6c7d;border:none;color:#fff;font-size:17px;line-height:23px}.tyk-panel--warning .tyk-panel__header{background-color:#d6b218;border:none;color:#fff;font-size:17px;line-height:23px}.tyk-panel__body{background-color:#fff;border-radius:0;font-family:\"OpenSans-regular\";padding:25px;position:relative;transition:height .2s}.tyk-panel__body~.tyk-panel__header{border-bottom-left-radius:0;border-bottom-right-radius:0}.tyk-panel__body.no-padding{padding:0}.tyk-panel__header{border-radius:0;border-bottom-left-radius:0;border-bottom-right-radius:0;font-family:\"OpenSans-SemiBold\";overflow:hidden;padding:10px 25px;position:relative}.tyk-panel--collapsed .tyk-panel__header{border-bottom-left-radius:0;border-bottom-right-radius:0}.tyk-panel__header~.tyk-panel__body{border-top-left-radius:0;border-top-right-radius:0}.tyk-panel__headerh3{margin:0}.tyk-panel__header ng-transclude{vertical-align:middle}.tyk-panel__header.collapsable{cursor:pointer}.tyk-panel__icon-collapse--right .tyk-panel__header.collapsable{padding-right:48px}.tyk-panel__icon-collapse--left .tyk-panel__header.collapsable{padding-left:48px}.tyk-panel__header .collapsable__arrow-right{font-size:14px;position:absolute;padding:10px;right:10px;top:calc(50% - 21px)}.tyk-panel__header .collapsable__arrow-left{font-size:14px;position:absolute;padding:8px 0px 10px 20px;left:0px;top:calc(50% - 21px)}.tyk-panel__footer{align-items:center;border-top:1px solid #ededf9;display:flex;justify-content:flex-end;padding:25px}.tyk-panel__footer>:not(:first-child){margin-left:5px}.tyk-pill{align-items:center;border-radius:18px;display:inline-flex;font-size:12px;line-height:19px;margin:0 0 10px 0;padding:6px 15px;font-family:\"OpenSans-SemiBold\"}.tyk-pill--square{border-radius:8px}.tyk-pill i{font-size:12px}.tyk-pill+.tyk-pill{margin-right:10px}.tyk-pill button+span{margin-left:10px}.tyk-pill span+button{margin-left:10px}.tyk-pill:first-child{margin-right:10px}.tyk-pill:last-child{margin-right:0}.tyk-pill--default{background-color:#36364c;color:#fff}.tyk-pill--default i{color:#fff}.tyk-pill--default-outline{box-shadow:inset 0px 0px 0px 2px #36364c;color:#505071}.tyk-pill--default-outline i{color:#505071}.tyk-pill--primary{background-color:#a2a2cc;color:#fff}.tyk-pill--primary i{color:#fff}.tyk-pill--primary-outline{box-shadow:inset 0px 0px 0px 2px #a2a2cc;color:#505071}.tyk-pill--primary-outline i{color:#505071}.tyk-pill--success{background-color:#00d9ba;color:#fff}.tyk-pill--success i{color:#fff}.tyk-pill--success-outline{box-shadow:inset 0px 0px 0px 2px #00d9ba;color:#505071}.tyk-pill--success-outline i{color:#505071}.tyk-pill--danger{background-color:#ff6c7d;color:#fff}.tyk-pill--danger i{color:#fff}.tyk-pill--danger-outline{box-shadow:inset 0px 0px 0px 2px #ff6c7d;color:#505071}.tyk-pill--danger-outline i{color:#505071}.tyk-pill--warning{background-color:#d6b218;color:#fff}.tyk-pill--warning i{color:#fff}.tyk-pill--warning-outline{box-shadow:inset 0px 0px 0px 2px #d6b218;color:#505071}.tyk-pill--warning-outline i{color:#505071}.tyk-pill--info{background-color:#82bbc6;color:#fff}.tyk-pill--info i{color:#fff}.tyk-pill--info-outline{box-shadow:inset 0px 0px 0px 2px #82bbc6;color:#505071}.tyk-pill--info-outline i{color:#505071}.tyk-ui-reveal-wrapper{display:flex;flex-direction:column;justify-content:flex-end;align-items:stretch;width:100%;height:100%;z-index:1000;position:absolute;bottom:0;left:0;pointer-events:none}.tyk-ui-reveal-wrapper__panel{max-height:calc(100% - 2rem);background-color:#fff;padding:0;margin:0;overflow-y:auto;display:flex;flex-direction:column;pointer-events:all;flex-shrink:0;overflow:auto}.tyk-ui-reveal-wrapper__hole{flex-grow:1;opacity:0;width:100%;background-color:green;-webkit-user-select:none;user-select:none;pointer-events:none;z-index:-1}.tyk-ui-reveal-wrapper__gutter{height:2rem;width:100%;cursor:row-resize;display:flex;background-color:#a2a2cc;z-index:2;pointer-events:all;justify-content:space-between;align-items:stretch;position:relative;box-shadow:0 5px 10px rgba(0,0,0,.3)}.tyk-ui-reveal-wrapper__gutter__headerleft,.tyk-ui-reveal-wrapper__gutter__headerright{display:flex;align-items:center;flex:1}.tyk-ui-reveal-wrapper__gutter__headerleft{justify-content:flex-start}.tyk-ui-reveal-wrapper__gutter__headerright{justify-content:flex-end}.tyk-ui-reveal-wrapper__gutter__logo{width:1rem;height:1rem;-webkit-user-select:none;user-select:none;pointer-events:none;padding:.2rem;z-index:2;background-image:url(\"../images/drag.svg\");align-self:center}.tyk-ui-reveal-wrapper__gutter__logo:hover{border:dashed}.tyk-sidebar{background-color:#fff;height:calc(100vh - 58px);flex:0 0 280px;padding:0;position:-webkit-sticky;position:sticky;overflow:auto;top:58px}.tyk-table{border-collapse:collapse;border-spacing:0;background-color:#fff;border-radius:18px;width:100%}.tyk-table__wrapper{border:2px solid #c3c3e5;border-radius:18px;overflow:auto}.tyk-table__wrapper--no-border{border:none}.tyk-table__wrapper.no-innner-horizontal-borders .tyk-table>thead th,.tyk-table__wrapper.no-innner-horizontal-borders .tyk-table>tbody td{border-right:none}.tyk-table>thead th{border-right:1px solid #c3c3e5;color:#505071;font-size:14px;line-height:19px;font-family:\"OpenSans-Bold\";text-transform:uppercase}.tyk-table>thead th:last-child{border-right:none}.tyk-table>thead th i{font-size:12px}.tyk-table>thead th .tyk-button{background:none;color:#36364c;padding:0}.tyk-table>thead th{padding:15px 10px}.tyk-table>tbody tr:hover{background:rgba(237,237,249,.4)}.tyk-table>tbody td{border-right:1px solid #c3c3e5;font-size:14px;line-height:19px;font-family:\"OpenSans-regular\";padding:5px 10px;vertical-align:middle}.tyk-table>tbody td:last-child{border-right:none}.tyk-table>tbody td.fit{white-space:nowrap;width:1%}.tyk-table>tbody td input:not([type=checkbox]):not([type=radio]){margin-top:15px}.tyk-table>tbody td a{color:#505071;font-family:\"OpenSans-SemiBold\"}.tyk-table>tbody td label{margin:0}.tyk-table>tbody td input[type=checkbox]{margin:0}.tyk-table tbody>tr{border-top:1px solid #c3c3e5;transition:all .4s linear;border-radius:18px}.tyk-table tbody>tr.clickable{cursor:pointer}.tyk-table>tbody tr td:first-child,.tyk-table>thead tr th:first-child{padding-left:20px}.tyk-table>tbody tr td:first-child.with-icon,.tyk-table>thead tr th:first-child.with-icon{padding-left:15px}.tyk-table>tbody tr td:last-child,.tyk-table>thead tr th:last-child{padding-right:20px}.tyk-table>tbody tr td:last-child.with-icon,.tyk-table>thead tr th:last-child.with-icon{padding-right:15px}.tyk-table .tyk-pagination{padding:20px 25px}.tyk-table .tyk-pagination li:first-child{margin-left:auto}.tyk-table .nowrap{white-space:nowrap}.tyk-table .wrap{word-break:break-all}.tyk-table-search{padding:10px 25px 0 25px}.tyk-table-search label{font-size:14px;text-transform:uppercase}.header-sort{padding-left:3px;padding-top:5px;vertical-align:middle}.new-table-pagination{float:right}.selectable>div{margin-left:20px}.scrollable{display:block;overflow:auto}.fixed-header{background:#fff;position:sticky;top:0}.tyk-table.has-error,.tyk-table__wrapper.has-error{border:2px solid #ff6c7d !important}.tyk-tabs--default>ul{display:flex;list-style-type:none;margin:0;padding:0;overflow:auto}.tyk-tabs--default>ul li{display:flex;white-space:nowrap;margin-right:0px}.tyk-tabs--default>ul li:last-child{margin-right:0}.tyk-tabs--default>ul li.active button,.tyk-tabs--default>ul li button:hover{border-bottom-color:#00d9ba;color:#505071;opacity:1}.tyk-tabs--default>ul li button{background:none;border:none;border-bottom:4px solid rgba(0,0,0,0);color:#505071;cursor:pointer;font-size:14px;font-family:\"OpenSans-SemiBold\";padding:10px 2px 3px 2px;margin-right:20px;transition:all .2s linear;opacity:.7}.tyk-tabs--default>ul li button:focus{outline:none}.tyk-tab__content{padding:25px}.tyk-toast__container{bottom:0;min-width:300px;position:fixed;right:20px;z-index:11}.tyk-toast__message{position:relative}.tyk-toast-message__button{color:#505071;height:20px;line-height:1;padding:5px;position:absolute;right:5px;top:5px;width:20px}.tyk-toast-message__button:hover{background:rgba(255,255,255,.3);color:#505071}.floating-container{position:fixed;top:-9999px;overflow:auto;z-index:1080}.tyk-combobox2{outline:none}.tyk-combobox2.disabled .tyk-form-control{border:2px solid #c3c3e5 !important;background-color:#ededf9;color:#505071;cursor:not-allowed}.tyk-combobox2.disabled .tyk-combobox2__current-values .tyk-pill--combobox button{cursor:not-allowed}.tyk-combobox2.disabled:not(.is-expand-mode) .tyk-combobox2__values-container-trigger{cursor:not-allowed}.tyk-combobox2.disabled .tyk-combobox2__entry-field{background-color:rgba(0,0,0,0);cursor:not-allowed}.tyk-combobox2 .tyk-form-control{display:flex;flex-direction:row;position:relative;min-height:40px;height:auto;padding:0}.tyk-combobox2 .tyk-form-control:focus-within{outline:none;border:2px solid #00d9ba}.tyk-combobox2__current-values{display:flex;flex-grow:1;flex-wrap:wrap;padding-top:2px;padding-bottom:2px;padding-left:10px;max-width:calc(100% - 40px)}.tyk-combobox2__current-values.expand-mode{max-height:1000px;overflow:hidden;transition:max-height 1s ease}.tyk-combobox2__current-values--collapsed.expand-mode{max-height:38px;transition:max-height .2s ease}.tyk-combobox2__current-values .tyk-pill--combobox{margin-top:3px;margin-bottom:3px;background-color:#f0f0f0;border-radius:10px;color:#505071;padding:5px 10px;max-width:100%;max-height:26px}.tyk-combobox2__current-values .tyk-pill--combobox button{background:none;border:none;cursor:pointer;width:23px;outline:none}.tyk-combobox2__current-values .tyk-pill--combobox button+span{margin-left:0}.tyk-combobox2__current-values .tyk-pill--combobox span{overflow:hidden;text-overflow:ellipsis}.tyk-combobox2__current-values .tyk-pill--combobox i{margin-right:5px}.tyk-combobox2__entry-field{border:none;line-height:30px}.tyk-combobox2__entry-field:focus,.tyk-combobox2__entry-field:active{border:none;outline:none}.tyk-combobox2__entry-field::placeholder{color:#a2a2cc;font-family:\"OpenSans-SemiBold\"}.tyk-combobox2__text-value{font-family:\"OpenSans-SemiBold\";font-size:14px;line-height:19px;padding:9px 5px;width:100%;overflow:hidden;text-overflow:ellipsis;line-height:1;outline:none}.tyk-combobox2__text-value.overflow-single{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tyk-combobox2__text-value.is-placeholder{color:#a2a2cc;font-family:\"OpenSans-SemiBold\"}.tyk-combobox2__values-container-trigger{position:relative;flex-basis:40px;display:flex;justify-content:center;align-items:center;cursor:pointer;outline:none;transition:all .2s}.tyk-combobox2__values-container-trigger--expanded{transform:rotate(180deg)}.tyk-combobox2__values-container-trigger .tyk-icon{height:14px}.tyk-form-group--rounded-corners .tyk-combobox2-disabled-overlay{border-radius:calc(18px - 2px)}.tyk-combobox2__combobox-dropdown{display:flex;flex-direction:column;border:2px solid #c3c3e5;background-color:#fff}.tyk-combobox2__combobox-dropdown.tyk-form-group--rounded-corners{border-radius:18px}.tyk-combobox2__combobox-dropdown .tyk-combobox2__combobox-search{background-color:#fff;position:sticky;top:0;padding:10px 20px}.tyk-combobox2__combobox-dropdown .tyk-combobox2__combobox-search+.combobox-list{border-top:1px solid #c3c3e5}.tyk-combobox2__combobox-dropdown .tyk-combobox2__combobox-list{max-height:255px}.tyk-combobox2__combobox-dropdown .tyk-combobox2__combobox-list li{display:flex;cursor:pointer;padding:9px 20px;transition:all .2s;font-family:\"OpenSans-SemiBold\"}.tyk-combobox2__combobox-dropdown .tyk-combobox2__combobox-list li:hover,.tyk-combobox2__combobox-dropdown .tyk-combobox2__combobox-list li.active{background-color:#ededf9}.tyk-combobox2__combobox-dropdown .tyk-combobox2__combobox-list li.disabled{color:#c3c3e5;background-color:initial}.tyk-combobox2__combobox-dropdown .tyk-combobox2__combobox-list li+li{border-top:1px solid #c3c3e5}.tyk-combobox2__combobox-dropdown .tyk-combobox2__combobox-list li i{margin-right:5px}.tyk-combobox2__combobox-dropdown .tyk-combobox2__combobox-list li .item-name{overflow:hidden;text-overflow:ellipsis;line-height:16px}.tyk-combobox2__values-container-trigger{color:#505071}.tyk-combobox2__combobox-dropdown.tyk-form-group--rounded-corners{z-index:1081}.tyk-checkbox label{display:flex;align-items:flex-start;padding-left:20px}.tyk-checkbox label input{margin-left:-20px;margin-top:5px}.tyk-checkbox--theme-light label{color:#fff}.tyk-checkbox--theme-light.tyk-checkbox--is-disabled label{color:#fff}.tyk-checkbox--is-disabled label,.tyk-checkbox--is-disabled p{cursor:not-allowed;opacity:.5}.flatpickr-day.selected,.flatpickr-day.startRange,.flatpickr-day.endRange,.flatpickr-day.selected.inRange,.flatpickr-day.startRange.inRange,.flatpickr-day.endRange.inRange,.flatpickr-day.selected:focus,.flatpickr-day.startRange:focus,.flatpickr-day.endRange:focus,.flatpickr-day.selected:hover,.flatpickr-day.startRange:hover,.flatpickr-day.endRange:hover,.flatpickr-day.selected.prevMonthDay,.flatpickr-day.startRange.prevMonthDay,.flatpickr-day.endRange.prevMonthDay,.flatpickr-day.selected.nextMonthDay,.flatpickr-day.startRange.nextMonthDay,.flatpickr-day.endRange.nextMonthDay{background:#00d9ba !important;border-color:#00d9ba !important}.tyk-dropdown{display:inline-block}.tyk-dropdown+.tyk-button,.tyk-dropdown+.tyk-dropdown,.tyk-dropdown+.tyk-toggle{margin-left:10px}.tyk-dropdown--block{left:20px;right:20px}.tyk-dropdown--relative{left:auto;right:auto}.tyk-dropdown--custom{padding:20px 25px}.tyk-dropdown label{display:block}.tyk-dropdown__trigger{position:relative}.tyk-dropdown.theme-list .tyk-button{background:#fff;border:2px solid #36364c;border-radius:18px;color:#505071}.tyk-dropdown.theme-list .tyk-button:hover,.tyk-dropdown.theme-list .tyk-button:active,.tyk-dropdown.theme-list .tyk-button:active:focus,.tyk-dropdown.theme-list .tyk-button:focus{background:#fff;border-color:#43435b;color:#505071}.tyk-dropdown-menu{background:#fff;border:2px solid #c3c3e5;border-radius:18px;-webkit-filter:drop-shadow(1px 2px 1px rgba(0, 0, 0, 0.1));filter:drop-shadow(1px 2px 1px rgba(0, 0, 0, 0.1));list-style-type:none;margin:0;margin-top:3px;overflow:hidden;padding:0;z-index:1081}.tyk-dropdown-menu.tyk-dropdown--scrollable{overflow:auto}.tyk-dropdown-menu .tyk-panel{margin:0}.tyk-dropdown-menu.opened{display:flex;flex-direction:column;position:absolute}.tyk-dropdown-menu>li{background:#fff;border-bottom:1px solid #fff;display:flex;position:relative;z-index:7}.tyk-dropdown-menu>li:last-child{border:none}.tyk-dropdown-menu>li i{left:7px;position:absolute;top:9px}.tyk-dropdown-menu>li>a{cursor:pointer;color:#505071;display:flex;font-size:12px;padding:7px 24px;text-transform:uppercase;text-decoration:none;width:100%}.tyk-dropdown-menu>li>a:hover{color:#505071}.tyk-dropdown-menu>li>a .badge{background:#505071;color:#fff;font-size:10px;margin-top:-4px;margin-left:6px}.tyk-dropdown-menu>li>a:hover{background-color:#ededf9;text-decoration:none}.tyk-dropdown--relative.opened{position:relative}.tyk-editable-list__submit-btn{white-space:nowrap}.tyk-editable-list__form{align-items:center;display:flex}.tyk-editable-list__form .tyk-form-group{margin-bottom:0}.tyk-editable-list__form--sticked{margin-left:0}.tyk-editable-list__form--sticked button{border-top-left-radius:0px;border-bottom-left-radius:0px;border-top-right-radius:3px;border-bottom-right-radius:3px;padding-bottom:11px;padding:10px 15px 11px 15px}.tyk-editable-list__form span.inline{margin-top:0}.tyk-editable-list__form>span{margin-left:15px}.tyk-editable-list__form>span.inline-with-label{align-self:flex-end}.tyk-editable-list__header{padding-top:15px;border-bottom:1px solid #43435b;color:#505071;font-size:11px;padding-bottom:15px;text-transform:uppercase}.tyk-editable-list__header .tyk-row{margin:0}.tyk-editable-list-items{overflow:hidden;list-style:none;padding:20px 0 0 0}.tyk-editable-list-items .edit-mode-wrapper.table button{margin-top:23px}.tyk-editable-list-items .tyk-row{margin:0}.tyk-editable-list-items button[disabled]{cursor:not-allowed}.tyk-editable-list-items.tyk-editable-list-items--inline{align-items:center;color:#505071;display:flex;flex-wrap:wrap}.tyk-editable-list-items li{border-top:1px solid #c3c3e5;transition:all .2s linear}.tyk-editable-list-items li.tyk-editable-list-item--inline{background-color:#c3c3e5;border-radius:25px;border:none;color:#fff;float:left;font-family:\"OpenSans-SemiBold\";margin-bottom:10px;margin-right:15px;padding:0 15px;white-space:nowrap}.tyk-editable-list-items li.tyk-editable-list-item--inline .tyk-editable-list-item__text{color:#505071;padding:5px 0}.tyk-editable-list-items li.tyk-editable-list-item--inline .tyk-editable-list-action__button.on-edit{margin-top:0}.tyk-editable-list-items li:first-child{border-top:none}.tyk-editable-list-items li .tyk-editable-list-item__text{display:flex;padding:10px 0}.tyk-editable-list-items li .tyk-editable-list-item__text>span{flex-grow:1}.tyk-editable-list-items li .tyk-editable-list-item__text>div:first-child{flex-grow:1}.tyk-editable-list-items li .tyk-editable-list-item__text>div:first-child .error-message{margin:0}.tyk-editable-list-items li .tyk-editable-list-items{overflow:hidden;padding-bottom:10px}.tyk-editable-list-items li .tyk-editable-list{border-top:5px solid #43435b;background:#ededf9;padding:10px 15px}.tyk-editable-list-items .tyk-editable-list-item__text{display:block;word-wrap:break-word;word-break:break-all}.tyk-editable-list-items .tyk-editable-list-action__button{border:none;background:rgba(0,0,0,0)}.tyk-editable-list-items .tyk-editable-list-action__button.on-edit{margin-left:10px}.tyk-editable-list-items .tyk-editable-list-item-controls{flex-grow:0;text-align:right}.tyk-editable-list-item__controls{text-align:right}.tyk-editable-list-items.table{background-color:#fff;border-radius:18px;border:2px solid #c3c3e5;padding:0 !important}.tyk-editable-list-items.table li{border-color:#c3c3e5}.tyk-editable-list-items.table li:hover{background:#ededf9}.tyk-editable-list-items.table .tyk-editable-list-item__text{background:rgba(0,0,0,0)}.tyk-editable-list-items.table .tyk-editable-list-action__button{border-radius:6px;cursor:pointer;margin-right:10px}.tyk-editable-list__header{background-color:#fff;border-top-left-radius:18px;border-top-right-radius:18px;border:2px solid #c3c3e5;border-bottom:1px solid #c3c3e5 !important;color:#505071 !important;font-family:\"OpenSans-Bold\";margin-top:10px}.tyk-editable-list__header+.tyk-editable-list-items.table{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.editable-list__header{align-items:center;display:flex;margin-bottom:10px}.editable-list__header .tyk-button{margin-left:auto}.editable-list__wrapper.has-error .editable-list__list{border:2px solid #ff6c7d}.editable-list__list{border:2px solid #c3c3e5;border-radius:18px;display:flex;flex-direction:column-reverse}.editable-list__item{border-bottom:1px solid #c3c3e5;display:flex;flex-wrap:nowrap;width:100%}.editable-list__item:first-child{border-bottom:none}.editable-list__item-header{border-bottom:1px solid #c3c3e5;color:#505071;font-size:14px;line-height:19px;font-family:\"OpenSans-Bold\";text-transform:uppercase}.editable-list__item-header .editable-list__item-cell{padding:10px}.editable-list__item-cell{border-left:1px solid #c3c3e5;overflow:hidden;padding:0 10px}.editable-list__item-cell .tyk-form-control--readonly{overflow:hidden;text-overflow:ellipsis;word-break:break-all}.editable-list__item-cell:first-child{border-left:none;padding-left:15px}.editable-list__item-cell:last-child{padding-right:15px}.editable-list__item-cell .tyk-form-group{margin:10px 0;width:100%}.editable-list__item--size-1{display:flex;flex-grow:2;width:8.3333333333%}.editable-list__item--size-2{display:flex;flex-grow:3;width:16.6666666667%}.editable-list__item--size-3{display:flex;flex-grow:4;width:25%}.editable-list__item--size-4{display:flex;flex-grow:5;width:33.3333333333%}.editable-list__item--size-5{display:flex;flex-grow:6;width:41.6666666667%}.editable-list__item--size-6{display:flex;flex-grow:7;width:50%}.editable-list__item--size-7{display:flex;flex-grow:8;width:58.3333333333%}.editable-list__item--size-8{display:flex;flex-grow:9;width:66.6666666667%}.editable-list__item--size-9{display:flex;flex-grow:10;width:75%}.editable-list__item--size-10{display:flex;flex-grow:11;width:83.3333333333%}.editable-list__item--size-11{display:flex;flex-grow:12;width:91.6666666667%}.editable-list__item--size-12{display:flex;flex-grow:13;width:100%}.editable-list__item--size-fit{width:fit-content}.editable-list__item-action{align-items:flex-start;display:flex;justify-content:center;width:100px}.editable-list__item-action .tyk-button{margin-top:20px}.editable-list__item-action--read-only{color:#c3c3e5;align-items:center}.editable-list__item-action--read-only .tyk-button{margin-top:0}.tyk-file-input__wrapper{position:relative}.tyk-file-input__wrapper>input{padding:6px 20px}.tyk-file-input__wrapper>button{background:none;border:none;cursor:pointer;position:absolute;right:15px;top:9px}.tyk-multiselect{align-items:flex-start;border-radius:18px;flex-wrap:wrap;display:flex;margin-bottom:20px;width:100%}.tyk-multiselect .input-group .input-group-addon+.form-control{border-width:1px !important;border-left:none !important;border-top-left-radius:0 !important;border-top-right-radius:0 !important;border-bottom-left-radius:0 !important;border-bottom-right-radius:0 !important}.tyk-multiselect .input-group .input-group-addon{background:rgba(0,0,0,0) !important;border-width:1px !important;border-right:0 !important;border-top-left-radius:0 !important;border-top-right-radius:0 !important;border-bottom-left-radius:0 !important;border-bottom-right-radius:0 !important}.tyk-multiselect.has-error{border:2px solid #ff6c7d}.tyk-multiselect__header{background-color:#36364c;border-top-left-radius:18px;border-top-right-radius:18px;color:#fff;display:flex;width:100%}.tyk-multiselect__header>div{padding:10px 15px;width:50%}.tyk-multiselect__panel-wrapper{border:2px solid #c3c3e5;border-top:none;border-bottom-left-radius:18px;border-bottom-right-radius:18px;display:flex;flex:1;height:265px;width:100%}.tyk-multiselect__panel{display:flex;flex-direction:column;margin:0 0 0 -1px;position:relative;width:calc(50% + 1px)}.tyk-multiselect__panel:last-child{border-left:2px solid #c3c3e5}.tyk-multiselect__panel:last-child .tyk-form-group{margin-left:-1px;width:calc(100% + 2px)}.tyk-multiselect__panel .tyk-message{margin:20px 20px 0 20px}.tyk-multiselect__list{list-style-type:none;margin:0;padding:0}.tyk-multiselect__list--scroll{height:100%;overflow-y:auto}.tyk-multiselect__list>li{border-bottom:2px solid #c3c3e5;display:flex;flex-direction:column;padding:10px 15px}.tyk-multiselect__list>li>div{align-items:start;display:flex;width:100%}.tyk-multiselect__list>li .loading{justify-content:center}.tyk-multiselect__list>li:last-child{border-bottom:none}.tyk-multiselect-item__name{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tyk-multiselect .tyk-form-group{margin:0}.tyk-multiselect .tyk-multiselect-item__controls{display:flex;margin-left:auto;flex-wrap:nowrap}.tyk-multiselect .tyk-multiselect-item__controls .tyk-button{color:#505071;margin-left:5px}.tyk-multiselect .tyk-multiselect-item__controls .tyk-button:last-child{margin-left:0}.tyk-pagination{display:flex;list-style-type:none;margin:10px 0;padding:0}.tyk-pagination li{align-items:center;display:flex}.tyk-pagination li:first-child button{border-top-left-radius:18px;border-bottom-left-radius:18px}.tyk-pagination li:last-child button{border-top-right-radius:18px;border-bottom-right-radius:18px}.tyk-pagination span{margin:0 10px}.tyk-pagination button{background:#fff;border:none;font-size:14px;font-family:\"OpenSans-Bold\";cursor:pointer;color:#36364c;margin-left:-1px;padding:10px 15px}.tyk-pagination button:hover{background-color:#c2f2e9}.tyk-pagination .active button{background-color:#00d9ba;color:#fff}.tyk-radio label{align-items:center;display:flex}.tyk-radio--is-disabled label,.tyk-radio--is-disabled p{cursor:not-allowed;opacity:.5}.tyk-radio__description-text{padding:0 0 0 20px}.tyk-select{background:rgba(0,0,0,0) url(\"../images/arrow_down.svg\") no-repeat calc(100% - 15px) center;background-size:15px 15px}.tyk-selectable-list{margin-bottom:20px;width:100%}.tyk-selectable-list li:not(.tyk-selectable-list__no-items-message){font-family:\"OpenSans-SemiBold\";padding:0}.tyk-selectable-list li:not(.tyk-selectable-list__no-items-message) .tyk-message{margin-bottom:0}.tyk-selectable-list li:not(.tyk-selectable-list__no-items-message) label{font-family:\"OpenSans-SemiBold\";margin:0}.tyk-selectable-list li:not(.tyk-selectable-list__no-items-message)>label{align-items:center;cursor:pointer;display:flex;padding:10px 20px}.tyk-selectable-list li:not(.tyk-selectable-list__no-items-message)>label input[type=checkbox]{margin-left:auto}.tyk-selectable-list__item--with-icon input[type=checkbox]{visibility:hidden}textarea.tyk-form-control{height:auto}.tyk-toggle{display:inline-flex;flex-wrap:wrap;font-family:\"OpenSans-Bold\";font-size:14px;line-height:19px;white-space:nowrap}.tyk-toggle.block{margin-bottom:20px;width:100%}.tyk-toggle.block+.tyk-toggle{margin-left:0}.tyk-toggle.inline-label{align-items:center;flex-wrap:nowrap}.tyk-toggle__list--has-error{border:2px solid #ff6c7d}.tyk-toggle .tyk-toggle__label{display:block;font-family:\"OpenSans-SemiBold\";font-size:14px;padding:0;width:100%;color:#36364c}.tyk-toggle.inline-label .tyk-toggle__label{margin-right:10px;width:auto}.tyk-toggle+.tyk-button,.tyk-toggle+.tyk-dropdown,.tyk-toggle+.tyk-toggle{margin-left:10px}.tyk-toggle--disabled-true{cursor:not-allowed;opacity:.7}.tyk-toggle--column .tyk-toggle__list--separated{display:flex;flex-direction:column;margin-right:20px}.tyk-toggle--column .tyk-toggle__list--separated .tyk-toggle__item{background-color:#ededf9;margin-right:auto}.tyk-toggle__list{background:#ededf9;border-radius:25px;display:flex;list-style-type:none;margin:0;padding:0;position:relative}.tyk-toggle__list--separated{background:rgba(0,0,0,0);flex-wrap:wrap}.tyk-toggle--on-dark .tyk-toggle__list{background:#fff}.tyk-toggle--default .tyk-toggle__item--active span{color:#fff}.tyk-toggle--default .tyk-toggle__list--single .tyk-toggle__item--active,.tyk-toggle--default .tyk-toggle__list--separated .tyk-toggle__item--active{background-color:#36364c;color:#fff;border:2px solid rgba(0,0,0,0)}.tyk-toggle--default .tyk-toggle__list--single .tyk-toggle__item--active span,.tyk-toggle--default .tyk-toggle__list--separated .tyk-toggle__item--active span{color:#fff}.tyk-toggle--default .tyk-toggle__list--single .tyk-toggle__item--active:hover,.tyk-toggle--default .tyk-toggle__list--separated .tyk-toggle__item--active:hover{background-color:#36364c;color:#fff}.tyk-toggle--primary .tyk-toggle__item--active span{color:#fff}.tyk-toggle--primary .tyk-toggle__list--single .tyk-toggle__item--active,.tyk-toggle--primary .tyk-toggle__list--separated .tyk-toggle__item--active{background-color:#a2a2cc;color:#fff;border:2px solid rgba(0,0,0,0)}.tyk-toggle--primary .tyk-toggle__list--single .tyk-toggle__item--active span,.tyk-toggle--primary .tyk-toggle__list--separated .tyk-toggle__item--active span{color:#fff}.tyk-toggle--primary .tyk-toggle__list--single .tyk-toggle__item--active:hover,.tyk-toggle--primary .tyk-toggle__list--separated .tyk-toggle__item--active:hover{background-color:#a2a2cc;color:#fff}.tyk-toggle--success .tyk-toggle__item--active span{color:#fff}.tyk-toggle--success .tyk-toggle__list--single .tyk-toggle__item--active,.tyk-toggle--success .tyk-toggle__list--separated .tyk-toggle__item--active{background-color:#00b798;color:#fff;border:2px solid rgba(0,0,0,0)}.tyk-toggle--success .tyk-toggle__list--single .tyk-toggle__item--active span,.tyk-toggle--success .tyk-toggle__list--separated .tyk-toggle__item--active span{color:#fff}.tyk-toggle--success .tyk-toggle__list--single .tyk-toggle__item--active:hover,.tyk-toggle--success .tyk-toggle__list--separated .tyk-toggle__item--active:hover{background-color:#00b798;color:#fff}.tyk-toggle--danger .tyk-toggle__item--active span{color:#fff}.tyk-toggle--danger .tyk-toggle__list--single .tyk-toggle__item--active,.tyk-toggle--danger .tyk-toggle__list--separated .tyk-toggle__item--active{background-color:#ff6c7d;color:#fff;border:2px solid rgba(0,0,0,0)}.tyk-toggle--danger .tyk-toggle__list--single .tyk-toggle__item--active:hover,.tyk-toggle--danger .tyk-toggle__list--separated .tyk-toggle__item--active:hover{background-color:#ff6c7d;color:#fff}.tyk-toggle--warning .tyk-toggle__item--active span{color:#505071}.tyk-toggle--warning .tyk-toggle__list--single .tyk-toggle__item--active,.tyk-toggle--warning .tyk-toggle__list--separated .tyk-toggle__item--active{background-color:#d6b218;color:#505071;border:2px solid rgba(0,0,0,0)}.tyk-toggle--warning .tyk-toggle__list--single .tyk-toggle__item--active:hover,.tyk-toggle--warning .tyk-toggle__list--separated .tyk-toggle__item--active:hover{background-color:#d6b218;color:#505071}.tyk-toggle--primary-gradient .tyk-toggle__item--active span{color:#fff}.tyk-toggle--primary-gradient .tyk-toggle__list--single .tyk-toggle__item--active,.tyk-toggle--primary-gradient .tyk-toggle__list--separated .tyk-toggle__item--active{border-image:linear-gradient(to right, #A2A2CC, #505071, #A2A2CC) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #A2A2CC, #505071, #A2A2CC);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-toggle--primary-gradient .tyk-toggle__list--single .tyk-toggle__item--active span,.tyk-toggle--primary-gradient .tyk-toggle__list--separated .tyk-toggle__item--active span{color:#fff}.tyk-toggle--success-gradient .tyk-toggle__item--active span{color:#fff}.tyk-toggle--success-gradient .tyk-toggle__list--single .tyk-toggle__item--active,.tyk-toggle--success-gradient .tyk-toggle__list--separated .tyk-toggle__item--active{border-image:linear-gradient(to right, #00d9ba, #00B798, #00d9ba) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #00d9ba, #00B798, #00d9ba);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-toggle--success-gradient .tyk-toggle__list--single .tyk-toggle__item--active span,.tyk-toggle--success-gradient .tyk-toggle__list--separated .tyk-toggle__item--active span{color:#fff}.tyk-toggle--danger-gradient .tyk-toggle__item--active span{color:#fff}.tyk-toggle--danger-gradient .tyk-toggle__list--single .tyk-toggle__item--active,.tyk-toggle--danger-gradient .tyk-toggle__list--separated .tyk-toggle__item--active{border-image:linear-gradient(to right, #FF6C7D, #EA4766, #FF6C7D) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #FF6C7D, #EA4766, #FF6C7D);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-toggle--danger-gradient .tyk-toggle__list--single .tyk-toggle__item--active span,.tyk-toggle--danger-gradient .tyk-toggle__list--separated .tyk-toggle__item--active span{color:#fff}.tyk-toggle--warning-gradient .tyk-toggle__item--active span{color:#fff}.tyk-toggle--warning-gradient .tyk-toggle__list--single .tyk-toggle__item--active,.tyk-toggle--warning-gradient .tyk-toggle__list--separated .tyk-toggle__item--active{border-image:linear-gradient(to right, #FFE885, #D6B218, #FFE885) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #FFE885, #D6B218, #FFE885);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#505071}.tyk-toggle--warning-gradient .tyk-toggle__list--single .tyk-toggle__item--active span,.tyk-toggle--warning-gradient .tyk-toggle__list--separated .tyk-toggle__item--active span{color:#fff}.tyk-toggle__item{color:#fff;text-transform:uppercase;z-index:2;border:2px solid rgba(0,0,0,0)}.tyk-toggle__item:first-child{border-top-left-radius:25px;border-bottom-left-radius:25px}.tyk-toggle__item:last-child{border-top-right-radius:25px;border-bottom-right-radius:25px}.tyk-toggle__list--separated .tyk-toggle__item{background:tyk-toggle__list--separated;border-radius:25px;margin-bottom:5px;margin-top:5px;margin-right:10px}.tyk-toggle__list--separated .tyk-toggle__item:last-child{margin-right:0}.tyk-toggle__item input{display:none}.tyk-toggle__item label{cursor:pointer;font-family:\"OpenSans-Bold\";position:relative;margin:0;transition:all .2s ease}.tyk-toggle__list--single .tyk-toggle__item label{padding-left:45px}.tyk-toggle__list--single .tyk-toggle__item--active label{padding-left:25px;padding-right:45px}.tyk-toggle__list--single .tyk-toggle__item--active label .tyk-toggle__item-notch{left:calc(100% - 35px)}.tyk-toggle--on-dark .tyk-toggle__item:not(.tyk-toggle__item--active){color:#505071}.tyk-toggle--on-dark .tyk-toggle__item-notch--single{background:#ededf9}.tyk-toggle--sm label{padding:calc(3px + 2px) calc(15px + 2px);font-size:12px;line-height:16px;border-radius:20px}.tyk-toggle--sm .tyk-toggle__list--single label{padding-left:35px}.tyk-toggle--sm .tyk-toggle__list--single .tyk-toggle__item--active label{padding-left:17px;padding-right:35px}.tyk-toggle--sm .tyk-toggle__list--single .tyk-toggle__item--active label .tyk-toggle__item-notch{left:calc(100% - 27px)}.tyk-toggle--md label{padding:calc(8px + 2px) calc(23px + 2px);font-size:14px;line-height:16px;border-radius:20px}.tyk-toggle--lg label{padding:calc(13px + 2px) calc(23px + 2px);font-size:14px;line-height:16px;border-radius:20px}.tyk-toggle--lg .tyk-toggle__list--single label{padding-left:45px}.tyk-toggle--lg .tyk-toggle__list--single .tyk-toggle__item--active label{padding-left:25px;padding-right:45px}.tyk-toggle--lg .tyk-toggle__list--single .tyk-toggle__item--active label .tyk-toggle__item-notch{left:calc(100% - 43px)}.tyk-toggle__item-notch{border-radius:25px;bottom:2px;position:absolute;transition:all .2s ease;top:2px}.tyk-toggle__item-notch--single{background:#fff;left:2px;width:32px}.tyk-toggle--sm .tyk-toggle__item-notch--single{width:24px}.tyk-toggle--lg .tyk-toggle__item-notch--single{width:40px}.tyk-toggle__notch{border-radius:25px;left:0;position:absolute;bottom:4px;top:4px;transition:all .2s ease;width:100px;z-index:1}.tyk-toggle--default .tyk-toggle__notch{background-color:#36364c;color:#fff;border:2px solid rgba(0,0,0,0)}.tyk-toggle--default .tyk-toggle__notch:hover{background-color:#36364c;color:#fff}.tyk-toggle--primary .tyk-toggle__notch{background-color:#a2a2cc;color:#fff;border:2px solid rgba(0,0,0,0)}.tyk-toggle--primary .tyk-toggle__notch:hover{background-color:#a2a2cc;color:#fff}.tyk-toggle--success .tyk-toggle__notch{background-color:#00d9ba;color:#fff;border:2px solid rgba(0,0,0,0)}.tyk-toggle--success .tyk-toggle__notch:hover{background-color:#00d9ba;color:#fff}.tyk-toggle--danger .tyk-toggle__notch{background-color:#ff6c7d;color:#fff;border:2px solid rgba(0,0,0,0)}.tyk-toggle--danger .tyk-toggle__notch:hover{background-color:#ff6c7d;color:#fff}.tyk-toggle--warning .tyk-toggle__notch{background-color:#d6b218;color:#505071;border:2px solid rgba(0,0,0,0)}.tyk-toggle--warning .tyk-toggle__notch:hover{background-color:#d6b218;color:#505071}.tyk-toggle--primary-gradient .tyk-toggle__notch{border-image:linear-gradient(to right, #A2A2CC, #505071, #A2A2CC) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #A2A2CC, #505071, #A2A2CC);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-toggle--success-gradient .tyk-toggle__notch{border-image:linear-gradient(to right, #00d9ba, #00B798, #00d9ba) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #00d9ba, #00B798, #00d9ba);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-toggle--danger-gradient .tyk-toggle__notch{border-image:linear-gradient(to right, #FF6C7D, #EA4766, #FF6C7D) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #FF6C7D, #EA4766, #FF6C7D);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-toggle--warning-gradient .tyk-toggle__notch{border-image:linear-gradient(to right, #FFE885, #D6B218, #FFE885) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #FFE885, #D6B218, #FFE885);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#505071}.empty-toggle{padding:1px}.string-builder{position:relative;display:block}.string-builder__input{word-break:break-all;resize:none;overflow:hidden;background:rgba(0,0,0,0);position:absolute;border:none;font:inherit;display:block;z-index:1;width:100%;padding:0px;width:calc(100% - 35px)}.string-builder__input:focus,.string-builder__input:active{border:none;outline:none}.string-builder__styled{font:inherit;position:absolute;pointer-events:none;width:calc(100% - 35px);color:rgba(0,0,0,0);z-index:2;border:none;word-wrap:break-word;word-break:break-all}.string-builder__disabled{background-color:#ededf9 !important;color:#505071;cursor:not-allowed}.url-builder__options_name{font-weight:10px}.url-builder__options_description{color:gray}.string-builder-dropdown{display:flex;flex-direction:column;border:2px solid #c3c3e5;background-color:#fff}.string-builder-dropdown.tyk-form-group--rounded-corners{border-radius:18px}.string-builder-dropdown .string-builder-search{background-color:#fff;position:sticky;top:0;padding:10px 20px}.string-builder-dropdown .string-builder-search+.string-builder-list{border-top:1px solid #c3c3e5}.string-builder-dropdown .string-builder-list{max-height:255px}.string-builder-dropdown .string-builder-list li{cursor:pointer;padding:9px 20px;transition:all .2s;font-family:\"OpenSans-SemiBold\"}.string-builder-dropdown .string-builder-list li:hover,.string-builder-dropdown .string-builder-list li.active{background-color:#c3c3e5}.string-builder-dropdown .string-builder-list li+li{border-top:1px solid #c3c3e5}.string-builder-dropdown .string-builder-list li i{margin-right:5px}.string-builder-dropdown .string-builder-list li .item-name{overflow:hidden;text-overflow:ellipsis;line-height:16px}.invalid_token{box-shadow:0px 0px 0px 1px #ea4766 inset;border-radius:5px;background:#ffbbc5;color:#ea4766;padding:4px;pointer-events:all}.invalid_token .invalid_token--icon{margin-left:2px;color:#ea4766}.string_builder_trigger{background-color:#fff;border-radius:5px;padding:1px 6px;margin:0px 4px}.string-builder-footer>.tyk-form-control__error-message{padding:0px !important}.string-builder-footer>.tyk-form-control__help-block{padding:0px !important}.string-builder-search{padding-right:10px}.default-option-name{color:green}.data_source_argument{color:pink}.data_source_object{color:#8a2be2}*{box-sizing:border-box}body{background-color:#e1e1e1;color:#505071;font-size:14px;line-height:19px;font-family:\"OpenSans-regular\"}.tyk-main-wrapper{display:flex;flex-wrap:nowrap}.tyk-main-content-wrapper{flex:1}.well{background:rgba(0,0,0,0);border:2px solid #c3c3e5;border-radius:18px;box-shadow:none}.well.has-error{border-color:#ff6c7d}.title-medium{font-family:\"OpenSans-SemiBold\";color:#36364c;font-size:16px}.right-align{text-align:right !important}.left-align{text-align:left !important}.center-align{text-align:center !important}.left{float:left !important}.right{float:right !important}.hide{display:none !important}.no-margin{margin:0 !important}.no-margin-bottom{margin-bottom:0 !important}.no-margin-top{margin-top:0 !important}.no-margin-right{margin-right:0 !important}.no-margin-left{margin-right:0 !important}.disabled-section{color:#c3c3e5}.top-buffer-large{margin-top:20px !important}.top-buffer-small{margin-top:5px !important}.top-buffer-medium{margin-top:10px !important}.bottom-buffer-large{margin-bottom:20px !important}.bottom-buffer-small{margin-bottom:5px !important}.bottom-buffer-medium{margin-bottom:10px !important}.right-buffer-large{margin-right:20px !important}.right-buffer-small{margin-right:5px !important}.right-buffer-medium{margin-right:10px !important}.left-buffer-large{margin-left:20px !important}.left-buffer-small{margin-left:5px !important}.left-buffer-medium{margin-left:10px !important}.word-wrap{word-wrap:break-word;word-break:break-all}.clear-left{clear:left}.flex-container{display:flex}.vertical-center-align{align-items:center}.right-align-controls{align-items:center;display:flex;margin-left:auto}.inline-label{margin-right:15px}.nowrap{white-space:nowrap}","html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, article, aside, canvas, details, embed, figure, figcaption, footer, header, hgroup, menu, nav, output, ruby, section, summary, time, mark, audio, video {\n margin: 0;\n padding: 0;\n border: 0;\n font-size: 100%;\n font: inherit;\n vertical-align: baseline;\n}\n\n/* HTML5 display-role reset for older browsers */\n\narticle, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section {\n display: block; }\n\nbody {\n line-height: 1; }\n\nol, ul {\n list-style: none; }\n\nblockquote, q {\n quotes: none; }\n\nblockquote {\n &:before, &:after {\n content: '';\n content: none; } }\n\nq {\n &:before, &:after {\n content: '';\n content: none; } }\n\ntable {\n border-collapse: collapse;\n border-spacing: 0; }\n","@import 'variables';\r\n@import 'mixins';\r\n\r\n.container {\r\n max-width: $grid-max-width;\r\n margin: 0 auto;\r\n}\r\n\r\n.container,\r\n.container-fluid {\r\n padding: 0 $grid-gutter;\r\n}\r\n\r\n.tyk-row {\r\n display: flex;\r\n box-sizing: border-box;\r\n list-style: none;\r\n flex: 0 1 auto;\r\n flex-direction: row;\r\n flex-wrap: wrap;\r\n margin-left: -$grid-gutter;\r\n width: calc(100% + #{$grid-gutter});\r\n\r\n &.no-gutters {\r\n margin: 0;\r\n }\r\n\r\n &.tyk-row--gutterless {\r\n margin: 0;\r\n width: 100%;\r\n }\r\n\r\n &.tyk-row--reverse {\r\n flex-direction: row-reverse;\r\n }\r\n}\r\n\r\n.tyk-col {\r\n max-width: calc(100% - #{$grid-gutter});\r\n box-sizing: border-box;\r\n flex: 0 0 auto;\r\n flex-grow: 1;\r\n flex-basis: calc(100% - #{$grid-gutter});\r\n margin-left: $grid-gutter;\r\n width: calc(100% - #{$grid-gutter});\r\n\r\n &:last-child {\r\n margin-right: 0;\r\n }\r\n\r\n .tyk-row--gutterless & {\r\n margin: 0;\r\n }\r\n\r\n &.tyk-col--reverse {\r\n flex-direction: column-reverse;\r\n }\r\n\r\n &.tyk-col--align-bottom {\r\n align-self: flex-end;\r\n }\r\n\r\n &.tyk-col--align-top {\r\n align-self: flex-start;\r\n }\r\n\r\n &.tyk-col--align-center {\r\n align-self: center;\r\n }\r\n\r\n &.tyk-col--align-baseline {\r\n align-self: baseline;\r\n }\r\n\r\n &.tyk-col--align-stretch {\r\n align-self: stretch;\r\n }\r\n}\r\n\r\n@each $breakpoint in $grid-breakpoints {\r\n $name: nth($breakpoint, 1);\r\n $declaration: nth($breakpoint, 2);\r\n\r\n @media screen and #{$declaration} {\r\n @include grid-loop($name);\r\n }\r\n}\r\n","$font-path: '../fonts/' !default;\n$component-images-path: '../images' !default;\n$general-border-radius: 18px !default;\n$general-border-width: 2px !default;\n\n$theme-colors: (\n 'default': (\n 'base': #36364C,\n 'base-light': #7A79A1,\n 'light': #C3C3E5,\n 'dark': #505071\n ),\n 'primary': (\n 'base': #A2A2CC,\n 'light': #EDEDF9,\n 'dark': #505071\n ),\n 'success': (\n 'base': #00d9ba,\n 'light': #C2F2E9,\n 'dark': #00B798\n ),\n 'info': (\n 'base': #82BBC6,\n 'light': #D3EBEF\n ),\n 'danger': (\n 'base': #FF6C7D,\n 'extra-light': #F5CCD1,\n 'light': #FFBBC5,\n 'dark': #EA4766\n ),\n 'warning': (\n 'base': #D6B218,\n 'light': #FFE885,\n 'dark': #C58C11\n ),\n 'foreground': (\n 'base': #393939,\n 'base-dark': #22272B,\n 'light': #5a5a68,\n 'dark': #161B20,\n 'extra-dark': #0A0D10\n ),\n 'background': (\n 'base': #E1E1E1,\n 'light': #EDEDF9,\n 'dark': #43435B,\n 'extra-dark': #0A0D10\n )\n) !default;\n\n$text-color: #505071 !default;\n$label-color: theme-color('default', 'base') !default;\n\n$contrast-colors: (\n 'dark': (\n 'primary': rgb(255, 255, 255),\n 'secondary': rgba(255, 255, 255, .70),\n 'disabled': rgba(255, 255, 255, .5),\n 'hint': rgba(255, 255, 255, .12)\n ),\n 'light': (\n 'primary': rgba(0, 0, 0, .87),\n 'secondary': rgba(0, 0, 0, .54),\n 'disabled': rgba(0, 0, 0, .38),\n 'hint': rgba(0, 0, 0, .12)\n ),\n) !default;\n\n$xs-line-height: 16px;\n$sm-line-height: 19px;\n$md-line-height: 22px;\n$lg-line-height: 23px;\n$xl-line-height: 24px;\n$xxl-line-height: 30px;\n\n$xs-font-size: 12px;\n$sm-font-size: 14px;\n$md-font-size: 16px;\n$lg-font-size: 17px;\n$xl-font-size: 20px;\n$xxl-font-size: 25px;\n\n$base-font-size: $sm-font-size !default;\n$base-line-height: $sm-line-height !default;\n\n$text-settings: (\n 'xs': (\n font-size: $xs-font-size,\n line-height: $xs-line-height\n ),\n 'sm': (\n font-size: $sm-font-size,\n line-height: $sm-line-height\n ),\n 'base': (\n font-size: $md-font-size,\n line-height: $md-line-height\n ),\n 'md': (\n font-size: $md-font-size,\n line-height: $md-line-height\n ),\n 'lg': (\n font-size: $lg-font-size,\n line-height: $lg-line-height\n ),\n 'xl': (\n font-size: $xl-font-size,\n line-height: $xl-line-height\n ),\n 'xxl': (\n font-size: $xxl-font-size,\n line-height: $xxl-line-height\n )\n) !default;\n\n$spacing: (\n 'xs': 5px,\n 'sm': 10px,\n 'base': 15px,\n 'md': 20px,\n 'lg': 25px,\n 'xl': 30px,\n 'xxl': 40px\n) !default;\n\n$grid-gutter: map-get($spacing, 'md') !default;\n$grid-max-width: 1200px + ($grid-gutter * 2) !default;\n$grid-columns: 12 !default;\n\n$breakpoint-xs: 420px !default;\n$breakpoint-sm: 768px !default;\n$breakpoint-md: 1024px !default;\n$breakpoint-lg: 1248px !default;\n\n$breakpoints: (\n \"xs\": $breakpoint-xs,\n \"sm\": $breakpoint-sm,\n \"md\": $breakpoint-md,\n \"lg\": $breakpoint-lg\n);\n\n$grid-breakpoints: (\n 'lg' '(min-width: ' + $breakpoint-lg + ')',\n 'md' '(min-width: ' + $breakpoint-md + ') and (max-width: ' + ($breakpoint-lg - 1) + ')',\n 'sm' '(min-width: ' + ($breakpoint-sm + 1) + ') and (max-width:' + ($breakpoint-md - 1) + ')',\n 'xs' '(max-width: ' + $breakpoint-sm + ')'\n) !default;\n\n$font-family-regular: 'OpenSans-regular' !default;\n$font-family-medium: 'OpenSans-SemiBold' !default;\n$font-family-bold: 'OpenSans-Bold' !default;\n\n$headings-color: #36364C !default;\n$headings-font-family-regular: 'smoolthan_regular' !default;\n$headings-font-family-medium: 'smoolthan_medium' !default;\n$headings-font-family-bold: 'smoolthan_bold' !default;\n\n$headings-margin-bottom: 15px !default;\n$headings-font-family: $headings-font-family-medium !default;\n$headings-font-weight: 500 !default;\n$headings-line-height: $base-line-height !default;\n\n$form-group-margin-bottom: 15px !default;\n$form-control-height: 39px !default;\n$form-control-padding-left: map-get($spacing, 'md') !default;\n$form-control-padding-right: map-get($spacing, 'md') !default;\n$form-control-padding-top: 10px !default;\n$form-control-padding-bottom: 10px !default;\n$form-control-addon-background-color: white !default;\n$form-control-addon-padding-top: 10px !default;\n$form-control-addon-padding-bottom: 10px !default;\n$form-control-addon-padding-left: 10px !default;\n$form-control-addon-padding-right: 10px !default;\n$form-control-disabled-background-color: theme-color('background', 'light') !default;\n$form-control-border: $general-border-width solid theme-color('default', 'light') !default;\n$form-control-disabled-border: $general-border-width solid theme-color('default', 'light') !default;\n$form-control-placeholder-color: #A2A2CC !default;\n$form-control-disabled-background-color: theme-color('default', 'light') !default;\n$form-control-disabled-color: $text-color !default;\n$form-control-border-focus: 2px solid theme-color('success', 'base') !default;\n$form-control-placeholder-font-family: $font-family-medium !default;\n$form-control-error-colour: theme-color('danger', 'dark') !default;\n$form-default-color: theme-color('default', 'light') !default;\n$form-primary-color: theme-color('primary', 'base') !default;\n$form-success-color: theme-color('success', 'base') !default;\n\n$error-border: $general-border-width solid theme-color('danger', 'base') !default;\n$error-border-left: 2px solid theme-color('danger', 'dark') !default;\n$help-block-color: theme-color('default', 'base') !default;\n$help-block-font-style: normal !default;\n$help-block-padding: 0 0 0 $form-control-padding-left !default;\n$error-message-padding: 0 0 0 $form-control-padding-left !default;\n$default-pill-background-color: theme-color('default', 'base') !default;\n$default-pill-color: white !default;\n$pill-margin: 0 0 10px 0 !default;\n$default-outline-pill-box-shadow: inset 0px 0px 0px 2px theme-color('default', 'base');\n$default-outline-pill-color: $text-color;\n\n$title-medium-font-size: 16px;\n\n//Buffers\n$bottom-buffer-large: map-get($spacing, 'md');\n$bottom-buffer-medium: 10px;\n$bottom-buffer-small: 5px;\n$top-buffer-large: map-get($spacing, 'md');\n$top-buffer-medium: 10px;\n$top-buffer-small: 5px;\n$right-buffer-large: map-get($spacing, 'md');\n$right-buffer-medium: 10px;\n$right-buffer-small: 5px;\n$left-buffer-large: map-get($spacing, 'md');\n$left-buffer-medium: 10px;\n$left-buffer-small: 5px;\n\n$modal-z-index: 1080;\n","@use \"sass:math\";\n\n@function theme-color($key: 'primary', $variant: 'base') {\n $map: map-get($theme-colors, $key);\n @return map-get($map, $variant);\n}\n\n@function contrast($background: 'light', $type: 'primary') {\n $map: map-get($contrast-colors, $background);\n @return map-get($map, $type);\n}\n\n@mixin contrast($background: 'light', $type: 'primary') {\n color: contrast($background, $type)\n}\n\n@function text-scale($level) {\n @return map-get(map-get($text-settings, $level), 'font-size');\n}\n\n@function line-height($level) {\n @return map-get(map-get($text-settings, $level), 'line-height');\n}\n\n@mixin text-setting($level) {\n font-size: text-scale($level);\n line-height: line-height($level);\n}\n\n@mixin font-face($font-family, $url) {\n\t@font-face {\n\t\tfont-family: '#{$font-family}';\n\t\tsrc: url('#{$url}.woff2') format('woff2'),\n\t\t url('#{$url}.woff') format('woff');\n\t\tfont-weight: normal;\n\t\tfont-style: normal;\n\t}\n}\n\n@mixin mq($width, $type: min) {\n @if map_has_key($breakpoints, $width) {\n $width: map_get($breakpoints, $width);\n @if $type == max {\n $width: $width - 1px;\n }\n @media only screen and (#{$type}-width: $width) {\n @content;\n }\n }\n}\n\n@mixin grid-loop($name) {\n @for $i from 0 through $grid-columns {\n .tyk-col--#{$name}-#{$i} {\n flex-basis: calc(#{percentage(math.div($i, $grid-columns))} - #{$grid-gutter});\n max-width: calc(#{percentage(math.div($i, $grid-columns))} - #{$grid-gutter});\n }\n\n .tyk-col--offset-#{$name}-#{$i} {\n margin-left: percentage(math.div($i, $grid-columns));\n }\n }\n}\n\n@mixin form-group-variant(\n $border-color,\n $color: $border-color,\n) {\n color: $text-color;\n\n > .tyk-form-control__wrapper > .tyk-form-control,\n > .tyk-form-control__wrapper > .tyk-file-input__wrapper > .tyk-form-control,\n > .tyk-form-control__wrapper > .tyk-input-group > .tyk-form-control {\n border: $general-border-width solid $border-color;\n color: $text-color;\n\n &[disabled] {\n border: $general-border-width solid $border-color;\n background-color: $form-control-disabled-background-color;\n color: $form-control-disabled-color;\n cursor: not-allowed;\n\n + .tyk-input-group__addon {\n background-color: $form-control-disabled-background-color;\n }\n }\n\n &::placeholder {\n opacity: 0.8;\n }\n\n &:-ms-input-placeholder {\n opacity: 0.8;\n }\n\n &::-ms-input-placeholder {\n opacity: 0.8;\n }\n }\n\n &.tyk-form-group--addon-left {\n .tyk-input-group__addon {\n border-bottom: 2px solid $border-color;\n border-left: 2px solid $border-color;\n border-top: 2px solid $border-color;\n color: $color;\n }\n }\n\n &.tyk-form-group--addon-right {\n .tyk-input-group__addon {\n border-bottom: 2px solid $border-color;\n border-right: 2px solid $border-color;\n border-top: 2px solid $border-color;\n color: $color;\n }\n }\n}\n","/*!\n * Font Awesome Free 5.5.0 by @fontawesome - https://fontawesome.com\n * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)\n */\n.fa,\n.fas,\n.far,\n.fal,\n.fab {\n -moz-osx-font-smoothing: grayscale;\n -webkit-font-smoothing: antialiased;\n display: inline-block;\n font-style: normal;\n font-variant: normal;\n text-rendering: auto;\n line-height: 1; }\n\n.fa-lg {\n font-size: 1.33333em;\n line-height: 0.75em;\n vertical-align: -.0667em; }\n\n.fa-xs {\n font-size: .75em; }\n\n.fa-sm {\n font-size: .875em; }\n\n.fa-1x {\n font-size: 1em; }\n\n.fa-2x {\n font-size: 2em; }\n\n.fa-3x {\n font-size: 3em; }\n\n.fa-4x {\n font-size: 4em; }\n\n.fa-5x {\n font-size: 5em; }\n\n.fa-6x {\n font-size: 6em; }\n\n.fa-7x {\n font-size: 7em; }\n\n.fa-8x {\n font-size: 8em; }\n\n.fa-9x {\n font-size: 9em; }\n\n.fa-10x {\n font-size: 10em; }\n\n.fa-fw {\n text-align: center;\n width: 1.25em; }\n\n.fa-ul {\n list-style-type: none;\n margin-left: 2.5em;\n padding-left: 0; }\n .fa-ul > li {\n position: relative; }\n\n.fa-li {\n left: -2em;\n position: absolute;\n text-align: center;\n width: 2em;\n line-height: inherit; }\n\n.fa-border {\n border: solid 0.08em #eee;\n border-radius: .1em;\n padding: .2em .25em .15em; }\n\n.fa-pull-left {\n float: left; }\n\n.fa-pull-right {\n float: right; }\n\n.fa.fa-pull-left,\n.fas.fa-pull-left,\n.far.fa-pull-left,\n.fal.fa-pull-left,\n.fab.fa-pull-left {\n margin-right: .3em; }\n\n.fa.fa-pull-right,\n.fas.fa-pull-right,\n.far.fa-pull-right,\n.fal.fa-pull-right,\n.fab.fa-pull-right {\n margin-left: .3em; }\n\n.fa-spin {\n -webkit-animation: fa-spin 2s infinite linear;\n animation: fa-spin 2s infinite linear; }\n\n.fa-pulse {\n -webkit-animation: fa-spin 1s infinite steps(8);\n animation: fa-spin 1s infinite steps(8); }\n\n@-webkit-keyframes fa-spin {\n 0% {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg); }\n 100% {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg); } }\n\n@keyframes fa-spin {\n 0% {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg); }\n 100% {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg); } }\n\n.fa-rotate-90 {\n -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)\";\n -webkit-transform: rotate(90deg);\n transform: rotate(90deg); }\n\n.fa-rotate-180 {\n -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)\";\n -webkit-transform: rotate(180deg);\n transform: rotate(180deg); }\n\n.fa-rotate-270 {\n -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)\";\n -webkit-transform: rotate(270deg);\n transform: rotate(270deg); }\n\n.fa-flip-horizontal {\n -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)\";\n -webkit-transform: scale(-1, 1);\n transform: scale(-1, 1); }\n\n.fa-flip-vertical {\n -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)\";\n -webkit-transform: scale(1, -1);\n transform: scale(1, -1); }\n\n.fa-flip-horizontal.fa-flip-vertical {\n -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)\";\n -webkit-transform: scale(-1, -1);\n transform: scale(-1, -1); }\n\n:root .fa-rotate-90,\n:root .fa-rotate-180,\n:root .fa-rotate-270,\n:root .fa-flip-horizontal,\n:root .fa-flip-vertical {\n -webkit-filter: none;\n filter: none; }\n\n.fa-stack {\n display: inline-block;\n height: 2em;\n line-height: 2em;\n position: relative;\n vertical-align: middle;\n width: 2.5em; }\n\n.fa-stack-1x,\n.fa-stack-2x {\n left: 0;\n position: absolute;\n text-align: center;\n width: 100%; }\n\n.fa-stack-1x {\n line-height: inherit; }\n\n.fa-stack-2x {\n font-size: 2em; }\n\n.fa-inverse {\n color: #fff; }\n\n/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen\nreaders do not read off random characters that represent icons */\n.fa-500px:before {\n content: \"\\f26e\"; }\n\n.fa-accessible-icon:before {\n content: \"\\f368\"; }\n\n.fa-accusoft:before {\n content: \"\\f369\"; }\n\n.fa-acquisitions-incorporated:before {\n content: \"\\f6af\"; }\n\n.fa-ad:before {\n content: \"\\f641\"; }\n\n.fa-address-book:before {\n content: \"\\f2b9\"; }\n\n.fa-address-card:before {\n content: \"\\f2bb\"; }\n\n.fa-adjust:before {\n content: \"\\f042\"; }\n\n.fa-adn:before {\n content: \"\\f170\"; }\n\n.fa-adversal:before {\n content: \"\\f36a\"; }\n\n.fa-affiliatetheme:before {\n content: \"\\f36b\"; }\n\n.fa-air-freshener:before {\n content: \"\\f5d0\"; }\n\n.fa-algolia:before {\n content: \"\\f36c\"; }\n\n.fa-align-center:before {\n content: \"\\f037\"; }\n\n.fa-align-justify:before {\n content: \"\\f039\"; }\n\n.fa-align-left:before {\n content: \"\\f036\"; }\n\n.fa-align-right:before {\n content: \"\\f038\"; }\n\n.fa-alipay:before {\n content: \"\\f642\"; }\n\n.fa-allergies:before {\n content: \"\\f461\"; }\n\n.fa-amazon:before {\n content: \"\\f270\"; }\n\n.fa-amazon-pay:before {\n content: \"\\f42c\"; }\n\n.fa-ambulance:before {\n content: \"\\f0f9\"; }\n\n.fa-american-sign-language-interpreting:before {\n content: \"\\f2a3\"; }\n\n.fa-amilia:before {\n content: \"\\f36d\"; }\n\n.fa-anchor:before {\n content: \"\\f13d\"; }\n\n.fa-android:before {\n content: \"\\f17b\"; }\n\n.fa-angellist:before {\n content: \"\\f209\"; }\n\n.fa-angle-double-down:before {\n content: \"\\f103\"; }\n\n.fa-angle-double-left:before {\n content: \"\\f100\"; }\n\n.fa-angle-double-right:before {\n content: \"\\f101\"; }\n\n.fa-angle-double-up:before {\n content: \"\\f102\"; }\n\n.fa-angle-down:before {\n content: \"\\f107\"; }\n\n.fa-angle-left:before {\n content: \"\\f104\"; }\n\n.fa-angle-right:before {\n content: \"\\f105\"; }\n\n.fa-angle-up:before {\n content: \"\\f106\"; }\n\n.fa-angry:before {\n content: \"\\f556\"; }\n\n.fa-angrycreative:before {\n content: \"\\f36e\"; }\n\n.fa-angular:before {\n content: \"\\f420\"; }\n\n.fa-ankh:before {\n content: \"\\f644\"; }\n\n.fa-app-store:before {\n content: \"\\f36f\"; }\n\n.fa-app-store-ios:before {\n content: \"\\f370\"; }\n\n.fa-apper:before {\n content: \"\\f371\"; }\n\n.fa-apple:before {\n content: \"\\f179\"; }\n\n.fa-apple-alt:before {\n content: \"\\f5d1\"; }\n\n.fa-apple-pay:before {\n content: \"\\f415\"; }\n\n.fa-archive:before {\n content: \"\\f187\"; }\n\n.fa-archway:before {\n content: \"\\f557\"; }\n\n.fa-arrow-alt-circle-down:before {\n content: \"\\f358\"; }\n\n.fa-arrow-alt-circle-left:before {\n content: \"\\f359\"; }\n\n.fa-arrow-alt-circle-right:before {\n content: \"\\f35a\"; }\n\n.fa-arrow-alt-circle-up:before {\n content: \"\\f35b\"; }\n\n.fa-arrow-circle-down:before {\n content: \"\\f0ab\"; }\n\n.fa-arrow-circle-left:before {\n content: \"\\f0a8\"; }\n\n.fa-arrow-circle-right:before {\n content: \"\\f0a9\"; }\n\n.fa-arrow-circle-up:before {\n content: \"\\f0aa\"; }\n\n.fa-arrow-down:before {\n content: \"\\f063\"; }\n\n.fa-arrow-left:before {\n content: \"\\f060\"; }\n\n.fa-arrow-right:before {\n content: \"\\f061\"; }\n\n.fa-arrow-up:before {\n content: \"\\f062\"; }\n\n.fa-arrows-alt:before {\n content: \"\\f0b2\"; }\n\n.fa-arrows-alt-h:before {\n content: \"\\f337\"; }\n\n.fa-arrows-alt-v:before {\n content: \"\\f338\"; }\n\n.fa-assistive-listening-systems:before {\n content: \"\\f2a2\"; }\n\n.fa-asterisk:before {\n content: \"\\f069\"; }\n\n.fa-asymmetrik:before {\n content: \"\\f372\"; }\n\n.fa-at:before {\n content: \"\\f1fa\"; }\n\n.fa-atlas:before {\n content: \"\\f558\"; }\n\n.fa-atom:before {\n content: \"\\f5d2\"; }\n\n.fa-audible:before {\n content: \"\\f373\"; }\n\n.fa-audio-description:before {\n content: \"\\f29e\"; }\n\n.fa-autoprefixer:before {\n content: \"\\f41c\"; }\n\n.fa-avianex:before {\n content: \"\\f374\"; }\n\n.fa-aviato:before {\n content: \"\\f421\"; }\n\n.fa-award:before {\n content: \"\\f559\"; }\n\n.fa-aws:before {\n content: \"\\f375\"; }\n\n.fa-backspace:before {\n content: \"\\f55a\"; }\n\n.fa-backward:before {\n content: \"\\f04a\"; }\n\n.fa-balance-scale:before {\n content: \"\\f24e\"; }\n\n.fa-ban:before {\n content: \"\\f05e\"; }\n\n.fa-band-aid:before {\n content: \"\\f462\"; }\n\n.fa-bandcamp:before {\n content: \"\\f2d5\"; }\n\n.fa-barcode:before {\n content: \"\\f02a\"; }\n\n.fa-bars:before {\n content: \"\\f0c9\"; }\n\n.fa-baseball-ball:before {\n content: \"\\f433\"; }\n\n.fa-basketball-ball:before {\n content: \"\\f434\"; }\n\n.fa-bath:before {\n content: \"\\f2cd\"; }\n\n.fa-battery-empty:before {\n content: \"\\f244\"; }\n\n.fa-battery-full:before {\n content: \"\\f240\"; }\n\n.fa-battery-half:before {\n content: \"\\f242\"; }\n\n.fa-battery-quarter:before {\n content: \"\\f243\"; }\n\n.fa-battery-three-quarters:before {\n content: \"\\f241\"; }\n\n.fa-bed:before {\n content: \"\\f236\"; }\n\n.fa-beer:before {\n content: \"\\f0fc\"; }\n\n.fa-behance:before {\n content: \"\\f1b4\"; }\n\n.fa-behance-square:before {\n content: \"\\f1b5\"; }\n\n.fa-bell:before {\n content: \"\\f0f3\"; }\n\n.fa-bell-slash:before {\n content: \"\\f1f6\"; }\n\n.fa-bezier-curve:before {\n content: \"\\f55b\"; }\n\n.fa-bible:before {\n content: \"\\f647\"; }\n\n.fa-bicycle:before {\n content: \"\\f206\"; }\n\n.fa-bimobject:before {\n content: \"\\f378\"; }\n\n.fa-binoculars:before {\n content: \"\\f1e5\"; }\n\n.fa-birthday-cake:before {\n content: \"\\f1fd\"; }\n\n.fa-bitbucket:before {\n content: \"\\f171\"; }\n\n.fa-bitcoin:before {\n content: \"\\f379\"; }\n\n.fa-bity:before {\n content: \"\\f37a\"; }\n\n.fa-black-tie:before {\n content: \"\\f27e\"; }\n\n.fa-blackberry:before {\n content: \"\\f37b\"; }\n\n.fa-blender:before {\n content: \"\\f517\"; }\n\n.fa-blender-phone:before {\n content: \"\\f6b6\"; }\n\n.fa-blind:before {\n content: \"\\f29d\"; }\n\n.fa-blogger:before {\n content: \"\\f37c\"; }\n\n.fa-blogger-b:before {\n content: \"\\f37d\"; }\n\n.fa-bluetooth:before {\n content: \"\\f293\"; }\n\n.fa-bluetooth-b:before {\n content: \"\\f294\"; }\n\n.fa-bold:before {\n content: \"\\f032\"; }\n\n.fa-bolt:before {\n content: \"\\f0e7\"; }\n\n.fa-bomb:before {\n content: \"\\f1e2\"; }\n\n.fa-bone:before {\n content: \"\\f5d7\"; }\n\n.fa-bong:before {\n content: \"\\f55c\"; }\n\n.fa-book:before {\n content: \"\\f02d\"; }\n\n.fa-book-dead:before {\n content: \"\\f6b7\"; }\n\n.fa-book-open:before {\n content: \"\\f518\"; }\n\n.fa-book-reader:before {\n content: \"\\f5da\"; }\n\n.fa-bookmark:before {\n content: \"\\f02e\"; }\n\n.fa-bowling-ball:before {\n content: \"\\f436\"; }\n\n.fa-box:before {\n content: \"\\f466\"; }\n\n.fa-box-open:before {\n content: \"\\f49e\"; }\n\n.fa-boxes:before {\n content: \"\\f468\"; }\n\n.fa-braille:before {\n content: \"\\f2a1\"; }\n\n.fa-brain:before {\n content: \"\\f5dc\"; }\n\n.fa-briefcase:before {\n content: \"\\f0b1\"; }\n\n.fa-briefcase-medical:before {\n content: \"\\f469\"; }\n\n.fa-broadcast-tower:before {\n content: \"\\f519\"; }\n\n.fa-broom:before {\n content: \"\\f51a\"; }\n\n.fa-brush:before {\n content: \"\\f55d\"; }\n\n.fa-btc:before {\n content: \"\\f15a\"; }\n\n.fa-bug:before {\n content: \"\\f188\"; }\n\n.fa-building:before {\n content: \"\\f1ad\"; }\n\n.fa-bullhorn:before {\n content: \"\\f0a1\"; }\n\n.fa-bullseye:before {\n content: \"\\f140\"; }\n\n.fa-burn:before {\n content: \"\\f46a\"; }\n\n.fa-buromobelexperte:before {\n content: \"\\f37f\"; }\n\n.fa-bus:before {\n content: \"\\f207\"; }\n\n.fa-bus-alt:before {\n content: \"\\f55e\"; }\n\n.fa-business-time:before {\n content: \"\\f64a\"; }\n\n.fa-buysellads:before {\n content: \"\\f20d\"; }\n\n.fa-calculator:before {\n content: \"\\f1ec\"; }\n\n.fa-calendar:before {\n content: \"\\f133\"; }\n\n.fa-calendar-alt:before {\n content: \"\\f073\"; }\n\n.fa-calendar-check:before {\n content: \"\\f274\"; }\n\n.fa-calendar-minus:before {\n content: \"\\f272\"; }\n\n.fa-calendar-plus:before {\n content: \"\\f271\"; }\n\n.fa-calendar-times:before {\n content: \"\\f273\"; }\n\n.fa-camera:before {\n content: \"\\f030\"; }\n\n.fa-camera-retro:before {\n content: \"\\f083\"; }\n\n.fa-campground:before {\n content: \"\\f6bb\"; }\n\n.fa-cannabis:before {\n content: \"\\f55f\"; }\n\n.fa-capsules:before {\n content: \"\\f46b\"; }\n\n.fa-car:before {\n content: \"\\f1b9\"; }\n\n.fa-car-alt:before {\n content: \"\\f5de\"; }\n\n.fa-car-battery:before {\n content: \"\\f5df\"; }\n\n.fa-car-crash:before {\n content: \"\\f5e1\"; }\n\n.fa-car-side:before {\n content: \"\\f5e4\"; }\n\n.fa-caret-down:before {\n content: \"\\f0d7\"; }\n\n.fa-caret-left:before {\n content: \"\\f0d9\"; }\n\n.fa-caret-right:before {\n content: \"\\f0da\"; }\n\n.fa-caret-square-down:before {\n content: \"\\f150\"; }\n\n.fa-caret-square-left:before {\n content: \"\\f191\"; }\n\n.fa-caret-square-right:before {\n content: \"\\f152\"; }\n\n.fa-caret-square-up:before {\n content: \"\\f151\"; }\n\n.fa-caret-up:before {\n content: \"\\f0d8\"; }\n\n.fa-cart-arrow-down:before {\n content: \"\\f218\"; }\n\n.fa-cart-plus:before {\n content: \"\\f217\"; }\n\n.fa-cat:before {\n content: \"\\f6be\"; }\n\n.fa-cc-amazon-pay:before {\n content: \"\\f42d\"; }\n\n.fa-cc-amex:before {\n content: \"\\f1f3\"; }\n\n.fa-cc-apple-pay:before {\n content: \"\\f416\"; }\n\n.fa-cc-diners-club:before {\n content: \"\\f24c\"; }\n\n.fa-cc-discover:before {\n content: \"\\f1f2\"; }\n\n.fa-cc-jcb:before {\n content: \"\\f24b\"; }\n\n.fa-cc-mastercard:before {\n content: \"\\f1f1\"; }\n\n.fa-cc-paypal:before {\n content: \"\\f1f4\"; }\n\n.fa-cc-stripe:before {\n content: \"\\f1f5\"; }\n\n.fa-cc-visa:before {\n content: \"\\f1f0\"; }\n\n.fa-centercode:before {\n content: \"\\f380\"; }\n\n.fa-certificate:before {\n content: \"\\f0a3\"; }\n\n.fa-chair:before {\n content: \"\\f6c0\"; }\n\n.fa-chalkboard:before {\n content: \"\\f51b\"; }\n\n.fa-chalkboard-teacher:before {\n content: \"\\f51c\"; }\n\n.fa-charging-station:before {\n content: \"\\f5e7\"; }\n\n.fa-chart-area:before {\n content: \"\\f1fe\"; }\n\n.fa-chart-bar:before {\n content: \"\\f080\"; }\n\n.fa-chart-line:before {\n content: \"\\f201\"; }\n\n.fa-chart-pie:before {\n content: \"\\f200\"; }\n\n.fa-check:before {\n content: \"\\f00c\"; }\n\n.fa-check-circle:before {\n content: \"\\f058\"; }\n\n.fa-check-double:before {\n content: \"\\f560\"; }\n\n.fa-check-square:before {\n content: \"\\f14a\"; }\n\n.fa-chess:before {\n content: \"\\f439\"; }\n\n.fa-chess-bishop:before {\n content: \"\\f43a\"; }\n\n.fa-chess-board:before {\n content: \"\\f43c\"; }\n\n.fa-chess-king:before {\n content: \"\\f43f\"; }\n\n.fa-chess-knight:before {\n content: \"\\f441\"; }\n\n.fa-chess-pawn:before {\n content: \"\\f443\"; }\n\n.fa-chess-queen:before {\n content: \"\\f445\"; }\n\n.fa-chess-rook:before {\n content: \"\\f447\"; }\n\n.fa-chevron-circle-down:before {\n content: \"\\f13a\"; }\n\n.fa-chevron-circle-left:before {\n content: \"\\f137\"; }\n\n.fa-chevron-circle-right:before {\n content: \"\\f138\"; }\n\n.fa-chevron-circle-up:before {\n content: \"\\f139\"; }\n\n.fa-chevron-down:before {\n content: \"\\f078\"; }\n\n.fa-chevron-left:before {\n content: \"\\f053\"; }\n\n.fa-chevron-right:before {\n content: \"\\f054\"; }\n\n.fa-chevron-up:before {\n content: \"\\f077\"; }\n\n.fa-child:before {\n content: \"\\f1ae\"; }\n\n.fa-chrome:before {\n content: \"\\f268\"; }\n\n.fa-church:before {\n content: \"\\f51d\"; }\n\n.fa-circle:before {\n content: \"\\f111\"; }\n\n.fa-circle-notch:before {\n content: \"\\f1ce\"; }\n\n.fa-city:before {\n content: \"\\f64f\"; }\n\n.fa-clipboard:before {\n content: \"\\f328\"; }\n\n.fa-clipboard-check:before {\n content: \"\\f46c\"; }\n\n.fa-clipboard-list:before {\n content: \"\\f46d\"; }\n\n.fa-clock:before {\n content: \"\\f017\"; }\n\n.fa-clone:before {\n content: \"\\f24d\"; }\n\n.fa-closed-captioning:before {\n content: \"\\f20a\"; }\n\n.fa-cloud:before {\n content: \"\\f0c2\"; }\n\n.fa-cloud-download-alt:before {\n content: \"\\f381\"; }\n\n.fa-cloud-meatball:before {\n content: \"\\f73b\"; }\n\n.fa-cloud-moon:before {\n content: \"\\f6c3\"; }\n\n.fa-cloud-moon-rain:before {\n content: \"\\f73c\"; }\n\n.fa-cloud-rain:before {\n content: \"\\f73d\"; }\n\n.fa-cloud-showers-heavy:before {\n content: \"\\f740\"; }\n\n.fa-cloud-sun:before {\n content: \"\\f6c4\"; }\n\n.fa-cloud-sun-rain:before {\n content: \"\\f743\"; }\n\n.fa-cloud-upload-alt:before {\n content: \"\\f382\"; }\n\n.fa-cloudscale:before {\n content: \"\\f383\"; }\n\n.fa-cloudsmith:before {\n content: \"\\f384\"; }\n\n.fa-cloudversify:before {\n content: \"\\f385\"; }\n\n.fa-cocktail:before {\n content: \"\\f561\"; }\n\n.fa-code:before {\n content: \"\\f121\"; }\n\n.fa-code-branch:before {\n content: \"\\f126\"; }\n\n.fa-codepen:before {\n content: \"\\f1cb\"; }\n\n.fa-codiepie:before {\n content: \"\\f284\"; }\n\n.fa-coffee:before {\n content: \"\\f0f4\"; }\n\n.fa-cog:before {\n content: \"\\f013\"; }\n\n.fa-cogs:before {\n content: \"\\f085\"; }\n\n.fa-coins:before {\n content: \"\\f51e\"; }\n\n.fa-columns:before {\n content: \"\\f0db\"; }\n\n.fa-comment:before {\n content: \"\\f075\"; }\n\n.fa-comment-alt:before {\n content: \"\\f27a\"; }\n\n.fa-comment-dollar:before {\n content: \"\\f651\"; }\n\n.fa-comment-dots:before {\n content: \"\\f4ad\"; }\n\n.fa-comment-slash:before {\n content: \"\\f4b3\"; }\n\n.fa-comments:before {\n content: \"\\f086\"; }\n\n.fa-comments-dollar:before {\n content: \"\\f653\"; }\n\n.fa-compact-disc:before {\n content: \"\\f51f\"; }\n\n.fa-compass:before {\n content: \"\\f14e\"; }\n\n.fa-compress:before {\n content: \"\\f066\"; }\n\n.fa-compress-arrows-alt:before {\n content: \"\\f78c\"; }\n\n.fa-concierge-bell:before {\n content: \"\\f562\"; }\n\n.fa-connectdevelop:before {\n content: \"\\f20e\"; }\n\n.fa-contao:before {\n content: \"\\f26d\"; }\n\n.fa-cookie:before {\n content: \"\\f563\"; }\n\n.fa-cookie-bite:before {\n content: \"\\f564\"; }\n\n.fa-copy:before {\n content: \"\\f0c5\"; }\n\n.fa-copyright:before {\n content: \"\\f1f9\"; }\n\n.fa-couch:before {\n content: \"\\f4b8\"; }\n\n.fa-cpanel:before {\n content: \"\\f388\"; }\n\n.fa-creative-commons:before {\n content: \"\\f25e\"; }\n\n.fa-creative-commons-by:before {\n content: \"\\f4e7\"; }\n\n.fa-creative-commons-nc:before {\n content: \"\\f4e8\"; }\n\n.fa-creative-commons-nc-eu:before {\n content: \"\\f4e9\"; }\n\n.fa-creative-commons-nc-jp:before {\n content: \"\\f4ea\"; }\n\n.fa-creative-commons-nd:before {\n content: \"\\f4eb\"; }\n\n.fa-creative-commons-pd:before {\n content: \"\\f4ec\"; }\n\n.fa-creative-commons-pd-alt:before {\n content: \"\\f4ed\"; }\n\n.fa-creative-commons-remix:before {\n content: \"\\f4ee\"; }\n\n.fa-creative-commons-sa:before {\n content: \"\\f4ef\"; }\n\n.fa-creative-commons-sampling:before {\n content: \"\\f4f0\"; }\n\n.fa-creative-commons-sampling-plus:before {\n content: \"\\f4f1\"; }\n\n.fa-creative-commons-share:before {\n content: \"\\f4f2\"; }\n\n.fa-creative-commons-zero:before {\n content: \"\\f4f3\"; }\n\n.fa-credit-card:before {\n content: \"\\f09d\"; }\n\n.fa-critical-role:before {\n content: \"\\f6c9\"; }\n\n.fa-crop:before {\n content: \"\\f125\"; }\n\n.fa-crop-alt:before {\n content: \"\\f565\"; }\n\n.fa-cross:before {\n content: \"\\f654\"; }\n\n.fa-crosshairs:before {\n content: \"\\f05b\"; }\n\n.fa-crow:before {\n content: \"\\f520\"; }\n\n.fa-crown:before {\n content: \"\\f521\"; }\n\n.fa-css3:before {\n content: \"\\f13c\"; }\n\n.fa-css3-alt:before {\n content: \"\\f38b\"; }\n\n.fa-cube:before {\n content: \"\\f1b2\"; }\n\n.fa-cubes:before {\n content: \"\\f1b3\"; }\n\n.fa-cut:before {\n content: \"\\f0c4\"; }\n\n.fa-cuttlefish:before {\n content: \"\\f38c\"; }\n\n.fa-d-and-d:before {\n content: \"\\f38d\"; }\n\n.fa-d-and-d-beyond:before {\n content: \"\\f6ca\"; }\n\n.fa-dashcube:before {\n content: \"\\f210\"; }\n\n.fa-database:before {\n content: \"\\f1c0\"; }\n\n.fa-deaf:before {\n content: \"\\f2a4\"; }\n\n.fa-delicious:before {\n content: \"\\f1a5\"; }\n\n.fa-democrat:before {\n content: \"\\f747\"; }\n\n.fa-deploydog:before {\n content: \"\\f38e\"; }\n\n.fa-deskpro:before {\n content: \"\\f38f\"; }\n\n.fa-desktop:before {\n content: \"\\f108\"; }\n\n.fa-dev:before {\n content: \"\\f6cc\"; }\n\n.fa-deviantart:before {\n content: \"\\f1bd\"; }\n\n.fa-dharmachakra:before {\n content: \"\\f655\"; }\n\n.fa-diagnoses:before {\n content: \"\\f470\"; }\n\n.fa-dice:before {\n content: \"\\f522\"; }\n\n.fa-dice-d20:before {\n content: \"\\f6cf\"; }\n\n.fa-dice-d6:before {\n content: \"\\f6d1\"; }\n\n.fa-dice-five:before {\n content: \"\\f523\"; }\n\n.fa-dice-four:before {\n content: \"\\f524\"; }\n\n.fa-dice-one:before {\n content: \"\\f525\"; }\n\n.fa-dice-six:before {\n content: \"\\f526\"; }\n\n.fa-dice-three:before {\n content: \"\\f527\"; }\n\n.fa-dice-two:before {\n content: \"\\f528\"; }\n\n.fa-digg:before {\n content: \"\\f1a6\"; }\n\n.fa-digital-ocean:before {\n content: \"\\f391\"; }\n\n.fa-digital-tachograph:before {\n content: \"\\f566\"; }\n\n.fa-directions:before {\n content: \"\\f5eb\"; }\n\n.fa-discord:before {\n content: \"\\f392\"; }\n\n.fa-discourse:before {\n content: \"\\f393\"; }\n\n.fa-divide:before {\n content: \"\\f529\"; }\n\n.fa-dizzy:before {\n content: \"\\f567\"; }\n\n.fa-dna:before {\n content: \"\\f471\"; }\n\n.fa-dochub:before {\n content: \"\\f394\"; }\n\n.fa-docker:before {\n content: \"\\f395\"; }\n\n.fa-dog:before {\n content: \"\\f6d3\"; }\n\n.fa-dollar-sign:before {\n content: \"\\f155\"; }\n\n.fa-dolly:before {\n content: \"\\f472\"; }\n\n.fa-dolly-flatbed:before {\n content: \"\\f474\"; }\n\n.fa-donate:before {\n content: \"\\f4b9\"; }\n\n.fa-door-closed:before {\n content: \"\\f52a\"; }\n\n.fa-door-open:before {\n content: \"\\f52b\"; }\n\n.fa-dot-circle:before {\n content: \"\\f192\"; }\n\n.fa-dove:before {\n content: \"\\f4ba\"; }\n\n.fa-download:before {\n content: \"\\f019\"; }\n\n.fa-draft2digital:before {\n content: \"\\f396\"; }\n\n.fa-drafting-compass:before {\n content: \"\\f568\"; }\n\n.fa-dragon:before {\n content: \"\\f6d5\"; }\n\n.fa-draw-polygon:before {\n content: \"\\f5ee\"; }\n\n.fa-dribbble:before {\n content: \"\\f17d\"; }\n\n.fa-dribbble-square:before {\n content: \"\\f397\"; }\n\n.fa-dropbox:before {\n content: \"\\f16b\"; }\n\n.fa-drum:before {\n content: \"\\f569\"; }\n\n.fa-drum-steelpan:before {\n content: \"\\f56a\"; }\n\n.fa-drumstick-bite:before {\n content: \"\\f6d7\"; }\n\n.fa-drupal:before {\n content: \"\\f1a9\"; }\n\n.fa-dumbbell:before {\n content: \"\\f44b\"; }\n\n.fa-dungeon:before {\n content: \"\\f6d9\"; }\n\n.fa-dyalog:before {\n content: \"\\f399\"; }\n\n.fa-earlybirds:before {\n content: \"\\f39a\"; }\n\n.fa-ebay:before {\n content: \"\\f4f4\"; }\n\n.fa-edge:before {\n content: \"\\f282\"; }\n\n.fa-edit:before {\n content: \"\\f044\"; }\n\n.fa-eject:before {\n content: \"\\f052\"; }\n\n.fa-elementor:before {\n content: \"\\f430\"; }\n\n.fa-ellipsis-h:before {\n content: \"\\f141\"; }\n\n.fa-ellipsis-v:before {\n content: \"\\f142\"; }\n\n.fa-ello:before {\n content: \"\\f5f1\"; }\n\n.fa-ember:before {\n content: \"\\f423\"; }\n\n.fa-empire:before {\n content: \"\\f1d1\"; }\n\n.fa-envelope:before {\n content: \"\\f0e0\"; }\n\n.fa-envelope-open:before {\n content: \"\\f2b6\"; }\n\n.fa-envelope-open-text:before {\n content: \"\\f658\"; }\n\n.fa-envelope-square:before {\n content: \"\\f199\"; }\n\n.fa-envira:before {\n content: \"\\f299\"; }\n\n.fa-equals:before {\n content: \"\\f52c\"; }\n\n.fa-eraser:before {\n content: \"\\f12d\"; }\n\n.fa-erlang:before {\n content: \"\\f39d\"; }\n\n.fa-ethereum:before {\n content: \"\\f42e\"; }\n\n.fa-etsy:before {\n content: \"\\f2d7\"; }\n\n.fa-euro-sign:before {\n content: \"\\f153\"; }\n\n.fa-exchange-alt:before {\n content: \"\\f362\"; }\n\n.fa-exclamation:before {\n content: \"\\f12a\"; }\n\n.fa-exclamation-circle:before {\n content: \"\\f06a\"; }\n\n.fa-exclamation-triangle:before {\n content: \"\\f071\"; }\n\n.fa-expand:before {\n content: \"\\f065\"; }\n\n.fa-expand-arrows-alt:before {\n content: \"\\f31e\"; }\n\n.fa-expeditedssl:before {\n content: \"\\f23e\"; }\n\n.fa-external-link-alt:before {\n content: \"\\f35d\"; }\n\n.fa-external-link-square-alt:before {\n content: \"\\f360\"; }\n\n.fa-eye:before {\n content: \"\\f06e\"; }\n\n.fa-eye-dropper:before {\n content: \"\\f1fb\"; }\n\n.fa-eye-slash:before {\n content: \"\\f070\"; }\n\n.fa-facebook:before {\n content: \"\\f09a\"; }\n\n.fa-facebook-f:before {\n content: \"\\f39e\"; }\n\n.fa-facebook-messenger:before {\n content: \"\\f39f\"; }\n\n.fa-facebook-square:before {\n content: \"\\f082\"; }\n\n.fa-fantasy-flight-games:before {\n content: \"\\f6dc\"; }\n\n.fa-fast-backward:before {\n content: \"\\f049\"; }\n\n.fa-fast-forward:before {\n content: \"\\f050\"; }\n\n.fa-fax:before {\n content: \"\\f1ac\"; }\n\n.fa-feather:before {\n content: \"\\f52d\"; }\n\n.fa-feather-alt:before {\n content: \"\\f56b\"; }\n\n.fa-female:before {\n content: \"\\f182\"; }\n\n.fa-fighter-jet:before {\n content: \"\\f0fb\"; }\n\n.fa-file:before {\n content: \"\\f15b\"; }\n\n.fa-file-alt:before {\n content: \"\\f15c\"; }\n\n.fa-file-archive:before {\n content: \"\\f1c6\"; }\n\n.fa-file-audio:before {\n content: \"\\f1c7\"; }\n\n.fa-file-code:before {\n content: \"\\f1c9\"; }\n\n.fa-file-contract:before {\n content: \"\\f56c\"; }\n\n.fa-file-csv:before {\n content: \"\\f6dd\"; }\n\n.fa-file-download:before {\n content: \"\\f56d\"; }\n\n.fa-file-excel:before {\n content: \"\\f1c3\"; }\n\n.fa-file-export:before {\n content: \"\\f56e\"; }\n\n.fa-file-image:before {\n content: \"\\f1c5\"; }\n\n.fa-file-import:before {\n content: \"\\f56f\"; }\n\n.fa-file-invoice:before {\n content: \"\\f570\"; }\n\n.fa-file-invoice-dollar:before {\n content: \"\\f571\"; }\n\n.fa-file-medical:before {\n content: \"\\f477\"; }\n\n.fa-file-medical-alt:before {\n content: \"\\f478\"; }\n\n.fa-file-pdf:before {\n content: \"\\f1c1\"; }\n\n.fa-file-powerpoint:before {\n content: \"\\f1c4\"; }\n\n.fa-file-prescription:before {\n content: \"\\f572\"; }\n\n.fa-file-signature:before {\n content: \"\\f573\"; }\n\n.fa-file-upload:before {\n content: \"\\f574\"; }\n\n.fa-file-video:before {\n content: \"\\f1c8\"; }\n\n.fa-file-word:before {\n content: \"\\f1c2\"; }\n\n.fa-fill:before {\n content: \"\\f575\"; }\n\n.fa-fill-drip:before {\n content: \"\\f576\"; }\n\n.fa-film:before {\n content: \"\\f008\"; }\n\n.fa-filter:before {\n content: \"\\f0b0\"; }\n\n.fa-fingerprint:before {\n content: \"\\f577\"; }\n\n.fa-fire:before {\n content: \"\\f06d\"; }\n\n.fa-fire-extinguisher:before {\n content: \"\\f134\"; }\n\n.fa-firefox:before {\n content: \"\\f269\"; }\n\n.fa-first-aid:before {\n content: \"\\f479\"; }\n\n.fa-first-order:before {\n content: \"\\f2b0\"; }\n\n.fa-first-order-alt:before {\n content: \"\\f50a\"; }\n\n.fa-firstdraft:before {\n content: \"\\f3a1\"; }\n\n.fa-fish:before {\n content: \"\\f578\"; }\n\n.fa-fist-raised:before {\n content: \"\\f6de\"; }\n\n.fa-flag:before {\n content: \"\\f024\"; }\n\n.fa-flag-checkered:before {\n content: \"\\f11e\"; }\n\n.fa-flag-usa:before {\n content: \"\\f74d\"; }\n\n.fa-flask:before {\n content: \"\\f0c3\"; }\n\n.fa-flickr:before {\n content: \"\\f16e\"; }\n\n.fa-flipboard:before {\n content: \"\\f44d\"; }\n\n.fa-flushed:before {\n content: \"\\f579\"; }\n\n.fa-fly:before {\n content: \"\\f417\"; }\n\n.fa-folder:before {\n content: \"\\f07b\"; }\n\n.fa-folder-minus:before {\n content: \"\\f65d\"; }\n\n.fa-folder-open:before {\n content: \"\\f07c\"; }\n\n.fa-folder-plus:before {\n content: \"\\f65e\"; }\n\n.fa-font:before {\n content: \"\\f031\"; }\n\n.fa-font-awesome:before {\n content: \"\\f2b4\"; }\n\n.fa-font-awesome-alt:before {\n content: \"\\f35c\"; }\n\n.fa-font-awesome-flag:before {\n content: \"\\f425\"; }\n\n.fa-font-awesome-logo-full:before {\n content: \"\\f4e6\"; }\n\n.fa-fonticons:before {\n content: \"\\f280\"; }\n\n.fa-fonticons-fi:before {\n content: \"\\f3a2\"; }\n\n.fa-football-ball:before {\n content: \"\\f44e\"; }\n\n.fa-fort-awesome:before {\n content: \"\\f286\"; }\n\n.fa-fort-awesome-alt:before {\n content: \"\\f3a3\"; }\n\n.fa-forumbee:before {\n content: \"\\f211\"; }\n\n.fa-forward:before {\n content: \"\\f04e\"; }\n\n.fa-foursquare:before {\n content: \"\\f180\"; }\n\n.fa-free-code-camp:before {\n content: \"\\f2c5\"; }\n\n.fa-freebsd:before {\n content: \"\\f3a4\"; }\n\n.fa-frog:before {\n content: \"\\f52e\"; }\n\n.fa-frown:before {\n content: \"\\f119\"; }\n\n.fa-frown-open:before {\n content: \"\\f57a\"; }\n\n.fa-fulcrum:before {\n content: \"\\f50b\"; }\n\n.fa-funnel-dollar:before {\n content: \"\\f662\"; }\n\n.fa-futbol:before {\n content: \"\\f1e3\"; }\n\n.fa-galactic-republic:before {\n content: \"\\f50c\"; }\n\n.fa-galactic-senate:before {\n content: \"\\f50d\"; }\n\n.fa-gamepad:before {\n content: \"\\f11b\"; }\n\n.fa-gas-pump:before {\n content: \"\\f52f\"; }\n\n.fa-gavel:before {\n content: \"\\f0e3\"; }\n\n.fa-gem:before {\n content: \"\\f3a5\"; }\n\n.fa-genderless:before {\n content: \"\\f22d\"; }\n\n.fa-get-pocket:before {\n content: \"\\f265\"; }\n\n.fa-gg:before {\n content: \"\\f260\"; }\n\n.fa-gg-circle:before {\n content: \"\\f261\"; }\n\n.fa-ghost:before {\n content: \"\\f6e2\"; }\n\n.fa-gift:before {\n content: \"\\f06b\"; }\n\n.fa-git:before {\n content: \"\\f1d3\"; }\n\n.fa-git-square:before {\n content: \"\\f1d2\"; }\n\n.fa-github:before {\n content: \"\\f09b\"; }\n\n.fa-github-alt:before {\n content: \"\\f113\"; }\n\n.fa-github-square:before {\n content: \"\\f092\"; }\n\n.fa-gitkraken:before {\n content: \"\\f3a6\"; }\n\n.fa-gitlab:before {\n content: \"\\f296\"; }\n\n.fa-gitter:before {\n content: \"\\f426\"; }\n\n.fa-glass-martini:before {\n content: \"\\f000\"; }\n\n.fa-glass-martini-alt:before {\n content: \"\\f57b\"; }\n\n.fa-glasses:before {\n content: \"\\f530\"; }\n\n.fa-glide:before {\n content: \"\\f2a5\"; }\n\n.fa-glide-g:before {\n content: \"\\f2a6\"; }\n\n.fa-globe:before {\n content: \"\\f0ac\"; }\n\n.fa-globe-africa:before {\n content: \"\\f57c\"; }\n\n.fa-globe-americas:before {\n content: \"\\f57d\"; }\n\n.fa-globe-asia:before {\n content: \"\\f57e\"; }\n\n.fa-gofore:before {\n content: \"\\f3a7\"; }\n\n.fa-golf-ball:before {\n content: \"\\f450\"; }\n\n.fa-goodreads:before {\n content: \"\\f3a8\"; }\n\n.fa-goodreads-g:before {\n content: \"\\f3a9\"; }\n\n.fa-google:before {\n content: \"\\f1a0\"; }\n\n.fa-google-drive:before {\n content: \"\\f3aa\"; }\n\n.fa-google-play:before {\n content: \"\\f3ab\"; }\n\n.fa-google-plus:before {\n content: \"\\f2b3\"; }\n\n.fa-google-plus-g:before {\n content: \"\\f0d5\"; }\n\n.fa-google-plus-square:before {\n content: \"\\f0d4\"; }\n\n.fa-google-wallet:before {\n content: \"\\f1ee\"; }\n\n.fa-gopuram:before {\n content: \"\\f664\"; }\n\n.fa-graduation-cap:before {\n content: \"\\f19d\"; }\n\n.fa-gratipay:before {\n content: \"\\f184\"; }\n\n.fa-grav:before {\n content: \"\\f2d6\"; }\n\n.fa-greater-than:before {\n content: \"\\f531\"; }\n\n.fa-greater-than-equal:before {\n content: \"\\f532\"; }\n\n.fa-grimace:before {\n content: \"\\f57f\"; }\n\n.fa-grin:before {\n content: \"\\f580\"; }\n\n.fa-grin-alt:before {\n content: \"\\f581\"; }\n\n.fa-grin-beam:before {\n content: \"\\f582\"; }\n\n.fa-grin-beam-sweat:before {\n content: \"\\f583\"; }\n\n.fa-grin-hearts:before {\n content: \"\\f584\"; }\n\n.fa-grin-squint:before {\n content: \"\\f585\"; }\n\n.fa-grin-squint-tears:before {\n content: \"\\f586\"; }\n\n.fa-grin-stars:before {\n content: \"\\f587\"; }\n\n.fa-grin-tears:before {\n content: \"\\f588\"; }\n\n.fa-grin-tongue:before {\n content: \"\\f589\"; }\n\n.fa-grin-tongue-squint:before {\n content: \"\\f58a\"; }\n\n.fa-grin-tongue-wink:before {\n content: \"\\f58b\"; }\n\n.fa-grin-wink:before {\n content: \"\\f58c\"; }\n\n.fa-grip-horizontal:before {\n content: \"\\f58d\"; }\n\n.fa-grip-vertical:before {\n content: \"\\f58e\"; }\n\n.fa-gripfire:before {\n content: \"\\f3ac\"; }\n\n.fa-grunt:before {\n content: \"\\f3ad\"; }\n\n.fa-gulp:before {\n content: \"\\f3ae\"; }\n\n.fa-h-square:before {\n content: \"\\f0fd\"; }\n\n.fa-hacker-news:before {\n content: \"\\f1d4\"; }\n\n.fa-hacker-news-square:before {\n content: \"\\f3af\"; }\n\n.fa-hackerrank:before {\n content: \"\\f5f7\"; }\n\n.fa-hammer:before {\n content: \"\\f6e3\"; }\n\n.fa-hamsa:before {\n content: \"\\f665\"; }\n\n.fa-hand-holding:before {\n content: \"\\f4bd\"; }\n\n.fa-hand-holding-heart:before {\n content: \"\\f4be\"; }\n\n.fa-hand-holding-usd:before {\n content: \"\\f4c0\"; }\n\n.fa-hand-lizard:before {\n content: \"\\f258\"; }\n\n.fa-hand-paper:before {\n content: \"\\f256\"; }\n\n.fa-hand-peace:before {\n content: \"\\f25b\"; }\n\n.fa-hand-point-down:before {\n content: \"\\f0a7\"; }\n\n.fa-hand-point-left:before {\n content: \"\\f0a5\"; }\n\n.fa-hand-point-right:before {\n content: \"\\f0a4\"; }\n\n.fa-hand-point-up:before {\n content: \"\\f0a6\"; }\n\n.fa-hand-pointer:before {\n content: \"\\f25a\"; }\n\n.fa-hand-rock:before {\n content: \"\\f255\"; }\n\n.fa-hand-scissors:before {\n content: \"\\f257\"; }\n\n.fa-hand-spock:before {\n content: \"\\f259\"; }\n\n.fa-hands:before {\n content: \"\\f4c2\"; }\n\n.fa-hands-helping:before {\n content: \"\\f4c4\"; }\n\n.fa-handshake:before {\n content: \"\\f2b5\"; }\n\n.fa-hanukiah:before {\n content: \"\\f6e6\"; }\n\n.fa-hashtag:before {\n content: \"\\f292\"; }\n\n.fa-hat-wizard:before {\n content: \"\\f6e8\"; }\n\n.fa-haykal:before {\n content: \"\\f666\"; }\n\n.fa-hdd:before {\n content: \"\\f0a0\"; }\n\n.fa-heading:before {\n content: \"\\f1dc\"; }\n\n.fa-headphones:before {\n content: \"\\f025\"; }\n\n.fa-headphones-alt:before {\n content: \"\\f58f\"; }\n\n.fa-headset:before {\n content: \"\\f590\"; }\n\n.fa-heart:before {\n content: \"\\f004\"; }\n\n.fa-heartbeat:before {\n content: \"\\f21e\"; }\n\n.fa-helicopter:before {\n content: \"\\f533\"; }\n\n.fa-highlighter:before {\n content: \"\\f591\"; }\n\n.fa-hiking:before {\n content: \"\\f6ec\"; }\n\n.fa-hippo:before {\n content: \"\\f6ed\"; }\n\n.fa-hips:before {\n content: \"\\f452\"; }\n\n.fa-hire-a-helper:before {\n content: \"\\f3b0\"; }\n\n.fa-history:before {\n content: \"\\f1da\"; }\n\n.fa-hockey-puck:before {\n content: \"\\f453\"; }\n\n.fa-home:before {\n content: \"\\f015\"; }\n\n.fa-hooli:before {\n content: \"\\f427\"; }\n\n.fa-hornbill:before {\n content: \"\\f592\"; }\n\n.fa-horse:before {\n content: \"\\f6f0\"; }\n\n.fa-hospital:before {\n content: \"\\f0f8\"; }\n\n.fa-hospital-alt:before {\n content: \"\\f47d\"; }\n\n.fa-hospital-symbol:before {\n content: \"\\f47e\"; }\n\n.fa-hot-tub:before {\n content: \"\\f593\"; }\n\n.fa-hotel:before {\n content: \"\\f594\"; }\n\n.fa-hotjar:before {\n content: \"\\f3b1\"; }\n\n.fa-hourglass:before {\n content: \"\\f254\"; }\n\n.fa-hourglass-end:before {\n content: \"\\f253\"; }\n\n.fa-hourglass-half:before {\n content: \"\\f252\"; }\n\n.fa-hourglass-start:before {\n content: \"\\f251\"; }\n\n.fa-house-damage:before {\n content: \"\\f6f1\"; }\n\n.fa-houzz:before {\n content: \"\\f27c\"; }\n\n.fa-hryvnia:before {\n content: \"\\f6f2\"; }\n\n.fa-html5:before {\n content: \"\\f13b\"; }\n\n.fa-hubspot:before {\n content: \"\\f3b2\"; }\n\n.fa-i-cursor:before {\n content: \"\\f246\"; }\n\n.fa-id-badge:before {\n content: \"\\f2c1\"; }\n\n.fa-id-card:before {\n content: \"\\f2c2\"; }\n\n.fa-id-card-alt:before {\n content: \"\\f47f\"; }\n\n.fa-image:before {\n content: \"\\f03e\"; }\n\n.fa-images:before {\n content: \"\\f302\"; }\n\n.fa-imdb:before {\n content: \"\\f2d8\"; }\n\n.fa-inbox:before {\n content: \"\\f01c\"; }\n\n.fa-indent:before {\n content: \"\\f03c\"; }\n\n.fa-industry:before {\n content: \"\\f275\"; }\n\n.fa-infinity:before {\n content: \"\\f534\"; }\n\n.fa-info:before {\n content: \"\\f129\"; }\n\n.fa-info-circle:before {\n content: \"\\f05a\"; }\n\n.fa-instagram:before {\n content: \"\\f16d\"; }\n\n.fa-internet-explorer:before {\n content: \"\\f26b\"; }\n\n.fa-ioxhost:before {\n content: \"\\f208\"; }\n\n.fa-italic:before {\n content: \"\\f033\"; }\n\n.fa-itunes:before {\n content: \"\\f3b4\"; }\n\n.fa-itunes-note:before {\n content: \"\\f3b5\"; }\n\n.fa-java:before {\n content: \"\\f4e4\"; }\n\n.fa-jedi:before {\n content: \"\\f669\"; }\n\n.fa-jedi-order:before {\n content: \"\\f50e\"; }\n\n.fa-jenkins:before {\n content: \"\\f3b6\"; }\n\n.fa-joget:before {\n content: \"\\f3b7\"; }\n\n.fa-joint:before {\n content: \"\\f595\"; }\n\n.fa-joomla:before {\n content: \"\\f1aa\"; }\n\n.fa-journal-whills:before {\n content: \"\\f66a\"; }\n\n.fa-js:before {\n content: \"\\f3b8\"; }\n\n.fa-js-square:before {\n content: \"\\f3b9\"; }\n\n.fa-jsfiddle:before {\n content: \"\\f1cc\"; }\n\n.fa-kaaba:before {\n content: \"\\f66b\"; }\n\n.fa-kaggle:before {\n content: \"\\f5fa\"; }\n\n.fa-key:before {\n content: \"\\f084\"; }\n\n.fa-keybase:before {\n content: \"\\f4f5\"; }\n\n.fa-keyboard:before {\n content: \"\\f11c\"; }\n\n.fa-keycdn:before {\n content: \"\\f3ba\"; }\n\n.fa-khanda:before {\n content: \"\\f66d\"; }\n\n.fa-kickstarter:before {\n content: \"\\f3bb\"; }\n\n.fa-kickstarter-k:before {\n content: \"\\f3bc\"; }\n\n.fa-kiss:before {\n content: \"\\f596\"; }\n\n.fa-kiss-beam:before {\n content: \"\\f597\"; }\n\n.fa-kiss-wink-heart:before {\n content: \"\\f598\"; }\n\n.fa-kiwi-bird:before {\n content: \"\\f535\"; }\n\n.fa-korvue:before {\n content: \"\\f42f\"; }\n\n.fa-landmark:before {\n content: \"\\f66f\"; }\n\n.fa-language:before {\n content: \"\\f1ab\"; }\n\n.fa-laptop:before {\n content: \"\\f109\"; }\n\n.fa-laptop-code:before {\n content: \"\\f5fc\"; }\n\n.fa-laravel:before {\n content: \"\\f3bd\"; }\n\n.fa-lastfm:before {\n content: \"\\f202\"; }\n\n.fa-lastfm-square:before {\n content: \"\\f203\"; }\n\n.fa-laugh:before {\n content: \"\\f599\"; }\n\n.fa-laugh-beam:before {\n content: \"\\f59a\"; }\n\n.fa-laugh-squint:before {\n content: \"\\f59b\"; }\n\n.fa-laugh-wink:before {\n content: \"\\f59c\"; }\n\n.fa-layer-group:before {\n content: \"\\f5fd\"; }\n\n.fa-leaf:before {\n content: \"\\f06c\"; }\n\n.fa-leanpub:before {\n content: \"\\f212\"; }\n\n.fa-lemon:before {\n content: \"\\f094\"; }\n\n.fa-less:before {\n content: \"\\f41d\"; }\n\n.fa-less-than:before {\n content: \"\\f536\"; }\n\n.fa-less-than-equal:before {\n content: \"\\f537\"; }\n\n.fa-level-down-alt:before {\n content: \"\\f3be\"; }\n\n.fa-level-up-alt:before {\n content: \"\\f3bf\"; }\n\n.fa-life-ring:before {\n content: \"\\f1cd\"; }\n\n.fa-lightbulb:before {\n content: \"\\f0eb\"; }\n\n.fa-line:before {\n content: \"\\f3c0\"; }\n\n.fa-link:before {\n content: \"\\f0c1\"; }\n\n.fa-linkedin:before {\n content: \"\\f08c\"; }\n\n.fa-linkedin-in:before {\n content: \"\\f0e1\"; }\n\n.fa-linode:before {\n content: \"\\f2b8\"; }\n\n.fa-linux:before {\n content: \"\\f17c\"; }\n\n.fa-lira-sign:before {\n content: \"\\f195\"; }\n\n.fa-list:before {\n content: \"\\f03a\"; }\n\n.fa-list-alt:before {\n content: \"\\f022\"; }\n\n.fa-list-ol:before {\n content: \"\\f0cb\"; }\n\n.fa-list-ul:before {\n content: \"\\f0ca\"; }\n\n.fa-location-arrow:before {\n content: \"\\f124\"; }\n\n.fa-lock:before {\n content: \"\\f023\"; }\n\n.fa-lock-open:before {\n content: \"\\f3c1\"; }\n\n.fa-long-arrow-alt-down:before {\n content: \"\\f309\"; }\n\n.fa-long-arrow-alt-left:before {\n content: \"\\f30a\"; }\n\n.fa-long-arrow-alt-right:before {\n content: \"\\f30b\"; }\n\n.fa-long-arrow-alt-up:before {\n content: \"\\f30c\"; }\n\n.fa-low-vision:before {\n content: \"\\f2a8\"; }\n\n.fa-luggage-cart:before {\n content: \"\\f59d\"; }\n\n.fa-lyft:before {\n content: \"\\f3c3\"; }\n\n.fa-magento:before {\n content: \"\\f3c4\"; }\n\n.fa-magic:before {\n content: \"\\f0d0\"; }\n\n.fa-magnet:before {\n content: \"\\f076\"; }\n\n.fa-mail-bulk:before {\n content: \"\\f674\"; }\n\n.fa-mailchimp:before {\n content: \"\\f59e\"; }\n\n.fa-male:before {\n content: \"\\f183\"; }\n\n.fa-mandalorian:before {\n content: \"\\f50f\"; }\n\n.fa-map:before {\n content: \"\\f279\"; }\n\n.fa-map-marked:before {\n content: \"\\f59f\"; }\n\n.fa-map-marked-alt:before {\n content: \"\\f5a0\"; }\n\n.fa-map-marker:before {\n content: \"\\f041\"; }\n\n.fa-map-marker-alt:before {\n content: \"\\f3c5\"; }\n\n.fa-map-pin:before {\n content: \"\\f276\"; }\n\n.fa-map-signs:before {\n content: \"\\f277\"; }\n\n.fa-markdown:before {\n content: \"\\f60f\"; }\n\n.fa-marker:before {\n content: \"\\f5a1\"; }\n\n.fa-mars:before {\n content: \"\\f222\"; }\n\n.fa-mars-double:before {\n content: \"\\f227\"; }\n\n.fa-mars-stroke:before {\n content: \"\\f229\"; }\n\n.fa-mars-stroke-h:before {\n content: \"\\f22b\"; }\n\n.fa-mars-stroke-v:before {\n content: \"\\f22a\"; }\n\n.fa-mask:before {\n content: \"\\f6fa\"; }\n\n.fa-mastodon:before {\n content: \"\\f4f6\"; }\n\n.fa-maxcdn:before {\n content: \"\\f136\"; }\n\n.fa-medal:before {\n content: \"\\f5a2\"; }\n\n.fa-medapps:before {\n content: \"\\f3c6\"; }\n\n.fa-medium:before {\n content: \"\\f23a\"; }\n\n.fa-medium-m:before {\n content: \"\\f3c7\"; }\n\n.fa-medkit:before {\n content: \"\\f0fa\"; }\n\n.fa-medrt:before {\n content: \"\\f3c8\"; }\n\n.fa-meetup:before {\n content: \"\\f2e0\"; }\n\n.fa-megaport:before {\n content: \"\\f5a3\"; }\n\n.fa-meh:before {\n content: \"\\f11a\"; }\n\n.fa-meh-blank:before {\n content: \"\\f5a4\"; }\n\n.fa-meh-rolling-eyes:before {\n content: \"\\f5a5\"; }\n\n.fa-memory:before {\n content: \"\\f538\"; }\n\n.fa-menorah:before {\n content: \"\\f676\"; }\n\n.fa-mercury:before {\n content: \"\\f223\"; }\n\n.fa-meteor:before {\n content: \"\\f753\"; }\n\n.fa-microchip:before {\n content: \"\\f2db\"; }\n\n.fa-microphone:before {\n content: \"\\f130\"; }\n\n.fa-microphone-alt:before {\n content: \"\\f3c9\"; }\n\n.fa-microphone-alt-slash:before {\n content: \"\\f539\"; }\n\n.fa-microphone-slash:before {\n content: \"\\f131\"; }\n\n.fa-microscope:before {\n content: \"\\f610\"; }\n\n.fa-microsoft:before {\n content: \"\\f3ca\"; }\n\n.fa-minus:before {\n content: \"\\f068\"; }\n\n.fa-minus-circle:before {\n content: \"\\f056\"; }\n\n.fa-minus-square:before {\n content: \"\\f146\"; }\n\n.fa-mix:before {\n content: \"\\f3cb\"; }\n\n.fa-mixcloud:before {\n content: \"\\f289\"; }\n\n.fa-mizuni:before {\n content: \"\\f3cc\"; }\n\n.fa-mobile:before {\n content: \"\\f10b\"; }\n\n.fa-mobile-alt:before {\n content: \"\\f3cd\"; }\n\n.fa-modx:before {\n content: \"\\f285\"; }\n\n.fa-monero:before {\n content: \"\\f3d0\"; }\n\n.fa-money-bill:before {\n content: \"\\f0d6\"; }\n\n.fa-money-bill-alt:before {\n content: \"\\f3d1\"; }\n\n.fa-money-bill-wave:before {\n content: \"\\f53a\"; }\n\n.fa-money-bill-wave-alt:before {\n content: \"\\f53b\"; }\n\n.fa-money-check:before {\n content: \"\\f53c\"; }\n\n.fa-money-check-alt:before {\n content: \"\\f53d\"; }\n\n.fa-monument:before {\n content: \"\\f5a6\"; }\n\n.fa-moon:before {\n content: \"\\f186\"; }\n\n.fa-mortar-pestle:before {\n content: \"\\f5a7\"; }\n\n.fa-mosque:before {\n content: \"\\f678\"; }\n\n.fa-motorcycle:before {\n content: \"\\f21c\"; }\n\n.fa-mountain:before {\n content: \"\\f6fc\"; }\n\n.fa-mouse-pointer:before {\n content: \"\\f245\"; }\n\n.fa-music:before {\n content: \"\\f001\"; }\n\n.fa-napster:before {\n content: \"\\f3d2\"; }\n\n.fa-neos:before {\n content: \"\\f612\"; }\n\n.fa-network-wired:before {\n content: \"\\f6ff\"; }\n\n.fa-neuter:before {\n content: \"\\f22c\"; }\n\n.fa-newspaper:before {\n content: \"\\f1ea\"; }\n\n.fa-nimblr:before {\n content: \"\\f5a8\"; }\n\n.fa-nintendo-switch:before {\n content: \"\\f418\"; }\n\n.fa-node:before {\n content: \"\\f419\"; }\n\n.fa-node-js:before {\n content: \"\\f3d3\"; }\n\n.fa-not-equal:before {\n content: \"\\f53e\"; }\n\n.fa-notes-medical:before {\n content: \"\\f481\"; }\n\n.fa-npm:before {\n content: \"\\f3d4\"; }\n\n.fa-ns8:before {\n content: \"\\f3d5\"; }\n\n.fa-nutritionix:before {\n content: \"\\f3d6\"; }\n\n.fa-object-group:before {\n content: \"\\f247\"; }\n\n.fa-object-ungroup:before {\n content: \"\\f248\"; }\n\n.fa-odnoklassniki:before {\n content: \"\\f263\"; }\n\n.fa-odnoklassniki-square:before {\n content: \"\\f264\"; }\n\n.fa-oil-can:before {\n content: \"\\f613\"; }\n\n.fa-old-republic:before {\n content: \"\\f510\"; }\n\n.fa-om:before {\n content: \"\\f679\"; }\n\n.fa-opencart:before {\n content: \"\\f23d\"; }\n\n.fa-openid:before {\n content: \"\\f19b\"; }\n\n.fa-opera:before {\n content: \"\\f26a\"; }\n\n.fa-optin-monster:before {\n content: \"\\f23c\"; }\n\n.fa-osi:before {\n content: \"\\f41a\"; }\n\n.fa-otter:before {\n content: \"\\f700\"; }\n\n.fa-outdent:before {\n content: \"\\f03b\"; }\n\n.fa-page4:before {\n content: \"\\f3d7\"; }\n\n.fa-pagelines:before {\n content: \"\\f18c\"; }\n\n.fa-paint-brush:before {\n content: \"\\f1fc\"; }\n\n.fa-paint-roller:before {\n content: \"\\f5aa\"; }\n\n.fa-palette:before {\n content: \"\\f53f\"; }\n\n.fa-palfed:before {\n content: \"\\f3d8\"; }\n\n.fa-pallet:before {\n content: \"\\f482\"; }\n\n.fa-paper-plane:before {\n content: \"\\f1d8\"; }\n\n.fa-paperclip:before {\n content: \"\\f0c6\"; }\n\n.fa-parachute-box:before {\n content: \"\\f4cd\"; }\n\n.fa-paragraph:before {\n content: \"\\f1dd\"; }\n\n.fa-parking:before {\n content: \"\\f540\"; }\n\n.fa-passport:before {\n content: \"\\f5ab\"; }\n\n.fa-pastafarianism:before {\n content: \"\\f67b\"; }\n\n.fa-paste:before {\n content: \"\\f0ea\"; }\n\n.fa-patreon:before {\n content: \"\\f3d9\"; }\n\n.fa-pause:before {\n content: \"\\f04c\"; }\n\n.fa-pause-circle:before {\n content: \"\\f28b\"; }\n\n.fa-paw:before {\n content: \"\\f1b0\"; }\n\n.fa-paypal:before {\n content: \"\\f1ed\"; }\n\n.fa-peace:before {\n content: \"\\f67c\"; }\n\n.fa-pen:before {\n content: \"\\f304\"; }\n\n.fa-pen-alt:before {\n content: \"\\f305\"; }\n\n.fa-pen-fancy:before {\n content: \"\\f5ac\"; }\n\n.fa-pen-nib:before {\n content: \"\\f5ad\"; }\n\n.fa-pen-square:before {\n content: \"\\f14b\"; }\n\n.fa-pencil-alt:before {\n content: \"\\f303\"; }\n\n.fa-pencil-ruler:before {\n content: \"\\f5ae\"; }\n\n.fa-penny-arcade:before {\n content: \"\\f704\"; }\n\n.fa-people-carry:before {\n content: \"\\f4ce\"; }\n\n.fa-percent:before {\n content: \"\\f295\"; }\n\n.fa-percentage:before {\n content: \"\\f541\"; }\n\n.fa-periscope:before {\n content: \"\\f3da\"; }\n\n.fa-person-booth:before {\n content: \"\\f756\"; }\n\n.fa-phabricator:before {\n content: \"\\f3db\"; }\n\n.fa-phoenix-framework:before {\n content: \"\\f3dc\"; }\n\n.fa-phoenix-squadron:before {\n content: \"\\f511\"; }\n\n.fa-phone:before {\n content: \"\\f095\"; }\n\n.fa-phone-slash:before {\n content: \"\\f3dd\"; }\n\n.fa-phone-square:before {\n content: \"\\f098\"; }\n\n.fa-phone-volume:before {\n content: \"\\f2a0\"; }\n\n.fa-php:before {\n content: \"\\f457\"; }\n\n.fa-pied-piper:before {\n content: \"\\f2ae\"; }\n\n.fa-pied-piper-alt:before {\n content: \"\\f1a8\"; }\n\n.fa-pied-piper-hat:before {\n content: \"\\f4e5\"; }\n\n.fa-pied-piper-pp:before {\n content: \"\\f1a7\"; }\n\n.fa-piggy-bank:before {\n content: \"\\f4d3\"; }\n\n.fa-pills:before {\n content: \"\\f484\"; }\n\n.fa-pinterest:before {\n content: \"\\f0d2\"; }\n\n.fa-pinterest-p:before {\n content: \"\\f231\"; }\n\n.fa-pinterest-square:before {\n content: \"\\f0d3\"; }\n\n.fa-place-of-worship:before {\n content: \"\\f67f\"; }\n\n.fa-plane:before {\n content: \"\\f072\"; }\n\n.fa-plane-arrival:before {\n content: \"\\f5af\"; }\n\n.fa-plane-departure:before {\n content: \"\\f5b0\"; }\n\n.fa-play:before {\n content: \"\\f04b\"; }\n\n.fa-play-circle:before {\n content: \"\\f144\"; }\n\n.fa-playstation:before {\n content: \"\\f3df\"; }\n\n.fa-plug:before {\n content: \"\\f1e6\"; }\n\n.fa-plus:before {\n content: \"\\f067\"; }\n\n.fa-plus-circle:before {\n content: \"\\f055\"; }\n\n.fa-plus-square:before {\n content: \"\\f0fe\"; }\n\n.fa-podcast:before {\n content: \"\\f2ce\"; }\n\n.fa-poll:before {\n content: \"\\f681\"; }\n\n.fa-poll-h:before {\n content: \"\\f682\"; }\n\n.fa-poo:before {\n content: \"\\f2fe\"; }\n\n.fa-poo-storm:before {\n content: \"\\f75a\"; }\n\n.fa-poop:before {\n content: \"\\f619\"; }\n\n.fa-portrait:before {\n content: \"\\f3e0\"; }\n\n.fa-pound-sign:before {\n content: \"\\f154\"; }\n\n.fa-power-off:before {\n content: \"\\f011\"; }\n\n.fa-pray:before {\n content: \"\\f683\"; }\n\n.fa-praying-hands:before {\n content: \"\\f684\"; }\n\n.fa-prescription:before {\n content: \"\\f5b1\"; }\n\n.fa-prescription-bottle:before {\n content: \"\\f485\"; }\n\n.fa-prescription-bottle-alt:before {\n content: \"\\f486\"; }\n\n.fa-print:before {\n content: \"\\f02f\"; }\n\n.fa-procedures:before {\n content: \"\\f487\"; }\n\n.fa-product-hunt:before {\n content: \"\\f288\"; }\n\n.fa-project-diagram:before {\n content: \"\\f542\"; }\n\n.fa-pushed:before {\n content: \"\\f3e1\"; }\n\n.fa-puzzle-piece:before {\n content: \"\\f12e\"; }\n\n.fa-python:before {\n content: \"\\f3e2\"; }\n\n.fa-qq:before {\n content: \"\\f1d6\"; }\n\n.fa-qrcode:before {\n content: \"\\f029\"; }\n\n.fa-question:before {\n content: \"\\f128\"; }\n\n.fa-question-circle:before {\n content: \"\\f059\"; }\n\n.fa-quidditch:before {\n content: \"\\f458\"; }\n\n.fa-quinscape:before {\n content: \"\\f459\"; }\n\n.fa-quora:before {\n content: \"\\f2c4\"; }\n\n.fa-quote-left:before {\n content: \"\\f10d\"; }\n\n.fa-quote-right:before {\n content: \"\\f10e\"; }\n\n.fa-quran:before {\n content: \"\\f687\"; }\n\n.fa-r-project:before {\n content: \"\\f4f7\"; }\n\n.fa-rainbow:before {\n content: \"\\f75b\"; }\n\n.fa-random:before {\n content: \"\\f074\"; }\n\n.fa-ravelry:before {\n content: \"\\f2d9\"; }\n\n.fa-react:before {\n content: \"\\f41b\"; }\n\n.fa-reacteurope:before {\n content: \"\\f75d\"; }\n\n.fa-readme:before {\n content: \"\\f4d5\"; }\n\n.fa-rebel:before {\n content: \"\\f1d0\"; }\n\n.fa-receipt:before {\n content: \"\\f543\"; }\n\n.fa-recycle:before {\n content: \"\\f1b8\"; }\n\n.fa-red-river:before {\n content: \"\\f3e3\"; }\n\n.fa-reddit:before {\n content: \"\\f1a1\"; }\n\n.fa-reddit-alien:before {\n content: \"\\f281\"; }\n\n.fa-reddit-square:before {\n content: \"\\f1a2\"; }\n\n.fa-redo:before {\n content: \"\\f01e\"; }\n\n.fa-redo-alt:before {\n content: \"\\f2f9\"; }\n\n.fa-registered:before {\n content: \"\\f25d\"; }\n\n.fa-renren:before {\n content: \"\\f18b\"; }\n\n.fa-reply:before {\n content: \"\\f3e5\"; }\n\n.fa-reply-all:before {\n content: \"\\f122\"; }\n\n.fa-replyd:before {\n content: \"\\f3e6\"; }\n\n.fa-republican:before {\n content: \"\\f75e\"; }\n\n.fa-researchgate:before {\n content: \"\\f4f8\"; }\n\n.fa-resolving:before {\n content: \"\\f3e7\"; }\n\n.fa-retweet:before {\n content: \"\\f079\"; }\n\n.fa-rev:before {\n content: \"\\f5b2\"; }\n\n.fa-ribbon:before {\n content: \"\\f4d6\"; }\n\n.fa-ring:before {\n content: \"\\f70b\"; }\n\n.fa-road:before {\n content: \"\\f018\"; }\n\n.fa-robot:before {\n content: \"\\f544\"; }\n\n.fa-rocket:before {\n content: \"\\f135\"; }\n\n.fa-rocketchat:before {\n content: \"\\f3e8\"; }\n\n.fa-rockrms:before {\n content: \"\\f3e9\"; }\n\n.fa-route:before {\n content: \"\\f4d7\"; }\n\n.fa-rss:before {\n content: \"\\f09e\"; }\n\n.fa-rss-square:before {\n content: \"\\f143\"; }\n\n.fa-ruble-sign:before {\n content: \"\\f158\"; }\n\n.fa-ruler:before {\n content: \"\\f545\"; }\n\n.fa-ruler-combined:before {\n content: \"\\f546\"; }\n\n.fa-ruler-horizontal:before {\n content: \"\\f547\"; }\n\n.fa-ruler-vertical:before {\n content: \"\\f548\"; }\n\n.fa-running:before {\n content: \"\\f70c\"; }\n\n.fa-rupee-sign:before {\n content: \"\\f156\"; }\n\n.fa-sad-cry:before {\n content: \"\\f5b3\"; }\n\n.fa-sad-tear:before {\n content: \"\\f5b4\"; }\n\n.fa-safari:before {\n content: \"\\f267\"; }\n\n.fa-sass:before {\n content: \"\\f41e\"; }\n\n.fa-save:before {\n content: \"\\f0c7\"; }\n\n.fa-schlix:before {\n content: \"\\f3ea\"; }\n\n.fa-school:before {\n content: \"\\f549\"; }\n\n.fa-screwdriver:before {\n content: \"\\f54a\"; }\n\n.fa-scribd:before {\n content: \"\\f28a\"; }\n\n.fa-scroll:before {\n content: \"\\f70e\"; }\n\n.fa-search:before {\n content: \"\\f002\"; }\n\n.fa-search-dollar:before {\n content: \"\\f688\"; }\n\n.fa-search-location:before {\n content: \"\\f689\"; }\n\n.fa-search-minus:before {\n content: \"\\f010\"; }\n\n.fa-search-plus:before {\n content: \"\\f00e\"; }\n\n.fa-searchengin:before {\n content: \"\\f3eb\"; }\n\n.fa-seedling:before {\n content: \"\\f4d8\"; }\n\n.fa-sellcast:before {\n content: \"\\f2da\"; }\n\n.fa-sellsy:before {\n content: \"\\f213\"; }\n\n.fa-server:before {\n content: \"\\f233\"; }\n\n.fa-servicestack:before {\n content: \"\\f3ec\"; }\n\n.fa-shapes:before {\n content: \"\\f61f\"; }\n\n.fa-share:before {\n content: \"\\f064\"; }\n\n.fa-share-alt:before {\n content: \"\\f1e0\"; }\n\n.fa-share-alt-square:before {\n content: \"\\f1e1\"; }\n\n.fa-share-square:before {\n content: \"\\f14d\"; }\n\n.fa-shekel-sign:before {\n content: \"\\f20b\"; }\n\n.fa-shield-alt:before {\n content: \"\\f3ed\"; }\n\n.fa-ship:before {\n content: \"\\f21a\"; }\n\n.fa-shipping-fast:before {\n content: \"\\f48b\"; }\n\n.fa-shirtsinbulk:before {\n content: \"\\f214\"; }\n\n.fa-shoe-prints:before {\n content: \"\\f54b\"; }\n\n.fa-shopping-bag:before {\n content: \"\\f290\"; }\n\n.fa-shopping-basket:before {\n content: \"\\f291\"; }\n\n.fa-shopping-cart:before {\n content: \"\\f07a\"; }\n\n.fa-shopware:before {\n content: \"\\f5b5\"; }\n\n.fa-shower:before {\n content: \"\\f2cc\"; }\n\n.fa-shuttle-van:before {\n content: \"\\f5b6\"; }\n\n.fa-sign:before {\n content: \"\\f4d9\"; }\n\n.fa-sign-in-alt:before {\n content: \"\\f2f6\"; }\n\n.fa-sign-language:before {\n content: \"\\f2a7\"; }\n\n.fa-sign-out-alt:before {\n content: \"\\f2f5\"; }\n\n.fa-signal:before {\n content: \"\\f012\"; }\n\n.fa-signature:before {\n content: \"\\f5b7\"; }\n\n.fa-simplybuilt:before {\n content: \"\\f215\"; }\n\n.fa-sistrix:before {\n content: \"\\f3ee\"; }\n\n.fa-sitemap:before {\n content: \"\\f0e8\"; }\n\n.fa-sith:before {\n content: \"\\f512\"; }\n\n.fa-skull:before {\n content: \"\\f54c\"; }\n\n.fa-skull-crossbones:before {\n content: \"\\f714\"; }\n\n.fa-skyatlas:before {\n content: \"\\f216\"; }\n\n.fa-skype:before {\n content: \"\\f17e\"; }\n\n.fa-slack:before {\n content: \"\\f198\"; }\n\n.fa-slack-hash:before {\n content: \"\\f3ef\"; }\n\n.fa-slash:before {\n content: \"\\f715\"; }\n\n.fa-sliders-h:before {\n content: \"\\f1de\"; }\n\n.fa-slideshare:before {\n content: \"\\f1e7\"; }\n\n.fa-smile:before {\n content: \"\\f118\"; }\n\n.fa-smile-beam:before {\n content: \"\\f5b8\"; }\n\n.fa-smile-wink:before {\n content: \"\\f4da\"; }\n\n.fa-smog:before {\n content: \"\\f75f\"; }\n\n.fa-smoking:before {\n content: \"\\f48d\"; }\n\n.fa-smoking-ban:before {\n content: \"\\f54d\"; }\n\n.fa-snapchat:before {\n content: \"\\f2ab\"; }\n\n.fa-snapchat-ghost:before {\n content: \"\\f2ac\"; }\n\n.fa-snapchat-square:before {\n content: \"\\f2ad\"; }\n\n.fa-snowflake:before {\n content: \"\\f2dc\"; }\n\n.fa-socks:before {\n content: \"\\f696\"; }\n\n.fa-solar-panel:before {\n content: \"\\f5ba\"; }\n\n.fa-sort:before {\n content: \"\\f0dc\"; }\n\n.fa-sort-alpha-down:before {\n content: \"\\f15d\"; }\n\n.fa-sort-alpha-up:before {\n content: \"\\f15e\"; }\n\n.fa-sort-amount-down:before {\n content: \"\\f160\"; }\n\n.fa-sort-amount-up:before {\n content: \"\\f161\"; }\n\n.fa-sort-down:before {\n content: \"\\f0dd\"; }\n\n.fa-sort-numeric-down:before {\n content: \"\\f162\"; }\n\n.fa-sort-numeric-up:before {\n content: \"\\f163\"; }\n\n.fa-sort-up:before {\n content: \"\\f0de\"; }\n\n.fa-soundcloud:before {\n content: \"\\f1be\"; }\n\n.fa-spa:before {\n content: \"\\f5bb\"; }\n\n.fa-space-shuttle:before {\n content: \"\\f197\"; }\n\n.fa-speakap:before {\n content: \"\\f3f3\"; }\n\n.fa-spider:before {\n content: \"\\f717\"; }\n\n.fa-spinner:before {\n content: \"\\f110\"; }\n\n.fa-splotch:before {\n content: \"\\f5bc\"; }\n\n.fa-spotify:before {\n content: \"\\f1bc\"; }\n\n.fa-spray-can:before {\n content: \"\\f5bd\"; }\n\n.fa-square:before {\n content: \"\\f0c8\"; }\n\n.fa-square-full:before {\n content: \"\\f45c\"; }\n\n.fa-square-root-alt:before {\n content: \"\\f698\"; }\n\n.fa-squarespace:before {\n content: \"\\f5be\"; }\n\n.fa-stack-exchange:before {\n content: \"\\f18d\"; }\n\n.fa-stack-overflow:before {\n content: \"\\f16c\"; }\n\n.fa-stamp:before {\n content: \"\\f5bf\"; }\n\n.fa-star:before {\n content: \"\\f005\"; }\n\n.fa-star-and-crescent:before {\n content: \"\\f699\"; }\n\n.fa-star-half:before {\n content: \"\\f089\"; }\n\n.fa-star-half-alt:before {\n content: \"\\f5c0\"; }\n\n.fa-star-of-david:before {\n content: \"\\f69a\"; }\n\n.fa-star-of-life:before {\n content: \"\\f621\"; }\n\n.fa-staylinked:before {\n content: \"\\f3f5\"; }\n\n.fa-steam:before {\n content: \"\\f1b6\"; }\n\n.fa-steam-square:before {\n content: \"\\f1b7\"; }\n\n.fa-steam-symbol:before {\n content: \"\\f3f6\"; }\n\n.fa-step-backward:before {\n content: \"\\f048\"; }\n\n.fa-step-forward:before {\n content: \"\\f051\"; }\n\n.fa-stethoscope:before {\n content: \"\\f0f1\"; }\n\n.fa-sticker-mule:before {\n content: \"\\f3f7\"; }\n\n.fa-sticky-note:before {\n content: \"\\f249\"; }\n\n.fa-stop:before {\n content: \"\\f04d\"; }\n\n.fa-stop-circle:before {\n content: \"\\f28d\"; }\n\n.fa-stopwatch:before {\n content: \"\\f2f2\"; }\n\n.fa-store:before {\n content: \"\\f54e\"; }\n\n.fa-store-alt:before {\n content: \"\\f54f\"; }\n\n.fa-strava:before {\n content: \"\\f428\"; }\n\n.fa-stream:before {\n content: \"\\f550\"; }\n\n.fa-street-view:before {\n content: \"\\f21d\"; }\n\n.fa-strikethrough:before {\n content: \"\\f0cc\"; }\n\n.fa-stripe:before {\n content: \"\\f429\"; }\n\n.fa-stripe-s:before {\n content: \"\\f42a\"; }\n\n.fa-stroopwafel:before {\n content: \"\\f551\"; }\n\n.fa-studiovinari:before {\n content: \"\\f3f8\"; }\n\n.fa-stumbleupon:before {\n content: \"\\f1a4\"; }\n\n.fa-stumbleupon-circle:before {\n content: \"\\f1a3\"; }\n\n.fa-subscript:before {\n content: \"\\f12c\"; }\n\n.fa-subway:before {\n content: \"\\f239\"; }\n\n.fa-suitcase:before {\n content: \"\\f0f2\"; }\n\n.fa-suitcase-rolling:before {\n content: \"\\f5c1\"; }\n\n.fa-sun:before {\n content: \"\\f185\"; }\n\n.fa-superpowers:before {\n content: \"\\f2dd\"; }\n\n.fa-superscript:before {\n content: \"\\f12b\"; }\n\n.fa-supple:before {\n content: \"\\f3f9\"; }\n\n.fa-surprise:before {\n content: \"\\f5c2\"; }\n\n.fa-swatchbook:before {\n content: \"\\f5c3\"; }\n\n.fa-swimmer:before {\n content: \"\\f5c4\"; }\n\n.fa-swimming-pool:before {\n content: \"\\f5c5\"; }\n\n.fa-synagogue:before {\n content: \"\\f69b\"; }\n\n.fa-sync:before {\n content: \"\\f021\"; }\n\n.fa-sync-alt:before {\n content: \"\\f2f1\"; }\n\n.fa-syringe:before {\n content: \"\\f48e\"; }\n\n.fa-table:before {\n content: \"\\f0ce\"; }\n\n.fa-table-tennis:before {\n content: \"\\f45d\"; }\n\n.fa-tablet:before {\n content: \"\\f10a\"; }\n\n.fa-tablet-alt:before {\n content: \"\\f3fa\"; }\n\n.fa-tablets:before {\n content: \"\\f490\"; }\n\n.fa-tachometer-alt:before {\n content: \"\\f3fd\"; }\n\n.fa-tag:before {\n content: \"\\f02b\"; }\n\n.fa-tags:before {\n content: \"\\f02c\"; }\n\n.fa-tape:before {\n content: \"\\f4db\"; }\n\n.fa-tasks:before {\n content: \"\\f0ae\"; }\n\n.fa-taxi:before {\n content: \"\\f1ba\"; }\n\n.fa-teamspeak:before {\n content: \"\\f4f9\"; }\n\n.fa-teeth:before {\n content: \"\\f62e\"; }\n\n.fa-teeth-open:before {\n content: \"\\f62f\"; }\n\n.fa-telegram:before {\n content: \"\\f2c6\"; }\n\n.fa-telegram-plane:before {\n content: \"\\f3fe\"; }\n\n.fa-temperature-high:before {\n content: \"\\f769\"; }\n\n.fa-temperature-low:before {\n content: \"\\f76b\"; }\n\n.fa-tencent-weibo:before {\n content: \"\\f1d5\"; }\n\n.fa-terminal:before {\n content: \"\\f120\"; }\n\n.fa-text-height:before {\n content: \"\\f034\"; }\n\n.fa-text-width:before {\n content: \"\\f035\"; }\n\n.fa-th:before {\n content: \"\\f00a\"; }\n\n.fa-th-large:before {\n content: \"\\f009\"; }\n\n.fa-th-list:before {\n content: \"\\f00b\"; }\n\n.fa-the-red-yeti:before {\n content: \"\\f69d\"; }\n\n.fa-theater-masks:before {\n content: \"\\f630\"; }\n\n.fa-themeco:before {\n content: \"\\f5c6\"; }\n\n.fa-themeisle:before {\n content: \"\\f2b2\"; }\n\n.fa-thermometer:before {\n content: \"\\f491\"; }\n\n.fa-thermometer-empty:before {\n content: \"\\f2cb\"; }\n\n.fa-thermometer-full:before {\n content: \"\\f2c7\"; }\n\n.fa-thermometer-half:before {\n content: \"\\f2c9\"; }\n\n.fa-thermometer-quarter:before {\n content: \"\\f2ca\"; }\n\n.fa-thermometer-three-quarters:before {\n content: \"\\f2c8\"; }\n\n.fa-think-peaks:before {\n content: \"\\f731\"; }\n\n.fa-thumbs-down:before {\n content: \"\\f165\"; }\n\n.fa-thumbs-up:before {\n content: \"\\f164\"; }\n\n.fa-thumbtack:before {\n content: \"\\f08d\"; }\n\n.fa-ticket-alt:before {\n content: \"\\f3ff\"; }\n\n.fa-times:before {\n content: \"\\f00d\"; }\n\n.fa-times-circle:before {\n content: \"\\f057\"; }\n\n.fa-tint:before {\n content: \"\\f043\"; }\n\n.fa-tint-slash:before {\n content: \"\\f5c7\"; }\n\n.fa-tired:before {\n content: \"\\f5c8\"; }\n\n.fa-toggle-off:before {\n content: \"\\f204\"; }\n\n.fa-toggle-on:before {\n content: \"\\f205\"; }\n\n.fa-toilet-paper:before {\n content: \"\\f71e\"; }\n\n.fa-toolbox:before {\n content: \"\\f552\"; }\n\n.fa-tooth:before {\n content: \"\\f5c9\"; }\n\n.fa-torah:before {\n content: \"\\f6a0\"; }\n\n.fa-torii-gate:before {\n content: \"\\f6a1\"; }\n\n.fa-tractor:before {\n content: \"\\f722\"; }\n\n.fa-trade-federation:before {\n content: \"\\f513\"; }\n\n.fa-trademark:before {\n content: \"\\f25c\"; }\n\n.fa-traffic-light:before {\n content: \"\\f637\"; }\n\n.fa-train:before {\n content: \"\\f238\"; }\n\n.fa-transgender:before {\n content: \"\\f224\"; }\n\n.fa-transgender-alt:before {\n content: \"\\f225\"; }\n\n.fa-trash:before {\n content: \"\\f1f8\"; }\n\n.fa-trash-alt:before {\n content: \"\\f2ed\"; }\n\n.fa-tree:before {\n content: \"\\f1bb\"; }\n\n.fa-trello:before {\n content: \"\\f181\"; }\n\n.fa-tripadvisor:before {\n content: \"\\f262\"; }\n\n.fa-trophy:before {\n content: \"\\f091\"; }\n\n.fa-truck:before {\n content: \"\\f0d1\"; }\n\n.fa-truck-loading:before {\n content: \"\\f4de\"; }\n\n.fa-truck-monster:before {\n content: \"\\f63b\"; }\n\n.fa-truck-moving:before {\n content: \"\\f4df\"; }\n\n.fa-truck-pickup:before {\n content: \"\\f63c\"; }\n\n.fa-tshirt:before {\n content: \"\\f553\"; }\n\n.fa-tty:before {\n content: \"\\f1e4\"; }\n\n.fa-tumblr:before {\n content: \"\\f173\"; }\n\n.fa-tumblr-square:before {\n content: \"\\f174\"; }\n\n.fa-tv:before {\n content: \"\\f26c\"; }\n\n.fa-twitch:before {\n content: \"\\f1e8\"; }\n\n.fa-twitter:before {\n content: \"\\f099\"; }\n\n.fa-twitter-square:before {\n content: \"\\f081\"; }\n\n.fa-typo3:before {\n content: \"\\f42b\"; }\n\n.fa-uber:before {\n content: \"\\f402\"; }\n\n.fa-uikit:before {\n content: \"\\f403\"; }\n\n.fa-umbrella:before {\n content: \"\\f0e9\"; }\n\n.fa-umbrella-beach:before {\n content: \"\\f5ca\"; }\n\n.fa-underline:before {\n content: \"\\f0cd\"; }\n\n.fa-undo:before {\n content: \"\\f0e2\"; }\n\n.fa-undo-alt:before {\n content: \"\\f2ea\"; }\n\n.fa-uniregistry:before {\n content: \"\\f404\"; }\n\n.fa-universal-access:before {\n content: \"\\f29a\"; }\n\n.fa-university:before {\n content: \"\\f19c\"; }\n\n.fa-unlink:before {\n content: \"\\f127\"; }\n\n.fa-unlock:before {\n content: \"\\f09c\"; }\n\n.fa-unlock-alt:before {\n content: \"\\f13e\"; }\n\n.fa-untappd:before {\n content: \"\\f405\"; }\n\n.fa-upload:before {\n content: \"\\f093\"; }\n\n.fa-usb:before {\n content: \"\\f287\"; }\n\n.fa-user:before {\n content: \"\\f007\"; }\n\n.fa-user-alt:before {\n content: \"\\f406\"; }\n\n.fa-user-alt-slash:before {\n content: \"\\f4fa\"; }\n\n.fa-user-astronaut:before {\n content: \"\\f4fb\"; }\n\n.fa-user-check:before {\n content: \"\\f4fc\"; }\n\n.fa-user-circle:before {\n content: \"\\f2bd\"; }\n\n.fa-user-clock:before {\n content: \"\\f4fd\"; }\n\n.fa-user-cog:before {\n content: \"\\f4fe\"; }\n\n.fa-user-edit:before {\n content: \"\\f4ff\"; }\n\n.fa-user-friends:before {\n content: \"\\f500\"; }\n\n.fa-user-graduate:before {\n content: \"\\f501\"; }\n\n.fa-user-injured:before {\n content: \"\\f728\"; }\n\n.fa-user-lock:before {\n content: \"\\f502\"; }\n\n.fa-user-md:before {\n content: \"\\f0f0\"; }\n\n.fa-user-minus:before {\n content: \"\\f503\"; }\n\n.fa-user-ninja:before {\n content: \"\\f504\"; }\n\n.fa-user-plus:before {\n content: \"\\f234\"; }\n\n.fa-user-secret:before {\n content: \"\\f21b\"; }\n\n.fa-user-shield:before {\n content: \"\\f505\"; }\n\n.fa-user-slash:before {\n content: \"\\f506\"; }\n\n.fa-user-tag:before {\n content: \"\\f507\"; }\n\n.fa-user-tie:before {\n content: \"\\f508\"; }\n\n.fa-user-times:before {\n content: \"\\f235\"; }\n\n.fa-users:before {\n content: \"\\f0c0\"; }\n\n.fa-users-cog:before {\n content: \"\\f509\"; }\n\n.fa-ussunnah:before {\n content: \"\\f407\"; }\n\n.fa-utensil-spoon:before {\n content: \"\\f2e5\"; }\n\n.fa-utensils:before {\n content: \"\\f2e7\"; }\n\n.fa-vaadin:before {\n content: \"\\f408\"; }\n\n.fa-vector-square:before {\n content: \"\\f5cb\"; }\n\n.fa-venus:before {\n content: \"\\f221\"; }\n\n.fa-venus-double:before {\n content: \"\\f226\"; }\n\n.fa-venus-mars:before {\n content: \"\\f228\"; }\n\n.fa-viacoin:before {\n content: \"\\f237\"; }\n\n.fa-viadeo:before {\n content: \"\\f2a9\"; }\n\n.fa-viadeo-square:before {\n content: \"\\f2aa\"; }\n\n.fa-vial:before {\n content: \"\\f492\"; }\n\n.fa-vials:before {\n content: \"\\f493\"; }\n\n.fa-viber:before {\n content: \"\\f409\"; }\n\n.fa-video:before {\n content: \"\\f03d\"; }\n\n.fa-video-slash:before {\n content: \"\\f4e2\"; }\n\n.fa-vihara:before {\n content: \"\\f6a7\"; }\n\n.fa-vimeo:before {\n content: \"\\f40a\"; }\n\n.fa-vimeo-square:before {\n content: \"\\f194\"; }\n\n.fa-vimeo-v:before {\n content: \"\\f27d\"; }\n\n.fa-vine:before {\n content: \"\\f1ca\"; }\n\n.fa-vk:before {\n content: \"\\f189\"; }\n\n.fa-vnv:before {\n content: \"\\f40b\"; }\n\n.fa-volleyball-ball:before {\n content: \"\\f45f\"; }\n\n.fa-volume-down:before {\n content: \"\\f027\"; }\n\n.fa-volume-mute:before {\n content: \"\\f6a9\"; }\n\n.fa-volume-off:before {\n content: \"\\f026\"; }\n\n.fa-volume-up:before {\n content: \"\\f028\"; }\n\n.fa-vote-yea:before {\n content: \"\\f772\"; }\n\n.fa-vr-cardboard:before {\n content: \"\\f729\"; }\n\n.fa-vuejs:before {\n content: \"\\f41f\"; }\n\n.fa-walking:before {\n content: \"\\f554\"; }\n\n.fa-wallet:before {\n content: \"\\f555\"; }\n\n.fa-warehouse:before {\n content: \"\\f494\"; }\n\n.fa-water:before {\n content: \"\\f773\"; }\n\n.fa-weebly:before {\n content: \"\\f5cc\"; }\n\n.fa-weibo:before {\n content: \"\\f18a\"; }\n\n.fa-weight:before {\n content: \"\\f496\"; }\n\n.fa-weight-hanging:before {\n content: \"\\f5cd\"; }\n\n.fa-weixin:before {\n content: \"\\f1d7\"; }\n\n.fa-whatsapp:before {\n content: \"\\f232\"; }\n\n.fa-whatsapp-square:before {\n content: \"\\f40c\"; }\n\n.fa-wheelchair:before {\n content: \"\\f193\"; }\n\n.fa-whmcs:before {\n content: \"\\f40d\"; }\n\n.fa-wifi:before {\n content: \"\\f1eb\"; }\n\n.fa-wikipedia-w:before {\n content: \"\\f266\"; }\n\n.fa-wind:before {\n content: \"\\f72e\"; }\n\n.fa-window-close:before {\n content: \"\\f410\"; }\n\n.fa-window-maximize:before {\n content: \"\\f2d0\"; }\n\n.fa-window-minimize:before {\n content: \"\\f2d1\"; }\n\n.fa-window-restore:before {\n content: \"\\f2d2\"; }\n\n.fa-windows:before {\n content: \"\\f17a\"; }\n\n.fa-wine-bottle:before {\n content: \"\\f72f\"; }\n\n.fa-wine-glass:before {\n content: \"\\f4e3\"; }\n\n.fa-wine-glass-alt:before {\n content: \"\\f5ce\"; }\n\n.fa-wix:before {\n content: \"\\f5cf\"; }\n\n.fa-wizards-of-the-coast:before {\n content: \"\\f730\"; }\n\n.fa-wolf-pack-battalion:before {\n content: \"\\f514\"; }\n\n.fa-won-sign:before {\n content: \"\\f159\"; }\n\n.fa-wordpress:before {\n content: \"\\f19a\"; }\n\n.fa-wordpress-simple:before {\n content: \"\\f411\"; }\n\n.fa-wpbeginner:before {\n content: \"\\f297\"; }\n\n.fa-wpexplorer:before {\n content: \"\\f2de\"; }\n\n.fa-wpforms:before {\n content: \"\\f298\"; }\n\n.fa-wpressr:before {\n content: \"\\f3e4\"; }\n\n.fa-wrench:before {\n content: \"\\f0ad\"; }\n\n.fa-x-ray:before {\n content: \"\\f497\"; }\n\n.fa-xbox:before {\n content: \"\\f412\"; }\n\n.fa-xing:before {\n content: \"\\f168\"; }\n\n.fa-xing-square:before {\n content: \"\\f169\"; }\n\n.fa-y-combinator:before {\n content: \"\\f23b\"; }\n\n.fa-yahoo:before {\n content: \"\\f19e\"; }\n\n.fa-yandex:before {\n content: \"\\f413\"; }\n\n.fa-yandex-international:before {\n content: \"\\f414\"; }\n\n.fa-yelp:before {\n content: \"\\f1e9\"; }\n\n.fa-yen-sign:before {\n content: \"\\f157\"; }\n\n.fa-yin-yang:before {\n content: \"\\f6ad\"; }\n\n.fa-yoast:before {\n content: \"\\f2b1\"; }\n\n.fa-youtube:before {\n content: \"\\f167\"; }\n\n.fa-youtube-square:before {\n content: \"\\f431\"; }\n\n.fa-zhihu:before {\n content: \"\\f63f\"; }\n\n.sr-only {\n border: 0;\n clip: rect(0, 0, 0, 0);\n height: 1px;\n margin: -1px;\n overflow: hidden;\n padding: 0;\n position: absolute;\n width: 1px; }\n\n.sr-only-focusable:active, .sr-only-focusable:focus {\n clip: auto;\n height: auto;\n margin: 0;\n overflow: visible;\n position: static;\n width: auto; }\n@font-face {\n font-family: 'Font Awesome 5 Brands';\n font-style: normal;\n font-weight: normal;\n src: url($font-path + \"fa-brands-400.eot\");\n src: url($font-path + \"fa-brands-400.eot?#iefix\") format(\"embedded-opentype\"), url($font-path + \"fa-brands-400.woff2\") format(\"woff2\"), url($font-path + \"fa-brands-400.woff\") format(\"woff\"), url($font-path + \"fa-brands-400.ttf\") format(\"truetype\"), url($font-path + \"fa-brands-400.svg#fontawesome\") format(\"svg\"); }\n\n.fab {\n font-family: 'Font Awesome 5 Brands'; }\n@font-face {\n font-family: 'Font Awesome 5 Free';\n font-style: normal;\n font-weight: 400;\n src: url($font-path + \"fa-regular-400.eot\");\n src: url($font-path + \"fa-regular-400.eot?#iefix\") format(\"embedded-opentype\"), url($font-path + \"fa-regular-400.woff2\") format(\"woff2\"), url($font-path + \"fa-regular-400.woff\") format(\"woff\"), url($font-path + \"fa-regular-400.ttf\") format(\"truetype\"), url($font-path + \"fa-regular-400.svg#fontawesome\") format(\"svg\"); }\n\n.far {\n font-family: 'Font Awesome 5 Free';\n font-weight: 400; }\n@font-face {\n font-family: 'Font Awesome 5 Free';\n font-style: normal;\n font-weight: 900;\n src: url($font-path + \"fa-solid-900.eot\");\n src: url($font-path + \"fa-solid-900.eot?#iefix\") format(\"embedded-opentype\"), url($font-path + \"fa-solid-900.woff2\") format(\"woff2\"), url($font-path + \"fa-solid-900.woff\") format(\"woff\"), url($font-path + \"fa-solid-900.ttf\") format(\"truetype\"), url($font-path + \"fa-solid-900.svg#fontawesome\") format(\"svg\"); }\n\n.fa,\n.fas {\n font-family: 'Font Awesome 5 Free';\n font-weight: 900; }\n",".tykon:before {\n font-family: \"tykon\" !important;\n font-style: normal !important;\n font-weight: normal !important;\n font-variant: normal !important;\n text-transform: none !important;\n speak: none;\n line-height: 1;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\n.tykon-arrowdown:before {\n content: \"\\61\";\n}\n.tykon-arrowleft:before {\n content: \"\\62\";\n}\n.tykon-arrowright:before {\n content: \"\\63\";\n}\n.tykon-arrowup:before {\n content: \"\\64\";\n}\n.tykon-doublearrowdown:before {\n content: \"\\65\";\n}\n.tykon-filter:before {\n content: \"\\66\";\n}\n.tykon-graph1:before {\n content: \"\\67\";\n}\n.tykon-graph2:before {\n content: \"\\68\";\n}\n.tykon-label:before {\n content: \"\\69\";\n}\n.tykon-reload:before {\n content: \"\\6a\";\n}\n.tykon-select:before {\n content: \"\\6b\";\n}\n.tykon-target:before {\n content: \"\\6c\";\n}\n.tykon-undo:before {\n content: \"\\6d\";\n}\n.tykon-deployment:before {\n content: \"\\6e\";\n}\n.tykon-team:before {\n content: \"\\6f\";\n}\n.tykon-overview:before {\n content: \"\\70\";\n}\n.tykon-loadout:before {\n content: \"\\71\";\n}\n.tykon-entitlement:before {\n content: \"\\72\";\n}\n.tykon-users:before {\n content: \"\\73\";\n}\n.tykon-doublearrowdown:before {\n content: \"\\65\";\n}\n.tykon-arrowsort:before {\n content: \"\\57\";\n}\n.tykon-check:before {\n content: \"\\56\";\n}\n.tykon-copy:before {\n content: \"\\43\";\n}\n.tykon-delete:before {\n content: \"\\55\";\n}\n.tykon-download:before {\n content: \"\\4c\";\n}\n.tykon-draft:before {\n content: \"\\44\";\n}\n.tykon-edit:before {\n content: \"\\45\";\n}\n.tykon-filter:before {\n content: \"\\66\";\n}\n.tykon-graphq2:before {\n content: \"\\68\";\n}\n.tykon-help:before {\n content: \"\\3f\";\n}\n.tykon-label:before {\n content: \"\\69\";\n}\n.tykon-link:before {\n content: \"\\52\";\n}\n.tykon-lock1:before {\n content: \"\\59\";\n}\n.tykon-lock2:before {\n content: \"\\5A\";\n}\n.tykon-notifications:before {\n content: \"\\4E\";\n}\n.tykon-plus:before {\n content: \"\\2B\";\n}\n.tykon-profile:before {\n content: \"\\50\";\n}\n.tykon-reload:before {\n content: \"\\6A\";\n}\n.tykon-search:before {\n content: \"\\4F\";\n}\n.tykon-select:before {\n content: \"\\6B\";\n}\n.tykon-settings:before {\n content: \"\\53\";\n}\n.tykon-target:before {\n content: \"\\6C\";\n}\n.tykon-undo:before {\n content: \"\\6D\";\n}\n.tykon-warning:before {\n content: \"\\21\";\n}\n.tykon-x:before {\n content: \"\\58\";\n}\n.tykon-waiting:before {\n content: \"\\54\";\n}\n.tykon-fullscreen:before {\n content: \"\\e000\";\n}\n.tykon-fullscreen-exit:before {\n content: \"\\e001\";\n}\n.tykon-time:before {\n content: \"\\74\";\n}\n","h1, h2, h3, h4, h5, h6 {\n margin-bottom: $headings-margin-bottom;\n font-family: $headings-font-family;\n font-weight: $headings-font-weight;\n color: $headings-color;\n}\n\nlabel {\n display: inline-block;\n max-width: 100%;\n margin-bottom: 5px;\n color: $label-color;\n}\n\nh1 {\n font-size: text-scale('xxl');\n line-height: line-height('xxl');\n}\nh2 {\n font-size: text-scale('xl');\n line-height: line-height('xl');\n}\nh3 {\n font-size: text-scale('lg');\n line-height: line-height('lg');\n}\nh4 {\n font-size: text-scale('md');\n line-height: line-height('md');\n}\nh5 {\n font-size: text-scale('sm');\n line-height: line-height('sm');\n}\nh6 {\n font-size: text-scale('xs');\n line-height: line-height('xs');\n}\n\np,\nlabel {\n font-size: text-scale('sm');\n line-height: line-height('sm');\n font-family: $font-family-regular;\n}\n\nstrong {\n font-family: $font-family-bold;\n}\n\na:not(.tyk-button) {\n cursor: pointer;\n color: $text-color;\n font-family: $font-family-regular;\n \n &.link--bold {\n font-family: $font-family-bold;\n }\n\n + a {\n margin-left: 5px;\n }\n\n i {\n font-size: 9px\n }\n}\n\np,\nlabel {\n a {\n font-size: text-scale('sm');\n text-decoration: underline;\n }\n}\n\n.font-family-regular {\n font-family: $font-family-regular;\n}\n.font-family-medium {\n font-family: $font-family-medium;\n}\n.font-family-bold {\n font-family: $font-family-bold;\n}\n.heading-font-family-regular {\n font-family: $headings-font-family-regular;\n}\n.heading-font-family-medium {\n font-family: $headings-font-family-medium;\n}\n.heading-font-family-bold {\n font-family: $headings-font-family-bold;\n}\n\n.text {\n &--primary {\n color: theme-color('primary', 'base');\n }\n &--danger {\n color: theme-color('danger', 'base');\n }\n &--info {\n color: theme-color('info', 'base');\n }\n &-warning {\n color: theme-color('warning', 'base');\n }\n &--medium {\n font-family: $font-family-medium;\n }\n &--bold {\n font-family: $font-family-bold;\n }\n &--uppercase {\n text-transform: uppercase;\n }\n &--ellipsis {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n &--underline {\n text-decoration: underline;\n }\n}\n\ntd.text-ellipsis {\n max-width: 250px;\n}\n\n.section-title {\n font-family: $headings-font-family-bold;\n margin-bottom: 5px;\n\n .tyk-icon {\n margin-left: 5px;\n }\n}\n\n.sub-section-title {\n margin-bottom: 5px;\n font-family: $font-family-medium;\n font-size: text-scale('md');\n line-height: line-height('md');\n\n .tyk-icon {\n margin-left: 5px;\n }\n}\n\n.section-group-title {\n margin-bottom: 5px;\n font-family: $font-family-bold;\n font-size: text-scale('sm');\n line-height: line-height('sm');\n text-transform: uppercase;\n\n .tyk-icon {\n margin-left: 5px;\n }\n}\n\n.text {\n &--default-light {\n color: theme-color('default', 'light') !important;\n }\n &--default {\n color: theme-color('default', 'base') !important;\n }\n &--primary {\n color: theme-color('primary', 'base') !important;\n }\n &--danger {\n color: theme-color('danger', 'base') !important;\n }\n &--success {\n color: theme-color('success', 'base') !important;\n }\n &--warning {\n color: theme-color('warning', 'base') !important;\n }\n}","@import 'mixins';\n@import 'variables';\n\n.tyk-form-section__title {\n font-size: text-scale('base');\n margin: map-get($spacing, 'xs') 0 map-get($spacing, 'base') 0;\n\n &--light {\n color: theme-color('background', 'dark');\n }\n}\n\n.tyk-form-group {\n margin-bottom: $form-group-margin-bottom;\n\n &.has-error > .tyk-form-control__wrapper > .tyk-form-control,\n &.has-error > .tyk-form-control__wrapper > .tyk-input-group > .tyk-form-control,\n &.has-error .tyk-file-input__wrapper > .tyk-form-control {\n border: $error-border;\n border-left: $error-border-left;\n outline: none;\n\n &:focus {\n border-left: 2px solid theme-color('danger', 'dark');\n border-color: theme-color('danger', 'dark');\n outline: none;\n }\n }\n\n label {\n font-family: $font-family-medium;\n }\n\n &--inline {\n align-items: stretch;\n display: flex;\n flex-wrap: nowrap;\n\n .tyk-form-control__wrapper {\n flex: 1;\n }\n\n label {\n display: flex;\n white-space: nowrap;\n margin-right: map-get($spacing, 'md');\n margin-top: 14px;\n }\n\n input,\n select {\n display: flex;\n }\n\n .tyk-form-control__help-block {\n display: flex;\n margin-left: auto;\n }\n }\n\n &--default {\n @include form-group-variant(\n $form-default-color,\n $text-color\n );\n }\n\n &--primary {\n @include form-group-variant(\n $form-primary-color\n );\n }\n\n &--success {\n @include form-group-variant(\n $form-success-color\n );\n }\n\n &--rounded-corners {\n &.has-error > .tyk-form-control__wrapper > .tyk-form-control {\n border-left: $error-border;\n\n &:focus {\n border-left: $error-border;\n outline: none;\n }\n }\n\n .tyk-form-control {\n border-radius: $general-border-radius;\n }\n }\n}\n\n.tyk-form-group--addon-right input {\n border-right: 0 !important;\n padding-right: 0;\n}\n\n.tyk-form-group--addon-left input {\n border-left: 0 !important;\n padding-left: 0;\n}\n\n.tyk-form-group--rounded-corners.tyk-form-group--addon-right {\n input {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n }\n .tyk-input-group__addon {\n background: $form-control-addon-background-color;\n border-top-right-radius: $general-border-radius;\n border-bottom-right-radius: $general-border-radius;\n color: $text-color;\n }\n}\n\n.tyk-form-group--rounded-corners.tyk-form-group--addon-left {\n input {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n border-left: 0 !important;\n }\n .tyk-input-group__addon {\n background: $form-control-addon-background-color;\n border-top-left-radius: $general-border-radius;\n border-bottom-left-radius: $general-border-radius;\n color: $text-color;\n }\n}\n\n.tyk-form-control__error-message {\n font-family: $font-family-regular;\n font-size: text-scale('xs');\n line-height: line-height('xs');\n margin-top: 5px;\n padding: $error-message-padding;\n position: relative;\n\n &:before {\n content: '!';\n background: theme-color('danger', 'base');\n color: white;\n font-family: $font-family-bold;\n border-radius: 8px;\n display: inline-block;\n margin-right: 5px;\n padding: 0px 7px;\n }\n}\n\n.tyk-input-group {\n align-items: center;\n display: flex;\n outline: none;\n\n &__addon {\n align-items: center;\n background-color: $form-control-addon-background-color;\n border: $form-control-border;\n display: flex;\n height: $form-control-height;\n padding: $form-control-addon-padding-top $form-control-addon-padding-right $form-control-addon-padding-bottom $form-control-addon-padding-left;\n\n &:first-child {\n border-right: 0;\n }\n\n &:last-child {\n border-left: 0;\n }\n }\n}\n\n.tyk-form-control {\n font-family: $font-family-medium;\n font-size: text-scale('sm');\n line-height: line-height('sm');\n border: $form-control-border;\n background-color: white;\n color: $text-color;\n display: block;\n height: $form-control-height;\n padding: $form-control-padding-top $form-control-padding-right $form-control-padding-bottom $form-control-padding-left;\n transition: all .2s linear;\n width: 100%;\n\n &[disabled] {\n background-color: $form-control-disabled-background-color;\n\n .tyk-input-group__addon {\n background-color: $form-control-disabled-background-color;\n }\n\n cursor: not-allowed;\n }\n\n &::placeholder {\n font-family: $form-control-placeholder-font-family;\n color: $form-control-placeholder-color;\n }\n\n &:focus,\n &:active {\n outline: none;\n border: $form-control-border-focus !important;\n\n + .tyk-input-group__addon {\n border: $form-control-border-focus !important;\n border-left: none !important;\n }\n }\n\n &__help-block {\n color: $help-block-color;\n font-style: $help-block-font-style;\n font-family: $font-family-regular;\n font-size: text-scale('xs');\n line-height: line-height('xs');\n padding: $help-block-padding;\n margin: 5px 0 0 0;\n }\n}\n\nselect {\n border-radius: 0;\n -webkit-appearance: none;\n}\n\n.inline-form-wrapper {\n align-items: center;\n display: flex;\n width: 100%;\n\n .inline-form {\n width: 100%;\n }\n\n > button {\n margin-left: 10px;\n margin-bottom: map-get($spacing, 'base');\n }\n}\n\n.tyk-checkbox,\n.tyk-radio {\n margin: 10px 0;\n\n label {\n font-family: $font-family-medium;\n }\n\n input {\n margin: 0 5px 0 0;\n }\n\n &--inline {\n display: inline-flex;\n margin-left: map-get($spacing, 'base');\n\n &:first-child {\n margin-left: 0;\n }\n }\n}\n\n.tyk-inline-form {\n align-items: center;\n display: flex;\n flex-wrap: wrap;\n\n .tyk-form-group {\n flex: 1;\n margin-left: map-get($spacing, 'md');\n min-width: 200px;\n\n &:first-child {\n margin-left:0\n }\n }\n\n > .tyk-button {\n margin-left: map-get($spacing, 'md');\n margin-bottom: map-get($spacing, 'base');\n }\n}\n","@import './variables';\n\n%tyk-accordion__trigger {\n background: none;\n border: none;\n cursor: pointer;\n display: flex;\n font-size: $accordion-item-header-font-size;\n outline: none;\n padding: $accordion-item-header-padding-y $accordion-item-header-padding-x;\n width: 100%;\n\n .tyk-icon {\n margin-left: auto;\n }\n}\n\n.tyk-accordion {\n &__item {\n display: grid;\n\n &--trigger-position-left {\n grid-template-columns: $accordion-item-outside-trigger-width auto;\n grid-template-areas:\n \"trigger header\"\n \"trigger content\";\n }\n\n &--trigger-position-right {\n grid-template-columns: auto $accordion-item-outside-trigger-width;\n grid-template-areas:\n \"header trigger\"\n \"content trigger\";\n }\n\n &--trigger-in-header {\n grid-template-columns: auto;\n grid-template-areas:\n \"header\"\n \"content\";\n }\n }\n\n &__trigger-wrapper {\n grid-area: trigger;\n display: flex;\n align-items: flex-start;\n justify-content: center;\n\n .tyk-icon {\n margin-left: auto;\n margin-right: auto;\n }\n }\n\n &__trigger {\n @extend %tyk-accordion__trigger;\n }\n\n &__item-header {\n grid-area: header;\n\n > button {\n @extend %tyk-accordion__trigger;\n }\n }\n\n &__trigger--disabled {\n color: theme-color('background', 'base');\n }\n\n &__item-header.tyk-accordion__arrow-trigger {\n align-items: center;\n display: flex;\n\n > div {\n flex: 1;\n }\n\n > button {\n margin-left: auto;\n width: auto;\n }\n }\n\n &__item-content {\n grid-area: content;\n }\n}\n",":root {\n --tooltip-max-width: 450px;\n}","@import './variables';\n\n.tyk-tooltip {\n display: flex;\n align-items: center;\n background-color: theme-color('primary', 'light');\n border: 2px solid theme-color('primary', 'base');\n border-radius: $general-border-radius;\n max-width: var(--tooltip-max-width);\n padding: map-get($spacing, 'md');\n\n > .tyk-icon:first-child {\n width: 32px;\n height: 32px;\n border-radius: 50%;\n color: white;\n background-color: theme-color('default', 'base-light');\n\n &:before {\n display: flex;\n width: 100%;\n height: 100%;\n align-items: center;\n justify-content: center;\n }\n }\n\n > .tyk-icon + .tyk-tooltip__content {\n margin-left: map-get($spacing, 'md');\n }\n\n &__content {\n color: theme-color('default', 'dark');\n word-break: break-word;\n word-wrap: break-word;\n\n + .tyk-icon {\n margin-left: map-get($spacing, 'md');\n }\n }\n\n > .tyk-icon:last-child {\n cursor: pointer;\n }\n}\n","@import '../../../common/sass/variables';\n@import '../../../common/sass/mixins';\n@import './variables';\n@import './mixins';\n\n.tyk-button {\n background-color: transparent;\n border: none;\n color: white;\n cursor: pointer;\n display: inline-block;\n font-family: $button-font-family;\n text-align: center;\n text-transform: uppercase;\n text-decoration: none;\n transition: all .2s linear;\n user-select: none;\n vertical-align: middle;\n white-space: nowrap;\n\n + .tyk-button,\n + .tyk-dropdown,\n + .tyk-toggle {\n margin-left: map-get($spacing, 'sm');\n }\n\n span + i {\n margin-left: map-get($spacing, 'sm');\n }\n\n i + span {\n margin-left: map-get($spacing, 'sm');\n }\n\n &.disabled {\n cursor: not-allowed;\n opacity: 0.7;\n }\n\n &:hover {\n color: white;\n text-decoration: none;\n }\n\n &:focus {\n outline: none;\n }\n\n @include button-size(\n $padding-y-button-md,\n $padding-x-button-md,\n text-scale('sm'),\n $line-height-button-md,\n $button-border-radius\n );\n\n &--white {\n @include button-variant(\n white,\n transparent,\n theme-color('default', 'base'),\n theme-color('background', 'dark'),\n theme-color('background', 'dark'),\n theme-color('background', 'dark'),\n theme-color('background', 'dark'),\n white\n );\n }\n\n &--primary {\n @include button-variant(\n $button-primary-color,\n $button-primary-color,\n $button-primary-text-color,\n $button-primary-hover-color\n );\n\n &-link {\n @include button-variant-link(\n $button-primary-color\n );\n }\n\n &-outline {\n @include button-variant-outline(\n $button-primary-color,\n );\n }\n\n &-gradient {\n @include button-variant-gradient(\n $button-primary-gradient-start-color,\n $button-primary-gradient-end-color\n );\n }\n }\n &--success {\n @include button-variant(\n $button-success-color,\n $button-success-color,\n white,\n $button-success-hover-color,\n );\n\n &-link {\n @include button-variant-link(\n $button-success-color\n );\n }\n\n &-outline {\n @include button-variant-outline(\n $button-success-color\n );\n }\n\n &-gradient {\n @include button-variant-gradient(\n $button-success-gradient-start-color,\n $button-success-gradient-end-color\n );\n }\n }\n &--danger {\n @include button-variant(\n $button-danger-color,\n $button-danger-color,\n white,\n $button-danger-hover-color\n );\n\n &-link {\n @include button-variant-link(\n $button-danger-color\n );\n }\n\n &-outline {\n @include button-variant-outline(\n $button-danger-color\n );\n }\n\n &-gradient {\n @include button-variant-gradient(\n $button-danger-gradient-start-color,\n $button-danger-gradient-end-color\n );\n }\n }\n\n &--warning {\n @include button-variant(\n $button-warning-color,\n transparent,\n $button-warning-font-color\n );\n\n &-link {\n @include button-variant-link(\n $button-warning-color\n );\n }\n\n &-outline {\n @include button-variant-outline(\n $button-warning-color\n );\n }\n\n &-gradient {\n @include button-variant-gradient(\n $button-warning-gradient-start-color,\n $button-warning-gradient-end-color,\n $button-warning-font-color\n );\n }\n }\n &--info {\n @include button-variant(\n $button-info-color\n );\n\n &-link {\n @include button-variant-link(\n $button-info-color\n );\n }\n\n &-outline {\n @include button-variant-outline(\n $button-info-color\n );\n }\n\n &-gradient {\n @include button-variant-gradient(\n $button-info-gradient-start-color,\n $button-info-gradient-end-color,\n $button-info-font-color\n );\n }\n }\n\n &--default {\n @include button-variant(\n $button-default-color,\n $button-default-color,\n white,\n $button-default-hover-color\n );\n\n &-link {\n @include button-variant-link(\n $text-color\n );\n }\n\n &-outline {\n @include button-variant-outline(\n $button-default-color\n );\n }\n\n &-gradient {\n @include button-variant-gradient(\n $button-default-gradient-start-color,\n $button-default-gradient-end-color\n );\n }\n }\n\n &--sm {\n @include button-size(\n $padding-y-button-sm,\n $padding-x-button-sm,\n text-scale('xs'),\n line-height('xs'),\n $button-border-radius\n );\n }\n\n &--md {\n @include button-size(\n $padding-y-button-md,\n $padding-x-button-md,\n text-scale('sm'),\n line-height('sm'),\n $button-border-radius\n );\n }\n &--lg {\n @include button-size(\n $padding-y-button-lg,\n $padding-x-button-lg,\n text-scale('md'),\n line-height('md'),\n $button-border-radius\n );\n }\n\n &--icon-only {\n border-radius: $general-border-radius;\n padding: 0;\n line-height: map-get($spacing, 'md');\n width: 24px;\n\n &:hover {\n border-radius: $general-border-radius;\n }\n }\n\n &--fit {\n height: auto;\n width: auto;\n line-height: normal;\n }\n\n &--no-style {\n background: transparent;\n border: none;\n color: $text-color;\n\n &:hover {\n background: transparent;\n border: none;\n color: $text-color;\n }\n }\n}\n","@mixin button-size($padding-y, $padding-x, $font-size, $line-height, $border-radius) {\n padding: $padding-y $padding-x;\n font-size: $font-size;\n line-height: $line-height;\n border-radius: $border-radius;\n}\n\n@mixin button-variant(\n $background,\n $border: $background,\n $color: white,\n $hover-background: darken($background, 7.5%),\n $hover-border: darken($border, 10%),\n $active-background: darken($background, 10%),\n $active-border: darken($border, 12.5%),\n $hover-color: $color\n) {\n background-color: $background;\n color: $color;\n border: $general-border-width solid $border;\n\n &:hover {\n background-color: $hover-background;\n color: $hover-color;\n }\n}\n\n@mixin button-variant-link(\n $color: white\n) {\n background-color: transparent;\n border: $general-border-width solid transparent;\n color: $color;\n\n &:hover {\n background-color: transparent;\n color: $color;\n border-color: $color;\n text-decoration: underline;\n }\n}\n\n@mixin button-variant-outline(\n $border,\n $color: $border,\n $hover-color: white,\n $hover-background: $border,\n $hover-border: $border,\n $active-background: darken($border, 10%),\n $active-border: darken($border, 12.5%)\n) {\n border: $general-border-width solid $border;\n background-color: transparent;\n color: $color;\n\n &:hover {\n background-color: $border;\n color: $hover-color;\n }\n\n &.disabled {\n color: $border;\n\n &:hover {\n background-color: transparent;\n color: $border;\n }\n }\n}\n\n@mixin button-variant-gradient ($left-color, $right-color, $color: white, $hover-enabled: true) {\n border-image: linear-gradient(to right, $left-color, $right-color, $left-color) 0 round;\n background: transparent linear-gradient(to right, $left-color, $right-color, $left-color);\n background-origin: border-box;\n background-clip: border-box;\n background-size: 200% auto;\n background-position: 0 0;\n color: $color;\n\n @if $hover-enabled {\n &:hover,\n &:active,\n &:active:focus {\n border-image: linear-gradient(to right, $left-color, $right-color, $left-color) 0 round;\n background: transparent linear-gradient(to right, $left-color, $right-color, $left-color);\n background-position: 100% 0;\n background-size: 200% auto;\n background-clip: border-box;\n\n &.disabled {\n border-image: linear-gradient(to right, $left-color, $right-color, $left-color) 0 round;\n background: transparent linear-gradient(to right, $left-color, $right-color, $left-color);\n background-origin: border-box;\n background-clip: border-box;\n background-size: 200% auto;\n background-position: 0 0;\n color: $color;\n }\n }\n }\n}\n","$button-font-family: $font-family-bold !default;\n$button-border-radius: map-get($spacing, 'md') !default;\n\n$padding-y-button-sm: 3px !default;\n$padding-x-button-sm: map-get($spacing, 'base') !default;\n$padding-y-button-md: 8px !default;\n$padding-x-button-md: 23px !default;\n$padding-y-button-lg: 13px !default;\n$padding-x-button-lg: 23px !default;\n\n$line-height-button-sm: line-height('xs') !default;\n$line-height-button-md: line-height('md') !default;\n$line-height-button-lg: line-height('lg') !default;\n\n$button-default-color: theme-color('default', 'base') !default;\n$button-default-hover-color: theme-color('default', 'dark') !default;\n$button-default-gradient-start-color: theme-color('default', 'base') !default;\n$button-default-gradient-end-color: theme-color('default', 'dark') !default;\n\n$button-primary-color: theme-color('default', 'base-light') !default;\n$button-primary-hover-color: theme-color('default', 'dark') !default;\n$button-primary-text-color: white !default;\n$button-primary-gradient-start-color: theme-color('primary', 'base') !default;\n$button-primary-gradient-end-color: theme-color('primary', 'dark') !default;\n\n$button-success-color: theme-color('success', 'base') !default;\n$button-success-hover-color: theme-color('success', 'dark') !default;\n$button-success-gradient-start-color: theme-color('success', 'base') !default;\n$button-success-gradient-end-color: theme-color('success', 'dark') !default;\n\n$button-danger-color: theme-color('danger', 'base') !default;\n$button-danger-hover-color: theme-color('danger', 'dark') !default;\n$button-danger-gradient-start-color: theme-color('danger', 'base') !default;\n$button-danger-gradient-end-color: theme-color('danger', 'dark') !default;\n\n$button-warning-color: theme-color('warning', 'base') !default;\n$button-warning-font-color: white !default;\n$button-warning-gradient-start-color: theme-color('warning', 'base') !default;\n$button-warning-gradient-end-color: theme-color('warning', 'light') !default;\n\n$button-info-color: theme-color('info', 'base') !default;\n$button-info-font-color: $text-color;\n$button-info-gradient-start-color: theme-color('info', 'base') !default;\n$button-info-gradient-end-color: theme-color('info', 'light') !default;\n\n$button-icon-only-background-hover: theme-color('background', 'light') !default;\n",".tyk-button-group__wrapper {\n display: inline-block;\n position: relative;\n vertical-align: middle;\n\n label {\n font-family: $font-family-medium;\n }\n\n .tyk-button-group {\n display: flex;\n\n > .tyk-button-group:not(:first-child) {\n > .tyk-button {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n }\n }\n\n > .tyk-button-group:not(:last-child) {\n > .tyk-button {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n }\n }\n\n .tyk-button {\n border-radius: 0;\n\n + .tyk-button {\n margin-left: 0;\n }\n\n + .tyk-dropdown {\n margin-left: 0;\n }\n\n &:first-child {\n border-top-left-radius: map-get($spacing, 'md');\n border-bottom-left-radius: map-get($spacing, 'md');\n }\n\n &:last-child {\n border-top-right-radius: map-get($spacing, 'md');\n border-bottom-right-radius: map-get($spacing, 'md');\n }\n }\n }\n}\n",".tyk-chart__wrapper {\n position: relative;\n}\n\n.tyk-chart--no-data,\n.tyk-chart--loading-chart {\n filter: blur(map-get($spacing, 'sm'));\n -webkit-filter: blur(map-get($spacing, 'sm'));\n}\n",".collapse-exit,\n.collapse-exit-active,\n.collapse-exit-done {\n height: 0px;\n}\n\n.collapse-wrapper {\n overflow: hidden;\n transition: all .2s;\n}\n\n.collapse-horizontal-exit,\n.collapse-horizontal-exit-active,\n.collapse-horizontal-exit-done {\n width: 0px;\n}\n\n.collapse-horizontal-enter,\n.collapse-horizontal-enter-active,\n.collapse-horizontal-enter-done {\n width: 100%;\n}\n",".tyk-copy-to-clipboard {\n position: absolute;\n left: -1000px;\n top: -1000px;\n}","@import './variables';\n\n.tyk-fixed-wrapper {\n left: $fixed-wrapper-left;\n position: sticky;\n right: $fixed-wrapper-right;\n top: $fixed-wrapper-top;\n z-index: 8;\n\n &--scrolled {\n box-shadow: 2px 2px 5px rgba(0, 0, 0, 0.1);\n }\n}\n","$fixed-wrapper-top: 0 !default;\n$fixed-wrapper-left: 0 !default;\n$fixed-wrapper-right: 0 !default;\n",".floating-container {\n position: fixed;\n top: -9999px;\n overflow: auto;\n z-index: $modal-z-index;\n}",".tyk-icon {\n + .tyk-icon {\n margin-left: map-get($spacing, 'sm');\n }\n}\n",".tyk-infinite-scroller {\n height: 100%;\n overflow: hidden;\n position: relative;\n\n .loading {\n background: linear-gradient(180deg, rgba(255,255,255,0), rgba(255,255,255,1));\n justify-content: center;\n bottom: 0;\n display: flex;\n left: 0;\n padding: map-get($spacing, 'base') 0;\n right: 0;\n top: auto;\n width: 100%;\n }\n\n &__wrapper {\n height: 100%;\n overflow-y: auto;\n }\n}\n","@import '../../../common/sass/variables';\n@import '../../../common/sass/mixins';\n\n.tyk-info-note {\n border-radius: 0;\n position: relative;\n\n p + p {\n margin-top: map-get($spacing, 'base');\n }\n\n &:after {\n content: '';\n border-style: solid;\n border-width: 0 map-get($spacing, 'md') map-get($spacing, 'md') 0;\n border-color: transparent theme-color(\"info\", \"base\") transparent transparent;\n height: 0;\n position: absolute;\n right: 0;\n top: 0;\n width: 0;\n }\n\n .tyk-message {\n border-radius: 0;\n padding-top: 40px;\n padding-bottom: 40px;\n }\n}\n","@import '../../../common/sass/variables';\n@import '../../../common/sass/mixins';\n\n.tyk-loading__wrapper {\n background: rgba(255, 255, 255, 0.6);\n bottom: 0;\n position: absolute;\n left: 0;\n right: 0;\n top: 0;\n z-index: 99;\n}\n\n.loader-wrapper {\n min-height: 100px;\n position: relative;\n}\n\n.loading {\n position: absolute;\n top: calc(50% - map-get($spacing, 'sm'));\n left: 50%;\n\n &.relative {\n left: auto;\n padding: 25px;\n position: relative;\n text-align: center;\n top: auto;\n width: 100%;\n }\n}\n\n.loading-bar {\n display: inline-block;\n width: 4px;\n height: map-get($spacing, 'md');\n border-radius: 4px;\n animation: loading 1s ease-in-out infinite;\n margin-left: 2px;\n}\n.loading-bar:nth-child(1) {\n animation-delay: 0;\n background-color: theme-color('success', 'base');\n opacity: 1;\n}\n.loading-bar:nth-child(2) {\n animation-delay: 0.09s;\n background-color: theme-color('success', 'base');\n opacity: 0.80;\n}\n.loading-bar:nth-child(3) {\n animation-delay: .18s;\n background-color: theme-color('success', 'base');\n opacity: 0.60;\n}\n.loading-bar:nth-child(4) {\n animation-delay: .27s;\n background-color: theme-color('success', 'base');\n opacity: 0.40;\n}\n\n@keyframes loading {\n 0% {\n transform: scale(1);\n }\n 20% {\n transform: scale(1, 2.2);\n }\n 40% {\n transform: scale(1);\n }\n}\n",".tyk-list {\n border: $general-border-width solid theme-color('default', 'light');\n border-radius: $general-border-radius;\n font-size: text-scale('sm');\n list-style-type: none;\n margin: 0;\n max-height: 191px;\n padding: 0;\n overflow: auto;\n\n &--with-inline-label {\n display: flex;\n\n > label {\n margin-right: map-get($spacing, 'md');\n }\n }\n\n li {\n border-bottom: 1px solid theme-color('default', 'light');\n padding: map-get($spacing, 'sm') map-get($spacing, 'md');\n font-family: $font-family-medium;\n\n &:last-child {\n border: none;\n }\n }\n\n &--default {\n border-color: theme-color('default', 'light');\n }\n\n &--primary {\n border-color: theme-color('primary', 'base');\n\n li {\n border-color: theme-color('primary', 'light');\n color: $text-color;\n }\n }\n\n &--primary-light {\n border-color: theme-color('primary', 'light');\n\n li {\n border-color: theme-color('primary', 'light');\n color: $text-color;\n }\n }\n\n &--success {\n border-color: theme-color('success', 'base');\n color: theme-color('success', 'base');\n\n li {\n border-color: theme-color('success', 'base');\n }\n }\n\n &--danger {\n border-color: theme-color('danger', 'base');\n color: $text-color;\n\n li {\n border-color: theme-color('danger', 'light');\n }\n }\n}\n\nul.tyk-list--inline {\n align-items: center;\n display: flex;\n\n li {\n padding: 0 map-get($spacing, 'sm');\n }\n\n &.tyk-list--with-separator {\n\n li:not(:first-child) {\n border-left: 1px solid theme-color('default', 'base');\n }\n }\n}\n","@import '../../../common/sass/variables';\n@import '../../../common/sass/mixins';\n@import './mixins';\n@import './variables';\n\n.tyk-message {\n display: flex;\n align-items: center;\n border-radius: $tyk-message-border-radius;\n margin-bottom: map-get($spacing, 'md');\n padding: $tyk-message-padding-top $tyk-message-padding-right $tyk-message-padding-bottom $tyk-message-padding-left;\n\n &__content {\n flex-grow: 1;\n margin-left: map-get($spacing, 'md');\n margin-right: map-get($spacing, 'md');\n }\n\n > .tyk-icon:first-child {\n width: 32px;\n height: 32px;\n flex-shrink: 0;\n border-radius: 50%;\n color: white;\n\n &:before {\n display: flex;\n width: 100%;\n height: 100%;\n align-items: center;\n justify-content: center;\n }\n }\n\n > .tyk-icon:last-child {\n cursor: pointer;\n }\n\n &--default {\n @include message-variant(\n $tyk-message-default-background,\n $tyk-message-default-border,\n $tyk-message-default-text-color\n );\n\n > .tyk-icon:first-child {\n transform: rotate(180deg);\n }\n }\n\n &--info {\n @include message-variant(\n $tyk-message-info-background,\n $tyk-message-info-border,\n $tyk-message-info-text-color\n );\n }\n\n &--success {\n @include message-variant(\n $tyk-message-success-background,\n $tyk-message-success-border,\n $tyk-message-success-text-color\n );\n }\n\n &--warning {\n @include message-variant(\n $tyk-message-warning-background,\n $tyk-message-warning-border,\n $tyk-message-warning-text-color\n );\n }\n\n &--danger {\n @include message-variant(\n $tyk-message-danger-background,\n $tyk-message-danger-border,\n $tyk-message-danger-text-color\n );\n }\n}\n","@mixin message-variant(\n $background,\n $border: transparent,\n $color: $text-color\n) {\n background-color: $background;\n border: $general-border-width solid $border;\n color: $color;\n\n & > .tyk-icon:first-child {\n background-color: $border;\n }\n}\n","$tyk-message-padding-top: map-get($spacing, 'md') !default;\n$tyk-message-padding-right: map-get($spacing, 'md') !default;\n$tyk-message-padding-bottom: map-get($spacing, 'md') !default;\n$tyk-message-padding-left: map-get($spacing, 'md') !default;\n$tyk-message-border-radius: $general-border-radius !default;\n$tyk-message-default-background: theme-color('primary', 'light') !default;\n$tyk-message-default-border: theme-color('default', 'dark') !default;\n$tyk-message-default-text-color: theme-color('default', 'dark') !default;\n$tyk-message-info-background: theme-color('info', 'light') !default;\n$tyk-message-info-border: theme-color('info', 'base') !default;\n$tyk-message-info-text-color: theme-color('info', 'base') !default;\n$tyk-message-success-background: theme-color('success', 'light') !default;\n$tyk-message-success-border: theme-color('success', 'dark') !default;\n$tyk-message-success-text-color: theme-color('success', 'dark') !default;\n$tyk-message-warning-background: theme-color('warning', 'light') !default;\n$tyk-message-warning-border: theme-color('warning', 'base') !default;\n$tyk-message-warning-text-color: theme-color('warning', 'dark') !default;\n$tyk-message-danger-background: theme-color('danger', 'extra-light') !default;\n$tyk-message-danger-border: theme-color('danger', 'base') !default;\n$tyk-message-danger-text-color: theme-color('danger', 'dark') !default;\n","@import '../../../common/sass/variables';\n@import '../../../common/sass/mixins';\n@import './variables';\n\n.tyk-modal {\n --theme-header-height: 15px;\n --theme-header-icon-size: 65px;\n align-items: center;\n bottom: 0;\n left: 0;\n pointer-events: none;\n position: fixed;\n right: 0;\n top: 0;\n z-index: -1;\n\n .tyk-panel {\n border: $general-border-width solid theme-color('background', 'dark');\n box-shadow: none;\n -webkit-box-shadow: none;\n }\n\n .tyk-modal__dialog {\n opacity: 0;\n transition: all .2s ease;\n }\n\n &.opened {\n display: flex;\n z-index: $modal-z-index;\n\n .tyk-modal__dialog {\n display: flex;\n max-height: 92vh;\n opacity: 1;\n pointer-events: all;\n }\n }\n\n &.appear-enter-done {\n .tyk-modal__dialog {\n opacity: 1;\n margin-top: 0;\n }\n }\n\n &__theme-header {\n position: absolute;\n top: -1px;\n left: 0;\n right: 0;\n height: var(--theme-header-height);\n border-top-left-radius: $general-border-radius;\n border-top-right-radius: $general-border-radius;\n\n .tyk-icon {\n position: absolute;\n left: calc(50% - var(--theme-header-icon-size) / 2);\n top: calc((var(--theme-header-icon-size) - var(--theme-header-height)) / -2);\n width: var(--theme-header-icon-size);\n height: var(--theme-header-icon-size);\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: text-scale('xxl');\n color: white;\n }\n }\n\n &--theme-success {\n .tyk-modal__theme-header {\n background-color: theme-color('success', 'base');\n\n .tyk-icon {\n background-color: theme-color('success', 'base');\n }\n }\n }\n\n &--theme-warning {\n .tyk-modal__theme-header {\n background-color: theme-color('warning', 'base');\n\n .tyk-icon {\n background-color: theme-color('warning', 'base');\n }\n }\n }\n\n &--theme-danger {\n .tyk-modal__theme-header {\n background-color: theme-color('danger', 'base');\n\n .tyk-icon {\n background-color: theme-color('danger', 'base');\n }\n }\n }\n}\n\n.tyk-modal__dialog {\n opacity: 0;\n margin: 0 auto;\n margin-top: -5%;\n pointer-events: all;\n transition: all .2s linear;\n width: 85%;\n\n @include mq('sm') {\n width: 600px;\n }\n\n &.tyk-modal--lg {\n @include mq('sm') {\n width: 800px;\n }\n }\n}\n\n.tyk-modal__content {\n background: white;\n border-radius: $general-border-radius;\n display: flex;\n flex-direction: column;\n position: relative;\n width: 100%;\n}\n\n.tyk-modal__body {\n flex: 1;\n overflow: auto;\n --padding-top: calc(#{$tyk-modal-body-padding} + (var(--theme-header-icon-size) - var(--theme-header-height)) / 2);\n padding: var(--padding-top) $tyk-modal-body-padding $tyk-modal-body-padding;\n\n &.no-padding {\n padding: 0;\n }\n}\n\n.tyk-modal__footer {\n align-items: center;\n display: flex;\n justify-content: flex-end;\n padding: $tyk-modal-footer-padding;\n\n >:not(:first-child) {\n margin-left: map-get($spacing, 'xs');\n }\n}\n\n.tyk-modal__backdrop {\n background-color: theme-color('default', 'dark');\n border: none;\n bottom: 0;\n display: none;\n left: 0;\n position: fixed;\n right: 0;\n top: 0;\n width: 100%;\n z-index: $modal-z-index - 1;\n\n &.opened {\n display: block;\n opacity: 0.5;\n transition: opacity .2s ease;\n }\n\n &.fade-enter-done {\n opacity: 0.5;\n }\n}\n\n/* Deprecated Modal.Header and Modal.Title */\n.tyk-modal__header {\n --padding-top: calc(#{$tyk-modal-header-padding} + (var(--theme-header-icon-size) - var(--theme-header-height)) / 2);\n padding: var(--padding-top) $tyk-modal-header-padding $tyk-modal-header-padding;\n align-items: center;\n border-bottom: 1px solid $tyk-modal-borders-color;\n display: flex;\n width: 100%;\n\n .tyk-modal--theme-none & {\n padding-top: $tyk-modal-header-padding;\n }\n\n button {\n margin-left: auto;\n padding: 0 5px;\n }\n\n + .tyk-modal__body {\n padding-top: $tyk-modal-body-padding;\n }\n}\n\n.tyk-modal__title {\n font-family: $font-family-medium;\n font-weight: 500;\n margin: 0;\n width: 100%;\n}\n/* End of deprecated styles */\n","$tyk-modal-body-padding: map-get($spacing, 'lg') !default;\n$tyk-modal-footer-padding: map-get($spacing, 'lg') !default;\n// Deprecated Modal.Header and Modal.Title\n$tyk-modal-header-padding: map-get($spacing, 'lg') !default;\n$tyk-modal-borders-color: theme-color('background', 'light') !default;\n// End of deprecated styles","@import './variables';\n\n.tyk-navigation {\n background-color: $navigation-background-color;\n height: 100%;\n overflow: auto;\n padding: $navigation-padding;\n width: 100%;\n\n .tyk-navigation-item {\n width: 100%;\n\n a {\n color: $navigation-item-color;\n display: flex;\n padding: $navigation-item-padding-y $navigation-item-padding-x;\n text-decoration: none;\n transition: all .2s ease;\n\n &:hover {\n background-color: $navigation-item-hover-background-color;\n color: $navigation-item-hover-color;\n }\n\n &.active {\n background-color: $navigation-item-active-background-color;\n color: $navigation-item-active-color;\n }\n }\n }\n}\n","$navigation-background-color: white !default;\n$navigation-item-padding-y: map-get($spacing, 'sm') !default;\n$navigation-item-padding-x: map-get($spacing, 'md') !default;\n$navigation-item-background-color: white !default;\n$navigation-item-color: $text-color !default;\n$navigation-item-hover-background-color: theme-color('primary', 'base') !default;\n$navigation-item-hover-color: white !default;\n$navigation-item-active-background-color: theme-color('primary', 'dark') !default;\n$navigation-item-active-color: white !default;\n$navigation-padding: 0 !default;\n","@import './variables';\n\n.tyk-nav-bar {\n align-items: center;\n border: none;\n background-color: $nav-bar-background-color;\n font-family: $nav-bar-font-family;\n color: $nav-bar-text-color;\n margin: 0;\n padding: $nav-bar-padding;\n width: 100%;\n z-index: 8;\n transition: all .2s linear;\n\n &__pre {\n align-self: flex-end;\n color: $text-color;\n flex-basis: 100%;\n\n a {\n font-family: $font-family-bold;\n font-size: text-scale('xs');\n line-height: line-height('xs');\n color: $text-color;\n }\n }\n\n &.tyk-nav-bar__with-tabs .tyk-tabs--default > ul li button {\n padding-top: 0;\n }\n\n @media screen and (max-width: 1024px) {\n padding-left: map-get($spacing, 'md');\n\n .menu-opened & {\n transform: translate($nav-bar-animate-left);\n }\n }\n\n h1 {\n color: $nav-bar-text-color;\n }\n\n h4 {\n margin: 0;\n }\n\n .tyk-nav-bar__wrapper {\n align-items: center;\n padding-bottom: $nav-bar-bottom-padding;\n display: flex;\n flex-wrap: wrap;\n height: $nav-bar-height;\n\n &.tyk-nav-bar--align-top {\n align-items: flex-start;\n }\n\n @media screen and (max-width: 1024px) {\n padding-left: 0;\n }\n\n h1 {\n font-size: $nav-bar-header-font-size;\n font-family: $nav-bar-header-font-family;\n line-height: $nav-bar-header-line-height;\n margin: 0;\n padding-right: map-get($spacing, 'sm');\n }\n\n h4 {\n padding-right: map-get($spacing, 'sm');\n }\n\n .tyk-nav-bar__container {\n align-items: center;\n display: flex;\n flex-grow: 1;\n justify-content: space-between;\n }\n\n .tyk-nav-bar__left {\n flex-grow: 1;\n }\n\n .tyk-nav-bar__right {\n margin-left: auto;\n }\n }\n}\n","$nav-bar-background-color: white !default;\n$nav-bar-text-color: theme-color('default', 'base') !default;\n$nav-bar-padding-left: 265px !default;\n$nav-bar-animate-left: 245px !default;\n$nav-bar-top-padding: map-get($spacing, 'sm') !default;\n$nav-bar-bottom-padding: 0 !default;\n$nav-bar-left-padding: map-get($spacing, 'md') !default;\n$nav-bar-right-padding: map-get($spacing, 'md') !default;\n$nav-bar-padding: 0 $nav-bar-right-padding 0 $nav-bar-left-padding !default;\n$nav-bar-top: 51px !default;\n$nav-bar-header-font-size: text-scale('xxl') !default;\n$nav-bar-header-font-family: $headings-font-family-bold !default;\n$nav-bar-header-line-height: line-height('xxl') !default;\n$nav-bar-height: 92px !default;\n$nav-bar-font-family: $font-family-regular !default;\n","@import '../../../common/sass/variables';\n@import '../../../common/sass/mixins';\n@import './variables';\n@import './mixins';\n\n.tyk-panel {\n background: white;\n border-radius: $panel-border-radius;\n margin-bottom: 20px;\n font-family: $font-family-medium;\n position: relative;\n\n &.has-error,\n & &.has-error {\n border: $general-border-width solid theme-color('danger', 'base');\n }\n\n &__header {\n align-items: center;\n border-bottom: 1px solid $panel-default-border-bottom-color;\n display: flex;\n font-family: $font-family-regular;\n\n > .tyk-icon,\n > .tyk-tooltip__wrapper {\n margin-left: 5px;\n }\n }\n\n .tyk-panel {\n border: $general-border-width solid theme-color('default', 'light');\n box-shadow: none;\n -webkit-box-shadow: none;\n }\n\n &--blank {\n &.tyk-panel--collapsed {\n margin-bottom: 20px;\n\n .tyk-panel__header {\n margin-bottom: 0;\n }\n }\n\n .tyk-panel__header {\n margin-bottom: -20px;\n padding: $padding-y-blank-panel-header $padding-x-panel-header;\n @include panel-variant(\n white,\n theme-color('default', 'base')\n );\n }\n }\n\n &--primary {\n background-color: transparent;\n\n .tyk-panel__header {\n @include panel-variant($panel-primary-header-color, $panel-primary-header-text-color);\n }\n\n .tyk-panel__body {\n @include panel-variant($panel-primary-body-color, $panel-primary-body-text-color);\n }\n .tyk-panel__header {\n border: $panel-primary-border-color;\n }\n\n & .tyk-form-group {\n label {\n color: $panel-primary-label-color;\n }\n }\n\n .tyk-toggle {\n .tyk-toggle__label {\n color: $panel-primary-label-color;\n }\n }\n }\n\n &--success {\n .tyk-panel__header {\n @include panel-variant(\n theme-color('success', 'base')\n );\n }\n }\n &--danger {\n .tyk-panel__header {\n @include panel-variant(\n theme-color('danger', 'base')\n );\n }\n }\n &--warning {\n .tyk-panel__header {\n @include panel-variant(\n theme-color('warning', 'base')\n );\n }\n }\n}\n\n.tyk-panel__body {\n background-color: white;\n border-radius: $panel-border-radius;\n font-family: $font-family-regular;\n padding: $padding-panel-body;\n position: relative;\n transition: height .2s;\n\n & ~ .tyk-panel__header {\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0;\n }\n\n &.no-padding {\n padding: 0;\n }\n}\n\n.tyk-panel__header {\n border-radius: $panel-border-radius;\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0;\n font-family: $panel-header-font-family;\n overflow: hidden;\n padding: $padding-y-panel-header $padding-x-panel-header;\n position: relative;\n\n .tyk-panel--collapsed & {\n border-bottom-left-radius: $panel-border-radius;\n border-bottom-right-radius: $panel-border-radius;\n }\n\n & ~ .tyk-panel__body {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n }\n\n &h3 {\n margin: 0;\n }\n\n ng-transclude {\n vertical-align: middle;\n }\n\n &.collapsable {\n cursor: pointer;\n\n .tyk-panel__icon-collapse--right & {\n padding-right: $padding-x-right-panel-collapsable;\n }\n\n .tyk-panel__icon-collapse--left & {\n padding-left: $padding-x-left-panel-collapsable;\n }\n }\n\n .collapsable__arrow-right {\n font-size: text-scale('sm');\n position: absolute;\n padding: map-get($spacing, 'sm');\n right: map-get($spacing, 'sm');\n top: calc(50% - 21px);\n }\n .collapsable__arrow-left {\n font-size: text-scale('sm');\n position: absolute;\n padding: 8px 0px map-get($spacing, 'sm') 20px;\n left: 0px;\n top: calc(50% - 21px);\n }\n}\n\n.tyk-panel__footer {\n align-items: center;\n border-top: 1px solid theme-color('background', 'light');\n display: flex;\n justify-content: flex-end;\n padding: map-get($spacing, 'lg');\n\n >:not(:first-child) {\n margin-left: 5px;\n }\n}\n","$padding-y-panel-header: map-get($spacing, 'sm') !default;\n$padding-x-panel-header: 25px !default;\n$padding-y-blank-panel-header: map-get($spacing, 'md') !default;\n$padding-panel-body: 25px !default;\n$padding-x-right-panel-collapsable: 48px !default;\n$padding-x-left-panel-collapsable: $padding-x-right-panel-collapsable !default;\n$panel-border-radius: 0 !default;\n$panel-default-border-bottom-color: theme-color('background', 'base') !default;\n$panel-header-font-size: text-scale('base') !default;\n$panel-header-font-family: $font-family-medium !default;\n$panel-primary-header-color: theme-color('primary', 'base') !default;\n$panel-primary-body-color: white !default;\n$panel-primary-header-text-color: white !default;\n$panel-primary-body-text-color: $text-color !default;\n$panel-primary-label-color: $text-color !default;\n$panel-primary-border-color: none !default;\n","@mixin panel-variant($background: white, $color: white) {\n background-color: $background;\n border: none;\n color: $color;\n font-size: text-scale('lg');\n line-height: line-height('lg');\n}\n",".tyk-pill {\n align-items: center;\n border-radius: $general-border-radius;\n display: inline-flex;\n font-size: text-scale('xs');\n line-height: 19px;\n margin: $pill-margin;\n padding: 6px map-get($spacing, 'base');\n font-family: $font-family-medium;\n\n &--square {\n border-radius: 8px;\n }\n\n i {\n font-size: text-scale('xs');\n }\n\n + .tyk-pill {\n margin-right: map-get($spacing, 'sm');\n }\n\n button + span {\n margin-left: map-get($spacing, 'sm');\n }\n\n span + button {\n margin-left: map-get($spacing, 'sm');\n }\n\n &:first-child {\n margin-right: map-get($spacing, 'sm');\n }\n\n &:last-child {\n margin-right: 0;\n }\n\n &--default {\n background-color: $default-pill-background-color;\n color: $default-pill-color;\n\n i {\n color: $default-pill-color;\n }\n }\n\n &--default-outline {\n box-shadow: $default-outline-pill-box-shadow;\n color: $text-color;\n\n i {\n color: $text-color;\n }\n }\n\n &--primary {\n background-color: theme-color('primary', 'base');\n color: white;\n\n i {\n color: $default-pill-color;\n }\n }\n\n &--primary-outline {\n box-shadow: inset 0px 0px 0px 2px theme-color('primary', 'base');\n color: $text-color;\n\n i {\n color: $text-color;\n }\n }\n\n &--success {\n background-color: theme-color('success', 'base');\n color: white;\n\n i {\n color: white;\n }\n }\n\n &--success-outline {\n box-shadow: inset 0px 0px 0px 2px theme-color('success', 'base');\n color: $text-color;\n\n i {\n color: $text-color;\n }\n }\n\n &--danger {\n background-color: theme-color('danger', 'base');\n color: white;\n\n i {\n color: white;\n }\n }\n\n &--danger-outline {\n box-shadow: inset 0px 0px 0px 2px theme-color('danger', 'base');\n color: $text-color;\n\n i {\n color: $text-color;\n }\n }\n\n &--warning {\n background-color: theme-color('warning', 'base');\n color: white;\n\n i {\n color: white;\n }\n }\n\n &--warning-outline {\n box-shadow: inset 0px 0px 0px 2px theme-color('warning', 'base');\n color: $text-color;\n\n i {\n color: $text-color;\n }\n }\n\n &--info {\n background-color: theme-color('info', 'base');\n color: white;\n\n i {\n color: white;\n }\n }\n\n &--info-outline {\n box-shadow: inset 0px 0px 0px 2px theme-color('info', 'base');\n color: $text-color;\n\n i {\n color: $text-color;\n }\n }\n}\n","\n.tyk-ui-reveal-wrapper {\n display: flex;\n flex-direction: column;\n justify-content: flex-end;\n align-items: stretch;\n width: 100%;\n height: 100%;\n z-index: 1000;\n position: absolute;\n bottom: 0;\n left: 0;\n pointer-events: none;\n\n &__panel {\n max-height: calc(100% - 2rem);\n background-color: white;\n padding: 0;\n margin: 0;\n overflow-y: auto;\n display: flex;\n flex-direction: column;\n pointer-events: all;\n flex-shrink: 0;\n overflow: auto;\n }\n\n &__hole {\n flex-grow: 1;\n opacity: 0;\n width: 100%;\n background-color: green;\n -webkit-user-select: none;\n user-select: none;\n pointer-events: none;\n z-index: -1;\n }\n\n &__gutter {\n height: 2rem;\n width: 100%;\n cursor: row-resize;\n display: flex;\n background-color: theme-color('primary', 'base');\n z-index: 2;\n pointer-events: all;\n justify-content: space-between;\n align-items: stretch;\n position: relative;\n box-shadow: 0 5px 10px rgba(0, 0, 0, 0.3);\n\n &__headerleft, &__headerright\n {\n display: flex;\n align-items: center;\n flex: 1;\n }\n\n &__headerleft {\n justify-content: flex-start;\n }\n\n &__headerright {\n justify-content: flex-end;\n }\n\n &__logo {\n width: 1rem;\n height: 1rem;\n -webkit-user-select: none;\n user-select: none;\n pointer-events: none;\n padding: 0.2rem;\n z-index: 2;\n background-image: url('#{$component-images-path}/drag.svg');\n align-self: center;\n }\n }\n\n\n &__gutter__logo:hover {\n border: dashed;\n }\n\n}","@import './variables';\n\n.tyk-sidebar {\n background-color: $sidebar-background-color;\n height: $sidebar-height;\n flex: 0 0 $sidebar-width;\n padding: $sidebar-padding;\n position: -webkit-sticky;\n position: sticky;\n overflow: auto;\n top: $sidebar-top;\n}\n","$sidebar-background-color: white !default;\n$sidebar-top: 58px !default;\n$sidebar-height: calc(100vh - 58px) !default;\n$sidebar-width: 280px !default;\n$sidebar-padding: 0 !default;\n","@import '../../../common/sass/variables';\n@import '../../../common/sass/mixins';\n@import './variables';\n\n.tyk-table {\n border-collapse: collapse;\n border-spacing: 0;\n background-color: white;\n border-radius: $general-border-radius;\n width: 100%;\n\n &__wrapper {\n border: $general-border-width solid theme-color('default', 'light');\n border-radius: $general-border-radius;\n overflow: auto;\n\n &--no-border {\n border: none\n }\n\n &.no-innner-horizontal-borders {\n & .tyk-table > thead th,\n & .tyk-table > tbody td {\n border-right: none;\n }\n }\n }\n\n > thead th {\n border-right: 1px solid theme-color('default', 'light');\n color: $text-color;\n font-size: text-scale('sm');\n line-height: line-height('sm');\n font-family: $font-family-bold;\n text-transform: uppercase;\n\n &:last-child {\n border-right: none;\n }\n\n i {\n font-size: text-scale('xs');\n }\n\n .tyk-button {\n background: none;\n color: theme-color('default', 'base');\n padding: 0;\n }\n }\n\n > thead th {\n padding: $table-th-padding;\n }\n\n > tbody tr:hover {\n background: rgba(theme-color('background', 'light'), 0.4);\n }\n\n > tbody td {\n border-right: 1px solid theme-color('default', 'light');\n font-size: text-scale('sm');\n line-height: line-height('sm');\n font-family: $font-family-regular;\n padding: $table-td-padding-y $table-td-padding-x;\n\n &:last-child {\n border-right: none;\n }\n \n vertical-align: middle;\n\n &.fit {\n white-space: nowrap;\n width: 1%;\n }\n\n input:not([type='checkbox']):not([type='radio']) {\n margin-top: map-get($spacing, 'base');\n }\n\n a {\n color: $text-color;\n font-family: $font-family-medium;\n }\n\n label {\n margin: 0;\n }\n\n input[type='checkbox'] {\n margin: 0;\n }\n }\n\n tbody > tr {\n border-top: 1px solid theme-color('default', 'light');\n transition: all .4s linear;\n border-radius: $general-border-radius;\n \n &.clickable {\n cursor: pointer;\n }\n }\n\n > tbody tr td:first-child,\n > thead tr th:first-child {\n padding-left: $table-first-last-padding;\n\n &.with-icon {\n padding-left: map-get($spacing, 'base');\n }\n }\n\n > tbody tr td:last-child,\n > thead tr th:last-child {\n padding-right: $table-first-last-padding;\n\n &.with-icon {\n padding-right: map-get($spacing, 'base');\n }\n }\n\n .tyk-pagination {\n padding: $table-pagination-padding;\n\n li:first-child {\n margin-left: auto;\n }\n }\n\n .nowrap {\n white-space: nowrap;\n }\n\n .wrap {\n word-break: break-all;\n }\n}\n\n.tyk-table-search {\n padding: map-get($spacing, 'sm') 25px 0 25px;\n\n label {\n font-size: text-scale('sm');\n text-transform: uppercase;\n }\n}\n\n.header-sort {\n padding-left: 3px;\n padding-top: map-get($spacing, 'xs');\n vertical-align: middle;\n}\n\n.new-table-pagination {\n float: right;\n}\n\n.selectable > div {\n margin-left: map-get($spacing, 'md');\n}\n\n.scrollable {\n display: block;\n overflow: auto;\n}\n\n.fixed-header {\n background: white;\n position: sticky;\n top: 0;\n}\n\n.tyk-table.has-error,\n.tyk-table__wrapper.has-error {\n border: $general-border-width solid theme-color('danger', 'base') !important;\n}","$table-th-padding: map-get($spacing, 'base') map-get($spacing, 'sm') !default;\n$table-td-padding-y: map-get($spacing, 'xs') !default;\n$table-td-padding-x: map-get($spacing, 'sm') !default;\n$table-first-last-padding: 20px !default;\n$table-pagination-padding: map-get($spacing, 'md') 25px !default;\n","@import '../../../common/sass/variables';\n@import '../../../common/sass/mixins';\n@import './variables';\n\n.tyk-tabs {\n &--default {\n > ul {\n display: flex;\n list-style-type: none;\n margin: 0;\n padding: 0;\n overflow: auto;\n\n li {\n display: flex;\n white-space: nowrap;\n margin-right: $tab-button-margin;\n\n &:last-child {\n margin-right: 0;\n }\n\n &.active button,\n button:hover {\n border-bottom-color: $tab-border-color;\n color: $tab-active-button-color;\n opacity: 1;\n }\n\n button {\n background: none;\n border: none;\n border-bottom: 4px solid transparent;\n color: $tab-button-color;\n cursor: pointer;\n font-size: text-scale('sm');\n font-family: $tabs-font-familly;\n padding: $tab-button-padding;\n margin-right: map-get($spacing, 'md');\n transition: all .2s linear;\n opacity: 0.7;\n\n &:focus {\n outline: none;\n }\n }\n }\n }\n }\n}\n\n.tyk-tab {\n &__content {\n padding: $tabs-default-content-padding;\n }\n}\n","$tabs-default-content-padding: 25px !default;\n$tab-button-padding: map-get($spacing, 'sm') 2px 3px 2px !default;\n$tab-button-margin: 0px !default;\n$tabs-font-familly: $font-family-medium !default;\n$tab-button-color: $text-color !default;\n$tab-active-button-color: $text-color !default;\n$tab-border-color: theme-color('success', 'base') !default;\n",".tyk-toast {\n &__container {\n bottom: 0;\n min-width: 300px;\n position: fixed;\n right: map-get($spacing, 'md');\n z-index: 11;\n }\n\n &__message {\n position: relative;\n }\n\n &-message__button {\n color: $text-color;\n height: map-get($spacing, 'md');\n line-height: 1;\n padding: map-get($spacing, 'xs');\n position: absolute;\n right: map-get($spacing, 'xs');\n top: map-get($spacing, 'xs');\n width: map-get($spacing, 'md');\n\n &:hover {\n background: rgba(255, 255, 255, 0.3);\n color: $text-color;\n }\n }\n}\n","@import '../../../../common/sass/variables';\n@import '../../../../common/sass/mixins';\n@import './variables';\n@import '../../../../components/FloatingContainer/sass/FloatingContainer';\n\n.tyk-combobox2 {\n $container-trigger-width: 40px;\n $values-default-height: 38px;\n outline: none;\n\n &.disabled {\n .tyk-form-control {\n border: $form-control-disabled-border !important;\n background-color: $form-control-disabled-background-color;\n color: $form-control-disabled-color;\n cursor: not-allowed;\n }\n\n .tyk-combobox2__current-values .tyk-pill--combobox button {\n cursor: not-allowed;\n }\n\n &:not(.is-expand-mode) .tyk-combobox2__values-container-trigger {\n cursor: not-allowed;\n }\n\n .tyk-combobox2__entry-field {\n background-color: transparent;\n cursor: not-allowed;\n }\n }\n\n .tyk-form-control {\n display: flex;\n flex-direction: row;\n position: relative;\n min-height: 40px;\n height: auto;\n padding: 0;\n\n &:focus-within {\n outline: none;\n border: $form-control-border-focus;\n }\n }\n\n &__current-values {\n display: flex;\n flex-grow: 1;\n flex-wrap: wrap;\n padding-top: 2px;\n padding-bottom: 2px;\n padding-left: map-get($spacing, 'sm');\n max-width: calc(100% - #{$container-trigger-width});\n\n &.expand-mode {\n max-height: 1000px;\n overflow: hidden;\n transition: max-height 1s ease;\n }\n\n &--collapsed.expand-mode {\n max-height: $values-default-height;\n transition: max-height .2s ease;\n }\n\n .tyk-pill--combobox {\n margin-top: 3px;\n margin-bottom: 3px;\n background-color: $tyk-combobox-pill-background;\n border-radius: map-get($spacing, 'sm');\n color: $tyk-combobox-pill-color;\n padding: map-get($spacing, 'xs') map-get($spacing, 'sm');\n max-width: 100%;\n max-height: 26px;\n\n button {\n background: none;\n border: none;\n cursor: pointer;\n width: 23px;\n outline: none;\n\n + span {\n margin-left: 0;\n }\n }\n\n span {\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n i {\n margin-right: map-get($spacing, 'xs');\n }\n }\n }\n\n &__entry-field {\n border: none;\n line-height: 30px;\n\n &:focus,\n &:active {\n border: none;\n outline: none;\n }\n\n &::placeholder {\n color: $form-control-placeholder-color;\n font-family: $form-control-placeholder-font-family;\n }\n }\n\n &__text-value {\n font-family: $font-family-medium;\n font-size: text-scale('sm');\n line-height: line-height('sm');\n padding: 9px 5px;\n width: 100%;\n overflow: hidden;\n text-overflow: ellipsis;\n line-height: 1;\n outline: none;\n\n &.overflow-single {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n &.is-placeholder {\n color: $form-control-placeholder-color;\n font-family: $form-control-placeholder-font-family;\n }\n }\n\n &__values-container-trigger {\n position: relative;\n flex-basis: $container-trigger-width;\n display: flex;\n justify-content: center;\n align-items: center;\n cursor: pointer;\n outline: none;\n transition: all .2s;\n\n &--expanded {\n transform: rotate(180deg);\n }\n\n .tyk-icon {\n height: 14px;\n }\n }\n}\n\n.tyk-form-group--rounded-corners .tyk-combobox2-disabled-overlay {\n border-radius: calc(#{$general-border-radius} - 2px);\n}\n\n.tyk-combobox2__combobox-dropdown {\n display: flex;\n flex-direction: column;\n border: $general-border-width solid $form-default-color;\n background-color: white;\n\n &.tyk-form-group--rounded-corners {\n border-radius: $general-border-radius;\n }\n\n .tyk-combobox2__combobox-search {\n background-color: white;\n position: sticky;\n top: 0;\n padding: map-get($spacing, 'sm') map-get($spacing, 'md');\n\n + .combobox-list {\n border-top: 1px solid $form-default-color;\n }\n }\n\n .tyk-combobox2__combobox-list {\n max-height: 255px;\n\n li {\n display: flex;\n cursor: pointer;\n padding: 9px map-get($spacing, 'md');\n transition: all .2s;\n font-family: $font-family-medium;\n\n &:hover,\n &.active {\n background-color: $tyk-combobox-list-item-hover-color;\n }\n\n &.disabled {\n color: $tyk-combobox-list-item-disabled-color;\n background-color: initial;\n }\n\n + li {\n border-top: 1px solid $form-default-color;\n }\n\n i {\n margin-right: map-get($spacing, 'xs');\n }\n\n .item-name {\n overflow: hidden;\n text-overflow: ellipsis;\n line-height: 16px;\n }\n }\n }\n}\n.tyk-combobox2__values-container-trigger {\n color: $text-color;\n}\n\n.tyk-combobox2__combobox-dropdown.tyk-form-group--rounded-corners {\n z-index: 1081;\n}","$tyk-combobox-pill-background: #F0F0F0 !default;\n$tyk-combobox-pill-color: $text-color !default;\n$tyk-combobox-list-item-hover-color: theme-color('background', 'light') !default;\n$tyk-combobox-list-item-hover-color: $form-default-color !default;\n$tyk-combobox-list-item-disabled-color: $form-default-color !default;\n","@import '../../../../common/sass/variables';\n@import '../../../../common/sass/mixins';\n@import './variables';\n\n.tyk-checkbox {\n label {\n $label-indent: 20px;\n display: flex;\n align-items: flex-start;\n padding-left: $label-indent;\n\n input {\n margin-left: -1 * $label-indent;\n margin-top: 5px;\n }\n }\n\n &--theme-light {\n label {\n color: $tyk-checkbox-theme-light-label-color;\n }\n\n &.tyk-checkbox--is-disabled {\n label {\n color: $tyk-checkbox-theme-light-label-disabled-color;\n }\n }\n }\n\n &--is-disabled {\n label, p {\n cursor: not-allowed;\n opacity: 0.5;\n }\n }\n}","$tyk-checkbox-theme-light-label-color: white !default;\n$tyk-checkbox-theme-light-label-disabled-color: white !default;\n$tyk-checkbox-theme-dark-label-color: $text-color !default;\n$tyk-checkbox-theme-dark-label-disabled-color: $text-color !default;",".flatpickr-day.selected, .flatpickr-day.startRange, .flatpickr-day.endRange, .flatpickr-day.selected.inRange, .flatpickr-day.startRange.inRange, .flatpickr-day.endRange.inRange, .flatpickr-day.selected:focus, .flatpickr-day.startRange:focus, .flatpickr-day.endRange:focus, .flatpickr-day.selected:hover, .flatpickr-day.startRange:hover, .flatpickr-day.endRange:hover, .flatpickr-day.selected.prevMonthDay, .flatpickr-day.startRange.prevMonthDay, .flatpickr-day.endRange.prevMonthDay, .flatpickr-day.selected.nextMonthDay, .flatpickr-day.startRange.nextMonthDay, .flatpickr-day.endRange.nextMonthDay {\n background: theme-color('success', 'base') !important;\n border-color: theme-color('success', 'base') !important;\n}","@import '../../../../common/sass/variables';\n@import '../../../../common/sass/mixins';\n@import './variables';\n\n.tyk-dropdown {\n display: inline-block;\n\n + .tyk-button,\n + .tyk-dropdown,\n + .tyk-toggle {\n margin-left: map-get($spacing, 'sm')\n }\n\n &--block {\n left: map-get($spacing, 'md');\n right: map-get($spacing, 'md');\n }\n\n &--relative {\n left: auto;\n right: auto;\n }\n\n &--custom {\n padding: map-get($spacing, 'md') 25px;\n }\n\n label {\n display: block;\n }\n\n &__trigger {\n position: relative;\n }\n\n &.theme-list .tyk-button {\n background: white;\n border: $general-border-width solid theme-color('default', 'base');\n border-radius: $general-border-radius;\n color: $text-color;\n\n &:hover,\n &:active,\n &:active:focus,\n &:focus {\n background: white;\n border-color: theme-color('background', 'dark');\n color: $text-color;\n }\n }\n}\n\n.tyk-dropdown-menu {\n background: $tyk-dropdown-item-background;\n border: $general-border-width solid theme-color('default', 'light');\n border-radius: $general-border-radius;\n -webkit-filter: drop-shadow(1px 2px 1px rgba(0, 0, 0, 0.1));\n filter: drop-shadow(1px 2px 1px rgba(0, 0, 0, 0.1));\n list-style-type: none;\n margin: 0;\n margin-top: 3px;\n overflow: hidden;\n padding: 0;\n z-index: 1081;\n\n &.tyk-dropdown--scrollable {\n overflow: auto;\n }\n\n .tyk-panel {\n margin: 0;\n }\n\n &.opened {\n display: flex;\n flex-direction: column;\n position: absolute;\n }\n\n > li {\n background: $tyk-dropdown-item-background;\n border-bottom: 1px solid $tyk-dropdown-item-border-color;\n display: flex;\n position: relative;\n z-index: 7;\n\n &:last-child {\n border: none;\n }\n\n i {\n left: 7px;\n position: absolute;\n top: 9px;\n }\n }\n}\n\n.tyk-dropdown-menu > li > a {\n cursor: pointer;\n color: $tyk-dropdown-item-text-color;\n display: flex;\n font-size: 12px;\n padding: 7px 24px;\n text-transform: uppercase;\n text-decoration: none;\n width: 100%;\n\n &:hover {\n color: $tyk-dropdown-item-hover-text-color;\n }\n\n .badge {\n background: $text-color;\n color: white;\n font-size: map-get($spacing, 'sm');\n margin-top: -4px;\n margin-left: 6px;\n }\n\n &:hover {\n background-color: $tyk-dropdown-item-background-hover;\n text-decoration: none;\n }\n}\n\n.tyk-dropdown--relative.opened {\n position: relative;\n}\n","$tyk-dropdown-item-background: white !default;\n$tyk-dropdown-item-background-hover: theme-color('background', 'light') !default;\n$tyk-dropdown-item-border-color: white !default;\n$tyk-dropdown-item-text-color: $text-color !default;\n$tyk-dropdown-item-hover-text-color: $text-color !default;\n","@import '../../../../common/sass/variables';\n@import '../../../../common/sass/mixins';\n\n.tyk-editable-list {\n &__submit-btn {\n white-space: nowrap;\n }\n}\n\n.tyk-editable-list__form {\n align-items: center;\n display: flex;\n\n .tyk-form-group {\n margin-bottom: 0;\n }\n\n &--sticked {\n margin-left: 0;\n\n button {\n border-top-left-radius: 0px;\n border-bottom-left-radius: 0px;\n border-top-right-radius: 3px;\n border-bottom-right-radius: 3px;\n padding-bottom: 11px;\n padding: map-get($spacing, 'sm') map-get($spacing, 'base') 11px map-get($spacing, 'base');\n }\n }\n\n span.inline {\n margin-top: 0;\n }\n\n > span {\n margin-left: map-get($spacing, 'base');\n\n &.inline-with-label {\n align-self: flex-end;\n }\n }\n}\n\n.tyk-editable-list__header {\n padding-top: map-get($spacing, 'base');\n border-bottom: 1px solid theme-color('background', 'dark');\n color: $text-color;\n font-size: 11px;\n padding-bottom: map-get($spacing, 'base');\n text-transform: uppercase;\n\n .tyk-row {\n margin: 0;\n }\n}\n\n.tyk-editable-list-items {\n overflow: hidden;\n list-style: none;\n padding: map-get($spacing, 'md') 0 0 0;\n\n .edit-mode-wrapper.table button {\n margin-top: 23px;\n }\n\n .tyk-row {\n margin: 0;\n }\n\n button[disabled] {\n cursor: not-allowed;\n }\n\n &.tyk-editable-list-items--inline {\n align-items: center;\n color: $text-color;\n display: flex;\n flex-wrap: wrap;\n }\n\n li {\n border-top: 1px solid theme-color('default', 'light');\n transition: all .2s linear;\n\n &.tyk-editable-list-item--inline {\n background-color: theme-color('default', 'light');\n border-radius: 25px;\n border: none;\n color: white;\n float: left;\n font-family: $font-family-medium;\n margin-bottom: map-get($spacing, 'sm');\n margin-right: map-get($spacing, 'base');\n padding: 0 map-get($spacing, 'base');\n white-space: nowrap;\n\n .tyk-editable-list-item__text {\n color: $text-color;\n padding: map-get($spacing, 'xs') 0;\n }\n\n .tyk-editable-list-action__button.on-edit {\n margin-top: 0;\n }\n }\n\n &:first-child {\n border-top: none;\n }\n\n .tyk-editable-list-item__text {\n display: flex;\n padding: map-get($spacing, 'sm') 0;\n\n > span {\n flex-grow: 1;\n }\n\n > div:first-child {\n flex-grow: 1;\n\n .error-message {\n margin: 0;\n }\n }\n }\n\n .tyk-editable-list-items {\n overflow: hidden;\n padding-bottom: map-get($spacing, 'sm');\n }\n\n .tyk-editable-list {\n border-top: map-get($spacing, 'xs') solid theme-color('background', 'dark');\n background: theme-color('background', 'light');\n padding: map-get($spacing, 'sm') map-get($spacing, 'base');\n }\n }\n\n .tyk-editable-list-item__text {\n display: block;\n word-wrap: break-word;\n word-break:break-all;\n }\n\n .tyk-editable-list-action__button {\n border: none;\n background: transparent;\n\n &.on-edit {\n margin-left: map-get($spacing, 'sm');\n }\n }\n\n .tyk-editable-list-item-controls {\n flex-grow: 0;\n text-align: right;\n }\n}\n\n.tyk-editable-list-item__controls {\n text-align: right;\n}\n\n.tyk-editable-list-items.table {\n background-color: white;\n border-radius: $general-border-radius;\n border: $general-border-width solid theme-color('default', 'light');\n padding: 0 !important;\n\n li {\n border-color: theme-color('default', 'light');\n\n &:hover {\n background: theme-color('background', 'light');\n }\n }\n\n .tyk-editable-list-item__text {\n background: transparent;\n }\n\n .tyk-editable-list-action__button {\n border-radius: 6px;\n cursor: pointer;\n margin-right: map-get($spacing, 'sm');\n }\n}\n\n.tyk-editable-list__header {\n background-color: white;\n border-top-left-radius: $general-border-radius;\n border-top-right-radius: $general-border-radius;\n border: $general-border-width solid theme-color('default', 'light');\n border-bottom: 1px solid theme-color('default', 'light') !important;\n color: $text-color !important;\n font-family: $font-family-bold;\n margin-top: map-get($spacing, 'sm');\n\n & + .tyk-editable-list-items.table {\n border-top: none;\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n }\n}\n","@use \"sass:math\";\n\n.editable-list {\n &__header {\n align-items: center;\n display: flex;\n margin-bottom: 10px;\n\n .tyk-button {\n margin-left: auto;\n }\n }\n\n &__wrapper.has-error &__list{\n border: $general-border-width solid theme-color('danger', 'base');\n }\n\n &__list {\n border: $general-border-width solid theme-color('default', 'light');\n border-radius: $general-border-radius;\n display: flex;\n flex-direction: column-reverse;\n }\n\n &__item {\n border-bottom: 1px solid theme-color('default', 'light');\n display: flex;\n flex-wrap: nowrap;\n width: 100%;\n\n &:first-child {\n border-bottom: none;\n }\n\n &-header {\n border-bottom: 1px solid theme-color('default', 'light');\n color: $text-color;\n font-size: text-scale('sm');\n line-height: line-height('sm');\n font-family: $font-family-bold;\n text-transform: uppercase;\n\n .editable-list__item-cell {\n padding: 10px;\n }\n }\n\n &-cell {\n border-left: 1px solid theme-color('default', 'light');\n overflow: hidden;\n padding: 0 10px;\n\n .tyk-form-control--readonly {\n overflow: hidden;\n text-overflow: ellipsis;\n word-break: break-all;\n }\n\n &:first-child {\n border-left: none;\n padding-left: 15px;\n }\n &:last-child {\n padding-right: 15px;\n }\n\n .tyk-form-group {\n margin: 10px 0;\n width: 100%;\n }\n }\n\n $start: 1;\n $end: 12;\n\n @for $i from $start through $end {\n &--size-#{$i} {\n display: flex;\n flex-grow: #{$i + 1};\n $my_width: #{math.div($i, 12) * 100%};\n width: $my_width;\n }\n }\n\n &--size-fit {\n width: fit-content;\n }\n\n &-action {\n align-items: flex-start;\n display: flex;\n justify-content: center;\n width: 100px;\n\n .tyk-button {\n margin-top: 20px;\n }\n\n &--read-only {\n color: theme-color(\"default\", \"light\");\n align-items: center;\n\n .tyk-button {\n margin-top: 0;\n }\n }\n\n }\n }\n}",".tyk-file-input__wrapper {\n position: relative;\n\n > input {\n padding: 6px map-get($spacing, 'md');\n }\n\n > button {\n background: none;\n border: none;\n cursor: pointer;\n position: absolute;\n right: map-get($spacing, 'base');\n top: 9px;\n }\n}\n",".tyk-multiselect {\n align-items: flex-start;\n border-radius: $general-border-radius;\n flex-wrap: wrap;\n display: flex;\n margin-bottom: map-get($spacing, 'md');\n width: 100%;\n\n /*FALLBACK FOR ANGULAR COMPONENTS*/\n .input-group .input-group-addon + .form-control {\n border-width: 1px !important;\n border-left: none !important;\n border-top-left-radius: 0 !important;\n border-top-right-radius: 0 !important;\n border-bottom-left-radius: 0 !important;\n border-bottom-right-radius: 0 !important;\n }\n\n .input-group .input-group-addon {\n background: transparent !important;\n border-width: 1px !important;\n border-right: 0 !important;\n border-top-left-radius: 0 !important;\n border-top-right-radius: 0 !important;\n border-bottom-left-radius: 0 !important;\n border-bottom-right-radius: 0 !important;\n }\n /*END FALLBACK FOR ANGULAR COMPONENTS*/\n\n &.has-error {\n border: $general-border-width solid theme-color('danger', 'base');\n }\n\n &__header {\n background-color: theme-color('default', 'base');\n border-top-left-radius: $general-border-radius;\n border-top-right-radius: $general-border-radius;\n color: white;\n display: flex;\n width: 100%;\n\n > div {\n padding: map-get($spacing, 'sm') map-get($spacing, 'base');\n width: 50%;\n }\n }\n\n &__panel-wrapper {\n border: $form-control-border;\n border-top: none;\n border-bottom-left-radius: $general-border-radius;\n border-bottom-right-radius: $general-border-radius;\n display: flex;\n flex: 1;\n height: 265px;\n width: 100%;\n }\n\n &__panel {\n display: flex;\n flex-direction: column;\n margin: 0 0 0 -1px;\n position: relative;\n width: calc(50% + 1px);\n\n &:last-child {\n border-left: $form-control-border;\n .tyk-form-group {\n margin-left: -1px;\n width: calc(100% + 2px);\n }\n }\n\n .tyk-message {\n margin: map-get($spacing, 'md') map-get($spacing, 'md') 0 map-get($spacing, 'md');\n }\n }\n\n &__list {\n list-style-type: none;\n margin: 0;\n padding: 0;\n\n &--scroll {\n height: 100%;\n overflow-y: auto;\n }\n\n > li {\n border-bottom: $form-control-border;\n display: flex;\n flex-direction: column;\n padding: map-get($spacing, 'sm') map-get($spacing, 'base');\n\n > div {\n align-items: start;\n display: flex;\n width: 100%;\n }\n\n .loading {\n justify-content: center;\n }\n\n &:last-child {\n border-bottom: none;\n }\n }\n }\n\n &-item__name {\n display: block;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .tyk-form-group {\n margin: 0;\n }\n\n .tyk-multiselect-item__controls {\n display: flex;\n margin-left: auto;\n flex-wrap: nowrap;\n\n .tyk-button {\n color: $text-color;\n margin-left: map-get($spacing, 'xs');\n\n &:last-child {\n margin-left: 0;\n }\n }\n }\n}\n","@import '../../../../common/sass/variables';\n@import '../../../../common/sass/mixins';\n@import './variables';\n\n.tyk-pagination {\n display: flex;\n list-style-type: none;\n margin: map-get($spacing, 'sm') 0;\n padding: 0;\n\n li {\n align-items: center;\n display: flex;\n }\n\n li:first-child button {\n border-top-left-radius: $pagination-border-radius;\n border-bottom-left-radius: $pagination-border-radius;\n }\n\n li:last-child button {\n border-top-right-radius: $pagination-border-radius;\n border-bottom-right-radius: $pagination-border-radius;\n }\n\n span {\n margin: 0 map-get($spacing, 'sm');\n }\n\n button {\n background: white;\n border: none;\n font-size: text-scale('sm');\n font-family: $font-family-bold;\n cursor: pointer;\n color: theme-color('default', 'base');\n margin-left: -1px;\n padding: $pagination-button-padding;\n\n &:hover {\n background-color: theme-color('success', 'light');\n }\n }\n\n .active button {\n background-color: theme-color('success', 'base');\n color: white;\n }\n}\n","$pagination-border-radius: $general-border-radius !default;\n$pagination-button-padding: map-get($spacing, 'sm') map-get($spacing, 'base') !default;\n","@import '../../../../common/sass/variables';\n@import '../../../../common/sass/mixins';\n@import './variables';\n.tyk-radio{\n label {\n align-items: center;\n display: flex;\n }\n\n &--is-disabled {\n label, p {\n cursor: not-allowed;\n opacity: 0.5;\n }\n }\n\n &__description-text {\n padding: $radio-description-text-padding;\n }\n}","$tyk-radio-theme-light-label-color: white !default;\n$tyk-radio-theme-light-label-disabled-color: white !default;\n$tyk-radio-theme-dark-label-color: $text-color !default;\n$tyk-radio-theme-dark-label-disabled-color: $text-color !default;\n$radio-description-text-padding: 0 0 0 20px !default;",".tyk-select {\n background: transparent url('#{$component-images-path}/arrow_down.svg') no-repeat calc(100% - 15px) center;\n background-size: map-get($spacing, 'base') map-get($spacing, 'base');\n}",".tyk-selectable-list {\n margin-bottom: map-get($spacing, 'md');\n width: 100%;\n\n li:not(.tyk-selectable-list__no-items-message) {\n font-family: $font-family-medium;\n padding: 0;\n\n .tyk-message {\n margin-bottom: 0;\n }\n\n label {\n font-family: $font-family-medium;\n margin: 0;\n }\n\n > label {\n align-items: center;\n cursor: pointer;\n display: flex;\n padding: map-get($spacing, 'sm') map-get($spacing, 'md');\n\n input[type=\"checkbox\"] {\n margin-left: auto;\n }\n }\n }\n\n &__item--with-icon {\n input[type=\"checkbox\"] {\n visibility: hidden;\n }\n }\n}\n","textarea.tyk-form-control {\n height: auto;\n}\n","@import './variables';\n\n.tyk-toggle {\n display: inline-flex;\n flex-wrap: wrap;\n font-family: $toggle-font-family;\n font-size: text-scale('sm');\n line-height: line-height('sm');\n white-space: nowrap;\n\n &.block {\n margin-bottom: map-get($spacing, 'md');\n width: 100%;\n\n + .tyk-toggle {\n margin-left: 0;\n }\n }\n\n &.inline-label {\n align-items: center;\n flex-wrap: nowrap;\n }\n\n &__list--has-error {\n border: $error-border;\n }\n\n & &__label {\n display: block;\n font-family: $toggle-label-font-family;\n font-size: $toggle-label-font-size;\n padding: $toggle-padding;\n width: 100%;\n color: $toggle-label-color;\n }\n\n &.inline-label &__label {\n margin-right: map-get($spacing, 'sm');\n width: auto;\n }\n\n + .tyk-button,\n + .tyk-dropdown,\n + .tyk-toggle {\n margin-left: map-get($spacing, 'sm')\n }\n\n &--disabled-true {\n cursor: not-allowed;\n opacity: 0.7;\n }\n\n &--column {\n .tyk-toggle__list--separated {\n display: flex;\n flex-direction: column;\n margin-right: map-get($spacing, 'md');\n\n .tyk-toggle__item {\n background-color: $toggle-list-background-color;\n margin-right: auto;\n }\n }\n }\n\n &__list {\n background: $toggle-list-background-color;\n border-radius: 25px;\n display: flex;\n list-style-type: none;\n margin: 0;\n padding: 0;\n position: relative;\n\n &--separated {\n background: transparent;\n flex-wrap: wrap;\n }\n }\n\n &--on-dark &__list {\n background: $toggle-list-background-color-on-dark;\n }\n\n &--default &__item--active span {\n color: white;\n }\n\n &--default &__list--single &__item--active,\n &--default &__list--separated &__item--active {\n span {\n color: white;\n }\n\n @include button-variant(\n $button-default-color,\n transparent,\n white,\n $button-default-color,\n transparent,\n $button-default-color\n );\n }\n\n &--primary &__item--active span {\n color: white;\n }\n\n &--primary &__list--single &__item--active,\n &--primary &__list--separated &__item--active {\n span {\n color: white;\n }\n @include button-variant(\n theme-color('primary', 'base'),\n transparent,\n white,\n theme-color('primary', 'base'),\n transparent,\n theme-color('primary', 'base')\n );\n }\n\n &--success &__item--active span {\n color: white;\n }\n\n &--success &__list--single &__item--active,\n &--success &__list--separated &__item--active {\n span {\n color: white;\n }\n @include button-variant(\n theme-color('success', 'dark'),\n transparent,\n white,\n theme-color('success', 'dark'),\n transparent,\n theme-color('success', 'dark')\n );\n }\n\n &--danger &__item--active span {\n color: white;\n }\n\n &--danger &__list--single &__item--active,\n &--danger &__list--separated &__item--active {\n @include button-variant(\n theme-color('danger', 'base'),\n transparent,\n white,\n theme-color('danger', 'base'),\n transparent,\n theme-color('danger', 'base')\n );\n }\n\n &--warning &__item--active span {\n color: $text-color;\n }\n\n &--warning &__list--single &__item--active,\n &--warning &__list--separated &__item--active {\n @include button-variant(\n theme-color('warning', 'base'),\n transparent,\n $text-color,\n theme-color('warning', 'base'),\n transparent,\n theme-color('warning', 'base')\n );\n }\n\n\n &--primary-gradient &__item--active span {\n color: white;\n }\n &--primary-gradient &__list--single &__item--active,\n &--primary-gradient &__list--separated &__item--active {\n span {\n color: white;\n }\n @include button-variant-gradient(\n theme-color('primary', 'base'),\n theme-color('primary', 'dark'),\n white,\n false\n );\n }\n\n &--success-gradient &__item--active span {\n color: white;\n }\n &--success-gradient &__list--single &__item--active,\n &--success-gradient &__list--separated &__item--active {\n span {\n color: white;\n }\n @include button-variant-gradient(\n theme-color('success', 'base'),\n theme-color('success', 'dark'),\n white,\n false\n );\n }\n\n\n &--danger-gradient &__item--active span {\n color: white;\n }\n &--danger-gradient &__list--single &__item--active,\n &--danger-gradient &__list--separated &__item--active {\n span {\n color: white;\n }\n @include button-variant-gradient(\n theme-color('danger', 'base'),\n theme-color('danger', 'dark'),\n white,\n false\n );\n }\n\n\n &--warning-gradient &__item--active span {\n color: white;\n }\n &--warning-gradient &__list--single &__item--active,\n &--warning-gradient &__list--separated &__item--active {\n span {\n color: white;\n }\n @include button-variant-gradient(\n theme-color('warning', 'light'),\n theme-color('warning', 'base'),\n $text-color,\n false\n );\n }\n\n &__item {\n color: $toggle-list-text-color;\n text-transform: uppercase;\n z-index: 2;\n border: 2px solid transparent;\n\n &:first-child {\n border-top-left-radius: 25px;\n border-bottom-left-radius: 25px;\n }\n &:last-child {\n border-top-right-radius: 25px;\n border-bottom-right-radius: 25px;\n }\n\n .tyk-toggle__list--separated & {\n background: tyk-toggle__list--separated;\n border-radius: 25px;\n margin-bottom: map-get($spacing, 'xs');\n margin-top: map-get($spacing, 'xs');\n margin-right: map-get($spacing, 'sm');\n\n &:last-child {\n margin-right: 0;\n }\n }\n\n input {\n display: none;\n }\n\n label {\n cursor: pointer;\n font-family: $toggle-font-family;\n position: relative;\n margin: 0;\n transition: all .2s ease;\n\n .tyk-toggle__list--single & {\n padding-left: 45px;\n }\n }\n\n .tyk-toggle__list--single &--active {\n label {\n padding-left: 25px;\n padding-right: 45px;\n\n .tyk-toggle__item-notch {\n left: calc(100% - 35px);\n }\n }\n }\n }\n\n &--on-dark &__item:not(.tyk-toggle__item--active) {\n color: $toggle-list-text-color-on-dark;\n }\n\n &--on-dark &__item-notch--single {\n background: theme-color('background', 'light');\n }\n\n &--sm label {\n @include button-size(\n calc(#{$padding-y-button-sm} + 2px),\n calc(#{$padding-x-button-sm} + 2px),\n text-scale('xs'),\n line-height('xs'),\n $button-border-radius\n );\n }\n\n &--sm &__list--single label {\n padding-left: 35px;\n }\n\n &--sm .tyk-toggle__list--single .tyk-toggle__item--active label {\n padding-left: 17px;\n padding-right: 35px;\n\n .tyk-toggle__item-notch {\n left: calc(100% - 27px);\n }\n }\n\n &--md label {\n @include button-size(\n calc(#{$padding-y-button-md} + 2px),\n calc(#{$padding-x-button-md} + 2px),\n text-scale('sm'),\n $line-height-button-sm,\n $button-border-radius\n );\n }\n\n &--lg label {\n @include button-size(\n calc(#{$padding-y-button-lg} + 2px),\n calc(#{$padding-x-button-lg} + 2px),\n text-scale('sm'),\n $line-height-button-sm,\n $button-border-radius\n );\n }\n\n &--lg &__list--single label {\n padding-left: 45px;\n }\n\n &--lg .tyk-toggle__list--single .tyk-toggle__item--active label {\n padding-left: 25px;\n padding-right: 45px;\n\n .tyk-toggle__item-notch {\n left: calc(100% - 43px);\n }\n }\n\n &__item-notch {\n border-radius: 25px;\n bottom: 2px;\n position: absolute;\n transition: all .2s ease;\n top: 2px;\n\n &--single {\n background: white;\n left: 2px;\n width: 32px;\n }\n }\n\n &--sm &__item-notch--single {\n width: 24px;\n }\n\n &--lg &__item-notch--single {\n width: 40px;\n }\n\n &__notch {\n border-radius: 25px;\n left: 0;\n position: absolute;\n bottom: $toggle-bottom;\n top: $toggle-top;\n transition: all .2s ease;\n width: 100px;\n z-index: 1;\n }\n\n &--default &__notch {\n @include button-variant(\n $button-default-color,\n transparent,\n white,\n $button-default-color,\n transparent,\n $button-default-color\n );\n }\n\n &--primary &__notch {\n @include button-variant(\n theme-color('primary', 'base'),\n transparent,\n white,\n theme-color('primary', 'base'),\n transparent,\n theme-color('primary', 'base')\n );\n }\n\n &--success &__notch {\n @include button-variant(\n theme-color('success', 'base'),\n transparent,\n white,\n theme-color('success', 'base'),\n transparent,\n theme-color('success', 'base')\n );\n }\n\n &--danger &__notch {\n @include button-variant(\n theme-color('danger', 'base'),\n transparent,\n white,\n theme-color('danger', 'base'),\n transparent,\n theme-color('danger', 'base')\n );\n }\n\n &--warning &__notch {\n @include button-variant(\n theme-color('warning', 'base'),\n transparent,\n $text-color,\n theme-color('warning', 'base'),\n transparent,\n theme-color('warning', 'base')\n );\n }\n\n &--primary-gradient &__notch {\n @include button-variant-gradient(\n theme-color('primary', 'base'),\n theme-color('primary', 'dark'),\n white,\n false\n );\n }\n\n &--success-gradient &__notch {\n @include button-variant-gradient(\n theme-color('success', 'base'),\n theme-color('success', 'dark'),\n white,\n false\n );\n }\n\n &--danger-gradient &__notch {\n @include button-variant-gradient(\n theme-color('danger', 'base'),\n theme-color('danger', 'dark'),\n white,\n false\n );\n }\n\n &--warning-gradient &__notch {\n @include button-variant-gradient(\n theme-color('warning', 'light'),\n theme-color('warning', 'base'),\n $text-color,\n false\n );\n }\n}\n\n.empty-toggle {\n padding: 1px;\n}","$toggle-font-family: $font-family-bold !default;\n$toggle-list-background-color: theme-color('background', 'light') !default;\n$toggle-list-text-color: white !default;\n$toggle-list-background-color-on-dark: white !default;\n$toggle-list-text-color-on-dark: $text-color !default;\n$toggle-top: 4px !default;\n$toggle-bottom: 4px !default;\n$toggle-label-font-size: text-scale('sm') !default;\n$toggle-label-font-family: $font-family-medium;\n$toggle-label-color: $label-color !default;\n$toggle-padding: 0 !default;","@import '../../../../common/sass/variables';\n\n.string-builder{\n position: relative;\n display: block;\n}\n\n.string-builder__input {\n word-break: break-all;\n resize: none;\n overflow: hidden;\n background:transparent;\n position: absolute;\n border: none;\n font: inherit;\n display: block;\n z-index: 1;\n width: 100%;\n padding: 0px;\n width: calc(100% - 35px);\n &:focus,\n &:active {\n border: none;\n outline: none;\n }\n}\n.string-builder__styled {\n font: inherit;\n position: absolute;\n pointer-events: none;\n width: calc(100% - 35px);\n color: transparent;\n z-index: 2;\n border: none;\n word-wrap: break-word;\n word-break: break-all;\n \n}\n\n.string-builder__disabled{\n background-color: $form-control-disabled-background-color !important;\n color: $form-control-disabled-color;\n cursor: not-allowed;\n}\n\n\n.url-builder__options_name {\n font-weight: 10px;\n}\n\n.url-builder__options_description{\n color: gray;\n}\n\n.string-builder-dropdown {\n display: flex;\n flex-direction: column;\n border: $general-border-width solid $form-default-color;\n background-color: #ffffff;\n\n &.tyk-form-group--rounded-corners {\n border-radius: $general-border-radius;\n }\n\n .string-builder-search {\n background-color: #ffffff;\n position: sticky;\n top: 0;\n padding: map-get($spacing, 'sm') map-get($spacing, 'md');\n\n + .string-builder-list {\n border-top: 1px solid $form-default-color;\n }\n }\n\n .string-builder-list {\n max-height: 255px;\n\n li {\n cursor: pointer;\n padding: 9px map-get($spacing, 'md');\n transition: all .2s;\n font-family: $font-family-medium;\n\n &:hover,\n &.active {\n background-color: $form-default-color;\n }\n\n + li {\n border-top: 1px solid $form-default-color;\n }\n\n i {\n margin-right: map-get($spacing, 'xs');\n }\n\n .item-name {\n overflow: hidden;\n text-overflow: ellipsis;\n line-height: 16px;\n }\n }\n }\n}\n\n.invalid_token {\n box-shadow: 0px 0px 0px 1px theme-color('danger', 'dark') inset;\n border-radius: 5px;\n background: theme-color('danger', 'light');\n color: theme-color('danger', 'dark');\n padding: 4px;\n pointer-events: all;\n .invalid_token--icon {\n margin-left: 2px;\n color: theme-color('danger', 'dark');\n }\n}\n\n.string_builder_trigger {\n background-color: #ffffff;\n border-radius: 5px;\n padding: 1px 6px;\n margin: 0px 4px;\n}\n\n.string-builder-footer {\n > .tyk-form-control__error-message {\n padding: 0px !important;\n }\n > .tyk-form-control__help-block{\n padding: 0px !important;\n }\n}\n\n.string-builder-search {\n padding-right: 10px;\n}\n\n.default-option-name {\n color: green;\n}\n\n\n// NOTE :: FOR DEMO ONLY\n.data_source_argument {\n color: pink;\n}\n.data_source_object {\n color: blueviolet;\n}\n","\n* {\n box-sizing: border-box;\n}\n\nbody {\n background-color: theme-color('background', 'base');\n color: $text-color;\n font-size: text-scale('sm');\n line-height: line-height('sm');\n font-family: $font-family-regular;\n}\n\n.tyk-main-wrapper {\n display: flex;\n flex-wrap: nowrap;\n}\n\n.tyk-main-content-wrapper {\n flex: 1;\n}\n\n.well {\n background: transparent;\n border: $general-border-width solid theme-color('default', 'light');\n border-radius: $general-border-radius;\n box-shadow: none;\n\n &.has-error {\n border-color: theme-color('danger', 'base');\n }\n}\n",".title-medium {\n font-family: $font-family-medium;\n color: $label-color;\n font-size: $title-medium-font-size;\n}",".right-align {\n text-align: right !important;\n}\n\n.left-align {\n text-align: left !important;\n}\n\n.center-align {\n text-align: center !important;\n}\n\n.left {\n float: left !important;\n}\n\n.right {\n float: right !important;\n}\n\n.hide {\n display: none !important;\n}\n\n.no-margin {\n margin: 0 !important;\n}\n\n.no-margin-bottom {\n margin-bottom: 0 !important;\n}\n\n.no-margin-top {\n margin-top: 0 !important;\n}\n\n.no-margin-right {\n margin-right: 0 !important;\n}\n\n.no-margin-left {\n margin-right: 0 !important;\n}\n\n.disabled-section {\n color: theme-color('default', 'light');\n}\n\n.top-buffer-large {\n margin-top: $top-buffer-large !important; \n}\n\n.top-buffer-small {\n margin-top: $top-buffer-small !important; \n}\n\n.top-buffer-medium {\n margin-top: $top-buffer-medium !important; \n}\n\n.bottom-buffer-large {\n margin-bottom: $bottom-buffer-large !important; \n}\n\n.bottom-buffer-small {\n margin-bottom: $bottom-buffer-small !important; \n}\n\n.bottom-buffer-medium {\n margin-bottom: $bottom-buffer-medium !important; \n}\n\n.right-buffer-large {\n margin-right: $right-buffer-large !important; \n}\n\n.right-buffer-small {\n margin-right: $right-buffer-small !important; \n}\n\n.right-buffer-medium {\n margin-right: $right-buffer-medium !important; \n}\n\n.left-buffer-large {\n margin-left: $left-buffer-large !important; \n}\n\n.left-buffer-small {\n margin-left: $left-buffer-small !important; \n}\n\n.left-buffer-medium {\n margin-left: $left-buffer-medium !important; \n}\n\n.word-wrap {\n word-wrap: break-word;\n word-break: break-all;\n}\n\n.clear-left {\n clear: left;\n}\n\n.flex-container {\n display: flex;\n}\n\n.vertical-center-align {\n align-items: center;\n}\n\n\n.right-align-controls {\n align-items: center;\n display: flex;\n margin-left: auto;\n}\n\n.inline-label {\n margin-right: 15px;\n}\n\n.nowrap { \n white-space: nowrap;\n}\n"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/lib/index.js b/lib/index.js index 114f56fb..0e50d1e1 100644 --- a/lib/index.js +++ b/lib/index.js @@ -1,1289 +1,39542 @@ -(()=>{var ps=(f2,L5)=>()=>(L5||f2((L5={exports:{}}).exports,L5),L5.exports);var gs=ps((Ns,m6)=>{(()=>{var f2={239:(D,R,f0)=>{D=f0.nmd(D),function(){var n="ace",M=function(){return this}();if(!M&&typeof window!="undefined"&&(M=window),!n&&typeof requirejs!="undefined")return;var G=function(l,o,s){if(typeof l!="string"){G.original?G.original.apply(this,arguments):(console.error("dropping module because define wasn't a string."),console.trace());return}arguments.length==2&&(s=o),G.modules[l]||(G.payloads[l]=s,G.modules[l]=null)};G.modules={},G.payloads={};var L=function(l,o,s){if(typeof o=="string"){var i=d(l,o);if(i!=null)return s&&s(),i}else if(Object.prototype.toString.call(o)==="[object Array]"){for(var r=[],a=0,c=o.length;ad.length)&&(C=d.length),C-=T.length;var h=d.indexOf(T,C);return h!==-1&&h===C}),String.prototype.repeat||L(String.prototype,"repeat",function(T){for(var C="",d=this;T>0;)T&1&&(C+=d),(T>>=1)&&(d+=d);return C}),String.prototype.includes||L(String.prototype,"includes",function(T,C){return this.indexOf(T,C)!=-1}),Object.assign||(Object.assign=function(T){if(T==null)throw new TypeError("Cannot convert undefined or null to object");for(var C=Object(T),d=1;d>>0,h=arguments[1],l=h>>0,o=l<0?Math.max(d+l,0):Math.min(l,d),s=arguments[2],i=s===void 0?d:s>>0,r=i<0?Math.max(d+i,0):Math.min(i,d);o0;)d&1&&(h+=C),(d>>=1)&&(C+=C);return h};var L=/^\s\s*/,T=/\s\s*$/;M.stringTrimLeft=function(C){return C.replace(L,"")},M.stringTrimRight=function(C){return C.replace(T,"")},M.copyObject=function(C){var d={};for(var h in C)d[h]=C[h];return d},M.copyArray=function(C){for(var d=[],h=0,l=C.length;h=0?parseFloat((C.match(/(?:MSIE |Trident\/[0-9]+[\.0-9]+;.*rv:)([0-9]+[\.0-9]+)/)||[])[1]):parseFloat((C.match(/(?:Trident\/[0-9]+[\.0-9]+;.*rv:)([0-9]+[\.0-9]+)/)||[])[1]),M.isOldIE=M.isIE&&M.isIE<9,M.isGecko=M.isMozilla=C.match(/ Gecko\/\d+/),M.isOpera=typeof opera=="object"&&Object.prototype.toString.call(window.opera)=="[object Opera]",M.isWebKit=parseFloat(C.split("WebKit/")[1])||void 0,M.isChrome=parseFloat(C.split(" Chrome/")[1])||void 0,M.isEdge=parseFloat(C.split(" Edge/")[1])||void 0,M.isAIR=C.indexOf("AdobeAIR")>=0,M.isAndroid=C.indexOf("Android")>=0,M.isChromeOS=C.indexOf(" CrOS ")>=0,M.isIOS=/iPad|iPhone|iPod/.test(C)&&!window.MSStream,M.isIOS&&(M.isMac=!0),M.isMobile=M.isIOS||M.isAndroid}),ace.define("ace/lib/dom",["require","exports","module","ace/lib/useragent"],function(n,M,G){"use strict";var L=n("./useragent"),T="http://www.w3.org/1999/xhtml";M.buildDom=function s(i,r,a){if(typeof i=="string"&&i){var c=document.createTextNode(i);return r&&r.appendChild(c),c}if(!Array.isArray(i))return i&&i.appendChild&&r&&r.appendChild(i),i;if(typeof i[0]!="string"||!i[0]){for(var p=[],g=0;g=1.5:!0,L.isChromeOS&&(M.HI_DPI=!1),typeof document!="undefined"){var o=document.createElement("div");M.HI_DPI&&o.style.transform!==void 0&&(M.HAS_CSS_TRANSFORMS=!0),!L.isEdge&&typeof o.style.animationName!="undefined"&&(M.HAS_CSS_ANIMATION=!0),o=null}M.HAS_CSS_TRANSFORMS?M.translate=function(s,i,r){s.style.transform="translate("+Math.round(i)+"px, "+Math.round(r)+"px)"}:M.translate=function(s,i,r){s.style.top=Math.round(r)+"px",s.style.left=Math.round(i)+"px"}}),ace.define("ace/lib/net",["require","exports","module","ace/lib/dom"],function(n,M,G){/* -* based on code from: -* -* @license RequireJS text 0.25.0 Copyright (c) 2010-2011, The Dojo Foundation All Rights Reserved. -* Available via the MIT or new BSD license. -* see: http://github.com/jrburke/requirejs for details -*/"use strict";var L=n("./dom");M.get=function(T,C){var d=new XMLHttpRequest;d.open("GET",T,!0),d.onreadystatechange=function(){d.readyState===4&&C(d.responseText)},d.send(null)},M.loadScript=function(T,C){var d=L.getDocumentHead(),h=document.createElement("script");h.src=T,d.appendChild(h),h.onload=h.onreadystatechange=function(l,o){(o||!h.readyState||h.readyState=="loaded"||h.readyState=="complete")&&(h=h.onload=h.onreadystatechange=null,o||C())}},M.qualifyURL=function(T){var C=document.createElement("a");return C.href=T,C.href}}),ace.define("ace/lib/oop",["require","exports","module"],function(n,M,G){"use strict";M.inherits=function(L,T){L.super_=T,L.prototype=Object.create(T.prototype,{constructor:{value:L,enumerable:!1,writable:!0,configurable:!0}})},M.mixin=function(L,T){for(var C in T)L[C]=T[C];return L},M.implement=function(L,T){M.mixin(L,T)}}),ace.define("ace/lib/event_emitter",["require","exports","module"],function(n,M,G){"use strict";var L={},T=function(){this.propagationStopped=!0},C=function(){this.defaultPrevented=!0};L._emit=L._dispatchEvent=function(d,h){this._eventRegistry||(this._eventRegistry={}),this._defaultHandlers||(this._defaultHandlers={});var l=this._eventRegistry[d]||[],o=this._defaultHandlers[d];if(!(!l.length&&!o)){(typeof h!="object"||!h)&&(h={}),h.type||(h.type=d),h.stopPropagation||(h.stopPropagation=T),h.preventDefault||(h.preventDefault=C),l=l.slice();for(var s=0;s { // webpackBootstrap +/******/ var __webpack_modules__ = ({ + +/***/ 239: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +/* module decorator */ module = __webpack_require__.nmd(module); +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +/** + * Define a module along with a payload + * @param module a name for the payload + * @param payload a function to call with (require, exports, module) params + */ + +(function() { + +var ACE_NAMESPACE = "ace"; + +var global = (function() { return this; })(); +if (!global && typeof window != "undefined") global = window; // strict mode + + +if (!ACE_NAMESPACE && typeof requirejs !== "undefined") + return; + + +var define = function(module, deps, payload) { + if (typeof module !== "string") { + if (define.original) + define.original.apply(this, arguments); + else { + console.error("dropping module because define wasn\'t a string."); + console.trace(); + } + return; + } + if (arguments.length == 2) + payload = deps; + if (!define.modules[module]) { + define.payloads[module] = payload; + define.modules[module] = null; + } +}; + +define.modules = {}; +define.payloads = {}; + +/** + * Get at functionality define()ed using the function above + */ +var _require = function(parentId, module, callback) { + if (typeof module === "string") { + var payload = lookup(parentId, module); + if (payload != undefined) { + callback && callback(); + return payload; + } + } else if (Object.prototype.toString.call(module) === "[object Array]") { + var params = []; + for (var i = 0, l = module.length; i < l; ++i) { + var dep = lookup(parentId, module[i]); + if (dep == undefined && require.original) + return; + params.push(dep); + } + return callback && callback.apply(null, params) || true; + } +}; + +var require = function(module, callback) { + var packagedModule = _require("", module, callback); + if (packagedModule == undefined && require.original) + return require.original.apply(this, arguments); + return packagedModule; +}; + +var normalizeModule = function(parentId, moduleName) { + // normalize plugin requires + if (moduleName.indexOf("!") !== -1) { + var chunks = moduleName.split("!"); + return normalizeModule(parentId, chunks[0]) + "!" + normalizeModule(parentId, chunks[1]); + } + // normalize relative requires + if (moduleName.charAt(0) == ".") { + var base = parentId.split("/").slice(0, -1).join("/"); + moduleName = base + "/" + moduleName; + + while(moduleName.indexOf(".") !== -1 && previous != moduleName) { + var previous = moduleName; + moduleName = moduleName.replace(/\/\.\//, "/").replace(/[^\/]+\/\.\.\//, ""); + } + } + return moduleName; +}; + +/** + * Internal function to lookup moduleNames and resolve them by calling the + * definition function if needed. + */ +var lookup = function(parentId, moduleName) { + moduleName = normalizeModule(parentId, moduleName); + + var module = define.modules[moduleName]; + if (!module) { + module = define.payloads[moduleName]; + if (typeof module === 'function') { + var exports = {}; + var mod = { + id: moduleName, + uri: '', + exports: exports, + packaged: true + }; + + var req = function(module, callback) { + return _require(moduleName, module, callback); + }; + + var returnValue = module(req, exports, mod); + exports = returnValue || mod.exports; + define.modules[moduleName] = exports; + delete define.payloads[moduleName]; + } + module = define.modules[moduleName] = exports || module; + } + return module; +}; + +function exportAce(ns) { + var root = global; + if (ns) { + if (!global[ns]) + global[ns] = {}; + root = global[ns]; + } + + if (!root.define || !root.define.packaged) { + define.original = root.define; + root.define = define; + root.define.packaged = true; + } + + if (!root.require || !root.require.packaged) { + require.original = root.require; + root.require = require; + root.require.packaged = true; + } +} + +exportAce(ACE_NAMESPACE); + +})(); + +ace.define("ace/lib/es6-shim",["require","exports","module"], function(require, exports, module){function defineProp(obj, name, val) { + Object.defineProperty(obj, name, { + value: val, + enumerable: false, + writable: true, + configurable: true + }); +} +if (!String.prototype.startsWith) { + defineProp(String.prototype, "startsWith", function (searchString, position) { + position = position || 0; + return this.lastIndexOf(searchString, position) === position; + }); +} +if (!String.prototype.endsWith) { + defineProp(String.prototype, "endsWith", function (searchString, position) { + var subjectString = this; + if (position === undefined || position > subjectString.length) { + position = subjectString.length; + } + position -= searchString.length; + var lastIndex = subjectString.indexOf(searchString, position); + return lastIndex !== -1 && lastIndex === position; + }); +} +if (!String.prototype.repeat) { + defineProp(String.prototype, "repeat", function (count) { + var result = ""; + var string = this; + while (count > 0) { + if (count & 1) + result += string; + if ((count >>= 1)) + string += string; + } + return result; + }); +} +if (!String.prototype.includes) { + defineProp(String.prototype, "includes", function (str, position) { + return this.indexOf(str, position) != -1; + }); +} +if (!Object.assign) { + Object.assign = function (target) { + if (target === undefined || target === null) { + throw new TypeError("Cannot convert undefined or null to object"); + } + var output = Object(target); + for (var index = 1; index < arguments.length; index++) { + var source = arguments[index]; + if (source !== undefined && source !== null) { + Object.keys(source).forEach(function (key) { + output[key] = source[key]; + }); + } + } + return output; + }; +} +if (!Object.values) { + Object.values = function (o) { + return Object.keys(o).map(function (k) { + return o[k]; + }); + }; +} +if (!Array.prototype.find) { + defineProp(Array.prototype, "find", function (predicate) { + var len = this.length; + var thisArg = arguments[1]; + for (var k = 0; k < len; k++) { + var kValue = this[k]; + if (predicate.call(thisArg, kValue, k, this)) { + return kValue; + } + } + }); +} +if (!Array.prototype.findIndex) { + defineProp(Array.prototype, "findIndex", function (predicate) { + var len = this.length; + var thisArg = arguments[1]; + for (var k = 0; k < len; k++) { + var kValue = this[k]; + if (predicate.call(thisArg, kValue, k, this)) { + return k; + } + } + }); +} +if (!Array.prototype.includes) { + defineProp(Array.prototype, "includes", function (item, position) { + return this.indexOf(item, position) != -1; + }); +} +if (!Array.prototype.fill) { + defineProp(Array.prototype, "fill", function (value) { + var O = this; + var len = O.length >>> 0; + var start = arguments[1]; + var relativeStart = start >> 0; + var k = relativeStart < 0 + ? Math.max(len + relativeStart, 0) + : Math.min(relativeStart, len); + var end = arguments[2]; + var relativeEnd = end === undefined ? len : end >> 0; + var final = relativeEnd < 0 + ? Math.max(len + relativeEnd, 0) + : Math.min(relativeEnd, len); + while (k < final) { + O[k] = value; + k++; + } + return O; + }); +} +if (!Array.of) { + defineProp(Array, "of", function () { + return Array.prototype.slice.call(arguments); + }); +} + +}); + +ace.define("ace/lib/fixoldbrowsers",["require","exports","module","ace/lib/es6-shim"], function(require, exports, module){// vim:set ts=4 sts=4 sw=4 st: +"use strict"; +require("./es6-shim"); + +}); + +ace.define("ace/lib/deep_copy",["require","exports","module"], function(require, exports, module){exports.deepCopy = function deepCopy(obj) { + if (typeof obj !== "object" || !obj) + return obj; + var copy; + if (Array.isArray(obj)) { + copy = []; + for (var key = 0; key < obj.length; key++) { + copy[key] = deepCopy(obj[key]); + } + return copy; + } + if (Object.prototype.toString.call(obj) !== "[object Object]") + return obj; + copy = {}; + for (var key in obj) + copy[key] = deepCopy(obj[key]); + return copy; +}; + +}); + +ace.define("ace/lib/lang",["require","exports","module","ace/lib/deep_copy"], function(require, exports, module){"use strict"; +exports.last = function (a) { + return a[a.length - 1]; +}; +exports.stringReverse = function (string) { + return string.split("").reverse().join(""); +}; +exports.stringRepeat = function (string, count) { + var result = ''; + while (count > 0) { + if (count & 1) + result += string; + if (count >>= 1) + string += string; + } + return result; +}; +var trimBeginRegexp = /^\s\s*/; +var trimEndRegexp = /\s\s*$/; +exports.stringTrimLeft = function (string) { + return string.replace(trimBeginRegexp, ''); +}; +exports.stringTrimRight = function (string) { + return string.replace(trimEndRegexp, ''); +}; +exports.copyObject = function (obj) { + var copy = {}; + for (var key in obj) { + copy[key] = obj[key]; + } + return copy; +}; +exports.copyArray = function (array) { + var copy = []; + for (var i = 0, l = array.length; i < l; i++) { + if (array[i] && typeof array[i] == "object") + copy[i] = this.copyObject(array[i]); + else + copy[i] = array[i]; + } + return copy; +}; +exports.deepCopy = require("./deep_copy").deepCopy; +exports.arrayToMap = function (arr) { + var map = {}; + for (var i = 0; i < arr.length; i++) { + map[arr[i]] = 1; + } + return map; +}; +exports.createMap = function (props) { + var map = Object.create(null); + for (var i in props) { + map[i] = props[i]; + } + return map; +}; +exports.arrayRemove = function (array, value) { + for (var i = 0; i <= array.length; i++) { + if (value === array[i]) { + array.splice(i, 1); + } + } +}; +exports.escapeRegExp = function (str) { + return str.replace(/([.*+?^${}()|[\]\/\\])/g, '\\$1'); +}; +exports.escapeHTML = function (str) { + return ("" + str).replace(/&/g, "&").replace(/"/g, """).replace(/'/g, "'").replace(/ 0xffff ? 2 : 1; +}; + +}); + +ace.define("ace/lib/useragent",["require","exports","module"], function(require, exports, module){"use strict"; +exports.OS = { + LINUX: "LINUX", + MAC: "MAC", + WINDOWS: "WINDOWS" +}; +exports.getOS = function () { + if (exports.isMac) { + return exports.OS.MAC; + } + else if (exports.isLinux) { + return exports.OS.LINUX; + } + else { + return exports.OS.WINDOWS; + } +}; +var _navigator = typeof navigator == "object" ? navigator : {}; +var os = (/mac|win|linux/i.exec(_navigator.platform) || ["other"])[0].toLowerCase(); +var ua = _navigator.userAgent || ""; +var appName = _navigator.appName || ""; +exports.isWin = (os == "win"); +exports.isMac = (os == "mac"); +exports.isLinux = (os == "linux"); +exports.isIE = + (appName == "Microsoft Internet Explorer" || appName.indexOf("MSAppHost") >= 0) + ? parseFloat((ua.match(/(?:MSIE |Trident\/[0-9]+[\.0-9]+;.*rv:)([0-9]+[\.0-9]+)/) || [])[1]) + : parseFloat((ua.match(/(?:Trident\/[0-9]+[\.0-9]+;.*rv:)([0-9]+[\.0-9]+)/) || [])[1]); // for ie +exports.isOldIE = exports.isIE && exports.isIE < 9; +exports.isGecko = exports.isMozilla = ua.match(/ Gecko\/\d+/); +exports.isOpera = typeof opera == "object" && Object.prototype.toString.call(window.opera) == "[object Opera]"; +exports.isWebKit = parseFloat(ua.split("WebKit/")[1]) || undefined; +exports.isChrome = parseFloat(ua.split(" Chrome/")[1]) || undefined; +exports.isSafari = parseFloat(ua.split(" Safari/")[1]) && !exports.isChrome || undefined; +exports.isEdge = parseFloat(ua.split(" Edge/")[1]) || undefined; +exports.isAIR = ua.indexOf("AdobeAIR") >= 0; +exports.isAndroid = ua.indexOf("Android") >= 0; +exports.isChromeOS = ua.indexOf(" CrOS ") >= 0; +exports.isIOS = /iPad|iPhone|iPod/.test(ua) && !window.MSStream; +if (exports.isIOS) + exports.isMac = true; +exports.isMobile = exports.isIOS || exports.isAndroid; + +}); + +ace.define("ace/lib/dom",["require","exports","module","ace/lib/useragent"], function(require, exports, module){"use strict"; +var useragent = require("./useragent"); +var XHTML_NS = "http://www.w3.org/1999/xhtml"; +exports.buildDom = function buildDom(arr, parent, refs) { + if (typeof arr == "string" && arr) { + var txt = document.createTextNode(arr); + if (parent) + parent.appendChild(txt); + return txt; + } + if (!Array.isArray(arr)) { + if (arr && arr.appendChild && parent) + parent.appendChild(arr); + return arr; + } + if (typeof arr[0] != "string" || !arr[0]) { + var els = []; + for (var i = 0; i < arr.length; i++) { + var ch = buildDom(arr[i], parent, refs); + ch && els.push(ch); + } + return els; + } + var el = document.createElement(arr[0]); + var options = arr[1]; + var childIndex = 1; + if (options && typeof options == "object" && !Array.isArray(options)) + childIndex = 2; + for (var i = childIndex; i < arr.length; i++) + buildDom(arr[i], el, refs); + if (childIndex == 2) { + Object.keys(options).forEach(function (n) { + var val = options[n]; + if (n === "class") { + el.className = Array.isArray(val) ? val.join(" ") : val; + } + else if (typeof val == "function" || n == "value" || n[0] == "$") { + el[n] = val; + } + else if (n === "ref") { + if (refs) + refs[val] = el; + } + else if (n === "style") { + if (typeof val == "string") + el.style.cssText = val; + } + else if (val != null) { + el.setAttribute(n, val); + } + }); + } + if (parent) + parent.appendChild(el); + return el; +}; +exports.getDocumentHead = function (doc) { + if (!doc) + doc = document; + return doc.head || doc.getElementsByTagName("head")[0] || doc.documentElement; +}; +exports.createElement = function (tag, ns) { + return document.createElementNS ? + document.createElementNS(ns || XHTML_NS, tag) : + document.createElement(tag); +}; +exports.removeChildren = function (element) { + element.innerHTML = ""; +}; +exports.createTextNode = function (textContent, element) { + var doc = element ? element.ownerDocument : document; + return doc.createTextNode(textContent); +}; +exports.createFragment = function (element) { + var doc = element ? element.ownerDocument : document; + return doc.createDocumentFragment(); +}; +exports.hasCssClass = function (el, name) { + var classes = (el.className + "").split(/\s+/g); + return classes.indexOf(name) !== -1; +}; +exports.addCssClass = function (el, name) { + if (!exports.hasCssClass(el, name)) { + el.className += " " + name; + } +}; +exports.removeCssClass = function (el, name) { + var classes = el.className.split(/\s+/g); + while (true) { + var index = classes.indexOf(name); + if (index == -1) { + break; + } + classes.splice(index, 1); + } + el.className = classes.join(" "); +}; +exports.toggleCssClass = function (el, name) { + var classes = el.className.split(/\s+/g), add = true; + while (true) { + var index = classes.indexOf(name); + if (index == -1) { + break; + } + add = false; + classes.splice(index, 1); + } + if (add) + classes.push(name); + el.className = classes.join(" "); + return add; +}; +exports.setCssClass = function (node, className, include) { + if (include) { + exports.addCssClass(node, className); + } + else { + exports.removeCssClass(node, className); + } +}; +exports.hasCssString = function (id, doc) { + var index = 0, sheets; + doc = doc || document; + if ((sheets = doc.querySelectorAll("style"))) { + while (index < sheets.length) { + if (sheets[index++].id === id) { + return true; + } + } + } +}; +exports.removeElementById = function (id, doc) { + doc = doc || document; + if (doc.getElementById(id)) { + doc.getElementById(id).remove(); + } +}; +var strictCSP; +var cssCache = []; +exports.useStrictCSP = function (value) { + strictCSP = value; + if (value == false) + insertPendingStyles(); + else if (!cssCache) + cssCache = []; +}; +function insertPendingStyles() { + var cache = cssCache; + cssCache = null; + cache && cache.forEach(function (item) { + importCssString(item[0], item[1]); + }); +} +function importCssString(cssText, id, target) { + if (typeof document == "undefined") + return; + if (cssCache) { + if (target) { + insertPendingStyles(); + } + else if (target === false) { + return cssCache.push([cssText, id]); + } + } + if (strictCSP) + return; + var container = target; + if (!target || !target.getRootNode) { + container = document; + } + else { + container = target.getRootNode(); + if (!container || container == target) + container = document; + } + var doc = container.ownerDocument || container; + if (id && exports.hasCssString(id, container)) + return null; + if (id) + cssText += "\n/*# sourceURL=ace/css/" + id + " */"; + var style = exports.createElement("style"); + style.appendChild(doc.createTextNode(cssText)); + if (id) + style.id = id; + if (container == doc) + container = exports.getDocumentHead(doc); + container.insertBefore(style, container.firstChild); +} +exports.importCssString = importCssString; +exports.importCssStylsheet = function (uri, doc) { + exports.buildDom(["link", { rel: "stylesheet", href: uri }], exports.getDocumentHead(doc)); +}; +exports.scrollbarWidth = function (doc) { + var inner = exports.createElement("ace_inner"); + inner.style.width = "100%"; + inner.style.minWidth = "0px"; + inner.style.height = "200px"; + inner.style.display = "block"; + var outer = exports.createElement("ace_outer"); + var style = outer.style; + style.position = "absolute"; + style.left = "-10000px"; + style.overflow = "hidden"; + style.width = "200px"; + style.minWidth = "0px"; + style.height = "150px"; + style.display = "block"; + outer.appendChild(inner); + var body = (doc && doc.documentElement) || (document && document.documentElement); + if (!body) + return 0; + body.appendChild(outer); + var noScrollbar = inner.offsetWidth; + style.overflow = "scroll"; + var withScrollbar = inner.offsetWidth; + if (noScrollbar === withScrollbar) { + withScrollbar = outer.clientWidth; + } + body.removeChild(outer); + return noScrollbar - withScrollbar; +}; +exports.computedStyle = function (element, style) { + return window.getComputedStyle(element, "") || {}; +}; +exports.setStyle = function (styles, property, value) { + if (styles[property] !== value) { + styles[property] = value; + } +}; +exports.HAS_CSS_ANIMATION = false; +exports.HAS_CSS_TRANSFORMS = false; +exports.HI_DPI = useragent.isWin + ? typeof window !== "undefined" && window.devicePixelRatio >= 1.5 + : true; +if (useragent.isChromeOS) + exports.HI_DPI = false; +if (typeof document !== "undefined") { + var div = document.createElement("div"); + if (exports.HI_DPI && div.style.transform !== undefined) + exports.HAS_CSS_TRANSFORMS = true; + if (!useragent.isEdge && typeof div.style.animationName !== "undefined") + exports.HAS_CSS_ANIMATION = true; + div = null; +} +if (exports.HAS_CSS_TRANSFORMS) { + exports.translate = function (element, tx, ty) { + element.style.transform = "translate(" + Math.round(tx) + "px, " + Math.round(ty) + "px)"; + }; +} +else { + exports.translate = function (element, tx, ty) { + element.style.top = Math.round(ty) + "px"; + element.style.left = Math.round(tx) + "px"; + }; +} + +}); + +ace.define("ace/lib/net",["require","exports","module","ace/lib/dom"], function(require, exports, module){/* + * based on code from: + * + * @license RequireJS text 0.25.0 Copyright (c) 2010-2011, The Dojo Foundation All Rights Reserved. + * Available via the MIT or new BSD license. + * see: http://github.com/jrburke/requirejs for details + */ +"use strict"; +var dom = require("./dom"); +exports.get = function (url, callback) { + var xhr = new XMLHttpRequest(); + xhr.open('GET', url, true); + xhr.onreadystatechange = function () { + if (xhr.readyState === 4) { + callback(xhr.responseText); + } + }; + xhr.send(null); +}; +exports.loadScript = function (path, callback) { + var head = dom.getDocumentHead(); + var s = document.createElement('script'); + s.src = path; + head.appendChild(s); + s.onload = s.onreadystatechange = function (_, isAbort) { + if (isAbort || !s.readyState || s.readyState == "loaded" || s.readyState == "complete") { + s = s.onload = s.onreadystatechange = null; + if (!isAbort) + callback(); + } + }; +}; +exports.qualifyURL = function (url) { + var a = document.createElement('a'); + a.href = url; + return a.href; +}; + +}); + +ace.define("ace/lib/oop",["require","exports","module"], function(require, exports, module){"use strict"; +exports.inherits = function (ctor, superCtor) { + ctor.super_ = superCtor; + ctor.prototype = Object.create(superCtor.prototype, { + constructor: { + value: ctor, + enumerable: false, + writable: true, + configurable: true + } + }); +}; +exports.mixin = function (obj, mixin) { + for (var key in mixin) { + obj[key] = mixin[key]; + } + return obj; +}; +exports.implement = function (proto, mixin) { + exports.mixin(proto, mixin); +}; + +}); + +ace.define("ace/lib/event_emitter",["require","exports","module"], function(require, exports, module){"use strict"; +var EventEmitter = {}; +var stopPropagation = function () { this.propagationStopped = true; }; +var preventDefault = function () { this.defaultPrevented = true; }; +EventEmitter._emit = + EventEmitter._dispatchEvent = function (eventName, e) { + this._eventRegistry || (this._eventRegistry = {}); + this._defaultHandlers || (this._defaultHandlers = {}); + var listeners = this._eventRegistry[eventName] || []; + var defaultHandler = this._defaultHandlers[eventName]; + if (!listeners.length && !defaultHandler) + return; + if (typeof e != "object" || !e) + e = {}; + if (!e.type) + e.type = eventName; + if (!e.stopPropagation) + e.stopPropagation = stopPropagation; + if (!e.preventDefault) + e.preventDefault = preventDefault; + listeners = listeners.slice(); + for (var i = 0; i < listeners.length; i++) { + listeners[i](e, this); + if (e.propagationStopped) + break; + } + if (defaultHandler && !e.defaultPrevented) + return defaultHandler(e, this); + }; +EventEmitter._signal = function (eventName, e) { + var listeners = (this._eventRegistry || {})[eventName]; + if (!listeners) + return; + listeners = listeners.slice(); + for (var i = 0; i < listeners.length; i++) + listeners[i](e, this); +}; +EventEmitter.once = function (eventName, callback) { + var _self = this; + this.on(eventName, function newCallback() { + _self.off(eventName, newCallback); + callback.apply(null, arguments); + }); + if (!callback) { + return new Promise(function (resolve) { + callback = resolve; + }); + } +}; +EventEmitter.setDefaultHandler = function (eventName, callback) { + var handlers = this._defaultHandlers; + if (!handlers) + handlers = this._defaultHandlers = { _disabled_: {} }; + if (handlers[eventName]) { + var old = handlers[eventName]; + var disabled = handlers._disabled_[eventName]; + if (!disabled) + handlers._disabled_[eventName] = disabled = []; + disabled.push(old); + var i = disabled.indexOf(callback); + if (i != -1) + disabled.splice(i, 1); + } + handlers[eventName] = callback; +}; +EventEmitter.removeDefaultHandler = function (eventName, callback) { + var handlers = this._defaultHandlers; + if (!handlers) + return; + var disabled = handlers._disabled_[eventName]; + if (handlers[eventName] == callback) { + if (disabled) + this.setDefaultHandler(eventName, disabled.pop()); + } + else if (disabled) { + var i = disabled.indexOf(callback); + if (i != -1) + disabled.splice(i, 1); + } +}; +EventEmitter.on = + EventEmitter.addEventListener = function (eventName, callback, capturing) { + this._eventRegistry = this._eventRegistry || {}; + var listeners = this._eventRegistry[eventName]; + if (!listeners) + listeners = this._eventRegistry[eventName] = []; + if (listeners.indexOf(callback) == -1) + listeners[capturing ? "unshift" : "push"](callback); + return callback; + }; +EventEmitter.off = + EventEmitter.removeListener = + EventEmitter.removeEventListener = function (eventName, callback) { + this._eventRegistry = this._eventRegistry || {}; + var listeners = this._eventRegistry[eventName]; + if (!listeners) + return; + var index = listeners.indexOf(callback); + if (index !== -1) + listeners.splice(index, 1); + }; +EventEmitter.removeAllListeners = function (eventName) { + if (!eventName) + this._eventRegistry = this._defaultHandlers = undefined; + if (this._eventRegistry) + this._eventRegistry[eventName] = undefined; + if (this._defaultHandlers) + this._defaultHandlers[eventName] = undefined; +}; +exports.EventEmitter = EventEmitter; + +}); + +ace.define("ace/lib/report_error",["require","exports","module"], function(require, exports, module){exports.reportError = function reportError(msg, data) { + var e = new Error(msg); + e.data = data; + if (typeof console == "object" && console.error) + console.error(e); + setTimeout(function () { throw e; }); +}; + +}); + +ace.define("ace/lib/app_config",["require","exports","module","ace/lib/oop","ace/lib/event_emitter","ace/lib/report_error"], function(require, exports, module){"no use strict"; +var oop = require("./oop"); +var EventEmitter = require("./event_emitter").EventEmitter; +var reportError = require("./report_error").reportError; +var optionsProvider = { + setOptions: function (optList) { + Object.keys(optList).forEach(function (key) { + this.setOption(key, optList[key]); + }, this); + }, + getOptions: function (optionNames) { + var result = {}; + if (!optionNames) { + var options = this.$options; + optionNames = Object.keys(options).filter(function (key) { + return !options[key].hidden; + }); + } + else if (!Array.isArray(optionNames)) { + result = optionNames; + optionNames = Object.keys(result); + } + optionNames.forEach(function (key) { + result[key] = this.getOption(key); + }, this); + return result; + }, + setOption: function (name, value) { + if (this["$" + name] === value) + return; + var opt = this.$options[name]; + if (!opt) { + return warn('misspelled option "' + name + '"'); + } + if (opt.forwardTo) + return this[opt.forwardTo] && this[opt.forwardTo].setOption(name, value); + if (!opt.handlesSet) + this["$" + name] = value; + if (opt && opt.set) + opt.set.call(this, value); + }, + getOption: function (name) { + var opt = this.$options[name]; + if (!opt) { + return warn('misspelled option "' + name + '"'); + } + if (opt.forwardTo) + return this[opt.forwardTo] && this[opt.forwardTo].getOption(name); + return opt && opt.get ? opt.get.call(this) : this["$" + name]; + } +}; +function warn(message) { + if (typeof console != "undefined" && console.warn) + console.warn.apply(console, arguments); +} +var messages; +var AppConfig = /** @class */ (function () { + function AppConfig() { + this.$defaultOptions = {}; + } + AppConfig.prototype.defineOptions = function (obj, path, options) { + if (!obj.$options) + this.$defaultOptions[path] = obj.$options = {}; + Object.keys(options).forEach(function (key) { + var opt = options[key]; + if (typeof opt == "string") + opt = { forwardTo: opt }; + opt.name || (opt.name = key); + obj.$options[opt.name] = opt; + if ("initialValue" in opt) + obj["$" + opt.name] = opt.initialValue; + }); + oop.implement(obj, optionsProvider); + return this; + }; + AppConfig.prototype.resetOptions = function (obj) { + Object.keys(obj.$options).forEach(function (key) { + var opt = obj.$options[key]; + if ("value" in opt) + obj.setOption(key, opt.value); + }); + }; + AppConfig.prototype.setDefaultValue = function (path, name, value) { + if (!path) { + for (path in this.$defaultOptions) + if (this.$defaultOptions[path][name]) + break; + if (!this.$defaultOptions[path][name]) + return false; + } + var opts = this.$defaultOptions[path] || (this.$defaultOptions[path] = {}); + if (opts[name]) { + if (opts.forwardTo) + this.setDefaultValue(opts.forwardTo, name, value); + else + opts[name].value = value; + } + }; + AppConfig.prototype.setDefaultValues = function (path, optionHash) { + Object.keys(optionHash).forEach(function (key) { + this.setDefaultValue(path, key, optionHash[key]); + }, this); + }; + AppConfig.prototype.setMessages = function (value) { + messages = value; + }; + AppConfig.prototype.nls = function (string, params) { + if (messages && !messages[string]) { + warn("No message found for '" + string + "' in the provided messages, falling back to default English message."); + } + var translated = messages && messages[string] || string; + if (params) { + translated = translated.replace(/\$(\$|[\d]+)/g, function (_, name) { + if (name == "$") + return "$"; + return params[name]; + }); + } + return translated; + }; + return AppConfig; +}()); +AppConfig.prototype.warn = warn; +AppConfig.prototype.reportError = reportError; +oop.implement(AppConfig.prototype, EventEmitter); +exports.AppConfig = AppConfig; + +}); + +ace.define("ace/theme/textmate-css",["require","exports","module"], function(require, exports, module){module.exports = ".ace-tm .ace_gutter {\n background: #f0f0f0;\n color: #333;\n}\n\n.ace-tm .ace_print-margin {\n width: 1px;\n background: #e8e8e8;\n}\n\n.ace-tm .ace_fold {\n background-color: #6B72E6;\n}\n\n.ace-tm {\n background-color: #FFFFFF;\n color: black;\n}\n\n.ace-tm .ace_cursor {\n color: black;\n}\n \n.ace-tm .ace_invisible {\n color: rgb(191, 191, 191);\n}\n\n.ace-tm .ace_storage,\n.ace-tm .ace_keyword {\n color: blue;\n}\n\n.ace-tm .ace_constant {\n color: rgb(197, 6, 11);\n}\n\n.ace-tm .ace_constant.ace_buildin {\n color: rgb(88, 72, 246);\n}\n\n.ace-tm .ace_constant.ace_language {\n color: rgb(88, 92, 246);\n}\n\n.ace-tm .ace_constant.ace_library {\n color: rgb(6, 150, 14);\n}\n\n.ace-tm .ace_invalid {\n background-color: rgba(255, 0, 0, 0.1);\n color: red;\n}\n\n.ace-tm .ace_support.ace_function {\n color: rgb(60, 76, 114);\n}\n\n.ace-tm .ace_support.ace_constant {\n color: rgb(6, 150, 14);\n}\n\n.ace-tm .ace_support.ace_type,\n.ace-tm .ace_support.ace_class {\n color: rgb(109, 121, 222);\n}\n\n.ace-tm .ace_keyword.ace_operator {\n color: rgb(104, 118, 135);\n}\n\n.ace-tm .ace_string {\n color: rgb(3, 106, 7);\n}\n\n.ace-tm .ace_comment {\n color: rgb(76, 136, 107);\n}\n\n.ace-tm .ace_comment.ace_doc {\n color: rgb(0, 102, 255);\n}\n\n.ace-tm .ace_comment.ace_doc.ace_tag {\n color: rgb(128, 159, 191);\n}\n\n.ace-tm .ace_constant.ace_numeric {\n color: rgb(0, 0, 205);\n}\n\n.ace-tm .ace_variable {\n color: rgb(49, 132, 149);\n}\n\n.ace-tm .ace_xml-pe {\n color: rgb(104, 104, 91);\n}\n\n.ace-tm .ace_entity.ace_name.ace_function {\n color: #0000A2;\n}\n\n\n.ace-tm .ace_heading {\n color: rgb(12, 7, 255);\n}\n\n.ace-tm .ace_list {\n color:rgb(185, 6, 144);\n}\n\n.ace-tm .ace_meta.ace_tag {\n color:rgb(0, 22, 142);\n}\n\n.ace-tm .ace_string.ace_regex {\n color: rgb(255, 0, 0)\n}\n\n.ace-tm .ace_marker-layer .ace_selection {\n background: rgb(181, 213, 255);\n}\n.ace-tm.ace_multiselect .ace_selection.ace_start {\n box-shadow: 0 0 3px 0px white;\n}\n.ace-tm .ace_marker-layer .ace_step {\n background: rgb(252, 255, 0);\n}\n\n.ace-tm .ace_marker-layer .ace_stack {\n background: rgb(164, 229, 101);\n}\n\n.ace-tm .ace_marker-layer .ace_bracket {\n margin: -1px 0 0 -1px;\n border: 1px solid rgb(192, 192, 192);\n}\n\n.ace-tm .ace_marker-layer .ace_active-line {\n background: rgba(0, 0, 0, 0.07);\n}\n\n.ace-tm .ace_gutter-active-line {\n background-color : #dcdcdc;\n}\n\n.ace-tm .ace_marker-layer .ace_selected-word {\n background: rgb(250, 250, 255);\n border: 1px solid rgb(200, 200, 250);\n}\n\n.ace-tm .ace_indent-guide {\n background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==\") right repeat-y;\n}\n\n.ace-tm .ace_indent-guide-active {\n background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAAZSURBVHjaYvj///9/hivKyv8BAAAA//8DACLqBhbvk+/eAAAAAElFTkSuQmCC\") right repeat-y;\n}\n"; + +}); + +ace.define("ace/theme/textmate",["require","exports","module","ace/theme/textmate-css","ace/lib/dom"], function(require, exports, module){"use strict"; +exports.isDark = false; +exports.cssClass = "ace-tm"; +exports.cssText = require("./textmate-css"); +exports.$id = "ace/theme/textmate"; +var dom = require("../lib/dom"); +dom.importCssString(exports.cssText, exports.cssClass, false); + +}); + +ace.define("ace/config",["require","exports","module","ace/lib/lang","ace/lib/net","ace/lib/dom","ace/lib/app_config","ace/theme/textmate"], function(require, exports, module){"no use strict"; +var lang = require("./lib/lang"); +var net = require("./lib/net"); +var dom = require("./lib/dom"); +var AppConfig = require("./lib/app_config").AppConfig; +module.exports = exports = new AppConfig(); +var options = { + packaged: false, + workerPath: null, + modePath: null, + themePath: null, + basePath: "", + suffix: ".js", + $moduleUrls: {}, + loadWorkerFromBlob: true, + sharedPopups: false, + useStrictCSP: null +}; +exports.get = function (key) { + if (!options.hasOwnProperty(key)) + throw new Error("Unknown config key: " + key); + return options[key]; +}; +exports.set = function (key, value) { + if (options.hasOwnProperty(key)) + options[key] = value; + else if (this.setDefaultValue("", key, value) == false) + throw new Error("Unknown config key: " + key); + if (key == "useStrictCSP") + dom.useStrictCSP(value); +}; +exports.all = function () { + return lang.copyObject(options); +}; +exports.$modes = {}; +exports.moduleUrl = function (name, component) { + if (options.$moduleUrls[name]) + return options.$moduleUrls[name]; + var parts = name.split("/"); + component = component || parts[parts.length - 2] || ""; + var sep = component == "snippets" ? "/" : "-"; + var base = parts[parts.length - 1]; + if (component == "worker" && sep == "-") { + var re = new RegExp("^" + component + "[\\-_]|[\\-_]" + component + "$", "g"); + base = base.replace(re, ""); + } + if ((!base || base == component) && parts.length > 1) + base = parts[parts.length - 2]; + var path = options[component + "Path"]; + if (path == null) { + path = options.basePath; + } + else if (sep == "/") { + component = sep = ""; + } + if (path && path.slice(-1) != "/") + path += "/"; + return path + component + sep + base + this.get("suffix"); +}; +exports.setModuleUrl = function (name, subst) { + return options.$moduleUrls[name] = subst; +}; +var loader = function (moduleName, cb) { + if (moduleName === "ace/theme/textmate" || moduleName === "./theme/textmate") + return cb(null, require("./theme/textmate")); + if (customLoader) + return customLoader(moduleName, cb); + console.error("loader is not configured"); +}; +var customLoader; +exports.setLoader = function (cb) { + customLoader = cb; +}; +exports.dynamicModules = Object.create(null); +exports.$loading = {}; +exports.$loaded = {}; +exports.loadModule = function (moduleName, onLoad) { + var loadedModule, moduleType; + if (Array.isArray(moduleName)) { + moduleType = moduleName[0]; + moduleName = moduleName[1]; + } + var load = function (module) { + if (module && !exports.$loading[moduleName]) + return onLoad && onLoad(module); + if (!exports.$loading[moduleName]) + exports.$loading[moduleName] = []; + exports.$loading[moduleName].push(onLoad); + if (exports.$loading[moduleName].length > 1) + return; + var afterLoad = function () { + loader(moduleName, function (err, module) { + if (module) + exports.$loaded[moduleName] = module; + exports._emit("load.module", { name: moduleName, module: module }); + var listeners = exports.$loading[moduleName]; + exports.$loading[moduleName] = null; + listeners.forEach(function (onLoad) { + onLoad && onLoad(module); + }); + }); + }; + if (!exports.get("packaged")) + return afterLoad(); + net.loadScript(exports.moduleUrl(moduleName, moduleType), afterLoad); + reportErrorIfPathIsNotConfigured(); + }; + if (exports.dynamicModules[moduleName]) { + exports.dynamicModules[moduleName]().then(function (module) { + if (module.default) { + load(module.default); + } + else { + load(module); + } + }); + } + else { + try { + loadedModule = this.$require(moduleName); + } + catch (e) { } + load(loadedModule || exports.$loaded[moduleName]); + } +}; +exports.$require = function (moduleName) { + if (typeof module.require == "function") { + var req = "require"; + return module[req](moduleName); + } +}; +exports.setModuleLoader = function (moduleName, onLoad) { + exports.dynamicModules[moduleName] = onLoad; +}; +var reportErrorIfPathIsNotConfigured = function () { + if (!options.basePath && !options.workerPath + && !options.modePath && !options.themePath + && !Object.keys(options.$moduleUrls).length) { + console.error("Unable to infer path to ace from script src,", "use ace.config.set('basePath', 'path') to enable dynamic loading of modes and themes", "or with webpack use ace/webpack-resolver"); + reportErrorIfPathIsNotConfigured = function () { }; + } +}; +exports.version = "1.32.0"; + +}); + +ace.define("ace/loader_build",["require","exports","module","ace/lib/fixoldbrowsers","ace/config"], function(require, exports, module) { +"use strict"; + +require("./lib/fixoldbrowsers"); +var config = require("./config"); +config.setLoader(function(moduleName, cb) { + require([moduleName], function(module) { + cb(null, module); + }); +}); + +var global = (function() { + return this || typeof window != "undefined" && window; +})(); + +module.exports = function(ace) { + config.init = init; + config.$require = require; + ace.require = require; + + if (true) + ace.define = __webpack_require__.amdD; +}; +init(true);function init(packaged) { + + if (!global || !global.document) + return; + + config.set("packaged", packaged || require.packaged || module.packaged || (global.define && __webpack_require__.amdD.packaged)); + + var scriptOptions = {}; + var scriptUrl = ""; + var currentScript = (document.currentScript || document._currentScript ); // native or polyfill + var currentDocument = currentScript && currentScript.ownerDocument || document; + + if (currentScript && currentScript.src) { + scriptUrl = currentScript.src.split(/[?#]/)[0].split("/").slice(0, -1).join("/") || ""; + } + + var scripts = currentDocument.getElementsByTagName("script"); + for (var i=0; i [" + this.end.row + "/" + this.end.column + "]"); + }; + Range.prototype.contains = function (row, column) { + return this.compare(row, column) == 0; + }; + Range.prototype.compareRange = function (range) { + var cmp, end = range.end, start = range.start; + cmp = this.compare(end.row, end.column); + if (cmp == 1) { + cmp = this.compare(start.row, start.column); + if (cmp == 1) { + return 2; + } + else if (cmp == 0) { + return 1; + } + else { + return 0; + } + } + else if (cmp == -1) { + return -2; + } + else { + cmp = this.compare(start.row, start.column); + if (cmp == -1) { + return -1; + } + else if (cmp == 1) { + return 42; + } + else { + return 0; + } + } + }; + Range.prototype.comparePoint = function (p) { + return this.compare(p.row, p.column); + }; + Range.prototype.containsRange = function (range) { + return this.comparePoint(range.start) == 0 && this.comparePoint(range.end) == 0; + }; + Range.prototype.intersects = function (range) { + var cmp = this.compareRange(range); + return (cmp == -1 || cmp == 0 || cmp == 1); + }; + Range.prototype.isEnd = function (row, column) { + return this.end.row == row && this.end.column == column; + }; + Range.prototype.isStart = function (row, column) { + return this.start.row == row && this.start.column == column; + }; + Range.prototype.setStart = function (row, column) { + if (typeof row == "object") { + this.start.column = row.column; + this.start.row = row.row; + } + else { + this.start.row = row; + this.start.column = column; + } + }; + Range.prototype.setEnd = function (row, column) { + if (typeof row == "object") { + this.end.column = row.column; + this.end.row = row.row; + } + else { + this.end.row = row; + this.end.column = column; + } + }; + Range.prototype.inside = function (row, column) { + if (this.compare(row, column) == 0) { + if (this.isEnd(row, column) || this.isStart(row, column)) { + return false; + } + else { + return true; + } + } + return false; + }; + Range.prototype.insideStart = function (row, column) { + if (this.compare(row, column) == 0) { + if (this.isEnd(row, column)) { + return false; + } + else { + return true; + } + } + return false; + }; + Range.prototype.insideEnd = function (row, column) { + if (this.compare(row, column) == 0) { + if (this.isStart(row, column)) { + return false; + } + else { + return true; + } + } + return false; + }; + Range.prototype.compare = function (row, column) { + if (!this.isMultiLine()) { + if (row === this.start.row) { + return column < this.start.column ? -1 : (column > this.end.column ? 1 : 0); + } + } + if (row < this.start.row) + return -1; + if (row > this.end.row) + return 1; + if (this.start.row === row) + return column >= this.start.column ? 0 : -1; + if (this.end.row === row) + return column <= this.end.column ? 0 : 1; + return 0; + }; + Range.prototype.compareStart = function (row, column) { + if (this.start.row == row && this.start.column == column) { + return -1; + } + else { + return this.compare(row, column); + } + }; + Range.prototype.compareEnd = function (row, column) { + if (this.end.row == row && this.end.column == column) { + return 1; + } + else { + return this.compare(row, column); + } + }; + Range.prototype.compareInside = function (row, column) { + if (this.end.row == row && this.end.column == column) { + return 1; + } + else if (this.start.row == row && this.start.column == column) { + return -1; + } + else { + return this.compare(row, column); + } + }; + Range.prototype.clipRows = function (firstRow, lastRow) { + if (this.end.row > lastRow) + var end = { row: lastRow + 1, column: 0 }; + else if (this.end.row < firstRow) + var end = { row: firstRow, column: 0 }; + if (this.start.row > lastRow) + var start = { row: lastRow + 1, column: 0 }; + else if (this.start.row < firstRow) + var start = { row: firstRow, column: 0 }; + return Range.fromPoints(start || this.start, end || this.end); + }; + Range.prototype.extend = function (row, column) { + var cmp = this.compare(row, column); + if (cmp == 0) + return this; + else if (cmp == -1) + var start = { row: row, column: column }; + else + var end = { row: row, column: column }; + return Range.fromPoints(start || this.start, end || this.end); + }; + Range.prototype.isEmpty = function () { + return (this.start.row === this.end.row && this.start.column === this.end.column); + }; + Range.prototype.isMultiLine = function () { + return (this.start.row !== this.end.row); + }; + Range.prototype.clone = function () { + return Range.fromPoints(this.start, this.end); + }; + Range.prototype.collapseRows = function () { + if (this.end.column == 0) + return new Range(this.start.row, 0, Math.max(this.start.row, this.end.row - 1), 0); + else + return new Range(this.start.row, 0, this.end.row, 0); + }; + Range.prototype.toScreenRange = function (session) { + var screenPosStart = session.documentToScreenPosition(this.start); + var screenPosEnd = session.documentToScreenPosition(this.end); + return new Range(screenPosStart.row, screenPosStart.column, screenPosEnd.row, screenPosEnd.column); + }; + Range.prototype.moveBy = function (row, column) { + this.start.row += row; + this.start.column += column; + this.end.row += row; + this.end.column += column; + }; + return Range; +}()); +Range.fromPoints = function (start, end) { + return new Range(start.row, start.column, end.row, end.column); +}; +Range.comparePoints = comparePoints; +Range.comparePoints = function (p1, p2) { + return p1.row - p2.row || p1.column - p2.column; +}; +exports.Range = Range; + +}); + +ace.define("ace/lib/keys",["require","exports","module","ace/lib/oop"], function(require, exports, module){/*! @license +========================================================================== +SproutCore -- JavaScript Application Framework +copyright 2006-2009, Sprout Systems Inc., Apple Inc. and contributors. + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the "Software"), +to deal in the Software without restriction, including without limitation +the rights to use, copy, modify, merge, publish, distribute, sublicense, +and/or sell copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. + +SproutCore and the SproutCore logo are trademarks of Sprout Systems, Inc. + +For more information about SproutCore, visit http://www.sproutcore.com + + +========================================================================== +@license */ +"use strict"; +var oop = require("./oop"); +var Keys = (function () { + var ret = { + MODIFIER_KEYS: { + 16: 'Shift', 17: 'Ctrl', 18: 'Alt', 224: 'Meta', + 91: 'MetaLeft', 92: 'MetaRight', 93: 'ContextMenu' + }, + KEY_MODS: { + "ctrl": 1, "alt": 2, "option": 2, "shift": 4, + "super": 8, "meta": 8, "command": 8, "cmd": 8, + "control": 1 + }, + FUNCTION_KEYS: { + 8: "Backspace", + 9: "Tab", + 13: "Return", + 19: "Pause", + 27: "Esc", + 32: "Space", + 33: "PageUp", + 34: "PageDown", + 35: "End", + 36: "Home", + 37: "Left", + 38: "Up", + 39: "Right", + 40: "Down", + 44: "Print", + 45: "Insert", + 46: "Delete", + 96: "Numpad0", + 97: "Numpad1", + 98: "Numpad2", + 99: "Numpad3", + 100: "Numpad4", + 101: "Numpad5", + 102: "Numpad6", + 103: "Numpad7", + 104: "Numpad8", + 105: "Numpad9", + '-13': "NumpadEnter", + 112: "F1", + 113: "F2", + 114: "F3", + 115: "F4", + 116: "F5", + 117: "F6", + 118: "F7", + 119: "F8", + 120: "F9", + 121: "F10", + 122: "F11", + 123: "F12", + 144: "Numlock", + 145: "Scrolllock" + }, + PRINTABLE_KEYS: { + 32: ' ', 48: '0', 49: '1', 50: '2', 51: '3', 52: '4', 53: '5', + 54: '6', 55: '7', 56: '8', 57: '9', 59: ';', 61: '=', 65: 'a', + 66: 'b', 67: 'c', 68: 'd', 69: 'e', 70: 'f', 71: 'g', 72: 'h', + 73: 'i', 74: 'j', 75: 'k', 76: 'l', 77: 'm', 78: 'n', 79: 'o', + 80: 'p', 81: 'q', 82: 'r', 83: 's', 84: 't', 85: 'u', 86: 'v', + 87: 'w', 88: 'x', 89: 'y', 90: 'z', 107: '+', 109: '-', 110: '.', + 186: ';', 187: '=', 188: ',', 189: '-', 190: '.', 191: '/', 192: '`', + 219: '[', 220: '\\', 221: ']', 222: "'", 111: '/', 106: '*' + } + }; + ret.PRINTABLE_KEYS[173] = '-'; + var name, i; + for (i in ret.FUNCTION_KEYS) { + name = ret.FUNCTION_KEYS[i].toLowerCase(); + ret[name] = parseInt(i, 10); + } + for (i in ret.PRINTABLE_KEYS) { + name = ret.PRINTABLE_KEYS[i].toLowerCase(); + ret[name] = parseInt(i, 10); + } + oop.mixin(ret, ret.MODIFIER_KEYS); + oop.mixin(ret, ret.PRINTABLE_KEYS); + oop.mixin(ret, ret.FUNCTION_KEYS); + ret.enter = ret["return"]; + ret.escape = ret.esc; + ret.del = ret["delete"]; + (function () { + var mods = ["cmd", "ctrl", "alt", "shift"]; + for (var i = Math.pow(2, mods.length); i--;) { + ret.KEY_MODS[i] = mods.filter(function (x) { + return i & ret.KEY_MODS[x]; + }).join("-") + "-"; + } + })(); + ret.KEY_MODS[0] = ""; + ret.KEY_MODS[-1] = "input-"; + return ret; +})(); +oop.mixin(exports, Keys); +exports.default = exports; +exports.keyCodeToString = function (keyCode) { + var keyString = Keys[keyCode]; + if (typeof keyString != "string") + keyString = String.fromCharCode(keyCode); + return keyString.toLowerCase(); +}; + +}); + +ace.define("ace/lib/event",["require","exports","module","ace/lib/keys","ace/lib/useragent"], function(require, exports, module){"use strict"; +var keys = require("./keys"); +var useragent = require("./useragent"); +var pressedKeys = null; +var ts = 0; +var activeListenerOptions; +function detectListenerOptionsSupport() { + activeListenerOptions = false; + try { + document.createComment("").addEventListener("test", function () { }, { + get passive() { + activeListenerOptions = { passive: false }; + } + }); + } + catch (e) { } +} +function getListenerOptions() { + if (activeListenerOptions == undefined) + detectListenerOptionsSupport(); + return activeListenerOptions; +} +function EventListener(elem, type, callback) { + this.elem = elem; + this.type = type; + this.callback = callback; +} +EventListener.prototype.destroy = function () { + removeListener(this.elem, this.type, this.callback); + this.elem = this.type = this.callback = undefined; +}; +var addListener = exports.addListener = function (elem, type, callback, destroyer) { + elem.addEventListener(type, callback, getListenerOptions()); + if (destroyer) + destroyer.$toDestroy.push(new EventListener(elem, type, callback)); +}; +var removeListener = exports.removeListener = function (elem, type, callback) { + elem.removeEventListener(type, callback, getListenerOptions()); +}; +exports.stopEvent = function (e) { + exports.stopPropagation(e); + exports.preventDefault(e); + return false; +}; +exports.stopPropagation = function (e) { + if (e.stopPropagation) + e.stopPropagation(); +}; +exports.preventDefault = function (e) { + if (e.preventDefault) + e.preventDefault(); +}; +exports.getButton = function (e) { + if (e.type == "dblclick") + return 0; + if (e.type == "contextmenu" || (useragent.isMac && (e.ctrlKey && !e.altKey && !e.shiftKey))) + return 2; + return e.button; +}; +exports.capture = function (el, eventHandler, releaseCaptureHandler) { + var ownerDocument = el && el.ownerDocument || document; + function onMouseUp(e) { + eventHandler && eventHandler(e); + releaseCaptureHandler && releaseCaptureHandler(e); + removeListener(ownerDocument, "mousemove", eventHandler); + removeListener(ownerDocument, "mouseup", onMouseUp); + removeListener(ownerDocument, "dragstart", onMouseUp); + } + addListener(ownerDocument, "mousemove", eventHandler); + addListener(ownerDocument, "mouseup", onMouseUp); + addListener(ownerDocument, "dragstart", onMouseUp); + return onMouseUp; +}; +exports.addMouseWheelListener = function (el, callback, destroyer) { + addListener(el, "wheel", function (e) { + var factor = 0.15; + var deltaX = e.deltaX || 0; + var deltaY = e.deltaY || 0; + switch (e.deltaMode) { + case e.DOM_DELTA_PIXEL: + e.wheelX = deltaX * factor; + e.wheelY = deltaY * factor; + break; + case e.DOM_DELTA_LINE: + var linePixels = 15; + e.wheelX = deltaX * linePixels; + e.wheelY = deltaY * linePixels; + break; + case e.DOM_DELTA_PAGE: + var pagePixels = 150; + e.wheelX = deltaX * pagePixels; + e.wheelY = deltaY * pagePixels; + break; + } + callback(e); + }, destroyer); +}; +exports.addMultiMouseDownListener = function (elements, timeouts, eventHandler, callbackName, destroyer) { + var clicks = 0; + var startX, startY, timer; + var eventNames = { + 2: "dblclick", + 3: "tripleclick", + 4: "quadclick" + }; + function onMousedown(e) { + if (exports.getButton(e) !== 0) { + clicks = 0; + } + else if (e.detail > 1) { + clicks++; + if (clicks > 4) + clicks = 1; + } + else { + clicks = 1; + } + if (useragent.isIE) { + var isNewClick = Math.abs(e.clientX - startX) > 5 || Math.abs(e.clientY - startY) > 5; + if (!timer || isNewClick) + clicks = 1; + if (timer) + clearTimeout(timer); + timer = setTimeout(function () { timer = null; }, timeouts[clicks - 1] || 600); + if (clicks == 1) { + startX = e.clientX; + startY = e.clientY; + } + } + e._clicks = clicks; + eventHandler[callbackName]("mousedown", e); + if (clicks > 4) + clicks = 0; + else if (clicks > 1) + return eventHandler[callbackName](eventNames[clicks], e); + } + if (!Array.isArray(elements)) + elements = [elements]; + elements.forEach(function (el) { + addListener(el, "mousedown", onMousedown, destroyer); + }); +}; +var getModifierHash = function (e) { + return 0 | (e.ctrlKey ? 1 : 0) | (e.altKey ? 2 : 0) | (e.shiftKey ? 4 : 0) | (e.metaKey ? 8 : 0); +}; +exports.getModifierString = function (e) { + return keys.KEY_MODS[getModifierHash(e)]; +}; +function normalizeCommandKeys(callback, e, keyCode) { + var hashId = getModifierHash(e); + if (!useragent.isMac && pressedKeys) { + if (e.getModifierState && (e.getModifierState("OS") || e.getModifierState("Win"))) + hashId |= 8; + if (pressedKeys.altGr) { + if ((3 & hashId) != 3) + pressedKeys.altGr = 0; + else + return; + } + if (keyCode === 18 || keyCode === 17) { + var location = "location" in e ? e.location : e.keyLocation; + if (keyCode === 17 && location === 1) { + if (pressedKeys[keyCode] == 1) + ts = e.timeStamp; + } + else if (keyCode === 18 && hashId === 3 && location === 2) { + var dt = e.timeStamp - ts; + if (dt < 50) + pressedKeys.altGr = true; + } + } + } + if (keyCode in keys.MODIFIER_KEYS) { + keyCode = -1; + } + if (!hashId && keyCode === 13) { + var location = "location" in e ? e.location : e.keyLocation; + if (location === 3) { + callback(e, hashId, -keyCode); + if (e.defaultPrevented) + return; + } + } + if (useragent.isChromeOS && hashId & 8) { + callback(e, hashId, keyCode); + if (e.defaultPrevented) + return; + else + hashId &= ~8; + } + if (!hashId && !(keyCode in keys.FUNCTION_KEYS) && !(keyCode in keys.PRINTABLE_KEYS)) { + return false; + } + return callback(e, hashId, keyCode); +} +exports.addCommandKeyListener = function (el, callback, destroyer) { + if (useragent.isOldGecko || (useragent.isOpera && !("KeyboardEvent" in window))) { + var lastKeyDownKeyCode = null; + addListener(el, "keydown", function (e) { + lastKeyDownKeyCode = e.keyCode; + }, destroyer); + addListener(el, "keypress", function (e) { + return normalizeCommandKeys(callback, e, lastKeyDownKeyCode); + }, destroyer); + } + else { + var lastDefaultPrevented = null; + addListener(el, "keydown", function (e) { + pressedKeys[e.keyCode] = (pressedKeys[e.keyCode] || 0) + 1; + var result = normalizeCommandKeys(callback, e, e.keyCode); + lastDefaultPrevented = e.defaultPrevented; + return result; + }, destroyer); + addListener(el, "keypress", function (e) { + if (lastDefaultPrevented && (e.ctrlKey || e.altKey || e.shiftKey || e.metaKey)) { + exports.stopEvent(e); + lastDefaultPrevented = null; + } + }, destroyer); + addListener(el, "keyup", function (e) { + pressedKeys[e.keyCode] = null; + }, destroyer); + if (!pressedKeys) { + resetPressedKeys(); + addListener(window, "focus", resetPressedKeys); + } + } +}; +function resetPressedKeys() { + pressedKeys = Object.create(null); +} +if (typeof window == "object" && window.postMessage && !useragent.isOldIE) { + var postMessageId = 1; + exports.nextTick = function (callback, win) { + win = win || window; + var messageName = "zero-timeout-message-" + (postMessageId++); + var listener = function (e) { + if (e.data == messageName) { + exports.stopPropagation(e); + removeListener(win, "message", listener); + callback(); + } + }; + addListener(win, "message", listener); + win.postMessage(messageName, "*"); + }; +} +exports.$idleBlocked = false; +exports.onIdle = function (cb, timeout) { + return setTimeout(function handler() { + if (!exports.$idleBlocked) { + cb(); + } + else { + setTimeout(handler, 100); + } + }, timeout); +}; +exports.$idleBlockId = null; +exports.blockIdle = function (delay) { + if (exports.$idleBlockId) + clearTimeout(exports.$idleBlockId); + exports.$idleBlocked = true; + exports.$idleBlockId = setTimeout(function () { + exports.$idleBlocked = false; + }, delay || 100); +}; +exports.nextFrame = typeof window == "object" && (window.requestAnimationFrame + || window.mozRequestAnimationFrame + || window.webkitRequestAnimationFrame + || window.msRequestAnimationFrame + || window.oRequestAnimationFrame); +if (exports.nextFrame) + exports.nextFrame = exports.nextFrame.bind(window); +else + exports.nextFrame = function (callback) { + setTimeout(callback, 17); + }; + +}); + +ace.define("ace/clipboard",["require","exports","module"], function(require, exports, module){"use strict"; +var $cancelT; +module.exports = { + lineMode: false, + pasteCancelled: function () { + if ($cancelT && $cancelT > Date.now() - 50) + return true; + return $cancelT = false; + }, + cancel: function () { + $cancelT = Date.now(); + } +}; + +}); + +ace.define("ace/keyboard/textinput",["require","exports","module","ace/lib/event","ace/config","ace/lib/useragent","ace/lib/dom","ace/lib/lang","ace/clipboard","ace/lib/keys"], function(require, exports, module){"use strict"; +var event = require("../lib/event"); +var nls = require("../config").nls; +var useragent = require("../lib/useragent"); +var dom = require("../lib/dom"); +var lang = require("../lib/lang"); +var clipboard = require("../clipboard"); +var BROKEN_SETDATA = useragent.isChrome < 18; +var USE_IE_MIME_TYPE = useragent.isIE; +var HAS_FOCUS_ARGS = useragent.isChrome > 63; +var MAX_LINE_LENGTH = 400; +var KEYS = require("../lib/keys"); +var MODS = KEYS.KEY_MODS; +var isIOS = useragent.isIOS; +var valueResetRegex = isIOS ? /\s/ : /\n/; +var isMobile = useragent.isMobile; +var TextInput = function (parentNode, host) { + var text = dom.createElement("textarea"); + text.className = "ace_text-input"; + text.setAttribute("wrap", "off"); + text.setAttribute("autocorrect", "off"); + text.setAttribute("autocapitalize", "off"); + text.setAttribute("spellcheck", false); + text.style.opacity = "0"; + parentNode.insertBefore(text, parentNode.firstChild); + var copied = false; + var pasted = false; + var inComposition = false; + var sendingText = false; + var tempStyle = ''; + if (!isMobile) + text.style.fontSize = "1px"; + var commandMode = false; + var ignoreFocusEvents = false; + var lastValue = ""; + var lastSelectionStart = 0; + var lastSelectionEnd = 0; + var lastRestoreEnd = 0; + var rowStart = Number.MAX_SAFE_INTEGER; + var rowEnd = Number.MIN_SAFE_INTEGER; + var numberOfExtraLines = 0; + try { + var isFocused = document.activeElement === text; + } + catch (e) { } + this.setNumberOfExtraLines = function (number) { + rowStart = Number.MAX_SAFE_INTEGER; + rowEnd = Number.MIN_SAFE_INTEGER; + if (number < 0) { + numberOfExtraLines = 0; + return; + } + numberOfExtraLines = number; + }; + this.setAriaOptions = function (options) { + if (options.activeDescendant) { + text.setAttribute("aria-haspopup", "true"); + text.setAttribute("aria-autocomplete", options.inline ? "both" : "list"); + text.setAttribute("aria-activedescendant", options.activeDescendant); + } + else { + text.setAttribute("aria-haspopup", "false"); + text.setAttribute("aria-autocomplete", "both"); + text.removeAttribute("aria-activedescendant"); + } + if (options.role) { + text.setAttribute("role", options.role); + } + if (options.setLabel) { + text.setAttribute("aria-roledescription", nls("editor")); + if (host.session) { + var row = host.session.selection.cursor.row; + text.setAttribute("aria-label", nls("Cursor at row $0", [row + 1])); + } + } + }; + this.setAriaOptions({ role: "textbox" }); + event.addListener(text, "blur", function (e) { + if (ignoreFocusEvents) + return; + host.onBlur(e); + isFocused = false; + }, host); + event.addListener(text, "focus", function (e) { + if (ignoreFocusEvents) + return; + isFocused = true; + if (useragent.isEdge) { + try { + if (!document.hasFocus()) + return; + } + catch (e) { } + } + host.onFocus(e); + if (useragent.isEdge) + setTimeout(resetSelection); + else + resetSelection(); + }, host); + this.$focusScroll = false; + this.focus = function () { + this.setAriaOptions({ + setLabel: host.renderer.enableKeyboardAccessibility + }); + if (tempStyle || HAS_FOCUS_ARGS || this.$focusScroll == "browser") + return text.focus({ preventScroll: true }); + var top = text.style.top; + text.style.position = "fixed"; + text.style.top = "0px"; + try { + var isTransformed = text.getBoundingClientRect().top != 0; + } + catch (e) { + return; + } + var ancestors = []; + if (isTransformed) { + var t = text.parentElement; + while (t && t.nodeType == 1) { + ancestors.push(t); + t.setAttribute("ace_nocontext", true); + if (!t.parentElement && t.getRootNode) + t = t.getRootNode().host; + else + t = t.parentElement; + } + } + text.focus({ preventScroll: true }); + if (isTransformed) { + ancestors.forEach(function (p) { + p.removeAttribute("ace_nocontext"); + }); + } + setTimeout(function () { + text.style.position = ""; + if (text.style.top == "0px") + text.style.top = top; + }, 0); + }; + this.blur = function () { + text.blur(); + }; + this.isFocused = function () { + return isFocused; + }; + host.on("beforeEndOperation", function () { + var curOp = host.curOp; + var commandName = curOp && curOp.command && curOp.command.name; + if (commandName == "insertstring") + return; + var isUserAction = commandName && (curOp.docChanged || curOp.selectionChanged); + if (inComposition && isUserAction) { + lastValue = text.value = ""; + onCompositionEnd(); + } + resetSelection(); + }); + var positionToSelection = function (row, column) { + var selection = column; + for (var i = 1; i <= row - rowStart && i < 2 * numberOfExtraLines + 1; i++) { + selection += host.session.getLine(row - i).length + 1; + } + return selection; + }; + var resetSelection = isIOS + ? function (value) { + if (!isFocused || (copied && !value) || sendingText) + return; + if (!value) + value = ""; + var newValue = "\n ab" + value + "cde fg\n"; + if (newValue != text.value) + text.value = lastValue = newValue; + var selectionStart = 4; + var selectionEnd = 4 + (value.length || (host.selection.isEmpty() ? 0 : 1)); + if (lastSelectionStart != selectionStart || lastSelectionEnd != selectionEnd) { + text.setSelectionRange(selectionStart, selectionEnd); + } + lastSelectionStart = selectionStart; + lastSelectionEnd = selectionEnd; + } + : function () { + if (inComposition || sendingText) + return; + if (!isFocused && !afterContextMenu) + return; + inComposition = true; + var selectionStart = 0; + var selectionEnd = 0; + var line = ""; + if (host.session) { + var selection = host.selection; + var range = selection.getRange(); + var row = selection.cursor.row; + if (row === rowEnd + 1) { + rowStart = rowEnd + 1; + rowEnd = rowStart + 2 * numberOfExtraLines; + } + else if (row === rowStart - 1) { + rowEnd = rowStart - 1; + rowStart = rowEnd - 2 * numberOfExtraLines; + } + else if (row < rowStart - 1 || row > rowEnd + 1) { + rowStart = row > numberOfExtraLines ? row - numberOfExtraLines : 0; + rowEnd = row > numberOfExtraLines ? row + numberOfExtraLines : 2 * numberOfExtraLines; + } + var lines = []; + for (var i = rowStart; i <= rowEnd; i++) { + lines.push(host.session.getLine(i)); + } + line = lines.join('\n'); + selectionStart = positionToSelection(range.start.row, range.start.column); + selectionEnd = positionToSelection(range.end.row, range.end.column); + if (range.start.row < rowStart) { + var prevLine = host.session.getLine(rowStart - 1); + selectionStart = range.start.row < rowStart - 1 ? 0 : selectionStart; + selectionEnd += prevLine.length + 1; + line = prevLine + "\n" + line; + } + else if (range.end.row > rowEnd) { + var nextLine = host.session.getLine(rowEnd + 1); + selectionEnd = range.end.row > rowEnd + 1 ? nextLine.length : range.end.column; + selectionEnd += line.length + 1; + line = line + "\n" + nextLine; + } + else if (isMobile && row > 0) { + line = "\n" + line; + selectionEnd += 1; + selectionStart += 1; + } + if (line.length > MAX_LINE_LENGTH) { + if (selectionStart < MAX_LINE_LENGTH && selectionEnd < MAX_LINE_LENGTH) { + line = line.slice(0, MAX_LINE_LENGTH); + } + else { + line = "\n"; + if (selectionStart == selectionEnd) { + selectionStart = selectionEnd = 0; + } + else { + selectionStart = 0; + selectionEnd = 1; + } + } + } + var newValue = line + "\n\n"; + if (newValue != lastValue) { + text.value = lastValue = newValue; + lastSelectionStart = lastSelectionEnd = newValue.length; + } + } + if (afterContextMenu) { + lastSelectionStart = text.selectionStart; + lastSelectionEnd = text.selectionEnd; + } + if (lastSelectionEnd != selectionEnd + || lastSelectionStart != selectionStart + || text.selectionEnd != lastSelectionEnd // on ie edge selectionEnd changes silently after the initialization + ) { + try { + text.setSelectionRange(selectionStart, selectionEnd); + lastSelectionStart = selectionStart; + lastSelectionEnd = selectionEnd; + } + catch (e) { } + } + inComposition = false; + }; + this.resetSelection = resetSelection; + if (isFocused) + host.onFocus(); + var isAllSelected = function (text) { + return text.selectionStart === 0 && text.selectionEnd >= lastValue.length + && text.value === lastValue && lastValue + && text.selectionEnd !== lastSelectionEnd; + }; + var onSelect = function (e) { + if (inComposition) + return; + if (copied) { + copied = false; + } + else if (isAllSelected(text)) { + host.selectAll(); + resetSelection(); + } + else if (isMobile && text.selectionStart != lastSelectionStart) { + resetSelection(); + } + }; + var inputHandler = null; + this.setInputHandler = function (cb) { inputHandler = cb; }; + this.getInputHandler = function () { return inputHandler; }; + var afterContextMenu = false; + var sendText = function (value, fromInput) { + if (afterContextMenu) + afterContextMenu = false; + if (pasted) { + resetSelection(); + if (value) + host.onPaste(value); + pasted = false; + return ""; + } + else { + var selectionStart = text.selectionStart; + var selectionEnd = text.selectionEnd; + var extendLeft = lastSelectionStart; + var extendRight = lastValue.length - lastSelectionEnd; + var inserted = value; + var restoreStart = value.length - selectionStart; + var restoreEnd = value.length - selectionEnd; + var i = 0; + while (extendLeft > 0 && lastValue[i] == value[i]) { + i++; + extendLeft--; + } + inserted = inserted.slice(i); + i = 1; + while (extendRight > 0 && lastValue.length - i > lastSelectionStart - 1 && lastValue[lastValue.length - i] == value[value.length - i]) { + i++; + extendRight--; + } + restoreStart -= i - 1; + restoreEnd -= i - 1; + var endIndex = inserted.length - i + 1; + if (endIndex < 0) { + extendLeft = -endIndex; + endIndex = 0; + } + inserted = inserted.slice(0, endIndex); + if (!fromInput && !inserted && !restoreStart && !extendLeft && !extendRight && !restoreEnd) + return ""; + sendingText = true; + var shouldReset = false; + if (useragent.isAndroid && inserted == ". ") { + inserted = " "; + shouldReset = true; + } + if (inserted && !extendLeft && !extendRight && !restoreStart && !restoreEnd || commandMode) { + host.onTextInput(inserted); + } + else { + host.onTextInput(inserted, { + extendLeft: extendLeft, + extendRight: extendRight, + restoreStart: restoreStart, + restoreEnd: restoreEnd + }); + } + sendingText = false; + lastValue = value; + lastSelectionStart = selectionStart; + lastSelectionEnd = selectionEnd; + lastRestoreEnd = restoreEnd; + return shouldReset ? "\n" : inserted; + } + }; + var onInput = function (e) { + if (inComposition) + return onCompositionUpdate(); + if (e && e.inputType) { + if (e.inputType == "historyUndo") + return host.execCommand("undo"); + if (e.inputType == "historyRedo") + return host.execCommand("redo"); + } + var data = text.value; + var inserted = sendText(data, true); + if (data.length > MAX_LINE_LENGTH + 100 + || valueResetRegex.test(inserted) + || isMobile && lastSelectionStart < 1 && lastSelectionStart == lastSelectionEnd) { + resetSelection(); + } + }; + var handleClipboardData = function (e, data, forceIEMime) { + var clipboardData = e.clipboardData || window.clipboardData; + if (!clipboardData || BROKEN_SETDATA) + return; + var mime = USE_IE_MIME_TYPE || forceIEMime ? "Text" : "text/plain"; + try { + if (data) { + return clipboardData.setData(mime, data) !== false; + } + else { + return clipboardData.getData(mime); + } + } + catch (e) { + if (!forceIEMime) + return handleClipboardData(e, data, true); + } + }; + var doCopy = function (e, isCut) { + var data = host.getCopyText(); + if (!data) + return event.preventDefault(e); + if (handleClipboardData(e, data)) { + if (isIOS) { + resetSelection(data); + copied = data; + setTimeout(function () { + copied = false; + }, 10); + } + isCut ? host.onCut() : host.onCopy(); + event.preventDefault(e); + } + else { + copied = true; + text.value = data; + text.select(); + setTimeout(function () { + copied = false; + resetSelection(); + isCut ? host.onCut() : host.onCopy(); + }); + } + }; + var onCut = function (e) { + doCopy(e, true); + }; + var onCopy = function (e) { + doCopy(e, false); + }; + var onPaste = function (e) { + var data = handleClipboardData(e); + if (clipboard.pasteCancelled()) + return; + if (typeof data == "string") { + if (data) + host.onPaste(data, e); + if (useragent.isIE) + setTimeout(resetSelection); + event.preventDefault(e); + } + else { + text.value = ""; + pasted = true; + } + }; + event.addCommandKeyListener(text, host.onCommandKey.bind(host), host); + event.addListener(text, "select", onSelect, host); + event.addListener(text, "input", onInput, host); + event.addListener(text, "cut", onCut, host); + event.addListener(text, "copy", onCopy, host); + event.addListener(text, "paste", onPaste, host); + if (!('oncut' in text) || !('oncopy' in text) || !('onpaste' in text)) { + event.addListener(parentNode, "keydown", function (e) { + if ((useragent.isMac && !e.metaKey) || !e.ctrlKey) + return; + switch (e.keyCode) { + case 67: + onCopy(e); + break; + case 86: + onPaste(e); + break; + case 88: + onCut(e); + break; + } + }, host); + } + var onCompositionStart = function (e) { + if (inComposition || !host.onCompositionStart || host.$readOnly) + return; + inComposition = {}; + if (commandMode) + return; + if (e.data) + inComposition.useTextareaForIME = false; + setTimeout(onCompositionUpdate, 0); + host._signal("compositionStart"); + host.on("mousedown", cancelComposition); + var range = host.getSelectionRange(); + range.end.row = range.start.row; + range.end.column = range.start.column; + inComposition.markerRange = range; + inComposition.selectionStart = lastSelectionStart; + host.onCompositionStart(inComposition); + if (inComposition.useTextareaForIME) { + lastValue = text.value = ""; + lastSelectionStart = 0; + lastSelectionEnd = 0; + } + else { + if (text.msGetInputContext) + inComposition.context = text.msGetInputContext(); + if (text.getInputContext) + inComposition.context = text.getInputContext(); + } + }; + var onCompositionUpdate = function () { + if (!inComposition || !host.onCompositionUpdate || host.$readOnly) + return; + if (commandMode) + return cancelComposition(); + if (inComposition.useTextareaForIME) { + host.onCompositionUpdate(text.value); + } + else { + var data = text.value; + sendText(data); + if (inComposition.markerRange) { + if (inComposition.context) { + inComposition.markerRange.start.column = inComposition.selectionStart + = inComposition.context.compositionStartOffset; + } + inComposition.markerRange.end.column = inComposition.markerRange.start.column + + lastSelectionEnd - inComposition.selectionStart + lastRestoreEnd; + } + } + }; + var onCompositionEnd = function (e) { + if (!host.onCompositionEnd || host.$readOnly) + return; + inComposition = false; + host.onCompositionEnd(); + host.off("mousedown", cancelComposition); + if (e) + onInput(); + }; + function cancelComposition() { + ignoreFocusEvents = true; + text.blur(); + text.focus(); + ignoreFocusEvents = false; + } + var syncComposition = lang.delayedCall(onCompositionUpdate, 50).schedule.bind(null, null); + function onKeyup(e) { + if (e.keyCode == 27 && text.value.length < text.selectionStart) { + if (!inComposition) + lastValue = text.value; + lastSelectionStart = lastSelectionEnd = -1; + resetSelection(); + } + syncComposition(); + } + event.addListener(text, "compositionstart", onCompositionStart, host); + event.addListener(text, "compositionupdate", onCompositionUpdate, host); + event.addListener(text, "keyup", onKeyup, host); + event.addListener(text, "keydown", syncComposition, host); + event.addListener(text, "compositionend", onCompositionEnd, host); + this.getElement = function () { + return text; + }; + this.setCommandMode = function (value) { + commandMode = value; + text.readOnly = false; + }; + this.setReadOnly = function (readOnly) { + if (!commandMode) + text.readOnly = readOnly; + }; + this.setCopyWithEmptySelection = function (value) { + }; + this.onContextMenu = function (e) { + afterContextMenu = true; + resetSelection(); + host._emit("nativecontextmenu", { target: host, domEvent: e }); + this.moveToMouse(e, true); + }; + this.moveToMouse = function (e, bringToFront) { + if (!tempStyle) + tempStyle = text.style.cssText; + text.style.cssText = (bringToFront ? "z-index:100000;" : "") + + (useragent.isIE ? "opacity:0.1;" : "") + + "text-indent: -" + (lastSelectionStart + lastSelectionEnd) * host.renderer.characterWidth * 0.5 + "px;"; + var rect = host.container.getBoundingClientRect(); + var style = dom.computedStyle(host.container); + var top = rect.top + (parseInt(style.borderTopWidth) || 0); + var left = rect.left + (parseInt(rect.borderLeftWidth) || 0); + var maxTop = rect.bottom - top - text.clientHeight - 2; + var move = function (e) { + dom.translate(text, e.clientX - left - 2, Math.min(e.clientY - top - 2, maxTop)); + }; + move(e); + if (e.type != "mousedown") + return; + host.renderer.$isMousePressed = true; + clearTimeout(closeTimeout); + if (useragent.isWin) + event.capture(host.container, move, onContextMenuClose); + }; + this.onContextMenuClose = onContextMenuClose; + var closeTimeout; + function onContextMenuClose() { + clearTimeout(closeTimeout); + closeTimeout = setTimeout(function () { + if (tempStyle) { + text.style.cssText = tempStyle; + tempStyle = ''; + } + host.renderer.$isMousePressed = false; + if (host.renderer.$keepTextAreaAtCursor) + host.renderer.$moveTextAreaToCursor(); + }, 0); + } + var onContextMenu = function (e) { + host.textInput.onContextMenu(e); + onContextMenuClose(); + }; + event.addListener(text, "mouseup", onContextMenu, host); + event.addListener(text, "mousedown", function (e) { + e.preventDefault(); + onContextMenuClose(); + }, host); + event.addListener(host.renderer.scroller, "contextmenu", onContextMenu, host); + event.addListener(text, "contextmenu", onContextMenu, host); + if (isIOS) + addIosSelectionHandler(parentNode, host, text); + function addIosSelectionHandler(parentNode, host, text) { + var typingResetTimeout = null; + var typing = false; + text.addEventListener("keydown", function (e) { + if (typingResetTimeout) + clearTimeout(typingResetTimeout); + typing = true; + }, true); + text.addEventListener("keyup", function (e) { + typingResetTimeout = setTimeout(function () { + typing = false; + }, 100); + }, true); + var detectArrowKeys = function (e) { + if (document.activeElement !== text) + return; + if (typing || inComposition || host.$mouseHandler.isMousePressed) + return; + if (copied) { + return; + } + var selectionStart = text.selectionStart; + var selectionEnd = text.selectionEnd; + var key = null; + var modifier = 0; + if (selectionStart == 0) { + key = KEYS.up; + } + else if (selectionStart == 1) { + key = KEYS.home; + } + else if (selectionEnd > lastSelectionEnd && lastValue[selectionEnd] == "\n") { + key = KEYS.end; + } + else if (selectionStart < lastSelectionStart && lastValue[selectionStart - 1] == " ") { + key = KEYS.left; + modifier = MODS.option; + } + else if (selectionStart < lastSelectionStart + || (selectionStart == lastSelectionStart + && lastSelectionEnd != lastSelectionStart + && selectionStart == selectionEnd)) { + key = KEYS.left; + } + else if (selectionEnd > lastSelectionEnd && lastValue.slice(0, selectionEnd).split("\n").length > 2) { + key = KEYS.down; + } + else if (selectionEnd > lastSelectionEnd && lastValue[selectionEnd - 1] == " ") { + key = KEYS.right; + modifier = MODS.option; + } + else if (selectionEnd > lastSelectionEnd + || (selectionEnd == lastSelectionEnd + && lastSelectionEnd != lastSelectionStart + && selectionStart == selectionEnd)) { + key = KEYS.right; + } + if (selectionStart !== selectionEnd) + modifier |= MODS.shift; + if (key) { + var result = host.onCommandKey({}, modifier, key); + if (!result && host.commands) { + key = KEYS.keyCodeToString(key); + var command = host.commands.findKeyCommand(modifier, key); + if (command) + host.execCommand(command); + } + lastSelectionStart = selectionStart; + lastSelectionEnd = selectionEnd; + resetSelection(""); + } + }; + document.addEventListener("selectionchange", detectArrowKeys); + host.on("destroy", function () { + document.removeEventListener("selectionchange", detectArrowKeys); + }); + } + this.destroy = function () { + if (text.parentElement) + text.parentElement.removeChild(text); + }; +}; +exports.TextInput = TextInput; +exports.$setUserAgentForTests = function (_isMobile, _isIOS) { + isMobile = _isMobile; + isIOS = _isIOS; +}; + +}); + +ace.define("ace/mouse/default_handlers",["require","exports","module","ace/lib/useragent"], function(require, exports, module){"use strict"; +var useragent = require("../lib/useragent"); +var DRAG_OFFSET = 0; // pixels +var SCROLL_COOLDOWN_T = 550; // milliseconds +var DefaultHandlers = /** @class */ (function () { + function DefaultHandlers(mouseHandler) { + mouseHandler.$clickSelection = null; + var editor = mouseHandler.editor; + editor.setDefaultHandler("mousedown", this.onMouseDown.bind(mouseHandler)); + editor.setDefaultHandler("dblclick", this.onDoubleClick.bind(mouseHandler)); + editor.setDefaultHandler("tripleclick", this.onTripleClick.bind(mouseHandler)); + editor.setDefaultHandler("quadclick", this.onQuadClick.bind(mouseHandler)); + editor.setDefaultHandler("mousewheel", this.onMouseWheel.bind(mouseHandler)); + var exports = ["select", "startSelect", "selectEnd", "selectAllEnd", "selectByWordsEnd", + "selectByLinesEnd", "dragWait", "dragWaitEnd", "focusWait"]; + exports.forEach(function (x) { + mouseHandler[x] = this[x]; + }, this); + mouseHandler.selectByLines = this.extendSelectionBy.bind(mouseHandler, "getLineRange"); + mouseHandler.selectByWords = this.extendSelectionBy.bind(mouseHandler, "getWordRange"); + } + DefaultHandlers.prototype.onMouseDown = function (ev) { + var inSelection = ev.inSelection(); + var pos = ev.getDocumentPosition(); + this.mousedownEvent = ev; + var editor = this.editor; + var button = ev.getButton(); + if (button !== 0) { + var selectionRange = editor.getSelectionRange(); + var selectionEmpty = selectionRange.isEmpty(); + if (selectionEmpty || button == 1) + editor.selection.moveToPosition(pos); + if (button == 2) { + editor.textInput.onContextMenu(ev.domEvent); + if (!useragent.isMozilla) + ev.preventDefault(); + } + return; + } + this.mousedownEvent.time = Date.now(); + if (inSelection && !editor.isFocused()) { + editor.focus(); + if (this.$focusTimeout && !this.$clickSelection && !editor.inMultiSelectMode) { + this.setState("focusWait"); + this.captureMouse(ev); + return; + } + } + this.captureMouse(ev); + this.startSelect(pos, ev.domEvent._clicks > 1); + return ev.preventDefault(); + }; + DefaultHandlers.prototype.startSelect = function (pos, waitForClickSelection) { + pos = pos || this.editor.renderer.screenToTextCoordinates(this.x, this.y); + var editor = this.editor; + if (!this.mousedownEvent) + return; + if (this.mousedownEvent.getShiftKey()) + editor.selection.selectToPosition(pos); + else if (!waitForClickSelection) + editor.selection.moveToPosition(pos); + if (!waitForClickSelection) + this.select(); + editor.setStyle("ace_selecting"); + this.setState("select"); + }; + DefaultHandlers.prototype.select = function () { + var anchor, editor = this.editor; + var cursor = editor.renderer.screenToTextCoordinates(this.x, this.y); + if (this.$clickSelection) { + var cmp = this.$clickSelection.comparePoint(cursor); + if (cmp == -1) { + anchor = this.$clickSelection.end; + } + else if (cmp == 1) { + anchor = this.$clickSelection.start; + } + else { + var orientedRange = calcRangeOrientation(this.$clickSelection, cursor); + cursor = orientedRange.cursor; + anchor = orientedRange.anchor; + } + editor.selection.setSelectionAnchor(anchor.row, anchor.column); + } + editor.selection.selectToPosition(cursor); + editor.renderer.scrollCursorIntoView(); + }; + DefaultHandlers.prototype.extendSelectionBy = function (unitName) { + var anchor, editor = this.editor; + var cursor = editor.renderer.screenToTextCoordinates(this.x, this.y); + var range = editor.selection[unitName](cursor.row, cursor.column); + if (this.$clickSelection) { + var cmpStart = this.$clickSelection.comparePoint(range.start); + var cmpEnd = this.$clickSelection.comparePoint(range.end); + if (cmpStart == -1 && cmpEnd <= 0) { + anchor = this.$clickSelection.end; + if (range.end.row != cursor.row || range.end.column != cursor.column) + cursor = range.start; + } + else if (cmpEnd == 1 && cmpStart >= 0) { + anchor = this.$clickSelection.start; + if (range.start.row != cursor.row || range.start.column != cursor.column) + cursor = range.end; + } + else if (cmpStart == -1 && cmpEnd == 1) { + cursor = range.end; + anchor = range.start; + } + else { + var orientedRange = calcRangeOrientation(this.$clickSelection, cursor); + cursor = orientedRange.cursor; + anchor = orientedRange.anchor; + } + editor.selection.setSelectionAnchor(anchor.row, anchor.column); + } + editor.selection.selectToPosition(cursor); + editor.renderer.scrollCursorIntoView(); + }; + DefaultHandlers.prototype.selectByLinesEnd = function () { + this.$clickSelection = null; + this.editor.unsetStyle("ace_selecting"); + }; + DefaultHandlers.prototype.focusWait = function () { + var distance = calcDistance(this.mousedownEvent.x, this.mousedownEvent.y, this.x, this.y); + var time = Date.now(); + if (distance > DRAG_OFFSET || time - this.mousedownEvent.time > this.$focusTimeout) + this.startSelect(this.mousedownEvent.getDocumentPosition()); + }; + DefaultHandlers.prototype.onDoubleClick = function (ev) { + var pos = ev.getDocumentPosition(); + var editor = this.editor; + var session = editor.session; + var range = session.getBracketRange(pos); + if (range) { + if (range.isEmpty()) { + range.start.column--; + range.end.column++; + } + this.setState("select"); + } + else { + range = editor.selection.getWordRange(pos.row, pos.column); + this.setState("selectByWords"); + } + this.$clickSelection = range; + this.select(); + }; + DefaultHandlers.prototype.onTripleClick = function (ev) { + var pos = ev.getDocumentPosition(); + var editor = this.editor; + this.setState("selectByLines"); + var range = editor.getSelectionRange(); + if (range.isMultiLine() && range.contains(pos.row, pos.column)) { + this.$clickSelection = editor.selection.getLineRange(range.start.row); + this.$clickSelection.end = editor.selection.getLineRange(range.end.row).end; + } + else { + this.$clickSelection = editor.selection.getLineRange(pos.row); + } + this.select(); + }; + DefaultHandlers.prototype.onQuadClick = function (ev) { + var editor = this.editor; + editor.selectAll(); + this.$clickSelection = editor.getSelectionRange(); + this.setState("selectAll"); + }; + DefaultHandlers.prototype.onMouseWheel = function (ev) { + if (ev.getAccelKey()) + return; + if (ev.getShiftKey() && ev.wheelY && !ev.wheelX) { + ev.wheelX = ev.wheelY; + ev.wheelY = 0; + } + var editor = this.editor; + if (!this.$lastScroll) + this.$lastScroll = { t: 0, vx: 0, vy: 0, allowed: 0 }; + var prevScroll = this.$lastScroll; + var t = ev.domEvent.timeStamp; + var dt = t - prevScroll.t; + var vx = dt ? ev.wheelX / dt : prevScroll.vx; + var vy = dt ? ev.wheelY / dt : prevScroll.vy; + if (dt < SCROLL_COOLDOWN_T) { + vx = (vx + prevScroll.vx) / 2; + vy = (vy + prevScroll.vy) / 2; + } + var direction = Math.abs(vx / vy); + var canScroll = false; + if (direction >= 1 && editor.renderer.isScrollableBy(ev.wheelX * ev.speed, 0)) + canScroll = true; + if (direction <= 1 && editor.renderer.isScrollableBy(0, ev.wheelY * ev.speed)) + canScroll = true; + if (canScroll) { + prevScroll.allowed = t; + } + else if (t - prevScroll.allowed < SCROLL_COOLDOWN_T) { + var isSlower = Math.abs(vx) <= 1.5 * Math.abs(prevScroll.vx) + && Math.abs(vy) <= 1.5 * Math.abs(prevScroll.vy); + if (isSlower) { + canScroll = true; + prevScroll.allowed = t; + } + else { + prevScroll.allowed = 0; + } + } + prevScroll.t = t; + prevScroll.vx = vx; + prevScroll.vy = vy; + if (canScroll) { + editor.renderer.scrollBy(ev.wheelX * ev.speed, ev.wheelY * ev.speed); + return ev.stop(); + } + }; + return DefaultHandlers; +}()); +DefaultHandlers.prototype.selectEnd = DefaultHandlers.prototype.selectByLinesEnd; +DefaultHandlers.prototype.selectAllEnd = DefaultHandlers.prototype.selectByLinesEnd; +DefaultHandlers.prototype.selectByWordsEnd = DefaultHandlers.prototype.selectByLinesEnd; +exports.DefaultHandlers = DefaultHandlers; +function calcDistance(ax, ay, bx, by) { + return Math.sqrt(Math.pow(bx - ax, 2) + Math.pow(by - ay, 2)); +} +function calcRangeOrientation(range, cursor) { + if (range.start.row == range.end.row) + var cmp = 2 * cursor.column - range.start.column - range.end.column; + else if (range.start.row == range.end.row - 1 && !range.start.column && !range.end.column) + var cmp = cursor.column - 4; + else + var cmp = 2 * cursor.row - range.start.row - range.end.row; + if (cmp < 0) + return { cursor: range.start, anchor: range.end }; + else + return { cursor: range.end, anchor: range.start }; +} + +}); + +ace.define("ace/tooltip",["require","exports","module","ace/lib/dom","ace/lib/event","ace/range"], function(require, exports, module){"use strict"; +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + if (typeof b !== "function" && b !== null) + throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +var __values = (this && this.__values) || function(o) { + var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0; + if (m) return m.call(o); + if (o && typeof o.length === "number") return { + next: function () { + if (o && i >= o.length) o = void 0; + return { value: o && o[i++], done: !o }; + } + }; + throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined."); +}; +var dom = require("./lib/dom"); +var event = require("./lib/event"); +var Range = require("./range").Range; +var CLASSNAME = "ace_tooltip"; +var Tooltip = /** @class */ (function () { + function Tooltip(parentNode) { + this.isOpen = false; + this.$element = null; + this.$parentNode = parentNode; + } + Tooltip.prototype.$init = function () { + this.$element = dom.createElement("div"); + this.$element.className = CLASSNAME; + this.$element.style.display = "none"; + this.$parentNode.appendChild(this.$element); + return this.$element; + }; + Tooltip.prototype.getElement = function () { + return this.$element || this.$init(); + }; + Tooltip.prototype.setText = function (text) { + this.getElement().textContent = text; + }; + Tooltip.prototype.setHtml = function (html) { + this.getElement().innerHTML = html; + }; + Tooltip.prototype.setPosition = function (x, y) { + this.getElement().style.left = x + "px"; + this.getElement().style.top = y + "px"; + }; + Tooltip.prototype.setClassName = function (className) { + dom.addCssClass(this.getElement(), className); + }; + Tooltip.prototype.setTheme = function (theme) { + this.$element.className = CLASSNAME + " " + + (theme.isDark ? "ace_dark " : "") + (theme.cssClass || ""); + }; + Tooltip.prototype.show = function (text, x, y) { + if (text != null) + this.setText(text); + if (x != null && y != null) + this.setPosition(x, y); + if (!this.isOpen) { + this.getElement().style.display = "block"; + this.isOpen = true; + } + }; + Tooltip.prototype.hide = function () { + if (this.isOpen) { + this.getElement().style.display = "none"; + this.getElement().className = CLASSNAME; + this.isOpen = false; + } + }; + Tooltip.prototype.getHeight = function () { + return this.getElement().offsetHeight; + }; + Tooltip.prototype.getWidth = function () { + return this.getElement().offsetWidth; + }; + Tooltip.prototype.destroy = function () { + this.isOpen = false; + if (this.$element && this.$element.parentNode) { + this.$element.parentNode.removeChild(this.$element); + } + }; + return Tooltip; +}()); +var PopupManager = /** @class */ (function () { + function PopupManager() { + this.popups = []; + } + PopupManager.prototype.addPopup = function (popup) { + this.popups.push(popup); + this.updatePopups(); + }; + PopupManager.prototype.removePopup = function (popup) { + var index = this.popups.indexOf(popup); + if (index !== -1) { + this.popups.splice(index, 1); + this.updatePopups(); + } + }; + PopupManager.prototype.updatePopups = function () { + var e_1, _a, e_2, _b; + this.popups.sort(function (a, b) { return b.priority - a.priority; }); + var visiblepopups = []; + try { + for (var _c = __values(this.popups), _d = _c.next(); !_d.done; _d = _c.next()) { + var popup = _d.value; + var shouldDisplay = true; + try { + for (var visiblepopups_1 = (e_2 = void 0, __values(visiblepopups)), visiblepopups_1_1 = visiblepopups_1.next(); !visiblepopups_1_1.done; visiblepopups_1_1 = visiblepopups_1.next()) { + var visiblePopup = visiblepopups_1_1.value; + if (this.doPopupsOverlap(visiblePopup, popup)) { + shouldDisplay = false; + break; + } + } + } + catch (e_2_1) { e_2 = { error: e_2_1 }; } + finally { + try { + if (visiblepopups_1_1 && !visiblepopups_1_1.done && (_b = visiblepopups_1.return)) _b.call(visiblepopups_1); + } + finally { if (e_2) throw e_2.error; } + } + if (shouldDisplay) { + visiblepopups.push(popup); + } + else { + popup.hide(); + } + } + } + catch (e_1_1) { e_1 = { error: e_1_1 }; } + finally { + try { + if (_d && !_d.done && (_a = _c.return)) _a.call(_c); + } + finally { if (e_1) throw e_1.error; } + } + }; + PopupManager.prototype.doPopupsOverlap = function (popupA, popupB) { + var rectA = popupA.getElement().getBoundingClientRect(); + var rectB = popupB.getElement().getBoundingClientRect(); + return (rectA.left < rectB.right && rectA.right > rectB.left && rectA.top < rectB.bottom && rectA.bottom + > rectB.top); + }; + return PopupManager; +}()); +var popupManager = new PopupManager(); +exports.popupManager = popupManager; +exports.Tooltip = Tooltip; +var HoverTooltip = /** @class */ (function (_super) { + __extends(HoverTooltip, _super); + function HoverTooltip(parentNode) { + if (parentNode === void 0) { parentNode = document.body; } + var _this = _super.call(this, parentNode) || this; + _this.timeout = undefined; + _this.lastT = 0; + _this.idleTime = 350; + _this.lastEvent = undefined; + _this.onMouseOut = _this.onMouseOut.bind(_this); + _this.onMouseMove = _this.onMouseMove.bind(_this); + _this.waitForHover = _this.waitForHover.bind(_this); + _this.hide = _this.hide.bind(_this); + var el = _this.getElement(); + el.style.whiteSpace = "pre-wrap"; + el.style.pointerEvents = "auto"; + el.addEventListener("mouseout", _this.onMouseOut); + el.tabIndex = -1; + el.addEventListener("blur", function () { + if (!el.contains(document.activeElement)) + this.hide(); + }.bind(_this)); + el.addEventListener("wheel", event.stopPropagation); + return _this; + } + HoverTooltip.prototype.addToEditor = function (editor) { + editor.on("mousemove", this.onMouseMove); + editor.on("mousedown", this.hide); + editor.renderer.getMouseEventTarget().addEventListener("mouseout", this.onMouseOut, true); + }; + HoverTooltip.prototype.removeFromEditor = function (editor) { + editor.off("mousemove", this.onMouseMove); + editor.off("mousedown", this.hide); + editor.renderer.getMouseEventTarget().removeEventListener("mouseout", this.onMouseOut, true); + if (this.timeout) { + clearTimeout(this.timeout); + this.timeout = null; + } + }; + HoverTooltip.prototype.onMouseMove = function (e, editor) { + this.lastEvent = e; + this.lastT = Date.now(); + var isMousePressed = editor.$mouseHandler.isMousePressed; + if (this.isOpen) { + var pos = this.lastEvent && this.lastEvent.getDocumentPosition(); + if (!this.range + || !this.range.contains(pos.row, pos.column) + || isMousePressed + || this.isOutsideOfText(this.lastEvent)) { + this.hide(); + } + } + if (this.timeout || isMousePressed) + return; + this.lastEvent = e; + this.timeout = setTimeout(this.waitForHover, this.idleTime); + }; + HoverTooltip.prototype.waitForHover = function () { + if (this.timeout) + clearTimeout(this.timeout); + var dt = Date.now() - this.lastT; + if (this.idleTime - dt > 10) { + this.timeout = setTimeout(this.waitForHover, this.idleTime - dt); + return; + } + this.timeout = null; + if (this.lastEvent && !this.isOutsideOfText(this.lastEvent)) { + this.$gatherData(this.lastEvent, this.lastEvent.editor); + } + }; + HoverTooltip.prototype.isOutsideOfText = function (e) { + var editor = e.editor; + var docPos = e.getDocumentPosition(); + var line = editor.session.getLine(docPos.row); + if (docPos.column == line.length) { + var screenPos = editor.renderer.pixelToScreenCoordinates(e.clientX, e.clientY); + var clippedPos = editor.session.documentToScreenPosition(docPos.row, docPos.column); + if (clippedPos.column != screenPos.column + || clippedPos.row != screenPos.row) { + return true; + } + } + return false; + }; + HoverTooltip.prototype.setDataProvider = function (value) { + this.$gatherData = value; + }; + HoverTooltip.prototype.showForRange = function (editor, range, domNode, startingEvent) { + var MARGIN = 10; + if (startingEvent && startingEvent != this.lastEvent) + return; + if (this.isOpen && document.activeElement == this.getElement()) + return; + var renderer = editor.renderer; + if (!this.isOpen) { + popupManager.addPopup(this); + this.$registerCloseEvents(); + this.setTheme(renderer.theme); + } + this.isOpen = true; + this.addMarker(range, editor.session); + this.range = Range.fromPoints(range.start, range.end); + var position = renderer.textToScreenCoordinates(range.start.row, range.start.column); + var rect = renderer.scroller.getBoundingClientRect(); + if (position.pageX < rect.left) + position.pageX = rect.left; + var element = this.getElement(); + element.innerHTML = ""; + element.appendChild(domNode); + element.style.maxHeight = ""; + element.style.display = "block"; + var labelHeight = element.clientHeight; + var labelWidth = element.clientWidth; + var spaceBelow = window.innerHeight - position.pageY - renderer.lineHeight; + var isAbove = true; + if (position.pageY - labelHeight < 0 && position.pageY < spaceBelow) { + isAbove = false; + } + element.style.maxHeight = (isAbove ? position.pageY : spaceBelow) - MARGIN + "px"; + element.style.top = isAbove ? "" : position.pageY + renderer.lineHeight + "px"; + element.style.bottom = isAbove ? window.innerHeight - position.pageY + "px" : ""; + element.style.left = Math.min(position.pageX, window.innerWidth - labelWidth - MARGIN) + "px"; + }; + HoverTooltip.prototype.addMarker = function (range, session) { + if (this.marker) { + this.$markerSession.removeMarker(this.marker); + } + this.$markerSession = session; + this.marker = session && session.addMarker(range, "ace_highlight-marker", "text"); + }; + HoverTooltip.prototype.hide = function (e) { + if (!e && document.activeElement == this.getElement()) + return; + if (e && e.target && (e.type != "keydown" || e.ctrlKey || e.metaKey) && this.$element.contains(e.target)) + return; + this.lastEvent = null; + if (this.timeout) + clearTimeout(this.timeout); + this.timeout = null; + this.addMarker(null); + if (this.isOpen) { + this.$removeCloseEvents(); + this.getElement().style.display = "none"; + this.isOpen = false; + popupManager.removePopup(this); + } + }; + HoverTooltip.prototype.$registerCloseEvents = function () { + window.addEventListener("keydown", this.hide, true); + window.addEventListener("wheel", this.hide, true); + window.addEventListener("mousedown", this.hide, true); + }; + HoverTooltip.prototype.$removeCloseEvents = function () { + window.removeEventListener("keydown", this.hide, true); + window.removeEventListener("wheel", this.hide, true); + window.removeEventListener("mousedown", this.hide, true); + }; + HoverTooltip.prototype.onMouseOut = function (e) { + if (this.timeout) { + clearTimeout(this.timeout); + this.timeout = null; + } + this.lastEvent = null; + if (!this.isOpen) + return; + if (!e.relatedTarget || this.getElement().contains(e.relatedTarget)) + return; + if (e && e.currentTarget.contains(e.relatedTarget)) + return; + if (!e.relatedTarget.classList.contains("ace_content")) + this.hide(); + }; + return HoverTooltip; +}(Tooltip)); +exports.HoverTooltip = HoverTooltip; + +}); + +ace.define("ace/mouse/default_gutter_handler",["require","exports","module","ace/lib/dom","ace/lib/event","ace/tooltip","ace/config"], function(require, exports, module){"use strict"; +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + if (typeof b !== "function" && b !== null) + throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +var __values = (this && this.__values) || function(o) { + var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0; + if (m) return m.call(o); + if (o && typeof o.length === "number") return { + next: function () { + if (o && i >= o.length) o = void 0; + return { value: o && o[i++], done: !o }; + } + }; + throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined."); +}; +var dom = require("../lib/dom"); +var event = require("../lib/event"); +var Tooltip = require("../tooltip").Tooltip; +var nls = require("../config").nls; +function GutterHandler(mouseHandler) { + var editor = mouseHandler.editor; + var gutter = editor.renderer.$gutterLayer; + var tooltip = new GutterTooltip(editor); + mouseHandler.editor.setDefaultHandler("guttermousedown", function (e) { + if (!editor.isFocused() || e.getButton() != 0) + return; + var gutterRegion = gutter.getRegion(e); + if (gutterRegion == "foldWidgets") + return; + var row = e.getDocumentPosition().row; + var selection = editor.session.selection; + if (e.getShiftKey()) + selection.selectTo(row, 0); + else { + if (e.domEvent.detail == 2) { + editor.selectAll(); + return e.preventDefault(); + } + mouseHandler.$clickSelection = editor.selection.getLineRange(row); + } + mouseHandler.setState("selectByLines"); + mouseHandler.captureMouse(e); + return e.preventDefault(); + }); + var tooltipTimeout, mouseEvent; + function showTooltip() { + var row = mouseEvent.getDocumentPosition().row; + var maxRow = editor.session.getLength(); + if (row == maxRow) { + var screenRow = editor.renderer.pixelToScreenCoordinates(0, mouseEvent.y).row; + var pos = mouseEvent.$pos; + if (screenRow > editor.session.documentToScreenRow(pos.row, pos.column)) + return hideTooltip(); + } + tooltip.showTooltip(row); + if (!tooltip.isOpen) + return; + editor.on("mousewheel", hideTooltip); + if (mouseHandler.$tooltipFollowsMouse) { + moveTooltip(mouseEvent); + } + else { + var gutterRow = mouseEvent.getGutterRow(); + var gutterCell = gutter.$lines.get(gutterRow); + if (gutterCell) { + var gutterElement = gutterCell.element.querySelector(".ace_gutter_annotation"); + var rect = gutterElement.getBoundingClientRect(); + var style = tooltip.getElement().style; + style.left = rect.right + "px"; + style.top = rect.bottom + "px"; + } + else { + moveTooltip(mouseEvent); + } + } + } + function hideTooltip() { + if (tooltipTimeout) + tooltipTimeout = clearTimeout(tooltipTimeout); + if (tooltip.isOpen) { + tooltip.hideTooltip(); + editor.off("mousewheel", hideTooltip); + } + } + function moveTooltip(e) { + tooltip.setPosition(e.x, e.y); + } + mouseHandler.editor.setDefaultHandler("guttermousemove", function (e) { + var target = e.domEvent.target || e.domEvent.srcElement; + if (dom.hasCssClass(target, "ace_fold-widget")) + return hideTooltip(); + if (tooltip.isOpen && mouseHandler.$tooltipFollowsMouse) + moveTooltip(e); + mouseEvent = e; + if (tooltipTimeout) + return; + tooltipTimeout = setTimeout(function () { + tooltipTimeout = null; + if (mouseEvent && !mouseHandler.isMousePressed) + showTooltip(); + else + hideTooltip(); + }, 50); + }); + event.addListener(editor.renderer.$gutter, "mouseout", function (e) { + mouseEvent = null; + if (!tooltip.isOpen || tooltipTimeout) + return; + tooltipTimeout = setTimeout(function () { + tooltipTimeout = null; + hideTooltip(); + }, 50); + }, editor); + editor.on("changeSession", hideTooltip); + editor.on("input", hideTooltip); +} +exports.GutterHandler = GutterHandler; +var GutterTooltip = /** @class */ (function (_super) { + __extends(GutterTooltip, _super); + function GutterTooltip(editor) { + var _this = _super.call(this, editor.container) || this; + _this.editor = editor; + return _this; + } + GutterTooltip.prototype.setPosition = function (x, y) { + var windowWidth = window.innerWidth || document.documentElement.clientWidth; + var windowHeight = window.innerHeight || document.documentElement.clientHeight; + var width = this.getWidth(); + var height = this.getHeight(); + x += 15; + y += 15; + if (x + width > windowWidth) { + x -= (x + width) - windowWidth; + } + if (y + height > windowHeight) { + y -= 20 + height; + } + Tooltip.prototype.setPosition.call(this, x, y); + }; + Object.defineProperty(GutterTooltip, "annotationLabels", { + get: function () { + return { + error: { singular: nls("error"), plural: nls("errors") }, + warning: { singular: nls("warning"), plural: nls("warnings") }, + info: { singular: nls("information message"), plural: nls("information messages") } + }; + }, + enumerable: false, + configurable: true + }); + GutterTooltip.prototype.showTooltip = function (row) { + var gutter = this.editor.renderer.$gutterLayer; + var annotationsInRow = gutter.$annotations[row]; + var annotation; + if (annotationsInRow) + annotation = { text: Array.from(annotationsInRow.text), type: Array.from(annotationsInRow.type) }; + else + annotation = { text: [], type: [] }; + var fold = gutter.session.getFoldLine(row); + if (fold && gutter.$showFoldedAnnotations) { + var annotationsInFold = { error: [], warning: [], info: [] }; + var mostSevereAnnotationInFoldType; + for (var i = row + 1; i <= fold.end.row; i++) { + if (!gutter.$annotations[i]) + continue; + for (var j = 0; j < gutter.$annotations[i].text.length; j++) { + var annotationType = gutter.$annotations[i].type[j]; + annotationsInFold[annotationType].push(gutter.$annotations[i].text[j]); + if (annotationType === "error") { + mostSevereAnnotationInFoldType = "error_fold"; + continue; + } + if (annotationType === "warning") { + mostSevereAnnotationInFoldType = "warning_fold"; + continue; + } + } + } + if (mostSevereAnnotationInFoldType === "error_fold" || mostSevereAnnotationInFoldType === "warning_fold") { + var summaryFoldedAnnotations = "".concat(GutterTooltip.annotationsToSummaryString(annotationsInFold), " in folded code."); + annotation.text.push(summaryFoldedAnnotations); + annotation.type.push(mostSevereAnnotationInFoldType); + } + } + if (annotation.text.length === 0) + return this.hide(); + var annotationMessages = { error: [], warning: [], info: [] }; + var iconClassName = gutter.$useSvgGutterIcons ? "ace_icon_svg" : "ace_icon"; + for (var i = 0; i < annotation.text.length; i++) { + var line = " ").concat(annotation.text[i]); + annotationMessages[annotation.type[i].replace("_fold", "")].push(line); + } + var tooltipContent = [].concat(annotationMessages.error, annotationMessages.warning, annotationMessages.info).join("
"); + this.setHtml(tooltipContent); + this.$element.setAttribute("aria-live", "polite"); + if (!this.isOpen) { + this.setTheme(this.editor.renderer.theme); + this.setClassName("ace_gutter-tooltip"); + } + this.show(); + this.editor._signal("showGutterTooltip", this); + }; + GutterTooltip.prototype.hideTooltip = function () { + this.$element.removeAttribute("aria-live"); + this.hide(); + this.editor._signal("hideGutterTooltip", this); + }; + GutterTooltip.annotationsToSummaryString = function (annotations) { + var e_1, _a; + var summary = []; + var annotationTypes = ['error', 'warning', 'info']; + try { + for (var annotationTypes_1 = __values(annotationTypes), annotationTypes_1_1 = annotationTypes_1.next(); !annotationTypes_1_1.done; annotationTypes_1_1 = annotationTypes_1.next()) { + var annotationType = annotationTypes_1_1.value; + if (!annotations[annotationType].length) + continue; + var label = annotations[annotationType].length === 1 ? GutterTooltip.annotationLabels[annotationType].singular : GutterTooltip.annotationLabels[annotationType].plural; + summary.push("".concat(annotations[annotationType].length, " ").concat(label)); + } + } + catch (e_1_1) { e_1 = { error: e_1_1 }; } + finally { + try { + if (annotationTypes_1_1 && !annotationTypes_1_1.done && (_a = annotationTypes_1.return)) _a.call(annotationTypes_1); + } + finally { if (e_1) throw e_1.error; } + } + return summary.join(", "); + }; + return GutterTooltip; +}(Tooltip)); +exports.GutterTooltip = GutterTooltip; + +}); + +ace.define("ace/mouse/mouse_event",["require","exports","module","ace/lib/event","ace/lib/useragent"], function(require, exports, module){"use strict"; +var event = require("../lib/event"); +var useragent = require("../lib/useragent"); +var MouseEvent = /** @class */ (function () { + function MouseEvent(domEvent, editor) { + this.domEvent = domEvent; + this.editor = editor; + this.x = this.clientX = domEvent.clientX; + this.y = this.clientY = domEvent.clientY; + this.$pos = null; + this.$inSelection = null; + this.propagationStopped = false; + this.defaultPrevented = false; + } + MouseEvent.prototype.stopPropagation = function () { + event.stopPropagation(this.domEvent); + this.propagationStopped = true; + }; + MouseEvent.prototype.preventDefault = function () { + event.preventDefault(this.domEvent); + this.defaultPrevented = true; + }; + MouseEvent.prototype.stop = function () { + this.stopPropagation(); + this.preventDefault(); + }; + MouseEvent.prototype.getDocumentPosition = function () { + if (this.$pos) + return this.$pos; + this.$pos = this.editor.renderer.screenToTextCoordinates(this.clientX, this.clientY); + return this.$pos; + }; + MouseEvent.prototype.getGutterRow = function () { + var documentRow = this.getDocumentPosition().row; + var screenRow = this.editor.session.documentToScreenRow(documentRow, 0); + var screenTopRow = this.editor.session.documentToScreenRow(this.editor.renderer.$gutterLayer.$lines.get(0).row, 0); + return screenRow - screenTopRow; + }; + MouseEvent.prototype.inSelection = function () { + if (this.$inSelection !== null) + return this.$inSelection; + var editor = this.editor; + var selectionRange = editor.getSelectionRange(); + if (selectionRange.isEmpty()) + this.$inSelection = false; + else { + var pos = this.getDocumentPosition(); + this.$inSelection = selectionRange.contains(pos.row, pos.column); + } + return this.$inSelection; + }; + MouseEvent.prototype.getButton = function () { + return event.getButton(this.domEvent); + }; + MouseEvent.prototype.getShiftKey = function () { + return this.domEvent.shiftKey; + }; + MouseEvent.prototype.getAccelKey = function () { + return useragent.isMac ? this.domEvent.metaKey : this.domEvent.ctrlKey; + }; + return MouseEvent; +}()); +exports.MouseEvent = MouseEvent; + +}); + +ace.define("ace/mouse/dragdrop_handler",["require","exports","module","ace/lib/dom","ace/lib/event","ace/lib/useragent"], function(require, exports, module){"use strict"; +var dom = require("../lib/dom"); +var event = require("../lib/event"); +var useragent = require("../lib/useragent"); +var AUTOSCROLL_DELAY = 200; +var SCROLL_CURSOR_DELAY = 200; +var SCROLL_CURSOR_HYSTERESIS = 5; +function DragdropHandler(mouseHandler) { + var editor = mouseHandler.editor; + var dragImage = dom.createElement("div"); + dragImage.style.cssText = "top:-100px;position:absolute;z-index:2147483647;opacity:0.5"; + dragImage.textContent = "\xa0"; + var exports = ["dragWait", "dragWaitEnd", "startDrag", "dragReadyEnd", "onMouseDrag"]; + exports.forEach(function (x) { + mouseHandler[x] = this[x]; + }, this); + editor.on("mousedown", this.onMouseDown.bind(mouseHandler)); + var mouseTarget = editor.container; + var dragSelectionMarker, x, y; + var timerId, range; + var dragCursor, counter = 0; + var dragOperation; + var isInternal; + var autoScrollStartTime; + var cursorMovedTime; + var cursorPointOnCaretMoved; + this.onDragStart = function (e) { + if (this.cancelDrag || !mouseTarget.draggable) { + var self = this; + setTimeout(function () { + self.startSelect(); + self.captureMouse(e); + }, 0); + return e.preventDefault(); + } + range = editor.getSelectionRange(); + var dataTransfer = e.dataTransfer; + dataTransfer.effectAllowed = editor.getReadOnly() ? "copy" : "copyMove"; + editor.container.appendChild(dragImage); + dataTransfer.setDragImage && dataTransfer.setDragImage(dragImage, 0, 0); + setTimeout(function () { + editor.container.removeChild(dragImage); + }); + dataTransfer.clearData(); + dataTransfer.setData("Text", editor.session.getTextRange()); + isInternal = true; + this.setState("drag"); + }; + this.onDragEnd = function (e) { + mouseTarget.draggable = false; + isInternal = false; + this.setState(null); + if (!editor.getReadOnly()) { + var dropEffect = e.dataTransfer.dropEffect; + if (!dragOperation && dropEffect == "move") + editor.session.remove(editor.getSelectionRange()); + editor.$resetCursorStyle(); + } + this.editor.unsetStyle("ace_dragging"); + this.editor.renderer.setCursorStyle(""); + }; + this.onDragEnter = function (e) { + if (editor.getReadOnly() || !canAccept(e.dataTransfer)) + return; + x = e.clientX; + y = e.clientY; + if (!dragSelectionMarker) + addDragMarker(); + counter++; + e.dataTransfer.dropEffect = dragOperation = getDropEffect(e); + return event.preventDefault(e); + }; + this.onDragOver = function (e) { + if (editor.getReadOnly() || !canAccept(e.dataTransfer)) + return; + x = e.clientX; + y = e.clientY; + if (!dragSelectionMarker) { + addDragMarker(); + counter++; + } + if (onMouseMoveTimer !== null) + onMouseMoveTimer = null; + e.dataTransfer.dropEffect = dragOperation = getDropEffect(e); + return event.preventDefault(e); + }; + this.onDragLeave = function (e) { + counter--; + if (counter <= 0 && dragSelectionMarker) { + clearDragMarker(); + dragOperation = null; + return event.preventDefault(e); + } + }; + this.onDrop = function (e) { + if (!dragCursor) + return; + var dataTransfer = e.dataTransfer; + if (isInternal) { + switch (dragOperation) { + case "move": + if (range.contains(dragCursor.row, dragCursor.column)) { + range = { + start: dragCursor, + end: dragCursor + }; + } + else { + range = editor.moveText(range, dragCursor); + } + break; + case "copy": + range = editor.moveText(range, dragCursor, true); + break; + } + } + else { + var dropData = dataTransfer.getData('Text'); + range = { + start: dragCursor, + end: editor.session.insert(dragCursor, dropData) + }; + editor.focus(); + dragOperation = null; + } + clearDragMarker(); + return event.preventDefault(e); + }; + event.addListener(mouseTarget, "dragstart", this.onDragStart.bind(mouseHandler), editor); + event.addListener(mouseTarget, "dragend", this.onDragEnd.bind(mouseHandler), editor); + event.addListener(mouseTarget, "dragenter", this.onDragEnter.bind(mouseHandler), editor); + event.addListener(mouseTarget, "dragover", this.onDragOver.bind(mouseHandler), editor); + event.addListener(mouseTarget, "dragleave", this.onDragLeave.bind(mouseHandler), editor); + event.addListener(mouseTarget, "drop", this.onDrop.bind(mouseHandler), editor); + function scrollCursorIntoView(cursor, prevCursor) { + var now = Date.now(); + var vMovement = !prevCursor || cursor.row != prevCursor.row; + var hMovement = !prevCursor || cursor.column != prevCursor.column; + if (!cursorMovedTime || vMovement || hMovement) { + editor.moveCursorToPosition(cursor); + cursorMovedTime = now; + cursorPointOnCaretMoved = { x: x, y: y }; + } + else { + var distance = calcDistance(cursorPointOnCaretMoved.x, cursorPointOnCaretMoved.y, x, y); + if (distance > SCROLL_CURSOR_HYSTERESIS) { + cursorMovedTime = null; + } + else if (now - cursorMovedTime >= SCROLL_CURSOR_DELAY) { + editor.renderer.scrollCursorIntoView(); + cursorMovedTime = null; + } + } + } + function autoScroll(cursor, prevCursor) { + var now = Date.now(); + var lineHeight = editor.renderer.layerConfig.lineHeight; + var characterWidth = editor.renderer.layerConfig.characterWidth; + var editorRect = editor.renderer.scroller.getBoundingClientRect(); + var offsets = { + x: { + left: x - editorRect.left, + right: editorRect.right - x + }, + y: { + top: y - editorRect.top, + bottom: editorRect.bottom - y + } + }; + var nearestXOffset = Math.min(offsets.x.left, offsets.x.right); + var nearestYOffset = Math.min(offsets.y.top, offsets.y.bottom); + var scrollCursor = { row: cursor.row, column: cursor.column }; + if (nearestXOffset / characterWidth <= 2) { + scrollCursor.column += (offsets.x.left < offsets.x.right ? -3 : +2); + } + if (nearestYOffset / lineHeight <= 1) { + scrollCursor.row += (offsets.y.top < offsets.y.bottom ? -1 : +1); + } + var vScroll = cursor.row != scrollCursor.row; + var hScroll = cursor.column != scrollCursor.column; + var vMovement = !prevCursor || cursor.row != prevCursor.row; + if (vScroll || (hScroll && !vMovement)) { + if (!autoScrollStartTime) + autoScrollStartTime = now; + else if (now - autoScrollStartTime >= AUTOSCROLL_DELAY) + editor.renderer.scrollCursorIntoView(scrollCursor); + } + else { + autoScrollStartTime = null; + } + } + function onDragInterval() { + var prevCursor = dragCursor; + dragCursor = editor.renderer.screenToTextCoordinates(x, y); + scrollCursorIntoView(dragCursor, prevCursor); + autoScroll(dragCursor, prevCursor); + } + function addDragMarker() { + range = editor.selection.toOrientedRange(); + dragSelectionMarker = editor.session.addMarker(range, "ace_selection", editor.getSelectionStyle()); + editor.clearSelection(); + if (editor.isFocused()) + editor.renderer.$cursorLayer.setBlinking(false); + clearInterval(timerId); + onDragInterval(); + timerId = setInterval(onDragInterval, 20); + counter = 0; + event.addListener(document, "mousemove", onMouseMove); + } + function clearDragMarker() { + clearInterval(timerId); + editor.session.removeMarker(dragSelectionMarker); + dragSelectionMarker = null; + editor.selection.fromOrientedRange(range); + if (editor.isFocused() && !isInternal) + editor.$resetCursorStyle(); + range = null; + dragCursor = null; + counter = 0; + autoScrollStartTime = null; + cursorMovedTime = null; + event.removeListener(document, "mousemove", onMouseMove); + } + var onMouseMoveTimer = null; + function onMouseMove() { + if (onMouseMoveTimer == null) { + onMouseMoveTimer = setTimeout(function () { + if (onMouseMoveTimer != null && dragSelectionMarker) + clearDragMarker(); + }, 20); + } + } + function canAccept(dataTransfer) { + var types = dataTransfer.types; + return !types || Array.prototype.some.call(types, function (type) { + return type == 'text/plain' || type == 'Text'; + }); + } + function getDropEffect(e) { + var copyAllowed = ['copy', 'copymove', 'all', 'uninitialized']; + var moveAllowed = ['move', 'copymove', 'linkmove', 'all', 'uninitialized']; + var copyModifierState = useragent.isMac ? e.altKey : e.ctrlKey; + var effectAllowed = "uninitialized"; + try { + effectAllowed = e.dataTransfer.effectAllowed.toLowerCase(); + } + catch (e) { } + var dropEffect = "none"; + if (copyModifierState && copyAllowed.indexOf(effectAllowed) >= 0) + dropEffect = "copy"; + else if (moveAllowed.indexOf(effectAllowed) >= 0) + dropEffect = "move"; + else if (copyAllowed.indexOf(effectAllowed) >= 0) + dropEffect = "copy"; + return dropEffect; + } +} +(function () { + this.dragWait = function () { + var interval = Date.now() - this.mousedownEvent.time; + if (interval > this.editor.getDragDelay()) + this.startDrag(); + }; + this.dragWaitEnd = function () { + var target = this.editor.container; + target.draggable = false; + this.startSelect(this.mousedownEvent.getDocumentPosition()); + this.selectEnd(); + }; + this.dragReadyEnd = function (e) { + this.editor.$resetCursorStyle(); + this.editor.unsetStyle("ace_dragging"); + this.editor.renderer.setCursorStyle(""); + this.dragWaitEnd(); + }; + this.startDrag = function () { + this.cancelDrag = false; + var editor = this.editor; + var target = editor.container; + target.draggable = true; + editor.renderer.$cursorLayer.setBlinking(false); + editor.setStyle("ace_dragging"); + var cursorStyle = useragent.isWin ? "default" : "move"; + editor.renderer.setCursorStyle(cursorStyle); + this.setState("dragReady"); + }; + this.onMouseDrag = function (e) { + var target = this.editor.container; + if (useragent.isIE && this.state == "dragReady") { + var distance = calcDistance(this.mousedownEvent.x, this.mousedownEvent.y, this.x, this.y); + if (distance > 3) + target.dragDrop(); + } + if (this.state === "dragWait") { + var distance = calcDistance(this.mousedownEvent.x, this.mousedownEvent.y, this.x, this.y); + if (distance > 0) { + target.draggable = false; + this.startSelect(this.mousedownEvent.getDocumentPosition()); + } + } + }; + this.onMouseDown = function (e) { + if (!this.$dragEnabled) + return; + this.mousedownEvent = e; + var editor = this.editor; + var inSelection = e.inSelection(); + var button = e.getButton(); + var clickCount = e.domEvent.detail || 1; + if (clickCount === 1 && button === 0 && inSelection) { + if (e.editor.inMultiSelectMode && (e.getAccelKey() || e.getShiftKey())) + return; + this.mousedownEvent.time = Date.now(); + var eventTarget = e.domEvent.target || e.domEvent.srcElement; + if ("unselectable" in eventTarget) + eventTarget.unselectable = "on"; + if (editor.getDragDelay()) { + if (useragent.isWebKit) { + this.cancelDrag = true; + var mouseTarget = editor.container; + mouseTarget.draggable = true; + } + this.setState("dragWait"); + } + else { + this.startDrag(); + } + this.captureMouse(e, this.onMouseDrag.bind(this)); + e.defaultPrevented = true; + } + }; +}).call(DragdropHandler.prototype); +function calcDistance(ax, ay, bx, by) { + return Math.sqrt(Math.pow(bx - ax, 2) + Math.pow(by - ay, 2)); +} +exports.DragdropHandler = DragdropHandler; + +}); + +ace.define("ace/mouse/touch_handler",["require","exports","module","ace/mouse/mouse_event","ace/lib/event","ace/lib/dom"], function(require, exports, module){"use strict"; +var MouseEvent = require("./mouse_event").MouseEvent; +var event = require("../lib/event"); +var dom = require("../lib/dom"); +exports.addTouchListeners = function (el, editor) { + var mode = "scroll"; + var startX; + var startY; + var touchStartT; + var lastT; + var longTouchTimer; + var animationTimer; + var animationSteps = 0; + var pos; + var clickCount = 0; + var vX = 0; + var vY = 0; + var pressed; + var contextMenu; + function createContextMenu() { + var clipboard = window.navigator && window.navigator.clipboard; + var isOpen = false; + var updateMenu = function () { + var selected = editor.getCopyText(); + var hasUndo = editor.session.getUndoManager().hasUndo(); + contextMenu.replaceChild(dom.buildDom(isOpen ? ["span", + !selected && ["span", { class: "ace_mobile-button", action: "selectall" }, "Select All"], + selected && ["span", { class: "ace_mobile-button", action: "copy" }, "Copy"], + selected && ["span", { class: "ace_mobile-button", action: "cut" }, "Cut"], + clipboard && ["span", { class: "ace_mobile-button", action: "paste" }, "Paste"], + hasUndo && ["span", { class: "ace_mobile-button", action: "undo" }, "Undo"], + ["span", { class: "ace_mobile-button", action: "find" }, "Find"], + ["span", { class: "ace_mobile-button", action: "openCommandPalette" }, "Palette"] + ] : ["span"]), contextMenu.firstChild); + }; + var handleClick = function (e) { + var action = e.target.getAttribute("action"); + if (action == "more" || !isOpen) { + isOpen = !isOpen; + return updateMenu(); + } + if (action == "paste") { + clipboard.readText().then(function (text) { + editor.execCommand(action, text); + }); + } + else if (action) { + if (action == "cut" || action == "copy") { + if (clipboard) + clipboard.writeText(editor.getCopyText()); + else + document.execCommand("copy"); + } + editor.execCommand(action); + } + contextMenu.firstChild.style.display = "none"; + isOpen = false; + if (action != "openCommandPalette") + editor.focus(); + }; + contextMenu = dom.buildDom(["div", + { + class: "ace_mobile-menu", + ontouchstart: function (e) { + mode = "menu"; + e.stopPropagation(); + e.preventDefault(); + editor.textInput.focus(); + }, + ontouchend: function (e) { + e.stopPropagation(); + e.preventDefault(); + handleClick(e); + }, + onclick: handleClick + }, + ["span"], + ["span", { class: "ace_mobile-button", action: "more" }, "..."] + ], editor.container); + } + function showContextMenu() { + if (!contextMenu) + createContextMenu(); + var cursor = editor.selection.cursor; + var pagePos = editor.renderer.textToScreenCoordinates(cursor.row, cursor.column); + var leftOffset = editor.renderer.textToScreenCoordinates(0, 0).pageX; + var scrollLeft = editor.renderer.scrollLeft; + var rect = editor.container.getBoundingClientRect(); + contextMenu.style.top = pagePos.pageY - rect.top - 3 + "px"; + if (pagePos.pageX - rect.left < rect.width - 70) { + contextMenu.style.left = ""; + contextMenu.style.right = "10px"; + } + else { + contextMenu.style.right = ""; + contextMenu.style.left = leftOffset + scrollLeft - rect.left + "px"; + } + contextMenu.style.display = ""; + contextMenu.firstChild.style.display = "none"; + editor.on("input", hideContextMenu); + } + function hideContextMenu(e) { + if (contextMenu) + contextMenu.style.display = "none"; + editor.off("input", hideContextMenu); + } + function handleLongTap() { + longTouchTimer = null; + clearTimeout(longTouchTimer); + var range = editor.selection.getRange(); + var inSelection = range.contains(pos.row, pos.column); + if (range.isEmpty() || !inSelection) { + editor.selection.moveToPosition(pos); + editor.selection.selectWord(); + } + mode = "wait"; + showContextMenu(); + } + function switchToSelectionMode() { + longTouchTimer = null; + clearTimeout(longTouchTimer); + editor.selection.moveToPosition(pos); + var range = clickCount >= 2 + ? editor.selection.getLineRange(pos.row) + : editor.session.getBracketRange(pos); + if (range && !range.isEmpty()) { + editor.selection.setRange(range); + } + else { + editor.selection.selectWord(); + } + mode = "wait"; + } + event.addListener(el, "contextmenu", function (e) { + if (!pressed) + return; + var textarea = editor.textInput.getElement(); + textarea.focus(); + }, editor); + event.addListener(el, "touchstart", function (e) { + var touches = e.touches; + if (longTouchTimer || touches.length > 1) { + clearTimeout(longTouchTimer); + longTouchTimer = null; + touchStartT = -1; + mode = "zoom"; + return; + } + pressed = editor.$mouseHandler.isMousePressed = true; + var h = editor.renderer.layerConfig.lineHeight; + var w = editor.renderer.layerConfig.lineHeight; + var t = e.timeStamp; + lastT = t; + var touchObj = touches[0]; + var x = touchObj.clientX; + var y = touchObj.clientY; + if (Math.abs(startX - x) + Math.abs(startY - y) > h) + touchStartT = -1; + startX = e.clientX = x; + startY = e.clientY = y; + vX = vY = 0; + var ev = new MouseEvent(e, editor); + pos = ev.getDocumentPosition(); + if (t - touchStartT < 500 && touches.length == 1 && !animationSteps) { + clickCount++; + e.preventDefault(); + e.button = 0; + switchToSelectionMode(); + } + else { + clickCount = 0; + var cursor = editor.selection.cursor; + var anchor = editor.selection.isEmpty() ? cursor : editor.selection.anchor; + var cursorPos = editor.renderer.$cursorLayer.getPixelPosition(cursor, true); + var anchorPos = editor.renderer.$cursorLayer.getPixelPosition(anchor, true); + var rect = editor.renderer.scroller.getBoundingClientRect(); + var offsetTop = editor.renderer.layerConfig.offset; + var offsetLeft = editor.renderer.scrollLeft; + var weightedDistance = function (x, y) { + x = x / w; + y = y / h - 0.75; + return x * x + y * y; + }; + if (e.clientX < rect.left) { + mode = "zoom"; + return; + } + var diff1 = weightedDistance(e.clientX - rect.left - cursorPos.left + offsetLeft, e.clientY - rect.top - cursorPos.top + offsetTop); + var diff2 = weightedDistance(e.clientX - rect.left - anchorPos.left + offsetLeft, e.clientY - rect.top - anchorPos.top + offsetTop); + if (diff1 < 3.5 && diff2 < 3.5) + mode = diff1 > diff2 ? "cursor" : "anchor"; + if (diff2 < 3.5) + mode = "anchor"; + else if (diff1 < 3.5) + mode = "cursor"; + else + mode = "scroll"; + longTouchTimer = setTimeout(handleLongTap, 450); + } + touchStartT = t; + }, editor); + event.addListener(el, "touchend", function (e) { + pressed = editor.$mouseHandler.isMousePressed = false; + if (animationTimer) + clearInterval(animationTimer); + if (mode == "zoom") { + mode = ""; + animationSteps = 0; + } + else if (longTouchTimer) { + editor.selection.moveToPosition(pos); + animationSteps = 0; + showContextMenu(); + } + else if (mode == "scroll") { + animate(); + hideContextMenu(); + } + else { + showContextMenu(); + } + clearTimeout(longTouchTimer); + longTouchTimer = null; + }, editor); + event.addListener(el, "touchmove", function (e) { + if (longTouchTimer) { + clearTimeout(longTouchTimer); + longTouchTimer = null; + } + var touches = e.touches; + if (touches.length > 1 || mode == "zoom") + return; + var touchObj = touches[0]; + var wheelX = startX - touchObj.clientX; + var wheelY = startY - touchObj.clientY; + if (mode == "wait") { + if (wheelX * wheelX + wheelY * wheelY > 4) + mode = "cursor"; + else + return e.preventDefault(); + } + startX = touchObj.clientX; + startY = touchObj.clientY; + e.clientX = touchObj.clientX; + e.clientY = touchObj.clientY; + var t = e.timeStamp; + var dt = t - lastT; + lastT = t; + if (mode == "scroll") { + var mouseEvent = new MouseEvent(e, editor); + mouseEvent.speed = 1; + mouseEvent.wheelX = wheelX; + mouseEvent.wheelY = wheelY; + if (10 * Math.abs(wheelX) < Math.abs(wheelY)) + wheelX = 0; + if (10 * Math.abs(wheelY) < Math.abs(wheelX)) + wheelY = 0; + if (dt != 0) { + vX = wheelX / dt; + vY = wheelY / dt; + } + editor._emit("mousewheel", mouseEvent); + if (!mouseEvent.propagationStopped) { + vX = vY = 0; + } + } + else { + var ev = new MouseEvent(e, editor); + var pos = ev.getDocumentPosition(); + if (mode == "cursor") + editor.selection.moveCursorToPosition(pos); + else if (mode == "anchor") + editor.selection.setSelectionAnchor(pos.row, pos.column); + editor.renderer.scrollCursorIntoView(pos); + e.preventDefault(); + } + }, editor); + function animate() { + animationSteps += 60; + animationTimer = setInterval(function () { + if (animationSteps-- <= 0) { + clearInterval(animationTimer); + animationTimer = null; + } + if (Math.abs(vX) < 0.01) + vX = 0; + if (Math.abs(vY) < 0.01) + vY = 0; + if (animationSteps < 20) + vX = 0.9 * vX; + if (animationSteps < 20) + vY = 0.9 * vY; + var oldScrollTop = editor.session.getScrollTop(); + editor.renderer.scrollBy(10 * vX, 10 * vY); + if (oldScrollTop == editor.session.getScrollTop()) + animationSteps = 0; + }, 10); + } +}; + +}); + +ace.define("ace/mouse/mouse_handler",["require","exports","module","ace/lib/event","ace/lib/useragent","ace/mouse/default_handlers","ace/mouse/default_gutter_handler","ace/mouse/mouse_event","ace/mouse/dragdrop_handler","ace/mouse/touch_handler","ace/config"], function(require, exports, module){"use strict"; +var event = require("../lib/event"); +var useragent = require("../lib/useragent"); +var DefaultHandlers = require("./default_handlers").DefaultHandlers; +var DefaultGutterHandler = require("./default_gutter_handler").GutterHandler; +var MouseEvent = require("./mouse_event").MouseEvent; +var DragdropHandler = require("./dragdrop_handler").DragdropHandler; +var addTouchListeners = require("./touch_handler").addTouchListeners; +var config = require("../config"); +var MouseHandler = /** @class */ (function () { + function MouseHandler(editor) { + var _self = this; + this.editor = editor; + new DefaultHandlers(this); + new DefaultGutterHandler(this); + new DragdropHandler(this); + var focusEditor = function (e) { + var windowBlurred = !document.hasFocus || !document.hasFocus() + || !editor.isFocused() && document.activeElement == (editor.textInput && editor.textInput.getElement()); + if (windowBlurred) + window.focus(); + editor.focus(); + setTimeout(function () { + if (!editor.isFocused()) + editor.focus(); + }); + }; + var mouseTarget = editor.renderer.getMouseEventTarget(); + event.addListener(mouseTarget, "click", this.onMouseEvent.bind(this, "click"), editor); + event.addListener(mouseTarget, "mousemove", this.onMouseMove.bind(this, "mousemove"), editor); + event.addMultiMouseDownListener([ + mouseTarget, + editor.renderer.scrollBarV && editor.renderer.scrollBarV.inner, + editor.renderer.scrollBarH && editor.renderer.scrollBarH.inner, + editor.textInput && editor.textInput.getElement() + ].filter(Boolean), [400, 300, 250], this, "onMouseEvent", editor); + event.addMouseWheelListener(editor.container, this.onMouseWheel.bind(this, "mousewheel"), editor); + addTouchListeners(editor.container, editor); + var gutterEl = editor.renderer.$gutter; + event.addListener(gutterEl, "mousedown", this.onMouseEvent.bind(this, "guttermousedown"), editor); + event.addListener(gutterEl, "click", this.onMouseEvent.bind(this, "gutterclick"), editor); + event.addListener(gutterEl, "dblclick", this.onMouseEvent.bind(this, "gutterdblclick"), editor); + event.addListener(gutterEl, "mousemove", this.onMouseEvent.bind(this, "guttermousemove"), editor); + event.addListener(mouseTarget, "mousedown", focusEditor, editor); + event.addListener(gutterEl, "mousedown", focusEditor, editor); + if (useragent.isIE && editor.renderer.scrollBarV) { + event.addListener(editor.renderer.scrollBarV.element, "mousedown", focusEditor, editor); + event.addListener(editor.renderer.scrollBarH.element, "mousedown", focusEditor, editor); + } + editor.on("mousemove", function (e) { + if (_self.state || _self.$dragDelay || !_self.$dragEnabled) + return; + var character = editor.renderer.screenToTextCoordinates(e.x, e.y); + var range = editor.session.selection.getRange(); + var renderer = editor.renderer; + if (!range.isEmpty() && range.insideStart(character.row, character.column)) { + renderer.setCursorStyle("default"); + } + else { + renderer.setCursorStyle(""); + } + }, editor); + } + MouseHandler.prototype.onMouseEvent = function (name, e) { + if (!this.editor.session) + return; + this.editor._emit(name, new MouseEvent(e, this.editor)); + }; + MouseHandler.prototype.onMouseMove = function (name, e) { + var listeners = this.editor._eventRegistry && this.editor._eventRegistry.mousemove; + if (!listeners || !listeners.length) + return; + this.editor._emit(name, new MouseEvent(e, this.editor)); + }; + MouseHandler.prototype.onMouseWheel = function (name, e) { + var mouseEvent = new MouseEvent(e, this.editor); + mouseEvent.speed = this.$scrollSpeed * 2; + mouseEvent.wheelX = e.wheelX; + mouseEvent.wheelY = e.wheelY; + this.editor._emit(name, mouseEvent); + }; + MouseHandler.prototype.setState = function (state) { + this.state = state; + }; + MouseHandler.prototype.captureMouse = function (ev, mouseMoveHandler) { + this.x = ev.x; + this.y = ev.y; + this.isMousePressed = true; + var editor = this.editor; + var renderer = this.editor.renderer; + renderer.$isMousePressed = true; + var self = this; + var onMouseMove = function (e) { + if (!e) + return; + if (useragent.isWebKit && !e.which && self.releaseMouse) + return self.releaseMouse(); + self.x = e.clientX; + self.y = e.clientY; + mouseMoveHandler && mouseMoveHandler(e); + self.mouseEvent = new MouseEvent(e, self.editor); + self.$mouseMoved = true; + }; + var onCaptureEnd = function (e) { + editor.off("beforeEndOperation", onOperationEnd); + clearInterval(timerId); + if (editor.session) + onCaptureInterval(); + self[self.state + "End"] && self[self.state + "End"](e); + self.state = ""; + self.isMousePressed = renderer.$isMousePressed = false; + if (renderer.$keepTextAreaAtCursor) + renderer.$moveTextAreaToCursor(); + self.$onCaptureMouseMove = self.releaseMouse = null; + e && self.onMouseEvent("mouseup", e); + editor.endOperation(); + }; + var onCaptureInterval = function () { + self[self.state] && self[self.state](); + self.$mouseMoved = false; + }; + if (useragent.isOldIE && ev.domEvent.type == "dblclick") { + return setTimeout(function () { onCaptureEnd(ev); }); + } + var onOperationEnd = function (e) { + if (!self.releaseMouse) + return; + if (editor.curOp.command.name && editor.curOp.selectionChanged) { + self[self.state + "End"] && self[self.state + "End"](); + self.state = ""; + self.releaseMouse(); + } + }; + editor.on("beforeEndOperation", onOperationEnd); + editor.startOperation({ command: { name: "mouse" } }); + self.$onCaptureMouseMove = onMouseMove; + self.releaseMouse = event.capture(this.editor.container, onMouseMove, onCaptureEnd); + var timerId = setInterval(onCaptureInterval, 20); + }; + MouseHandler.prototype.cancelContextMenu = function () { + var stop = function (e) { + if (e && e.domEvent && e.domEvent.type != "contextmenu") + return; + this.editor.off("nativecontextmenu", stop); + if (e && e.domEvent) + event.stopEvent(e.domEvent); + }.bind(this); + setTimeout(stop, 10); + this.editor.on("nativecontextmenu", stop); + }; + MouseHandler.prototype.destroy = function () { + if (this.releaseMouse) + this.releaseMouse(); + }; + return MouseHandler; +}()); +MouseHandler.prototype.releaseMouse = null; +config.defineOptions(MouseHandler.prototype, "mouseHandler", { + scrollSpeed: { initialValue: 2 }, + dragDelay: { initialValue: (useragent.isMac ? 150 : 0) }, + dragEnabled: { initialValue: true }, + focusTimeout: { initialValue: 0 }, + tooltipFollowsMouse: { initialValue: true } +}); +exports.MouseHandler = MouseHandler; + +}); + +ace.define("ace/mouse/fold_handler",["require","exports","module","ace/lib/dom"], function(require, exports, module){"use strict"; +var dom = require("../lib/dom"); +var FoldHandler = /** @class */ (function () { + function FoldHandler(editor) { + editor.on("click", function (e) { + var position = e.getDocumentPosition(); + var session = editor.session; + var fold = session.getFoldAt(position.row, position.column, 1); + if (fold) { + if (e.getAccelKey()) + session.removeFold(fold); + else + session.expandFold(fold); + e.stop(); + } + var target = e.domEvent && e.domEvent.target; + if (target && dom.hasCssClass(target, "ace_inline_button")) { + if (dom.hasCssClass(target, "ace_toggle_wrap")) { + session.setOption("wrap", !session.getUseWrapMode()); + editor.renderer.scrollCursorIntoView(); + } + } + }); + editor.on("gutterclick", function (e) { + var gutterRegion = editor.renderer.$gutterLayer.getRegion(e); + if (gutterRegion == "foldWidgets") { + var row = e.getDocumentPosition().row; + var session = editor.session; + if (session.foldWidgets && session.foldWidgets[row]) + editor.session.onFoldWidgetClick(row, e); + if (!editor.isFocused()) + editor.focus(); + e.stop(); + } + }); + editor.on("gutterdblclick", function (e) { + var gutterRegion = editor.renderer.$gutterLayer.getRegion(e); + if (gutterRegion == "foldWidgets") { + var row = e.getDocumentPosition().row; + var session = editor.session; + var data = session.getParentFoldRangeData(row, true); + var range = data.range || data.firstRange; + if (range) { + row = range.start.row; + var fold = session.getFoldAt(row, session.getLine(row).length, 1); + if (fold) { + session.removeFold(fold); + } + else { + session.addFold("...", range); + editor.renderer.scrollCursorIntoView({ row: range.start.row, column: 0 }); + } + } + e.stop(); + } + }); + } + return FoldHandler; +}()); +exports.FoldHandler = FoldHandler; + +}); + +ace.define("ace/keyboard/keybinding",["require","exports","module","ace/lib/keys","ace/lib/event"], function(require, exports, module){"use strict"; +var keyUtil = require("../lib/keys"); +var event = require("../lib/event"); +var KeyBinding = /** @class */ (function () { + function KeyBinding(editor) { + this.$editor = editor; + this.$data = { editor: editor }; + this.$handlers = []; + this.setDefaultHandler(editor.commands); + } + KeyBinding.prototype.setDefaultHandler = function (kb) { + this.removeKeyboardHandler(this.$defaultHandler); + this.$defaultHandler = kb; + this.addKeyboardHandler(kb, 0); + }; + KeyBinding.prototype.setKeyboardHandler = function (kb) { + var h = this.$handlers; + if (h[h.length - 1] == kb) + return; + while (h[h.length - 1] && h[h.length - 1] != this.$defaultHandler) + this.removeKeyboardHandler(h[h.length - 1]); + this.addKeyboardHandler(kb, 1); + }; + KeyBinding.prototype.addKeyboardHandler = function (kb, pos) { + if (!kb) + return; + if (typeof kb == "function" && !kb.handleKeyboard) + kb.handleKeyboard = kb; + var i = this.$handlers.indexOf(kb); + if (i != -1) + this.$handlers.splice(i, 1); + if (pos == undefined) + this.$handlers.push(kb); + else + this.$handlers.splice(pos, 0, kb); + if (i == -1 && kb.attach) + kb.attach(this.$editor); + }; + KeyBinding.prototype.removeKeyboardHandler = function (kb) { + var i = this.$handlers.indexOf(kb); + if (i == -1) + return false; + this.$handlers.splice(i, 1); + kb.detach && kb.detach(this.$editor); + return true; + }; + KeyBinding.prototype.getKeyboardHandler = function () { + return this.$handlers[this.$handlers.length - 1]; + }; + KeyBinding.prototype.getStatusText = function () { + var data = this.$data; + var editor = data.editor; + return this.$handlers.map(function (h) { + return h.getStatusText && h.getStatusText(editor, data) || ""; + }).filter(Boolean).join(" "); + }; + KeyBinding.prototype.$callKeyboardHandlers = function (hashId, keyString, keyCode, e) { + var toExecute; + var success = false; + var commands = this.$editor.commands; + for (var i = this.$handlers.length; i--;) { + toExecute = this.$handlers[i].handleKeyboard(this.$data, hashId, keyString, keyCode, e); + if (!toExecute || !toExecute.command) + continue; + if (toExecute.command == "null") { + success = true; + } + else { + success = commands.exec(toExecute.command, this.$editor, toExecute.args, e); + } + if (success && e && hashId != -1 && + toExecute.passEvent != true && toExecute.command.passEvent != true) { + event.stopEvent(e); + } + if (success) + break; + } + if (!success && hashId == -1) { + toExecute = { command: "insertstring" }; + success = commands.exec("insertstring", this.$editor, keyString); + } + if (success && this.$editor._signal) + this.$editor._signal("keyboardActivity", toExecute); + return success; + }; + KeyBinding.prototype.onCommandKey = function (e, hashId, keyCode) { + var keyString = keyUtil.keyCodeToString(keyCode); + return this.$callKeyboardHandlers(hashId, keyString, keyCode, e); + }; + KeyBinding.prototype.onTextInput = function (text) { + return this.$callKeyboardHandlers(-1, text); + }; + return KeyBinding; +}()); +exports.KeyBinding = KeyBinding; + +}); + +ace.define("ace/lib/bidiutil",["require","exports","module"], function(require, exports, module){"use strict"; +var ArabicAlefBetIntervalsBegine = ['\u0621', '\u0641']; +var ArabicAlefBetIntervalsEnd = ['\u063A', '\u064a']; +var dir = 0, hiLevel = 0; +var lastArabic = false, hasUBAT_AL = false, hasUBAT_B = false, hasUBAT_S = false, hasBlockSep = false, hasSegSep = false; +var impTab_LTR = [ [0, 3, 0, 1, 0, 0, 0], [0, 3, 0, 1, 2, 2, 0], [0, 3, 0, 0x11, 2, 0, 1], [0, 3, 5, 5, 4, 1, 0], [0, 3, 0x15, 0x15, 4, 0, 1], [0, 3, 5, 5, 4, 2, 0] +]; +var impTab_RTL = [ [2, 0, 1, 1, 0, 1, 0], [2, 0, 1, 1, 0, 2, 0], [2, 0, 2, 1, 3, 2, 0], [2, 0, 2, 0x21, 3, 1, 1] +]; +var LTR = 0, RTL = 1; +var L = 0; +var R = 1; +var EN = 2; +var AN = 3; +var ON = 4; +var B = 5; +var S = 6; +var AL = 7; +var WS = 8; +var CS = 9; +var ES = 10; +var ET = 11; +var NSM = 12; +var LRE = 13; +var RLE = 14; +var PDF = 15; +var LRO = 16; +var RLO = 17; +var BN = 18; +var UnicodeTBL00 = [ + BN, BN, BN, BN, BN, BN, BN, BN, BN, S, B, S, WS, B, BN, BN, + BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, B, B, B, S, + WS, ON, ON, ET, ET, ET, ON, ON, ON, ON, ON, ES, CS, ES, CS, CS, + EN, EN, EN, EN, EN, EN, EN, EN, EN, EN, CS, ON, ON, ON, ON, ON, + ON, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, + L, L, L, L, L, L, L, L, L, L, L, ON, ON, ON, ON, ON, + ON, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, + L, L, L, L, L, L, L, L, L, L, L, ON, ON, ON, ON, BN, + BN, BN, BN, BN, BN, B, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, + BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, + CS, ON, ET, ET, ET, ET, ON, ON, ON, ON, L, ON, ON, BN, ON, ON, + ET, ET, EN, EN, ON, L, ON, ON, ON, EN, L, ON, ON, ON, ON, ON +]; +var UnicodeTBL20 = [ + WS, WS, WS, WS, WS, WS, WS, WS, WS, WS, WS, BN, BN, BN, L, R, + ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, + ON, ON, ON, ON, ON, ON, ON, ON, WS, B, LRE, RLE, PDF, LRO, RLO, CS, + ET, ET, ET, ET, ET, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, + ON, ON, ON, ON, CS, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, + ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, WS +]; +function _computeLevels(chars, levels, len, charTypes) { + var impTab = dir ? impTab_RTL : impTab_LTR, prevState = null, newClass = null, newLevel = null, newState = 0, action = null, cond = null, condPos = -1, i = null, ix = null, classes = []; + if (!charTypes) { + for (i = 0, charTypes = []; i < len; i++) { + charTypes[i] = _getCharacterType(chars[i]); + } + } + hiLevel = dir; + lastArabic = false; + hasUBAT_AL = false; + hasUBAT_B = false; + hasUBAT_S = false; + for (ix = 0; ix < len; ix++) { + prevState = newState; + classes[ix] = newClass = _getCharClass(chars, charTypes, classes, ix); + newState = impTab[prevState][newClass]; + action = newState & 0xF0; + newState &= 0x0F; + levels[ix] = newLevel = impTab[newState][5]; + if (action > 0) { + if (action == 0x10) { + for (i = condPos; i < ix; i++) { + levels[i] = 1; + } + condPos = -1; + } + else { + condPos = -1; + } + } + cond = impTab[newState][6]; + if (cond) { + if (condPos == -1) { + condPos = ix; + } + } + else { + if (condPos > -1) { + for (i = condPos; i < ix; i++) { + levels[i] = newLevel; + } + condPos = -1; + } + } + if (charTypes[ix] == B) { + levels[ix] = 0; + } + hiLevel |= newLevel; + } + if (hasUBAT_S) { + for (i = 0; i < len; i++) { + if (charTypes[i] == S) { + levels[i] = dir; + for (var j = i - 1; j >= 0; j--) { + if (charTypes[j] == WS) { + levels[j] = dir; + } + else { + break; + } + } + } + } + } +} +function _invertLevel(lev, levels, _array) { + if (hiLevel < lev) { + return; + } + if (lev == 1 && dir == RTL && !hasUBAT_B) { + _array.reverse(); + return; + } + var len = _array.length, start = 0, end, lo, hi, tmp; + while (start < len) { + if (levels[start] >= lev) { + end = start + 1; + while (end < len && levels[end] >= lev) { + end++; + } + for (lo = start, hi = end - 1; lo < hi; lo++, hi--) { + tmp = _array[lo]; + _array[lo] = _array[hi]; + _array[hi] = tmp; + } + start = end; + } + start++; + } +} +function _getCharClass(chars, types, classes, ix) { + var cType = types[ix], wType, nType, len, i; + switch (cType) { + case L: + case R: + lastArabic = false; + case ON: + case AN: + return cType; + case EN: + return lastArabic ? AN : EN; + case AL: + lastArabic = true; + hasUBAT_AL = true; + return R; + case WS: + return ON; + case CS: + if (ix < 1 || (ix + 1) >= types.length || + ((wType = classes[ix - 1]) != EN && wType != AN) || + ((nType = types[ix + 1]) != EN && nType != AN)) { + return ON; + } + if (lastArabic) { + nType = AN; + } + return nType == wType ? nType : ON; + case ES: + wType = ix > 0 ? classes[ix - 1] : B; + if (wType == EN && (ix + 1) < types.length && types[ix + 1] == EN) { + return EN; + } + return ON; + case ET: + if (ix > 0 && classes[ix - 1] == EN) { + return EN; + } + if (lastArabic) { + return ON; + } + i = ix + 1; + len = types.length; + while (i < len && types[i] == ET) { + i++; + } + if (i < len && types[i] == EN) { + return EN; + } + return ON; + case NSM: + len = types.length; + i = ix + 1; + while (i < len && types[i] == NSM) { + i++; + } + if (i < len) { + var c = chars[ix], rtlCandidate = (c >= 0x0591 && c <= 0x08FF) || c == 0xFB1E; + wType = types[i]; + if (rtlCandidate && (wType == R || wType == AL)) { + return R; + } + } + if (ix < 1 || (wType = types[ix - 1]) == B) { + return ON; + } + return classes[ix - 1]; + case B: + lastArabic = false; + hasUBAT_B = true; + return dir; + case S: + hasUBAT_S = true; + return ON; + case LRE: + case RLE: + case LRO: + case RLO: + case PDF: + lastArabic = false; + case BN: + return ON; + } +} +function _getCharacterType(ch) { + var uc = ch.charCodeAt(0), hi = uc >> 8; + if (hi == 0) { + return ((uc > 0x00BF) ? L : UnicodeTBL00[uc]); + } + else if (hi == 5) { + return (/[\u0591-\u05f4]/.test(ch) ? R : L); + } + else if (hi == 6) { + if (/[\u0610-\u061a\u064b-\u065f\u06d6-\u06e4\u06e7-\u06ed]/.test(ch)) + return NSM; + else if (/[\u0660-\u0669\u066b-\u066c]/.test(ch)) + return AN; + else if (uc == 0x066A) + return ET; + else if (/[\u06f0-\u06f9]/.test(ch)) + return EN; + else + return AL; + } + else if (hi == 0x20 && uc <= 0x205F) { + return UnicodeTBL20[uc & 0xFF]; + } + else if (hi == 0xFE) { + return (uc >= 0xFE70 ? AL : ON); + } + return ON; +} +function _isArabicDiacritics(ch) { + return (ch >= '\u064b' && ch <= '\u0655'); +} +exports.L = L; +exports.R = R; +exports.EN = EN; +exports.ON_R = 3; +exports.AN = 4; +exports.R_H = 5; +exports.B = 6; +exports.RLE = 7; +exports.DOT = "\xB7"; +exports.doBidiReorder = function (text, textCharTypes, isRtl) { + if (text.length < 2) + return {}; + var chars = text.split(""), logicalFromVisual = new Array(chars.length), bidiLevels = new Array(chars.length), levels = []; + dir = isRtl ? RTL : LTR; + _computeLevels(chars, levels, chars.length, textCharTypes); + for (var i = 0; i < logicalFromVisual.length; logicalFromVisual[i] = i, i++) + ; + _invertLevel(2, levels, logicalFromVisual); + _invertLevel(1, levels, logicalFromVisual); + for (var i = 0; i < logicalFromVisual.length - 1; i++) { //fix levels to reflect character width + if (textCharTypes[i] === AN) { + levels[i] = exports.AN; + } + else if (levels[i] === R && ((textCharTypes[i] > AL && textCharTypes[i] < LRE) + || textCharTypes[i] === ON || textCharTypes[i] === BN)) { + levels[i] = exports.ON_R; + } + else if ((i > 0 && chars[i - 1] === '\u0644') && /\u0622|\u0623|\u0625|\u0627/.test(chars[i])) { + levels[i - 1] = levels[i] = exports.R_H; + i++; + } + } + if (chars[chars.length - 1] === exports.DOT) + levels[chars.length - 1] = exports.B; + if (chars[0] === '\u202B') + levels[0] = exports.RLE; + for (var i = 0; i < logicalFromVisual.length; i++) { + bidiLevels[i] = levels[logicalFromVisual[i]]; + } + return { 'logicalFromVisual': logicalFromVisual, 'bidiLevels': bidiLevels }; +}; +exports.hasBidiCharacters = function (text, textCharTypes) { + var ret = false; + for (var i = 0; i < text.length; i++) { + textCharTypes[i] = _getCharacterType(text.charAt(i)); + if (!ret && (textCharTypes[i] == R || textCharTypes[i] == AL || textCharTypes[i] == AN)) + ret = true; + } + return ret; +}; +exports.getVisualFromLogicalIdx = function (logIdx, rowMap) { + for (var i = 0; i < rowMap.logicalFromVisual.length; i++) { + if (rowMap.logicalFromVisual[i] == logIdx) + return i; + } + return 0; +}; + +}); + +ace.define("ace/bidihandler",["require","exports","module","ace/lib/bidiutil","ace/lib/lang"], function(require, exports, module){"use strict"; +var bidiUtil = require("./lib/bidiutil"); +var lang = require("./lib/lang"); +var bidiRE = /[\u0590-\u05f4\u0600-\u06ff\u0700-\u08ac\u202B]/; +var BidiHandler = /** @class */ (function () { + function BidiHandler(session) { + this.session = session; + this.bidiMap = {}; + this.currentRow = null; + this.bidiUtil = bidiUtil; + this.charWidths = []; + this.EOL = "\xAC"; + this.showInvisibles = true; + this.isRtlDir = false; + this.$isRtl = false; + this.line = ""; + this.wrapIndent = 0; + this.EOF = "\xB6"; + this.RLE = "\u202B"; + this.contentWidth = 0; + this.fontMetrics = null; + this.rtlLineOffset = 0; + this.wrapOffset = 0; + this.isMoveLeftOperation = false; + this.seenBidi = bidiRE.test(session.getValue()); + } + BidiHandler.prototype.isBidiRow = function (screenRow, docRow, splitIndex) { + if (!this.seenBidi) + return false; + if (screenRow !== this.currentRow) { + this.currentRow = screenRow; + this.updateRowLine(docRow, splitIndex); + this.updateBidiMap(); + } + return this.bidiMap.bidiLevels; + }; + BidiHandler.prototype.onChange = function (delta) { + if (!this.seenBidi) { + if (delta.action == "insert" && bidiRE.test(delta.lines.join("\n"))) { + this.seenBidi = true; + this.currentRow = null; + } + } + else { + this.currentRow = null; + } + }; + BidiHandler.prototype.getDocumentRow = function () { + var docRow = 0; + var rowCache = this.session.$screenRowCache; + if (rowCache.length) { + var index = this.session.$getRowCacheIndex(rowCache, this.currentRow); + if (index >= 0) + docRow = this.session.$docRowCache[index]; + } + return docRow; + }; + BidiHandler.prototype.getSplitIndex = function () { + var splitIndex = 0; + var rowCache = this.session.$screenRowCache; + if (rowCache.length) { + var currentIndex, prevIndex = this.session.$getRowCacheIndex(rowCache, this.currentRow); + while (this.currentRow - splitIndex > 0) { + currentIndex = this.session.$getRowCacheIndex(rowCache, this.currentRow - splitIndex - 1); + if (currentIndex !== prevIndex) + break; + prevIndex = currentIndex; + splitIndex++; + } + } + else { + splitIndex = this.currentRow; + } + return splitIndex; + }; + BidiHandler.prototype.updateRowLine = function (docRow, splitIndex) { + if (docRow === undefined) + docRow = this.getDocumentRow(); + var isLastRow = (docRow === this.session.getLength() - 1), endOfLine = isLastRow ? this.EOF : this.EOL; + this.wrapIndent = 0; + this.line = this.session.getLine(docRow); + this.isRtlDir = this.$isRtl || this.line.charAt(0) === this.RLE; + if (this.session.$useWrapMode) { + var splits = this.session.$wrapData[docRow]; + if (splits) { + if (splitIndex === undefined) + splitIndex = this.getSplitIndex(); + if (splitIndex > 0 && splits.length) { + this.wrapIndent = splits.indent; + this.wrapOffset = this.wrapIndent * this.charWidths[bidiUtil.L]; + this.line = (splitIndex < splits.length) ? + this.line.substring(splits[splitIndex - 1], splits[splitIndex]) : + this.line.substring(splits[splits.length - 1]); + } + else { + this.line = this.line.substring(0, splits[splitIndex]); + } + if (splitIndex == splits.length) { + this.line += (this.showInvisibles) ? endOfLine : bidiUtil.DOT; + } + } + } + else { + this.line += this.showInvisibles ? endOfLine : bidiUtil.DOT; + } + var session = this.session, shift = 0, size; + this.line = this.line.replace(/\t|[\u1100-\u2029, \u202F-\uFFE6]/g, function (ch, i) { + if (ch === '\t' || session.isFullWidth(ch.charCodeAt(0))) { + size = (ch === '\t') ? session.getScreenTabSize(i + shift) : 2; + shift += size - 1; + return lang.stringRepeat(bidiUtil.DOT, size); + } + return ch; + }); + if (this.isRtlDir) { + this.fontMetrics.$main.textContent = (this.line.charAt(this.line.length - 1) == bidiUtil.DOT) ? this.line.substr(0, this.line.length - 1) : this.line; + this.rtlLineOffset = this.contentWidth - this.fontMetrics.$main.getBoundingClientRect().width; + } + }; + BidiHandler.prototype.updateBidiMap = function () { + var textCharTypes = []; + if (bidiUtil.hasBidiCharacters(this.line, textCharTypes) || this.isRtlDir) { + this.bidiMap = bidiUtil.doBidiReorder(this.line, textCharTypes, this.isRtlDir); + } + else { + this.bidiMap = {}; + } + }; + BidiHandler.prototype.markAsDirty = function () { + this.currentRow = null; + }; + BidiHandler.prototype.updateCharacterWidths = function (fontMetrics) { + if (this.characterWidth === fontMetrics.$characterSize.width) + return; + this.fontMetrics = fontMetrics; + var characterWidth = this.characterWidth = fontMetrics.$characterSize.width; + var bidiCharWidth = fontMetrics.$measureCharWidth("\u05d4"); + this.charWidths[bidiUtil.L] = this.charWidths[bidiUtil.EN] = this.charWidths[bidiUtil.ON_R] = characterWidth; + this.charWidths[bidiUtil.R] = this.charWidths[bidiUtil.AN] = bidiCharWidth; + this.charWidths[bidiUtil.R_H] = bidiCharWidth * 0.45; + this.charWidths[bidiUtil.B] = this.charWidths[bidiUtil.RLE] = 0; + this.currentRow = null; + }; + BidiHandler.prototype.setShowInvisibles = function (showInvisibles) { + this.showInvisibles = showInvisibles; + this.currentRow = null; + }; + BidiHandler.prototype.setEolChar = function (eolChar) { + this.EOL = eolChar; + }; + BidiHandler.prototype.setContentWidth = function (width) { + this.contentWidth = width; + }; + BidiHandler.prototype.isRtlLine = function (row) { + if (this.$isRtl) + return true; + if (row != undefined) + return (this.session.getLine(row).charAt(0) == this.RLE); + else + return this.isRtlDir; + }; + BidiHandler.prototype.setRtlDirection = function (editor, isRtlDir) { + var cursor = editor.getCursorPosition(); + for (var row = editor.selection.getSelectionAnchor().row; row <= cursor.row; row++) { + if (!isRtlDir && editor.session.getLine(row).charAt(0) === editor.session.$bidiHandler.RLE) + editor.session.doc.removeInLine(row, 0, 1); + else if (isRtlDir && editor.session.getLine(row).charAt(0) !== editor.session.$bidiHandler.RLE) + editor.session.doc.insert({ column: 0, row: row }, editor.session.$bidiHandler.RLE); + } + }; + BidiHandler.prototype.getPosLeft = function (col) { + col -= this.wrapIndent; + var leftBoundary = (this.line.charAt(0) === this.RLE) ? 1 : 0; + var logicalIdx = (col > leftBoundary) ? (this.session.getOverwrite() ? col : col - 1) : leftBoundary; + var visualIdx = bidiUtil.getVisualFromLogicalIdx(logicalIdx, this.bidiMap), levels = this.bidiMap.bidiLevels, left = 0; + if (!this.session.getOverwrite() && col <= leftBoundary && levels[visualIdx] % 2 !== 0) + visualIdx++; + for (var i = 0; i < visualIdx; i++) { + left += this.charWidths[levels[i]]; + } + if (!this.session.getOverwrite() && (col > leftBoundary) && (levels[visualIdx] % 2 === 0)) + left += this.charWidths[levels[visualIdx]]; + if (this.wrapIndent) + left += this.isRtlDir ? (-1 * this.wrapOffset) : this.wrapOffset; + if (this.isRtlDir) + left += this.rtlLineOffset; + return left; + }; + BidiHandler.prototype.getSelections = function (startCol, endCol) { + var map = this.bidiMap, levels = map.bidiLevels, level, selections = [], offset = 0, selColMin = Math.min(startCol, endCol) - this.wrapIndent, selColMax = Math.max(startCol, endCol) - this.wrapIndent, isSelected = false, isSelectedPrev = false, selectionStart = 0; + if (this.wrapIndent) + offset += this.isRtlDir ? (-1 * this.wrapOffset) : this.wrapOffset; + for (var logIdx, visIdx = 0; visIdx < levels.length; visIdx++) { + logIdx = map.logicalFromVisual[visIdx]; + level = levels[visIdx]; + isSelected = (logIdx >= selColMin) && (logIdx < selColMax); + if (isSelected && !isSelectedPrev) { + selectionStart = offset; + } + else if (!isSelected && isSelectedPrev) { + selections.push({ left: selectionStart, width: offset - selectionStart }); + } + offset += this.charWidths[level]; + isSelectedPrev = isSelected; + } + if (isSelected && (visIdx === levels.length)) { + selections.push({ left: selectionStart, width: offset - selectionStart }); + } + if (this.isRtlDir) { + for (var i = 0; i < selections.length; i++) { + selections[i].left += this.rtlLineOffset; + } + } + return selections; + }; + BidiHandler.prototype.offsetToCol = function (posX) { + if (this.isRtlDir) + posX -= this.rtlLineOffset; + var logicalIdx = 0, posX = Math.max(posX, 0), offset = 0, visualIdx = 0, levels = this.bidiMap.bidiLevels, charWidth = this.charWidths[levels[visualIdx]]; + if (this.wrapIndent) + posX -= this.isRtlDir ? (-1 * this.wrapOffset) : this.wrapOffset; + while (posX > offset + charWidth / 2) { + offset += charWidth; + if (visualIdx === levels.length - 1) { + charWidth = 0; + break; + } + charWidth = this.charWidths[levels[++visualIdx]]; + } + if (visualIdx > 0 && (levels[visualIdx - 1] % 2 !== 0) && (levels[visualIdx] % 2 === 0)) { + if (posX < offset) + visualIdx--; + logicalIdx = this.bidiMap.logicalFromVisual[visualIdx]; + } + else if (visualIdx > 0 && (levels[visualIdx - 1] % 2 === 0) && (levels[visualIdx] % 2 !== 0)) { + logicalIdx = 1 + ((posX > offset) ? this.bidiMap.logicalFromVisual[visualIdx] + : this.bidiMap.logicalFromVisual[visualIdx - 1]); + } + else if ((this.isRtlDir && visualIdx === levels.length - 1 && charWidth === 0 && (levels[visualIdx - 1] % 2 === 0)) + || (!this.isRtlDir && visualIdx === 0 && (levels[visualIdx] % 2 !== 0))) { + logicalIdx = 1 + this.bidiMap.logicalFromVisual[visualIdx]; + } + else { + if (visualIdx > 0 && (levels[visualIdx - 1] % 2 !== 0) && charWidth !== 0) + visualIdx--; + logicalIdx = this.bidiMap.logicalFromVisual[visualIdx]; + } + if (logicalIdx === 0 && this.isRtlDir) + logicalIdx++; + return (logicalIdx + this.wrapIndent); + }; + return BidiHandler; +}()); +exports.BidiHandler = BidiHandler; + +}); + +ace.define("ace/selection",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/lib/event_emitter","ace/range"], function(require, exports, module){"use strict"; +var oop = require("./lib/oop"); +var lang = require("./lib/lang"); +var EventEmitter = require("./lib/event_emitter").EventEmitter; +var Range = require("./range").Range; +var Selection = /** @class */ (function () { + function Selection(session) { + this.session = session; + this.doc = session.getDocument(); + this.clearSelection(); + this.cursor = this.lead = this.doc.createAnchor(0, 0); + this.anchor = this.doc.createAnchor(0, 0); + this.$silent = false; + var self = this; + this.cursor.on("change", function (e) { + self.$cursorChanged = true; + if (!self.$silent) + self._emit("changeCursor"); + if (!self.$isEmpty && !self.$silent) + self._emit("changeSelection"); + if (!self.$keepDesiredColumnOnChange && e.old.column != e.value.column) + self.$desiredColumn = null; + }); + this.anchor.on("change", function () { + self.$anchorChanged = true; + if (!self.$isEmpty && !self.$silent) + self._emit("changeSelection"); + }); + } + Selection.prototype.isEmpty = function () { + return this.$isEmpty || (this.anchor.row == this.lead.row && + this.anchor.column == this.lead.column); + }; + Selection.prototype.isMultiLine = function () { + return !this.$isEmpty && this.anchor.row != this.cursor.row; + }; + Selection.prototype.getCursor = function () { + return this.lead.getPosition(); + }; + Selection.prototype.setAnchor = function (row, column) { + this.$isEmpty = false; + this.anchor.setPosition(row, column); + }; + Selection.prototype.getAnchor = function () { + if (this.$isEmpty) + return this.getSelectionLead(); + return this.anchor.getPosition(); + }; + Selection.prototype.getSelectionLead = function () { + return this.lead.getPosition(); + }; + Selection.prototype.isBackwards = function () { + var anchor = this.anchor; + var lead = this.lead; + return (anchor.row > lead.row || (anchor.row == lead.row && anchor.column > lead.column)); + }; + Selection.prototype.getRange = function () { + var anchor = this.anchor; + var lead = this.lead; + if (this.$isEmpty) + return Range.fromPoints(lead, lead); + return this.isBackwards() + ? Range.fromPoints(lead, anchor) + : Range.fromPoints(anchor, lead); + }; + Selection.prototype.clearSelection = function () { + if (!this.$isEmpty) { + this.$isEmpty = true; + this._emit("changeSelection"); + } + }; + Selection.prototype.selectAll = function () { + this.$setSelection(0, 0, Number.MAX_VALUE, Number.MAX_VALUE); + }; + Selection.prototype.setRange = function (range, reverse) { + var start = reverse ? range.end : range.start; + var end = reverse ? range.start : range.end; + this.$setSelection(start.row, start.column, end.row, end.column); + }; + Selection.prototype.$setSelection = function (anchorRow, anchorColumn, cursorRow, cursorColumn) { + if (this.$silent) + return; + var wasEmpty = this.$isEmpty; + var wasMultiselect = this.inMultiSelectMode; + this.$silent = true; + this.$cursorChanged = this.$anchorChanged = false; + this.anchor.setPosition(anchorRow, anchorColumn); + this.cursor.setPosition(cursorRow, cursorColumn); + this.$isEmpty = !Range.comparePoints(this.anchor, this.cursor); + this.$silent = false; + if (this.$cursorChanged) + this._emit("changeCursor"); + if (this.$cursorChanged || this.$anchorChanged || wasEmpty != this.$isEmpty || wasMultiselect) + this._emit("changeSelection"); + }; + Selection.prototype.$moveSelection = function (mover) { + var lead = this.lead; + if (this.$isEmpty) + this.setSelectionAnchor(lead.row, lead.column); + mover.call(this); + }; + Selection.prototype.selectTo = function (row, column) { + this.$moveSelection(function () { + this.moveCursorTo(row, column); + }); + }; + Selection.prototype.selectToPosition = function (pos) { + this.$moveSelection(function () { + this.moveCursorToPosition(pos); + }); + }; + Selection.prototype.moveTo = function (row, column) { + this.clearSelection(); + this.moveCursorTo(row, column); + }; + Selection.prototype.moveToPosition = function (pos) { + this.clearSelection(); + this.moveCursorToPosition(pos); + }; + Selection.prototype.selectUp = function () { + this.$moveSelection(this.moveCursorUp); + }; + Selection.prototype.selectDown = function () { + this.$moveSelection(this.moveCursorDown); + }; + Selection.prototype.selectRight = function () { + this.$moveSelection(this.moveCursorRight); + }; + Selection.prototype.selectLeft = function () { + this.$moveSelection(this.moveCursorLeft); + }; + Selection.prototype.selectLineStart = function () { + this.$moveSelection(this.moveCursorLineStart); + }; + Selection.prototype.selectLineEnd = function () { + this.$moveSelection(this.moveCursorLineEnd); + }; + Selection.prototype.selectFileEnd = function () { + this.$moveSelection(this.moveCursorFileEnd); + }; + Selection.prototype.selectFileStart = function () { + this.$moveSelection(this.moveCursorFileStart); + }; + Selection.prototype.selectWordRight = function () { + this.$moveSelection(this.moveCursorWordRight); + }; + Selection.prototype.selectWordLeft = function () { + this.$moveSelection(this.moveCursorWordLeft); + }; + Selection.prototype.getWordRange = function (row, column) { + if (typeof column == "undefined") { + var cursor = row || this.lead; + row = cursor.row; + column = cursor.column; + } + return this.session.getWordRange(row, column); + }; + Selection.prototype.selectWord = function () { + this.setSelectionRange(this.getWordRange()); + }; + Selection.prototype.selectAWord = function () { + var cursor = this.getCursor(); + var range = this.session.getAWordRange(cursor.row, cursor.column); + this.setSelectionRange(range); + }; + Selection.prototype.getLineRange = function (row, excludeLastChar) { + var rowStart = typeof row == "number" ? row : this.lead.row; + var rowEnd; + var foldLine = this.session.getFoldLine(rowStart); + if (foldLine) { + rowStart = foldLine.start.row; + rowEnd = foldLine.end.row; + } + else { + rowEnd = rowStart; + } + if (excludeLastChar === true) + return new Range(rowStart, 0, rowEnd, this.session.getLine(rowEnd).length); + else + return new Range(rowStart, 0, rowEnd + 1, 0); + }; + Selection.prototype.selectLine = function () { + this.setSelectionRange(this.getLineRange()); + }; + Selection.prototype.moveCursorUp = function () { + this.moveCursorBy(-1, 0); + }; + Selection.prototype.moveCursorDown = function () { + this.moveCursorBy(1, 0); + }; + Selection.prototype.wouldMoveIntoSoftTab = function (cursor, tabSize, direction) { + var start = cursor.column; + var end = cursor.column + tabSize; + if (direction < 0) { + start = cursor.column - tabSize; + end = cursor.column; + } + return this.session.isTabStop(cursor) && this.doc.getLine(cursor.row).slice(start, end).split(" ").length - 1 == tabSize; + }; + Selection.prototype.moveCursorLeft = function () { + var cursor = this.lead.getPosition(), fold; + if (fold = this.session.getFoldAt(cursor.row, cursor.column, -1)) { + this.moveCursorTo(fold.start.row, fold.start.column); + } + else if (cursor.column === 0) { + if (cursor.row > 0) { + this.moveCursorTo(cursor.row - 1, this.doc.getLine(cursor.row - 1).length); + } + } + else { + var tabSize = this.session.getTabSize(); + if (this.wouldMoveIntoSoftTab(cursor, tabSize, -1) && !this.session.getNavigateWithinSoftTabs()) { + this.moveCursorBy(0, -tabSize); + } + else { + this.moveCursorBy(0, -1); + } + } + }; + Selection.prototype.moveCursorRight = function () { + var cursor = this.lead.getPosition(), fold; + if (fold = this.session.getFoldAt(cursor.row, cursor.column, 1)) { + this.moveCursorTo(fold.end.row, fold.end.column); + } + else if (this.lead.column == this.doc.getLine(this.lead.row).length) { + if (this.lead.row < this.doc.getLength() - 1) { + this.moveCursorTo(this.lead.row + 1, 0); + } + } + else { + var tabSize = this.session.getTabSize(); + var cursor = this.lead; + if (this.wouldMoveIntoSoftTab(cursor, tabSize, 1) && !this.session.getNavigateWithinSoftTabs()) { + this.moveCursorBy(0, tabSize); + } + else { + this.moveCursorBy(0, 1); + } + } + }; + Selection.prototype.moveCursorLineStart = function () { + var row = this.lead.row; + var column = this.lead.column; + var screenRow = this.session.documentToScreenRow(row, column); + var firstColumnPosition = this.session.screenToDocumentPosition(screenRow, 0); + var beforeCursor = this.session.getDisplayLine(row, null, firstColumnPosition.row, firstColumnPosition.column); + var leadingSpace = beforeCursor.match(/^\s*/); + if (leadingSpace[0].length != column && !this.session.$useEmacsStyleLineStart) + firstColumnPosition.column += leadingSpace[0].length; + this.moveCursorToPosition(firstColumnPosition); + }; + Selection.prototype.moveCursorLineEnd = function () { + var lead = this.lead; + var lineEnd = this.session.getDocumentLastRowColumnPosition(lead.row, lead.column); + if (this.lead.column == lineEnd.column) { + var line = this.session.getLine(lineEnd.row); + if (lineEnd.column == line.length) { + var textEnd = line.search(/\s+$/); + if (textEnd > 0) + lineEnd.column = textEnd; + } + } + this.moveCursorTo(lineEnd.row, lineEnd.column); + }; + Selection.prototype.moveCursorFileEnd = function () { + var row = this.doc.getLength() - 1; + var column = this.doc.getLine(row).length; + this.moveCursorTo(row, column); + }; + Selection.prototype.moveCursorFileStart = function () { + this.moveCursorTo(0, 0); + }; + Selection.prototype.moveCursorLongWordRight = function () { + var row = this.lead.row; + var column = this.lead.column; + var line = this.doc.getLine(row); + var rightOfCursor = line.substring(column); + this.session.nonTokenRe.lastIndex = 0; + this.session.tokenRe.lastIndex = 0; + var fold = this.session.getFoldAt(row, column, 1); + if (fold) { + this.moveCursorTo(fold.end.row, fold.end.column); + return; + } + if (this.session.nonTokenRe.exec(rightOfCursor)) { + column += this.session.nonTokenRe.lastIndex; + this.session.nonTokenRe.lastIndex = 0; + rightOfCursor = line.substring(column); + } + if (column >= line.length) { + this.moveCursorTo(row, line.length); + this.moveCursorRight(); + if (row < this.doc.getLength() - 1) + this.moveCursorWordRight(); + return; + } + if (this.session.tokenRe.exec(rightOfCursor)) { + column += this.session.tokenRe.lastIndex; + this.session.tokenRe.lastIndex = 0; + } + this.moveCursorTo(row, column); + }; + Selection.prototype.moveCursorLongWordLeft = function () { + var row = this.lead.row; + var column = this.lead.column; + var fold; + if (fold = this.session.getFoldAt(row, column, -1)) { + this.moveCursorTo(fold.start.row, fold.start.column); + return; + } + var str = this.session.getFoldStringAt(row, column, -1); + if (str == null) { + str = this.doc.getLine(row).substring(0, column); + } + var leftOfCursor = lang.stringReverse(str); + this.session.nonTokenRe.lastIndex = 0; + this.session.tokenRe.lastIndex = 0; + if (this.session.nonTokenRe.exec(leftOfCursor)) { + column -= this.session.nonTokenRe.lastIndex; + leftOfCursor = leftOfCursor.slice(this.session.nonTokenRe.lastIndex); + this.session.nonTokenRe.lastIndex = 0; + } + if (column <= 0) { + this.moveCursorTo(row, 0); + this.moveCursorLeft(); + if (row > 0) + this.moveCursorWordLeft(); + return; + } + if (this.session.tokenRe.exec(leftOfCursor)) { + column -= this.session.tokenRe.lastIndex; + this.session.tokenRe.lastIndex = 0; + } + this.moveCursorTo(row, column); + }; + Selection.prototype.$shortWordEndIndex = function (rightOfCursor) { + var index = 0, ch; + var whitespaceRe = /\s/; + var tokenRe = this.session.tokenRe; + tokenRe.lastIndex = 0; + if (this.session.tokenRe.exec(rightOfCursor)) { + index = this.session.tokenRe.lastIndex; + } + else { + while ((ch = rightOfCursor[index]) && whitespaceRe.test(ch)) + index++; + if (index < 1) { + tokenRe.lastIndex = 0; + while ((ch = rightOfCursor[index]) && !tokenRe.test(ch)) { + tokenRe.lastIndex = 0; + index++; + if (whitespaceRe.test(ch)) { + if (index > 2) { + index--; + break; + } + else { + while ((ch = rightOfCursor[index]) && whitespaceRe.test(ch)) + index++; + if (index > 2) + break; + } + } + } + } + } + tokenRe.lastIndex = 0; + return index; + }; + Selection.prototype.moveCursorShortWordRight = function () { + var row = this.lead.row; + var column = this.lead.column; + var line = this.doc.getLine(row); + var rightOfCursor = line.substring(column); + var fold = this.session.getFoldAt(row, column, 1); + if (fold) + return this.moveCursorTo(fold.end.row, fold.end.column); + if (column == line.length) { + var l = this.doc.getLength(); + do { + row++; + rightOfCursor = this.doc.getLine(row); + } while (row < l && /^\s*$/.test(rightOfCursor)); + if (!/^\s+/.test(rightOfCursor)) + rightOfCursor = ""; + column = 0; + } + var index = this.$shortWordEndIndex(rightOfCursor); + this.moveCursorTo(row, column + index); + }; + Selection.prototype.moveCursorShortWordLeft = function () { + var row = this.lead.row; + var column = this.lead.column; + var fold; + if (fold = this.session.getFoldAt(row, column, -1)) + return this.moveCursorTo(fold.start.row, fold.start.column); + var line = this.session.getLine(row).substring(0, column); + if (column === 0) { + do { + row--; + line = this.doc.getLine(row); + } while (row > 0 && /^\s*$/.test(line)); + column = line.length; + if (!/\s+$/.test(line)) + line = ""; + } + var leftOfCursor = lang.stringReverse(line); + var index = this.$shortWordEndIndex(leftOfCursor); + return this.moveCursorTo(row, column - index); + }; + Selection.prototype.moveCursorWordRight = function () { + if (this.session.$selectLongWords) + this.moveCursorLongWordRight(); + else + this.moveCursorShortWordRight(); + }; + Selection.prototype.moveCursorWordLeft = function () { + if (this.session.$selectLongWords) + this.moveCursorLongWordLeft(); + else + this.moveCursorShortWordLeft(); + }; + Selection.prototype.moveCursorBy = function (rows, chars) { + var screenPos = this.session.documentToScreenPosition(this.lead.row, this.lead.column); + var offsetX; + if (chars === 0) { + if (rows !== 0) { + if (this.session.$bidiHandler.isBidiRow(screenPos.row, this.lead.row)) { + offsetX = this.session.$bidiHandler.getPosLeft(screenPos.column); + screenPos.column = Math.round(offsetX / this.session.$bidiHandler.charWidths[0]); + } + else { + offsetX = screenPos.column * this.session.$bidiHandler.charWidths[0]; + } + } + if (this.$desiredColumn) + screenPos.column = this.$desiredColumn; + else + this.$desiredColumn = screenPos.column; + } + if (rows != 0 && this.session.lineWidgets && this.session.lineWidgets[this.lead.row]) { + var widget = this.session.lineWidgets[this.lead.row]; + if (rows < 0) + rows -= widget.rowsAbove || 0; + else if (rows > 0) + rows += widget.rowCount - (widget.rowsAbove || 0); + } + var docPos = this.session.screenToDocumentPosition(screenPos.row + rows, screenPos.column, offsetX); + if (rows !== 0 && chars === 0 && docPos.row === this.lead.row && docPos.column === this.lead.column) { + } + this.moveCursorTo(docPos.row, docPos.column + chars, chars === 0); + }; + Selection.prototype.moveCursorToPosition = function (position) { + this.moveCursorTo(position.row, position.column); + }; + Selection.prototype.moveCursorTo = function (row, column, keepDesiredColumn) { + var fold = this.session.getFoldAt(row, column, 1); + if (fold) { + row = fold.start.row; + column = fold.start.column; + } + this.$keepDesiredColumnOnChange = true; + var line = this.session.getLine(row); + if (/[\uDC00-\uDFFF]/.test(line.charAt(column)) && line.charAt(column - 1)) { + if (this.lead.row == row && this.lead.column == column + 1) + column = column - 1; + else + column = column + 1; + } + this.lead.setPosition(row, column); + this.$keepDesiredColumnOnChange = false; + if (!keepDesiredColumn) + this.$desiredColumn = null; + }; + Selection.prototype.moveCursorToScreen = function (row, column, keepDesiredColumn) { + var pos = this.session.screenToDocumentPosition(row, column); + this.moveCursorTo(pos.row, pos.column, keepDesiredColumn); + }; + Selection.prototype.detach = function () { + this.lead.detach(); + this.anchor.detach(); + }; + Selection.prototype.fromOrientedRange = function (range) { + this.setSelectionRange(range, range.cursor == range.start); + this.$desiredColumn = range.desiredColumn || this.$desiredColumn; + }; + Selection.prototype.toOrientedRange = function (range) { + var r = this.getRange(); + if (range) { + range.start.column = r.start.column; + range.start.row = r.start.row; + range.end.column = r.end.column; + range.end.row = r.end.row; + } + else { + range = r; + } + range.cursor = this.isBackwards() ? range.start : range.end; + range.desiredColumn = this.$desiredColumn; + return range; + }; + Selection.prototype.getRangeOfMovements = function (func) { + var start = this.getCursor(); + try { + func(this); + var end = this.getCursor(); + return Range.fromPoints(start, end); + } + catch (e) { + return Range.fromPoints(start, start); + } + finally { + this.moveCursorToPosition(start); + } + }; + Selection.prototype.toJSON = function () { + if (this.rangeCount) { + var data = this.ranges.map(function (r) { + var r1 = r.clone(); + r1.isBackwards = r.cursor == r.start; + return r1; + }); + } + else { + var data = this.getRange(); + data.isBackwards = this.isBackwards(); + } + return data; + }; + Selection.prototype.fromJSON = function (data) { + if (data.start == undefined) { + if (this.rangeList && data.length > 1) { + this.toSingleRange(data[0]); + for (var i = data.length; i--;) { + var r = Range.fromPoints(data[i].start, data[i].end); + if (data[i].isBackwards) + r.cursor = r.start; + this.addRange(r, true); + } + return; + } + else { + data = data[0]; + } + } + if (this.rangeList) + this.toSingleRange(data); + this.setSelectionRange(data, data.isBackwards); + }; + Selection.prototype.isEqual = function (data) { + if ((data.length || this.rangeCount) && data.length != this.rangeCount) + return false; + if (!data.length || !this.ranges) + return this.getRange().isEqual(data); + for (var i = this.ranges.length; i--;) { + if (!this.ranges[i].isEqual(data[i])) + return false; + } + return true; + }; + return Selection; +}()); +Selection.prototype.setSelectionAnchor = Selection.prototype.setAnchor; +Selection.prototype.getSelectionAnchor = Selection.prototype.getAnchor; +Selection.prototype.setSelectionRange = Selection.prototype.setRange; +oop.implement(Selection.prototype, EventEmitter); +exports.Selection = Selection; + +}); + +ace.define("ace/tokenizer",["require","exports","module","ace/lib/report_error"], function(require, exports, module){"use strict"; +var reportError = require("./lib/report_error").reportError; +var MAX_TOKEN_COUNT = 2000; +var Tokenizer = /** @class */ (function () { + function Tokenizer(rules) { + this.states = rules; + this.regExps = {}; + this.matchMappings = {}; + for (var key in this.states) { + var state = this.states[key]; + var ruleRegExps = []; + var matchTotal = 0; + var mapping = this.matchMappings[key] = { defaultToken: "text" }; + var flag = "g"; + var splitterRurles = []; + for (var i = 0; i < state.length; i++) { + var rule = state[i]; + if (rule.defaultToken) + mapping.defaultToken = rule.defaultToken; + if (rule.caseInsensitive && flag.indexOf("i") === -1) + flag += "i"; + if (rule.unicode && flag.indexOf("u") === -1) + flag += "u"; + if (rule.regex == null) + continue; + if (rule.regex instanceof RegExp) + rule.regex = rule.regex.toString().slice(1, -1); + var adjustedregex = rule.regex; + var matchcount = new RegExp("(?:(" + adjustedregex + ")|(.))").exec("a").length - 2; + if (Array.isArray(rule.token)) { + if (rule.token.length == 1 || matchcount == 1) { + rule.token = rule.token[0]; + } + else if (matchcount - 1 != rule.token.length) { + this.reportError("number of classes and regexp groups doesn't match", { + rule: rule, + groupCount: matchcount - 1 + }); + rule.token = rule.token[0]; + } + else { + rule.tokenArray = rule.token; + rule.token = null; + rule.onMatch = this.$arrayTokens; + } + } + else if (typeof rule.token == "function" && !rule.onMatch) { + if (matchcount > 1) + rule.onMatch = this.$applyToken; + else + rule.onMatch = rule.token; + } + if (matchcount > 1) { + if (/\\\d/.test(rule.regex)) { + adjustedregex = rule.regex.replace(/\\([0-9]+)/g, function (match, digit) { + return "\\" + (parseInt(digit, 10) + matchTotal + 1); + }); + } + else { + matchcount = 1; + adjustedregex = this.removeCapturingGroups(rule.regex); + } + if (!rule.splitRegex && typeof rule.token != "string") + splitterRurles.push(rule); // flag will be known only at the very end + } + mapping[matchTotal] = i; + matchTotal += matchcount; + ruleRegExps.push(adjustedregex); + if (!rule.onMatch) + rule.onMatch = null; + } + if (!ruleRegExps.length) { + mapping[0] = 0; + ruleRegExps.push("$"); + } + splitterRurles.forEach(function (rule) { + rule.splitRegex = this.createSplitterRegexp(rule.regex, flag); + }, this); + this.regExps[key] = new RegExp("(" + ruleRegExps.join(")|(") + ")|($)", flag); + } + } + Tokenizer.prototype.$setMaxTokenCount = function (m) { + MAX_TOKEN_COUNT = m | 0; + }; + Tokenizer.prototype.$applyToken = function (str) { + var values = this.splitRegex.exec(str).slice(1); + var types = this.token.apply(this, values); + if (typeof types === "string") + return [{ type: types, value: str }]; + var tokens = []; + for (var i = 0, l = types.length; i < l; i++) { + if (values[i]) + tokens[tokens.length] = { + type: types[i], + value: values[i] + }; + } + return tokens; + }; + Tokenizer.prototype.$arrayTokens = function (str) { + if (!str) + return []; + var values = this.splitRegex.exec(str); + if (!values) + return "text"; + var tokens = []; + var types = this.tokenArray; + for (var i = 0, l = types.length; i < l; i++) { + if (values[i + 1]) + tokens[tokens.length] = { + type: types[i], + value: values[i + 1] + }; + } + return tokens; + }; + Tokenizer.prototype.removeCapturingGroups = function (src) { + var r = src.replace(/\\.|\[(?:\\.|[^\\\]])*|\(\?[:=!<]|(\()/g, function (x, y) { return y ? "(?:" : x; }); + return r; + }; + Tokenizer.prototype.createSplitterRegexp = function (src, flag) { + if (src.indexOf("(?=") != -1) { + var stack = 0; + var inChClass = false; + var lastCapture = {}; + src.replace(/(\\.)|(\((?:\?[=!])?)|(\))|([\[\]])/g, function (m, esc, parenOpen, parenClose, square, index) { + if (inChClass) { + inChClass = square != "]"; + } + else if (square) { + inChClass = true; + } + else if (parenClose) { + if (stack == lastCapture.stack) { + lastCapture.end = index + 1; + lastCapture.stack = -1; + } + stack--; + } + else if (parenOpen) { + stack++; + if (parenOpen.length != 1) { + lastCapture.stack = stack; + lastCapture.start = index; + } + } + return m; + }); + if (lastCapture.end != null && /^\)*$/.test(src.substr(lastCapture.end))) + src = src.substring(0, lastCapture.start) + src.substr(lastCapture.end); + } + if (src.charAt(0) != "^") + src = "^" + src; + if (src.charAt(src.length - 1) != "$") + src += "$"; + return new RegExp(src, (flag || "").replace("g", "")); + }; + Tokenizer.prototype.getLineTokens = function (line, startState) { + if (startState && typeof startState != "string") { + var stack = startState.slice(0); + startState = stack[0]; + if (startState === "#tmp") { + stack.shift(); + startState = stack.shift(); + } + } + else + var stack = []; + var currentState = startState || "start"; + var state = this.states[currentState]; + if (!state) { + currentState = "start"; + state = this.states[currentState]; + } + var mapping = this.matchMappings[currentState]; + var re = this.regExps[currentState]; + re.lastIndex = 0; + var match, tokens = []; + var lastIndex = 0; + var matchAttempts = 0; + var token = { type: null, value: "" }; + while (match = re.exec(line)) { + var type = mapping.defaultToken; + var rule = null; + var value = match[0]; + var index = re.lastIndex; + if (index - value.length > lastIndex) { + var skipped = line.substring(lastIndex, index - value.length); + if (token.type == type) { + token.value += skipped; + } + else { + if (token.type) + tokens.push(token); + token = { type: type, value: skipped }; + } + } + for (var i = 0; i < match.length - 2; i++) { + if (match[i + 1] === undefined) + continue; + rule = state[mapping[i]]; + if (rule.onMatch) + type = rule.onMatch(value, currentState, stack, line); + else + type = rule.token; + if (rule.next) { + if (typeof rule.next == "string") { + currentState = rule.next; + } + else { + currentState = rule.next(currentState, stack); + } + state = this.states[currentState]; + if (!state) { + this.reportError("state doesn't exist", currentState); + currentState = "start"; + state = this.states[currentState]; + } + mapping = this.matchMappings[currentState]; + lastIndex = index; + re = this.regExps[currentState]; + re.lastIndex = index; + } + if (rule.consumeLineEnd) + lastIndex = index; + break; + } + if (value) { + if (typeof type === "string") { + if ((!rule || rule.merge !== false) && token.type === type) { + token.value += value; + } + else { + if (token.type) + tokens.push(token); + token = { type: type, value: value }; + } + } + else if (type) { + if (token.type) + tokens.push(token); + token = { type: null, value: "" }; + for (var i = 0; i < type.length; i++) + tokens.push(type[i]); + } + } + if (lastIndex == line.length) + break; + lastIndex = index; + if (matchAttempts++ > MAX_TOKEN_COUNT) { + if (matchAttempts > 2 * line.length) { + this.reportError("infinite loop with in ace tokenizer", { + startState: startState, + line: line + }); + } + while (lastIndex < line.length) { + if (token.type) + tokens.push(token); + token = { + value: line.substring(lastIndex, lastIndex += 500), + type: "overflow" + }; + } + currentState = "start"; + stack = []; + break; + } + } + if (token.type) + tokens.push(token); + if (stack.length > 1) { + if (stack[0] !== currentState) + stack.unshift("#tmp", currentState); + } + return { + tokens: tokens, + state: stack.length ? stack : currentState + }; + }; + return Tokenizer; +}()); +Tokenizer.prototype.reportError = reportError; +exports.Tokenizer = Tokenizer; + +}); + +ace.define("ace/mode/text_highlight_rules",["require","exports","module","ace/lib/deep_copy"], function(require, exports, module){"use strict"; +var deepCopy = require("../lib/deep_copy").deepCopy; +var TextHighlightRules = function () { + this.$rules = { + "start": [{ + token: "empty_line", + regex: '^$' + }, { + defaultToken: "text" + }] + }; +}; +(function () { + this.addRules = function (rules, prefix) { + if (!prefix) { + for (var key in rules) + this.$rules[key] = rules[key]; + return; + } + for (var key in rules) { + var state = rules[key]; + for (var i = 0; i < state.length; i++) { + var rule = state[i]; + if (rule.next || rule.onMatch) { + if (typeof rule.next == "string") { + if (rule.next.indexOf(prefix) !== 0) + rule.next = prefix + rule.next; + } + if (rule.nextState && rule.nextState.indexOf(prefix) !== 0) + rule.nextState = prefix + rule.nextState; + } + } + this.$rules[prefix + key] = state; + } + }; + this.getRules = function () { + return this.$rules; + }; + this.embedRules = function (HighlightRules, prefix, escapeRules, states, append) { + var embedRules = typeof HighlightRules == "function" + ? new HighlightRules().getRules() + : HighlightRules; + if (states) { + for (var i = 0; i < states.length; i++) + states[i] = prefix + states[i]; + } + else { + states = []; + for (var key in embedRules) + states.push(prefix + key); + } + this.addRules(embedRules, prefix); + if (escapeRules) { + var addRules = Array.prototype[append ? "push" : "unshift"]; + for (var i = 0; i < states.length; i++) + addRules.apply(this.$rules[states[i]], deepCopy(escapeRules)); + } + if (!this.$embeds) + this.$embeds = []; + this.$embeds.push(prefix); + }; + this.getEmbeds = function () { + return this.$embeds; + }; + var pushState = function (currentState, stack) { + if (currentState != "start" || stack.length) + stack.unshift(this.nextState, currentState); + return this.nextState; + }; + var popState = function (currentState, stack) { + stack.shift(); + return stack.shift() || "start"; + }; + this.normalizeRules = function () { + var id = 0; + var rules = this.$rules; + function processState(key) { + var state = rules[key]; + state.processed = true; + for (var i = 0; i < state.length; i++) { + var rule = state[i]; + var toInsert = null; + if (Array.isArray(rule)) { + toInsert = rule; + rule = {}; + } + if (!rule.regex && rule.start) { + rule.regex = rule.start; + if (!rule.next) + rule.next = []; + rule.next.push({ + defaultToken: rule.token + }, { + token: rule.token + ".end", + regex: rule.end || rule.start, + next: "pop" + }); + rule.token = rule.token + ".start"; + rule.push = true; + } + var next = rule.next || rule.push; + if (next && Array.isArray(next)) { + var stateName = rule.stateName; + if (!stateName) { + stateName = rule.token; + if (typeof stateName != "string") + stateName = stateName[0] || ""; + if (rules[stateName]) + stateName += id++; + } + rules[stateName] = next; + rule.next = stateName; + processState(stateName); + } + else if (next == "pop") { + rule.next = popState; + } + if (rule.push) { + rule.nextState = rule.next || rule.push; + rule.next = pushState; + delete rule.push; + } + if (rule.rules) { + for (var r in rule.rules) { + if (rules[r]) { + if (rules[r].push) + rules[r].push.apply(rules[r], rule.rules[r]); + } + else { + rules[r] = rule.rules[r]; + } + } + } + var includeName = typeof rule == "string" ? rule : rule.include; + if (includeName) { + if (includeName === "$self") + includeName = "start"; + if (Array.isArray(includeName)) + toInsert = includeName.map(function (x) { return rules[x]; }); + else + toInsert = rules[includeName]; + } + if (toInsert) { + var args = [i, 1].concat(toInsert); + if (rule.noEscape) + args = args.filter(function (x) { return !x.next; }); + state.splice.apply(state, args); + i--; + } + if (rule.keywordMap) { + rule.token = this.createKeywordMapper(rule.keywordMap, rule.defaultToken || "text", rule.caseInsensitive); + delete rule.defaultToken; + } + } + } + Object.keys(rules).forEach(processState, this); + }; + this.createKeywordMapper = function (map, defaultToken, ignoreCase, splitChar) { + var keywords = Object.create(null); + this.$keywordList = []; + Object.keys(map).forEach(function (className) { + var a = map[className]; + var list = a.split(splitChar || "|"); + for (var i = list.length; i--;) { + var word = list[i]; + this.$keywordList.push(word); + if (ignoreCase) + word = word.toLowerCase(); + keywords[word] = className; + } + }, this); + map = null; + return ignoreCase + ? function (value) { return keywords[value.toLowerCase()] || defaultToken; } + : function (value) { return keywords[value] || defaultToken; }; + }; + this.getKeywords = function () { + return this.$keywords; + }; +}).call(TextHighlightRules.prototype); +exports.TextHighlightRules = TextHighlightRules; + +}); + +ace.define("ace/mode/behaviour",["require","exports","module"], function(require, exports, module){"use strict"; +var Behaviour = function () { + this.$behaviours = {}; +}; +(function () { + this.add = function (name, action, callback) { + switch (undefined) { + case this.$behaviours: + this.$behaviours = {}; + case this.$behaviours[name]: + this.$behaviours[name] = {}; + } + this.$behaviours[name][action] = callback; + }; + this.addBehaviours = function (behaviours) { + for (var key in behaviours) { + for (var action in behaviours[key]) { + this.add(key, action, behaviours[key][action]); + } + } + }; + this.remove = function (name) { + if (this.$behaviours && this.$behaviours[name]) { + delete this.$behaviours[name]; + } + }; + this.inherit = function (mode, filter) { + if (typeof mode === "function") { + var behaviours = new mode().getBehaviours(filter); + } + else { + var behaviours = mode.getBehaviours(filter); + } + this.addBehaviours(behaviours); + }; + this.getBehaviours = function (filter) { + if (!filter) { + return this.$behaviours; + } + else { + var ret = {}; + for (var i = 0; i < filter.length; i++) { + if (this.$behaviours[filter[i]]) { + ret[filter[i]] = this.$behaviours[filter[i]]; + } + } + return ret; + } + }; +}).call(Behaviour.prototype); +exports.Behaviour = Behaviour; + +}); + +ace.define("ace/token_iterator",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; +var Range = require("./range").Range; +var TokenIterator = /** @class */ (function () { + function TokenIterator(session, initialRow, initialColumn) { + this.$session = session; + this.$row = initialRow; + this.$rowTokens = session.getTokens(initialRow); + var token = session.getTokenAt(initialRow, initialColumn); + this.$tokenIndex = token ? token.index : -1; + } + TokenIterator.prototype.stepBackward = function () { + this.$tokenIndex -= 1; + while (this.$tokenIndex < 0) { + this.$row -= 1; + if (this.$row < 0) { + this.$row = 0; + return null; + } + this.$rowTokens = this.$session.getTokens(this.$row); + this.$tokenIndex = this.$rowTokens.length - 1; + } + return this.$rowTokens[this.$tokenIndex]; + }; + TokenIterator.prototype.stepForward = function () { + this.$tokenIndex += 1; + var rowCount; + while (this.$tokenIndex >= this.$rowTokens.length) { + this.$row += 1; + if (!rowCount) + rowCount = this.$session.getLength(); + if (this.$row >= rowCount) { + this.$row = rowCount - 1; + return null; + } + this.$rowTokens = this.$session.getTokens(this.$row); + this.$tokenIndex = 0; + } + return this.$rowTokens[this.$tokenIndex]; + }; + TokenIterator.prototype.getCurrentToken = function () { + return this.$rowTokens[this.$tokenIndex]; + }; + TokenIterator.prototype.getCurrentTokenRow = function () { + return this.$row; + }; + TokenIterator.prototype.getCurrentTokenColumn = function () { + var rowTokens = this.$rowTokens; + var tokenIndex = this.$tokenIndex; + var column = rowTokens[tokenIndex].start; + if (column !== undefined) + return column; + column = 0; + while (tokenIndex > 0) { + tokenIndex -= 1; + column += rowTokens[tokenIndex].value.length; + } + return column; + }; + TokenIterator.prototype.getCurrentTokenPosition = function () { + return { row: this.$row, column: this.getCurrentTokenColumn() }; + }; + TokenIterator.prototype.getCurrentTokenRange = function () { + var token = this.$rowTokens[this.$tokenIndex]; + var column = this.getCurrentTokenColumn(); + return new Range(this.$row, column, this.$row, column + token.value.length); + }; + return TokenIterator; +}()); +exports.TokenIterator = TokenIterator; + +}); + +ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var Behaviour = require("../behaviour").Behaviour; +var TokenIterator = require("../../token_iterator").TokenIterator; +var lang = require("../../lib/lang"); +var SAFE_INSERT_IN_TOKENS = ["text", "paren.rparen", "rparen", "paren", "punctuation.operator"]; +var SAFE_INSERT_BEFORE_TOKENS = ["text", "paren.rparen", "rparen", "paren", "punctuation.operator", "comment"]; +var context; +var contextCache = {}; +var defaultQuotes = { '"': '"', "'": "'" }; +var initContext = function (editor) { + var id = -1; + if (editor.multiSelect) { + id = editor.selection.index; + if (contextCache.rangeCount != editor.multiSelect.rangeCount) + contextCache = { rangeCount: editor.multiSelect.rangeCount }; + } + if (contextCache[id]) + return context = contextCache[id]; + context = contextCache[id] = { + autoInsertedBrackets: 0, + autoInsertedRow: -1, + autoInsertedLineEnd: "", + maybeInsertedBrackets: 0, + maybeInsertedRow: -1, + maybeInsertedLineStart: "", + maybeInsertedLineEnd: "" + }; +}; +var getWrapped = function (selection, selected, opening, closing) { + var rowDiff = selection.end.row - selection.start.row; + return { + text: opening + selected + closing, + selection: [ + 0, + selection.start.column + 1, + rowDiff, + selection.end.column + (rowDiff ? 0 : 1) + ] + }; +}; +var CstyleBehaviour = function (options) { + options = options || {}; + this.add("braces", "insertion", function (state, action, editor, session, text) { + var cursor = editor.getCursorPosition(); + var line = session.doc.getLine(cursor.row); + if (text == '{') { + initContext(editor); + var selection = editor.getSelectionRange(); + var selected = session.doc.getTextRange(selection); + if (selected !== "" && selected !== "{" && editor.getWrapBehavioursEnabled()) { + return getWrapped(selection, selected, '{', '}'); + } + else if (CstyleBehaviour.isSaneInsertion(editor, session)) { + if (/[\]\}\)]/.test(line[cursor.column]) || editor.inMultiSelectMode || options.braces) { + CstyleBehaviour.recordAutoInsert(editor, session, "}"); + return { + text: '{}', + selection: [1, 1] + }; + } + else { + CstyleBehaviour.recordMaybeInsert(editor, session, "{"); + return { + text: '{', + selection: [1, 1] + }; + } + } + } + else if (text == '}') { + initContext(editor); + var rightChar = line.substring(cursor.column, cursor.column + 1); + if (rightChar == '}') { + var matching = session.$findOpeningBracket('}', { column: cursor.column + 1, row: cursor.row }); + if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { + CstyleBehaviour.popAutoInsertedClosing(); + return { + text: '', + selection: [1, 1] + }; + } + } + } + else if (text == "\n" || text == "\r\n") { + initContext(editor); + var closing = ""; + if (CstyleBehaviour.isMaybeInsertedClosing(cursor, line)) { + closing = lang.stringRepeat("}", context.maybeInsertedBrackets); + CstyleBehaviour.clearMaybeInsertedClosing(); + } + var rightChar = line.substring(cursor.column, cursor.column + 1); + if (rightChar === '}') { + var openBracePos = session.findMatchingBracket({ row: cursor.row, column: cursor.column + 1 }, '}'); + if (!openBracePos) + return null; + var next_indent = this.$getIndent(session.getLine(openBracePos.row)); + } + else if (closing) { + var next_indent = this.$getIndent(line); + } + else { + CstyleBehaviour.clearMaybeInsertedClosing(); + return; + } + var indent = next_indent + session.getTabString(); + return { + text: '\n' + indent + '\n' + next_indent + closing, + selection: [1, indent.length, 1, indent.length] + }; + } + else { + CstyleBehaviour.clearMaybeInsertedClosing(); + } + }); + this.add("braces", "deletion", function (state, action, editor, session, range) { + var selected = session.doc.getTextRange(range); + if (!range.isMultiLine() && selected == '{') { + initContext(editor); + var line = session.doc.getLine(range.start.row); + var rightChar = line.substring(range.end.column, range.end.column + 1); + if (rightChar == '}') { + range.end.column++; + return range; + } + else { + context.maybeInsertedBrackets--; + } + } + }); + this.add("parens", "insertion", function (state, action, editor, session, text) { + if (text == '(') { + initContext(editor); + var selection = editor.getSelectionRange(); + var selected = session.doc.getTextRange(selection); + if (selected !== "" && editor.getWrapBehavioursEnabled()) { + return getWrapped(selection, selected, '(', ')'); + } + else if (CstyleBehaviour.isSaneInsertion(editor, session)) { + CstyleBehaviour.recordAutoInsert(editor, session, ")"); + return { + text: '()', + selection: [1, 1] + }; + } + } + else if (text == ')') { + initContext(editor); + var cursor = editor.getCursorPosition(); + var line = session.doc.getLine(cursor.row); + var rightChar = line.substring(cursor.column, cursor.column + 1); + if (rightChar == ')') { + var matching = session.$findOpeningBracket(')', { column: cursor.column + 1, row: cursor.row }); + if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { + CstyleBehaviour.popAutoInsertedClosing(); + return { + text: '', + selection: [1, 1] + }; + } + } + } + }); + this.add("parens", "deletion", function (state, action, editor, session, range) { + var selected = session.doc.getTextRange(range); + if (!range.isMultiLine() && selected == '(') { + initContext(editor); + var line = session.doc.getLine(range.start.row); + var rightChar = line.substring(range.start.column + 1, range.start.column + 2); + if (rightChar == ')') { + range.end.column++; + return range; + } + } + }); + this.add("brackets", "insertion", function (state, action, editor, session, text) { + if (text == '[') { + initContext(editor); + var selection = editor.getSelectionRange(); + var selected = session.doc.getTextRange(selection); + if (selected !== "" && editor.getWrapBehavioursEnabled()) { + return getWrapped(selection, selected, '[', ']'); + } + else if (CstyleBehaviour.isSaneInsertion(editor, session)) { + CstyleBehaviour.recordAutoInsert(editor, session, "]"); + return { + text: '[]', + selection: [1, 1] + }; + } + } + else if (text == ']') { + initContext(editor); + var cursor = editor.getCursorPosition(); + var line = session.doc.getLine(cursor.row); + var rightChar = line.substring(cursor.column, cursor.column + 1); + if (rightChar == ']') { + var matching = session.$findOpeningBracket(']', { column: cursor.column + 1, row: cursor.row }); + if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { + CstyleBehaviour.popAutoInsertedClosing(); + return { + text: '', + selection: [1, 1] + }; + } + } + } + }); + this.add("brackets", "deletion", function (state, action, editor, session, range) { + var selected = session.doc.getTextRange(range); + if (!range.isMultiLine() && selected == '[') { + initContext(editor); + var line = session.doc.getLine(range.start.row); + var rightChar = line.substring(range.start.column + 1, range.start.column + 2); + if (rightChar == ']') { + range.end.column++; + return range; + } + } + }); + this.add("string_dquotes", "insertion", function (state, action, editor, session, text) { + var quotes = session.$mode.$quotes || defaultQuotes; + if (text.length == 1 && quotes[text]) { + if (this.lineCommentStart && this.lineCommentStart.indexOf(text) != -1) + return; + initContext(editor); + var quote = text; + var selection = editor.getSelectionRange(); + var selected = session.doc.getTextRange(selection); + if (selected !== "" && (selected.length != 1 || !quotes[selected]) && editor.getWrapBehavioursEnabled()) { + return getWrapped(selection, selected, quote, quote); + } + else if (!selected) { + var cursor = editor.getCursorPosition(); + var line = session.doc.getLine(cursor.row); + var leftChar = line.substring(cursor.column - 1, cursor.column); + var rightChar = line.substring(cursor.column, cursor.column + 1); + var token = session.getTokenAt(cursor.row, cursor.column); + var rightToken = session.getTokenAt(cursor.row, cursor.column + 1); + if (leftChar == "\\" && token && /escape/.test(token.type)) + return null; + var stringBefore = token && /string|escape/.test(token.type); + var stringAfter = !rightToken || /string|escape/.test(rightToken.type); + var pair; + if (rightChar == quote) { + pair = stringBefore !== stringAfter; + if (pair && /string\.end/.test(rightToken.type)) + pair = false; + } + else { + if (stringBefore && !stringAfter) + return null; // wrap string with different quote + if (stringBefore && stringAfter) + return null; // do not pair quotes inside strings + var wordRe = session.$mode.tokenRe; + wordRe.lastIndex = 0; + var isWordBefore = wordRe.test(leftChar); + wordRe.lastIndex = 0; + var isWordAfter = wordRe.test(rightChar); + var pairQuotesAfter = session.$mode.$pairQuotesAfter; + var shouldPairQuotes = pairQuotesAfter && pairQuotesAfter[quote] && pairQuotesAfter[quote].test(leftChar); + if ((!shouldPairQuotes && isWordBefore) || isWordAfter) + return null; // before or after alphanumeric + if (rightChar && !/[\s;,.})\]\\]/.test(rightChar)) + return null; // there is rightChar and it isn't closing + var charBefore = line[cursor.column - 2]; + if (leftChar == quote && (charBefore == quote || wordRe.test(charBefore))) + return null; + pair = true; + } + return { + text: pair ? quote + quote : "", + selection: [1, 1] + }; + } + } + }); + this.add("string_dquotes", "deletion", function (state, action, editor, session, range) { + var quotes = session.$mode.$quotes || defaultQuotes; + var selected = session.doc.getTextRange(range); + if (!range.isMultiLine() && quotes.hasOwnProperty(selected)) { + initContext(editor); + var line = session.doc.getLine(range.start.row); + var rightChar = line.substring(range.start.column + 1, range.start.column + 2); + if (rightChar == selected) { + range.end.column++; + return range; + } + } + }); + if (options.closeDocComment !== false) { + this.add("doc comment end", "insertion", function (state, action, editor, session, text) { + if (state === "doc-start" && (text === "\n" || text === "\r\n") && editor.selection.isEmpty()) { + var cursor = editor.getCursorPosition(); + var line = session.doc.getLine(cursor.row); + var nextLine = session.doc.getLine(cursor.row + 1); + var indent = this.$getIndent(line); + if (/\s*\*/.test(nextLine)) { + if (/^\s*\*/.test(line)) { + return { + text: text + indent + "* ", + selection: [1, 3 + indent.length, 1, 3 + indent.length] + }; + } + else { + return { + text: text + indent + " * ", + selection: [1, 3 + indent.length, 1, 3 + indent.length] + }; + } + } + if (/\/\*\*/.test(line.substring(0, cursor.column))) { + return { + text: text + indent + " * " + text + " " + indent + "*/", + selection: [1, 4 + indent.length, 1, 4 + indent.length] + }; + } + } + }); + } +}; +CstyleBehaviour.isSaneInsertion = function (editor, session) { + var cursor = editor.getCursorPosition(); + var iterator = new TokenIterator(session, cursor.row, cursor.column); + if (!this.$matchTokenType(iterator.getCurrentToken() || "text", SAFE_INSERT_IN_TOKENS)) { + if (/[)}\]]/.test(editor.session.getLine(cursor.row)[cursor.column])) + return true; + var iterator2 = new TokenIterator(session, cursor.row, cursor.column + 1); + if (!this.$matchTokenType(iterator2.getCurrentToken() || "text", SAFE_INSERT_IN_TOKENS)) + return false; + } + iterator.stepForward(); + return iterator.getCurrentTokenRow() !== cursor.row || + this.$matchTokenType(iterator.getCurrentToken() || "text", SAFE_INSERT_BEFORE_TOKENS); +}; +CstyleBehaviour.$matchTokenType = function (token, types) { + return types.indexOf(token.type || token) > -1; +}; +CstyleBehaviour.recordAutoInsert = function (editor, session, bracket) { + var cursor = editor.getCursorPosition(); + var line = session.doc.getLine(cursor.row); + if (!this.isAutoInsertedClosing(cursor, line, context.autoInsertedLineEnd[0])) + context.autoInsertedBrackets = 0; + context.autoInsertedRow = cursor.row; + context.autoInsertedLineEnd = bracket + line.substr(cursor.column); + context.autoInsertedBrackets++; +}; +CstyleBehaviour.recordMaybeInsert = function (editor, session, bracket) { + var cursor = editor.getCursorPosition(); + var line = session.doc.getLine(cursor.row); + if (!this.isMaybeInsertedClosing(cursor, line)) + context.maybeInsertedBrackets = 0; + context.maybeInsertedRow = cursor.row; + context.maybeInsertedLineStart = line.substr(0, cursor.column) + bracket; + context.maybeInsertedLineEnd = line.substr(cursor.column); + context.maybeInsertedBrackets++; +}; +CstyleBehaviour.isAutoInsertedClosing = function (cursor, line, bracket) { + return context.autoInsertedBrackets > 0 && + cursor.row === context.autoInsertedRow && + bracket === context.autoInsertedLineEnd[0] && + line.substr(cursor.column) === context.autoInsertedLineEnd; +}; +CstyleBehaviour.isMaybeInsertedClosing = function (cursor, line) { + return context.maybeInsertedBrackets > 0 && + cursor.row === context.maybeInsertedRow && + line.substr(cursor.column) === context.maybeInsertedLineEnd && + line.substr(0, cursor.column) == context.maybeInsertedLineStart; +}; +CstyleBehaviour.popAutoInsertedClosing = function () { + context.autoInsertedLineEnd = context.autoInsertedLineEnd.substr(1); + context.autoInsertedBrackets--; +}; +CstyleBehaviour.clearMaybeInsertedClosing = function () { + if (context) { + context.maybeInsertedBrackets = 0; + context.maybeInsertedRow = -1; + } +}; +oop.inherits(CstyleBehaviour, Behaviour); +exports.CstyleBehaviour = CstyleBehaviour; + +}); + +ace.define("ace/unicode",["require","exports","module"], function(require, exports, module){"use strict"; +var wordChars = [48, 9, 8, 25, 5, 0, 2, 25, 48, 0, 11, 0, 5, 0, 6, 22, 2, 30, 2, 457, 5, 11, 15, 4, 8, 0, 2, 0, 18, 116, 2, 1, 3, 3, 9, 0, 2, 2, 2, 0, 2, 19, 2, 82, 2, 138, 2, 4, 3, 155, 12, 37, 3, 0, 8, 38, 10, 44, 2, 0, 2, 1, 2, 1, 2, 0, 9, 26, 6, 2, 30, 10, 7, 61, 2, 9, 5, 101, 2, 7, 3, 9, 2, 18, 3, 0, 17, 58, 3, 100, 15, 53, 5, 0, 6, 45, 211, 57, 3, 18, 2, 5, 3, 11, 3, 9, 2, 1, 7, 6, 2, 2, 2, 7, 3, 1, 3, 21, 2, 6, 2, 0, 4, 3, 3, 8, 3, 1, 3, 3, 9, 0, 5, 1, 2, 4, 3, 11, 16, 2, 2, 5, 5, 1, 3, 21, 2, 6, 2, 1, 2, 1, 2, 1, 3, 0, 2, 4, 5, 1, 3, 2, 4, 0, 8, 3, 2, 0, 8, 15, 12, 2, 2, 8, 2, 2, 2, 21, 2, 6, 2, 1, 2, 4, 3, 9, 2, 2, 2, 2, 3, 0, 16, 3, 3, 9, 18, 2, 2, 7, 3, 1, 3, 21, 2, 6, 2, 1, 2, 4, 3, 8, 3, 1, 3, 2, 9, 1, 5, 1, 2, 4, 3, 9, 2, 0, 17, 1, 2, 5, 4, 2, 2, 3, 4, 1, 2, 0, 2, 1, 4, 1, 4, 2, 4, 11, 5, 4, 4, 2, 2, 3, 3, 0, 7, 0, 15, 9, 18, 2, 2, 7, 2, 2, 2, 22, 2, 9, 2, 4, 4, 7, 2, 2, 2, 3, 8, 1, 2, 1, 7, 3, 3, 9, 19, 1, 2, 7, 2, 2, 2, 22, 2, 9, 2, 4, 3, 8, 2, 2, 2, 3, 8, 1, 8, 0, 2, 3, 3, 9, 19, 1, 2, 7, 2, 2, 2, 22, 2, 15, 4, 7, 2, 2, 2, 3, 10, 0, 9, 3, 3, 9, 11, 5, 3, 1, 2, 17, 4, 23, 2, 8, 2, 0, 3, 6, 4, 0, 5, 5, 2, 0, 2, 7, 19, 1, 14, 57, 6, 14, 2, 9, 40, 1, 2, 0, 3, 1, 2, 0, 3, 0, 7, 3, 2, 6, 2, 2, 2, 0, 2, 0, 3, 1, 2, 12, 2, 2, 3, 4, 2, 0, 2, 5, 3, 9, 3, 1, 35, 0, 24, 1, 7, 9, 12, 0, 2, 0, 2, 0, 5, 9, 2, 35, 5, 19, 2, 5, 5, 7, 2, 35, 10, 0, 58, 73, 7, 77, 3, 37, 11, 42, 2, 0, 4, 328, 2, 3, 3, 6, 2, 0, 2, 3, 3, 40, 2, 3, 3, 32, 2, 3, 3, 6, 2, 0, 2, 3, 3, 14, 2, 56, 2, 3, 3, 66, 5, 0, 33, 15, 17, 84, 13, 619, 3, 16, 2, 25, 6, 74, 22, 12, 2, 6, 12, 20, 12, 19, 13, 12, 2, 2, 2, 1, 13, 51, 3, 29, 4, 0, 5, 1, 3, 9, 34, 2, 3, 9, 7, 87, 9, 42, 6, 69, 11, 28, 4, 11, 5, 11, 11, 39, 3, 4, 12, 43, 5, 25, 7, 10, 38, 27, 5, 62, 2, 28, 3, 10, 7, 9, 14, 0, 89, 75, 5, 9, 18, 8, 13, 42, 4, 11, 71, 55, 9, 9, 4, 48, 83, 2, 2, 30, 14, 230, 23, 280, 3, 5, 3, 37, 3, 5, 3, 7, 2, 0, 2, 0, 2, 0, 2, 30, 3, 52, 2, 6, 2, 0, 4, 2, 2, 6, 4, 3, 3, 5, 5, 12, 6, 2, 2, 6, 67, 1, 20, 0, 29, 0, 14, 0, 17, 4, 60, 12, 5, 0, 4, 11, 18, 0, 5, 0, 3, 9, 2, 0, 4, 4, 7, 0, 2, 0, 2, 0, 2, 3, 2, 10, 3, 3, 6, 4, 5, 0, 53, 1, 2684, 46, 2, 46, 2, 132, 7, 6, 15, 37, 11, 53, 10, 0, 17, 22, 10, 6, 2, 6, 2, 6, 2, 6, 2, 6, 2, 6, 2, 6, 2, 6, 2, 31, 48, 0, 470, 1, 36, 5, 2, 4, 6, 1, 5, 85, 3, 1, 3, 2, 2, 89, 2, 3, 6, 40, 4, 93, 18, 23, 57, 15, 513, 6581, 75, 20939, 53, 1164, 68, 45, 3, 268, 4, 27, 21, 31, 3, 13, 13, 1, 2, 24, 9, 69, 11, 1, 38, 8, 3, 102, 3, 1, 111, 44, 25, 51, 13, 68, 12, 9, 7, 23, 4, 0, 5, 45, 3, 35, 13, 28, 4, 64, 15, 10, 39, 54, 10, 13, 3, 9, 7, 22, 4, 1, 5, 66, 25, 2, 227, 42, 2, 1, 3, 9, 7, 11171, 13, 22, 5, 48, 8453, 301, 3, 61, 3, 105, 39, 6, 13, 4, 6, 11, 2, 12, 2, 4, 2, 0, 2, 1, 2, 1, 2, 107, 34, 362, 19, 63, 3, 53, 41, 11, 5, 15, 17, 6, 13, 1, 25, 2, 33, 4, 2, 134, 20, 9, 8, 25, 5, 0, 2, 25, 12, 88, 4, 5, 3, 5, 3, 5, 3, 2]; +var code = 0; +var str = []; +for (var i = 0; i < wordChars.length; i += 2) { + str.push(code += wordChars[i]); + if (wordChars[i + 1]) + str.push(45, code += wordChars[i + 1]); +} +exports.wordChars = String.fromCharCode.apply(null, str); + +}); + +ace.define("ace/mode/text",["require","exports","module","ace/config","ace/tokenizer","ace/mode/text_highlight_rules","ace/mode/behaviour/cstyle","ace/unicode","ace/lib/lang","ace/token_iterator","ace/range"], function(require, exports, module){"use strict"; +var config = require("../config"); +var Tokenizer = require("../tokenizer").Tokenizer; +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; +var unicode = require("../unicode"); +var lang = require("../lib/lang"); +var TokenIterator = require("../token_iterator").TokenIterator; +var Range = require("../range").Range; +var Mode = function () { + this.HighlightRules = TextHighlightRules; +}; +(function () { + this.$defaultBehaviour = new CstyleBehaviour(); + this.tokenRe = new RegExp("^[" + unicode.wordChars + "\\$_]+", "g"); + this.nonTokenRe = new RegExp("^(?:[^" + unicode.wordChars + "\\$_]|\\s])+", "g"); + this.getTokenizer = function () { + if (!this.$tokenizer) { + this.$highlightRules = this.$highlightRules || new this.HighlightRules(this.$highlightRuleConfig); + this.$tokenizer = new Tokenizer(this.$highlightRules.getRules()); + } + return this.$tokenizer; + }; + this.lineCommentStart = ""; + this.blockComment = ""; + this.toggleCommentLines = function (state, session, startRow, endRow) { + var doc = session.doc; + var ignoreBlankLines = true; + var shouldRemove = true; + var minIndent = Infinity; + var tabSize = session.getTabSize(); + var insertAtTabStop = false; + if (!this.lineCommentStart) { + if (!this.blockComment) + return false; + var lineCommentStart = this.blockComment.start; + var lineCommentEnd = this.blockComment.end; + var regexpStart = new RegExp("^(\\s*)(?:" + lang.escapeRegExp(lineCommentStart) + ")"); + var regexpEnd = new RegExp("(?:" + lang.escapeRegExp(lineCommentEnd) + ")\\s*$"); + var comment = function (line, i) { + if (testRemove(line, i)) + return; + if (!ignoreBlankLines || /\S/.test(line)) { + doc.insertInLine({ row: i, column: line.length }, lineCommentEnd); + doc.insertInLine({ row: i, column: minIndent }, lineCommentStart); + } + }; + var uncomment = function (line, i) { + var m; + if (m = line.match(regexpEnd)) + doc.removeInLine(i, line.length - m[0].length, line.length); + if (m = line.match(regexpStart)) + doc.removeInLine(i, m[1].length, m[0].length); + }; + var testRemove = function (line, row) { + if (regexpStart.test(line)) + return true; + var tokens = session.getTokens(row); + for (var i = 0; i < tokens.length; i++) { + if (tokens[i].type === "comment") + return true; + } + }; + } + else { + if (Array.isArray(this.lineCommentStart)) { + var regexpStart = this.lineCommentStart.map(lang.escapeRegExp).join("|"); + var lineCommentStart = this.lineCommentStart[0]; + } + else { + var regexpStart = lang.escapeRegExp(this.lineCommentStart); + var lineCommentStart = this.lineCommentStart; + } + regexpStart = new RegExp("^(\\s*)(?:" + regexpStart + ") ?"); + insertAtTabStop = session.getUseSoftTabs(); + var uncomment = function (line, i) { + var m = line.match(regexpStart); + if (!m) + return; + var start = m[1].length, end = m[0].length; + if (!shouldInsertSpace(line, start, end) && m[0][end - 1] == " ") + end--; + doc.removeInLine(i, start, end); + }; + var commentWithSpace = lineCommentStart + " "; + var comment = function (line, i) { + if (!ignoreBlankLines || /\S/.test(line)) { + if (shouldInsertSpace(line, minIndent, minIndent)) + doc.insertInLine({ row: i, column: minIndent }, commentWithSpace); + else + doc.insertInLine({ row: i, column: minIndent }, lineCommentStart); + } + }; + var testRemove = function (line, i) { + return regexpStart.test(line); + }; + var shouldInsertSpace = function (line, before, after) { + var spaces = 0; + while (before-- && line.charAt(before) == " ") + spaces++; + if (spaces % tabSize != 0) + return false; + var spaces = 0; + while (line.charAt(after++) == " ") + spaces++; + if (tabSize > 2) + return spaces % tabSize != tabSize - 1; + else + return spaces % tabSize == 0; + }; + } + function iter(fun) { + for (var i = startRow; i <= endRow; i++) + fun(doc.getLine(i), i); + } + var minEmptyLength = Infinity; + iter(function (line, i) { + var indent = line.search(/\S/); + if (indent !== -1) { + if (indent < minIndent) + minIndent = indent; + if (shouldRemove && !testRemove(line, i)) + shouldRemove = false; + } + else if (minEmptyLength > line.length) { + minEmptyLength = line.length; + } + }); + if (minIndent == Infinity) { + minIndent = minEmptyLength; + ignoreBlankLines = false; + shouldRemove = false; + } + if (insertAtTabStop && minIndent % tabSize != 0) + minIndent = Math.floor(minIndent / tabSize) * tabSize; + iter(shouldRemove ? uncomment : comment); + }; + this.toggleBlockComment = function (state, session, range, cursor) { + var comment = this.blockComment; + if (!comment) + return; + if (!comment.start && comment[0]) + comment = comment[0]; + var iterator = new TokenIterator(session, cursor.row, cursor.column); + var token = iterator.getCurrentToken(); + var sel = session.selection; + var initialRange = session.selection.toOrientedRange(); + var startRow, colDiff; + if (token && /comment/.test(token.type)) { + var startRange, endRange; + while (token && /comment/.test(token.type)) { + var i = token.value.indexOf(comment.start); + if (i != -1) { + var row = iterator.getCurrentTokenRow(); + var column = iterator.getCurrentTokenColumn() + i; + startRange = new Range(row, column, row, column + comment.start.length); + break; + } + token = iterator.stepBackward(); + } + var iterator = new TokenIterator(session, cursor.row, cursor.column); + var token = iterator.getCurrentToken(); + while (token && /comment/.test(token.type)) { + var i = token.value.indexOf(comment.end); + if (i != -1) { + var row = iterator.getCurrentTokenRow(); + var column = iterator.getCurrentTokenColumn() + i; + endRange = new Range(row, column, row, column + comment.end.length); + break; + } + token = iterator.stepForward(); + } + if (endRange) + session.remove(endRange); + if (startRange) { + session.remove(startRange); + startRow = startRange.start.row; + colDiff = -comment.start.length; + } + } + else { + colDiff = comment.start.length; + startRow = range.start.row; + session.insert(range.end, comment.end); + session.insert(range.start, comment.start); + } + if (initialRange.start.row == startRow) + initialRange.start.column += colDiff; + if (initialRange.end.row == startRow) + initialRange.end.column += colDiff; + session.selection.fromOrientedRange(initialRange); + }; + this.getNextLineIndent = function (state, line, tab) { + return this.$getIndent(line); + }; + this.checkOutdent = function (state, line, input) { + return false; + }; + this.autoOutdent = function (state, doc, row) { + }; + this.$getIndent = function (line) { + return line.match(/^\s*/)[0]; + }; + this.createWorker = function (session) { + return null; + }; + this.createModeDelegates = function (mapping) { + this.$embeds = []; + this.$modes = {}; + for (var i in mapping) { + if (mapping[i]) { + var Mode = mapping[i]; + var id = Mode.prototype.$id; + var mode = config.$modes[id]; + if (!mode) + config.$modes[id] = mode = new Mode(); + if (!config.$modes[i]) + config.$modes[i] = mode; + this.$embeds.push(i); + this.$modes[i] = mode; + } + } + var delegations = ["toggleBlockComment", "toggleCommentLines", "getNextLineIndent", + "checkOutdent", "autoOutdent", "transformAction", "getCompletions"]; + for (var i = 0; i < delegations.length; i++) { + (function (scope) { + var functionName = delegations[i]; + var defaultHandler = scope[functionName]; + scope[delegations[i]] = function () { + return this.$delegator(functionName, arguments, defaultHandler); + }; + }(this)); + } + }; + this.$delegator = function (method, args, defaultHandler) { + var state = args[0] || "start"; + if (typeof state != "string") { + if (Array.isArray(state[2])) { + var language = state[2][state[2].length - 1]; + var mode = this.$modes[language]; + if (mode) + return mode[method].apply(mode, [state[1]].concat([].slice.call(args, 1))); + } + state = state[0] || "start"; + } + for (var i = 0; i < this.$embeds.length; i++) { + if (!this.$modes[this.$embeds[i]]) + continue; + var split = state.split(this.$embeds[i]); + if (!split[0] && split[1]) { + args[0] = split[1]; + var mode = this.$modes[this.$embeds[i]]; + return mode[method].apply(mode, args); + } + } + var ret = defaultHandler.apply(this, args); + return defaultHandler ? ret : undefined; + }; + this.transformAction = function (state, action, editor, session, param) { + if (this.$behaviour) { + var behaviours = this.$behaviour.getBehaviours(); + for (var key in behaviours) { + if (behaviours[key][action]) { + var ret = behaviours[key][action].apply(this, arguments); + if (ret) { + return ret; + } + } + } + } + }; + this.getKeywords = function (append) { + if (!this.completionKeywords) { + var rules = this.$tokenizer.rules; + var completionKeywords = []; + for (var rule in rules) { + var ruleItr = rules[rule]; + for (var r = 0, l = ruleItr.length; r < l; r++) { + if (typeof ruleItr[r].token === "string") { + if (/keyword|support|storage/.test(ruleItr[r].token)) + completionKeywords.push(ruleItr[r].regex); + } + else if (typeof ruleItr[r].token === "object") { + for (var a = 0, aLength = ruleItr[r].token.length; a < aLength; a++) { + if (/keyword|support|storage/.test(ruleItr[r].token[a])) { + var rule = ruleItr[r].regex.match(/\(.+?\)/g)[a]; + completionKeywords.push(rule.substr(1, rule.length - 2)); + } + } + } + } + } + this.completionKeywords = completionKeywords; + } + if (!append) + return this.$keywordList; + return completionKeywords.concat(this.$keywordList || []); + }; + this.$createKeywordList = function () { + if (!this.$highlightRules) + this.getTokenizer(); + return this.$keywordList = this.$highlightRules.$keywordList || []; + }; + this.getCompletions = function (state, session, pos, prefix) { + var keywords = this.$keywordList || this.$createKeywordList(); + return keywords.map(function (word) { + return { + name: word, + value: word, + score: 0, + meta: "keyword" + }; + }); + }; + this.$id = "ace/mode/text"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); + +ace.define("ace/apply_delta",["require","exports","module"], function(require, exports, module){"use strict"; +function throwDeltaError(delta, errorText) { + console.log("Invalid Delta:", delta); + throw "Invalid Delta: " + errorText; +} +function positionInDocument(docLines, position) { + return position.row >= 0 && position.row < docLines.length && + position.column >= 0 && position.column <= docLines[position.row].length; +} +function validateDelta(docLines, delta) { + if (delta.action != "insert" && delta.action != "remove") + throwDeltaError(delta, "delta.action must be 'insert' or 'remove'"); + if (!(delta.lines instanceof Array)) + throwDeltaError(delta, "delta.lines must be an Array"); + if (!delta.start || !delta.end) + throwDeltaError(delta, "delta.start/end must be an present"); + var start = delta.start; + if (!positionInDocument(docLines, delta.start)) + throwDeltaError(delta, "delta.start must be contained in document"); + var end = delta.end; + if (delta.action == "remove" && !positionInDocument(docLines, end)) + throwDeltaError(delta, "delta.end must contained in document for 'remove' actions"); + var numRangeRows = end.row - start.row; + var numRangeLastLineChars = (end.column - (numRangeRows == 0 ? start.column : 0)); + if (numRangeRows != delta.lines.length - 1 || delta.lines[numRangeRows].length != numRangeLastLineChars) + throwDeltaError(delta, "delta.range must match delta lines"); +} +exports.applyDelta = function (docLines, delta, doNotValidate) { + var row = delta.start.row; + var startColumn = delta.start.column; + var line = docLines[row] || ""; + switch (delta.action) { + case "insert": + var lines = delta.lines; + if (lines.length === 1) { + docLines[row] = line.substring(0, startColumn) + delta.lines[0] + line.substring(startColumn); + } + else { + var args = [row, 1].concat(delta.lines); + docLines.splice.apply(docLines, args); + docLines[row] = line.substring(0, startColumn) + docLines[row]; + docLines[row + delta.lines.length - 1] += line.substring(startColumn); + } + break; + case "remove": + var endColumn = delta.end.column; + var endRow = delta.end.row; + if (row === endRow) { + docLines[row] = line.substring(0, startColumn) + line.substring(endColumn); + } + else { + docLines.splice(row, endRow - row + 1, line.substring(0, startColumn) + docLines[endRow].substring(endColumn)); + } + break; + } +}; + +}); + +ace.define("ace/anchor",["require","exports","module","ace/lib/oop","ace/lib/event_emitter"], function(require, exports, module){"use strict"; +var oop = require("./lib/oop"); +var EventEmitter = require("./lib/event_emitter").EventEmitter; +var Anchor = /** @class */ (function () { + function Anchor(doc, row, column) { + this.$onChange = this.onChange.bind(this); + this.attach(doc); + if (typeof column == "undefined") + this.setPosition(row.row, row.column); + else + this.setPosition(row, column); + } + Anchor.prototype.getPosition = function () { + return this.$clipPositionToDocument(this.row, this.column); + }; + Anchor.prototype.getDocument = function () { + return this.document; + }; + Anchor.prototype.onChange = function (delta) { + if (delta.start.row == delta.end.row && delta.start.row != this.row) + return; + if (delta.start.row > this.row) + return; + var point = $getTransformedPoint(delta, { row: this.row, column: this.column }, this.$insertRight); + this.setPosition(point.row, point.column, true); + }; + Anchor.prototype.setPosition = function (row, column, noClip) { + var pos; + if (noClip) { + pos = { + row: row, + column: column + }; + } + else { + pos = this.$clipPositionToDocument(row, column); + } + if (this.row == pos.row && this.column == pos.column) + return; + var old = { + row: this.row, + column: this.column + }; + this.row = pos.row; + this.column = pos.column; + this._signal("change", { + old: old, + value: pos + }); + }; + Anchor.prototype.detach = function () { + this.document.off("change", this.$onChange); + }; + Anchor.prototype.attach = function (doc) { + this.document = doc || this.document; + this.document.on("change", this.$onChange); + }; + Anchor.prototype.$clipPositionToDocument = function (row, column) { + var pos = {}; + if (row >= this.document.getLength()) { + pos.row = Math.max(0, this.document.getLength() - 1); + pos.column = this.document.getLine(pos.row).length; + } + else if (row < 0) { + pos.row = 0; + pos.column = 0; + } + else { + pos.row = row; + pos.column = Math.min(this.document.getLine(pos.row).length, Math.max(0, column)); + } + if (column < 0) + pos.column = 0; + return pos; + }; + return Anchor; +}()); +Anchor.prototype.$insertRight = false; +oop.implement(Anchor.prototype, EventEmitter); +function $pointsInOrder(point1, point2, equalPointsInOrder) { + var bColIsAfter = equalPointsInOrder ? point1.column <= point2.column : point1.column < point2.column; + return (point1.row < point2.row) || (point1.row == point2.row && bColIsAfter); +} +function $getTransformedPoint(delta, point, moveIfEqual) { + var deltaIsInsert = delta.action == "insert"; + var deltaRowShift = (deltaIsInsert ? 1 : -1) * (delta.end.row - delta.start.row); + var deltaColShift = (deltaIsInsert ? 1 : -1) * (delta.end.column - delta.start.column); + var deltaStart = delta.start; + var deltaEnd = deltaIsInsert ? deltaStart : delta.end; // Collapse insert range. + if ($pointsInOrder(point, deltaStart, moveIfEqual)) { + return { + row: point.row, + column: point.column + }; + } + if ($pointsInOrder(deltaEnd, point, !moveIfEqual)) { + return { + row: point.row + deltaRowShift, + column: point.column + (point.row == deltaEnd.row ? deltaColShift : 0) + }; + } + return { + row: deltaStart.row, + column: deltaStart.column + }; +} +exports.Anchor = Anchor; + +}); + +ace.define("ace/document",["require","exports","module","ace/lib/oop","ace/apply_delta","ace/lib/event_emitter","ace/range","ace/anchor"], function(require, exports, module){"use strict"; +var oop = require("./lib/oop"); +var applyDelta = require("./apply_delta").applyDelta; +var EventEmitter = require("./lib/event_emitter").EventEmitter; +var Range = require("./range").Range; +var Anchor = require("./anchor").Anchor; +var Document = /** @class */ (function () { + function Document(textOrLines) { + this.$lines = [""]; + if (textOrLines.length === 0) { + this.$lines = [""]; + } + else if (Array.isArray(textOrLines)) { + this.insertMergedLines({ row: 0, column: 0 }, textOrLines); + } + else { + this.insert({ row: 0, column: 0 }, textOrLines); + } + } + Document.prototype.setValue = function (text) { + var len = this.getLength() - 1; + this.remove(new Range(0, 0, len, this.getLine(len).length)); + this.insert({ row: 0, column: 0 }, text || ""); + }; + Document.prototype.getValue = function () { + return this.getAllLines().join(this.getNewLineCharacter()); + }; + Document.prototype.createAnchor = function (row, column) { + return new Anchor(this, row, column); + }; + Document.prototype.$detectNewLine = function (text) { + var match = text.match(/^.*?(\r\n|\r|\n)/m); + this.$autoNewLine = match ? match[1] : "\n"; + this._signal("changeNewLineMode"); + }; + Document.prototype.getNewLineCharacter = function () { + switch (this.$newLineMode) { + case "windows": + return "\r\n"; + case "unix": + return "\n"; + default: + return this.$autoNewLine || "\n"; + } + }; + Document.prototype.setNewLineMode = function (newLineMode) { + if (this.$newLineMode === newLineMode) + return; + this.$newLineMode = newLineMode; + this._signal("changeNewLineMode"); + }; + Document.prototype.getNewLineMode = function () { + return this.$newLineMode; + }; + Document.prototype.isNewLine = function (text) { + return (text == "\r\n" || text == "\r" || text == "\n"); + }; + Document.prototype.getLine = function (row) { + return this.$lines[row] || ""; + }; + Document.prototype.getLines = function (firstRow, lastRow) { + return this.$lines.slice(firstRow, lastRow + 1); + }; + Document.prototype.getAllLines = function () { + return this.getLines(0, this.getLength()); + }; + Document.prototype.getLength = function () { + return this.$lines.length; + }; + Document.prototype.getTextRange = function (range) { + return this.getLinesForRange(range).join(this.getNewLineCharacter()); + }; + Document.prototype.getLinesForRange = function (range) { + var lines; + if (range.start.row === range.end.row) { + lines = [this.getLine(range.start.row).substring(range.start.column, range.end.column)]; + } + else { + lines = this.getLines(range.start.row, range.end.row); + lines[0] = (lines[0] || "").substring(range.start.column); + var l = lines.length - 1; + if (range.end.row - range.start.row == l) + lines[l] = lines[l].substring(0, range.end.column); + } + return lines; + }; + Document.prototype.insertLines = function (row, lines) { + console.warn("Use of document.insertLines is deprecated. Use the insertFullLines method instead."); + return this.insertFullLines(row, lines); + }; + Document.prototype.removeLines = function (firstRow, lastRow) { + console.warn("Use of document.removeLines is deprecated. Use the removeFullLines method instead."); + return this.removeFullLines(firstRow, lastRow); + }; + Document.prototype.insertNewLine = function (position) { + console.warn("Use of document.insertNewLine is deprecated. Use insertMergedLines(position, ['', '']) instead."); + return this.insertMergedLines(position, ["", ""]); + }; + Document.prototype.insert = function (position, text) { + if (this.getLength() <= 1) + this.$detectNewLine(text); + return this.insertMergedLines(position, this.$split(text)); + }; + Document.prototype.insertInLine = function (position, text) { + var start = this.clippedPos(position.row, position.column); + var end = this.pos(position.row, position.column + text.length); + this.applyDelta({ + start: start, + end: end, + action: "insert", + lines: [text] + }, true); + return this.clonePos(end); + }; + Document.prototype.clippedPos = function (row, column) { + var length = this.getLength(); + if (row === undefined) { + row = length; + } + else if (row < 0) { + row = 0; + } + else if (row >= length) { + row = length - 1; + column = undefined; + } + var line = this.getLine(row); + if (column == undefined) + column = line.length; + column = Math.min(Math.max(column, 0), line.length); + return { row: row, column: column }; + }; + Document.prototype.clonePos = function (pos) { + return { row: pos.row, column: pos.column }; + }; + Document.prototype.pos = function (row, column) { + return { row: row, column: column }; + }; + Document.prototype.$clipPosition = function (position) { + var length = this.getLength(); + if (position.row >= length) { + position.row = Math.max(0, length - 1); + position.column = this.getLine(length - 1).length; + } + else { + position.row = Math.max(0, position.row); + position.column = Math.min(Math.max(position.column, 0), this.getLine(position.row).length); + } + return position; + }; + Document.prototype.insertFullLines = function (row, lines) { + row = Math.min(Math.max(row, 0), this.getLength()); + var column = 0; + if (row < this.getLength()) { + lines = lines.concat([""]); + column = 0; + } + else { + lines = [""].concat(lines); + row--; + column = this.$lines[row].length; + } + this.insertMergedLines({ row: row, column: column }, lines); + }; + Document.prototype.insertMergedLines = function (position, lines) { + var start = this.clippedPos(position.row, position.column); + var end = { + row: start.row + lines.length - 1, + column: (lines.length == 1 ? start.column : 0) + lines[lines.length - 1].length + }; + this.applyDelta({ + start: start, + end: end, + action: "insert", + lines: lines + }); + return this.clonePos(end); + }; + Document.prototype.remove = function (range) { + var start = this.clippedPos(range.start.row, range.start.column); + var end = this.clippedPos(range.end.row, range.end.column); + this.applyDelta({ + start: start, + end: end, + action: "remove", + lines: this.getLinesForRange({ start: start, end: end }) + }); + return this.clonePos(start); + }; + Document.prototype.removeInLine = function (row, startColumn, endColumn) { + var start = this.clippedPos(row, startColumn); + var end = this.clippedPos(row, endColumn); + this.applyDelta({ + start: start, + end: end, + action: "remove", + lines: this.getLinesForRange({ start: start, end: end }) + }, true); + return this.clonePos(start); + }; + Document.prototype.removeFullLines = function (firstRow, lastRow) { + firstRow = Math.min(Math.max(0, firstRow), this.getLength() - 1); + lastRow = Math.min(Math.max(0, lastRow), this.getLength() - 1); + var deleteFirstNewLine = lastRow == this.getLength() - 1 && firstRow > 0; + var deleteLastNewLine = lastRow < this.getLength() - 1; + var startRow = (deleteFirstNewLine ? firstRow - 1 : firstRow); + var startCol = (deleteFirstNewLine ? this.getLine(startRow).length : 0); + var endRow = (deleteLastNewLine ? lastRow + 1 : lastRow); + var endCol = (deleteLastNewLine ? 0 : this.getLine(endRow).length); + var range = new Range(startRow, startCol, endRow, endCol); + var deletedLines = this.$lines.slice(firstRow, lastRow + 1); + this.applyDelta({ + start: range.start, + end: range.end, + action: "remove", + lines: this.getLinesForRange(range) + }); + return deletedLines; + }; + Document.prototype.removeNewLine = function (row) { + if (row < this.getLength() - 1 && row >= 0) { + this.applyDelta({ + start: this.pos(row, this.getLine(row).length), + end: this.pos(row + 1, 0), + action: "remove", + lines: ["", ""] + }); + } + }; + Document.prototype.replace = function (range, text) { + if (!(range instanceof Range)) + range = Range.fromPoints(range.start, range.end); + if (text.length === 0 && range.isEmpty()) + return range.start; + if (text == this.getTextRange(range)) + return range.end; + this.remove(range); + var end; + if (text) { + end = this.insert(range.start, text); + } + else { + end = range.start; + } + return end; + }; + Document.prototype.applyDeltas = function (deltas) { + for (var i = 0; i < deltas.length; i++) { + this.applyDelta(deltas[i]); + } + }; + Document.prototype.revertDeltas = function (deltas) { + for (var i = deltas.length - 1; i >= 0; i--) { + this.revertDelta(deltas[i]); + } + }; + Document.prototype.applyDelta = function (delta, doNotValidate) { + var isInsert = delta.action == "insert"; + if (isInsert ? delta.lines.length <= 1 && !delta.lines[0] + : !Range.comparePoints(delta.start, delta.end)) { + return; + } + if (isInsert && delta.lines.length > 20000) { + this.$splitAndapplyLargeDelta(delta, 20000); + } + else { + applyDelta(this.$lines, delta, doNotValidate); + this._signal("change", delta); + } + }; + Document.prototype.$safeApplyDelta = function (delta) { + var docLength = this.$lines.length; + if (delta.action == "remove" && delta.start.row < docLength && delta.end.row < docLength + || delta.action == "insert" && delta.start.row <= docLength) { + this.applyDelta(delta); + } + }; + Document.prototype.$splitAndapplyLargeDelta = function (delta, MAX) { + var lines = delta.lines; + var l = lines.length - MAX + 1; + var row = delta.start.row; + var column = delta.start.column; + for (var from = 0, to = 0; from < l; from = to) { + to += MAX - 1; + var chunk = lines.slice(from, to); + chunk.push(""); + this.applyDelta({ + start: this.pos(row + from, column), + end: this.pos(row + to, column = 0), + action: delta.action, + lines: chunk + }, true); + } + delta.lines = lines.slice(from); + delta.start.row = row + from; + delta.start.column = column; + this.applyDelta(delta, true); + }; + Document.prototype.revertDelta = function (delta) { + this.$safeApplyDelta({ + start: this.clonePos(delta.start), + end: this.clonePos(delta.end), + action: (delta.action == "insert" ? "remove" : "insert"), + lines: delta.lines.slice() + }); + }; + Document.prototype.indexToPosition = function (index, startRow) { + var lines = this.$lines || this.getAllLines(); + var newlineLength = this.getNewLineCharacter().length; + for (var i = startRow || 0, l = lines.length; i < l; i++) { + index -= lines[i].length + newlineLength; + if (index < 0) + return { row: i, column: index + lines[i].length + newlineLength }; + } + return { row: l - 1, column: index + lines[l - 1].length + newlineLength }; + }; + Document.prototype.positionToIndex = function (pos, startRow) { + var lines = this.$lines || this.getAllLines(); + var newlineLength = this.getNewLineCharacter().length; + var index = 0; + var row = Math.min(pos.row, lines.length); + for (var i = startRow || 0; i < row; ++i) + index += lines[i].length + newlineLength; + return index + pos.column; + }; + Document.prototype.$split = function (text) { + return text.split(/\r\n|\r|\n/); + }; + return Document; +}()); +Document.prototype.$autoNewLine = ""; +Document.prototype.$newLineMode = "auto"; +oop.implement(Document.prototype, EventEmitter); +exports.Document = Document; + +}); + +ace.define("ace/background_tokenizer",["require","exports","module","ace/lib/oop","ace/lib/event_emitter"], function(require, exports, module){"use strict"; +var oop = require("./lib/oop"); +var EventEmitter = require("./lib/event_emitter").EventEmitter; +var BackgroundTokenizer = /** @class */ (function () { + function BackgroundTokenizer(tokenizer, editor) { + this.running = false; + this.lines = []; + this.states = []; + this.currentLine = 0; + this.tokenizer = tokenizer; + var self = this; + this.$worker = function () { + if (!self.running) { + return; + } + var workerStart = new Date(); + var currentLine = self.currentLine; + var endLine = -1; + var doc = self.doc; + var startLine = currentLine; + while (self.lines[currentLine]) + currentLine++; + var len = doc.getLength(); + var processedLines = 0; + self.running = false; + while (currentLine < len) { + self.$tokenizeRow(currentLine); + endLine = currentLine; + do { + currentLine++; + } while (self.lines[currentLine]); + processedLines++; + if ((processedLines % 5 === 0) && (new Date() - workerStart) > 20) { + self.running = setTimeout(self.$worker, 20); + break; + } + } + self.currentLine = currentLine; + if (endLine == -1) + endLine = currentLine; + if (startLine <= endLine) + self.fireUpdateEvent(startLine, endLine); + }; + } + BackgroundTokenizer.prototype.setTokenizer = function (tokenizer) { + this.tokenizer = tokenizer; + this.lines = []; + this.states = []; + this.start(0); + }; + BackgroundTokenizer.prototype.setDocument = function (doc) { + this.doc = doc; + this.lines = []; + this.states = []; + this.stop(); + }; + BackgroundTokenizer.prototype.fireUpdateEvent = function (firstRow, lastRow) { + var data = { + first: firstRow, + last: lastRow + }; + this._signal("update", { data: data }); + }; + BackgroundTokenizer.prototype.start = function (startRow) { + this.currentLine = Math.min(startRow || 0, this.currentLine, this.doc.getLength()); + this.lines.splice(this.currentLine, this.lines.length); + this.states.splice(this.currentLine, this.states.length); + this.stop(); + this.running = setTimeout(this.$worker, 700); + }; + BackgroundTokenizer.prototype.scheduleStart = function () { + if (!this.running) + this.running = setTimeout(this.$worker, 700); + }; + BackgroundTokenizer.prototype.$updateOnChange = function (delta) { + var startRow = delta.start.row; + var len = delta.end.row - startRow; + if (len === 0) { + this.lines[startRow] = null; + } + else if (delta.action == "remove") { + this.lines.splice(startRow, len + 1, null); + this.states.splice(startRow, len + 1, null); + } + else { + var args = Array(len + 1); + args.unshift(startRow, 1); + this.lines.splice.apply(this.lines, args); + this.states.splice.apply(this.states, args); + } + this.currentLine = Math.min(startRow, this.currentLine, this.doc.getLength()); + this.stop(); + }; + BackgroundTokenizer.prototype.stop = function () { + if (this.running) + clearTimeout(this.running); + this.running = false; + }; + BackgroundTokenizer.prototype.getTokens = function (row) { + return this.lines[row] || this.$tokenizeRow(row); + }; + BackgroundTokenizer.prototype.getState = function (row) { + if (this.currentLine == row) + this.$tokenizeRow(row); + return this.states[row] || "start"; + }; + BackgroundTokenizer.prototype.$tokenizeRow = function (row) { + var line = this.doc.getLine(row); + var state = this.states[row - 1]; + var data = this.tokenizer.getLineTokens(line, state, row); + if (this.states[row] + "" !== data.state + "") { + this.states[row] = data.state; + this.lines[row + 1] = null; + if (this.currentLine > row + 1) + this.currentLine = row + 1; + } + else if (this.currentLine == row) { + this.currentLine = row + 1; + } + return this.lines[row] = data.tokens; + }; + BackgroundTokenizer.prototype.cleanup = function () { + this.running = false; + this.lines = []; + this.states = []; + this.currentLine = 0; + this.removeAllListeners(); + }; + return BackgroundTokenizer; +}()); +oop.implement(BackgroundTokenizer.prototype, EventEmitter); +exports.BackgroundTokenizer = BackgroundTokenizer; + +}); + +ace.define("ace/search_highlight",["require","exports","module","ace/lib/lang","ace/range"], function(require, exports, module){"use strict"; +var lang = require("./lib/lang"); +var Range = require("./range").Range; +var SearchHighlight = /** @class */ (function () { + function SearchHighlight(regExp, clazz, type) { + if (type === void 0) { type = "text"; } + this.setRegexp(regExp); + this.clazz = clazz; + this.type = type; + } + SearchHighlight.prototype.setRegexp = function (regExp) { + if (this.regExp + "" == regExp + "") + return; + this.regExp = regExp; + this.cache = []; + }; + SearchHighlight.prototype.update = function (html, markerLayer, session, config) { + if (!this.regExp) + return; + var start = config.firstRow, end = config.lastRow; + var renderedMarkerRanges = {}; + for (var i = start; i <= end; i++) { + var ranges = this.cache[i]; + if (ranges == null) { + ranges = lang.getMatchOffsets(session.getLine(i), this.regExp); + if (ranges.length > this.MAX_RANGES) + ranges = ranges.slice(0, this.MAX_RANGES); + ranges = ranges.map(function (match) { + return new Range(i, match.offset, i, match.offset + match.length); + }); + this.cache[i] = ranges.length ? ranges : ""; + } + for (var j = ranges.length; j--;) { + var rangeToAddMarkerTo = ranges[j].toScreenRange(session); + var rangeAsString = rangeToAddMarkerTo.toString(); + if (renderedMarkerRanges[rangeAsString]) + continue; + renderedMarkerRanges[rangeAsString] = true; + markerLayer.drawSingleLineMarker(html, rangeToAddMarkerTo, this.clazz, config); + } + } + }; + return SearchHighlight; +}()); +SearchHighlight.prototype.MAX_RANGES = 500; +exports.SearchHighlight = SearchHighlight; + +}); + +ace.define("ace/undomanager",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; +var UndoManager = /** @class */ (function () { + function UndoManager() { + this.$maxRev = 0; + this.$fromUndo = false; + this.$undoDepth = Infinity; + this.reset(); + } + UndoManager.prototype.addSession = function (session) { + this.$session = session; + }; + UndoManager.prototype.add = function (delta, allowMerge, session) { + if (this.$fromUndo) + return; + if (delta == this.$lastDelta) + return; + if (!this.$keepRedoStack) + this.$redoStack.length = 0; + if (allowMerge === false || !this.lastDeltas) { + this.lastDeltas = []; + var undoStackLength = this.$undoStack.length; + if (undoStackLength > this.$undoDepth - 1) { + this.$undoStack.splice(0, undoStackLength - this.$undoDepth + 1); + } + this.$undoStack.push(this.lastDeltas); + delta.id = this.$rev = ++this.$maxRev; + } + if (delta.action == "remove" || delta.action == "insert") + this.$lastDelta = delta; + this.lastDeltas.push(delta); + }; + UndoManager.prototype.addSelection = function (selection, rev) { + this.selections.push({ + value: selection, + rev: rev || this.$rev + }); + }; + UndoManager.prototype.startNewGroup = function () { + this.lastDeltas = null; + return this.$rev; + }; + UndoManager.prototype.markIgnored = function (from, to) { + if (to == null) + to = this.$rev + 1; + var stack = this.$undoStack; + for (var i = stack.length; i--;) { + var delta = stack[i][0]; + if (delta.id <= from) + break; + if (delta.id < to) + delta.ignore = true; + } + this.lastDeltas = null; + }; + UndoManager.prototype.getSelection = function (rev, after) { + var stack = this.selections; + for (var i = stack.length; i--;) { + var selection = stack[i]; + if (selection.rev < rev) { + if (after) + selection = stack[i + 1]; + return selection; + } + } + }; + UndoManager.prototype.getRevision = function () { + return this.$rev; + }; + UndoManager.prototype.getDeltas = function (from, to) { + if (to == null) + to = this.$rev + 1; + var stack = this.$undoStack; + var end = null, start = 0; + for (var i = stack.length; i--;) { + var delta = stack[i][0]; + if (delta.id < to && !end) + end = i + 1; + if (delta.id <= from) { + start = i + 1; + break; + } + } + return stack.slice(start, end); + }; + UndoManager.prototype.getChangedRanges = function (from, to) { + if (to == null) + to = this.$rev + 1; + }; + UndoManager.prototype.getChangedLines = function (from, to) { + if (to == null) + to = this.$rev + 1; + }; + UndoManager.prototype.undo = function (session, dontSelect) { + this.lastDeltas = null; + var stack = this.$undoStack; + if (!rearrangeUndoStack(stack, stack.length)) + return; + if (!session) + session = this.$session; + if (this.$redoStackBaseRev !== this.$rev && this.$redoStack.length) + this.$redoStack = []; + this.$fromUndo = true; + var deltaSet = stack.pop(); + var undoSelectionRange = null; + if (deltaSet) { + undoSelectionRange = session.undoChanges(deltaSet, dontSelect); + this.$redoStack.push(deltaSet); + this.$syncRev(); + } + this.$fromUndo = false; + return undoSelectionRange; + }; + UndoManager.prototype.redo = function (session, dontSelect) { + this.lastDeltas = null; + if (!session) + session = this.$session; + this.$fromUndo = true; + if (this.$redoStackBaseRev != this.$rev) { + var diff = this.getDeltas(this.$redoStackBaseRev, this.$rev + 1); + rebaseRedoStack(this.$redoStack, diff); + this.$redoStackBaseRev = this.$rev; + this.$redoStack.forEach(function (x) { + x[0].id = ++this.$maxRev; + }, this); + } + var deltaSet = this.$redoStack.pop(); + var redoSelectionRange = null; + if (deltaSet) { + redoSelectionRange = session.redoChanges(deltaSet, dontSelect); + this.$undoStack.push(deltaSet); + this.$syncRev(); + } + this.$fromUndo = false; + return redoSelectionRange; + }; + UndoManager.prototype.$syncRev = function () { + var stack = this.$undoStack; + var nextDelta = stack[stack.length - 1]; + var id = nextDelta && nextDelta[0].id || 0; + this.$redoStackBaseRev = id; + this.$rev = id; + }; + UndoManager.prototype.reset = function () { + this.lastDeltas = null; + this.$lastDelta = null; + this.$undoStack = []; + this.$redoStack = []; + this.$rev = 0; + this.mark = 0; + this.$redoStackBaseRev = this.$rev; + this.selections = []; + }; + UndoManager.prototype.canUndo = function () { + return this.$undoStack.length > 0; + }; + UndoManager.prototype.canRedo = function () { + return this.$redoStack.length > 0; + }; + UndoManager.prototype.bookmark = function (rev) { + if (rev == undefined) + rev = this.$rev; + this.mark = rev; + }; + UndoManager.prototype.isAtBookmark = function () { + return this.$rev === this.mark; + }; + UndoManager.prototype.toJSON = function () { + return { + $redoStack: this.$redoStack, + $undoStack: this.$undoStack + }; + }; + UndoManager.prototype.fromJSON = function (json) { + this.reset(); + this.$undoStack = json.$undoStack; + this.$redoStack = json.$redoStack; + }; + UndoManager.prototype.$prettyPrint = function (delta) { + if (delta) + return stringifyDelta(delta); + return stringifyDelta(this.$undoStack) + "\n---\n" + stringifyDelta(this.$redoStack); + }; + return UndoManager; +}()); +UndoManager.prototype.hasUndo = UndoManager.prototype.canUndo; +UndoManager.prototype.hasRedo = UndoManager.prototype.canRedo; +UndoManager.prototype.isClean = UndoManager.prototype.isAtBookmark; +UndoManager.prototype.markClean = UndoManager.prototype.bookmark; +function rearrangeUndoStack(stack, pos) { + for (var i = pos; i--;) { + var deltaSet = stack[i]; + if (deltaSet && !deltaSet[0].ignore) { + while (i < pos - 1) { + var swapped = swapGroups(stack[i], stack[i + 1]); + stack[i] = swapped[0]; + stack[i + 1] = swapped[1]; + i++; + } + return true; + } + } +} +var Range = require("./range").Range; +var cmp = Range.comparePoints; +var comparePoints = Range.comparePoints; +function $updateMarkers(delta) { + var isInsert = delta.action == "insert"; + var start = delta.start; + var end = delta.end; + var rowShift = (end.row - start.row) * (isInsert ? 1 : -1); + var colShift = (end.column - start.column) * (isInsert ? 1 : -1); + if (isInsert) + end = start; + for (var i in this.marks) { + var point = this.marks[i]; + var cmp = comparePoints(point, start); + if (cmp < 0) { + continue; // delta starts after the range + } + if (cmp === 0) { + if (isInsert) { + if (point.bias == 1) { + cmp = 1; + } + else { + point.bias == -1; + continue; + } + } + } + var cmp2 = isInsert ? cmp : comparePoints(point, end); + if (cmp2 > 0) { + point.row += rowShift; + point.column += point.row == end.row ? colShift : 0; + continue; + } + if (!isInsert && cmp2 <= 0) { + point.row = start.row; + point.column = start.column; + if (cmp2 === 0) + point.bias = 1; + } + } +} +function clonePos(pos) { + return { row: pos.row, column: pos.column }; +} +function cloneDelta(d) { + return { + start: clonePos(d.start), + end: clonePos(d.end), + action: d.action, + lines: d.lines.slice() + }; +} +function stringifyDelta(d) { + d = d || this; + if (Array.isArray(d)) { + return d.map(stringifyDelta).join("\n"); + } + var type = ""; + if (d.action) { + type = d.action == "insert" ? "+" : "-"; + type += "[" + d.lines + "]"; + } + else if (d.value) { + if (Array.isArray(d.value)) { + type = d.value.map(stringifyRange).join("\n"); + } + else { + type = stringifyRange(d.value); + } + } + if (d.start) { + type += stringifyRange(d); + } + if (d.id || d.rev) { + type += "\t(" + (d.id || d.rev) + ")"; + } + return type; +} +function stringifyRange(r) { + return r.start.row + ":" + r.start.column + + "=>" + r.end.row + ":" + r.end.column; +} +function swap(d1, d2) { + var i1 = d1.action == "insert"; + var i2 = d2.action == "insert"; + if (i1 && i2) { + if (cmp(d2.start, d1.end) >= 0) { + shift(d2, d1, -1); + } + else if (cmp(d2.start, d1.start) <= 0) { + shift(d1, d2, +1); + } + else { + return null; + } + } + else if (i1 && !i2) { + if (cmp(d2.start, d1.end) >= 0) { + shift(d2, d1, -1); + } + else if (cmp(d2.end, d1.start) <= 0) { + shift(d1, d2, -1); + } + else { + return null; + } + } + else if (!i1 && i2) { + if (cmp(d2.start, d1.start) >= 0) { + shift(d2, d1, +1); + } + else if (cmp(d2.start, d1.start) <= 0) { + shift(d1, d2, +1); + } + else { + return null; + } + } + else if (!i1 && !i2) { + if (cmp(d2.start, d1.start) >= 0) { + shift(d2, d1, +1); + } + else if (cmp(d2.end, d1.start) <= 0) { + shift(d1, d2, -1); + } + else { + return null; + } + } + return [d2, d1]; +} +function swapGroups(ds1, ds2) { + for (var i = ds1.length; i--;) { + for (var j = 0; j < ds2.length; j++) { + if (!swap(ds1[i], ds2[j])) { + while (i < ds1.length) { + while (j--) { + swap(ds2[j], ds1[i]); + } + j = ds2.length; + i++; + } + return [ds1, ds2]; + } + } + } + ds1.selectionBefore = ds2.selectionBefore = + ds1.selectionAfter = ds2.selectionAfter = null; + return [ds2, ds1]; +} +function xform(d1, c1) { + var i1 = d1.action == "insert"; + var i2 = c1.action == "insert"; + if (i1 && i2) { + if (cmp(d1.start, c1.start) < 0) { + shift(c1, d1, 1); + } + else { + shift(d1, c1, 1); + } + } + else if (i1 && !i2) { + if (cmp(d1.start, c1.end) >= 0) { + shift(d1, c1, -1); + } + else if (cmp(d1.start, c1.start) <= 0) { + shift(c1, d1, +1); + } + else { + shift(d1, Range.fromPoints(c1.start, d1.start), -1); + shift(c1, d1, +1); + } + } + else if (!i1 && i2) { + if (cmp(c1.start, d1.end) >= 0) { + shift(c1, d1, -1); + } + else if (cmp(c1.start, d1.start) <= 0) { + shift(d1, c1, +1); + } + else { + shift(c1, Range.fromPoints(d1.start, c1.start), -1); + shift(d1, c1, +1); + } + } + else if (!i1 && !i2) { + if (cmp(c1.start, d1.end) >= 0) { + shift(c1, d1, -1); + } + else if (cmp(c1.end, d1.start) <= 0) { + shift(d1, c1, -1); + } + else { + var before, after; + if (cmp(d1.start, c1.start) < 0) { + before = d1; + d1 = splitDelta(d1, c1.start); + } + if (cmp(d1.end, c1.end) > 0) { + after = splitDelta(d1, c1.end); + } + shiftPos(c1.end, d1.start, d1.end, -1); + if (after && !before) { + d1.lines = after.lines; + d1.start = after.start; + d1.end = after.end; + after = d1; + } + return [c1, before, after].filter(Boolean); + } + } + return [c1, d1]; +} +function shift(d1, d2, dir) { + shiftPos(d1.start, d2.start, d2.end, dir); + shiftPos(d1.end, d2.start, d2.end, dir); +} +function shiftPos(pos, start, end, dir) { + if (pos.row == (dir == 1 ? start : end).row) { + pos.column += dir * (end.column - start.column); + } + pos.row += dir * (end.row - start.row); +} +function splitDelta(c, pos) { + var lines = c.lines; + var end = c.end; + c.end = clonePos(pos); + var rowsBefore = c.end.row - c.start.row; + var otherLines = lines.splice(rowsBefore, lines.length); + var col = rowsBefore ? pos.column : pos.column - c.start.column; + lines.push(otherLines[0].substring(0, col)); + otherLines[0] = otherLines[0].substr(col); + var rest = { + start: clonePos(pos), + end: end, + lines: otherLines, + action: c.action + }; + return rest; +} +function moveDeltasByOne(redoStack, d) { + d = cloneDelta(d); + for (var j = redoStack.length; j--;) { + var deltaSet = redoStack[j]; + for (var i = 0; i < deltaSet.length; i++) { + var x = deltaSet[i]; + var xformed = xform(x, d); + d = xformed[0]; + if (xformed.length != 2) { + if (xformed[2]) { + deltaSet.splice(i + 1, 1, xformed[1], xformed[2]); + i++; + } + else if (!xformed[1]) { + deltaSet.splice(i, 1); + i--; + } + } + } + if (!deltaSet.length) { + redoStack.splice(j, 1); + } + } + return redoStack; +} +function rebaseRedoStack(redoStack, deltaSets) { + for (var i = 0; i < deltaSets.length; i++) { + var deltas = deltaSets[i]; + for (var j = 0; j < deltas.length; j++) { + moveDeltasByOne(redoStack, deltas[j]); + } + } +} +exports.UndoManager = UndoManager; + +}); + +ace.define("ace/edit_session/fold_line",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; +var Range = require("../range").Range; +var FoldLine = /** @class */ (function () { + function FoldLine(foldData, folds) { + this.foldData = foldData; + if (Array.isArray(folds)) { + this.folds = folds; + } + else { + folds = this.folds = [folds]; + } + var last = folds[folds.length - 1]; + this.range = new Range(folds[0].start.row, folds[0].start.column, last.end.row, last.end.column); + this.start = this.range.start; + this.end = this.range.end; + this.folds.forEach(function (fold) { + fold.setFoldLine(this); + }, this); + } + FoldLine.prototype.shiftRow = function (shift) { + this.start.row += shift; + this.end.row += shift; + this.folds.forEach(function (fold) { + fold.start.row += shift; + fold.end.row += shift; + }); + }; + FoldLine.prototype.addFold = function (fold) { + if (fold.sameRow) { + if (fold.start.row < this.startRow || fold.endRow > this.endRow) { + throw new Error("Can't add a fold to this FoldLine as it has no connection"); + } + this.folds.push(fold); + this.folds.sort(function (a, b) { + return -a.range.compareEnd(b.start.row, b.start.column); + }); + if (this.range.compareEnd(fold.start.row, fold.start.column) > 0) { + this.end.row = fold.end.row; + this.end.column = fold.end.column; + } + else if (this.range.compareStart(fold.end.row, fold.end.column) < 0) { + this.start.row = fold.start.row; + this.start.column = fold.start.column; + } + } + else if (fold.start.row == this.end.row) { + this.folds.push(fold); + this.end.row = fold.end.row; + this.end.column = fold.end.column; + } + else if (fold.end.row == this.start.row) { + this.folds.unshift(fold); + this.start.row = fold.start.row; + this.start.column = fold.start.column; + } + else { + throw new Error("Trying to add fold to FoldRow that doesn't have a matching row"); + } + fold.foldLine = this; + }; + FoldLine.prototype.containsRow = function (row) { + return row >= this.start.row && row <= this.end.row; + }; + FoldLine.prototype.walk = function (callback, endRow, endColumn) { + var lastEnd = 0, folds = this.folds, fold, cmp, stop, isNewRow = true; + if (endRow == null) { + endRow = this.end.row; + endColumn = this.end.column; + } + for (var i = 0; i < folds.length; i++) { + fold = folds[i]; + cmp = fold.range.compareStart(endRow, endColumn); + if (cmp == -1) { + callback(null, endRow, endColumn, lastEnd, isNewRow); + return; + } + stop = callback(null, fold.start.row, fold.start.column, lastEnd, isNewRow); + stop = !stop && callback(fold.placeholder, fold.start.row, fold.start.column, lastEnd); + if (stop || cmp === 0) { + return; + } + isNewRow = !fold.sameRow; + lastEnd = fold.end.column; + } + callback(null, endRow, endColumn, lastEnd, isNewRow); + }; + FoldLine.prototype.getNextFoldTo = function (row, column) { + var fold, cmp; + for (var i = 0; i < this.folds.length; i++) { + fold = this.folds[i]; + cmp = fold.range.compareEnd(row, column); + if (cmp == -1) { + return { + fold: fold, + kind: "after" + }; + } + else if (cmp === 0) { + return { + fold: fold, + kind: "inside" + }; + } + } + return null; + }; + FoldLine.prototype.addRemoveChars = function (row, column, len) { + var ret = this.getNextFoldTo(row, column), fold, folds; + if (ret) { + fold = ret.fold; + if (ret.kind == "inside" + && fold.start.column != column + && fold.start.row != row) { + window.console && window.console.log(row, column, fold); + } + else if (fold.start.row == row) { + folds = this.folds; + var i = folds.indexOf(fold); + if (i === 0) { + this.start.column += len; + } + for (i; i < folds.length; i++) { + fold = folds[i]; + fold.start.column += len; + if (!fold.sameRow) { + return; + } + fold.end.column += len; + } + this.end.column += len; + } + } + }; + FoldLine.prototype.split = function (row, column) { + var pos = this.getNextFoldTo(row, column); + if (!pos || pos.kind == "inside") + return null; + var fold = pos.fold; + var folds = this.folds; + var foldData = this.foldData; + var i = folds.indexOf(fold); + var foldBefore = folds[i - 1]; + this.end.row = foldBefore.end.row; + this.end.column = foldBefore.end.column; + folds = folds.splice(i, folds.length - i); + var newFoldLine = new FoldLine(foldData, folds); + foldData.splice(foldData.indexOf(this) + 1, 0, newFoldLine); + return newFoldLine; + }; + FoldLine.prototype.merge = function (foldLineNext) { + var folds = foldLineNext.folds; + for (var i = 0; i < folds.length; i++) { + this.addFold(folds[i]); + } + var foldData = this.foldData; + foldData.splice(foldData.indexOf(foldLineNext), 1); + }; + FoldLine.prototype.toString = function () { + var ret = [this.range.toString() + ": ["]; + this.folds.forEach(function (fold) { + ret.push(" " + fold.toString()); + }); + ret.push("]"); + return ret.join("\n"); + }; + FoldLine.prototype.idxToPosition = function (idx) { + var lastFoldEndColumn = 0; + for (var i = 0; i < this.folds.length; i++) { + var fold = this.folds[i]; + idx -= fold.start.column - lastFoldEndColumn; + if (idx < 0) { + return { + row: fold.start.row, + column: fold.start.column + idx + }; + } + idx -= fold.placeholder.length; + if (idx < 0) { + return fold.start; + } + lastFoldEndColumn = fold.end.column; + } + return { + row: this.end.row, + column: this.end.column + idx + }; + }; + return FoldLine; +}()); +exports.FoldLine = FoldLine; + +}); + +ace.define("ace/range_list",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; +var Range = require("./range").Range; +var comparePoints = Range.comparePoints; +var RangeList = /** @class */ (function () { + function RangeList() { + this.ranges = []; + this.$bias = 1; + } + RangeList.prototype.pointIndex = function (pos, excludeEdges, startIndex) { + var list = this.ranges; + for (var i = startIndex || 0; i < list.length; i++) { + var range = list[i]; + var cmpEnd = comparePoints(pos, range.end); + if (cmpEnd > 0) + continue; + var cmpStart = comparePoints(pos, range.start); + if (cmpEnd === 0) + return excludeEdges && cmpStart !== 0 ? -i - 2 : i; + if (cmpStart > 0 || (cmpStart === 0 && !excludeEdges)) + return i; + return -i - 1; + } + return -i - 1; + }; + RangeList.prototype.add = function (range) { + var excludeEdges = !range.isEmpty(); + var startIndex = this.pointIndex(range.start, excludeEdges); + if (startIndex < 0) + startIndex = -startIndex - 1; + var endIndex = this.pointIndex(range.end, excludeEdges, startIndex); + if (endIndex < 0) + endIndex = -endIndex - 1; + else + endIndex++; + return this.ranges.splice(startIndex, endIndex - startIndex, range); + }; + RangeList.prototype.addList = function (list) { + var removed = []; + for (var i = list.length; i--;) { + removed.push.apply(removed, this.add(list[i])); + } + return removed; + }; + RangeList.prototype.substractPoint = function (pos) { + var i = this.pointIndex(pos); + if (i >= 0) + return this.ranges.splice(i, 1); + }; + RangeList.prototype.merge = function () { + var removed = []; + var list = this.ranges; + list = list.sort(function (a, b) { + return comparePoints(a.start, b.start); + }); + var next = list[0], range; + for (var i = 1; i < list.length; i++) { + range = next; + next = list[i]; + var cmp = comparePoints(range.end, next.start); + if (cmp < 0) + continue; + if (cmp == 0 && !range.isEmpty() && !next.isEmpty()) + continue; + if (comparePoints(range.end, next.end) < 0) { + range.end.row = next.end.row; + range.end.column = next.end.column; + } + list.splice(i, 1); + removed.push(next); + next = range; + i--; + } + this.ranges = list; + return removed; + }; + RangeList.prototype.contains = function (row, column) { + return this.pointIndex({ row: row, column: column }) >= 0; + }; + RangeList.prototype.containsPoint = function (pos) { + return this.pointIndex(pos) >= 0; + }; + RangeList.prototype.rangeAtPoint = function (pos) { + var i = this.pointIndex(pos); + if (i >= 0) + return this.ranges[i]; + }; + RangeList.prototype.clipRows = function (startRow, endRow) { + var list = this.ranges; + if (list[0].start.row > endRow || list[list.length - 1].start.row < startRow) + return []; + var startIndex = this.pointIndex({ row: startRow, column: 0 }); + if (startIndex < 0) + startIndex = -startIndex - 1; + var endIndex = this.pointIndex({ row: endRow, column: 0 }, startIndex); + if (endIndex < 0) + endIndex = -endIndex - 1; + var clipped = []; + for (var i = startIndex; i < endIndex; i++) { + clipped.push(list[i]); + } + return clipped; + }; + RangeList.prototype.removeAll = function () { + return this.ranges.splice(0, this.ranges.length); + }; + RangeList.prototype.attach = function (session) { + if (this.session) + this.detach(); + this.session = session; + this.onChange = this.$onChange.bind(this); + this.session.on('change', this.onChange); + }; + RangeList.prototype.detach = function () { + if (!this.session) + return; + this.session.removeListener('change', this.onChange); + this.session = null; + }; + RangeList.prototype.$onChange = function (delta) { + var start = delta.start; + var end = delta.end; + var startRow = start.row; + var endRow = end.row; + var ranges = this.ranges; + for (var i = 0, n = ranges.length; i < n; i++) { + var r = ranges[i]; + if (r.end.row >= startRow) + break; + } + if (delta.action == "insert") { + var lineDif = endRow - startRow; + var colDiff = -start.column + end.column; + for (; i < n; i++) { + var r = ranges[i]; + if (r.start.row > startRow) + break; + if (r.start.row == startRow && r.start.column >= start.column) { + if (r.start.column == start.column && this.$bias <= 0) { + } + else { + r.start.column += colDiff; + r.start.row += lineDif; + } + } + if (r.end.row == startRow && r.end.column >= start.column) { + if (r.end.column == start.column && this.$bias < 0) { + continue; + } + if (r.end.column == start.column && colDiff > 0 && i < n - 1) { + if (r.end.column > r.start.column && r.end.column == ranges[i + 1].start.column) + r.end.column -= colDiff; + } + r.end.column += colDiff; + r.end.row += lineDif; + } + } + } + else { + var lineDif = startRow - endRow; + var colDiff = start.column - end.column; + for (; i < n; i++) { + var r = ranges[i]; + if (r.start.row > endRow) + break; + if (r.end.row < endRow + && (startRow < r.end.row + || startRow == r.end.row && start.column < r.end.column)) { + r.end.row = startRow; + r.end.column = start.column; + } + else if (r.end.row == endRow) { + if (r.end.column <= end.column) { + if (lineDif || r.end.column > start.column) { + r.end.column = start.column; + r.end.row = start.row; + } + } + else { + r.end.column += colDiff; + r.end.row += lineDif; + } + } + else if (r.end.row > endRow) { + r.end.row += lineDif; + } + if (r.start.row < endRow + && (startRow < r.start.row + || startRow == r.start.row && start.column < r.start.column)) { + r.start.row = startRow; + r.start.column = start.column; + } + else if (r.start.row == endRow) { + if (r.start.column <= end.column) { + if (lineDif || r.start.column > start.column) { + r.start.column = start.column; + r.start.row = start.row; + } + } + else { + r.start.column += colDiff; + r.start.row += lineDif; + } + } + else if (r.start.row > endRow) { + r.start.row += lineDif; + } + } + } + if (lineDif != 0 && i < n) { + for (; i < n; i++) { + var r = ranges[i]; + r.start.row += lineDif; + r.end.row += lineDif; + } + } + }; + return RangeList; +}()); +RangeList.prototype.comparePoints = comparePoints; +exports.RangeList = RangeList; + +}); + +ace.define("ace/edit_session/fold",["require","exports","module","ace/range_list"], function(require, exports, module){"use strict"; +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + if (typeof b !== "function" && b !== null) + throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +var RangeList = require("../range_list").RangeList; +var Fold = /** @class */ (function (_super) { + __extends(Fold, _super); + function Fold(range, placeholder) { + var _this = _super.call(this) || this; + _this.foldLine = null; + _this.placeholder = placeholder; + _this.range = range; + _this.start = range.start; + _this.end = range.end; + _this.sameRow = range.start.row == range.end.row; + _this.subFolds = _this.ranges = []; + return _this; + } + Fold.prototype.toString = function () { + return '"' + this.placeholder + '" ' + this.range.toString(); + }; + Fold.prototype.setFoldLine = function (foldLine) { + this.foldLine = foldLine; + this.subFolds.forEach(function (fold) { + fold.setFoldLine(foldLine); + }); + }; + Fold.prototype.clone = function () { + var range = this.range.clone(); + var fold = new Fold(range, this.placeholder); + this.subFolds.forEach(function (subFold) { + fold.subFolds.push(subFold.clone()); + }); + fold.collapseChildren = this.collapseChildren; + return fold; + }; + Fold.prototype.addSubFold = function (fold) { + if (this.range.isEqual(fold)) + return; + consumeRange(fold, this.start); + var row = fold.start.row, column = fold.start.column; + for (var i = 0, cmp = -1; i < this.subFolds.length; i++) { + cmp = this.subFolds[i].range.compare(row, column); + if (cmp != 1) + break; + } + var afterStart = this.subFolds[i]; + var firstConsumed = 0; + if (cmp == 0) { + if (afterStart.range.containsRange(fold)) + return afterStart.addSubFold(fold); + else + firstConsumed = 1; + } + var row = fold.range.end.row, column = fold.range.end.column; + for (var j = i, cmp = -1; j < this.subFolds.length; j++) { + cmp = this.subFolds[j].range.compare(row, column); + if (cmp != 1) + break; + } + if (cmp == 0) + j++; + var consumedFolds = this.subFolds.splice(i, j - i, fold); + var last = cmp == 0 ? consumedFolds.length - 1 : consumedFolds.length; + for (var k = firstConsumed; k < last; k++) { + fold.addSubFold(consumedFolds[k]); + } + fold.setFoldLine(this.foldLine); + return fold; + }; + Fold.prototype.restoreRange = function (range) { + return restoreRange(range, this.start); + }; + return Fold; +}(RangeList)); +function consumePoint(point, anchor) { + point.row -= anchor.row; + if (point.row == 0) + point.column -= anchor.column; +} +function consumeRange(range, anchor) { + consumePoint(range.start, anchor); + consumePoint(range.end, anchor); +} +function restorePoint(point, anchor) { + if (point.row == 0) + point.column += anchor.column; + point.row += anchor.row; +} +function restoreRange(range, anchor) { + restorePoint(range.start, anchor); + restorePoint(range.end, anchor); +} +exports.Fold = Fold; + +}); + +ace.define("ace/edit_session/folding",["require","exports","module","ace/range","ace/edit_session/fold_line","ace/edit_session/fold","ace/token_iterator","ace/mouse/mouse_event"], function(require, exports, module){"use strict"; +var Range = require("../range").Range; +var FoldLine = require("./fold_line").FoldLine; +var Fold = require("./fold").Fold; +var TokenIterator = require("../token_iterator").TokenIterator; +var MouseEvent = require("../mouse/mouse_event").MouseEvent; +function Folding() { + this.getFoldAt = function (row, column, side) { + var foldLine = this.getFoldLine(row); + if (!foldLine) + return null; + var folds = foldLine.folds; + for (var i = 0; i < folds.length; i++) { + var range = folds[i].range; + if (range.contains(row, column)) { + if (side == 1 && range.isEnd(row, column) && !range.isEmpty()) { + continue; + } + else if (side == -1 && range.isStart(row, column) && !range.isEmpty()) { + continue; + } + return folds[i]; + } + } + }; + this.getFoldsInRange = function (range) { + var start = range.start; + var end = range.end; + var foldLines = this.$foldData; + var foundFolds = []; + start.column += 1; + end.column -= 1; + for (var i = 0; i < foldLines.length; i++) { + var cmp = foldLines[i].range.compareRange(range); + if (cmp == 2) { + continue; + } + else if (cmp == -2) { + break; + } + var folds = foldLines[i].folds; + for (var j = 0; j < folds.length; j++) { + var fold = folds[j]; + cmp = fold.range.compareRange(range); + if (cmp == -2) { + break; + } + else if (cmp == 2) { + continue; + } + else + if (cmp == 42) { + break; + } + foundFolds.push(fold); + } + } + start.column -= 1; + end.column += 1; + return foundFolds; + }; + this.getFoldsInRangeList = function (ranges) { + if (Array.isArray(ranges)) { + var folds = []; + ranges.forEach(function (range) { + folds = folds.concat(this.getFoldsInRange(range)); + }, this); + } + else { + var folds = this.getFoldsInRange(ranges); + } + return folds; + }; + this.getAllFolds = function () { + var folds = []; + var foldLines = this.$foldData; + for (var i = 0; i < foldLines.length; i++) + for (var j = 0; j < foldLines[i].folds.length; j++) + folds.push(foldLines[i].folds[j]); + return folds; + }; + this.getFoldStringAt = function (row, column, trim, foldLine) { + foldLine = foldLine || this.getFoldLine(row); + if (!foldLine) + return null; + var lastFold = { + end: { column: 0 } + }; + var str, fold; + for (var i = 0; i < foldLine.folds.length; i++) { + fold = foldLine.folds[i]; + var cmp = fold.range.compareEnd(row, column); + if (cmp == -1) { + str = this + .getLine(fold.start.row) + .substring(lastFold.end.column, fold.start.column); + break; + } + else if (cmp === 0) { + return null; + } + lastFold = fold; + } + if (!str) + str = this.getLine(fold.start.row).substring(lastFold.end.column); + if (trim == -1) + return str.substring(0, column - lastFold.end.column); + else if (trim == 1) + return str.substring(column - lastFold.end.column); + else + return str; + }; + this.getFoldLine = function (docRow, startFoldLine) { + var foldData = this.$foldData; + var i = 0; + if (startFoldLine) + i = foldData.indexOf(startFoldLine); + if (i == -1) + i = 0; + for (i; i < foldData.length; i++) { + var foldLine = foldData[i]; + if (foldLine.start.row <= docRow && foldLine.end.row >= docRow) { + return foldLine; + } + else if (foldLine.end.row > docRow) { + return null; + } + } + return null; + }; + this.getNextFoldLine = function (docRow, startFoldLine) { + var foldData = this.$foldData; + var i = 0; + if (startFoldLine) + i = foldData.indexOf(startFoldLine); + if (i == -1) + i = 0; + for (i; i < foldData.length; i++) { + var foldLine = foldData[i]; + if (foldLine.end.row >= docRow) { + return foldLine; + } + } + return null; + }; + this.getFoldedRowCount = function (first, last) { + var foldData = this.$foldData, rowCount = last - first + 1; + for (var i = 0; i < foldData.length; i++) { + var foldLine = foldData[i], end = foldLine.end.row, start = foldLine.start.row; + if (end >= last) { + if (start < last) { + if (start >= first) + rowCount -= last - start; + else + rowCount = 0; // in one fold + } + break; + } + else if (end >= first) { + if (start >= first) // fold inside range + rowCount -= end - start; + else + rowCount -= end - first + 1; + } + } + return rowCount; + }; + this.$addFoldLine = function (foldLine) { + this.$foldData.push(foldLine); + this.$foldData.sort(function (a, b) { + return a.start.row - b.start.row; + }); + return foldLine; + }; + this.addFold = function (placeholder, range) { + var foldData = this.$foldData; + var added = false; + var fold; + if (placeholder instanceof Fold) + fold = placeholder; + else { + fold = new Fold(range, placeholder); + fold.collapseChildren = range.collapseChildren; + } + this.$clipRangeToDocument(fold.range); + var startRow = fold.start.row; + var startColumn = fold.start.column; + var endRow = fold.end.row; + var endColumn = fold.end.column; + var startFold = this.getFoldAt(startRow, startColumn, 1); + var endFold = this.getFoldAt(endRow, endColumn, -1); + if (startFold && endFold == startFold) + return startFold.addSubFold(fold); + if (startFold && !startFold.range.isStart(startRow, startColumn)) + this.removeFold(startFold); + if (endFold && !endFold.range.isEnd(endRow, endColumn)) + this.removeFold(endFold); + var folds = this.getFoldsInRange(fold.range); + if (folds.length > 0) { + this.removeFolds(folds); + if (!fold.collapseChildren) { + folds.forEach(function (subFold) { + fold.addSubFold(subFold); + }); + } + } + for (var i = 0; i < foldData.length; i++) { + var foldLine = foldData[i]; + if (endRow == foldLine.start.row) { + foldLine.addFold(fold); + added = true; + break; + } + else if (startRow == foldLine.end.row) { + foldLine.addFold(fold); + added = true; + if (!fold.sameRow) { + var foldLineNext = foldData[i + 1]; + if (foldLineNext && foldLineNext.start.row == endRow) { + foldLine.merge(foldLineNext); + break; + } + } + break; + } + else if (endRow <= foldLine.start.row) { + break; + } + } + if (!added) + foldLine = this.$addFoldLine(new FoldLine(this.$foldData, fold)); + if (this.$useWrapMode) + this.$updateWrapData(foldLine.start.row, foldLine.start.row); + else + this.$updateRowLengthCache(foldLine.start.row, foldLine.start.row); + this.$modified = true; + this._signal("changeFold", { data: fold, action: "add" }); + return fold; + }; + this.addFolds = function (folds) { + folds.forEach(function (fold) { + this.addFold(fold); + }, this); + }; + this.removeFold = function (fold) { + var foldLine = fold.foldLine; + var startRow = foldLine.start.row; + var endRow = foldLine.end.row; + var foldLines = this.$foldData; + var folds = foldLine.folds; + if (folds.length == 1) { + foldLines.splice(foldLines.indexOf(foldLine), 1); + } + else + if (foldLine.range.isEnd(fold.end.row, fold.end.column)) { + folds.pop(); + foldLine.end.row = folds[folds.length - 1].end.row; + foldLine.end.column = folds[folds.length - 1].end.column; + } + else + if (foldLine.range.isStart(fold.start.row, fold.start.column)) { + folds.shift(); + foldLine.start.row = folds[0].start.row; + foldLine.start.column = folds[0].start.column; + } + else + if (fold.sameRow) { + folds.splice(folds.indexOf(fold), 1); + } + else + { + var newFoldLine = foldLine.split(fold.start.row, fold.start.column); + folds = newFoldLine.folds; + folds.shift(); + newFoldLine.start.row = folds[0].start.row; + newFoldLine.start.column = folds[0].start.column; + } + if (!this.$updating) { + if (this.$useWrapMode) + this.$updateWrapData(startRow, endRow); + else + this.$updateRowLengthCache(startRow, endRow); + } + this.$modified = true; + this._signal("changeFold", { data: fold, action: "remove" }); + }; + this.removeFolds = function (folds) { + var cloneFolds = []; + for (var i = 0; i < folds.length; i++) { + cloneFolds.push(folds[i]); + } + cloneFolds.forEach(function (fold) { + this.removeFold(fold); + }, this); + this.$modified = true; + }; + this.expandFold = function (fold) { + this.removeFold(fold); + fold.subFolds.forEach(function (subFold) { + fold.restoreRange(subFold); + this.addFold(subFold); + }, this); + if (fold.collapseChildren > 0) { + this.foldAll(fold.start.row + 1, fold.end.row, fold.collapseChildren - 1); + } + fold.subFolds = []; + }; + this.expandFolds = function (folds) { + folds.forEach(function (fold) { + this.expandFold(fold); + }, this); + }; + this.unfold = function (location, expandInner) { + var range, folds; + if (location == null) { + range = new Range(0, 0, this.getLength(), 0); + if (expandInner == null) + expandInner = true; + } + else if (typeof location == "number") { + range = new Range(location, 0, location, this.getLine(location).length); + } + else if ("row" in location) { + range = Range.fromPoints(location, location); + } + else if (Array.isArray(location)) { + folds = []; + location.forEach(function (range) { + folds = folds.concat(this.unfold(range)); + }, this); + return folds; + } + else { + range = location; + } + folds = this.getFoldsInRangeList(range); + var outermostFolds = folds; + while (folds.length == 1 + && Range.comparePoints(folds[0].start, range.start) < 0 + && Range.comparePoints(folds[0].end, range.end) > 0) { + this.expandFolds(folds); + folds = this.getFoldsInRangeList(range); + } + if (expandInner != false) { + this.removeFolds(folds); + } + else { + this.expandFolds(folds); + } + if (outermostFolds.length) + return outermostFolds; + }; + this.isRowFolded = function (docRow, startFoldRow) { + return !!this.getFoldLine(docRow, startFoldRow); + }; + this.getRowFoldEnd = function (docRow, startFoldRow) { + var foldLine = this.getFoldLine(docRow, startFoldRow); + return foldLine ? foldLine.end.row : docRow; + }; + this.getRowFoldStart = function (docRow, startFoldRow) { + var foldLine = this.getFoldLine(docRow, startFoldRow); + return foldLine ? foldLine.start.row : docRow; + }; + this.getFoldDisplayLine = function (foldLine, endRow, endColumn, startRow, startColumn) { + if (startRow == null) + startRow = foldLine.start.row; + if (startColumn == null) + startColumn = 0; + if (endRow == null) + endRow = foldLine.end.row; + if (endColumn == null) + endColumn = this.getLine(endRow).length; + var doc = this.doc; + var textLine = ""; + foldLine.walk(function (placeholder, row, column, lastColumn) { + if (row < startRow) + return; + if (row == startRow) { + if (column < startColumn) + return; + lastColumn = Math.max(startColumn, lastColumn); + } + if (placeholder != null) { + textLine += placeholder; + } + else { + textLine += doc.getLine(row).substring(lastColumn, column); + } + }, endRow, endColumn); + return textLine; + }; + this.getDisplayLine = function (row, endColumn, startRow, startColumn) { + var foldLine = this.getFoldLine(row); + if (!foldLine) { + var line; + line = this.doc.getLine(row); + return line.substring(startColumn || 0, endColumn || line.length); + } + else { + return this.getFoldDisplayLine(foldLine, row, endColumn, startRow, startColumn); + } + }; + this.$cloneFoldData = function () { + var fd = []; + fd = this.$foldData.map(function (foldLine) { + var folds = foldLine.folds.map(function (fold) { + return fold.clone(); + }); + return new FoldLine(fd, folds); + }); + return fd; + }; + this.toggleFold = function (tryToUnfold) { + var selection = this.selection; + var range = selection.getRange(); + var fold; + var bracketPos; + if (range.isEmpty()) { + var cursor = range.start; + fold = this.getFoldAt(cursor.row, cursor.column); + if (fold) { + this.expandFold(fold); + return; + } + else if (bracketPos = this.findMatchingBracket(cursor)) { + if (range.comparePoint(bracketPos) == 1) { + range.end = bracketPos; + } + else { + range.start = bracketPos; + range.start.column++; + range.end.column--; + } + } + else if (bracketPos = this.findMatchingBracket({ row: cursor.row, column: cursor.column + 1 })) { + if (range.comparePoint(bracketPos) == 1) + range.end = bracketPos; + else + range.start = bracketPos; + range.start.column++; + } + else { + range = this.getCommentFoldRange(cursor.row, cursor.column) || range; + } + } + else { + var folds = this.getFoldsInRange(range); + if (tryToUnfold && folds.length) { + this.expandFolds(folds); + return; + } + else if (folds.length == 1) { + fold = folds[0]; + } + } + if (!fold) + fold = this.getFoldAt(range.start.row, range.start.column); + if (fold && fold.range.toString() == range.toString()) { + this.expandFold(fold); + return; + } + var placeholder = "..."; + if (!range.isMultiLine()) { + placeholder = this.getTextRange(range); + if (placeholder.length < 4) + return; + placeholder = placeholder.trim().substring(0, 2) + ".."; + } + this.addFold(placeholder, range); + }; + this.getCommentFoldRange = function (row, column, dir) { + var iterator = new TokenIterator(this, row, column); + var token = iterator.getCurrentToken(); + var type = token && token.type; + if (token && /^comment|string/.test(type)) { + type = type.match(/comment|string/)[0]; + if (type == "comment") + type += "|doc-start|\\.doc"; + var re = new RegExp(type); + var range = new Range(); + if (dir != 1) { + do { + token = iterator.stepBackward(); + } while (token && re.test(token.type) && !/^comment.end/.test(token.type)); + token = iterator.stepForward(); + } + range.start.row = iterator.getCurrentTokenRow(); + range.start.column = iterator.getCurrentTokenColumn() + (/^comment.start/.test(token.type) ? token.value.length : 2); + iterator = new TokenIterator(this, row, column); + if (dir != -1) { + var lastRow = -1; + do { + token = iterator.stepForward(); + if (lastRow == -1) { + var state = this.getState(iterator.$row); + if (!re.test(state)) + lastRow = iterator.$row; + } + else if (iterator.$row > lastRow) { + break; + } + } while (token && re.test(token.type) && !/^comment.start/.test(token.type)); + token = iterator.stepBackward(); + } + else + token = iterator.getCurrentToken(); + range.end.row = iterator.getCurrentTokenRow(); + range.end.column = iterator.getCurrentTokenColumn(); + if (!/^comment.end/.test(token.type)) { + range.end.column += token.value.length - 2; + } + return range; + } + }; + this.foldAll = function (startRow, endRow, depth, test) { + if (depth == undefined) + depth = 100000; // JSON.stringify doesn't hanle Infinity + var foldWidgets = this.foldWidgets; + if (!foldWidgets) + return; // mode doesn't support folding + endRow = endRow || this.getLength(); + startRow = startRow || 0; + for (var row = startRow; row < endRow; row++) { + if (foldWidgets[row] == null) + foldWidgets[row] = this.getFoldWidget(row); + if (foldWidgets[row] != "start") + continue; + if (test && !test(row)) + continue; + var range = this.getFoldWidgetRange(row); + if (range && range.isMultiLine() + && range.end.row <= endRow + && range.start.row >= startRow) { + row = range.end.row; + range.collapseChildren = depth; + this.addFold("...", range); + } + } + }; + this.foldToLevel = function (level) { + this.foldAll(); + while (level-- > 0) + this.unfold(null, false); + }; + this.foldAllComments = function () { + var session = this; + this.foldAll(null, null, null, function (row) { + var tokens = session.getTokens(row); + for (var i = 0; i < tokens.length; i++) { + var token = tokens[i]; + if (token.type == "text" && /^\s+$/.test(token.value)) + continue; + if (/comment/.test(token.type)) + return true; + return false; + } + }); + }; + this.$foldStyles = { + "manual": 1, + "markbegin": 1, + "markbeginend": 1 + }; + this.$foldStyle = "markbegin"; + this.setFoldStyle = function (style) { + if (!this.$foldStyles[style]) + throw new Error("invalid fold style: " + style + "[" + Object.keys(this.$foldStyles).join(", ") + "]"); + if (this.$foldStyle == style) + return; + this.$foldStyle = style; + if (style == "manual") + this.unfold(); + var mode = this.$foldMode; + this.$setFolding(null); + this.$setFolding(mode); + }; + this.$setFolding = function (foldMode) { + if (this.$foldMode == foldMode) + return; + this.$foldMode = foldMode; + this.off('change', this.$updateFoldWidgets); + this.off('tokenizerUpdate', this.$tokenizerUpdateFoldWidgets); + this._signal("changeAnnotation"); + if (!foldMode || this.$foldStyle == "manual") { + this.foldWidgets = null; + return; + } + this.foldWidgets = []; + this.getFoldWidget = foldMode.getFoldWidget.bind(foldMode, this, this.$foldStyle); + this.getFoldWidgetRange = foldMode.getFoldWidgetRange.bind(foldMode, this, this.$foldStyle); + this.$updateFoldWidgets = this.updateFoldWidgets.bind(this); + this.$tokenizerUpdateFoldWidgets = this.tokenizerUpdateFoldWidgets.bind(this); + this.on('change', this.$updateFoldWidgets); + this.on('tokenizerUpdate', this.$tokenizerUpdateFoldWidgets); + }; + this.getParentFoldRangeData = function (row, ignoreCurrent) { + var fw = this.foldWidgets; + if (!fw || (ignoreCurrent && fw[row])) + return {}; + var i = row - 1, firstRange; + while (i >= 0) { + var c = fw[i]; + if (c == null) + c = fw[i] = this.getFoldWidget(i); + if (c == "start") { + var range = this.getFoldWidgetRange(i); + if (!firstRange) + firstRange = range; + if (range && range.end.row >= row) + break; + } + i--; + } + return { + range: i !== -1 && range, + firstRange: firstRange + }; + }; + this.onFoldWidgetClick = function (row, e) { + if (e instanceof MouseEvent) + e = e.domEvent; + var options = { + children: e.shiftKey, + all: e.ctrlKey || e.metaKey, + siblings: e.altKey + }; + var range = this.$toggleFoldWidget(row, options); + if (!range) { + var el = (e.target || e.srcElement); + if (el && /ace_fold-widget/.test(el.className)) + el.className += " ace_invalid"; + } + }; + this.$toggleFoldWidget = function (row, options) { + if (!this.getFoldWidget) + return; + var type = this.getFoldWidget(row); + var line = this.getLine(row); + var dir = type === "end" ? -1 : 1; + var fold = this.getFoldAt(row, dir === -1 ? 0 : line.length, dir); + if (fold) { + if (options.children || options.all) + this.removeFold(fold); + else + this.expandFold(fold); + return fold; + } + var range = this.getFoldWidgetRange(row, true); + if (range && !range.isMultiLine()) { + fold = this.getFoldAt(range.start.row, range.start.column, 1); + if (fold && range.isEqual(fold.range)) { + this.removeFold(fold); + return fold; + } + } + if (options.siblings) { + var data = this.getParentFoldRangeData(row); + if (data.range) { + var startRow = data.range.start.row + 1; + var endRow = data.range.end.row; + } + this.foldAll(startRow, endRow, options.all ? 10000 : 0); + } + else if (options.children) { + endRow = range ? range.end.row : this.getLength(); + this.foldAll(row + 1, endRow, options.all ? 10000 : 0); + } + else if (range) { + if (options.all) + range.collapseChildren = 10000; + this.addFold("...", range); + } + return range; + }; + this.toggleFoldWidget = function (toggleParent) { + var row = this.selection.getCursor().row; + row = this.getRowFoldStart(row); + var range = this.$toggleFoldWidget(row, {}); + if (range) + return; + var data = this.getParentFoldRangeData(row, true); + range = data.range || data.firstRange; + if (range) { + row = range.start.row; + var fold = this.getFoldAt(row, this.getLine(row).length, 1); + if (fold) { + this.removeFold(fold); + } + else { + this.addFold("...", range); + } + } + }; + this.updateFoldWidgets = function (delta) { + var firstRow = delta.start.row; + var len = delta.end.row - firstRow; + if (len === 0) { + this.foldWidgets[firstRow] = null; + } + else if (delta.action == 'remove') { + this.foldWidgets.splice(firstRow, len + 1, null); + } + else { + var args = Array(len + 1); + args.unshift(firstRow, 1); + this.foldWidgets.splice.apply(this.foldWidgets, args); + } + }; + this.tokenizerUpdateFoldWidgets = function (e) { + var rows = e.data; + if (rows.first != rows.last) { + if (this.foldWidgets.length > rows.first) + this.foldWidgets.splice(rows.first, this.foldWidgets.length); + } + }; +} +exports.Folding = Folding; + +}); + +ace.define("ace/edit_session/bracket_match",["require","exports","module","ace/token_iterator","ace/range"], function(require, exports, module){"use strict"; +var TokenIterator = require("../token_iterator").TokenIterator; +var Range = require("../range").Range; +function BracketMatch() { + this.findMatchingBracket = function (position, chr) { + if (position.column == 0) + return null; + var charBeforeCursor = chr || this.getLine(position.row).charAt(position.column - 1); + if (charBeforeCursor == "") + return null; + var match = charBeforeCursor.match(/([\(\[\{])|([\)\]\}])/); + if (!match) + return null; + if (match[1]) + return this.$findClosingBracket(match[1], position); + else + return this.$findOpeningBracket(match[2], position); + }; + this.getBracketRange = function (pos) { + var line = this.getLine(pos.row); + var before = true, range; + var chr = line.charAt(pos.column - 1); + var match = chr && chr.match(/([\(\[\{])|([\)\]\}])/); + if (!match) { + chr = line.charAt(pos.column); + pos = { row: pos.row, column: pos.column + 1 }; + match = chr && chr.match(/([\(\[\{])|([\)\]\}])/); + before = false; + } + if (!match) + return null; + if (match[1]) { + var bracketPos = this.$findClosingBracket(match[1], pos); + if (!bracketPos) + return null; + range = Range.fromPoints(pos, bracketPos); + if (!before) { + range.end.column++; + range.start.column--; + } + range.cursor = range.end; + } + else { + var bracketPos = this.$findOpeningBracket(match[2], pos); + if (!bracketPos) + return null; + range = Range.fromPoints(bracketPos, pos); + if (!before) { + range.start.column++; + range.end.column--; + } + range.cursor = range.start; + } + return range; + }; + this.getMatchingBracketRanges = function (pos, isBackwards) { + var line = this.getLine(pos.row); + var bracketsRegExp = /([\(\[\{])|([\)\]\}])/; + var chr = !isBackwards && line.charAt(pos.column - 1); + var match = chr && chr.match(bracketsRegExp); + if (!match) { + chr = (isBackwards === undefined || isBackwards) && line.charAt(pos.column); + pos = { + row: pos.row, + column: pos.column + 1 + }; + match = chr && chr.match(bracketsRegExp); + } + if (!match) + return null; + var startRange = new Range(pos.row, pos.column - 1, pos.row, pos.column); + var bracketPos = match[1] ? this.$findClosingBracket(match[1], pos) + : this.$findOpeningBracket(match[2], pos); + if (!bracketPos) + return [startRange]; + var endRange = new Range(bracketPos.row, bracketPos.column, bracketPos.row, bracketPos.column + 1); + return [startRange, endRange]; + }; + this.$brackets = { + ")": "(", + "(": ")", + "]": "[", + "[": "]", + "{": "}", + "}": "{", + "<": ">", + ">": "<" + }; + this.$findOpeningBracket = function (bracket, position, typeRe) { + var openBracket = this.$brackets[bracket]; + var depth = 1; + var iterator = new TokenIterator(this, position.row, position.column); + var token = iterator.getCurrentToken(); + if (!token) + token = iterator.stepForward(); + if (!token) + return; + if (!typeRe) { + typeRe = new RegExp("(\\.?" + + token.type.replace(".", "\\.").replace("rparen", ".paren") + .replace(/\b(?:end)\b/, "(?:start|begin|end)") + .replace(/-close\b/, "-(close|open)") + + ")+"); + } + var valueIndex = position.column - iterator.getCurrentTokenColumn() - 2; + var value = token.value; + while (true) { + while (valueIndex >= 0) { + var chr = value.charAt(valueIndex); + if (chr == openBracket) { + depth -= 1; + if (depth == 0) { + return { row: iterator.getCurrentTokenRow(), + column: valueIndex + iterator.getCurrentTokenColumn() }; + } + } + else if (chr == bracket) { + depth += 1; + } + valueIndex -= 1; + } + do { + token = iterator.stepBackward(); + } while (token && !typeRe.test(token.type)); + if (token == null) + break; + value = token.value; + valueIndex = value.length - 1; + } + return null; + }; + this.$findClosingBracket = function (bracket, position, typeRe) { + var closingBracket = this.$brackets[bracket]; + var depth = 1; + var iterator = new TokenIterator(this, position.row, position.column); + var token = iterator.getCurrentToken(); + if (!token) + token = iterator.stepForward(); + if (!token) + return; + if (!typeRe) { + typeRe = new RegExp("(\\.?" + + token.type.replace(".", "\\.").replace("lparen", ".paren") + .replace(/\b(?:start|begin)\b/, "(?:start|begin|end)") + .replace(/-open\b/, "-(close|open)") + + ")+"); + } + var valueIndex = position.column - iterator.getCurrentTokenColumn(); + while (true) { + var value = token.value; + var valueLength = value.length; + while (valueIndex < valueLength) { + var chr = value.charAt(valueIndex); + if (chr == closingBracket) { + depth -= 1; + if (depth == 0) { + return { row: iterator.getCurrentTokenRow(), + column: valueIndex + iterator.getCurrentTokenColumn() }; + } + } + else if (chr == bracket) { + depth += 1; + } + valueIndex += 1; + } + do { + token = iterator.stepForward(); + } while (token && !typeRe.test(token.type)); + if (token == null) + break; + valueIndex = 0; + } + return null; + }; + this.getMatchingTags = function (pos) { + var iterator = new TokenIterator(this, pos.row, pos.column); + var token = this.$findTagName(iterator); + if (!token) + return; + var prevToken = iterator.stepBackward(); + if (prevToken.value === '<') { + return this.$findClosingTag(iterator, token); + } + else { + return this.$findOpeningTag(iterator, token); + } + }; + this.$findTagName = function (iterator) { + var token = iterator.getCurrentToken(); + var found = false; + var backward = false; + if (token && token.type.indexOf('tag-name') === -1) { + do { + if (backward) + token = iterator.stepBackward(); + else + token = iterator.stepForward(); + if (token) { + if (token.value === "/>") { + backward = true; + } + else if (token.type.indexOf('tag-name') !== -1) { + found = true; + } + } + } while (token && !found); + } + return token; + }; + this.$findClosingTag = function (iterator, token) { + var prevToken; + var currentTag = token.value; + var tag = token.value; + var depth = 0; + var openTagStart = new Range(iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn(), iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() + 1); + token = iterator.stepForward(); + var openTagName = new Range(iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn(), iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() + token.value.length); + var foundOpenTagEnd = false; + do { + prevToken = token; + token = iterator.stepForward(); + if (token) { + if (token.value === '>' && !foundOpenTagEnd) { + var openTagEnd = new Range(iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn(), iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() + 1); //Range for `>` + foundOpenTagEnd = true; + } + if (token.type.indexOf('tag-name') !== -1) { + currentTag = token.value; + if (tag === currentTag) { + if (prevToken.value === '<') { + depth++; + } + else if (prevToken.value === '') { + var closeTagEnd = new Range(iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn(), iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() + 1); //Range for > + } + else { + return; + } + } + } + } + } + else if (tag === currentTag && token.value === '/>') { // self-closing tag + depth--; + if (depth < 0) { //found self-closing tag end + var closeTagStart = new Range(iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn(), iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() + 2); + var closeTagName = closeTagStart; + var closeTagEnd = closeTagName; + var openTagEnd = new Range(openTagName.end.row, openTagName.end.column, openTagName.end.row, openTagName.end.column + 1); + } + } + } + } while (token && depth >= 0); + if (openTagStart && openTagEnd && closeTagStart && closeTagEnd && openTagName && closeTagName) { + return { + openTag: new Range(openTagStart.start.row, openTagStart.start.column, openTagEnd.end.row, openTagEnd.end.column), + closeTag: new Range(closeTagStart.start.row, closeTagStart.start.column, closeTagEnd.end.row, closeTagEnd.end.column), + openTagName: openTagName, + closeTagName: closeTagName + }; + } + }; + this.$findOpeningTag = function (iterator, token) { + var prevToken = iterator.getCurrentToken(); + var tag = token.value; + var depth = 0; + var startRow = iterator.getCurrentTokenRow(); + var startColumn = iterator.getCurrentTokenColumn(); + var endColumn = startColumn + 2; + var closeTagStart = new Range(startRow, startColumn, startRow, endColumn); //Range for ") + return; + var closeTagEnd = new Range(iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn(), iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() + 1); //Range for > + iterator.stepBackward(); + iterator.stepBackward(); + do { + token = prevToken; + startRow = iterator.getCurrentTokenRow(); + startColumn = iterator.getCurrentTokenColumn(); + endColumn = startColumn + token.value.length; + prevToken = iterator.stepBackward(); + if (token) { + if (token.type.indexOf('tag-name') !== -1) { + if (tag === token.value) { + if (prevToken.value === '<') { + depth++; + if (depth > 0) { //found opening tag + var openTagName = new Range(startRow, startColumn, startRow, endColumn); + var openTagStart = new Range(iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn(), iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() + 1); //Range for < + do { + token = iterator.stepForward(); + } while (token && token.value !== '>'); + var openTagEnd = new Range(iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn(), iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() + 1); //Range for > + } + } + else if (prevToken.value === '') { // self-closing tag + var stepCount = 0; + var tmpToken = prevToken; + while (tmpToken) { + if (tmpToken.type.indexOf('tag-name') !== -1 && tmpToken.value === tag) { + depth--; + break; + } + else if (tmpToken.value === '<') { + break; + } + tmpToken = iterator.stepBackward(); + stepCount++; + } + for (var i = 0; i < stepCount; i++) { + iterator.stepForward(); + } + } + } + } while (prevToken && depth <= 0); + if (openTagStart && openTagEnd && closeTagStart && closeTagEnd && openTagName && closeTagName) { + return { + openTag: new Range(openTagStart.start.row, openTagStart.start.column, openTagEnd.end.row, openTagEnd.end.column), + closeTag: new Range(closeTagStart.start.row, closeTagStart.start.column, closeTagEnd.end.row, closeTagEnd.end.column), + openTagName: openTagName, + closeTagName: closeTagName + }; + } + }; +} +exports.BracketMatch = BracketMatch; + +}); + +ace.define("ace/edit_session",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/bidihandler","ace/config","ace/lib/event_emitter","ace/selection","ace/mode/text","ace/range","ace/document","ace/background_tokenizer","ace/search_highlight","ace/undomanager","ace/edit_session/folding","ace/edit_session/bracket_match"], function(require, exports, module){"use strict"; +var oop = require("./lib/oop"); +var lang = require("./lib/lang"); +var BidiHandler = require("./bidihandler").BidiHandler; +var config = require("./config"); +var EventEmitter = require("./lib/event_emitter").EventEmitter; +var Selection = require("./selection").Selection; +var TextMode = require("./mode/text").Mode; +var Range = require("./range").Range; +var Document = require("./document").Document; +var BackgroundTokenizer = require("./background_tokenizer").BackgroundTokenizer; +var SearchHighlight = require("./search_highlight").SearchHighlight; +var UndoManager = require("./undomanager").UndoManager; +var EditSession = /** @class */ (function () { + function EditSession(text, mode) { + this.$breakpoints = []; + this.$decorations = []; + this.$frontMarkers = {}; + this.$backMarkers = {}; + this.$markerId = 1; + this.$undoSelect = true; + this.$foldData = []; + this.id = "session" + (++EditSession.$uid); + this.$foldData.toString = function () { + return this.join("\n"); + }; + this.bgTokenizer = new BackgroundTokenizer((new TextMode()).getTokenizer(), this); + var _self = this; + this.bgTokenizer.on("update", function (e) { + _self._signal("tokenizerUpdate", e); + }); + this.on("changeFold", this.onChangeFold.bind(this)); + this.$onChange = this.onChange.bind(this); + if (typeof text != "object" || !text.getLine) + text = new Document(text); + this.setDocument(text); + this.selection = new Selection(this); + this.$bidiHandler = new BidiHandler(this); + config.resetOptions(this); + this.setMode(mode); + config._signal("session", this); + this.destroyed = false; + } + EditSession.prototype.setDocument = function (doc) { + if (this.doc) + this.doc.off("change", this.$onChange); + this.doc = doc; + doc.on("change", this.$onChange, true); + this.bgTokenizer.setDocument(this.getDocument()); + this.resetCaches(); + }; + EditSession.prototype.getDocument = function () { + return this.doc; + }; + EditSession.prototype.$resetRowCache = function (docRow) { + if (!docRow) { + this.$docRowCache = []; + this.$screenRowCache = []; + return; + } + var l = this.$docRowCache.length; + var i = this.$getRowCacheIndex(this.$docRowCache, docRow) + 1; + if (l > i) { + this.$docRowCache.splice(i, l); + this.$screenRowCache.splice(i, l); + } + }; + EditSession.prototype.$getRowCacheIndex = function (cacheArray, val) { + var low = 0; + var hi = cacheArray.length - 1; + while (low <= hi) { + var mid = (low + hi) >> 1; + var c = cacheArray[mid]; + if (val > c) + low = mid + 1; + else if (val < c) + hi = mid - 1; + else + return mid; + } + return low - 1; + }; + EditSession.prototype.resetCaches = function () { + this.$modified = true; + this.$wrapData = []; + this.$rowLengthCache = []; + this.$resetRowCache(0); + if (!this.destroyed) + this.bgTokenizer.start(0); + }; + EditSession.prototype.onChangeFold = function (e) { + var fold = e.data; + this.$resetRowCache(fold.start.row); + }; + EditSession.prototype.onChange = function (delta) { + this.$modified = true; + this.$bidiHandler.onChange(delta); + this.$resetRowCache(delta.start.row); + var removedFolds = this.$updateInternalDataOnChange(delta); + if (!this.$fromUndo && this.$undoManager) { + if (removedFolds && removedFolds.length) { + this.$undoManager.add({ + action: "removeFolds", + folds: removedFolds + }, this.mergeUndoDeltas); + this.mergeUndoDeltas = true; + } + this.$undoManager.add(delta, this.mergeUndoDeltas); + this.mergeUndoDeltas = true; + this.$informUndoManager.schedule(); + } + this.bgTokenizer.$updateOnChange(delta); + this._signal("change", delta); + }; + EditSession.prototype.setValue = function (text) { + this.doc.setValue(text); + this.selection.moveTo(0, 0); + this.$resetRowCache(0); + this.setUndoManager(this.$undoManager); + this.getUndoManager().reset(); + }; + EditSession.fromJSON = function (session) { + session = JSON.parse(session); + var undoManager = new UndoManager(); + undoManager.$undoStack = session.history.undo; + undoManager.$redoStack = session.history.redo; + undoManager.mark = session.history.mark; + undoManager.$rev = session.history.rev; + var editSession = new EditSession(session.value); + session.folds.forEach(function (fold) { + editSession.addFold("...", Range.fromPoints(fold.start, fold.end)); + }); + editSession.setAnnotations(session.annotations); + editSession.setBreakpoints(session.breakpoints); + editSession.setMode(session.mode); + editSession.setScrollLeft(session.scrollLeft); + editSession.setScrollTop(session.scrollTop); + editSession.setUndoManager(undoManager); + editSession.selection.fromJSON(session.selection); + return editSession; + }; + EditSession.prototype.toJSON = function () { + return { + annotations: this.$annotations, + breakpoints: this.$breakpoints, + folds: this.getAllFolds().map(function (fold) { + return fold.range; + }), + history: this.getUndoManager(), + mode: this.$mode.$id, + scrollLeft: this.$scrollLeft, + scrollTop: this.$scrollTop, + selection: this.selection.toJSON(), + value: this.doc.getValue() + }; + }; + EditSession.prototype.toString = function () { + return this.doc.getValue(); + }; + EditSession.prototype.getSelection = function () { + return this.selection; + }; + EditSession.prototype.getState = function (row) { + return this.bgTokenizer.getState(row); + }; + EditSession.prototype.getTokens = function (row) { + return this.bgTokenizer.getTokens(row); + }; + EditSession.prototype.getTokenAt = function (row, column) { + var tokens = this.bgTokenizer.getTokens(row); + var token, c = 0; + if (column == null) { + var i = tokens.length - 1; + c = this.getLine(row).length; + } + else { + for (var i = 0; i < tokens.length; i++) { + c += tokens[i].value.length; + if (c >= column) + break; + } + } + token = tokens[i]; + if (!token) + return null; + token.index = i; + token.start = c - token.value.length; + return token; + }; + EditSession.prototype.setUndoManager = function (undoManager) { + this.$undoManager = undoManager; + if (this.$informUndoManager) + this.$informUndoManager.cancel(); + if (undoManager) { + var self = this; + undoManager.addSession(this); + this.$syncInformUndoManager = function () { + self.$informUndoManager.cancel(); + self.mergeUndoDeltas = false; + }; + this.$informUndoManager = lang.delayedCall(this.$syncInformUndoManager); + } + else { + this.$syncInformUndoManager = function () { }; + } + }; + EditSession.prototype.markUndoGroup = function () { + if (this.$syncInformUndoManager) + this.$syncInformUndoManager(); + }; + EditSession.prototype.getUndoManager = function () { + return this.$undoManager || this.$defaultUndoManager; + }; + EditSession.prototype.getTabString = function () { + if (this.getUseSoftTabs()) { + return lang.stringRepeat(" ", this.getTabSize()); + } + else { + return "\t"; + } + }; + EditSession.prototype.setUseSoftTabs = function (val) { + this.setOption("useSoftTabs", val); + }; + EditSession.prototype.getUseSoftTabs = function () { + return this.$useSoftTabs && !this.$mode.$indentWithTabs; + }; + EditSession.prototype.setTabSize = function (tabSize) { + this.setOption("tabSize", tabSize); + }; + EditSession.prototype.getTabSize = function () { + return this.$tabSize; + }; + EditSession.prototype.isTabStop = function (position) { + return this.$useSoftTabs && (position.column % this.$tabSize === 0); + }; + EditSession.prototype.setNavigateWithinSoftTabs = function (navigateWithinSoftTabs) { + this.setOption("navigateWithinSoftTabs", navigateWithinSoftTabs); + }; + EditSession.prototype.getNavigateWithinSoftTabs = function () { + return this.$navigateWithinSoftTabs; + }; + EditSession.prototype.setOverwrite = function (overwrite) { + this.setOption("overwrite", overwrite); + }; + EditSession.prototype.getOverwrite = function () { + return this.$overwrite; + }; + EditSession.prototype.toggleOverwrite = function () { + this.setOverwrite(!this.$overwrite); + }; + EditSession.prototype.addGutterDecoration = function (row, className) { + if (!this.$decorations[row]) + this.$decorations[row] = ""; + this.$decorations[row] += " " + className; + this._signal("changeBreakpoint", {}); + }; + EditSession.prototype.removeGutterDecoration = function (row, className) { + this.$decorations[row] = (this.$decorations[row] || "").replace(" " + className, ""); + this._signal("changeBreakpoint", {}); + }; + EditSession.prototype.getBreakpoints = function () { + return this.$breakpoints; + }; + EditSession.prototype.setBreakpoints = function (rows) { + this.$breakpoints = []; + for (var i = 0; i < rows.length; i++) { + this.$breakpoints[rows[i]] = "ace_breakpoint"; + } + this._signal("changeBreakpoint", {}); + }; + EditSession.prototype.clearBreakpoints = function () { + this.$breakpoints = []; + this._signal("changeBreakpoint", {}); + }; + EditSession.prototype.setBreakpoint = function (row, className) { + if (className === undefined) + className = "ace_breakpoint"; + if (className) + this.$breakpoints[row] = className; + else + delete this.$breakpoints[row]; + this._signal("changeBreakpoint", {}); + }; + EditSession.prototype.clearBreakpoint = function (row) { + delete this.$breakpoints[row]; + this._signal("changeBreakpoint", {}); + }; + EditSession.prototype.addMarker = function (range, clazz, type, inFront) { + var id = this.$markerId++; + var marker = { + range: range, + type: type || "line", + renderer: typeof type == "function" ? type : null, + clazz: clazz, + inFront: !!inFront, + id: id + }; + if (inFront) { + this.$frontMarkers[id] = marker; + this._signal("changeFrontMarker"); + } + else { + this.$backMarkers[id] = marker; + this._signal("changeBackMarker"); + } + return id; + }; + EditSession.prototype.addDynamicMarker = function (marker, inFront) { + if (!marker.update) + return; + var id = this.$markerId++; + marker.id = id; + marker.inFront = !!inFront; + if (inFront) { + this.$frontMarkers[id] = marker; + this._signal("changeFrontMarker"); + } + else { + this.$backMarkers[id] = marker; + this._signal("changeBackMarker"); + } + return marker; + }; + EditSession.prototype.removeMarker = function (markerId) { + var marker = this.$frontMarkers[markerId] || this.$backMarkers[markerId]; + if (!marker) + return; + var markers = marker.inFront ? this.$frontMarkers : this.$backMarkers; + delete (markers[markerId]); + this._signal(marker.inFront ? "changeFrontMarker" : "changeBackMarker"); + }; + EditSession.prototype.getMarkers = function (inFront) { + return inFront ? this.$frontMarkers : this.$backMarkers; + }; + EditSession.prototype.highlight = function (re) { + if (!this.$searchHighlight) { + var highlight = new SearchHighlight(null, "ace_selected-word", "text"); + this.$searchHighlight = this.addDynamicMarker(highlight); + } + this.$searchHighlight.setRegexp(re); + }; + EditSession.prototype.highlightLines = function (startRow, endRow, clazz, inFront) { + if (typeof endRow != "number") { + clazz = endRow; + endRow = startRow; + } + if (!clazz) + clazz = "ace_step"; + var range = new Range(startRow, 0, endRow, Infinity); + range.id = this.addMarker(range, clazz, "fullLine", inFront); + return range; + }; + EditSession.prototype.setAnnotations = function (annotations) { + this.$annotations = annotations; + this._signal("changeAnnotation", {}); + }; + EditSession.prototype.getAnnotations = function () { + return this.$annotations || []; + }; + EditSession.prototype.clearAnnotations = function () { + this.setAnnotations([]); + }; + EditSession.prototype.$detectNewLine = function (text) { + var match = text.match(/^.*?(\r?\n)/m); + if (match) { + this.$autoNewLine = match[1]; + } + else { + this.$autoNewLine = "\n"; + } + }; + EditSession.prototype.getWordRange = function (row, column) { + var line = this.getLine(row); + var inToken = false; + if (column > 0) + inToken = !!line.charAt(column - 1).match(this.tokenRe); + if (!inToken) + inToken = !!line.charAt(column).match(this.tokenRe); + if (inToken) + var re = this.tokenRe; + else if (/^\s+$/.test(line.slice(column - 1, column + 1))) + var re = /\s/; + else + var re = this.nonTokenRe; + var start = column; + if (start > 0) { + do { + start--; + } while (start >= 0 && line.charAt(start).match(re)); + start++; + } + var end = column; + while (end < line.length && line.charAt(end).match(re)) { + end++; + } + return new Range(row, start, row, end); + }; + EditSession.prototype.getAWordRange = function (row, column) { + var wordRange = this.getWordRange(row, column); + var line = this.getLine(wordRange.end.row); + while (line.charAt(wordRange.end.column).match(/[ \t]/)) { + wordRange.end.column += 1; + } + return wordRange; + }; + EditSession.prototype.setNewLineMode = function (newLineMode) { + this.doc.setNewLineMode(newLineMode); + }; + EditSession.prototype.getNewLineMode = function () { + return this.doc.getNewLineMode(); + }; + EditSession.prototype.setUseWorker = function (useWorker) { this.setOption("useWorker", useWorker); }; + EditSession.prototype.getUseWorker = function () { return this.$useWorker; }; + EditSession.prototype.onReloadTokenizer = function (e) { + var rows = e.data; + this.bgTokenizer.start(rows.first); + this._signal("tokenizerUpdate", e); + }; + EditSession.prototype.setMode = function (mode, cb) { + if (mode && typeof mode === "object") { + if (mode.getTokenizer) + return this.$onChangeMode(mode); + var options = mode; + var path = options.path; + } + else { + path = mode || "ace/mode/text"; + } + if (!this.$modes["ace/mode/text"]) + this.$modes["ace/mode/text"] = new TextMode(); + if (this.$modes[path] && !options) { + this.$onChangeMode(this.$modes[path]); + cb && cb(); + return; + } + this.$modeId = path; + config.loadModule(["mode", path], function (m) { + if (this.$modeId !== path) + return cb && cb(); + if (this.$modes[path] && !options) { + this.$onChangeMode(this.$modes[path]); + } + else if (m && m.Mode) { + m = new m.Mode(options); + if (!options) { + this.$modes[path] = m; + m.$id = path; + } + this.$onChangeMode(m); + } + cb && cb(); + }.bind(this)); + if (!this.$mode) + this.$onChangeMode(this.$modes["ace/mode/text"], true); + }; + EditSession.prototype.$onChangeMode = function (mode, $isPlaceholder) { + if (!$isPlaceholder) + this.$modeId = mode.$id; + if (this.$mode === mode) + return; + var oldMode = this.$mode; + this.$mode = mode; + this.$stopWorker(); + if (this.$useWorker) + this.$startWorker(); + var tokenizer = mode.getTokenizer(); + if (tokenizer.on !== undefined) { + var onReloadTokenizer = this.onReloadTokenizer.bind(this); + tokenizer.on("update", onReloadTokenizer); + } + this.bgTokenizer.setTokenizer(tokenizer); + this.bgTokenizer.setDocument(this.getDocument()); + this.tokenRe = mode.tokenRe; + this.nonTokenRe = mode.nonTokenRe; + if (!$isPlaceholder) { + if (mode.attachToSession) + mode.attachToSession(this); + this.$options.wrapMethod.set.call(this, this.$wrapMethod); + this.$setFolding(mode.foldingRules); + this.bgTokenizer.start(0); + this._emit("changeMode", { oldMode: oldMode, mode: mode }); + } + }; + EditSession.prototype.$stopWorker = function () { + if (this.$worker) { + this.$worker.terminate(); + this.$worker = null; + } + }; + EditSession.prototype.$startWorker = function () { + try { + this.$worker = this.$mode.createWorker(this); + } + catch (e) { + config.warn("Could not load worker", e); + this.$worker = null; + } + }; + EditSession.prototype.getMode = function () { + return this.$mode; + }; + EditSession.prototype.setScrollTop = function (scrollTop) { + if (this.$scrollTop === scrollTop || isNaN(scrollTop)) + return; + this.$scrollTop = scrollTop; + this._signal("changeScrollTop", scrollTop); + }; + EditSession.prototype.getScrollTop = function () { + return this.$scrollTop; + }; + EditSession.prototype.setScrollLeft = function (scrollLeft) { + if (this.$scrollLeft === scrollLeft || isNaN(scrollLeft)) + return; + this.$scrollLeft = scrollLeft; + this._signal("changeScrollLeft", scrollLeft); + }; + EditSession.prototype.getScrollLeft = function () { + return this.$scrollLeft; + }; + EditSession.prototype.getScreenWidth = function () { + this.$computeWidth(); + if (this.lineWidgets) + return Math.max(this.getLineWidgetMaxWidth(), this.screenWidth); + return this.screenWidth; + }; + EditSession.prototype.getLineWidgetMaxWidth = function () { + if (this.lineWidgetsWidth != null) + return this.lineWidgetsWidth; + var width = 0; + this.lineWidgets.forEach(function (w) { + if (w && w.screenWidth > width) + width = w.screenWidth; + }); + return this.lineWidgetWidth = width; + }; + EditSession.prototype.$computeWidth = function (force) { + if (this.$modified || force) { + this.$modified = false; + if (this.$useWrapMode) + return this.screenWidth = this.$wrapLimit; + var lines = this.doc.getAllLines(); + var cache = this.$rowLengthCache; + var longestScreenLine = 0; + var foldIndex = 0; + var foldLine = this.$foldData[foldIndex]; + var foldStart = foldLine ? foldLine.start.row : Infinity; + var len = lines.length; + for (var i = 0; i < len; i++) { + if (i > foldStart) { + i = foldLine.end.row + 1; + if (i >= len) + break; + foldLine = this.$foldData[foldIndex++]; + foldStart = foldLine ? foldLine.start.row : Infinity; + } + if (cache[i] == null) + cache[i] = this.$getStringScreenWidth(lines[i])[0]; + if (cache[i] > longestScreenLine) + longestScreenLine = cache[i]; + } + this.screenWidth = longestScreenLine; + } + }; + EditSession.prototype.getLine = function (row) { + return this.doc.getLine(row); + }; + EditSession.prototype.getLines = function (firstRow, lastRow) { + return this.doc.getLines(firstRow, lastRow); + }; + EditSession.prototype.getLength = function () { + return this.doc.getLength(); + }; + EditSession.prototype.getTextRange = function (range) { + return this.doc.getTextRange(range || this.selection.getRange()); + }; + EditSession.prototype.insert = function (position, text) { + return this.doc.insert(position, text); + }; + EditSession.prototype.remove = function (range) { + return this.doc.remove(range); + }; + EditSession.prototype.removeFullLines = function (firstRow, lastRow) { + return this.doc.removeFullLines(firstRow, lastRow); + }; + EditSession.prototype.undoChanges = function (deltas, dontSelect) { + if (!deltas.length) + return; + this.$fromUndo = true; + for (var i = deltas.length - 1; i != -1; i--) { + var delta = deltas[i]; + if (delta.action == "insert" || delta.action == "remove") { + this.doc.revertDelta(delta); + } + else if (delta.folds) { + this.addFolds(delta.folds); + } + } + if (!dontSelect && this.$undoSelect) { + if (deltas.selectionBefore) + this.selection.fromJSON(deltas.selectionBefore); + else + this.selection.setRange(this.$getUndoSelection(deltas, true)); + } + this.$fromUndo = false; + }; + EditSession.prototype.redoChanges = function (deltas, dontSelect) { + if (!deltas.length) + return; + this.$fromUndo = true; + for (var i = 0; i < deltas.length; i++) { + var delta = deltas[i]; + if (delta.action == "insert" || delta.action == "remove") { + this.doc.$safeApplyDelta(delta); + } + } + if (!dontSelect && this.$undoSelect) { + if (deltas.selectionAfter) + this.selection.fromJSON(deltas.selectionAfter); + else + this.selection.setRange(this.$getUndoSelection(deltas, false)); + } + this.$fromUndo = false; + }; + EditSession.prototype.setUndoSelect = function (enable) { + this.$undoSelect = enable; + }; + EditSession.prototype.$getUndoSelection = function (deltas, isUndo) { + function isInsert(delta) { + return isUndo ? delta.action !== "insert" : delta.action === "insert"; + } + var range, point; + for (var i = 0; i < deltas.length; i++) { + var delta = deltas[i]; + if (!delta.start) + continue; // skip folds + if (!range) { + if (isInsert(delta)) { + range = Range.fromPoints(delta.start, delta.end); + } + else { + range = Range.fromPoints(delta.start, delta.start); + } + continue; + } + if (isInsert(delta)) { + point = delta.start; + if (range.compare(point.row, point.column) == -1) { + range.setStart(point); + } + point = delta.end; + if (range.compare(point.row, point.column) == 1) { + range.setEnd(point); + } + } + else { + point = delta.start; + if (range.compare(point.row, point.column) == -1) { + range = Range.fromPoints(delta.start, delta.start); + } + } + } + return range; + }; + EditSession.prototype.replace = function (range, text) { + return this.doc.replace(range, text); + }; + EditSession.prototype.moveText = function (fromRange, toPosition, copy) { + var text = this.getTextRange(fromRange); + var folds = this.getFoldsInRange(fromRange); + var toRange = Range.fromPoints(toPosition, toPosition); + if (!copy) { + this.remove(fromRange); + var rowDiff = fromRange.start.row - fromRange.end.row; + var collDiff = rowDiff ? -fromRange.end.column : fromRange.start.column - fromRange.end.column; + if (collDiff) { + if (toRange.start.row == fromRange.end.row && toRange.start.column > fromRange.end.column) + toRange.start.column += collDiff; + if (toRange.end.row == fromRange.end.row && toRange.end.column > fromRange.end.column) + toRange.end.column += collDiff; + } + if (rowDiff && toRange.start.row >= fromRange.end.row) { + toRange.start.row += rowDiff; + toRange.end.row += rowDiff; + } + } + toRange.end = this.insert(toRange.start, text); + if (folds.length) { + var oldStart = fromRange.start; + var newStart = toRange.start; + var rowDiff = newStart.row - oldStart.row; + var collDiff = newStart.column - oldStart.column; + this.addFolds(folds.map(function (x) { + x = x.clone(); + if (x.start.row == oldStart.row) + x.start.column += collDiff; + if (x.end.row == oldStart.row) + x.end.column += collDiff; + x.start.row += rowDiff; + x.end.row += rowDiff; + return x; + })); + } + return toRange; + }; + EditSession.prototype.indentRows = function (startRow, endRow, indentString) { + indentString = indentString.replace(/\t/g, this.getTabString()); + for (var row = startRow; row <= endRow; row++) + this.doc.insertInLine({ row: row, column: 0 }, indentString); + }; + EditSession.prototype.outdentRows = function (range) { + var rowRange = range.collapseRows(); + var deleteRange = new Range(0, 0, 0, 0); + var size = this.getTabSize(); + for (var i = rowRange.start.row; i <= rowRange.end.row; ++i) { + var line = this.getLine(i); + deleteRange.start.row = i; + deleteRange.end.row = i; + for (var j = 0; j < size; ++j) + if (line.charAt(j) != ' ') + break; + if (j < size && line.charAt(j) == '\t') { + deleteRange.start.column = j; + deleteRange.end.column = j + 1; + } + else { + deleteRange.start.column = 0; + deleteRange.end.column = j; + } + this.remove(deleteRange); + } + }; + EditSession.prototype.$moveLines = function (firstRow, lastRow, dir) { + firstRow = this.getRowFoldStart(firstRow); + lastRow = this.getRowFoldEnd(lastRow); + if (dir < 0) { + var row = this.getRowFoldStart(firstRow + dir); + if (row < 0) + return 0; + var diff = row - firstRow; + } + else if (dir > 0) { + var row = this.getRowFoldEnd(lastRow + dir); + if (row > this.doc.getLength() - 1) + return 0; + var diff = row - lastRow; + } + else { + firstRow = this.$clipRowToDocument(firstRow); + lastRow = this.$clipRowToDocument(lastRow); + var diff = lastRow - firstRow + 1; + } + var range = new Range(firstRow, 0, lastRow, Number.MAX_VALUE); + var folds = this.getFoldsInRange(range).map(function (x) { + x = x.clone(); + x.start.row += diff; + x.end.row += diff; + return x; + }); + var lines = dir == 0 + ? this.doc.getLines(firstRow, lastRow) + : this.doc.removeFullLines(firstRow, lastRow); + this.doc.insertFullLines(firstRow + diff, lines); + folds.length && this.addFolds(folds); + return diff; + }; + EditSession.prototype.moveLinesUp = function (firstRow, lastRow) { + return this.$moveLines(firstRow, lastRow, -1); + }; + EditSession.prototype.moveLinesDown = function (firstRow, lastRow) { + return this.$moveLines(firstRow, lastRow, 1); + }; + EditSession.prototype.duplicateLines = function (firstRow, lastRow) { + return this.$moveLines(firstRow, lastRow, 0); + }; + EditSession.prototype.$clipRowToDocument = function (row) { + return Math.max(0, Math.min(row, this.doc.getLength() - 1)); + }; + EditSession.prototype.$clipColumnToRow = function (row, column) { + if (column < 0) + return 0; + return Math.min(this.doc.getLine(row).length, column); + }; + EditSession.prototype.$clipPositionToDocument = function (row, column) { + column = Math.max(0, column); + if (row < 0) { + row = 0; + column = 0; + } + else { + var len = this.doc.getLength(); + if (row >= len) { + row = len - 1; + column = this.doc.getLine(len - 1).length; + } + else { + column = Math.min(this.doc.getLine(row).length, column); + } + } + return { + row: row, + column: column + }; + }; + EditSession.prototype.$clipRangeToDocument = function (range) { + if (range.start.row < 0) { + range.start.row = 0; + range.start.column = 0; + } + else { + range.start.column = this.$clipColumnToRow(range.start.row, range.start.column); + } + var len = this.doc.getLength() - 1; + if (range.end.row > len) { + range.end.row = len; + range.end.column = this.doc.getLine(len).length; + } + else { + range.end.column = this.$clipColumnToRow(range.end.row, range.end.column); + } + return range; + }; + EditSession.prototype.setUseWrapMode = function (useWrapMode) { + if (useWrapMode != this.$useWrapMode) { + this.$useWrapMode = useWrapMode; + this.$modified = true; + this.$resetRowCache(0); + if (useWrapMode) { + var len = this.getLength(); + this.$wrapData = Array(len); + this.$updateWrapData(0, len - 1); + } + this._signal("changeWrapMode"); + } + }; + EditSession.prototype.getUseWrapMode = function () { + return this.$useWrapMode; + }; + EditSession.prototype.setWrapLimitRange = function (min, max) { + if (this.$wrapLimitRange.min !== min || this.$wrapLimitRange.max !== max) { + this.$wrapLimitRange = { min: min, max: max }; + this.$modified = true; + this.$bidiHandler.markAsDirty(); + if (this.$useWrapMode) + this._signal("changeWrapMode"); + } + }; + EditSession.prototype.adjustWrapLimit = function (desiredLimit, $printMargin) { + var limits = this.$wrapLimitRange; + if (limits.max < 0) + limits = { min: $printMargin, max: $printMargin }; + var wrapLimit = this.$constrainWrapLimit(desiredLimit, limits.min, limits.max); + if (wrapLimit != this.$wrapLimit && wrapLimit > 1) { + this.$wrapLimit = wrapLimit; + this.$modified = true; + if (this.$useWrapMode) { + this.$updateWrapData(0, this.getLength() - 1); + this.$resetRowCache(0); + this._signal("changeWrapLimit"); + } + return true; + } + return false; + }; + EditSession.prototype.$constrainWrapLimit = function (wrapLimit, min, max) { + if (min) + wrapLimit = Math.max(min, wrapLimit); + if (max) + wrapLimit = Math.min(max, wrapLimit); + return wrapLimit; + }; + EditSession.prototype.getWrapLimit = function () { + return this.$wrapLimit; + }; + EditSession.prototype.setWrapLimit = function (limit) { + this.setWrapLimitRange(limit, limit); + }; + EditSession.prototype.getWrapLimitRange = function () { + return { + min: this.$wrapLimitRange.min, + max: this.$wrapLimitRange.max + }; + }; + EditSession.prototype.$updateInternalDataOnChange = function (delta) { + var useWrapMode = this.$useWrapMode; + var action = delta.action; + var start = delta.start; + var end = delta.end; + var firstRow = start.row; + var lastRow = end.row; + var len = lastRow - firstRow; + var removedFolds = null; + this.$updating = true; + if (len != 0) { + if (action === "remove") { + this[useWrapMode ? "$wrapData" : "$rowLengthCache"].splice(firstRow, len); + var foldLines = this.$foldData; + removedFolds = this.getFoldsInRange(delta); + this.removeFolds(removedFolds); + var foldLine = this.getFoldLine(end.row); + var idx = 0; + if (foldLine) { + foldLine.addRemoveChars(end.row, end.column, start.column - end.column); + foldLine.shiftRow(-len); + var foldLineBefore = this.getFoldLine(firstRow); + if (foldLineBefore && foldLineBefore !== foldLine) { + foldLineBefore.merge(foldLine); + foldLine = foldLineBefore; + } + idx = foldLines.indexOf(foldLine) + 1; + } + for (idx; idx < foldLines.length; idx++) { + var foldLine = foldLines[idx]; + if (foldLine.start.row >= end.row) { + foldLine.shiftRow(-len); + } + } + lastRow = firstRow; + } + else { + var args = Array(len); + args.unshift(firstRow, 0); + var arr = useWrapMode ? this.$wrapData : this.$rowLengthCache; + arr.splice.apply(arr, args); + var foldLines = this.$foldData; + var foldLine = this.getFoldLine(firstRow); + var idx = 0; + if (foldLine) { + var cmp = foldLine.range.compareInside(start.row, start.column); + if (cmp == 0) { + foldLine = foldLine.split(start.row, start.column); + if (foldLine) { + foldLine.shiftRow(len); + foldLine.addRemoveChars(lastRow, 0, end.column - start.column); + } + } + else + if (cmp == -1) { + foldLine.addRemoveChars(firstRow, 0, end.column - start.column); + foldLine.shiftRow(len); + } + idx = foldLines.indexOf(foldLine) + 1; + } + for (idx; idx < foldLines.length; idx++) { + var foldLine = foldLines[idx]; + if (foldLine.start.row >= firstRow) { + foldLine.shiftRow(len); + } + } + } + } + else { + len = Math.abs(delta.start.column - delta.end.column); + if (action === "remove") { + removedFolds = this.getFoldsInRange(delta); + this.removeFolds(removedFolds); + len = -len; + } + var foldLine = this.getFoldLine(firstRow); + if (foldLine) { + foldLine.addRemoveChars(firstRow, start.column, len); + } + } + if (useWrapMode && this.$wrapData.length != this.doc.getLength()) { + console.error("doc.getLength() and $wrapData.length have to be the same!"); + } + this.$updating = false; + if (useWrapMode) + this.$updateWrapData(firstRow, lastRow); + else + this.$updateRowLengthCache(firstRow, lastRow); + return removedFolds; + }; + EditSession.prototype.$updateRowLengthCache = function (firstRow, lastRow, b) { + this.$rowLengthCache[firstRow] = null; + this.$rowLengthCache[lastRow] = null; + }; + EditSession.prototype.$updateWrapData = function (firstRow, lastRow) { + var lines = this.doc.getAllLines(); + var tabSize = this.getTabSize(); + var wrapData = this.$wrapData; + var wrapLimit = this.$wrapLimit; + var tokens; + var foldLine; + var row = firstRow; + lastRow = Math.min(lastRow, lines.length - 1); + while (row <= lastRow) { + foldLine = this.getFoldLine(row, foldLine); + if (!foldLine) { + tokens = this.$getDisplayTokens(lines[row]); + wrapData[row] = this.$computeWrapSplits(tokens, wrapLimit, tabSize); + row++; + } + else { + tokens = []; + foldLine.walk(function (placeholder, row, column, lastColumn) { + var walkTokens; + if (placeholder != null) { + walkTokens = this.$getDisplayTokens(placeholder, tokens.length); + walkTokens[0] = PLACEHOLDER_START; + for (var i = 1; i < walkTokens.length; i++) { + walkTokens[i] = PLACEHOLDER_BODY; + } + } + else { + walkTokens = this.$getDisplayTokens(lines[row].substring(lastColumn, column), tokens.length); + } + tokens = tokens.concat(walkTokens); + }.bind(this), foldLine.end.row, lines[foldLine.end.row].length + 1); + wrapData[foldLine.start.row] = this.$computeWrapSplits(tokens, wrapLimit, tabSize); + row = foldLine.end.row + 1; + } + } + }; + EditSession.prototype.$computeWrapSplits = function (tokens, wrapLimit, tabSize) { + if (tokens.length == 0) { + return []; + } + var splits = []; + var displayLength = tokens.length; + var lastSplit = 0, lastDocSplit = 0; + var isCode = this.$wrapAsCode; + var indentedSoftWrap = this.$indentedSoftWrap; + var maxIndent = wrapLimit <= Math.max(2 * tabSize, 8) + || indentedSoftWrap === false ? 0 : Math.floor(wrapLimit / 2); + function getWrapIndent() { + var indentation = 0; + if (maxIndent === 0) + return indentation; + if (indentedSoftWrap) { + for (var i = 0; i < tokens.length; i++) { + var token = tokens[i]; + if (token == SPACE) + indentation += 1; + else if (token == TAB) + indentation += tabSize; + else if (token == TAB_SPACE) + continue; + else + break; + } + } + if (isCode && indentedSoftWrap !== false) + indentation += tabSize; + return Math.min(indentation, maxIndent); + } + function addSplit(screenPos) { + var len = screenPos - lastSplit; + for (var i = lastSplit; i < screenPos; i++) { + var ch = tokens[i]; + if (ch === 12 || ch === 2) + len -= 1; + } + if (!splits.length) { + indent = getWrapIndent(); + splits.indent = indent; + } + lastDocSplit += len; + splits.push(lastDocSplit); + lastSplit = screenPos; + } + var indent = 0; + while (displayLength - lastSplit > wrapLimit - indent) { + var split = lastSplit + wrapLimit - indent; + if (tokens[split - 1] >= SPACE && tokens[split] >= SPACE) { + addSplit(split); + continue; + } + if (tokens[split] == PLACEHOLDER_START || tokens[split] == PLACEHOLDER_BODY) { + for (split; split != lastSplit - 1; split--) { + if (tokens[split] == PLACEHOLDER_START) { + break; + } + } + if (split > lastSplit) { + addSplit(split); + continue; + } + split = lastSplit + wrapLimit; + for (split; split < tokens.length; split++) { + if (tokens[split] != PLACEHOLDER_BODY) { + break; + } + } + if (split == tokens.length) { + break; // Breaks the while-loop. + } + addSplit(split); + continue; + } + var minSplit = Math.max(split - (wrapLimit - (wrapLimit >> 2)), lastSplit - 1); + while (split > minSplit && tokens[split] < PLACEHOLDER_START) { + split--; + } + if (isCode) { + while (split > minSplit && tokens[split] < PLACEHOLDER_START) { + split--; + } + while (split > minSplit && tokens[split] == PUNCTUATION) { + split--; + } + } + else { + while (split > minSplit && tokens[split] < SPACE) { + split--; + } + } + if (split > minSplit) { + addSplit(++split); + continue; + } + split = lastSplit + wrapLimit; + if (tokens[split] == CHAR_EXT) + split--; + addSplit(split - indent); + } + return splits; + }; + EditSession.prototype.$getDisplayTokens = function (str, offset) { + var arr = []; + var tabSize; + offset = offset || 0; + for (var i = 0; i < str.length; i++) { + var c = str.charCodeAt(i); + if (c == 9) { + tabSize = this.getScreenTabSize(arr.length + offset); + arr.push(TAB); + for (var n = 1; n < tabSize; n++) { + arr.push(TAB_SPACE); + } + } + else if (c == 32) { + arr.push(SPACE); + } + else if ((c > 39 && c < 48) || (c > 57 && c < 64)) { + arr.push(PUNCTUATION); + } + else if (c >= 0x1100 && isFullWidth(c)) { + arr.push(CHAR, CHAR_EXT); + } + else { + arr.push(CHAR); + } + } + return arr; + }; + EditSession.prototype.$getStringScreenWidth = function (str, maxScreenColumn, screenColumn) { + if (maxScreenColumn == 0) + return [0, 0]; + if (maxScreenColumn == null) + maxScreenColumn = Infinity; + screenColumn = screenColumn || 0; + var c, column; + for (column = 0; column < str.length; column++) { + c = str.charCodeAt(column); + if (c == 9) { + screenColumn += this.getScreenTabSize(screenColumn); + } + else if (c >= 0x1100 && isFullWidth(c)) { + screenColumn += 2; + } + else { + screenColumn += 1; + } + if (screenColumn > maxScreenColumn) { + break; + } + } + return [screenColumn, column]; + }; + EditSession.prototype.getRowLength = function (row) { + var h = 1; + if (this.lineWidgets) + h += this.lineWidgets[row] && this.lineWidgets[row].rowCount || 0; + if (!this.$useWrapMode || !this.$wrapData[row]) + return h; + else + return this.$wrapData[row].length + h; + }; + EditSession.prototype.getRowLineCount = function (row) { + if (!this.$useWrapMode || !this.$wrapData[row]) { + return 1; + } + else { + return this.$wrapData[row].length + 1; + } + }; + EditSession.prototype.getRowWrapIndent = function (screenRow) { + if (this.$useWrapMode) { + var pos = this.screenToDocumentPosition(screenRow, Number.MAX_VALUE); + var splits = this.$wrapData[pos.row]; + return splits.length && splits[0] < pos.column ? splits.indent : 0; + } + else { + return 0; + } + }; + EditSession.prototype.getScreenLastRowColumn = function (screenRow) { + var pos = this.screenToDocumentPosition(screenRow, Number.MAX_VALUE); + return this.documentToScreenColumn(pos.row, pos.column); + }; + EditSession.prototype.getDocumentLastRowColumn = function (docRow, docColumn) { + var screenRow = this.documentToScreenRow(docRow, docColumn); + return this.getScreenLastRowColumn(screenRow); + }; + EditSession.prototype.getDocumentLastRowColumnPosition = function (docRow, docColumn) { + var screenRow = this.documentToScreenRow(docRow, docColumn); + return this.screenToDocumentPosition(screenRow, Number.MAX_VALUE / 10); + }; + EditSession.prototype.getRowSplitData = function (row) { + if (!this.$useWrapMode) { + return undefined; + } + else { + return this.$wrapData[row]; + } + }; + EditSession.prototype.getScreenTabSize = function (screenColumn) { + return this.$tabSize - (screenColumn % this.$tabSize | 0); + }; + EditSession.prototype.screenToDocumentRow = function (screenRow, screenColumn) { + return this.screenToDocumentPosition(screenRow, screenColumn).row; + }; + EditSession.prototype.screenToDocumentColumn = function (screenRow, screenColumn) { + return this.screenToDocumentPosition(screenRow, screenColumn).column; + }; + EditSession.prototype.screenToDocumentPosition = function (screenRow, screenColumn, offsetX) { + if (screenRow < 0) + return { row: 0, column: 0 }; + var line; + var docRow = 0; + var docColumn = 0; + var column; + var row = 0; + var rowLength = 0; + var rowCache = this.$screenRowCache; + var i = this.$getRowCacheIndex(rowCache, screenRow); + var l = rowCache.length; + if (l && i >= 0) { + var row = rowCache[i]; + var docRow = this.$docRowCache[i]; + var doCache = screenRow > rowCache[l - 1]; + } + else { + var doCache = !l; + } + var maxRow = this.getLength() - 1; + var foldLine = this.getNextFoldLine(docRow); + var foldStart = foldLine ? foldLine.start.row : Infinity; + while (row <= screenRow) { + rowLength = this.getRowLength(docRow); + if (row + rowLength > screenRow || docRow >= maxRow) { + break; + } + else { + row += rowLength; + docRow++; + if (docRow > foldStart) { + docRow = foldLine.end.row + 1; + foldLine = this.getNextFoldLine(docRow, foldLine); + foldStart = foldLine ? foldLine.start.row : Infinity; + } + } + if (doCache) { + this.$docRowCache.push(docRow); + this.$screenRowCache.push(row); + } + } + if (foldLine && foldLine.start.row <= docRow) { + line = this.getFoldDisplayLine(foldLine); + docRow = foldLine.start.row; + } + else if (row + rowLength <= screenRow || docRow > maxRow) { + return { + row: maxRow, + column: this.getLine(maxRow).length + }; + } + else { + line = this.getLine(docRow); + foldLine = null; + } + var wrapIndent = 0, splitIndex = Math.floor(screenRow - row); + if (this.$useWrapMode) { + var splits = this.$wrapData[docRow]; + if (splits) { + column = splits[splitIndex]; + if (splitIndex > 0 && splits.length) { + wrapIndent = splits.indent; + docColumn = splits[splitIndex - 1] || splits[splits.length - 1]; + line = line.substring(docColumn); + } + } + } + if (offsetX !== undefined && this.$bidiHandler.isBidiRow(row + splitIndex, docRow, splitIndex)) + screenColumn = this.$bidiHandler.offsetToCol(offsetX); + docColumn += this.$getStringScreenWidth(line, screenColumn - wrapIndent)[1]; + if (this.$useWrapMode && docColumn >= column) + docColumn = column - 1; + if (foldLine) + return foldLine.idxToPosition(docColumn); + return { row: docRow, column: docColumn }; + }; + EditSession.prototype.documentToScreenPosition = function (docRow, docColumn) { + if (typeof docColumn === "undefined") + var pos = this.$clipPositionToDocument(docRow.row, docRow.column); + else + pos = this.$clipPositionToDocument(docRow, docColumn); + docRow = pos.row; + docColumn = pos.column; + var screenRow = 0; + var foldStartRow = null; + var fold = null; + fold = this.getFoldAt(docRow, docColumn, 1); + if (fold) { + docRow = fold.start.row; + docColumn = fold.start.column; + } + var rowEnd, row = 0; + var rowCache = this.$docRowCache; + var i = this.$getRowCacheIndex(rowCache, docRow); + var l = rowCache.length; + if (l && i >= 0) { + var row = rowCache[i]; + var screenRow = this.$screenRowCache[i]; + var doCache = docRow > rowCache[l - 1]; + } + else { + var doCache = !l; + } + var foldLine = this.getNextFoldLine(row); + var foldStart = foldLine ? foldLine.start.row : Infinity; + while (row < docRow) { + if (row >= foldStart) { + rowEnd = foldLine.end.row + 1; + if (rowEnd > docRow) + break; + foldLine = this.getNextFoldLine(rowEnd, foldLine); + foldStart = foldLine ? foldLine.start.row : Infinity; + } + else { + rowEnd = row + 1; + } + screenRow += this.getRowLength(row); + row = rowEnd; + if (doCache) { + this.$docRowCache.push(row); + this.$screenRowCache.push(screenRow); + } + } + var textLine = ""; + if (foldLine && row >= foldStart) { + textLine = this.getFoldDisplayLine(foldLine, docRow, docColumn); + foldStartRow = foldLine.start.row; + } + else { + textLine = this.getLine(docRow).substring(0, docColumn); + foldStartRow = docRow; + } + var wrapIndent = 0; + if (this.$useWrapMode) { + var wrapRow = this.$wrapData[foldStartRow]; + if (wrapRow) { + var screenRowOffset = 0; + while (textLine.length >= wrapRow[screenRowOffset]) { + screenRow++; + screenRowOffset++; + } + textLine = textLine.substring(wrapRow[screenRowOffset - 1] || 0, textLine.length); + wrapIndent = screenRowOffset > 0 ? wrapRow.indent : 0; + } + } + if (this.lineWidgets && this.lineWidgets[row] && this.lineWidgets[row].rowsAbove) + screenRow += this.lineWidgets[row].rowsAbove; + return { + row: screenRow, + column: wrapIndent + this.$getStringScreenWidth(textLine)[0] + }; + }; + EditSession.prototype.documentToScreenColumn = function (row, docColumn) { + return this.documentToScreenPosition(row, docColumn).column; + }; + EditSession.prototype.documentToScreenRow = function (docRow, docColumn) { + return this.documentToScreenPosition(docRow, docColumn).row; + }; + EditSession.prototype.getScreenLength = function () { + var screenRows = 0; + var fold = null; + if (!this.$useWrapMode) { + screenRows = this.getLength(); + var foldData = this.$foldData; + for (var i = 0; i < foldData.length; i++) { + fold = foldData[i]; + screenRows -= fold.end.row - fold.start.row; + } + } + else { + var lastRow = this.$wrapData.length; + var row = 0, i = 0; + var fold = this.$foldData[i++]; + var foldStart = fold ? fold.start.row : Infinity; + while (row < lastRow) { + var splits = this.$wrapData[row]; + screenRows += splits ? splits.length + 1 : 1; + row++; + if (row > foldStart) { + row = fold.end.row + 1; + fold = this.$foldData[i++]; + foldStart = fold ? fold.start.row : Infinity; + } + } + } + if (this.lineWidgets) + screenRows += this.$getWidgetScreenLength(); + return screenRows; + }; + EditSession.prototype.$setFontMetrics = function (fm) { + if (!this.$enableVarChar) + return; + this.$getStringScreenWidth = function (str, maxScreenColumn, screenColumn) { + if (maxScreenColumn === 0) + return [0, 0]; + if (!maxScreenColumn) + maxScreenColumn = Infinity; + screenColumn = screenColumn || 0; + var c, column; + for (column = 0; column < str.length; column++) { + c = str.charAt(column); + if (c === "\t") { + screenColumn += this.getScreenTabSize(screenColumn); + } + else { + screenColumn += fm.getCharacterWidth(c); + } + if (screenColumn > maxScreenColumn) { + break; + } + } + return [screenColumn, column]; + }; + }; + EditSession.prototype.destroy = function () { + if (!this.destroyed) { + this.bgTokenizer.setDocument(null); + this.bgTokenizer.cleanup(); + this.destroyed = true; + } + this.$stopWorker(); + this.removeAllListeners(); + if (this.doc) { + this.doc.off("change", this.$onChange); + } + this.selection.detach(); + }; + return EditSession; +}()); +EditSession.$uid = 0; +EditSession.prototype.$modes = config.$modes; +EditSession.prototype.getValue = EditSession.prototype.toString; +EditSession.prototype.$defaultUndoManager = { + undo: function () { }, + redo: function () { }, + hasUndo: function () { }, + hasRedo: function () { }, + reset: function () { }, + add: function () { }, + addSelection: function () { }, + startNewGroup: function () { }, + addSession: function () { } +}; +EditSession.prototype.$overwrite = false; +EditSession.prototype.$mode = null; +EditSession.prototype.$modeId = null; +EditSession.prototype.$scrollTop = 0; +EditSession.prototype.$scrollLeft = 0; +EditSession.prototype.$wrapLimit = 80; +EditSession.prototype.$useWrapMode = false; +EditSession.prototype.$wrapLimitRange = { + min: null, + max: null +}; +EditSession.prototype.lineWidgets = null; +EditSession.prototype.isFullWidth = isFullWidth; +oop.implement(EditSession.prototype, EventEmitter); +var CHAR = 1, CHAR_EXT = 2, PLACEHOLDER_START = 3, PLACEHOLDER_BODY = 4, PUNCTUATION = 9, SPACE = 10, TAB = 11, TAB_SPACE = 12; +function isFullWidth(c) { + if (c < 0x1100) + return false; + return c >= 0x1100 && c <= 0x115F || + c >= 0x11A3 && c <= 0x11A7 || + c >= 0x11FA && c <= 0x11FF || + c >= 0x2329 && c <= 0x232A || + c >= 0x2E80 && c <= 0x2E99 || + c >= 0x2E9B && c <= 0x2EF3 || + c >= 0x2F00 && c <= 0x2FD5 || + c >= 0x2FF0 && c <= 0x2FFB || + c >= 0x3000 && c <= 0x303E || + c >= 0x3041 && c <= 0x3096 || + c >= 0x3099 && c <= 0x30FF || + c >= 0x3105 && c <= 0x312D || + c >= 0x3131 && c <= 0x318E || + c >= 0x3190 && c <= 0x31BA || + c >= 0x31C0 && c <= 0x31E3 || + c >= 0x31F0 && c <= 0x321E || + c >= 0x3220 && c <= 0x3247 || + c >= 0x3250 && c <= 0x32FE || + c >= 0x3300 && c <= 0x4DBF || + c >= 0x4E00 && c <= 0xA48C || + c >= 0xA490 && c <= 0xA4C6 || + c >= 0xA960 && c <= 0xA97C || + c >= 0xAC00 && c <= 0xD7A3 || + c >= 0xD7B0 && c <= 0xD7C6 || + c >= 0xD7CB && c <= 0xD7FB || + c >= 0xF900 && c <= 0xFAFF || + c >= 0xFE10 && c <= 0xFE19 || + c >= 0xFE30 && c <= 0xFE52 || + c >= 0xFE54 && c <= 0xFE66 || + c >= 0xFE68 && c <= 0xFE6B || + c >= 0xFF01 && c <= 0xFF60 || + c >= 0xFFE0 && c <= 0xFFE6; +} +require("./edit_session/folding").Folding.call(EditSession.prototype); +require("./edit_session/bracket_match").BracketMatch.call(EditSession.prototype); +config.defineOptions(EditSession.prototype, "session", { + wrap: { + set: function (value) { + if (!value || value == "off") + value = false; + else if (value == "free") + value = true; + else if (value == "printMargin") + value = -1; + else if (typeof value == "string") + value = parseInt(value, 10) || false; + if (this.$wrap == value) + return; + this.$wrap = value; + if (!value) { + this.setUseWrapMode(false); + } + else { + var col = typeof value == "number" ? value : null; + this.setWrapLimitRange(col, col); + this.setUseWrapMode(true); + } + }, + get: function () { + if (this.getUseWrapMode()) { + if (this.$wrap == -1) + return "printMargin"; + if (!this.getWrapLimitRange().min) + return "free"; + return this.$wrap; + } + return "off"; + }, + handlesSet: true + }, + wrapMethod: { + set: function (val) { + val = val == "auto" + ? this.$mode.type != "text" + : val != "text"; + if (val != this.$wrapAsCode) { + this.$wrapAsCode = val; + if (this.$useWrapMode) { + this.$useWrapMode = false; + this.setUseWrapMode(true); + } + } + }, + initialValue: "auto" + }, + indentedSoftWrap: { + set: function () { + if (this.$useWrapMode) { + this.$useWrapMode = false; + this.setUseWrapMode(true); + } + }, + initialValue: true + }, + firstLineNumber: { + set: function () { this._signal("changeBreakpoint"); }, + initialValue: 1 + }, + useWorker: { + set: function (useWorker) { + this.$useWorker = useWorker; + this.$stopWorker(); + if (useWorker) + this.$startWorker(); + }, + initialValue: true + }, + useSoftTabs: { initialValue: true }, + tabSize: { + set: function (tabSize) { + tabSize = parseInt(tabSize); + if (tabSize > 0 && this.$tabSize !== tabSize) { + this.$modified = true; + this.$rowLengthCache = []; + this.$tabSize = tabSize; + this._signal("changeTabSize"); + } + }, + initialValue: 4, + handlesSet: true + }, + navigateWithinSoftTabs: { initialValue: false }, + foldStyle: { + set: function (val) { this.setFoldStyle(val); }, + handlesSet: true + }, + overwrite: { + set: function (val) { this._signal("changeOverwrite"); }, + initialValue: false + }, + newLineMode: { + set: function (val) { this.doc.setNewLineMode(val); }, + get: function () { return this.doc.getNewLineMode(); }, + handlesSet: true + }, + mode: { + set: function (val) { this.setMode(val); }, + get: function () { return this.$modeId; }, + handlesSet: true + } +}); +exports.EditSession = EditSession; + +}); + +ace.define("ace/search",["require","exports","module","ace/lib/lang","ace/lib/oop","ace/range"], function(require, exports, module){"use strict"; +var lang = require("./lib/lang"); +var oop = require("./lib/oop"); +var Range = require("./range").Range; +var Search = /** @class */ (function () { + function Search() { + this.$options = {}; + } + Search.prototype.set = function (options) { + oop.mixin(this.$options, options); + return this; + }; + Search.prototype.getOptions = function () { + return lang.copyObject(this.$options); + }; + Search.prototype.setOptions = function (options) { + this.$options = options; + }; + Search.prototype.find = function (session) { + var options = this.$options; + var iterator = this.$matchIterator(session, options); + if (!iterator) + return false; + var firstRange = null; + iterator.forEach(function (sr, sc, er, ec) { + firstRange = new Range(sr, sc, er, ec); + if (sc == ec && options.start && options.start.start + && options.skipCurrent != false && firstRange.isEqual(options.start)) { + firstRange = null; + return false; + } + return true; + }); + return firstRange; + }; + Search.prototype.findAll = function (session) { + var options = this.$options; + if (!options.needle) + return []; + this.$assembleRegExp(options); + var range = options.range; + var lines = range + ? session.getLines(range.start.row, range.end.row) + : session.doc.getAllLines(); + var ranges = []; + var re = options.re; + if (options.$isMultiLine) { + var len = re.length; + var maxRow = lines.length - len; + var prevRange; + outer: for (var row = re.offset || 0; row <= maxRow; row++) { + for (var j = 0; j < len; j++) + if (lines[row + j].search(re[j]) == -1) + continue outer; + var startLine = lines[row]; + var line = lines[row + len - 1]; + var startIndex = startLine.length - startLine.match(re[0])[0].length; + var endIndex = line.match(re[len - 1])[0].length; + if (prevRange && prevRange.end.row === row && + prevRange.end.column > startIndex) { + continue; + } + ranges.push(prevRange = new Range(row, startIndex, row + len - 1, endIndex)); + if (len > 2) + row = row + len - 2; + } + } + else { + for (var i = 0; i < lines.length; i++) { + var matches = lang.getMatchOffsets(lines[i], re); + for (var j = 0; j < matches.length; j++) { + var match = matches[j]; + ranges.push(new Range(i, match.offset, i, match.offset + match.length)); + } + } + } + if (range) { + var startColumn = range.start.column; + var endColumn = range.end.column; + var i = 0, j = ranges.length - 1; + while (i < j && ranges[i].start.column < startColumn && ranges[i].start.row == 0) + i++; + var endRow = range.end.row - range.start.row; + while (i < j && ranges[j].end.column > endColumn && ranges[j].end.row == endRow) + j--; + ranges = ranges.slice(i, j + 1); + for (i = 0, j = ranges.length; i < j; i++) { + ranges[i].start.row += range.start.row; + ranges[i].end.row += range.start.row; + } + } + return ranges; + }; + Search.prototype.replace = function (input, replacement) { + var options = this.$options; + var re = this.$assembleRegExp(options); + if (options.$isMultiLine) + return replacement; + if (!re) + return; + var match = re.exec(input); + if (!match || match[0].length != input.length) + return null; + replacement = input.replace(re, replacement); + if (options.preserveCase) { + replacement = replacement.split(""); + for (var i = Math.min(input.length, input.length); i--;) { + var ch = input[i]; + if (ch && ch.toLowerCase() != ch) + replacement[i] = replacement[i].toUpperCase(); + else + replacement[i] = replacement[i].toLowerCase(); + } + replacement = replacement.join(""); + } + return replacement; + }; + Search.prototype.$assembleRegExp = function (options, $disableFakeMultiline) { + if (options.needle instanceof RegExp) + return options.re = options.needle; + var needle = options.needle; + if (!options.needle) + return options.re = false; + if (!options.regExp) + needle = lang.escapeRegExp(needle); + var modifier = options.caseSensitive ? "gm" : "gmi"; + try { + new RegExp(needle, "u"); + options.$supportsUnicodeFlag = true; + modifier += "u"; + } + catch (e) { + options.$supportsUnicodeFlag = false; //left for backward compatibility with previous versions for cases like /ab\{2}/gu + } + if (options.wholeWord) + needle = addWordBoundary(needle, options); + options.$isMultiLine = !$disableFakeMultiline && /[\n\r]/.test(needle); + if (options.$isMultiLine) + return options.re = this.$assembleMultilineRegExp(needle, modifier); + try { + var re = new RegExp(needle, modifier); + } + catch (e) { + re = false; + } + return options.re = re; + }; + Search.prototype.$assembleMultilineRegExp = function (needle, modifier) { + var parts = needle.replace(/\r\n|\r|\n/g, "$\n^").split("\n"); + var re = []; + for (var i = 0; i < parts.length; i++) + try { + re.push(new RegExp(parts[i], modifier)); + } + catch (e) { + return false; + } + return re; + }; + Search.prototype.$matchIterator = function (session, options) { + var re = this.$assembleRegExp(options); + if (!re) + return false; + var backwards = options.backwards == true; + var skipCurrent = options.skipCurrent != false; + var supportsUnicodeFlag = re.unicode; + var range = options.range; + var start = options.start; + if (!start) + start = range ? range[backwards ? "end" : "start"] : session.selection.getRange(); + if (start.start) + start = start[skipCurrent != backwards ? "end" : "start"]; + var firstRow = range ? range.start.row : 0; + var lastRow = range ? range.end.row : session.getLength() - 1; + if (backwards) { + var forEach = function (callback) { + var row = start.row; + if (forEachInLine(row, start.column, callback)) + return; + for (row--; row >= firstRow; row--) + if (forEachInLine(row, Number.MAX_VALUE, callback)) + return; + if (options.wrap == false) + return; + for (row = lastRow, firstRow = start.row; row >= firstRow; row--) + if (forEachInLine(row, Number.MAX_VALUE, callback)) + return; + }; + } + else { + var forEach = function (callback) { + var row = start.row; + if (forEachInLine(row, start.column, callback)) + return; + for (row = row + 1; row <= lastRow; row++) + if (forEachInLine(row, 0, callback)) + return; + if (options.wrap == false) + return; + for (row = firstRow, lastRow = start.row; row <= lastRow; row++) + if (forEachInLine(row, 0, callback)) + return; + }; + } + if (options.$isMultiLine) { + var len = re.length; + var forEachInLine = function (row, offset, callback) { + var startRow = backwards ? row - len + 1 : row; + if (startRow < 0 || startRow + len > session.getLength()) + return; + var line = session.getLine(startRow); + var startIndex = line.search(re[0]); + if (!backwards && startIndex < offset || startIndex === -1) + return; + for (var i = 1; i < len; i++) { + line = session.getLine(startRow + i); + if (line.search(re[i]) == -1) + return; + } + var endIndex = line.match(re[len - 1])[0].length; + if (backwards && endIndex > offset) + return; + if (callback(startRow, startIndex, startRow + len - 1, endIndex)) + return true; + }; + } + else if (backwards) { + var forEachInLine = function (row, endIndex, callback) { + var line = session.getLine(row); + var matches = []; + var m, last = 0; + re.lastIndex = 0; + while ((m = re.exec(line))) { + var length = m[0].length; + last = m.index; + if (!length) { + if (last >= line.length) + break; + re.lastIndex = last += lang.skipEmptyMatch(line, last, supportsUnicodeFlag); + } + if (m.index + length > endIndex) + break; + matches.push(m.index, length); + } + for (var i = matches.length - 1; i >= 0; i -= 2) { + var column = matches[i - 1]; + var length = matches[i]; + if (callback(row, column, row, column + length)) + return true; + } + }; + } + else { + var forEachInLine = function (row, startIndex, callback) { + var line = session.getLine(row); + var last; + var m; + re.lastIndex = startIndex; + while ((m = re.exec(line))) { + var length = m[0].length; + last = m.index; + if (callback(row, last, row, last + length)) + return true; + if (!length) { + re.lastIndex = last += lang.skipEmptyMatch(line, last, supportsUnicodeFlag); + if (last >= line.length) + return false; + } + } + }; + } + return { forEach: forEach }; + }; + return Search; +}()); +function addWordBoundary(needle, options) { + var supportsLookbehind = lang.supportsLookbehind(); + function wordBoundary(c, firstChar) { + if (firstChar === void 0) { firstChar = true; } + var wordRegExp = supportsLookbehind && options.$supportsUnicodeFlag ? new RegExp("[\\p{L}\\p{N}_]", "u") : new RegExp("\\w"); + if (wordRegExp.test(c) || options.regExp) { + if (supportsLookbehind && options.$supportsUnicodeFlag) { + if (firstChar) + return "(?<=^|[^\\p{L}\\p{N}_])"; + return "(?=[^\\p{L}\\p{N}_]|$)"; + } + return "\\b"; + } + return ""; + } + var needleArray = Array.from(needle); + var firstChar = needleArray[0]; + var lastChar = needleArray[needleArray.length - 1]; + return wordBoundary(firstChar) + needle + wordBoundary(lastChar, false); +} +exports.Search = Search; + +}); + +ace.define("ace/keyboard/hash_handler",["require","exports","module","ace/lib/keys","ace/lib/useragent"], function(require, exports, module){"use strict"; +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + if (typeof b !== "function" && b !== null) + throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +var keyUtil = require("../lib/keys"); +var useragent = require("../lib/useragent"); +var KEY_MODS = keyUtil.KEY_MODS; +var MultiHashHandler = /** @class */ (function () { + function MultiHashHandler(config, platform) { + this.$init(config, platform, false); + } + MultiHashHandler.prototype.$init = function (config, platform, $singleCommand) { + this.platform = platform || (useragent.isMac ? "mac" : "win"); + this.commands = {}; + this.commandKeyBinding = {}; + this.addCommands(config); + this.$singleCommand = $singleCommand; + }; + MultiHashHandler.prototype.addCommand = function (command) { + if (this.commands[command.name]) + this.removeCommand(command); + this.commands[command.name] = command; + if (command.bindKey) + this._buildKeyHash(command); + }; + MultiHashHandler.prototype.removeCommand = function (command, keepCommand) { + var name = command && (typeof command === 'string' ? command : command.name); + command = this.commands[name]; + if (!keepCommand) + delete this.commands[name]; + var ckb = this.commandKeyBinding; + for (var keyId in ckb) { + var cmdGroup = ckb[keyId]; + if (cmdGroup == command) { + delete ckb[keyId]; + } + else if (Array.isArray(cmdGroup)) { + var i = cmdGroup.indexOf(command); + if (i != -1) { + cmdGroup.splice(i, 1); + if (cmdGroup.length == 1) + ckb[keyId] = cmdGroup[0]; + } + } + } + }; + MultiHashHandler.prototype.bindKey = function (key, command, position) { + if (typeof key == "object" && key) { + if (position == undefined) + position = key.position; + key = key[this.platform]; + } + if (!key) + return; + if (typeof command == "function") + return this.addCommand({ exec: command, bindKey: key, name: command.name || key }); + key.split("|").forEach(function (keyPart) { + var chain = ""; + if (keyPart.indexOf(" ") != -1) { + var parts = keyPart.split(/\s+/); + keyPart = parts.pop(); + parts.forEach(function (keyPart) { + var binding = this.parseKeys(keyPart); + var id = KEY_MODS[binding.hashId] + binding.key; + chain += (chain ? " " : "") + id; + this._addCommandToBinding(chain, "chainKeys"); + }, this); + chain += " "; + } + var binding = this.parseKeys(keyPart); + var id = KEY_MODS[binding.hashId] + binding.key; + this._addCommandToBinding(chain + id, command, position); + }, this); + }; + MultiHashHandler.prototype._addCommandToBinding = function (keyId, command, position) { + var ckb = this.commandKeyBinding, i; + if (!command) { + delete ckb[keyId]; + } + else if (!ckb[keyId] || this.$singleCommand) { + ckb[keyId] = command; + } + else { + if (!Array.isArray(ckb[keyId])) { + ckb[keyId] = [ckb[keyId]]; + } + else if ((i = ckb[keyId].indexOf(command)) != -1) { + ckb[keyId].splice(i, 1); + } + if (typeof position != "number") { + position = getPosition(command); + } + var commands = ckb[keyId]; + for (i = 0; i < commands.length; i++) { + var other = commands[i]; + var otherPos = getPosition(other); + if (otherPos > position) + break; + } + commands.splice(i, 0, command); + } + }; + MultiHashHandler.prototype.addCommands = function (commands) { + commands && Object.keys(commands).forEach(function (name) { + var command = commands[name]; + if (!command) + return; + if (typeof command === "string") + return this.bindKey(command, name); + if (typeof command === "function") + command = { exec: command }; + if (typeof command !== "object") + return; + if (!command.name) + command.name = name; + this.addCommand(command); + }, this); + }; + MultiHashHandler.prototype.removeCommands = function (commands) { + Object.keys(commands).forEach(function (name) { + this.removeCommand(commands[name]); + }, this); + }; + MultiHashHandler.prototype.bindKeys = function (keyList) { + Object.keys(keyList).forEach(function (key) { + this.bindKey(key, keyList[key]); + }, this); + }; + MultiHashHandler.prototype._buildKeyHash = function (command) { + this.bindKey(command.bindKey, command); + }; + MultiHashHandler.prototype.parseKeys = function (keys) { + var parts = keys.toLowerCase().split(/[\-\+]([\-\+])?/).filter(function (x) { return x; }); + var key = parts.pop(); + var keyCode = keyUtil[key]; + if (keyUtil.FUNCTION_KEYS[keyCode]) + key = keyUtil.FUNCTION_KEYS[keyCode].toLowerCase(); + else if (!parts.length) + return { key: key, hashId: -1 }; + else if (parts.length == 1 && parts[0] == "shift") + return { key: key.toUpperCase(), hashId: -1 }; + var hashId = 0; + for (var i = parts.length; i--;) { + var modifier = keyUtil.KEY_MODS[parts[i]]; + if (modifier == null) { + if (typeof console != "undefined") + console.error("invalid modifier " + parts[i] + " in " + keys); + return false; + } + hashId |= modifier; + } + return { key: key, hashId: hashId }; + }; + MultiHashHandler.prototype.findKeyCommand = function (hashId, keyString) { + var key = KEY_MODS[hashId] + keyString; + return this.commandKeyBinding[key]; + }; + MultiHashHandler.prototype.handleKeyboard = function (data, hashId, keyString, keyCode) { + if (keyCode < 0) + return; + var key = KEY_MODS[hashId] + keyString; + var command = this.commandKeyBinding[key]; + if (data.$keyChain) { + data.$keyChain += " " + key; + command = this.commandKeyBinding[data.$keyChain] || command; + } + if (command) { + if (command == "chainKeys" || command[command.length - 1] == "chainKeys") { + data.$keyChain = data.$keyChain || key; + return { command: "null" }; + } + } + if (data.$keyChain) { + if ((!hashId || hashId == 4) && keyString.length == 1) + data.$keyChain = data.$keyChain.slice(0, -key.length - 1); // wait for input + else if (hashId == -1 || keyCode > 0) + data.$keyChain = ""; // reset keyChain + } + return { command: command }; + }; + MultiHashHandler.prototype.getStatusText = function (editor, data) { + return data.$keyChain || ""; + }; + return MultiHashHandler; +}()); +function getPosition(command) { + return typeof command == "object" && command.bindKey + && command.bindKey.position + || (command.isDefault ? -100 : 0); +} +var HashHandler = /** @class */ (function (_super) { + __extends(HashHandler, _super); + function HashHandler(config, platform) { + var _this = _super.call(this, config, platform) || this; + _this.$singleCommand = true; + return _this; + } + return HashHandler; +}(MultiHashHandler)); +HashHandler.call = function (thisArg, config, platform) { + MultiHashHandler.prototype.$init.call(thisArg, config, platform, true); +}; +MultiHashHandler.call = function (thisArg, config, platform) { + MultiHashHandler.prototype.$init.call(thisArg, config, platform, false); +}; +exports.HashHandler = HashHandler; +exports.MultiHashHandler = MultiHashHandler; + +}); + +ace.define("ace/commands/command_manager",["require","exports","module","ace/lib/oop","ace/keyboard/hash_handler","ace/lib/event_emitter"], function(require, exports, module){"use strict"; +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + if (typeof b !== "function" && b !== null) + throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +var oop = require("../lib/oop"); +var MultiHashHandler = require("../keyboard/hash_handler").MultiHashHandler; +var EventEmitter = require("../lib/event_emitter").EventEmitter; +var CommandManager = /** @class */ (function (_super) { + __extends(CommandManager, _super); + function CommandManager(platform, commands) { + var _this = _super.call(this, commands, platform) || this; + _this.byName = _this.commands; + _this.setDefaultHandler("exec", function (e) { + if (!e.args) { + return e.command.exec(e.editor, {}, e.event, true); + } + return e.command.exec(e.editor, e.args, e.event, false); + }); + return _this; + } + CommandManager.prototype.exec = function (command, editor, args) { + if (Array.isArray(command)) { + for (var i = command.length; i--;) { + if (this.exec(command[i], editor, args)) + return true; + } + return false; + } + if (typeof command === "string") + command = this.commands[command]; + if (!command) + return false; + if (editor && editor.$readOnly && !command.readOnly) + return false; + if (this.$checkCommandState != false && command.isAvailable && !command.isAvailable(editor)) + return false; + var e = { editor: editor, command: command, args: args }; + e.returnValue = this._emit("exec", e); + this._signal("afterExec", e); + return e.returnValue === false ? false : true; + }; + CommandManager.prototype.toggleRecording = function (editor) { + if (this.$inReplay) + return; + editor && editor._emit("changeStatus"); + if (this.recording) { + this.macro.pop(); + this.off("exec", this.$addCommandToMacro); + if (!this.macro.length) + this.macro = this.oldMacro; + return this.recording = false; + } + if (!this.$addCommandToMacro) { + this.$addCommandToMacro = function (e) { + this.macro.push([e.command, e.args]); + }.bind(this); + } + this.oldMacro = this.macro; + this.macro = []; + this.on("exec", this.$addCommandToMacro); + return this.recording = true; + }; + CommandManager.prototype.replay = function (editor) { + if (this.$inReplay || !this.macro) + return; + if (this.recording) + return this.toggleRecording(editor); + try { + this.$inReplay = true; + this.macro.forEach(function (x) { + if (typeof x == "string") + this.exec(x, editor); + else + this.exec(x[0], editor, x[1]); + }, this); + } + finally { + this.$inReplay = false; + } + }; + CommandManager.prototype.trimMacro = function (m) { + return m.map(function (x) { + if (typeof x[0] != "string") + x[0] = x[0].name; + if (!x[1]) + x = x[0]; + return x; + }); + }; + return CommandManager; +}(MultiHashHandler)); +oop.implement(CommandManager.prototype, EventEmitter); +exports.CommandManager = CommandManager; + +}); + +ace.define("ace/commands/default_commands",["require","exports","module","ace/lib/lang","ace/config","ace/range"], function(require, exports, module){"use strict"; +var lang = require("../lib/lang"); +var config = require("../config"); +var Range = require("../range").Range; +function bindKey(win, mac) { + return { win: win, mac: mac }; +} +exports.commands = [{ + name: "showSettingsMenu", + description: "Show settings menu", + bindKey: bindKey("Ctrl-,", "Command-,"), + exec: function (editor) { + config.loadModule("ace/ext/settings_menu", function (module) { + module.init(editor); + editor.showSettingsMenu(); + }); + }, + readOnly: true + }, { + name: "goToNextError", + description: "Go to next error", + bindKey: bindKey("Alt-E", "F4"), + exec: function (editor) { + config.loadModule("ace/ext/error_marker", function (module) { + module.showErrorMarker(editor, 1); + }); + }, + scrollIntoView: "animate", + readOnly: true + }, { + name: "goToPreviousError", + description: "Go to previous error", + bindKey: bindKey("Alt-Shift-E", "Shift-F4"), + exec: function (editor) { + config.loadModule("ace/ext/error_marker", function (module) { + module.showErrorMarker(editor, -1); + }); + }, + scrollIntoView: "animate", + readOnly: true + }, { + name: "selectall", + description: "Select all", + bindKey: bindKey("Ctrl-A", "Command-A"), + exec: function (editor) { editor.selectAll(); }, + readOnly: true + }, { + name: "centerselection", + description: "Center selection", + bindKey: bindKey(null, "Ctrl-L"), + exec: function (editor) { editor.centerSelection(); }, + readOnly: true + }, { + name: "gotoline", + description: "Go to line...", + bindKey: bindKey("Ctrl-L", "Command-L"), + exec: function (editor, line) { + if (typeof line === "number" && !isNaN(line)) + editor.gotoLine(line); + editor.prompt({ $type: "gotoLine" }); + }, + readOnly: true + }, { + name: "fold", + bindKey: bindKey("Alt-L|Ctrl-F1", "Command-Alt-L|Command-F1"), + exec: function (editor) { editor.session.toggleFold(false); }, + multiSelectAction: "forEach", + scrollIntoView: "center", + readOnly: true + }, { + name: "unfold", + bindKey: bindKey("Alt-Shift-L|Ctrl-Shift-F1", "Command-Alt-Shift-L|Command-Shift-F1"), + exec: function (editor) { editor.session.toggleFold(true); }, + multiSelectAction: "forEach", + scrollIntoView: "center", + readOnly: true + }, { + name: "toggleFoldWidget", + description: "Toggle fold widget", + bindKey: bindKey("F2", "F2"), + exec: function (editor) { editor.session.toggleFoldWidget(); }, + multiSelectAction: "forEach", + scrollIntoView: "center", + readOnly: true + }, { + name: "toggleParentFoldWidget", + description: "Toggle parent fold widget", + bindKey: bindKey("Alt-F2", "Alt-F2"), + exec: function (editor) { editor.session.toggleFoldWidget(true); }, + multiSelectAction: "forEach", + scrollIntoView: "center", + readOnly: true + }, { + name: "foldall", + description: "Fold all", + bindKey: bindKey(null, "Ctrl-Command-Option-0"), + exec: function (editor) { editor.session.foldAll(); }, + scrollIntoView: "center", + readOnly: true + }, { + name: "foldAllComments", + description: "Fold all comments", + bindKey: bindKey(null, "Ctrl-Command-Option-0"), + exec: function (editor) { editor.session.foldAllComments(); }, + scrollIntoView: "center", + readOnly: true + }, { + name: "foldOther", + description: "Fold other", + bindKey: bindKey("Alt-0", "Command-Option-0"), + exec: function (editor) { + editor.session.foldAll(); + editor.session.unfold(editor.selection.getAllRanges()); + }, + scrollIntoView: "center", + readOnly: true + }, { + name: "unfoldall", + description: "Unfold all", + bindKey: bindKey("Alt-Shift-0", "Command-Option-Shift-0"), + exec: function (editor) { editor.session.unfold(); }, + scrollIntoView: "center", + readOnly: true + }, { + name: "findnext", + description: "Find next", + bindKey: bindKey("Ctrl-K", "Command-G"), + exec: function (editor) { editor.findNext(); }, + multiSelectAction: "forEach", + scrollIntoView: "center", + readOnly: true + }, { + name: "findprevious", + description: "Find previous", + bindKey: bindKey("Ctrl-Shift-K", "Command-Shift-G"), + exec: function (editor) { editor.findPrevious(); }, + multiSelectAction: "forEach", + scrollIntoView: "center", + readOnly: true + }, { + name: "selectOrFindNext", + description: "Select or find next", + bindKey: bindKey("Alt-K", "Ctrl-G"), + exec: function (editor) { + if (editor.selection.isEmpty()) + editor.selection.selectWord(); + else + editor.findNext(); + }, + readOnly: true + }, { + name: "selectOrFindPrevious", + description: "Select or find previous", + bindKey: bindKey("Alt-Shift-K", "Ctrl-Shift-G"), + exec: function (editor) { + if (editor.selection.isEmpty()) + editor.selection.selectWord(); + else + editor.findPrevious(); + }, + readOnly: true + }, { + name: "find", + description: "Find", + bindKey: bindKey("Ctrl-F", "Command-F"), + exec: function (editor) { + config.loadModule("ace/ext/searchbox", function (e) { e.Search(editor); }); + }, + readOnly: true + }, { + name: "overwrite", + description: "Overwrite", + bindKey: "Insert", + exec: function (editor) { editor.toggleOverwrite(); }, + readOnly: true + }, { + name: "selecttostart", + description: "Select to start", + bindKey: bindKey("Ctrl-Shift-Home", "Command-Shift-Home|Command-Shift-Up"), + exec: function (editor) { editor.getSelection().selectFileStart(); }, + multiSelectAction: "forEach", + readOnly: true, + scrollIntoView: "animate", + aceCommandGroup: "fileJump" + }, { + name: "gotostart", + description: "Go to start", + bindKey: bindKey("Ctrl-Home", "Command-Home|Command-Up"), + exec: function (editor) { editor.navigateFileStart(); }, + multiSelectAction: "forEach", + readOnly: true, + scrollIntoView: "animate", + aceCommandGroup: "fileJump" + }, { + name: "selectup", + description: "Select up", + bindKey: bindKey("Shift-Up", "Shift-Up|Ctrl-Shift-P"), + exec: function (editor) { editor.getSelection().selectUp(); }, + multiSelectAction: "forEach", + scrollIntoView: "cursor", + readOnly: true + }, { + name: "golineup", + description: "Go line up", + bindKey: bindKey("Up", "Up|Ctrl-P"), + exec: function (editor, args) { editor.navigateUp(args.times); }, + multiSelectAction: "forEach", + scrollIntoView: "cursor", + readOnly: true + }, { + name: "selecttoend", + description: "Select to end", + bindKey: bindKey("Ctrl-Shift-End", "Command-Shift-End|Command-Shift-Down"), + exec: function (editor) { editor.getSelection().selectFileEnd(); }, + multiSelectAction: "forEach", + readOnly: true, + scrollIntoView: "animate", + aceCommandGroup: "fileJump" + }, { + name: "gotoend", + description: "Go to end", + bindKey: bindKey("Ctrl-End", "Command-End|Command-Down"), + exec: function (editor) { editor.navigateFileEnd(); }, + multiSelectAction: "forEach", + readOnly: true, + scrollIntoView: "animate", + aceCommandGroup: "fileJump" + }, { + name: "selectdown", + description: "Select down", + bindKey: bindKey("Shift-Down", "Shift-Down|Ctrl-Shift-N"), + exec: function (editor) { editor.getSelection().selectDown(); }, + multiSelectAction: "forEach", + scrollIntoView: "cursor", + readOnly: true + }, { + name: "golinedown", + description: "Go line down", + bindKey: bindKey("Down", "Down|Ctrl-N"), + exec: function (editor, args) { editor.navigateDown(args.times); }, + multiSelectAction: "forEach", + scrollIntoView: "cursor", + readOnly: true + }, { + name: "selectwordleft", + description: "Select word left", + bindKey: bindKey("Ctrl-Shift-Left", "Option-Shift-Left"), + exec: function (editor) { editor.getSelection().selectWordLeft(); }, + multiSelectAction: "forEach", + scrollIntoView: "cursor", + readOnly: true + }, { + name: "gotowordleft", + description: "Go to word left", + bindKey: bindKey("Ctrl-Left", "Option-Left"), + exec: function (editor) { editor.navigateWordLeft(); }, + multiSelectAction: "forEach", + scrollIntoView: "cursor", + readOnly: true + }, { + name: "selecttolinestart", + description: "Select to line start", + bindKey: bindKey("Alt-Shift-Left", "Command-Shift-Left|Ctrl-Shift-A"), + exec: function (editor) { editor.getSelection().selectLineStart(); }, + multiSelectAction: "forEach", + scrollIntoView: "cursor", + readOnly: true + }, { + name: "gotolinestart", + description: "Go to line start", + bindKey: bindKey("Alt-Left|Home", "Command-Left|Home|Ctrl-A"), + exec: function (editor) { editor.navigateLineStart(); }, + multiSelectAction: "forEach", + scrollIntoView: "cursor", + readOnly: true + }, { + name: "selectleft", + description: "Select left", + bindKey: bindKey("Shift-Left", "Shift-Left|Ctrl-Shift-B"), + exec: function (editor) { editor.getSelection().selectLeft(); }, + multiSelectAction: "forEach", + scrollIntoView: "cursor", + readOnly: true + }, { + name: "gotoleft", + description: "Go to left", + bindKey: bindKey("Left", "Left|Ctrl-B"), + exec: function (editor, args) { editor.navigateLeft(args.times); }, + multiSelectAction: "forEach", + scrollIntoView: "cursor", + readOnly: true + }, { + name: "selectwordright", + description: "Select word right", + bindKey: bindKey("Ctrl-Shift-Right", "Option-Shift-Right"), + exec: function (editor) { editor.getSelection().selectWordRight(); }, + multiSelectAction: "forEach", + scrollIntoView: "cursor", + readOnly: true + }, { + name: "gotowordright", + description: "Go to word right", + bindKey: bindKey("Ctrl-Right", "Option-Right"), + exec: function (editor) { editor.navigateWordRight(); }, + multiSelectAction: "forEach", + scrollIntoView: "cursor", + readOnly: true + }, { + name: "selecttolineend", + description: "Select to line end", + bindKey: bindKey("Alt-Shift-Right", "Command-Shift-Right|Shift-End|Ctrl-Shift-E"), + exec: function (editor) { editor.getSelection().selectLineEnd(); }, + multiSelectAction: "forEach", + scrollIntoView: "cursor", + readOnly: true + }, { + name: "gotolineend", + description: "Go to line end", + bindKey: bindKey("Alt-Right|End", "Command-Right|End|Ctrl-E"), + exec: function (editor) { editor.navigateLineEnd(); }, + multiSelectAction: "forEach", + scrollIntoView: "cursor", + readOnly: true + }, { + name: "selectright", + description: "Select right", + bindKey: bindKey("Shift-Right", "Shift-Right"), + exec: function (editor) { editor.getSelection().selectRight(); }, + multiSelectAction: "forEach", + scrollIntoView: "cursor", + readOnly: true + }, { + name: "gotoright", + description: "Go to right", + bindKey: bindKey("Right", "Right|Ctrl-F"), + exec: function (editor, args) { editor.navigateRight(args.times); }, + multiSelectAction: "forEach", + scrollIntoView: "cursor", + readOnly: true + }, { + name: "selectpagedown", + description: "Select page down", + bindKey: "Shift-PageDown", + exec: function (editor) { editor.selectPageDown(); }, + readOnly: true + }, { + name: "pagedown", + description: "Page down", + bindKey: bindKey(null, "Option-PageDown"), + exec: function (editor) { editor.scrollPageDown(); }, + readOnly: true + }, { + name: "gotopagedown", + description: "Go to page down", + bindKey: bindKey("PageDown", "PageDown|Ctrl-V"), + exec: function (editor) { editor.gotoPageDown(); }, + readOnly: true + }, { + name: "selectpageup", + description: "Select page up", + bindKey: "Shift-PageUp", + exec: function (editor) { editor.selectPageUp(); }, + readOnly: true + }, { + name: "pageup", + description: "Page up", + bindKey: bindKey(null, "Option-PageUp"), + exec: function (editor) { editor.scrollPageUp(); }, + readOnly: true + }, { + name: "gotopageup", + description: "Go to page up", + bindKey: "PageUp", + exec: function (editor) { editor.gotoPageUp(); }, + readOnly: true + }, { + name: "scrollup", + description: "Scroll up", + bindKey: bindKey("Ctrl-Up", null), + exec: function (e) { e.renderer.scrollBy(0, -2 * e.renderer.layerConfig.lineHeight); }, + readOnly: true + }, { + name: "scrolldown", + description: "Scroll down", + bindKey: bindKey("Ctrl-Down", null), + exec: function (e) { e.renderer.scrollBy(0, 2 * e.renderer.layerConfig.lineHeight); }, + readOnly: true + }, { + name: "selectlinestart", + description: "Select line start", + bindKey: "Shift-Home", + exec: function (editor) { editor.getSelection().selectLineStart(); }, + multiSelectAction: "forEach", + scrollIntoView: "cursor", + readOnly: true + }, { + name: "selectlineend", + description: "Select line end", + bindKey: "Shift-End", + exec: function (editor) { editor.getSelection().selectLineEnd(); }, + multiSelectAction: "forEach", + scrollIntoView: "cursor", + readOnly: true + }, { + name: "togglerecording", + description: "Toggle recording", + bindKey: bindKey("Ctrl-Alt-E", "Command-Option-E"), + exec: function (editor) { editor.commands.toggleRecording(editor); }, + readOnly: true + }, { + name: "replaymacro", + description: "Replay macro", + bindKey: bindKey("Ctrl-Shift-E", "Command-Shift-E"), + exec: function (editor) { editor.commands.replay(editor); }, + readOnly: true + }, { + name: "jumptomatching", + description: "Jump to matching", + bindKey: bindKey("Ctrl-\\|Ctrl-P", "Command-\\"), + exec: function (editor) { editor.jumpToMatching(); }, + multiSelectAction: "forEach", + scrollIntoView: "animate", + readOnly: true + }, { + name: "selecttomatching", + description: "Select to matching", + bindKey: bindKey("Ctrl-Shift-\\|Ctrl-Shift-P", "Command-Shift-\\"), + exec: function (editor) { editor.jumpToMatching(true); }, + multiSelectAction: "forEach", + scrollIntoView: "animate", + readOnly: true + }, { + name: "expandToMatching", + description: "Expand to matching", + bindKey: bindKey("Ctrl-Shift-M", "Ctrl-Shift-M"), + exec: function (editor) { editor.jumpToMatching(true, true); }, + multiSelectAction: "forEach", + scrollIntoView: "animate", + readOnly: true + }, { + name: "passKeysToBrowser", + description: "Pass keys to browser", + bindKey: bindKey(null, null), + exec: function () { }, + passEvent: true, + readOnly: true + }, { + name: "copy", + description: "Copy", + exec: function (editor) { + }, + readOnly: true + }, + { + name: "cut", + description: "Cut", + exec: function (editor) { + var cutLine = editor.$copyWithEmptySelection && editor.selection.isEmpty(); + var range = cutLine ? editor.selection.getLineRange() : editor.selection.getRange(); + editor._emit("cut", range); + if (!range.isEmpty()) + editor.session.remove(range); + editor.clearSelection(); + }, + scrollIntoView: "cursor", + multiSelectAction: "forEach" + }, { + name: "paste", + description: "Paste", + exec: function (editor, args) { + editor.$handlePaste(args); + }, + scrollIntoView: "cursor" + }, { + name: "removeline", + description: "Remove line", + bindKey: bindKey("Ctrl-D", "Command-D"), + exec: function (editor) { editor.removeLines(); }, + scrollIntoView: "cursor", + multiSelectAction: "forEachLine" + }, { + name: "duplicateSelection", + description: "Duplicate selection", + bindKey: bindKey("Ctrl-Shift-D", "Command-Shift-D"), + exec: function (editor) { editor.duplicateSelection(); }, + scrollIntoView: "cursor", + multiSelectAction: "forEach" + }, { + name: "sortlines", + description: "Sort lines", + bindKey: bindKey("Ctrl-Alt-S", "Command-Alt-S"), + exec: function (editor) { editor.sortLines(); }, + scrollIntoView: "selection", + multiSelectAction: "forEachLine" + }, { + name: "togglecomment", + description: "Toggle comment", + bindKey: bindKey("Ctrl-/", "Command-/"), + exec: function (editor) { editor.toggleCommentLines(); }, + multiSelectAction: "forEachLine", + scrollIntoView: "selectionPart" + }, { + name: "toggleBlockComment", + description: "Toggle block comment", + bindKey: bindKey("Ctrl-Shift-/", "Command-Shift-/"), + exec: function (editor) { editor.toggleBlockComment(); }, + multiSelectAction: "forEach", + scrollIntoView: "selectionPart" + }, { + name: "modifyNumberUp", + description: "Modify number up", + bindKey: bindKey("Ctrl-Shift-Up", "Alt-Shift-Up"), + exec: function (editor) { editor.modifyNumber(1); }, + scrollIntoView: "cursor", + multiSelectAction: "forEach" + }, { + name: "modifyNumberDown", + description: "Modify number down", + bindKey: bindKey("Ctrl-Shift-Down", "Alt-Shift-Down"), + exec: function (editor) { editor.modifyNumber(-1); }, + scrollIntoView: "cursor", + multiSelectAction: "forEach" + }, { + name: "replace", + description: "Replace", + bindKey: bindKey("Ctrl-H", "Command-Option-F"), + exec: function (editor) { + config.loadModule("ace/ext/searchbox", function (e) { e.Search(editor, true); }); + } + }, { + name: "undo", + description: "Undo", + bindKey: bindKey("Ctrl-Z", "Command-Z"), + exec: function (editor) { editor.undo(); } + }, { + name: "redo", + description: "Redo", + bindKey: bindKey("Ctrl-Shift-Z|Ctrl-Y", "Command-Shift-Z|Command-Y"), + exec: function (editor) { editor.redo(); } + }, { + name: "copylinesup", + description: "Copy lines up", + bindKey: bindKey("Alt-Shift-Up", "Command-Option-Up"), + exec: function (editor) { editor.copyLinesUp(); }, + scrollIntoView: "cursor" + }, { + name: "movelinesup", + description: "Move lines up", + bindKey: bindKey("Alt-Up", "Option-Up"), + exec: function (editor) { editor.moveLinesUp(); }, + scrollIntoView: "cursor" + }, { + name: "copylinesdown", + description: "Copy lines down", + bindKey: bindKey("Alt-Shift-Down", "Command-Option-Down"), + exec: function (editor) { editor.copyLinesDown(); }, + scrollIntoView: "cursor" + }, { + name: "movelinesdown", + description: "Move lines down", + bindKey: bindKey("Alt-Down", "Option-Down"), + exec: function (editor) { editor.moveLinesDown(); }, + scrollIntoView: "cursor" + }, { + name: "del", + description: "Delete", + bindKey: bindKey("Delete", "Delete|Ctrl-D|Shift-Delete"), + exec: function (editor) { editor.remove("right"); }, + multiSelectAction: "forEach", + scrollIntoView: "cursor" + }, { + name: "backspace", + description: "Backspace", + bindKey: bindKey("Shift-Backspace|Backspace", "Ctrl-Backspace|Shift-Backspace|Backspace|Ctrl-H"), + exec: function (editor) { editor.remove("left"); }, + multiSelectAction: "forEach", + scrollIntoView: "cursor" + }, { + name: "cut_or_delete", + description: "Cut or delete", + bindKey: bindKey("Shift-Delete", null), + exec: function (editor) { + if (editor.selection.isEmpty()) { + editor.remove("left"); + } + else { + return false; + } + }, + multiSelectAction: "forEach", + scrollIntoView: "cursor" + }, { + name: "removetolinestart", + description: "Remove to line start", + bindKey: bindKey("Alt-Backspace", "Command-Backspace"), + exec: function (editor) { editor.removeToLineStart(); }, + multiSelectAction: "forEach", + scrollIntoView: "cursor" + }, { + name: "removetolineend", + description: "Remove to line end", + bindKey: bindKey("Alt-Delete", "Ctrl-K|Command-Delete"), + exec: function (editor) { editor.removeToLineEnd(); }, + multiSelectAction: "forEach", + scrollIntoView: "cursor" + }, { + name: "removetolinestarthard", + description: "Remove to line start hard", + bindKey: bindKey("Ctrl-Shift-Backspace", null), + exec: function (editor) { + var range = editor.selection.getRange(); + range.start.column = 0; + editor.session.remove(range); + }, + multiSelectAction: "forEach", + scrollIntoView: "cursor" + }, { + name: "removetolineendhard", + description: "Remove to line end hard", + bindKey: bindKey("Ctrl-Shift-Delete", null), + exec: function (editor) { + var range = editor.selection.getRange(); + range.end.column = Number.MAX_VALUE; + editor.session.remove(range); + }, + multiSelectAction: "forEach", + scrollIntoView: "cursor" + }, { + name: "removewordleft", + description: "Remove word left", + bindKey: bindKey("Ctrl-Backspace", "Alt-Backspace|Ctrl-Alt-Backspace"), + exec: function (editor) { editor.removeWordLeft(); }, + multiSelectAction: "forEach", + scrollIntoView: "cursor" + }, { + name: "removewordright", + description: "Remove word right", + bindKey: bindKey("Ctrl-Delete", "Alt-Delete"), + exec: function (editor) { editor.removeWordRight(); }, + multiSelectAction: "forEach", + scrollIntoView: "cursor" + }, { + name: "outdent", + description: "Outdent", + bindKey: bindKey("Shift-Tab", "Shift-Tab"), + exec: function (editor) { editor.blockOutdent(); }, + multiSelectAction: "forEach", + scrollIntoView: "selectionPart" + }, { + name: "indent", + description: "Indent", + bindKey: bindKey("Tab", "Tab"), + exec: function (editor) { editor.indent(); }, + multiSelectAction: "forEach", + scrollIntoView: "selectionPart" + }, { + name: "blockoutdent", + description: "Block outdent", + bindKey: bindKey("Ctrl-[", "Ctrl-["), + exec: function (editor) { editor.blockOutdent(); }, + multiSelectAction: "forEachLine", + scrollIntoView: "selectionPart" + }, { + name: "blockindent", + description: "Block indent", + bindKey: bindKey("Ctrl-]", "Ctrl-]"), + exec: function (editor) { editor.blockIndent(); }, + multiSelectAction: "forEachLine", + scrollIntoView: "selectionPart" + }, { + name: "insertstring", + description: "Insert string", + exec: function (editor, str) { editor.insert(str); }, + multiSelectAction: "forEach", + scrollIntoView: "cursor" + }, { + name: "inserttext", + description: "Insert text", + exec: function (editor, args) { + editor.insert(lang.stringRepeat(args.text || "", args.times || 1)); + }, + multiSelectAction: "forEach", + scrollIntoView: "cursor" + }, { + name: "splitline", + description: "Split line", + bindKey: bindKey(null, "Ctrl-O"), + exec: function (editor) { editor.splitLine(); }, + multiSelectAction: "forEach", + scrollIntoView: "cursor" + }, { + name: "transposeletters", + description: "Transpose letters", + bindKey: bindKey("Alt-Shift-X", "Ctrl-T"), + exec: function (editor) { editor.transposeLetters(); }, + multiSelectAction: function (editor) { editor.transposeSelections(1); }, + scrollIntoView: "cursor" + }, { + name: "touppercase", + description: "To uppercase", + bindKey: bindKey("Ctrl-U", "Ctrl-U"), + exec: function (editor) { editor.toUpperCase(); }, + multiSelectAction: "forEach", + scrollIntoView: "cursor" + }, { + name: "tolowercase", + description: "To lowercase", + bindKey: bindKey("Ctrl-Shift-U", "Ctrl-Shift-U"), + exec: function (editor) { editor.toLowerCase(); }, + multiSelectAction: "forEach", + scrollIntoView: "cursor" + }, { + name: "autoindent", + description: "Auto Indent", + bindKey: bindKey(null, null), + exec: function (editor) { editor.autoIndent(); }, + multiSelectAction: "forEachLine", + scrollIntoView: "animate" + }, { + name: "expandtoline", + description: "Expand to line", + bindKey: bindKey("Ctrl-Shift-L", "Command-Shift-L"), + exec: function (editor) { + var range = editor.selection.getRange(); + range.start.column = range.end.column = 0; + range.end.row++; + editor.selection.setRange(range, false); + }, + multiSelectAction: "forEach", + scrollIntoView: "cursor", + readOnly: true + }, { + name: "openlink", + bindKey: bindKey("Ctrl+F3", "F3"), + exec: function (editor) { editor.openLink(); } + }, { + name: "joinlines", + description: "Join lines", + bindKey: bindKey(null, null), + exec: function (editor) { + var isBackwards = editor.selection.isBackwards(); + var selectionStart = isBackwards ? editor.selection.getSelectionLead() : editor.selection.getSelectionAnchor(); + var selectionEnd = isBackwards ? editor.selection.getSelectionAnchor() : editor.selection.getSelectionLead(); + var firstLineEndCol = editor.session.doc.getLine(selectionStart.row).length; + var selectedText = editor.session.doc.getTextRange(editor.selection.getRange()); + var selectedCount = selectedText.replace(/\n\s*/, " ").length; + var insertLine = editor.session.doc.getLine(selectionStart.row); + for (var i = selectionStart.row + 1; i <= selectionEnd.row + 1; i++) { + var curLine = lang.stringTrimLeft(lang.stringTrimRight(editor.session.doc.getLine(i))); + if (curLine.length !== 0) { + curLine = " " + curLine; + } + insertLine += curLine; + } + if (selectionEnd.row + 1 < (editor.session.doc.getLength() - 1)) { + insertLine += editor.session.doc.getNewLineCharacter(); + } + editor.clearSelection(); + editor.session.doc.replace(new Range(selectionStart.row, 0, selectionEnd.row + 2, 0), insertLine); + if (selectedCount > 0) { + editor.selection.moveCursorTo(selectionStart.row, selectionStart.column); + editor.selection.selectTo(selectionStart.row, selectionStart.column + selectedCount); + } + else { + firstLineEndCol = editor.session.doc.getLine(selectionStart.row).length > firstLineEndCol ? (firstLineEndCol + 1) : firstLineEndCol; + editor.selection.moveCursorTo(selectionStart.row, firstLineEndCol); + } + }, + multiSelectAction: "forEach", + readOnly: true + }, { + name: "invertSelection", + description: "Invert selection", + bindKey: bindKey(null, null), + exec: function (editor) { + var endRow = editor.session.doc.getLength() - 1; + var endCol = editor.session.doc.getLine(endRow).length; + var ranges = editor.selection.rangeList.ranges; + var newRanges = []; + if (ranges.length < 1) { + ranges = [editor.selection.getRange()]; + } + for (var i = 0; i < ranges.length; i++) { + if (i == (ranges.length - 1)) { + if (!(ranges[i].end.row === endRow && ranges[i].end.column === endCol)) { + newRanges.push(new Range(ranges[i].end.row, ranges[i].end.column, endRow, endCol)); + } + } + if (i === 0) { + if (!(ranges[i].start.row === 0 && ranges[i].start.column === 0)) { + newRanges.push(new Range(0, 0, ranges[i].start.row, ranges[i].start.column)); + } + } + else { + newRanges.push(new Range(ranges[i - 1].end.row, ranges[i - 1].end.column, ranges[i].start.row, ranges[i].start.column)); + } + } + editor.exitMultiSelectMode(); + editor.clearSelection(); + for (var i = 0; i < newRanges.length; i++) { + editor.selection.addRange(newRanges[i], false); + } + }, + readOnly: true, + scrollIntoView: "none" + }, { + name: "addLineAfter", + description: "Add new line after the current line", + exec: function (editor) { + editor.selection.clearSelection(); + editor.navigateLineEnd(); + editor.insert("\n"); + }, + multiSelectAction: "forEach", + scrollIntoView: "cursor" + }, { + name: "addLineBefore", + description: "Add new line before the current line", + exec: function (editor) { + editor.selection.clearSelection(); + var cursor = editor.getCursorPosition(); + editor.selection.moveTo(cursor.row - 1, Number.MAX_VALUE); + editor.insert("\n"); + if (cursor.row === 0) + editor.navigateUp(); + }, + multiSelectAction: "forEach", + scrollIntoView: "cursor" + }, { + name: "openCommandPallete", + exec: function (editor) { + console.warn("This is an obsolete command. Please use `openCommandPalette` instead."); + editor.prompt({ $type: "commands" }); + }, + readOnly: true + }, { + name: "openCommandPalette", + description: "Open command palette", + bindKey: bindKey("F1", "F1"), + exec: function (editor) { + editor.prompt({ $type: "commands" }); + }, + readOnly: true + }, { + name: "modeSelect", + description: "Change language mode...", + bindKey: bindKey(null, null), + exec: function (editor) { + editor.prompt({ $type: "modes" }); + }, + readOnly: true + }]; +for (var i = 1; i < 9; i++) { + exports.commands.push({ + name: "foldToLevel" + i, + description: "Fold To Level " + i, + level: i, + exec: function (editor) { editor.session.foldToLevel(this.level); }, + scrollIntoView: "center", + readOnly: true + }); +} + +}); + +ace.define("ace/line_widgets",["require","exports","module","ace/lib/dom"], function(require, exports, module){"use strict"; +var dom = require("./lib/dom"); +var LineWidgets = /** @class */ (function () { + function LineWidgets(session) { + this.session = session; + this.session.widgetManager = this; + this.session.getRowLength = this.getRowLength; + this.session.$getWidgetScreenLength = this.$getWidgetScreenLength; + this.updateOnChange = this.updateOnChange.bind(this); + this.renderWidgets = this.renderWidgets.bind(this); + this.measureWidgets = this.measureWidgets.bind(this); + this.session._changedWidgets = []; + this.$onChangeEditor = this.$onChangeEditor.bind(this); + this.session.on("change", this.updateOnChange); + this.session.on("changeFold", this.updateOnFold); + this.session.on("changeEditor", this.$onChangeEditor); + } + LineWidgets.prototype.getRowLength = function (row) { + var h; + if (this.lineWidgets) + h = this.lineWidgets[row] && this.lineWidgets[row].rowCount || 0; + else + h = 0; + if (!this.$useWrapMode || !this.$wrapData[row]) { + return 1 + h; + } + else { + return this.$wrapData[row].length + 1 + h; + } + }; + LineWidgets.prototype.$getWidgetScreenLength = function () { + var screenRows = 0; + this.lineWidgets.forEach(function (w) { + if (w && w.rowCount && !w.hidden) + screenRows += w.rowCount; + }); + return screenRows; + }; + LineWidgets.prototype.$onChangeEditor = function (e) { + this.attach(e.editor); + }; + LineWidgets.prototype.attach = function (editor) { + if (editor && editor.widgetManager && editor.widgetManager != this) + editor.widgetManager.detach(); + if (this.editor == editor) + return; + this.detach(); + this.editor = editor; + if (editor) { + editor.widgetManager = this; + editor.renderer.on("beforeRender", this.measureWidgets); + editor.renderer.on("afterRender", this.renderWidgets); + } + }; + LineWidgets.prototype.detach = function (e) { + var editor = this.editor; + if (!editor) + return; + this.editor = null; + editor.widgetManager = null; + editor.renderer.off("beforeRender", this.measureWidgets); + editor.renderer.off("afterRender", this.renderWidgets); + var lineWidgets = this.session.lineWidgets; + lineWidgets && lineWidgets.forEach(function (w) { + if (w && w.el && w.el.parentNode) { + w._inDocument = false; + w.el.parentNode.removeChild(w.el); + } + }); + }; + LineWidgets.prototype.updateOnFold = function (e, session) { + var lineWidgets = session.lineWidgets; + if (!lineWidgets || !e.action) + return; + var fold = e.data; + var start = fold.start.row; + var end = fold.end.row; + var hide = e.action == "add"; + for (var i = start + 1; i < end; i++) { + if (lineWidgets[i]) + lineWidgets[i].hidden = hide; + } + if (lineWidgets[end]) { + if (hide) { + if (!lineWidgets[start]) + lineWidgets[start] = lineWidgets[end]; + else + lineWidgets[end].hidden = hide; + } + else { + if (lineWidgets[start] == lineWidgets[end]) + lineWidgets[start] = undefined; + lineWidgets[end].hidden = hide; + } + } + }; + LineWidgets.prototype.updateOnChange = function (delta) { + var lineWidgets = this.session.lineWidgets; + if (!lineWidgets) + return; + var startRow = delta.start.row; + var len = delta.end.row - startRow; + if (len === 0) { + } + else if (delta.action == "remove") { + var removed = lineWidgets.splice(startRow + 1, len); + if (!lineWidgets[startRow] && removed[removed.length - 1]) { + lineWidgets[startRow] = removed.pop(); + } + removed.forEach(function (w) { + w && this.removeLineWidget(w); + }, this); + this.$updateRows(); + } + else { + var args = new Array(len); + if (lineWidgets[startRow] && lineWidgets[startRow].column != null) { + if (delta.start.column > lineWidgets[startRow].column) + startRow++; + } + args.unshift(startRow, 0); + lineWidgets.splice.apply(lineWidgets, args); + this.$updateRows(); + } + }; + LineWidgets.prototype.$updateRows = function () { + var lineWidgets = this.session.lineWidgets; + if (!lineWidgets) + return; + var noWidgets = true; + lineWidgets.forEach(function (w, i) { + if (w) { + noWidgets = false; + w.row = i; + while (w.$oldWidget) { + w.$oldWidget.row = i; + w = w.$oldWidget; + } + } + }); + if (noWidgets) + this.session.lineWidgets = null; + }; + LineWidgets.prototype.$registerLineWidget = function (w) { + if (!this.session.lineWidgets) + this.session.lineWidgets = new Array(this.session.getLength()); + var old = this.session.lineWidgets[w.row]; + if (old) { + w.$oldWidget = old; + if (old.el && old.el.parentNode) { + old.el.parentNode.removeChild(old.el); + old._inDocument = false; + } + } + this.session.lineWidgets[w.row] = w; + return w; + }; + LineWidgets.prototype.addLineWidget = function (w) { + this.$registerLineWidget(w); + w.session = this.session; + if (!this.editor) + return w; + var renderer = this.editor.renderer; + if (w.html && !w.el) { + w.el = dom.createElement("div"); + w.el.innerHTML = w.html; + } + if (w.text && !w.el) { + w.el = dom.createElement("div"); + w.el.textContent = w.text; + } + if (w.el) { + dom.addCssClass(w.el, "ace_lineWidgetContainer"); + if (w.className) { + dom.addCssClass(w.el, w.className); + } + w.el.style.position = "absolute"; + w.el.style.zIndex = 5; + renderer.container.appendChild(w.el); + w._inDocument = true; + if (!w.coverGutter) { + w.el.style.zIndex = 3; + } + if (w.pixelHeight == null) { + w.pixelHeight = w.el.offsetHeight; + } + } + if (w.rowCount == null) { + w.rowCount = w.pixelHeight / renderer.layerConfig.lineHeight; + } + var fold = this.session.getFoldAt(w.row, 0); + w.$fold = fold; + if (fold) { + var lineWidgets = this.session.lineWidgets; + if (w.row == fold.end.row && !lineWidgets[fold.start.row]) + lineWidgets[fold.start.row] = w; + else + w.hidden = true; + } + this.session._emit("changeFold", { data: { start: { row: w.row } } }); + this.$updateRows(); + this.renderWidgets(null, renderer); + this.onWidgetChanged(w); + return w; + }; + LineWidgets.prototype.removeLineWidget = function (w) { + w._inDocument = false; + w.session = null; + if (w.el && w.el.parentNode) + w.el.parentNode.removeChild(w.el); + if (w.editor && w.editor.destroy) + try { + w.editor.destroy(); + } + catch (e) { } + if (this.session.lineWidgets) { + var w1 = this.session.lineWidgets[w.row]; + if (w1 == w) { + this.session.lineWidgets[w.row] = w.$oldWidget; + if (w.$oldWidget) + this.onWidgetChanged(w.$oldWidget); + } + else { + while (w1) { + if (w1.$oldWidget == w) { + w1.$oldWidget = w.$oldWidget; + break; + } + w1 = w1.$oldWidget; + } + } + } + this.session._emit("changeFold", { data: { start: { row: w.row } } }); + this.$updateRows(); + }; + LineWidgets.prototype.getWidgetsAtRow = function (row) { + var lineWidgets = this.session.lineWidgets; + var w = lineWidgets && lineWidgets[row]; + var list = []; + while (w) { + list.push(w); + w = w.$oldWidget; + } + return list; + }; + LineWidgets.prototype.onWidgetChanged = function (w) { + this.session._changedWidgets.push(w); + this.editor && this.editor.renderer.updateFull(); + }; + LineWidgets.prototype.measureWidgets = function (e, renderer) { + var changedWidgets = this.session._changedWidgets; + var config = renderer.layerConfig; + if (!changedWidgets || !changedWidgets.length) + return; + var min = Infinity; + for (var i = 0; i < changedWidgets.length; i++) { + var w = changedWidgets[i]; + if (!w || !w.el) + continue; + if (w.session != this.session) + continue; + if (!w._inDocument) { + if (this.session.lineWidgets[w.row] != w) + continue; + w._inDocument = true; + renderer.container.appendChild(w.el); + } + w.h = w.el.offsetHeight; + if (!w.fixedWidth) { + w.w = w.el.offsetWidth; + w.screenWidth = Math.ceil(w.w / config.characterWidth); + } + var rowCount = w.h / config.lineHeight; + if (w.coverLine) { + rowCount -= this.session.getRowLineCount(w.row); + if (rowCount < 0) + rowCount = 0; + } + if (w.rowCount != rowCount) { + w.rowCount = rowCount; + if (w.row < min) + min = w.row; + } + } + if (min != Infinity) { + this.session._emit("changeFold", { data: { start: { row: min } } }); + this.session.lineWidgetWidth = null; + } + this.session._changedWidgets = []; + }; + LineWidgets.prototype.renderWidgets = function (e, renderer) { + var config = renderer.layerConfig; + var lineWidgets = this.session.lineWidgets; + if (!lineWidgets) + return; + var first = Math.min(this.firstRow, config.firstRow); + var last = Math.max(this.lastRow, config.lastRow, lineWidgets.length); + while (first > 0 && !lineWidgets[first]) + first--; + this.firstRow = config.firstRow; + this.lastRow = config.lastRow; + renderer.$cursorLayer.config = config; + for (var i = first; i <= last; i++) { + var w = lineWidgets[i]; + if (!w || !w.el) + continue; + if (w.hidden) { + w.el.style.top = -100 - (w.pixelHeight || 0) + "px"; + continue; + } + if (!w._inDocument) { + w._inDocument = true; + renderer.container.appendChild(w.el); + } + var top = renderer.$cursorLayer.getPixelPosition({ row: i, column: 0 }, true).top; + if (!w.coverLine) + top += config.lineHeight * this.session.getRowLineCount(w.row); + w.el.style.top = top - config.offset + "px"; + var left = w.coverGutter ? 0 : renderer.gutterWidth; + if (!w.fixedWidth) + left -= renderer.scrollLeft; + w.el.style.left = left + "px"; + if (w.fullWidth && w.screenWidth) { + w.el.style.minWidth = config.width + 2 * config.padding + "px"; + } + if (w.fixedWidth) { + w.el.style.right = renderer.scrollBar.getWidth() + "px"; + } + else { + w.el.style.right = ""; + } + } + }; + return LineWidgets; +}()); +exports.LineWidgets = LineWidgets; + +}); + +ace.define("ace/keyboard/gutter_handler",["require","exports","module","ace/lib/keys","ace/mouse/default_gutter_handler"], function(require, exports, module){"use strict"; +var keys = require('../lib/keys'); +var GutterTooltip = require("../mouse/default_gutter_handler").GutterTooltip; +var GutterKeyboardHandler = /** @class */ (function () { + function GutterKeyboardHandler(editor) { + this.editor = editor; + this.gutterLayer = editor.renderer.$gutterLayer; + this.element = editor.renderer.$gutter; + this.lines = editor.renderer.$gutterLayer.$lines; + this.activeRowIndex = null; + this.activeLane = null; + this.annotationTooltip = new GutterTooltip(this.editor); + } + GutterKeyboardHandler.prototype.addListener = function () { + this.element.addEventListener("keydown", this.$onGutterKeyDown.bind(this)); + this.element.addEventListener("focusout", this.$blurGutter.bind(this)); + this.editor.on("mousewheel", this.$blurGutter.bind(this)); + }; + GutterKeyboardHandler.prototype.removeListener = function () { + this.element.removeEventListener("keydown", this.$onGutterKeyDown.bind(this)); + this.element.removeEventListener("focusout", this.$blurGutter.bind(this)); + this.editor.off("mousewheel", this.$blurGutter.bind(this)); + }; + GutterKeyboardHandler.prototype.$onGutterKeyDown = function (e) { + if (this.annotationTooltip.isOpen) { + e.preventDefault(); + if (e.keyCode === keys["escape"]) + this.annotationTooltip.hideTooltip(); + return; + } + if (e.target === this.element) { + if (e.keyCode != keys["enter"]) { + return; + } + e.preventDefault(); + var row = this.editor.getCursorPosition().row; + if (!this.editor.isRowVisible(row)) + this.editor.scrollToLine(row, true, true); + setTimeout(function () { + var index = this.$rowToRowIndex(this.gutterLayer.$cursorCell.row); + var nearestFoldIndex = this.$findNearestFoldWidget(index); + var nearestAnnotationIndex = this.$findNearestAnnotation(index); + if (nearestFoldIndex === null && nearestAnnotationIndex === null) + return; + if (nearestFoldIndex === null && nearestAnnotationIndex !== null) { + this.activeRowIndex = nearestAnnotationIndex; + this.activeLane = "annotation"; + this.$focusAnnotation(this.activeRowIndex); + return; + } + if (nearestFoldIndex !== null && nearestAnnotationIndex === null) { + this.activeRowIndex = nearestFoldIndex; + this.activeLane = "fold"; + this.$focusFoldWidget(this.activeRowIndex); + return; + } + if (Math.abs(nearestAnnotationIndex - index) < Math.abs(nearestFoldIndex - index)) { + this.activeRowIndex = nearestAnnotationIndex; + this.activeLane = "annotation"; + this.$focusAnnotation(this.activeRowIndex); + return; + } + else { + this.activeRowIndex = nearestFoldIndex; + this.activeLane = "fold"; + this.$focusFoldWidget(this.activeRowIndex); + return; + } + }.bind(this), 10); + return; + } + this.$handleGutterKeyboardInteraction(e); + setTimeout(function () { + this.editor._signal("gutterkeydown", new GutterKeyboardEvent(e, this)); + }.bind(this), 10); + }; + GutterKeyboardHandler.prototype.$handleGutterKeyboardInteraction = function (e) { + if (e.keyCode === keys["tab"]) { + e.preventDefault(); + return; + } + if (e.keyCode === keys["escape"]) { + e.preventDefault(); + this.$blurGutter(); + this.element.focus(); + this.lane = null; + return; + } + if (e.keyCode === keys["up"]) { + e.preventDefault(); + switch (this.activeLane) { + case "fold": + this.$moveFoldWidgetUp(); + break; + case "annotation": + this.$moveAnnotationUp(); + break; + } + return; + } + if (e.keyCode === keys["down"]) { + e.preventDefault(); + switch (this.activeLane) { + case "fold": + this.$moveFoldWidgetDown(); + break; + case "annotation": + this.$moveAnnotationDown(); + break; + } + return; + } + if (e.keyCode === keys["left"]) { + e.preventDefault(); + this.$switchLane("annotation"); + return; + } + if (e.keyCode === keys["right"]) { + e.preventDefault(); + this.$switchLane("fold"); + return; + } + if (e.keyCode === keys["enter"] || e.keyCode === keys["space"]) { + e.preventDefault(); + switch (this.activeLane) { + case "fold": + if (this.gutterLayer.session.foldWidgets[this.$rowIndexToRow(this.activeRowIndex)] === 'start') { + var rowFoldingWidget = this.$rowIndexToRow(this.activeRowIndex); + this.editor.session.onFoldWidgetClick(this.$rowIndexToRow(this.activeRowIndex), e); + setTimeout(function () { + if (this.$rowIndexToRow(this.activeRowIndex) !== rowFoldingWidget) { + this.$blurFoldWidget(this.activeRowIndex); + this.activeRowIndex = this.$rowToRowIndex(rowFoldingWidget); + this.$focusFoldWidget(this.activeRowIndex); + } + }.bind(this), 10); + break; + } + else if (this.gutterLayer.session.foldWidgets[this.$rowIndexToRow(this.activeRowIndex)] === 'end') { + break; + } + return; + case "annotation": + var gutterElement = this.lines.cells[this.activeRowIndex].element.childNodes[2]; + var rect = gutterElement.getBoundingClientRect(); + var style = this.annotationTooltip.getElement().style; + style.left = rect.right + "px"; + style.top = rect.bottom + "px"; + this.annotationTooltip.showTooltip(this.$rowIndexToRow(this.activeRowIndex)); + break; + } + return; + } + }; + GutterKeyboardHandler.prototype.$blurGutter = function () { + if (this.activeRowIndex !== null) { + switch (this.activeLane) { + case "fold": + this.$blurFoldWidget(this.activeRowIndex); + break; + case "annotation": + this.$blurAnnotation(this.activeRowIndex); + break; + } + } + if (this.annotationTooltip.isOpen) + this.annotationTooltip.hideTooltip(); + return; + }; + GutterKeyboardHandler.prototype.$isFoldWidgetVisible = function (index) { + var isRowFullyVisible = this.editor.isRowFullyVisible(this.$rowIndexToRow(index)); + var isIconVisible = this.$getFoldWidget(index).style.display !== "none"; + return isRowFullyVisible && isIconVisible; + }; + GutterKeyboardHandler.prototype.$isAnnotationVisible = function (index) { + var isRowFullyVisible = this.editor.isRowFullyVisible(this.$rowIndexToRow(index)); + var isIconVisible = this.$getAnnotation(index).style.display !== "none"; + return isRowFullyVisible && isIconVisible; + }; + GutterKeyboardHandler.prototype.$getFoldWidget = function (index) { + var cell = this.lines.get(index); + var element = cell.element; + return element.childNodes[1]; + }; + GutterKeyboardHandler.prototype.$getAnnotation = function (index) { + var cell = this.lines.get(index); + var element = cell.element; + return element.childNodes[2]; + }; + GutterKeyboardHandler.prototype.$findNearestFoldWidget = function (index) { + if (this.$isFoldWidgetVisible(index)) + return index; + var i = 0; + while (index - i > 0 || index + i < this.lines.getLength() - 1) { + i++; + if (index - i >= 0 && this.$isFoldWidgetVisible(index - i)) + return index - i; + if (index + i <= this.lines.getLength() - 1 && this.$isFoldWidgetVisible(index + i)) + return index + i; + } + return null; + }; + GutterKeyboardHandler.prototype.$findNearestAnnotation = function (index) { + if (this.$isAnnotationVisible(index)) + return index; + var i = 0; + while (index - i > 0 || index + i < this.lines.getLength() - 1) { + i++; + if (index - i >= 0 && this.$isAnnotationVisible(index - i)) + return index - i; + if (index + i <= this.lines.getLength() - 1 && this.$isAnnotationVisible(index + i)) + return index + i; + } + return null; + }; + GutterKeyboardHandler.prototype.$focusFoldWidget = function (index) { + if (index == null) + return; + var foldWidget = this.$getFoldWidget(index); + foldWidget.classList.add(this.editor.renderer.keyboardFocusClassName); + foldWidget.focus(); + }; + GutterKeyboardHandler.prototype.$focusAnnotation = function (index) { + if (index == null) + return; + var annotation = this.$getAnnotation(index); + annotation.classList.add(this.editor.renderer.keyboardFocusClassName); + annotation.focus(); + }; + GutterKeyboardHandler.prototype.$blurFoldWidget = function (index) { + var foldWidget = this.$getFoldWidget(index); + foldWidget.classList.remove(this.editor.renderer.keyboardFocusClassName); + foldWidget.blur(); + }; + GutterKeyboardHandler.prototype.$blurAnnotation = function (index) { + var annotation = this.$getAnnotation(index); + annotation.classList.remove(this.editor.renderer.keyboardFocusClassName); + annotation.blur(); + }; + GutterKeyboardHandler.prototype.$moveFoldWidgetUp = function () { + var index = this.activeRowIndex; + while (index > 0) { + index--; + if (this.$isFoldWidgetVisible(index)) { + this.$blurFoldWidget(this.activeRowIndex); + this.activeRowIndex = index; + this.$focusFoldWidget(this.activeRowIndex); + return; + } + } + return; + }; + GutterKeyboardHandler.prototype.$moveFoldWidgetDown = function () { + var index = this.activeRowIndex; + while (index < this.lines.getLength() - 1) { + index++; + if (this.$isFoldWidgetVisible(index)) { + this.$blurFoldWidget(this.activeRowIndex); + this.activeRowIndex = index; + this.$focusFoldWidget(this.activeRowIndex); + return; + } + } + return; + }; + GutterKeyboardHandler.prototype.$moveAnnotationUp = function () { + var index = this.activeRowIndex; + while (index > 0) { + index--; + if (this.$isAnnotationVisible(index)) { + this.$blurAnnotation(this.activeRowIndex); + this.activeRowIndex = index; + this.$focusAnnotation(this.activeRowIndex); + return; + } + } + return; + }; + GutterKeyboardHandler.prototype.$moveAnnotationDown = function () { + var index = this.activeRowIndex; + while (index < this.lines.getLength() - 1) { + index++; + if (this.$isAnnotationVisible(index)) { + this.$blurAnnotation(this.activeRowIndex); + this.activeRowIndex = index; + this.$focusAnnotation(this.activeRowIndex); + return; + } + } + return; + }; + GutterKeyboardHandler.prototype.$switchLane = function (desinationLane) { + switch (desinationLane) { + case "annotation": + if (this.activeLane === "annotation") { + break; + } + var annotationIndex = this.$findNearestAnnotation(this.activeRowIndex); + if (annotationIndex == null) { + break; + } + this.activeLane = "annotation"; + this.$blurFoldWidget(this.activeRowIndex); + this.activeRowIndex = annotationIndex; + this.$focusAnnotation(this.activeRowIndex); + break; + case "fold": + if (this.activeLane === "fold") { + break; + } + var foldWidgetIndex = this.$findNearestFoldWidget(this.activeRowIndex); + if (foldWidgetIndex == null) { + break; + } + this.activeLane = "fold"; + this.$blurAnnotation(this.activeRowIndex); + this.activeRowIndex = foldWidgetIndex; + this.$focusFoldWidget(this.activeRowIndex); + break; + } + return; + }; + GutterKeyboardHandler.prototype.$rowIndexToRow = function (index) { + var cell = this.lines.get(index); + if (cell) + return cell.row; + return null; + }; + GutterKeyboardHandler.prototype.$rowToRowIndex = function (row) { + for (var i = 0; i < this.lines.getLength(); i++) { + var cell = this.lines.get(i); + if (cell.row == row) + return i; + } + return null; + }; + return GutterKeyboardHandler; +}()); +exports.GutterKeyboardHandler = GutterKeyboardHandler; +var GutterKeyboardEvent = /** @class */ (function () { + function GutterKeyboardEvent(domEvent, gutterKeyboardHandler) { + this.gutterKeyboardHandler = gutterKeyboardHandler; + this.domEvent = domEvent; + } + GutterKeyboardEvent.prototype.getKey = function () { + return keys.keyCodeToString(this.domEvent.keyCode); + }; + GutterKeyboardEvent.prototype.getRow = function () { + return this.gutterKeyboardHandler.$rowIndexToRow(this.gutterKeyboardHandler.activeRowIndex); + }; + GutterKeyboardEvent.prototype.isInAnnotationLane = function () { + return this.gutterKeyboardHandler.activeLane === "annotation"; + }; + GutterKeyboardEvent.prototype.isInFoldLane = function () { + return this.gutterKeyboardHandler.activeLane === "fold"; + }; + return GutterKeyboardEvent; +}()); +exports.GutterKeyboardEvent = GutterKeyboardEvent; + +}); + +ace.define("ace/editor",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/lib/useragent","ace/keyboard/textinput","ace/mouse/mouse_handler","ace/mouse/fold_handler","ace/keyboard/keybinding","ace/edit_session","ace/search","ace/range","ace/lib/event_emitter","ace/commands/command_manager","ace/commands/default_commands","ace/config","ace/token_iterator","ace/line_widgets","ace/keyboard/gutter_handler","ace/config","ace/clipboard","ace/lib/keys"], function(require, exports, module){"use strict"; +var __values = (this && this.__values) || function(o) { + var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0; + if (m) return m.call(o); + if (o && typeof o.length === "number") return { + next: function () { + if (o && i >= o.length) o = void 0; + return { value: o && o[i++], done: !o }; + } + }; + throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined."); +}; +var oop = require("./lib/oop"); +var dom = require("./lib/dom"); +var lang = require("./lib/lang"); +var useragent = require("./lib/useragent"); +var TextInput = require("./keyboard/textinput").TextInput; +var MouseHandler = require("./mouse/mouse_handler").MouseHandler; +var FoldHandler = require("./mouse/fold_handler").FoldHandler; +var KeyBinding = require("./keyboard/keybinding").KeyBinding; +var EditSession = require("./edit_session").EditSession; +var Search = require("./search").Search; +var Range = require("./range").Range; +var EventEmitter = require("./lib/event_emitter").EventEmitter; +var CommandManager = require("./commands/command_manager").CommandManager; +var defaultCommands = require("./commands/default_commands").commands; +var config = require("./config"); +var TokenIterator = require("./token_iterator").TokenIterator; +var LineWidgets = require("./line_widgets").LineWidgets; +var GutterKeyboardHandler = require("./keyboard/gutter_handler").GutterKeyboardHandler; +var nls = require("./config").nls; +var clipboard = require("./clipboard"); +var keys = require('./lib/keys'); +var Editor = /** @class */ (function () { + function Editor(renderer, session, options) { + this.$toDestroy = []; + var container = renderer.getContainerElement(); + this.container = container; + this.renderer = renderer; + this.id = "editor" + (++Editor.$uid); + this.commands = new CommandManager(useragent.isMac ? "mac" : "win", defaultCommands); + if (typeof document == "object") { + this.textInput = new TextInput(renderer.getTextAreaContainer(), this); + this.renderer.textarea = this.textInput.getElement(); + this.$mouseHandler = new MouseHandler(this); + new FoldHandler(this); + } + this.keyBinding = new KeyBinding(this); + this.$search = new Search().set({ + wrap: true + }); + this.$historyTracker = this.$historyTracker.bind(this); + this.commands.on("exec", this.$historyTracker); + this.$initOperationListeners(); + this._$emitInputEvent = lang.delayedCall(function () { + this._signal("input", {}); + if (this.session && !this.session.destroyed) + this.session.bgTokenizer.scheduleStart(); + }.bind(this)); + this.on("change", function (_, _self) { + _self._$emitInputEvent.schedule(31); + }); + this.setSession(session || options && options.session || new EditSession("")); + config.resetOptions(this); + if (options) + this.setOptions(options); + config._signal("editor", this); + } + Editor.prototype.$initOperationListeners = function () { + this.commands.on("exec", this.startOperation.bind(this), true); + this.commands.on("afterExec", this.endOperation.bind(this), true); + this.$opResetTimer = lang.delayedCall(this.endOperation.bind(this, true)); + this.on("change", function () { + if (!this.curOp) { + this.startOperation(); + this.curOp.selectionBefore = this.$lastSel; + } + this.curOp.docChanged = true; + }.bind(this), true); + this.on("changeSelection", function () { + if (!this.curOp) { + this.startOperation(); + this.curOp.selectionBefore = this.$lastSel; + } + this.curOp.selectionChanged = true; + }.bind(this), true); + }; + Editor.prototype.startOperation = function (commandEvent) { + if (this.curOp) { + if (!commandEvent || this.curOp.command) + return; + this.prevOp = this.curOp; + } + if (!commandEvent) { + this.previousCommand = null; + commandEvent = {}; + } + this.$opResetTimer.schedule(); + this.curOp = this.session.curOp = { + command: commandEvent.command || {}, + args: commandEvent.args, + scrollTop: this.renderer.scrollTop + }; + this.curOp.selectionBefore = this.selection.toJSON(); + }; + Editor.prototype.endOperation = function (e) { + if (this.curOp && this.session) { + if (e && e.returnValue === false || !this.session) + return (this.curOp = null); + if (e == true && this.curOp.command && this.curOp.command.name == "mouse") + return; + this._signal("beforeEndOperation"); + if (!this.curOp) + return; + var command = this.curOp.command; + var scrollIntoView = command && command.scrollIntoView; + if (scrollIntoView) { + switch (scrollIntoView) { + case "center-animate": + scrollIntoView = "animate"; + case "center": + this.renderer.scrollCursorIntoView(null, 0.5); + break; + case "animate": + case "cursor": + this.renderer.scrollCursorIntoView(); + break; + case "selectionPart": + var range = this.selection.getRange(); + var config = this.renderer.layerConfig; + if (range.start.row >= config.lastRow || range.end.row <= config.firstRow) { + this.renderer.scrollSelectionIntoView(this.selection.anchor, this.selection.lead); + } + break; + default: + break; + } + if (scrollIntoView == "animate") + this.renderer.animateScrolling(this.curOp.scrollTop); + } + var sel = this.selection.toJSON(); + this.curOp.selectionAfter = sel; + this.$lastSel = this.selection.toJSON(); + this.session.getUndoManager().addSelection(sel); + this.prevOp = this.curOp; + this.curOp = null; + } + }; + Editor.prototype.$historyTracker = function (e) { + if (!this.$mergeUndoDeltas) + return; + var prev = this.prevOp; + var mergeableCommands = this.$mergeableCommands; + var shouldMerge = prev.command && (e.command.name == prev.command.name); + if (e.command.name == "insertstring") { + var text = e.args; + if (this.mergeNextCommand === undefined) + this.mergeNextCommand = true; + shouldMerge = shouldMerge + && this.mergeNextCommand // previous command allows to coalesce with + && (!/\s/.test(text) || /\s/.test(prev.args)); // previous insertion was of same type + this.mergeNextCommand = true; + } + else { + shouldMerge = shouldMerge + && mergeableCommands.indexOf(e.command.name) !== -1; // the command is mergeable + } + if (this.$mergeUndoDeltas != "always" + && Date.now() - this.sequenceStartTime > 2000) { + shouldMerge = false; // the sequence is too long + } + if (shouldMerge) + this.session.mergeUndoDeltas = true; + else if (mergeableCommands.indexOf(e.command.name) !== -1) + this.sequenceStartTime = Date.now(); + }; + Editor.prototype.setKeyboardHandler = function (keyboardHandler, cb) { + if (keyboardHandler && typeof keyboardHandler === "string" && keyboardHandler != "ace") { + this.$keybindingId = keyboardHandler; + var _self = this; + config.loadModule(["keybinding", keyboardHandler], function (module) { + if (_self.$keybindingId == keyboardHandler) + _self.keyBinding.setKeyboardHandler(module && module.handler); + cb && cb(); + }); + } + else { + this.$keybindingId = null; + this.keyBinding.setKeyboardHandler(keyboardHandler); + cb && cb(); + } + }; + Editor.prototype.getKeyboardHandler = function () { + return this.keyBinding.getKeyboardHandler(); + }; + Editor.prototype.setSession = function (session) { + if (this.session == session) + return; + if (this.curOp) + this.endOperation(); + this.curOp = {}; + var oldSession = this.session; + if (oldSession) { + this.session.off("change", this.$onDocumentChange); + this.session.off("changeMode", this.$onChangeMode); + this.session.off("tokenizerUpdate", this.$onTokenizerUpdate); + this.session.off("changeTabSize", this.$onChangeTabSize); + this.session.off("changeWrapLimit", this.$onChangeWrapLimit); + this.session.off("changeWrapMode", this.$onChangeWrapMode); + this.session.off("changeFold", this.$onChangeFold); + this.session.off("changeFrontMarker", this.$onChangeFrontMarker); + this.session.off("changeBackMarker", this.$onChangeBackMarker); + this.session.off("changeBreakpoint", this.$onChangeBreakpoint); + this.session.off("changeAnnotation", this.$onChangeAnnotation); + this.session.off("changeOverwrite", this.$onCursorChange); + this.session.off("changeScrollTop", this.$onScrollTopChange); + this.session.off("changeScrollLeft", this.$onScrollLeftChange); + var selection = this.session.getSelection(); + selection.off("changeCursor", this.$onCursorChange); + selection.off("changeSelection", this.$onSelectionChange); + } + this.session = session; + if (session) { + this.$onDocumentChange = this.onDocumentChange.bind(this); + session.on("change", this.$onDocumentChange); + this.renderer.setSession(session); + this.$onChangeMode = this.onChangeMode.bind(this); + session.on("changeMode", this.$onChangeMode); + this.$onTokenizerUpdate = this.onTokenizerUpdate.bind(this); + session.on("tokenizerUpdate", this.$onTokenizerUpdate); + this.$onChangeTabSize = this.renderer.onChangeTabSize.bind(this.renderer); + session.on("changeTabSize", this.$onChangeTabSize); + this.$onChangeWrapLimit = this.onChangeWrapLimit.bind(this); + session.on("changeWrapLimit", this.$onChangeWrapLimit); + this.$onChangeWrapMode = this.onChangeWrapMode.bind(this); + session.on("changeWrapMode", this.$onChangeWrapMode); + this.$onChangeFold = this.onChangeFold.bind(this); + session.on("changeFold", this.$onChangeFold); + this.$onChangeFrontMarker = this.onChangeFrontMarker.bind(this); + this.session.on("changeFrontMarker", this.$onChangeFrontMarker); + this.$onChangeBackMarker = this.onChangeBackMarker.bind(this); + this.session.on("changeBackMarker", this.$onChangeBackMarker); + this.$onChangeBreakpoint = this.onChangeBreakpoint.bind(this); + this.session.on("changeBreakpoint", this.$onChangeBreakpoint); + this.$onChangeAnnotation = this.onChangeAnnotation.bind(this); + this.session.on("changeAnnotation", this.$onChangeAnnotation); + this.$onCursorChange = this.onCursorChange.bind(this); + this.session.on("changeOverwrite", this.$onCursorChange); + this.$onScrollTopChange = this.onScrollTopChange.bind(this); + this.session.on("changeScrollTop", this.$onScrollTopChange); + this.$onScrollLeftChange = this.onScrollLeftChange.bind(this); + this.session.on("changeScrollLeft", this.$onScrollLeftChange); + this.selection = session.getSelection(); + this.selection.on("changeCursor", this.$onCursorChange); + this.$onSelectionChange = this.onSelectionChange.bind(this); + this.selection.on("changeSelection", this.$onSelectionChange); + this.onChangeMode(); + this.onCursorChange(); + this.onScrollTopChange(); + this.onScrollLeftChange(); + this.onSelectionChange(); + this.onChangeFrontMarker(); + this.onChangeBackMarker(); + this.onChangeBreakpoint(); + this.onChangeAnnotation(); + this.session.getUseWrapMode() && this.renderer.adjustWrapLimit(); + this.renderer.updateFull(); + } + else { + this.selection = null; + this.renderer.setSession(session); + } + this._signal("changeSession", { + session: session, + oldSession: oldSession + }); + this.curOp = null; + oldSession && oldSession._signal("changeEditor", { oldEditor: this }); + session && session._signal("changeEditor", { editor: this }); + if (session && !session.destroyed) + session.bgTokenizer.scheduleStart(); + }; + Editor.prototype.getSession = function () { + return this.session; + }; + Editor.prototype.setValue = function (val, cursorPos) { + this.session.doc.setValue(val); + if (!cursorPos) + this.selectAll(); + else if (cursorPos == 1) + this.navigateFileEnd(); + else if (cursorPos == -1) + this.navigateFileStart(); + return val; + }; + Editor.prototype.getValue = function () { + return this.session.getValue(); + }; + Editor.prototype.getSelection = function () { + return this.selection; + }; + Editor.prototype.resize = function (force) { + this.renderer.onResize(force); + }; + Editor.prototype.setTheme = function (theme, cb) { + this.renderer.setTheme(theme, cb); + }; + Editor.prototype.getTheme = function () { + return this.renderer.getTheme(); + }; + Editor.prototype.setStyle = function (style) { + this.renderer.setStyle(style); + }; + Editor.prototype.unsetStyle = function (style) { + this.renderer.unsetStyle(style); + }; + Editor.prototype.getFontSize = function () { + return this.getOption("fontSize") || + dom.computedStyle(this.container).fontSize; + }; + Editor.prototype.setFontSize = function (size) { + this.setOption("fontSize", size); + }; + Editor.prototype.$highlightBrackets = function () { + if (this.$highlightPending) { + return; + } + var self = this; + this.$highlightPending = true; + setTimeout(function () { + self.$highlightPending = false; + var session = self.session; + if (!session || session.destroyed) + return; + if (session.$bracketHighlight) { + session.$bracketHighlight.markerIds.forEach(function (id) { + session.removeMarker(id); + }); + session.$bracketHighlight = null; + } + var pos = self.getCursorPosition(); + var handler = self.getKeyboardHandler(); + var isBackwards = handler && handler.$getDirectionForHighlight && handler.$getDirectionForHighlight(self); + var ranges = session.getMatchingBracketRanges(pos, isBackwards); + if (!ranges) { + var iterator = new TokenIterator(session, pos.row, pos.column); + var token = iterator.getCurrentToken(); + if (token && /\b(?:tag-open|tag-name)/.test(token.type)) { + var tagNamesRanges = session.getMatchingTags(pos); + if (tagNamesRanges) + ranges = [tagNamesRanges.openTagName, tagNamesRanges.closeTagName]; + } + } + if (!ranges && session.$mode.getMatching) + ranges = session.$mode.getMatching(self.session); + if (!ranges) { + if (self.getHighlightIndentGuides()) + self.renderer.$textLayer.$highlightIndentGuide(); + return; + } + var markerType = "ace_bracket"; + if (!Array.isArray(ranges)) { + ranges = [ranges]; + } + else if (ranges.length == 1) { + markerType = "ace_error_bracket"; + } + if (ranges.length == 2) { + if (Range.comparePoints(ranges[0].end, ranges[1].start) == 0) + ranges = [Range.fromPoints(ranges[0].start, ranges[1].end)]; + else if (Range.comparePoints(ranges[0].start, ranges[1].end) == 0) + ranges = [Range.fromPoints(ranges[1].start, ranges[0].end)]; + } + session.$bracketHighlight = { + ranges: ranges, + markerIds: ranges.map(function (range) { + return session.addMarker(range, markerType, "text"); + }) + }; + if (self.getHighlightIndentGuides()) + self.renderer.$textLayer.$highlightIndentGuide(); + }, 50); + }; + Editor.prototype.focus = function () { + this.textInput.focus(); + }; + Editor.prototype.isFocused = function () { + return this.textInput.isFocused(); + }; + Editor.prototype.blur = function () { + this.textInput.blur(); + }; + Editor.prototype.onFocus = function (e) { + if (this.$isFocused) + return; + this.$isFocused = true; + this.renderer.showCursor(); + this.renderer.visualizeFocus(); + this._emit("focus", e); + }; + Editor.prototype.onBlur = function (e) { + if (!this.$isFocused) + return; + this.$isFocused = false; + this.renderer.hideCursor(); + this.renderer.visualizeBlur(); + this._emit("blur", e); + }; + Editor.prototype.$cursorChange = function () { + this.renderer.updateCursor(); + this.$highlightBrackets(); + this.$updateHighlightActiveLine(); + }; + Editor.prototype.onDocumentChange = function (delta) { + var wrap = this.session.$useWrapMode; + var lastRow = (delta.start.row == delta.end.row ? delta.end.row : Infinity); + this.renderer.updateLines(delta.start.row, lastRow, wrap); + this._signal("change", delta); + this.$cursorChange(); + }; + Editor.prototype.onTokenizerUpdate = function (e) { + var rows = e.data; + this.renderer.updateLines(rows.first, rows.last); + }; + Editor.prototype.onScrollTopChange = function () { + this.renderer.scrollToY(this.session.getScrollTop()); + }; + Editor.prototype.onScrollLeftChange = function () { + this.renderer.scrollToX(this.session.getScrollLeft()); + }; + Editor.prototype.onCursorChange = function () { + this.$cursorChange(); + this._signal("changeSelection"); + }; + Editor.prototype.$updateHighlightActiveLine = function () { + var session = this.getSession(); + var highlight; + if (this.$highlightActiveLine) { + if (this.$selectionStyle != "line" || !this.selection.isMultiLine()) + highlight = this.getCursorPosition(); + if (this.renderer.theme && this.renderer.theme.$selectionColorConflict && !this.selection.isEmpty()) + highlight = false; + if (this.renderer.$maxLines && this.session.getLength() === 1 && !(this.renderer.$minLines > 1)) + highlight = false; + } + if (session.$highlightLineMarker && !highlight) { + session.removeMarker(session.$highlightLineMarker.id); + session.$highlightLineMarker = null; + } + else if (!session.$highlightLineMarker && highlight) { + var range = new Range(highlight.row, highlight.column, highlight.row, Infinity); + range.id = session.addMarker(range, "ace_active-line", "screenLine"); + session.$highlightLineMarker = range; + } + else if (highlight) { + session.$highlightLineMarker.start.row = highlight.row; + session.$highlightLineMarker.end.row = highlight.row; + session.$highlightLineMarker.start.column = highlight.column; + session._signal("changeBackMarker"); + } + }; + Editor.prototype.onSelectionChange = function (e) { + var session = this.session; + if (session.$selectionMarker) { + session.removeMarker(session.$selectionMarker); + } + session.$selectionMarker = null; + if (!this.selection.isEmpty()) { + var range = this.selection.getRange(); + var style = this.getSelectionStyle(); + session.$selectionMarker = session.addMarker(range, "ace_selection", style); + } + else { + this.$updateHighlightActiveLine(); + } + var re = this.$highlightSelectedWord && this.$getSelectionHighLightRegexp(); + this.session.highlight(re); + this._signal("changeSelection"); + }; + Editor.prototype.$getSelectionHighLightRegexp = function () { + var session = this.session; + var selection = this.getSelectionRange(); + if (selection.isEmpty() || selection.isMultiLine()) + return; + var startColumn = selection.start.column; + var endColumn = selection.end.column; + var line = session.getLine(selection.start.row); + var needle = line.substring(startColumn, endColumn); + if (needle.length > 5000 || !/[\w\d]/.test(needle)) + return; + var re = this.$search.$assembleRegExp({ + wholeWord: true, + caseSensitive: true, + needle: needle + }); + var wordWithBoundary = line.substring(startColumn - 1, endColumn + 1); + if (!re.test(wordWithBoundary)) + return; + return re; + }; + Editor.prototype.onChangeFrontMarker = function () { + this.renderer.updateFrontMarkers(); + }; + Editor.prototype.onChangeBackMarker = function () { + this.renderer.updateBackMarkers(); + }; + Editor.prototype.onChangeBreakpoint = function () { + this.renderer.updateBreakpoints(); + }; + Editor.prototype.onChangeAnnotation = function () { + this.renderer.setAnnotations(this.session.getAnnotations()); + }; + Editor.prototype.onChangeMode = function (e) { + this.renderer.updateText(); + this._emit("changeMode", e); + }; + Editor.prototype.onChangeWrapLimit = function () { + this.renderer.updateFull(); + }; + Editor.prototype.onChangeWrapMode = function () { + this.renderer.onResize(true); + }; + Editor.prototype.onChangeFold = function () { + this.$updateHighlightActiveLine(); + this.renderer.updateFull(); + }; + Editor.prototype.getSelectedText = function () { + return this.session.getTextRange(this.getSelectionRange()); + }; + Editor.prototype.getCopyText = function () { + var text = this.getSelectedText(); + var nl = this.session.doc.getNewLineCharacter(); + var copyLine = false; + if (!text && this.$copyWithEmptySelection) { + copyLine = true; + var ranges = this.selection.getAllRanges(); + for (var i = 0; i < ranges.length; i++) { + var range = ranges[i]; + if (i && ranges[i - 1].start.row == range.start.row) + continue; + text += this.session.getLine(range.start.row) + nl; + } + } + var e = { text: text }; + this._signal("copy", e); + clipboard.lineMode = copyLine ? e.text : false; + return e.text; + }; + Editor.prototype.onCopy = function () { + this.commands.exec("copy", this); + }; + Editor.prototype.onCut = function () { + this.commands.exec("cut", this); + }; + Editor.prototype.onPaste = function (text, event) { + var e = { text: text, event: event }; + this.commands.exec("paste", this, e); + }; + Editor.prototype.$handlePaste = function (e) { + if (typeof e == "string") + e = { text: e }; + this._signal("paste", e); + var text = e.text; + var lineMode = text === clipboard.lineMode; + var session = this.session; + if (!this.inMultiSelectMode || this.inVirtualSelectionMode) { + if (lineMode) + session.insert({ row: this.selection.lead.row, column: 0 }, text); + else + this.insert(text); + } + else if (lineMode) { + this.selection.rangeList.ranges.forEach(function (range) { + session.insert({ row: range.start.row, column: 0 }, text); + }); + } + else { + var lines = text.split(/\r\n|\r|\n/); + var ranges = this.selection.rangeList.ranges; + var isFullLine = lines.length == 2 && (!lines[0] || !lines[1]); + if (lines.length != ranges.length || isFullLine) + return this.commands.exec("insertstring", this, text); + for (var i = ranges.length; i--;) { + var range = ranges[i]; + if (!range.isEmpty()) + session.remove(range); + session.insert(range.start, lines[i]); + } + } + }; + Editor.prototype.execCommand = function (command, args) { + return this.commands.exec(command, this, args); + }; + Editor.prototype.insert = function (text, pasted) { + var session = this.session; + var mode = session.getMode(); + var cursor = this.getCursorPosition(); + if (this.getBehavioursEnabled() && !pasted) { + var transform = mode.transformAction(session.getState(cursor.row), 'insertion', this, session, text); + if (transform) { + if (text !== transform.text) { + if (!this.inVirtualSelectionMode) { + this.session.mergeUndoDeltas = false; + this.mergeNextCommand = false; + } + } + text = transform.text; + } + } + if (text == "\t") + text = this.session.getTabString(); + if (!this.selection.isEmpty()) { + var range = this.getSelectionRange(); + cursor = this.session.remove(range); + this.clearSelection(); + } + else if (this.session.getOverwrite() && text.indexOf("\n") == -1) { + var range = new Range.fromPoints(cursor, cursor); + range.end.column += text.length; + this.session.remove(range); + } + if (text == "\n" || text == "\r\n") { + var line = session.getLine(cursor.row); + if (cursor.column > line.search(/\S|$/)) { + var d = line.substr(cursor.column).search(/\S|$/); + session.doc.removeInLine(cursor.row, cursor.column, cursor.column + d); + } + } + this.clearSelection(); + var start = cursor.column; + var lineState = session.getState(cursor.row); + var line = session.getLine(cursor.row); + var shouldOutdent = mode.checkOutdent(lineState, line, text); + session.insert(cursor, text); + if (transform && transform.selection) { + if (transform.selection.length == 2) { // Transform relative to the current column + this.selection.setSelectionRange(new Range(cursor.row, start + transform.selection[0], cursor.row, start + transform.selection[1])); + } + else { // Transform relative to the current row. + this.selection.setSelectionRange(new Range(cursor.row + transform.selection[0], transform.selection[1], cursor.row + transform.selection[2], transform.selection[3])); + } + } + if (this.$enableAutoIndent) { + if (session.getDocument().isNewLine(text)) { + var lineIndent = mode.getNextLineIndent(lineState, line.slice(0, cursor.column), session.getTabString()); + session.insert({ row: cursor.row + 1, column: 0 }, lineIndent); + } + if (shouldOutdent) + mode.autoOutdent(lineState, session, cursor.row); + } + }; + Editor.prototype.autoIndent = function () { + var session = this.session; + var mode = session.getMode(); + var startRow, endRow; + if (this.selection.isEmpty()) { + startRow = 0; + endRow = session.doc.getLength() - 1; + } + else { + var selectedRange = this.getSelectionRange(); + startRow = selectedRange.start.row; + endRow = selectedRange.end.row; + } + var prevLineState = ""; + var prevLine = ""; + var lineIndent = ""; + var line, currIndent, range; + var tab = session.getTabString(); + for (var row = startRow; row <= endRow; row++) { + if (row > 0) { + prevLineState = session.getState(row - 1); + prevLine = session.getLine(row - 1); + lineIndent = mode.getNextLineIndent(prevLineState, prevLine, tab); + } + line = session.getLine(row); + currIndent = mode.$getIndent(line); + if (lineIndent !== currIndent) { + if (currIndent.length > 0) { + range = new Range(row, 0, row, currIndent.length); + session.remove(range); + } + if (lineIndent.length > 0) { + session.insert({ row: row, column: 0 }, lineIndent); + } + } + mode.autoOutdent(prevLineState, session, row); + } + }; + Editor.prototype.onTextInput = function (text, composition) { + if (!composition) + return this.keyBinding.onTextInput(text); + this.startOperation({ command: { name: "insertstring" } }); + var applyComposition = this.applyComposition.bind(this, text, composition); + if (this.selection.rangeCount) + this.forEachSelection(applyComposition); + else + applyComposition(); + this.endOperation(); + }; + Editor.prototype.applyComposition = function (text, composition) { + if (composition.extendLeft || composition.extendRight) { + var r = this.selection.getRange(); + r.start.column -= composition.extendLeft; + r.end.column += composition.extendRight; + if (r.start.column < 0) { + r.start.row--; + r.start.column += this.session.getLine(r.start.row).length + 1; + } + this.selection.setRange(r); + if (!text && !r.isEmpty()) + this.remove(); + } + if (text || !this.selection.isEmpty()) + this.insert(text, true); + if (composition.restoreStart || composition.restoreEnd) { + var r = this.selection.getRange(); + r.start.column -= composition.restoreStart; + r.end.column -= composition.restoreEnd; + this.selection.setRange(r); + } + }; + Editor.prototype.onCommandKey = function (e, hashId, keyCode) { + return this.keyBinding.onCommandKey(e, hashId, keyCode); + }; + Editor.prototype.setOverwrite = function (overwrite) { + this.session.setOverwrite(overwrite); + }; + Editor.prototype.getOverwrite = function () { + return this.session.getOverwrite(); + }; + Editor.prototype.toggleOverwrite = function () { + this.session.toggleOverwrite(); + }; + Editor.prototype.setScrollSpeed = function (speed) { + this.setOption("scrollSpeed", speed); + }; + Editor.prototype.getScrollSpeed = function () { + return this.getOption("scrollSpeed"); + }; + Editor.prototype.setDragDelay = function (dragDelay) { + this.setOption("dragDelay", dragDelay); + }; + Editor.prototype.getDragDelay = function () { + return this.getOption("dragDelay"); + }; + Editor.prototype.setSelectionStyle = function (val) { + this.setOption("selectionStyle", val); + }; + Editor.prototype.getSelectionStyle = function () { + return this.getOption("selectionStyle"); + }; + Editor.prototype.setHighlightActiveLine = function (shouldHighlight) { + this.setOption("highlightActiveLine", shouldHighlight); + }; + Editor.prototype.getHighlightActiveLine = function () { + return this.getOption("highlightActiveLine"); + }; + Editor.prototype.setHighlightGutterLine = function (shouldHighlight) { + this.setOption("highlightGutterLine", shouldHighlight); + }; + Editor.prototype.getHighlightGutterLine = function () { + return this.getOption("highlightGutterLine"); + }; + Editor.prototype.setHighlightSelectedWord = function (shouldHighlight) { + this.setOption("highlightSelectedWord", shouldHighlight); + }; + Editor.prototype.getHighlightSelectedWord = function () { + return this.$highlightSelectedWord; + }; + Editor.prototype.setAnimatedScroll = function (shouldAnimate) { + this.renderer.setAnimatedScroll(shouldAnimate); + }; + Editor.prototype.getAnimatedScroll = function () { + return this.renderer.getAnimatedScroll(); + }; + Editor.prototype.setShowInvisibles = function (showInvisibles) { + this.renderer.setShowInvisibles(showInvisibles); + }; + Editor.prototype.getShowInvisibles = function () { + return this.renderer.getShowInvisibles(); + }; + Editor.prototype.setDisplayIndentGuides = function (display) { + this.renderer.setDisplayIndentGuides(display); + }; + Editor.prototype.getDisplayIndentGuides = function () { + return this.renderer.getDisplayIndentGuides(); + }; + Editor.prototype.setHighlightIndentGuides = function (highlight) { + this.renderer.setHighlightIndentGuides(highlight); + }; + Editor.prototype.getHighlightIndentGuides = function () { + return this.renderer.getHighlightIndentGuides(); + }; + Editor.prototype.setShowPrintMargin = function (showPrintMargin) { + this.renderer.setShowPrintMargin(showPrintMargin); + }; + Editor.prototype.getShowPrintMargin = function () { + return this.renderer.getShowPrintMargin(); + }; + Editor.prototype.setPrintMarginColumn = function (showPrintMargin) { + this.renderer.setPrintMarginColumn(showPrintMargin); + }; + Editor.prototype.getPrintMarginColumn = function () { + return this.renderer.getPrintMarginColumn(); + }; + Editor.prototype.setReadOnly = function (readOnly) { + this.setOption("readOnly", readOnly); + }; + Editor.prototype.getReadOnly = function () { + return this.getOption("readOnly"); + }; + Editor.prototype.setBehavioursEnabled = function (enabled) { + this.setOption("behavioursEnabled", enabled); + }; + Editor.prototype.getBehavioursEnabled = function () { + return this.getOption("behavioursEnabled"); + }; + Editor.prototype.setWrapBehavioursEnabled = function (enabled) { + this.setOption("wrapBehavioursEnabled", enabled); + }; + Editor.prototype.getWrapBehavioursEnabled = function () { + return this.getOption("wrapBehavioursEnabled"); + }; + Editor.prototype.setShowFoldWidgets = function (show) { + this.setOption("showFoldWidgets", show); + }; + Editor.prototype.getShowFoldWidgets = function () { + return this.getOption("showFoldWidgets"); + }; + Editor.prototype.setFadeFoldWidgets = function (fade) { + this.setOption("fadeFoldWidgets", fade); + }; + Editor.prototype.getFadeFoldWidgets = function () { + return this.getOption("fadeFoldWidgets"); + }; + Editor.prototype.remove = function (dir) { + if (this.selection.isEmpty()) { + if (dir == "left") + this.selection.selectLeft(); + else + this.selection.selectRight(); + } + var range = this.getSelectionRange(); + if (this.getBehavioursEnabled()) { + var session = this.session; + var state = session.getState(range.start.row); + var new_range = session.getMode().transformAction(state, 'deletion', this, session, range); + if (range.end.column === 0) { + var text = session.getTextRange(range); + if (text[text.length - 1] == "\n") { + var line = session.getLine(range.end.row); + if (/^\s+$/.test(line)) { + range.end.column = line.length; + } + } + } + if (new_range) + range = new_range; + } + this.session.remove(range); + this.clearSelection(); + }; + Editor.prototype.removeWordRight = function () { + if (this.selection.isEmpty()) + this.selection.selectWordRight(); + this.session.remove(this.getSelectionRange()); + this.clearSelection(); + }; + Editor.prototype.removeWordLeft = function () { + if (this.selection.isEmpty()) + this.selection.selectWordLeft(); + this.session.remove(this.getSelectionRange()); + this.clearSelection(); + }; + Editor.prototype.removeToLineStart = function () { + if (this.selection.isEmpty()) + this.selection.selectLineStart(); + if (this.selection.isEmpty()) + this.selection.selectLeft(); + this.session.remove(this.getSelectionRange()); + this.clearSelection(); + }; + Editor.prototype.removeToLineEnd = function () { + if (this.selection.isEmpty()) + this.selection.selectLineEnd(); + var range = this.getSelectionRange(); + if (range.start.column == range.end.column && range.start.row == range.end.row) { + range.end.column = 0; + range.end.row++; + } + this.session.remove(range); + this.clearSelection(); + }; + Editor.prototype.splitLine = function () { + if (!this.selection.isEmpty()) { + this.session.remove(this.getSelectionRange()); + this.clearSelection(); + } + var cursor = this.getCursorPosition(); + this.insert("\n"); + this.moveCursorToPosition(cursor); + }; + Editor.prototype.setGhostText = function (text, position) { + if (!this.session.widgetManager) { + this.session.widgetManager = new LineWidgets(this.session); + this.session.widgetManager.attach(this); + } + this.renderer.setGhostText(text, position); + }; + Editor.prototype.removeGhostText = function () { + if (!this.session.widgetManager) + return; + this.renderer.removeGhostText(); + }; + Editor.prototype.transposeLetters = function () { + if (!this.selection.isEmpty()) { + return; + } + var cursor = this.getCursorPosition(); + var column = cursor.column; + if (column === 0) + return; + var line = this.session.getLine(cursor.row); + var swap, range; + if (column < line.length) { + swap = line.charAt(column) + line.charAt(column - 1); + range = new Range(cursor.row, column - 1, cursor.row, column + 1); + } + else { + swap = line.charAt(column - 1) + line.charAt(column - 2); + range = new Range(cursor.row, column - 2, cursor.row, column); + } + this.session.replace(range, swap); + this.session.selection.moveToPosition(range.end); + }; + Editor.prototype.toLowerCase = function () { + var originalRange = this.getSelectionRange(); + if (this.selection.isEmpty()) { + this.selection.selectWord(); + } + var range = this.getSelectionRange(); + var text = this.session.getTextRange(range); + this.session.replace(range, text.toLowerCase()); + this.selection.setSelectionRange(originalRange); + }; + Editor.prototype.toUpperCase = function () { + var originalRange = this.getSelectionRange(); + if (this.selection.isEmpty()) { + this.selection.selectWord(); + } + var range = this.getSelectionRange(); + var text = this.session.getTextRange(range); + this.session.replace(range, text.toUpperCase()); + this.selection.setSelectionRange(originalRange); + }; + Editor.prototype.indent = function () { + var session = this.session; + var range = this.getSelectionRange(); + if (range.start.row < range.end.row) { + var rows = this.$getSelectedRows(); + session.indentRows(rows.first, rows.last, "\t"); + return; + } + else if (range.start.column < range.end.column) { + var text = session.getTextRange(range); + if (!/^\s+$/.test(text)) { + var rows = this.$getSelectedRows(); + session.indentRows(rows.first, rows.last, "\t"); + return; + } + } + var line = session.getLine(range.start.row); + var position = range.start; + var size = session.getTabSize(); + var column = session.documentToScreenColumn(position.row, position.column); + if (this.session.getUseSoftTabs()) { + var count = (size - column % size); + var indentString = lang.stringRepeat(" ", count); + } + else { + var count = column % size; + while (line[range.start.column - 1] == " " && count) { + range.start.column--; + count--; + } + this.selection.setSelectionRange(range); + indentString = "\t"; + } + return this.insert(indentString); + }; + Editor.prototype.blockIndent = function () { + var rows = this.$getSelectedRows(); + this.session.indentRows(rows.first, rows.last, "\t"); + }; + Editor.prototype.blockOutdent = function () { + var selection = this.session.getSelection(); + this.session.outdentRows(selection.getRange()); + }; + Editor.prototype.sortLines = function () { + var rows = this.$getSelectedRows(); + var session = this.session; + var lines = []; + for (var i = rows.first; i <= rows.last; i++) + lines.push(session.getLine(i)); + lines.sort(function (a, b) { + if (a.toLowerCase() < b.toLowerCase()) + return -1; + if (a.toLowerCase() > b.toLowerCase()) + return 1; + return 0; + }); + var deleteRange = new Range(0, 0, 0, 0); + for (var i = rows.first; i <= rows.last; i++) { + var line = session.getLine(i); + deleteRange.start.row = i; + deleteRange.end.row = i; + deleteRange.end.column = line.length; + session.replace(deleteRange, lines[i - rows.first]); + } + }; + Editor.prototype.toggleCommentLines = function () { + var state = this.session.getState(this.getCursorPosition().row); + var rows = this.$getSelectedRows(); + this.session.getMode().toggleCommentLines(state, this.session, rows.first, rows.last); + }; + Editor.prototype.toggleBlockComment = function () { + var cursor = this.getCursorPosition(); + var state = this.session.getState(cursor.row); + var range = this.getSelectionRange(); + this.session.getMode().toggleBlockComment(state, this.session, range, cursor); + }; + Editor.prototype.getNumberAt = function (row, column) { + var _numberRx = /[\-]?[0-9]+(?:\.[0-9]+)?/g; + _numberRx.lastIndex = 0; + var s = this.session.getLine(row); + while (_numberRx.lastIndex < column) { + var m = _numberRx.exec(s); + if (m.index <= column && m.index + m[0].length >= column) { + var number = { + value: m[0], + start: m.index, + end: m.index + m[0].length + }; + return number; + } + } + return null; + }; + Editor.prototype.modifyNumber = function (amount) { + var row = this.selection.getCursor().row; + var column = this.selection.getCursor().column; + var charRange = new Range(row, column - 1, row, column); + var c = this.session.getTextRange(charRange); + if (!isNaN(parseFloat(c)) && isFinite(c)) { + var nr = this.getNumberAt(row, column); + if (nr) { + var fp = nr.value.indexOf(".") >= 0 ? nr.start + nr.value.indexOf(".") + 1 : nr.end; + var decimals = nr.start + nr.value.length - fp; + var t = parseFloat(nr.value); + t *= Math.pow(10, decimals); + if (fp !== nr.end && column < fp) { + amount *= Math.pow(10, nr.end - column - 1); + } + else { + amount *= Math.pow(10, nr.end - column); + } + t += amount; + t /= Math.pow(10, decimals); + var nnr = t.toFixed(decimals); + var replaceRange = new Range(row, nr.start, row, nr.end); + this.session.replace(replaceRange, nnr); + this.moveCursorTo(row, Math.max(nr.start + 1, column + nnr.length - nr.value.length)); + } + } + else { + this.toggleWord(); + } + }; + Editor.prototype.toggleWord = function () { + var row = this.selection.getCursor().row; + var column = this.selection.getCursor().column; + this.selection.selectWord(); + var currentState = this.getSelectedText(); + var currWordStart = this.selection.getWordRange().start.column; + var wordParts = currentState.replace(/([a-z]+|[A-Z]+)(?=[A-Z_]|$)/g, '$1 ').split(/\s/); + var delta = column - currWordStart - 1; + if (delta < 0) + delta = 0; + var curLength = 0, itLength = 0; + var that = this; + if (currentState.match(/[A-Za-z0-9_]+/)) { + wordParts.forEach(function (item, i) { + itLength = curLength + item.length; + if (delta >= curLength && delta <= itLength) { + currentState = item; + that.selection.clearSelection(); + that.moveCursorTo(row, curLength + currWordStart); + that.selection.selectTo(row, itLength + currWordStart); + } + curLength = itLength; + }); + } + var wordPairs = this.$toggleWordPairs; + var reg; + for (var i = 0; i < wordPairs.length; i++) { + var item = wordPairs[i]; + for (var j = 0; j <= 1; j++) { + var negate = +!j; + var firstCondition = currentState.match(new RegExp('^\\s?_?(' + lang.escapeRegExp(item[j]) + ')\\s?$', 'i')); + if (firstCondition) { + var secondCondition = currentState.match(new RegExp('([_]|^|\\s)(' + lang.escapeRegExp(firstCondition[1]) + ')($|\\s)', 'g')); + if (secondCondition) { + reg = currentState.replace(new RegExp(lang.escapeRegExp(item[j]), 'i'), function (result) { + var res = item[negate]; + if (result.toUpperCase() == result) { + res = res.toUpperCase(); + } + else if (result.charAt(0).toUpperCase() == result.charAt(0)) { + res = res.substr(0, 0) + item[negate].charAt(0).toUpperCase() + res.substr(1); + } + return res; + }); + this.insert(reg); + reg = ""; + } + } + } + } + }; + Editor.prototype.findLinkAt = function (row, column) { + var e_1, _a; + var line = this.session.getLine(row); + var wordParts = line.split(/((?:https?|ftp):\/\/[\S]+)/); + var columnPosition = column; + if (columnPosition < 0) + columnPosition = 0; + var previousPosition = 0, currentPosition = 0, match; + try { + for (var wordParts_1 = __values(wordParts), wordParts_1_1 = wordParts_1.next(); !wordParts_1_1.done; wordParts_1_1 = wordParts_1.next()) { + var item = wordParts_1_1.value; + currentPosition = previousPosition + item.length; + if (columnPosition >= previousPosition && columnPosition <= currentPosition) { + if (item.match(/((?:https?|ftp):\/\/[\S]+)/)) { + match = item.replace(/[\s:.,'";}\]]+$/, ""); + break; + } + } + previousPosition = currentPosition; + } + } + catch (e_1_1) { e_1 = { error: e_1_1 }; } + finally { + try { + if (wordParts_1_1 && !wordParts_1_1.done && (_a = wordParts_1.return)) _a.call(wordParts_1); + } + finally { if (e_1) throw e_1.error; } + } + return match; + }; + Editor.prototype.openLink = function () { + var cursor = this.selection.getCursor(); + var url = this.findLinkAt(cursor.row, cursor.column); + if (url) + window.open(url, '_blank'); + return url != null; + }; + Editor.prototype.removeLines = function () { + var rows = this.$getSelectedRows(); + this.session.removeFullLines(rows.first, rows.last); + this.clearSelection(); + }; + Editor.prototype.duplicateSelection = function () { + var sel = this.selection; + var doc = this.session; + var range = sel.getRange(); + var reverse = sel.isBackwards(); + if (range.isEmpty()) { + var row = range.start.row; + doc.duplicateLines(row, row); + } + else { + var point = reverse ? range.start : range.end; + var endPoint = doc.insert(point, doc.getTextRange(range), false); + range.start = point; + range.end = endPoint; + sel.setSelectionRange(range, reverse); + } + }; + Editor.prototype.moveLinesDown = function () { + this.$moveLines(1, false); + }; + Editor.prototype.moveLinesUp = function () { + this.$moveLines(-1, false); + }; + Editor.prototype.moveText = function (range, toPosition, copy) { + return this.session.moveText(range, toPosition, copy); + }; + Editor.prototype.copyLinesUp = function () { + this.$moveLines(-1, true); + }; + Editor.prototype.copyLinesDown = function () { + this.$moveLines(1, true); + }; + Editor.prototype.$moveLines = function (dir, copy) { + var rows, moved; + var selection = this.selection; + if (!selection.inMultiSelectMode || this.inVirtualSelectionMode) { + var range = selection.toOrientedRange(); + rows = this.$getSelectedRows(range); + moved = this.session.$moveLines(rows.first, rows.last, copy ? 0 : dir); + if (copy && dir == -1) + moved = 0; + range.moveBy(moved, 0); + selection.fromOrientedRange(range); + } + else { + var ranges = selection.rangeList.ranges; + selection.rangeList.detach(this.session); + this.inVirtualSelectionMode = true; + var diff = 0; + var totalDiff = 0; + var l = ranges.length; + for (var i = 0; i < l; i++) { + var rangeIndex = i; + ranges[i].moveBy(diff, 0); + rows = this.$getSelectedRows(ranges[i]); + var first = rows.first; + var last = rows.last; + while (++i < l) { + if (totalDiff) + ranges[i].moveBy(totalDiff, 0); + var subRows = this.$getSelectedRows(ranges[i]); + if (copy && subRows.first != last) + break; + else if (!copy && subRows.first > last + 1) + break; + last = subRows.last; + } + i--; + diff = this.session.$moveLines(first, last, copy ? 0 : dir); + if (copy && dir == -1) + rangeIndex = i + 1; + while (rangeIndex <= i) { + ranges[rangeIndex].moveBy(diff, 0); + rangeIndex++; + } + if (!copy) + diff = 0; + totalDiff += diff; + } + selection.fromOrientedRange(selection.ranges[0]); + selection.rangeList.attach(this.session); + this.inVirtualSelectionMode = false; + } + }; + Editor.prototype.$getSelectedRows = function (range) { + range = (range || this.getSelectionRange()).collapseRows(); + return { + first: this.session.getRowFoldStart(range.start.row), + last: this.session.getRowFoldEnd(range.end.row) + }; + }; + Editor.prototype.onCompositionStart = function (compositionState) { + this.renderer.showComposition(compositionState); + }; + Editor.prototype.onCompositionUpdate = function (text) { + this.renderer.setCompositionText(text); + }; + Editor.prototype.onCompositionEnd = function () { + this.renderer.hideComposition(); + }; + Editor.prototype.getFirstVisibleRow = function () { + return this.renderer.getFirstVisibleRow(); + }; + Editor.prototype.getLastVisibleRow = function () { + return this.renderer.getLastVisibleRow(); + }; + Editor.prototype.isRowVisible = function (row) { + return (row >= this.getFirstVisibleRow() && row <= this.getLastVisibleRow()); + }; + Editor.prototype.isRowFullyVisible = function (row) { + return (row >= this.renderer.getFirstFullyVisibleRow() && row <= this.renderer.getLastFullyVisibleRow()); + }; + Editor.prototype.$getVisibleRowCount = function () { + return this.renderer.getScrollBottomRow() - this.renderer.getScrollTopRow() + 1; + }; + Editor.prototype.$moveByPage = function (dir, select) { + var renderer = this.renderer; + var config = this.renderer.layerConfig; + var rows = dir * Math.floor(config.height / config.lineHeight); + if (select === true) { + this.selection.$moveSelection(function () { + this.moveCursorBy(rows, 0); + }); + } + else if (select === false) { + this.selection.moveCursorBy(rows, 0); + this.selection.clearSelection(); + } + var scrollTop = renderer.scrollTop; + renderer.scrollBy(0, rows * config.lineHeight); + if (select != null) + renderer.scrollCursorIntoView(null, 0.5); + renderer.animateScrolling(scrollTop); + }; + Editor.prototype.selectPageDown = function () { + this.$moveByPage(1, true); + }; + Editor.prototype.selectPageUp = function () { + this.$moveByPage(-1, true); + }; + Editor.prototype.gotoPageDown = function () { + this.$moveByPage(1, false); + }; + Editor.prototype.gotoPageUp = function () { + this.$moveByPage(-1, false); + }; + Editor.prototype.scrollPageDown = function () { + this.$moveByPage(1); + }; + Editor.prototype.scrollPageUp = function () { + this.$moveByPage(-1); + }; + Editor.prototype.scrollToRow = function (row) { + this.renderer.scrollToRow(row); + }; + Editor.prototype.scrollToLine = function (line, center, animate, callback) { + this.renderer.scrollToLine(line, center, animate, callback); + }; + Editor.prototype.centerSelection = function () { + var range = this.getSelectionRange(); + var pos = { + row: Math.floor(range.start.row + (range.end.row - range.start.row) / 2), + column: Math.floor(range.start.column + (range.end.column - range.start.column) / 2) + }; + this.renderer.alignCursor(pos, 0.5); + }; + Editor.prototype.getCursorPosition = function () { + return this.selection.getCursor(); + }; + Editor.prototype.getCursorPositionScreen = function () { + return this.session.documentToScreenPosition(this.getCursorPosition()); + }; + Editor.prototype.getSelectionRange = function () { + return this.selection.getRange(); + }; + Editor.prototype.selectAll = function () { + this.selection.selectAll(); + }; + Editor.prototype.clearSelection = function () { + this.selection.clearSelection(); + }; + Editor.prototype.moveCursorTo = function (row, column) { + this.selection.moveCursorTo(row, column); + }; + Editor.prototype.moveCursorToPosition = function (pos) { + this.selection.moveCursorToPosition(pos); + }; + Editor.prototype.jumpToMatching = function (select, expand) { + var cursor = this.getCursorPosition(); + var iterator = new TokenIterator(this.session, cursor.row, cursor.column); + var prevToken = iterator.getCurrentToken(); + var tokenCount = 0; + if (prevToken && prevToken.type.indexOf('tag-name') !== -1) { + prevToken = iterator.stepBackward(); + } + var token = prevToken || iterator.stepForward(); + if (!token) + return; + var matchType; + var found = false; + var depth = {}; + var i = cursor.column - token.start; + var bracketType; + var brackets = { + ")": "(", + "(": "(", + "]": "[", + "[": "[", + "{": "{", + "}": "{" + }; + do { + if (token.value.match(/[{}()\[\]]/g)) { + for (; i < token.value.length && !found; i++) { + if (!brackets[token.value[i]]) { + continue; + } + bracketType = brackets[token.value[i]] + '.' + token.type.replace("rparen", "lparen"); + if (isNaN(depth[bracketType])) { + depth[bracketType] = 0; + } + switch (token.value[i]) { + case '(': + case '[': + case '{': + depth[bracketType]++; + break; + case ')': + case ']': + case '}': + depth[bracketType]--; + if (depth[bracketType] === -1) { + matchType = 'bracket'; + found = true; + } + break; + } + } + } + else if (token.type.indexOf('tag-name') !== -1) { + if (isNaN(depth[token.value])) { + depth[token.value] = 0; + } + if (prevToken.value === '<' && tokenCount > 1) { + depth[token.value]++; + } + else if (prevToken.value === '= 0; --i) { + if (this.$tryReplace(ranges[i], replacement)) { + replaced++; + } + } + this.selection.setSelectionRange(selection); + return replaced; + }; + Editor.prototype.$tryReplace = function (range, replacement) { + var input = this.session.getTextRange(range); + replacement = this.$search.replace(input, replacement); + if (replacement !== null) { + range.end = this.session.replace(range, replacement); + return range; + } + else { + return null; + } + }; + Editor.prototype.getLastSearchOptions = function () { + return this.$search.getOptions(); + }; + Editor.prototype.find = function (needle, options, animate) { + if (!options) + options = {}; + if (typeof needle == "string" || needle instanceof RegExp) + options.needle = needle; + else if (typeof needle == "object") + oop.mixin(options, needle); + var range = this.selection.getRange(); + if (options.needle == null) { + needle = this.session.getTextRange(range) + || this.$search.$options.needle; + if (!needle) { + range = this.session.getWordRange(range.start.row, range.start.column); + needle = this.session.getTextRange(range); + } + this.$search.set({ needle: needle }); + } + this.$search.set(options); + if (!options.start) + this.$search.set({ start: range }); + var newRange = this.$search.find(this.session); + if (options.preventScroll) + return newRange; + if (newRange) { + this.revealRange(newRange, animate); + return newRange; + } + if (options.backwards) + range.start = range.end; + else + range.end = range.start; + this.selection.setRange(range); + }; + Editor.prototype.findNext = function (options, animate) { + this.find({ skipCurrent: true, backwards: false }, options, animate); + }; + Editor.prototype.findPrevious = function (options, animate) { + this.find(options, { skipCurrent: true, backwards: true }, animate); + }; + Editor.prototype.revealRange = function (range, animate) { + this.session.unfold(range); + this.selection.setSelectionRange(range); + var scrollTop = this.renderer.scrollTop; + this.renderer.scrollSelectionIntoView(range.start, range.end, 0.5); + if (animate !== false) + this.renderer.animateScrolling(scrollTop); + }; + Editor.prototype.undo = function () { + this.session.getUndoManager().undo(this.session); + this.renderer.scrollCursorIntoView(null, 0.5); + }; + Editor.prototype.redo = function () { + this.session.getUndoManager().redo(this.session); + this.renderer.scrollCursorIntoView(null, 0.5); + }; + Editor.prototype.destroy = function () { + if (this.$toDestroy) { + this.$toDestroy.forEach(function (el) { + el.destroy(); + }); + this.$toDestroy = null; + } + if (this.$mouseHandler) + this.$mouseHandler.destroy(); + this.renderer.destroy(); + this._signal("destroy", this); + if (this.session) + this.session.destroy(); + if (this._$emitInputEvent) + this._$emitInputEvent.cancel(); + this.removeAllListeners(); + }; + Editor.prototype.setAutoScrollEditorIntoView = function (enable) { + if (!enable) + return; + var rect; + var self = this; + var shouldScroll = false; + if (!this.$scrollAnchor) + this.$scrollAnchor = document.createElement("div"); + var scrollAnchor = this.$scrollAnchor; + scrollAnchor.style.cssText = "position:absolute"; + this.container.insertBefore(scrollAnchor, this.container.firstChild); + var onChangeSelection = this.on("changeSelection", function () { + shouldScroll = true; + }); + var onBeforeRender = this.renderer.on("beforeRender", function () { + if (shouldScroll) + rect = self.renderer.container.getBoundingClientRect(); + }); + var onAfterRender = this.renderer.on("afterRender", function () { + if (shouldScroll && rect && (self.isFocused() + || self.searchBox && self.searchBox.isFocused())) { + var renderer = self.renderer; + var pos = renderer.$cursorLayer.$pixelPos; + var config = renderer.layerConfig; + var top = pos.top - config.offset; + if (pos.top >= 0 && top + rect.top < 0) { + shouldScroll = true; + } + else if (pos.top < config.height && + pos.top + rect.top + config.lineHeight > window.innerHeight) { + shouldScroll = false; + } + else { + shouldScroll = null; + } + if (shouldScroll != null) { + scrollAnchor.style.top = top + "px"; + scrollAnchor.style.left = pos.left + "px"; + scrollAnchor.style.height = config.lineHeight + "px"; + scrollAnchor.scrollIntoView(shouldScroll); + } + shouldScroll = rect = null; + } + }); + this.setAutoScrollEditorIntoView = function (enable) { + if (enable) + return; + delete this.setAutoScrollEditorIntoView; + this.off("changeSelection", onChangeSelection); + this.renderer.off("afterRender", onAfterRender); + this.renderer.off("beforeRender", onBeforeRender); + }; + }; + Editor.prototype.$resetCursorStyle = function () { + var style = this.$cursorStyle || "ace"; + var cursorLayer = this.renderer.$cursorLayer; + if (!cursorLayer) + return; + cursorLayer.setSmoothBlinking(/smooth/.test(style)); + cursorLayer.isBlinking = !this.$readOnly && style != "wide"; + dom.setCssClass(cursorLayer.element, "ace_slim-cursors", /slim/.test(style)); + }; + Editor.prototype.prompt = function (message, options, callback) { + var editor = this; + config.loadModule("ace/ext/prompt", function (module) { + module.prompt(editor, message, options, callback); + }); + }; + return Editor; +}()); +Editor.$uid = 0; +Editor.prototype.curOp = null; +Editor.prototype.prevOp = {}; +Editor.prototype.$mergeableCommands = ["backspace", "del", "insertstring"]; +Editor.prototype.$toggleWordPairs = [ + ["first", "last"], + ["true", "false"], + ["yes", "no"], + ["width", "height"], + ["top", "bottom"], + ["right", "left"], + ["on", "off"], + ["x", "y"], + ["get", "set"], + ["max", "min"], + ["horizontal", "vertical"], + ["show", "hide"], + ["add", "remove"], + ["up", "down"], + ["before", "after"], + ["even", "odd"], + ["in", "out"], + ["inside", "outside"], + ["next", "previous"], + ["increase", "decrease"], + ["attach", "detach"], + ["&&", "||"], + ["==", "!="] +]; +oop.implement(Editor.prototype, EventEmitter); +config.defineOptions(Editor.prototype, "editor", { + selectionStyle: { + set: function (style) { + this.onSelectionChange(); + this._signal("changeSelectionStyle", { data: style }); + }, + initialValue: "line" + }, + highlightActiveLine: { + set: function () { this.$updateHighlightActiveLine(); }, + initialValue: true + }, + highlightSelectedWord: { + set: function (shouldHighlight) { this.$onSelectionChange(); }, + initialValue: true + }, + readOnly: { + set: function (readOnly) { + this.textInput.setReadOnly(readOnly); + this.$resetCursorStyle(); + }, + initialValue: false + }, + copyWithEmptySelection: { + set: function (value) { + this.textInput.setCopyWithEmptySelection(value); + }, + initialValue: false + }, + cursorStyle: { + set: function (val) { this.$resetCursorStyle(); }, + values: ["ace", "slim", "smooth", "wide"], + initialValue: "ace" + }, + mergeUndoDeltas: { + values: [false, true, "always"], + initialValue: true + }, + behavioursEnabled: { initialValue: true }, + wrapBehavioursEnabled: { initialValue: true }, + enableAutoIndent: { initialValue: true }, + autoScrollEditorIntoView: { + set: function (val) { this.setAutoScrollEditorIntoView(val); } + }, + keyboardHandler: { + set: function (val) { this.setKeyboardHandler(val); }, + get: function () { return this.$keybindingId; }, + handlesSet: true + }, + value: { + set: function (val) { this.session.setValue(val); }, + get: function () { return this.getValue(); }, + handlesSet: true, + hidden: true + }, + session: { + set: function (val) { this.setSession(val); }, + get: function () { return this.session; }, + handlesSet: true, + hidden: true + }, + showLineNumbers: { + set: function (show) { + this.renderer.$gutterLayer.setShowLineNumbers(show); + this.renderer.$loop.schedule(this.renderer.CHANGE_GUTTER); + if (show && this.$relativeLineNumbers) + relativeNumberRenderer.attach(this); + else + relativeNumberRenderer.detach(this); + }, + initialValue: true + }, + relativeLineNumbers: { + set: function (value) { + if (this.$showLineNumbers && value) + relativeNumberRenderer.attach(this); + else + relativeNumberRenderer.detach(this); + } + }, + placeholder: { + set: function (message) { + if (!this.$updatePlaceholder) { + this.$updatePlaceholder = function () { + var hasValue = this.session && (this.renderer.$composition || + this.session.getLength() > 1 || this.session.getLine(0).length > 0); + if (hasValue && this.renderer.placeholderNode) { + this.renderer.off("afterRender", this.$updatePlaceholder); + dom.removeCssClass(this.container, "ace_hasPlaceholder"); + this.renderer.placeholderNode.remove(); + this.renderer.placeholderNode = null; + } + else if (!hasValue && !this.renderer.placeholderNode) { + this.renderer.on("afterRender", this.$updatePlaceholder); + dom.addCssClass(this.container, "ace_hasPlaceholder"); + var el = dom.createElement("div"); + el.className = "ace_placeholder"; + el.textContent = this.$placeholder || ""; + this.renderer.placeholderNode = el; + this.renderer.content.appendChild(this.renderer.placeholderNode); + } + else if (!hasValue && this.renderer.placeholderNode) { + this.renderer.placeholderNode.textContent = this.$placeholder || ""; + } + }.bind(this); + this.on("input", this.$updatePlaceholder); + } + this.$updatePlaceholder(); + } + }, + enableKeyboardAccessibility: { + set: function (value) { + var blurCommand = { + name: "blurTextInput", + description: "Set focus to the editor content div to allow tabbing through the page", + bindKey: "Esc", + exec: function (editor) { + editor.blur(); + editor.renderer.scroller.focus(); + }, + readOnly: true + }; + var focusOnEnterKeyup = function (e) { + if (e.target == this.renderer.scroller && e.keyCode === keys['enter']) { + e.preventDefault(); + var row = this.getCursorPosition().row; + if (!this.isRowVisible(row)) + this.scrollToLine(row, true, true); + this.focus(); + } + }; + var gutterKeyboardHandler; + if (value) { + this.renderer.enableKeyboardAccessibility = true; + this.renderer.keyboardFocusClassName = "ace_keyboard-focus"; + this.textInput.getElement().setAttribute("tabindex", -1); + this.textInput.setNumberOfExtraLines(useragent.isWin ? 3 : 0); + this.renderer.scroller.setAttribute("tabindex", 0); + this.renderer.scroller.setAttribute("role", "group"); + this.renderer.scroller.setAttribute("aria-roledescription", nls("editor")); + this.renderer.scroller.classList.add(this.renderer.keyboardFocusClassName); + this.renderer.scroller.setAttribute("aria-label", nls("Editor content, press Enter to start editing, press Escape to exit")); + this.renderer.scroller.addEventListener("keyup", focusOnEnterKeyup.bind(this)); + this.commands.addCommand(blurCommand); + this.renderer.$gutter.setAttribute("tabindex", 0); + this.renderer.$gutter.setAttribute("aria-hidden", false); + this.renderer.$gutter.setAttribute("role", "group"); + this.renderer.$gutter.setAttribute("aria-roledescription", nls("editor")); + this.renderer.$gutter.setAttribute("aria-label", nls("Editor gutter, press Enter to interact with controls using arrow keys, press Escape to exit")); + this.renderer.$gutter.classList.add(this.renderer.keyboardFocusClassName); + this.renderer.content.setAttribute("aria-hidden", true); + if (!gutterKeyboardHandler) + gutterKeyboardHandler = new GutterKeyboardHandler(this); + gutterKeyboardHandler.addListener(); + } + else { + this.renderer.enableKeyboardAccessibility = false; + this.textInput.getElement().setAttribute("tabindex", 0); + this.textInput.setNumberOfExtraLines(0); + this.renderer.scroller.setAttribute("tabindex", -1); + this.renderer.scroller.removeAttribute("role"); + this.renderer.scroller.removeAttribute("aria-roledescription"); + this.renderer.scroller.classList.remove(this.renderer.keyboardFocusClassName); + this.renderer.scroller.removeAttribute("aria-label"); + this.renderer.scroller.removeEventListener("keyup", focusOnEnterKeyup.bind(this)); + this.commands.removeCommand(blurCommand); + this.renderer.content.removeAttribute("aria-hidden"); + this.renderer.$gutter.setAttribute("tabindex", -1); + this.renderer.$gutter.setAttribute("aria-hidden", true); + this.renderer.$gutter.removeAttribute("role"); + this.renderer.$gutter.removeAttribute("aria-roledescription"); + this.renderer.$gutter.removeAttribute("aria-label"); + this.renderer.$gutter.classList.remove(this.renderer.keyboardFocusClassName); + if (gutterKeyboardHandler) + gutterKeyboardHandler.removeListener(); + } + }, + initialValue: false + }, + customScrollbar: "renderer", + hScrollBarAlwaysVisible: "renderer", + vScrollBarAlwaysVisible: "renderer", + highlightGutterLine: "renderer", + animatedScroll: "renderer", + showInvisibles: "renderer", + showPrintMargin: "renderer", + printMarginColumn: "renderer", + printMargin: "renderer", + fadeFoldWidgets: "renderer", + showFoldWidgets: "renderer", + displayIndentGuides: "renderer", + highlightIndentGuides: "renderer", + showGutter: "renderer", + fontSize: "renderer", + fontFamily: "renderer", + maxLines: "renderer", + minLines: "renderer", + scrollPastEnd: "renderer", + fixedWidthGutter: "renderer", + theme: "renderer", + hasCssTransforms: "renderer", + maxPixelHeight: "renderer", + useTextareaForIME: "renderer", + useResizeObserver: "renderer", + useSvgGutterIcons: "renderer", + showFoldedAnnotations: "renderer", + scrollSpeed: "$mouseHandler", + dragDelay: "$mouseHandler", + dragEnabled: "$mouseHandler", + focusTimeout: "$mouseHandler", + tooltipFollowsMouse: "$mouseHandler", + firstLineNumber: "session", + overwrite: "session", + newLineMode: "session", + useWorker: "session", + useSoftTabs: "session", + navigateWithinSoftTabs: "session", + tabSize: "session", + wrap: "session", + indentedSoftWrap: "session", + foldStyle: "session", + mode: "session" +}); +var relativeNumberRenderer = { + getText: function (session, row) { + return (Math.abs(session.selection.lead.row - row) || (row + 1 + (row < 9 ? "\xb7" : ""))) + ""; + }, + getWidth: function (session, lastLineNumber, config) { + return Math.max(lastLineNumber.toString().length, (config.lastRow + 1).toString().length, 2) * config.characterWidth; + }, + update: function (e, editor) { + editor.renderer.$loop.schedule(editor.renderer.CHANGE_GUTTER); + }, + attach: function (editor) { + editor.renderer.$gutterLayer.$renderer = this; + editor.on("changeSelection", this.update); + this.update(null, editor); + }, + detach: function (editor) { + if (editor.renderer.$gutterLayer.$renderer == this) + editor.renderer.$gutterLayer.$renderer = null; + editor.off("changeSelection", this.update); + this.update(null, editor); + } +}; +exports.Editor = Editor; + +}); + +ace.define("ace/layer/lines",["require","exports","module","ace/lib/dom"], function(require, exports, module){"use strict"; +var dom = require("../lib/dom"); +var Lines = /** @class */ (function () { + function Lines(element, canvasHeight) { + this.element = element; + this.canvasHeight = canvasHeight || 500000; + this.element.style.height = (this.canvasHeight * 2) + "px"; + this.cells = []; + this.cellCache = []; + this.$offsetCoefficient = 0; + } + Lines.prototype.moveContainer = function (config) { + dom.translate(this.element, 0, -((config.firstRowScreen * config.lineHeight) % this.canvasHeight) - config.offset * this.$offsetCoefficient); + }; + Lines.prototype.pageChanged = function (oldConfig, newConfig) { + return (Math.floor((oldConfig.firstRowScreen * oldConfig.lineHeight) / this.canvasHeight) !== + Math.floor((newConfig.firstRowScreen * newConfig.lineHeight) / this.canvasHeight)); + }; + Lines.prototype.computeLineTop = function (row, config, session) { + var screenTop = config.firstRowScreen * config.lineHeight; + var screenPage = Math.floor(screenTop / this.canvasHeight); + var lineTop = session.documentToScreenRow(row, 0) * config.lineHeight; + return lineTop - (screenPage * this.canvasHeight); + }; + Lines.prototype.computeLineHeight = function (row, config, session) { + return config.lineHeight * session.getRowLineCount(row); + }; + Lines.prototype.getLength = function () { + return this.cells.length; + }; + Lines.prototype.get = function (index) { + return this.cells[index]; + }; + Lines.prototype.shift = function () { + this.$cacheCell(this.cells.shift()); + }; + Lines.prototype.pop = function () { + this.$cacheCell(this.cells.pop()); + }; + Lines.prototype.push = function (cell) { + if (Array.isArray(cell)) { + this.cells.push.apply(this.cells, cell); + var fragment = dom.createFragment(this.element); + for (var i = 0; i < cell.length; i++) { + fragment.appendChild(cell[i].element); + } + this.element.appendChild(fragment); + } + else { + this.cells.push(cell); + this.element.appendChild(cell.element); + } + }; + Lines.prototype.unshift = function (cell) { + if (Array.isArray(cell)) { + this.cells.unshift.apply(this.cells, cell); + var fragment = dom.createFragment(this.element); + for (var i = 0; i < cell.length; i++) { + fragment.appendChild(cell[i].element); + } + if (this.element.firstChild) + this.element.insertBefore(fragment, this.element.firstChild); + else + this.element.appendChild(fragment); + } + else { + this.cells.unshift(cell); + this.element.insertAdjacentElement("afterbegin", cell.element); + } + }; + Lines.prototype.last = function () { + if (this.cells.length) + return this.cells[this.cells.length - 1]; + else + return null; + }; + Lines.prototype.$cacheCell = function (cell) { + if (!cell) + return; + cell.element.remove(); + this.cellCache.push(cell); + }; + Lines.prototype.createCell = function (row, config, session, initElement) { + var cell = this.cellCache.pop(); + if (!cell) { + var element = dom.createElement("div"); + if (initElement) + initElement(element); + this.element.appendChild(element); + cell = { + element: element, + text: "", + row: row + }; + } + cell.row = row; + return cell; + }; + return Lines; +}()); +exports.Lines = Lines; + +}); + +ace.define("ace/layer/gutter",["require","exports","module","ace/lib/dom","ace/lib/oop","ace/lib/lang","ace/lib/event_emitter","ace/layer/lines","ace/config"], function(require, exports, module){"use strict"; +var dom = require("../lib/dom"); +var oop = require("../lib/oop"); +var lang = require("../lib/lang"); +var EventEmitter = require("../lib/event_emitter").EventEmitter; +var Lines = require("./lines").Lines; +var nls = require("../config").nls; +var Gutter = /** @class */ (function () { + function Gutter(parentEl) { + this.element = dom.createElement("div"); + this.element.className = "ace_layer ace_gutter-layer"; + parentEl.appendChild(this.element); + this.setShowFoldWidgets(this.$showFoldWidgets); + this.gutterWidth = 0; + this.$annotations = []; + this.$updateAnnotations = this.$updateAnnotations.bind(this); + this.$lines = new Lines(this.element); + this.$lines.$offsetCoefficient = 1; + } + Gutter.prototype.setSession = function (session) { + if (this.session) + this.session.off("change", this.$updateAnnotations); + this.session = session; + if (session) + session.on("change", this.$updateAnnotations); + }; + Gutter.prototype.addGutterDecoration = function (row, className) { + if (window.console) + console.warn && console.warn("deprecated use session.addGutterDecoration"); + this.session.addGutterDecoration(row, className); + }; + Gutter.prototype.removeGutterDecoration = function (row, className) { + if (window.console) + console.warn && console.warn("deprecated use session.removeGutterDecoration"); + this.session.removeGutterDecoration(row, className); + }; + Gutter.prototype.setAnnotations = function (annotations) { + this.$annotations = []; + for (var i = 0; i < annotations.length; i++) { + var annotation = annotations[i]; + var row = annotation.row; + var rowInfo = this.$annotations[row]; + if (!rowInfo) + rowInfo = this.$annotations[row] = { text: [], type: [] }; + var annoText = annotation.text; + var annoType = annotation.type; + annoText = annoText ? lang.escapeHTML(annoText) : annotation.html || ""; + if (rowInfo.text.indexOf(annoText) === -1) { + rowInfo.text.push(annoText); + rowInfo.type.push(annoType); + } + var className = annotation.className; + if (className) + rowInfo.className = className; + else if (annoType == "error") + rowInfo.className = " ace_error"; + else if (annoType == "warning" && rowInfo.className != " ace_error") + rowInfo.className = " ace_warning"; + else if (annoType == "info" && (!rowInfo.className)) + rowInfo.className = " ace_info"; + } + }; + Gutter.prototype.$updateAnnotations = function (delta) { + if (!this.$annotations.length) + return; + var firstRow = delta.start.row; + var len = delta.end.row - firstRow; + if (len === 0) { + } + else if (delta.action == 'remove') { + this.$annotations.splice(firstRow, len + 1, null); + } + else { + var args = new Array(len + 1); + args.unshift(firstRow, 1); + this.$annotations.splice.apply(this.$annotations, args); + } + }; + Gutter.prototype.update = function (config) { + this.config = config; + var session = this.session; + var firstRow = config.firstRow; + var lastRow = Math.min(config.lastRow + config.gutterOffset, // needed to compensate for hor scollbar + session.getLength() - 1); + this.oldLastRow = lastRow; + this.config = config; + this.$lines.moveContainer(config); + this.$updateCursorRow(); + var fold = session.getNextFoldLine(firstRow); + var foldStart = fold ? fold.start.row : Infinity; + var cell = null; + var index = -1; + var row = firstRow; + while (true) { + if (row > foldStart) { + row = fold.end.row + 1; + fold = session.getNextFoldLine(row, fold); + foldStart = fold ? fold.start.row : Infinity; + } + if (row > lastRow) { + while (this.$lines.getLength() > index + 1) + this.$lines.pop(); + break; + } + cell = this.$lines.get(++index); + if (cell) { + cell.row = row; + } + else { + cell = this.$lines.createCell(row, config, this.session, onCreateCell); + this.$lines.push(cell); + } + this.$renderCell(cell, config, fold, row); + row++; + } + this._signal("afterRender"); + this.$updateGutterWidth(config); + }; + Gutter.prototype.$updateGutterWidth = function (config) { + var session = this.session; + var gutterRenderer = session.gutterRenderer || this.$renderer; + var firstLineNumber = session.$firstLineNumber; + var lastLineText = this.$lines.last() ? this.$lines.last().text : ""; + if (this.$fixedWidth || session.$useWrapMode) + lastLineText = session.getLength() + firstLineNumber - 1; + var gutterWidth = gutterRenderer + ? gutterRenderer.getWidth(session, lastLineText, config) + : lastLineText.toString().length * config.characterWidth; + var padding = this.$padding || this.$computePadding(); + gutterWidth += padding.left + padding.right; + if (gutterWidth !== this.gutterWidth && !isNaN(gutterWidth)) { + this.gutterWidth = gutterWidth; + this.element.parentNode.style.width = + this.element.style.width = Math.ceil(this.gutterWidth) + "px"; + this._signal("changeGutterWidth", gutterWidth); + } + }; + Gutter.prototype.$updateCursorRow = function () { + if (!this.$highlightGutterLine) + return; + var position = this.session.selection.getCursor(); + if (this.$cursorRow === position.row) + return; + this.$cursorRow = position.row; + }; + Gutter.prototype.updateLineHighlight = function () { + if (!this.$highlightGutterLine) + return; + var row = this.session.selection.cursor.row; + this.$cursorRow = row; + if (this.$cursorCell && this.$cursorCell.row == row) + return; + if (this.$cursorCell) + this.$cursorCell.element.className = this.$cursorCell.element.className.replace("ace_gutter-active-line ", ""); + var cells = this.$lines.cells; + this.$cursorCell = null; + for (var i = 0; i < cells.length; i++) { + var cell = cells[i]; + if (cell.row >= this.$cursorRow) { + if (cell.row > this.$cursorRow) { + var fold = this.session.getFoldLine(this.$cursorRow); + if (i > 0 && fold && fold.start.row == cells[i - 1].row) + cell = cells[i - 1]; + else + break; + } + cell.element.className = "ace_gutter-active-line " + cell.element.className; + this.$cursorCell = cell; + break; + } + } + }; + Gutter.prototype.scrollLines = function (config) { + var oldConfig = this.config; + this.config = config; + this.$updateCursorRow(); + if (this.$lines.pageChanged(oldConfig, config)) + return this.update(config); + this.$lines.moveContainer(config); + var lastRow = Math.min(config.lastRow + config.gutterOffset, // needed to compensate for hor scollbar + this.session.getLength() - 1); + var oldLastRow = this.oldLastRow; + this.oldLastRow = lastRow; + if (!oldConfig || oldLastRow < config.firstRow) + return this.update(config); + if (lastRow < oldConfig.firstRow) + return this.update(config); + if (oldConfig.firstRow < config.firstRow) + for (var row = this.session.getFoldedRowCount(oldConfig.firstRow, config.firstRow - 1); row > 0; row--) + this.$lines.shift(); + if (oldLastRow > lastRow) + for (var row = this.session.getFoldedRowCount(lastRow + 1, oldLastRow); row > 0; row--) + this.$lines.pop(); + if (config.firstRow < oldConfig.firstRow) { + this.$lines.unshift(this.$renderLines(config, config.firstRow, oldConfig.firstRow - 1)); + } + if (lastRow > oldLastRow) { + this.$lines.push(this.$renderLines(config, oldLastRow + 1, lastRow)); + } + this.updateLineHighlight(); + this._signal("afterRender"); + this.$updateGutterWidth(config); + }; + Gutter.prototype.$renderLines = function (config, firstRow, lastRow) { + var fragment = []; + var row = firstRow; + var foldLine = this.session.getNextFoldLine(row); + var foldStart = foldLine ? foldLine.start.row : Infinity; + while (true) { + if (row > foldStart) { + row = foldLine.end.row + 1; + foldLine = this.session.getNextFoldLine(row, foldLine); + foldStart = foldLine ? foldLine.start.row : Infinity; + } + if (row > lastRow) + break; + var cell = this.$lines.createCell(row, config, this.session, onCreateCell); + this.$renderCell(cell, config, foldLine, row); + fragment.push(cell); + row++; + } + return fragment; + }; + Gutter.prototype.$renderCell = function (cell, config, fold, row) { + var element = cell.element; + var session = this.session; + var textNode = element.childNodes[0]; + var foldWidget = element.childNodes[1]; + var annotationNode = element.childNodes[2]; + var annotationIconNode = annotationNode.firstChild; + var firstLineNumber = session.$firstLineNumber; + var breakpoints = session.$breakpoints; + var decorations = session.$decorations; + var gutterRenderer = session.gutterRenderer || this.$renderer; + var foldWidgets = this.$showFoldWidgets && session.foldWidgets; + var foldStart = fold ? fold.start.row : Number.MAX_VALUE; + var lineHeight = config.lineHeight + "px"; + var className = this.$useSvgGutterIcons ? "ace_gutter-cell_svg-icons " : "ace_gutter-cell "; + var iconClassName = this.$useSvgGutterIcons ? "ace_icon_svg" : "ace_icon"; + var rowText = (gutterRenderer + ? gutterRenderer.getText(session, row) + : row + firstLineNumber).toString(); + if (this.$highlightGutterLine) { + if (row == this.$cursorRow || (fold && row < this.$cursorRow && row >= foldStart && this.$cursorRow <= fold.end.row)) { + className += "ace_gutter-active-line "; + if (this.$cursorCell != cell) { + if (this.$cursorCell) + this.$cursorCell.element.className = this.$cursorCell.element.className.replace("ace_gutter-active-line ", ""); + this.$cursorCell = cell; + } + } + } + if (breakpoints[row]) + className += breakpoints[row]; + if (decorations[row]) + className += decorations[row]; + if (this.$annotations[row] && row !== foldStart) + className += this.$annotations[row].className; + if (foldWidgets) { + var c = foldWidgets[row]; + if (c == null) + c = foldWidgets[row] = session.getFoldWidget(row); + } + if (c) { + var foldClass = "ace_fold-widget ace_" + c; + var isClosedFold = c == "start" && row == foldStart && row < fold.end.row; + if (isClosedFold) { + foldClass += " ace_closed"; + var foldAnnotationClass = ''; + var annotationInFold = false; + for (var i = row + 1; i <= fold.end.row; i++) { + if (!this.$annotations[i]) + continue; + if (this.$annotations[i].className === " ace_error") { + annotationInFold = true; + foldAnnotationClass = " ace_error_fold"; + break; + } + if (this.$annotations[i].className === " ace_warning") { + annotationInFold = true; + foldAnnotationClass = " ace_warning_fold"; + continue; + } + } + className += foldAnnotationClass; + } + else + foldClass += " ace_open"; + if (foldWidget.className != foldClass) + foldWidget.className = foldClass; + dom.setStyle(foldWidget.style, "height", lineHeight); + dom.setStyle(foldWidget.style, "display", "inline-block"); + foldWidget.setAttribute("role", "button"); + foldWidget.setAttribute("tabindex", "-1"); + var foldRange = session.getFoldWidgetRange(row); + if (foldRange) + foldWidget.setAttribute("aria-label", nls("Toggle code folding, rows $0 through $1", [foldRange.start.row + 1, foldRange.end.row + 1])); + else { + if (fold) + foldWidget.setAttribute("aria-label", nls("Toggle code folding, rows $0 through $1", [fold.start.row + 1, fold.end.row + 1])); + else + foldWidget.setAttribute("aria-label", nls("Toggle code folding, row $0", [row + 1])); + } + if (isClosedFold) { + foldWidget.setAttribute("aria-expanded", "false"); + foldWidget.setAttribute("title", nls("Unfold code")); + } + else { + foldWidget.setAttribute("aria-expanded", "true"); + foldWidget.setAttribute("title", nls("Fold code")); + } + } + else { + if (foldWidget) { + dom.setStyle(foldWidget.style, "display", "none"); + foldWidget.setAttribute("tabindex", "0"); + foldWidget.removeAttribute("role"); + foldWidget.removeAttribute("aria-label"); + } + } + if (annotationInFold && this.$showFoldedAnnotations) { + annotationNode.className = "ace_gutter_annotation"; + annotationIconNode.className = iconClassName; + annotationIconNode.className += foldAnnotationClass; + dom.setStyle(annotationIconNode.style, "height", lineHeight); + dom.setStyle(annotationNode.style, "display", "block"); + dom.setStyle(annotationNode.style, "height", lineHeight); + annotationNode.setAttribute("aria-label", nls("Read annotations row $0", [rowText])); + annotationNode.setAttribute("tabindex", "-1"); + annotationNode.setAttribute("role", "button"); + } + else if (this.$annotations[row]) { + annotationNode.className = "ace_gutter_annotation"; + annotationIconNode.className = iconClassName; + if (this.$useSvgGutterIcons) + annotationIconNode.className += this.$annotations[row].className; + else + element.classList.add(this.$annotations[row].className.replace(" ", "")); + dom.setStyle(annotationIconNode.style, "height", lineHeight); + dom.setStyle(annotationNode.style, "display", "block"); + dom.setStyle(annotationNode.style, "height", lineHeight); + annotationNode.setAttribute("aria-label", nls("Read annotations row $0", [rowText])); + annotationNode.setAttribute("tabindex", "-1"); + annotationNode.setAttribute("role", "button"); + } + else { + dom.setStyle(annotationNode.style, "display", "none"); + annotationNode.removeAttribute("aria-label"); + annotationNode.removeAttribute("role"); + annotationNode.setAttribute("tabindex", "0"); + } + if (rowText !== textNode.data) { + textNode.data = rowText; + } + if (element.className != className) + element.className = className; + dom.setStyle(cell.element.style, "height", this.$lines.computeLineHeight(row, config, session) + "px"); + dom.setStyle(cell.element.style, "top", this.$lines.computeLineTop(row, config, session) + "px"); + cell.text = rowText; + if (annotationNode.style.display === "none" && foldWidget.style.display === "none") + cell.element.setAttribute("aria-hidden", true); + else + cell.element.setAttribute("aria-hidden", false); + return cell; + }; + Gutter.prototype.setHighlightGutterLine = function (highlightGutterLine) { + this.$highlightGutterLine = highlightGutterLine; + }; + Gutter.prototype.setShowLineNumbers = function (show) { + this.$renderer = !show && { + getWidth: function () { return 0; }, + getText: function () { return ""; } + }; + }; + Gutter.prototype.getShowLineNumbers = function () { + return this.$showLineNumbers; + }; + Gutter.prototype.setShowFoldWidgets = function (show) { + if (show) + dom.addCssClass(this.element, "ace_folding-enabled"); + else + dom.removeCssClass(this.element, "ace_folding-enabled"); + this.$showFoldWidgets = show; + this.$padding = null; + }; + Gutter.prototype.getShowFoldWidgets = function () { + return this.$showFoldWidgets; + }; + Gutter.prototype.$computePadding = function () { + if (!this.element.firstChild) + return { left: 0, right: 0 }; + var style = dom.computedStyle(this.element.firstChild); + this.$padding = {}; + this.$padding.left = (parseInt(style.borderLeftWidth) || 0) + + (parseInt(style.paddingLeft) || 0) + 1; + this.$padding.right = (parseInt(style.borderRightWidth) || 0) + + (parseInt(style.paddingRight) || 0); + return this.$padding; + }; + Gutter.prototype.getRegion = function (point) { + var padding = this.$padding || this.$computePadding(); + var rect = this.element.getBoundingClientRect(); + if (point.x < padding.left + rect.left) + return "markers"; + if (this.$showFoldWidgets && point.x > rect.right - padding.right) + return "foldWidgets"; + }; + return Gutter; +}()); +Gutter.prototype.$fixedWidth = false; +Gutter.prototype.$highlightGutterLine = true; +Gutter.prototype.$renderer = ""; +Gutter.prototype.$showLineNumbers = true; +Gutter.prototype.$showFoldWidgets = true; +oop.implement(Gutter.prototype, EventEmitter); +function onCreateCell(element) { + var textNode = document.createTextNode(''); + element.appendChild(textNode); + var foldWidget = dom.createElement("span"); + element.appendChild(foldWidget); + var annotationNode = dom.createElement("span"); + element.appendChild(annotationNode); + var annotationIconNode = dom.createElement("span"); + annotationNode.appendChild(annotationIconNode); + return element; +} +exports.Gutter = Gutter; + +}); + +ace.define("ace/layer/marker",["require","exports","module","ace/range","ace/lib/dom"], function(require, exports, module){"use strict"; +var Range = require("../range").Range; +var dom = require("../lib/dom"); +var Marker = /** @class */ (function () { + function Marker(parentEl) { + this.element = dom.createElement("div"); + this.element.className = "ace_layer ace_marker-layer"; + parentEl.appendChild(this.element); + } + Marker.prototype.setPadding = function (padding) { + this.$padding = padding; + }; + Marker.prototype.setSession = function (session) { + this.session = session; + }; + Marker.prototype.setMarkers = function (markers) { + this.markers = markers; + }; + Marker.prototype.elt = function (className, css) { + var x = this.i != -1 && this.element.childNodes[this.i]; + if (!x) { + x = document.createElement("div"); + this.element.appendChild(x); + this.i = -1; + } + else { + this.i++; + } + x.style.cssText = css; + x.className = className; + }; + Marker.prototype.update = function (config) { + if (!config) + return; + this.config = config; + this.i = 0; + var html; + for (var key in this.markers) { + var marker = this.markers[key]; + if (!marker.range) { + marker.update(html, this, this.session, config); + continue; + } + var range = marker.range.clipRows(config.firstRow, config.lastRow); + if (range.isEmpty()) + continue; + range = range.toScreenRange(this.session); + if (marker.renderer) { + var top = this.$getTop(range.start.row, config); + var left = this.$padding + range.start.column * config.characterWidth; + marker.renderer(html, range, left, top, config); + } + else if (marker.type == "fullLine") { + this.drawFullLineMarker(html, range, marker.clazz, config); + } + else if (marker.type == "screenLine") { + this.drawScreenLineMarker(html, range, marker.clazz, config); + } + else if (range.isMultiLine()) { + if (marker.type == "text") + this.drawTextMarker(html, range, marker.clazz, config); + else + this.drawMultiLineMarker(html, range, marker.clazz, config); + } + else { + this.drawSingleLineMarker(html, range, marker.clazz + " ace_start" + " ace_br15", config); + } + } + if (this.i != -1) { + while (this.i < this.element.childElementCount) + this.element.removeChild(this.element.lastChild); + } + }; + Marker.prototype.$getTop = function (row, layerConfig) { + return (row - layerConfig.firstRowScreen) * layerConfig.lineHeight; + }; + Marker.prototype.drawTextMarker = function (stringBuilder, range, clazz, layerConfig, extraStyle) { + var session = this.session; + var start = range.start.row; + var end = range.end.row; + var row = start; + var prev = 0; + var curr = 0; + var next = session.getScreenLastRowColumn(row); + var lineRange = new Range(row, range.start.column, row, curr); + for (; row <= end; row++) { + lineRange.start.row = lineRange.end.row = row; + lineRange.start.column = row == start ? range.start.column : session.getRowWrapIndent(row); + lineRange.end.column = next; + prev = curr; + curr = next; + next = row + 1 < end ? session.getScreenLastRowColumn(row + 1) : row == end ? 0 : range.end.column; + this.drawSingleLineMarker(stringBuilder, lineRange, clazz + (row == start ? " ace_start" : "") + " ace_br" + + getBorderClass(row == start || row == start + 1 && range.start.column, prev < curr, curr > next, row == end), layerConfig, row == end ? 0 : 1, extraStyle); + } + }; + Marker.prototype.drawMultiLineMarker = function (stringBuilder, range, clazz, config, extraStyle) { + var padding = this.$padding; + var height = config.lineHeight; + var top = this.$getTop(range.start.row, config); + var left = padding + range.start.column * config.characterWidth; + extraStyle = extraStyle || ""; + if (this.session.$bidiHandler.isBidiRow(range.start.row)) { + var range1 = range.clone(); + range1.end.row = range1.start.row; + range1.end.column = this.session.getLine(range1.start.row).length; + this.drawBidiSingleLineMarker(stringBuilder, range1, clazz + " ace_br1 ace_start", config, null, extraStyle); + } + else { + this.elt(clazz + " ace_br1 ace_start", "height:" + height + "px;" + "right:0;" + "top:" + top + "px;left:" + left + "px;" + (extraStyle || "")); + } + if (this.session.$bidiHandler.isBidiRow(range.end.row)) { + var range1 = range.clone(); + range1.start.row = range1.end.row; + range1.start.column = 0; + this.drawBidiSingleLineMarker(stringBuilder, range1, clazz + " ace_br12", config, null, extraStyle); + } + else { + top = this.$getTop(range.end.row, config); + var width = range.end.column * config.characterWidth; + this.elt(clazz + " ace_br12", "height:" + height + "px;" + + "width:" + width + "px;" + + "top:" + top + "px;" + + "left:" + padding + "px;" + (extraStyle || "")); + } + height = (range.end.row - range.start.row - 1) * config.lineHeight; + if (height <= 0) + return; + top = this.$getTop(range.start.row + 1, config); + var radiusClass = (range.start.column ? 1 : 0) | (range.end.column ? 0 : 8); + this.elt(clazz + (radiusClass ? " ace_br" + radiusClass : ""), "height:" + height + "px;" + + "right:0;" + + "top:" + top + "px;" + + "left:" + padding + "px;" + (extraStyle || "")); + }; + Marker.prototype.drawSingleLineMarker = function (stringBuilder, range, clazz, config, extraLength, extraStyle) { + if (this.session.$bidiHandler.isBidiRow(range.start.row)) + return this.drawBidiSingleLineMarker(stringBuilder, range, clazz, config, extraLength, extraStyle); + var height = config.lineHeight; + var width = (range.end.column + (extraLength || 0) - range.start.column) * config.characterWidth; + var top = this.$getTop(range.start.row, config); + var left = this.$padding + range.start.column * config.characterWidth; + this.elt(clazz, "height:" + height + "px;" + + "width:" + width + "px;" + + "top:" + top + "px;" + + "left:" + left + "px;" + (extraStyle || "")); + }; + Marker.prototype.drawBidiSingleLineMarker = function (stringBuilder, range, clazz, config, extraLength, extraStyle) { + var height = config.lineHeight, top = this.$getTop(range.start.row, config), padding = this.$padding; + var selections = this.session.$bidiHandler.getSelections(range.start.column, range.end.column); + selections.forEach(function (selection) { + this.elt(clazz, "height:" + height + "px;" + + "width:" + (selection.width + (extraLength || 0)) + "px;" + + "top:" + top + "px;" + + "left:" + (padding + selection.left) + "px;" + (extraStyle || "")); + }, this); + }; + Marker.prototype.drawFullLineMarker = function (stringBuilder, range, clazz, config, extraStyle) { + var top = this.$getTop(range.start.row, config); + var height = config.lineHeight; + if (range.start.row != range.end.row) + height += this.$getTop(range.end.row, config) - top; + this.elt(clazz, "height:" + height + "px;" + + "top:" + top + "px;" + + "left:0;right:0;" + (extraStyle || "")); + }; + Marker.prototype.drawScreenLineMarker = function (stringBuilder, range, clazz, config, extraStyle) { + var top = this.$getTop(range.start.row, config); + var height = config.lineHeight; + this.elt(clazz, "height:" + height + "px;" + + "top:" + top + "px;" + + "left:0;right:0;" + (extraStyle || "")); + }; + return Marker; +}()); +Marker.prototype.$padding = 0; +function getBorderClass(tl, tr, br, bl) { + return (tl ? 1 : 0) | (tr ? 2 : 0) | (br ? 4 : 0) | (bl ? 8 : 0); +} +exports.Marker = Marker; + +}); + +ace.define("ace/layer/text_util",["require","exports","module"], function(require, exports, module){// Tokens for which Ace just uses a simple TextNode and does not add any special className. +var textTokens = new Set(["text", "rparen", "lparen"]); +exports.isTextToken = function (tokenType) { + return textTokens.has(tokenType); +}; + +}); + +ace.define("ace/layer/text",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/layer/lines","ace/lib/event_emitter","ace/config","ace/layer/text_util"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var dom = require("../lib/dom"); +var lang = require("../lib/lang"); +var Lines = require("./lines").Lines; +var EventEmitter = require("../lib/event_emitter").EventEmitter; +var nls = require("../config").nls; +var isTextToken = require("./text_util").isTextToken; +var Text = /** @class */ (function () { + function Text(parentEl) { + this.dom = dom; + this.element = this.dom.createElement("div"); + this.element.className = "ace_layer ace_text-layer"; + parentEl.appendChild(this.element); + this.$updateEolChar = this.$updateEolChar.bind(this); + this.$lines = new Lines(this.element); + } + Text.prototype.$updateEolChar = function () { + var doc = this.session.doc; + var unixMode = doc.getNewLineCharacter() == "\n" && doc.getNewLineMode() != "windows"; + var EOL_CHAR = unixMode ? this.EOL_CHAR_LF : this.EOL_CHAR_CRLF; + if (this.EOL_CHAR != EOL_CHAR) { + this.EOL_CHAR = EOL_CHAR; + return true; + } + }; + Text.prototype.setPadding = function (padding) { + this.$padding = padding; + this.element.style.margin = "0 " + padding + "px"; + }; + Text.prototype.getLineHeight = function () { + return this.$fontMetrics.$characterSize.height || 0; + }; + Text.prototype.getCharacterWidth = function () { + return this.$fontMetrics.$characterSize.width || 0; + }; + Text.prototype.$setFontMetrics = function (measure) { + this.$fontMetrics = measure; + this.$fontMetrics.on("changeCharacterSize", function (e) { + this._signal("changeCharacterSize", e); + }.bind(this)); + this.$pollSizeChanges(); + }; + Text.prototype.checkForSizeChanges = function () { + this.$fontMetrics.checkForSizeChanges(); + }; + Text.prototype.$pollSizeChanges = function () { + return this.$pollSizeChangesTimer = this.$fontMetrics.$pollSizeChanges(); + }; + Text.prototype.setSession = function (session) { + this.session = session; + if (session) + this.$computeTabString(); + }; + Text.prototype.setShowInvisibles = function (showInvisibles) { + if (this.showInvisibles == showInvisibles) + return false; + this.showInvisibles = showInvisibles; + if (typeof showInvisibles == "string") { + this.showSpaces = /tab/i.test(showInvisibles); + this.showTabs = /space/i.test(showInvisibles); + this.showEOL = /eol/i.test(showInvisibles); + } + else { + this.showSpaces = this.showTabs = this.showEOL = showInvisibles; + } + this.$computeTabString(); + return true; + }; + Text.prototype.setDisplayIndentGuides = function (display) { + if (this.displayIndentGuides == display) + return false; + this.displayIndentGuides = display; + this.$computeTabString(); + return true; + }; + Text.prototype.setHighlightIndentGuides = function (highlight) { + if (this.$highlightIndentGuides === highlight) + return false; + this.$highlightIndentGuides = highlight; + return highlight; + }; + Text.prototype.$computeTabString = function () { + var tabSize = this.session.getTabSize(); + this.tabSize = tabSize; + var tabStr = this.$tabStrings = [0]; + for (var i = 1; i < tabSize + 1; i++) { + if (this.showTabs) { + var span = this.dom.createElement("span"); + span.className = "ace_invisible ace_invisible_tab"; + span.textContent = lang.stringRepeat(this.TAB_CHAR, i); + tabStr.push(span); + } + else { + tabStr.push(this.dom.createTextNode(lang.stringRepeat(" ", i), this.element)); + } + } + if (this.displayIndentGuides) { + this.$indentGuideRe = /\s\S| \t|\t |\s$/; + var className = "ace_indent-guide"; + var spaceClass = this.showSpaces ? " ace_invisible ace_invisible_space" : ""; + var spaceContent = this.showSpaces + ? lang.stringRepeat(this.SPACE_CHAR, this.tabSize) + : lang.stringRepeat(" ", this.tabSize); + var tabClass = this.showTabs ? " ace_invisible ace_invisible_tab" : ""; + var tabContent = this.showTabs + ? lang.stringRepeat(this.TAB_CHAR, this.tabSize) + : spaceContent; + var span = this.dom.createElement("span"); + span.className = className + spaceClass; + span.textContent = spaceContent; + this.$tabStrings[" "] = span; + var span = this.dom.createElement("span"); + span.className = className + tabClass; + span.textContent = tabContent; + this.$tabStrings["\t"] = span; + } + }; + Text.prototype.updateLines = function (config, firstRow, lastRow) { + if (this.config.lastRow != config.lastRow || + this.config.firstRow != config.firstRow) { + return this.update(config); + } + this.config = config; + var first = Math.max(firstRow, config.firstRow); + var last = Math.min(lastRow, config.lastRow); + var lineElements = this.element.childNodes; + var lineElementsIdx = 0; + for (var row = config.firstRow; row < first; row++) { + var foldLine = this.session.getFoldLine(row); + if (foldLine) { + if (foldLine.containsRow(first)) { + first = foldLine.start.row; + break; + } + else { + row = foldLine.end.row; + } + } + lineElementsIdx++; + } + var heightChanged = false; + var row = first; + var foldLine = this.session.getNextFoldLine(row); + var foldStart = foldLine ? foldLine.start.row : Infinity; + while (true) { + if (row > foldStart) { + row = foldLine.end.row + 1; + foldLine = this.session.getNextFoldLine(row, foldLine); + foldStart = foldLine ? foldLine.start.row : Infinity; + } + if (row > last) + break; + var lineElement = lineElements[lineElementsIdx++]; + if (lineElement) { + this.dom.removeChildren(lineElement); + this.$renderLine(lineElement, row, row == foldStart ? foldLine : false); + if (heightChanged) + lineElement.style.top = this.$lines.computeLineTop(row, config, this.session) + "px"; + var height = (config.lineHeight * this.session.getRowLength(row)) + "px"; + if (lineElement.style.height != height) { + heightChanged = true; + lineElement.style.height = height; + } + } + row++; + } + if (heightChanged) { + while (lineElementsIdx < this.$lines.cells.length) { + var cell = this.$lines.cells[lineElementsIdx++]; + cell.element.style.top = this.$lines.computeLineTop(cell.row, config, this.session) + "px"; + } + } + }; + Text.prototype.scrollLines = function (config) { + var oldConfig = this.config; + this.config = config; + if (this.$lines.pageChanged(oldConfig, config)) + return this.update(config); + this.$lines.moveContainer(config); + var lastRow = config.lastRow; + var oldLastRow = oldConfig ? oldConfig.lastRow : -1; + if (!oldConfig || oldLastRow < config.firstRow) + return this.update(config); + if (lastRow < oldConfig.firstRow) + return this.update(config); + if (!oldConfig || oldConfig.lastRow < config.firstRow) + return this.update(config); + if (config.lastRow < oldConfig.firstRow) + return this.update(config); + if (oldConfig.firstRow < config.firstRow) + for (var row = this.session.getFoldedRowCount(oldConfig.firstRow, config.firstRow - 1); row > 0; row--) + this.$lines.shift(); + if (oldConfig.lastRow > config.lastRow) + for (var row = this.session.getFoldedRowCount(config.lastRow + 1, oldConfig.lastRow); row > 0; row--) + this.$lines.pop(); + if (config.firstRow < oldConfig.firstRow) { + this.$lines.unshift(this.$renderLinesFragment(config, config.firstRow, oldConfig.firstRow - 1)); + } + if (config.lastRow > oldConfig.lastRow) { + this.$lines.push(this.$renderLinesFragment(config, oldConfig.lastRow + 1, config.lastRow)); + } + this.$highlightIndentGuide(); + }; + Text.prototype.$renderLinesFragment = function (config, firstRow, lastRow) { + var fragment = []; + var row = firstRow; + var foldLine = this.session.getNextFoldLine(row); + var foldStart = foldLine ? foldLine.start.row : Infinity; + while (true) { + if (row > foldStart) { + row = foldLine.end.row + 1; + foldLine = this.session.getNextFoldLine(row, foldLine); + foldStart = foldLine ? foldLine.start.row : Infinity; + } + if (row > lastRow) + break; + var line = this.$lines.createCell(row, config, this.session); + var lineEl = line.element; + this.dom.removeChildren(lineEl); + dom.setStyle(lineEl.style, "height", this.$lines.computeLineHeight(row, config, this.session) + "px"); + dom.setStyle(lineEl.style, "top", this.$lines.computeLineTop(row, config, this.session) + "px"); + this.$renderLine(lineEl, row, row == foldStart ? foldLine : false); + if (this.$useLineGroups()) { + lineEl.className = "ace_line_group"; + } + else { + lineEl.className = "ace_line"; + } + fragment.push(line); + row++; + } + return fragment; + }; + Text.prototype.update = function (config) { + this.$lines.moveContainer(config); + this.config = config; + var firstRow = config.firstRow; + var lastRow = config.lastRow; + var lines = this.$lines; + while (lines.getLength()) + lines.pop(); + lines.push(this.$renderLinesFragment(config, firstRow, lastRow)); + }; + Text.prototype.$renderToken = function (parent, screenColumn, token, value) { + var self = this; + var re = /(\t)|( +)|([\x00-\x1f\x80-\xa0\xad\u1680\u180E\u2000-\u200f\u2028\u2029\u202F\u205F\uFEFF\uFFF9-\uFFFC\u2066\u2067\u2068\u202A\u202B\u202D\u202E\u202C\u2069]+)|(\u3000)|([\u1100-\u115F\u11A3-\u11A7\u11FA-\u11FF\u2329-\u232A\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u2FF0-\u2FFB\u3001-\u303E\u3041-\u3096\u3099-\u30FF\u3105-\u312D\u3131-\u318E\u3190-\u31BA\u31C0-\u31E3\u31F0-\u321E\u3220-\u3247\u3250-\u32FE\u3300-\u4DBF\u4E00-\uA48C\uA490-\uA4C6\uA960-\uA97C\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFAFF\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE66\uFE68-\uFE6B\uFF01-\uFF60\uFFE0-\uFFE6]|[\uD800-\uDBFF][\uDC00-\uDFFF])/g; + var valueFragment = this.dom.createFragment(this.element); + var m; + var i = 0; + while (m = re.exec(value)) { + var tab = m[1]; + var simpleSpace = m[2]; + var controlCharacter = m[3]; + var cjkSpace = m[4]; + var cjk = m[5]; + if (!self.showSpaces && simpleSpace) + continue; + var before = i != m.index ? value.slice(i, m.index) : ""; + i = m.index + m[0].length; + if (before) { + valueFragment.appendChild(this.dom.createTextNode(before, this.element)); + } + if (tab) { + var tabSize = self.session.getScreenTabSize(screenColumn + m.index); + valueFragment.appendChild(self.$tabStrings[tabSize].cloneNode(true)); + screenColumn += tabSize - 1; + } + else if (simpleSpace) { + if (self.showSpaces) { + var span = this.dom.createElement("span"); + span.className = "ace_invisible ace_invisible_space"; + span.textContent = lang.stringRepeat(self.SPACE_CHAR, simpleSpace.length); + valueFragment.appendChild(span); + } + else { + valueFragment.appendChild(this.dom.createTextNode(simpleSpace, this.element)); + } + } + else if (controlCharacter) { + var span = this.dom.createElement("span"); + span.className = "ace_invisible ace_invisible_space ace_invalid"; + span.textContent = lang.stringRepeat(self.SPACE_CHAR, controlCharacter.length); + valueFragment.appendChild(span); + } + else if (cjkSpace) { + screenColumn += 1; + var span = this.dom.createElement("span"); + span.style.width = (self.config.characterWidth * 2) + "px"; + span.className = self.showSpaces ? "ace_cjk ace_invisible ace_invisible_space" : "ace_cjk"; + span.textContent = self.showSpaces ? self.SPACE_CHAR : cjkSpace; + valueFragment.appendChild(span); + } + else if (cjk) { + screenColumn += 1; + var span = this.dom.createElement("span"); + span.style.width = (self.config.characterWidth * 2) + "px"; + span.className = "ace_cjk"; + span.textContent = cjk; + valueFragment.appendChild(span); + } + } + valueFragment.appendChild(this.dom.createTextNode(i ? value.slice(i) : value, this.element)); + if (!isTextToken(token.type)) { + var classes = "ace_" + token.type.replace(/\./g, " ace_"); + var span = this.dom.createElement("span"); + if (token.type == "fold") { + span.style.width = (token.value.length * this.config.characterWidth) + "px"; + span.setAttribute("title", nls("Unfold code")); + } + span.className = classes; + span.appendChild(valueFragment); + parent.appendChild(span); + } + else { + parent.appendChild(valueFragment); + } + return screenColumn + value.length; + }; + Text.prototype.renderIndentGuide = function (parent, value, max) { + var cols = value.search(this.$indentGuideRe); + if (cols <= 0 || cols >= max) + return value; + if (value[0] == " ") { + cols -= cols % this.tabSize; + var count = cols / this.tabSize; + for (var i = 0; i < count; i++) { + parent.appendChild(this.$tabStrings[" "].cloneNode(true)); + } + this.$highlightIndentGuide(); + return value.substr(cols); + } + else if (value[0] == "\t") { + for (var i = 0; i < cols; i++) { + parent.appendChild(this.$tabStrings["\t"].cloneNode(true)); + } + this.$highlightIndentGuide(); + return value.substr(cols); + } + this.$highlightIndentGuide(); + return value; + }; + Text.prototype.$highlightIndentGuide = function () { + if (!this.$highlightIndentGuides || !this.displayIndentGuides) + return; + this.$highlightIndentGuideMarker = { + indentLevel: undefined, + start: undefined, + end: undefined, + dir: undefined + }; + var lines = this.session.doc.$lines; + if (!lines) + return; + var cursor = this.session.selection.getCursor(); + var initialIndent = /^\s*/.exec(this.session.doc.getLine(cursor.row))[0].length; + var elementIndentLevel = Math.floor(initialIndent / this.tabSize); + this.$highlightIndentGuideMarker = { + indentLevel: elementIndentLevel, + start: cursor.row + }; + var bracketHighlight = this.session.$bracketHighlight; + if (bracketHighlight) { + var ranges = this.session.$bracketHighlight.ranges; + for (var i = 0; i < ranges.length; i++) { + if (cursor.row !== ranges[i].start.row) { + this.$highlightIndentGuideMarker.end = ranges[i].start.row; + if (cursor.row > ranges[i].start.row) { + this.$highlightIndentGuideMarker.dir = -1; + } + else { + this.$highlightIndentGuideMarker.dir = 1; + } + break; + } + } + } + if (!this.$highlightIndentGuideMarker.end) { + if (lines[cursor.row] !== '' && cursor.column === lines[cursor.row].length) { + this.$highlightIndentGuideMarker.dir = 1; + for (var i = cursor.row + 1; i < lines.length; i++) { + var line = lines[i]; + var currentIndent = /^\s*/.exec(line)[0].length; + if (line !== '') { + this.$highlightIndentGuideMarker.end = i; + if (currentIndent <= initialIndent) + break; + } + } + } + } + this.$renderHighlightIndentGuide(); + }; + Text.prototype.$clearActiveIndentGuide = function () { + var cells = this.$lines.cells; + for (var i = 0; i < cells.length; i++) { + var cell = cells[i]; + var childNodes = cell.element.childNodes; + if (childNodes.length > 0) { + for (var j = 0; j < childNodes.length; j++) { + if (childNodes[j].classList && childNodes[j].classList.contains("ace_indent-guide-active")) { + childNodes[j].classList.remove("ace_indent-guide-active"); + break; + } + } + } + } + }; + Text.prototype.$setIndentGuideActive = function (cell, indentLevel) { + var line = this.session.doc.getLine(cell.row); + if (line !== "") { + var childNodes = cell.element.childNodes; + if (childNodes) { + var node = childNodes[indentLevel - 1]; + if (node && node.classList && node.classList.contains("ace_indent-guide")) + node.classList.add("ace_indent-guide-active"); + } + } + }; + Text.prototype.$renderHighlightIndentGuide = function () { + if (!this.$lines) + return; + var cells = this.$lines.cells; + this.$clearActiveIndentGuide(); + var indentLevel = this.$highlightIndentGuideMarker.indentLevel; + if (indentLevel !== 0) { + if (this.$highlightIndentGuideMarker.dir === 1) { + for (var i = 0; i < cells.length; i++) { + var cell = cells[i]; + if (this.$highlightIndentGuideMarker.end && cell.row >= this.$highlightIndentGuideMarker.start + + 1) { + if (cell.row >= this.$highlightIndentGuideMarker.end) + break; + this.$setIndentGuideActive(cell, indentLevel); + } + } + } + else { + for (var i = cells.length - 1; i >= 0; i--) { + var cell = cells[i]; + if (this.$highlightIndentGuideMarker.end && cell.row < this.$highlightIndentGuideMarker.start) { + if (cell.row <= this.$highlightIndentGuideMarker.end) + break; + this.$setIndentGuideActive(cell, indentLevel); + } + } + } + } + }; + Text.prototype.$createLineElement = function (parent) { + var lineEl = this.dom.createElement("div"); + lineEl.className = "ace_line"; + lineEl.style.height = this.config.lineHeight + "px"; + return lineEl; + }; + Text.prototype.$renderWrappedLine = function (parent, tokens, splits) { + var chars = 0; + var split = 0; + var splitChars = splits[0]; + var screenColumn = 0; + var lineEl = this.$createLineElement(); + parent.appendChild(lineEl); + for (var i = 0; i < tokens.length; i++) { + var token = tokens[i]; + var value = token.value; + if (i == 0 && this.displayIndentGuides) { + chars = value.length; + value = this.renderIndentGuide(lineEl, value, splitChars); + if (!value) + continue; + chars -= value.length; + } + if (chars + value.length < splitChars) { + screenColumn = this.$renderToken(lineEl, screenColumn, token, value); + chars += value.length; + } + else { + while (chars + value.length >= splitChars) { + screenColumn = this.$renderToken(lineEl, screenColumn, token, value.substring(0, splitChars - chars)); + value = value.substring(splitChars - chars); + chars = splitChars; + lineEl = this.$createLineElement(); + parent.appendChild(lineEl); + lineEl.appendChild(this.dom.createTextNode(lang.stringRepeat("\xa0", splits.indent), this.element)); + split++; + screenColumn = 0; + splitChars = splits[split] || Number.MAX_VALUE; + } + if (value.length != 0) { + chars += value.length; + screenColumn = this.$renderToken(lineEl, screenColumn, token, value); + } + } + } + if (splits[splits.length - 1] > this.MAX_LINE_LENGTH) + this.$renderOverflowMessage(lineEl, screenColumn, null, "", true); + }; + Text.prototype.$renderSimpleLine = function (parent, tokens) { + var screenColumn = 0; + for (var i = 0; i < tokens.length; i++) { + var token = tokens[i]; + var value = token.value; + if (i == 0 && this.displayIndentGuides) { + value = this.renderIndentGuide(parent, value); + if (!value) + continue; + } + if (screenColumn + value.length > this.MAX_LINE_LENGTH) + return this.$renderOverflowMessage(parent, screenColumn, token, value); + screenColumn = this.$renderToken(parent, screenColumn, token, value); + } + }; + Text.prototype.$renderOverflowMessage = function (parent, screenColumn, token, value, hide) { + token && this.$renderToken(parent, screenColumn, token, value.slice(0, this.MAX_LINE_LENGTH - screenColumn)); + var overflowEl = this.dom.createElement("span"); + overflowEl.className = "ace_inline_button ace_keyword ace_toggle_wrap"; + overflowEl.textContent = hide ? "" : ""; + parent.appendChild(overflowEl); + }; + Text.prototype.$renderLine = function (parent, row, foldLine) { + if (!foldLine && foldLine != false) + foldLine = this.session.getFoldLine(row); + if (foldLine) + var tokens = this.$getFoldLineTokens(row, foldLine); + else + var tokens = this.session.getTokens(row); + var lastLineEl = parent; + if (tokens.length) { + var splits = this.session.getRowSplitData(row); + if (splits && splits.length) { + this.$renderWrappedLine(parent, tokens, splits); + var lastLineEl = parent.lastChild; + } + else { + var lastLineEl = parent; + if (this.$useLineGroups()) { + lastLineEl = this.$createLineElement(); + parent.appendChild(lastLineEl); + } + this.$renderSimpleLine(lastLineEl, tokens); + } + } + else if (this.$useLineGroups()) { + lastLineEl = this.$createLineElement(); + parent.appendChild(lastLineEl); + } + if (this.showEOL && lastLineEl) { + if (foldLine) + row = foldLine.end.row; + var invisibleEl = this.dom.createElement("span"); + invisibleEl.className = "ace_invisible ace_invisible_eol"; + invisibleEl.textContent = row == this.session.getLength() - 1 ? this.EOF_CHAR : this.EOL_CHAR; + lastLineEl.appendChild(invisibleEl); + } + }; + Text.prototype.$getFoldLineTokens = function (row, foldLine) { + var session = this.session; + var renderTokens = []; + function addTokens(tokens, from, to) { + var idx = 0, col = 0; + while ((col + tokens[idx].value.length) < from) { + col += tokens[idx].value.length; + idx++; + if (idx == tokens.length) + return; + } + if (col != from) { + var value = tokens[idx].value.substring(from - col); + if (value.length > (to - from)) + value = value.substring(0, to - from); + renderTokens.push({ + type: tokens[idx].type, + value: value + }); + col = from + value.length; + idx += 1; + } + while (col < to && idx < tokens.length) { + var value = tokens[idx].value; + if (value.length + col > to) { + renderTokens.push({ + type: tokens[idx].type, + value: value.substring(0, to - col) + }); + } + else + renderTokens.push(tokens[idx]); + col += value.length; + idx += 1; + } + } + var tokens = session.getTokens(row); + foldLine.walk(function (placeholder, row, column, lastColumn, isNewRow) { + if (placeholder != null) { + renderTokens.push({ + type: "fold", + value: placeholder + }); + } + else { + if (isNewRow) + tokens = session.getTokens(row); + if (tokens.length) + addTokens(tokens, lastColumn, column); + } + }, foldLine.end.row, this.session.getLine(foldLine.end.row).length); + return renderTokens; + }; + Text.prototype.$useLineGroups = function () { + return this.session.getUseWrapMode(); + }; + return Text; +}()); +Text.prototype.EOF_CHAR = "\xB6"; +Text.prototype.EOL_CHAR_LF = "\xAC"; +Text.prototype.EOL_CHAR_CRLF = "\xa4"; +Text.prototype.EOL_CHAR = Text.prototype.EOL_CHAR_LF; +Text.prototype.TAB_CHAR = "\u2014"; //"\u21E5"; +Text.prototype.SPACE_CHAR = "\xB7"; +Text.prototype.$padding = 0; +Text.prototype.MAX_LINE_LENGTH = 10000; +Text.prototype.showInvisibles = false; +Text.prototype.showSpaces = false; +Text.prototype.showTabs = false; +Text.prototype.showEOL = false; +Text.prototype.displayIndentGuides = true; +Text.prototype.$highlightIndentGuides = true; +Text.prototype.$tabStrings = []; +Text.prototype.destroy = {}; +Text.prototype.onChangeTabSize = Text.prototype.$computeTabString; +oop.implement(Text.prototype, EventEmitter); +exports.Text = Text; + +}); + +ace.define("ace/layer/cursor",["require","exports","module","ace/lib/dom"], function(require, exports, module){"use strict"; +var dom = require("../lib/dom"); +var Cursor = /** @class */ (function () { + function Cursor(parentEl) { + this.element = dom.createElement("div"); + this.element.className = "ace_layer ace_cursor-layer"; + parentEl.appendChild(this.element); + this.isVisible = false; + this.isBlinking = true; + this.blinkInterval = 1000; + this.smoothBlinking = false; + this.cursors = []; + this.cursor = this.addCursor(); + dom.addCssClass(this.element, "ace_hidden-cursors"); + this.$updateCursors = this.$updateOpacity.bind(this); + } + Cursor.prototype.$updateOpacity = function (val) { + var cursors = this.cursors; + for (var i = cursors.length; i--;) + dom.setStyle(cursors[i].style, "opacity", val ? "" : "0"); + }; + Cursor.prototype.$startCssAnimation = function () { + var cursors = this.cursors; + for (var i = cursors.length; i--;) + cursors[i].style.animationDuration = this.blinkInterval + "ms"; + this.$isAnimating = true; + setTimeout(function () { + if (this.$isAnimating) { + dom.addCssClass(this.element, "ace_animate-blinking"); + } + }.bind(this)); + }; + Cursor.prototype.$stopCssAnimation = function () { + this.$isAnimating = false; + dom.removeCssClass(this.element, "ace_animate-blinking"); + }; + Cursor.prototype.setPadding = function (padding) { + this.$padding = padding; + }; + Cursor.prototype.setSession = function (session) { + this.session = session; + }; + Cursor.prototype.setBlinking = function (blinking) { + if (blinking != this.isBlinking) { + this.isBlinking = blinking; + this.restartTimer(); + } + }; + Cursor.prototype.setBlinkInterval = function (blinkInterval) { + if (blinkInterval != this.blinkInterval) { + this.blinkInterval = blinkInterval; + this.restartTimer(); + } + }; + Cursor.prototype.setSmoothBlinking = function (smoothBlinking) { + if (smoothBlinking != this.smoothBlinking) { + this.smoothBlinking = smoothBlinking; + dom.setCssClass(this.element, "ace_smooth-blinking", smoothBlinking); + this.$updateCursors(true); + this.restartTimer(); + } + }; + Cursor.prototype.addCursor = function () { + var el = dom.createElement("div"); + el.className = "ace_cursor"; + this.element.appendChild(el); + this.cursors.push(el); + return el; + }; + Cursor.prototype.removeCursor = function () { + if (this.cursors.length > 1) { + var el = this.cursors.pop(); + el.parentNode.removeChild(el); + return el; + } + }; + Cursor.prototype.hideCursor = function () { + this.isVisible = false; + dom.addCssClass(this.element, "ace_hidden-cursors"); + this.restartTimer(); + }; + Cursor.prototype.showCursor = function () { + this.isVisible = true; + dom.removeCssClass(this.element, "ace_hidden-cursors"); + this.restartTimer(); + }; + Cursor.prototype.restartTimer = function () { + var update = this.$updateCursors; + clearInterval(this.intervalId); + clearTimeout(this.timeoutId); + this.$stopCssAnimation(); + if (this.smoothBlinking) { + this.$isSmoothBlinking = false; + dom.removeCssClass(this.element, "ace_smooth-blinking"); + } + update(true); + if (!this.isBlinking || !this.blinkInterval || !this.isVisible) { + this.$stopCssAnimation(); + return; + } + if (this.smoothBlinking) { + this.$isSmoothBlinking = true; + setTimeout(function () { + if (this.$isSmoothBlinking) { + dom.addCssClass(this.element, "ace_smooth-blinking"); + } + }.bind(this)); + } + if (dom.HAS_CSS_ANIMATION) { + this.$startCssAnimation(); + } + else { + var blink = function () { + this.timeoutId = setTimeout(function () { + update(false); + }, 0.6 * this.blinkInterval); + }.bind(this); + this.intervalId = setInterval(function () { + update(true); + blink(); + }, this.blinkInterval); + blink(); + } + }; + Cursor.prototype.getPixelPosition = function (position, onScreen) { + if (!this.config || !this.session) + return { left: 0, top: 0 }; + if (!position) + position = this.session.selection.getCursor(); + var pos = this.session.documentToScreenPosition(position); + var cursorLeft = this.$padding + (this.session.$bidiHandler.isBidiRow(pos.row, position.row) + ? this.session.$bidiHandler.getPosLeft(pos.column) + : pos.column * this.config.characterWidth); + var cursorTop = (pos.row - (onScreen ? this.config.firstRowScreen : 0)) * + this.config.lineHeight; + return { left: cursorLeft, top: cursorTop }; + }; + Cursor.prototype.isCursorInView = function (pixelPos, config) { + return pixelPos.top >= 0 && pixelPos.top < config.maxHeight; + }; + Cursor.prototype.update = function (config) { + this.config = config; + var selections = this.session.$selectionMarkers; + var i = 0, cursorIndex = 0; + if (selections === undefined || selections.length === 0) { + selections = [{ cursor: null }]; + } + for (var i = 0, n = selections.length; i < n; i++) { + var pixelPos = this.getPixelPosition(selections[i].cursor, true); + if ((pixelPos.top > config.height + config.offset || + pixelPos.top < 0) && i > 1) { + continue; + } + var element = this.cursors[cursorIndex++] || this.addCursor(); + var style = element.style; + if (!this.drawCursor) { + if (!this.isCursorInView(pixelPos, config)) { + dom.setStyle(style, "display", "none"); + } + else { + dom.setStyle(style, "display", "block"); + dom.translate(element, pixelPos.left, pixelPos.top); + dom.setStyle(style, "width", Math.round(config.characterWidth) + "px"); + dom.setStyle(style, "height", config.lineHeight + "px"); + } + } + else { + this.drawCursor(element, pixelPos, config, selections[i], this.session); + } + } + while (this.cursors.length > cursorIndex) + this.removeCursor(); + var overwrite = this.session.getOverwrite(); + this.$setOverwrite(overwrite); + this.$pixelPos = pixelPos; + this.restartTimer(); + }; + Cursor.prototype.$setOverwrite = function (overwrite) { + if (overwrite != this.overwrite) { + this.overwrite = overwrite; + if (overwrite) + dom.addCssClass(this.element, "ace_overwrite-cursors"); + else + dom.removeCssClass(this.element, "ace_overwrite-cursors"); + } + }; + Cursor.prototype.destroy = function () { + clearInterval(this.intervalId); + clearTimeout(this.timeoutId); + }; + return Cursor; +}()); +Cursor.prototype.$padding = 0; +Cursor.prototype.drawCursor = null; +exports.Cursor = Cursor; + +}); + +ace.define("ace/scrollbar",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/event","ace/lib/event_emitter"], function(require, exports, module){"use strict"; +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + if (typeof b !== "function" && b !== null) + throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +var oop = require("./lib/oop"); +var dom = require("./lib/dom"); +var event = require("./lib/event"); +var EventEmitter = require("./lib/event_emitter").EventEmitter; +var MAX_SCROLL_H = 0x8000; +var Scrollbar = /** @class */ (function () { + function Scrollbar(parent, classSuffix) { + this.element = dom.createElement("div"); + this.element.className = "ace_scrollbar ace_scrollbar" + classSuffix; + this.inner = dom.createElement("div"); + this.inner.className = "ace_scrollbar-inner"; + this.inner.textContent = "\xa0"; + this.element.appendChild(this.inner); + parent.appendChild(this.element); + this.setVisible(false); + this.skipEvent = false; + event.addListener(this.element, "scroll", this.onScroll.bind(this)); + event.addListener(this.element, "mousedown", event.preventDefault); + } + Scrollbar.prototype.setVisible = function (isVisible) { + this.element.style.display = isVisible ? "" : "none"; + this.isVisible = isVisible; + this.coeff = 1; + }; + return Scrollbar; +}()); +oop.implement(Scrollbar.prototype, EventEmitter); +var VScrollBar = /** @class */ (function (_super) { + __extends(VScrollBar, _super); + function VScrollBar(parent, renderer) { + var _this = _super.call(this, parent, '-v') || this; + _this.scrollTop = 0; + _this.scrollHeight = 0; + renderer.$scrollbarWidth = + _this.width = dom.scrollbarWidth(parent.ownerDocument); + _this.inner.style.width = + _this.element.style.width = (_this.width || 15) + 5 + "px"; + _this.$minWidth = 0; + return _this; + } + VScrollBar.prototype.onScroll = function () { + if (!this.skipEvent) { + this.scrollTop = this.element.scrollTop; + if (this.coeff != 1) { + var h = this.element.clientHeight / this.scrollHeight; + this.scrollTop = this.scrollTop * (1 - h) / (this.coeff - h); + } + this._emit("scroll", { data: this.scrollTop }); + } + this.skipEvent = false; + }; + VScrollBar.prototype.getWidth = function () { + return Math.max(this.isVisible ? this.width : 0, this.$minWidth || 0); + }; + VScrollBar.prototype.setHeight = function (height) { + this.element.style.height = height + "px"; + }; + VScrollBar.prototype.setScrollHeight = function (height) { + this.scrollHeight = height; + if (height > MAX_SCROLL_H) { + this.coeff = MAX_SCROLL_H / height; + height = MAX_SCROLL_H; + } + else if (this.coeff != 1) { + this.coeff = 1; + } + this.inner.style.height = height + "px"; + }; + VScrollBar.prototype.setScrollTop = function (scrollTop) { + if (this.scrollTop != scrollTop) { + this.skipEvent = true; + this.scrollTop = scrollTop; + this.element.scrollTop = scrollTop * this.coeff; + } + }; + return VScrollBar; +}(Scrollbar)); +VScrollBar.prototype.setInnerHeight = VScrollBar.prototype.setScrollHeight; +var HScrollBar = /** @class */ (function (_super) { + __extends(HScrollBar, _super); + function HScrollBar(parent, renderer) { + var _this = _super.call(this, parent, '-h') || this; + _this.scrollLeft = 0; + _this.height = renderer.$scrollbarWidth; + _this.inner.style.height = + _this.element.style.height = (_this.height || 15) + 5 + "px"; + return _this; + } + HScrollBar.prototype.onScroll = function () { + if (!this.skipEvent) { + this.scrollLeft = this.element.scrollLeft; + this._emit("scroll", { data: this.scrollLeft }); + } + this.skipEvent = false; + }; + HScrollBar.prototype.getHeight = function () { + return this.isVisible ? this.height : 0; + }; + HScrollBar.prototype.setWidth = function (width) { + this.element.style.width = width + "px"; + }; + HScrollBar.prototype.setInnerWidth = function (width) { + this.inner.style.width = width + "px"; + }; + HScrollBar.prototype.setScrollWidth = function (width) { + this.inner.style.width = width + "px"; + }; + HScrollBar.prototype.setScrollLeft = function (scrollLeft) { + if (this.scrollLeft != scrollLeft) { + this.skipEvent = true; + this.scrollLeft = this.element.scrollLeft = scrollLeft; + } + }; + return HScrollBar; +}(Scrollbar)); +exports.ScrollBar = VScrollBar; // backward compatibility +exports.ScrollBarV = VScrollBar; // backward compatibility +exports.ScrollBarH = HScrollBar; // backward compatibility +exports.VScrollBar = VScrollBar; +exports.HScrollBar = HScrollBar; + +}); + +ace.define("ace/scrollbar_custom",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/event","ace/lib/event_emitter"], function(require, exports, module){"use strict"; +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + if (typeof b !== "function" && b !== null) + throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +var oop = require("./lib/oop"); +var dom = require("./lib/dom"); +var event = require("./lib/event"); +var EventEmitter = require("./lib/event_emitter").EventEmitter; +dom.importCssString(".ace_editor>.ace_sb-v div, .ace_editor>.ace_sb-h div{\n position: absolute;\n background: rgba(128, 128, 128, 0.6);\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n border: 1px solid #bbb;\n border-radius: 2px;\n z-index: 8;\n}\n.ace_editor>.ace_sb-v, .ace_editor>.ace_sb-h {\n position: absolute;\n z-index: 6;\n background: none;\n overflow: hidden!important;\n}\n.ace_editor>.ace_sb-v {\n z-index: 6;\n right: 0;\n top: 0;\n width: 12px;\n}\n.ace_editor>.ace_sb-v div {\n z-index: 8;\n right: 0;\n width: 100%;\n}\n.ace_editor>.ace_sb-h {\n bottom: 0;\n left: 0;\n height: 12px;\n}\n.ace_editor>.ace_sb-h div {\n bottom: 0;\n height: 100%;\n}\n.ace_editor>.ace_sb_grabbed {\n z-index: 8;\n background: #000;\n}", "ace_scrollbar.css", false); +var ScrollBar = /** @class */ (function () { + function ScrollBar(parent, classSuffix) { + this.element = dom.createElement("div"); + this.element.className = "ace_sb" + classSuffix; + this.inner = dom.createElement("div"); + this.inner.className = ""; + this.element.appendChild(this.inner); + this.VScrollWidth = 12; + this.HScrollHeight = 12; + parent.appendChild(this.element); + this.setVisible(false); + this.skipEvent = false; + event.addMultiMouseDownListener(this.element, [500, 300, 300], this, "onMouseDown"); + } + ScrollBar.prototype.setVisible = function (isVisible) { + this.element.style.display = isVisible ? "" : "none"; + this.isVisible = isVisible; + this.coeff = 1; + }; + return ScrollBar; +}()); +oop.implement(ScrollBar.prototype, EventEmitter); +var VScrollBar = /** @class */ (function (_super) { + __extends(VScrollBar, _super); + function VScrollBar(parent, renderer) { + var _this = _super.call(this, parent, '-v') || this; + _this.scrollTop = 0; + _this.scrollHeight = 0; + _this.parent = parent; + _this.width = _this.VScrollWidth; + _this.renderer = renderer; + _this.inner.style.width = _this.element.style.width = (_this.width || 15) + "px"; + _this.$minWidth = 0; + return _this; + } + VScrollBar.prototype.onMouseDown = function (eType, e) { + if (eType !== "mousedown") + return; + if (event.getButton(e) !== 0 || e.detail === 2) { + return; + } + if (e.target === this.inner) { + var self = this; + var mousePageY = e.clientY; + var onMouseMove = function (e) { + mousePageY = e.clientY; + }; + var onMouseUp = function () { + clearInterval(timerId); + }; + var startY = e.clientY; + var startTop = this.thumbTop; + var onScrollInterval = function () { + if (mousePageY === undefined) + return; + var scrollTop = self.scrollTopFromThumbTop(startTop + mousePageY - startY); + if (scrollTop === self.scrollTop) + return; + self._emit("scroll", { data: scrollTop }); + }; + event.capture(this.inner, onMouseMove, onMouseUp); + var timerId = setInterval(onScrollInterval, 20); + return event.preventDefault(e); + } + var top = e.clientY - this.element.getBoundingClientRect().top - this.thumbHeight / 2; + this._emit("scroll", { data: this.scrollTopFromThumbTop(top) }); + return event.preventDefault(e); + }; + VScrollBar.prototype.getHeight = function () { + return this.height; + }; + VScrollBar.prototype.scrollTopFromThumbTop = function (thumbTop) { + var scrollTop = thumbTop * (this.pageHeight - this.viewHeight) / (this.slideHeight - this.thumbHeight); + scrollTop = scrollTop >> 0; + if (scrollTop < 0) { + scrollTop = 0; + } + else if (scrollTop > this.pageHeight - this.viewHeight) { + scrollTop = this.pageHeight - this.viewHeight; + } + return scrollTop; + }; + VScrollBar.prototype.getWidth = function () { + return Math.max(this.isVisible ? this.width : 0, this.$minWidth || 0); + }; + VScrollBar.prototype.setHeight = function (height) { + this.height = Math.max(0, height); + this.slideHeight = this.height; + this.viewHeight = this.height; + this.setScrollHeight(this.pageHeight, true); + }; + VScrollBar.prototype.setScrollHeight = function (height, force) { + if (this.pageHeight === height && !force) + return; + this.pageHeight = height; + this.thumbHeight = this.slideHeight * this.viewHeight / this.pageHeight; + if (this.thumbHeight > this.slideHeight) + this.thumbHeight = this.slideHeight; + if (this.thumbHeight < 15) + this.thumbHeight = 15; + this.inner.style.height = this.thumbHeight + "px"; + if (this.scrollTop > (this.pageHeight - this.viewHeight)) { + this.scrollTop = (this.pageHeight - this.viewHeight); + if (this.scrollTop < 0) + this.scrollTop = 0; + this._emit("scroll", { data: this.scrollTop }); + } + }; + VScrollBar.prototype.setScrollTop = function (scrollTop) { + this.scrollTop = scrollTop; + if (scrollTop < 0) + scrollTop = 0; + this.thumbTop = scrollTop * (this.slideHeight - this.thumbHeight) / (this.pageHeight - this.viewHeight); + this.inner.style.top = this.thumbTop + "px"; + }; + return VScrollBar; +}(ScrollBar)); +VScrollBar.prototype.setInnerHeight = VScrollBar.prototype.setScrollHeight; +var HScrollBar = /** @class */ (function (_super) { + __extends(HScrollBar, _super); + function HScrollBar(parent, renderer) { + var _this = _super.call(this, parent, '-h') || this; + _this.scrollLeft = 0; + _this.scrollWidth = 0; + _this.height = _this.HScrollHeight; + _this.inner.style.height = _this.element.style.height = (_this.height || 12) + "px"; + _this.renderer = renderer; + return _this; + } + HScrollBar.prototype.onMouseDown = function (eType, e) { + if (eType !== "mousedown") + return; + if (event.getButton(e) !== 0 || e.detail === 2) { + return; + } + if (e.target === this.inner) { + var self = this; + var mousePageX = e.clientX; + var onMouseMove = function (e) { + mousePageX = e.clientX; + }; + var onMouseUp = function () { + clearInterval(timerId); + }; + var startX = e.clientX; + var startLeft = this.thumbLeft; + var onScrollInterval = function () { + if (mousePageX === undefined) + return; + var scrollLeft = self.scrollLeftFromThumbLeft(startLeft + mousePageX - startX); + if (scrollLeft === self.scrollLeft) + return; + self._emit("scroll", { data: scrollLeft }); + }; + event.capture(this.inner, onMouseMove, onMouseUp); + var timerId = setInterval(onScrollInterval, 20); + return event.preventDefault(e); + } + var left = e.clientX - this.element.getBoundingClientRect().left - this.thumbWidth / 2; + this._emit("scroll", { data: this.scrollLeftFromThumbLeft(left) }); + return event.preventDefault(e); + }; + HScrollBar.prototype.getHeight = function () { + return this.isVisible ? this.height : 0; + }; + HScrollBar.prototype.scrollLeftFromThumbLeft = function (thumbLeft) { + var scrollLeft = thumbLeft * (this.pageWidth - this.viewWidth) / (this.slideWidth - this.thumbWidth); + scrollLeft = scrollLeft >> 0; + if (scrollLeft < 0) { + scrollLeft = 0; + } + else if (scrollLeft > this.pageWidth - this.viewWidth) { + scrollLeft = this.pageWidth - this.viewWidth; + } + return scrollLeft; + }; + HScrollBar.prototype.setWidth = function (width) { + this.width = Math.max(0, width); + this.element.style.width = this.width + "px"; + this.slideWidth = this.width; + this.viewWidth = this.width; + this.setScrollWidth(this.pageWidth, true); + }; + HScrollBar.prototype.setScrollWidth = function (width, force) { + if (this.pageWidth === width && !force) + return; + this.pageWidth = width; + this.thumbWidth = this.slideWidth * this.viewWidth / this.pageWidth; + if (this.thumbWidth > this.slideWidth) + this.thumbWidth = this.slideWidth; + if (this.thumbWidth < 15) + this.thumbWidth = 15; + this.inner.style.width = this.thumbWidth + "px"; + if (this.scrollLeft > (this.pageWidth - this.viewWidth)) { + this.scrollLeft = (this.pageWidth - this.viewWidth); + if (this.scrollLeft < 0) + this.scrollLeft = 0; + this._emit("scroll", { data: this.scrollLeft }); + } + }; + HScrollBar.prototype.setScrollLeft = function (scrollLeft) { + this.scrollLeft = scrollLeft; + if (scrollLeft < 0) + scrollLeft = 0; + this.thumbLeft = scrollLeft * (this.slideWidth - this.thumbWidth) / (this.pageWidth - this.viewWidth); + this.inner.style.left = (this.thumbLeft) + "px"; + }; + return HScrollBar; +}(ScrollBar)); +HScrollBar.prototype.setInnerWidth = HScrollBar.prototype.setScrollWidth; +exports.ScrollBar = VScrollBar; // backward compatibility +exports.ScrollBarV = VScrollBar; // backward compatibility +exports.ScrollBarH = HScrollBar; // backward compatibility +exports.VScrollBar = VScrollBar; +exports.HScrollBar = HScrollBar; + +}); + +ace.define("ace/renderloop",["require","exports","module","ace/lib/event"], function(require, exports, module){"use strict"; +var event = require("./lib/event"); +var RenderLoop = /** @class */ (function () { + function RenderLoop(onRender, win) { + this.onRender = onRender; + this.pending = false; + this.changes = 0; + this.$recursionLimit = 2; + this.window = win || window; + var _self = this; + this._flush = function (ts) { + _self.pending = false; + var changes = _self.changes; + if (changes) { + event.blockIdle(100); + _self.changes = 0; + _self.onRender(changes); + } + if (_self.changes) { + if (_self.$recursionLimit-- < 0) + return; + _self.schedule(); + } + else { + _self.$recursionLimit = 2; + } + }; + } + RenderLoop.prototype.schedule = function (change) { + this.changes = this.changes | change; + if (this.changes && !this.pending) { + event.nextFrame(this._flush); + this.pending = true; + } + }; + RenderLoop.prototype.clear = function (change) { + var changes = this.changes; + this.changes = 0; + return changes; + }; + return RenderLoop; +}()); +exports.RenderLoop = RenderLoop; + +}); + +ace.define("ace/layer/font_metrics",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/lib/event","ace/lib/useragent","ace/lib/event_emitter"], function(require, exports, module){var oop = require("../lib/oop"); +var dom = require("../lib/dom"); +var lang = require("../lib/lang"); +var event = require("../lib/event"); +var useragent = require("../lib/useragent"); +var EventEmitter = require("../lib/event_emitter").EventEmitter; +var CHAR_COUNT = 512; +var USE_OBSERVER = typeof ResizeObserver == "function"; +var L = 200; +var FontMetrics = /** @class */ (function () { + function FontMetrics(parentEl) { + this.el = dom.createElement("div"); + this.$setMeasureNodeStyles(this.el.style, true); + this.$main = dom.createElement("div"); + this.$setMeasureNodeStyles(this.$main.style); + this.$measureNode = dom.createElement("div"); + this.$setMeasureNodeStyles(this.$measureNode.style); + this.el.appendChild(this.$main); + this.el.appendChild(this.$measureNode); + parentEl.appendChild(this.el); + this.$measureNode.textContent = lang.stringRepeat("X", CHAR_COUNT); + this.$characterSize = { width: 0, height: 0 }; + if (USE_OBSERVER) + this.$addObserver(); + else + this.checkForSizeChanges(); + } + FontMetrics.prototype.$setMeasureNodeStyles = function (style, isRoot) { + style.width = style.height = "auto"; + style.left = style.top = "0px"; + style.visibility = "hidden"; + style.position = "absolute"; + style.whiteSpace = "pre"; + if (useragent.isIE < 8) { + style["font-family"] = "inherit"; + } + else { + style.font = "inherit"; + } + style.overflow = isRoot ? "hidden" : "visible"; + }; + FontMetrics.prototype.checkForSizeChanges = function (size) { + if (size === undefined) + size = this.$measureSizes(); + if (size && (this.$characterSize.width !== size.width || this.$characterSize.height !== size.height)) { + this.$measureNode.style.fontWeight = "bold"; + var boldSize = this.$measureSizes(); + this.$measureNode.style.fontWeight = ""; + this.$characterSize = size; + this.charSizes = Object.create(null); + this.allowBoldFonts = boldSize && boldSize.width === size.width && boldSize.height === size.height; + this._emit("changeCharacterSize", { data: size }); + } + }; + FontMetrics.prototype.$addObserver = function () { + var self = this; + this.$observer = new window.ResizeObserver(function (e) { + self.checkForSizeChanges(); + }); + this.$observer.observe(this.$measureNode); + }; + FontMetrics.prototype.$pollSizeChanges = function () { + if (this.$pollSizeChangesTimer || this.$observer) + return this.$pollSizeChangesTimer; + var self = this; + return this.$pollSizeChangesTimer = event.onIdle(function cb() { + self.checkForSizeChanges(); + event.onIdle(cb, 500); + }, 500); + }; + FontMetrics.prototype.setPolling = function (val) { + if (val) { + this.$pollSizeChanges(); + } + else if (this.$pollSizeChangesTimer) { + clearInterval(this.$pollSizeChangesTimer); + this.$pollSizeChangesTimer = 0; + } + }; + FontMetrics.prototype.$measureSizes = function (node) { + var size = { + height: (node || this.$measureNode).clientHeight, + width: (node || this.$measureNode).clientWidth / CHAR_COUNT + }; + if (size.width === 0 || size.height === 0) + return null; + return size; + }; + FontMetrics.prototype.$measureCharWidth = function (ch) { + this.$main.textContent = lang.stringRepeat(ch, CHAR_COUNT); + var rect = this.$main.getBoundingClientRect(); + return rect.width / CHAR_COUNT; + }; + FontMetrics.prototype.getCharacterWidth = function (ch) { + var w = this.charSizes[ch]; + if (w === undefined) { + w = this.charSizes[ch] = this.$measureCharWidth(ch) / this.$characterSize.width; + } + return w; + }; + FontMetrics.prototype.destroy = function () { + clearInterval(this.$pollSizeChangesTimer); + if (this.$observer) + this.$observer.disconnect(); + if (this.el && this.el.parentNode) + this.el.parentNode.removeChild(this.el); + }; + FontMetrics.prototype.$getZoom = function (element) { + if (!element || !element.parentElement) + return 1; + return (window.getComputedStyle(element).zoom || 1) * this.$getZoom(element.parentElement); + }; + FontMetrics.prototype.$initTransformMeasureNodes = function () { + var t = function (t, l) { + return ["div", { + style: "position: absolute;top:" + t + "px;left:" + l + "px;" + }]; + }; + this.els = dom.buildDom([t(0, 0), t(L, 0), t(0, L), t(L, L)], this.el); + }; + FontMetrics.prototype.transformCoordinates = function (clientPos, elPos) { + if (clientPos) { + var zoom = this.$getZoom(this.el); + clientPos = mul(1 / zoom, clientPos); + } + function solve(l1, l2, r) { + var det = l1[1] * l2[0] - l1[0] * l2[1]; + return [ + (-l2[1] * r[0] + l2[0] * r[1]) / det, + (+l1[1] * r[0] - l1[0] * r[1]) / det + ]; + } + function sub(a, b) { return [a[0] - b[0], a[1] - b[1]]; } + function add(a, b) { return [a[0] + b[0], a[1] + b[1]]; } + function mul(a, b) { return [a * b[0], a * b[1]]; } + if (!this.els) + this.$initTransformMeasureNodes(); + function p(el) { + var r = el.getBoundingClientRect(); + return [r.left, r.top]; + } + var a = p(this.els[0]); + var b = p(this.els[1]); + var c = p(this.els[2]); + var d = p(this.els[3]); + var h = solve(sub(d, b), sub(d, c), sub(add(b, c), add(d, a))); + var m1 = mul(1 + h[0], sub(b, a)); + var m2 = mul(1 + h[1], sub(c, a)); + if (elPos) { + var x = elPos; + var k = h[0] * x[0] / L + h[1] * x[1] / L + 1; + var ut = add(mul(x[0], m1), mul(x[1], m2)); + return add(mul(1 / k / L, ut), a); + } + var u = sub(clientPos, a); + var f = solve(sub(m1, mul(h[0], u)), sub(m2, mul(h[1], u)), u); + return mul(L, f); + }; + return FontMetrics; +}()); +FontMetrics.prototype.$characterSize = { width: 0, height: 0 }; +oop.implement(FontMetrics.prototype, EventEmitter); +exports.FontMetrics = FontMetrics; + +}); + +ace.define("ace/css/editor-css",["require","exports","module"], function(require, exports, module){/* +styles = [] +for (var i = 1; i < 16; i++) { + styles.push(".ace_br" + i + "{" + ( + ["top-left", "top-right", "bottom-right", "bottom-left"] + ).map(function(x, j) { + return i & (1< .ace_line, .ace_text-layer > .ace_line_group {\n contain: style size layout;\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n}\n\n.ace_hidpi .ace_text-layer,\n.ace_hidpi .ace_gutter-layer,\n.ace_hidpi .ace_content,\n.ace_hidpi .ace_gutter {\n contain: strict;\n}\n.ace_hidpi .ace_text-layer > .ace_line, \n.ace_hidpi .ace_text-layer > .ace_line_group {\n contain: strict;\n}\n\n.ace_cjk {\n display: inline-block;\n text-align: center;\n}\n\n.ace_cursor-layer {\n z-index: 4;\n}\n\n.ace_cursor {\n z-index: 4;\n position: absolute;\n box-sizing: border-box;\n border-left: 2px solid;\n /* workaround for smooth cursor repaintng whole screen in chrome */\n transform: translatez(0);\n}\n\n.ace_multiselect .ace_cursor {\n border-left-width: 1px;\n}\n\n.ace_slim-cursors .ace_cursor {\n border-left-width: 1px;\n}\n\n.ace_overwrite-cursors .ace_cursor {\n border-left-width: 0;\n border-bottom: 1px solid;\n}\n\n.ace_hidden-cursors .ace_cursor {\n opacity: 0.2;\n}\n\n.ace_hasPlaceholder .ace_hidden-cursors .ace_cursor {\n opacity: 0;\n}\n\n.ace_smooth-blinking .ace_cursor {\n transition: opacity 0.18s;\n}\n\n.ace_animate-blinking .ace_cursor {\n animation-duration: 1000ms;\n animation-timing-function: step-end;\n animation-name: blink-ace-animate;\n animation-iteration-count: infinite;\n}\n\n.ace_animate-blinking.ace_smooth-blinking .ace_cursor {\n animation-duration: 1000ms;\n animation-timing-function: ease-in-out;\n animation-name: blink-ace-animate-smooth;\n}\n \n@keyframes blink-ace-animate {\n from, to { opacity: 1; }\n 60% { opacity: 0; }\n}\n\n@keyframes blink-ace-animate-smooth {\n from, to { opacity: 1; }\n 45% { opacity: 1; }\n 60% { opacity: 0; }\n 85% { opacity: 0; }\n}\n\n.ace_marker-layer .ace_step, .ace_marker-layer .ace_stack {\n position: absolute;\n z-index: 3;\n}\n\n.ace_marker-layer .ace_selection {\n position: absolute;\n z-index: 5;\n}\n\n.ace_marker-layer .ace_bracket {\n position: absolute;\n z-index: 6;\n}\n\n.ace_marker-layer .ace_error_bracket {\n position: absolute;\n border-bottom: 1px solid #DE5555;\n border-radius: 0;\n}\n\n.ace_marker-layer .ace_active-line {\n position: absolute;\n z-index: 2;\n}\n\n.ace_marker-layer .ace_selected-word {\n position: absolute;\n z-index: 4;\n box-sizing: border-box;\n}\n\n.ace_line .ace_fold {\n box-sizing: border-box;\n\n display: inline-block;\n height: 11px;\n margin-top: -2px;\n vertical-align: middle;\n\n background-image:\n url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII=\"),\n url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACJJREFUeNpi+P//fxgTAwPDBxDxD078RSX+YeEyDFMCIMAAI3INmXiwf2YAAAAASUVORK5CYII=\");\n background-repeat: no-repeat, repeat-x;\n background-position: center center, top left;\n color: transparent;\n\n border: 1px solid black;\n border-radius: 2px;\n\n cursor: pointer;\n pointer-events: auto;\n}\n\n.ace_dark .ace_fold {\n}\n\n.ace_fold:hover{\n background-image:\n url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII=\"),\n url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACBJREFUeNpi+P//fz4TAwPDZxDxD5X4i5fLMEwJgAADAEPVDbjNw87ZAAAAAElFTkSuQmCC\");\n}\n\n.ace_tooltip {\n background-color: #f5f5f5;\n border: 1px solid gray;\n border-radius: 1px;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);\n color: black;\n max-width: 100%;\n padding: 3px 4px;\n position: fixed;\n z-index: 999999;\n box-sizing: border-box;\n cursor: default;\n white-space: pre-wrap;\n word-wrap: break-word;\n line-height: normal;\n font-style: normal;\n font-weight: normal;\n letter-spacing: normal;\n pointer-events: none;\n overflow: auto;\n max-width: min(60em, 66vw);\n}\n.ace_tooltip pre {\n white-space: pre-wrap;\n}\n\n.ace_tooltip.ace_dark {\n background-color: #636363;\n color: #fff;\n}\n\n.ace_tooltip:focus {\n outline: 1px solid #5E9ED6;\n}\n\n.ace_icon {\n display: inline-block;\n width: 18px;\n vertical-align: top;\n}\n\n.ace_icon_svg {\n display: inline-block;\n width: 12px;\n vertical-align: top;\n -webkit-mask-repeat: no-repeat;\n -webkit-mask-size: 12px;\n -webkit-mask-position: center;\n}\n\n.ace_folding-enabled > .ace_gutter-cell, .ace_folding-enabled > .ace_gutter-cell_svg-icons {\n padding-right: 13px;\n}\n\n.ace_fold-widget {\n box-sizing: border-box;\n\n margin: 0 -12px 0 1px;\n display: none;\n width: 11px;\n vertical-align: top;\n\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42mWKsQ0AMAzC8ixLlrzQjzmBiEjp0A6WwBCSPgKAXoLkqSot7nN3yMwR7pZ32NzpKkVoDBUxKAAAAABJRU5ErkJggg==\");\n background-repeat: no-repeat;\n background-position: center;\n\n border-radius: 3px;\n \n border: 1px solid transparent;\n cursor: pointer;\n}\n\n.ace_folding-enabled .ace_fold-widget {\n display: inline-block; \n}\n\n.ace_fold-widget.ace_end {\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42m3HwQkAMAhD0YzsRchFKI7sAikeWkrxwScEB0nh5e7KTPWimZki4tYfVbX+MNl4pyZXejUO1QAAAABJRU5ErkJggg==\");\n}\n\n.ace_fold-widget.ace_closed {\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAGCAYAAAAG5SQMAAAAOUlEQVR42jXKwQkAMAgDwKwqKD4EwQ26sSOkVWjgIIHAzPiCgaqiqnJHZnKICBERHN194O5b9vbLuAVRL+l0YWnZAAAAAElFTkSuQmCCXA==\");\n}\n\n.ace_fold-widget:hover {\n border: 1px solid rgba(0, 0, 0, 0.3);\n background-color: rgba(255, 255, 255, 0.2);\n box-shadow: 0 1px 1px rgba(255, 255, 255, 0.7);\n}\n\n.ace_fold-widget:active {\n border: 1px solid rgba(0, 0, 0, 0.4);\n background-color: rgba(0, 0, 0, 0.05);\n box-shadow: 0 1px 1px rgba(255, 255, 255, 0.8);\n}\n/**\n * Dark version for fold widgets\n */\n.ace_dark .ace_fold-widget {\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHklEQVQIW2P4//8/AzoGEQ7oGCaLLAhWiSwB146BAQCSTPYocqT0AAAAAElFTkSuQmCC\");\n}\n.ace_dark .ace_fold-widget.ace_end {\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAH0lEQVQIW2P4//8/AxQ7wNjIAjDMgC4AxjCVKBirIAAF0kz2rlhxpAAAAABJRU5ErkJggg==\");\n}\n.ace_dark .ace_fold-widget.ace_closed {\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAFCAYAAACAcVaiAAAAHElEQVQIW2P4//+/AxAzgDADlOOAznHAKgPWAwARji8UIDTfQQAAAABJRU5ErkJggg==\");\n}\n.ace_dark .ace_fold-widget:hover {\n box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);\n background-color: rgba(255, 255, 255, 0.1);\n}\n.ace_dark .ace_fold-widget:active {\n box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);\n}\n\n.ace_inline_button {\n border: 1px solid lightgray;\n display: inline-block;\n margin: -1px 8px;\n padding: 0 5px;\n pointer-events: auto;\n cursor: pointer;\n}\n.ace_inline_button:hover {\n border-color: gray;\n background: rgba(200,200,200,0.2);\n display: inline-block;\n pointer-events: auto;\n}\n\n.ace_fold-widget.ace_invalid {\n background-color: #FFB4B4;\n border-color: #DE5555;\n}\n\n.ace_fade-fold-widgets .ace_fold-widget {\n transition: opacity 0.4s ease 0.05s;\n opacity: 0;\n}\n\n.ace_fade-fold-widgets:hover .ace_fold-widget {\n transition: opacity 0.05s ease 0.05s;\n opacity:1;\n}\n\n.ace_underline {\n text-decoration: underline;\n}\n\n.ace_bold {\n font-weight: bold;\n}\n\n.ace_nobold .ace_bold {\n font-weight: normal;\n}\n\n.ace_italic {\n font-style: italic;\n}\n\n\n.ace_error-marker {\n background-color: rgba(255, 0, 0,0.2);\n position: absolute;\n z-index: 9;\n}\n\n.ace_highlight-marker {\n background-color: rgba(255, 255, 0,0.2);\n position: absolute;\n z-index: 8;\n}\n\n.ace_mobile-menu {\n position: absolute;\n line-height: 1.5;\n border-radius: 4px;\n -ms-user-select: none;\n -moz-user-select: none;\n -webkit-user-select: none;\n user-select: none;\n background: white;\n box-shadow: 1px 3px 2px grey;\n border: 1px solid #dcdcdc;\n color: black;\n}\n.ace_dark > .ace_mobile-menu {\n background: #333;\n color: #ccc;\n box-shadow: 1px 3px 2px grey;\n border: 1px solid #444;\n\n}\n.ace_mobile-button {\n padding: 2px;\n cursor: pointer;\n overflow: hidden;\n}\n.ace_mobile-button:hover {\n background-color: #eee;\n opacity:1;\n}\n.ace_mobile-button:active {\n background-color: #ddd;\n}\n\n.ace_placeholder {\n font-family: arial;\n transform: scale(0.9);\n transform-origin: left;\n white-space: pre;\n opacity: 0.7;\n margin: 0 10px;\n}\n\n.ace_ghost_text {\n opacity: 0.5;\n font-style: italic;\n white-space: pre;\n}\n\n.ace_screenreader-only {\n position:absolute;\n left:-10000px;\n top:auto;\n width:1px;\n height:1px;\n overflow:hidden;\n}"; + +}); + +ace.define("ace/layer/decorators",["require","exports","module","ace/lib/dom","ace/lib/oop","ace/lib/event_emitter"], function(require, exports, module){"use strict"; +var dom = require("../lib/dom"); +var oop = require("../lib/oop"); +var EventEmitter = require("../lib/event_emitter").EventEmitter; +var Decorator = /** @class */ (function () { + function Decorator(parent, renderer) { + this.canvas = dom.createElement("canvas"); + this.renderer = renderer; + this.pixelRatio = 1; + this.maxHeight = renderer.layerConfig.maxHeight; + this.lineHeight = renderer.layerConfig.lineHeight; + this.canvasHeight = parent.parent.scrollHeight; + this.heightRatio = this.canvasHeight / this.maxHeight; + this.canvasWidth = parent.width; + this.minDecorationHeight = (2 * this.pixelRatio) | 0; + this.halfMinDecorationHeight = (this.minDecorationHeight / 2) | 0; + this.canvas.width = this.canvasWidth; + this.canvas.height = this.canvasHeight; + this.canvas.style.top = 0 + "px"; + this.canvas.style.right = 0 + "px"; + this.canvas.style.zIndex = 7 + "px"; + this.canvas.style.position = "absolute"; + this.colors = {}; + this.colors.dark = { + "error": "rgba(255, 18, 18, 1)", + "warning": "rgba(18, 136, 18, 1)", + "info": "rgba(18, 18, 136, 1)" + }; + this.colors.light = { + "error": "rgb(255,51,51)", + "warning": "rgb(32,133,72)", + "info": "rgb(35,68,138)" + }; + parent.element.appendChild(this.canvas); + } + Decorator.prototype.$updateDecorators = function (config) { + var colors = (this.renderer.theme.isDark === true) ? this.colors.dark : this.colors.light; + if (config) { + this.maxHeight = config.maxHeight; + this.lineHeight = config.lineHeight; + this.canvasHeight = config.height; + var allLineHeight = (config.lastRow + 1) * this.lineHeight; + if (allLineHeight < this.canvasHeight) { + this.heightRatio = 1; + } + else { + this.heightRatio = this.canvasHeight / this.maxHeight; + } + } + var ctx = this.canvas.getContext("2d"); + function compare(a, b) { + if (a.priority < b.priority) + return -1; + if (a.priority > b.priority) + return 1; + return 0; + } + var annotations = this.renderer.session.$annotations; + ctx.clearRect(0, 0, this.canvas.width, this.canvas.height); + if (annotations) { + var priorities = { + "info": 1, + "warning": 2, + "error": 3 + }; + annotations.forEach(function (item) { + item.priority = priorities[item.type] || null; + }); + annotations = annotations.sort(compare); + var foldData = this.renderer.session.$foldData; + for (var i = 0; i < annotations.length; i++) { + var row = annotations[i].row; + var compensateFold = this.compensateFoldRows(row, foldData); + var currentY = Math.round((row - compensateFold) * this.lineHeight * this.heightRatio); + var y1 = Math.round(((row - compensateFold) * this.lineHeight * this.heightRatio)); + var y2 = Math.round((((row - compensateFold) * this.lineHeight + this.lineHeight) * this.heightRatio)); + var height = y2 - y1; + if (height < this.minDecorationHeight) { + var yCenter = ((y1 + y2) / 2) | 0; + if (yCenter < this.halfMinDecorationHeight) { + yCenter = this.halfMinDecorationHeight; + } + else if (yCenter + this.halfMinDecorationHeight > this.canvasHeight) { + yCenter = this.canvasHeight - this.halfMinDecorationHeight; + } + y1 = Math.round(yCenter - this.halfMinDecorationHeight); + y2 = Math.round(yCenter + this.halfMinDecorationHeight); + } + ctx.fillStyle = colors[annotations[i].type] || null; + ctx.fillRect(0, currentY, this.canvasWidth, y2 - y1); + } + } + var cursor = this.renderer.session.selection.getCursor(); + if (cursor) { + var compensateFold = this.compensateFoldRows(cursor.row, foldData); + var currentY = Math.round((cursor.row - compensateFold) * this.lineHeight * this.heightRatio); + ctx.fillStyle = "rgba(0, 0, 0, 0.5)"; + ctx.fillRect(0, currentY, this.canvasWidth, 2); + } + }; + Decorator.prototype.compensateFoldRows = function (row, foldData) { + var compensateFold = 0; + if (foldData && foldData.length > 0) { + for (var j = 0; j < foldData.length; j++) { + if (row > foldData[j].start.row && row < foldData[j].end.row) { + compensateFold += row - foldData[j].start.row; + } + else if (row >= foldData[j].end.row) { + compensateFold += foldData[j].end.row - foldData[j].start.row; + } + } + } + return compensateFold; + }; + return Decorator; +}()); +oop.implement(Decorator.prototype, EventEmitter); +exports.Decorator = Decorator; + +}); + +ace.define("ace/virtual_renderer",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/config","ace/layer/gutter","ace/layer/marker","ace/layer/text","ace/layer/cursor","ace/scrollbar","ace/scrollbar","ace/scrollbar_custom","ace/scrollbar_custom","ace/renderloop","ace/layer/font_metrics","ace/lib/event_emitter","ace/css/editor-css","ace/layer/decorators","ace/lib/useragent"], function(require, exports, module){"use strict"; +var oop = require("./lib/oop"); +var dom = require("./lib/dom"); +var lang = require("./lib/lang"); +var config = require("./config"); +var GutterLayer = require("./layer/gutter").Gutter; +var MarkerLayer = require("./layer/marker").Marker; +var TextLayer = require("./layer/text").Text; +var CursorLayer = require("./layer/cursor").Cursor; +var HScrollBar = require("./scrollbar").HScrollBar; +var VScrollBar = require("./scrollbar").VScrollBar; +var HScrollBarCustom = require("./scrollbar_custom").HScrollBar; +var VScrollBarCustom = require("./scrollbar_custom").VScrollBar; +var RenderLoop = require("./renderloop").RenderLoop; +var FontMetrics = require("./layer/font_metrics").FontMetrics; +var EventEmitter = require("./lib/event_emitter").EventEmitter; +var editorCss = require("./css/editor-css"); +var Decorator = require("./layer/decorators").Decorator; +var useragent = require("./lib/useragent"); +dom.importCssString(editorCss, "ace_editor.css", false); +var VirtualRenderer = /** @class */ (function () { + function VirtualRenderer(container, theme) { + var _self = this; + this.container = container || dom.createElement("div"); + dom.addCssClass(this.container, "ace_editor"); + if (dom.HI_DPI) + dom.addCssClass(this.container, "ace_hidpi"); + this.setTheme(theme); + if (config.get("useStrictCSP") == null) + config.set("useStrictCSP", false); + this.$gutter = dom.createElement("div"); + this.$gutter.className = "ace_gutter"; + this.container.appendChild(this.$gutter); + this.$gutter.setAttribute("aria-hidden", true); + this.scroller = dom.createElement("div"); + this.scroller.className = "ace_scroller"; + this.container.appendChild(this.scroller); + this.content = dom.createElement("div"); + this.content.className = "ace_content"; + this.scroller.appendChild(this.content); + this.$gutterLayer = new GutterLayer(this.$gutter); + this.$gutterLayer.on("changeGutterWidth", this.onGutterResize.bind(this)); + this.$markerBack = new MarkerLayer(this.content); + var textLayer = this.$textLayer = new TextLayer(this.content); + this.canvas = textLayer.element; + this.$markerFront = new MarkerLayer(this.content); + this.$cursorLayer = new CursorLayer(this.content); + this.$horizScroll = false; + this.$vScroll = false; + this.scrollBar = + this.scrollBarV = new VScrollBar(this.container, this); + this.scrollBarH = new HScrollBar(this.container, this); + this.scrollBarV.on("scroll", function (e) { + if (!_self.$scrollAnimation) + _self.session.setScrollTop(e.data - _self.scrollMargin.top); + }); + this.scrollBarH.on("scroll", function (e) { + if (!_self.$scrollAnimation) + _self.session.setScrollLeft(e.data - _self.scrollMargin.left); + }); + this.scrollTop = 0; + this.scrollLeft = 0; + this.cursorPos = { + row: 0, + column: 0 + }; + this.$fontMetrics = new FontMetrics(this.container); + this.$textLayer.$setFontMetrics(this.$fontMetrics); + this.$textLayer.on("changeCharacterSize", function (e) { + _self.updateCharacterSize(); + _self.onResize(true, _self.gutterWidth, _self.$size.width, _self.$size.height); + _self._signal("changeCharacterSize", e); + }); + this.$size = { + width: 0, + height: 0, + scrollerHeight: 0, + scrollerWidth: 0, + $dirty: true + }; + this.layerConfig = { + width: 1, + padding: 0, + firstRow: 0, + firstRowScreen: 0, + lastRow: 0, + lineHeight: 0, + characterWidth: 0, + minHeight: 1, + maxHeight: 1, + offset: 0, + height: 1, + gutterOffset: 1 + }; + this.scrollMargin = { + left: 0, + right: 0, + top: 0, + bottom: 0, + v: 0, + h: 0 + }; + this.margin = { + left: 0, + right: 0, + top: 0, + bottom: 0, + v: 0, + h: 0 + }; + this.$keepTextAreaAtCursor = !useragent.isIOS; + this.$loop = new RenderLoop(this.$renderChanges.bind(this), this.container.ownerDocument.defaultView); + this.$loop.schedule(this.CHANGE_FULL); + this.updateCharacterSize(); + this.setPadding(4); + this.$addResizeObserver(); + config.resetOptions(this); + config._signal("renderer", this); + } + VirtualRenderer.prototype.updateCharacterSize = function () { + if (this.$textLayer.allowBoldFonts != this.$allowBoldFonts) { + this.$allowBoldFonts = this.$textLayer.allowBoldFonts; + this.setStyle("ace_nobold", !this.$allowBoldFonts); + } + this.layerConfig.characterWidth = + this.characterWidth = this.$textLayer.getCharacterWidth(); + this.layerConfig.lineHeight = + this.lineHeight = this.$textLayer.getLineHeight(); + this.$updatePrintMargin(); + dom.setStyle(this.scroller.style, "line-height", this.lineHeight + "px"); + }; + VirtualRenderer.prototype.setSession = function (session) { + if (this.session) + this.session.doc.off("changeNewLineMode", this.onChangeNewLineMode); + this.session = session; + if (session && this.scrollMargin.top && session.getScrollTop() <= 0) + session.setScrollTop(-this.scrollMargin.top); + this.$cursorLayer.setSession(session); + this.$markerBack.setSession(session); + this.$markerFront.setSession(session); + this.$gutterLayer.setSession(session); + this.$textLayer.setSession(session); + if (!session) + return; + this.$loop.schedule(this.CHANGE_FULL); + this.session.$setFontMetrics(this.$fontMetrics); + this.scrollBarH.scrollLeft = this.scrollBarV.scrollTop = null; + this.onChangeNewLineMode = this.onChangeNewLineMode.bind(this); + this.onChangeNewLineMode(); + this.session.doc.on("changeNewLineMode", this.onChangeNewLineMode); + }; + VirtualRenderer.prototype.updateLines = function (firstRow, lastRow, force) { + if (lastRow === undefined) + lastRow = Infinity; + if (!this.$changedLines) { + this.$changedLines = { + firstRow: firstRow, + lastRow: lastRow + }; + } + else { + if (this.$changedLines.firstRow > firstRow) + this.$changedLines.firstRow = firstRow; + if (this.$changedLines.lastRow < lastRow) + this.$changedLines.lastRow = lastRow; + } + if (this.$changedLines.lastRow < this.layerConfig.firstRow) { + if (force) + this.$changedLines.lastRow = this.layerConfig.lastRow; + else + return; + } + if (this.$changedLines.firstRow > this.layerConfig.lastRow) + return; + this.$loop.schedule(this.CHANGE_LINES); + }; + VirtualRenderer.prototype.onChangeNewLineMode = function () { + this.$loop.schedule(this.CHANGE_TEXT); + this.$textLayer.$updateEolChar(); + this.session.$bidiHandler.setEolChar(this.$textLayer.EOL_CHAR); + }; + VirtualRenderer.prototype.onChangeTabSize = function () { + this.$loop.schedule(this.CHANGE_TEXT | this.CHANGE_MARKER); + this.$textLayer.onChangeTabSize(); + }; + VirtualRenderer.prototype.updateText = function () { + this.$loop.schedule(this.CHANGE_TEXT); + }; + VirtualRenderer.prototype.updateFull = function (force) { + if (force) + this.$renderChanges(this.CHANGE_FULL, true); + else + this.$loop.schedule(this.CHANGE_FULL); + }; + VirtualRenderer.prototype.updateFontSize = function () { + this.$textLayer.checkForSizeChanges(); + }; + VirtualRenderer.prototype.$updateSizeAsync = function () { + if (this.$loop.pending) + this.$size.$dirty = true; + else + this.onResize(); + }; + VirtualRenderer.prototype.onResize = function (force, gutterWidth, width, height) { + if (this.resizing > 2) + return; + else if (this.resizing > 0) + this.resizing++; + else + this.resizing = force ? 1 : 0; + var el = this.container; + if (!height) + height = el.clientHeight || el.scrollHeight; + if (!width) + width = el.clientWidth || el.scrollWidth; + var changes = this.$updateCachedSize(force, gutterWidth, width, height); + if (this.$resizeTimer) + this.$resizeTimer.cancel(); + if (!this.$size.scrollerHeight || (!width && !height)) + return this.resizing = 0; + if (force) + this.$gutterLayer.$padding = null; + if (force) + this.$renderChanges(changes | this.$changes, true); + else + this.$loop.schedule(changes | this.$changes); + if (this.resizing) + this.resizing = 0; + this.scrollBarH.scrollLeft = this.scrollBarV.scrollTop = null; + if (this.$customScrollbar) { + this.$updateCustomScrollbar(true); + } + }; + VirtualRenderer.prototype.$updateCachedSize = function (force, gutterWidth, width, height) { + height -= (this.$extraHeight || 0); + var changes = 0; + var size = this.$size; + var oldSize = { + width: size.width, + height: size.height, + scrollerHeight: size.scrollerHeight, + scrollerWidth: size.scrollerWidth + }; + if (height && (force || size.height != height)) { + size.height = height; + changes |= this.CHANGE_SIZE; + size.scrollerHeight = size.height; + if (this.$horizScroll) + size.scrollerHeight -= this.scrollBarH.getHeight(); + this.scrollBarV.setHeight(size.scrollerHeight); + this.scrollBarV.element.style.bottom = this.scrollBarH.getHeight() + "px"; + changes = changes | this.CHANGE_SCROLL; + } + if (width && (force || size.width != width)) { + changes |= this.CHANGE_SIZE; + size.width = width; + if (gutterWidth == null) + gutterWidth = this.$showGutter ? this.$gutter.offsetWidth : 0; + this.gutterWidth = gutterWidth; + dom.setStyle(this.scrollBarH.element.style, "left", gutterWidth + "px"); + dom.setStyle(this.scroller.style, "left", gutterWidth + this.margin.left + "px"); + size.scrollerWidth = Math.max(0, width - gutterWidth - this.scrollBarV.getWidth() - this.margin.h); + dom.setStyle(this.$gutter.style, "left", this.margin.left + "px"); + var right = this.scrollBarV.getWidth() + "px"; + dom.setStyle(this.scrollBarH.element.style, "right", right); + dom.setStyle(this.scroller.style, "right", right); + dom.setStyle(this.scroller.style, "bottom", this.scrollBarH.getHeight()); + this.scrollBarH.setWidth(size.scrollerWidth); + if (this.session && this.session.getUseWrapMode() && this.adjustWrapLimit() || force) { + changes |= this.CHANGE_FULL; + } + } + size.$dirty = !width || !height; + if (changes) + this._signal("resize", oldSize); + return changes; + }; + VirtualRenderer.prototype.onGutterResize = function (width) { + var gutterWidth = this.$showGutter ? width : 0; + if (gutterWidth != this.gutterWidth) + this.$changes |= this.$updateCachedSize(true, gutterWidth, this.$size.width, this.$size.height); + if (this.session.getUseWrapMode() && this.adjustWrapLimit()) { + this.$loop.schedule(this.CHANGE_FULL); + } + else if (this.$size.$dirty) { + this.$loop.schedule(this.CHANGE_FULL); + } + else { + this.$computeLayerConfig(); + } + }; + VirtualRenderer.prototype.adjustWrapLimit = function () { + var availableWidth = this.$size.scrollerWidth - this.$padding * 2; + var limit = Math.floor(availableWidth / this.characterWidth); + return this.session.adjustWrapLimit(limit, this.$showPrintMargin && this.$printMarginColumn); + }; + VirtualRenderer.prototype.setAnimatedScroll = function (shouldAnimate) { + this.setOption("animatedScroll", shouldAnimate); + }; + VirtualRenderer.prototype.getAnimatedScroll = function () { + return this.$animatedScroll; + }; + VirtualRenderer.prototype.setShowInvisibles = function (showInvisibles) { + this.setOption("showInvisibles", showInvisibles); + this.session.$bidiHandler.setShowInvisibles(showInvisibles); + }; + VirtualRenderer.prototype.getShowInvisibles = function () { + return this.getOption("showInvisibles"); + }; + VirtualRenderer.prototype.getDisplayIndentGuides = function () { + return this.getOption("displayIndentGuides"); + }; + VirtualRenderer.prototype.setDisplayIndentGuides = function (display) { + this.setOption("displayIndentGuides", display); + }; + VirtualRenderer.prototype.getHighlightIndentGuides = function () { + return this.getOption("highlightIndentGuides"); + }; + VirtualRenderer.prototype.setHighlightIndentGuides = function (highlight) { + this.setOption("highlightIndentGuides", highlight); + }; + VirtualRenderer.prototype.setShowPrintMargin = function (showPrintMargin) { + this.setOption("showPrintMargin", showPrintMargin); + }; + VirtualRenderer.prototype.getShowPrintMargin = function () { + return this.getOption("showPrintMargin"); + }; + VirtualRenderer.prototype.setPrintMarginColumn = function (showPrintMargin) { + this.setOption("printMarginColumn", showPrintMargin); + }; + VirtualRenderer.prototype.getPrintMarginColumn = function () { + return this.getOption("printMarginColumn"); + }; + VirtualRenderer.prototype.getShowGutter = function () { + return this.getOption("showGutter"); + }; + VirtualRenderer.prototype.setShowGutter = function (show) { + return this.setOption("showGutter", show); + }; + VirtualRenderer.prototype.getFadeFoldWidgets = function () { + return this.getOption("fadeFoldWidgets"); + }; + VirtualRenderer.prototype.setFadeFoldWidgets = function (show) { + this.setOption("fadeFoldWidgets", show); + }; + VirtualRenderer.prototype.setHighlightGutterLine = function (shouldHighlight) { + this.setOption("highlightGutterLine", shouldHighlight); + }; + VirtualRenderer.prototype.getHighlightGutterLine = function () { + return this.getOption("highlightGutterLine"); + }; + VirtualRenderer.prototype.$updatePrintMargin = function () { + if (!this.$showPrintMargin && !this.$printMarginEl) + return; + if (!this.$printMarginEl) { + var containerEl = dom.createElement("div"); + containerEl.className = "ace_layer ace_print-margin-layer"; + this.$printMarginEl = dom.createElement("div"); + this.$printMarginEl.className = "ace_print-margin"; + containerEl.appendChild(this.$printMarginEl); + this.content.insertBefore(containerEl, this.content.firstChild); + } + var style = this.$printMarginEl.style; + style.left = Math.round(this.characterWidth * this.$printMarginColumn + this.$padding) + "px"; + style.visibility = this.$showPrintMargin ? "visible" : "hidden"; + if (this.session && this.session.$wrap == -1) + this.adjustWrapLimit(); + }; + VirtualRenderer.prototype.getContainerElement = function () { + return this.container; + }; + VirtualRenderer.prototype.getMouseEventTarget = function () { + return this.scroller; + }; + VirtualRenderer.prototype.getTextAreaContainer = function () { + return this.container; + }; + VirtualRenderer.prototype.$moveTextAreaToCursor = function () { + if (this.$isMousePressed) + return; + var style = this.textarea.style; + var composition = this.$composition; + if (!this.$keepTextAreaAtCursor && !composition) { + dom.translate(this.textarea, -100, 0); + return; + } + var pixelPos = this.$cursorLayer.$pixelPos; + if (!pixelPos) + return; + if (composition && composition.markerRange) + pixelPos = this.$cursorLayer.getPixelPosition(composition.markerRange.start, true); + var config = this.layerConfig; + var posTop = pixelPos.top; + var posLeft = pixelPos.left; + posTop -= config.offset; + var h = composition && composition.useTextareaForIME || useragent.isMobile ? this.lineHeight : 1; + if (posTop < 0 || posTop > config.height - h) { + dom.translate(this.textarea, 0, 0); + return; + } + var w = 1; + var maxTop = this.$size.height - h; + if (!composition) { + posTop += this.lineHeight; + } + else { + if (composition.useTextareaForIME) { + var val = this.textarea.value; + w = this.characterWidth * (this.session.$getStringScreenWidth(val)[0]); + } + else { + posTop += this.lineHeight + 2; + } + } + posLeft -= this.scrollLeft; + if (posLeft > this.$size.scrollerWidth - w) + posLeft = this.$size.scrollerWidth - w; + posLeft += this.gutterWidth + this.margin.left; + dom.setStyle(style, "height", h + "px"); + dom.setStyle(style, "width", w + "px"); + dom.translate(this.textarea, Math.min(posLeft, this.$size.scrollerWidth - w), Math.min(posTop, maxTop)); + }; + VirtualRenderer.prototype.getFirstVisibleRow = function () { + return this.layerConfig.firstRow; + }; + VirtualRenderer.prototype.getFirstFullyVisibleRow = function () { + return this.layerConfig.firstRow + (this.layerConfig.offset === 0 ? 0 : 1); + }; + VirtualRenderer.prototype.getLastFullyVisibleRow = function () { + var config = this.layerConfig; + var lastRow = config.lastRow; + var top = this.session.documentToScreenRow(lastRow, 0) * config.lineHeight; + if (top - this.session.getScrollTop() > config.height - config.lineHeight) + return lastRow - 1; + return lastRow; + }; + VirtualRenderer.prototype.getLastVisibleRow = function () { + return this.layerConfig.lastRow; + }; + VirtualRenderer.prototype.setPadding = function (padding) { + this.$padding = padding; + this.$textLayer.setPadding(padding); + this.$cursorLayer.setPadding(padding); + this.$markerFront.setPadding(padding); + this.$markerBack.setPadding(padding); + this.$loop.schedule(this.CHANGE_FULL); + this.$updatePrintMargin(); + }; + VirtualRenderer.prototype.setScrollMargin = function (top, bottom, left, right) { + var sm = this.scrollMargin; + sm.top = top | 0; + sm.bottom = bottom | 0; + sm.right = right | 0; + sm.left = left | 0; + sm.v = sm.top + sm.bottom; + sm.h = sm.left + sm.right; + if (sm.top && this.scrollTop <= 0 && this.session) + this.session.setScrollTop(-sm.top); + this.updateFull(); + }; + VirtualRenderer.prototype.setMargin = function (top, bottom, left, right) { + var sm = this.margin; + sm.top = top | 0; + sm.bottom = bottom | 0; + sm.right = right | 0; + sm.left = left | 0; + sm.v = sm.top + sm.bottom; + sm.h = sm.left + sm.right; + this.$updateCachedSize(true, this.gutterWidth, this.$size.width, this.$size.height); + this.updateFull(); + }; + VirtualRenderer.prototype.getHScrollBarAlwaysVisible = function () { + return this.$hScrollBarAlwaysVisible; + }; + VirtualRenderer.prototype.setHScrollBarAlwaysVisible = function (alwaysVisible) { + this.setOption("hScrollBarAlwaysVisible", alwaysVisible); + }; + VirtualRenderer.prototype.getVScrollBarAlwaysVisible = function () { + return this.$vScrollBarAlwaysVisible; + }; + VirtualRenderer.prototype.setVScrollBarAlwaysVisible = function (alwaysVisible) { + this.setOption("vScrollBarAlwaysVisible", alwaysVisible); + }; + VirtualRenderer.prototype.$updateScrollBarV = function () { + var scrollHeight = this.layerConfig.maxHeight; + var scrollerHeight = this.$size.scrollerHeight; + if (!this.$maxLines && this.$scrollPastEnd) { + scrollHeight -= (scrollerHeight - this.lineHeight) * this.$scrollPastEnd; + if (this.scrollTop > scrollHeight - scrollerHeight) { + scrollHeight = this.scrollTop + scrollerHeight; + this.scrollBarV.scrollTop = null; + } + } + this.scrollBarV.setScrollHeight(scrollHeight + this.scrollMargin.v); + this.scrollBarV.setScrollTop(this.scrollTop + this.scrollMargin.top); + }; + VirtualRenderer.prototype.$updateScrollBarH = function () { + this.scrollBarH.setScrollWidth(this.layerConfig.width + 2 * this.$padding + this.scrollMargin.h); + this.scrollBarH.setScrollLeft(this.scrollLeft + this.scrollMargin.left); + }; + VirtualRenderer.prototype.freeze = function () { + this.$frozen = true; + }; + VirtualRenderer.prototype.unfreeze = function () { + this.$frozen = false; + }; + VirtualRenderer.prototype.$renderChanges = function (changes, force) { + if (this.$changes) { + changes |= this.$changes; + this.$changes = 0; + } + if ((!this.session || !this.container.offsetWidth || this.$frozen) || (!changes && !force)) { + this.$changes |= changes; + return; + } + if (this.$size.$dirty) { + this.$changes |= changes; + return this.onResize(true); + } + if (!this.lineHeight) { + this.$textLayer.checkForSizeChanges(); + } + this._signal("beforeRender", changes); + if (this.session && this.session.$bidiHandler) + this.session.$bidiHandler.updateCharacterWidths(this.$fontMetrics); + var config = this.layerConfig; + if (changes & this.CHANGE_FULL || + changes & this.CHANGE_SIZE || + changes & this.CHANGE_TEXT || + changes & this.CHANGE_LINES || + changes & this.CHANGE_SCROLL || + changes & this.CHANGE_H_SCROLL) { + changes |= this.$computeLayerConfig() | this.$loop.clear(); + if (config.firstRow != this.layerConfig.firstRow && config.firstRowScreen == this.layerConfig.firstRowScreen) { + var st = this.scrollTop + (config.firstRow - Math.max(this.layerConfig.firstRow, 0)) * this.lineHeight; + if (st > 0) { + this.scrollTop = st; + changes = changes | this.CHANGE_SCROLL; + changes |= this.$computeLayerConfig() | this.$loop.clear(); + } + } + config = this.layerConfig; + this.$updateScrollBarV(); + if (changes & this.CHANGE_H_SCROLL) + this.$updateScrollBarH(); + dom.translate(this.content, -this.scrollLeft, -config.offset); + var width = config.width + 2 * this.$padding + "px"; + var height = config.minHeight + "px"; + dom.setStyle(this.content.style, "width", width); + dom.setStyle(this.content.style, "height", height); + } + if (changes & this.CHANGE_H_SCROLL) { + dom.translate(this.content, -this.scrollLeft, -config.offset); + this.scroller.className = this.scrollLeft <= 0 ? "ace_scroller " : "ace_scroller ace_scroll-left "; + if (this.enableKeyboardAccessibility) + this.scroller.className += this.keyboardFocusClassName; + } + if (changes & this.CHANGE_FULL) { + this.$changedLines = null; + this.$textLayer.update(config); + if (this.$showGutter) + this.$gutterLayer.update(config); + if (this.$customScrollbar) { + this.$scrollDecorator.$updateDecorators(config); + } + this.$markerBack.update(config); + this.$markerFront.update(config); + this.$cursorLayer.update(config); + this.$moveTextAreaToCursor(); + this._signal("afterRender", changes); + return; + } + if (changes & this.CHANGE_SCROLL) { + this.$changedLines = null; + if (changes & this.CHANGE_TEXT || changes & this.CHANGE_LINES) + this.$textLayer.update(config); + else + this.$textLayer.scrollLines(config); + if (this.$showGutter) { + if (changes & this.CHANGE_GUTTER || changes & this.CHANGE_LINES) + this.$gutterLayer.update(config); + else + this.$gutterLayer.scrollLines(config); + } + if (this.$customScrollbar) { + this.$scrollDecorator.$updateDecorators(config); + } + this.$markerBack.update(config); + this.$markerFront.update(config); + this.$cursorLayer.update(config); + this.$moveTextAreaToCursor(); + this._signal("afterRender", changes); + return; + } + if (changes & this.CHANGE_TEXT) { + this.$changedLines = null; + this.$textLayer.update(config); + if (this.$showGutter) + this.$gutterLayer.update(config); + if (this.$customScrollbar) { + this.$scrollDecorator.$updateDecorators(config); + } + } + else if (changes & this.CHANGE_LINES) { + if (this.$updateLines() || (changes & this.CHANGE_GUTTER) && this.$showGutter) + this.$gutterLayer.update(config); + if (this.$customScrollbar) { + this.$scrollDecorator.$updateDecorators(config); + } + } + else if (changes & this.CHANGE_TEXT || changes & this.CHANGE_GUTTER) { + if (this.$showGutter) + this.$gutterLayer.update(config); + if (this.$customScrollbar) { + this.$scrollDecorator.$updateDecorators(config); + } + } + else if (changes & this.CHANGE_CURSOR) { + if (this.$highlightGutterLine) + this.$gutterLayer.updateLineHighlight(config); + if (this.$customScrollbar) { + this.$scrollDecorator.$updateDecorators(config); + } + } + if (changes & this.CHANGE_CURSOR) { + this.$cursorLayer.update(config); + this.$moveTextAreaToCursor(); + } + if (changes & (this.CHANGE_MARKER | this.CHANGE_MARKER_FRONT)) { + this.$markerFront.update(config); + } + if (changes & (this.CHANGE_MARKER | this.CHANGE_MARKER_BACK)) { + this.$markerBack.update(config); + } + this._signal("afterRender", changes); + }; + VirtualRenderer.prototype.$autosize = function () { + var height = this.session.getScreenLength() * this.lineHeight; + var maxHeight = this.$maxLines * this.lineHeight; + var desiredHeight = Math.min(maxHeight, Math.max((this.$minLines || 1) * this.lineHeight, height)) + this.scrollMargin.v + (this.$extraHeight || 0); + if (this.$horizScroll) + desiredHeight += this.scrollBarH.getHeight(); + if (this.$maxPixelHeight && desiredHeight > this.$maxPixelHeight) + desiredHeight = this.$maxPixelHeight; + var hideScrollbars = desiredHeight <= 2 * this.lineHeight; + var vScroll = !hideScrollbars && height > maxHeight; + if (desiredHeight != this.desiredHeight || + this.$size.height != this.desiredHeight || vScroll != this.$vScroll) { + if (vScroll != this.$vScroll) { + this.$vScroll = vScroll; + this.scrollBarV.setVisible(vScroll); + } + var w = this.container.clientWidth; + this.container.style.height = desiredHeight + "px"; + this.$updateCachedSize(true, this.$gutterWidth, w, desiredHeight); + this.desiredHeight = desiredHeight; + this._signal("autosize"); + } + }; + VirtualRenderer.prototype.$computeLayerConfig = function () { + var session = this.session; + var size = this.$size; + var hideScrollbars = size.height <= 2 * this.lineHeight; + var screenLines = this.session.getScreenLength(); + var maxHeight = screenLines * this.lineHeight; + var longestLine = this.$getLongestLine(); + var horizScroll = !hideScrollbars && (this.$hScrollBarAlwaysVisible || + size.scrollerWidth - longestLine - 2 * this.$padding < 0); + var hScrollChanged = this.$horizScroll !== horizScroll; + if (hScrollChanged) { + this.$horizScroll = horizScroll; + this.scrollBarH.setVisible(horizScroll); + } + var vScrollBefore = this.$vScroll; // autosize can change vscroll value in which case we need to update longestLine + if (this.$maxLines && this.lineHeight > 1) + this.$autosize(); + var minHeight = size.scrollerHeight + this.lineHeight; + var scrollPastEnd = !this.$maxLines && this.$scrollPastEnd + ? (size.scrollerHeight - this.lineHeight) * this.$scrollPastEnd + : 0; + maxHeight += scrollPastEnd; + var sm = this.scrollMargin; + this.session.setScrollTop(Math.max(-sm.top, Math.min(this.scrollTop, maxHeight - size.scrollerHeight + sm.bottom))); + this.session.setScrollLeft(Math.max(-sm.left, Math.min(this.scrollLeft, longestLine + 2 * this.$padding - size.scrollerWidth + sm.right))); + var vScroll = !hideScrollbars && (this.$vScrollBarAlwaysVisible || + size.scrollerHeight - maxHeight + scrollPastEnd < 0 || this.scrollTop > sm.top); + var vScrollChanged = vScrollBefore !== vScroll; + if (vScrollChanged) { + this.$vScroll = vScroll; + this.scrollBarV.setVisible(vScroll); + } + var offset = this.scrollTop % this.lineHeight; + var lineCount = Math.ceil(minHeight / this.lineHeight) - 1; + var firstRow = Math.max(0, Math.round((this.scrollTop - offset) / this.lineHeight)); + var lastRow = firstRow + lineCount; + var firstRowScreen, firstRowHeight; + var lineHeight = this.lineHeight; + firstRow = session.screenToDocumentRow(firstRow, 0); + var foldLine = session.getFoldLine(firstRow); + if (foldLine) { + firstRow = foldLine.start.row; + } + firstRowScreen = session.documentToScreenRow(firstRow, 0); + firstRowHeight = session.getRowLength(firstRow) * lineHeight; + lastRow = Math.min(session.screenToDocumentRow(lastRow, 0), session.getLength() - 1); + minHeight = size.scrollerHeight + session.getRowLength(lastRow) * lineHeight + + firstRowHeight; + offset = this.scrollTop - firstRowScreen * lineHeight; + var changes = 0; + if (this.layerConfig.width != longestLine || hScrollChanged) + changes = this.CHANGE_H_SCROLL; + if (hScrollChanged || vScrollChanged) { + changes |= this.$updateCachedSize(true, this.gutterWidth, size.width, size.height); + this._signal("scrollbarVisibilityChanged"); + if (vScrollChanged) + longestLine = this.$getLongestLine(); + } + this.layerConfig = { + width: longestLine, + padding: this.$padding, + firstRow: firstRow, + firstRowScreen: firstRowScreen, + lastRow: lastRow, + lineHeight: lineHeight, + characterWidth: this.characterWidth, + minHeight: minHeight, + maxHeight: maxHeight, + offset: offset, + gutterOffset: lineHeight ? Math.max(0, Math.ceil((offset + size.height - size.scrollerHeight) / lineHeight)) : 0, + height: this.$size.scrollerHeight + }; + if (this.session.$bidiHandler) + this.session.$bidiHandler.setContentWidth(longestLine - this.$padding); + return changes; + }; + VirtualRenderer.prototype.$updateLines = function () { + if (!this.$changedLines) + return; + var firstRow = this.$changedLines.firstRow; + var lastRow = this.$changedLines.lastRow; + this.$changedLines = null; + var layerConfig = this.layerConfig; + if (firstRow > layerConfig.lastRow + 1) { + return; + } + if (lastRow < layerConfig.firstRow) { + return; + } + if (lastRow === Infinity) { + if (this.$showGutter) + this.$gutterLayer.update(layerConfig); + this.$textLayer.update(layerConfig); + return; + } + this.$textLayer.updateLines(layerConfig, firstRow, lastRow); + return true; + }; + VirtualRenderer.prototype.$getLongestLine = function () { + var charCount = this.session.getScreenWidth(); + if (this.showInvisibles && !this.session.$useWrapMode) + charCount += 1; + if (this.$textLayer && charCount > this.$textLayer.MAX_LINE_LENGTH) + charCount = this.$textLayer.MAX_LINE_LENGTH + 30; + return Math.max(this.$size.scrollerWidth - 2 * this.$padding, Math.round(charCount * this.characterWidth)); + }; + VirtualRenderer.prototype.updateFrontMarkers = function () { + this.$markerFront.setMarkers(this.session.getMarkers(true)); + this.$loop.schedule(this.CHANGE_MARKER_FRONT); + }; + VirtualRenderer.prototype.updateBackMarkers = function () { + this.$markerBack.setMarkers(this.session.getMarkers()); + this.$loop.schedule(this.CHANGE_MARKER_BACK); + }; + VirtualRenderer.prototype.addGutterDecoration = function (row, className) { + this.$gutterLayer.addGutterDecoration(row, className); + }; + VirtualRenderer.prototype.removeGutterDecoration = function (row, className) { + this.$gutterLayer.removeGutterDecoration(row, className); + }; + VirtualRenderer.prototype.updateBreakpoints = function (rows) { + this.$loop.schedule(this.CHANGE_GUTTER); + }; + VirtualRenderer.prototype.setAnnotations = function (annotations) { + this.$gutterLayer.setAnnotations(annotations); + this.$loop.schedule(this.CHANGE_GUTTER); + }; + VirtualRenderer.prototype.updateCursor = function () { + this.$loop.schedule(this.CHANGE_CURSOR); + }; + VirtualRenderer.prototype.hideCursor = function () { + this.$cursorLayer.hideCursor(); + }; + VirtualRenderer.prototype.showCursor = function () { + this.$cursorLayer.showCursor(); + }; + VirtualRenderer.prototype.scrollSelectionIntoView = function (anchor, lead, offset) { + this.scrollCursorIntoView(anchor, offset); + this.scrollCursorIntoView(lead, offset); + }; + VirtualRenderer.prototype.scrollCursorIntoView = function (cursor, offset, $viewMargin) { + if (this.$size.scrollerHeight === 0) + return; + var pos = this.$cursorLayer.getPixelPosition(cursor); + var newLeft = pos.left; + var newTop = pos.top; + var topMargin = $viewMargin && $viewMargin.top || 0; + var bottomMargin = $viewMargin && $viewMargin.bottom || 0; + if (this.$scrollAnimation) { + this.$stopAnimation = true; + } + var currentTop = this.$scrollAnimation ? this.session.getScrollTop() : this.scrollTop; + if (currentTop + topMargin > newTop) { + if (offset && currentTop + topMargin > newTop + this.lineHeight) + newTop -= offset * this.$size.scrollerHeight; + if (newTop === 0) + newTop = -this.scrollMargin.top; + this.session.setScrollTop(newTop); + } + else if (currentTop + this.$size.scrollerHeight - bottomMargin < newTop + this.lineHeight) { + if (offset && currentTop + this.$size.scrollerHeight - bottomMargin < newTop - this.lineHeight) + newTop += offset * this.$size.scrollerHeight; + this.session.setScrollTop(newTop + this.lineHeight + bottomMargin - this.$size.scrollerHeight); + } + var currentLeft = this.scrollLeft; + var twoCharsWidth = 2 * this.layerConfig.characterWidth; + if (newLeft - twoCharsWidth < currentLeft) { + newLeft -= twoCharsWidth; + if (newLeft < this.$padding + twoCharsWidth) { + newLeft = -this.scrollMargin.left; + } + this.session.setScrollLeft(newLeft); + } + else { + newLeft += twoCharsWidth; + if (currentLeft + this.$size.scrollerWidth < newLeft + this.characterWidth) { + this.session.setScrollLeft(Math.round(newLeft + this.characterWidth - this.$size.scrollerWidth)); + } + else if (currentLeft <= this.$padding && newLeft - currentLeft < this.characterWidth) { + this.session.setScrollLeft(0); + } + } + }; + VirtualRenderer.prototype.getScrollTop = function () { + return this.session.getScrollTop(); + }; + VirtualRenderer.prototype.getScrollLeft = function () { + return this.session.getScrollLeft(); + }; + VirtualRenderer.prototype.getScrollTopRow = function () { + return this.scrollTop / this.lineHeight; + }; + VirtualRenderer.prototype.getScrollBottomRow = function () { + return Math.max(0, Math.floor((this.scrollTop + this.$size.scrollerHeight) / this.lineHeight) - 1); + }; + VirtualRenderer.prototype.scrollToRow = function (row) { + this.session.setScrollTop(row * this.lineHeight); + }; + VirtualRenderer.prototype.alignCursor = function (cursor, alignment) { + if (typeof cursor == "number") + cursor = { row: cursor, column: 0 }; + var pos = this.$cursorLayer.getPixelPosition(cursor); + var h = this.$size.scrollerHeight - this.lineHeight; + var offset = pos.top - h * (alignment || 0); + this.session.setScrollTop(offset); + return offset; + }; + VirtualRenderer.prototype.$calcSteps = function (fromValue, toValue) { + var i = 0; + var l = this.STEPS; + var steps = []; + var func = function (t, x_min, dx) { + return dx * (Math.pow(t - 1, 3) + 1) + x_min; + }; + for (i = 0; i < l; ++i) + steps.push(func(i / this.STEPS, fromValue, toValue - fromValue)); + return steps; + }; + VirtualRenderer.prototype.scrollToLine = function (line, center, animate, callback) { + var pos = this.$cursorLayer.getPixelPosition({ row: line, column: 0 }); + var offset = pos.top; + if (center) + offset -= this.$size.scrollerHeight / 2; + var initialScroll = this.scrollTop; + this.session.setScrollTop(offset); + if (animate !== false) + this.animateScrolling(initialScroll, callback); + }; + VirtualRenderer.prototype.animateScrolling = function (fromValue, callback) { + var toValue = this.scrollTop; + if (!this.$animatedScroll) + return; + var _self = this; + if (fromValue == toValue) + return; + if (this.$scrollAnimation) { + var oldSteps = this.$scrollAnimation.steps; + if (oldSteps.length) { + fromValue = oldSteps[0]; + if (fromValue == toValue) + return; + } + } + var steps = _self.$calcSteps(fromValue, toValue); + this.$scrollAnimation = { from: fromValue, to: toValue, steps: steps }; + clearInterval(this.$timer); + _self.session.setScrollTop(steps.shift()); + _self.session.$scrollTop = toValue; + function endAnimation() { + _self.$timer = clearInterval(_self.$timer); + _self.$scrollAnimation = null; + _self.$stopAnimation = false; + callback && callback(); + } + this.$timer = setInterval(function () { + if (_self.$stopAnimation) { + endAnimation(); + return; + } + if (!_self.session) + return clearInterval(_self.$timer); + if (steps.length) { + _self.session.setScrollTop(steps.shift()); + _self.session.$scrollTop = toValue; + } + else if (toValue != null) { + _self.session.$scrollTop = -1; + _self.session.setScrollTop(toValue); + toValue = null; + } + else { + endAnimation(); + } + }, 10); + }; + VirtualRenderer.prototype.scrollToY = function (scrollTop) { + if (this.scrollTop !== scrollTop) { + this.$loop.schedule(this.CHANGE_SCROLL); + this.scrollTop = scrollTop; + } + }; + VirtualRenderer.prototype.scrollToX = function (scrollLeft) { + if (this.scrollLeft !== scrollLeft) + this.scrollLeft = scrollLeft; + this.$loop.schedule(this.CHANGE_H_SCROLL); + }; + VirtualRenderer.prototype.scrollTo = function (x, y) { + this.session.setScrollTop(y); + this.session.setScrollLeft(x); + }; + VirtualRenderer.prototype.scrollBy = function (deltaX, deltaY) { + deltaY && this.session.setScrollTop(this.session.getScrollTop() + deltaY); + deltaX && this.session.setScrollLeft(this.session.getScrollLeft() + deltaX); + }; + VirtualRenderer.prototype.isScrollableBy = function (deltaX, deltaY) { + if (deltaY < 0 && this.session.getScrollTop() >= 1 - this.scrollMargin.top) + return true; + if (deltaY > 0 && this.session.getScrollTop() + this.$size.scrollerHeight + - this.layerConfig.maxHeight < -1 + this.scrollMargin.bottom) + return true; + if (deltaX < 0 && this.session.getScrollLeft() >= 1 - this.scrollMargin.left) + return true; + if (deltaX > 0 && this.session.getScrollLeft() + this.$size.scrollerWidth + - this.layerConfig.width < -1 + this.scrollMargin.right) + return true; + }; + VirtualRenderer.prototype.pixelToScreenCoordinates = function (x, y) { + var canvasPos; + if (this.$hasCssTransforms) { + canvasPos = { top: 0, left: 0 }; + var p = this.$fontMetrics.transformCoordinates([x, y]); + x = p[1] - this.gutterWidth - this.margin.left; + y = p[0]; + } + else { + canvasPos = this.scroller.getBoundingClientRect(); + } + var offsetX = x + this.scrollLeft - canvasPos.left - this.$padding; + var offset = offsetX / this.characterWidth; + var row = Math.floor((y + this.scrollTop - canvasPos.top) / this.lineHeight); + var col = this.$blockCursor ? Math.floor(offset) : Math.round(offset); + return { row: row, column: col, side: offset - col > 0 ? 1 : -1, offsetX: offsetX }; + }; + VirtualRenderer.prototype.screenToTextCoordinates = function (x, y) { + var canvasPos; + if (this.$hasCssTransforms) { + canvasPos = { top: 0, left: 0 }; + var p = this.$fontMetrics.transformCoordinates([x, y]); + x = p[1] - this.gutterWidth - this.margin.left; + y = p[0]; + } + else { + canvasPos = this.scroller.getBoundingClientRect(); + } + var offsetX = x + this.scrollLeft - canvasPos.left - this.$padding; + var offset = offsetX / this.characterWidth; + var col = this.$blockCursor ? Math.floor(offset) : Math.round(offset); + var row = Math.floor((y + this.scrollTop - canvasPos.top) / this.lineHeight); + return this.session.screenToDocumentPosition(row, Math.max(col, 0), offsetX); + }; + VirtualRenderer.prototype.textToScreenCoordinates = function (row, column) { + var canvasPos = this.scroller.getBoundingClientRect(); + var pos = this.session.documentToScreenPosition(row, column); + var x = this.$padding + (this.session.$bidiHandler.isBidiRow(pos.row, row) + ? this.session.$bidiHandler.getPosLeft(pos.column) + : Math.round(pos.column * this.characterWidth)); + var y = pos.row * this.lineHeight; + return { + pageX: canvasPos.left + x - this.scrollLeft, + pageY: canvasPos.top + y - this.scrollTop + }; + }; + VirtualRenderer.prototype.visualizeFocus = function () { + dom.addCssClass(this.container, "ace_focus"); + }; + VirtualRenderer.prototype.visualizeBlur = function () { + dom.removeCssClass(this.container, "ace_focus"); + }; + VirtualRenderer.prototype.showComposition = function (composition) { + this.$composition = composition; + if (!composition.cssText) { + composition.cssText = this.textarea.style.cssText; + } + if (composition.useTextareaForIME == undefined) + composition.useTextareaForIME = this.$useTextareaForIME; + if (this.$useTextareaForIME) { + dom.addCssClass(this.textarea, "ace_composition"); + this.textarea.style.cssText = ""; + this.$moveTextAreaToCursor(); + this.$cursorLayer.element.style.display = "none"; + } + else { + composition.markerId = this.session.addMarker(composition.markerRange, "ace_composition_marker", "text"); + } + }; + VirtualRenderer.prototype.setCompositionText = function (text) { + var cursor = this.session.selection.cursor; + this.addToken(text, "composition_placeholder", cursor.row, cursor.column); + this.$moveTextAreaToCursor(); + }; + VirtualRenderer.prototype.hideComposition = function () { + if (!this.$composition) + return; + if (this.$composition.markerId) + this.session.removeMarker(this.$composition.markerId); + dom.removeCssClass(this.textarea, "ace_composition"); + this.textarea.style.cssText = this.$composition.cssText; + var cursor = this.session.selection.cursor; + this.removeExtraToken(cursor.row, cursor.column); + this.$composition = null; + this.$cursorLayer.element.style.display = ""; + }; + VirtualRenderer.prototype.setGhostText = function (text, position) { + var cursor = this.session.selection.cursor; + var insertPosition = position || { row: cursor.row, column: cursor.column }; + this.removeGhostText(); + var textLines = text.split("\n"); + this.addToken(textLines[0], "ghost_text", insertPosition.row, insertPosition.column); + this.$ghostText = { + text: text, + position: { + row: insertPosition.row, + column: insertPosition.column + } + }; + if (textLines.length > 1) { + this.$ghostTextWidget = { + text: textLines.slice(1).join("\n"), + row: insertPosition.row, + column: insertPosition.column, + className: "ace_ghost_text" + }; + this.session.widgetManager.addLineWidget(this.$ghostTextWidget); + var pixelPosition = this.$cursorLayer.getPixelPosition(insertPosition, true); + var el = this.container; + var height = el.getBoundingClientRect().height; + var ghostTextHeight = textLines.length * this.lineHeight; + var fitsY = ghostTextHeight < height - pixelPosition.top; + if (fitsY) + return; + if (ghostTextHeight < height) { + this.scrollBy(0, (textLines.length - 1) * this.lineHeight); + } + else { + this.scrollBy(0, pixelPosition.top); + } + } + }; + VirtualRenderer.prototype.removeGhostText = function () { + if (!this.$ghostText) + return; + var position = this.$ghostText.position; + this.removeExtraToken(position.row, position.column); + if (this.$ghostTextWidget) { + this.session.widgetManager.removeLineWidget(this.$ghostTextWidget); + this.$ghostTextWidget = null; + } + this.$ghostText = null; + }; + VirtualRenderer.prototype.addToken = function (text, type, row, column) { + var session = this.session; + session.bgTokenizer.lines[row] = null; + var newToken = { type: type, value: text }; + var tokens = session.getTokens(row); + if (column == null || !tokens.length) { + tokens.push(newToken); + } + else { + var l = 0; + for (var i = 0; i < tokens.length; i++) { + var token = tokens[i]; + l += token.value.length; + if (column <= l) { + var diff = token.value.length - (l - column); + var before = token.value.slice(0, diff); + var after = token.value.slice(diff); + tokens.splice(i, 1, { type: token.type, value: before }, newToken, { type: token.type, value: after }); + break; + } + } + } + this.updateLines(row, row); + }; + VirtualRenderer.prototype.removeExtraToken = function (row, column) { + this.session.bgTokenizer.lines[row] = null; + this.updateLines(row, row); + }; + VirtualRenderer.prototype.setTheme = function (theme, cb) { + var _self = this; + this.$themeId = theme; + _self._dispatchEvent('themeChange', { theme: theme }); + if (!theme || typeof theme == "string") { + var moduleName = theme || this.$options.theme.initialValue; + config.loadModule(["theme", moduleName], afterLoad); + } + else { + afterLoad(theme); + } + function afterLoad(module) { + if (_self.$themeId != theme) + return cb && cb(); + if (!module || !module.cssClass) + throw new Error("couldn't load module " + theme + " or it didn't call define"); + if (module.$id) + _self.$themeId = module.$id; + dom.importCssString(module.cssText, module.cssClass, _self.container); + if (_self.theme) + dom.removeCssClass(_self.container, _self.theme.cssClass); + var padding = "padding" in module ? module.padding + : "padding" in (_self.theme || {}) ? 4 : _self.$padding; + if (_self.$padding && padding != _self.$padding) + _self.setPadding(padding); + _self.$theme = module.cssClass; + _self.theme = module; + dom.addCssClass(_self.container, module.cssClass); + dom.setCssClass(_self.container, "ace_dark", module.isDark); + if (_self.$size) { + _self.$size.width = 0; + _self.$updateSizeAsync(); + } + _self._dispatchEvent('themeLoaded', { theme: module }); + cb && cb(); + } + }; + VirtualRenderer.prototype.getTheme = function () { + return this.$themeId; + }; + VirtualRenderer.prototype.setStyle = function (style, include) { + dom.setCssClass(this.container, style, include !== false); + }; + VirtualRenderer.prototype.unsetStyle = function (style) { + dom.removeCssClass(this.container, style); + }; + VirtualRenderer.prototype.setCursorStyle = function (style) { + dom.setStyle(this.scroller.style, "cursor", style); + }; + VirtualRenderer.prototype.setMouseCursor = function (cursorStyle) { + dom.setStyle(this.scroller.style, "cursor", cursorStyle); + }; + VirtualRenderer.prototype.attachToShadowRoot = function () { + dom.importCssString(editorCss, "ace_editor.css", this.container); + }; + VirtualRenderer.prototype.destroy = function () { + this.freeze(); + this.$fontMetrics.destroy(); + this.$cursorLayer.destroy(); + this.removeAllListeners(); + this.container.textContent = ""; + this.setOption("useResizeObserver", false); + }; + VirtualRenderer.prototype.$updateCustomScrollbar = function (val) { + var _self = this; + this.$horizScroll = this.$vScroll = null; + this.scrollBarV.element.remove(); + this.scrollBarH.element.remove(); + if (this.$scrollDecorator) { + delete this.$scrollDecorator; + } + if (val === true) { + this.scrollBarV = new VScrollBarCustom(this.container, this); + this.scrollBarH = new HScrollBarCustom(this.container, this); + this.scrollBarV.setHeight(this.$size.scrollerHeight); + this.scrollBarH.setWidth(this.$size.scrollerWidth); + this.scrollBarV.addEventListener("scroll", function (e) { + if (!_self.$scrollAnimation) + _self.session.setScrollTop(e.data - _self.scrollMargin.top); + }); + this.scrollBarH.addEventListener("scroll", function (e) { + if (!_self.$scrollAnimation) + _self.session.setScrollLeft(e.data - _self.scrollMargin.left); + }); + this.$scrollDecorator = new Decorator(this.scrollBarV, this); + this.$scrollDecorator.$updateDecorators(); + } + else { + this.scrollBarV = new VScrollBar(this.container, this); + this.scrollBarH = new HScrollBar(this.container, this); + this.scrollBarV.addEventListener("scroll", function (e) { + if (!_self.$scrollAnimation) + _self.session.setScrollTop(e.data - _self.scrollMargin.top); + }); + this.scrollBarH.addEventListener("scroll", function (e) { + if (!_self.$scrollAnimation) + _self.session.setScrollLeft(e.data - _self.scrollMargin.left); + }); + } + }; + VirtualRenderer.prototype.$addResizeObserver = function () { + if (!window.ResizeObserver || this.$resizeObserver) + return; + var self = this; + this.$resizeTimer = lang.delayedCall(function () { + if (!self.destroyed) + self.onResize(); + }, 50); + this.$resizeObserver = new window.ResizeObserver(function (e) { + var w = e[0].contentRect.width; + var h = e[0].contentRect.height; + if (Math.abs(self.$size.width - w) > 1 + || Math.abs(self.$size.height - h) > 1) { + self.$resizeTimer.delay(); + } + else { + self.$resizeTimer.cancel(); + } + }); + this.$resizeObserver.observe(this.container); + }; + return VirtualRenderer; +}()); +VirtualRenderer.prototype.CHANGE_CURSOR = 1; +VirtualRenderer.prototype.CHANGE_MARKER = 2; +VirtualRenderer.prototype.CHANGE_GUTTER = 4; +VirtualRenderer.prototype.CHANGE_SCROLL = 8; +VirtualRenderer.prototype.CHANGE_LINES = 16; +VirtualRenderer.prototype.CHANGE_TEXT = 32; +VirtualRenderer.prototype.CHANGE_SIZE = 64; +VirtualRenderer.prototype.CHANGE_MARKER_BACK = 128; +VirtualRenderer.prototype.CHANGE_MARKER_FRONT = 256; +VirtualRenderer.prototype.CHANGE_FULL = 512; +VirtualRenderer.prototype.CHANGE_H_SCROLL = 1024; +VirtualRenderer.prototype.$changes = 0; +VirtualRenderer.prototype.$padding = null; +VirtualRenderer.prototype.$frozen = false; +VirtualRenderer.prototype.STEPS = 8; +oop.implement(VirtualRenderer.prototype, EventEmitter); +config.defineOptions(VirtualRenderer.prototype, "renderer", { + useResizeObserver: { + set: function (value) { + if (!value && this.$resizeObserver) { + this.$resizeObserver.disconnect(); + this.$resizeTimer.cancel(); + this.$resizeTimer = this.$resizeObserver = null; + } + else if (value && !this.$resizeObserver) { + this.$addResizeObserver(); + } + } + }, + animatedScroll: { initialValue: false }, + showInvisibles: { + set: function (value) { + if (this.$textLayer.setShowInvisibles(value)) + this.$loop.schedule(this.CHANGE_TEXT); + }, + initialValue: false + }, + showPrintMargin: { + set: function () { this.$updatePrintMargin(); }, + initialValue: true + }, + printMarginColumn: { + set: function () { this.$updatePrintMargin(); }, + initialValue: 80 + }, + printMargin: { + set: function (val) { + if (typeof val == "number") + this.$printMarginColumn = val; + this.$showPrintMargin = !!val; + this.$updatePrintMargin(); + }, + get: function () { + return this.$showPrintMargin && this.$printMarginColumn; + } + }, + showGutter: { + set: function (show) { + this.$gutter.style.display = show ? "block" : "none"; + this.$loop.schedule(this.CHANGE_FULL); + this.onGutterResize(); + }, + initialValue: true + }, + useSvgGutterIcons: { + set: function (value) { + this.$gutterLayer.$useSvgGutterIcons = value; + }, + initialValue: false + }, + showFoldedAnnotations: { + set: function (value) { + this.$gutterLayer.$showFoldedAnnotations = value; + }, + initialValue: false + }, + fadeFoldWidgets: { + set: function (show) { + dom.setCssClass(this.$gutter, "ace_fade-fold-widgets", show); + }, + initialValue: false + }, + showFoldWidgets: { + set: function (show) { + this.$gutterLayer.setShowFoldWidgets(show); + this.$loop.schedule(this.CHANGE_GUTTER); + }, + initialValue: true + }, + displayIndentGuides: { + set: function (show) { + if (this.$textLayer.setDisplayIndentGuides(show)) + this.$loop.schedule(this.CHANGE_TEXT); + }, + initialValue: true + }, + highlightIndentGuides: { + set: function (show) { + if (this.$textLayer.setHighlightIndentGuides(show) == true) { + this.$textLayer.$highlightIndentGuide(); + } + else { + this.$textLayer.$clearActiveIndentGuide(this.$textLayer.$lines.cells); + } + }, + initialValue: true + }, + highlightGutterLine: { + set: function (shouldHighlight) { + this.$gutterLayer.setHighlightGutterLine(shouldHighlight); + this.$loop.schedule(this.CHANGE_GUTTER); + }, + initialValue: true + }, + hScrollBarAlwaysVisible: { + set: function (val) { + if (!this.$hScrollBarAlwaysVisible || !this.$horizScroll) + this.$loop.schedule(this.CHANGE_SCROLL); + }, + initialValue: false + }, + vScrollBarAlwaysVisible: { + set: function (val) { + if (!this.$vScrollBarAlwaysVisible || !this.$vScroll) + this.$loop.schedule(this.CHANGE_SCROLL); + }, + initialValue: false + }, + fontSize: { + set: function (size) { + if (typeof size == "number") + size = size + "px"; + this.container.style.fontSize = size; + this.updateFontSize(); + }, + initialValue: 12 + }, + fontFamily: { + set: function (name) { + this.container.style.fontFamily = name; + this.updateFontSize(); + } + }, + maxLines: { + set: function (val) { + this.updateFull(); + } + }, + minLines: { + set: function (val) { + if (!(this.$minLines < 0x1ffffffffffff)) + this.$minLines = 0; + this.updateFull(); + } + }, + maxPixelHeight: { + set: function (val) { + this.updateFull(); + }, + initialValue: 0 + }, + scrollPastEnd: { + set: function (val) { + val = +val || 0; + if (this.$scrollPastEnd == val) + return; + this.$scrollPastEnd = val; + this.$loop.schedule(this.CHANGE_SCROLL); + }, + initialValue: 0, + handlesSet: true + }, + fixedWidthGutter: { + set: function (val) { + this.$gutterLayer.$fixedWidth = !!val; + this.$loop.schedule(this.CHANGE_GUTTER); + } + }, + customScrollbar: { + set: function (val) { + this.$updateCustomScrollbar(val); + }, + initialValue: false + }, + theme: { + set: function (val) { this.setTheme(val); }, + get: function () { return this.$themeId || this.theme; }, + initialValue: "./theme/textmate", + handlesSet: true + }, + hasCssTransforms: {}, + useTextareaForIME: { + initialValue: !useragent.isMobile && !useragent.isIE + } +}); +exports.VirtualRenderer = VirtualRenderer; + +}); + +ace.define("ace/worker/worker_client",["require","exports","module","ace/lib/oop","ace/lib/net","ace/lib/event_emitter","ace/config"], function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var net = require("../lib/net"); +var EventEmitter = require("../lib/event_emitter").EventEmitter; +var config = require("../config"); + +function $workerBlob(workerUrl) { + var script = "importScripts('" + net.qualifyURL(workerUrl) + "');"; + try { + return new Blob([script], {"type": "application/javascript"}); + } catch (e) { // Backwards-compatibility + var BlobBuilder = window.BlobBuilder || window.WebKitBlobBuilder || window.MozBlobBuilder; + var blobBuilder = new BlobBuilder(); + blobBuilder.append(script); + return blobBuilder.getBlob("application/javascript"); + } +} + +function createWorker(workerUrl) { + if (typeof Worker == "undefined") + return { postMessage: function() {}, terminate: function() {} }; + if (config.get("loadWorkerFromBlob")) { + var blob = $workerBlob(workerUrl); + var URL = window.URL || window.webkitURL; + var blobURL = URL.createObjectURL(blob); + return new Worker(blobURL); + } + return new Worker(workerUrl); +} + +var WorkerClient = function(worker) { + if (!worker.postMessage) + worker = this.$createWorkerFromOldConfig.apply(this, arguments); + + this.$worker = worker; + this.$sendDeltaQueue = this.$sendDeltaQueue.bind(this); + this.changeListener = this.changeListener.bind(this); + this.onMessage = this.onMessage.bind(this); + + this.callbackId = 1; + this.callbacks = {}; + + this.$worker.onmessage = this.onMessage; +}; + +(function(){ + + oop.implement(this, EventEmitter); + + this.$createWorkerFromOldConfig = function(topLevelNamespaces, mod, classname, workerUrl, importScripts) { + if (require.nameToUrl && !require.toUrl) + require.toUrl = require.nameToUrl; + + if (config.get("packaged") || !require.toUrl) { + workerUrl = workerUrl || config.moduleUrl(mod, "worker"); + } else { + var normalizePath = this.$normalizePath; + workerUrl = workerUrl || normalizePath(require.toUrl("ace/worker/worker.js", null, "_")); + + var tlns = {}; + topLevelNamespaces.forEach(function(ns) { + tlns[ns] = normalizePath(require.toUrl(ns, null, "_").replace(/(\.js)?(\?.*)?$/, "")); + }); + } + + this.$worker = createWorker(workerUrl); + if (importScripts) { + this.send("importScripts", importScripts); + } + this.$worker.postMessage({ + init : true, + tlns : tlns, + module : mod, + classname : classname + }); + return this.$worker; + }; + + this.onMessage = function(e) { + var msg = e.data; + switch (msg.type) { + case "event": + this._signal(msg.name, {data: msg.data}); + break; + case "call": + var callback = this.callbacks[msg.id]; + if (callback) { + callback(msg.data); + delete this.callbacks[msg.id]; + } + break; + case "error": + this.reportError(msg.data); + break; + case "log": + window.console && console.log && console.log.apply(console, msg.data); + break; + } + }; + + this.reportError = function(err) { + window.console && console.error && console.error(err); + }; + + this.$normalizePath = function(path) { + return net.qualifyURL(path); + }; + + this.terminate = function() { + this._signal("terminate", {}); + this.deltaQueue = null; + this.$worker.terminate(); + this.$worker.onerror = function(e) { + e.preventDefault(); + }; + this.$worker = null; + if (this.$doc) + this.$doc.off("change", this.changeListener); + this.$doc = null; + }; + + this.send = function(cmd, args) { + this.$worker.postMessage({command: cmd, args: args}); + }; + + this.call = function(cmd, args, callback) { + if (callback) { + var id = this.callbackId++; + this.callbacks[id] = callback; + args.push(id); + } + this.send(cmd, args); + }; + + this.emit = function(event, data) { + try { + if (data.data && data.data.err) + data.data.err = {message: data.data.err.message, stack: data.data.err.stack, code: data.data.err.code}; + this.$worker && this.$worker.postMessage({event: event, data: {data: data.data}}); + } + catch(ex) { + console.error(ex.stack); + } + }; + + this.attachToDocument = function(doc) { + if (this.$doc) + this.terminate(); + + this.$doc = doc; + this.call("setValue", [doc.getValue()]); + doc.on("change", this.changeListener, true); + }; + + this.changeListener = function(delta) { + if (!this.deltaQueue) { + this.deltaQueue = []; + setTimeout(this.$sendDeltaQueue, 0); + } + if (delta.action == "insert") + this.deltaQueue.push(delta.start, delta.lines); + else + this.deltaQueue.push(delta.start, delta.end); + }; + + this.$sendDeltaQueue = function() { + var q = this.deltaQueue; + if (!q) return; + this.deltaQueue = null; + if (q.length > 50 && q.length > this.$doc.getLength() >> 1) { + this.call("setValue", [this.$doc.getValue()]); + } else + this.emit("change", {data: q}); + }; + +}).call(WorkerClient.prototype); + + +var UIWorkerClient = function(topLevelNamespaces, mod, classname) { + var main = null; + var emitSync = false; + var sender = Object.create(EventEmitter); + + var messageBuffer = []; + var workerClient = new WorkerClient({ + messageBuffer: messageBuffer, + terminate: function() {}, + postMessage: function(e) { + messageBuffer.push(e); + if (!main) return; + if (emitSync) + setTimeout(processNext); + else + processNext(); + } + }); + + workerClient.setEmitSync = function(val) { emitSync = val; }; + + var processNext = function() { + var msg = messageBuffer.shift(); + if (msg.command) + main[msg.command].apply(main, msg.args); + else if (msg.event) + sender._signal(msg.event, msg.data); + }; + + sender.postMessage = function(msg) { + workerClient.onMessage({data: msg}); + }; + sender.callback = function(data, callbackId) { + this.postMessage({type: "call", id: callbackId, data: data}); + }; + sender.emit = function(name, data) { + this.postMessage({type: "event", name: name, data: data}); + }; + + config.loadModule(["worker", mod], function(Main) { + main = new Main[classname](sender); + while (messageBuffer.length) + processNext(); + }); + + return workerClient; +}; + +exports.UIWorkerClient = UIWorkerClient; +exports.WorkerClient = WorkerClient; +exports.createWorker = createWorker; + + +}); + +ace.define("ace/placeholder",["require","exports","module","ace/range","ace/lib/event_emitter","ace/lib/oop"], function(require, exports, module){"use strict"; +var Range = require("./range").Range; +var EventEmitter = require("./lib/event_emitter").EventEmitter; +var oop = require("./lib/oop"); +var PlaceHolder = /** @class */ (function () { + function PlaceHolder(session, length, pos, others, mainClass, othersClass) { + var _self = this; + this.length = length; + this.session = session; + this.doc = session.getDocument(); + this.mainClass = mainClass; + this.othersClass = othersClass; + this.$onUpdate = this.onUpdate.bind(this); + this.doc.on("change", this.$onUpdate, true); + this.$others = others; + this.$onCursorChange = function () { + setTimeout(function () { + _self.onCursorChange(); + }); + }; + this.$pos = pos; + var undoStack = session.getUndoManager().$undoStack || session.getUndoManager().$undostack || { length: -1 }; + this.$undoStackDepth = undoStack.length; + this.setup(); + session.selection.on("changeCursor", this.$onCursorChange); + } + PlaceHolder.prototype.setup = function () { + var _self = this; + var doc = this.doc; + var session = this.session; + this.selectionBefore = session.selection.toJSON(); + if (session.selection.inMultiSelectMode) + session.selection.toSingleRange(); + this.pos = doc.createAnchor(this.$pos.row, this.$pos.column); + var pos = this.pos; + pos.$insertRight = true; + pos.detach(); + pos.markerId = session.addMarker(new Range(pos.row, pos.column, pos.row, pos.column + this.length), this.mainClass, null, false); + this.others = []; + this.$others.forEach(function (other) { + var anchor = doc.createAnchor(other.row, other.column); + anchor.$insertRight = true; + anchor.detach(); + _self.others.push(anchor); + }); + session.setUndoSelect(false); + }; + PlaceHolder.prototype.showOtherMarkers = function () { + if (this.othersActive) + return; + var session = this.session; + var _self = this; + this.othersActive = true; + this.others.forEach(function (anchor) { + anchor.markerId = session.addMarker(new Range(anchor.row, anchor.column, anchor.row, anchor.column + _self.length), _self.othersClass, null, false); + }); + }; + PlaceHolder.prototype.hideOtherMarkers = function () { + if (!this.othersActive) + return; + this.othersActive = false; + for (var i = 0; i < this.others.length; i++) { + this.session.removeMarker(this.others[i].markerId); + } + }; + PlaceHolder.prototype.onUpdate = function (delta) { + if (this.$updating) + return this.updateAnchors(delta); + var range = delta; + if (range.start.row !== range.end.row) + return; + if (range.start.row !== this.pos.row) + return; + this.$updating = true; + var lengthDiff = delta.action === "insert" ? range.end.column - range.start.column : range.start.column - range.end.column; + var inMainRange = range.start.column >= this.pos.column && range.start.column <= this.pos.column + this.length + 1; + var distanceFromStart = range.start.column - this.pos.column; + this.updateAnchors(delta); + if (inMainRange) + this.length += lengthDiff; + if (inMainRange && !this.session.$fromUndo) { + if (delta.action === 'insert') { + for (var i = this.others.length - 1; i >= 0; i--) { + var otherPos = this.others[i]; + var newPos = { row: otherPos.row, column: otherPos.column + distanceFromStart }; + this.doc.insertMergedLines(newPos, delta.lines); + } + } + else if (delta.action === 'remove') { + for (var i = this.others.length - 1; i >= 0; i--) { + var otherPos = this.others[i]; + var newPos = { row: otherPos.row, column: otherPos.column + distanceFromStart }; + this.doc.remove(new Range(newPos.row, newPos.column, newPos.row, newPos.column - lengthDiff)); + } + } + } + this.$updating = false; + this.updateMarkers(); + }; + PlaceHolder.prototype.updateAnchors = function (delta) { + this.pos.onChange(delta); + for (var i = this.others.length; i--;) + this.others[i].onChange(delta); + this.updateMarkers(); + }; + PlaceHolder.prototype.updateMarkers = function () { + if (this.$updating) + return; + var _self = this; + var session = this.session; + var updateMarker = function (pos, className) { + session.removeMarker(pos.markerId); + pos.markerId = session.addMarker(new Range(pos.row, pos.column, pos.row, pos.column + _self.length), className, null, false); + }; + updateMarker(this.pos, this.mainClass); + for (var i = this.others.length; i--;) + updateMarker(this.others[i], this.othersClass); + }; + PlaceHolder.prototype.onCursorChange = function (event) { + if (this.$updating || !this.session) + return; + var pos = this.session.selection.getCursor(); + if (pos.row === this.pos.row && pos.column >= this.pos.column && pos.column <= this.pos.column + this.length) { + this.showOtherMarkers(); + this._emit("cursorEnter", event); + } + else { + this.hideOtherMarkers(); + this._emit("cursorLeave", event); + } + }; + PlaceHolder.prototype.detach = function () { + this.session.removeMarker(this.pos && this.pos.markerId); + this.hideOtherMarkers(); + this.doc.off("change", this.$onUpdate); + this.session.selection.off("changeCursor", this.$onCursorChange); + this.session.setUndoSelect(true); + this.session = null; + }; + PlaceHolder.prototype.cancel = function () { + if (this.$undoStackDepth === -1) + return; + var undoManager = this.session.getUndoManager(); + var undosRequired = (undoManager.$undoStack || undoManager.$undostack).length - this.$undoStackDepth; + for (var i = 0; i < undosRequired; i++) { + undoManager.undo(this.session, true); + } + if (this.selectionBefore) + this.session.selection.fromJSON(this.selectionBefore); + }; + return PlaceHolder; +}()); +oop.implement(PlaceHolder.prototype, EventEmitter); +exports.PlaceHolder = PlaceHolder; + +}); + +ace.define("ace/mouse/multi_select_handler",["require","exports","module","ace/lib/event","ace/lib/useragent"], function(require, exports, module){var event = require("../lib/event"); +var useragent = require("../lib/useragent"); +function isSamePoint(p1, p2) { + return p1.row == p2.row && p1.column == p2.column; +} +function onMouseDown(e) { + var ev = e.domEvent; + var alt = ev.altKey; + var shift = ev.shiftKey; + var ctrl = ev.ctrlKey; + var accel = e.getAccelKey(); + var button = e.getButton(); + if (ctrl && useragent.isMac) + button = ev.button; + if (e.editor.inMultiSelectMode && button == 2) { + e.editor.textInput.onContextMenu(e.domEvent); + return; + } + if (!ctrl && !alt && !accel) { + if (button === 0 && e.editor.inMultiSelectMode) + e.editor.exitMultiSelectMode(); + return; + } + if (button !== 0) + return; + var editor = e.editor; + var selection = editor.selection; + var isMultiSelect = editor.inMultiSelectMode; + var pos = e.getDocumentPosition(); + var cursor = selection.getCursor(); + var inSelection = e.inSelection() || (selection.isEmpty() && isSamePoint(pos, cursor)); + var mouseX = e.x, mouseY = e.y; + var onMouseSelection = function (e) { + mouseX = e.clientX; + mouseY = e.clientY; + }; + var session = editor.session; + var screenAnchor = editor.renderer.pixelToScreenCoordinates(mouseX, mouseY); + var screenCursor = screenAnchor; + var selectionMode; + if (editor.$mouseHandler.$enableJumpToDef) { + if (ctrl && alt || accel && alt) + selectionMode = shift ? "block" : "add"; + else if (alt && editor.$blockSelectEnabled) + selectionMode = "block"; + } + else { + if (accel && !alt) { + selectionMode = "add"; + if (!isMultiSelect && shift) + return; + } + else if (alt && editor.$blockSelectEnabled) { + selectionMode = "block"; + } + } + if (selectionMode && useragent.isMac && ev.ctrlKey) { + editor.$mouseHandler.cancelContextMenu(); + } + if (selectionMode == "add") { + if (!isMultiSelect && inSelection) + return; // dragging + if (!isMultiSelect) { + var range = selection.toOrientedRange(); + editor.addSelectionMarker(range); + } + var oldRange = selection.rangeList.rangeAtPoint(pos); + editor.inVirtualSelectionMode = true; + if (shift) { + oldRange = null; + range = selection.ranges[0] || range; + editor.removeSelectionMarker(range); + } + editor.once("mouseup", function () { + var tmpSel = selection.toOrientedRange(); + if (oldRange && tmpSel.isEmpty() && isSamePoint(oldRange.cursor, tmpSel.cursor)) + selection.substractPoint(tmpSel.cursor); + else { + if (shift) { + selection.substractPoint(range.cursor); + } + else if (range) { + editor.removeSelectionMarker(range); + selection.addRange(range); + } + selection.addRange(tmpSel); + } + editor.inVirtualSelectionMode = false; + }); + } + else if (selectionMode == "block") { + e.stop(); + editor.inVirtualSelectionMode = true; + var initialRange; + var rectSel = []; + var blockSelect = function () { + var newCursor = editor.renderer.pixelToScreenCoordinates(mouseX, mouseY); + var cursor = session.screenToDocumentPosition(newCursor.row, newCursor.column, newCursor.offsetX); + if (isSamePoint(screenCursor, newCursor) && isSamePoint(cursor, selection.lead)) + return; + screenCursor = newCursor; + editor.selection.moveToPosition(cursor); + editor.renderer.scrollCursorIntoView(); + editor.removeSelectionMarkers(rectSel); + rectSel = selection.rectangularRangeBlock(screenCursor, screenAnchor); + if (editor.$mouseHandler.$clickSelection && rectSel.length == 1 && rectSel[0].isEmpty()) + rectSel[0] = editor.$mouseHandler.$clickSelection.clone(); + rectSel.forEach(editor.addSelectionMarker, editor); + editor.updateSelectionMarkers(); + }; + if (isMultiSelect && !accel) { + selection.toSingleRange(); + } + else if (!isMultiSelect && accel) { + initialRange = selection.toOrientedRange(); + editor.addSelectionMarker(initialRange); + } + if (shift) + screenAnchor = session.documentToScreenPosition(selection.lead); + else + selection.moveToPosition(pos); + screenCursor = { row: -1, column: -1 }; + var onMouseSelectionEnd = function (e) { + blockSelect(); + clearInterval(timerId); + editor.removeSelectionMarkers(rectSel); + if (!rectSel.length) + rectSel = [selection.toOrientedRange()]; + if (initialRange) { + editor.removeSelectionMarker(initialRange); + selection.toSingleRange(initialRange); + } + for (var i = 0; i < rectSel.length; i++) + selection.addRange(rectSel[i]); + editor.inVirtualSelectionMode = false; + editor.$mouseHandler.$clickSelection = null; + }; + var onSelectionInterval = blockSelect; + event.capture(editor.container, onMouseSelection, onMouseSelectionEnd); + var timerId = setInterval(function () { onSelectionInterval(); }, 20); + return e.preventDefault(); + } +} +exports.onMouseDown = onMouseDown; + +}); + +ace.define("ace/commands/multi_select_commands",["require","exports","module","ace/keyboard/hash_handler"], function(require, exports, module){// commands to enter multiselect mode +exports.defaultCommands = [{ + name: "addCursorAbove", + description: "Add cursor above", + exec: function (editor) { editor.selectMoreLines(-1); }, + bindKey: { win: "Ctrl-Alt-Up", mac: "Ctrl-Alt-Up" }, + scrollIntoView: "cursor", + readOnly: true + }, { + name: "addCursorBelow", + description: "Add cursor below", + exec: function (editor) { editor.selectMoreLines(1); }, + bindKey: { win: "Ctrl-Alt-Down", mac: "Ctrl-Alt-Down" }, + scrollIntoView: "cursor", + readOnly: true + }, { + name: "addCursorAboveSkipCurrent", + description: "Add cursor above (skip current)", + exec: function (editor) { editor.selectMoreLines(-1, true); }, + bindKey: { win: "Ctrl-Alt-Shift-Up", mac: "Ctrl-Alt-Shift-Up" }, + scrollIntoView: "cursor", + readOnly: true + }, { + name: "addCursorBelowSkipCurrent", + description: "Add cursor below (skip current)", + exec: function (editor) { editor.selectMoreLines(1, true); }, + bindKey: { win: "Ctrl-Alt-Shift-Down", mac: "Ctrl-Alt-Shift-Down" }, + scrollIntoView: "cursor", + readOnly: true + }, { + name: "selectMoreBefore", + description: "Select more before", + exec: function (editor) { editor.selectMore(-1); }, + bindKey: { win: "Ctrl-Alt-Left", mac: "Ctrl-Alt-Left" }, + scrollIntoView: "cursor", + readOnly: true + }, { + name: "selectMoreAfter", + description: "Select more after", + exec: function (editor) { editor.selectMore(1); }, + bindKey: { win: "Ctrl-Alt-Right", mac: "Ctrl-Alt-Right" }, + scrollIntoView: "cursor", + readOnly: true + }, { + name: "selectNextBefore", + description: "Select next before", + exec: function (editor) { editor.selectMore(-1, true); }, + bindKey: { win: "Ctrl-Alt-Shift-Left", mac: "Ctrl-Alt-Shift-Left" }, + scrollIntoView: "cursor", + readOnly: true + }, { + name: "selectNextAfter", + description: "Select next after", + exec: function (editor) { editor.selectMore(1, true); }, + bindKey: { win: "Ctrl-Alt-Shift-Right", mac: "Ctrl-Alt-Shift-Right" }, + scrollIntoView: "cursor", + readOnly: true + }, { + name: "toggleSplitSelectionIntoLines", + description: "Split selection into lines", + exec: function (editor) { + if (editor.multiSelect.rangeCount > 1) + editor.multiSelect.joinSelections(); + else + editor.multiSelect.splitIntoLines(); + }, + bindKey: { win: "Ctrl-Alt-L", mac: "Ctrl-Alt-L" }, + readOnly: true + }, { + name: "splitSelectionIntoLines", + description: "Split into lines", + exec: function (editor) { editor.multiSelect.splitIntoLines(); }, + readOnly: true + }, { + name: "alignCursors", + description: "Align cursors", + exec: function (editor) { editor.alignCursors(); }, + bindKey: { win: "Ctrl-Alt-A", mac: "Ctrl-Alt-A" }, + scrollIntoView: "cursor" + }, { + name: "findAll", + description: "Find all", + exec: function (editor) { editor.findAll(); }, + bindKey: { win: "Ctrl-Alt-K", mac: "Ctrl-Alt-G" }, + scrollIntoView: "cursor", + readOnly: true + }]; +exports.multiSelectCommands = [{ + name: "singleSelection", + description: "Single selection", + bindKey: "esc", + exec: function (editor) { editor.exitMultiSelectMode(); }, + scrollIntoView: "cursor", + readOnly: true, + isAvailable: function (editor) { return editor && editor.inMultiSelectMode; } + }]; +var HashHandler = require("../keyboard/hash_handler").HashHandler; +exports.keyboardHandler = new HashHandler(exports.multiSelectCommands); + +}); + +ace.define("ace/multi_select",["require","exports","module","ace/range_list","ace/range","ace/selection","ace/mouse/multi_select_handler","ace/lib/event","ace/lib/lang","ace/commands/multi_select_commands","ace/search","ace/edit_session","ace/editor","ace/config"], function(require, exports, module){var RangeList = require("./range_list").RangeList; +var Range = require("./range").Range; +var Selection = require("./selection").Selection; +var onMouseDown = require("./mouse/multi_select_handler").onMouseDown; +var event = require("./lib/event"); +var lang = require("./lib/lang"); +var commands = require("./commands/multi_select_commands"); +exports.commands = commands.defaultCommands.concat(commands.multiSelectCommands); +var Search = require("./search").Search; +var search = new Search(); +function find(session, needle, dir) { + search.$options.wrap = true; + search.$options.needle = needle; + search.$options.backwards = dir == -1; + return search.find(session); +} +var EditSession = require("./edit_session").EditSession; +(function () { + this.getSelectionMarkers = function () { + return this.$selectionMarkers; + }; +}).call(EditSession.prototype); +(function () { + this.ranges = null; + this.rangeList = null; + this.addRange = function (range, $blockChangeEvents) { + if (!range) + return; + if (!this.inMultiSelectMode && this.rangeCount === 0) { + var oldRange = this.toOrientedRange(); + this.rangeList.add(oldRange); + this.rangeList.add(range); + if (this.rangeList.ranges.length != 2) { + this.rangeList.removeAll(); + return $blockChangeEvents || this.fromOrientedRange(range); + } + this.rangeList.removeAll(); + this.rangeList.add(oldRange); + this.$onAddRange(oldRange); + } + if (!range.cursor) + range.cursor = range.end; + var removed = this.rangeList.add(range); + this.$onAddRange(range); + if (removed.length) + this.$onRemoveRange(removed); + if (this.rangeCount > 1 && !this.inMultiSelectMode) { + this._signal("multiSelect"); + this.inMultiSelectMode = true; + this.session.$undoSelect = false; + this.rangeList.attach(this.session); + } + return $blockChangeEvents || this.fromOrientedRange(range); + }; + this.toSingleRange = function (range) { + range = range || this.ranges[0]; + var removed = this.rangeList.removeAll(); + if (removed.length) + this.$onRemoveRange(removed); + range && this.fromOrientedRange(range); + }; + this.substractPoint = function (pos) { + var removed = this.rangeList.substractPoint(pos); + if (removed) { + this.$onRemoveRange(removed); + return removed[0]; + } + }; + this.mergeOverlappingRanges = function () { + var removed = this.rangeList.merge(); + if (removed.length) + this.$onRemoveRange(removed); + }; + this.$onAddRange = function (range) { + this.rangeCount = this.rangeList.ranges.length; + this.ranges.unshift(range); + this._signal("addRange", { range: range }); + }; + this.$onRemoveRange = function (removed) { + this.rangeCount = this.rangeList.ranges.length; + if (this.rangeCount == 1 && this.inMultiSelectMode) { + var lastRange = this.rangeList.ranges.pop(); + removed.push(lastRange); + this.rangeCount = 0; + } + for (var i = removed.length; i--;) { + var index = this.ranges.indexOf(removed[i]); + this.ranges.splice(index, 1); + } + this._signal("removeRange", { ranges: removed }); + if (this.rangeCount === 0 && this.inMultiSelectMode) { + this.inMultiSelectMode = false; + this._signal("singleSelect"); + this.session.$undoSelect = true; + this.rangeList.detach(this.session); + } + lastRange = lastRange || this.ranges[0]; + if (lastRange && !lastRange.isEqual(this.getRange())) + this.fromOrientedRange(lastRange); + }; + this.$initRangeList = function () { + if (this.rangeList) + return; + this.rangeList = new RangeList(); + this.ranges = []; + this.rangeCount = 0; + }; + this.getAllRanges = function () { + return this.rangeCount ? this.rangeList.ranges.concat() : [this.getRange()]; + }; + this.splitIntoLines = function () { + var ranges = this.ranges.length ? this.ranges : [this.getRange()]; + var newRanges = []; + for (var i = 0; i < ranges.length; i++) { + var range = ranges[i]; + var row = range.start.row; + var endRow = range.end.row; + if (row === endRow) { + newRanges.push(range.clone()); + } + else { + newRanges.push(new Range(row, range.start.column, row, this.session.getLine(row).length)); + while (++row < endRow) + newRanges.push(this.getLineRange(row, true)); + newRanges.push(new Range(endRow, 0, endRow, range.end.column)); + } + if (i == 0 && !this.isBackwards()) + newRanges = newRanges.reverse(); + } + this.toSingleRange(); + for (var i = newRanges.length; i--;) + this.addRange(newRanges[i]); + }; + this.joinSelections = function () { + var ranges = this.rangeList.ranges; + var lastRange = ranges[ranges.length - 1]; + var range = Range.fromPoints(ranges[0].start, lastRange.end); + this.toSingleRange(); + this.setSelectionRange(range, lastRange.cursor == lastRange.start); + }; + this.toggleBlockSelection = function () { + if (this.rangeCount > 1) { + var ranges = this.rangeList.ranges; + var lastRange = ranges[ranges.length - 1]; + var range = Range.fromPoints(ranges[0].start, lastRange.end); + this.toSingleRange(); + this.setSelectionRange(range, lastRange.cursor == lastRange.start); + } + else { + var cursor = this.session.documentToScreenPosition(this.cursor); + var anchor = this.session.documentToScreenPosition(this.anchor); + var rectSel = this.rectangularRangeBlock(cursor, anchor); + rectSel.forEach(this.addRange, this); + } + }; + this.rectangularRangeBlock = function (screenCursor, screenAnchor, includeEmptyLines) { + var rectSel = []; + var xBackwards = screenCursor.column < screenAnchor.column; + if (xBackwards) { + var startColumn = screenCursor.column; + var endColumn = screenAnchor.column; + var startOffsetX = screenCursor.offsetX; + var endOffsetX = screenAnchor.offsetX; + } + else { + var startColumn = screenAnchor.column; + var endColumn = screenCursor.column; + var startOffsetX = screenAnchor.offsetX; + var endOffsetX = screenCursor.offsetX; + } + var yBackwards = screenCursor.row < screenAnchor.row; + if (yBackwards) { + var startRow = screenCursor.row; + var endRow = screenAnchor.row; + } + else { + var startRow = screenAnchor.row; + var endRow = screenCursor.row; + } + if (startColumn < 0) + startColumn = 0; + if (startRow < 0) + startRow = 0; + if (startRow == endRow) + includeEmptyLines = true; + var docEnd; + for (var row = startRow; row <= endRow; row++) { + var range = Range.fromPoints(this.session.screenToDocumentPosition(row, startColumn, startOffsetX), this.session.screenToDocumentPosition(row, endColumn, endOffsetX)); + if (range.isEmpty()) { + if (docEnd && isSamePoint(range.end, docEnd)) + break; + docEnd = range.end; + } + range.cursor = xBackwards ? range.start : range.end; + rectSel.push(range); + } + if (yBackwards) + rectSel.reverse(); + if (!includeEmptyLines) { + var end = rectSel.length - 1; + while (rectSel[end].isEmpty() && end > 0) + end--; + if (end > 0) { + var start = 0; + while (rectSel[start].isEmpty()) + start++; + } + for (var i = end; i >= start; i--) { + if (rectSel[i].isEmpty()) + rectSel.splice(i, 1); + } + } + return rectSel; + }; +}).call(Selection.prototype); +var Editor = require("./editor").Editor; +(function () { + this.updateSelectionMarkers = function () { + this.renderer.updateCursor(); + this.renderer.updateBackMarkers(); + }; + this.addSelectionMarker = function (orientedRange) { + if (!orientedRange.cursor) + orientedRange.cursor = orientedRange.end; + var style = this.getSelectionStyle(); + orientedRange.marker = this.session.addMarker(orientedRange, "ace_selection", style); + this.session.$selectionMarkers.push(orientedRange); + this.session.selectionMarkerCount = this.session.$selectionMarkers.length; + return orientedRange; + }; + this.removeSelectionMarker = function (range) { + if (!range.marker) + return; + this.session.removeMarker(range.marker); + var index = this.session.$selectionMarkers.indexOf(range); + if (index != -1) + this.session.$selectionMarkers.splice(index, 1); + this.session.selectionMarkerCount = this.session.$selectionMarkers.length; + }; + this.removeSelectionMarkers = function (ranges) { + var markerList = this.session.$selectionMarkers; + for (var i = ranges.length; i--;) { + var range = ranges[i]; + if (!range.marker) + continue; + this.session.removeMarker(range.marker); + var index = markerList.indexOf(range); + if (index != -1) + markerList.splice(index, 1); + } + this.session.selectionMarkerCount = markerList.length; + }; + this.$onAddRange = function (e) { + this.addSelectionMarker(e.range); + this.renderer.updateCursor(); + this.renderer.updateBackMarkers(); + }; + this.$onRemoveRange = function (e) { + this.removeSelectionMarkers(e.ranges); + this.renderer.updateCursor(); + this.renderer.updateBackMarkers(); + }; + this.$onMultiSelect = function (e) { + if (this.inMultiSelectMode) + return; + this.inMultiSelectMode = true; + this.setStyle("ace_multiselect"); + this.keyBinding.addKeyboardHandler(commands.keyboardHandler); + this.commands.setDefaultHandler("exec", this.$onMultiSelectExec); + this.renderer.updateCursor(); + this.renderer.updateBackMarkers(); + }; + this.$onSingleSelect = function (e) { + if (this.session.multiSelect.inVirtualMode) + return; + this.inMultiSelectMode = false; + this.unsetStyle("ace_multiselect"); + this.keyBinding.removeKeyboardHandler(commands.keyboardHandler); + this.commands.removeDefaultHandler("exec", this.$onMultiSelectExec); + this.renderer.updateCursor(); + this.renderer.updateBackMarkers(); + this._emit("changeSelection"); + }; + this.$onMultiSelectExec = function (e) { + var command = e.command; + var editor = e.editor; + if (!editor.multiSelect) + return; + if (!command.multiSelectAction) { + var result = command.exec(editor, e.args || {}); + editor.multiSelect.addRange(editor.multiSelect.toOrientedRange()); + editor.multiSelect.mergeOverlappingRanges(); + } + else if (command.multiSelectAction == "forEach") { + result = editor.forEachSelection(command, e.args); + } + else if (command.multiSelectAction == "forEachLine") { + result = editor.forEachSelection(command, e.args, true); + } + else if (command.multiSelectAction == "single") { + editor.exitMultiSelectMode(); + result = command.exec(editor, e.args || {}); + } + else { + result = command.multiSelectAction(editor, e.args || {}); + } + return result; + }; + this.forEachSelection = function (cmd, args, options) { + if (this.inVirtualSelectionMode) + return; + var keepOrder = options && options.keepOrder; + var $byLines = options == true || options && options.$byLines; + var session = this.session; + var selection = this.selection; + var rangeList = selection.rangeList; + var ranges = (keepOrder ? selection : rangeList).ranges; + var result; + if (!ranges.length) + return cmd.exec ? cmd.exec(this, args || {}) : cmd(this, args || {}); + var reg = selection._eventRegistry; + selection._eventRegistry = {}; + var tmpSel = new Selection(session); + this.inVirtualSelectionMode = true; + for (var i = ranges.length; i--;) { + if ($byLines) { + while (i > 0 && ranges[i].start.row == ranges[i - 1].end.row) + i--; + } + tmpSel.fromOrientedRange(ranges[i]); + tmpSel.index = i; + this.selection = session.selection = tmpSel; + var cmdResult = cmd.exec ? cmd.exec(this, args || {}) : cmd(this, args || {}); + if (!result && cmdResult !== undefined) + result = cmdResult; + tmpSel.toOrientedRange(ranges[i]); + } + tmpSel.detach(); + this.selection = session.selection = selection; + this.inVirtualSelectionMode = false; + selection._eventRegistry = reg; + selection.mergeOverlappingRanges(); + if (selection.ranges[0]) + selection.fromOrientedRange(selection.ranges[0]); + var anim = this.renderer.$scrollAnimation; + this.onCursorChange(); + this.onSelectionChange(); + if (anim && anim.from == anim.to) + this.renderer.animateScrolling(anim.from); + return result; + }; + this.exitMultiSelectMode = function () { + if (!this.inMultiSelectMode || this.inVirtualSelectionMode) + return; + this.multiSelect.toSingleRange(); + }; + this.getSelectedText = function () { + var text = ""; + if (this.inMultiSelectMode && !this.inVirtualSelectionMode) { + var ranges = this.multiSelect.rangeList.ranges; + var buf = []; + for (var i = 0; i < ranges.length; i++) { + buf.push(this.session.getTextRange(ranges[i])); + } + var nl = this.session.getDocument().getNewLineCharacter(); + text = buf.join(nl); + if (text.length == (buf.length - 1) * nl.length) + text = ""; + } + else if (!this.selection.isEmpty()) { + text = this.session.getTextRange(this.getSelectionRange()); + } + return text; + }; + this.$checkMultiselectChange = function (e, anchor) { + if (this.inMultiSelectMode && !this.inVirtualSelectionMode) { + var range = this.multiSelect.ranges[0]; + if (this.multiSelect.isEmpty() && anchor == this.multiSelect.anchor) + return; + var pos = anchor == this.multiSelect.anchor + ? range.cursor == range.start ? range.end : range.start + : range.cursor; + if (pos.row != anchor.row + || this.session.$clipPositionToDocument(pos.row, pos.column).column != anchor.column) + this.multiSelect.toSingleRange(this.multiSelect.toOrientedRange()); + else + this.multiSelect.mergeOverlappingRanges(); + } + }; + this.findAll = function (needle, options, additive) { + options = options || {}; + options.needle = needle || options.needle; + if (options.needle == undefined) { + var range = this.selection.isEmpty() + ? this.selection.getWordRange() + : this.selection.getRange(); + options.needle = this.session.getTextRange(range); + } + this.$search.set(options); + var ranges = this.$search.findAll(this.session); + if (!ranges.length) + return 0; + var selection = this.multiSelect; + if (!additive) + selection.toSingleRange(ranges[0]); + for (var i = ranges.length; i--;) + selection.addRange(ranges[i], true); + if (range && selection.rangeList.rangeAtPoint(range.start)) + selection.addRange(range, true); + return ranges.length; + }; + this.selectMoreLines = function (dir, skip) { + var range = this.selection.toOrientedRange(); + var isBackwards = range.cursor == range.end; + var screenLead = this.session.documentToScreenPosition(range.cursor); + if (this.selection.$desiredColumn) + screenLead.column = this.selection.$desiredColumn; + var lead = this.session.screenToDocumentPosition(screenLead.row + dir, screenLead.column); + if (!range.isEmpty()) { + var screenAnchor = this.session.documentToScreenPosition(isBackwards ? range.end : range.start); + var anchor = this.session.screenToDocumentPosition(screenAnchor.row + dir, screenAnchor.column); + } + else { + var anchor = lead; + } + if (isBackwards) { + var newRange = Range.fromPoints(lead, anchor); + newRange.cursor = newRange.start; + } + else { + var newRange = Range.fromPoints(anchor, lead); + newRange.cursor = newRange.end; + } + newRange.desiredColumn = screenLead.column; + if (!this.selection.inMultiSelectMode) { + this.selection.addRange(range); + } + else { + if (skip) + var toRemove = range.cursor; + } + this.selection.addRange(newRange); + if (toRemove) + this.selection.substractPoint(toRemove); + }; + this.transposeSelections = function (dir) { + var session = this.session; + var sel = session.multiSelect; + var all = sel.ranges; + for (var i = all.length; i--;) { + var range = all[i]; + if (range.isEmpty()) { + var tmp = session.getWordRange(range.start.row, range.start.column); + range.start.row = tmp.start.row; + range.start.column = tmp.start.column; + range.end.row = tmp.end.row; + range.end.column = tmp.end.column; + } + } + sel.mergeOverlappingRanges(); + var words = []; + for (var i = all.length; i--;) { + var range = all[i]; + words.unshift(session.getTextRange(range)); + } + if (dir < 0) + words.unshift(words.pop()); + else + words.push(words.shift()); + for (var i = all.length; i--;) { + var range = all[i]; + var tmp = range.clone(); + session.replace(range, words[i]); + range.start.row = tmp.start.row; + range.start.column = tmp.start.column; + } + sel.fromOrientedRange(sel.ranges[0]); + }; + this.selectMore = function (dir, skip, stopAtFirst) { + var session = this.session; + var sel = session.multiSelect; + var range = sel.toOrientedRange(); + if (range.isEmpty()) { + range = session.getWordRange(range.start.row, range.start.column); + range.cursor = dir == -1 ? range.start : range.end; + this.multiSelect.addRange(range); + if (stopAtFirst) + return; + } + var needle = session.getTextRange(range); + var newRange = find(session, needle, dir); + if (newRange) { + newRange.cursor = dir == -1 ? newRange.start : newRange.end; + this.session.unfold(newRange); + this.multiSelect.addRange(newRange); + this.renderer.scrollCursorIntoView(null, 0.5); + } + if (skip) + this.multiSelect.substractPoint(range.cursor); + }; + this.alignCursors = function () { + var session = this.session; + var sel = session.multiSelect; + var ranges = sel.ranges; + var row = -1; + var sameRowRanges = ranges.filter(function (r) { + if (r.cursor.row == row) + return true; + row = r.cursor.row; + }); + if (!ranges.length || sameRowRanges.length == ranges.length - 1) { + var range = this.selection.getRange(); + var fr = range.start.row, lr = range.end.row; + var guessRange = fr == lr; + if (guessRange) { + var max = this.session.getLength(); + var line; + do { + line = this.session.getLine(lr); + } while (/[=:]/.test(line) && ++lr < max); + do { + line = this.session.getLine(fr); + } while (/[=:]/.test(line) && --fr > 0); + if (fr < 0) + fr = 0; + if (lr >= max) + lr = max - 1; + } + var lines = this.session.removeFullLines(fr, lr); + lines = this.$reAlignText(lines, guessRange); + this.session.insert({ row: fr, column: 0 }, lines.join("\n") + "\n"); + if (!guessRange) { + range.start.column = 0; + range.end.column = lines[lines.length - 1].length; + } + this.selection.setRange(range); + } + else { + sameRowRanges.forEach(function (r) { + sel.substractPoint(r.cursor); + }); + var maxCol = 0; + var minSpace = Infinity; + var spaceOffsets = ranges.map(function (r) { + var p = r.cursor; + var line = session.getLine(p.row); + var spaceOffset = line.substr(p.column).search(/\S/g); + if (spaceOffset == -1) + spaceOffset = 0; + if (p.column > maxCol) + maxCol = p.column; + if (spaceOffset < minSpace) + minSpace = spaceOffset; + return spaceOffset; + }); + ranges.forEach(function (r, i) { + var p = r.cursor; + var l = maxCol - p.column; + var d = spaceOffsets[i] - minSpace; + if (l > d) + session.insert(p, lang.stringRepeat(" ", l - d)); + else + session.remove(new Range(p.row, p.column, p.row, p.column - l + d)); + r.start.column = r.end.column = maxCol; + r.start.row = r.end.row = p.row; + r.cursor = r.end; + }); + sel.fromOrientedRange(ranges[0]); + this.renderer.updateCursor(); + this.renderer.updateBackMarkers(); + } + }; + this.$reAlignText = function (lines, forceLeft) { + var isLeftAligned = true, isRightAligned = true; + var startW, textW, endW; + return lines.map(function (line) { + var m = line.match(/(\s*)(.*?)(\s*)([=:].*)/); + if (!m) + return [line]; + if (startW == null) { + startW = m[1].length; + textW = m[2].length; + endW = m[3].length; + return m; + } + if (startW + textW + endW != m[1].length + m[2].length + m[3].length) + isRightAligned = false; + if (startW != m[1].length) + isLeftAligned = false; + if (startW > m[1].length) + startW = m[1].length; + if (textW < m[2].length) + textW = m[2].length; + if (endW > m[3].length) + endW = m[3].length; + return m; + }).map(forceLeft ? alignLeft : + isLeftAligned ? isRightAligned ? alignRight : alignLeft : unAlign); + function spaces(n) { + return lang.stringRepeat(" ", n); + } + function alignLeft(m) { + return !m[2] ? m[0] : spaces(startW) + m[2] + + spaces(textW - m[2].length + endW) + + m[4].replace(/^([=:])\s+/, "$1 "); + } + function alignRight(m) { + return !m[2] ? m[0] : spaces(startW + textW - m[2].length) + m[2] + + spaces(endW) + + m[4].replace(/^([=:])\s+/, "$1 "); + } + function unAlign(m) { + return !m[2] ? m[0] : spaces(startW) + m[2] + + spaces(endW) + + m[4].replace(/^([=:])\s+/, "$1 "); + } + }; +}).call(Editor.prototype); +function isSamePoint(p1, p2) { + return p1.row == p2.row && p1.column == p2.column; +} +exports.onSessionChange = function (e) { + var session = e.session; + if (session && !session.multiSelect) { + session.$selectionMarkers = []; + session.selection.$initRangeList(); + session.multiSelect = session.selection; + } + this.multiSelect = session && session.multiSelect; + var oldSession = e.oldSession; + if (oldSession) { + oldSession.multiSelect.off("addRange", this.$onAddRange); + oldSession.multiSelect.off("removeRange", this.$onRemoveRange); + oldSession.multiSelect.off("multiSelect", this.$onMultiSelect); + oldSession.multiSelect.off("singleSelect", this.$onSingleSelect); + oldSession.multiSelect.lead.off("change", this.$checkMultiselectChange); + oldSession.multiSelect.anchor.off("change", this.$checkMultiselectChange); + } + if (session) { + session.multiSelect.on("addRange", this.$onAddRange); + session.multiSelect.on("removeRange", this.$onRemoveRange); + session.multiSelect.on("multiSelect", this.$onMultiSelect); + session.multiSelect.on("singleSelect", this.$onSingleSelect); + session.multiSelect.lead.on("change", this.$checkMultiselectChange); + session.multiSelect.anchor.on("change", this.$checkMultiselectChange); + } + if (session && this.inMultiSelectMode != session.selection.inMultiSelectMode) { + if (session.selection.inMultiSelectMode) + this.$onMultiSelect(); + else + this.$onSingleSelect(); + } +}; +function MultiSelect(editor) { + if (editor.$multiselectOnSessionChange) + return; + editor.$onAddRange = editor.$onAddRange.bind(editor); + editor.$onRemoveRange = editor.$onRemoveRange.bind(editor); + editor.$onMultiSelect = editor.$onMultiSelect.bind(editor); + editor.$onSingleSelect = editor.$onSingleSelect.bind(editor); + editor.$multiselectOnSessionChange = exports.onSessionChange.bind(editor); + editor.$checkMultiselectChange = editor.$checkMultiselectChange.bind(editor); + editor.$multiselectOnSessionChange(editor); + editor.on("changeSession", editor.$multiselectOnSessionChange); + editor.on("mousedown", onMouseDown); + editor.commands.addCommands(commands.defaultCommands); + addAltCursorListeners(editor); +} +function addAltCursorListeners(editor) { + if (!editor.textInput) + return; + var el = editor.textInput.getElement(); + var altCursor = false; + event.addListener(el, "keydown", function (e) { + var altDown = e.keyCode == 18 && !(e.ctrlKey || e.shiftKey || e.metaKey); + if (editor.$blockSelectEnabled && altDown) { + if (!altCursor) { + editor.renderer.setMouseCursor("crosshair"); + altCursor = true; + } + } + else if (altCursor) { + reset(); + } + }, editor); + event.addListener(el, "keyup", reset, editor); + event.addListener(el, "blur", reset, editor); + function reset(e) { + if (altCursor) { + editor.renderer.setMouseCursor(""); + altCursor = false; + } + } +} +exports.MultiSelect = MultiSelect; +require("./config").defineOptions(Editor.prototype, "editor", { + enableMultiselect: { + set: function (val) { + MultiSelect(this); + if (val) { + this.on("mousedown", onMouseDown); + } + else { + this.off("mousedown", onMouseDown); + } + }, + value: true + }, + enableBlockSelect: { + set: function (val) { + this.$blockSelectEnabled = val; + }, + value: true + } +}); + +}); + +ace.define("ace/mode/folding/fold_mode",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; +var Range = require("../../range").Range; +var FoldMode = exports.FoldMode = function () { }; +(function () { + this.foldingStartMarker = null; + this.foldingStopMarker = null; + this.getFoldWidget = function (session, foldStyle, row) { + var line = session.getLine(row); + if (this.foldingStartMarker.test(line)) + return "start"; + if (foldStyle == "markbeginend" + && this.foldingStopMarker + && this.foldingStopMarker.test(line)) + return "end"; + return ""; + }; + this.getFoldWidgetRange = function (session, foldStyle, row) { + return null; + }; + this.indentationBlock = function (session, row, column) { + var re = /\S/; + var line = session.getLine(row); + var startLevel = line.search(re); + if (startLevel == -1) + return; + var startColumn = column || line.length; + var maxRow = session.getLength(); + var startRow = row; + var endRow = row; + while (++row < maxRow) { + var level = session.getLine(row).search(re); + if (level == -1) + continue; + if (level <= startLevel) { + var token = session.getTokenAt(row, 0); + if (!token || token.type !== "string") + break; + } + endRow = row; + } + if (endRow > startRow) { + var endColumn = session.getLine(endRow).length; + return new Range(startRow, startColumn, endRow, endColumn); + } + }; + this.openingBracketBlock = function (session, bracket, row, column, typeRe) { + var start = { row: row, column: column + 1 }; + var end = session.$findClosingBracket(bracket, start, typeRe); + if (!end) + return; + var fw = session.foldWidgets[end.row]; + if (fw == null) + fw = session.getFoldWidget(end.row); + if (fw == "start" && end.row > start.row) { + end.row--; + end.column = session.getLine(end.row).length; + } + return Range.fromPoints(start, end); + }; + this.closingBracketBlock = function (session, bracket, row, column, typeRe) { + var end = { row: row, column: column }; + var start = session.$findOpeningBracket(bracket, end); + if (!start) + return; + start.column++; + end.column--; + return Range.fromPoints(start, end); + }; +}).call(FoldMode.prototype); + +}); + +ace.define("ace/ext/error_marker",["require","exports","module","ace/line_widgets","ace/lib/dom","ace/range","ace/config"], function(require, exports, module){"use strict"; +var LineWidgets = require("../line_widgets").LineWidgets; +var dom = require("../lib/dom"); +var Range = require("../range").Range; +var nls = require("../config").nls; +function binarySearch(array, needle, comparator) { + var first = 0; + var last = array.length - 1; + while (first <= last) { + var mid = (first + last) >> 1; + var c = comparator(needle, array[mid]); + if (c > 0) + first = mid + 1; + else if (c < 0) + last = mid - 1; + else + return mid; + } + return -(first + 1); +} +function findAnnotations(session, row, dir) { + var annotations = session.getAnnotations().sort(Range.comparePoints); + if (!annotations.length) + return; + var i = binarySearch(annotations, { row: row, column: -1 }, Range.comparePoints); + if (i < 0) + i = -i - 1; + if (i >= annotations.length) + i = dir > 0 ? 0 : annotations.length - 1; + else if (i === 0 && dir < 0) + i = annotations.length - 1; + var annotation = annotations[i]; + if (!annotation || !dir) + return; + if (annotation.row === row) { + do { + annotation = annotations[i += dir]; + } while (annotation && annotation.row === row); + if (!annotation) + return annotations.slice(); + } + var matched = []; + row = annotation.row; + do { + matched[dir < 0 ? "unshift" : "push"](annotation); + annotation = annotations[i += dir]; + } while (annotation && annotation.row == row); + return matched.length && matched; +} +exports.showErrorMarker = function (editor, dir) { + var session = editor.session; + if (!session.widgetManager) { + session.widgetManager = new LineWidgets(session); + session.widgetManager.attach(editor); + } + var pos = editor.getCursorPosition(); + var row = pos.row; + var oldWidget = session.widgetManager.getWidgetsAtRow(row).filter(function (w) { + return w.type == "errorMarker"; + })[0]; + if (oldWidget) { + oldWidget.destroy(); + } + else { + row -= dir; + } + var annotations = findAnnotations(session, row, dir); + var gutterAnno; + if (annotations) { + var annotation = annotations[0]; + pos.column = (annotation.pos && typeof annotation.column != "number" + ? annotation.pos.sc + : annotation.column) || 0; + pos.row = annotation.row; + gutterAnno = editor.renderer.$gutterLayer.$annotations[pos.row]; + } + else if (oldWidget) { + return; + } + else { + gutterAnno = { + text: [nls("Looks good!")], + className: "ace_ok" + }; + } + editor.session.unfold(pos.row); + editor.selection.moveToPosition(pos); + var w = { + row: pos.row, + fixedWidth: true, + coverGutter: true, + el: dom.createElement("div"), + type: "errorMarker" + }; + var el = w.el.appendChild(dom.createElement("div")); + var arrow = w.el.appendChild(dom.createElement("div")); + arrow.className = "error_widget_arrow " + gutterAnno.className; + var left = editor.renderer.$cursorLayer + .getPixelPosition(pos).left; + arrow.style.left = left + editor.renderer.gutterWidth - 5 + "px"; + w.el.className = "error_widget_wrapper"; + el.className = "error_widget " + gutterAnno.className; + el.innerHTML = gutterAnno.text.join("
"); + el.appendChild(dom.createElement("div")); + var kb = function (_, hashId, keyString) { + if (hashId === 0 && (keyString === "esc" || keyString === "return")) { + w.destroy(); + return { command: "null" }; + } + }; + w.destroy = function () { + if (editor.$mouseHandler.isMousePressed) + return; + editor.keyBinding.removeKeyboardHandler(kb); + session.widgetManager.removeLineWidget(w); + editor.off("changeSelection", w.destroy); + editor.off("changeSession", w.destroy); + editor.off("mouseup", w.destroy); + editor.off("change", w.destroy); + }; + editor.keyBinding.addKeyboardHandler(kb); + editor.on("changeSelection", w.destroy); + editor.on("changeSession", w.destroy); + editor.on("mouseup", w.destroy); + editor.on("change", w.destroy); + editor.session.widgetManager.addLineWidget(w); + w.el.onmousedown = editor.focus.bind(editor); + editor.renderer.scrollCursorIntoView(null, 0.5, { bottom: w.el.offsetHeight }); +}; +dom.importCssString("\n .error_widget_wrapper {\n background: inherit;\n color: inherit;\n border:none\n }\n .error_widget {\n border-top: solid 2px;\n border-bottom: solid 2px;\n margin: 5px 0;\n padding: 10px 40px;\n white-space: pre-wrap;\n }\n .error_widget.ace_error, .error_widget_arrow.ace_error{\n border-color: #ff5a5a\n }\n .error_widget.ace_warning, .error_widget_arrow.ace_warning{\n border-color: #F1D817\n }\n .error_widget.ace_info, .error_widget_arrow.ace_info{\n border-color: #5a5a5a\n }\n .error_widget.ace_ok, .error_widget_arrow.ace_ok{\n border-color: #5aaa5a\n }\n .error_widget_arrow {\n position: absolute;\n border: solid 5px;\n border-top-color: transparent!important;\n border-right-color: transparent!important;\n border-left-color: transparent!important;\n top: -5px;\n }\n", "error_marker.css", false); + +}); + +ace.define("ace/ace",["require","exports","module","ace/lib/dom","ace/range","ace/editor","ace/edit_session","ace/undomanager","ace/virtual_renderer","ace/worker/worker_client","ace/keyboard/hash_handler","ace/placeholder","ace/multi_select","ace/mode/folding/fold_mode","ace/theme/textmate","ace/ext/error_marker","ace/config","ace/loader_build"], function(require, exports, module){/** + * The main class required to set up an Ace instance in the browser. + * + * @class Ace + **/ +"use strict"; +require("./loader_build")(exports) +var dom = require("./lib/dom"); +var Range = require("./range").Range; +var Editor = require("./editor").Editor; +var EditSession = require("./edit_session").EditSession; +var UndoManager = require("./undomanager").UndoManager; +var Renderer = require("./virtual_renderer").VirtualRenderer; +require("./worker/worker_client"); +require("./keyboard/hash_handler"); +require("./placeholder"); +require("./multi_select"); +require("./mode/folding/fold_mode"); +require("./theme/textmate"); +require("./ext/error_marker"); +exports.config = require("./config"); +exports.edit = function (el, options) { + if (typeof el == "string") { + var _id = el; + el = document.getElementById(_id); + if (!el) + throw new Error("ace.edit can't find div #" + _id); + } + if (el && el.env && el.env.editor instanceof Editor) + return el.env.editor; + var value = ""; + if (el && /input|textarea/i.test(el.tagName)) { + var oldNode = el; + value = oldNode.value; + el = dom.createElement("pre"); + oldNode.parentNode.replaceChild(el, oldNode); + } + else if (el) { + value = el.textContent; + el.innerHTML = ""; + } + var doc = exports.createEditSession(value); + var editor = new Editor(new Renderer(el), doc, options); + var env = { + document: doc, + editor: editor, + onResize: editor.resize.bind(editor, null) + }; + if (oldNode) + env.textarea = oldNode; + editor.on("destroy", function () { + env.editor.container.env = null; // prevent memory leak on old ie + }); + editor.container.env = editor.env = env; + return editor; +}; +exports.createEditSession = function (text, mode) { + var doc = new EditSession(text, mode); + doc.setUndoManager(new UndoManager()); + return doc; +}; +exports.Range = Range; +exports.Editor = Editor; +exports.EditSession = EditSession; +exports.UndoManager = UndoManager; +exports.VirtualRenderer = Renderer; +exports.version = exports.config.version; + +}); (function() { + ace.require(["ace/ace"], function(a) { + if (a) { + a.config.init(true); + a.define = ace.define; + } + var global = (function () { + return this; + })(); + if (!global && typeof window != "undefined") global = window; // can happen in strict mode + if (!global && typeof self != "undefined") global = self; // can happen in webworker + + if (!global.ace) + global.ace = a; + for (var key in a) if (a.hasOwnProperty(key)) + global.ace[key] = a[key]; + global.ace["default"] = global.ace; + if ( true && module) { + module.exports = global.ace; + } + }); + })(); + + +/***/ }), + +/***/ 134: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +/* module decorator */ module = __webpack_require__.nmd(module); +ace.define("ace/ext/beautify",["require","exports","module","ace/token_iterator"], function(require, exports, module){// [WIP] +"use strict"; +var TokenIterator = require("../token_iterator").TokenIterator; +function is(token, type) { + return token.type.lastIndexOf(type + ".xml") > -1; +} +exports.singletonTags = ["area", "base", "br", "col", "command", "embed", "hr", "html", "img", "input", "keygen", "link", "meta", "param", "source", "track", "wbr"]; +exports.blockTags = ["article", "aside", "blockquote", "body", "div", "dl", "fieldset", "footer", "form", "head", "header", "html", "nav", "ol", "p", "script", "section", "style", "table", "tbody", "tfoot", "thead", "ul"]; +exports.formatOptions = { + lineBreaksAfterCommasInCurlyBlock: true +}; +exports.beautify = function (session) { + var iterator = new TokenIterator(session, 0, 0); + var token = iterator.getCurrentToken(); + var tabString = session.getTabString(); + var singletonTags = exports.singletonTags; + var blockTags = exports.blockTags; + var formatOptions = exports.formatOptions || {}; + var nextToken; + var breakBefore = false; + var spaceBefore = false; + var spaceAfter = false; + var code = ""; + var value = ""; + var tagName = ""; + var depth = 0; + var lastDepth = 0; + var lastIndent = 0; + var indent = 0; + var unindent = 0; + var roundDepth = 0; + var curlyDepth = 0; + var row; + var curRow = 0; + var rowsToAdd = 0; + var rowTokens = []; + var abort = false; + var i; + var indentNextLine = false; + var inTag = false; + var inCSS = false; + var inBlock = false; + var levels = { 0: 0 }; + var parents = []; + var caseBody = false; + var trimNext = function () { + if (nextToken && nextToken.value && nextToken.type !== 'string.regexp') + nextToken.value = nextToken.value.replace(/^\s*/, ""); + }; + var trimLine = function () { + var end = code.length - 1; + while (true) { + if (end == 0) + break; + if (code[end] !== " ") + break; + end = end - 1; + } + code = code.slice(0, end + 1); + }; + var trimCode = function () { + code = code.trimRight(); + breakBefore = false; + }; + while (token !== null) { + curRow = iterator.getCurrentTokenRow(); + rowTokens = iterator.$rowTokens; + nextToken = iterator.stepForward(); + if (typeof token !== "undefined") { + value = token.value; + unindent = 0; + inCSS = (tagName === "style" || session.$modeId === "ace/mode/css"); + if (is(token, "tag-open")) { + inTag = true; + if (nextToken) + inBlock = (blockTags.indexOf(nextToken.value) !== -1); + if (value === " 0; rowsToAdd--) + code += "\n"; + breakBefore = true; + if (!is(token, "comment") && !token.type.match(/^(comment|string)$/)) + value = value.trimLeft(); + } + if (value) { + if (token.type === "keyword" && value.match(/^(if|else|elseif|for|foreach|while|switch)$/)) { + parents[depth] = value; + trimNext(); + spaceAfter = true; + if (value.match(/^(else|elseif)$/)) { + if (code.match(/\}[\s]*$/)) { + trimCode(); + spaceBefore = true; + } + } + } + else if (token.type === "paren.lparen") { + trimNext(); + if (value.substr(-1) === "{") { + spaceAfter = true; + indentNextLine = false; + if (!inTag) + rowsToAdd = 1; + } + if (value.substr(0, 1) === "{") { + spaceBefore = true; + if (code.substr(-1) !== '[' && code.trimRight().substr(-1) === '[') { + trimCode(); + spaceBefore = false; + } + else if (code.trimRight().substr(-1) === ')') { + trimCode(); + } + else { + trimLine(); + } + } + } + else if (token.type === "paren.rparen") { + unindent = 1; + if (value.substr(0, 1) === "}") { + if (parents[depth - 1] === 'case') + unindent++; + if (code.trimRight().substr(-1) === '{') { + trimCode(); + } + else { + spaceBefore = true; + if (inCSS) + rowsToAdd += 2; + } + } + if (value.substr(0, 1) === "]") { + if (code.substr(-1) !== '}' && code.trimRight().substr(-1) === '}') { + spaceBefore = false; + indent++; + trimCode(); + } + } + if (value.substr(0, 1) === ")") { + if (code.substr(-1) !== '(' && code.trimRight().substr(-1) === '(') { + spaceBefore = false; + indent++; + trimCode(); + } + } + trimLine(); + } + else if ((token.type === "keyword.operator" || token.type === "keyword") && value.match(/^(=|==|===|!=|!==|&&|\|\||and|or|xor|\+=|.=|>|>=|<|<=|=>)$/)) { + trimCode(); + trimNext(); + spaceBefore = true; + spaceAfter = true; + } + else if (token.type === "punctuation.operator" && value === ';') { + trimCode(); + trimNext(); + spaceAfter = true; + if (inCSS) + rowsToAdd++; + } + else if (token.type === "punctuation.operator" && value.match(/^(:|,)$/)) { + trimCode(); + trimNext(); + if (value.match(/^(,)$/) && curlyDepth > 0 && roundDepth === 0 && formatOptions.lineBreaksAfterCommasInCurlyBlock) { + rowsToAdd++; + } + else { + spaceAfter = true; + breakBefore = false; + } + } + else if (token.type === "support.php_tag" && value === "?>" && !breakBefore) { + trimCode(); + spaceBefore = true; + } + else if (is(token, "attribute-name") && code.substr(-1).match(/^\s$/)) { + spaceBefore = true; + } + else if (is(token, "attribute-equals")) { + trimLine(); + trimNext(); + } + else if (is(token, "tag-close")) { + trimLine(); + if (value === "/>") + spaceBefore = true; + } + else if (token.type === "keyword" && value.match(/^(case|default)$/)) { + if (caseBody) + unindent = 1; + } + if (breakBefore && !(token.type.match(/^(comment)$/) && !value.substr(0, 1).match(/^[/#]$/)) && !(token.type.match(/^(string)$/) && !value.substr(0, 1).match(/^['"@]$/))) { + indent = lastIndent; + if (depth > lastDepth) { + indent++; + for (i = depth; i > lastDepth; i--) + levels[i] = indent; + } + else if (depth < lastDepth) + indent = levels[depth]; + lastDepth = depth; + lastIndent = indent; + if (unindent) + indent -= unindent; + if (indentNextLine && !roundDepth) { + indent++; + indentNextLine = false; + } + for (i = 0; i < indent; i++) + code += tabString; + } + if (token.type === "keyword" && value.match(/^(case|default)$/)) { + if (caseBody === false) { + parents[depth] = value; + depth++; + caseBody = true; + } + } + else if (token.type === "keyword" && value.match(/^(break)$/)) { + if (parents[depth - 1] && parents[depth - 1].match(/^(case|default)$/)) { + depth--; + caseBody = false; + } + } + if (token.type === "paren.lparen") { + roundDepth += (value.match(/\(/g) || []).length; + curlyDepth += (value.match(/\{/g) || []).length; + depth += value.length; + } + if (token.type === "keyword" && value.match(/^(if|else|elseif|for|while)$/)) { + indentNextLine = true; + roundDepth = 0; + } + else if (!roundDepth && value.trim() && token.type !== "comment") + indentNextLine = false; + if (token.type === "paren.rparen") { + roundDepth -= (value.match(/\)/g) || []).length; + curlyDepth -= (value.match(/\}/g) || []).length; + for (i = 0; i < value.length; i++) { + depth--; + if (value.substr(i, 1) === '}' && parents[depth] === 'case') { + depth--; + } + } + } + if (token.type == "text") + value = value.replace(/\s+$/, " "); + if (spaceBefore && !breakBefore) { + trimLine(); + if (code.substr(-1) !== "\n") + code += " "; + } + code += value; + if (spaceAfter) + code += " "; + breakBefore = false; + spaceBefore = false; + spaceAfter = false; + if ((is(token, "tag-close") && (inBlock || blockTags.indexOf(tagName) !== -1)) || (is(token, "doctype") && value === ">")) { + if (inBlock && nextToken && nextToken.value === "") { + depth--; + } + } + if (is(token, "tag-name")) { + tagName = value; + } + row = curRow; + } + } + token = nextToken; + } + code = code.trim(); + session.doc.setValue(code); +}; +exports.commands = [{ + name: "beautify", + description: "Format selection (Beautify)", + exec: function (editor) { + exports.beautify(editor.session); + }, + bindKey: "Ctrl-Shift-B" + }]; + +}); (function() { + ace.require(["ace/ext/beautify"], function(m) { + if ( true && module) { + module.exports = m; + } + }); + })(); + + +/***/ }), + +/***/ 604: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +/* module decorator */ module = __webpack_require__.nmd(module); +ace.define("ace/ext/searchbox-css",["require","exports","module"], function(require, exports, module){module.exports = "\n\n/* ------------------------------------------------------------------------------------------\n * Editor Search Form\n * --------------------------------------------------------------------------------------- */\n.ace_search {\n background-color: #ddd;\n color: #666;\n border: 1px solid #cbcbcb;\n border-top: 0 none;\n overflow: hidden;\n margin: 0;\n padding: 4px 6px 0 4px;\n position: absolute;\n top: 0;\n z-index: 99;\n white-space: normal;\n}\n.ace_search.left {\n border-left: 0 none;\n border-radius: 0px 0px 5px 0px;\n left: 0;\n}\n.ace_search.right {\n border-radius: 0px 0px 0px 5px;\n border-right: 0 none;\n right: 0;\n}\n\n.ace_search_form, .ace_replace_form {\n margin: 0 20px 4px 0;\n overflow: hidden;\n line-height: 1.9;\n}\n.ace_replace_form {\n margin-right: 0;\n}\n.ace_search_form.ace_nomatch {\n outline: 1px solid red;\n}\n\n.ace_search_field {\n border-radius: 3px 0 0 3px;\n background-color: white;\n color: black;\n border: 1px solid #cbcbcb;\n border-right: 0 none;\n outline: 0;\n padding: 0;\n font-size: inherit;\n margin: 0;\n line-height: inherit;\n padding: 0 6px;\n min-width: 17em;\n vertical-align: top;\n min-height: 1.8em;\n box-sizing: content-box;\n}\n.ace_searchbtn {\n border: 1px solid #cbcbcb;\n line-height: inherit;\n display: inline-block;\n padding: 0 6px;\n background: #fff;\n border-right: 0 none;\n border-left: 1px solid #dcdcdc;\n cursor: pointer;\n margin: 0;\n position: relative;\n color: #666;\n}\n.ace_searchbtn:last-child {\n border-radius: 0 3px 3px 0;\n border-right: 1px solid #cbcbcb;\n}\n.ace_searchbtn:disabled {\n background: none;\n cursor: default;\n}\n.ace_searchbtn:hover {\n background-color: #eef1f6;\n}\n.ace_searchbtn.prev, .ace_searchbtn.next {\n padding: 0px 0.7em\n}\n.ace_searchbtn.prev:after, .ace_searchbtn.next:after {\n content: \"\";\n border: solid 2px #888;\n width: 0.5em;\n height: 0.5em;\n border-width: 2px 0 0 2px;\n display:inline-block;\n transform: rotate(-45deg);\n}\n.ace_searchbtn.next:after {\n border-width: 0 2px 2px 0 ;\n}\n.ace_searchbtn_close {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAcCAYAAABRVo5BAAAAZ0lEQVR42u2SUQrAMAhDvazn8OjZBilCkYVVxiis8H4CT0VrAJb4WHT3C5xU2a2IQZXJjiQIRMdkEoJ5Q2yMqpfDIo+XY4k6h+YXOyKqTIj5REaxloNAd0xiKmAtsTHqW8sR2W5f7gCu5nWFUpVjZwAAAABJRU5ErkJggg==) no-repeat 50% 0;\n border-radius: 50%;\n border: 0 none;\n color: #656565;\n cursor: pointer;\n font: 16px/16px Arial;\n padding: 0;\n height: 14px;\n width: 14px;\n top: 9px;\n right: 7px;\n position: absolute;\n}\n.ace_searchbtn_close:hover {\n background-color: #656565;\n background-position: 50% 100%;\n color: white;\n}\n\n.ace_button {\n margin-left: 2px;\n cursor: pointer;\n -webkit-user-select: none;\n -moz-user-select: none;\n -o-user-select: none;\n -ms-user-select: none;\n user-select: none;\n overflow: hidden;\n opacity: 0.7;\n border: 1px solid rgba(100,100,100,0.23);\n padding: 1px;\n box-sizing: border-box!important;\n color: black;\n}\n\n.ace_button:hover {\n background-color: #eee;\n opacity:1;\n}\n.ace_button:active {\n background-color: #ddd;\n}\n\n.ace_button.checked {\n border-color: #3399ff;\n opacity:1;\n}\n\n.ace_search_options{\n margin-bottom: 3px;\n text-align: right;\n -webkit-user-select: none;\n -moz-user-select: none;\n -o-user-select: none;\n -ms-user-select: none;\n user-select: none;\n clear: both;\n}\n\n.ace_search_counter {\n float: left;\n font-family: arial;\n padding: 0 8px;\n}"; + +}); + +ace.define("ace/ext/searchbox",["require","exports","module","ace/lib/dom","ace/lib/lang","ace/lib/event","ace/ext/searchbox-css","ace/keyboard/hash_handler","ace/lib/keys","ace/config"], function(require, exports, module){"use strict"; +var dom = require("../lib/dom"); +var lang = require("../lib/lang"); +var event = require("../lib/event"); +var searchboxCss = require("./searchbox-css"); +var HashHandler = require("../keyboard/hash_handler").HashHandler; +var keyUtil = require("../lib/keys"); +var nls = require("../config").nls; +var MAX_COUNT = 999; +dom.importCssString(searchboxCss, "ace_searchbox", false); +var SearchBox = /** @class */ (function () { + function SearchBox(editor, range, showReplaceForm) { + var div = dom.createElement("div"); + dom.buildDom(["div", { class: "ace_search right" }, + ["span", { action: "hide", class: "ace_searchbtn_close" }], + ["div", { class: "ace_search_form" }, + ["input", { class: "ace_search_field", placeholder: nls("Search for"), spellcheck: "false" }], + ["span", { action: "findPrev", class: "ace_searchbtn prev" }, "\u200b"], + ["span", { action: "findNext", class: "ace_searchbtn next" }, "\u200b"], + ["span", { action: "findAll", class: "ace_searchbtn", title: "Alt-Enter" }, nls("All")] + ], + ["div", { class: "ace_replace_form" }, + ["input", { class: "ace_search_field", placeholder: nls("Replace with"), spellcheck: "false" }], + ["span", { action: "replaceAndFindNext", class: "ace_searchbtn" }, nls("Replace")], + ["span", { action: "replaceAll", class: "ace_searchbtn" }, nls("All")] + ], + ["div", { class: "ace_search_options" }, + ["span", { action: "toggleReplace", class: "ace_button", title: nls("Toggle Replace mode"), + style: "float:left;margin-top:-2px;padding:0 5px;" }, "+"], + ["span", { class: "ace_search_counter" }], + ["span", { action: "toggleRegexpMode", class: "ace_button", title: nls("RegExp Search") }, ".*"], + ["span", { action: "toggleCaseSensitive", class: "ace_button", title: nls("CaseSensitive Search") }, "Aa"], + ["span", { action: "toggleWholeWords", class: "ace_button", title: nls("Whole Word Search") }, "\\b"], + ["span", { action: "searchInSelection", class: "ace_button", title: nls("Search In Selection") }, "S"] + ] + ], div); + this.element = div.firstChild; + this.setSession = this.setSession.bind(this); + this.$init(); + this.setEditor(editor); + dom.importCssString(searchboxCss, "ace_searchbox", editor.container); + } + SearchBox.prototype.setEditor = function (editor) { + editor.searchBox = this; + editor.renderer.scroller.appendChild(this.element); + this.editor = editor; + }; + SearchBox.prototype.setSession = function (e) { + this.searchRange = null; + this.$syncOptions(true); + }; + SearchBox.prototype.$initElements = function (sb) { + this.searchBox = sb.querySelector(".ace_search_form"); + this.replaceBox = sb.querySelector(".ace_replace_form"); + this.searchOption = sb.querySelector("[action=searchInSelection]"); + this.replaceOption = sb.querySelector("[action=toggleReplace]"); + this.regExpOption = sb.querySelector("[action=toggleRegexpMode]"); + this.caseSensitiveOption = sb.querySelector("[action=toggleCaseSensitive]"); + this.wholeWordOption = sb.querySelector("[action=toggleWholeWords]"); + this.searchInput = this.searchBox.querySelector(".ace_search_field"); + this.replaceInput = this.replaceBox.querySelector(".ace_search_field"); + this.searchCounter = sb.querySelector(".ace_search_counter"); + }; + SearchBox.prototype.$init = function () { + var sb = this.element; + this.$initElements(sb); + var _this = this; + event.addListener(sb, "mousedown", function (e) { + setTimeout(function () { + _this.activeInput.focus(); + }, 0); + event.stopPropagation(e); + }); + event.addListener(sb, "click", function (e) { + var t = e.target || e.srcElement; + var action = t.getAttribute("action"); + if (action && _this[action]) + _this[action](); + else if (_this.$searchBarKb.commands[action]) + _this.$searchBarKb.commands[action].exec(_this); + event.stopPropagation(e); + }); + event.addCommandKeyListener(sb, function (e, hashId, keyCode) { + var keyString = keyUtil.keyCodeToString(keyCode); + var command = _this.$searchBarKb.findKeyCommand(hashId, keyString); + if (command && command.exec) { + command.exec(_this); + event.stopEvent(e); + } + }); + this.$onChange = lang.delayedCall(function () { + _this.find(false, false); + }); + event.addListener(this.searchInput, "input", function () { + _this.$onChange.schedule(20); + }); + event.addListener(this.searchInput, "focus", function () { + _this.activeInput = _this.searchInput; + _this.searchInput.value && _this.highlight(); + }); + event.addListener(this.replaceInput, "focus", function () { + _this.activeInput = _this.replaceInput; + _this.searchInput.value && _this.highlight(); + }); + }; + SearchBox.prototype.setSearchRange = function (range) { + this.searchRange = range; + if (range) { + this.searchRangeMarker = this.editor.session.addMarker(range, "ace_active-line"); + } + else if (this.searchRangeMarker) { + this.editor.session.removeMarker(this.searchRangeMarker); + this.searchRangeMarker = null; + } + }; + SearchBox.prototype.$syncOptions = function (preventScroll) { + dom.setCssClass(this.replaceOption, "checked", this.searchRange); + dom.setCssClass(this.searchOption, "checked", this.searchOption.checked); + this.replaceOption.textContent = this.replaceOption.checked ? "-" : "+"; + dom.setCssClass(this.regExpOption, "checked", this.regExpOption.checked); + dom.setCssClass(this.wholeWordOption, "checked", this.wholeWordOption.checked); + dom.setCssClass(this.caseSensitiveOption, "checked", this.caseSensitiveOption.checked); + var readOnly = this.editor.getReadOnly(); + this.replaceOption.style.display = readOnly ? "none" : ""; + this.replaceBox.style.display = this.replaceOption.checked && !readOnly ? "" : "none"; + this.find(false, false, preventScroll); + }; + SearchBox.prototype.highlight = function (re) { + this.editor.session.highlight(re || this.editor.$search.$options.re); + this.editor.renderer.updateBackMarkers(); + }; + SearchBox.prototype.find = function (skipCurrent, backwards, preventScroll) { + var range = this.editor.find(this.searchInput.value, { + skipCurrent: skipCurrent, + backwards: backwards, + wrap: true, + regExp: this.regExpOption.checked, + caseSensitive: this.caseSensitiveOption.checked, + wholeWord: this.wholeWordOption.checked, + preventScroll: preventScroll, + range: this.searchRange + }); + var noMatch = !range && this.searchInput.value; + dom.setCssClass(this.searchBox, "ace_nomatch", noMatch); + this.editor._emit("findSearchBox", { match: !noMatch }); + this.highlight(); + this.updateCounter(); + }; + SearchBox.prototype.updateCounter = function () { + var editor = this.editor; + var regex = editor.$search.$options.re; + var supportsUnicodeFlag = regex.unicode; + var all = 0; + var before = 0; + if (regex) { + var value = this.searchRange + ? editor.session.getTextRange(this.searchRange) + : editor.getValue(); + var offset = editor.session.doc.positionToIndex(editor.selection.anchor); + if (this.searchRange) + offset -= editor.session.doc.positionToIndex(this.searchRange.start); + var last = regex.lastIndex = 0; + var m; + while ((m = regex.exec(value))) { + all++; + last = m.index; + if (last <= offset) + before++; + if (all > MAX_COUNT) + break; + if (!m[0]) { + regex.lastIndex = last += lang.skipEmptyMatch(value, last, supportsUnicodeFlag); + if (last >= value.length) + break; + } + } + } + this.searchCounter.textContent = nls("$0 of $1", [before, (all > MAX_COUNT ? MAX_COUNT + "+" : all)]); + }; + SearchBox.prototype.findNext = function () { + this.find(true, false); + }; + SearchBox.prototype.findPrev = function () { + this.find(true, true); + }; + SearchBox.prototype.findAll = function () { + var range = this.editor.findAll(this.searchInput.value, { + regExp: this.regExpOption.checked, + caseSensitive: this.caseSensitiveOption.checked, + wholeWord: this.wholeWordOption.checked + }); + var noMatch = !range && this.searchInput.value; + dom.setCssClass(this.searchBox, "ace_nomatch", noMatch); + this.editor._emit("findSearchBox", { match: !noMatch }); + this.highlight(); + this.hide(); + }; + SearchBox.prototype.replace = function () { + if (!this.editor.getReadOnly()) + this.editor.replace(this.replaceInput.value); + }; + SearchBox.prototype.replaceAndFindNext = function () { + if (!this.editor.getReadOnly()) { + this.editor.replace(this.replaceInput.value); + this.findNext(); + } + }; + SearchBox.prototype.replaceAll = function () { + if (!this.editor.getReadOnly()) + this.editor.replaceAll(this.replaceInput.value); + }; + SearchBox.prototype.hide = function () { + this.active = false; + this.setSearchRange(null); + this.editor.off("changeSession", this.setSession); + this.element.style.display = "none"; + this.editor.keyBinding.removeKeyboardHandler(this.$closeSearchBarKb); + this.editor.focus(); + }; + SearchBox.prototype.show = function (value, isReplace) { + this.active = true; + this.editor.on("changeSession", this.setSession); + this.element.style.display = ""; + this.replaceOption.checked = isReplace; + if (value) + this.searchInput.value = value; + this.searchInput.focus(); + this.searchInput.select(); + this.editor.keyBinding.addKeyboardHandler(this.$closeSearchBarKb); + this.$syncOptions(true); + }; + SearchBox.prototype.isFocused = function () { + var el = document.activeElement; + return el == this.searchInput || el == this.replaceInput; + }; + return SearchBox; +}()); +var $searchBarKb = new HashHandler(); +$searchBarKb.bindKeys({ + "Ctrl-f|Command-f": function (sb) { + var isReplace = sb.isReplace = !sb.isReplace; + sb.replaceBox.style.display = isReplace ? "" : "none"; + sb.replaceOption.checked = false; + sb.$syncOptions(); + sb.searchInput.focus(); + }, + "Ctrl-H|Command-Option-F": function (sb) { + if (sb.editor.getReadOnly()) + return; + sb.replaceOption.checked = true; + sb.$syncOptions(); + sb.replaceInput.focus(); + }, + "Ctrl-G|Command-G": function (sb) { + sb.findNext(); + }, + "Ctrl-Shift-G|Command-Shift-G": function (sb) { + sb.findPrev(); + }, + "esc": function (sb) { + setTimeout(function () { sb.hide(); }); + }, + "Return": function (sb) { + if (sb.activeInput == sb.replaceInput) + sb.replace(); + sb.findNext(); + }, + "Shift-Return": function (sb) { + if (sb.activeInput == sb.replaceInput) + sb.replace(); + sb.findPrev(); + }, + "Alt-Return": function (sb) { + if (sb.activeInput == sb.replaceInput) + sb.replaceAll(); + sb.findAll(); + }, + "Tab": function (sb) { + (sb.activeInput == sb.replaceInput ? sb.searchInput : sb.replaceInput).focus(); + } +}); +$searchBarKb.addCommands([{ + name: "toggleRegexpMode", + bindKey: { win: "Alt-R|Alt-/", mac: "Ctrl-Alt-R|Ctrl-Alt-/" }, + exec: function (sb) { + sb.regExpOption.checked = !sb.regExpOption.checked; + sb.$syncOptions(); + } + }, { + name: "toggleCaseSensitive", + bindKey: { win: "Alt-C|Alt-I", mac: "Ctrl-Alt-R|Ctrl-Alt-I" }, + exec: function (sb) { + sb.caseSensitiveOption.checked = !sb.caseSensitiveOption.checked; + sb.$syncOptions(); + } + }, { + name: "toggleWholeWords", + bindKey: { win: "Alt-B|Alt-W", mac: "Ctrl-Alt-B|Ctrl-Alt-W" }, + exec: function (sb) { + sb.wholeWordOption.checked = !sb.wholeWordOption.checked; + sb.$syncOptions(); + } + }, { + name: "toggleReplace", + exec: function (sb) { + sb.replaceOption.checked = !sb.replaceOption.checked; + sb.$syncOptions(); + } + }, { + name: "searchInSelection", + exec: function (sb) { + sb.searchOption.checked = !sb.searchRange; + sb.setSearchRange(sb.searchOption.checked && sb.editor.getSelectionRange()); + sb.$syncOptions(); + } + }]); +var $closeSearchBarKb = new HashHandler([{ + bindKey: "Esc", + name: "closeSearchBar", + exec: function (editor) { + editor.searchBox.hide(); + } + }]); +SearchBox.prototype.$searchBarKb = $searchBarKb; +SearchBox.prototype.$closeSearchBarKb = $closeSearchBarKb; +exports.SearchBox = SearchBox; +exports.Search = function (editor, isReplace) { + var sb = editor.searchBox || new SearchBox(editor); + sb.show(editor.session.getTextRange(), isReplace); +}; + +}); (function() { + ace.require(["ace/ext/searchbox"], function(m) { + if ( true && module) { + module.exports = m; + } + }); + })(); + + +/***/ }), + +/***/ 549: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +/* module decorator */ module = __webpack_require__.nmd(module); +ace.define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var lang = require("../lib/lang"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; +var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; +var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|flex-end|flex-start|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom"; +var supportConstantColor = exports.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|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|green|greenyellow|grey|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|magenta|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|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen"; +var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; +var numRe = exports.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))"; +var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; +var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; +var CssHighlightRules = function () { + var keywordMapper = this.createKeywordMapper({ + "support.function": supportFunction, + "support.constant": supportConstant, + "support.type": supportType, + "support.constant.color": supportConstantColor, + "support.constant.fonts": supportConstantFonts + }, "text", true); + this.$rules = { + "start": [{ + include: ["strings", "url", "comments"] + }, { + token: "paren.lparen", + regex: "\\{", + next: "ruleset" + }, { + token: "paren.rparen", + regex: "\\}" + }, { + token: "string", + regex: "@(?!viewport)", + next: "media" + }, { + token: "keyword", + regex: "#[a-z0-9-_]+" + }, { + token: "keyword", + regex: "%" + }, { + token: "variable", + regex: "\\.[a-z0-9-_]+" + }, { + token: "string", + regex: ":[a-z0-9-_]+" + }, { + token: "constant.numeric", + regex: numRe + }, { + token: "constant", + regex: "[a-z0-9-_]+" + }, { + caseInsensitive: true + }], + "media": [{ + include: ["strings", "url", "comments"] + }, { + token: "paren.lparen", + regex: "\\{", + next: "start" + }, { + token: "paren.rparen", + regex: "\\}", + next: "start" + }, { + token: "string", + regex: ";", + next: "start" + }, { + token: "keyword", + regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" + + "|page|font|keyframes|viewport|counter-style|font-feature-values" + + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" + }], + "comments": [{ + token: "comment", + regex: "\\/\\*", + push: [{ + token: "comment", + regex: "\\*\\/", + next: "pop" + }, { + defaultToken: "comment" + }] + }], + "ruleset": [{ + regex: "-(webkit|ms|moz|o)-", + token: "text" + }, { + token: "punctuation.operator", + regex: "[:;]" + }, { + token: "paren.rparen", + regex: "\\}", + next: "start" + }, { + include: ["strings", "url", "comments"] + }, { + token: ["constant.numeric", "keyword"], + regex: "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)" + }, { + token: "constant.numeric", + regex: numRe + }, { + token: "constant.numeric", + regex: "#[a-f0-9]{6}" + }, { + token: "constant.numeric", + regex: "#[a-f0-9]{3}" + }, { + token: ["punctuation", "entity.other.attribute-name.pseudo-element.css"], + regex: pseudoElements + }, { + token: ["punctuation", "entity.other.attribute-name.pseudo-class.css"], + regex: pseudoClasses + }, { + include: "url" + }, { + token: keywordMapper, + regex: "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" + }, { + caseInsensitive: true + }], + url: [{ + token: "support.function", + regex: "(?:url(:?-prefix)?|domain|regexp)\\(", + push: [{ + token: "support.function", + regex: "\\)", + next: "pop" + }, { + defaultToken: "string" + }] + }], + strings: [{ + token: "string.start", + regex: "'", + push: [{ + token: "string.end", + regex: "'|$", + next: "pop" + }, { + include: "escapes" + }, { + token: "constant.language.escape", + regex: /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] + }, { + token: "string.start", + regex: '"', + push: [{ + token: "string.end", + regex: '"|$', + next: "pop" + }, { + include: "escapes" + }, { + token: "constant.language.escape", + regex: /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] + }], + escapes: [{ + token: "constant.language.escape", + regex: /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ + }] + }; + this.normalizeRules(); +}; +oop.inherits(CssHighlightRules, TextHighlightRules); +exports.CssHighlightRules = CssHighlightRules; + +}); + +ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; +var Range = require("../range").Range; +var MatchingBraceOutdent = function () { }; +(function () { + this.checkOutdent = function (line, input) { + if (!/^\s+$/.test(line)) + return false; + return /^\s*\}/.test(input); + }; + this.autoOutdent = function (doc, row) { + var line = doc.getLine(row); + var match = line.match(/^(\s*\})/); + if (!match) + return 0; + var column = match[1].length; + var openBracePos = doc.findMatchingBracket({ row: row, column: column }); + if (!openBracePos || openBracePos.row == row) + return 0; + var indent = this.$getIndent(doc.getLine(openBracePos.row)); + doc.replace(new Range(row, 0, row, column - 1), indent); + }; + this.$getIndent = function (line) { + return line.match(/^\s*/)[0]; + }; +}).call(MatchingBraceOutdent.prototype); +exports.MatchingBraceOutdent = MatchingBraceOutdent; + +}); + +ace.define("ace/mode/css_completions",["require","exports","module"], function(require, exports, module){"use strict"; +var propertyMap = { + "background": { "#$0": 1 }, + "background-color": { "#$0": 1, "transparent": 1, "fixed": 1 }, + "background-image": { "url('/$0')": 1 }, + "background-repeat": { "repeat": 1, "repeat-x": 1, "repeat-y": 1, "no-repeat": 1, "inherit": 1 }, + "background-position": { "bottom": 2, "center": 2, "left": 2, "right": 2, "top": 2, "inherit": 2 }, + "background-attachment": { "scroll": 1, "fixed": 1 }, + "background-size": { "cover": 1, "contain": 1 }, + "background-clip": { "border-box": 1, "padding-box": 1, "content-box": 1 }, + "background-origin": { "border-box": 1, "padding-box": 1, "content-box": 1 }, + "border": { "solid $0": 1, "dashed $0": 1, "dotted $0": 1, "#$0": 1 }, + "border-color": { "#$0": 1 }, + "border-style": { "solid": 2, "dashed": 2, "dotted": 2, "double": 2, "groove": 2, "hidden": 2, "inherit": 2, "inset": 2, "none": 2, "outset": 2, "ridged": 2 }, + "border-collapse": { "collapse": 1, "separate": 1 }, + "bottom": { "px": 1, "em": 1, "%": 1 }, + "clear": { "left": 1, "right": 1, "both": 1, "none": 1 }, + "color": { "#$0": 1, "rgb(#$00,0,0)": 1 }, + "cursor": { "default": 1, "pointer": 1, "move": 1, "text": 1, "wait": 1, "help": 1, "progress": 1, "n-resize": 1, "ne-resize": 1, "e-resize": 1, "se-resize": 1, "s-resize": 1, "sw-resize": 1, "w-resize": 1, "nw-resize": 1 }, + "display": { "none": 1, "block": 1, "inline": 1, "inline-block": 1, "table-cell": 1 }, + "empty-cells": { "show": 1, "hide": 1 }, + "float": { "left": 1, "right": 1, "none": 1 }, + "font-family": { "Arial": 2, "Comic Sans MS": 2, "Consolas": 2, "Courier New": 2, "Courier": 2, "Georgia": 2, "Monospace": 2, "Sans-Serif": 2, "Segoe UI": 2, "Tahoma": 2, "Times New Roman": 2, "Trebuchet MS": 2, "Verdana": 1 }, + "font-size": { "px": 1, "em": 1, "%": 1 }, + "font-weight": { "bold": 1, "normal": 1 }, + "font-style": { "italic": 1, "normal": 1 }, + "font-variant": { "normal": 1, "small-caps": 1 }, + "height": { "px": 1, "em": 1, "%": 1 }, + "left": { "px": 1, "em": 1, "%": 1 }, + "letter-spacing": { "normal": 1 }, + "line-height": { "normal": 1 }, + "list-style-type": { "none": 1, "disc": 1, "circle": 1, "square": 1, "decimal": 1, "decimal-leading-zero": 1, "lower-roman": 1, "upper-roman": 1, "lower-greek": 1, "lower-latin": 1, "upper-latin": 1, "georgian": 1, "lower-alpha": 1, "upper-alpha": 1 }, + "margin": { "px": 1, "em": 1, "%": 1 }, + "margin-right": { "px": 1, "em": 1, "%": 1 }, + "margin-left": { "px": 1, "em": 1, "%": 1 }, + "margin-top": { "px": 1, "em": 1, "%": 1 }, + "margin-bottom": { "px": 1, "em": 1, "%": 1 }, + "max-height": { "px": 1, "em": 1, "%": 1 }, + "max-width": { "px": 1, "em": 1, "%": 1 }, + "min-height": { "px": 1, "em": 1, "%": 1 }, + "min-width": { "px": 1, "em": 1, "%": 1 }, + "overflow": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 }, + "overflow-x": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 }, + "overflow-y": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 }, + "padding": { "px": 1, "em": 1, "%": 1 }, + "padding-top": { "px": 1, "em": 1, "%": 1 }, + "padding-right": { "px": 1, "em": 1, "%": 1 }, + "padding-bottom": { "px": 1, "em": 1, "%": 1 }, + "padding-left": { "px": 1, "em": 1, "%": 1 }, + "page-break-after": { "auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1 }, + "page-break-before": { "auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1 }, + "position": { "absolute": 1, "relative": 1, "fixed": 1, "static": 1 }, + "right": { "px": 1, "em": 1, "%": 1 }, + "table-layout": { "fixed": 1, "auto": 1 }, + "text-decoration": { "none": 1, "underline": 1, "line-through": 1, "blink": 1 }, + "text-align": { "left": 1, "right": 1, "center": 1, "justify": 1 }, + "text-transform": { "capitalize": 1, "uppercase": 1, "lowercase": 1, "none": 1 }, + "top": { "px": 1, "em": 1, "%": 1 }, + "vertical-align": { "top": 1, "bottom": 1 }, + "visibility": { "hidden": 1, "visible": 1 }, + "white-space": { "nowrap": 1, "normal": 1, "pre": 1, "pre-line": 1, "pre-wrap": 1 }, + "width": { "px": 1, "em": 1, "%": 1 }, + "word-spacing": { "normal": 1 }, + "filter": { "alpha(opacity=$0100)": 1 }, + "text-shadow": { "$02px 2px 2px #777": 1 }, + "text-overflow": { "ellipsis-word": 1, "clip": 1, "ellipsis": 1 }, + "-moz-border-radius": 1, + "-moz-border-radius-topright": 1, + "-moz-border-radius-bottomright": 1, + "-moz-border-radius-topleft": 1, + "-moz-border-radius-bottomleft": 1, + "-webkit-border-radius": 1, + "-webkit-border-top-right-radius": 1, + "-webkit-border-top-left-radius": 1, + "-webkit-border-bottom-right-radius": 1, + "-webkit-border-bottom-left-radius": 1, + "-moz-box-shadow": 1, + "-webkit-box-shadow": 1, + "transform": { "rotate($00deg)": 1, "skew($00deg)": 1 }, + "-moz-transform": { "rotate($00deg)": 1, "skew($00deg)": 1 }, + "-webkit-transform": { "rotate($00deg)": 1, "skew($00deg)": 1 } +}; +var CssCompletions = function () { +}; +(function () { + this.completionsDefined = false; + this.defineCompletions = function () { + if (document) { + var style = document.createElement('c').style; + for (var i in style) { + if (typeof style[i] !== 'string') + continue; + var name = i.replace(/[A-Z]/g, function (x) { + return '-' + x.toLowerCase(); + }); + if (!propertyMap.hasOwnProperty(name)) + propertyMap[name] = 1; + } + } + this.completionsDefined = true; + }; + this.getCompletions = function (state, session, pos, prefix) { + if (!this.completionsDefined) { + this.defineCompletions(); + } + if (state === 'ruleset' || session.$mode.$id == "ace/mode/scss") { + var line = session.getLine(pos.row).substr(0, pos.column); + var inParens = /\([^)]*$/.test(line); + if (inParens) { + line = line.substr(line.lastIndexOf('(') + 1); + } + if (/:[^;]+$/.test(line)) { + /([\w\-]+):[^:]*$/.test(line); + return this.getPropertyValueCompletions(state, session, pos, prefix); + } + else { + return this.getPropertyCompletions(state, session, pos, prefix, inParens); + } + } + return []; + }; + this.getPropertyCompletions = function (state, session, pos, prefix, skipSemicolon) { + skipSemicolon = skipSemicolon || false; + var properties = Object.keys(propertyMap); + return properties.map(function (property) { + return { + caption: property, + snippet: property + ': $0' + (skipSemicolon ? '' : ';'), + meta: "property", + score: 1000000 + }; + }); + }; + this.getPropertyValueCompletions = function (state, session, pos, prefix) { + var line = session.getLine(pos.row).substr(0, pos.column); + var property = (/([\w\-]+):[^:]*$/.exec(line) || {})[1]; + if (!property) + return []; + var values = []; + if (property in propertyMap && typeof propertyMap[property] === "object") { + values = Object.keys(propertyMap[property]); + } + return values.map(function (value) { + return { + caption: value, + snippet: value, + meta: "property value", + score: 1000000 + }; + }); + }; +}).call(CssCompletions.prototype); +exports.CssCompletions = CssCompletions; + +}); + +ace.define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var Behaviour = require("../behaviour").Behaviour; +var CstyleBehaviour = require("./cstyle").CstyleBehaviour; +var TokenIterator = require("../../token_iterator").TokenIterator; +var CssBehaviour = function () { + this.inherit(CstyleBehaviour); + this.add("colon", "insertion", function (state, action, editor, session, text) { + if (text === ':' && editor.selection.isEmpty()) { + var cursor = editor.getCursorPosition(); + var iterator = new TokenIterator(session, cursor.row, cursor.column); + var token = iterator.getCurrentToken(); + if (token && token.value.match(/\s+/)) { + token = iterator.stepBackward(); + } + if (token && token.type === 'support.type') { + var line = session.doc.getLine(cursor.row); + var rightChar = line.substring(cursor.column, cursor.column + 1); + if (rightChar === ':') { + return { + text: '', + selection: [1, 1] + }; + } + if (/^(\s+[^;]|\s*$)/.test(line.substring(cursor.column))) { + return { + text: ':;', + selection: [1, 1] + }; + } + } + } + }); + this.add("colon", "deletion", function (state, action, editor, session, range) { + var selected = session.doc.getTextRange(range); + if (!range.isMultiLine() && selected === ':') { + var cursor = editor.getCursorPosition(); + var iterator = new TokenIterator(session, cursor.row, cursor.column); + var token = iterator.getCurrentToken(); + if (token && token.value.match(/\s+/)) { + token = iterator.stepBackward(); + } + if (token && token.type === 'support.type') { + var line = session.doc.getLine(range.start.row); + var rightChar = line.substring(range.end.column, range.end.column + 1); + if (rightChar === ';') { + range.end.column++; + return range; + } + } + } + }); + this.add("semicolon", "insertion", function (state, action, editor, session, text) { + if (text === ';' && editor.selection.isEmpty()) { + var cursor = editor.getCursorPosition(); + var line = session.doc.getLine(cursor.row); + var rightChar = line.substring(cursor.column, cursor.column + 1); + if (rightChar === ';') { + return { + text: '', + selection: [1, 1] + }; + } + } + }); + this.add("!important", "insertion", function (state, action, editor, session, text) { + if (text === '!' && editor.selection.isEmpty()) { + var cursor = editor.getCursorPosition(); + var line = session.doc.getLine(cursor.row); + if (/^\s*(;|}|$)/.test(line.substring(cursor.column))) { + return { + text: '!important', + selection: [10, 10] + }; + } + } + }); +}; +oop.inherits(CssBehaviour, CstyleBehaviour); +exports.CssBehaviour = CssBehaviour; + +}); + +ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var Range = require("../../range").Range; +var BaseFoldMode = require("./fold_mode").FoldMode; +var FoldMode = exports.FoldMode = function (commentRegex) { + if (commentRegex) { + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); + } +}; +oop.inherits(FoldMode, BaseFoldMode); +(function () { + this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; + this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; + this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; + this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; + this._getFoldWidgetBase = this.getFoldWidget; + this.getFoldWidget = function (session, foldStyle, row) { + var line = session.getLine(row); + if (this.singleLineBlockCommentRe.test(line)) { + if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) + return ""; + } + var fw = this._getFoldWidgetBase(session, foldStyle, row); + if (!fw && this.startRegionRe.test(line)) + return "start"; // lineCommentRegionStart + return fw; + }; + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { + var line = session.getLine(row); + if (this.startRegionRe.test(line)) + return this.getCommentRegionBlock(session, line, row); + var match = line.match(this.foldingStartMarker); + if (match) { + var i = match.index; + if (match[1]) + return this.openingBracketBlock(session, match[1], row, i); + var range = session.getCommentFoldRange(row, i + match[0].length, 1); + if (range && !range.isMultiLine()) { + if (forceMultiline) { + range = this.getSectionRange(session, row); + } + else if (foldStyle != "all") + range = null; + } + return range; + } + if (foldStyle === "markbegin") + return; + var match = line.match(this.foldingStopMarker); + if (match) { + var i = match.index + match[0].length; + if (match[1]) + return this.closingBracketBlock(session, match[1], row, i); + return session.getCommentFoldRange(row, i, -1); + } + }; + this.getSectionRange = function (session, row) { + var line = session.getLine(row); + var startIndent = line.search(/\S/); + var startRow = row; + var startColumn = line.length; + row = row + 1; + var endRow = row; + var maxRow = session.getLength(); + while (++row < maxRow) { + line = session.getLine(row); + var indent = line.search(/\S/); + if (indent === -1) + continue; + if (startIndent > indent) + break; + var subRange = this.getFoldWidgetRange(session, "all", row); + if (subRange) { + if (subRange.start.row <= startRow) { + break; + } + else if (subRange.isMultiLine()) { + row = subRange.end.row; + } + else if (startIndent == indent) { + break; + } + } + endRow = row; + } + return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); + }; + this.getCommentRegionBlock = function (session, line, row) { + var startColumn = line.search(/\s*$/); + var maxRow = session.getLength(); + var startRow = row; + var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; + var depth = 1; + while (++row < maxRow) { + line = session.getLine(row); + var m = re.exec(line); + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; + } + var endRow = row; + if (endRow > startRow) { + return new Range(startRow, startColumn, endRow, line.length); + } + }; +}).call(FoldMode.prototype); + +}); + +ace.define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; +var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; +var WorkerClient = require("../worker/worker_client").WorkerClient; +var CssCompletions = require("./css_completions").CssCompletions; +var CssBehaviour = require("./behaviour/css").CssBehaviour; +var CStyleFoldMode = require("./folding/cstyle").FoldMode; +var Mode = function () { + this.HighlightRules = CssHighlightRules; + this.$outdent = new MatchingBraceOutdent(); + this.$behaviour = new CssBehaviour(); + this.$completer = new CssCompletions(); + this.foldingRules = new CStyleFoldMode(); +}; +oop.inherits(Mode, TextMode); +(function () { + this.foldingRules = "cStyle"; + this.blockComment = { start: "/*", end: "*/" }; + this.getNextLineIndent = function (state, line, tab) { + var indent = this.$getIndent(line); + var tokens = this.getTokenizer().getLineTokens(line, state).tokens; + if (tokens.length && tokens[tokens.length - 1].type == "comment") { + return indent; + } + var match = line.match(/^.*\{\s*$/); + if (match) { + indent += tab; + } + return indent; + }; + this.checkOutdent = function (state, line, input) { + return this.$outdent.checkOutdent(line, input); + }; + this.autoOutdent = function (state, doc, row) { + this.$outdent.autoOutdent(doc, row); + }; + this.getCompletions = function (state, session, pos, prefix) { + return this.$completer.getCompletions(state, session, pos, prefix); + }; + this.createWorker = function (session) { + var worker = new WorkerClient(["ace"], "ace/mode/css_worker", "Worker"); + worker.attachToDocument(session.getDocument()); + worker.on("annotate", function (e) { + session.setAnnotations(e.data); + }); + worker.on("terminate", function () { + session.clearAnnotations(); + }); + return worker; + }; + this.$id = "ace/mode/css"; + this.snippetFileId = "ace/snippets/css"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); (function() { + ace.require(["ace/mode/css"], function(m) { + if ( true && module) { + module.exports = m; + } + }); + })(); + + +/***/ }), + +/***/ 576: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +/* module decorator */ module = __webpack_require__.nmd(module); +ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var DocCommentHighlightRules = function () { + this.$rules = { + "start": [ + { + token: "comment.doc.tag", + regex: "@\\w+(?=\\s|$)" + }, DocCommentHighlightRules.getTagRule(), { + defaultToken: "comment.doc", + caseInsensitive: true + } + ] + }; +}; +oop.inherits(DocCommentHighlightRules, TextHighlightRules); +DocCommentHighlightRules.getTagRule = function (start) { + return { + token: "comment.doc.tag.storage.type", + regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b" + }; +}; +DocCommentHighlightRules.getStartRule = function (start) { + return { + token: "comment.doc", + regex: "\\/\\*(?=\\*)", + next: start + }; +}; +DocCommentHighlightRules.getEndRule = function (start) { + return { + token: "comment.doc", + regex: "\\*\\/", + next: start + }; +}; +exports.DocCommentHighlightRules = DocCommentHighlightRules; + +}); + +ace.define("ace/mode/golang_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module){var oop = require("../lib/oop"); +var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var GolangHighlightRules = function () { + var keywords = ("else|break|case|return|goto|if|const|select|" + + "continue|struct|default|switch|for|range|" + + "func|import|package|chan|defer|fallthrough|go|interface|map|range|" + + "select|type|var"); + var builtinTypes = ("string|uint8|uint16|uint32|uint64|int8|int16|int32|int64|float32|" + + "float64|complex64|complex128|byte|rune|uint|int|uintptr|bool|error"); + var builtinFunctions = ("new|close|cap|copy|panic|panicln|print|println|len|make|delete|real|recover|imag|append"); + var builtinConstants = ("nil|true|false|iota"); + var keywordMapper = this.createKeywordMapper({ + "keyword": keywords, + "constant.language": builtinConstants, + "support.function": builtinFunctions, + "support.type": builtinTypes + }, ""); + var stringEscapeRe = "\\\\(?:[0-7]{3}|x\\h{2}|u{4}|U\\h{6}|[abfnrtv'\"\\\\])".replace(/\\h/g, "[a-fA-F\\d]"); + this.$rules = { + "start": [ + { + token: "comment", + regex: "\\/\\/.*$" + }, + DocCommentHighlightRules.getStartRule("doc-start"), + { + token: "comment.start", + regex: "\\/\\*", + next: "comment" + }, { + token: "string", + regex: /"(?:[^"\\]|\\.)*?"/ + }, { + token: "string", + regex: '`', + next: "bqstring" + }, { + token: "constant.numeric", + regex: "'(?:[^\\'\uD800-\uDBFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|" + stringEscapeRe.replace('"', '') + ")'" + }, { + token: "constant.numeric", + regex: "0[xX][0-9a-fA-F]+\\b" + }, { + token: "constant.numeric", + regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" + }, { + token: ["keyword", "text", "entity.name.function"], + regex: "(func)(\\s+)([a-zA-Z_$][a-zA-Z0-9_$]*)\\b" + }, { + token: function (val) { + if (val[val.length - 1] == "(") { + return [{ + type: keywordMapper(val.slice(0, -1)) || "support.function", + value: val.slice(0, -1) + }, { + type: "paren.lparen", + value: val.slice(-1) + }]; + } + return keywordMapper(val) || "identifier"; + }, + regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b\\(?" + }, { + token: "keyword.operator", + regex: "!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|==|=|!=|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=" + }, { + token: "punctuation.operator", + regex: "\\?|\\:|\\,|\\;|\\." + }, { + token: "paren.lparen", + regex: "[[({]" + }, { + token: "paren.rparen", + regex: "[\\])}]" + }, { + token: "text", + regex: "\\s+" + } + ], + "comment": [ + { + token: "comment.end", + regex: "\\*\\/", + next: "start" + }, { + defaultToken: "comment" + } + ], + "bqstring": [ + { + token: "string", + regex: '`', + next: "start" + }, { + defaultToken: "string" + } + ] + }; + this.embedRules(DocCommentHighlightRules, "doc-", [DocCommentHighlightRules.getEndRule("start")]); +}; +oop.inherits(GolangHighlightRules, TextHighlightRules); +exports.GolangHighlightRules = GolangHighlightRules; + +}); + +ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; +var Range = require("../range").Range; +var MatchingBraceOutdent = function () { }; +(function () { + this.checkOutdent = function (line, input) { + if (!/^\s+$/.test(line)) + return false; + return /^\s*\}/.test(input); + }; + this.autoOutdent = function (doc, row) { + var line = doc.getLine(row); + var match = line.match(/^(\s*\})/); + if (!match) + return 0; + var column = match[1].length; + var openBracePos = doc.findMatchingBracket({ row: row, column: column }); + if (!openBracePos || openBracePos.row == row) + return 0; + var indent = this.$getIndent(doc.getLine(openBracePos.row)); + doc.replace(new Range(row, 0, row, column - 1), indent); + }; + this.$getIndent = function (line) { + return line.match(/^\s*/)[0]; + }; +}).call(MatchingBraceOutdent.prototype); +exports.MatchingBraceOutdent = MatchingBraceOutdent; + +}); + +ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var Range = require("../../range").Range; +var BaseFoldMode = require("./fold_mode").FoldMode; +var FoldMode = exports.FoldMode = function (commentRegex) { + if (commentRegex) { + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); + } +}; +oop.inherits(FoldMode, BaseFoldMode); +(function () { + this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; + this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; + this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; + this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; + this._getFoldWidgetBase = this.getFoldWidget; + this.getFoldWidget = function (session, foldStyle, row) { + var line = session.getLine(row); + if (this.singleLineBlockCommentRe.test(line)) { + if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) + return ""; + } + var fw = this._getFoldWidgetBase(session, foldStyle, row); + if (!fw && this.startRegionRe.test(line)) + return "start"; // lineCommentRegionStart + return fw; + }; + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { + var line = session.getLine(row); + if (this.startRegionRe.test(line)) + return this.getCommentRegionBlock(session, line, row); + var match = line.match(this.foldingStartMarker); + if (match) { + var i = match.index; + if (match[1]) + return this.openingBracketBlock(session, match[1], row, i); + var range = session.getCommentFoldRange(row, i + match[0].length, 1); + if (range && !range.isMultiLine()) { + if (forceMultiline) { + range = this.getSectionRange(session, row); + } + else if (foldStyle != "all") + range = null; + } + return range; + } + if (foldStyle === "markbegin") + return; + var match = line.match(this.foldingStopMarker); + if (match) { + var i = match.index + match[0].length; + if (match[1]) + return this.closingBracketBlock(session, match[1], row, i); + return session.getCommentFoldRange(row, i, -1); + } + }; + this.getSectionRange = function (session, row) { + var line = session.getLine(row); + var startIndent = line.search(/\S/); + var startRow = row; + var startColumn = line.length; + row = row + 1; + var endRow = row; + var maxRow = session.getLength(); + while (++row < maxRow) { + line = session.getLine(row); + var indent = line.search(/\S/); + if (indent === -1) + continue; + if (startIndent > indent) + break; + var subRange = this.getFoldWidgetRange(session, "all", row); + if (subRange) { + if (subRange.start.row <= startRow) { + break; + } + else if (subRange.isMultiLine()) { + row = subRange.end.row; + } + else if (startIndent == indent) { + break; + } + } + endRow = row; + } + return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); + }; + this.getCommentRegionBlock = function (session, line, row) { + var startColumn = line.search(/\s*$/); + var maxRow = session.getLength(); + var startRow = row; + var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; + var depth = 1; + while (++row < maxRow) { + line = session.getLine(row); + var m = re.exec(line); + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; + } + var endRow = row; + if (endRow > startRow) { + return new Range(startRow, startColumn, endRow, line.length); + } + }; +}).call(FoldMode.prototype); + +}); + +ace.define("ace/mode/golang",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/golang_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/folding/cstyle"], function(require, exports, module){var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var GolangHighlightRules = require("./golang_highlight_rules").GolangHighlightRules; +var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; +var CStyleFoldMode = require("./folding/cstyle").FoldMode; +var Mode = function () { + this.HighlightRules = GolangHighlightRules; + this.$outdent = new MatchingBraceOutdent(); + this.foldingRules = new CStyleFoldMode(); + this.$behaviour = this.$defaultBehaviour; +}; +oop.inherits(Mode, TextMode); +(function () { + this.lineCommentStart = "//"; + this.blockComment = { start: "/*", end: "*/" }; + this.getNextLineIndent = function (state, line, tab) { + var indent = this.$getIndent(line); + var tokenizedLine = this.getTokenizer().getLineTokens(line, state); + var tokens = tokenizedLine.tokens; + var endState = tokenizedLine.state; + if (tokens.length && tokens[tokens.length - 1].type == "comment") { + return indent; + } + if (state == "start") { + var match = line.match(/^.*[\{\(\[]\s*$/); + if (match) { + indent += tab; + } + } + return indent; + }; //end getNextLineIndent + this.checkOutdent = function (state, line, input) { + return this.$outdent.checkOutdent(line, input); + }; + this.autoOutdent = function (state, doc, row) { + this.$outdent.autoOutdent(doc, row); + }; + this.$id = "ace/mode/golang"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); (function() { + ace.require(["ace/mode/golang"], function(m) { + if ( true && module) { + module.exports = m; + } + }); + })(); + + +/***/ }), + +/***/ 395: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +/* module decorator */ module = __webpack_require__.nmd(module); +ace.define("ace/mode/jsdoc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var JsDocCommentHighlightRules = function () { + this.$rules = { + "start": [ + { + token: ["comment.doc.tag", "comment.doc.text", "lparen.doc"], + regex: "(@(?:param|member|typedef|property|namespace|var|const|callback))(\\s*)({)", + push: [ + { + token: "lparen.doc", + regex: "{", + push: [ + { + include: "doc-syntax" + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + } + ] + }, { + token: ["rparen.doc", "text.doc", "variable.parameter.doc", "lparen.doc", "variable.parameter.doc", "rparen.doc"], + regex: /(})(\s*)(?:([\w=:\/\.]+)|(?:(\[)([\w=:\/\.]+)(\])))/, + next: "pop" + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + }, { + include: "doc-syntax" + }, { + defaultToken: "text.doc" + } + ] + }, { + token: ["comment.doc.tag", "text.doc", "lparen.doc"], + regex: "(@(?:returns?|yields|type|this|suppress|public|protected|private|package|modifies|" + + "implements|external|exception|throws|enum|define|extends))(\\s*)({)", + push: [ + { + token: "lparen.doc", + regex: "{", + push: [ + { + include: "doc-syntax" + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + } + ] + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + }, { + include: "doc-syntax" + }, { + defaultToken: "text.doc" + } + ] + }, { + token: ["comment.doc.tag", "text.doc", "variable.parameter.doc"], + regex: "(@(?:alias|memberof|instance|module|name|lends|namespace|external|this|template|" + + "requires|param|implements|function|extends|typedef|mixes|constructor|var|" + + "memberof\\!|event|listens|exports|class|constructs|interface|emits|fires|" + + "throws|const|callback|borrows|augments))(\\s+)(\\w[\\w#\.:\/~\"\\-]*)?" + }, { + token: ["comment.doc.tag", "text.doc", "variable.parameter.doc"], + regex: "(@method)(\\s+)(\\w[\\w\.\\(\\)]*)" + }, { + token: "comment.doc.tag", + regex: "@access\\s+(?:private|public|protected)" + }, { + token: "comment.doc.tag", + regex: "@kind\\s+(?:class|constant|event|external|file|function|member|mixin|module|namespace|typedef)" + }, { + token: "comment.doc.tag", + regex: "@\\w+(?=\\s|$)" + }, + JsDocCommentHighlightRules.getTagRule(), + { + defaultToken: "comment.doc", + caseInsensitive: true + } + ], + "doc-syntax": [{ + token: "operator.doc", + regex: /[|:]/ + }, { + token: "paren.doc", + regex: /[\[\]]/ + }] + }; + this.normalizeRules(); +}; +oop.inherits(JsDocCommentHighlightRules, TextHighlightRules); +JsDocCommentHighlightRules.getTagRule = function (start) { + return { + token: "comment.doc.tag.storage.type", + regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b" + }; +}; +JsDocCommentHighlightRules.getStartRule = function (start) { + return { + token: "comment.doc", + regex: "\\/\\*(?=\\*)", + next: start + }; +}; +JsDocCommentHighlightRules.getEndRule = function (start) { + return { + token: "comment.doc", + regex: "\\*\\/", + next: start + }; +}; +exports.JsDocCommentHighlightRules = JsDocCommentHighlightRules; + +}); + +ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/jsdoc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var DocCommentHighlightRules = require("./jsdoc_comment_highlight_rules").JsDocCommentHighlightRules; +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*"; +var JavaScriptHighlightRules = function (options) { + var keywordMapper = this.createKeywordMapper({ + "variable.language": "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Symbol|" + // Constructors + "Namespace|QName|XML|XMLList|" + // E4X + "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + + "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + + "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors + "SyntaxError|TypeError|URIError|" + + "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions + "isNaN|parseFloat|parseInt|" + + "JSON|Math|" + // Other + "this|arguments|prototype|window|document", + "keyword": "const|yield|import|get|set|async|await|" + + "break|case|catch|continue|default|delete|do|else|finally|for|function|" + + "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + + "__parent__|__count__|escape|unescape|with|__proto__|" + + "class|enum|extends|super|export|implements|private|public|interface|package|protected|static|constructor", + "storage.type": "const|let|var|function", + "constant.language": "null|Infinity|NaN|undefined", + "support.function": "alert", + "constant.language.boolean": "true|false" + }, "identifier"); + var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void"; + var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex + "u[0-9a-fA-F]{4}|" + // unicode + "u{[0-9a-fA-F]{1,6}}|" + // es6 unicode + "[0-2][0-7]{0,2}|" + // oct + "3[0-7][0-7]?|" + // oct + "[4-7][0-7]?|" + //oct + ".)"; + this.$rules = { + "no_regex": [ + DocCommentHighlightRules.getStartRule("doc-start"), + comments("no_regex"), + { + token: "string", + regex: "'(?=.)", + next: "qstring" + }, { + token: "string", + regex: '"(?=.)', + next: "qqstring" + }, { + token: "constant.numeric", + regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ + }, { + token: "constant.numeric", + regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ + }, { + token: [ + "storage.type", "punctuation.operator", "support.function", + "punctuation.operator", "entity.name.function", "text", "keyword.operator" + ], + regex: "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe + ")(\\s*)(=)", + next: "function_arguments" + }, { + token: [ + "storage.type", "punctuation.operator", "entity.name.function", "text", + "keyword.operator", "text", "storage.type", "text", "paren.lparen" + ], + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s*)(\\()", + next: "function_arguments" + }, { + token: [ + "entity.name.function", "text", "keyword.operator", "text", "storage.type", + "text", "paren.lparen" + ], + regex: "(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s*)(\\()", + next: "function_arguments" + }, { + token: [ + "storage.type", "punctuation.operator", "entity.name.function", "text", + "keyword.operator", "text", + "storage.type", "text", "entity.name.function", "text", "paren.lparen" + ], + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s+)(\\w+)(\\s*)(\\()", + next: "function_arguments" + }, { + token: [ + "storage.type", "text", "entity.name.function", "text", "paren.lparen" + ], + regex: "(function\\*?)(\\s+)(" + identifierRe + ")(\\s*)(\\()", + next: "function_arguments" + }, { + token: [ + "entity.name.function", "text", "punctuation.operator", + "text", "storage.type", "text", "paren.lparen" + ], + regex: "(" + identifierRe + ")(\\s*)(:)(\\s*)(function\\*?)(\\s*)(\\()", + next: "function_arguments" + }, { + token: [ + "text", "text", "storage.type", "text", "paren.lparen" + ], + regex: "(:)(\\s*)(function\\*?)(\\s*)(\\()", + next: "function_arguments" + }, { + token: "keyword", + regex: "from(?=\\s*('|\"))" + }, { + token: "keyword", + regex: "(?:" + kwBeforeRe + ")\\b", + next: "start" + }, { + token: "support.constant", + regex: /that\b/ + }, { + token: ["storage.type", "punctuation.operator", "support.function.firebug"], + regex: /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/ + }, { + token: keywordMapper, + regex: identifierRe + }, { + token: "punctuation.operator", + regex: /[.](?![.])/, + next: "property" + }, { + token: "storage.type", + regex: /=>/, + next: "start" + }, { + token: "keyword.operator", + regex: /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, + next: "start" + }, { + token: "punctuation.operator", + regex: /[?:,;.]/, + next: "start" + }, { + token: "paren.lparen", + regex: /[\[({]/, + next: "start" + }, { + token: "paren.rparen", + regex: /[\])}]/ + }, { + token: "comment", + regex: /^#!.*$/ + } + ], + property: [{ + token: "text", + regex: "\\s+" + }, { + token: [ + "storage.type", "punctuation.operator", "entity.name.function", "text", + "keyword.operator", "text", + "storage.type", "text", "entity.name.function", "text", "paren.lparen" + ], + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(?:(\\s+)(\\w+))?(\\s*)(\\()", + next: "function_arguments" + }, { + token: "punctuation.operator", + regex: /[.](?![.])/ + }, { + token: "support.function", + regex: /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|lter|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward|rEach)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ + }, { + token: "support.function.dom", + regex: /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ + }, { + token: "support.constant", + regex: /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ + }, { + token: "identifier", + regex: identifierRe + }, { + regex: "", + token: "empty", + next: "no_regex" + } + ], + "start": [ + DocCommentHighlightRules.getStartRule("doc-start"), + comments("start"), + { + token: "string.regexp", + regex: "\\/", + next: "regex" + }, { + token: "text", + regex: "\\s+|^$", + next: "start" + }, { + token: "empty", + regex: "", + next: "no_regex" + } + ], + "regex": [ + { + token: "regexp.keyword.operator", + regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" + }, { + token: "string.regexp", + regex: "/[sxngimy]*", + next: "no_regex" + }, { + token: "invalid", + regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ + }, { + token: "constant.language.escape", + regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ + }, { + token: "constant.language.delimiter", + regex: /\|/ + }, { + token: "constant.language.escape", + regex: /\[\^?/, + next: "regex_character_class" + }, { + token: "empty", + regex: "$", + next: "no_regex" + }, { + defaultToken: "string.regexp" + } + ], + "regex_character_class": [ + { + token: "regexp.charclass.keyword.operator", + regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" + }, { + token: "constant.language.escape", + regex: "]", + next: "regex" + }, { + token: "constant.language.escape", + regex: "-" + }, { + token: "empty", + regex: "$", + next: "no_regex" + }, { + defaultToken: "string.regexp.charachterclass" + } + ], + "default_parameter": [ + { + token: "string", + regex: "'(?=.)", + push: [ + { + token: "string", + regex: "'|$", + next: "pop" + }, { + include: "qstring" + } + ] + }, { + token: "string", + regex: '"(?=.)', + push: [ + { + token: "string", + regex: '"|$', + next: "pop" + }, { + include: "qqstring" + } + ] + }, { + token: "constant.language", + regex: "null|Infinity|NaN|undefined" + }, { + token: "constant.numeric", + regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ + }, { + token: "constant.numeric", + regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ + }, { + token: "punctuation.operator", + regex: ",", + next: "function_arguments" + }, { + token: "text", + regex: "\\s+" + }, { + token: "punctuation.operator", + regex: "$" + }, { + token: "empty", + regex: "", + next: "no_regex" + } + ], + "function_arguments": [ + comments("function_arguments"), + { + token: "variable.parameter", + regex: identifierRe + }, { + token: "punctuation.operator", + regex: "," + }, { + token: "text", + regex: "\\s+" + }, { + token: "punctuation.operator", + regex: "$" + }, { + token: "empty", + regex: "", + next: "no_regex" + } + ], + "qqstring": [ + { + token: "constant.language.escape", + regex: escapedRe + }, { + token: "string", + regex: "\\\\$", + consumeLineEnd: true + }, { + token: "string", + regex: '"|$', + next: "no_regex" + }, { + defaultToken: "string" + } + ], + "qstring": [ + { + token: "constant.language.escape", + regex: escapedRe + }, { + token: "string", + regex: "\\\\$", + consumeLineEnd: true + }, { + token: "string", + regex: "'|$", + next: "no_regex" + }, { + defaultToken: "string" + } + ] + }; + if (!options || !options.noES6) { + this.$rules.no_regex.unshift({ + regex: "[{}]", onMatch: function (val, state, stack) { + this.next = val == "{" ? this.nextState : ""; + if (val == "{" && stack.length) { + stack.unshift("start", state); + } + else if (val == "}" && stack.length) { + stack.shift(); + this.next = stack.shift(); + if (this.next.indexOf("string") != -1 || this.next.indexOf("jsx") != -1) + return "paren.quasi.end"; + } + return val == "{" ? "paren.lparen" : "paren.rparen"; + }, + nextState: "start" + }, { + token: "string.quasi.start", + regex: /`/, + push: [{ + token: "constant.language.escape", + regex: escapedRe + }, { + token: "paren.quasi.start", + regex: /\${/, + push: "start" + }, { + token: "string.quasi.end", + regex: /`/, + next: "pop" + }, { + defaultToken: "string.quasi" + }] + }, { + token: ["variable.parameter", "text"], + regex: "(" + identifierRe + ")(\\s*)(?=\\=>)" + }, { + token: "paren.lparen", + regex: "(\\()(?=.+\\s*=>)", + next: "function_arguments" + }, { + token: "variable.language", + regex: "(?:(?:(?:Weak)?(?:Set|Map))|Promise)\\b" + }); + this.$rules["function_arguments"].unshift({ + token: "keyword.operator", + regex: "=", + next: "default_parameter" + }, { + token: "keyword.operator", + regex: "\\.{3}" + }); + this.$rules["property"].unshift({ + token: "support.function", + regex: "(findIndex|repeat|startsWith|endsWith|includes|isSafeInteger|trunc|cbrt|log2|log10|sign|then|catch|" + + "finally|resolve|reject|race|any|all|allSettled|keys|entries|isInteger)\\b(?=\\()" + }, { + token: "constant.language", + regex: "(?:MAX_SAFE_INTEGER|MIN_SAFE_INTEGER|EPSILON)\\b" + }); + if (!options || options.jsx != false) + JSX.call(this); + } + this.embedRules(DocCommentHighlightRules, "doc-", [DocCommentHighlightRules.getEndRule("no_regex")]); + this.normalizeRules(); +}; +oop.inherits(JavaScriptHighlightRules, TextHighlightRules); +function JSX() { + var tagRegex = identifierRe.replace("\\d", "\\d\\-"); + var jsxTag = { + onMatch: function (val, state, stack) { + var offset = val.charAt(1) == "/" ? 2 : 1; + if (offset == 1) { + if (state != this.nextState) + stack.unshift(this.next, this.nextState, 0); + else + stack.unshift(this.next); + stack[2]++; + } + else if (offset == 2) { + if (state == this.nextState) { + stack[1]--; + if (!stack[1] || stack[1] < 0) { + stack.shift(); + stack.shift(); + } + } + } + return [{ + type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", + value: val.slice(0, offset) + }, { + type: "meta.tag.tag-name.xml", + value: val.substr(offset) + }]; + }, + regex: "", + onMatch: function (value, currentState, stack) { + if (currentState == stack[0]) + stack.shift(); + if (value.length == 2) { + if (stack[0] == this.nextState) + stack[1]--; + if (!stack[1] || stack[1] < 0) { + stack.splice(0, 2); + } + } + this.next = stack[0] || "start"; + return [{ type: this.token, value: value }]; + }, + nextState: "jsx" + }, + jsxJsRule, + comments("jsxAttributes"), + { + token: "entity.other.attribute-name.xml", + regex: tagRegex + }, { + token: "keyword.operator.attribute-equals.xml", + regex: "=" + }, { + token: "text.tag-whitespace.xml", + regex: "\\s+" + }, { + token: "string.attribute-value.xml", + regex: "'", + stateName: "jsx_attr_q", + push: [ + { token: "string.attribute-value.xml", regex: "'", next: "pop" }, + { include: "reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, { + token: "string.attribute-value.xml", + regex: '"', + stateName: "jsx_attr_qq", + push: [ + { token: "string.attribute-value.xml", regex: '"', next: "pop" }, + { include: "reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, + jsxTag + ]; + this.$rules.reference = [{ + token: "constant.language.escape.reference.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }]; +} +function comments(next) { + return [ + { + token: "comment", + regex: /\/\*/, + next: [ + DocCommentHighlightRules.getTagRule(), + { token: "comment", regex: "\\*\\/", next: next || "pop" }, + { defaultToken: "comment", caseInsensitive: true } + ] + }, { + token: "comment", + regex: "\\/\\/", + next: [ + DocCommentHighlightRules.getTagRule(), + { token: "comment", regex: "$|^", next: next || "pop" }, + { defaultToken: "comment", caseInsensitive: true } + ] + } + ]; +} +exports.JavaScriptHighlightRules = JavaScriptHighlightRules; + +}); + +ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; +var Range = require("../range").Range; +var MatchingBraceOutdent = function () { }; +(function () { + this.checkOutdent = function (line, input) { + if (!/^\s+$/.test(line)) + return false; + return /^\s*\}/.test(input); + }; + this.autoOutdent = function (doc, row) { + var line = doc.getLine(row); + var match = line.match(/^(\s*\})/); + if (!match) + return 0; + var column = match[1].length; + var openBracePos = doc.findMatchingBracket({ row: row, column: column }); + if (!openBracePos || openBracePos.row == row) + return 0; + var indent = this.$getIndent(doc.getLine(openBracePos.row)); + doc.replace(new Range(row, 0, row, column - 1), indent); + }; + this.$getIndent = function (line) { + return line.match(/^\s*/)[0]; + }; +}).call(MatchingBraceOutdent.prototype); +exports.MatchingBraceOutdent = MatchingBraceOutdent; + +}); + +ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var Range = require("../../range").Range; +var BaseFoldMode = require("./fold_mode").FoldMode; +var FoldMode = exports.FoldMode = function (commentRegex) { + if (commentRegex) { + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); + } +}; +oop.inherits(FoldMode, BaseFoldMode); +(function () { + this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; + this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; + this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; + this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; + this._getFoldWidgetBase = this.getFoldWidget; + this.getFoldWidget = function (session, foldStyle, row) { + var line = session.getLine(row); + if (this.singleLineBlockCommentRe.test(line)) { + if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) + return ""; + } + var fw = this._getFoldWidgetBase(session, foldStyle, row); + if (!fw && this.startRegionRe.test(line)) + return "start"; // lineCommentRegionStart + return fw; + }; + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { + var line = session.getLine(row); + if (this.startRegionRe.test(line)) + return this.getCommentRegionBlock(session, line, row); + var match = line.match(this.foldingStartMarker); + if (match) { + var i = match.index; + if (match[1]) + return this.openingBracketBlock(session, match[1], row, i); + var range = session.getCommentFoldRange(row, i + match[0].length, 1); + if (range && !range.isMultiLine()) { + if (forceMultiline) { + range = this.getSectionRange(session, row); + } + else if (foldStyle != "all") + range = null; + } + return range; + } + if (foldStyle === "markbegin") + return; + var match = line.match(this.foldingStopMarker); + if (match) { + var i = match.index + match[0].length; + if (match[1]) + return this.closingBracketBlock(session, match[1], row, i); + return session.getCommentFoldRange(row, i, -1); + } + }; + this.getSectionRange = function (session, row) { + var line = session.getLine(row); + var startIndent = line.search(/\S/); + var startRow = row; + var startColumn = line.length; + row = row + 1; + var endRow = row; + var maxRow = session.getLength(); + while (++row < maxRow) { + line = session.getLine(row); + var indent = line.search(/\S/); + if (indent === -1) + continue; + if (startIndent > indent) + break; + var subRange = this.getFoldWidgetRange(session, "all", row); + if (subRange) { + if (subRange.start.row <= startRow) { + break; + } + else if (subRange.isMultiLine()) { + row = subRange.end.row; + } + else if (startIndent == indent) { + break; + } + } + endRow = row; + } + return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); + }; + this.getCommentRegionBlock = function (session, line, row) { + var startColumn = line.search(/\s*$/); + var maxRow = session.getLength(); + var startRow = row; + var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; + var depth = 1; + while (++row < maxRow) { + line = session.getLine(row); + var m = re.exec(line); + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; + } + var endRow = row; + if (endRow > startRow) { + return new Range(startRow, startColumn, endRow, line.length); + } + }; +}).call(FoldMode.prototype); + +}); + +ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; +var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; +var WorkerClient = require("../worker/worker_client").WorkerClient; +var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; +var CStyleFoldMode = require("./folding/cstyle").FoldMode; +var Mode = function () { + this.HighlightRules = JavaScriptHighlightRules; + this.$outdent = new MatchingBraceOutdent(); + this.$behaviour = new CstyleBehaviour(); + this.foldingRules = new CStyleFoldMode(); +}; +oop.inherits(Mode, TextMode); +(function () { + this.lineCommentStart = "//"; + this.blockComment = { start: "/*", end: "*/" }; + this.$quotes = { '"': '"', "'": "'", "`": "`" }; + this.$pairQuotesAfter = { + "`": /\w/ + }; + this.getNextLineIndent = function (state, line, tab) { + var indent = this.$getIndent(line); + var tokenizedLine = this.getTokenizer().getLineTokens(line, state); + var tokens = tokenizedLine.tokens; + var endState = tokenizedLine.state; + if (tokens.length && tokens[tokens.length - 1].type == "comment") { + return indent; + } + if (state == "start" || state == "no_regex") { + var match = line.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/); + if (match) { + indent += tab; + } + } + else if (state == "doc-start") { + if (endState == "start" || endState == "no_regex") { + return ""; + } + var match = line.match(/^\s*(\/?)\*/); + if (match) { + if (match[1]) { + indent += " "; + } + indent += "* "; + } + } + return indent; + }; + this.checkOutdent = function (state, line, input) { + return this.$outdent.checkOutdent(line, input); + }; + this.autoOutdent = function (state, doc, row) { + this.$outdent.autoOutdent(doc, row); + }; + this.createWorker = function (session) { + var worker = new WorkerClient(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker"); + worker.attachToDocument(session.getDocument()); + worker.on("annotate", function (results) { + session.setAnnotations(results.data); + }); + worker.on("terminate", function () { + session.clearAnnotations(); + }); + return worker; + }; + this.$id = "ace/mode/javascript"; + this.snippetFileId = "ace/snippets/javascript"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); (function() { + ace.require(["ace/mode/javascript"], function(m) { + if ( true && module) { + module.exports = m; + } + }); + })(); + + +/***/ }), + +/***/ 252: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +/* module decorator */ module = __webpack_require__.nmd(module); +ace.define("ace/mode/json_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var JsonHighlightRules = function () { + this.$rules = { + "start": [ + { + token: "variable", + regex: '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]\\s*(?=:)' + }, { + token: "string", + regex: '"', + next: "string" + }, { + token: "constant.numeric", + regex: "0[xX][0-9a-fA-F]+\\b" + }, { + token: "constant.numeric", + regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" + }, { + token: "constant.language.boolean", + regex: "(?:true|false)\\b" + }, { + token: "text", + regex: "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" + }, { + token: "comment", + regex: "\\/\\/.*$" + }, { + token: "comment.start", + regex: "\\/\\*", + next: "comment" + }, { + token: "paren.lparen", + regex: "[[({]" + }, { + token: "paren.rparen", + regex: "[\\])}]" + }, { + token: "punctuation.operator", + regex: /[,]/ + }, { + token: "text", + regex: "\\s+" + } + ], + "string": [ + { + token: "constant.language.escape", + regex: /\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|["\\\/bfnrt])/ + }, { + token: "string", + regex: '"|$', + next: "start" + }, { + defaultToken: "string" + } + ], + "comment": [ + { + token: "comment.end", + regex: "\\*\\/", + next: "start" + }, { + defaultToken: "comment" + } + ] + }; +}; +oop.inherits(JsonHighlightRules, TextHighlightRules); +exports.JsonHighlightRules = JsonHighlightRules; + +}); + +ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; +var Range = require("../range").Range; +var MatchingBraceOutdent = function () { }; +(function () { + this.checkOutdent = function (line, input) { + if (!/^\s+$/.test(line)) + return false; + return /^\s*\}/.test(input); + }; + this.autoOutdent = function (doc, row) { + var line = doc.getLine(row); + var match = line.match(/^(\s*\})/); + if (!match) + return 0; + var column = match[1].length; + var openBracePos = doc.findMatchingBracket({ row: row, column: column }); + if (!openBracePos || openBracePos.row == row) + return 0; + var indent = this.$getIndent(doc.getLine(openBracePos.row)); + doc.replace(new Range(row, 0, row, column - 1), indent); + }; + this.$getIndent = function (line) { + return line.match(/^\s*/)[0]; + }; +}).call(MatchingBraceOutdent.prototype); +exports.MatchingBraceOutdent = MatchingBraceOutdent; + +}); + +ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var Range = require("../../range").Range; +var BaseFoldMode = require("./fold_mode").FoldMode; +var FoldMode = exports.FoldMode = function (commentRegex) { + if (commentRegex) { + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); + } +}; +oop.inherits(FoldMode, BaseFoldMode); +(function () { + this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; + this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; + this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; + this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; + this._getFoldWidgetBase = this.getFoldWidget; + this.getFoldWidget = function (session, foldStyle, row) { + var line = session.getLine(row); + if (this.singleLineBlockCommentRe.test(line)) { + if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) + return ""; + } + var fw = this._getFoldWidgetBase(session, foldStyle, row); + if (!fw && this.startRegionRe.test(line)) + return "start"; // lineCommentRegionStart + return fw; + }; + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { + var line = session.getLine(row); + if (this.startRegionRe.test(line)) + return this.getCommentRegionBlock(session, line, row); + var match = line.match(this.foldingStartMarker); + if (match) { + var i = match.index; + if (match[1]) + return this.openingBracketBlock(session, match[1], row, i); + var range = session.getCommentFoldRange(row, i + match[0].length, 1); + if (range && !range.isMultiLine()) { + if (forceMultiline) { + range = this.getSectionRange(session, row); + } + else if (foldStyle != "all") + range = null; + } + return range; + } + if (foldStyle === "markbegin") + return; + var match = line.match(this.foldingStopMarker); + if (match) { + var i = match.index + match[0].length; + if (match[1]) + return this.closingBracketBlock(session, match[1], row, i); + return session.getCommentFoldRange(row, i, -1); + } + }; + this.getSectionRange = function (session, row) { + var line = session.getLine(row); + var startIndent = line.search(/\S/); + var startRow = row; + var startColumn = line.length; + row = row + 1; + var endRow = row; + var maxRow = session.getLength(); + while (++row < maxRow) { + line = session.getLine(row); + var indent = line.search(/\S/); + if (indent === -1) + continue; + if (startIndent > indent) + break; + var subRange = this.getFoldWidgetRange(session, "all", row); + if (subRange) { + if (subRange.start.row <= startRow) { + break; + } + else if (subRange.isMultiLine()) { + row = subRange.end.row; + } + else if (startIndent == indent) { + break; + } + } + endRow = row; + } + return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); + }; + this.getCommentRegionBlock = function (session, line, row) { + var startColumn = line.search(/\s*$/); + var maxRow = session.getLength(); + var startRow = row; + var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; + var depth = 1; + while (++row < maxRow) { + line = session.getLine(row); + var m = re.exec(line); + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; + } + var endRow = row; + if (endRow > startRow) { + return new Range(startRow, startColumn, endRow, line.length); + } + }; +}).call(FoldMode.prototype); + +}); + +ace.define("ace/mode/json",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/json_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/folding/cstyle","ace/worker/worker_client"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var HighlightRules = require("./json_highlight_rules").JsonHighlightRules; +var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; +var CStyleFoldMode = require("./folding/cstyle").FoldMode; +var WorkerClient = require("../worker/worker_client").WorkerClient; +var Mode = function () { + this.HighlightRules = HighlightRules; + this.$outdent = new MatchingBraceOutdent(); + this.$behaviour = this.$defaultBehaviour; + this.foldingRules = new CStyleFoldMode(); +}; +oop.inherits(Mode, TextMode); +(function () { + this.lineCommentStart = "//"; + this.blockComment = { start: "/*", end: "*/" }; + this.getNextLineIndent = function (state, line, tab) { + var indent = this.$getIndent(line); + if (state == "start") { + var match = line.match(/^.*[\{\(\[]\s*$/); + if (match) { + indent += tab; + } + } + return indent; + }; + this.checkOutdent = function (state, line, input) { + return this.$outdent.checkOutdent(line, input); + }; + this.autoOutdent = function (state, doc, row) { + this.$outdent.autoOutdent(doc, row); + }; + this.createWorker = function (session) { + var worker = new WorkerClient(["ace"], "ace/mode/json_worker", "JsonWorker"); + worker.attachToDocument(session.getDocument()); + worker.on("annotate", function (e) { + session.setAnnotations(e.data); + }); + worker.on("terminate", function () { + session.clearAnnotations(); + }); + return worker; + }; + this.$id = "ace/mode/json"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); (function() { + ace.require(["ace/mode/json"], function(m) { + if ( true && module) { + module.exports = m; + } + }); + })(); + + +/***/ }), + +/***/ 711: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +/* module decorator */ module = __webpack_require__.nmd(module); +ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var DocCommentHighlightRules = function () { + this.$rules = { + "start": [ + { + token: "comment.doc.tag", + regex: "@\\w+(?=\\s|$)" + }, DocCommentHighlightRules.getTagRule(), { + defaultToken: "comment.doc", + caseInsensitive: true + } + ] + }; +}; +oop.inherits(DocCommentHighlightRules, TextHighlightRules); +DocCommentHighlightRules.getTagRule = function (start) { + return { + token: "comment.doc.tag.storage.type", + regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b" + }; +}; +DocCommentHighlightRules.getStartRule = function (start) { + return { + token: "comment.doc", + regex: "\\/\\*(?=\\*)", + next: start + }; +}; +DocCommentHighlightRules.getEndRule = function (start) { + return { + token: "comment.doc", + regex: "\\*\\/", + next: start + }; +}; +exports.DocCommentHighlightRules = DocCommentHighlightRules; + +}); + +ace.define("ace/mode/jsx_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module){var oop = require("../lib/oop"); +var lang = require("../lib/lang"); +var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var JsxHighlightRules = function () { + var keywords = lang.arrayToMap(("break|do|instanceof|typeof|case|else|new|var|catch|finally|return|void|continue|for|switch|default|while|function|this|" + + "if|throw|" + + "delete|in|try|" + + "class|extends|super|import|from|into|implements|interface|static|mixin|override|abstract|final|" + + "number|int|string|boolean|variant|" + + "log|assert").split("|")); + var buildinConstants = lang.arrayToMap(("null|true|false|NaN|Infinity|__FILE__|__LINE__|undefined").split("|")); + var reserved = lang.arrayToMap(("debugger|with|" + + "const|export|" + + "let|private|public|yield|protected|" + + "extern|native|as|operator|__fake__|__readonly__").split("|")); + var identifierRe = "[a-zA-Z_][a-zA-Z0-9_]*\\b"; + this.$rules = { + "start": [ + { + token: "comment", + regex: "\\/\\/.*$" + }, + DocCommentHighlightRules.getStartRule("doc-start"), + { + token: "comment", + regex: "\\/\\*", + next: "comment" + }, { + token: "string.regexp", + regex: "[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/]\\w*\\s*(?=[).,;]|$)" + }, { + token: "string", + regex: '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' + }, { + token: "string", + regex: "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" + }, { + token: "constant.numeric", + regex: "0[xX][0-9a-fA-F]+\\b" + }, { + token: "constant.numeric", + regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" + }, { + token: "constant.language.boolean", + regex: "(?:true|false)\\b" + }, { + token: [ + "storage.type", + "text", + "entity.name.function" + ], + regex: "(function)(\\s+)(" + identifierRe + ")" + }, { + token: function (value) { + if (value == "this") + return "variable.language"; + else if (value == "function") + return "storage.type"; + else if (keywords.hasOwnProperty(value) || reserved.hasOwnProperty(value)) + return "keyword"; + else if (buildinConstants.hasOwnProperty(value)) + return "constant.language"; + else if (/^_?[A-Z][a-zA-Z0-9_]*$/.test(value)) + return "language.support.class"; + else + return "identifier"; + }, + regex: identifierRe + }, { + token: "keyword.operator", + regex: "!|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|==|=|!=|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)" + }, { + token: "punctuation.operator", + regex: "\\?|\\:|\\,|\\;|\\." + }, { + token: "paren.lparen", + regex: "[[({<]" + }, { + token: "paren.rparen", + regex: "[\\])}>]" + }, { + token: "text", + regex: "\\s+" + } + ], + "comment": [ + { + token: "comment", + regex: "\\*\\/", + next: "start" + }, { + defaultToken: "comment" + } + ] + }; + this.embedRules(DocCommentHighlightRules, "doc-", [DocCommentHighlightRules.getEndRule("start")]); +}; +oop.inherits(JsxHighlightRules, TextHighlightRules); +exports.JsxHighlightRules = JsxHighlightRules; + +}); + +ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; +var Range = require("../range").Range; +var MatchingBraceOutdent = function () { }; +(function () { + this.checkOutdent = function (line, input) { + if (!/^\s+$/.test(line)) + return false; + return /^\s*\}/.test(input); + }; + this.autoOutdent = function (doc, row) { + var line = doc.getLine(row); + var match = line.match(/^(\s*\})/); + if (!match) + return 0; + var column = match[1].length; + var openBracePos = doc.findMatchingBracket({ row: row, column: column }); + if (!openBracePos || openBracePos.row == row) + return 0; + var indent = this.$getIndent(doc.getLine(openBracePos.row)); + doc.replace(new Range(row, 0, row, column - 1), indent); + }; + this.$getIndent = function (line) { + return line.match(/^\s*/)[0]; + }; +}).call(MatchingBraceOutdent.prototype); +exports.MatchingBraceOutdent = MatchingBraceOutdent; + +}); + +ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var Range = require("../../range").Range; +var BaseFoldMode = require("./fold_mode").FoldMode; +var FoldMode = exports.FoldMode = function (commentRegex) { + if (commentRegex) { + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); + } +}; +oop.inherits(FoldMode, BaseFoldMode); +(function () { + this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; + this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; + this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; + this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; + this._getFoldWidgetBase = this.getFoldWidget; + this.getFoldWidget = function (session, foldStyle, row) { + var line = session.getLine(row); + if (this.singleLineBlockCommentRe.test(line)) { + if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) + return ""; + } + var fw = this._getFoldWidgetBase(session, foldStyle, row); + if (!fw && this.startRegionRe.test(line)) + return "start"; // lineCommentRegionStart + return fw; + }; + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { + var line = session.getLine(row); + if (this.startRegionRe.test(line)) + return this.getCommentRegionBlock(session, line, row); + var match = line.match(this.foldingStartMarker); + if (match) { + var i = match.index; + if (match[1]) + return this.openingBracketBlock(session, match[1], row, i); + var range = session.getCommentFoldRange(row, i + match[0].length, 1); + if (range && !range.isMultiLine()) { + if (forceMultiline) { + range = this.getSectionRange(session, row); + } + else if (foldStyle != "all") + range = null; + } + return range; + } + if (foldStyle === "markbegin") + return; + var match = line.match(this.foldingStopMarker); + if (match) { + var i = match.index + match[0].length; + if (match[1]) + return this.closingBracketBlock(session, match[1], row, i); + return session.getCommentFoldRange(row, i, -1); + } + }; + this.getSectionRange = function (session, row) { + var line = session.getLine(row); + var startIndent = line.search(/\S/); + var startRow = row; + var startColumn = line.length; + row = row + 1; + var endRow = row; + var maxRow = session.getLength(); + while (++row < maxRow) { + line = session.getLine(row); + var indent = line.search(/\S/); + if (indent === -1) + continue; + if (startIndent > indent) + break; + var subRange = this.getFoldWidgetRange(session, "all", row); + if (subRange) { + if (subRange.start.row <= startRow) { + break; + } + else if (subRange.isMultiLine()) { + row = subRange.end.row; + } + else if (startIndent == indent) { + break; + } + } + endRow = row; + } + return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); + }; + this.getCommentRegionBlock = function (session, line, row) { + var startColumn = line.search(/\s*$/); + var maxRow = session.getLength(); + var startRow = row; + var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; + var depth = 1; + while (++row < maxRow) { + line = session.getLine(row); + var m = re.exec(line); + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; + } + var endRow = row; + if (endRow > startRow) { + return new Range(startRow, startColumn, endRow, line.length); + } + }; +}).call(FoldMode.prototype); + +}); + +ace.define("ace/mode/jsx",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/jsx_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var JsxHighlightRules = require("./jsx_highlight_rules").JsxHighlightRules; +var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; +var CStyleFoldMode = require("./folding/cstyle").FoldMode; +function Mode() { + this.HighlightRules = JsxHighlightRules; + this.$outdent = new MatchingBraceOutdent(); + this.$behaviour = this.$defaultBehaviour; + this.foldingRules = new CStyleFoldMode(); +} +oop.inherits(Mode, TextMode); +(function () { + this.lineCommentStart = "//"; + this.blockComment = { start: "/*", end: "*/" }; + this.getNextLineIndent = function (state, line, tab) { + var indent = this.$getIndent(line); + var tokenizedLine = this.getTokenizer().getLineTokens(line, state); + var tokens = tokenizedLine.tokens; + if (tokens.length && tokens[tokens.length - 1].type == "comment") { + return indent; + } + if (state == "start") { + var match = line.match(/^.*[\{\(\[]\s*$/); + if (match) { + indent += tab; + } + } + return indent; + }; + this.checkOutdent = function (state, line, input) { + return this.$outdent.checkOutdent(line, input); + }; + this.autoOutdent = function (state, doc, row) { + this.$outdent.autoOutdent(doc, row); + }; + this.$id = "ace/mode/jsx"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); (function() { + ace.require(["ace/mode/jsx"], function(m) { + if ( true && module) { + module.exports = m; + } + }); + })(); + + +/***/ }), + +/***/ 7: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +/* module decorator */ module = __webpack_require__.nmd(module); +ace.define("ace/mode/python_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){/* + * TODO: python delimiters + */ +"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var PythonHighlightRules = function () { + var keywords = ("and|as|assert|break|class|continue|def|del|elif|else|except|exec|" + + "finally|for|from|global|if|import|in|is|lambda|not|or|pass|print|" + + "raise|return|try|while|with|yield|async|await|nonlocal"); + var builtinConstants = ("True|False|None|NotImplemented|Ellipsis|__debug__"); + var builtinFunctions = ("abs|divmod|input|open|staticmethod|all|enumerate|int|ord|str|any|" + + "eval|isinstance|pow|sum|basestring|execfile|issubclass|print|super|" + + "binfile|bin|iter|property|tuple|bool|filter|len|range|type|bytearray|" + + "float|list|raw_input|unichr|callable|format|locals|reduce|unicode|" + + "chr|frozenset|long|reload|vars|classmethod|getattr|map|repr|xrange|" + + "cmp|globals|max|reversed|zip|compile|hasattr|memoryview|round|" + + "__import__|complex|hash|min|apply|delattr|help|next|setattr|set|" + + "buffer|dict|hex|object|slice|coerce|dir|id|oct|sorted|intern|" + + "ascii|breakpoint|bytes"); + var keywordMapper = this.createKeywordMapper({ + "invalid.deprecated": "debugger", + "support.function": builtinFunctions, + "variable.language": "self|cls", + "constant.language": builtinConstants, + "keyword": keywords + }, "identifier"); + var strPre = "[uU]?"; + var strRawPre = "[rR]"; + var strFormatPre = "[fF]"; + var strRawFormatPre = "(?:[rR][fF]|[fF][rR])"; + var decimalInteger = "(?:(?:[1-9]\\d*)|(?:0))"; + var octInteger = "(?:0[oO]?[0-7]+)"; + var hexInteger = "(?:0[xX][\\dA-Fa-f]+)"; + var binInteger = "(?:0[bB][01]+)"; + var integer = "(?:" + decimalInteger + "|" + octInteger + "|" + hexInteger + "|" + binInteger + ")"; + var exponent = "(?:[eE][+-]?\\d+)"; + var fraction = "(?:\\.\\d+)"; + var intPart = "(?:\\d+)"; + var pointFloat = "(?:(?:" + intPart + "?" + fraction + ")|(?:" + intPart + "\\.))"; + var exponentFloat = "(?:(?:" + pointFloat + "|" + intPart + ")" + exponent + ")"; + var floatNumber = "(?:" + exponentFloat + "|" + pointFloat + ")"; + var stringEscape = "\\\\(x[0-9A-Fa-f]{2}|[0-7]{3}|[\\\\abfnrtv'\"]|U[0-9A-Fa-f]{8}|u[0-9A-Fa-f]{4})"; + this.$rules = { + "start": [{ + token: "comment", + regex: "#.*$" + }, { + token: "string", + regex: strPre + '"{3}', + next: "qqstring3" + }, { + token: "string", + regex: strPre + '"(?=.)', + next: "qqstring" + }, { + token: "string", + regex: strPre + "'{3}", + next: "qstring3" + }, { + token: "string", + regex: strPre + "'(?=.)", + next: "qstring" + }, { + token: "string", + regex: strRawPre + '"{3}', + next: "rawqqstring3" + }, { + token: "string", + regex: strRawPre + '"(?=.)', + next: "rawqqstring" + }, { + token: "string", + regex: strRawPre + "'{3}", + next: "rawqstring3" + }, { + token: "string", + regex: strRawPre + "'(?=.)", + next: "rawqstring" + }, { + token: "string", + regex: strFormatPre + '"{3}', + next: "fqqstring3" + }, { + token: "string", + regex: strFormatPre + '"(?=.)', + next: "fqqstring" + }, { + token: "string", + regex: strFormatPre + "'{3}", + next: "fqstring3" + }, { + token: "string", + regex: strFormatPre + "'(?=.)", + next: "fqstring" + }, { + token: "string", + regex: strRawFormatPre + '"{3}', + next: "rfqqstring3" + }, { + token: "string", + regex: strRawFormatPre + '"(?=.)', + next: "rfqqstring" + }, { + token: "string", + regex: strRawFormatPre + "'{3}", + next: "rfqstring3" + }, { + token: "string", + regex: strRawFormatPre + "'(?=.)", + next: "rfqstring" + }, { + token: "keyword.operator", + regex: "\\+|\\-|\\*|\\*\\*|\\/|\\/\\/|%|@|<<|>>|&|\\||\\^|~|<|>|<=|=>|==|!=|<>|=" + }, { + token: "punctuation", + regex: ",|:|;|\\->|\\+=|\\-=|\\*=|\\/=|\\/\\/=|%=|@=|&=|\\|=|^=|>>=|<<=|\\*\\*=" + }, { + token: "paren.lparen", + regex: "[\\[\\(\\{]" + }, { + token: "paren.rparen", + regex: "[\\]\\)\\}]" + }, { + token: ["keyword", "text", "entity.name.function"], + regex: "(def|class)(\\s+)([\\u00BF-\\u1FFF\\u2C00-\\uD7FF\\w]+)" + }, { + token: "text", + regex: "\\s+" + }, { + include: "constants" + }], + "qqstring3": [{ + token: "constant.language.escape", + regex: stringEscape + }, { + token: "string", + regex: '"{3}', + next: "start" + }, { + defaultToken: "string" + }], + "qstring3": [{ + token: "constant.language.escape", + regex: stringEscape + }, { + token: "string", + regex: "'{3}", + next: "start" + }, { + defaultToken: "string" + }], + "qqstring": [{ + token: "constant.language.escape", + regex: stringEscape + }, { + token: "string", + regex: "\\\\$", + next: "qqstring" + }, { + token: "string", + regex: '"|$', + next: "start" + }, { + defaultToken: "string" + }], + "qstring": [{ + token: "constant.language.escape", + regex: stringEscape + }, { + token: "string", + regex: "\\\\$", + next: "qstring" + }, { + token: "string", + regex: "'|$", + next: "start" + }, { + defaultToken: "string" + }], + "rawqqstring3": [{ + token: "string", + regex: '"{3}', + next: "start" + }, { + defaultToken: "string" + }], + "rawqstring3": [{ + token: "string", + regex: "'{3}", + next: "start" + }, { + defaultToken: "string" + }], + "rawqqstring": [{ + token: "string", + regex: "\\\\$", + next: "rawqqstring" + }, { + token: "string", + regex: '"|$', + next: "start" + }, { + defaultToken: "string" + }], + "rawqstring": [{ + token: "string", + regex: "\\\\$", + next: "rawqstring" + }, { + token: "string", + regex: "'|$", + next: "start" + }, { + defaultToken: "string" + }], + "fqqstring3": [{ + token: "constant.language.escape", + regex: stringEscape + }, { + token: "string", + regex: '"{3}', + next: "start" + }, { + token: "paren.lparen", + regex: "{", + push: "fqstringParRules" + }, { + defaultToken: "string" + }], + "fqstring3": [{ + token: "constant.language.escape", + regex: stringEscape + }, { + token: "string", + regex: "'{3}", + next: "start" + }, { + token: "paren.lparen", + regex: "{", + push: "fqstringParRules" + }, { + defaultToken: "string" + }], + "fqqstring": [{ + token: "constant.language.escape", + regex: stringEscape + }, { + token: "string", + regex: "\\\\$", + next: "fqqstring" + }, { + token: "string", + regex: '"|$', + next: "start" + }, { + token: "paren.lparen", + regex: "{", + push: "fqstringParRules" + }, { + defaultToken: "string" + }], + "fqstring": [{ + token: "constant.language.escape", + regex: stringEscape + }, { + token: "string", + regex: "'|$", + next: "start" + }, { + token: "paren.lparen", + regex: "{", + push: "fqstringParRules" + }, { + defaultToken: "string" + }], + "rfqqstring3": [{ + token: "string", + regex: '"{3}', + next: "start" + }, { + token: "paren.lparen", + regex: "{", + push: "fqstringParRules" + }, { + defaultToken: "string" + }], + "rfqstring3": [{ + token: "string", + regex: "'{3}", + next: "start" + }, { + token: "paren.lparen", + regex: "{", + push: "fqstringParRules" + }, { + defaultToken: "string" + }], + "rfqqstring": [{ + token: "string", + regex: "\\\\$", + next: "rfqqstring" + }, { + token: "string", + regex: '"|$', + next: "start" + }, { + token: "paren.lparen", + regex: "{", + push: "fqstringParRules" + }, { + defaultToken: "string" + }], + "rfqstring": [{ + token: "string", + regex: "'|$", + next: "start" + }, { + token: "paren.lparen", + regex: "{", + push: "fqstringParRules" + }, { + defaultToken: "string" + }], + "fqstringParRules": [{ + token: "paren.lparen", + regex: "[\\[\\(]" + }, { + token: "paren.rparen", + regex: "[\\]\\)]" + }, { + token: "string", + regex: "\\s+" + }, { + token: "string", + regex: "'[^']*'" + }, { + token: "string", + regex: '"[^"]*"' + }, { + token: "function.support", + regex: "(!s|!r|!a)" + }, { + include: "constants" + }, { + token: 'paren.rparen', + regex: "}", + next: 'pop' + }, { + token: 'paren.lparen', + regex: "{", + push: "fqstringParRules" + }], + "constants": [{ + token: "constant.numeric", + regex: "(?:" + floatNumber + "|\\d+)[jJ]\\b" + }, { + token: "constant.numeric", + regex: floatNumber + }, { + token: "constant.numeric", + regex: integer + "[lL]\\b" + }, { + token: "constant.numeric", + regex: integer + "\\b" + }, { + token: ["punctuation", "function.support"], + regex: "(\\.)([a-zA-Z_]+)\\b" + }, { + token: keywordMapper, + regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" + }] + }; + this.normalizeRules(); +}; +oop.inherits(PythonHighlightRules, TextHighlightRules); +exports.PythonHighlightRules = PythonHighlightRules; + +}); + +ace.define("ace/mode/folding/pythonic",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var BaseFoldMode = require("./fold_mode").FoldMode; +var FoldMode = exports.FoldMode = function (markers) { + this.foldingStartMarker = new RegExp("([\\[{])(?:\\s*)$|(" + markers + ")(?:\\s*)(?:#.*)?$"); +}; +oop.inherits(FoldMode, BaseFoldMode); +(function () { + this.getFoldWidgetRange = function (session, foldStyle, row) { + var line = session.getLine(row); + var match = line.match(this.foldingStartMarker); + if (match) { + if (match[1]) + return this.openingBracketBlock(session, match[1], row, match.index); + if (match[2]) + return this.indentationBlock(session, row, match.index + match[2].length); + return this.indentationBlock(session, row); + } + }; +}).call(FoldMode.prototype); + +}); + +ace.define("ace/mode/python",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/python_highlight_rules","ace/mode/folding/pythonic","ace/range"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var PythonHighlightRules = require("./python_highlight_rules").PythonHighlightRules; +var PythonFoldMode = require("./folding/pythonic").FoldMode; +var Range = require("../range").Range; +var Mode = function () { + this.HighlightRules = PythonHighlightRules; + this.foldingRules = new PythonFoldMode("\\:"); + this.$behaviour = this.$defaultBehaviour; +}; +oop.inherits(Mode, TextMode); +(function () { + this.lineCommentStart = "#"; + this.$pairQuotesAfter = { + "'": /[ruf]/i, + '"': /[ruf]/i + }; + this.getNextLineIndent = function (state, line, tab) { + var indent = this.$getIndent(line); + var tokenizedLine = this.getTokenizer().getLineTokens(line, state); + var tokens = tokenizedLine.tokens; + if (tokens.length && tokens[tokens.length - 1].type == "comment") { + return indent; + } + if (state == "start") { + var match = line.match(/^.*[\{\(\[:]\s*$/); + if (match) { + indent += tab; + } + } + return indent; + }; + var outdents = { + "pass": 1, + "return": 1, + "raise": 1, + "break": 1, + "continue": 1 + }; + this.checkOutdent = function (state, line, input) { + if (input !== "\r\n" && input !== "\r" && input !== "\n") + return false; + var tokens = this.getTokenizer().getLineTokens(line.trim(), state).tokens; + if (!tokens) + return false; + do { + var last = tokens.pop(); + } while (last && (last.type == "comment" || (last.type == "text" && last.value.match(/^\s+$/)))); + if (!last) + return false; + return (last.type == "keyword" && outdents[last.value]); + }; + this.autoOutdent = function (state, doc, row) { + row += 1; + var indent = this.$getIndent(doc.getLine(row)); + var tab = doc.getTabString(); + if (indent.slice(-tab.length) == tab) + doc.remove(new Range(row, indent.length - tab.length, row, indent.length)); + }; + this.$id = "ace/mode/python"; + this.snippetFileId = "ace/snippets/python"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); (function() { + ace.require(["ace/mode/python"], function(m) { + if ( true && module) { + module.exports = m; + } + }); + })(); + + +/***/ }), + +/***/ 202: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +/* module decorator */ module = __webpack_require__.nmd(module); +ace.define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var XmlHighlightRules = function (normalize) { + var tagRegex = "[_:a-zA-Z\xc0-\uffff][-_:.a-zA-Z0-9\xc0-\uffff]*"; + this.$rules = { + start: [ + { token: "string.cdata.xml", regex: "<\\!\\[CDATA\\[", next: "cdata" }, + { + token: ["punctuation.instruction.xml", "keyword.instruction.xml"], + regex: "(<\\?)(" + tagRegex + ")", next: "processing_instruction" + }, + { token: "comment.start.xml", regex: "<\\!--", next: "comment" }, + { + token: ["xml-pe.doctype.xml", "xml-pe.doctype.xml"], + regex: "(<\\!)(DOCTYPE)(?=[\\s])", next: "doctype", caseInsensitive: true + }, + { include: "tag" }, + { token: "text.end-tag-open.xml", regex: "", + next: "start" + }], + doctype: [ + { include: "whitespace" }, + { include: "string" }, + { token: "xml-pe.doctype.xml", regex: ">", next: "start" }, + { token: "xml-pe.xml", regex: "[-_a-zA-Z0-9:]+" }, + { token: "punctuation.int-subset", regex: "\\[", push: "int_subset" } + ], + int_subset: [{ + token: "text.xml", + regex: "\\s+" + }, { + token: "punctuation.int-subset.xml", + regex: "]", + next: "pop" + }, { + token: ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"], + regex: "(<\\!)(" + tagRegex + ")", + push: [{ + token: "text", + regex: "\\s+" + }, + { + token: "punctuation.markup-decl.xml", + regex: ">", + next: "pop" + }, + { include: "string" }] + }], + cdata: [ + { token: "string.cdata.xml", regex: "\\]\\]>", next: "start" }, + { token: "text.xml", regex: "\\s+" }, + { token: "text.xml", regex: "(?:[^\\]]|\\](?!\\]>))+" } + ], + comment: [ + { token: "comment.end.xml", regex: "-->", next: "start" }, + { defaultToken: "comment.xml" } + ], + reference: [{ + token: "constant.language.escape.reference.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }], + attr_reference: [{ + token: "constant.language.escape.reference.attribute-value.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }], + tag: [{ + token: ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"], + regex: "(?:(<)|(", next: "start" } + ] + }], + tag_whitespace: [ + { token: "text.tag-whitespace.xml", regex: "\\s+" } + ], + whitespace: [ + { token: "text.whitespace.xml", regex: "\\s+" } + ], + string: [{ + token: "string.xml", + regex: "'", + push: [ + { token: "string.xml", regex: "'", next: "pop" }, + { defaultToken: "string.xml" } + ] + }, { + token: "string.xml", + regex: '"', + push: [ + { token: "string.xml", regex: '"', next: "pop" }, + { defaultToken: "string.xml" } + ] + }], + attributes: [{ + token: "entity.other.attribute-name.xml", + regex: tagRegex + }, { + token: "keyword.operator.attribute-equals.xml", + regex: "=" + }, { + include: "tag_whitespace" + }, { + include: "attribute_value" + }], + attribute_value: [{ + token: "string.attribute-value.xml", + regex: "'", + push: [ + { token: "string.attribute-value.xml", regex: "'", next: "pop" }, + { include: "attr_reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, { + token: "string.attribute-value.xml", + regex: '"', + push: [ + { token: "string.attribute-value.xml", regex: '"', next: "pop" }, + { include: "attr_reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }] + }; + if (this.constructor === XmlHighlightRules) + this.normalizeRules(); +}; +(function () { + this.embedTagRules = function (HighlightRules, prefix, tag) { + this.$rules.tag.unshift({ + token: ["meta.tag.punctuation.tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], + regex: "(<)(" + tag + "(?=\\s|>|$))", + next: [ + { include: "attributes" }, + { token: "meta.tag.punctuation.tag-close.xml", regex: "/?>", next: prefix + "start" } + ] + }); + this.$rules[tag + "-end"] = [ + { include: "attributes" }, + { token: "meta.tag.punctuation.tag-close.xml", regex: "/?>", next: "start", + onMatch: function (value, currentState, stack) { + stack.splice(0); + return this.token; + } } + ]; + this.embedRules(HighlightRules, prefix, [{ + token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], + regex: "(|$))", + next: tag + "-end" + }, { + token: "string.cdata.xml", + regex: "<\\!\\[CDATA\\[" + }, { + token: "string.cdata.xml", + regex: "\\]\\]>" + }]); + }; +}).call(TextHighlightRules.prototype); +oop.inherits(XmlHighlightRules, TextHighlightRules); +exports.XmlHighlightRules = XmlHighlightRules; + +}); + +ace.define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var Behaviour = require("../behaviour").Behaviour; +var TokenIterator = require("../../token_iterator").TokenIterator; +var lang = require("../../lib/lang"); +function is(token, type) { + return token && token.type.lastIndexOf(type + ".xml") > -1; +} +var XmlBehaviour = function () { + this.add("string_dquotes", "insertion", function (state, action, editor, session, text) { + if (text == '"' || text == "'") { + var quote = text; + var selected = session.doc.getTextRange(editor.getSelectionRange()); + if (selected !== "" && selected !== "'" && selected != '"' && editor.getWrapBehavioursEnabled()) { + return { + text: quote + selected + quote, + selection: false + }; + } + var cursor = editor.getCursorPosition(); + var line = session.doc.getLine(cursor.row); + var rightChar = line.substring(cursor.column, cursor.column + 1); + var iterator = new TokenIterator(session, cursor.row, cursor.column); + var token = iterator.getCurrentToken(); + if (rightChar == quote && (is(token, "attribute-value") || is(token, "string"))) { + return { + text: "", + selection: [1, 1] + }; + } + if (!token) + token = iterator.stepBackward(); + if (!token) + return; + while (is(token, "tag-whitespace") || is(token, "whitespace")) { + token = iterator.stepBackward(); + } + var rightSpace = !rightChar || rightChar.match(/\s/); + if (is(token, "attribute-equals") && (rightSpace || rightChar == '>') || (is(token, "decl-attribute-equals") && (rightSpace || rightChar == '?'))) { + return { + text: quote + quote, + selection: [1, 1] + }; + } + } + }); + this.add("string_dquotes", "deletion", function (state, action, editor, session, range) { + var selected = session.doc.getTextRange(range); + if (!range.isMultiLine() && (selected == '"' || selected == "'")) { + var line = session.doc.getLine(range.start.row); + var rightChar = line.substring(range.start.column + 1, range.start.column + 2); + if (rightChar == selected) { + range.end.column++; + return range; + } + } + }); + this.add("autoclosing", "insertion", function (state, action, editor, session, text) { + if (text == '>') { + var position = editor.getSelectionRange().start; + var iterator = new TokenIterator(session, position.row, position.column); + var token = iterator.getCurrentToken() || iterator.stepBackward(); + if (!token || !(is(token, "tag-name") || is(token, "tag-whitespace") || is(token, "attribute-name") || is(token, "attribute-equals") || is(token, "attribute-value"))) + return; + if (is(token, "reference.attribute-value")) + return; + if (is(token, "attribute-value")) { + var tokenEndColumn = iterator.getCurrentTokenColumn() + token.value.length; + if (position.column < tokenEndColumn) + return; + if (position.column == tokenEndColumn) { + var nextToken = iterator.stepForward(); + if (nextToken && is(nextToken, "attribute-value")) + return; + iterator.stepBackward(); + } + } + if (/^\s*>/.test(session.getLine(position.row).slice(position.column))) + return; + while (!is(token, "tag-name")) { + token = iterator.stepBackward(); + if (token.value == "<") { + token = iterator.stepForward(); + break; + } + } + var tokenRow = iterator.getCurrentTokenRow(); + var tokenColumn = iterator.getCurrentTokenColumn(); + if (is(iterator.stepBackward(), "end-tag-open")) + return; + var element = token.value; + if (tokenRow == position.row) + element = element.substring(0, position.column - tokenColumn); + if (this.voidElements.hasOwnProperty(element.toLowerCase())) + return; + return { + text: ">" + "", + selection: [1, 1] + }; + } + }); + this.add("autoindent", "insertion", function (state, action, editor, session, text) { + if (text == "\n") { + var cursor = editor.getCursorPosition(); + var line = session.getLine(cursor.row); + var iterator = new TokenIterator(session, cursor.row, cursor.column); + var token = iterator.getCurrentToken(); + if (token && token.type.indexOf("tag-close") !== -1) { + if (token.value == "/>") + return; + while (token && token.type.indexOf("tag-name") === -1) { + token = iterator.stepBackward(); + } + if (!token) { + return; + } + var tag = token.value; + var row = iterator.getCurrentTokenRow(); + token = iterator.stepBackward(); + if (!token || token.type.indexOf("end-tag") !== -1) { + return; + } + if (this.voidElements && !this.voidElements[tag]) { + var nextToken = session.getTokenAt(cursor.row, cursor.column + 1); + var line = session.getLine(row); + var nextIndent = this.$getIndent(line); + var indent = nextIndent + session.getTabString(); + if (nextToken && nextToken.value === " -1; +} +(function () { + this.getFoldWidget = function (session, foldStyle, row) { + var tag = this._getFirstTagInLine(session, row); + if (!tag) + return this.getCommentFoldWidget(session, row); + if (tag.closing || (!tag.tagName && tag.selfClosing)) + return foldStyle === "markbeginend" ? "end" : ""; + if (!tag.tagName || tag.selfClosing || this.voidElements.hasOwnProperty(tag.tagName.toLowerCase())) + return ""; + if (this._findEndTagInLine(session, row, tag.tagName, tag.end.column)) + return ""; + return "start"; + }; + this.getCommentFoldWidget = function (session, row) { + if (/comment/.test(session.getState(row)) && /'; + break; + } + } + return tag; + } + else if (is(token, "tag-close")) { + tag.selfClosing = token.value == '/>'; + return tag; + } + tag.start.column += token.value.length; + } + return null; + }; + this._findEndTagInLine = function (session, row, tagName, startColumn) { + var tokens = session.getTokens(row); + var column = 0; + for (var i = 0; i < tokens.length; i++) { + var token = tokens[i]; + column += token.value.length; + if (column < startColumn) + continue; + if (is(token, "end-tag-open")) { + token = tokens[i + 1]; + if (token && token.value == tagName) + return true; + } + } + return false; + }; + this.getFoldWidgetRange = function (session, foldStyle, row) { + var tags = session.getMatchingTags({ row: row, column: 0 }); + if (tags) { + return new Range(tags.openTag.end.row, tags.openTag.end.column, tags.closeTag.start.row, tags.closeTag.start.column); + } + else { + return this.getCommentFoldWidget(session, row) + && session.getCommentFoldRange(row, session.getLine(row).length); + } + }; +}).call(FoldMode.prototype); + +}); + +ace.define("ace/mode/xml",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/xml_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/xml","ace/worker/worker_client"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var lang = require("../lib/lang"); +var TextMode = require("./text").Mode; +var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules; +var XmlBehaviour = require("./behaviour/xml").XmlBehaviour; +var XmlFoldMode = require("./folding/xml").FoldMode; +var WorkerClient = require("../worker/worker_client").WorkerClient; +var Mode = function () { + this.HighlightRules = XmlHighlightRules; + this.$behaviour = new XmlBehaviour(); + this.foldingRules = new XmlFoldMode(); +}; +oop.inherits(Mode, TextMode); +(function () { + this.voidElements = lang.arrayToMap([]); + this.blockComment = { start: "" }; + this.createWorker = function (session) { + var worker = new WorkerClient(["ace"], "ace/mode/xml_worker", "Worker"); + worker.attachToDocument(session.getDocument()); + worker.on("error", function (e) { + session.setAnnotations(e.data); + }); + worker.on("terminate", function () { + session.clearAnnotations(); + }); + return worker; + }; + this.$id = "ace/mode/xml"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); (function() { + ace.require(["ace/mode/xml"], function(m) { + if ( true && module) { + module.exports = m; + } + }); + })(); + + +/***/ }), + +/***/ 203: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +/* module decorator */ module = __webpack_require__.nmd(module); +ace.define("ace/theme/github-css",["require","exports","module"], function(require, exports, module){module.exports = "/* CSS style content from github's default pygments highlighter template.\n Cursor and selection styles from textmate.css. */\n.ace-github .ace_gutter {\n background: #e8e8e8;\n color: #AAA;\n}\n\n.ace-github {\n background: #fff;\n color: #000;\n}\n\n.ace-github .ace_keyword {\n font-weight: bold;\n}\n\n.ace-github .ace_string {\n color: #D14;\n}\n\n.ace-github .ace_variable.ace_class {\n color: teal;\n}\n\n.ace-github .ace_constant.ace_numeric {\n color: #099;\n}\n\n.ace-github .ace_constant.ace_buildin {\n color: #0086B3;\n}\n\n.ace-github .ace_support.ace_function {\n color: #0086B3;\n}\n\n.ace-github .ace_comment {\n color: #998;\n font-style: italic;\n}\n\n.ace-github .ace_variable.ace_language {\n color: #0086B3;\n}\n\n.ace-github .ace_paren {\n font-weight: bold;\n}\n\n.ace-github .ace_boolean {\n font-weight: bold;\n}\n\n.ace-github .ace_string.ace_regexp {\n color: #009926;\n font-weight: normal;\n}\n\n.ace-github .ace_variable.ace_instance {\n color: teal;\n}\n\n.ace-github .ace_constant.ace_language {\n font-weight: bold;\n}\n\n.ace-github .ace_cursor {\n color: black;\n}\n\n.ace-github.ace_focus .ace_marker-layer .ace_active-line {\n background: rgb(255, 255, 204);\n}\n.ace-github .ace_marker-layer .ace_active-line {\n background: rgb(245, 245, 245);\n}\n\n.ace-github .ace_marker-layer .ace_selection {\n background: rgb(181, 213, 255);\n}\n\n.ace-github.ace_multiselect .ace_selection.ace_start {\n box-shadow: 0 0 3px 0px white;\n}\n/* bold keywords cause cursor issues for some fonts */\n/* this disables bold style for editor and keeps for static highlighter */\n.ace-github.ace_nobold .ace_line > span {\n font-weight: normal !important;\n}\n\n.ace-github .ace_marker-layer .ace_step {\n background: rgb(252, 255, 0);\n}\n\n.ace-github .ace_marker-layer .ace_stack {\n background: rgb(164, 229, 101);\n}\n\n.ace-github .ace_marker-layer .ace_bracket {\n margin: -1px 0 0 -1px;\n border: 1px solid rgb(192, 192, 192);\n}\n\n.ace-github .ace_gutter-active-line {\n background-color : rgba(0, 0, 0, 0.07);\n}\n\n.ace-github .ace_marker-layer .ace_selected-word {\n background: rgb(250, 250, 255);\n border: 1px solid rgb(200, 200, 250);\n}\n\n.ace-github .ace_invisible {\n color: #BFBFBF\n}\n\n.ace-github .ace_print-margin {\n width: 1px;\n background: #e8e8e8;\n}\n\n.ace-github .ace_indent-guide {\n background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==\") right repeat-y;\n}\n\n.ace-github .ace_indent-guide-active {\n background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAAZSURBVHjaYvj///9/hivKyv8BAAAA//8DACLqBhbvk+/eAAAAAElFTkSuQmCC\") right repeat-y;\n}\n"; + +}); + +ace.define("ace/theme/github",["require","exports","module","ace/theme/github-css","ace/lib/dom"], function(require, exports, module){exports.isDark = false; +exports.cssClass = "ace-github"; +exports.cssText = require("./github-css"); +var dom = require("../lib/dom"); +dom.importCssString(exports.cssText, exports.cssClass, false); + +}); (function() { + ace.require(["ace/theme/github"], function(m) { + if ( true && module) { + module.exports = m; + } + }); + })(); + + +/***/ }), + +/***/ 821: +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ Z: () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(537); +/* harmony import */ var _css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(645); +/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); +// Imports + + +var ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); +// Module +___CSS_LOADER_EXPORT___.push([module.id, `.flatpickr-calendar{background:transparent;opacity:0;display:none;text-align:center;visibility:hidden;padding:0;-webkit-animation:none;animation:none;direction:ltr;border:0;font-size:14px;line-height:24px;border-radius:5px;position:absolute;width:307.875px;-webkit-box-sizing:border-box;box-sizing:border-box;-ms-touch-action:manipulation;touch-action:manipulation;background:#fff;-webkit-box-shadow:1px 0 0 #e6e6e6,-1px 0 0 #e6e6e6,0 1px 0 #e6e6e6,0 -1px 0 #e6e6e6,0 3px 13px rgba(0,0,0,0.08);box-shadow:1px 0 0 #e6e6e6,-1px 0 0 #e6e6e6,0 1px 0 #e6e6e6,0 -1px 0 #e6e6e6,0 3px 13px rgba(0,0,0,0.08)}.flatpickr-calendar.open,.flatpickr-calendar.inline{opacity:1;max-height:640px;visibility:visible}.flatpickr-calendar.open{display:inline-block;z-index:99999}.flatpickr-calendar.animate.open{-webkit-animation:fpFadeInDown 300ms cubic-bezier(.23,1,.32,1);animation:fpFadeInDown 300ms cubic-bezier(.23,1,.32,1)}.flatpickr-calendar.inline{display:block;position:relative;top:2px}.flatpickr-calendar.static{position:absolute;top:calc(100% + 2px)}.flatpickr-calendar.static.open{z-index:999;display:block}.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+1) .flatpickr-day.inRange:nth-child(7n+7){-webkit-box-shadow:none !important;box-shadow:none !important}.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+2) .flatpickr-day.inRange:nth-child(7n+1){-webkit-box-shadow:-2px 0 0 #e6e6e6,5px 0 0 #e6e6e6;box-shadow:-2px 0 0 #e6e6e6,5px 0 0 #e6e6e6}.flatpickr-calendar .hasWeeks .dayContainer,.flatpickr-calendar .hasTime .dayContainer{border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.flatpickr-calendar .hasWeeks .dayContainer{border-left:0}.flatpickr-calendar.hasTime .flatpickr-time{height:40px;border-top:1px solid #e6e6e6}.flatpickr-calendar.noCalendar.hasTime .flatpickr-time{height:auto}.flatpickr-calendar:before,.flatpickr-calendar:after{position:absolute;display:block;pointer-events:none;border:solid transparent;content:'';height:0;width:0;left:22px}.flatpickr-calendar.rightMost:before,.flatpickr-calendar.arrowRight:before,.flatpickr-calendar.rightMost:after,.flatpickr-calendar.arrowRight:after{left:auto;right:22px}.flatpickr-calendar.arrowCenter:before,.flatpickr-calendar.arrowCenter:after{left:50%;right:50%}.flatpickr-calendar:before{border-width:5px;margin:0 -5px}.flatpickr-calendar:after{border-width:4px;margin:0 -4px}.flatpickr-calendar.arrowTop:before,.flatpickr-calendar.arrowTop:after{bottom:100%}.flatpickr-calendar.arrowTop:before{border-bottom-color:#e6e6e6}.flatpickr-calendar.arrowTop:after{border-bottom-color:#fff}.flatpickr-calendar.arrowBottom:before,.flatpickr-calendar.arrowBottom:after{top:100%}.flatpickr-calendar.arrowBottom:before{border-top-color:#e6e6e6}.flatpickr-calendar.arrowBottom:after{border-top-color:#fff}.flatpickr-calendar:focus{outline:0}.flatpickr-wrapper{position:relative;display:inline-block}.flatpickr-months{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.flatpickr-months .flatpickr-month{background:transparent;color:rgba(0,0,0,0.9);fill:rgba(0,0,0,0.9);height:34px;line-height:1;text-align:center;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:hidden;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}.flatpickr-months .flatpickr-prev-month,.flatpickr-months .flatpickr-next-month{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;text-decoration:none;cursor:pointer;position:absolute;top:0;height:34px;padding:10px;z-index:3;color:rgba(0,0,0,0.9);fill:rgba(0,0,0,0.9)}.flatpickr-months .flatpickr-prev-month.flatpickr-disabled,.flatpickr-months .flatpickr-next-month.flatpickr-disabled{display:none}.flatpickr-months .flatpickr-prev-month i,.flatpickr-months .flatpickr-next-month i{position:relative}.flatpickr-months .flatpickr-prev-month.flatpickr-prev-month,.flatpickr-months .flatpickr-next-month.flatpickr-prev-month{/* + /*rtl:begin:ignore*/left:0/* + /*rtl:end:ignore*/}/* + /*rtl:begin:ignore*/ +/* + /*rtl:end:ignore*/ +.flatpickr-months .flatpickr-prev-month.flatpickr-next-month,.flatpickr-months .flatpickr-next-month.flatpickr-next-month{/* + /*rtl:begin:ignore*/right:0/* + /*rtl:end:ignore*/}/* + /*rtl:begin:ignore*/ +/* + /*rtl:end:ignore*/ +.flatpickr-months .flatpickr-prev-month:hover,.flatpickr-months .flatpickr-next-month:hover{color:#959ea9}.flatpickr-months .flatpickr-prev-month:hover svg,.flatpickr-months .flatpickr-next-month:hover svg{fill:#f64747}.flatpickr-months .flatpickr-prev-month svg,.flatpickr-months .flatpickr-next-month svg{width:14px;height:14px}.flatpickr-months .flatpickr-prev-month svg path,.flatpickr-months .flatpickr-next-month svg path{-webkit-transition:fill .1s;transition:fill .1s;fill:inherit}.numInputWrapper{position:relative;height:auto}.numInputWrapper input,.numInputWrapper span{display:inline-block}.numInputWrapper input{width:100%}.numInputWrapper input::-ms-clear{display:none}.numInputWrapper input::-webkit-outer-spin-button,.numInputWrapper input::-webkit-inner-spin-button{margin:0;-webkit-appearance:none}.numInputWrapper span{position:absolute;right:0;width:14px;padding:0 4px 0 2px;height:50%;line-height:50%;opacity:0;cursor:pointer;border:1px solid rgba(57,57,57,0.15);-webkit-box-sizing:border-box;box-sizing:border-box}.numInputWrapper span:hover{background:rgba(0,0,0,0.1)}.numInputWrapper span:active{background:rgba(0,0,0,0.2)}.numInputWrapper span:after{display:block;content:"";position:absolute}.numInputWrapper span.arrowUp{top:0;border-bottom:0}.numInputWrapper span.arrowUp:after{border-left:4px solid transparent;border-right:4px solid transparent;border-bottom:4px solid rgba(57,57,57,0.6);top:26%}.numInputWrapper span.arrowDown{top:50%}.numInputWrapper span.arrowDown:after{border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px solid rgba(57,57,57,0.6);top:40%}.numInputWrapper span svg{width:inherit;height:auto}.numInputWrapper span svg path{fill:rgba(0,0,0,0.5)}.numInputWrapper:hover{background:rgba(0,0,0,0.05)}.numInputWrapper:hover span{opacity:1}.flatpickr-current-month{font-size:135%;line-height:inherit;font-weight:300;color:inherit;position:absolute;width:75%;left:12.5%;padding:7.48px 0 0 0;line-height:1;height:34px;display:inline-block;text-align:center;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.flatpickr-current-month span.cur-month{font-family:inherit;font-weight:700;color:inherit;display:inline-block;margin-left:.5ch;padding:0}.flatpickr-current-month span.cur-month:hover{background:rgba(0,0,0,0.05)}.flatpickr-current-month .numInputWrapper{width:6ch;width:7ch\\0;display:inline-block}.flatpickr-current-month .numInputWrapper span.arrowUp:after{border-bottom-color:rgba(0,0,0,0.9)}.flatpickr-current-month .numInputWrapper span.arrowDown:after{border-top-color:rgba(0,0,0,0.9)}.flatpickr-current-month input.cur-year{background:transparent;-webkit-box-sizing:border-box;box-sizing:border-box;color:inherit;cursor:text;padding:0 0 0 .5ch;margin:0;display:inline-block;font-size:inherit;font-family:inherit;font-weight:300;line-height:inherit;height:auto;border:0;border-radius:0;vertical-align:initial;-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.flatpickr-current-month input.cur-year:focus{outline:0}.flatpickr-current-month input.cur-year[disabled],.flatpickr-current-month input.cur-year[disabled]:hover{font-size:100%;color:rgba(0,0,0,0.5);background:transparent;pointer-events:none}.flatpickr-current-month .flatpickr-monthDropdown-months{appearance:menulist;background:transparent;border:none;border-radius:0;box-sizing:border-box;color:inherit;cursor:pointer;font-size:inherit;font-family:inherit;font-weight:300;height:auto;line-height:inherit;margin:-1px 0 0 0;outline:none;padding:0 0 0 .5ch;position:relative;vertical-align:initial;-webkit-box-sizing:border-box;-webkit-appearance:menulist;-moz-appearance:menulist;width:auto}.flatpickr-current-month .flatpickr-monthDropdown-months:focus,.flatpickr-current-month .flatpickr-monthDropdown-months:active{outline:none}.flatpickr-current-month .flatpickr-monthDropdown-months:hover{background:rgba(0,0,0,0.05)}.flatpickr-current-month .flatpickr-monthDropdown-months .flatpickr-monthDropdown-month{background-color:transparent;outline:none;padding:0}.flatpickr-weekdays{background:transparent;text-align:center;overflow:hidden;width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;height:28px}.flatpickr-weekdays .flatpickr-weekdaycontainer{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}span.flatpickr-weekday{cursor:default;font-size:90%;background:transparent;color:rgba(0,0,0,0.54);line-height:1;margin:0;text-align:center;display:block;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;font-weight:bolder}.dayContainer,.flatpickr-weeks{padding:1px 0 0 0}.flatpickr-days{position:relative;overflow:hidden;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:flex-start;width:307.875px}.flatpickr-days:focus{outline:0}.dayContainer{padding:0;outline:0;text-align:left;width:307.875px;min-width:307.875px;max-width:307.875px;-webkit-box-sizing:border-box;box-sizing:border-box;display:inline-block;display:-ms-flexbox;display:-webkit-box;display:-webkit-flex;display:flex;-webkit-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-wrap:wrap;-ms-flex-pack:justify;-webkit-justify-content:space-around;justify-content:space-around;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}.dayContainer + .dayContainer{-webkit-box-shadow:-1px 0 0 #e6e6e6;box-shadow:-1px 0 0 #e6e6e6}.flatpickr-day{background:none;border:1px solid transparent;border-radius:150px;-webkit-box-sizing:border-box;box-sizing:border-box;color:#393939;cursor:pointer;font-weight:400;width:14.2857143%;-webkit-flex-basis:14.2857143%;-ms-flex-preferred-size:14.2857143%;flex-basis:14.2857143%;max-width:39px;height:39px;line-height:39px;margin:0;display:inline-block;position:relative;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;text-align:center}.flatpickr-day.inRange,.flatpickr-day.prevMonthDay.inRange,.flatpickr-day.nextMonthDay.inRange,.flatpickr-day.today.inRange,.flatpickr-day.prevMonthDay.today.inRange,.flatpickr-day.nextMonthDay.today.inRange,.flatpickr-day:hover,.flatpickr-day.prevMonthDay:hover,.flatpickr-day.nextMonthDay:hover,.flatpickr-day:focus,.flatpickr-day.prevMonthDay:focus,.flatpickr-day.nextMonthDay:focus{cursor:pointer;outline:0;background:#e6e6e6;border-color:#e6e6e6}.flatpickr-day.today{border-color:#959ea9}.flatpickr-day.today:hover,.flatpickr-day.today:focus{border-color:#959ea9;background:#959ea9;color:#fff}.flatpickr-day.selected,.flatpickr-day.startRange,.flatpickr-day.endRange,.flatpickr-day.selected.inRange,.flatpickr-day.startRange.inRange,.flatpickr-day.endRange.inRange,.flatpickr-day.selected:focus,.flatpickr-day.startRange:focus,.flatpickr-day.endRange:focus,.flatpickr-day.selected:hover,.flatpickr-day.startRange:hover,.flatpickr-day.endRange:hover,.flatpickr-day.selected.prevMonthDay,.flatpickr-day.startRange.prevMonthDay,.flatpickr-day.endRange.prevMonthDay,.flatpickr-day.selected.nextMonthDay,.flatpickr-day.startRange.nextMonthDay,.flatpickr-day.endRange.nextMonthDay{background:#569ff7;-webkit-box-shadow:none;box-shadow:none;color:#fff;border-color:#569ff7}.flatpickr-day.selected.startRange,.flatpickr-day.startRange.startRange,.flatpickr-day.endRange.startRange{border-radius:50px 0 0 50px}.flatpickr-day.selected.endRange,.flatpickr-day.startRange.endRange,.flatpickr-day.endRange.endRange{border-radius:0 50px 50px 0}.flatpickr-day.selected.startRange + .endRange:not(:nth-child(7n+1)),.flatpickr-day.startRange.startRange + .endRange:not(:nth-child(7n+1)),.flatpickr-day.endRange.startRange + .endRange:not(:nth-child(7n+1)){-webkit-box-shadow:-10px 0 0 #569ff7;box-shadow:-10px 0 0 #569ff7}.flatpickr-day.selected.startRange.endRange,.flatpickr-day.startRange.startRange.endRange,.flatpickr-day.endRange.startRange.endRange{border-radius:50px}.flatpickr-day.inRange{border-radius:0;-webkit-box-shadow:-5px 0 0 #e6e6e6,5px 0 0 #e6e6e6;box-shadow:-5px 0 0 #e6e6e6,5px 0 0 #e6e6e6}.flatpickr-day.flatpickr-disabled,.flatpickr-day.flatpickr-disabled:hover,.flatpickr-day.prevMonthDay,.flatpickr-day.nextMonthDay,.flatpickr-day.notAllowed,.flatpickr-day.notAllowed.prevMonthDay,.flatpickr-day.notAllowed.nextMonthDay{color:rgba(57,57,57,0.3);background:transparent;border-color:transparent;cursor:default}.flatpickr-day.flatpickr-disabled,.flatpickr-day.flatpickr-disabled:hover{cursor:not-allowed;color:rgba(57,57,57,0.1)}.flatpickr-day.week.selected{border-radius:0;-webkit-box-shadow:-5px 0 0 #569ff7,5px 0 0 #569ff7;box-shadow:-5px 0 0 #569ff7,5px 0 0 #569ff7}.flatpickr-day.hidden{visibility:hidden}.rangeMode .flatpickr-day{margin-top:1px}.flatpickr-weekwrapper{float:left}.flatpickr-weekwrapper .flatpickr-weeks{padding:0 12px;-webkit-box-shadow:1px 0 0 #e6e6e6;box-shadow:1px 0 0 #e6e6e6}.flatpickr-weekwrapper .flatpickr-weekday{float:none;width:100%;line-height:28px}.flatpickr-weekwrapper span.flatpickr-day,.flatpickr-weekwrapper span.flatpickr-day:hover{display:block;width:100%;max-width:none;color:rgba(57,57,57,0.3);background:transparent;cursor:default;border:none}.flatpickr-innerContainer{display:block;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden}.flatpickr-rContainer{display:inline-block;padding:0;-webkit-box-sizing:border-box;box-sizing:border-box}.flatpickr-time{text-align:center;outline:0;display:block;height:0;line-height:40px;max-height:40px;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.flatpickr-time:after{content:"";display:table;clear:both}.flatpickr-time .numInputWrapper{-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;width:40%;height:40px;float:left}.flatpickr-time .numInputWrapper span.arrowUp:after{border-bottom-color:#393939}.flatpickr-time .numInputWrapper span.arrowDown:after{border-top-color:#393939}.flatpickr-time.hasSeconds .numInputWrapper{width:26%}.flatpickr-time.time24hr .numInputWrapper{width:49%}.flatpickr-time input{background:transparent;-webkit-box-shadow:none;box-shadow:none;border:0;border-radius:0;text-align:center;margin:0;padding:0;height:inherit;line-height:inherit;color:#393939;font-size:14px;position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.flatpickr-time input.flatpickr-hour{font-weight:bold}.flatpickr-time input.flatpickr-minute,.flatpickr-time input.flatpickr-second{font-weight:400}.flatpickr-time input:focus{outline:0;border:0}.flatpickr-time .flatpickr-time-separator,.flatpickr-time .flatpickr-am-pm{height:inherit;float:left;line-height:inherit;color:#393939;font-weight:bold;width:2%;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-align-self:center;-ms-flex-item-align:center;align-self:center}.flatpickr-time .flatpickr-am-pm{outline:0;width:18%;cursor:pointer;text-align:center;font-weight:400}.flatpickr-time input:hover,.flatpickr-time .flatpickr-am-pm:hover,.flatpickr-time input:focus,.flatpickr-time .flatpickr-am-pm:focus{background:#eee}.flatpickr-input[readonly]{cursor:pointer}@-webkit-keyframes fpFadeInDown{from{opacity:0;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@keyframes fpFadeInDown{from{opacity:0;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}`, "",{"version":3,"sources":["webpack://./node_modules/flatpickr/dist/flatpickr.min.css"],"names":[],"mappings":"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","sourcesContent":[".flatpickr-calendar{background:transparent;opacity:0;display:none;text-align:center;visibility:hidden;padding:0;-webkit-animation:none;animation:none;direction:ltr;border:0;font-size:14px;line-height:24px;border-radius:5px;position:absolute;width:307.875px;-webkit-box-sizing:border-box;box-sizing:border-box;-ms-touch-action:manipulation;touch-action:manipulation;background:#fff;-webkit-box-shadow:1px 0 0 #e6e6e6,-1px 0 0 #e6e6e6,0 1px 0 #e6e6e6,0 -1px 0 #e6e6e6,0 3px 13px rgba(0,0,0,0.08);box-shadow:1px 0 0 #e6e6e6,-1px 0 0 #e6e6e6,0 1px 0 #e6e6e6,0 -1px 0 #e6e6e6,0 3px 13px rgba(0,0,0,0.08)}.flatpickr-calendar.open,.flatpickr-calendar.inline{opacity:1;max-height:640px;visibility:visible}.flatpickr-calendar.open{display:inline-block;z-index:99999}.flatpickr-calendar.animate.open{-webkit-animation:fpFadeInDown 300ms cubic-bezier(.23,1,.32,1);animation:fpFadeInDown 300ms cubic-bezier(.23,1,.32,1)}.flatpickr-calendar.inline{display:block;position:relative;top:2px}.flatpickr-calendar.static{position:absolute;top:calc(100% + 2px)}.flatpickr-calendar.static.open{z-index:999;display:block}.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+1) .flatpickr-day.inRange:nth-child(7n+7){-webkit-box-shadow:none !important;box-shadow:none !important}.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+2) .flatpickr-day.inRange:nth-child(7n+1){-webkit-box-shadow:-2px 0 0 #e6e6e6,5px 0 0 #e6e6e6;box-shadow:-2px 0 0 #e6e6e6,5px 0 0 #e6e6e6}.flatpickr-calendar .hasWeeks .dayContainer,.flatpickr-calendar .hasTime .dayContainer{border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.flatpickr-calendar .hasWeeks .dayContainer{border-left:0}.flatpickr-calendar.hasTime .flatpickr-time{height:40px;border-top:1px solid #e6e6e6}.flatpickr-calendar.noCalendar.hasTime .flatpickr-time{height:auto}.flatpickr-calendar:before,.flatpickr-calendar:after{position:absolute;display:block;pointer-events:none;border:solid transparent;content:'';height:0;width:0;left:22px}.flatpickr-calendar.rightMost:before,.flatpickr-calendar.arrowRight:before,.flatpickr-calendar.rightMost:after,.flatpickr-calendar.arrowRight:after{left:auto;right:22px}.flatpickr-calendar.arrowCenter:before,.flatpickr-calendar.arrowCenter:after{left:50%;right:50%}.flatpickr-calendar:before{border-width:5px;margin:0 -5px}.flatpickr-calendar:after{border-width:4px;margin:0 -4px}.flatpickr-calendar.arrowTop:before,.flatpickr-calendar.arrowTop:after{bottom:100%}.flatpickr-calendar.arrowTop:before{border-bottom-color:#e6e6e6}.flatpickr-calendar.arrowTop:after{border-bottom-color:#fff}.flatpickr-calendar.arrowBottom:before,.flatpickr-calendar.arrowBottom:after{top:100%}.flatpickr-calendar.arrowBottom:before{border-top-color:#e6e6e6}.flatpickr-calendar.arrowBottom:after{border-top-color:#fff}.flatpickr-calendar:focus{outline:0}.flatpickr-wrapper{position:relative;display:inline-block}.flatpickr-months{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.flatpickr-months .flatpickr-month{background:transparent;color:rgba(0,0,0,0.9);fill:rgba(0,0,0,0.9);height:34px;line-height:1;text-align:center;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:hidden;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}.flatpickr-months .flatpickr-prev-month,.flatpickr-months .flatpickr-next-month{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;text-decoration:none;cursor:pointer;position:absolute;top:0;height:34px;padding:10px;z-index:3;color:rgba(0,0,0,0.9);fill:rgba(0,0,0,0.9)}.flatpickr-months .flatpickr-prev-month.flatpickr-disabled,.flatpickr-months .flatpickr-next-month.flatpickr-disabled{display:none}.flatpickr-months .flatpickr-prev-month i,.flatpickr-months .flatpickr-next-month i{position:relative}.flatpickr-months .flatpickr-prev-month.flatpickr-prev-month,.flatpickr-months .flatpickr-next-month.flatpickr-prev-month{/*\n /*rtl:begin:ignore*/left:0/*\n /*rtl:end:ignore*/}/*\n /*rtl:begin:ignore*/\n/*\n /*rtl:end:ignore*/\n.flatpickr-months .flatpickr-prev-month.flatpickr-next-month,.flatpickr-months .flatpickr-next-month.flatpickr-next-month{/*\n /*rtl:begin:ignore*/right:0/*\n /*rtl:end:ignore*/}/*\n /*rtl:begin:ignore*/\n/*\n /*rtl:end:ignore*/\n.flatpickr-months .flatpickr-prev-month:hover,.flatpickr-months .flatpickr-next-month:hover{color:#959ea9}.flatpickr-months .flatpickr-prev-month:hover svg,.flatpickr-months .flatpickr-next-month:hover svg{fill:#f64747}.flatpickr-months .flatpickr-prev-month svg,.flatpickr-months .flatpickr-next-month svg{width:14px;height:14px}.flatpickr-months .flatpickr-prev-month svg path,.flatpickr-months .flatpickr-next-month svg path{-webkit-transition:fill .1s;transition:fill .1s;fill:inherit}.numInputWrapper{position:relative;height:auto}.numInputWrapper input,.numInputWrapper span{display:inline-block}.numInputWrapper input{width:100%}.numInputWrapper input::-ms-clear{display:none}.numInputWrapper input::-webkit-outer-spin-button,.numInputWrapper input::-webkit-inner-spin-button{margin:0;-webkit-appearance:none}.numInputWrapper span{position:absolute;right:0;width:14px;padding:0 4px 0 2px;height:50%;line-height:50%;opacity:0;cursor:pointer;border:1px solid rgba(57,57,57,0.15);-webkit-box-sizing:border-box;box-sizing:border-box}.numInputWrapper span:hover{background:rgba(0,0,0,0.1)}.numInputWrapper span:active{background:rgba(0,0,0,0.2)}.numInputWrapper span:after{display:block;content:\"\";position:absolute}.numInputWrapper span.arrowUp{top:0;border-bottom:0}.numInputWrapper span.arrowUp:after{border-left:4px solid transparent;border-right:4px solid transparent;border-bottom:4px solid rgba(57,57,57,0.6);top:26%}.numInputWrapper span.arrowDown{top:50%}.numInputWrapper span.arrowDown:after{border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px solid rgba(57,57,57,0.6);top:40%}.numInputWrapper span svg{width:inherit;height:auto}.numInputWrapper span svg path{fill:rgba(0,0,0,0.5)}.numInputWrapper:hover{background:rgba(0,0,0,0.05)}.numInputWrapper:hover span{opacity:1}.flatpickr-current-month{font-size:135%;line-height:inherit;font-weight:300;color:inherit;position:absolute;width:75%;left:12.5%;padding:7.48px 0 0 0;line-height:1;height:34px;display:inline-block;text-align:center;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.flatpickr-current-month span.cur-month{font-family:inherit;font-weight:700;color:inherit;display:inline-block;margin-left:.5ch;padding:0}.flatpickr-current-month span.cur-month:hover{background:rgba(0,0,0,0.05)}.flatpickr-current-month .numInputWrapper{width:6ch;width:7ch\\0;display:inline-block}.flatpickr-current-month .numInputWrapper span.arrowUp:after{border-bottom-color:rgba(0,0,0,0.9)}.flatpickr-current-month .numInputWrapper span.arrowDown:after{border-top-color:rgba(0,0,0,0.9)}.flatpickr-current-month input.cur-year{background:transparent;-webkit-box-sizing:border-box;box-sizing:border-box;color:inherit;cursor:text;padding:0 0 0 .5ch;margin:0;display:inline-block;font-size:inherit;font-family:inherit;font-weight:300;line-height:inherit;height:auto;border:0;border-radius:0;vertical-align:initial;-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.flatpickr-current-month input.cur-year:focus{outline:0}.flatpickr-current-month input.cur-year[disabled],.flatpickr-current-month input.cur-year[disabled]:hover{font-size:100%;color:rgba(0,0,0,0.5);background:transparent;pointer-events:none}.flatpickr-current-month .flatpickr-monthDropdown-months{appearance:menulist;background:transparent;border:none;border-radius:0;box-sizing:border-box;color:inherit;cursor:pointer;font-size:inherit;font-family:inherit;font-weight:300;height:auto;line-height:inherit;margin:-1px 0 0 0;outline:none;padding:0 0 0 .5ch;position:relative;vertical-align:initial;-webkit-box-sizing:border-box;-webkit-appearance:menulist;-moz-appearance:menulist;width:auto}.flatpickr-current-month .flatpickr-monthDropdown-months:focus,.flatpickr-current-month .flatpickr-monthDropdown-months:active{outline:none}.flatpickr-current-month .flatpickr-monthDropdown-months:hover{background:rgba(0,0,0,0.05)}.flatpickr-current-month .flatpickr-monthDropdown-months .flatpickr-monthDropdown-month{background-color:transparent;outline:none;padding:0}.flatpickr-weekdays{background:transparent;text-align:center;overflow:hidden;width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;height:28px}.flatpickr-weekdays .flatpickr-weekdaycontainer{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}span.flatpickr-weekday{cursor:default;font-size:90%;background:transparent;color:rgba(0,0,0,0.54);line-height:1;margin:0;text-align:center;display:block;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;font-weight:bolder}.dayContainer,.flatpickr-weeks{padding:1px 0 0 0}.flatpickr-days{position:relative;overflow:hidden;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:flex-start;width:307.875px}.flatpickr-days:focus{outline:0}.dayContainer{padding:0;outline:0;text-align:left;width:307.875px;min-width:307.875px;max-width:307.875px;-webkit-box-sizing:border-box;box-sizing:border-box;display:inline-block;display:-ms-flexbox;display:-webkit-box;display:-webkit-flex;display:flex;-webkit-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-wrap:wrap;-ms-flex-pack:justify;-webkit-justify-content:space-around;justify-content:space-around;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}.dayContainer + .dayContainer{-webkit-box-shadow:-1px 0 0 #e6e6e6;box-shadow:-1px 0 0 #e6e6e6}.flatpickr-day{background:none;border:1px solid transparent;border-radius:150px;-webkit-box-sizing:border-box;box-sizing:border-box;color:#393939;cursor:pointer;font-weight:400;width:14.2857143%;-webkit-flex-basis:14.2857143%;-ms-flex-preferred-size:14.2857143%;flex-basis:14.2857143%;max-width:39px;height:39px;line-height:39px;margin:0;display:inline-block;position:relative;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;text-align:center}.flatpickr-day.inRange,.flatpickr-day.prevMonthDay.inRange,.flatpickr-day.nextMonthDay.inRange,.flatpickr-day.today.inRange,.flatpickr-day.prevMonthDay.today.inRange,.flatpickr-day.nextMonthDay.today.inRange,.flatpickr-day:hover,.flatpickr-day.prevMonthDay:hover,.flatpickr-day.nextMonthDay:hover,.flatpickr-day:focus,.flatpickr-day.prevMonthDay:focus,.flatpickr-day.nextMonthDay:focus{cursor:pointer;outline:0;background:#e6e6e6;border-color:#e6e6e6}.flatpickr-day.today{border-color:#959ea9}.flatpickr-day.today:hover,.flatpickr-day.today:focus{border-color:#959ea9;background:#959ea9;color:#fff}.flatpickr-day.selected,.flatpickr-day.startRange,.flatpickr-day.endRange,.flatpickr-day.selected.inRange,.flatpickr-day.startRange.inRange,.flatpickr-day.endRange.inRange,.flatpickr-day.selected:focus,.flatpickr-day.startRange:focus,.flatpickr-day.endRange:focus,.flatpickr-day.selected:hover,.flatpickr-day.startRange:hover,.flatpickr-day.endRange:hover,.flatpickr-day.selected.prevMonthDay,.flatpickr-day.startRange.prevMonthDay,.flatpickr-day.endRange.prevMonthDay,.flatpickr-day.selected.nextMonthDay,.flatpickr-day.startRange.nextMonthDay,.flatpickr-day.endRange.nextMonthDay{background:#569ff7;-webkit-box-shadow:none;box-shadow:none;color:#fff;border-color:#569ff7}.flatpickr-day.selected.startRange,.flatpickr-day.startRange.startRange,.flatpickr-day.endRange.startRange{border-radius:50px 0 0 50px}.flatpickr-day.selected.endRange,.flatpickr-day.startRange.endRange,.flatpickr-day.endRange.endRange{border-radius:0 50px 50px 0}.flatpickr-day.selected.startRange + .endRange:not(:nth-child(7n+1)),.flatpickr-day.startRange.startRange + .endRange:not(:nth-child(7n+1)),.flatpickr-day.endRange.startRange + .endRange:not(:nth-child(7n+1)){-webkit-box-shadow:-10px 0 0 #569ff7;box-shadow:-10px 0 0 #569ff7}.flatpickr-day.selected.startRange.endRange,.flatpickr-day.startRange.startRange.endRange,.flatpickr-day.endRange.startRange.endRange{border-radius:50px}.flatpickr-day.inRange{border-radius:0;-webkit-box-shadow:-5px 0 0 #e6e6e6,5px 0 0 #e6e6e6;box-shadow:-5px 0 0 #e6e6e6,5px 0 0 #e6e6e6}.flatpickr-day.flatpickr-disabled,.flatpickr-day.flatpickr-disabled:hover,.flatpickr-day.prevMonthDay,.flatpickr-day.nextMonthDay,.flatpickr-day.notAllowed,.flatpickr-day.notAllowed.prevMonthDay,.flatpickr-day.notAllowed.nextMonthDay{color:rgba(57,57,57,0.3);background:transparent;border-color:transparent;cursor:default}.flatpickr-day.flatpickr-disabled,.flatpickr-day.flatpickr-disabled:hover{cursor:not-allowed;color:rgba(57,57,57,0.1)}.flatpickr-day.week.selected{border-radius:0;-webkit-box-shadow:-5px 0 0 #569ff7,5px 0 0 #569ff7;box-shadow:-5px 0 0 #569ff7,5px 0 0 #569ff7}.flatpickr-day.hidden{visibility:hidden}.rangeMode .flatpickr-day{margin-top:1px}.flatpickr-weekwrapper{float:left}.flatpickr-weekwrapper .flatpickr-weeks{padding:0 12px;-webkit-box-shadow:1px 0 0 #e6e6e6;box-shadow:1px 0 0 #e6e6e6}.flatpickr-weekwrapper .flatpickr-weekday{float:none;width:100%;line-height:28px}.flatpickr-weekwrapper span.flatpickr-day,.flatpickr-weekwrapper span.flatpickr-day:hover{display:block;width:100%;max-width:none;color:rgba(57,57,57,0.3);background:transparent;cursor:default;border:none}.flatpickr-innerContainer{display:block;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden}.flatpickr-rContainer{display:inline-block;padding:0;-webkit-box-sizing:border-box;box-sizing:border-box}.flatpickr-time{text-align:center;outline:0;display:block;height:0;line-height:40px;max-height:40px;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.flatpickr-time:after{content:\"\";display:table;clear:both}.flatpickr-time .numInputWrapper{-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;width:40%;height:40px;float:left}.flatpickr-time .numInputWrapper span.arrowUp:after{border-bottom-color:#393939}.flatpickr-time .numInputWrapper span.arrowDown:after{border-top-color:#393939}.flatpickr-time.hasSeconds .numInputWrapper{width:26%}.flatpickr-time.time24hr .numInputWrapper{width:49%}.flatpickr-time input{background:transparent;-webkit-box-shadow:none;box-shadow:none;border:0;border-radius:0;text-align:center;margin:0;padding:0;height:inherit;line-height:inherit;color:#393939;font-size:14px;position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.flatpickr-time input.flatpickr-hour{font-weight:bold}.flatpickr-time input.flatpickr-minute,.flatpickr-time input.flatpickr-second{font-weight:400}.flatpickr-time input:focus{outline:0;border:0}.flatpickr-time .flatpickr-time-separator,.flatpickr-time .flatpickr-am-pm{height:inherit;float:left;line-height:inherit;color:#393939;font-weight:bold;width:2%;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-align-self:center;-ms-flex-item-align:center;align-self:center}.flatpickr-time .flatpickr-am-pm{outline:0;width:18%;cursor:pointer;text-align:center;font-weight:400}.flatpickr-time input:hover,.flatpickr-time .flatpickr-am-pm:hover,.flatpickr-time input:focus,.flatpickr-time .flatpickr-am-pm:focus{background:#eee}.flatpickr-input[readonly]{cursor:pointer}@-webkit-keyframes fpFadeInDown{from{opacity:0;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@keyframes fpFadeInDown{from{opacity:0;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}"],"sourceRoot":""}]); +// Exports +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); + + +/***/ }), + +/***/ 645: +/***/ ((module) => { + +"use strict"; + + +/* + MIT License http://www.opensource.org/licenses/mit-license.php + Author Tobias Koppers @sokra +*/ +module.exports = function (cssWithMappingToString) { + var list = []; + + // return the list of modules as css string + list.toString = function toString() { + return this.map(function (item) { + var content = ""; + var needLayer = typeof item[5] !== "undefined"; + if (item[4]) { + content += "@supports (".concat(item[4], ") {"); + } + if (item[2]) { + content += "@media ".concat(item[2], " {"); + } + if (needLayer) { + content += "@layer".concat(item[5].length > 0 ? " ".concat(item[5]) : "", " {"); + } + content += cssWithMappingToString(item); + if (needLayer) { + content += "}"; + } + if (item[2]) { + content += "}"; + } + if (item[4]) { + content += "}"; + } + return content; + }).join(""); + }; + + // import a list of modules into the list + list.i = function i(modules, media, dedupe, supports, layer) { + if (typeof modules === "string") { + modules = [[null, modules, undefined]]; + } + var alreadyImportedModules = {}; + if (dedupe) { + for (var k = 0; k < this.length; k++) { + var id = this[k][0]; + if (id != null) { + alreadyImportedModules[id] = true; + } + } + } + for (var _k = 0; _k < modules.length; _k++) { + var item = [].concat(modules[_k]); + if (dedupe && alreadyImportedModules[item[0]]) { + continue; + } + if (typeof layer !== "undefined") { + if (typeof item[5] === "undefined") { + item[5] = layer; + } else { + item[1] = "@layer".concat(item[5].length > 0 ? " ".concat(item[5]) : "", " {").concat(item[1], "}"); + item[5] = layer; + } + } + if (media) { + if (!item[2]) { + item[2] = media; + } else { + item[1] = "@media ".concat(item[2], " {").concat(item[1], "}"); + item[2] = media; + } + } + if (supports) { + if (!item[4]) { + item[4] = "".concat(supports); + } else { + item[1] = "@supports (".concat(item[4], ") {").concat(item[1], "}"); + item[4] = supports; + } + } + list.push(item); + } + }; + return list; +}; + +/***/ }), + +/***/ 537: +/***/ ((module) => { + +"use strict"; + + +module.exports = function (item) { + var content = item[1]; + var cssMapping = item[3]; + if (!cssMapping) { + return content; + } + if (typeof btoa === "function") { + var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(cssMapping)))); + var data = "sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(base64); + var sourceMapping = "/*# ".concat(data, " */"); + return [content].concat([sourceMapping]).join("\n"); + } + return [content].join("\n"); +}; + +/***/ }), + +/***/ 745: +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +var __webpack_unused_export__; + + +var m = __webpack_require__(137); +if (true) { + exports.s = m.createRoot; + __webpack_unused_export__ = m.hydrateRoot; +} else { var i; } + + +/***/ }), + +/***/ 590: +/***/ ((module) => { + +/* global Map:readonly, Set:readonly, ArrayBuffer:readonly */ + +var hasElementType = typeof Element !== 'undefined'; +var hasMap = typeof Map === 'function'; +var hasSet = typeof Set === 'function'; +var hasArrayBuffer = typeof ArrayBuffer === 'function' && !!ArrayBuffer.isView; + +// Note: We **don't** need `envHasBigInt64Array` in fde es6/index.js + +function equal(a, b) { + // START: fast-deep-equal es6/index.js 3.1.3 + if (a === b) return true; + + if (a && b && typeof a == 'object' && typeof b == 'object') { + if (a.constructor !== b.constructor) return false; + + var length, i, keys; + if (Array.isArray(a)) { + length = a.length; + if (length != b.length) return false; + for (i = length; i-- !== 0;) + if (!equal(a[i], b[i])) return false; + return true; + } + + // START: Modifications: + // 1. Extra `has &&` helpers in initial condition allow es6 code + // to co-exist with es5. + // 2. Replace `for of` with es5 compliant iteration using `for`. + // Basically, take: + // + // ```js + // for (i of a.entries()) + // if (!b.has(i[0])) return false; + // ``` + // + // ... and convert to: + // + // ```js + // it = a.entries(); + // while (!(i = it.next()).done) + // if (!b.has(i.value[0])) return false; + // ``` + // + // **Note**: `i` access switches to `i.value`. + var it; + if (hasMap && (a instanceof Map) && (b instanceof Map)) { + if (a.size !== b.size) return false; + it = a.entries(); + while (!(i = it.next()).done) + if (!b.has(i.value[0])) return false; + it = a.entries(); + while (!(i = it.next()).done) + if (!equal(i.value[1], b.get(i.value[0]))) return false; + return true; + } + + if (hasSet && (a instanceof Set) && (b instanceof Set)) { + if (a.size !== b.size) return false; + it = a.entries(); + while (!(i = it.next()).done) + if (!b.has(i.value[0])) return false; + return true; + } + // END: Modifications + + if (hasArrayBuffer && ArrayBuffer.isView(a) && ArrayBuffer.isView(b)) { + length = a.length; + if (length != b.length) return false; + for (i = length; i-- !== 0;) + if (a[i] !== b[i]) return false; + return true; + } + + if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags; + // START: Modifications: + // Apply guards for `Object.create(null)` handling. See: + // - https://github.com/FormidableLabs/react-fast-compare/issues/64 + // - https://github.com/epoberezkin/fast-deep-equal/issues/49 + if (a.valueOf !== Object.prototype.valueOf && typeof a.valueOf === 'function' && typeof b.valueOf === 'function') return a.valueOf() === b.valueOf(); + if (a.toString !== Object.prototype.toString && typeof a.toString === 'function' && typeof b.toString === 'function') return a.toString() === b.toString(); + // END: Modifications + + keys = Object.keys(a); + length = keys.length; + if (length !== Object.keys(b).length) return false; + + for (i = length; i-- !== 0;) + if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false; + // END: fast-deep-equal + + // START: react-fast-compare + // custom handling for DOM elements + if (hasElementType && a instanceof Element) return false; + + // custom handling for React/Preact + for (i = length; i-- !== 0;) { + if ((keys[i] === '_owner' || keys[i] === '__v' || keys[i] === '__o') && a.$$typeof) { + // React-specific: avoid traversing React elements' _owner + // Preact-specific: avoid traversing Preact elements' __v and __o + // __v = $_original / $_vnode + // __o = $_owner + // These properties contain circular references and are not needed when + // comparing the actual elements (and not their owners) + // .$$typeof and ._store on just reasonable markers of elements + + continue; + } + + // all other properties should be traversed as usual + if (!equal(a[keys[i]], b[keys[i]])) return false; + } + // END: react-fast-compare + + // START: fast-deep-equal + return true; + } + + return a !== a && b !== b; +} +// end fast-deep-equal + +module.exports = function isEqual(a, b) { + try { + return equal(a, b); + } catch (error) { + if (((error.message || '').match(/stack|recursion/i))) { + // warn on circular references, don't crash + // browsers give this different errors name and messages: + // chrome/safari: "RangeError", "Maximum call stack size exceeded" + // firefox: "InternalError", too much recursion" + // edge: "Error", "Out of stack space" + console.warn('react-fast-compare cannot handle circular refs'); + return false; + } + // some other error. we should definitely know about these + throw error; + } +}; + + +/***/ }), + +/***/ 379: +/***/ ((module) => { + +"use strict"; + + +var stylesInDOM = []; +function getIndexByIdentifier(identifier) { + var result = -1; + for (var i = 0; i < stylesInDOM.length; i++) { + if (stylesInDOM[i].identifier === identifier) { + result = i; + break; + } + } + return result; +} +function modulesToDom(list, options) { + var idCountMap = {}; + var identifiers = []; + for (var i = 0; i < list.length; i++) { + var item = list[i]; + var id = options.base ? item[0] + options.base : item[0]; + var count = idCountMap[id] || 0; + var identifier = "".concat(id, " ").concat(count); + idCountMap[id] = count + 1; + var indexByIdentifier = getIndexByIdentifier(identifier); + var obj = { + css: item[1], + media: item[2], + sourceMap: item[3], + supports: item[4], + layer: item[5] + }; + if (indexByIdentifier !== -1) { + stylesInDOM[indexByIdentifier].references++; + stylesInDOM[indexByIdentifier].updater(obj); + } else { + var updater = addElementStyle(obj, options); + options.byIndex = i; + stylesInDOM.splice(i, 0, { + identifier: identifier, + updater: updater, + references: 1 + }); + } + identifiers.push(identifier); + } + return identifiers; +} +function addElementStyle(obj, options) { + var api = options.domAPI(options); + api.update(obj); + var updater = function updater(newObj) { + if (newObj) { + if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap && newObj.supports === obj.supports && newObj.layer === obj.layer) { + return; + } + api.update(obj = newObj); + } else { + api.remove(); + } + }; + return updater; +} +module.exports = function (list, options) { + options = options || {}; + list = list || []; + var lastIdentifiers = modulesToDom(list, options); + return function update(newList) { + newList = newList || []; + for (var i = 0; i < lastIdentifiers.length; i++) { + var identifier = lastIdentifiers[i]; + var index = getIndexByIdentifier(identifier); + stylesInDOM[index].references--; + } + var newLastIdentifiers = modulesToDom(newList, options); + for (var _i = 0; _i < lastIdentifiers.length; _i++) { + var _identifier = lastIdentifiers[_i]; + var _index = getIndexByIdentifier(_identifier); + if (stylesInDOM[_index].references === 0) { + stylesInDOM[_index].updater(); + stylesInDOM.splice(_index, 1); + } + } + lastIdentifiers = newLastIdentifiers; + }; +}; + +/***/ }), + +/***/ 569: +/***/ ((module) => { + +"use strict"; + + +var memo = {}; + +/* istanbul ignore next */ +function getTarget(target) { + if (typeof memo[target] === "undefined") { + var styleTarget = document.querySelector(target); + + // Special case to return head of iframe instead of iframe itself + if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) { + try { + // This will throw an exception if access to iframe is blocked + // due to cross-origin restrictions + styleTarget = styleTarget.contentDocument.head; + } catch (e) { + // istanbul ignore next + styleTarget = null; + } + } + memo[target] = styleTarget; + } + return memo[target]; +} + +/* istanbul ignore next */ +function insertBySelector(insert, style) { + var target = getTarget(insert); + if (!target) { + throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid."); + } + target.appendChild(style); +} +module.exports = insertBySelector; + +/***/ }), + +/***/ 216: +/***/ ((module) => { + +"use strict"; + + +/* istanbul ignore next */ +function insertStyleElement(options) { + var element = document.createElement("style"); + options.setAttributes(element, options.attributes); + options.insert(element, options.options); + return element; +} +module.exports = insertStyleElement; + +/***/ }), + +/***/ 565: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +/* istanbul ignore next */ +function setAttributesWithoutAttributes(styleElement) { + var nonce = true ? __webpack_require__.nc : 0; + if (nonce) { + styleElement.setAttribute("nonce", nonce); + } +} +module.exports = setAttributesWithoutAttributes; + +/***/ }), + +/***/ 795: +/***/ ((module) => { + +"use strict"; + + +/* istanbul ignore next */ +function apply(styleElement, options, obj) { + var css = ""; + if (obj.supports) { + css += "@supports (".concat(obj.supports, ") {"); + } + if (obj.media) { + css += "@media ".concat(obj.media, " {"); + } + var needLayer = typeof obj.layer !== "undefined"; + if (needLayer) { + css += "@layer".concat(obj.layer.length > 0 ? " ".concat(obj.layer) : "", " {"); + } + css += obj.css; + if (needLayer) { + css += "}"; + } + if (obj.media) { + css += "}"; + } + if (obj.supports) { + css += "}"; + } + var sourceMap = obj.sourceMap; + if (sourceMap && typeof btoa !== "undefined") { + css += "\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), " */"); + } + + // For old IE + /* istanbul ignore if */ + options.styleTagTransform(css, styleElement, options.options); +} +function removeStyleElement(styleElement) { + // istanbul ignore if + if (styleElement.parentNode === null) { + return false; + } + styleElement.parentNode.removeChild(styleElement); +} + +/* istanbul ignore next */ +function domAPI(options) { + if (typeof document === "undefined") { + return { + update: function update() {}, + remove: function remove() {} + }; + } + var styleElement = options.insertStyleElement(options); + return { + update: function update(obj) { + apply(styleElement, options, obj); + }, + remove: function remove() { + removeStyleElement(styleElement); + } + }; +} +module.exports = domAPI; + +/***/ }), + +/***/ 589: +/***/ ((module) => { + +"use strict"; + + +/* istanbul ignore next */ +function styleTagTransform(css, styleElement) { + if (styleElement.styleSheet) { + styleElement.styleSheet.cssText = css; + } else { + while (styleElement.firstChild) { + styleElement.removeChild(styleElement.firstChild); + } + styleElement.appendChild(document.createTextNode(css)); + } +} +module.exports = styleTagTransform; + +/***/ }), + +/***/ 137: +/***/ ((module) => { + +"use strict"; +module.exports = require("react-dom"); + +/***/ }) + +/******/ }); +/************************************************************************/ +/******/ // The module cache +/******/ var __webpack_module_cache__ = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ // Check if module is in cache +/******/ var cachedModule = __webpack_module_cache__[moduleId]; +/******/ if (cachedModule !== undefined) { +/******/ return cachedModule.exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = __webpack_module_cache__[moduleId] = { +/******/ id: moduleId, +/******/ loaded: false, +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.loaded = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/************************************************************************/ +/******/ /* webpack/runtime/amd define */ +/******/ (() => { +/******/ __webpack_require__.amdD = function () { +/******/ throw new Error('define cannot be used indirect'); +/******/ }; +/******/ })(); +/******/ +/******/ /* webpack/runtime/compat get default export */ +/******/ (() => { +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = (module) => { +/******/ var getter = module && module.__esModule ? +/******/ () => (module['default']) : +/******/ () => (module); +/******/ __webpack_require__.d(getter, { a: getter }); +/******/ return getter; +/******/ }; +/******/ })(); +/******/ +/******/ /* webpack/runtime/define property getters */ +/******/ (() => { +/******/ // define getter functions for harmony exports +/******/ __webpack_require__.d = (exports, definition) => { +/******/ for(var key in definition) { +/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) { +/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] }); +/******/ } +/******/ } +/******/ }; +/******/ })(); +/******/ +/******/ /* webpack/runtime/hasOwnProperty shorthand */ +/******/ (() => { +/******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop)) +/******/ })(); +/******/ +/******/ /* webpack/runtime/make namespace object */ +/******/ (() => { +/******/ // define __esModule on exports +/******/ __webpack_require__.r = (exports) => { +/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { +/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); +/******/ } +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ })(); +/******/ +/******/ /* webpack/runtime/node module decorator */ +/******/ (() => { +/******/ __webpack_require__.nmd = (module) => { +/******/ module.paths = []; +/******/ if (!module.children) module.children = []; +/******/ return module; +/******/ }; +/******/ })(); +/******/ +/******/ /* webpack/runtime/publicPath */ +/******/ (() => { +/******/ __webpack_require__.p = ""; +/******/ })(); +/******/ +/******/ /* webpack/runtime/nonce */ +/******/ (() => { +/******/ __webpack_require__.nc = undefined; +/******/ })(); +/******/ +/************************************************************************/ +var __webpack_exports__ = {}; +// This entry need to be wrapped in an IIFE because it need to be in strict mode. +(() => { +"use strict"; +// ESM COMPAT FLAG +__webpack_require__.r(__webpack_exports__); + +// EXPORTS +__webpack_require__.d(__webpack_exports__, { + Accordion: () => (/* reexport */ components_Accordion), + Button: () => (/* reexport */ components_Button), + ButtonGroup: () => (/* reexport */ components_ButtonGroup), + Chart: () => (/* reexport */ components_Chart), + Checkbox: () => (/* reexport */ Checkbox), + CodeEditor: () => (/* reexport */ components_CodeEditor), + Collapsible: () => (/* reexport */ components_Collapsible), + Column: () => (/* reexport */ layout_Column), + Combobox: () => (/* reexport */ Combobox), + Combobox2: () => (/* reexport */ components_Combobox2), + Confirm: () => (/* reexport */ components_Confirm), + CopyToClipboard: () => (/* reexport */ components_CopyToClipboard), + DatePicker: () => (/* reexport */ components_DatePicker), + Dropdown: () => (/* reexport */ components_Dropdown), + EditableList: () => (/* reexport */ EditableList), + EditableList2: () => (/* reexport */ components_EditableList2), + FieldCodeEditor: () => (/* reexport */ FieldCodeEditor), + FieldCombobox: () => (/* reexport */ FieldCombobox), + FieldCombobox2: () => (/* reexport */ redux_form_FieldCombobox2), + FieldDatePicker: () => (/* reexport */ FieldDatePicker), + FieldDropdown: () => (/* reexport */ FieldDropdown), + FieldEditableList: () => (/* reexport */ FieldEditableList), + FieldFileInput: () => (/* reexport */ FieldFileInput), + FieldInput: () => (/* reexport */ FieldInput), + FieldMultiselect: () => (/* reexport */ FieldMultiselect), + FieldPagination: () => (/* reexport */ redux_form_FieldPagination), + FieldSelect: () => (/* reexport */ FieldSelect), + FieldSelectableList: () => (/* reexport */ FieldSelectableList), + FieldToggle: () => (/* reexport */ FieldToggle), + FileInput: () => (/* reexport */ FileInput), + FixedWrapper: () => (/* reexport */ components_FixedWrapper), + FloatingContainer: () => (/* reexport */ components_FloatingContainer), + FormikCheckbox: () => (/* reexport */ FormikCheckbox), + FormikCodeEditor: () => (/* reexport */ FormikCodeEditor), + FormikCombobox: () => (/* reexport */ FormikCombobox), + FormikCombobox2: () => (/* reexport */ FormikCombobox2), + FormikDatePicker: () => (/* reexport */ FormikDatePicker), + FormikEditableList: () => (/* reexport */ FormikEditableList), + FormikEditableList2: () => (/* reexport */ FormikEditableList2), + FormikFileInput: () => (/* reexport */ FormikFileInput), + FormikInput: () => (/* reexport */ FormikInput), + FormikInput2: () => (/* reexport */ FormikInput2), + FormikMultiselect: () => (/* reexport */ FormikMultiselect), + FormikRadio: () => (/* reexport */ FormikRadio), + FormikSelect: () => (/* reexport */ FormikSelect), + FormikSelectableList: () => (/* reexport */ FormikSelectableList), + FormikStringBuilder: () => (/* reexport */ FormikStringBuilder), + FormikTextarea: () => (/* reexport */ FormikTextarea), + FormikToggle: () => (/* reexport */ FormikToggle), + FormikWrapper: () => (/* reexport */ formik), + Icon: () => (/* reexport */ components_Icon), + InfiniteScroller: () => (/* reexport */ components_InfiniteScroller), + InfoNote: () => (/* reexport */ components_InfoNote), + Input: () => (/* reexport */ Input), + Input2: () => (/* reexport */ components_Input2), + List: () => (/* reexport */ components_List), + Loader: () => (/* reexport */ components_Loader), + Message: () => (/* reexport */ components_Message), + Modal: () => (/* reexport */ components_Modal), + Multiselect: () => (/* reexport */ components_Multiselect), + NavBar: () => (/* reexport */ components_NavBar), + Navigation: () => (/* reexport */ components_Navigation), + Pagination: () => (/* reexport */ Pagination), + Panel: () => (/* reexport */ components_Panel), + Pill: () => (/* reexport */ components_Pill), + Radio: () => (/* reexport */ Radio), + RevealPanel: () => (/* reexport */ components_RevealPanel), + Row: () => (/* reexport */ Row_Row), + Select: () => (/* reexport */ Select), + SelectableList: () => (/* reexport */ components_SelectableList), + StringBuilder: () => (/* reexport */ components_StringBuilder), + Table: () => (/* reexport */ components_Table), + Tabs: () => (/* reexport */ components_Tabs), + TextEllipsis: () => (/* reexport */ components_TextEllipsis), + Textarea: () => (/* reexport */ components_Textarea), + Toggle: () => (/* reexport */ components_Toggle), + Tooltip: () => (/* reexport */ components_Tooltip), + setConfig: () => (/* reexport */ setConfig), + toast: () => (/* reexport */ Toast), + useComponentSize: () => (/* reexport */ hooks_useComponentSize), + useEventListener: () => (/* reexport */ hooks_useEventListener), + useInterval: () => (/* reexport */ useInterval), + usePrevious: () => (/* reexport */ hooks_usePrevious), + useTimeout: () => (/* reexport */ hooks_useTimeout) +}); + +;// CONCATENATED MODULE: external "react" +const external_react_namespaceObject = require("react"); +var external_react_default = /*#__PURE__*/__webpack_require__.n(external_react_namespaceObject); +;// CONCATENATED MODULE: external "prop-types" +const external_prop_types_namespaceObject = require("prop-types"); +var external_prop_types_default = /*#__PURE__*/__webpack_require__.n(external_prop_types_namespaceObject); +;// CONCATENATED MODULE: ./src/components/Accordion/js/AccordionContext.js + +const AccordionContext = (0,external_react_namespaceObject.createContext)(); +/* harmony default export */ const js_AccordionContext = (AccordionContext); + +;// CONCATENATED MODULE: ./src/components/Accordion/js/AccordionItemContext.js + +const AccordionItemContext = (0,external_react_namespaceObject.createContext)(); +/* harmony default export */ const js_AccordionItemContext = (AccordionItemContext); + +;// CONCATENATED MODULE: ./src/components/Icon/index.js +var __defProp = Object.defineProperty; +var __getOwnPropSymbols = Object.getOwnPropertySymbols; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __propIsEnum = Object.prototype.propertyIsEnumerable; +var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var __spreadValues = (a, b) => { + for (var prop in b || (b = {})) + if (__hasOwnProp.call(b, prop)) + __defNormalProp(a, prop, b[prop]); + if (__getOwnPropSymbols) + for (var prop of __getOwnPropSymbols(b)) { + if (__propIsEnum.call(b, prop)) + __defNormalProp(a, prop, b[prop]); + } + return a; +}; +var __objRest = (source, exclude) => { + var target = {}; + for (var prop in source) + if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) + target[prop] = source[prop]; + if (source != null && __getOwnPropSymbols) + for (var prop of __getOwnPropSymbols(source)) { + if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop)) + target[prop] = source[prop]; + } + return target; +}; + + +function Icon(_a) { + var _b = _a, { + className, + family, + type + } = _b, rest = __objRest(_b, [ + "className", + "family", + "type" + ]); + function getCSSClasses() { + const fontFamily = family || "fa"; + return [ + "tyk-icon", + fontFamily, + `${fontFamily}-${type}`, + className + ].filter(Boolean).join(" "); + } + return /* @__PURE__ */ external_react_default().createElement("i", __spreadValues({ className: getCSSClasses() }, rest)); +} +Icon.propTypes = { + className: (external_prop_types_default()).string, + family: (external_prop_types_default()).string, + type: (external_prop_types_default()).string.isRequired +}; +/* harmony default export */ const components_Icon = (Icon); + +;// CONCATENATED MODULE: ./src/components/Accordion/js/AccordionItemTrigger.js + + + + +function ItemTrigger({ wrap }) { + const { collapsed, disabled, toggleChange } = (0,external_react_namespaceObject.useContext)(js_AccordionItemContext); + const iconType = collapsed ? "chevron-down" : "chevron-up"; + const classes = [ + "tyk-accordion__trigger", + disabled && "tyk-accordion__trigger--disabled" + ].filter(Boolean).join(" "); + const trigger = /* @__PURE__ */ external_react_default().createElement( + "button", + { + className: classes, + onClick: toggleChange, + type: "button" + }, + /* @__PURE__ */ external_react_default().createElement(components_Icon, { className: "collapsable__arrow", type: iconType }) + ); + return wrap ? /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-accordion__trigger-wrapper" }, trigger) : trigger; +} +ItemTrigger.propTypes = { + wrap: (external_prop_types_default()).bool +}; +/* harmony default export */ const AccordionItemTrigger = (ItemTrigger); + +;// CONCATENATED MODULE: ./src/components/Accordion/js/AccordionItem.js + + + + + +function AccordionItem({ + collapsed: collapsedProp, + children, + className, + disabled +}, ref) { + const { arrow } = (0,external_react_namespaceObject.useContext)(js_AccordionContext); + const [collapsed, setCollapsed] = (0,external_react_namespaceObject.useState)(collapsedProp); + const toggleChange = () => { + if (disabled) { + return; + } + setCollapsed(!collapsed); + }; + const classes = (0,external_react_namespaceObject.useMemo)(() => [ + "tyk-accordion__item", + arrow.expandToContent ? `tyk-accordion__item--trigger-position-${arrow.position}` : "tyk-accordion__item--trigger-in-header", + className, + collapsed === false && "tyk-accordion__item--active" + ].filter(Boolean).join(" "), [arrow, className, collapsed]); + const contextValue = (0,external_react_namespaceObject.useMemo)(() => ({ + collapsed, + disabled, + toggleChange + }), [collapsed, disabled, toggleChange]); + return /* @__PURE__ */ external_react_default().createElement("div", { ref, className: classes }, /* @__PURE__ */ external_react_default().createElement(js_AccordionItemContext.Provider, { value: contextValue }, arrow.expandToContent && /* @__PURE__ */ external_react_default().createElement(AccordionItemTrigger, { wrap: true }), children)); +} +AccordionItem.propTypes = { + children: external_prop_types_default().oneOfType([ + external_prop_types_default().arrayOf((external_prop_types_default()).node), + (external_prop_types_default()).node, + (external_prop_types_default()).element, + (external_prop_types_default()).string + ]), + collapsed: (external_prop_types_default()).bool, + className: (external_prop_types_default()).string, + disabled: (external_prop_types_default()).bool +}; +AccordionItem.defaultProps = { + collapsed: false +}; +/* harmony default export */ const js_AccordionItem = ((0,external_react_namespaceObject.forwardRef)(AccordionItem)); + +;// CONCATENATED MODULE: ./src/components/Accordion/js/AccordionItemHeader.js + + + + + + +function AccordionItemHeader({ className, children }) { + const { collapsed, disabled, toggleChange } = (0,external_react_namespaceObject.useContext)(js_AccordionItemContext); + const { usearrowastrigger, arrow } = (0,external_react_namespaceObject.useContext)(js_AccordionContext); + const iconType = collapsed ? "chevron-down" : "chevron-up"; + const classes = [ + "tyk-accordion__item-header", + usearrowastrigger && "tyk-accordion__arrow-trigger", + className + ].filter(Boolean).join(" "); + return /* @__PURE__ */ external_react_default().createElement("div", { className: classes }, !usearrowastrigger ? /* @__PURE__ */ external_react_default().createElement( + "button", + { + className: disabled ? "tyk-accordion__trigger--disabled" : "", + onClick: toggleChange, + type: "button" + }, + /* @__PURE__ */ external_react_default().createElement("span", null, children), + /* @__PURE__ */ external_react_default().createElement(components_Icon, { className: "collapsable__arrow", type: iconType }) + ) : /* @__PURE__ */ external_react_default().createElement((external_react_default()).Fragment, null, !arrow.expandToContent && arrow.position === "left" && /* @__PURE__ */ external_react_default().createElement(AccordionItemTrigger, null), /* @__PURE__ */ external_react_default().createElement("div", null, children), !arrow.expandToContent && arrow.position === "right" && /* @__PURE__ */ external_react_default().createElement(AccordionItemTrigger, null))); +} +AccordionItemHeader.propTypes = { + children: external_prop_types_default().oneOfType([ + external_prop_types_default().arrayOf((external_prop_types_default()).node), + (external_prop_types_default()).node, + (external_prop_types_default()).element, + (external_prop_types_default()).string + ]), + className: (external_prop_types_default()).string +}; +/* harmony default export */ const js_AccordionItemHeader = (AccordionItemHeader); + +;// CONCATENATED MODULE: external "react-transition-group" +const external_react_transition_group_namespaceObject = require("react-transition-group"); +;// CONCATENATED MODULE: ./src/hooks/usePrevious/index.js + +const usePrevious = (value) => { + const ref = (0,external_react_namespaceObject.useRef)(); + (0,external_react_namespaceObject.useEffect)(() => { + ref.current = value; + }, [value]); + return ref.current; +}; +/* harmony default export */ const hooks_usePrevious = (usePrevious); + +;// CONCATENATED MODULE: ./src/hooks/useTimeout/index.js + +const useTimeout = (callback, delay) => { + const savedCallback = (0,external_react_namespaceObject.useRef)(); + (0,external_react_namespaceObject.useEffect)( + () => { + savedCallback.current = callback; + }, + [callback] + ); + (0,external_react_namespaceObject.useEffect)( + () => { + function tick() { + savedCallback.current(); + } + if (delay !== null) { + const id = setTimeout(tick, delay); + return () => clearTimeout(id); + } + return () => { + }; + }, + [delay] + ); +}; +/* harmony default export */ const hooks_useTimeout = (useTimeout); + +;// CONCATENATED MODULE: ./src/hooks/useInterval/index.js + +function useInterval(callback, delay, ...args) { + const savedCallback = (0,external_react_namespaceObject.useRef)(); + (0,external_react_namespaceObject.useEffect)(() => { + savedCallback.current = callback; + }, [callback]); + (0,external_react_namespaceObject.useEffect)(() => { + function tick() { + savedCallback.current(...args); + } + if (delay !== null && delay !== void 0) { + const id = setInterval(tick, delay); + return () => clearInterval(id); + } + }, [delay]); +} + +;// CONCATENATED MODULE: ./src/hooks/useEventListener/index.js + +const useEventListener = (eventName, handler, element) => { + const savedHandler = (0,external_react_namespaceObject.useRef)(); + (0,external_react_namespaceObject.useEffect)(() => { + savedHandler.current = handler; + }, [handler]); + (0,external_react_namespaceObject.useEffect)(() => { + const isSupported = element == null ? void 0 : element.addEventListener; + if (!isSupported) { + return; + } + const eventListener = (event) => savedHandler.current(event); + element.addEventListener(eventName, eventListener); + return () => { + element.removeEventListener(eventName, eventListener); + }; + }, [eventName, element]); +}; +/* harmony default export */ const hooks_useEventListener = (useEventListener); + +;// CONCATENATED MODULE: ./src/hooks/useComponentSize/index.js + +const getSize = (el) => { + if (!el) { + return { + width: 0, + height: 0 + }; + } + return { + width: el.offsetWidth, + height: el.offsetHeight + }; +}; +const useComponentSize = (ref) => { + const [ComponentSize, setComponentSize] = (0,external_react_namespaceObject.useState)(getSize(ref ? ref.current : {})); + const handleResize = (0,external_react_namespaceObject.useCallback)(() => { + if (ref.current) { + setComponentSize(getSize(ref.current)); + } + }, [ref]); + (0,external_react_namespaceObject.useLayoutEffect)(() => { + handleResize(); + let resizeObserver = new ResizeObserver(() => { + handleResize(); + }); + resizeObserver.observe(ref.current); + return () => { + resizeObserver.disconnect(ref.current); + resizeObserver = null; + }; + }, [ref.current]); + return ComponentSize; +}; +/* harmony default export */ const hooks_useComponentSize = (useComponentSize); + +;// CONCATENATED MODULE: ./src/hooks/index.js + + + + + + +;// CONCATENATED MODULE: ./src/components/Collapsible/index.js +var Collapsible_defProp = Object.defineProperty; +var __defProps = Object.defineProperties; +var __getOwnPropDescs = Object.getOwnPropertyDescriptors; +var Collapsible_getOwnPropSymbols = Object.getOwnPropertySymbols; +var Collapsible_hasOwnProp = Object.prototype.hasOwnProperty; +var Collapsible_propIsEnum = Object.prototype.propertyIsEnumerable; +var Collapsible_defNormalProp = (obj, key, value) => key in obj ? Collapsible_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var Collapsible_spreadValues = (a, b) => { + for (var prop in b || (b = {})) + if (Collapsible_hasOwnProp.call(b, prop)) + Collapsible_defNormalProp(a, prop, b[prop]); + if (Collapsible_getOwnPropSymbols) + for (var prop of Collapsible_getOwnPropSymbols(b)) { + if (Collapsible_propIsEnum.call(b, prop)) + Collapsible_defNormalProp(a, prop, b[prop]); + } + return a; +}; +var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b)); +var Collapsible_objRest = (source, exclude) => { + var target = {}; + for (var prop in source) + if (Collapsible_hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) + target[prop] = source[prop]; + if (source != null && Collapsible_getOwnPropSymbols) + for (var prop of Collapsible_getOwnPropSymbols(source)) { + if (exclude.indexOf(prop) < 0 && Collapsible_propIsEnum.call(source, prop)) + target[prop] = source[prop]; + } + return target; +}; + + + + +function Collapsible(_a) { + var _b = _a, { + className, + collapsed, + children + } = _b, rest = Collapsible_objRest(_b, [ + "className", + "collapsed", + "children" + ]); + const contentContainer = (0,external_react_namespaceObject.useRef)(null); + const collapseWrapper = (0,external_react_namespaceObject.useRef)(null); + const refContainerSize = hooks_useComponentSize(contentContainer); + const [contentContainerStyle, setContentContainerStyle] = (0,external_react_namespaceObject.useState)({ + // eslint-disable-next-line + height: collapsed ? 0 : "auto" + }); + const setHeight = (height) => { + setContentContainerStyle({ + height: `${height}px` + }); + }; + const getHeight = () => contentContainer.current ? contentContainer.current.clientHeight : 0; + const onEnter = () => { + setHeight(getHeight()); + }; + const onExit = () => { + setHeight(0); + }; + (0,external_react_namespaceObject.useEffect)(() => { + if (!collapsed && (refContainerSize == null ? void 0 : refContainerSize.height) && contentContainerStyle.height !== (refContainerSize == null ? void 0 : refContainerSize.height)) { + setHeight(refContainerSize.height); + } + }, [refContainerSize.height]); + const onWindowResize = (0,external_react_namespaceObject.useCallback)(() => { + if (!collapsed && contentContainer.current) { + setHeight(getHeight()); + collapseWrapper.current.style.height = `${getHeight()}px`; + } + }, [collapsed, contentContainer.current]); + hooks_useEventListener("resize", onWindowResize, window); + return /* @__PURE__ */ external_react_default().createElement( + external_react_transition_group_namespaceObject.CSSTransition, + { + onEnter, + onExit, + in: !collapsed, + timeout: 0, + classNames: "collapse" + }, + /* @__PURE__ */ external_react_default().createElement( + "div", + { + className: "collapse-wrapper", + ref: collapseWrapper, + style: contentContainerStyle + }, + /* @__PURE__ */ external_react_default().createElement( + "div", + __spreadProps(Collapsible_spreadValues({}, rest), { + className, + ref: contentContainer + }), + children + ) + ) + ); +} +Collapsible.propTypes = { + children: external_prop_types_default().oneOfType([ + (external_prop_types_default()).element, + (external_prop_types_default()).node, + (external_prop_types_default()).string + ]), + /** Describes if the content of Collapsible should be hidden or not */ + collapsed: (external_prop_types_default()).bool, + /** CSS classes that can be passed to the Collapsible element */ + className: (external_prop_types_default()).string +}; +/* harmony default export */ const components_Collapsible = (Collapsible); + +;// CONCATENATED MODULE: ./src/components/Accordion/js/AccordionItemContent.js + + + + +function AccordionItemContent({ children, className }) { + const { collapsed } = (0,external_react_namespaceObject.useContext)(js_AccordionItemContext); + const classes = [ + "tyk-accordion__item-content", + className + ].filter(Boolean).join(" "); + return /* @__PURE__ */ external_react_default().createElement("div", { className: classes }, /* @__PURE__ */ external_react_default().createElement(components_Collapsible, { collapsed }, children)); +} +AccordionItemContent.propTypes = { + children: external_prop_types_default().oneOfType([ + external_prop_types_default().arrayOf((external_prop_types_default()).node), + (external_prop_types_default()).node, + (external_prop_types_default()).element, + (external_prop_types_default()).string + ]), + className: (external_prop_types_default()).string +}; +/* harmony default export */ const js_AccordionItemContent = (AccordionItemContent); + +;// CONCATENATED MODULE: ./src/components/Accordion/index.js + + + + + + +function Accordion({ + className, + children, + usearrowastrigger, + arrow = { position: "right", expandToContent: false } +}) { + const classes = [ + "tyk-accordion", + className + ].filter(Boolean).join(" "); + const contextValue = (0,external_react_namespaceObject.useMemo)(() => ({ + usearrowastrigger, + arrow + }), [usearrowastrigger, arrow]); + return /* @__PURE__ */ external_react_default().createElement("div", { className: classes }, /* @__PURE__ */ external_react_default().createElement(js_AccordionContext.Provider, { value: contextValue }, children)); +} +Accordion.propTypes = { + children: external_prop_types_default().oneOfType([ + external_prop_types_default().arrayOf((external_prop_types_default()).node), + (external_prop_types_default()).node, + (external_prop_types_default()).element, + (external_prop_types_default()).string + ]), + className: (external_prop_types_default()).string, + usearrowastrigger: (external_prop_types_default()).bool, + arrow: external_prop_types_default().shape({ + position: external_prop_types_default().oneOf(["left", "right"]), + expandToContent: (external_prop_types_default()).bool + }) +}; +Accordion.defaultProps = { + usearrowastrigger: false +}; +Accordion.Item = js_AccordionItem; +Accordion.Item.Header = js_AccordionItemHeader; +Accordion.Item.Content = js_AccordionItemContent; +/* harmony default export */ const components_Accordion = (Accordion); + +;// CONCATENATED MODULE: ./src/components/Button/index.js +var Button_defProp = Object.defineProperty; +var Button_getOwnPropSymbols = Object.getOwnPropertySymbols; +var Button_hasOwnProp = Object.prototype.hasOwnProperty; +var Button_propIsEnum = Object.prototype.propertyIsEnumerable; +var Button_defNormalProp = (obj, key, value) => key in obj ? Button_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var Button_spreadValues = (a, b) => { + for (var prop in b || (b = {})) + if (Button_hasOwnProp.call(b, prop)) + Button_defNormalProp(a, prop, b[prop]); + if (Button_getOwnPropSymbols) + for (var prop of Button_getOwnPropSymbols(b)) { + if (Button_propIsEnum.call(b, prop)) + Button_defNormalProp(a, prop, b[prop]); + } + return a; +}; +var Button_objRest = (source, exclude) => { + var target = {}; + for (var prop in source) + if (Button_hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) + target[prop] = source[prop]; + if (source != null && Button_getOwnPropSymbols) + for (var prop of Button_getOwnPropSymbols(source)) { + if (exclude.indexOf(prop) < 0 && Button_propIsEnum.call(source, prop)) + target[prop] = source[prop]; + } + return target; +}; + + + +const Button = external_react_default().forwardRef((props, ref) => { + const _a = props, { + customButton, + children, + iconType, + iconFamily, + iconPosition, + iconOnly, + id, + className, + disabled, + display, + href, + onClick, + noStyle, + size, + theme, + type + } = _a, rest = Button_objRest(_a, [ + "customButton", + "children", + "iconType", + "iconFamily", + "iconPosition", + "iconOnly", + "id", + "className", + "disabled", + "display", + "href", + "onClick", + "noStyle", + "size", + "theme", + "type" + ]); + const getCssClasses = () => { + const cssClasses = ["tyk-button"].concat(className ? className.split(" ") : []); + const sizeClass = size ? `tyk-button--${size}` : "tyk-button--md"; + const disabledClass = disabled ? "disabled" : ""; + const displayClass = display || ""; + const themeClass = theme ? `tyk-button--${theme}` : ""; + const iconOnlyClass = iconOnly ? "tyk-button--icon-only" : ""; + const noStyleClass = noStyle ? "tyk-button--no-style" : ""; + cssClasses.push(iconOnlyClass); + cssClasses.push(themeClass); + cssClasses.push(sizeClass); + cssClasses.push(disabledClass); + cssClasses.push(displayClass); + cssClasses.push(noStyleClass); + if (iconType) { + cssClasses.push(`icon-${iconPosition || "left"}`); + } + return cssClasses.join(" "); + }; + const getButtonIcon = (position) => { + const iPos = iconPosition || "left"; + return iconType && iPos === position ? /* @__PURE__ */ external_react_default().createElement(components_Icon, { family: iconFamily, type: iconType }) : null; + }; + const getButtonType = () => { + let buttonType; + if (customButton) { + return /* @__PURE__ */ external_react_default().createElement(external_react_namespaceObject.Fragment, null, (0,external_react_namespaceObject.cloneElement)(customButton, { + className: getCssClasses(), + disabled + })); + } + if (href) { + buttonType = /* @__PURE__ */ external_react_default().createElement( + "a", + Button_spreadValues({ + id, + className: getCssClasses(), + disabled, + onClick, + href, + ref + }, rest), + getButtonIcon("left"), + children, + getButtonIcon("right") + ); + } else { + buttonType = // eslint-disable-next-line react/button-has-type + /* @__PURE__ */ external_react_default().createElement( + "button", + Button_spreadValues({ + id, + className: getCssClasses(), + disabled, + onClick, + type: type || "button", + ref + }, rest), + getButtonIcon("left"), + children && /* @__PURE__ */ external_react_default().createElement("span", null, children), + getButtonIcon("right") + ); + } + return buttonType; + }; + return getButtonType(); +}); +Button.propTypes = { + /** + * Content of a button. Can be a DOM element or a React component + */ + children: external_prop_types_default().oneOfType([ + external_prop_types_default().arrayOf((external_prop_types_default()).node), + (external_prop_types_default()).node, + (external_prop_types_default()).element, + (external_prop_types_default()).string + ]), + customButton: external_prop_types_default().oneOfType([ + external_prop_types_default().arrayOf((external_prop_types_default()).node), + (external_prop_types_default()).node, + (external_prop_types_default()).element + ]), + className: (external_prop_types_default()).string, + /** + * Display type: inline/block. Default is inline + */ + display: (external_prop_types_default()).string, + /** + * Sets the button disabled state + */ + disabled: (external_prop_types_default()).bool, + /** + * Having this property set the button will become a link + */ + id: (external_prop_types_default()).string, + href: (external_prop_types_default()).string, + iconPosition: (external_prop_types_default()).string, + // left or right + iconFamily: (external_prop_types_default()).string, + iconOnly: (external_prop_types_default()).bool, + iconType: (external_prop_types_default()).string, + noStyle: (external_prop_types_default()).bool, + /** + * Callback function, called when the button si clicked + */ + onClick: (external_prop_types_default()).func, + /** + * Describes the appearence of the button (ex: primary, danger, primary-outline etc.) + */ + theme: (external_prop_types_default()).string, + /** + * Type of the button (ex: button, submit etc.) + */ + type: (external_prop_types_default()).string, + /** + * Describes the size of the button (sm, md, lg). Default one is md + */ + size: (external_prop_types_default()).string +}; +Button.defaultProps = { + theme: "", + type: "button" +}; +/* harmony default export */ const components_Button = (Button); + +;// CONCATENATED MODULE: ./src/components/ButtonGroup/index.js + + +function ButtonGroup({ + className, + children, + label +}) { + return /* @__PURE__ */ external_react_default().createElement("div", { className: `tyk-button-group__wrapper ${className}` }, Boolean(label) && /* @__PURE__ */ external_react_default().createElement("label", null, label), /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-button-group" }, children)); +} +ButtonGroup.propTypes = { + children: external_prop_types_default().oneOfType([ + external_prop_types_default().arrayOf((external_prop_types_default()).node), + (external_prop_types_default()).node, + (external_prop_types_default()).element, + (external_prop_types_default()).string + ]), + className: (external_prop_types_default()).string, + /** + * Label that will sit above the button group + */ + label: (external_prop_types_default()).string +}; +/* harmony default export */ const components_ButtonGroup = (ButtonGroup); + +;// CONCATENATED MODULE: external "echarts" +const external_echarts_namespaceObject = require("echarts"); +;// CONCATENATED MODULE: external "immutable" +const external_immutable_namespaceObject = require("immutable"); +;// CONCATENATED MODULE: ./src/utils/debounce/index.js +/* harmony default export */ const debounce = ((func, wait, immediate) => { + let timeout; + return function debouncer(...args) { + const context = this; + const later = () => { + timeout = null; + if (!immediate) { + func.apply(context, args); + } + }; + const callNow = immediate && !timeout; + clearTimeout(timeout); + timeout = setTimeout(later, wait); + if (callNow) { + func.apply(context, args); + } + }; +}); + +;// CONCATENATED MODULE: ./src/components/Loader/index.js + + +function Loader({ className, position = "relative", withbackground = false }) { + const classes = [ + "loading", + position, + className + ].filter(Boolean).join(" "); + const loader = /* @__PURE__ */ external_react_default().createElement("div", { className: classes }, /* @__PURE__ */ external_react_default().createElement("div", { className: "loading-bar" }), /* @__PURE__ */ external_react_default().createElement("div", { className: "loading-bar" }), /* @__PURE__ */ external_react_default().createElement("div", { className: "loading-bar" }), /* @__PURE__ */ external_react_default().createElement("div", { className: "loading-bar" })); + return withbackground ? /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-loading__wrapper" }, loader) : loader; +} +Loader.propTypes = { + /** add a class to loader */ + className: (external_prop_types_default()).string, + /** position of loader (absolute / relative) */ + position: (external_prop_types_default()).string, + /** defines weather loader should be renders with or without background */ + withbackground: (external_prop_types_default()).bool +}; +/* harmony default export */ const components_Loader = (Loader); + +;// CONCATENATED MODULE: ./src/components/Message/index.js + + + +function Message({ + children, + theme, + onClose, + noMargin, + className +}) { + function getCssClasses() { + return [ + "tyk-message", + `tyk-message--${theme || "info"}`, + noMargin && "no-margin", + className + ].filter(Boolean).join(" "); + } + const iconType = theme === "success" ? "check" : "warning"; + return /* @__PURE__ */ external_react_default().createElement("div", { className: getCssClasses() }, /* @__PURE__ */ external_react_default().createElement(components_Icon, { family: "tykon", type: iconType }), /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-message__content" }, children), onClose && /* @__PURE__ */ external_react_default().createElement(components_Icon, { family: "tykon", type: "x", onClick: onClose })); +} +Message.propTypes = { + /** Set theme for message (eg. default, success, danger, etc) */ + theme: (external_prop_types_default()).string, + children: external_prop_types_default().oneOfType([ + (external_prop_types_default()).element, + (external_prop_types_default()).node, + (external_prop_types_default()).string + ]), + /** add a class to loader */ + className: (external_prop_types_default()).string, + /** Removes margins by adding `no-margin` class */ + noMargin: (external_prop_types_default()).bool, + /** Callback for clicking on the "x" */ + onClose: (external_prop_types_default()).func +}; +/* harmony default export */ const components_Message = (Message); + +;// CONCATENATED MODULE: ./src/components/Chart/maps/world.json +const world_namespaceObject = JSON.parse('{"type":"FeatureCollection","crs":{"type":"name","properties":{"name":"urn:ogc:def:crs:OGC:1.3:CRS84"}},"features":[{"geometry":{"type":"Polygon","coordinates":[[[47.97822265625001,7.9970703125],[46.97822265625001,7.9970703125],[43.98378906250002,9.008837890624989],[43.482519531250006,9.379492187499991],[43.181640625,9.879980468749991],[42.84160156250002,10.203076171874997],[42.65644531250001,10.6],[42.92275390625002,10.999316406249989],[43.24599609375002,11.499804687499989],[43.85273437500001,10.784277343749991],[44.38652343750002,10.430224609374989],[44.94296875,10.43671875],[45.81669921875002,10.835888671874997],[46.565039062500006,10.745996093749994],[47.40498046875001,11.174023437499997],[48.01923828125001,11.139355468749997],[48.57255859375002,11.320507812499997],[48.938574218750006,11.258447265624994],[50.11005859375001,11.529296875],[50.79228515625002,11.983691406249989],[51.2548828125,11.830712890624994],[51.08427734375002,11.335644531249997],[51.140625,10.656884765624994],[51.031835937500006,10.444775390624997],[51.19296875,10.554638671874997],[51.390234375,10.422607421875],[50.93007812500002,10.33554687499999],[50.825,9.428173828124997],[50.10283203125002,8.199804687499991],[49.85205078125,7.962548828124994],[49.234960937500006,6.77734375],[49.04931640625,6.173632812499989],[47.97529296875001,4.497021484374997],[46.87880859375002,3.28564453125],[46.05117187500002,2.475146484374989],[44.92021484375002,1.81015625],[43.71757812500002,0.857861328124997],[41.97988281250002,-0.973046875],[41.53271484375,-1.6953125],[41.521875,-1.572265625],[41.42695312500001,-1.449511718750003],[41.24980468750002,-1.220507812500003],[40.97871093750001,-0.870312500000011],[40.964453125,2.814648437499997],[41.341796875,3.20166015625],[41.61347656250001,3.590478515624994],[41.88398437500001,3.977734375],[41.91533203125002,4.031298828124989],[42.02412109375001,4.137939453125],[42.85664062500001,4.32421875],[43.12568359375001,4.644482421874997],[43.58349609375,4.85498046875],[43.988867187500006,4.950537109374991],[44.940527343750006,4.912011718749994],[47.97822265625001,7.9970703125]]]},"properties":{"name":"Somalia","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[9.579979133936737,47.05856388629306],[9.409458596647225,47.02019676540292],[9.46249431093294,47.09010747968864],[9.46249431093294,47.19858962254578],[9.527658197470123,47.27026989773668],[9.579979133936737,47.05856388629306]]]},"properties":{"name":"Liechtenstein","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-8.683349609375,27.77800740805682],[-13.038761787013554,27.81190166624856],[-12.948925781249926,27.914160156250034],[-11.552685546874955,28.31010742187496],[-10.486474609374994,29.06494140625],[-10.200585937499994,29.380371093750057],[-9.667089843749949,30.10927734375005],[-9.652929687499977,30.447558593750045],[-9.875488281249943,30.717919921874966],[-9.80869140624992,31.42460937499996],[-9.347460937499932,32.086376953124955],[-9.245849609375,32.572460937499955],[-8.512841796874994,33.25244140625003],[-6.900976562499949,33.96904296874999],[-6.353125,34.77607421875001],[-5.924804687499943,35.78579101562502],[-5.277832031249943,35.90273437500002],[-5.252685546874972,35.61474609374997],[-4.628320312499966,35.206396484375006],[-4.329980468749937,35.161474609375006],[-3.693261718749994,35.27998046874998],[-3.394726562499926,35.21181640625005],[-2.972216796874989,35.40727539062499],[-2.839941406249949,35.127832031249994],[-2.731396484374955,35.13520507812498],[-2.636816406249977,35.11269531250002],[-2.423730468749994,35.12348632812498],[-2.219628906249966,35.10419921874998],[-1.795605468749926,34.751904296874955],[-1.67919921875,33.31865234375002],[-1.550732421874955,33.073583984375006],[-1.510009765625,32.877636718749955],[-1.45,32.784814453124966],[-1.352148437499977,32.70336914062497],[-1.29638671875,32.67568359375002],[-1.188232421875,32.608496093750006],[-1.111035156249983,32.55229492187502],[-1.065527343749949,32.46831054687496],[-1.16259765625,32.399169921875],[-1.275341796874983,32.089013671874966],[-2.863427734374937,32.07470703124997],[-2.930859374999926,32.04252929687499],[-2.988232421874983,31.874218749999983],[-3.01738281249996,31.834277343750017],[-3.439794921874949,31.704541015624983],[-3.604589843749949,31.686767578125],[-3.700244140624989,31.70009765625005],[-3.768164062499977,31.689550781250034],[-3.837109374999983,31.512353515624994],[-3.833398437499937,31.197802734375045],[-3.626904296874955,31.000927734374983],[-4.148779296874977,30.8095703125],[-4.322851562500006,30.698876953124994],[-4.52915039062492,30.62553710937499],[-4.778515624999926,30.552392578124994],[-4.968261718749943,30.465380859375045],[-5.061914062499937,30.326416015625057],[-5.180126953124955,30.166162109374994],[-5.293652343749983,30.058642578125045],[-5.44877929687496,29.956933593750023],[-6.00429687499999,29.83125],[-6.479736328124943,29.82036132812499],[-6.520556640624989,29.659863281249983],[-6.59775390624992,29.578955078125006],[-6.635351562499949,29.568798828124983],[-6.755126953125,29.583837890625034],[-6.855566406249949,29.601611328125017],[-7.142431640624949,29.61958007812504],[-7.427685546874983,29.425],[-7.485742187499994,29.392236328124994],[-8.659912109375,28.718603515625063],[-8.683349609375,27.900390625],[-8.683349609375,27.77800740805682]]]},"properties":{"name":"Morocco","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-13.038761787013554,27.81190166624856],[-8.683349609375,27.77800740805682],[-8.683349609375,27.65644531250004],[-8.817822265624955,27.65644531250004],[-8.817822265624951,27.656445312499997],[-8.683349609375,27.656445312499997],[-8.683349609375,27.2859375],[-8.682861328125,26.921337890624997],[-8.6826171875,26.72314453125],[-8.682324218749983,26.497705078124994],[-8.68212890625,26.273193359375],[-8.68212890625,26.10947265625],[-8.682226562499977,25.995507812499994],[-12.016308593749983,25.995410156250003],[-12.016308593749983,25.740136718749994],[-12.016308593749983,25.331689453124994],[-12.016308593749983,25.059375],[-12.016308593749983,24.923242187499994],[-12.016308593749983,24.378662109375],[-12.016308593749983,23.97021484375],[-12.0234375,23.467578125],[-12.372900390624977,23.318017578124994],[-12.559375,23.290820312500003],[-12.620410156249989,23.27133789062499],[-13.031494140625,23.000244140625],[-13.153271484374983,22.820507812499997],[-13.12702845982141,22.703770926339278],[-13.136540684091575,22.708182548616723],[-13.094335937499977,22.495996093749994],[-13.051220703124983,21.854785156250003],[-13.041748046875,21.713818359374997],[-13.0322265625,21.572070312500003],[-13.025097656249983,21.466796875],[-13.016210937499977,21.333935546874997],[-15.231201171875,21.331298828125],[-16.964550781249983,21.329248046874994],[-17.06396484375,20.89882812499999],[-17.048046874999983,20.80615234375],[-17.098779296874994,20.856884765624997],[-16.930859374999983,21.9],[-16.35874023437495,22.594531250000045],[-16.21025390624999,23.097900390625],[-15.789257812499926,23.792871093750023],[-15.980712890624943,23.670312500000023],[-15.899316406249966,23.844433593749955],[-14.904296875000028,24.719775390625017],[-14.794921874999943,25.404150390625006],[-14.413867187499932,26.25371093749999],[-13.57578125,26.735107421875],[-13.175976562499983,27.655712890624983],[-13.038761787013554,27.81190166624856]],[[-8.774365234374983,27.460546875],[-8.794873046874983,27.120703125000034],[-8.794873046874983,27.120703125],[-8.774365234374983,27.460546875]]]},"properties":{"name":"W. Sahara","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[21.5625,42.247509765625],[21.560839843750017,42.24765625],[21.389550781250023,42.21982421875],[21.28662109375,42.100390625],[21.05976562500001,42.171289062499994],[20.778125,42.071044921875],[20.725,41.87353515625],[20.566210937500017,41.873681640624994],[20.485449218750006,42.223388671875],[20.06396484375,42.54726562499999],[20.054296875,42.760058593749996],[20.344335937500006,42.827929687499996],[20.40996305279786,42.84373166741877],[20.344335937500063,42.82792968750002],[19.670996093750006,43.163964843749994],[19.21875,43.449951171875],[19.196484375000068,43.48500976562502],[19.19160156250004,43.52104492187499],[19.19433593749997,43.533300781250006],[19.495117187500057,43.642871093750045],[19.245019531249994,43.96503906250004],[19.583789062500017,44.04345703125003],[19.118457031250074,44.359960937500006],[19.348632812500057,44.88090820312502],[19.007128906250045,44.86918945312502],[19.062890625000023,45.13720703125],[19.4,45.2125],[19.004687500000074,45.39951171875006],[19.064257812500045,45.51499023437506],[18.839062499999983,45.83574218750002],[18.905371093750006,45.931738281250034],[19.421289062500023,46.064453125],[19.61347656250001,46.169189453125],[19.84443359375001,46.145898437499966],[19.934082031250057,46.161474609375034],[20.161425781250017,46.14189453124996],[20.210156250000068,46.12602539062502],[20.241796875000034,46.10859375000001],[20.301367187500006,46.05068359375002],[20.35859375000004,45.975488281249994],[20.581152343749977,45.86948242187506],[20.65273437499999,45.779394531250006],[20.709277343750074,45.735253906249994],[20.727832031250017,45.73740234374998],[20.746875,45.74897460937501],[20.76015625000005,45.75810546875002],[20.775,45.74980468750002],[20.794042968750006,45.467871093750034],[21.431445312500017,45.192529296874994],[21.465429687500006,45.171875],[21.357031250000034,44.99077148437502],[21.532324218750063,44.900683593750045],[21.519921875000023,44.88081054687498],[21.442187500000074,44.87338867187498],[21.384375,44.87006835937501],[21.357910156250057,44.86181640625003],[21.36005859375004,44.82666015624997],[21.52314453125004,44.79008789062499],[21.63613281250005,44.71044921875],[21.909277343750034,44.666113281250034],[22.026953125,44.61987304687503],[22.093066406250074,44.541943359374955],[22.200976562500017,44.560693359374966],[22.350683593750063,44.676123046875034],[22.497656249999977,44.70625],[22.64208984375,44.65097656249998],[22.720898437499983,44.605517578125045],[22.734375,44.56992187499998],[22.700781250000063,44.55551757812498],[22.620117187500057,44.562353515625034],[22.554003906250017,44.54033203124999],[22.49453125000005,44.43544921875002],[22.687890625000023,44.248291015625],[22.42080078125005,44.00742187500006],[22.399023437500063,43.96953125],[22.36542968750004,43.86210937500002],[22.36962890625003,43.78129882812499],[22.55458984375005,43.45449218750002],[22.767578125,43.35415039062502],[22.81972656250005,43.300732421874955],[22.85957031250001,43.252343749999966],[22.97685546874999,43.18798828125],[22.799902343750006,42.985742187499994],[22.706152343750006,42.88393554687505],[22.466796875,42.842480468749955],[22.53242187500004,42.48120117187497],[22.523535156250006,42.440966796875045],[22.44570312500005,42.35913085937497],[22.42207031250004,42.32885742187503],[22.344042968750045,42.31396484375003],[22.23974609375003,42.303110028468716],[21.81464843750001,42.303125],[21.5625,42.24750976562498],[21.5625,42.247509765625]]]},"properties":{"name":"Serbia","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[74.54140625000002,37.02216796875],[74.03886718750002,36.825732421874996],[73.116796875,36.868554687499994],[72.24980468750002,36.734716796875],[71.23291015625,36.12177734375],[71.18505859375,36.04208984375],[71.57197265625001,35.546826171875],[71.62050781250002,35.183007812499994],[70.965625,34.53037109375],[71.095703125,34.369433593749996],[71.05156250000002,34.049707031249994],[70.65400390625001,33.952294921874994],[69.8896484375,34.007275390625],[70.26113281250002,33.289013671875],[69.5015625,33.020068359374996],[69.24140625000001,32.433544921875],[69.279296875,31.936816406249996],[68.86894531250002,31.634228515624997],[68.59765625,31.802978515625],[68.16103515625002,31.802978515625],[67.57822265625,31.506494140624994],[67.737890625,31.343945312499997],[67.45283203125001,31.234619140625],[66.82929687500001,31.263671875],[66.346875,30.802783203124996],[66.23125,29.86572265625],[65.09550781250002,29.559472656249994],[64.39375,29.544335937499994],[64.09873046875,29.391943359375],[63.56757812500001,29.497998046874997],[62.4765625,29.408349609374994],[62.0009765625,29.530419921874994],[61.22441406250002,29.749414062499994],[60.843359375,29.858691406249996],[61.331640625,30.363720703124997],[61.55947265625002,30.599365234375],[61.7841796875,30.831933593749994],[61.81083984375002,30.91328125],[61.81425781250002,31.072558593749996],[61.75507812500001,31.285302734374994],[61.66015625,31.382421875],[61.34648437500002,31.421630859375],[61.11074218750002,31.451123046874997],[60.854101562500006,31.483251953125],[60.82070312500002,31.495166015624996],[60.791601562500006,31.660595703124997],[60.804296875,31.73447265625],[60.7875,31.877197265625],[60.78994140625002,31.987109375],[60.827246093750006,32.16796875],[60.82929687500001,32.249414062499994],[60.71044921875,32.6],[60.57656250000002,32.994873046875],[60.560546875,33.137841796874994],[60.9169921875,33.505224609375],[60.573828125,33.588330078125],[60.4859375,33.7119140625],[60.48574218750002,34.094775390624996],[60.642675781250006,34.307177734374996],[60.88945312500002,34.31943359375],[60.80390625000001,34.418017578124996],[60.76259765625002,34.475244140624994],[60.73613281250002,34.491796875],[60.72626953125001,34.51826171875],[60.73945312500001,34.544726562499996],[60.80234375,34.554638671875],[60.8453125,34.587695312499996],[60.91474609375001,34.633984375],[60.951171875,34.653857421874996],[61.080078125,34.855615234374994],[61.1,35.272314453125],[61.18925781250002,35.31201171875],[61.24550781250002,35.474072265625],[61.27851562500001,35.51376953125],[61.281835937500006,35.55341796875],[61.26201171875002,35.619580078125],[61.3447265625,35.6294921875],[61.62099609375002,35.43232421875],[62.08964843750002,35.3796875],[62.30781250000001,35.170800781249994],[62.688085937500006,35.255322265625],[63.056640625,35.44580078125],[63.08417968750001,35.56806640625],[63.16972656250002,35.678125],[63.129980468750006,35.84619140625],[63.8625,36.012353515624994],[64.184375,36.14892578125],[64.51103515625002,36.340673828125],[64.56582031250002,36.427587890625],[64.6025390625,36.554541015625],[64.78242187500001,37.05927734375],[64.81630859375002,37.132080078125],[64.95156250000002,37.1935546875],[65.08964843750002,37.237939453124994],[65.30361328125002,37.24677734375],[65.55498046875002,37.251171875],[65.76503906250002,37.569140625],[66.471875,37.3447265625],[66.52226562500002,37.348486328125],[66.827734375,37.3712890625],[67.06884765625,37.334814453125],[67.19550781250001,37.235205078125],[67.31972656250002,37.2095703125],[67.44169921875002,37.2580078125],[67.51728515625001,37.266650390624996],[67.546484375,37.235644531249996],[67.607421875,37.222509765625],[67.7,37.22724609375],[67.7529296875,37.1998046875],[67.75898437500001,37.172216796875],[67.76601562500002,37.14013671875],[67.83447265625,37.064208984375],[67.9580078125,36.972021484375],[68.06777343750002,36.9498046875],[68.26093750000001,37.013085937499994],[68.284765625,37.036328125],[68.29951171875001,37.088427734374996],[68.38691406250001,37.1375],[68.66914062500001,37.2583984375],[68.7232421875,37.268017578125],[68.78203125000002,37.2580078125],[68.82373046875,37.270703125],[68.8384765625,37.30283203125],[68.85537109375002,37.316845703125],[68.88525390625,37.328076171875],[68.91181640625001,37.333935546875],[68.96044921875,37.325048828125],[69.18017578125,37.15830078125],[69.26484375000001,37.1083984375],[69.30390625000001,37.116943359375],[69.35380859375002,37.150048828124994],[69.41445312500002,37.207763671875],[69.4296875,37.290869140625],[69.39921875000002,37.399316406249994],[69.42011718750001,37.48671875],[69.49208984375002,37.553076171875],[69.62578125000002,37.594042968749996],[69.8208984375,37.6095703125],[69.9849609375,37.566162109375],[70.18867187500001,37.582470703125],[70.25146484375,37.66416015625],[70.25498046875,37.765380859375],[70.19941406250001,37.886035156249996],[70.21464843750002,37.9244140625],[70.41777343750002,38.075439453125],[70.7359375,38.42255859375],[71.255859375,38.306982421875],[71.33271484375001,38.170263671875],[71.27851562500001,37.918408203125],[71.319921875,37.90185546875],[71.3896484375,37.906298828124996],[71.48779296875,37.931884765625],[71.55195312500001,37.933154296874996],[71.58222656250001,37.910107421875],[71.43291015625002,37.1275390625],[71.530859375,36.845117187499994],[71.665625,36.696923828124994],[72.65742187500001,37.029052734375],[72.8955078125,37.267529296875],[73.21113281250001,37.408496093749996],[73.38291015625,37.462255859375],[73.48134765625002,37.4716796875],[73.60468750000001,37.446044921875],[73.65712890625002,37.43046875],[73.72060546875002,37.41875],[73.73378906250002,37.37578125],[73.71728515625,37.329443359375],[73.6275390625,37.261572265625],[73.65351562500001,37.23935546875],[73.749609375,37.231787109375],[74.16708984375,37.329443359375],[74.20351562500002,37.372460937499994],[74.25966796875002,37.415429687499994],[74.659375,37.394482421875],[74.73056640625,37.35703125],[74.83046875000002,37.2859375],[74.89130859375001,37.231640625],[74.84023437500002,37.225048828125],[74.76738281250002,37.249169921874994],[74.73896484375001,37.28564453125],[74.72666015625,37.29072265625],[74.6689453125,37.26669921875],[74.55898437500002,37.236621093749996],[74.37216796875,37.15771484375],[74.37617187500001,37.137353515624994],[74.49794921875002,37.0572265625],[74.52646484375,37.030664062499994],[74.54140625000002,37.02216796875]]]},"properties":{"name":"Afghanistan","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[17.57958984375,-8.099023437500009],[17.643359375000017,-8.090722656250009],[18.00878906250003,-8.107617187499983],[18.56269531250001,-7.9359375],[18.944433593750063,-8.001464843750028],[19.142675781250034,-8.001464843750028],[19.34082031249997,-7.966601562500031],[19.369921875000045,-7.706542968749986],[19.371679687500063,-7.655078124999989],[19.47988281250008,-7.472167968750028],[19.48378906250008,-7.279492187500026],[19.527636718750017,-7.144433593749952],[19.87519531250004,-6.986328124999986],[19.99746093750008,-6.976464843750023],[20.190039062500063,-6.9462890625],[20.482226562500074,-6.915820312500017],[20.59003906250001,-6.919921874999957],[20.598730468750006,-6.935156249999949],[20.536914062500045,-7.121777343749955],[20.535839843749983,-7.182812499999955],[20.558398437500045,-7.244433593749989],[20.60781250000008,-7.277734375000023],[20.910937500000017,-7.281445312499983],[21.190332031250023,-7.284960937499989],[21.751074218750034,-7.305468749999989],[21.80605468750005,-7.32861328125],[21.905371093750034,-8.693359374999943],[21.813183593750068,-9.46875],[22.19775390625,-10.040625],[22.30703125000005,-10.691308593750023],[22.203515625000023,-10.829492187500009],[22.226171875,-11.121972656250009],[22.27880859375,-11.19414062499996],[22.314941406250057,-11.198632812499994],[22.39296875000005,-11.159472656250003],[22.486132812500045,-11.086718750000017],[22.56103515625003,-11.05585937500004],[22.814746093750017,-11.08027343750004],[23.076269531250006,-11.087890624999986],[23.463964843750034,-10.969335937499991],[23.83388671875008,-11.013671874999972],[23.96650390625001,-10.871777343750011],[23.98388671875,-11.725],[23.909375,-12.636132812500009],[23.886523437500045,-12.743261718749991],[23.882421875,-12.799023437499983],[23.968066406250045,-12.956933593749994],[23.962988281250006,-12.988476562500026],[23.843164062500023,-13.0009765625],[22.209570312500006,-13.0009765625],[21.97890625000008,-13.0009765625],[21.979101562500034,-13.798730468749994],[21.979296875000074,-14.11962890625],[21.979394531249994,-14.440527343750006],[21.97978515624999,-15.955566406250014],[22.193945312500006,-16.628125],[23.380664062500017,-17.640625],[22.32421875,-17.8375],[20.74550781250008,-18.019726562499983],[20.194335937500057,-17.86367187499999],[18.95527343750004,-17.80351562499999],[18.39638671875005,-17.3994140625],[16.14843750000003,-17.39023437499999],[14.017480468750023,-17.40888671874997],[13.475976562500023,-17.04003906249997],[13.179492187500017,-16.971679687499986],[12.548144531250017,-17.212695312499974],[12.35927734375008,-17.205859375],[12.318457031250006,-17.21337890625003],[12.213378906250028,-17.209960937500043],[12.013964843750074,-17.168554687500034],[11.902539062500011,-17.226562499999957],[11.743066406250023,-17.24921875000004],[11.780078125000017,-16.87128906249997],[11.818945312500034,-16.704101562500014],[11.750878906250023,-15.831933593749966],[12.016113281250057,-15.513671874999957],[12.55048828125004,-13.437792968750003],[12.983203124999989,-12.775683593750017],[13.4169921875,-12.52041015624998],[13.597949218750017,-12.286132812500028],[13.785351562499983,-11.81279296874996],[13.833593750000063,-10.9296875],[13.33222656250004,-9.998925781250009],[12.99853515625,-9.048046875],[13.358984375,-8.687207031250026],[13.378515625000063,-8.369726562500006],[12.82343750000004,-6.954785156249955],[12.283300781250063,-6.12431640624996],[13.184375,-5.85625],[13.346484375000017,-5.863378906250006],[13.978515625,-5.857226562500003],[16.315234375000074,-5.865625],[16.431445312500045,-5.90019531249996],[16.53710937499997,-5.9658203125],[16.697265625,-6.164257812500026],[16.74296874999999,-6.618457031250003],[16.813085937500063,-6.772558593749963],[16.919433593750057,-6.93398437499998],[16.98476562500005,-7.257421874999977],[17.57958984375,-8.099023437500009]]],[[[12.50146484375,-4.5875],[12.848144531250028,-4.428906249999983],[12.881054687500068,-4.445117187499989],[12.971386718750068,-4.551757812499957],[13.048046875000068,-4.619238281250034],[13.072753906250028,-4.634765625],[13.057324218750011,-4.651074218750026],[12.947460937500011,-4.695312499999986],[12.829687499999977,-4.73662109374996],[12.451464843750017,-5.071484374999969],[12.453222656250034,-5.090625],[12.52236328125008,-5.148925781250028],[12.484570312500011,-5.71875],[12.213671875000074,-5.758691406249994],[12.177148437499994,-5.324804687499977],[12.018359375000074,-5.004296874999966],[12.50146484375,-4.5875]]]]},"properties":{"name":"Angola","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[20.06396484375,42.54726562499999],[20.485449218750006,42.223388671875],[20.566210937500017,41.873681640624994],[20.48896484375001,41.272607421874994],[20.709277343750017,40.928369140624994],[20.964257812500023,40.849902343749996],[20.95576171875001,40.775292968749994],[21.030859375,40.622460937499994],[20.881640625000017,40.467919921874994],[20.65742187500001,40.1173828125],[20.4560546875,40.065576171874994],[20.408007812500017,40.049462890624994],[20.383691406250023,40.0171875],[20.338476562500006,39.991064453125],[20.311132812500006,39.979443359375],[20.311328125000017,39.95078125],[20.381640625000017,39.841796875],[20.382421875,39.802636718749994],[20.206835937500017,39.653515625],[20.13105468750001,39.66162109375],[20.05976562500001,39.699121093749994],[20.022558593750006,39.710693359375],[20.001269531250017,39.709423828125],[19.851855468750017,40.0435546875],[19.322265625,40.407080078125],[19.45917968750001,40.40537109375],[19.3375,40.663818359375],[19.57568359375,41.640429687499996],[19.577539062500023,41.7875],[19.342382812500006,41.869091796875],[19.280664062500023,42.17255859375],[19.65449218750001,42.628564453124994],[19.78828125000001,42.476171875],[20.06396484375,42.54726562499999]]]},"properties":{"name":"Albania","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[19.66230468750001,60.187158203124994],[19.53652343750005,60.14497070312501],[19.551367187500063,60.24384765625001],[19.66230468750001,60.187158203124994]]],[[[19.989550781250074,60.351171875],[20.258886718750063,60.26127929687499],[19.799804687500057,60.08173828125001],[19.68691406250005,60.267626953125045],[19.84765625000003,60.22055664062506],[19.823046875000074,60.390185546875045],[19.989550781250074,60.351171875]]]]},"properties":{"name":"Aland","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[1.7060546875,42.503320312499994],[1.534082031250023,42.441699218749996],[1.448828125,42.437451171875],[1.428125,42.46132812499999],[1.414843750000017,42.548388671874996],[1.428320312500006,42.5958984375],[1.501367187500023,42.642724609374994],[1.568164062500017,42.635009765625],[1.709863281250023,42.604443359375],[1.739453125000011,42.575927734375],[1.740234375,42.55673828125],[1.713964843750006,42.525634765625],[1.7060546875,42.503320312499994]]]},"properties":{"name":"Andorra","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[53.927832031250006,24.177197265624983],[53.63447265625004,24.169775390624977],[53.83378906250002,24.258935546875023],[53.927832031250006,24.177197265624983]]],[[[53.3322265625001,24.258593750000045],[53.19091796874997,24.290917968749966],[53.412402343750074,24.411035156250023],[53.3322265625001,24.258593750000045]]],[[[56.29785156250003,25.650683593750045],[56.38798828125002,24.97919921875004],[56.06386718750005,24.73876953125],[56.00058593750006,24.953222656249977],[55.795703125000074,24.868115234374955],[55.76083984375006,24.24267578125],[55.92861328125005,24.215136718750074],[55.98515625000002,24.063378906249966],[55.4684570312501,23.94111328125001],[55.53164062499999,23.81904296875001],[55.1999023437501,23.034765625000034],[55.185839843750074,22.7041015625],[55.104296875000074,22.621484375000023],[52.55507812500005,22.932812499999955],[51.592578125000074,24.07885742187503],[51.56835937500003,24.286181640625074],[51.76757812500003,24.25439453125],[51.84316406250005,24.010888671875023],[52.118554687499994,23.97109375],[52.64824218750002,24.154638671875006],[53.80175781249997,24.069482421874966],[54.14794921875003,24.17119140624999],[54.39707031250006,24.278173828125034],[54.74677734375004,24.810449218750023],[55.94121093750002,25.793994140625017],[56.08046875,26.06264648437505],[56.16748046875003,26.047460937499977],[56.144628906250006,25.690527343750006],[56.29785156250003,25.650683593750045]]]]},"properties":{"name":"United Arab Emirates","childNum":3}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-64.54916992187498,-54.71621093749998],[-63.81542968749997,-54.725097656250014],[-64.637353515625,-54.90253906250001],[-64.75732421875,-54.82656249999999],[-64.54916992187498,-54.71621093749998]]],[[[-68.65322265624994,-54.85361328124999],[-68.62993164062499,-52.65263671875004],[-68.24013671875,-53.08183593749999],[-68.43115234375,-53.0552734375],[-68.48852539062497,-53.260937499999976],[-68.16113281249997,-53.30644531250001],[-68.00849609374995,-53.5640625],[-67.29423828125002,-54.049804687500014],[-66.23564453124999,-54.53349609374997],[-65.17900390624993,-54.678125],[-65.47114257812495,-54.91464843749999],[-66.5111328125,-55.032128906249945],[-67.127099609375,-54.90380859375001],[-68.65322265624994,-54.85361328124999]]],[[[-61.084716796875,-23.65644531250001],[-60.83984375000003,-23.85810546874997],[-59.89248046874994,-24.093554687499974],[-59.18725585937497,-24.56230468749999],[-57.82167968749994,-25.136425781249983],[-57.56313476562494,-25.473730468749963],[-57.943115234375,-26.05292968750001],[-58.18149414062498,-26.30742187499999],[-58.222070312499994,-26.65],[-58.618603515624955,-27.13212890624996],[-58.64174804687494,-27.196093750000017],[-58.60483398437498,-27.314355468750037],[-58.16826171874993,-27.27343749999997],[-56.437158203124966,-27.553808593749977],[-56.16406250000003,-27.321484374999983],[-55.95146484374996,-27.325683593749957],[-55.789990234374926,-27.416406249999966],[-55.71464843749996,-27.41484375],[-55.632910156250006,-27.35712890624997],[-55.59379882812502,-27.288085937500014],[-55.597265625,-27.207617187499963],[-55.56489257812498,-27.15],[-55.496728515624966,-27.11533203124999],[-55.45063476562498,-27.068359375000014],[-55.426660156249994,-27.00927734374997],[-55.13593750000001,-26.931152343749957],[-54.934472656249994,-26.70253906250001],[-54.677734375,-26.308789062499997],[-54.631933593750006,-26.005761718749994],[-54.615869140624994,-25.576074218750023],[-54.44394531249998,-25.625],[-54.15458984374999,-25.523046874999963],[-53.89116210937499,-25.66884765625001],[-53.668554687500006,-26.288183593749977],[-53.83818359375002,-27.121093750000014],[-54.32700195312495,-27.423535156249997],[-54.82910156250003,-27.55058593750003],[-55.10151367187501,-27.866796874999963],[-55.72548828125002,-28.20410156250003],[-55.68725585937497,-28.38164062499996],[-55.890527343749994,-28.370019531249994],[-56.938623046874994,-29.594824218750034],[-57.22465820312499,-29.782128906249994],[-57.40522460937501,-30.03388671875004],[-57.563867187499994,-30.139941406249974],[-57.60888671875003,-30.187792968750045],[-57.65087890624997,-30.295019531250034],[-57.71269531249996,-30.38447265624997],[-57.83120117187502,-30.495214843749963],[-57.87250976562501,-30.591015625000026],[-57.81059570312499,-30.85859375000001],[-57.88632812499998,-30.937402343749994],[-57.86840820312497,-31.104394531249994],[-57.89335937499999,-31.195312499999957],[-58.03339843750001,-31.416601562500006],[-58.053857421874994,-31.494921874999974],[-58.009667968749966,-31.534375],[-57.98798828124998,-31.576171875],[-58.00698242187494,-31.684960937499966],[-58.04233398437495,-31.769238281249997],[-58.16748046874997,-31.87265625],[-58.18901367187499,-31.924218750000037],[-58.16040039062503,-31.986523437500026],[-58.156347656250006,-32.0515625],[-58.17700195312494,-32.11904296875002],[-58.16479492187494,-32.18486328125002],[-58.119726562500006,-32.24892578125002],[-58.12304687499997,-32.321875],[-58.201171875,-32.471679687500014],[-58.219970703125,-32.563964843749986],[-58.17099609374998,-32.95927734374996],[-58.424462890624994,-33.11152343749998],[-58.54721679687498,-33.66347656249998],[-58.392480468749966,-34.192968750000034],[-58.52548828124998,-34.29619140625002],[-58.28334960937494,-34.68349609375005],[-57.54785156250003,-35.018945312499994],[-57.170654296875,-35.3625],[-57.35390624999994,-35.72031249999998],[-57.33544921875,-36.026757812499966],[-57.07617187499994,-36.296777343749994],[-56.74946289062501,-36.346484375],[-56.67202148437494,-36.85126953124998],[-57.546972656250034,-38.085644531250026],[-58.17919921874994,-38.435839843750045],[-59.82832031250001,-38.83818359375003],[-61.112207031249994,-38.99296875000003],[-61.84790039062497,-38.961816406249994],[-62.33476562499993,-38.80009765625],[-62.29506835937502,-39.24326171874996],[-62.053662109374955,-39.373828125],[-62.179345703124994,-39.38046875000002],[-62.076806640624966,-39.46152343750002],[-62.131542968749926,-39.82539062499998],[-62.28691406249996,-39.89531250000002],[-62.40185546875003,-40.19658203125002],[-62.24633789062494,-40.674609374999974],[-62.39501953124997,-40.89082031249997],[-62.95903320312493,-41.10966796875006],[-63.621777343749955,-41.15976562499996],[-64.86948242187503,-40.735839843750014],[-65.13339843749998,-40.88066406250003],[-64.98637695312496,-42.102050781249986],[-64.53774414062494,-42.25458984374998],[-64.57099609374998,-42.416015625],[-64.42041015625003,-42.43378906249998],[-64.10087890624993,-42.395117187500006],[-64.06118164062494,-42.266113281250014],[-64.228515625,-42.21826171874996],[-63.795556640624994,-42.113867187500006],[-63.6298828125,-42.28271484375003],[-63.61733398437502,-42.695800781249986],[-64.03476562499998,-42.88125],[-64.48784179687499,-42.51347656250006],[-64.97070312499997,-42.66630859375002],[-65.02690429687496,-42.75888671874996],[-64.31914062499999,-42.968945312500026],[-64.83994140624998,-43.18886718749998],[-65.25234374999997,-43.571875],[-65.26552734375,-44.2796875],[-65.64760742187502,-44.661425781250045],[-65.63876953125,-45.0078125],[-66.19013671874995,-44.96474609375002],[-66.94140625,-45.25732421875003],[-67.59956054687495,-46.05253906250003],[-67.5064453125,-46.44277343749995],[-66.77685546874994,-47.005859375],[-65.99853515625,-47.09375],[-65.73808593749999,-47.34492187499998],[-65.81430664062495,-47.63818359374996],[-66.22524414062502,-47.826757812500006],[-65.93422851562497,-47.826757812500006],[-65.81005859374997,-47.941113281250026],[-67.46630859375,-48.95175781250004],[-67.68486328125002,-49.2466796875],[-67.82597656249999,-49.91962890625005],[-68.2572265625,-50.104589843749984],[-68.66757812500003,-49.75253906250003],[-68.66162109374997,-49.93574218750005],[-68.97958984375,-50.003027343749984],[-68.59794921874996,-50.00947265624997],[-68.421875,-50.15791015625001],[-69.04477539062495,-50.49912109374998],[-69.35859374999993,-51.028125],[-69.20102539062498,-50.99365234375001],[-69.03530273437497,-51.48896484375002],[-69.46542968750003,-51.58447265625003],[-68.96533203125003,-51.67714843749999],[-68.443359375,-52.35664062500004],[-69.96025390624993,-52.00820312500002],[-71.91865234374995,-51.98955078125004],[-72.40766601562501,-51.54082031250002],[-72.34023437499997,-50.68183593749999],[-72.50981445312496,-50.607519531250034],[-73.15292968749998,-50.73828125000003],[-73.50126953124996,-50.125292968750024],[-73.55419921875,-49.463867187500014],[-73.46157226562497,-49.31386718750001],[-73.13525390625,-49.30068359374999],[-73.03364257812501,-49.014355468750004],[-72.65126953125,-48.84160156249998],[-72.582861328125,-48.47539062499999],[-72.35473632812497,-48.36582031250005],[-72.32832031250001,-48.11005859374998],[-72.517919921875,-47.87636718749998],[-72.34594726562497,-47.49267578124997],[-71.90498046875001,-47.201660156250014],[-71.94023437499999,-46.83125],[-71.69965820312501,-46.6513671875],[-71.87568359374998,-46.160546875],[-71.63154296874998,-45.95371093749998],[-71.74619140624998,-45.57890625],[-71.34931640624995,-45.33193359374995],[-71.5962890625,-44.97919921875004],[-72.04169921874998,-44.90419921875004],[-72.06372070312503,-44.771875],[-71.26113281250002,-44.763085937499966],[-71.15971679687496,-44.56025390625004],[-71.21259765624998,-44.44121093750003],[-71.82001953124993,-44.38310546875],[-71.68007812500002,-43.92958984374998],[-71.90498046875001,-43.34755859374998],[-71.750634765625,-43.237304687499986],[-72.14643554687498,-42.990039062499974],[-72.10820312499993,-42.25185546874995],[-71.75,-42.04677734375001],[-71.91127929687497,-41.650390624999986],[-71.93212890624994,-40.69169921874999],[-71.70898437499997,-40.381738281249994],[-71.81831054687493,-40.17666015624995],[-71.65976562499998,-40.02080078125],[-71.71992187499995,-39.63525390624997],[-71.53945312499997,-39.60244140624995],[-71.40156249999995,-38.93505859374996],[-70.858642578125,-38.60449218750003],[-71.16757812499998,-37.76230468749996],[-71.19218750000002,-36.84365234375004],[-71.05551757812498,-36.52373046874996],[-70.40478515625,-36.06171874999998],[-70.41572265625001,-35.52304687500002],[-70.55517578125,-35.246875],[-70.39316406250003,-35.146875],[-70.05205078124999,-34.30078124999997],[-69.85244140625,-34.224316406250026],[-69.81962890624999,-33.28378906249999],[-70.08486328125002,-33.20175781249998],[-70.02197265625,-32.88457031250002],[-70.36376953125,-32.08349609374997],[-70.25439453125,-31.957714843750026],[-70.585205078125,-31.569433593749963],[-70.51958007812493,-31.1484375],[-70.30908203124994,-31.02265625000004],[-70.15322265625,-30.360937499999963],[-69.95634765624996,-30.35820312500003],[-69.84428710937493,-30.175],[-69.95996093749997,-30.078320312500026],[-70.02680664062501,-29.324023437500017],[-69.82788085937497,-29.10322265624997],[-69.65693359374995,-28.413574218749986],[-69.17441406249998,-27.924707031250037],[-68.84633789062494,-27.153710937499994],[-68.59208984375002,-27.140039062499966],[-68.31865234374999,-26.973242187500006],[-68.59160156249999,-26.47041015624997],[-68.41450195312498,-26.153710937500023],[-68.59208984375002,-25.420019531250034],[-68.38422851562495,-25.091894531249977],[-68.56201171875,-24.74736328125003],[-68.25029296875002,-24.391992187500023],[-67.35620117187503,-24.033789062499963],[-67.00878906249994,-23.00136718750005],[-67.19487304687493,-22.821679687500037],[-66.99111328125,-22.509863281250006],[-66.71171874999999,-22.216308593749986],[-66.36518554687501,-22.113769531249957],[-66.32246093750001,-22.053125],[-66.28212890624997,-21.94746093750001],[-66.24760742187496,-21.83046875],[-66.22016601562495,-21.802539062499974],[-66.174658203125,-21.805664062499986],[-66.09858398437495,-21.83505859375002],[-66.05859375,-21.87949218750002],[-65.86015624999999,-22.019726562499983],[-65.77104492187493,-22.099609375000014],[-65.68618164062497,-22.11025390625005],[-65.51879882812497,-22.094531250000045],[-64.99262695312498,-22.109667968750017],[-64.60551757812499,-22.228808593750045],[-64.52363281250001,-22.37158203125],[-64.47773437499998,-22.485351562499986],[-64.44550781249998,-22.585351562500023],[-64.37397460937498,-22.761035156250017],[-64.32529296875,-22.82763671875],[-64.30791015624993,-22.7953125],[-64.26640625000002,-22.60332031249996],[-63.97612304687502,-22.072558593750003],[-63.92167968749993,-22.028613281250017],[-62.843359375,-21.997265625000026],[-62.62597656250003,-22.29042968749998],[-62.54155273437496,-22.349609374999957],[-62.37250976562498,-22.439160156249997],[-62.21416015624996,-22.612402343750034],[-61.798535156249955,-23.18203125],[-61.084716796875,-23.65644531250001]]]]},"properties":{"name":"Argentina","childNum":3}},{"geometry":{"type":"Polygon","coordinates":[[[46.490625,38.90668945312498],[46.1144531250001,38.877783203125034],[45.977441406249994,39.24389648437503],[45.76630859375004,39.37846679687499],[45.78447265625002,39.54560546875001],[45.456835937500074,39.494482421875006],[45.15283203125003,39.58266601562502],[45.03164062500005,39.76513671874997],[44.76826171875004,39.70351562500005],[44.28925781250004,40.040380859375006],[43.66621093750004,40.12636718750002],[43.56933593750003,40.48237304687498],[43.72265624999997,40.71953124999999],[43.43945312500003,41.10712890625001],[44.077246093750006,41.182519531249994],[44.81132812500002,41.259375],[45.001367187499994,41.29096679687498],[45.188574218750006,41.14741210937504],[45.07050781250004,41.075585937499966],[45.5875,40.846923828125],[45.37890624999997,40.67358398437506],[45.45439453125002,40.532373046874966],[45.96464843750002,40.233789062499966],[45.8859375000001,40.024853515624955],[45.57978515625004,39.9775390625],[46.202050781249994,39.59448242187503],[46.48144531249997,39.55517578125003],[46.36523437500003,39.402490234374994],[46.584765625000074,39.22368164062499],[46.400292968749994,39.1921875],[46.490625,38.90668945312498]]]},"properties":{"name":"Armenia","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-170.72626953125,-14.351171875],[-170.8205078125,-14.312109375],[-170.568115234375,-14.266796875000011],[-170.72626953125,-14.351171875]]]},"properties":{"name":"American Samoa","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[69.2824218750001,-49.05888671875002],[69.16718750000004,-48.88291015624996],[69.36875,-48.89042968749998],[69.2824218750001,-49.05888671875002]]],[[[69.18486328125002,-49.10957031250004],[69.59277343749997,-48.97099609375005],[69.64404296875003,-49.11738281250003],[69.40507812500002,-49.18173828125],[69.5423828125,-49.25566406250005],[70.32021484375005,-49.05859374999996],[70.55546875000007,-49.201464843750024],[70.38613281250005,-49.433984374999966],[70.16582031250002,-49.34296874999998],[69.75996093750004,-49.430175781249986],[69.98642578125006,-49.58164062500003],[70.2477539062501,-49.53066406250003],[70.12431640625002,-49.70439453124999],[69.153125,-49.5296875],[68.99296875000007,-49.704980468750016],[68.81474609375002,-49.69960937499999],[68.88339843750006,-49.16494140624995],[68.76953125000003,-49.06591796875003],[69.00244140624997,-48.661230468750006],[69.13613281250005,-48.86103515625003],[69.05214843750005,-49.08193359375001],[69.18486328125002,-49.10957031250004]]],[[[51.83457031250006,-46.43994140625],[51.65927734375006,-46.37363281249999],[51.7418945312501,-46.32685546874997],[51.83457031250006,-46.43994140625]]]]},"properties":{"name":"Fr. S. Antarctic Lands","childNum":3}},{"geometry":{"type":"Polygon","coordinates":[[[-61.71606445312503,17.037011718749994],[-61.85966796874996,17.013330078124966],[-61.887109374999966,17.09814453125],[-61.81728515624994,17.168945312500057],[-61.71606445312503,17.037011718749994]]]},"properties":{"name":"Antigua and Barb.","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[147.35605468750006,-43.396972656250014],[147.30888671875007,-43.50078125000002],[147.10498046875003,-43.43115234374996],[147.28388671875004,-43.278906250000034],[147.35605468750006,-43.396972656250014]]],[[[145.04296875000003,-40.78671875],[145.28300781250002,-40.76992187500002],[146.31748046875006,-41.16347656250001],[146.72343750000002,-41.07802734375001],[146.84814453124997,-41.16806640624996],[146.98984375000006,-40.99238281249997],[147.45478515625004,-41.00166015624998],[147.62167968750012,-40.844726562499986],[147.87294921875005,-40.87255859374997],[147.96875,-40.779589843750045],[148.215234375,-40.85488281250002],[148.34257812500007,-42.21533203124997],[148.21367187500002,-41.97001953125],[147.92441406250006,-42.5724609375],[147.94541015625006,-43.18183593749997],[147.7858398437501,-43.22001953125002],[147.69892578125004,-43.12255859374997],[147.64794921874997,-43.02060546874999],[147.8,-42.928125],[147.57382812500006,-42.84570312499997],[147.4523437500001,-43.03339843750001],[147.29794921875006,-42.790917968749994],[147.24501953125005,-43.21591796874999],[146.99697265625005,-43.15634765625002],[147.07734375000004,-43.27587890625003],[146.87392578125,-43.6125],[146.54853515625004,-43.50888671874999],[146.04316406250004,-43.547167968749974],[145.99443359375007,-43.37607421875002],[146.20800781249997,-43.31621093749999],[145.8732421875001,-43.29238281250002],[145.48759765625002,-42.92666015625004],[145.19882812500006,-42.23085937500004],[145.46826171874997,-42.492871093750026],[145.51660156249997,-42.3544921875],[145.33105468750003,-42.14707031250002],[145.23486328124997,-42.19697265624997],[145.23818359375,-42.01962890624999],[144.76611328125003,-41.39003906249998],[144.64609375000006,-40.980859375],[144.71855468750002,-40.67226562500002],[145.04296875000003,-40.78671875]]],[[[148.23691406250006,-40.515136718749986],[148.18779296875007,-40.592578125000045],[148.11728515625012,-40.52148437499996],[148.23691406250006,-40.515136718749986]]],[[[144.784375,-40.506738281249966],[144.74804687499997,-40.589453125000034],[144.7833984375001,-40.434863281249974],[144.784375,-40.506738281249966]]],[[[148.32626953125006,-40.30693359375003],[148.40400390625004,-40.486523437500026],[148.02011718750012,-40.40419921874995],[148.32626953125006,-40.30693359375003]]],[[[148.000390625,-39.75761718750003],[148.29736328125003,-39.985742187499966],[148.31357421875012,-40.173535156250026],[148.10566406250004,-40.26210937499995],[147.76718750000012,-39.87031249999998],[148.000390625,-39.75761718750003]]],[[[143.92792968750004,-40.116113281249966],[143.83857421875004,-39.90410156250003],[144.00078125000007,-39.580175781250034],[144.14101562500005,-39.953808593750026],[143.92792968750004,-40.116113281249966]]],[[[145.31445312500003,-38.49082031249996],[145.35507812500012,-38.55703124999995],[145.12841796875003,-38.52763671875],[145.31445312500003,-38.49082031249996]]],[[[137.59648437500007,-35.73867187499998],[137.92890625000004,-35.72607421875],[138.12343750000005,-35.85234375],[137.67089843749997,-35.897949218750014],[137.44843750000004,-36.07480468749999],[137.20957031250012,-35.982421875],[136.7550781250001,-36.03310546875002],[136.540625,-35.89013671875003],[136.63867187499997,-35.74882812500002],[137.33408203125006,-35.59248046875004],[137.58496093749997,-35.620214843750006],[137.59648437500007,-35.73867187499998]]],[[[153.53876953125004,-27.436425781250037],[153.42656250000002,-27.70644531249998],[153.43544921875,-27.40537109375002],[153.53876953125004,-27.436425781250037]]],[[[113.18300781250005,-26.053125],[112.96425781250005,-25.78310546875001],[112.94707031250002,-25.531542968750017],[113.18300781250005,-26.053125]]],[[[153.07744140625002,-25.75078125],[152.97666015625012,-25.551367187499963],[153.03808593750003,-25.193164062500003],[153.22753906249997,-25.00576171875001],[153.14375,-24.814843750000023],[153.25693359375012,-24.72890625],[153.35019531250012,-25.063085937499963],[153.07744140625002,-25.75078125]]],[[[151.14658203125006,-23.49082031250002],[151.24013671875,-23.529687500000037],[151.23828124999997,-23.77578125],[151.03330078125006,-23.530175781250037],[151.14658203125006,-23.49082031250002]]],[[[115.44619140625005,-20.78779296875001],[115.31806640625004,-20.850585937500014],[115.43457031249997,-20.66796875000003],[115.44619140625005,-20.78779296875001]]],[[[149.04375,-20.29150390624997],[148.93886718750005,-20.283691406249986],[148.98105468750012,-20.153515625000026],[149.04375,-20.29150390624997]]],[[[146.27832031249997,-18.23125],[146.29882812499997,-18.48476562500005],[146.09882812500004,-18.251757812500003],[146.27832031249997,-18.23125]]],[[[139.45917968750004,-17.11455078124996],[139.49277343750006,-16.990429687499983],[139.57089843750006,-17.09443359375004],[139.45917968750004,-17.11455078124996]]],[[[139.50781250000003,-16.57304687499996],[139.1595703125,-16.74169921875003],[139.29296875000003,-16.467285156249986],[139.58789062499997,-16.39521484374997],[139.69775390624997,-16.514941406250017],[139.50781250000003,-16.57304687499996]]],[[[137.09365234375005,-15.778125],[136.94267578125002,-15.711718749999989],[137.00957031250007,-15.594824218749977],[137.09365234375005,-15.778125]]],[[[124.59726562500006,-15.40195312500002],[124.52421875000002,-15.421484375],[124.51933593750002,-15.26748046874998],[124.59726562500006,-15.40195312500002]]],[[[125.19882812500006,-14.57949218749998],[125.0912109375,-14.59169921874998],[125.15996093750002,-14.456054687499972],[125.19882812500006,-14.57949218749998]]],[[[136.71464843750002,-13.803906249999983],[136.89082031250004,-13.786621093750014],[136.74531250000004,-14.072656250000023],[136.95078125000006,-14.184277343750026],[136.89433593750002,-14.293066406249977],[136.33544921875003,-14.211816406250037],[136.42470703125,-13.864843749999963],[136.6556640625,-13.675878906250006],[136.71464843750002,-13.803906249999983]]],[[[136.23740234375006,-13.824511718750003],[136.12265625000012,-13.816601562499983],[136.21542968750012,-13.664746093750054],[136.23740234375006,-13.824511718750003]]],[[[136.33867187500007,-11.602343749999989],[136.18027343750006,-11.676757812499957],[136.47929687500002,-11.465917968749991],[136.33867187500007,-11.602343749999989]]],[[[130.45927734375007,-11.679296875000034],[130.60625,-11.816601562500026],[130.04326171875007,-11.787304687500011],[130.19755859375007,-11.658203125],[130.15283203124997,-11.477539062499972],[130.29492187499997,-11.33681640624998],[130.45927734375007,-11.679296875000034]]],[[[130.6188476562501,-11.376074218749991],[131.02304687500006,-11.334375],[131.26826171875004,-11.18984375],[131.53857421874997,-11.436914062500037],[130.95097656250007,-11.926464843750026],[130.51191406250004,-11.617871093749955],[130.38457031250002,-11.1921875],[130.6188476562501,-11.376074218749991]]],[[[136.59853515625,-11.378906249999943],[136.52656250000004,-11.438867187499994],[136.78027343749997,-11.0125],[136.59853515625,-11.378906249999943]]],[[[132.59335937500006,-11.302832031249991],[132.48378906250005,-11.037304687499983],[132.57880859375004,-10.968847656249977],[132.59335937500006,-11.302832031249991]]],[[[143.17890625000004,-11.954492187499966],[143.11025390625,-12.303515625000017],[143.40156250000004,-12.639941406249989],[143.5866210937501,-13.443652343750031],[143.54843750000012,-13.74101562499996],[143.75634765625003,-14.348828124999969],[143.96181640625005,-14.462890625000028],[144.473046875,-14.231835937500023],[144.64804687500006,-14.492480468750017],[145.28769531250006,-14.943164062499989],[145.42607421875002,-16.406152343749966],[145.75478515625,-16.879492187500034],[145.91210937499997,-16.9125],[146.12587890625005,-17.63525390625],[146.03222656249997,-18.272851562500037],[146.3332031250001,-18.55371093749997],[146.38339843750006,-18.97705078124997],[147.13876953125006,-19.39316406250002],[147.41855468750012,-19.378125],[147.7423828125001,-19.770117187499977],[148.759375,-20.28955078125003],[148.88476562499997,-20.480859375],[148.72998046874997,-20.4677734375],[148.68369140625012,-20.58017578124999],[149.20488281250007,-21.125097656249977],[149.45410156249997,-21.57871093750002],[149.70390625000002,-22.440527343750006],[149.82246093750004,-22.389843749999983],[149.97441406250007,-22.55068359374998],[149.94189453125003,-22.30810546875003],[150.07617187500003,-22.16445312499998],[150.54130859375002,-22.55908203125],[150.56855468750004,-22.38398437500004],[150.67246093750012,-22.418164062499983],[150.84316406250005,-23.4580078125],[151.15380859375003,-23.784082031249994],[151.83164062500006,-24.12294921875001],[152.12988281250003,-24.59755859374998],[152.45634765625007,-24.802441406249983],[152.65429687499997,-25.201953125000017],[152.91347656250005,-25.432128906250014],[152.98496093750012,-25.816210937500003],[153.16494140625,-25.964160156250045],[153.11679687500006,-27.194433593750034],[153.57568359375003,-28.24052734374999],[153.6168945312501,-28.673046875],[153.03056640625002,-30.563378906249994],[152.94394531250012,-31.43486328124999],[152.5592773437501,-32.045703125],[152.4704101562501,-32.439062500000034],[152.13652343750002,-32.678125],[152.1642578125001,-32.75742187499996],[151.812890625,-32.90107421875001],[151.29208984375012,-33.580957031249966],[151.28027343750003,-33.92666015625005],[151.12480468750007,-34.00527343749998],[151.23154296875006,-34.0296875],[150.8712890625001,-34.49912109374996],[150.80458984375,-35.01289062500001],[150.19531249999997,-35.83359374999996],[149.93271484375012,-37.528515625000026],[149.480859375,-37.77119140625],[147.87675781250002,-37.93417968749998],[146.8568359375,-38.663476562499966],[146.21748046875004,-38.72744140625004],[146.33662109375004,-38.89423828125],[146.46660156250007,-38.84033203125003],[146.40000000000012,-39.14550781250003],[146.1583984375001,-38.86572265624996],[145.93535156250002,-38.90175781250002],[145.79082031250007,-38.66699218749997],[145.39726562500002,-38.53535156249998],[145.54218750000004,-38.39384765625002],[145.4757812500001,-38.24375],[145.29277343750002,-38.237597656249974],[144.95957031250012,-38.500781250000045],[144.71777343749997,-38.34033203125004],[144.91142578125007,-38.34404296874999],[145.11992187500007,-38.091308593750014],[144.89130859375004,-37.899804687499994],[144.39550781250003,-38.13691406249998],[144.6652343750001,-38.20996093750003],[143.53896484375005,-38.82089843749998],[142.45585937500002,-38.38632812499999],[141.725,-38.27138671875002],[141.5939453125001,-38.38779296875002],[141.42421875,-38.36347656250004],[141.0109375000001,-38.07695312500003],[140.39042968750007,-37.89667968749998],[139.78427734375012,-37.24580078124998],[139.85732421875,-36.662109375],[139.72900390625003,-36.37138671875002],[138.9689453125001,-35.58076171874997],[139.17802734375007,-35.52304687500002],[139.289453125,-35.61132812499997],[139.28251953125002,-35.375390624999966],[138.521875,-35.6423828125],[138.184375,-35.612695312499994],[138.5111328125,-35.02441406249996],[138.48994140625004,-34.76357421875002],[138.0892578125,-34.16982421875002],[137.69169921875002,-35.14296875000004],[136.88359375000007,-35.23974609375004],[137.01425781250012,-34.91582031250003],[137.39101562500005,-34.91328124999997],[137.49384765625004,-34.16113281250003],[137.9318359375001,-33.57910156250003],[137.85234375000007,-33.20078124999996],[137.99257812500005,-33.094238281250014],[137.78320312500003,-32.578125],[137.79091796875,-32.82324218749996],[137.44228515625,-33.1935546875],[137.23730468750003,-33.62949218749999],[136.43066406249997,-34.02998046875004],[135.891015625,-34.660937499999974],[135.96972656249997,-34.98183593749998],[135.7923828125,-34.863281249999986],[135.64755859375006,-34.93964843750001],[135.12304687499997,-34.58574218750003],[135.21679687499997,-34.48730468749996],[135.45,-34.58105468749996],[135.21894531250004,-33.959765625000045],[134.88876953125012,-33.62636718749998],[134.79101562499997,-33.32832031250001],[134.60771484375002,-33.19013671875001],[134.30126953124997,-33.16503906249996],[134.17353515625004,-32.979101562500006],[134.10039062500007,-32.748632812500034],[134.22714843750006,-32.73056640624999],[134.23417968750007,-32.54853515625004],[133.66533203125007,-32.207226562500054],[133.21210937500004,-32.18378906249998],[132.75742187500012,-31.95625],[132.21464843750002,-32.00712890624996],[131.14365234375006,-31.49570312500005],[130.78300781250002,-31.604003906249986],[129.1876953125001,-31.659960937500017],[127.31982421874997,-32.2640625],[125.91718750000004,-32.296972656250034],[124.75878906250003,-32.882714843749994],[124.24375,-33.01523437499999],[123.50683593749997,-33.916210937500054],[122.15097656250006,-33.99179687499999],[122.06113281250006,-33.874414062499966],[121.40507812500007,-33.826757812500034],[119.85410156250012,-33.97470703124998],[119.45058593750005,-34.368261718750034],[118.89531250000007,-34.47988281250004],[118.13554687500002,-34.98662109374999],[117.58193359375005,-35.09775390624998],[116.51718750000012,-34.98789062499998],[115.98671875000005,-34.795019531250034],[115.56503906250012,-34.42578125000003],[115.00878906250003,-34.25585937499997],[114.9938476562501,-33.51533203125],[115.3587890625,-33.63994140624999],[115.68300781250005,-33.19287109375003],[115.6984375000001,-31.694531250000054],[115.07792968750007,-30.560449218750023],[114.85683593750005,-29.14296875],[114.16513671875012,-28.08066406250002],[114.028125,-27.34726562499999],[113.18476562500004,-26.182226562499963],[113.32324218749997,-26.243847656249997],[113.35605468750012,-26.080468750000023],[113.58164062500006,-26.558105468749986],[113.73369140625002,-26.59511718749998],[113.83642578125003,-26.50058593749999],[113.85283203125007,-26.33212890625005],[113.39531250000002,-25.71328125],[113.4513671875001,-25.599121093750014],[113.7130859375001,-25.83076171875004],[113.72373046875006,-26.129785156250037],[113.85390625,-26.01445312499999],[113.99199218750007,-26.32148437500001],[114.09033203124997,-26.393652343749963],[114.21572265625,-26.289453124999966],[114.2142578125,-25.851562500000014],[113.41767578125004,-24.435644531250034],[113.48984375000012,-23.869628906250014],[113.7570312500001,-23.418164062500054],[113.79511718750004,-22.91455078125003],[113.68281250000004,-22.637792968749963],[114.02285156250005,-21.881445312499977],[114.12392578125005,-21.828613281249957],[114.14160156250003,-22.483105468749983],[114.37773437500007,-22.341503906249997],[114.70927734375002,-21.82343749999997],[115.45615234375012,-21.49169921874997],[116.0109375000001,-21.030371093749963],[116.7067382812501,-20.653808593749986],[117.40625,-20.72119140625003],[118.19921875000003,-20.37519531249997],[118.75146484374997,-20.261914062499983],[119.10449218749997,-19.995312500000026],[119.58593750000003,-20.03828125],[120.99794921875,-19.604394531249966],[121.33769531250002,-19.31992187500002],[121.83378906250002,-18.477050781249986],[122.34541015625004,-18.11191406250002],[122.14746093749997,-17.54902343750001],[122.2609375000001,-17.135742187500014],[122.72041015625004,-16.78769531249999],[122.97070312499997,-16.436816406250003],[123.56308593750006,-17.520898437499966],[123.59355468750007,-17.03037109375005],[123.83105468750003,-17.120800781249997],[123.8744140625,-16.918652343750026],[123.4904296875001,-16.49072265624997],[123.62597656249997,-16.416308593750003],[123.60703125000006,-16.224023437499994],[123.72890625,-16.192480468749963],[123.85917968750007,-16.38232421875],[124.04443359374997,-16.264941406249974],[124.30039062500006,-16.388281249999977],[124.77197265624997,-16.40263671874996],[124.40488281250006,-16.298925781249977],[124.41640625,-16.133496093750026],[124.5768554687501,-16.11367187499998],[124.64853515625012,-15.870214843750034],[124.50429687500005,-15.972460937499989],[124.38164062500002,-15.758203125000037],[124.43955078125012,-15.493554687500037],[124.56162109375012,-15.496289062499969],[124.69257812500004,-15.273632812499997],[125.06298828125003,-15.44228515624998],[125.0729492187501,-15.306738281249991],[124.90917968750003,-15.310058593749957],[124.83906250000004,-15.160742187500006],[125.03818359375012,-15.004101562499969],[125.35566406250004,-15.119824218750011],[125.17871093749997,-14.714746093749994],[125.57978515625004,-14.483203124999989],[125.62773437500002,-14.256640625000017],[125.70458984374997,-14.29140625],[125.66162109375003,-14.529492187500011],[125.81953125000004,-14.469140624999966],[125.890625,-14.61796875],[126.0207031250001,-14.49453125],[126.0539062500001,-13.977246093750026],[126.1842773437501,-14.00205078125002],[126.25849609375004,-14.163574218749972],[126.403125,-14.018945312499994],[126.5697265625,-14.160937499999974],[126.7806640625,-13.955175781249977],[126.77558593750004,-13.788476562500037],[126.90322265625,-13.744140624999972],[127.45761718750006,-14.031445312499969],[128.18046875000007,-14.711621093749983],[128.06943359375012,-15.329296874999969],[128.15546875000004,-15.225585937499972],[128.25468750000002,-15.298535156250011],[128.175,-15.043164062500026],[128.57578125000006,-14.774511718750006],[129.05820312500012,-14.884375],[129.21582031249997,-15.160253906249991],[129.26757812500003,-14.871484375000051],[129.63476562499997,-15.139746093749991],[129.637109375,-14.850976562500037],[129.84873046875012,-14.828906249999989],[129.60468750000004,-14.647070312499977],[129.69794921875004,-14.557421875000017],[129.37871093750002,-14.39248046874998],[129.70986328125,-13.979980468749972],[129.83886718749997,-13.572949218749997],[130.25976562500003,-13.30224609375],[130.1349609375001,-13.145507812499957],[130.1681640625001,-12.957421875],[130.39990234374997,-12.68789062499999],[130.61748046875007,-12.646875],[130.62265625000006,-12.43105468749998],[130.8673828125001,-12.557812499999955],[130.87382812500007,-12.367187500000028],[131.29160156250006,-12.067871093749972],[131.43828125000002,-12.27695312500002],[132.06406250000006,-12.28076171875],[132.25322265625007,-12.186035156249972],[132.41103515625,-12.295117187499997],[132.51054687500002,-12.134863281250034],[132.71279296875,-12.1234375],[132.63046875000012,-12.035156249999972],[132.67421875000005,-11.649023437499991],[132.47519531250006,-11.491503906249974],[132.07285156250006,-11.474707031250006],[131.82246093750004,-11.302441406249997],[131.96152343750006,-11.180859375000011],[132.15546875000004,-11.311132812499991],[132.33398437499997,-11.223535156249994],[132.6828125000001,-11.505566406249997],[132.96103515625012,-11.407324218749963],[133.18525390625004,-11.705664062499991],[133.90419921875,-11.832031249999972],[134.4173828125,-12.052734375],[134.73027343750002,-11.984375],[135.02968750000005,-12.19375],[135.2179687500001,-12.221679687499957],[135.92246093750012,-11.825781250000034],[135.70439453125007,-12.209863281250037],[136.00849609375004,-12.19140625],[136.08183593750007,-12.422460937500006],[136.26064453125,-12.433789062499997],[136.32851562500005,-12.305566406249994],[136.24990234375,-12.173046875],[136.44335937499997,-11.951464843749974],[136.7194335937501,-12.226464843749952],[136.89746093749997,-12.243554687499966],[136.94746093750004,-12.34990234374996],[136.53701171875,-12.784277343749991],[136.59433593750012,-13.003808593750051],[136.46103515625006,-13.225195312500034],[136.29414062500004,-13.137988281250031],[135.92734375000012,-13.304296874999977],[135.95449218750005,-13.934863281250017],[135.40517578125005,-14.758203124999966],[135.4533203125001,-14.923144531250003],[136.20537109375002,-15.403417968749963],[136.29140625000005,-15.570117187500003],[136.70488281250007,-15.685253906250011],[136.78466796874997,-15.89423828125004],[137.00214843750004,-15.878320312499994],[137.70371093750006,-16.233007812499963],[138.24501953125005,-16.718359374999977],[139.00986328125006,-16.899316406249994],[139.2484375,-17.328613281249957],[140.03583984375004,-17.702636718749957],[140.51113281250005,-17.62451171875003],[140.83046875,-17.414453125000037],[141.29140625,-16.46347656250002],[141.62548828124997,-15.056640625000014],[141.52294921875003,-14.470117187499994],[141.59433593750006,-14.152832031250014],[141.47255859375,-13.797558593750011],[141.64541015625,-13.259082031250003],[141.61357421875002,-12.943457031250006],[141.92978515625006,-12.73984375],[141.67773437500003,-12.491406250000011],[141.68857421875012,-12.351074218750028],[141.87050781250005,-11.9755859375],[141.96113281250004,-12.054296874999963],[142.168359375,-10.946582031249974],[142.45644531250005,-10.707324218749989],[142.60507812500012,-10.748242187499983],[142.55273437500003,-10.874414062500023],[142.7796875,-11.115332031249977],[142.87255859374997,-11.821386718750034],[143.17890625000004,-11.954492187499966]]],[[[142.2748046875,-10.704785156250011],[142.19140624999997,-10.762011718750031],[142.1310546875001,-10.640625],[142.19794921875004,-10.59199218750004],[142.2748046875,-10.704785156250011]]]]},"properties":{"name":"Australia","childNum":30}},{"geometry":{"type":"Polygon","coordinates":[[[16.953125,48.598828125],[16.86542968750001,48.3869140625],[17.147363281250023,48.00595703125],[17.06660156250001,47.707568359374996],[16.421289062500023,47.674462890624994],[16.676562500000017,47.536035156249994],[16.44287109375,47.39951171875],[16.453417968750017,47.006787109375],[16.093066406250017,46.86328125],[15.957617187500006,46.677636718749994],[14.893261718750011,46.605908203125],[14.5498046875,46.399707031249996],[13.7,46.520263671875],[13.490039062500017,46.555566406249994],[13.3515625,46.557910156249996],[13.16875,46.57265625],[12.479199218750011,46.672509765624994],[12.38828125,46.70263671875],[12.330078125,46.759814453124996],[12.267968750000023,46.835888671875],[12.154101562500017,46.93525390625],[12.130761718750023,46.98476562499999],[12.16552734375,47.028173828125],[12.201269531250006,47.060888671875],[12.197167968750023,47.075],[12.16943359375,47.08212890625],[11.775683593750017,46.986083984375],[11.527539062500011,46.997412109375],[11.433203125,46.983056640624994],[11.244433593750017,46.97568359375],[11.133886718750006,46.936181640624994],[11.0634765625,46.859130859375],[11.025097656250011,46.79697265625],[10.993261718750006,46.777001953124994],[10.92734375,46.769482421875],[10.828906250000017,46.775244140625],[10.759765625,46.793310546875],[10.689257812500017,46.84638671875],[10.579785156250011,46.8537109375],[10.479394531250023,46.855126953124994],[10.452832031250011,46.86494140625],[10.45458984375,46.8994140625],[10.414941406250023,46.964404296874996],[10.349414062500017,46.98476562499999],[10.133496093750011,46.851513671875],[9.580273437500011,47.057373046875],[9.527539062500011,47.270751953125],[9.625878906250023,47.467041015625],[9.524023437500006,47.52421875],[9.748925781250023,47.575537109375],[9.839160156250017,47.552294921874996],[9.971582031250023,47.505322265625],[10.034082031250023,47.473583984375],[10.059863281250017,47.449072265625],[10.066308593750023,47.393359375],[10.200292968750006,47.363427734374994],[10.183007812500023,47.27880859375],[10.369140625,47.366064453125],[10.40390625,47.4169921875],[10.439453125,47.5515625],[10.482812500000023,47.541796875],[10.65869140625,47.547216796875],[10.741601562500023,47.52412109375],[10.873046875,47.52021484375],[11.0419921875,47.393115234374996],[12.185644531250006,47.61953125],[12.203808593750011,47.646728515625],[12.196875,47.70908203125],[12.209277343750017,47.71826171875],[12.268359375000017,47.702734375],[12.353540736607165,47.70264787946429],[12.492553013392856,47.68551897321428],[12.685839843750017,47.669335937499994],[12.771386718750023,47.639404296875],[12.796191406250017,47.60703125],[12.781152343750023,47.5904296875],[12.7828125,47.56416015625],[12.809375,47.5421875],[12.87890625,47.5064453125],[12.968066406250017,47.47568359375],[13.014355468750011,47.478076171874996],[13.031542968750017,47.5080078125],[13.047949218750006,47.579150390624996],[13.054101562500023,47.655126953125],[12.897656250000011,47.721875],[12.953515625000023,47.890625],[12.760351562500006,48.106982421874996],[13.215234375000023,48.301904296874994],[13.322851562500006,48.33125],[13.409375,48.394140625],[13.459863281250023,48.56455078125],[13.4716796875,48.571826171874996],[13.486621093750017,48.581835937499996],[13.636623883928596,48.580904017857144],[13.785351562500011,48.587451171874996],[13.798828125,48.6216796875],[13.802929687500011,48.747509765625],[13.814746093750017,48.766943359375],[14.049121093750017,48.602490234375],[14.691308593750023,48.59921875],[15.066796875000023,48.997851562499996],[16.057226562500006,48.754785156249994],[16.543554687500006,48.796240234375],[16.953125,48.598828125]]]},"properties":{"name":"Austria","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[46.1144531250001,38.877783203125034],[45.4796875000001,39.00625],[44.81718750000002,39.65043945312496],[44.76826171875004,39.70351562500005],[45.03164062500005,39.76513671874997],[45.15283203125003,39.58266601562502],[45.456835937500074,39.494482421875006],[45.78447265625002,39.54560546875001],[45.76630859375004,39.37846679687499],[45.977441406249994,39.24389648437503],[46.1144531250001,38.877783203125034]]],[[[48.572851562500006,41.84448242187503],[49.45673828125004,40.79985351562502],[49.77597656250006,40.583984375],[50.18251953125005,40.50478515625002],[50.3659179687501,40.279492187499955],[49.91884765625005,40.31640625000003],[49.55117187499999,40.19414062499999],[49.3244140625001,39.60834960937501],[49.36279296875003,39.349560546874955],[49.16533203125002,39.03027343750003],[49.013476562500074,39.13398437500001],[48.85449218750003,38.83881835937501],[48.86875,38.43549804687498],[48.59267578125005,38.41108398437498],[47.99648437499999,38.85375976562503],[48.292089843750006,39.01884765624999],[48.10439453125005,39.241113281249994],[48.322167968749994,39.39907226562502],[47.995898437500074,39.683935546875034],[46.490625,38.90668945312498],[46.400292968749994,39.1921875],[46.584765625000074,39.22368164062499],[46.36523437500003,39.402490234374994],[46.48144531249997,39.55517578125003],[46.202050781249994,39.59448242187503],[45.57978515625004,39.9775390625],[45.8859375000001,40.024853515624955],[45.96464843750002,40.233789062499966],[45.45439453125002,40.532373046874966],[45.37890624999997,40.67358398437506],[45.5875,40.846923828125],[45.07050781250004,41.075585937499966],[45.188574218750006,41.14741210937504],[45.001367187499994,41.29096679687498],[45.2171875,41.423193359375006],[45.28095703125004,41.449560546875034],[46.086523437500006,41.183837890625],[46.43095703125002,41.077050781249994],[46.534375,41.08857421875004],[46.62636718750005,41.15966796875006],[46.66240234375002,41.24550781250002],[46.67255859375004,41.28681640625001],[46.61894531250002,41.34375],[46.30546875000002,41.507714843749994],[46.18427734375004,41.70214843749997],[46.42988281250004,41.890966796875006],[46.74931640625002,41.812597656250006],[47.31767578125002,41.28242187500001],[47.79101562499997,41.19926757812502],[48.572851562500006,41.84448242187503]]]]},"properties":{"name":"Azerbaijan","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[30.553613281250023,-2.400097656250011],[30.53369140625,-2.42626953125],[30.441992187500006,-2.613476562500011],[30.424218750000023,-2.6416015625],[30.47333984375001,-2.6943359375],[30.42402343750001,-2.824023437500003],[30.433496093750023,-2.87451171875],[30.515039062500023,-2.917578125],[30.604296875000017,-2.935253906250011],[30.70947265625,-2.977246093750011],[30.7802734375,-2.98486328125],[30.811132812500006,-3.116406250000011],[30.79023437500001,-3.274609375000011],[30.4,-3.65390625],[29.947265625,-4.307324218750011],[29.7177734375,-4.455859375],[29.403222656250023,-4.449316406250006],[29.211816406250023,-3.833789062500003],[29.224414062500017,-3.053515625],[29.01435546875001,-2.72021484375],[29.10205078125,-2.595703125],[29.390234375,-2.80859375],[29.698046875000017,-2.794726562500003],[29.8681640625,-2.71640625],[29.93017578125,-2.339550781250011],[30.117285156250006,-2.416601562500006],[30.408496093750017,-2.31298828125],[30.553613281250023,-2.400097656250011]]]},"properties":{"name":"Burundi","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[5.693554687500011,50.774755859375006],[5.993945312500017,50.75043945312504],[6.340917968750006,50.451757812500034],[6.116503906250045,50.120996093749966],[6.08906250000004,50.15458984374996],[6.054785156249977,50.154296875],[5.976269531250068,50.167187499999955],[5.866894531250068,50.08281250000002],[5.817382812500028,50.01269531250003],[5.7880859375,49.96123046875002],[5.744042968749994,49.91962890624998],[5.789746093749983,49.53828125000001],[5.50732421875,49.51088867187502],[4.867578125000051,49.78813476562502],[4.818652343750045,50.153173828125034],[4.545019531250063,49.96025390624999],[4.149316406250023,49.971582031249994],[4.174609375000017,50.24648437500005],[3.689355468750023,50.30605468750002],[3.595410156250068,50.47734374999999],[3.27333984375008,50.53154296875002],[3.10683593750008,50.779443359374994],[2.759375,50.750634765624994],[2.52490234375,51.097119140624955],[3.35009765625,51.37768554687503],[3.43251953125008,51.24575195312505],[3.902050781250011,51.20766601562502],[4.226171875000034,51.38647460937503],[5.03095703125004,51.46909179687498],[5.214160156250045,51.278955078124966],[5.796484375000034,51.153076171875],[5.693554687500011,50.774755859375006]]]},"properties":{"name":"Belgium","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[3.595410156250011,11.6962890625],[3.553906250000011,11.631884765624989],[3.490527343750017,11.49921875],[3.48779296875,11.395410156249994],[3.638867187500011,11.176855468749991],[3.65625,11.154589843749989],[3.6953125,11.1203125],[3.71640625,11.07958984375],[3.7568359375,10.76875],[3.83447265625,10.607421875],[3.771777343750017,10.417626953124994],[3.646582031250006,10.408984374999989],[3.60205078125,10.004541015624994],[3.3251953125,9.778466796874994],[3.044921875,9.083837890624991],[2.774804687500023,9.048535156249997],[2.703125,8.371826171875],[2.68603515625,7.873730468749997],[2.719335937500006,7.616259765624989],[2.7509765625,7.541894531249994],[2.78515625,7.476855468749989],[2.783984375000017,7.443408203124989],[2.765820312500011,7.422509765624994],[2.75048828125,7.395068359374989],[2.756738281250023,7.067919921874989],[2.721386718750011,6.980273437499989],[2.731738281250017,6.852832031249989],[2.7529296875,6.771630859374994],[2.774609375000011,6.711718749999989],[2.753710937500017,6.661767578124994],[2.735644531250017,6.595703125],[2.706445312500023,6.369238281249991],[1.62265625,6.216796875],[1.777929687500006,6.294628906249997],[1.530957031250011,6.992431640625],[1.624707031250011,6.997314453125],[1.600195312500006,9.050048828125],[1.3857421875,9.361669921874991],[1.330078125,9.996972656249994],[0.763378906250011,10.386669921874997],[0.900488281250006,10.993261718749991],[1.4267578125,11.447119140624991],[1.980371093750023,11.418408203124997],[2.38916015625,11.897070312499991],[2.366015625000017,12.221923828125],[2.805273437500006,12.383837890624989],[3.595410156250011,11.6962890625]]]},"properties":{"name":"Benin","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[0.217480468750011,14.911474609374991],[0.163867187500017,14.497216796874994],[0.382519531250011,14.245800781249997],[0.42919921875,13.972119140624997],[0.6181640625,13.703417968750003],[1.201171875,13.357519531249991],[0.988476562500011,13.36484375],[0.9873046875,13.041894531249994],[1.56494140625,12.635400390624994],[2.104589843750006,12.701269531249991],[2.226269531250011,12.466064453125],[2.072949218750011,12.309375],[2.38916015625,11.897070312499991],[1.980371093750023,11.418408203124997],[1.4267578125,11.447119140624991],[0.900488281250006,10.993261718749991],[0.49267578125,10.954980468749994],[-0.068603515625,11.115625],[-0.299462890624994,11.166894531249994],[-0.627148437499983,10.927392578124994],[-1.04248046875,11.010058593749989],[-2.829931640624977,10.998388671874991],[-2.914892578124977,10.592333984374989],[-2.791162109374994,10.432421874999989],[-2.780517578125,9.745849609375],[-2.765966796874977,9.658056640624991],[-2.706201171874994,9.533935546875],[-2.695849609374989,9.481347656249994],[-2.7171875,9.457128906249991],[-2.7666015625,9.424707031249994],[-2.816748046874977,9.425830078124989],[-2.875146484374994,9.500927734374997],[-2.90087890625,9.534619140624997],[-2.948144531249994,9.610742187499994],[-2.98828125,9.687353515624991],[-3.042626953124994,9.720898437499997],[-3.095800781249977,9.752099609374994],[-3.160693359374989,9.849169921874989],[-3.223535156249994,9.895458984374997],[-3.289697265624994,9.882226562499994],[-3.581152343749977,9.92431640625],[-3.790625,9.9171875],[-4.18115234375,9.78173828125],[-4.267187499999977,9.743261718749991],[-4.332226562499983,9.645703125],[-4.406201171874983,9.647998046874989],[-4.526611328125,9.723486328124991],[-4.625830078124977,9.713574218749997],[-4.721777343749977,9.756542968749997],[-5.262304687499977,10.319677734374991],[-5.523535156249977,10.426025390625],[-5.490478515625,11.042382812499994],[-5.250244140625,11.375781249999989],[-5.288134765624989,11.827929687499989],[-4.699316406249977,12.076171875],[-4.4287109375,12.337597656249997],[-4.480615234374994,12.672216796874991],[-4.227099609374989,12.793701171875],[-4.328710937499977,13.119042968749994],[-4.151025390624994,13.306201171875003],[-3.947314453124989,13.402197265624991],[-3.527636718749989,13.182714843749991],[-3.3017578125,13.28076171875],[-3.248632812499977,13.658349609374994],[-2.950830078124994,13.6484375],[-2.873925781249994,13.950732421875003],[-2.586718749999989,14.227587890625003],[-2.113232421874983,14.16845703125],[-1.97304687499999,14.45654296875],[-1.049560546875,14.81953125],[-0.760449218749983,15.047753906249994],[-0.235888671874989,15.059423828124991],[0.217480468750011,14.911474609374991]]]},"properties":{"name":"Burkina Faso","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[91.94921875000003,21.50805664062503],[91.85947265625012,21.532958984375057],[91.90771484374997,21.722949218750017],[91.94921875000003,21.50805664062503]]],[[[91.87382812500002,21.832128906249977],[91.8375976562501,21.750244140625],[91.85068359375012,21.927050781250045],[91.87382812500002,21.832128906249977]]],[[[91.15078125000005,22.175195312499966],[91.04472656250002,22.10517578125001],[91.0794921875,22.519726562499983],[91.15078125000005,22.175195312499966]]],[[[91.55673828125006,22.38222656250005],[91.41132812500004,22.475683593750006],[91.45605468749997,22.61650390624999],[91.55673828125006,22.38222656250005]]],[[[90.77763671875007,22.089306640624983],[90.51503906250005,22.06513671875001],[90.68046875000007,22.327490234375006],[90.50292968749997,22.835351562499994],[90.59648437500002,22.863525390625057],[90.86816406250003,22.48486328125],[90.77763671875007,22.089306640624983]]],[[[88.94072265625002,26.24536132812497],[88.97041015625004,26.250878906250023],[88.95195312500002,26.412109375],[89.01865234375012,26.410253906249977],[89.28925781250004,26.03759765625],[89.54990234375006,26.005273437499994],[89.57275390625003,26.13232421875003],[89.67089843750003,26.21381835937504],[89.8229492187501,25.94140625000003],[89.82490234375004,25.56015625],[89.80087890625012,25.33613281250001],[89.81406250000006,25.305371093749955],[89.86630859375012,25.293164062499955],[90.11962890625003,25.21997070312497],[90.61308593750002,25.16772460937497],[92.04970703125005,25.16948242187499],[92.46835937500006,24.94414062499999],[92.38496093750004,24.848779296875023],[92.25126953125007,24.895068359375045],[92.22832031250002,24.88134765625],[92.22666015625012,24.77099609374997],[92.11748046875002,24.493945312500017],[92.06416015625004,24.374365234375006],[91.84619140624997,24.17529296875003],[91.72656250000003,24.20507812499997],[91.35019531250012,24.06049804687501],[91.16044921875007,23.66064453125],[91.359375,23.06835937500003],[91.43623046875004,23.19990234375001],[91.55351562500002,22.991552734375006],[91.61953125,22.97968750000001],[91.75097656250003,23.053515625000017],[91.75419921875007,23.287304687499955],[91.79003906249997,23.361035156249983],[91.937890625,23.504687500000017],[91.92949218750007,23.598242187499977],[91.92958984375,23.68598632812501],[91.97851562500003,23.691992187499977],[92.04404296875006,23.677783203125017],[92.24609375000003,23.683593750000057],[92.33378906250002,23.242382812499955],[92.36162109375002,22.929003906250074],[92.46445312500006,22.734423828125045],[92.49140625000004,22.685400390625006],[92.5612304687501,22.04804687500001],[92.57490234375004,21.978076171875045],[92.58281250000002,21.940332031249994],[92.5934570312501,21.46733398437499],[92.63164062500002,21.306201171875045],[92.33056640624997,21.439794921874977],[92.17958984375005,21.293115234375023],[92.32412109375,20.791845703125063],[92.0560546875,21.1748046875],[91.86337890625012,22.350488281249966],[91.7970703125001,22.297460937500006],[91.48007812500006,22.884814453125045],[91.2162109375,22.642236328124994],[90.94560546875002,22.597021484375034],[90.65625,23.025488281250006],[90.60400390624997,23.59135742187499],[90.55566406249997,23.42153320312505],[90.26914062500012,23.455859375000017],[90.59091796875012,23.266406250000045],[90.43505859374997,22.751904296874955],[90.61611328125,22.362158203125034],[90.23056640625006,21.82978515625004],[90.07119140625005,21.887255859375017],[90.20957031250006,22.156591796875006],[89.95419921875006,22.022851562500023],[89.91806640625012,22.11616210937501],[89.98515625000002,22.466406250000063],[89.81191406250005,21.983496093750006],[89.56855468750004,21.767431640625034],[89.48320312500007,22.275537109374994],[89.50058593750006,21.914355468750045],[89.35371093750004,21.72109375],[89.09394531250004,21.872753906249983],[89.05,22.274609374999983],[88.92070312500002,22.632031249999955],[88.89970703125002,22.843505859375057],[88.85058593749997,23.040527343750057],[88.928125,23.186621093750063],[88.72441406250002,23.254980468750034],[88.69765625,23.493017578125034],[88.63574218749997,23.55],[88.56738281249997,23.674414062500034],[88.69980468750006,24.002539062500006],[88.71376953125,24.069628906250017],[88.72656250000003,24.186230468749955],[88.7335937500001,24.23090820312501],[88.72353515625,24.27490234375],[88.64228515625004,24.325976562500017],[88.49853515625003,24.34663085937504],[88.3375,24.45385742187503],[88.225,24.460644531249983],[88.14550781250003,24.485791015624955],[88.07910156249997,24.549902343750063],[88.02343750000003,24.62783203125005],[88.03027343749997,24.66445312500005],[88.0451171875001,24.713037109374994],[88.1498046875,24.914648437500034],[88.1888671875,24.92060546875001],[88.27949218750004,24.881933593750034],[88.31337890625005,24.8818359375],[88.37294921875,24.961523437499977],[88.45625,25.18842773437504],[88.57382812500006,25.18789062499999],[88.92978515625012,25.222998046875063],[88.94414062500002,25.290771484375],[88.85478515625002,25.333544921875017],[88.76914062500006,25.490478515625],[88.50244140624997,25.537011718749994],[88.14746093749997,25.811425781250023],[88.1066406250001,25.841113281250045],[88.15078125000005,26.08715820312497],[88.33398437499997,26.257519531249955],[88.44042968749997,26.369482421875034],[88.38623046875003,26.471533203125034],[88.35146484375005,26.482568359374966],[88.36992187500002,26.564111328124994],[88.51826171875004,26.517773437499955],[88.68281250000004,26.291699218749983],[88.94072265625002,26.24536132812497]]]]},"properties":{"name":"Bangladesh","childNum":6}},{"geometry":{"type":"Polygon","coordinates":[[[28.585351562500023,43.742236328124996],[28.465429687500006,43.389306640624994],[28.133691406250023,43.39560546875],[27.92890625000001,43.1861328125],[27.88886718750001,42.74970703125],[27.484765625000023,42.468066406249996],[28.014453125000017,41.969042968749996],[27.47480468750001,41.946875],[27.294921875,42.079541015625],[27.24433593750001,42.09326171875],[27.01171875,42.058642578124996],[26.96875,42.02685546875],[26.884863281250006,41.991845703124994],[26.615332031250006,41.964892578124996],[26.549707031250023,41.896728515625],[26.51142578125001,41.8263671875],[26.3603515625,41.8015625],[26.327246093750006,41.772802734375],[26.31796875,41.744677734374996],[26.320898437500006,41.716552734375],[26.200585937500023,41.743798828124994],[26.107421875,41.72568359375],[26.085546875,41.704150390624996],[26.066015625,41.673242187499994],[26.1435546875,41.521533203124996],[26.155175781250023,41.434863281249996],[26.135351562500006,41.3857421875],[26.06640625,41.35068359375],[25.92333984375,41.311914062499994],[25.784960937500017,41.330419921875],[25.52705078125001,41.2998046875],[25.381933593750006,41.26435546875],[25.25117187500001,41.243554687499994],[24.773730468750017,41.356103515624994],[24.595996093750017,41.442724609375],[24.5693359375,41.4673828125],[24.51826171875001,41.552539062499996],[24.487890625,41.555224609374996],[24.056054687500023,41.527246093749994],[24.03291015625001,41.469091796875],[24.011328125,41.46005859375],[23.635156250000023,41.386767578124996],[23.53583984375001,41.386035156249996],[23.433398437500017,41.398730468749996],[23.3720703125,41.3896484375],[23.23984375,41.3849609375],[23.15595703125001,41.322070312499996],[22.916015625,41.336279296875],[23.00361328125001,41.73984375],[22.836816406250023,41.993603515625],[22.344042968750017,42.31396484375],[22.42207031250001,42.328857421875],[22.445703125000023,42.359130859375],[22.523535156250006,42.440966796874996],[22.53242187500001,42.481201171875],[22.524218750000017,42.50390625],[22.43623046875001,42.6291015625],[22.466796875,42.84248046875],[22.799902343750006,42.985742187499994],[22.976855468750017,43.18798828125],[22.85957031250001,43.25234375],[22.819726562500023,43.300732421875],[22.767578125,43.354150390624994],[22.554589843750023,43.454492187499994],[22.36962890625,43.781298828124996],[22.36542968750001,43.862109375],[22.399023437500006,43.96953125],[22.420800781250023,44.007421875],[22.452529688228115,44.0510441391688],[22.547921095934313,44.113823956634434],[22.688564844478098,44.254306249271906],[23.02851562500001,44.077978515625],[22.868261718750006,43.947900390624994],[22.919042968750006,43.83447265625],[25.4970703125,43.670800781249994],[26.2158203125,44.007275390625],[27.0869140625,44.167382812499994],[27.425390625,44.0205078125],[27.88427734375,43.987353515624996],[28.221972656250017,43.772851562499994],[28.585351562500023,43.742236328124996]]]},"properties":{"name":"Bulgaria","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[50.60722656250002,25.883105468750003],[50.57490234375001,25.806787109374994],[50.465917968750006,25.965527343749997],[50.46992187500001,26.228955078124997],[50.5859375,26.24072265625],[50.60722656250002,25.883105468750003]]]},"properties":{"name":"Bahrain","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-73.02685546874994,21.19238281250003],[-73.16455078125003,20.979150390625023],[-73.68115234375003,20.9755859375],[-73.68037109374995,21.103320312500017],[-73.52309570312497,21.190820312499966],[-73.23535156249997,21.15449218750004],[-73.05849609375,21.313378906249994],[-73.02685546874994,21.19238281250003]]],[[[-73.041015625,22.429052734375006],[-72.74726562500001,22.32739257812497],[-73.16191406250002,22.380712890625006],[-73.041015625,22.429052734375006]]],[[[-74.20673828124998,22.213769531250023],[-74.27690429687499,22.183691406250006],[-73.906396484375,22.527441406250063],[-73.95419921874995,22.71552734375001],[-73.84995117187503,22.731054687500063],[-73.83652343749998,22.538427734374977],[-74.20673828124998,22.213769531250023]]],[[[-74.05751953124997,22.723486328125034],[-74.27460937499995,22.71166992187503],[-74.30703125,22.83959960937497],[-74.05751953124997,22.723486328125034]]],[[[-74.84047851562494,22.894335937500017],[-75.22333984374995,23.165332031250074],[-75.13056640624998,23.267919921875006],[-75.31596679687502,23.668359374999966],[-74.84047851562494,22.894335937500017]]],[[[-75.66455078124997,23.45014648437501],[-76.03710937500003,23.60278320312503],[-76.01044921875001,23.671386718750057],[-75.66455078124997,23.45014648437501]]],[[[-74.42944335937497,24.068066406249955],[-74.55092773437502,23.96894531250001],[-74.52690429687502,24.105078125000034],[-74.42944335937497,24.068066406249955]]],[[[-77.65771484374994,24.249462890624955],[-77.75527343750002,24.163476562500023],[-77.61538085937494,24.216357421875045],[-77.5615234375,24.136816406250006],[-77.57373046875,23.739160156249994],[-77.77128906249999,23.752539062499977],[-77.99990234374994,24.219824218750063],[-77.65771484374994,24.249462890624955]]],[[[-75.30839843749999,24.2],[-75.50322265624996,24.139062500000023],[-75.40893554687503,24.265771484374994],[-75.72666015625,24.68935546875005],[-75.30839843749999,24.2]]],[[[-77.34755859375,25.013867187499983],[-77.56191406249997,25.030029296875],[-77.27558593750001,25.055761718750006],[-77.34755859375,25.013867187499983]]],[[[-77.74384765625001,24.70742187499999],[-77.74521484375,24.463476562500034],[-78.04492187499997,24.287451171875063],[-78.14580078125002,24.493457031250017],[-78.36650390624993,24.544189453125057],[-78.435302734375,24.627587890624994],[-78.24272460937493,24.65380859375],[-78.21137695312495,25.191259765624977],[-77.97529296874998,25.084814453125063],[-77.74384765625001,24.70742187499999]]],[[[-76.64882812499994,25.487402343750006],[-76.34379882812496,25.33203124999997],[-76.12661132812497,25.14052734375005],[-76.16953125,24.6494140625],[-76.319970703125,24.81767578124999],[-76.21376953124994,24.822460937499983],[-76.160400390625,25.119335937499983],[-76.36928710937502,25.312597656250006],[-76.62070312499998,25.43164062500003],[-76.78066406249997,25.426855468750006],[-76.71083984374997,25.564892578124983],[-76.64882812499994,25.487402343750006]]],[[[-78.49287109375001,26.729052734375017],[-77.92246093749998,26.69111328125001],[-78.74365234374994,26.50068359375004],[-78.98564453124996,26.689501953125045],[-78.79804687500001,26.58242187499999],[-78.59711914062493,26.797949218750006],[-78.49287109375001,26.729052734375017]]],[[[-77.22563476562496,25.904199218750023],[-77.40317382812498,26.02470703124996],[-77.24677734374998,26.156347656250034],[-77.238623046875,26.561132812500006],[-77.510595703125,26.845996093750045],[-77.94375,26.90356445312503],[-77.53388671874995,26.903417968750006],[-77.06635742187501,26.530175781249994],[-77.03828124999998,26.333447265624983],[-77.16728515624996,26.240332031250006],[-77.22563476562496,25.904199218750023]]]]},"properties":{"name":"Bahamas","childNum":14}},{"geometry":{"type":"Polygon","coordinates":[[[19.007128906250045,44.86918945312502],[19.348632812500057,44.88090820312502],[19.118457031250074,44.359960937500006],[19.583789062500017,44.04345703125003],[19.245019531249994,43.96503906250004],[19.495117187500057,43.642871093750045],[19.19433593749997,43.533300781250006],[19.164355468750017,43.53544921874999],[19.11279296874997,43.52773437500002],[19.080078125000057,43.51772460937502],[19.0283203125,43.53251953125002],[18.97421875,43.54233398437498],[18.95068359375,43.52666015624999],[19.036718750000034,43.35732421875002],[19.026660156250017,43.292431640624955],[18.97871093750001,43.28540039062503],[18.934667968750006,43.339453125000034],[18.85107421875003,43.34633789062502],[18.749218750000068,43.283544921875006],[18.67421875000008,43.230810546875006],[18.623632812500063,43.027685546875034],[18.488476562500068,43.01215820312498],[18.44384765625003,42.96845703125004],[18.46601562500001,42.777246093749994],[18.54589843750003,42.64160156249997],[18.436328125000017,42.559716796874994],[17.667578125000063,42.897119140624994],[17.585156250000068,42.93837890625005],[17.650488281250063,43.006591796875],[17.27382812500005,43.44575195312501],[16.300097656250017,44.12451171875],[16.10341796875008,44.52099609375006],[15.736621093750045,44.76582031250001],[15.788085937500057,45.17895507812497],[16.028320312500057,45.18959960937502],[16.29335937500005,45.00883789062496],[16.53066406250008,45.21669921875002],[16.918652343749983,45.27656249999998],[17.812792968750074,45.078125],[18.66259765625,45.07744140624999],[18.83642578125,44.883251953124955],[19.007128906250045,44.86918945312502]]]},"properties":{"name":"Bosnia and Herz.","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[28.14794921875,56.142919921875],[28.284277343750006,56.055908203125],[29.375,55.938720703125],[29.353417968750023,55.784375],[29.412988281250023,55.724853515625],[29.482226562500017,55.6845703125],[29.63007812500001,55.751171875],[29.6845703125,55.7697265625],[29.744140625,55.77041015625],[29.82392578125001,55.7951171875],[29.881640625000017,55.832324218749996],[29.93701171875,55.845263671874996],[30.04267578125001,55.83642578125],[30.23359375000001,55.84521484375],[30.625585937500006,55.666259765625],[30.906835937500006,55.57001953125],[30.90058593750001,55.397412109375],[30.82099609375001,55.3302734375],[30.810546875,55.306982421875],[30.814453125,55.2787109375],[30.87744140625,55.2234375],[30.958886718750023,55.13759765625],[30.97773437500001,55.08779296875],[30.97773437500001,55.05048828125],[30.829882812500017,54.914990234375],[30.804492187500017,54.8609375],[30.791015625,54.806005859375],[30.798828125,54.783251953124996],[30.984179687500017,54.6958984375],[31.12128906250001,54.648486328124996],[31.152148437500017,54.625341796875],[31.074804687500006,54.491796875],[31.18476562500001,54.452978515625],[31.299121093750017,54.29169921875],[31.403613281250017,54.195947265625],[31.62841796875,54.111181640625],[31.7919921875,54.055908203125],[31.825976562500017,54.030712890625],[31.837792968750023,54.00078125],[31.825292968750006,53.935009765625],[31.783007812500017,53.85498046875],[31.754199218750017,53.81044921875],[31.82080078125,53.791943359375],[31.9921875,53.796875],[32.20039062500001,53.78125],[32.45097656250002,53.6533203125],[32.70429687500001,53.336328125],[32.64443359375002,53.32890625],[32.57802734375002,53.31240234375],[32.469335937500006,53.2703125],[32.14199218750002,53.091162109375],[31.849707031250006,53.106201171875],[31.668261718750017,53.200927734375],[31.417871093750023,53.196044921875],[31.38837890625001,53.184814453125],[31.364550781250017,53.138964843749996],[31.30292968750001,53.060888671875],[31.2587890625,53.01669921875],[31.29511718750001,52.989794921874996],[31.35302734375,52.933447265625],[31.442773437500023,52.86181640625],[31.53515625,52.7982421875],[31.564843750000023,52.759228515625],[31.585546875,52.532470703125],[31.57734375000001,52.312304687499996],[31.6015625,52.284814453125],[31.64990234375,52.26220703125],[31.690625,52.220654296875],[31.758593750000017,52.125830078125],[31.76337890625001,52.10107421875],[31.57373046875,52.10810546875],[31.345996093750017,52.10537109375],[31.21796875000001,52.050244140625],[30.98066406250001,52.046191406249996],[30.845703125,51.953076171875],[30.755273437500023,51.895166015625],[30.667285156250017,51.814111328125],[30.583886718750023,51.68896484375],[30.533007812500017,51.596337890624994],[30.56074218750001,51.531494140625],[30.602343750000017,51.471240234374996],[30.611718750000023,51.40634765625],[30.63251953125001,51.355419921875],[30.449511718750017,51.274316406249994],[30.160742187500006,51.477880859375],[29.346484375000017,51.382568359375],[29.10205078125,51.6275390625],[29.06074218750001,51.625439453125],[29.013085937500023,51.598925781249996],[28.97773437500001,51.57177734375],[28.927539062500017,51.562158203124994],[28.849511718750023,51.540185546874994],[28.73125,51.433398437499996],[28.690234375000017,51.438867187499994],[28.647753906250017,51.45654296875],[28.599023437500023,51.542626953124994],[28.532031250000017,51.562451171875],[27.85859375000001,51.5923828125],[27.7,51.477978515625],[27.689746093750017,51.572412109374994],[27.296289062500023,51.597412109375],[27.270117187500006,51.613574218749996],[27.141992187500023,51.75205078125],[27.074121093750023,51.76083984375],[26.95283203125001,51.75400390625],[26.7734375,51.770703125],[25.785742187500006,51.923828125],[24.361914062500006,51.867529296875],[24.280078125000017,51.774707031249996],[24.126855468750023,51.6646484375],[23.978320312500017,51.59130859375],[23.951171875,51.58505859375],[23.8642578125,51.623974609375],[23.79169921875001,51.637109375],[23.706835937500017,51.64130859375],[23.61376953125,51.525390625],[23.605273437500017,51.517919921875],[23.652441406250006,52.040380859375],[23.175097656250017,52.28662109375],[23.915429687500023,52.770263671875],[23.484667968750017,53.939794921875],[23.55908203125,53.91982421875],[23.733691406250017,53.912255859375],[24.191308593750023,53.950439453125],[24.236621093750017,53.919970703124996],[24.31796875,53.89296875],[24.620703125,53.979833984375],[24.768164062500006,53.974658203124996],[24.78925781250001,53.9982421875],[24.82568359375,54.118994140625],[24.869531250000023,54.145166015625],[25.04609375000001,54.133056640625],[25.111425781250006,54.154931640625],[25.179492187500017,54.2142578125],[25.46113281250001,54.292773437499996],[25.505664062500017,54.264941406249996],[25.52734375,54.215136718749996],[25.497363281250017,54.175244140625],[25.573046875000017,54.139892578125],[25.765234375,54.17978515625],[25.702539062500023,54.29296875],[25.61689453125001,54.310107421874996],[25.557519531250023,54.310693359375],[25.54736328125,54.331835937499996],[25.56757812500001,54.37705078125],[25.62031250000001,54.460400390625],[25.68515625,54.535791015625],[25.72480468750001,54.564257812499996],[25.73164062500001,54.590380859374996],[25.722460937500017,54.71787109375],[25.859277343750023,54.919287109375],[25.964453125,54.94716796875],[26.09296875000001,54.9623046875],[26.175195312500023,55.003271484375],[26.250781250000017,55.12451171875],[26.291796875000017,55.139599609375],[26.601171875,55.130175781249996],[26.6484375,55.20419921875],[26.775683593750017,55.273095703125],[26.760156250000023,55.293359375],[26.68125,55.306445312499996],[26.49531250000001,55.318017578125],[26.457617187500006,55.34248046875],[26.469531250000017,55.371923828125],[26.51923828125001,55.44814453125],[26.56660156250001,55.546484375],[26.5908203125,55.62265625],[26.593554687500017,55.667529296874996],[27.052539062500017,55.83056640625],[27.576757812500006,55.798779296875],[28.14794921875,56.142919921875]]]},"properties":{"name":"Belarus","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-87.8529296875,17.4228515625],[-87.92998046874996,17.283007812500017],[-87.826416015625,17.546289062499994],[-87.8529296875,17.4228515625]]],[[[-88.89404296875,15.890625],[-89.2328125,15.888671875],[-89.16147460937503,17.81484375],[-89.13354492187503,17.970800781249977],[-88.80634765624998,17.965527343749983],[-88.52299804687499,18.445898437500063],[-88.29565429687494,18.47241210937503],[-88.34926757812494,18.358837890624983],[-88.1302734375,18.350732421875023],[-88.08525390624999,18.226123046875045],[-88.27172851562494,17.60986328125],[-88.203466796875,17.5166015625],[-88.31342773437501,16.632763671874983],[-88.89404296875,15.890625]]]]},"properties":{"name":"Belize","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[-64.73027343749999,32.29345703125],[-64.86284179687499,32.273876953125],[-64.66831054687499,32.38193359375],[-64.73027343749999,32.29345703125]]]},"properties":{"name":"Bermuda","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-58.15976562499999,-20.164648437500006],[-58.18017578125,-19.81787109375],[-59.09052734375,-19.286230468750006],[-60.00737304687499,-19.29755859375001],[-61.7568359375,-19.6453125],[-62.276318359375,-20.5625],[-62.27666015624999,-21.066015625],[-62.65097656249999,-22.233691406250003],[-62.84335937499999,-21.99726562500001],[-63.92167968749999,-22.028613281250003],[-63.97612304687499,-22.072558593750003],[-64.26640624999999,-22.603320312500003],[-64.30791015624999,-22.7953125],[-64.32529296874999,-22.82763671875],[-64.373974609375,-22.761035156250003],[-64.4455078125,-22.58535156250001],[-64.477734375,-22.4853515625],[-64.5236328125,-22.37158203125],[-64.60551757812499,-22.228808593750003],[-64.992626953125,-22.109667968750003],[-65.518798828125,-22.09453125],[-65.686181640625,-22.11025390625001],[-65.77104492187499,-22.099609375],[-65.86015624999999,-22.01972656250001],[-66.05859375,-21.879492187500006],[-66.098583984375,-21.835058593750006],[-66.17465820312499,-21.8056640625],[-66.220166015625,-21.802539062500003],[-66.24760742187499,-21.83046875],[-66.28212890625,-21.94746093750001],[-66.3224609375,-22.053125],[-66.365185546875,-22.11376953125],[-66.71171874999999,-22.21630859375],[-66.99111328125,-22.509863281250006],[-67.19487304687499,-22.82167968750001],[-67.362255859375,-22.85517578125001],[-67.57993164062499,-22.891699218750006],[-67.79443359375,-22.879492187500006],[-67.87944335937499,-22.82294921875001],[-67.88173828125,-22.49335937500001],[-68.18642578125,-21.61855468750001],[-68.197021484375,-21.30029296875],[-68.558251953125,-20.901953125],[-68.484326171875,-20.62841796875],[-68.74516601562499,-20.45859375],[-68.75932617187499,-20.115527343750003],[-68.560693359375,-19.967089843750003],[-68.559375,-19.90234375],[-68.578271484375,-19.856542968750006],[-68.69619140625,-19.74072265625],[-68.69829101562499,-19.72109375],[-68.57529296874999,-19.56015625],[-68.462890625,-19.43281250000001],[-68.470166015625,-19.409960937500003],[-68.49199218749999,-19.381933593750006],[-68.85795898437499,-19.093359375],[-68.96831054687499,-18.96796875000001],[-68.97885742187499,-18.81298828125],[-69.026806640625,-18.65625],[-69.09228515625,-18.28242187500001],[-69.145458984375,-18.14404296875],[-69.0939453125,-18.05048828125001],[-69.28232421874999,-17.96484375],[-69.31337890625,-17.943164062500003],[-69.5109375,-17.50605468750001],[-69.51108398437499,-17.5048828125],[-69.510986328125,-17.46035156250001],[-69.521923828125,-17.388964843750003],[-69.645703125,-17.24853515625],[-69.62485351562499,-17.2001953125],[-69.020703125,-16.6421875],[-69.03291015625,-16.47597656250001],[-68.8427734375,-16.337890625],[-69.21757812499999,-16.14912109375001],[-69.4208984375,-15.640625],[-69.17246093749999,-15.236621093750003],[-69.37470703125,-14.962988281250006],[-69.35947265624999,-14.7953125],[-68.87089843749999,-14.169726562500003],[-69.07412109375,-13.682812500000011],[-68.97861328124999,-12.880078125000011],[-68.68525390625,-12.501953125],[-69.57861328125,-10.951757812500006],[-69.228515625,-10.955664062500006],[-68.84833984375,-11.011132812500009],[-68.678369140625,-11.11279296875],[-68.39799804687499,-11.01875],[-68.0716796875,-10.703125],[-67.99169921875,-10.674414062500006],[-67.83500976562499,-10.662792968750011],[-67.72177734374999,-10.68310546875],[-67.416943359375,-10.389843750000011],[-66.575341796875,-9.89990234375],[-65.396142578125,-9.71240234375],[-65.298583984375,-10.146777343750003],[-65.31308593749999,-10.253027343750006],[-65.395458984375,-10.392285156250011],[-65.4369140625,-10.449023437500003],[-65.44711914062499,-10.507421875],[-65.33403320312499,-10.892773437500011],[-65.32377929687499,-11.024804687500009],[-65.389892578125,-11.246289062500011],[-65.1857421875,-11.74951171875],[-64.783447265625,-12.059375],[-64.42050781249999,-12.439746093750003],[-63.68857421874999,-12.47802734375],[-63.3466796875,-12.680078125],[-63.06748046874999,-12.669140625000011],[-62.76547851562499,-12.997265625000011],[-62.11801757812499,-13.159765625],[-62.09477539062499,-13.241992187500003],[-61.944726562499994,-13.40625],[-61.87412109374999,-13.470410156250011],[-61.789941406249994,-13.525585937500011],[-61.57568359375,-13.524804687500009],[-61.51157226562499,-13.541210937500011],[-61.41606445312499,-13.526562500000011],[-61.129150390625,-13.49853515625],[-61.07700195312499,-13.48974609375],[-60.506591796875,-13.78984375],[-60.372705078124994,-14.41875],[-60.273339843749994,-15.088769531250009],[-60.402001953124994,-15.0927734375],[-60.583203125,-15.098339843750011],[-60.53046875,-15.143164062500006],[-60.38046875,-15.318261718750009],[-60.242333984374994,-15.479589843750006],[-60.20664062499999,-15.901953125],[-60.18720703125,-16.132128906250003],[-60.17558593749999,-16.269335937500003],[-58.53793945312499,-16.328222656250006],[-58.49658203125,-16.32666015625],[-58.42368164062499,-16.307910156250003],[-58.37539062499999,-16.28359375],[-58.345605468749994,-16.284375],[-58.35039062499999,-16.490820312500006],[-58.470605468749994,-16.650195312500003],[-58.478125,-16.70068359375],[-58.45981445312499,-16.910742187500006],[-58.417382812499994,-17.08056640625],[-58.39599609375,-17.23427734375001],[-58.34775390624999,-17.28212890625001],[-57.99091796875,-17.51289062500001],[-57.905029296875,-17.532324218750006],[-57.832470703125,-17.512109375],[-57.78886718749999,-17.573046875],[-57.780175781249994,-17.67177734375001],[-57.66166992187499,-17.947363281250006],[-57.58647460937499,-18.12226562500001],[-57.49565429687499,-18.214648437500003],[-57.57402343749999,-18.279296875],[-57.725,-18.733203125],[-57.783105468749994,-18.91425781250001],[-57.716796875,-19.044042968750006],[-58.131494140624994,-19.74453125],[-57.860742187499994,-19.979589843750006],[-57.887597656249994,-20.02041015625001],[-57.96015625,-20.04072265625001],[-58.021142578124994,-20.05517578125],[-58.09375,-20.15107421875001],[-58.15976562499999,-20.164648437500006]]]},"properties":{"name":"Bolivia","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-48.48588867187493,-27.76699218749998],[-48.554589843749994,-27.81220703125004],[-48.542187499999955,-27.57480468749999],[-48.41489257812495,-27.399609375],[-48.48588867187493,-27.76699218749998]]],[[[-48.584423828124955,-26.401562499999983],[-48.665771484375,-26.289648437500006],[-48.53974609374998,-26.170312500000023],[-48.584423828124955,-26.401562499999983]]],[[[-45.26025390624997,-23.889160156249986],[-45.451416015625,-23.895605468749977],[-45.30234375,-23.727539062500014],[-45.26025390624997,-23.889160156249986]]],[[[-44.12929687499994,-23.14189453124999],[-44.36015624999999,-23.17207031250001],[-44.24287109374998,-23.074121093750037],[-44.12929687499994,-23.14189453124999]]],[[[-38.90356445312497,-13.473437499999974],[-38.97758789062496,-13.523535156249963],[-39.02216796874998,-13.445605468749989],[-38.907128906249994,-13.401074218749983],[-38.90356445312497,-13.473437499999974]]],[[[-38.743847656249955,-13.097070312500037],[-38.668115234374966,-12.880175781249989],[-38.601171875,-12.99257812499998],[-38.743847656249955,-13.097070312500037]]],[[[-44.49931640625002,-2.939648437499983],[-44.597753906250006,-3.037597656249943],[-44.4814453125,-2.717578125000031],[-44.49931640625002,-2.939648437499983]]],[[[-44.88310546874996,-1.317871093749986],[-45.020849609375034,-1.372363281249974],[-44.978662109374966,-1.267285156249983],[-44.88310546874996,-1.317871093749986]]],[[[-51.83251953124997,-1.433789062499969],[-51.938378906249966,-1.452636718749986],[-51.680029296875006,-1.086132812500026],[-51.546044921874966,-0.649609375],[-51.25400390624998,-0.54140625],[-51.16074218749998,-0.666699218750011],[-51.27631835937498,-1.02177734374996],[-51.83251953124997,-1.433789062499969]]],[[[-49.62866210937497,-0.229199218749969],[-49.11699218749999,-0.163574218750014],[-48.39267578124995,-0.29736328125],[-48.83359375,-1.390039062500023],[-49.038476562499994,-1.5140625],[-49.17270507812498,-1.41259765625],[-49.233984375000034,-1.59951171874998],[-49.50664062499999,-1.511621093750023],[-49.587890625,-1.712402343749972],[-49.805126953124955,-1.790234375000026],[-50.06572265625002,-1.703808593749997],[-50.50761718749999,-1.787988281250009],[-50.759765625,-1.240234374999972],[-50.72949218749997,-1.126757812499946],[-50.57695312499999,-1.103125],[-50.709619140624994,-1.07773437499999],[-50.796093749999955,-0.90625],[-50.6455078125,-0.27285156249998],[-50.24824218749998,-0.11640625],[-49.62866210937497,-0.229199218749969]]],[[[-50.65288085937499,-0.131640624999989],[-50.926367187500034,-0.327343749999983],[-51.03808593749994,-0.225878906250003],[-50.84218750000002,-0.050195312500009],[-50.65288085937499,-0.131640624999989]]],[[[-49.44389648437499,-0.112402343749977],[-49.83007812499997,-0.093896484375023],[-49.50346679687496,0.083691406250011],[-49.37231445312497,0.001074218749963],[-49.44389648437499,-0.112402343749977]]],[[[-49.73823242187498,0.26816406250002],[-49.917089843750006,-0.023193359375014],[-50.339453125,0.043359375000051],[-50.27265624999998,0.231738281249974],[-49.73823242187498,0.26816406250002]]],[[[-50.42612304687498,0.139257812500048],[-50.44394531249998,-0.007666015624949],[-50.623925781249966,0.054394531249983],[-50.372753906249955,0.590869140625031],[-50.33227539062497,0.259033203125028],[-50.42612304687498,0.139257812500048]]],[[[-50.152929687500006,0.393017578125054],[-50.26132812499998,0.359179687500003],[-50.281689453124955,0.51650390624998],[-50.05883789062503,0.638037109374963],[-50.152929687500006,0.393017578125054]]],[[[-50.29897460937502,1.93852539062496],[-50.45610351562496,1.910498046875034],[-50.49101562499996,2.128613281249969],[-50.34199218749998,2.14174804687498],[-50.29897460937502,1.93852539062496]]],[[[-59.69970703125,4.353515625],[-59.73857421874993,4.226757812500026],[-59.62021484374998,4.023144531250026],[-59.557763671874966,3.960009765625031],[-59.551123046875034,3.933544921874969],[-59.854394531249994,3.5875],[-59.99433593749998,2.689990234375031],[-59.88964843749997,2.362939453125009],[-59.75522460937495,2.27412109375004],[-59.74350585937498,2.12163085937496],[-59.75175781249996,1.962402343750028],[-59.75620117187498,1.900634765624972],[-59.666601562500006,1.746289062499969],[-59.53569335937499,1.7],[-59.23120117187494,1.376025390625031],[-58.82177734374994,1.201220703125031],[-58.787207031250006,1.208496093750014],[-58.73032226562498,1.247509765625054],[-58.68461914062499,1.28105468749996],[-58.511865234374966,1.284667968749986],[-58.506054687499926,1.438671875000011],[-58.39580078124993,1.481738281249989],[-58.38037109375,1.530224609375011],[-58.34067382812498,1.587548828125051],[-58.03466796875,1.520263671875014],[-57.9828125,1.648437500000014],[-57.87343750000002,1.667285156250045],[-57.79565429687497,1.7],[-57.59443359375001,1.704101562499986],[-57.54575195312495,1.726074218750028],[-57.31748046874998,1.963476562499991],[-57.27558593749998,1.959228515625014],[-57.189599609374966,1.981591796875037],[-57.11889648437494,2.013964843749974],[-57.09267578125002,2.005810546874997],[-57.03759765625,1.936474609374997],[-56.96953124999999,1.91640625],[-56.48281249999994,1.942138671874986],[-56.019921874999966,1.842236328124983],[-55.96333007812498,1.85708007812498],[-55.929638671874955,1.8875],[-55.92163085937503,1.976660156250006],[-55.91533203124999,2.039550781250028],[-55.96196289062496,2.09511718749998],[-56.02006835937499,2.15815429687504],[-56.073632812499994,2.236767578124969],[-56.13769531249997,2.259033203124986],[-56.12939453124997,2.299511718749969],[-56.08779296875002,2.341308593750043],[-56.045117187499955,2.364404296875037],[-56.02036132812498,2.392773437500054],[-55.993505859375006,2.497509765624983],[-55.9755859375,2.515966796875006],[-55.957470703124955,2.52045898437504],[-55.730566406250006,2.406152343750023],[-55.385351562500006,2.440625],[-55.34399414062503,2.488769531249972],[-55.28603515625002,2.49965820312498],[-55.18769531249998,2.547509765625037],[-55.114111328125006,2.539208984375037],[-55.07031249999994,2.548339843750028],[-55.005810546874955,2.592968749999983],[-54.97866210937502,2.597656250000043],[-54.968408203124966,2.548339843750028],[-54.92656249999999,2.497363281250045],[-54.876074218750006,2.450390624999969],[-54.72221679687499,2.441650390624972],[-54.69741210937502,2.359814453124997],[-54.66186523437497,2.327539062499994],[-54.61625976562499,2.326757812500006],[-54.59194335937502,2.313769531250031],[-54.55048828125001,2.293066406249991],[-54.51508789062498,2.245458984374963],[-54.43310546875,2.207519531250057],[-54.13007812499998,2.121044921875026],[-53.76777343749998,2.354833984375048],[-52.90346679687502,2.211523437499977],[-52.58300781250003,2.528906249999977],[-52.327880859375,3.18173828125002],[-51.65253906249998,4.061279296874972],[-51.54707031250001,4.31088867187502],[-51.219921874999955,4.093603515624991],[-50.71440429687502,2.134033203125],[-50.458886718749994,1.829589843749972],[-49.957128906250006,1.65986328125004],[-49.898876953124955,1.16298828124998],[-50.29443359374997,0.835742187500003],[-50.755078124999955,0.222558593749966],[-51.28291015625001,-0.085205078125028],[-51.98081054687498,-1.367968749999974],[-52.22924804687497,-1.3625],[-52.664160156250034,-1.551757812500028],[-51.94755859374996,-1.586718749999946],[-50.89492187500002,-0.937597656249963],[-50.690039062500006,-1.761718749999986],[-50.40322265625002,-2.015527343750009],[-49.999218749999955,-1.831835937499974],[-49.71953125000002,-1.926367187499963],[-49.31367187500001,-1.731738281250003],[-49.63652343749996,-2.656933593750026],[-49.45751953125,-2.504589843749983],[-49.21103515624998,-1.916503906249986],[-48.99130859374998,-1.829785156249997],[-48.71000976562496,-1.487695312500023],[-48.46293945312499,-1.613964843749997],[-48.349804687499926,-1.482128906249955],[-48.46806640624996,-1.393847656250003],[-48.44980468749998,-1.145507812499943],[-48.11508789062498,-0.7375],[-47.557324218749955,-0.669921874999957],[-47.418652343749955,-0.765917968749974],[-47.39809570312502,-0.626660156250026],[-45.45859374999995,-1.35625],[-45.32915039062496,-1.71728515625],[-45.07636718749998,-1.466406249999949],[-44.72114257812498,-1.733496093750006],[-44.778515624999955,-1.798828125],[-44.651269531249966,-1.745800781250026],[-44.537792968749955,-2.052734374999943],[-44.75634765624997,-2.265527343749952],[-44.66240234375002,-2.373242187499955],[-44.435449218749966,-2.168066406249991],[-44.38183593749997,-2.365527343749989],[-44.52011718749998,-2.40546875000004],[-44.589013671874994,-2.573437499999983],[-44.72304687500002,-3.204785156249997],[-44.43754882812496,-2.944433593749977],[-44.228613281250006,-2.471289062499949],[-44.105566406250006,-2.493457031250031],[-44.19267578124999,-2.809570312499943],[-43.93291015624999,-2.583496093749986],[-43.45512695312499,-2.502050781250006],[-43.38007812499998,-2.376074218750006],[-42.93671874999998,-2.465039062500011],[-42.24960937499998,-2.7919921875],[-41.876171874999926,-2.746582031249986],[-41.479931640624955,-2.916503906249972],[-40.474560546874926,-2.795605468750026],[-39.96469726562498,-2.861523437499955],[-38.475781249999955,-3.717480468749997],[-38.04882812500003,-4.216406250000034],[-37.626318359375006,-4.592089843750003],[-37.30146484375001,-4.713085937499969],[-37.174658203125006,-4.912402343749974],[-36.590722656249966,-5.097558593749952],[-35.549414062500006,-5.129394531249957],[-35.39257812499994,-5.250878906250009],[-34.833886718749994,-7.024414062500014],[-34.83466796874998,-7.97148437499996],[-35.34086914062499,-9.230664062499983],[-35.76396484374993,-9.702539062500023],[-35.890820312499926,-9.687011718749957],[-35.88544921875001,-9.84765625],[-36.39833984374994,-10.484082031249983],[-36.768310546875,-10.671679687500017],[-37.18281249999998,-11.06845703125002],[-37.35600585937502,-11.403906249999977],[-37.35922851562495,-11.252539062499963],[-37.68872070312503,-12.1],[-38.019238281249955,-12.591308593750028],[-38.401757812499994,-12.966210937500023],[-38.69096679687502,-12.623925781250009],[-38.85175781250001,-12.790136718750034],[-38.76372070312502,-12.9072265625],[-38.835302734375034,-13.147167968750026],[-39.030908203124994,-13.365136718750023],[-39.08935546875,-13.588183593749989],[-38.988623046875006,-13.61503906249996],[-39.04814453124996,-14.043945312500028],[-38.94233398437498,-14.030664062499994],[-39.05957031249997,-14.654785156249957],[-38.88061523437503,-15.864257812499972],[-39.20288085937503,-17.178125],[-39.154003906249926,-17.70390625000003],[-39.650781249999966,-18.252343750000037],[-39.78330078124998,-19.571777343749986],[-40.001367187499994,-19.74199218750003],[-40.39594726562501,-20.56943359375002],[-40.78925781250001,-20.90605468750003],[-40.954541015624926,-21.237890624999963],[-41.04726562499999,-21.505664062499974],[-41.00029296875002,-21.99902343750003],[-41.70551757812498,-22.30966796874999],[-41.980419921874955,-22.580664062499963],[-42.042382812499966,-22.947070312500003],[-42.95830078124996,-22.96708984374999],[-43.154296875,-22.725195312500006],[-43.22416992187502,-22.991210937500014],[-43.898828124999966,-23.10146484375001],[-43.97382812499998,-23.057324218749983],[-43.675976562499955,-23.00947265625001],[-43.86616210937498,-22.910546875000023],[-44.63725585937496,-23.05546875],[-44.67382812499994,-23.206640625000034],[-44.56967773437495,-23.27402343749999],[-45.32539062499998,-23.59970703124999],[-45.464306640624955,-23.802539062500017],[-45.97207031250002,-23.795507812500006],[-46.86728515624998,-24.236328125000014],[-47.989160156249994,-25.03574218749999],[-47.92939453124998,-25.16826171874999],[-48.20273437499998,-25.41650390625003],[-48.18593749999994,-25.309863281249974],[-48.402490234374994,-25.27207031249999],[-48.47612304687499,-25.44296875],[-48.73173828124993,-25.36875],[-48.6921875,-25.49150390625003],[-48.40117187500002,-25.59736328125001],[-48.665771484375,-25.844335937499963],[-48.576318359374994,-25.935449218749966],[-48.61943359374996,-26.17939453125001],[-48.74829101562503,-26.26865234374999],[-48.55415039062498,-27.195996093749997],[-48.62080078124998,-28.075585937499966],[-48.799658203125006,-28.575292968749977],[-49.27128906249999,-28.87119140625005],[-49.745996093749966,-29.363183593749994],[-50.299511718749955,-30.42578125000003],[-50.92138671874997,-31.25839843750002],[-52.039208984374994,-32.11484374999996],[-52.063232421875,-31.830371093750017],[-51.68066406249994,-31.774609375000026],[-51.272167968749955,-31.476953125000037],[-51.16142578124996,-31.11884765625001],[-50.980078125000034,-31.09423828124997],[-50.94082031249994,-30.903710937499966],[-50.68930664062495,-30.70419921874999],[-50.71630859374994,-30.425976562499983],[-50.58193359375002,-30.438867187500037],[-50.56352539062499,-30.25361328125004],[-51.02495117187493,-30.36865234375003],[-51.29804687499998,-30.03486328124997],[-51.15727539062499,-30.364257812500014],[-51.283056640625034,-30.751562499999963],[-51.35908203124998,-30.674511718749983],[-51.506298828124955,-31.104492187500014],[-51.97246093749999,-31.383789062499986],[-52.19355468749998,-31.885546874999974],[-52.12739257812501,-32.1677734375],[-52.652246093749994,-33.137792968750006],[-53.37060546874997,-33.74218750000003],[-53.39755859374995,-33.737304687500014],[-53.46357421875001,-33.70986328125002],[-53.531347656250034,-33.65546875000004],[-53.531347656250034,-33.1708984375],[-53.511865234374966,-33.10869140625003],[-53.482861328124926,-33.068554687500026],[-53.39521484375001,-33.01035156249998],[-53.31010742187499,-32.927050781249974],[-53.21406249999998,-32.82109375],[-53.12558593749998,-32.73671875],[-53.15727539062496,-32.680078125],[-53.601708984374994,-32.40302734374997],[-53.76171875,-32.05683593749997],[-53.920605468749926,-31.95234375],[-54.220556640625034,-31.855175781249997],[-54.58764648437503,-31.48515625000003],[-55.036035156249994,-31.27900390625004],[-55.091162109375034,-31.31396484374997],[-55.173535156249926,-31.279589843749974],[-55.557324218749955,-30.8759765625],[-55.60302734375003,-30.85078125000001],[-55.62714843749998,-30.858105468749997],[-55.650488281250034,-30.89208984375],[-55.66523437500001,-30.92490234375002],[-55.807763671874994,-31.036718749999977],[-55.87368164062502,-31.069628906250017],[-55.95200195312498,-31.08085937499999],[-56.0046875,-31.079199218750006],[-56.01845703125002,-30.991894531249983],[-55.998974609374955,-30.837207031250003],[-56.4072265625,-30.44746093750001],[-56.83271484374998,-30.107226562499974],[-57.120507812499994,-30.144433593749994],[-57.21445312499995,-30.283398437499983],[-57.55229492187496,-30.261230468749986],[-57.60888671875003,-30.187792968750045],[-57.563867187499994,-30.139941406249974],[-57.40522460937501,-30.03388671875004],[-57.22465820312499,-29.782128906249994],[-56.938623046874994,-29.594824218750034],[-55.890527343749994,-28.370019531249994],[-55.68725585937497,-28.38164062499996],[-55.72548828125002,-28.20410156250003],[-55.10151367187501,-27.866796874999963],[-54.82910156250003,-27.55058593750003],[-54.32700195312495,-27.423535156249997],[-53.83818359375002,-27.121093750000014],[-53.668554687500006,-26.288183593749977],[-53.89116210937499,-25.66884765625001],[-54.15458984374999,-25.523046874999963],[-54.44394531249998,-25.625],[-54.615869140624994,-25.576074218750023],[-54.61054687499998,-25.432714843750034],[-54.47314453124997,-25.22021484375],[-54.43623046875001,-25.12128906250001],[-54.281005859375,-24.30605468750001],[-54.31826171874994,-24.128125],[-54.26689453124996,-24.06582031250001],[-54.241796875,-24.047265624999966],[-54.44023437500002,-23.90175781249998],[-54.62548828125,-23.8125],[-54.98266601562494,-23.974511718749966],[-55.081884765625006,-23.997656249999977],[-55.1943359375,-24.017480468750023],[-55.28691406249993,-24.00429687499999],[-55.366308593750034,-23.99101562499996],[-55.41591796875002,-23.95136718749997],[-55.4423828125,-23.86533203125002],[-55.4423828125,-23.792578125000034],[-55.458886718749966,-23.686718750000054],[-55.51845703124994,-23.627246093750017],[-55.53828124999998,-23.580957031249994],[-55.61767578125,-22.67148437499999],[-55.74663085937499,-22.51269531249997],[-55.753271484375006,-22.410156250000043],[-55.84916992187499,-22.307617187500014],[-55.991406249999926,-22.28115234375005],[-56.18984374999994,-22.28115234375005],[-56.246044921874926,-22.26464843749997],[-56.39487304687498,-22.092675781250023],[-56.44780273437502,-22.07617187500003],[-56.77519531249999,-22.261328125],[-57.955908203125034,-22.109179687500003],[-57.94267578124999,-21.79833984375],[-57.830224609374994,-20.99794921875001],[-57.91513671874998,-20.690332031249966],[-57.97905273437493,-20.65732421874999],[-58.00224609374996,-20.465429687499977],[-58.02539062499997,-20.41582031249999],[-58.05844726562495,-20.38613281249998],[-58.091503906249926,-20.33320312500004],[-58.124609375000034,-20.293457031250014],[-58.13779296874995,-20.237304687500043],[-58.15976562499998,-20.164648437499977],[-58.09375,-20.15107421874997],[-58.021142578124994,-20.05517578124997],[-57.96015625000001,-20.04072265625004],[-57.887597656249966,-20.020410156249994],[-57.860742187499994,-19.97958984375002],[-58.029931640624994,-19.83271484375004],[-58.131494140624994,-19.74453125],[-57.71679687499997,-19.044042968750034],[-57.73085937499999,-18.91718750000004],[-57.783105468749994,-18.91425781249997],[-57.725,-18.73320312500003],[-57.57402343749993,-18.279296875000014],[-57.49565429687496,-18.21464843749999],[-57.58647460937499,-18.122265625],[-57.66166992187493,-17.94736328124999],[-57.78017578125002,-17.67177734374998],[-57.78886718750002,-17.573046875000017],[-57.83247070312501,-17.512109375000037],[-57.90502929687497,-17.53232421874999],[-57.990917968749955,-17.512890625000026],[-58.20556640625,-17.363085937499974],[-58.347753906250006,-17.282128906249994],[-58.39599609374997,-17.234277343750023],[-58.417382812499994,-17.08056640624997],[-58.459814453125006,-16.910742187500006],[-58.478125,-16.70068359375003],[-58.470605468749994,-16.650195312500045],[-58.35039062500002,-16.49082031249999],[-58.34560546875002,-16.284375],[-58.375390624999966,-16.283593749999966],[-58.423681640625034,-16.30791015625003],[-58.49658203124994,-16.32666015625003],[-58.537939453125034,-16.32822265624999],[-60.17558593749996,-16.26933593749999],[-60.187207031249955,-16.132128906250017],[-60.206640625,-15.90195312500002],[-60.242333984374994,-15.479589843750034],[-60.38046874999998,-15.318261718750023],[-60.53046874999998,-15.143164062499977],[-60.58320312499998,-15.098339843749983],[-60.273339843749994,-15.088769531249994],[-60.372705078124994,-14.41875],[-60.506591796875,-13.78984375],[-61.077001953125034,-13.489746093750014],[-61.129150390625,-13.498535156250028],[-61.41606445312502,-13.526562499999969],[-61.511572265625006,-13.541210937500011],[-61.789941406249966,-13.525585937500026],[-61.87412109374998,-13.470410156249983],[-61.944726562499966,-13.40625],[-62.09477539062499,-13.241992187499989],[-62.118017578125006,-13.15976562500002],[-62.765478515625034,-12.99726562500004],[-63.01518554687502,-12.80556640624998],[-63.067480468750006,-12.669140624999983],[-63.34667968749994,-12.68007812499999],[-63.68857421874998,-12.478027343749957],[-64.42050781249995,-12.439746093749974],[-64.783447265625,-12.059375],[-65.18574218749998,-11.749511718749957],[-65.389892578125,-11.246289062500011],[-65.33403320312499,-10.892773437500026],[-65.44711914062503,-10.507421875000034],[-65.4369140625,-10.449023437499946],[-65.39545898437498,-10.392285156250026],[-65.31308593749998,-10.253027343749991],[-65.29858398437497,-10.146777343750017],[-65.39614257812494,-9.712402343749986],[-66.57534179687502,-9.899902343749986],[-67.41694335937495,-10.389843749999969],[-67.72177734374998,-10.683105468749943],[-67.83500976562496,-10.662792968749983],[-67.99169921875,-10.674414062499949],[-68.07167968749994,-10.703125],[-68.39799804687499,-11.01875],[-68.678369140625,-11.11279296875],[-68.84833984374998,-11.01113281249998],[-69.228515625,-10.955664062499963],[-69.46254882812497,-10.948144531250023],[-69.57861328125,-10.951757812499963],[-69.67402343749998,-10.9541015625],[-69.83979492187501,-10.93339843749996],[-69.96035156249997,-10.92988281250004],[-70.06630859374997,-10.982421875],[-70.22006835937503,-11.04765625],[-70.29038085937498,-11.064257812499974],[-70.34199218750001,-11.066699218750017],[-70.39228515624995,-11.058593749999972],[-70.45087890624998,-11.024804687500009],[-70.53325195312496,-10.946875],[-70.59653320312498,-10.976855468750017],[-70.642333984375,-11.010253906249986],[-70.59916992187499,-9.620507812500009],[-70.54111328124998,-9.4375],[-70.60791015625,-9.463671875000031],[-70.63691406249995,-9.478222656249969],[-71.041748046875,-9.81875],[-71.11528320312499,-9.852441406250009],[-71.33940429687499,-9.988574218750031],[-72.18159179687495,-10.003710937500003],[-72.37905273437497,-9.51015625],[-73.20942382812493,-9.411425781249946],[-73.08984375,-9.26572265625002],[-72.970361328125,-9.120117187500028],[-72.97402343750002,-8.9931640625],[-73.07050781249995,-8.8828125],[-73.203125,-8.719335937499991],[-73.30244140624995,-8.654003906250011],[-73.36040039062496,-8.479296875000031],[-73.39814453125001,-8.458984374999986],[-73.54912109374993,-8.34580078125002],[-73.73203125,-7.875390625],[-73.72041015624993,-7.782519531250017],[-73.76689453124999,-7.753515624999963],[-73.82207031249996,-7.738964843750026],[-73.89462890624998,-7.654785156250014],[-73.946875,-7.611230468750023],[-73.98173828124996,-7.58505859375002],[-74.00205078125003,-7.556054687499966],[-73.98173828124996,-7.535742187500006],[-73.95849609374994,-7.506640625000031],[-73.96430664062498,-7.378906250000028],[-73.74946289062498,-7.335351562500037],[-73.72041015624993,-7.309277343749969],[-73.758203125,-7.172753906249952],[-73.79301757812499,-7.135058593750003],[-73.75810546874999,-6.90576171875],[-73.137353515625,-6.4658203125],[-73.23554687500001,-6.098437500000017],[-73.209375,-6.028710937500023],[-73.16289062499996,-5.933398437499974],[-72.97988281249997,-5.634863281249991],[-72.88706054687498,-5.122753906250026],[-72.83193359374994,-5.09375],[-72.69873046874997,-5.067187499999989],[-72.60834960937495,-5.009570312499974],[-72.46899414062497,-4.901269531250023],[-72.35283203124993,-4.786035156249994],[-72.25678710937501,-4.74892578124998],[-71.8447265625,-4.504394531249986],[-70.97368164062499,-4.350488281249994],[-70.86601562499999,-4.229589843749963],[-70.79951171874995,-4.173339843749957],[-70.72158203124997,-4.15888671875004],[-70.53066406249997,-4.167578125000034],[-70.40463867187498,-4.150097656250026],[-70.34365234375,-4.193652343750017],[-70.31689453124994,-4.246972656250037],[-70.23916015625002,-4.30117187499998],[-70.12880859375,-4.286621093749943],[-70.05332031249998,-4.333105468750006],[-70.00395507812496,-4.327246093749963],[-69.97202148437503,-4.30117187499998],[-69.96591796875003,-4.2359375],[-69.94819335937498,-4.200585937500009],[-69.66904296875003,-2.667675781249997],[-69.40024414062498,-1.194921874999977],[-69.63398437500001,-0.50927734375],[-70.07050781249993,-0.13886718750004],[-70.05390624999993,0.578613281250028],[-69.47211914062498,0.72993164062504],[-69.15332031249994,0.65878906250002],[-69.31181640624999,1.050488281249969],[-69.85214843750003,1.05952148437504],[-69.84858398437493,1.708740234375043],[-68.17656249999999,1.719824218749991],[-68.25595703125,1.845507812500017],[-68.19379882812495,1.987011718749983],[-67.93623046874998,1.748486328124969],[-67.40043945312499,2.116699218750028],[-67.11923828124998,1.703613281249986],[-67.082275390625,1.185400390625006],[-66.87602539062499,1.223046875000037],[-66.34711914062498,0.7671875],[-66.06005859375003,0.78535156250004],[-65.68144531249999,0.983447265624989],[-65.52299804687493,0.843408203124966],[-65.55605468750002,0.687988281250014],[-65.47338867187497,0.691259765624977],[-65.10375976562497,1.108105468749983],[-64.20502929687493,1.52949218750004],[-64.00849609374995,1.931591796874969],[-63.43251953124994,2.155566406250045],[-63.389257812500006,2.411914062500045],[-64.04658203124998,2.502392578124997],[-64.22109375000002,3.587402343749972],[-64.66899414062496,4.01181640625002],[-64.788671875,4.276025390625023],[-64.57636718750001,4.139892578125],[-64.19248046874995,4.126855468750009],[-64.02148437500003,3.929101562500051],[-63.33867187500002,3.943896484375045],[-62.85698242187502,3.593457031249969],[-62.71210937499998,4.01791992187502],[-62.41064453124994,4.156738281249972],[-62.153125,4.098388671874986],[-61.82084960937496,4.197021484375],[-61.28007812500002,4.516894531249974],[-61.00283203125002,4.535253906249991],[-60.603857421875006,4.94936523437498],[-60.671972656250034,5.164355468749989],[-60.71196289062499,5.191552734375023],[-60.742138671874926,5.202050781250037],[-60.6513671875,5.221142578125011],[-60.45952148437499,5.188085937500034],[-60.40878906249998,5.21015625],[-60.33520507812497,5.199316406250006],[-60.241650390624926,5.257958984374966],[-60.14204101562498,5.238818359374974],[-59.990673828124955,5.082861328124991],[-60.14863281249998,4.533251953125031],[-59.69970703125,4.353515625]]]]},"properties":{"name":"Brazil","childNum":17}},{"geometry":{"type":"Polygon","coordinates":[[[-59.493310546874994,13.081982421874997],[-59.611328125,13.102099609374989],[-59.6466796875,13.303125],[-59.427636718749994,13.152783203124997],[-59.493310546874994,13.081982421874997]]]},"properties":{"name":"Barbados","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[115.02675781250005,4.899707031249989],[115.1400390625,4.899755859374991],[115.290625,4.352587890624989],[115.10703125000006,4.390429687499974],[115.02675781250005,4.899707031249989]]],[[[115.02675781250005,4.899707031249989],[114.74667968750006,4.718066406250017],[114.84023437500005,4.393212890625009],[114.65410156250007,4.037646484375045],[114.0638671875,4.592675781249966],[114.42441406250006,4.660400390625],[114.99541015625002,5.022363281250023],[115.02675781250005,4.899707031249989]]]]},"properties":{"name":"Brunei","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[91.63193359375003,27.759960937499997],[91.5947265625,27.557666015624996],[91.74306640625002,27.442529296874994],[91.85126953125001,27.438623046874994],[91.95097656249999,27.458300781249996],[91.99082031250003,27.4501953125],[92.044921875,27.364697265624997],[92.08339843750002,27.290625],[92.03115234375002,27.214306640624997],[92.00253906250003,27.147363281249994],[91.99228515625003,27.099902343749996],[91.99863281250003,27.079296875],[92.03085937500003,27.040820312499996],[92.06816406249999,26.9751953125],[92.07343750000001,26.91484375],[92.04970703125002,26.874853515625],[91.99833984374999,26.85498046875],[91.84208984374999,26.852978515624997],[91.67158203125001,26.802001953125],[91.517578125,26.807324218749997],[91.45585937499999,26.866894531249997],[91.4267578125,26.867089843749994],[91.28652343750002,26.789941406249994],[90.73964843750002,26.771679687499997],[90.34589843750001,26.890332031249997],[90.2060546875,26.847509765625],[90.12294921875002,26.754589843749997],[89.94316406249999,26.723925781249996],[89.76386718750001,26.7015625],[89.60996093750003,26.719433593749997],[89.58613281250001,26.778955078124994],[89.33212890625003,26.8486328125],[89.14824218749999,26.816162109375],[89.04091796875002,26.865039062499996],[88.85761718750001,26.961474609374996],[88.73876953125,27.175585937499996],[88.76035156250003,27.218115234375],[88.88164062499999,27.2974609375],[88.89140624999999,27.316064453124994],[88.94755859374999,27.464013671874994],[89.48066406250001,28.059960937499994],[89.53691406249999,28.107421875],[89.65273437500002,28.15830078125],[89.74980468749999,28.188183593749997],[89.81689453125,28.256298828124997],[89.89785156250002,28.294140625],[89.98105468750003,28.311181640624994],[90.34824218750003,28.243945312499996],[90.36298828125001,28.216503906249997],[90.33310546875003,28.093994140625],[90.35273437500001,28.080224609374994],[90.47734374999999,28.070849609374996],[90.63007812500001,28.078564453124997],[90.71572265625002,28.071728515624997],[91.02080078124999,27.970068359375],[91.07773437500003,27.974462890625],[91.22587890624999,28.071240234374997],[91.27304687500003,28.078369140625],[91.30683593750001,28.064013671874996],[91.36757812500002,28.021630859374994],[91.64189453124999,27.923242187499994],[91.63193359375003,27.759960937499997]]]},"properties":{"name":"Bhutan","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[25.2587890625,-17.793554687500006],[25.242285156250006,-17.969042968750003],[25.939355468750023,-18.93867187500001],[26.168066406250006,-19.53828125000001],[27.17822265625,-20.10097656250001],[27.28076171875,-20.47871093750001],[27.679296875,-20.503027343750006],[27.66943359375,-21.064257812500003],[28.014062500000023,-21.55419921875],[29.02558593750001,-21.796875],[29.042382812500023,-22.018359375],[29.237207031250023,-22.07949218750001],[29.315234375000017,-22.15771484375],[29.36484375,-22.193945312500006],[29.1298828125,-22.21328125],[29.013476562500017,-22.278417968750006],[28.94580078125,-22.395117187500006],[28.83984375,-22.480859375],[28.21015625000001,-22.693652343750003],[27.812597656250006,-23.108007812500006],[27.7685546875,-23.14892578125],[27.085546875,-23.577929687500003],[26.835058593750006,-24.240820312500006],[26.617773437500006,-24.3955078125],[26.451757812500006,-24.58271484375001],[26.39716796875001,-24.613574218750003],[26.130859375,-24.671484375],[26.031835937500006,-24.702441406250003],[25.912109375,-24.74746093750001],[25.518164062500006,-25.66279296875001],[25.21337890625,-25.75625],[24.33056640625,-25.74287109375001],[24.19296875,-25.632910156250006],[23.969531250000017,-25.626074218750006],[23.89375,-25.600878906250003],[23.389257812500006,-25.29140625],[23.148730468750017,-25.288671875],[22.878808593750023,-25.45791015625001],[22.59765625,-26.13271484375001],[22.548632812500017,-26.17841796875001],[22.47089843750001,-26.219042968750003],[22.217578125000017,-26.38886718750001],[22.090917968750006,-26.580175781250006],[22.01093750000001,-26.635839843750006],[21.78828125000001,-26.710058593750006],[21.738085937500017,-26.80683593750001],[21.694726562500023,-26.840917968750006],[20.73984375,-26.84882812500001],[20.641406250000017,-26.7421875],[20.79316406250001,-25.915625],[20.4306640625,-25.147070312500006],[19.98046875,-24.77675781250001],[19.977343750000017,-22.00019531250001],[20.9794921875,-21.9619140625],[20.97412109375,-18.31884765625],[23.219335937500006,-17.99970703125001],[23.599707031250006,-18.4599609375],[24.243945312500017,-18.0234375],[24.530566406250017,-18.052734375],[24.909082031250023,-17.821386718750006],[25.2587890625,-17.793554687500006]]]},"properties":{"name":"Botswana","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[22.86005859375001,10.919677734375],[23.646289062500017,9.822900390624994],[23.62265625,9.340625],[23.46826171875,9.11474609375],[23.53730468750001,8.815820312499994],[24.147363281250023,8.665625],[24.291406250000023,8.29140625],[24.853320312500017,8.137548828124991],[25.20039062500001,7.807910156249989],[25.18134765625001,7.557226562499991],[25.27890625,7.427490234375],[26.36181640625,6.635302734374989],[26.30859375,6.455322265625],[26.514257812500006,6.069238281249994],[27.143945312500023,5.722949218749989],[27.4033203125,5.109179687499989],[27.071875,5.199755859374989],[26.822070312500017,5.062402343749994],[25.52509765625001,5.31210937499999],[25.065234375000017,4.967431640624994],[24.31982421875,4.994140625],[23.41718750000001,4.663134765624989],[22.864550781250017,4.723876953125],[22.422167968750017,4.134960937499997],[20.55810546875,4.462695312499989],[20.226367187500017,4.829638671874989],[19.806542968750023,5.089306640624997],[19.5009765625,5.127490234374989],[19.06855468750001,4.891406249999989],[18.594140625000023,4.346240234374989],[18.6103515625,3.478417968749994],[18.474414062500017,3.622998046874997],[18.160937500000017,3.499804687499989],[17.491601562500023,3.687304687499989],[16.610742187500023,3.50537109375],[16.468554687500017,2.831738281249997],[16.183398437500017,2.270068359374989],[16.0634765625,2.90859375],[15.128710937500017,3.826904296875],[15.063574218750006,4.284863281249997],[14.73125,4.602392578124991],[14.56298828125,5.279931640624994],[14.616894531250011,5.865136718749994],[14.43115234375,6.038720703124994],[14.7392578125,6.27978515625],[15.206738281250011,7.206152343749991],[15.480078125,7.523779296874991],[15.957617187500006,7.507568359375],[16.37890625,7.683544921874997],[16.545312500000023,7.865478515625],[16.784765625,7.550976562499997],[17.6494140625,7.98359375],[18.56416015625001,8.0458984375],[19.108691406250017,8.656152343749994],[18.886035156250017,8.836035156249991],[18.95625,8.938867187499994],[20.342089843750017,9.127099609374994],[20.773242187500017,9.405664062499994],[21.682714843750006,10.289843749999989],[21.771484375,10.642822265625],[22.49384765625001,10.996240234374994],[22.86005859375001,10.919677734375]]]},"properties":{"name":"Central African Rep.","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-59.78759765624997,43.939599609374994],[-60.11748046874996,43.95336914062506],[-59.727148437500006,44.002832031249994],[-59.78759765624997,43.939599609374994]]],[[[-66.7625,44.68178710937502],[-66.8970703125,44.62890625],[-66.80214843749994,44.80537109374998],[-66.7625,44.68178710937502]]],[[[-60.961572265624966,45.48994140625001],[-61.081738281249926,45.55781249999998],[-60.91245117187498,45.56728515625005],[-60.961572265624966,45.48994140625001]]],[[[-73.69531249999997,45.58549804687502],[-73.85771484375002,45.573583984375006],[-73.57236328124998,45.69448242187502],[-73.69531249999997,45.58549804687502]]],[[[-73.56650390625003,45.469091796875034],[-73.960546875,45.44140624999997],[-73.68745117187498,45.561425781249994],[-73.47607421874997,45.704736328124994],[-73.56650390625003,45.469091796875034]]],[[[-61.10517578124998,45.94472656250002],[-60.86523437499997,45.983496093750006],[-61.05903320312501,45.70336914062497],[-60.73789062499995,45.75141601562498],[-60.46059570312494,45.96870117187501],[-60.733300781249994,45.956591796875045],[-60.297949218750034,46.31123046874998],[-60.22646484374994,46.19555664062506],[-59.86503906249993,46.159521484375006],[-59.8421875,45.941552734374994],[-60.67294921874995,45.59082031250006],[-61.28369140624994,45.573876953124966],[-61.44980468749995,45.71621093750002],[-61.40864257812501,46.17036132812498],[-60.87016601562499,46.796777343749966],[-60.40820312500003,47.00351562499998],[-60.332910156249966,46.737011718749955],[-60.49453125000002,46.270263671875],[-61.10517578124998,45.94472656250002]]],[[[-63.811279296875,46.46870117187501],[-63.68144531249993,46.561914062499994],[-63.12939453125,46.422216796875034],[-62.02373046874999,46.42158203125001],[-62.52607421875001,46.20288085937503],[-62.531347656250034,45.977294921875],[-63.02207031249998,46.06660156249998],[-62.89453125000003,46.12358398437496],[-63.056347656249955,46.22392578124996],[-62.97846679687498,46.31635742187498],[-63.21347656249998,46.15986328124998],[-63.641015624999966,46.23046874999997],[-63.758642578125034,46.397607421874994],[-64.11083984375003,46.425439453124994],[-64.13603515624999,46.59970703125006],[-64.388037109375,46.640869140625],[-63.99355468750002,47.06157226562502],[-64.08789062499997,46.77543945312499],[-63.811279296875,46.46870117187501]]],[[[-61.91411132812496,47.284521484375034],[-61.77255859374998,47.25981445312499],[-62.00830078124994,47.23427734375002],[-61.924707031249966,47.425146484375006],[-61.3955078125,47.63764648437504],[-61.91411132812496,47.284521484375034]]],[[[-54.227148437500034,47.44135742187501],[-54.32597656250002,47.408105468749994],[-54.12817382812494,47.646826171875034],[-54.227148437500034,47.44135742187501]]],[[[-74.70888671874997,45.0038574218751],[-73.55810546875,45.425097656250045],[-73.1595703125,46.01005859375002],[-72.10927734374997,46.55122070312504],[-71.26118164062495,46.75625],[-70.51948242187501,47.032519531250045],[-69.47104492187503,47.96728515625006],[-68.23818359374994,48.62641601562504],[-66.17817382812493,49.21313476562503],[-64.83632812499994,49.191748046875006],[-64.2162109375,48.873632812500034],[-64.51372070312493,48.84111328124999],[-64.24609374999994,48.69111328124998],[-64.34882812500001,48.423193359375034],[-65.259423828125,48.02124023437503],[-65.92670898437495,48.188867187499994],[-66.70439453125002,48.0224609375],[-66.35961914062494,48.06064453125006],[-65.84941406250002,47.91103515625005],[-65.60722656249996,47.67001953125006],[-65.00166015624995,47.84682617187502],[-64.70322265625,47.72485351562503],[-64.91220703125003,47.36865234375003],[-65.31889648437502,47.101220703124994],[-64.831396484375,47.06079101562503],[-64.88251953124993,46.822851562500034],[-64.54150390625,46.240332031250034],[-63.91591796875002,46.165820312500045],[-63.831933593749966,46.107177734375],[-64.05639648437503,46.021337890625006],[-63.70288085937494,45.858007812500034],[-62.70068359374997,45.740576171875006],[-62.750097656250006,45.64824218750002],[-62.483056640624966,45.62182617187506],[-61.955517578124955,45.86816406249997],[-61.776513671874994,45.655615234375006],[-61.49228515624998,45.68701171875],[-61.350488281249966,45.57368164062501],[-61.28198242187494,45.441064453124994],[-61.46098632812502,45.36669921875003],[-61.03154296875002,45.29174804687506],[-63.306298828124994,44.64257812500003],[-63.60400390624997,44.68320312500006],[-63.60976562499999,44.47998046875006],[-63.999707031249926,44.64492187499999],[-64.10087890624993,44.487451171874966],[-64.1669921875,44.58666992187503],[-64.28608398437493,44.55034179687499],[-64.27568359374993,44.33408203124998],[-65.48168945312497,43.51806640625],[-65.73813476562498,43.56074218750001],[-65.88691406250001,43.79521484374999],[-66.125732421875,43.813818359375034],[-66.19306640624995,44.143847656250045],[-65.86801757812498,44.56879882812501],[-66.14638671875002,44.43593750000005],[-66.090625,44.50493164062499],[-64.44814453125,45.33745117187502],[-64.13549804687497,45.023046875],[-64.09316406249997,45.21708984375002],[-63.368017578125034,45.36479492187502],[-64.87314453124998,45.35458984375006],[-64.31464843749998,45.83569335937503],[-64.48222656250002,45.80634765624998],[-64.63271484375002,45.94663085937506],[-64.77851562499998,45.63842773437497],[-65.88447265624995,45.22290039062506],[-66.10976562500002,45.316601562499955],[-66.02656249999995,45.417578125],[-66.43984374999994,45.09589843750001],[-66.87246093749997,45.067285156249966],[-67.12485351562498,45.16943359375],[-67.366943359375,45.17377929687498],[-67.43266601562496,45.603125],[-67.80224609374994,45.7275390625],[-67.806787109375,47.08281249999999],[-68.23549804687502,47.34594726562503],[-68.93720703124998,47.21123046875002],[-69.0501953125,47.426611328125034],[-69.24287109374998,47.46298828124998],[-70.00771484375002,46.70893554687501],[-70.296240234375,45.90610351562506],[-70.86503906249999,45.27070312500001],[-71.327294921875,45.29008789062496],[-71.51752929687495,45.00756835937497],[-74.663232421875,45.00390625000003],[-74.70888671874997,45.0038574218751]]],[[[-126.09208984374995,49.35400390625003],[-126.06401367187499,49.26362304687501],[-126.22963867187498,49.29565429687506],[-126.09208984374995,49.35400390625003]]],[[[-54.55439453125001,49.5888671875],[-54.786523437499966,49.496142578125045],[-54.86357421875002,49.576074218749966],[-54.55439453125001,49.5888671875]]],[[[-54.093701171874955,49.74443359374999],[-53.98066406250001,49.66196289062498],[-54.28613281249997,49.595361328124994],[-54.27763671875002,49.71147460937502],[-54.093701171874955,49.74443359374999]]],[[[-126.64121093749999,49.605810546875006],[-126.93857421874999,49.71845703125004],[-126.92583007812497,49.837744140625006],[-126.73813476562502,49.84365234375005],[-126.64121093749999,49.605810546875006]]],[[[-61.801123046875034,49.093896484374966],[-63.04150390624994,49.224951171875034],[-64.485205078125,49.88696289062497],[-64.13144531249995,49.94165039062503],[-62.858544921874966,49.70546875000005],[-61.817138671875,49.28354492187498],[-61.69614257812495,49.139013671875006],[-61.801123046875034,49.093896484374966]]],[[[-125.18413085937497,50.09711914062498],[-125.301171875,50.4140625],[-125.07402343750002,50.22065429687501],[-125.18413085937497,50.09711914062498]]],[[[-127.19731445312495,50.640380859375],[-125.48208007812501,50.316796874999966],[-124.83061523437499,49.53007812500002],[-123.99580078125,49.22402343750002],[-123.49702148437498,48.58208007812499],[-123.38989257812501,48.67021484374999],[-123.31064453125003,48.41103515625002],[-123.57314453124995,48.32280273437499],[-123.91694335937501,48.386572265625034],[-125.12070312500002,48.76079101562496],[-124.84965820312496,49.02827148437501],[-124.81264648437497,49.212646484375],[-124.92734374999998,49.01420898437499],[-125.489453125,48.933789062499955],[-125.82851562499998,49.09184570312499],[-125.64423828125001,49.18579101562506],[-125.95166015625001,49.24804687500003],[-125.93540039062499,49.401464843750006],[-126.51914062499999,49.396777343750045],[-126.54189453125001,49.590478515624966],[-126.13408203124997,49.672314453124955],[-126.52524414062499,49.71958007812498],[-126.90332031250001,49.94414062499999],[-127.114306640625,49.879736328125034],[-127.24980468749999,50.13798828124996],[-127.34941406249995,50.05195312500001],[-127.46713867187503,50.163427734375006],[-127.86391601562495,50.12773437500002],[-127.90585937499998,50.44521484375002],[-127.48652343749998,50.404638671875034],[-127.46591796874996,50.58310546875006],[-128.05834960937494,50.498486328124955],[-128.34604492187503,50.744238281250006],[-127.91806640624998,50.86054687500001],[-127.19731445312495,50.640380859375]]],[[[-55.45874023437494,51.53652343750005],[-55.58339843749994,51.38857421875002],[-56.031103515625034,51.328369140625],[-55.8,51.033300781250034],[-56.732324218749966,50.007714843749994],[-56.822167968749966,49.613476562499955],[-56.179394531249955,50.114990234375],[-56.161279296874994,49.94013671874998],[-55.50292968749997,49.98315429687503],[-56.14018554687496,49.61914062500006],[-55.869824218749955,49.67016601562506],[-56.08730468750002,49.45195312499999],[-55.375927734374955,49.48974609374997],[-55.34384765624998,49.37290039062506],[-55.22954101562496,49.508154296875006],[-55.35317382812502,49.07944335937506],[-54.50219726562503,49.52734375],[-54.44824218749997,49.329443359375006],[-53.957714843749955,49.44184570312498],[-53.61943359374996,49.321630859375006],[-53.57343750000001,49.141210937500034],[-54.16127929687494,48.787695312500034],[-53.852880859375006,48.81132812499996],[-53.966015624999955,48.70668945312505],[-53.70634765624999,48.65551757812503],[-54.11445312499998,48.393603515625045],[-53.027587890625,48.634716796874955],[-53.1357421875,48.40185546875003],[-53.60976562500002,48.20771484375001],[-53.56943359374998,48.088085937499955],[-53.869580078124926,48.019677734374966],[-53.63823242187496,48.01464843750003],[-53.863671874999966,47.787011718749994],[-53.67236328125,47.64824218749999],[-53.28271484375,47.99785156249996],[-52.86601562499993,48.11298828124998],[-53.16982421875002,47.51210937500005],[-52.945019531249955,47.55283203124998],[-52.782421874999955,47.769433593749966],[-52.653662109375034,47.549414062500006],[-53.11484375,46.65581054687502],[-53.32304687499996,46.71835937499998],[-53.589794921874955,46.638867187499955],[-53.59736328124998,47.14599609374997],[-54.00957031249993,46.839599609375],[-54.173730468749994,46.88037109375003],[-53.84951171875002,47.440332031249994],[-53.98901367187503,47.756201171875034],[-54.191845703124955,47.85981445312501],[-54.488134765625006,47.40385742187502],[-54.47392578124996,47.54707031249998],[-54.856640624999955,47.385009765625],[-55.31572265624993,46.905712890624955],[-55.78852539062498,46.86723632812502],[-55.91923828124996,47.01689453124996],[-55.49150390624996,47.16064453125003],[-54.78461914062501,47.664746093749955],[-55.366308593750034,47.66108398437501],[-55.57612304687498,47.46523437499999],[-56.12724609374999,47.50283203125002],[-55.867089843749994,47.592333984375045],[-55.85791015625,47.81918945312498],[-56.774121093749955,47.56499023437499],[-58.33686523437501,47.73085937500002],[-59.11694335937494,47.57070312499999],[-59.32065429687498,47.736914062500006],[-59.272070312500034,47.99555664062504],[-58.330224609374994,48.52211914062502],[-59.16767578124998,48.558496093749966],[-58.84179687500003,48.74643554687498],[-58.906445312499955,48.65019531249999],[-58.716455078124994,48.59804687500002],[-58.403662109375034,49.08432617187498],[-57.99052734374996,48.987939453124966],[-58.09892578124993,49.07744140624999],[-57.98007812499998,49.229638671874994],[-58.19091796875003,49.25874023437498],[-58.21337890625,49.38666992187501],[-58.01582031249998,49.54248046874997],[-57.79130859374999,49.48999023437503],[-57.92617187499999,49.700830078124994],[-57.4326171875,50.50581054687504],[-57.179589843749966,50.614843750000034],[-57.29799804687502,50.69873046874997],[-57.03593750000002,51.01083984374998],[-56.68242187500002,51.332763671875],[-56.025585937499955,51.56835937500006],[-55.6904296875,51.471337890624994],[-55.666406249999966,51.57890624999999],[-55.45874023437494,51.53652343750005]]],[[[-127.92465820312498,51.47387695312497],[-128.14877929687498,51.62670898437503],[-128.03173828125006,51.708398437499966],[-127.92465820312498,51.47387695312497]]],[[[-79.38427734374997,51.951953125000045],[-79.64375,52.01005859374996],[-79.27128906249996,52.086816406249966],[-79.38427734374997,51.951953125000045]]],[[[-128.36875,52.40087890625],[-128.43979492187503,52.696386718750006],[-128.24726562499998,52.784375],[-128.36875,52.40087890625]]],[[[-80.73168945312494,52.74726562499998],[-82.03925781249998,53.04990234374998],[-81.84731445312494,53.18627929687497],[-81.135595703125,53.20581054687503],[-80.73168945312494,52.74726562499998]]],[[[-131.7537109375,53.195556640625],[-131.63466796874997,52.92216796874999],[-131.97177734374998,52.87983398437498],[-131.45522460937502,52.70170898437502],[-131.59057617187494,52.578222656250006],[-131.25971679687495,52.415917968749966],[-131.31992187499998,52.30307617187498],[-131.142626953125,52.291113281250034],[-131.221533203125,52.15361328124999],[-132.16508789062493,52.783300781250034],[-132.14375,52.99931640624999],[-132.54677734374997,53.1375],[-131.7537109375,53.195556640625]]],[[[-128.55244140624998,52.93974609375002],[-128.50991210937502,52.51860351562502],[-128.678955078125,52.289648437500006],[-128.74633789062494,52.763378906249955],[-128.89980468749997,52.67382812500003],[-129.175927734375,52.964941406250006],[-129.033251953125,53.27993164062505],[-128.63266601562498,53.1125],[-128.55244140624998,52.93974609375002]]],[[[-129.167724609375,53.11787109374998],[-129.32387695312502,53.142138671875045],[-129.23818359374997,53.33007812500006],[-129.167724609375,53.11787109374998]]],[[[-129.84858398437498,53.167919921874955],[-130.51757812500003,53.54423828124999],[-130.45200195312498,53.63115234375002],[-129.94472656250002,53.436376953125034],[-129.75483398437498,53.244775390624994],[-129.84858398437498,53.167919921874955]]],[[[-130.236279296875,53.95854492187502],[-130.38422851562504,53.84394531250001],[-130.703173828125,53.892236328124994],[-130.44799804687497,54.08901367187502],[-130.236279296875,53.95854492187502]]],[[[-132.65551757812503,54.12749023437496],[-132.30336914062497,54.098876953125],[-132.16611328124998,53.95522460937505],[-132.53466796875,53.651708984375034],[-132.18696289062504,53.68481445312503],[-132.134423828125,54.03427734374998],[-131.66762695312502,54.14135742187503],[-131.957421875,53.308691406250034],[-132.34726562500003,53.18920898437503],[-132.747509765625,53.310498046874955],[-132.425,53.33696289062502],[-132.84501953125,53.507714843749994],[-133.07949218749997,53.837011718750034],[-133.04838867187493,54.15893554687497],[-132.65551757812503,54.12749023437496]]],[[[-130.92714843749997,54.47905273437499],[-130.90683593750003,54.63178710937504],[-130.75800781249998,54.61376953125],[-130.92714843749997,54.47905273437499]]],[[[-130.57534179687497,54.769677734374966],[-130.2140625,55.02587890625003],[-130.34941406249996,54.814550781250034],[-130.57534179687497,54.769677734374966]]],[[[-79.97758789062499,56.20703125000006],[-80.057470703125,56.28735351562497],[-79.57973632812502,56.466357421875045],[-79.97758789062499,56.20703125000006]]],[[[-78.93559570312496,56.26606445312498],[-79.17548828124998,55.88505859374999],[-79.18212890625,56.21215820312503],[-79.4951171875,55.87475585937503],[-79.76474609374995,55.80678710937505],[-79.54472656249999,56.12836914062501],[-79.9875,55.89213867187502],[-79.45888671875,56.53974609374998],[-79.53632812499995,56.180078124999966],[-79.27241210937493,56.600439453125006],[-78.93559570312496,56.26606445312498]]],[[[-61.743603515624955,57.55458984375005],[-61.6375,57.41606445312499],[-62.01123046875003,57.54848632812505],[-61.743603515624955,57.55458984375005]]],[[[-79.71650390624998,57.515527343749994],[-79.80844726562498,57.44243164062502],[-79.74257812499997,57.60795898437499],[-79.71650390624998,57.515527343749994]]],[[[-69.16005859375,59.04023437500001],[-69.35283203125002,58.96074218749999],[-69.30322265625003,59.144873046875006],[-69.16005859375,59.04023437500001]]],[[[-64.40703125,60.367089843749966],[-64.44194335937496,60.2978515625],[-64.73793945312497,60.37563476562502],[-64.83642578124997,60.50102539062499],[-64.40703125,60.367089843749966]]],[[[-68.23378906250002,60.24091796875001],[-68.36787109374998,60.314746093750045],[-68.08759765624998,60.58784179687501],[-67.81884765624994,60.449511718750074],[-68.23378906250002,60.24091796875001]]],[[[-78.531640625,60.72856445312499],[-78.66889648437498,60.716894531250006],[-78.24169921875,60.818652343750045],[-78.531640625,60.72856445312499]]],[[[-64.83261718749998,61.366064453125006],[-65.43212890625,61.649511718750034],[-64.78964843750003,61.662207031250034],[-64.83261718749998,61.366064453125006]]],[[[-65.03056640624999,61.879052734374966],[-64.89658203124995,61.73330078125005],[-65.23535156249997,61.89770507812506],[-65.03056640624999,61.879052734374966]]],[[[-79.54531250000002,62.41171875000006],[-79.28647460937495,62.247656250000034],[-79.32392578124995,62.02607421875001],[-79.81611328124995,61.59462890625002],[-80.26518554687496,61.818212890625006],[-80.26005859374996,62.10903320312502],[-79.9267578125,62.39287109375002],[-79.54531250000002,62.41171875000006]]],[[[-64.82382812499998,62.558740234374994],[-64.46503906249998,62.535937500000045],[-64.47832031250002,62.417871093749966],[-64.901220703125,62.421044921874994],[-64.82382812499998,62.558740234374994]]],[[[-70.33706054687497,62.548730468749994],[-70.76606445312498,62.596875],[-71.22011718750002,62.873925781249966],[-70.44262695312497,62.73378906250002],[-70.33706054687497,62.548730468749994]]],[[[-82.00048828124997,62.95419921874998],[-82.02583007812498,62.73007812499998],[-82.56826171875002,62.403222656249994],[-83.01582031249998,62.20991210937498],[-83.69887695312497,62.16025390624998],[-83.91049804687498,62.45415039062499],[-83.37641601562498,62.904931640624994],[-82.00048828124997,62.95419921874998]]],[[[-77.87670898437497,63.470556640625034],[-77.53271484374997,63.233642578125],[-77.94243164062496,63.11440429687502],[-78.536767578125,63.423730468749994],[-77.87670898437497,63.470556640625034]]],[[[-76.67758789062503,63.393945312499966],[-77.36474609374994,63.588330078124955],[-77.13369140624997,63.68203125000002],[-76.65244140624998,63.503564453124994],[-76.67758789062503,63.393945312499966]]],[[[-84.91962890624995,65.26108398437503],[-84.50112304687497,65.45844726562501],[-84.08486328125,65.21782226562502],[-82.05,64.64428710937506],[-81.67612304687498,64.21264648437503],[-81.88710937499997,64.01640625000002],[-80.82895507812495,64.08994140625],[-80.30205078124999,63.76220703125003],[-81.04638671875003,63.461572265624966],[-82.378125,63.706787109375],[-82.46708984375002,63.92695312500001],[-83.30395507812497,64.14379882812506],[-84.63291015625,63.30922851562502],[-85.39262695312496,63.119677734375045],[-85.76894531249997,63.70034179687502],[-87.15190429687499,63.58564453125001],[-86.93203124999997,63.90166015625002],[-86.252099609375,64.13686523437497],[-86.37426757812503,64.56582031249997],[-86.074609375,65.533837890625],[-85.55468750000003,65.91865234374995],[-85.17622070312501,65.746875],[-85.23994140624993,65.51030273437499],[-84.91962890624995,65.26108398437503]]],[[[-84.67475585937498,65.575],[-85.096337890625,65.756201171875],[-85.14960937500001,66.01538085937506],[-84.75737304687496,65.85893554687505],[-84.67475585937498,65.575]]],[[[-83.72597656249997,65.796728515625],[-83.23374023437495,65.71503906249995],[-83.332421875,65.63105468749998],[-84.11826171874995,65.77177734375007],[-84.40717773437501,66.13100585937497],[-83.78696289062495,65.96577148437498],[-83.72597656249997,65.796728515625]]],[[[-108.09272460937501,67.00517578124999],[-107.80551757812493,66.99858398437507],[-107.94394531249999,66.8578125],[-108.09272460937501,67.00517578124999]]],[[[-62.681542968749966,67.05629882812502],[-62.87163085937499,67.06259765625006],[-62.41679687499996,67.18847656250003],[-62.681542968749966,67.05629882812502]]],[[[-107.89985351562497,67.40180664062495],[-107.95024414062503,67.31821289062498],[-108.15224609374997,67.429443359375],[-108.04897460937498,67.664892578125],[-107.89985351562497,67.40180664062495]]],[[[-73.621728515625,67.783837890625],[-74.573388671875,67.82866210937507],[-74.70654296875003,68.06708984374995],[-73.49375,68.00063476562502],[-73.40717773437498,67.79306640625],[-73.621728515625,67.783837890625]]],[[[-86.59555664062498,67.7359375],[-86.89252929687498,67.836572265625],[-86.95981445312503,68.10024414062497],[-86.70209960937501,68.30561523437498],[-86.42114257812497,68.18344726562503],[-86.59555664062498,67.7359375]]],[[[-75.67587890624998,68.32250976562506],[-75.078125,68.17314453124999],[-75.20195312499996,67.45917968750001],[-75.78007812499996,67.28354492187503],[-76.94418945312498,67.25029296875002],[-77.30439453125001,67.68510742187505],[-77.12587890624997,67.94707031250002],[-76.59580078124998,68.27895507812497],[-75.67587890624998,68.32250976562506]]],[[[-78.98271484374999,68.19282226562501],[-79.17475585937493,68.26445312500002],[-78.95258789062495,68.35302734375006],[-78.98271484374999,68.19282226562501]]],[[[-104.54067382812497,68.405908203125],[-105.05136718749999,68.55903320312501],[-104.60200195312503,68.56152343749997],[-104.54067382812497,68.405908203125]]],[[[-74.880859375,68.34868164062505],[-75.40024414062503,68.52548828125],[-75.28740234374996,68.68774414062503],[-74.98364257812497,68.64760742187502],[-74.880859375,68.34868164062505]]],[[[-101.84589843749994,68.58632812499997],[-102.30815429687497,68.681982421875],[-102.01337890624995,68.82539062500001],[-101.73295898437495,68.75341796875],[-101.84589843749994,68.58632812499997]]],[[[-100.21723632812497,68.80668945312502],[-100.59653320312496,68.76640625000007],[-100.56547851562495,69.02680664062501],[-100.21723632812497,68.80668945312502]]],[[[-99.99467773437502,69.01352539062503],[-100.19570312500002,68.991455078125],[-100.153125,69.12949218750003],[-99.99467773437502,69.01352539062503]]],[[[-79.21064453124995,68.845458984375],[-79.24267578125,69.04926757812495],[-78.33256835937496,69.38603515624999],[-78.77919921875,68.95048828124999],[-79.21064453124995,68.845458984375]]],[[[-90.1998046875,69.419091796875],[-90.33027343749993,69.252197265625],[-90.49204101562503,69.369873046875],[-90.1998046875,69.419091796875]]],[[[-76.99536132812503,69.14375],[-77.37939453125,69.2740234375],[-77.18754882812502,69.440087890625],[-76.66884765625002,69.36616210937504],[-76.99536132812503,69.14375]]],[[[-101.171728515625,69.39707031250003],[-101.31289062499998,69.57607421875],[-101.00063476562497,69.4619140625],[-101.171728515625,69.39707031250003]]],[[[-95.51367187499997,69.57363281250002],[-95.43745117187498,69.37846679687505],[-95.73012695312502,69.34755859374997],[-95.80620117187499,69.56049804687501],[-95.89345703125,69.35175781250004],[-95.87583007812495,69.60600585937505],[-95.51367187499997,69.57363281250002]]],[[[-67.91469726562494,69.54096679687504],[-68.22138671874998,69.61674804687502],[-67.908837890625,69.68183593749995],[-67.91469726562494,69.54096679687504]]],[[[-78.02910156249993,69.71489257812502],[-78.03999023437495,69.6083984375],[-78.84819335937502,69.4828125],[-78.02910156249993,69.71489257812502]]],[[[-79.43066406250003,69.78779296874995],[-79.55283203124995,69.63085937500006],[-80.04750976562502,69.63432617187505],[-79.97783203124993,69.50966796874997],[-80.794775390625,69.68925781250005],[-80.42421875000002,69.797607421875],[-79.43066406250003,69.78779296874995]]],[[[-97.439453125,69.64267578125006],[-96.29995117187494,69.34438476562505],[-95.7513671875,68.89765624999998],[-95.26777343749998,68.82607421874997],[-96.40156249999995,68.47070312500003],[-97.47202148437498,68.543701171875],[-98.320556640625,68.84272460937498],[-98.70380859374993,68.80278320312502],[-98.90449218749995,68.93242187500005],[-99.25400390625002,68.86318359374997],[-99.49467773437493,68.95957031249998],[-99.455712890625,69.13120117187503],[-98.45595703124997,69.33466796875001],[-98.54599609375,69.57290039062497],[-98.04135742187498,69.456640625],[-98.20048828124996,69.79697265625006],[-97.79072265624998,69.86162109374999],[-97.439453125,69.64267578125006]]],[[[-86.91303710937501,70.11323242187501],[-86.55766601562499,69.99531249999995],[-87.3232421875,70.08012695312502],[-86.91303710937501,70.11323242187501]]],[[[-74.70888671874997,45.0038574218751],[-74.76245117187494,44.99907226562502],[-74.99614257812496,44.970117187499966],[-75.40126953124997,44.77226562499999],[-75.81933593749997,44.468017578125],[-76.18579101562503,44.24223632812502],[-76.819970703125,43.62880859375011],[-77.59653320312492,43.62861328125007],[-78.45825195312497,43.63149414062511],[-78.72041015624993,43.62495117187501],[-78.84555664062492,43.58334960937506],[-79.171875,43.466552734375085],[-79.0830566406249,43.33139648437509],[-79.05922851562494,43.27807617187506],[-79.066064453125,43.10610351562502],[-79.02617187499996,43.01733398437506],[-78.98076171874993,42.98061523437502],[-78.91508789062496,42.90913085937504],[-79.17373046875,42.74853515625],[-80.24755859374991,42.366015625000045],[-81.02822265624997,42.247167968750006],[-81.50732421874997,42.10346679687504],[-81.97416992187496,41.88872070312499],[-82.43906249999989,41.6748535156251],[-82.69003906249995,41.675195312499994],[-83.141943359375,41.97587890624996],[-83.10952148437497,42.25068359375001],[-82.54531249999997,42.62470703124998],[-82.19038085937495,43.47407226562501],[-82.137841796875,43.570898437500034],[-82.48505859374993,45.08374023437503],[-82.55107421874987,45.3473632812501],[-82.91933593749994,45.51796875000002],[-83.59267578125,45.81713867187506],[-83.46948242187503,45.99467773437499],[-83.61596679687503,46.116845703124994],[-83.97778320312494,46.08491210937507],[-84.12319335937497,46.50292968749997],[-84.44047851562496,46.49814453125006],[-84.66577148437503,46.54326171875002],[-84.87597656249994,46.89990234375003],[-85.07006835937497,46.97993164062498],[-85.65224609375,47.21997070312503],[-86.67216796874996,47.636425781249955],[-87.20800781249997,47.848486328125006],[-87.74389648437497,48.06054687500003],[-88.37817382812497,48.30307617187506],[-89.45566406249992,47.99624023437508],[-90.79731445312495,48.13105468750001],[-91.04345703124991,48.19370117187498],[-91.38720703124997,48.05854492187498],[-92.00517578125002,48.301855468750006],[-92.3484375,48.276611328125],[-92.41459960937493,48.276611328125],[-92.50058593749995,48.43535156250002],[-92.83671875,48.567773437499994],[-93.25795898437497,48.62885742187501],[-93.37788085937498,48.61655273437498],[-93.70771484374995,48.525439453125074],[-93.85161132812496,48.607275390625034],[-94.6208984374999,48.7426269531251],[-94.71279296874997,48.863427734374994],[-94.80346679687497,49.0029296875],[-94.86040039062493,49.258593750000045],[-94.85434570312495,49.304589843749994],[-95.15527343749997,49.3696777343751],[-95.16206054687493,48.991748046875045],[-95.39790039062493,48.99316406249997],[-96.25068359374993,48.99316406249997],[-96.67705078124993,48.99316406249997],[-97.52983398437493,48.99316406249997],[-98.80898437499995,48.99316406249997],[-104.77832031249997,48.993115234375125],[-110.7476562499999,48.993066406250136],[-116.71704101562493,48.993066406250136],[-118.84892578124993,48.993066406250136],[-119.27534179687494,48.993066406250136],[-119.70170898437495,48.99301757812495],[-120.98085937499995,48.99301757812495],[-122.78876953124994,48.99301757812495],[-122.82670898437495,49.028417968750034],[-122.9241699218749,49.07465820312504],[-122.96269531249993,49.07460937500005],[-123.06328125,48.97773437500001],[-123.22944335937493,49.260498046875085],[-122.87910156249995,49.39892578125003],[-123.27675781249997,49.34394531250001],[-123.1875,49.680322265624994],[-123.53056640624989,49.39731445312506],[-124.02861328125002,49.602880859375006],[-123.99262695312497,49.736181640625006],[-123.81718749999993,49.58657226562508],[-123.58247070312498,49.68125],[-123.87441406250005,49.736816406250114],[-123.82543945312493,50.14423828124998],[-123.94589843749995,50.18393554687509],[-123.9849121093749,49.87558593749998],[-124.28125,49.77211914062502],[-124.78237304687492,50.02011718749992],[-125.05668945312495,50.418652343750125],[-124.8598632812499,50.872412109375006],[-125.05878906249993,50.51386718749998],[-125.4763183593749,50.49716796874995],[-125.53935546874996,50.64902343749998],[-125.64130859374994,50.46621093750005],[-126.09433593749995,50.497607421875045],[-126.44746093750004,50.58774414062492],[-125.90410156250002,50.704931640625006],[-126.51435546875,50.679394531250125],[-126.37460937499995,50.83735351562498],[-126.5217773437499,50.86606445312498],[-126.51733398437497,51.0568359375001],[-126.63178710937494,50.915136718750006],[-127.057568359375,50.86752929687509],[-127.70810546875,51.15117187499996],[-127.41967773437496,51.608056640625136],[-126.69145507812502,51.70341796875002],[-127.33872070312489,51.70737304687495],[-127.66870117187497,51.47758789062502],[-127.85053710937498,51.67319335937509],[-127.79536132812493,52.19101562500006],[-127.43793945312504,52.356152343750125],[-127.24223632812496,52.39511718750009],[-126.71396484374989,52.060693359374994],[-127.19399414062498,52.45766601562502],[-126.95136718749994,52.7510253906251],[-127.01933593750002,52.8424804687501],[-127.06621093749989,52.65268554687498],[-127.79189453124994,52.28935546875002],[-128.10224609374993,51.78842773437495],[-128.3576171875,52.1588867187501],[-128.0375,52.318164062500045],[-127.94023437499996,52.545166015625085],[-128.27153320312493,52.3629882812501],[-128.05327148437487,52.91069335937496],[-128.3650390624999,52.82578125000006],[-128.52470703125002,53.1406738281251],[-129.08090820312492,53.36728515625006],[-129.1715820312499,53.53359375000002],[-128.8545898437499,53.70454101562504],[-128.90561523437492,53.559326171875114],[-128.5421386718749,53.420654296875114],[-128.13271484375002,53.417773437500045],[-127.92783203125,53.274707031250045],[-128.2072265624999,53.483203125000074],[-128.67553710937494,53.55458984375005],[-128.76367187500003,53.746875],[-128.5321289062499,53.85810546875007],[-128.959375,53.84145507812505],[-129.2578613281249,53.417968750000085],[-129.56372070312506,53.251464843750114],[-130.33525390625002,53.723925781250074],[-130.04331054687495,54.13354492187503],[-129.62602539062493,54.23027343750002],[-130.08422851562503,54.18139648437503],[-130.4302734375,54.42099609374998],[-129.56064453124995,55.46254882812508],[-129.79516601562503,55.559570312500114],[-130.04848632812494,55.05727539062511],[-130.01406249999997,55.950537109375006],[-130.09785156249995,56.10927734375002],[-130.41313476562487,56.12250976562507],[-130.47709960937496,56.230566406250034],[-130.649072265625,56.26367187500003],[-131.471875,56.55673828125006],[-131.82426757812496,56.58999023437508],[-131.86616210937495,56.792822265625006],[-132.1042968749999,56.85678710937509],[-132.062890625,56.95336914062503],[-132.33798828124992,57.07944335937498],[-132.27939453124998,57.14536132812506],[-132.23217773437494,57.198535156250074],[-132.30166015625005,57.2763183593751],[-132.44248046874986,57.40673828125003],[-132.55048828124995,57.499902343749994],[-133.00141601562495,57.948974609375],[-133.27529296875,58.22285156250004],[-133.54638671874997,58.50346679687499],[-134.21850585937503,58.849902343750045],[-134.32963867187505,58.93969726562506],[-134.39306640625,59.009179687499994],[-134.67724609374997,59.19926757812499],[-134.94375,59.28828125000001],[-135.05102539062491,59.57866210937502],[-135.36787109374998,59.743310546874994],[-135.70258789062504,59.72875976562506],[-136.3218261718749,59.604833984375034],[-136.27797851562494,59.48032226562506],[-136.46635742187493,59.459082031250006],[-136.57875976562494,59.15224609375002],[-136.81328125000002,59.15004882812511],[-137.12622070312491,59.04096679687507],[-137.2775390624999,58.988183593749994],[-137.43857421874995,58.903125],[-137.52089843749994,58.91538085937506],[-137.59331054687493,59.22626953124998],[-138.317626953125,59.611132812500074],[-138.86875,59.94575195312501],[-139.18515624999986,60.083593750000034],[-139.13696289062494,60.17270507812506],[-139.07924804687497,60.279443359375136],[-139.07924804687497,60.3437011718751],[-139.23476562499997,60.339746093749994],[-139.67631835937505,60.32832031249998],[-139.97329101562497,60.183154296875074],[-140.45283203125004,60.29970703125002],[-140.5254394531249,60.21835937499995],[-140.76274414062505,60.25913085937509],[-141.00214843750004,60.300244140625125],[-141.00214843750004,60.884667968749994],[-141.00214843750004,61.761279296875045],[-141.00214843750004,63.22226562499998],[-141.00214843750004,64.09887695312506],[-141.00214843750004,65.55991210937498],[-141.00214843750004,66.43652343750006],[-141.00214843750004,67.89755859374998],[-141.00214843750004,68.77416992187506],[-141.00214843750004,69.65078125000011],[-139.18154296874997,69.51552734375008],[-137.25996093749998,68.96411132812503],[-136.12236328124993,68.88222656250002],[-135.258837890625,68.68432617187503],[-135.93901367187487,68.9741699218751],[-135.575537109375,69.02695312500003],[-135.91020507812487,69.11147460937502],[-135.6914550781249,69.31118164062502],[-135.29282226562486,69.30786132812506],[-135.1408203124999,69.46782226562496],[-134.45683593749993,69.47763671875],[-134.40893554687494,69.68178710937502],[-133.87978515624997,69.50771484375011],[-134.17431640624991,69.25283203125005],[-133.16313476562496,69.43388671874999],[-132.91533203125002,69.62963867187506],[-132.40390625,69.65874023437496],[-132.48847656249993,69.73808593749996],[-132.16342773437498,69.70498046875014],[-131.13637695312497,69.90688476562505],[-130.66547851562495,70.12705078124998],[-129.944970703125,70.09091796875006],[-129.675634765625,70.19296875000009],[-129.64829101562495,69.9977539062501],[-130.83208007812487,69.65146484375006],[-131.9377929687499,69.5347167968751],[-132.8174804687499,69.20576171875004],[-133.41831054687492,68.84428710937493],[-133.138037109375,68.74658203125011],[-133.33666992187497,68.83525390625005],[-132.57763671874997,68.84780273437514],[-132.71894531249998,69.07919921875],[-131.78837890625002,69.43198242187495],[-131.32470703124997,69.36118164062509],[-131.06342773437504,69.45068359375003],[-130.97065429687495,69.20908203125],[-130.1176269531249,69.720068359375],[-128.89892578124994,69.96616210937506],[-129.15791015624995,69.80009765624999],[-129.05434570312502,69.70107421875005],[-128.85302734375003,69.7510253906251],[-127.68378906249994,70.26035156249995],[-128.17011718749998,70.41845703125],[-127.99101562499992,70.57382812500003],[-127.22597656249992,70.29614257812497],[-126.25043945312495,69.54526367187492],[-125.52495117187495,69.35156250000009],[-125.171875,69.42797851562503],[-125.35693359374991,69.62597656250003],[-124.767919921875,69.99003906249996],[-124.99038085937494,70.02661132812511],[-124.55502929687488,70.15122070312509],[-124.40693359374991,69.76743164062506],[-124.12460937499995,69.6899902343751],[-124.33808593749991,69.36484374999995],[-123.5284179687499,69.38935546874995],[-123.02578125,69.81000976562504],[-122.07006835937499,69.81616210937506],[-120.96245117187502,69.66040039062511],[-120.13999023437488,69.38056640625013],[-117.22695312499998,68.913427734375],[-116.05947265625,68.83701171875006],[-116.2434082031249,68.9740722656251],[-115.44228515624994,68.94091796875009],[-114.62016601562496,68.74609375],[-113.96440429687495,68.39907226562502],[-114.09594726562491,68.26679687500007],[-114.76528320312494,68.27021484375004],[-115.12705078124992,68.13203124999995],[-115.43447265624994,67.90234375000006],[-115.13320312499994,67.819189453125],[-112.50302734374993,67.6819335937501],[-110.9900390624999,67.79082031250007],[-110.07392578124995,67.99291992187506],[-109.63037109374991,67.73271484374996],[-109.03803710937504,67.69116210937503],[-108.85200195312497,67.42197265625009],[-108.61333007812493,67.59804687500008],[-107.98872070312495,67.2563964843751],[-107.99130859374995,67.09516601562513],[-108.49604492187493,67.09228515625006],[-107.25947265624998,66.39853515624995],[-107.71035156250001,66.74003906250007],[-107.7250976562499,66.98413085937506],[-107.15649414062497,66.88173828124997],[-107.9583984375,67.81860351562506],[-107.79829101562498,68.03691406249996],[-106.42426757812491,68.20058593750008],[-105.7501953125,68.59228515625011],[-106.45805664062496,68.51645507812495],[-106.60849609374988,68.35737304687504],[-107.61933593749994,68.3310546875],[-107.73417968749989,68.17373046875011],[-108.3228027343749,68.15410156250002],[-108.71811523437488,68.29746093750009],[-108.31347656249996,68.61079101562498],[-106.16445312499992,68.91987304687507],[-105.68559570312489,68.82817382812505],[-105.3774414062499,68.413818359375],[-104.65317382812488,68.23007812500003],[-104.48681640624991,68.06318359374998],[-103.47412109374993,68.11503906250005],[-102.32036132812489,67.73564453125005],[-101.55498046874992,67.69316406250007],[-100.21293945312489,67.83857421875004],[-98.92045898437502,67.72578124999998],[-98.41210937499991,67.80717773437505],[-98.63154296875004,68.0725585937501],[-97.45493164062486,67.61699218750002],[-97.20654296874989,67.85507812500003],[-97.73911132812495,67.97817382812505],[-98.19252929687494,67.92299804687502],[-98.65048828124989,68.36352539062506],[-98.21855468750002,68.31743164062507],[-97.7942382812499,68.38759765625],[-97.9250976562499,68.523681640625],[-97.41035156249993,68.49653320312498],[-96.97670898437497,68.25541992187505],[-96.43066406249991,68.3105957031251],[-96.72207031250005,68.03876953124998],[-95.9703125,68.24912109375],[-96.36914062499991,67.50976562500003],[-96.14145507812489,67.27182617187503],[-95.71992187499998,67.31679687500014],[-95.77768554687495,67.18461914062505],[-95.41591796875005,67.15556640624999],[-95.41889648437504,67.01323242187493],[-96.42255859374995,67.05175781249997],[-95.7875488281249,66.616796875],[-96.03686523437489,66.9375],[-95.39965820312503,66.94946289062509],[-95.25874023437493,67.26254882812492],[-95.65048828124986,67.73745117187505],[-95.46069335937503,68.02138671875],[-94.74443359374993,68.07089843749995],[-93.44892578124998,68.61889648437503],[-93.85244140624994,69.00034179687495],[-94.06489257812495,68.78476562500006],[-94.600439453125,68.80322265625011],[-94.08364257812497,69.12309570312507],[-94.254736328125,69.31376953125002],[-93.61948242187492,69.41699218750009],[-93.74853515624991,69.2261230468751],[-93.5322753906249,69.48090820312495],[-94.2708007812499,69.45512695312505],[-94.63383789062496,69.64965820312506],[-94.82250976562494,69.577783203125],[-95.96494140624989,69.80278320312499],[-96.5513671875,70.21030273437506],[-96.29770507812492,70.51137695312511],[-95.87861328124998,70.54897460937514],[-95.88632812499986,70.69428710937507],[-96.25800781249993,70.64228515625013],[-96.54892578124995,70.80874023437511],[-96.44658203124996,71.23989257812502],[-96.06201171874997,71.41386718749993],[-95.5642578124999,71.33676757812503],[-95.40625,71.49165039062498],[-95.87231445312494,71.57314453125005],[-94.73486328124994,71.98295898437507],[-94.30834960937491,71.76489257812506],[-93.74628906249998,71.742822265625],[-92.94868164062493,71.26210937500011],[-92.98144531249994,70.8522460937501],[-91.56406249999995,70.1782714843751],[-92.32050781250004,70.2353515625],[-92.51186523437494,70.10385742187503],[-91.976708984375,70.03867187500009],[-92.88779296874989,69.66821289062511],[-92.31166992187494,69.67290039062499],[-91.91196289062495,69.53125],[-91.20180664062494,69.64477539062494],[-91.43994140624997,69.52568359375002],[-90.4155761718749,69.45698242187507],[-90.89228515625004,69.26728515624995],[-91.23720703125005,69.28554687500014],[-90.47900390624994,68.88115234374999],[-90.57363281250005,68.47470703124998],[-90.20478515625004,68.25747070312511],[-89.27954101562491,69.25546875000003],[-88.22353515625,68.91503906249997],[-87.81357421874986,68.34570312499997],[-87.89267578125,68.24814453125],[-88.34697265624993,68.28828125000001],[-88.313818359375,67.95034179687508],[-87.359375,67.17724609374997],[-86.56079101562491,67.48212890625007],[-85.64316406249992,68.69970703124997],[-84.86757812499994,68.77333984375005],[-85.10664062499995,68.84404296875007],[-84.86220703125,69.07397460937503],[-85.38676757812493,69.23188476562504],[-85.50737304687487,69.84526367187493],[-82.61835937499993,69.69106445312514],[-82.39023437499989,69.60087890625007],[-82.75483398437493,69.49438476562506],[-82.30986328124996,69.41000976562509],[-82.22753906249997,69.24887695312495],[-81.37783203125005,69.18564453125003],[-81.95791015624991,68.88364257812498],[-81.38090820312496,68.85004882812504],[-81.28154296874987,68.65722656250003],[-81.91484374999993,68.4587890625001],[-82.55268554687504,68.44648437500007],[-82.22241210937489,68.145263671875],[-82.0125,68.19389648437496],[-81.97646484374997,67.86201171875001],[-81.2943359375,67.497412109375],[-81.46757812499996,67.0698730468751],[-83.40644531249998,66.37124023437508],[-84.53847656249994,66.97280273437505],[-84.84575195312502,67.02871093750008],[-85.11372070312498,66.90693359375013],[-84.73774414062504,66.93359375000006],[-84.223046875,66.68247070312506],[-83.86904296875,66.2135742187501],[-84.29306640624995,66.29179687500005],[-84.628076171875,66.20771484374998],[-85.603857421875,66.56826171875005],[-86.708154296875,66.52304687500009],[-86.68510742187502,66.36040039062499],[-85.95874023437491,66.11904296875002],[-87.45288085937503,65.33896484375009],[-87.96997070312503,65.34892578124999],[-89.7494140625,65.93603515625006],[-89.88969726562487,65.86855468749997],[-91.42724609374994,65.94790039062497],[-91.04111328124989,65.82983398437509],[-90.98344726562496,65.91923828124999],[-89.92407226562497,65.78027343750011],[-88.97402343749994,65.34829101562502],[-87.02753906249995,65.19809570312498],[-88.10561523437497,64.18330078125001],[-88.81772460937489,63.99223632812499],[-89.20063476562493,64.11376953125006],[-89.13154296874998,63.96850585937494],[-89.61582031249995,64.030615234375],[-89.8113281249999,64.18056640625],[-90.04165039062494,64.14086914062509],[-89.85571289062497,63.9569824218751],[-90.16816406250004,63.978759765625085],[-90.15473632812498,63.68964843749998],[-90.81191406249991,63.580908203125034],[-91.98222656249996,63.82241210937502],[-92.33842773437496,63.787646484375045],[-93.69633789062493,64.14716796875013],[-93.55981445312491,63.865283203125074],[-93.27021484374998,63.840869140625074],[-93.37851562499992,63.94848632812497],[-92.15688476562491,63.691699218750045],[-92.46508789062491,63.55507812500011],[-91.84184570312496,63.69755859374999],[-90.97006835937489,63.442773437500136],[-90.69858398437492,63.06386718750005],[-91.44897460937503,62.804052734375034],[-92.3612792968749,62.81938476562496],[-91.93583984374993,62.59238281250009],[-92.55141601562491,62.546728515625034],[-92.76596679687492,62.34995117187509],[-92.52797851562494,62.16840820312504],[-93.20537109374993,62.364941406250125],[-92.90551757812503,62.21513671874996],[-93.3330566406249,61.93291015625002],[-93.58178710937494,61.94204101562511],[-93.31201171874997,61.76728515625004],[-93.91274414062497,61.48144531250006],[-94.509375,60.60454101562493],[-94.76171874999991,60.498242187500125],[-94.78828124999998,59.26787109374993],[-94.95732421874996,59.068847656250085],[-94.28706054687493,58.716015625000125],[-94.33222656249998,58.297363281250114],[-94.12319335937494,58.73671875000008],[-93.1787597656249,58.72563476562496],[-92.43281249999993,57.3203125],[-92.7981445312499,56.921972656250034],[-90.89746093750003,57.25693359375006],[-88.94848632812489,56.85131835937503],[-88.07509765624997,56.46728515624994],[-87.48242187499991,56.021289062500045],[-85.55932617187491,55.54018554687508],[-85.21801757812491,55.348974609375034],[-85.3652832031249,55.07929687499998],[-85.06093749999997,55.285644531250085],[-83.91059570312493,55.314648437499955],[-82.39326171874998,55.067822265625125],[-82.219384765625,54.8134765625],[-82.42416992187486,54.2445800781251],[-82.14145507812492,53.81762695312497],[-82.29155273437496,53.03071289062507],[-81.5994140624999,52.432617187500085],[-81.82788085937489,52.22421875000009],[-81.46621093749994,52.204492187500136],[-80.588037109375,51.667236328125114],[-80.4433105468749,51.38857421875002],[-80.85122070312497,51.125],[-80.47832031249993,51.30732421874998],[-80.10356445312487,51.282861328125136],[-79.34790039062494,50.76264648437504],[-79.737451171875,51.186279296875],[-79.33867187500002,51.62817382812497],[-79.04052734375003,51.46376953125005],[-78.90317382812495,51.200292968750034],[-78.73134765624994,51.497460937499994],[-78.98164062499993,51.774560546875136],[-78.44809570312495,52.26137695312502],[-78.74414062499994,52.65537109374998],[-79.10034179687497,53.65664062500005],[-78.99604492187493,54.00249023437499],[-79.241796875,54.098876953125085],[-79.14672851562491,54.16923828125002],[-79.71235351562495,54.6718261718751],[-77.77529296874994,55.291259765625],[-76.60405273437496,56.19956054687495],[-76.52558593749998,56.8917968750001],[-76.80981445312497,57.65795898437506],[-77.15678710937496,58.018896484375034],[-78.51508789062493,58.68237304687503],[-77.76069335937498,59.38002929687505],[-77.72617187499995,59.67587890624992],[-77.34907226562495,59.57895507812509],[-77.48530273437493,59.684570312500114],[-77.28920898437494,60.0220214843751],[-77.58588867187498,60.088183593750074],[-77.45288085937497,60.1458007812501],[-77.6814453124999,60.427099609375034],[-77.503564453125,60.54272460937497],[-77.7908203124999,60.63984375000004],[-77.58955078124993,60.808593750000114],[-78.18134765624995,60.81914062499996],[-77.51435546874998,61.55629882812505],[-78.02138671874997,61.8320800781251],[-78.13339843749986,62.28227539062496],[-77.372412109375,62.572509765625114],[-75.81689453124991,62.31586914062507],[-75.7898437499999,62.17958984375002],[-75.3412109375,62.312109375],[-74.63256835937497,62.115673828125125],[-74.6458007812499,62.21113281250004],[-73.70507812499991,62.47314453124994],[-72.68696289062498,62.12456054687499],[-72.771630859375,61.840429687500006],[-72.50556640624998,61.922656250000074],[-72.22612304687487,61.83159179687499],[-72.04003906249991,61.68027343750006],[-72.21586914062502,61.58725585937495],[-71.86611328125,61.68852539062499],[-71.63828124999995,61.6171875],[-71.85439453124991,61.43979492187492],[-71.42270507812489,61.158935546875085],[-70.27929687499991,61.06865234374999],[-69.99243164062491,60.8564941406251],[-69.50332031249994,61.04042968750011],[-69.40473632812493,60.84677734375009],[-69.75947265624998,60.440234375000045],[-69.67373046874994,60.07587890625007],[-70.65483398437496,60.02622070312506],[-69.73393554687493,59.918017578125045],[-69.68188476562489,59.34174804687507],[-69.3440429687499,59.303076171875006],[-69.53164062499994,58.86923828125009],[-69.64838867187493,58.82080078125],[-69.78417968749994,58.95571289062511],[-70.15434570312496,58.76059570312498],[-69.78989257812486,58.689306640625034],[-69.27109374999986,58.88393554687505],[-68.69819335937495,58.904541015625],[-68.38115234374993,58.74350585937506],[-68.22939453124994,58.48457031250007],[-68.35654296874989,58.163232421875136],[-69.04082031249996,57.902490234375136],[-68.41357421874997,58.0517578125],[-68.02104492187493,58.48530273437504],[-67.88828124999989,58.29575195312495],[-68.06386718750005,58.13896484374999],[-67.75595703124992,58.4045898437501],[-67.6782714843749,57.99111328125008],[-67.5696289062499,58.21347656250006],[-66.72216796874991,58.49101562499996],[-66.36240234374989,58.791162109374994],[-66.0023925781249,58.43120117187502],[-66.04306640624995,58.82065429687495],[-65.72099609374996,59.02377929687495],[-65.38354492187494,59.06020507812508],[-65.7,59.21333007812501],[-65.4117187499999,59.31499023437496],[-65.47509765624994,59.47031249999998],[-65.03823242187494,59.38789062500007],[-65.40742187499993,59.53935546875002],[-65.4333984374999,59.776513671874994],[-65.02817382812495,59.77070312500007],[-65.17172851562489,59.90800781249996],[-64.81733398437498,60.3310546875],[-64.49941406250005,60.26826171875001],[-64.41958007812494,60.17138671874997],[-64.76845703124997,60.01210937500005],[-64.28349609374993,60.06406249999998],[-64.22631835937491,59.741210937500085],[-64.05605468750005,59.82255859374996],[-63.7501953124999,59.51259765625005],[-63.945458984374994,59.380175781250074],[-63.775878906249915,59.277148437500045],[-63.539892578124864,59.332861328125034],[-63.41513671874995,59.194384765625074],[-63.97114257812498,59.053808593750034],[-63.24843749999991,59.068310546874955],[-63.28212890624994,58.86738281250007],[-63.05029296874997,58.87817382812494],[-62.87387695312489,58.67246093749998],[-63.537060546874926,58.329931640625006],[-63.209960937499886,58.46694335937502],[-62.593847656249864,58.47402343750005],[-62.81206054687502,58.20039062500007],[-63.26152343749993,58.014697265625074],[-62.486230468749966,58.15405273437506],[-62.30566406249997,57.97226562499995],[-61.95864257812505,57.91176757812508],[-61.9679687499999,57.61191406250009],[-62.495556640624926,57.489208984375125],[-61.92114257812497,57.42080078125005],[-61.977441406249966,57.24794921875002],[-61.33374023437494,57.01059570312498],[-61.37163085937502,56.68081054687511],[-62.497265624999926,56.80170898437504],[-61.73774414062498,56.52602539062502],[-61.940429687499886,56.423583984375114],[-61.42529296874994,56.360644531250074],[-61.713085937499955,56.230957031250114],[-61.364697265624926,56.2160156250001],[-61.30112304687495,56.04716796874999],[-61.4495117187499,55.99570312499998],[-61.08935546874997,55.86635742187511],[-60.74326171874989,55.94145507812493],[-60.56210937499995,55.727001953125125],[-60.341015624999926,55.78466796874997],[-60.40830078124995,55.649560546874994],[-60.19238281249994,55.4809082031251],[-60.617138671874955,55.060205078124994],[-59.75878906249997,55.3095703125],[-59.68906249999989,55.19633789062502],[-59.43789062500005,55.175927734375136],[-59.837792968749994,54.813964843750114],[-59.25957031249996,55.19995117187506],[-58.99711914062496,55.149462890625074],[-58.780175781249994,54.838378906250114],[-58.39814453124998,54.77412109374998],[-57.96245117187493,54.875732421875085],[-57.40449218750004,54.59086914062496],[-57.69926757812496,54.38657226562506],[-58.435205078124966,54.228125],[-58.63320312499999,54.04956054687497],[-59.8230468749999,53.83442382812504],[-60.14492187499994,53.59614257812498],[-60.395410156249994,53.653320312500085],[-60.1002929687499,53.48696289062511],[-60.329492187499966,53.26611328125006],[-58.652050781249926,53.97788085937495],[-57.935986328124955,54.09116210937492],[-58.31748046874989,54.11445312500007],[-58.192089843749926,54.228173828125136],[-57.4160644531249,54.162744140625136],[-57.134960937499926,53.79184570312506],[-57.524072265624966,53.61142578125006],[-57.331738281249955,53.469091796875034],[-56.84086914062496,53.73945312500004],[-56.46499023437505,53.76503906250011],[-55.96611328125002,53.4711425781251],[-55.79794921874995,53.211962890625045],[-55.80283203124989,52.64316406249998],[-56.324902343749926,52.54453124999998],[-55.74648437499994,52.4745605468751],[-55.7771484374999,52.3642578125],[-56.01171874999997,52.394482421875125],[-55.695214843749994,52.13779296875006],[-56.97597656250005,51.45766601562505],[-58.510351562500006,51.295068359375136],[-59.88632812499992,50.316406250000085],[-61.72485351562503,50.10405273437499],[-61.91953124999989,50.2328613281251],[-62.71542968749995,50.30166015625008],[-66.49550781249991,50.2118652343751],[-66.94116210937503,49.993701171875045],[-67.37202148437495,49.348437500000045],[-68.28193359374998,49.197167968750136],[-69.67387695312496,48.19916992187504],[-71.01826171874993,48.455615234375045],[-69.86552734374993,48.17226562500005],[-69.775,48.09809570312504],[-69.9944335937499,47.73989257812508],[-70.70585937499996,47.13979492187505],[-71.26777343749995,46.79594726562499],[-71.87958984374998,46.68681640624996],[-72.98100585937493,46.209716796875085],[-73.4766113281249,45.738232421874955],[-74.03784179687494,45.501855468750136],[-74.31508789062494,45.531054687500045],[-73.97382812499995,45.345117187499994],[-74.70888671874997,45.0038574218751]]],[[[-96.78232421874998,72.93662109375],[-97.0927734375,72.99692382812503],[-96.86240234374995,73.18881835937506],[-96.78232421874998,72.93662109375]]],[[[-114.52153320312502,72.592919921875],[-113.57807617187501,72.65209960937506],[-113.2923828125,72.94980468750003],[-112.75361328125001,72.98603515624995],[-111.26972656249994,72.71372070312498],[-111.895166015625,72.35610351562497],[-111.67509765625002,72.30014648437503],[-110.20512695312495,72.66127929687497],[-110.66083984374998,73.00820312500002],[-110.00844726562494,72.983642578125],[-108.75498046875002,72.55107421874999],[-108.18823242187501,71.72377929687502],[-107.812841796875,71.62617187500004],[-107.30600585937496,71.89467773437502],[-108.23740234374999,73.14990234375003],[-108.029052734375,73.34873046875003],[-106.48212890624998,73.19619140624997],[-105.41513671874995,72.788330078125],[-104.38593749999997,71.57695312500005],[-104.51479492187502,71.06425781250005],[-103.58457031249995,70.63085937500003],[-103.07719726562497,70.50883789062505],[-103.04956054687503,70.65507812499999],[-101.67631835937495,70.27827148437495],[-101.56240234375001,70.135009765625],[-101.04267578125,70.11079101562504],[-100.98237304687497,69.67988281250001],[-101.483837890625,69.85019531250006],[-101.64765624999997,69.69853515625007],[-102.18212890624997,69.845947265625],[-102.59589843749997,69.71791992187502],[-102.62109374999996,69.55151367187506],[-103.464892578125,69.64448242187498],[-103.04892578124999,69.47177734375006],[-103.12021484374995,69.20458984374997],[-102.44677734374997,69.476318359375],[-102.04594726562493,69.46484374999997],[-101.85712890625001,69.02397460937505],[-102.89506835937499,68.8236328125],[-104.57143554687501,68.87211914062502],[-105.105859375,68.92041015625],[-105.019580078125,69.08125],[-106.27016601562497,69.19458007812497],[-106.65908203124997,69.439599609375],[-107.43989257812497,69.00214843749995],[-108.36499023437497,68.93476562499998],[-109.47211914062501,68.67670898437498],[-113.12773437500002,68.49414062500003],[-113.61684570312501,68.8384765625],[-113.69414062499995,69.19501953124998],[-115.61811523437495,69.28295898437506],[-116.51347656249993,69.42460937500005],[-117.19541015624995,70.05405273437503],[-114.59233398437497,70.31245117187498],[-112.63789062499997,70.225244140625],[-111.63256835937497,70.30883789062497],[-113.75727539062503,70.69072265625005],[-115.99091796874997,70.586279296875],[-117.58706054687498,70.62954101562502],[-118.2640625,70.888330078125],[-118.26909179687493,71.03471679687505],[-115.30341796874997,71.49370117187505],[-117.93564453125003,71.39208984375003],[-118.22646484374995,71.46708984375005],[-117.742333984375,71.65932617187502],[-118.58300781250003,71.64902343749998],[-118.98769531249997,71.7642578125],[-118.94462890624997,71.98554687499995],[-118.21347656249998,72.26289062499998],[-118.481298828125,72.42768554687498],[-118.13310546874995,72.63281250000003],[-114.63823242187499,73.37265625000003],[-114.20639648437495,73.29780273437495],[-114.05170898437497,73.07099609375004],[-114.52153320312502,72.592919921875]]],[[[-105.28891601562499,72.919921875],[-106.92153320312497,73.479833984375],[-106.61396484375001,73.69560546875002],[-105.31796874999995,73.76713867187502],[-104.5875,73.57807617187495],[-104.62172851562495,73.3111328125],[-105.28891601562499,72.919921875]]],[[[-79.53730468749998,73.65449218749998],[-78.2865234375,73.66582031250007],[-77.20654296874997,73.49956054687505],[-76.18339843749999,72.84306640625005],[-77.83593750000003,72.89682617187498],[-79.3193359375,72.75771484375],[-79.820703125,72.82631835937502],[-80.18330078124995,73.22465820312499],[-80.77641601562502,73.33417968750001],[-80.84887695312503,73.72124023437499],[-79.53730468749998,73.65449218749998]]],[[[-86.58935546874997,71.01079101562507],[-85.64384765624999,71.15244140624998],[-85.09487304687497,71.15195312500006],[-84.82373046874997,71.02861328125005],[-84.69941406249995,71.63144531250003],[-85.33906249999998,71.69726562500003],[-85.91162109375,71.98652343749998],[-85.321875,72.23315429687506],[-84.28374023437499,72.04448242187499],[-84.84199218749995,72.30815429687505],[-84.62304687500003,72.37656250000003],[-85.34111328124993,72.42153320312497],[-85.64990234374997,72.72216796875003],[-85.26210937500002,72.95400390625],[-84.25664062499999,72.79672851562503],[-85.454736328125,73.10546875000003],[-84.41606445312496,73.45649414062495],[-83.781884765625,73.41689453125],[-83.72983398437495,73.57587890624995],[-81.946142578125,73.72983398437506],[-81.40615234374997,73.634521484375],[-80.27724609375,72.77016601562502],[-81.229345703125,72.31171874999998],[-80.61147460937497,72.450830078125],[-80.925146484375,71.90766601562501],[-80.18193359374996,72.20878906250007],[-79.884375,72.17719726562501],[-80.10893554687499,72.33217773437497],[-79.83129882812503,72.44628906250003],[-79.000244140625,72.27202148437507],[-79.00781250000003,72.04291992187501],[-78.58510742187497,71.880615234375],[-78.86274414062495,72.100830078125],[-78.69926757812496,72.35141601562498],[-77.51650390624997,72.17778320312505],[-78.48427734374994,72.47060546875002],[-77.75322265624996,72.72475585937502],[-75.70429687499998,72.57153320312497],[-75.05268554687493,72.22636718749999],[-75.92280273437501,71.71723632812501],[-74.90317382812503,72.10048828125002],[-74.20932617187498,71.978662109375],[-74.31572265624999,71.84267578125],[-75.20478515625001,71.70913085937497],[-74.70078125,71.67558593750005],[-74.99619140624998,71.21811523437503],[-74.48808593750002,71.64838867187501],[-73.8140625,71.77143554687495],[-74.197265625,71.404150390625],[-73.71284179687498,71.58759765624998],[-73.18061523437501,71.282861328125],[-73.27822265625,71.53798828125],[-72.901953125,71.67778320312507],[-71.64067382812499,71.51625976562502],[-71.22939453124997,71.33876953125],[-71.49501953124997,71.10512695312502],[-71.93793945312498,71.09428710937502],[-72.63271484374994,70.83076171874998],[-71.74252929687495,71.046875],[-71.370849609375,70.97514648437499],[-70.82607421874994,71.10874023437503],[-70.67265625,71.05219726562498],[-70.76171874999997,70.79223632812503],[-71.89018554687502,70.43154296875002],[-71.27587890625,70.50029296874999],[-71.42944335937503,70.12778320312503],[-70.97978515624999,70.5810546875],[-69.94980468750003,70.84501953125005],[-68.49575195312502,70.61025390625],[-68.363525390625,70.48125],[-70.05771484375,70.042626953125],[-68.77822265625,70.20356445312501],[-69.00830078124997,69.97895507812501],[-68.74404296874997,69.94140625],[-68.05908203124997,70.317236328125],[-67.36367187499994,70.03442382812503],[-67.22163085937495,69.73071289062506],[-68.02041015625,69.77006835937499],[-69.25078124999999,69.51191406249998],[-68.51303710937498,69.57729492187497],[-67.236962890625,69.460107421875],[-66.71674804687495,69.31186523437498],[-66.70742187500002,69.16821289062503],[-68.40629882812499,69.23222656250002],[-69.040625,69.09799804687503],[-68.41552734375,69.17207031250001],[-67.8326171875,69.06596679687499],[-67.88320312500002,68.78398437499999],[-69.31909179687497,68.85698242187505],[-68.21040039062495,68.702978515625],[-67.9384765625,68.524169921875],[-66.74272460937502,68.45776367187497],[-67.032958984375,68.32607421874997],[-66.923095703125,68.06572265625005],[-66.72900390624997,68.12900390625006],[-66.66269531249995,68.03442382812497],[-66.63095703124998,68.21064453124998],[-66.21240234374997,68.280419921875],[-66.44394531249998,67.83383789062506],[-65.94238281250003,68.07094726562505],[-65.86435546875003,67.92285156249997],[-65.50908203124996,67.96826171875],[-65.40126953125002,67.67485351562499],[-65.41533203124996,67.87924804687498],[-64.92231445312495,68.03164062500002],[-65.02109375,67.78754882812495],[-64.63779296875,67.84023437500002],[-63.850195312500034,67.56606445312502],[-64.00795898437502,67.34731445312497],[-64.69995117187494,67.35053710937501],[-63.83623046874993,67.26411132812498],[-63.59160156250002,67.3775390625],[-63.040136718750034,67.235009765625],[-63.70156249999994,66.82236328125003],[-62.962304687499966,66.94926757812505],[-62.37973632812495,66.90537109375],[-62.12358398437499,67.046728515625],[-61.35341796874994,66.689208984375],[-61.52783203124994,66.55810546875003],[-62.12333984374993,66.64306640625003],[-61.57080078125,66.37290039062506],[-61.95634765624993,66.30932617187497],[-62.553125,66.40683593750003],[-62.53359374999994,66.22700195312498],[-61.99160156250002,66.03530273437502],[-62.624121093750006,66.01625976562505],[-62.381982421874966,65.83330078124999],[-62.65888671874998,65.63994140625002],[-63.16894531249997,65.65732421875],[-63.45874023437494,65.85302734375],[-63.42089843749997,65.70859374999998],[-63.651074218749955,65.66098632812506],[-63.33745117187493,65.61674804687502],[-63.36337890624998,65.22973632812503],[-63.606591796874966,64.92807617187503],[-64.345703125,65.17241210937499],[-64.26967773437497,65.40078124999997],[-64.55507812500002,65.1166015625],[-65.401611328125,65.764013671875],[-64.44536132812496,66.31713867187497],[-65.0044921875,66.07773437500003],[-65.82573242187499,65.996923828125],[-65.65634765625003,66.204736328125],[-66.06372070312497,66.13271484374997],[-66.986328125,66.62749023437505],[-67.07685546874995,66.52548828125006],[-67.30732421874993,66.5697265625],[-67.22539062499993,66.31025390624998],[-67.88339843749995,66.46743164062502],[-67.18320312499995,66.03442382812503],[-67.350439453125,65.92973632812502],[-67.82802734374997,65.96518554687503],[-68.45991210937498,66.249267578125],[-68.74892578125,66.200048828125],[-68.21718750000002,66.078857421875],[-68.18671874999993,65.87099609375002],[-67.86645507812497,65.773681640625],[-67.936767578125,65.56489257812501],[-67.56962890624999,65.64355468749997],[-67.11796874999999,65.44038085937495],[-67.3365234375,65.34658203125005],[-66.69741210937502,64.81518554687506],[-66.63549804687503,65.00034179687503],[-66.21464843749999,64.72241210937497],[-65.93852539062496,64.88574218750003],[-65.2748046875,64.63154296875004],[-65.52934570312499,64.50478515624997],[-65.074609375,64.43666992187502],[-65.21298828125003,64.30327148437502],[-65.580322265625,64.29384765624997],[-65.16987304687495,64.02817382812503],[-64.67846679687503,64.027978515625],[-64.79814453124999,63.91596679687498],[-64.4109375,63.70634765625002],[-64.66464843749995,63.24536132812497],[-65.19184570312498,63.764257812500006],[-65.06894531249998,63.26347656250002],[-64.67236328125003,62.921972656250006],[-65.16279296875001,62.93261718750003],[-65.10849609374998,62.62646484375],[-66.22402343749994,63.10717773437497],[-66.228662109375,62.99096679687503],[-66.41445312500002,63.027197265625034],[-66.65498046874998,63.264746093750006],[-66.69746093749993,63.069531249999955],[-67.89326171874993,63.733740234375006],[-67.72255859374997,63.422753906249966],[-68.49375,63.725488281249994],[-68.91108398437498,63.703222656250006],[-68.141259765625,63.17231445312501],[-67.67597656249998,63.093554687500045],[-67.73696289062497,63.00957031249999],[-65.98017578125001,62.20888671875002],[-66.12387695312498,61.89306640625],[-68.53588867187503,62.25561523437506],[-69.12558593749998,62.423974609374966],[-69.604736328125,62.76772460937502],[-70.23613281250002,62.76337890625001],[-70.801416015625,62.91049804687506],[-71.10576171874999,63.00224609375002],[-70.94604492187497,63.12070312499998],[-71.34726562499998,63.066113281249955],[-71.99223632812493,63.41616210937505],[-71.380859375,63.580322265625],[-72.29013671874995,63.72797851562498],[-72.17426757812498,63.893408203125006],[-72.49843749999994,63.82348632812497],[-73.45454101562495,64.39926757812503],[-73.27128906250002,64.58251953125],[-73.91035156249998,64.578125],[-74.064794921875,64.42465820312498],[-74.13046874999998,64.6078125],[-74.46123046874996,64.64467773437505],[-74.68139648437497,64.8306640625],[-74.91943359374997,64.76552734374997],[-74.69472656250002,64.49658203124997],[-75.71503906249995,64.52436523437495],[-75.76669921875,64.39194335937498],[-76.85615234374998,64.23764648437498],[-77.76049804687503,64.36015624999999],[-78.04521484374993,64.499267578125],[-78.09560546875,64.93925781250002],[-77.36088867187496,65.19653320312503],[-77.32670898437493,65.453125],[-75.82832031249993,65.22705078125003],[-75.45209960937495,64.84160156250002],[-75.35712890624995,65.00874023437495],[-75.79868164062503,65.297509765625],[-75.16630859374999,65.28393554687497],[-74.13847656250002,65.50346679687502],[-73.55078125000003,65.48525390625005],[-74.41640624999997,66.16708984375003],[-73.03325195312502,66.72817382812505],[-72.78881835937494,67.030615234375],[-72.22001953124999,67.25429687500002],[-73.28447265624993,68.35698242187505],[-73.82050781249998,68.36293945312502],[-73.82211914062495,68.68598632812501],[-74.11796875000002,68.70092773437506],[-73.9892578125,68.54863281250002],[-74.2701171875,68.54121093750001],[-74.89296875,68.80815429687505],[-74.71669921874997,69.04550781249998],[-76.58505859375,68.69873046875003],[-76.55722656250003,69.00947265625001],[-75.9537109375,69.03081054687502],[-75.64775390625002,69.212548828125],[-76.46494140624995,69.46943359375001],[-76.23408203125001,69.66210937500003],[-76.742333984375,69.57290039062497],[-77.08994140625,69.63510742187503],[-76.85859374999995,69.775390625],[-77.591650390625,69.84560546875002],[-77.77402343750003,70.23852539062503],[-78.28281250000003,70.229150390625],[-79.06640624999997,70.60356445312507],[-79.40522460937498,70.40073242187503],[-78.86284179687499,70.24189453125001],[-78.88964843750003,69.97749023437495],[-79.51542968749996,69.88759765625005],[-81.65195312500003,70.09462890625002],[-80.92172851562503,69.73090820312501],[-81.56469726562503,69.94272460937498],[-82.29384765624997,69.83691406250003],[-83.14995117187493,70.00908203125002],[-83.85908203124998,69.96274414062498],[-85.43237304687497,70.11137695312507],[-85.780029296875,70.03666992187505],[-86.32202148437503,70.14541015625],[-86.396875,70.46533203124997],[-87.838134765625,70.24658203125],[-88.78271484374997,70.49448242187503],[-89.45590820312498,71.06171874999995],[-87.84492187499995,70.94438476562505],[-87.14008789062498,71.01162109374997],[-89.80537109374993,71.46230468750005],[-89.86152343750001,72.41191406250005],[-88.70517578124998,73.40327148437495],[-87.71977539062496,73.72290039062497],[-85.95078124999998,73.85014648437505],[-84.94677734375,73.72163085937498],[-86.00053710937499,73.31254882812505],[-86.65629882812502,72.72402343750005],[-86.21845703124998,71.89912109375004],[-85.02338867187495,71.35322265625001],[-86.58935546874997,71.01079101562507]]],[[[-100.00190429687497,73.9458984375],[-99.15795898437499,73.73159179687497],[-97.66997070312499,73.88774414062499],[-97.1705078125,73.82485351562497],[-97.001708984375,73.66650390625003],[-97.62587890624997,73.50229492187498],[-97.27250976562502,73.38681640624998],[-98.42177734375002,72.94101562500003],[-97.63632812499998,73.02763671874999],[-97.128125,72.62758789062502],[-96.59208984374996,72.71025390624999],[-96.44560546874996,72.55244140624998],[-96.80146484374998,72.32241210937502],[-96.61342773437494,71.83383789062506],[-97.58227539062497,71.62968750000005],[-98.18134765624998,71.66245117187503],[-98.32270507812501,71.85234375000002],[-98.19863281249994,71.44086914062501],[-98.66289062499993,71.302099609375],[-99.22363281249996,71.387109375],[-100.594482421875,72.15234375000003],[-101.20854492187495,72.31699218749998],[-101.72392578124996,72.31489257812501],[-102.70874023437496,72.76450195312503],[-102.20400390624998,73.077294921875],[-101.27319335937497,72.7216796875],[-100.48476562500002,72.77294921874997],[-100.395703125,72.97700195312498],[-100.128125,72.90668945312495],[-100.53637695312497,73.19785156250003],[-99.82514648437503,73.2138671875],[-100.36611328125001,73.359033203125],[-100.88935546875003,73.27534179687501],[-101.52319335937501,73.48637695312502],[-100.97578124999995,73.59975585937502],[-100.5216796875,73.44931640625],[-100.96298828125002,73.79140625],[-99.99111328125,73.79516601562503],[-100.00190429687497,73.9458984375]]],[[[-98.270361328125,73.86850585937498],[-98.97392578124997,73.81206054687502],[-99.4169921875,73.89541015625002],[-97.69824218749997,74.10869140625005],[-98.270361328125,73.86850585937498]]],[[[-93.17084960937498,74.16098632812506],[-92.22270507812502,73.97236328124998],[-90.62744140625,73.95170898437505],[-90.38139648437496,73.82475585937502],[-92.11791992187497,72.75380859375],[-94.21132812499997,72.75693359375],[-93.77055664062496,72.66821289062506],[-93.55517578124994,72.42114257812497],[-94.03754882812498,72.02875976562498],[-95.00786132812496,72.01279296875],[-95.60214843749998,72.88447265624995],[-95.63291015625003,73.69545898437497],[-94.697607421875,73.66357421874997],[-95.134130859375,73.88125],[-94.97353515625,74.04140625000002],[-93.17084960937498,74.16098632812506]]],[[[-119.73632812499997,74.11264648437498],[-119.20595703125002,74.19799804687503],[-119.11796874999995,74.01552734375],[-118.54399414062499,74.24462890625003],[-117.51484375000001,74.23173828124999],[-115.51069335937501,73.61875],[-115.446875,73.43886718750002],[-118.96157226562497,72.68413085937499],[-119.51284179687501,72.30268554687501],[-120.17988281250001,72.21264648437506],[-120.61933593750001,71.50576171875002],[-121.47216796875003,71.38901367187503],[-121.74936523437502,71.44477539062501],[-123.09565429687503,71.09379882812502],[-124.00776367187494,71.67744140624998],[-125.29667968749999,71.973046875],[-125.84531250000002,71.978662109375],[-123.79726562499997,73.76816406250003],[-124.69624023437497,74.34819335937499],[-121.50415039062497,74.54511718749998],[-119.56264648437494,74.23281250000002],[-119.73632812499997,74.11264648437498]]],[[[-97.35551757812496,74.52631835937495],[-97.75,74.51054687500005],[-97.41650390624994,74.62656250000003],[-97.35551757812496,74.52631835937495]]],[[[-95.306640625,74.50541992187505],[-95.850732421875,74.58247070312504],[-95.51020507812498,74.63676757812499],[-95.306640625,74.50541992187505]]],[[[-104.11992187499995,75.03632812500004],[-104.88740234374998,75.14775390624999],[-104.34619140624996,75.42993164062503],[-103.64350585937497,75.18657226562499],[-104.11992187499995,75.03632812500004]]],[[[-93.54257812499995,75.0279296875],[-93.57309570312495,74.66884765625005],[-94.53452148437498,74.63671874999997],[-96.59960937499997,75.03178710937499],[-95.95463867187493,75.44379882812501],[-94.878173828125,75.63002929687502],[-93.90908203125002,75.42250976562502],[-93.54257812499995,75.0279296875]]],[[[-96.07856445312495,75.510107421875],[-96.91513671875003,75.37968749999999],[-96.98281249999997,75.50981445312505],[-96.367822265625,75.65463867187506],[-96.07856445312495,75.510107421875]]],[[[-94.52656249999995,75.74931640624999],[-94.901220703125,75.93076171875],[-94.53789062499996,75.99643554687506],[-94.52656249999995,75.74931640624999]]],[[[-118.328125,75.57968749999998],[-118.81713867187503,75.52211914062497],[-119.39458007812499,75.617333984375],[-117.63369140624998,76.11508789062498],[-118.328125,75.57968749999998]]],[[[-79.0630859375,75.92587890624998],[-79.63876953124995,75.84291992187505],[-79.00932617187499,76.14589843750005],[-79.0630859375,75.92587890624998]]],[[[-102.22734374999995,76.014892578125],[-102.00800781250003,75.93940429687498],[-102.57958984375003,75.78022460937498],[-103.31474609374996,75.76420898437499],[-103.04150390624999,75.91884765624997],[-103.98525390624997,75.93310546875003],[-103.80078124999994,76.03701171874997],[-104.24248046874996,76.04697265625006],[-104.35063476562497,76.18232421875001],[-102.72802734374999,76.30703125],[-102.22734374999995,76.014892578125]]],[[[-104.02285156249998,76.58310546875003],[-103.05131835937495,76.44985351562497],[-103.31137695312499,76.34755859375],[-104.35751953124995,76.33461914062502],[-104.58569335937499,76.60649414062499],[-104.07451171875003,76.66611328124998],[-104.02285156249998,76.58310546875003]]],[[[-97.70092773437497,76.46650390624998],[-97.89052734374997,75.7603515625],[-97.40751953124999,75.67250976562497],[-97.33603515624998,75.41982421875],[-97.65332031249997,75.50776367187498],[-97.87822265624996,75.41611328125003],[-97.67431640624997,75.127294921875],[-98.04531249999997,75.20083007812497],[-98.12094726562503,75.03271484375],[-100.234375,75.00771484374997],[-100.48349609374995,75.18842773437501],[-100.14570312499995,75.24614257812505],[-100.71191406250003,75.40634765625],[-99.19458007812499,75.698388671875],[-102.58740234375001,75.51367187500003],[-102.79750976562501,75.59965820312505],[-102.14472656249998,75.87504882812502],[-100.97280273437498,75.79843750000003],[-101.414990234375,75.84584960937502],[-101.87211914062496,76.08310546875003],[-101.52895507812495,76.21728515625003],[-102.1046875,76.33120117187505],[-101.41518554687495,76.42490234375003],[-99.86547851562499,75.92421875],[-100.11284179687502,76.11723632812507],[-99.54106445312497,76.14628906250005],[-100.41420898437495,76.242529296875],[-99.97773437500003,76.31245117187495],[-100.82973632812497,76.52387695312495],[-99.8140625,76.6322265625],[-98.89033203125,76.46557617187497],[-98.71083984374994,76.69384765625003],[-97.70092773437497,76.46650390624998]]],[[[-101.22612304687497,76.57934570312497],[-101.61308593749995,76.60458984375006],[-100.26914062499998,76.73413085937497],[-101.22612304687497,76.57934570312497]]],[[[-108.29238281250001,76.05712890625],[-107.72348632812502,75.99541015625002],[-108.020703125,75.80478515625],[-107.21621093749997,75.89155273437501],[-106.91352539062503,75.67963867187501],[-106.67700195312499,76.02373046875002],[-105.63266601562493,75.94536132812505],[-105.51948242187497,75.63237304687505],[-106.09262695312495,75.08945312500003],[-107.15341796874996,74.9271484375],[-108.47475585937495,74.94721679687501],[-108.83129882812501,75.06489257812498],[-112.51933593749997,74.41684570312503],[-113.67158203124997,74.45302734375005],[-114.31269531250003,74.71508789062506],[-112.835986328125,74.9755859375],[-111.67109375,75.01943359374997],[-111.09345703125001,75.25629882812498],[-113.71176757812499,75.06860351562503],[-113.85332031249996,75.259375],[-113.46708984374996,75.41611328125003],[-114.01650390624998,75.43427734375001],[-114.16845703124994,75.23950195312503],[-114.51381835937497,75.27548828125],[-114.45175781250002,75.08789062499997],[-115.02011718749999,74.97617187500003],[-115.41318359374995,75.11499023437497],[-115.72885742187496,74.968115234375],[-116.47607421874996,75.17177734375],[-117.56523437499997,75.23334960937504],[-117.25761718750002,75.45952148437502],[-116.07714843749996,75.49296874999999],[-115.14184570312501,75.67851562500005],[-116.42563476562498,75.58535156249997],[-117.16362304687496,75.64487304687503],[-116.80214843749995,75.77158203124998],[-114.99150390625002,75.896337890625],[-116.66455078124999,75.95756835937505],[-116.20986328125,76.19443359374998],[-114.77861328124999,76.17260742187497],[-115.82216796874997,76.27001953125003],[-114.99848632812503,76.4974609375],[-114.19394531249999,76.45146484375005],[-113.82348632812501,76.20683593750002],[-112.69760742187496,76.20170898437505],[-111.05268554687495,75.54853515625001],[-108.94716796875,75.54179687499999],[-108.94477539062495,75.69897460937503],[-109.8705078125,75.929052734375],[-109.48681640624999,76.14467773437497],[-110.31445312500001,76.369384765625],[-109.09824218749996,76.811865234375],[-108.46699218749997,76.73759765625007],[-108.29238281250001,76.05712890625]]],[[[-89.72646484374994,76.50742187499998],[-90.55625,76.73457031249998],[-90.13632812499995,76.83696289062505],[-89.69541015625,76.74116210937498],[-89.72646484374994,76.50742187499998]]],[[[-113.56069335937494,76.74326171874998],[-114.83525390624999,76.79467773437497],[-113.89165039062495,76.89487304687503],[-113.56069335937494,76.74326171874998]]],[[[-94.29497070312493,76.91245117187498],[-93.23002929687496,76.77026367187497],[-93.53457031250002,76.44770507812498],[-92.99536132812494,76.62041015624999],[-91.305029296875,76.68076171875003],[-90.54262695312494,76.495751953125],[-91.41508789062496,76.45585937500005],[-89.28452148437498,76.30161132812506],[-89.40659179687498,76.18916015624998],[-91.40732421874998,76.22006835937506],[-89.27758789062497,75.79506835937497],[-89.64604492187499,75.5650390625],[-88.91669921874998,75.45395507812503],[-88.64497070312495,75.65844726562503],[-88.201318359375,75.51201171875005],[-87.72973632812503,75.57563476562495],[-87.53911132812502,75.48486328125003],[-87.25693359374998,75.61772460937499],[-85.95146484374993,75.39501953125],[-85.97299804687498,75.5287109375],[-83.931982421875,75.81894531250003],[-83.23710937499993,75.75083007812503],[-82.153662109375,75.83105468750003],[-80.32197265624998,75.62910156250001],[-79.50908203125002,75.25981445312499],[-80.38198242187494,75.03417968750003],[-79.40141601562502,74.91762695312502],[-79.944482421875,74.83364257812505],[-80.34775390624998,74.90297851562505],[-80.26274414062499,74.58447265625],[-81.94018554687494,74.47270507812505],[-82.73579101562495,74.53027343749997],[-83.5220703125,74.90146484375],[-83.53188476562494,74.58569335937497],[-84.42553710937503,74.50810546875007],[-85.06142578125,74.60693359375003],[-85.133447265625,74.517431640625],[-85.44233398437495,74.6005859375],[-85.80800781249994,74.49897460937498],[-88.42304687499995,74.49414062499997],[-88.53496093749993,74.83173828125001],[-89.55869140624995,74.55473632812507],[-90.55327148437499,74.61274414062498],[-90.88022460937498,74.8177734375],[-91.13457031250002,74.64985351562498],[-91.54912109375002,74.65556640624999],[-92.3892578125,75.263330078125],[-92.18510742187499,75.84653320312498],[-93.09174804687495,76.35400390624997],[-95.27387695312498,76.26440429687503],[-96.03969726562494,76.48671875000002],[-95.65097656249998,76.58466796874998],[-96.88071289062495,76.73833007812505],[-96.40156249999995,76.79721679687503],[-96.75830078124997,76.97177734374998],[-95.84951171875002,77.06621093750005],[-94.29497070312493,76.91245117187498]]],[[[-115.55126953125001,77.36328125],[-116.32919921874996,77.137060546875],[-115.81005859374999,76.939111328125],[-116.25273437500002,76.90141601562505],[-115.94628906250003,76.71127929687503],[-116.99921874999995,76.531591796875],[-117.23359375000001,76.28154296875005],[-117.99296874999999,76.40581054687505],[-117.88081054687497,76.80507812500005],[-118.79140624999994,76.51298828125005],[-119.080712890625,76.12407226562505],[-119.58037109375,76.32651367187498],[-119.52612304687496,75.99721679687505],[-119.91289062499997,75.85883789062501],[-120.40888671874995,75.82563476562498],[-120.84838867187496,76.18266601562499],[-121.21347656249999,75.98369140625005],[-122.53305664062498,75.95092773437503],[-122.59272460937497,76.16206054687495],[-122.90278320312498,76.13471679687498],[-122.51938476562503,76.353173828125],[-121.56113281250003,76.453466796875],[-119.09018554687496,77.30507812500002],[-116.84355468749995,77.33955078124995],[-117.03974609374995,77.46513671875005],[-116.51132812500003,77.54760742187497],[-115.55126953125001,77.36328125]]],[[[-89.83325195312503,77.26762695312505],[-90.22827148437503,77.21245117187499],[-90.99321289062499,77.32949218750002],[-91.01904296875003,77.64389648437503],[-89.83896484375003,77.49140624999998],[-89.83325195312503,77.26762695312505]]],[[[-104.55815429687497,77.14174804687497],[-105.21508789062496,77.18208007812501],[-106.03559570312495,77.73984375000006],[-105.58789062499997,77.73598632812497],[-104.54223632812501,77.33774414062503],[-104.55815429687497,77.14174804687497]]],[[[-95.484375,77.79199218750003],[-93.30097656249995,77.73979492187505],[-93.54394531249997,77.466650390625],[-95.98706054687497,77.484130859375],[-96.19458007812497,77.70053710937503],[-95.484375,77.79199218750003]]],[[[-101.6935546875,77.69658203125005],[-102.37783203124995,77.728125],[-102.44770507812498,77.88061523437506],[-101.19321289062493,77.82978515624998],[-101.00205078124998,77.73510742187497],[-101.6935546875,77.69658203125005]]],[[[-113.83247070312497,77.75463867187506],[-114.28720703124998,77.72148437500005],[-114.98041992187498,77.91542968750002],[-114.33037109374997,78.07753906250002],[-113.83247070312497,77.75463867187506]]],[[[-110.45805664062496,78.10322265625001],[-109.62226562499995,78.07475585937499],[-110.865625,77.834130859375],[-110.15273437500002,77.76293945312506],[-110.19848632812501,77.52451171874998],[-112.37265625000002,77.36411132812498],[-113.16435546875002,77.5302734375],[-113.21518554687498,77.90351562500001],[-110.45805664062496,78.10322265625001]]],[[[-109.81596679687499,78.65039062500003],[-109.48447265624995,78.31640625],[-111.16918945312499,78.38627929687505],[-111.51748046874997,78.27470703125005],[-112.13125,78.366064453125],[-113.22304687499998,78.29790039062505],[-112.85585937499997,78.46684570312502],[-110.877587890625,78.73505859375004],[-109.81596679687499,78.65039062500003]]],[[[-96.20449218749994,78.53129882812499],[-94.91538085937495,78.39052734375002],[-95.32924804687497,78.22504882812495],[-94.93427734374998,78.07563476562498],[-96.98964843749994,77.80600585937503],[-97.65815429687498,78.090625],[-96.944677734375,78.15185546874997],[-98.04951171874995,78.325927734375],[-98.33261718749998,78.77353515625006],[-97.38232421875,78.78291015625001],[-96.20449218749994,78.53129882812499]]],[[[-103.42602539062499,79.315625],[-102.57617187499996,78.87939453125003],[-101.70366210937502,79.07890625000002],[-101.128125,78.80166015625002],[-100.43549804687503,78.8203125],[-99.60942382812495,78.58305664062507],[-99.16640625000002,77.85693359375003],[-100.27465820312503,77.83271484374995],[-101.07412109375001,78.19384765625],[-102.60698242187502,78.24892578125002],[-102.73134765624995,78.37104492187495],[-103.94658203124999,78.26000976562497],[-104.76357421874998,78.35166015625],[-104.90961914062498,78.55263671875],[-103.57050781250003,78.53984375000005],[-104.02084960937502,78.63491210937497],[-103.37158203125,78.73632812500003],[-104.18500976562498,78.78129882812505],[-104.15195312499999,78.989892578125],[-104.89550781249996,78.80815429687502],[-104.74677734375003,79.02709960937503],[-105.53564453124999,79.03251953125007],[-105.51455078124995,79.24248046875002],[-105.38769531249994,79.32358398437503],[-103.42602539062499,79.315625]]],[[[-98.79160156249995,79.98110351562505],[-98.94521484375,79.72407226562498],[-100.05683593749997,79.89824218750005],[-100.05327148437496,80.093359375],[-99.15322265625001,80.12421874999998],[-98.79160156249995,79.98110351562505]]],[[[-91.88554687499999,81.13286132812505],[-90.64301757812498,80.59370117187498],[-89.23559570312494,80.51064453125002],[-88.85732421874997,80.16621093750001],[-88.19990234374998,80.11147460937497],[-88.5248046875,80.41801757812507],[-87.675,80.37211914062505],[-87.92231445312501,80.09770507812499],[-86.97719726562502,79.89423828125001],[-87.29516601562494,79.58017578124998],[-86.33696289062496,79.63496093749995],[-86.00703124999998,79.47944335937498],[-85.6478515625,79.61142578125006],[-85.04213867187497,79.2845703125],[-86.95717773437502,78.97490234375005],[-87.61738281249995,78.67631835937505],[-88.04018554687494,78.99531250000004],[-87.98286132812498,78.53706054687501],[-88.74160156250002,78.58403320312499],[-88.82241210937497,78.18588867187498],[-90.037109375,78.60683593750002],[-89.52568359374999,78.15961914062495],[-90.29721679687495,78.32802734374997],[-90.614404296875,78.14985351562501],[-92.35126953125001,78.312890625],[-92.8482421875,78.46010742187497],[-91.86689453124998,78.54267578125001],[-93.26660156249997,78.60830078124997],[-93.63442382812502,78.75092773437498],[-93.15986328124998,78.77563476562503],[-94.11459960937498,78.92890625000001],[-92.54721679687495,79.28261718750002],[-91.29990234375003,79.372705078125],[-92.82192382812497,79.44990234375001],[-93.93315429687496,79.29072265624998],[-94.11030273437498,79.40156250000001],[-95.10317382812502,79.289892578125],[-95.66289062500002,79.52734374999997],[-94.40185546874997,79.736328125],[-95.73935546874995,79.66015625000003],[-96.58906249999995,79.91665039062497],[-96.77324218749999,80.13579101562502],[-94.64589843749994,80.04873046874997],[-94.26259765625002,80.19487304687499],[-95.40507812499996,80.13500976562506],[-96.39409179687493,80.31503906250003],[-95.549072265625,80.36660156249997],[-95.92695312499998,80.72065429687498],[-93.92792968749995,80.55917968750003],[-95.51474609375003,80.83813476562503],[-94.98051757812499,81.04965820312503],[-93.28671874999998,81.10029296874998],[-94.22011718749997,81.33076171875004],[-93.03466796874997,81.3462890625],[-91.88554687499999,81.13286132812505]]],[[[-69.4888671875,83.01679687499998],[-66.42255859374998,82.92685546875003],[-68.46933593749995,82.65336914062502],[-65.29902343749995,82.79960937500005],[-64.98388671874997,82.90229492187501],[-64.50400390625,82.77841796874998],[-63.641015624999966,82.81259765625003],[-63.246777343749926,82.4501953125],[-62.47519531249995,82.51958007812502],[-61.392480468749994,82.44189453125],[-61.61538085937502,82.18442382812503],[-64.43579101562497,81.74262695312501],[-66.62573242187497,81.61640624999995],[-68.68852539062493,81.29331054687503],[-64.78007812499993,81.49287109375001],[-69.55068359375,80.38325195312498],[-70.71259765625001,80.53959960937505],[-70.264892578125,80.23359374999998],[-72.05595703124996,80.12324218749995],[-70.56840820312493,80.09370117187498],[-71.387841796875,79.76176757812505],[-72.43652343750003,79.69438476562499],[-74.39448242187495,79.87407226562499],[-73.47246093749996,79.7564453125],[-73.36152343750001,79.50400390625],[-75.50341796875,79.41416015625],[-76.898828125,79.5123046875],[-75.60273437499998,79.23955078125005],[-74.48120117187503,79.22949218750006],[-74.64091796874996,79.03554687499997],[-78.58164062499998,79.075],[-77.88276367187498,78.9423828125],[-76.255859375,79.00683593749997],[-74.486328125,78.75009765624998],[-74.87861328124998,78.54482421875],[-76.41611328124995,78.51152343750005],[-75.19345703125,78.327734375],[-75.86596679687497,78.00981445312499],[-78.01259765624997,77.94604492187506],[-78.07617187500003,77.51904296875],[-78.70849609374997,77.34213867187503],[-80.57304687499996,77.31479492187506],[-81.65908203124997,77.52543945312499],[-81.3013671875,77.34404296875007],[-82.056787109375,77.29653320312497],[-81.75634765624997,77.20400390625005],[-79.49726562500001,77.19609375000005],[-78.97919921874998,76.89287109374999],[-78.28886718750002,76.97797851562501],[-77.98330078124994,76.75498046875006],[-78.284326171875,76.57124023437501],[-80.79970703124997,76.173583984375],[-80.97451171874994,76.470068359375],[-81.71738281250003,76.494970703125],[-82.52983398437499,76.723291015625],[-82.23315429687494,76.46582031250003],[-83.88569335937501,76.453125],[-84.22377929687497,76.67534179687499],[-84.27534179687498,76.35654296875006],[-85.141259765625,76.30458984375005],[-86.45371093750003,76.58486328125002],[-86.68022460937499,76.37661132812497],[-87.35419921874998,76.44804687500005],[-87.48979492187499,76.58583984374997],[-87.49755859374997,76.38627929687499],[-88.39599609374997,76.40527343750003],[-88.49584960937497,76.77285156249997],[-88.54580078125002,76.42089843750003],[-89.36962890624997,76.474462890625],[-89.49975585937503,76.82680664062502],[-88.39814453124995,77.10395507812501],[-86.81225585937497,77.18491210937498],[-87.68144531249996,77.43637695312503],[-88.01699218750002,77.78471679687505],[-86.75507812499998,77.86372070312498],[-85.58847656249998,77.46113281250004],[-84.73867187499997,77.36103515624998],[-83.72128906249998,77.41420898437497],[-82.7103515625,77.84951171875002],[-82.5953125,77.99213867187504],[-83.77939453125,77.53261718750002],[-85.28935546874996,77.55903320312498],[-85.54755859374998,77.92768554687495],[-84.61542968749998,78.19570312500002],[-84.22270507812499,78.176025390625],[-84.91035156249993,78.23969726562501],[-84.78320312499997,78.52758789062506],[-85.5859375,78.10957031249998],[-86.21777343750003,78.08120117187497],[-85.92006835937494,78.34287109374998],[-86.91323242187494,78.126806640625],[-87.5517578125,78.17661132812503],[-86.80791015624999,78.77436523437495],[-85.00375976562495,78.912255859375],[-83.27143554687501,78.77031250000002],[-81.75009765624995,78.97578124999995],[-82.43876953125002,78.903662109375],[-84.41201171875002,78.99658203125003],[-84.38359375000002,79.1185546875],[-83.57587890624995,79.05366210937501],[-86.42075195312498,79.84521484374997],[-86.49853515625003,80.25825195312501],[-83.72363281250003,80.22895507812501],[-81.68837890625,79.685791015625],[-80.47592773437498,79.60625],[-80.12446289062495,79.66948242187507],[-81.01015625000002,79.693115234375],[-82.98701171874995,80.32260742187498],[-76.86298828124995,80.86479492187505],[-78.71621093749994,80.95166015624997],[-76.88510742187503,81.43027343750006],[-81.00703125000001,80.6548828125],[-82.88432617187502,80.57753906249997],[-82.22236328124998,80.77231445312503],[-84.41782226562495,80.52675781250002],[-86.250341796875,80.56577148437506],[-86.60307617187499,80.66401367187498],[-85.63930664062494,80.92460937500007],[-83.288818359375,81.14794921875],[-85.780859375,81.03505859375],[-87.32988281250002,80.669775390625],[-88.00366210937497,80.675390625],[-89.16689453125,80.94130859375],[-86.47675781249993,81.03574218750006],[-84.94121093750002,81.28623046875],[-87.27509765624995,81.080810546875],[-89.623046875,81.032470703125],[-89.94731445312499,81.17265625000005],[-89.20869140624998,81.25009765625003],[-89.67368164062503,81.32861328125003],[-87.59702148437498,81.52583007812498],[-88.47905273437502,81.56464843749998],[-90.41630859374996,81.40537109375003],[-89.82167968749997,81.63486328124998],[-91.29238281250002,81.57124023437498],[-91.64755859374998,81.68383789062503],[-88.06318359375001,82.09648437500007],[-87.01821289062502,81.95874023437497],[-86.62680664062495,82.05102539062503],[-85.04482421874997,81.9828125],[-86.615625,82.21855468750007],[-84.89682617187503,82.44941406250001],[-82.63369140625002,82.07729492187497],[-82.53691406250002,82.24726562499995],[-79.465625,81.85112304687499],[-82.44755859374993,82.39501953125003],[-81.68115234375003,82.51865234375],[-82.11684570312497,82.62866210937503],[-80.8625,82.57153320312503],[-81.01015625000002,82.77905273437503],[-78.748779296875,82.67939453124998],[-80.15493164062497,82.91113281250003],[-77.61806640624997,82.89584960937503],[-76.009375,82.53515625],[-75.565625,82.60854492187502],[-77.12490234374994,83.00854492187497],[-74.41416015624995,83.01313476562501],[-72.65869140625,82.72163085937495],[-73.44189453124994,82.90483398437499],[-72.811669921875,83.08120117187502],[-71.98320312499996,83.10141601562498],[-70.94038085937495,82.90224609375],[-71.08481445312498,83.08266601562497],[-69.96992187499995,83.11611328125005],[-69.4888671875,83.01679687499998]]]]},"properties":{"name":"Canada","childNum":110}},{"geometry":{"type":"Polygon","coordinates":[[[9.527658197470123,47.27026989773668],[9.46249431093294,47.19858962254578],[9.46249431093294,47.09010747968864],[9.409458596647225,47.02019676540292],[9.579979133936737,47.05856388629306],[9.580273437500011,47.057373046875],[10.133496093750011,46.851513671875],[10.349414062500017,46.98476562499999],[10.414941406250023,46.964404296874996],[10.45458984375,46.8994140625],[10.452832031250011,46.86494140625],[10.406054687500017,46.73486328125],[10.39794921875,46.6650390625],[10.4306640625,46.550048828125],[10.195507812500011,46.62109375],[10.1375,46.61435546875],[10.087011718750006,46.599902343749996],[10.061230468750011,46.546777343749994],[10.038281250000011,46.483203125],[10.045605468750011,46.447900390624994],[10.081933593750023,46.420751953125],[10.109667968750017,46.362841796874996],[10.128320312500023,46.238232421875],[10.08056640625,46.227978515625],[10.041015625,46.238085937499996],[9.939257812500017,46.36181640625],[9.884472656250011,46.3677734375],[9.787792968750011,46.346044921875],[9.639453125000017,46.2958984375],[9.57958984375,46.29609375],[9.528710937500023,46.306201171874996],[9.427636718750023,46.482324218749994],[9.399316406250023,46.4806640625],[9.304394531250011,46.495556640625],[9.203417968750017,46.21923828125],[9.11874162946429,46.014892578125],[8.97551618303573,45.81677455357143],[8.74961495535715,46.02246372767857],[8.818554687500011,46.0771484375],[8.458398437500023,46.245898437499996],[8.370703125,46.445117187499996],[8.298535156250011,46.40341796875],[8.23193359375,46.341210937499994],[8.08154296875,46.256005859374994],[7.9931640625,46.015917968749996],[7.327929687500017,45.912353515625],[7.129003906250006,45.880419921874996],[7.055761718750006,45.90380859375],[7.02109375,45.92578125],[6.953710937500006,46.017138671874996],[6.897265625000017,46.0517578125],[6.772070312500006,46.16513671875],[6.758105468750017,46.415771484375],[6.578222656250006,46.437353515625],[6.428906250000011,46.430517578125],[6.321875,46.393701171874994],[6.234667968750017,46.3326171875],[6.199414062500011,46.19306640625],[6.086621093750011,46.147021484374996],[6.006640625000017,46.142333984375],[5.971484375000017,46.151220703125],[5.970019531250017,46.214697265625],[6.0361328125,46.238085937499996],[6.095898437500011,46.27939453125],[6.129687500000017,46.5669921875],[6.41015625,46.755419921874996],[6.429003906250017,46.832275390625],[6.45625,46.94833984375],[6.624804687500017,47.004345703125],[6.666894531250023,47.026513671874994],[6.688085937500006,47.058251953124994],[6.820703125000023,47.16318359375],[6.952050781250023,47.2671875],[6.978515625,47.302050781249996],[7.000585937500006,47.322509765625],[7.000585937500006,47.339453125],[6.900390625,47.39423828125],[6.968359375,47.45322265625],[7.136035156250017,47.48984375],[7.343164062500023,47.43310546875],[7.615625,47.592724609375],[8.454003906250023,47.59619140625],[8.559472656250023,47.6240234375],[8.570507812500011,47.63779296875],[8.567089843750011,47.651904296874996],[8.55234375,47.659130859375],[8.451757812500006,47.651806640625],[8.413281250000011,47.6626953125],[8.403417968750006,47.687792968749996],[8.435742187500011,47.731347656249994],[8.572656250000023,47.775634765625],[9.524023437500006,47.52421875],[9.625878906250023,47.467041015625],[9.527539062500011,47.270751953125],[9.527658197470123,47.27026989773668]]]},"properties":{"name":"Switzerland","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-67.28886718749999,-55.776855468749964],[-67.55996093749997,-55.72480468750002],[-67.39736328124997,-55.58515625],[-67.28886718749999,-55.776855468749964]]],[[[-67.07993164062498,-55.15380859374996],[-67.33969726562495,-55.292578124999984],[-67.4947265625,-55.177441406249976],[-68.07001953124995,-55.22109374999999],[-68.30136718750003,-54.98066406250003],[-67.245263671875,-54.977636718750034],[-67.07993164062498,-55.15380859374996]]],[[[-69.70297851562503,-54.91904296875],[-68.90078125000002,-55.01777343750004],[-68.45800781249997,-54.95966796875002],[-68.61328124999997,-55.155566406250045],[-68.28266601562495,-55.25517578125],[-68.04833984375,-55.6431640625],[-68.86704101562498,-55.45019531250003],[-68.89008789062498,-55.2412109375],[-69.19262695312497,-55.171875],[-69.35922851562498,-55.300683593749945],[-69.18085937499995,-55.47480468749998],[-69.41181640624995,-55.44423828124997],[-69.97978515625002,-55.14746093749999],[-69.88442382812494,-54.88203125000001],[-69.70297851562503,-54.91904296875]]],[[[-70.9916015625,-54.86796874999999],[-70.80483398437497,-54.96767578124996],[-70.41752929687493,-54.908886718749976],[-70.29785156249997,-55.11376953124997],[-70.47558593749994,-55.17705078124998],[-71.43720703125001,-54.88925781249997],[-70.9916015625,-54.86796874999999]]],[[[-71.390478515625,-54.03281250000002],[-71.02192382812495,-54.111816406250036],[-71.14326171874998,-54.374023437499986],[-71.473291015625,-54.23115234375001],[-71.94853515624999,-54.300878906250006],[-72.21044921874997,-54.04775390624995],[-71.996484375,-53.884863281249984],[-71.390478515625,-54.03281250000002]]],[[[-72.92324218749997,-53.481640625],[-72.88222656249997,-53.578320312499976],[-72.48227539062503,-53.58808593750001],[-72.20541992187503,-53.80742187500002],[-72.408544921875,-54.00380859374997],[-72.87099609375,-54.12656250000002],[-72.76376953125,-53.86484375],[-73.03945312499994,-53.83281250000004],[-73.08076171875001,-53.99804687499995],[-73.21064453125001,-53.98583984374995],[-73.31435546875,-53.72919921874998],[-73.845458984375,-53.54580078125001],[-73.44707031249993,-53.41005859374998],[-72.92324218749997,-53.481640625]]],[[[-74.38574218749994,-52.92236328125001],[-73.65400390624998,-53.06982421875003],[-73.13520507812498,-53.35390625],[-73.56728515625,-53.3068359375],[-73.86694335937494,-53.096875],[-74.27021484374995,-53.08154296875002],[-74.71201171874998,-52.74873046874998],[-74.38574218749994,-52.92236328125001]]],[[[-68.62993164062499,-52.65263671875004],[-68.65322265624994,-54.85361328124999],[-69.48627929687493,-54.85888671875],[-69.72343750000002,-54.71210937500003],[-70.49716796875,-54.80957031249999],[-71.83154296874997,-54.62617187500002],[-71.92773437500003,-54.52871093749997],[-71.80014648437498,-54.433984374999945],[-71.07993164062498,-54.444238281249994],[-70.79726562500002,-54.32724609374996],[-70.70112304687498,-54.48544921875004],[-70.31098632812498,-54.52851562500002],[-70.86308593749993,-54.11044921875003],[-70.86772460937499,-53.88417968750002],[-70.53129882812502,-53.627343750000016],[-70.37973632812495,-53.98671874999995],[-70.62983398437493,-54.005566406249976],[-70.53530273437494,-54.136132812500016],[-70.16899414062502,-54.37929687499999],[-69.74184570312494,-54.30585937500005],[-69.25317382812494,-54.557421875000045],[-69.04433593749997,-54.40673828124999],[-69.98813476562503,-54.10908203125001],[-70.15112304687503,-53.88808593750002],[-70.09111328124996,-53.72177734374998],[-69.35595703125003,-53.41630859375001],[-69.63701171874999,-53.33408203125004],[-70.32929687499998,-53.37763671875003],[-70.44335937499994,-53.085546875000034],[-70.130615234375,-52.942773437499994],[-70.38012695312494,-52.75195312500002],[-69.93544921874997,-52.82109374999998],[-69.41406249999997,-52.48623046874997],[-69.16704101562499,-52.66757812499997],[-68.78979492187497,-52.576757812500034],[-68.62993164062499,-52.65263671875004]]],[[[-74.82294921874993,-51.63017578125001],[-74.53681640624998,-51.96513671875004],[-74.69448242187497,-52.27919921874999],[-74.85180664062494,-52.27070312500003],[-75.10537109375,-51.78886718750001],[-74.82294921874993,-51.63017578125001]]],[[[-74.55864257812499,-51.27705078125001],[-74.62036132812497,-51.395703125000026],[-75.04736328125,-51.39833984375003],[-75.28911132812496,-51.625390625000016],[-75.15366210937498,-51.278808593750014],[-74.73666992187503,-51.20761718749999],[-74.55864257812499,-51.27705078125001]]],[[[-75.302001953125,-50.67998046875005],[-75.411376953125,-50.76435546875001],[-75.42763671875002,-50.48056640625002],[-75.11533203124998,-50.510449218749976],[-75.302001953125,-50.67998046875005]]],[[[-75.05478515625,-50.29609375],[-75.44912109374997,-50.34335937500004],[-75.32666015624997,-50.01181640625],[-74.8759765625,-50.10996093750001],[-75.05478515625,-50.29609375]]],[[[-75.106689453125,-48.83652343750001],[-75.38994140624999,-49.15917968750002],[-75.64116210937499,-49.195410156250034],[-75.48764648437498,-49.082421875000016],[-75.58310546874998,-48.85888671874995],[-75.106689453125,-48.83652343750001]]],[[[-74.47617187499998,-49.14785156250002],[-74.59472656249997,-50.00664062500001],[-74.76298828124996,-50.01142578125001],[-74.88041992187502,-49.72587890625001],[-74.72382812499998,-49.42382812500003],[-74.960107421875,-49.533007812499974],[-75.06601562499998,-49.85234375000002],[-75.54980468749994,-49.79130859375002],[-75.30585937499998,-49.49404296875003],[-75.46748046874995,-49.35888671875003],[-75.08603515624998,-49.27021484375],[-75.21015624999995,-49.14804687499998],[-74.94921875,-48.960156249999976],[-74.89624023437503,-48.73320312500002],[-74.54609374999993,-48.76689453125004],[-74.47617187499998,-49.14785156250002]]],[[[-75.51025390624997,-48.76347656250005],[-75.65092773437496,-48.58632812500002],[-75.57148437499993,-48.095898437500026],[-75.39140625000002,-48.01972656249997],[-75.15849609374999,-48.62265624999996],[-75.51025390624997,-48.76347656250005]]],[[[-74.56728515625,-48.591992187500026],[-74.92304687499998,-48.62646484375003],[-75.21289062499997,-48.141699218750034],[-75.19829101562502,-47.974609375000014],[-74.895654296875,-47.839355468749986],[-74.56728515625,-48.591992187500026]]],[[[-75.11220703124997,-47.8376953125],[-75.26103515625002,-47.76386718749998],[-74.92646484374998,-47.72314453125003],[-75.11220703124997,-47.8376953125]]],[[[-74.31289062500002,-45.69150390625002],[-74.46552734374995,-45.757226562499994],[-74.68984375,-45.66259765625],[-74.310546875,-45.17265625000002],[-74.31289062500002,-45.69150390625002]]],[[[-73.63217773437498,-44.82148437499997],[-73.81845703125,-44.65214843750002],[-73.72392578124993,-44.544238281249974],[-73.63217773437498,-44.82148437499997]]],[[[-72.98613281249999,-44.780078124999974],[-73.22846679687498,-44.85996093749999],[-73.39707031249998,-44.77431640624995],[-73.44506835937497,-44.641015624999966],[-73.20771484374993,-44.33496093749997],[-72.7763671875,-44.50859374999999],[-72.98613281249999,-44.780078124999974]]],[[[-73.73535156249997,-44.39453125000003],[-74.00205078125003,-44.59091796874998],[-73.728173828125,-45.195898437500034],[-74.016259765625,-45.344921875000026],[-74.61777343749998,-44.64794921874996],[-74.50180664062498,-44.47353515624995],[-74.09721679687496,-44.38935546875004],[-73.99492187499999,-44.140234375],[-73.70322265624998,-44.27412109375001],[-73.73535156249997,-44.39453125000003]]],[[[-73.81064453125003,-43.827246093750006],[-73.95566406249998,-43.921972656250034],[-74.14296874999997,-43.872167968750006],[-73.81064453125003,-43.827246093750006]]],[[[-73.77338867187498,-43.3458984375],[-74.114404296875,-43.35791015624996],[-74.387353515625,-43.231640625],[-74.03666992187496,-41.79550781249998],[-73.52783203124997,-41.89628906249999],[-73.42290039062499,-42.192871093750014],[-73.47080078124998,-42.46630859375004],[-73.78925781249993,-42.58574218750003],[-73.43632812499996,-42.9365234375],[-73.74965820312494,-43.15908203124995],[-73.77338867187498,-43.3458984375]]],[[[-78.80415039062501,-33.646484374999986],[-78.98945312499993,-33.66171874999998],[-78.87744140625003,-33.57519531250003],[-78.80415039062501,-33.646484374999986]]],[[[-109.27998046874994,-27.14042968749996],[-109.434130859375,-27.171289062500023],[-109.39047851562499,-27.068359375000014],[-109.27998046874994,-27.14042968749996]]],[[[-67.19487304687493,-22.821679687500037],[-67.00878906249994,-23.00136718750005],[-67.35620117187503,-24.033789062499963],[-68.25029296875002,-24.391992187500023],[-68.56201171875,-24.74736328125003],[-68.38422851562495,-25.091894531249977],[-68.59208984375002,-25.420019531250034],[-68.41450195312498,-26.153710937500023],[-68.59160156249999,-26.47041015624997],[-68.31865234374999,-26.973242187500006],[-68.59208984375002,-27.140039062499966],[-68.84633789062494,-27.153710937499994],[-69.17441406249998,-27.924707031250037],[-69.65693359374995,-28.413574218749986],[-69.82788085937497,-29.10322265624997],[-70.02680664062501,-29.324023437500017],[-69.95996093749997,-30.078320312500026],[-69.84428710937493,-30.175],[-69.95634765624996,-30.35820312500003],[-70.15322265625,-30.360937499999963],[-70.30908203124994,-31.02265625000004],[-70.51958007812493,-31.1484375],[-70.585205078125,-31.569433593749963],[-70.25439453125,-31.957714843750026],[-70.36376953125,-32.08349609374997],[-70.02197265625,-32.88457031250002],[-70.08486328125002,-33.20175781249998],[-69.81962890624999,-33.28378906249999],[-69.85244140625,-34.224316406250026],[-70.05205078124999,-34.30078124999997],[-70.39316406250003,-35.146875],[-70.55517578125,-35.246875],[-70.41572265625001,-35.52304687500002],[-70.40478515625,-36.06171874999998],[-71.05551757812498,-36.52373046874996],[-71.19218750000002,-36.84365234375004],[-71.16757812499998,-37.76230468749996],[-70.858642578125,-38.60449218750003],[-71.40156249999995,-38.93505859374996],[-71.53945312499997,-39.60244140624995],[-71.71992187499995,-39.63525390624997],[-71.65976562499998,-40.02080078125],[-71.81831054687493,-40.17666015624995],[-71.70898437499997,-40.381738281249994],[-71.93212890624994,-40.69169921874999],[-71.91127929687497,-41.650390624999986],[-71.75,-42.04677734375001],[-72.10820312499993,-42.25185546874995],[-72.14643554687498,-42.990039062499974],[-71.750634765625,-43.237304687499986],[-71.90498046875001,-43.34755859374998],[-71.68007812500002,-43.92958984374998],[-71.82001953124993,-44.38310546875],[-71.21259765624998,-44.44121093750003],[-71.15971679687496,-44.56025390625004],[-71.26113281250002,-44.763085937499966],[-72.06372070312503,-44.771875],[-72.04169921874998,-44.90419921875004],[-71.5962890625,-44.97919921875004],[-71.34931640624995,-45.33193359374995],[-71.74619140624998,-45.57890625],[-71.63154296874998,-45.95371093749998],[-71.87568359374998,-46.160546875],[-71.69965820312501,-46.6513671875],[-71.94023437499999,-46.83125],[-71.90498046875001,-47.201660156250014],[-72.34594726562497,-47.49267578124997],[-72.517919921875,-47.87636718749998],[-72.32832031250001,-48.11005859374998],[-72.35473632812497,-48.36582031250005],[-72.582861328125,-48.47539062499999],[-72.65126953125,-48.84160156249998],[-73.03364257812501,-49.014355468750004],[-73.13525390625,-49.30068359374999],[-73.46157226562497,-49.31386718750001],[-73.55419921875,-49.463867187500014],[-73.50126953124996,-50.125292968750024],[-73.15292968749998,-50.73828125000003],[-72.50981445312496,-50.607519531250034],[-72.34023437499997,-50.68183593749999],[-72.40766601562501,-51.54082031250002],[-71.91865234374995,-51.98955078125004],[-69.96025390624993,-52.00820312500002],[-68.443359375,-52.35664062500004],[-69.24101562499996,-52.20546874999997],[-69.62031249999995,-52.46474609374995],[-70.79511718749995,-52.76875],[-70.99584960937497,-53.77929687499997],[-71.29775390625002,-53.88339843750004],[-72.1744140625,-53.632324218749964],[-72.41289062500002,-53.35019531250004],[-71.94169921874993,-53.23408203125001],[-71.89169921874998,-53.523535156250006],[-71.79145507812498,-53.48457031249997],[-71.74052734374999,-53.232617187499976],[-71.28896484375002,-53.03369140624995],[-71.22714843750003,-52.810644531249984],[-71.38774414062496,-52.76425781250004],[-72.27802734374998,-53.13232421874997],[-72.54892578125,-53.4607421875],[-73.05273437499997,-53.24345703125005],[-72.72768554687502,-52.7623046875],[-72.453466796875,-52.814453124999964],[-72.11757812499997,-52.65],[-71.51127929687502,-52.60537109375],[-72.22568359374998,-52.52099609374995],[-72.43769531250001,-52.62578124999998],[-72.71210937499995,-52.53554687499999],[-73.12246093749997,-53.073925781249976],[-73.64521484374998,-52.83701171875003],[-73.2408203125,-52.707128906250034],[-73.12392578125,-52.487988281249976],[-73.24414062499997,-52.62402343749998],[-73.58569335937503,-52.68574218750003],[-74.01445312499999,-52.63935546875],[-74.26494140624993,-52.1048828125],[-73.83447265625,-52.23398437500001],[-73.68432617187494,-52.07773437499998],[-73.26044921874993,-52.157812500000034],[-72.79501953124998,-51.94951171875005],[-72.57084960937496,-52.200097656249945],[-72.67705078125002,-52.38466796874998],[-72.52333984374997,-52.255468750000034],[-72.62460937499998,-51.94648437499997],[-72.48964843750002,-51.76367187500003],[-72.76123046875,-51.57324218749996],[-73.16875,-51.45390624999998],[-72.60004882812495,-51.79912109374997],[-73.51816406250003,-52.04101562499996],[-73.75263671874993,-51.795507812500034],[-74.19667968749997,-51.68056640624997],[-73.92978515624995,-51.61787109374999],[-73.93950195312499,-51.26630859375005],[-74.81474609374996,-51.06289062499999],[-75.09467773437495,-50.68125],[-74.68574218749995,-50.662011718749945],[-74.77587890625003,-50.46992187499998],[-74.64448242187498,-50.360937499999984],[-74.365576171875,-50.487890625],[-74.13940429687503,-50.81777343749997],[-73.80654296875,-50.93837890625003],[-73.654443359375,-50.49267578125],[-73.97802734375003,-50.827050781249994],[-74.18559570312493,-50.485351562500014],[-73.95034179687497,-50.510546875],[-74.62958984374998,-50.19404296875],[-74.333740234375,-49.97460937499997],[-73.95859374999998,-49.994726562499984],[-74.32392578124995,-49.783398437500004],[-74.29082031249996,-49.604101562499984],[-73.83637695312493,-49.609375],[-74.09443359374993,-49.42968749999998],[-73.93496093749994,-49.02089843750001],[-74.2212890625,-49.500585937500034],[-74.36655273437503,-49.40048828124998],[-74.34101562499998,-48.59570312499998],[-74.00908203124996,-48.475],[-74.47441406249999,-48.46396484374996],[-74.58466796874998,-47.999023437500014],[-73.39106445312498,-48.14589843750001],[-73.60991210937499,-47.993945312500045],[-73.71586914062499,-47.65546875000001],[-73.94086914062498,-47.92939453125004],[-74.22705078124994,-47.96894531250001],[-74.654931640625,-47.702246093750034],[-74.5337890625,-47.567675781249974],[-74.24296874999999,-47.67929687499998],[-74.13408203125002,-47.590820312499986],[-74.48266601562497,-47.43046875],[-74.15839843749998,-47.18251953125002],[-74.31357421874998,-46.78818359374998],[-74.45419921875003,-46.76679687499997],[-74.51225585937496,-46.88515625000002],[-75.00595703125,-46.74111328124998],[-74.98417968750002,-46.51210937499995],[-75.54033203124999,-46.69873046874996],[-75.43037109374995,-46.93457031249996],[-75.70639648437498,-46.70527343749997],[-74.924462890625,-46.159667968750014],[-75.06669921874993,-45.874902343749994],[-74.15786132812497,-45.7671875],[-74.122705078125,-45.49619140625002],[-73.95717773437494,-45.40439453124998],[-73.825,-45.446875],[-74.01992187500002,-46.055859375],[-74.39296875,-46.21738281250005],[-73.96757812500002,-46.15410156250003],[-73.87871093749993,-45.846875],[-73.73525390624994,-45.81171875],[-73.70815429687502,-46.070312500000014],[-73.94863281249997,-46.533105468749966],[-73.845361328125,-46.56601562500002],[-73.59184570312493,-45.89912109375004],[-73.73076171874999,-45.47998046875],[-73.26621093749995,-45.346191406250014],[-72.933837890625,-45.45234374999997],[-73.44497070312497,-45.23818359374995],[-73.36245117187502,-44.97822265625001],[-72.73896484375001,-44.73417968750003],[-72.680078125,-44.59394531249997],[-72.66386718749999,-44.43642578124995],[-73.26508789062498,-44.16865234375001],[-73.22446289062498,-43.89794921875003],[-73.06879882812495,-43.86201171874998],[-72.99658203125,-43.63154296875001],[-73.07597656250002,-43.323632812499994],[-72.75800781249998,-43.039453125],[-72.84804687500002,-42.66914062499997],[-72.77392578125003,-42.505175781250045],[-72.63183593750003,-42.509667968749994],[-72.77324218749996,-42.257714843749994],[-72.63105468749995,-42.199804687500006],[-72.412353515625,-42.388183593750014],[-72.49941406249997,-41.98085937499999],[-72.82407226562503,-41.90878906249996],[-72.36040039062499,-41.64912109375],[-72.31826171875,-41.49902343749997],[-72.54238281250002,-41.690625],[-72.95283203124995,-41.51474609374998],[-73.24179687499995,-41.78085937500002],[-73.62402343750003,-41.77363281249997],[-73.73515625000002,-41.74248046875002],[-73.62392578125,-41.581347656250045],[-73.81074218749995,-41.51748046875001],[-73.96586914062493,-41.118261718750034],[-73.67099609375,-39.96318359374999],[-73.41040039062503,-39.78916015624998],[-73.22646484375002,-39.22441406250003],[-73.52021484375001,-38.509375],[-73.46479492187498,-38.04033203125003],[-73.66181640624998,-37.69853515625003],[-73.66240234375002,-37.341015625000026],[-73.60166015624998,-37.18847656250003],[-73.21596679687502,-37.16689453124998],[-73.11806640624997,-36.68837890625002],[-72.58735351562493,-35.759667968749994],[-72.62392578125002,-35.5857421875],[-72.22377929687494,-35.096191406250014],[-72.00283203124997,-34.16533203125],[-71.66435546875002,-33.65263671875],[-71.74296875,-33.09511718750001],[-71.45224609374998,-32.65957031250001],[-71.70893554687495,-30.62802734375002],[-71.66948242187499,-30.33037109374996],[-71.40039062499997,-30.142968749999966],[-71.31572265624996,-29.649707031250017],[-71.51923828124993,-28.926464843750026],[-71.30673828124998,-28.672460937499963],[-71.08652343749998,-27.814453124999957],[-70.92578125,-27.588671874999974],[-70.64658203124998,-26.329394531250017],[-70.71372070312498,-25.78417968749997],[-70.44536132812502,-25.17265624999999],[-70.57412109374994,-24.644335937500003],[-70.39233398437494,-23.565917968749957],[-70.59335937499995,-23.255468750000034],[-70.56318359374995,-23.057031250000023],[-70.33168945312494,-22.848632812500014],[-70.08002929687501,-21.356835937500037],[-70.19702148437494,-20.725390625],[-70.15742187499995,-19.70585937500003],[-70.41826171874999,-18.345605468750023],[-69.92636718749998,-18.206054687500014],[-69.80258789062498,-17.990234375000014],[-69.85209960937493,-17.70380859375001],[-69.68476562499995,-17.649804687500023],[-69.58642578125,-17.57324218749997],[-69.51093749999998,-17.50605468749997],[-69.31337890624997,-17.943164062500017],[-69.28232421875003,-17.96484375],[-69.09394531249993,-18.05048828125004],[-69.14545898437495,-18.14404296875],[-69.09228515624994,-18.28242187500004],[-69.02680664062493,-18.65625],[-68.97885742187503,-18.81298828125003],[-68.96831054687502,-18.967968749999983],[-68.85795898437499,-19.09335937500005],[-68.62055664062495,-19.29667968749999],[-68.54785156249997,-19.341113281249974],[-68.49199218749996,-19.381933593750034],[-68.47016601562495,-19.409960937499974],[-68.46289062499997,-19.43281250000001],[-68.57529296874998,-19.56015625000002],[-68.69829101562499,-19.721093750000037],[-68.69619140625,-19.74072265625003],[-68.57827148437494,-19.856542968750006],[-68.559375,-19.902343750000014],[-68.56069335937502,-19.96708984374996],[-68.75932617187499,-20.115527343750003],[-68.74516601562493,-20.45859375],[-68.48432617187498,-20.628417968749957],[-68.55825195312497,-20.90195312499999],[-68.197021484375,-21.30029296874997],[-68.18642578124997,-21.618554687499966],[-67.88173828124997,-22.493359375000026],[-67.87944335937496,-22.822949218750026],[-67.57993164062495,-22.89169921874999],[-67.36225585937493,-22.85517578125001],[-67.19487304687493,-22.821679687500037]]]]},"properties":{"name":"Chile","childNum":26}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[110.88876953125006,19.99194335937497],[111.01367187500003,19.65546875000001],[110.64091796875002,19.291210937499955],[110.45126953125012,18.747949218750023],[110.06738281249997,18.447558593750045],[109.51933593750007,18.21826171875003],[108.7015625,18.535253906250034],[108.66552734375003,19.304101562499994],[109.27666015625002,19.761132812500023],[109.17744140625004,19.768457031250023],[109.26347656250007,19.882666015625006],[110.1715820312501,20.053710937500057],[110.58818359375002,19.976367187500017],[110.6517578125,20.137744140625017],[110.88876953125006,19.99194335937497]]],[[[110.38515625000005,21.093164062499966],[110.52158203125006,21.083105468750063],[110.50390625000003,20.96772460937501],[110.28095703125004,21.001171874999983],[110.38515625000005,21.093164062499966]]],[[[112.64375,21.63964843750003],[112.525,21.62304687500003],[112.64765625000004,21.710253906250017],[112.64375,21.63964843750003]]],[[[112.79023437500004,21.601855468750045],[112.78203125000007,21.772265625000045],[112.86259765625002,21.75263671875004],[112.79023437500004,21.601855468750045]]],[[[118.1830078125,24.496289062499983],[118.0905273437501,24.446142578125063],[118.10380859375002,24.552343750000034],[118.1830078125,24.496289062499983]]],[[[119.82089843750006,25.45698242187504],[119.70029296875012,25.432714843750063],[119.72255859375005,25.638818359375023],[119.83837890625003,25.591064453125],[119.82089843750006,25.45698242187504]]],[[[121.2513671875,28.086425781250057],[121.13154296875004,28.062597656250006],[121.20546875,28.204394531250017],[121.2513671875,28.086425781250057]]],[[[122.29589843750003,29.96342773437499],[122.02402343750012,30.01333007812505],[121.96943359375004,30.143115234375017],[122.28447265625007,30.068017578124994],[122.29589843750003,29.96342773437499]]],[[[121.86269531250005,31.492285156249977],[121.519921875,31.549609375000017],[121.2111328125001,31.80537109375001],[121.86269531250005,31.492285156249977]]],[[[130.52695312500012,42.535400390625],[130.24667968750012,42.744824218749955],[130.24033203125006,42.891796874999955],[129.89824218750002,42.998144531250034],[129.69785156250012,42.448144531249994],[129.3136718750001,42.41357421874997],[128.92343750000006,42.038232421874966],[128.04521484375007,41.9875],[128.28925781250004,41.60742187500006],[128.14941406249997,41.38774414062496],[127.17968750000003,41.531347656250006],[126.95478515625004,41.76948242187501],[126.74306640625,41.724853515625],[125.98906250000002,40.904638671875034],[124.8893554687501,40.459814453125006],[124.36210937500002,40.004052734374994],[124.10576171875002,39.84101562499998],[123.65087890625003,39.881591796875],[122.8400390625001,39.600830078125],[121.98232421875,39.05317382812498],[121.67724609374997,39.00341796875006],[121.64990234375003,38.865087890625034],[121.16357421874997,38.73164062500001],[121.10673828125002,38.920800781249994],[121.6798828125001,39.10869140625002],[121.62763671875004,39.22016601562498],[121.81845703125006,39.38652343750002],[121.27548828125006,39.38476562500003],[121.26748046875,39.544677734375],[121.51757812499997,39.638964843750045],[121.51738281250002,39.84482421875006],[121.8009765625001,39.950537109375006],[122.27500000000012,40.541845703125034],[121.83486328125005,40.97426757812502],[121.72929687500002,40.84614257812504],[121.1745117187501,40.901269531249994],[120.47910156250006,40.23095703125003],[119.39111328125003,39.75249023437499],[118.976953125,39.182568359374955],[118.29785156249997,39.067089843749955],[118.04091796875,39.22675781249998],[117.86572265625003,39.191259765625034],[117.61669921875003,38.852880859375034],[117.5578125000001,38.625146484374994],[117.76669921875012,38.311669921874994],[118.01494140625007,38.18339843749996],[118.94003906250006,38.04277343750002],[119.08916015625007,37.70073242187496],[118.95263671875003,37.33115234374998],[119.28740234375002,37.138281250000034],[119.76054687500007,37.15507812499999],[120.31152343750003,37.62270507812505],[120.2572265625,37.67900390624996],[120.75,37.83393554687501],[121.64023437500012,37.46035156250002],[122.05664062500003,37.528906250000034],[122.66699218750003,37.40283203125003],[122.4466796875,37.06811523437503],[122.51972656250004,36.94682617187502],[122.34091796875012,36.83222656250004],[121.93271484375006,36.95947265625003],[121.05380859375006,36.61137695312499],[120.81083984375007,36.6328125],[120.89580078125007,36.44414062500002],[120.71152343750006,36.41328125000004],[120.6378906250001,36.129931640625045],[120.39306640625003,36.053857421874994],[120.32773437500006,36.228173828124994],[120.18330078125004,36.20244140624999],[120.094140625,36.11889648437503],[120.28476562500006,35.98442382812499],[119.42968749999997,35.301416015624994],[119.16533203125002,34.84882812499998],[119.20097656250002,34.748437499999966],[120.26669921875006,34.274023437500034],[120.87109374999997,33.016503906249994],[120.8532226562501,32.66137695312503],[121.34169921875005,32.42504882812503],[121.40390625000006,32.20625],[121.85634765625,31.816455078125045],[121.86630859375006,31.703564453124955],[121.68085937500004,31.71215820312503],[121.351953125,31.85878906250005],[120.97353515625,31.86938476562497],[120.52011718750006,32.10585937500002],[120.03593750000002,31.93627929687503],[120.7155273437501,31.983740234375006],[120.7877929687501,31.81977539062501],[121.66064453124997,31.319726562499994],[121.87792968750003,30.91699218750003],[121.41894531249997,30.789794921875057],[120.8214843750001,30.354638671875023],[120.44980468750006,30.38784179687505],[120.19462890625002,30.241308593750034],[120.49453125,30.303076171875006],[120.63339843750006,30.133154296875034],[121.25800781250004,30.30410156250005],[121.67792968750004,29.979101562500006],[122.08291015625005,29.870361328125057],[121.50625,29.484570312499955],[121.94121093750002,29.605908203124983],[121.91777343750007,29.13500976562497],[121.71748046875004,29.25634765625],[121.48710937500007,29.193164062500017],[121.67968749999997,28.953125],[121.54003906250003,28.931884765625],[121.6625,28.851416015625034],[121.47519531250006,28.64140625],[121.60996093750006,28.29213867187505],[121.27226562500002,28.222119140624983],[121.14570312500004,28.32666015624997],[120.95859375000006,28.037011718750023],[120.74765625000006,28.00996093750001],[120.83300781249997,27.891455078125034],[120.58750000000012,27.580761718749983],[120.60751953125012,27.41240234374996],[120.2787109375,27.097070312500023],[120.08671875000007,26.67158203125004],[119.88222656250005,26.610449218750006],[119.82421874999997,26.84638671875001],[119.71044921874997,26.728662109375023],[119.58818359375002,26.784960937500045],[119.8810546875001,26.33417968750004],[119.46308593750004,26.05468750000003],[119.13945312500007,26.12177734375001],[119.33203124999997,25.94873046875003],[119.61875000000012,26.003564453124994],[119.53945312500005,25.59125976562504],[119.6224609375,25.391162109375017],[119.180078125,25.449804687499977],[119.285546875,25.232226562500074],[118.97753906249997,25.209277343750017],[118.90908203125005,24.92890625000001],[118.63691406250004,24.835546874999977],[118.65703125000002,24.621435546874977],[118.0871093750001,24.627001953125045],[118.00595703125006,24.48198242187499],[117.84267578125005,24.47431640625004],[118.0560546875,24.24609374999997],[117.62822265625002,23.836718750000074],[117.46640625000012,23.84057617187497],[117.36767578124997,23.58862304687497],[117.29082031250007,23.71435546875],[117.08251953124997,23.578759765625023],[116.91064453124997,23.646679687499983],[116.86093750000006,23.453076171874983],[116.62939453124997,23.353857421875034],[116.69882812500006,23.277783203124983],[116.53828125000004,23.17968749999997],[116.47070312499997,22.945898437500034],[116.25185546875005,22.981347656249994],[115.85214843750006,22.801562500000045],[115.64042968750002,22.853417968750023],[115.49833984375002,22.718847656250063],[115.19580078125003,22.81728515625005],[114.85380859375007,22.616796875000063],[114.65166015625002,22.755273437500023],[114.55419921874997,22.52890625],[114.26601562500005,22.540966796874983],[114.01542968750007,22.51191406250001],[113.61962890624997,22.861425781249977],[113.6205078125,23.12749023437499],[113.51972656250004,23.102099609375074],[113.33105468749997,22.912011718749966],[113.55302734375002,22.594042968750045],[113.54912109375002,22.225195312500034],[113.14902343750012,22.075],[113.08876953125,22.207958984374983],[112.95390625000007,21.907324218750034],[112.80859374999997,21.944628906250074],[112.58632812500005,21.77685546875],[112.35966796875007,21.97802734375003],[112.30498046875002,21.74169921875003],[111.94394531250012,21.84965820312499],[111.60273437500004,21.55908203125003],[111.01689453125007,21.51171874999997],[110.56718750000002,21.21406250000001],[110.41093750000007,21.33813476562497],[110.15400390625004,20.944628906250017],[110.36542968750004,20.837597656249955],[110.31308593750012,20.67167968749999],[110.51152343750007,20.51826171875001],[110.34472656249997,20.29482421875005],[109.88251953125004,20.364062500000045],[109.96835937500006,20.448144531250023],[109.66259765625003,20.91689453125005],[109.68125000000012,21.13164062499999],[109.93076171875012,21.480566406250034],[109.6869140625,21.52460937500004],[109.56640624999997,21.690576171874994],[109.54404296875012,21.537939453125006],[109.14863281250004,21.425537109375],[109.1017578125001,21.59047851562505],[108.77167968750004,21.63046875],[108.59375,21.901025390624994],[108.47988281250005,21.904638671875006],[108.50214843750004,21.633447265624994],[108.32480468750006,21.693505859374994],[108.24628906250004,21.55839843749999],[107.97265624999997,21.507958984375023],[107.75927734374997,21.655029296875057],[107.35117187500012,21.60888671874997],[106.97099609375002,21.923925781250034],[106.66357421875003,21.97890625000005],[106.55039062500006,22.501367187499994],[106.78027343749997,22.778906250000034],[106.54179687500007,22.908349609375023],[106.2790039062501,22.857470703125045],[106.14843749999997,22.970068359375006],[105.8429687500001,22.922802734374955],[105.27539062500003,23.34521484375003],[104.86474609375003,23.136376953125023],[104.68730468750002,22.822216796874983],[104.37177734375004,22.704052734374983],[104.14306640624997,22.800146484375006],[103.94150390625006,22.540087890625045],[103.62021484375006,22.782031250000045],[103.49296875000007,22.587988281250034],[103.32666015625003,22.769775390625057],[102.98193359374997,22.4482421875],[102.47089843750004,22.75092773437501],[102.40644531250004,22.70800781249997],[102.2370117187501,22.466015624999983],[102.1759765625001,22.414648437500006],[102.12744140624997,22.379199218750045],[101.84179687500003,22.38847656249999],[101.75996093750004,22.490332031250034],[101.73876953124997,22.495263671874994],[101.70751953125003,22.486572265625],[101.67148437500006,22.462304687500023],[101.64619140625004,22.405419921874966],[101.61992187500002,22.32744140624999],[101.56787109374997,22.27636718749997],[101.52451171875006,22.25366210937497],[101.7365234375001,21.826513671874977],[101.74394531250007,21.77797851562505],[101.74726562500004,21.605761718750045],[101.72294921875007,21.31494140625003],[101.80058593750007,21.212597656249983],[101.78349609375007,21.204150390625017],[101.728125,21.156396484374994],[101.7047851562501,21.15014648437503],[101.54238281250005,21.23427734375005],[101.2814453125001,21.184130859375045],[101.24785156250007,21.197314453125045],[101.22441406250002,21.223730468750034],[101.21181640625,21.278222656250023],[101.2199218750001,21.34243164062505],[101.17539062500006,21.407519531250074],[101.19667968750005,21.522070312500063],[101.1388671875001,21.567480468749977],[101.07978515625004,21.75585937499997],[100.60458984375012,21.471777343750006],[100.14765625000004,21.480517578125017],[99.94072265625007,21.75874023437504],[99.9176757812501,22.02802734375001],[99.19296875000006,22.12597656249997],[99.50712890625002,22.959130859374994],[99.41806640625006,23.069238281250023],[98.86376953125003,23.191259765625034],[98.8322265625001,23.624365234374977],[98.67675781250003,23.905078125000045],[98.83505859375006,24.121191406250034],[98.2125,24.110644531250017],[97.56455078125012,23.911035156250023],[97.7082031250001,24.228759765625],[97.53144531250004,24.49169921875003],[97.58330078125002,24.77480468750005],[97.73789062500006,24.869873046875057],[97.8195312500001,25.251855468749994],[98.01074218749997,25.292529296875017],[98.14287109375007,25.571093750000017],[98.33378906250007,25.586767578125006],[98.65625,25.86357421874999],[98.56406250000006,26.072412109374994],[98.68554687499997,26.189355468750023],[98.7384765625001,26.785742187500006],[98.65117187500007,27.572460937499983],[98.4525390625,27.6572265625],[98.29882812499997,27.550097656250045],[98.06162109375012,28.185888671874977],[97.59921875000006,28.51704101562504],[97.53789062500002,28.510205078124983],[97.43144531250002,28.353906250000023],[97.35644531249997,28.254492187500006],[97.32158929493812,28.217097107438057],[97.3027336276825,28.08710519614969],[97.34382779482424,27.982305259167095],[97.04929369561631,27.76000444316393],[96.96494598325154,27.699301564540924],[96.19423412199573,28.04146177926422],[95.73730002295082,28.117613231051525],[95.11298892962586,27.748338353239472],[94.07167814294401,27.588707868507477],[93.61247595136224,27.323800298697016],[93.30681393470121,26.786120363519142],[92.74319481218781,26.833531317384058],[92.04974640832253,26.874866505386724],[92.07342257335648,26.915311275859864],[92.06813426293174,26.9752569185349],[92.02985139563152,27.03987087331446],[91.99856592104459,27.079255842602592],[91.99177981607339,27.100605151743654],[92.0025114452454,27.147290053160265],[92.03101585307499,27.214271359861193],[92.08387457645458,27.29090135496722],[92.04520857607581,27.364442429033787],[91.99069061380867,27.450181624174498],[91.95099838734396,27.45828799115413],[91.85276579410389,27.438593286730903],[91.74366351462741,27.442853010105477],[91.59505352446729,27.557262710287986],[91.63193359375012,27.759960937499983],[91.64189453125002,27.923242187500023],[91.36259958579089,28.02438066407592],[91.27304687500012,28.078369140625],[91.22587890625007,28.071240234374983],[91.07773437500012,27.974462890624977],[91.02080078125002,27.970068359374977],[90.71572265625,28.071728515624983],[90.63007812500004,28.078564453124955],[90.47734375000007,28.07084960937499],[90.3527343750001,28.080224609375023],[90.33310546875012,28.093994140625],[90.36298828125004,28.21650390625001],[90.34824218750006,28.24394531249999],[90.22080078125006,28.27773437500005],[90.10449218749997,28.302050781250017],[89.98105468750006,28.311181640625023],[89.8978515625,28.29414062500001],[89.81689453125003,28.25629882812501],[89.74980468750002,28.18818359375001],[89.65273437500005,28.158300781250034],[89.53691406250007,28.10742187499997],[89.4806640625001,28.059960937499994],[88.89140625000002,27.316064453124966],[88.83251953125003,27.36284179687499],[88.7648437500001,27.429882812499983],[88.74902343749997,27.521875],[88.82988281250002,27.76738281249999],[88.84882812500004,27.86865234375],[88.80371093750003,28.006933593750034],[88.57792968750002,28.093359375000034],[88.42597656250004,28.01166992187501],[88.27519531250007,27.968847656250006],[88.14111328125003,27.94892578125001],[88.10898437500006,27.933007812499966],[88.10976562500005,27.870605468750057],[87.8607421875,27.886083984375006],[87.62255859374997,27.81518554687503],[87.29072265625004,27.821923828124994],[87.14140625000002,27.838330078124955],[87.02011718750006,27.928662109374983],[86.9337890625001,27.96845703125001],[86.84238281250012,27.99916992187505],[86.750390625,28.022070312500006],[86.71962890625005,28.070654296875034],[86.69052734375006,28.09492187500001],[86.61445312500004,28.10302734374997],[86.55449218750007,28.08520507812497],[86.51689453125007,27.963525390624966],[86.40869140625003,27.928662109374983],[86.32861328124997,27.95952148437496],[86.2179687500001,28.022070312500006],[86.13701171875002,28.114355468750063],[86.07871093750006,28.08359375],[86.0641601562501,27.934716796874966],[85.99453125000005,27.910400390625],[85.95410156249997,27.92822265624997],[85.92167968750002,27.989697265624983],[85.84023437500005,28.135351562499977],[85.75947265625004,28.220654296874955],[85.67832031250012,28.277441406249977],[85.41064453125003,28.27602539062505],[85.21210937500004,28.292626953124966],[85.1224609375,28.315966796875017],[85.08857421875004,28.37226562500001],[85.121484375,28.484277343750023],[85.16015624999997,28.571875],[85.15908203125,28.592236328124983],[85.1263671875,28.602636718750063],[85.06914062500007,28.60966796874999],[84.85507812500006,28.553613281250023],[84.796875,28.560205078125023],[84.2287109375001,28.911767578124966],[84.17558593750002,29.036376953125057],[84.12783203125005,29.15629882812496],[84.10136718750002,29.21997070312497],[84.02197265624997,29.25385742187504],[83.93593750000005,29.27949218750001],[83.58349609375003,29.18359375000003],[83.15546875000004,29.612646484375034],[82.22070312500003,30.063867187500023],[82.04335937500005,30.326757812500034],[81.8548828125,30.362402343750006],[81.64189453125007,30.3875],[81.4171875000001,30.33759765625001],[81.25507812500004,30.09331054687499],[81.17714843750005,30.039892578125034],[80.98544921875006,30.23710937499999],[80.87353515625003,30.290576171875045],[80.19121093750002,30.56840820312496],[80.20712890625006,30.683740234375023],[79.92451171875004,30.888769531250034],[79.66425781250004,30.96523437499999],[79.38847656250007,31.064208984375],[79.10712890625004,31.402636718750017],[78.74355468750005,31.323779296875017],[78.7550781250001,31.55029296875],[78.69345703125006,31.740380859374994],[78.72558593750003,31.983789062500023],[78.49589843750002,32.21577148437504],[78.4552734375001,32.30034179687502],[78.41748046874997,32.466699218749994],[78.38964843749997,32.51987304687498],[78.73671875,32.55839843750002],[78.75351562500012,32.49926757812506],[78.91894531249997,32.35820312500002],[79.16992187500003,32.497216796874994],[79.14550781250003,33.00146484375006],[79.10283203125007,33.05253906249996],[79.13515625000005,33.17192382812496],[79.1125,33.22626953125001],[78.94843750000004,33.346533203125006],[78.86503906250002,33.43110351562501],[78.78378906250006,33.80878906250004],[78.72666015625006,34.013378906249955],[78.97060546875,34.22822265625004],[78.93642578125,34.35195312500002],[78.86484375000006,34.39033203125001],[78.32695312500007,34.60639648437498],[78.15849609375002,34.94648437499998],[78.07578125000006,35.13491210937502],[78.0426757812501,35.47978515625002],[77.79941406250006,35.49589843750002],[77.44648437500004,35.47558593750006],[77.29482421875005,35.508154296875034],[77.09003906250004,35.55205078124999],[76.87890625000003,35.61328125000003],[76.76689453125002,35.661718750000034],[76.72753906250003,35.67866210937504],[76.63183593749997,35.729394531249966],[76.56347656249997,35.77299804687499],[76.55126953124997,35.887060546875034],[76.50205078125006,35.87822265625002],[76.38574218750003,35.837158203125],[76.25166015625004,35.8109375],[76.17783203125012,35.810546875],[76.14785156250005,35.82900390625002],[76.07089843750006,35.983007812500034],[75.91230468750004,36.048974609374994],[75.97441406250007,36.38242187500006],[75.9518554687501,36.458105468750034],[75.9330078125,36.52158203124998],[75.840234375,36.64970703124999],[75.7721679687501,36.694921875000034],[75.6671875000001,36.741992187500045],[75.57373046874997,36.75932617187502],[75.46025390625002,36.725048828124955],[75.42421875000005,36.73823242187498],[75.37685546875,36.88369140625005],[75.34667968749997,36.913476562499966],[75.05390625000004,36.98715820312498],[74.94912109375,36.96835937500006],[74.88925781250006,36.95244140625002],[74.69218750000007,37.035742187500006],[74.60058593749997,37.03666992187502],[74.54140625,37.02216796875001],[74.52646484375006,37.03066406250005],[74.49794921875,37.057226562500034],[74.37617187500004,37.13735351562502],[74.37216796875006,37.15771484375],[74.558984375,37.23662109374999],[74.66894531250003,37.266699218750006],[74.72666015625006,37.29072265625001],[74.7389648437501,37.28564453125003],[74.76738281250002,37.249169921874966],[74.840234375,37.22504882812504],[74.89130859375004,37.231640624999955],[75.11875,37.38569335937498],[74.8942382812501,37.60141601562498],[74.81230468750002,38.46030273437498],[74.27744140625,38.659765625000034],[74.02558593750004,38.53984375000002],[73.80166015625,38.60688476562501],[73.69609375000007,38.85429687499996],[73.8052734375,38.968652343749994],[73.60732421875,39.229199218749955],[73.63632812500006,39.396679687499955],[73.63164062500007,39.44887695312502],[73.82294921875004,39.48896484375004],[73.90712890625,39.578515624999966],[73.9146484375,39.60649414062499],[73.88251953125004,39.71455078124998],[73.83974609375005,39.76284179687505],[73.8353515625,39.800146484375006],[73.85625,39.828662109375045],[73.88457031250002,39.87792968750006],[73.93876953125002,39.97880859374999],[73.99160156250005,40.04311523437502],[74.83046875,40.32851562499999],[74.80126953124997,40.428515625000045],[74.83515625000004,40.482617187499955],[74.865625,40.493505859375034],[75.0044921875,40.44951171874996],[75.11132812499997,40.4541015625],[75.24101562500002,40.48027343750002],[75.52080078125002,40.627539062500006],[75.55556640625,40.625195312499955],[75.6771484375,40.305810546874994],[75.87197265625,40.30322265625],[76.25830078124997,40.43076171875006],[76.3185546875001,40.352246093749955],[76.39638671875005,40.389794921874966],[76.4801757812501,40.44951171874996],[76.57792968750002,40.577880859375],[76.62216796875006,40.66235351562497],[76.6398437500001,40.74223632812499],[76.66113281249997,40.77963867187498],[76.70839843750005,40.818115234375],[76.82402343750002,40.982324218749966],[76.90771484374997,41.02416992187497],[76.98662109375002,41.039160156250006],[77.58173828125004,40.99277343750006],[77.71933593750012,41.024316406249994],[77.81523437500002,41.05561523437498],[77.9564453125,41.05068359375005],[78.1234375,41.07563476562498],[78.34628906250012,41.28144531249998],[78.36240234375012,41.37163085937496],[78.44287109374997,41.41752929687499],[78.742578125,41.56005859375],[79.29355468750006,41.78281249999998],[79.76611328124997,41.89887695312501],[79.84042968750012,41.99575195312502],[79.90966796875003,42.014990234375034],[80.21621093750005,42.03242187500004],[80.23515625000007,42.04345703124997],[80.24619140625012,42.05981445312503],[80.209375,42.190039062500006],[80.20224609375012,42.73447265624998],[80.53896484375005,42.873486328124955],[80.39023437500006,43.043115234374966],[80.78574218750006,43.16157226562504],[80.35527343750002,44.09726562500006],[80.48154296875006,44.71464843749999],[79.871875,44.88378906249997],[80.05917968750012,45.006445312500006],[81.69199218750012,45.34936523437497],[81.94492187500006,45.16083984375001],[82.26660156249997,45.21909179687498],[82.52148437500003,45.12548828125],[82.61162109375007,45.424267578124955],[82.31523437500002,45.59492187499998],[83.02949218750004,47.18593750000002],[84.016015625,46.97050781250002],[84.66660156250006,46.97236328125004],[84.78613281249997,46.83071289062505],[85.484765625,47.06352539062496],[85.65664062500005,47.254638671875],[85.52597656250006,47.915625],[85.7494140625,48.38505859374999],[86.54941406250012,48.52861328125002],[86.8083007812501,49.04970703125002],[87.32285156250012,49.085791015625006],[87.41669921875004,49.07661132812501],[87.5158203125001,49.122412109375006],[87.7625,49.16582031249996],[87.81425781250002,49.162304687499955],[87.87216796875012,49.000146484374966],[87.74316406250003,48.88164062499999],[87.83183593750007,48.79165039062505],[88.02792968750006,48.735595703125],[88.06005859375003,48.707177734374966],[87.9796875000001,48.55512695312498],[88.30996093750005,48.47207031250002],[88.41396484375,48.403417968750006],[88.51708984374997,48.384472656249955],[88.56679687500005,48.31743164062496],[88.57597656250007,48.220166015624955],[88.68183593750004,48.170556640624994],[88.83828125000005,48.101708984374994],[88.91777343750007,48.089013671874966],[89.04765625000007,48.002539062500034],[89.47919921875004,48.02905273437503],[89.5609375,48.00395507812496],[89.778125,47.82700195312498],[89.83134765625002,47.82329101562502],[89.91044921875007,47.844335937500034],[89.95869140625004,47.88632812499998],[90.02792968750012,47.877685546875],[90.1032226562501,47.74541015624996],[90.19101562500012,47.70209960937501],[90.31328125000007,47.67617187499999],[90.33066406250006,47.655175781249966],[90.42519531250005,47.50410156250001],[90.49619140625012,47.28515625],[90.64335937500007,47.10029296874998],[90.71552734375004,47.00385742187498],[90.7990234375001,46.98515624999999],[90.86992187500002,46.95449218750005],[90.91054687500005,46.88325195312501],[90.9857421875,46.7490234375],[90.9115234375,46.270654296874994],[90.94755859375002,46.17729492187499],[90.99677734375004,46.10498046875],[91.00175781250007,46.03579101562502],[90.6618164062501,45.525244140625006],[90.87724609375002,45.19609375000002],[91.05,45.217431640624994],[91.584375,45.07651367187498],[92.42382812499997,45.008935546874994],[92.57890625000002,45.01098632812506],[92.78789062500007,45.035742187500034],[93.51621093750012,44.944482421874994],[94.71201171875012,44.35083007812503],[95.35029296875004,44.27807617187503],[95.32558593750005,44.03935546874999],[95.52558593750004,43.953955078125006],[95.85957031250004,43.27597656249998],[96.38544921875004,42.72036132812502],[97.20566406250012,42.78979492187506],[99.46787109375012,42.568212890625034],[99.98378906250005,42.67734375000006],[100.08632812500005,42.67075195312506],[100.51904296875003,42.61679687499998],[101.09199218750004,42.55131835937496],[101.49531250000004,42.53876953124998],[101.57910156249997,42.52353515624998],[101.65996093750002,42.50004882812499],[101.97294921875002,42.21586914062502],[102.15664062500005,42.158105468749966],[102.57519531249997,42.09208984375002],[103.07285156250006,42.00595703125006],[103.7111328125001,41.75131835937506],[103.99726562500004,41.796972656250034],[104.30517578124997,41.84614257812501],[104.49824218750004,41.87700195312499],[104.49824218750004,41.65869140625],[104.86035156250003,41.64375],[104.98203125000012,41.59550781250002],[105.05058593750002,41.61591796875001],[105.1154296875001,41.66328124999998],[105.19707031250002,41.738037109375],[105.31435546875005,41.77089843750005],[105.86757812500005,41.993994140625034],[106.77001953125003,42.28872070312502],[108.17119140625002,42.44731445312502],[108.68730468750002,42.416113281250034],[109.33984374999997,42.43837890625005],[109.44316406250002,42.455957031249994],[110.40039062499997,42.77368164062497],[111.00722656250005,43.34140624999998],[111.878125,43.68017578125],[111.93173828125012,43.81494140625],[111.40224609375005,44.367285156250006],[111.89804687500006,45.064062500000034],[112.03261718750005,45.08164062500006],[112.11289062500006,45.06293945312498],[112.41132812500004,45.05820312499998],[112.49931640625002,45.01093750000004],[112.59677734375006,44.917675781249955],[112.7067382812501,44.883447265624994],[113.04941406250006,44.81035156250002],[113.3009765625001,44.79165039062502],[113.50791015625006,44.76235351562502],[113.58701171875006,44.745703125],[113.65263671875002,44.76347656249999],[113.87705078125012,44.89619140625001],[114.03027343749997,44.942578124999955],[114.08027343750004,44.97114257812501],[114.41914062500004,45.20258789062501],[114.56015625000012,45.38999023437498],[114.73876953124997,45.41962890624998],[114.91923828125007,45.378271484375006],[115.16259765624997,45.390234375000034],[115.6810546875,45.45825195312503],[116.19765625,45.739355468750006],[116.240625,45.795996093750006],[116.22910156250012,45.84575195312502],[116.21298828125012,45.88691406249998],[116.56259765625012,46.28979492187497],[116.85908203125004,46.387939453125],[117.3333984375,46.36201171875004],[117.35693359375003,46.391308593749955],[117.35634765625,46.436669921874966],[117.39218750000012,46.53759765625003],[117.40556640625007,46.57089843750006],[117.43808593750012,46.58623046874999],[117.546875,46.58828125000005],[117.74121093749997,46.51816406250006],[118.07128906249997,46.666601562500006],[118.15683593750006,46.678564453125034],[118.30869140625012,46.71704101562497],[118.40439453125006,46.70317382812499],[118.58046875,46.69189453125],[118.64873046875002,46.70166015625006],[118.72294921875007,46.69189453125],[118.8439453125001,46.76020507812498],[118.95712890625006,46.73486328124997],[119.16210937499997,46.638671875],[119.33183593750002,46.61381835937499],[119.47402343750005,46.626660156249955],[119.62021484375006,46.60395507812504],[119.70664062500006,46.60600585937502],[119.74746093750005,46.62719726562497],[119.86718750000003,46.67216796874999],[119.89785156250005,46.857812499999966],[119.71113281250004,47.15],[119.08193359375,47.654150390625034],[119.01757812500003,47.68535156249999],[118.88027343750005,47.72509765625],[118.75996093750004,47.75761718749996],[118.69052734375012,47.822265625],[118.56777343750005,47.94326171875005],[118.49843750000005,47.98398437499998],[117.76835937500002,47.98789062499998],[117.3507812500001,47.65219726562498],[117.28593750000002,47.666357421875034],[117.06972656250005,47.80639648437506],[116.95166015624997,47.836572265624966],[116.90117187500007,47.85307617187496],[116.76054687500002,47.869775390624994],[116.65195312500012,47.86450195312497],[116.51347656250007,47.839550781249955],[116.37822265625002,47.84404296874999],[116.31718750000002,47.85986328125],[116.2311523437501,47.85820312500002],[116.07480468750012,47.78955078125],[115.99384765625004,47.71132812500005],[115.89824218750002,47.68691406250005],[115.6164062500001,47.874804687500045],[115.52509765625004,48.13085937499997],[115.63945312500007,48.18623046874998],[115.785546875,48.24824218750001],[115.7965820312501,48.346337890624994],[115.7916992187501,48.455712890624994],[115.8205078125001,48.57724609375006],[116.6833007812501,49.82377929687499],[117.8734375,49.51347656250002],[118.4515625,49.84448242187503],[119.25986328125012,50.06640625000003],[119.34628906250012,50.278955078124994],[119.16367187500006,50.40600585937503],[120.06689453125003,51.60068359375006],[120.74980468750007,52.096533203125006],[120.65615234375,52.56665039062503],[120.0675781250001,52.632910156250034],[120.09453125000007,52.787207031250034],[120.98544921875012,53.28457031250002],[123.6078125,53.546533203124994],[124.81230468750002,53.133837890625045],[125.075,53.20366210937496],[125.64902343750012,53.042285156250045],[126.34169921875,52.36201171875001],[126.92480468749997,51.10014648437496],[127.30703125000005,50.70795898437501],[127.33720703125007,50.35014648437502],[127.590234375,50.20898437500003],[127.55078124999997,49.801806640625045],[127.99960937500006,49.56860351562506],[128.70400390625,49.60014648437499],[129.0651367187501,49.374658203124966],[129.49814453125012,49.38881835937502],[130.1959960937501,48.89165039062499],[130.553125,48.861181640625006],[130.5521484375,48.602490234374955],[130.80429687500012,48.34150390624998],[130.7326171875001,48.01923828124998],[130.96191406249997,47.70932617187498],[132.47626953125004,47.714990234374994],[132.7072265625001,47.94726562500006],[133.14404296875003,48.10566406249998],[133.46835937500006,48.09716796875003],[134.29335937500005,48.37343750000002],[134.66523437500004,48.25390625],[134.56601562500006,48.02250976562502],[134.75234375,47.71542968749998],[134.1676757812501,47.30219726562501],[133.86132812500003,46.24775390625004],[133.43642578125,45.60468750000004],[133.18603515625003,45.49482421875004],[133.1134765625001,45.130712890625006],[132.93603515624997,45.029931640624994],[131.85185546875002,45.32685546875001],[131.44687500000012,44.984033203124966],[130.9816406250001,44.844335937500034],[131.2552734375,44.07158203124999],[131.25732421875003,43.378076171874994],[131.06855468750004,42.90224609375005],[130.42480468749997,42.72705078124997],[130.52695312500012,42.535400390625]]],[[[113.9977539062501,22.210498046875045],[113.83886718749997,22.24169921875003],[114.04394531250003,22.33339843750005],[113.9977539062501,22.210498046875045]]],[[[114.01542968750007,22.51191406250001],[114.26601562500005,22.540966796874983],[114.26796875,22.295556640624966],[113.93730468750002,22.364990234375],[114.01542968750007,22.51191406250001]]],[],[[[118.4074218750001,24.522119140624994],[118.43271484375006,24.414355468750074],[118.29511718750004,24.436328125000017],[118.4074218750001,24.522119140624994]]],[[[121.00878906249997,22.62036132812497],[120.83984375000003,21.925],[120.2328125,22.71791992187505],[120.0724609375001,23.149755859375006],[120.13212890625007,23.652929687500034],[121.040625,25.032812500000034],[121.59365234375,25.275341796874983],[121.92900390625002,24.973730468749977],[121.39746093750003,23.172509765625023],[121.00878906249997,22.62036132812497]]]]},"properties":{"name":"China","childNum":15}},{"geometry":{"type":"Polygon","coordinates":[[[-5.262304687499977,10.319677734374991],[-4.72177734374992,9.756542968750026],[-4.625830078125006,9.713574218749969],[-4.526611328124943,9.723486328125034],[-4.406201171874926,9.647998046875031],[-4.332226562499955,9.645703125],[-4.18115234375,9.78173828125],[-3.790625,9.917187499999983],[-3.581152343749977,9.924316406250014],[-3.289697265625023,9.882226562500051],[-3.223535156249937,9.895458984374997],[-3.160693359374932,9.849169921874974],[-3.095800781249949,9.752099609375009],[-3.042626953124937,9.72089843750004],[-2.988281249999972,9.687353515624963],[-2.900878906249943,9.534619140625026],[-2.875146484374937,9.500927734374997],[-2.816748046874949,9.425830078124974],[-2.766601562499943,9.424707031250009],[-2.7171875,9.457128906250048],[-2.695849609374989,9.481347656250009],[-2.686132812499977,9.43173828125002],[-2.705761718749983,9.351367187499989],[-2.74692382812492,9.04511718750004],[-2.689892578124955,9.02509765625004],[-2.649218750000017,8.956591796875031],[-2.600390625000017,8.800439453125023],[-2.505859375000028,8.208740234375],[-2.538281249999955,8.171630859374986],[-2.61171875,8.147558593749963],[-2.619970703125006,8.12109375],[-2.600976562499937,8.082226562499983],[-2.613378906249977,8.046679687500017],[-2.668847656249994,8.022216796875014],[-2.789746093749955,7.931933593750003],[-2.959082031249977,7.454541015624997],[-3.227148437499977,6.749121093749991],[-2.998291015624972,5.711328125000051],[-2.793652343749955,5.600097656250028],[-2.754980468749977,5.432519531249994],[-2.815673828125,5.153027343749997],[-3.168701171874972,5.203027343749966],[-3.199951171874943,5.3544921875],[-3.347558593749994,5.13066406249996],[-4.120166015625017,5.309716796875023],[-4.60888671875,5.235888671875003],[-4.037207031249977,5.23012695312498],[-4.899707031249932,5.138330078125023],[-5.282373046874994,5.210253906250017],[-5.36752929687492,5.15078125],[-5.061816406249989,5.13066406249996],[-5.913769531249926,5.0109375],[-7.544970703124989,4.351318359375],[-7.574658203124983,4.572314453124989],[-7.585058593749977,4.916748046875],[-7.39990234375,5.550585937499989],[-7.454394531249989,5.841308593749972],[-7.636132812499994,5.90771484375],[-7.730371093749994,5.919042968749991],[-7.800927734374994,6.038916015624991],[-7.833251953125,6.076367187499983],[-7.855517578125017,6.150146484375],[-7.888623046875011,6.234863281250028],[-7.981591796874937,6.2861328125],[-8.287109375,6.31904296875004],[-8.587890625,6.490527343749989],[-8.324511718749989,6.920019531249991],[-8.408740234374989,7.411816406249997],[-8.429980468749989,7.601855468749989],[-8.351757812499926,7.590576171875],[-8.231884765624955,7.556738281250034],[-8.205957031249994,7.590234375000023],[-8.115429687499926,7.760742187500028],[-8.126855468749937,7.867724609374974],[-8.00986328124992,8.078515625000023],[-8.048583984375,8.169726562500045],[-8.140625,8.181445312500031],[-8.217138671874949,8.219677734375011],[-8.256103515625,8.253710937500017],[-8.244140624999943,8.407910156249983],[-8.236962890624994,8.455664062500034],[-7.953125,8.477734375],[-7.823583984374977,8.467675781249994],[-7.738964843749983,8.375244140624986],[-7.696093749999932,8.375585937499977],[-7.71958007812492,8.643017578125011],[-7.950976562499989,8.786816406249997],[-7.938183593749983,8.97978515624996],[-7.902099609375,9.017089843750014],[-7.777978515624937,9.080859375000031],[-7.799804687499943,9.115039062499989],[-7.839404296875017,9.151611328124972],[-7.918066406249949,9.188525390625031],[-7.896191406249955,9.415869140624991],[-8.136962890624972,9.49570312499999],[-8.155175781249937,9.973193359375017],[-7.990625,10.1625],[-7.661132812500028,10.427441406250011],[-7.385058593749989,10.340136718749989],[-7.01708984375,10.143261718750026],[-6.950341796874994,10.342333984374989],[-6.693261718750023,10.34946289062502],[-6.669335937499937,10.39218750000002],[-6.69199218749992,10.512011718750017],[-6.686132812499977,10.578027343750051],[-6.676367187499949,10.633789062500043],[-6.654150390624949,10.65644531250004],[-6.482617187499983,10.561230468749997],[-6.250244140625,10.717919921875037],[-6.190673828124943,10.400292968749994],[-6.192626953124972,10.369433593750003],[-6.241308593749949,10.279199218750009],[-6.238378906249977,10.26162109374998],[-6.117187499999972,10.201904296874986],[-6.034570312499937,10.194824218750057],[-5.907568359375006,10.307226562500034],[-5.896191406249983,10.354736328125028],[-5.843847656249977,10.389550781250023],[-5.694287109374983,10.433203125000034],[-5.556591796874983,10.439941406249986],[-5.382275390625011,10.314013671875003],[-5.262304687499977,10.319677734374991]]]},"properties":{"name":"Côte d\'Ivoire","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[15.480078125,7.523779296874991],[15.206738281250011,7.206152343749991],[14.7392578125,6.27978515625],[14.43115234375,6.038720703124994],[14.616894531250011,5.865136718749994],[14.56298828125,5.279931640624994],[14.73125,4.602392578124991],[15.063574218750006,4.284863281249997],[15.128710937500017,3.826904296875],[16.0634765625,2.90859375],[16.183398437500017,2.270068359374989],[16.059375,1.676220703124997],[15.741601562500023,1.914990234374997],[14.902441406250006,2.012304687499991],[14.578906250000017,2.199121093749994],[13.293554687500006,2.161572265624997],[13.2203125,2.256445312499991],[11.558984375000023,2.302197265624997],[11.348437500000017,2.299707031249994],[11.328710937500006,2.167431640624997],[11.096582031250023,2.16748046875],[10.790917968750023,2.16757812499999],[9.979882812500023,2.167773437499989],[9.8701171875,2.21328125],[9.8369140625,2.242382812499997],[9.830371093750017,2.275488281249991],[9.826171875,2.297802734374997],[9.80078125,2.304443359375],[9.82177734375,2.539257812499997],[9.948437500000011,3.079052734374997],[9.672070312500011,3.53759765625],[9.765722656250006,3.623828124999989],[9.642382812500017,3.611767578124997],[9.55615234375,3.798046875],[9.739648437500023,3.852929687499994],[9.639941406250017,3.96533203125],[9.688867187500023,4.056396484375],[9.483691406250017,4.066113281249997],[9.42529296875,3.922314453124997],[9.000097656250006,4.091601562499989],[8.918261718750017,4.553759765624989],[8.660351562500011,4.670996093749991],[8.65625,4.516357421875],[8.53955078125,4.571875],[8.715625,5.046875],[8.997167968750006,5.917724609375],[9.490234375,6.418652343749997],[9.779882812500006,6.76015625],[9.820703125000023,6.783935546875],[9.874218750000011,6.803271484374989],[10.038867187500017,6.92138671875],[10.1435546875,6.996435546874991],[10.167773437500017,6.959179687499997],[10.185546875,6.912792968749997],[10.205468750000023,6.8916015625],[10.293066406250006,6.876757812499989],[10.413183593750006,6.877734374999989],[10.60625,7.063085937499991],[10.954199218750006,6.7765625],[11.032519531250017,6.697900390624994],[11.1064453125,6.457714843749997],[11.1533203125,6.437939453124997],[11.2373046875,6.450537109374991],[11.401757812500023,6.533935546875],[11.551660156250023,6.697265625],[11.580078125,6.888867187499997],[11.657519531250017,6.9515625],[11.861425781250006,7.11640625],[11.767382812500017,7.272265624999989],[11.809179687500006,7.345068359374991],[12.016015625000023,7.589746093749994],[12.2333984375,8.282324218749991],[12.403515625000011,8.595556640624991],[12.582714843750011,8.624121093749991],[12.651562500000011,8.667773437499989],[12.7822265625,8.81787109375],[12.806542968750023,8.886621093749994],[12.875683593750011,9.303515624999989],[12.929492187500017,9.42626953125],[13.19873046875,9.563769531249989],[13.269921875000023,10.036181640624989],[13.41455078125,10.171435546874989],[13.535351562500011,10.60507812499999],[13.699902343750011,10.873144531249991],[13.89208984375,11.140087890624997],[13.9814453125,11.211865234374997],[14.056738281250006,11.245019531249994],[14.143261718750011,11.24853515625],[14.202343750000011,11.268164062499991],[14.559765625000011,11.492285156249991],[14.619726562500006,12.150976562499991],[14.518945312500023,12.298242187499994],[14.272851562500023,12.356494140624989],[14.184863281250017,12.447216796874997],[14.06396484375,13.07851562499999],[14.244824218750011,13.07734375],[14.461718750000017,13.021777343749989],[14.847070312500023,12.502099609374994],[15.08125,11.845507812499989],[15.029882812500006,11.11367187499999],[15.132226562500023,10.648486328124989],[15.276074218750011,10.357373046874997],[15.654882812500006,10.0078125],[14.243261718750006,9.979736328125],[13.977246093750011,9.691552734374994],[14.332324218750017,9.20351562499999],[15.1162109375,8.557324218749997],[15.5498046875,7.787890624999989],[15.480078125,7.523779296874991]]]},"properties":{"name":"Cameroon","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[27.4033203125,5.109179687499989],[27.7880859375,4.644677734374994],[28.19208984375001,4.350244140624994],[28.427539062500017,4.324169921874997],[28.72705078125,4.504980468749991],[29.224902343750017,4.391894531249989],[29.469628906250023,4.61181640625],[29.676855468750006,4.5869140625],[30.194921875,3.98193359375],[30.50830078125,3.835693359375],[30.586718750000017,3.62421875],[30.757226562500023,3.62421875],[30.83857421875001,3.49072265625],[30.90644531250001,3.408935546875],[30.754003906250006,3.041796874999989],[30.8466796875,2.847021484374991],[30.728613281250006,2.455371093749989],[31.176367187500006,2.270068359374989],[31.252734375000017,2.044580078124994],[29.94287109375,0.819238281249994],[29.934472656250023,0.4990234375],[29.717675781250023,0.098339843749997],[29.576953125000017,-1.387890625000011],[29.196582031250017,-1.719921875000011],[29.13154296875001,-2.195117187500003],[28.876367187500023,-2.400292968750009],[28.893945312500023,-2.635058593750003],[29.01435546875001,-2.72021484375],[29.224414062500017,-3.053515625],[29.211816406250023,-3.833789062500003],[29.403222656250023,-4.449316406250006],[29.404199218750023,-4.496679687500006],[29.32568359375,-4.835644531250011],[29.32343750000001,-4.898828125],[29.3427734375,-4.983105468750011],[29.542382812500023,-5.499804687500003],[29.594140625000023,-5.65078125],[29.60703125,-5.72265625],[29.59638671875001,-5.775976562500006],[29.490820312500006,-5.965429687500006],[29.480078125,-6.025],[29.50625,-6.172070312500011],[29.540820312500017,-6.313867187500009],[29.590625,-6.394433593750009],[29.70966796875001,-6.616894531250011],[29.798144531250017,-6.69189453125],[29.961816406250023,-6.803125],[30.10625,-6.9150390625],[30.212695312500017,-7.037890625],[30.31318359375001,-7.203710937500006],[30.40673828125,-7.460644531250011],[30.75117187500001,-8.193652343750003],[28.89814453125001,-8.485449218750006],[28.869531250000023,-8.785839843750011],[28.400683593750017,-9.224804687500011],[28.60419921875001,-9.678808593750006],[28.6455078125,-10.550195312500009],[28.383398437500006,-11.566699218750003],[28.482519531250006,-11.812109375],[29.064355468750023,-12.348828125000011],[29.48554687500001,-12.41845703125],[29.508203125000023,-12.228222656250011],[29.79511718750001,-12.155468750000011],[29.775195312500017,-13.438085937500006],[29.55419921875,-13.248925781250009],[29.20185546875001,-13.398339843750009],[29.014257812500006,-13.368847656250011],[28.730078125,-12.925488281250011],[28.550878906250006,-12.836132812500011],[28.412890625000017,-12.51806640625],[27.573828125,-12.22705078125],[27.1591796875,-11.579199218750006],[26.824023437500017,-11.965234375],[26.025976562500006,-11.89013671875],[25.349414062500017,-11.623046875],[25.28876953125001,-11.21240234375],[24.3779296875,-11.417089843750006],[24.36572265625,-11.1298828125],[23.96650390625001,-10.871777343750011],[23.901171875000017,-10.983203125],[23.833886718750023,-11.013671875],[23.463964843750006,-10.969335937500006],[23.076269531250006,-11.087890625],[22.814746093750017,-11.080273437500011],[22.56103515625,-11.055859375000011],[22.486132812500017,-11.08671875],[22.392968750000023,-11.159472656250003],[22.31494140625,-11.198632812500009],[22.27880859375,-11.194140625],[22.226171875,-11.121972656250009],[22.203515625000023,-10.829492187500009],[22.307031250000023,-10.691308593750009],[22.19775390625,-10.040625],[21.81318359375001,-9.46875],[21.905371093750006,-8.693359375],[21.806054687500023,-7.32861328125],[21.751074218750006,-7.30546875],[21.190332031250023,-7.284960937500003],[20.910937500000017,-7.281445312500011],[20.607812500000023,-7.277734375],[20.558398437500017,-7.244433593750003],[20.53583984375001,-7.182812500000011],[20.536914062500017,-7.121777343750011],[20.598730468750006,-6.93515625],[20.59003906250001,-6.919921875],[20.482226562500017,-6.915820312500003],[20.190039062500006,-6.9462890625],[19.997460937500023,-6.976464843750009],[19.87519531250001,-6.986328125],[19.527636718750017,-7.144433593750009],[19.483789062500023,-7.279492187500011],[19.479882812500023,-7.47216796875],[19.371679687500006,-7.655078125],[19.369921875000017,-7.70654296875],[19.3408203125,-7.966601562500003],[19.142675781250006,-8.00146484375],[18.944433593750006,-8.00146484375],[18.56269531250001,-7.9359375],[18.0087890625,-8.107617187500011],[17.643359375000017,-8.090722656250009],[17.57958984375,-8.099023437500009],[16.984765625000023,-7.257421875],[16.91943359375,-6.933984375],[16.813085937500006,-6.772558593750006],[16.742968750000017,-6.618457031250003],[16.697265625,-6.164257812500011],[16.537109375,-5.9658203125],[16.431445312500017,-5.900195312500003],[16.315234375000017,-5.865625],[13.978515625,-5.857226562500003],[13.346484375000017,-5.863378906250006],[13.184375,-5.85625],[12.452929687500017,-6.00048828125],[12.213671875000017,-5.758691406250009],[12.484570312500011,-5.71875],[12.451464843750017,-5.071484375000011],[12.502734375000017,-5.036914062500003],[12.573535156250017,-4.99658203125],[12.59619140625,-4.978417968750009],[12.8296875,-4.736621093750003],[12.947460937500011,-4.6953125],[13.057324218750011,-4.651074218750011],[13.07275390625,-4.634765625],[13.08740234375,-4.601953125],[13.136621093750023,-4.604296875],[13.414941406250023,-4.83740234375],[13.659570312500023,-4.721484375],[13.717089843750017,-4.454492187500009],[13.94091796875,-4.484667968750003],[14.358300781250023,-4.299414062500006],[14.449804687500006,-4.449511718750003],[14.365429687500011,-4.585546875],[14.410742187500006,-4.83125],[14.707910156250023,-4.881738281250009],[15.990039062500017,-3.766210937500006],[16.217382812500006,-3.0302734375],[16.21533203125,-2.177832031250006],[16.54072265625001,-1.840136718750003],[16.8798828125,-1.225878906250003],[17.752832031250023,-0.549023437500011],[18.072167968750023,2.01328125],[18.49091796875001,2.924414062499991],[18.6103515625,3.478417968749994],[18.594140625000023,4.346240234374989],[19.06855468750001,4.891406249999989],[19.5009765625,5.127490234374989],[19.806542968750023,5.089306640624997],[20.226367187500017,4.829638671874989],[20.55810546875,4.462695312499989],[22.422167968750017,4.134960937499997],[22.864550781250017,4.723876953125],[23.41718750000001,4.663134765624989],[24.31982421875,4.994140625],[25.065234375000017,4.967431640624994],[25.52509765625001,5.31210937499999],[26.822070312500017,5.062402343749994],[27.071875,5.199755859374989],[27.4033203125,5.109179687499989]]]},"properties":{"name":"Dem. Rep. Congo","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[18.6103515625,3.478417968749994],[18.49091796875001,2.924414062499991],[18.072167968750023,2.01328125],[17.752832031250023,-0.549023437500011],[16.8798828125,-1.225878906250003],[16.54072265625001,-1.840136718750003],[16.21533203125,-2.177832031250006],[16.217382812500006,-3.0302734375],[15.990039062500017,-3.766210937500006],[14.707910156250023,-4.881738281250009],[14.410742187500006,-4.83125],[14.365429687500011,-4.585546875],[14.449804687500006,-4.449511718750003],[14.358300781250023,-4.299414062500006],[13.94091796875,-4.484667968750003],[13.717089843750017,-4.454492187500009],[13.659570312500023,-4.721484375],[13.414941406250023,-4.83740234375],[13.136621093750023,-4.604296875],[13.08740234375,-4.601953125],[13.07275390625,-4.634765625],[13.048046875000011,-4.619238281250006],[12.971386718750011,-4.5517578125],[12.881054687500011,-4.445117187500003],[12.84814453125,-4.428906250000011],[12.50146484375,-4.5875],[12.018359375000017,-5.004296875],[11.777539062500011,-4.565820312500009],[11.130175781250017,-3.916308593750003],[11.234472656250006,-3.690820312500009],[11.504296875000023,-3.5203125],[11.685742187500011,-3.68203125],[11.8798828125,-3.665917968750009],[11.934179687500006,-3.318554687500011],[11.715429687500006,-3.176953125000011],[11.760156250000023,-2.983105468750011],[11.537792968750011,-2.83671875],[11.60546875,-2.342578125],[12.064453125,-2.41259765625],[12.446386718750006,-2.329980468750009],[12.43212890625,-1.928906250000011],[12.590429687500006,-1.826855468750011],[12.793554687500006,-1.931835937500011],[12.991992187500017,-2.313378906250009],[13.464941406250006,-2.395410156250009],[13.733789062500023,-2.138476562500003],[13.886914062500011,-2.465429687500006],[13.993847656250011,-2.490625],[14.199804687500006,-2.354199218750011],[14.162890625000017,-2.217578125],[14.383984375000011,-1.890039062500009],[14.47412109375,-0.573437500000011],[13.860058593750011,-0.203320312500011],[13.949609375000023,0.353808593749989],[14.32421875,0.62421875],[14.429882812500011,0.901464843749991],[14.180859375000011,1.370214843749991],[13.851367187500017,1.41875],[13.21630859375,1.2484375],[13.172167968750017,1.78857421875],[13.293554687500006,2.161572265624997],[14.578906250000017,2.199121093749994],[14.902441406250006,2.012304687499991],[15.741601562500023,1.914990234374997],[16.059375,1.676220703124997],[16.183398437500017,2.270068359374989],[16.468554687500017,2.831738281249997],[16.610742187500023,3.50537109375],[17.491601562500023,3.687304687499989],[18.160937500000017,3.499804687499989],[18.474414062500017,3.622998046874997],[18.6103515625,3.478417968749994]]]},"properties":{"name":"Congo","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-71.31972656249997,11.861914062500048],[-71.95810546875,11.66640625],[-72.24848632812501,11.196435546875009],[-72.690087890625,10.835839843749994],[-72.86933593750001,10.49125976562496],[-73.00654296874998,9.789160156250006],[-73.36621093749997,9.194140625000017],[-73.05839843749999,9.259570312500031],[-72.79638671874997,9.10898437499999],[-72.66542968749994,8.62758789062498],[-72.39033203124995,8.287060546874969],[-72.47197265624996,7.524267578124991],[-72.20771484374995,7.37026367187498],[-72.00664062499993,7.032617187500023],[-71.12861328124993,6.98671875],[-70.73715820312503,7.090039062499997],[-70.12919921874999,6.95361328125],[-69.42714843749997,6.123974609374997],[-68.47177734375,6.156542968749974],[-67.85917968749999,6.289892578124963],[-67.48198242187499,6.18027343750002],[-67.47387695312503,5.929980468750003],[-67.82490234374995,5.270458984375026],[-67.85527343750002,4.506884765624989],[-67.66162109375,3.864257812499986],[-67.3111328125,3.41586914062502],[-67.85908203124998,2.793603515624994],[-67.61870117187496,2.793603515624994],[-67.21083984375,2.390136718750043],[-66.87602539062499,1.223046875000037],[-67.082275390625,1.185400390625006],[-67.11923828124998,1.703613281249986],[-67.40043945312499,2.116699218750028],[-67.93623046874998,1.748486328124969],[-68.19379882812495,1.987011718749983],[-68.25595703125,1.845507812500017],[-68.17656249999999,1.719824218749991],[-69.84858398437493,1.708740234375043],[-69.85214843750003,1.05952148437504],[-69.31181640624999,1.050488281249969],[-69.15332031249994,0.65878906250002],[-69.47211914062498,0.72993164062504],[-70.05390624999993,0.578613281250028],[-70.07050781249993,-0.13886718750004],[-69.63398437500001,-0.50927734375],[-69.40024414062498,-1.194921874999977],[-69.66904296875003,-2.667675781249997],[-69.94819335937498,-4.200585937500009],[-69.96591796875003,-4.2359375],[-70.16752929687499,-4.050195312500009],[-70.24028320312496,-3.882714843749994],[-70.2984375,-3.844238281249972],[-70.33950195312502,-3.814355468750009],[-70.73510742187497,-3.781542968749989],[-70.09584960937494,-2.658203125000014],[-70.16474609374995,-2.639843750000011],[-70.24443359375002,-2.606542968749977],[-70.29462890624995,-2.552539062499989],[-70.57587890624995,-2.418261718749989],[-70.64799804687499,-2.405761718750014],[-70.70537109374996,-2.341992187499983],[-70.91455078125003,-2.218554687499974],[-70.96855468750002,-2.206835937499989],[-71.02729492187498,-2.225781250000026],[-71.11337890625003,-2.245410156250031],[-71.19638671874998,-2.313085937499963],[-71.39697265625,-2.334082031249977],[-71.55947265624997,-2.224218749999977],[-71.75253906249995,-2.15273437499998],[-71.80273437499997,-2.166308593749989],[-71.86728515624998,-2.227734374999983],[-71.932470703125,-2.288671874999963],[-71.98427734375,-2.326562499999952],[-72.21845703125001,-2.400488281250006],[-72.94111328124998,-2.394042968750028],[-72.9896484375,-2.33974609374998],[-73.15449218749993,-2.278222656249966],[-73.19697265624995,-1.830273437500011],[-73.49628906249993,-1.69306640625004],[-73.66430664062497,-1.248828124999946],[-73.86318359374997,-1.19667968749998],[-73.92695312500001,-1.125195312499983],[-73.98681640625003,-1.098144531249986],[-74.05439453124995,-1.028613281250031],[-74.18076171875,-0.997753906249955],[-74.24638671874999,-0.970605468750023],[-74.28388671874998,-0.927832031250006],[-74.33442382812498,-0.85087890624996],[-74.41787109375,-0.580664062499977],[-74.46518554687498,-0.517675781250034],[-74.51386718749993,-0.470117187500023],[-74.555078125,-0.429882812499997],[-74.61635742187494,-0.370019531249966],[-74.691650390625,-0.335253906249989],[-74.75537109375003,-0.298632812499989],[-74.78046874999998,-0.24453125],[-74.80175781249997,-0.200097656249994],[-75.13837890624998,-0.050488281249969],[-75.28447265624999,-0.10654296875002],[-75.77666015624999,0.08925781249998],[-76.27060546874998,0.439404296874997],[-76.49462890624997,0.23544921875002],[-77.396337890625,0.393896484374963],[-77.46767578124997,0.636523437500017],[-77.702880859375,0.837841796874997],[-78.1806640625,0.968554687499974],[-78.85966796874996,1.455371093750031],[-79.02543945312499,1.623681640625037],[-78.79296874999994,1.848730468749963],[-78.576904296875,1.773779296874977],[-78.59169921875,2.356640624999969],[-78.41689453125,2.483496093749963],[-78.06665039062494,2.509130859375034],[-77.81357421875,2.716357421874974],[-77.076806640625,3.913281250000026],[-77.26352539062503,3.893212890625023],[-77.27802734374995,4.058496093750023],[-77.35820312499996,3.944726562500037],[-77.40874023437496,4.24775390625004],[-77.52070312499993,4.212792968750023],[-77.35351562499997,4.398291015624977],[-77.28632812499995,4.72172851562496],[-77.373291015625,5.323974609375],[-77.53442382812497,5.537109374999986],[-77.24926757812497,5.780175781250037],[-77.46943359374995,6.176757812500014],[-77.368798828125,6.575585937499994],[-77.90117187499999,7.229345703125048],[-77.76191406249995,7.698828125000034],[-77.53828124999995,7.56625976562502],[-77.19599609374995,7.972460937500003],[-77.47851562499994,8.498437500000037],[-77.37421874999993,8.65830078125002],[-76.85185546875002,8.09047851562498],[-76.924658203125,7.973193359374974],[-76.78657226562493,7.931591796875026],[-76.7720703125,8.310546875000043],[-76.92045898437496,8.573730468750014],[-76.27685546875,8.989111328124991],[-76.02724609374997,9.365771484374989],[-75.63935546874998,9.450439453125014],[-75.680029296875,9.729785156249989],[-75.53857421874997,10.205175781250034],[-75.708349609375,10.143408203124963],[-75.44599609374995,10.610888671874989],[-74.84458007812498,11.109716796875006],[-74.330224609375,10.996679687499991],[-74.51625976562497,10.8625],[-74.40087890625,10.76523437499999],[-74.14291992187503,11.320849609375031],[-73.31337890624997,11.295751953124991],[-72.275,11.88925781250002],[-72.13574218749994,12.188574218749977],[-71.71455078124993,12.41997070312496],[-71.26210937499997,12.335302734375034],[-71.13730468750003,12.04633789062504],[-71.31972656249997,11.861914062500048]]]},"properties":{"name":"Colombia","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[43.788671875,-12.307031250000023],[43.85898437500006,-12.368261718749977],[43.66367187500006,-12.342871093749949],[43.63134765624997,-12.247070312499972],[43.788671875,-12.307031250000023]]],[[[44.476367187500074,-12.08154296875],[44.504980468750006,-12.356542968749991],[44.220117187499994,-12.171386718750014],[44.476367187500074,-12.08154296875]]],[[[43.46582031249997,-11.901269531249966],[43.226660156250006,-11.75185546874998],[43.2990234375001,-11.374511718750028],[43.39296875000005,-11.408593749999952],[43.46582031249997,-11.901269531249966]]]]},"properties":{"name":"Comoros","childNum":3}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-24.308251953124966,14.856298828124991],[-24.44052734374992,14.834814453124963],[-24.496875,14.980273437500017],[-24.329492187499937,15.019482421875011],[-24.308251953124966,14.856298828124991]]],[[[-23.18212890624997,15.136767578125017],[-23.210253906250017,15.32353515625006],[-23.119335937499955,15.26840820312502],[-23.18212890624997,15.136767578125017]]],[[[-23.444238281249994,15.00795898437498],[-23.5046875,14.916113281250006],[-23.70537109374999,14.96132812499998],[-23.74809570312499,15.328515625],[-23.444238281249994,15.00795898437498]]],[[[-22.917724609375,16.237255859374955],[-22.69262695312497,16.169042968750006],[-22.710107421874994,16.043359374999966],[-22.95927734374996,16.045117187499983],[-22.917724609375,16.237255859374955]]],[[[-24.08769531249999,16.62250976562501],[-24.03271484374997,16.57202148437503],[-24.243066406250023,16.599414062500017],[-24.32236328124992,16.49311523437504],[-24.398095703124966,16.61840820312497],[-24.08769531249999,16.62250976562501]]],[[[-22.888330078124966,16.659082031249994],[-22.980615234374937,16.700878906249983],[-22.93291015624999,16.84101562500004],[-22.888330078124966,16.659082031249994]]],[[[-24.88706054687495,16.81811523437497],[-25.09306640624999,16.83251953125],[-24.936474609374983,16.92211914062503],[-24.88706054687495,16.81811523437497]]],[[[-25.169824218749994,16.94648437500001],[-25.308300781249955,16.93583984374999],[-25.337109374999955,17.091015624999983],[-25.03466796875,17.176464843749983],[-24.979687499999983,17.09472656250003],[-25.169824218749994,16.94648437500001]]]]},"properties":{"name":"Cape Verde","childNum":8}},{"geometry":{"type":"Polygon","coordinates":[[[-83.6419921875,10.917236328125],[-83.346826171875,10.315380859374997],[-82.77841796874999,9.66953125],[-82.56357421874999,9.57666015625],[-82.56923828125,9.55820312499999],[-82.58652343749999,9.538818359375],[-82.64409179687499,9.505859375],[-82.801025390625,9.591796875],[-82.843994140625,9.57080078125],[-82.86015624999999,9.511474609375],[-82.88896484374999,9.481005859374989],[-82.925048828125,9.469042968749989],[-82.93984375,9.449169921874997],[-82.94033203125,9.060107421874989],[-82.88134765625,9.055859375],[-82.78305664062499,8.990283203124989],[-82.741162109375,8.951708984374989],[-82.72783203124999,8.916064453124989],[-82.91704101562499,8.740332031249991],[-82.855712890625,8.635302734374989],[-82.84477539062499,8.489355468749991],[-82.86162109374999,8.45351562499999],[-83.02734375,8.337744140624991],[-82.879345703125,8.070654296874991],[-83.12333984374999,8.353076171874989],[-83.16240234374999,8.588183593749989],[-83.4697265625,8.706835937499989],[-83.29150390625,8.406005859375],[-83.54375,8.445849609374989],[-83.73408203125,8.614453125],[-83.613720703125,8.804052734374991],[-83.73691406249999,9.150292968749994],[-84.58159179687499,9.568359375],[-84.71494140624999,9.8994140625],[-85.23564453124999,10.242089843749994],[-85.2365234375,10.107373046874997],[-84.88642578125,9.820947265624994],[-85.07705078125,9.60195312499999],[-85.31455078124999,9.8109375],[-85.62485351562499,9.902441406249991],[-85.84965820312499,10.292041015624989],[-85.667236328125,10.745019531249994],[-85.90800781249999,10.897558593749991],[-85.7443359375,11.06210937499999],[-85.5841796875,11.189453125],[-84.9091796875,10.9453125],[-84.6341796875,11.045605468749997],[-83.91928710937499,10.7353515625],[-83.71293945312499,10.785888671875],[-83.6419921875,10.917236328125]]]},"properties":{"name":"Costa Rica","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-82.56176757812503,21.571679687500023],[-82.959619140625,21.441308593750023],[-83.18378906250001,21.59345703125004],[-82.97358398437498,21.592285156250057],[-83.08251953124997,21.791406250000023],[-82.99121093750003,21.942724609375034],[-82.71455078124998,21.890283203125023],[-82.56176757812503,21.571679687500023]]],[[[-77.66899414062493,21.951953125000045],[-77.91855468749998,22.088085937499983],[-77.63369140624994,22.054003906250074],[-77.66899414062493,21.951953125000045]]],[[[-77.87939453125,22.127539062500034],[-78.04165039062502,22.201269531250034],[-77.99921874999998,22.298730468749994],[-77.87939453125,22.127539062500034]]],[[[-81.83745117187499,23.163037109374955],[-81.26235351562497,23.156835937500034],[-81.14462890624998,23.054931640625057],[-80.65014648437494,23.10307617187499],[-80.36489257812502,22.943408203125074],[-79.82026367187498,22.887011718750045],[-79.27568359374999,22.407617187499994],[-78.68647460937493,22.366845703125023],[-77.63681640624995,21.79736328125],[-77.49711914062502,21.78833007812503],[-77.58315429687497,21.889257812499977],[-77.49726562499995,21.871630859375045],[-77.14414062499995,21.643603515625017],[-77.36616210937498,21.612646484375034],[-77.25288085937498,21.483496093750006],[-77.0986328125,21.589013671875023],[-76.86743164062497,21.330419921875006],[-75.72294921874996,21.111035156249983],[-75.59580078125,20.99467773437499],[-75.72456054687493,20.71455078125004],[-74.882568359375,20.65063476562497],[-74.51313476562495,20.384570312500045],[-74.16748046874997,20.292187499999955],[-74.15371093750002,20.168554687500006],[-75.11640624999995,19.901416015625017],[-75.151611328125,20.008349609375045],[-75.29047851562495,19.893115234375017],[-76.15844726562497,19.98974609374997],[-77.715087890625,19.85546874999997],[-77.10380859374999,20.407519531250017],[-77.22958984374995,20.64375],[-78.11635742187497,20.761865234374994],[-78.49077148437493,21.05371093750003],[-78.72768554687497,21.592724609374955],[-79.35742187500003,21.58515625000001],[-80.23134765625,21.872167968750063],[-80.48544921874998,22.1234375],[-81.03564453124997,22.073583984375063],[-81.18549804687495,22.26796875000005],[-81.284375,22.109423828125074],[-81.84941406249993,22.21367187499999],[-82.077734375,22.3876953125],[-81.71035156250002,22.496679687500006],[-81.83881835937498,22.672460937500034],[-82.73803710937497,22.689257812500074],[-83.37963867187503,22.222998046875034],[-83.90073242187495,22.17011718750001],[-84.03095703124993,21.94311523437503],[-84.502587890625,21.776171875000045],[-84.50136718750002,21.930273437499977],[-84.88720703125003,21.856982421875074],[-84.32636718749998,22.074316406250034],[-84.36127929687498,22.37890625],[-84.04492187500003,22.666015625000057],[-83.25781249999997,22.967578125000017],[-81.83745117187499,23.163037109374955]]]]},"properties":{"name":"Cuba","childNum":4}},{"geometry":{"type":"Polygon","coordinates":[[[-68.75107421874999,12.059765625],[-68.9951171875,12.141845703125],[-69.15888671875,12.380273437499994],[-68.75107421874999,12.059765625]]]},"properties":{"name":"Curaçao","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-81.36953124999997,19.34887695312497],[-81.10712890624995,19.305175781250057],[-81.40478515624994,19.278417968750006],[-81.36953124999997,19.34887695312497]]],[[[-79.823388671875,19.711914062500057],[-79.90620117187501,19.702539062499994],[-79.74228515625,19.757128906250017],[-79.823388671875,19.711914062500057]]]]},"properties":{"name":"Cayman Is.","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[34.004492187500006,35.065234375],[33.47578125000001,35.000341796875],[33.3837890625,35.1626953125],[32.91953125,35.087841796875],[32.71269531250002,35.171044921874994],[32.8798828125,35.180566406249994],[32.94160156250001,35.390429687499996],[33.60761718750001,35.354150390624994],[34.55605468750002,35.662060546875],[33.941992187500006,35.292041015624996],[34.004492187500006,35.065234375]]]},"properties":{"name":"N. Cyprus","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[32.71269531250002,35.171044921874994],[32.91953125,35.087841796875],[33.3837890625,35.1626953125],[33.47578125000001,35.000341796875],[34.004492187500006,35.065234375],[34.05019531250002,34.98837890625],[33.69941406250001,34.969873046874994],[33.007910156250006,34.569580078125],[32.44902343750002,34.729443359375],[32.31718750000002,34.9533203125],[32.30097656250001,35.082958984375],[32.71269531250002,35.171044921874994]]]},"properties":{"name":"Cyprus","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[14.809375,50.858984375],[14.895800781250017,50.861376953124996],[14.98291015625,50.886572265625],[14.99375,51.01435546875],[16.007226562500023,50.611621093749996],[16.2822265625,50.655615234375],[16.419726562500017,50.573632812499994],[16.210351562500023,50.423730468749994],[16.63916015625,50.1021484375],[16.989648437500023,50.2369140625],[16.88007812500001,50.427050781249996],[17.41523437500001,50.254785156249994],[17.702246093750006,50.307177734374996],[17.627050781250006,50.11640625],[17.874804687500017,49.972265625],[18.0283203125,50.03525390625],[18.562402343750023,49.879345703125],[18.83222656250001,49.510791015624996],[18.160937500000017,49.257373046874996],[18.0859375,49.06513671875],[17.75849609375001,48.888134765625],[17.135644531250023,48.841064453125],[16.953125,48.598828125],[16.543554687500006,48.796240234375],[16.057226562500006,48.754785156249994],[15.066796875000023,48.997851562499996],[14.691308593750023,48.59921875],[14.049121093750017,48.602490234375],[13.814746093750017,48.766943359375],[13.769921875000023,48.815966796874996],[13.684960937500023,48.876708984375],[13.547656250000017,48.95966796875],[13.440722656250017,48.95556640625],[13.401171875000017,48.977587890624996],[12.916699218750011,49.33046875],[12.68115234375,49.414501953125],[12.390527343750023,49.739648437499994],[12.5125,49.87744140625],[12.09921875,50.310986328125],[12.134863281250006,50.3109375],[12.1748046875,50.288378906249996],[12.231152343750011,50.244873046875],[12.27734375,50.181445312499996],[12.3056640625,50.205712890624994],[12.549023437500011,50.393408203125],[13.016406250000017,50.490380859374994],[13.18115234375,50.510498046875],[14.369042968750023,50.898730468749996],[14.319726562500023,51.03779296875],[14.545703125000017,50.993945312499996],[14.559667968750006,50.954931640625],[14.59521484375,50.918603515624994],[14.623828125000017,50.91474609375],[14.613574218750017,50.85556640625],[14.658203125,50.8326171875],[14.723339843750011,50.814697265625],[14.766503906250023,50.818310546875],[14.797460937500006,50.842333984374996],[14.809375,50.858984375]]]},"properties":{"name":"Czech Rep.","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[14.1982421875,53.919042968750034],[13.92578125,53.879052734374966],[13.827734375,54.12724609374999],[14.1982421875,53.919042968750034]]],[[[13.709179687500011,54.382714843749994],[13.707324218750074,54.281152343749994],[13.190039062500034,54.32563476562501],[13.336816406249994,54.697119140625006],[13.65761718750008,54.55957031249997],[13.709179687500011,54.382714843749994]]],[[[9.739746093750028,54.82553710937498],[10.022167968750011,54.673925781250006],[9.86865234375,54.47246093749999],[10.731542968750006,54.31625976562506],[11.013378906250068,54.37915039062497],[11.008593750000074,54.18115234374997],[10.810742187500068,54.075146484374955],[10.917773437500045,53.99531250000004],[11.39960937500004,53.94462890625002],[12.111328125,54.168310546875006],[12.57539062500004,54.467382812500006],[13.028613281250017,54.411035156249994],[13.448046875000017,54.14086914062503],[13.724218750000063,54.153222656249966],[13.865527343750074,53.85336914062498],[14.258886718750006,53.729638671874994],[14.298730468750051,53.55644531249999],[14.41455078125,53.28349609374996],[14.412304687500011,53.216748046874955],[14.410937500000074,53.19902343749999],[14.368554687500051,53.105566406250034],[14.293164062500068,53.026757812499966],[14.138867187500068,52.93286132812503],[14.128613281250011,52.87822265625002],[14.253710937500017,52.78251953124996],[14.514062500000023,52.645605468750034],[14.619433593750017,52.52851562499998],[14.569726562499994,52.431103515624955],[14.554589843750023,52.35966796874996],[14.573925781250068,52.31416015625001],[14.615625,52.277636718750045],[14.679882812500068,52.25],[14.752539062500034,52.08183593750002],[14.601660156250034,51.832373046875006],[14.738671875000051,51.62714843750004],[14.7109375,51.54492187499997],[14.724707031250063,51.523876953124955],[14.90595703125004,51.463330078124955],[14.935546875000028,51.435351562500045],[14.9638671875,51.095117187499994],[14.917480468750057,51.00874023437498],[14.814257812499989,50.871630859375045],[14.809375,50.858984375000034],[14.797460937500034,50.84233398437502],[14.766503906250051,50.81831054687501],[14.72333984375004,50.81469726562497],[14.658203125,50.832617187500006],[14.613574218750045,50.85556640625006],[14.623828125000017,50.91474609375004],[14.595214843750057,50.91860351562502],[14.559667968750006,50.954931640625034],[14.545703124999989,50.99394531249999],[14.319726562500051,51.037792968749955],[14.36904296875008,50.89873046874996],[13.18115234375,50.510498046875],[13.016406250000017,50.490380859374994],[12.549023437500011,50.393408203125034],[12.3056640625,50.205712890624994],[12.27734375,50.18144531250002],[12.231152343749983,50.24487304687497],[12.174804687500057,50.28837890624996],[12.134863281250006,50.31093750000002],[12.099218750000034,50.31098632812504],[12.089843749999972,50.30175781250003],[12.089746093750051,50.2685546875],[12.294598214285761,50.13608119419641],[12.5125,49.87744140625],[12.390527343750051,49.739648437499994],[12.68115234375,49.41450195312501],[12.91669921875004,49.33046875000002],[13.401171875000074,48.97758789062499],[13.440722656250045,48.95556640625003],[13.547656250000074,48.95966796874998],[13.684960937500051,48.87670898437506],[13.769921875000051,48.81596679687502],[13.814746093750017,48.76694335937498],[13.802929687500011,48.74750976562501],[13.798828124999972,48.62167968750006],[13.785351562499983,48.58745117187502],[13.486621093750074,48.58183593750002],[13.471679687500028,48.57182617187502],[13.459863281250023,48.564550781250034],[13.409375,48.39414062500006],[13.322851562500006,48.33125],[13.215234375000023,48.301904296874994],[12.760351562500063,48.10698242187499],[12.95351562500008,47.890625],[12.897656250000068,47.721875],[13.054101562500051,47.655126953125034],[13.047949218750034,47.57915039062502],[13.031542968750074,47.50800781250001],[13.01435546875004,47.478076171875045],[12.968066406250017,47.475683593750006],[12.878906250000057,47.506445312500034],[12.809375,47.542187499999955],[12.782812500000034,47.56416015624998],[12.781152343750051,47.590429687500006],[12.796191406249989,47.60703125],[12.771386718750023,47.63940429687503],[12.685839843750074,47.66933593750002],[12.209277343750074,47.71826171875003],[12.196875,47.709082031250034],[12.203808593750011,47.64672851562503],[12.185644531250063,47.61953125],[11.041992187500028,47.39311523437496],[10.98085937499999,47.39814453125001],[10.893945312500051,47.470458984375],[10.870605468750028,47.500781250000045],[10.873046874999972,47.52021484375001],[10.741601562500023,47.52412109375001],[10.65869140625,47.547216796875006],[10.482812500000051,47.54179687499996],[10.439453125000028,47.55156249999999],[10.403906250000063,47.41699218750003],[10.369140625,47.366064453125034],[10.18300781250008,47.27880859375003],[10.200292968750063,47.36342773437505],[10.066308593750023,47.39335937500002],[10.064575892857171,47.42369419642856],[10.059863281250045,47.44907226562498],[10.034082031250023,47.47358398437501],[9.971582031249994,47.50532226562498],[9.839160156250017,47.55229492187496],[9.748925781250023,47.575537109375006],[9.524023437500034,47.52421875000002],[8.572656250000023,47.775634765625],[8.435742187500011,47.73134765625002],[8.403417968750006,47.687792968750045],[8.413281250000068,47.66269531249998],[8.451757812500006,47.65180664062498],[8.552343750000063,47.65913085937498],[8.56708984375004,47.65190429687502],[8.57050781250004,47.63779296874998],[8.55947265625008,47.62402343750003],[8.477636718750034,47.61269531250002],[8.454003906249994,47.59619140625003],[7.615625,47.59272460937504],[7.616601562500023,48.15678710937502],[8.134863281250006,48.97358398437498],[7.450585937500051,49.152197265625034],[6.735449218750006,49.16059570312498],[6.344335937500006,49.45273437499998],[6.4873046875,49.798486328124994],[6.204882812500017,49.915136718750034],[6.13818359375,49.97431640625001],[6.10976562500008,50.034375],[6.116503906250045,50.120996093749966],[6.340917968750006,50.451757812500034],[5.993945312500017,50.75043945312504],[6.048437500000034,50.90488281250006],[5.857519531250034,51.030126953125006],[6.129980468750034,51.14741210937501],[6.198828125000034,51.45],[5.948730468750057,51.80268554687501],[6.800390625,51.96738281249998],[6.724511718749994,52.080224609374966],[7.035156250000057,52.38022460937498],[6.748828125000074,52.464013671874994],[6.710742187500045,52.61787109374998],[7.033007812500045,52.65136718749997],[7.197265625000028,53.28227539062499],[7.074316406250034,53.477636718750006],[7.285253906250034,53.68134765625001],[8.00927734375,53.69072265624999],[8.108496093750063,53.46767578125002],[8.245214843750006,53.44531249999997],[8.333886718750051,53.606201171875],[8.495214843750063,53.39423828124998],[8.618945312500045,53.875],[9.20556640625,53.85595703124997],[9.783984375000074,53.554638671874955],[9.31201171875,53.859130859375],[8.92041015625,53.96533203125006],[8.906640625000023,54.26079101562502],[8.625781250000017,54.35395507812501],[8.951855468750011,54.46757812499996],[8.670312500000023,54.903417968750034],[9.739746093750028,54.82553710937498]]],[[[8.307714843750034,54.786962890625034],[8.451464843750017,55.05537109374998],[8.3798828125,54.89985351562501],[8.629589843750068,54.891748046874966],[8.307714843750034,54.786962890625034]]]]},"properties":{"name":"Germany","childNum":4}},{"geometry":{"type":"Polygon","coordinates":[[[43.24599609375002,11.499804687499989],[42.92275390625002,10.999316406249989],[42.557714843750006,11.080761718749997],[41.79824218750002,10.98046875],[41.79267578125001,11.68603515625],[42.378515625,12.46640625],[42.40859375000002,12.494384765625],[42.45,12.521337890624991],[42.47939453125002,12.513623046874997],[42.703710937500006,12.380322265624997],[42.76748046875002,12.4228515625],[42.825292968750006,12.5693359375],[42.86591796875001,12.622802734375],[42.88330078125,12.621289062499997],[43.00566406250002,12.662304687499997],[43.11669921875,12.70859375],[43.353515625,12.367041015624991],[43.38027343750002,12.091259765624997],[42.64003906250002,11.560107421874989],[42.52177734375002,11.572167968749994],[42.58378906250002,11.496777343749997],[43.04277343750002,11.588476562499991],[43.24599609375002,11.499804687499989]]]},"properties":{"name":"Djibouti","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-61.281689453125,15.2490234375],[-61.37539062499999,15.227294921875],[-61.45810546874999,15.633105468750003],[-61.277246093749994,15.526708984374991],[-61.281689453125,15.2490234375]]]},"properties":{"name":"Dominica","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[11.361425781250006,54.891650390625045],[11.739550781250017,54.80742187500002],[11.765917968750074,54.67944335937506],[11.457421875000023,54.628857421874955],[11.035546875000051,54.77309570312505],[11.058593750000028,54.940576171874966],[11.361425781250006,54.891650390625045]]],[[[12.549218750000051,54.96577148437504],[12.11884765625004,54.91440429687506],[12.274023437500034,55.064111328124994],[12.549218750000051,54.96577148437504]]],[[[10.061230468750068,54.88637695312502],[9.80625,54.90600585937503],[9.78125,55.06904296875001],[10.061230468750068,54.88637695312502]]],[[[10.734082031250011,54.750732421875],[10.621679687500006,54.851416015625006],[10.95107421875008,55.15620117187501],[10.734082031250011,54.750732421875]]],[[[15.087695312500017,55.021875],[14.684179687500063,55.10224609375004],[14.765332031250068,55.296728515625034],[15.132617187500017,55.14453125000003],[15.087695312500017,55.021875]]],[[[10.645117187500006,55.60981445312498],[10.785253906250034,55.13339843749998],[10.44277343750008,55.04877929687498],[9.988769531250028,55.163183593750006],[9.860644531250045,55.515478515625034],[10.645117187500006,55.60981445312498]]],[[[12.665722656250068,55.596533203125006],[12.550878906250034,55.55625],[12.59921875,55.68022460937502],[12.665722656250068,55.596533203125006]]],[[[12.56875,55.785058593749966],[12.215039062500011,55.46650390624998],[12.413085937500028,55.28618164062502],[12.089941406250006,55.18813476562505],[12.050390625000034,54.81533203125002],[11.8623046875,54.77260742187502],[11.653808593750057,55.186914062499966],[11.286328125000068,55.20444335937498],[10.978906250000051,55.721533203125006],[11.322265625000028,55.752539062500006],[11.627734375000074,55.95688476562498],[11.819726562500023,55.69765625000002],[11.86640625000004,55.968164062499966],[12.218945312499983,56.11865234374997],[12.578710937500006,56.06406250000006],[12.56875,55.785058593749966]]],[[[11.052148437500051,57.25253906250006],[10.873828125000045,57.26225585937499],[11.174511718750011,57.322900390624994],[11.052148437500051,57.25253906250006]]],[[[9.739746093750028,54.82553710937498],[8.670312500000023,54.903417968750034],[8.61591796875004,55.41821289062503],[8.132128906250074,55.59980468749998],[8.16396484375008,56.60688476562498],[8.671679687500045,56.49565429687496],[8.88808593750008,56.73505859374998],[9.06708984375004,56.79384765625005],[9.196386718750006,56.70166015625],[9.2548828125,57.01171875000003],[8.992773437499977,57.01611328125003],[8.771972656250028,56.72529296875004],[8.468359375,56.66455078125],[8.284082031250023,56.85234374999999],[8.618554687500051,57.11127929687498],[9.43359375,57.17431640625003],[9.96230468750008,57.580957031249994],[10.609960937500034,57.73691406249998],[10.282714843750057,56.620507812499994],[10.926171875000051,56.44326171875002],[10.753417968750028,56.24199218749999],[10.31875,56.212890625],[10.18300781250008,55.86518554687504],[9.903710937500023,55.84282226562502],[10.02363281250004,55.76142578125004],[9.591113281250017,55.49321289062502],[9.670996093750063,55.26640624999999],[9.453710937500006,55.03955078125006],[9.732324218750023,54.96801757812506],[9.739746093750028,54.82553710937498]]]]},"properties":{"name":"Denmark","childNum":10,"cp":[10.2768332,56.1773879]}},{"geometry":{"type":"Polygon","coordinates":[[[-71.647216796875,19.195947265624994],[-71.746484375,19.285839843749997],[-71.71147460937499,19.486572265625],[-71.75742187499999,19.688183593749997],[-71.779248046875,19.718164062499994],[-71.6673828125,19.8486328125],[-70.95415039062499,19.913964843749994],[-70.19384765625,19.63803710937499],[-69.95683593749999,19.671875],[-69.739404296875,19.29921875],[-69.23247070312499,19.27182617187499],[-69.60595703125,19.206494140624997],[-69.62363281249999,19.117822265624994],[-68.684765625,18.90478515625],[-68.33916015624999,18.611523437499997],[-68.68740234375,18.21494140624999],[-68.9349609375,18.408007812500003],[-69.27451171874999,18.43984375],[-69.770654296875,18.443554687499997],[-70.479931640625,18.21728515625],[-70.644677734375,18.336230468750003],[-71.02783203125,18.273193359375],[-71.43896484375,17.63559570312499],[-71.63173828125,17.773632812499997],[-71.768310546875,18.03916015624999],[-71.76376953124999,18.20395507812499],[-71.737255859375,18.270800781250003],[-71.7619140625,18.34130859375],[-71.87255859375,18.416210937499997],[-71.940380859375,18.512597656249994],[-72.000390625,18.597900390625],[-71.98686523437499,18.6103515625],[-71.86650390624999,18.614160156249994],[-71.74321289062499,18.73291015625],[-71.72705078125,18.80322265625],[-71.733642578125,18.856396484374997],[-71.80712890625,18.987011718749997],[-71.647216796875,19.195947265624994]]]},"properties":{"name":"Dominican Rep.","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[8.207617187500006,36.518945312499994],[8.348730468750006,36.36796875],[8.318066406250011,35.654931640624994],[8.31640625,35.403125],[8.35986328125,35.299609375],[8.394238281250011,35.203857421875],[8.312109375,35.084619140624994],[8.27685546875,34.9794921875],[8.24560546875,34.73408203125],[7.513867187500011,34.080517578125],[7.534375,33.717919921874994],[7.877246093750017,33.172119140625],[8.1125,33.055322265624994],[8.333398437500023,32.543603515624994],[9.044042968750006,32.07236328125],[9.160253906250006,31.621337890625],[9.224023437500023,31.373681640624994],[9.51875,30.229394531249994],[9.310253906250011,30.115234375],[9.805273437500006,29.176953125],[9.916015625,27.785693359374996],[9.74755859375,27.330859375],[9.883203125000023,26.630810546874997],[9.491406250000011,26.333740234375],[9.4482421875,26.067138671875],[10.000683593750011,25.332080078125003],[10.255859375,24.591015625],[10.395898437500023,24.485595703125],[10.686132812500006,24.55136718749999],[11.507617187500017,24.314355468749994],[11.967871093750006,23.517871093750003],[7.481738281250017,20.873095703125003],[5.836621093750011,19.479150390624994],[4.227636718750006,19.142773437499997],[3.3564453125,18.986621093750003],[3.119726562500006,19.103173828124994],[3.255859375,19.4109375],[3.130273437500023,19.85019531249999],[1.685449218750023,20.378369140624997],[1.610644531250017,20.555566406249994],[1.165722656250011,20.817431640625003],[1.1455078125,21.102246093749997],[-1.947900390624994,23.124804687500003],[-4.822607421874977,24.99560546875],[-8.683349609375,27.2859375],[-8.683349609375,27.656445312499997],[-8.683349609375,27.900390625],[-8.659912109375,28.718603515625],[-7.485742187499994,29.392236328124994],[-7.427685546874983,29.425],[-7.142431640624977,29.619580078124997],[-6.855566406249977,29.601611328124996],[-6.755126953125,29.583837890625],[-6.635351562499977,29.568798828124997],[-6.597753906249977,29.578955078125],[-6.520556640624989,29.659863281249997],[-6.479736328125,29.820361328124996],[-6.00429687499999,29.83125],[-5.448779296874989,29.956933593749994],[-5.293652343749983,30.058642578124996],[-5.180126953124983,30.166162109374994],[-4.96826171875,30.465380859374996],[-4.778515624999983,30.552392578124994],[-4.529150390624977,30.625537109374996],[-4.322851562499977,30.698876953124994],[-4.148779296874977,30.8095703125],[-3.626904296874983,31.000927734374997],[-3.833398437499994,31.197802734374996],[-3.837109374999983,31.512353515624994],[-3.768164062499977,31.68955078125],[-3.700244140624989,31.700097656249994],[-3.604589843749977,31.686767578125],[-3.439794921874977,31.704541015624997],[-3.017382812499989,31.834277343749996],[-2.988232421874983,31.87421875],[-2.930859374999983,32.042529296874996],[-2.863427734374994,32.07470703125],[-1.275341796874983,32.089013671874994],[-1.16259765625,32.399169921875],[-1.111035156249983,32.552294921874996],[-1.188232421875,32.60849609375],[-1.29638671875,32.675683593749994],[-1.352148437499977,32.703369140625],[-1.45,32.784814453124994],[-1.510009765625,32.87763671875],[-1.550732421874983,33.073583984375],[-1.67919921875,33.318652343749996],[-1.795605468749983,34.751904296875],[-2.131787109374983,34.970849609374994],[-2.190771484374977,35.02978515625],[-2.219628906249994,35.10419921875],[-1.673632812499989,35.18310546875],[-0.426123046874977,35.8615234375],[-0.048242187499994,35.8328125],[0.312207031250011,36.162353515625],[0.9716796875,36.4439453125],[2.593359375,36.60068359375],[2.972851562500011,36.784472656249996],[3.779003906250011,36.89619140625],[4.758105468750017,36.896337890625],[5.29541015625,36.648242187499996],[6.486523437500011,37.085742187499996],[6.927539062500017,36.91943359375],[7.238476562500011,36.968505859375],[7.204296875000011,37.0923828125],[7.910449218750017,36.856347656249994],[8.576562500000023,36.93720703125],[8.601269531250011,36.833935546875],[8.207617187500006,36.518945312499994]]]},"properties":{"name":"Algeria","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-80.131591796875,-2.973144531249957],[-80.27294921875003,-2.995898437499974],[-80.22368164062502,-2.753125],[-80.08076171874995,-2.668847656249966],[-79.90903320312495,-2.725585937499972],[-80.131591796875,-2.973144531249957]]],[[[-90.42392578125,-1.339941406250034],[-90.51953124999994,-1.299121093749974],[-90.47719726562494,-1.22099609374996],[-90.42392578125,-1.339941406250034]]],[[[-89.41889648437498,-0.911035156249966],[-89.60859374999998,-0.888574218750009],[-89.28784179687503,-0.689843750000023],[-89.41889648437498,-0.911035156249966]]],[[[-90.33486328125,-0.771582031249977],[-90.54213867187502,-0.676464843749955],[-90.53168945312493,-0.581445312499966],[-90.26938476562498,-0.48466796874996],[-90.19272460937498,-0.658789062500006],[-90.33486328125,-0.771582031249977]]],[[[-91.42597656249995,-0.460839843749994],[-91.61074218749994,-0.44394531250002],[-91.64667968749998,-0.284472656249946],[-91.46015625000001,-0.255664062500031],[-91.42597656249995,-0.460839843749994]]],[[[-90.57392578124993,-0.333984375],[-90.8677734375,-0.271386718750037],[-90.78037109374998,-0.160449218749989],[-90.57392578124993,-0.333984375]]],[[[-91.27216796874998,0.025146484374986],[-90.799658203125,-0.752050781249991],[-90.90551757812497,-0.94052734375002],[-91.13105468750001,-1.019628906249977],[-91.41904296874998,-0.996679687500006],[-91.49541015624999,-0.860937499999977],[-91.120947265625,-0.559082031250028],[-91.36918945312493,-0.287207031249977],[-91.42885742187502,-0.023388671874955],[-91.59682617187497,0.002099609374994],[-91.36137695312496,0.125830078124977],[-91.27216796874998,0.025146484374986]]],[[[-78.90922851562502,1.252783203124977],[-78.99169921875003,1.293212890625043],[-78.89980468749997,1.359765625],[-78.90922851562502,1.252783203124977]]],[[[-75.28447265624999,-0.10654296875002],[-75.62626953124999,-0.122851562499974],[-75.63203125000001,-0.157617187500037],[-75.56059570312502,-0.200097656249994],[-75.49106445312498,-0.24833984374996],[-75.42470703124997,-0.408886718749983],[-75.259375,-0.59013671874996],[-75.24960937499998,-0.951855468750026],[-75.34819335937499,-0.966796874999957],[-75.38012695312503,-0.94023437499996],[-75.40805664062503,-0.92431640625],[-75.42041015624997,-0.962207031250003],[-75.570556640625,-1.53125],[-76.08979492187501,-2.133105468749974],[-76.6791015625,-2.562597656249991],[-77.860595703125,-2.981640625000011],[-78.240380859375,-3.472558593750009],[-78.345361328125,-3.397363281249966],[-78.64799804687499,-4.248144531250006],[-78.68603515625003,-4.562402343749994],[-78.86152343749998,-4.665039062499943],[-78.90761718749997,-4.714453124999977],[-78.92578125,-4.770703124999983],[-78.91420898437497,-4.818652343749974],[-78.919189453125,-4.858398437499986],[-78.97539062499999,-4.873242187499997],[-78.99526367187497,-4.908007812499974],[-79.03330078124998,-4.96914062499999],[-79.07626953125003,-4.990625],[-79.18666992187497,-4.958203124999983],[-79.26811523437493,-4.957617187499949],[-79.33095703124997,-4.92783203125002],[-79.39941406249997,-4.840039062499983],[-79.45576171874998,-4.766210937499949],[-79.50190429687495,-4.670605468750011],[-79.51616210937493,-4.539160156249963],[-79.57768554687496,-4.50058593750002],[-79.638525390625,-4.454882812500031],[-79.71098632812502,-4.467578124999946],[-79.79726562500002,-4.47636718749996],[-79.8451171875,-4.445898437499977],[-79.962890625,-4.390332031250026],[-80.06352539062499,-4.327539062500023],[-80.13955078125002,-4.296093750000011],[-80.19746093750001,-4.311035156249943],[-80.293359375,-4.416796875],[-80.38349609374998,-4.46367187499996],[-80.424169921875,-4.461425781250028],[-80.47856445312499,-4.430078125000037],[-80.48847656249995,-4.393652343749991],[-80.44384765625003,-4.335839843750023],[-80.35288085937495,-4.208496093750014],[-80.453759765625,-4.205175781249963],[-80.48847656249995,-4.165527343749972],[-80.49345703124999,-4.119140625000014],[-80.510009765625,-4.06953125000004],[-80.49013671874994,-4.010058593750003],[-80.43720703125001,-3.978613281249991],[-80.30327148437499,-4.005078124999969],[-80.26689453124993,-3.948828124999963],[-80.23051757812499,-3.924023437499969],[-80.19414062499996,-3.905859375],[-80.24375,-3.576757812500006],[-80.32465820312498,-3.387890625],[-79.96333007812501,-3.15771484375],[-79.72988281249997,-2.579101562499972],[-79.842138671875,-2.0673828125],[-79.92558593749996,-2.548535156249969],[-80.03017578124994,-2.556738281249949],[-80.00664062499993,-2.353808593750003],[-80.28471679687502,-2.706738281249955],[-80.93217773437493,-2.269140624999977],[-80.76059570312498,-1.934570312500028],[-80.90239257812499,-1.078906249999974],[-80.55390624999998,-0.847949218749989],[-80.45546875,-0.585449218749986],[-80.282373046875,-0.620507812500023],[-80.48227539062503,-0.368261718749963],[-80.046142578125,0.155371093750048],[-80.08828124999997,0.78476562500002],[-78.89965820312503,1.20625],[-78.85966796874996,1.455371093750031],[-78.1806640625,0.968554687499974],[-77.702880859375,0.837841796874997],[-77.46767578124997,0.636523437500017],[-77.396337890625,0.393896484374963],[-76.49462890624997,0.23544921875002],[-76.27060546874998,0.439404296874997],[-75.77666015624999,0.08925781249998],[-75.28447265624999,-0.10654296875002]]]]},"properties":{"name":"Ecuador","childNum":9}},{"geometry":{"type":"Polygon","coordinates":[[[34.24531250000001,31.208300781249996],[34.904296875,29.47734375],[34.736425781250006,29.27060546875],[34.39970703125002,28.01601562499999],[34.22011718750002,27.764306640624994],[33.76025390625,28.04765625],[33.24775390625001,28.567724609375],[32.56572265625002,29.973974609375],[32.35976562500002,29.630664062499996],[32.89824218750002,28.565234375],[33.54707031250001,27.898144531249997],[33.5498046875,27.607373046874997],[33.84931640625001,27.184912109375],[33.959082031250006,26.6490234375],[35.19414062500002,24.475146484375003],[35.78388671875001,23.937792968750003],[35.54082031250002,23.920654296875],[35.50439453125,23.779296875],[35.697851562500006,22.946191406249994],[36.22968750000001,22.628808593749994],[36.87138671875002,21.996728515624994],[31.434472656250023,21.995849609375],[31.486132812500017,22.14780273437499],[31.400292968750023,22.202441406250003],[31.260644531250023,22.00229492187499],[31.092675781250023,21.994873046875],[28.036425781250017,21.995361328125],[24.980273437500017,21.995849609375],[24.980273437500017,25.5888671875],[24.980273437500017,29.181884765625],[24.703222656250006,30.201074218749994],[24.96142578125,30.678515625],[24.85273437500001,31.334814453125],[25.150488281250006,31.654980468749997],[25.382226562500023,31.51279296875],[25.89326171875001,31.620898437499996],[27.248046875,31.377880859374997],[27.5400390625,31.212695312499996],[28.51484375000001,31.050439453124994],[29.072070312500017,30.830273437499997],[29.929785156250006,31.227490234374997],[30.22265625,31.2583984375],[30.395117187500006,31.4576171875],[30.92353515625001,31.566845703124997],[30.56298828125,31.4169921875],[31.001757812500017,31.462792968749994],[31.082910156250023,31.603320312499996],[31.5244140625,31.458251953125],[31.888964843750017,31.54140625],[32.13603515625002,31.341064453125],[31.8921875,31.482470703124996],[31.77109375,31.292578125],[32.10175781250001,31.092822265624996],[32.281835937500006,31.200878906249997],[32.21621093750002,31.29375],[32.60332031250002,31.06875],[33.66650390625,31.130419921874996],[34.19814453125002,31.322607421875],[34.24531250000001,31.208300781249996]]]},"properties":{"name":"Egypt","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[40.141210937500006,15.696142578125034],[40.399023437500006,15.579882812500045],[39.975195312500006,15.612451171875023],[39.94746093750004,15.696142578125034],[40.07050781250004,15.676611328125034],[39.93994140625003,15.744531250000023],[39.9567382812501,15.889404296875057],[40.141210937500006,15.696142578125034]]],[[[40.07646484375002,16.082421875000023],[40.11005859375004,15.985742187500051],[39.99609375000003,16.04267578125001],[40.07646484375002,16.082421875000023]]],[[[40.938574218750006,13.983105468749997],[40.82011718750002,14.111669921874991],[40.22148437500002,14.431152343749972],[39.531835937500006,14.53671875],[39.198046875000074,14.479394531250037],[39.1354492187501,14.581884765625034],[39.07421874999997,14.628222656249974],[39.02382812499999,14.628222656249974],[38.99570312500006,14.586865234374983],[38.81201171875003,14.482324218750009],[38.50439453124997,14.42441406250002],[38.43144531250002,14.428613281249994],[38.221484375000074,14.649658203124986],[38.002539062500006,14.737109375000045],[37.94345703125006,14.810546875],[37.884179687499994,14.852294921874972],[37.82031250000003,14.708496093749986],[37.70839843750005,14.45722656250004],[37.64843750000003,14.32255859375006],[37.571191406249994,14.149072265624966],[37.546777343749994,14.143847656249974],[37.507226562499994,14.156396484375037],[37.257226562499994,14.453759765625051],[37.024511718750006,14.271972656250057],[36.81191406250005,14.315039062500034],[36.67910156250005,14.307568359375026],[36.542382812499994,14.25820312499999],[36.52431640625005,14.256835937499986],[36.492285156250006,14.544335937500023],[36.470800781250006,14.736474609375009],[36.448144531249994,14.940087890625009],[36.42675781249997,15.132080078125043],[36.566015625,15.362109375],[36.9137695312501,16.296191406250045],[36.887792968750006,16.624658203124994],[36.9787109375001,16.800585937500045],[36.9757812500001,16.866552734375006],[36.99521484375006,17.020556640625017],[37.00898437500004,17.058886718750017],[37.06152343749997,17.061279296875057],[37.16953125000006,17.04140625],[37.41103515625005,17.061718749999955],[37.452929687500074,17.108691406250017],[37.51015625,17.28813476562499],[37.54746093750006,17.32412109375005],[37.78242187500004,17.458007812500057],[38.253515625,17.584765625000017],[38.26728515625004,17.616699218750057],[38.28984375000002,17.637011718750017],[38.34736328125004,17.68359375],[38.37373046875004,17.717333984375045],[38.42246093750006,17.823925781249983],[38.60947265625006,18.00507812500004],[39.03447265625002,17.085546875000034],[39.298925781250006,15.921093750000011],[39.78554687499999,15.124853515624991],[39.86376953124997,15.470312500000034],[40.20410156250003,15.014111328124983],[41.17646484375004,14.620312500000054],[41.65820312499997,13.983056640624994],[42.24511718749997,13.587646484374986],[42.39931640625005,13.212597656249969],[42.522851562499994,13.221484375],[42.796191406250074,12.864257812500057],[42.96953125000002,12.808349609375028],[42.99902343750003,12.899511718750048],[43.08291015625005,12.824609374999966],[43.11669921874997,12.708593749999963],[43.00566406250002,12.66230468750004],[42.88330078124997,12.621289062500026],[42.86591796875004,12.622802734374986],[42.82529296875006,12.569335937500014],[42.767480468749994,12.422851562500014],[42.70371093750006,12.380322265625054],[42.479394531249994,12.513623046875026],[42.45,12.521337890625006],[42.40859375,12.494384765625014],[42.37851562500006,12.46640625],[42.28994140625005,12.570214843750009],[42.225,12.661962890624963],[42.13427734374997,12.771435546874969],[41.95214843749997,12.88232421875],[41.85957031250004,13.025878906250028],[41.76503906250005,13.183935546874991],[41.362890625,13.499804687500031],[40.938574218750006,13.983105468749997]]]]},"properties":{"name":"Eritrea","childNum":3}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-17.887939453125,27.809570312500057],[-17.984765625000023,27.646386718750023],[-18.160546874999937,27.76147460937503],[-17.887939453125,27.809570312500057]]],[[[-15.400585937499955,28.147363281250023],[-15.436767578124972,27.810693359375023],[-15.71030273437492,27.784082031250023],[-15.809472656249966,27.994482421874977],[-15.682763671874994,28.15405273437497],[-15.400585937499955,28.147363281250023]]],[[[-17.184667968749977,28.02197265624997],[-17.324902343749955,28.11767578125003],[-17.25859375,28.203173828125045],[-17.103759765624943,28.111132812500017],[-17.184667968749977,28.02197265624997]]],[[[-16.33447265624997,28.37993164062499],[-16.41821289062497,28.15141601562496],[-16.65800781249999,28.007177734374977],[-16.905322265625017,28.33959960937503],[-16.12363281249992,28.57597656249996],[-16.33447265624997,28.37993164062499]]],[[[-14.196777343749943,28.169287109375063],[-14.332617187500006,28.056005859374977],[-14.49179687499992,28.100927734374977],[-14.231982421875017,28.21582031250003],[-14.003369140624983,28.706689453125023],[-13.85722656249996,28.73803710937503],[-13.928027343749989,28.25346679687499],[-14.196777343749943,28.169287109375063]]],[[[-17.83427734374999,28.49321289062496],[-18.00078124999999,28.758251953124955],[-17.928808593749977,28.844580078125063],[-17.7265625,28.724462890625006],[-17.83427734374999,28.49321289062496]]],[[[-13.715966796874966,28.911230468750034],[-13.85991210937496,28.869091796874983],[-13.823632812499966,29.013330078124966],[-13.463574218749955,29.237207031250023],[-13.477929687499966,29.00659179687503],[-13.715966796874966,28.911230468750034]]],[[[1.593945312500068,38.672070312499955],[1.40576171875,38.670996093750006],[1.436328125000017,38.768212890624994],[1.593945312500068,38.672070312499955]]],[[[1.445214843750051,38.91870117187503],[1.223339843750068,38.90385742187502],[1.3486328125,39.080810546875],[1.564453125,39.12104492187504],[1.623632812499977,39.03881835937497],[1.445214843750051,38.91870117187503]]],[[[3.145312500000017,39.79008789062499],[3.461816406250023,39.69775390625003],[3.072851562500006,39.30126953124997],[2.799804687500057,39.38505859374999],[2.700585937500023,39.54213867187502],[2.49951171875,39.47788085937498],[2.37001953125008,39.57207031249999],[3.15869140625,39.97050781249999],[3.145312500000017,39.79008789062499]]],[[[4.293652343750011,39.84184570312499],[3.8671875,39.958740234375],[3.853417968750051,40.06303710937502],[4.22578125000004,40.032373046874966],[4.293652343750011,39.84184570312499]]],[[[-1.794042968749949,43.407324218750006],[-1.410693359374932,43.240087890625034],[-1.460839843749937,43.05175781250006],[-1.300048828124943,43.10097656250002],[-0.586425781249943,42.798974609374966],[0.631640625000045,42.689599609374994],[0.696875,42.84511718750005],[1.428320312499977,42.59589843749998],[1.414843750000074,42.54838867187499],[1.448828124999977,42.43745117187504],[1.534082031250051,42.44169921875002],[1.7060546875,42.50332031250005],[1.859765625000051,42.457080078125045],[1.927929687500068,42.42631835937499],[2.032714843750028,42.353515625],[3.21142578125,42.43115234375],[3.248046875,41.94423828125002],[3.0048828125,41.76743164062506],[2.082617187500063,41.287402343750045],[1.032910156250068,41.06206054687496],[0.714648437500074,40.822851562500006],[0.891113281250057,40.72236328125004],[0.59609375000008,40.614501953125],[-0.327001953124949,39.519873046875006],[-0.204931640624949,39.062597656250034],[0.20156250000008,38.75917968750002],[-0.520800781249989,38.317285156249966],[-0.814648437500011,37.76992187500002],[-0.721582031249966,37.63105468749998],[-1.327539062499937,37.561132812500034],[-1.640966796874949,37.38696289062497],[-2.111523437499983,36.77666015624999],[-4.366845703124994,36.71811523437506],[-4.67412109374996,36.506445312500006],[-5.171484374999949,36.423779296874955],[-5.3609375,36.134912109374994],[-5.62548828125,36.02592773437499],[-6.040673828124937,36.18842773437498],[-6.38413085937492,36.63701171874996],[-6.216796875000028,36.91357421875],[-6.396191406249983,36.831640625],[-6.863769531250028,37.27890625],[-7.406152343749937,37.17944335937497],[-7.44394531249992,37.72827148437497],[-6.957568359374932,38.18789062499999],[-7.106396484374983,38.181005859375006],[-7.343017578124943,38.45742187500002],[-6.997949218749994,39.05644531250002],[-7.53569335937496,39.66157226562501],[-7.117675781249972,39.681689453125045],[-6.975390624999932,39.79838867187502],[-6.896093749999949,40.02182617187506],[-7.032617187499966,40.16791992187498],[-6.8101562499999,40.343115234375034],[-6.928466796874972,41.009130859375006],[-6.2125,41.53203125],[-6.542187499999955,41.672509765624994],[-6.61826171874992,41.9423828125],[-7.147119140625023,41.98115234374998],[-7.40361328124996,41.833691406249955],[-8.152490234374937,41.81196289062498],[-8.266064453124983,42.13740234375001],[-8.777148437500017,41.941064453124994],[-8.887207031249943,42.105273437500045],[-8.690917968749943,42.274169921875],[-8.815820312499966,42.285253906250034],[-8.730029296874989,42.411718750000034],[-8.8115234375,42.64033203124998],[-9.033105468750023,42.593847656250006],[-8.927197265624926,42.79858398437497],[-9.235205078124977,42.97690429687498],[-9.178076171874977,43.17402343749998],[-8.248925781249937,43.43940429687498],[-8.256738281249937,43.57988281249999],[-8.004687499999932,43.69438476562496],[-7.503613281249983,43.73994140625001],[-7.060986328124955,43.55395507812503],[-5.846679687499943,43.645068359375045],[-4.52304687499992,43.41572265625004],[-3.604638671874966,43.51948242187504],[-3.045605468749926,43.37158203125],[-2.875048828125017,43.454443359375006],[-2.337109374999926,43.32802734375002],[-1.794042968749949,43.407324218750006]]]]},"properties":{"name":"Spain","childNum":12,"cp":[-2.9366964,40.3438963]}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[22.61738281250004,58.62124023437502],[23.323242187500057,58.45083007812502],[22.730273437500045,58.23066406250001],[22.371679687499977,58.217138671875006],[21.996875,57.93134765624998],[22.187695312500068,58.15434570312502],[21.88212890624999,58.262353515624994],[21.862304687500057,58.497167968750034],[22.61738281250004,58.62124023437502]]],[[[23.343554687500017,58.550341796875045],[23.10908203125004,58.65922851562502],[23.332812500000045,58.648583984374994],[23.343554687500017,58.550341796875045]]],[[[22.923730468750023,58.826904296875],[22.54218750000001,58.68999023437499],[22.411035156250023,58.863378906250034],[22.05625,58.94360351562506],[22.6494140625,59.08710937499998],[22.90986328125004,58.99121093749997],[22.923730468750023,58.826904296875]]],[[[28.0125,59.484277343749966],[28.15107421875004,59.374414062499966],[27.434179687500006,58.787255859374994],[27.502441406250057,58.221337890624994],[27.778515625000068,57.87070312500006],[27.542089843750063,57.799414062500006],[27.4,57.66679687499999],[27.35195312500005,57.528125],[26.96601562500001,57.60913085937506],[26.532617187499994,57.53100585937503],[26.29804687500001,57.60107421875],[25.66015625,57.920166015625],[25.27265625000001,58.009375],[25.11103515625004,58.06342773437498],[24.45888671875005,57.907861328124994],[24.3625,57.86616210937501],[24.322558593750074,57.87060546875003],[24.529101562500045,58.35424804687497],[24.114843750000034,58.26611328125006],[23.767578125000057,58.36083984374997],[23.50927734375003,58.65854492187498],[23.680761718750063,58.787158203125074],[23.43203125,58.920654296875],[23.494433593750017,59.19565429687498],[24.083398437500023,59.29189453125005],[24.38037109375003,59.47265625],[25.44375,59.52114257812502],[25.50927734374997,59.63901367187506],[26.974707031250006,59.450634765624955],[28.0125,59.484277343749966]]]]},"properties":{"name":"Estonia","childNum":4}},{"geometry":{"type":"Polygon","coordinates":[[[38.43144531250002,14.428613281249994],[38.50439453125,14.424414062499991],[38.81201171875,14.482324218749994],[38.995703125,14.586865234374997],[39.02382812500002,14.628222656250003],[39.07421875,14.628222656250003],[39.13544921875001,14.581884765624991],[39.19804687500002,14.479394531249994],[39.531835937500006,14.53671875],[40.22148437500002,14.43115234375],[40.82011718750002,14.111669921874991],[40.938574218750006,13.983105468749997],[41.362890625,13.499804687500003],[41.76503906250002,13.183935546874991],[41.85957031250001,13.02587890625],[41.9521484375,12.88232421875],[42.13427734375,12.771435546874997],[42.225,12.661962890624991],[42.28994140625002,12.570214843749994],[42.378515625,12.46640625],[41.79267578125001,11.68603515625],[41.79824218750002,10.98046875],[42.557714843750006,11.080761718749997],[42.92275390625002,10.999316406249989],[42.65644531250001,10.6],[42.84160156250002,10.203076171874997],[43.181640625,9.879980468749991],[43.482519531250006,9.379492187499991],[43.98378906250002,9.008837890624989],[46.97822265625001,7.9970703125],[47.97822265625001,7.9970703125],[44.940527343750006,4.912011718749994],[43.988867187500006,4.950537109374991],[43.58349609375,4.85498046875],[43.12568359375001,4.644482421874997],[42.85664062500001,4.32421875],[42.02412109375001,4.137939453125],[41.91533203125002,4.031298828124989],[41.88398437500001,3.977734375],[41.73769531250002,3.979052734374989],[41.48193359375,3.96328125],[41.37246093750002,3.946191406249994],[41.22089843750001,3.943554687499997],[41.02080078125002,4.057470703124991],[40.765234375,4.27304687499999],[39.84218750000002,3.851464843749994],[39.79033203125002,3.754248046874991],[39.65751953125002,3.577832031249997],[39.49443359375002,3.456103515624989],[38.608007812500006,3.60009765625],[38.45156250000002,3.604833984374991],[38.22529296875001,3.618994140624991],[38.08613281250001,3.64882812499999],[37.15458984375002,4.254541015624994],[36.90556640625002,4.411474609374991],[36.02197265625,4.468115234374991],[35.76308593750002,4.808007812499994],[35.75615234375002,4.950488281249989],[35.779296875,5.105566406249991],[35.80029296875,5.156933593749997],[35.74501953125002,5.343994140625],[35.325292968750006,5.364892578124994],[35.2646484375,5.412060546874997],[35.26386718750001,5.457910156249994],[35.26835937500002,5.492285156249991],[34.98359375000001,5.858300781249994],[34.71064453125001,6.660302734374994],[34.06425781250002,7.225732421874994],[33.902441406250006,7.509521484375],[32.99892578125002,7.899511718749991],[33.28105468750002,8.437255859375],[33.95332031250001,8.443505859374994],[34.07275390625,8.545263671874991],[34.078125,9.461523437499991],[34.31123046875001,10.190869140624997],[34.34394531250001,10.658642578124997],[34.571875,10.880175781249989],[34.77128906250002,10.746191406249991],[34.93144531250002,10.864794921874989],[35.1123046875,11.816552734374994],[35.67021484375002,12.623730468749997],[36.12519531250001,12.75703125],[36.52431640625002,14.2568359375],[36.54238281250002,14.25820312499999],[36.67910156250002,14.307568359374997],[36.81191406250002,14.315039062499991],[37.024511718750006,14.27197265625],[37.25722656250002,14.453759765624994],[37.50722656250002,14.156396484374994],[37.54677734375002,14.143847656250003],[37.57119140625002,14.149072265624994],[37.6484375,14.322558593750003],[37.70839843750002,14.457226562499997],[37.8203125,14.70849609375],[37.88417968750002,14.852294921875],[37.943457031250006,14.810546875],[38.002539062500006,14.737109375],[38.22148437500002,14.649658203125],[38.43144531250002,14.428613281249994]]]},"properties":{"name":"Ethiopia","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[22.17509765624999,60.370751953124994],[22.41552734375003,60.30336914062505],[22.36054687500004,60.165576171875045],[22.07714843750003,60.286328124999955],[22.17509765624999,60.370751953124994]]],[[[21.450878906250068,60.529589843750045],[21.3,60.47978515625002],[21.224707031250006,60.62060546875003],[21.450878906250068,60.529589843750045]]],[[[21.2177734375,63.241308593750034],[21.415625,63.19736328125006],[21.25341796875,63.152001953124966],[21.08388671875008,63.277539062499955],[21.2177734375,63.241308593750034]]],[[[24.848242187500034,64.99101562499999],[24.576562500000023,65.04287109375],[24.970605468750023,65.05532226562502],[24.848242187500034,64.99101562499999]]],[[[28.96582031250003,69.02197265625],[28.414062500000057,68.90415039062506],[28.77285156250005,68.84003906249995],[28.470703125000057,68.48837890625],[28.685156250000034,68.189794921875],[29.343847656250006,68.06186523437506],[29.988085937500017,67.66826171874999],[29.066210937500045,66.89174804687497],[30.102734375000097,65.72626953125004],[29.715917968750063,65.62456054687502],[29.608007812500006,65.248681640625],[29.826953125000017,65.14506835937502],[29.60419921875004,64.968408203125],[30.072851562500063,64.76503906250005],[30.04189453125005,64.44335937499997],[30.513769531250006,64.2],[30.50390625000003,64.02060546875],[29.991503906250074,63.73515625000002],[31.180859375000097,63.208300781250074],[31.533984375000017,62.885400390624994],[31.18671875000004,62.48139648437504],[29.69013671875004,61.54609375000001],[27.797656250000074,60.53613281250003],[26.53466796874997,60.412890625000074],[26.56933593750003,60.62456054687502],[26.377734375000074,60.42407226562503],[25.955957031250023,60.474218750000034],[26.03583984375004,60.34150390625001],[25.75800781250004,60.26752929687504],[25.65644531250004,60.33320312499998],[24.44560546874999,60.021289062500045],[23.46357421875004,59.986230468749994],[23.021289062500074,59.81601562500006],[23.19843750000001,60.02182617187498],[22.911718750000063,60.20971679687497],[22.749804687500017,60.057275390624994],[22.462695312500045,60.029199218749966],[22.5849609375,60.380566406249955],[21.436035156250057,60.596386718749955],[21.605957031250057,61.59155273437503],[21.255957031250063,61.98964843750005],[21.143847656250045,62.73999023437506],[21.650976562500063,63.039306640625],[21.545117187499983,63.204296874999955],[22.31972656250005,63.310449218749994],[22.532324218750034,63.647851562499994],[23.598925781250074,64.04091796874997],[24.557910156250045,64.801025390625],[25.288183593750063,64.8603515625],[25.34785156250004,65.47924804687497],[24.674902343750006,65.67070312499999],[24.628027343750034,65.85917968750002],[24.15546875000004,65.80527343750006],[23.700292968750034,66.25263671874998],[23.988574218750045,66.81054687500003],[23.64150390625005,67.12939453124997],[23.733593750000068,67.42290039062499],[23.454882812500045,67.46025390625007],[23.63886718750004,67.95439453125002],[22.854101562500034,68.36733398437502],[21.99746093750005,68.52060546874998],[20.622167968750006,69.036865234375],[21.065722656250017,69.04174804687503],[21.06611328125001,69.21411132812497],[21.59375,69.273583984375],[22.410937500000074,68.719873046875],[23.324023437500017,68.64897460937502],[23.85400390625,68.80590820312503],[24.94140625000003,68.59326171875006],[25.748339843750017,68.99013671875],[26.07246093750004,69.69155273437497],[26.525390625000057,69.91503906250003],[27.127539062500063,69.90649414062497],[27.747851562500045,70.06484375],[29.14160156250003,69.67143554687505],[29.33339843750005,69.47299804687503],[28.846289062500006,69.17690429687502],[28.96582031250003,69.02197265625]]]]},"properties":{"name":"Finland","childNum":5}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[178.48789062500018,-18.97412109375],[177.95869140624998,-19.121582031250014],[178.33427734375013,-18.93447265625001],[178.48789062500018,-18.97412109375]]],[[[179.34931640625015,-18.10234375000003],[179.25351562500018,-18.030566406249974],[179.30644531250013,-17.944042968750026],[179.34931640625015,-18.10234375000003]]],[[[178.28017578124994,-17.37197265625001],[178.59160156249996,-17.651464843750006],[178.66767578125004,-18.080859375],[177.95546875000005,-18.264062500000023],[177.32138671875,-18.077539062500037],[177.26396484375007,-17.86347656250004],[177.5044921875,-17.539550781250043],[177.81796875000012,-17.38847656249999],[178.28017578124994,-17.37197265625001]]],[[[180,-16.96308593750001],[179.89697265625003,-16.96406250000004],[180,-16.785742187500034],[180,-16.96308593750001]]],[[[-179.97490234374996,-16.92480468750003],[-180,-16.96298828124999],[-180,-16.907812500000034],[-180,-16.82431640624999],[-180,-16.78554687499999],[-179.86098632812502,-16.68828124999999],[-179.97490234374996,-16.92480468750003]]],[[[-179.92944335937503,-16.502832031250037],[-179.999951171875,-16.540039062499986],[-179.900927734375,-16.431542968749994],[-179.92944335937503,-16.502832031250037]]],[[[179.99921875000004,-16.168554687499977],[179.56416015625004,-16.636914062499997],[179.56816406249996,-16.747460937499966],[179.93037109375004,-16.51943359375005],[179.9279296875001,-16.74443359374996],[179.41933593750005,-16.80654296875001],[179.20234375000004,-16.71269531249999],[179.00683593750003,-16.90019531249999],[178.70664062500018,-16.97617187500002],[178.4974609375,-16.78789062500003],[178.58359375000012,-16.621875],[178.80507812499994,-16.631445312500034],[179.55175781250003,-16.249902343750023],[180,-16.15292968749999],[179.99921875000004,-16.168554687499977]]]]},"properties":{"name":"Fiji","childNum":7}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-61.01875,-51.7857421875],[-60.87597656250003,-51.79423828125004],[-60.94755859374996,-51.94628906250002],[-61.14501953125003,-51.83945312500001],[-61.01875,-51.7857421875]]],[[[-60.28623046874995,-51.461914062500014],[-59.38759765625002,-51.35996093750003],[-59.26806640625,-51.42753906250003],[-59.92138671874997,-51.969531250000045],[-60.246337890625,-51.98642578125003],[-60.35346679687498,-52.13994140625004],[-60.686376953125034,-52.18837890624996],[-60.96142578125003,-52.05732421874999],[-60.23847656249998,-51.771972656250036],[-60.58251953125,-51.71269531250004],[-60.24516601562493,-51.638867187500004],[-60.56845703124998,-51.357812499999945],[-60.28623046874995,-51.461914062500014]]],[[[-60.11171875000002,-51.39589843749998],[-60.275341796874955,-51.28056640625002],[-60.06982421875,-51.307910156249996],[-60.11171875000002,-51.39589843749998]]],[[[-58.85019531249995,-51.26992187499998],[-58.42583007812502,-51.32421875000003],[-58.508935546874994,-51.48359375],[-58.271582031250034,-51.57470703124999],[-58.25922851562501,-51.417089843750034],[-57.976513671874955,-51.384375],[-57.80849609375002,-51.51796875],[-57.96044921874997,-51.58320312500003],[-57.79179687499999,-51.63613281249998],[-58.68349609375002,-51.93623046875001],[-58.65278320312498,-52.09921875],[-59.19584960937496,-52.01767578125],[-59.06801757812502,-52.17304687500003],[-59.341503906249955,-52.19599609375],[-59.395654296874966,-52.308007812499994],[-59.64873046875002,-52.134375],[-59.57080078124994,-51.92539062500003],[-59.05952148437498,-51.685449218749994],[-59.09663085937498,-51.49140624999998],[-58.85019531249995,-51.26992187499998]]]]},"properties":{"name":"Falkland Is.","childNum":4}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[55.79736328125003,-21.33935546875003],[55.36269531250005,-21.27363281250004],[55.23281250000005,-21.05839843749999],[55.311328125000074,-20.90410156249999],[55.661914062500074,-20.90625],[55.8390625000001,-21.13857421874998],[55.79736328125003,-21.33935546875003]]],[[[45.180273437500006,-12.97675781250004],[45.069433593750006,-12.895605468750034],[45.09238281250006,-12.653027343749997],[45.22314453124997,-12.752148437500026],[45.180273437500006,-12.97675781250004]]],[[[-51.65253906249998,4.061279296874972],[-52.327880859375,3.18173828125002],[-52.58300781250003,2.528906249999977],[-52.90346679687502,2.211523437499977],[-53.76777343749998,2.354833984375048],[-54.13007812499998,2.121044921875026],[-54.43310546875,2.207519531250057],[-54.51508789062498,2.245458984374963],[-54.55048828125001,2.293066406249991],[-54.59194335937502,2.313769531250031],[-54.61625976562499,2.326757812500006],[-54.60473632812497,2.335791015624991],[-54.56840820312502,2.342578125000031],[-54.53593749999999,2.343310546875003],[-54.48554687500001,2.416113281250006],[-54.402001953124966,2.46152343750002],[-54.25673828125002,2.713720703124977],[-54.19550781249998,2.817871093750057],[-54.17070312499999,2.993603515624969],[-54.203125,3.138183593750028],[-54.18803710937499,3.178759765625031],[-54.063183593749955,3.353320312499989],[-54.00957031249993,3.448535156250017],[-54.03422851562499,3.62939453125],[-54.350732421874994,4.054101562500023],[-54.47968749999998,4.836523437499991],[-53.91992187499997,5.768994140624983],[-52.899316406249966,5.425048828124986],[-52.29052734375003,4.942187500000031],[-52.324609374999966,4.770898437500037],[-52.21997070312494,4.862792968750014],[-52.05810546875003,4.717382812499963],[-52.00292968749997,4.352294921875014],[-51.82753906250002,4.635693359375026],[-51.65253906249998,4.061279296874972]]],[[[-60.826269531250006,14.494482421874991],[-61.063720703125,14.467089843750017],[-61.01132812499998,14.601904296875034],[-61.21333007812501,14.848583984375011],[-60.927148437499966,14.755175781249989],[-60.826269531250006,14.494482421874991]]],[[[-61.23046875000003,15.889941406250074],[-61.310742187499955,15.894677734374966],[-61.25,16.006298828124983],[-61.23046875000003,15.889941406250074]]],[[[-61.58955078125001,16.006933593750006],[-61.759423828124966,16.062060546875045],[-61.74804687499997,16.355273437500017],[-61.55234374999998,16.270898437499966],[-61.58955078125001,16.006933593750006]]],[[[-61.3271484375,16.230419921874983],[-61.522167968749955,16.22802734375003],[-61.47119140624994,16.506640625000045],[-61.17260742187497,16.25610351562497],[-61.3271484375,16.230419921874983]]],[[[9.480371093750023,42.80541992187503],[9.550683593750051,42.12973632812506],[9.186132812500034,41.38491210937502],[8.80751953125008,41.58837890625],[8.886816406249977,41.70068359375003],[8.621875,41.93071289062502],[8.700976562500045,42.09560546875002],[8.565625,42.35771484374996],[8.81484375000008,42.60791015625003],[9.313378906250023,42.71318359374999],[9.363183593750051,43.01738281249996],[9.480371093750023,42.80541992187503]]],[[[-1.17832031249992,45.904052734375],[-1.213574218750011,45.81660156250004],[-1.388671874999972,46.05039062500006],[-1.17832031249992,45.904052734375]]],[[[5.789746093749983,49.53828125000001],[5.823437500000011,49.50507812499998],[5.9013671875,49.48974609374997],[5.928906250000011,49.47753906249997],[5.959472656250028,49.45463867187502],[6.01142578125004,49.44545898437502],[6.074121093750023,49.45463867187502],[6.119921875000017,49.485205078125034],[6.181054687500051,49.498925781249966],[6.344335937500006,49.45273437499998],[6.735449218750006,49.16059570312498],[7.450585937500051,49.152197265625034],[8.134863281250006,48.97358398437498],[7.616601562500023,48.15678710937502],[7.615625,47.59272460937504],[7.343164062499994,47.43310546875003],[7.136035156249989,47.489843750000034],[6.968359375000034,47.453222656250034],[6.900390625000028,47.39423828125001],[7.000585937500034,47.339453125000034],[7.000585937500034,47.32250976562506],[6.978515625000057,47.30205078124996],[6.95205078125008,47.26718750000006],[6.820703125000051,47.163183593750006],[6.688085937500034,47.05825195312505],[6.66689453125008,47.026513671874966],[6.624804687500017,47.00434570312498],[6.45625,46.948339843750034],[6.438646763392874,46.774418247767855],[6.129687500000045,46.56699218750006],[6.118111049107182,46.447459542410726],[6.095898437500011,46.279394531250006],[5.970019531250045,46.214697265625034],[5.971484375000074,46.151220703125006],[6.006640625000045,46.14233398437506],[6.086621093750068,46.14702148437502],[6.19941406250004,46.19306640624998],[6.234667968750045,46.332617187500006],[6.321875,46.39370117187502],[6.428906250000011,46.43051757812506],[6.578222656250034,46.437353515625034],[6.758105468750017,46.41577148437497],[6.772070312500006,46.16513671874998],[6.897265625000017,46.05175781249997],[6.953710937500063,46.017138671875045],[7.00390625,45.95883789062506],[7.021093750000034,45.92578124999997],[6.790917968750023,45.740869140624966],[7.146386718750051,45.381738281249994],[7.07832031250004,45.23994140624998],[6.634765625000028,45.06816406249996],[6.99267578125,44.82729492187502],[6.900195312499989,44.33574218749996],[7.318554687500068,44.13798828125002],[7.637207031250057,44.16484375],[7.4931640625,43.767138671875045],[6.570214843750023,43.199072265625034],[6.115917968750011,43.07236328124998],[5.406542968750074,43.228515625],[5.05976562500004,43.44453125000004],[4.712109375000011,43.373291015625],[3.910839843750011,43.563085937500034],[3.258886718750063,43.193212890625006],[3.051757812500057,42.915136718750006],[3.21142578125,42.43115234375],[2.032714843750028,42.353515625],[1.927929687500068,42.42631835937499],[1.859765625000051,42.457080078125045],[1.7060546875,42.50332031250005],[1.709863281250051,42.604443359374955],[1.568164062500045,42.63500976562506],[1.501367187500023,42.64272460937502],[1.428320312499977,42.59589843749998],[0.696875,42.84511718750005],[0.631640625000045,42.689599609374994],[-0.586425781249943,42.798974609374966],[-1.300048828124943,43.10097656250002],[-1.460839843749937,43.05175781250006],[-1.410693359374932,43.240087890625034],[-1.794042968749949,43.407324218750006],[-1.484863281249943,43.56376953124999],[-1.245507812499937,44.55986328124999],[-1.07695312499996,44.68984375],[-1.152880859374989,44.764013671875006],[-1.245214843749977,44.66669921874998],[-1.081005859374983,45.532421874999955],[-0.548486328124966,45.00058593750006],[-0.790771484375028,45.46801757812497],[-1.195996093749983,45.714453125],[-1.03173828125,45.741064453125006],[-1.14628906249996,46.311376953125034],[-1.786523437499937,46.51484375000001],[-2.059375,46.81030273437497],[-2.01889648437492,47.03764648437502],[-2.197070312499989,47.16293945312506],[-2.027587890625028,47.27358398437502],[-1.742529296874949,47.21596679687502],[-1.97539062499996,47.31069335937505],[-2.503125,47.31206054687496],[-2.427685546874983,47.47089843749998],[-2.770312499999989,47.513867187499955],[-2.787207031249949,47.62553710937496],[-4.312109374999949,47.82290039062502],[-4.678808593749949,48.03950195312501],[-4.32944335937492,48.169970703125045],[-4.577148437499943,48.2900390625],[-4.241406249999926,48.30366210937501],[-4.719384765624966,48.363134765625034],[-4.7625,48.45024414062502],[-4.531201171874983,48.61997070312506],[-3.231445312499972,48.84082031250003],[-2.692333984374983,48.53681640624998],[-2.446191406249937,48.64829101562506],[-2.00371093749996,48.58208007812499],[-1.905712890624955,48.69711914062506],[-1.376464843749972,48.65258789062503],[-1.565478515624932,48.805517578125034],[-1.583105468749977,49.20239257812506],[-1.856445312499972,49.68378906249998],[-1.258642578124949,49.68017578125006],[-1.138525390624977,49.38789062500001],[-0.163476562499937,49.296777343749994],[0.41689453125008,49.448388671874994],[0.129394531250028,49.508447265624966],[0.186718749999983,49.703027343749994],[1.245507812500051,49.99824218750001],[1.5927734375,50.25219726562506],[1.672265625000023,50.885009765625],[2.52490234375,51.097119140624955],[2.759375,50.750634765624994],[3.10683593750008,50.779443359374994],[3.27333984375008,50.53154296875002],[3.595410156250068,50.47734374999999],[3.689355468750023,50.30605468750002],[4.174609375000017,50.24648437500005],[4.149316406250023,49.971582031249994],[4.545019531250063,49.96025390624999],[4.818652343750045,50.153173828125034],[4.867578125000051,49.78813476562502],[5.50732421875,49.51088867187502],[5.789746093749983,49.53828125000001]]]]},"properties":{"name":"France","childNum":10,"cp":[2.8719426,46.8222422]}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-7.186865234374949,62.139306640624966],[-7.116796874999977,62.046826171874955],[-7.379101562499926,62.07480468749998],[-7.186865234374949,62.139306640624966]]],[[[-6.631054687499955,62.22788085937498],[-6.655810546874932,62.09360351562498],[-6.840527343749983,62.119287109374994],[-6.725195312499949,61.95146484374999],[-7.17216796874996,62.28559570312501],[-6.631054687499955,62.22788085937498]]],[[[-6.406054687499932,62.258642578125034],[-6.544140624999926,62.20561523437499],[-6.554589843749994,62.35566406250001],[-6.406054687499932,62.258642578125034]]]]},"properties":{"name":"Faeroe Is.","childNum":3}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[158.31484375,6.813671875],[158.18339843750002,6.801269531250057],[158.13476562499997,6.944824218749986],[158.29462890625004,6.951074218750023],[158.31484375,6.813671875]]],[[[138.14267578125006,9.50068359375004],[138.06708984375004,9.419042968750006],[138.18583984375007,9.593310546874989],[138.14267578125006,9.50068359375004]]]]},"properties":{"name":"Micronesia","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[13.293554687500006,2.161572265624997],[13.172167968750017,1.78857421875],[13.21630859375,1.2484375],[13.851367187500017,1.41875],[14.180859375000011,1.370214843749991],[14.429882812500011,0.901464843749991],[14.32421875,0.62421875],[13.949609375000023,0.353808593749989],[13.860058593750011,-0.203320312500011],[14.47412109375,-0.573437500000011],[14.383984375000011,-1.890039062500009],[14.162890625000017,-2.217578125],[14.199804687500006,-2.354199218750011],[13.993847656250011,-2.490625],[13.886914062500011,-2.465429687500006],[13.733789062500023,-2.138476562500003],[13.464941406250006,-2.395410156250009],[12.991992187500017,-2.313378906250009],[12.793554687500006,-1.931835937500011],[12.590429687500006,-1.826855468750011],[12.43212890625,-1.928906250000011],[12.446386718750006,-2.329980468750009],[12.064453125,-2.41259765625],[11.60546875,-2.342578125],[11.537792968750011,-2.83671875],[11.760156250000023,-2.983105468750011],[11.715429687500006,-3.176953125000011],[11.934179687500006,-3.318554687500011],[11.8798828125,-3.665917968750009],[11.685742187500011,-3.68203125],[11.504296875000023,-3.5203125],[11.234472656250006,-3.690820312500009],[11.130175781250017,-3.916308593750003],[10.34765625,-3.013085937500009],[9.722070312500023,-2.467578125],[10.06201171875,-2.549902343750006],[9.624609375,-2.367089843750009],[9.298925781250006,-1.903027343750011],[9.483203125000017,-1.894628906250006],[9.265625,-1.825097656250009],[9.036328125000011,-1.308886718750003],[9.31884765625,-1.632031250000011],[9.501074218750006,-1.55517578125],[9.295800781250023,-1.515234375],[9.3466796875,-1.325],[9.203808593750011,-1.382421875],[9.064648437500011,-1.29833984375],[8.703125,-0.591015625000011],[8.946386718750006,-0.688769531250003],[9.296679687500017,-0.351269531250011],[9.354882812500023,0.343603515624991],[9.468164062500023,0.15976562499999],[9.796777343750023,0.044238281249989],[10.00146484375,0.194970703124994],[9.546484375,0.295947265624989],[9.324804687500006,0.552099609374991],[9.495312500000011,0.664843749999989],[9.617968750000017,0.576513671874991],[9.5908203125,1.031982421875],[9.636132812500023,1.046679687499989],[9.676464843750011,1.07470703125],[9.70458984375,1.079980468749994],[9.760546875000017,1.07470703125],[9.788671875,1.025683593749989],[9.803906250000011,0.998730468749997],[9.90673828125,0.960107421874994],[11.335351562500023,0.999707031249997],[11.332324218750017,1.528369140624989],[11.328710937500006,2.167431640624997],[11.348437500000017,2.299707031249994],[11.558984375000023,2.302197265624997],[13.2203125,2.256445312499991],[13.293554687500006,2.161572265624997]]]},"properties":{"name":"Gabon","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-1.065576171874966,50.69023437500002],[-1.25146484375,50.58881835937498],[-1.563427734374955,50.666113281250006],[-1.31279296874996,50.77348632812502],[-1.065576171874966,50.69023437500002]]],[[[-4.196777343749972,53.321435546874966],[-4.04936523437496,53.30576171874998],[-4.373046875,53.13417968750002],[-4.56787109375,53.386474609375],[-4.315087890625023,53.41723632812503],[-4.196777343749972,53.321435546874966]]],[[[-6.218017578125,54.08872070312506],[-6.649804687499937,54.05864257812496],[-7.007714843749937,54.40668945312501],[-7.324511718750017,54.13344726562502],[-7.606542968750006,54.14384765625002],[-8.118261718749977,54.41425781250004],[-7.75439453125,54.59492187499998],[-7.910595703124955,54.698339843750006],[-7.55039062499992,54.767968749999966],[-7.218652343749937,55.09199218749998],[-6.475048828124955,55.24101562499999],[-6.035791015624994,55.14453125000003],[-5.71684570312496,54.817480468750034],[-5.878613281249955,54.64130859375001],[-5.582519531249943,54.66342773437498],[-5.470410156249926,54.500195312499955],[-5.671093749999955,54.54975585937501],[-5.60678710937492,54.272558593750034],[-6.019042968749972,54.05126953124997],[-6.218017578125,54.08872070312506]]],[[[-5.105419921875011,55.448828125000034],[-5.331494140624955,55.481054687500034],[-5.318115234375,55.709179687499955],[-5.105419921875011,55.448828125000034]]],[[[-6.128906249999972,55.93056640625002],[-6.055322265624994,55.69531249999997],[-6.305078124999966,55.60693359375],[-6.286425781249989,55.77250976562499],[-6.491357421874994,55.697314453125045],[-6.462841796874955,55.808251953124994],[-6.128906249999972,55.93056640625002]]],[[[-5.970068359374949,55.814550781250034],[-6.071972656250011,55.893115234375045],[-5.72514648437496,56.118554687499966],[-5.970068359374949,55.814550781250034]]],[[[-5.77788085937496,56.344335937500034],[-6.313427734374983,56.29365234375001],[-6.138867187499955,56.490625],[-6.286328124999983,56.61186523437502],[-6.102734374999955,56.645654296874966],[-5.760839843749949,56.49067382812501],[-5.77788085937496,56.344335937500034]]],[[[-7.249853515624977,57.115332031250006],[-7.410546874999937,57.38110351562506],[-7.26713867187496,57.37177734375001],[-7.249853515624977,57.115332031250006]]],[[[-6.144726562499983,57.50498046874998],[-6.135546874999989,57.31425781250002],[-5.672460937499977,57.252685546875],[-5.94907226562492,57.045166015625],[-6.034375,57.20122070312499],[-6.322705078124926,57.20249023437498],[-6.761132812499994,57.4423828125],[-6.305957031249989,57.67197265624998],[-6.144726562499983,57.50498046874998]]],[[[-7.205566406250028,57.682958984375006],[-7.182617187499972,57.53330078125006],[-7.514746093749949,57.60195312500002],[-7.205566406250028,57.682958984375006]]],[[[-6.198681640624983,58.36328125000003],[-6.554589843749994,58.092871093750006],[-6.425195312499937,58.02128906249999],[-6.983105468749983,57.75],[-7.083447265624926,57.81376953124999],[-6.856835937499937,57.92353515624998],[-7.085253906249932,58.18217773437499],[-6.726464843749937,58.189404296874955],[-6.776464843750006,58.30151367187497],[-6.237451171874966,58.50283203125005],[-6.198681640624983,58.36328125000003]]],[[[-3.109667968749932,58.515478515625034],[-3.212353515624983,58.32124023437501],[-3.99003906249996,57.95903320312502],[-4.035595703124926,57.85200195312498],[-3.857128906249983,57.81855468750001],[-4.134521484375,57.57773437500006],[-3.402783203124955,57.708251953125],[-2.074072265624977,57.70239257812506],[-1.780664062499994,57.474023437499966],[-2.592675781249937,56.56157226562499],[-3.309960937499966,56.36347656250004],[-2.885156249999937,56.397509765625045],[-2.674267578124955,56.25341796875],[-3.362255859374955,56.02763671875002],[-3.789062499999972,56.09521484375],[-3.048730468749937,55.951953125000045],[-2.599316406249955,56.02729492187501],[-2.14707031249992,55.90297851562502],[-1.655371093749949,55.57036132812502],[-1.232421874999943,54.703710937500034],[-0.084375,54.118066406249994],[-0.20556640625,54.021728515625],[0.115332031250006,53.609277343749994],[-0.270019531249972,53.73676757812504],[-0.659912109375,53.72402343750002],[-0.293701171875,53.69233398437504],[0.270996093750028,53.33549804687499],[0.355761718750045,53.15996093750002],[0.0458984375,52.90561523437498],[0.279785156250028,52.80869140625006],[0.55878906250004,52.96694335937505],[1.05556640625008,52.95898437500003],[1.656738281249972,52.753710937500045],[1.74658203125,52.46899414062503],[1.59140625,52.11977539062502],[1.232421875000057,51.97124023437496],[1.188476562500057,51.803369140624966],[0.752246093750017,51.729589843750034],[0.890917968750017,51.571435546874966],[0.42451171875004,51.465625],[1.414941406250023,51.36328125],[1.397558593750034,51.18203125000002],[0.960156250000011,50.92587890624998],[0.299707031249994,50.775976562500006],[-0.785253906249949,50.76542968749999],[-1.416455078124955,50.896875],[-1.334472656249943,50.82080078124997],[-1.516748046874937,50.747460937499966],[-2.031054687499932,50.72539062499999],[-2.035839843749926,50.603076171875045],[-2.999414062499937,50.71660156249999],[-3.40458984374996,50.63242187499998],[-3.679785156250006,50.239941406249955],[-4.194580078124972,50.39331054687503],[-4.727978515624926,50.29047851562504],[-5.11850585937492,50.038330078125],[-5.622119140624932,50.05068359375002],[-4.188183593749926,51.18852539062502],[-3.135986328124972,51.20502929687501],[-2.433056640624926,51.74072265625],[-3.293115234374994,51.390429687500045],[-3.890771484374994,51.591650390625006],[-4.234570312499955,51.56909179687503],[-4.091015624999926,51.65991210937506],[-4.38627929687496,51.74106445312506],[-4.902294921874926,51.626269531250045],[-5.168359374999937,51.74072265625],[-5.183349609374972,51.94965820312501],[-4.217724609374983,52.277441406250006],[-3.980322265624949,52.54174804687503],[-4.101464843750023,52.915478515624955],[-4.683056640624926,52.80615234374997],[-4.268554687499943,53.14453125],[-3.427734374999972,53.34067382812498],[-3.097558593749937,53.260302734375045],[-3.064746093749932,53.426855468750034],[-2.74951171875,53.310205078124994],[-3.064599609374994,53.512841796874966],[-2.84648437499996,54.135302734375045],[-3.165966796874955,54.12792968750006],[-3.56938476562496,54.46757812499996],[-3.464599609374943,54.77309570312505],[-3.036230468749977,54.95307617187501],[-3.550439453124937,54.94741210937502],[-3.957910156249994,54.780957031249955],[-4.818066406249983,54.84614257812501],[-4.911230468749949,54.68945312500006],[-5.032324218749949,54.76137695312505],[-5.172705078124949,54.98588867187496],[-4.676757812499972,55.50131835937498],[-4.871679687499977,55.87392578125005],[-4.58408203124992,55.93867187500001],[-4.844091796874949,56.05117187499999],[-4.80029296875,56.158349609374994],[-5.228222656249983,55.886328125],[-5.084326171874977,56.197460937499955],[-5.41044921874996,55.995361328125],[-5.55644531249996,55.389599609374955],[-5.730664062499926,55.33413085937502],[-5.504492187499949,55.80239257812502],[-5.609570312499955,56.055273437500034],[-5.188378906249937,56.75805664062503],[-5.652441406249977,56.531982421875],[-6.133691406249966,56.706689453124966],[-5.730615234374994,56.853076171875045],[-5.86142578124992,56.902685546875006],[-5.561914062499994,57.23271484375002],[-5.794921874999972,57.37880859375002],[-5.581787109374972,57.546777343749966],[-5.744921874999989,57.668310546875034],[-5.608349609374955,57.88134765625],[-5.157226562499972,57.88134765625],[-5.413183593750006,58.06972656250002],[-5.338281250000023,58.23872070312498],[-5.008300781250028,58.262646484374955],[-5.016748046874966,58.566552734374966],[-4.433251953124937,58.51284179687505],[-3.25913085937492,58.65],[-3.053076171874949,58.63481445312502],[-3.109667968749932,58.515478515625034]]],[[[-3.057421874999932,59.02963867187498],[-2.793017578124989,58.906933593749955],[-3.331640624999949,58.97124023437499],[-3.31035156249996,59.13081054687498],[-3.057421874999932,59.02963867187498]]],[[[-1.30810546875,60.5375],[-1.052441406249955,60.44448242187502],[-1.299462890624994,59.87866210937503],[-1.290917968749937,60.153466796874966],[-1.663769531249983,60.282519531250074],[-1.374609374999949,60.33291015625002],[-1.571777343749972,60.494433593750074],[-1.363964843750011,60.60957031249998],[-1.30810546875,60.5375]]]]},"properties":{"name":"United Kingdom","childNum":14,"cp":[-2.5830348,54.4598409]}},{"geometry":{"type":"Polygon","coordinates":[[[46.30546875000002,41.507714843749994],[46.61894531250002,41.34375],[46.67255859375001,41.28681640625],[46.66240234375002,41.245507812499994],[46.62636718750002,41.15966796875],[46.534375,41.08857421875],[46.43095703125002,41.077050781249994],[46.086523437500006,41.183837890625],[45.28095703125001,41.449560546875],[45.21718750000002,41.423193359375],[45.00136718750002,41.290966796875],[44.97587890625002,41.277490234374994],[44.81132812500002,41.259375],[44.077246093750006,41.182519531249994],[43.43339843750002,41.155517578125],[43.20546875000002,41.199169921875],[43.15283203125,41.23642578125],[43.14101562500002,41.26484375],[43.17128906250002,41.287939453125],[43.149023437500006,41.30712890625],[43.05712890625,41.352832031249996],[42.90673828125,41.466845703124996],[42.82167968750002,41.4923828125],[42.78789062500002,41.563720703125],[42.75410156250001,41.57890625],[42.68242187500002,41.585742187499996],[42.60683593750002,41.57880859375],[42.590429687500006,41.57070312499999],[42.5673828125,41.55927734375],[42.46640625,41.43984375],[41.92578125,41.495654296874996],[41.82353515625002,41.432373046875],[41.779394531250006,41.44052734375],[41.701757812500006,41.471582031249994],[41.57656250000002,41.497314453125],[41.51005859375002,41.517480468749994],[41.701757812500006,41.705419921875],[41.76298828125002,41.970019531249996],[41.48876953125,42.659326171874994],[40.83662109375001,43.0634765625],[40.46210937500001,43.145703125],[39.97832031250002,43.419824218749994],[40.02373046875002,43.48486328125],[40.084570312500006,43.553125],[40.648046875,43.53388671875],[40.941992187500006,43.41806640625],[41.083105468750006,43.374462890625],[41.35820312500002,43.333398437499994],[41.46074218750002,43.276318359375],[41.58056640625,43.21923828125],[42.76064453125002,43.169580078124994],[42.99160156250002,43.09150390625],[43.00019531250001,43.049658203125],[43.08916015625002,42.9890625],[43.55781250000001,42.844482421875],[43.623046875,42.80771484375],[43.78261718750002,42.747021484375],[43.79873046875002,42.727783203125],[43.79541015625,42.702978515625],[43.74990234375002,42.657519531249996],[43.738378906250006,42.616992187499996],[43.759863281250006,42.59384765625],[43.82597656250002,42.571533203125],[43.95742187500002,42.566552734374994],[44.00468750000002,42.595605468749994],[44.10273437500001,42.616357421874994],[44.32949218750002,42.70351562499999],[44.505859375,42.7486328125],[44.77109375,42.616796875],[44.85048828125002,42.746826171875],[44.87099609375002,42.756396484374996],[44.943359375,42.730273437499996],[45.07158203125002,42.694140625],[45.160253906250006,42.675],[45.34375,42.52978515625],[45.56289062500002,42.5357421875],[45.70527343750001,42.498095703124996],[45.7275390625,42.475048828125],[45.63427734375,42.234716796875],[45.63857421875002,42.205078125],[46.21269531250002,41.989892578124994],[46.42988281250001,41.890966796875],[46.18427734375001,41.7021484375],[46.30546875000002,41.507714843749994]]]},"properties":{"name":"Georgia","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-0.068603515625,11.115625],[0.009423828125023,11.02099609375],[-0.08632812499999,10.673046875],[0.380859375,10.291845703124991],[0.264550781250023,9.644726562499997],[0.342578125000017,9.604150390624994],[0.2333984375,9.463525390624994],[0.525683593750017,9.398486328124989],[0.48876953125,8.851464843749994],[0.37255859375,8.75927734375],[0.686328125000017,8.354882812499994],[0.5,7.546875],[0.634765625,7.353662109374994],[0.525585937500011,6.850927734374991],[0.736914062500006,6.452587890624997],[1.187207031250011,6.089404296874989],[0.94970703125,5.810253906249997],[0.259667968750023,5.75732421875],[-2.001855468749994,4.762451171875],[-3.114013671875,5.088671874999989],[-2.815673828125,5.153027343749997],[-2.754980468749977,5.432519531249994],[-2.793652343749983,5.60009765625],[-2.998291015625,5.71132812499999],[-3.227148437499977,6.749121093749991],[-2.959082031249977,7.454541015624997],[-2.789746093749983,7.931933593749989],[-2.668847656249994,8.022216796875],[-2.613378906249977,8.046679687499989],[-2.600976562499994,8.082226562499997],[-2.619970703124977,8.12109375],[-2.61171875,8.147558593749991],[-2.538281249999983,8.171630859375],[-2.505859375,8.208740234375],[-2.600390624999989,8.800439453124994],[-2.649218749999989,8.956591796874989],[-2.689892578124983,9.025097656249997],[-2.746923828124977,9.045117187499997],[-2.705761718749983,9.351367187499989],[-2.695849609374989,9.481347656249994],[-2.706201171874994,9.533935546875],[-2.765966796874977,9.658056640624991],[-2.780517578125,9.745849609375],[-2.791162109374994,10.432421874999989],[-2.914892578124977,10.592333984374989],[-2.829931640624977,10.998388671874991],[-1.04248046875,11.010058593749989],[-0.627148437499983,10.927392578124994],[-0.299462890624994,11.166894531249994],[-0.068603515625,11.115625]]]},"properties":{"name":"Ghana","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-11.389404296875,12.404394531249991],[-11.502197265625,12.198632812499994],[-11.30517578125,12.015429687499989],[-10.933203124999977,12.205175781249991],[-10.709228515625,11.898730468749989],[-10.274853515624983,12.212646484375],[-9.754003906249977,12.029931640624994],[-9.358105468749983,12.255419921874989],[-9.395361328124977,12.464648437499989],[-9.043066406249977,12.40234375],[-8.818310546874983,11.922509765624994],[-8.822021484375,11.673242187499994],[-8.398535156249977,11.366552734374991],[-8.666699218749983,11.009472656249997],[-8.33740234375,10.990625],[-8.266650390624989,10.485986328124994],[-8.007275390624983,10.321875],[-7.990625,10.1625],[-8.155175781249994,9.973193359374989],[-8.136962890625,9.49570312499999],[-7.896191406249983,9.415869140624991],[-7.918066406249977,9.188525390624989],[-7.839404296874989,9.151611328125],[-7.7998046875,9.115039062499989],[-7.777978515624994,9.080859374999989],[-7.902099609375,9.01708984375],[-7.938183593749983,8.979785156249989],[-7.950976562499989,8.786816406249997],[-7.719580078124977,8.643017578124997],[-7.696093749999989,8.375585937499991],[-7.823583984374977,8.467675781249994],[-7.953125,8.477734375],[-8.236962890624994,8.455664062499991],[-8.244140625,8.407910156249997],[-8.256103515625,8.253710937499989],[-8.217138671874977,8.219677734374997],[-8.140625,8.181445312499989],[-8.048583984375,8.169726562499989],[-8.009863281249977,8.07851562499999],[-8.126855468749994,7.867724609374989],[-8.115429687499983,7.7607421875],[-8.205957031249994,7.59023437499999],[-8.231884765624983,7.556738281249991],[-8.429980468749989,7.601855468749989],[-8.486425781249977,7.558496093749994],[-8.659765624999977,7.688378906249994],[-8.8896484375,7.2626953125],[-9.11757812499999,7.215917968749991],[-9.463818359374983,7.415869140624991],[-9.369140625,7.703808593749997],[-9.518261718749983,8.34609375],[-9.781982421875,8.537695312499991],[-10.064355468749994,8.429882812499997],[-10.147412109374983,8.519726562499997],[-10.233056640624994,8.488818359374989],[-10.283203125,8.485156249999989],[-10.360058593749983,8.495507812499994],[-10.394433593749994,8.48095703125],[-10.496435546874977,8.362109374999989],[-10.557714843749977,8.315673828125],[-10.686962890624983,8.321679687499994],[-10.712109374999983,8.335253906249989],[-10.677343749999977,8.400585937499997],[-10.500537109374989,8.687548828124989],[-10.615966796875,9.059179687499991],[-10.726855468749989,9.081689453124994],[-10.747021484374983,9.095263671874989],[-10.749951171874983,9.122363281249989],[-10.687646484374994,9.261132812499994],[-10.682714843749977,9.289355468749989],[-10.758593749999989,9.385351562499991],[-11.047460937499977,9.786328125],[-11.180859374999983,9.925341796874989],[-11.205664062499977,9.977734375],[-11.273632812499983,9.996533203124997],[-11.911083984374983,9.993017578124991],[-12.142333984375,9.87539062499999],[-12.427978515625,9.898144531249997],[-12.557861328125,9.704980468749994],[-12.755859375,9.373583984374989],[-12.958789062499989,9.263330078124994],[-13.077294921874994,9.069628906249989],[-13.292675781249983,9.04921875],[-13.436279296875,9.4203125],[-13.691357421874983,9.535791015624994],[-13.689794921874977,9.927783203124989],[-13.820117187499989,9.88720703125],[-14.045019531249977,10.141259765624994],[-14.426904296874994,10.248339843749989],[-14.609570312499983,10.549853515624989],[-14.593505859375,10.766699218749991],[-14.677343749999977,10.68896484375],[-14.775927734374989,10.931640625],[-14.88671875,10.968066406249989],[-14.975,10.803417968749997],[-15.051220703124983,10.834570312499991],[-15.043017578124989,10.940136718749997],[-14.9990234375,10.9921875],[-14.944433593749977,11.072167968749994],[-14.779296875,11.405517578125],[-14.720263671874989,11.48193359375],[-14.682958984374977,11.508496093749997],[-14.604785156249989,11.511621093749994],[-14.452441406249989,11.556201171874989],[-14.327832031249983,11.629785156249994],[-14.265576171874983,11.659912109375],[-14.122314453125,11.65195312499999],[-13.953222656249977,11.664599609374989],[-13.732763671874977,11.736035156249997],[-13.730664062499983,11.959863281249994],[-13.737988281249983,12.009667968749994],[-13.816308593749994,12.054492187499989],[-13.948876953124994,12.178173828124997],[-13.8875,12.246875],[-13.759765625,12.262353515624994],[-13.673535156249983,12.478515625],[-13.732617187499983,12.592822265624989],[-13.729248046875,12.673925781249991],[-13.082910156249994,12.633544921875],[-13.061279296875,12.489990234375],[-12.930712890624989,12.532275390624989],[-12.399072265624994,12.340087890625],[-11.389404296875,12.404394531249991]]]},"properties":{"name":"Guinea","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-16.763330078124994,13.064160156249997],[-16.824804687499977,13.341064453125],[-16.669335937499994,13.475],[-16.41337890624999,13.269726562499997],[-15.427490234375,13.46835937499999],[-16.135449218749983,13.4482421875],[-16.351806640625,13.34335937499999],[-16.56230468749999,13.587304687499994],[-15.509667968749994,13.586230468750003],[-15.426855468749977,13.727001953124997],[-15.108349609374983,13.81210937499999],[-14.405468749999983,13.503710937500003],[-13.977392578124977,13.54345703125],[-13.826708984374989,13.4078125],[-14.246777343749983,13.23583984375],[-15.151123046875,13.556494140624991],[-15.286230468749977,13.39599609375],[-15.814404296874983,13.325146484374997],[-15.834277343749989,13.156445312499997],[-16.648779296874977,13.154150390624991],[-16.763330078124994,13.064160156249997]]]},"properties":{"name":"Gambia","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-15.895898437499966,11.082470703124969],[-15.963964843749977,11.05898437499998],[-15.937695312499955,11.192773437499966],[-15.895898437499966,11.082470703124969]]],[[[-16.11450195312503,11.059423828124977],[-16.236425781249977,11.113427734374966],[-16.06733398437501,11.197216796874983],[-16.11450195312503,11.059423828124977]]],[[[-15.901806640624926,11.4658203125],[-16.02319335937497,11.477148437499991],[-15.964550781249926,11.59829101562498],[-15.901806640624926,11.4658203125]]],[[[-15.986425781249949,11.882031249999969],[-16.038330078124943,11.759716796875011],[-16.15244140624992,11.876806640624963],[-15.986425781249949,11.882031249999969]]],[[[-13.759765625,12.262353515624994],[-13.8875,12.246875],[-13.948876953124966,12.178173828124997],[-13.737988281250011,12.009667968750037],[-13.730664062499926,11.959863281250009],[-13.73276367187492,11.736035156249983],[-13.953222656249977,11.664599609374989],[-14.265576171874926,11.659912109375014],[-14.327832031250011,11.629785156250009],[-14.452441406249989,11.556201171875017],[-14.604785156249932,11.511621093749994],[-14.682958984374949,11.508496093749983],[-14.720263671875017,11.481933593749986],[-14.779296874999972,11.405517578125057],[-14.944433593749949,11.072167968749994],[-14.999023437499972,10.992187500000043],[-15.04301757812496,10.940136718750011],[-15.09375,11.011035156249974],[-15.054589843749994,11.141943359375006],[-15.222119140624926,11.030908203125037],[-15.216699218749994,11.15625],[-15.39311523437496,11.217236328124983],[-15.354687499999955,11.396337890624963],[-15.479492187499972,11.410302734374966],[-15.072656249999937,11.597802734374966],[-15.230371093750023,11.686767578124972],[-15.412988281249994,11.615234374999972],[-15.501904296875011,11.723779296874966],[-15.467187499999937,11.842822265624974],[-15.078271484374937,11.968994140625014],[-15.941748046875006,11.786621093749986],[-15.92021484374996,11.93779296874996],[-16.138427734375,11.917285156250045],[-16.32807617187501,12.051611328124963],[-16.244580078124955,12.237109375],[-16.43681640624996,12.204150390625045],[-16.711816406249937,12.354833984375006],[-16.656933593749955,12.364355468749991],[-16.52133789062495,12.348632812499986],[-16.41630859374996,12.367675781250057],[-16.24150390624996,12.443310546875011],[-16.144189453124937,12.457421875000037],[-15.839550781249955,12.437890624999966],[-15.57480468749992,12.490380859375009],[-15.19609375,12.679931640624986],[-14.3492187499999,12.67641601562498],[-14.064843749999966,12.675292968750014],[-13.729248046875,12.673925781250006],[-13.732617187499983,12.592822265625003],[-13.673535156249926,12.478515624999986],[-13.759765625,12.262353515624994]]]]},"properties":{"name":"Guinea-Bissau","childNum":5}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[11.332324218750017,1.528369140624989],[11.335351562500023,0.999707031250011],[9.906738281250028,0.960107421875037],[9.80390625000004,0.998730468749997],[9.788671875000034,1.025683593749974],[9.760546874999989,1.074707031250014],[9.704589843750057,1.079980468750023],[9.676464843750011,1.074707031250014],[9.636132812500051,1.046679687499989],[9.590820312500057,1.031982421875014],[9.599414062500045,1.054443359374972],[9.509863281250006,1.114794921875017],[9.385937500000068,1.13925781250002],[9.807031250000051,1.927490234375028],[9.77968750000008,2.068212890625006],[9.800781250000028,2.304443359375],[9.826171875000057,2.297802734374969],[9.8369140625,2.242382812500054],[9.870117187500028,2.21328125],[9.979882812499994,2.167773437500045],[10.790917968750023,2.167578125],[11.096582031250051,2.167480468749986],[11.328710937500006,2.167431640624969],[11.332324218750017,1.528369140624989]]],[[[8.735742187500023,3.758300781249972],[8.910058593750023,3.758203125000051],[8.946093750000074,3.627539062499977],[8.704003906250051,3.223632812500028],[8.474902343749989,3.264648437500043],[8.464648437500045,3.450585937499994],[8.735742187500023,3.758300781249972]]]]},"properties":{"name":"Eq. Guinea","childNum":2}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[23.852246093749983,35.53544921874999],[24.166015625000057,35.59521484375],[24.108984374999977,35.49580078124998],[24.35400390625,35.359472656250034],[25.73017578125004,35.34858398437501],[25.791308593750074,35.122851562500045],[26.32021484375008,35.315136718749955],[26.165625,35.018603515625045],[24.79980468750003,34.93447265625002],[24.70888671875008,35.08906250000001],[24.463671875000045,35.160351562499955],[23.59277343749997,35.257226562499966],[23.56982421875,35.534765625000034],[23.67265624999999,35.51391601562506],[23.736914062500034,35.65551757812503],[23.852246093749983,35.53544921874999]]],[[[27.17607421874999,35.46528320312498],[27.070703125000023,35.59775390624998],[27.22314453125,35.820458984374966],[27.17607421874999,35.46528320312498]]],[[[23.053808593750034,36.18979492187498],[22.91083984375004,36.220996093750045],[22.950488281250045,36.38393554687502],[23.053808593750034,36.18979492187498]]],[[[27.84277343750003,35.929296875000034],[27.71552734375004,35.95732421874996],[27.71630859375003,36.17158203125001],[28.23183593750005,36.43364257812502],[28.087792968750023,36.06533203125002],[27.84277343750003,35.929296875000034]]],[[[25.48242187500003,36.39262695312502],[25.37050781250005,36.35893554687499],[25.408984375000074,36.473730468750006],[25.48242187500003,36.39262695312502]]],[[[26.46064453125001,36.58540039062501],[26.270019531250057,36.54692382812499],[26.370019531250023,36.63857421875002],[26.46064453125001,36.58540039062501]]],[[[26.94960937500005,36.72709960937502],[27.214941406250006,36.89863281249998],[27.352148437499977,36.86889648437506],[26.94960937500005,36.72709960937502]]],[[[25.859375,36.79042968750005],[25.74316406250003,36.78974609374998],[26.06445312500003,36.90273437500002],[25.859375,36.79042968750005]]],[[[27.01972656250004,36.95903320312502],[26.91992187500003,36.94521484375005],[26.88867187499997,37.087255859375034],[27.01972656250004,36.95903320312502]]],[[[25.278906250000034,37.06840820312502],[25.105468750000057,37.034960937500045],[25.235058593750068,37.148535156250006],[25.278906250000034,37.06840820312502]]],[[[25.54589843749997,36.96757812499999],[25.45673828125001,36.9296875],[25.361914062500063,37.07041015624998],[25.52529296875005,37.19638671875006],[25.54589843749997,36.96757812499999]]],[[[24.523535156250063,37.125097656250006],[24.42480468750003,37.131982421874994],[24.48378906250005,37.21020507812503],[24.523535156250063,37.125097656250006]]],[[[25.402734375000023,37.419140624999955],[25.312695312500068,37.48930664062496],[25.462988281250063,37.47109375],[25.402734375000023,37.419140624999955]]],[[[26.029296875000057,37.529394531250034],[26.086328125000023,37.63491210937505],[26.351367187500017,37.67431640625],[26.029296875000057,37.529394531250034]]],[[[25.255859375000057,37.59960937500006],[25.156347656250034,37.54506835937505],[24.99648437500005,37.676904296874994],[25.255859375000057,37.59960937500006]]],[[[24.35595703125003,37.57685546875004],[24.28896484375005,37.52827148437498],[24.37910156250004,37.682714843750006],[24.35595703125003,37.57685546875004]]],[[[26.82441406250004,37.81142578125005],[27.05507812500005,37.70927734375002],[26.84492187500004,37.64472656250001],[26.58105468750003,37.723730468750034],[26.82441406250004,37.81142578125005]]],[[[20.888476562500074,37.805371093749955],[20.993945312500074,37.70800781250003],[20.81855468750004,37.66474609375001],[20.61953125000008,37.855029296875045],[20.691503906250006,37.929541015625034],[20.888476562500074,37.805371093749955]]],[[[24.991699218750057,37.75961914062506],[24.962207031250074,37.69238281250003],[24.7001953125,37.961669921875],[24.956347656250045,37.90478515625006],[24.991699218750057,37.75961914062506]]],[[[20.61230468750003,38.38334960937502],[20.761328125,38.07055664062497],[20.523535156250063,38.106640624999955],[20.4521484375,38.23417968750002],[20.35253906250003,38.179882812499955],[20.563183593750068,38.474951171875034],[20.61230468750003,38.38334960937502]]],[[[26.094042968750017,38.21806640625002],[25.891894531250045,38.243310546874994],[25.991406250000068,38.353515625],[25.846093750000023,38.57402343749996],[26.16035156250001,38.54072265625001],[26.094042968750017,38.21806640625002]]],[[[20.68671875000001,38.60869140625002],[20.5546875,38.58256835937502],[20.69414062499999,38.84423828125003],[20.68671875000001,38.60869140625002]]],[[[24.67470703125005,38.80922851562502],[24.54101562499997,38.788671875],[24.485644531250074,38.980273437500045],[24.67470703125005,38.80922851562502]]],[[[23.41542968750008,38.958642578124994],[23.525,38.8134765625],[24.127539062500034,38.648486328125045],[24.27578125000005,38.22001953124996],[24.58837890625003,38.12397460937504],[24.53652343750005,37.97973632812506],[24.212011718750006,38.11752929687506],[24.040136718750006,38.389990234375034],[23.65078125000008,38.44306640625001],[23.25214843750004,38.80122070312498],[22.870312500000068,38.870507812499966],[23.258203125000023,39.03134765625006],[23.41542968750008,38.958642578124994]]],[[[26.41015625000003,39.329443359375034],[26.59560546875005,39.04882812499997],[26.488671875000023,39.074804687500034],[26.46875,38.97280273437502],[26.10791015625,39.08105468749997],[26.273144531249983,39.19755859374999],[26.072363281250034,39.095605468749994],[25.84414062500008,39.20004882812506],[26.16542968750008,39.37353515625006],[26.41015625000003,39.329443359375034]]],[[[20.077929687500045,39.432714843750034],[19.883984375000068,39.461523437500034],[19.646484375,39.76708984375003],[19.926074218750017,39.773730468750045],[19.8466796875,39.66811523437502],[20.077929687500045,39.432714843750034]]],[[[25.43769531250004,39.98330078125002],[25.357031250000063,39.80810546875003],[25.24941406250005,39.89414062500006],[25.06220703125004,39.852392578125006],[25.05800781250005,39.999658203124966],[25.43769531250004,39.98330078125002]]],[[[24.774218750000074,40.615185546874955],[24.515527343750023,40.64702148437496],[24.623339843750045,40.79291992187501],[24.774218750000074,40.615185546874955]]],[[[26.03896484375008,40.726757812499955],[25.10449218750003,40.994726562500006],[24.792968750000057,40.857519531250034],[24.47705078125,40.94775390625003],[24.082324218750074,40.72407226562504],[23.762792968750063,40.74780273437497],[23.866796875000034,40.41855468750006],[24.21279296875008,40.32778320312502],[24.343359375000034,40.14770507812503],[23.913183593750063,40.35878906250005],[23.72792968750008,40.329736328124994],[23.96748046875001,40.11455078125002],[23.947070312500045,39.96557617187506],[23.66455078125003,40.22382812499998],[23.42626953125,40.26396484374999],[23.62734375,39.92407226562503],[22.896484375000057,40.39990234374997],[22.92226562500008,40.59086914062499],[22.629492187500034,40.49555664062501],[22.59218750000005,40.03691406250002],[23.327734374999977,39.174902343750006],[23.15468750000008,39.10146484375005],[23.16171875,39.25776367187501],[22.92138671874997,39.30634765625004],[22.886035156250074,39.16997070312496],[23.066699218750017,39.03793945312498],[22.569140625000074,38.86748046874999],[23.25292968750003,38.66123046875006],[23.68398437500008,38.35244140625002],[23.96699218750001,38.275],[24.024511718750006,38.139794921874966],[24.01972656250001,37.67773437499997],[23.50175781249999,38.03486328124998],[23.03632812500004,37.87836914062501],[23.48925781250003,37.440185546875],[23.16152343750005,37.333837890625006],[22.725390625000017,37.542138671874966],[23.16015625000003,36.448095703125034],[22.717187500000023,36.79394531250006],[22.42773437500003,36.47578124999998],[22.08046875000008,37.028955078124966],[21.95556640625003,36.990087890625034],[21.892382812500045,36.73730468749997],[21.58291015625005,37.080957031249994],[21.678906250000068,37.38720703125003],[21.124707031250068,37.89160156250003],[21.40371093750005,38.19667968750002],[21.658398437500068,38.17509765624996],[21.82470703125003,38.328125],[22.846386718750068,37.96757812499996],[23.18349609375008,38.133691406249966],[22.421679687500045,38.43852539062499],[22.319921875,38.35683593750005],[21.96533203124997,38.412451171875006],[21.47255859375005,38.321386718750006],[21.3310546875,38.48730468749997],[21.303320312500034,38.373925781249966],[21.113183593750023,38.38466796875002],[20.768554687500057,38.874414062499966],[21.111621093750045,38.89628906249999],[21.11835937500001,39.029980468749955],[20.71337890625,39.03515625000003],[20.300781250000057,39.32709960937501],[20.19140625,39.545800781249966],[20.099414062500074,39.641259765624966],[20.001269531250074,39.70942382812501],[20.022558593750063,39.710693359375],[20.059765624999983,39.69912109375002],[20.13105468750004,39.66162109375003],[20.206835937500017,39.65351562499998],[20.382421875,39.802636718749994],[20.381640625000017,39.84179687500006],[20.311328125000074,39.95078125000006],[20.311132812500034,39.97944335937504],[20.338476562500006,39.991064453125006],[20.38369140625008,40.0171875],[20.408007812500074,40.049462890624994],[20.4560546875,40.065576171874994],[20.657421875000068,40.11738281249998],[20.881640625000017,40.467919921874994],[21.030859375000034,40.62246093750002],[20.95576171875001,40.775292968749994],[20.96425781250005,40.84990234374999],[21.575781250000034,40.86894531249996],[21.627539062500006,40.896337890625034],[21.77949218750004,40.95043945312506],[21.99335937500001,41.13095703125006],[22.18447265625005,41.15864257812501],[22.49355468750005,41.118505859375006],[22.603613281249977,41.14018554687499],[22.724804687500068,41.17851562499999],[22.78388671875004,41.33198242187498],[23.155957031250068,41.32207031249999],[23.239843750000034,41.38496093750001],[23.372070312500057,41.3896484375],[23.433398437500017,41.39873046874999],[23.53583984375001,41.38603515624999],[23.63515625000008,41.386767578125045],[24.011328124999977,41.460058593750034],[24.03291015625004,41.469091796875034],[24.05605468750005,41.527246093749966],[24.38671875,41.523535156250006],[24.487890625,41.55522460937499],[24.518261718750068,41.55253906249996],[24.773730468750045,41.356103515624994],[24.99355468750008,41.36499023437503],[25.133398437500063,41.31577148437506],[25.251171875000068,41.243554687499994],[25.923339843750057,41.311914062499966],[26.066406250000057,41.35068359375006],[26.135351562499977,41.3857421875],[26.155175781250023,41.43486328124999],[26.143554687500057,41.52153320312496],[26.085546875000063,41.704150390625045],[26.10742187499997,41.72568359374998],[26.20058593750005,41.74379882812502],[26.320898437500034,41.716552734375],[26.581347656250074,41.60126953125004],[26.62490234375008,41.401757812499994],[26.330664062499977,41.23876953125],[26.331054687500057,40.954492187499994],[26.03896484375008,40.726757812499955]]]]},"properties":{"name":"Greece","childNum":29}},{"geometry":{"type":"Polygon","coordinates":[[[-61.71552734375,12.012646484374997],[-61.714990234374994,12.18515625],[-61.60703125,12.223291015624994],[-61.71552734375,12.012646484374997]]]},"properties":{"name":"Grenada","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-46.266699218750006,60.781396484374994],[-46.381542968749955,60.66030273437502],[-46.7880859375,60.758398437500034],[-46.205224609374994,60.943505859374994],[-46.266699218750006,60.781396484374994]]],[[[-37.03125,65.53198242187497],[-37.23842773437494,65.60986328125003],[-37.047509765624966,65.722265625],[-37.03125,65.53198242187497]]],[[[-51.01367187499994,69.55249023437497],[-51.202050781249966,69.525],[-51.33886718749994,69.73203125000006],[-51.094580078125006,69.92416992187503],[-50.67900390624999,69.84853515625],[-51.01367187499994,69.55249023437497]]],[[[-52.73115234375001,69.94472656250005],[-52.0453125,69.8072265625],[-51.90019531249999,69.60478515625007],[-53.57841796874996,69.25664062500002],[-54.18271484374995,69.40351562500001],[-53.65830078124998,69.46513671875005],[-53.825,69.54033203124999],[-54.91914062499998,69.71362304687503],[-54.78789062499996,69.94985351562502],[-54.322607421875034,69.94189453125],[-54.83076171875001,70.13295898437502],[-54.37163085937499,70.31728515625],[-53.296728515625034,70.20537109375002],[-52.73115234375001,69.94472656250005]]],[[[-51.67514648437498,70.855224609375],[-52.11938476562497,70.87065429687502],[-52.10673828124999,70.96801757812497],[-51.67514648437498,70.855224609375]]],[[[-25.43232421875001,70.92133789062495],[-25.402246093749994,70.65268554687503],[-26.217871093749977,70.45405273437498],[-26.604687499999926,70.55336914062497],[-28.03525390624995,70.48681640625],[-27.61723632812496,70.91376953125001],[-26.621777343749955,70.87563476562497],[-25.81889648437499,71.04365234375001],[-25.43232421875001,70.92133789062495]]],[[[-53.53520507812493,71.04082031250005],[-53.9578125,71.12773437499999],[-53.58447265625003,71.29707031249995],[-53.53520507812493,71.04082031250005]]],[[[-55.01689453124999,72.79111328125003],[-55.56660156249998,72.56435546875002],[-56.214794921874955,72.71918945312495],[-55.01689453124999,72.79111328125003]]],[[[-18.000537109374932,75.40732421875003],[-17.391992187499937,75.03691406250007],[-18.670800781249966,75.00166015624998],[-18.856054687499977,75.31914062500002],[-18.000537109374932,75.40732421875003]]],[[[-18.58261718749995,76.042333984375],[-19.085351562499966,76.43037109375001],[-18.882470703124937,76.70380859375001],[-18.58261718749995,76.042333984375]]],[[[-71.667333984375,77.32529296874998],[-72.48955078124999,77.43164062499997],[-71.43344726562495,77.394384765625],[-71.667333984375,77.32529296874998]]],[[[-17.6125,79.82587890624995],[-18.662011718749966,79.72001953125005],[-19.13828125,79.85234375000002],[-17.98291015625,80.05517578125003],[-17.471386718749955,80.02871093749997],[-17.6125,79.82587890624995]]],[[[-44.86455078124999,82.08364257812502],[-46.75190429687501,82.34819335937502],[-47.27226562499996,82.65693359375001],[-46.399169921875,82.692138671875],[-44.91748046875003,82.48051757812505],[-44.86455078124999,82.08364257812502]]],[[[-29.952880859375,83.56484374999997],[-25.795068359374994,83.26098632812497],[-31.99267578125,83.0853515625],[-32.03271484374997,82.98344726562502],[-25.12338867187495,83.15961914062501],[-24.47031249999995,82.87739257812498],[-21.582519531249943,82.6341796875],[-23.118066406249966,82.32470703125003],[-29.57939453124996,82.16118164062502],[-29.887402343749983,82.05483398437502],[-29.543847656249994,81.93994140624997],[-27.839501953124966,82.04887695312505],[-25.148828124999966,82.001123046875],[-24.293066406249977,81.70097656250005],[-23.103710937499983,82.01181640625003],[-21.337988281249977,82.068701171875],[-21.230517578125017,81.60136718749999],[-23.11772460937499,80.77817382812498],[-19.62993164062499,81.63989257812503],[-17.456054687499943,81.397705078125],[-16.12070312499995,81.776611328125],[-14.241992187500017,81.81386718750005],[-12.434423828125006,81.68251953125002],[-11.430664062499972,81.45683593750005],[-13.126220703124972,81.08779296875],[-14.452343749999955,80.99311523437498],[-14.503564453124994,80.76328125000006],[-16.76059570312492,80.573388671875],[-15.937255859374972,80.42763671874997],[-16.48876953124997,80.25195312499997],[-18.070947265624994,80.17207031249995],[-19.429199218749943,80.25771484375],[-20.150146484375,80.01123046874997],[-18.99199218749996,79.17836914062502],[-21.133740234374926,78.65864257812501],[-21.729589843749977,77.70854492187499],[-20.862597656249932,77.91186523437503],[-19.490429687499983,77.71889648437497],[-19.46752929687503,77.56582031250005],[-20.162060546874926,77.68984375],[-20.680810546875023,77.61899414062503],[-20.23193359374997,77.36840820312497],[-19.30029296874997,77.22236328124995],[-18.442626953124943,77.259375],[-18.51030273437496,76.77817382812498],[-20.48671875,76.92080078125],[-21.614697265624926,76.68789062499997],[-22.18525390625001,76.79409179687502],[-22.609326171874983,76.70429687500004],[-21.877343749999966,76.57348632812503],[-21.488232421874926,76.271875],[-20.10361328124992,76.21909179687503],[-19.508984374999926,75.75751953124995],[-19.52636718750003,75.18022460937505],[-20.484960937500006,75.31425781249999],[-21.649316406249966,75.02343749999997],[-22.232861328124926,75.11972656249998],[-21.69511718749999,74.96445312500003],[-20.985791015624983,75.07436523437497],[-20.86157226562497,74.63593750000001],[-20.41708984374995,74.9751953125],[-19.98491210937499,74.9751953125],[-19.287011718750023,74.54638671875006],[-19.36914062499997,74.28403320312498],[-20.256445312499977,74.2828125],[-20.653125,74.13735351562502],[-21.954931640624977,74.24428710937497],[-21.942919921874932,74.56572265624999],[-22.32158203124999,74.30253906250002],[-22.134814453124932,73.99047851562503],[-20.36728515624992,73.8482421875],[-20.509667968749966,73.49287109375001],[-22.346875,73.26923828125001],[-23.23320312499999,73.39770507812497],[-24.157714843749943,73.76445312499999],[-24.67724609375,73.602197265625],[-25.521289062500017,73.85161132812499],[-24.79125976562497,73.51127929687502],[-26.062304687500017,73.25302734375],[-27.270410156250023,73.43627929687503],[-26.541845703125006,73.24897460937495],[-27.561621093750006,73.13847656250002],[-27.348046875000023,73.06782226562501],[-25.057031250000023,73.396484375],[-24.132666015625006,73.409375],[-22.036328124999955,72.91845703125006],[-22.29321289062497,72.11953125],[-24.06904296875001,72.49873046874998],[-24.629980468749977,73.03764648437499],[-26.657617187499966,72.71582031249997],[-24.81333007812492,72.90151367187497],[-24.65,72.58251953125],[-25.117871093749983,72.34697265625005],[-24.66684570312492,72.437353515625],[-21.959667968749955,71.74467773437502],[-22.479638671874937,71.38344726562497],[-22.417578125,71.24868164062505],[-22.29902343750001,71.43232421874998],[-21.75224609374999,71.47832031250002],[-21.522656249999926,70.52622070312503],[-22.38413085937492,70.46240234375],[-22.437011718749943,70.860009765625],[-22.690673828124943,70.43730468750002],[-23.327832031249983,70.45097656250007],[-23.97138671875001,70.64946289062499],[-24.562207031249926,71.22353515624997],[-25.885156249999966,71.571923828125],[-27.08720703124999,71.6265625],[-27.107031250000034,71.53266601562498],[-25.842724609374955,71.48017578124995],[-25.74223632812499,71.18359375],[-26.717919921874994,70.95048828125005],[-28.39843749999997,70.99291992187497],[-27.99218749999997,70.89521484374998],[-28.06987304687499,70.69902343750005],[-29.07207031249999,70.444970703125],[-26.621777343749955,70.46337890625],[-26.576806640625023,70.35708007812502],[-27.560839843749932,70.12446289062498],[-27.384179687500023,69.9916015625],[-27.027734374999966,70.20122070312499],[-25.529882812499977,70.35317382812502],[-23.66733398437495,70.139306640625],[-22.28447265624996,70.12583007812498],[-22.287060546874955,70.03339843749998],[-23.03364257812501,69.90083007812498],[-23.04956054687497,69.79272460937497],[-23.86572265624997,69.73671875000002],[-23.739404296874994,69.58862304687497],[-24.296679687500017,69.58554687500006],[-24.295556640624966,69.439306640625],[-25.188574218750006,69.26054687500002],[-25.092431640624937,69.16518554687502],[-25.697998046874943,68.889892578125],[-26.48291015624997,68.67592773437502],[-29.24951171874997,68.29877929687501],[-29.86850585937495,68.31157226562505],[-30.318115234375,68.19331054687501],[-30.72001953124999,68.25117187499998],[-30.610742187499994,68.11791992187503],[-30.97856445312499,68.06132812500005],[-32.32744140624999,68.43730468749999],[-32.16455078125,67.99111328125002],[-33.15698242187497,67.62670898437506],[-34.1982421875,66.65507812499999],[-35.18857421874995,66.25029296875002],[-35.86723632812502,66.44140624999997],[-35.630078124999926,66.13994140625002],[-36.37919921874996,65.830810546875],[-36.52724609375002,66.00771484375],[-36.665185546874966,65.79008789062507],[-37.06279296874996,65.87143554687503],[-37.410058593749994,65.65634765625],[-37.954785156249955,65.63359375000007],[-37.278710937499994,66.30439453124995],[-38.156640624999966,66.38559570312498],[-37.75234375000002,66.26152343750002],[-38.13994140625002,65.90351562499998],[-38.52036132812498,66.00966796875002],[-38.20336914062497,65.71171874999999],[-40.17353515624998,65.55615234375],[-39.57792968749996,65.34077148437501],[-39.937255859375,65.14160156250003],[-40.253125,65.04887695312505],[-41.08442382812501,65.10083007812497],[-40.966015624999955,64.86884765624995],[-40.655468749999926,64.91533203125002],[-40.18222656249998,64.47993164062495],[-40.78173828125,64.22177734375003],[-41.581005859374926,64.29833984375],[-41.03056640624996,64.12104492187504],[-40.61777343749998,64.13173828125],[-40.550390625000034,63.72524414062505],[-40.77519531249999,63.53364257812501],[-41.04873046875002,63.51381835937505],[-41.387890624999926,63.06186523437498],[-41.84448242187497,63.07026367187501],[-42.174511718749955,63.20878906249999],[-41.63447265624998,62.972460937500074],[-41.90898437499996,62.73710937499999],[-42.94165039062503,62.72021484375003],[-42.15297851562502,62.568457031250006],[-42.32148437499998,62.15273437500005],[-42.110205078125006,61.857226562500074],[-42.58530273437498,61.71748046875001],[-42.34736328125001,61.61743164062497],[-42.717041015625,60.767480468749994],[-43.04409179687502,60.523681640625],[-43.92270507812495,60.59536132812502],[-43.21298828124998,60.390673828125074],[-43.122900390625006,60.06123046875001],[-43.32011718749993,59.928125],[-43.95502929687498,60.025488281250006],[-43.65791015625001,59.85864257812503],[-43.90654296874996,59.815478515625045],[-44.11699218750002,59.83193359375002],[-44.06547851562499,59.92480468750003],[-44.412939453125006,59.922607421875],[-44.22436523437494,60.273535156250006],[-44.61328124999997,60.01665039062499],[-45.37924804687495,60.20292968750002],[-45.367773437500006,60.37294921875002],[-44.97470703124995,60.457226562499955],[-44.756738281249966,60.66459960937502],[-45.38051757812494,60.444921875],[-46.04663085937503,60.61572265625],[-46.141943359375006,60.776513671874994],[-45.87021484374998,61.21831054687502],[-46.87446289062501,60.81640625000003],[-48.180810546874966,60.76923828125001],[-47.77031249999999,60.99775390625001],[-48.386425781249926,61.004736328125034],[-48.42817382812501,61.18740234375002],[-48.92207031249998,61.27744140624998],[-49.28906249999997,61.58994140625006],[-49.380273437499994,61.89018554687502],[-48.82871093749998,62.0796875],[-49.62377929687494,61.99858398437499],[-49.553466796875,62.23271484374999],[-50.319238281249966,62.473193359375045],[-50.298730468749966,62.72197265625002],[-49.793115234374994,63.04462890625004],[-50.39008789062501,62.82202148437497],[-51.46884765624995,63.64228515625001],[-51.547509765624994,64.00610351562497],[-50.260693359374955,64.21425781250002],[-50.48662109374996,64.20888671875],[-50.43706054687499,64.31284179687503],[-51.58491210937498,64.10317382812502],[-51.70786132812498,64.205078125],[-51.403759765624926,64.46318359375002],[-50.49208984375002,64.69316406250005],[-50.00898437500001,64.44726562499997],[-50.12163085937493,64.703759765625],[-50.51699218750002,64.76650390625],[-50.96064453124998,65.20112304687498],[-50.721582031249966,64.79760742187503],[-51.22060546875002,64.62846679687502],[-51.25537109375,64.75810546875005],[-51.92260742187503,64.21875],[-52.259033203125,65.154931640625],[-52.537695312500034,65.32880859374998],[-51.61914062500003,65.71318359375002],[-51.091894531250006,65.77578125],[-51.7234375,65.723486328125],[-52.55126953125003,65.46137695312498],[-52.760937499999926,65.59082031249997],[-53.198974609375,65.59404296875002],[-53.106347656249966,65.97714843749998],[-53.39204101562498,66.04833984375],[-51.225,66.88154296875001],[-53.035791015624966,66.20141601562503],[-53.538769531249955,66.13935546874998],[-53.41875,66.64853515624998],[-53.038281249999955,66.82680664062497],[-52.38686523437502,66.88115234375005],[-53.44360351562503,66.924658203125],[-53.88442382812502,67.13554687499999],[-53.79858398437494,67.41816406250001],[-52.666455078124955,67.74970703124995],[-50.613476562499955,67.5279296875],[-51.171044921874966,67.693603515625],[-50.96884765624998,67.80664062500003],[-51.765234375000034,67.73784179687505],[-52.34482421874998,67.83691406249997],[-53.735205078125006,67.54902343750004],[-53.151562499999926,68.20776367187503],[-51.779980468749926,68.05673828124998],[-51.456494140624926,68.116064453125],[-51.21015625000001,68.419921875],[-52.19853515624993,68.22080078125],[-53.38315429687495,68.29736328124997],[-53.03945312500002,68.61088867187499],[-52.60458984374998,68.70874023437503],[-51.62314453124995,68.53481445312505],[-50.945703124999966,68.68266601562505],[-50.807714843750006,68.81699218749998],[-51.24941406250002,68.73994140625001],[-51.084863281249994,69.12827148437498],[-50.29736328124994,69.17060546874998],[-51.07695312499996,69.20947265625],[-50.291699218749955,70.01445312500005],[-52.254638671875,70.05893554687503],[-53.02304687499995,70.30190429687497],[-54.01445312499996,70.42167968750005],[-54.53076171875,70.69926757812502],[-54.16582031249999,70.82011718750005],[-52.801953124999955,70.7505859375],[-50.87236328124993,70.36489257812502],[-50.66328124999998,70.417578125],[-51.32285156249998,70.58876953124997],[-51.25659179687497,70.85268554687502],[-51.77431640625002,71.01044921875001],[-51.018945312499966,71.001318359375],[-51.37666015625001,71.11904296875],[-53.007568359375,71.17998046874999],[-52.89184570312497,71.457666015625],[-51.76992187500002,71.67172851562498],[-53.44008789062502,71.57900390625002],[-53.14453125000003,71.80742187500002],[-53.65214843749996,72.36264648437506],[-53.92773437499997,72.31879882812501],[-53.47758789062502,71.84995117187506],[-54.01992187500002,71.657861328125],[-53.96298828124995,71.45898437499997],[-54.6890625,71.36723632812505],[-55.59404296874999,71.55351562500005],[-55.315576171874994,72.11069335937498],[-54.84013671874996,72.35610351562497],[-55.581445312499994,72.178857421875],[-55.63583984374998,72.300439453125],[-55.29570312499996,72.35439453124997],[-55.60170898437494,72.453466796875],[-54.924951171874994,72.57197265624998],[-54.737939453124994,72.87250976562501],[-55.07309570312498,73.01513671875003],[-55.28891601562498,72.93320312500003],[-55.66855468749998,73.00791015624998],[-55.288281249999955,73.32709960937498],[-56.10405273437496,73.55815429687499],[-55.83828125,73.75971679687501],[-56.22539062499999,74.12910156249995],[-57.23056640624995,74.12529296875007],[-56.70634765625002,74.21918945312501],[-56.717675781249994,74.42924804687499],[-56.25546874999998,74.52680664062498],[-58.56552734374998,75.35273437500001],[-58.249658203124994,75.50668945312503],[-58.51621093749995,75.68906250000006],[-61.18823242187494,76.157861328125],[-63.29130859374996,76.35205078125003],[-63.84306640624999,76.21713867187498],[-64.307275390625,76.31650390624998],[-65.36992187499993,76.13056640625004],[-65.87573242187494,76.23833007812505],[-66.46577148437498,76.13916015625],[-66.99257812500002,76.21293945312502],[-66.67480468750003,75.977392578125],[-68.14873046875002,76.06704101562497],[-69.48408203125001,76.39916992187503],[-68.1142578125,76.65063476562503],[-69.67382812499994,76.73588867187507],[-69.69423828125002,76.98945312500004],[-70.613134765625,76.82182617187499],[-71.14145507812498,77.02866210937503],[-70.86284179687496,77.175439453125],[-68.97832031250002,77.19531250000006],[-68.13554687499999,77.37958984375001],[-66.38945312499999,77.28027343750003],[-66.69121093749999,77.68120117187502],[-67.68808593749995,77.523779296875],[-68.62153320312498,77.60185546875002],[-69.35136718749999,77.467138671875],[-70.53540039062497,77.699560546875],[-70.11445312500001,77.84135742187505],[-71.27163085937494,77.81313476562497],[-72.81806640624995,78.1943359375],[-72.47250976562498,78.48203125],[-71.65131835937493,78.62314453124998],[-68.99345703124999,78.857421875],[-68.37705078124998,79.037841796875],[-65.82553710937503,79.17373046874997],[-64.79228515624993,80.00063476562502],[-64.17915039062498,80.09926757812497],[-66.84365234374997,80.07622070312507],[-67.05063476562503,80.384521484375],[-64.51552734374997,81],[-63.72197265624993,81.05732421875001],[-63.028662109375006,80.88955078125002],[-62.90336914062496,81.21835937500003],[-61.43598632812498,81.13359375000002],[-60.842871093750034,81.85537109374997],[-59.28193359374998,81.88403320312503],[-56.615136718749994,81.362890625],[-59.26181640624998,82.00664062500005],[-54.54887695312496,82.35063476562505],[-53.671337890624955,82.16406249999997],[-53.55566406250003,81.65327148437501],[-53.022558593750034,82.32172851562504],[-50.894433593749994,81.89521484375001],[-49.54106445312496,81.91806640625003],[-50.93554687500003,82.38281250000003],[-50.03710937499994,82.472412109375],[-44.7294921875,81.77983398437505],[-44.23886718749998,82.3681640625],[-45.55654296875002,82.74702148437498],[-41.87646484375,82.680322265625],[-41.36962890625003,82.75],[-46.136816406250006,82.85883789062504],[-46.169042968750006,83.06386718749997],[-45.41459960937496,83.01767578124998],[-43.00927734375003,83.26459960937501],[-41.300146484375006,83.10078125000004],[-40.35683593750002,83.332177734375],[-38.15625,82.9986328125],[-38.74956054687496,83.37084960937497],[-37.72333984374998,83.49775390624998],[-29.952880859375,83.56484374999997]]]]},"properties":{"name":"Greenland","childNum":14}},{"geometry":{"type":"Polygon","coordinates":[[[-89.2328125,15.888671875],[-88.89404296875,15.890625],[-88.60336914062499,15.76416015625],[-88.5939453125,15.950292968749991],[-88.22832031249999,15.72900390625],[-88.271435546875,15.694873046875003],[-88.36455078124999,15.616015625],[-88.68447265625,15.360498046874994],[-88.96098632812499,15.152441406249991],[-89.142578125,15.072314453125003],[-89.22236328125,14.866064453124991],[-89.16220703124999,14.669238281250003],[-89.17177734375,14.606884765624997],[-89.28671875,14.529980468749997],[-89.36259765624999,14.416015625],[-89.5736328125,14.390087890624997],[-89.54716796874999,14.241259765625003],[-90.04814453124999,13.904052734375],[-90.09521484375,13.736523437499997],[-90.60693359375,13.929003906250003],[-91.37734375,13.990185546874997],[-92.23515624999999,14.54541015625],[-92.15854492187499,14.963574218749997],[-92.14423828125,15.001953125],[-92.09873046874999,15.026757812499994],[-92.07480468749999,15.07421875],[-92.187158203125,15.320898437499991],[-92.08212890624999,15.495556640624997],[-91.9572265625,15.703222656249991],[-91.736572265625,16.07016601562499],[-91.433984375,16.070458984374994],[-90.97958984374999,16.07080078125],[-90.70322265624999,16.071044921875],[-90.52197265625,16.071191406249994],[-90.44716796875,16.072705078124997],[-90.45986328125,16.162353515625],[-90.450146484375,16.261376953124994],[-90.4169921875,16.351318359375],[-90.4169921875,16.39101562499999],[-90.47109375,16.43955078124999],[-90.57578125,16.467822265625003],[-90.63408203124999,16.5107421875],[-90.634375,16.565136718749997],[-90.65996093749999,16.630908203125003],[-90.710693359375,16.70810546874999],[-90.975830078125,16.867822265624994],[-91.409619140625,17.255859375],[-91.1955078125,17.254101562499997],[-90.99296874999999,17.25244140625],[-90.98916015625,17.81640625],[-89.16147460937499,17.81484375],[-89.2328125,15.888671875]]]},"properties":{"name":"Guatemala","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[144.74179687500003,13.25927734375],[144.64931640625002,13.4287109375],[144.87539062500002,13.614648437499994],[144.94082031250002,13.5703125],[144.74179687500003,13.25927734375]]]},"properties":{"name":"Guam","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-57.194775390625,5.5484375],[-57.3185546875,5.335351562499994],[-57.20981445312499,5.195410156249991],[-57.331005859375,5.020166015624994],[-57.711083984374994,4.991064453124991],[-57.91704101562499,4.820410156249991],[-57.84599609374999,4.668164062499997],[-58.05429687499999,4.101660156249991],[-57.646728515625,3.39453125],[-57.303662109375,3.377099609374994],[-57.19736328124999,2.853271484375],[-56.704345703125,2.036474609374991],[-56.4828125,1.942138671875],[-56.96953124999999,1.91640625],[-57.03759765625,1.936474609374997],[-57.092675781249994,2.005810546874997],[-57.118896484375,2.013964843749989],[-57.31748046874999,1.963476562499991],[-57.41269531249999,1.908935546875],[-57.500439453125,1.77382812499999],[-57.54575195312499,1.72607421875],[-57.59443359375,1.7041015625],[-57.795654296875,1.7],[-57.8734375,1.667285156249989],[-57.9828125,1.6484375],[-58.03466796875,1.520263671875],[-58.34067382812499,1.587548828124994],[-58.38037109375,1.530224609374997],[-58.39580078124999,1.481738281249989],[-58.5060546875,1.438671875],[-58.511865234374994,1.28466796875],[-58.68461914062499,1.281054687499989],[-58.73032226562499,1.247509765624997],[-58.78720703124999,1.20849609375],[-58.82177734375,1.201220703124989],[-59.231201171875,1.376025390624989],[-59.53569335937499,1.7],[-59.66660156249999,1.746289062499997],[-59.66850585937499,1.842333984374989],[-59.74072265625,1.874169921874994],[-59.75620117187499,1.900634765625],[-59.75522460937499,2.274121093749997],[-59.8896484375,2.362939453124994],[-59.9943359375,2.689990234374989],[-59.854394531249994,3.5875],[-59.55112304687499,3.933544921874997],[-59.557763671874994,3.960009765624989],[-59.62021484374999,4.023144531249997],[-59.73857421874999,4.226757812499997],[-59.69970703125,4.353515625],[-60.1486328125,4.533251953124989],[-59.990673828125,5.082861328124991],[-60.142041015625,5.238818359374989],[-60.241650390625,5.257958984374994],[-60.335205078125,5.199316406249991],[-60.45952148437499,5.188085937499991],[-60.6513671875,5.221142578124997],[-60.742138671875,5.202050781249994],[-61.37680664062499,5.906982421875],[-61.3908203125,5.938769531249989],[-61.303125,6.049511718749997],[-61.22495117187499,6.129199218749989],[-61.15947265624999,6.174414062499991],[-61.12871093749999,6.214306640624997],[-61.152294921875,6.385107421874991],[-61.151025390624994,6.446533203125],[-61.181591796875,6.513378906249997],[-61.20361328125,6.58837890625],[-61.14560546874999,6.69453125],[-60.717919921874994,6.768310546875],[-60.35209960937499,7.002880859374997],[-60.32207031249999,7.092041015625],[-60.32548828124999,7.133984375],[-60.34506835937499,7.15],[-60.46494140624999,7.166552734374989],[-60.523193359375,7.143701171874994],[-60.583203125,7.156201171874997],[-60.63330078125,7.211083984374994],[-60.718652343749994,7.535937499999989],[-60.513623046875,7.813183593749997],[-60.032421875,8.053564453124991],[-59.99072265625,8.162011718749994],[-59.96484375,8.191601562499997],[-59.849072265625,8.248681640624994],[-59.83164062499999,8.305957031249989],[-60.017529296875,8.54931640625],[-59.20024414062499,8.07460937499999],[-58.51108398437499,7.39804687499999],[-58.48056640624999,7.038134765624989],[-58.67294921874999,6.390771484374994],[-58.414990234375,6.85117187499999],[-57.982568359374994,6.785888671875],[-57.54013671874999,6.33154296875],[-57.2275390625,6.178417968749997],[-57.194775390625,5.5484375]]]},"properties":{"name":"Guyana","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[73.70742187500002,-53.13710937499999],[73.46513671875002,-53.184179687500006],[73.25117187500001,-52.97578125000001],[73.83779296875002,-53.11279296875],[73.70742187500002,-53.13710937499999]]]},"properties":{"name":"Heard I. and McDonald Is.","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-83.635498046875,14.876416015624997],[-84.53764648437496,14.633398437499963],[-84.64594726562498,14.661083984375011],[-84.86044921874998,14.809765625000011],[-84.98515624999999,14.752441406249972],[-85.059375,14.582958984374997],[-85.20834960937498,14.311816406250003],[-85.73393554687496,13.85869140625006],[-85.75341796875,13.852050781250028],[-85.78671874999995,13.844433593749997],[-85.98378906249997,13.965673828125006],[-86.04038085937503,14.050146484374977],[-86.33173828124995,13.770068359375031],[-86.37695312500003,13.755664062500031],[-86.61025390624997,13.774853515625026],[-86.73364257812494,13.763476562500017],[-86.75898437499995,13.746142578125045],[-86.77060546875003,13.698730468749972],[-86.763525390625,13.635253906250014],[-86.72958984375,13.4072265625],[-86.710693359375,13.31337890624998],[-86.72929687499996,13.284375],[-86.79213867187497,13.279785156249972],[-86.87353515624994,13.266503906250023],[-86.918212890625,13.223583984374983],[-87.00932617187499,13.007812499999986],[-87.0591796875,12.991455078125028],[-87.337255859375,12.979248046875028],[-87.48911132812503,13.352929687500051],[-87.814208984375,13.399169921875057],[-87.781884765625,13.521386718749994],[-87.71533203125003,13.812695312500011],[-87.73144531250003,13.841064453125014],[-87.80224609374997,13.889990234375034],[-87.89199218749997,13.894970703124983],[-87.99101562499996,13.879638671874972],[-88.15102539062497,13.987353515624974],[-88.44912109374994,13.850976562499994],[-88.48266601562503,13.854248046875043],[-88.49765624999998,13.904541015624986],[-88.50434570312501,13.964208984374963],[-88.51254882812498,13.97895507812504],[-89.12050781249994,14.370214843749991],[-89.36259765624996,14.416015625],[-89.17177734375,14.606884765624983],[-89.16220703125,14.669238281249989],[-89.22236328125001,14.86606445312502],[-89.142578125,15.072314453125031],[-88.96098632812496,15.15244140625002],[-88.68447265625002,15.360498046875037],[-88.36455078124996,15.616015625000045],[-88.27143554687498,15.694873046875045],[-88.22832031249999,15.729003906249972],[-88.131103515625,15.701025390625034],[-87.87495117187495,15.879345703124955],[-86.35664062499998,15.783203125],[-85.93627929687497,15.953417968750045],[-85.98564453124999,16.02416992187497],[-85.48369140624996,15.899511718749977],[-84.97373046874998,15.989892578124994],[-84.55966796875,15.802001953125],[-84.26142578124998,15.822607421875034],[-83.765283203125,15.405468750000054],[-83.972802734375,15.519628906250034],[-84.11132812499997,15.492431640625],[-84.09506835937503,15.400927734375017],[-83.92744140624998,15.394042968750028],[-83.76044921874998,15.220361328124994],[-83.49794921874997,15.222119140624997],[-83.64638671875,15.368408203125043],[-83.36918945312493,15.239990234375],[-83.29086914062498,15.078906250000045],[-83.2255859375,15.042285156250045],[-83.15751953124999,14.993066406249966],[-83.41503906249994,15.008056640625],[-83.5365234375,14.977001953124983],[-83.635498046875,14.876416015624997]]]},"properties":{"name":"Honduras","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[17.60781250000005,42.76904296875],[17.744238281250063,42.70034179687505],[17.34414062500008,42.790380859375006],[17.60781250000005,42.76904296875]]],[[[16.650683593750017,42.99658203125],[17.188281250000045,42.917041015625045],[16.850683593750006,42.8955078125],[16.650683593750017,42.99658203125]]],[[[17.667578125000063,42.897119140624994],[18.436328125000017,42.559716796874994],[18.517480468750023,42.43291015624999],[17.823828125,42.79741210937502],[17.045410156250057,43.014892578125],[17.667578125000063,42.897119140624994]]],[[[16.785253906250006,43.270654296874966],[16.490332031250034,43.28618164062502],[16.44892578125004,43.38706054687506],[16.89130859375001,43.314648437499955],[16.785253906250006,43.270654296874966]]],[[[15.371386718750074,43.973828124999955],[15.437207031250068,43.899511718750006],[15.270019531250028,44.01074218750003],[15.371386718750074,43.973828124999955]]],[[[14.488085937500074,44.66005859375005],[14.31240234375008,44.90039062499997],[14.33125,45.16499023437498],[14.488085937500074,44.66005859375005]]],[[[14.810253906250068,44.97705078124997],[14.45039062500004,45.079199218750006],[14.571093750000017,45.224755859374994],[14.810253906250068,44.97705078124997]]],[[[18.905371093750006,45.931738281250034],[18.839062499999983,45.83574218750002],[19.064257812500045,45.51499023437506],[19.004687500000074,45.39951171875006],[19.4,45.2125],[19.062890625000023,45.13720703125],[19.007128906250045,44.86918945312502],[18.83642578125,44.883251953124955],[18.66259765625,45.07744140624999],[17.812792968750074,45.078125],[16.918652343749983,45.27656249999998],[16.53066406250008,45.21669921875002],[16.29335937500005,45.00883789062496],[16.028320312500057,45.18959960937502],[15.788085937500057,45.17895507812497],[15.736621093750045,44.76582031250001],[16.10341796875008,44.52099609375006],[16.300097656250017,44.12451171875],[17.27382812500005,43.44575195312501],[17.650488281250063,43.006591796875],[17.585156250000068,42.93837890625005],[16.903125,43.392431640625006],[16.393945312500023,43.54335937500002],[15.985546875000068,43.519775390625],[15.185839843750017,44.17211914062503],[15.122949218749994,44.256787109374955],[15.470996093750045,44.27197265625003],[14.981347656250023,44.60292968750005],[14.854589843750034,45.08100585937501],[14.550488281249983,45.297705078125006],[14.31269531250004,45.33779296875002],[13.86074218750008,44.83740234375003],[13.517187500000063,45.481787109375034],[13.878710937500017,45.428369140624994],[14.369921875000074,45.48144531250006],[14.427343750000034,45.50576171875002],[14.56884765625,45.65722656249997],[14.591796875000057,45.65126953125002],[14.649511718750006,45.57148437500001],[14.793066406250034,45.47822265625001],[14.95458984375,45.499902343749994],[15.110449218750034,45.450781250000034],[15.242089843750023,45.44140624999997],[15.339453125000063,45.46704101562506],[15.326660156250028,45.502294921875034],[15.291210937500011,45.541552734375045],[15.283593750000051,45.5796875],[15.35371093750004,45.659912109375],[15.27705078125004,45.73261718749998],[15.652148437500074,45.86215820312498],[15.675585937500045,45.98369140624996],[15.666210937500011,46.04848632812502],[15.596875,46.10922851562506],[15.592578125000017,46.139990234375006],[15.608984374999977,46.171923828125045],[16.1064453125,46.382226562499994],[16.32119140625005,46.53461914062504],[16.42763671875005,46.5244140625],[16.516210937499977,46.499902343749966],[16.569921875,46.48500976562505],[16.748046875000057,46.41640625000002],[16.87148437500008,46.33930664062504],[17.310644531250006,45.99614257812502],[17.80712890625,45.79042968750002],[18.358300781250023,45.75302734375006],[18.533593750000023,45.79614257812503],[18.56464843750004,45.81328124999999],[18.666015625,45.90747070312497],[18.905371093750006,45.931738281250034]]]]},"properties":{"name":"Croatia","childNum":8}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-72.80458984374997,18.777685546875063],[-72.82221679687501,18.707128906249977],[-73.07797851562498,18.790917968749994],[-73.27641601562499,18.95405273437501],[-72.80458984374997,18.777685546875063]]],[[[-71.647216796875,19.195947265624994],[-71.80712890624997,18.987011718749983],[-71.733642578125,18.85639648437501],[-71.72705078125,18.80322265625003],[-71.74321289062502,18.73291015625],[-71.86650390624999,18.61416015625005],[-71.98686523437499,18.61035156249997],[-72.000390625,18.59790039062503],[-71.94038085937493,18.51259765625005],[-71.87255859374997,18.416210937499955],[-71.76191406249998,18.34130859374997],[-71.73725585937495,18.27080078124999],[-71.76831054687497,18.039160156250063],[-71.85292968749997,18.119140625],[-71.94609375,18.186083984375045],[-72.05986328124993,18.228564453125017],[-72.87666015624998,18.151757812499994],[-73.38515625000002,18.251171874999983],[-73.747314453125,18.190234375000017],[-73.88496093749998,18.041894531249994],[-74.478125,18.45],[-74.3875,18.624707031249983],[-74.22773437499998,18.662695312499977],[-72.78935546874996,18.434814453125],[-72.37607421874998,18.57446289062503],[-72.34765624999994,18.674951171874994],[-72.81108398437496,19.071582031250074],[-72.70322265625,19.441064453125023],[-73.43837890624994,19.722119140624983],[-73.21777343750003,19.88369140625005],[-72.63701171875002,19.90087890625],[-72.21982421875003,19.744628906250057],[-71.834716796875,19.696728515624983],[-71.77924804687498,19.718164062499994],[-71.75742187499998,19.68818359375001],[-71.71147460937493,19.486572265625057],[-71.74648437499997,19.28583984375001],[-71.647216796875,19.195947265624994]]]]},"properties":{"name":"Haiti","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[22.1318359375,48.405322265624996],[22.253710937500017,48.407373046874994],[22.582421875000023,48.134033203125],[22.769140625,48.109619140625],[22.87666015625001,47.947265625],[21.99970703125001,47.505029296874994],[21.121679687500006,46.282421875],[20.76025390625,46.246240234374994],[20.613671875000023,46.13349609375],[20.508105468750017,46.166943359375],[20.28095703125001,46.1330078125],[20.241796875,46.10859375],[20.21015625000001,46.126025390624996],[20.161425781250017,46.141894531249996],[19.93408203125,46.161474609375],[19.84443359375001,46.145898437499994],[19.61347656250001,46.169189453125],[19.421289062500023,46.064453125],[18.666015625,45.907470703125],[18.56464843750001,45.81328125],[18.533593750000023,45.796142578125],[18.358300781250023,45.75302734375],[17.80712890625,45.790429687499994],[17.310644531250006,45.996142578124996],[16.871484375000023,46.339306640625],[16.748046875,46.41640625],[16.569921875,46.485009765624994],[16.516210937500006,46.499902343749994],[16.283593750000023,46.857275390625],[16.093066406250017,46.86328125],[16.453417968750017,47.006787109375],[16.44287109375,47.39951171875],[16.676562500000017,47.536035156249994],[16.421289062500023,47.674462890624994],[17.06660156250001,47.707568359374996],[17.147363281250023,48.00595703125],[17.76191406250001,47.770166015624994],[18.72421875,47.787158203124996],[18.791894531250023,48.000292968749996],[19.625390625000023,48.223095703125],[19.95039062500001,48.146630859374994],[20.333789062500017,48.295556640624994],[20.490039062500017,48.526904296874996],[21.45136718750001,48.55224609375],[21.766992187500023,48.3380859375],[22.1318359375,48.405322265624996]]]},"properties":{"name":"Hungary","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[122.9489257812501,-10.90927734375002],[122.82617187500003,-10.899121093749983],[122.84570312500003,-10.761816406249991],[123.37109375000003,-10.474902343749989],[123.41816406250004,-10.651269531250037],[122.9489257812501,-10.90927734375002]]],[[[121.8830078125001,-10.590332031249957],[121.70468750000006,-10.5556640625],[121.99833984375002,-10.446972656249983],[121.8830078125001,-10.590332031249957]]],[[[123.41621093750004,-10.302636718749966],[123.3255859375,-10.264160156249943],[123.45878906250002,-10.13994140624996],[123.41621093750004,-10.302636718749966]]],[[[120.0125,-9.374707031250026],[120.78447265625002,-9.95703125],[120.83261718750006,-10.0375],[120.69804687500002,-10.206640624999949],[120.4391601562501,-10.294042968749991],[120.14482421875002,-10.200097656249952],[119.60107421874997,-9.773535156250006],[119.08544921875003,-9.706933593750023],[118.95878906250002,-9.519335937500003],[119.29589843749997,-9.3671875],[119.9420898437501,-9.301464843750026],[120.0125,-9.374707031250026]]],[[[125.06816406250002,-9.511914062499997],[124.42753906250002,-10.14863281250004],[123.7472656250001,-10.347167968749986],[123.60478515625002,-10.270117187500006],[123.71640625000012,-10.078613281249986],[123.5892578125,-9.966796875000028],[123.709375,-9.61484375],[124.0363281250001,-9.341601562500031],[124.28232421875012,-9.427929687500026],[124.44443359375012,-9.190332031250023],[124.92226562500005,-8.942480468749977],[124.93681640625007,-9.053417968750026],[125.14902343750012,-9.042578125000034],[125.10048828125,-9.189843750000023],[124.96015625000004,-9.213769531250009],[125.06816406250002,-9.511914062499997]]],[[[115.60996093750012,-8.769824218749974],[115.48046875000003,-8.715429687500006],[115.56142578125,-8.669921874999972],[115.60996093750012,-8.769824218749974]]],[[[122.97734375000002,-8.54521484374996],[122.88779296875006,-8.587304687500009],[123.01054687500002,-8.448339843750034],[123.153125,-8.475781250000026],[122.97734375000002,-8.54521484374996]]],[[[119.46406250000004,-8.741015624999974],[119.38554687500002,-8.736035156250026],[119.4464843750001,-8.429199218749957],[119.55722656250012,-8.518847656250003],[119.46406250000004,-8.741015624999974]]],[[[123.31748046875012,-8.354785156249974],[123.02500000000012,-8.395507812500014],[123.21708984375002,-8.235449218750006],[123.33603515625006,-8.269042968750014],[123.31748046875012,-8.354785156249974]]],[[[116.64082031250004,-8.613867187500006],[116.51425781250012,-8.820996093750011],[116.58652343750012,-8.886132812499966],[116.23935546875006,-8.912109375000014],[115.85732421875005,-8.787890625000017],[116.07646484375002,-8.744921874999974],[116.06113281250006,-8.437402343750023],[116.4015625000001,-8.204199218750034],[116.7189453125001,-8.336035156249977],[116.64082031250004,-8.613867187500006]]],[[[124.28662109375003,-8.32949218749998],[124.14667968750004,-8.531445312499997],[123.92773437500003,-8.448925781249969],[124.23955078125002,-8.20341796874996],[124.28662109375003,-8.32949218749998]]],[[[123.92480468750003,-8.2724609375],[123.55302734375007,-8.566796875],[123.23007812500006,-8.530664062500023],[123.47587890625007,-8.322265625000014],[123.39121093750012,-8.280468750000026],[123.77597656250006,-8.190429687499986],[123.92480468750003,-8.2724609375]]],[[[138.89511718750006,-8.388671874999957],[138.56337890625,-8.30908203125],[138.79619140625007,-8.173632812500017],[138.89511718750006,-8.388671874999957]]],[[[117.55634765625004,-8.367285156249949],[117.49052734375007,-8.183398437499974],[117.66503906249997,-8.148242187500003],[117.55634765625004,-8.367285156249949]]],[[[124.5755859375,-8.140820312499997],[125.05029296874997,-8.179589843749994],[125.13173828125,-8.326464843749989],[124.38066406250002,-8.41513671875002],[124.43066406249997,-8.18320312500002],[124.5755859375,-8.140820312499997]]],[[[127.8234375000001,-8.098828124999969],[128.11923828125012,-8.17070312499996],[128.02353515625006,-8.255371093749972],[127.82089843750012,-8.190234375000031],[127.8234375000001,-8.098828124999969]]],[[[122.7829101562501,-8.61171875],[121.65136718749997,-8.898730468749946],[121.41464843750006,-8.81484375],[121.32832031250004,-8.916894531250009],[121.03525390625012,-8.935449218749966],[120.55048828125004,-8.80185546875002],[119.909375,-8.857617187500011],[119.80791015625002,-8.697656250000023],[119.87480468750007,-8.419824218749994],[120.61025390625005,-8.24042968750004],[121.44453125000004,-8.57783203125004],[121.96650390625004,-8.455175781250006],[122.32324218749997,-8.628320312500023],[122.85048828125,-8.304394531250011],[122.91914062500004,-8.221875],[122.75859375000002,-8.185937499999952],[122.91699218749997,-8.105566406250006],[123.00595703125006,-8.329101562499986],[122.7829101562501,-8.61171875]]],[[[130.86220703125,-8.31875],[130.77519531250002,-8.34990234374996],[131.02011718750012,-8.091308593749943],[131.17636718750006,-8.130761718749994],[130.86220703125,-8.31875]]],[[[118.24238281250004,-8.317773437499994],[118.61191406250006,-8.28066406249998],[118.71386718749997,-8.41494140624998],[118.926171875,-8.297656249999974],[119.12968750000002,-8.668164062499969],[118.74589843750002,-8.735449218749991],[118.83261718750012,-8.833398437499966],[118.47861328125012,-8.856445312499957],[118.37890625000003,-8.674609375000031],[118.18994140624997,-8.840527343749997],[117.06132812500002,-9.099023437499994],[116.78847656250005,-9.006347656250028],[116.83505859375012,-8.532421875000026],[117.16484375000007,-8.367187500000014],[117.56708984375004,-8.426367187499991],[117.80605468750005,-8.711132812500011],[117.96953125000002,-8.728027343749986],[118.23486328124997,-8.591894531249963],[117.81484375000005,-8.342089843749974],[117.7552734375,-8.149511718749991],[118.11748046875007,-8.12226562500004],[118.24238281250004,-8.317773437499994]]],[[[115.44785156250012,-8.155175781249994],[115.70429687500004,-8.40712890624998],[115.14492187500005,-8.849023437500037],[115.05507812500005,-8.573046874999946],[114.61318359375,-8.37832031249998],[114.46757812500007,-8.166308593749946],[114.93847656249997,-8.18710937500002],[115.15400390625004,-8.065722656249974],[115.44785156250012,-8.155175781249994]]],[[[129.83886718749997,-7.954589843749986],[129.71347656250012,-8.04072265625004],[129.60898437500006,-7.803417968750011],[129.81298828124997,-7.819726562499952],[129.83886718749997,-7.954589843749986]]],[[[126.80097656250004,-7.667871093750009],[126.4720703125,-7.950390625000011],[126.04003906250003,-7.885839843750006],[125.79824218750005,-7.984570312499969],[125.97529296875004,-7.663378906249989],[126.21367187500002,-7.706738281250026],[126.60957031250004,-7.571777343749972],[126.80097656250004,-7.667871093750009]]],[[[127.41943359375003,-7.623046875000028],[127.37070312500012,-7.512792968749949],[127.47519531250012,-7.531054687500031],[127.41943359375003,-7.623046875000028]]],[[[138.53535156250004,-8.273632812499969],[138.2962890625,-8.405175781250037],[137.65039062499997,-8.386132812499966],[138.08183593750002,-7.566210937500003],[138.29550781250012,-7.4384765625],[138.76982421875002,-7.390429687499974],[138.98906250000002,-7.696093749999989],[138.53535156250004,-8.273632812499969]]],[[[131.3255859375,-7.999511718749986],[131.11376953125003,-7.997363281249989],[131.13779296875012,-7.684863281250017],[131.64345703125,-7.11279296875],[131.73613281250007,-7.197070312500017],[131.64384765625002,-7.266894531249946],[131.62441406250005,-7.626171874999955],[131.3255859375,-7.999511718749986]]],[[[131.98203125000006,-7.202050781249966],[131.75078125000002,-7.116796875],[131.92226562500005,-7.104492187499986],[131.98203125000006,-7.202050781249966]]],[[[128.6701171875001,-7.183300781249969],[128.52978515625003,-7.134570312499989],[128.62773437500007,-7.06875],[128.6701171875001,-7.183300781249969]]],[[[120.77441406250003,-7.118945312500003],[120.64082031250004,-7.115820312499991],[120.63339843750006,-7.018261718750011],[120.77441406250003,-7.118945312500003]]],[[[113.84453125000007,-7.105371093749994],[113.12695312499997,-7.224121093750028],[112.72587890625007,-7.072753906250014],[112.86806640625,-6.899902343749972],[113.06738281250003,-6.879980468749991],[113.97470703125012,-6.873046875],[114.0736328125,-6.960156249999983],[113.84453125000007,-7.105371093749994]]],[[[115.37705078125006,-6.97080078125002],[115.22031250000012,-6.952539062500037],[115.24052734375007,-6.861230468749994],[115.54609375000004,-6.938671874999955],[115.37705078125006,-6.97080078125002]]],[[[105.25283203125005,-6.640429687499946],[105.12138671875007,-6.614941406249997],[105.26054687500002,-6.523925781250014],[105.25283203125005,-6.640429687499946]]],[[[134.53681640625004,-6.442285156249994],[134.32275390624997,-6.84873046875002],[134.09082031249997,-6.833789062500003],[134.10703125000006,-6.471582031250009],[134.19462890625007,-6.459765625],[134.11464843750005,-6.190820312500009],[134.53681640625004,-6.442285156249994]]],[[[107.37392578125005,-6.007617187499989],[107.66679687500002,-6.215820312499957],[108.33017578125012,-6.286035156249966],[108.67783203125006,-6.790527343749972],[110.42626953124997,-6.947265625000028],[110.83476562500002,-6.424218749999952],[110.97226562500012,-6.435644531249977],[111.18154296875005,-6.686718749999969],[111.54033203125002,-6.648242187500031],[112.0873046875,-6.89335937499996],[112.53925781250004,-6.926464843749955],[112.64873046875007,-7.221289062499977],[112.7943359375,-7.304492187499974],[112.79453125000012,-7.55244140625004],[113.01357421875005,-7.657714843749986],[113.49765625000006,-7.723828124999955],[114.07070312500005,-7.633007812500011],[114.40927734375012,-7.79248046875],[114.38691406250004,-8.405175781250037],[114.58378906250002,-8.769628906250034],[113.25332031250005,-8.286718749999963],[112.67880859375006,-8.409179687499957],[111.50996093750004,-8.30507812499998],[110.60722656250002,-8.149414062499972],[109.28164062500005,-7.704882812500003],[108.74121093749997,-7.667089843750034],[108.45175781250006,-7.79697265625002],[107.91748046875003,-7.724121093750014],[107.28496093750007,-7.471679687500014],[106.45527343750004,-7.368652343749986],[106.51972656250004,-7.053710937499943],[106.19824218749997,-6.927832031249977],[105.25546875000012,-6.835253906250031],[105.37089843750002,-6.664355468750031],[105.48369140625007,-6.781542968750017],[105.65507812500002,-6.469531249999946],[105.78691406250002,-6.456933593749966],[105.86826171875006,-6.11640625000004],[106.075,-5.914160156249963],[106.82519531249997,-6.098242187499977],[107.0462890625,-5.90419921874998],[107.37392578125005,-6.007617187499989]]],[[[120.52832031249997,-6.2984375],[120.48730468749997,-6.464843749999972],[120.47734375000007,-5.775292968750009],[120.52832031249997,-6.2984375]]],[[[112.7194335937501,-5.81103515625],[112.58603515625006,-5.803613281249994],[112.69003906250006,-5.726171875000034],[112.7194335937501,-5.81103515625]]],[[[132.80712890625003,-5.850781250000011],[132.68144531250002,-5.91259765625],[132.63017578125002,-5.60703125],[132.80712890625003,-5.850781250000011]]],[[[134.74697265625,-5.707031249999957],[134.71416015625007,-6.29511718750004],[134.44111328125004,-6.334863281249966],[134.15488281250006,-6.06289062499998],[134.3019531250001,-6.009765624999986],[134.34306640625002,-5.833007812499943],[134.20537109375002,-5.707226562499997],[134.34130859375003,-5.712890624999986],[134.57080078124997,-5.42734375],[134.74697265625,-5.707031249999957]]],[[[132.92626953124997,-5.902050781249983],[132.84501953125002,-5.987988281249997],[133.13847656250002,-5.317871093749986],[133.11962890625003,-5.575976562499989],[132.92626953124997,-5.902050781249983]]],[[[102.36718750000003,-5.478710937499983],[102.1107421875,-5.32255859374996],[102.3717773437501,-5.366406250000011],[102.36718750000003,-5.478710937499983]]],[[[123.62675781250007,-5.271582031249963],[123.58261718750006,-5.36738281250004],[123.54277343750002,-5.271093749999963],[123.62675781250007,-5.271582031249963]]],[[[122.04296874999997,-5.437988281250028],[121.80849609375,-5.256152343750017],[121.91367187500012,-5.072265624999957],[122.04101562500003,-5.158789062499991],[122.04296874999997,-5.437988281250028]]],[[[122.64511718750012,-5.26943359374998],[122.5638671875,-5.3875],[122.28310546875,-5.319531249999969],[122.39628906250002,-5.069824218749986],[122.36894531250007,-4.767187499999977],[122.70195312500002,-4.61865234375],[122.75986328125012,-4.933886718750003],[122.61406250000007,-5.138671874999986],[122.64511718750012,-5.26943359374998]]],[[[123.17978515625006,-4.551171875000023],[123.195703125,-4.82265625],[123.05517578124997,-4.748242187500026],[122.97167968750003,-5.138476562500031],[123.18730468750007,-5.333007812499957],[122.96875,-5.405761718749943],[122.81210937500012,-5.671289062499952],[122.64501953124997,-5.663378906250031],[122.58642578124997,-5.488867187500006],[122.76650390625005,-5.210156249999983],[122.85332031250007,-4.618359375000026],[123.074609375,-4.38691406250004],[123.17978515625006,-4.551171875000023]]],[[[133.57080078124997,-4.245898437500003],[133.621875,-4.299316406249957],[133.32089843750006,-4.111035156249969],[133.57080078124997,-4.245898437500003]]],[[[123.2423828125001,-4.112988281250011],[123.07617187499997,-4.227148437499991],[122.96904296875002,-4.029980468749969],[123.21191406250003,-3.997558593750028],[123.2423828125001,-4.112988281250011]]],[[[128.56259765625012,-3.58544921875],[128.39160156250003,-3.637890625000026],[128.45156250000005,-3.514746093749991],[128.56259765625012,-3.58544921875]]],[[[128.2755859375001,-3.67460937499996],[127.97802734374997,-3.770996093749972],[127.925,-3.69931640625002],[128.32910156249997,-3.51591796874996],[128.2755859375001,-3.67460937499996]]],[[[116.42412109375007,-3.464453124999963],[116.38779296875012,-3.636718749999972],[116.3265625,-3.539062499999972],[116.42412109375007,-3.464453124999963]]],[[[116.30332031250006,-3.868164062499957],[116.05878906250004,-4.006933593749991],[116.06357421875006,-3.457910156249952],[116.26972656250004,-3.251074218750006],[116.30332031250006,-3.868164062499957]]],[[[126.86113281250007,-3.087890624999986],[127.22734375000007,-3.391015625],[127.22958984375006,-3.633007812500011],[126.68632812500007,-3.823632812500037],[126.21455078125004,-3.605175781250026],[126.05654296875,-3.420996093749991],[126.08828125,-3.105468750000014],[126.86113281250007,-3.087890624999986]]],[[[106.88642578125004,-3.005273437500023],[106.7428710937501,-2.932812500000011],[106.91064453124997,-2.93398437499998],[106.88642578125004,-3.005273437500023]]],[[[129.75468750000007,-2.865820312500034],[130.3791015625001,-2.989355468749977],[130.56992187500006,-3.130859375000028],[130.85996093750006,-3.570312500000028],[130.805078125,-3.85771484374996],[129.844140625,-3.327148437499957],[129.51171875000003,-3.32851562499998],[129.46767578125005,-3.453222656249977],[128.8625,-3.234960937500006],[128.51660156249997,-3.449121093750037],[128.13203125000004,-3.157421875000026],[127.90234374999997,-3.496289062499955],[127.87792968749997,-3.222070312499966],[128.19853515625002,-2.865917968749969],[128.99111328125,-2.82851562499998],[129.17441406250006,-2.933496093749966],[129.48417968750002,-2.785742187499977],[129.75468750000007,-2.865820312500034]]],[[[100.42509765625007,-3.182910156249974],[100.46513671875007,-3.32851562499998],[100.20429687500004,-2.98681640625],[100.19853515625002,-2.785546875000023],[100.45458984375003,-3.001953124999972],[100.42509765625007,-3.182910156249974]]],[[[108.2072265625001,-2.997656249999977],[108.05527343750006,-3.22685546874996],[107.85820312500002,-3.086328125000023],[107.61445312500004,-3.209375],[107.56347656250003,-2.920117187499997],[107.66630859375002,-2.566308593750037],[107.83779296875005,-2.530273437499972],[108.21513671875002,-2.696972656250011],[108.29062500000012,-2.829980468750023],[108.2072265625001,-2.997656249999977]]],[[[100.20410156249997,-2.741015625000017],[100.01494140625007,-2.819726562499966],[99.98789062500006,-2.525390624999957],[100.20410156249997,-2.741015625000017]]],[[[99.84306640625007,-2.343066406250031],[99.60703125000012,-2.257519531250011],[99.57216796875005,-2.025781249999966],[99.84306640625007,-2.343066406250031]]],[[[126.055078125,-2.451269531249963],[125.86289062500006,-2.077148437499943],[125.92275390625,-1.974804687499969],[126.055078125,-2.451269531249963]]],[[[126.02421875000007,-1.789746093750011],[126.33173828125004,-1.822851562500006],[125.47919921875004,-1.940039062499991],[125.38720703124997,-1.843066406249946],[126.02421875000007,-1.789746093750011]]],[[[130.35332031250007,-1.690527343749963],[130.41884765625,-1.971289062499963],[130.24804687500003,-2.047753906249994],[129.7376953125,-1.866894531250011],[130.35332031250007,-1.690527343749963]]],[[[124.96953125000007,-1.70546875],[125.18789062500005,-1.712890624999986],[125.31406250000006,-1.877148437499969],[124.41777343750002,-2.005175781250031],[124.32968750000012,-1.858886718749972],[124.41757812500006,-1.659277343749991],[124.96953125000007,-1.70546875]]],[[[135.47421875000006,-1.591796875000014],[136.89257812500003,-1.799707031249994],[136.22812500000012,-1.893652343749949],[135.47421875000006,-1.591796875000014]]],[[[108.953125,-1.61962890625],[108.83789062499997,-1.661621093750028],[108.80371093750003,-1.567773437499994],[108.953125,-1.61962890625]]],[[[106.04570312500002,-1.669433593750014],[106.36591796875004,-2.464843749999972],[106.81845703125006,-2.573339843749963],[106.6120117187501,-2.895507812499957],[106.66718750000004,-3.071777343749986],[105.99873046875004,-2.824902343749955],[105.7858398437501,-2.18134765625004],[105.13339843750012,-2.042578125],[105.45957031250006,-1.574707031249986],[105.58544921875003,-1.526757812499994],[105.7008789062501,-1.731054687499963],[105.7204101562501,-1.533886718750026],[105.91005859375,-1.504980468749991],[106.04570312500002,-1.669433593750014]]],[[[123.59755859375,-1.704296875000011],[123.48251953125006,-1.681445312499974],[123.52851562500004,-1.502832031250009],[123.59755859375,-1.704296875000011]]],[[[128.1530273437501,-1.66054687499998],[127.56162109375012,-1.728515624999972],[127.39501953125003,-1.589843749999972],[127.64667968750004,-1.332421875],[128.1530273437501,-1.66054687499998]]],[[[123.2123046875,-1.171289062499966],[123.23779296874997,-1.389355468749983],[123.43476562500004,-1.236816406249986],[123.54726562500005,-1.337402343749957],[123.51191406250004,-1.447363281249977],[123.27490234374997,-1.437207031249955],[123.17294921875006,-1.616015624999974],[123.15039062500003,-1.304492187500003],[122.89042968750007,-1.58720703124996],[122.81083984375002,-1.432128906249986],[122.90800781250002,-1.182226562499963],[123.2123046875,-1.171289062499966]]],[[[109.71025390625007,-1.1806640625],[109.46367187500002,-1.277539062500026],[109.4759765625,-0.9853515625],[109.74335937500004,-1.039355468749989],[109.71025390625007,-1.1806640625]]],[[[134.96533203124997,-1.116015624999974],[134.86171875,-1.114160156249952],[134.82792968750002,-0.978808593750003],[134.99628906250004,-1.03408203124998],[134.96533203124997,-1.116015624999974]]],[[[99.16386718750007,-1.777929687500006],[98.82773437500006,-1.609960937499977],[98.60175781250004,-1.197851562499949],[98.67607421875007,-0.970507812500003],[98.93261718750003,-0.954003906250009],[99.2672851562501,-1.62773437499996],[99.16386718750007,-1.777929687500006]]],[[[131.00185546875005,-1.315527343750034],[130.78232421875006,-1.255468749999963],[130.67294921875006,-0.959765625000031],[131.03300781250007,-0.917578124999963],[131.00185546875005,-1.315527343750034]]],[[[135.38300781250004,-0.6513671875],[135.89355468749997,-0.725781249999969],[136.37529296875007,-1.094042968750031],[136.1647460937501,-1.214746093750023],[135.91503906250003,-1.178417968749997],[135.74707031249997,-0.823046874999974],[135.64570312500004,-0.881933593749991],[135.38300781250004,-0.6513671875]]],[[[127.30039062500012,-0.780957031250026],[127.1564453125001,-0.760937500000026],[127.20908203125006,-0.619335937499955],[127.30039062500012,-0.780957031250026]]],[[[130.6266601562501,-0.528710937499966],[130.46542968750006,-0.486523437499983],[130.6159179687501,-0.417285156250003],[130.6266601562501,-0.528710937499966]]],[[[121.86435546875012,-0.406835937500006],[121.88125,-0.502636718749983],[121.65527343749997,-0.526171874999989],[121.86435546875012,-0.406835937500006]]],[[[140.97343750000007,-2.609765625],[140.97353515625,-2.803417968750026],[140.975,-6.346093750000023],[140.86230468749997,-6.740039062499989],[140.97519531250006,-6.90537109375002],[140.97617187500012,-9.11875],[140.00292968749997,-8.19550781250004],[140.11699218750002,-7.923730468750009],[139.93476562500004,-8.101171875],[139.38564453125,-8.189062499999963],[139.24882812500002,-7.982421874999972],[138.890625,-8.237792968749943],[139.08798828125012,-7.587207031250017],[138.74794921875,-7.25146484375],[139.17685546875006,-7.1904296875],[138.84570312500003,-7.13632812499999],[138.60136718750007,-6.936523437499972],[138.86455078125007,-6.858398437499943],[138.43867187500004,-6.343359375],[138.2962890625,-5.94902343749996],[138.37460937500006,-5.84365234374998],[138.19960937500005,-5.80703125],[138.33964843750007,-5.675683593749966],[138.08710937500004,-5.70917968750004],[138.06083984375002,-5.46523437499998],[137.27978515624997,-4.945410156249949],[136.61884765625004,-4.81875],[135.97968750000004,-4.530859374999963],[135.19560546875007,-4.450683593749972],[134.67968749999997,-4.079101562499943],[134.70654296875003,-3.954785156250026],[134.88652343750007,-3.938476562499986],[134.26621093750012,-3.945800781249972],[134.14707031250006,-3.79677734374998],[133.97382812500004,-3.817968750000034],[133.67832031250006,-3.4794921875],[133.8415039062501,-3.054785156249991],[133.70039062500004,-3.0875],[133.653125,-3.364355468749991],[133.51816406250012,-3.411914062500003],[133.40087890625003,-3.899023437500034],[133.24873046875004,-4.062304687499989],[132.91445312500005,-4.05693359374996],[132.75390625000003,-3.703613281250014],[132.86972656250006,-3.550976562499997],[132.75136718750005,-3.294628906249997],[131.97119140624997,-2.788574218750014],[132.2306640625001,-2.680371093749997],[132.725,-2.789062500000028],[133.19101562500006,-2.43779296874996],[133.70009765625005,-2.624609375],[133.75332031250005,-2.450683593750014],[133.90488281250012,-2.390917968750003],[133.79101562500003,-2.293652343749997],[133.92158203125004,-2.102050781249957],[132.96279296875005,-2.272558593749963],[132.30761718749997,-2.24228515625002],[132.02343749999997,-1.99033203125002],[131.93037109375004,-1.559667968750034],[131.29375,-1.393457031250009],[130.99589843750007,-1.42470703124998],[131.1908203125,-1.165820312500003],[131.2572265625,-0.855468750000014],[131.80429687500006,-0.703808593750026],[132.39375,-0.355468750000028],[132.85644531250003,-0.417382812500023],[133.47265624999997,-0.726171874999963],[133.97451171875,-0.744335937500026],[134.11152343750004,-0.84677734375002],[134.07197265625004,-1.001855468749994],[134.25957031250007,-1.362988281250026],[134.105859375,-1.720996093749946],[134.19482421875003,-2.309082031249943],[134.45996093749997,-2.83232421874996],[134.48330078125,-2.583007812499972],[134.62744140624997,-2.536718749999963],[134.70214843749997,-2.933593749999986],[134.84335937500006,-2.909179687499986],[134.88681640625006,-3.209863281249966],[135.25156250000012,-3.368554687499966],[135.48662109375002,-3.34511718749998],[135.85917968750002,-2.99531250000004],[136.38994140625002,-2.273339843750037],[137.07207031250002,-2.105078124999949],[137.1710937500001,-2.025488281249991],[137.1234375,-1.840917968749963],[137.80625000000012,-1.483203125],[139.78955078125003,-2.34824218750002],[140.62255859374997,-2.44580078125],[140.74746093750005,-2.607128906249997],[140.97343750000007,-2.609765625]]],[[[104.47421875000012,-0.334667968749955],[104.59013671875002,-0.466601562500017],[104.36318359375,-0.658593749999966],[104.25712890625002,-0.463281249999966],[104.47421875000012,-0.334667968749955]]],[[[127.56699218750006,-0.318945312499949],[127.68242187500002,-0.46835937500002],[127.60498046874997,-0.610156249999946],[127.88017578125002,-0.808691406249991],[127.7611328125,-0.883691406249994],[127.62382812500002,-0.76601562499999],[127.46269531250002,-0.80595703124996],[127.46865234375,-0.64296875],[127.3,-0.500292968749946],[127.32509765625,-0.335839843750023],[127.45517578125012,-0.406347656249991],[127.56699218750006,-0.318945312499949]]],[[[127.24990234375005,-0.4953125],[127.11914062500003,-0.520507812499986],[127.12646484375003,-0.278613281250003],[127.29003906250003,-0.284375],[127.24990234375005,-0.4953125]]],[[[103.73652343750004,-0.347949218750003],[103.461328125,-0.357617187500011],[103.54892578125006,-0.227539062499986],[103.73652343750004,-0.347949218750003]]],[[[130.81328125000007,-0.004101562500026],[131.27685546875003,-0.149804687499952],[131.33974609375005,-0.290332031249989],[131.00537109374997,-0.360742187500037],[130.62216796875006,-0.0859375],[130.89921875000002,-0.344433593749997],[130.7501953125001,-0.44384765625],[130.6886718750001,-0.296582031250011],[130.55078124999997,-0.366406250000026],[130.23662109375002,-0.209667968749983],[130.3625,-0.072851562500006],[130.81328125000007,-0.004101562500026]]],[[[98.45927734375007,-0.530468749999969],[98.30966796875012,-0.531835937499977],[98.4271484375,-0.226464843750037],[98.3229492187501,-0.000781249999974],[98.54414062500004,-0.257617187499989],[98.45927734375007,-0.530468749999969]]],[[[104.77861328125007,-0.175976562499955],[105.00537109374997,-0.282812499999963],[104.44707031250002,-0.189160156249983],[104.54267578125004,0.01772460937498],[104.77861328125007,-0.175976562499955]]],[[[103.28447265625002,0.541943359375011],[103.13955078125,0.549072265625043],[103.18740234375,0.699755859375017],[103.28447265625002,0.541943359375011]]],[[[103.0275390625001,0.746630859374974],[102.4904296875001,0.856640625],[102.50664062500002,1.088769531250037],[103.00244140624997,0.859277343750009],[103.0275390625001,0.746630859374974]]],[[[103.42392578125012,1.048339843749972],[103.31542968750003,1.071289062500028],[103.37998046875006,1.133642578125034],[103.42392578125012,1.048339843749972]]],[[[103.16640625000005,0.870166015625003],[102.7018554687501,1.0537109375],[102.72558593749997,1.158837890625023],[102.99941406250005,1.067773437500023],[103.16640625000005,0.870166015625003]]],[[[104.02480468750005,1.180566406250009],[104.13984375000004,1.165576171874974],[104.06611328125004,0.989550781249989],[103.93222656250012,1.071386718749963],[104.02480468750005,1.180566406250009]]],[[[104.58535156250005,1.21611328124996],[104.66289062500002,1.04951171875004],[104.57519531250003,0.831933593750037],[104.43925781250002,1.050439453125051],[104.25195312499997,1.014892578125],[104.36181640624997,1.18149414062502],[104.58535156250005,1.21611328124996]]],[[[102.4271484375,0.990136718750023],[102.27958984375002,1.075683593750043],[102.25634765625003,1.397070312499963],[102.44287109374997,1.234228515625006],[102.4271484375,0.990136718750023]]],[[[97.48154296875006,1.465087890624972],[97.93193359375002,0.973925781250003],[97.82041015625012,0.564453124999986],[97.683984375,0.596093750000037],[97.60390625000005,0.83388671874998],[97.40537109375012,0.946972656250026],[97.07919921875006,1.425488281249983],[97.35595703124997,1.539746093749997],[97.48154296875006,1.465087890624972]]],[[[102.49189453125004,1.459179687500011],[102.49941406250005,1.330908203124991],[102.02402343750012,1.607958984375031],[102.49189453125004,1.459179687500011]]],[[[124.88886718750004,0.995312500000011],[124.42753906250002,0.470605468750051],[123.75380859375,0.305517578124991],[123.26542968750007,0.326611328125026],[122.996875,0.493505859375006],[121.01298828125002,0.441699218750017],[120.57900390625,0.5283203125],[120.19228515625,0.268505859374997],[120.01328125000012,-0.196191406249994],[120.062890625,-0.555566406250023],[120.240625,-0.868261718749949],[120.51757812499997,-1.039453125],[120.66738281250005,-1.370117187499972],[121.14853515625012,-1.33945312500002],[121.5755859375,-0.828515625000023],[121.96962890625005,-0.933300781249969],[122.27998046875004,-0.757031250000026],[122.88876953125006,-0.755175781250003],[122.8294921875,-0.658886718750026],[123.17148437500012,-0.57070312499999],[123.37968750000002,-0.648535156249949],[123.43417968750006,-0.778222656249994],[123.37792968749997,-1.004101562500011],[122.90283203125003,-0.900976562499963],[122.25068359375004,-1.555273437500034],[121.8585937500001,-1.69326171874998],[121.65097656250006,-1.895410156249952],[121.35546874999997,-1.878222656250003],[122.29169921875004,-2.907617187500023],[122.39902343750006,-3.200878906249997],[122.25292968749997,-3.620410156250017],[122.68964843750004,-4.084472656249972],[122.84794921875002,-4.064550781250006],[122.8722656250001,-4.391992187500009],[122.71972656250003,-4.340722656249952],[122.11425781250003,-4.540234375000011],[122.03808593749997,-4.832421875000023],[121.58867187500007,-4.759570312500017],[121.48652343750004,-4.581054687499972],[121.61806640625,-4.092675781249952],[120.89179687500004,-3.520605468750034],[121.05429687500012,-3.167089843749949],[121.0521484375,-2.751660156249955],[120.87939453124997,-2.64560546875002],[120.65361328125002,-2.667578124999977],[120.26103515625007,-2.949316406249991],[120.43662109375012,-3.70732421874996],[120.42011718750004,-4.617382812500011],[120.27929687499997,-5.146093749999977],[120.4303710937501,-5.591015625000026],[119.9515625,-5.577636718749972],[119.71728515625003,-5.693359375000014],[119.55742187500007,-5.611035156250026],[119.36035156249997,-5.314160156250026],[119.59404296875007,-4.523144531249997],[119.62363281250006,-4.034375],[119.46748046875004,-3.512988281249989],[118.99462890624997,-3.537597656250028],[118.86767578124997,-3.39804687500002],[118.78330078125006,-2.720800781249977],[119.09218750000005,-2.482910156250014],[119.32187500000012,-1.929687500000014],[119.308984375,-1.408203125],[119.508203125,-0.906738281249972],[119.71132812500005,-0.680761718750034],[119.84433593750006,-0.861914062499991],[119.721875,-0.088476562499991],[119.865625,0.040087890625003],[119.80927734375004,0.238671875000051],[119.9132812500001,0.445068359375],[120.26953125000003,0.970800781249991],[120.60253906249997,0.854394531249994],[120.86796875000007,1.25283203124998],[121.0817382812501,1.327636718750028],[121.40410156250002,1.243603515624969],[121.59179687499997,1.067968749999977],[122.43662109375006,1.018066406250028],[122.83828125,0.845703125],[123.06650390625006,0.941796875000037],[123.93076171875006,0.850439453124977],[124.53369140624997,1.230468750000043],[124.94707031250002,1.672167968749974],[125.11093750000012,1.685693359374966],[125.2337890625,1.502294921875006],[124.88886718750004,0.995312500000011]]],[[[101.70810546875006,2.078417968750045],[101.71943359375004,1.789160156250006],[101.50078125000002,1.733203124999974],[101.40966796875003,2.021679687500026],[101.70810546875006,2.078417968750045]]],[[[127.73271484375007,0.848144531250043],[127.8810546875001,0.832128906249977],[127.96728515624997,1.042578125000048],[128.16074218750006,1.1578125],[128.22246093750002,1.400634765624986],[128.68837890625,1.572558593750017],[128.70263671874997,1.106396484374997],[128.29882812500003,0.87680664062502],[128.26064453125,0.733789062500023],[128.61123046875,0.549951171875051],[128.89960937500004,0.216259765625011],[127.9831054687501,0.471875],[127.88740234375004,0.298339843750043],[127.97783203125002,-0.24833984374996],[128.4254882812501,-0.892675781249949],[128.04638671875003,-0.706054687499943],[127.69160156250004,-0.241894531249983],[127.70869140625004,0.288085937499986],[127.53710937500003,0.610888671875031],[127.60800781250006,0.848242187499977],[127.42851562500002,1.139990234374991],[127.63173828125,1.843701171875011],[128.03642578125002,2.199023437500017],[127.88681640625012,1.83295898437504],[128.0109375000001,1.701220703125031],[128.01171874999997,1.331738281249983],[127.65283203124997,1.013867187499969],[127.73271484375007,0.848144531250043]]],[[[97.3341796875001,2.075634765625011],[97.10830078125,2.216894531250006],[97.29140625,2.200830078125023],[97.3341796875001,2.075634765625011]]],[[[128.45390625000002,2.051757812500028],[128.29589843749997,2.034716796875017],[128.2179687500001,2.297460937499991],[128.60214843750012,2.59760742187504],[128.68847656250003,2.473681640625017],[128.62324218750004,2.224414062500031],[128.45390625000002,2.051757812500028]]],[[[96.46367187500002,2.360009765625037],[95.80859374999997,2.655615234375034],[95.7171875,2.825976562500017],[95.89580078125007,2.8890625],[96.41728515625007,2.515185546875031],[96.46367187500002,2.360009765625037]]],[[[108.8875,2.905419921875037],[108.7865234375,2.885644531250009],[108.88574218750003,2.998974609374997],[108.8875,2.905419921875037]]],[[[105.76035156250006,2.863037109375014],[105.69218750000002,3.0625],[105.83671875000007,2.97651367187504],[105.76035156250006,2.863037109375014]]],[[[106.28525390625006,3.15712890624998],[106.28369140624997,3.088232421874977],[106.20097656250002,3.204882812500031],[106.28525390625006,3.15712890624998]]],[[[117.65839843750004,3.280517578124986],[117.54785156250003,3.43198242187502],[117.68085937500004,3.407519531250017],[117.65839843750004,3.280517578124986]]],[[[125.65810546875,3.436035156250043],[125.51152343750007,3.461132812500011],[125.46884765625006,3.73325195312502],[125.65810546875,3.436035156250043]]],[[[117.88476562499997,4.186132812500006],[117.92285156250003,4.054296874999977],[117.73681640624997,4.004003906250034],[117.64902343750012,4.168994140624974],[117.88476562499997,4.186132812500006]]],[[[108.31601562500006,3.689648437500026],[108.10039062500002,3.70454101562504],[108.24326171875006,3.810351562500017],[108.00234375,3.982861328124983],[108.24833984375002,4.21713867187502],[108.39287109375007,3.986181640625034],[108.31601562500006,3.689648437500026]]],[[[117.5744140625001,4.17060546875004],[117.46533203124997,4.076074218749966],[117.77724609375005,3.689257812500031],[117.05595703125007,3.622656249999963],[117.34628906250006,3.426611328124991],[117.35244140625,3.19375],[117.61064453125002,3.064355468749994],[117.56914062500002,2.92929687500002],[117.69765625,2.887304687499991],[117.6388671875001,2.825292968749963],[118.0666015625001,2.317822265624969],[117.7892578125001,2.026855468750014],[118.98496093750006,0.982128906249983],[118.53476562500006,0.813525390625017],[118.19609375000002,0.874365234374977],[117.91162109374997,1.098681640625017],[117.96425781250005,0.889550781250051],[117.74511718749997,0.72963867187498],[117.52216796875004,0.235888671875017],[117.46289062500003,-0.323730468749957],[117.5625,-0.770898437500009],[116.91396484375,-1.223632812499972],[116.73984375000006,-1.044238281250017],[116.75341796874997,-1.327343749999955],[116.27548828125006,-1.784863281249997],[116.42431640625003,-1.784863281249997],[116.45195312500002,-1.923144531250017],[116.31396484374997,-2.139843750000011],[116.56542968749997,-2.299707031249994],[116.52929687499997,-2.51054687499996],[116.31679687500005,-2.55185546875002],[116.33066406250012,-2.902148437499974],[116.16630859375002,-2.934570312500014],[116.2572265625,-3.126367187500009],[115.95615234375012,-3.595019531250003],[114.6935546875001,-4.169726562500017],[114.5255859375001,-3.376660156250011],[114.44599609375004,-3.481835937500037],[114.34433593750012,-3.444433593749963],[114.34433593750012,-3.23515625],[114.23632812500003,-3.36113281249996],[114.0822265625001,-3.27890625],[113.70507812499997,-3.45527343750004],[113.6100585937501,-3.195703125],[113.34316406250005,-3.246484374999966],[113.03398437500002,-2.933496093749966],[112.97148437500002,-3.187109375000034],[112.75800781250004,-3.322167968750009],[112.60029296875004,-3.400488281249977],[112.28496093750002,-3.32099609375004],[111.85810546875004,-3.551855468750006],[111.82304687500007,-3.057226562499949],[111.69472656250005,-2.88945312499996],[110.93007812500005,-3.071093750000017],[110.82968750000012,-2.9951171875],[110.89931640625,-2.908593749999952],[110.703125,-3.020898437500009],[110.57402343750007,-2.89140625],[110.25605468750004,-2.966113281249946],[110.09658203125,-2.001367187499966],[109.95986328125,-1.862792968749972],[109.98330078125,-1.274804687499994],[109.78740234375007,-1.011328124999963],[109.25878906250003,-0.807421874999989],[109.37275390625004,-0.638183593749972],[109.12109375000003,-0.39091796874996],[109.2575195312501,0.031152343750051],[108.94453125000004,0.355664062499997],[108.91679687500007,0.912646484375045],[108.95859375000006,1.134619140624963],[109.1315429687501,1.253857421875011],[109.01025390624997,1.239648437500051],[109.07587890625004,1.495898437500031],[109.37851562500006,1.922705078125034],[109.62890625000003,2.027539062499983],[109.53896484375,1.89619140625004],[109.65400390625004,1.614892578125023],[110.50576171875005,0.861962890625023],[111.10136718750002,1.050537109374986],[111.80898437500005,1.011669921874969],[112.078515625,1.143359374999974],[112.1857421875001,1.4390625],[112.47617187500006,1.559082031250028],[112.94296875000006,1.566992187500034],[113.00654296875004,1.433886718750003],[113.6222656250001,1.2359375],[113.90234375000003,1.434277343749997],[114.5125,1.452001953124963],[114.83056640625003,1.980029296874989],[114.78642578125002,2.250488281250014],[115.1791015625,2.523193359374972],[115.08076171875004,2.63422851562504],[115.117578125,2.89487304687502],[115.24697265625005,3.025927734374989],[115.45439453125002,3.034326171875009],[115.67880859375006,4.193017578124994],[115.86074218750005,4.348046875000037],[116.51474609375006,4.370800781249969],[117.10058593750003,4.337060546875023],[117.5744140625001,4.17060546875004]]],[[[126.81660156250004,4.033496093750003],[126.70449218750005,4.070996093749997],[126.81357421875006,4.258496093750011],[126.72207031250005,4.344189453124969],[126.75732421874997,4.547900390624989],[126.9210937500001,4.291015624999972],[126.81660156250004,4.033496093750003]]],[[[96.49257812500005,5.229345703124991],[97.54716796875002,5.205859375],[98.2484375,4.41455078125],[98.3073242187501,4.09287109375002],[99.73232421875005,3.183056640625026],[100.523828125,2.18916015625004],[100.88789062500004,1.948242187499986],[100.82822265625012,2.242578125],[101.04619140625002,2.257470703125023],[101.47666015625006,1.693066406250054],[102.019921875,1.442138671875],[102.38994140625007,0.84199218750004],[103.03183593750006,0.57890625],[103.0075195312501,0.415332031249974],[102.55,0.216455078124966],[103.33896484375012,0.513720703125045],[103.67265625000007,0.288916015624977],[103.78671875000012,0.046972656249991],[103.42851562500007,-0.19179687499998],[103.40517578125005,-0.36220703124998],[103.5091796875,-0.465527343749969],[103.43857421875006,-0.575585937500009],[103.72109375,-0.886718749999986],[104.36054687500004,-1.038378906249974],[104.51591796875002,-1.81943359375002],[104.84521484375003,-2.092968749999969],[104.65078125000005,-2.595214843749972],[104.97080078125012,-2.370898437500017],[105.39697265624997,-2.380175781249946],[106.0443359375,-3.10625],[105.84375,-3.61367187499998],[105.93046875000007,-3.833007812499986],[105.83144531250005,-4.16289062499996],[105.88720703124997,-5.009570312499974],[105.74833984375007,-5.818261718749966],[105.34941406250007,-5.549511718750011],[105.08134765625002,-5.74550781249998],[104.63955078125005,-5.520410156250037],[104.68398437500005,-5.89267578125002],[104.60156249999997,-5.90458984374996],[103.8314453125,-5.079589843750028],[102.53769531250006,-4.152148437499989],[102.12753906250006,-3.599218749999963],[101.57861328124997,-3.166992187500014],[100.88955078125,-2.248535156249957],[100.85527343750002,-1.934179687499949],[100.30820312500006,-0.82666015625],[99.66982421875005,0.045068359375037],[99.15917968749997,0.351757812499997],[98.59531250000006,1.864599609375006],[97.70078125000006,2.358544921875009],[97.59082031249997,2.846582031250037],[97.3913085937501,2.975292968749969],[96.9689453125001,3.575146484374969],[96.44472656250005,3.81630859374998],[95.57861328125003,4.661962890625048],[95.20664062500006,5.284033203125034],[95.22783203125002,5.564794921875034],[95.62890625000003,5.609082031249997],[96.13330078125003,5.294287109374991],[96.49257812500005,5.229345703124991]]]]},"properties":{"name":"Indonesia","childNum":107}},{"geometry":{"type":"Polygon","coordinates":[[[-4.412060546874983,54.185351562499996],[-4.785351562499983,54.073046875],[-4.424707031249994,54.407177734375],[-4.412060546874983,54.185351562499996]]]},"properties":{"name":"Isle of Man","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[75.32221348233018,32.28516356678968],[75.62496871116024,32.28516356678968],[75.73585997688717,32.78417426256088],[76.32728006076415,32.87658365066666],[76.62299010270264,33.32014871357439],[77.06655516561037,33.301666835953235],[77.71342088235082,32.6917648744551],[78.10154031239509,32.87658365066666],[78.49194250885338,32.53122786149202],[78.38964843749997,32.51987304687498],[78.41748046874997,32.466699218749994],[78.4552734375001,32.30034179687502],[78.49589843750002,32.21577148437504],[78.72558593750009,31.983789062500023],[78.71972656250009,31.887646484374983],[78.69345703125006,31.740380859374994],[78.7550781250001,31.55029296875],[78.74355468750005,31.323779296875017],[79.10712890625004,31.402636718750102],[79.38847656250013,31.064208984375085],[79.66425781250004,30.96523437499999],[79.92451171875004,30.888769531250034],[80.20712890625006,30.683740234375023],[80.19121093750002,30.56840820312496],[80.87353515625003,30.290576171875045],[80.98544921875006,30.23710937499999],[81.01025390625014,30.164501953125097],[80.96611328125002,30.180029296875063],[80.90761718750005,30.171923828125017],[80.84814453125009,30.139746093750034],[80.81992187500012,30.119335937499955],[80.68408203125014,29.994335937500068],[80.54902343750015,29.899804687499994],[80.40185546875003,29.730273437500102],[80.31689453125014,29.572070312500017],[80.25488281250009,29.423339843750114],[80.25595703125006,29.318017578125136],[80.23300781250006,29.194628906250045],[80.16953125000012,29.124316406250102],[80.13046875000006,29.100390625000045],[80.08457031249995,28.994189453125074],[80.05166015625,28.870312500000068],[80.07070312500005,28.830175781250063],[80.22656250000003,28.723339843750125],[80.32480468750012,28.66640625000008],[80.41855468749995,28.61201171875001],[80.47910156250012,28.604882812499994],[80.49580078125015,28.635791015625074],[80.51787109375002,28.665185546875023],[80.58701171875006,28.64960937500004],[81.16894531250014,28.335009765625074],[81.85263671875018,27.867089843750136],[81.89687500000011,27.87446289062504],[81.94521484375005,27.89926757812495],[81.98769531250016,27.91376953125004],[82.03701171875,27.90058593750004],[82.11191406250006,27.86494140625004],[82.28769531250018,27.756542968749983],[82.45136718750004,27.671826171874955],[82.62988281249997,27.687060546875045],[82.67734375000006,27.67343749999995],[82.71083984375005,27.596679687500114],[82.73339843750003,27.518994140625097],[83.28974609375004,27.370996093750136],[83.36943359375002,27.410253906249977],[83.38398437500004,27.444824218750085],[83.44716796875011,27.46533203125],[83.55166015625011,27.456347656249932],[83.74697265625011,27.395947265625068],[83.8288085937501,27.377832031250108],[84.09101562499993,27.491357421875136],[84.22978515625007,27.427832031250006],[84.48085937500005,27.348193359375102],[84.61015625000002,27.298681640624977],[84.64072265625012,27.249853515624977],[84.65478515625014,27.20366210937499],[84.65380859375009,27.09169921875008],[84.68535156250013,27.041015625000057],[85.19179687500011,26.766552734375097],[85.29296875000009,26.741015625000045],[85.56845703125012,26.839843750000114],[85.64843749999997,26.829003906250023],[85.69990234375004,26.781640624999966],[85.73730468750003,26.639746093750034],[85.79453125000006,26.60415039062505],[86.00732421875009,26.64936523437504],[86.70136718750015,26.435058593750057],[87.01640625000002,26.555419921875085],[87.2874023437499,26.360302734375125],[87.41357421875014,26.42294921875009],[87.84921875000006,26.43691406250008],[87.99511718750014,26.38237304687499],[88.02695312500023,26.395019531250085],[88.05488281250004,26.43002929687492],[88.11152343750004,26.58642578125],[88.1615234375,26.724804687500125],[88.15722656250009,26.807324218750068],[88.1110351562501,26.928466796875057],[87.99316406250009,27.086083984374994],[87.984375,27.133935546874994],[88.14697265625014,27.749218750000097],[88.15029296875011,27.843310546875074],[88.10976562500005,27.87060546874997],[88.10898437499995,27.93300781250005],[88.14111328125003,27.948925781250097],[88.27519531250013,27.96884765625009],[88.42597656250015,28.011669921875097],[88.57792968750002,28.093359375000034],[88.80371093750003,28.006933593750034],[88.74902343749997,27.521875000000136],[88.7648437500001,27.429882812500068],[88.83251953125003,27.362841796875074],[88.89140625000002,27.316064453125136],[88.88164062500007,27.29746093750009],[88.76035156250006,27.21811523437509],[88.73876953125009,27.175585937499932],[88.85761718750015,26.961474609375017],[89.14824218750002,26.816162109375085],[89.33212890625018,26.848632812500114],[89.58613281250004,26.778955078125136],[89.60996093750012,26.719433593750097],[89.71093750000009,26.713916015625045],[89.76386718750004,26.7015625],[89.94316406250013,26.723925781249932],[90.12294921875011,26.754589843749983],[90.20605468749997,26.847509765625063],[90.34589843750004,26.890332031250097],[90.73964843750005,26.771679687500068],[91.2865234375,26.78994140625008],[91.42675781249997,26.867089843749966],[91.45585937500013,26.866894531250125],[91.51757812500009,26.807324218750068],[91.67158203124993,26.80200195312503],[91.84208984375013,26.852978515625125],[91.94375,26.860839843750114],[91.99833984375013,26.85498046875],[92.04970703125016,26.87485351562495],[92.73155507489682,26.833697862861648],[93.30975376159499,26.784950522650554],[93.61047043679247,27.32239435188504],[94.06979001484449,27.589407158584788],[95.10800937321915,27.749636881153737],[95.74000740838363,28.116850432722256],[96.19577594042592,28.04291597700983],[96.96279296875,27.698291015625017],[96.88359375000013,27.514843750000125],[96.90195312500012,27.43959960937508],[97.10371093749993,27.163330078125114],[97.10205078125003,27.115429687500125],[96.95341796875013,27.13330078125003],[96.79785156249997,27.29619140624999],[96.19082031250005,27.26127929687499],[95.20146484375007,26.641406250000017],[95.05976562500015,26.473974609375006],[95.06894531250006,26.191113281250097],[95.10839843750014,26.091406250000034],[95.12929687500011,26.070410156250034],[95.13242187500006,26.041259765624943],[94.99199218750002,25.77045898437504],[94.66777343750007,25.458886718749966],[94.55302734375013,25.215722656249994],[94.70371093750012,25.097851562499955],[94.49316406250003,24.637646484374983],[94.37724609375002,24.473730468750006],[94.29306640625012,24.321875],[94.07480468750006,23.8720703125],[93.68339843750007,24.00654296875004],[93.45214843750003,23.987402343750034],[93.32626953125006,24.064208984375057],[93.36601562500007,23.132519531249955],[93.34941406250007,23.08496093750003],[93.20390625000002,23.03701171875005],[93.07871093750018,22.718212890625097],[93.16201171875,22.360205078125006],[93.07060546875002,22.20942382812501],[92.96455078125015,22.003759765625034],[92.90947265625013,21.988916015625023],[92.85429687500002,22.010156250000108],[92.77138671875,22.104785156250017],[92.68896484375009,22.130957031250006],[92.63037109375014,22.011328124999977],[92.57490234374993,21.97807617187496],[92.5612304687501,22.04804687500001],[92.49140625000004,22.685400390625006],[92.46445312500006,22.734423828125045],[92.36162109375002,22.929003906250074],[92.33378906250002,23.242382812499955],[92.24609375000003,23.68359374999997],[92.04404296875006,23.677783203125017],[91.97851562500003,23.691992187500063],[91.92958984375011,23.685986328125097],[91.92949218750019,23.598242187499977],[91.93789062500011,23.504687500000102],[91.75419921875013,23.28730468750004],[91.75097656250003,23.053515625000017],[91.55351562500013,22.991552734375006],[91.43623046875004,23.19990234375001],[91.359375,23.06835937500003],[91.16044921875019,23.660644531250085],[91.35019531250012,24.06049804687501],[91.72656250000003,24.20507812499997],[91.84619140624997,24.175292968749943],[92.06416015625004,24.374365234375006],[92.11748046875002,24.493945312500017],[92.22666015625012,24.77099609374997],[92.22832031250002,24.881347656250085],[92.2512695312499,24.895068359375045],[92.38496093750004,24.848779296875023],[92.46835937500018,24.944140625000074],[92.04970703125016,25.16948242187499],[90.61308593750002,25.16772460937497],[90.11962890625003,25.21997070312497],[89.86630859375012,25.293164062499955],[89.81406250000006,25.305371093749955],[89.80087890625012,25.33613281250001],[89.82490234375004,25.56015625],[89.82294921875015,25.94140625000003],[89.67089843750009,26.213818359375125],[89.57275390625003,26.13232421875003],[89.54990234375006,26.00527343750008],[89.28925781250015,26.037597656250085],[89.01865234375012,26.410253906249977],[88.95195312500002,26.412109375],[88.97041015625004,26.250878906250023],[88.94072265625002,26.24536132812497],[88.68281250000004,26.291699218749983],[88.51826171875004,26.51777343750004],[88.36992187500002,26.56411132812508],[88.35146484375005,26.482568359374966],[88.38623046875003,26.471533203125034],[88.44042968749997,26.369482421875034],[88.33398437499997,26.257519531249955],[88.15078125000005,26.087158203125057],[88.1066406250001,25.841113281250045],[88.14746093749997,25.811425781250023],[88.50244140625009,25.53701171875008],[88.76914062500006,25.490478515625],[88.85478515625002,25.333544921875017],[88.94414062500002,25.290771484375],[88.92978515625012,25.222998046875063],[88.57382812500006,25.18789062499999],[88.45625,25.188427734375125],[88.37294921875016,24.961523437500063],[88.31337890625011,24.8818359375],[88.27949218750015,24.881933593750034],[88.18886718750016,24.920605468750097],[88.14980468750011,24.91464843749995],[88.04511718750015,24.71303710937508],[88.03027343750009,24.664453125000136],[88.02343750000003,24.627832031250136],[88.07910156250009,24.549902343750063],[88.14550781250003,24.485791015624955],[88.225,24.460644531249983],[88.3375,24.45385742187503],[88.49853515625003,24.34663085937504],[88.64228515625015,24.325976562500102],[88.72353515625011,24.27490234375],[88.7335937500001,24.230908203125097],[88.72656250000009,24.18623046875004],[88.71376953125016,24.069628906250102],[88.69980468750006,24.00253906249992],[88.56738281250009,23.674414062500034],[88.63574218749997,23.55],[88.69765625,23.493017578125034],[88.72441406250002,23.254980468750034],[88.89707031250018,23.21040039062501],[88.92812500000011,23.186621093749977],[88.89970703125002,22.843505859375057],[88.92070312500002,22.632031249999955],[89.05,22.274609374999983],[89.02792968750023,21.937207031249983],[88.94931640625018,21.937939453125125],[89.05166015625,21.654101562500045],[88.85751953125012,21.744677734375017],[88.74501953125011,21.584375],[88.74023437500003,22.005419921875017],[88.64160156250003,22.121972656250136],[88.58466796875015,21.659716796874932],[88.44599609375004,21.614257812500085],[88.28750000000016,21.758203125000108],[88.25371093750002,21.622314453124943],[88.0568359375001,21.694140625000017],[88.19628906249997,22.139550781249994],[87.94140625000003,22.374316406250045],[88.15927734375018,22.12172851562508],[87.82373046875003,21.727343750000045],[87.20068359375009,21.544873046874983],[86.95410156250014,21.365332031250006],[86.84228515625009,21.106347656249994],[86.97548828125005,20.70014648437501],[86.75039062500011,20.313232421875057],[86.37656250000006,20.006738281249966],[86.24521484375012,20.05302734374999],[86.27949218750021,19.919433593749943],[85.575,19.69291992187499],[85.496875,19.696923828125108],[85.50410156250004,19.887695312500057],[85.24863281250006,19.757666015625034],[85.18076171875018,19.59487304687508],[85.44160156249993,19.626562499999977],[84.77099609375009,19.125390625000023],[84.10410156250018,18.29267578125001],[82.35957031250004,17.09619140624997],[82.25878906250014,16.55986328124996],[81.76191406250015,16.32949218750008],[81.28613281249997,16.337060546875023],[80.97871093750004,15.758349609375074],[80.64658203125006,15.895019531250028],[80.29345703125014,15.710742187499989],[80.0534179687501,15.074023437499932],[80.17871093750003,14.478320312500074],[80.11171875000005,14.212207031250045],[80.30654296875016,13.485058593750054],[80.15625,13.713769531250108],[80.06210937500006,13.60625],[80.34238281250006,13.361328125000071],[80.22910156250018,12.690332031249966],[79.85849609375018,11.988769531250043],[79.69316406250007,11.312548828124946],[79.79902343750004,11.338671874999932],[79.84863281250009,11.196875],[79.83818359375002,10.322558593750045],[79.31455078125018,10.256689453124949],[78.93994140625009,9.565771484375063],[79.01992187500005,9.333349609374963],[79.41142578125002,9.192382812500014],[78.97958984375018,9.268554687500085],[78.42148437500006,9.105029296874989],[78.19248046874995,8.890869140625057],[78.06015625000006,8.384570312499932],[77.51757812500003,8.078320312500068],[77.06591796875003,8.315917968749986],[76.5534179687501,8.902783203124997],[76.32460937500016,9.452099609374997],[76.24238281250004,9.927099609374949],[76.37558593750006,9.539892578124935],[76.45878906250013,9.536230468750077],[76.34648437500002,9.922119140625],[76.19560546875002,10.086132812500026],[75.72382812500015,11.361767578125026],[74.94550781250004,12.56455078124992],[74.38222656250005,14.494726562500048],[73.94921875000014,15.074755859375088],[73.80078125000009,15.39697265625],[73.93193359375013,15.39697265625],[73.77177734375013,15.573046874999989],[73.83281250000013,15.659375],[73.67988281250015,15.708886718750136],[73.47607421875003,16.05424804687496],[72.87548828124997,18.642822265625114],[72.97207031250011,19.15332031250003],[72.8346679687501,18.975585937500057],[72.80302734375013,19.07929687500004],[72.81162109375,19.298925781250006],[72.98720703125,19.27744140625009],[72.78789062500013,19.362988281250097],[72.66777343750019,19.83095703125005],[72.89375,20.672753906250136],[72.81386718750011,21.117187500000085],[72.62382812500002,21.371972656250108],[72.73476562500016,21.470800781250006],[72.61328125000009,21.461816406250108],[73.1125,21.750439453125125],[72.54306640625,21.69658203124999],[72.70019531250003,21.971923828124943],[72.52226562500013,21.976220703125108],[72.55302734375007,22.159960937500074],[72.80917968749995,22.23330078125008],[72.18281250000015,22.26972656250004],[72.30644531250002,22.18920898437497],[72.27441406250009,22.089746093749966],[72.03720703125006,21.82304687499999],[72.2103515625,21.72822265625004],[72.25400390625006,21.531005859375],[72.01523437500012,21.155712890625097],[71.0246093750001,20.73886718750009],[70.71933593750006,20.740429687500068],[70.12734375,21.094677734375097],[68.96992187500021,22.29028320312497],[69.05166015625016,22.437304687500074],[69.27656250000004,22.285498046875063],[70.17724609375014,22.57275390624997],[70.48925781250009,23.08950195312508],[70.33945312500012,22.939746093749932],[69.66464843750006,22.759082031250074],[69.23593749999995,22.848535156250023],[68.64072265625006,23.189941406250114],[68.41748046875009,23.57148437500004],[68.7767578125,23.852099609375017],[68.23496093749995,23.596972656250074],[68.16503906250009,23.857324218749994],[68.28251953125013,23.927978515625],[68.38125000000016,23.950878906250068],[68.48867187500011,23.96723632812501],[68.5866210937501,23.966601562500074],[68.72412109375003,23.964697265625034],[68.72812500000012,24.265625],[68.73964843750016,24.291992187500085],[68.75898437499993,24.307226562500006],[68.78115234375011,24.313720703125085],[68.8,24.30908203125003],[68.82832031250004,24.26401367187509],[68.86347656250015,24.26650390625005],[68.90078125000011,24.29243164062501],[68.98457031250015,24.273095703124966],[69.05156250000013,24.28632812500001],[69.11953125000011,24.26865234374995],[69.23505859374993,24.268261718750068],[69.44345703124995,24.275390625000085],[69.55917968750006,24.273095703124966],[69.80517578125009,24.16523437500004],[70.0982421875,24.2875],[70.28906250000009,24.356298828125063],[70.54677734375,24.418310546875063],[70.56503906250006,24.385791015625017],[70.55585937500015,24.331103515625074],[70.57929687500015,24.279052734374943],[70.65947265625013,24.24609374999997],[70.71630859375009,24.237988281250097],[70.7672851562501,24.245410156250017],[70.80507812500011,24.26196289062503],[70.88623046875014,24.34375],[70.92812500000016,24.362353515625045],[70.98281250000011,24.361035156250125],[71.04404296875006,24.400097656250097],[71.04531250000005,24.42998046874996],[70.96982421875012,24.571875],[70.97636718750013,24.61875],[71.00234375000016,24.6539062499999],[71.04785156250003,24.687744140625085],[71.02070312500021,24.75766601562492],[70.95087890625015,24.89160156250003],[70.87773437500019,25.06298828124997],[70.65205078125004,25.422900390625102],[70.64843750000003,25.666943359375068],[70.5695312500001,25.705957031250023],[70.50585937500009,25.685302734375085],[70.44853515625013,25.681347656249983],[70.26464843750009,25.70654296874997],[70.10019531250006,25.91005859375005],[70.14921875000002,26.347558593749994],[70.11464843750016,26.548046874999983],[69.47001953125002,26.804443359375],[69.56796875,27.174609375000102],[69.89628906250007,27.473632812500085],[70.04980468750009,27.694726562500023],[70.14453125000003,27.849023437499994],[70.19394531250006,27.89487304687492],[70.24433593750004,27.934130859375102],[70.4037109375,28.025048828124994],[70.48857421875013,28.023144531250125],[70.62910156250015,27.937451171875068],[70.6916015625001,27.76899414062504],[70.79794921875012,27.709619140625023],[70.87490234375016,27.71445312499995],[71.18476562500004,27.831640625],[71.54296875000003,27.869873046875],[71.8703125000001,27.9625],[71.88886718750004,28.04746093749992],[71.94804687500002,28.177294921875102],[72.12851562500012,28.34633789062508],[72.29199218750003,28.69726562499997],[72.34189453125006,28.751904296875097],[72.90332031250003,29.02875976562501],[73.38164062500013,29.934375],[73.8091796875,30.093359375],[73.88652343750013,30.162011718750136],[73.93339843750002,30.222070312500108],[73.92460937500007,30.28164062499999],[73.88271484375,30.352148437499977],[73.89931640625,30.435351562500045],[74.00898437500004,30.519677734374994],[74.33935546875003,30.893554687499943],[74.38037109375003,30.89340820312509],[74.50976562500009,30.959667968750097],[74.63281250000014,31.034667968750114],[74.62578125000002,31.068750000000108],[74.61035156250009,31.112841796875045],[74.51767578125012,31.185595703124932],[74.53496093750007,31.261376953125108],[74.59394531249993,31.465380859375102],[74.58183593750013,31.523925781250114],[74.50996093750015,31.712939453125074],[74.52597656249995,31.765136718750057],[74.55556640625011,31.818554687500097],[74.63574218750003,31.889746093750034],[74.73945312500015,31.948828125],[75.07148437500015,32.08935546875003],[75.13876953125,32.10478515624999],[75.25410156250004,32.140332031250125],[75.33349609374997,32.279199218749994],[75.32221348233018,32.28516356678968]]]]},"properties":{"name":"India","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[72.49199218750002,-7.37744140625],[72.42910156250002,-7.435351562500003],[72.34970703125,-7.263378906250011],[72.447265625,-7.395703125000011],[72.44560546875002,-7.220410156250011],[72.49199218750002,-7.37744140625]]]},"properties":{"name":"Br. Indian Ocean Ter.","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-9.948193359374926,53.91313476562499],[-10.265722656249949,53.977685546874994],[-9.99638671874996,54.00361328125004],[-9.948193359374926,53.91313476562499]]],[[[-6.218017578125,54.08872070312506],[-6.347607421874926,53.94130859375005],[-6.027392578124989,52.927099609375006],[-6.463183593749932,52.345361328124994],[-6.325,52.246679687500034],[-6.890234375,52.15922851562499],[-6.965771484374926,52.24951171875],[-8.057812499999926,51.82558593750005],[-8.4091796875,51.888769531250034],[-8.349121093749943,51.73930664062496],[-8.813427734374926,51.584912109374955],[-9.737304687499943,51.473730468750034],[-9.524902343750028,51.68110351562501],[-10.120751953124994,51.60068359375006],[-9.598828124999983,51.87441406250005],[-10.341064453124943,51.798925781250034],[-9.909667968749972,52.122949218749966],[-10.39023437499992,52.134912109374994],[-10.356689453125,52.20693359375002],[-9.772119140624937,52.250097656250034],[-9.90605468749996,52.403710937499966],[-9.632226562499937,52.54692382812502],[-8.783447265624943,52.679638671874955],[-8.990283203124989,52.755419921875045],[-9.175390624999949,52.634912109374994],[-9.916601562499977,52.56972656250005],[-9.46489257812496,52.82319335937498],[-9.299218749999966,53.09755859375002],[-8.930126953124983,53.207080078125045],[-9.51420898437496,53.23823242187498],[-10.091259765624926,53.41284179687503],[-10.116992187499932,53.548535156249955],[-9.720654296874926,53.6044921875],[-9.901611328124943,53.72719726562502],[-9.578222656249949,53.80541992187497],[-9.578857421875,53.879833984374955],[-9.9140625,53.863720703124955],[-9.856445312499972,54.095361328124994],[-10.092675781249966,54.15576171875003],[-10.056396484374943,54.25781250000006],[-8.545556640624994,54.24121093750003],[-8.623144531249977,54.346875],[-8.133447265624966,54.64082031250001],[-8.763916015624972,54.68120117187496],[-8.377294921874977,54.88945312500002],[-8.274609374999955,55.146289062500045],[-7.667089843749977,55.25649414062502],[-7.65874023437496,54.97094726562503],[-7.308789062500011,55.365820312500006],[-6.961669921874972,55.23789062500006],[-7.218652343749937,55.09199218749998],[-7.55039062499992,54.767968749999966],[-7.910595703124955,54.698339843750006],[-7.75439453125,54.59492187499998],[-8.118261718749977,54.41425781250004],[-7.606542968750006,54.14384765625002],[-7.324511718750017,54.13344726562502],[-7.007714843749937,54.40668945312501],[-6.649804687499937,54.05864257812496],[-6.218017578125,54.08872070312506]]]]},"properties":{"name":"Ireland","childNum":2}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[56.18798828125003,26.92114257812497],[55.95429687500004,26.70112304687501],[55.31152343749997,26.592626953125006],[55.76259765625005,26.81196289062504],[55.75761718750002,26.94765625000005],[56.279394531250006,26.952099609374983],[56.18798828125003,26.92114257812497]]],[[[46.1144531250001,38.877783203125034],[46.490625,38.90668945312498],[47.995898437500074,39.683935546875034],[48.322167968749994,39.39907226562502],[48.10439453125005,39.241113281249994],[48.292089843750006,39.01884765624999],[47.99648437499999,38.85375976562503],[48.59267578125005,38.41108398437498],[48.86875,38.43549804687498],[48.95996093750003,37.89013671875],[49.171191406250074,37.60058593749997],[50.13046875,37.407128906249994],[50.53320312499997,37.01367187500006],[51.11855468750005,36.742578124999966],[52.19013671875004,36.62172851562505],[53.76767578125006,36.93032226562502],[53.91542968750005,36.93032226562502],[53.67949218750002,36.853125],[53.970117187499994,36.818310546874955],[53.91416015625006,37.34355468750002],[54.6994140625001,37.47016601562498],[54.90009765625004,37.77792968750006],[55.38085937500003,38.051123046875034],[56.272070312500006,38.080419921875034],[56.440625,38.249414062499994],[57.1935546875001,38.216406250000034],[57.35371093750004,37.97333984374998],[58.261621093749994,37.665820312500045],[58.81542968750003,37.683496093749994],[59.30175781249997,37.51064453125005],[59.454980468749994,37.25283203125002],[60.06279296875002,36.962890625],[60.34130859375003,36.63764648437501],[61.11962890625003,36.64257812500003],[61.212011718750006,36.190527343750034],[61.15292968750006,35.97675781250001],[61.25214843750004,35.86762695312498],[61.26201171875002,35.61958007812498],[61.28183593750006,35.55341796875001],[61.2785156250001,35.513769531250006],[61.245507812499994,35.47407226562501],[61.18925781250002,35.31201171875003],[61.1,35.272314453125034],[61.08007812499997,34.85561523437505],[60.95117187499997,34.65385742187499],[60.91474609375004,34.63398437500001],[60.80234375000006,34.55463867187501],[60.73945312500004,34.544726562500045],[60.7262695312501,34.51826171874998],[60.736132812500074,34.491796875],[60.76259765625005,34.475244140624994],[60.88945312500002,34.31943359375006],[60.642675781250006,34.30717773437496],[60.48574218750005,34.09477539062502],[60.4859375,33.7119140625],[60.57382812500006,33.58833007812498],[60.91699218749997,33.505224609375006],[60.56054687499997,33.13784179687502],[60.5765625,32.99487304687503],[60.71044921874997,32.6],[60.82929687500004,32.24941406250005],[60.82724609375006,32.16796874999997],[60.789941406249994,31.98710937499999],[60.7875,31.87719726562497],[60.791601562500006,31.660595703124983],[60.82070312499999,31.495166015625045],[60.854101562500006,31.483251953125006],[61.110742187499994,31.45112304687504],[61.346484375000074,31.42163085937497],[61.66015625000003,31.382421874999977],[61.7550781250001,31.285302734374994],[61.814257812500074,31.072558593750017],[61.810839843750074,30.913281249999983],[61.78417968749997,30.831933593750023],[61.55947265625005,30.59936523437497],[61.33164062500006,30.36372070312501],[60.84335937500006,29.85869140624999],[61.03417968750003,29.663427734374977],[61.15214843750002,29.542724609375],[61.8898437500001,28.546533203124994],[62.7625,28.202050781249994],[62.782324218750006,27.800537109375],[62.75273437500002,27.265625],[63.16679687500002,27.25249023437499],[63.19609375000002,27.243945312500017],[63.25625,27.20791015625005],[63.30156250000002,27.151464843750006],[63.30517578124997,27.124560546875017],[63.242089843749994,27.07768554687499],[63.25039062499999,26.879248046875063],[63.24160156250005,26.86474609375003],[63.18613281250006,26.83759765625001],[63.168066406250006,26.66557617187496],[62.31230468750002,26.490869140624994],[62.23935546875006,26.357031249999977],[62.12597656249997,26.368994140625034],[61.842382812500006,26.225927734375006],[61.809960937499994,26.165283203125],[61.78076171874997,25.99584960937503],[61.75439453125003,25.843359375000063],[61.737695312499994,25.821093750000045],[61.66865234375004,25.76899414062501],[61.6618164062501,25.751269531250017],[61.67138671874997,25.69238281250003],[61.64013671875003,25.584619140624994],[61.61542968750004,25.28613281250003],[61.58789062499997,25.20234375000001],[61.533105468749994,25.195507812499955],[61.41220703125006,25.102099609375017],[60.66386718750002,25.28222656250003],[60.51054687500002,25.437060546875045],[60.40019531250002,25.311572265625074],[59.45605468749997,25.481494140625045],[59.0460937500001,25.417285156250017],[58.79785156249997,25.554589843750023],[57.334570312500006,25.791552734375074],[57.03603515625005,26.80068359375005],[56.728125,27.127685546875057],[56.118066406249994,27.14311523437499],[54.75927734375003,26.50507812500004],[54.24707031250003,26.696630859374977],[53.70576171875004,26.72558593750003],[52.69160156250004,27.323388671875023],[52.475878906250074,27.61650390624999],[52.03076171874997,27.824414062499955],[51.58906250000004,27.864208984374983],[51.27890625,28.13134765624997],[51.06201171874997,28.72612304687499],[50.86699218750002,28.870166015625017],[50.87578125000002,29.062695312499983],[50.67519531250005,29.146582031250034],[50.64960937500004,29.420068359374966],[50.16894531250003,29.921240234375034],[50.071582031250074,30.198535156250017],[49.55488281250004,30.028955078125023],[49.028125,30.333447265624983],[49.224511718749994,30.472314453125023],[49.00195312500003,30.506542968749983],[48.91914062500004,30.120898437500017],[48.54648437500006,29.962353515624955],[48.47851562499997,30.003808593749966],[48.43457031249997,30.03759765625],[48.33105468749997,30.28544921874996],[48.01494140625002,30.465625],[48.01064453125005,30.989794921875017],[47.679492187500074,31.00239257812501],[47.679492187500074,31.400585937499955],[47.75390624999997,31.601367187500017],[47.829980468749994,31.79443359375],[47.71455078125004,31.936425781249966],[47.5915039062501,32.087988281250034],[47.51191406250004,32.15083007812504],[47.3297851562501,32.45551757812501],[47.28515625000003,32.474023437499966],[47.121386718750074,32.46660156249996],[46.569921875,32.83393554687501],[46.37705078125006,32.92924804687499],[46.29824218750005,32.95024414062502],[46.11279296875003,32.957666015624994],[46.09306640625002,32.97587890624999],[46.08046875,33.028222656249994],[46.0807617187501,33.08652343750006],[46.14111328125003,33.174414062500034],[46.145898437499994,33.229638671874994],[46.01992187500005,33.41572265624998],[45.39707031250006,33.970849609374994],[45.542773437500074,34.21552734375004],[45.459375,34.470361328124994],[45.50078125000002,34.58159179687499],[45.6375,34.573828125],[45.678125,34.798437500000034],[45.92089843750003,35.02851562500001],[46.04179687500002,35.08017578125006],[46.13378906249997,35.127636718749955],[46.15468750000005,35.19672851562498],[46.112109375000074,35.32167968750005],[45.97109375000005,35.524169921875],[46.03740234375002,35.67314453124999],[46.180957031250074,35.71137695312504],[46.2625,35.74414062500006],[46.27343749999997,35.77324218750002],[46.16748046874997,35.820556640625],[45.77636718749997,35.82182617187499],[45.36162109375002,36.015332031249955],[45.241113281249994,36.35595703125],[45.20654296874997,36.397167968749955],[45.15527343749997,36.407373046874994],[45.11240234375006,36.409277343750034],[45.053125,36.47163085937501],[44.76513671875003,37.142431640625006],[44.79414062500004,37.290380859375034],[44.574023437500074,37.435400390625006],[44.589941406250006,37.710351562499966],[44.21132812499999,37.908056640625006],[44.4499023437501,38.33422851562506],[44.2985351562501,38.38627929687499],[44.27167968750004,38.83603515625006],[44.02324218750002,39.37744140625006],[44.3893554687501,39.422119140625],[44.58710937500004,39.76855468750006],[44.81718750000002,39.65043945312496],[45.4796875000001,39.00625],[46.1144531250001,38.877783203125034]]]]},"properties":{"name":"Iran","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[45.6375,34.573828125],[45.50078125000002,34.581591796874996],[45.459375,34.470361328124994],[45.54277343750002,34.21552734375],[45.397070312500006,33.970849609374994],[46.01992187500002,33.41572265625],[46.14589843750002,33.229638671874994],[46.14111328125,33.1744140625],[46.08076171875001,33.0865234375],[46.08046875000002,33.028222656249994],[46.09306640625002,32.975878906249996],[46.11279296875,32.957666015624994],[46.377050781250006,32.929248046874996],[46.569921875,32.833935546875],[47.12138671875002,32.466601562499996],[47.28515625,32.474023437499994],[47.32978515625001,32.455517578125],[47.51191406250001,32.150830078125],[47.59150390625001,32.08798828125],[47.71455078125001,31.936425781249994],[47.82998046875002,31.79443359375],[47.75390625,31.601367187499996],[47.67949218750002,31.400585937499997],[47.67949218750002,31.002392578124997],[48.01064453125002,30.989794921874996],[48.01494140625002,30.465625],[48.3310546875,30.285449218749996],[48.546484375,29.962353515624997],[48.454199218750006,29.9384765625],[48.354589843750006,29.956738281249997],[48.141699218750006,30.040917968749994],[47.982519531250006,30.011328125],[47.97871093750001,29.9828125],[47.64375,30.097314453124994],[47.14824218750002,30.0009765625],[46.905859375,29.5375],[46.76933593750002,29.347460937499996],[46.69375,29.259667968749994],[46.53144531250001,29.096240234374996],[46.3564453125,29.063671875],[44.71650390625001,29.193603515625],[43.77373046875002,29.84921875],[42.07441406250001,31.080371093749996],[40.47890625000002,31.893359375],[40.36933593750001,31.93896484375],[40.02783203125,31.995019531249994],[39.7041015625,32.042529296874996],[39.14541015625002,32.12451171875],[39.29277343750002,32.24384765625],[39.24746093750002,32.350976562499994],[39.04140625000002,32.3056640625],[38.773535156250006,33.372216796874994],[40.98701171875001,34.429052734375],[41.19472656250002,34.768994140625],[41.354101562500006,35.640429687499996],[41.295996093750006,36.383349609374996],[41.41679687500002,36.5146484375],[41.78857421875,36.59716796875],[42.358984375,37.10859375],[42.45585937500002,37.128710937499996],[42.63544921875001,37.249267578125],[42.74111328125002,37.3619140625],[42.77460937500001,37.371875],[42.869140625,37.334912109375],[42.936621093750006,37.324755859374996],[43.09248046875001,37.3673828125],[43.67578125,37.22724609375],[43.83642578125,37.223535156249994],[44.01318359375,37.313525390624996],[44.11445312500001,37.30185546875],[44.15625,37.282958984375],[44.19179687500002,37.249853515625],[44.20839843750002,37.20263671875],[44.20166015625,37.051806640624996],[44.281835937500006,36.97802734375],[44.32558593750002,37.0107421875],[44.401953125,37.058496093749994],[44.60595703125,37.176025390625],[44.66933593750002,37.173583984375],[44.73095703125,37.165283203125],[44.76513671875,37.142431640625],[45.053125,36.471630859375],[45.112402343750006,36.40927734375],[45.1552734375,36.407373046874994],[45.20654296875,36.39716796875],[45.24111328125002,36.35595703125],[45.36162109375002,36.01533203125],[45.7763671875,35.821826171874996],[46.16748046875,35.820556640625],[46.2734375,35.773242187499996],[46.2625,35.744140625],[46.18095703125002,35.711376953125],[46.03740234375002,35.673144531249996],[45.97109375000002,35.524169921875],[46.11210937500002,35.321679687499994],[46.15468750000002,35.196728515625],[46.1337890625,35.12763671875],[46.04179687500002,35.08017578125],[45.9208984375,35.028515625],[45.678125,34.7984375],[45.6375,34.573828125]]]},"properties":{"name":"Iraq","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-15.543115234374994,66.228515625],[-14.595849609374994,66.38154296875],[-15.117382812499983,66.125634765625],[-14.698193359374983,66.02021484375],[-14.827099609374983,65.7642578125],[-14.391845703125,65.78740234375],[-14.473388671875,65.575341796875],[-14.166943359374983,65.64228515625],[-13.617871093749983,65.5193359375],[-13.804785156249977,65.35478515625],[-13.599316406249983,65.0359375],[-14.04443359375,64.74189453125],[-14.385107421874977,64.74521484375],[-14.475390624999989,64.493994140625],[-14.927392578124994,64.319677734375],[-15.832910156249994,64.17666015625],[-16.640332031249983,63.865478515625],[-17.81572265624999,63.71298828125],[-17.946923828124994,63.5357421875],[-18.65361328124999,63.406689453125],[-20.198144531249994,63.555810546874994],[-20.494042968749994,63.687353515625],[-20.413964843749994,63.80517578125],[-20.65092773437499,63.73740234375],[-21.15239257812499,63.94453125],[-22.652197265624977,63.827734375],[-22.701171875,64.083203125],[-22.51005859374999,63.991455078125],[-22.187597656249977,64.039208984375],[-21.463330078124983,64.379150390625],[-22.053369140624994,64.313916015625],[-21.950341796874994,64.514990234375],[-21.590625,64.6263671875],[-22.10600585937499,64.533056640625],[-22.467041015625,64.794970703125],[-23.818994140624994,64.73916015625],[-24.02617187499999,64.863427734375],[-22.7880859375,65.046484375],[-21.89213867187499,65.048779296875],[-21.779980468749983,65.1876953125],[-22.50908203124999,65.19677734375],[-21.844384765624994,65.44736328125],[-22.902490234374994,65.58046875],[-23.89990234375,65.407568359375],[-24.475683593749977,65.5251953125],[-24.248925781249994,65.614990234375],[-23.85673828124999,65.53837890625],[-24.092626953124977,65.77646484375],[-23.615917968749983,65.67958984375],[-23.285351562499983,65.75],[-23.832617187499977,65.84921875],[-23.52495117187499,65.880029296875],[-23.77734375,66.017578125],[-23.434472656249994,66.02421875],[-23.452539062499994,66.181005859375],[-23.018994140624983,65.98212890625],[-22.659863281249983,66.025927734375],[-22.61601562499999,65.86748046875],[-22.44169921874999,65.90830078125],[-22.4453125,66.07001953125],[-22.947900390624994,66.212744140625],[-22.48442382812499,66.26630859375],[-23.116943359375,66.338720703125],[-22.9443359375,66.429443359375],[-22.426123046874977,66.430126953125],[-21.406884765624994,66.0255859375],[-21.374902343749994,65.74189453125],[-21.658447265625,65.723583984375],[-21.12968749999999,65.2666015625],[-20.804345703124994,65.63642578125],[-20.454833984375,65.571044921875],[-20.20751953125,66.10009765625],[-19.489697265624983,65.76806640625],[-19.382958984374994,66.07568359375],[-18.845898437499983,66.183935546875],[-18.141943359374977,65.73408203125],[-18.29716796874999,66.157421875],[-17.906982421875,66.143310546875],[-17.550439453124994,65.964404296875],[-17.153027343749983,66.20283203125],[-16.838037109374994,66.125244140625],[-16.485009765624994,66.195947265625],[-16.540673828124994,66.446728515625],[-16.24931640624999,66.522900390625],[-15.985400390624989,66.5146484375],[-15.543115234374994,66.228515625]]]},"properties":{"name":"Iceland","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[35.78730468750001,32.734912109374996],[35.572851562500006,32.640869140625],[35.56904296875001,32.619873046875],[35.55146484375001,32.3955078125],[35.484375,32.401660156249996],[35.40263671875002,32.450634765625],[35.38671875,32.493017578125],[35.303808593750006,32.512939453125],[35.19326171875002,32.534423828125],[35.065039062500006,32.46044921875],[35.01054687500002,32.338183593749996],[34.95595703125002,32.1609375],[34.98974609375,31.91328125],[34.97832031250002,31.86640625],[34.95380859375001,31.841259765624997],[34.96113281250001,31.82333984375],[34.983007812500006,31.81679687499999],[35.05322265625,31.837939453124996],[35.12714843750001,31.816748046875],[35.203710937500006,31.75],[34.95097656250002,31.602294921875],[34.88046875,31.3681640625],[35.45058593750002,31.479296875],[34.97343750000002,29.555029296875],[34.904296875,29.47734375],[34.24531250000001,31.208300781249996],[34.34833984375001,31.292919921874997],[34.350195312500006,31.362744140624997],[34.52558593750001,31.525634765625],[34.47734375000002,31.584863281249994],[34.483984375,31.59228515625],[34.67841796875001,31.895703125],[35.10859375000001,33.08369140625],[35.411230468750006,33.07568359375],[35.869140625,33.43173828125],[35.91347656250002,32.94960937499999],[35.78730468750001,32.734912109374996]]]},"properties":{"name":"Israel","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[15.576562500000051,38.220312500000034],[15.099511718750023,37.45859375],[15.295703125000017,37.05517578124997],[15.112597656250017,36.687841796875006],[14.501855468750023,36.798681640625034],[14.142968750000023,37.103662109374994],[13.90546875000004,37.10063476562502],[13.169921875000028,37.47929687499996],[12.640234375000034,37.594335937500034],[12.435546874999972,37.819775390624955],[12.734375,38.18305664062498],[12.902734375000023,38.03486328124998],[13.291113281250034,38.19145507812502],[13.788867187499989,37.981201171875],[15.11875,38.15273437500002],[15.498730468750011,38.290869140625006],[15.576562500000051,38.220312500000034]]],[[[8.478906250000023,39.067529296874966],[8.421484375000034,38.968652343749994],[8.366796875,39.115917968749955],[8.478906250000023,39.067529296874966]]],[[[8.28603515625008,41.03984375],[8.205664062500034,40.99746093750005],[8.320214843750023,41.121875],[8.28603515625008,41.03984375]]],[[[9.632031250000011,40.88203124999998],[9.805273437500063,40.499560546875045],[9.642968750000023,40.268408203125006],[9.5625,39.16601562500006],[9.056347656250068,39.23916015625002],[8.966601562500074,38.963720703125034],[8.648535156250034,38.92656250000002],[8.418164062500068,39.205712890624966],[8.547753906250023,39.83920898437506],[8.4078125,39.91723632812497],[8.471289062500063,40.29267578124998],[8.189941406250028,40.651611328125],[8.22421875,40.91333007812503],[8.571875,40.85019531250006],[9.228417968750023,41.257080078125],[9.615332031249977,41.01728515624998],[9.632031250000011,40.88203124999998]]],[[[10.395117187500034,42.85815429687503],[10.419335937499994,42.71318359374999],[10.13125,42.742041015625006],[10.395117187500034,42.85815429687503]]],[[[13.420996093750006,46.212304687499994],[13.63251953125004,46.17705078125002],[13.634960937499983,46.15776367187499],[13.61660156250008,46.133105468750045],[13.54804687500004,46.08911132812503],[13.486425781250034,46.03955078124997],[13.480273437500017,46.00922851562501],[13.487695312500023,45.987109375000045],[13.509179687500051,45.973779296874994],[13.6005859375,45.97978515624996],[13.663476562500023,45.7919921875],[13.831152343750006,45.680419921875],[13.719824218750063,45.58759765625001],[13.628320312500051,45.77094726562498],[13.206347656250074,45.771386718749966],[12.27431640625008,45.44604492187503],[12.225683593750034,45.24150390625002],[12.523437500000028,44.96796874999998],[12.248339843750045,44.72250976562498],[12.396289062500074,44.223876953125],[13.56416015625004,43.57128906250003],[14.010449218750011,42.68955078125006],[14.54072265625004,42.24428710937502],[15.16875,41.93403320312498],[16.164648437500034,41.89619140624998],[15.900488281250034,41.51206054687498],[17.954980468749994,40.65517578125002],[18.460644531249983,40.221044921875034],[18.34375,39.82138671874998],[18.077929687500017,39.93696289062498],[17.865039062500074,40.28017578125002],[17.395800781250045,40.34023437499999],[17.179980468750045,40.50278320312498],[16.92822265625,40.45805664062502],[16.521875,39.74755859375003],[17.114550781250017,39.38061523437497],[17.174609375000017,38.998095703125045],[16.61669921875003,38.800146484375034],[16.54560546875001,38.40908203125002],[16.05683593750001,37.941845703124955],[15.72451171875008,37.93911132812502],[15.645800781250017,38.034228515625045],[15.87890625,38.61391601562502],[16.19677734375,38.759228515624955],[16.20996093750003,38.94111328124998],[15.692773437499994,39.99018554687501],[14.95087890625004,40.23901367187497],[14.94765625000008,40.469335937500006],[14.765722656250063,40.66840820312498],[14.339941406250006,40.59882812500001],[14.460546875000063,40.72871093750001],[14.04433593750008,40.81225585937506],[13.733398437500057,41.23564453124999],[13.088671875000074,41.243847656249955],[12.630859374999972,41.469677734374955],[11.637304687500063,42.287548828124955],[11.141210937499977,42.38989257812503],[11.167773437500074,42.53515625000006],[10.708398437500023,42.93632812499999],[10.514843750000011,42.96752929687503],[10.188085937500063,43.947509765625],[8.76582031250004,44.42231445312501],[8.004980468750006,43.87675781249999],[7.4931640625,43.767138671875045],[7.637207031250057,44.16484375],[7.318554687500068,44.13798828125002],[6.900195312499989,44.33574218749996],[6.99267578125,44.82729492187502],[6.634765625000028,45.06816406249996],[7.07832031250004,45.23994140624998],[7.146386718750051,45.381738281249994],[6.790917968750023,45.740869140624966],[7.021093750000034,45.92578124999997],[7.055761718749977,45.90380859375003],[7.129003906249977,45.88041992187499],[7.327929687500017,45.912353515625],[7.9931640625,46.01591796874996],[8.081542968750057,46.25600585937502],[8.231933593750057,46.341210937499966],[8.29853515625004,46.403417968750034],[8.370703125,46.44511718750002],[8.458398437500023,46.24589843750002],[8.818554687500011,46.0771484375],[8.826757812500006,46.06103515625],[8.77802734375004,45.996191406250034],[8.953710937500034,45.83002929687501],[9.023730468750074,45.845703125],[9.203417968750017,46.21923828125],[9.304394531250068,46.49555664062498],[9.399316406250023,46.480664062499955],[9.427636718750023,46.48232421875002],[9.528710937500023,46.306201171875045],[9.57958984375,46.29609375000001],[9.639453125000017,46.29589843749997],[9.78779296875004,46.34604492187498],[9.884472656250011,46.36777343750006],[9.939257812500074,46.36181640625],[10.041015625000028,46.23808593750002],[10.08056640625,46.22797851562501],[10.128320312500051,46.238232421874955],[10.109667968750074,46.36284179687502],[10.081933593750023,46.420751953125006],[10.045605468750068,46.44790039062505],[10.038281250000011,46.483203125000045],[10.061230468750068,46.54677734375002],[10.087011718750063,46.59990234375002],[10.1375,46.614355468750034],[10.195507812500068,46.62109374999997],[10.4306640625,46.55004882812497],[10.409352678571473,46.6092047991071],[10.39794921875,46.66503906250006],[10.406054687500045,46.73486328124997],[10.452832031249983,46.86494140625001],[10.47939453125008,46.85512695312505],[10.579785156250011,46.85371093750001],[10.689257812500017,46.846386718749955],[10.759765625,46.79331054687498],[10.828906250000045,46.775244140625034],[10.927343750000034,46.76948242187501],[10.993261718750034,46.77700195312502],[11.02509765625004,46.796972656250006],[11.063476562500057,46.85913085937497],[11.133886718750006,46.93618164062505],[11.244433593750045,46.975683593750006],[11.433203125000063,46.983056640624994],[11.527539062500011,46.99741210937498],[11.775683593750017,46.986083984375],[12.169433593750028,47.082128906250006],[12.19716796875008,47.075],[12.201269531250034,47.060888671875034],[12.165527343750028,47.028173828125034],[12.130761718750051,46.98476562499999],[12.154101562500017,46.93525390625004],[12.267968750000023,46.83588867187504],[12.330078125,46.75981445312499],[12.388281250000034,46.70263671874997],[12.479199218749983,46.672509765624966],[13.16875,46.572656249999966],[13.3515625,46.55791015624999],[13.490039062500045,46.55556640625002],[13.7,46.52026367187503],[13.679687500000057,46.46289062499997],[13.63710937500008,46.44853515624999],[13.563281250000045,46.41508789062502],[13.399511718749977,46.31752929687502],[13.420996093750006,46.212304687499994]]]]},"properties":{"name":"Italy","childNum":6}},{"geometry":{"type":"Polygon","coordinates":[[[-77.261474609375,18.45742187499999],[-76.349853515625,18.15185546875],[-76.21079101562499,17.913525390624997],[-76.524609375,17.8662109375],[-76.85322265625,17.97373046874999],[-76.94414062499999,17.848779296874994],[-77.11948242187499,17.880078125],[-77.20498046875,17.71494140624999],[-77.36142578124999,17.833691406249997],[-77.76816406249999,17.877392578124997],[-78.04448242187499,18.173828125],[-78.339501953125,18.28720703124999],[-78.21669921875,18.44809570312499],[-77.8734375,18.522216796875],[-77.261474609375,18.45742187499999]]]},"properties":{"name":"Jamaica","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-2.018652343749977,49.23125],[-2.23583984375,49.1763671875],[-2.220507812499989,49.266357421875],[-2.018652343749977,49.23125]]]},"properties":{"name":"Jersey","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[39.14541015625002,32.12451171875],[38.9970703125,32.007470703124994],[38.96230468750002,31.994921875],[38.37548828125,31.847460937499996],[38.111425781250006,31.781152343749994],[37.49335937500001,31.625878906249994],[37.215625,31.556103515624997],[36.95859375,31.491503906249996],[37.980078125,30.5],[37.862890625,30.442626953125],[37.66972656250002,30.34814453125],[37.64990234375,30.330957031249994],[37.63359375000002,30.31328125],[37.55361328125002,30.144580078124996],[37.49072265625,30.01171875],[37.46923828125,29.995068359374997],[36.75527343750002,29.866015625],[36.70390625000002,29.831640625],[36.591796875,29.66611328125],[36.47607421875,29.4951171875],[36.2828125,29.355371093749994],[36.068457031250006,29.200537109375],[34.95078125,29.353515625],[34.97343750000002,29.555029296875],[35.45058593750002,31.479296875],[35.57207031250002,32.237890625],[35.55146484375001,32.3955078125],[35.56904296875001,32.619873046875],[35.572851562500006,32.640869140625],[35.78730468750001,32.734912109374996],[36.3720703125,32.3869140625],[36.818359375,32.317285156249994],[38.773535156250006,33.372216796874994],[39.04140625000002,32.3056640625],[39.24746093750002,32.350976562499994],[39.29277343750002,32.24384765625],[39.14541015625002,32.12451171875]]]},"properties":{"name":"Jordan","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[123.88867187499997,24.280126953124977],[123.67978515625012,24.317773437500023],[123.77148437499997,24.41445312499999],[123.93486328125002,24.362011718749983],[123.88867187499997,24.280126953124977]]],[[[124.29316406250004,24.515917968750074],[124.13574218750003,24.347607421874983],[124.08476562500002,24.435839843750017],[124.30195312500004,24.58710937500001],[124.29316406250004,24.515917968750074]]],[[[125.44414062500002,24.7431640625],[125.26894531250005,24.732519531250063],[125.28359375,24.871923828125034],[125.44414062500002,24.7431640625]]],[[[128.25878906249997,26.65278320312501],[127.86708984375,26.442480468749977],[127.80361328125005,26.152539062499983],[127.653125,26.0947265625],[127.90722656250003,26.69360351562497],[128.09765624999997,26.66777343749996],[128.25488281249997,26.88188476562496],[128.25878906249997,26.65278320312501]]],[[[128.99814453125012,27.720800781250006],[128.90000000000012,27.727783203125],[128.9076171875,27.897998046875045],[128.99814453125012,27.720800781250006]]],[[[129.45253906250005,28.20898437499997],[129.3664062500001,28.127734375000045],[129.16464843750012,28.24975585937503],[129.68955078125012,28.517480468750023],[129.45253906250005,28.20898437499997]]],[[[130.6227539062501,30.262988281250017],[130.44560546875002,30.264697265625017],[130.38808593750005,30.38818359375003],[130.49716796875006,30.465527343749983],[130.64355468749997,30.388964843750017],[130.6227539062501,30.262988281250017]]],[[[130.95976562500007,30.39692382812504],[130.87031250000004,30.444238281249994],[131.06035156250007,30.828466796875006],[130.95976562500007,30.39692382812504]]],[[[130.38105468750004,32.42373046875002],[130.24169921874997,32.462792968749994],[130.46142578124997,32.515722656250034],[130.38105468750004,32.42373046875002]]],[[[130.08251953124997,32.22968750000001],[129.9601562500001,32.24375],[130.00976562499997,32.521630859374994],[130.16777343750002,32.54121093749998],[130.19951171875002,32.34057617187506],[130.08251953124997,32.22968750000001]]],[[[128.66533203125002,32.783886718749955],[128.89453124999997,32.65214843750002],[128.69296875000012,32.60473632812506],[128.66533203125002,32.783886718749955]]],[[[129.07695312500002,32.84028320312498],[128.99726562500004,32.95185546874998],[129.10976562500005,33.13256835937503],[129.18193359375002,32.99311523437504],[129.07695312500002,32.84028320312498]]],[[[129.49179687500006,33.22304687499999],[129.37041015625002,33.176025390625],[129.56992187500006,33.36103515625004],[129.49179687500006,33.22304687499999]]],[[[129.79570312500007,33.74882812499999],[129.67480468749997,33.73969726562498],[129.71728515624997,33.8583984375],[129.79570312500007,33.74882812499999]]],[[[131.17460937500007,33.602587890625045],[131.69628906250003,33.60283203124999],[131.53740234375007,33.274072265624994],[131.89658203125006,33.25458984375001],[131.8478515625001,33.118066406249994],[132.0021484375001,32.882373046875045],[131.6603515625001,32.465625],[131.33720703125007,31.4046875],[131.07080078124997,31.436865234374977],[131.09843750000002,31.256152343750017],[130.68574218750004,31.01513671875003],[130.77626953125,31.70629882812497],[130.65507812500002,31.71840820312505],[130.5560546875,31.563085937500034],[130.58876953125,31.178515625000017],[130.20068359374997,31.291894531250023],[130.14726562500002,31.40849609374996],[130.2941406250001,31.45068359375003],[130.3219726562501,31.601464843750023],[130.18789062500005,31.768847656250017],[130.19443359375012,32.090771484374955],[130.64052734375005,32.61923828124998],[130.49785156250002,32.65693359375001],[130.547265625,32.83159179687499],[130.2375,33.177636718749966],[130.12685546875005,33.10483398437506],[130.175,32.851318359375],[130.32646484375002,32.852636718750006],[130.34042968750012,32.70185546875004],[130.05410156250005,32.770800781250045],[129.76855468749997,32.57099609375001],[129.82675781250006,32.72534179687503],[129.67910156250005,33.059960937499966],[129.99169921875003,32.85156249999997],[129.58007812500003,33.23627929687501],[129.61015625000002,33.34365234375005],[129.844140625,33.32177734375003],[129.82568359374997,33.43701171875006],[130.36503906250007,33.634472656249955],[130.4837890625,33.834619140624966],[130.715625,33.92778320312502],[130.953125,33.87202148437504],[131.17460937500007,33.602587890625045]]],[[[132.266015625,33.945166015625006],[132.44492187500006,33.91318359374998],[132.20878906250007,33.87285156250002],[132.266015625,33.945166015625006]]],[[[129.27949218750004,34.123388671875006],[129.18642578125,34.14501953125006],[129.21484374999997,34.320654296875034],[129.3371093750001,34.284765625],[129.27949218750004,34.123388671875006]]],[[[134.35742187500003,34.25634765625],[134.6375,34.22661132812499],[134.73886718750012,33.82050781250001],[134.37705078125012,33.60839843749997],[134.18164062500003,33.24721679687502],[133.95869140625004,33.44833984375006],[133.63203125000004,33.51098632812503],[133.28593750000007,33.35996093749998],[132.97724609375004,32.84199218749998],[132.80429687500006,32.75200195312502],[132.6417968750001,32.76245117187503],[132.70898437500003,32.90249023437505],[132.49511718749997,32.91660156249998],[132.41279296875004,33.43046875],[132.0326171875,33.339990234374994],[132.64306640624997,33.68994140624997],[132.93515625000006,34.09531250000006],[133.19306640625004,33.93320312499998],[133.58203124999997,34.01713867187502],[133.60263671875006,34.24384765625001],[133.94833984375006,34.34804687500002],[134.35742187500003,34.25634765625]]],[[[134.35185546875002,34.48364257812503],[134.25185546875,34.42304687500004],[134.18212890625003,34.51923828124998],[134.35185546875002,34.48364257812503]]],[[[134.9328125000001,34.28813476562499],[134.82441406250004,34.202929687500045],[134.66787109375005,34.294140624999955],[135.00468750000002,34.54404296874998],[134.9328125000001,34.28813476562499]]],[[[129.38564453125,34.35366210937502],[129.26669921875012,34.37045898437506],[129.45107421875005,34.68657226562499],[129.38564453125,34.35366210937502]]],[[[133.37050781250005,36.203857421875],[133.23925781249997,36.178759765625045],[133.20615234375006,36.293408203124955],[133.29570312500002,36.34013671874996],[133.37050781250005,36.203857421875]]],[[[138.34404296875007,37.822119140625006],[138.22519531250006,37.82939453124996],[138.25,38.078466796875006],[138.50361328125004,38.31591796875006],[138.45361328124997,38.07568359375006],[138.57519531249997,38.065527343750034],[138.34404296875007,37.822119140625006]]],[[[141.22929687500007,41.37265625],[141.45546875000005,41.404736328124955],[141.43046875000002,40.72333984374998],[141.7970703125001,40.29116210937502],[141.97695312500005,39.428808593750034],[141.90078125,39.111328125],[141.5462890625,38.762841796874966],[141.4674804687501,38.404150390625006],[141.10839843750003,38.33793945312502],[140.9621093750001,38.148876953124955],[141.00166015625004,37.11464843750002],[140.57353515625007,36.23134765625002],[140.87402343749997,35.72495117187506],[140.457421875,35.51025390625],[140.35468750000004,35.18144531249999],[139.8439453125001,34.914892578125034],[139.82646484375002,35.29667968750002],[140.096875,35.58515624999998],[139.83476562500002,35.658056640625006],[139.65000000000012,35.40913085937501],[139.675,35.149267578125006],[139.47441406250002,35.298535156249955],[139.24941406250005,35.27802734375004],[139.08603515625006,34.83916015624999],[138.8375,34.619238281250034],[138.80273437499997,34.97480468749998],[138.90361328125002,35.02524414062506],[138.71962890625,35.12407226562502],[138.18906250000012,34.596337890624994],[137.543359375,34.66420898437505],[137.06171875000004,34.58281249999999],[137.27519531250002,34.77250976562499],[136.96328125000005,34.83491210937501],[136.87128906250004,34.733105468749955],[136.89707031250006,35.03554687500002],[136.80419921874997,35.05029296875],[136.53300781250007,34.678369140624994],[136.8802734375,34.43359375000006],[136.8537109375001,34.324072265625034],[136.32988281250007,34.17685546875006],[135.91621093750004,33.561718749999955],[135.69531250000003,33.48696289062502],[135.4528320312501,33.55336914062505],[135.12792968749997,34.006982421874994],[135.10009765624997,34.288378906250045],[135.41591796875,34.61748046875002],[134.74003906250007,34.765234375],[134.246875,34.71386718750003],[133.96826171874997,34.52729492187504],[133.14238281250002,34.30244140624998],[132.65654296875007,34.24609375000003],[132.31259765625006,34.32495117187503],[132.14648437499997,33.83876953125002],[131.74052734375007,34.05205078125002],[130.91884765625,33.97573242187502],[130.88925781250012,34.261816406250034],[131.00419921875007,34.39257812500003],[131.35439453125,34.41318359375006],[132.92294921875006,35.511279296875045],[133.98125,35.50722656250002],[135.17431640625003,35.74707031250003],[135.32695312500002,35.52553710937502],[135.68027343750006,35.503125],[135.903125,35.60688476562498],[136.09531250000006,35.767626953125045],[136.06748046875006,36.11684570312505],[136.69814453125005,36.742041015625034],[136.84345703125004,37.38212890624999],[137.32265625,37.52207031249998],[136.89990234375003,37.11767578125],[137.01669921875006,36.83720703124999],[137.24628906250004,36.753173828125],[137.5140625,36.95156250000002],[138.31992187500012,37.21840820312502],[138.88505859375007,37.84394531250001],[139.36386718750006,38.09902343750002],[139.80195312500004,38.881591796875],[140.06474609375002,39.624414062499994],[139.99472656250006,39.855078125],[139.74150390625002,39.92084960937498],[140.01113281250005,40.26035156250006],[139.92285156250003,40.59843750000002],[140.28125,40.84609375000002],[140.3444335937501,41.203320312499955],[140.62763671875004,41.195410156250034],[140.74863281250012,40.830322265625],[140.93603515625003,40.940771484375034],[141.1185546875,40.88227539062501],[141.24423828125006,41.20561523437499],[140.80058593750002,41.138818359374966],[140.80185546875012,41.253662109375],[140.9369140625,41.50556640624998],[141.22929687500007,41.37265625]]],[[[139.48125,42.08100585937498],[139.43134765625004,42.19956054687498],[139.55839843750002,42.235205078125034],[139.48125,42.08100585937498]]],[[[141.29541015625003,45.11933593750001],[141.14531250000002,45.153906250000034],[141.19375,45.24785156249999],[141.29541015625003,45.11933593750001]]],[[[141.07275390624997,45.33286132812498],[141.03398437500007,45.26933593750002],[140.97167968749997,45.465478515624994],[141.07275390624997,45.33286132812498]]],[[[143.82431640625012,44.11699218749999],[144.71523437500005,43.92797851562503],[145.36953125000005,44.32739257812506],[145.13964843750003,43.6625],[145.34082031249997,43.30253906249999],[145.83300781249997,43.38593750000001],[144.92138671874997,43.00092773437498],[143.96933593750006,42.88139648437499],[143.42949218750002,42.41889648437498],[143.2365234375001,42.000195312499955],[141.85136718750007,42.57905273437501],[141.40664062500005,42.54692382812496],[140.98613281250002,42.34213867187498],[140.70976562500002,42.555615234374955],[140.48046875000003,42.559375],[140.32666015625003,42.29335937499999],[141.15097656250012,41.80507812499999],[140.99951171874997,41.73740234375006],[140.65986328125004,41.815576171874994],[140.3849609375001,41.51928710937503],[140.08515625000004,41.43408203125],[139.99531250000004,41.57641601562503],[140.10839843749997,41.912939453125034],[139.83544921874997,42.278076171875],[139.86015625000002,42.58173828125004],[140.43222656250012,42.95410156250006],[140.39238281250002,43.303125],[141.13818359374997,43.17993164062506],[141.37412109375006,43.279638671875006],[141.7609375000001,44.482519531250034],[141.58300781250003,45.15595703125001],[141.66796874999997,45.401269531249966],[141.93769531250004,45.509521484375],[142.88476562499997,44.670117187499955],[143.82431640625012,44.11699218749999]]]]},"properties":{"name":"Japan","childNum":28}},{"geometry":{"type":"Polygon","coordinates":[[[77.04863281249999,35.109912109374996],[76.927734375,35.346630859375],[76.88222656250002,35.4357421875],[76.81279296874999,35.571826171874996],[76.76689453124999,35.66171875],[76.87890625,35.61328125],[77.09003906250001,35.552050781249996],[77.29482421875002,35.508154296875],[77.44648437500001,35.4755859375],[77.57255859374999,35.471826171874994],[77.72402343750002,35.48056640625],[77.79941406250003,35.495898437499996],[77.42343750000003,35.302587890625],[77.16855468750003,35.171533203124994],[77.04863281249999,35.109912109374996]]]},"properties":{"name":"Siachen Glacier","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[50.184472656249994,44.854638671874994],[49.99511718750003,44.93696289062498],[50.10986328124997,45.08193359375002],[50.038867187500074,44.949121093749966],[50.184472656249994,44.854638671874994]]],[[[87.32285156250012,49.085791015625006],[86.8083007812501,49.04970703125002],[86.54941406250012,48.52861328125002],[85.7494140625,48.38505859374999],[85.52597656250006,47.915625],[85.65664062500005,47.254638671875],[85.484765625,47.06352539062496],[84.78613281249997,46.83071289062505],[84.66660156250006,46.97236328125004],[84.016015625,46.97050781250002],[83.02949218750004,47.18593750000002],[82.31523437500002,45.59492187499998],[82.61162109375007,45.424267578124955],[82.52148437500003,45.12548828125],[82.26660156249997,45.21909179687498],[81.94492187500006,45.16083984375001],[81.69199218750012,45.34936523437497],[80.05917968750012,45.006445312500006],[79.871875,44.88378906249997],[80.48154296875006,44.71464843749999],[80.35527343750002,44.09726562500006],[80.78574218750006,43.16157226562504],[80.39023437500006,43.043115234374966],[80.53896484375005,42.873486328124955],[80.20224609375012,42.73447265624998],[80.209375,42.190039062500006],[80.07128906249997,42.302978515625],[79.92109375000004,42.41313476562496],[79.49013671875,42.45756835937496],[79.42822265624997,42.483496093750006],[79.20302734375005,42.66601562499997],[79.16484375000007,42.759033203125],[79.1266601562501,42.775732421875034],[76.98808593750007,42.97358398437501],[76.64648437500003,42.928808593750034],[76.50917968750005,42.91889648437498],[75.9322265625,42.92851562499999],[75.84033203125003,42.9375],[75.78955078124997,42.93291015624999],[75.68173828125,42.83046875],[75.04765625000007,42.904394531250034],[74.20908203125006,43.24038085937502],[73.88603515625002,43.132568359375],[73.55625,43.002783203125006],[73.45019531249997,42.703027343749966],[73.421875,42.59350585937503],[73.49296875000007,42.409033203125034],[73.41162109375003,42.41977539062498],[73.316015625,42.46699218750001],[73.2829101562501,42.50410156250004],[72.85507812500006,42.561132812500006],[72.75292968750003,42.63789062500001],[72.54316406250004,42.67773437500006],[72.27578125,42.757666015625006],[71.76054687500002,42.82148437500004],[71.5142578125,42.766943359375006],[71.42207031250004,42.78315429687504],[71.25664062500002,42.733544921874966],[70.89287109375007,42.339990234374994],[70.94677734374997,42.24868164062505],[69.15361328125002,41.42524414062498],[68.58408203125,40.876269531250045],[68.57265625,40.62265624999998],[68.29189453125,40.656103515625034],[68.04765625000007,40.80927734374998],[68.11308593750007,41.02861328124999],[67.9357421875001,41.19658203125002],[66.70966796875004,41.17915039062501],[66.49863281250006,41.99487304687503],[66.00957031250007,42.00488281250003],[66.1002929687501,42.99082031249998],[65.80302734375002,42.87695312500006],[65.49619140625,43.310546875],[64.9054687500001,43.714697265625006],[64.44316406250007,43.55117187499999],[63.20703125000003,43.62797851562502],[61.99023437500003,43.492138671874955],[61.007910156250006,44.39379882812497],[58.555273437500006,45.55537109375001],[55.97568359375006,44.99492187499996],[55.97744140625005,41.32221679687504],[55.434375,41.296289062499994],[54.85380859375002,41.965185546875006],[54.120996093749994,42.335205078125],[53.0558593750001,42.14775390624999],[52.4938476562501,41.780371093750034],[52.59658203125005,42.760156249999966],[51.898242187500074,42.86962890624997],[51.61601562500002,43.15844726562503],[51.29541015624997,43.17412109375002],[51.30175781249997,43.48237304687501],[50.8307617187501,44.192773437499966],[50.331152343750006,44.32548828125002],[50.25292968749997,44.461523437500006],[50.409472656250074,44.6240234375],[51.543554687500006,44.53100585937506],[51.009375,44.92182617187501],[51.4157226562501,45.35786132812501],[53.20039062500004,45.33198242187498],[52.77382812499999,45.57275390625],[53.13525390625003,46.19165039062497],[53.069433593750006,46.85605468750006],[52.48320312500002,46.99067382812504],[52.13828125,46.82861328124997],[51.178027343750074,47.110156250000045],[49.886328125,46.59565429687504],[49.347460937500074,46.51914062499998],[49.232226562500074,46.33715820312503],[48.54121093750004,46.60561523437502],[48.558398437500074,46.75712890624999],[48.959375,46.77460937499998],[48.16699218750003,47.70878906249996],[47.48193359374997,47.80390624999998],[47.292382812499994,47.74091796875004],[47.06464843750004,48.23247070312499],[46.660937500000074,48.41225585937502],[46.70263671875003,48.80556640625002],[47.031347656250006,49.150292968749994],[46.80205078125002,49.36708984375002],[46.889550781249994,49.69697265625001],[47.42919921874997,50.35795898437502],[47.7057617187501,50.37797851562502],[48.33496093750003,49.858251953125006],[48.7589843750001,49.92832031250006],[48.625097656250006,50.61269531250005],[49.32343750000004,50.851708984374966],[49.49804687500003,51.08359375000006],[50.246875,51.28950195312498],[50.79394531249997,51.729199218749955],[51.16347656250005,51.6474609375],[51.344531250000074,51.47534179687503],[52.21914062499999,51.709375],[52.57119140625005,51.481640624999955],[53.33808593750004,51.48237304687504],[54.139746093750006,51.04077148437503],[54.555273437500006,50.535791015624994],[54.64160156250003,51.011572265625034],[55.68623046875004,50.582861328125006],[56.49140625000004,51.01953124999997],[57.01171874999997,51.06518554687503],[57.44218750000002,50.88886718749998],[57.83886718750003,51.091650390625006],[58.359179687500074,51.063818359375034],[58.88369140625005,50.694433593750006],[59.4523437500001,50.62041015625002],[59.523046875,50.492871093749955],[59.812402343749994,50.58203125],[60.05859374999997,50.850292968749955],[60.42480468749997,50.67915039062498],[60.94228515625005,50.69550781250004],[61.38945312500002,50.86103515625001],[61.55468750000003,51.32460937500005],[60.464746093749994,51.651171875000045],[60.03027343749997,51.93325195312505],[60.99453125000005,52.33686523437504],[60.77441406249997,52.67578124999997],[61.047460937500006,52.97246093750002],[62.08271484375004,53.00541992187499],[61.65986328125004,53.22846679687504],[61.19921874999997,53.28715820312502],[61.22890625,53.445898437500006],[61.53496093750002,53.52329101562506],[60.97949218749997,53.62172851562505],[61.231054687500006,54.01948242187498],[61.92871093750003,53.94648437500004],[64.46123046875002,54.38417968750002],[65.08837890624997,54.340185546875034],[65.476953125,54.62329101562497],[68.15585937500006,54.97670898437505],[68.20625,55.16093750000002],[68.9772460937501,55.389599609374955],[70.18242187500002,55.162451171875034],[70.73808593750007,55.30517578125],[71.18554687500003,54.59931640624998],[71.09316406250005,54.21220703124999],[72.00449218750006,54.20566406249998],[72.18603515625003,54.32563476562501],[72.44677734375003,53.94184570312498],[72.62226562500004,54.13432617187502],[73.22988281250005,53.957812500000045],[73.71240234375003,54.04238281250002],[73.30566406250003,53.707226562499955],[73.40693359375004,53.44755859374999],[73.85898437500006,53.61972656249998],[74.35156250000003,53.487646484375006],[74.45195312500007,53.64726562500002],[75.22021484374997,53.89379882812506],[75.43720703125004,54.08964843749999],[76.8373046875,54.4423828125],[76.65458984375007,54.14526367187503],[76.42167968750007,54.151513671874966],[76.48476562500005,54.02255859374998],[77.85996093750006,53.269189453124994],[79.98623046875,50.774560546874966],[80.42363281250002,50.94628906249997],[80.44804687500002,51.18334960937503],[80.73525390625,51.29340820312498],[81.12724609375002,51.19106445312502],[81.0714843750001,50.96875],[81.38828125000006,50.95649414062501],[81.46591796875006,50.73984375],[82.49394531250007,50.72758789062499],[82.76083984375012,50.89335937500002],[83.35732421875005,50.99458007812504],[83.94511718750007,50.774658203125],[84.32324218749997,50.239160156249966],[84.9894531250001,50.061425781249994],[85.2326171875001,49.61582031249998],[86.1808593750001,49.49931640624996],[86.67548828125004,49.77729492187501],[86.62646484374997,49.56269531250001],[87.32285156250012,49.085791015625006]]]]},"properties":{"name":"Kazakhstan","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[35.325292968750006,5.364892578124994],[35.745019531249994,5.343994140625],[35.80029296874997,5.156933593749983],[35.77929687499997,5.105566406250006],[35.756152343750074,4.950488281250031],[35.76308593750005,4.808007812500051],[36.02197265625003,4.468115234374991],[36.90556640625002,4.411474609374991],[37.15458984375002,4.254541015624994],[37.944921875,3.746728515625023],[38.0861328125001,3.648828124999966],[38.22529296875004,3.61899414062502],[38.45156250000005,3.604833984374977],[38.608007812500006,3.600097656249986],[39.49443359375002,3.45610351562496],[39.65751953125002,3.577832031249983],[39.79033203125002,3.754248046875034],[39.8421875,3.851464843750037],[40.765234375,4.273046875000034],[41.02080078125002,4.057470703124991],[41.22089843750004,3.943554687499969],[41.372460937499994,3.94619140624998],[41.48193359375003,3.96328125],[41.737695312499994,3.979052734375003],[41.88398437500004,3.977734375000011],[41.6134765625001,3.59047851562498],[41.34179687499997,3.20166015625],[40.964453125,2.814648437500026],[40.9787109375001,-0.870312500000011],[41.249804687500074,-1.220507812499946],[41.4269531250001,-1.449511718749974],[41.521875,-1.572265625000028],[41.53271484374997,-1.695312499999957],[41.26748046875005,-1.945019531250026],[40.889746093750006,-2.023535156250034],[40.89824218750002,-2.269921874999966],[40.64414062500006,-2.53945312499998],[40.22246093750002,-2.688378906250037],[40.1154296875001,-3.250585937499991],[39.8609375,-3.576757812500006],[39.49091796875004,-4.478417968750023],[39.221777343750006,-4.692382812500014],[37.608203125000074,-3.497070312500028],[37.643847656250074,-3.045410156250028],[33.90322265625005,-1.002050781250034],[33.94316406250002,0.173779296874969],[34.160937500000074,0.605175781250026],[34.4108398437501,0.867285156250034],[34.48173828125002,1.042138671875051],[34.79863281250002,1.24453125],[34.976464843749994,1.719628906250051],[34.97753906249997,1.861914062499991],[34.9640625000001,2.06240234374998],[34.8830078125001,2.417919921875026],[34.90576171875003,2.4796875],[34.44785156250006,3.163476562500037],[34.40722656249997,3.357519531250034],[34.39941406249997,3.412695312500006],[34.44179687499999,3.60625],[34.43769531250004,3.650585937499969],[34.392871093750074,3.691503906250048],[34.26708984375003,3.733154296875],[34.16503906250003,3.812988281250014],[34.18574218750004,3.869775390625037],[34.13203125000004,3.889160156249986],[33.97607421874997,4.220214843750028],[34.176855468750006,4.419091796875037],[34.38017578125002,4.620654296874974],[34.6398437500001,4.875488281250028],[34.878320312499994,5.109570312500026],[35.08447265624997,5.31186523437502],[35.268359375000074,5.492285156250006],[35.325292968750006,5.364892578124994]]]},"properties":{"name":"Kenya","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[72.63994140625002,39.385986328125],[72.22998046875,39.20751953125],[72.14736328125002,39.2607421875],[72.08417968750001,39.31064453125],[72.04277343750002,39.3521484375],[71.77861328125002,39.277978515624994],[71.73222656250002,39.422998046874994],[71.50332031250002,39.478808593749996],[71.51738281250002,39.553857421874994],[71.50302734375,39.582177734374994],[71.4703125,39.603662109374994],[70.79931640625,39.3947265625],[70.50117187500001,39.587353515625],[69.29765625000002,39.524804687499994],[69.2447265625,39.827099609375],[69.27880859375,39.917773437499996],[69.3072265625,39.968554687499996],[69.36542968750001,39.947070312499996],[69.43193359375002,39.909765625],[69.47626953125001,39.919726562499996],[69.47099609375002,39.990625],[69.46875,40.020751953125],[69.966796875,40.20224609375],[70.59921875,39.974511718749994],[70.990625,40.2548828125],[71.3046875,40.286914062499996],[71.69248046875,40.15234375],[72.13125,40.438623046874994],[72.3892578125,40.427392578124994],[72.40205078125001,40.578076171875],[72.6041015625,40.525439453124996],[73.13212890625002,40.82851562499999],[72.65830078125,40.869921875],[72.36406250000002,41.04345703125],[72.294921875,41.039941406249994],[72.21308593750001,41.0142578125],[72.18730468750002,41.025927734374996],[72.18095703125002,41.118457031249996],[72.16425781250001,41.173730468749994],[72.11542968750001,41.186572265624996],[72.05244140625001,41.16474609375],[71.95849609375,41.187060546874996],[71.87861328125001,41.19501953125],[71.8580078125,41.311376953125],[71.79248046875,41.413134765624996],[71.75771484375002,41.428027343749996],[71.70068359375,41.454003906249994],[71.66494140625002,41.5412109375],[71.6375,41.5341796875],[71.60224609375001,41.503271484375],[71.60625,41.367431640625],[71.54560546875001,41.308056640625],[71.5,41.307470703125],[71.4208984375,41.34189453125],[71.40839843750001,41.136035156249996],[71.39306640625,41.123388671875],[71.11074218750002,41.152636718749996],[70.86044921875,41.224902343749996],[70.734375,41.400537109374994],[70.18095703125002,41.571435546874994],[70.85664062500001,42.030810546874996],[71.0322265625,42.077783203124994],[71.228515625,42.162890625],[71.23232421875002,42.186279296875],[71.21269531250002,42.206445312499994],[71.12998046875,42.25],[71.03603515625002,42.28466796875],[70.97900390625,42.266552734375],[70.94677734375,42.248681640624994],[70.89287109375002,42.339990234374994],[71.25664062500002,42.733544921874994],[71.42207031250001,42.783154296875],[71.5142578125,42.766943359375],[71.76054687500002,42.821484375],[72.16181640625001,42.760693359375],[72.27578125000002,42.757666015625],[72.54316406250001,42.677734375],[72.7529296875,42.637890625],[72.855078125,42.5611328125],[73.28291015625001,42.5041015625],[73.316015625,42.4669921875],[73.41162109375,42.419775390625],[73.49296875000002,42.409033203125],[73.421875,42.593505859375],[73.4501953125,42.703027343749994],[73.55625,43.002783203125],[73.88603515625002,43.132568359375],[74.20908203125,43.240380859374994],[75.04765625000002,42.90439453125],[75.68173828125,42.83046875],[75.78955078125,42.932910156249996],[75.84033203125,42.9375],[75.9322265625,42.928515625],[76.50917968750002,42.918896484375],[76.646484375,42.92880859375],[76.98808593749999,42.973583984375],[79.12666015625001,42.775732421875],[79.20302734375002,42.666015625],[79.29550781250003,42.604833984375],[79.36777343750003,42.547216796875],[79.42822265625,42.48349609375],[79.92109375000001,42.413134765624996],[80.0712890625,42.302978515625],[80.209375,42.1900390625],[80.24619140625003,42.059814453125],[80.23515624999999,42.04345703125],[80.21621093750002,42.032421875],[79.90966796875,42.014990234375],[79.84042968750003,41.995751953124994],[79.76611328125,41.898876953125],[78.74257812500002,41.56005859375],[78.54316406250001,41.4595703125],[78.44287109375,41.417529296874996],[78.36240234375003,41.371630859374996],[78.34628906250003,41.2814453125],[78.12343750000002,41.075634765625],[77.95644531250002,41.050683593749994],[77.81523437499999,41.055615234375],[77.71933593750003,41.024316406249994],[77.58173828125001,40.9927734375],[76.98662109374999,41.03916015625],[76.90771484375,41.024169921875],[76.82402343749999,40.982324218749994],[76.70839843750002,40.818115234375],[76.6611328125,40.779638671875],[76.63984375000001,40.742236328124996],[76.62216796875003,40.662353515625],[76.57792968749999,40.577880859375],[76.48017578125001,40.449511718749996],[76.39638671875002,40.389794921874994],[76.31855468750001,40.35224609375],[76.25830078125,40.43076171875],[75.87197265625002,40.30322265625],[75.67714843750002,40.305810546874994],[75.55556640625002,40.6251953125],[75.52080078125002,40.6275390625],[75.24101562500002,40.480273437499996],[75.111328125,40.4541015625],[75.0044921875,40.449511718749996],[74.865625,40.493505859375],[74.80126953125,40.428515625],[74.83046875000002,40.32851562499999],[74.41191406250002,40.13720703125],[74.24267578125,40.092041015625],[74.08515625000001,40.07431640625],[73.99160156250002,40.043115234374994],[73.93876953125002,39.978808593749996],[73.88457031250002,39.8779296875],[73.85625,39.828662109374996],[73.83535156250002,39.800146484375],[73.83974609375002,39.762841796874994],[73.88251953125001,39.71455078125],[73.9146484375,39.606494140624996],[73.90712890625002,39.57851562499999],[73.87275390625001,39.53330078125],[73.82294921875001,39.48896484375],[73.71572265625002,39.462255859375],[73.63164062500002,39.448876953124994],[73.47041015625001,39.460595703124994],[73.38740234375001,39.442724609375],[73.33613281250001,39.412353515625],[73.2349609375,39.374560546874996],[73.10927734375002,39.3619140625],[72.63994140625002,39.385986328125]],[[70.66416015625,39.85546875],[70.56708984375001,39.866601562499994],[70.49775390625001,39.882421875],[70.48281250000002,39.882714843749994],[70.4892578125,39.863037109375],[70.5595703125,39.790917968749994],[70.61210937500002,39.786767578124994],[70.70166015625,39.82529296875],[70.66416015625,39.85546875]],[[71.20615234375,39.892578125],[71.22871093750001,40.048144531249996],[71.08037109375002,40.079882812499996],[71.02412109375001,40.149169921875],[71.00546875,40.152294921875],[70.96064453125001,40.08798828125],[71.04482421875002,39.992529296875],[71.04365234375001,39.976318359375],[71.01171875,39.8951171875],[71.06425781250002,39.884912109374994],[71.15625,39.883447265624994],[71.20615234375,39.892578125]]]},"properties":{"name":"Kyrgyzstan","childNum":3}},{"geometry":{"type":"Polygon","coordinates":[[[104.42636718750006,10.411230468749991],[103.87050781250005,10.655126953125034],[103.58710937500004,10.552197265625026],[103.54042968750005,10.668701171875043],[103.721875,10.890136718750043],[103.5324218750001,11.146679687499997],[103.35361328125006,10.921582031250054],[103.15283203124997,10.913720703125051],[103.12548828124997,11.460644531250011],[102.9486328125,11.773486328124974],[102.93388671875002,11.706689453125037],[102.73662109375007,12.089794921875011],[102.75566406250002,12.42626953125],[102.49960937500012,12.669970703125003],[102.33632812500005,13.560302734375014],[102.546875,13.585693359375043],[102.90927734375006,14.136718750000028],[103.19941406250004,14.332617187499977],[104.77900390625004,14.427832031250006],[105.07412109375005,14.227441406250037],[105.12597656250003,14.280957031250011],[105.16914062500004,14.336083984374966],[105.1833007812501,14.346240234374989],[105.18554687500003,14.319091796874972],[105.20703125000003,14.259375],[105.24570312500006,14.200537109374977],[105.35019531250006,14.109570312500011],[105.53154296875007,14.156152343749994],[105.73974609375003,14.084960937500057],[105.83144531250005,13.976611328125003],[105.9044921875001,13.924511718750054],[106.06679687500005,13.921191406250003],[106.12470703125004,14.049121093750031],[106.09667968749997,14.127099609375023],[106.00410156250004,14.262890624999983],[105.97890625,14.343017578125043],[106.00839843750012,14.357177734375],[106.1652343750001,14.372363281249989],[106.19072265625007,14.388134765624997],[106.22539062500002,14.476220703125009],[106.26796875,14.466210937500009],[106.35498046875003,14.454785156249997],[106.44697265625004,14.515039062500009],[106.50146484375003,14.578222656250006],[106.53115234375005,14.549414062499991],[106.5636718750001,14.505078125000026],[106.59921875000006,14.479394531250037],[106.66542968750005,14.441308593749994],[106.73818359375005,14.387744140625017],[106.78349609375002,14.335107421875037],[106.81992187500006,14.314697265625057],[106.91318359375006,14.329394531250031],[106.93808593750006,14.327343750000054],[106.99218750000003,14.391015624999966],[107.03017578125,14.425683593750009],[107.06240234375,14.415771484375043],[107.109375,14.416699218750054],[107.29267578125004,14.592382812500048],[107.37988281250003,14.555322265625051],[107.41474609375004,14.56289062499999],[107.51943359375005,14.705078125],[107.3314453125,14.126611328125009],[107.60546874999997,13.437792968750017],[107.47539062500002,13.030371093749963],[107.50644531250006,12.364550781250031],[107.39335937500002,12.260498046874972],[107.21210937500004,12.30400390624996],[106.70009765625,11.979296874999974],[106.41386718750002,11.9484375],[106.39921875000007,11.687011718750028],[106.0060546875001,11.758007812500011],[105.85146484375005,11.635009765625],[105.85605468750006,11.294287109375048],[106.16093750000002,11.037109375000057],[106.16396484375005,10.794921875],[105.85332031250007,10.86357421874996],[105.75507812500004,10.989990234375043],[105.40576171875003,10.95161132812504],[105.3146484375001,10.845166015625026],[105.04570312500002,10.911376953125014],[105.04638671874997,10.701660156250014],[104.85058593749997,10.534472656249974],[104.42636718750006,10.411230468749991]]]},"properties":{"name":"Cambodia","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-157.34213867187503,1.855566406250034],[-157.17578125,1.73984375],[-157.57895507812498,1.902050781249997],[-157.43583984374993,1.84726562500002],[-157.365185546875,1.94609375],[-157.44189453125003,2.025048828125009],[-157.321875,1.968554687500045],[-157.34213867187503,1.855566406250034]]],[[[-159.3390625,3.923535156249983],[-159.27475585937503,3.796582031250054],[-159.40903320312503,3.87324218750004],[-159.3390625,3.923535156249983]]]]},"properties":{"name":"Kiribati","childNum":2}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[126.32695312500002,33.2236328125],[126.16562500000012,33.31201171875],[126.33769531250002,33.46040039062501],[126.90117187500002,33.51513671874997],[126.87285156250002,33.34116210937498],[126.32695312500002,33.2236328125]]],[[[126.23369140625002,34.370507812499994],[126.12285156250002,34.443945312500034],[126.34384765625012,34.544921875],[126.23369140625002,34.370507812499994]]],[[[126.17197265625006,34.73115234375001],[126.00751953125004,34.86748046874999],[126.07841796875002,34.914843750000045],[126.17197265625006,34.73115234375001]]],[[[128.0658203125,34.80585937500004],[128.05468750000003,34.70805664062502],[127.87343750000005,34.73496093749998],[127.8322265625001,34.87451171875],[128.0658203125,34.80585937500004]]],[[[128.74101562500007,34.798535156249955],[128.64667968750004,34.73686523437502],[128.48925781250003,34.86528320312496],[128.66796875000003,35.0087890625],[128.74101562500007,34.798535156249955]]],[[[126.52070312500004,37.73681640625003],[126.516015625,37.60468750000001],[126.42333984375003,37.62363281250006],[126.41162109374997,37.82265625000002],[126.52070312500004,37.73681640625003]]],[[[128.37460937500012,38.6234375],[129.41826171875002,37.059033203124955],[129.40351562500004,36.052148437499994],[129.57285156250006,36.05053710937503],[129.4191406250001,35.49785156249996],[129.07675781250006,35.12270507812502],[128.5109375000001,35.10097656250002],[128.44394531250012,34.87036132812503],[128.03623046875006,35.02197265625],[127.71484374999997,34.95468749999998],[127.71542968750012,34.72104492187498],[127.40429687499997,34.823095703125006],[127.47910156250012,34.625244140625],[127.324609375,34.463281249999966],[127.17343750000006,34.54614257812497],[127.24707031249997,34.755126953125],[126.89746093749997,34.438867187499966],[126.75478515625005,34.511865234374994],[126.53144531250004,34.31425781249999],[126.26445312500002,34.67324218750002],[126.52451171875006,34.697900390624966],[126.59335937500012,34.824365234374994],[126.42070312500002,34.823388671874966],[126.29111328125012,35.154150390625034],[126.61406250000007,35.57099609375004],[126.4884765625001,35.647070312500006],[126.75302734375006,35.871972656249994],[126.5404296875,36.166162109374966],[126.4876953125,36.69379882812498],[126.18085937500004,36.69160156249998],[126.16054687500005,36.77192382812501],[126.48701171875004,37.00747070312502],[126.78447265625007,36.94843749999998],[126.87207031249997,36.82446289062506],[126.97685546875002,36.93940429687501],[126.74638671875002,37.19355468750001],[126.63388671875012,37.78183593750006],[127.09033203125003,38.28388671875001],[128.03896484375,38.30854492187498],[128.37460937500012,38.6234375]]]]},"properties":{"name":"Korea","childNum":7}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[48.27539062499997,29.624316406250017],[48.17968750000003,29.611425781250063],[48.081445312499994,29.798925781250063],[48.1847656250001,29.978857421875034],[48.348242187500006,29.78266601562504],[48.27539062499997,29.624316406250017]]],[[[48.442480468750006,28.542919921874983],[47.671289062499994,28.53315429687504],[47.433203125,28.989550781250017],[46.53144531250004,29.09624023437499],[46.69375,29.259667968749966],[46.76933593750002,29.347460937500017],[46.90585937500006,29.5375],[47.14824218750002,30.0009765625],[47.64375,30.097314453125023],[47.75390624999997,30.076611328124955],[47.97871093750004,29.98281250000005],[48.00566406250002,29.835791015625034],[48.143457031249994,29.57246093750001],[47.96962890625005,29.61669921874997],[47.72265624999997,29.393017578124955],[48.0514648437501,29.355371093750023],[48.442480468750006,28.542919921874983]]]]},"properties":{"name":"Kuwait","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[102.12744140625011,22.37919921874999],[102.58251953125006,21.904296875000057],[102.66201171875008,21.676025390625057],[102.73857421875005,21.677929687500125],[102.77109375000015,21.70966796875001],[102.79824218750014,21.797949218750034],[102.81591796875,21.807373046875],[102.94960937500008,21.681347656250068],[102.85117187500009,21.26591796874999],[102.8837890625,21.202587890625068],[103.1044921875,20.89165039062499],[103.21074218749999,20.840625],[103.46357421874995,20.779833984375102],[103.6350585937501,20.697070312500102],[104.10136718750005,20.945507812500125],[104.1953125,20.91396484375008],[104.349609375,20.82109374999999],[104.58320312500001,20.646679687499955],[104.53271484375,20.554882812500125],[104.47861328124998,20.529589843750102],[104.40781250000015,20.485742187500023],[104.36777343750015,20.441406250000057],[104.39218750000015,20.424755859375068],[104.49619140625003,20.41367187499992],[104.61884765624995,20.374511718750114],[104.65644531250001,20.328515624999966],[104.66191406250005,20.289013671875125],[104.67695312500007,20.224707031249977],[104.69873046875006,20.205322265625114],[104.84785156250007,20.202441406250045],[104.88867187500006,20.169091796875023],[104.92919921874994,20.082812500000045],[104.92792968750007,20.01811523437499],[104.81513671875001,19.90400390625001],[104.80175781250011,19.836132812500068],[104.74316406250006,19.754736328124977],[104.58789062500006,19.61875],[104.54628906250014,19.610546875000068],[104.25986328125003,19.685498046875068],[104.06279296875005,19.678417968750068],[104.03203124999999,19.67514648437492],[104.0134765625001,19.646484374999943],[104.05156250000005,19.564160156250068],[104.06289062500002,19.482568359375136],[104.02753906250013,19.420458984375102],[103.93203125000002,19.366064453125034],[103.89638671875002,19.339990234375023],[103.89160156249994,19.30498046874999],[105.146484375,18.650976562499977],[105.14541015625014,18.616796874999977],[105.08701171875015,18.49624023437508],[105.11455078125005,18.405273437500057],[105.45820312500007,18.154296875000057],[105.51855468750011,18.077441406250045],[105.58847656250015,17.983691406249932],[105.69140625,17.737841796874932],[106.00625,17.415283203124943],[106.26953125,17.216796875000057],[106.33339843750002,17.14370117187508],[106.42597656250007,17.00253906250009],[106.50224609374999,16.9541015625],[106.52597656250003,16.876611328125023],[106.53369140625,16.821044921875057],[106.54619140625005,16.650732421874977],[106.65644531250013,16.492626953125125],[106.73955078124999,16.452539062500136],[106.79160156250015,16.490332031249977],[106.83242187500008,16.526269531250023],[106.85107421875,16.515625],[106.89277343750013,16.396533203125102],[106.93066406250006,16.353125],[107.39638671875008,16.04301757812499],[107.39199218750008,15.951660156250057],[107.36064453125005,15.921728515624977],[107.18886718750008,15.838623046875114],[107.16591796875002,15.802490234375],[107.27939453125003,15.618701171875045],[107.33876953125002,15.560498046875125],[107.56425781249999,15.3916015625],[107.62167968750015,15.309863281250045],[107.653125,15.255224609375091],[107.63369140625008,15.18984375000008],[107.58964843749999,15.118457031250102],[107.55527343750009,15.057031250000023],[107.48037109375014,14.979882812500136],[107.5046875000001,14.91591796875008],[107.52451171875003,14.871826171874943],[107.51376953124998,14.817382812500057],[107.51943359375008,14.705078125000114],[107.46513671875005,14.664990234375125],[107.41474609375007,14.56289062500008],[107.37988281250006,14.555322265625136],[107.29267578125007,14.592382812500034],[107.109375,14.416699218749955],[107.06240234375008,14.415771484374943],[107.03017578125008,14.425683593750023],[106.99218749999994,14.39101562500008],[106.93808593750015,14.327343750000068],[106.91318359375003,14.329394531249932],[106.81992187500003,14.314697265624943],[106.7834960937501,14.335107421875023],[106.73818359375008,14.387744140625102],[106.66542968750002,14.441308593750023],[106.59921875000003,14.479394531250136],[106.56367187500007,14.505078125000011],[106.53115234375002,14.549414062499977],[106.50146484375,14.578222656250034],[106.22539062500005,14.476220703125023],[106.1907226562501,14.388134765625011],[106.16523437500007,14.372363281249989],[106.00839843750009,14.357177734375114],[105.97890625000014,14.343017578125057],[106.00410156250013,14.262890625000068],[106.09667968750011,14.127099609375136],[106.12470703124995,14.049121093750045],[106.06679687500008,13.921191406250102],[105.90449218750007,13.924511718750068],[105.83144531250008,13.976611328124989],[105.73974609375006,14.084960937500057],[105.5315429687501,14.156152343750023],[105.35019531250009,14.109570312500125],[105.24570312500015,14.200537109374977],[105.20703125000006,14.259375],[105.18554687499994,14.319091796875],[105.18330078125001,14.346240234374989],[105.24365234375006,14.367871093749955],[105.34218750000008,14.416699218749955],[105.42265624999993,14.471630859374955],[105.47558593750006,14.530126953124977],[105.49736328125005,14.590673828125034],[105.52304687500015,14.843310546874989],[105.54667968749999,14.932470703125034],[105.53339843750013,15.041601562500091],[105.49042968750007,15.127587890625023],[105.49042968750007,15.256591796875],[105.615625,15.488281249999943],[105.63886718750013,15.585937499999943],[105.64101562500002,15.656542968749932],[105.62207031250006,15.699951171875114],[105.39892578125011,15.829882812500102],[105.40625,15.987451171875023],[105.33066406250003,16.037890625000045],[105.1487304687501,16.09355468749999],[105.04716796874999,16.16025390625009],[104.81933593749994,16.466064453125057],[104.75058593750015,16.647558593750034],[104.74355468750014,16.884375],[104.75898437500013,17.0771484375],[104.81601562499998,17.30029296875],[104.73964843750008,17.461669921875],[104.428125,17.698974609375057],[104.32265625000002,17.815820312500023],[104.19619140625002,17.988378906250034],[104.04873046875002,18.216699218749966],[103.94960937500008,18.318994140625023],[103.89882812500002,18.295312500000023],[103.79228515624999,18.31650390625009],[103.62968750000005,18.382568359375057],[103.48798828124995,18.41816406250001],[103.36699218750005,18.42333984375],[103.28828124999995,18.408398437499955],[103.25175781249999,18.373486328125125],[103.24892578125014,18.338964843750034],[103.27958984374999,18.304980468750045],[103.26318359375,18.278466796875136],[103.19970703125006,18.25947265625001],[103.14853515625009,18.221728515624932],[103.09121093750014,18.13823242187499],[103.05136718750003,18.02851562500001],[102.80742187500005,17.945556640625],[102.71757812500005,17.892236328125136],[102.67519531250014,17.851757812500068],[102.68007812500008,17.824121093750136],[102.66064453125,17.8179687499999],[102.61679687500015,17.833349609375034],[102.59824218750009,17.926757812500057],[102.55253906249999,17.965087890625057],[102.4587890625001,17.984619140624943],[102.35185546874999,18.045947265625045],[102.14824218750005,18.203857421875057],[102.10146484375014,18.21064453125001],[102.03457031250002,18.169824218750023],[101.94746093750001,18.081494140624955],[101.87548828125011,18.046435546874932],[101.81865234375005,18.064648437500125],[101.77480468750002,18.033398437500125],[101.6875,17.889404296875114],[101.56367187500001,17.820507812500125],[101.55507812500002,17.812353515625034],[101.41367187500015,17.71875],[101.16748046875011,17.4990234375],[101.10517578125001,17.479541015625102],[100.9084960937501,17.583886718750023],[101.14394531250008,18.14262695312499],[101.1375,18.286865234375057],[101.0505859375001,18.407031250000045],[101.04697265625003,18.441992187500034],[101.28632812499995,18.977148437500034],[101.19755859374999,19.327929687500045],[101.22080078125015,19.486621093750045],[101.21191406250011,19.548339843750057],[100.51357421875008,19.553466796875],[100.39765625000013,19.756103515625057],[100.51953125000006,20.177929687500068],[100.31796875000003,20.385888671875136],[100.2180664062501,20.339599609375114],[100.13974609375015,20.245410156250102],[100.11494140625007,20.25766601562492],[100.12246093750002,20.316650390625057],[100.12968750000005,20.372216796875023],[100.1838867187501,20.589111328124943],[100.2493164062501,20.730273437499932],[100.32607421875008,20.795703124999932],[100.40742187499995,20.823242187500057],[100.56513671875013,20.82509765625008],[100.62294921875002,20.85957031250001],[100.61767578125,20.87924804687509],[100.54931640625011,20.884228515625068],[100.5222656250001,20.921923828125102],[100.53613281250006,20.992382812500068],[100.703125,21.25136718750008],[101.0803710937501,21.46865234375008],[101.13886718750013,21.567480468749977],[101.19667968750002,21.522070312499977],[101.17539062500009,21.407519531250102],[101.21992187500013,21.342431640625136],[101.21181640625008,21.278222656250023],[101.22441406249999,21.22373046874992],[101.24785156249993,21.197314453125045],[101.28144531250007,21.184130859375045],[101.44355468750001,21.230810546874977],[101.54238281250008,21.234277343750136],[101.70478515625013,21.150146484375057],[101.728125,21.15639648437508],[101.78349609374999,21.204150390625045],[101.8005859375001,21.212597656249955],[101.7229492187501,21.314941406250057],[101.74726562500007,21.60576171874999],[101.7439453125001,21.77797851562508],[101.73652343750001,21.826513671874977],[101.52451171874998,22.253662109375],[101.56787109375011,22.2763671875],[101.6199218750001,22.327441406250102],[101.67148437500009,22.462304687500023],[101.70751953125,22.486572265625],[101.73876953125011,22.495263671874966],[101.75996093750001,22.490332031250034],[101.841796875,22.388476562500102],[102.02441406250006,22.439208984375114],[102.09150390625007,22.412255859375136],[102.12744140625011,22.37919921874999]]]},"properties":{"name":"Lao PDR","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[35.869140625,33.43173828125],[35.411230468750006,33.07568359375],[35.10859375000001,33.08369140625],[35.64785156250002,34.2482421875],[35.97626953125001,34.629199218749996],[36.383886718750006,34.65791015625],[36.32988281250002,34.499609375],[36.50439453125,34.432373046875],[36.5849609375,34.221240234374996],[36.27783203125,33.92529296875],[36.36503906250002,33.83935546875],[35.98613281250002,33.75263671875],[36.03447265625002,33.58505859375],[35.869140625,33.43173828125]]]},"properties":{"name":"Lebanon","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-8.486425781249977,7.558496093749994],[-8.408740234374989,7.411816406249997],[-8.324511718749989,6.920019531249991],[-8.587890625,6.490527343749989],[-8.287109375,6.319042968749997],[-7.981591796874994,6.2861328125],[-7.888623046874983,6.23486328125],[-7.800927734374994,6.038916015624991],[-7.730371093749994,5.919042968749991],[-7.636132812499994,5.90771484375],[-7.454394531249989,5.84130859375],[-7.39990234375,5.550585937499989],[-7.585058593749977,4.916748046875],[-7.574658203124983,4.572314453124989],[-7.544970703124989,4.351318359375],[-8.259033203125,4.589990234374994],[-9.132177734374977,5.054638671874997],[-10.2763671875,6.07763671875],[-11.291601562499977,6.688232421875],[-11.507519531249983,6.906542968749989],[-11.267675781249977,7.232617187499997],[-10.878076171874994,7.538232421874994],[-10.6474609375,7.759375],[-10.570849609374989,8.071142578124991],[-10.516748046874994,8.125292968749989],[-10.359814453124983,8.187939453124997],[-10.283203125,8.485156249999989],[-10.233056640624994,8.488818359374989],[-10.147412109374983,8.519726562499997],[-10.064355468749994,8.429882812499997],[-9.781982421875,8.537695312499991],[-9.518261718749983,8.34609375],[-9.369140625,7.703808593749997],[-9.463818359374983,7.415869140624991],[-9.11757812499999,7.215917968749991],[-8.8896484375,7.2626953125],[-8.659765624999977,7.688378906249994],[-8.486425781249977,7.558496093749994]]]},"properties":{"name":"Liberia","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[25.150488281250006,31.654980468749997],[24.85273437500001,31.334814453125],[24.96142578125,30.678515625],[24.703222656250006,30.201074218749994],[24.980273437500017,29.181884765625],[24.980273437500017,25.5888671875],[24.980273437500017,21.995849609375],[24.9794921875,20.002587890624994],[23.980273437500017,19.99594726562499],[23.980273437500017,19.496630859375003],[20.14765625000001,21.38925781249999],[15.984082031250011,23.445214843749994],[14.97900390625,22.99619140624999],[14.215527343750011,22.619677734375003],[13.48125,23.18017578125],[11.967871093750006,23.517871093750003],[11.507617187500017,24.314355468749994],[10.686132812500006,24.55136718749999],[10.395898437500023,24.485595703125],[10.255859375,24.591015625],[10.000683593750011,25.332080078125003],[9.4482421875,26.067138671875],[9.491406250000011,26.333740234375],[9.883203125000023,26.630810546874997],[9.74755859375,27.330859375],[9.916015625,27.785693359374996],[9.805273437500006,29.176953125],[9.310253906250011,30.115234375],[9.51875,30.229394531249994],[9.89501953125,30.3873046875],[9.932519531250023,30.425341796874996],[10.059765625000011,30.580078125],[10.21640625,30.783203125],[10.114941406250011,31.463769531249994],[10.274609375000011,31.684960937499994],[10.475781250000011,31.736035156249997],[10.60888671875,31.929541015625],[10.826367187500011,32.0806640625],[11.005175781250017,32.172705078125],[11.168261718750017,32.256738281249994],[11.358007812500006,32.34521484375],[11.504980468750006,32.413671875],[11.535937500000017,32.47333984375],[11.533789062500006,32.524951171874996],[11.453906250000017,32.642578125],[11.453906250000017,32.781689453125],[11.459179687500011,32.897363281249994],[11.467187500000023,32.965722656249994],[11.504589843750011,33.181933593749996],[11.657128906250023,33.118896484375],[11.8134765625,33.093701171875],[12.279882812500006,32.858544921874994],[12.753515625,32.801074218749996],[13.283496093750017,32.9146484375],[15.176562500000017,32.391162109374996],[15.705957031250023,31.426416015624994],[17.830468750000023,30.927587890625],[18.669824218750023,30.415673828124994],[19.12373046875001,30.26611328125],[19.713281250000023,30.48837890625],[20.11152343750001,30.963720703125],[19.926367187500006,31.817529296874994],[20.121484375000023,32.21875],[20.62109375,32.58017578125],[21.63593750000001,32.937304687499996],[22.187402343750023,32.918261718749996],[23.090625,32.61875],[23.10625,32.331445312499994],[23.28632812500001,32.213818359375],[24.129687500000017,32.009228515625],[24.878515625,31.984277343749994],[25.150488281250006,31.654980468749997]]]},"properties":{"name":"Libya","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-60.89521484375,13.821972656249997],[-60.951416015625,13.717578125],[-61.073144531249994,13.865576171874991],[-60.908105468749994,14.09335937499999],[-60.89521484375,13.821972656249997]]]},"properties":{"name":"Saint Lucia","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[79.87480468750002,9.050732421875026],[79.90371093750005,8.975],[79.74765625000006,9.104589843749991],[79.87480468750002,9.050732421875026]]],[[[79.98232421875,9.812695312500011],[80.25283203125005,9.796337890625054],[80.71113281250004,9.366357421875023],[81.226953125,8.50551757812498],[81.37285156250002,8.431445312499989],[81.42216796875007,8.147851562500023],[81.87412109375012,7.288330078124986],[81.86142578125012,6.901269531249994],[81.63740234375004,6.425146484374991],[80.72412109375003,5.97905273437496],[80.26738281250007,6.009765625],[80.09531250000012,6.153173828125006],[79.859375,6.829296874999983],[79.71298828125012,8.18232421875004],[79.74980468750007,8.294238281250003],[79.78349609375007,8.018457031250051],[79.92890625000004,8.899218749999974],[80.09960937499997,9.209960937500043],[80.08632812500005,9.577832031250026],[80.42832031250006,9.480957031250014],[80.04580078125005,9.649902343749972],[79.98232421875,9.812695312500011]]]]},"properties":{"name":"Sri Lanka","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[28.646875,-30.1265625],[28.39208984375,-30.147558593750006],[28.128710937500017,-30.52509765625001],[28.05683593750001,-30.63105468750001],[27.753125,-30.6],[27.364062500000017,-30.27919921875001],[27.19355468750001,-29.94130859375001],[27.056933593750017,-29.625585937500006],[27.29453125,-29.519335937500003],[27.73554687500001,-28.940039062500006],[27.959863281250023,-28.873339843750003],[28.084375,-28.77998046875001],[28.23261718750001,-28.701269531250006],[28.471875,-28.615820312500006],[28.583398437500023,-28.594140625],[28.625781250000017,-28.58173828125001],[29.301367187500006,-29.08984375],[29.38671875,-29.31972656250001],[29.34882812500001,-29.441992187500006],[29.293554687500006,-29.56689453125],[29.1421875,-29.700976562500003],[29.098046875000023,-29.919042968750006],[28.646875,-30.1265625]]]},"properties":{"name":"Lesotho","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[20.957812500000074,55.27890625000006],[20.89980468750008,55.286669921875045],[21.11484375,55.61650390624999],[20.957812500000074,55.27890625000006]]],[[[25.573046875000017,54.139892578125],[25.497363281250045,54.17524414062501],[25.52734375000003,54.21513671874996],[25.505664062500045,54.26494140624999],[25.46113281250004,54.29277343749996],[25.179492187500017,54.214257812499966],[25.111425781250006,54.15493164062505],[25.04609375000004,54.13305664062503],[24.869531250000023,54.14516601562502],[24.82568359374997,54.118994140625006],[24.78925781250001,53.99824218750001],[24.768164062499977,53.97465820312499],[24.31796875,53.892968749999966],[24.236621093750045,53.91997070312496],[24.19130859375005,53.95043945312503],[23.559082031250057,53.91982421875002],[23.484667968750074,53.939794921875006],[23.453613281250057,54.14345703125002],[23.3701171875,54.20048828124999],[23.282324218750063,54.240332031250034],[23.17031250000008,54.28144531249998],[23.0875,54.299462890624994],[23.042187500000068,54.30419921875],[23.01552734375005,54.34833984375001],[22.976757812500068,54.36635742187505],[22.89394531250008,54.390527343749994],[22.82373046874997,54.39580078124999],[22.766210937499977,54.356787109375034],[22.679882812500068,54.493017578125006],[22.684472656250023,54.56293945312504],[22.82470703125,54.87128906249998],[22.56728515625005,55.05913085937496],[22.072363281250034,55.06367187499998],[21.235742187500023,55.26411132812498],[21.237890625000034,55.455029296874955],[21.06191406250005,55.81342773437498],[21.053808593750006,56.02294921875003],[21.04609375000004,56.07006835937503],[21.31464843750004,56.18813476562502],[21.65351562500004,56.314550781250006],[22.084570312500034,56.40673828125006],[22.875585937500063,56.39643554687501],[22.96826171875003,56.38041992187502],[23.042968750000057,56.324072265625006],[23.119824218749983,56.330664062500006],[23.195898437500034,56.36713867187498],[24.120703125000063,56.26425781249998],[24.90302734375001,56.398193359375],[25.069921875,56.20039062500004],[25.663183593750063,56.104833984375006],[26.593554687500074,55.66752929687502],[26.590820312500057,55.62265625],[26.56660156250001,55.546484375000034],[26.51923828125004,55.448144531249994],[26.469531250000045,55.371923828125006],[26.457617187500006,55.342480468749955],[26.49531250000004,55.31801757812502],[26.68125,55.30644531249999],[26.76015625000008,55.29335937499999],[26.775683593750045,55.27309570312502],[26.601171875000034,55.130175781250045],[26.291796875000074,55.13959960937501],[26.250781250000045,55.12451171875006],[26.175195312500023,55.003271484375034],[26.092968750000068,54.96230468750005],[25.964453124999977,54.947167968749966],[25.85927734375005,54.91928710937498],[25.722460937500074,54.71787109374998],[25.731640625000068,54.59038085937502],[25.72480468750001,54.564257812500045],[25.68515625,54.53579101562502],[25.62031250000004,54.46040039062501],[25.56757812500004,54.377050781250006],[25.54736328125,54.33183593750002],[25.55751953125005,54.310693359374994],[25.702539062499994,54.29296875],[25.765234374999977,54.179785156250034],[25.573046875000017,54.139892578125]]]]},"properties":{"name":"Lithuania","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[6.4873046875,49.798486328124994],[6.344335937500006,49.452734375],[6.181054687500023,49.498925781249994],[6.119921875000017,49.485205078125],[6.074121093750023,49.454638671874996],[6.011425781250011,49.445458984374994],[5.95947265625,49.454638671874996],[5.928906250000011,49.4775390625],[5.9013671875,49.48974609375],[5.823437500000011,49.505078125],[5.789746093750011,49.53828125],[5.776710379464286,49.639953962053575],[5.744042968750023,49.91962890625],[5.7880859375,49.961230468749996],[5.8173828125,50.0126953125],[5.866894531250011,50.0828125],[5.976269531250011,50.1671875],[6.089062500000011,50.154589843749996],[6.110058593750011,50.123779296875],[6.116503906250017,50.120996093749994],[6.109765625000023,50.034375],[6.13818359375,49.97431640625],[6.204882812500017,49.91513671875],[6.272327008928583,49.887234933035714],[6.4873046875,49.798486328124994]]]},"properties":{"name":"Luxembourg","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[28.14794921875,56.142919921875],[27.576757812500006,55.798779296875],[27.052539062500017,55.83056640625],[26.593554687500017,55.667529296874996],[25.663183593750006,56.104833984375],[25.069921875,56.200390625],[24.90302734375001,56.398193359375],[24.120703125,56.2642578125],[23.81269531250001,56.329248046875],[23.195898437500006,56.367138671875],[23.11982421875001,56.3306640625],[23.04296875,56.324072265625],[22.875585937500006,56.396435546875],[22.084570312500006,56.40673828125],[21.730566406250006,56.325976562499996],[21.65351562500001,56.31455078125],[21.31464843750001,56.188134765625],[21.04609375000001,56.070068359375],[21.0712890625,56.82373046875],[21.72871093750001,57.57099609375],[22.554589843750023,57.724267578125],[23.28730468750001,57.08974609375],[23.647753906250017,56.971044921875],[24.382617187500017,57.250048828124996],[24.322558593750017,57.87060546875],[24.3625,57.866162109375],[24.458886718750023,57.907861328125],[25.11103515625001,58.063427734375],[25.27265625000001,58.009375],[25.66015625,57.920166015625],[26.29804687500001,57.60107421875],[26.532617187500023,57.531005859375],[26.96601562500001,57.609130859375],[27.187109375,57.538330078125],[27.326562500000023,57.52548828125],[27.4697265625,57.5240234375],[27.538671875,57.42978515625],[27.796875,57.316943359374996],[27.82861328125,57.293310546875],[27.838281250000023,57.247705078125],[27.83027343750001,57.194482421875],[27.639453125000017,56.845654296875],[27.806054687500023,56.86708984375],[27.8486328125,56.85341796875],[27.89208984375,56.741064453125],[28.00751953125001,56.599853515625],[28.103125,56.545703125],[28.11083984375,56.510693359375],[28.169238281250017,56.386865234375],[28.191699218750017,56.315576171875],[28.202050781250023,56.260400390625],[28.14794921875,56.142919921875]]]},"properties":{"name":"Latvia","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[28.2125,45.450439453125],[28.07470703125,45.598974609375],[28.23945312500001,46.6408203125],[28.07177734375,46.978417968749994],[27.614062500000017,47.34052734375],[26.980761718750017,48.155029296875],[26.618945312500017,48.25986328125],[26.640429687500017,48.294140625],[26.847070312500023,48.387158203125],[26.90058593750001,48.371923828125],[27.228515625,48.371435546875],[27.549218750000023,48.477734375],[28.34052734375001,48.144433593749994],[28.42304687500001,48.146875],[29.125390625000023,47.96455078125],[29.134863281250006,47.489697265625],[29.455664062500006,47.292626953124994],[29.57197265625001,46.964013671874994],[29.7197265625,46.88291015625],[29.877832031250023,46.82890625],[29.942480468750006,46.723779296874994],[29.93476562500001,46.625],[29.92431640625,46.538867187499996],[30.13105468750001,46.423095703125],[30.07568359375,46.377832031249994],[29.878027343750006,46.360205078125],[29.837890625,46.350537109375],[29.458789062500017,46.453759765624994],[29.30488281250001,46.466601562499996],[29.22382812500001,46.376953125],[29.20458984375,46.379345703125],[29.20078125,46.50498046875],[29.18623046875001,46.523974609374996],[29.146289062500017,46.526904296874996],[28.958398437500023,46.45849609375],[28.92744140625001,46.424121093749996],[28.930566406250023,46.362255859375],[28.94375,46.288427734375],[29.00625,46.17646484375],[28.971875,46.12763671875],[28.94775390625,46.049951171874994],[28.849511718750023,45.978662109374994],[28.73876953125,45.937158203124994],[28.729296875000017,45.852001953125],[28.667578125,45.793847656249994],[28.562304687500017,45.735791015625],[28.491601562500023,45.665771484375],[28.4990234375,45.517724609374994],[28.310351562500017,45.498583984374996],[28.26484375000001,45.48388671875],[28.2125,45.450439453125]]]},"properties":{"name":"Moldova","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[49.936425781249994,-16.90292968750002],[49.82402343750002,-17.08652343750002],[50.02304687500006,-16.6953125],[49.936425781249994,-16.90292968750002]]],[[[48.3421875,-13.363867187500034],[48.21191406250003,-13.385253906249957],[48.191210937500074,-13.259960937500011],[48.308886718750074,-13.198242187499957],[48.3421875,-13.363867187500034]]],[[[49.53828125000004,-12.432128906250014],[49.9375,-13.072265624999957],[50.23535156249997,-14.732031249999963],[50.482714843750074,-15.385644531249994],[50.20898437499997,-15.960449218750028],[50.02041015625005,-15.801757812500028],[49.89257812500003,-15.457714843750011],[49.664355468750074,-15.521582031249977],[49.83906250000004,-16.486523437499997],[49.76718750000006,-16.815136718749983],[49.44931640625006,-17.240625],[49.477832031250074,-17.89853515624999],[49.362890625,-18.336328125],[47.934472656249994,-22.393945312500023],[47.55800781250005,-23.874609374999963],[47.17734375,-24.787207031249977],[46.72851562499997,-25.14990234374997],[46.15869140624997,-25.230371093750023],[45.5080078125001,-25.56318359374997],[45.2057617187501,-25.57050781250004],[44.0353515625001,-24.995703125],[43.670019531250006,-24.30029296875],[43.722265625,-23.529687500000037],[43.2648437500001,-22.38359375],[43.29052734374997,-21.93251953124998],[43.50185546875005,-21.356445312499957],[43.800195312499994,-21.179199218749986],[44.40468750000005,-19.922070312500026],[44.44882812500006,-19.42871093749997],[44.23876953124997,-19.075195312499986],[44.23310546875004,-18.740625],[44.04003906249997,-18.288476562500023],[43.979394531249994,-17.3916015625],[44.42138671874997,-16.70263671874997],[44.476171875,-16.217285156249957],[44.90917968749997,-16.174511718750026],[45.2228515625001,-15.95048828124996],[45.3421875,-16.03671875000002],[45.598242187500006,-15.992578125],[45.70019531249997,-15.813769531249989],[46.157519531250074,-15.738281249999972],[46.3996093750001,-15.924609375000017],[46.331445312499994,-15.713671875000031],[46.47509765625003,-15.513476562500003],[46.942285156249994,-15.219042968749974],[47.09921875,-15.43417968750002],[47.092578125000074,-15.150097656249969],[47.35195312500005,-14.766113281249986],[47.46474609375005,-14.713281249999966],[47.47832031250002,-15.009375],[47.77402343750006,-14.63671875],[47.964160156250074,-14.672558593750026],[47.773339843749994,-14.369921875],[47.995507812499994,-13.960449218749986],[47.88359375000002,-13.807519531250009],[47.94101562500006,-13.662402343750017],[48.03984375000002,-13.596289062499963],[48.25527343750005,-13.719335937499977],[48.796484375,-13.267480468750023],[48.91943359375003,-12.839062499999969],[48.78632812500004,-12.470898437500011],[48.931738281250006,-12.4390625],[49.20703124999997,-12.079589843749957],[49.53828125000004,-12.432128906250014]]]]},"properties":{"name":"Madagascar","childNum":3}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-91.68369140624998,18.677343750000034],[-91.81611328124995,18.675878906250006],[-91.53671874999998,18.760009765625],[-91.68369140624998,18.677343750000034]]],[[[-86.93964843750001,20.303320312500006],[-86.97797851562498,20.489794921875074],[-86.76328124999995,20.579052734374955],[-86.93964843750001,20.303320312500006]]],[[[-106.50224609374999,21.61083984375003],[-106.60703124999993,21.561474609374983],[-106.63935546874995,21.697851562499977],[-106.50224609374999,21.61083984375003]]],[[[-110.56738281249994,25.003466796875017],[-110.5388671875,24.89155273437504],[-110.69926757812499,25.081445312499994],[-110.56738281249994,25.003466796875017]]],[[[-112.05727539062498,24.545703125000017],[-112.29677734375002,24.789648437500063],[-112.15942382812501,25.28564453125003],[-112.19501953124998,24.841064453125057],[-112.05727539062498,24.545703125000017]]],[[[-111.10029296874998,26.020605468750006],[-111.224658203125,25.83588867187504],[-111.18291015625002,26.040625],[-111.10029296874998,26.020605468750006]]],[[[-115.17060546875001,28.06938476562496],[-115.35292968750002,28.103955078124983],[-115.23354492187495,28.36835937500004],[-115.17060546875001,28.06938476562496]]],[[[-112.20307617187503,29.00532226562504],[-112.27841796875,28.769335937500017],[-112.51406249999997,28.847607421874955],[-112.42353515625,29.203662109375017],[-112.28505859374994,29.240429687499955],[-112.20307617187503,29.00532226562504]]],[[[-113.15561523437502,29.05224609375],[-113.49633789062497,29.30761718749997],[-113.58720703125002,29.57304687499996],[-113.20214843749999,29.301855468750034],[-113.15561523437502,29.05224609375]]],[[[-97.14624023437494,25.961474609375045],[-97.66767578124995,24.389990234374977],[-97.84248046874995,22.510302734375017],[-97.76328124999998,22.105859374999966],[-97.31450195312496,21.56420898437503],[-97.40917968749997,21.272558593750034],[-97.38344726562497,21.56669921874999],[-97.75380859375002,22.02666015624999],[-97.18632812499996,20.717041015625],[-96.45605468749994,19.869775390624966],[-96.28955078124994,19.34375],[-95.778125,18.805517578125034],[-95.92036132812495,18.81958007812497],[-95.62680664062503,18.690576171874994],[-95.71982421874998,18.768359375000017],[-95.18183593749995,18.700732421875017],[-94.79814453124996,18.51459960937501],[-94.45976562499993,18.166650390624994],[-93.55234375,18.430468750000017],[-92.88476562499997,18.468652343749966],[-92.44101562499998,18.67529296874997],[-91.97377929687502,18.715869140625074],[-91.91357421875,18.52851562500001],[-91.53398437499993,18.45654296875],[-91.27524414062498,18.62446289062501],[-91.34306640624996,18.900585937499955],[-91.43666992187502,18.889794921874966],[-90.73925781249994,19.352246093749955],[-90.69316406249996,19.729882812499966],[-90.49169921874997,19.94677734375003],[-90.353125,21.009423828124966],[-89.81977539062495,21.274609374999983],[-88.46669921874997,21.569384765625017],[-88.0068359375,21.604052734375045],[-87.25087890625,21.44697265625004],[-87.18828124999993,21.546435546875045],[-87.36850585937498,21.57373046875],[-87.034765625,21.592236328124955],[-86.824072265625,21.421679687500017],[-86.77177734374999,21.150537109375023],[-86.92622070312493,20.786474609375034],[-87.42138671875,20.23139648437501],[-87.44174804687498,19.861523437499983],[-87.68769531249998,19.63710937499999],[-87.6453125,19.55390625000001],[-87.42475585937498,19.583349609375063],[-87.65869140625003,19.352343750000074],[-87.65576171874997,19.25786132812499],[-87.50107421874998,19.287792968749983],[-87.76181640624998,18.446142578125006],[-87.88198242187497,18.27387695312501],[-88.05644531249996,18.524462890625074],[-88.03173828125,18.838916015625017],[-88.29565429687494,18.47241210937503],[-88.52299804687499,18.445898437500063],[-88.80634765624998,17.965527343749983],[-89.13354492187503,17.970800781249977],[-89.16147460937503,17.81484375],[-90.98916015624997,17.81640624999997],[-90.99296874999993,17.25244140625],[-91.19550781249998,17.254101562499983],[-91.40961914062501,17.255859375],[-90.975830078125,16.867822265624994],[-90.710693359375,16.708105468750034],[-90.65996093749996,16.630908203125045],[-90.634375,16.565136718749955],[-90.63408203125002,16.51074218749997],[-90.57578124999995,16.467822265625017],[-90.47109374999994,16.439550781250034],[-90.41699218750003,16.391015625000023],[-90.41699218750003,16.351318359375],[-90.45014648437493,16.261376953124994],[-90.45986328124997,16.16235351562497],[-90.44716796874994,16.07270507812501],[-90.52197265625,16.07119140625005],[-90.70322265624998,16.07104492187503],[-90.97958984374998,16.07080078124997],[-91.433984375,16.070458984374994],[-91.736572265625,16.070166015625006],[-91.95722656250001,15.703222656250034],[-92.08212890624998,15.495556640625011],[-92.18715820312497,15.320898437499963],[-92.07480468749998,15.074218749999972],[-92.09873046874998,15.026757812499994],[-92.14423828125001,15.001953125],[-92.158544921875,14.963574218749997],[-92.23515625,14.545410156249986],[-93.91606445312493,16.053564453125006],[-94.374169921875,16.284765625000034],[-94.426416015625,16.22626953125001],[-94.00126953124996,16.018945312499966],[-94.66152343750002,16.20190429687503],[-94.58710937499995,16.315820312499966],[-94.79082031249999,16.28715820312499],[-94.85869140624996,16.41972656249999],[-95.02084960937503,16.277636718750017],[-94.79941406249995,16.20966796875001],[-95.134375,16.17695312500001],[-96.21357421874993,15.693066406250011],[-96.80795898437495,15.726416015624977],[-97.18466796874998,15.909277343750006],[-97.75478515624994,15.966845703125017],[-98.52031249999993,16.30483398437505],[-98.76220703125,16.534765624999977],[-99.69067382812499,16.719628906249994],[-100.847802734375,17.20048828124999],[-101.91870117187494,17.959765625000045],[-102.69956054687495,18.062841796875006],[-103.44160156249995,18.32539062500001],[-103.91245117187496,18.828466796875006],[-104.9384765625,19.309375],[-105.482080078125,19.97607421875003],[-105.66943359374997,20.385595703124977],[-105.26015625,20.579052734374955],[-105.32705078124994,20.752978515625045],[-105.51083984374999,20.808740234375023],[-105.23706054687499,21.119189453125045],[-105.20869140624998,21.490820312499977],[-105.43144531249997,21.618261718750006],[-105.64912109375001,21.988085937500045],[-105.64550781249999,22.32690429687497],[-105.79179687500003,22.627490234375017],[-106.93549804687497,23.88125],[-107.76494140625002,24.47192382812497],[-107.52724609375001,24.36005859375001],[-107.51191406249998,24.489160156250023],[-107.95117187499994,24.614892578124966],[-108.28076171874994,25.08154296875],[-108.05146484374995,25.067041015624994],[-108.69638671874998,25.382910156250034],[-108.78725585937502,25.53803710937501],[-109.02880859375003,25.48046875000003],[-108.886572265625,25.733447265625045],[-109.19648437499998,25.59252929687503],[-109.38496093750001,25.727148437500006],[-109.42563476562495,26.032568359375063],[-109.19970703125003,26.30522460937499],[-109.11669921874999,26.25273437499996],[-109.27626953125,26.533886718749955],[-109.48286132812498,26.710351562500023],[-109.75478515624995,26.702929687500017],[-109.94399414062495,27.079345703125057],[-110.37729492187495,27.233300781249966],[-110.59267578124995,27.544335937500023],[-110.52988281249995,27.864208984374983],[-111.12138671875002,27.966992187499983],[-112.16176757812495,29.018896484375034],[-113.05766601562496,30.651025390625023],[-113.04672851562495,31.17924804687499],[-113.62348632812494,31.34589843750001],[-113.75942382812501,31.557763671874994],[-113.94775390625001,31.62934570312501],[-114.14931640624995,31.507373046875045],[-114.93359374999994,31.900732421874977],[-114.78989257812498,31.647119140624994],[-114.88188476562499,31.156396484375023],[-114.55048828124997,30.02226562499999],[-113.75546875,29.367480468750017],[-113.49970703124995,28.92670898437501],[-113.20556640624997,28.798779296874955],[-113.09365234375001,28.511767578125017],[-112.870849609375,28.42421875000005],[-112.73403320312501,27.825976562500017],[-112.32919921874996,27.52343750000003],[-111.86264648437495,26.678515625000017],[-111.6994140625,26.58095703125005],[-111.79526367187499,26.8796875],[-111.56967773437495,26.707617187500006],[-111.29160156249996,25.78979492187497],[-110.68676757812501,24.867675781250057],[-110.65932617187502,24.34145507812505],[-110.36743164062497,24.100488281249994],[-110.30375976562497,24.339453125],[-110.02280273437502,24.17460937499999],[-109.6765625,23.66157226562501],[-109.42084960937495,23.480126953124994],[-109.49570312500002,23.159814453125023],[-110.00625,22.894042968750057],[-110.3626953125,23.60493164062501],[-111.68291015625002,24.555810546875023],[-111.80249023437494,24.542529296875074],[-112.07255859374999,24.84003906250001],[-112.06987304687497,25.572851562500006],[-112.37724609374997,26.21391601562496],[-113.02075195312499,26.58325195312497],[-113.15581054687496,26.94624023437504],[-113.27226562499997,26.79096679687501],[-113.59853515625001,26.721289062500034],[-113.84096679687502,26.966503906249983],[-114.44526367187503,27.218164062499994],[-114.53989257812495,27.431103515624955],[-114.99350585937499,27.736035156249983],[-115.03647460937495,27.84184570312496],[-114.57001953124995,27.78393554687497],[-114.30058593749995,27.87299804687501],[-114.30224609375003,27.775732421875006],[-114.0693359375,27.67568359375005],[-114.15839843750003,27.919677734375],[-114.26586914062499,27.934472656249994],[-114.04848632812502,28.42617187499999],[-114.93730468749999,29.35161132812496],[-115.67382812500003,29.756396484375017],[-116.06215820312501,30.80415039062504],[-116.29628906250001,30.97050781249999],[-116.33344726562494,31.202783203124994],[-116.66215820312495,31.56489257812504],[-116.72207031249998,31.734570312499955],[-116.62080078124995,31.85107421874997],[-116.84799804687496,31.997363281250045],[-117.12827148437495,32.533349609374994],[-114.72475585937495,32.71533203125003],[-114.83593749999994,32.50830078125003],[-111.0419921875,31.32421875000003],[-108.21445312499993,31.329443359375034],[-108.21181640625002,31.779345703125017],[-106.44541015624996,31.768408203125006],[-106.14804687499995,31.450927734375],[-104.97880859374996,30.645947265624955],[-104.50400390624995,29.677685546874955],[-104.110595703125,29.386132812499994],[-103.16831054687498,28.998193359374994],[-102.8919921875,29.216406250000034],[-102.61494140624994,29.75234375],[-102.26894531249998,29.871191406250034],[-101.44038085937503,29.77685546875],[-100.75458984375001,29.182519531249994],[-100.29604492187495,28.32768554687499],[-99.50532226562497,27.54833984375003],[-99.45654296874999,27.05668945312496],[-99.10776367187498,26.446923828124994],[-97.37563476562497,25.871826171875],[-97.14624023437494,25.961474609375045]]]]},"properties":{"name":"Mexico","childNum":10}},{"geometry":{"type":"Polygon","coordinates":[[[22.344042968750017,42.31396484375],[22.836816406250023,41.993603515625],[23.00361328125001,41.73984375],[22.916015625,41.336279296875],[22.78388671875001,41.331982421875],[22.72480468750001,41.178515625],[22.603613281250006,41.140185546874996],[22.493554687500023,41.118505859375],[22.184472656250023,41.158642578125],[21.99335937500001,41.13095703125],[21.77949218750001,40.950439453125],[21.627539062500006,40.896337890625],[21.57578125,40.868945312499996],[20.964257812500023,40.849902343749996],[20.709277343750017,40.928369140624994],[20.48896484375001,41.272607421874994],[20.566210937500017,41.873681640624994],[20.725,41.87353515625],[20.778125,42.071044921875],[21.05976562500001,42.171289062499994],[21.28662109375,42.100390625],[21.389550781250023,42.21982421875],[21.560839843750017,42.24765625],[21.5625,42.247509765625],[21.81464843750001,42.303125],[22.344042968750017,42.31396484375]]]},"properties":{"name":"Macedonia","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[4.227636718750006,19.142773437499997],[4.234667968750017,16.996386718750003],[4.121289062500011,16.357714843750003],[3.842968750000011,15.701708984375003],[3.5205078125,15.483105468749997],[3.504296875000023,15.356347656249994],[3.06015625,15.427197265624997],[3.001074218750006,15.340966796874994],[1.300195312500023,15.272265625],[0.947460937500011,14.982128906249997],[0.217480468750011,14.911474609374991],[-0.235888671874989,15.059423828124991],[-0.760449218749983,15.047753906249994],[-1.049560546875,14.81953125],[-1.97304687499999,14.45654296875],[-2.113232421874983,14.16845703125],[-2.586718749999989,14.227587890625003],[-2.873925781249994,13.950732421875003],[-2.950830078124994,13.6484375],[-3.248632812499977,13.658349609374994],[-3.3017578125,13.28076171875],[-3.527636718749989,13.182714843749991],[-3.947314453124989,13.402197265624991],[-4.151025390624994,13.306201171875003],[-4.328710937499977,13.119042968749994],[-4.227099609374989,12.793701171875],[-4.480615234374994,12.672216796874991],[-4.4287109375,12.337597656249997],[-4.699316406249977,12.076171875],[-5.288134765624989,11.827929687499989],[-5.250244140625,11.375781249999989],[-5.490478515625,11.042382812499994],[-5.523535156249977,10.426025390625],[-5.556591796874983,10.43994140625],[-5.694287109374983,10.43320312499999],[-5.843847656249977,10.389550781249994],[-5.896191406249983,10.354736328125],[-5.907568359374977,10.307226562499991],[-6.034570312499994,10.19482421875],[-6.1171875,10.201904296875],[-6.238378906249977,10.261621093749994],[-6.241308593749977,10.279199218749994],[-6.192626953125,10.369433593749989],[-6.190673828125,10.400292968749994],[-6.250244140625,10.717919921874994],[-6.482617187499983,10.561230468749997],[-6.564599609374994,10.58642578125],[-6.654150390624977,10.656445312499997],[-6.676367187499977,10.6337890625],[-6.686132812499977,10.578027343749994],[-6.691992187499977,10.512011718749989],[-6.669335937499994,10.3921875],[-6.693261718749994,10.349462890624991],[-6.950341796874994,10.342333984374989],[-7.01708984375,10.143261718749997],[-7.385058593749989,10.340136718749989],[-7.6611328125,10.427441406249997],[-7.990625,10.1625],[-8.007275390624983,10.321875],[-8.266650390624989,10.485986328124994],[-8.33740234375,10.990625],[-8.666699218749983,11.009472656249997],[-8.398535156249977,11.366552734374991],[-8.822021484375,11.673242187499994],[-8.818310546874983,11.922509765624994],[-9.043066406249977,12.40234375],[-9.395361328124977,12.464648437499989],[-9.358105468749983,12.255419921874989],[-9.754003906249977,12.029931640624994],[-10.274853515624983,12.212646484375],[-10.709228515625,11.898730468749989],[-10.933203124999977,12.205175781249991],[-11.30517578125,12.015429687499989],[-11.502197265625,12.198632812499994],[-11.389404296875,12.404394531249991],[-11.390380859375,12.941992187499991],[-11.634960937499983,13.369873046875],[-11.831689453124994,13.315820312499994],[-12.05419921875,13.633056640625],[-11.960888671874983,13.875292968750003],[-12.019189453124994,14.206494140624997],[-12.228417968749994,14.45859375],[-12.280615234374977,14.809033203124997],[-12.104687499999983,14.745361328125],[-12.08154296875,14.766357421875],[-12.021582031249977,14.804931640625],[-11.76015625,15.425537109375],[-11.675878906249977,15.512060546874991],[-11.502685546875,15.636816406249991],[-11.455224609374994,15.62539062499999],[-10.9482421875,15.151123046875],[-10.696582031249989,15.42265625],[-9.94140625,15.373779296875],[-9.446923828124994,15.458203125],[-9.447705078124983,15.574853515624994],[-9.426562499999989,15.623046875],[-9.3505859375,15.677392578124994],[-9.33544921875,15.525683593750003],[-9.293701171875,15.502832031249994],[-5.5125,15.496289062499997],[-5.359912109374989,16.282861328124994],[-5.509619140624977,16.442041015624994],[-5.628662109375,16.568652343750003],[-5.65625,16.8095703125],[-5.684765624999983,17.058251953124994],[-5.713183593749989,17.306884765625],[-5.74169921875,17.555566406249994],[-5.827099609374983,18.3015625],[-6.026416015624989,20.0421875],[-6.396582031249977,23.274804687499994],[-6.482031249999977,24.020800781250003],[-6.538964843749994,24.51816406249999],[-6.5673828125,24.766796875],[-6.594091796874977,24.99462890625],[-6.287207031249977,24.994824218749997],[-5.959814453124977,24.99497070312499],[-5.640771484374994,24.995166015625003],[-4.822607421874977,24.99560546875],[-1.947900390624994,23.124804687500003],[1.1455078125,21.102246093749997],[1.165722656250011,20.817431640625003],[1.610644531250017,20.555566406249994],[1.685449218750023,20.378369140624997],[3.130273437500023,19.85019531249999],[3.255859375,19.4109375],[3.119726562500006,19.103173828124994],[3.3564453125,18.986621093750003],[4.227636718750006,19.142773437499997]]]},"properties":{"name":"Mali","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[14.566210937499989,35.85273437499998],[14.436425781250023,35.82167968750005],[14.351269531250011,35.978417968749994],[14.566210937499989,35.85273437499998]]]},"properties":{"name":"Malta","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[98.18261718749997,9.933447265625006],[98.11806640625,9.877880859375054],[98.2916992187501,10.051318359375031],[98.18261718749997,9.933447265625006]]],[[[98.20976562500002,10.952734375],[98.27148437499997,10.73989257812498],[98.08046875000005,10.886621093750037],[98.20976562500002,10.952734375]]],[[[98.55380859375012,11.744873046875],[98.52841796875012,11.538671875],[98.43476562500004,11.567089843750026],[98.37646484374997,11.79150390625],[98.55380859375012,11.744873046875]]],[[[98.516015625,11.905029296875028],[98.46621093750005,12.08427734374996],[98.60957031250004,11.956640624999977],[98.516015625,11.905029296875028]]],[[[98.06611328125004,12.389794921875023],[98.00234375000005,12.279003906250011],[97.93867187500004,12.34609375],[98.06611328125004,12.389794921875023]]],[[[98.41396484375005,12.597949218749974],[98.45947265625003,12.473730468749991],[98.3138671875,12.335986328124989],[98.31210937500006,12.678173828124983],[98.41396484375005,12.597949218749974]]],[[[98.31542968749997,13.099072265625026],[98.30917968750012,12.934716796875023],[98.26533203125004,13.202246093749991],[98.31542968749997,13.099072265625026]]],[[[94.80488281250004,15.8193359375],[94.73349609375006,15.823046875000045],[94.82802734375005,15.933007812499966],[94.80488281250004,15.8193359375]]],[[[94.47675781250004,15.945947265625023],[94.41191406250007,15.848388671875057],[94.3878906250001,15.994140624999972],[94.60126953125004,16.205517578124983],[94.47675781250004,15.945947265625023]]],[[[97.575,16.253222656250017],[97.48037109375,16.305712890625045],[97.54199218749997,16.505078124999983],[97.575,16.253222656250017]]],[[[93.6908203125,18.68427734375004],[93.4875,18.867529296875063],[93.74472656250006,18.865527343750017],[93.6908203125,18.68427734375004]]],[[[93.71484374999997,19.558251953124994],[93.94570312500005,19.428613281249966],[93.90195312500012,19.33203125],[93.75585937500003,19.325683593750057],[93.64404296874997,19.49506835937501],[93.71484374999997,19.558251953124994]]],[[[93.49179687500012,19.892578125],[93.51328125000006,19.754785156249994],[93.41289062500002,19.950341796875023],[93.49179687500012,19.892578125]]],[[[93.01015625000005,19.923925781249977],[93.02324218750007,19.82885742187497],[92.91464843750006,20.086474609375045],[93.01015625000005,19.923925781249977]]],[[[101.1388671875001,21.567480468749977],[101.08037109375007,21.468652343749994],[100.703125,21.251367187499966],[100.613671875,21.059326171875],[100.56660156250004,21.038183593750063],[100.53613281250003,20.992382812499955],[100.52226562500007,20.92192382812499],[100.54931640624997,20.884228515624955],[100.61767578125003,20.879248046875006],[100.62294921875005,20.859570312499983],[100.5651367187501,20.825097656249994],[100.4074218750001,20.823242187500057],[100.32607421875005,20.795703125000045],[100.24931640625002,20.730273437500045],[100.18388671875002,20.589111328125057],[100.12968750000002,20.372216796874994],[100.12246093750005,20.316650390625057],[100.0036132812501,20.37958984375001],[99.9542968750001,20.415429687500023],[99.8903320312501,20.424414062499977],[99.72011718750005,20.32543945312497],[99.45888671875005,20.363037109375],[99.48593750000006,20.14985351562501],[99.07421875000003,20.09936523437503],[98.9166992187501,19.77290039062504],[98.37128906250004,19.68916015625004],[98.01503906250005,19.74951171874997],[97.816796875,19.459960937500057],[97.74589843750002,18.58818359374999],[97.37392578125,18.51796875],[97.63222656250005,18.290332031250074],[97.7064453125,17.79711914062503],[98.4388671875,16.975683593750034],[98.66074218750006,16.330419921875006],[98.83544921875003,16.417578125],[98.88828125000006,16.351904296875034],[98.81796875000012,16.180810546874994],[98.59238281250006,16.05068359375005],[98.55693359375007,15.367675781249986],[98.19101562500012,15.204101562499972],[98.20214843749997,14.97592773437502],[98.57001953125004,14.359912109375031],[99.13681640625006,13.716699218749994],[99.12392578125,13.030761718750043],[99.40507812500002,12.547900390625003],[99.61474609374997,11.781201171875026],[99.1901367187501,11.105273437499989],[98.7572265625,10.660937499999974],[98.70253906250005,10.19038085937504],[98.56259765625006,10.034960937499989],[98.46494140625006,10.675830078124989],[98.67558593750007,10.986914062500034],[98.74140625000004,11.591699218749966],[98.87597656250003,11.719726562500028],[98.63632812500006,11.738378906250006],[98.69628906250003,12.225244140624994],[98.6002929687501,12.2453125],[98.67871093749997,12.348486328124963],[98.57597656250002,13.161914062500031],[98.20039062500004,13.980175781250026],[98.14951171875012,13.647607421875037],[98.11064453125007,13.712890625000014],[98.10019531250006,14.161523437500023],[97.90976562500012,14.652685546874991],[98.01875,14.652587890625057],[97.81230468750007,14.858935546874989],[97.7103515625,15.875537109375074],[97.58427734375007,16.019580078125017],[97.72597656250005,16.56855468750004],[97.37587890625005,16.52294921874997],[97.20019531249997,17.095410156249983],[96.85146484375005,17.401025390624994],[96.90859375000005,17.03095703125001],[96.76542968750002,16.710351562499966],[96.43115234374997,16.504931640625045],[96.18906250000012,16.768310546875057],[96.32431640625006,16.444433593750063],[95.76328125000006,16.169042968750006],[95.38955078125005,15.722753906250034],[95.30146484375004,15.756152343749989],[95.34677734375012,16.09760742187501],[95.17695312500004,15.825683593750028],[94.9425781250001,15.818261718750023],[94.89316406250006,16.182812499999955],[94.66152343750005,15.904394531250006],[94.70332031250004,16.511914062499955],[94.4416015625001,16.094384765624966],[94.22382812500004,16.016455078125006],[94.58896484375006,17.5693359375],[94.17070312500007,18.73242187499997],[94.24570312500006,18.741162109374983],[94.07001953125004,18.893408203125006],[94.04492187500003,19.287402343750074],[93.92919921874997,18.89965820312503],[93.70546875000005,19.026904296875017],[93.49306640625005,19.369482421875006],[93.82490234375004,19.238476562499955],[93.99814453125006,19.440869140624983],[93.61171875000005,19.776074218749983],[93.70703125000003,19.912158203125074],[93.25,20.070117187500017],[93.12949218750012,19.858007812500063],[93.00195312499997,20.074853515624994],[93.06679687500005,20.377636718749955],[92.82832031250004,20.177587890625063],[92.89111328124997,20.34033203125],[92.73564453125007,20.56269531250001],[92.72285156250004,20.29560546875004],[92.32412109375,20.791845703125063],[92.17958984375005,21.293115234375023],[92.33056640624997,21.439794921874977],[92.63164062500002,21.306201171875045],[92.5934570312501,21.46733398437499],[92.58281250000002,21.940332031249994],[92.57490234375004,21.978076171875045],[92.68896484374997,22.130957031250006],[92.72099609375002,22.132421875000063],[92.77138671875,22.104785156250017],[92.9645507812501,22.003759765625034],[93.07060546875002,22.20942382812501],[93.16201171875,22.360205078125006],[93.07871093750006,22.71821289062501],[93.20390625000002,23.03701171875005],[93.34941406250007,23.08496093750003],[93.36601562500007,23.132519531249955],[93.32626953125006,24.064208984375057],[93.45214843750003,23.987402343750034],[93.68339843750007,24.00654296875004],[94.07480468750006,23.8720703125],[94.29306640625012,24.321875],[94.37724609375002,24.473730468750006],[94.49316406250003,24.637646484374983],[94.70371093750012,25.097851562499955],[94.55302734375007,25.215722656249994],[94.66777343750007,25.458886718749966],[94.99199218750002,25.77045898437504],[95.01523437500006,25.912939453125006],[95.0929687500001,25.98730468749997],[95.13242187500006,26.041259765625057],[95.12929687500005,26.070410156250034],[95.10839843749997,26.091406250000034],[95.06894531250006,26.19111328125001],[95.0597656250001,26.473974609375006],[95.20146484375007,26.641406250000017],[96.19082031250005,27.26127929687499],[96.79785156249997,27.29619140624999],[96.95341796875002,27.13330078125003],[97.10205078125003,27.11542968750004],[97.10371093750004,27.16333007812503],[96.90195312500012,27.439599609374994],[96.88359375000002,27.514843749999955],[96.96279296875,27.698291015625017],[97.04970703125005,27.760009765625],[97.34355468750002,27.982324218749994],[97.30273437499997,28.08598632812496],[97.3224609375001,28.21796875000004],[97.35644531249997,28.254492187500006],[97.43144531250002,28.353906250000023],[97.53789062500002,28.510205078124983],[97.59921875000006,28.51704101562504],[98.06162109375012,28.185888671874977],[98.29882812499997,27.550097656250045],[98.4525390625,27.6572265625],[98.65117187500007,27.572460937499983],[98.7384765625001,26.785742187500006],[98.68554687499997,26.189355468750023],[98.56406250000006,26.072412109374994],[98.65625,25.86357421874999],[98.33378906250007,25.586767578125006],[98.14287109375007,25.571093750000017],[98.01074218749997,25.292529296875017],[97.8195312500001,25.251855468749994],[97.73789062500006,24.869873046875057],[97.58330078125002,24.77480468750005],[97.53144531250004,24.49169921875003],[97.7082031250001,24.228759765625],[97.56455078125012,23.911035156250023],[98.2125,24.110644531250017],[98.83505859375006,24.121191406250034],[98.67675781250003,23.905078125000045],[98.8322265625001,23.624365234374977],[98.86376953125003,23.191259765625034],[99.41806640625006,23.069238281250023],[99.50712890625002,22.959130859374994],[99.19296875000006,22.12597656249997],[99.9176757812501,22.02802734375001],[99.94072265625007,21.75874023437504],[100.14765625000004,21.480517578125017],[100.60458984375012,21.471777343750006],[101.07978515625004,21.75585937499997],[101.1388671875001,21.567480468749977]]]]},"properties":{"name":"Myanmar","childNum":15}},{"geometry":{"type":"Polygon","coordinates":[[[19.21875,43.449951171875],[19.670996093750006,43.163964843749994],[20.344335937500006,42.827929687499996],[20.054296875,42.760058593749996],[20.06396484375,42.54726562499999],[19.78828125000001,42.476171875],[19.65449218750001,42.628564453124994],[19.280664062500023,42.17255859375],[19.342382812500006,41.869091796875],[18.436328125000017,42.559716796874994],[18.5458984375,42.6416015625],[18.46601562500001,42.777246093749994],[18.44384765625,42.96845703125],[18.46015625000001,42.997900390625],[18.48847656250001,43.012158203125],[18.623632812500006,43.027685546875],[18.621875,43.124609375],[18.674218750000023,43.230810546875],[18.74921875000001,43.283544921875],[18.85107421875,43.346337890624994],[18.934667968750006,43.339453125],[18.97871093750001,43.285400390625],[19.026660156250017,43.292431640625],[19.03671875,43.357324218749994],[18.940234375000017,43.496728515624994],[18.95068359375,43.526660156249996],[18.97421875,43.542333984375],[19.0283203125,43.532519531249996],[19.080078125,43.517724609374994],[19.11279296875,43.52773437499999],[19.164355468750017,43.535449218749996],[19.1943359375,43.53330078125],[19.21875,43.449951171875]]]},"properties":{"name":"Montenegro","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[111.878125,43.68017578125],[111.00722656250002,43.34140625],[110.400390625,42.773681640625],[109.44316406249999,42.455957031249994],[109.33984375,42.438378906249994],[108.68730468749999,42.41611328125],[108.17119140624999,42.447314453124996],[106.77001953125,42.288720703124994],[105.86757812500002,41.993994140625],[105.31435546875002,41.770898437499994],[105.19707031249999,41.738037109375],[105.11542968750001,41.66328125],[105.05058593749999,41.61591796875],[104.98203125000003,41.595507812499996],[104.49824218750001,41.65869140625],[104.49824218750001,41.877001953124996],[104.30517578125,41.846142578125],[103.99726562500001,41.79697265625],[103.71113281250001,41.751318359375],[103.07285156250003,42.00595703125],[102.5751953125,42.092089843749996],[102.15664062500002,42.158105468749994],[101.97294921874999,42.215869140624996],[101.65996093749999,42.500048828124996],[101.5791015625,42.52353515625],[101.49531250000001,42.53876953125],[101.09199218750001,42.551318359374996],[100.51904296875,42.616796875],[100.08632812500002,42.670751953125],[99.98378906250002,42.67734375],[99.46787109375003,42.568212890625],[97.20566406250003,42.789794921875],[96.38544921875001,42.720361328124994],[95.85957031250001,43.2759765625],[95.52558593750001,43.953955078125],[95.32558593750002,44.039355468749996],[95.35029296875001,44.278076171875],[94.71201171875003,44.350830078125],[93.51621093750003,44.944482421874994],[92.78789062499999,45.0357421875],[92.57890624999999,45.010986328125],[92.423828125,45.008935546874994],[92.17265624999999,45.03525390625],[92.02978515625,45.068505859374994],[91.584375,45.076513671875],[91.05,45.217431640624994],[90.87724609374999,45.19609375],[90.66181640625001,45.525244140625],[91.00175781249999,46.035791015624994],[90.99677734375001,46.10498046875],[90.94755859374999,46.177294921874996],[90.91152343750002,46.270654296874994],[90.98574218750002,46.7490234375],[90.91054687500002,46.883251953125],[90.86992187499999,46.954492187499994],[90.79902343750001,46.98515625],[90.71552734375001,47.003857421875],[90.49619140625003,47.28515625],[90.42519531250002,47.5041015625],[90.34746093749999,47.596972656249996],[90.33066406250003,47.655175781249994],[90.31328124999999,47.67617187499999],[90.19101562500003,47.702099609375],[90.10322265625001,47.745410156249996],[90.02792968750003,47.877685546875],[89.95869140625001,47.886328125],[89.91044921874999,47.8443359375],[89.83134765624999,47.823291015624996],[89.778125,47.827001953125],[89.56093750000002,48.003955078124996],[89.47919921875001,48.029052734375],[89.04765624999999,48.0025390625],[88.97109375000002,48.049951171874994],[88.91777343749999,48.089013671874994],[88.83828125000002,48.101708984374994],[88.68183593750001,48.170556640624994],[88.57597656249999,48.220166015625],[88.56679687500002,48.317431640624996],[88.51708984375,48.38447265625],[88.41396484375002,48.40341796875],[88.30996093750002,48.472070312499994],[87.97968750000001,48.555126953125],[88.06005859375,48.707177734374994],[87.83183593749999,48.791650390624994],[87.7431640625,48.881640625],[87.87216796875003,49.000146484374994],[87.81630859375002,49.0802734375],[87.8251953125,49.11630859375],[87.81425781249999,49.1623046875],[87.93476562500001,49.16455078125],[87.98808593749999,49.186914062499994],[88.02851562500001,49.219775390624996],[88.11572265625,49.256298828125],[88.19257812500001,49.451708984374996],[88.63320312500002,49.486132812499996],[88.83164062500003,49.4484375],[88.86386718750003,49.527636718749996],[88.90019531249999,49.539697265624994],[88.94541015625003,49.507666015625],[88.97060546875002,49.483740234375],[89.00839843750003,49.472802734374994],[89.10947265625003,49.501367187499994],[89.17998046874999,49.5322265625],[89.20292968749999,49.595703125],[89.24394531249999,49.62705078125],[89.39560546875003,49.6115234375],[89.475,49.66054687499999],[89.57919921875003,49.69970703125],[89.65410156249999,49.71748046875],[89.64384765624999,49.90302734375],[90.0537109375,50.09375],[90.65507812499999,50.22236328125],[90.71435546875,50.259423828124994],[90.7607421875,50.305957031249996],[91.02158203125003,50.415478515625],[91.23378906250002,50.452392578125],[91.30058593749999,50.46337890625],[91.3408203125,50.470068359375],[91.4150390625,50.468017578125],[91.44648437500001,50.52216796875],[91.80429687500003,50.693603515625],[92.10400390625,50.6919921875],[92.1923828125,50.700585937499994],[92.35478515624999,50.864160156249994],[92.42636718750003,50.803076171875],[92.62666015625001,50.68828125],[92.68134765625001,50.683203125],[92.73867187500002,50.7109375],[92.779296875,50.778662109375],[92.8564453125,50.789111328124996],[92.94130859375002,50.778222656249994],[93.103125,50.60390625],[94.25107421875003,50.556396484375],[94.35468750000001,50.221826171874994],[94.61474609375,50.023730468749996],[94.67548828125001,50.028076171875],[94.71806640624999,50.043261718749996],[94.93027343750003,50.04375],[95.11142578125003,49.935449218749994],[95.52265625000001,49.91123046875],[96.06552734375003,49.99873046875],[96.31503906250003,49.901123046875],[96.98574218750002,49.8828125],[97.20859375000003,49.730810546875],[97.35976562500002,49.741455078125],[97.58935546875,49.911474609375],[98.00390625,50.0142578125],[98.25029296874999,50.30244140625],[98.27949218750001,50.533251953124996],[98.14501953125,50.5685546875],[98.07890624999999,50.603808593749996],[98.02978515625,50.64462890625],[97.82529296875003,50.985253906249994],[98.103125,51.483544921874994],[98.64052734375002,51.801171875],[98.89316406250003,52.11728515625],[99.92167968749999,51.755517578125],[100.03457031250002,51.737109375],[100.23037109375002,51.729833984375],[100.46894531250001,51.72607421875],[100.53623046875003,51.7134765625],[101.38125,51.45263671875],[101.57089843750003,51.4671875],[101.82119140625002,51.421044921874994],[102.11152343750001,51.353466796875],[102.15566406250002,51.313769531249996],[102.16005859375002,51.26083984375],[102.14238281249999,51.216064453125],[102.15195312500003,51.10751953125],[102.19453125000001,51.050683593749994],[102.21503906250001,50.829443359375],[102.31660156250001,50.71845703125],[102.28837890624999,50.585107421874994],[103.30439453125001,50.20029296875],[103.63291015625003,50.138574218749994],[103.72324218750003,50.153857421874996],[103.80263671875002,50.176074218749996],[104.07871093750003,50.154248046875],[105.38359374999999,50.47373046875],[106.21787109375003,50.304589843749994],[106.36845703124999,50.317578125],[106.57441406250001,50.32880859375],[106.71113281250001,50.31259765625],[106.94130859375002,50.196679687499994],[107.04023437500001,50.086474609374996],[107.14306640625,50.033007812499996],[107.23330078125002,49.989404296874994],[107.34707031250002,49.986669921875],[107.63095703125003,49.98310546875],[107.91660156250003,49.947802734374996],[107.96542968750003,49.653515625],[108.40693359375001,49.396386718749994],[108.5224609375,49.34150390625],[108.61367187500002,49.322802734374996],[109.23671875000002,49.334912109375],[109.45371093750003,49.296337890625],[109.52871093750002,49.269873046875],[110.19990234375001,49.17041015625],[110.42783203125003,49.219970703125],[110.70976562499999,49.14296875],[110.82792968749999,49.166162109374994],[111.20419921875003,49.304296875],[111.33662109375001,49.35585937499999],[111.42929687500003,49.342626953125],[112.07968750000003,49.42421875],[112.49492187499999,49.53232421875],[112.69736328125003,49.507275390625],[112.80644531249999,49.523583984374994],[112.91484374999999,49.569238281249994],[113.05556640625002,49.616259765624996],[113.09208984374999,49.692529296874994],[113.16416015625003,49.797167968749996],[113.31904296875001,49.874316406249996],[113.44550781250001,49.9416015625],[113.57421875,50.00703125],[114.29707031250001,50.2744140625],[114.7431640625,50.233691406249996],[115.00332031250002,50.138574218749994],[115.27451171875003,49.948876953124994],[115.36503906249999,49.911767578124994],[115.42919921875,49.896484375],[115.58798828125003,49.886035156249996],[115.7177734375,49.880615234375],[115.79521484374999,49.905908203124994],[115.92597656250001,49.9521484375],[116.13457031249999,50.010791015624996],[116.216796875,50.00927734375],[116.35117187500003,49.978076171874996],[116.55117187500002,49.9203125],[116.68330078125001,49.823779296874996],[115.82050781250001,48.57724609375],[115.79169921875001,48.455712890624994],[115.79658203125001,48.346337890624994],[115.78554687500002,48.2482421875],[115.63945312499999,48.18623046875],[115.52509765625001,48.130859375],[115.61640625000001,47.874804687499996],[115.89824218749999,47.686914062499994],[115.99384765625001,47.71132812499999],[116.07480468750003,47.78955078125],[116.23115234375001,47.858203125],[116.31718749999999,47.85986328125],[116.37822265624999,47.844042968749996],[116.51347656249999,47.83955078125],[116.65195312500003,47.864501953125],[116.76054687499999,47.869775390624994],[116.90117187499999,47.853076171874996],[116.95166015625,47.836572265624994],[117.06972656250002,47.806396484375],[117.28593749999999,47.666357421875],[117.35078125000001,47.652197265625],[117.76835937499999,47.987890625],[118.49843750000002,47.983984375],[118.56777343750002,47.943261718749994],[118.69052734375003,47.822265625],[118.75996093750001,47.757617187499996],[118.88027343750002,47.72509765625],[119.017578125,47.685351562499996],[119.08193359375002,47.654150390625],[119.71113281250001,47.15],[119.89785156250002,46.8578125],[119.8671875,46.672167968749996],[119.74746093750002,46.627197265625],[119.70664062500003,46.606005859374996],[119.62021484375003,46.603955078125],[119.47402343750002,46.62666015625],[119.33183593749999,46.613818359374996],[119.162109375,46.638671875],[118.95712890625003,46.73486328125],[118.84394531250001,46.760205078125],[118.79033203124999,46.7470703125],[118.72294921874999,46.69189453125],[118.64873046874999,46.70166015625],[118.58046875000002,46.69189453125],[118.40439453125003,46.703173828124996],[118.30869140625003,46.717041015625],[118.15683593750003,46.678564453125],[118.0712890625,46.6666015625],[117.7412109375,46.5181640625],[117.546875,46.58828125],[117.43808593750003,46.586230468749996],[117.40556640624999,46.5708984375],[117.39218750000003,46.53759765625],[117.35634765625002,46.436669921874994],[117.35693359375,46.39130859375],[117.33339843750002,46.36201171875],[116.85908203125001,46.387939453125],[116.56259765625003,46.289794921875],[116.21298828125003,45.8869140625],[116.22910156250003,45.845751953124996],[116.240625,45.79599609375],[116.19765625000002,45.73935546875],[115.68105468750002,45.458251953125],[115.16259765625,45.390234375],[114.91923828124999,45.378271484375],[114.73876953125,45.41962890625],[114.56015625000003,45.389990234375],[114.41914062500001,45.202587890625],[114.16738281250002,45.049853515624996],[114.08027343750001,44.971142578125],[113.87705078125003,44.89619140625],[113.65263671874999,44.763476562499996],[113.58701171875003,44.745703125],[113.04941406250003,44.810351562499996],[112.70673828125001,44.883447265624994],[112.59677734375003,44.91767578125],[112.49931640624999,45.0109375],[112.41132812500001,45.058203125],[112.11289062500003,45.062939453125],[112.03261718750002,45.081640625],[111.89804687500003,45.0640625],[111.40224609375002,44.36728515625],[111.93173828125003,43.81494140625],[111.878125,43.68017578125]]]},"properties":{"name":"Mongolia","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[145.75195312499997,15.133154296874991],[145.71318359375007,15.215283203125026],[145.821875,15.265380859375014],[145.75195312499997,15.133154296874991]]]},"properties":{"name":"N. Mariana Is.","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[32.112890625,-26.839453125],[32.10595703125,-26.52001953125],[32.04140625000002,-26.28125],[32.060546875,-26.018359375],[31.9482421875,-25.957617187500006],[31.98583984375,-24.46064453125001],[31.799609375000017,-23.8921875],[31.54560546875001,-23.48232421875001],[31.287890625000017,-22.40205078125001],[31.429492187500017,-22.298828125],[32.429785156250006,-21.29707031250001],[32.353613281250006,-21.136523437500003],[32.49238281250001,-20.659765625],[32.992773437500006,-19.98486328125],[32.77763671875002,-19.388769531250006],[32.84980468750001,-19.10439453125001],[32.69970703125,-18.94091796875],[32.99306640625002,-18.35957031250001],[32.87626953125002,-16.88359375],[32.94804687500002,-16.71230468750001],[31.939843750000023,-16.428808593750006],[31.236230468750023,-16.02363281250001],[30.437792968750017,-15.995312500000011],[30.39609375,-15.64306640625],[30.231835937500023,-14.990332031250006],[33.201757812500006,-14.013378906250011],[33.63642578125001,-14.568164062500003],[34.375,-14.4248046875],[34.50527343750002,-14.59814453125],[34.54082031250002,-15.297265625],[34.24609375,-15.829394531250003],[34.528125,-16.319140625],[34.93339843750002,-16.760351562500006],[35.11210937500002,-16.898535156250006],[35.06464843750001,-17.07861328125],[35.124609375,-17.127246093750003],[35.20136718750001,-17.13105468750001],[35.272558593750006,-17.118457031250003],[35.29042968750002,-17.096972656250003],[35.28115234375002,-16.80781250000001],[35.22978515625002,-16.639257812500006],[35.178320312500006,-16.573339843750006],[35.16718750000001,-16.56025390625001],[35.242773437500006,-16.375390625],[35.358496093750006,-16.160546875],[35.59931640625001,-16.12587890625001],[35.70888671875002,-16.095800781250006],[35.75527343750002,-16.05830078125001],[35.79121093750001,-15.958691406250011],[35.89277343750001,-14.891796875000011],[35.86669921875,-14.86376953125],[35.84716796875,-14.6708984375],[35.6904296875,-14.465527343750011],[35.48847656250001,-14.201074218750009],[35.37578125000002,-14.058691406250006],[35.24746093750002,-13.896875],[35.01386718750001,-13.643457031250009],[34.61152343750001,-13.437890625],[34.54570312500002,-13.21630859375],[34.542578125,-13.108691406250003],[34.35781250000002,-12.164746093750011],[34.60625,-11.690039062500006],[34.65957031250002,-11.588671875],[34.82656250000002,-11.57568359375],[34.95947265625,-11.578125],[35.1826171875,-11.574804687500006],[35.41826171875002,-11.583203125000011],[35.50439453125,-11.604785156250003],[35.56435546875002,-11.60234375],[35.630957031250006,-11.58203125],[35.78544921875002,-11.452929687500003],[35.91132812500001,-11.4546875],[36.08222656250001,-11.537304687500011],[36.17548828125001,-11.609277343750009],[36.19130859375002,-11.670703125],[36.3056640625,-11.706347656250003],[36.97890625000002,-11.566992187500006],[37.37285156250002,-11.71044921875],[37.54169921875001,-11.675097656250003],[37.72480468750001,-11.580664062500006],[37.92021484375002,-11.294726562500003],[38.491796875,-11.413281250000011],[38.9875,-11.167285156250003],[39.81708984375001,-10.912402343750003],[39.98867187500002,-10.82080078125],[40.46357421875001,-10.46435546875],[40.61171875000002,-10.661523437500009],[40.48662109375002,-10.76513671875],[40.59716796875,-10.830664062500006],[40.40283203125,-11.33203125],[40.53154296875002,-12.004589843750011],[40.48710937500002,-12.4921875],[40.58085937500002,-12.635546875],[40.43681640625002,-12.983105468750011],[40.56875,-12.984667968750003],[40.595703125,-14.122851562500003],[40.715625,-14.214453125],[40.64609375,-14.538671875],[40.775,-14.421289062500009],[40.84453125000002,-14.718652343750009],[40.617773437500006,-15.115527343750003],[40.650976562500006,-15.260937500000011],[39.98359375000001,-16.22548828125001],[39.79091796875002,-16.29453125],[39.84462890625002,-16.435644531250006],[39.084375,-16.97285156250001],[38.14492187500002,-17.242773437500006],[37.24453125000002,-17.73994140625001],[36.93935546875002,-17.993457031250003],[36.40371093750002,-18.76972656250001],[36.26289062500001,-18.71962890625001],[36.23564453125002,-18.861328125],[35.85371093750001,-18.99335937500001],[34.947851562500006,-19.81269531250001],[34.6494140625,-19.70136718750001],[34.75576171875002,-19.82197265625001],[34.705078125,-20.473046875],[34.98232421875002,-20.80625],[35.267675781250006,-21.650976562500006],[35.31572265625002,-22.396875],[35.38300781250001,-22.45458984375],[35.45634765625002,-22.11591796875001],[35.53007812500002,-22.248144531250006],[35.57539062500001,-22.96308593750001],[35.37041015625002,-23.79824218750001],[35.5419921875,-23.82441406250001],[35.48964843750002,-24.065527343750006],[34.99208984375002,-24.65058593750001],[32.96113281250001,-25.49042968750001],[32.590429687500006,-26.00410156250001],[32.84882812500001,-26.26806640625],[32.95488281250002,-26.08359375],[32.93359375,-26.25234375],[32.88916015625,-26.83046875],[32.88613281250002,-26.84931640625001],[32.353515625,-26.861621093750003],[32.19960937500002,-26.83349609375],[32.112890625,-26.839453125]]]},"properties":{"name":"Mozambique","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-16.37333984374999,19.706445312499994],[-16.437548828124932,19.609277343749994],[-16.477001953124983,19.710351562499994],[-16.343652343749994,19.86621093750003],[-16.37333984374999,19.706445312499994]]],[[[-5.359912109374989,16.282861328124994],[-5.5125,15.496289062499983],[-9.293701171875,15.502832031249994],[-9.350585937499943,15.677392578125023],[-9.38535156249992,15.667626953124994],[-9.4265625,15.623046875000057],[-9.447705078124926,15.574853515624994],[-9.446923828124937,15.458203124999955],[-9.941406249999972,15.373779296874986],[-10.696582031249989,15.42265625],[-10.9482421875,15.151123046875014],[-11.455224609374994,15.62539062499999],[-11.760156249999937,15.425537109375057],[-11.828759765624966,15.244873046875014],[-11.872851562499989,14.995166015625031],[-12.02158203124992,14.804931640625],[-12.081542968749972,14.766357421875057],[-12.104687499999955,14.745361328125043],[-12.40869140625,14.889013671874991],[-12.735253906249994,15.13125],[-13.105273437499989,15.57177734375],[-13.40966796875,16.059179687500006],[-13.756640624999989,16.172509765624994],[-13.868457031249932,16.14814453125001],[-14.300097656249932,16.58027343750001],[-14.990625,16.676904296874994],[-15.768212890624994,16.485107421875],[-16.23901367187497,16.53129882812499],[-16.44101562499992,16.20454101562504],[-16.480078124999977,16.097216796875017],[-16.50205078124992,15.917333984375063],[-16.53525390624995,15.838378906250057],[-16.53574218749995,16.28681640625001],[-16.463623046875,16.60151367187501],[-16.030322265625017,17.88793945312497],[-16.213085937499926,19.003320312500023],[-16.51445312499996,19.361962890624994],[-16.305273437499977,19.51264648437504],[-16.44487304687499,19.47314453124997],[-16.21044921875003,20.227929687500023],[-16.42978515624995,20.652343750000057],[-16.622509765624955,20.634179687499994],[-16.87607421874992,21.086132812499955],[-16.998242187499926,21.039697265625023],[-17.048046874999955,20.80615234375003],[-17.06396484375,20.89882812499999],[-16.96455078125001,21.329248046875023],[-15.231201171875,21.331298828125],[-14.084667968749926,21.33271484375001],[-13.626025390624932,21.33325195312503],[-13.396728515624943,21.333544921875017],[-13.167431640624926,21.333789062500074],[-13.016210937499949,21.33393554687501],[-13.025097656249983,21.46679687499997],[-13.032226562500028,21.572070312500017],[-13.041748046875,21.71381835937504],[-13.051220703124983,21.854785156250074],[-13.094335937499977,22.49599609375005],[-13.153271484374983,22.820507812499983],[-13.031494140624943,23.000244140625],[-12.895996093749972,23.08955078125001],[-12.739599609375006,23.192724609375063],[-12.62041015624996,23.271337890625006],[-12.559375,23.290820312500045],[-12.372900390624977,23.318017578124994],[-12.023437499999943,23.467578125000017],[-12.016308593749983,23.97021484375],[-12.016308593749983,24.378662109375],[-12.016308593749983,24.923242187499994],[-12.016308593749983,25.059375],[-12.016308593749983,25.331689453124994],[-12.016308593749983,25.740136718749994],[-12.016308593749983,25.995410156250017],[-10.376123046874966,25.995458984375034],[-9.444531249999983,25.99550781250005],[-9.071923828124937,25.99550781250005],[-8.885644531249994,25.99550781250005],[-8.682226562499949,25.99550781250005],[-8.68212890625,26.109472656250006],[-8.68212890625,26.273193359375057],[-8.682324218749955,26.49770507812505],[-8.682617187500028,26.723144531250057],[-8.682861328124972,26.92133789062501],[-8.683349609375,27.285937500000045],[-4.822607421874949,24.99560546875],[-5.640771484374994,24.99516601562499],[-5.959814453124977,24.994970703125063],[-6.287207031249977,24.99482421875001],[-6.594091796874977,24.99462890624997],[-6.396582031249977,23.274804687499994],[-6.02641601562496,20.04218750000001],[-5.827099609374955,18.301562500000045],[-5.741699218749943,17.555566406250023],[-5.713183593750017,17.306884765625],[-5.684765624999983,17.058251953124966],[-5.628662109375028,16.568652343750045],[-5.50961914062492,16.442041015625023],[-5.359912109374989,16.282861328124994]]]]},"properties":{"name":"Mauritania","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[-62.1484375,16.74033203124999],[-62.221630859375,16.699511718750003],[-62.191357421875,16.804394531249997],[-62.1484375,16.74033203124999]]]},"properties":{"name":"Montserrat","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[57.65126953125002,-20.48486328125],[57.31767578125002,-20.42763671875001],[57.416015625,-20.18378906250001],[57.65654296875002,-19.98994140625001],[57.7919921875,-20.21259765625001],[57.65126953125002,-20.48486328125]]]},"properties":{"name":"Mauritius","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[34.95947265625003,-11.578125],[34.82656250000005,-11.575683593749972],[34.65957031250005,-11.58867187499996],[34.61855468750005,-11.620214843749991],[34.60625,-11.690039062500006],[34.3578125,-12.164746093749997],[34.542578125,-13.108691406250003],[34.54570312500002,-13.21630859375],[34.6115234375001,-13.437890625000023],[35.0138671875001,-13.64345703124998],[35.247460937499994,-13.896875],[35.37578125000002,-14.05869140625002],[35.48847656250004,-14.20107421874998],[35.69042968749997,-14.465527343750026],[35.84716796875003,-14.670898437500043],[35.8927734375001,-14.891796875000011],[35.7912109375001,-15.958691406250026],[35.75527343750005,-16.058300781249983],[35.708886718749994,-16.095800781249977],[35.5993164062501,-16.12587890624998],[35.35849609375006,-16.160546875000023],[35.242773437500006,-16.375390625],[35.16718750000004,-16.56025390625001],[35.178320312500006,-16.57333984375002],[35.22978515625002,-16.639257812500034],[35.281152343749994,-16.8078125],[35.29042968750005,-17.096972656250017],[35.27255859375006,-17.11845703124996],[35.2013671875001,-17.13105468750004],[35.124609375,-17.127246093749974],[35.06464843750004,-17.078613281250014],[35.11210937500002,-16.898535156250006],[34.93339843750002,-16.760351562500006],[34.528125,-16.319140625],[34.24609374999997,-15.829394531249974],[34.54082031250002,-15.297265625],[34.50527343750005,-14.598144531249957],[34.375,-14.4248046875],[33.63642578125004,-14.568164062499974],[33.148046875,-13.94091796875],[32.98125,-14.009375],[32.797460937500006,-13.6884765625],[32.67041015624997,-13.590429687500006],[32.96757812500002,-13.225],[32.97519531250006,-12.701367187499983],[33.51230468750006,-12.347753906249977],[33.340136718750074,-12.308300781250011],[33.25234375000005,-12.112597656250031],[33.3039062500001,-11.69082031249998],[33.23271484375002,-11.417675781250026],[33.26835937500002,-11.403906249999977],[33.379785156249994,-11.15791015625004],[33.29277343750002,-10.85234375],[33.661523437499994,-10.553125],[33.55371093749997,-10.391308593750011],[33.53759765624997,-10.351562499999986],[33.52890625,-10.234667968749974],[33.31152343750003,-10.037988281249966],[33.3371093750001,-9.954003906249994],[33.350976562499994,-9.862207031250037],[33.25,-9.759570312500003],[33.148046875,-9.603515625],[32.99599609375005,-9.622851562499946],[32.91992187500003,-9.407421875000026],[33.88886718750004,-9.670117187499983],[33.99560546875003,-9.495410156250003],[34.32089843750006,-9.731542968749977],[34.56992187500006,-10.241113281249966],[34.66708984375006,-10.792480468750028],[34.60791015624997,-11.08046875],[34.77382812500005,-11.341699218750009],[34.890625,-11.3935546875],[34.93701171874997,-11.463476562500034],[34.95947265625003,-11.578125]]]},"properties":{"name":"Malawi","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[111.38925781250006,2.415332031250031],[111.31152343749997,2.437597656250034],[111.33349609374997,2.768310546875],[111.38925781250006,2.415332031250031]]],[[[104.22158203125,2.731738281250003],[104.1291015625001,2.767236328125037],[104.18476562500004,2.871728515625009],[104.22158203125,2.731738281250003]]],[[[117.88476562499997,4.186132812500006],[117.64902343750012,4.168994140624974],[117.70800781249997,4.262402343749997],[117.88476562499997,4.186132812500006]]],[[[100.28896484375005,5.294726562499989],[100.19101562500006,5.28286132812498],[100.2455078125,5.467773437499986],[100.33886718749997,5.410058593750037],[100.28896484375005,5.294726562499989]]],[[[99.848046875,6.465722656249994],[99.9186523437501,6.358593750000011],[99.74375,6.263281249999963],[99.64628906250002,6.418359375000023],[99.848046875,6.465722656249994]]],[[[102.10107421874997,6.242236328125031],[102.34013671875002,6.172021484375023],[102.534375,5.862548828125028],[103.09707031250005,5.408447265624986],[103.41582031250007,4.85029296875004],[103.43945312499997,2.93310546875],[103.8122070312501,2.58046875],[104.21855468750002,1.722851562499997],[104.25009765625012,1.388574218750009],[104.11494140625004,1.412255859375037],[103.98144531250003,1.623632812500034],[103.99150390625002,1.454785156249997],[103.6945312500001,1.449658203125026],[103.48027343750007,1.329492187499966],[103.35683593750005,1.546142578125057],[102.72714843750012,1.855566406250034],[101.29550781250012,2.885205078125011],[101.29990234375012,3.253271484375034],[100.71542968750006,3.966210937499966],[100.79550781250012,4.023388671874983],[100.61455078125002,4.3734375],[100.34326171874997,5.984179687500031],[100.11914062499997,6.441992187500048],[100.26142578125004,6.682714843749963],[100.3454101562501,6.549902343750006],[100.75449218750012,6.460058593749991],[100.87392578125,6.24541015624996],[101.05351562500002,6.242578125],[100.98164062500004,5.771044921875045],[101.1139648437501,5.636767578125045],[101.5560546875,5.907763671875003],[101.67841796875004,5.778808593750028],[101.87363281250012,5.825292968749991],[102.10107421874997,6.242236328125031]]],[[[117.5744140625001,4.17060546875004],[117.10058593750003,4.337060546875023],[116.51474609375006,4.370800781249969],[115.86074218750005,4.348046875000037],[115.67880859375006,4.193017578124994],[115.45439453125002,3.034326171875009],[115.24697265625005,3.025927734374989],[115.117578125,2.89487304687502],[115.08076171875004,2.63422851562504],[115.1791015625,2.523193359374972],[114.78642578125002,2.250488281250014],[114.83056640625003,1.980029296874989],[114.5125,1.452001953124963],[113.90234375000003,1.434277343749997],[113.6222656250001,1.2359375],[113.00654296875004,1.433886718750003],[112.94296875000006,1.566992187500034],[112.47617187500006,1.559082031250028],[112.1857421875001,1.4390625],[112.078515625,1.143359374999974],[111.80898437500005,1.011669921874969],[111.10136718750002,1.050537109374986],[110.50576171875005,0.861962890625023],[109.65400390625004,1.614892578125023],[109.53896484375,1.89619140625004],[109.62890625000003,2.027539062499983],[109.86484375000012,1.764453125000031],[110.34921875000012,1.719726562499972],[111.22324218750012,1.395849609374991],[111.0287109375,1.557812500000026],[111.26816406250012,2.13974609375002],[111.20859375000012,2.379638671875043],[111.44384765625003,2.381542968749983],[111.5125,2.743017578124991],[112.98789062500006,3.161914062499974],[113.92392578125006,4.243212890625003],[114.0638671875,4.592675781249966],[114.65410156250007,4.037646484375045],[114.84023437500005,4.393212890625009],[114.74667968750006,4.718066406250017],[115.02675781250005,4.899707031249989],[115.10703125000006,4.390429687499974],[115.290625,4.352587890624989],[115.1400390625,4.899755859374991],[115.37490234375,4.932763671874966],[115.55449218750007,5.093554687500045],[115.41904296875012,5.413183593749963],[115.60390625,5.603417968749994],[115.74082031250012,5.533007812500045],[115.8771484375001,5.613525390625014],[116.74980468750007,6.977099609374989],[116.8498046875001,6.826708984374989],[116.78808593749997,6.606103515624994],[117.12851562500012,6.968896484375009],[117.2298828125,6.939990234374974],[117.29404296875006,6.676904296875023],[117.60966796875002,6.512646484375054],[117.69375,6.35],[117.64453124999997,6.001855468749994],[117.5011718750001,5.884667968750009],[118.00380859375,6.053320312499991],[118.11582031250006,5.8625],[117.93476562500004,5.7875],[117.97363281249997,5.70625],[118.35312500000012,5.80605468749998],[118.59482421875006,5.592089843750003],[119.22343750000007,5.412646484375031],[119.2663085937501,5.308105468750057],[119.21962890625,5.159814453125037],[118.9125,5.02290039062504],[118.26054687500007,4.988867187500034],[118.18535156250002,4.828515625000051],[118.5625,4.502148437499997],[118.54833984375003,4.379248046875006],[118.008203125,4.250244140625014],[117.6964843750001,4.342822265625045],[117.5744140625001,4.17060546875004]]],[[[117.14160156250003,7.168212890625028],[117.08066406250006,7.115283203124989],[117.06425781250007,7.26069335937504],[117.2640625,7.351660156250006],[117.26679687500004,7.220800781249991],[117.14160156250003,7.168212890625028]]]]},"properties":{"name":"Malaysia","childNum":8}},{"geometry":{"type":"Polygon","coordinates":[[[23.380664062500017,-17.640625],[24.27490234375,-17.481054687500006],[24.73291015625,-17.51777343750001],[25.001757812500017,-17.56855468750001],[25.2587890625,-17.793554687500006],[24.909082031250023,-17.821386718750006],[24.530566406250017,-18.052734375],[24.243945312500017,-18.0234375],[23.599707031250006,-18.4599609375],[23.219335937500006,-17.99970703125001],[20.97412109375,-18.31884765625],[20.9794921875,-21.9619140625],[19.977343750000017,-22.00019531250001],[19.98046875,-24.77675781250001],[19.98046875,-28.310351562500003],[19.98046875,-28.451269531250006],[19.539843750000017,-28.574609375],[19.31269531250001,-28.73330078125001],[19.24580078125001,-28.901660156250003],[19.16171875,-28.938769531250003],[18.310839843750017,-28.88623046875],[17.44794921875001,-28.69814453125001],[17.34785156250001,-28.50117187500001],[17.358691406250017,-28.26943359375001],[17.1884765625,-28.13251953125001],[17.05625,-28.031054687500003],[16.93330078125001,-28.069628906250003],[16.875292968750017,-28.1279296875],[16.841210937500023,-28.21894531250001],[16.81015625,-28.26455078125001],[16.7875,-28.39472656250001],[16.755761718750023,-28.4521484375],[16.62617187500001,-28.487890625],[16.487109375000017,-28.572851562500006],[16.447558593750017,-28.617578125],[15.719042968750017,-27.9658203125],[15.341503906250011,-27.386523437500003],[15.139062500000023,-26.50800781250001],[14.9677734375,-26.31806640625001],[14.837109375000011,-25.033203125],[14.5015625,-24.201953125],[14.462792968750023,-22.44912109375001],[13.450585937500023,-20.91669921875001],[13.168359375000023,-20.184667968750006],[12.458203125000011,-18.9267578125],[11.77587890625,-18.001757812500003],[11.733496093750006,-17.7509765625],[11.743066406250023,-17.24921875000001],[11.902539062500011,-17.2265625],[12.013964843750017,-17.168554687500006],[12.21337890625,-17.2099609375],[12.318457031250006,-17.21337890625],[12.359277343750023,-17.205859375],[12.548144531250017,-17.212695312500003],[13.179492187500017,-16.9716796875],[13.475976562500023,-17.0400390625],[14.017480468750023,-17.40888671875001],[16.1484375,-17.390234375],[18.396386718750023,-17.3994140625],[18.95527343750001,-17.803515625],[20.1943359375,-17.863671875],[20.745507812500023,-18.01972656250001],[22.32421875,-17.8375],[23.380664062500017,-17.640625]]]},"properties":{"name":"Namibia","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[167.54443359375003,-22.62324218750001],[167.44375,-22.63916015624997],[167.44345703125006,-22.541406250000037],[167.54443359375003,-22.62324218750001]]],[[[168.01093750000004,-21.429980468750017],[168.1390625,-21.44521484375001],[168.12070312500012,-21.615820312500034],[167.96679687500003,-21.641601562499957],[167.81542968749997,-21.392675781249963],[167.9884765625001,-21.337890624999986],[168.01093750000004,-21.429980468750017]]],[[[167.40087890625003,-21.16064453125003],[167.07265625,-20.99726562499997],[167.03271484374997,-20.922558593750026],[167.18945312500003,-20.803515625000017],[167.05576171875012,-20.720214843750014],[167.29794921875006,-20.732519531250034],[167.40087890625003,-21.16064453125003]]],[[[164.20234375000004,-20.246093749999957],[164.4359375,-20.282226562499957],[165.191796875,-20.768847656249974],[165.66279296875004,-21.267187499999977],[166.94238281250003,-22.09013671875003],[166.97031250000012,-22.32285156250002],[166.77412109375004,-22.37617187500004],[166.4679687500001,-22.256054687499997],[164.92744140625004,-21.289843749999974],[164.16972656250007,-20.48017578125004],[164.05966796875012,-20.141503906249966],[164.20234375000004,-20.246093749999957]]]]},"properties":{"name":"New Caledonia","childNum":4}},{"geometry":{"type":"Polygon","coordinates":[[[14.97900390625,22.99619140624999],[15.181835937500011,21.523388671874997],[15.607324218750023,20.954394531250003],[15.587109375000011,20.733300781249994],[15.963183593750017,20.34619140625],[15.735058593750011,19.904052734375],[15.474316406250011,16.908398437499997],[14.367968750000017,15.750146484374994],[13.4482421875,14.380664062500003],[13.505761718750023,14.134423828124994],[13.606347656250023,13.70458984375],[13.426953125000011,13.701757812499991],[13.323828125,13.670849609374997],[12.871679687500006,13.449023437500003],[12.65478515625,13.3265625],[12.463183593750017,13.09375],[10.958886718750023,13.371533203124997],[10.475878906250017,13.330224609374994],[10.229589843750006,13.281005859375],[10.184667968750006,13.270117187499991],[9.615917968750011,12.810644531249991],[9.201562500000023,12.821484375],[8.750585937500006,12.908154296874997],[8.4560546875,13.059667968749991],[8.095019531250017,13.291162109374994],[7.955761718750011,13.32275390625],[7.788671875,13.337890625],[7.056738281250006,13.000195312499997],[6.804296875,13.107666015625],[6.2998046875,13.658789062499991],[6.184277343750011,13.66367187499999],[5.838183593750017,13.765380859375],[5.491992187500017,13.872851562500003],[5.415820312500017,13.859179687500003],[5.361621093750017,13.836865234374997],[5.241894531250011,13.757226562499994],[4.664843750000017,13.733203125],[4.147558593750006,13.457714843749997],[3.947851562500006,12.775048828124994],[3.646679687500011,12.529980468749997],[3.595410156250011,11.6962890625],[2.805273437500006,12.383837890624989],[2.366015625000017,12.221923828125],[2.38916015625,11.897070312499991],[2.072949218750011,12.309375],[2.226269531250011,12.466064453125],[2.104589843750006,12.701269531249991],[1.56494140625,12.635400390624994],[0.9873046875,13.041894531249994],[0.988476562500011,13.36484375],[1.201171875,13.357519531249991],[0.6181640625,13.703417968750003],[0.42919921875,13.972119140624997],[0.382519531250011,14.245800781249997],[0.163867187500017,14.497216796874994],[0.217480468750011,14.911474609374991],[0.947460937500011,14.982128906249997],[1.300195312500023,15.272265625],[3.001074218750006,15.340966796874994],[3.06015625,15.427197265624997],[3.504296875000023,15.356347656249994],[3.5205078125,15.483105468749997],[3.842968750000011,15.701708984375003],[4.121289062500011,16.357714843750003],[4.234667968750017,16.996386718750003],[4.227636718750006,19.142773437499997],[5.836621093750011,19.479150390624994],[7.481738281250017,20.873095703125003],[11.967871093750006,23.517871093750003],[13.48125,23.18017578125],[14.215527343750011,22.619677734375003],[14.97900390625,22.99619140624999]]]},"properties":{"name":"Niger","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[7.30078125,4.418164062500026],[7.140429687500017,4.395117187500034],[7.227343750000045,4.527343749999972],[7.30078125,4.418164062500026]]],[[[6.804296875,13.107666015625],[7.056738281250006,13.00019531250004],[7.788671875,13.337890625],[7.955761718750011,13.322753906250028],[8.095019531250045,13.29116210937498],[8.750585937500034,12.908154296875026],[9.20156250000008,12.82148437500004],[9.615917968750011,12.810644531249963],[10.184667968750063,13.270117187499963],[10.229589843749977,13.281005859375043],[10.475878906250074,13.330224609375037],[10.958886718750051,13.371533203125011],[12.463183593750017,13.09375],[12.654785156250057,13.3265625],[13.426953125000068,13.701757812499963],[13.606347656250023,13.704589843750014],[13.932324218750011,13.258496093749997],[14.06396484375,13.078515625],[14.160058593750023,12.612792968749986],[14.184863281250017,12.447216796874997],[14.272851562500023,12.356494140624989],[14.518945312500051,12.298242187500023],[14.619726562500063,12.150976562500048],[14.559765625000011,11.492285156249963],[14.20234375000004,11.268164062499963],[14.143261718750068,11.248535156250043],[14.056738281250034,11.245019531250037],[13.981445312500057,11.21186523437504],[13.892089843750057,11.140087890624983],[13.699902343749983,10.873144531250048],[13.53535156250004,10.605078124999963],[13.414550781250028,10.171435546874989],[13.269921875000051,10.036181640624974],[13.198730468750028,9.563769531250003],[12.929492187500074,9.426269531249972],[12.87568359375004,9.303515625000017],[12.80654296875008,8.886621093749994],[12.7822265625,8.817871093750014],[12.651562500000011,8.667773437499989],[12.40351562500004,8.59555664062502],[12.311328125000074,8.419726562499989],[12.2333984375,8.282324218749977],[12.016015625000051,7.589746093750009],[11.809179687500006,7.345068359374991],[11.767382812500017,7.272265624999989],[11.861425781249977,7.11640625000004],[11.657519531250017,6.951562500000023],[11.580078125000057,6.88886718750004],[11.551660156250023,6.697265625],[11.153320312500057,6.437939453125011],[11.1064453125,6.457714843750054],[11.032519531250045,6.697900390625037],[10.954199218750006,6.7765625],[10.60625,7.063085937500006],[10.413183593750006,6.877734375],[10.293066406250034,6.876757812499974],[10.205468750000051,6.891601562499986],[10.185546874999972,6.91279296875004],[10.167773437500017,6.959179687499983],[10.143554687500057,6.99643554687502],[10.038867187500045,6.921386718750014],[9.874218750000068,6.803271484375017],[9.82070312500008,6.783935546874986],[9.779882812500034,6.760156250000023],[9.725585937499972,6.65],[9.659960937500017,6.531982421874986],[9.490234375,6.418652343749997],[8.997167968750006,5.917724609375],[8.715625,5.046875],[8.514843750000068,4.724707031250034],[8.23378906250008,4.907470703124972],[8.293066406250006,4.557617187500014],[7.644238281250068,4.525341796875011],[7.530761718750028,4.655175781249994],[7.284375,4.547656250000031],[7.076562500000051,4.716162109374991],[7.15468750000008,4.514404296875],[6.92324218750008,4.390673828125017],[6.767675781250006,4.724707031250034],[6.860351562500057,4.373339843750045],[6.633007812500011,4.340234375000051],[6.579980468750051,4.475976562499994],[6.554589843750023,4.34140625000002],[6.263671875,4.309423828124991],[6.270996093749972,4.432128906250028],[6.173339843749972,4.277392578125031],[5.970703125,4.338574218749983],[5.587792968750051,4.647216796874972],[5.448144531250023,4.945849609374974],[5.383300781250057,5.129003906249977],[5.475976562500023,5.153857421874989],[5.370019531250023,5.195019531250026],[5.367968750000045,5.337744140624963],[5.549707031250023,5.474218749999963],[5.385839843750034,5.401757812500037],[5.199218750000028,5.533544921874977],[5.456640624999977,5.61171875],[5.327343750000011,5.707519531249986],[5.112402343750034,5.64155273437504],[4.861035156250068,6.026318359374997],[4.431347656250011,6.348583984375026],[3.450781249999977,6.427050781250017],[3.71699218750004,6.597949218750017],[3.430175781250057,6.525],[3.335546875000063,6.396923828125011],[2.706445312500051,6.369238281249963],[2.735644531250045,6.595703125],[2.753710937499989,6.661767578124966],[2.774609374999983,6.711718750000017],[2.752929687500028,6.771630859374966],[2.731738281250045,6.852832031249989],[2.721386718750068,6.980273437500017],[2.75673828125008,7.067919921875017],[2.750488281250057,7.39506835937496],[2.765820312500068,7.422509765625051],[2.783984375000045,7.443408203125045],[2.78515625,7.476855468750017],[2.703125,8.371826171875],[2.774804687500023,9.048535156250026],[3.044921875,9.08383789062502],[3.325195312499972,9.778466796875051],[3.60205078125,10.004541015625009],[3.646582031250006,10.408984374999989],[3.771777343750017,10.417626953124966],[3.83447265625,10.607421875],[3.7568359375,10.76875],[3.71640625,11.07958984375],[3.695312499999972,11.12031250000004],[3.63886718750004,11.176855468750006],[3.487792968749972,11.395410156250037],[3.490527343750017,11.499218750000054],[3.55390625000004,11.631884765624989],[3.595410156250068,11.696289062500057],[3.664746093750068,11.762451171875028],[3.646679687500011,12.529980468749983],[3.947851562500006,12.775048828124994],[4.147558593750006,13.457714843749983],[4.664843750000045,13.733203124999974],[5.241894531250011,13.757226562499994],[5.361621093750074,13.836865234375054],[5.415820312500017,13.859179687499974],[5.491992187500074,13.872851562500003],[6.2998046875,13.658789062500006],[6.804296875,13.107666015625]]]]},"properties":{"name":"Nigeria","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[-83.6419921875,10.917236328125],[-83.71293945312499,10.785888671875],[-83.91928710937499,10.7353515625],[-84.6341796875,11.045605468749997],[-84.9091796875,10.9453125],[-85.5841796875,11.189453125],[-85.7443359375,11.06210937499999],[-87.670166015625,12.965673828124991],[-87.58505859374999,13.043310546874991],[-87.42436523437499,12.921142578125],[-87.33725585937499,12.979248046875],[-87.05917968749999,12.991455078125],[-87.00932617187499,13.0078125],[-86.918212890625,13.223583984374997],[-86.87353515625,13.266503906249994],[-86.792138671875,13.27978515625],[-86.72929687499999,13.284375],[-86.710693359375,13.313378906249994],[-86.76352539062499,13.63525390625],[-86.77060546874999,13.69873046875],[-86.758984375,13.746142578125003],[-86.733642578125,13.763476562500003],[-86.61025390625,13.774853515624997],[-86.376953125,13.755664062500003],[-86.33173828125,13.770068359375003],[-86.238232421875,13.899462890625003],[-86.15122070312499,13.994580078124997],[-86.0892578125,14.037207031249991],[-86.04038085937499,14.050146484374991],[-85.9837890625,13.965673828124991],[-85.78671875,13.844433593749997],[-85.75341796875,13.85205078125],[-85.73393554687499,13.858691406250003],[-85.727734375,13.876074218749991],[-85.731201171875,13.931835937499997],[-85.68193359374999,13.982568359374994],[-85.20834960937499,14.311816406250003],[-85.059375,14.582958984374997],[-84.86044921874999,14.809765625],[-84.645947265625,14.661083984374997],[-84.53764648437499,14.633398437499991],[-83.635498046875,14.876416015624997],[-83.5365234375,14.977001953124997],[-83.4150390625,15.008056640625],[-83.15751953124999,14.993066406249994],[-83.18535156249999,14.956396484374991],[-83.21591796874999,14.932373046875],[-83.27988281249999,14.812792968750003],[-83.344384765625,14.902099609375],[-83.413720703125,14.825341796874994],[-83.29921875,14.7490234375],[-83.187744140625,14.340087890625],[-83.4123046875,13.99648437499999],[-83.567333984375,13.3203125],[-83.5109375,12.411816406249997],[-83.627197265625,12.459326171874991],[-83.59335937499999,12.713085937499997],[-83.75424804687499,12.501953125],[-83.680419921875,12.024316406249994],[-83.7671875,12.059277343749997],[-83.82890624999999,11.861035156249997],[-83.70458984375,11.824560546874991],[-83.6517578125,11.642041015624997],[-83.86787109375,11.300048828125],[-83.6419921875,10.917236328125]]]},"properties":{"name":"Nicaragua","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-169.80341796875,-19.0830078125],[-169.94833984375,-19.072851562500006],[-169.834033203125,-18.96601562500001],[-169.80341796875,-19.0830078125]]]},"properties":{"name":"Niue","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-68.205810546875,12.144580078124989],[-68.25434570312495,12.032080078124977],[-68.36923828125,12.301953124999983],[-68.205810546875,12.144580078124989]]],[[[4.226171875000034,51.38647460937503],[3.902050781250011,51.20766601562502],[3.43251953125008,51.24575195312505],[3.35009765625,51.37768554687503],[4.226171875000034,51.38647460937503]]],[[[3.94912109375008,51.73945312500001],[4.07509765625008,51.648779296875006],[3.699023437500017,51.70991210937501],[3.94912109375008,51.73945312500001]]],[[[4.886132812500023,53.07070312500005],[4.70917968750004,53.036035156249994],[4.886425781249983,53.18330078124998],[4.886132812500023,53.07070312500005]]],[[[4.226171875000034,51.38647460937503],[3.448925781250068,51.54077148437503],[3.743945312500017,51.596044921875006],[4.27412109375004,51.47163085937498],[4.004785156250051,51.595849609374966],[4.182617187500057,51.61030273437498],[3.946875,51.810546875],[4.482812500000023,52.30917968749998],[4.76875,52.941308593749966],[5.061230468750068,52.96064453125001],[5.532031250000074,53.268701171874966],[6.062207031250068,53.407080078125006],[6.816210937500045,53.44116210937503],[7.197265625000028,53.28227539062499],[7.033007812500045,52.65136718749997],[6.710742187500045,52.61787109374998],[6.748828125000074,52.464013671874994],[7.035156250000057,52.38022460937498],[6.724511718749994,52.080224609374966],[6.800390625,51.96738281249998],[5.948730468750057,51.80268554687501],[6.198828125000034,51.45],[6.129980468750034,51.14741210937501],[5.857519531250034,51.030126953125006],[6.048437500000034,50.90488281250006],[5.993945312500017,50.75043945312504],[5.693554687500011,50.774755859375006],[5.796484375000034,51.153076171875],[5.214160156250045,51.278955078124966],[5.03095703125004,51.46909179687498],[4.226171875000034,51.38647460937503]]],[[[5.325781250000063,53.38574218750003],[5.190234375000074,53.39179687500001],[5.582617187500063,53.438085937500034],[5.325781250000063,53.38574218750003]]]]},"properties":{"name":"Netherlands","childNum":6,"cp":[5.0752777,52.358465]}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[5.085839843750023,60.30756835937501],[5.089062500000068,60.188769531250045],[4.95722656250004,60.44726562500006],[5.085839843750023,60.30756835937501]]],[[[4.958691406250068,61.084570312500034],[4.79902343750004,61.08271484375001],[4.861621093749989,61.19384765625],[4.958691406250068,61.084570312500034]]],[[[8.10273437500004,63.33759765625004],[7.804003906250017,63.413916015625034],[8.073535156250045,63.47080078124998],[8.10273437500004,63.33759765625004]]],[[[8.470800781250063,63.66713867187502],[8.287109375000028,63.68715820312502],[8.764648437500057,63.804638671874955],[8.78652343750008,63.703466796875034],[8.470800781250063,63.66713867187502]]],[[[11.2314453125,64.865869140625],[10.739843750000034,64.87031250000001],[11.02099609375,64.97871093749995],[11.2314453125,64.865869140625]]],[[[12.971777343750063,67.87412109375],[12.824023437500074,67.82124023437498],[13.068066406250068,68.07133789062505],[12.971777343750063,67.87412109375]]],[[[13.872851562500045,68.26533203125004],[14.096777343750034,68.218603515625],[13.229394531250051,67.995361328125],[13.300195312499994,68.16044921875007],[13.872851562500045,68.26533203125004]]],[[[15.207128906250006,68.943115234375],[15.222070312500023,68.61630859375003],[14.404687500000051,68.663232421875],[15.037792968750068,69.00053710937507],[15.207128906250006,68.943115234375]]],[[[15.760351562500006,68.56123046875001],[16.328906250000017,68.87631835937498],[16.519238281250068,68.63300781249998],[15.975292968750011,68.402490234375],[14.257519531249983,68.19077148437503],[15.412597656250028,68.61582031250003],[15.483007812500006,69.04345703125003],[16.04804687500001,69.30205078125002],[15.760351562500006,68.56123046875001]]],[[[17.503027343750034,69.59624023437502],[18.004101562500068,69.50498046874998],[17.95068359375003,69.19814453125],[17.487890625000063,69.19682617187499],[17.08251953124997,69.013671875],[16.81044921875008,69.07070312499997],[17.001757812500045,69.36191406250006],[17.36083984375003,69.38149414062497],[17.503027343750034,69.59624023437502]]],[[[29.956152343750006,69.79677734375002],[29.766210937500006,69.76752929687501],[29.835839843749994,69.90556640625005],[29.956152343750006,69.79677734375002]]],[[[20.779199218750023,70.08974609375002],[20.46425781250005,70.0765625],[20.492773437500006,70.20332031249995],[20.78603515625008,70.21953124999999],[20.779199218750023,70.08974609375002]]],[[[19.25507812500001,70.06640625000006],[19.607812500000023,70.019140625],[19.334765625000074,69.82026367187501],[18.784765625000034,69.57900390624997],[18.12988281250003,69.557861328125],[18.34931640625004,69.76787109374999],[18.67402343750004,69.78164062500002],[19.13271484375005,70.24414062500003],[19.25507812500001,70.06640625000006]]],[[[19.76748046875005,70.21669921875002],[20.005957031250034,70.07622070312502],[19.599023437499994,70.26616210937507],[19.76748046875005,70.21669921875002]]],[[[23.615332031250034,70.54931640625003],[23.15917968750003,70.28261718750005],[22.941015625000063,70.444580078125],[23.546679687500017,70.61708984374997],[23.615332031250034,70.54931640625003]]],[[[24.01757812500003,70.56738281249997],[23.716601562500074,70.561865234375],[23.778417968750063,70.74736328125005],[24.01757812500003,70.56738281249997]]],[[[23.440527343750063,70.81577148437503],[22.8291015625,70.54155273437505],[22.358691406250017,70.514794921875],[21.99453125000008,70.65712890624997],[23.440527343750063,70.81577148437503]]],[[[30.869726562500006,69.78344726562506],[30.860742187499994,69.53842773437503],[30.18017578124997,69.63583984375],[30.08730468750005,69.43286132812503],[29.38828125,69.29814453125005],[28.96582031250003,69.02197265625],[28.846289062500006,69.17690429687502],[29.33339843750005,69.47299804687503],[29.14160156250003,69.67143554687505],[27.747851562500045,70.06484375],[27.127539062500063,69.90649414062497],[26.525390625000057,69.91503906250003],[26.07246093750004,69.69155273437497],[25.748339843750017,68.99013671875],[24.94140625000003,68.59326171875006],[23.85400390625,68.80590820312503],[23.324023437500017,68.64897460937502],[22.410937500000074,68.719873046875],[21.59375,69.273583984375],[21.06611328125001,69.21411132812497],[21.065722656250017,69.04174804687503],[20.622167968750006,69.036865234375],[20.116699218750057,69.02089843750005],[20.348046875000023,68.84873046875003],[19.969824218750063,68.35639648437501],[18.303027343750045,68.55541992187497],[17.91669921875001,67.96489257812502],[17.324609375000023,68.10380859374999],[16.783593750000023,67.89501953125],[16.12744140625,67.42583007812507],[16.40351562500004,67.05498046875002],[15.422949218750006,66.48984374999998],[15.483789062500051,66.30595703124999],[14.543261718750045,66.12934570312498],[14.47968750000004,65.30146484374998],[13.650292968750023,64.58154296874997],[14.077636718750028,64.464013671875],[14.141210937500006,64.17353515624998],[13.960546875000063,64.01401367187498],[13.203515625000023,64.07509765625],[12.792773437500017,64],[12.175195312500051,63.595947265625],[11.999902343750051,63.29169921875001],[12.303515625000074,62.28559570312501],[12.155371093750006,61.720751953125045],[12.88076171875008,61.35229492187506],[12.706054687500028,61.059863281250074],[12.29414062500004,61.00268554687506],[12.588671874999989,60.450732421875045],[12.486132812500074,60.10678710937506],[11.680761718750034,59.59228515625003],[11.798144531250074,59.28989257812498],[11.64277343750004,58.92607421875002],[11.470703125000057,58.909521484375034],[11.388281250000063,59.036523437499966],[10.834472656250028,59.18393554687498],[10.595312500000063,59.764550781249966],[10.179394531250068,59.00927734375003],[9.842578125000017,58.95849609374997],[9.557226562500063,59.11269531250002],[9.65693359375004,58.97119140624997],[8.166113281250063,58.145312500000045],[7.0048828125,58.024218750000074],[6.877050781250006,58.15073242187498],[6.590527343750068,58.09731445312502],[6.659863281250068,58.26274414062499],[5.706835937500074,58.52363281250001],[5.55556640625008,58.975195312500006],[6.099023437500023,58.87026367187502],[6.363281250000028,59.00092773437501],[6.099414062500017,58.951953125000074],[5.88916015625,59.097949218750045],[5.951855468750068,59.299072265625],[6.415332031250074,59.547119140625],[5.17324218750008,59.16254882812498],[5.2421875,59.564306640625034],[5.472460937500017,59.713085937499955],[5.77216796875004,59.66093749999999],[6.216601562499989,59.818359375],[5.73046875,59.863085937500045],[6.348730468750006,60.35297851562504],[6.57363281250008,60.36059570312497],[6.526855468750057,60.152929687500034],[6.995703125,60.511962890625],[6.1533203125,60.34624023437499],[5.145800781250074,59.63881835937502],[5.205664062500006,60.087939453125045],[5.688574218749977,60.12319335937502],[5.285839843750011,60.20571289062505],[5.13710937500008,60.445605468750074],[5.648339843750051,60.68798828124997],[5.244042968750023,60.569580078125],[5.115820312500006,60.63598632812503],[5.008593750000017,61.038183593750006],[6.777832031250028,61.142431640625006],[7.038671875000063,60.952929687500045],[7.040136718750006,61.091162109375034],[7.604492187500057,61.210546875000034],[7.34658203125008,61.30058593749999],[7.442578125000011,61.43461914062502],[7.173535156250011,61.16596679687501],[6.599902343750017,61.28964843749998],[6.383496093750068,61.133886718750034],[5.451269531250034,61.10234375000002],[5.106738281250017,61.187548828125045],[5.002734375000074,61.43359375],[5.338671875000017,61.485498046874994],[4.927832031249977,61.71069335937506],[4.93007812499999,61.878320312499994],[6.01582031250004,61.7875],[6.730761718750045,61.86977539062505],[5.266894531250045,61.935595703125045],[5.143164062500063,62.159912109375],[5.908300781249977,62.41601562500003],[6.083496093750057,62.349609375],[6.580078125000057,62.407275390625045],[6.692382812500028,62.46806640624999],[6.136132812500051,62.40747070312497],[6.352929687500051,62.61113281249999],[7.653125,62.56401367187499],[7.538378906250074,62.67207031249998],[8.045507812500006,62.77124023437503],[6.734960937500006,62.72070312500003],[6.940429687500028,62.930468750000045],[7.571875,63.09951171875002],[8.100585937500028,63.090966796874966],[8.623144531250006,62.84624023437502],[8.158007812500017,63.16152343750005],[8.635546875000045,63.34233398437502],[8.360742187500023,63.498876953125034],[8.576171875000028,63.60117187499998],[9.135839843750006,63.593652343749966],[9.156054687500045,63.459326171875034],[9.696875,63.624560546875045],[10.020996093750028,63.39082031250004],[10.76015625000008,63.461279296875006],[10.725292968750068,63.625],[11.370703125000034,63.804833984374994],[11.175585937500074,63.89887695312498],[11.457617187500063,64.00297851562505],[11.306640625000028,64.04887695312499],[10.91425781250004,63.92109374999998],[10.934863281250045,63.770214843749955],[10.055078125000051,63.5126953125],[9.567285156250051,63.70615234374998],[10.565625,64.418310546875],[11.523828125000051,64.744384765625],[11.632910156250063,64.81391601562495],[11.296777343750051,64.75478515625],[11.489355468750034,64.975830078125],[12.15966796875,65.178955078125],[12.508398437499977,65.09941406250005],[12.915527343750057,65.33925781249997],[12.417578125000063,65.18408203124997],[12.133886718749977,65.27915039062498],[12.68886718750008,65.90219726562498],[13.033105468750051,65.95625],[12.783789062500063,66.10043945312506],[14.034179687500057,66.29755859374998],[13.118847656250011,66.23066406250004],[13.211425781250028,66.64082031250001],[13.959472656250028,66.79433593750002],[13.651562500000011,66.90708007812498],[14.10878906250008,67.11923828125003],[15.41572265625004,67.20244140625002],[14.441699218750045,67.27138671875005],[14.961914062500057,67.57426757812502],[15.59443359375004,67.34853515625005],[15.691503906250006,67.52138671875],[15.24873046875004,67.6021484375],[15.303906250000011,67.76528320312502],[14.854687500000068,67.66333007812506],[14.798925781250063,67.80932617187503],[15.13427734375,67.97270507812502],[15.621386718750017,67.94829101562502],[15.316015624999977,68.06875],[16.007910156250006,68.22871093750004],[16.312304687500017,67.88144531249998],[16.20380859375001,68.31674804687503],[17.552832031250063,68.42626953125006],[16.51435546875004,68.53256835937503],[18.101464843749994,69.15629882812499],[18.259765625,69.47060546875],[18.915917968750023,69.33559570312502],[18.614453125000068,69.49057617187498],[19.197265625000057,69.74785156249999],[19.722460937500017,69.78164062500002],[19.64150390625005,69.42402343750001],[20.324218750000057,69.94531249999997],[20.054492187500074,69.33266601562497],[20.486718750000023,69.54208984375],[20.739453124999983,69.52050781250003],[20.622070312500057,69.91391601562498],[21.163085937500057,69.88950195312498],[21.432910156250045,70.01318359375006],[21.974707031250034,69.83457031249998],[21.355761718750045,70.23339843749997],[22.321972656250068,70.264501953125],[22.684570312500057,70.374755859375],[23.35390625000008,69.98339843750003],[23.3291015625,70.20722656249995],[24.420019531250034,70.70200195312503],[24.263476562500017,70.82631835937497],[24.658007812500017,71.00102539062505],[25.264648437500057,70.843505859375],[25.768164062500063,70.85317382812502],[25.043847656250023,70.10903320312502],[26.66132812500004,70.93974609374999],[26.585058593750034,70.41000976562498],[26.989355468750063,70.51137695312502],[27.183691406250034,70.74404296875],[27.546484375000063,70.80400390625005],[27.23525390625008,70.94721679687498],[27.59707031250005,71.09130859375003],[28.392285156250068,70.97529296875004],[27.898046875,70.67792968750001],[28.271777343750017,70.66796875000003],[28.192968750000034,70.24858398437505],[28.83154296875003,70.86396484375001],[29.7375,70.646826171875],[30.065136718750097,70.70297851562498],[30.944140625000017,70.27441406249997],[30.262988281250074,70.12470703125004],[28.804296875000063,70.09252929687506],[29.601367187500017,69.97675781249998],[29.792089843750063,69.727880859375],[30.08828125,69.71757812500005],[30.237597656250017,69.86220703125002],[30.428320312500006,69.722265625],[30.869726562500006,69.78344726562506]]],[[[25.58632812500005,71.14208984375],[26.13378906250003,70.99580078125004],[25.582031250000057,70.960791015625],[25.31494140625,71.03413085937504],[25.58632812500005,71.14208984375]]],[[[-8.953564453124983,70.83916015625002],[-8.001367187499966,71.17768554687495],[-8.002099609374937,71.04125976562497],[-8.953564453124983,70.83916015625002]]],[[[19.219335937500006,74.39101562500002],[18.86123046875008,74.51416015624997],[19.182910156250045,74.51791992187503],[19.219335937500006,74.39101562500002]]],[[[21.60810546875004,78.59570312499997],[22.04316406250004,78.57695312500007],[22.29951171875004,78.22817382812497],[23.451953125000074,78.14946289062502],[23.11669921874997,77.99150390624999],[24.901855468750057,77.756591796875],[22.55371093750003,77.26665039062502],[22.685351562500045,77.55351562500002],[20.928125,77.45966796874998],[21.653125,77.92353515624998],[20.22792968750005,78.47783203125005],[21.60810546875004,78.59570312499997]]],[[[11.250292968750017,78.610693359375],[12.116406250000068,78.232568359375],[11.121289062500011,78.46328125],[10.558203125000063,78.90292968750003],[11.250292968750017,78.610693359375]]],[[[29.047070312500068,78.91206054687504],[29.69667968750005,78.90473632812495],[27.88906250000005,78.8521484375],[28.511132812500023,78.96733398437502],[29.047070312500068,78.91206054687504]]],[[[16.786718750000034,79.90673828125],[17.834570312499977,79.80004882812503],[17.66875,79.38593750000004],[18.39736328125008,79.60517578125001],[18.677832031250006,79.26171875000003],[19.893554687500057,79.05620117187499],[20.61103515625004,79.10664062499998],[21.388769531250034,78.74042968749998],[19.67675781250003,78.60957031249995],[16.700488281250045,76.57929687499995],[14.365820312500034,77.23447265625003],[13.995703125000034,77.50820312500002],[14.69501953125004,77.525048828125],[14.920800781250023,77.68881835937506],[17.033300781250006,77.79770507812503],[16.91406250000003,77.89799804687505],[14.089941406250063,77.77138671875],[13.680566406250051,78.028125],[14.307226562500006,78.00507812500001],[15.783886718750011,78.32705078125005],[17.00292968750003,78.36938476562497],[16.44863281250008,78.50356445312502],[16.78261718750008,78.66362304687505],[15.417382812500023,78.47324218749998],[15.384179687500023,78.77119140625001],[15.01630859375004,78.63012695312497],[14.689257812500017,78.720947265625],[14.638281250000034,78.41459960937502],[14.110449218750063,78.27089843749997],[13.150195312499989,78.2375],[11.365429687500011,78.95039062500004],[12.323437500000068,78.91425781249995],[12.083984375000028,79.26752929687498],[11.579785156250068,79.28349609375005],[11.208105468750034,79.12963867187503],[10.737597656250017,79.52016601562502],[10.804003906250045,79.79877929687504],[11.150390625,79.71699218749998],[11.702343750000011,79.82060546875005],[12.287792968750068,79.713134765625],[12.279980468749983,79.81596679687507],[13.692871093749972,79.860986328125],[13.777539062500011,79.71528320312498],[12.555371093750068,79.56948242187502],[13.333789062500017,79.57480468750006],[14.029589843750017,79.34414062500005],[14.59365234375008,79.79873046875002],[16.34375,78.97612304687502],[15.816113281250011,79.68183593750001],[16.245703125000034,80.04946289062502],[16.786718750000034,79.90673828125]]],[[[32.52597656250006,80.119140625],[31.48193359374997,80.10791015625003],[33.62929687499999,80.21743164062497],[32.52597656250006,80.119140625]]],[[[20.897851562500023,80.24995117187501],[22.289746093749983,80.04921874999997],[22.450781250000034,80.40224609375005],[23.00800781250004,80.473974609375],[23.114550781250074,80.18696289062498],[24.29755859375004,80.36040039062505],[26.86083984375,80.16000976562498],[27.19863281250008,79.90659179687506],[25.641210937500034,79.40302734374995],[23.94775390625,79.19428710937498],[22.903710937500023,79.23066406250001],[22.865527343750045,79.41186523437497],[20.861132812500017,79.39785156249997],[20.128222656250074,79.489599609375],[19.674609375000045,79.591162109375],[20.784082031250023,79.74858398437502],[18.725,79.7607421875],[18.25537109375,79.92919921875003],[18.855957031250057,80.03662109375],[17.91689453125005,80.14311523437502],[19.343359375000063,80.11640624999998],[19.733300781249994,80.47783203124999],[20.897851562500023,80.24995117187501]]]]},"properties":{"name":"Norway","childNum":27}},{"geometry":{"type":"Polygon","coordinates":[[[87.984375,27.133935546874994],[87.9931640625,27.086083984374994],[88.11103515625001,26.928466796875],[88.1572265625,26.807324218749997],[88.16152343750002,26.724804687499997],[88.11152343750001,26.58642578125],[88.05488281250001,26.430029296875],[88.02695312500003,26.39501953125],[87.9951171875,26.382373046874996],[87.28740234374999,26.360302734374997],[87.01640624999999,26.555419921875],[86.70136718750001,26.43505859375],[86.00732421875,26.649365234374997],[85.79453125000003,26.604150390624994],[85.7373046875,26.63974609375],[85.6484375,26.829003906249994],[85.56845703125003,26.83984375],[85.29296875,26.741015625],[85.19179687500002,26.766552734374997],[84.68535156249999,27.041015625],[84.65380859375,27.091699218749994],[84.65478515625,27.203662109374996],[84.64072265625003,27.249853515625],[84.61015624999999,27.298681640625],[84.48085937500002,27.348193359374996],[84.22978515624999,27.42783203125],[84.09101562500001,27.491357421874994],[83.82880859375001,27.377832031249994],[83.74697265625002,27.395947265624997],[83.55166015625002,27.456347656249996],[83.44716796875002,27.46533203125],[83.38398437500001,27.44482421875],[83.36943359374999,27.41025390625],[83.28974609375001,27.370996093749994],[82.7333984375,27.518994140624997],[82.71083984375002,27.5966796875],[82.67734375000003,27.6734375],[82.6298828125,27.687060546874996],[82.45136718750001,27.671826171874997],[82.28769531250003,27.756542968749997],[82.11191406250003,27.864941406249997],[82.03701171875002,27.900585937499997],[81.98769531250002,27.913769531249997],[81.94521484375002,27.899267578125],[81.896875,27.874462890624997],[81.85263671875003,27.867089843749994],[81.1689453125,28.335009765624996],[80.58701171875003,28.649609375],[80.51787109374999,28.665185546874994],[80.49580078125001,28.635791015624996],[80.47910156250003,28.604882812499994],[80.41855468750003,28.612011718749997],[80.32480468750003,28.66640625],[80.2265625,28.723339843749997],[80.07070312500002,28.83017578125],[80.05166015625002,28.8703125],[80.08457031250003,28.994189453124996],[80.13046875000003,29.100390625],[80.16953125000003,29.124316406249996],[80.23300781250003,29.194628906249996],[80.25595703125003,29.318017578124994],[80.2548828125,29.42333984375],[80.31689453125,29.572070312499996],[80.40185546875,29.730273437499996],[80.54902343750001,29.899804687499994],[80.81992187500003,30.119335937499997],[80.84814453125,30.13974609375],[80.90761718750002,30.171923828124996],[80.96611328124999,30.180029296875],[81.17714843750002,30.039892578125],[81.25507812500001,30.093310546874996],[81.41718750000001,30.337597656249997],[81.64189453124999,30.3875],[81.85488281250002,30.36240234375],[82.04335937500002,30.3267578125],[82.220703125,30.063867187499994],[83.15546875000001,29.612646484375],[83.58349609375,29.18359375],[83.93593750000002,29.279492187499997],[84.02197265625,29.253857421874997],[84.10136718749999,29.219970703125],[84.12783203125002,29.156298828124996],[84.17558593749999,29.036376953125],[84.22871093750001,28.911767578124994],[84.796875,28.560205078124994],[84.85507812500003,28.553613281249994],[85.06914062499999,28.609667968749996],[85.12636718750002,28.60263671875],[85.15908203125002,28.592236328124997],[85.16015625,28.571875],[85.12148437500002,28.484277343749994],[85.08857421875001,28.372265625],[85.12246093750002,28.315966796874996],[85.21210937500001,28.292626953124994],[85.41064453125,28.276025390624994],[85.67832031250003,28.27744140625],[85.75947265625001,28.220654296874997],[85.84023437500002,28.1353515625],[85.92167968749999,27.989697265624997],[85.9541015625,27.92822265625],[85.99453125000002,27.910400390625],[86.06416015625001,27.934716796874994],[86.07871093750003,28.08359375],[86.13701171874999,28.11435546875],[86.21796875000001,28.0220703125],[86.32861328125,27.959521484374996],[86.40869140625,27.928662109374997],[86.51689453124999,27.963525390624994],[86.55449218749999,28.085205078125],[86.61445312500001,28.10302734375],[86.69052734375003,28.094921875],[86.71962890625002,28.070654296875],[86.75039062500002,28.0220703125],[86.93378906250001,27.968457031249997],[87.02011718750003,27.928662109374997],[87.14140624999999,27.838330078124997],[87.29072265625001,27.821923828124994],[87.62255859375,27.815185546875],[87.86074218750002,27.886083984375],[88.10976562500002,27.87060546875],[87.984375,27.133935546874994]]]},"properties":{"name":"Nepal","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[169.17822265624997,-52.497265625],[169.12753906250006,-52.570312499999964],[169.02177734375002,-52.49541015624998],[169.17822265624997,-52.497265625]]],[[[166.22109375,-50.76152343749997],[166.2428710937501,-50.84570312499998],[165.88916015624997,-50.80771484374996],[166.10136718750002,-50.538964843750016],[166.26748046875005,-50.558593750000014],[166.22109375,-50.76152343749997]]],[[[168.14492187500005,-46.862207031249966],[168.04316406250004,-46.9326171875],[168.2409179687501,-47.070019531250026],[167.52197265624997,-47.258691406249994],[167.80078125000003,-46.90654296875002],[167.78398437500007,-46.699804687500006],[167.9557617187501,-46.69443359374998],[168.14492187500005,-46.862207031249966]]],[[[166.97949218749997,-45.17968750000003],[167.02265625000004,-45.299804687499986],[166.89267578125012,-45.24052734374999],[166.97949218749997,-45.17968750000003]]],[[[-176.17763671874997,-43.74033203124998],[-176.38173828124997,-43.86679687499998],[-176.40737304687497,-43.7609375],[-176.516552734375,-43.78476562499996],[-176.33359375000003,-44.02529296875004],[-176.51552734374997,-44.11660156249998],[-176.62934570312495,-44.036132812500014],[-176.55512695312504,-43.85195312499998],[-176.84765625000003,-43.82392578125004],[-176.56611328124995,-43.717578125000045],[-176.17763671874997,-43.74033203124998]]],[[[173.91464843750018,-40.86367187500004],[173.78085937500012,-40.921777343749966],[173.964453125,-40.71298828124998],[173.91464843750018,-40.86367187500004]]],[[[173.11533203125006,-41.27929687499997],[173.94716796875005,-40.92412109375],[173.79785156250003,-41.271972656249986],[173.99941406250005,-40.99326171874996],[174.30253906249996,-41.019531249999986],[174.03857421875003,-41.24189453125],[174.37011718750009,-41.1037109375],[174.06933593750009,-41.42949218750002],[174.08369140625015,-41.67080078124998],[174.2831054687501,-41.740625],[173.22119140624997,-42.976562499999986],[172.62402343749997,-43.27246093749996],[172.73476562500005,-43.35478515625003],[172.52666015625002,-43.464746093749966],[172.69345703125006,-43.444335937499986],[172.80703125000005,-43.620996093749994],[173.07324218750003,-43.676171874999966],[173.065625,-43.87460937499998],[172.50273437500002,-43.84365234374998],[172.48037109375,-43.726660156250034],[172.29658203125004,-43.867871093750026],[172.035546875,-43.70175781250002],[172.17978515625006,-43.895996093749986],[171.24072265624997,-44.26416015625003],[171.14628906250002,-44.9123046875],[170.99902343750003,-44.91142578124999],[171.11328125000003,-45.03925781250001],[170.7005859375,-45.68427734374997],[170.77626953125005,-45.870898437499974],[170.4191406250001,-45.94101562499996],[169.68662109375006,-46.55166015625002],[169.34228515625003,-46.62050781250001],[168.38212890625007,-46.60537109374995],[168.1891601562501,-46.362207031249966],[167.8419921875001,-46.366210937499986],[167.539453125,-46.14853515624996],[167.36894531250007,-46.24150390624999],[166.73154296875006,-46.19785156249998],[166.91669921875004,-45.95722656249998],[166.64990234374997,-46.04169921875004],[166.71796875000004,-45.88935546875001],[166.49316406249997,-45.9638671875],[166.48828124999997,-45.83183593750002],[167.0033203125,-45.71210937500004],[166.79765625000002,-45.64560546874999],[166.99082031250012,-45.531738281249986],[166.73398437500012,-45.54355468749999],[166.74306640625,-45.46845703124997],[166.91992187499997,-45.40791015624998],[166.86923828125006,-45.31123046875],[167.15566406250005,-45.410937499999974],[167.23007812500012,-45.29033203125],[167.02587890624997,-45.12363281249998],[167.25947265625004,-45.08222656249997],[167.19453125000004,-44.963476562500034],[167.41074218750006,-44.82792968750003],[167.4662109375,-44.958300781250045],[167.48496093750006,-44.77138671874998],[167.78701171875,-44.59501953125002],[167.90898437500002,-44.66474609375001],[167.85654296875012,-44.50068359374998],[168.45742187500005,-44.030566406250045],[169.17890625000004,-43.9130859375],[169.16953125000006,-43.77705078125],[169.83388671875,-43.53701171875004],[170.24023437499997,-43.163867187500045],[170.39609375000012,-43.18222656249996],[170.30283203125012,-43.10761718750004],[170.61181640625003,-43.091796875000014],[170.5236328125001,-43.00898437500001],[170.6654296875,-42.961230468749974],[170.73525390625005,-43.029785156249986],[170.96992187500004,-42.71835937499996],[171.01171875000003,-42.88505859374999],[171.027734375,-42.696093750000045],[171.31337890625005,-42.460156250000026],[171.48623046875,-41.7947265625],[171.94804687500002,-41.53867187499996],[172.13945312500002,-40.947265625000014],[172.640625,-40.51826171875001],[172.94365234375007,-40.51875],[172.73261718750004,-40.54375],[172.70439453125002,-40.6677734375],[172.988671875,-40.84824218749999],[173.11533203125006,-41.27929687499997]]],[[[175.54316406250015,-36.279296874999986],[175.34619140624997,-36.217773437499986],[175.3895507812501,-36.07773437499996],[175.54316406250015,-36.279296874999986]]],[[[173.26943359375,-34.93476562499998],[173.44785156250012,-34.844335937500034],[173.47265625000003,-34.94697265624998],[174.10400390625003,-35.14287109375002],[174.1431640625,-35.3],[174.32031250000003,-35.246679687500034],[174.58066406250018,-35.78554687500004],[174.39580078124996,-35.79736328124996],[174.8021484375,-36.30947265625001],[174.72246093750007,-36.84121093749998],[175.29951171875004,-36.99326171874996],[175.38535156250012,-37.206933593749966],[175.54248046874997,-37.2013671875],[175.46083984375005,-36.475683593750034],[175.77216796875004,-36.73515625],[176.10839843749997,-37.64511718749998],[177.27402343750012,-37.993457031249974],[178.0091796875,-37.55488281249998],[178.53623046875006,-37.69208984375004],[178.26767578125006,-38.551171875],[177.976171875,-38.72226562500005],[177.90878906250012,-39.23955078125],[177.52294921875003,-39.07382812499999],[177.07675781250012,-39.22177734375002],[176.93925781249996,-39.55527343750002],[177.10986328125009,-39.673144531250045],[176.8421875000001,-40.15781250000002],[175.98291015625003,-41.21328125000002],[175.30976562499998,-41.610644531249974],[175.16562500000012,-41.41738281249995],[174.88134765624997,-41.42402343749997],[174.8656250000001,-41.223046874999966],[174.63535156250012,-41.28945312499999],[175.1625,-40.62158203125],[175.25410156250004,-40.28935546875],[175.1559570312501,-40.11494140625],[175.00927734375009,-39.95214843749996],[173.93437500000013,-39.50908203125002],[173.76367187499997,-39.31875],[173.84433593750006,-39.13935546875001],[174.39843749999997,-38.96259765624998],[174.59736328124998,-38.78505859374995],[174.80166015625005,-37.895507812500014],[174.92802734375002,-37.80449218750003],[174.58583984374994,-37.09775390625002],[174.73427734375,-37.21523437499998],[174.92890625000004,-37.084765625000045],[174.78203125000013,-36.94375],[174.47558593750009,-36.94189453124997],[174.1888671875001,-36.492285156250034],[174.4015625000001,-36.60195312499999],[174.39277343750004,-36.24003906249999],[174.26787109375002,-36.16308593750003],[174.25371093749996,-36.24912109374998],[174.03642578125013,-36.12246093750001],[173.91445312499994,-35.908691406249986],[173.91728515625002,-36.01816406249999],[174.16640624999994,-36.327636718749986],[174.05468749999991,-36.35976562500004],[173.41220703125012,-35.542578125],[173.62617187500004,-35.31914062499996],[173.3763671875001,-35.50009765624996],[173.31396484375003,-35.44335937499996],[173.11669921874997,-35.205273437500026],[173.190625,-35.01621093749998],[172.70595703125005,-34.45517578124998],[173.04394531249997,-34.429101562499994],[172.96376953125,-34.53515625000003],[173.26943359375,-34.93476562499998]]]]},"properties":{"name":"New Zealand","childNum":9}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[58.722070312499994,20.21875],[58.640917968750074,20.210693359375057],[58.64121093750006,20.33735351562501],[58.884375,20.680566406250023],[58.95078125000006,20.516162109375017],[58.722070312499994,20.21875]]],[[[56.38798828125002,24.97919921875004],[56.640625,24.4703125],[57.12304687500003,23.980712890625],[58.773046875,23.517187499999977],[59.42939453125004,22.660839843749955],[59.82324218749997,22.50898437500004],[59.8,22.21992187500001],[59.37148437500005,21.498828125000017],[58.89570312500004,21.11279296874997],[58.47421875000006,20.406884765624966],[58.20898437500003,20.423974609374994],[58.245019531249994,20.599218749999977],[58.16943359375003,20.58950195312505],[57.86181640624997,20.24414062500003],[57.71416015625002,19.678417968749983],[57.81162109375006,19.01708984374997],[56.825976562500074,18.753515625],[56.3834960937501,17.98798828125001],[55.479101562500006,17.84326171875003],[55.25537109375003,17.58564453125004],[55.275195312500074,17.320898437500006],[55.06416015625004,17.038916015625034],[54.06816406250002,17.005517578124966],[53.60986328124997,16.75996093750004],[53.08564453125004,16.648388671874955],[51.977636718750006,18.996142578125074],[54.97734375000002,19.995947265625006],[55.64101562499999,22.001855468749994],[55.185839843750074,22.7041015625],[55.1999023437501,23.034765625000034],[55.53164062499999,23.81904296875001],[55.4684570312501,23.94111328125001],[55.98515625000002,24.063378906249966],[55.92861328125005,24.215136718750074],[55.76083984375006,24.24267578125],[55.795703125000074,24.868115234374955],[56.00058593750006,24.953222656249977],[56.06386718750005,24.73876953125],[56.38798828125002,24.97919921875004]]],[[[56.29785156250003,25.650683593750045],[56.144628906250006,25.690527343750006],[56.16748046875003,26.047460937499977],[56.08046875,26.06264648437505],[56.41308593749997,26.351171875000034],[56.29785156250003,25.650683593750045]]]]},"properties":{"name":"Oman","childNum":3}},{"geometry":{"type":"Polygon","coordinates":[[[73.08961802927895,36.86435907947333],[73.08203125000107,36.43949943991182],[72.31128647748268,35.77290936638241],[73.13410859949555,34.82510160558277],[73.19895048106557,33.88770931468204],[74.00809389139292,33.25375789331485],[73.98984375,33.22119140625],[74.30361328125002,32.991796875],[74.30546875000002,32.810449218749994],[74.35458984375,32.768701171874994],[74.58828125000002,32.753222656249996],[74.632421875,32.770898437499994],[74.66328125000001,32.757666015625],[74.64335937500002,32.607714843749996],[74.68574218750001,32.493798828124994],[74.78886718750002,32.4578125],[74.9873046875,32.462207031249996],[75.33349609375,32.279199218749994],[75.25410156250001,32.14033203125],[75.13876953125,32.104785156249996],[75.07148437500001,32.08935546875],[74.73945312500001,31.948828125],[74.6357421875,31.88974609375],[74.55556640625002,31.818554687499997],[74.5259765625,31.76513671875],[74.50996093750001,31.712939453124996],[74.58183593750002,31.52392578125],[74.59394531250001,31.465380859374996],[74.53496093750002,31.261376953124994],[74.51767578125,31.185595703124996],[74.6103515625,31.112841796874996],[74.62578125000002,31.06875],[74.6328125,31.03466796875],[74.509765625,30.959667968749997],[74.38037109375,30.893408203125],[74.33935546875,30.8935546875],[74.00898437500001,30.519677734374994],[73.89931640625002,30.435351562499996],[73.88271484375002,30.3521484375],[73.92460937500002,30.28164062499999],[73.93339843750002,30.222070312499994],[73.88652343750002,30.162011718749994],[73.8091796875,30.093359375],[73.38164062500002,29.934375],[72.9033203125,29.028759765624997],[72.34189453125,28.751904296874997],[72.2919921875,28.697265625],[72.128515625,28.346337890624994],[71.94804687500002,28.177294921874996],[71.88886718750001,28.0474609375],[71.87031250000001,27.9625],[71.54296875,27.869873046875],[71.18476562500001,27.831640625],[70.87490234375002,27.714453125],[70.79794921875,27.709619140624994],[70.69160156250001,27.768994140624997],[70.62910156250001,27.937451171874997],[70.40371093750002,28.025048828124994],[70.24433593750001,27.934130859374996],[70.1939453125,27.894873046875],[70.14453125,27.849023437499994],[70.0498046875,27.694726562499994],[69.89628906250002,27.4736328125],[69.56796875,27.174609375],[69.47001953125002,26.804443359375],[70.11464843750002,26.548046875],[70.14921875000002,26.347558593749994],[70.1001953125,25.910058593749994],[70.2646484375,25.70654296875],[70.3251953125,25.685742187499997],[70.44853515625002,25.681347656249997],[70.505859375,25.685302734375],[70.56953125000001,25.705957031249994],[70.6484375,25.666943359374997],[70.65205078125001,25.422900390625003],[70.87773437500002,25.06298828125],[70.95087890625001,24.8916015625],[71.02070312500001,24.75766601562499],[71.0478515625,24.687744140625],[71.00234375000002,24.65390625],[70.97636718750002,24.61875],[70.96982421875,24.571875],[71.04531250000002,24.429980468750003],[71.04404296875,24.400097656249997],[70.98281250000002,24.361035156249997],[70.928125,24.362353515625003],[70.88623046875,24.34375],[70.80507812500002,24.261962890625],[70.76728515625001,24.245410156250003],[70.71630859375,24.237988281249997],[70.65947265625002,24.24609375],[70.57929687500001,24.279052734375],[70.55585937500001,24.331103515625003],[70.5650390625,24.385791015625003],[70.54677734375002,24.41831054687499],[70.2890625,24.35629882812499],[70.0982421875,24.2875],[69.80517578125,24.165234375],[69.71621093750002,24.172607421875],[69.63417968750002,24.22519531249999],[69.5591796875,24.273095703124994],[69.44345703125,24.275390625],[69.23505859375001,24.268261718749997],[69.11953125000002,24.26865234374999],[69.05156250000002,24.286328125],[68.98457031250001,24.273095703124994],[68.90078125000002,24.292431640624997],[68.86347656250001,24.266503906249994],[68.82832031250001,24.26401367187499],[68.78115234375002,24.313720703125],[68.75898437500001,24.30722656249999],[68.73964843750002,24.2919921875],[68.728125,24.265625],[68.72412109375,23.96469726562499],[68.48867187500002,23.967236328124997],[68.38125,23.950878906249997],[68.28251953125002,23.927978515625],[68.1650390625,23.857324218749994],[68.11552734375002,23.753369140624997],[67.8599609375,23.90268554687499],[67.66845703125,23.810986328124997],[67.309375,24.1748046875],[67.171484375,24.756103515625],[66.70302734375002,24.8609375],[66.69863281250002,25.226318359375],[66.32421875,25.601806640625],[66.13115234375002,25.49326171874999],[66.46767578125002,25.4453125],[64.77666015625002,25.307324218749997],[64.65898437500002,25.18408203125],[64.059375,25.40292968749999],[63.556640625,25.353173828124994],[63.49140625000001,25.210839843749994],[61.56689453125,25.186328125],[61.587890625,25.20234375],[61.61542968750001,25.2861328125],[61.64013671875,25.584619140624994],[61.67138671875,25.6923828125],[61.66181640625001,25.751269531250003],[61.66865234375001,25.768994140624997],[61.73769531250002,25.82109375],[61.75439453125,25.84335937499999],[61.78076171875,25.995849609375],[61.80996093750002,26.165283203125],[61.842382812500006,26.225927734375],[62.1259765625,26.368994140625],[62.239355468750006,26.35703125],[62.31230468750002,26.490869140624994],[63.168066406250006,26.665576171874996],[63.186132812500006,26.837597656249997],[63.24160156250002,26.86474609375],[63.25039062500002,26.879248046875],[63.24208984375002,27.077685546874996],[63.30517578125,27.124560546874996],[63.30156250000002,27.15146484375],[63.25625,27.207910156249994],[63.19609375000002,27.243945312499996],[63.16679687500002,27.252490234374996],[62.75273437500002,27.265625],[62.782324218750006,27.800537109375],[62.7625,28.202050781249994],[61.88984375000001,28.546533203124994],[61.15214843750002,29.542724609375],[61.0341796875,29.663427734375],[60.843359375,29.858691406249996],[61.22441406250002,29.749414062499994],[62.0009765625,29.530419921874994],[62.4765625,29.408349609374994],[63.56757812500001,29.497998046874997],[64.09873046875,29.391943359375],[64.39375,29.544335937499994],[65.09550781250002,29.559472656249994],[66.23125,29.86572265625],[66.346875,30.802783203124996],[66.82929687500001,31.263671875],[67.45283203125001,31.234619140625],[67.737890625,31.343945312499997],[67.57822265625,31.506494140624994],[68.16103515625002,31.802978515625],[68.59765625,31.802978515625],[68.86894531250002,31.634228515624997],[69.279296875,31.936816406249996],[69.24140625000001,32.433544921875],[69.5015625,33.020068359374996],[70.26113281250002,33.289013671875],[69.8896484375,34.007275390625],[70.65400390625001,33.952294921874994],[71.05156250000002,34.049707031249994],[71.095703125,34.369433593749996],[70.965625,34.53037109375],[71.62050781250002,35.183007812499994],[71.57197265625001,35.546826171875],[71.18505859375,36.04208984375],[71.23291015625,36.12177734375],[72.24980468750002,36.734716796875],[73.08961802927895,36.86435907947333]]]},"properties":{"name":"Pakistan","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-81.60327148437497,7.332812499999989],[-81.85205078125003,7.453320312500026],[-81.812158203125,7.59238281250002],[-81.72875976562494,7.62119140625002],[-81.60327148437497,7.332812499999989]]],[[[-78.89833984375002,8.27426757812502],[-78.960595703125,8.435839843749989],[-78.88325195312495,8.460253906249989],[-78.89833984375002,8.27426757812502]]],[[[-77.37421874999993,8.65830078125002],[-77.47851562499994,8.498437500000037],[-77.19599609374995,7.972460937500003],[-77.53828124999995,7.56625976562502],[-77.76191406249995,7.698828125000034],[-77.90117187499999,7.229345703125048],[-78.42158203124995,8.060986328125011],[-78.28735351562497,8.091796874999972],[-78.14189453125002,8.386083984374977],[-77.76054687499993,8.133251953124983],[-78.09946289062498,8.496972656250009],[-78.22304687500002,8.396630859374994],[-78.39921874999993,8.505664062500003],[-78.40986328124998,8.35532226562502],[-78.51406249999997,8.628173828125],[-79.08637695312495,8.997167968750034],[-79.50708007812494,8.97006835937502],[-79.68745117187493,8.850976562500009],[-79.81591796875,8.639208984375031],[-79.75043945312498,8.595507812500017],[-80.458984375,8.213867187499972],[-80.45810546875,8.077050781249994],[-80.01123046875,7.500048828125031],[-80.66669921874995,7.225683593750006],[-80.90122070312503,7.277148437500017],[-81.06386718749994,7.89975585937502],[-81.26840820312495,7.625488281250014],[-81.50415039062503,7.721191406249972],[-81.72763671875,8.137548828124977],[-82.15986328124995,8.19482421875],[-82.23544921874998,8.311035156250057],[-82.67954101562503,8.321972656249969],[-82.86611328124994,8.246337890625014],[-82.87934570312498,8.07065429687502],[-83.02734375,8.337744140624991],[-82.86162109374999,8.453515625000037],[-82.84477539062493,8.489355468749963],[-82.85571289062494,8.635302734375031],[-82.91704101562502,8.740332031250034],[-82.88198242187497,8.805322265625037],[-82.72783203125002,8.916064453125031],[-82.78305664062498,8.990283203124974],[-82.88134765625003,9.055859375000011],[-82.94033203124997,9.060107421874989],[-82.93984374999994,9.449169921875026],[-82.92504882812494,9.469042968749989],[-82.88896484374999,9.481005859375017],[-82.86015625,9.511474609375014],[-82.84399414062497,9.570800781250014],[-82.801025390625,9.591796875000028],[-82.64409179687502,9.505859375000028],[-82.56357421875003,9.576660156249972],[-82.50034179687503,9.523242187500017],[-82.37080078124993,9.428564453124991],[-82.33974609375,9.209179687499983],[-82.18813476562502,9.191748046874977],[-82.24418945312499,9.031494140625014],[-82.07788085937503,8.93486328124996],[-81.78022460937495,8.957226562499983],[-81.89448242187495,9.140429687500003],[-81.35478515624996,8.78056640624996],[-80.83867187499999,8.887207031250014],[-80.12709960937497,9.20991210937504],[-79.57729492187497,9.597851562500026],[-78.08276367187494,9.236279296874997],[-77.37421874999993,8.65830078125002]]]]},"properties":{"name":"Panama","childNum":3}},{"geometry":{"type":"Polygon","coordinates":[[[-73.137353515625,-6.4658203125],[-73.75810546874999,-6.90576171875],[-73.79301757812499,-7.135058593750003],[-73.758203125,-7.172753906250009],[-73.72041015625,-7.309277343750011],[-73.964306640625,-7.37890625],[-73.95849609375,-7.506640625],[-73.98173828124999,-7.535742187500006],[-74.00205078124999,-7.556054687500009],[-73.98173828124999,-7.585058593750006],[-73.946875,-7.611230468750009],[-73.89462890624999,-7.65478515625],[-73.82207031249999,-7.738964843750011],[-73.76689453124999,-7.753515625],[-73.72041015625,-7.782519531250003],[-73.73203125,-7.875390625],[-73.54912109374999,-8.345800781250006],[-73.39814453125,-8.458984375],[-73.36040039062499,-8.479296875],[-73.351708984375,-8.51416015625],[-73.35673828124999,-8.566992187500006],[-73.30244140625,-8.654003906250011],[-73.203125,-8.719335937500006],[-73.0705078125,-8.8828125],[-72.9740234375,-8.9931640625],[-72.970361328125,-9.1201171875],[-73.08984375,-9.265722656250006],[-73.209423828125,-9.411425781250003],[-72.379052734375,-9.51015625],[-72.181591796875,-10.003710937500003],[-71.33940429687499,-9.988574218750003],[-71.11528320312499,-9.852441406250009],[-71.041748046875,-9.81875],[-70.6369140625,-9.478222656250011],[-70.60791015625,-9.463671875],[-70.54111328124999,-9.4375],[-70.57016601562499,-9.48984375],[-70.592236328125,-9.54345703125],[-70.59916992187499,-9.620507812500009],[-70.642333984375,-11.01025390625],[-70.59653320312499,-10.976855468750003],[-70.53325195312499,-10.946875],[-70.45087890625,-11.024804687500009],[-70.39228515625,-11.05859375],[-70.3419921875,-11.066699218750003],[-70.29038085937499,-11.064257812500003],[-70.22006835937499,-11.04765625],[-70.06630859375,-10.982421875],[-69.9603515625,-10.929882812500011],[-69.839794921875,-10.933398437500003],[-69.6740234375,-10.9541015625],[-69.57861328125,-10.951757812500006],[-68.68525390625,-12.501953125],[-68.97861328124999,-12.880078125000011],[-69.07412109375,-13.682812500000011],[-68.87089843749999,-14.169726562500003],[-69.35947265624999,-14.7953125],[-69.37470703125,-14.962988281250006],[-69.17246093749999,-15.236621093750003],[-69.4208984375,-15.640625],[-69.21757812499999,-16.14912109375001],[-68.8427734375,-16.337890625],[-69.03291015625,-16.47597656250001],[-69.020703125,-16.6421875],[-69.62485351562499,-17.2001953125],[-69.645703125,-17.24853515625],[-69.521923828125,-17.388964843750003],[-69.510986328125,-17.46035156250001],[-69.51108398437499,-17.5048828125],[-69.5109375,-17.50605468750001],[-69.58642578125,-17.5732421875],[-69.684765625,-17.64980468750001],[-69.85209960937499,-17.70380859375001],[-69.80258789062499,-17.990234375],[-69.92636718749999,-18.2060546875],[-70.41826171874999,-18.34560546875001],[-71.33696289062499,-17.68251953125001],[-71.5322265625,-17.29433593750001],[-72.46767578125,-16.708105468750006],[-73.727685546875,-16.20166015625],[-75.104248046875,-15.411914062500003],[-75.533642578125,-14.89921875],[-75.93388671874999,-14.63359375],[-76.37646484375,-13.863085937500003],[-76.259228515625,-13.802832031250006],[-76.2236328125,-13.371191406250006],[-76.83212890624999,-12.348730468750006],[-77.152734375,-12.060351562500003],[-77.2203125,-11.663378906250003],[-77.633203125,-11.287792968750011],[-77.736083984375,-10.83671875],[-78.18559570312499,-10.089062500000011],[-78.76225585937499,-8.616992187500003],[-79.37724609374999,-7.835546875],[-79.99497070312499,-6.768945312500009],[-81.142041015625,-6.056738281250006],[-81.164306640625,-5.875292968750003],[-80.9306640625,-5.8408203125],[-80.88193359374999,-5.635058593750003],[-81.33662109375,-4.66953125],[-81.283203125,-4.322265625],[-80.503662109375,-3.49609375],[-80.324658203125,-3.387890625000011],[-80.24375,-3.576757812500006],[-80.19414062499999,-3.905859375],[-80.23051757812499,-3.924023437500011],[-80.26689453124999,-3.948828125],[-80.30327148437499,-4.005078125000011],[-80.43720703125,-3.978613281250006],[-80.49013671875,-4.010058593750003],[-80.510009765625,-4.069531250000011],[-80.49345703124999,-4.119140625],[-80.4884765625,-4.16552734375],[-80.453759765625,-4.205175781250006],[-80.35288085937499,-4.20849609375],[-80.44384765625,-4.335839843750009],[-80.4884765625,-4.393652343750006],[-80.47856445312499,-4.430078125],[-80.42416992187499,-4.46142578125],[-80.38349609375,-4.463671875],[-80.293359375,-4.416796875],[-80.1974609375,-4.31103515625],[-80.13955078125,-4.296093750000011],[-80.06352539062499,-4.327539062500009],[-79.962890625,-4.390332031250011],[-79.8451171875,-4.445898437500006],[-79.797265625,-4.476367187500003],[-79.71098632812499,-4.467578125],[-79.63852539062499,-4.454882812500003],[-79.57768554687499,-4.500585937500006],[-79.51616210937499,-4.539160156250006],[-79.501904296875,-4.670605468750011],[-79.45576171875,-4.766210937500006],[-79.3994140625,-4.840039062500011],[-79.33095703125,-4.927832031250006],[-79.26811523437499,-4.957617187500006],[-79.186669921875,-4.958203125000011],[-79.07626953124999,-4.990625],[-79.03330078124999,-4.969140625],[-78.995263671875,-4.908007812500003],[-78.97539062499999,-4.873242187500011],[-78.919189453125,-4.8583984375],[-78.92578125,-4.770703125000011],[-78.9076171875,-4.714453125],[-78.8615234375,-4.6650390625],[-78.68603515625,-4.562402343750009],[-78.64799804687499,-4.248144531250006],[-78.345361328125,-3.397363281250009],[-78.240380859375,-3.472558593750009],[-77.860595703125,-2.981640625000011],[-76.6791015625,-2.562597656250006],[-76.089794921875,-2.133105468750003],[-75.570556640625,-1.53125],[-75.42041015625,-0.962207031250003],[-75.40805664062499,-0.92431640625],[-75.24960937499999,-0.951855468750011],[-75.259375,-0.590136718750003],[-75.42470703125,-0.408886718750011],[-75.49106445312499,-0.248339843750003],[-75.56059570312499,-0.200097656250009],[-75.63203125,-0.157617187500009],[-75.62626953124999,-0.122851562500003],[-75.340478515625,-0.1421875],[-75.13837890625,-0.050488281250011],[-74.8017578125,-0.200097656250009],[-74.78046875,-0.24453125],[-74.75537109375,-0.298632812500003],[-74.691650390625,-0.335253906250003],[-74.616357421875,-0.370019531250009],[-74.555078125,-0.429882812500011],[-74.5138671875,-0.470117187500009],[-74.46518554687499,-0.517675781250006],[-74.41787109375,-0.580664062500006],[-74.334423828125,-0.850878906250003],[-74.28388671875,-0.927832031250006],[-74.24638671874999,-0.970605468750009],[-74.05439453125,-1.028613281250003],[-73.98681640625,-1.09814453125],[-73.926953125,-1.125195312500011],[-73.86318359375,-1.196679687500009],[-73.664306640625,-1.248828125],[-73.4962890625,-1.693066406250011],[-73.19697265625,-1.830273437500011],[-73.1544921875,-2.278222656250009],[-72.9896484375,-2.339746093750009],[-72.94111328125,-2.39404296875],[-72.21845703125,-2.400488281250006],[-71.98427734375,-2.3265625],[-71.93247070312499,-2.288671875],[-71.86728515624999,-2.227734375000011],[-71.802734375,-2.166308593750003],[-71.75253906249999,-2.152734375],[-71.55947265625,-2.22421875],[-71.39697265625,-2.334082031250006],[-71.19638671874999,-2.313085937500006],[-71.11337890624999,-2.245410156250003],[-71.027294921875,-2.225781250000011],[-70.96855468749999,-2.206835937500003],[-70.70537109374999,-2.341992187500011],[-70.64799804687499,-2.40576171875],[-70.57587890625,-2.418261718750003],[-70.29462890625,-2.552539062500003],[-70.24443359374999,-2.606542968750006],[-70.16474609375,-2.639843750000011],[-70.095849609375,-2.658203125],[-70.735107421875,-3.781542968750003],[-70.5296875,-3.866406250000011],[-70.48583984375,-3.869335937500011],[-70.42109375,-3.849609375],[-70.37919921874999,-3.81875],[-70.339501953125,-3.814355468750009],[-70.2984375,-3.84423828125],[-70.24028320312499,-3.882714843750009],[-70.16752929687499,-4.050195312500009],[-70.0171875,-4.162011718750009],[-69.96591796874999,-4.2359375],[-69.97202148437499,-4.301171875],[-70.00395507812499,-4.327246093750006],[-70.05332031249999,-4.333105468750006],[-70.12880859375,-4.28662109375],[-70.23916015625,-4.301171875],[-70.31689453125,-4.246972656250009],[-70.34365234375,-4.193652343750003],[-70.40463867187499,-4.150097656250011],[-70.5306640625,-4.167578125],[-70.72158203125,-4.158886718750011],[-70.79951171875,-4.17333984375],[-70.97368164062499,-4.350488281250009],[-71.8447265625,-4.50439453125],[-72.256787109375,-4.748925781250009],[-72.35283203124999,-4.786035156250009],[-72.468994140625,-4.901269531250009],[-72.608349609375,-5.009570312500003],[-72.69873046875,-5.0671875],[-72.83193359375,-5.09375],[-72.88706054687499,-5.122753906250011],[-72.9798828125,-5.634863281250006],[-73.16289062499999,-5.933398437500003],[-73.209375,-6.028710937500009],[-73.235546875,-6.0984375],[-73.137353515625,-6.4658203125]]]},"properties":{"name":"Peru","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[120.250390625,5.256591796875043],[119.82148437500004,5.06953125000004],[120.1652343750001,5.332421875000037],[120.250390625,5.256591796875043]]],[[[121.159375,6.075634765625011],[121.41103515625005,5.939843749999966],[121.29443359374997,5.869970703125034],[120.8763671875,5.95263671875],[121.159375,6.075634765625011]]],[[[122.09287109375012,6.428320312500006],[121.95917968750004,6.415820312500045],[121.83203125000003,6.664062499999986],[122.0583007812501,6.740722656249972],[122.32353515625002,6.602246093750011],[122.09287109375012,6.428320312500006]]],[[[122.93710937500006,7.409130859374983],[122.80468750000003,7.315966796875017],[122.82216796875,7.428466796875014],[122.93710937500006,7.409130859374983]]],[[[117.07988281250007,7.883398437499977],[117.02832031249997,7.807519531249966],[116.96953125000007,7.894921875],[116.9935546875,8.050537109375014],[117.07705078125,8.069140624999974],[117.07988281250007,7.883398437499977]]],[[[117.35527343750002,8.21464843749996],[117.28701171875,8.191015625000034],[117.28085937500006,8.314990234374974],[117.35527343750002,8.21464843749996]]],[[[124.80664062500003,9.142626953125003],[124.66582031250002,9.132324218750043],[124.65332031250003,9.225830078125],[124.80664062500003,9.142626953125003]]],[[[123.69765625000005,9.237304687500028],[123.61445312500004,9.103320312499989],[123.49345703125002,9.192089843750054],[123.69765625000005,9.237304687500028]]],[[[126.00595703125006,9.320947265625009],[126.19335937499997,9.276708984374963],[126.30458984375,8.952050781249994],[126.13955078125005,8.59565429687504],[126.36533203125012,8.483886718750014],[126.45869140625004,8.20283203125004],[126.43535156250002,7.832812499999974],[126.57011718750002,7.677246093749986],[126.58154296875003,7.247753906249969],[126.1920898437501,6.852539062500014],[126.18935546875,6.309667968749991],[125.82441406250004,7.333300781249989],[125.68925781250007,7.263037109374977],[125.38066406250007,6.689941406250014],[125.58847656250012,6.465771484374997],[125.66796874999997,5.97866210937498],[125.34648437500002,5.598974609374977],[125.23154296875006,6.069531250000011],[124.92734375000006,5.875341796874977],[124.21279296875,6.233251953124977],[124.078125,6.404443359375037],[123.98525390625,6.993701171875003],[124.20664062500006,7.396435546874983],[123.66582031250002,7.817773437500023],[123.49306640625,7.80791015624996],[123.39091796875007,7.407519531250017],[123.09667968749997,7.700439453125],[122.8429687500001,7.529296875000043],[122.79179687500002,7.72246093749996],[122.61621093749997,7.763134765624983],[122.14248046875,6.949658203124997],[121.96425781250005,6.96821289062504],[121.92460937500002,7.199511718750003],[122.24335937500004,7.945117187500031],[122.91113281250003,8.156445312499997],[123.05058593750002,8.433935546875048],[123.43457031249997,8.70332031250004],[123.84921875000006,8.432714843749977],[123.79941406250006,8.049121093749989],[124.19765625,8.229541015624974],[124.40488281250006,8.599853515625014],[124.7311523437501,8.562988281250043],[124.86894531250002,8.972265625000034],[125.141015625,8.86875],[125.20966796875004,9.027148437500017],[125.49873046875004,9.014746093749977],[125.47128906250006,9.756787109374983],[126.00595703125006,9.320947265625009]]],[[[126.059375,9.766210937500034],[125.99121093750003,9.838525390625023],[126.07382812500006,10.059228515625051],[126.1725585937501,9.79995117187498],[126.059375,9.766210937500034]]],[[[124.59384765625006,9.787207031249963],[124.1224609375,9.599316406249969],[123.93564453125012,9.623974609375011],[123.81718750000002,9.817382812499986],[124.17285156250003,10.135205078124983],[124.33574218750002,10.159912109375043],[124.57714843749997,10.026708984374991],[124.59384765625006,9.787207031249963]]],[[[125.69023437500007,9.914453125000037],[125.49482421875004,10.118701171875003],[125.66679687500002,10.440136718750026],[125.69023437500007,9.914453125000037]]],[[[119.91621093750004,10.485986328125037],[119.79316406250004,10.455273437499997],[119.85205078124997,10.64013671875],[120.00839843750012,10.570117187500031],[119.91621093750004,10.485986328125037]]],[[[122.64951171875012,10.472705078125003],[122.53837890625002,10.424951171875037],[122.5375,10.607568359375023],[122.70126953125006,10.740625],[122.64951171875012,10.472705078125003]]],[[[123.13085937500003,9.064111328124994],[122.99472656250006,9.058837890624986],[122.8666015625,9.319824218750043],[122.5625,9.482812500000037],[122.39951171875006,9.823046874999989],[122.47148437500007,9.961523437500034],[122.85556640625006,10.0869140625],[122.81699218750012,10.503808593750023],[122.98330078125,10.886621093750037],[123.25664062500007,10.99394531249996],[123.51064453125005,10.923046875],[123.5675781250001,10.780761718750057],[123.16201171875,9.864257812500028],[123.1498046875,9.606152343750026],[123.32050781250004,9.27294921875],[123.13085937500003,9.064111328124994]]],[[[123.37031250000004,9.449609375000023],[123.38623046874997,9.967089843750017],[124.03886718750002,11.273535156249991],[124.00498046875012,10.40009765625004],[123.70048828125007,10.128320312500009],[123.37031250000004,9.449609375000023]]],[[[123.75703125000004,11.28330078125002],[123.815625,11.15073242187502],[123.73671875,11.151464843749991],[123.75703125000004,11.28330078125002]]],[[[117.31113281250012,8.439599609375051],[117.21855468750007,8.367285156249963],[117.34990234375002,8.713574218749997],[119.22382812500004,10.477294921875043],[119.30566406250003,10.9736328125],[119.55332031250012,11.31352539062496],[119.52666015625002,10.953173828125003],[119.68691406250005,10.500341796875034],[119.36933593750004,10.327294921875037],[119.19150390625012,10.061083984374989],[118.78212890625005,9.91611328125002],[118.4349609375,9.256005859375009],[117.31113281250012,8.439599609375051]]],[[[119.86142578125006,11.52534179687504],[119.83066406250012,11.375683593750011],[119.72998046874997,11.431933593750017],[119.86142578125006,11.52534179687504]]],[[[124.574609375,11.343066406250031],[124.92998046875002,11.372851562499974],[125.02656250000004,11.21171875],[125.01318359374997,10.785693359374989],[125.26845703125005,10.307714843750048],[125.14257812499997,10.189453125000028],[124.9875,10.36757812499998],[125.02656250000004,10.033105468749966],[124.78076171874997,10.16806640625002],[124.78671875000012,10.781396484375009],[124.66269531250006,10.961962890625017],[124.44550781250004,10.923583984375014],[124.33066406250012,11.535205078125003],[124.574609375,11.343066406250031]]],[[[124.60839843750003,11.492187500000043],[124.48349609375006,11.485839843749986],[124.36035156250003,11.665917968749994],[124.5109375000001,11.687109375000048],[124.60839843750003,11.492187500000043]]],[[[122.49619140625006,11.615087890625034],[122.83808593750004,11.595654296874983],[122.89453125000003,11.44130859374998],[123.15830078125012,11.53554687499999],[123.11953125,11.286816406250026],[122.8029296875001,10.99003906249996],[122.76992187500005,10.823828125000034],[121.95400390625,10.444384765625003],[122.10351562499997,11.64291992187502],[121.91601562499997,11.854345703125006],[122.02919921875005,11.895410156250023],[122.49619140625006,11.615087890625034]]],[[[120.03876953125004,11.703320312499969],[119.94492187500006,11.690722656249989],[119.86093750000006,11.953955078124963],[120.03593750000002,11.917236328125028],[120.03876953125004,11.703320312499969]]],[[[120.1,12.167675781249983],[120.22822265625004,12.219824218750034],[120.31455078125012,12.012402343749969],[120.01054687500002,12.008251953125011],[119.88574218749997,12.299853515625003],[120.1,12.167675781249983]]],[[[122.65449218750004,12.309033203125011],[122.42294921875006,12.455078125],[122.60361328125006,12.49160156249998],[122.65449218750004,12.309033203125011]]],[[[125.23955078125002,12.527880859375003],[125.32021484375,12.321826171875031],[125.53564453125003,12.191406250000028],[125.49179687500006,11.594335937499977],[125.57353515625002,11.238232421874997],[125.73564453125002,11.049609375000017],[125.23339843749997,11.145068359375017],[125.03427734375012,11.341259765625026],[124.91699218750003,11.558398437500031],[124.99501953125,11.764941406250003],[124.445703125,12.152783203124969],[124.29472656250007,12.569335937500014],[125.23955078125002,12.527880859375003]]],[[[123.71660156250007,12.287353515625028],[124.04033203125002,11.966796875],[124.04550781250012,11.752441406250028],[123.47373046875006,12.21665039062502],[123.15781250000012,11.925634765624963],[123.23642578125012,12.583496093750057],[123.71660156250007,12.287353515625028]]],[[[122.09404296875002,12.354882812500023],[122.01396484375002,12.105615234375037],[121.9232421875,12.331298828125014],[122.00156250000006,12.598535156250009],[122.14501953124997,12.652636718750017],[122.09404296875002,12.354882812500023]]],[[[123.77539062499997,12.453906250000031],[123.77910156250002,12.366259765625031],[123.62148437500005,12.67490234375002],[123.77539062499997,12.453906250000031]]],[[[123.28183593750006,12.85341796874998],[123.36718750000003,12.70083007812498],[122.95751953124997,13.107177734374986],[123.28183593750006,12.85341796874998]]],[[[120.70439453125002,13.479492187499986],[121.20273437500006,13.432324218749969],[121.52275390625007,13.131201171874991],[121.540625,12.63818359375],[121.39433593750002,12.300585937499974],[121.23671875000005,12.218798828125003],[120.92216796875002,12.51162109374998],[120.65136718749997,13.169140625],[120.33847656250012,13.412353515624986],[120.40126953125,13.517041015624997],[120.70439453125002,13.479492187499986]]],[[[121.91484375000002,13.540332031250031],[122.11455078125002,13.463183593750031],[122.00488281249997,13.204980468750009],[121.82919921875006,13.328613281249972],[121.91484375000002,13.540332031250031]]],[[[124.35361328125006,13.632226562500009],[124.17539062500012,13.531542968750017],[124.03886718750002,13.663134765625003],[124.22490234375007,14.077587890624969],[124.41718750000004,13.871044921874997],[124.35361328125006,13.632226562500009]]],[[[122.03349609375002,15.005029296875009],[121.93300781250005,14.656054687500045],[121.83984374999997,15.038134765625003],[122.03349609375002,15.005029296875009]]],[[[121.10156249999997,18.615283203125017],[121.84560546875,18.29541015625003],[122.03847656250005,18.32792968749999],[122.14667968750004,18.486572265625],[122.26552734375005,18.458837890625034],[122.15234374999997,17.664404296875006],[122.51914062500012,17.124853515625034],[122.13515625000005,16.18481445312503],[121.59531250000012,15.933251953125023],[121.60703125000006,15.669824218749994],[121.39228515625004,15.324414062499969],[121.69541015625006,14.7373046875],[121.62792968749997,14.581152343749977],[121.76660156249997,14.16806640625002],[122.21171875000002,13.930175781250057],[122.2875,13.996191406250006],[122.19970703125003,14.148046875000034],[122.6271484375001,14.317529296875009],[122.93417968750012,14.18808593750002],[123.101953125,13.750244140624986],[123.29697265625012,13.836425781250043],[123.32031249999997,14.061669921875023],[123.81572265625002,13.837109375000011],[123.80625000000012,13.721728515625045],[123.54960937500007,13.645751953125014],[123.81923828125,13.269482421875011],[123.78515625000003,13.110546875000054],[124.14277343750004,13.035791015625009],[124.0597656250001,12.567089843749997],[123.87783203125005,12.689697265625014],[123.94853515625007,12.916406250000023],[123.31093750000005,13.044091796875009],[123.16328125000004,13.44174804687502],[122.59521484374997,13.90761718749998],[122.46796875000004,13.886718749999986],[122.66787109375,13.395361328124991],[122.59990234375002,13.194140625000031],[122.37656250000012,13.520605468750006],[121.77792968750006,13.93764648437498],[121.50107421875006,13.8421875],[121.344140625,13.649121093749997],[121.09550781250007,13.679492187500045],[120.84072265625,13.884716796875026],[120.637109375,13.804492187500031],[120.61679687500006,14.188037109375003],[120.9220703125001,14.493115234374983],[120.94130859375,14.645068359375031],[120.58369140625004,14.88125],[120.58867187500002,14.483105468749983],[120.43876953125002,14.453369140624972],[120.25078125000002,14.793310546875034],[120.08212890625012,14.851074218749986],[119.77255859375012,16.25512695312503],[119.83076171875004,16.326562500000023],[120.15976562500012,16.047656250000045],[120.36875,16.109570312499955],[120.35839843749997,17.63818359375],[120.59970703125012,18.507861328125074],[121.10156249999997,18.615283203125017]]],[[[121.92167968750007,18.89472656250001],[121.82519531250003,18.842724609374983],[121.94335937500003,19.010449218749955],[121.92167968750007,18.89472656250001]]],[[[121.52089843750005,19.361962890624994],[121.53125,19.271337890625006],[121.37460937500006,19.356298828124977],[121.52089843750005,19.361962890624994]]]]},"properties":{"name":"Philippines","childNum":37}},{"geometry":{"type":"Polygon","coordinates":[[[134.5954101562501,7.382031249999969],[134.51572265625012,7.525781250000037],[134.65117187500002,7.712109374999983],[134.5954101562501,7.382031249999969]]]},"properties":{"name":"Palau","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[153.53613281249997,-11.476171874999949],[153.75986328125006,-11.586328125],[153.55371093749997,-11.630566406249969],[153.28681640625004,-11.516992187500009],[153.20361328124997,-11.32412109374998],[153.53613281249997,-11.476171874999949]]],[[[154.28076171874997,-11.36142578125002],[154.12119140625006,-11.425683593749966],[154.02343750000003,-11.347949218750031],[154.28076171874997,-11.36142578125002]]],[[[150.89873046875002,-10.565332031250023],[150.88466796875,-10.643457031250037],[150.78574218750006,-10.603417968749966],[150.89873046875002,-10.565332031250023]]],[[[151.08095703125,-10.020117187499963],[151.29648437500012,-9.956738281250026],[151.230859375,-10.194726562500009],[150.95917968750004,-10.092578124999989],[150.77607421875004,-9.70908203125002],[151.08095703125,-10.020117187499963]]],[[[150.52841796875006,-9.34658203124998],[150.78867187500006,-9.417968749999957],[150.89404296875003,-9.667480468749986],[150.43623046875004,-9.624609374999949],[150.5084960937501,-9.536132812499957],[150.43730468750007,-9.359960937500034],[150.52841796875006,-9.34658203124998]]],[[[150.3454101562501,-9.493847656249955],[150.10976562500005,-9.361914062499991],[150.20830078125002,-9.206347656250003],[150.32011718750007,-9.264160156249972],[150.3454101562501,-9.493847656249955]]],[[[152.63095703125012,-8.959375],[152.95292968750007,-9.07011718749996],[152.96689453125006,-9.208984375000014],[152.51513671874997,-9.009863281250034],[152.63095703125012,-8.959375]]],[[[151.10683593750005,-8.733496093749949],[151.12412109375012,-8.804882812500011],[151.00498046875006,-8.523828124999952],[151.117578125,-8.41884765624998],[151.10683593750005,-8.733496093749949]]],[[[143.58681640625005,-8.481738281250003],[143.321875,-8.367578125],[143.5814453125,-8.390917968749974],[143.58681640625005,-8.481738281250003]]],[[[148.02578125,-5.826367187500011],[147.78105468750007,-5.627246093749946],[147.7946289062501,-5.492382812500011],[148.05478515625006,-5.61152343750004],[148.02578125,-5.826367187500011]]],[[[155.95761718750006,-6.686816406249989],[155.71933593750012,-6.862792968749957],[155.34404296875007,-6.721679687499986],[155.20214843750003,-6.3076171875],[154.75927734375003,-5.931347656249997],[154.72929687500002,-5.444433593750006],[155.09384765625006,-5.620214843750034],[155.46699218750004,-6.145117187500034],[155.82255859375002,-6.38046875000002],[155.95761718750006,-6.686816406249989]]],[[[147.17626953124997,-5.431933593749946],[147.00585937499997,-5.30703125],[147.1310546875001,-5.190820312500037],[147.17626953124997,-5.431933593749946]]],[[[154.64726562500002,-5.43271484375002],[154.54003906250003,-5.11083984375],[154.63261718750007,-5.013867187499955],[154.72714843750006,-5.218066406249989],[154.64726562500002,-5.43271484375002]]],[[[146.01933593750007,-4.726171874999963],[145.88359375000007,-4.66748046875],[145.9958007812501,-4.539257812499983],[146.01933593750007,-4.726171874999963]]],[[[151.915625,-4.296777343749966],[152.11718749999997,-4.212207031249974],[152.40566406250005,-4.340722656249952],[152.35117187500006,-4.82216796874998],[151.98369140625007,-5.07441406250004],[152.14296875,-5.357031249999963],[152.07705078125,-5.458300781249989],[151.86542968750004,-5.564843750000023],[151.51513671874997,-5.552343749999963],[151.22929687500002,-5.919921874999986],[150.47353515625,-6.263378906249969],[149.65253906250004,-6.290429687499966],[149.38232421874997,-6.078125],[149.0990234375,-6.116992187499989],[148.33720703125007,-5.669433593750014],[148.43203125,-5.471777343749991],[149.35888671875003,-5.583984375000014],[149.8314453125,-5.524121093749997],[149.96279296875,-5.447753906249972],[150.0900390625001,-5.011816406249977],[150.1703125,-5.070605468749974],[150.0724609375001,-5.309570312499986],[150.18310546874997,-5.523632812499983],[150.90029296875005,-5.447167968750037],[151.32656250000005,-4.96035156249998],[151.67119140625007,-4.88330078125],[151.59306640625007,-4.200781249999949],[151.915625,-4.296777343749966]]],[[[152.67060546875004,-3.13339843750002],[152.64619140625004,-3.221191406249957],[152.54326171875002,-3.095605468749952],[152.63876953125012,-3.042773437500031],[152.67060546875004,-3.13339843750002]]],[[[140.97617187500012,-9.11875],[140.97519531250006,-6.90537109375002],[140.86230468749997,-6.740039062499989],[140.975,-6.346093750000023],[140.97353515625,-2.803417968750026],[140.97343750000007,-2.609765625],[142.90517578125,-3.32070312499998],[143.50898437500004,-3.431152343750014],[144.06640625000003,-3.80517578125],[144.4777343750001,-3.82529296875002],[145.08779296875,-4.349121093749972],[145.33457031250012,-4.385253906249972],[145.7669921875,-4.823046874999989],[145.74521484375012,-5.402441406249977],[147.56669921875002,-6.056933593750003],[147.80205078125002,-6.31523437499996],[147.84550781250007,-6.662402343749989],[147.11914062499997,-6.721679687499986],[146.95361328124997,-6.834082031249963],[147.19003906250012,-7.378125],[148.12675781250007,-8.103613281249963],[148.246875,-8.554296875000034],[148.45117187499997,-8.694531250000011],[148.58310546875006,-9.051757812499957],[149.19833984375006,-9.03125],[149.26318359374997,-9.497851562499974],[150.01103515625007,-9.688183593750026],[149.76123046874997,-9.805859375000011],[149.87441406250005,-10.012988281250031],[150.84951171875,-10.236035156249997],[150.44609375000007,-10.30732421875004],[150.6471679687501,-10.517968749999966],[150.31992187500012,-10.654882812499963],[150.0167968750001,-10.577148437500028],[149.75410156250004,-10.353027343750028],[147.76865234375012,-10.070117187500031],[147.01718750000006,-9.38789062500004],[146.96376953125,-9.059570312499943],[146.63085937499997,-8.951171874999972],[146.03320312499997,-8.076367187500011],[144.97382812500004,-7.802148437500009],[144.86425781249997,-7.631542968749983],[144.50986328125006,-7.567382812499972],[144.14287109375007,-7.757226562500009],[143.65488281250012,-7.460351562500009],[143.94228515625005,-7.944238281250009],[143.8333984375,-8.029101562499974],[143.51816406250006,-8.000683593749955],[143.61376953125003,-8.200390624999969],[142.52412109375004,-8.32167968749998],[142.34746093750002,-8.167480468750014],[142.20683593750002,-8.195800781250014],[142.47480468750004,-8.369433593750031],[142.79794921875006,-8.345019531250031],[143.11181640624997,-8.474511718750037],[143.37724609375007,-8.762207031250028],[143.36621093750003,-8.961035156250034],[142.6471679687501,-9.327832031249969],[142.22958984375012,-9.169921874999957],[141.13320312500005,-9.221289062500034],[140.97617187500012,-9.11875]]],[[[152.96582031249997,-4.756347656249986],[152.89169921875006,-4.832421875000023],[152.73994140625004,-4.635839843750034],[152.66816406250004,-4.131835937500028],[152.27939453125006,-3.582421875],[151.06679687500005,-2.829003906249994],[150.74609374999997,-2.73886718750002],[150.8253906250001,-2.572949218749969],[152.03291015625004,-3.25136718749998],[153.01679687500004,-4.105664062500026],[153.1325195312501,-4.352441406250037],[152.96582031249997,-4.756347656249986]]],[[[150.43662109375012,-2.66181640625004],[150.16572265625004,-2.660253906249991],[149.96162109375004,-2.473828125000026],[150.22714843750006,-2.384179687499966],[150.42949218750007,-2.47041015625004],[150.43662109375012,-2.66181640625004]]],[[[147.06757812500004,-1.96015625],[147.43808593750012,-2.05898437499998],[147.20634765625007,-2.181933593749974],[146.54648437500012,-2.20859375],[146.65625,-1.97402343749998],[147.06757812500004,-1.96015625]]],[[[149.76542968750007,-1.553027343750017],[149.54589843749997,-1.471679687499957],[149.58095703125005,-1.353222656249983],[149.76542968750007,-1.553027343750017]]]]},"properties":{"name":"Papua New Guinea","childNum":21}},{"geometry":{"type":"Polygon","coordinates":[[[23.484667968750017,53.939794921875],[23.915429687500023,52.770263671875],[23.175097656250017,52.28662109375],[23.652441406250006,52.040380859375],[23.605273437500017,51.517919921875],[23.664453125000023,51.31005859375],[24.095800781250006,50.87275390625],[23.9970703125,50.809375],[24.089941406250006,50.53046875],[23.97265625,50.410058593749994],[23.711718750000017,50.37734375],[23.03632812500001,49.899072265624994],[22.706152343750006,49.606201171875],[22.6494140625,49.539013671875],[22.66064453125,49.483691406249996],[22.71992187500001,49.353808593749996],[22.732421875,49.295166015625],[22.705664062500006,49.171191406249996],[22.847070312500023,49.08125],[22.538671875,49.072705078125],[22.473046875000023,49.081298828125],[22.020117187500006,49.209521484374996],[21.6396484375,49.411962890625],[21.079394531250017,49.418261718749996],[20.868457031250017,49.314697265625],[20.36298828125001,49.38525390625],[20.0576171875,49.181298828124994],[19.756640625000017,49.204394531249996],[19.77392578125,49.37216796875],[19.44160156250001,49.597705078124996],[19.1494140625,49.4],[18.83222656250001,49.510791015624996],[18.562402343750023,49.879345703125],[18.0283203125,50.03525390625],[17.874804687500017,49.972265625],[17.627050781250006,50.11640625],[17.702246093750006,50.307177734374996],[17.41523437500001,50.254785156249994],[16.88007812500001,50.427050781249996],[16.989648437500023,50.2369140625],[16.63916015625,50.1021484375],[16.210351562500023,50.423730468749994],[16.419726562500017,50.573632812499994],[16.2822265625,50.655615234375],[16.007226562500023,50.611621093749996],[14.99375,51.01435546875],[14.98291015625,50.886572265625],[14.895800781250017,50.861376953124996],[14.809375,50.858984375],[14.814257812500017,50.871630859374996],[14.91748046875,51.008740234375],[14.9638671875,51.095117187499994],[14.935546875,51.435351562499996],[14.905957031250011,51.463330078125],[14.724707031250006,51.523876953125],[14.7109375,51.544921875],[14.738671875000023,51.6271484375],[14.601660156250006,51.832373046875],[14.752539062500006,52.081835937499996],[14.679882812500011,52.25],[14.615625,52.277636718749996],[14.573925781250011,52.31416015625],[14.554589843750023,52.359667968749996],[14.569726562500023,52.431103515625],[14.619433593750017,52.528515625],[14.514062500000023,52.64560546875],[14.253710937500017,52.782519531249996],[14.128613281250011,52.878222656249996],[14.138867187500011,52.932861328125],[14.293164062500011,53.0267578125],[14.368554687500023,53.10556640625],[14.410937500000017,53.199023437499996],[14.412304687500011,53.216748046875],[14.41455078125,53.283496093749996],[14.258886718750006,53.729638671875],[14.58349609375,53.63935546875],[14.558398437500017,53.823193359375],[14.21142578125,53.950341796875],[16.186328125000017,54.290380859375],[16.55976562500001,54.55380859375],[18.32343750000001,54.838183593749996],[18.75927734375,54.6845703125],[18.43623046875001,54.7447265625],[18.83642578125,54.369580078125],[19.604394531250023,54.4591796875],[20.20820312500001,54.420751953125],[22.16845703125,54.35986328125],[22.731835937500023,54.35009765625],[22.766210937500006,54.356787109375],[22.82373046875,54.395800781249996],[22.893945312500023,54.39052734375],[22.97675781250001,54.366357421875],[23.015527343750023,54.34833984375],[23.04218750000001,54.30419921875],[23.0875,54.299462890625],[23.170312500000023,54.2814453125],[23.282324218750006,54.24033203125],[23.3701171875,54.200488281249996],[23.45361328125,54.14345703125],[23.484667968750017,53.939794921875]]]},"properties":{"name":"Poland","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-65.42558593749999,18.105615234374994],[-65.57221679687493,18.137304687499977],[-65.29487304687501,18.133349609375045],[-65.42558593749999,18.105615234374994]]],[[[-66.12939453125003,18.444921875000034],[-65.62880859375,18.381396484375045],[-65.62084960937497,18.242333984374966],[-65.97080078124995,17.974365234375],[-67.196875,17.994189453125045],[-67.2640625,18.364599609375006],[-67.15864257812501,18.499218749999983],[-66.12939453125003,18.444921875000034]]]]},"properties":{"name":"Puerto Rico","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[130.52695312500012,42.535400390625],[130.68730468750007,42.30253906249999],[130.2357421875,42.183203125000034],[129.75634765624997,41.712255859375006],[129.70869140625004,40.857324218749994],[129.34111328125002,40.72631835937506],[128.51123046874997,40.130224609375006],[127.56816406250002,39.78198242187503],[127.39453125000003,39.207910156249966],[127.78613281250003,39.084130859374966],[128.37460937500012,38.6234375],[128.03896484375,38.30854492187498],[127.09033203125003,38.28388671875001],[126.63388671875012,37.78183593750006],[126.36992187500007,37.87836914062501],[126.11669921875003,37.74291992187503],[125.76914062500006,37.98535156250003],[125.35781250000005,37.72480468749998],[125.31074218750004,37.843505859375],[124.98876953124997,37.93144531249999],[125.2067382812501,38.08154296875],[124.69091796874997,38.12919921875002],[125.06738281250003,38.556738281250006],[125.55449218750002,38.68623046875001],[125.16884765625,38.80551757812506],[125.40966796875003,39.28837890625002],[125.36083984375003,39.52661132812497],[124.77529296875,39.75805664062506],[124.63828125000006,39.61508789062506],[124.36210937500002,40.004052734374994],[124.8893554687501,40.459814453125006],[125.98906250000002,40.904638671875034],[126.74306640625,41.724853515625],[126.95478515625004,41.76948242187501],[127.17968750000003,41.531347656250006],[128.14941406249997,41.38774414062496],[128.28925781250004,41.60742187500006],[128.04521484375007,41.9875],[128.92343750000006,42.038232421874966],[129.3136718750001,42.41357421874997],[129.69785156250012,42.448144531249994],[129.89824218750002,42.998144531250034],[130.24033203125006,42.891796874999955],[130.24667968750012,42.744824218749955],[130.52695312500012,42.535400390625]]]},"properties":{"name":"Dem. Rep. Korea","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-17.190869140624926,32.86860351562498],[-16.693261718749966,32.75800781250001],[-17.018261718749926,32.66279296874998],[-17.226025390624983,32.76684570312503],[-17.190869140624926,32.86860351562498]]],[[[-25.64897460937499,37.840917968750006],[-25.18193359374996,37.837890625],[-25.19072265624999,37.764355468749955],[-25.73447265624992,37.76289062500001],[-25.845898437499983,37.89404296875],[-25.64897460937499,37.840917968750006]]],[[[-28.14726562499996,38.45268554687502],[-28.064794921875034,38.412744140624966],[-28.454492187500023,38.40864257812504],[-28.54882812499997,38.51855468750003],[-28.14726562499996,38.45268554687502]]],[[[-28.641308593749983,38.525],[-28.842041015625,38.5984375],[-28.69775390625,38.638476562500045],[-28.641308593749983,38.525]]],[[[-27.07524414062496,38.643457031249994],[-27.38593750000001,38.765820312499955],[-27.127001953125017,38.78984375],[-27.07524414062496,38.643457031249994]]],[[[-31.137109374999937,39.40693359375001],[-31.282958984375,39.39409179687496],[-31.260839843750034,39.49677734375001],[-31.137109374999937,39.40693359375001]]],[[[-7.406152343749937,37.17944335937497],[-7.834130859374994,37.005712890625034],[-8.597656249999943,37.12133789062506],[-8.997802734375028,37.03227539062502],[-8.814160156249983,37.43081054687502],[-8.881103515624943,38.44667968750005],[-8.668310546874949,38.42431640625003],[-8.798876953124989,38.518164062500034],[-9.213281249999937,38.44809570312498],[-9.250390624999966,38.65673828125003],[-9.021484374999943,38.746875],[-8.79160156249992,39.07817382812502],[-9.13579101562496,38.74277343749998],[-9.35673828124996,38.697900390624994],[-9.479736328124972,38.79877929687501],[-9.374755859374972,39.338281249999966],[-8.837841796874926,40.11567382812498],[-8.684619140624989,40.75253906250006],[-8.755419921874932,41.69838867187502],[-8.887597656249937,41.76459960937501],[-8.777148437500017,41.941064453124994],[-8.266064453124983,42.13740234375001],[-8.152490234374937,41.81196289062498],[-7.40361328124996,41.833691406249955],[-7.147119140625023,41.98115234374998],[-6.61826171874992,41.9423828125],[-6.542187499999955,41.672509765624994],[-6.2125,41.53203125],[-6.928466796874972,41.009130859375006],[-6.8101562499999,40.343115234375034],[-7.032617187499966,40.16791992187498],[-6.896093749999949,40.02182617187506],[-6.975390624999932,39.79838867187502],[-7.117675781249972,39.681689453125045],[-7.53569335937496,39.66157226562501],[-6.997949218749994,39.05644531250002],[-7.343017578124943,38.45742187500002],[-7.106396484374983,38.181005859375006],[-6.957568359374932,38.18789062499999],[-7.44394531249992,37.72827148437497],[-7.406152343749937,37.17944335937497]]]]},"properties":{"name":"Portugal","childNum":7,"cp":[-8.7440694,39.9251454]}},{"geometry":{"type":"Polygon","coordinates":[[[-58.15976562499999,-20.164648437500006],[-58.13779296874999,-20.2373046875],[-58.12460937499999,-20.29345703125],[-58.09150390625,-20.33320312500001],[-58.05844726562499,-20.38613281250001],[-58.025390625,-20.415820312500003],[-58.00224609374999,-20.465429687500006],[-57.97905273437499,-20.657324218750006],[-57.91513671874999,-20.69033203125001],[-57.830224609374994,-20.99794921875001],[-57.94267578124999,-21.79833984375],[-57.95590820312499,-22.109179687500003],[-56.77519531249999,-22.261328125],[-56.44780273437499,-22.076171875],[-56.39487304687499,-22.09267578125001],[-56.35185546874999,-22.17861328125001],[-56.246044921875,-22.2646484375],[-56.18984375,-22.28115234375001],[-55.99140625,-22.28115234375001],[-55.84916992187499,-22.3076171875],[-55.75327148437499,-22.41015625],[-55.74663085937499,-22.5126953125],[-55.61767578125,-22.671484375],[-55.53828125,-23.58095703125001],[-55.518457031249994,-23.627246093750003],[-55.458886718749994,-23.68671875000001],[-55.4423828125,-23.792578125],[-55.4423828125,-23.865332031250006],[-55.415917968749994,-23.95136718750001],[-55.36630859374999,-23.991015625],[-55.28691406249999,-24.004296875],[-55.1943359375,-24.01748046875001],[-55.08188476562499,-23.99765625],[-54.982666015625,-23.97451171875001],[-54.62548828125,-23.8125],[-54.44023437499999,-23.90175781250001],[-54.37080078125,-23.97119140625],[-54.24179687499999,-24.047265625],[-54.281005859375,-24.30605468750001],[-54.43623046875,-25.12128906250001],[-54.47314453125,-25.22021484375],[-54.610546875,-25.432714843750006],[-54.615869140624994,-25.57607421875001],[-54.63193359374999,-26.00576171875001],[-54.677734375,-26.30878906250001],[-54.934472656249994,-26.70253906250001],[-55.1359375,-26.93115234375],[-55.426660156249994,-27.00927734375],[-55.450634765625,-27.068359375],[-55.496728515624994,-27.115332031250006],[-55.564892578125,-27.15],[-55.59726562499999,-27.207617187500006],[-55.59379882812499,-27.2880859375],[-55.63291015624999,-27.35712890625001],[-55.71464843749999,-27.41484375],[-55.789990234375,-27.41640625],[-55.95146484374999,-27.32568359375],[-56.1640625,-27.32148437500001],[-56.437158203124994,-27.553808593750006],[-58.16826171874999,-27.2734375],[-58.60483398437499,-27.31435546875001],[-58.641748046874994,-27.19609375],[-58.618603515625,-27.132128906250003],[-58.222070312499994,-26.65],[-58.18149414062499,-26.307421875],[-57.943115234375,-26.05292968750001],[-57.563134765624994,-25.473730468750006],[-57.821679687499994,-25.13642578125001],[-59.187255859375,-24.562304687500003],[-59.892480468749994,-24.093554687500003],[-60.83984375,-23.85810546875001],[-61.084716796875,-23.65644531250001],[-61.79853515625,-23.18203125],[-62.21416015624999,-22.612402343750006],[-62.372509765625,-22.43916015625001],[-62.54155273437499,-22.349609375],[-62.6259765625,-22.29042968750001],[-62.62568359375,-22.261523437500003],[-62.65097656249999,-22.233691406250003],[-62.27666015624999,-21.066015625],[-62.276318359375,-20.5625],[-61.7568359375,-19.6453125],[-60.00737304687499,-19.29755859375001],[-59.09052734375,-19.286230468750006],[-58.18017578125,-19.81787109375],[-58.15976562499999,-20.164648437500006]]]},"properties":{"name":"Paraguay","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[34.34833984375004,31.292919921874955],[34.2453125000001,31.208300781250045],[34.2125,31.292285156250017],[34.198144531249994,31.322607421875063],[34.47734375000002,31.584863281250023],[34.52412109375004,31.541650390624994],[34.5255859375001,31.52563476562503],[34.34833984375004,31.292919921874955]]],[[[34.88046875,31.3681640625],[34.950976562500074,31.60229492187503],[35.20371093750006,31.75],[35.1271484375001,31.816748046875006],[35.05322265625003,31.83793945312496],[34.983007812500006,31.816796875000023],[34.9611328125001,31.823339843750006],[34.95380859375004,31.84125976562504],[34.98974609374997,31.913281249999955],[34.955957031249994,32.1609375],[35.01054687500002,32.33818359375002],[35.06503906250006,32.46044921875006],[35.19326171875005,32.53442382812503],[35.303808593750006,32.512939453125],[35.38671875000003,32.493017578125034],[35.402636718750074,32.45063476562501],[35.484375,32.40166015624999],[35.5514648437501,32.39550781250006],[35.57207031250002,32.237890625],[35.450585937499994,31.479296875000017],[34.88046875,31.3681640625]]]]},"properties":{"name":"Palestine","childNum":2}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-149.321533203125,-17.690039062499963],[-149.177685546875,-17.736621093750045],[-149.18178710937497,-17.86230468749997],[-149.34111328125,-17.732421874999986],[-149.57890624999993,-17.734960937499963],[-149.635009765625,-17.564257812500003],[-149.37919921874993,-17.522363281249994],[-149.321533203125,-17.690039062499963]]],[[[-143.44057617187497,-16.619726562499963],[-143.38618164062498,-16.668847656250023],[-143.55068359375002,-16.62109374999997],[-143.44057617187497,-16.619726562499963]]],[[[-139.02431640624997,-9.695214843750037],[-138.82734375,-9.74160156249998],[-139.13408203124996,-9.829492187500037],[-139.02431640624997,-9.695214843750037]]],[[[-140.075634765625,-9.425976562499983],[-140.14438476562498,-9.359375],[-140.07094726562497,-9.328125],[-140.075634765625,-9.425976562499983]]],[[[-140.07260742187503,-8.910449218750031],[-140.21743164062497,-8.929687499999957],[-140.24003906249993,-8.79755859375004],[-140.057666015625,-8.801464843750026],[-140.07260742187503,-8.910449218750031]]]]},"properties":{"name":"Fr. Polynesia","childNum":5}},{"geometry":{"type":"Polygon","coordinates":[[[51.26796875000002,24.607226562500003],[51.17802734375002,24.58671875],[51.093359375,24.564648437499997],[51.02275390625002,24.565234375],[50.96601562500001,24.573925781249997],[50.928320312500006,24.595117187499994],[50.85566406250001,24.679638671874997],[50.80439453125001,24.789257812499997],[50.8359375,24.850390625],[50.846777343750006,24.888574218749994],[50.75458984375001,25.39926757812499],[51.003125,25.9814453125],[51.262304687500006,26.153271484374997],[51.543066406250006,25.902392578125003],[51.4853515625,25.524707031250003],[51.60888671875,25.052880859374994],[51.42792968750001,24.668261718750003],[51.26796875000002,24.607226562500003]]]},"properties":{"name":"Qatar","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[28.2125,45.450439453125],[28.317675781250017,45.347119140625],[28.451269531250006,45.2921875],[28.78828125000001,45.240966796875],[28.78173828125,45.309863281249996],[28.894335937500017,45.289941406249994],[29.223535156250023,45.4029296875],[29.403710937500023,45.419677734375],[29.567675781250017,45.37080078125],[29.705859375000017,45.259912109374994],[29.557519531250023,44.843408203124994],[29.048242187500023,44.757568359375],[29.0953125,44.975048828125],[28.891503906250023,44.91865234375],[28.585351562500023,43.742236328124996],[28.221972656250017,43.772851562499994],[27.88427734375,43.987353515624996],[27.425390625,44.0205078125],[27.0869140625,44.167382812499994],[26.2158203125,44.007275390625],[25.4970703125,43.670800781249994],[22.919042968750006,43.83447265625],[22.868261718750006,43.947900390624994],[23.02851562500001,44.077978515625],[22.705078125,44.23779296875],[22.687890625000023,44.248291015625],[22.494531250000023,44.435449218749994],[22.554003906250017,44.540332031249996],[22.6201171875,44.562353515625],[22.70078125,44.555517578125],[22.734375,44.569921875],[22.72089843750001,44.605517578124996],[22.64208984375,44.6509765625],[22.49765625,44.70625],[22.350683593750006,44.676123046875],[22.200976562500017,44.560693359374994],[22.093066406250017,44.541943359375],[21.909277343750006,44.66611328125],[21.636132812500023,44.71044921875],[21.52314453125001,44.790087890624996],[21.36005859375001,44.82666015625],[21.35791015625,44.86181640625],[21.384375,44.870068359375],[21.442187500000017,44.873388671875],[21.519921875000023,44.880810546875],[21.532324218750006,44.900683593749996],[21.35703125,44.990771484374996],[21.465429687500006,45.171875],[21.431445312500017,45.192529296874994],[20.794042968750006,45.46787109375],[20.775,45.749804687499996],[20.760156250000023,45.758105468749996],[20.746875,45.748974609375],[20.727832031250017,45.73740234375],[20.709277343750017,45.735253906249994],[20.652734375000023,45.77939453125],[20.581152343750006,45.869482421875],[20.35859375000001,45.975488281249994],[20.241796875,46.10859375],[20.28095703125001,46.1330078125],[20.508105468750017,46.166943359375],[20.613671875000023,46.13349609375],[20.76025390625,46.246240234374994],[21.121679687500006,46.282421875],[21.99970703125001,47.505029296874994],[22.87666015625001,47.947265625],[23.054785156250006,48.00654296875],[23.139453125000017,48.08740234375],[23.20263671875,48.084521484374996],[23.408203125,47.989990234375],[23.628710937500017,47.995849609375],[24.578906250000017,47.931054687499994],[24.979101562500006,47.72412109375],[25.464257812500023,47.910791015624994],[25.689257812500017,47.932470703125],[25.90869140625,47.967578125],[26.162695312500006,47.992529296875],[26.236230468750023,48.064355468749994],[26.276953125,48.113232421875],[26.3056640625,48.203759765624994],[26.4423828125,48.22998046875],[26.618945312500017,48.25986328125],[26.980761718750017,48.155029296875],[27.614062500000017,47.34052734375],[28.07177734375,46.978417968749994],[28.23945312500001,46.6408203125],[28.07470703125,45.598974609375],[28.2125,45.450439453125]]]},"properties":{"name":"Romania","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[146.71396484375012,43.743798828124994],[146.62197265625,43.81298828125006],[146.88408203125002,43.82915039062496],[146.71396484375012,43.743798828124994]]],[[[146.20761718750006,44.49765625],[146.5677734375,44.44042968749997],[145.91406249999997,44.10371093750004],[145.58681640625,43.84511718750002],[145.5558593750001,43.66459960937502],[145.46171875000007,43.870898437500045],[146.20761718750006,44.49765625]]],[[[148.59951171875,45.317626953125],[147.91376953125004,44.99038085937502],[147.65781250000012,44.97714843749998],[146.89746093750003,44.404296875],[147.24658203124997,44.856054687500006],[147.88554687500007,45.22563476562499],[147.9240234375001,45.38330078125006],[148.05605468750005,45.26210937500005],[148.32421874999997,45.28242187500001],[148.8122070312501,45.510009765625],[148.83710937500004,45.36269531250002],[148.59951171875,45.317626953125]]],[[[149.68769531250004,45.64204101562501],[149.44707031250002,45.593359375000034],[149.9623046875,46.02192382812504],[150.553125,46.208544921875045],[149.68769531250004,45.64204101562501]]],[[[152.00205078125006,46.89716796874998],[151.72343750000007,46.82880859375001],[152.28886718750007,47.1421875],[152.00205078125006,46.89716796874998]]],[[[154.81044921875005,49.31201171875],[154.61093750000006,49.29404296874998],[154.82490234375004,49.64692382812501],[154.81044921875005,49.31201171875]]],[[[155.9210937500001,50.30219726562501],[155.39716796875004,50.04125976562497],[155.24306640625,50.09462890625002],[155.21835937500012,50.29785156250003],[155.68017578124997,50.400732421875034],[156.096875,50.771875],[155.9210937500001,50.30219726562501]]],[[[156.40507812500002,50.65761718750005],[156.16796874999997,50.73188476562498],[156.37646484374997,50.86210937499996],[156.4875,50.84296874999998],[156.40507812500002,50.65761718750005]]],[[[142.76103515625002,54.393945312499966],[143.32470703125003,52.96308593749998],[143.15556640625002,52.08374023437497],[143.29951171875004,51.632373046875045],[143.81601562500006,50.28261718750002],[144.71376953125,48.64028320312502],[144.04873046875,49.249169921874994],[143.73232421875,49.31201171875],[143.10498046875003,49.198828125000034],[142.57421874999997,48.07216796875002],[142.55693359375002,47.737890625000034],[143.21767578125005,46.79487304687504],[143.48564453125002,46.752050781250006],[143.58066406250012,46.360693359375034],[143.43164062500003,46.02866210937498],[143.28232421875006,46.55898437500002],[142.57802734375005,46.700781250000034],[142.07714843749997,45.91704101562499],[141.83037109375002,46.451074218749966],[142.03867187500012,47.140283203124966],[141.9640625000001,47.58745117187502],[142.18173828125012,48.01337890625001],[141.86630859375006,48.750097656250006],[142.1422851562501,49.56914062499999],[142.06601562500006,50.630468750000034],[142.20673828125004,51.22255859375002],[141.72236328125004,51.73632812499997],[141.66083984375004,52.27294921874997],[141.85556640625012,52.79350585937499],[141.82353515625007,53.33950195312502],[142.1419921875,53.49560546875003],[142.52617187500002,53.44746093749998],[142.70595703125,53.89570312499998],[142.33496093749997,54.28071289062501],[142.76103515625002,54.393945312499966]]],[[[137.17861328125005,55.100439453125034],[137.05527343750006,54.9267578125],[136.71464843750002,54.956152343750034],[137.17861328125005,55.100439453125034]]],[[[137.94052734375012,55.092626953125034],[138.20615234375012,55.03354492187498],[137.72148437500007,54.66323242187505],[137.46269531250002,54.873388671875034],[137.23291015624997,54.79057617187496],[137.5773437500001,55.19702148437497],[137.94052734375012,55.092626953125034]]],[[[21.235742187500023,55.26411132812498],[22.072363281250034,55.06367187499998],[22.56728515625005,55.05913085937496],[22.82470703125,54.87128906249998],[22.684472656250023,54.56293945312504],[22.679882812500068,54.493017578125006],[22.766210937499977,54.356787109375034],[22.168457031250057,54.35986328125006],[21.14052734375008,54.39179687499998],[19.604394531250023,54.45917968750004],[19.974511718750023,54.92119140625002],[20.520312500000017,54.994873046875],[20.89980468750008,55.286669921875045],[20.957812500000074,55.27890625000006],[20.594824218750006,54.982373046874955],[20.995898437500017,54.90268554687506],[21.18886718750008,54.93520507812502],[21.235742187500023,55.26411132812498]]],[[[166.65029296875005,54.83906249999998],[166.64511718750006,54.69409179687503],[165.75107421875006,55.294531250000034],[166.27578125000005,55.311962890624955],[166.24804687499997,55.16542968750002],[166.65029296875005,54.83906249999998]]],[[[150.58994140625006,59.01875],[150.47021484375003,59.05405273437498],[150.66621093750004,59.16015625000003],[150.58994140625006,59.01875]]],[[[163.63515625000005,58.603369140625006],[163.47138671875004,58.509375],[163.7609375000001,59.01503906250002],[164.57265625,59.22114257812501],[164.61572265624997,58.885595703125034],[163.63515625000005,58.603369140625006]]],[[[35.8161132812501,65.18208007812501],[35.77871093750005,64.97666015625],[35.52890625000006,65.15107421875001],[35.8161132812501,65.18208007812501]]],[[[70.02070312500004,66.502197265625],[69.65136718750003,66.56533203125],[69.50273437500002,66.75107421875],[70.07666015624997,66.69589843750003],[70.02070312500004,66.502197265625]]],[[[-179.79853515625,68.9404296875],[-178.873876953125,68.75410156249995],[-178.69262695312503,68.54599609375],[-178.09746093750002,68.4248046875],[-178.05581054687497,68.26489257812503],[-177.79677734374997,68.33798828125],[-178.37304687500003,68.56567382812503],[-177.52724609375002,68.29438476562501],[-177.58920898437503,68.22421875],[-175.34521484375,67.67807617187503],[-175.37470703124998,67.35737304687498],[-175.00268554687494,67.4375],[-174.849853515625,67.34887695312503],[-174.92490234375,66.62314453125006],[-174.503759765625,66.537939453125],[-174.39409179687496,66.34423828124997],[-174.084765625,66.47309570312504],[-174.06503906249998,66.22958984374998],[-173.77397460937502,66.43466796875003],[-174.23159179687497,66.63188476562505],[-174.08642578125,66.94287109375],[-174.55009765624993,67.090625],[-173.6796875,67.144775390625],[-173.15781249999998,67.06909179687503],[-173.32353515625,66.95483398437503],[-173.25893554687497,66.84008789062503],[-173.19301757812497,66.99360351562504],[-172.5201171875,66.952490234375],[-173.00751953125,67.06489257812498],[-171.79555664062502,66.93173828125003],[-170.50952148437503,66.34365234375005],[-170.604443359375,66.24892578125002],[-170.30122070312504,66.29404296874998],[-170.24394531250002,66.16928710937503],[-169.777880859375,66.14311523437505],[-169.83168945312497,65.99892578124997],[-170.54067382812497,65.86542968749995],[-170.66630859375,65.62153320312501],[-171.42153320312502,65.81035156250002],[-171.10585937500002,65.51103515625005],[-171.90712890625,65.495947265625],[-172.78330078124998,65.68105468749997],[-172.23281250000002,65.45571289062497],[-172.30927734375004,65.27563476562497],[-172.66191406249993,65.24853515625006],[-172.28603515625002,65.20571289062502],[-172.21318359375,65.04814453124999],[-173.08579101562498,64.81733398437495],[-172.80107421874996,64.79052734375],[-172.90087890624994,64.62885742187501],[-172.40146484374998,64.413916015625],[-172.73916015624997,64.41225585937502],[-172.90317382812498,64.52607421875004],[-172.96005859375003,64.32768554687502],[-173.27548828124998,64.2896484375],[-173.327490234375,64.53955078125003],[-173.72973632812497,64.36450195312497],[-174.57055664062503,64.7177734375],[-175.39511718749998,64.80239257812502],[-175.85385742187498,65.01083984375003],[-176.09326171875,65.471044921875],[-177.05625,65.613623046875],[-177.48876953125,65.50371093749999],[-178.4125,65.49555664062501],[-178.93906249999998,66.03276367187505],[-178.74672851562497,66.01367187500006],[-178.52656250000004,66.40156250000004],[-178.86811523437498,66.18706054687502],[-179.14340820312503,66.37504882812505],[-179.327197265625,66.16259765625003],[-179.68330078124998,66.18413085937505],[-179.78969726562497,65.90087890625],[-179.352099609375,65.51674804687497],[-180,65.06723632812498],[-180,65.31196289062501],[-180,65.55678710937497],[-180,65.80156250000002],[-180,66.04628906250002],[-180,66.29106445312499],[-180,66.53583984375004],[-180,66.78056640625005],[-180,67.02534179687501],[-180,67.27011718750006],[-180,67.51484374999998],[-180,67.75961914062503],[-180,68.00439453124997],[-180,68.24912109375],[-180,68.49389648437497],[-180,68.738671875],[-179.999951171875,68.98344726562505],[-179.79853515625,68.9404296875]]],[[[50.265234375,69.18559570312502],[49.62626953125002,68.85971679687498],[48.91035156250004,68.74306640625002],[48.4390625,68.80488281249998],[48.319921875,69.26923828125001],[48.8449218750001,69.49472656250003],[49.22519531250006,69.51123046875],[50.265234375,69.18559570312502]]],[[[161.46708984375002,68.90097656250003],[161.08281250000007,69.4056640625],[161.50517578125007,69.63945312500002],[161.46708984375002,68.90097656250003]]],[[[169.20078125000006,69.58046875],[168.34804687500005,69.66435546875005],[167.86474609375003,69.90107421875004],[168.35791015625003,70.01567382812502],[169.37480468750007,69.88261718749999],[169.20078125000006,69.58046875]]],[[[60.450488281250074,69.93486328124999],[60.44023437500002,69.72592773437506],[59.637011718750074,69.72104492187503],[59.50263671875004,69.86621093750003],[58.952734375,69.89277343750004],[58.51992187500005,70.31831054687504],[59.04804687500004,70.46049804687505],[60.450488281250074,69.93486328124999]]],[[[52.90332031250003,71.36499023437503],[53.19257812500004,71.21528320312498],[53.0226562500001,70.96870117187501],[52.24960937500006,71.28491210937506],[52.90332031250003,71.36499023437503]]],[[[178.8615234375001,70.826416015625],[178.68388671875013,71.10566406250004],[180,71.53774414062505],[180,70.993017578125],[178.8615234375001,70.826416015625]]],[[[137.95986328125005,71.50766601562503],[137.71181640625005,71.4232421875],[137.06406250000006,71.52988281250003],[137.816796875,71.58789062500006],[137.95986328125005,71.50766601562503]]],[[[-178.87646484375,71.57705078124997],[-178.13388671874998,71.46547851562497],[-177.523583984375,71.16689453125],[-179.415673828125,70.91899414062502],[-179.999951171875,70.993017578125],[-179.999951171875,71.53774414062505],[-178.87646484375,71.57705078124997]]],[[[77.6325195312501,72.291259765625],[76.87109374999997,72.317041015625],[77.74853515625003,72.63120117187506],[78.36513671875005,72.48242187500003],[77.6325195312501,72.291259765625]]],[[[79.50146484374997,72.72192382812497],[78.63320312500005,72.85073242187502],[79.16425781250004,73.0943359375],[79.50146484374997,72.72192382812497]]],[[[74.660546875,72.87343750000002],[74.18066406250003,72.975341796875],[74.19853515625002,73.10908203124998],[74.9615234375,73.0625],[74.660546875,72.87343750000002]]],[[[120.26132812500012,73.08984374999997],[119.79208984375006,73.04541015624997],[119.64042968750002,73.12431640625007],[120.26132812500012,73.08984374999997]]],[[[55.31982421875003,73.30830078124998],[56.42958984375005,73.201171875],[56.121679687500006,72.80659179687498],[55.40332031249997,72.54907226562503],[55.29785156249997,71.93535156250005],[56.45439453125002,71.10737304687504],[57.62539062500005,70.72880859374999],[57.14589843750005,70.58911132812506],[56.38574218749997,70.73413085937503],[56.49970703125004,70.56640625000003],[55.687304687500074,70.69218749999999],[54.60117187500006,70.68007812500002],[53.383593750000074,70.87353515625],[53.670507812500006,71.08691406250003],[54.155664062499994,71.12548828125],[53.40996093750002,71.34013671875002],[53.41162109375003,71.530126953125],[51.93789062500005,71.47470703124998],[51.511328125,71.64809570312497],[51.58251953124997,72.07119140625],[52.252050781250006,72.12973632812503],[52.66191406250002,72.33686523437495],[52.91660156250006,72.66889648437501],[52.5792968750001,72.791357421875],[53.3698242187501,72.91674804687506],[53.2511718750001,73.182958984375],[54.80390625000004,73.38764648437498],[55.31982421875003,73.30830078124998]]],[[[70.67392578125006,73.09501953125005],[70.04072265625004,73.03715820312507],[69.99589843750002,73.359375],[70.94023437500002,73.51440429687503],[71.6261718750001,73.17397460937497],[70.67392578125006,73.09501953125005]]],[[[142.18486328125007,73.89589843750005],[143.34375,73.56875],[143.45146484375007,73.231298828125],[141.59667968750003,73.31083984375005],[140.66279296875004,73.45200195312503],[139.785546875,73.35522460937503],[141.08476562500002,73.86586914062497],[142.18486328125007,73.89589843750005]]],[[[83.5490234375001,74.07177734375],[82.8177734375,74.09160156250005],[83.14980468750005,74.151611328125],[83.5490234375001,74.07177734375]]],[[[141.01025390625003,73.99946289062501],[140.40947265625002,73.92167968750005],[140.1935546875001,74.23671875000002],[141.03857421875003,74.24272460937502],[141.01025390625003,73.99946289062501]]],[[[113.38720703124997,74.40043945312499],[112.78242187500004,74.09506835937503],[111.50341796874997,74.35307617187502],[111.87978515625,74.36381835937499],[112.08447265624997,74.54897460937505],[113.38720703124997,74.40043945312499]]],[[[86.653125,74.981298828125],[87.05214843750005,74.982568359375],[86.92714843750005,74.83076171874998],[86.25859375000002,74.89350585937498],[86.653125,74.981298828125]]],[[[82.17236328125003,75.41938476562501],[81.97851562499997,75.24711914062499],[81.65478515625003,75.28891601562498],[81.71210937500004,75.45141601562506],[82.165625,75.515625],[82.17236328125003,75.41938476562501]]],[[[146.79521484375007,75.37075195312505],[148.43242187500002,75.41352539062495],[148.59013671875007,75.23637695312502],[150.82236328125006,75.15654296875002],[150.64628906250002,74.944580078125],[149.596875,74.77260742187505],[148.296875,74.80043945312502],[146.14853515625012,75.19829101562499],[146.5375,75.58178710937506],[146.79521484375007,75.37075195312505]]],[[[135.9486328125,75.40957031250005],[135.45195312500007,75.38955078124997],[135.6986328125,75.84526367187499],[136.16894531249997,75.60556640625],[135.9486328125,75.40957031250005]]],[[[140.04873046875,75.82895507812503],[140.81591796874997,75.63071289062498],[141.48544921875012,76.13715820312495],[142.66953125000012,75.86342773437497],[143.68583984375002,75.86367187500002],[145.35996093750006,75.53046874999998],[144.01972656250004,75.04467773437506],[143.1703125,75.11689453125001],[142.72949218749997,75.33764648437506],[142.941796875,75.71328125000002],[142.30791015625007,75.69169921875005],[142.19882812500006,75.39267578124998],[143.12792968749997,74.9703125],[142.47275390625006,74.82041015625],[141.98730468750003,74.99125976562499],[140.26787109375002,74.846923828125],[139.68125,74.96406249999995],[139.09912109374997,74.65654296875002],[138.09228515625003,74.79746093750003],[136.94765625000005,75.32553710937498],[137.28974609375004,75.34863281249997],[137.26884765625002,75.7494140625],[137.70654296875003,75.75957031250002],[137.56054687499997,75.95522460937502],[138.20761718750006,76.11494140624995],[138.91953125000006,76.19672851562501],[140.04873046875,75.82895507812503]]],[[[96.5324218750001,76.278125],[96.30058593750002,76.121728515625],[95.31113281250006,76.21474609375002],[95.37988281250003,76.2890625],[96.5324218750001,76.278125]]],[[[112.47802734375003,76.62089843749999],[112.531640625,76.450048828125],[111.96894531250004,76.62617187500001],[112.47802734375003,76.62089843749999]]],[[[149.15019531250002,76.65991210937506],[148.39863281250004,76.64824218750007],[149.4064453125001,76.78208007812498],[149.15019531250002,76.65991210937506]]],[[[67.7653320312501,76.23759765624999],[61.35595703124997,75.31484375000002],[60.27685546875003,75.00756835937503],[60.501367187499994,74.90463867187503],[59.67402343750004,74.61015624999999],[59.24013671875005,74.69296874999998],[59.040429687499994,74.48554687500001],[58.53466796875003,74.49892578124997],[58.6178710937501,74.22739257812498],[57.76738281250002,74.013818359375],[57.755957031250006,73.769189453125],[57.313085937500006,73.838037109375],[57.54257812500006,73.65820312500003],[56.96386718750003,73.36655273437503],[56.43037109375004,73.29721679687503],[55.00683593750003,73.45385742187506],[54.29990234375006,73.35097656249997],[53.7628906250001,73.76616210937499],[54.64267578125006,73.95957031250006],[55.34091796875006,74.41962890624998],[56.13710937500005,74.49609375000003],[55.5822265625001,74.627685546875],[56.4987304687501,74.95708007812505],[55.81005859374997,75.12490234374997],[56.03554687499999,75.19423828124997],[56.57031250000003,75.09775390625003],[56.8444335937501,75.351416015625],[57.606835937499994,75.34125976562498],[58.05830078125004,75.6630859375],[58.88125,75.85478515625007],[60.27929687499997,76.09624023437505],[60.94218750000002,76.07128906250003],[61.20166015624997,76.28203125000007],[62.97148437500002,76.23666992187498],[64.4634765625,76.37817382812503],[67.65185546874997,77.011572265625],[68.48574218750005,76.93369140625003],[68.94169921875002,76.707666015625],[67.7653320312501,76.23759765624999]]],[[[96.28544921875002,77.02666015625007],[95.27031250000007,77.01884765624999],[96.52841796875006,77.20551757812501],[96.28544921875002,77.02666015625007]]],[[[89.51425781250006,77.18881835937498],[89.14169921875012,77.22680664062497],[89.61621093749997,77.31103515625],[89.51425781250006,77.18881835937498]]],[[[130.68730468750007,42.30253906249999],[130.52695312500012,42.535400390625],[130.42480468749997,42.72705078124997],[131.06855468750004,42.90224609375005],[131.25732421875003,43.378076171874994],[131.2552734375,44.07158203124999],[130.9816406250001,44.844335937500034],[131.44687500000012,44.984033203124966],[131.85185546875002,45.32685546875001],[132.93603515624997,45.029931640624994],[133.1134765625001,45.130712890625006],[133.18603515625003,45.49482421875004],[133.43642578125,45.60468750000004],[133.86132812500003,46.24775390625004],[134.1676757812501,47.30219726562501],[134.75234375,47.71542968749998],[134.56601562500006,48.02250976562502],[134.66523437500004,48.25390625],[134.29335937500005,48.37343750000002],[133.46835937500006,48.09716796875003],[133.14404296875003,48.10566406249998],[132.7072265625001,47.94726562500006],[132.47626953125004,47.714990234374994],[130.96191406249997,47.70932617187498],[130.7326171875001,48.01923828124998],[130.80429687500012,48.34150390624998],[130.5521484375,48.602490234374955],[130.553125,48.861181640625006],[130.1959960937501,48.89165039062499],[129.49814453125012,49.38881835937502],[129.0651367187501,49.374658203124966],[128.70400390625,49.60014648437499],[127.99960937500006,49.56860351562506],[127.55078124999997,49.801806640625045],[127.590234375,50.20898437500003],[127.33720703125007,50.35014648437502],[127.30703125000005,50.70795898437501],[126.92480468749997,51.10014648437496],[126.34169921875,52.36201171875001],[125.64902343750012,53.042285156250045],[125.075,53.20366210937496],[124.81230468750002,53.133837890625045],[123.6078125,53.546533203124994],[120.98544921875012,53.28457031250002],[120.09453125000007,52.787207031250034],[120.0675781250001,52.632910156250034],[120.65615234375,52.56665039062503],[120.74980468750007,52.096533203125006],[120.06689453125003,51.60068359375006],[119.16367187500006,50.40600585937503],[119.34628906250012,50.278955078124994],[119.25986328125012,50.06640625000003],[118.4515625,49.84448242187503],[117.8734375,49.51347656250002],[116.6833007812501,49.82377929687499],[116.551171875,49.92031250000002],[116.35117187500012,49.97807617187499],[116.21679687500003,50.00927734375003],[116.13457031250002,50.01079101562499],[115.9259765625001,49.95214843750003],[115.79521484375002,49.90590820312502],[115.71777343750003,49.88061523437503],[115.58798828125006,49.88603515624996],[115.42919921874997,49.89648437499997],[115.36503906250002,49.911767578124966],[115.27451171875006,49.948876953124994],[115.00332031250005,50.138574218749994],[114.74316406249997,50.23369140625002],[114.29707031250004,50.27441406250006],[113.57421874999997,50.00703125000001],[113.44550781250004,49.94160156250001],[113.31904296875004,49.87431640624999],[113.16416015625012,49.79716796874999],[113.09208984375007,49.692529296874994],[113.05556640625,49.61625976562499],[112.91484375000002,49.569238281249994],[112.80644531250007,49.52358398437502],[112.69736328125012,49.50727539062498],[112.49492187500002,49.532324218750034],[112.07968750000006,49.42421875000002],[111.42929687500006,49.342626953125034],[111.3366210937501,49.355859374999966],[111.20419921875012,49.304296875000034],[110.82792968750002,49.16616210937505],[110.70976562500002,49.14296875000002],[110.42783203125006,49.219970703125],[110.32138671875012,49.215869140625045],[110.19990234375004,49.17041015625003],[109.5287109375,49.269873046875034],[109.45371093750012,49.29633789062501],[109.23671875000005,49.334912109374955],[108.61367187500005,49.32280273437499],[108.52246093750003,49.34150390624998],[108.4069335937501,49.39638671875005],[107.96542968750012,49.65351562500004],[107.91660156250012,49.947802734375045],[107.63095703125012,49.98310546875004],[107.3470703125,49.986669921875034],[107.23330078125,49.989404296874994],[107.14306640625003,50.03300781249999],[107.04023437500004,50.086474609375045],[106.94130859375005,50.19667968750002],[106.71113281250004,50.312597656250006],[106.57441406250004,50.32880859375004],[106.36845703125002,50.317578124999955],[106.21787109375006,50.304589843749966],[105.38359375000002,50.47373046874998],[104.07871093750012,50.15424804687498],[103.63291015625006,50.138574218749994],[103.49628906250004,50.16494140625005],[103.42119140625002,50.18706054687502],[103.3043945312501,50.200292968750034],[102.28837890625007,50.58510742187502],[102.31660156250004,50.71845703125001],[102.21503906250004,50.82944335937506],[102.19453125000004,51.05068359375002],[102.15195312500006,51.107519531250034],[102.14238281250007,51.21606445312503],[102.16005859375005,51.260839843750006],[102.1556640625,51.31376953124996],[102.1115234375001,51.353466796874955],[101.97919921875004,51.382226562499966],[101.82119140625,51.421044921874966],[101.57089843750006,51.46718750000005],[101.38125,51.45263671875],[100.53623046875006,51.713476562500034],[100.46894531250004,51.72607421875003],[100.23037109375,51.729833984375006],[100.0345703125,51.73710937499996],[99.92167968750002,51.755517578124994],[99.71923828124997,51.87163085937502],[98.89316406250006,52.11728515625006],[98.64052734375005,51.80117187500005],[98.103125,51.483544921874994],[97.82529296875012,50.985253906249994],[97.953125,50.85517578124998],[98.02978515625003,50.64462890624998],[98.07890625000002,50.60380859375002],[98.14501953124997,50.56855468750001],[98.22050781250007,50.55717773437502],[98.2794921875001,50.53325195312502],[98.25029296875002,50.30244140624998],[98.00390625000003,50.01425781249998],[97.35976562500005,49.741455078125],[97.20859375000006,49.73081054687506],[96.98574218750005,49.88281250000003],[96.31503906250012,49.90112304687503],[96.06552734375006,49.99873046875001],[95.52265625000004,49.911230468750034],[95.11142578125012,49.935449218749994],[94.93027343750006,50.04375],[94.8112304687501,50.04819335937506],[94.71806640625002,50.04326171875002],[94.67548828125004,50.02807617187506],[94.61474609375003,50.02373046874996],[94.56464843750004,50.08793945312499],[94.35468750000004,50.221826171874994],[94.25107421875006,50.55639648437503],[93.103125,50.60390625000002],[92.94130859375005,50.77822265625002],[92.85644531250003,50.78911132812502],[92.77929687500003,50.778662109375006],[92.738671875,50.71093749999997],[92.68134765625004,50.683203125],[92.6266601562501,50.68828124999999],[92.57890625000002,50.725439453125006],[92.42636718750006,50.803076171875006],[92.35478515625002,50.86416015625002],[92.29580078125,50.84980468750004],[92.19238281249997,50.700585937499994],[91.80429687500006,50.693603515625],[91.4464843750001,50.52216796874998],[91.41503906249997,50.46801757812506],[91.34082031249997,50.470068359375034],[91.30058593750002,50.46337890625],[91.2337890625,50.45239257812497],[91.02158203125012,50.41547851562501],[90.83808593750004,50.32373046874997],[90.76074218749997,50.30595703124999],[90.71435546874997,50.25942382812502],[90.65507812500007,50.22236328125001],[90.05371093750003,50.09375],[89.64384765625002,49.90302734374998],[89.65410156250007,49.71748046875001],[89.57919921875006,49.69970703125003],[89.475,49.66054687500005],[89.39560546875006,49.61152343750001],[89.24394531250007,49.62705078125006],[89.20292968750007,49.59570312499997],[89.17998046875002,49.5322265625],[89.10947265625012,49.50136718750002],[89.00839843750006,49.472802734374994],[88.97060546875,49.483740234375006],[88.94541015625012,49.50766601562498],[88.90019531250002,49.53969726562502],[88.86386718750006,49.52763671874996],[88.83164062500012,49.44843749999998],[88.633203125,49.486132812500045],[88.19257812500004,49.451708984375045],[88.13554687500002,49.38149414062502],[88.11572265624997,49.25629882812501],[88.0285156250001,49.219775390625045],[87.98808593750002,49.186914062499994],[87.9347656250001,49.16455078124997],[87.81425781250002,49.162304687499955],[87.7625,49.16582031249996],[87.5158203125001,49.122412109375006],[87.41669921875004,49.07661132812501],[87.32285156250012,49.085791015625006],[86.62646484374997,49.56269531250001],[86.67548828125004,49.77729492187501],[86.1808593750001,49.49931640624996],[85.2326171875001,49.61582031249998],[84.9894531250001,50.061425781249994],[84.32324218749997,50.239160156249966],[83.94511718750007,50.774658203125],[83.35732421875005,50.99458007812504],[82.76083984375012,50.89335937500002],[82.49394531250007,50.72758789062499],[81.46591796875006,50.73984375],[81.38828125000006,50.95649414062501],[81.0714843750001,50.96875],[81.12724609375002,51.19106445312502],[80.73525390625,51.29340820312498],[80.44804687500002,51.18334960937503],[80.42363281250002,50.94628906249997],[79.98623046875,50.774560546874966],[77.85996093750006,53.269189453124994],[76.48476562500005,54.02255859374998],[76.42167968750007,54.151513671874966],[76.65458984375007,54.14526367187503],[76.8373046875,54.4423828125],[75.43720703125004,54.08964843749999],[75.22021484374997,53.89379882812506],[74.45195312500007,53.64726562500002],[74.35156250000003,53.487646484375006],[73.85898437500006,53.61972656249998],[73.40693359375004,53.44755859374999],[73.30566406250003,53.707226562499955],[73.71240234375003,54.04238281250002],[73.22988281250005,53.957812500000045],[72.62226562500004,54.13432617187502],[72.44677734375003,53.94184570312498],[72.18603515625003,54.32563476562501],[72.00449218750006,54.20566406249998],[71.09316406250005,54.21220703124999],[71.18554687500003,54.59931640624998],[70.73808593750007,55.30517578125],[70.18242187500002,55.162451171875034],[68.9772460937501,55.389599609374955],[68.20625,55.16093750000002],[68.15585937500006,54.97670898437505],[65.476953125,54.62329101562497],[65.08837890624997,54.340185546875034],[64.46123046875002,54.38417968750002],[61.92871093750003,53.94648437500004],[61.231054687500006,54.01948242187498],[60.97949218749997,53.62172851562505],[61.53496093750002,53.52329101562506],[61.22890625,53.445898437500006],[61.19921874999997,53.28715820312502],[61.65986328125004,53.22846679687504],[62.08271484375004,53.00541992187499],[61.047460937500006,52.97246093750002],[60.77441406249997,52.67578124999997],[60.99453125000005,52.33686523437504],[60.03027343749997,51.93325195312505],[60.464746093749994,51.651171875000045],[61.55468750000003,51.32460937500005],[61.38945312500002,50.86103515625001],[60.94228515625005,50.69550781250004],[60.42480468749997,50.67915039062498],[60.05859374999997,50.850292968749955],[59.812402343749994,50.58203125],[59.523046875,50.492871093749955],[59.4523437500001,50.62041015625002],[58.88369140625005,50.694433593750006],[58.359179687500074,51.063818359375034],[57.83886718750003,51.091650390625006],[57.44218750000002,50.88886718749998],[57.01171874999997,51.06518554687503],[56.49140625000004,51.01953124999997],[55.68623046875004,50.582861328125006],[54.64160156250003,51.011572265625034],[54.555273437500006,50.535791015624994],[54.139746093750006,51.04077148437503],[53.33808593750004,51.48237304687504],[52.57119140625005,51.481640624999955],[52.21914062499999,51.709375],[51.344531250000074,51.47534179687503],[51.16347656250005,51.6474609375],[50.79394531249997,51.729199218749955],[50.246875,51.28950195312498],[49.49804687500003,51.08359375000006],[49.32343750000004,50.851708984374966],[48.625097656250006,50.61269531250005],[48.7589843750001,49.92832031250006],[48.33496093750003,49.858251953125006],[47.7057617187501,50.37797851562502],[47.42919921874997,50.35795898437502],[46.889550781249994,49.69697265625001],[46.80205078125002,49.36708984375002],[47.031347656250006,49.150292968749994],[46.70263671875003,48.80556640625002],[46.660937500000074,48.41225585937502],[47.06464843750004,48.23247070312499],[47.292382812499994,47.74091796875004],[47.48193359374997,47.80390624999998],[48.16699218750003,47.70878906249996],[48.959375,46.77460937499998],[48.558398437500074,46.75712890624999],[48.54121093750004,46.60561523437502],[49.232226562500074,46.33715820312503],[48.683691406250006,46.08618164062497],[48.72958984375006,45.896826171875034],[48.4870117187501,45.93486328124996],[47.63330078124997,45.58403320312499],[47.46328125,45.67968750000003],[47.5294921875001,45.530224609374955],[47.3512695312501,45.21772460937498],[46.7072265625001,44.503320312499994],[47.30703125000005,44.103125],[47.462792968749994,43.55502929687498],[47.64648437500003,43.88461914062498],[47.463183593750074,43.03505859375002],[48.572851562500006,41.84448242187503],[47.79101562499997,41.19926757812502],[47.31767578125002,41.28242187500001],[46.74931640625002,41.812597656250006],[46.42988281250004,41.890966796875006],[46.21269531250002,41.989892578124994],[45.63857421875005,42.20507812500003],[45.63427734374997,42.234716796875034],[45.72753906249997,42.47504882812498],[45.70527343750004,42.49809570312496],[45.56289062499999,42.53574218749998],[45.34375,42.52978515625003],[45.16025390625006,42.675],[45.07158203125002,42.69414062500002],[44.94335937499997,42.73027343750002],[44.870996093749994,42.75639648437499],[44.850488281249994,42.746826171875],[44.77109375000006,42.61679687499998],[44.69179687499999,42.709619140624966],[44.64433593750002,42.734716796875034],[44.50585937500003,42.748632812500006],[44.329492187499994,42.703515624999966],[44.10273437500004,42.616357421874994],[44.004687500000074,42.59560546875002],[43.95742187500005,42.56655273437505],[43.825976562500074,42.571533203125],[43.759863281250006,42.593847656250006],[43.738378906250006,42.61699218750002],[43.74990234375005,42.65751953125002],[43.79541015624997,42.702978515625034],[43.78261718750005,42.747021484374955],[43.62304687500003,42.80771484374998],[43.5578125000001,42.844482421875],[43.089160156250074,42.9890625],[43.00019531250004,43.04965820312506],[42.991601562499994,43.09150390624998],[42.76064453125005,43.169580078124966],[41.58056640624997,43.21923828124997],[41.460742187500074,43.276318359374955],[41.35820312500002,43.33339843750005],[41.08310546875006,43.37446289062498],[40.94199218750006,43.41806640624998],[40.801660156249994,43.479931640624955],[40.64804687500006,43.53388671875004],[40.084570312500006,43.553125],[40.02373046875002,43.48486328125],[39.873632812500006,43.47280273437502],[38.71728515624997,44.28808593750003],[38.18125,44.41967773437503],[37.851464843749994,44.698828125000034],[37.49511718750003,44.69526367187504],[37.20478515625004,44.97197265624999],[36.62763671875004,45.15131835937504],[36.941210937500074,45.289697265624994],[36.72041015625004,45.371875],[36.8659179687501,45.42705078124999],[37.21357421875004,45.272314453125006],[37.6471679687501,45.37719726562506],[37.61240234375006,45.56469726562506],[37.93310546875003,46.001708984375],[38.014257812500006,46.047753906249966],[38.07958984375003,45.93481445312506],[38.18359374999997,46.09482421875006],[38.49228515625006,46.09052734374998],[37.913867187500074,46.40649414062503],[37.766503906249994,46.63613281250002],[38.50097656249997,46.663671875000034],[38.43867187500004,46.813085937500006],[39.29345703125003,47.105761718750045],[39.19570312499999,47.268847656250045],[39.023730468750074,47.27221679687503],[38.928320312500006,47.175683593749994],[38.55244140625004,47.15034179687498],[38.7619140625001,47.261621093749994],[38.21435546875003,47.091455078124966],[38.36884765625004,47.609960937500006],[38.90029296875005,47.85512695312502],[39.77871093750005,47.88754882812506],[39.95791015625005,48.268896484375034],[39.8356445312501,48.54277343749996],[39.6447265625001,48.591210937499966],[39.792871093749994,48.807714843750034],[40.00361328125004,48.82207031250002],[39.68652343749997,49.007910156250034],[40.10878906250005,49.251562500000034],[40.080664062500006,49.576855468749955],[39.780566406250074,49.57202148437503],[39.17480468750003,49.85595703124997],[38.91835937499999,49.82470703125],[38.258593750000074,50.05234375],[38.046875,49.92001953125006],[37.42285156249997,50.411474609375006],[36.619433593750074,50.209228515625],[36.1164062500001,50.408544921875006],[35.59111328125002,50.36875],[35.31191406250005,51.043896484374955],[35.0640625,51.203417968750045],[34.21386718750003,51.25537109375006],[34.12109375000003,51.67915039062498],[34.397851562499994,51.780419921874994],[33.735253906249994,52.344775390625045],[32.435449218749994,52.307226562500034],[32.12226562500004,52.05058593749996],[31.763378906250097,52.10107421875003],[31.758593750000017,52.125830078125034],[31.690625,52.22065429687498],[31.64990234374997,52.26220703125],[31.60156250000003,52.284814453124994],[31.57734375000004,52.31230468749999],[31.585546875,52.532470703125],[31.56484375,52.75922851562501],[31.53515624999997,52.798242187499966],[31.442773437499994,52.86181640625003],[31.35302734374997,52.93344726562498],[31.295117187500097,52.98979492187499],[31.25878906249997,53.01669921875006],[31.364550781250017,53.13896484375002],[31.388378906250097,53.18481445312503],[31.41787109375005,53.196044921875],[31.849707031250006,53.106201171875],[32.14199218750005,53.091162109375034],[32.46933593750006,53.270312500000045],[32.578027343749994,53.312402343749994],[32.644433593749994,53.32890624999999],[32.70429687500004,53.33632812499999],[32.45097656250002,53.6533203125],[32.20039062500004,53.78125],[31.99218750000003,53.796875],[31.82080078124997,53.79194335937498],[31.754199218750017,53.81044921875002],[31.825292968750006,53.93500976562501],[31.837792968749994,54.00078124999999],[31.825976562500074,54.030712890624955],[31.79199218749997,54.05590820312503],[31.62841796874997,54.111181640625006],[31.403613281250017,54.195947265624966],[31.299121093750017,54.29169921875001],[31.184765625000097,54.452978515625006],[31.074804687500063,54.491796875],[31.154882812500063,54.610937500000034],[31.152148437500017,54.625341796875034],[31.12128906250004,54.64848632812496],[30.984179687500074,54.695898437500034],[30.79882812499997,54.78325195312499],[30.79101562499997,54.806005859375006],[30.804492187500074,54.8609375],[30.829882812500017,54.91499023437498],[30.977734375000097,55.05048828124998],[30.977734375000097,55.08779296875002],[30.958886718749994,55.13759765625005],[30.87744140625003,55.223437500000045],[30.81445312499997,55.27871093750002],[30.81054687499997,55.306982421875006],[30.82099609375004,55.330273437499955],[30.900585937500097,55.397412109374955],[30.906835937500063,55.57001953125004],[30.625585937500006,55.666259765625],[30.23359375000004,55.84521484375006],[30.04267578125004,55.83642578125003],[29.93701171874997,55.84526367187499],[29.881640625000074,55.83232421875002],[29.82392578125004,55.79511718749998],[29.74414062499997,55.770410156249994],[29.630078125000097,55.75117187499998],[29.482226562500074,55.6845703125],[29.412988281249994,55.72485351562506],[29.35341796875005,55.784375],[29.375,55.938720703125],[28.284277343750006,56.055908203125],[28.14794921875003,56.142919921875034],[28.202050781250023,56.260400390624994],[28.191699218750045,56.31557617187505],[28.169238281250017,56.386865234374994],[28.11083984375,56.51069335937501],[28.103125,56.545703125000045],[27.89208984375003,56.741064453125034],[27.88154296875001,56.82416992187501],[27.848632812500057,56.85341796875002],[27.806054687499994,56.86708984375005],[27.639453125000074,56.84565429687504],[27.83027343750004,57.19448242187505],[27.83828125000008,57.247705078124966],[27.82861328124997,57.293310546875006],[27.796875,57.316943359375045],[27.538671875000063,57.429785156250034],[27.51113281250005,57.508154296875006],[27.469726562500057,57.524023437500034],[27.35195312500005,57.528125],[27.4,57.66679687499999],[27.542089843750063,57.799414062500006],[27.778515625000068,57.87070312500006],[27.502441406250057,58.221337890624994],[27.434179687500006,58.787255859374994],[28.15107421875004,59.374414062499966],[28.0125,59.484277343749966],[28.05800781250008,59.781542968750045],[28.334570312500034,59.69252929687502],[28.518164062500034,59.849560546874955],[28.947265625000057,59.828759765624994],[29.147265625000045,59.999755859375],[30.12255859374997,59.873583984375074],[30.172656250000017,59.957128906250034],[29.72119140624997,60.19531249999997],[29.069140625000017,60.19145507812499],[28.643164062500006,60.375292968750045],[28.512792968750006,60.67729492187502],[27.797656250000074,60.53613281250003],[29.69013671875004,61.54609375000001],[31.18671875000004,62.48139648437504],[31.533984375000017,62.885400390624994],[31.180859375000097,63.208300781250074],[29.991503906250074,63.73515625000002],[30.50390625000003,64.02060546875],[30.513769531250006,64.2],[30.04189453125005,64.44335937499997],[30.072851562500063,64.76503906250005],[29.60419921875004,64.968408203125],[29.826953125000017,65.14506835937502],[29.608007812500006,65.248681640625],[29.715917968750063,65.62456054687502],[30.102734375000097,65.72626953125004],[29.066210937500045,66.89174804687497],[29.988085937500017,67.66826171874999],[29.343847656250006,68.06186523437506],[28.685156250000034,68.189794921875],[28.470703125000057,68.48837890625],[28.77285156250005,68.84003906249995],[28.414062500000057,68.90415039062506],[28.96582031250003,69.02197265625],[29.38828125,69.29814453125005],[30.08730468750005,69.43286132812503],[30.18017578124997,69.63583984375],[30.860742187499994,69.53842773437503],[30.869726562500006,69.78344726562506],[31.546972656250063,69.696923828125],[31.997949218749994,69.80991210937503],[31.98457031250004,69.95366210937499],[33.00781249999997,69.72211914062498],[32.91503906249997,69.60170898437497],[32.17675781250003,69.67402343749995],[32.37773437500002,69.47910156250003],[32.99980468750002,69.4701171875],[32.97890625000005,69.367333984375],[33.45429687500004,69.42817382812495],[33.14121093750006,69.068701171875],[33.684375,69.31025390625001],[35.85791015625003,69.19174804687503],[37.73056640625006,68.69213867187503],[38.43017578125003,68.35561523437505],[39.568945312500006,68.07172851562501],[39.82333984375006,68.05859375],[39.80927734375004,68.15083007812498],[40.38066406250002,67.831884765625],[40.96640625000006,67.71347656250003],[41.358789062499994,67.20966796874998],[41.18896484375003,66.82617187500003],[40.10332031250002,66.29995117187502],[38.65390625000006,66.06904296874995],[35.51347656250002,66.39580078125002],[34.82460937499999,66.61113281249999],[34.48261718750004,66.55034179687505],[34.4515625,66.651220703125],[33.15019531250002,66.84394531250001],[32.93046875000002,67.08681640625002],[31.895312500000074,67.16142578125002],[33.65595703125004,66.44262695312506],[33.36054687500004,66.32954101562501],[34.112695312499994,66.225244140625],[34.69179687500005,65.95185546874998],[34.77695312500006,65.76826171874998],[34.40644531250004,65.39575195312503],[35.03535156250004,64.44023437500005],[35.802050781250074,64.3353515625],[36.3649414062501,64.00283203125002],[37.44218750000002,63.813378906249966],[37.9679687500001,63.949121093749994],[38.0622070312501,64.09101562499995],[37.953710937500006,64.32011718749999],[37.183691406250006,64.40849609375007],[36.6242187500001,64.75053710937502],[36.534570312499994,64.93862304687497],[36.88281249999997,65.17236328124997],[39.7580078125001,64.57705078125002],[40.05781250000004,64.77075195312497],[40.44492187500006,64.7787109375],[39.7980468750001,65.349853515625],[39.816503906250006,65.59794921874999],[41.4757812500001,66.12343750000002],[42.21054687500006,66.51967773437502],[43.23320312500002,66.41552734375003],[43.653125,66.2509765625],[43.54189453125005,66.12338867187503],[43.84375,66.14238281249999],[44.10439453125005,66.00859374999999],[44.42929687500006,66.93774414062503],[43.7824218750001,67.25449218749998],[44.20468750000006,68.25375976562498],[43.33320312500004,68.67338867187502],[44.04804687500004,68.54882812499997],[45.891992187499994,68.47968750000001],[46.69042968750003,67.84882812500001],[45.52871093750005,67.75756835937497],[44.90214843750002,67.41313476562505],[45.56220703125004,67.18559570312507],[45.88535156250006,66.89106445312501],[46.4923828125001,66.80019531249997],[47.65585937500006,66.97592773437498],[47.87470703125004,67.58417968749998],[48.83320312500004,67.681494140625],[48.75429687500005,67.89594726562501],[49.15527343750003,67.87041015625005],[51.994726562500006,68.53876953124995],[52.3966796875001,68.35170898437505],[52.72265624999997,68.484033203125],[52.34404296875002,68.60815429687497],[53.80195312500004,68.99589843750002],[54.49121093750003,68.992333984375],[53.797656250000074,68.90747070312503],[53.9308593750001,68.43554687499997],[53.260546875000074,68.26748046875002],[54.476171875,68.29414062499995],[54.86132812500003,68.20185546874998],[55.418066406250006,68.56782226562501],[56.04365234375004,68.64887695312501],[57.126855468749994,68.55400390625005],[58.17304687500004,68.88974609375006],[59.0573242187501,69.00605468750004],[59.37050781250005,68.73837890625003],[59.09902343750005,68.4443359375],[59.725683593750006,68.35161132812502],[59.89599609374997,68.70634765624999],[60.489160156249994,68.72895507812498],[60.93359374999997,68.98676757812501],[60.17060546875004,69.59091796875],[60.90908203125005,69.84711914062495],[64.19042968750003,69.53466796875],[64.89628906250002,69.247802734375],[67.00244140625003,68.87358398437505],[68.37119140625006,68.31425781250005],[69.14052734375005,68.95063476562501],[68.54277343750002,68.96708984374999],[68.00585937499997,69.48002929687505],[67.62412109375,69.58442382812501],[67.06445312500003,69.69370117187498],[66.89667968750004,69.55380859374998],[67.28476562500006,70.73872070312498],[67.14335937500002,70.83754882812502],[66.70224609375006,70.81850585937497],[66.63964843749997,71.08139648437498],[68.2692382812501,71.68281250000001],[69.61181640625003,72.98193359375],[69.73828124999997,72.88496093749998],[71.5001953125001,72.91367187500003],[72.812109375,72.69140624999997],[72.57412109375,72.01254882812506],[71.86728515625,71.457373046875],[72.70449218750005,70.96323242187498],[72.5767578125,68.96870117187498],[73.59169921875005,68.48188476562501],[73.13945312500002,68.18134765624998],[73.06679687500005,67.766943359375],[71.84746093750002,67.00761718750005],[71.36523437500003,66.96152343749998],[71.53955078125003,66.68310546875],[70.72490234375007,66.51943359374997],[70.38281249999997,66.60249023437501],[70.69072265625002,66.74531249999998],[70.2833984375001,66.68579101562503],[69.8771484375001,66.84545898437506],[69.21777343749997,66.82861328125],[69.01347656250002,66.78833007812503],[69.19433593749997,66.57866210937505],[70.33945312500006,66.34238281250006],[71.35800781250006,66.35942382812505],[71.91699218749997,66.24672851562502],[72.32158203125002,66.33212890625],[72.4173828125,66.56079101562506],[73.79208984375,66.99531250000001],[74.07451171875007,67.41411132812499],[74.76953124999997,67.76635742187497],[74.39140625000007,68.42060546874995],[74.57958984375003,68.751220703125],[76.10751953125006,68.975732421875],[76.45917968750004,68.97827148437497],[77.2384765625001,68.46958007812498],[77.17441406250012,67.77851562499998],[77.77158203125006,67.57026367187501],[78.92246093750006,67.58911132812503],[77.58828125000005,67.75190429687498],[77.66484375000002,68.19038085937495],[77.99511718749997,68.25947265624998],[77.65068359375007,68.90302734375001],[76.00097656249997,69.23505859374998],[75.42001953125,69.23862304687498],[74.81484375,69.09057617187503],[73.83603515625006,69.143212890625],[73.578125,69.80297851562503],[74.34335937500006,70.57871093749998],[73.08623046875007,71.44492187500006],[73.67177734375,71.84506835937503],[74.99218749999997,72.14482421874999],[74.78681640625004,72.811865234375],[75.15244140625,72.85273437499998],[75.74140625000004,72.29624023437503],[75.273828125,71.95893554687495],[75.33203125000003,71.34174804687498],[76.92900390625002,71.12788085937504],[77.58964843750007,71.16791992187501],[78.32060546875002,70.93041992187503],[78.94218750000002,70.93378906250001],[79.08388671875,71.00200195312505],[78.58769531250007,70.993896484375],[78.21259765625004,71.26630859374998],[76.43339843750002,71.55249023437503],[76.03242187500004,71.91040039062503],[76.87138671875002,72.03300781250005],[77.77753906250004,71.83642578125006],[78.23242187500003,71.95229492187502],[78.01640625000007,72.092041015625],[77.49287109375004,72.07172851562504],[77.47158203125,72.19213867187506],[78.22539062500007,72.37744140625006],[79.4220703125001,72.38076171875002],[80.7625,72.08916015625002],[81.66162109374997,71.71596679687502],[82.75781250000003,71.76411132812498],[83.23359375000004,71.66816406249995],[82.32285156250006,71.26000976562503],[82.16318359375012,70.59814453125003],[82.22119140625003,70.39570312499998],[82.86914062499997,70.95483398437503],[83.03017578125,70.58051757812498],[82.6823242187501,70.21772460937498],[83.0807617187501,70.09301757812497],[83.07382812500012,70.276708984375],[83.73593750000006,70.54648437499998],[83.15126953125005,71.10361328124998],[83.534375,71.68393554687498],[83.20029296875012,71.87470703125004],[82.64541015625005,71.92524414062504],[82.09365234375,72.26542968750005],[80.82705078125005,72.48828124999997],[80.84160156250007,72.94916992187498],[80.4245117187501,73.23115234374998],[80.5832031250001,73.56845703125003],[85.20058593750005,73.72153320312506],[86.89296875,73.88710937500002],[85.79257812500012,73.438330078125],[86.67705078125002,73.10678710937503],[85.93896484374997,73.45649414062495],[87.12011718750003,73.61503906250002],[87.57119140625,73.81074218750001],[86.57109375000007,74.24375],[86.0013671875,74.316015625],[86.39580078125007,74.45009765624997],[86.89794921874997,74.32534179687497],[87.22968750000004,74.3638671875],[85.79101562499997,74.6451171875],[86.20126953125006,74.81621093750005],[86.65146484375012,74.68242187500005],[87.04179687500007,74.77885742187499],[87.46757812500002,75.01323242187505],[86.93906250000006,75.06811523437503],[87.00595703125012,75.16982421874997],[87.67138671874997,75.12958984375004],[90.18496093750005,75.59106445312497],[94.07519531249997,75.91289062499999],[92.89042968750002,75.90996093750002],[93.25927734375003,76.09877929687502],[95.57871093750012,76.13730468749998],[96.07548828125007,76.08198242187498],[95.65332031250003,75.89218750000003],[96.50859375000002,76.00556640624995],[96.49707031249997,75.89121093750003],[98.66201171875005,76.24267578125003],[99.77041015625,76.02875976562498],[99.5407226562501,75.79858398437497],[99.85136718750007,75.93027343749998],[99.8253906250001,76.13593749999995],[98.80566406250003,76.48066406250004],[100.84375,76.52519531250005],[101.59775390625006,76.43920898437503],[100.92802734375002,76.55673828124998],[100.98994140625004,76.99047851562497],[102.61015625000007,77.508544921875],[104.01455078125,77.73041992187501],[106.05957031249997,77.39052734375002],[104.20244140625002,77.101806640625],[106.9416015625001,77.034375],[107.42978515625006,76.92656250000002],[106.41357421874997,76.51225585937499],[107.72216796875003,76.52231445312498],[108.18164062500003,76.73784179687502],[111.39248046875,76.686669921875],[112.09394531250004,76.48032226562506],[111.94267578125002,76.38046875000003],[112.61953125,76.38354492187506],[112.65625,76.05356445312498],[113.2726562500001,76.25166015625001],[113.5638671875,75.89165039062502],[113.85722656250007,75.92128906250002],[113.56757812500004,75.56840820312499],[112.45302734375,75.83017578125003],[112.95566406250006,75.571923828125],[113.24296875000007,75.61142578125003],[113.72617187500012,75.45063476562498],[112.92490234375012,75.01503906249997],[109.84033203124997,74.32197265624998],[109.8102539062501,74.16918945312503],[108.19951171875002,73.69409179687497],[107.27109375000006,73.62104492187501],[106.67939453125004,73.3306640625],[106.1886718750001,73.3080078125],[105.14394531250005,72.77705078125001],[105.7082031250001,72.836669921875],[106.47792968750005,73.13940429687503],[107.750390625,73.17314453125007],[109.33105468749997,73.48745117187497],[109.85527343750002,73.47246093750002],[110.86816406249997,73.73071289062497],[109.70673828125004,73.74375],[110.2614257812501,74.01743164062503],[111.05625,73.93935546875002],[111.13085937500003,74.05283203125003],[111.55058593750007,74.02851562499998],[111.22812500000012,73.96855468750002],[111.40039062500003,73.827734375],[112.14726562500007,73.70893554687498],[112.79541015625003,73.74609375],[112.83593750000003,73.96206054687502],[113.03281250000006,73.91386718750007],[113.4162109375001,73.647607421875],[113.15693359375004,73.45957031249998],[113.49091796875004,73.34609375000002],[113.12783203125,72.8306640625],[113.66455078124997,72.63452148437503],[113.2155273437501,72.80585937500001],[113.88623046875003,73.34580078124998],[113.51035156250012,73.50498046874998],[115.33769531250007,73.70258789062501],[118.87089843750007,73.53789062500002],[118.45703124999997,73.46440429687507],[118.43027343750012,73.24653320312501],[119.750390625,72.97910156250006],[122.26015625,72.88056640624995],[122.75195312500003,72.906494140625],[122.61523437499997,73.02792968750006],[123.1603515625001,72.95488281250002],[123.62226562500004,73.19326171875],[123.49111328125005,73.666357421875],[124.54121093750004,73.75126953125007],[125.59853515625005,73.447412109375],[126.25449218750012,73.548193359375],[126.55253906250007,73.33491210937498],[127.03134765625006,73.54746093750003],[127.74033203125012,73.48154296875],[129.10058593750003,73.11235351562502],[128.5990234375,72.895166015625],[129.01728515625004,72.8724609375],[129.250390625,72.70517578125003],[128.41826171875002,72.53515625000003],[129.28134765625006,72.43769531249998],[129.41064453124997,72.16630859375002],[128.93496093750005,72.07949218750002],[127.8034179687501,72.43403320312504],[127.84140625000012,72.308251953125],[128.91142578125002,71.75532226562495],[129.21025390625007,71.91694335937501],[129.46083984375,71.73930664062499],[128.84326171875003,71.6634765625],[129.76191406250004,71.11953125000002],[130.53710937500003,70.89252929687495],[130.75712890625002,70.96235351562498],[131.02158203125006,70.74609374999997],[132.0353515625001,71.24404296875],[132.65390625000006,71.92597656250001],[133.6888671875,71.434228515625],[134.70273437500012,71.38681640625003],[135.55917968750006,71.6103515625],[136.09033203125003,71.61958007812501],[137.9396484375001,71.1333984375],[137.84404296875007,71.22680664062503],[138.31406250000006,71.32553710937498],[137.918359375,71.38408203124999],[138.23417968750007,71.596337890625],[138.78017578125,71.62900390624998],[139.209375,71.44477539062501],[139.98417968750007,71.49150390625005],[139.72294921875002,71.88496093749998],[139.35927734375005,71.95136718750001],[140.18769531250004,72.19130859374997],[139.17636718750006,72.16347656249997],[139.14082031250004,72.32973632812502],[139.60117187500012,72.49609374999997],[141.07929687500004,72.5869140625],[140.80820312500006,72.89096679687503],[142.06142578125005,72.72080078125],[146.25292968749997,72.442236328125],[146.234765625,72.34970703125],[144.77636718749997,72.38227539062495],[144.16923828125002,72.25878906250003],[144.29492187499997,72.19262695312497],[146.83183593750007,72.29541015625003],[146.11328125000003,71.94497070312497],[146.23027343750007,72.1375],[145.75859375000007,72.22587890624999],[145.75673828125005,71.94130859375002],[145.06396484374997,71.92607421875002],[145.18857421875012,71.69580078125],[146.07324218749997,71.80834960937503],[147.26181640625006,72.327880859375],[149.50156250000012,72.16430664062497],[150.01689453125002,71.89565429687505],[149.04873046875005,71.79575195312503],[148.9681640625,71.69047851562499],[150.59980468750004,71.5201171875],[150.09765624999997,71.22656249999997],[150.96777343749997,71.38046874999998],[151.58242187500005,71.28696289062503],[152.09277343749997,71.02329101562503],[151.76201171875002,70.98247070312499],[152.50878906250003,70.83447265625003],[156.68457031250003,71.09375],[158.03701171875005,71.03925781250001],[159.35068359375006,70.79072265625001],[160.00644531250006,70.30966796875006],[159.72939453125005,69.87021484375006],[160.91074218750012,69.60634765625002],[161.03554687500005,69.09819335937507],[161.30986328125007,68.98227539062498],[160.85605468750006,68.53833007812506],[161.565625,68.90517578125],[161.53691406250002,69.379541015625],[162.16601562499997,69.61157226562503],[163.20136718750004,69.71474609375],[166.82031250000003,69.49956054687505],[167.8568359375,69.72822265624998],[168.30302734375002,69.27148437500003],[169.31064453125006,69.07954101562498],[169.60986328124997,68.78603515624997],[170.53759765624997,68.82539062500001],[170.99541015625002,69.04531250000005],[170.58222656250004,69.58334960937506],[170.16093750000007,69.62656249999998],[170.48681640625003,70.107568359375],[173.27744140625006,69.823828125],[173.43867187500004,69.94682617187502],[175.92148437500012,69.89531250000002],[179.27265624999998,69.25966796875002],[180,68.98344726562505],[180,65.06723632812498],[178.51953125000003,64.60297851562498],[177.7486328125,64.71704101562503],[176.88085937499997,65.08193359375002],[176.34101562500015,65.04731445312501],[177.03730468750004,64.99965820312497],[177.22285156250004,64.861669921875],[177.06875,64.78666992187502],[176.06113281250012,64.96088867187498],[174.54882812500009,64.68388671875005],[176.0565429687501,64.90473632812498],[176.35097656250005,64.70512695312502],[176.14091796875007,64.58583984375005],[177.42744140625015,64.76337890624998],[177.43291015625002,64.44448242187502],[177.6875,64.30473632812507],[178.04472656250013,64.21958007812503],[178.22949218749991,64.36440429687497],[178.38144531250018,64.26088867187502],[178.73144531250003,63.667089843750006],[178.44042968750009,63.605566406250006],[178.74404296874994,63.39477539062503],[178.79296874999997,63.54033203125002],[179.38857421875,63.14721679687497],[179.25957031250002,63.00830078125],[179.5705078125001,62.6875],[179.12070312500012,62.32036132812499],[177.292578125,62.59902343750002],[177.33896484375006,62.781347656250034],[177.02353515625012,62.777246093749994],[177.15947265625007,62.56098632812498],[174.51435546875015,61.823632812499966],[173.6234375,61.716064453125],[173.13183593749997,61.40664062500002],[172.85654296875006,61.469189453124955],[172.90800781250002,61.311621093750006],[172.39609375000006,61.16738281250002],[172.39277343750004,61.061767578125],[170.60820312500007,60.434912109375034],[170.3509765625,59.965527343749955],[169.9826171875001,60.067089843749955],[169.2267578125001,60.59594726562497],[168.1375,60.57392578125001],[167.22675781250004,60.406298828125045],[166.27304687500012,59.85625],[166.13603515625007,59.979345703125034],[166.35214843750006,60.48481445312498],[165.08457031250006,60.09858398437498],[164.95371093750006,59.843603515625006],[164.52529296875,60.06127929687503],[164.11328125000003,59.89755859374998],[164.13505859375002,59.984375],[163.74384765625004,60.02802734374998],[163.36484375000012,59.78144531250004],[163.27285156250005,59.302587890625006],[162.14160156249997,58.44741210937502],[161.96005859375012,58.07690429687506],[162.39140625000002,57.717236328124955],[162.65429687499997,57.94824218750003],[163.22578125000004,57.790380859375034],[162.77929687500003,57.35761718749998],[162.79111328125012,56.875390624999966],[162.92207031250004,56.72265625000003],[163.2565429687501,56.68803710937499],[163.33554687500012,56.232519531250006],[163.04736328125003,56.044677734375],[162.84033203125003,56.065625],[162.628125,56.232275390625034],[163.03837890625002,56.521875],[162.67148437500006,56.49008789062498],[162.52822265625005,56.260693359374955],[162.08496093749997,56.08964843750002],[161.72392578125002,55.49614257812499],[162.10556640625006,54.75214843750004],[161.62480468750002,54.51625976562502],[160.77265625000004,54.54135742187498],[160.0744140625001,54.18916015625001],[159.84375,53.78364257812498],[160.02509765625004,53.129589843749955],[159.58593750000003,53.237695312499966],[158.74541015625002,52.90893554687506],[158.47207031250005,53.032373046874966],[158.6087890625,52.873632812500034],[158.49316406249997,52.383154296875034],[158.10351562500003,51.80961914062499],[156.84746093750002,51.006591796875],[156.74775390625004,50.969287109375045],[156.52119140625004,51.38027343750002],[156.36474609374997,52.509375],[156.11035156250003,52.86616210937504],[155.62031250000004,54.86455078125002],[155.5548828125001,55.348486328125034],[155.98251953125012,56.69521484375002],[156.8488281250001,57.290185546874994],[156.97675781250004,57.46630859375],[156.82988281250007,57.77963867187498],[157.4503906250001,57.79926757812498],[157.66640625000005,58.01977539062506],[158.27519531250007,58.00898437499998],[159.21064453125004,58.519433593749966],[159.8473632812501,59.127148437499955],[161.75351562500012,60.15229492187501],[162.06816406250002,60.466406250000034],[163.70996093749997,60.916796875000045],[163.55351562500002,61.02563476562503],[164.00546875000006,61.34379882812499],[163.80439453125004,61.46137695312498],[164.20722656250004,62.29223632812506],[164.59833984375004,62.470556640625034],[165.20810546875012,62.37397460937501],[165.41738281250005,62.447070312500045],[164.418359375,62.704638671875045],[163.33173828125004,62.550927734374994],[163.01767578125006,61.89106445312504],[163.25781249999997,61.69946289062497],[163.08525390625002,61.570556640625],[162.85595703125003,61.705029296874955],[162.39257812500003,61.662109375],[160.76660156249997,60.753320312499966],[160.17363281250002,60.638427734375],[160.37890625000003,61.02548828124998],[159.79042968750005,60.956640625],[160.309375,61.894384765625006],[159.55234375000012,61.71948242187497],[159.18925781250007,61.92939453125001],[158.07011718750002,61.75361328125001],[157.46933593750012,61.798925781250006],[157.0841796875001,61.67568359375002],[155.71611328125002,60.682373046875],[154.97080078125012,60.376660156249955],[154.29306640625006,59.833349609375034],[154.1498046875,59.52851562500001],[154.97128906250006,59.44960937500002],[155.16044921875002,59.19013671875001],[154.45800781250003,59.21655273437497],[154.01093750000004,59.075537109375006],[153.69521484375005,59.22475585937505],[153.36113281250002,59.214794921874955],[152.81787109375003,58.92626953124997],[152.31962890625002,59.03076171875003],[152.08789062499997,58.910449218750045],[151.32675781250006,58.875097656250034],[151.12109375000003,59.08251953125003],[152.26064453125,59.22358398437498],[151.34824218750012,59.561132812500006],[150.4835937500001,59.494384765625],[150.66728515625002,59.55634765625001],[149.64257812499997,59.770410156249994],[149.06523437500002,59.63051757812502],[149.20498046875,59.488183593749966],[148.79707031250004,59.532324218750006],[148.74414062499997,59.37353515624997],[148.96464843750007,59.36914062499997],[148.72666015625006,59.257910156250034],[148.25742187500006,59.414208984374994],[147.51445312500002,59.2685546875],[146.53720703125006,59.45698242187501],[146.0495117187501,59.17055664062502],[145.55458984375,59.413525390624955],[143.19218750000002,59.3701171875],[142.58027343750004,59.240136718749966],[140.79023437500004,58.30346679687503],[140.446875,57.81367187499998],[138.66210937500003,56.96552734375004],[137.69150390625006,56.13935546875004],[135.2625,54.94331054687498],[135.25771484375005,54.73149414062499],[135.85156249999997,54.583935546874955],[136.797265625,54.62099609375005],[136.71884765625006,53.804101562499994],[137.15537109375012,53.82167968750002],[137.14160156249997,54.182226562500006],[137.66601562500003,54.283300781250006],[137.3392578125,54.10053710937498],[137.83476562500002,53.94672851562498],[137.25371093750007,53.546142578125],[137.95048828125007,53.60356445312499],[138.52792968750012,53.959863281249994],[138.56914062500002,53.818798828124955],[138.24970703125004,53.524023437500034],[138.45068359375003,53.53701171875002],[138.69941406250004,53.869726562500034],[138.65722656249997,54.29833984375003],[139.31972656250005,54.19296874999998],[139.707421875,54.27714843749999],[140.68759765625012,53.59643554687503],[141.3737304687501,53.29277343749999],[141.18125,53.01528320312505],[140.83964843750002,53.087890625],[141.25585937499997,52.84013671874996],[141.13242187500006,52.435693359374994],[141.48525390625,52.17851562500002],[141.36689453125004,51.92065429687506],[140.93261718750003,51.61992187499999],[140.5208984375,50.80019531250005],[140.62451171874997,50.08242187500002],[140.46269531250002,49.911474609375006],[140.51718750000012,49.59614257812498],[140.17060546875004,48.52368164062497],[138.58681640625005,47.057226562500006],[138.33691406250003,46.543408203124955],[137.68544921875,45.81835937500003],[136.14228515625004,44.489111328125034],[135.87460937500012,44.37353515625003],[135.1310546875001,43.52573242187506],[134.01044921875004,42.94746093750001],[133.15996093750007,42.69697265624998],[132.70898437500003,42.875830078125006],[132.30380859375006,42.88330078125],[132.30957031249997,43.31352539062499],[131.8666015625,43.09516601562501],[131.93896484374997,43.30195312500004],[131.15830078125012,42.62602539062499],[130.709375,42.656396484374966],[130.8341796875001,42.52294921875006],[130.68730468750007,42.30253906249999]]],[[[107.69550781250004,78.13090820312505],[107.48164062500004,78.057763671875],[106.41552734375003,78.13984375000001],[107.69550781250004,78.13090820312505]]],[[[102.88476562499997,79.25395507812505],[102.4123046875001,78.83544921874997],[103.80078124999997,79.14926757812503],[104.45205078125005,78.880029296875],[105.14599609375003,78.81884765625006],[105.31259765625012,78.49990234375],[104.74179687500012,78.33974609374997],[102.79667968750007,78.18789062500002],[101.20410156249997,78.19194335937505],[99.50029296875002,77.97607421875003],[101.590625,79.350439453125],[102.25126953125002,79.25605468749995],[102.40488281250006,79.43320312499998],[102.88476562499997,79.25395507812505]]],[[[76.24892578125005,79.65107421874995],[77.58896484375012,79.50190429687504],[76.64951171875012,79.493408203125],[76.24892578125005,79.65107421874995]]],[[[92.68349609375005,79.685205078125],[91.37626953125007,79.83549804687505],[91.22929687500007,80.03071289062504],[93.803125,79.904541015625],[92.68349609375005,79.685205078125]]],[[[51.409277343750006,79.94423828125],[50.09140625,79.98056640625003],[50.93632812500002,80.09423828125],[51.409277343750006,79.94423828125]]],[[[59.68886718750005,79.95581054687506],[58.91923828125002,79.98461914062506],[59.54453125000006,80.11884765624995],[59.68886718750005,79.95581054687506]]],[[[97.67451171875004,80.15825195312499],[97.65166015625002,79.76064453125],[98.59648437500002,80.05219726562495],[100.0612304687501,79.77709960937506],[99.68066406250003,79.32333984374998],[99.04179687500007,79.29301757812502],[99.92929687500012,78.96142578124997],[98.41113281250003,78.78779296875004],[95.53105468750007,79.09809570312501],[95.02041015625005,79.05268554687498],[94.21875,79.40234375],[93.07080078124997,79.49531250000001],[94.98730468749997,80.096826171875],[95.28134765625012,80.030517578125],[97.67451171875004,80.15825195312499]]],[[[50.05175781250003,80.07431640625003],[49.55605468750005,80.15893554687503],[49.883691406249994,80.230224609375],[50.05175781250003,80.07431640625003]]],[[[57.07871093750006,80.35092773437498],[56.986914062500006,80.07148437499998],[55.811621093750006,80.08715820312497],[56.02441406250003,80.34130859374997],[57.07871093750006,80.35092773437498]]],[[[53.521386718749994,80.18520507812497],[52.34355468750002,80.213232421875],[52.85390625,80.40239257812499],[53.85166015625006,80.26835937500005],[53.521386718749994,80.18520507812497]]],[[[57.95625,80.12324218749995],[57.33232421875002,80.15810546875005],[57.075,80.49394531249999],[59.25546875000006,80.34321289062501],[58.39794921874997,80.31875],[57.95625,80.12324218749995]]],[[[54.41533203125002,80.47280273437502],[53.811914062499994,80.47622070312502],[53.87724609375002,80.60527343750002],[54.41533203125002,80.47280273437502]]],[[[47.441992187500006,80.853662109375],[48.44570312500005,80.80600585937506],[48.68359375000003,80.63325195312504],[47.7052734375001,80.76518554687499],[46.141406250000074,80.44672851562495],[45.969042968750074,80.56948242187502],[44.9049804687501,80.61127929687501],[47.441992187500006,80.853662109375]]],[[[62.167773437500074,80.83476562500005],[62.07578125000006,80.616943359375],[61.05126953124997,80.418603515625],[60.27832031249997,80.49443359374999],[59.649804687499994,80.43125],[59.59228515625003,80.81650390624998],[62.167773437500074,80.83476562500005]]],[[[50.278125,80.92724609374997],[51.70361328125003,80.68764648437502],[48.81103515625003,80.35371093750001],[48.97753906250003,80.16259765624997],[47.73730468749997,80.08168945312502],[47.89296875000005,80.23925781249997],[46.991015625000074,80.182763671875],[46.644433593749994,80.30034179687507],[47.89580078125002,80.52905273437503],[49.087792968749994,80.515771484375],[49.24433593750004,80.82138671875],[50.278125,80.92724609374997]]],[[[80.02666015625007,80.84814453125003],[79.09853515625005,80.81206054687505],[79.21738281250012,80.96035156249997],[80.27958984375007,80.94980468750003],[80.02666015625007,80.84814453125003]]],[[[61.1408203125001,80.95034179687497],[60.0783203125001,80.99916992187497],[61.45742187499999,81.10395507812501],[61.1408203125001,80.95034179687497]]],[[[54.71894531250004,81.11596679687497],[56.47226562500006,80.99824218749995],[57.58037109375002,80.75546874999998],[55.88339843750006,80.62841796875003],[54.66816406250004,80.73867187500002],[54.04541015624997,80.87197265625],[54.71894531250004,81.11596679687497]]],[[[58.62236328125002,81.04165039062502],[58.930566406249994,80.83168945312497],[58.28564453124997,80.76489257812503],[57.21093749999997,81.01708984374997],[58.04951171875004,81.11845703125002],[58.62236328125002,81.04165039062502]]],[[[63.37382812500002,80.70009765624997],[62.59257812500002,80.85302734375006],[64.80205078125002,81.197265625],[65.43740234375005,80.93071289062507],[63.37382812500002,80.70009765624997]]],[[[91.56718750000007,81.14121093750003],[91.2228515625001,81.063818359375],[89.90117187500002,81.17070312500002],[91.56718750000007,81.14121093750003]]],[[[96.52656250000004,81.0755859375],[97.86992187500007,80.76328125000006],[97.02539062499997,80.53554687500002],[97.29843750000006,80.27275390625005],[93.6546875,80.009619140625],[91.52382812500005,80.35854492187502],[93.2625,80.79125976562497],[92.59257812500007,80.780859375],[92.7103515625,80.87216796875003],[95.1595703125,81.27099609375003],[95.80068359375005,81.28046874999998],[96.52656250000004,81.0755859375]]],[[[57.81025390625004,81.54604492187502],[58.563867187499994,81.41840820312504],[57.858691406250074,81.36806640625],[57.76972656250004,81.16972656249999],[55.71669921875005,81.1884765625],[55.46601562500004,81.31118164062502],[57.81025390625004,81.54604492187502]]],[[[63.65097656250006,81.60932617187501],[62.10644531249997,81.679345703125],[63.709570312500006,81.68730468750002],[63.65097656250006,81.60932617187501]]],[[[58.29541015625003,81.715185546875],[58.13457031250002,81.82797851562498],[59.261816406250006,81.85419921874998],[59.35644531250003,81.75898437499995],[58.29541015625003,81.715185546875]]]]},"properties":{"name":"Russia","childNum":73}},{"geometry":{"type":"Polygon","coordinates":[[[30.50996093750001,-1.067285156250009],[30.47705078125,-1.0830078125],[30.47021484375,-1.131152343750003],[30.508105468750017,-1.208203125000011],[30.631933593750006,-1.367480468750003],[30.710742187500017,-1.396777343750003],[30.76220703125,-1.458691406250011],[30.812597656250006,-1.563085937500006],[30.8765625,-2.143359375],[30.85498046875,-2.265429687500003],[30.828710937500006,-2.338476562500006],[30.7625,-2.371679687500006],[30.71484375,-2.363476562500011],[30.656640625000023,-2.373828125],[30.593359375,-2.396777343750003],[30.553613281250023,-2.400097656250011],[30.408496093750017,-2.31298828125],[30.117285156250006,-2.416601562500006],[29.93017578125,-2.339550781250011],[29.8681640625,-2.71640625],[29.698046875000017,-2.794726562500003],[29.390234375,-2.80859375],[29.10205078125,-2.595703125],[29.01435546875001,-2.72021484375],[28.893945312500023,-2.635058593750003],[28.876367187500023,-2.400292968750009],[29.13154296875001,-2.195117187500003],[29.196582031250017,-1.719921875000011],[29.576953125000017,-1.387890625000011],[29.82539062500001,-1.335546875],[29.930078125000023,-1.469921875000011],[30.360253906250023,-1.074609375],[30.41230468750001,-1.063085937500006],[30.46992187500001,-1.066015625],[30.50996093750001,-1.067285156250009]]]},"properties":{"name":"Rwanda","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[41.98769531250005,16.715625],[42.059960937499994,16.803515625000017],[42.15781250000006,16.570703125000023],[41.80156250000002,16.778759765624955],[41.86044921875006,17.002539062499977],[41.98769531250005,16.715625]]],[[[46.53144531250004,29.09624023437499],[47.433203125,28.989550781250017],[47.671289062499994,28.53315429687504],[48.442480468750006,28.542919921874983],[48.80898437499999,27.895898437499966],[48.797167968750074,27.72431640625001],[49.2375,27.49272460937499],[49.17509765625002,27.43764648437505],[49.40527343749997,27.18095703124996],[50.149804687499994,26.66264648437499],[50.00810546875002,26.678515625000017],[50.21386718750003,26.30849609375005],[50.15546875000004,26.100537109374955],[50.03164062499999,26.11098632812505],[50.55791015625002,25.086669921875],[50.66689453125005,24.96381835937501],[50.72558593749997,24.869384765625057],[50.80439453125004,24.789257812499983],[50.928320312500006,24.595117187500023],[50.96601562500004,24.573925781249983],[51.022753906250074,24.56523437499999],[51.09335937500006,24.564648437499955],[51.178027343750074,24.586718750000017],[51.26796875,24.607226562500017],[51.33847656250006,24.564355468749994],[51.41123046875006,24.570800781250057],[51.30986328125002,24.340380859375017],[51.56835937500003,24.286181640625074],[51.592578125000074,24.07885742187503],[52.55507812500005,22.932812499999955],[55.104296875000074,22.621484375000023],[55.185839843750074,22.7041015625],[55.64101562499999,22.001855468749994],[54.97734375000002,19.995947265625006],[51.977636718750006,18.996142578125074],[49.04199218750003,18.58178710937503],[48.17216796875002,18.156933593749983],[47.57958984374997,17.448339843750034],[47.44179687499999,17.111865234375045],[47.14355468749997,16.946679687499966],[46.97568359375006,16.953466796875034],[46.72763671875006,17.26557617187501],[45.5353515625001,17.30205078124999],[45.14804687500006,17.427441406249955],[43.91699218749997,17.32470703124997],[43.41796875000003,17.516259765625023],[43.19091796875003,17.359375],[43.16503906249997,16.689404296874955],[42.79931640624997,16.37177734375001],[42.29394531249997,17.434960937499966],[41.75,17.88574218749997],[41.22949218750003,18.678417968749983],[40.75917968750005,19.755468750000034],[40.080664062500006,20.265917968750017],[39.728320312500074,20.390332031249955],[39.27607421875004,20.973974609375034],[39.093554687500074,21.31035156249999],[39.14707031250006,21.518994140624955],[38.98789062500006,21.88173828125005],[39.06201171874997,22.592187500000023],[38.46416015625002,23.71186523437504],[37.91972656250002,24.185400390625063],[37.54306640625006,24.291650390625023],[37.18085937500004,24.82001953125001],[37.26630859375004,24.960058593750034],[37.14882812499999,25.291113281249977],[35.18046875000002,28.03486328125004],[34.722070312499994,28.130664062500017],[34.625,28.064501953125017],[34.95078125,29.353515625],[36.068457031250006,29.200537109375006],[36.28281250000006,29.355371093750023],[36.47607421874997,29.49511718749997],[36.59179687500003,29.666113281250006],[36.703906250000074,29.831640624999977],[36.75527343750005,29.86601562499996],[37.46923828125003,29.995068359374955],[37.49072265625003,30.01171874999997],[37.55361328125005,30.14458007812496],[37.63359375000002,30.313281250000045],[37.64990234374997,30.330957031249994],[37.669726562500074,30.34814453125003],[37.862890625,30.44262695312503],[37.98007812500006,30.5],[37.47900390624997,31.007763671874955],[37.10527343750002,31.35517578125004],[36.95859375000006,31.491503906250017],[37.215625,31.55610351562501],[37.49335937500004,31.625878906250023],[38.111425781250006,31.78115234375005],[38.37548828124997,31.84746093749996],[38.962304687499994,31.99492187499999],[38.99707031249997,32.00747070312505],[39.145410156249994,32.12451171875],[39.36865234374997,32.09174804687498],[39.70410156250003,32.04252929687499],[40.02783203124997,31.995019531249994],[40.3693359375001,31.93896484375003],[40.47890625000005,31.89335937499999],[42.07441406250004,31.08037109374999],[43.77373046875002,29.84921875],[44.71650390625004,29.19360351562503],[46.35644531250003,29.06367187500001],[46.53144531250004,29.09624023437499]]]]},"properties":{"name":"Saudi Arabia","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[36.87138671875002,21.996728515624994],[36.92695312500001,21.58652343749999],[37.25859375000002,21.108544921874994],[37.25722656250002,21.03940429687499],[37.15058593750001,21.103759765625],[37.14111328125,20.98178710937499],[37.19316406250002,20.12070312499999],[37.471289062500006,18.820117187500003],[38.609472656250006,18.005078125],[38.422460937500006,17.823925781249997],[38.39716796875001,17.778369140625003],[38.38554687500002,17.751269531250003],[38.37373046875001,17.717333984375003],[38.34736328125001,17.68359375],[38.28984375000002,17.637011718750003],[38.26728515625001,17.61669921875],[38.253515625,17.584765625],[37.78242187500001,17.4580078125],[37.547460937500006,17.324121093749994],[37.51015625000002,17.288134765625003],[37.45292968750002,17.108691406250003],[37.41103515625002,17.06171875],[37.24882812500002,17.056884765625],[37.16953125,17.04140625],[37.0615234375,17.061279296875],[37.00898437500001,17.058886718750003],[36.995214843750006,17.020556640625003],[36.97578125000001,16.86655273437499],[36.97871093750001,16.800585937500003],[36.887792968750006,16.624658203124994],[36.91376953125001,16.296191406250003],[36.566015625,15.362109375],[36.4267578125,15.132080078125],[36.44814453125002,14.940087890624994],[36.470800781250006,14.736474609374994],[36.52431640625002,14.2568359375],[36.12519531250001,12.75703125],[35.67021484375002,12.623730468749997],[35.1123046875,11.816552734374994],[34.93144531250002,10.864794921874989],[34.77128906250002,10.746191406249991],[34.571875,10.880175781249989],[34.34394531250001,10.658642578124997],[34.31123046875001,10.190869140624997],[34.078125,9.461523437499991],[33.87148437500002,9.506152343749989],[33.96328125000002,9.861767578124997],[33.90703125000002,10.181445312499989],[33.13007812500001,10.745947265624991],[33.073339843750006,11.606103515624994],[33.199316406250006,12.21728515625],[32.721875,12.223095703124997],[32.73671875000002,12.009667968749994],[32.072265625,12.006738281249994],[32.338476562500006,11.710107421874994],[32.42080078125002,11.089111328125],[31.224902343750017,9.799267578124997],[30.75537109375,9.731201171875],[30.003027343750006,10.277392578124989],[29.60546875,10.065087890624994],[29.47314453125,9.768603515624989],[28.979589843750006,9.594189453124997],[28.844531250000017,9.326074218749994],[28.048925781250006,9.32861328125],[27.880859375,9.601611328124989],[27.07421875,9.613818359374989],[26.65869140625,9.484130859375],[25.91914062500001,10.169335937499994],[25.858203125000017,10.406494140625],[25.211718750000017,10.329931640624991],[25.066992187500006,10.293798828124991],[24.785253906250006,9.774658203125],[24.53193359375001,8.886914062499997],[24.147363281250023,8.665625],[23.53730468750001,8.815820312499994],[23.46826171875,9.11474609375],[23.62265625,9.340625],[23.646289062500017,9.822900390624994],[22.86005859375001,10.919677734375],[22.922656250000017,11.344873046874994],[22.591113281250017,11.579882812499989],[22.580957031250023,11.990136718749994],[22.472460937500017,12.067773437499994],[22.352343750000017,12.660449218749989],[21.928125,12.678125],[21.825292968750006,12.79052734375],[22.228125,13.32958984375],[22.1064453125,13.7998046875],[22.53857421875,14.161865234375],[22.38154296875001,14.550488281249997],[22.6708984375,14.722460937500003],[22.93232421875001,15.162109375],[22.933886718750017,15.533105468749994],[23.10517578125001,15.702539062499994],[23.970800781250006,15.721533203124991],[23.980273437500017,19.496630859375003],[23.980273437500017,19.99594726562499],[24.9794921875,20.002587890624994],[24.980273437500017,21.995849609375],[28.036425781250017,21.995361328125],[31.092675781250023,21.994873046875],[31.260644531250023,22.00229492187499],[31.400292968750023,22.202441406250003],[31.486132812500017,22.14780273437499],[31.434472656250023,21.995849609375],[36.87138671875002,21.996728515624994]]]},"properties":{"name":"Sudan","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[34.078125,9.461523437499991],[34.07275390625,8.545263671874991],[33.95332031250001,8.443505859374994],[33.28105468750002,8.437255859375],[32.99892578125002,7.899511718749991],[33.902441406250006,7.509521484375],[34.06425781250002,7.225732421874994],[34.71064453125001,6.660302734374994],[34.98359375000001,5.858300781249994],[35.26835937500002,5.492285156249991],[35.08447265625,5.311865234374991],[34.87832031250002,5.109570312499997],[34.63984375000001,4.87548828125],[34.38017578125002,4.620654296874989],[34.176855468750006,4.419091796874994],[33.97607421875,4.22021484375],[33.74160156250002,3.985253906249994],[33.568457031250006,3.81171875],[33.489355468750006,3.755078125],[32.99726562500001,3.880175781249989],[32.33574218750002,3.706201171874994],[32.13593750000001,3.519726562499997],[31.79804687500001,3.802636718749994],[31.547167968750017,3.677587890624991],[31.15234375,3.785595703124997],[30.83857421875001,3.49072265625],[30.757226562500023,3.62421875],[30.586718750000017,3.62421875],[30.50830078125,3.835693359375],[30.194921875,3.98193359375],[29.676855468750006,4.5869140625],[29.469628906250023,4.61181640625],[29.224902343750017,4.391894531249989],[28.72705078125,4.504980468749991],[28.427539062500017,4.324169921874997],[28.19208984375001,4.350244140624994],[27.7880859375,4.644677734374994],[27.4033203125,5.109179687499989],[27.143945312500023,5.722949218749989],[26.514257812500006,6.069238281249994],[26.30859375,6.455322265625],[26.36181640625,6.635302734374989],[25.27890625,7.427490234375],[25.18134765625001,7.557226562499991],[25.20039062500001,7.807910156249989],[24.853320312500017,8.137548828124991],[24.291406250000023,8.29140625],[24.147363281250023,8.665625],[24.53193359375001,8.886914062499997],[24.785253906250006,9.774658203125],[25.066992187500006,10.293798828124991],[25.211718750000017,10.329931640624991],[25.858203125000017,10.406494140625],[25.91914062500001,10.169335937499994],[26.65869140625,9.484130859375],[27.07421875,9.613818359374989],[27.880859375,9.601611328124989],[28.048925781250006,9.32861328125],[28.844531250000017,9.326074218749994],[28.979589843750006,9.594189453124997],[29.47314453125,9.768603515624989],[29.60546875,10.065087890624994],[30.003027343750006,10.277392578124989],[30.75537109375,9.731201171875],[31.224902343750017,9.799267578124997],[32.42080078125002,11.089111328125],[32.338476562500006,11.710107421874994],[32.072265625,12.006738281249994],[32.73671875000002,12.009667968749994],[32.721875,12.223095703124997],[33.199316406250006,12.21728515625],[33.073339843750006,11.606103515624994],[33.13007812500001,10.745947265624991],[33.90703125000002,10.181445312499989],[33.96328125000002,9.861767578124997],[33.87148437500002,9.506152343749989],[34.078125,9.461523437499991]]]},"properties":{"name":"S. Sudan","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-12.280615234374977,14.809033203124997],[-12.228417968749994,14.45859375],[-12.019189453124994,14.206494140624997],[-11.960888671874983,13.875292968750003],[-12.05419921875,13.633056640625],[-11.831689453124994,13.315820312499994],[-11.634960937499983,13.369873046875],[-11.390380859375,12.941992187499991],[-11.389404296875,12.404394531249991],[-12.399072265624994,12.340087890625],[-12.930712890624989,12.532275390624989],[-13.061279296875,12.489990234375],[-13.082910156249994,12.633544921875],[-13.729248046875,12.673925781249991],[-14.06484375,12.67529296875],[-14.349218749999977,12.676416015624994],[-15.196093749999989,12.679931640625],[-15.3779296875,12.588964843749991],[-15.574804687499977,12.490380859374994],[-15.839550781249983,12.43789062499999],[-16.144189453124994,12.45742187499999],[-16.24150390624999,12.443310546874997],[-16.41630859374999,12.36767578125],[-16.521337890624977,12.3486328125],[-16.656933593749983,12.364355468749991],[-16.711816406249994,12.354833984374991],[-16.76030273437499,12.52578125],[-16.44287109375,12.609472656249991],[-16.59765625,12.715283203124997],[-16.743896484375,12.58544921875],[-16.763330078124994,13.064160156249997],[-16.648779296874977,13.154150390624991],[-15.834277343749989,13.156445312499997],[-15.814404296874983,13.325146484374997],[-15.286230468749977,13.39599609375],[-15.151123046875,13.556494140624991],[-14.246777343749983,13.23583984375],[-13.826708984374989,13.4078125],[-13.977392578124977,13.54345703125],[-14.405468749999983,13.503710937500003],[-15.108349609374983,13.81210937499999],[-15.426855468749977,13.727001953124997],[-15.509667968749994,13.586230468750003],[-16.56230468749999,13.587304687499994],[-16.766943359374977,13.904931640624994],[-16.618115234374983,14.04052734375],[-16.791748046875,14.004150390625],[-17.168066406249977,14.640625],[-17.345800781249977,14.729296875],[-17.445019531249983,14.651611328125],[-17.53564453125,14.755126953125],[-17.147167968749983,14.922021484374994],[-16.843408203124994,15.293994140625003],[-16.570751953124983,15.734423828125003],[-16.535253906249977,15.83837890625],[-16.502050781249977,15.917333984374991],[-16.480078124999977,16.097216796875003],[-16.441015624999977,16.204541015624997],[-16.239013671875,16.531298828125003],[-15.768212890624994,16.485107421875],[-14.990625,16.676904296874994],[-14.300097656249989,16.580273437499997],[-13.868457031249989,16.148144531249997],[-13.756640624999989,16.172509765624994],[-13.40966796875,16.05917968749999],[-13.105273437499989,15.57177734375],[-12.735253906249994,15.13125],[-12.40869140625,14.889013671874991],[-12.280615234374977,14.809033203124997]]]},"properties":{"name":"Senegal","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[103.9697265625,1.331445312499994],[103.65019531249999,1.325537109374991],[103.81796875000003,1.447070312499989],[103.9697265625,1.331445312499994]]]},"properties":{"name":"Singapore","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-37.10332031249996,-54.065625],[-36.70380859375001,-54.10810546874999],[-36.64741210937498,-54.26230468749996],[-36.32646484374996,-54.251171875],[-35.79858398437497,-54.76347656250002],[-36.08549804687499,-54.86679687500001],[-36.885986328125,-54.33945312499996],[-37.63090820312496,-54.16748046875001],[-37.61884765625001,-54.04208984375004],[-38.017431640625034,-54.008007812500026],[-37.10332031249996,-54.065625]]]},"properties":{"name":"S. Geo. and S. Sandw. Is.","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-5.692138671874972,-15.997753906249997],[-5.782519531250017,-16.00400390625002],[-5.707861328124977,-15.90615234374998],[-5.692138671874972,-15.997753906249997]]]},"properties":{"name":"Saint Helena","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[160.57626953125006,-11.797851562500028],[160.44306640625004,-11.814941406249957],[159.98632812499997,-11.494726562500006],[160.57626953125006,-11.797851562500028]]],[[[166.13320312500005,-10.757812499999972],[165.90400390625004,-10.851464843749966],[165.79101562500003,-10.784765624999963],[166.02382812500005,-10.6611328125],[166.13320312500005,-10.757812499999972]]],[[[161.71533203124997,-10.387304687499991],[162.10537109375005,-10.45380859375004],[162.37333984375002,-10.823242187499986],[161.78681640625004,-10.716894531249991],[161.53789062500007,-10.566406249999972],[161.4870117187501,-10.361425781249963],[161.29394531250003,-10.326464843750031],[161.30478515625012,-10.204394531250031],[161.71533203124997,-10.387304687499991]]],[[[161.54785156249997,-9.625683593749997],[161.55380859375012,-9.769726562500026],[161.40976562500006,-9.681640625000028],[161.36416015625,-9.353417968750037],[161.54785156249997,-9.625683593749997]]],[[[159.75039062500005,-9.272656250000011],[159.97060546875,-9.433300781249969],[160.35458984375006,-9.421582031249983],[160.81894531250006,-9.862792968749986],[160.64921875000002,-9.92861328124998],[159.80273437499997,-9.763476562500003],[159.61230468749997,-9.470703124999943],[159.62558593750012,-9.311230468749969],[159.75039062500005,-9.272656250000011]]],[[[160.1681640625001,-8.995507812500037],[160.40751953125007,-9.140332031249969],[160.10537109375,-9.080761718749997],[160.1681640625001,-8.995507812500037]]],[[[159.18857421875006,-9.123535156250014],[159.03632812500004,-9.075],[159.12978515625,-8.99306640624998],[159.22841796875005,-9.029980468749955],[159.18857421875006,-9.123535156250014]]],[[[158.10791015625003,-8.684179687500034],[157.93759765625006,-8.73642578125002],[157.90927734375006,-8.565625],[158.10546874999997,-8.536816406250026],[158.10791015625003,-8.684179687500034]]],[[[157.38896484375002,-8.713476562499963],[157.2123046875,-8.565039062500006],[157.37949218750012,-8.420898437499943],[157.38896484375002,-8.713476562499963]]],[[[160.7494140625,-8.313964843750014],[160.99765625000006,-8.612011718749983],[160.94433593750003,-8.799023437499983],[161.15869140624997,-8.961816406250009],[161.36738281250004,-9.61123046874998],[160.77207031250012,-8.963867187499986],[160.7140625000001,-8.539257812499997],[160.59042968750006,-8.372753906249997],[160.7494140625,-8.313964843750014]]],[[[157.76347656250002,-8.242187499999957],[157.89843749999997,-8.506347656249943],[157.81933593750003,-8.612011718749983],[157.58789062500003,-8.445410156249963],[157.5580078125,-8.269921875],[157.30244140625004,-8.33330078124996],[157.21757812500002,-8.262792968749977],[157.490625,-7.965722656250037],[157.76347656250002,-8.242187499999957]]],[[[157.171875,-8.108105468749997],[156.95830078125002,-8.014355468749997],[157.02412109375004,-7.867871093749997],[157.18613281250006,-7.941210937500017],[157.171875,-8.108105468749997]]],[[[156.687890625,-7.92304687500004],[156.5109375000001,-7.707812499999974],[156.5609375,-7.574023437499989],[156.80908203124997,-7.722851562500026],[156.687890625,-7.92304687500004]]],[[[159.8791015625001,-8.534277343749949],[158.9440429687501,-8.04072265625004],[158.457421875,-7.544726562499974],[158.734375,-7.604296875000031],[159.43144531250002,-8.029003906249955],[159.84306640625002,-8.326953124999989],[159.8791015625001,-8.534277343749949]]],[[[155.83984374999997,-7.097167968750014],[155.67753906250002,-7.08896484375002],[155.73896484375004,-6.972949218750017],[155.83984374999997,-7.097167968750014]]],[[[157.48671875000005,-7.330371093750003],[157.44130859375,-7.425683593749966],[157.10156249999997,-7.323632812499966],[156.4525390625,-6.638281249999963],[157.03027343750003,-6.891992187499952],[157.19335937499997,-7.160351562499997],[157.48671875000005,-7.330371093750003]]]]},"properties":{"name":"Solomon Is.","childNum":16}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-12.526074218749926,7.436328125000017],[-12.951611328124926,7.570849609374989],[-12.615234374999972,7.63720703125],[-12.5125,7.582421875000037],[-12.526074218749926,7.436328125000017]]],[[[-10.758593749999989,9.385351562499991],[-10.682714843750006,9.289355468749974],[-10.687646484374937,9.261132812499994],[-10.749951171874926,9.12236328124996],[-10.747021484374955,9.095263671875045],[-10.726855468749932,9.081689453125023],[-10.615966796875,9.059179687499977],[-10.500537109375017,8.687548828125017],[-10.677343749999977,8.400585937499997],[-10.712109374999955,8.335253906250017],[-10.686962890624983,8.321679687500009],[-10.652636718749989,8.330273437499983],[-10.604003906249943,8.319482421874994],[-10.55771484374992,8.315673828125028],[-10.496435546874977,8.362109374999974],[-10.394433593749966,8.480957031250028],[-10.360058593749983,8.49550781249998],[-10.283203124999972,8.48515625],[-10.285742187499949,8.454101562499986],[-10.314648437499983,8.310839843750017],[-10.359814453124926,8.187939453125026],[-10.570849609374932,8.071142578125034],[-10.6474609375,7.759375],[-10.878076171874994,7.538232421874994],[-11.267675781249977,7.232617187499997],[-11.507519531249983,6.906542968750003],[-12.48564453124996,7.386279296875045],[-12.480273437499932,7.75327148437502],[-12.697607421874977,7.715869140625045],[-12.850878906249932,7.818701171875034],[-12.956933593749966,8.145312500000045],[-13.148974609374989,8.214599609375043],[-13.272753906249989,8.429736328124989],[-13.085009765624932,8.42475585937504],[-12.894091796874932,8.62978515624998],[-13.181835937499955,8.576904296875043],[-13.206933593749994,8.843115234375006],[-13.059472656249966,8.881152343750031],[-13.292675781249955,9.04921875],[-13.077294921874966,9.069628906249974],[-12.958789062499989,9.263330078124994],[-12.755859374999943,9.373583984374989],[-12.557861328125,9.704980468749994],[-12.427978515625028,9.898144531250011],[-12.142333984375,9.87539062499999],[-11.911083984374955,9.993017578124977],[-11.273632812499955,9.996533203124983],[-11.205664062499949,9.977734374999969],[-11.180859374999955,9.925341796875045],[-11.047460937499977,9.786328125000054],[-10.758593749999989,9.385351562499991]]]]},"properties":{"name":"Sierra Leone","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[-89.36259765624999,14.416015625],[-89.1205078125,14.370214843749991],[-88.51254882812499,13.978955078124997],[-88.504345703125,13.964208984374991],[-88.49765625,13.904541015625],[-88.482666015625,13.854248046875],[-88.44912109375,13.850976562499994],[-88.40849609374999,13.87539062499999],[-88.27622070312499,13.942675781250003],[-88.151025390625,13.987353515625003],[-87.99101562499999,13.879638671875],[-87.8919921875,13.894970703124997],[-87.80224609375,13.889990234374991],[-87.7314453125,13.841064453125],[-87.71533203125,13.812695312499997],[-87.781884765625,13.521386718749994],[-87.930859375,13.1806640625],[-88.68564453124999,13.281494140625],[-88.51201171874999,13.183935546874991],[-89.80419921875,13.560107421875003],[-90.09521484375,13.736523437499997],[-90.04814453124999,13.904052734375],[-89.54716796874999,14.241259765625003],[-89.5736328125,14.390087890624997],[-89.36259765624999,14.416015625]]]},"properties":{"name":"El Salvador","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-56.26708984374997,46.838476562500034],[-56.38476562499994,46.81943359375006],[-56.36464843749994,47.09897460937498],[-56.26708984374997,46.838476562500034]]]},"properties":{"name":"St. Pierre and Miquelon","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[6.659960937499989,0.120654296874989],[6.51972656250004,0.066308593750023],[6.468164062499994,0.22734375],[6.68691406250008,0.404394531249977],[6.75,0.24345703124996],[6.659960937499989,0.120654296874989]]],[[[7.423828125,1.567724609375006],[7.330664062500034,1.603369140624991],[7.414453125000051,1.699121093750037],[7.423828125,1.567724609375006]]]]},"properties":{"name":"São Tomé and Principe","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[-54.03422851562499,3.62939453125],[-54.00957031249999,3.448535156249989],[-54.06318359375,3.353320312499989],[-54.18803710937499,3.178759765624989],[-54.203125,3.13818359375],[-54.17070312499999,2.993603515624997],[-54.18808593749999,2.874853515624991],[-54.1955078125,2.81787109375],[-54.256738281249994,2.713720703124991],[-54.402001953124994,2.461523437499991],[-54.53593749999999,2.343310546874989],[-54.56840820312499,2.342578124999989],[-54.604736328125,2.335791015624991],[-54.61625976562499,2.326757812499991],[-54.661865234375,2.327539062499994],[-54.697412109374994,2.359814453124997],[-54.72221679687499,2.441650390625],[-54.87607421874999,2.450390625],[-54.92656249999999,2.497363281249989],[-54.968408203124994,2.54833984375],[-54.978662109374994,2.59765625],[-55.005810546875,2.59296875],[-55.0703125,2.54833984375],[-55.11411132812499,2.539208984374994],[-55.1876953125,2.547509765624994],[-55.286035156249994,2.499658203124994],[-55.343994140625,2.48876953125],[-55.38535156249999,2.440625],[-55.73056640624999,2.406152343749994],[-55.957470703125,2.520458984374997],[-55.99350585937499,2.497509765624997],[-56.02036132812499,2.392773437499997],[-56.0451171875,2.364404296874994],[-56.087792968749994,2.34130859375],[-56.12939453125,2.299511718749997],[-56.1376953125,2.259033203125],[-56.073632812499994,2.236767578124997],[-56.02006835937499,2.158154296874997],[-55.96196289062499,2.095117187499994],[-55.91533203124999,2.03955078125],[-55.921630859375,1.976660156249991],[-55.929638671875,1.8875],[-56.01992187499999,1.842236328124997],[-56.4828125,1.942138671875],[-56.704345703125,2.036474609374991],[-57.19736328124999,2.853271484375],[-57.303662109375,3.377099609374994],[-57.646728515625,3.39453125],[-58.05429687499999,4.101660156249991],[-57.84599609374999,4.668164062499997],[-57.91704101562499,4.820410156249991],[-57.711083984374994,4.991064453124991],[-57.331005859375,5.020166015624994],[-57.20981445312499,5.195410156249991],[-57.3185546875,5.335351562499994],[-57.194775390625,5.5484375],[-56.96982421874999,5.992871093749997],[-56.235595703125,5.885351562499991],[-55.897607421874994,5.699316406249991],[-55.909912109375,5.892626953124989],[-55.648339843749994,5.985888671874989],[-54.83369140625,5.988330078124989],[-54.05419921875,5.807910156249989],[-54.08046875,5.502246093749989],[-54.4796875,4.836523437499991],[-54.350732421874994,4.054101562499994],[-54.03422851562499,3.62939453125]]]},"properties":{"name":"Suriname","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[22.538671875,49.072705078125],[22.52412109375001,49.031396484374994],[22.389453125000017,48.873486328125],[22.295214843750017,48.685839843749996],[22.142871093750017,48.568505859374994],[22.1318359375,48.405322265624996],[21.766992187500023,48.3380859375],[21.45136718750001,48.55224609375],[20.490039062500017,48.526904296874996],[20.333789062500017,48.295556640624994],[19.95039062500001,48.146630859374994],[19.625390625000023,48.223095703125],[18.791894531250023,48.000292968749996],[18.72421875,47.787158203124996],[17.76191406250001,47.770166015624994],[17.147363281250023,48.00595703125],[16.86542968750001,48.3869140625],[16.953125,48.598828125],[17.135644531250023,48.841064453125],[17.75849609375001,48.888134765625],[18.0859375,49.06513671875],[18.160937500000017,49.257373046874996],[18.83222656250001,49.510791015624996],[19.1494140625,49.4],[19.44160156250001,49.597705078124996],[19.77392578125,49.37216796875],[19.756640625000017,49.204394531249996],[20.0576171875,49.181298828124994],[20.36298828125001,49.38525390625],[20.868457031250017,49.314697265625],[21.079394531250017,49.418261718749996],[21.6396484375,49.411962890625],[22.020117187500006,49.209521484374996],[22.473046875000023,49.081298828125],[22.538671875,49.072705078125]]]},"properties":{"name":"Slovakia","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[16.516210937500006,46.499902343749994],[16.427636718750023,46.5244140625],[16.321191406250023,46.534619140625],[16.1064453125,46.382226562499994],[15.608984375,46.171923828124996],[15.592578125000017,46.139990234375],[15.596875,46.109228515625],[15.675585937500017,45.983691406249996],[15.652148437500017,45.862158203125],[15.277050781250011,45.7326171875],[15.353710937500011,45.659912109375],[15.283593750000023,45.5796875],[15.291210937500011,45.541552734374996],[15.32666015625,45.502294921875],[15.339453125,45.467041015625],[15.242089843750023,45.44140625],[15.110449218750006,45.45078125],[14.95458984375,45.499902343749994],[14.793066406250006,45.47822265625],[14.649511718750006,45.571484375],[14.591796875,45.651269531249994],[14.56884765625,45.6572265625],[14.548448660714302,45.628388671875],[14.507586495535731,45.59039341517857],[14.42734375,45.505761718749994],[14.369921875000017,45.4814453125],[13.878710937500017,45.428369140624994],[13.577929687500017,45.516894531249996],[13.8447265625,45.59287109375],[13.831152343750006,45.680419921875],[13.663476562500023,45.7919921875],[13.6005859375,45.979785156249996],[13.509179687500023,45.973779296874994],[13.487695312500023,45.987109375],[13.480273437500017,46.009228515625],[13.486425781250006,46.03955078125],[13.548046875000011,46.089111328125],[13.616601562500023,46.133105468749996],[13.634960937500011,46.157763671874996],[13.632519531250011,46.177050781249996],[13.420996093750006,46.212304687499994],[13.399511718750006,46.317529296874994],[13.563281250000017,46.415087890624996],[13.637109375000023,46.448535156249996],[13.6796875,46.462890625],[13.7,46.520263671875],[14.5498046875,46.399707031249996],[14.893261718750011,46.605908203125],[15.957617187500006,46.677636718749994],[16.093066406250017,46.86328125],[16.283593750000023,46.857275390625],[16.516210937500006,46.499902343749994]]]},"properties":{"name":"Slovenia","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[16.52851562500001,56.29052734375],[16.431640625,56.24375],[16.41230468750004,56.568994140624994],[17.02539062499997,57.345068359375006],[16.52851562500001,56.29052734375]]],[[[19.076464843750045,57.8359375],[18.813867187500023,57.70620117187502],[18.907910156250068,57.39833984375002],[18.146386718749994,56.920507812500006],[18.285351562500068,57.08320312500001],[18.136523437500045,57.55664062500003],[18.53740234374999,57.83056640625006],[18.90058593750001,57.91547851562504],[19.076464843750045,57.8359375]]],[[[19.156347656250063,57.92260742187497],[19.086523437500034,57.86499023437506],[19.134863281250034,57.98134765625002],[19.331445312500023,57.962890625],[19.156347656250063,57.92260742187497]]],[[[24.15546875000004,65.80527343750006],[23.102343750000074,65.73535156250003],[22.400976562500006,65.86210937499999],[22.254003906250006,65.59755859375002],[21.565527343750063,65.40810546874997],[21.609179687500074,65.261376953125],[21.410351562500068,65.31743164062505],[21.57392578125001,65.12578124999999],[21.138183593750057,64.80869140625006],[21.519628906250034,64.46308593749998],[20.76269531250003,63.86782226562505],[18.60644531250003,63.17827148437499],[18.31289062500008,62.996386718750045],[18.46308593750004,62.895849609375006],[18.170019531250034,62.789355468750074],[17.906640625000023,62.88676757812502],[18.037304687500068,62.60053710937498],[17.834472656250057,62.50273437500002],[17.410253906250063,62.508398437500034],[17.633691406249994,62.23300781250006],[17.374511718750057,61.866308593750034],[17.465429687500006,61.68447265625005],[17.196386718750006,61.72456054687504],[17.13076171875005,61.57573242187499],[17.25097656250003,60.70078125],[17.6611328125,60.53515625000003],[17.955761718750068,60.589794921874955],[18.85273437500001,60.02587890625],[18.970507812500045,59.757226562499994],[17.964257812500023,59.359375],[18.56025390625004,59.39448242187498],[18.285351562500068,59.109375],[16.978125,58.65415039062506],[16.214257812500023,58.636669921874955],[16.92382812499997,58.49257812499999],[16.651953125,58.43432617187503],[16.65224609375008,57.50068359374998],[16.348730468750063,56.70927734374996],[15.826660156250028,56.12495117187501],[14.782031250000017,56.16191406250002],[14.754785156250051,56.03315429687498],[14.401953125000034,55.97675781250004],[14.21503906250004,55.83261718749998],[14.341699218749994,55.52773437500002],[14.17373046875008,55.396630859374966],[12.885839843750063,55.41137695312506],[12.973925781250074,55.748144531250006],[12.471191406250057,56.29052734375],[12.801660156250051,56.263916015625],[12.65644531250004,56.44057617187502],[12.857421875000028,56.45239257812503],[12.883691406250051,56.61772460937496],[12.421484375000034,56.906396484374966],[11.449316406250063,58.118359374999955],[11.43154296875008,58.339990234374994],[11.24824218750004,58.369140625],[11.14716796875004,58.98862304687498],[11.19580078125,59.07827148437505],[11.388281250000063,59.036523437499966],[11.470703125000057,58.909521484375034],[11.64277343750004,58.92607421875002],[11.798144531250074,59.28989257812498],[11.680761718750034,59.59228515625003],[12.486132812500074,60.10678710937506],[12.588671874999989,60.450732421875045],[12.29414062500004,61.00268554687506],[12.706054687500028,61.059863281250074],[12.88076171875008,61.35229492187506],[12.155371093750006,61.720751953125045],[12.303515625000074,62.28559570312501],[11.999902343750051,63.29169921875001],[12.175195312500051,63.595947265625],[12.792773437500017,64],[13.203515625000023,64.07509765625],[13.960546875000063,64.01401367187498],[14.141210937500006,64.17353515624998],[14.077636718750028,64.464013671875],[13.650292968750023,64.58154296874997],[14.47968750000004,65.30146484374998],[14.543261718750045,66.12934570312498],[15.483789062500051,66.30595703124999],[15.422949218750006,66.48984374999998],[16.40351562500004,67.05498046875002],[16.12744140625,67.42583007812507],[16.783593750000023,67.89501953125],[17.324609375000023,68.10380859374999],[17.91669921875001,67.96489257812502],[18.303027343750045,68.55541992187497],[19.969824218750063,68.35639648437501],[20.348046875000023,68.84873046875003],[20.116699218750057,69.02089843750005],[20.622167968750006,69.036865234375],[21.99746093750005,68.52060546874998],[22.854101562500034,68.36733398437502],[23.63886718750004,67.95439453125002],[23.454882812500045,67.46025390625007],[23.733593750000068,67.42290039062499],[23.64150390625005,67.12939453124997],[23.988574218750045,66.81054687500003],[23.700292968750034,66.25263671874998],[24.15546875000004,65.80527343750006]]]]},"properties":{"name":"Sweden","childNum":4}},{"geometry":{"type":"Polygon","coordinates":[[[31.9482421875,-25.957617187500006],[32.060546875,-26.018359375],[32.04140625000002,-26.28125],[32.10595703125,-26.52001953125],[32.112890625,-26.839453125],[32.02480468750002,-26.811132812500006],[31.994726562500006,-26.817480468750006],[31.967187500000023,-26.96064453125001],[31.946093750000017,-27.173632812500003],[31.958398437500023,-27.30585937500001],[31.742578125000023,-27.30996093750001],[31.469531250000017,-27.295507812500006],[31.274023437500006,-27.238378906250006],[31.063378906250023,-27.1123046875],[30.938085937500006,-26.915820312500003],[30.88330078125,-26.79238281250001],[30.806738281250006,-26.785253906250006],[30.794335937500023,-26.764257812500006],[30.803320312500006,-26.41347656250001],[31.08808593750001,-25.98066406250001],[31.207324218750017,-25.843359375],[31.33515625000001,-25.75556640625001],[31.382617187500017,-25.74296875],[31.415136718750006,-25.74658203125],[31.921679687500017,-25.96875],[31.9482421875,-25.957617187500006]]]},"properties":{"name":"Swaziland","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[55.54033203125002,-4.693066406250011],[55.54296875,-4.785546875],[55.383398437500006,-4.609277343750009],[55.45576171875001,-4.558789062500011],[55.54033203125002,-4.693066406250011]]]},"properties":{"name":"Seychelles","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[42.358984375,37.10859375],[41.78857421875,36.59716796875],[41.41679687500002,36.5146484375],[41.295996093750006,36.383349609374996],[41.354101562500006,35.640429687499996],[41.19472656250002,34.768994140625],[40.98701171875001,34.429052734375],[38.773535156250006,33.372216796874994],[36.818359375,32.317285156249994],[36.3720703125,32.3869140625],[35.78730468750001,32.734912109374996],[35.91347656250002,32.94960937499999],[35.869140625,33.43173828125],[36.03447265625002,33.58505859375],[35.98613281250002,33.75263671875],[36.36503906250002,33.83935546875],[36.27783203125,33.92529296875],[36.5849609375,34.221240234374996],[36.50439453125,34.432373046875],[36.32988281250002,34.499609375],[36.383886718750006,34.65791015625],[35.97626953125001,34.629199218749996],[35.902441406250006,35.420703125],[35.76445312500002,35.571582031249996],[35.83964843750002,35.84921875],[35.892675781250006,35.916552734374996],[35.96757812500002,35.910058593749994],[36.12734375000002,35.831445312499994],[36.15361328125002,35.833886718749994],[36.34755859375002,36.003515625],[36.37539062500002,36.171240234375],[36.63671875,36.233984375],[36.64140625000002,36.263525390625],[36.5375,36.45742187499999],[36.54667968750002,36.50634765625],[36.596875,36.7013671875],[36.62841796875,36.777685546875],[36.65859375000002,36.802539062499996],[36.77656250000001,36.79267578125],[36.94179687500002,36.7583984375],[36.9853515625,36.702392578125],[37.06621093750002,36.652636718749996],[37.43632812500002,36.643310546875],[37.523535156250006,36.6783203125],[37.7203125,36.743701171874996],[37.90664062500002,36.79462890625],[38.19169921875002,36.9015625],[38.7666015625,36.693115234375],[38.90644531250001,36.694677734375],[39.1083984375,36.680566406249994],[39.35664062500001,36.681591796875],[39.50146484375,36.70224609375],[39.6865234375,36.738623046875],[40.01640625000002,36.826074218749994],[40.705664062500006,37.097705078124996],[41.886816406250006,37.156396484374994],[42.05986328125002,37.2060546875],[42.16787109375002,37.288623046874996],[42.202734375,37.29726562499999],[42.24755859375,37.2822265625],[42.2685546875,37.2765625],[42.31289062500002,37.22958984375],[42.358984375,37.10859375]]]},"properties":{"name":"Syria","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-72.3328125,21.85136718749999],[-72.14433593750002,21.79272460937503],[-72.33544921874994,21.758007812499983],[-72.3328125,21.85136718749999]]]},"properties":{"name":"Turks and Caicos Is.","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[23.980273437500017,19.496630859375003],[23.970800781250006,15.721533203124991],[23.10517578125001,15.702539062499994],[22.933886718750017,15.533105468749994],[22.93232421875001,15.162109375],[22.6708984375,14.722460937500003],[22.38154296875001,14.550488281249997],[22.53857421875,14.161865234375],[22.1064453125,13.7998046875],[22.228125,13.32958984375],[21.825292968750006,12.79052734375],[21.928125,12.678125],[22.352343750000017,12.660449218749989],[22.472460937500017,12.067773437499994],[22.580957031250023,11.990136718749994],[22.591113281250017,11.579882812499989],[22.922656250000017,11.344873046874994],[22.86005859375001,10.919677734375],[22.49384765625001,10.996240234374994],[21.771484375,10.642822265625],[21.682714843750006,10.289843749999989],[20.773242187500017,9.405664062499994],[20.342089843750017,9.127099609374994],[18.95625,8.938867187499994],[18.886035156250017,8.836035156249991],[19.108691406250017,8.656152343749994],[18.56416015625001,8.0458984375],[17.6494140625,7.98359375],[16.784765625,7.550976562499997],[16.545312500000023,7.865478515625],[16.37890625,7.683544921874997],[15.957617187500006,7.507568359375],[15.480078125,7.523779296874991],[15.5498046875,7.787890624999989],[15.1162109375,8.557324218749997],[14.332324218750017,9.20351562499999],[13.977246093750011,9.691552734374994],[14.243261718750006,9.979736328125],[15.654882812500006,10.0078125],[15.276074218750011,10.357373046874997],[15.132226562500023,10.648486328124989],[15.029882812500006,11.11367187499999],[15.08125,11.845507812499989],[14.847070312500023,12.502099609374994],[14.461718750000017,13.021777343749989],[14.244824218750011,13.07734375],[14.06396484375,13.07851562499999],[13.932324218750011,13.258496093749997],[13.606347656250023,13.70458984375],[13.505761718750023,14.134423828124994],[13.4482421875,14.380664062500003],[14.367968750000017,15.750146484374994],[15.474316406250011,16.908398437499997],[15.735058593750011,19.904052734375],[15.963183593750017,20.34619140625],[15.587109375000011,20.733300781249994],[15.607324218750023,20.954394531250003],[15.181835937500011,21.523388671874997],[14.97900390625,22.99619140624999],[15.984082031250011,23.445214843749994],[20.14765625000001,21.38925781249999],[23.980273437500017,19.496630859375003]]]},"properties":{"name":"Chad","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[0.900488281250006,10.993261718749991],[0.763378906250011,10.386669921874997],[1.330078125,9.996972656249994],[1.3857421875,9.361669921874991],[1.600195312500006,9.050048828125],[1.624707031250011,6.997314453125],[1.530957031250011,6.992431640625],[1.777929687500006,6.294628906249997],[1.62265625,6.216796875],[1.187207031250011,6.089404296874989],[0.736914062500006,6.452587890624997],[0.525585937500011,6.850927734374991],[0.634765625,7.353662109374994],[0.5,7.546875],[0.686328125000017,8.354882812499994],[0.37255859375,8.75927734375],[0.48876953125,8.851464843749994],[0.525683593750017,9.398486328124989],[0.2333984375,9.463525390624994],[0.342578125000017,9.604150390624994],[0.264550781250023,9.644726562499997],[0.380859375,10.291845703124991],[-0.08632812499999,10.673046875],[0.009423828125023,11.02099609375],[-0.068603515625,11.115625],[0.49267578125,10.954980468749994],[0.900488281250006,10.993261718749991]]]},"properties":{"name":"Togo","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[98.40908203125005,7.90205078125004],[98.2962890625,7.776074218750054],[98.32207031250007,8.166308593749974],[98.4349609375,8.085644531249969],[98.40908203125005,7.90205078125004]]],[[[100.070703125,9.58603515625002],[99.96240234375003,9.421630859375],[99.93955078125006,9.559960937500037],[100.070703125,9.58603515625002]]],[[[102.42675781250003,11.988720703125026],[102.30195312500004,11.98081054687502],[102.27744140625006,12.151855468750043],[102.42675781250003,11.988720703125026]]],[[[100.12246093750005,20.316650390625057],[100.11494140625004,20.257666015625034],[100.13974609375012,20.245410156250017],[100.31796875000006,20.38588867187505],[100.51953125000003,20.17792968750004],[100.39765625000004,19.756103515625],[100.51357421875005,19.553466796875],[101.21191406249997,19.54833984375003],[101.22080078125006,19.486621093750074],[101.19755859375007,19.327929687500074],[101.2863281250001,18.977148437500006],[101.04697265625012,18.441992187500063],[101.05058593750002,18.407031250000045],[101.1375,18.28686523437497],[101.14394531250005,18.14262695312499],[100.90849609375002,17.583886718750023],[100.95585937500002,17.541113281250006],[101.10517578125004,17.47954101562499],[101.16748046874997,17.49902343749997],[101.41367187500012,17.71875],[101.55507812500005,17.812353515625034],[101.56367187500004,17.82050781250001],[101.6875,17.889404296875],[101.77480468750005,18.03339843750004],[101.81865234375002,18.06464843750001],[101.87548828124997,18.046435546875017],[101.94746093750004,18.081494140624983],[102.03457031250005,18.169824218750023],[102.10146484375,18.210644531249983],[102.14824218750002,18.20385742187503],[102.35185546875002,18.045947265625017],[102.45878906250002,17.984619140625057],[102.55253906250007,17.96508789062497],[102.61679687500006,17.833349609375034],[102.66064453124997,17.817968750000034],[102.680078125,17.824121093750023],[103.05136718750006,18.02851562500001],[103.0912109375,18.13823242187499],[103.14853515625006,18.221728515625045],[103.19970703124997,18.259472656249983],[103.26318359374997,18.27846679687505],[103.27958984375002,18.304980468750017],[103.24892578125,18.338964843750034],[103.25175781250002,18.373486328124955],[103.2882812500001,18.408398437499955],[103.36699218750007,18.42333984374997],[103.48798828125004,18.418164062499983],[103.62968750000002,18.38256835937503],[103.79228515625002,18.316503906249977],[103.89882812500005,18.295312500000023],[103.949609375,18.31899414062505],[104.04873046875005,18.216699218749994],[104.19619140625005,17.988378906250006],[104.32265625,17.815820312500023],[104.428125,17.69897460937503],[104.7396484375,17.461669921875],[104.81601562500012,17.30029296874997],[104.75898437500004,17.0771484375],[104.7435546875,16.884375],[104.75058593750012,16.647558593750063],[104.81933593750003,16.46606445312503],[105.04716796875007,16.160253906249977],[105.14873046875007,16.09355468749999],[105.33066406250006,16.037890625000017],[105.40625,15.987451171875051],[105.39892578124997,15.829882812500017],[105.62207031250003,15.699951171875],[105.641015625,15.656542968750045],[105.6388671875001,15.585937500000057],[105.615625,15.488281250000057],[105.49042968750004,15.256591796875],[105.49042968750004,15.127587890625009],[105.5333984375001,15.041601562499991],[105.54667968750002,14.932470703124963],[105.52304687500012,14.843310546875003],[105.49736328125002,14.590673828124963],[105.47558593750003,14.530126953124977],[105.42265625000007,14.471630859375054],[105.34218750000005,14.416699218750054],[105.24365234375003,14.367871093750054],[105.1833007812501,14.346240234374989],[105.16914062500004,14.336083984374966],[105.12597656250003,14.280957031250011],[105.07412109375005,14.227441406250037],[104.77900390625004,14.427832031250006],[103.19941406250004,14.332617187499977],[102.90927734375006,14.136718750000028],[102.546875,13.585693359375043],[102.33632812500005,13.560302734375014],[102.49960937500012,12.669970703125003],[102.75566406250002,12.42626953125],[102.73662109375007,12.089794921875011],[102.93388671875002,11.706689453125037],[102.594140625,12.203027343749994],[102.54023437500004,12.109228515624977],[101.83574218750002,12.640380859375014],[100.89775390625007,12.653808593749986],[100.96269531250007,13.431982421874991],[100.60292968750005,13.568164062500017],[100.23564453125002,13.48447265625002],[99.99052734375007,13.243457031250031],[100.08994140625006,13.045654296874972],[99.96396484375006,12.690039062500006],[99.98906250000007,12.170800781249994],[99.16503906250003,10.319824218750028],[99.25390625000003,9.265234375000034],[99.83554687500012,9.288378906250031],[99.98955078125007,8.589208984374977],[100.129296875,8.428076171875006],[100.16347656250005,8.508398437500034],[100.27939453125006,8.268505859375011],[100.54521484375002,7.226904296874991],[100.43935546875005,7.280761718750043],[100.38037109375003,7.541503906250043],[100.28378906250006,7.551513671875043],[100.25664062500002,7.774902343749986],[100.16074218750012,7.599267578124994],[100.4235351562501,7.18784179687502],[101.01787109375002,6.860937500000034],[101.49794921875005,6.865283203125031],[102.10107421874997,6.242236328125031],[101.87363281250012,5.825292968749991],[101.67841796875004,5.778808593750028],[101.5560546875,5.907763671875003],[101.1139648437501,5.636767578125045],[100.98164062500004,5.771044921875045],[101.05351562500002,6.242578125],[100.87392578125,6.24541015624996],[100.75449218750012,6.460058593749991],[100.3454101562501,6.549902343750006],[100.26142578125004,6.682714843749963],[100.11914062499997,6.441992187500048],[99.69599609375004,6.87666015625004],[99.72031250000012,7.106201171875],[99.55302734375002,7.218798828125031],[99.59697265625002,7.355615234375009],[99.35859375000004,7.372216796875023],[99.26367187499997,7.619042968750037],[99.07763671874997,7.718066406250045],[99.05107421875002,7.887841796874994],[98.78867187500012,8.059814453125028],[98.703515625,8.256738281250009],[98.57919921875006,8.344287109374989],[98.42099609375006,8.17822265625],[98.30546875000007,8.226220703125009],[98.24179687500006,8.767871093750045],[98.70253906250005,10.19038085937504],[98.7572265625,10.660937499999974],[99.1901367187501,11.105273437499989],[99.61474609374997,11.781201171875026],[99.40507812500002,12.547900390625003],[99.12392578125,13.030761718750043],[99.13681640625006,13.716699218749994],[98.57001953125004,14.359912109375031],[98.20214843749997,14.97592773437502],[98.19101562500012,15.204101562499972],[98.55693359375007,15.367675781249986],[98.59238281250006,16.05068359375005],[98.81796875000012,16.180810546874994],[98.88828125000006,16.351904296875034],[98.83544921875003,16.417578125],[98.66074218750006,16.330419921875006],[98.4388671875,16.975683593750034],[97.7064453125,17.79711914062503],[97.63222656250005,18.290332031250074],[97.37392578125,18.51796875],[97.74589843750002,18.58818359374999],[97.816796875,19.459960937500057],[98.01503906250005,19.74951171874997],[98.37128906250004,19.68916015625004],[98.9166992187501,19.77290039062504],[99.07421875000003,20.09936523437503],[99.48593750000006,20.14985351562501],[99.45888671875005,20.363037109375],[99.72011718750005,20.32543945312497],[99.8903320312501,20.424414062499977],[99.9542968750001,20.415429687500023],[100.0036132812501,20.37958984375001],[100.12246093750005,20.316650390625057]]]]},"properties":{"name":"Thailand","childNum":4}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[70.66416015625,39.85546875],[70.55957031250003,39.790917968749994],[70.48925781250003,39.86303710937503],[70.48281250000005,39.88271484375005],[70.49775390625004,39.88242187499998],[70.56708984375004,39.86660156250005],[70.66416015625,39.85546875]]],[[[70.95800781250003,40.238867187500034],[70.59921875,39.974511718749994],[69.96679687499997,40.202246093750034],[69.46875,40.020751953125],[69.47099609375002,39.990625],[69.43193359375007,39.909765625000034],[69.36542968750004,39.94707031250002],[69.30722656250006,39.968554687500045],[69.27880859374997,39.91777343749999],[69.24472656250006,39.82709960937498],[69.29765625000007,39.52480468750005],[70.50117187500004,39.58735351562501],[70.79931640625003,39.39472656250001],[71.4703125,39.60366210937502],[71.50302734375006,39.58217773437502],[71.51738281250002,39.55385742187502],[71.50585937499997,39.51708984374997],[71.5033203125,39.47880859374999],[71.73222656250002,39.422998046874994],[71.77861328125007,39.27797851562502],[72.04277343750002,39.352148437500034],[72.08417968750004,39.310644531250034],[72.14736328125005,39.26074218749997],[72.22998046874997,39.20751953124997],[72.63994140625002,39.385986328125],[73.10927734375,39.36191406249998],[73.2349609375,39.37456054687499],[73.3361328125001,39.41235351562506],[73.38740234375004,39.442724609375034],[73.4704101562501,39.46059570312502],[73.63164062500007,39.44887695312502],[73.63632812500006,39.396679687499955],[73.60732421875,39.229199218749955],[73.8052734375,38.968652343749994],[73.69609375000007,38.85429687499996],[73.80166015625,38.60688476562501],[74.02558593750004,38.53984375000002],[74.27744140625,38.659765625000034],[74.81230468750002,38.46030273437498],[74.8942382812501,37.60141601562498],[75.11875,37.38569335937498],[74.89130859375004,37.231640624999955],[74.875390625,37.24199218750002],[74.83046875,37.28593750000002],[74.73056640625006,37.35703125],[74.659375,37.39448242187501],[74.34902343750005,37.41875],[74.25966796875005,37.41542968750002],[74.20351562500005,37.37246093750005],[74.16708984375,37.32944335937498],[73.74960937500006,37.23178710937498],[73.6535156250001,37.239355468750034],[73.62753906250006,37.261572265625006],[73.71728515625003,37.32944335937498],[73.7337890625,37.37578125000002],[73.72060546875,37.41875],[73.65712890625005,37.43046875],[73.6046875000001,37.44604492187503],[73.48134765625,37.4716796875],[73.38291015625006,37.462255859375034],[73.21113281250004,37.40849609375002],[72.89550781250003,37.26752929687498],[72.65742187500004,37.029052734375],[71.665625,36.696923828124994],[71.530859375,36.845117187499994],[71.43291015625007,37.12753906249998],[71.5822265625001,37.91010742187498],[71.55195312500004,37.93315429687496],[71.48779296874997,37.93188476562497],[71.38964843750003,37.90629882812502],[71.31992187500006,37.90185546875],[71.27851562500004,37.91840820312498],[71.33271484375004,38.170263671875034],[71.25585937499997,38.306982421875006],[70.7359375,38.42255859375001],[70.41777343750002,38.075439453125],[70.21464843750002,37.92441406250006],[70.19941406250004,37.88603515624996],[70.25498046875006,37.76538085937497],[70.25146484374997,37.66416015625006],[70.18867187500004,37.58247070312501],[70.11982421875004,37.54350585937499],[69.9849609375,37.566162109375],[69.8208984375,37.60957031250004],[69.62578125000002,37.59404296874999],[69.49208984375,37.55307617187498],[69.42011718750004,37.486718749999966],[69.39921875000007,37.39931640625002],[69.42968749999997,37.290869140625034],[69.414453125,37.20776367187497],[69.35380859375007,37.15004882812502],[69.3039062500001,37.11694335937503],[69.26484375000004,37.1083984375],[69.18017578125003,37.158300781250034],[68.96044921875003,37.32504882812498],[68.9118164062501,37.33393554687501],[68.88525390624997,37.32807617187498],[68.85537109375005,37.31684570312501],[68.83847656250006,37.30283203124998],[68.82373046874997,37.27070312500001],[68.78203125000002,37.25800781250001],[68.7232421875,37.26801757812501],[68.6691406250001,37.258398437500006],[68.3869140625001,37.1375],[68.29951171875004,37.08842773437502],[68.28476562500006,37.036328124999955],[68.2609375000001,37.01308593750002],[68.2121093750001,37.02153320312496],[68.0677734375,36.949804687500006],[67.95800781249997,36.972021484375006],[67.83447265624997,37.06420898437506],[67.75898437500004,37.172216796875034],[67.7980468750001,37.244970703125006],[67.81435546875005,37.48701171875004],[68.3502929687501,38.211035156250006],[68.08720703125002,38.47353515625002],[68.13251953125004,38.927636718749966],[67.69443359375006,38.99462890625003],[67.64833984375005,39.13105468750004],[67.3576171875001,39.216699218749994],[67.426171875,39.46557617187497],[67.71904296875007,39.62138671875002],[68.46328125,39.53671874999998],[68.63896484375007,39.8388671875],[68.86875,39.90747070312503],[68.80468750000003,40.05034179687499],[68.9720703125,40.08994140624998],[68.63066406250007,40.16708984374998],[69.27490234374997,40.19809570312498],[69.20625,40.566552734374994],[69.35722656250002,40.76738281249996],[69.71289062500003,40.65698242187503],[70.40195312500006,41.03510742187498],[70.75107421875006,40.721777343750006],[70.37158203125003,40.38413085937506],[70.653125,40.201171875],[70.95800781250003,40.238867187500034]]]]},"properties":{"name":"Tajikistan","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[66.52226562500007,37.34848632812506],[66.471875,37.3447265625],[65.7650390625,37.56914062499996],[65.55498046875002,37.25117187500004],[65.30361328125005,37.24677734375001],[65.08964843750007,37.237939453124994],[64.9515625,37.19355468750001],[64.81630859375005,37.13208007812503],[64.7824218750001,37.05927734375001],[64.60253906250003,36.554541015625034],[64.5658203125,36.427587890625034],[64.51103515625002,36.34067382812498],[64.184375,36.14892578125],[63.8625,36.012353515624994],[63.12998046875006,35.84619140624997],[63.169726562500074,35.678125],[63.05664062500003,35.44580078125003],[62.98027343750002,35.40917968750003],[62.85800781250006,35.34965820312499],[62.688085937500006,35.25532226562504],[62.3078125000001,35.17080078125005],[62.08964843750002,35.3796875],[61.62099609375005,35.43232421875004],[61.34472656249997,35.62949218750006],[61.26201171875002,35.61958007812498],[61.25214843750004,35.86762695312498],[61.15292968750006,35.97675781250001],[61.212011718750006,36.190527343750034],[61.11962890625003,36.64257812500003],[60.34130859375003,36.63764648437501],[60.06279296875002,36.962890625],[59.454980468749994,37.25283203125002],[59.30175781249997,37.51064453125005],[58.81542968750003,37.683496093749994],[58.261621093749994,37.665820312500045],[57.35371093750004,37.97333984374998],[57.1935546875001,38.216406250000034],[56.440625,38.249414062499994],[56.272070312500006,38.080419921875034],[55.38085937500003,38.051123046875034],[54.90009765625004,37.77792968750006],[54.6994140625001,37.47016601562498],[53.91416015625006,37.34355468750002],[53.86865234375003,38.949267578125045],[53.70458984375003,39.209570312500034],[53.33632812500005,39.34082031250006],[53.15664062499999,39.26499023437506],[53.23564453125002,39.608544921874966],[53.603125,39.546972656250034],[53.472265625,39.66879882812498],[53.48730468749997,39.909375],[52.9875,39.98759765625002],[53.03554687500005,39.7744140625],[52.80468749999997,40.054003906250045],[52.73369140625002,40.39873046875002],[52.943457031250006,41.03808593750006],[53.1452148437501,40.82495117187497],[53.61523437500003,40.818505859374994],[53.87001953125005,40.64868164062503],[54.37734375,40.693261718749966],[54.319433593750006,40.83457031249998],[54.68505859375003,40.873046875],[54.70371093750006,41.071142578125034],[54.094824218750006,41.51938476562506],[53.80468749999997,42.11762695312498],[53.16416015625006,42.09379882812502],[52.97001953125002,41.97622070312505],[52.81484375,41.711816406249994],[52.850390625000074,41.20029296875006],[52.4938476562501,41.780371093750034],[53.0558593750001,42.14775390624999],[54.120996093749994,42.335205078125],[54.85380859375002,41.965185546875006],[55.434375,41.296289062499994],[55.97744140625005,41.32221679687504],[57.01796875,41.26347656249996],[57.11884765625004,41.35029296874998],[56.96406250000004,41.856542968750006],[57.290625,42.123779296875],[57.814257812500074,42.18984375000005],[58.02890625,42.48764648437506],[58.474414062500074,42.29936523437496],[58.15156250000004,42.628076171874966],[58.477148437500006,42.66284179687503],[58.5890625000001,42.778466796874966],[59.35429687500002,42.32329101562496],[59.98515625000002,42.21171875],[59.94179687499999,41.97353515625002],[60.20078125000006,41.803125],[60.07558593750005,41.759667968749966],[60.089648437500074,41.39941406250003],[60.454980468749994,41.221630859374955],[61.2423828125001,41.18920898437503],[61.496972656249994,41.276074218749955],[61.90283203124997,41.09370117187501],[62.48320312500002,39.97563476562496],[63.76367187500003,39.16054687499999],[64.3099609375,38.97729492187497],[65.612890625,38.23857421875002],[65.97119140624997,38.244238281250006],[66.60625,37.98671875000005],[66.52558593750004,37.785742187500034],[66.51132812500006,37.59916992187496],[66.51064453125,37.45869140625004],[66.52226562500007,37.34848632812506]]]},"properties":{"name":"Turkmenistan","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[124.0363281250001,-9.341601562500031],[124.44443359375012,-9.190332031250023],[124.28232421875012,-9.427929687500026],[124.0363281250001,-9.341601562500031]]],[[[125.06816406250002,-9.511914062499997],[124.96015625000004,-9.213769531250009],[125.10048828125,-9.189843750000023],[125.14902343750012,-9.042578125000034],[124.93681640625007,-9.053417968750026],[124.92226562500005,-8.942480468749977],[125.17802734375002,-8.647851562499994],[125.38183593749997,-8.575390624999983],[126.61972656250006,-8.459472656249986],[126.96640625000012,-8.315722656250017],[127.29609375000004,-8.424511718749969],[126.91523437500004,-8.715234374999966],[125.40800781250002,-9.275781250000023],[125.06816406250002,-9.511914062499997]]],[[[125.64609375000006,-8.139941406250003],[125.5794921875,-8.311816406250017],[125.50712890625007,-8.275097656249997],[125.64609375000006,-8.139941406250003]]]]},"properties":{"name":"Timor-Leste","childNum":3}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-175.1619140625,-21.169335937500023],[-175.07817382812496,-21.129003906249977],[-175.15659179687495,-21.26367187499997],[-175.36235351562496,-21.106835937499994],[-175.1619140625,-21.169335937500023]]],[[[-173.953515625,-18.63935546875001],[-174.06914062500002,-18.640234375],[-173.96806640624993,-18.565332031250023],[-173.953515625,-18.63935546875001]]]]},"properties":{"name":"Tonga","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[-61.012109374999966,10.134326171874989],[-61.906103515625006,10.069140625000031],[-61.49931640624999,10.268554687499972],[-61.47827148437497,10.603369140624977],[-61.65117187499993,10.718066406249974],[-60.917626953124966,10.84023437499999],[-61.03374023437502,10.669873046875026],[-61.012109374999966,10.134326171874989]]]},"properties":{"name":"Trinidad and Tobago","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[10.957617187500063,33.72207031250005],[10.722070312500051,33.738916015624994],[10.745214843750063,33.88867187500006],[11.017871093749989,33.82333984374998],[10.957617187500063,33.72207031250005]]],[[[11.278027343750068,34.753808593749994],[11.123632812500063,34.68168945312496],[11.254882812500057,34.82031250000006],[11.278027343750068,34.753808593749994]]],[[[10.274609375000011,31.684960937499994],[10.114941406250068,31.46376953125005],[10.216406250000063,30.78320312500003],[10.05976562500004,30.58007812500003],[9.932519531250051,30.42534179687496],[9.895019531250028,30.387304687500034],[9.51875,30.229394531249994],[9.224023437500023,31.373681640624994],[9.160253906250006,31.621337890625],[9.044042968750034,32.072363281250034],[8.333398437500051,32.54360351562502],[8.1125,33.055322265624994],[7.877246093750017,33.172119140625],[7.534375,33.717919921874994],[7.513867187500068,34.080517578124955],[8.24560546875,34.73408203124998],[8.276855468750057,34.97949218749997],[8.312109375000063,35.084619140624994],[8.394238281250011,35.20385742187503],[8.318066406250011,35.654931640624994],[8.348730468750063,36.367968750000045],[8.207617187500006,36.518945312499994],[8.601269531250068,36.83393554687504],[8.576562500000023,36.93720703125001],[9.687988281250057,37.34038085937499],[9.838476562500063,37.30898437499999],[9.830273437499983,37.13535156250006],[9.875585937499977,37.25415039062503],[10.196386718750063,37.205859375000045],[10.293261718750074,36.781494140625],[10.412304687499983,36.73183593750002],[11.053906250000068,37.07250976562506],[11.12666015625004,36.874072265625045],[10.476562500000028,36.175146484375006],[10.590820312500028,35.88725585937499],[11.00429687500008,35.63383789062496],[11.120117187500057,35.24028320312499],[10.69091796875,34.67846679687503],[10.118359375000068,34.280078125000045],[10.049023437500068,34.056298828124994],[10.305273437500034,33.72827148437497],[10.713183593750017,33.68901367187496],[10.722753906250006,33.514404296875],[10.958007812500057,33.62631835937498],[11.257421875000034,33.30883789062506],[11.202636718749972,33.24921874999998],[11.50458984375004,33.181933593750045],[11.502441406250028,33.15556640624999],[11.467187500000051,32.96572265625005],[11.459179687500011,32.897363281249966],[11.453906250000017,32.64257812500003],[11.533789062500034,32.52495117187496],[11.535937500000017,32.47333984375001],[11.504980468750034,32.413671875000034],[11.358007812500006,32.34521484375003],[11.168261718750074,32.25673828125002],[11.005175781250074,32.17270507812506],[10.826367187500068,32.080664062500034],[10.771582031250006,32.02119140625001],[10.60888671875,31.929541015624977],[10.47578125000004,31.736035156249983],[10.274609375000011,31.684960937499994]]]]},"properties":{"name":"Tunisia","childNum":3}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[25.970019531250045,40.136328125],[25.6689453125,40.13588867187502],[25.918359375000023,40.23798828125004],[25.970019531250045,40.136328125]]],[[[43.43339843750002,41.155517578125],[43.43945312500003,41.10712890625001],[43.72265624999997,40.71953124999999],[43.56933593750003,40.48237304687498],[43.66621093750004,40.12636718750002],[44.28925781250004,40.040380859375006],[44.76826171875004,39.70351562500005],[44.81718750000002,39.65043945312496],[44.58710937500004,39.76855468750006],[44.3893554687501,39.422119140625],[44.02324218750002,39.37744140625006],[44.27167968750004,38.83603515625006],[44.2985351562501,38.38627929687499],[44.4499023437501,38.33422851562506],[44.21132812499999,37.908056640625006],[44.589941406250006,37.710351562499966],[44.574023437500074,37.435400390625006],[44.79414062500004,37.290380859375034],[44.76513671875003,37.142431640625006],[44.73095703124997,37.16528320312503],[44.66933593750005,37.17358398437503],[44.60595703124997,37.176025390625],[44.401953125,37.05849609375002],[44.325585937499994,37.0107421875],[44.28183593750006,36.97802734374997],[44.24570312500006,36.983300781249994],[44.20166015624997,37.05180664062502],[44.208398437499994,37.20263671875],[44.19179687499999,37.249853515625034],[44.15625,37.28295898437503],[44.11445312500004,37.30185546875006],[44.01318359375003,37.313525390625045],[43.83642578124997,37.223535156249994],[43.67578125000003,37.227246093749955],[43.09248046875004,37.36738281249998],[42.936621093750006,37.32475585937502],[42.77460937500004,37.371875],[42.74111328125005,37.361914062500034],[42.6354492187501,37.249267578125],[42.45585937500002,37.128710937500045],[42.358984375,37.10859375000004],[42.31289062499999,37.22958984374998],[42.26855468749997,37.276562499999955],[42.24755859375003,37.28222656250006],[42.20273437500006,37.29726562499999],[42.16787109375005,37.28862304687502],[42.059863281250074,37.2060546875],[41.886816406250006,37.156396484374994],[40.70566406250006,37.09770507812502],[40.4503906250001,37.00888671875006],[40.016406250000074,36.82607421875002],[39.68652343749997,36.73862304687506],[39.50146484374997,36.702246093750034],[39.35664062500004,36.68159179687498],[39.10839843749997,36.68056640625005],[38.90644531250004,36.69467773437498],[38.76660156249997,36.69311523437503],[38.19169921875002,36.90156250000004],[37.90664062500005,36.79462890625001],[37.7203125,36.74370117187502],[37.52353515625006,36.678320312500034],[37.436328125000074,36.643310546875],[37.327050781249994,36.64658203125006],[37.18740234375005,36.655908203124994],[37.066210937500074,36.652636718750045],[36.98535156250003,36.70239257812506],[36.94179687499999,36.758398437500006],[36.77656250000004,36.79267578124998],[36.65859375000005,36.80253906250002],[36.62841796875003,36.777685546875034],[36.596875,36.70136718750001],[36.546679687500074,36.50634765625],[36.5375,36.457421874999966],[36.63671874999997,36.233984375],[36.37539062499999,36.171240234375034],[36.347558593749994,36.003515625000034],[36.20195312500002,35.93754882812502],[36.15361328125002,35.83388671875005],[36.12734375,35.831445312499994],[35.967578125000074,35.91005859375002],[35.89267578125006,35.91655273437502],[35.81093750000005,36.30986328125002],[36.18847656250003,36.65898437499999],[36.048925781250006,36.91059570312501],[35.393164062500006,36.57519531249997],[34.70361328125003,36.81679687499999],[33.694726562499994,36.18198242187498],[32.794824218749994,36.03588867187497],[32.37773437500002,36.18364257812496],[32.02197265625003,36.53530273437502],[31.35253906249997,36.80107421874999],[30.64404296874997,36.86567382812501],[30.446093750000074,36.269873046875034],[29.6890625,36.15668945312498],[29.22363281249997,36.32446289062497],[28.96962890625008,36.71533203125003],[28.303710937500057,36.81196289062498],[28.01943359375005,36.63447265624998],[28.083984375000057,36.75146484375],[27.453906250000017,36.712158203125],[28.00537109375003,36.83198242187498],[28.242382812500068,37.029052734375],[27.262988281250045,36.97656250000003],[27.30019531250005,37.12685546875002],[27.53505859375005,37.16386718750002],[27.06796875,37.65791015625004],[27.224414062500074,37.725439453125006],[27.23242187500003,37.978662109374994],[26.29072265625001,38.27719726562498],[26.44130859375005,38.64121093749998],[26.67421875000008,38.33574218750002],[27.14423828125001,38.45195312499996],[26.906835937500034,38.48173828124999],[26.763671875,38.709619140624966],[27.013671875000057,38.88686523437502],[26.814941406250057,38.96098632812502],[26.853613281250034,39.115625],[26.68183593750004,39.292236328125],[26.89921874999999,39.549658203125034],[26.113085937500074,39.46738281249998],[26.101367187500074,39.56894531249998],[26.18134765625004,39.99008789062498],[26.738085937500045,40.40024414062506],[27.28457031250008,40.45561523437496],[27.4755859375,40.319921875000034],[27.72802734375,40.32880859374998],[27.84853515625005,40.38173828125002],[27.73183593750008,40.48149414062499],[27.87490234375008,40.512939453125],[27.989550781250074,40.48945312500001],[27.96259765625001,40.369873046875],[29.00712890624999,40.389746093750034],[28.787890625000017,40.534033203125034],[28.95800781250003,40.63056640624998],[29.849218750000063,40.760107421875006],[29.113867187499977,40.93784179687506],[29.14814453125004,41.221044921875034],[31.25488281249997,41.10761718750001],[31.45800781249997,41.32001953125004],[32.306445312500074,41.72958984374998],[33.38134765625003,42.01757812500003],[34.75048828124997,41.95683593749999],[35.006445312500006,42.06328125000002],[35.15488281250006,42.02753906250001],[35.12207031250003,41.89111328125003],[35.297753906249994,41.72851562500003],[35.558007812499994,41.63403320312506],[36.05175781249997,41.68256835937498],[36.40537109375006,41.27460937500001],[36.77773437499999,41.36347656250001],[37.066210937500074,41.184423828125034],[38.38105468750004,40.92451171875001],[39.426367187500006,41.10644531250003],[40.26523437500006,40.96132812500005],[41.08359375000006,41.26118164062504],[41.41435546875002,41.42363281249999],[41.510058593750074,41.51748046875002],[41.70175781250006,41.471582031249994],[41.77939453125006,41.44052734374998],[41.823535156250074,41.432373046875],[41.92578125000003,41.49565429687502],[42.46640625,41.43984375000002],[42.56738281249997,41.55927734375001],[42.590429687500006,41.57070312500002],[42.60683593750005,41.57880859374998],[42.682421875000074,41.58574218749999],[42.75410156250004,41.57890625000002],[42.787890625000074,41.56372070312503],[42.82167968750005,41.49238281249998],[42.90673828125003,41.46684570312502],[43.05712890625003,41.35283203124996],[43.149023437500006,41.30712890624997],[43.171289062499994,41.28793945312498],[43.14101562499999,41.26484374999998],[43.15283203124997,41.23642578125006],[43.20546875000005,41.19916992187501],[43.43339843750002,41.155517578125]]],[[[27.47480468750001,41.946875],[28.014453125000017,41.96904296874999],[28.197851562500063,41.55449218750002],[29.057226562500006,41.22973632812503],[28.95625,41.00820312499999],[28.172167968750074,41.08071289062502],[27.49941406250005,40.97314453124997],[27.258007812499983,40.687353515625006],[26.772070312500034,40.498046875],[26.202734375000034,40.07539062500004],[26.25380859375005,40.31469726562503],[26.792089843750034,40.626611328124994],[26.10546875000003,40.61132812499997],[26.03896484375008,40.726757812499955],[26.331054687500057,40.954492187499994],[26.330664062499977,41.23876953125],[26.62490234375008,41.401757812499994],[26.581347656250074,41.60126953125004],[26.320898437500034,41.716552734375],[26.3603515625,41.80156249999999],[26.51142578125004,41.82636718749998],[26.549707031250023,41.896728515625],[26.5796875,41.947949218749955],[26.615332031250063,41.964892578125045],[26.884863281250006,41.99184570312502],[26.96875,42.02685546875006],[27.01171875,42.05864257812496],[27.193359375000057,42.07709960937498],[27.24433593750004,42.09326171875],[27.294921875000057,42.079541015624955],[27.47480468750001,41.946875]]]]},"properties":{"name":"Turkey","childNum":3}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[39.71132812499999,-7.977441406250023],[39.602929687499994,-7.936132812499949],[39.907128906249994,-7.649218750000031],[39.71132812499999,-7.977441406250023]]],[[[39.49648437499999,-6.174609375],[39.573046875000074,-6.387402343750011],[39.48095703124997,-6.45371093750002],[39.18232421875004,-6.172558593750026],[39.30898437499999,-5.721972656249974],[39.49648437499999,-6.174609375]]],[[[39.86503906250002,-4.906152343750037],[39.74931640625002,-5.443847656249986],[39.646777343750074,-5.368554687500009],[39.6734375,-4.927050781250031],[39.86503906250002,-4.906152343750037]]],[[[33.90322265625005,-1.002050781250034],[37.643847656250074,-3.045410156250028],[37.608203125000074,-3.497070312500028],[39.221777343750006,-4.692382812500014],[38.80468750000003,-6.070117187500031],[38.87402343750003,-6.33125],[39.5460937500001,-7.024023437500034],[39.288476562499994,-7.517871093750003],[39.28701171875005,-7.787695312500006],[39.4284179687501,-7.81279296874996],[39.441015625,-8.011523437499946],[39.304003906250074,-8.44384765625],[39.451269531250006,-8.94296875],[39.64130859375004,-9.19248046875002],[39.72519531250006,-10.000488281249972],[40.46357421875004,-10.464355468749972],[39.98867187499999,-10.820800781250014],[39.81708984375004,-10.912402343750031],[38.9875,-11.167285156250003],[38.49179687500006,-11.413281250000026],[37.92021484375002,-11.294726562500031],[37.72480468750004,-11.58066406250002],[37.54169921875004,-11.675097656249974],[37.37285156250002,-11.710449218749986],[36.97890625000005,-11.566992187499977],[36.30566406250003,-11.706347656249946],[36.191308593749994,-11.670703124999974],[36.17548828125004,-11.60927734374998],[36.08222656250004,-11.537304687499969],[35.91132812500004,-11.45468750000002],[35.785449218750074,-11.452929687500017],[35.63095703125006,-11.582031250000028],[35.564355468749994,-11.602343749999989],[35.418261718750074,-11.583203125],[35.18261718750003,-11.574804687499977],[34.95947265625003,-11.578125],[34.93701171874997,-11.463476562500034],[34.890625,-11.3935546875],[34.77382812500005,-11.341699218750009],[34.60791015624997,-11.08046875],[34.66708984375006,-10.792480468750028],[34.56992187500006,-10.241113281249966],[34.32089843750006,-9.731542968749977],[33.99560546875003,-9.495410156250003],[33.88886718750004,-9.670117187499983],[32.91992187500003,-9.407421875000026],[32.75664062500002,-9.322265625],[31.94257812500004,-9.05400390624996],[31.91865234375004,-8.942187500000017],[31.886132812499994,-8.921972656249977],[31.81806640625004,-8.902246093749952],[31.673632812500017,-8.908789062499963],[31.55625,-8.80546875],[31.44921874999997,-8.65390625],[31.35058593750003,-8.607031250000034],[31.07636718750004,-8.611914062499963],[30.968359375000063,-8.550976562499983],[30.89199218750005,-8.473730468749963],[30.830664062500063,-8.385546875000031],[30.720898437500097,-8.104394531250037],[30.40673828125003,-7.460644531249983],[30.313183593750097,-7.203710937499949],[30.212695312500017,-7.037890625000017],[30.10625,-6.915039062500028],[29.961816406249994,-6.803125],[29.798144531250017,-6.691894531249957],[29.70966796875004,-6.61689453125004],[29.590625,-6.394433593750023],[29.540820312500017,-6.313867187500037],[29.50625,-6.172070312500011],[29.480078125,-6.025],[29.490820312500063,-5.96542968750002],[29.59638671875004,-5.775976562499963],[29.60703125,-5.722656250000028],[29.59414062500005,-5.650781250000037],[29.542382812499994,-5.499804687500017],[29.34277343749997,-4.983105468749997],[29.32343750000004,-4.898828124999966],[29.32568359374997,-4.835644531249969],[29.404199218749994,-4.49667968750002],[29.40322265625005,-4.449316406249963],[29.71777343750003,-4.45585937499996],[29.94726562499997,-4.307324218749983],[30.4,-3.65390625],[30.790234375000097,-3.274609375000011],[30.811132812500006,-3.116406250000011],[30.78027343750003,-2.984863281249957],[30.70947265624997,-2.977246093749997],[30.604296875000074,-2.935253906249969],[30.515039062499994,-2.917578125],[30.45556640625003,-2.893164062500006],[30.433496093749994,-2.874511718750028],[30.424023437500097,-2.82402343749996],[30.473339843750097,-2.6943359375],[30.42421875000005,-2.641601562500014],[30.441992187500006,-2.613476562499969],[30.53369140624997,-2.426269531250014],[30.55361328125005,-2.400097656250011],[30.593359375000063,-2.39677734374996],[30.65664062500005,-2.373828124999989],[30.71484375000003,-2.363476562500011],[30.7625,-2.371679687499991],[30.828710937500006,-2.338476562499977],[30.85498046874997,-2.265429687500017],[30.8765625,-2.143359375000017],[30.864648437499994,-2.044042968749949],[30.819140625000017,-1.967480468749983],[30.812597656250006,-1.56308593750002],[30.76220703124997,-1.458691406249983],[30.710742187500074,-1.396777343749974],[30.631933593750006,-1.36748046874996],[30.508105468750074,-1.208203125000026],[30.47021484374997,-1.13115234374996],[30.47705078124997,-1.0830078125],[30.509960937500097,-1.067285156249994],[30.51992187499999,-1.0625],[30.67275390625005,-1.051367187499949],[30.741992187500017,-1.007519531249997],[30.809179687500063,-0.994921875],[30.82363281250005,-0.999023437499943],[30.84472656250003,-1.002050781250034],[32.371875,-1.002050781250034],[33.90322265625005,-1.002050781250034]]]]},"properties":{"name":"Tanzania","childNum":4}},{"geometry":{"type":"Polygon","coordinates":[[[30.50996093750001,-1.067285156250009],[30.46992187500001,-1.066015625],[30.41230468750001,-1.063085937500006],[30.360253906250023,-1.074609375],[29.930078125000023,-1.469921875000011],[29.82539062500001,-1.335546875],[29.576953125000017,-1.387890625000011],[29.717675781250023,0.098339843749997],[29.934472656250023,0.4990234375],[29.94287109375,0.819238281249994],[31.252734375000017,2.044580078124994],[31.176367187500006,2.270068359374989],[30.728613281250006,2.455371093749989],[30.8466796875,2.847021484374991],[30.754003906250006,3.041796874999989],[30.90644531250001,3.408935546875],[30.83857421875001,3.49072265625],[31.15234375,3.785595703124997],[31.547167968750017,3.677587890624991],[31.79804687500001,3.802636718749994],[32.13593750000001,3.519726562499997],[32.33574218750002,3.706201171874994],[32.99726562500001,3.880175781249989],[33.489355468750006,3.755078125],[33.568457031250006,3.81171875],[33.74160156250002,3.985253906249994],[33.97607421875,4.22021484375],[34.13203125000001,3.88916015625],[34.18574218750001,3.869775390624994],[34.1650390625,3.81298828125],[34.26708984375,3.733154296875],[34.39287109375002,3.691503906249991],[34.43769531250001,3.650585937499997],[34.44179687500002,3.60625],[34.3994140625,3.412695312499991],[34.4072265625,3.357519531249991],[34.447851562500006,3.163476562499994],[34.90576171875,2.4796875],[34.88300781250001,2.417919921874997],[34.96406250000001,2.062402343749994],[34.9775390625,1.861914062499991],[34.97646484375002,1.719628906249994],[34.79863281250002,1.24453125],[34.48173828125002,1.042138671874994],[34.41083984375001,0.867285156249991],[34.16093750000002,0.605175781249997],[33.94316406250002,0.173779296874997],[33.90322265625002,-1.002050781250006],[32.371875,-1.002050781250006],[30.8447265625,-1.002050781250006],[30.823632812500023,-0.9990234375],[30.809179687500006,-0.994921875],[30.741992187500017,-1.007519531250011],[30.672753906250023,-1.051367187500006],[30.598730468750006,-1.069726562500009],[30.519921875000023,-1.0625],[30.50996093750001,-1.067285156250009]]]},"properties":{"name":"Uganda","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[32.01220703124997,46.20390624999999],[32.15009765625004,46.1546875],[31.56386718750005,46.25776367187504],[31.50878906250003,46.373144531250006],[32.01220703124997,46.20390624999999]]],[[[38.21435546875003,47.091455078124966],[37.54335937499999,47.07456054687498],[36.794824218749994,46.71440429687499],[36.55878906250004,46.76269531250006],[35.82714843749997,46.62431640625002],[35.01455078125005,46.10600585937502],[35.280175781249994,46.27949218750001],[35.23037109375005,46.440625],[34.84960937500003,46.189892578124955],[35.02285156250005,45.70097656250002],[35.45751953124997,45.316308593749994],[36.170507812500006,45.453076171874955],[36.575,45.3935546875],[36.39335937500002,45.06538085937501],[35.87011718750003,45.005322265624955],[35.472558593749994,45.098486328125006],[35.08769531250002,44.802636718749966],[34.46992187500004,44.7216796875],[33.909960937500074,44.387597656249966],[33.45068359374997,44.553662109374955],[33.55517578125003,45.09765625000003],[32.5080078125001,45.40380859375006],[33.664843750000074,45.94707031249996],[33.59414062500005,46.09624023437499],[33.42988281250004,46.05761718750003],[33.20224609375006,46.17573242187501],[32.47675781250004,46.08369140625001],[31.83125,46.28168945312501],[32.00849609375004,46.42998046875002],[31.554882812500097,46.554296875000034],[32.36132812499997,46.474951171875034],[32.578027343749994,46.615625],[32.04433593750005,46.642480468749966],[31.75917968750005,47.21284179687501],[31.872851562500017,46.649755859375034],[31.532128906249994,46.66474609374998],[31.56337890625005,46.77729492187501],[31.402929687500063,46.62880859375002],[30.796289062499994,46.55200195312503],[30.219042968750074,45.866748046875045],[29.62841796875003,45.722460937500045],[29.705859375000074,45.25991210937505],[29.567675781250074,45.37080078124998],[29.40371093750005,45.419677734375],[29.22353515625005,45.402929687500034],[28.894335937500017,45.28994140625002],[28.78173828125,45.30986328125002],[28.76660156250003,45.28623046874998],[28.78828125000001,45.240966796875],[28.451269531250006,45.292187499999955],[28.317675781250045,45.347119140624955],[28.2125,45.45043945312506],[28.26484375000004,45.48388671875003],[28.310351562500074,45.49858398437499],[28.499023437500057,45.517724609374994],[28.513769531250034,45.57241210937502],[28.49160156250005,45.66577148437503],[28.562304687500074,45.73579101562501],[28.667578125,45.79384765625002],[28.729296875000074,45.852001953124955],[28.73876953125003,45.937158203124994],[28.84951171875005,45.97866210937502],[28.94775390624997,46.049951171874966],[28.971875,46.12763671874998],[29.00625,46.17646484374998],[28.94375,46.28842773437506],[28.930566406250023,46.36225585937501],[28.92744140625001,46.42412109374999],[28.958398437500023,46.45849609374997],[29.146289062500017,46.52690429687496],[29.186230468750068,46.52397460937499],[29.20078125,46.504980468750034],[29.20458984374997,46.37934570312501],[29.223828125000097,46.37695312499997],[29.458789062500017,46.453759765624994],[29.83789062499997,46.35053710937501],[29.878027343750063,46.360205078125034],[30.07568359375003,46.377832031249966],[30.131054687500097,46.42309570312506],[29.92431640624997,46.53886718750002],[29.934765625000097,46.625],[29.942480468750063,46.72377929687502],[29.918066406250063,46.78242187499998],[29.877832031249994,46.828906250000045],[29.57197265625004,46.96401367187502],[29.455664062500006,47.292626953124994],[29.134863281250006,47.48969726562501],[29.125390625000023,47.96455078125001],[28.42304687500001,48.146875],[28.34052734375001,48.144433593749994],[27.54921875000008,48.47773437500004],[27.22851562500003,48.37143554687506],[26.90058593750001,48.37192382812506],[26.847070312500023,48.387158203124955],[26.640429687500045,48.29414062500001],[26.618945312500017,48.25986328125006],[26.4423828125,48.22998046875],[26.162695312500063,47.992529296875034],[25.90869140625,47.96757812500002],[25.689257812500045,47.93247070312506],[25.46425781250005,47.910791015624994],[24.979101562500063,47.72412109374997],[24.578906250000074,47.93105468750005],[23.628710937500017,47.995849609375],[23.40820312500003,47.98999023437506],[23.20263671875,48.084521484375045],[23.13945312499999,48.08740234375],[22.87666015625001,47.94726562500006],[22.769140625000063,48.109619140625],[22.582421875000023,48.134033203125],[22.253710937500017,48.407373046874994],[22.131835937500057,48.40532226562502],[22.142871093750017,48.568505859374966],[22.295214843750045,48.68583984374999],[22.389453125000045,48.87348632812501],[22.52412109375004,49.03139648437502],[22.538671875,49.07270507812501],[22.847070312500023,49.08125],[22.705664062500006,49.17119140624999],[22.6494140625,49.53901367187498],[22.706152343750006,49.60620117187497],[23.03632812500004,49.899072265624966],[23.711718750000045,50.377343749999966],[23.97265625,50.410058593749966],[24.089941406250006,50.53046874999998],[24.0947265625,50.617041015625034],[23.9970703125,50.809375],[24.095800781250063,50.87275390625001],[23.664453125000023,51.31005859375],[23.61376953125,51.525390625],[23.706835937500045,51.64130859374998],[23.79169921875001,51.63710937500002],[23.864257812500057,51.62397460937501],[23.951171875,51.58505859374998],[23.978320312500017,51.59130859375003],[24.12685546875008,51.664648437500034],[24.280078125000017,51.77470703124999],[24.361914062500006,51.86752929687498],[25.785742187500006,51.923828125],[26.77343750000003,51.77070312499998],[26.952832031249983,51.754003906250034],[27.074121093750023,51.760839843750006],[27.14199218750008,51.75205078124998],[27.29628906250008,51.59741210937503],[27.689746093750017,51.572412109374994],[27.7,51.47797851562501],[27.85859375000004,51.59238281250006],[28.532031250000017,51.56245117187501],[28.59902343750008,51.54262695312505],[28.647753906250074,51.45654296875],[28.690234375000017,51.43886718750005],[28.73125,51.43339843749999],[28.84951171875005,51.540185546874994],[28.927539062500045,51.56215820312502],[28.97773437500004,51.57177734375003],[29.01308593750005,51.59892578124996],[29.06074218750001,51.625439453124955],[29.102050781250057,51.627539062500034],[29.346484375000017,51.38256835937503],[30.160742187500006,51.477880859375006],[30.449511718750017,51.274316406249994],[30.63251953125004,51.35541992187501],[30.61171875000005,51.406347656250006],[30.602343750000017,51.47124023437499],[30.56074218750004,51.531494140625],[30.533007812500017,51.596337890624966],[30.583886718749994,51.68896484375003],[30.667285156250017,51.81411132812502],[30.755273437499994,51.89516601562502],[30.84570312500003,51.95307617187501],[30.980664062500097,52.04619140624996],[31.217968750000097,52.05024414062498],[31.345996093750074,52.10537109375002],[31.57373046875003,52.108105468749955],[31.763378906250097,52.10107421875003],[32.12226562500004,52.05058593749996],[32.435449218749994,52.307226562500034],[33.735253906249994,52.344775390625045],[34.397851562499994,51.780419921874994],[34.12109375000003,51.67915039062498],[34.21386718750003,51.25537109375006],[35.0640625,51.203417968750045],[35.31191406250005,51.043896484374955],[35.59111328125002,50.36875],[36.1164062500001,50.408544921875006],[36.619433593750074,50.209228515625],[37.42285156249997,50.411474609375006],[38.046875,49.92001953125006],[38.258593750000074,50.05234375],[38.91835937499999,49.82470703125],[39.17480468750003,49.85595703124997],[39.780566406250074,49.57202148437503],[40.080664062500006,49.576855468749955],[40.10878906250005,49.251562500000034],[39.68652343749997,49.007910156250034],[40.00361328125004,48.82207031250002],[39.792871093749994,48.807714843750034],[39.6447265625001,48.591210937499966],[39.8356445312501,48.54277343749996],[39.95791015625005,48.268896484375034],[39.77871093750005,47.88754882812506],[38.90029296875005,47.85512695312502],[38.36884765625004,47.609960937500006],[38.21435546875003,47.091455078124966]]]]},"properties":{"name":"Ukraine","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[-57.81059570312499,-30.85859375000001],[-57.872509765625,-30.59101562500001],[-57.831201171874994,-30.495214843750006],[-57.71269531249999,-30.38447265625001],[-57.65087890625,-30.295019531250006],[-57.645751953125,-30.226953125],[-57.60888671875,-30.187792968750003],[-57.55229492187499,-30.26123046875],[-57.21445312499999,-30.28339843750001],[-57.186914062499994,-30.26484375000001],[-57.120507812499994,-30.14443359375001],[-56.83271484375,-30.107226562500003],[-56.4072265625,-30.44746093750001],[-55.998974609375,-30.837207031250003],[-56.018457031249994,-30.99189453125001],[-56.00468749999999,-31.079199218750006],[-55.873681640624994,-31.069628906250003],[-55.6271484375,-30.85810546875001],[-55.60302734375,-30.85078125000001],[-55.55732421875,-30.8759765625],[-55.17353515625,-31.279589843750003],[-55.09116210937499,-31.31396484375],[-55.036035156249994,-31.27900390625001],[-54.587646484375,-31.48515625],[-54.22055664062499,-31.85517578125001],[-53.76171875,-32.05683593750001],[-53.601708984374994,-32.40302734375001],[-53.12558593749999,-32.73671875],[-53.2140625,-32.82109375],[-53.31010742187499,-32.92705078125],[-53.39521484375,-33.010351562500006],[-53.482861328125,-33.06855468750001],[-53.511865234374994,-33.10869140625],[-53.53134765624999,-33.1708984375],[-53.53134765624999,-33.65546875000001],[-53.37060546875,-33.7421875],[-53.419580078124994,-33.77919921875001],[-53.47246093749999,-33.84931640625001],[-53.53452148437499,-34.01748046875001],[-53.742919921875,-34.24951171875],[-53.785302734374994,-34.38037109375],[-54.16855468749999,-34.670703125],[-54.902294921875,-34.93281250000001],[-55.67314453124999,-34.77568359375],[-56.249951171875,-34.90126953125001],[-57.17070312499999,-34.45234375000001],[-57.8291015625,-34.47734375],[-58.40019531249999,-33.91240234375],[-58.363525390625,-33.18232421875001],[-58.08232421874999,-32.893652343750006],[-58.12958984375,-32.75722656250001],[-58.16220703124999,-32.566503906250006],[-58.201171875,-32.4716796875],[-58.123046875,-32.321875],[-58.11972656249999,-32.24892578125001],[-58.164794921875,-32.18486328125],[-58.177001953125,-32.11904296875001],[-58.15634765624999,-32.0515625],[-58.160400390625,-31.98652343750001],[-58.18901367187499,-31.92421875],[-58.16748046875,-31.87265625],[-58.04233398437499,-31.76923828125001],[-58.006982421874994,-31.68496093750001],[-58.053857421874994,-31.494921875],[-58.0333984375,-31.416601562500006],[-57.89335937499999,-31.1953125],[-57.868408203125,-31.10439453125001],[-57.88632812499999,-30.93740234375001],[-57.81059570312499,-30.85859375000001]]]},"properties":{"name":"Uruguay","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-155.58134765624996,19.012011718750017],[-155.88129882812495,19.07050781250001],[-156.04868164062498,19.749951171874983],[-155.82031249999997,20.01416015624997],[-155.83164062499998,20.27583007812501],[-155.198779296875,19.99438476562503],[-154.80419921875,19.524462890625045],[-155.58134765624996,19.012011718750017]]],[[[-156.84960937499997,20.772656249999955],[-156.97338867187497,20.757519531249983],[-157.0505859375,20.912451171875034],[-156.88056640624995,20.904833984375074],[-156.84960937499997,20.772656249999955]]],[[[-156.48681640624994,20.93256835937504],[-156.27753906250004,20.951269531250034],[-155.98984374999998,20.75712890624999],[-156.40878906249998,20.60517578125004],[-156.480078125,20.80122070312501],[-156.69775390625003,20.949072265625034],[-156.58540039062495,21.034326171874994],[-156.48681640624994,20.93256835937504]]],[[[-157.21362304687497,21.215380859375017],[-156.71215820312506,21.155078125000074],[-156.85986328125,21.05634765625004],[-157.29033203124996,21.112597656250017],[-157.21362304687497,21.215380859375017]]],[[[-157.79936523437502,21.456640625000034],[-157.63540039062502,21.30761718749997],[-158.11035156249994,21.318603515625],[-158.27314453125,21.585253906250045],[-157.9625,21.701367187499983],[-157.79936523437502,21.456640625000034]]],[[[-159.37275390625,21.93237304687497],[-159.60883789062495,21.909521484375034],[-159.78916015625003,22.041796875000074],[-159.57919921874998,22.22314453124997],[-159.35205078124997,22.219580078125034],[-159.37275390625,21.93237304687497]]],[[[-81.04418945312503,24.716796875000057],[-81.137353515625,24.710498046875017],[-80.93046875,24.75947265625004],[-81.04418945312503,24.716796875000057]]],[[[-80.3818359375,25.142285156249955],[-80.58056640624997,24.954248046875023],[-80.25708007812497,25.34760742187504],[-80.3818359375,25.142285156249955]]],[[[-97.17070312499996,26.159375],[-97.40209960937494,26.820507812499983],[-97.38598632812494,27.19648437500004],[-97.17070312499996,26.159375]]],[[[-80.18676757812497,27.278417968750034],[-80.17050781250003,27.20478515625004],[-80.43691406249994,27.850537109374955],[-80.18676757812497,27.278417968750034]]],[[[-91.793701171875,29.50073242187497],[-92.00664062499996,29.61030273437501],[-91.875244140625,29.640966796875034],[-91.793701171875,29.50073242187497]]],[[[-84.90791015624998,29.642626953125017],[-85.11674804687499,29.63281249999997],[-84.737158203125,29.732421875],[-84.90791015624998,29.642626953125017]]],[[[-89.22397460937498,30.084082031249977],[-89.34199218749995,30.062841796875006],[-89.18466796874995,30.168652343749983],[-89.22397460937498,30.084082031249977]]],[[[-118.34794921875002,33.3857421875],[-118.29746093750003,33.312109375],[-118.44628906249997,33.317089843749955],[-118.56943359375002,33.46416015624999],[-118.34794921875002,33.3857421875]]],[[[-120.04355468749995,33.918847656249994],[-120.25190429687494,34.01386718749998],[-120.07182617187493,34.026513671874966],[-120.04355468749995,33.918847656249994]]],[[[-119.88237304687497,34.07968749999998],[-119.54926757812497,34.02817382812506],[-119.80957031249997,33.9677734375],[-119.88237304687497,34.07968749999998]]],[[[-75.54414062499995,35.240087890625034],[-75.69008789062502,35.221582031249994],[-75.53637695312497,35.27861328124999],[-75.50351562500003,35.769140625],[-75.46474609374994,35.448632812499966],[-75.54414062499995,35.240087890625034]]],[[[-74.13320312500002,39.680761718750034],[-74.25048828125,39.529394531250006],[-74.10673828124996,39.74643554687498],[-74.13320312500002,39.680761718750034]]],[[[-72.50976562500003,40.98603515625001],[-72.58085937499996,40.92133789062498],[-71.90322265625,41.06069335937505],[-73.19428710937495,40.654199218749994],[-74.01489257812497,40.581201171874966],[-73.87924804687498,40.79165039062502],[-73.573828125,40.91962890624998],[-72.62509765624998,40.99184570312505],[-72.27412109374998,41.15302734375001],[-72.50976562500003,40.98603515625001]]],[[[-69.9779296875,41.26557617187504],[-70.23305664062502,41.28632812500001],[-70.04121093750001,41.3974609375],[-69.9779296875,41.26557617187504]]],[[[-70.50991210937502,41.376318359375034],[-70.82919921874995,41.35898437500006],[-70.61601562499996,41.45722656250001],[-70.50991210937502,41.376318359375034]]],[[[-71.24140625000001,41.49194335937497],[-71.34624023437496,41.469384765624994],[-71.23203124999995,41.654296875],[-71.24140625000001,41.49194335937497]]],[[[-68.18725585937497,44.33247070312501],[-68.41171875000003,44.294335937499966],[-68.29941406249998,44.456494140624955],[-68.18725585937497,44.33247070312501]]],[[[-122.394140625,47.39526367187503],[-122.50991210937497,47.358007812500006],[-122.486474609375,47.48876953125],[-122.394140625,47.39526367187503]]],[[[-122.57275390624999,48.15664062499999],[-122.38315429687499,47.923193359375034],[-122.74150390624999,48.22529296875004],[-122.62861328125,48.38422851562498],[-122.54243164062503,48.29399414062499],[-122.69702148437499,48.228662109374994],[-122.57275390624999,48.15664062499999]]],[[[-94.80346679687497,49.0029296875],[-94.71279296874997,48.863427734374994],[-94.62089843749999,48.74262695312501],[-93.85161132812496,48.607275390625034],[-93.70771484374995,48.52543945312499],[-93.37788085937498,48.61655273437498],[-93.25795898437497,48.62885742187501],[-92.83671875,48.567773437499994],[-92.50058593749995,48.43535156250002],[-92.41459960937493,48.276611328125],[-92.3484375,48.276611328125],[-92.00517578125002,48.301855468750006],[-91.38720703124997,48.05854492187498],[-91.04345703125003,48.19370117187498],[-90.84033203125003,48.20053710937506],[-90.79731445312495,48.13105468750001],[-89.4556640625,47.996240234374994],[-88.37817382812497,48.30307617187498],[-87.74389648437497,48.06054687500003],[-87.20800781249997,47.848486328125006],[-86.67216796874996,47.636425781249955],[-85.65224609375,47.21997070312503],[-85.07006835937497,46.97993164062498],[-84.87597656249994,46.89990234375003],[-84.66577148437503,46.54326171875002],[-84.44047851562496,46.49814453125006],[-84.12319335937497,46.50292968749997],[-83.97778320312503,46.08491210937498],[-83.61596679687503,46.116845703124994],[-83.46948242187503,45.99467773437499],[-83.59267578125,45.81713867187506],[-82.91933593749994,45.51796875000002],[-82.55107421874996,45.34736328125001],[-82.48505859374993,45.08374023437503],[-82.137841796875,43.570898437500034],[-82.19038085937495,43.47407226562501],[-82.54531249999997,42.62470703124998],[-83.10952148437497,42.25068359375001],[-83.141943359375,41.97587890624996],[-82.69003906249995,41.675195312499994],[-82.43906249999998,41.67485351562502],[-81.97416992187496,41.88872070312499],[-81.50732421874997,42.10346679687504],[-81.02822265624997,42.247167968750006],[-80.24755859375,42.36601562499996],[-79.17373046875,42.74853515625],[-78.91508789062496,42.90913085937504],[-78.98076171874993,42.98061523437502],[-79.02617187499996,43.01733398437506],[-79.066064453125,43.10610351562502],[-79.171875,43.466552734375],[-79.00249023437502,43.52714843749999],[-78.845556640625,43.58334960937498],[-78.72041015625001,43.62495117187501],[-78.45825195312497,43.63149414062502],[-77.596533203125,43.62861328124998],[-76.819970703125,43.62880859375002],[-76.18579101562503,44.24223632812502],[-75.81933593749997,44.468017578125],[-75.40126953124997,44.77226562499999],[-74.99614257812496,44.970117187499966],[-74.76245117187494,44.99907226562502],[-74.663232421875,45.00390625000003],[-71.51752929687495,45.00756835937497],[-71.327294921875,45.29008789062496],[-70.86503906249999,45.27070312500001],[-70.296240234375,45.90610351562506],[-70.00771484375002,46.70893554687501],[-69.24287109374998,47.46298828124998],[-69.0501953125,47.426611328125034],[-68.93720703124998,47.21123046875002],[-68.23549804687502,47.34594726562503],[-67.806787109375,47.08281249999999],[-67.80224609374994,45.7275390625],[-67.43266601562496,45.603125],[-67.366943359375,45.17377929687498],[-67.12485351562498,45.16943359375],[-66.98701171874995,44.82768554687502],[-67.191259765625,44.67558593750002],[-67.83906249999998,44.576269531250034],[-68.056640625,44.38432617187502],[-68.15205078124998,44.50200195312499],[-68.45058593749997,44.50761718749999],[-68.53251953124996,44.25864257812498],[-68.81191406249994,44.33935546875],[-68.76269531249994,44.57075195312498],[-69.22607421875003,43.98647460937505],[-69.52075195312503,43.89736328125002],[-69.55668945312496,43.982763671875006],[-69.62392578125,43.88061523437497],[-69.65288085937493,43.99389648437506],[-69.808349609375,43.772314453125034],[-69.965234375,43.855078125],[-70.17880859374998,43.76635742187506],[-70.73310546875001,43.07001953125004],[-70.82905273437493,42.82534179687502],[-70.61293945312497,42.623242187499955],[-71.04619140624993,42.331103515625045],[-70.73828125,42.228857421875006],[-70.42666015625002,41.75727539062501],[-70.00141601562498,41.82617187500003],[-70.24106445312495,42.09121093750002],[-70.10893554687496,42.07832031249998],[-69.97788085937498,41.961279296875006],[-69.94863281249997,41.67714843750005],[-70.65712890625,41.53422851562496],[-70.70112304687498,41.71484375],[-71.1685546875,41.489404296874994],[-71.14873046874996,41.74570312499998],[-71.27109375,41.68125],[-71.39013671875003,41.79531250000005],[-71.52285156249997,41.378955078125045],[-72.92470703125002,41.28515625000003],[-73.98710937499999,40.751367187499994],[-73.87197265625,41.05517578124997],[-73.96992187499995,41.24970703125001],[-73.92719726562495,40.914257812499955],[-74.26420898437496,40.52861328124999],[-73.972265625,40.40034179687498],[-74.079931640625,39.78813476562496],[-74.06459960937497,39.99311523437498],[-74.79448242187499,39.00190429687501],[-74.95429687499995,38.949951171875],[-74.89702148437502,39.14545898437504],[-75.52421874999999,39.49018554687501],[-75.421875,39.78969726562502],[-75.07416992187495,39.98349609375006],[-75.40063476562503,39.83159179687502],[-75.58759765625001,39.64077148437505],[-75.3921875,39.09277343750006],[-75.08867187499999,38.777539062499955],[-75.18710937499995,38.59111328124999],[-75.03876953124993,38.426367187500006],[-75.934375,37.15190429687496],[-75.97504882812498,37.3984375],[-75.65927734374995,37.953955078125034],[-75.850830078125,37.971582031249994],[-75.85869140624999,38.36206054687503],[-76.05122070312495,38.27954101562503],[-76.2646484375,38.436425781249994],[-76.26416015625,38.599951171875006],[-76.016943359375,38.62509765624998],[-76.21298828124998,38.75830078125003],[-76.34116210937498,38.70966796874998],[-76.16816406249998,38.85273437499998],[-76.32958984375,38.95278320312505],[-76.13520507812493,39.082128906250006],[-76.23569335937498,39.19160156250001],[-76.153125,39.315039062500034],[-75.87597656249997,39.3759765625],[-76.003125,39.41083984375001],[-75.87294921874997,39.510888671874966],[-75.95893554687498,39.58505859374998],[-76.2763671875,39.32275390625],[-76.330810546875,39.40390625],[-76.42089843749997,39.225],[-76.57041015624995,39.26933593749996],[-76.42758789062498,39.12602539062499],[-76.55854492187493,39.065234375000045],[-76.39409179687502,38.368994140625034],[-76.67734374999998,38.611962890624966],[-76.66855468749998,38.5375],[-76.34116210937498,38.08701171875006],[-76.86811523437495,38.39028320312502],[-76.88974609375,38.292089843750006],[-77.00117187499995,38.44526367187504],[-77.23251953125,38.40771484375003],[-77.03037109374995,38.88925781249998],[-77.26040039062502,38.6],[-77.27324218749996,38.35175781249998],[-77.04677734375002,38.356689453125],[-76.26425781250003,37.89355468749997],[-76.34414062499997,37.675683593749994],[-76.49248046874999,37.682226562500006],[-77.11108398437497,38.165673828124994],[-76.54946289062494,37.66914062500001],[-76.30556640625,37.57148437500001],[-76.26347656249996,37.35703125],[-76.40097656249998,37.386132812499994],[-76.45390624999993,37.27353515625006],[-76.75771484375002,37.50541992187496],[-76.28330078125,37.05268554687501],[-76.40087890624997,36.991308593750034],[-76.63090820312493,37.22172851562499],[-77.25087890624994,37.329199218750034],[-76.671875,37.172949218750006],[-76.48784179687502,36.89702148437499],[-75.99941406249997,36.91264648437499],[-75.53417968749997,35.81909179687506],[-75.94648437499995,36.65908203125002],[-75.99277343749995,36.47377929687502],[-75.82006835937494,36.11284179687502],[-76.14785156250002,36.279296875],[-76.15,36.14575195312497],[-76.27060546874998,36.18989257812501],[-76.22739257812498,36.11601562499996],[-76.559375,36.015332031249955],[-76.733642578125,36.229150390624994],[-76.726220703125,35.957617187500034],[-76.06977539062501,35.970312500000034],[-76.08359374999998,35.69052734375006],[-75.85390625,35.96015625000001],[-75.75883789062499,35.84326171875],[-75.77392578124997,35.64697265624997],[-76.17382812499997,35.354150390624994],[-76.489501953125,35.397021484375045],[-76.57719726562502,35.53232421874998],[-76.74140624999998,35.431494140625034],[-77.03999023437495,35.527392578125045],[-76.51293945312497,35.270410156249994],[-76.77915039062503,34.990332031250034],[-77.07026367187501,35.154638671875034],[-76.97495117187503,35.025195312500045],[-76.74497070312498,34.94096679687502],[-76.45673828124998,34.989355468750034],[-76.36220703125,34.9365234375],[-76.43979492187498,34.84291992187502],[-77.29624023437503,34.602929687499994],[-77.41225585937497,34.730810546875034],[-77.37978515625,34.526611328125],[-77.750732421875,34.28496093749996],[-77.92783203125,33.93974609374999],[-77.95327148437494,34.16899414062496],[-78.01333007812502,33.91181640624998],[-78.40585937499995,33.91757812499998],[-78.84145507812497,33.72407226562501],[-79.19379882812498,33.24414062500003],[-79.22646484375,33.40488281249998],[-79.27602539062497,33.135400390624966],[-79.80498046874999,32.78740234374996],[-79.93310546874997,32.81005859375006],[-79.94072265625002,32.667138671874966],[-80.36284179687496,32.500732421875],[-80.6341796875,32.51171875000003],[-80.474267578125,32.42275390625002],[-80.579345703125,32.28730468750004],[-80.80253906249999,32.44804687500002],[-80.69423828124997,32.21572265625002],[-81.11328124999997,31.87861328125001],[-81.06611328124995,31.787988281250023],[-81.259375,31.538916015624977],[-81.17543945312494,31.531298828125017],[-81.38095703124998,31.353271484375],[-81.28847656249997,31.263916015625],[-81.441748046875,31.19970703124997],[-81.5162109375,30.801806640625017],[-81.24951171875003,29.793798828125006],[-80.52412109374995,28.48608398437503],[-80.5849609375,28.271582031250034],[-80.456884765625,27.90068359374996],[-80.61000976562494,28.177587890624977],[-80.60693359375003,28.522900390624983],[-80.693505859375,28.34497070312497],[-80.68847656250003,28.578515625000023],[-80.83818359374999,28.757666015625034],[-80.74863281250003,28.381005859375023],[-80.050048828125,26.807714843750063],[-80.1263671875,25.83349609375],[-80.48466796874999,25.229833984375034],[-81.11049804687494,25.138037109374977],[-81.13603515624999,25.309667968750034],[-80.94042968750003,25.264208984375017],[-81.11333007812499,25.367236328125045],[-81.36494140625001,25.83105468750003],[-81.715478515625,25.98315429687503],[-81.95893554687495,26.489941406249983],[-81.82866210937496,26.68706054687499],[-82.03959960937496,26.552050781250017],[-82.01328125,26.96157226562505],[-82.24287109374998,26.848876953125],[-82.44135742187501,27.059667968750034],[-82.71459960937497,27.499609375000063],[-82.40576171874994,27.862890624999977],[-82.67519531249994,27.963769531250023],[-82.61098632812502,27.77724609375005],[-82.74287109374995,27.709375],[-82.84350585937494,27.845996093750017],[-82.65146484375,28.8875],[-83.69438476562502,29.92597656250001],[-84.04423828124996,30.10380859374999],[-84.30966796874995,30.064746093750045],[-84.38281250000003,29.90737304687505],[-85.31894531249995,29.680224609375045],[-85.413818359375,29.76757812499997],[-85.413818359375,29.842480468749955],[-85.31489257812493,29.758105468750017],[-85.35361328125,29.875732421875],[-85.67578125,30.121923828125063],[-85.60351562500003,30.286767578124966],[-85.75581054687495,30.1669921875],[-86.454443359375,30.39912109375004],[-86.12382812499999,30.40581054687499],[-86.25737304687502,30.493017578124977],[-87.201171875,30.339257812499994],[-86.98579101562498,30.43085937500001],[-86.99755859375,30.5703125],[-87.17060546874998,30.538769531249983],[-87.28105468750002,30.339257812499994],[-87.47578124999998,30.294287109375006],[-87.44829101562499,30.394140625],[-87.62226562499998,30.264746093750006],[-88.00595703124998,30.230908203124955],[-87.79028320312503,30.291796875000017],[-88.011328125,30.694189453125006],[-88.13544921874998,30.366601562499994],[-88.90522460937495,30.415136718750006],[-89.32055664062503,30.3453125],[-89.58847656249998,30.165966796874955],[-90.12597656249997,30.369091796874955],[-90.33198242187493,30.277587890625057],[-90.41303710937501,30.140332031249983],[-90.17534179687499,30.02910156249996],[-89.73745117187497,30.171972656250034],[-89.66503906249994,30.117041015625034],[-89.81518554687497,30.007275390624955],[-89.631689453125,29.90380859375003],[-89.400732421875,30.04604492187505],[-89.35444335937501,29.82021484375005],[-89.72089843749995,29.619287109374966],[-89.01572265625,29.202880859375057],[-89.15551757812497,29.01660156250003],[-89.23608398437494,29.081103515625017],[-89.37612304687497,28.981347656250023],[-89.44316406249996,29.194140625000045],[-90.15908203124997,29.537158203125017],[-90.05278320312499,29.336816406249966],[-90.21279296875,29.104931640624983],[-90.37919921874996,29.29511718750001],[-90.75102539062496,29.13085937500003],[-91.29013671875,29.288964843749994],[-91.15078124999994,29.317919921875045],[-91.24882812499993,29.56420898437503],[-91.51420898437499,29.55537109375001],[-91.8931640625,29.836035156249977],[-92.135498046875,29.699462890625057],[-92.08403320312499,29.59282226562499],[-92.26083984374995,29.55683593750004],[-93.17568359375,29.778955078124994],[-93.82646484374999,29.725146484375045],[-93.84145507812502,29.97973632812503],[-93.89047851562495,29.689355468750023],[-94.759619140625,29.384277343750057],[-94.52626953125,29.547949218750006],[-94.77827148437498,29.54785156249997],[-94.74194335937497,29.75],[-95.0228515625,29.70234375000001],[-94.88828125000003,29.37055664062501],[-95.27348632812499,28.96386718750003],[-96.23452148437502,28.488964843749983],[-96.01103515624996,28.631933593749977],[-96.44873046874997,28.594482421875],[-96.64003906249994,28.708789062500017],[-96.42109374999993,28.457324218750045],[-96.67636718749998,28.34130859375003],[-96.77353515624998,28.421630859375057],[-96.839501953125,28.194384765625017],[-97.156494140625,28.144335937500045],[-97.141259765625,28.060742187499983],[-97.034326171875,28.093847656250063],[-97.07309570312498,27.98608398437503],[-97.43149414062498,27.83720703124999],[-97.28872070312494,27.670605468749983],[-97.43911132812502,27.328271484374966],[-97.76845703124997,27.45751953125],[-97.69238281250003,27.287158203125017],[-97.48510742187497,27.237402343750006],[-97.55468749999994,26.96733398437496],[-97.43505859375,26.48583984375003],[-97.14624023437494,25.961474609375045],[-97.37563476562497,25.871826171875],[-99.10776367187498,26.446923828124994],[-99.45654296874999,27.05668945312496],[-99.50532226562497,27.54833984375003],[-100.29604492187495,28.32768554687499],[-100.75458984375001,29.182519531249994],[-101.44038085937503,29.77685546875],[-102.26894531249998,29.871191406250034],[-102.61494140624994,29.75234375],[-102.8919921875,29.216406250000034],[-103.16831054687498,28.998193359374994],[-104.110595703125,29.386132812499994],[-104.50400390624995,29.677685546874955],[-104.97880859374996,30.645947265624955],[-106.14804687499995,31.450927734375],[-106.44541015624996,31.768408203125006],[-108.21181640625002,31.779345703125017],[-108.21445312499993,31.329443359375034],[-111.0419921875,31.32421875000003],[-114.83593749999994,32.50830078125003],[-114.72475585937495,32.71533203125003],[-117.12827148437495,32.533349609374994],[-117.46743164062495,33.295507812500006],[-118.08051757812497,33.72216796874997],[-118.41044921874996,33.74394531249996],[-118.506201171875,34.01738281249999],[-119.14375,34.11201171874998],[-119.60605468749999,34.41801757812499],[-120.48120117187503,34.47163085937498],[-120.64467773437502,34.57998046875002],[-120.65908203124994,35.122412109375034],[-120.85737304687501,35.209667968749955],[-120.899609375,35.42509765624999],[-121.28383789062494,35.67631835937499],[-121.87739257812498,36.33105468749997],[-121.80742187499995,36.851220703124994],[-122.394921875,37.20751953125003],[-122.49921875000001,37.542626953124994],[-122.44560546875002,37.797998046874966],[-122.07050781249998,37.47827148437503],[-122.38544921875001,37.960595703124966],[-122.31425781249999,38.00732421874997],[-121.52534179687503,38.05590820312503],[-122.39335937499995,38.14482421875002],[-122.52133789062499,37.82641601562497],[-122.93198242187498,38.05546875000002],[-122.998779296875,37.98862304687498],[-122.90815429687501,38.19658203124999],[-123.701123046875,38.90727539062502],[-123.83291015624994,39.775488281250034],[-124.35654296875003,40.37109374999997],[-124.07192382812497,41.45952148437502],[-124.53964843750003,42.812890624999966],[-124.14873046874997,43.691748046875034],[-123.92934570312495,45.57695312499996],[-123.989306640625,46.21938476562502],[-123.22060546874998,46.153613281250045],[-123.46484375,46.27109374999998],[-124.07275390624996,46.279443359374994],[-124.04433593750002,46.605078125],[-123.946142578125,46.43256835937501],[-123.88916015625003,46.660009765625006],[-124.11254882812497,46.862695312499994],[-123.84287109375002,46.963183593750045],[-124.11171875,47.03520507812496],[-124.1392578125,46.95468749999998],[-124.376025390625,47.658642578124955],[-124.66308593749996,47.97412109375003],[-124.7099609375,48.38037109375],[-123.97578125,48.16845703125],[-122.97387695312499,48.07329101562496],[-122.77861328125,48.13759765625002],[-122.65664062500002,47.88115234374999],[-122.77841796874996,47.738427734374966],[-122.82138671875,47.79316406250001],[-123.1390625,47.386083984375034],[-122.92216796874993,47.40766601562498],[-123.066796875,47.39965820312506],[-123.04863281249995,47.479345703125034],[-122.53281250000002,47.919726562500045],[-122.67548828124995,47.612353515625045],[-122.57788085937496,47.29316406250001],[-122.76777343750001,47.21835937500006],[-122.82846679687503,47.336572265624994],[-123.02758789062501,47.13891601562503],[-122.70195312500002,47.11088867187502],[-122.35380859374996,47.37158203125],[-122.40180664062497,47.78427734374998],[-122.24199218750002,48.01074218750003],[-122.5169921875,48.15966796874997],[-122.40854492187502,48.29389648437498],[-122.66899414062496,48.465234374999966],[-122.49677734374995,48.50556640625001],[-122.51274414062502,48.66943359375],[-122.56201171875001,48.777978515624994],[-122.68593749999995,48.794287109375034],[-122.72246093750002,48.85302734375003],[-122.78876953125003,48.993017578125034],[-121.40722656249994,48.993017578125034],[-119.70170898437495,48.993017578125034],[-119.27534179687494,48.99306640625005],[-118.84892578124993,48.99306640625005],[-117.99619140625002,48.99306640625005],[-116.71704101562501,48.99306640625005],[-110.74765625,48.99306640625005],[-104.77832031249997,48.993115234374955],[-98.80898437499995,48.99316406249997],[-97.52983398437493,48.99316406249997],[-96.67705078124993,48.99316406249997],[-96.25068359374993,48.99316406249997],[-95.39790039062493,48.99316406249997],[-95.16206054687493,48.991748046875045],[-95.15527343749997,49.36967773437502],[-94.85434570312495,49.304589843749994],[-94.86040039062493,49.258593750000045],[-94.80346679687497,49.0029296875]]],[[[-176.28671874999998,51.79199218750006],[-176.34965820312502,51.733300781249994],[-176.41372070312502,51.840576171875],[-176.28671874999998,51.79199218750006]]],[[[-177.87905273437502,51.64970703125002],[-178.05888671875,51.67260742187497],[-177.98637695312493,51.76425781249998],[-178.16826171874996,51.90302734375001],[-177.644482421875,51.826269531250006],[-177.87905273437502,51.64970703125002]]],[[[-177.14819335937497,51.71674804687498],[-177.67021484375002,51.701074218749994],[-177.11005859375,51.92875976562502],[-177.14819335937497,51.71674804687498]]],[[[-176.593310546875,51.86669921875],[-176.45234374999995,51.735693359375034],[-176.96162109374998,51.60366210937505],[-176.69833984374998,51.986035156249955],[-176.593310546875,51.86669921875]]],[[[179.72773437500015,51.905419921874966],[179.50390625000003,51.97958984374998],[179.6271484375001,52.03041992187502],[179.72773437500015,51.905419921874966]]],[[[177.4154296875,51.88281249999997],[177.25029296875013,51.902929687500006],[177.6696289062501,52.10302734375],[177.4154296875,51.88281249999997]]],[[[-173.5533203125,52.13627929687502],[-173.02290039062504,52.07915039062502],[-173.83579101562498,52.048193359375006],[-173.99248046874993,52.12333984374996],[-173.5533203125,52.13627929687502]]],[[[-172.464794921875,52.27226562500002],[-172.61982421874998,52.27285156250005],[-172.47041015625,52.38803710937506],[-172.31362304687497,52.32958984375006],[-172.464794921875,52.27226562500002]]],[[[-174.67739257812502,52.035009765625006],[-175.29555664062502,52.022167968749955],[-174.30615234375,52.216162109375034],[-174.43554687499997,52.317236328125034],[-174.168896484375,52.42016601562503],[-174.04560546875,52.36723632812499],[-174.12065429687493,52.13520507812498],[-174.67739257812502,52.035009765625006]]],[[[173.72275390625018,52.35957031250004],[173.40234375000009,52.40478515625],[173.77607421875004,52.49511718750003],[173.72275390625018,52.35957031250004]]],[[[172.81181640625002,53.01298828125002],[173.43603515625003,52.85205078125],[172.93515625000012,52.752099609374966],[172.49482421875004,52.93789062499999],[172.81181640625002,53.01298828125002]]],[[[-167.96435546875003,53.345117187499994],[-169.088916015625,52.83203125],[-168.68984375000002,53.227246093749955],[-168.38041992187496,53.28344726562506],[-168.28769531249998,53.500146484374966],[-167.82807617187495,53.50795898437505],[-167.96435546875003,53.345117187499994]]],[[[-166.61533203124998,53.90092773437499],[-166.37231445312494,53.99897460937498],[-166.230859375,53.93261718750006],[-166.54560546875,53.726464843749966],[-166.354541015625,53.67353515625004],[-166.85097656249997,53.45288085937503],[-167.78085937500003,53.30024414062501],[-167.13608398437503,53.526464843750006],[-167.01572265625003,53.69838867187502],[-166.80898437500002,53.64614257812505],[-166.741259765625,53.71293945312496],[-167.10561523437497,53.813378906249994],[-167.03808593749997,53.9421875],[-166.67329101562498,54.00595703124998],[-166.61533203124998,53.90092773437499]]],[[[-165.841552734375,54.070654296875006],[-166.05664062500003,54.054345703124994],[-166.08774414062498,54.16914062500001],[-165.89287109375,54.20698242187498],[-165.69287109375,54.09990234375002],[-165.841552734375,54.070654296875006]]],[[[-165.56113281249998,54.13671874999997],[-165.55063476562498,54.28452148437498],[-165.40786132812502,54.19682617187496],[-165.56113281249998,54.13671874999997]]],[[[-162.29814453124993,54.847021484375006],[-162.43388671875,54.931542968749994],[-162.26459960937504,54.983496093750006],[-162.29814453124993,54.847021484375006]]],[[[-163.476025390625,54.98071289062497],[-163.37895507812496,54.81552734374998],[-163.083251953125,54.66899414062496],[-163.35810546874995,54.73569335937506],[-164.82343749999998,54.41909179687505],[-164.887646484375,54.60781250000002],[-164.47861328124998,54.906835937500006],[-163.80712890624997,55.04907226562503],[-163.476025390625,54.98071289062497]]],[[[-159.51513671875,55.15185546875003],[-159.617724609375,55.05732421875004],[-159.54506835937497,55.22597656250002],[-159.51513671875,55.15185546875003]]],[[[-131.33974609375002,55.079833984375],[-131.32954101562498,54.887744140625045],[-131.592236328125,55.02568359374999],[-131.5654296875,55.26411132812498],[-131.33974609375002,55.079833984375]]],[[[-159.87299804687495,55.128759765625034],[-160.22705078124997,54.92270507812506],[-160.17207031249995,55.123046875],[-159.88735351562497,55.27299804687502],[-159.87299804687495,55.128759765625034]]],[[[-132.86225585937504,54.894433593749966],[-132.61723632812493,54.892431640625006],[-132.70581054687497,54.684179687500034],[-133.42905273437498,55.30380859374998],[-133.097412109375,55.213720703125006],[-132.86225585937504,54.894433593749966]]],[[[-160.329296875,55.337695312500045],[-160.34331054687493,55.25878906250006],[-160.51748046875,55.33383789062506],[-160.329296875,55.337695312500045]]],[[[-160.68491210937498,55.314794921875006],[-160.552783203125,55.38076171875002],[-160.48754882812503,55.18486328124999],[-160.79506835937497,55.14521484375001],[-160.72392578124993,55.404638671875006],[-160.68491210937498,55.314794921875006]]],[[[-133.30507812500002,55.54375],[-133.6501953125,55.26928710937506],[-133.73710937500002,55.49692382812498],[-133.30507812500002,55.54375]]],[[[-155.56601562500003,55.82119140625005],[-155.73735351562493,55.82978515625001],[-155.59394531250004,55.92431640625],[-155.56601562500003,55.82119140625005]]],[[[-130.97915039062502,55.489160156249994],[-131.187890625,55.206298828125],[-131.44755859374996,55.40878906250006],[-131.7625,55.16582031250002],[-131.84609374999997,55.41625976562497],[-131.62495117187504,55.831689453124966],[-131.26923828125004,55.95537109375002],[-130.997802734375,55.727636718750006],[-130.97915039062502,55.489160156249994]]],[[[-133.56611328125,56.33920898437498],[-133.202978515625,56.31982421875003],[-133.096630859375,56.09003906250001],[-132.59760742187504,55.89501953125],[-132.17270507812498,55.48061523437502],[-132.51127929687493,55.59394531250001],[-132.63129882812495,55.47319335937502],[-132.41787109375002,55.48291015625006],[-132.20668945312497,55.22441406249996],[-131.97641601562498,55.208593750000034],[-132.06474609375002,54.713134765625],[-133.11855468750002,55.32763671875003],[-132.95888671875002,55.39555664062502],[-133.0333984375,55.589697265625034],[-133.68017578124994,55.78515625],[-133.24150390624993,55.920800781249994],[-133.371240234375,56.035888671875],[-133.74252929687498,55.96484375],[-133.530859375,56.145654296874966],[-133.56611328125,56.33920898437498]]],[[[-132.77988281249998,56.24726562499998],[-133.03500976562498,56.34091796875006],[-132.90205078124998,56.45375976562505],[-132.62910156249995,56.411914062500045],[-132.77988281249998,56.24726562499998]]],[[[-132.11235351562493,56.109375],[-132.13295898437497,55.94326171875005],[-132.28730468749995,55.92939453124998],[-132.65991210937503,56.07817382812499],[-132.379833984375,56.49877929687497],[-132.06689453125,56.24423828124998],[-132.11235351562493,56.109375]]],[[[-154.208642578125,56.51489257812497],[-154.32221679687504,56.570605468750045],[-154.11040039062496,56.602929687499966],[-154.208642578125,56.51489257812497]]],[[[-169.755224609375,56.63505859375002],[-169.47431640624998,56.59404296875002],[-169.6326171875,56.545703125000045],[-169.755224609375,56.63505859375002]]],[[[-132.746875,56.525683593750045],[-132.94804687500002,56.56723632812498],[-132.842529296875,56.79477539062506],[-132.56796875000003,56.57583007812505],[-132.746875,56.525683593750045]]],[[[-133.98959960937503,56.84497070312497],[-133.73837890625,56.65043945312496],[-133.94970703125,56.12773437499996],[-134.18959960937502,56.07695312500002],[-134.084375,56.456347656250045],[-134.37368164062502,56.838671875000045],[-134.14326171874998,56.93232421875001],[-133.98959960937503,56.84497070312497]]],[[[-133.36621093750006,57.003515625000034],[-132.99624023437497,56.93041992187497],[-132.95917968749998,56.67705078124996],[-133.03491210937494,56.62075195312505],[-133.32895507812498,56.83007812499997],[-133.158154296875,56.495166015625045],[-133.4841796875,56.45175781249998],[-133.979443359375,57.009570312500045],[-133.36621093750006,57.003515625000034]]],[[[-153.007080078125,57.12485351562498],[-153.37460937499998,57.05190429687505],[-153.285205078125,57.18505859375],[-152.90839843750004,57.152441406250006],[-153.007080078125,57.12485351562498]]],[[[-134.96977539062496,57.351416015625034],[-134.62070312499998,56.71831054687502],[-134.68188476562503,56.216162109375034],[-134.98056640625003,56.518945312499994],[-134.88344726562497,56.679052734375034],[-135.33061523437505,56.821875],[-135.19960937499997,57.02734375],[-135.45493164062503,57.24941406250005],[-135.81230468750002,57.00952148437503],[-135.82275390625,57.280419921874966],[-135.448681640625,57.534375],[-134.96977539062496,57.351416015625034]]],[[[-152.89804687499998,57.82392578125004],[-152.42875976562493,57.82568359375003],[-152.48261718749998,57.70332031249998],[-152.21621093749997,57.577001953125006],[-152.41220703125003,57.454785156249955],[-152.94077148437498,57.49809570312499],[-152.67905273437503,57.345117187499994],[-153.274365234375,57.22636718749996],[-153.732568359375,57.052343750000034],[-153.643310546875,56.960742187500045],[-154.02734375,56.77797851562502],[-153.793212890625,56.98950195312503],[-154.24375,57.143017578124955],[-154.33896484374998,56.9208984375],[-154.67319335937498,57.44609375],[-154.11616210937498,57.651220703125006],[-153.6876953125,57.30512695312504],[-153.841552734375,57.86284179687496],[-153.48793945312497,57.73095703125],[-153.21748046875004,57.79575195312506],[-153.16044921875,57.97197265624999],[-152.85039062499993,57.896777343750045],[-152.89804687499998,57.82392578125004]]],[[[-135.73037109375002,58.244238281250034],[-135.61323242187507,57.99184570312505],[-135.346630859375,58.12412109374998],[-134.9546875,58.01533203125004],[-134.97065429687495,57.817236328125006],[-135.33847656250003,57.768652343750034],[-134.97885742187503,57.724365234375],[-134.93149414062498,57.48115234375001],[-135.564208984375,57.66640625],[-135.691943359375,57.41992187500006],[-135.91079101562502,57.44658203124999],[-136.568603515625,57.97216796875003],[-136.32197265625,58.21889648437502],[-136.14375,58.098486328125006],[-136.09438476562502,58.198144531249966],[-135.73037109375002,58.244238281250034]]],[[[-134.68027343749998,58.16166992187499],[-134.24008789062498,58.143994140624955],[-133.82275390624997,57.62866210937503],[-134.29233398437498,58.044726562500074],[-133.91113281250003,57.3525390625],[-134.51601562499997,57.042578125],[-134.48676757812495,57.48203125],[-134.92348632812497,58.354638671874966],[-134.68027343749998,58.16166992187499]]],[[[-152.416943359375,58.360205078125034],[-151.974365234375,58.30986328124999],[-152.068896484375,58.17792968750001],[-152.26835937499993,58.25170898437506],[-152.30922851562502,58.133886718750034],[-152.5982421875,58.16259765625],[-152.92841796875004,57.99370117187499],[-153.38134765625003,58.08720703125002],[-152.976123046875,58.29702148437505],[-152.771875,58.278564453125],[-152.84111328125002,58.41640625000002],[-152.416943359375,58.360205078125034]]],[[[-152.486083984375,58.485009765624966],[-152.63662109375002,58.54169921874998],[-152.3955078125,58.619384765625],[-152.486083984375,58.485009765624966]]],[[[-160.918994140625,58.57709960937498],[-161.13149414062502,58.668212890625],[-160.71513671875005,58.79521484375002],[-160.918994140625,58.57709960937498]]],[[[-148.02177734375,60.06533203125005],[-148.271875,60.05327148437499],[-148.07958984375003,60.151660156250045],[-148.02177734375,60.06533203125005]]],[[[-147.735888671875,59.81323242187503],[-147.76806640625,59.94375],[-147.180859375,60.358251953125034],[-147.01987304687498,60.33222656249998],[-147.735888671875,59.81323242187503]]],[[[-166.13544921875,60.38354492187503],[-165.72968750000004,60.31420898437503],[-165.591796875,59.913134765625045],[-166.14873046874996,59.764111328124955],[-167.13886718749998,60.00854492187503],[-167.43642578125002,60.20664062500006],[-166.836328125,60.21699218750004],[-166.47568359374998,60.382763671874955],[-166.13544921875,60.38354492187503]]],[[[-146.3939453125,60.44965820312501],[-146.10224609374998,60.41118164062499],[-146.61831054687497,60.27368164062503],[-146.70253906249997,60.40854492187498],[-146.3939453125,60.44965820312501]]],[[[-147.658251953125,60.45048828124999],[-147.787841796875,60.17792968749998],[-147.89145507812498,60.299414062500034],[-147.658251953125,60.45048828124999]]],[[[-172.74223632812496,60.45737304687498],[-172.23208007812494,60.299121093750074],[-172.63574218750003,60.328857421875],[-173.04765625000002,60.56831054687501],[-172.74223632812496,60.45737304687498]]],[[[-171.46303710937494,63.640039062499994],[-171.03486328125,63.58549804687499],[-170.29936523437502,63.68061523437501],[-169.55454101562498,63.373486328124955],[-168.71601562500004,63.310595703125045],[-168.76132812500003,63.21376953125002],[-169.364697265625,63.17114257812506],[-169.67636718750003,62.95610351562502],[-169.81860351562494,63.122363281250045],[-170.84838867187494,63.44438476562502],[-171.63183593749997,63.351220703124966],[-171.74638671874993,63.703076171874955],[-171.46303710937494,63.640039062499994]]],[[[-141.00214843750004,68.77416992187506],[-141.00214843750004,67.89755859374998],[-141.00214843750004,66.43652343750006],[-141.00214843750004,65.55991210937498],[-141.00214843750004,64.09887695312506],[-141.00214843750004,63.22226562499998],[-141.00214843750004,61.761279296875045],[-141.00214843750004,60.884667968749994],[-141.00214843750004,60.30024414062504],[-140.76274414062505,60.259130859375006],[-140.525439453125,60.218359375000034],[-140.45283203125004,60.29970703125002],[-139.97329101562497,60.183154296875074],[-139.67631835937505,60.32832031249998],[-139.23476562499997,60.339746093749994],[-139.07924804687497,60.34370117187501],[-139.07924804687497,60.279443359374966],[-139.136962890625,60.17270507812498],[-139.18515624999998,60.083593750000034],[-138.86875,59.94575195312501],[-138.317626953125,59.611132812500074],[-137.59331054687493,59.22626953124998],[-137.52089843750002,58.91538085937498],[-137.43857421875003,58.903125],[-137.2775390625,58.988183593749994],[-137.126220703125,59.04096679687498],[-136.81328125000002,59.150048828124994],[-136.57875976562502,59.15224609375002],[-136.46635742187493,59.459082031250006],[-136.27797851562502,59.48032226562506],[-136.321826171875,59.604833984375034],[-135.70258789062504,59.72875976562506],[-135.36787109374998,59.743310546874994],[-135.051025390625,59.57866210937502],[-134.94375,59.28828125000001],[-134.67724609374997,59.19926757812499],[-134.39306640625,59.009179687499994],[-134.32963867187505,58.93969726562506],[-134.21850585937503,58.849902343750045],[-133.54638671874997,58.50346679687499],[-133.27529296875,58.22285156250004],[-133.00141601562495,57.948974609375],[-132.55048828125,57.499902343749994],[-132.44248046874998,57.40673828125003],[-132.30166015624997,57.27631835937501],[-132.232177734375,57.19853515624999],[-132.27939453124998,57.14536132812498],[-132.33798828124998,57.07944335937506],[-132.15703125,57.048193359375006],[-132.03154296875,57.02656250000004],[-132.062890625,56.95336914062503],[-132.104296875,56.856787109375006],[-131.86616210937495,56.792822265625006],[-131.82426757812496,56.589990234374994],[-131.471875,56.55673828125006],[-130.649072265625,56.26367187500003],[-130.47709960937496,56.230566406250034],[-130.413134765625,56.12250976562498],[-130.09785156249995,56.10927734375002],[-130.01406249999997,55.950537109375006],[-130.2140625,55.02587890625003],[-130.57534179687497,54.769677734374966],[-130.849609375,54.80761718750006],[-131.04785156249997,55.157666015624955],[-130.74819335937502,55.31801757812502],[-131.127685546875,55.96015625000001],[-131.032763671875,56.08808593749998],[-131.78417968749997,55.876562500000034],[-131.98339843749994,55.535009765625006],[-132.15541992187502,55.59956054687501],[-132.20751953124997,55.75341796875],[-131.84384765625003,56.16010742187498],[-131.55136718749998,56.206787109375],[-131.88789062500004,56.24165039062498],[-132.18203125000002,56.42065429687506],[-132.82460937500002,57.05581054687505],[-133.465869140625,57.17216796875002],[-133.64873046874993,57.64228515624998],[-133.11704101562498,57.56621093750002],[-133.535205078125,57.83295898437501],[-133.1943359375,57.87768554687506],[-133.559375,57.924462890624994],[-133.72231445312502,57.84423828125],[-134.03110351562498,58.072167968749966],[-133.87675781249996,58.51816406249998],[-134.20883789062503,58.232958984375045],[-134.77612304687506,58.45385742187503],[-135.36367187500002,59.41943359375],[-135.50234375000002,59.202294921874994],[-135.090234375,58.245849609375],[-135.57177734374994,58.41206054687504],[-135.89755859374998,58.40019531250002],[-136.04311523437497,58.82163085937498],[-135.82636718750004,58.89794921874997],[-136.0166015625,58.87397460937498],[-136.150048828125,59.04809570312503],[-136.22583007812497,58.765478515625006],[-136.98901367187503,59.03447265624999],[-137.05903320312498,58.87373046875001],[-136.613916015625,58.809277343749955],[-136.48374023437503,58.61767578125],[-136.224609375,58.602246093749955],[-136.06147460937495,58.45273437500006],[-136.607421875,58.24399414062498],[-137.54399414062502,58.58120117187502],[-138.51489257812503,59.16591796875005],[-139.77329101562498,59.52729492187504],[-139.51303710937498,59.698095703125006],[-139.5123046875,59.95356445312501],[-139.28671874999998,59.610937500000034],[-139.22080078125003,59.819873046875045],[-138.9880859375,59.83500976562502],[-139.43144531249996,60.012255859375074],[-140.41982421874997,59.71074218750002],[-141.40830078125,59.90278320312498],[-141.408740234375,60.11767578125006],[-141.67016601562497,59.969873046874966],[-142.94565429687503,60.09697265625002],[-144.14721679687494,60.01640625000002],[-144.185498046875,60.150732421875034],[-144.901318359375,60.335156249999955],[-144.69111328125,60.66909179687502],[-145.248291015625,60.38012695312506],[-145.898876953125,60.47817382812505],[-145.67490234374998,60.65112304687503],[-146.57045898437497,60.72915039062502],[-146.39199218749997,60.810839843750045],[-146.63842773437497,60.89731445312498],[-146.59912109374994,61.05351562500002],[-146.284912109375,61.11264648437498],[-147.89111328125,60.889892578125],[-148.00512695312494,60.96855468750002],[-147.75185546874997,61.218945312499955],[-148.34189453125,61.060400390625006],[-148.34443359374998,60.853564453125045],[-148.55615234374994,60.82700195312506],[-148.25673828124997,60.67529296874997],[-148.64013671875,60.48945312500004],[-148.11918945312502,60.57514648437498],[-147.96411132812494,60.48486328124997],[-148.430712890625,59.98911132812498],[-149.2666015625,59.99829101562497],[-149.395263671875,60.10576171875002],[-149.59804687500002,59.77045898437501],[-149.7138671875,59.91958007812502],[-149.80126953124994,59.737939453124966],[-150.00532226562507,59.78442382812503],[-150.19804687499996,59.56655273437505],[-150.60737304687504,59.56337890625002],[-150.934521484375,59.249121093750034],[-151.18276367187502,59.30078124999997],[-151.73818359375002,59.18852539062502],[-151.94951171875,59.26508789062498],[-151.88461914062503,59.386328125],[-151.39960937499995,59.51630859375001],[-151.04648437499998,59.771826171875034],[-151.45009765624997,59.65039062499997],[-151.85322265625,59.78208007812498],[-151.39599609375006,60.27446289062502],[-151.35644531249997,60.72294921874999],[-150.44125976562503,61.02358398437505],[-149.07509765624997,60.87641601562498],[-150.05327148437496,61.17109374999998],[-149.433544921875,61.50078125000002],[-149.97568359374998,61.27934570312502],[-150.61225585937495,61.301123046875006],[-151.59350585937494,60.979638671874966],[-152.54091796874997,60.265429687500045],[-153.025,60.29565429687497],[-152.660107421875,59.99721679687502],[-153.21123046875002,59.84272460937498],[-153.09360351562503,59.70913085937505],[-153.65253906250004,59.64702148437499],[-154.17832031250003,59.155566406250074],[-153.41826171875,58.9599609375],[-153.43759765625003,58.754833984374955],[-154.289013671875,58.30434570312502],[-154.247021484375,58.15942382812497],[-155.006884765625,58.01606445312501],[-155.77797851562497,57.56821289062498],[-156.43588867187498,57.359960937500006],[-156.62900390624998,57.00996093750001],[-158.41440429687498,56.435839843750045],[-158.5521484375,56.31269531249998],[-158.27563476562497,56.19624023437498],[-158.5046875,56.062109375],[-158.59116210937503,56.18452148437498],[-158.78984375000002,55.98691406250006],[-159.52324218749993,55.81000976562498],[-159.65966796875003,55.625927734374955],[-159.77138671874997,55.84111328125002],[-160.49931640625002,55.53730468750004],[-161.38193359374998,55.371289062499955],[-161.44379882812495,55.513281250000034],[-161.202099609375,55.54355468750006],[-161.51694335937503,55.61840820312503],[-162.073974609375,55.13930664062505],[-162.38637695312497,55.05234375],[-162.63037109375003,55.24667968749998],[-162.67436523437505,54.99658203125],[-162.86503906249996,54.954541015624955],[-163.11962890624997,55.06469726562503],[-163.131103515625,54.916552734375045],[-163.33530273437503,54.83916015624999],[-163.27880859374997,55.12182617187503],[-162.906591796875,55.19555664062503],[-161.69731445312502,55.9072265625],[-161.215625,56.02143554687498],[-160.8986328125,55.99365234375],[-161.00537109375,55.88715820312498],[-160.80283203125003,55.754443359375045],[-160.70634765625002,55.870458984375034],[-160.29169921875,55.80507812500005],[-160.53906250000006,56.00629882812501],[-160.30205078125,56.31411132812502],[-158.91801757812502,56.882177734375006],[-158.675146484375,56.79487304687498],[-158.66079101562502,57.03940429687498],[-158.32094726562497,57.29790039062499],[-157.84575195312496,57.52807617187497],[-157.4619140625,57.506201171875034],[-157.697216796875,57.679443359375],[-157.610888671875,58.050830078125074],[-157.19370117187498,58.19418945312506],[-157.48837890624998,58.25371093750002],[-157.52363281249998,58.421337890624955],[-156.97465820312496,58.736328125],[-156.80888671875005,59.13427734375],[-157.14204101562504,58.87763671875001],[-158.19091796875003,58.6142578125],[-158.50317382812494,58.85034179687497],[-158.42563476562498,58.99931640625002],[-158.080517578125,58.97744140625002],[-158.422802734375,59.08984375],[-158.67827148437502,58.92939453124998],[-158.80947265625002,58.973876953125],[-158.78862304687493,58.440966796875045],[-158.95068359375,58.404541015625],[-159.67026367187498,58.9111328125],[-159.92021484375,58.819873046875074],[-160.36313476562498,59.05117187500002],[-161.246826171875,58.799462890624994],[-161.36132812499994,58.66953124999998],[-162.144921875,58.64423828124998],[-161.724365234375,58.794287109375006],[-161.64438476562498,59.109667968750045],[-161.9810546875,59.14614257812502],[-161.82871093749998,59.588623046875],[-162.421337890625,60.28398437500002],[-161.96201171875003,60.695361328125045],[-162.68496093749997,60.268945312499966],[-162.57075195312495,59.98974609375],[-163.68037109374998,59.80151367187503],[-164.14282226562497,59.89677734374999],[-165.02651367187497,60.500634765624994],[-165.35380859375002,60.54121093750001],[-164.80517578125,60.89204101562498],[-164.31850585937497,60.77128906249999],[-164.37236328125002,60.59184570312502],[-163.999560546875,60.76606445312498],[-163.72998046874997,60.589990234374994],[-163.420947265625,60.757421875],[-163.90654296874996,60.85380859375002],[-163.58691406249994,60.902978515624994],[-163.74902343750003,60.9697265625],[-163.99462890624997,60.86469726562501],[-165.11484375,60.93281250000004],[-164.86899414062503,61.11176757812498],[-165.27978515624994,61.169628906249955],[-165.27363281250004,61.27485351562498],[-165.56586914062498,61.10234375000002],[-165.86396484375004,61.33569335937503],[-165.84531249999998,61.536230468750034],[-166.152734375,61.545947265625074],[-166.16811523437502,61.65083007812501],[-165.80893554687503,61.69609375000002],[-166.07880859375,61.803125],[-165.61279296875003,61.86928710937502],[-165.707275390625,62.10043945312506],[-165.19453125,62.47353515625002],[-164.75786132812493,62.496728515624966],[-164.589453125,62.709375],[-164.79267578125,62.623193359374966],[-164.79965820312503,62.918066406250006],[-164.384228515625,63.03046874999998],[-164.40903320312503,63.21503906250001],[-163.94287109375,63.247216796874994],[-163.61630859374998,63.125146484374994],[-163.73784179687496,63.016406250000045],[-163.504345703125,63.105859374999966],[-163.28784179687494,63.046435546875045],[-162.621484375,63.26582031249998],[-162.28281250000003,63.529199218749994],[-161.97397460937498,63.45292968749999],[-161.09970703125003,63.557910156250045],[-160.778564453125,63.818945312500034],[-160.987548828125,64.25126953125002],[-161.49072265625003,64.43378906249998],[-160.93193359374996,64.5791015625],[-160.855908203125,64.755615234375],[-161.13017578125005,64.92543945312505],[-161.759375,64.816259765625],[-162.80703124999997,64.37421875000001],[-163.20390625,64.65200195312502],[-163.14433593750002,64.423828125],[-163.71308593749998,64.588232421875],[-164.978759765625,64.45366210937502],[-166.1427734375,64.58276367187503],[-166.48139648437498,64.72807617187507],[-166.415234375,64.926513671875],[-166.92841796875,65.15708007812498],[-166.15703125,65.28583984375001],[-167.40400390625,65.42211914062497],[-168.08837890624997,65.65776367187502],[-166.39873046875002,66.14443359375005],[-165.62993164062496,66.131201171875],[-165.77617187500002,66.31904296875001],[-164.46049804687502,66.58842773437499],[-163.63823242187502,66.57465820312504],[-163.89394531249997,66.57587890625001],[-164.03374023437493,66.21552734374995],[-163.69536132812502,66.08383789062503],[-161.93369140625003,66.04287109374997],[-161.45541992187503,66.28139648437497],[-161.03427734375003,66.18881835937503],[-161.12031249999995,66.334326171875],[-161.91689453124997,66.41181640624998],[-162.54365234375004,66.80512695312501],[-162.36162109375,66.94731445312502],[-161.591015625,66.45952148437502],[-160.23168945312503,66.420263671875],[-160.360888671875,66.6125],[-160.864013671875,66.67084960937501],[-161.39804687499998,66.55185546875],[-161.85668945312497,66.70034179687497],[-161.719921875,67.02055664062502],[-163.5318359375,67.10258789062502],[-164.1251953125,67.60673828125007],[-166.786279296875,68.35961914062497],[-166.38051757812502,68.425146484375],[-166.20908203125,68.88535156250003],[-165.04394531249994,68.882470703125],[-163.867919921875,69.03666992187505],[-161.88095703125003,70.33173828125001],[-162.073876953125,70.16196289062498],[-160.9962890625,70.30458984375],[-160.11713867187495,70.59121093750002],[-159.86567382812498,70.27885742187499],[-159.81499023437496,70.49707031250003],[-159.38676757812493,70.52451171875003],[-160.081591796875,70.63486328125003],[-159.680908203125,70.786767578125],[-159.31450195312496,70.87851562500003],[-159.251171875,70.7484375],[-157.909375,70.860107421875],[-156.47021484374994,71.40766601562501],[-156.469970703125,71.29155273437507],[-155.57944335937503,71.12109374999997],[-156.14658203125,70.92783203125003],[-155.97353515625002,70.84199218749995],[-155.16684570312498,71.09921875000006],[-154.19521484375002,70.80112304687498],[-153.23291015625,70.93256835937504],[-152.49121093749994,70.88095703125],[-152.23291015625,70.81035156249999],[-152.39921875,70.62045898437503],[-151.76904296875,70.56015625],[-151.94467773437498,70.45209960937501],[-149.26943359374997,70.50078124999999],[-147.70537109375,70.21723632812495],[-145.82314453124997,70.16005859375002],[-145.19736328125003,70.00869140625002],[-143.218310546875,70.11625976562499],[-142.70786132812498,70.03378906249998],[-141.40791015625,69.65336914062502],[-141.00214843750004,69.65078125000002],[-141.00214843750004,68.77416992187506]]]]},"properties":{"name":"United States","childNum":76}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[71.20615234375006,39.892578125],[71.15625,39.88344726562502],[71.06425781250002,39.88491210937505],[71.01171874999997,39.895117187500006],[71.04365234375004,39.97631835937503],[71.04482421875005,39.992529296875034],[70.96064453125004,40.087988281250034],[71.00546875,40.15229492187498],[71.0241210937501,40.14916992187497],[71.08037109375007,40.07988281249999],[71.2287109375001,40.04814453124999],[71.20615234375006,39.892578125]]],[[[70.94677734374997,42.24868164062505],[70.97900390625003,42.26655273437504],[71.03603515625,42.28466796875],[71.12998046875006,42.25],[71.21269531250002,42.20644531250005],[71.23232421875005,42.18627929687503],[71.22851562499997,42.16289062499996],[70.18095703125007,41.571435546874994],[70.734375,41.400537109374994],[70.86044921875006,41.22490234375002],[71.11074218750005,41.152636718750045],[71.29882812500003,41.152490234374994],[71.39306640625003,41.123388671875034],[71.40839843750004,41.13603515625002],[71.42089843750003,41.341894531250034],[71.60625,41.367431640625],[71.66494140625,41.54121093749998],[71.70068359374997,41.454003906249966],[71.75771484375005,41.42802734375002],[71.79248046875003,41.41313476562499],[71.85800781250006,41.311376953125034],[71.8786132812501,41.195019531249955],[71.95849609375003,41.18706054687502],[72.05244140625004,41.16474609375001],[72.1154296875001,41.18657226562502],[72.1642578125001,41.173730468749966],[72.18095703125002,41.11845703124999],[72.18730468750002,41.02592773437499],[72.2130859375001,41.014257812500006],[72.36406250000002,41.04345703125],[72.65830078125,40.86992187499999],[73.13212890625002,40.82851562499999],[72.6041015625,40.52543945312499],[72.40205078125004,40.578076171874955],[72.3892578125,40.427392578124994],[72.13125,40.438623046874966],[71.69248046875,40.15234375],[71.30468749999997,40.28691406249996],[70.990625,40.2548828125],[70.95800781250003,40.238867187500034],[70.653125,40.201171875],[70.37158203125003,40.38413085937506],[70.75107421875006,40.721777343750006],[70.40195312500006,41.03510742187498],[69.71289062500003,40.65698242187503],[69.35722656250002,40.76738281249996],[69.20625,40.566552734374994],[69.27490234374997,40.19809570312498],[68.63066406250007,40.16708984374998],[68.9720703125,40.08994140624998],[68.80468750000003,40.05034179687499],[68.86875,39.90747070312503],[68.63896484375007,39.8388671875],[68.46328125,39.53671874999998],[67.71904296875007,39.62138671875002],[67.426171875,39.46557617187497],[67.3576171875001,39.216699218749994],[67.64833984375005,39.13105468750004],[67.69443359375006,38.99462890625003],[68.13251953125004,38.927636718749966],[68.08720703125002,38.47353515625002],[68.3502929687501,38.211035156250006],[67.81435546875005,37.48701171875004],[67.7980468750001,37.244970703125006],[67.75898437500004,37.172216796875034],[67.75292968749997,37.199804687500034],[67.7,37.227246093749955],[67.60742187499997,37.22250976562506],[67.5172851562501,37.26665039062499],[67.44169921875007,37.25800781250001],[67.3197265625,37.209570312500006],[67.1955078125001,37.23520507812498],[67.06884765624997,37.334814453125006],[66.82773437500006,37.37128906249998],[66.52226562500007,37.34848632812506],[66.51064453125,37.45869140625004],[66.51132812500006,37.59916992187496],[66.52558593750004,37.785742187500034],[66.60625,37.98671875000005],[65.97119140624997,38.244238281250006],[65.612890625,38.23857421875002],[64.3099609375,38.97729492187497],[63.76367187500003,39.16054687499999],[62.48320312500002,39.97563476562496],[61.90283203124997,41.09370117187501],[61.496972656249994,41.276074218749955],[61.2423828125001,41.18920898437503],[60.454980468749994,41.221630859374955],[60.089648437500074,41.39941406250003],[60.07558593750005,41.759667968749966],[60.20078125000006,41.803125],[59.94179687499999,41.97353515625002],[59.98515625000002,42.21171875],[59.35429687500002,42.32329101562496],[58.5890625000001,42.778466796874966],[58.477148437500006,42.66284179687503],[58.15156250000004,42.628076171874966],[58.474414062500074,42.29936523437496],[58.02890625,42.48764648437506],[57.814257812500074,42.18984375000005],[57.290625,42.123779296875],[56.96406250000004,41.856542968750006],[57.11884765625004,41.35029296874998],[57.01796875,41.26347656249996],[55.97744140625005,41.32221679687504],[55.97568359375006,44.99492187499996],[58.555273437500006,45.55537109375001],[61.007910156250006,44.39379882812497],[61.99023437500003,43.492138671874955],[63.20703125000003,43.62797851562502],[64.44316406250007,43.55117187499999],[64.9054687500001,43.714697265625006],[65.49619140625,43.310546875],[65.80302734375002,42.87695312500006],[66.1002929687501,42.99082031249998],[66.00957031250007,42.00488281250003],[66.49863281250006,41.99487304687503],[66.70966796875004,41.17915039062501],[67.9357421875001,41.19658203125002],[68.11308593750007,41.02861328124999],[68.04765625000007,40.80927734374998],[68.29189453125,40.656103515625034],[68.57265625,40.62265624999998],[68.58408203125,40.876269531250045],[69.15361328125002,41.42524414062498],[70.94677734374997,42.24868164062505]]]]},"properties":{"name":"Uzbekistan","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[-61.17451171875001,13.158105468749966],[-61.268457031249966,13.287695312499991],[-61.13896484374996,13.358740234374991],[-61.17451171875001,13.158105468749966]]]},"properties":{"name":"St. Vin. and Gren.","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-60.99790039062498,8.867333984374966],[-61.069189453125034,8.947314453125003],[-60.91582031249996,9.070312500000014],[-60.86142578124998,8.949609375000037],[-60.99790039062498,8.867333984374966]]],[[[-60.821191406249966,9.138378906250026],[-60.94140625000003,9.105566406250006],[-60.73583984374997,9.203320312500026],[-60.821191406249966,9.138378906250026]]],[[[-63.84936523437494,11.131005859374994],[-63.917626953124994,10.887548828125048],[-64.40234375,10.981591796875023],[-64.21367187500002,11.086132812499997],[-64.0283203125,11.00185546874998],[-63.84936523437494,11.131005859374994]]],[[[-60.742138671874926,5.202050781250037],[-60.71196289062499,5.191552734375023],[-60.671972656250034,5.164355468749989],[-60.603857421875006,4.94936523437498],[-61.00283203125002,4.535253906249991],[-61.28007812500002,4.516894531249974],[-61.82084960937496,4.197021484375],[-62.153125,4.098388671874986],[-62.41064453124994,4.156738281249972],[-62.71210937499998,4.01791992187502],[-62.85698242187502,3.593457031249969],[-63.33867187500002,3.943896484375045],[-64.02148437500003,3.929101562500051],[-64.19248046874995,4.126855468750009],[-64.57636718750001,4.139892578125],[-64.788671875,4.276025390625023],[-64.66899414062496,4.01181640625002],[-64.22109375000002,3.587402343749972],[-64.04658203124998,2.502392578124997],[-63.389257812500006,2.411914062500045],[-63.43251953124994,2.155566406250045],[-64.00849609374995,1.931591796874969],[-64.20502929687493,1.52949218750004],[-65.10375976562497,1.108105468749983],[-65.47338867187497,0.691259765624977],[-65.55605468750002,0.687988281250014],[-65.52299804687493,0.843408203124966],[-65.68144531249999,0.983447265624989],[-66.06005859375003,0.78535156250004],[-66.34711914062498,0.7671875],[-66.87602539062499,1.223046875000037],[-67.21083984375,2.390136718750043],[-67.61870117187496,2.793603515624994],[-67.85908203124998,2.793603515624994],[-67.3111328125,3.41586914062502],[-67.66162109375,3.864257812499986],[-67.85527343750002,4.506884765624989],[-67.82490234374995,5.270458984375026],[-67.47387695312503,5.929980468750003],[-67.48198242187499,6.18027343750002],[-67.85917968749999,6.289892578124963],[-68.47177734375,6.156542968749974],[-69.42714843749997,6.123974609374997],[-70.12919921874999,6.95361328125],[-70.73715820312503,7.090039062499997],[-71.12861328124993,6.98671875],[-72.00664062499993,7.032617187500023],[-72.20771484374995,7.37026367187498],[-72.47197265624996,7.524267578124991],[-72.39033203124995,8.287060546874969],[-72.66542968749994,8.62758789062498],[-72.79638671874997,9.10898437499999],[-73.05839843749999,9.259570312500031],[-73.36621093749997,9.194140625000017],[-73.00654296874998,9.789160156250006],[-72.86933593750001,10.49125976562496],[-72.690087890625,10.835839843749994],[-72.24848632812501,11.196435546875009],[-71.95810546875,11.66640625],[-71.31972656249997,11.861914062500048],[-71.95693359375002,11.569921874999977],[-71.835107421875,11.190332031250009],[-71.6416015625,11.013525390625048],[-71.73090820312498,10.994677734375017],[-71.59433593749995,10.657373046875051],[-72.11284179687499,9.815576171874966],[-71.61953124999994,9.047949218749991],[-71.24140625000001,9.160449218750003],[-71.08583984375002,9.348242187499977],[-71.05268554687501,9.705810546874986],[-71.49423828125,10.533203124999972],[-71.46953124999993,10.964160156250017],[-70.23251953124998,11.372998046874997],[-70.09711914062493,11.519775390624972],[-69.80478515624998,11.47421875000002],[-69.81733398437495,11.672070312499997],[-70.19257812499993,11.62460937500002],[-70.28652343749997,11.886035156249989],[-70.20278320312497,12.098388671874986],[-70.00395507812496,12.177880859375023],[-69.63159179687494,11.479931640625026],[-68.827978515625,11.431738281249977],[-68.39863281249995,11.160986328124977],[-68.29628906249997,10.689355468749994],[-68.13994140624999,10.492724609374989],[-66.24721679687497,10.632226562499994],[-65.85175781249995,10.257763671874997],[-65.12910156249998,10.070068359375043],[-64.85048828125,10.098095703124969],[-64.188330078125,10.457812499999989],[-63.73188476562501,10.503417968750043],[-64.24750976562498,10.54257812500002],[-64.298193359375,10.635156249999966],[-61.879492187500006,10.741015625000031],[-62.379980468750006,10.546875],[-62.91357421875,10.531494140624986],[-62.68583984374996,10.289794921875043],[-62.740576171875006,10.056152343750043],[-62.55034179687499,10.200439453125043],[-62.320410156250034,9.783056640625006],[-62.22114257812498,9.882568359375028],[-62.15336914062493,9.821777343749986],[-62.15532226562499,9.979248046875014],[-62.077099609374926,9.97504882812504],[-61.73593749999998,9.631201171874977],[-61.76591796874996,9.813818359374963],[-61.58886718749994,9.894531249999986],[-60.79248046874997,9.360742187500037],[-61.02314453124998,9.15458984374996],[-61.24726562499998,8.600341796875014],[-61.61870117187499,8.59746093749996],[-61.30400390624999,8.410400390625043],[-60.800976562499926,8.592138671875034],[-60.16748046875,8.616992187500031],[-60.01752929687501,8.549316406250014],[-59.83164062499998,8.305957031250003],[-59.84907226562498,8.248681640624966],[-59.96484375000003,8.191601562499969],[-59.99072265624997,8.16201171874998],[-60.032421874999926,8.053564453125006],[-60.51362304687501,7.813183593749969],[-60.71865234374994,7.535937499999974],[-60.606542968750006,7.320849609375031],[-60.63330078124997,7.211083984374966],[-60.58320312499998,7.156201171874969],[-60.523193359375,7.143701171875009],[-60.464941406250034,7.166552734375045],[-60.39238281249999,7.164550781249986],[-60.34506835937495,7.15],[-60.32548828124996,7.133984374999983],[-60.32207031249996,7.092041015625043],[-60.35209960937496,7.002880859374997],[-60.39501953125,6.945361328125003],[-60.717919921874966,6.768310546875],[-61.14560546874998,6.694531249999983],[-61.20361328124997,6.588378906250028],[-61.181591796874926,6.513378906250026],[-61.15102539062502,6.446533203124986],[-61.15229492187501,6.385107421875006],[-61.12871093749999,6.214306640625026],[-61.15947265624996,6.174414062499977],[-61.22495117187498,6.129199218750003],[-61.303125,6.049511718750026],[-61.39082031250001,5.938769531250017],[-61.376806640625006,5.906982421875028],[-61.167187499999926,5.674218750000037],[-60.95400390625002,5.437402343750023],[-60.742138671874926,5.202050781250037]]]]},"properties":{"name":"Venezuela","childNum":4}},{"geometry":{"type":"Polygon","coordinates":[[[-64.765625,17.794335937499994],[-64.58046874999994,17.750195312499983],[-64.88911132812495,17.701708984375045],[-64.765625,17.794335937499994]]]},"properties":{"name":"U.S. Virgin Is.","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[104.06396484375003,10.390820312500011],[104.01845703125,10.029199218749966],[103.84951171875005,10.371093749999986],[104.06396484375003,10.390820312500011]]],[[[107.52128906250007,20.926611328124977],[107.39921875000007,20.903466796874966],[107.55126953125003,21.034033203125006],[107.52128906250007,20.926611328124977]]],[[[107.60273437500004,21.21679687500003],[107.40351562500004,21.093652343749994],[107.47626953125004,21.268945312499994],[107.60273437500004,21.21679687500003]]],[[[107.97265624999997,21.507958984375023],[107.40996093750002,21.284814453125023],[107.35429687500007,21.055175781250057],[107.1647460937501,20.94873046875003],[106.68339843750007,21.000292968750074],[106.75341796875003,20.73505859375004],[106.55078124999997,20.52656250000001],[106.57285156250012,20.392187499999977],[105.98408203125004,19.939062500000034],[105.62177734375004,18.96630859375003],[105.88828125000006,18.502490234375045],[106.49902343749997,17.946435546874994],[106.47890625000005,17.719580078125063],[106.3705078125,17.746875],[107.83378906250002,16.322460937499983],[108.02939453125012,16.331103515625074],[108.82128906249997,15.377929687500028],[109.30332031250012,13.856445312500043],[109.271875,13.279345703124974],[109.42392578125006,12.955957031249994],[109.44492187500006,12.599609375000057],[109.33554687500012,12.751904296874997],[109.21894531250004,12.64580078124996],[109.30468750000003,12.391162109375045],[109.20683593750007,12.415380859375006],[109.1986328125,11.724853515625014],[109.03964843750012,11.592675781249994],[108.98671875,11.336376953124997],[108.09492187500004,10.897265624999989],[108.0013671875,10.720361328125009],[107.26152343750007,10.39838867187504],[107.00664062500002,10.66054687499998],[106.94746093750004,10.400341796874997],[106.72734375000007,10.535644531250028],[106.605859375,10.46494140625002],[106.74121093750003,10.444384765625003],[106.75742187500006,10.295800781250023],[106.46406250000004,10.298291015624997],[106.78525390625012,10.116455078124986],[106.59560546875005,9.859863281250028],[106.1364257812501,10.221679687500014],[106.56435546875005,9.715625],[106.48408203125004,9.559423828125006],[105.83095703125005,10.000732421875028],[106.15859375,9.59414062499998],[106.16835937500005,9.396728515625],[105.50097656249997,9.093212890624983],[105.11435546875006,8.629199218750031],[104.77041015625,8.59765625],[104.89628906250007,8.746630859374974],[104.81855468750004,8.801855468750034],[104.84521484375003,9.606152343750026],[105.08447265625003,9.99570312499999],[104.8019531250001,10.202734374999977],[104.66347656250005,10.169921875000043],[104.42636718750006,10.411230468749991],[104.85058593749997,10.534472656249974],[105.04638671874997,10.701660156250014],[105.04570312500002,10.911376953125014],[105.3146484375001,10.845166015625026],[105.40576171875003,10.95161132812504],[105.75507812500004,10.989990234375043],[105.85332031250007,10.86357421874996],[106.16396484375005,10.794921875],[106.16093750000002,11.037109375000057],[105.85605468750006,11.294287109375048],[105.85146484375005,11.635009765625],[106.0060546875001,11.758007812500011],[106.39921875000007,11.687011718750028],[106.41386718750002,11.9484375],[106.70009765625,11.979296874999974],[107.21210937500004,12.30400390624996],[107.39335937500002,12.260498046874972],[107.50644531250006,12.364550781250031],[107.47539062500002,13.030371093749963],[107.60546874999997,13.437792968750017],[107.3314453125,14.126611328125009],[107.51943359375005,14.705078125],[107.51376953125012,14.817382812500057],[107.52451171875012,14.871826171875043],[107.50468750000007,14.915917968749966],[107.48037109375,14.979882812500037],[107.55527343750006,15.057031250000023],[107.58964843750002,15.118457031250017],[107.63369140625005,15.18984375],[107.653125,15.255224609374991],[107.62167968750006,15.309863281250017],[107.56425781250002,15.391601562499972],[107.45957031250012,15.4658203125],[107.33876953125,15.560498046875011],[107.27939453125006,15.618701171875045],[107.16591796875005,15.802490234375028],[107.1888671875,15.838623046875],[107.36064453125002,15.921728515624977],[107.3919921875,15.951660156250028],[107.39638671875,16.04301757812499],[106.93066406249997,16.353125],[106.8927734375001,16.396533203125074],[106.85107421875003,16.515625],[106.83242187500005,16.526269531250023],[106.79160156250006,16.490332031250006],[106.73955078125007,16.452539062500023],[106.6564453125001,16.49262695312501],[106.54619140625002,16.650732421874977],[106.53369140625003,16.821044921875057],[106.52597656250006,16.876611328124994],[106.50224609375002,16.95410156249997],[106.26953125000003,17.21679687500003],[106.00625,17.415283203125057],[105.69140625000003,17.737841796875045],[105.58847656250012,17.983691406250045],[105.51855468749997,18.077441406250045],[105.45820312500004,18.15429687499997],[105.11455078125002,18.40527343750003],[105.08701171875006,18.496240234374994],[105.14541015625,18.616796875000063],[105.14648437500003,18.650976562500006],[103.89160156250003,19.304980468750017],[103.89638671875,19.339990234375023],[103.93203125,19.366064453125006],[104.0275390625001,19.42045898437499],[104.062890625,19.48256835937505],[104.05156250000007,19.564160156249955],[104.01347656250007,19.64648437500003],[104.03203125000002,19.675146484375006],[104.06279296875007,19.678417968749983],[104.25986328125006,19.685498046874983],[104.5462890625,19.61054687500001],[104.58789062500003,19.61875],[104.74316406250003,19.754736328124977],[104.80175781249997,19.83613281250004],[104.81513671875004,19.90400390625001],[104.9279296875001,20.01811523437499],[104.92919921875003,20.082812500000017],[104.88867187500003,20.169091796875023],[104.84785156250004,20.202441406250045],[104.69873046875003,20.20532226562503],[104.67695312500004,20.224707031249977],[104.66191406250007,20.28901367187501],[104.65644531250004,20.32851562499999],[104.6188476562501,20.37451171875003],[104.49619140625006,20.413671875],[104.39218750000012,20.424755859374955],[104.36777343750012,20.44140624999997],[104.40781250000012,20.48574218750005],[104.47861328125006,20.529589843750017],[104.53271484374997,20.55488281250001],[104.58320312500004,20.646679687499955],[104.34960937499997,20.821093750000074],[104.19531249999997,20.913964843749966],[104.10136718750002,20.94550781250001],[103.63505859375007,20.697070312500017],[103.46357421875004,20.779833984375017],[103.21074218750002,20.840625],[103.10449218749997,20.891650390625045],[102.88378906250003,21.202587890624983],[102.85117187500006,21.26591796874999],[102.94960937500005,21.681347656249983],[102.84521484374997,21.73476562500005],[102.81591796874997,21.807373046875],[102.7982421875,21.797949218750034],[102.77109375000006,21.709667968749983],[102.73857421875002,21.67792968750001],[102.66201171875005,21.67602539062497],[102.58251953125003,21.90429687500003],[102.12744140624997,22.379199218750045],[102.1759765625001,22.414648437500006],[102.2370117187501,22.466015624999983],[102.40644531250004,22.70800781249997],[102.47089843750004,22.75092773437501],[102.98193359374997,22.4482421875],[103.32666015625003,22.769775390625057],[103.49296875000007,22.587988281250034],[103.62021484375006,22.782031250000045],[103.94150390625006,22.540087890625045],[104.14306640624997,22.800146484375006],[104.37177734375004,22.704052734374983],[104.68730468750002,22.822216796874983],[104.86474609375003,23.136376953125023],[105.27539062500003,23.34521484375003],[105.8429687500001,22.922802734374955],[106.14843749999997,22.970068359375006],[106.2790039062501,22.857470703125045],[106.54179687500007,22.908349609375023],[106.78027343749997,22.778906250000034],[106.55039062500006,22.501367187499994],[106.66357421875003,21.97890625000005],[106.97099609375002,21.923925781250034],[107.35117187500012,21.60888671874997],[107.75927734374997,21.655029296875057],[107.97265624999997,21.507958984375023]]]]},"properties":{"name":"Vietnam","childNum":4}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[169.49130859375006,-19.54013671875002],[169.34726562500006,-19.623535156249957],[169.2174804687501,-19.476367187500003],[169.24746093750005,-19.3447265625],[169.49130859375006,-19.54013671875002]]],[[[169.334375,-18.940234375000017],[168.98691406250006,-18.87128906250001],[169.01582031250004,-18.64375],[169.14384765625002,-18.63105468750001],[169.334375,-18.940234375000017]]],[[[168.44580078124997,-17.54218750000004],[168.58496093750003,-17.695898437500006],[168.52460937500004,-17.798046875000026],[168.15820312500003,-17.710546874999963],[168.2731445312501,-17.552246093749957],[168.44580078124997,-17.54218750000004]]],[[[168.44677734375003,-16.778808593749957],[168.18144531250002,-16.804003906250017],[168.13535156250006,-16.636914062499997],[168.44677734375003,-16.778808593749957]]],[[[168.29667968750007,-16.33652343749999],[167.92900390625002,-16.22871093749997],[168.16386718750002,-16.081640625000034],[168.29667968750007,-16.33652343749999]]],[[[167.4125,-16.095898437499997],[167.83662109375004,-16.449707031249957],[167.44931640625012,-16.554980468750003],[167.34921875000006,-16.15449218750004],[167.15146484375006,-16.080468749999966],[167.19951171875002,-15.885058593750031],[167.33574218750007,-15.916699218749997],[167.4125,-16.095898437499997]]],[[[167.9113281250001,-15.435937500000023],[167.67421875,-15.4515625],[168.00253906250012,-15.283203124999986],[167.9113281250001,-15.435937500000023]]],[[[166.74580078125004,-14.826855468750011],[166.81015625000012,-15.15742187500004],[167.0755859375,-14.935644531249977],[167.20078125000012,-15.443066406249969],[167.0939453125001,-15.580859374999974],[166.75830078125003,-15.631152343750003],[166.63105468750004,-15.406054687499974],[166.56738281250003,-14.641796874999969],[166.74580078125004,-14.826855468750011]]],[[[167.58486328125,-14.260937500000011],[167.43027343750012,-14.294921875],[167.41074218750006,-14.19746093750004],[167.50644531250012,-14.142187499999977],[167.58486328125,-14.260937500000011]]],[[[167.48886718750006,-13.907226562499972],[167.3917968750001,-13.788378906250017],[167.48105468750006,-13.709472656250014],[167.48886718750006,-13.907226562499972]]]]},"properties":{"name":"Vanuatu","childNum":10}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-171.4541015625,-14.04648437500002],[-171.9119140625,-14.001660156250026],[-172.04589843750003,-13.857128906249983],[-171.60390624999997,-13.879199218750045],[-171.4541015625,-14.04648437500002]]],[[[-172.33349609375,-13.46523437499999],[-172.17685546874998,-13.68466796875002],[-172.224951171875,-13.804296874999963],[-172.535693359375,-13.791699218749983],[-172.77851562499998,-13.516796875000011],[-172.33349609375,-13.46523437499999]]]]},"properties":{"name":"Samoa","childNum":2}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[53.76318359374997,12.636816406249991],[54.18740234375005,12.664013671875026],[54.511132812499994,12.552783203125017],[54.12949218750006,12.360644531250045],[53.71884765625006,12.318994140624994],[53.31582031250005,12.533154296875011],[53.53496093750002,12.715771484374997],[53.76318359374997,12.636816406249991]]],[[[42.75585937500003,13.70429687500004],[42.689746093750074,13.673632812500017],[42.7941406250001,13.766113281250028],[42.75585937500003,13.70429687500004]]],[[[42.787402343750074,13.971484375000031],[42.69404296875004,14.007910156249991],[42.76210937500005,14.067480468750048],[42.787402343750074,13.971484375000031]]],[[[53.08564453125004,16.648388671874955],[52.327734375,16.293554687500063],[52.17402343750004,15.956835937500017],[52.2174804687501,15.655517578125],[51.3224609375001,15.22626953125004],[49.34990234375002,14.637792968749977],[48.66835937499999,14.050146484374977],[47.9899414062501,14.048095703125],[47.40771484374997,13.661621093750057],[46.78886718750002,13.465576171874986],[45.65732421875006,13.338720703124991],[45.03867187500006,12.815869140624969],[44.617773437500006,12.817236328124977],[44.00585937499997,12.607666015625],[43.634375,12.744482421874991],[43.487597656250074,12.69882812500002],[43.23193359375003,13.267089843750057],[43.2824218750001,13.692529296875037],[43.08906250000004,14.010986328125],[42.93642578125005,14.938574218749963],[42.85566406250004,15.132958984375037],[42.65781250000006,15.232812500000051],[42.79902343750004,15.326269531249991],[42.71718750000005,15.654638671875006],[42.83964843750002,16.032031250000074],[42.79931640624997,16.37177734375001],[43.16503906249997,16.689404296874955],[43.19091796875003,17.359375],[43.41796875000003,17.516259765625023],[43.91699218749997,17.32470703124997],[45.14804687500006,17.427441406249955],[45.5353515625001,17.30205078124999],[46.72763671875006,17.26557617187501],[46.97568359375006,16.953466796875034],[47.14355468749997,16.946679687499966],[47.44179687499999,17.111865234375045],[47.57958984374997,17.448339843750034],[48.17216796875002,18.156933593749983],[49.04199218750003,18.58178710937503],[51.977636718750006,18.996142578125074],[53.08564453125004,16.648388671874955]]]]},"properties":{"name":"Yemen","childNum":4}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[37.85693359375003,-46.94423828124998],[37.5900390625001,-46.90800781250006],[37.78955078124997,-46.8375],[37.85693359375003,-46.94423828124998]]],[[[31.799609375000017,-23.8921875],[31.98583984374997,-24.460644531249983],[31.921679687500017,-25.96875],[31.335156250000097,-25.755566406249997],[31.207324218750074,-25.843359375000034],[31.08808593750004,-25.980664062500026],[30.803320312500006,-26.41347656250001],[30.806738281250006,-26.78525390624999],[30.88330078124997,-26.792382812500023],[30.938085937500006,-26.91582031250003],[31.06337890625005,-27.1123046875],[31.274023437500063,-27.23837890625002],[31.469531250000017,-27.29550781250002],[31.74257812500005,-27.309960937500037],[31.95839843750005,-27.305859375],[31.946093750000017,-27.173632812499974],[31.96718750000005,-26.96064453125001],[31.994726562500006,-26.817480468749977],[32.024804687499994,-26.81113281250002],[32.112890625,-26.83945312500002],[32.19960937499999,-26.833496093749957],[32.35351562499997,-26.861621093750003],[32.7765625000001,-26.850976562499966],[32.88613281250005,-26.849316406249983],[32.53476562500006,-28.19970703125003],[32.285742187500006,-28.62148437499998],[31.335156250000097,-29.378125],[29.97119140625003,-31.322070312500017],[28.449414062500068,-32.62460937499999],[27.077441406250074,-33.52119140625004],[26.429492187500045,-33.75957031250002],[25.80585937500001,-33.737109374999974],[25.574218750000057,-34.03535156249998],[25.00292968750003,-33.97363281250003],[24.8271484375,-34.16894531250003],[24.595507812500074,-34.17451171875],[23.697851562500063,-33.99277343750002],[23.268164062500006,-34.08115234374999],[22.553808593750063,-34.01005859374999],[22.24550781250005,-34.06914062500003],[21.788964843750023,-34.37265624999996],[20.529882812500034,-34.4630859375],[20.020605468750006,-34.785742187500006],[19.298242187500023,-34.61503906249996],[19.330761718750068,-34.49238281250001],[19.098339843750068,-34.350097656249986],[18.831347656250017,-34.36406249999999],[18.75214843750004,-34.08261718750002],[18.50039062499999,-34.10927734375004],[18.46162109375001,-34.346875],[18.35205078124997,-34.1884765625],[18.43300781250005,-33.71728515625003],[17.851074218750057,-32.82744140625002],[17.96523437500005,-32.70859374999996],[18.125,-32.74912109374996],[18.325292968750034,-32.50498046874996],[18.21083984375008,-31.74248046874996],[17.34707031250005,-30.44482421875],[16.95,-29.40341796875002],[16.739453124999983,-29.009375],[16.447558593750045,-28.61757812499998],[16.755761718750023,-28.45214843750003],[16.7875,-28.39472656249997],[16.81015625,-28.264550781249994],[16.841210937500023,-28.21894531250004],[16.875292968750045,-28.12792968749997],[16.93330078125004,-28.06962890624999],[17.05625,-28.03105468750003],[17.1884765625,-28.13251953125001],[17.358691406250017,-28.269433593750023],[17.44794921875001,-28.698144531249966],[18.310839843750017,-28.88623046875],[19.16171875,-28.93876953124996],[19.245800781250068,-28.90166015625003],[19.31269531250004,-28.733300781250023],[19.539843750000017,-28.574609375000023],[19.98046875,-28.45126953125002],[19.98046875,-28.310351562500003],[19.98046875,-24.77675781249998],[20.430664062500057,-25.14707031250002],[20.79316406250001,-25.915625],[20.641406250000017,-26.7421875],[20.739843749999977,-26.84882812499997],[21.694726562500023,-26.840917968749963],[21.738085937500045,-26.806835937500026],[21.788281250000068,-26.710058593750034],[22.01093750000004,-26.635839843750006],[22.090917968749977,-26.580175781250034],[22.217578125000045,-26.38886718749997],[22.47089843750004,-26.219042968750003],[22.548632812500074,-26.178417968749997],[22.59765625000003,-26.13271484375001],[22.878808593750023,-25.457910156250023],[23.148730468750017,-25.288671875],[23.389257812500006,-25.291406250000023],[23.89375,-25.600878906250017],[23.96953124999999,-25.62607421874999],[24.192968750000034,-25.632910156249963],[24.33056640625,-25.742871093749983],[25.21337890625,-25.75625],[25.518164062500006,-25.66279296875001],[25.91210937499997,-24.747460937499966],[26.031835937500034,-24.70244140625003],[26.130859375000057,-24.671484375000034],[26.39716796875004,-24.61357421874996],[26.451757812500063,-24.582714843749983],[26.835058593750063,-24.240820312499963],[27.085546875000034,-23.577929687500003],[27.7685546875,-23.14892578125],[27.812597656250006,-23.108007812500006],[28.210156249999983,-22.693652343749974],[28.83984375000003,-22.480859374999966],[28.94580078125003,-22.39511718749999],[29.013476562500045,-22.27841796875002],[29.129882812500057,-22.21328125],[29.364843750000063,-22.19394531250005],[29.37744140625003,-22.19277343749998],[29.66308593749997,-22.146289062500017],[29.90234375000003,-22.184179687500006],[30.19042968750003,-22.291113281250034],[30.460156250000097,-22.329003906250023],[30.71162109375004,-22.297851562499986],[31.07343750000004,-22.30781249999997],[31.19726562499997,-22.344921874999983],[31.287890625000074,-22.402050781249983],[31.54560546875004,-23.48232421874998],[31.799609375000017,-23.8921875]],[[27.19355468750001,-29.94130859375001],[27.364062500000017,-30.27919921875001],[27.753125,-30.6],[28.05683593750001,-30.63105468750001],[28.128710937500017,-30.52509765625001],[28.39208984375003,-30.14755859375002],[28.646875,-30.1265625],[29.09804687500005,-29.919042968750006],[29.142187500000063,-29.70097656249999],[29.293554687500006,-29.56689453125003],[29.348828125000097,-29.441992187499977],[29.38671874999997,-29.319726562500023],[29.301367187500006,-29.08984375],[28.625781250000017,-28.581738281250054],[28.583398437499994,-28.59414062499999],[28.471875,-28.615820312499977],[28.23261718750004,-28.701269531249977],[28.084375,-28.779980468750026],[27.95986328125008,-28.87333984375003],[27.73554687500004,-28.940039062500034],[27.294531250000063,-29.519335937500017],[27.056933593750074,-29.62558593749999],[27.19355468750001,-29.94130859375001]]]]},"properties":{"name":"South Africa","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[33.148046875,-9.603515625],[33.25,-9.759570312500003],[33.35097656250002,-9.862207031250009],[33.33710937500001,-9.954003906250009],[33.3115234375,-10.037988281250009],[33.52890625,-10.234667968750003],[33.53759765625,-10.3515625],[33.5537109375,-10.391308593750011],[33.66152343750002,-10.553125],[33.29277343750002,-10.85234375],[33.37978515625002,-11.157910156250011],[33.26835937500002,-11.40390625],[33.23271484375002,-11.417675781250011],[33.22636718750002,-11.534863281250011],[33.30390625000001,-11.690820312500009],[33.25234375000002,-12.112597656250003],[33.34013671875002,-12.308300781250011],[33.512304687500006,-12.347753906250006],[32.975195312500006,-12.701367187500011],[32.96757812500002,-13.225],[32.67041015625,-13.590429687500006],[32.797460937500006,-13.6884765625],[32.98125,-14.009375],[33.148046875,-13.94091796875],[33.201757812500006,-14.013378906250011],[30.231835937500023,-14.990332031250006],[30.39609375,-15.64306640625],[29.4873046875,-15.69677734375],[28.9130859375,-15.98779296875],[28.760546875000017,-16.53212890625001],[27.932226562500006,-16.89619140625001],[27.020800781250017,-17.95839843750001],[26.779882812500006,-18.04150390625],[26.333398437500023,-17.929296875],[25.995898437500017,-17.969824218750006],[25.2587890625,-17.793554687500006],[25.001757812500017,-17.56855468750001],[24.73291015625,-17.51777343750001],[24.27490234375,-17.481054687500006],[23.380664062500017,-17.640625],[22.193945312500006,-16.628125],[21.979785156250017,-15.95556640625],[21.979394531250023,-14.440527343750006],[21.979296875000017,-14.11962890625],[21.979101562500006,-13.798730468750009],[21.978906250000023,-13.0009765625],[22.209570312500006,-13.0009765625],[23.843164062500023,-13.0009765625],[23.962988281250006,-12.988476562500011],[23.882421875,-12.799023437500011],[23.886523437500017,-12.743261718750006],[23.909375,-12.636132812500009],[23.98388671875,-11.725],[23.96650390625001,-10.871777343750011],[24.36572265625,-11.1298828125],[24.3779296875,-11.417089843750006],[25.28876953125001,-11.21240234375],[25.349414062500017,-11.623046875],[26.025976562500006,-11.89013671875],[26.824023437500017,-11.965234375],[27.1591796875,-11.579199218750006],[27.573828125,-12.22705078125],[28.412890625000017,-12.51806640625],[28.550878906250006,-12.836132812500011],[28.730078125,-12.925488281250011],[29.014257812500006,-13.368847656250011],[29.20185546875001,-13.398339843750009],[29.55419921875,-13.248925781250009],[29.775195312500017,-13.438085937500006],[29.79511718750001,-12.155468750000011],[29.508203125000023,-12.228222656250011],[29.48554687500001,-12.41845703125],[29.064355468750023,-12.348828125000011],[28.482519531250006,-11.812109375],[28.383398437500006,-11.566699218750003],[28.6455078125,-10.550195312500009],[28.60419921875001,-9.678808593750006],[28.400683593750017,-9.224804687500011],[28.869531250000023,-8.785839843750011],[28.89814453125001,-8.485449218750006],[30.75117187500001,-8.193652343750003],[30.830664062500006,-8.385546875],[30.891992187500023,-8.473730468750006],[30.968359375,-8.550976562500011],[31.07636718750001,-8.611914062500006],[31.3505859375,-8.60703125],[31.44921875,-8.65390625],[31.53486328125001,-8.71328125],[31.55625,-8.80546875],[31.673632812500017,-8.908789062500006],[31.91865234375001,-8.9421875],[31.921875,-9.019433593750009],[31.94257812500001,-9.054003906250003],[32.75664062500002,-9.322265625],[32.919921875,-9.407421875000011],[32.99599609375002,-9.622851562500003],[33.148046875,-9.603515625]]]},"properties":{"name":"Zambia","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[31.287890625000017,-22.40205078125001],[31.07343750000001,-22.30781250000001],[30.71162109375001,-22.2978515625],[30.46015625000001,-22.32900390625001],[30.1904296875,-22.291113281250006],[29.90234375,-22.184179687500006],[29.6630859375,-22.146289062500003],[29.37744140625,-22.19277343750001],[29.36484375,-22.193945312500006],[29.315234375000017,-22.15771484375],[29.237207031250023,-22.07949218750001],[29.042382812500023,-22.018359375],[29.02558593750001,-21.796875],[28.014062500000023,-21.55419921875],[27.66943359375,-21.064257812500003],[27.679296875,-20.503027343750006],[27.28076171875,-20.47871093750001],[27.17822265625,-20.10097656250001],[26.168066406250006,-19.53828125000001],[25.939355468750023,-18.93867187500001],[25.242285156250006,-17.969042968750003],[25.2587890625,-17.793554687500006],[25.995898437500017,-17.969824218750006],[26.333398437500023,-17.929296875],[26.779882812500006,-18.04150390625],[27.020800781250017,-17.95839843750001],[27.932226562500006,-16.89619140625001],[28.760546875000017,-16.53212890625001],[28.9130859375,-15.98779296875],[29.4873046875,-15.69677734375],[30.39609375,-15.64306640625],[30.437792968750017,-15.995312500000011],[31.236230468750023,-16.02363281250001],[31.939843750000023,-16.428808593750006],[32.94804687500002,-16.71230468750001],[32.87626953125002,-16.88359375],[32.99306640625002,-18.35957031250001],[32.69970703125,-18.94091796875],[32.84980468750001,-19.10439453125001],[32.77763671875002,-19.388769531250006],[32.992773437500006,-19.98486328125],[32.49238281250001,-20.659765625],[32.353613281250006,-21.136523437500003],[32.429785156250006,-21.29707031250001],[31.429492187500017,-22.298828125],[31.287890625000017,-22.40205078125001]]]},"properties":{"name":"Zimbabwe","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[74.00809389139292,33.25375789331485],[73.19660141888893,33.898124784580936],[73.13410859949555,34.82510160558277],[72.31128647748268,35.77290936638241],[73.08203125000107,36.43949943991182],[73.08961802927895,36.86435907947333],[73.116796875,36.868554687499994],[74.03886718750002,36.825732421874996],[74.54140625000002,37.02216796875],[74.69218750000002,37.0357421875],[74.8892578125,36.952441406249996],[74.94912109375002,36.968359375],[75.05390625000001,36.987158203125],[75.14521484375001,36.9732421875],[75.3466796875,36.913476562499994],[75.37685546875002,36.883691406249994],[75.42421875000002,36.738232421875],[75.46025390625002,36.725048828125],[75.57373046875,36.759326171874996],[75.66718750000001,36.741992187499996],[75.77216796875001,36.694921875],[75.84023437500002,36.649707031249996],[75.88496093750001,36.600732421874994],[75.93300781250002,36.52158203125],[75.95185546875001,36.45810546875],[75.97441406250002,36.382421875],[75.91230468750001,36.048974609374994],[76.07089843750003,35.9830078125],[76.14785156250002,35.829003906249994],[76.17783203125003,35.810546875],[76.25166015625001,35.8109375],[76.3857421875,35.837158203125],[76.50205078125003,35.878222656249996],[76.55126953125,35.887060546875],[76.5634765625,35.772998046874996],[76.6318359375,35.729394531249994],[76.7275390625,35.678662109375],[76.76689453124999,35.66171875],[76.81279296874999,35.571826171874996],[76.88222656250002,35.4357421875],[76.927734375,35.346630859375],[77.04863281249999,35.109912109374996],[77.00087890625002,34.991992187499996],[76.78291015625001,34.900195312499996],[76.75751953125001,34.877832031249994],[76.7490234375,34.847558593749994],[76.6962890625,34.786914062499996],[76.59443359375001,34.73583984375],[76.45673828125001,34.756103515625],[76.17246093750003,34.667724609375],[76.041015625,34.669921875],[75.93828125000002,34.612548828125],[75.86210937500002,34.56025390625],[75.70917968750001,34.503076171874994],[74.300390625,34.765380859375],[74.17197265625,34.7208984375],[74.05585937500001,34.6806640625],[73.96123046875002,34.653466796874994],[73.79453125,34.378222656249996],[73.80996093750002,34.325341796874994],[73.92460937500002,34.287841796875],[73.97236328125001,34.236621093749996],[73.9794921875,34.191308593749994],[73.90390625,34.1080078125],[73.94990234375001,34.018798828125],[74.24648437500002,33.990185546875],[73.97646484375002,33.7212890625],[74.15,33.506982421874994],[74.00809389139292,33.25375789331485]]]},"properties":{"name":"","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[78.49194250885338,32.53122786149202],[78.10154031239509,32.87658365066666],[77.71342088235082,32.6917648744551],[77.06655516561037,33.301666835953235],[76.62299010270264,33.32014871357439],[76.32728006076415,32.87658365066666],[75.73585997688717,32.78417426256088],[75.62496871116024,32.28516356678968],[75.32221348233018,32.28516356678968],[74.98730468749997,32.46220703124996],[74.78886718750013,32.4578125],[74.6857421875001,32.493798828124994],[74.66328125000004,32.75766601562495],[74.63242187499995,32.770898437500136],[74.58828125000011,32.7532226562501],[74.35458984375012,32.76870117187505],[74.30546875000007,32.81044921875002],[74.30361328125005,32.991796875000034],[73.98984375000006,33.22119140625006],[74.15,33.506982421874994],[73.97646484375016,33.72128906249998],[74.24648437500011,33.99018554687504],[73.9499023437501,34.018798828125],[73.90390625000012,34.10800781250006],[73.97949218750009,34.191308593749966],[73.97236328125004,34.23662109374996],[73.92460937500007,34.287841796875114],[73.80996093750016,34.32534179687511],[73.79453125000006,34.378222656250045],[73.96123046875007,34.653466796874994],[74.05585937500015,34.68066406250003],[74.17197265624995,34.72089843750004],[74.30039062500006,34.76538085937506],[75.70917968750004,34.50307617187508],[75.86210937500002,34.56025390625001],[75.93828125000019,34.612548828125],[76.04101562500014,34.66992187499997],[76.17246093750006,34.66772460937506],[76.4567382812501,34.756103515625114],[76.5944335937501,34.73583984375006],[76.69628906249997,34.78691406249999],[76.74902343750014,34.84755859375008],[76.7575195312501,34.87783203125005],[76.7829101562501,34.90019531249999],[77.00087890625011,34.99199218750002],[77.03066406250011,35.06235351562498],[77.04863281250007,35.109912109375074],[77.42343749999995,35.30258789062506],[77.57158203125002,35.37875976562495],[77.69697265625015,35.443261718750136],[77.79941406250006,35.49589843750002],[78.0426757812501,35.4797851562501],[78.07578125000006,35.13491210937502],[78.15849609375002,34.94648437499998],[78.32695312500007,34.60639648437498],[78.86484375000006,34.39033203125001],[78.93642578125,34.35195312500002],[78.97060546875011,34.22822265625004],[78.72666015625006,34.013378906249955],[78.78378906250006,33.80878906250004],[78.86503906250002,33.43110351562501],[78.94843750000004,33.346533203125006],[79.1125,33.22626953125001],[79.13515625000005,33.17192382812496],[79.10283203125007,33.05253906249996],[79.14550781250003,33.00146484375006],[79.16992187500003,32.497216796874994],[78.91894531249997,32.3582031250001],[78.75351562500012,32.49926757812506],[78.73671875,32.55839843750002],[78.49194250885338,32.53122786149202]]]]},"properties":{"name":"","childNum":1}}]}'); +;// CONCATENATED MODULE: ./src/components/Chart/index.js + + + + + + + + + +external_echarts_namespaceObject.registerMap("world", world_namespaceObject); +const Chart = (props) => { + const { + areaStyleColors, + dataLoaded, + hasData, + highlight, + type, + option, + series, + onChange, + zoomStart, + zoomEnd, + title, + seriesConfig = [], + noDataComponent = null, + zoomColors + } = props; + const [tykChartInstance, setTykChartInstance] = (0,external_react_namespaceObject.useState)(null); + const chartWrapperRef = (0,external_react_namespaceObject.useRef)(null); + const onResize = () => { + if (tykChartInstance) { + tykChartInstance.resize(); + } + }; + const lineBarChart = { + defaultOpts: (0,external_immutable_namespaceObject.fromJS)({ + title: { + show: true, + text: title, + left: 0 + }, + color: [], + toolbox: { + right: "0", + orient: "horizontal", + itemSize: 15, + showTitle: true, + feature: null + }, + dataZoom: [{ + show: true, + start: 0, + end: 100, + orient: "horizontal", + dataBackground: { + lineStyle: { + color: (zoomColors == null ? void 0 : zoomColors.lineStyle) || "#368493" + }, + areaStyle: { + color: (zoomColors == null ? void 0 : zoomColors.areaStyle) || "#368493" + } + }, + handleStyle: { + color: (zoomColors == null ? void 0 : zoomColors.handleStyle) || "#368493" + }, + textStyle: { + color: (zoomColors == null ? void 0 : zoomColors.textStyle) || "#368493" + }, + borderColor: "transparent", + fillerColor: (zoomColors == null ? void 0 : zoomColors.fillerColor) || "rgba(54, 132, 147, 0.1)" + }], + legend: { + show: false + // data: [], + // right: '1%', + }, + tooltip: { + trigger: "axis", + axisPointer: { + type: "cross" + } + }, + grid: { + left: "1%", + right: "1%", + bottom: "50px", + top: "40px", + containLabel: true + }, + xAxis: { + boundaryGap: false, + type: "category", + splitLine: { + show: true, + lineStyle: { + type: "dotted", + color: "#F0F0F0" + } + }, + axisLine: { + show: false + }, + axisTick: { + show: false + }, + data: [] + }, + yAxis: { + min: "dataMin", + boundaryGap: true, + axisPointer: { + show: true + }, + splitLine: { + lineStyle: { + type: "dotted", + color: "#F0F0F0" + }, + show: true + }, + axisLabel: { + show: true + }, + axisLine: { + show: true + }, + axisTick: { + show: false + }, + type: "value" + }, + textStyle: { + color: "#5a5a68" + }, + series: [], + animationEasing: "elasticOut" + }), + seriesDefault: (0,external_immutable_namespaceObject.fromJS)({ + data: [], + type: "line", + areaStyle: { + opacity: 1, + color: areaStyleColors ? new external_echarts_namespaceObject.graphic.LinearGradient( + 0, + 0, + 1, + 1, + areaStyleColors.map((color, index) => ({ + offset: index, + color + })) + ) : [] + }, + smooth: false, + symbolSize: 7, + name: "" + }) + }; + const pieChart = { + defaultOpts: (0,external_immutable_namespaceObject.fromJS)({ + tooltip: { + trigger: "axis", + formatter: "{b}: {c} ({d}%)" + }, + legend: { + orient: "horizontal", + x: "left", + y: "top", + data: [] + }, + color: [], + series: [] + }), + seriesDefault: (0,external_immutable_namespaceObject.fromJS)({ + type: "pie", + center: [ + "50%", + "55%" + ], + radius: [ + "50%", + "75%" + ], + avoidLabelOverlap: false, + animationType: "scale", + animationEasing: "elasticOut", + labelLine: { + normal: { + show: true, + smooth: 0.2, + length: 6, + length2: 6 + } + }, + data: [] + }) + }; + const geoChart = { + defaultOpts: (0,external_immutable_namespaceObject.fromJS)({ + series: [] + }), + seriesDefault: (0,external_immutable_namespaceObject.fromJS)({ + type: "map", + data: [] + }) + }; + const buildChartOptions = (selectedType, selectedOptions, selectedSeries) => { + let finalOpts = {}; + switch (selectedType) { + case "pie": { + finalOpts = pieChart.defaultOpts.mergeDeep((0,external_immutable_namespaceObject.fromJS)(selectedOptions)).toJS(); + selectedSeries.forEach((entry) => { + finalOpts.series.push(pieChart.seriesDefault.mergeDeep((0,external_immutable_namespaceObject.fromJS)(entry)).toJS()); + }); + break; + } + case "geo": { + finalOpts = geoChart.defaultOpts.mergeDeep((0,external_immutable_namespaceObject.fromJS)(selectedOptions)).toJS(); + selectedSeries.forEach((entry) => { + finalOpts.series.push(geoChart.seriesDefault.mergeDeep((0,external_immutable_namespaceObject.fromJS)(entry)).toJS()); + }); + break; + } + default: { + finalOpts = lineBarChart.defaultOpts.mergeDeep((0,external_immutable_namespaceObject.fromJS)(selectedOptions)).toJS(); + if (Array.isArray(selectedOptions.yAxis)) { + finalOpts.yAxis = selectedOptions.yAxis; + } + selectedSeries.forEach((entry, index) => { + const seriesData = Object.assign( + {}, + lineBarChart.seriesDefault.toJS(), + seriesConfig[index], + entry + ); + finalOpts.series.push(seriesData); + }); + break; + } + } + return finalOpts; + }; + (0,external_react_namespaceObject.useEffect)(() => { + window.addEventListener("resize", onResize); + return () => { + window.removeEventListener("resize", onResize); + }; + }, [tykChartInstance]); + (0,external_react_namespaceObject.useEffect)(() => { + if (!(chartWrapperRef == null ? void 0 : chartWrapperRef.current)) { + return; + } + setTykChartInstance(external_echarts_namespaceObject.init(chartWrapperRef.current)); + return () => { + if (tykChartInstance) { + tykChartInstance.dispose(); + } + }; + }, [chartWrapperRef.current]); + const eventCallBack = (e) => { + if (onChange) { + onChange(e); + } + }; + (0,external_react_namespaceObject.useEffect)(() => { + let debouncedMethod; + if (tykChartInstance) { + debouncedMethod = debounce(eventCallBack, 500); + tykChartInstance.on("dataZoom", debouncedMethod); + tykChartInstance.on("restore", debouncedMethod); + tykChartInstance.on("click", debouncedMethod); + tykChartInstance.on("mousemove", (params) => { + if (params.data) { + tykChartInstance.getZr().setCursorStyle("pointer"); + } + }); + } + return () => { + if (tykChartInstance) { + tykChartInstance.off("dataZoom", debouncedMethod); + tykChartInstance.off("restore", debouncedMethod); + tykChartInstance.off("click", debouncedMethod); + } + }; + }, [tykChartInstance, onChange]); + const prevInstance = hooks_usePrevious(tykChartInstance); + const prevOption = hooks_usePrevious(option); + const prevType = hooks_usePrevious(type); + const prevSeries = hooks_usePrevious(series); + (0,external_react_namespaceObject.useEffect)(() => { + var _a, _b, _c, _d, _e, _f; + if (tykChartInstance && (!((_b = (_a = (0,external_immutable_namespaceObject.fromJS)(prevInstance)) == null ? void 0 : _a.equals) == null ? void 0 : _b.call(_a, (0,external_immutable_namespaceObject.fromJS)(tykChartInstance))) || !((_d = (_c = (0,external_immutable_namespaceObject.fromJS)(prevOption)) == null ? void 0 : _c.equals) == null ? void 0 : _d.call(_c, (0,external_immutable_namespaceObject.fromJS)(option))) || prevType !== type || !((_f = (_e = (0,external_immutable_namespaceObject.fromJS)(prevSeries)).equals) == null ? void 0 : _f.call(_e, (0,external_immutable_namespaceObject.fromJS)(series))))) { + tykChartInstance.clear(); + tykChartInstance.setOption(buildChartOptions(type, option, series)); + tykChartInstance.dispatchAction({ + type: "takeGlobalCursor", + key: "dataZoomSelect", + dataZoomSelectActive: true + }); + } + }, [tykChartInstance, option, series, type]); + (0,external_react_namespaceObject.useEffect)(() => { + if (tykChartInstance && highlight) { + tykChartInstance.dispatchAction({ + type: "highlight", + seriesIndex: highlight.seriesIndex, + dataIndex: highlight.dataIndex + }); + tykChartInstance.dispatchAction({ + type: "showTip", + seriesIndex: highlight.seriesIndex, + dataIndex: highlight.dataIndex + }); + } + }, [highlight]); + const prevZoomStart = hooks_usePrevious(zoomStart); + const prevZoomEnd = hooks_usePrevious(zoomEnd); + (0,external_react_namespaceObject.useEffect)(() => { + if (tykChartInstance && zoomStart !== -1 && zoomEnd !== -1 && (prevZoomStart !== zoomStart || prevZoomEnd !== zoomEnd)) { + tykChartInstance.dispatchAction({ + type: "dataZoom", + startValue: zoomStart, + endValue: zoomEnd + }); + } + }, [zoomStart, zoomEnd]); + const getStyle = () => { + const { style } = props; + const tempStyle = style || {}; + if (!tempStyle.height) { + tempStyle.height = "300px"; + } + if (!tempStyle.width) { + tempStyle.width = "100%"; + } + return tempStyle; + }; + const chartHasData = () => dataLoaded && (hasData === false || hasData === true) ? hasData : true; + const getCssClasses = () => { + const cssClasses = ["tyk-chart"]; + if (!dataLoaded) { + cssClasses.push("tyk-chart--loading-chart"); + } + if (!chartHasData()) { + cssClasses.push("tyk-chart--no-data"); + } + return cssClasses.join(" "); + }; + return /* @__PURE__ */ external_react_default().createElement( + "div", + { className: "tyk-chart__wrapper" }, + !dataLoaded ? /* @__PURE__ */ external_react_default().createElement(components_Loader, null) : null, + /* @__PURE__ */ external_react_default().createElement( + "div", + { + className: getCssClasses(), + style: getStyle(), + ref: chartWrapperRef + } + ), + /* eslint-disable-next-line no-nested-ternary */ + chartHasData() ? null : noDataComponent ? noDataComponent() : /* @__PURE__ */ external_react_default().createElement(components_Message, { theme: "info" }, "No data to display") + ); +}; +Chart.propTypes = { + areaStyleColors: external_prop_types_default().instanceOf(Array), + dataLoaded: (external_prop_types_default()).bool, + hasData: (external_prop_types_default()).bool, + highlight: external_prop_types_default().oneOfType([ + (external_prop_types_default()).number, + (external_prop_types_default()).string, + external_prop_types_default().instanceOf(Array) + ]), + noDataComponent: (external_prop_types_default()).func, + zoomStart: (external_prop_types_default()).number, + zoomEnd: (external_prop_types_default()).number, + zoomColors: external_prop_types_default().instanceOf(Object), + option: external_prop_types_default().instanceOf(Object), + onChange: (external_prop_types_default()).func, + style: external_prop_types_default().instanceOf(Object), + type: (external_prop_types_default()).string, + title: (external_prop_types_default()).string, + series: external_prop_types_default().instanceOf(Array), + seriesConfig: external_prop_types_default().instanceOf(Object) +}; +/* harmony default export */ const components_Chart = ((0,external_react_namespaceObject.memo)(Chart)); + +// EXTERNAL MODULE: ./node_modules/react-dom/client.js +var client = __webpack_require__(745); +;// CONCATENATED MODULE: ./src/components/Toast/js/ToastMessage.js + + + + +const ToastMessage = (props) => { + const { + children, + options, + onClose, + index + } = props; + const opts = Object.assign({ + theme: "success", + delay: 3e3 + }, options); + let timer; + const handleClose = (itemIndex) => { + onClose(itemIndex); + clearTimeout(timer); + }; + hooks_useTimeout(() => handleClose(index), opts.delay); + return /* @__PURE__ */ external_react_default().createElement( + components_Message, + { + className: "tyk-toast__message", + theme: opts.theme, + onClose: () => handleClose(index) + }, + children + ); +}; +ToastMessage.propTypes = { + children: external_prop_types_default().oneOfType([ + (external_prop_types_default()).element, + (external_prop_types_default()).node, + (external_prop_types_default()).string + ]), + options: external_prop_types_default().instanceOf(Object), + onClose: (external_prop_types_default()).func, + index: (external_prop_types_default()).number +}; +/* harmony default export */ const js_ToastMessage = (ToastMessage); + +;// CONCATENATED MODULE: ./src/components/Toast/js/ToastContainer.js +var ToastContainer_defProp = Object.defineProperty; +var ToastContainer_defProps = Object.defineProperties; +var ToastContainer_getOwnPropDescs = Object.getOwnPropertyDescriptors; +var ToastContainer_getOwnPropSymbols = Object.getOwnPropertySymbols; +var ToastContainer_hasOwnProp = Object.prototype.hasOwnProperty; +var ToastContainer_propIsEnum = Object.prototype.propertyIsEnumerable; +var ToastContainer_defNormalProp = (obj, key, value) => key in obj ? ToastContainer_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var ToastContainer_spreadValues = (a, b) => { + for (var prop in b || (b = {})) + if (ToastContainer_hasOwnProp.call(b, prop)) + ToastContainer_defNormalProp(a, prop, b[prop]); + if (ToastContainer_getOwnPropSymbols) + for (var prop of ToastContainer_getOwnPropSymbols(b)) { + if (ToastContainer_propIsEnum.call(b, prop)) + ToastContainer_defNormalProp(a, prop, b[prop]); + } + return a; +}; +var ToastContainer_spreadProps = (a, b) => ToastContainer_defProps(a, ToastContainer_getOwnPropDescs(b)); +var __restKey = (key) => typeof key === "symbol" ? key : key + ""; +var ToastContainer_objRest = (source, exclude) => { + var target = {}; + for (var prop in source) + if (ToastContainer_hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) + target[prop] = source[prop]; + if (source != null && ToastContainer_getOwnPropSymbols) + for (var prop of ToastContainer_getOwnPropSymbols(source)) { + if (exclude.indexOf(prop) < 0 && ToastContainer_propIsEnum.call(source, prop)) + target[prop] = source[prop]; + } + return target; +}; + + + +const ToastContainer = (props) => { + const [messages, setMessages] = (0,external_react_namespaceObject.useState)({}); + const { + notify + } = props; + const updateNotifications = (message, options) => { + const msgID = Math.floor(Math.random() * 1e6); + setMessages((prevMessages) => ToastContainer_spreadProps(ToastContainer_spreadValues({}, prevMessages), { + [msgID]: { + message, + options + } + })); + }; + (0,external_react_namespaceObject.useEffect)(() => { + notify(updateNotifications); + }, [messages]); + const onMessageClosed = (index) => { + const tempMessages = ToastContainer_spreadValues({}, messages); + delete tempMessages[index]; + setMessages((prevMessages) => { + const _a = prevMessages, { [index]: messageToBeRemoved } = _a, restMessages = ToastContainer_objRest(_a, [__restKey(index)]); + return restMessages; + }); + }; + return /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-toast__container" }, Object.keys(messages).map((msgID) => messages[msgID] ? /* @__PURE__ */ external_react_default().createElement( + js_ToastMessage, + { + options: messages[msgID].options, + onClose: onMessageClosed.bind(null, msgID), + index: msgID, + key: msgID + }, + messages[msgID].message + ) : null)); +}; +ToastContainer.propTypes = { + notify: (external_prop_types_default()).func +}; +/* harmony default export */ const js_ToastContainer = (ToastContainer); + +;// CONCATENATED MODULE: ./src/components/Toast/index.js +var Toast_defProp = Object.defineProperty; +var Toast_defProps = Object.defineProperties; +var Toast_getOwnPropDescs = Object.getOwnPropertyDescriptors; +var Toast_getOwnPropSymbols = Object.getOwnPropertySymbols; +var Toast_hasOwnProp = Object.prototype.hasOwnProperty; +var Toast_propIsEnum = Object.prototype.propertyIsEnumerable; +var Toast_defNormalProp = (obj, key, value) => key in obj ? Toast_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var Toast_spreadValues = (a, b) => { + for (var prop in b || (b = {})) + if (Toast_hasOwnProp.call(b, prop)) + Toast_defNormalProp(a, prop, b[prop]); + if (Toast_getOwnPropSymbols) + for (var prop of Toast_getOwnPropSymbols(b)) { + if (Toast_propIsEnum.call(b, prop)) + Toast_defNormalProp(a, prop, b[prop]); + } + return a; +}; +var Toast_spreadProps = (a, b) => Toast_defProps(a, Toast_getOwnPropDescs(b)); +var __publicField = (obj, key, value) => { + Toast_defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); + return value; +}; + + + +class ToastCreator { + constructor() { + __publicField(this, "bindNotify", (fn) => { + this.createNotification = fn; + }); + const el = document.createElement("div"); + el.className = "tyk-toast"; + document.body.appendChild(el); + const root = (0,client/* createRoot */.s)(el); + root.render(/* @__PURE__ */ external_react_default().createElement(js_ToastContainer, { notify: this.bindNotify })); + } + notify(message, options) { + if (this.createNotification) { + this.createNotification(message, options); + } + } + danger(message, options) { + this.notify(message, Toast_spreadProps(Toast_spreadValues({}, options), { theme: "danger" })); + } + success(message, options) { + this.notify(message, Toast_spreadProps(Toast_spreadValues({}, options), { theme: "success" })); + } + warning(message, options) { + this.notify(message, Toast_spreadProps(Toast_spreadValues({}, options), { theme: "warning" })); + } + info(message, options) { + this.notify(message, Toast_spreadProps(Toast_spreadValues({}, options), { theme: "info" })); + } +} +const toast = new ToastCreator(); +/* harmony default export */ const Toast = (toast); + +;// CONCATENATED MODULE: ./src/components/CopyToClipboard/index.js +var CopyToClipboard_defProp = Object.defineProperty; +var CopyToClipboard_getOwnPropSymbols = Object.getOwnPropertySymbols; +var CopyToClipboard_hasOwnProp = Object.prototype.hasOwnProperty; +var CopyToClipboard_propIsEnum = Object.prototype.propertyIsEnumerable; +var CopyToClipboard_defNormalProp = (obj, key, value) => key in obj ? CopyToClipboard_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var CopyToClipboard_spreadValues = (a, b) => { + for (var prop in b || (b = {})) + if (CopyToClipboard_hasOwnProp.call(b, prop)) + CopyToClipboard_defNormalProp(a, prop, b[prop]); + if (CopyToClipboard_getOwnPropSymbols) + for (var prop of CopyToClipboard_getOwnPropSymbols(b)) { + if (CopyToClipboard_propIsEnum.call(b, prop)) + CopyToClipboard_defNormalProp(a, prop, b[prop]); + } + return a; +}; + + + +const CopyToClipboard = (props) => { + const { + display, + copy, + children, + onCopy + } = props; + const txtRef = (0,external_react_namespaceObject.createRef)(); + const handleClick = (0,external_react_namespaceObject.useCallback)(() => { + if (onCopy) { + onCopy(); + } + if (!window.navigator.clipboard) { + txtRef.current.select(); + document.execCommand("copy"); + Toast.notify("copied", { theme: "success" }); + return; + } + window.navigator.clipboard.writeText(copy); + Toast.notify("copied", { theme: "success" }); + }, [onCopy, txtRef]); + return /* @__PURE__ */ external_react_default().createElement(external_react_namespaceObject.Fragment, null, /* @__PURE__ */ external_react_default().createElement(props.element, CopyToClipboard_spreadValues({ onClick: handleClick, onKeyUp: handleClick }, props), children || display), !window.navigator.clipboard ? /* @__PURE__ */ external_react_default().createElement("textarea", { ref: txtRef, className: "tyk-copy-to-clipboard", name: "copy", value: copy }, copy) : null); +}; +CopyToClipboard.propTypes = { + /** Callback function executed after text is copied */ + onCopy: (external_prop_types_default()).func, + /** Text to be copied */ + copy: (external_prop_types_default()).string.isRequired, + /** Text to be displayed */ + display: (external_prop_types_default()).string, + /** Children of custom element if you are using any custom element */ + children: external_prop_types_default().oneOfType([ + (external_prop_types_default()).element, + (external_prop_types_default()).string, + (external_prop_types_default()).object, + (external_prop_types_default()).node + ]) +}; +/* harmony default export */ const components_CopyToClipboard = (CopyToClipboard); + +// EXTERNAL MODULE: external "react-dom" +var external_react_dom_ = __webpack_require__(137); +var external_react_dom_default = /*#__PURE__*/__webpack_require__.n(external_react_dom_); +;// CONCATENATED MODULE: ./src/components/Modal/js/ModalFooter.js + + +function ModalFooter({ children }) { + return /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-modal__footer" }, children); +} +ModalFooter.propTypes = { + children: external_prop_types_default().oneOfType([ + (external_prop_types_default()).element, + (external_prop_types_default()).node, + (external_prop_types_default()).string + ]) +}; +/* harmony default export */ const js_ModalFooter = (ModalFooter); + +;// CONCATENATED MODULE: ./src/components/Modal/js/ModalBody.js + + +function ModalBody({ children }) { + return /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-modal__body" }, children); +} +ModalBody.propTypes = { + children: external_prop_types_default().oneOfType([ + (external_prop_types_default()).element, + (external_prop_types_default()).node, + (external_prop_types_default()).string + ]) +}; +/* harmony default export */ const js_ModalBody = (ModalBody); + +;// CONCATENATED MODULE: ./src/components/Modal/index.js +var Modal_defProp = Object.defineProperty; +var Modal_getOwnPropSymbols = Object.getOwnPropertySymbols; +var Modal_hasOwnProp = Object.prototype.hasOwnProperty; +var Modal_propIsEnum = Object.prototype.propertyIsEnumerable; +var Modal_defNormalProp = (obj, key, value) => key in obj ? Modal_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var Modal_spreadValues = (a, b) => { + for (var prop in b || (b = {})) + if (Modal_hasOwnProp.call(b, prop)) + Modal_defNormalProp(a, prop, b[prop]); + if (Modal_getOwnPropSymbols) + for (var prop of Modal_getOwnPropSymbols(b)) { + if (Modal_propIsEnum.call(b, prop)) + Modal_defNormalProp(a, prop, b[prop]); + } + return a; +}; +var Modal_objRest = (source, exclude) => { + var target = {}; + for (var prop in source) + if (Modal_hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) + target[prop] = source[prop]; + if (source != null && Modal_getOwnPropSymbols) + for (var prop of Modal_getOwnPropSymbols(source)) { + if (exclude.indexOf(prop) < 0 && Modal_propIsEnum.call(source, prop)) + target[prop] = source[prop]; + } + return target; +}; + + + + + + + +function Modal(_a) { + var _b = _a, { + children, + theme = "none", + disableCloseCommands = false, + opened = false, + onClose = () => { + }, + size = "md", + className = "", + showBackdrop = true + } = _b, restProps = Modal_objRest(_b, [ + "children", + "theme", + "disableCloseCommands", + "opened", + "onClose", + "size", + "className", + "showBackdrop" + ]); + const modalClasses = [ + "tyk-modal", + `tyk-modal--theme-${theme}`, + opened && "opened" + ].concat(className.split(" ")).filter(Boolean).join(" "); + const backdropClasses = [ + "tyk-modal__backdrop", + opened && "opened" + ].filter(Boolean).join(" "); + const themeIcon = { + success: "check", + warning: "warning", + danger: "delete" + }[theme]; + return /* @__PURE__ */ external_react_default().createElement((external_react_default()).Fragment, null, external_react_dom_default().createPortal( + /* @__PURE__ */ external_react_default().createElement( + external_react_transition_group_namespaceObject.CSSTransition, + { + in: opened, + timeout: 100, + classNames: "appear" + }, + /* @__PURE__ */ external_react_default().createElement("div", Modal_spreadValues({ className: modalClasses }, restProps), /* @__PURE__ */ external_react_default().createElement("div", { className: `tyk-modal__dialog tyk-modal--${size}` }, /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-modal__content" }, theme !== "none" && /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-modal__theme-header" }, /* @__PURE__ */ external_react_default().createElement(components_Icon, { family: "tykon", type: themeIcon })), children))) + ), + document.querySelector("body") + ), showBackdrop && external_react_dom_default().createPortal( + /* @__PURE__ */ external_react_default().createElement( + external_react_transition_group_namespaceObject.CSSTransition, + { + in: opened, + timeout: 100, + classNames: "fade" + }, + /* @__PURE__ */ external_react_default().createElement( + "button", + { + className: backdropClasses, + onClick: () => !disableCloseCommands && onClose(), + onKeyDown: () => { + }, + type: "button", + "aria-label": "Close" + } + ) + ), + document.querySelector("body") + )); +} +Modal.Body = js_ModalBody; +Modal.Footer = js_ModalFooter; +Modal.Header = ({ children }) => { + console.warn("%cModal.Header%c is deprecated.", "font-weight: bold", ""); + return /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-modal__header" }, children); +}; +Modal.Title = ({ children }) => { + console.warn("%cModal.Title%c is deprecated.", "font-weight: bold", ""); + return /* @__PURE__ */ external_react_default().createElement("h4", { className: "tyk-modal__title" }, children); +}; +Modal.propTypes = { + children: external_prop_types_default().oneOfType([ + (external_prop_types_default()).element, + (external_prop_types_default()).node, + (external_prop_types_default()).string + ]), + className: (external_prop_types_default()).string, + /** one of "success", "warning", "danger", "none"; default is "none" */ + theme: (external_prop_types_default()).string, + /** If set on true, the Modal won't close when clicking on the overlay or by pressing ESC key */ + disableCloseCommands: (external_prop_types_default()).bool, + /** If true the Modal will be by default opened */ + opened: (external_prop_types_default()).bool, + /** Callback method when the Modal is closed */ + onClose: (external_prop_types_default()).func, + /** Width of the Moda: md or lg */ + size: (external_prop_types_default()).string, + showBackdrop: (external_prop_types_default()).bool +}; +/* harmony default export */ const components_Modal = (Modal); + +;// CONCATENATED MODULE: ./src/components/Confirm/index.js + + + + +function Confirm(props) { + const { + children, + title, + description, + confirmBtnText = "Confirm", + cancelBtnText = "Cancel" + } = props; + const [open, setOpen] = (0,external_react_namespaceObject.useState)(false); + const [callback, setCallback] = (0,external_react_namespaceObject.useState)(null); + const [cancelCallback, setCancelCallback] = (0,external_react_namespaceObject.useState)(null); + const show = (callbackFunc, cancelCallbackFunc, beforeCallback) => (...args) => { + if (beforeCallback) { + beforeCallback(...args); + } + setOpen(true); + setCallback(() => () => callbackFunc(...args)); + if (cancelCallbackFunc) { + setCancelCallback(() => () => cancelCallbackFunc(...args)); + } + }; + const hide = () => { + setOpen(false); + setCallback(null); + setCancelCallback(null); + }; + const cancel = () => { + if (cancelCallback) { + cancelCallback(); + } + hide(); + }; + const confirm = () => { + callback(); + hide(); + }; + return /* @__PURE__ */ external_react_default().createElement((external_react_default()).Fragment, null, children(show), /* @__PURE__ */ external_react_default().createElement( + components_Modal, + { + opened: open, + onClose: cancel + }, + /* @__PURE__ */ external_react_default().createElement(components_Modal.Body, null, /* @__PURE__ */ external_react_default().createElement("h4", null, title), description), + /* @__PURE__ */ external_react_default().createElement(components_Modal.Footer, null, /* @__PURE__ */ external_react_default().createElement( + components_Button, + { + onClick: cancel, + theme: "default" + }, + cancelBtnText + ), /* @__PURE__ */ external_react_default().createElement( + components_Button, + { + onClick: confirm, + theme: "success" + }, + confirmBtnText + )) + )); +} +Confirm.propTypes = { + /** Sets the text for primary / confirmation button on opened modal */ + confirmBtnText: (external_prop_types_default()).string, + /** Sets the text for danger / abort button on opened modal */ + cancelBtnText: (external_prop_types_default()).string, + /** Sets the title for the opened modal */ + title: (external_prop_types_default()).string, + /** Sets the description for the opened modal */ + description: (external_prop_types_default()).string, + children: external_prop_types_default().oneOfType([ + (external_prop_types_default()).element, + (external_prop_types_default()).string, + (external_prop_types_default()).object, + (external_prop_types_default()).node, + (external_prop_types_default()).func + ]) +}; +/* harmony default export */ const components_Confirm = (Confirm); + +;// CONCATENATED MODULE: ./src/components/FixedWrapper/index.js + + + +function FixedWrapper({ children, className, showShadow }) { + const fixedWrapperRef = (0,external_react_namespaceObject.useRef)(null); + const attachShadow = (0,external_react_namespaceObject.useCallback)(() => { + const element = fixedWrapperRef.current; + if (!element) { + return; + } + if (window.scrollY) { + element.classList.add("tyk-fixed-wrapper--scrolled"); + } else { + element.classList.remove("tyk-fixed-wrapper--scrolled"); + } + }, [fixedWrapperRef.current]); + const debouncedAttachShadow = (0,external_react_namespaceObject.useCallback)(debounce(attachShadow, 100), [attachShadow]); + (0,external_react_namespaceObject.useEffect)(() => { + if (showShadow) { + window.addEventListener("scroll", debouncedAttachShadow); + } + return () => { + window.removeEventListener("scroll", debouncedAttachShadow); + }; + }, [debouncedAttachShadow, showShadow]); + return /* @__PURE__ */ external_react_default().createElement("div", { className: `tyk-fixed-wrapper ${className}`, ref: fixedWrapperRef }, children); +} +FixedWrapper.propTypes = { + children: external_prop_types_default().oneOfType([ + (external_prop_types_default()).element, + (external_prop_types_default()).node, + (external_prop_types_default()).string + ]), + /** Css classes that can be passed to the FixedWraper element */ + className: (external_prop_types_default()).string, + /** If true, bottom shadow on the FixedWrapper component + * is being displayed when scroll happens + */ + showShadow: (external_prop_types_default()).bool +}; +FixedWrapper.defaultProps = { + className: "" +}; +/* harmony default export */ const components_FixedWrapper = (FixedWrapper); + +;// CONCATENATED MODULE: ./src/components/InfiniteScroller/index.js + + + + + +function InfiniteScroller({ + children, + hasMore, + initialLoad, + loadMore, + pageNumber, + refChild +}) { + const [showLoader, setShowLoader] = (0,external_react_namespaceObject.useState)(false); + const containerRef = (0,external_react_namespaceObject.useRef)(null); + const refChildSize = hooks_useComponentSize(refChild); + (0,external_react_namespaceObject.useEffect)(() => { + if (initialLoad && typeof loadMore === "function") { + setShowLoader(false); + loadMore(pageNumber); + } + }, [initialLoad]); + const shouldLoad = (0,external_react_namespaceObject.useCallback)(() => { + if (!containerRef.current) + return false; + const { clientHeight, scrollTop } = containerRef.current; + return hasMore && (clientHeight + Math.round(scrollTop) === refChildSize.height || clientHeight >= refChildSize.height); + }, [containerRef, refChildSize.height]); + const loadMoreData = (0,external_react_namespaceObject.useCallback)(() => { + if (hasMore && typeof loadMore === "function") { + loadMore(pageNumber + 1); + setShowLoader(true); + } else { + setShowLoader(false); + } + }, [hasMore, pageNumber]); + const prevPageNumber = hooks_usePrevious(pageNumber); + const scrollHandler = (0,external_react_namespaceObject.useCallback)(debounce(() => { + if (shouldLoad() && prevPageNumber <= pageNumber) { + loadMoreData(); + } + }, 200), [loadMoreData, shouldLoad]); + (0,external_react_namespaceObject.useEffect)(() => { + var _a; + (_a = containerRef.current) == null ? void 0 : _a.addEventListener("scroll", scrollHandler); + return () => { + var _a2; + return (_a2 = containerRef.current) == null ? void 0 : _a2.removeEventListener("scroll", scrollHandler); + }; + }, [containerRef, scrollHandler]); + (0,external_react_namespaceObject.useEffect)(() => { + if (prevPageNumber > 0 && pageNumber === 0) { + containerRef.current.scrollTop = 0; + } + }, [containerRef, pageNumber]); + const prevRefChildSize = hooks_usePrevious(refChildSize); + (0,external_react_namespaceObject.useEffect)(() => { + if (refChildSize && prevRefChildSize && refChildSize.height !== prevRefChildSize.height && showLoader === true) { + setShowLoader(false); + } + }, [showLoader, refChildSize.height]); + (0,external_react_namespaceObject.useEffect)(() => { + if (refChild && refChildSize.height < containerRef.current.clientHeight && refChildSize.height && hasMore) { + loadMoreData(); + } + }, [containerRef, refChildSize, refChild, hasMore]); + return /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-infinite-scroller" }, /* @__PURE__ */ external_react_default().createElement( + "div", + { + className: "tyk-infinite-scroller__wrapper", + ref: containerRef + }, + children + ), showLoader && /* @__PURE__ */ external_react_default().createElement(components_Loader, { position: "absolute" })); +} +InfiniteScroller.propTypes = { + children: external_prop_types_namespaceObject.PropTypes.oneOfType([ + external_prop_types_namespaceObject.PropTypes.arrayOf(external_prop_types_namespaceObject.PropTypes.node), + external_prop_types_namespaceObject.PropTypes.node, + external_prop_types_namespaceObject.PropTypes.element, + external_prop_types_namespaceObject.PropTypes.string + ]), + hasMore: external_prop_types_namespaceObject.PropTypes.bool, + initialLoad: external_prop_types_namespaceObject.PropTypes.bool, + pageNumber: external_prop_types_namespaceObject.PropTypes.number, + loadMore: external_prop_types_namespaceObject.PropTypes.func, + refChild: external_prop_types_namespaceObject.PropTypes.instanceOf(Object) +}; +InfiniteScroller.defaultProps = { + hasMore: true +}; +/* harmony default export */ const components_InfiniteScroller = (InfiniteScroller); + +;// CONCATENATED MODULE: ./src/components/FloatingContainer/index.js +var FloatingContainer_defProp = Object.defineProperty; +var FloatingContainer_getOwnPropSymbols = Object.getOwnPropertySymbols; +var FloatingContainer_hasOwnProp = Object.prototype.hasOwnProperty; +var FloatingContainer_propIsEnum = Object.prototype.propertyIsEnumerable; +var FloatingContainer_defNormalProp = (obj, key, value) => key in obj ? FloatingContainer_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var FloatingContainer_spreadValues = (a, b) => { + for (var prop in b || (b = {})) + if (FloatingContainer_hasOwnProp.call(b, prop)) + FloatingContainer_defNormalProp(a, prop, b[prop]); + if (FloatingContainer_getOwnPropSymbols) + for (var prop of FloatingContainer_getOwnPropSymbols(b)) { + if (FloatingContainer_propIsEnum.call(b, prop)) + FloatingContainer_defNormalProp(a, prop, b[prop]); + } + return a; +}; + + + + +function FloatingContainer({ + element, + size = "auto", + forceDisplay = "auto", + displayAxis = "auto", + preferredPosition, + offset = 0, + className, + children, + infiniteScrollerConfig +}, ref) { + const localRef = (0,external_react_namespaceObject.useRef)(null); + const floatingContainerRef = ref || localRef; + const contentWrapperRef = (0,external_react_namespaceObject.useRef)(null); + function determineDisplay() { + const target = element.current; + const container = floatingContainerRef.current; + if (!container) + return (preferredPosition != null ? preferredPosition : displayAxis === "vertical") ? "bottom" : "right"; + const { left, top } = target.getBoundingClientRect(); + const topSpace = top; + const bottomSpace = window.innerHeight - top - target.offsetHeight; + const leftSpace = left; + const rightSpace = window.innerWidth - left - target.offsetWidth; + const hasTopSpace = topSpace > container.scrollHeight; + const hasBottomSpace = bottomSpace > container.scrollHeight; + const hasLeftSpace = leftSpace > container.offsetWidth; + const hasRightSpace = rightSpace > container.offsetWidth; + const positionedVerticallyFitsInViewport = left + target.offsetWidth / 2 - container.offsetWidth / 2 > 0; + const positionedHorizontallyFitsInViewport = top + target.offsetHeight / 2 - container.scrollHeight / 2 > 0; + if (displayAxis === "vertical" || displayAxis === "auto" && (hasTopSpace || hasBottomSpace) && positionedVerticallyFitsInViewport) { + if (preferredPosition === "top" && hasTopSpace) + return "top"; + if (preferredPosition === "bottom" && hasBottomSpace) + return "bottom"; + return hasBottomSpace || bottomSpace > topSpace ? "bottom" : "top"; + } + if (displayAxis === "horizontal") { + if (preferredPosition === "left" && hasLeftSpace) + return "left"; + if (preferredPosition === "right" && hasLeftSpace) + return "right"; + return hasRightSpace || rightSpace > leftSpace ? "right" : "left"; + } + if (hasTopSpace && positionedVerticallyFitsInViewport) + return "top"; + if (hasBottomSpace && positionedVerticallyFitsInViewport) + return "bottom"; + if (hasRightSpace && positionedHorizontallyFitsInViewport) + return "right"; + if (hasLeftSpace && positionedHorizontallyFitsInViewport) + return "left"; + return preferredPosition != null ? preferredPosition : "bottom"; + } + function adjustPosition() { + const display = forceDisplay !== "auto" ? forceDisplay : determineDisplay(); + const target = element.current; + const container = floatingContainerRef.current; + if (!target || !container) + return; + const targetPosition = target.getBoundingClientRect(); + if (display === "top") { + const topPos = targetPosition.top - container.offsetHeight - offset; + container.style.top = `${topPos}px`; + container.style.left = size === "auto" ? `${targetPosition.left + target.offsetWidth / 2 - container.offsetWidth / 2}px` : `${targetPosition.left}px`; + if (size === "matchElement") { + container.style.width = `${target.offsetWidth}px`; + } else if (typeof size === "function") { + container.style.width = `${size(target.offsetWidth)}px`; + } + container.style.maxHeight = `${targetPosition.top - offset}px`; + } + if (display === "bottom") { + container.style.top = `${targetPosition.bottom + offset}px`; + container.style.left = size === "auto" ? `${targetPosition.left + target.offsetWidth / 2 - container.offsetWidth / 2}px` : `${targetPosition.left}px`; + if (size === "matchElement") { + container.style.width = `${target.offsetWidth}px`; + } else if (typeof size === "function") { + container.style.width = `${size(target.offsetWidth)}px`; + } + container.style.maxHeight = `${window.innerHeight - targetPosition.bottom - offset}px`; + } + if (display === "left") { + const topPos = targetPosition.top + target.offsetHeight / 2 - container.offsetHeight / 2; + container.style.top = size === "auto" ? `${topPos}px` : `${targetPosition.top}px`; + container.style.left = `${targetPosition.left - container.offsetWidth - offset}px`; + if (size === "matchElement") { + container.style.height = `${target.offsetHeight}px`; + } else if (typeof size === "function") { + container.style.height = `${size(target.offsetHeight)}px`; + } + container.style.maxWidth = `${targetPosition.left - offset}px`; + } + if (display === "right") { + const topPos = targetPosition.top + target.offsetHeight / 2 - container.offsetHeight / 2; + container.style.top = size === "auto" ? `${topPos}px` : `${targetPosition.top}px`; + container.style.left = `${targetPosition.left + target.offsetWidth + offset}px`; + if (size === "matchElement") { + container.style.height = `${target.offsetHeight}px`; + } else if (typeof size === "function") { + container.style.height = `${size(target.offsetHeight)}px`; + } + container.style.maxWidth = `${window.innerWidth - targetPosition.left - target.offsetWidth - offset}px`; + } + } + (0,external_react_namespaceObject.useEffect)(() => { + window.requestAnimationFrame(function schedulePositionUpdate() { + adjustPosition(); + window.requestAnimationFrame(schedulePositionUpdate); + }); + }, []); + return (0,external_react_dom_.createPortal)( + /* @__PURE__ */ external_react_default().createElement( + "div", + { + className: `floating-container ${className || ""}`, + ref: floatingContainerRef + }, + /* @__PURE__ */ external_react_default().createElement( + components_InfiniteScroller, + FloatingContainer_spreadValues({ + refChild: contentWrapperRef + }, infiniteScrollerConfig), + /* @__PURE__ */ external_react_default().createElement( + "div", + { + className: "floating-container__content-wrapper", + ref: contentWrapperRef + }, + children + ) + ) + ), + document.querySelector("body") + ); +} +FloatingContainer.propTypes = { + /** A DOM element that the floating container will be displayed relative to. */ + element: external_prop_types_default().instanceOf(Object), + className: (external_prop_types_default()).string, + /** The size of the container. + * If `auto` the size will be determined by its contents. + * If `matchElement` it will take the width or the height of the element depending + * on the `displayAxis` prop. + * It can also be a function that returns a number representing the width + * or the height in pixels. + */ + size: external_prop_types_default().oneOfType([ + external_prop_types_default().oneOf(["auto", "matchElement"]), + (external_prop_types_default()).func + ]), + /** + * The distance between the element and the floating container. + * It can be positive or negative. + */ + offset: (external_prop_types_default()).number, + /** + * If `auto` the component will try to determine where to display the container relative to the + * element (top, bottom, left, right). + * It can also be one of top, bottom, left, right, to force the floating container to always be + * displayed in that position. + */ + forceDisplay: external_prop_types_default().oneOf(["auto", "top", "bottom", "left", "right"]), + /** + * It can be `auto`, `vertical` or `horizontal`. It specifies the axis where + * it will be displayed when `forceDisplay` is `auto`. + */ + displayAxis: external_prop_types_default().oneOf(["auto", "vertical", "horizontal"]), + /** + * If there is space on both sides of the axis preffer this side. + */ + preferredPosition: external_prop_types_default().oneOf(["top", "bottom", "left", "right"]), + /** + * Configuration object that will be passed to the infinite scroller component. + */ + infiniteScrollerConfig: external_prop_types_default().instanceOf(Object) +}; +/* harmony default export */ const components_FloatingContainer = ((0,external_react_namespaceObject.forwardRef)(FloatingContainer)); + +;// CONCATENATED MODULE: ./src/components/InfoNote/index.js + + + +function InfoNote({ children }) { + return /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-info-note" }, /* @__PURE__ */ external_react_default().createElement(components_Message, { theme: "info" }, children)); +} +InfoNote.propTypes = { + children: external_prop_types_default().oneOfType([ + (external_prop_types_default()).element, + (external_prop_types_default()).node, + (external_prop_types_default()).string + ]) +}; +/* harmony default export */ const components_InfoNote = (InfoNote); + +;// CONCATENATED MODULE: ./src/components/List/js/ListItem.js + + +const ListItem = (props) => { + const { + className, + children + } = props; + return /* @__PURE__ */ external_react_default().createElement("li", { className }, children); +}; +ListItem.propTypes = { + children: external_prop_types_default().oneOfType([ + external_prop_types_default().arrayOf((external_prop_types_default()).node), + (external_prop_types_default()).node, + (external_prop_types_default()).element, + (external_prop_types_default()).string + ]), + className: (external_prop_types_default()).string +}; +ListItem.defaultProps = { + className: "" +}; +/* harmony default export */ const js_ListItem = (ListItem); + +;// CONCATENATED MODULE: ./src/components/List/index.js + + + + +const List = (props) => { + const { + className, + children, + label, + labelwidth, + theme, + style + } = props; + const getCssClasses = () => { + let cssClasses = ["tyk-list"]; + if (theme) { + cssClasses.push(`tyk-list--${theme}`); + } + if (className) { + cssClasses = cssClasses.concat(className.split(" ")); + } + return cssClasses.join(" "); + }; + const getListStyle = () => { + const styleCopy = (0,external_immutable_namespaceObject.fromJS)(style).toJS(); + if (labelwidth) { + styleCopy.flexBasis = `calc(100% - ${labelwidth} - 20px)`; + } + return styleCopy; + }; + return /* @__PURE__ */ external_react_default().createElement("div", { className: `tyk-list__wrapper ${labelwidth ? "tyk-list--with-inline-label" : ""}` }, label !== void 0 ? /* @__PURE__ */ external_react_default().createElement( + "label", + { + style: { + flexBasis: labelwidth || "auto" + } + }, + label + ) : null, /* @__PURE__ */ external_react_default().createElement("ul", { className: getCssClasses(), style: getListStyle() }, children)); +}; +List.propTypes = { + children: external_prop_types_default().oneOfType([ + external_prop_types_default().arrayOf((external_prop_types_default()).node), + (external_prop_types_default()).node, + (external_prop_types_default()).element, + (external_prop_types_default()).string + ]), + className: (external_prop_types_default()).string, + label: (external_prop_types_default()).string, + labelwidth: (external_prop_types_default()).string, + theme: (external_prop_types_default()).string, + style: external_prop_types_default().instanceOf(Object) +}; +List.defaultProps = { + theme: "default", + style: {} +}; +List.Item = js_ListItem; +/* harmony default export */ const components_List = (List); + +;// CONCATENATED MODULE: ./src/components/NavBar/index.js + + +function NavBar({ + align = "center", + children, + left, + right, + title, + pre, + subtitle, + withTabs +}) { + const subtitleContent = subtitle ? /* @__PURE__ */ external_react_default().createElement("p", { className: "font-family-medium" }, subtitle) : null; + return /* @__PURE__ */ external_react_default().createElement("section", { className: `tyk-nav-bar ${withTabs ? "tyk-nav-bar__with-tabs" : ""}` }, /* @__PURE__ */ external_react_default().createElement("div", { className: `tyk-nav-bar__wrapper tyk-nav-bar--align-${align}` }, pre && /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-nav-bar__pre" }, pre), title ? /* @__PURE__ */ external_react_default().createElement("div", null, /* @__PURE__ */ external_react_default().createElement("h1", null, title), subtitleContent) : subtitleContent, /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-nav-bar__container" }, left && /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-nav-bar__left" }, left), right && /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-nav-bar__right" }, right))), children); +} +NavBar.propTypes = { + align: (external_prop_types_default()).string, + children: external_prop_types_default().oneOfType([ + external_prop_types_default().arrayOf((external_prop_types_default()).node), + (external_prop_types_default()).node, + (external_prop_types_default()).element, + (external_prop_types_default()).string + ]), + title: (external_prop_types_default()).string, + subtitle: (external_prop_types_default()).string, + pre: external_prop_types_default().oneOfType([ + (external_prop_types_default()).element, + (external_prop_types_default()).node + ]), + left: external_prop_types_default().oneOfType([ + (external_prop_types_default()).element, + (external_prop_types_default()).node + ]), + right: external_prop_types_default().oneOfType([ + (external_prop_types_default()).element, + (external_prop_types_default()).node + ]), + withTabs: (external_prop_types_default()).bool +}; +/* harmony default export */ const components_NavBar = (NavBar); + +;// CONCATENATED MODULE: ./src/components/Navigation/js/NavigationItem.js + + +function NavigationItem({ children }) { + return /* @__PURE__ */ external_react_default().createElement("li", { className: "tyk-navigation-item" }, children); +} +NavigationItem.propTypes = { + children: external_prop_types_default().oneOfType([ + external_prop_types_default().arrayOf((external_prop_types_default()).node), + (external_prop_types_default()).node, + (external_prop_types_default()).element, + (external_prop_types_default()).string + ]) +}; +/* harmony default export */ const js_NavigationItem = (NavigationItem); + +;// CONCATENATED MODULE: ./src/components/Navigation/index.js + + + +function Navigation({ children }) { + return /* @__PURE__ */ external_react_default().createElement("ul", { className: "tyk-navigation" }, children); +} +Navigation.propTypes = { + children: external_prop_types_default().oneOfType([ + external_prop_types_default().arrayOf((external_prop_types_default()).node), + (external_prop_types_default()).node, + (external_prop_types_default()).element, + (external_prop_types_default()).string + ]) +}; +Navigation.Item = js_NavigationItem; +/* harmony default export */ const components_Navigation = (Navigation); + +;// CONCATENATED MODULE: ./src/components/Panel/panel-context.js + +const PortalContext = (0,external_react_namespaceObject.createContext)(); + +;// CONCATENATED MODULE: ./src/components/Panel/js/PanelBody.js +var PanelBody_defProp = Object.defineProperty; +var PanelBody_defProps = Object.defineProperties; +var PanelBody_getOwnPropDescs = Object.getOwnPropertyDescriptors; +var PanelBody_getOwnPropSymbols = Object.getOwnPropertySymbols; +var PanelBody_hasOwnProp = Object.prototype.hasOwnProperty; +var PanelBody_propIsEnum = Object.prototype.propertyIsEnumerable; +var PanelBody_defNormalProp = (obj, key, value) => key in obj ? PanelBody_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var PanelBody_spreadValues = (a, b) => { + for (var prop in b || (b = {})) + if (PanelBody_hasOwnProp.call(b, prop)) + PanelBody_defNormalProp(a, prop, b[prop]); + if (PanelBody_getOwnPropSymbols) + for (var prop of PanelBody_getOwnPropSymbols(b)) { + if (PanelBody_propIsEnum.call(b, prop)) + PanelBody_defNormalProp(a, prop, b[prop]); + } + return a; +}; +var PanelBody_spreadProps = (a, b) => PanelBody_defProps(a, PanelBody_getOwnPropDescs(b)); +var PanelBody_objRest = (source, exclude) => { + var target = {}; + for (var prop in source) + if (PanelBody_hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) + target[prop] = source[prop]; + if (source != null && PanelBody_getOwnPropSymbols) + for (var prop of PanelBody_getOwnPropSymbols(source)) { + if (exclude.indexOf(prop) < 0 && PanelBody_propIsEnum.call(source, prop)) + target[prop] = source[prop]; + } + return target; +}; + + + + +function PanelBody(_a) { + var _b = _a, { + children, + noPadding, + className + } = _b, rest = PanelBody_objRest(_b, [ + "children", + "noPadding", + "className" + ]); + const getCssClasses = (0,external_react_namespaceObject.useCallback)( + () => [ + "tyk-panel__body", + className, + noPadding && "no-padding" + ].filter(Boolean).join(" "), + [className, noPadding] + ); + return /* @__PURE__ */ external_react_default().createElement(PortalContext.Consumer, null, (portalContext) => portalContext.collapsable ? /* @__PURE__ */ external_react_default().createElement( + components_Collapsible, + PanelBody_spreadProps(PanelBody_spreadValues({}, rest), { + collapsed: portalContext.collapsed, + className: getCssClasses() + }), + children + ) : /* @__PURE__ */ external_react_default().createElement( + "div", + PanelBody_spreadProps(PanelBody_spreadValues({}, rest), { + className: getCssClasses() + }), + children + )); +} +PanelBody.propTypes = { + children: external_prop_types_default().oneOfType([ + (external_prop_types_default()).element, + (external_prop_types_default()).node, + (external_prop_types_default()).string + ]), + noPadding: (external_prop_types_default()).bool, + className: (external_prop_types_default()).string +}; +/* harmony default export */ const js_PanelBody = (PanelBody); + +;// CONCATENATED MODULE: ./src/components/Panel/js/PanelFooter.js + + +const PanelFooter = (props) => { + const { children } = props; + return /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-panel__footer" }, children); +}; +PanelFooter.propTypes = { + children: external_prop_types_default().oneOfType([ + (external_prop_types_default()).element, + (external_prop_types_default()).node, + (external_prop_types_default()).string + ]) +}; +/* harmony default export */ const js_PanelFooter = (PanelFooter); + +;// CONCATENATED MODULE: ./src/components/Panel/js/PanelHeader.js +var PanelHeader_defProp = Object.defineProperty; +var PanelHeader_defNormalProp = (obj, key, value) => key in obj ? PanelHeader_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var PanelHeader_publicField = (obj, key, value) => { + PanelHeader_defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); + return value; +}; + + + + +class PanelHeader extends external_react_namespaceObject.Component { + getCssClasses(props) { + const { className } = this.props; + let cssClasses = ["tyk-panel__header"]; + if (props.collapsable) { + cssClasses.push("collapsable"); + } + if (className) { + cssClasses = cssClasses.concat(className.split(" ")); + } + return cssClasses.join(" "); + } + render() { + const { + children + } = this.props; + return /* @__PURE__ */ external_react_default().createElement(PortalContext.Consumer, null, (portalContext) => { + const HeaderTag = portalContext.theme === "blank" ? "h3" : "div"; + const iconType = portalContext.collapsed ? "chevron-down" : "chevron-up"; + return /* @__PURE__ */ external_react_default().createElement( + HeaderTag, + { + className: this.getCssClasses(portalContext), + onClick: portalContext.collapsable ? portalContext.onToggle : void 0 + }, + children, + portalContext.collapsable ? /* @__PURE__ */ external_react_default().createElement("div", { className: `collapsable__arrow-${portalContext.collapsibleIconPosition}` }, /* @__PURE__ */ external_react_default().createElement(components_Icon, { type: iconType })) : null + ); + }); + } +} +PanelHeader_publicField(PanelHeader, "propTypes", { + children: external_prop_types_default().oneOfType([ + (external_prop_types_default()).element, + (external_prop_types_default()).node, + (external_prop_types_default()).string + ]).isRequired, + className: (external_prop_types_default()).string +}); + +;// CONCATENATED MODULE: ./src/components/Panel/index.js + + + + + + +const Panel = (props) => { + const { + children, + className, + collapsed, + collapsable, + theme, + onToggleCollapse, + collapsibleIconPosition = "right" + } = props; + const [collapsedState, setCollapsedState] = (0,external_react_namespaceObject.useState)(collapsed || false); + (0,external_react_namespaceObject.useEffect)(() => { + if (collapsed !== collapsedState) { + setCollapsedState(collapsed); + } + }, [collapsed]); + const getCssClasses = () => { + let cssClasses = ["tyk-panel"]; + const panelTheme = `tyk-panel--${theme || "default"}`; + const collapsbleIconPosition = `tyk-panel__icon-collapse--${collapsibleIconPosition}`; + cssClasses.push(panelTheme); + cssClasses.push(collapsbleIconPosition); + if (className) { + cssClasses = cssClasses.concat(className.split(" ")); + } + if (collapsedState) { + cssClasses.push("tyk-panel--collapsed"); + } + return cssClasses.join(" "); + }; + const handleToggle = () => { + setCollapsedState(!collapsedState); + if (onToggleCollapse) { + onToggleCollapse(!collapsedState); + } + }; + return /* @__PURE__ */ external_react_default().createElement("div", { className: getCssClasses() }, /* @__PURE__ */ external_react_default().createElement( + PortalContext.Provider, + { + value: { + collapsable, + collapsed: collapsedState, + onToggle: handleToggle, + theme, + collapsibleIconPosition + } + }, + typeof children === "function" ? children({ + toggleCollapse: handleToggle + }) : children + )); +}; +Panel.propTypes = { + children: external_prop_types_default().oneOfType([ + (external_prop_types_default()).func, + (external_prop_types_default()).element, + (external_prop_types_default()).node, + (external_prop_types_default()).string + ]), + className: (external_prop_types_default()).string, + collapsable: (external_prop_types_default()).bool, + collapsibleIconPosition: (external_prop_types_default()).string, + collapsed: (external_prop_types_default()).bool, + theme: (external_prop_types_default()).string, + onToggleCollapse: (external_prop_types_default()).func +}; +Panel.Body = js_PanelBody; +Panel.Footer = js_PanelFooter; +Panel.Header = PanelHeader; +/* harmony default export */ const components_Panel = (Panel); + +;// CONCATENATED MODULE: ./src/components/Pill/index.js + + +const Pill = (props) => { + const { + children, + className, + theme + } = props; + const getCssClasses = () => { + let cssClasses = ["tyk-pill", ...theme.split(" ").map((t) => `tyk-pill--${t}`)]; + if (className) { + cssClasses = cssClasses.concat(className); + } + return cssClasses.join(" "); + }; + return /* @__PURE__ */ external_react_default().createElement("div", { className: getCssClasses() }, children); +}; +Pill.propTypes = { + children: external_prop_types_default().oneOfType([ + external_prop_types_default().arrayOf((external_prop_types_default()).node), + (external_prop_types_default()).node, + (external_prop_types_default()).element, + (external_prop_types_default()).string + ]), + /** Css classes that can be passed to the Pill element */ + className: (external_prop_types_default()).string, + /** Theme that can be applied to a Pill */ + theme: (external_prop_types_default()).string +}; +Pill.defaultProps = { + theme: "default" +}; +/* harmony default export */ const components_Pill = (Pill); + +;// CONCATENATED MODULE: ./src/components/RevealPanel/js/RevealPanelService.js +var __accessCheck = (obj, member, msg) => { + if (!member.has(obj)) + throw TypeError("Cannot " + msg); +}; +var __privateGet = (obj, member, getter) => { + __accessCheck(obj, member, "read from private field"); + return getter ? getter.call(obj) : member.get(obj); +}; +var __privateAdd = (obj, member, value) => { + if (member.has(obj)) + throw TypeError("Cannot add the same private member more than once"); + member instanceof WeakSet ? member.add(obj) : member.set(obj, value); +}; +var __privateSet = (obj, member, value, setter) => { + __accessCheck(obj, member, "write to private field"); + setter ? setter.call(obj, value) : member.set(obj, value); + return value; +}; +var _state, _panel, _gutter, _wrapper, _onHeightChangeCallbacks, _onDragStartCallbacks, _onDragEndCallbacks, _dragStarted; + +class RevealPanelService { + constructor() { + __privateAdd(this, _state, null); + // Private state for mouse interactions. + __privateAdd(this, _panel, null); + // The panel element to be resized. + __privateAdd(this, _gutter, null); + // The gutter element used for resizing. + __privateAdd(this, _wrapper, null); + // The wrapper element that contains the panel and gutter. + __privateAdd(this, _onHeightChangeCallbacks, []); + // Callback function to be executed when the panel is resized. + __privateAdd(this, _onDragStartCallbacks, []); + // Callback function to be executed when the panel is resized. + __privateAdd(this, _onDragEndCallbacks, []); + // Callback function to be executed when the panel is resized. + __privateAdd(this, _dragStarted, false); + } + /** + * Sets a callback function to be executed when the panel is resized. + * @param {function} callback - The callback function to be called on panel resize. + */ + on(eventName, listener) { + let list = null; + if (eventName === "onHeightChange") { + list = __privateGet(this, _onHeightChangeCallbacks); + } else if (eventName === "onDragStart") { + list = __privateGet(this, _onDragStartCallbacks); + } else if (eventName === "onDragEnd") { + list = __privateGet(this, _onDragEndCallbacks); + } + if (list) { + this.addListener(list, listener); + } + } + off(eventName, listener) { + let list = null; + if (eventName === "onHeightChange") { + list = __privateGet(this, _onHeightChangeCallbacks); + } else if (eventName === "onDragStart") { + list = __privateGet(this, _onDragStartCallbacks); + } else if (eventName === "onDragEnd") { + list = __privateGet(this, _onDragEndCallbacks); + } + if (list) { + this.removeListener(list, listener); + } + } + /** + * Sets the panel, gutter, and wrapper elements to be controlled by this class. + * @param {HTMLElement} wrapper - The wrapper element containing the panel and gutter. + * @param {HTMLElement} panel - The panel element to be resized. + * @param {HTMLElement} gutter - The gutter element used for resizing. + */ + setRefs(wrapper, panel, gutter) { + if (__privateGet(this, _panel) || __privateGet(this, _gutter) || __privateGet(this, _wrapper)) { + this.unbindEvents(); + } + __privateSet(this, _wrapper, wrapper); + __privateSet(this, _panel, panel); + __privateSet(this, _gutter, gutter); + __privateSet(this, _state, null); + this.bindEvents(); + } + /** + * Attaches event listeners for panel resizing. + */ + bindEvents() { + this.ensureRefs("bindEvents"); + __privateGet(this, _gutter).addEventListener("mousedown", this.onMouseDown.bind(this)); + document.addEventListener("mousemove", this.onMouseMove.bind(this)); + document.addEventListener("mouseup", this.onMouseUp.bind(this)); + } + /** + * Gets the current height of the panel. + * @returns {number} - The height of the panel in pixels. + */ + getHeight() { + this.ensureRefs("getHeight"); + const size = __privateGet(this, _panel).getBoundingClientRect(); + return size.height; + } + /** + * Handles the mouse down event, initiating the resizing process. + * @param {MouseEvent} e - The mouse event object. + */ + onMouseDown(e) { + this.ensureRefs("onMouseDown"); + __privateSet(this, _state, { + mouseDown: true, + initialRect: __privateGet(this, _panel).getBoundingClientRect(), + initialEvent: e + }); + } + /** + * Handles the mouse move event, adjusting the panel's height during resizing. + * @param {MouseEvent} e - The mouse event object. + */ + onMouseMove(e) { + this.ensureRefs("onMouseMove"); + if (!__privateGet(this, _state)) { + return; + } + const isButtonDown = this.isPrimaryMouseButtonDown(e); + if (!isButtonDown) { + this.onMouseUp(); + return; + } + if (!__privateGet(this, _dragStarted)) { + __privateSet(this, _dragStarted, true); + this.onDragStart.bind(this)(); + } + const newY = __privateGet(this, _state).initialEvent.y - e.y; + const finalHeight = Math.ceil(__privateGet(this, _state).initialRect.height + newY); + this.setHeight(`${finalHeight}px`, "mousemove"); + } + // eslint-disable-next-line class-methods-use-this + notifyListeners(list, value) { + if (list && Array.isArray(list) && list.length) { + list.forEach((fn) => { + if (typeof fn === "function") { + fn(value); + } + }); + } + } + // eslint-disable-next-line class-methods-use-this + addListener(list, listener) { + if (list && Array.isArray(list) && typeof listener === "function") { + list.push(listener); + } + } + // eslint-disable-next-line class-methods-use-this + removeListener(list, listener) { + if (list && Array.isArray(list) && typeof listener === "function" && list.length) { + const index = list.indexOf(listener); + if (index > -1) { + list.splice(index, 1); + } + } + } + onDragEnd() { + if (__privateGet(this, _dragStarted)) { + this.notifyListeners(__privateGet(this, _onDragEndCallbacks), this.getHeight()); + } + } + onDragStart() { + this.notifyListeners(__privateGet(this, _onDragStartCallbacks), this.getHeight()); + } + // eslint-disable-next-line class-methods-use-this + isPrimaryMouseButtonDown(e) { + const flags = e.buttons !== void 0 ? e.buttons : e.which; + const isDown = flags === 1; + return isDown; + } + /** + * Resets the state after the mouse up event, ending the resizing process. + */ + onMouseUp() { + __privateSet(this, _state, null); + this.onDragEnd.bind(this)(); + __privateSet(this, _dragStarted, false); + } + /** + * Sets the height of the panel. + * @param {string} height - The new height value as a CSS string (e.g., "100px"). + */ + setHeight(height) { + let heightVal = height; + this.ensureRefs("setHeight"); + if (typeof heightVal === "number") { + heightVal += "px"; + } + __privateGet(this, _panel).style.height = heightVal; + this.notifyListeners(__privateGet(this, _onHeightChangeCallbacks), this.getHeight()); + } + /** + * Ensures that the required elements (wrapper, panel, and gutter) are set. + * Throws an error if they are missing. + */ + ensureRefs(reason) { + if (!__privateGet(this, _panel) || !__privateGet(this, _gutter) || !__privateGet(this, _wrapper)) { + throw new Error( + `${reason}: Wrapper, panel, and gutter elements are required. Use setRefs method first.` + ); + } + } + /** + * Checks if the panel is hidden. + * @returns {boolean} - True if the panel is hidden; false otherwise. + */ + isHidden() { + this.ensureRefs("isHidden"); + return __privateGet(this, _wrapper).style.visibility === "hidden"; + } + /** + * Hides the panel by setting its visibility to "hidden". + */ + hide() { + this.ensureRefs("hide"); + __privateGet(this, _wrapper).style.visibility = "hidden"; + } + /** + * Shows the panel by setting its visibility to "visible". + */ + show() { + this.ensureRefs("show"); + __privateGet(this, _wrapper).style.visibility = "visible"; + } + /** + * Unbinds the event listeners added for resizing. + */ + unbindEvents() { + __privateSet(this, _onHeightChangeCallbacks, []); + __privateSet(this, _onDragStartCallbacks, []); + __privateSet(this, _onDragEndCallbacks, []); + __privateGet(this, _gutter).removeEventListener("mousedown", this.onMouseDown.bind(this)); + document.removeEventListener("mousemove", this.onMouseMove.bind(this)); + document.removeEventListener("mouseup", this.onMouseUp.bind(this)); + } + deinit() { + this.unbindEvents(); + } +} +_state = new WeakMap(); +_panel = new WeakMap(); +_gutter = new WeakMap(); +_wrapper = new WeakMap(); +_onHeightChangeCallbacks = new WeakMap(); +_onDragStartCallbacks = new WeakMap(); +_onDragEndCallbacks = new WeakMap(); +_dragStarted = new WeakMap(); +const useRevealPanelService = () => { + const revealPanelServiceRef = (0,external_react_namespaceObject.useRef)(new RevealPanelService()); + return revealPanelServiceRef.current; +}; + +;// CONCATENATED MODULE: ./src/components/RevealPanel/index.js + + + + +function RevealPanelHeaderLeft({ children }) { + return /* @__PURE__ */ external_react_default().createElement((external_react_default()).Fragment, null, children); +} +RevealPanelHeaderLeft.propTypes = { + children: external_prop_types_default().instanceOf({}) +}; +function RevealPanelHeaderRight({ children }) { + return /* @__PURE__ */ external_react_default().createElement((external_react_default()).Fragment, null, children); +} +RevealPanelHeaderRight.propTypes = { + children: external_prop_types_default().instanceOf({}) +}; +const mergeClasses = (...classNames) => classNames.map((it) => (it || "").trim()).filter(Boolean).join(" "); +const RevealPanel = (0,external_react_namespaceObject.forwardRef)(({ + children, + height, + onHeightChange = null, + onDragStart = null, + onDragEnd = null, + style = null, + parentSelector = null, + contentStyle, + contentClassName, + gutterClassName, + wrapperClassName + // eslint-disable-next-line consistent-return +}, ref) => { + const panelRef = (0,external_react_namespaceObject.useRef)(null); + const gutterRef = (0,external_react_namespaceObject.useRef)(null); + const wrapperRef = (0,external_react_namespaceObject.useRef)(null); + const panelService = useRevealPanelService(); + (0,external_react_namespaceObject.useEffect)(() => { + if (!panelRef.current || !gutterRef.current || !wrapperRef.current) { + return; + } + if (!panelService) { + return; + } + panelService.setRefs(wrapperRef.current, panelRef.current, gutterRef.current); + panelService.on("onHeightChange", onHeightChange); + panelService.on("onDragStart", onDragStart); + panelService.on("onDragEnd", onDragEnd); + panelService.setHeight(height, "initialize"); + return () => { + panelService.unbindEvents(); + }; + }, []); + (0,external_react_namespaceObject.useImperativeHandle)( + ref, + () => { + const bind = (func) => func.bind(panelService); + return { + getHeight: bind(panelService.getHeight), + setHeight: bind(panelService.setHeight), + hide: bind(panelService.hide), + show: bind(panelService.show), + isHidden: bind(panelService.isHidden), + deinit: bind(panelService.deinit), + on: bind(panelService.on), + off: bind(panelService.off) + }; + }, + [] + ); + let headerLeft = null; + let headerRight = null; + const contents = []; + external_react_default().Children.forEach(children, (child) => { + if (child && external_react_default().isValidElement(child)) { + if (child.type === RevealPanelHeaderLeft) { + headerLeft = child; + } else if (child.type === RevealPanelHeaderRight) { + headerRight = child; + } else { + contents.push(child); + } + } + }); + const element = /* @__PURE__ */ external_react_default().createElement("div", { className: mergeClasses("tyk-ui-reveal-wrapper", wrapperClassName || "cem"), ref: wrapperRef, style }, /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-ui-reveal-wrapper__hole" }), /* @__PURE__ */ external_react_default().createElement("div", { ref: gutterRef, className: mergeClasses("tyk-ui-reveal-wrapper__gutter", gutterClassName) }, /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-ui-reveal-wrapper__gutter__headerleft" }, headerLeft), /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-ui-reveal-wrapper__gutter__logo" }, " "), /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-ui-reveal-wrapper__gutter__headerright" }, headerRight)), /* @__PURE__ */ external_react_default().createElement("div", { ref: panelRef, className: mergeClasses("tyk-ui-reveal-wrapper__panel", contentClassName), style: contentStyle }, contents)); + if (parentSelector) { + return (0,external_react_dom_.createPortal)(element, document.querySelector(parentSelector)); + } +}); +RevealPanel.propTypes = { + children: external_prop_types_default().instanceOf({}), + height: (external_prop_types_default()).string, + onHeightChange: (external_prop_types_default()).func, + onDragStart: (external_prop_types_default()).func, + onDragEnd: (external_prop_types_default()).func, + parentSelector: (external_prop_types_default()).string, + style: external_prop_types_default().instanceOf({}), + contentStyle: external_prop_types_default().instanceOf({}), + contentClassName: (external_prop_types_default()).string, + gutterClassName: (external_prop_types_default()).string, + wrapperClassName: (external_prop_types_default()).string +}; +RevealPanel.HeaderLeft = RevealPanelHeaderLeft; +RevealPanel.HeaderRight = RevealPanelHeaderRight; +/* harmony default export */ const components_RevealPanel = (RevealPanel); + +;// CONCATENATED MODULE: ./src/components/Tabs/tabs-context.js + +const TabsContext = (0,external_react_namespaceObject.createContext)(); + +;// CONCATENATED MODULE: ./src/components/Tabs/js/TabContext.js + +/* harmony default export */ const TabContext = ((0,external_react_namespaceObject.createContext)()); + +;// CONCATENATED MODULE: ./src/components/Tabs/js/TabContent.js +var TabContent_defProp = Object.defineProperty; +var TabContent_getOwnPropSymbols = Object.getOwnPropertySymbols; +var TabContent_hasOwnProp = Object.prototype.hasOwnProperty; +var TabContent_propIsEnum = Object.prototype.propertyIsEnumerable; +var TabContent_defNormalProp = (obj, key, value) => key in obj ? TabContent_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var TabContent_spreadValues = (a, b) => { + for (var prop in b || (b = {})) + if (TabContent_hasOwnProp.call(b, prop)) + TabContent_defNormalProp(a, prop, b[prop]); + if (TabContent_getOwnPropSymbols) + for (var prop of TabContent_getOwnPropSymbols(b)) { + if (TabContent_propIsEnum.call(b, prop)) + TabContent_defNormalProp(a, prop, b[prop]); + } + return a; +}; + + + + +const TabContent = (props) => { + const { + addTab, + hideTab, + updateTab, + showTab, + children, + selectedPath, + tabData, + tabsId, + tabExists, + path, + rendered, + hideTabContent, + tabs + } = props; + (0,external_react_namespaceObject.useEffect)(() => { + const tempTabData = TabContent_spreadValues({}, tabData); + if (!tabExists(path)) { + addTab(tempTabData, path); + } + }, [tabData, path]); + const prevTabData = hooks_usePrevious(tabData); + (0,external_react_namespaceObject.useEffect)(() => { + if (tabExists(path) && (tabData == null ? void 0 : tabData.title) && ((prevTabData == null ? void 0 : prevTabData.title) !== (tabData == null ? void 0 : tabData.title) || prevTabData.selected !== tabData.selected)) { + const tempTabData = TabContent_spreadValues({}, tabData); + updateTab(tempTabData, path); + } + }, [tabData, path, prevTabData, tabs]); + (0,external_react_namespaceObject.useEffect)(() => { + showTab(path); + return () => hideTab(path); + }, []); + const shouldRender = (0,external_react_namespaceObject.useMemo)(() => { + if (!Object.keys(tabs).length) { + return false; + } + if (hideTabContent || tabs[tabData.id].show === false) { + return false; + } + if (!rendered) { + return tabExists(path); + } + return selectedPath && selectedPath.indexOf(tabData.id) > -1; + }, [hideTabContent, rendered, selectedPath, tabData, tabs]); + return shouldRender ? /* @__PURE__ */ external_react_default().createElement("div", { key: tabData.id, className: "tyk-tab__content", style: { display: selectedPath && selectedPath.indexOf(tabData.id) > -1 ? "block" : "none" } }, /* @__PURE__ */ external_react_default().createElement( + TabContext.Provider, + { + value: { + path, + tabsId + } + }, + children + )) : null; +}; +TabContent.propTypes = { + addTab: (external_prop_types_default()).func, + updateTab: (external_prop_types_default()).func, + hideTab: (external_prop_types_default()).func, + showTab: (external_prop_types_default()).func, + children: external_prop_types_default().oneOfType([ + external_prop_types_default().arrayOf((external_prop_types_default()).node), + (external_prop_types_default()).node, + (external_prop_types_default()).element, + (external_prop_types_default()).string + ]), + path: external_prop_types_default().instanceOf(Array), + hideTabContent: (external_prop_types_default()).bool, + rendered: (external_prop_types_default()).bool, + selectedPath: external_prop_types_default().instanceOf(Array), + tabExists: (external_prop_types_default()).func, + tabsId: (external_prop_types_default()).string, + tabData: external_prop_types_default().instanceOf(Object), + tabs: external_prop_types_default().instanceOf(Object) +}; +/* harmony default export */ const js_TabContent = (TabContent); + +;// CONCATENATED MODULE: ./src/components/Tabs/js/Tab.js + + + + + +const Tab = (props) => { + const { id } = props; + const tabsContext = (0,external_react_namespaceObject.useContext)(TabsContext); + const tabContext = (0,external_react_namespaceObject.useContext)(TabContext); + const { + tabExists, + selectedPath, + addTab, + updateTab, + hideTab, + showTab, + rendered, + hideTabContent, + tabs + } = tabsContext; + const { + children + } = props; + const [path, setPath] = (0,external_react_namespaceObject.useState)(""); + (0,external_react_namespaceObject.useEffect)(() => { + let tempPath; + if (tabContext && path) { + if (tabContext.tabsId === tabsContext.id) { + tempPath = tabContext.path.concat([id]); + } else { + tempPath = [id]; + } + } else { + tempPath = [id]; + } + setPath(tempPath); + }, [tabContext]); + if (!path) { + return null; + } + return /* @__PURE__ */ external_react_default().createElement(external_react_namespaceObject.Fragment, null, /* @__PURE__ */ external_react_default().createElement( + js_TabContent, + { + addTab, + updateTab, + hideTab, + showTab, + tabExists, + tabData: props, + path, + tabsId: tabsContext.id, + selectedPath, + rendered, + hideTabContent, + tabs + }, + children + )); +}; +Tab.propTypes = { + children: external_prop_types_default().oneOfType([ + external_prop_types_default().arrayOf((external_prop_types_default()).node), + (external_prop_types_default()).node, + (external_prop_types_default()).element, + (external_prop_types_default()).string + ]), + id: (external_prop_types_default()).string +}; +Tab.defaultProps = {}; +/* harmony default export */ const js_Tab = (Tab); + +;// CONCATENATED MODULE: ./src/components/Tabs/index.js +var Tabs_defProp = Object.defineProperty; +var Tabs_getOwnPropSymbols = Object.getOwnPropertySymbols; +var Tabs_hasOwnProp = Object.prototype.hasOwnProperty; +var Tabs_propIsEnum = Object.prototype.propertyIsEnumerable; +var Tabs_defNormalProp = (obj, key, value) => key in obj ? Tabs_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var Tabs_spreadValues = (a, b) => { + for (var prop in b || (b = {})) + if (Tabs_hasOwnProp.call(b, prop)) + Tabs_defNormalProp(a, prop, b[prop]); + if (Tabs_getOwnPropSymbols) + for (var prop of Tabs_getOwnPropSymbols(b)) { + if (Tabs_propIsEnum.call(b, prop)) + Tabs_defNormalProp(a, prop, b[prop]); + } + return a; +}; + + + + + + +const Tabs = (props) => { + const { + children, + className, + id, + onTabChange, + type, + hideTabContent + } = props; + const [tabs, setTabs] = (0,external_react_namespaceObject.useState)({}); + const [selectedPath, setSelectedPath] = (0,external_react_namespaceObject.useState)([]); + const [rendered, setRendered] = (0,external_react_namespaceObject.useState)(false); + const [initialPath, setInitialPath] = (0,external_react_namespaceObject.useState)(null); + (0,external_react_namespaceObject.useEffect)(() => { + setSelectedPath(initialPath); + }, [initialPath]); + const updateTabsList = (tabsState, path, tabData) => { + let tempTabsState = Object.assign({}, tabsState); + const tempTabData = Object.assign({}, tabData); + const tempPath = path.slice(0); + while (tempPath.length > 1) { + tempTabsState = tempTabsState[tempPath.shift()]; + if (!tempTabsState) { + tempTabsState = {}; + } + } + tempTabData.tempPath = tempPath; + tempTabsState[tempPath.shift()] = tempTabData; + return tempTabsState; + }; + const toggleTab = (tabsState, path) => { + let tempTabsState = Object.assign({}, tabsState); + const tempPath = path.slice(0); + while (tempPath.length > 1) { + tempTabsState = tempTabsState[tempPath.shift()]; + } + const key = tempPath.shift(); + if (tempTabsState[key].collapsed === void 0) { + tempTabsState[key].collapsed = true; + } else { + tempTabsState[key].collapsed = !tempTabsState[key].collapsed; + } + return tempTabsState; + }; + const getCssClasses = () => { + let cssClasses = ["tyk-tabs"]; + cssClasses.push(`tyk-tabs--${type || "default"}`); + if (className) { + cssClasses = cssClasses.concat(className.split(" ")); + } + return cssClasses.join(" "); + }; + const setCurrentSelectedPath = (path, tabData) => { + const tempPath = path.slice(0); + let tempRendered = true; + if (tabData.collapsible) { + tempPath.push(Object.keys(tabData.tabs)[0]); + tempRendered = false; + } + setTabs((prevTabs) => { + let tempTabs = Object.assign({}, prevTabs); + tempTabs = toggleTab(tempTabs, path); + return tempTabs; + }); + setSelectedPath(tempPath); + setRendered(tempRendered); + if (onTabChange) { + onTabChange(tabData); + } + }; + const getTabCssClass = (tabId) => { + const cssClasses = []; + if (selectedPath && selectedPath.indexOf(tabId) > -1) { + cssClasses.push("active"); + } + return cssClasses.join(" "); + }; + const genTabs = (currentTabs, path) => { + if (!currentTabs) { + return null; + } + return /* @__PURE__ */ external_react_default().createElement("ul", null, Object.keys(currentTabs).map((tabId, index) => { + const tempPath = path ? path.concat([currentTabs[tabId].id]) : [currentTabs[tabId].id]; + const iconType = currentTabs[tabId].collapsed ? "chevron-up" : "chevron-down"; + if (currentTabs[tabId].show === false) { + return null; + } + return /* @__PURE__ */ external_react_default().createElement("li", { className: getTabCssClass(currentTabs[tabId].id), key: currentTabs[tabId].id }, /* @__PURE__ */ external_react_default().createElement( + "button", + { + type: "button", + onClick: setCurrentSelectedPath.bind(null, tempPath, currentTabs[tabId]), + onKeyDown: setCurrentSelectedPath.bind(null, tempPath, currentTabs[tabId]), + tabIndex: index + }, + currentTabs[tabId].title, + currentTabs[tabId].collapsible ? /* @__PURE__ */ external_react_default().createElement(components_Icon, { className: "collapsable-arrow", type: iconType }) : null + ), currentTabs[tabId].collapsible ? /* @__PURE__ */ external_react_default().createElement( + components_Collapsible, + { + collapsed: currentTabs[tabId].collapsed + }, + genTabs(currentTabs[tabId].tabs, tempPath) + ) : genTabs(currentTabs[tabId].tabs, tempPath)); + })); + }; + const addTab = (tabData, path) => { + setTabs((prevTabs) => updateTabsList(Tabs_spreadValues({}, prevTabs), path, tabData)); + if (tabData.selected) { + setInitialPath(path); + } + }; + const updateTab = (tabData, path) => { + setTabs((prevTabs) => { + const tempTabs = Tabs_spreadValues({}, prevTabs); + tempTabs[tabData.id] = tabData; + return tempTabs; + }); + if (tabData.selected) { + setCurrentSelectedPath(path, tabData); + } + }; + const hideTab = (path) => { + setTabs((prevTabs) => { + const tempTabs = Tabs_spreadValues({}, prevTabs); + tempTabs[path].show = false; + return tempTabs; + }); + }; + const showTab = (path) => { + setTabs((prevTabs) => { + const tempTabs = Tabs_spreadValues({}, prevTabs); + tempTabs[path].show = true; + return tempTabs; + }); + }; + const tabExists = (path) => { + let tempTabs = Tabs_spreadValues({}, tabs); + const tempPath = path.slice(0); + while (tempPath.length > 1) { + tempTabs = tempTabs[tempPath.shift()]; + } + const key = tempPath.shift(); + return !!(tempTabs && tempTabs[key]); + }; + return /* @__PURE__ */ external_react_default().createElement("div", { className: getCssClasses() }, genTabs(tabs), /* @__PURE__ */ external_react_default().createElement( + TabsContext.Provider, + { + value: { + id, + addTab, + hideTab, + updateTab, + showTab, + tabExists, + selectedPath, + rendered, + hideTabContent, + tabs + } + }, + typeof children === "function" ? children({ + hideTab, + showTab + }) : children + )); +}; +Tabs.propTypes = { + className: (external_prop_types_default()).string, + children: external_prop_types_default().oneOfType([ + external_prop_types_default().arrayOf((external_prop_types_default()).node), + (external_prop_types_default()).node, + (external_prop_types_default()).element, + (external_prop_types_default()).string + ]), + hideTabContent: (external_prop_types_default()).bool, + id: (external_prop_types_default()).string, + onTabChange: (external_prop_types_default()).func, + type: (external_prop_types_default()).string +}; +Tabs.Tab = js_Tab; +/* harmony default export */ const components_Tabs = (Tabs); + +;// CONCATENATED MODULE: ./src/components/Tooltip/index.js +var Tooltip_defProp = Object.defineProperty; +var Tooltip_getOwnPropSymbols = Object.getOwnPropertySymbols; +var Tooltip_hasOwnProp = Object.prototype.hasOwnProperty; +var Tooltip_propIsEnum = Object.prototype.propertyIsEnumerable; +var Tooltip_defNormalProp = (obj, key, value) => key in obj ? Tooltip_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var Tooltip_spreadValues = (a, b) => { + for (var prop in b || (b = {})) + if (Tooltip_hasOwnProp.call(b, prop)) + Tooltip_defNormalProp(a, prop, b[prop]); + if (Tooltip_getOwnPropSymbols) + for (var prop of Tooltip_getOwnPropSymbols(b)) { + if (Tooltip_propIsEnum.call(b, prop)) + Tooltip_defNormalProp(a, prop, b[prop]); + } + return a; +}; +var Tooltip_objRest = (source, exclude) => { + var target = {}; + for (var prop in source) + if (Tooltip_hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) + target[prop] = source[prop]; + if (source != null && Tooltip_getOwnPropSymbols) + for (var prop of Tooltip_getOwnPropSymbols(source)) { + if (exclude.indexOf(prop) < 0 && Tooltip_propIsEnum.call(source, prop)) + target[prop] = source[prop]; + } + return target; +}; + + + + +function Tooltip(_a) { + var _b = _a, { + render, + className, + children, + position = "auto", + style, + icon = false, + closable, + isOpened = false, + additionalClickParents = [] + } = _b, props = Tooltip_objRest(_b, [ + "render", + "className", + "children", + "position", + "style", + "icon", + "closable", + "isOpened", + "additionalClickParents" + ]); + const [isActive, setIsActive] = (0,external_react_namespaceObject.useState)(false); + const wrapperRef = (0,external_react_namespaceObject.useRef)(null); + const tooltipRef = (0,external_react_namespaceObject.useRef)(null); + const activeEvents = closable ? { + onClick: () => setIsActive(true) + } : { + onMouseEnter: () => setIsActive(true), + onMouseLeave: () => setIsActive(false), + onFocus: () => setIsActive(true), + onBlur: () => setIsActive(false) + }; + const handleDocumentClick = (0,external_react_namespaceObject.useCallback)((e) => { + if ([...additionalClickParents, tooltipRef.current].some((p) => { + var _a2; + return (_a2 = p == null ? void 0 : p.contains) == null ? void 0 : _a2.call(p, e.target); + })) { + return; + } + setIsActive(false); + }, [additionalClickParents]); + (0,external_react_namespaceObject.useEffect)(() => { + document.addEventListener("click", handleDocumentClick, true); + return () => document.removeEventListener("click", handleDocumentClick, true); + }, [handleDocumentClick]); + (0,external_react_namespaceObject.useEffect)(() => { + setIsActive(isOpened); + }, [isOpened]); + const classes = ["tyk-tooltip", className].filter(Boolean).join(" "); + return /* @__PURE__ */ external_react_default().createElement( + "div", + Tooltip_spreadValues(Tooltip_spreadValues({ + className: "tyk-tooltip__wrapper", + style: Tooltip_spreadValues({ display: "inline-block" }, style), + ref: wrapperRef + }, activeEvents), props), + children, + isActive && /* @__PURE__ */ external_react_default().createElement( + components_FloatingContainer, + { + element: wrapperRef, + forceDisplay: position, + preferredPosition: "top", + offset: 20 + }, + /* @__PURE__ */ external_react_default().createElement("div", { className: classes, ref: tooltipRef }, icon && (icon === true ? /* @__PURE__ */ external_react_default().createElement(components_Icon, { family: "tykon", type: "help" }) : icon), /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-tooltip__content" }, render), closable && /* @__PURE__ */ external_react_default().createElement( + components_Icon, + { + family: "tykon", + type: "x", + onClick: (e) => { + e.stopPropagation(); + setIsActive(false); + } + } + )) + ) + ); +} +Tooltip.propTypes = { + children: (external_prop_types_default()).node.isRequired, + /** custom styles to apply on hovered element */ + style: external_prop_types_default().instanceOf(Object), + /** describes where the tooltip should be displayed in relation + * whith the hovered element: top, bottom, left, right + */ + position: (external_prop_types_default()).string, + /** content of the tooltip, can be a string or a React node element */ + render: external_prop_types_default().oneOfType([ + (external_prop_types_default()).node, + (external_prop_types_default()).string + ]), + /** additional tooltip classes */ + className: (external_prop_types_default()).string, + /** if `true` displays the "question mark" icon; + * optionally you can pass a different icon + */ + icon: external_prop_types_default().oneOfType([ + (external_prop_types_default()).bool, + (external_prop_types_default()).node + ]), + /** if `true` the tooltip is activated on click and an "x" is displayed to close it; + * if `false` the tooltip is activated on hover and it closes when no longer hovering + */ + closable: (external_prop_types_default()).bool, + /** handles the `isActive` state of the tooltip from outside */ + isOpened: (external_prop_types_default()).bool, + /** Additional dom elements to check if the document click was inside of them. + * Useful when you want to open the tooltip after an interaction + * with an element not inside the tooltip root. + */ + additionalClickParents: external_prop_types_default().instanceOf(Array) +}; +/* harmony default export */ const components_Tooltip = (Tooltip); + +;// CONCATENATED MODULE: ./src/components/TextEllipsis/index.js + + + +function TextEllipsis({ text, limit, position }) { + return text.length > limit ? /* @__PURE__ */ external_react_default().createElement(components_Tooltip, { render: text, position }, text.substring(0, limit), "...") : text; +} +TextEllipsis.propTypes = { + /** Text to be shrinked by TextEllipsis */ + text: (external_prop_types_default()).string, + /** Number of characters that TextEllipsis would leave visible */ + limit: (external_prop_types_default()).number, + /** tooltip position */ + position: (external_prop_types_default()).string +}; +/* harmony default export */ const components_TextEllipsis = (TextEllipsis); + +;// CONCATENATED MODULE: ./src/form/components/Pagination/index.js +var Pagination_defProp = Object.defineProperty; +var Pagination_defNormalProp = (obj, key, value) => key in obj ? Pagination_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var Pagination_publicField = (obj, key, value) => { + Pagination_defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); + return value; +}; + + +const shouldShowPage = (currentNr, pageNr, totalNrOfPages) => { + const basePageNr = 5; + const minimumNrOfPages = 10; + if (totalNrOfPages < minimumNrOfPages) { + return true; + } + if (pageNr < basePageNr && currentNr < basePageNr) { + return true; + } + if (pageNr > totalNrOfPages - basePageNr && currentNr > totalNrOfPages - basePageNr) { + return true; + } + if (currentNr >= pageNr - 2 && currentNr <= pageNr + 2) { + return true; + } + if ([0, 1, totalNrOfPages - 1, totalNrOfPages].indexOf(currentNr) > -1) { + return true; + } + return false; +}; +const getPagesArr = (nrOfPages, selectedPage) => { + let i; + const pagesArr = []; + for (i = 0; i <= nrOfPages; i += 1) { + if (shouldShowPage(i, selectedPage, nrOfPages)) { + if (i > pagesArr[pagesArr.length - 1]) { + pagesArr.push("..."); + } + pagesArr.push(i + 1); + } + } + return pagesArr; +}; +class Pagination extends external_react_namespaceObject.Component { + constructor(props) { + super(props); + const { + value, + totalNrOfPages + } = this.props; + this.state = { + prevProps: this.props, + selectedPage: value || 0, + pagesArray: getPagesArr(totalNrOfPages, value) + }; + this.pageKey = 0; + } + static getDerivedStateFromProps(nextProps, prevState) { + if (nextProps.value !== prevState.prevProps.value || nextProps.totalNrOfPages !== prevState.prevProps.totalNrOfPages) { + return { + selectedPage: nextProps.value, + pagesArray: getPagesArr(nextProps.totalNrOfPages, nextProps.value) + }; + } + return null; + } + getPageCssClass(pageNr) { + const { selectedPage } = this.state; + const cssClasses = []; + if (selectedPage === pageNr) { + cssClasses.push("active"); + } + return cssClasses.join(" "); + } + getPageKey() { + this.pageKey += 1; + return this.pageKey; + } + goToPage(pageNr) { + const { onChange, totalNrOfPages } = this.props; + this.setState({ + selectedPage: pageNr, + pagesArray: getPagesArr(totalNrOfPages, pageNr) + }, () => { + if (onChange) { + onChange(pageNr); + } + }); + } + render() { + const { totalNrOfPages } = this.props; + const { pagesArray, selectedPage } = this.state; + return /* @__PURE__ */ external_react_default().createElement(external_react_namespaceObject.Fragment, null, totalNrOfPages ? /* @__PURE__ */ external_react_default().createElement("ul", { className: "tyk-pagination" }, selectedPage > 0 && totalNrOfPages > 5 ? /* @__PURE__ */ external_react_default().createElement("li", null, /* @__PURE__ */ external_react_default().createElement("button", { onClick: this.goToPage.bind(this, selectedPage - 1), type: "button" }, "Previous")) : null, pagesArray.map((pageNr) => /* @__PURE__ */ external_react_default().createElement("li", { key: this.getPageKey(), className: this.getPageCssClass(pageNr - 1) }, pageNr !== "..." ? /* @__PURE__ */ external_react_default().createElement("button", { onClick: this.goToPage.bind(this, pageNr - 1), type: "button" }, pageNr) : /* @__PURE__ */ external_react_default().createElement("span", null, pageNr))), selectedPage < totalNrOfPages && totalNrOfPages > 5 ? /* @__PURE__ */ external_react_default().createElement("li", null, /* @__PURE__ */ external_react_default().createElement("button", { onClick: this.goToPage.bind(this, selectedPage + 1), type: "button" }, "Next")) : null) : null); + } +} +Pagination_publicField(Pagination, "propTypes", { + value: (external_prop_types_default()).number, + totalNrOfPages: (external_prop_types_default()).number, + onChange: (external_prop_types_default()).func +}); + +;// CONCATENATED MODULE: ./src/components/Table/tableContext.js + +const tableContext = (0,external_react_namespaceObject.createContext)(); + +;// CONCATENATED MODULE: ./src/components/Table/js/header-cell.js + + + + +const HeaderCell = ({ column }) => { + const { sortable } = column; + const [sortOrder, setSortOrder] = (0,external_react_namespaceObject.useState)((sortable == null ? void 0 : sortable.default) || "ASC"); + const { state, sendMessage } = (0,external_react_namespaceObject.useContext)(tableContext); + return /* @__PURE__ */ external_react_default().createElement( + "th", + { + key: column.id, + onClick: sortable ? () => { + sendMessage("sort", { column, sortOrder }); + setSortOrder(sortOrder === "ASC" ? "DESC" : "ASC"); + } : null, + className: state.maxHeight ? "fixed-header" : "" + }, + column.name, + column.sortable && /* @__PURE__ */ external_react_default().createElement("span", { className: "header-sort" }, /* @__PURE__ */ external_react_default().createElement(components_Icon, { family: "tykon", type: "arrowsort" })) + ); +}; +HeaderCell.propTypes = { + column: external_prop_types_default().instanceOf(Object) +}; + +;// CONCATENATED MODULE: ./src/components/Table/js/header.js +var header_defProp = Object.defineProperty; +var header_defProps = Object.defineProperties; +var header_getOwnPropDescs = Object.getOwnPropertyDescriptors; +var header_getOwnPropSymbols = Object.getOwnPropertySymbols; +var header_hasOwnProp = Object.prototype.hasOwnProperty; +var header_propIsEnum = Object.prototype.propertyIsEnumerable; +var header_defNormalProp = (obj, key, value) => key in obj ? header_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var header_spreadValues = (a, b) => { + for (var prop in b || (b = {})) + if (header_hasOwnProp.call(b, prop)) + header_defNormalProp(a, prop, b[prop]); + if (header_getOwnPropSymbols) + for (var prop of header_getOwnPropSymbols(b)) { + if (header_propIsEnum.call(b, prop)) + header_defNormalProp(a, prop, b[prop]); + } + return a; +}; +var header_spreadProps = (a, b) => header_defProps(a, header_getOwnPropDescs(b)); + + + +const Header = () => { + const [selectAll, setSelectAll] = (0,external_react_namespaceObject.useState)(false); + const { state, sendMessage } = (0,external_react_namespaceObject.useContext)(tableContext); + const { columns, selectable } = state; + const generateHeaders = () => columns.map((column) => /* @__PURE__ */ external_react_default().createElement( + HeaderCell, + { + key: column.id, + column + } + )); + const generateSelectable = () => { + var _a; + if (!selectable) { + return; + } + const Component = selectable.type; + return /* @__PURE__ */ external_react_default().createElement( + "th", + { + className: state.maxHeight ? "fixed-header" : "" + }, + (selectable == null ? void 0 : selectable.allowSelectAll) ? /* @__PURE__ */ external_react_default().createElement("div", { className: selectable == null ? void 0 : selectable.style }, /* @__PURE__ */ external_react_default().createElement( + Component, + header_spreadProps(header_spreadValues({}, selectable.values), { + onClick: () => { + setSelectAll(!selectAll); + sendMessage("header.selectAll.click", selectAll); + }, + onChange: (v) => { + sendMessage("header.selectAll.change", v); + } + }), + (_a = selectable.values) == null ? void 0 : _a.value + )) : selectable.name || "Select" + ); + }; + return /* @__PURE__ */ external_react_default().createElement("thead", null, /* @__PURE__ */ external_react_default().createElement("tr", null, selectable && selectable.position === "LEFT" && generateSelectable(), generateHeaders(), selectable && selectable.position === "RIGHT" && generateSelectable())); +}; + +;// CONCATENATED MODULE: ./src/form/components/Checkbox/index.js +var Checkbox_defProp = Object.defineProperty; +var Checkbox_defProps = Object.defineProperties; +var Checkbox_getOwnPropDescs = Object.getOwnPropertyDescriptors; +var Checkbox_getOwnPropSymbols = Object.getOwnPropertySymbols; +var Checkbox_hasOwnProp = Object.prototype.hasOwnProperty; +var Checkbox_propIsEnum = Object.prototype.propertyIsEnumerable; +var Checkbox_defNormalProp = (obj, key, value) => key in obj ? Checkbox_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var Checkbox_spreadValues = (a, b) => { + for (var prop in b || (b = {})) + if (Checkbox_hasOwnProp.call(b, prop)) + Checkbox_defNormalProp(a, prop, b[prop]); + if (Checkbox_getOwnPropSymbols) + for (var prop of Checkbox_getOwnPropSymbols(b)) { + if (Checkbox_propIsEnum.call(b, prop)) + Checkbox_defNormalProp(a, prop, b[prop]); + } + return a; +}; +var Checkbox_spreadProps = (a, b) => Checkbox_defProps(a, Checkbox_getOwnPropDescs(b)); +var Checkbox_objRest = (source, exclude) => { + var target = {}; + for (var prop in source) + if (Checkbox_hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) + target[prop] = source[prop]; + if (source != null && Checkbox_getOwnPropSymbols) + for (var prop of Checkbox_getOwnPropSymbols(source)) { + if (exclude.indexOf(prop) < 0 && Checkbox_propIsEnum.call(source, prop)) + target[prop] = source[prop]; + } + return target; +}; +var Checkbox_publicField = (obj, key, value) => { + Checkbox_defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); + return value; +}; + + +class Checkbox extends external_react_namespaceObject.Component { + getCssClasses() { + const { + inline, + disabled, + readOnly, + theme = "", + wrapperClassName = "" + } = this.props; + const cssClasses = [wrapperClassName]; + cssClasses.push("tyk-checkbox"); + if (inline) { + cssClasses.push("tyk-checkbox--inline"); + } + if (theme.trim()) { + cssClasses.push(...theme.split(" ").map((t) => `tyk-checkbox--theme-${t}`)); + } + if (disabled || readOnly) { + cssClasses.push("tyk-checkbox--is-disabled"); + } + return cssClasses.join(" "); + } + displayError() { + const { error } = this.props; + if (!error) + return null; + return /* @__PURE__ */ external_react_default().createElement("p", { className: "tyk-form-control__error-message" }, error); + } + displayNote() { + const { note } = this.props; + if (!note) + return null; + return /* @__PURE__ */ external_react_default().createElement("p", { className: "tyk-form-control__help-block" }, note); + } + render() { + const _a = this.props, { + input, + value, + label + } = _a, rest = Checkbox_objRest(_a, [ + "input", + "value", + "label" + ]); + return /* @__PURE__ */ external_react_default().createElement( + "div", + { + className: this.getCssClasses() + }, + /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-form-control__wrapper" }, /* @__PURE__ */ external_react_default().createElement("label", null, /* @__PURE__ */ external_react_default().createElement( + "input", + Checkbox_spreadProps(Checkbox_spreadValues(Checkbox_spreadValues({ + checked: input ? input.value : value + }, input), rest), { + type: "checkbox" + }) + ), label), this.displayNote(), this.displayError()) + ); + } +} +Checkbox_publicField(Checkbox, "propTypes", { + /** Disable a checkbox */ + disabled: (external_prop_types_default()).bool, + /** Readonly prop behaves the same as disable on checkboxes */ + readOnly: (external_prop_types_default()).bool, + /** Align checkbox with in same line with other elements */ + inline: (external_prop_types_default()).bool, + /** Set a theme for checkbox */ + theme: (external_prop_types_default()).string, + /** Set an error state for checkbox if boolean will show just icon without message */ + error: external_prop_types_default().oneOfType([ + (external_prop_types_default()).string, + (external_prop_types_default()).bool + ]), + /** Adds additional information under the checkbox element */ + note: (external_prop_types_default()).string, + input: external_prop_types_default().instanceOf(Object), + /** Adds a label to checkbox */ + label: external_prop_types_default().oneOfType([ + external_prop_types_default().arrayOf((external_prop_types_default()).node), + (external_prop_types_default()).node, + (external_prop_types_default()).element, + (external_prop_types_default()).func, + (external_prop_types_default()).string + ]), + /** Set a name for checkbox */ + name: (external_prop_types_default()).string, + /** Set initial value for checkbox */ + value: external_prop_types_default().oneOfType([ + (external_prop_types_default()).string, + (external_prop_types_default()).bool + ]), + /** Make checkbox checked by default */ + checked: external_prop_types_default().oneOfType([ + (external_prop_types_default()).string, + (external_prop_types_default()).bool + ]), + /** Callback function executed on change of checkbox */ + onChange: (external_prop_types_default()).func, + /** CSS classes added to the wrapper of the component */ + wrapperClassName: (external_prop_types_default()).string +}); + +;// CONCATENATED MODULE: ./src/components/Table/js/cell.js +var cell_defProp = Object.defineProperty; +var cell_getOwnPropSymbols = Object.getOwnPropertySymbols; +var cell_hasOwnProp = Object.prototype.hasOwnProperty; +var cell_propIsEnum = Object.prototype.propertyIsEnumerable; +var cell_defNormalProp = (obj, key, value) => key in obj ? cell_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var cell_spreadValues = (a, b) => { + for (var prop in b || (b = {})) + if (cell_hasOwnProp.call(b, prop)) + cell_defNormalProp(a, prop, b[prop]); + if (cell_getOwnPropSymbols) + for (var prop of cell_getOwnPropSymbols(b)) { + if (cell_propIsEnum.call(b, prop)) + cell_defNormalProp(a, prop, b[prop]); + } + return a; +}; + + +const Cell = ({ col, row }) => { + var _a, _b, _c, _d, _e; + if (!row.values[col.id]) { + return /* @__PURE__ */ external_react_default().createElement("td", null); + } + if (col.type === "string") { + return ( + // eslint-disable-next-line jsx-a11y/click-events-have-key-events + /* @__PURE__ */ external_react_default().createElement( + "td", + cell_spreadValues({ + className: ((_a = row.values[col.id].styling) == null ? void 0 : _a.className) || null + }, (_b = row == null ? void 0 : row.values[col.id]) == null ? void 0 : _b.events), + (_c = row.values[col.id]) == null ? void 0 : _c.value + ) + ); + } + const Component = col.type; + return /* @__PURE__ */ external_react_default().createElement( + "td", + cell_spreadValues({ + className: ((_d = row.values[col.id].styling) == null ? void 0 : _d.className) || null + }, (_e = row == null ? void 0 : row.values[col.id]) == null ? void 0 : _e.events), + /* @__PURE__ */ external_react_default().createElement( + Component, + cell_spreadValues({}, row.values[col.id].props), + row.values[col.id].children ? row.values[col.id].children : null + ) + ); +}; +Cell.propTypes = { + col: external_prop_types_default().instanceOf(Object), + row: external_prop_types_default().instanceOf(Object), + index: (external_prop_types_default()).number +}; + +;// CONCATENATED MODULE: ./src/components/Table/js/row.js + + + + + +const Row = ({ row, index }) => { + var _a, _b; + const { state, sendMessage } = (0,external_react_namespaceObject.useContext)(tableContext); + const { columns, selectable } = state; + const SelectableCheckbox = () => /* @__PURE__ */ external_react_default().createElement("td", null, /* @__PURE__ */ external_react_default().createElement( + Checkbox, + { + defaultChecked: row.selected, + onChange: (v) => sendMessage("row.selected", { index, selected: v }) + } + )); + return /* @__PURE__ */ external_react_default().createElement( + "tr", + { + onClick: (_a = row.events) == null ? void 0 : _a.onClick, + className: (_b = row.styling) == null ? void 0 : _b.className + }, + selectable && selectable.position === "LEFT" && SelectableCheckbox(), + columns.map((col) => /* @__PURE__ */ external_react_default().createElement(Cell, { key: col.id, col, row, index })), + selectable && selectable.position === "RIGHT" && SelectableCheckbox() + ); +}; +Row.propTypes = { + row: external_prop_types_default().instanceOf(Object), + index: (external_prop_types_default()).number +}; + +;// CONCATENATED MODULE: ./src/components/Table/js/body.js + + + +const Body = () => { + const { state } = (0,external_react_namespaceObject.useContext)(tableContext); + const { rows } = state; + return /* @__PURE__ */ external_react_default().createElement( + "tbody", + null, + // eslint-disable-next-line react/no-array-index-key + rows.map((row, i) => /* @__PURE__ */ external_react_default().createElement(Row, { key: i, row, index: i })) + ); +}; + +;// CONCATENATED MODULE: ./src/components/Table/index.js +var Table_defProp = Object.defineProperty; +var Table_defProps = Object.defineProperties; +var Table_getOwnPropDescs = Object.getOwnPropertyDescriptors; +var Table_getOwnPropSymbols = Object.getOwnPropertySymbols; +var Table_hasOwnProp = Object.prototype.hasOwnProperty; +var Table_propIsEnum = Object.prototype.propertyIsEnumerable; +var Table_defNormalProp = (obj, key, value) => key in obj ? Table_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var Table_spreadValues = (a, b) => { + for (var prop in b || (b = {})) + if (Table_hasOwnProp.call(b, prop)) + Table_defNormalProp(a, prop, b[prop]); + if (Table_getOwnPropSymbols) + for (var prop of Table_getOwnPropSymbols(b)) { + if (Table_propIsEnum.call(b, prop)) + Table_defNormalProp(a, prop, b[prop]); + } + return a; +}; +var Table_spreadProps = (a, b) => Table_defProps(a, Table_getOwnPropDescs(b)); + + + + + + + + + +function Table({ + value, + onChange, + noDataMessage, + loading, + infiniteScrolling +}) { + var _a; + const [state, setState] = (0,external_react_namespaceObject.useState)(null); + const [onChangeMsg, setOnChangeMsg] = (0,external_react_namespaceObject.useState)("api"); + const itemsListRef = (0,external_react_namespaceObject.useRef)(null); + const sortRows = (col, sortOrder) => { + setState(Table_spreadProps(Table_spreadValues({}, state), { + sort: { + order: sortOrder, + col + } + })); + }; + const selectAllRows = (data) => { + setState(Table_spreadProps(Table_spreadValues({}, state), { + rows: state.rows.map((row) => Table_spreadProps(Table_spreadValues({}, row), { selected: data })) + })); + }; + const selectRow = (data) => { + const { index, selected } = data; + const selectedRow = state.rows[index]; + setState(Table_spreadProps(Table_spreadValues({}, state), { + rows: [ + ...state.rows.slice(0, index), + Table_spreadProps(Table_spreadValues({}, selectedRow), { selected }), + ...state.rows.slice(index + 1) + ] + })); + }; + const setPagination = (data) => { + setState(Table_spreadProps(Table_spreadValues({}, state), { + pagination: Table_spreadProps(Table_spreadValues({}, state.pagination), { + current: data + 1 + }) + })); + }; + const api = { + getState: () => state, + setState: (newState) => setState(newState) + }; + const sendMessage = (message, data) => { + setOnChangeMsg(message); + if (message === "sort") { + sortRows(data.column.id, data.sortOrder); + } + if (message === "header.selectAll.click") { + selectAllRows(data); + } + if (message === "header.selectAll.change") { + selectAllRows(data); + } + if (message === "row.selected") { + selectRow(data); + } + if (message === "pagination.change") { + setPagination(data); + } + }; + (0,external_react_namespaceObject.useEffect)(() => setState(value), [value]); + (0,external_react_namespaceObject.useEffect)(() => { + if (onChange) { + onChange(onChangeMsg, state, api); + } + setOnChangeMsg("api"); + }, [state]); + if (!state) { + return /* @__PURE__ */ external_react_default().createElement(components_Loader, { position: "absolute" }); + } + if (state.rows <= 0) { + return /* @__PURE__ */ external_react_default().createElement(components_Message, { theme: "info" }, noDataMessage || "No Data Available"); + } + const getTable = () => /* @__PURE__ */ external_react_default().createElement("table", { className: "tyk-table", ref: itemsListRef }, /* @__PURE__ */ external_react_default().createElement(Header, null), /* @__PURE__ */ external_react_default().createElement(Body, null)); + return /* @__PURE__ */ external_react_default().createElement(tableContext.Provider, { value: { state, sendMessage } }, /* @__PURE__ */ external_react_default().createElement("div", { className: `scrollable ${((_a = state.styling) == null ? void 0 : _a.className) || ""}`, style: { height: state.maxHeight ? state.maxHeight : "auto", position: "relative" } }, loading && /* @__PURE__ */ external_react_default().createElement(components_Loader, { position: "absolute", withbackground: true }), infiniteScrolling && state.pagination ? /* @__PURE__ */ external_react_default().createElement( + components_InfiniteScroller, + { + refChild: itemsListRef, + hasMore: state.pagination.totalPages > state.pagination.current, + loadMore: (num) => sendMessage("pagination.change", num), + pageNumber: state.pagination.current - 1, + initialLoad: false + }, + getTable() + ) : getTable()), state.pagination && !infiniteScrolling && /* @__PURE__ */ external_react_default().createElement("div", { className: "new-table-pagination" }, /* @__PURE__ */ external_react_default().createElement( + Pagination, + { + value: state.pagination.current - 1, + nrItemsOnPage: state.pagination.perPage - 1, + totalNrOfPages: state.pagination.totalPages - 1, + onChange: (num) => sendMessage("pagination.change", num) + } + ))); +} +Table.propTypes = { + /** Configuration object used to render the component */ + value: external_prop_types_default().shape({ + /** Configuration for table columns */ + columns: external_prop_types_default().arrayOf(external_prop_types_default().shape({ + /** Unique id of the column */ + id: (external_prop_types_default()).string.isRequired, + /** Name of the column */ + name: (external_prop_types_default()).string, + /** Type of column, String by default */ + type: external_prop_types_default().oneOfType([ + /** Just renders cell data of type strings */ + (external_prop_types_default()).string, + /** Render cell of elements (eg. Input / Button) */ + (external_prop_types_default()).element, + /** Render a custom function/component */ + (external_prop_types_default()).func + ]), + sortable: external_prop_types_default().oneOfType([ + /** Make Column sortable */ + (external_prop_types_default()).bool, + /** Configure sorting behaviour */ + external_prop_types_default().shape({ + /** Set default sorting direction ASC / DESC */ + default: (external_prop_types_default()).string + }) + ]) + })), + /** Configuration for table rows */ + rows: external_prop_types_default().arrayOf(external_prop_types_default().shape({})), + /** Configuration to make table rows selectable */ + selectable: external_prop_types_default().shape({}), + /** Renders pagination for table if the object is missing / empty no pagination is rendered. */ + pagination: external_prop_types_default().shape({}), + /** Sets maximum height for table container. */ + maxHeight: (external_prop_types_default()).string, + /** Styling for the table container. */ + styling: external_prop_types_default().shape({ + /** It's recommended to add styles to a class and pass the class in this object */ + className: (external_prop_types_default()).string + }) + }).isRequired, + /** Callback executed with message and value when there are changes on table */ + onChange: (external_prop_types_default()).func, + /** Renders a component with the given message when `config.rows` is empty */ + noDataMessage: (external_prop_types_default()).string, + /** Show placeholder loader */ + loading: (external_prop_types_default()).bool, + /** Adds infinite scroller on page and calls `onChange` with `pagination.change` message */ + infiniteScrolling: (external_prop_types_default()).bool +}; +Table.defaultProps = { + loading: false, + infiniteScrolling: false, + noDataMessage: "No Data Available", + onChange: null +}; +/* harmony default export */ const components_Table = (Table); + +;// CONCATENATED MODULE: ./src/layout/Column/index.js +var Column_defProp = Object.defineProperty; +var Column_defProps = Object.defineProperties; +var Column_getOwnPropDescs = Object.getOwnPropertyDescriptors; +var Column_getOwnPropSymbols = Object.getOwnPropertySymbols; +var Column_hasOwnProp = Object.prototype.hasOwnProperty; +var Column_propIsEnum = Object.prototype.propertyIsEnumerable; +var Column_defNormalProp = (obj, key, value) => key in obj ? Column_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var Column_spreadValues = (a, b) => { + for (var prop in b || (b = {})) + if (Column_hasOwnProp.call(b, prop)) + Column_defNormalProp(a, prop, b[prop]); + if (Column_getOwnPropSymbols) + for (var prop of Column_getOwnPropSymbols(b)) { + if (Column_propIsEnum.call(b, prop)) + Column_defNormalProp(a, prop, b[prop]); + } + return a; +}; +var Column_spreadProps = (a, b) => Column_defProps(a, Column_getOwnPropDescs(b)); +var Column_objRest = (source, exclude) => { + var target = {}; + for (var prop in source) + if (Column_hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) + target[prop] = source[prop]; + if (source != null && Column_getOwnPropSymbols) + for (var prop of Column_getOwnPropSymbols(source)) { + if (exclude.indexOf(prop) < 0 && Column_propIsEnum.call(source, prop)) + target[prop] = source[prop]; + } + return target; +}; +var Column_publicField = (obj, key, value) => { + Column_defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); + return value; +}; + + +class Column extends external_react_namespaceObject.PureComponent { + getCssClasses() { + const { + align, + className, + offset, + size + } = this.props; + const colSize = size.split(" "); + const colOffsets = offset ? offset.split(" ") : []; + let cssClasses = colSize.map((cSize) => `tyk-col--${cSize}`); + const offsets = colOffsets.map((cOffset) => `tyk-col--offset-${cOffset}`); + if (align) { + cssClasses.push(`tyk-col--align-${align}`); + } + if (className) { + cssClasses = cssClasses.concat(className.split(" ")); + } + cssClasses.push("tyk-col"); + cssClasses = cssClasses.concat(offsets || []); + return cssClasses.join(" "); + } + render() { + const _a = this.props, { children, id } = _a, props = Column_objRest(_a, ["children", "id"]); + return /* @__PURE__ */ external_react_default().createElement("div", Column_spreadProps(Column_spreadValues({}, props), { className: this.getCssClasses(), id }), children); + } +} +Column_publicField(Column, "propTypes", { + /** + * This property describes how the column element will be aligned vertically + * within a Row: bottom, center, top + */ + align: (external_prop_types_default()).string, + /** Css classes that can be passed to the column element */ + className: (external_prop_types_default()).string, + /** + * ID that can be passed to the column element + */ + id: (external_prop_types_default()).string, + /** + * Specifies the size of the column within a Row (values must be between 1 - 12) + */ + size: (external_prop_types_default()).string.isRequired, + /** + * Specifies the left gap a column can have within a Row (values must be between 1 - 12) + */ + offset: (external_prop_types_default()).string, + children: external_prop_types_default().oneOfType([ + (external_prop_types_default()).element, + (external_prop_types_default()).string, + (external_prop_types_default()).object, + (external_prop_types_default()).node + ]) +}); +/* harmony default export */ const layout_Column = (Column); + +;// CONCATENATED MODULE: ./src/layout/Row/index.js +var Row_defProp = Object.defineProperty; +var Row_defProps = Object.defineProperties; +var Row_getOwnPropDescs = Object.getOwnPropertyDescriptors; +var Row_getOwnPropSymbols = Object.getOwnPropertySymbols; +var Row_hasOwnProp = Object.prototype.hasOwnProperty; +var Row_propIsEnum = Object.prototype.propertyIsEnumerable; +var Row_defNormalProp = (obj, key, value) => key in obj ? Row_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var Row_spreadValues = (a, b) => { + for (var prop in b || (b = {})) + if (Row_hasOwnProp.call(b, prop)) + Row_defNormalProp(a, prop, b[prop]); + if (Row_getOwnPropSymbols) + for (var prop of Row_getOwnPropSymbols(b)) { + if (Row_propIsEnum.call(b, prop)) + Row_defNormalProp(a, prop, b[prop]); + } + return a; +}; +var Row_spreadProps = (a, b) => Row_defProps(a, Row_getOwnPropDescs(b)); +var Row_objRest = (source, exclude) => { + var target = {}; + for (var prop in source) + if (Row_hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) + target[prop] = source[prop]; + if (source != null && Row_getOwnPropSymbols) + for (var prop of Row_getOwnPropSymbols(source)) { + if (exclude.indexOf(prop) < 0 && Row_propIsEnum.call(source, prop)) + target[prop] = source[prop]; + } + return target; +}; +var Row_publicField = (obj, key, value) => { + Row_defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); + return value; +}; + + +class Row_Row extends external_react_namespaceObject.PureComponent { + getCssClasses() { + const { className, nogutters } = this.props; + let cssClass = ["tyk-row"]; + if (nogutters) { + cssClass.push("no-gutters"); + cssClass.push("tyk-row--gutterless"); + } + if (className) { + cssClass = cssClass.concat(className.split(" ")); + } + return cssClass.join(" "); + } + render() { + const _a = this.props, { + children, + nogutters + } = _a, rest = Row_objRest(_a, [ + "children", + "nogutters" + ]); + return /* @__PURE__ */ external_react_default().createElement("div", Row_spreadProps(Row_spreadValues({}, rest), { className: this.getCssClasses() }), children); + } +} +Row_publicField(Row_Row, "propTypes", { + children: external_prop_types_default().oneOfType([ + (external_prop_types_default()).element, + (external_prop_types_default()).node + ]), + /** Css classes that can be passed to the Row element */ + className: (external_prop_types_default()).string, + /** Removes all the spaces between column */ + nogutters: (external_prop_types_default()).bool +}); + +;// CONCATENATED MODULE: ./src/form/components/Dropdown/dropdown-context.js + +const DropdownContext = (0,external_react_namespaceObject.createContext)(); + +;// CONCATENATED MODULE: ./src/form/components/Dropdown/js/DropdownItem.js + + + + +function DropdownItem(props) { + const { + customdropdownitem, + children, + eventKey, + href, + target, + title, + onClick + } = props; + const dropdownItemCLick = (0,external_react_namespaceObject.useCallback)((dropdownContext, itemProps) => { + dropdownContext.onSelectItem(eventKey, itemProps); + if (onClick) + onClick(eventKey); + }, []); + return /* @__PURE__ */ external_react_default().createElement(DropdownContext.Consumer, null, (dropdownContext) => /* @__PURE__ */ external_react_default().createElement( + "li", + { + onClick: () => dropdownItemCLick(dropdownContext, props), + onKeyUp: () => { + } + }, + customdropdownitem ? (0,external_react_namespaceObject.cloneElement)(customdropdownitem, {}) : /* @__PURE__ */ external_react_default().createElement("a", { href, target }, eventKey && dropdownContext.selectedItem === eventKey && dropdownContext.showCheckmark ? /* @__PURE__ */ external_react_default().createElement(components_Icon, { type: "check" }) : null, /* @__PURE__ */ external_react_default().createElement("span", null, title || children)) + )); +} +DropdownItem.propTypes = { + children: external_prop_types_default().oneOfType([ + (external_prop_types_default()).element, + (external_prop_types_default()).node, + (external_prop_types_default()).string + ]), + customdropdownitem: external_prop_types_default().oneOfType([ + external_prop_types_default().arrayOf((external_prop_types_default()).node), + (external_prop_types_default()).node, + (external_prop_types_default()).element + ]), + eventKey: (external_prop_types_default()).string, + href: (external_prop_types_default()).string, + target: (external_prop_types_default()).string, + onClick: (external_prop_types_default()).func, + title: (external_prop_types_default()).string +}; +/* harmony default export */ const js_DropdownItem = (DropdownItem); + +;// CONCATENATED MODULE: ./src/form/components/Dropdown/index.js +var Dropdown_defProp = Object.defineProperty; +var Dropdown_getOwnPropSymbols = Object.getOwnPropertySymbols; +var Dropdown_hasOwnProp = Object.prototype.hasOwnProperty; +var Dropdown_propIsEnum = Object.prototype.propertyIsEnumerable; +var Dropdown_defNormalProp = (obj, key, value) => key in obj ? Dropdown_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var Dropdown_spreadValues = (a, b) => { + for (var prop in b || (b = {})) + if (Dropdown_hasOwnProp.call(b, prop)) + Dropdown_defNormalProp(a, prop, b[prop]); + if (Dropdown_getOwnPropSymbols) + for (var prop of Dropdown_getOwnPropSymbols(b)) { + if (Dropdown_propIsEnum.call(b, prop)) + Dropdown_defNormalProp(a, prop, b[prop]); + } + return a; +}; + + + + + + +class Dropdown extends external_react_namespaceObject.Component { + static isElemInRightView(el, dropdownWidth) { + const windowWidth = window.innerWidth; + const offset = el.getBoundingClientRect(); + const elemRight = offset.left + dropdownWidth; + return elemRight <= windowWidth; + } + static isElemInBottomView(el, dropdownHeight) { + const windowHeight = window.innerHeight; + const offset = el.getBoundingClientRect(); + const elHeight = el.clientHeight; + const elemBottom = offset.top + elHeight + dropdownHeight; + return elemBottom <= windowHeight; + } + constructor(props) { + super(props); + const { + selectedItem, + open + } = this.props; + this.state = { + opened: open, + selectedItem: selectedItem || null + }; + this.dropdownRef = (0,external_react_namespaceObject.createRef)(); + this.dropdownListRef = (0,external_react_namespaceObject.createRef)(); + this.dropdownButtonRef = (0,external_react_namespaceObject.createRef)(); + this.onSelectItem = this.onSelectItem.bind(this); + this.toggleDropdown = this.toggleDropdown.bind(this); + this.handleClickOutside = this.handleClickOutside.bind(this); + } + componentDidMount() { + document.addEventListener("mousedown", this.handleClickOutside); + if (this.dropdownListRef.current) { + this.getStyles(); + } + } + componentDidUpdate(prevProps) { + const { + open + } = this.props; + const { + opened + } = this.state; + if (this.dropdownListRef.current) { + this.getStyles(); + } + if (!prevProps.open && open === true && !opened) { + this.toggleDropdown(); + } + if (prevProps.open && open === false && opened) { + this.closeDropdown(); + } + } + componentWillUnmount() { + document.removeEventListener("mousedown", this.handleClickOutside); + } + handleClickOutside(event) { + if (this.dropdownListRef.current && !this.dropdownListRef.current.contains(event.target) && this.dropdownRef.current && !this.dropdownRef.current.contains(event.target)) { + this.closeDropdown(); + } + } + onSelectItem(itemId, itemProps) { + const { closeOnSelect, onSelect } = this.props; + const changes = { + selectedItem: itemId, + selectedItemProps: itemProps + }; + if (closeOnSelect) { + changes.opened = false; + } + this.setState(changes); + if (onSelect && typeof onSelect === "function") { + onSelect(itemId); + } + } + getStyles() { + const { + display, + position, + offset + } = this.props; + const dropdownEl = this.dropdownListRef.current; + if (offset) { + dropdownEl.style.top = `${offset.top}`; + dropdownEl.style.left = `${offset.left}`; + return; + } + const scrollTop = Math.max( + document.documentElement.scrollTop, + document.body.scrollTop, + window.scrollY + ); + const el = this.dropdownRef.current; + const elHeight = el.clientHeight; + const dropdownHeight = dropdownEl ? dropdownEl.clientHeight : 0; + const dropdownWidth = dropdownEl ? dropdownEl.clientWidth : 0; + const offsetPosition = el.getBoundingClientRect(); + const { left, top } = offsetPosition; + let customTop = 0; + let customLeft = left; + if (Dropdown.isElemInBottomView(el, dropdownHeight)) { + customTop = top + scrollTop + elHeight; + } else { + customTop = top + scrollTop - dropdownHeight - 5; + } + if (Dropdown.isElemInRightView(el, dropdownWidth)) { + customLeft = left; + } else { + customLeft = left + el.clientWidth - dropdownWidth; + } + if (position !== "relative") { + dropdownEl.style.top = `${customTop}px`; + if (display !== "block") { + dropdownEl.style.left = `${customLeft}px`; + } + } + if (display !== "block") { + dropdownEl.style.minWidth = `${this.dropdownButtonRef.current.clientWidth}px`; + } + } + getWrapperCssClasses() { + const { + btnGroup, + btnGroupSize, + className, + btnTheme, + wrapperClassName = "" + } = this.props; + let cssClasses = [wrapperClassName, "tyk-dropdown"]; + cssClasses.push(`theme-${btnTheme || "default"}`); + if (className) { + cssClasses = cssClasses.concat(className.split(" ")); + } + if (btnGroup) { + cssClasses.push("tyk-button-group"); + cssClasses.push(btnGroupSize ? `tyk-button-group--${btnGroupSize}` : "tyk-button-group--md"); + } + return cssClasses.join(" "); + } + getCssClasses() { + const { + opened + } = this.state; + const { + hasCustomContent, + display, + listclassnames, + position, + maxHeight + } = this.props; + let cssClasses = ["tyk-dropdown-menu", "tyk-dropdown"]; + if (maxHeight) { + cssClasses.push("tyk-dropdown--scrollable"); + } + if (opened) { + cssClasses.push("opened"); + } + if (listclassnames) { + cssClasses = cssClasses.concat(listclassnames.split(" ")); + } + if (display) { + cssClasses.push("tyk-dropdown--block"); + } + if (hasCustomContent) { + cssClasses.push("tyk-dropdown--custom"); + } + if (position === "relative") { + cssClasses.push("tyk-dropdown--relative"); + } + return cssClasses.join(" "); + } + getBtnTitle() { + const { btnTitle, stopButtonTextChange } = this.props; + const { selectedItemProps } = this.state; + if (!stopButtonTextChange && selectedItemProps && selectedItemProps.title) { + return selectedItemProps.title; + } + return btnTitle; + } + closeDropdown() { + const { onClose } = this.props; + this.setState({ + opened: false + }, () => { + if (onClose) { + onClose(); + } + }); + } + toggleDropdown() { + const { + opened + } = this.state; + if (opened) { + this.closeDropdown(); + return; + } + this.setState({ + opened: true + }); + } + render() { + const { + appendTo, + btnClassName, + btnSize, + customBtnTitle, + hasCustomContent, + btnTheme, + children, + label, + showDropdownIcon, + showTriggerButton, + showCheckmark, + disabled = false, + maxHeight + } = this.props; + const { + selectedItem, + opened + } = this.state; + const DropdownWrapperTag = hasCustomContent ? "div" : "ul"; + return /* @__PURE__ */ external_react_default().createElement( + "div", + { + className: this.getWrapperCssClasses(), + ref: this.dropdownRef + }, + label ? /* @__PURE__ */ external_react_default().createElement("label", { className: "font-family-medium" }, label) : null, + showTriggerButton ? /* @__PURE__ */ external_react_default().createElement( + components_Button, + { + className: `tyk-dropdown__trigger ${opened ? "tyk-dropdown__trigger--opened " : " "} ${btnClassName}`, + theme: btnTheme || "default", + onClick: this.toggleDropdown, + iconType: showDropdownIcon ? "chevron-down" : null, + iconPosition: "right", + size: btnSize || "md", + type: "button", + disabled, + ref: this.dropdownButtonRef + }, + customBtnTitle || this.getBtnTitle() + ) : null, + opened ? external_react_dom_default().createPortal( + /* @__PURE__ */ external_react_default().createElement( + DropdownContext.Provider, + { + value: { + onSelectItem: this.onSelectItem, + selectedItem, + showCheckmark + } + }, + opened ? /* @__PURE__ */ external_react_default().createElement( + DropdownWrapperTag, + Dropdown_spreadValues({ + className: this.getCssClasses(), + ref: this.dropdownListRef + }, maxHeight && { + style: { + maxHeight + } + }), + typeof children === "function" ? children({ + closeDropdown: this.closeDropdown.bind(this) + }) : children + ) : null + ), + document.querySelector(appendTo || "body") + ) : null + ); + } +} +Dropdown.propTypes = { + appendTo: (external_prop_types_default()).string, + children: external_prop_types_default().oneOfType([ + (external_prop_types_default()).element, + (external_prop_types_default()).node, + (external_prop_types_default()).string, + (external_prop_types_default()).func + ]), + closeOnSelect: (external_prop_types_default()).bool, + btnClassName: (external_prop_types_default()).string, + btnSize: (external_prop_types_default()).string, + btnGroupSize: (external_prop_types_default()).string, + btnTheme: (external_prop_types_default()).string, + btnTitle: external_prop_types_default().oneOfType([ + (external_prop_types_default()).node, + (external_prop_types_default()).element, + (external_prop_types_default()).string + ]), + customBtnTitle: external_prop_types_default().oneOfType([ + (external_prop_types_default()).node, + (external_prop_types_default()).element, + (external_prop_types_default()).string + ]), + btnGroup: (external_prop_types_default()).bool, + className: (external_prop_types_default()).string, + display: (external_prop_types_default()).string, + disabled: (external_prop_types_default()).bool, + hasCustomContent: (external_prop_types_default()).bool, + label: external_prop_types_default().oneOfType([ + external_prop_types_default().arrayOf((external_prop_types_default()).node), + (external_prop_types_default()).node, + (external_prop_types_default()).element, + (external_prop_types_default()).func, + (external_prop_types_default()).string + ]), + listclassnames: (external_prop_types_default()).string, + onClose: (external_prop_types_default()).func, + onSelect: (external_prop_types_default()).func, + open: (external_prop_types_default()).bool, + offset: external_prop_types_default().instanceOf(Object), + position: (external_prop_types_default()).string, + selectedItem: (external_prop_types_default()).string, + showDropdownIcon: (external_prop_types_default()).bool, + stopButtonTextChange: (external_prop_types_default()).bool, + showTriggerButton: (external_prop_types_default()).bool, + showCheckmark: (external_prop_types_default()).bool, + maxHeight: (external_prop_types_default()).string, + wrapperClassName: (external_prop_types_default()).string +}; +Dropdown.defaultProps = { + closeOnSelect: false, + showDropdownIcon: true, + showTriggerButton: true, + showCheckmark: true, + open: false +}; +Dropdown.Item = js_DropdownItem; +/* harmony default export */ const components_Dropdown = (Dropdown); + +// EXTERNAL MODULE: ./node_modules/ace-builds/src-noconflict/ace.js +var ace = __webpack_require__(239); +var ace_default = /*#__PURE__*/__webpack_require__.n(ace); +;// CONCATENATED MODULE: external "react-ace" +const external_react_ace_namespaceObject = require("react-ace"); +var external_react_ace_default = /*#__PURE__*/__webpack_require__.n(external_react_ace_namespaceObject); +// EXTERNAL MODULE: ./node_modules/ace-builds/src-noconflict/mode-javascript.js +var mode_javascript = __webpack_require__(395); +// EXTERNAL MODULE: ./node_modules/ace-builds/src-noconflict/mode-golang.js +var mode_golang = __webpack_require__(576); +// EXTERNAL MODULE: ./node_modules/ace-builds/src-noconflict/mode-python.js +var mode_python = __webpack_require__(7); +// EXTERNAL MODULE: ./node_modules/ace-builds/src-noconflict/mode-css.js +var mode_css = __webpack_require__(549); +// EXTERNAL MODULE: ./node_modules/ace-builds/src-noconflict/mode-json.js +var mode_json = __webpack_require__(252); +// EXTERNAL MODULE: ./node_modules/ace-builds/src-noconflict/mode-xml.js +var mode_xml = __webpack_require__(202); +// EXTERNAL MODULE: ./node_modules/ace-builds/src-noconflict/mode-jsx.js +var mode_jsx = __webpack_require__(711); +// EXTERNAL MODULE: ./node_modules/ace-builds/src-noconflict/ext-searchbox.js +var ext_searchbox = __webpack_require__(604); +// EXTERNAL MODULE: ./node_modules/ace-builds/src-noconflict/ext-beautify.js +var ext_beautify = __webpack_require__(134); +// EXTERNAL MODULE: ./node_modules/ace-builds/src-noconflict/theme-github.js +var theme_github = __webpack_require__(203); +;// CONCATENATED MODULE: ./node_modules/ace-builds/src-noconflict/worker-json.js +const worker_json_namespaceObject = __webpack_require__.p + "6925696524271b926a8e.js"; +;// CONCATENATED MODULE: ./src/form/components/CodeEditor/index.js +var CodeEditor_defProp = Object.defineProperty; +var CodeEditor_defProps = Object.defineProperties; +var CodeEditor_getOwnPropDescs = Object.getOwnPropertyDescriptors; +var CodeEditor_getOwnPropSymbols = Object.getOwnPropertySymbols; +var CodeEditor_hasOwnProp = Object.prototype.hasOwnProperty; +var CodeEditor_propIsEnum = Object.prototype.propertyIsEnumerable; +var CodeEditor_defNormalProp = (obj, key, value) => key in obj ? CodeEditor_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var CodeEditor_spreadValues = (a, b) => { + for (var prop in b || (b = {})) + if (CodeEditor_hasOwnProp.call(b, prop)) + CodeEditor_defNormalProp(a, prop, b[prop]); + if (CodeEditor_getOwnPropSymbols) + for (var prop of CodeEditor_getOwnPropSymbols(b)) { + if (CodeEditor_propIsEnum.call(b, prop)) + CodeEditor_defNormalProp(a, prop, b[prop]); + } + return a; +}; +var CodeEditor_spreadProps = (a, b) => CodeEditor_defProps(a, CodeEditor_getOwnPropDescs(b)); + + + + + + + + + + + + + + + +ace_default().config.setModuleUrl("ace/mode/json_worker", worker_json_namespaceObject); +function CodeEditor(props) { + const { + disabled, + readOnly, + disableValidation, + id, + error, + label, + labelwidth, + note, + onBlur, + onChange, + theme, + value, + setOptions, + wrapperClassName + } = props; + const classes = [ + "tyk-form-group", + wrapperClassName, + ...theme ? theme.split(" ").map((t) => `tyk-form-group--${t}`) : [], + labelwidth && "tyk-form-group--label-has-width", + error && "has-error" + ].filter(Boolean).join(" "); + const finalSetOptions = CodeEditor_spreadValues(CodeEditor_spreadValues({}, setOptions), disableValidation && { useWorker: false }); + const getCodeEditorError = (0,external_react_namespaceObject.useCallback)(() => error && error !== "true" && error !== "false" ? /* @__PURE__ */ external_react_default().createElement("p", { className: "tyk-form-control__error-message" }, error) : null, [error]); + const getLabelStyles = (0,external_react_namespaceObject.useCallback)(() => { + if (labelwidth) + return { flexBasis: labelwidth }; + return {}; + }, [labelwidth]); + const getNonLabelWidth = (0,external_react_namespaceObject.useCallback)(() => { + if (labelwidth) + return { flexBasis: `calc(100% - ${labelwidth} - 20px)` }; + return {}; + }, [labelwidth]); + const handleOnChange = (0,external_react_namespaceObject.useCallback)((newValue) => { + if (onChange) + onChange(newValue); + }, [onChange]); + const handleOnBlur = (0,external_react_namespaceObject.useCallback)(() => { + if (onBlur) + onBlur(value); + }, [onBlur, value]); + return /* @__PURE__ */ external_react_default().createElement("div", { className: classes }, label ? /* @__PURE__ */ external_react_default().createElement("label", { htmlFor: id, style: getLabelStyles() }, label) : null, /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-form-control__wrapper", style: getNonLabelWidth() }, /* @__PURE__ */ external_react_default().createElement( + (external_react_ace_default()), + CodeEditor_spreadProps(CodeEditor_spreadValues({ + className: "tyk-form-control" + }, props), { + onChange: handleOnChange, + onBlur: handleOnBlur, + theme: "github", + editorProps: { $blockScrolling: true }, + readOnly: readOnly || disabled, + onLoad: (editorInstance) => { + editorInstance.container.style.resize = "both"; + document.addEventListener("mouseup", () => editorInstance.resize()); + }, + setOptions: finalSetOptions + }) + ), note ? /* @__PURE__ */ external_react_default().createElement("p", { className: "tyk-form-control__help-block" }, note) : null, getCodeEditorError())); +} +CodeEditor.propTypes = { + disabled: (external_prop_types_default()).bool, + readOnly: (external_prop_types_default()).bool, + disableValidation: (external_prop_types_default()).bool, + id: (external_prop_types_default()).string, + error: external_prop_types_default().oneOfType([ + (external_prop_types_default()).string, + (external_prop_types_default()).bool + ]), + label: external_prop_types_default().oneOfType([ + external_prop_types_default().arrayOf((external_prop_types_default()).node), + (external_prop_types_default()).node, + (external_prop_types_default()).element, + (external_prop_types_default()).func, + (external_prop_types_default()).string + ]), + labelwidth: (external_prop_types_default()).string, + mode: (external_prop_types_default()).string, + name: (external_prop_types_default()).string, + note: (external_prop_types_default()).string, + onBlur: (external_prop_types_default()).func, + onChange: (external_prop_types_default()).func, + theme: (external_prop_types_default()).string, + value: (external_prop_types_default()).string, + setOptions: external_prop_types_default().instanceOf(Object), + wrapperClassName: (external_prop_types_default()).string +}; +/* harmony default export */ const components_CodeEditor = (CodeEditor); + +;// CONCATENATED MODULE: ./src/form/components/Combobox/index.js +var Combobox_defProp = Object.defineProperty; +var Combobox_defProps = Object.defineProperties; +var Combobox_getOwnPropDescs = Object.getOwnPropertyDescriptors; +var Combobox_getOwnPropSymbols = Object.getOwnPropertySymbols; +var Combobox_hasOwnProp = Object.prototype.hasOwnProperty; +var Combobox_propIsEnum = Object.prototype.propertyIsEnumerable; +var Combobox_defNormalProp = (obj, key, value) => key in obj ? Combobox_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var Combobox_spreadValues = (a, b) => { + for (var prop in b || (b = {})) + if (Combobox_hasOwnProp.call(b, prop)) + Combobox_defNormalProp(a, prop, b[prop]); + if (Combobox_getOwnPropSymbols) + for (var prop of Combobox_getOwnPropSymbols(b)) { + if (Combobox_propIsEnum.call(b, prop)) + Combobox_defNormalProp(a, prop, b[prop]); + } + return a; +}; +var Combobox_spreadProps = (a, b) => Combobox_defProps(a, Combobox_getOwnPropDescs(b)); +var Combobox_publicField = (obj, key, value) => { + Combobox_defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); + return value; +}; + + + + + +const getStateSelectedValues = (multiple, tags, value) => { + if (!value) { + return multiple || tags ? [] : null; + } + return value; +}; +const _Combobox = class _Combobox extends external_react_namespaceObject.Component { + static closeList() { + return { + cursor: -1, + opened: false + }; + } + static openList() { + return { + opened: true + }; + } + static filterByName(itemValue, inputValue) { + return itemValue.name.toLowerCase().indexOf(inputValue) > -1; + } + constructor(props) { + super(props); + const { + multiple, + tags, + value + } = props; + this.state = { + cursor: -1, + opened: false, + width: 50, + initialValue: value, + stateSelectedValues: getStateSelectedValues(multiple, tags, value), + searchText: "", + tags + }; + this.comboboxRef = (0,external_react_namespaceObject.createRef)(); + this.valuesListRef = (0,external_react_namespaceObject.createRef)(); + this.inputRef = (0,external_react_namespaceObject.createRef)(); + this.textRef = (0,external_react_namespaceObject.createRef)(); + this.focusInput = this.focusInput.bind(this); + this.onKeyUp = this.onKeyUp.bind(this); + _Combobox.openList = _Combobox.openList.bind(this); + this.handleClickOutside = this.handleClickOutside.bind(this); + this.handleItemsNavigation = this.handleItemsNavigation.bind(this); + this.handleComboboxDropdownClick = this.handleComboboxDropdownClick.bind(this); + this.handleListItemClick = this.handleListItemClick.bind(this); + this.handlePillRemoveClick = this.handlePillRemoveClick.bind(this); + this.manageSelectedTags = this.manageSelectedTags.bind(this); + } + componentDidMount() { + const { tags } = this.props; + if (tags) { + this.setInputWidth(); + } + this.bindEvents(); + } + componentWillUnmount() { + this.unBindEvents(); + } + static getDerivedStateFromProps(nextProps, prevState) { + if (JSON.stringify(nextProps.value) !== JSON.stringify(prevState.initialValue) || nextProps.tags !== prevState.tags) { + return { + initialValue: nextProps.value, + stateSelectedValues: getStateSelectedValues( + nextProps.multiple, + nextProps.tags, + nextProps.value + ), + tags: nextProps.tags + }; + } + return null; + } + onKeyUp(e) { + const { tags, allowCustomValues } = this.props; + const { cursor, opened } = this.state; + const filteredValues = this.filterValues(); + let tempState = Object.assign({}, this.getSearchText()); + if (tags && e.key !== "Escape") { + tempState = Object.assign({}, tempState, this.setInputWidth()); + } + if (e.key === "Enter") { + const methodName = tags ? "manageSelectedTags" : "manageSelectedValues"; + tempState = Object.assign({}, tempState, this[methodName](cursor)); + } + if (allowCustomValues && !e.key === " " && tags) { + tempState = Object.assign({}, tempState, this.manageSelectedTags()); + } + if (!opened && this.inputRef.current.value && filteredValues && filteredValues.length && e.key !== "Escape") { + tempState = Object.assign({}, tempState, _Combobox.openList()); + } + if (e.key === "Escape" && opened) { + tempState = Object.assign({}, tempState, _Combobox.closeList()); + } + if (opened && filteredValues && !filteredValues.length) { + tempState = Object.assign({}, tempState, _Combobox.closeList()); + } + this.setState((previousState) => Object.assign({}, previousState, tempState)); + } + getLabelStyles() { + const { labelwidth } = this.props; + const styles = {}; + if (labelwidth) { + styles.flexBasis = labelwidth; + } + return styles; + } + getNonLabelWidth() { + const { labelwidth } = this.props; + const styles = {}; + if (labelwidth) { + styles.flexBasis = `calc(100% - ${labelwidth} - 20px)`; + } + return styles; + } + setInputWidth() { + return { + width: 50 + this.textRef.current.offsetWidth + }; + } + getSelectedIndex(value) { + const { stateSelectedValues } = this.state; + let position = -1; + if (Array.isArray(stateSelectedValues)) { + stateSelectedValues.forEach((item, index) => { + if (item.id === value.id) { + position = index; + } + }); + } else if (stateSelectedValues) { + if (stateSelectedValues.id === value.id) { + position = 0; + } + } + return position; + } + getSearchText() { + return { + searchText: this.inputRef.current.value + }; + } + getListItemCssClasses(value, index) { + const cssClasses = []; + const { + cursor + } = this.state; + if (cursor === index) { + cssClasses.push("active"); + } + if (value.disabled) { + cssClasses.push("disabled"); + } + return cssClasses.join(" "); + } + getComboboxListCssClass() { + const { opened } = this.state; + const { tags, theme } = this.props; + const themes = theme ? theme.split(" ") : []; + const cssClasses = ["tyk-combobox__list"]; + if (opened) { + cssClasses.push("tyk-combobox__list--opened"); + } + if (tags) { + cssClasses.push("tyk-combobox__list--has-tags"); + } + if (themes.length) { + themes.forEach((iTheme) => { + cssClasses.push(`tyk-form-group--${iTheme}`); + }); + } + return cssClasses.join(" "); + } + getCssClasses() { + const { + error, + disabled, + theme, + labelwidth + } = this.props; + const cssClasses = ["tyk-form-group", "tyk-combobox"]; + const themes = theme ? theme.split(" ") : []; + if (error) { + cssClasses.push("has-error"); + } + if (labelwidth) { + cssClasses.push("tyk-form-group--label-has-width"); + } + if (themes.length) { + themes.forEach((iTheme) => { + cssClasses.push(`tyk-form-group--${iTheme}`); + }); + } + if (disabled) { + cssClasses.push("disabled"); + } + return cssClasses.join(" "); + } + getInputError() { + const { error } = this.props; + return error && error !== "true" && error !== "false" ? /* @__PURE__ */ external_react_default().createElement( + "p", + { + className: "tyk-form-control__error-message" + }, + error + ) : null; + } + getStyles() { + const { scrollTop } = document.documentElement; + const el = this.comboboxRef.current; + const elHeight = el.offsetHeight; + const elWidth = el.offsetWidth; + const offset = el.getBoundingClientRect(); + const { left } = offset; + let top = 0; + top = offset.top + scrollTop + elHeight; + return { + top: `${top - 1}px`, + left: `${left}px`, + width: `${elWidth}px` + }; + } + getComboboxDisplayData() { + const { stateSelectedValues } = this.state; + const { multiple, placeholder, values } = this.props; + if (!stateSelectedValues) { + return placeholder; + } + if (stateSelectedValues && Array.isArray(stateSelectedValues) && !stateSelectedValues.length) { + return placeholder; + } + if (stateSelectedValues && !Array.isArray(stateSelectedValues) && !stateSelectedValues.id) { + return placeholder; + } + if (Array.isArray(stateSelectedValues) && multiple) { + return stateSelectedValues.reduce((prevValue, value, index) => prevValue + value.name + (index !== stateSelectedValues.length - 1 ? ", " : ""), ""); + } + if (values && values.length && !Array.isArray(stateSelectedValues) && !stateSelectedValues.name) { + return values.filter((value) => value.id === stateSelectedValues.id)[0].name; + } + return stateSelectedValues.name; + } + manageSelectedTags(index) { + const { max, allowCustomValues } = this.props; + const { stateSelectedValues } = this.state; + const filteredValues = this.filterValues(); + const value = { id: this.inputRef.current.value, name: this.inputRef.current.value }; + if (allowCustomValues === false && index === -1) { + return null; + } + const tempValue = filteredValues[index] || value; + const selectedIndex = this.getSelectedIndex(tempValue); + let selectedValues = {}; + this.inputRef.current.value = ""; + if (selectedIndex > -1 && this.isInInitialValues(tempValue)) { + selectedValues = this.removeSelectedValue(selectedIndex); + } else if (selectedIndex === -1) { + if (max && stateSelectedValues.length >= max) { + return selectedValues; + } + selectedValues = this.addSelectedValue(tempValue); + } + return selectedValues; + } + manageSelectedValues(index) { + const { stateSelectedValues } = this.state; + const { + multiple, + onChange, + max + } = this.props; + const filteredValues = this.filterValues(); + const tempSelectedValues = filteredValues[index]; + let selectedValues; + const selectedIndex = this.getSelectedIndex(tempSelectedValues); + if (tempSelectedValues && multiple) { + if (selectedIndex > -1) { + selectedValues = this.removeSelectedValue(selectedIndex); + } else { + if (max && stateSelectedValues.length >= max) { + return selectedValues; + } + selectedValues = this.addSelectedValue(filteredValues[index]); + } + } else { + selectedValues = { + stateSelectedValues: selectedIndex === -1 ? tempSelectedValues : { id: null } + }; + if (onChange && typeof onChange === "function") { + onChange(selectedIndex === -1 ? tempSelectedValues : null); + } + } + return selectedValues; + } + removeSelectedValue(index) { + const { stateSelectedValues } = this.state; + const { onChange } = this.props; + const tempStateSelectedValues = JSON.parse(JSON.stringify(stateSelectedValues)); + tempStateSelectedValues.splice(index, 1); + if (onChange && typeof onChange === "function") { + onChange(tempStateSelectedValues.length ? tempStateSelectedValues : null); + } + return { + stateSelectedValues: tempStateSelectedValues, + searchText: "" + }; + } + addSelectedValue(value) { + const { stateSelectedValues } = this.state; + const { onChange } = this.props; + const tempStateSelectedValues = JSON.parse(JSON.stringify(stateSelectedValues)); + tempStateSelectedValues.push(value); + if (onChange && typeof onChange === "function") { + onChange(tempStateSelectedValues.length ? tempStateSelectedValues : null); + } + return { + stateSelectedValues: tempStateSelectedValues, + searchText: "" + }; + } + isInInitialValues(value) { + const { values } = this.props; + let ok = false; + values.forEach((item) => { + if (value.id === item.id) { + ok = true; + } + }); + return ok; + } + filterValues() { + const { values, searchItem } = this.props; + if (!this.inputRef.current) { + return values; + } + const arr = values.filter( + (value) => searchItem ? searchItem(value, this.inputRef.current.value.toLowerCase()) : _Combobox.filterByName(value, this.inputRef.current.value.toLowerCase()) + ); + return arr; + } + bindEvents() { + document.addEventListener("mousedown", this.handleClickOutside); + } + unBindEvents() { + document.removeEventListener("mousedown", this.handleClickOutside); + } + handleItemsNavigation(e) { + const { tags } = this.props; + if (["ArrowDown", "ArrowUp"].indexOf(e.key) === -1) { + return; + } + const { cursor } = this.state; + const filteredValues = this.filterValues(); + let cursorNext; + e.preventDefault(); + if (e.key === "ArrowDown") { + if (cursor === -1 || cursor === filteredValues.length - 1) { + cursorNext = 0; + } else if (cursor < filteredValues.length - 1) { + cursorNext = cursor + 1; + } + } + if (e.key === "ArrowUp") { + if (cursor > 0) { + cursorNext = cursor - 1; + } else { + cursorNext = filteredValues.length - 1; + } + } + if (this.valuesListRef.current && cursorNext > 4) { + const scrollTop = (cursorNext - 4) * 38; + this.valuesListRef.current.scrollTop = !tags ? 60 + scrollTop : scrollTop; + } else if (this.valuesListRef.current) { + this.valuesListRef.current.scrollTop = 0; + } + this.setState((previousState) => Combobox_spreadProps(Combobox_spreadValues({}, previousState), { + opened: true, + cursor: cursorNext + })); + } + handleListItemClick(index) { + const clickedValue = this.props.values[index]; + if (clickedValue.disabled) + return; + const { multiple, tags } = this.props; + const methodName = tags ? "manageSelectedTags" : "manageSelectedValues"; + const tempState = Object.assign({}, this.state, this[methodName](index)); + this.setState((previousState) => { + if (!multiple && !tags) { + tempState.opened = false; + } + return Object.assign({}, previousState, tempState); + }); + } + handlePillRemoveClick(index) { + const { disabled } = this.props; + if (disabled) { + return; + } + const tempState = this.removeSelectedValue(index); + this.setState((previousState) => Object.assign({}, previousState, tempState)); + } + handleClickOutside(event) { + if (this.valuesListRef.current && !this.valuesListRef.current.contains(event.target) && this.comboboxRef.current && !this.comboboxRef.current.contains(event.target)) { + this.setState((previousState) => Object.assign({}, previousState, _Combobox.closeList())); + } + } + handleComboboxDropdownClick() { + const { disabled } = this.props; + if (disabled) { + return; + } + this.setState((previousState) => Object.assign({}, previousState, _Combobox.openList())); + } + reset() { + const { multiple, tags, value } = this.props; + this.setState({ + stateSelectedValues: getStateSelectedValues(multiple, tags, value) + }); + } + focusInput() { + if (this.inputRef.current) { + this.inputRef.current.focus(); + } + } + render() { + const { + CustomListComponent, + disabled, + id, + label, + note, + tags, + max, + placeholder + } = this.props; + const { + width, + opened, + searchText, + stateSelectedValues + } = this.state; + const filteredValues = this.filterValues(); + return /* @__PURE__ */ external_react_default().createElement( + external_react_namespaceObject.Fragment, + null, + /* @__PURE__ */ external_react_default().createElement("div", { className: this.getCssClasses() }, label ? /* @__PURE__ */ external_react_default().createElement("label", { htmlFor: id, style: this.getLabelStyles() }, label) : null, /* @__PURE__ */ external_react_default().createElement( + "div", + { + className: "tyk-form-control__wrapper", + style: this.getNonLabelWidth() + }, + /* @__PURE__ */ external_react_default().createElement( + "ul", + { + className: `tyk-form-control${tags ? " tyk-form-control--with-tags" : ""}`, + onClick: this.focusInput, + onKeyDown: () => { + }, + ref: this.comboboxRef + }, + tags ? /* @__PURE__ */ external_react_default().createElement(external_react_namespaceObject.Fragment, null, (stateSelectedValues || []).map((value, index) => /* @__PURE__ */ external_react_default().createElement("li", { className: "pill", key: value.id }, /* @__PURE__ */ external_react_default().createElement("button", { type: "button", onClick: this.handlePillRemoveClick.bind(this, index) }, /* @__PURE__ */ external_react_default().createElement(components_Icon, { type: "times" })), /* @__PURE__ */ external_react_default().createElement("span", null, value.name))), /* @__PURE__ */ external_react_default().createElement( + "li", + { + className: "tyk-combobox__search-box", + style: { + width: !stateSelectedValues || !stateSelectedValues.length ? "100%" : "auto" + } + }, + (max === void 0 || (stateSelectedValues == null ? void 0 : stateSelectedValues.length) < max) && /* @__PURE__ */ external_react_default().createElement((external_react_default()).Fragment, null, /* @__PURE__ */ external_react_default().createElement( + "input", + { + className: "tyk-form-control", + disabled, + onKeyPress: (e) => { + if (e.key === "Enter") { + e.preventDefault(); + } + }, + onKeyUp: this.onKeyUp, + onKeyDown: this.handleItemsNavigation, + placeholder: !stateSelectedValues || !stateSelectedValues.length ? placeholder : "", + ref: this.inputRef, + style: { + width: !stateSelectedValues || !stateSelectedValues.length ? "100%" : `${width}px` + } + } + ), /* @__PURE__ */ external_react_default().createElement( + "span", + { + ref: this.textRef, + style: { + visbility: "hidden", + position: "absolute", + top: "-9999px" + } + }, + searchText + )), + filteredValues.length ? /* @__PURE__ */ external_react_default().createElement( + components_Button, + { + className: "tyk-combobox--with-tags__button-down", + iconType: "arrow-down", + iconOnly: true, + onClick: this.handleComboboxDropdownClick + } + ) : null + )) : /* @__PURE__ */ external_react_default().createElement( + "li", + { + className: "tyk-combobox__placeholder", + onClick: this.handleComboboxDropdownClick, + onKeyDown: () => { + } + }, + this.getComboboxDisplayData(), + /* @__PURE__ */ external_react_default().createElement(components_Icon, { family: "tykon", type: "arrowdown" }) + ) + ), + note ? /* @__PURE__ */ external_react_default().createElement("p", { className: "tyk-form-control__help-block" }, note) : null, + this.getInputError() + )), + // eslint-disable-next-line no-nested-ternary + !CustomListComponent ? opened && filteredValues.length ? external_react_dom_default().createPortal( + /* @__PURE__ */ external_react_default().createElement( + "ul", + { + className: this.getComboboxListCssClass(), + ref: this.valuesListRef, + style: this.getStyles() + }, + !tags ? /* @__PURE__ */ external_react_default().createElement("li", { className: "combobox-search__container" }, /* @__PURE__ */ external_react_default().createElement( + "input", + { + autoFocus: opened, + className: "tyk-form-control", + onKeyUp: this.onKeyUp, + onKeyDown: this.handleItemsNavigation, + key: "searchInput", + ref: this.inputRef + } + )) : null, + filteredValues.map((value, index) => /* @__PURE__ */ external_react_default().createElement( + "li", + { + className: this.getListItemCssClasses(value, index), + onClick: this.handleListItemClick.bind(this, index), + onKeyDown: () => { + }, + key: value.id + }, + this.getSelectedIndex(value) > -1 ? /* @__PURE__ */ external_react_default().createElement(components_Icon, { type: "check" }) : null, + /* @__PURE__ */ external_react_default().createElement("span", null, " ", value.name) + )) + ), + document.querySelector("body") + ) : null : /* @__PURE__ */ external_react_default().createElement( + CustomListComponent, + { + ref: this.valuesListRef, + className: this.getComboboxListCssClass(), + getListItemCssClasses: this.getListItemCssClasses.bind(this), + getSelectedIndex: this.getSelectedIndex.bind(this), + filteredValues, + handleListItemClick: this.handleListItemClick.bind(this) + } + ) + ); + } +}; +Combobox_publicField(_Combobox, "propTypes", { + allowCustomValues: (external_prop_types_default()).bool, + CustomListComponent: (external_prop_types_default()).elementType, + searchItem: (external_prop_types_default()).func, + disabled: (external_prop_types_default()).bool, + error: (external_prop_types_default()).string, + id: (external_prop_types_default()).string, + label: external_prop_types_default().oneOfType([ + external_prop_types_default().arrayOf((external_prop_types_default()).node), + (external_prop_types_default()).node, + (external_prop_types_default()).element, + (external_prop_types_default()).func, + (external_prop_types_default()).string + ]), + labelwidth: (external_prop_types_default()).string, + multiple: (external_prop_types_default()).bool, + max: (external_prop_types_default()).number, + note: external_prop_types_default().oneOfType([ + (external_prop_types_default()).node, + (external_prop_types_default()).element, + (external_prop_types_default()).string + ]), + onChange: (external_prop_types_default()).func, + placeholder: (external_prop_types_default()).string, + tags: (external_prop_types_default()).bool, + theme: (external_prop_types_default()).string, + value: external_prop_types_default().oneOfType([ + (external_prop_types_default()).string, + external_prop_types_default().instanceOf(Object), + external_prop_types_default().instanceOf(Array) + ]), + values: external_prop_types_default().instanceOf(Array) +}); +Combobox_publicField(_Combobox, "defaultProps", { + allowCustomValues: true +}); +let Combobox = _Combobox; + + +;// CONCATENATED MODULE: ./src/form/components/Combobox2/js/Value.js + + + +function Value(props) { + const { + value, + max, + tags, + tagSeparators, + addTagOnBlur, + placeholder, + disabled, + renderValue, + valueOverflow, + focus, + onMessage: sendMessage, + readOnly + } = props; + const INPUT_MIN_WIDTH = 60; + const inputRef = (0,external_react_namespaceObject.useRef)(null); + const dummyElementRef = (0,external_react_namespaceObject.useRef)(null); + const [inputValue, setInputValue] = (0,external_react_namespaceObject.useState)(""); + const [inputWidth, setInputWidth] = (0,external_react_namespaceObject.useState)(`${INPUT_MIN_WIDTH + 10}px`); + function entryFieldOnChange(val) { + if (tagSeparators.some((ts) => val.slice(-1) === ts)) + return; + const dummy = dummyElementRef.current; + dummy.innerHTML = val; + setInputWidth(`${Math.max(dummy.clientWidth, INPUT_MIN_WIDTH) + 10}px`); + setInputValue(val); + sendMessage("tag.input.change", val); + } + function entryFieldOnKeyDown(key, val) { + if (!tags) + return; + if (val === "" && key === "Backspace" && value.length) { + sendMessage("tag.remove", value[value.length - 1].id); + return; + } + if (key === "Enter") { + sendMessage("tag.input.enter", val); + entryFieldOnChange(""); + return; + } + if (key === "ArrowUp") { + sendMessage("tag.input.arrowUp"); + return; + } + if (key === "ArrowDown") { + sendMessage("tag.input.arrowDown"); + return; + } + if (key === "Escape") { + sendMessage("tag.input.escape"); + return; + } + if (tagSeparators.includes(key)) { + sendMessage("tag.add", val); + entryFieldOnChange(""); + } + } + function triggerAction() { + sendMessage("text-value.click"); + } + function textValue(val, isPlaceholder = false) { + if (readOnly) + return val || "-"; + const classes = [ + "tyk-combobox2__text-value", + `overflow-${valueOverflow}`, + isPlaceholder && "is-placeholder" + ].filter(Boolean).join(" "); + return /* @__PURE__ */ external_react_default().createElement( + "span", + { + className: classes, + title: valueOverflow === "single" ? val : void 0, + role: "none", + tabIndex: disabled ? "-1" : "0", + onClick: triggerAction, + onKeyPress: triggerAction + }, + val + ); + } + function renderCustomValue(v) { + const config = { + tags, + tagSeparators, + placeholder, + disabled, + renderValue, + sendMessage + }; + return renderValue(v, config); + } + function renderTag(v) { + if (renderValue) + return renderCustomValue(v); + return /* @__PURE__ */ external_react_default().createElement( + components_Pill, + { + key: v.id, + theme: "combobox" + }, + /* @__PURE__ */ external_react_default().createElement( + "button", + { + type: "button", + onClick: (e) => { + e.stopPropagation(); + sendMessage("tag.remove", v.id); + } + }, + /* @__PURE__ */ external_react_default().createElement(components_Icon, { type: "times" }) + ), + /* @__PURE__ */ external_react_default().createElement("span", { title: v.name }, v.name) + ); + } + function getTags() { + return /* @__PURE__ */ external_react_default().createElement((external_react_default()).Fragment, null, value.map(renderTag), value.length < max && /* @__PURE__ */ external_react_default().createElement((external_react_default()).Fragment, null, /* @__PURE__ */ external_react_default().createElement( + "input", + { + className: "tyk-combobox2__entry-field", + ref: inputRef, + placeholder: value.length ? "" : placeholder, + disabled, + value: inputValue, + style: { width: value.length ? inputWidth : "100%" }, + onChange: (e) => entryFieldOnChange(e.target.value), + onKeyDown: (e) => { + if (e.key === "Enter") + e.preventDefault(); + entryFieldOnKeyDown(e.key, e.target.value); + }, + onFocus: () => sendMessage("tag.input.focus"), + onBlur: (e) => { + sendMessage("tag.input.blur", e.target.value); + if (addTagOnBlur) + entryFieldOnChange(""); + } + } + ), /* @__PURE__ */ external_react_default().createElement( + "span", + { + ref: dummyElementRef, + style: { + visbility: "hidden", + position: "absolute", + top: "-9999px" + } + } + ))); + } + (0,external_react_namespaceObject.useEffect)(() => { + if (focus && inputRef.current) + inputRef.current.focus(); + }, [focus]); + if (readOnly) { + return /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-form-control--readonly" }, textValue(value.map((v) => v.name).join(", "))); + } + if (tags) + return getTags(); + if (renderValue) { + return value.length === 0 ? textValue(placeholder, true) : value.map(renderCustomValue); + } + return value.length === 0 ? textValue(placeholder, true) : textValue(value.map((v) => v.name).join(", ")); +} +/* harmony default export */ const js_Value = (Value); + +;// CONCATENATED MODULE: ./src/form/components/Combobox2/js/List.js + + + +function List_List(props) { + const { + listRef, + tags, + values, + searchValue, + activeItem, + onMessage: sendMessage, + renderListItem, + selectAll, + showSearch + } = props; + (0,external_react_namespaceObject.useEffect)(() => { + if (!listRef.current) + return; + const activeElement = listRef.current.querySelector(".active"); + if (activeElement) + activeElement.scrollIntoView({ block: "end" }); + }, [activeItem]); + function renderItem(item) { + if (renderListItem) { + return renderListItem(item, { + tags, + searchValue, + sendMessage, + activeItem + }); + } + return /* @__PURE__ */ external_react_default().createElement( + "li", + { + key: item.id, + title: item.name, + className: [ + item.disabled && "disabled", + activeItem && item.id === activeItem.id && "active" + ].filter(Boolean).join(" "), + onClick: () => !item.disabled && sendMessage("value.select", { item }), + onKeyPress: () => { + } + }, + item.selected && /* @__PURE__ */ external_react_default().createElement(components_Icon, { type: "check" }), + /* @__PURE__ */ external_react_default().createElement("span", { className: "item-name" }, item.name) + ); + } + function renderSelectAllOption() { + var _a, _b, _c; + const isAllSelected = values.every((v) => v.selected); + const isNoneSelected = values.every((v) => !v.selected); + const label = (_a = selectAll == null ? void 0 : selectAll.label) != null ? _a : "Select All"; + const mode = (_b = selectAll == null ? void 0 : selectAll.mode) != null ? _b : "select"; + const show = (_c = selectAll == null ? void 0 : selectAll.show) != null ? _c : "always"; + const render = selectAll == null ? void 0 : selectAll.render; + const shouldRenderOption = show === "always" || (mode === "select" ? !isAllSelected : !isNoneSelected); + if (!shouldRenderOption) + return null; + if (render) { + return render({ + label, + mode, + show, + isAllSelected, + isNoneSelected + }, sendMessage); + } + return /* @__PURE__ */ external_react_default().createElement( + "li", + { + onClick: () => sendMessage("value.select-all", mode === "select" ? !isAllSelected : isNoneSelected), + onKeyDown: () => { + } + }, + (mode === "select" ? isAllSelected : isNoneSelected) && /* @__PURE__ */ external_react_default().createElement(components_Icon, { type: "check" }), + label + ); + } + return /* @__PURE__ */ external_react_default().createElement((external_react_default()).Fragment, null, !tags && showSearch && /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-combobox2__combobox-search" }, /* @__PURE__ */ external_react_default().createElement( + "input", + { + autoFocus: true, + className: "tyk-form-control", + value: searchValue, + onChange: (e) => sendMessage("search.change", e.target.value), + onKeyDown: (e) => { + if (e.key === "Escape") + sendMessage("search.escape"); + if (e.key === "ArrowUp") + sendMessage("search.arrowUp"); + if (e.key === "ArrowDown") + sendMessage("search.arrowDown"); + if (e.key === "Enter") + sendMessage("search.enter"); + } + } + )), values.length > 0 && /* @__PURE__ */ external_react_default().createElement("ul", { ref: listRef, className: "tyk-combobox2__combobox-list" }, Boolean(selectAll) && renderSelectAllOption(), values.map(renderItem))); +} +List_List.propTypes = { + listRef: external_prop_types_default().instanceOf(Object), + tags: (external_prop_types_default()).bool, + values: external_prop_types_default().instanceOf(Array), + searchValue: (external_prop_types_default()).string, + activeItem: external_prop_types_default().instanceOf(Object), + onMessage: (external_prop_types_default()).func, + renderListItem: (external_prop_types_default()).func, + selectAll: external_prop_types_default().oneOfType([ + (external_prop_types_default()).bool, + external_prop_types_default().shape({ + label: external_prop_types_default().oneOfType([ + external_prop_types_default().arrayOf((external_prop_types_default()).node), + (external_prop_types_default()).node, + (external_prop_types_default()).element, + (external_prop_types_default()).func, + (external_prop_types_default()).string + ]), + mode: external_prop_types_default().oneOf(["select", "unselect"]), + show: external_prop_types_default().oneOf(["always", "notSameState"]), + render: (external_prop_types_default()).func + }) + ]), + showSearch: (external_prop_types_default()).bool +}; +/* harmony default export */ const js_List = (List_List); + +;// CONCATENATED MODULE: ./src/form/components/Combobox2/index.js +var Combobox2_defProp = Object.defineProperty; +var Combobox2_defProps = Object.defineProperties; +var Combobox2_getOwnPropDescs = Object.getOwnPropertyDescriptors; +var Combobox2_getOwnPropSymbols = Object.getOwnPropertySymbols; +var Combobox2_hasOwnProp = Object.prototype.hasOwnProperty; +var Combobox2_propIsEnum = Object.prototype.propertyIsEnumerable; +var Combobox2_defNormalProp = (obj, key, value) => key in obj ? Combobox2_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var Combobox2_spreadValues = (a, b) => { + for (var prop in b || (b = {})) + if (Combobox2_hasOwnProp.call(b, prop)) + Combobox2_defNormalProp(a, prop, b[prop]); + if (Combobox2_getOwnPropSymbols) + for (var prop of Combobox2_getOwnPropSymbols(b)) { + if (Combobox2_propIsEnum.call(b, prop)) + Combobox2_defNormalProp(a, prop, b[prop]); + } + return a; +}; +var Combobox2_spreadProps = (a, b) => Combobox2_defProps(a, Combobox2_getOwnPropDescs(b)); +var Combobox2_objRest = (source, exclude) => { + var target = {}; + for (var prop in source) + if (Combobox2_hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) + target[prop] = source[prop]; + if (source != null && Combobox2_getOwnPropSymbols) + for (var prop of Combobox2_getOwnPropSymbols(source)) { + if (exclude.indexOf(prop) < 0 && Combobox2_propIsEnum.call(source, prop)) + target[prop] = source[prop]; + } + return target; +}; + + + + + + +function normalizeValue(value, values) { + let v = value; + if (typeof value === "string") + v = { id: value, name: value }; + else if (!value.hasOwnProperty("name")) + v = Combobox2_spreadProps(Combobox2_spreadValues({}, value), { name: value.id }); + if (!values) + return v; + const existingVal = values.find((ev) => ev.id === v.id); + return existingVal ? Combobox2_spreadValues(Combobox2_spreadValues({}, v), existingVal) : v; +} +function getValueFromProp(value, values) { + if (!value) + return []; + if (Array.isArray(value)) + return value.map((v) => normalizeValue(v, values)); + return [normalizeValue(value, values)]; +} +function Combobox2(_a) { + var _b = _a, { + value: propValue, + values: propValues = [], + valueOverflow = "single", + label = "", + labelwidth, + tags = false, + tagSeparators = [" ", "Enter"], + addTagOnBlur = false, + max: maxProp, + multiple = false, + placeholder = "", + theme, + note = "", + error = "", + disabled = false, + readOnly = false, + allowCustomValues = true, + searchItem: matchItemFn, + renderValue, + renderListItem, + renderList: renderListProp, + CustomListComponent, + onBeforeChange = () => true, + onChange = () => { + }, + floatingContainerConfig, + expandMode, + infiniteScrollerConfig, + displayDropdownTrigger = true, + selectAll, + closeOnSelect, + showSearch = false, + required = false, + validateOnChange = () => { + }, + wrapperClassName = "" + } = _b, restProps = Combobox2_objRest(_b, [ + "value", + "values", + "valueOverflow", + "label", + "labelwidth", + "tags", + "tagSeparators", + "addTagOnBlur", + "max", + "multiple", + "placeholder", + "theme", + "note", + "error", + "disabled", + "readOnly", + "allowCustomValues", + "searchItem", + "renderValue", + "renderListItem", + "renderList", + "CustomListComponent", + "onBeforeChange", + "onChange", + "floatingContainerConfig", + "expandMode", + "infiniteScrollerConfig", + "displayDropdownTrigger", + "selectAll", + "closeOnSelect", + "showSearch", + "required", + "validateOnChange", + "wrapperClassName" + ]); + const max = multiple ? Infinity : maxProp || (tags ? Infinity : 1); + const renderList = CustomListComponent ? (values2, { sendMessage }) => /* @__PURE__ */ external_react_default().createElement( + CustomListComponent, + { + filteredValues: values2, + handleListItemClick: (index) => sendMessage("value.select", { item: values2[index] }), + getListItemCssClasses: () => { + } + } + ) : renderListProp; + const rootRef = (0,external_react_namespaceObject.useRef)(null); + const comboboxControlRef = (0,external_react_namespaceObject.useRef)(null); + const dropdownRef = (0,external_react_namespaceObject.useRef)(null); + const listRef = (0,external_react_namespaceObject.useRef)(null); + const [value, setValue] = (0,external_react_namespaceObject.useState)(getValueFromProp(propValue, propValues)); + const [values, setValues] = (0,external_react_namespaceObject.useState)(propValues.map((v) => normalizeValue(v))); + const [searchValue, setSearchValue] = (0,external_react_namespaceObject.useState)(""); + const [activeItem, setActiveItem] = (0,external_react_namespaceObject.useState)(null); + const [isOpened, setIsOpened] = (0,external_react_namespaceObject.useState)(false); + const [valuesExpanded, setValuesExpanded] = (0,external_react_namespaceObject.useState)(false); + const [localValidationError, setLocalValidationError] = (0,external_react_namespaceObject.useState)(""); + function getThemeClasses() { + const themes = theme ? theme.split(" ") : []; + return themes.map((iTheme) => `tyk-form-group--${iTheme}`); + } + function getCssClasses() { + return [ + wrapperClassName, + "tyk-form-group", + "tyk-combobox2", + ...getThemeClasses(), + (error || localValidationError) && "has-error", + labelwidth && "tyk-form-group--label-has-width", + disabled && "disabled", + expandMode && "is-expand-mode" + ].filter(Boolean).join(" "); + } + function getFilteredValues() { + const defaultFn = (v, s) => { + var _a2, _b2; + return (_b2 = (_a2 = v == null ? void 0 : v.name) == null ? void 0 : _a2.toLowerCase()) == null ? void 0 : _b2.includes(s); + }; + const fn = matchItemFn || defaultFn; + const filteredValues2 = values.filter((v) => fn(v, searchValue.toLowerCase())); + return filteredValues2; + } + function openDropdown() { + setIsOpened(true); + } + function closeDropdown() { + setIsOpened(false); + if (!tags) + updateSearchValue(""); + setActiveItem(null); + } + function updateSearchValue(newSearchValue) { + setSearchValue(newSearchValue); + if (activeItem && getFilteredValues().every((fv) => fv.id !== activeItem.id)) { + setActiveItem(null); + } + if (newSearchValue && !isOpened) + openDropdown(); + } + function isValidValue(newValues, lastValue) { + const localError = validateOnChange(newValues, lastValue); + setLocalValidationError(localError); + return localError === void 0; + } + function updateValue(newValues) { + setValue(newValues); + onChange(max === 1 && !tags ? newValues[0] || null : newValues); + } + function addTag(val) { + if (!val) + return; + if (value.length >= max) + return; + if (value.some(({ name }) => name === val)) + return; + const listValueIndex = values.findIndex((lv) => lv.name === val); + let newValue; + let finalValue = [...value]; + let selectedValues; + if (listValueIndex === -1) { + if (allowCustomValues) { + newValue = { id: val, name: val }; + finalValue = [...value, newValue]; + } + } else { + selectedValues = [ + ...values.slice(0, listValueIndex), + Combobox2_spreadProps(Combobox2_spreadValues({}, values[listValueIndex]), { selected: true }), + ...values.slice(listValueIndex + 1) + ]; + newValue = values[listValueIndex]; + finalValue = [...value, values[listValueIndex]]; + } + if (isValidValue(finalValue, newValue) && onBeforeChange(value, finalValue)) { + if (selectedValues) { + setValues(selectedValues); + } + updateValue(finalValue); + } + } + function removeTag(id) { + if (required && max === 1) + return; + const listValueIndex = values.findIndex((lv) => lv.id === id); + const newValue = value.filter((v) => v.id !== id); + if (!onBeforeChange(value, newValue)) + return; + if (listValueIndex !== -1) { + setValues([ + ...values.slice(0, listValueIndex), + Combobox2_spreadProps(Combobox2_spreadValues({}, values[listValueIndex]), { selected: false }), + ...values.slice(listValueIndex + 1) + ]); + } + updateValue(newValue); + } + function selectValue({ id }) { + const val = values.find((v) => v.id === id); + let finalValue = value; + let selectedValues = values; + if (val.selected) { + if (!required || max !== 1) { + finalValue = value.filter((v) => v.id !== val.id); + selectedValues = values.map((v) => v.id === val.id ? Combobox2_spreadProps(Combobox2_spreadValues({}, v), { selected: false }) : v); + } + } else if (value.length < max) { + finalValue = [...value, val]; + selectedValues = values.map((v) => v.id === val.id ? Combobox2_spreadProps(Combobox2_spreadValues({}, v), { selected: true }) : v); + } else if (max === 1) { + finalValue = [val]; + selectedValues = values.map((v) => Combobox2_spreadProps(Combobox2_spreadValues({}, v), { selected: v.id === val.id })); + } + if (isValidValue(finalValue, val) && onBeforeChange(value, finalValue)) { + updateValue(finalValue); + setValues(selectedValues); + } + if (max === 1 || closeOnSelect) { + closeDropdown(); + } + } + function selectAllValues(selected) { + if (values.length > max) + return; + const newValue = selected ? [...values] : []; + if (!onBeforeChange(value, newValue)) + return; + updateValue(newValue); + setValues(values.map((v) => Combobox2_spreadProps(Combobox2_spreadValues({}, v), { selected }))); + if (closeOnSelect) + closeDropdown(); + } + function moveUpActiveItem() { + const visibleItems = getFilteredValues().filter((v) => !v.disabled); + if (visibleItems.length === 0) + return; + if (activeItem === null || visibleItems.length === 1) { + setActiveItem(visibleItems[visibleItems.length - 1]); + return; + } + const activeIndex = visibleItems.findIndex((v) => v.id === activeItem.id); + setActiveItem(visibleItems[activeIndex > 0 ? activeIndex - 1 : visibleItems.length - 1]); + } + function moveDownActiveItem() { + const visibleItems = getFilteredValues().filter((v) => !v.disabled); + if (visibleItems.length === 0) + return; + if (activeItem === null || visibleItems.length === 1) { + setActiveItem(visibleItems[0]); + return; + } + const activeIndex = visibleItems.findIndex((v) => v.id === activeItem.id); + setActiveItem(visibleItems[activeIndex < visibleItems.length - 1 ? activeIndex + 1 : 0]); + } + function executeTriggerAction() { + if (expandMode) { + setValuesExpanded(!valuesExpanded); + } else { + openDropdown(); + } + } + function handleDocumentClick(e) { + const isClickInside = rootRef.current && rootRef.current.contains(e.target) || dropdownRef.current && dropdownRef.current.contains(e.target); + if (!isClickInside) { + closeDropdown(); + } + } + function onClickCapture(e) { + if (!disabled) + return; + if (!expandMode) { + e.stopPropagation(); + return; + } + const triggerElement = rootRef.current.querySelector(".tyk-combobox2__values-container-trigger"); + if (!triggerElement) + return; + const isClickOnTrigger = triggerElement === e.target || triggerElement.contains(e.target); + if (!isClickOnTrigger) + e.stopPropagation(); + } + function onTagMessage(message, data) { + if (message === "add") { + addTag(data); + updateSearchValue(""); + } + if (message === "remove") + removeTag(data); + if (message === "input.change") + updateSearchValue(data); + if (message === "input.enter") { + if (activeItem) { + selectValue(activeItem); + } else if (tagSeparators.includes("Enter")) { + addTag(data); + updateSearchValue(""); + } + } + if (message === "input.arrowUp") { + openDropdown(); + moveUpActiveItem(); + } + if (message === "input.arrowDown") { + openDropdown(); + moveDownActiveItem(); + } + if (message === "input.escape") + closeDropdown(); + if (message === "input.blur" && addTagOnBlur) { + addTag(data); + updateSearchValue(""); + } + if (message === "input.focus") { + openDropdown(); + } + } + function onMessage(message, data) { + if (message.startsWith("tag.")) + onTagMessage(message.slice(4), data); + if (message === "value.select") + selectValue(data.item); + if (message === "value.select-all") + selectAllValues(data); + if (message === "text-value.click") + openDropdown(); + if (message === "search.change") + updateSearchValue(data); + if (message === "search.escape") + closeDropdown(); + if (message === "search.arrowUp") + moveUpActiveItem(); + if (message === "search.arrowDown") + moveDownActiveItem(); + if (message === "search.enter") { + if (activeItem) + selectValue(activeItem); + } + } + (0,external_react_namespaceObject.useEffect)(() => { + window.addEventListener("click", handleDocumentClick, true); + return () => window.removeEventListener("click", handleDocumentClick, true); + }, []); + (0,external_react_namespaceObject.useEffect)(() => { + if (propValues.length) { + const newValues = propValues.map((v) => Combobox2_spreadProps(Combobox2_spreadValues({}, normalizeValue(v)), { + selected: value.some((sv) => sv.id === v.id) + })); + setValues(newValues); + setValue((val) => val.map((v) => newValues.find((nv) => nv.id === v.id) || v)); + } else if (values.length) { + setValues([]); + } + }, [propValues]); + (0,external_react_namespaceObject.useEffect)(() => { + const newValue = getValueFromProp(propValue, values); + setValue(newValue); + setValues((vals) => vals.map((v) => Combobox2_spreadProps(Combobox2_spreadValues({}, normalizeValue(v)), { + selected: newValue.some((nv) => nv.id === v.id) + }))); + }, [propValue]); + (0,external_react_namespaceObject.useEffect)(() => { + if (!expandMode) + return () => { + }; + const valuesElement = comboboxControlRef.current.querySelector(".tyk-combobox2__current-values"); + const updateScroll = () => { + valuesElement.scrollTop = valuesElement.scrollHeight; + }; + const mobserver = new MutationObserver(updateScroll); + const robserver = new ResizeObserver(updateScroll); + mobserver.observe(valuesElement, { attributes: true, childList: true, subtree: true }); + robserver.observe(valuesElement); + return () => { + mobserver.disconnect(); + robserver.disconnect(); + }; + }); + const filteredValues = getFilteredValues(); + const currentValuesClasses = [ + "tyk-combobox2__current-values", + expandMode && "expand-mode", + `tyk-combobox2__current-values--${valuesExpanded ? "expanded" : "collapsed"}` + ].join(" "); + return /* @__PURE__ */ external_react_default().createElement( + "div", + Combobox2_spreadProps(Combobox2_spreadValues({ + ref: rootRef, + tabIndex: disabled ? "-1" : "0", + onClickCapture + }, restProps), { + className: getCssClasses() + }), + label && /* @__PURE__ */ external_react_default().createElement("label", { style: { flexBasis: labelwidth || "auto" } }, label), + !readOnly && /* @__PURE__ */ external_react_default().createElement( + "div", + { + className: "tyk-form-control__wrapper", + style: { flexBasis: `calc(100% - ${labelwidth} - 20px)` } + }, + /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-form-control", ref: comboboxControlRef }, /* @__PURE__ */ external_react_default().createElement( + "div", + { + className: currentValuesClasses, + onClick: openDropdown, + role: "none" + }, + /* @__PURE__ */ external_react_default().createElement( + js_Value, + { + value, + max, + tags, + tagSeparators, + addTagOnBlur, + allowCustomValues, + placeholder, + disabled, + valueOverflow, + renderValue, + focus: isOpened, + onMessage, + readOnly + } + ) + ), displayDropdownTrigger && /* @__PURE__ */ external_react_default().createElement( + "div", + { + className: `tyk-combobox2__values-container-trigger${valuesExpanded ? " tyk-combobox2__values-container-trigger--expanded" : ""}`, + role: "button", + tabIndex: disabled ? -1 : 0, + onClick: executeTriggerAction, + onKeyPress: executeTriggerAction + }, + expandMode ? /* @__PURE__ */ external_react_default().createElement(components_Icon, { type: valuesExpanded ? "compress-arrows-alt" : "expand-arrows-alt" }) : /* @__PURE__ */ external_react_default().createElement(components_Icon, { family: "tykon", type: "arrowdown" }) + )), + isOpened && (!tags || filteredValues.length > 0) && /* @__PURE__ */ external_react_default().createElement( + components_FloatingContainer, + Combobox2_spreadProps(Combobox2_spreadValues({ + element: comboboxControlRef, + size: "matchElement", + className: `tyk-combobox2__combobox-dropdown tyk-form-group ${getThemeClasses().join(" ")}`, + ref: dropdownRef, + displayAxis: "vertical" + }, floatingContainerConfig), { + infiniteScrollerConfig + }), + renderList ? renderList(filteredValues, { + tags, + searchValue, + activeItem, + listRef, + sendMessage: onMessage + }) : /* @__PURE__ */ external_react_default().createElement( + js_List, + { + listRef, + showSearch, + values: filteredValues, + tags, + searchValue, + activeItem, + onMessage, + renderListItem, + selectAll + } + ) + ), + note && /* @__PURE__ */ external_react_default().createElement("p", { className: "tyk-form-control__help-block" }, note), + (error && error !== "true" && error !== "false" || Boolean(localValidationError)) && /* @__PURE__ */ external_react_default().createElement("p", { className: "tyk-form-control__error-message" }, error || localValidationError) + ), + readOnly && /* @__PURE__ */ external_react_default().createElement("div", null, /* @__PURE__ */ external_react_default().createElement( + js_Value, + { + value, + tags, + renderValue, + readOnly + } + )) + ); +} +Combobox2.propTypes = { + /** If `true` it allows entering values that are not in the list. */ + allowCustomValues: (external_prop_types_default()).bool, + /** Alias for `renderList` + * used for backwards compatibility with the old Combobox component. */ + CustomListComponent: (external_prop_types_default()).elementType, + /** A function used for filtering elements displayed in the list when typing in. */ + searchItem: (external_prop_types_default()).func, + /** A custom component that will be used to display a value. */ + renderValue: (external_prop_types_default()).func, + /** A custom component that will be used to display an item in the dropdown list. */ + renderListItem: (external_prop_types_default()).func, + /** A custom component that will be used to display the entire content of the dropdown. */ + renderList: (external_prop_types_default()).func, + disabled: (external_prop_types_default()).bool, + /** hides the UI form element and displayes just the value as text */ + readOnly: (external_prop_types_default()).bool, + error: (external_prop_types_default()).string, + label: external_prop_types_default().oneOfType([ + external_prop_types_default().arrayOf((external_prop_types_default()).node), + (external_prop_types_default()).node, + (external_prop_types_default()).element, + (external_prop_types_default()).func, + (external_prop_types_default()).string + ]), + labelwidth: (external_prop_types_default()).string, + /** The maximum number of values that can be selected/added. */ + max: (external_prop_types_default()).number, + /** Shorthand for max=Infinity */ + multiple: (external_prop_types_default()).bool, + note: external_prop_types_default().oneOfType([ + (external_prop_types_default()).node, + (external_prop_types_default()).element, + (external_prop_types_default()).string + ]), + /** + * Callback called before changing the value of the component. + * The value change will succeed only if the callback's return value is truthy. + * The callback is called with two arguments: 1) the previous value, 2) the next value */ + onBeforeChange: (external_prop_types_default()).func, + onChange: (external_prop_types_default()).func, + placeholder: (external_prop_types_default()).string, + /** Enables the display of values as `Pill` components that can be + * removed without opening the dropdown. */ + tags: (external_prop_types_default()).bool, + /** A list of characters that will trigger the creation of a tag when typed. */ + tagSeparators: external_prop_types_default().arrayOf((external_prop_types_default()).string), + /** If set to true a tag will be created whenever the component loses focus + * and there is something typed in. */ + addTagOnBlur: (external_prop_types_default()).bool, + theme: (external_prop_types_default()).string, + /** The value of the component. It can be a string, an array, + * or an object with an `id` property. */ + value: external_prop_types_default().oneOfType([ + (external_prop_types_default()).string, + external_prop_types_default().instanceOf(Array), + external_prop_types_default().instanceOf(Object) + ]), + /** An array of selectable values. */ + values: external_prop_types_default().instanceOf(Array), + /** Config object passed to the internal floating container component. */ + floatingContainerConfig: external_prop_types_default().instanceOf(Object), + /** If set to `single` it will display the values on a single line + * with an ellipsis at the end. */ + valueOverflow: external_prop_types_default().oneOf(["single", "multiple"]), + /** + * If set to `true` whenever the user clicks on the dropdown trigger + * the selected values container + * will expand to show all selected values instead of opening the dropdown. + */ + expandMode: (external_prop_types_default()).bool, + /** Config object passed to the internal infinite scroller component. */ + infiniteScrollerConfig: external_prop_types_default().instanceOf(Object), + /** Toggles the display of the dropdown trigger. */ + displayDropdownTrigger: (external_prop_types_default()).bool, + /** + * If a boolean it will toggle the select all functionality from the dropdown. + * It can also be an object with the shape `{ label, show, mode, render }`. + * label - A string displayed as the select all option + * show - It can be one of `['always', 'notSameState']`. + * `always` means the option will always be displayed. + * `notSameState` means it will be displayed only if the list items are + * not all with the same state (depending on the `mode` value) + * mode - It can be one of `['select', 'unselect']` and makes sense only + * when the `show` property is `notSameState` + * `select` means the select all option will only be displayed if not all + * items are selected + * `unselect` means the option will be displayed if no items are selected + */ + selectAll: external_prop_types_default().oneOfType([ + (external_prop_types_default()).bool, + external_prop_types_default().shape({ + label: external_prop_types_default().oneOfType([ + external_prop_types_default().arrayOf((external_prop_types_default()).node), + (external_prop_types_default()).node, + (external_prop_types_default()).element, + (external_prop_types_default()).func, + (external_prop_types_default()).string + ]), + mode: external_prop_types_default().oneOf(["select", "unselect"]), + show: external_prop_types_default().oneOf(["always", "notSameState"]), + render: (external_prop_types_default()).func + }) + ]), + /** It `true` the dropdown will close after selecting a value. */ + closeOnSelect: (external_prop_types_default()).bool, + /** Toggles the display of the search input from the dropdown. */ + showSearch: (external_prop_types_default()).bool, + /** If it is required and can only select one value once you have something + * selected you will not be able to deselect */ + required: (external_prop_types_default()).bool, + /** Validates newly added value before adding it to the selected values. + * Returns an error string in case of error otherwise it returns undefined + */ + validateOnChange: (external_prop_types_default()).func, + wrapperClassName: (external_prop_types_default()).string +}; +/* harmony default export */ const components_Combobox2 = (Combobox2); + +;// CONCATENATED MODULE: external "flatpickr" +const external_flatpickr_namespaceObject = require("flatpickr"); +var external_flatpickr_default = /*#__PURE__*/__webpack_require__.n(external_flatpickr_namespaceObject); +// EXTERNAL MODULE: ./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js +var injectStylesIntoStyleTag = __webpack_require__(379); +var injectStylesIntoStyleTag_default = /*#__PURE__*/__webpack_require__.n(injectStylesIntoStyleTag); +// EXTERNAL MODULE: ./node_modules/style-loader/dist/runtime/styleDomAPI.js +var styleDomAPI = __webpack_require__(795); +var styleDomAPI_default = /*#__PURE__*/__webpack_require__.n(styleDomAPI); +// EXTERNAL MODULE: ./node_modules/style-loader/dist/runtime/insertBySelector.js +var insertBySelector = __webpack_require__(569); +var insertBySelector_default = /*#__PURE__*/__webpack_require__.n(insertBySelector); +// EXTERNAL MODULE: ./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js +var setAttributesWithoutAttributes = __webpack_require__(565); +var setAttributesWithoutAttributes_default = /*#__PURE__*/__webpack_require__.n(setAttributesWithoutAttributes); +// EXTERNAL MODULE: ./node_modules/style-loader/dist/runtime/insertStyleElement.js +var insertStyleElement = __webpack_require__(216); +var insertStyleElement_default = /*#__PURE__*/__webpack_require__.n(insertStyleElement); +// EXTERNAL MODULE: ./node_modules/style-loader/dist/runtime/styleTagTransform.js +var styleTagTransform = __webpack_require__(589); +var styleTagTransform_default = /*#__PURE__*/__webpack_require__.n(styleTagTransform); +// EXTERNAL MODULE: ./node_modules/css-loader/dist/cjs.js!./node_modules/flatpickr/dist/flatpickr.min.css +var flatpickr_min = __webpack_require__(821); +;// CONCATENATED MODULE: ./node_modules/flatpickr/dist/flatpickr.min.css + + + + + + + + + + + +var options = {}; + +options.styleTagTransform = (styleTagTransform_default()); +options.setAttributes = (setAttributesWithoutAttributes_default()); + + options.insert = insertBySelector_default().bind(null, "head"); + +options.domAPI = (styleDomAPI_default()); +options.insertStyleElement = (insertStyleElement_default()); + +var update = injectStylesIntoStyleTag_default()(flatpickr_min/* default */.Z, options); + + + + + /* harmony default export */ const dist_flatpickr_min = (flatpickr_min/* default */.Z && flatpickr_min/* default */.Z.locals ? flatpickr_min/* default */.Z.locals : undefined); + +;// CONCATENATED MODULE: ./src/form/components/DatePicker/index.js +var DatePicker_defProp = Object.defineProperty; +var DatePicker_defProps = Object.defineProperties; +var DatePicker_getOwnPropDescs = Object.getOwnPropertyDescriptors; +var DatePicker_getOwnPropSymbols = Object.getOwnPropertySymbols; +var DatePicker_hasOwnProp = Object.prototype.hasOwnProperty; +var DatePicker_propIsEnum = Object.prototype.propertyIsEnumerable; +var DatePicker_defNormalProp = (obj, key, value) => key in obj ? DatePicker_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var DatePicker_spreadValues = (a, b) => { + for (var prop in b || (b = {})) + if (DatePicker_hasOwnProp.call(b, prop)) + DatePicker_defNormalProp(a, prop, b[prop]); + if (DatePicker_getOwnPropSymbols) + for (var prop of DatePicker_getOwnPropSymbols(b)) { + if (DatePicker_propIsEnum.call(b, prop)) + DatePicker_defNormalProp(a, prop, b[prop]); + } + return a; +}; +var DatePicker_spreadProps = (a, b) => DatePicker_defProps(a, DatePicker_getOwnPropDescs(b)); + + + + + + +function DatePicker({ + children, + disabled, + readOnly = false, + error, + id, + label, + labelwidth, + note, + onClose, + onChange, + onOpen, + theme, + config = {}, + value, + wrapperClassName = "" +}) { + const [pickerInstance, setPickerInstance] = (0,external_react_namespaceObject.useState)(null); + const dateRef = (0,external_react_namespaceObject.useRef)(null); + const prevValue = hooks_usePrevious(value); + const hasValueChanged = (0,external_react_namespaceObject.useCallback)((prevDate, currentDate) => { + if (!prevDate) + return true; + if (!Array.isArray(currentDate)) + return prevDate.getTime() !== currentDate.getTime(); + let diffDates = currentDate; + if (prevDate && currentDate.length && prevDate.length) { + diffDates = currentDate.filter((date, index) => date.getTime() !== prevDate[index].getTime()); + return diffDates.length > 0; + } + return currentDate.length > 0; + }, []); + const onDateChange = (0,external_react_namespaceObject.useCallback)((dateValue) => { + const finalValue = config.mode === "range" ? dateValue : dateValue[0] || null; + if (!onChange) + return; + if (config.mode === "range") { + if (finalValue.length === 2 && hasValueChanged(prevValue, finalValue)) { + onChange(finalValue); + } + } else { + onChange(finalValue); + } + }, [prevValue, onChange, hasValueChanged]); + (0,external_react_namespaceObject.useEffect)(() => { + if (dateRef && dateRef.current && !pickerInstance) { + const instance = external_flatpickr_default()(dateRef.current, DatePicker_spreadProps(DatePicker_spreadValues({}, config), { + defaultDate: value, + onChange: onDateChange, + onClose, + onOpen + })); + setPickerInstance(instance); + } + return () => { + if (pickerInstance) { + pickerInstance.destroy(); + } + }; + }, [dateRef.current, pickerInstance]); + (0,external_react_namespaceObject.useEffect)(() => { + if (pickerInstance) { + let tempValue = value; + if (typeof value === "string") { + tempValue = new Date(value); + } else if (Array.isArray(value)) { + tempValue = value.map((date) => typeof date === "string" ? new Date(date) : date); + } + if (hasValueChanged(prevValue, tempValue)) { + pickerInstance.set("onChange", onDateChange); + if (config.mode === "range") { + if (tempValue && tempValue.length === 2) { + pickerInstance.setDate(tempValue, true); + } + } else { + pickerInstance.setDate(tempValue, true); + } + } + } + }, [prevValue, value, pickerInstance]); + const classes = [ + "tyk-form-group", + "tyk-form-group--addon-right", + wrapperClassName, + ...theme ? theme.split(" ").map((t) => `tyk-form-group--${t}`) : [], + labelwidth && "tyk-form-group--label-has-width", + error && "has-error" + ].filter(Boolean).join(" "); + const getLabelStyles = () => { + if (labelwidth) + return { flexBasis: labelwidth }; + return {}; + }; + const getNonLabelWidth = () => { + if (labelwidth) + return { flexBasis: `calc(100% - ${labelwidth} - 20px)` }; + return {}; + }; + const openCalendar = (0,external_react_namespaceObject.useCallback)(() => { + if (!pickerInstance) + return; + pickerInstance.open(); + }, [pickerInstance]); + const getInputError = () => error && error !== "true" && error !== "false" ? /* @__PURE__ */ external_react_default().createElement("p", { className: "tyk-form-control__error-message" }, error) : null; + const getInputField = () => { + let inputStyle = {}; + let addonStyle = {}; + if (config && config.inline) { + inputStyle = { + height: 0, + padding: 0, + width: 0, + visibility: "hidden" + }; + addonStyle = { + display: "none" + }; + } + return /* @__PURE__ */ external_react_default().createElement((external_react_default()).Fragment, null, /* @__PURE__ */ external_react_default().createElement( + "input", + { + disabled, + className: "tyk-form-control", + "data-input": true, + type: "date", + ref: dateRef, + style: inputStyle + } + ), /* @__PURE__ */ external_react_default().createElement( + "div", + { + className: "tyk-input-group__addon", + onClick: openCalendar, + role: "button", + onKeyUp: () => { + }, + tabIndex: 0, + style: addonStyle + }, + /* @__PURE__ */ external_react_default().createElement(components_Icon, { type: "calendar" }) + )); + }; + return /* @__PURE__ */ external_react_default().createElement((external_react_default()).Fragment, null, children && children.length ? children({ openCalendar, ref: dateRef }) : /* @__PURE__ */ external_react_default().createElement("div", { className: classes }, label ? /* @__PURE__ */ external_react_default().createElement("label", { htmlFor: id, style: getLabelStyles() }, label) : null, !readOnly && /* @__PURE__ */ external_react_default().createElement( + "div", + { + className: "tyk-form-control__wrapper flatpickr", + style: getNonLabelWidth() + }, + /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-input-group" }, getInputField()), + note ? /* @__PURE__ */ external_react_default().createElement("p", { className: "tyk-form-control__help-block" }, note) : null, + getInputError() + )), /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-form-control--readonly" }, readOnly && !value && "-", readOnly && value && external_flatpickr_default().formatDate(value, config.dateFormat || "d/m/Y"))); +} +DatePicker.propTypes = { + config: external_prop_types_default().instanceOf(Object), + children: external_prop_types_default().oneOfType([ + (external_prop_types_default()).element, + (external_prop_types_default()).node, + (external_prop_types_default()).string, + (external_prop_types_default()).func + ]), + disabled: (external_prop_types_default()).bool, + readOnly: (external_prop_types_default()).bool, + id: (external_prop_types_default()).string, + label: external_prop_types_default().oneOfType([ + external_prop_types_default().arrayOf((external_prop_types_default()).node), + (external_prop_types_default()).node, + (external_prop_types_default()).element, + (external_prop_types_default()).func, + (external_prop_types_default()).string + ]), + labelwidth: (external_prop_types_default()).string, + note: (external_prop_types_default()).string, + onChange: external_prop_types_default().oneOfType([ + (external_prop_types_default()).func, + external_prop_types_default().instanceOf(Array) + ]), + onClose: external_prop_types_default().oneOfType([ + (external_prop_types_default()).func, + external_prop_types_default().instanceOf(Array) + ]), + onOpen: external_prop_types_default().oneOfType([ + (external_prop_types_default()).func, + external_prop_types_default().instanceOf(Array) + ]), + theme: (external_prop_types_default()).string, + error: (external_prop_types_default()).string, + value: external_prop_types_default().oneOfType([ + external_prop_types_default().instanceOf(Array), + external_prop_types_default().instanceOf(Object), + (external_prop_types_default()).string + ]), + wrapperClassName: (external_prop_types_default()).string +}; +/* harmony default export */ const components_DatePicker = (DatePicker); + +;// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/typeof.js +function _typeof(o) { + "@babel/helpers - typeof"; + + return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { + return typeof o; + } : function (o) { + return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; + }, _typeof(o); +} +;// CONCATENATED MODULE: ./node_modules/date-fns/esm/_lib/requiredArgs/index.js +function requiredArgs(required, args) { + if (args.length < required) { + throw new TypeError(required + ' argument' + (required > 1 ? 's' : '') + ' required, but only ' + args.length + ' present'); + } +} +;// CONCATENATED MODULE: ./node_modules/date-fns/esm/isDate/index.js + + +/** + * @name isDate + * @category Common Helpers + * @summary Is the given value a date? + * + * @description + * Returns true if the given value is an instance of Date. The function works for dates transferred across iframes. + * + * @param {*} value - the value to check + * @returns {boolean} true if the given value is a date + * @throws {TypeError} 1 arguments required + * + * @example + * // For a valid date: + * const result = isDate(new Date()) + * //=> true + * + * @example + * // For an invalid date: + * const result = isDate(new Date(NaN)) + * //=> true + * + * @example + * // For some value: + * const result = isDate('2014-02-31') + * //=> false + * + * @example + * // For an object: + * const result = isDate({}) + * //=> false + */ +function isDate(value) { + requiredArgs(1, arguments); + return value instanceof Date || _typeof(value) === 'object' && Object.prototype.toString.call(value) === '[object Date]'; +} +;// CONCATENATED MODULE: ./node_modules/date-fns/esm/toDate/index.js + + +/** + * @name toDate + * @category Common Helpers + * @summary Convert the given argument to an instance of Date. + * + * @description + * Convert the given argument to an instance of Date. + * + * If the argument is an instance of Date, the function returns its clone. + * + * If the argument is a number, it is treated as a timestamp. + * + * If the argument is none of the above, the function returns Invalid Date. + * + * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`. + * + * @param {Date|Number} argument - the value to convert + * @returns {Date} the parsed date in the local time zone + * @throws {TypeError} 1 argument required + * + * @example + * // Clone the date: + * const result = toDate(new Date(2014, 1, 11, 11, 30, 30)) + * //=> Tue Feb 11 2014 11:30:30 + * + * @example + * // Convert the timestamp to date: + * const result = toDate(1392098430000) + * //=> Tue Feb 11 2014 11:30:30 + */ +function toDate(argument) { + requiredArgs(1, arguments); + var argStr = Object.prototype.toString.call(argument); + + // Clone the date + if (argument instanceof Date || _typeof(argument) === 'object' && argStr === '[object Date]') { + // Prevent the date to lose the milliseconds when passed to new Date() in IE10 + return new Date(argument.getTime()); + } else if (typeof argument === 'number' || argStr === '[object Number]') { + return new Date(argument); + } else { + if ((typeof argument === 'string' || argStr === '[object String]') && typeof console !== 'undefined') { + // eslint-disable-next-line no-console + console.warn("Starting with v2.0.0-beta.1 date-fns doesn't accept strings as date arguments. Please use `parseISO` to parse strings. See: https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#string-arguments"); + // eslint-disable-next-line no-console + console.warn(new Error().stack); + } + return new Date(NaN); + } +} +;// CONCATENATED MODULE: ./node_modules/date-fns/esm/isValid/index.js + + + +/** + * @name isValid + * @category Common Helpers + * @summary Is the given date valid? + * + * @description + * Returns false if argument is Invalid Date and true otherwise. + * Argument is converted to Date using `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate} + * Invalid Date is a Date, whose time value is NaN. + * + * Time value of Date: http://es5.github.io/#x15.9.1.1 + * + * @param {*} date - the date to check + * @returns {Boolean} the date is valid + * @throws {TypeError} 1 argument required + * + * @example + * // For the valid date: + * const result = isValid(new Date(2014, 1, 31)) + * //=> true + * + * @example + * // For the value, convertable into a date: + * const result = isValid(1393804800000) + * //=> true + * + * @example + * // For the invalid date: + * const result = isValid(new Date('')) + * //=> false + */ +function isValid(dirtyDate) { + requiredArgs(1, arguments); + if (!isDate(dirtyDate) && typeof dirtyDate !== 'number') { + return false; + } + var date = toDate(dirtyDate); + return !isNaN(Number(date)); +} +;// CONCATENATED MODULE: ./node_modules/date-fns/esm/_lib/toInteger/index.js +function toInteger(dirtyNumber) { + if (dirtyNumber === null || dirtyNumber === true || dirtyNumber === false) { + return NaN; + } + var number = Number(dirtyNumber); + if (isNaN(number)) { + return number; + } + return number < 0 ? Math.ceil(number) : Math.floor(number); +} +;// CONCATENATED MODULE: ./node_modules/date-fns/esm/addMilliseconds/index.js + + + +/** + * @name addMilliseconds + * @category Millisecond Helpers + * @summary Add the specified number of milliseconds to the given date. + * + * @description + * Add the specified number of milliseconds to the given date. + * + * @param {Date|Number} date - the date to be changed + * @param {Number} amount - the amount of milliseconds to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`. + * @returns {Date} the new date with the milliseconds added + * @throws {TypeError} 2 arguments required + * + * @example + * // Add 750 milliseconds to 10 July 2014 12:45:30.000: + * const result = addMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750) + * //=> Thu Jul 10 2014 12:45:30.750 + */ +function addMilliseconds(dirtyDate, dirtyAmount) { + requiredArgs(2, arguments); + var timestamp = toDate(dirtyDate).getTime(); + var amount = toInteger(dirtyAmount); + return new Date(timestamp + amount); +} +;// CONCATENATED MODULE: ./node_modules/date-fns/esm/subMilliseconds/index.js + + + +/** + * @name subMilliseconds + * @category Millisecond Helpers + * @summary Subtract the specified number of milliseconds from the given date. + * + * @description + * Subtract the specified number of milliseconds from the given date. + * + * @param {Date|Number} date - the date to be changed + * @param {Number} amount - the amount of milliseconds to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`. + * @returns {Date} the new date with the milliseconds subtracted + * @throws {TypeError} 2 arguments required + * + * @example + * // Subtract 750 milliseconds from 10 July 2014 12:45:30.000: + * const result = subMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750) + * //=> Thu Jul 10 2014 12:45:29.250 + */ +function subMilliseconds(dirtyDate, dirtyAmount) { + requiredArgs(2, arguments); + var amount = toInteger(dirtyAmount); + return addMilliseconds(dirtyDate, -amount); +} +;// CONCATENATED MODULE: ./node_modules/date-fns/esm/_lib/getUTCDayOfYear/index.js + + +var MILLISECONDS_IN_DAY = 86400000; +function getUTCDayOfYear(dirtyDate) { + requiredArgs(1, arguments); + var date = toDate(dirtyDate); + var timestamp = date.getTime(); + date.setUTCMonth(0, 1); + date.setUTCHours(0, 0, 0, 0); + var startOfYearTimestamp = date.getTime(); + var difference = timestamp - startOfYearTimestamp; + return Math.floor(difference / MILLISECONDS_IN_DAY) + 1; +} +;// CONCATENATED MODULE: ./node_modules/date-fns/esm/_lib/startOfUTCISOWeek/index.js + + +function startOfUTCISOWeek(dirtyDate) { + requiredArgs(1, arguments); + var weekStartsOn = 1; + var date = toDate(dirtyDate); + var day = date.getUTCDay(); + var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn; + date.setUTCDate(date.getUTCDate() - diff); + date.setUTCHours(0, 0, 0, 0); + return date; +} +;// CONCATENATED MODULE: ./node_modules/date-fns/esm/_lib/getUTCISOWeekYear/index.js + + + +function getUTCISOWeekYear(dirtyDate) { + requiredArgs(1, arguments); + var date = toDate(dirtyDate); + var year = date.getUTCFullYear(); + var fourthOfJanuaryOfNextYear = new Date(0); + fourthOfJanuaryOfNextYear.setUTCFullYear(year + 1, 0, 4); + fourthOfJanuaryOfNextYear.setUTCHours(0, 0, 0, 0); + var startOfNextYear = startOfUTCISOWeek(fourthOfJanuaryOfNextYear); + var fourthOfJanuaryOfThisYear = new Date(0); + fourthOfJanuaryOfThisYear.setUTCFullYear(year, 0, 4); + fourthOfJanuaryOfThisYear.setUTCHours(0, 0, 0, 0); + var startOfThisYear = startOfUTCISOWeek(fourthOfJanuaryOfThisYear); + if (date.getTime() >= startOfNextYear.getTime()) { + return year + 1; + } else if (date.getTime() >= startOfThisYear.getTime()) { + return year; + } else { + return year - 1; + } +} +;// CONCATENATED MODULE: ./node_modules/date-fns/esm/_lib/startOfUTCISOWeekYear/index.js + + + +function startOfUTCISOWeekYear(dirtyDate) { + requiredArgs(1, arguments); + var year = getUTCISOWeekYear(dirtyDate); + var fourthOfJanuary = new Date(0); + fourthOfJanuary.setUTCFullYear(year, 0, 4); + fourthOfJanuary.setUTCHours(0, 0, 0, 0); + var date = startOfUTCISOWeek(fourthOfJanuary); + return date; +} +;// CONCATENATED MODULE: ./node_modules/date-fns/esm/_lib/getUTCISOWeek/index.js + + + + +var MILLISECONDS_IN_WEEK = 604800000; +function getUTCISOWeek(dirtyDate) { + requiredArgs(1, arguments); + var date = toDate(dirtyDate); + var diff = startOfUTCISOWeek(date).getTime() - startOfUTCISOWeekYear(date).getTime(); + + // Round the number of days to the nearest integer + // because the number of milliseconds in a week is not constant + // (e.g. it's different in the week of the daylight saving time clock shift) + return Math.round(diff / MILLISECONDS_IN_WEEK) + 1; +} +;// CONCATENATED MODULE: ./node_modules/date-fns/esm/_lib/defaultOptions/index.js +var defaultOptions = {}; +function getDefaultOptions() { + return defaultOptions; +} +function setDefaultOptions(newOptions) { + defaultOptions = newOptions; +} +;// CONCATENATED MODULE: ./node_modules/date-fns/esm/_lib/startOfUTCWeek/index.js + + + + +function startOfUTCWeek(dirtyDate, options) { + var _ref, _ref2, _ref3, _options$weekStartsOn, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2; + requiredArgs(1, arguments); + var defaultOptions = getDefaultOptions(); + var weekStartsOn = toInteger((_ref = (_ref2 = (_ref3 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.weekStartsOn) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.weekStartsOn) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.weekStartsOn) !== null && _ref !== void 0 ? _ref : 0); + + // Test if weekStartsOn is between 0 and 6 _and_ is not NaN + if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) { + throw new RangeError('weekStartsOn must be between 0 and 6 inclusively'); + } + var date = toDate(dirtyDate); + var day = date.getUTCDay(); + var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn; + date.setUTCDate(date.getUTCDate() - diff); + date.setUTCHours(0, 0, 0, 0); + return date; +} +;// CONCATENATED MODULE: ./node_modules/date-fns/esm/_lib/getUTCWeekYear/index.js + + + + + +function getUTCWeekYear(dirtyDate, options) { + var _ref, _ref2, _ref3, _options$firstWeekCon, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2; + requiredArgs(1, arguments); + var date = toDate(dirtyDate); + var year = date.getUTCFullYear(); + var defaultOptions = getDefaultOptions(); + var firstWeekContainsDate = toInteger((_ref = (_ref2 = (_ref3 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref !== void 0 ? _ref : 1); + + // Test if weekStartsOn is between 1 and 7 _and_ is not NaN + if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) { + throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively'); + } + var firstWeekOfNextYear = new Date(0); + firstWeekOfNextYear.setUTCFullYear(year + 1, 0, firstWeekContainsDate); + firstWeekOfNextYear.setUTCHours(0, 0, 0, 0); + var startOfNextYear = startOfUTCWeek(firstWeekOfNextYear, options); + var firstWeekOfThisYear = new Date(0); + firstWeekOfThisYear.setUTCFullYear(year, 0, firstWeekContainsDate); + firstWeekOfThisYear.setUTCHours(0, 0, 0, 0); + var startOfThisYear = startOfUTCWeek(firstWeekOfThisYear, options); + if (date.getTime() >= startOfNextYear.getTime()) { + return year + 1; + } else if (date.getTime() >= startOfThisYear.getTime()) { + return year; + } else { + return year - 1; + } +} +;// CONCATENATED MODULE: ./node_modules/date-fns/esm/_lib/startOfUTCWeekYear/index.js + + + + + +function startOfUTCWeekYear(dirtyDate, options) { + var _ref, _ref2, _ref3, _options$firstWeekCon, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2; + requiredArgs(1, arguments); + var defaultOptions = getDefaultOptions(); + var firstWeekContainsDate = toInteger((_ref = (_ref2 = (_ref3 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref !== void 0 ? _ref : 1); + var year = getUTCWeekYear(dirtyDate, options); + var firstWeek = new Date(0); + firstWeek.setUTCFullYear(year, 0, firstWeekContainsDate); + firstWeek.setUTCHours(0, 0, 0, 0); + var date = startOfUTCWeek(firstWeek, options); + return date; +} +;// CONCATENATED MODULE: ./node_modules/date-fns/esm/_lib/getUTCWeek/index.js + + + + +var getUTCWeek_MILLISECONDS_IN_WEEK = 604800000; +function getUTCWeek(dirtyDate, options) { + requiredArgs(1, arguments); + var date = toDate(dirtyDate); + var diff = startOfUTCWeek(date, options).getTime() - startOfUTCWeekYear(date, options).getTime(); + + // Round the number of days to the nearest integer + // because the number of milliseconds in a week is not constant + // (e.g. it's different in the week of the daylight saving time clock shift) + return Math.round(diff / getUTCWeek_MILLISECONDS_IN_WEEK) + 1; +} +;// CONCATENATED MODULE: ./node_modules/date-fns/esm/_lib/addLeadingZeros/index.js +function addLeadingZeros(number, targetLength) { + var sign = number < 0 ? '-' : ''; + var output = Math.abs(number).toString(); + while (output.length < targetLength) { + output = '0' + output; + } + return sign + output; +} +;// CONCATENATED MODULE: ./node_modules/date-fns/esm/_lib/format/lightFormatters/index.js + +/* + * | | Unit | | Unit | + * |-----|--------------------------------|-----|--------------------------------| + * | a | AM, PM | A* | | + * | d | Day of month | D | | + * | h | Hour [1-12] | H | Hour [0-23] | + * | m | Minute | M | Month | + * | s | Second | S | Fraction of second | + * | y | Year (abs) | Y | | + * + * Letters marked by * are not implemented but reserved by Unicode standard. + */ +var formatters = { + // Year + y: function y(date, token) { + // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_tokens + // | Year | y | yy | yyy | yyyy | yyyyy | + // |----------|-------|----|-------|-------|-------| + // | AD 1 | 1 | 01 | 001 | 0001 | 00001 | + // | AD 12 | 12 | 12 | 012 | 0012 | 00012 | + // | AD 123 | 123 | 23 | 123 | 0123 | 00123 | + // | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 | + // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 | + + var signedYear = date.getUTCFullYear(); + // Returns 1 for 1 BC (which is year 0 in JavaScript) + var year = signedYear > 0 ? signedYear : 1 - signedYear; + return addLeadingZeros(token === 'yy' ? year % 100 : year, token.length); + }, + // Month + M: function M(date, token) { + var month = date.getUTCMonth(); + return token === 'M' ? String(month + 1) : addLeadingZeros(month + 1, 2); + }, + // Day of the month + d: function d(date, token) { + return addLeadingZeros(date.getUTCDate(), token.length); + }, + // AM or PM + a: function a(date, token) { + var dayPeriodEnumValue = date.getUTCHours() / 12 >= 1 ? 'pm' : 'am'; + switch (token) { + case 'a': + case 'aa': + return dayPeriodEnumValue.toUpperCase(); + case 'aaa': + return dayPeriodEnumValue; + case 'aaaaa': + return dayPeriodEnumValue[0]; + case 'aaaa': + default: + return dayPeriodEnumValue === 'am' ? 'a.m.' : 'p.m.'; + } + }, + // Hour [1-12] + h: function h(date, token) { + return addLeadingZeros(date.getUTCHours() % 12 || 12, token.length); + }, + // Hour [0-23] + H: function H(date, token) { + return addLeadingZeros(date.getUTCHours(), token.length); + }, + // Minute + m: function m(date, token) { + return addLeadingZeros(date.getUTCMinutes(), token.length); + }, + // Second + s: function s(date, token) { + return addLeadingZeros(date.getUTCSeconds(), token.length); + }, + // Fraction of second + S: function S(date, token) { + var numberOfDigits = token.length; + var milliseconds = date.getUTCMilliseconds(); + var fractionalSeconds = Math.floor(milliseconds * Math.pow(10, numberOfDigits - 3)); + return addLeadingZeros(fractionalSeconds, token.length); + } +}; +/* harmony default export */ const lightFormatters = (formatters); +;// CONCATENATED MODULE: ./node_modules/date-fns/esm/_lib/format/formatters/index.js + + + + + + + +var dayPeriodEnum = { + am: 'am', + pm: 'pm', + midnight: 'midnight', + noon: 'noon', + morning: 'morning', + afternoon: 'afternoon', + evening: 'evening', + night: 'night' +}; +/* + * | | Unit | | Unit | + * |-----|--------------------------------|-----|--------------------------------| + * | a | AM, PM | A* | Milliseconds in day | + * | b | AM, PM, noon, midnight | B | Flexible day period | + * | c | Stand-alone local day of week | C* | Localized hour w/ day period | + * | d | Day of month | D | Day of year | + * | e | Local day of week | E | Day of week | + * | f | | F* | Day of week in month | + * | g* | Modified Julian day | G | Era | + * | h | Hour [1-12] | H | Hour [0-23] | + * | i! | ISO day of week | I! | ISO week of year | + * | j* | Localized hour w/ day period | J* | Localized hour w/o day period | + * | k | Hour [1-24] | K | Hour [0-11] | + * | l* | (deprecated) | L | Stand-alone month | + * | m | Minute | M | Month | + * | n | | N | | + * | o! | Ordinal number modifier | O | Timezone (GMT) | + * | p! | Long localized time | P! | Long localized date | + * | q | Stand-alone quarter | Q | Quarter | + * | r* | Related Gregorian year | R! | ISO week-numbering year | + * | s | Second | S | Fraction of second | + * | t! | Seconds timestamp | T! | Milliseconds timestamp | + * | u | Extended year | U* | Cyclic year | + * | v* | Timezone (generic non-locat.) | V* | Timezone (location) | + * | w | Local week of year | W* | Week of month | + * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) | + * | y | Year (abs) | Y | Local week-numbering year | + * | z | Timezone (specific non-locat.) | Z* | Timezone (aliases) | + * + * Letters marked by * are not implemented but reserved by Unicode standard. + * + * Letters marked by ! are non-standard, but implemented by date-fns: + * - `o` modifies the previous token to turn it into an ordinal (see `format` docs) + * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days, + * i.e. 7 for Sunday, 1 for Monday, etc. + * - `I` is ISO week of year, as opposed to `w` which is local week of year. + * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year. + * `R` is supposed to be used in conjunction with `I` and `i` + * for universal ISO week-numbering date, whereas + * `Y` is supposed to be used in conjunction with `w` and `e` + * for week-numbering date specific to the locale. + * - `P` is long localized date format + * - `p` is long localized time format + */ + +var formatters_formatters = { + // Era + G: function G(date, token, localize) { + var era = date.getUTCFullYear() > 0 ? 1 : 0; + switch (token) { + // AD, BC + case 'G': + case 'GG': + case 'GGG': + return localize.era(era, { + width: 'abbreviated' + }); + // A, B + case 'GGGGG': + return localize.era(era, { + width: 'narrow' + }); + // Anno Domini, Before Christ + case 'GGGG': + default: + return localize.era(era, { + width: 'wide' + }); + } + }, + // Year + y: function y(date, token, localize) { + // Ordinal number + if (token === 'yo') { + var signedYear = date.getUTCFullYear(); + // Returns 1 for 1 BC (which is year 0 in JavaScript) + var year = signedYear > 0 ? signedYear : 1 - signedYear; + return localize.ordinalNumber(year, { + unit: 'year' + }); + } + return lightFormatters.y(date, token); + }, + // Local week-numbering year + Y: function Y(date, token, localize, options) { + var signedWeekYear = getUTCWeekYear(date, options); + // Returns 1 for 1 BC (which is year 0 in JavaScript) + var weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear; + + // Two digit year + if (token === 'YY') { + var twoDigitYear = weekYear % 100; + return addLeadingZeros(twoDigitYear, 2); + } + + // Ordinal number + if (token === 'Yo') { + return localize.ordinalNumber(weekYear, { + unit: 'year' + }); + } + + // Padding + return addLeadingZeros(weekYear, token.length); + }, + // ISO week-numbering year + R: function R(date, token) { + var isoWeekYear = getUTCISOWeekYear(date); + + // Padding + return addLeadingZeros(isoWeekYear, token.length); + }, + // Extended year. This is a single number designating the year of this calendar system. + // The main difference between `y` and `u` localizers are B.C. years: + // | Year | `y` | `u` | + // |------|-----|-----| + // | AC 1 | 1 | 1 | + // | BC 1 | 1 | 0 | + // | BC 2 | 2 | -1 | + // Also `yy` always returns the last two digits of a year, + // while `uu` pads single digit years to 2 characters and returns other years unchanged. + u: function u(date, token) { + var year = date.getUTCFullYear(); + return addLeadingZeros(year, token.length); + }, + // Quarter + Q: function Q(date, token, localize) { + var quarter = Math.ceil((date.getUTCMonth() + 1) / 3); + switch (token) { + // 1, 2, 3, 4 + case 'Q': + return String(quarter); + // 01, 02, 03, 04 + case 'QQ': + return addLeadingZeros(quarter, 2); + // 1st, 2nd, 3rd, 4th + case 'Qo': + return localize.ordinalNumber(quarter, { + unit: 'quarter' + }); + // Q1, Q2, Q3, Q4 + case 'QQQ': + return localize.quarter(quarter, { + width: 'abbreviated', + context: 'formatting' + }); + // 1, 2, 3, 4 (narrow quarter; could be not numerical) + case 'QQQQQ': + return localize.quarter(quarter, { + width: 'narrow', + context: 'formatting' + }); + // 1st quarter, 2nd quarter, ... + case 'QQQQ': + default: + return localize.quarter(quarter, { + width: 'wide', + context: 'formatting' + }); + } + }, + // Stand-alone quarter + q: function q(date, token, localize) { + var quarter = Math.ceil((date.getUTCMonth() + 1) / 3); + switch (token) { + // 1, 2, 3, 4 + case 'q': + return String(quarter); + // 01, 02, 03, 04 + case 'qq': + return addLeadingZeros(quarter, 2); + // 1st, 2nd, 3rd, 4th + case 'qo': + return localize.ordinalNumber(quarter, { + unit: 'quarter' + }); + // Q1, Q2, Q3, Q4 + case 'qqq': + return localize.quarter(quarter, { + width: 'abbreviated', + context: 'standalone' + }); + // 1, 2, 3, 4 (narrow quarter; could be not numerical) + case 'qqqqq': + return localize.quarter(quarter, { + width: 'narrow', + context: 'standalone' + }); + // 1st quarter, 2nd quarter, ... + case 'qqqq': + default: + return localize.quarter(quarter, { + width: 'wide', + context: 'standalone' + }); + } + }, + // Month + M: function M(date, token, localize) { + var month = date.getUTCMonth(); + switch (token) { + case 'M': + case 'MM': + return lightFormatters.M(date, token); + // 1st, 2nd, ..., 12th + case 'Mo': + return localize.ordinalNumber(month + 1, { + unit: 'month' + }); + // Jan, Feb, ..., Dec + case 'MMM': + return localize.month(month, { + width: 'abbreviated', + context: 'formatting' + }); + // J, F, ..., D + case 'MMMMM': + return localize.month(month, { + width: 'narrow', + context: 'formatting' + }); + // January, February, ..., December + case 'MMMM': + default: + return localize.month(month, { + width: 'wide', + context: 'formatting' + }); + } + }, + // Stand-alone month + L: function L(date, token, localize) { + var month = date.getUTCMonth(); + switch (token) { + // 1, 2, ..., 12 + case 'L': + return String(month + 1); + // 01, 02, ..., 12 + case 'LL': + return addLeadingZeros(month + 1, 2); + // 1st, 2nd, ..., 12th + case 'Lo': + return localize.ordinalNumber(month + 1, { + unit: 'month' + }); + // Jan, Feb, ..., Dec + case 'LLL': + return localize.month(month, { + width: 'abbreviated', + context: 'standalone' + }); + // J, F, ..., D + case 'LLLLL': + return localize.month(month, { + width: 'narrow', + context: 'standalone' + }); + // January, February, ..., December + case 'LLLL': + default: + return localize.month(month, { + width: 'wide', + context: 'standalone' + }); + } + }, + // Local week of year + w: function w(date, token, localize, options) { + var week = getUTCWeek(date, options); + if (token === 'wo') { + return localize.ordinalNumber(week, { + unit: 'week' + }); + } + return addLeadingZeros(week, token.length); + }, + // ISO week of year + I: function I(date, token, localize) { + var isoWeek = getUTCISOWeek(date); + if (token === 'Io') { + return localize.ordinalNumber(isoWeek, { + unit: 'week' + }); + } + return addLeadingZeros(isoWeek, token.length); + }, + // Day of the month + d: function d(date, token, localize) { + if (token === 'do') { + return localize.ordinalNumber(date.getUTCDate(), { + unit: 'date' + }); + } + return lightFormatters.d(date, token); + }, + // Day of year + D: function D(date, token, localize) { + var dayOfYear = getUTCDayOfYear(date); + if (token === 'Do') { + return localize.ordinalNumber(dayOfYear, { + unit: 'dayOfYear' + }); + } + return addLeadingZeros(dayOfYear, token.length); + }, + // Day of week + E: function E(date, token, localize) { + var dayOfWeek = date.getUTCDay(); + switch (token) { + // Tue + case 'E': + case 'EE': + case 'EEE': + return localize.day(dayOfWeek, { + width: 'abbreviated', + context: 'formatting' + }); + // T + case 'EEEEE': + return localize.day(dayOfWeek, { + width: 'narrow', + context: 'formatting' + }); + // Tu + case 'EEEEEE': + return localize.day(dayOfWeek, { + width: 'short', + context: 'formatting' + }); + // Tuesday + case 'EEEE': + default: + return localize.day(dayOfWeek, { + width: 'wide', + context: 'formatting' + }); + } + }, + // Local day of week + e: function e(date, token, localize, options) { + var dayOfWeek = date.getUTCDay(); + var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7; + switch (token) { + // Numerical value (Nth day of week with current locale or weekStartsOn) + case 'e': + return String(localDayOfWeek); + // Padded numerical value + case 'ee': + return addLeadingZeros(localDayOfWeek, 2); + // 1st, 2nd, ..., 7th + case 'eo': + return localize.ordinalNumber(localDayOfWeek, { + unit: 'day' + }); + case 'eee': + return localize.day(dayOfWeek, { + width: 'abbreviated', + context: 'formatting' + }); + // T + case 'eeeee': + return localize.day(dayOfWeek, { + width: 'narrow', + context: 'formatting' + }); + // Tu + case 'eeeeee': + return localize.day(dayOfWeek, { + width: 'short', + context: 'formatting' + }); + // Tuesday + case 'eeee': + default: + return localize.day(dayOfWeek, { + width: 'wide', + context: 'formatting' + }); + } + }, + // Stand-alone local day of week + c: function c(date, token, localize, options) { + var dayOfWeek = date.getUTCDay(); + var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7; + switch (token) { + // Numerical value (same as in `e`) + case 'c': + return String(localDayOfWeek); + // Padded numerical value + case 'cc': + return addLeadingZeros(localDayOfWeek, token.length); + // 1st, 2nd, ..., 7th + case 'co': + return localize.ordinalNumber(localDayOfWeek, { + unit: 'day' + }); + case 'ccc': + return localize.day(dayOfWeek, { + width: 'abbreviated', + context: 'standalone' + }); + // T + case 'ccccc': + return localize.day(dayOfWeek, { + width: 'narrow', + context: 'standalone' + }); + // Tu + case 'cccccc': + return localize.day(dayOfWeek, { + width: 'short', + context: 'standalone' + }); + // Tuesday + case 'cccc': + default: + return localize.day(dayOfWeek, { + width: 'wide', + context: 'standalone' + }); + } + }, + // ISO day of week + i: function i(date, token, localize) { + var dayOfWeek = date.getUTCDay(); + var isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek; + switch (token) { + // 2 + case 'i': + return String(isoDayOfWeek); + // 02 + case 'ii': + return addLeadingZeros(isoDayOfWeek, token.length); + // 2nd + case 'io': + return localize.ordinalNumber(isoDayOfWeek, { + unit: 'day' + }); + // Tue + case 'iii': + return localize.day(dayOfWeek, { + width: 'abbreviated', + context: 'formatting' + }); + // T + case 'iiiii': + return localize.day(dayOfWeek, { + width: 'narrow', + context: 'formatting' + }); + // Tu + case 'iiiiii': + return localize.day(dayOfWeek, { + width: 'short', + context: 'formatting' + }); + // Tuesday + case 'iiii': + default: + return localize.day(dayOfWeek, { + width: 'wide', + context: 'formatting' + }); + } + }, + // AM or PM + a: function a(date, token, localize) { + var hours = date.getUTCHours(); + var dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am'; + switch (token) { + case 'a': + case 'aa': + return localize.dayPeriod(dayPeriodEnumValue, { + width: 'abbreviated', + context: 'formatting' + }); + case 'aaa': + return localize.dayPeriod(dayPeriodEnumValue, { + width: 'abbreviated', + context: 'formatting' + }).toLowerCase(); + case 'aaaaa': + return localize.dayPeriod(dayPeriodEnumValue, { + width: 'narrow', + context: 'formatting' + }); + case 'aaaa': + default: + return localize.dayPeriod(dayPeriodEnumValue, { + width: 'wide', + context: 'formatting' + }); + } + }, + // AM, PM, midnight, noon + b: function b(date, token, localize) { + var hours = date.getUTCHours(); + var dayPeriodEnumValue; + if (hours === 12) { + dayPeriodEnumValue = dayPeriodEnum.noon; + } else if (hours === 0) { + dayPeriodEnumValue = dayPeriodEnum.midnight; + } else { + dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am'; + } + switch (token) { + case 'b': + case 'bb': + return localize.dayPeriod(dayPeriodEnumValue, { + width: 'abbreviated', + context: 'formatting' + }); + case 'bbb': + return localize.dayPeriod(dayPeriodEnumValue, { + width: 'abbreviated', + context: 'formatting' + }).toLowerCase(); + case 'bbbbb': + return localize.dayPeriod(dayPeriodEnumValue, { + width: 'narrow', + context: 'formatting' + }); + case 'bbbb': + default: + return localize.dayPeriod(dayPeriodEnumValue, { + width: 'wide', + context: 'formatting' + }); + } + }, + // in the morning, in the afternoon, in the evening, at night + B: function B(date, token, localize) { + var hours = date.getUTCHours(); + var dayPeriodEnumValue; + if (hours >= 17) { + dayPeriodEnumValue = dayPeriodEnum.evening; + } else if (hours >= 12) { + dayPeriodEnumValue = dayPeriodEnum.afternoon; + } else if (hours >= 4) { + dayPeriodEnumValue = dayPeriodEnum.morning; + } else { + dayPeriodEnumValue = dayPeriodEnum.night; + } + switch (token) { + case 'B': + case 'BB': + case 'BBB': + return localize.dayPeriod(dayPeriodEnumValue, { + width: 'abbreviated', + context: 'formatting' + }); + case 'BBBBB': + return localize.dayPeriod(dayPeriodEnumValue, { + width: 'narrow', + context: 'formatting' + }); + case 'BBBB': + default: + return localize.dayPeriod(dayPeriodEnumValue, { + width: 'wide', + context: 'formatting' + }); + } + }, + // Hour [1-12] + h: function h(date, token, localize) { + if (token === 'ho') { + var hours = date.getUTCHours() % 12; + if (hours === 0) hours = 12; + return localize.ordinalNumber(hours, { + unit: 'hour' + }); + } + return lightFormatters.h(date, token); + }, + // Hour [0-23] + H: function H(date, token, localize) { + if (token === 'Ho') { + return localize.ordinalNumber(date.getUTCHours(), { + unit: 'hour' + }); + } + return lightFormatters.H(date, token); + }, + // Hour [0-11] + K: function K(date, token, localize) { + var hours = date.getUTCHours() % 12; + if (token === 'Ko') { + return localize.ordinalNumber(hours, { + unit: 'hour' + }); + } + return addLeadingZeros(hours, token.length); + }, + // Hour [1-24] + k: function k(date, token, localize) { + var hours = date.getUTCHours(); + if (hours === 0) hours = 24; + if (token === 'ko') { + return localize.ordinalNumber(hours, { + unit: 'hour' + }); + } + return addLeadingZeros(hours, token.length); + }, + // Minute + m: function m(date, token, localize) { + if (token === 'mo') { + return localize.ordinalNumber(date.getUTCMinutes(), { + unit: 'minute' + }); + } + return lightFormatters.m(date, token); + }, + // Second + s: function s(date, token, localize) { + if (token === 'so') { + return localize.ordinalNumber(date.getUTCSeconds(), { + unit: 'second' + }); + } + return lightFormatters.s(date, token); + }, + // Fraction of second + S: function S(date, token) { + return lightFormatters.S(date, token); + }, + // Timezone (ISO-8601. If offset is 0, output is always `'Z'`) + X: function X(date, token, _localize, options) { + var originalDate = options._originalDate || date; + var timezoneOffset = originalDate.getTimezoneOffset(); + if (timezoneOffset === 0) { + return 'Z'; + } + switch (token) { + // Hours and optional minutes + case 'X': + return formatTimezoneWithOptionalMinutes(timezoneOffset); + + // Hours, minutes and optional seconds without `:` delimiter + // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets + // so this token always has the same output as `XX` + case 'XXXX': + case 'XX': + // Hours and minutes without `:` delimiter + return formatTimezone(timezoneOffset); + + // Hours, minutes and optional seconds with `:` delimiter + // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets + // so this token always has the same output as `XXX` + case 'XXXXX': + case 'XXX': // Hours and minutes with `:` delimiter + default: + return formatTimezone(timezoneOffset, ':'); + } + }, + // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent) + x: function x(date, token, _localize, options) { + var originalDate = options._originalDate || date; + var timezoneOffset = originalDate.getTimezoneOffset(); + switch (token) { + // Hours and optional minutes + case 'x': + return formatTimezoneWithOptionalMinutes(timezoneOffset); + + // Hours, minutes and optional seconds without `:` delimiter + // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets + // so this token always has the same output as `xx` + case 'xxxx': + case 'xx': + // Hours and minutes without `:` delimiter + return formatTimezone(timezoneOffset); + + // Hours, minutes and optional seconds with `:` delimiter + // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets + // so this token always has the same output as `xxx` + case 'xxxxx': + case 'xxx': // Hours and minutes with `:` delimiter + default: + return formatTimezone(timezoneOffset, ':'); + } + }, + // Timezone (GMT) + O: function O(date, token, _localize, options) { + var originalDate = options._originalDate || date; + var timezoneOffset = originalDate.getTimezoneOffset(); + switch (token) { + // Short + case 'O': + case 'OO': + case 'OOO': + return 'GMT' + formatTimezoneShort(timezoneOffset, ':'); + // Long + case 'OOOO': + default: + return 'GMT' + formatTimezone(timezoneOffset, ':'); + } + }, + // Timezone (specific non-location) + z: function z(date, token, _localize, options) { + var originalDate = options._originalDate || date; + var timezoneOffset = originalDate.getTimezoneOffset(); + switch (token) { + // Short + case 'z': + case 'zz': + case 'zzz': + return 'GMT' + formatTimezoneShort(timezoneOffset, ':'); + // Long + case 'zzzz': + default: + return 'GMT' + formatTimezone(timezoneOffset, ':'); + } + }, + // Seconds timestamp + t: function t(date, token, _localize, options) { + var originalDate = options._originalDate || date; + var timestamp = Math.floor(originalDate.getTime() / 1000); + return addLeadingZeros(timestamp, token.length); + }, + // Milliseconds timestamp + T: function T(date, token, _localize, options) { + var originalDate = options._originalDate || date; + var timestamp = originalDate.getTime(); + return addLeadingZeros(timestamp, token.length); + } +}; +function formatTimezoneShort(offset, dirtyDelimiter) { + var sign = offset > 0 ? '-' : '+'; + var absOffset = Math.abs(offset); + var hours = Math.floor(absOffset / 60); + var minutes = absOffset % 60; + if (minutes === 0) { + return sign + String(hours); + } + var delimiter = dirtyDelimiter || ''; + return sign + String(hours) + delimiter + addLeadingZeros(minutes, 2); +} +function formatTimezoneWithOptionalMinutes(offset, dirtyDelimiter) { + if (offset % 60 === 0) { + var sign = offset > 0 ? '-' : '+'; + return sign + addLeadingZeros(Math.abs(offset) / 60, 2); + } + return formatTimezone(offset, dirtyDelimiter); +} +function formatTimezone(offset, dirtyDelimiter) { + var delimiter = dirtyDelimiter || ''; + var sign = offset > 0 ? '-' : '+'; + var absOffset = Math.abs(offset); + var hours = addLeadingZeros(Math.floor(absOffset / 60), 2); + var minutes = addLeadingZeros(absOffset % 60, 2); + return sign + hours + delimiter + minutes; +} +/* harmony default export */ const format_formatters = (formatters_formatters); +;// CONCATENATED MODULE: ./node_modules/date-fns/esm/_lib/format/longFormatters/index.js +var dateLongFormatter = function dateLongFormatter(pattern, formatLong) { + switch (pattern) { + case 'P': + return formatLong.date({ + width: 'short' + }); + case 'PP': + return formatLong.date({ + width: 'medium' + }); + case 'PPP': + return formatLong.date({ + width: 'long' + }); + case 'PPPP': + default: + return formatLong.date({ + width: 'full' + }); + } +}; +var timeLongFormatter = function timeLongFormatter(pattern, formatLong) { + switch (pattern) { + case 'p': + return formatLong.time({ + width: 'short' + }); + case 'pp': + return formatLong.time({ + width: 'medium' + }); + case 'ppp': + return formatLong.time({ + width: 'long' + }); + case 'pppp': + default: + return formatLong.time({ + width: 'full' + }); + } +}; +var dateTimeLongFormatter = function dateTimeLongFormatter(pattern, formatLong) { + var matchResult = pattern.match(/(P+)(p+)?/) || []; + var datePattern = matchResult[1]; + var timePattern = matchResult[2]; + if (!timePattern) { + return dateLongFormatter(pattern, formatLong); + } + var dateTimeFormat; + switch (datePattern) { + case 'P': + dateTimeFormat = formatLong.dateTime({ + width: 'short' + }); + break; + case 'PP': + dateTimeFormat = formatLong.dateTime({ + width: 'medium' + }); + break; + case 'PPP': + dateTimeFormat = formatLong.dateTime({ + width: 'long' + }); + break; + case 'PPPP': + default: + dateTimeFormat = formatLong.dateTime({ + width: 'full' + }); + break; + } + return dateTimeFormat.replace('{{date}}', dateLongFormatter(datePattern, formatLong)).replace('{{time}}', timeLongFormatter(timePattern, formatLong)); +}; +var longFormatters = { + p: timeLongFormatter, + P: dateTimeLongFormatter +}; +/* harmony default export */ const format_longFormatters = (longFormatters); +;// CONCATENATED MODULE: ./node_modules/date-fns/esm/_lib/getTimezoneOffsetInMilliseconds/index.js +/** + * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds. + * They usually appear for dates that denote time before the timezones were introduced + * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891 + * and GMT+01:00:00 after that date) + * + * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above, + * which would lead to incorrect calculations. + * + * This function returns the timezone offset in milliseconds that takes seconds in account. + */ +function getTimezoneOffsetInMilliseconds(date) { + var utcDate = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds())); + utcDate.setUTCFullYear(date.getFullYear()); + return date.getTime() - utcDate.getTime(); +} +;// CONCATENATED MODULE: ./node_modules/date-fns/esm/_lib/protectedTokens/index.js +var protectedDayOfYearTokens = ['D', 'DD']; +var protectedWeekYearTokens = ['YY', 'YYYY']; +function isProtectedDayOfYearToken(token) { + return protectedDayOfYearTokens.indexOf(token) !== -1; +} +function isProtectedWeekYearToken(token) { + return protectedWeekYearTokens.indexOf(token) !== -1; +} +function throwProtectedError(token, format, input) { + if (token === 'YYYY') { + throw new RangeError("Use `yyyy` instead of `YYYY` (in `".concat(format, "`) for formatting years to the input `").concat(input, "`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md")); + } else if (token === 'YY') { + throw new RangeError("Use `yy` instead of `YY` (in `".concat(format, "`) for formatting years to the input `").concat(input, "`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md")); + } else if (token === 'D') { + throw new RangeError("Use `d` instead of `D` (in `".concat(format, "`) for formatting days of the month to the input `").concat(input, "`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md")); + } else if (token === 'DD') { + throw new RangeError("Use `dd` instead of `DD` (in `".concat(format, "`) for formatting days of the month to the input `").concat(input, "`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md")); + } +} +;// CONCATENATED MODULE: ./node_modules/date-fns/esm/locale/en-US/_lib/formatDistance/index.js +var formatDistanceLocale = { + lessThanXSeconds: { + one: 'less than a second', + other: 'less than {{count}} seconds' + }, + xSeconds: { + one: '1 second', + other: '{{count}} seconds' + }, + halfAMinute: 'half a minute', + lessThanXMinutes: { + one: 'less than a minute', + other: 'less than {{count}} minutes' + }, + xMinutes: { + one: '1 minute', + other: '{{count}} minutes' + }, + aboutXHours: { + one: 'about 1 hour', + other: 'about {{count}} hours' + }, + xHours: { + one: '1 hour', + other: '{{count}} hours' + }, + xDays: { + one: '1 day', + other: '{{count}} days' + }, + aboutXWeeks: { + one: 'about 1 week', + other: 'about {{count}} weeks' + }, + xWeeks: { + one: '1 week', + other: '{{count}} weeks' + }, + aboutXMonths: { + one: 'about 1 month', + other: 'about {{count}} months' + }, + xMonths: { + one: '1 month', + other: '{{count}} months' + }, + aboutXYears: { + one: 'about 1 year', + other: 'about {{count}} years' + }, + xYears: { + one: '1 year', + other: '{{count}} years' + }, + overXYears: { + one: 'over 1 year', + other: 'over {{count}} years' + }, + almostXYears: { + one: 'almost 1 year', + other: 'almost {{count}} years' + } +}; +var formatDistance = function formatDistance(token, count, options) { + var result; + var tokenValue = formatDistanceLocale[token]; + if (typeof tokenValue === 'string') { + result = tokenValue; + } else if (count === 1) { + result = tokenValue.one; + } else { + result = tokenValue.other.replace('{{count}}', count.toString()); + } + if (options !== null && options !== void 0 && options.addSuffix) { + if (options.comparison && options.comparison > 0) { + return 'in ' + result; + } else { + return result + ' ago'; + } + } + return result; +}; +/* harmony default export */ const _lib_formatDistance = (formatDistance); +;// CONCATENATED MODULE: ./node_modules/date-fns/esm/locale/_lib/buildFormatLongFn/index.js +function buildFormatLongFn(args) { + return function () { + var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + // TODO: Remove String() + var width = options.width ? String(options.width) : args.defaultWidth; + var format = args.formats[width] || args.formats[args.defaultWidth]; + return format; + }; +} +;// CONCATENATED MODULE: ./node_modules/date-fns/esm/locale/en-US/_lib/formatLong/index.js + +var dateFormats = { + full: 'EEEE, MMMM do, y', + long: 'MMMM do, y', + medium: 'MMM d, y', + short: 'MM/dd/yyyy' +}; +var timeFormats = { + full: 'h:mm:ss a zzzz', + long: 'h:mm:ss a z', + medium: 'h:mm:ss a', + short: 'h:mm a' +}; +var dateTimeFormats = { + full: "{{date}} 'at' {{time}}", + long: "{{date}} 'at' {{time}}", + medium: '{{date}}, {{time}}', + short: '{{date}}, {{time}}' +}; +var formatLong = { + date: buildFormatLongFn({ + formats: dateFormats, + defaultWidth: 'full' + }), + time: buildFormatLongFn({ + formats: timeFormats, + defaultWidth: 'full' + }), + dateTime: buildFormatLongFn({ + formats: dateTimeFormats, + defaultWidth: 'full' + }) +}; +/* harmony default export */ const _lib_formatLong = (formatLong); +;// CONCATENATED MODULE: ./node_modules/date-fns/esm/locale/en-US/_lib/formatRelative/index.js +var formatRelativeLocale = { + lastWeek: "'last' eeee 'at' p", + yesterday: "'yesterday at' p", + today: "'today at' p", + tomorrow: "'tomorrow at' p", + nextWeek: "eeee 'at' p", + other: 'P' +}; +var formatRelative = function formatRelative(token, _date, _baseDate, _options) { + return formatRelativeLocale[token]; +}; +/* harmony default export */ const _lib_formatRelative = (formatRelative); +;// CONCATENATED MODULE: ./node_modules/date-fns/esm/locale/_lib/buildLocalizeFn/index.js +function buildLocalizeFn(args) { + return function (dirtyIndex, options) { + var context = options !== null && options !== void 0 && options.context ? String(options.context) : 'standalone'; + var valuesArray; + if (context === 'formatting' && args.formattingValues) { + var defaultWidth = args.defaultFormattingWidth || args.defaultWidth; + var width = options !== null && options !== void 0 && options.width ? String(options.width) : defaultWidth; + valuesArray = args.formattingValues[width] || args.formattingValues[defaultWidth]; + } else { + var _defaultWidth = args.defaultWidth; + var _width = options !== null && options !== void 0 && options.width ? String(options.width) : args.defaultWidth; + valuesArray = args.values[_width] || args.values[_defaultWidth]; + } + var index = args.argumentCallback ? args.argumentCallback(dirtyIndex) : dirtyIndex; + // @ts-ignore: For some reason TypeScript just don't want to match it, no matter how hard we try. I challenge you to try to remove it! + return valuesArray[index]; + }; +} +;// CONCATENATED MODULE: ./node_modules/date-fns/esm/locale/en-US/_lib/localize/index.js + +var eraValues = { + narrow: ['B', 'A'], + abbreviated: ['BC', 'AD'], + wide: ['Before Christ', 'Anno Domini'] +}; +var quarterValues = { + narrow: ['1', '2', '3', '4'], + abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'], + wide: ['1st quarter', '2nd quarter', '3rd quarter', '4th quarter'] +}; + +// Note: in English, the names of days of the week and months are capitalized. +// If you are making a new locale based on this one, check if the same is true for the language you're working on. +// Generally, formatted dates should look like they are in the middle of a sentence, +// e.g. in Spanish language the weekdays and months should be in the lowercase. +var monthValues = { + narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], + abbreviated: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], + wide: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'] +}; +var dayValues = { + narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S'], + short: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'], + abbreviated: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], + wide: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'] +}; +var dayPeriodValues = { + narrow: { + am: 'a', + pm: 'p', + midnight: 'mi', + noon: 'n', + morning: 'morning', + afternoon: 'afternoon', + evening: 'evening', + night: 'night' + }, + abbreviated: { + am: 'AM', + pm: 'PM', + midnight: 'midnight', + noon: 'noon', + morning: 'morning', + afternoon: 'afternoon', + evening: 'evening', + night: 'night' + }, + wide: { + am: 'a.m.', + pm: 'p.m.', + midnight: 'midnight', + noon: 'noon', + morning: 'morning', + afternoon: 'afternoon', + evening: 'evening', + night: 'night' + } +}; +var formattingDayPeriodValues = { + narrow: { + am: 'a', + pm: 'p', + midnight: 'mi', + noon: 'n', + morning: 'in the morning', + afternoon: 'in the afternoon', + evening: 'in the evening', + night: 'at night' + }, + abbreviated: { + am: 'AM', + pm: 'PM', + midnight: 'midnight', + noon: 'noon', + morning: 'in the morning', + afternoon: 'in the afternoon', + evening: 'in the evening', + night: 'at night' + }, + wide: { + am: 'a.m.', + pm: 'p.m.', + midnight: 'midnight', + noon: 'noon', + morning: 'in the morning', + afternoon: 'in the afternoon', + evening: 'in the evening', + night: 'at night' + } +}; +var ordinalNumber = function ordinalNumber(dirtyNumber, _options) { + var number = Number(dirtyNumber); + + // If ordinal numbers depend on context, for example, + // if they are different for different grammatical genders, + // use `options.unit`. + // + // `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear', + // 'day', 'hour', 'minute', 'second'. + + var rem100 = number % 100; + if (rem100 > 20 || rem100 < 10) { + switch (rem100 % 10) { + case 1: + return number + 'st'; + case 2: + return number + 'nd'; + case 3: + return number + 'rd'; + } + } + return number + 'th'; +}; +var localize = { + ordinalNumber: ordinalNumber, + era: buildLocalizeFn({ + values: eraValues, + defaultWidth: 'wide' + }), + quarter: buildLocalizeFn({ + values: quarterValues, + defaultWidth: 'wide', + argumentCallback: function argumentCallback(quarter) { + return quarter - 1; + } + }), + month: buildLocalizeFn({ + values: monthValues, + defaultWidth: 'wide' + }), + day: buildLocalizeFn({ + values: dayValues, + defaultWidth: 'wide' + }), + dayPeriod: buildLocalizeFn({ + values: dayPeriodValues, + defaultWidth: 'wide', + formattingValues: formattingDayPeriodValues, + defaultFormattingWidth: 'wide' + }) +}; +/* harmony default export */ const _lib_localize = (localize); +;// CONCATENATED MODULE: ./node_modules/date-fns/esm/locale/_lib/buildMatchFn/index.js +function buildMatchFn(args) { + return function (string) { + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + var width = options.width; + var matchPattern = width && args.matchPatterns[width] || args.matchPatterns[args.defaultMatchWidth]; + var matchResult = string.match(matchPattern); + if (!matchResult) { + return null; + } + var matchedString = matchResult[0]; + var parsePatterns = width && args.parsePatterns[width] || args.parsePatterns[args.defaultParseWidth]; + var key = Array.isArray(parsePatterns) ? findIndex(parsePatterns, function (pattern) { + return pattern.test(matchedString); + }) : findKey(parsePatterns, function (pattern) { + return pattern.test(matchedString); + }); + var value; + value = args.valueCallback ? args.valueCallback(key) : key; + value = options.valueCallback ? options.valueCallback(value) : value; + var rest = string.slice(matchedString.length); + return { + value: value, + rest: rest + }; + }; +} +function findKey(object, predicate) { + for (var key in object) { + if (object.hasOwnProperty(key) && predicate(object[key])) { + return key; + } + } + return undefined; +} +function findIndex(array, predicate) { + for (var key = 0; key < array.length; key++) { + if (predicate(array[key])) { + return key; + } + } + return undefined; +} +;// CONCATENATED MODULE: ./node_modules/date-fns/esm/locale/_lib/buildMatchPatternFn/index.js +function buildMatchPatternFn(args) { + return function (string) { + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + var matchResult = string.match(args.matchPattern); + if (!matchResult) return null; + var matchedString = matchResult[0]; + var parseResult = string.match(args.parsePattern); + if (!parseResult) return null; + var value = args.valueCallback ? args.valueCallback(parseResult[0]) : parseResult[0]; + value = options.valueCallback ? options.valueCallback(value) : value; + var rest = string.slice(matchedString.length); + return { + value: value, + rest: rest + }; + }; +} +;// CONCATENATED MODULE: ./node_modules/date-fns/esm/locale/en-US/_lib/match/index.js + + +var matchOrdinalNumberPattern = /^(\d+)(th|st|nd|rd)?/i; +var parseOrdinalNumberPattern = /\d+/i; +var matchEraPatterns = { + narrow: /^(b|a)/i, + abbreviated: /^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i, + wide: /^(before christ|before common era|anno domini|common era)/i +}; +var parseEraPatterns = { + any: [/^b/i, /^(a|c)/i] +}; +var matchQuarterPatterns = { + narrow: /^[1234]/i, + abbreviated: /^q[1234]/i, + wide: /^[1234](th|st|nd|rd)? quarter/i +}; +var parseQuarterPatterns = { + any: [/1/i, /2/i, /3/i, /4/i] +}; +var matchMonthPatterns = { + narrow: /^[jfmasond]/i, + abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i, + wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i +}; +var parseMonthPatterns = { + narrow: [/^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i], + any: [/^ja/i, /^f/i, /^mar/i, /^ap/i, /^may/i, /^jun/i, /^jul/i, /^au/i, /^s/i, /^o/i, /^n/i, /^d/i] +}; +var matchDayPatterns = { + narrow: /^[smtwf]/i, + short: /^(su|mo|tu|we|th|fr|sa)/i, + abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i, + wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i +}; +var parseDayPatterns = { + narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i], + any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i] +}; +var matchDayPeriodPatterns = { + narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i, + any: /^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i +}; +var parseDayPeriodPatterns = { + any: { + am: /^a/i, + pm: /^p/i, + midnight: /^mi/i, + noon: /^no/i, + morning: /morning/i, + afternoon: /afternoon/i, + evening: /evening/i, + night: /night/i + } +}; +var match = { + ordinalNumber: buildMatchPatternFn({ + matchPattern: matchOrdinalNumberPattern, + parsePattern: parseOrdinalNumberPattern, + valueCallback: function valueCallback(value) { + return parseInt(value, 10); + } + }), + era: buildMatchFn({ + matchPatterns: matchEraPatterns, + defaultMatchWidth: 'wide', + parsePatterns: parseEraPatterns, + defaultParseWidth: 'any' + }), + quarter: buildMatchFn({ + matchPatterns: matchQuarterPatterns, + defaultMatchWidth: 'wide', + parsePatterns: parseQuarterPatterns, + defaultParseWidth: 'any', + valueCallback: function valueCallback(index) { + return index + 1; + } + }), + month: buildMatchFn({ + matchPatterns: matchMonthPatterns, + defaultMatchWidth: 'wide', + parsePatterns: parseMonthPatterns, + defaultParseWidth: 'any' + }), + day: buildMatchFn({ + matchPatterns: matchDayPatterns, + defaultMatchWidth: 'wide', + parsePatterns: parseDayPatterns, + defaultParseWidth: 'any' + }), + dayPeriod: buildMatchFn({ + matchPatterns: matchDayPeriodPatterns, + defaultMatchWidth: 'any', + parsePatterns: parseDayPeriodPatterns, + defaultParseWidth: 'any' + }) +}; +/* harmony default export */ const _lib_match = (match); +;// CONCATENATED MODULE: ./node_modules/date-fns/esm/locale/en-US/index.js + + + + + +/** + * @type {Locale} + * @category Locales + * @summary English locale (United States). + * @language English + * @iso-639-2 eng + * @author Sasha Koss [@kossnocorp]{@link https://github.com/kossnocorp} + * @author Lesha Koss [@leshakoss]{@link https://github.com/leshakoss} + */ +var locale = { + code: 'en-US', + formatDistance: _lib_formatDistance, + formatLong: _lib_formatLong, + formatRelative: _lib_formatRelative, + localize: _lib_localize, + match: _lib_match, + options: { + weekStartsOn: 0 /* Sunday */, + firstWeekContainsDate: 1 + } +}; +/* harmony default export */ const en_US = (locale); +;// CONCATENATED MODULE: ./node_modules/date-fns/esm/_lib/defaultLocale/index.js + +/* harmony default export */ const defaultLocale = (en_US); +;// CONCATENATED MODULE: ./node_modules/date-fns/esm/format/index.js + + + + + + + + + + + // This RegExp consists of three parts separated by `|`: +// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token +// (one of the certain letters followed by `o`) +// - (\w)\1* matches any sequences of the same letter +// - '' matches two quote characters in a row +// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('), +// except a single quote symbol, which ends the sequence. +// Two quote characters do not end the sequence. +// If there is no matching single quote +// then the sequence will continue until the end of the string. +// - . matches any single character unmatched by previous parts of the RegExps +var formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g; + +// This RegExp catches symbols escaped by quotes, and also +// sequences of symbols P, p, and the combinations like `PPPPPPPppppp` +var longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g; +var escapedStringRegExp = /^'([^]*?)'?$/; +var doubleQuoteRegExp = /''/g; +var unescapedLatinCharacterRegExp = /[a-zA-Z]/; + +/** + * @name format + * @category Common Helpers + * @summary Format the date. + * + * @description + * Return the formatted date string in the given format. The result may vary by locale. + * + * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries. + * > See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md + * + * The characters wrapped between two single quotes characters (') are escaped. + * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote. + * (see the last example) + * + * Format of the string is based on Unicode Technical Standard #35: + * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table + * with a few additions (see note 7 below the table). + * + * Accepted patterns: + * | Unit | Pattern | Result examples | Notes | + * |---------------------------------|---------|-----------------------------------|-------| + * | Era | G..GGG | AD, BC | | + * | | GGGG | Anno Domini, Before Christ | 2 | + * | | GGGGG | A, B | | + * | Calendar year | y | 44, 1, 1900, 2017 | 5 | + * | | yo | 44th, 1st, 0th, 17th | 5,7 | + * | | yy | 44, 01, 00, 17 | 5 | + * | | yyy | 044, 001, 1900, 2017 | 5 | + * | | yyyy | 0044, 0001, 1900, 2017 | 5 | + * | | yyyyy | ... | 3,5 | + * | Local week-numbering year | Y | 44, 1, 1900, 2017 | 5 | + * | | Yo | 44th, 1st, 1900th, 2017th | 5,7 | + * | | YY | 44, 01, 00, 17 | 5,8 | + * | | YYY | 044, 001, 1900, 2017 | 5 | + * | | YYYY | 0044, 0001, 1900, 2017 | 5,8 | + * | | YYYYY | ... | 3,5 | + * | ISO week-numbering year | R | -43, 0, 1, 1900, 2017 | 5,7 | + * | | RR | -43, 00, 01, 1900, 2017 | 5,7 | + * | | RRR | -043, 000, 001, 1900, 2017 | 5,7 | + * | | RRRR | -0043, 0000, 0001, 1900, 2017 | 5,7 | + * | | RRRRR | ... | 3,5,7 | + * | Extended year | u | -43, 0, 1, 1900, 2017 | 5 | + * | | uu | -43, 01, 1900, 2017 | 5 | + * | | uuu | -043, 001, 1900, 2017 | 5 | + * | | uuuu | -0043, 0001, 1900, 2017 | 5 | + * | | uuuuu | ... | 3,5 | + * | Quarter (formatting) | Q | 1, 2, 3, 4 | | + * | | Qo | 1st, 2nd, 3rd, 4th | 7 | + * | | QQ | 01, 02, 03, 04 | | + * | | QQQ | Q1, Q2, Q3, Q4 | | + * | | QQQQ | 1st quarter, 2nd quarter, ... | 2 | + * | | QQQQQ | 1, 2, 3, 4 | 4 | + * | Quarter (stand-alone) | q | 1, 2, 3, 4 | | + * | | qo | 1st, 2nd, 3rd, 4th | 7 | + * | | qq | 01, 02, 03, 04 | | + * | | qqq | Q1, Q2, Q3, Q4 | | + * | | qqqq | 1st quarter, 2nd quarter, ... | 2 | + * | | qqqqq | 1, 2, 3, 4 | 4 | + * | Month (formatting) | M | 1, 2, ..., 12 | | + * | | Mo | 1st, 2nd, ..., 12th | 7 | + * | | MM | 01, 02, ..., 12 | | + * | | MMM | Jan, Feb, ..., Dec | | + * | | MMMM | January, February, ..., December | 2 | + * | | MMMMM | J, F, ..., D | | + * | Month (stand-alone) | L | 1, 2, ..., 12 | | + * | | Lo | 1st, 2nd, ..., 12th | 7 | + * | | LL | 01, 02, ..., 12 | | + * | | LLL | Jan, Feb, ..., Dec | | + * | | LLLL | January, February, ..., December | 2 | + * | | LLLLL | J, F, ..., D | | + * | Local week of year | w | 1, 2, ..., 53 | | + * | | wo | 1st, 2nd, ..., 53th | 7 | + * | | ww | 01, 02, ..., 53 | | + * | ISO week of year | I | 1, 2, ..., 53 | 7 | + * | | Io | 1st, 2nd, ..., 53th | 7 | + * | | II | 01, 02, ..., 53 | 7 | + * | Day of month | d | 1, 2, ..., 31 | | + * | | do | 1st, 2nd, ..., 31st | 7 | + * | | dd | 01, 02, ..., 31 | | + * | Day of year | D | 1, 2, ..., 365, 366 | 9 | + * | | Do | 1st, 2nd, ..., 365th, 366th | 7 | + * | | DD | 01, 02, ..., 365, 366 | 9 | + * | | DDD | 001, 002, ..., 365, 366 | | + * | | DDDD | ... | 3 | + * | Day of week (formatting) | E..EEE | Mon, Tue, Wed, ..., Sun | | + * | | EEEE | Monday, Tuesday, ..., Sunday | 2 | + * | | EEEEE | M, T, W, T, F, S, S | | + * | | EEEEEE | Mo, Tu, We, Th, Fr, Sa, Su | | + * | ISO day of week (formatting) | i | 1, 2, 3, ..., 7 | 7 | + * | | io | 1st, 2nd, ..., 7th | 7 | + * | | ii | 01, 02, ..., 07 | 7 | + * | | iii | Mon, Tue, Wed, ..., Sun | 7 | + * | | iiii | Monday, Tuesday, ..., Sunday | 2,7 | + * | | iiiii | M, T, W, T, F, S, S | 7 | + * | | iiiiii | Mo, Tu, We, Th, Fr, Sa, Su | 7 | + * | Local day of week (formatting) | e | 2, 3, 4, ..., 1 | | + * | | eo | 2nd, 3rd, ..., 1st | 7 | + * | | ee | 02, 03, ..., 01 | | + * | | eee | Mon, Tue, Wed, ..., Sun | | + * | | eeee | Monday, Tuesday, ..., Sunday | 2 | + * | | eeeee | M, T, W, T, F, S, S | | + * | | eeeeee | Mo, Tu, We, Th, Fr, Sa, Su | | + * | Local day of week (stand-alone) | c | 2, 3, 4, ..., 1 | | + * | | co | 2nd, 3rd, ..., 1st | 7 | + * | | cc | 02, 03, ..., 01 | | + * | | ccc | Mon, Tue, Wed, ..., Sun | | + * | | cccc | Monday, Tuesday, ..., Sunday | 2 | + * | | ccccc | M, T, W, T, F, S, S | | + * | | cccccc | Mo, Tu, We, Th, Fr, Sa, Su | | + * | AM, PM | a..aa | AM, PM | | + * | | aaa | am, pm | | + * | | aaaa | a.m., p.m. | 2 | + * | | aaaaa | a, p | | + * | AM, PM, noon, midnight | b..bb | AM, PM, noon, midnight | | + * | | bbb | am, pm, noon, midnight | | + * | | bbbb | a.m., p.m., noon, midnight | 2 | + * | | bbbbb | a, p, n, mi | | + * | Flexible day period | B..BBB | at night, in the morning, ... | | + * | | BBBB | at night, in the morning, ... | 2 | + * | | BBBBB | at night, in the morning, ... | | + * | Hour [1-12] | h | 1, 2, ..., 11, 12 | | + * | | ho | 1st, 2nd, ..., 11th, 12th | 7 | + * | | hh | 01, 02, ..., 11, 12 | | + * | Hour [0-23] | H | 0, 1, 2, ..., 23 | | + * | | Ho | 0th, 1st, 2nd, ..., 23rd | 7 | + * | | HH | 00, 01, 02, ..., 23 | | + * | Hour [0-11] | K | 1, 2, ..., 11, 0 | | + * | | Ko | 1st, 2nd, ..., 11th, 0th | 7 | + * | | KK | 01, 02, ..., 11, 00 | | + * | Hour [1-24] | k | 24, 1, 2, ..., 23 | | + * | | ko | 24th, 1st, 2nd, ..., 23rd | 7 | + * | | kk | 24, 01, 02, ..., 23 | | + * | Minute | m | 0, 1, ..., 59 | | + * | | mo | 0th, 1st, ..., 59th | 7 | + * | | mm | 00, 01, ..., 59 | | + * | Second | s | 0, 1, ..., 59 | | + * | | so | 0th, 1st, ..., 59th | 7 | + * | | ss | 00, 01, ..., 59 | | + * | Fraction of second | S | 0, 1, ..., 9 | | + * | | SS | 00, 01, ..., 99 | | + * | | SSS | 000, 001, ..., 999 | | + * | | SSSS | ... | 3 | + * | Timezone (ISO-8601 w/ Z) | X | -08, +0530, Z | | + * | | XX | -0800, +0530, Z | | + * | | XXX | -08:00, +05:30, Z | | + * | | XXXX | -0800, +0530, Z, +123456 | 2 | + * | | XXXXX | -08:00, +05:30, Z, +12:34:56 | | + * | Timezone (ISO-8601 w/o Z) | x | -08, +0530, +00 | | + * | | xx | -0800, +0530, +0000 | | + * | | xxx | -08:00, +05:30, +00:00 | 2 | + * | | xxxx | -0800, +0530, +0000, +123456 | | + * | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | | + * | Timezone (GMT) | O...OOO | GMT-8, GMT+5:30, GMT+0 | | + * | | OOOO | GMT-08:00, GMT+05:30, GMT+00:00 | 2 | + * | Timezone (specific non-locat.) | z...zzz | GMT-8, GMT+5:30, GMT+0 | 6 | + * | | zzzz | GMT-08:00, GMT+05:30, GMT+00:00 | 2,6 | + * | Seconds timestamp | t | 512969520 | 7 | + * | | tt | ... | 3,7 | + * | Milliseconds timestamp | T | 512969520900 | 7 | + * | | TT | ... | 3,7 | + * | Long localized date | P | 04/29/1453 | 7 | + * | | PP | Apr 29, 1453 | 7 | + * | | PPP | April 29th, 1453 | 7 | + * | | PPPP | Friday, April 29th, 1453 | 2,7 | + * | Long localized time | p | 12:00 AM | 7 | + * | | pp | 12:00:00 AM | 7 | + * | | ppp | 12:00:00 AM GMT+2 | 7 | + * | | pppp | 12:00:00 AM GMT+02:00 | 2,7 | + * | Combination of date and time | Pp | 04/29/1453, 12:00 AM | 7 | + * | | PPpp | Apr 29, 1453, 12:00:00 AM | 7 | + * | | PPPppp | April 29th, 1453 at ... | 7 | + * | | PPPPpppp| Friday, April 29th, 1453 at ... | 2,7 | + * Notes: + * 1. "Formatting" units (e.g. formatting quarter) in the default en-US locale + * are the same as "stand-alone" units, but are different in some languages. + * "Formatting" units are declined according to the rules of the language + * in the context of a date. "Stand-alone" units are always nominative singular: + * + * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'` + * + * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'` + * + * 2. Any sequence of the identical letters is a pattern, unless it is escaped by + * the single quote characters (see below). + * If the sequence is longer than listed in table (e.g. `EEEEEEEEEEE`) + * the output will be the same as default pattern for this unit, usually + * the longest one (in case of ISO weekdays, `EEEE`). Default patterns for units + * are marked with "2" in the last column of the table. + * + * `format(new Date(2017, 10, 6), 'MMM') //=> 'Nov'` + * + * `format(new Date(2017, 10, 6), 'MMMM') //=> 'November'` + * + * `format(new Date(2017, 10, 6), 'MMMMM') //=> 'N'` + * + * `format(new Date(2017, 10, 6), 'MMMMMM') //=> 'November'` + * + * `format(new Date(2017, 10, 6), 'MMMMMMM') //=> 'November'` + * + * 3. Some patterns could be unlimited length (such as `yyyyyyyy`). + * The output will be padded with zeros to match the length of the pattern. + * + * `format(new Date(2017, 10, 6), 'yyyyyyyy') //=> '00002017'` + * + * 4. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales. + * These tokens represent the shortest form of the quarter. + * + * 5. The main difference between `y` and `u` patterns are B.C. years: + * + * | Year | `y` | `u` | + * |------|-----|-----| + * | AC 1 | 1 | 1 | + * | BC 1 | 1 | 0 | + * | BC 2 | 2 | -1 | + * + * Also `yy` always returns the last two digits of a year, + * while `uu` pads single digit years to 2 characters and returns other years unchanged: + * + * | Year | `yy` | `uu` | + * |------|------|------| + * | 1 | 01 | 01 | + * | 14 | 14 | 14 | + * | 376 | 76 | 376 | + * | 1453 | 53 | 1453 | + * + * The same difference is true for local and ISO week-numbering years (`Y` and `R`), + * except local week-numbering years are dependent on `options.weekStartsOn` + * and `options.firstWeekContainsDate` (compare [getISOWeekYear]{@link https://date-fns.org/docs/getISOWeekYear} + * and [getWeekYear]{@link https://date-fns.org/docs/getWeekYear}). + * + * 6. Specific non-location timezones are currently unavailable in `date-fns`, + * so right now these tokens fall back to GMT timezones. + * + * 7. These patterns are not in the Unicode Technical Standard #35: + * - `i`: ISO day of week + * - `I`: ISO week of year + * - `R`: ISO week-numbering year + * - `t`: seconds timestamp + * - `T`: milliseconds timestamp + * - `o`: ordinal number modifier + * - `P`: long localized date + * - `p`: long localized time + * + * 8. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years. + * You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md + * + * 9. `D` and `DD` tokens represent days of the year but they are often confused with days of the month. + * You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md + * + * @param {Date|Number} date - the original date + * @param {String} format - the string of tokens + * @param {Object} [options] - an object with options. + * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale} + * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday) + * @param {Number} [options.firstWeekContainsDate=1] - the day of January, which is + * @param {Boolean} [options.useAdditionalWeekYearTokens=false] - if true, allows usage of the week-numbering year tokens `YY` and `YYYY`; + * see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md + * @param {Boolean} [options.useAdditionalDayOfYearTokens=false] - if true, allows usage of the day of year tokens `D` and `DD`; + * see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md + * @returns {String} the formatted date string + * @throws {TypeError} 2 arguments required + * @throws {RangeError} `date` must not be Invalid Date + * @throws {RangeError} `options.locale` must contain `localize` property + * @throws {RangeError} `options.locale` must contain `formatLong` property + * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6 + * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7 + * @throws {RangeError} use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md + * @throws {RangeError} use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md + * @throws {RangeError} use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md + * @throws {RangeError} use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md + * @throws {RangeError} format string contains an unescaped latin alphabet character + * + * @example + * // Represent 11 February 2014 in middle-endian format: + * const result = format(new Date(2014, 1, 11), 'MM/dd/yyyy') + * //=> '02/11/2014' + * + * @example + * // Represent 2 July 2014 in Esperanto: + * import { eoLocale } from 'date-fns/locale/eo' + * const result = format(new Date(2014, 6, 2), "do 'de' MMMM yyyy", { + * locale: eoLocale + * }) + * //=> '2-a de julio 2014' + * + * @example + * // Escape string by single quote characters: + * const result = format(new Date(2014, 6, 2, 15), "h 'o''clock'") + * //=> "3 o'clock" + */ + +function format(dirtyDate, dirtyFormatStr, options) { + var _ref, _options$locale, _ref2, _ref3, _ref4, _options$firstWeekCon, _options$locale2, _options$locale2$opti, _defaultOptions$local, _defaultOptions$local2, _ref5, _ref6, _ref7, _options$weekStartsOn, _options$locale3, _options$locale3$opti, _defaultOptions$local3, _defaultOptions$local4; + requiredArgs(2, arguments); + var formatStr = String(dirtyFormatStr); + var defaultOptions = getDefaultOptions(); + var locale = (_ref = (_options$locale = options === null || options === void 0 ? void 0 : options.locale) !== null && _options$locale !== void 0 ? _options$locale : defaultOptions.locale) !== null && _ref !== void 0 ? _ref : defaultLocale; + var firstWeekContainsDate = toInteger((_ref2 = (_ref3 = (_ref4 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale2 = options.locale) === null || _options$locale2 === void 0 ? void 0 : (_options$locale2$opti = _options$locale2.options) === null || _options$locale2$opti === void 0 ? void 0 : _options$locale2$opti.firstWeekContainsDate) !== null && _ref4 !== void 0 ? _ref4 : defaultOptions.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : 1); + + // Test if weekStartsOn is between 1 and 7 _and_ is not NaN + if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) { + throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively'); + } + var weekStartsOn = toInteger((_ref5 = (_ref6 = (_ref7 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale3 = options.locale) === null || _options$locale3 === void 0 ? void 0 : (_options$locale3$opti = _options$locale3.options) === null || _options$locale3$opti === void 0 ? void 0 : _options$locale3$opti.weekStartsOn) !== null && _ref7 !== void 0 ? _ref7 : defaultOptions.weekStartsOn) !== null && _ref6 !== void 0 ? _ref6 : (_defaultOptions$local3 = defaultOptions.locale) === null || _defaultOptions$local3 === void 0 ? void 0 : (_defaultOptions$local4 = _defaultOptions$local3.options) === null || _defaultOptions$local4 === void 0 ? void 0 : _defaultOptions$local4.weekStartsOn) !== null && _ref5 !== void 0 ? _ref5 : 0); + + // Test if weekStartsOn is between 0 and 6 _and_ is not NaN + if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) { + throw new RangeError('weekStartsOn must be between 0 and 6 inclusively'); + } + if (!locale.localize) { + throw new RangeError('locale must contain localize property'); + } + if (!locale.formatLong) { + throw new RangeError('locale must contain formatLong property'); + } + var originalDate = toDate(dirtyDate); + if (!isValid(originalDate)) { + throw new RangeError('Invalid time value'); + } + + // Convert the date in system timezone to the same date in UTC+00:00 timezone. + // This ensures that when UTC functions will be implemented, locales will be compatible with them. + // See an issue about UTC functions: https://github.com/date-fns/date-fns/issues/376 + var timezoneOffset = getTimezoneOffsetInMilliseconds(originalDate); + var utcDate = subMilliseconds(originalDate, timezoneOffset); + var formatterOptions = { + firstWeekContainsDate: firstWeekContainsDate, + weekStartsOn: weekStartsOn, + locale: locale, + _originalDate: originalDate + }; + var result = formatStr.match(longFormattingTokensRegExp).map(function (substring) { + var firstCharacter = substring[0]; + if (firstCharacter === 'p' || firstCharacter === 'P') { + var longFormatter = format_longFormatters[firstCharacter]; + return longFormatter(substring, locale.formatLong); + } + return substring; + }).join('').match(formattingTokensRegExp).map(function (substring) { + // Replace two single quote characters with one single quote character + if (substring === "''") { + return "'"; + } + var firstCharacter = substring[0]; + if (firstCharacter === "'") { + return cleanEscapedString(substring); + } + var formatter = format_formatters[firstCharacter]; + if (formatter) { + if (!(options !== null && options !== void 0 && options.useAdditionalWeekYearTokens) && isProtectedWeekYearToken(substring)) { + throwProtectedError(substring, dirtyFormatStr, String(dirtyDate)); + } + if (!(options !== null && options !== void 0 && options.useAdditionalDayOfYearTokens) && isProtectedDayOfYearToken(substring)) { + throwProtectedError(substring, dirtyFormatStr, String(dirtyDate)); + } + return formatter(utcDate, substring, locale.localize, formatterOptions); + } + if (firstCharacter.match(unescapedLatinCharacterRegExp)) { + throw new RangeError('Format string contains an unescaped latin alphabet character `' + firstCharacter + '`'); + } + return substring; + }).join(''); + return result; +} +function cleanEscapedString(input) { + var matched = input.match(escapedStringRegExp); + if (!matched) { + return input; + } + return matched[1].replace(doubleQuoteRegExp, "'"); +} +// EXTERNAL MODULE: ./node_modules/react-fast-compare/index.js +var react_fast_compare = __webpack_require__(590); +var react_fast_compare_default = /*#__PURE__*/__webpack_require__.n(react_fast_compare); +;// CONCATENATED MODULE: ./src/form/components/EditableList/js/EditableListForm.js +var EditableListForm_defProp = Object.defineProperty; +var EditableListForm_defProps = Object.defineProperties; +var EditableListForm_getOwnPropDescs = Object.getOwnPropertyDescriptors; +var EditableListForm_getOwnPropSymbols = Object.getOwnPropertySymbols; +var EditableListForm_hasOwnProp = Object.prototype.hasOwnProperty; +var EditableListForm_propIsEnum = Object.prototype.propertyIsEnumerable; +var EditableListForm_defNormalProp = (obj, key, value) => key in obj ? EditableListForm_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var EditableListForm_spreadValues = (a, b) => { + for (var prop in b || (b = {})) + if (EditableListForm_hasOwnProp.call(b, prop)) + EditableListForm_defNormalProp(a, prop, b[prop]); + if (EditableListForm_getOwnPropSymbols) + for (var prop of EditableListForm_getOwnPropSymbols(b)) { + if (EditableListForm_propIsEnum.call(b, prop)) + EditableListForm_defNormalProp(a, prop, b[prop]); + } + return a; +}; +var EditableListForm_spreadProps = (a, b) => EditableListForm_defProps(a, EditableListForm_getOwnPropDescs(b)); +var EditableListForm_objRest = (source, exclude) => { + var target = {}; + for (var prop in source) + if (EditableListForm_hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) + target[prop] = source[prop]; + if (source != null && EditableListForm_getOwnPropSymbols) + for (var prop of EditableListForm_getOwnPropSymbols(source)) { + if (exclude.indexOf(prop) < 0 && EditableListForm_propIsEnum.call(source, prop)) + target[prop] = source[prop]; + } + return target; +}; +var EditableListForm_publicField = (obj, key, value) => { + EditableListForm_defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); + return value; +}; + + + + + + +const _EditableListForm = class _EditableListForm extends external_react_namespaceObject.Component { + static getMainFormValue(components) { + const mainFormValue = new Array(components.length); + components.forEach((component, index) => { + mainFormValue[index] = component.props.value || void 0; + }); + return mainFormValue; + } + constructor(props) { + super(props); + const { + components + } = props; + this.submitButtonRef = (0,external_react_namespaceObject.createRef)(); + this.handleOnChange = this.handleOnChange.bind(this); + this.submitForm = this.submitForm.bind(this); + this.state = { + components, + errors: {}, + mainError: null, + mainFormValue: _EditableListForm.getMainFormValue(components), + refs: [] + }; + } + componentDidMount() { + const { + addValueOnFieldChange, + getMainFormButtonWidth + } = this.props; + this.createRefs(); + if (getMainFormButtonWidth) { + getMainFormButtonWidth( + !addValueOnFieldChange ? this.submitButtonRef.current.clientWidth : 0 + ); + } + } + static getDerivedStateFromProps(nextProps, prevState) { + const state = {}; + const { + components: propsComponents + } = nextProps; + const { + components: stateComponents + } = prevState; + if (!react_fast_compare_default()(propsComponents, stateComponents) && !react_fast_compare_default()( + _EditableListForm.getMainFormValue(propsComponents), + _EditableListForm.getMainFormValue(stateComponents) + )) { + state.mainFormValue = _EditableListForm.getMainFormValue(propsComponents); + state.components = propsComponents; + } + return state; + } + getFormCssClasses() { + const { noLabels } = this.props; + const cssClasses = ["tyk-editable-list__form"]; + if (noLabels) { + cssClasses.push("no-labels"); + } + return cssClasses.join(" "); + } + getButtonClassName() { + const { buttonStyle, displayType } = this.props; + const cssClasses = []; + if (buttonStyle) { + cssClasses.push(buttonStyle); + } + if (displayType) { + cssClasses.push(displayType); + } + return cssClasses.join(" "); + } + getComponentsError(component) { + const { + error, + errors, + mainError + } = this.state; + if (error || mainError) { + errors[component.props.name] = "true"; + } else if (!(error || mainError) && errors[component.props.name] === "true") { + delete errors[component.props.name]; + } + return errors[component.props.name] ? errors[component.props.name].toString() : void 0; + } + createRefs() { + const { components } = this.props; + const refs = []; + components.forEach(() => { + refs.push((0,external_react_namespaceObject.createRef)()); + }); + this.setState({ + refs + }); + } + validateValue(value, props) { + const { mainError, errors } = this.state; + const { error, errorPersist } = this.props; + const validatorsNames = props.validate ? Object.keys(props.validate) : []; + const tempState = { + errors: error || mainError ? {} : Object.assign({}, errors) + }; + let ok = true; + if (errorPersist) { + return tempState; + } + for (let i = 0; i < validatorsNames.length; i += 1) { + const validator = props.validate[validatorsNames[i]]; + if (validator(value)) { + tempState.errors[props.name] = props.validationmessages[validatorsNames[i]]; + ok = false; + break; + } + } + if (ok) { + delete tempState.errors[props.name]; + } + tempState.mainError = null; + return tempState; + } + hasMainFormErrors(errors) { + const { components, errorPersist } = this.props; + const { mainFormValue } = this.state; + const tempState = { + errors: Object.assign({}, errors) + }; + if (errorPersist && mainFormValue.indexOf(void 0) === -1) { + return false; + } + if (Object.keys(tempState.errors).length > 0) { + return true; + } + components.forEach((component, index) => { + tempState.errors = Object.assign( + {}, + tempState.errors, + this.validateValue(mainFormValue[index], component.props).errors + ); + }); + return Object.keys(tempState.errors).length > 0; + } + handleOnChange(component, index, value) { + const { addValueOnFieldChange } = this.props; + let tempState = this.state; + tempState = Object.assign({}, tempState, this.validateValue(value, component.props)); + if (!tempState.errors[component.props.name]) { + tempState.mainFormValue[index] = value; + if (component.props.onChange) { + component.props.onChange(value); + } + } + this.setState((previousState) => Object.assign({}, previousState, tempState), () => { + if (addValueOnFieldChange) { + this.submitForm(); + } + }); + } + resetForm() { + const { refs } = this.state; + const { + components + } = this.props; + refs.forEach((ref) => { + var _a; + if ((_a = ref.current) == null ? void 0 : _a.reset) { + ref.current.reset(); + } + }); + this.setState({ + errors: {}, + mainError: null, + mainFormValue: _EditableListForm.getMainFormValue(components) + }); + } + showMainError(error) { + this.setState({ + mainError: error + }); + } + submitForm() { + const { errors, mainFormValue } = this.state; + const { + errorPersist, + onSubmit, + validate, + validationmessage + } = this.props; + if (errorPersist) { + onSubmit(mainFormValue); + this.resetForm(); + } + if (Object.keys(errors).length === 0 && (onSubmit && typeof onSubmit === "function")) { + if (validate) { + if (validate(mainFormValue)) { + this.showMainError(validationmessage); + } else { + onSubmit(mainFormValue); + this.resetForm(); + } + } else { + onSubmit(mainFormValue); + this.resetForm(); + } + } + } + render() { + const { + addValueOnFieldChange, + components, + buttonName, + disabled, + displayType, + error + } = this.props; + const { + mainError, + refs, + errors + } = this.state; + return /* @__PURE__ */ external_react_default().createElement("div", null, /* @__PURE__ */ external_react_default().createElement("div", { className: this.getFormCssClasses() }, /* @__PURE__ */ external_react_default().createElement(Row_Row, null, components.map((component, index) => { + const ComponentName = component.name; + const _a = component.props, { + onChange, + value + } = _a, rest = EditableListForm_objRest(_a, [ + "onChange", + "value" + ]); + return /* @__PURE__ */ external_react_default().createElement(layout_Column, { size: `md-${component.size || "12"} lg-${component.size || "12"}`, key: component.props.name }, /* @__PURE__ */ external_react_default().createElement( + ComponentName, + EditableListForm_spreadProps(EditableListForm_spreadValues({ + disabled: disabled || component.props.disabled, + onChange: this.handleOnChange.bind(this, component, index) + }, rest), { + label: displayType === "inline" ? "" : component.props.label, + error: this.getComponentsError(component), + ref: refs[index], + value + }) + )); + })), !addValueOnFieldChange ? /* @__PURE__ */ external_react_default().createElement( + "span", + { + className: this.getButtonClassName(), + ref: this.submitButtonRef + }, + /* @__PURE__ */ external_react_default().createElement( + components_Button, + { + disabled: this.hasMainFormErrors(errors), + className: "tyk-editable-list__submit-btn", + onClick: this.submitForm, + theme: "default", + type: "button", + size: displayType === "inline" ? "sm" : "md" + }, + buttonName || "ADD" + ) + ) : null), error || mainError ? /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-editable-list-main-error" }, /* @__PURE__ */ external_react_default().createElement("p", { className: "error-message" }, error || mainError)) : null); + } +}; +EditableListForm_publicField(_EditableListForm, "propTypes", { + addValueOnFieldChange: (external_prop_types_default()).bool, + noLabels: (external_prop_types_default()).bool, + buttonName: (external_prop_types_default()).string, + buttonStyle: (external_prop_types_default()).string, + components: external_prop_types_default().instanceOf(Array), + displayType: (external_prop_types_default()).string, + disabled: (external_prop_types_default()).bool, + getMainFormButtonWidth: (external_prop_types_default()).func, + error: (external_prop_types_default()).string, + errorPersist: (external_prop_types_default()).bool, + onSubmit: (external_prop_types_default()).func, + validate: (external_prop_types_default()).func, + validationmessage: (external_prop_types_default()).string +}); +let EditableListForm = _EditableListForm; + + +;// CONCATENATED MODULE: ./src/form/components/EditableList/index.js +var EditableList_defProp = Object.defineProperty; +var EditableList_defNormalProp = (obj, key, value) => key in obj ? EditableList_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var EditableList_publicField = (obj, key, value) => { + EditableList_defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); + return value; +}; + + + + + + + + + + +const _EditableList = class _EditableList extends external_react_namespaceObject.Component { + static getItemListValue(itemValue) { + let tempValue = null; + if (typeof itemValue === "string") { + tempValue = itemValue; + } + if (Object.prototype.toString.call(itemValue) === "[object Object]") { + tempValue = itemValue.name; + } + if (isDate(itemValue)) { + tempValue = format(itemValue, "dd/MM/yyyy"); + } + return tempValue; + } + static getListItemCssClass(displayType) { + const cssClasses = []; + if (displayType === "inline") { + cssClasses.push("tyk-editable-list-item--inline"); + } + return cssClasses.join(" "); + } + constructor(props) { + super(props); + const { + value + } = this.props; + this.state = { + initialValue: value || "", + value: value || [], + buttonWidth: 0 + }; + this.startIndex = 1; + this.handleFormSubmit = this.handleFormSubmit.bind(this); + this.getMainFormButtonWidth = this.getMainFormButtonWidth.bind(this); + this.dropdownListItemRef = (0,external_react_namespaceObject.createRef)(); + } + static getDerivedStateFromProps(nextProps, prevState) { + const state = {}; + if (nextProps.value && JSON.stringify(nextProps.value) !== JSON.stringify(prevState.initialValue)) { + state.value = nextProps.value || []; + state.initialValue = nextProps.value || ""; + } + return state.value ? state : null; + } + getListItemsCssClass(displayType) { + const { config } = this.props; + const cssClasses = ["tyk-editable-list-items"]; + cssClasses.push(config.displayType || "table"); + if (displayType === "inline") { + cssClasses.push("tyk-editable-list-items--inline"); + } + return cssClasses.join(" "); + } + getFormInputKey() { + this.startIndex += 1; + return this.startIndex; + } + // generate list item value's based on the display types + // table, inline, list + getListItemText(itemData) { + const { config } = this.props; + let value = null; + switch (config.displayType) { + case "list": + case "inline": { + const itemText = itemData.value.reduce((prevValue, itemValue, index) => { + const tempValue = _EditableList.getItemListValue(itemValue); + let separator = ", "; + if (index === itemData.value.length - 1) { + separator = ""; + } + return prevValue + tempValue + separator; + }, ""); + value = itemText; + break; + } + default: + value = /* @__PURE__ */ external_react_default().createElement(Row_Row, null, config.components.map((component, index) => /* @__PURE__ */ external_react_default().createElement( + layout_Column, + { + key: this.getFormInputKey(), + size: `md-${component.size} lg-${component.size}` + }, + _EditableList.getItemListValue(itemData.value[index]) + ))); + break; + } + return value; + } + getMainFormButtonWidth(value) { + this.setState({ + buttonWidth: value + }); + } + setItemEditMode(index) { + const newValues = this.closeListItems(); + this.setState((previousState) => { + const tempState = Object.assign({}, previousState); + tempState.value = newValues; + tempState.value[index].editMode = !tempState.value[index].editMode; + return tempState; + }); + } + isInList(index, itemValue) { + const { value } = this.state; + let ok = false; + value.forEach((item, itemIndex) => { + if (JSON.stringify(item.value) === JSON.stringify(itemValue)) { + if (index >= 0 && itemIndex === index) { + ok = false; + } else { + ok = true; + } + } + }); + return ok; + } + addValues(newValue) { + const { value } = this.state; + const { config } = this.props; + const itemValue = { + editMode: false, + value: newValue + }; + const tempState = { + value: value.slice(0) + }; + if (config.children) { + itemValue.children = []; + } + tempState.value.push(itemValue); + return tempState; + } + removeListItem(index) { + let removedItem; + this.setState((previousState) => { + const valueArr = previousState.value.slice(0); + removedItem = valueArr.splice(index, 1); + return { + value: valueArr + }; + }, () => { + this.triggerOnChange(index, removedItem, null); + }); + } + handleFormSubmit(value) { + const tempState = this.addValues(value); + this.setState((previousState) => Object.assign({}, previousState, tempState), () => { + this.triggerOnChange(tempState.value.length - 1, null, value); + }); + } + handleItemUpdate(index, value) { + let prevValue; + this.setState((previousState) => { + const tempState = Object.assign({}, previousState); + prevValue = (0,external_immutable_namespaceObject.fromJS)(tempState.value[index].value).toJS(); + tempState.value[index].value = value; + tempState.value[index].editMode = false; + return tempState; + }, () => { + this.triggerOnChange(index, prevValue, value); + }); + } + handleChildrenOnChange(index, value) { + let prevValue; + this.setState((previousState) => { + const tempState = Object.assign({}, previousState); + prevValue = (0,external_immutable_namespaceObject.fromJS)(tempState.value[index].children).toJS(); + tempState.value[index].children = value; + return tempState; + }, () => { + this.triggerOnChange(index, prevValue, value); + }); + } + closeListItems() { + const { value } = this.state; + const newValues = value.map((itemValue) => { + const tempItemValue = Object.assign({}, itemValue); + if (tempItemValue.editMode) { + tempItemValue.editMode = false; + return tempItemValue; + } + return tempItemValue; + }); + return newValues; + } + triggerOnChange(index, prevValue, nextValue) { + const { onChange } = this.props; + const { value } = this.state; + if (onChange && typeof onChange === "function") { + onChange(value.length ? value : null, index, prevValue, nextValue); + } + } + genListItem(itemData, index) { + const { config, disabled } = this.props; + const { buttonWidth, value } = this.state; + const clonedComponents = (0,external_immutable_namespaceObject.fromJS)(config.components).toJS(); + itemData.value.forEach((itemValue, itemIndex) => { + clonedComponents[itemIndex].props.value = itemValue; + }); + return /* @__PURE__ */ external_react_default().createElement( + "li", + { + key: index, + className: _EditableList.getListItemCssClass(config.displayType), + ref: this.dropdownListItemRef + }, + /* @__PURE__ */ external_react_default().createElement( + "div", + { + className: `tyk-editable-list-item__text ${config.displayType || "table"}${itemData.editMode ? " edit-mode-wrapper" : ""}` + }, + !itemData.editMode ? /* @__PURE__ */ external_react_default().createElement(external_react_namespaceObject.Fragment, null, this.getListItemText(itemData, index), /* @__PURE__ */ external_react_default().createElement( + "div", + { + className: "tyk-editable-list-item__controls", + style: { + display: "block", + width: config.displayType === "inline" ? "auto" : `${buttonWidth + 60}px` + } + }, + /* @__PURE__ */ external_react_default().createElement("button", { disabled, type: "button", className: "tyk-editable-list-action__button", onClick: this.setItemEditMode.bind(this, index) }, /* @__PURE__ */ external_react_default().createElement(components_Icon, { type: "edit" })), + /* @__PURE__ */ external_react_default().createElement("button", { disabled, type: "button", className: "tyk-editable-list-action__button", onClick: this.removeListItem.bind(this, index) }, /* @__PURE__ */ external_react_default().createElement(components_Icon, { type: "trash" })) + )) : /* @__PURE__ */ external_react_default().createElement(external_react_namespaceObject.Fragment, null, /* @__PURE__ */ external_react_default().createElement( + EditableListForm, + { + buttonName: "Update", + noLabels: config.noLabels, + disabled, + displayType: config.displayType, + components: clonedComponents, + onSubmit: this.handleItemUpdate.bind(this, index), + validate: this.isInList.bind(this, index), + validationmessage: "This value is already in the list" + } + ), /* @__PURE__ */ external_react_default().createElement("button", { type: "button", className: "tyk-editable-list-action__button on-edit", onClick: this.removeListItem.bind(this, index) }, /* @__PURE__ */ external_react_default().createElement(components_Icon, { type: "trash" }))) + ), + config.children ? /* @__PURE__ */ external_react_default().createElement( + _EditableList, + { + disabled, + onChange: this.handleChildrenOnChange.bind(this, index), + config: config.children.config, + value: value[index] && value[index].children || [] + } + ) : null + ); + } + genList() { + const { config } = this.props; + const { buttonWidth, value } = this.state; + if (!value || value.length === 0) { + return null; + } + return /* @__PURE__ */ external_react_default().createElement(external_react_namespaceObject.Fragment, null, config.displayType === "table" || !config.displayType ? /* @__PURE__ */ external_react_default().createElement( + "div", + { + className: "tyk-editable-list__header", + style: { + paddingRight: `${buttonWidth + 60}px` + } + }, + /* @__PURE__ */ external_react_default().createElement(Row_Row, null, config.components.map((component, index) => /* @__PURE__ */ external_react_default().createElement(layout_Column, { key: component.props.label || index, size: `md-${component.size || 12} lg-${component.size || 12}` }, component.props.label))) + ) : null, /* @__PURE__ */ external_react_default().createElement("ul", { className: this.getListItemsCssClass(config.displayType) }, value.map((itemData, index) => this.genListItem(itemData, index)))); + } + render() { + const { + addValueOnFieldChange, + config, + error, + disabled, + label + } = this.props; + const appendToElement = document.querySelector(config.appendTo) || document.querySelector("body"); + return /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-editable-list" }, label ? /* @__PURE__ */ external_react_default().createElement("label", null, label) : null, /* @__PURE__ */ external_react_default().createElement( + EditableListForm, + { + addValueOnFieldChange, + components: config.components, + buttonName: config.formButtonTitle, + buttonStyle: config.formButtonStyle, + disabled, + error, + errorPersist: !!error, + noLabels: config.noLabels, + onSubmit: this.handleFormSubmit, + validate: this.isInList.bind(this, -1), + validationmessage: "This value is already in the list", + getMainFormButtonWidth: this.getMainFormButtonWidth + } + ), config.appendTo ? external_react_dom_default().createPortal( + this.genList(), + appendToElement + ) : this.genList()); + } +}; +EditableList_publicField(_EditableList, "propTypes", { + addValueOnFieldChange: (external_prop_types_default()).bool, + disabled: (external_prop_types_default()).bool, + error: (external_prop_types_default()).string, + config: external_prop_types_default().instanceOf(Object), + onChange: (external_prop_types_default()).func, + label: external_prop_types_default().oneOfType([ + external_prop_types_default().arrayOf((external_prop_types_default()).node), + (external_prop_types_default()).node, + (external_prop_types_default()).element, + (external_prop_types_default()).func, + (external_prop_types_default()).string + ]), + value: external_prop_types_default().oneOfType([ + external_prop_types_default().instanceOf(Array), + external_prop_types_default().instanceOf(Object) + ]) +}); +let EditableList = _EditableList; + + +;// CONCATENATED MODULE: ./src/form/components/EditableList2/Header.js + + + +const Header_Header = ({ + label, + addButtonName, + onAddRow, + disabled, + readOnly +}) => /* @__PURE__ */ external_react_default().createElement("div", { className: "editable-list__header" }, label ? /* @__PURE__ */ external_react_default().createElement("label", null, label) : null, !disabled && !readOnly && /* @__PURE__ */ external_react_default().createElement( + components_Button, + { + theme: "primary rounded-corners", + onClick: onAddRow + }, + addButtonName || "Add" +)); +Header_Header.propTypes = { + disabled: (external_prop_types_default()).bool, + readOnly: (external_prop_types_default()).bool, + onAddRow: (external_prop_types_default()).func, + addButtonName: (external_prop_types_default()).string, + label: external_prop_types_default().oneOfType([ + (external_prop_types_default()).string, + (external_prop_types_default()).element, + (external_prop_types_default()).node + ]) +}; +/* harmony default export */ const EditableList2_Header = (Header_Header); + +;// CONCATENATED MODULE: ./src/form/components/EditableList2/ListHeader.js + + +const ListHeader = ({ + fields, + readOnly +}) => /* @__PURE__ */ external_react_default().createElement("li", { className: "editable-list__item editable-list__item-header" }, fields.map((field) => { + var _a; + return /* @__PURE__ */ external_react_default().createElement("div", { className: `editable-list__item-cell editable-list__item--size-${(field == null ? void 0 : field.size) || 12}` }, (_a = field == null ? void 0 : field.props) == null ? void 0 : _a.label); +}), /* @__PURE__ */ external_react_default().createElement("div", { className: `editable-list__item-cell editable-list__item-action ${readOnly && "editable-list__item-action--read-only"}` }, "Delete")); +ListHeader.propTypes = { + fields: external_prop_types_default().instanceOf(Array), + readOnly: (external_prop_types_default()).bool +}; +/* harmony default export */ const EditableList2_ListHeader = (ListHeader); + +;// CONCATENATED MODULE: ./src/form/components/EditableList2/FieldsList.js +var FieldsList_defProp = Object.defineProperty; +var FieldsList_defProps = Object.defineProperties; +var FieldsList_getOwnPropDescs = Object.getOwnPropertyDescriptors; +var FieldsList_getOwnPropSymbols = Object.getOwnPropertySymbols; +var FieldsList_hasOwnProp = Object.prototype.hasOwnProperty; +var FieldsList_propIsEnum = Object.prototype.propertyIsEnumerable; +var FieldsList_defNormalProp = (obj, key, value) => key in obj ? FieldsList_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var FieldsList_spreadValues = (a, b) => { + for (var prop in b || (b = {})) + if (FieldsList_hasOwnProp.call(b, prop)) + FieldsList_defNormalProp(a, prop, b[prop]); + if (FieldsList_getOwnPropSymbols) + for (var prop of FieldsList_getOwnPropSymbols(b)) { + if (FieldsList_propIsEnum.call(b, prop)) + FieldsList_defNormalProp(a, prop, b[prop]); + } + return a; +}; +var FieldsList_spreadProps = (a, b) => FieldsList_defProps(a, FieldsList_getOwnPropDescs(b)); + + + +const FieldsList = ({ + fields, + disabled, + readOnly, + errors, + components, + onChange, + onDelete, + value, + rowIndex +}) => /* @__PURE__ */ external_react_default().createElement("li", { className: "editable-list__item" }, components.map((Component, index) => { + var _a, _b, _c; + let field = fields[index]; + let tempField = typeof field === "function" ? field(rowIndex, index) : field; + return ( + /* eslint-disable-next-line */ + /* @__PURE__ */ external_react_default().createElement("div", { className: `editable-list__item-cell editable-list__item--size-${((_a = fields[index]) == null ? void 0 : _a.size) || 12}` }, /* @__PURE__ */ external_react_default().createElement( + Component, + FieldsList_spreadProps(FieldsList_spreadValues({}, tempField == null ? void 0 : tempField.props), { + label: "", + value: value[index], + onChange: onChange.bind(null, index), + error: errors == null ? void 0 : errors[index], + disabled: disabled || ((_b = tempField == null ? void 0 : tempField.props) == null ? void 0 : _b.disabled), + readOnly: readOnly || ((_c = tempField == null ? void 0 : tempField.props) == null ? void 0 : _c.readOnly) + }) + )) + ); +}), /* @__PURE__ */ external_react_default().createElement("div", { className: `editable-list__item-cell editable-list__item-action ${readOnly && "editable-list__item-action--read-only"}` }, /* @__PURE__ */ external_react_default().createElement( + components_Button, + { + iconOnly: true, + iconType: "trash-alt", + theme: "primary-link", + onClick: onDelete, + disabled: readOnly || disabled + } +))); +FieldsList.propTypes = { + disabled: (external_prop_types_default()).bool, + readOnly: (external_prop_types_default()).bool, + rowIndex: external_prop_types_default().oneOfType([ + (external_prop_types_default()).string, + (external_prop_types_default()).number + ]), + fields: external_prop_types_default().instanceOf(Array), + errors: external_prop_types_default().instanceOf(Array), + components: external_prop_types_default().instanceOf(Array), + value: external_prop_types_default().instanceOf(Array), + onChange: (external_prop_types_default()).func, + onDelete: (external_prop_types_default()).func +}; +/* harmony default export */ const EditableList2_FieldsList = (FieldsList); + +;// CONCATENATED MODULE: ./src/form/components/EditableList2/validate-values.js +const validateValues = (fields, rowValues) => { + var _a; + return (_a = rowValues || [[void 0, void 0]]) == null ? void 0 : _a.map( + (colValue) => colValue == null ? void 0 : colValue.map( + (value, index) => { + var _a2, _b; + return ((_b = (_a2 = fields == null ? void 0 : fields[index]) == null ? void 0 : _a2.props) == null ? void 0 : _b.validate) && fields[index].props.validate(value); + } + ) + ); +}; +/* harmony default export */ const validate_values = (validateValues); + +;// CONCATENATED MODULE: ./src/form/components/EditableList2/with-validation.js +var with_validation_defProp = Object.defineProperty; +var with_validation_defProps = Object.defineProperties; +var with_validation_getOwnPropDescs = Object.getOwnPropertyDescriptors; +var with_validation_getOwnPropSymbols = Object.getOwnPropertySymbols; +var with_validation_hasOwnProp = Object.prototype.hasOwnProperty; +var with_validation_propIsEnum = Object.prototype.propertyIsEnumerable; +var with_validation_defNormalProp = (obj, key, value) => key in obj ? with_validation_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var with_validation_spreadValues = (a, b) => { + for (var prop in b || (b = {})) + if (with_validation_hasOwnProp.call(b, prop)) + with_validation_defNormalProp(a, prop, b[prop]); + if (with_validation_getOwnPropSymbols) + for (var prop of with_validation_getOwnPropSymbols(b)) { + if (with_validation_propIsEnum.call(b, prop)) + with_validation_defNormalProp(a, prop, b[prop]); + } + return a; +}; +var with_validation_spreadProps = (a, b) => with_validation_defProps(a, with_validation_getOwnPropDescs(b)); +var with_validation_objRest = (source, exclude) => { + var target = {}; + for (var prop in source) + if (with_validation_hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) + target[prop] = source[prop]; + if (source != null && with_validation_getOwnPropSymbols) + for (var prop of with_validation_getOwnPropSymbols(source)) { + if (exclude.indexOf(prop) < 0 && with_validation_propIsEnum.call(source, prop)) + target[prop] = source[prop]; + } + return target; +}; + +const withValidation = (Component) => (_a) => { + var _b = _a, { + onChange, + validate, + error + } = _b, rest = with_validation_objRest(_b, [ + "onChange", + "validate", + "error" + ]); + const [internalError, setInternalError] = (0,external_react_namespaceObject.useState)(null); + const onFieldChange = (0,external_react_namespaceObject.useCallback)((event) => { + const value = (event == null ? void 0 : event.target) ? ["radio", "checkbox"].includes(event.target.type) ? event.target.checked : event == null ? void 0 : event.target.value : event; + let isValid = true; + if (validate && typeof validate === "function") { + const errorMsg = validate(value); + isValid = !errorMsg; + setInternalError(errorMsg); + } + onChange(value, isValid); + }, [validate, onChange]); + return /* @__PURE__ */ external_react_default().createElement(Component, with_validation_spreadProps(with_validation_spreadValues({}, rest), { onChange: onFieldChange, error: internalError || error })); +}; +/* harmony default export */ const with_validation = (withValidation); + +;// CONCATENATED MODULE: ./src/form/components/EditableList2/index.js + + + + + + + +let id = 1; +const getUID = (prefix) => `${prefix}-${id++}`; +const EditableList2 = ({ + addButtonName, + disabled, + readOnly, + fields, + label, + error, + value = [], + onChange = () => { + }, + hideOnEmpty = true, + wrapperClassName = "" +}) => { + const [internalErrors, setInteranlErrors] = (0,external_react_namespaceObject.useState)(null); + const updateRowValue = (rowIndex, fieldIndex, componentValue, isValid) => { + var _a; + const tempValueArr = !value ? [] : [...value]; + if (!value) { + tempValueArr[rowIndex] = [...new Array(fields.length)]; + tempValueArr[rowIndex][fieldIndex] = componentValue; + } else { + const tempValue = [...tempValueArr[rowIndex]]; + tempValue[fieldIndex] = componentValue; + tempValueArr[rowIndex] = tempValue; + tempValueArr[rowIndex].id = value[rowIndex].id; + } + if (((_a = internalErrors == null ? void 0 : internalErrors[rowIndex]) == null ? void 0 : _a[fieldIndex]) && isValid) { + const tempErrors = [...internalErrors]; + const tempFieldError = [...tempErrors[rowIndex]]; + tempFieldError[fieldIndex] = null; + tempErrors[rowIndex] = tempFieldError; + setInteranlErrors(tempErrors); + } + onChange(tempValueArr); + }; + const hasErrors = (errors) => { + var _a; + return Boolean((_a = errors == null ? void 0 : errors.flat()) == null ? void 0 : _a.filter(Boolean).length); + }; + const Components = (0,external_react_namespaceObject.useMemo)( + () => fields.map((field) => { + let tempField = typeof field === "function" ? field() : field; + return with_validation((tempField == null ? void 0 : tempField.component) || /* @__PURE__ */ external_react_default().createElement((external_react_default()).Fragment, null)); + }), + [] + ); + const onAddRow = () => { + const errors = validate_values(fields, value); + if (hasErrors(errors)) { + setInteranlErrors(errors); + return; + } + const newValue = [...new Array(fields.length)]; + newValue.id = getUID("row"); + onChange([ + ...value && value, + newValue + ]); + }; + const deleteRow = (index) => { + if (!value) { + return; + } + const tempValue = [...value]; + tempValue.splice(index, 1); + onChange(tempValue); + }; + return /* @__PURE__ */ external_react_default().createElement("div", { className: `editable-list__wrapper tyk-form-group tyk-form-group--default ${error ? "has-error" : ""} ${wrapperClassName}` }, /* @__PURE__ */ external_react_default().createElement( + EditableList2_Header, + { + disabled, + readOnly, + label, + addButtonName, + onAddRow + } + ), (value == null ? void 0 : value.length) || !hideOnEmpty ? /* @__PURE__ */ external_react_default().createElement("ul", { className: "editable-list__list" }, (value || [[]]).map((v, i) => /* @__PURE__ */ external_react_default().createElement((external_react_default()).Fragment, null, /* @__PURE__ */ external_react_default().createElement( + EditableList2_FieldsList, + { + key: v.id || i, + rowIndex: i, + disabled, + readOnly, + fields, + onChange: updateRowValue.bind(null, i), + onDelete: deleteRow.bind(null, i), + value: v, + errors: internalErrors == null ? void 0 : internalErrors[i], + components: Components + } + ))), /* @__PURE__ */ external_react_default().createElement(EditableList2_ListHeader, { fields, readOnly })) : null, error && error !== "true" && error !== "false" ? /* @__PURE__ */ external_react_default().createElement("p", { className: "tyk-form-control__error-message" }, error) : null); +}; +EditableList2.propTypes = { + /** Sets Editable list in edit mode. + * If enabled all fields are disabled, the add button is hidden and delete button is disabled + * */ + disabled: (external_prop_types_default()).bool, + /** Sets Editable list in read only mode. + * If enabled all fields are displaying just the value, + * the add button is hidden and delete button is disabled + */ + readOnly: (external_prop_types_default()).bool, + /** Name of the Add button. By default has 'Add value' */ + addButtonName: (external_prop_types_default()).string, + /** Label of Editable list, is displayed above the list and inline with the Add button */ + label: external_prop_types_default().oneOfType([ + (external_prop_types_default()).string, + (external_prop_types_default()).element, + (external_prop_types_default()).node + ]), + /** Array of form elements that you want the list to have + * Each field is an object points to the Form element component that you want to use, + * the props you want to apply on it, + * and the size (as in width, it's like columns system, between 1 and 12) + * Example: + * ... + * fields={[ + { + component: Input2, + styles: { + width: "200px", + }, + size: 4, + props: { + name: 'input', + label: 'Claim name', + theme: 'default rounded-corners', + placeholder: 'Enter claim name', + validate: formikRequired('This field is required') + } + }, + { + component: Combobox2, + size: 8, + props: comboboxProps + } + ]} + */ + fields: external_prop_types_default().instanceOf(Array), + /** onChange function is called everytime the value of editable list changes */ + onChange: (external_prop_types_default()).func, + /** value of editable list, wich is an Array (List of row values) + * of Arrays (List of column values, + * each column will have the value format depending on the component type) + */ + value: external_prop_types_default().oneOfType([ + external_prop_types_default().instanceOf(Object), + external_prop_types_default().instanceOf(Array) + ]), + error: (external_prop_types_default()).string, + hideOnEmpty: (external_prop_types_default()).bool, + wrapperClassName: (external_prop_types_default()).string +}; +/* harmony default export */ const components_EditableList2 = (EditableList2); + +;// CONCATENATED MODULE: ./src/form/components/FileInput/index.js +var FileInput_defProp = Object.defineProperty; +var FileInput_defProps = Object.defineProperties; +var FileInput_getOwnPropDescs = Object.getOwnPropertyDescriptors; +var FileInput_getOwnPropSymbols = Object.getOwnPropertySymbols; +var FileInput_hasOwnProp = Object.prototype.hasOwnProperty; +var FileInput_propIsEnum = Object.prototype.propertyIsEnumerable; +var FileInput_defNormalProp = (obj, key, value) => key in obj ? FileInput_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var FileInput_spreadValues = (a, b) => { + for (var prop in b || (b = {})) + if (FileInput_hasOwnProp.call(b, prop)) + FileInput_defNormalProp(a, prop, b[prop]); + if (FileInput_getOwnPropSymbols) + for (var prop of FileInput_getOwnPropSymbols(b)) { + if (FileInput_propIsEnum.call(b, prop)) + FileInput_defNormalProp(a, prop, b[prop]); + } + return a; +}; +var FileInput_spreadProps = (a, b) => FileInput_defProps(a, FileInput_getOwnPropDescs(b)); +var FileInput_objRest = (source, exclude) => { + var target = {}; + for (var prop in source) + if (FileInput_hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) + target[prop] = source[prop]; + if (source != null && FileInput_getOwnPropSymbols) + for (var prop of FileInput_getOwnPropSymbols(source)) { + if (exclude.indexOf(prop) < 0 && FileInput_propIsEnum.call(source, prop)) + target[prop] = source[prop]; + } + return target; +}; +var FileInput_publicField = (obj, key, value) => { + FileInput_defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); + return value; +}; + + + +class FileInput extends external_react_namespaceObject.Component { + constructor(props) { + super(props); + this.handleOnChange = this.handleOnChange.bind(this); + this.clearValue = this.clearValue.bind(this); + this.fileInputRef = (0,external_react_namespaceObject.createRef)(); + } + getCssClasses() { + const { + error, + theme, + labelwidth, + wrapperClassName = "" + } = this.props; + const cssClasses = [wrapperClassName, "tyk-form-group"]; + const themes = theme ? theme.split(" ") : []; + if (themes.length) { + themes.forEach((iTheme) => { + cssClasses.push(`tyk-form-group--${iTheme}`); + }); + } + if (labelwidth) { + cssClasses.push("tyk-form-group--label-has-width"); + } + if (error) { + cssClasses.push("has-error"); + } + return cssClasses.join(" "); + } + getLabelStyles() { + const { labelwidth } = this.props; + const styles = {}; + if (labelwidth) { + styles.flexBasis = labelwidth; + } + return styles; + } + getNonLabelWidth() { + const { labelwidth } = this.props; + const styles = {}; + if (labelwidth) { + styles.flexBasis = `calc(100% - ${labelwidth} - 20px)`; + } + return styles; + } + getFileInputError() { + const { error } = this.props; + return error && error !== "true" && error !== "false" ? /* @__PURE__ */ external_react_default().createElement( + "p", + { + className: "tyk-form-control__error-message" + }, + error + ) : null; + } + getFileInputComponent() { + const _a = this.props, { + accept, + value: omitValue, + onChange + } = _a, rest = FileInput_objRest(_a, [ + "accept", + "value", + "onChange" + ]); + return /* @__PURE__ */ external_react_default().createElement( + "div", + { + className: "tyk-file-input__wrapper", + style: this.getNonLabelWidth() + }, + /* @__PURE__ */ external_react_default().createElement( + "input", + FileInput_spreadProps(FileInput_spreadValues({ + accept, + className: "tyk-form-control" + }, rest), { + onChange: this.handleOnChange, + ref: this.fileInputRef, + type: "file" + }) + ), + this.fileInputRef.current && this.fileInputRef.current.files.length > 0 ? /* @__PURE__ */ external_react_default().createElement( + "button", + { + onClick: this.clearValue, + type: "button" + }, + /* @__PURE__ */ external_react_default().createElement(components_Icon, { type: "times" }) + ) : null + ); + } + clearValue() { + const { onChange } = this.props; + this.fileInputRef.current.value = ""; + onChange(""); + } + handleOnChange(e) { + const { onChange } = this.props; + onChange(e.target.files); + } + // eslint-disable-next-line class-methods-use-this + reset() { + } + render() { + const { + id, + label, + note + } = this.props; + return /* @__PURE__ */ external_react_default().createElement(external_react_namespaceObject.Fragment, null, /* @__PURE__ */ external_react_default().createElement("div", { className: this.getCssClasses() }, label ? /* @__PURE__ */ external_react_default().createElement("label", { htmlFor: id, style: this.getLabelStyles() }, label) : null, /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-form-control__wrapper" }, this.getFileInputComponent(), note ? /* @__PURE__ */ external_react_default().createElement("p", { className: "tyk-form-control__help-block" }, note) : null), this.getFileInputError())); + } +} +FileInput_publicField(FileInput, "propTypes", { + accept: (external_prop_types_default()).string, + disabled: (external_prop_types_default()).bool, + id: (external_prop_types_default()).string, + error: external_prop_types_default().oneOfType([ + (external_prop_types_default()).string, + (external_prop_types_default()).bool + ]), + label: external_prop_types_default().oneOfType([ + external_prop_types_default().arrayOf((external_prop_types_default()).node), + (external_prop_types_default()).node, + (external_prop_types_default()).element, + (external_prop_types_default()).func, + (external_prop_types_default()).string + ]), + labelwidth: (external_prop_types_default()).string, + name: (external_prop_types_default()).string, + note: (external_prop_types_default()).string, + onChange: (external_prop_types_default()).func, + placeholder: (external_prop_types_default()).string, + theme: (external_prop_types_default()).string, + value: external_prop_types_default().instanceOf(Object), + wrapperClassName: (external_prop_types_default()).string +}); + +;// CONCATENATED MODULE: ./src/form/components/Input/index.js +var Input_defProp = Object.defineProperty; +var Input_defProps = Object.defineProperties; +var Input_getOwnPropDescs = Object.getOwnPropertyDescriptors; +var Input_getOwnPropSymbols = Object.getOwnPropertySymbols; +var Input_hasOwnProp = Object.prototype.hasOwnProperty; +var Input_propIsEnum = Object.prototype.propertyIsEnumerable; +var Input_defNormalProp = (obj, key, value) => key in obj ? Input_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var Input_spreadValues = (a, b) => { + for (var prop in b || (b = {})) + if (Input_hasOwnProp.call(b, prop)) + Input_defNormalProp(a, prop, b[prop]); + if (Input_getOwnPropSymbols) + for (var prop of Input_getOwnPropSymbols(b)) { + if (Input_propIsEnum.call(b, prop)) + Input_defNormalProp(a, prop, b[prop]); + } + return a; +}; +var Input_spreadProps = (a, b) => Input_defProps(a, Input_getOwnPropDescs(b)); +var Input_objRest = (source, exclude) => { + var target = {}; + for (var prop in source) + if (Input_hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) + target[prop] = source[prop]; + if (source != null && Input_getOwnPropSymbols) + for (var prop of Input_getOwnPropSymbols(source)) { + if (exclude.indexOf(prop) < 0 && Input_propIsEnum.call(source, prop)) + target[prop] = source[prop]; + } + return target; +}; +var Input_publicField = (obj, key, value) => { + Input_defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); + return value; +}; + + +const _Input = class _Input extends external_react_namespaceObject.Component { + static getAddon(content) { + return /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-input-group__addon" }, content); + } + constructor(props) { + super(props); + const { + value + } = this.props; + this.state = { + initValue: value, + stateValue: value + }; + this.handleOnChange = this.handleOnChange.bind(this); + } + componentDidUpdate(prevProps) { + const { + isfield, + value, + onChange + } = this.props; + if (!isfield && prevProps.value !== value) { + this.setState({ + stateValue: value + }, () => { + if (onChange) { + onChange(value); + } + }); + } + } + getLabelStyles() { + const { labelwidth } = this.props; + const styles = {}; + if (labelwidth) { + styles.flexBasis = labelwidth; + } + return styles; + } + getNonLabelWidth() { + const { labelwidth } = this.props; + const styles = {}; + if (labelwidth) { + styles.flexBasis = `calc(100% - ${labelwidth} - 20px)`; + } + return styles; + } + getInputError() { + const { error } = this.props; + return error && error !== "true" && error !== "false" ? /* @__PURE__ */ external_react_default().createElement( + "p", + { + className: "tyk-form-control__error-message" + }, + error + ) : null; + } + getCssClasses() { + const { + error, + theme, + labelwidth, + inputgroupaddonleft, + inputgroupaddonright + } = this.props; + const cssClasses = ["tyk-form-group"]; + const themes = theme ? theme.split(" ") : []; + if (themes.length) { + themes.forEach((iTheme) => { + cssClasses.push(`tyk-form-group--${iTheme}`); + }); + } + if (inputgroupaddonleft) { + cssClasses.push("tyk-form-group--addon-left"); + } + if (inputgroupaddonright) { + cssClasses.push("tyk-form-group--addon-right"); + } + if (labelwidth) { + cssClasses.push("tyk-form-group--label-has-width"); + } + if (error) { + cssClasses.push("has-error"); + } + return cssClasses.join(" "); + } + getInputGroupAddon() { + const { + inputgroupaddonleft, + inputgroupaddonright + } = this.props; + return /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-input-group" }, inputgroupaddonleft ? _Input.getAddon(inputgroupaddonleft) : null, this.getInputComponent(), inputgroupaddonright ? _Input.getAddon(inputgroupaddonright) : null); + } + getInputComponent() { + const _a = this.props, { + isfield, + onChange, + value + } = _a, rest = Input_objRest(_a, [ + "isfield", + "onChange", + "value" + ]); + const { stateValue } = this.state; + return /* @__PURE__ */ external_react_default().createElement( + "input", + Input_spreadProps(Input_spreadValues({ + autoComplete: "off", + className: "tyk-form-control" + }, rest), { + onChange: this.handleOnChange, + value: isfield ? value : stateValue + }) + ); + } + reset() { + const { initValue } = this.state; + this.setState({ + stateValue: initValue + }); + } + handleOnChange(e) { + const { onChange, isfield } = this.props; + const inputValue = e.target.value; + if (!isfield) { + this.setState({ + stateValue: inputValue + }, () => { + if (onChange) { + onChange(inputValue); + } + }); + } else { + onChange(inputValue); + } + } + render() { + const { + label, + id, + inputgroupaddonleft, + inputgroupaddonright, + note, + readOnly, + value + } = this.props; + return /* @__PURE__ */ external_react_default().createElement("div", { className: this.getCssClasses() }, label ? /* @__PURE__ */ external_react_default().createElement("label", { htmlFor: id, style: this.getLabelStyles() }, label) : null, !readOnly && /* @__PURE__ */ external_react_default().createElement( + "div", + { + className: "tyk-form-control__wrapper", + style: this.getNonLabelWidth() + }, + inputgroupaddonleft || inputgroupaddonright ? this.getInputGroupAddon() : this.getInputComponent(), + note ? /* @__PURE__ */ external_react_default().createElement("p", { className: "tyk-form-control__help-block" }, note) : null, + this.getInputError() + ), readOnly && /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-form-control--readonly" }, value || "-")); + } +}; +Input_publicField(_Input, "propTypes", { + disabled: (external_prop_types_default()).bool, + readOnly: (external_prop_types_default()).bool, + id: (external_prop_types_default()).string, + isfield: (external_prop_types_default()).bool, + error: external_prop_types_default().oneOfType([ + (external_prop_types_default()).string, + (external_prop_types_default()).bool + ]), + inputgroupaddonleft: external_prop_types_default().oneOfType([ + (external_prop_types_default()).element, + (external_prop_types_default()).node, + (external_prop_types_default()).string + ]), + inputgroupaddonright: external_prop_types_default().oneOfType([ + (external_prop_types_default()).element, + (external_prop_types_default()).node, + (external_prop_types_default()).string + ]), + label: external_prop_types_default().oneOfType([ + (external_prop_types_default()).string, + (external_prop_types_default()).element, + (external_prop_types_default()).node + ]), + labelwidth: (external_prop_types_default()).string, + name: (external_prop_types_default()).string, + note: (external_prop_types_default()).string, + onChange: (external_prop_types_default()).func, + placeholder: (external_prop_types_default()).string, + theme: (external_prop_types_default()).string, + value: external_prop_types_default().oneOfType([ + (external_prop_types_default()).number, + (external_prop_types_default()).string + ]) +}); +let Input = _Input; + + +;// CONCATENATED MODULE: ./src/form/components/Input2/index.js +var Input2_defProp = Object.defineProperty; +var Input2_defProps = Object.defineProperties; +var Input2_getOwnPropDescs = Object.getOwnPropertyDescriptors; +var Input2_getOwnPropSymbols = Object.getOwnPropertySymbols; +var Input2_hasOwnProp = Object.prototype.hasOwnProperty; +var Input2_propIsEnum = Object.prototype.propertyIsEnumerable; +var Input2_defNormalProp = (obj, key, value) => key in obj ? Input2_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var Input2_spreadValues = (a, b) => { + for (var prop in b || (b = {})) + if (Input2_hasOwnProp.call(b, prop)) + Input2_defNormalProp(a, prop, b[prop]); + if (Input2_getOwnPropSymbols) + for (var prop of Input2_getOwnPropSymbols(b)) { + if (Input2_propIsEnum.call(b, prop)) + Input2_defNormalProp(a, prop, b[prop]); + } + return a; +}; +var Input2_spreadProps = (a, b) => Input2_defProps(a, Input2_getOwnPropDescs(b)); +var Input2_objRest = (source, exclude) => { + var target = {}; + for (var prop in source) + if (Input2_hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) + target[prop] = source[prop]; + if (source != null && Input2_getOwnPropSymbols) + for (var prop of Input2_getOwnPropSymbols(source)) { + if (exclude.indexOf(prop) < 0 && Input2_propIsEnum.call(source, prop)) + target[prop] = source[prop]; + } + return target; +}; + + +const Input2 = (0,external_react_namespaceObject.forwardRef)((_a, ref) => { + var _b = _a, { + error, + onChange, + readOnly, + id, + inputgroupaddonleft, + inputgroupaddonright, + label, + labelwidth, + note, + theme, + value, + wrapperClassName = "" + } = _b, rest = Input2_objRest(_b, [ + "error", + "onChange", + "readOnly", + "id", + "inputgroupaddonleft", + "inputgroupaddonright", + "label", + "labelwidth", + "note", + "theme", + "value", + "wrapperClassName" + ]); + const inputRef = (0,external_react_namespaceObject.useRef)(); + (0,external_react_namespaceObject.useImperativeHandle)(ref, () => ({ + focus: () => { + inputRef.current.focus(); + } + })); + const getAddon = (content) => /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-input-group__addon" }, content); + const getLabelStyles = () => Input2_spreadValues({}, labelwidth && { + flexBasis: labelwidth + }); + const getNonLabelWidth = () => Input2_spreadValues({}, labelwidth && { + flexBasis: `calc(100% - ${labelwidth} - 20px)` + }); + const getInputError = () => error && error !== "true" && error !== "false" ? /* @__PURE__ */ external_react_default().createElement( + "p", + { + className: "tyk-form-control__error-message" + }, + error + ) : null; + const getCssClasses = () => { + const cssClasses = [wrapperClassName, "tyk-form-group"]; + const themes = theme ? theme.split(" ") : []; + if (themes.length) { + themes.forEach((iTheme) => { + cssClasses.push(`tyk-form-group--${iTheme}`); + }); + } + if (inputgroupaddonleft) { + cssClasses.push("tyk-form-group--addon-left"); + } + if (inputgroupaddonright) { + cssClasses.push("tyk-form-group--addon-right"); + } + if (labelwidth) { + cssClasses.push("tyk-form-group--label-has-width"); + } + if (error) { + cssClasses.push("has-error"); + } + return cssClasses.join(" "); + }; + const handleOnChange = (e) => { + onChange(e, e.target.value); + }; + const getInputElement = () => /* @__PURE__ */ external_react_default().createElement( + "input", + Input2_spreadProps(Input2_spreadValues({ + autoComplete: "off", + className: "tyk-form-control" + }, rest), { + onChange: handleOnChange, + value, + ref: inputRef + }) + ); + const getInputGroupAddon = () => /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-input-group" }, inputgroupaddonleft ? getAddon(inputgroupaddonleft) : null, getInputElement(), inputgroupaddonright ? getAddon(inputgroupaddonright) : null); + return /* @__PURE__ */ external_react_default().createElement("div", { className: getCssClasses() }, label ? /* @__PURE__ */ external_react_default().createElement("label", { htmlFor: id, style: getLabelStyles() }, label) : null, !readOnly && /* @__PURE__ */ external_react_default().createElement( + "div", + { + className: "tyk-form-control__wrapper", + style: getNonLabelWidth() + }, + inputgroupaddonleft || inputgroupaddonright ? getInputGroupAddon() : getInputElement(), + note ? /* @__PURE__ */ external_react_default().createElement("p", { className: "tyk-form-control__help-block" }, note) : null, + getInputError() + ), readOnly && /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-form-control--readonly" }, value || "-")); +}); +Input2.propTypes = { + disabled: (external_prop_types_default()).bool, + readOnly: (external_prop_types_default()).bool, + id: (external_prop_types_default()).string, + error: external_prop_types_default().oneOfType([ + (external_prop_types_default()).string, + (external_prop_types_default()).bool + ]), + inputgroupaddonleft: external_prop_types_default().oneOfType([ + (external_prop_types_default()).element, + (external_prop_types_default()).node, + (external_prop_types_default()).string + ]), + inputgroupaddonright: external_prop_types_default().oneOfType([ + (external_prop_types_default()).element, + (external_prop_types_default()).node, + (external_prop_types_default()).string + ]), + label: external_prop_types_default().oneOfType([ + (external_prop_types_default()).string, + (external_prop_types_default()).element, + (external_prop_types_default()).node + ]), + labelwidth: (external_prop_types_default()).string, + name: (external_prop_types_default()).string, + note: (external_prop_types_default()).string, + onChange: (external_prop_types_default()).func, + placeholder: (external_prop_types_default()).string, + theme: (external_prop_types_default()).string, + value: external_prop_types_default().oneOfType([ + (external_prop_types_default()).number, + (external_prop_types_default()).string + ]), + wrapperClassName: (external_prop_types_default()).string +}; +/* harmony default export */ const components_Input2 = (Input2); + +;// CONCATENATED MODULE: ./src/form/components/Multiselect/js/MultiselectContext.js + +const MultiselectContext = (0,external_react_namespaceObject.createContext)(); +/* harmony default export */ const js_MultiselectContext = (MultiselectContext); + +;// CONCATENATED MODULE: ./src/form/components/Multiselect/js/MultiselectItem.js +var MultiselectItem_defProp = Object.defineProperty; +var MultiselectItem_defNormalProp = (obj, key, value) => key in obj ? MultiselectItem_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var MultiselectItem_publicField = (obj, key, value) => { + MultiselectItem_defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); + return value; +}; + + + + + + +const getItemContent = (context, item) => context.detailsDisplayTemplate ? context.detailsDisplayTemplate(item) : JSON.stringify(item.details); +const getItemLoader = (context, item) => { + const { opened } = context; + return opened[item.id] ? /* @__PURE__ */ external_react_default().createElement(components_Loader, { position: "relative" }) : null; +}; +class MultiselectItem extends external_react_namespaceObject.Component { + isInSearchValue(fieldsToSearchOn) { + const { searchValue, item } = this.props; + if (fieldsToSearchOn && fieldsToSearchOn.length > 0) { + let fields = fieldsToSearchOn.slice(0); + fields = fields.filter((key) => item[key] && item[key].search(searchValue) > -1); + return fields.length > 0; + } + return JSON.stringify(item).search(searchValue) > -1; + } + render() { + const { + item, + itemType, + onChange + } = this.props; + return /* @__PURE__ */ external_react_default().createElement(external_react_namespaceObject.Fragment, null, /* @__PURE__ */ external_react_default().createElement(js_MultiselectContext.Consumer, null, (context) => this.isInSearchValue(context.fieldsToSearchOn) ? /* @__PURE__ */ external_react_default().createElement("li", null, /* @__PURE__ */ external_react_default().createElement("div", null, /* @__PURE__ */ external_react_default().createElement("span", { className: "tyk-multiselect-item__name" }, context.itemDisplayTemplate ? context.itemDisplayTemplate(item) : JSON.stringify(item)), /* @__PURE__ */ external_react_default().createElement("span", { className: "tyk-multiselect-item__controls" }, /* @__PURE__ */ external_react_default().createElement( + components_Button, + { + iconType: itemType === "normal" ? "plus" : "minus", + iconOnly: true, + onClick: onChange.bind(null, item), + disabled: context.disabled || context.maxSelections && context.maxSelections === context.nrSelectedItems && itemType === "normal" + } + ), /* @__PURE__ */ external_react_default().createElement( + components_Button, + { + iconType: context.opened[item.id] ? "chevron-up" : "chevron-down", + iconOnly: true, + onClick: context.onGetItemDetails.bind(context.parentContext, item) + } + ))), item.details ? /* @__PURE__ */ external_react_default().createElement( + components_Collapsible, + { + collapsed: !context.opened[item.id], + className: "tyk-multiselect-item__details" + }, + getItemContent(context, item) + ) : getItemLoader(context, item)) : null)); + } +} +MultiselectItem_publicField(MultiselectItem, "propTypes", { + item: external_prop_types_default().instanceOf(Object), + itemType: (external_prop_types_default()).string, + searchValue: (external_prop_types_default()).string, + onChange: (external_prop_types_default()).func +}); +/* harmony default export */ const js_MultiselectItem = (MultiselectItem); + +;// CONCATENATED MODULE: ./src/form/components/Multiselect/js/MultiselectPanel.js +var MultiselectPanel_defProp = Object.defineProperty; +var MultiselectPanel_defNormalProp = (obj, key, value) => key in obj ? MultiselectPanel_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var MultiselectPanel_publicField = (obj, key, value) => { + MultiselectPanel_defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); + return value; +}; + + + + + + + + +class MultiselectPanel extends external_react_namespaceObject.Component { + constructor(props) { + super(props); + MultiselectPanel_publicField(this, "state", { + searchValue: "" + }); + this.searchOnChange = this.searchOnChange.bind(this); + this.itemChanged = this.itemChanged.bind(this); + this.itemIndex = 0; + this.itemsListRef = (0,external_react_namespaceObject.createRef)(); + } + getItemIndex() { + this.itemIndex += 1; + return this.itemIndex; + } + getItemsList() { + const { + itemsPageNumber, + itemsNrPages, + loadMoreItems, + serverLoad + } = this.props; + return serverLoad ? /* @__PURE__ */ external_react_default().createElement( + components_InfiniteScroller, + { + refChild: this.itemsListRef, + hasMore: itemsNrPages > itemsPageNumber, + loadMore: loadMoreItems, + pageNumber: itemsPageNumber + }, + this.renderListItems() + ) : this.renderListItems(); + } + searchOnChange(value) { + const { onCustomSearch } = this.props; + if (!onCustomSearch) { + this.setState({ + searchValue: value + }); + } else { + onCustomSearch(value); + } + } + itemChanged(item) { + const { items, onChange } = this.props; + let cloneItems = (0,external_immutable_namespaceObject.fromJS)(items).toJS(); + cloneItems = cloneItems.filter((clonedItem) => item.id !== clonedItem.id); + onChange(cloneItems, item); + } + renderListItems() { + const { + customSearch, + items, + panelType, + serverLoad + } = this.props; + const { searchValue } = this.state; + return /* @__PURE__ */ external_react_default().createElement( + "ul", + { + className: `tyk-multiselect__list${!serverLoad ? " tyk-multiselect__list--scroll" : ""}`, + ref: this.itemsListRef + }, + items.map((item) => /* @__PURE__ */ external_react_default().createElement( + js_MultiselectItem, + { + itemType: panelType, + key: this.getItemIndex(), + onChange: this.itemChanged, + searchValue: customSearch ? "" : searchValue, + item + } + )) + ); + } + render() { + const { + inputPlaceholder, + noItemsMessage, + items + } = this.props; + const { searchValue } = this.state; + return /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-multiselect__panel" }, /* @__PURE__ */ external_react_default().createElement( + Input, + { + inputgroupaddonleft: /* @__PURE__ */ external_react_default().createElement(components_Icon, { type: "search" }), + name: "search", + onChange: this.searchOnChange, + placeholder: inputPlaceholder, + value: searchValue + } + ), items.length ? this.getItemsList() : /* @__PURE__ */ external_react_default().createElement( + components_Message, + { + theme: "info" + }, + noItemsMessage + )); + } +} +MultiselectPanel_publicField(MultiselectPanel, "propTypes", { + customSearch: (external_prop_types_default()).bool, + onCustomSearch: (external_prop_types_default()).func, + panelType: (external_prop_types_default()).string, + onChange: (external_prop_types_default()).func, + items: external_prop_types_default().instanceOf(Array), + itemsPageNumber: (external_prop_types_default()).number, + itemsNrPages: (external_prop_types_default()).number, + inputPlaceholder: (external_prop_types_default()).string, + loadMoreItems: (external_prop_types_default()).func, + noItemsMessage: (external_prop_types_default()).string, + serverLoad: (external_prop_types_default()).bool +}); +/* harmony default export */ const js_MultiselectPanel = (MultiselectPanel); + +;// CONCATENATED MODULE: ./src/form/components/Multiselect/index.js +var Multiselect_defProp = Object.defineProperty; +var Multiselect_defNormalProp = (obj, key, value) => key in obj ? Multiselect_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var Multiselect_publicField = (obj, key, value) => { + Multiselect_defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); + return value; +}; + + + + + +const diffObjects = (value, items) => { + const newItems = items.filter((item) => { + const isCommon = value.filter((selectedItem) => selectedItem.id === item.id).length > 0; + return !isCommon; + }); + return newItems; +}; +class Multiselect extends external_react_namespaceObject.Component { + constructor(props) { + super(props); + Multiselect_publicField(this, "state", { + opened: {} + }); + this.valueChange = this.valueChange.bind(this); + this.itemsChange = this.itemsChange.bind(this); + } + onGetItemDetails(item) { + const { getItemDetails } = this.props; + this.setState((prevState) => { + const tempState = Object.assign({}, prevState); + tempState.opened[item.id] = !tempState.opened[item.id]; + return tempState; + }, () => { + if (getItemDetails) { + getItemDetails(item); + } + }); + } + getMultiselectError() { + const { error } = this.props; + return error && error !== "true" && error !== "false" ? /* @__PURE__ */ external_react_default().createElement( + "p", + { + className: "tyk-form-control__error-message" + }, + error + ) : null; + } + getCssClasses() { + const { error, wrapperClassName = "" } = this.props; + const cssClasses = [wrapperClassName, "tyk-multiselect"]; + if (error) { + cssClasses.push("has-error"); + } + return cssClasses.join(" "); + } + itemsChange(allItems, item) { + const { value, onChange } = this.props; + const valueClone = (0,external_immutable_namespaceObject.fromJS)(value).toJS(); + valueClone.unshift(item); + onChange(valueClone, item, "added"); + } + valueChange(value, item) { + const { items, onChange } = this.props; + const allItemsClone = (0,external_immutable_namespaceObject.fromJS)(items).toJS(); + allItemsClone.unshift(item); + onChange(value, item, "removed"); + } + render() { + const { + customSearch, + entityNamePlural, + disabled, + itemDisplayTemplate, + detailsDisplayTemplate, + fieldsToSearchOn, + items, + itemsPageNumber, + itemsNrPages, + loadMoreItems, + maxSelections, + note, + value + } = this.props; + const { opened } = this.state; + return /* @__PURE__ */ external_react_default().createElement(external_react_namespaceObject.Fragment, null, /* @__PURE__ */ external_react_default().createElement("div", { className: this.getCssClasses() }, /* @__PURE__ */ external_react_default().createElement( + js_MultiselectContext.Provider, + { + value: { + disabled, + parentContext: this, + itemDisplayTemplate, + detailsDisplayTemplate, + fieldsToSearchOn, + maxSelections, + nrSelectedItems: value.length, + onGetItemDetails: this.onGetItemDetails, + opened + } + }, + /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-multiselect__header" }, /* @__PURE__ */ external_react_default().createElement("div", null, value.length, " ", "Selected", " ", entityNamePlural), /* @__PURE__ */ external_react_default().createElement("div", null, "Select from existing", entityNamePlural)), + /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-multiselect__panel-wrapper" }, /* @__PURE__ */ external_react_default().createElement( + js_MultiselectPanel, + { + inputPlaceholder: `Search through selected ${entityNamePlural}`, + noItemsMessage: `Selected ${entityNamePlural} will show here`, + items: value, + onChange: this.valueChange, + panelType: "selected" + } + ), /* @__PURE__ */ external_react_default().createElement( + js_MultiselectPanel, + { + inputPlaceholder: `Search existing ${entityNamePlural}`, + noItemsMessage: `No ${entityNamePlural} to display`, + entityNamePlural, + customSearch: !!customSearch, + onCustomSearch: customSearch, + items: diffObjects(value, items), + onChange: this.itemsChange, + serverLoad: !!loadMoreItems, + loadMoreItems, + itemsPageNumber, + itemsNrPages, + panelType: "normal" + } + )) + )), /* @__PURE__ */ external_react_default().createElement("div", null, note ? /* @__PURE__ */ external_react_default().createElement("p", { className: "tyk-form-control__help-block" }, note) : null), this.getMultiselectError()); + } +} +Multiselect_publicField(Multiselect, "propTypes", { + customSearch: (external_prop_types_default()).func, + disabled: (external_prop_types_default()).bool, + error: (external_prop_types_default()).string, + entityNamePlural: (external_prop_types_default()).string, + items: external_prop_types_default().instanceOf(Array), + itemDisplayTemplate: (external_prop_types_default()).func, + detailsDisplayTemplate: (external_prop_types_default()).func, + fieldsToSearchOn: external_prop_types_default().instanceOf(Array), + onChange: (external_prop_types_default()).func, + getItemDetails: (external_prop_types_default()).func, + itemsPageNumber: (external_prop_types_default()).number, + itemsNrPages: (external_prop_types_default()).number, + loadMoreItems: (external_prop_types_default()).func, + note: (external_prop_types_default()).string, + maxSelections: (external_prop_types_default()).number, + value: external_prop_types_default().instanceOf(Array), + wrapperClassName: (external_prop_types_default()).string +}); +/* harmony default export */ const components_Multiselect = (Multiselect); + +;// CONCATENATED MODULE: ./src/form/components/Radio/index.js +var Radio_defProp = Object.defineProperty; +var Radio_defProps = Object.defineProperties; +var Radio_getOwnPropDescs = Object.getOwnPropertyDescriptors; +var Radio_getOwnPropSymbols = Object.getOwnPropertySymbols; +var Radio_hasOwnProp = Object.prototype.hasOwnProperty; +var Radio_propIsEnum = Object.prototype.propertyIsEnumerable; +var Radio_defNormalProp = (obj, key, value) => key in obj ? Radio_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var Radio_spreadValues = (a, b) => { + for (var prop in b || (b = {})) + if (Radio_hasOwnProp.call(b, prop)) + Radio_defNormalProp(a, prop, b[prop]); + if (Radio_getOwnPropSymbols) + for (var prop of Radio_getOwnPropSymbols(b)) { + if (Radio_propIsEnum.call(b, prop)) + Radio_defNormalProp(a, prop, b[prop]); + } + return a; +}; +var Radio_spreadProps = (a, b) => Radio_defProps(a, Radio_getOwnPropDescs(b)); +var Radio_objRest = (source, exclude) => { + var target = {}; + for (var prop in source) + if (Radio_hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) + target[prop] = source[prop]; + if (source != null && Radio_getOwnPropSymbols) + for (var prop of Radio_getOwnPropSymbols(source)) { + if (exclude.indexOf(prop) < 0 && Radio_propIsEnum.call(source, prop)) + target[prop] = source[prop]; + } + return target; +}; +var Radio_publicField = (obj, key, value) => { + Radio_defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); + return value; +}; + + +class Radio extends external_react_namespaceObject.Component { + getCssClasses() { + const { + inline, + nospace, + theme = "", + disabled, + readOnly, + wrapperClassName = "" + } = this.props; + const cssClasses = [wrapperClassName]; + if (inline) { + cssClasses.push("tyk-radio--inline"); + } else { + cssClasses.push("tyk-radio"); + } + if (nospace) { + cssClasses.push("no-margin"); + } + if (theme.trim()) { + cssClasses.push(...theme.split(" ").map((t) => `tyk-radio--theme-${t}`)); + } + if (readOnly || disabled) { + cssClasses.push("tyk-radio--is-disabled"); + } + return cssClasses.join(" "); + } + render() { + const _a = this.props, { + input, + label, + note, + disabled, + readOnly + } = _a, rest = Radio_objRest(_a, [ + "input", + "label", + "note", + "disabled", + "readOnly" + ]); + return /* @__PURE__ */ external_react_default().createElement( + "div", + { + className: this.getCssClasses() + }, + /* @__PURE__ */ external_react_default().createElement("label", null, /* @__PURE__ */ external_react_default().createElement( + "input", + Radio_spreadProps(Radio_spreadValues(Radio_spreadValues({}, input), rest), { + type: "radio", + disabled: readOnly || disabled + }) + ), label), + /* @__PURE__ */ external_react_default().createElement("p", { className: "tyk-form-control__help-block" }, note) + ); + } +} +Radio_publicField(Radio, "propTypes", { + /** Used to disable the element */ + disabled: (external_prop_types_default()).bool, + /** Readonly prop behaves the same as disabled on radio elements */ + readOnly: (external_prop_types_default()).bool, + /** Align radio with in same line with other elements */ + inline: (external_prop_types_default()).bool, + /** Set a theme for radio */ + theme: (external_prop_types_default()).string, + input: external_prop_types_default().instanceOf(Object), + /** Adds label to the radio input */ + label: external_prop_types_default().oneOfType([ + external_prop_types_default().arrayOf((external_prop_types_default()).node), + (external_prop_types_default()).node, + (external_prop_types_default()).element, + (external_prop_types_default()).func, + (external_prop_types_default()).string + ]), + /** Set name for the radio input */ + name: (external_prop_types_default()).string, + /** If set to true removes margin by adding `no-margin` class */ + nospace: (external_prop_types_default()).bool, + /** Set initial value for the radio input */ + value: (external_prop_types_default()).string, + /** Add note at the bottom of the radio input */ + note: external_prop_types_default().oneOfType([ + (external_prop_types_default()).string, + (external_prop_types_default()).element, + (external_prop_types_default()).node + ]), + wrapperClassName: (external_prop_types_default()).string +}); + +;// CONCATENATED MODULE: ./src/form/components/Select/index.js +var Select_defProp = Object.defineProperty; +var Select_defProps = Object.defineProperties; +var Select_getOwnPropDescs = Object.getOwnPropertyDescriptors; +var Select_getOwnPropSymbols = Object.getOwnPropertySymbols; +var Select_hasOwnProp = Object.prototype.hasOwnProperty; +var Select_propIsEnum = Object.prototype.propertyIsEnumerable; +var Select_defNormalProp = (obj, key, value) => key in obj ? Select_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var Select_spreadValues = (a, b) => { + for (var prop in b || (b = {})) + if (Select_hasOwnProp.call(b, prop)) + Select_defNormalProp(a, prop, b[prop]); + if (Select_getOwnPropSymbols) + for (var prop of Select_getOwnPropSymbols(b)) { + if (Select_propIsEnum.call(b, prop)) + Select_defNormalProp(a, prop, b[prop]); + } + return a; +}; +var Select_spreadProps = (a, b) => Select_defProps(a, Select_getOwnPropDescs(b)); +var Select_objRest = (source, exclude) => { + var target = {}; + for (var prop in source) + if (Select_hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) + target[prop] = source[prop]; + if (source != null && Select_getOwnPropSymbols) + for (var prop of Select_getOwnPropSymbols(source)) { + if (exclude.indexOf(prop) < 0 && Select_propIsEnum.call(source, prop)) + target[prop] = source[prop]; + } + return target; +}; +var Select_publicField = (obj, key, value) => { + Select_defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); + return value; +}; + + +class Select extends external_react_namespaceObject.Component { + constructor(props) { + super(props); + const { + value + } = this.props; + this.state = { + initValue: value, + stateValue: value + }; + this.handleOnChange = this.handleOnChange.bind(this); + this.handleOnBlur = this.handleOnBlur.bind(this); + } + componentDidUpdate(prevProps) { + const { + isfield, + value, + onChange + } = this.props; + if (!isfield && prevProps.value !== value) { + this.setState({ + stateValue: value + }, () => { + if (onChange) { + onChange(value); + } + }); + } + } + getSelectComponent() { + const _a = this.props, { + isfield, + options, + onChange, + onBlur, + value + } = _a, rest = Select_objRest(_a, [ + "isfield", + "options", + "onChange", + "onBlur", + "value" + ]); + const { + stateValue + } = this.state; + let selectValue = ""; + if (isfield && value) { + selectValue = value; + } else if (stateValue) { + selectValue = stateValue; + } + return /* @__PURE__ */ external_react_default().createElement( + "select", + Select_spreadProps(Select_spreadValues({ + className: "tyk-form-control tyk-select" + }, rest), { + onChange: this.handleOnChange, + onBlur: this.handleOnBlur, + value: selectValue ? selectValue.id : "" + }), + options.map((option) => /* @__PURE__ */ external_react_default().createElement("option", { key: option.id, value: option.id }, option.name)) + ); + } + getSelectError() { + const { error } = this.props; + return error && error !== "true" && error !== "false" ? /* @__PURE__ */ external_react_default().createElement( + "p", + { + className: "tyk-form-control__error-message" + }, + error + ) : null; + } + getCssClasses() { + const { + error, + labelwidth, + theme, + wrapperClassName = "" + } = this.props; + const cssClasses = [wrapperClassName, "tyk-form-group"]; + const themes = theme ? theme.split(" ") : []; + if (themes.length) { + themes.forEach((iTheme) => { + cssClasses.push(`tyk-form-group--${iTheme}`); + }); + } + if (labelwidth) { + cssClasses.push("tyk-form-group--label-has-width"); + } + if (error) { + cssClasses.push("has-error"); + } + return cssClasses.join(" "); + } + getLabelStyles() { + const { labelwidth } = this.props; + const styles = {}; + if (labelwidth) { + styles.flexBasis = labelwidth; + } + return styles; + } + getNonLabelWidth() { + const { labelwidth } = this.props; + const styles = {}; + if (labelwidth) { + styles.flexBasis = `calc(100% - ${labelwidth} - 20px)`; + } + return styles; + } + handleOnBlur() { + const { value, onBlur } = this.props; + if (onBlur) { + onBlur(value); + } + } + handleOnChange(e) { + const { + onChange, + isfield, + options + } = this.props; + let selectedValue = null; + selectedValue = options.filter((option) => option.id === e.target.value); + [selectedValue] = selectedValue; + if (!isfield) { + this.setState({ + stateValue: selectedValue + }, () => { + onChange(selectedValue.id ? selectedValue : null); + }); + } else { + onChange(selectedValue.id ? selectedValue : null); + } + } + reset() { + const { initValue } = this.state; + this.setState({ + stateValue: initValue + }); + } + render() { + const { + label, + id, + note, + readOnly, + value + } = this.props; + return /* @__PURE__ */ external_react_default().createElement(external_react_namespaceObject.Fragment, null, /* @__PURE__ */ external_react_default().createElement("div", { className: this.getCssClasses() }, label ? /* @__PURE__ */ external_react_default().createElement("label", { htmlFor: id, style: this.getLabelStyles() }, label) : null, !readOnly && /* @__PURE__ */ external_react_default().createElement( + "div", + { + className: "tyk-form-control__wrapper", + style: this.getNonLabelWidth() + }, + this.getSelectComponent(), + note ? /* @__PURE__ */ external_react_default().createElement("p", { className: "tyk-form-control__help-block" }, note) : null, + this.getSelectError() + ), readOnly && /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-form-control--readonly" }, value || "-"))); + } +} +Select_publicField(Select, "propTypes", { + disabled: (external_prop_types_default()).bool, + readOnly: (external_prop_types_default()).bool, + id: (external_prop_types_default()).string, + isfield: (external_prop_types_default()).bool, + error: external_prop_types_default().oneOfType([ + (external_prop_types_default()).string, + (external_prop_types_default()).bool + ]), + options: external_prop_types_default().instanceOf(Array), + label: external_prop_types_default().oneOfType([ + external_prop_types_default().arrayOf((external_prop_types_default()).node), + (external_prop_types_default()).node, + (external_prop_types_default()).element, + (external_prop_types_default()).func, + (external_prop_types_default()).string + ]), + labelwidth: (external_prop_types_default()).string, + name: (external_prop_types_default()).string, + note: (external_prop_types_default()).string, + onBlur: (external_prop_types_default()).func, + onChange: (external_prop_types_default()).func, + placeholder: (external_prop_types_default()).string, + theme: (external_prop_types_default()).string, + value: external_prop_types_default().oneOfType([ + (external_prop_types_default()).string, + (external_prop_types_default()).object + ]), + wrapperClassName: (external_prop_types_default()).string +}); + +;// CONCATENATED MODULE: ./src/form/components/SelectableList/index.js +var SelectableList_defProp = Object.defineProperty; +var SelectableList_defProps = Object.defineProperties; +var SelectableList_getOwnPropDescs = Object.getOwnPropertyDescriptors; +var SelectableList_getOwnPropSymbols = Object.getOwnPropertySymbols; +var SelectableList_hasOwnProp = Object.prototype.hasOwnProperty; +var SelectableList_propIsEnum = Object.prototype.propertyIsEnumerable; +var SelectableList_defNormalProp = (obj, key, value) => key in obj ? SelectableList_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var SelectableList_spreadValues = (a, b) => { + for (var prop in b || (b = {})) + if (SelectableList_hasOwnProp.call(b, prop)) + SelectableList_defNormalProp(a, prop, b[prop]); + if (SelectableList_getOwnPropSymbols) + for (var prop of SelectableList_getOwnPropSymbols(b)) { + if (SelectableList_propIsEnum.call(b, prop)) + SelectableList_defNormalProp(a, prop, b[prop]); + } + return a; +}; +var SelectableList_spreadProps = (a, b) => SelectableList_defProps(a, SelectableList_getOwnPropDescs(b)); + + + + + +function SelectableList(props) { + const { + checkboxalticon, + items, + itemTemplate, + value, + noItemsMessage = "No items in the list", + onChange, + theme, + primaryKey, + wrapperClassName = "" + } = props; + const handleOnSelect = (event) => { + const newSelectedItems = structuredClone(value); + const elemPosition = newSelectedItems.findIndex( + (id) => JSON.stringify(id) === JSON.stringify( + Array.isArray(id) ? event.target.value.split(",") : event.target.value + ) + ); + if (event.target.checked && elemPosition === -1) { + const tempValue = event.target.value.split(","); + const finalValue = tempValue.length > 1 ? tempValue : event.target.value; + newSelectedItems.push(finalValue); + } else if (!event.target.checked && elemPosition > -1) { + newSelectedItems.splice(elemPosition, 1); + } + if (onChange) { + onChange(newSelectedItems); + } + }; + const getListItemCssClassName = (isActive) => { + const cssClasses = []; + if (checkboxalticon) { + cssClasses.push("tyk-selectable-list__item--with-icon"); + } + if (isActive) { + cssClasses.push("tyk-selectable-list__item--active"); + } + return cssClasses.join(" "); + }; + const isChecked = (inputValue, itemValue) => Boolean( + inputValue.find((tvalue) => JSON.stringify(itemValue) === JSON.stringify(tvalue)) + ); + return /* @__PURE__ */ external_react_default().createElement(components_List, SelectableList_spreadProps(SelectableList_spreadValues({}, props), { theme: theme || "default", className: `tyk-selectable-list ${wrapperClassName}` }), !items.length ? /* @__PURE__ */ external_react_default().createElement("li", { className: "tyk-selectable-list__no-items-message" }, /* @__PURE__ */ external_react_default().createElement(components_Message, { theme: "info" }, noItemsMessage)) : items.map((item, index) => /* @__PURE__ */ external_react_default().createElement( + components_List.Item, + { + key: index, + className: getListItemCssClassName(value.includes(item[primaryKey])) + }, + /* @__PURE__ */ external_react_default().createElement("label", null, /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-selectable-list__item" }, itemTemplate ? itemTemplate(item) : item.name), /* @__PURE__ */ external_react_default().createElement( + "input", + { + type: "checkbox", + checked: isChecked(value, item[primaryKey]), + onChange: handleOnSelect.bind(item), + value: item[primaryKey] + } + ), checkboxalticon ? /* @__PURE__ */ external_react_default().createElement(components_Icon, { type: checkboxalticon }) : null) + ))); +} +SelectableList.propTypes = { + items: external_prop_types_default().instanceOf(Array), + itemTemplate: external_prop_types_default().oneOfType([ + (external_prop_types_default()).node, + (external_prop_types_default()).element, + (external_prop_types_default()).string, + (external_prop_types_default()).func + ]), + value: external_prop_types_default().instanceOf(Array), + onChange: (external_prop_types_default()).func, + primaryKey: (external_prop_types_default()).string, + noItemsMessage: (external_prop_types_default()).string, + checkboxalticon: external_prop_types_default().oneOfType([ + (external_prop_types_default()).node, + (external_prop_types_default()).element, + (external_prop_types_default()).string + ]), + theme: (external_prop_types_default()).string, + wrapperClassName: (external_prop_types_default()).string +}; +SelectableList.defaultProps = { + items: [], + primaryKey: "id", + value: [] +}; +/* harmony default export */ const components_SelectableList = (SelectableList); + +;// CONCATENATED MODULE: ./src/form/components/Textarea/index.js +var Textarea_defProp = Object.defineProperty; +var Textarea_getOwnPropSymbols = Object.getOwnPropertySymbols; +var Textarea_hasOwnProp = Object.prototype.hasOwnProperty; +var Textarea_propIsEnum = Object.prototype.propertyIsEnumerable; +var Textarea_defNormalProp = (obj, key, value) => key in obj ? Textarea_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var Textarea_spreadValues = (a, b) => { + for (var prop in b || (b = {})) + if (Textarea_hasOwnProp.call(b, prop)) + Textarea_defNormalProp(a, prop, b[prop]); + if (Textarea_getOwnPropSymbols) + for (var prop of Textarea_getOwnPropSymbols(b)) { + if (Textarea_propIsEnum.call(b, prop)) + Textarea_defNormalProp(a, prop, b[prop]); + } + return a; +}; +var Textarea_objRest = (source, exclude) => { + var target = {}; + for (var prop in source) + if (Textarea_hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) + target[prop] = source[prop]; + if (source != null && Textarea_getOwnPropSymbols) + for (var prop of Textarea_getOwnPropSymbols(source)) { + if (exclude.indexOf(prop) < 0 && Textarea_propIsEnum.call(source, prop)) + target[prop] = source[prop]; + } + return target; +}; + + +function Textarea(_a) { + var _b = _a, { + id, + input, + label, + note, + error, + theme, + labelwidth, + value, + readOnly, + wrapperClassName + } = _b, rest = Textarea_objRest(_b, [ + "id", + "input", + "label", + "note", + "error", + "theme", + "labelwidth", + "value", + "readOnly", + "wrapperClassName" + ]); + const classes = [ + "tyk-form-group", + wrapperClassName, + ...theme ? theme.split(" ").map((t) => `tyk-form-group--${t}`) : [], + labelwidth && "tyk-form-group--label-has-width", + error && "has-error" + ].filter(Boolean).join(" "); + const getLabelStyles = () => { + if (labelwidth) + return { flexBasis: labelwidth }; + return {}; + }; + const getNonLabelWidth = () => { + if (labelwidth) + return { flexBasis: `calc(100% - ${labelwidth} - 20px)` }; + return {}; + }; + function getTextareaError() { + return error && error !== "true" && error !== "false" ? /* @__PURE__ */ external_react_default().createElement("p", { className: "tyk-form-control__error-message" }, error) : null; + } + return /* @__PURE__ */ external_react_default().createElement("div", { className: classes }, label ? /* @__PURE__ */ external_react_default().createElement("label", { htmlFor: id, style: getLabelStyles() }, label) : null, !readOnly && /* @__PURE__ */ external_react_default().createElement( + "div", + { + className: "tyk-form-control__wrapper", + style: getNonLabelWidth() + }, + /* @__PURE__ */ external_react_default().createElement( + "textarea", + Textarea_spreadValues(Textarea_spreadValues({ + className: "tyk-form-control" + }, rest), input), + value + ), + note ? /* @__PURE__ */ external_react_default().createElement("p", { className: "tyk-form-control__help-block" }, note) : null, + getTextareaError() + ), readOnly && /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-form-control--readonly" }, value || "-")); +} +Textarea.propTypes = { + /** Disable the component */ + disabled: (external_prop_types_default()).bool, + /** Displays only the text value of the component, or "-" if no value is set */ + readOnly: (external_prop_types_default()).bool, + input: external_prop_types_default().instanceOf(Object), + /** Set an error message for the component and the component is rendered in the error state */ + error: (external_prop_types_default()).string, + /** Adds a label to the component */ + label: external_prop_types_default().oneOfType([ + external_prop_types_default().arrayOf((external_prop_types_default()).node), + (external_prop_types_default()).node, + (external_prop_types_default()).element, + (external_prop_types_default()).func, + (external_prop_types_default()).string + ]), + /** Sets the width of the label */ + labelwidth: (external_prop_types_default()).string, + /** Set a name for the component */ + name: (external_prop_types_default()).string, + /** Adds additional information under the component */ + note: (external_prop_types_default()).string, + /** Callback function executed on value change */ + onChange: (external_prop_types_default()).func, + id: (external_prop_types_default()).string, + /** Set a theme for the component */ + theme: (external_prop_types_default()).string, + /** Set the value of the component */ + value: (external_prop_types_default()).string, + /** CSS classes added to the wrapper of the component */ + wrapperClassName: (external_prop_types_default()).string +}; +/* harmony default export */ const components_Textarea = (Textarea); + +;// CONCATENATED MODULE: ./src/form/components/Toggle/js/ToggleContext.js + +const ToggleContext = (0,external_react_namespaceObject.createContext)(); +/* harmony default export */ const js_ToggleContext = (ToggleContext); + +;// CONCATENATED MODULE: ./src/form/components/Toggle/js/ToggleItem.js + + +class ToggleItem extends external_react_namespaceObject.Component { + static getNotchCssClasses(context) { + return ["tyk-toggle__item-notch", `tyk-toggle__item-notch--${context.type}`].join(" "); + } + constructor(props) { + super(props); + this.itemRef = (0,external_react_namespaceObject.createRef)(); + } + componentDidMount() { + const { context, value } = this.props; + if (context.value === value) { + context.saveSelectedRef(this.itemRef); + } + } + componentDidUpdate(prevProps) { + const { context, value } = this.props; + if (prevProps.context.value !== context.value && context.value === value) { + context.saveSelectedRef(this.itemRef); + } + } + onChange(event) { + const { context, value } = this.props; + const { disabled, readOnly } = context; + if (disabled || readOnly) { + return; + } + context.onItemSelected(context.type === "single" ? !context.value : value, event); + } + render() { + const { + context, + label, + name, + value + } = this.props; + return /* @__PURE__ */ external_react_default().createElement("li", { className: `tyk-toggle__item ${context.value && (context.type === "single" || context.value === value) ? "tyk-toggle__item--active" : ""}`, ref: this.itemRef }, /* @__PURE__ */ external_react_default().createElement("label", null, /* @__PURE__ */ external_react_default().createElement( + "input", + { + type: context.type === "single" ? "checkbox" : "radio", + name, + checked: context.value === value, + onChange: this.onChange.bind(this), + value + } + ), label ? /* @__PURE__ */ external_react_default().createElement("span", null, label) : /* @__PURE__ */ external_react_default().createElement("span", { className: "empty-toggle" }, " "), context.type === "single" ? /* @__PURE__ */ external_react_default().createElement("span", { className: ToggleItem.getNotchCssClasses(context) }) : null)); + } +} +ToggleItem.propTypes = { + context: external_prop_types_default().instanceOf(Object), + label: external_prop_types_default().oneOfType([ + external_prop_types_default().arrayOf((external_prop_types_default()).node), + (external_prop_types_default()).node, + (external_prop_types_default()).element, + (external_prop_types_default()).func, + (external_prop_types_default()).string + ]), + name: (external_prop_types_default()).string, + value: (external_prop_types_default()).string +}; +/* harmony default export */ const js_ToggleItem = (ToggleItem); + +;// CONCATENATED MODULE: ./src/form/components/Toggle/js/ToggleItemWrapper.js +var ToggleItemWrapper_defProp = Object.defineProperty; +var ToggleItemWrapper_defProps = Object.defineProperties; +var ToggleItemWrapper_getOwnPropDescs = Object.getOwnPropertyDescriptors; +var ToggleItemWrapper_getOwnPropSymbols = Object.getOwnPropertySymbols; +var ToggleItemWrapper_hasOwnProp = Object.prototype.hasOwnProperty; +var ToggleItemWrapper_propIsEnum = Object.prototype.propertyIsEnumerable; +var ToggleItemWrapper_defNormalProp = (obj, key, value) => key in obj ? ToggleItemWrapper_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var ToggleItemWrapper_spreadValues = (a, b) => { + for (var prop in b || (b = {})) + if (ToggleItemWrapper_hasOwnProp.call(b, prop)) + ToggleItemWrapper_defNormalProp(a, prop, b[prop]); + if (ToggleItemWrapper_getOwnPropSymbols) + for (var prop of ToggleItemWrapper_getOwnPropSymbols(b)) { + if (ToggleItemWrapper_propIsEnum.call(b, prop)) + ToggleItemWrapper_defNormalProp(a, prop, b[prop]); + } + return a; +}; +var ToggleItemWrapper_spreadProps = (a, b) => ToggleItemWrapper_defProps(a, ToggleItemWrapper_getOwnPropDescs(b)); + + + + +const ToggleItemWrapper = external_react_default().forwardRef((props, ref) => /* @__PURE__ */ external_react_default().createElement(js_ToggleContext.Consumer, null, (context) => /* @__PURE__ */ external_react_default().createElement(js_ToggleItem, ToggleItemWrapper_spreadProps(ToggleItemWrapper_spreadValues({}, props), { context, ref }), props.children))); +ToggleItemWrapper.propTypes = { + children: external_prop_types_default().oneOfType([ + external_prop_types_default().arrayOf((external_prop_types_default()).node), + (external_prop_types_default()).node, + (external_prop_types_default()).element, + (external_prop_types_default()).string + ]) +}; +/* harmony default export */ const js_ToggleItemWrapper = (ToggleItemWrapper); + +;// CONCATENATED MODULE: ./src/form/components/Toggle/index.js + + + + +function Toggle({ + className, + disabled, + readOnly, + size, + theme, + direction, + onDark, + wrapperClassName = "", + onChange, + labelwidth, + label, + separated, + children, + type, + value, + error +}) { + const [selectedRef, setSelectedRef] = (0,external_react_namespaceObject.useState)(null); + const notchRef = (0,external_react_namespaceObject.useRef)(); + const toggleRef = (0,external_react_namespaceObject.useRef)(); + const classes = [ + wrapperClassName, + className, + "tyk-toggle", + `tyk-toggle--disabled-${readOnly || disabled}`, + `tyk-toggle--${size || "md"}`, + `tyk-toggle--${theme}`, + `tyk-toggle--${direction}`, + onDark && "tyk-toggle--on-dark" + ].filter(Boolean).join(" "); + const onItemSelected = (0,external_react_namespaceObject.useCallback)((itemValue, event) => { + if (!onChange) + return; + onChange(itemValue, event); + }, [onChange]); + const getLabelStyles = (0,external_react_namespaceObject.useCallback)(() => { + if (labelwidth) + return { flexBasis: labelwidth }; + return {}; + }, [labelwidth]); + const positionNotch = (0,external_react_namespaceObject.useCallback)(() => { + if (!selectedRef || separated) { + return {}; + } + const selectedWidth = selectedRef.current.offsetWidth; + const selectedOffset = selectedRef.current.getBoundingClientRect().left; + const toggleOffset = toggleRef.current.getBoundingClientRect().left; + const left = selectedOffset - toggleOffset; + return { + left: `${left + 4}px`, + width: `${selectedWidth - 8}px` + }; + }, [selectedRef, separated]); + const contextValue = (0,external_react_namespaceObject.useMemo)(() => ({ + disabled, + readOnly, + onItemSelected, + saveSelectedRef: setSelectedRef, + separated, + type, + value + }), [disabled, readOnly, onItemSelected, separated, type, value]); + return /* @__PURE__ */ external_react_default().createElement((external_react_default()).Fragment, null, /* @__PURE__ */ external_react_default().createElement("div", { className: classes, ref: toggleRef }, /* @__PURE__ */ external_react_default().createElement( + js_ToggleContext.Provider, + { + value: contextValue + }, + label ? /* @__PURE__ */ external_react_default().createElement("label", { className: "tyk-toggle__label", style: getLabelStyles() }, label) : null, + /* @__PURE__ */ external_react_default().createElement("ul", { className: `tyk-toggle__list tyk-toggle__list--${type} ${error && "tyk-toggle__list--has-error"} tyk-toggle__list--${separated ? "separated" : "not-separated"}` }, children, type === "multiple" && !separated ? /* @__PURE__ */ external_react_default().createElement("li", { className: "tyk-toggle__notch", ref: notchRef, style: positionNotch() }) : null) + )), error && /* @__PURE__ */ external_react_default().createElement("p", { className: "tyk-form-control__error-message" }, error)); +} +Toggle.propTypes = { + children: external_prop_types_default().oneOfType([ + external_prop_types_default().arrayOf((external_prop_types_default()).node), + (external_prop_types_default()).node, + (external_prop_types_default()).element, + (external_prop_types_default()).string + ]), + className: (external_prop_types_default()).string, + disabled: (external_prop_types_default()).bool, + readOnly: (external_prop_types_default()).bool, + error: (external_prop_types_default()).string, + onChange: (external_prop_types_default()).func, + label: external_prop_types_default().oneOfType([ + external_prop_types_default().arrayOf((external_prop_types_default()).node), + (external_prop_types_default()).node, + (external_prop_types_default()).element, + (external_prop_types_default()).func, + (external_prop_types_default()).string + ]), + labelwidth: (external_prop_types_default()).string, + theme: (external_prop_types_default()).string, + type: (external_prop_types_default()).string, + // single || multiple + size: (external_prop_types_default()).string, + separated: (external_prop_types_default()).bool, + direction: (external_prop_types_default()).string, + value: external_prop_types_default().oneOfType([ + (external_prop_types_default()).bool, + (external_prop_types_default()).string + ]), + onDark: (external_prop_types_default()).bool, + wrapperClassName: (external_prop_types_default()).string +}; +Toggle.defaultProps = { + separated: false, + theme: "primary", + type: "single", + direction: "row" +}; +Toggle.Item = js_ToggleItemWrapper; +/* harmony default export */ const components_Toggle = (Toggle); + +;// CONCATENATED MODULE: ./src/form/components/StringBuilder/js/service.js +const stringToTokenString = (value, options) => { + let tempStr = value; + options.forEach((option) => { + tempStr = tempStr.replaceAll(option.id, `__TOKEN__${option.id}__TOKEN__`); + }); + return tempStr; +}; +const setCursorPos = (ref, pos) => { + setTimeout(() => { + ref.current.setSelectionRange(pos, pos); + }, 20); +}; + +;// CONCATENATED MODULE: ./src/form/components/StringBuilder/js/string-input.js + + + +function StringInput({ + setShowOptions, + tokenValue, + disabled, + placeholder, + tokens, + dropdownTriggerKey, + setStringBuilderHeight, + stringBuilderHeight, + setTokenString, + tokenString, + showOptions, + options, + setTokenValue, + inputRef, + setInputInFocus, + invalidTokenRegex, + name, + contextMaxLength +}) { + const [isPasteEvent, setIsPasteEvent] = (0,external_react_namespaceObject.useState)(false); + (0,external_react_namespaceObject.useEffect)(() => { + if (tokenValue) { + const tokenLen = tokenValue.length > 50 ? tokenValue.length / 5 : 0; + setStringBuilderHeight(inputRef.current.scrollHeight + tokenLen); + } + }, []); + const handleDelete = (e) => { + const { selectionEnd } = e.target; + if (selectionEnd === tokenValue.length) { + return; + } + const stringBeforeCursor = tokenValue.substring(0, selectionEnd); + const stringAfterCursor = tokenValue.slice(selectionEnd); + const tokenStringForStringAfterCursor = stringToTokenString( + stringAfterCursor, + options + ); + if (tokenStringForStringAfterCursor.startsWith("__TOKEN__")) { + const splitTokens = tokenStringForStringAfterCursor.split(/__TOKEN__(.*?)__TOKEN__/g).filter((t) => t !== ""); + const firstToken = splitTokens[0]; + const newTokenValue2 = `${stringBeforeCursor}${stringAfterCursor.substr(firstToken.length)}`; + const newTokenizedString2 = stringToTokenString(newTokenValue2, options); + setTokenString(newTokenizedString2); + setCursorPos(inputRef, selectionEnd); + return; + } + const newTokenValue = `${stringBeforeCursor}${stringAfterCursor.substr(1)}`; + const newTokenizedString = stringToTokenString(newTokenValue, options); + setTokenString(newTokenizedString); + setCursorPos(inputRef, selectionEnd); + }; + const handleBackSpace = (e) => { + const { selectionEnd } = e.target; + if (selectionEnd === tokenValue.length) { + const lastToken = tokens[(tokens == null ? void 0 : tokens.length) - 2]; + const lastCharsInString = tokenValue.slice(-(lastToken == null ? void 0 : lastToken.length)); + if (lastToken === lastCharsInString) { + e.preventDefault(); + setTokenString( + tokenString.slice(0, -`__TOKEN__${lastCharsInString}__TOKEN__`.length) + ); + return; + } + if (tokenValue.endsWith(" ")) { + const invalidToken2 = tokenValue.match(invalidTokenRegex); + const newTokenValue2 = tokenValue.slice(0, -` ${invalidToken2[invalidToken2.length - 1]} `.length); + const newTokenStr = stringToTokenString(newTokenValue2, options); + setTokenString(newTokenStr); + return; + } + setTokenString(tokenString.slice(0, -1)); + return; + } + const stringBeforeCursor = tokenValue.substring(0, selectionEnd); + const stringAfterCursor = tokenValue.slice(selectionEnd); + const tokenStringForStringBeforeCursor = stringToTokenString(stringBeforeCursor, options); + if (tokenStringForStringBeforeCursor.endsWith("__TOKEN__")) { + e.preventDefault(); + const splitTokens = tokenStringForStringBeforeCursor.split(/__TOKEN__(.*?)__TOKEN__/g); + const lastToken = splitTokens[splitTokens.length - 2]; + const newTokenValue2 = `${stringBeforeCursor.slice(0, -lastToken.length)}${stringAfterCursor}`; + const newTokenizedString2 = stringToTokenString(newTokenValue2, options); + setTokenString(newTokenizedString2); + setCursorPos(inputRef, selectionEnd - lastToken.length); + return; + } + const invalidToken = stringBeforeCursor.match(invalidTokenRegex); + if ((invalidToken == null ? void 0 : invalidToken[0]) && invalidToken.length === 1) { + e.preventDefault(); + const newTokenValue2 = `${stringBeforeCursor.replaceAll(invalidTokenRegex, "").trim()}${stringAfterCursor}`; + const newTokenizedString2 = stringToTokenString(newTokenValue2, options); + setTokenString(newTokenizedString2); + setCursorPos(inputRef, selectionEnd - ` ${invalidToken[0]} `.length); + return; + } + const newTokenValue = `${stringBeforeCursor.slice( + 0, + -1 + )}${stringAfterCursor}`; + const newTokenizedString = stringToTokenString(newTokenValue, options); + setTokenString(newTokenizedString); + setCursorPos(inputRef, selectionEnd - 1); + }; + const addCharacterToTokenString = (text, selectionStart) => { + if (selectionStart - 1 === tokenValue.length) { + setTokenString(`${tokenString}${text}`); + return; + } + const newTokenValue = tokenValue.slice(0, selectionStart - 1) + text + tokenValue.slice(selectionStart - 1); + const newTokenizedString = stringToTokenString(newTokenValue, options); + setTokenString(newTokenizedString); + }; + const handleTextSelection = (e, selectedText, key) => { + const allowedKeys = ["Delete", "Backspace"]; + if (key.length > 1 && allowedKeys.indexOf(key) === -1) { + return; + } + const { selectionEnd, selectionStart } = e.target; + const substitute = key.length > 1 ? "" : key; + if (selectedText.length > 1) { + const newStr = tokenValue.substring(0, selectionStart) + substitute + tokenValue.substring(selectionEnd); + const newTokenStr = stringToTokenString(newStr, options); + setTokenString(newTokenStr); + setCursorPos(inputRef, substitute.length ? selectionStart + 1 : selectionStart); + } + }; + const handleKeyDown = (e) => { + const { key } = e; + const { selectionEnd, selectionStart, value } = e.target; + const selectedText = value.substring(selectionStart, selectionEnd); + if (key === dropdownTriggerKey && !showOptions) { + e.preventDefault(); + setShowOptions(true); + return; + } + if (key === "Enter") { + e.preventDefault(); + return; + } + if (key === "Backspace") { + e.preventDefault(); + handleBackSpace(e); + } + if (key === "Delete") { + e.preventDefault(); + handleDelete(e); + } + if (e.metaKey && key === "x") { + setTokenString(""); + } + if (selectedText) { + e.preventDefault(); + handleTextSelection(e, selectedText, key); + } + }; + const handleOnChange = (e) => { + const { target } = e; + const { selectionStart, value } = target; + if (showOptions) { + setShowOptions(false); + } + setTokenValue(value); + if (value && !isPasteEvent) { + const text = value.charAt(selectionStart - 1); + addCharacterToTokenString(text, selectionStart); + } + setIsPasteEvent(false); + }; + const handlePasteEvent = (e) => { + e.preventDefault(); + const { clipboardData } = e; + const { selectionStart, selectionEnd } = e.target; + setIsPasteEvent(true); + let pasteString = clipboardData.getData("text/plain"); + if (selectionStart !== selectionEnd) { + pasteString = tokenValue.slice(0, selectionStart) + pasteString + tokenValue.slice(selectionEnd, tokenValue.length); + const newTokenString2 = stringToTokenString(pasteString, options); + setTokenString(newTokenString2); + return; + } + const newTokenString = stringToTokenString(pasteString, options); + addCharacterToTokenString(newTokenString, selectionStart); + }; + const handleOnFocus = () => { + setInputInFocus(true); + }; + return /* @__PURE__ */ external_react_default().createElement( + "textarea", + { + spellCheck: false, + disabled, + className: "string-builder__input", + value: tokenValue, + onChange: (e) => handleOnChange(e), + onKeyDown: (e) => handleKeyDown(e), + placeholder, + name, + ref: inputRef, + style: { height: `${stringBuilderHeight}px` }, + maxLength: contextMaxLength, + onPaste: handlePasteEvent, + onFocus: handleOnFocus, + onBlur: () => setInputInFocus(false) + } + ); +} +StringInput.propTypes = { + setShowOptions: (external_prop_types_default()).func, + tokenValue: (external_prop_types_default()).string, + disabled: (external_prop_types_default()).bool, + placeholder: (external_prop_types_default()).string, + tokenString: (external_prop_types_default()).string, + stringBuilderHeight: (external_prop_types_default()).number, + dropdownTriggerKey: (external_prop_types_default()).string, + setStringBuilderHeight: (external_prop_types_default()).func, + setTokenString: (external_prop_types_default()).func, + setTokenValue: (external_prop_types_default()).func, + setInputInFocus: (external_prop_types_default()).func, + showOptions: (external_prop_types_default()).bool, + tokens: external_prop_types_default().arrayOf((external_prop_types_default()).string), + options: external_prop_types_default().arrayOf( + external_prop_types_default().shape({ + id: (external_prop_types_default()).string.isRequired, + name: (external_prop_types_default()).string.isRequired, + className: (external_prop_types_default()).string, + desc: (external_prop_types_default()).string + }) + ), + inputRef: external_prop_types_default().instanceOf(Object), + invalidTokenRegex: external_prop_types_default().instanceOf(RegExp), + name: (external_prop_types_default()).string, + contextMaxLength: (external_prop_types_default()).number +}; + + +;// CONCATENATED MODULE: ./src/form/components/StringBuilder/js/invalid-token.js + + + + +const InvalidToken = (props) => { + const { token, findInvalidTokenSubstitute } = props; + return /* @__PURE__ */ external_react_default().createElement( + "span", + { + role: "main", + onClick: () => findInvalidTokenSubstitute(token), + onKeyDown: () => { + } + }, + /* @__PURE__ */ external_react_default().createElement(components_Tooltip, { render: "invalid token detected", position: "top" }, /* @__PURE__ */ external_react_default().createElement("span", { className: "invalid_token" }, `${token}`, /* @__PURE__ */ external_react_default().createElement(components_Icon, { type: "exclamation-circle" }))) + ); +}; +InvalidToken.propTypes = { + token: (external_prop_types_default()).string, + findInvalidTokenSubstitute: (external_prop_types_default()).func +}; +/* harmony default export */ const invalid_token = (InvalidToken); + +;// CONCATENATED MODULE: ./src/form/components/StringBuilder/js/tokenized-string.js + + + +const TokenizedString = (props) => { + const { + tokens, + options, + disabled, + invalidTokenRegex, + findInvalidTokenSubstitute + } = props; + const hasDuplicates = new Set(tokens).size !== tokens.length; + const allTokens = tokens && tokens.map((token) => { + if (options) { + const matchedOption = options.find((option) => option.id === token); + if (invalidTokenRegex && !matchedOption) { + const matchedTokens = token.replaceAll(" ", "").split(invalidTokenRegex); + if ((matchedTokens == null ? void 0 : matchedTokens.length) > 1) { + return /* @__PURE__ */ external_react_default().createElement("span", { key: `${token}${hasDuplicates && Math.random()}` }, matchedTokens.map((tkn) => { + if (tkn.match(invalidTokenRegex)) { + return /* @__PURE__ */ external_react_default().createElement( + invalid_token, + { + token: tkn, + findInvalidTokenSubstitute + } + ); + } + return /* @__PURE__ */ external_react_default().createElement("span", null, `${tkn} `); + })); + } + } + if (matchedOption) { + return /* @__PURE__ */ external_react_default().createElement( + "span", + { + key: `${token}${hasDuplicates && Math.random()}`, + className: `${matchedOption.className || "default-option-name"}` + }, + matchedOption.id + ); + } + } + return /* @__PURE__ */ external_react_default().createElement("span", { key: `${token}${hasDuplicates && Math.random()}` }, token); + }); + return /* @__PURE__ */ external_react_default().createElement( + "div", + { + className: `string-builder__styled ${disabled && "string-builder__disabled"}` + }, + allTokens + ); +}; +TokenizedString.propTypes = { + tokens: external_prop_types_default().arrayOf((external_prop_types_default()).string), + options: external_prop_types_default().arrayOf(external_prop_types_default().instanceOf(Object)), + disabled: (external_prop_types_default()).bool, + invalidTokenRegex: external_prop_types_default().instanceOf(RegExp), + findInvalidTokenSubstitute: (external_prop_types_default()).func +}; + +;// CONCATENATED MODULE: ./src/form/components/StringBuilder/js/options-list.js + + + +const OptionsList = ({ + options, + showOptions, + handleOptionSelection, + containerRef, + getThemeClasses, + setShowOptions, + allowSearch, + initialSearchValue +}) => { + const [filterValue, setFilterValue] = (0,external_react_namespaceObject.useState)(initialSearchValue); + const [filteredOptions, setFilteredOptions] = (0,external_react_namespaceObject.useState)(options); + (0,external_react_namespaceObject.useEffect)(() => { + setFilterValue(initialSearchValue); + }, [initialSearchValue]); + (0,external_react_namespaceObject.useEffect)(() => { + if (filterValue === "") { + setFilteredOptions(options); + return; + } + const newFilteredOptions = options.filter( + (option) => option.name.toLowerCase().includes(filterValue.toLowerCase()) + ); + setFilteredOptions(newFilteredOptions); + }, [filterValue]); + (0,external_react_namespaceObject.useEffect)(() => { + setFilteredOptions(options); + }, [options]); + if (!showOptions) { + return null; + } + return /* @__PURE__ */ external_react_default().createElement((external_react_default()).Fragment, null, /* @__PURE__ */ external_react_default().createElement( + components_FloatingContainer, + { + className: `string-builder-dropdown tyk-form-group ${getThemeClasses().join(" ")}`, + element: containerRef, + size: "matchElement", + displayAxis: "vertical" + }, + allowSearch && /* @__PURE__ */ external_react_default().createElement("div", { className: "string-builder-search" }, /* @__PURE__ */ external_react_default().createElement( + "input", + { + autoFocus: true, + className: "tyk-form-control", + value: filterValue, + placeholder: "Search parameter", + onChange: (e) => { + setFilterValue(e.target.value); + }, + onKeyDown: (e) => { + if (e.key === "Escape" || e.key === "ArrowUp" || e.key === "Enter") { + setShowOptions(false); + } + } + } + )), + /* @__PURE__ */ external_react_default().createElement("ul", { className: "string-builder-list" }, filteredOptions.map((option) => /* @__PURE__ */ external_react_default().createElement( + "li", + { + key: `${option.id}${Math.random()}`, + onMouseDown: () => handleOptionSelection(option) + }, + /* @__PURE__ */ external_react_default().createElement("span", { className: `url-builder__options_name ${option.className || "default-option-name"}` }, option.name), + option.desc && /* @__PURE__ */ external_react_default().createElement("span", { className: "url-builder__options_description" }, "\xA0 : \xA0", option.desc) + ))) + )); +}; +OptionsList.propTypes = { + options: external_prop_types_default().arrayOf(Object), + showOptions: (external_prop_types_default()).bool, + handleOptionSelection: (external_prop_types_default()).func, + getThemeClasses: (external_prop_types_default()).func, + setShowOptions: (external_prop_types_default()).func, + containerRef: external_prop_types_default().instanceOf(Object), + allowSearch: (external_prop_types_default()).bool, + initialSearchValue: (external_prop_types_default()).string +}; + +;// CONCATENATED MODULE: ./src/form/components/StringBuilder/js/string-builder-footer.js + + +const StringBuilderFooter = (props) => { + const { + note, + error, + inputInFocus, + stringBuilderHeight, + dropdownTriggerKey + } = props; + return /* @__PURE__ */ external_react_default().createElement( + "div", + { + className: "string-builder-footer", + style: { + marginTop: stringBuilderHeight ? `${stringBuilderHeight - 8}px` : "30px" + } + }, + inputInFocus && !error && /* @__PURE__ */ external_react_default().createElement("p", { className: "tyk-form-control__help-block" }, /* @__PURE__ */ external_react_default().createElement("span", null, "Enter", /* @__PURE__ */ external_react_default().createElement("span", { className: "string_builder_trigger" }, dropdownTriggerKey), "to add any parameter")), + note && /* @__PURE__ */ external_react_default().createElement("p", { className: "tyk-form-control__help-block" }, note), + error && error !== "true" && error !== "false" && /* @__PURE__ */ external_react_default().createElement("p", { className: "tyk-form-control__error-message" }, error) + ); +}; +StringBuilderFooter.propTypes = { + note: (external_prop_types_default()).string, + error: (external_prop_types_default()).string, + dropdownTriggerKey: (external_prop_types_default()).string, + inputInFocus: (external_prop_types_default()).bool, + stringBuilderHeight: (external_prop_types_default()).number +}; + +;// CONCATENATED MODULE: ./src/form/components/StringBuilder/index.js + + + + + + + + +function StringBuilder(props) { + const { + options, + onChange, + value, + theme, + error, + disabled, + readOnly, + note, + label, + labelwidth, + placeholder, + allowSearch, + dropdownTriggerKey, + invalidTokenRegex, + name, + wrapperClassName = "" + } = props; + const [tokenValue, setTokenValue] = (0,external_react_namespaceObject.useState)(value); + const [stringBuilderHeight, setStringBuilderHeight] = (0,external_react_namespaceObject.useState)(); + const [showOptions, setShowOptions] = (0,external_react_namespaceObject.useState)(false); + const [tokenString, setTokenString] = (0,external_react_namespaceObject.useState)(stringToTokenString(value, options)); + const [contextMaxLength, setContentMaxLength] = (0,external_react_namespaceObject.useState)( + tokenValue.length + 5 + ); + const [tokens, setTokens] = (0,external_react_namespaceObject.useState)([]); + const [prevTokenValue, setPrevTokenValue] = (0,external_react_namespaceObject.useState)(); + const [inputInFocus, setInputInFocus] = (0,external_react_namespaceObject.useState)(false); + const [initialSearchValue, setInitialSearchValue] = (0,external_react_namespaceObject.useState)(""); + const [selectedInvalidToken, setSelectedInvalidToken] = (0,external_react_namespaceObject.useState)(null); + const prevTokenString = hooks_usePrevious(tokenString); + const containerRef = (0,external_react_namespaceObject.useRef)(); + const inputRef = (0,external_react_namespaceObject.useRef)(); + (0,external_react_namespaceObject.useEffect)(() => { + if (onChange) { + onChange(tokenValue.replaceAll(" ", "")); + } + }, [tokenValue]); + (0,external_react_namespaceObject.useEffect)(() => { + const tempVal = invalidTokenRegex ? value.replaceAll(invalidTokenRegex, " $& ") : value; + setTokenValue(() => tempVal); + setTokenString(() => stringToTokenString(tempVal, options)); + }, [value]); + (0,external_react_namespaceObject.useEffect)(() => { + const splitTokens = tokenString.split(/__TOKEN__(.*?)__TOKEN__/g); + const splitTokensStr = splitTokens.join(""); + setTokens(() => splitTokens); + setTokenValue(() => splitTokensStr); + setPrevTokenValue(() => splitTokensStr); + }, [tokenString]); + (0,external_react_namespaceObject.useEffect)(() => { + if (contextMaxLength - 3 < tokenValue.length) { + const newHeight = inputRef.current.scrollHeight + 3; + setStringBuilderHeight(() => newHeight); + setContentMaxLength(() => contextMaxLength + 25); + } + }, [tokenString, tokenValue]); + const handleOptionSelection = (option) => { + let newInput = ""; + const { selectionStart } = inputRef.current; + if (prevTokenString && prevTokenString !== value && !selectedInvalidToken) { + newInput = prevTokenString + tokenValue.split(prevTokenValue)[1]; + } + let tokenizedString = ""; + if (selectionStart !== tokenValue.length && !selectedInvalidToken) { + const newTokenValue = tokenValue.slice(0, selectionStart) + option.id + tokenValue.slice(selectionStart); + tokenizedString = stringToTokenString(newTokenValue, options); + setCursorPos(inputRef, selectionStart + option.id.length); + } else { + tokenizedString = `${newInput || tokenValue}__TOKEN__${option.id}__TOKEN__`; + } + if (selectedInvalidToken) { + tokenizedString = tokenString.replace( + ` ${selectedInvalidToken} `, + `__TOKEN__${option.id}__TOKEN__` + ); + setSelectedInvalidToken(() => null); + setInitialSearchValue(() => ""); + } + setTokenString(() => tokenizedString); + setShowOptions(() => false); + setTimeout(() => { + inputRef.current.focus(); + }, 20); + }; + const getThemeClasses = () => { + const themes = theme ? theme.split(" ") : []; + return themes.map((iTheme) => `tyk-form-group--${iTheme}`); + }; + const getCssClasses = () => [ + "tyk-form-group", + ...getThemeClasses(), + error && "has-error", + disabled && "disabled" + ].filter(Boolean).join(" "); + const findInvalidTokenSubstitute = (invalidToken) => { + setSelectedInvalidToken(() => invalidToken); + setInitialSearchValue(() => invalidToken.replace(/[^a-zA-Z ]/g, "")); + setShowOptions(() => true); + }; + return /* @__PURE__ */ external_react_default().createElement("div", { className: `string-builder ${wrapperClassName}`, ref: containerRef }, /* @__PURE__ */ external_react_default().createElement("div", { className: getCssClasses() }, label && /* @__PURE__ */ external_react_default().createElement("label", { style: { flexBasis: labelwidth || "auto" } }, label), !readOnly && /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-form-control__wrapper" }, /* @__PURE__ */ external_react_default().createElement( + "div", + { + className: `tyk-form-control ${disabled && "string-builder__disabled"}`, + style: { height: `${stringBuilderHeight}px` } + }, + /* @__PURE__ */ external_react_default().createElement( + StringInput, + { + setInputInFocus, + setShowOptions, + tokenValue, + disabled, + placeholder, + allowSearch, + tokens, + dropdownTriggerKey, + setStringBuilderHeight, + stringBuilderHeight, + setTokenString, + tokenString, + showOptions, + options, + setTokenValue, + inputRef, + invalidTokenRegex, + name, + contextMaxLength, + setContentMaxLength + } + ), + /* @__PURE__ */ external_react_default().createElement( + TokenizedString, + { + tokens, + options, + disabled, + invalidTokenRegex, + findInvalidTokenSubstitute + } + ), + /* @__PURE__ */ external_react_default().createElement( + OptionsList, + { + showOptions, + options, + handleOptionSelection, + containerRef, + getThemeClasses, + setShowOptions, + allowSearch, + initialSearchValue + } + ), + /* @__PURE__ */ external_react_default().createElement( + StringBuilderFooter, + { + error, + note, + inputInFocus, + stringBuilderHeight, + dropdownTriggerKey + } + ) + )), readOnly && /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-form-control--readonly" }, value || "-"))); } +StringBuilder.propTypes = { + /** Options to render in the list */ + options: external_prop_types_default().arrayOf( + external_prop_types_default().shape({ + /** id is the value that will be appended to the string on selection */ + id: (external_prop_types_default()).string.isRequired, + /** name of option (view) */ + name: (external_prop_types_default()).string.isRequired, + /** to style / highlight the token */ + className: (external_prop_types_default()).string, + /** description of option */ + desc: (external_prop_types_default()).string + }) + ), + /** Callback executed on change of string value */ + onChange: (external_prop_types_default()).func, + /** Initial value */ + value: (external_prop_types_default()).string, + /** Disable input */ + disabled: (external_prop_types_default()).bool, + /** Read Only prop removes the form element and displays just the value */ + readOnly: (external_prop_types_default()).bool, + /** Show error state (w/ or w/o message) */ + error: (external_prop_types_default()).string, + /** Component theme */ + theme: (external_prop_types_default()).string, + /** Footnote for component */ + note: (external_prop_types_default()).string, + /** Label for component */ + label: external_prop_types_default().oneOfType([ + external_prop_types_default().arrayOf((external_prop_types_default()).node), + (external_prop_types_default()).node, + (external_prop_types_default()).element, + (external_prop_types_default()).func, + (external_prop_types_default()).string + ]), + /** Label Width for component */ + labelwidth: (external_prop_types_default()).string, + /** Placeholder for component */ + placeholder: (external_prop_types_default()).string, + /** Key To trigger dropdown */ + dropdownTriggerKey: (external_prop_types_default()).string, + /** Regex to detect invalid tokens in the value */ + invalidTokenRegex: external_prop_types_default().instanceOf(RegExp), + /** Allow users to search from options */ + allowSearch: (external_prop_types_default()).bool, + name: (external_prop_types_default()).string, + wrapperClassName: (external_prop_types_default()).string +}; +StringBuilder.defaultProps = { + onChange: null, + value: "", + options: [], + theme: "default" +}; +/* harmony default export */ const components_StringBuilder = (StringBuilder); + +;// CONCATENATED MODULE: ./src/utils/config/config.js +const config = { + FORM_DEBOUNCE: 200 +}; +function setConfig(key, val) { + config[key] = val; +} +/* harmony default export */ const config_config = (config); + +;// CONCATENATED MODULE: ./src/utils/formik/index.js +var formik_defProp = Object.defineProperty; +var formik_defProps = Object.defineProperties; +var formik_getOwnPropDescs = Object.getOwnPropertyDescriptors; +var formik_getOwnPropSymbols = Object.getOwnPropertySymbols; +var formik_hasOwnProp = Object.prototype.hasOwnProperty; +var formik_propIsEnum = Object.prototype.propertyIsEnumerable; +var formik_defNormalProp = (obj, key, value) => key in obj ? formik_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var formik_spreadValues = (a, b) => { + for (var prop in b || (b = {})) + if (formik_hasOwnProp.call(b, prop)) + formik_defNormalProp(a, prop, b[prop]); + if (formik_getOwnPropSymbols) + for (var prop of formik_getOwnPropSymbols(b)) { + if (formik_propIsEnum.call(b, prop)) + formik_defNormalProp(a, prop, b[prop]); + } + return a; +}; +var formik_spreadProps = (a, b) => formik_defProps(a, formik_getOwnPropDescs(b)); +var formik_objRest = (source, exclude) => { + var target = {}; + for (var prop in source) + if (formik_hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) + target[prop] = source[prop]; + if (source != null && formik_getOwnPropSymbols) + for (var prop of formik_getOwnPropSymbols(source)) { + if (exclude.indexOf(prop) < 0 && formik_propIsEnum.call(source, prop)) + target[prop] = source[prop]; + } + return target; +}; + + +function getValueFromPath(obj, path) { + const indexes = path.split(/[\][.]/).filter(Boolean); + return indexes.reduce((acc, v) => acc ? acc[v] : acc, obj); +} +function formik_debounce(f, limit) { + let timeoutId; + return (...args) => { + clearTimeout(timeoutId); + timeoutId = setTimeout(f, limit, ...args); + }; +} +const wrapper = (Component, options) => (_a) => { + var _b = _a, { field, form } = _b, properties = formik_objRest(_b, ["field", "form"]); + var _a2; + const DEFAULT_DEBOUNCE_TIME_MS = typeof config_config.FORM_DEBOUNCE === "number" ? config_config.FORM_DEBOUNCE : 200; + const [myValue, setMyValue] = (0,external_react_namespaceObject.useState)(field.value); + const opts = formik_spreadValues({ + getOnChangeProps: () => ({}), + hasIsFieldProp: false + }, options); + const executeDebounced = (0,external_react_namespaceObject.useCallback)((() => { + const fn = (f) => f(); + if (properties.debounce === false || config_config.FORM_DEBOUNCE === false && !properties.debounce) { + return fn; + } + const timeout = typeof properties.debounce === "number" ? properties.debounce : DEFAULT_DEBOUNCE_TIME_MS; + return formik_debounce(fn, timeout); + })(), []); + const getValue = (v) => { + if (v && v.target) { + if (v.target.nodeName === "INPUT" && (v.target.type === "checkbox" || v.target.type === "radio")) { + return v.target.checked; + } + return v.target.value; + } + return v; + }; + const onChange = (valueOrEvent) => { + const value = getValue(valueOrEvent); + const onChangeProps = opts.getOnChangeProps(value, field, form, properties); + const newValue = onChangeProps.value || properties.value || value; + executeDebounced(() => { + if (typeof properties.onChange === "function") { + properties.onChange(newValue); + } + field.onChange({ target: formik_spreadValues({ name: field.name, value: newValue }, onChangeProps) }); + }); + setMyValue(newValue); + }; + const formError = (getValueFromPath(form.touched, field.name) || Boolean(form.submitCount)) && getValueFromPath(form.errors, field.name); + const error = typeof formError === "string" ? formError : ""; + (0,external_react_namespaceObject.useEffect)(() => { + setMyValue(field.value); + }, [field.value]); + if ((_a2 = form.status) == null ? void 0 : _a2.disabled) + properties.disabled = true; + const componentProps = formik_spreadValues({}, properties); + delete componentProps.debounce; + return /* @__PURE__ */ external_react_default().createElement( + Component, + formik_spreadProps(formik_spreadValues(formik_spreadValues(formik_spreadProps(formik_spreadValues({}, field), { + error + }), opts.hasIsFieldProp ? { isfield: true } : {}), componentProps), { + checked: typeof properties.value === "string" ? field.value === properties.value : field.value, + onChange, + value: myValue, + input: { value: myValue, onChange } + }) + ); +}; +/* harmony default export */ const formik = (wrapper); + +;// CONCATENATED MODULE: ./src/form/formik/FormikCheckbox/index.js + + +/* harmony default export */ const FormikCheckbox = (formik(Checkbox, { + getOnChangeProps: (value) => ({ + checked: value + }) +})); + +;// CONCATENATED MODULE: ./src/form/formik/FormikCodeEditor/index.js + + +/* harmony default export */ const FormikCodeEditor = (formik(components_CodeEditor)); + +;// CONCATENATED MODULE: ./src/form/formik/FormikCombobox/index.js + + +/* harmony default export */ const FormikCombobox = (formik(Combobox)); + +;// CONCATENATED MODULE: ./src/form/formik/FormikCombobox2/index.js + + +/* harmony default export */ const FormikCombobox2 = (formik(components_Combobox2)); + +;// CONCATENATED MODULE: ./src/form/formik/FormikDatePicker/index.js + + +/* harmony default export */ const FormikDatePicker = (formik(components_DatePicker)); + +;// CONCATENATED MODULE: ./src/form/formik/FormikEditableList/index.js + + +/* harmony default export */ const FormikEditableList = (formik(EditableList, { + getOnChangeProps: (value) => ({ value: value || [] }) +})); + +;// CONCATENATED MODULE: ./src/form/formik/FormikEditableList2/index.js + + +/* harmony default export */ const FormikEditableList2 = (formik(components_EditableList2)); -.ace-tm .ace_print-margin { - width: 1px; - background: #e8e8e8; -} +;// CONCATENATED MODULE: ./src/form/formik/FormikFileInput/index.js -.ace-tm .ace_fold { - background-color: #6B72E6; -} -.ace-tm { - background-color: #FFFFFF; - color: black; -} +/* harmony default export */ const FormikFileInput = (formik(FileInput)); -.ace-tm .ace_cursor { - color: black; -} - -.ace-tm .ace_invisible { - color: rgb(191, 191, 191); -} +;// CONCATENATED MODULE: ./src/form/formik/FormikInput/index.js -.ace-tm .ace_storage, -.ace-tm .ace_keyword { - color: blue; -} -.ace-tm .ace_constant { - color: rgb(197, 6, 11); -} +/* harmony default export */ const FormikInput = (formik(Input, { hasIsFieldProp: true })); -.ace-tm .ace_constant.ace_buildin { - color: rgb(88, 72, 246); -} +;// CONCATENATED MODULE: ./src/form/formik/FormikInput2/index.js -.ace-tm .ace_constant.ace_language { - color: rgb(88, 92, 246); -} -.ace-tm .ace_constant.ace_library { - color: rgb(6, 150, 14); -} +/* harmony default export */ const FormikInput2 = (formik(components_Input2)); -.ace-tm .ace_invalid { - background-color: rgba(255, 0, 0, 0.1); - color: red; -} +;// CONCATENATED MODULE: ./src/form/formik/FormikMultiselect/index.js -.ace-tm .ace_support.ace_function { - color: rgb(60, 76, 114); -} -.ace-tm .ace_support.ace_constant { - color: rgb(6, 150, 14); -} +/* harmony default export */ const FormikMultiselect = (formik(components_Multiselect)); -.ace-tm .ace_support.ace_type, -.ace-tm .ace_support.ace_class { - color: rgb(109, 121, 222); -} +;// CONCATENATED MODULE: ./src/form/formik/FormikRadio/index.js -.ace-tm .ace_keyword.ace_operator { - color: rgb(104, 118, 135); -} -.ace-tm .ace_string { - color: rgb(3, 106, 7); -} +/* harmony default export */ const FormikRadio = (formik(Radio, { + getOnChangeProps: (value, field, form, properties) => ({ + checked: value === properties.value, + value: properties.value + }) +})); -.ace-tm .ace_comment { - color: rgb(76, 136, 107); -} +;// CONCATENATED MODULE: ./src/form/formik/FormikSelect/index.js -.ace-tm .ace_comment.ace_doc { - color: rgb(0, 102, 255); -} -.ace-tm .ace_comment.ace_doc.ace_tag { - color: rgb(128, 159, 191); -} +/* harmony default export */ const FormikSelect = (formik(Select, { hasIsFieldProp: true })); -.ace-tm .ace_constant.ace_numeric { - color: rgb(0, 0, 205); -} +;// CONCATENATED MODULE: ./src/form/formik/FormikSelectableList/index.js -.ace-tm .ace_variable { - color: rgb(49, 132, 149); -} -.ace-tm .ace_xml-pe { - color: rgb(104, 104, 91); -} +/* harmony default export */ const FormikSelectableList = (formik(components_SelectableList)); -.ace-tm .ace_entity.ace_name.ace_function { - color: #0000A2; -} +;// CONCATENATED MODULE: ./src/form/formik/FormikTextarea/index.js -.ace-tm .ace_heading { - color: rgb(12, 7, 255); -} +/* harmony default export */ const FormikTextarea = (formik(components_Textarea)); -.ace-tm .ace_list { - color:rgb(185, 6, 144); -} +;// CONCATENATED MODULE: ./src/form/formik/FormikToggle/index.js -.ace-tm .ace_meta.ace_tag { - color:rgb(0, 22, 142); -} -.ace-tm .ace_string.ace_regex { - color: rgb(255, 0, 0) -} +/* harmony default export */ const FormikToggle = (formik(components_Toggle)); -.ace-tm .ace_marker-layer .ace_selection { - background: rgb(181, 213, 255); -} -.ace-tm.ace_multiselect .ace_selection.ace_start { - box-shadow: 0 0 3px 0px white; -} -.ace-tm .ace_marker-layer .ace_step { - background: rgb(252, 255, 0); -} +;// CONCATENATED MODULE: ./src/form/formik/FormikStringBuilder/index.js -.ace-tm .ace_marker-layer .ace_stack { - background: rgb(164, 229, 101); -} -.ace-tm .ace_marker-layer .ace_bracket { - margin: -1px 0 0 -1px; - border: 1px solid rgb(192, 192, 192); -} +/* harmony default export */ const FormikStringBuilder = (formik(components_StringBuilder)); + +;// CONCATENATED MODULE: ./src/form/redux-form/FieldCodeEditor/index.js +var FieldCodeEditor_defProp = Object.defineProperty; +var FieldCodeEditor_defProps = Object.defineProperties; +var FieldCodeEditor_getOwnPropDescs = Object.getOwnPropertyDescriptors; +var FieldCodeEditor_getOwnPropSymbols = Object.getOwnPropertySymbols; +var FieldCodeEditor_hasOwnProp = Object.prototype.hasOwnProperty; +var FieldCodeEditor_propIsEnum = Object.prototype.propertyIsEnumerable; +var FieldCodeEditor_defNormalProp = (obj, key, value) => key in obj ? FieldCodeEditor_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var FieldCodeEditor_spreadValues = (a, b) => { + for (var prop in b || (b = {})) + if (FieldCodeEditor_hasOwnProp.call(b, prop)) + FieldCodeEditor_defNormalProp(a, prop, b[prop]); + if (FieldCodeEditor_getOwnPropSymbols) + for (var prop of FieldCodeEditor_getOwnPropSymbols(b)) { + if (FieldCodeEditor_propIsEnum.call(b, prop)) + FieldCodeEditor_defNormalProp(a, prop, b[prop]); + } + return a; +}; +var FieldCodeEditor_spreadProps = (a, b) => FieldCodeEditor_defProps(a, FieldCodeEditor_getOwnPropDescs(b)); +var FieldCodeEditor_objRest = (source, exclude) => { + var target = {}; + for (var prop in source) + if (FieldCodeEditor_hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) + target[prop] = source[prop]; + if (source != null && FieldCodeEditor_getOwnPropSymbols) + for (var prop of FieldCodeEditor_getOwnPropSymbols(source)) { + if (exclude.indexOf(prop) < 0 && FieldCodeEditor_propIsEnum.call(source, prop)) + target[prop] = source[prop]; + } + return target; +}; +var FieldCodeEditor_publicField = (obj, key, value) => { + FieldCodeEditor_defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); + return value; +}; -.ace-tm .ace_marker-layer .ace_active-line { - background: rgba(0, 0, 0, 0.07); -} -.ace-tm .ace_gutter-active-line { - background-color : #dcdcdc; -} -.ace-tm .ace_marker-layer .ace_selected-word { - background: rgb(250, 250, 255); - border: 1px solid rgb(200, 200, 250); + +class FieldCodeEditor extends external_react_namespaceObject.Component { + constructor(props) { + super(props); + this.handleOnChange = this.handleOnChange.bind(this); + } + getInputError() { + const { meta, validationmessages } = this.props; + const { touched, error, warning } = meta; + let message = null; + if (touched && error && validationmessages[error]) { + message = validationmessages[error]; + } else if (touched && warning) { + message = "warning"; + } + return message; + } + handleOnChange(value) { + const { input } = this.prop; + const { onChange } = input; + onChange((0,external_immutable_namespaceObject.fromJS)(value)); + } + render() { + const _a = this.props, { input } = _a, rest = FieldCodeEditor_objRest(_a, ["input"]); + return /* @__PURE__ */ external_react_default().createElement( + components_CodeEditor, + FieldCodeEditor_spreadProps(FieldCodeEditor_spreadValues(FieldCodeEditor_spreadValues({}, input), rest), { + error: this.getInputError() + }) + ); + } } +FieldCodeEditor_publicField(FieldCodeEditor, "propTypes", { + input: external_prop_types_default().instanceOf(Object), + meta: external_prop_types_default().instanceOf(Object), + validationmessages: external_prop_types_default().instanceOf(Object) +}); -.ace-tm .ace_indent-guide { - background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y; +;// CONCATENATED MODULE: ./src/form/redux-form/FieldCombobox/index.js +var FieldCombobox_defProp = Object.defineProperty; +var FieldCombobox_defProps = Object.defineProperties; +var FieldCombobox_getOwnPropDescs = Object.getOwnPropertyDescriptors; +var FieldCombobox_getOwnPropSymbols = Object.getOwnPropertySymbols; +var FieldCombobox_hasOwnProp = Object.prototype.hasOwnProperty; +var FieldCombobox_propIsEnum = Object.prototype.propertyIsEnumerable; +var FieldCombobox_defNormalProp = (obj, key, value) => key in obj ? FieldCombobox_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var FieldCombobox_spreadValues = (a, b) => { + for (var prop in b || (b = {})) + if (FieldCombobox_hasOwnProp.call(b, prop)) + FieldCombobox_defNormalProp(a, prop, b[prop]); + if (FieldCombobox_getOwnPropSymbols) + for (var prop of FieldCombobox_getOwnPropSymbols(b)) { + if (FieldCombobox_propIsEnum.call(b, prop)) + FieldCombobox_defNormalProp(a, prop, b[prop]); + } + return a; +}; +var FieldCombobox_spreadProps = (a, b) => FieldCombobox_defProps(a, FieldCombobox_getOwnPropDescs(b)); +var FieldCombobox_objRest = (source, exclude) => { + var target = {}; + for (var prop in source) + if (FieldCombobox_hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) + target[prop] = source[prop]; + if (source != null && FieldCombobox_getOwnPropSymbols) + for (var prop of FieldCombobox_getOwnPropSymbols(source)) { + if (exclude.indexOf(prop) < 0 && FieldCombobox_propIsEnum.call(source, prop)) + target[prop] = source[prop]; + } + return target; +}; +var FieldCombobox_publicField = (obj, key, value) => { + FieldCombobox_defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); + return value; +}; + + + + +class FieldCombobox extends external_react_namespaceObject.Component { + constructor(props) { + super(props); + this.handleOnChange = this.handleOnChange.bind(this); + } + getComboboxError() { + const { meta, validationmessages } = this.props; + const { touched, error, warning } = meta; + let message = null; + if (touched && error && validationmessages[error]) { + message = validationmessages[error]; + } else if (touched && warning) { + message = "warning"; + } + return message; + } + handleOnChange(value) { + const { input } = this.props; + const { onChange } = input; + onChange((0,external_immutable_namespaceObject.fromJS)(value)); + } + render() { + const props = FieldCombobox_objRest(this.props, []); + return /* @__PURE__ */ external_react_default().createElement( + Combobox, + FieldCombobox_spreadProps(FieldCombobox_spreadValues({}, props), { + onChange: this.handleOnChange, + value: !props.input.value ? props.input.value : props.input.value.toJS(), + error: this.getComboboxError() + }) + ); + } } +FieldCombobox_publicField(FieldCombobox, "propTypes", { + meta: external_prop_types_default().instanceOf(Object), + input: external_prop_types_default().instanceOf(Object), + validationmessages: external_prop_types_default().instanceOf(Object) +}); + +;// CONCATENATED MODULE: ./src/form/redux-form/FieldDropdown/index.js +var FieldDropdown_defProp = Object.defineProperty; +var FieldDropdown_defProps = Object.defineProperties; +var FieldDropdown_getOwnPropDescs = Object.getOwnPropertyDescriptors; +var FieldDropdown_getOwnPropSymbols = Object.getOwnPropertySymbols; +var FieldDropdown_hasOwnProp = Object.prototype.hasOwnProperty; +var FieldDropdown_propIsEnum = Object.prototype.propertyIsEnumerable; +var FieldDropdown_defNormalProp = (obj, key, value) => key in obj ? FieldDropdown_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var FieldDropdown_spreadValues = (a, b) => { + for (var prop in b || (b = {})) + if (FieldDropdown_hasOwnProp.call(b, prop)) + FieldDropdown_defNormalProp(a, prop, b[prop]); + if (FieldDropdown_getOwnPropSymbols) + for (var prop of FieldDropdown_getOwnPropSymbols(b)) { + if (FieldDropdown_propIsEnum.call(b, prop)) + FieldDropdown_defNormalProp(a, prop, b[prop]); + } + return a; +}; +var FieldDropdown_spreadProps = (a, b) => FieldDropdown_defProps(a, FieldDropdown_getOwnPropDescs(b)); +var FieldDropdown_objRest = (source, exclude) => { + var target = {}; + for (var prop in source) + if (FieldDropdown_hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) + target[prop] = source[prop]; + if (source != null && FieldDropdown_getOwnPropSymbols) + for (var prop of FieldDropdown_getOwnPropSymbols(source)) { + if (exclude.indexOf(prop) < 0 && FieldDropdown_propIsEnum.call(source, prop)) + target[prop] = source[prop]; + } + return target; +}; +var FieldDropdown_publicField = (obj, key, value) => { + FieldDropdown_defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); + return value; +}; + + -.ace-tm .ace_indent-guide-active { - background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAAZSURBVHjaYvj///9/hivKyv8BAAAA//8DACLqBhbvk+/eAAAAAElFTkSuQmCC") right repeat-y; + +class FieldDropdown extends external_react_namespaceObject.Component { + constructor(props) { + super(props); + this.handleOnChange = this.handleOnChange.bind(this); + } + handleOnChange(value) { + const { input } = this.props; + const { onChange } = input; + onChange((0,external_immutable_namespaceObject.fromJS)(value)); + } + render() { + const _a = this.props, { + children, + input + } = _a, rest = FieldDropdown_objRest(_a, [ + "children", + "input" + ]); + return /* @__PURE__ */ external_react_default().createElement( + components_Dropdown, + FieldDropdown_spreadProps(FieldDropdown_spreadValues({}, rest), { + onSelect: this.handleOnChange, + selectedItem: input.value + }), + children + ); + } } -`}),ace.define("ace/theme/textmate",["require","exports","module","ace/theme/textmate-css","ace/lib/dom"],function(n,M,G){"use strict";M.isDark=!1,M.cssClass="ace-tm",M.cssText=n("./textmate-css"),M.$id="ace/theme/textmate";var L=n("../lib/dom");L.importCssString(M.cssText,M.cssClass,!1)}),ace.define("ace/config",["require","exports","module","ace/lib/lang","ace/lib/net","ace/lib/dom","ace/lib/app_config","ace/theme/textmate"],function(n,M,G){"no use strict";var L=n("./lib/lang"),T=n("./lib/net"),C=n("./lib/dom"),d=n("./lib/app_config").AppConfig;G.exports=M=new d;var h={packaged:!1,workerPath:null,modePath:null,themePath:null,basePath:"",suffix:".js",$moduleUrls:{},loadWorkerFromBlob:!0,sharedPopups:!1,useStrictCSP:null};M.get=function(i){if(!h.hasOwnProperty(i))throw new Error("Unknown config key: "+i);return h[i]},M.set=function(i,r){if(h.hasOwnProperty(i))h[i]=r;else if(this.setDefaultValue("",i,r)==!1)throw new Error("Unknown config key: "+i);i=="useStrictCSP"&&C.useStrictCSP(r)},M.all=function(){return L.copyObject(h)},M.$modes={},M.moduleUrl=function(i,r){if(h.$moduleUrls[i])return h.$moduleUrls[i];var a=i.split("/");r=r||a[a.length-2]||"";var c=r=="snippets"?"/":"-",p=a[a.length-1];if(r=="worker"&&c=="-"){var g=new RegExp("^"+r+"[\\-_]|[\\-_]"+r+"$","g");p=p.replace(g,"")}(!p||p==r)&&a.length>1&&(p=a[a.length-2]);var A=h[r+"Path"];return A==null?A=h.basePath:c=="/"&&(r=c=""),A&&A.slice(-1)!="/"&&(A+="/"),A+r+c+p+this.get("suffix")},M.setModuleUrl=function(i,r){return h.$moduleUrls[i]=r};var l=function(i,r){if(i==="ace/theme/textmate"||i==="./theme/textmate")return r(null,n("./theme/textmate"));if(o)return o(i,r);console.error("loader is not configured")},o;M.setLoader=function(i){o=i},M.dynamicModules=Object.create(null),M.$loading={},M.$loaded={},M.loadModule=function(i,r){var a,c;Array.isArray(i)&&(c=i[0],i=i[1]);var p=function(g){if(g&&!M.$loading[i])return r&&r(g);if(M.$loading[i]||(M.$loading[i]=[]),M.$loading[i].push(r),!(M.$loading[i].length>1)){var A=function(){l(i,function(b,$){$&&(M.$loaded[i]=$),M._emit("load.module",{name:i,module:$});var S=M.$loading[i];M.$loading[i]=null,S.forEach(function(v){v&&v($)})})};if(!M.get("packaged"))return A();T.loadScript(M.moduleUrl(i,c),A),s()}};if(M.dynamicModules[i])M.dynamicModules[i]().then(function(g){g.default?p(g.default):p(g)});else{try{a=this.$require(i)}catch(g){}p(a||M.$loaded[i])}},M.$require=function(i){if(typeof G.require=="function"){var r="require";return G[r](i)}},M.setModuleLoader=function(i,r){M.dynamicModules[i]=r};var s=function(){!h.basePath&&!h.workerPath&&!h.modePath&&!h.themePath&&!Object.keys(h.$moduleUrls).length&&(console.error("Unable to infer path to ace from script src,","use ace.config.set('basePath', 'path') to enable dynamic loading of modes and themes","or with webpack use ace/webpack-resolver"),s=function(){})};M.version="1.31.2"}),ace.define("ace/loader_build",["require","exports","module","ace/lib/fixoldbrowsers","ace/config"],function(n,M,G){"use strict";n("./lib/fixoldbrowsers");var L=n("./config");L.setLoader(function(h,l){n([h],function(o){l(null,o)})});var T=function(){return this||typeof window!="undefined"&&window}();G.exports=function(h){L.init=C,L.$require=n,h.require=n,h.define=f0.amdD},C(!0);function C(h){if(!(!T||!T.document)){L.set("packaged",h||n.packaged||G.packaged||T.define&&f0.amdD.packaged);var l={},o="",s=document.currentScript||document._currentScript,i=s&&s.ownerDocument||document;s&&s.src&&(o=s.src.split(/[?#]/)[0].split("/").slice(0,-1).join("/")||"");for(var r=i.getElementsByTagName("script"),a=0;a ["+this.end.row+"/"+this.end.column+"]"},C.prototype.contains=function(d,h){return this.compare(d,h)==0},C.prototype.compareRange=function(d){var h,l=d.end,o=d.start;return h=this.compare(l.row,l.column),h==1?(h=this.compare(o.row,o.column),h==1?2:h==0?1:0):h==-1?-2:(h=this.compare(o.row,o.column),h==-1?-1:h==1?42:0)},C.prototype.comparePoint=function(d){return this.compare(d.row,d.column)},C.prototype.containsRange=function(d){return this.comparePoint(d.start)==0&&this.comparePoint(d.end)==0},C.prototype.intersects=function(d){var h=this.compareRange(d);return h==-1||h==0||h==1},C.prototype.isEnd=function(d,h){return this.end.row==d&&this.end.column==h},C.prototype.isStart=function(d,h){return this.start.row==d&&this.start.column==h},C.prototype.setStart=function(d,h){typeof d=="object"?(this.start.column=d.column,this.start.row=d.row):(this.start.row=d,this.start.column=h)},C.prototype.setEnd=function(d,h){typeof d=="object"?(this.end.column=d.column,this.end.row=d.row):(this.end.row=d,this.end.column=h)},C.prototype.inside=function(d,h){return this.compare(d,h)==0?!(this.isEnd(d,h)||this.isStart(d,h)):!1},C.prototype.insideStart=function(d,h){return this.compare(d,h)==0?!this.isEnd(d,h):!1},C.prototype.insideEnd=function(d,h){return this.compare(d,h)==0?!this.isStart(d,h):!1},C.prototype.compare=function(d,h){return!this.isMultiLine()&&d===this.start.row?hthis.end.column?1:0:dthis.end.row?1:this.start.row===d?h>=this.start.column?0:-1:this.end.row===d?h<=this.end.column?0:1:0},C.prototype.compareStart=function(d,h){return this.start.row==d&&this.start.column==h?-1:this.compare(d,h)},C.prototype.compareEnd=function(d,h){return this.end.row==d&&this.end.column==h?1:this.compare(d,h)},C.prototype.compareInside=function(d,h){return this.end.row==d&&this.end.column==h?1:this.start.row==d&&this.start.column==h?-1:this.compare(d,h)},C.prototype.clipRows=function(d,h){if(this.end.row>h)var l={row:h+1,column:0};else if(this.end.rowh)var o={row:h+1,column:0};else if(this.start.row key in obj ? FieldPagination_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var FieldPagination_spreadValues = (a, b) => { + for (var prop in b || (b = {})) + if (FieldPagination_hasOwnProp.call(b, prop)) + FieldPagination_defNormalProp(a, prop, b[prop]); + if (FieldPagination_getOwnPropSymbols) + for (var prop of FieldPagination_getOwnPropSymbols(b)) { + if (FieldPagination_propIsEnum.call(b, prop)) + FieldPagination_defNormalProp(a, prop, b[prop]); + } + return a; +}; +var FieldPagination_spreadProps = (a, b) => FieldPagination_defProps(a, FieldPagination_getOwnPropDescs(b)); +var FieldPagination_objRest = (source, exclude) => { + var target = {}; + for (var prop in source) + if (FieldPagination_hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) + target[prop] = source[prop]; + if (source != null && FieldPagination_getOwnPropSymbols) + for (var prop of FieldPagination_getOwnPropSymbols(source)) { + if (exclude.indexOf(prop) < 0 && FieldPagination_propIsEnum.call(source, prop)) + target[prop] = source[prop]; + } + return target; +}; -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. -SproutCore and the SproutCore logo are trademarks of Sprout Systems, Inc. +const FieldPagination = (props) => { + const _a = props, { input } = _a, rest = FieldPagination_objRest(_a, ["input"]); + return /* @__PURE__ */ external_react_default().createElement( + Pagination, + FieldPagination_spreadProps(FieldPagination_spreadValues(FieldPagination_spreadValues({}, input), rest), { + onChange: input.onChange, + value: input.value ? input.value : 0 + }) + ); +}; +FieldPagination.propTypes = { + input: external_prop_types_default().instanceOf(Object) +}; +/* harmony default export */ const redux_form_FieldPagination = (FieldPagination); -For more information about SproutCore, visit http://www.sproutcore.com +;// CONCATENATED MODULE: ./src/form/redux-form/FieldCombobox2/index.js +var FieldCombobox2_defProp = Object.defineProperty; +var FieldCombobox2_defProps = Object.defineProperties; +var FieldCombobox2_getOwnPropDescs = Object.getOwnPropertyDescriptors; +var FieldCombobox2_getOwnPropSymbols = Object.getOwnPropertySymbols; +var FieldCombobox2_hasOwnProp = Object.prototype.hasOwnProperty; +var FieldCombobox2_propIsEnum = Object.prototype.propertyIsEnumerable; +var FieldCombobox2_defNormalProp = (obj, key, value) => key in obj ? FieldCombobox2_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var FieldCombobox2_spreadValues = (a, b) => { + for (var prop in b || (b = {})) + if (FieldCombobox2_hasOwnProp.call(b, prop)) + FieldCombobox2_defNormalProp(a, prop, b[prop]); + if (FieldCombobox2_getOwnPropSymbols) + for (var prop of FieldCombobox2_getOwnPropSymbols(b)) { + if (FieldCombobox2_propIsEnum.call(b, prop)) + FieldCombobox2_defNormalProp(a, prop, b[prop]); + } + return a; +}; +var FieldCombobox2_spreadProps = (a, b) => FieldCombobox2_defProps(a, FieldCombobox2_getOwnPropDescs(b)); -========================================================================== -@license */"use strict";var L=n("./oop"),T=function(){var C={MODIFIER_KEYS:{16:"Shift",17:"Ctrl",18:"Alt",224:"Meta",91:"MetaLeft",92:"MetaRight",93:"ContextMenu"},KEY_MODS:{ctrl:1,alt:2,option:2,shift:4,super:8,meta:8,command:8,cmd:8,control:1},FUNCTION_KEYS:{8:"Backspace",9:"Tab",13:"Return",19:"Pause",27:"Esc",32:"Space",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"Left",38:"Up",39:"Right",40:"Down",44:"Print",45:"Insert",46:"Delete",96:"Numpad0",97:"Numpad1",98:"Numpad2",99:"Numpad3",100:"Numpad4",101:"Numpad5",102:"Numpad6",103:"Numpad7",104:"Numpad8",105:"Numpad9","-13":"NumpadEnter",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",144:"Numlock",145:"Scrolllock"},PRINTABLE_KEYS:{32:" ",48:"0",49:"1",50:"2",51:"3",52:"4",53:"5",54:"6",55:"7",56:"8",57:"9",59:";",61:"=",65:"a",66:"b",67:"c",68:"d",69:"e",70:"f",71:"g",72:"h",73:"i",74:"j",75:"k",76:"l",77:"m",78:"n",79:"o",80:"p",81:"q",82:"r",83:"s",84:"t",85:"u",86:"v",87:"w",88:"x",89:"y",90:"z",107:"+",109:"-",110:".",186:";",187:"=",188:",",189:"-",190:".",191:"/",192:"`",219:"[",220:"\\",221:"]",222:"'",111:"/",106:"*"}};C.PRINTABLE_KEYS[173]="-";var d,h;for(h in C.FUNCTION_KEYS)d=C.FUNCTION_KEYS[h].toLowerCase(),C[d]=parseInt(h,10);for(h in C.PRINTABLE_KEYS)d=C.PRINTABLE_KEYS[h].toLowerCase(),C[d]=parseInt(h,10);return L.mixin(C,C.MODIFIER_KEYS),L.mixin(C,C.PRINTABLE_KEYS),L.mixin(C,C.FUNCTION_KEYS),C.enter=C.return,C.escape=C.esc,C.del=C.delete,function(){for(var l=["cmd","ctrl","alt","shift"],o=Math.pow(2,l.length);o--;)C.KEY_MODS[o]=l.filter(function(s){return o&C.KEY_MODS[s]}).join("-")+"-"}(),C.KEY_MODS[0]="",C.KEY_MODS[-1]="input-",C}();L.mixin(M,T),M.default=M,M.keyCodeToString=function(C){var d=T[C];return typeof d!="string"&&(d=String.fromCharCode(C)),d.toLowerCase()}}),ace.define("ace/lib/event",["require","exports","module","ace/lib/keys","ace/lib/useragent"],function(n,M,G){"use strict";var L=n("./keys"),T=n("./useragent"),C=null,d=0,h;function l(){h=!1;try{document.createComment("").addEventListener("test",function(){},{get passive(){h={passive:!1}}})}catch(A){}}function o(){return h==null&&l(),h}function s(A,b,$){this.elem=A,this.type=b,this.callback=$}s.prototype.destroy=function(){r(this.elem,this.type,this.callback),this.elem=this.type=this.callback=void 0};var i=M.addListener=function(A,b,$,S){A.addEventListener(b,$,o()),S&&S.$toDestroy.push(new s(A,b,$))},r=M.removeListener=function(A,b,$){A.removeEventListener(b,$,o())};M.stopEvent=function(A){return M.stopPropagation(A),M.preventDefault(A),!1},M.stopPropagation=function(A){A.stopPropagation&&A.stopPropagation()},M.preventDefault=function(A){A.preventDefault&&A.preventDefault()},M.getButton=function(A){return A.type=="dblclick"?0:A.type=="contextmenu"||T.isMac&&A.ctrlKey&&!A.altKey&&!A.shiftKey?2:A.button},M.capture=function(A,b,$){var S=A&&A.ownerDocument||document;function v(w){b&&b(w),$&&$(w),r(S,"mousemove",b),r(S,"mouseup",v),r(S,"dragstart",v)}return i(S,"mousemove",b),i(S,"mouseup",v),i(S,"dragstart",v),v},M.addMouseWheelListener=function(A,b,$){i(A,"wheel",function(S){var v=.15,w=S.deltaX||0,O=S.deltaY||0;switch(S.deltaMode){case S.DOM_DELTA_PIXEL:S.wheelX=w*v,S.wheelY=O*v;break;case S.DOM_DELTA_LINE:var B=15;S.wheelX=w*B,S.wheelY=O*B;break;case S.DOM_DELTA_PAGE:var k=150;S.wheelX=w*k,S.wheelY=O*k;break}b(S)},$)},M.addMultiMouseDownListener=function(A,b,$,S,v){var w=0,O,B,k,_={2:"dblclick",3:"tripleclick",4:"quadclick"};function y(m){if(M.getButton(m)!==0?w=0:m.detail>1?(w++,w>4&&(w=1)):w=1,T.isIE){var E=Math.abs(m.clientX-O)>5||Math.abs(m.clientY-B)>5;(!k||E)&&(w=1),k&&clearTimeout(k),k=setTimeout(function(){k=null},b[w-1]||600),w==1&&(O=m.clientX,B=m.clientY)}if(m._clicks=w,$[S]("mousedown",m),w>4)w=0;else if(w>1)return $[S](_[w],m)}Array.isArray(A)||(A=[A]),A.forEach(function(m){i(m,"mousedown",y,v)})};var a=function(A){return 0|(A.ctrlKey?1:0)|(A.altKey?2:0)|(A.shiftKey?4:0)|(A.metaKey?8:0)};M.getModifierString=function(A){return L.KEY_MODS[a(A)]};function c(A,b,$){var S=a(b);if(!T.isMac&&C){if(b.getModifierState&&(b.getModifierState("OS")||b.getModifierState("Win"))&&(S|=8),C.altGr)if((3&S)!=3)C.altGr=0;else return;if($===18||$===17){var v="location"in b?b.location:b.keyLocation;if($===17&&v===1)C[$]==1&&(d=b.timeStamp);else if($===18&&S===3&&v===2){var w=b.timeStamp-d;w<50&&(C.altGr=!0)}}}if($ in L.MODIFIER_KEYS&&($=-1),!S&&$===13){var v="location"in b?b.location:b.keyLocation;if(v===3&&(A(b,S,-$),b.defaultPrevented))return}if(T.isChromeOS&&S&8){if(A(b,S,$),b.defaultPrevented)return;S&=-9}return!S&&!($ in L.FUNCTION_KEYS)&&!($ in L.PRINTABLE_KEYS)?!1:A(b,S,$)}M.addCommandKeyListener=function(A,b,$){if(T.isOldGecko||T.isOpera&&!("KeyboardEvent"in window)){var S=null;i(A,"keydown",function(w){S=w.keyCode},$),i(A,"keypress",function(w){return c(b,w,S)},$)}else{var v=null;i(A,"keydown",function(w){C[w.keyCode]=(C[w.keyCode]||0)+1;var O=c(b,w,w.keyCode);return v=w.defaultPrevented,O},$),i(A,"keypress",function(w){v&&(w.ctrlKey||w.altKey||w.shiftKey||w.metaKey)&&(M.stopEvent(w),v=null)},$),i(A,"keyup",function(w){C[w.keyCode]=null},$),C||(p(),i(window,"focus",p))}};function p(){C=Object.create(null)}if(typeof window=="object"&&window.postMessage&&!T.isOldIE){var g=1;M.nextTick=function(A,b){b=b||window;var $="zero-timeout-message-"+g++,S=function(v){v.data==$&&(M.stopPropagation(v),r(b,"message",S),A())};i(b,"message",S),b.postMessage($,"*")}}M.$idleBlocked=!1,M.onIdle=function(A,b){return setTimeout(function $(){M.$idleBlocked?setTimeout($,100):A()},b)},M.$idleBlockId=null,M.blockIdle=function(A){M.$idleBlockId&&clearTimeout(M.$idleBlockId),M.$idleBlocked=!0,M.$idleBlockId=setTimeout(function(){M.$idleBlocked=!1},A||100)},M.nextFrame=typeof window=="object"&&(window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame||window.oRequestAnimationFrame),M.nextFrame?M.nextFrame=M.nextFrame.bind(window):M.nextFrame=function(A){setTimeout(A,17)}}),ace.define("ace/clipboard",["require","exports","module"],function(n,M,G){"use strict";var L;G.exports={lineMode:!1,pasteCancelled:function(){return L&&L>Date.now()-50?!0:L=!1},cancel:function(){L=Date.now()}}}),ace.define("ace/keyboard/textinput",["require","exports","module","ace/lib/event","ace/config","ace/lib/useragent","ace/lib/dom","ace/lib/lang","ace/clipboard","ace/lib/keys"],function(n,M,G){"use strict";var L=n("../lib/event"),T=n("../config").nls,C=n("../lib/useragent"),d=n("../lib/dom"),h=n("../lib/lang"),l=n("../clipboard"),o=C.isChrome<18,s=C.isIE,i=C.isChrome>63,r=400,a=n("../lib/keys"),c=a.KEY_MODS,p=C.isIOS,g=p?/\s/:/\n/,A=C.isMobile,b=function($,S){var v=d.createElement("textarea");v.className="ace_text-input",v.setAttribute("wrap","off"),v.setAttribute("autocorrect","off"),v.setAttribute("autocapitalize","off"),v.setAttribute("spellcheck",!1),v.style.opacity="0",$.insertBefore(v,$.firstChild);var w=!1,O=!1,B=!1,k=!1,_="";A||(v.style.fontSize="1px");var y=!1,m=!1,E="",I=0,N=0,W=0,z=Number.MAX_SAFE_INTEGER,U=Number.MIN_SAFE_INTEGER,j=0;try{var q=document.activeElement===v}catch(a0){}this.setNumberOfExtraLines=function(a0){if(z=Number.MAX_SAFE_INTEGER,U=Number.MIN_SAFE_INTEGER,a0<0){j=0;return}j=a0},this.setAriaOptions=function(a0){if(a0.activeDescendant?(v.setAttribute("aria-haspopup","true"),v.setAttribute("aria-autocomplete",a0.inline?"both":"list"),v.setAttribute("aria-activedescendant",a0.activeDescendant)):(v.setAttribute("aria-haspopup","false"),v.setAttribute("aria-autocomplete","both"),v.removeAttribute("aria-activedescendant")),a0.role&&v.setAttribute("role",a0.role),a0.setLabel&&(v.setAttribute("aria-roledescription",T("editor")),S.session)){var x0=S.session.selection.cursor.row;v.setAttribute("aria-label",T("Cursor at row $0",[x0+1]))}},this.setAriaOptions({role:"textbox"}),L.addListener(v,"blur",function(a0){m||(S.onBlur(a0),q=!1)},S),L.addListener(v,"focus",function(a0){if(!m){if(q=!0,C.isEdge)try{if(!document.hasFocus())return}catch(x0){}S.onFocus(a0),C.isEdge?setTimeout(t0):t0()}},S),this.$focusScroll=!1,this.focus=function(){if(this.setAriaOptions({setLabel:S.renderer.enableKeyboardAccessibility}),_||i||this.$focusScroll=="browser")return v.focus({preventScroll:!0});var a0=v.style.top;v.style.position="fixed",v.style.top="0px";try{var x0=v.getBoundingClientRect().top!=0}catch(D0){return}var _0=[];if(x0)for(var F0=v.parentElement;F0&&F0.nodeType==1;)_0.push(F0),F0.setAttribute("ace_nocontext",!0),!F0.parentElement&&F0.getRootNode?F0=F0.getRootNode().host:F0=F0.parentElement;v.focus({preventScroll:!0}),x0&&_0.forEach(function(D0){D0.removeAttribute("ace_nocontext")}),setTimeout(function(){v.style.position="",v.style.top=="0px"&&(v.style.top=a0)},0)},this.blur=function(){v.blur()},this.isFocused=function(){return q},S.on("beforeEndOperation",function(){var a0=S.curOp,x0=a0&&a0.command&&a0.command.name;if(x0!="insertstring"){var _0=x0&&(a0.docChanged||a0.selectionChanged);B&&_0&&(E=v.value="",m5()),t0()}});var Y=function(a0,x0){for(var _0=x0,F0=1;F0<=a0-z&&F0<2*j+1;F0++)_0+=S.session.getLine(a0-F0).length+1;return _0},t0=p?function(a0){if(!(!q||w&&!a0||k)){a0||(a0="");var x0=` - ab`+a0+`cde fg -`;x0!=v.value&&(v.value=E=x0);var _0=4,F0=4+(a0.length||(S.selection.isEmpty()?0:1));(I!=_0||N!=F0)&&v.setSelectionRange(_0,F0),I=_0,N=F0}}:function(){if(!(B||k)&&!(!q&&!m0)){B=!0;var a0=0,x0=0,_0="";if(S.session){var F0=S.selection,D0=F0.getRange(),t5=F0.cursor.row;t5===U+1?(z=U+1,U=z+2*j):t5===z-1?(U=z-1,z=U-2*j):(t5U+1)&&(z=t5>j?t5-j:0,U=t5>j?t5+j:2*j);for(var r5=[],n5=z;n5<=U;n5++)r5.push(S.session.getLine(n5));if(_0=r5.join(` -`),a0=Y(D0.start.row,D0.start.column),x0=Y(D0.end.row,D0.end.column),D0.start.rowU){var V0=S.session.getLine(U+1);x0=D0.end.row>U+1?V0.length:D0.end.column,x0+=_0.length+1,_0=_0+` -`+V0}else A&&t5>0&&(_0=` -`+_0,x0+=1,a0+=1);_0.length>r&&(a0=E.length&&a0.value===E&&E&&a0.selectionEnd!==N},u0=function(a0){B||(w?w=!1:n0(v)?(S.selectAll(),t0()):A&&v.selectionStart!=I&&t0())},h0=null;this.setInputHandler=function(a0){h0=a0},this.getInputHandler=function(){return h0};var m0=!1,p0=function(a0,x0){if(m0&&(m0=!1),O)return t0(),a0&&S.onPaste(a0),O=!1,"";for(var _0=v.selectionStart,F0=v.selectionEnd,D0=I,t5=E.length-N,r5=a0,n5=a0.length-_0,Z0=a0.length-F0,V0=0;D0>0&&E[V0]==a0[V0];)V0++,D0--;for(r5=r5.slice(V0),V0=1;t5>0&&E.length-V0>I-1&&E[E.length-V0]==a0[a0.length-V0];)V0++,t5--;n5-=V0-1,Z0-=V0-1;var d5=r5.length-V0+1;if(d5<0&&(D0=-d5,d5=0),r5=r5.slice(0,d5),!x0&&!r5&&!n5&&!D0&&!t5&&!Z0)return"";k=!0;var P5=!1;return C.isAndroid&&r5==". "&&(r5=" ",P5=!0),r5&&!D0&&!t5&&!n5&&!Z0||y?S.onTextInput(r5):S.onTextInput(r5,{extendLeft:D0,extendRight:t5,restoreStart:n5,restoreEnd:Z0}),k=!1,E=a0,I=_0,N=F0,W=Z0,P5?` -`:r5},b0=function(a0){if(B)return Y0();if(a0&&a0.inputType){if(a0.inputType=="historyUndo")return S.execCommand("undo");if(a0.inputType=="historyRedo")return S.execCommand("redo")}var x0=v.value,_0=p0(x0,!0);(x0.length>r+100||g.test(_0)||A&&I<1&&I==N)&&t0()},k0=function(a0,x0,_0){var F0=a0.clipboardData||window.clipboardData;if(!(!F0||o)){var D0=s||_0?"Text":"text/plain";try{return x0?F0.setData(D0,x0)!==!1:F0.getData(D0)}catch(t5){if(!_0)return k0(t5,x0,!0)}}},w0=function(a0,x0){var _0=S.getCopyText();if(!_0)return L.preventDefault(a0);k0(a0,_0)?(p&&(t0(_0),w=_0,setTimeout(function(){w=!1},10)),x0?S.onCut():S.onCopy(),L.preventDefault(a0)):(w=!0,v.value=_0,v.select(),setTimeout(function(){w=!1,t0(),x0?S.onCut():S.onCopy()}))},H0=function(a0){w0(a0,!0)},N0=function(a0){w0(a0,!1)},z0=function(a0){var x0=k0(a0);l.pasteCancelled()||(typeof x0=="string"?(x0&&S.onPaste(x0,a0),C.isIE&&setTimeout(t0),L.preventDefault(a0)):(v.value="",O=!0))};L.addCommandKeyListener(v,S.onCommandKey.bind(S),S),L.addListener(v,"select",u0,S),L.addListener(v,"input",b0,S),L.addListener(v,"cut",H0,S),L.addListener(v,"copy",N0,S),L.addListener(v,"paste",z0,S),(!("oncut"in v)||!("oncopy"in v)||!("onpaste"in v))&&L.addListener($,"keydown",function(a0){if(!(C.isMac&&!a0.metaKey||!a0.ctrlKey))switch(a0.keyCode){case 67:N0(a0);break;case 86:z0(a0);break;case 88:H0(a0);break}},S);var M0=function(a0){if(!(B||!S.onCompositionStart||S.$readOnly)&&(B={},!y)){a0.data&&(B.useTextareaForIME=!1),setTimeout(Y0,0),S._signal("compositionStart"),S.on("mousedown",k5);var x0=S.getSelectionRange();x0.end.row=x0.start.row,x0.end.column=x0.start.column,B.markerRange=x0,B.selectionStart=I,S.onCompositionStart(B),B.useTextareaForIME?(E=v.value="",I=0,N=0):(v.msGetInputContext&&(B.context=v.msGetInputContext()),v.getInputContext&&(B.context=v.getInputContext()))}},Y0=function(){if(!(!B||!S.onCompositionUpdate||S.$readOnly)){if(y)return k5();if(B.useTextareaForIME)S.onCompositionUpdate(v.value);else{var a0=v.value;p0(a0),B.markerRange&&(B.context&&(B.markerRange.start.column=B.selectionStart=B.context.compositionStartOffset),B.markerRange.end.column=B.markerRange.start.column+N-B.selectionStart+W)}}},m5=function(a0){!S.onCompositionEnd||S.$readOnly||(B=!1,S.onCompositionEnd(),S.off("mousedown",k5),a0&&b0())};function k5(){m=!0,v.blur(),v.focus(),m=!1}var f5=h.delayedCall(Y0,50).schedule.bind(null,null);function j0(a0){a0.keyCode==27&&v.value.lengthN&&E[Z0]==` -`?V0=a.end:n5N&&E.slice(0,Z0).split(` -`).length>2?V0=a.down:Z0>N&&E[Z0-1]==" "?(V0=a.right,d5=c.option):(Z0>N||Z0==N&&N!=I&&n5==Z0)&&(V0=a.right),n5!==Z0&&(d5|=c.shift),V0){var P5=x0.onCommandKey({},d5,V0);if(!P5&&x0.commands){V0=a.keyCodeToString(V0);var f9=x0.commands.findKeyCommand(d5,V0);f9&&x0.execCommand(f9)}I=n5,N=Z0,t0("")}}};document.addEventListener("selectionchange",t5),x0.on("destroy",function(){document.removeEventListener("selectionchange",t5)})}this.destroy=function(){v.parentElement&&v.parentElement.removeChild(v)}};M.TextInput=b,M.$setUserAgentForTests=function($,S){A=$,p=S}}),ace.define("ace/mouse/default_handlers",["require","exports","module","ace/lib/useragent"],function(n,M,G){"use strict";var L=n("../lib/useragent"),T=0,C=550,d=function(){function o(s){s.$clickSelection=null;var i=s.editor;i.setDefaultHandler("mousedown",this.onMouseDown.bind(s)),i.setDefaultHandler("dblclick",this.onDoubleClick.bind(s)),i.setDefaultHandler("tripleclick",this.onTripleClick.bind(s)),i.setDefaultHandler("quadclick",this.onQuadClick.bind(s)),i.setDefaultHandler("mousewheel",this.onMouseWheel.bind(s));var r=["select","startSelect","selectEnd","selectAllEnd","selectByWordsEnd","selectByLinesEnd","dragWait","dragWaitEnd","focusWait"];r.forEach(function(a){s[a]=this[a]},this),s.selectByLines=this.extendSelectionBy.bind(s,"getLineRange"),s.selectByWords=this.extendSelectionBy.bind(s,"getWordRange")}return o.prototype.onMouseDown=function(s){var i=s.inSelection(),r=s.getDocumentPosition();this.mousedownEvent=s;var a=this.editor,c=s.getButton();if(c!==0){var p=a.getSelectionRange(),g=p.isEmpty();(g||c==1)&&a.selection.moveToPosition(r),c==2&&(a.textInput.onContextMenu(s.domEvent),L.isMozilla||s.preventDefault());return}if(this.mousedownEvent.time=Date.now(),i&&!a.isFocused()&&(a.focus(),this.$focusTimeout&&!this.$clickSelection&&!a.inMultiSelectMode)){this.setState("focusWait"),this.captureMouse(s);return}return this.captureMouse(s),this.startSelect(r,s.domEvent._clicks>1),s.preventDefault()},o.prototype.startSelect=function(s,i){s=s||this.editor.renderer.screenToTextCoordinates(this.x,this.y);var r=this.editor;this.mousedownEvent&&(this.mousedownEvent.getShiftKey()?r.selection.selectToPosition(s):i||r.selection.moveToPosition(s),i||this.select(),r.setStyle("ace_selecting"),this.setState("select"))},o.prototype.select=function(){var s,i=this.editor,r=i.renderer.screenToTextCoordinates(this.x,this.y);if(this.$clickSelection){var a=this.$clickSelection.comparePoint(r);if(a==-1)s=this.$clickSelection.end;else if(a==1)s=this.$clickSelection.start;else{var c=l(this.$clickSelection,r);r=c.cursor,s=c.anchor}i.selection.setSelectionAnchor(s.row,s.column)}i.selection.selectToPosition(r),i.renderer.scrollCursorIntoView()},o.prototype.extendSelectionBy=function(s){var i,r=this.editor,a=r.renderer.screenToTextCoordinates(this.x,this.y),c=r.selection[s](a.row,a.column);if(this.$clickSelection){var p=this.$clickSelection.comparePoint(c.start),g=this.$clickSelection.comparePoint(c.end);if(p==-1&&g<=0)i=this.$clickSelection.end,(c.end.row!=a.row||c.end.column!=a.column)&&(a=c.start);else if(g==1&&p>=0)i=this.$clickSelection.start,(c.start.row!=a.row||c.start.column!=a.column)&&(a=c.end);else if(p==-1&&g==1)a=c.end,i=c.start;else{var A=l(this.$clickSelection,a);a=A.cursor,i=A.anchor}r.selection.setSelectionAnchor(i.row,i.column)}r.selection.selectToPosition(a),r.renderer.scrollCursorIntoView()},o.prototype.selectByLinesEnd=function(){this.$clickSelection=null,this.editor.unsetStyle("ace_selecting")},o.prototype.focusWait=function(){var s=h(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y),i=Date.now();(s>T||i-this.mousedownEvent.time>this.$focusTimeout)&&this.startSelect(this.mousedownEvent.getDocumentPosition())},o.prototype.onDoubleClick=function(s){var i=s.getDocumentPosition(),r=this.editor,a=r.session,c=a.getBracketRange(i);c?(c.isEmpty()&&(c.start.column--,c.end.column++),this.setState("select")):(c=r.selection.getWordRange(i.row,i.column),this.setState("selectByWords")),this.$clickSelection=c,this.select()},o.prototype.onTripleClick=function(s){var i=s.getDocumentPosition(),r=this.editor;this.setState("selectByLines");var a=r.getSelectionRange();a.isMultiLine()&&a.contains(i.row,i.column)?(this.$clickSelection=r.selection.getLineRange(a.start.row),this.$clickSelection.end=r.selection.getLineRange(a.end.row).end):this.$clickSelection=r.selection.getLineRange(i.row),this.select()},o.prototype.onQuadClick=function(s){var i=this.editor;i.selectAll(),this.$clickSelection=i.getSelectionRange(),this.setState("selectAll")},o.prototype.onMouseWheel=function(s){if(!s.getAccelKey()){s.getShiftKey()&&s.wheelY&&!s.wheelX&&(s.wheelX=s.wheelY,s.wheelY=0);var i=this.editor;this.$lastScroll||(this.$lastScroll={t:0,vx:0,vy:0,allowed:0});var r=this.$lastScroll,a=s.domEvent.timeStamp,c=a-r.t,p=c?s.wheelX/c:r.vx,g=c?s.wheelY/c:r.vy;c=1&&i.renderer.isScrollableBy(s.wheelX*s.speed,0)&&(b=!0),A<=1&&i.renderer.isScrollableBy(0,s.wheelY*s.speed)&&(b=!0),b)r.allowed=a;else if(a-r.allowed=r.length&&(r=void 0),{value:r&&r[p++],done:!r}}};throw new TypeError(a?"Object is not iterable.":"Symbol.iterator is not defined.")},C=n("./lib/dom"),d=n("./range").Range,h="ace_tooltip",l=function(){function r(a){this.isOpen=!1,this.$element=null,this.$parentNode=a}return r.prototype.$init=function(){return this.$element=C.createElement("div"),this.$element.className=h,this.$element.style.display="none",this.$parentNode.appendChild(this.$element),this.$element},r.prototype.getElement=function(){return this.$element||this.$init()},r.prototype.setText=function(a){this.getElement().textContent=a},r.prototype.setHtml=function(a){this.getElement().innerHTML=a},r.prototype.setPosition=function(a,c){this.getElement().style.left=a+"px",this.getElement().style.top=c+"px"},r.prototype.setClassName=function(a){C.addCssClass(this.getElement(),a)},r.prototype.setTheme=function(a){this.$element.className=h+" "+(a.isDark?"ace_dark ":"")+(a.cssClass||"")},r.prototype.show=function(a,c,p){a!=null&&this.setText(a),c!=null&&p!=null&&this.setPosition(c,p),this.isOpen||(this.getElement().style.display="block",this.isOpen=!0)},r.prototype.hide=function(){this.isOpen&&(this.getElement().style.display="none",this.getElement().className=h,this.isOpen=!1)},r.prototype.getHeight=function(){return this.getElement().offsetHeight},r.prototype.getWidth=function(){return this.getElement().offsetWidth},r.prototype.destroy=function(){this.isOpen=!1,this.$element&&this.$element.parentNode&&this.$element.parentNode.removeChild(this.$element)},r}(),o=function(){function r(){this.popups=[]}return r.prototype.addPopup=function(a){this.popups.push(a),this.updatePopups()},r.prototype.removePopup=function(a){var c=this.popups.indexOf(a);c!==-1&&(this.popups.splice(c,1),this.updatePopups())},r.prototype.updatePopups=function(){var a,c,p,g;this.popups.sort(function(k,_){return _.priority-k.priority});var A=[];try{for(var b=T(this.popups),$=b.next();!$.done;$=b.next()){var S=$.value,v=!0;try{for(var w=(p=void 0,T(A)),O=w.next();!O.done;O=w.next()){var B=O.value;if(this.doPopupsOverlap(B,S)){v=!1;break}}}catch(k){p={error:k}}finally{try{O&&!O.done&&(g=w.return)&&g.call(w)}finally{if(p)throw p.error}}v?A.push(S):S.hide()}}catch(k){a={error:k}}finally{try{$&&!$.done&&(c=b.return)&&c.call(b)}finally{if(a)throw a.error}}},r.prototype.doPopupsOverlap=function(a,c){var p=a.getElement().getBoundingClientRect(),g=c.getElement().getBoundingClientRect();return p.leftg.left&&p.topg.top},r}(),s=new o;M.popupManager=s,M.Tooltip=l;var i=function(r){L(a,r);function a(c){c===void 0&&(c=document.body);var p=r.call(this,c)||this;p.timeout=void 0,p.lastT=0,p.idleTime=350,p.lastEvent=void 0,p.onMouseOut=p.onMouseOut.bind(p),p.onMouseMove=p.onMouseMove.bind(p),p.waitForHover=p.waitForHover.bind(p),p.hide=p.hide.bind(p);var g=p.getElement();return g.style.whiteSpace="pre-wrap",g.style.pointerEvents="auto",g.addEventListener("mouseout",p.onMouseOut),g.tabIndex=-1,g.addEventListener("blur",function(){g.contains(document.activeElement)||this.hide()}.bind(p)),p}return a.prototype.addToEditor=function(c){c.on("mousemove",this.onMouseMove),c.on("mousedown",this.hide),c.renderer.getMouseEventTarget().addEventListener("mouseout",this.onMouseOut,!0)},a.prototype.removeFromEditor=function(c){c.off("mousemove",this.onMouseMove),c.off("mousedown",this.hide),c.renderer.getMouseEventTarget().removeEventListener("mouseout",this.onMouseOut,!0),this.timeout&&(clearTimeout(this.timeout),this.timeout=null)},a.prototype.onMouseMove=function(c,p){this.lastEvent=c,this.lastT=Date.now();var g=p.$mouseHandler.isMousePressed;if(this.isOpen){var A=this.lastEvent&&this.lastEvent.getDocumentPosition();(!this.range||!this.range.contains(A.row,A.column)||g||this.isOutsideOfText(this.lastEvent))&&this.hide()}this.timeout||g||(this.lastEvent=c,this.timeout=setTimeout(this.waitForHover,this.idleTime))},a.prototype.waitForHover=function(){this.timeout&&clearTimeout(this.timeout);var c=Date.now()-this.lastT;if(this.idleTime-c>10){this.timeout=setTimeout(this.waitForHover,this.idleTime-c);return}this.timeout=null,this.lastEvent&&!this.isOutsideOfText(this.lastEvent)&&this.$gatherData(this.lastEvent,this.lastEvent.editor)},a.prototype.isOutsideOfText=function(c){var p=c.editor,g=c.getDocumentPosition(),A=p.session.getLine(g.row);if(g.column==A.length){var b=p.renderer.pixelToScreenCoordinates(c.clientX,c.clientY),$=p.session.documentToScreenPosition(g.row,g.column);if($.column!=b.column||$.row!=b.row)return!0}return!1},a.prototype.setDataProvider=function(c){this.$gatherData=c},a.prototype.showForRange=function(c,p,g,A){if(!(A&&A!=this.lastEvent)&&!(this.isOpen&&document.activeElement==this.getElement())){var b=c.renderer;this.isOpen||(s.addPopup(this),this.$registerCloseEvents(),this.setTheme(b.theme)),this.isOpen=!0,this.addMarker(p,c.session),this.range=d.fromPoints(p.start,p.end);var $=this.getElement();$.innerHTML="",$.appendChild(g),$.style.display="block";var S=b.textToScreenCoordinates(p.start.row,p.start.column),v=$.clientHeight,w=b.scroller.getBoundingClientRect(),O=!0;S.pageY-v<0&&(O=!1),O?S.pageY-=v:S.pageY+=b.lineHeight,$.style.maxWidth=w.width-(S.pageX-w.left)+"px",this.setPosition(S.pageX,S.pageY)}},a.prototype.addMarker=function(c,p){this.marker&&this.$markerSession.removeMarker(this.marker),this.$markerSession=p,this.marker=p&&p.addMarker(c,"ace_highlight-marker","text")},a.prototype.hide=function(c){!c&&document.activeElement==this.getElement()||c&&c.target&&(c.type!="keydown"||c.ctrlKey||c.metaKey)&&this.$element.contains(c.target)||(this.lastEvent=null,this.timeout&&clearTimeout(this.timeout),this.timeout=null,this.addMarker(null),this.isOpen&&(this.$removeCloseEvents(),this.getElement().style.display="none",this.isOpen=!1,s.removePopup(this)))},a.prototype.$registerCloseEvents=function(){window.addEventListener("keydown",this.hide,!0),window.addEventListener("mousewheel",this.hide,!0),window.addEventListener("mousedown",this.hide,!0)},a.prototype.$removeCloseEvents=function(){window.removeEventListener("keydown",this.hide,!0),window.removeEventListener("mousewheel",this.hide,!0),window.removeEventListener("mousedown",this.hide,!0)},a.prototype.onMouseOut=function(c){this.timeout&&(clearTimeout(this.timeout),this.timeout=null),this.lastEvent=null,this.isOpen&&(!c.relatedTarget||c.relatedTarget==this.getElement()||c&&c.currentTarget.contains(c.relatedTarget)||c.relatedTarget.classList.contains("ace_content")||this.hide())},a}(l);M.HoverTooltip=i}),ace.define("ace/mouse/default_gutter_handler",["require","exports","module","ace/lib/dom","ace/lib/event","ace/tooltip","ace/config"],function(n,M,G){"use strict";var L=this&&this.__extends||function(){var i=function(r,a){return i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(c,p){c.__proto__=p}||function(c,p){for(var g in p)Object.prototype.hasOwnProperty.call(p,g)&&(c[g]=p[g])},i(r,a)};return function(r,a){if(typeof a!="function"&&a!==null)throw new TypeError("Class extends value "+String(a)+" is not a constructor or null");i(r,a);function c(){this.constructor=r}r.prototype=a===null?Object.create(a):(c.prototype=a.prototype,new c)}}(),T=this&&this.__values||function(i){var r=typeof Symbol=="function"&&Symbol.iterator,a=r&&i[r],c=0;if(a)return a.call(i);if(i&&typeof i.length=="number")return{next:function(){return i&&c>=i.length&&(i=void 0),{value:i&&i[c++],done:!i}}};throw new TypeError(r?"Object is not iterable.":"Symbol.iterator is not defined.")},C=n("../lib/dom"),d=n("../lib/event"),h=n("../tooltip").Tooltip,l=n("../config").nls;function o(i){var r=i.editor,a=r.renderer.$gutterLayer,c=new s(r);i.editor.setDefaultHandler("guttermousedown",function(S){if(!(!r.isFocused()||S.getButton()!=0)){var v=a.getRegion(S);if(v!="foldWidgets"){var w=S.getDocumentPosition().row,O=r.session.selection;if(S.getShiftKey())O.selectTo(w,0);else{if(S.domEvent.detail==2)return r.selectAll(),S.preventDefault();i.$clickSelection=r.selection.getLineRange(w)}return i.setState("selectByLines"),i.captureMouse(S),S.preventDefault()}}});var p,g;function A(){var S=g.getDocumentPosition().row,v=r.session.getLength();if(S==v){var w=r.renderer.pixelToScreenCoordinates(0,g.y).row,O=g.$pos;if(w>r.session.documentToScreenRow(O.row,O.column))return b()}if(c.showTooltip(S),!!c.isOpen)if(r.on("mousewheel",b),i.$tooltipFollowsMouse)$(g);else{var B=g.getGutterRow(),k=a.$lines.get(B);if(k){var _=k.element.querySelector(".ace_gutter_annotation"),y=_.getBoundingClientRect(),m=c.getElement().style;m.left=y.right+"px",m.top=y.bottom+"px"}else $(g)}}function b(){p&&(p=clearTimeout(p)),c.isOpen&&(c.hideTooltip(),r.off("mousewheel",b))}function $(S){c.setPosition(S.x,S.y)}i.editor.setDefaultHandler("guttermousemove",function(S){var v=S.domEvent.target||S.domEvent.srcElement;if(C.hasCssClass(v,"ace_fold-widget"))return b();c.isOpen&&i.$tooltipFollowsMouse&&$(S),g=S,!p&&(p=setTimeout(function(){p=null,g&&!i.isMousePressed?A():b()},50))}),d.addListener(r.renderer.$gutter,"mouseout",function(S){g=null,!(!c.isOpen||p)&&(p=setTimeout(function(){p=null,b()},50))},r),r.on("changeSession",b),r.on("input",b)}M.GutterHandler=o;var s=function(i){L(r,i);function r(a){var c=i.call(this,a.container)||this;return c.editor=a,c}return r.prototype.setPosition=function(a,c){var p=window.innerWidth||document.documentElement.clientWidth,g=window.innerHeight||document.documentElement.clientHeight,A=this.getWidth(),b=this.getHeight();a+=15,c+=15,a+A>p&&(a-=a+A-p),c+b>g&&(c-=20+b),h.prototype.setPosition.call(this,a,c)},Object.defineProperty(r,"annotationLabels",{get:function(){return{error:{singular:l("error"),plural:l("errors")},warning:{singular:l("warning"),plural:l("warnings")},info:{singular:l("information message"),plural:l("information messages")}}},enumerable:!1,configurable:!0}),r.prototype.showTooltip=function(a){var c=this.editor.renderer.$gutterLayer,p=c.$annotations[a],g;p?g={text:Array.from(p.text),type:Array.from(p.type)}:g={text:[],type:[]};var A=c.session.getFoldLine(a);if(A&&c.$showFoldedAnnotations){for(var b={error:[],warning:[],info:[]},$,S=a+1;S<=A.end.row;S++)if(c.$annotations[S])for(var v=0;v ").concat(g.text[S]);B[g.type[S].replace("_fold","")].push(_)}var y=[].concat(B.error,B.warning,B.info).join("
");this.setHtml(y),this.$element.setAttribute("aria-live","polite"),this.isOpen||(this.setTheme(this.editor.renderer.theme),this.setClassName("ace_gutter-tooltip")),this.show(),this.editor._signal("showGutterTooltip",this)},r.prototype.hideTooltip=function(){this.$element.removeAttribute("aria-live"),this.hide(),this.editor._signal("hideGutterTooltip",this)},r.annotationsToSummaryString=function(a){var c,p,g=[],A=["error","warning","info"];try{for(var b=T(A),$=b.next();!$.done;$=b.next()){var S=$.value;if(a[S].length){var v=a[S].length===1?r.annotationLabels[S].singular:r.annotationLabels[S].plural;g.push("".concat(a[S].length," ").concat(v))}}}catch(w){c={error:w}}finally{try{$&&!$.done&&(p=b.return)&&p.call(b)}finally{if(c)throw c.error}}return g.join(", ")},r}(h);M.GutterTooltip=s}),ace.define("ace/mouse/mouse_event",["require","exports","module","ace/lib/event","ace/lib/useragent"],function(n,M,G){"use strict";var L=n("../lib/event"),T=n("../lib/useragent"),C=function(){function d(h,l){this.domEvent=h,this.editor=l,this.x=this.clientX=h.clientX,this.y=this.clientY=h.clientY,this.$pos=null,this.$inSelection=null,this.propagationStopped=!1,this.defaultPrevented=!1}return d.prototype.stopPropagation=function(){L.stopPropagation(this.domEvent),this.propagationStopped=!0},d.prototype.preventDefault=function(){L.preventDefault(this.domEvent),this.defaultPrevented=!0},d.prototype.stop=function(){this.stopPropagation(),this.preventDefault()},d.prototype.getDocumentPosition=function(){return this.$pos?this.$pos:(this.$pos=this.editor.renderer.screenToTextCoordinates(this.clientX,this.clientY),this.$pos)},d.prototype.getGutterRow=function(){var h=this.getDocumentPosition().row,l=this.editor.session.documentToScreenRow(h,0),o=this.editor.session.documentToScreenRow(this.editor.renderer.$gutterLayer.$lines.get(0).row,0);return l-o},d.prototype.inSelection=function(){if(this.$inSelection!==null)return this.$inSelection;var h=this.editor,l=h.getSelectionRange();if(l.isEmpty())this.$inSelection=!1;else{var o=this.getDocumentPosition();this.$inSelection=l.contains(o.row,o.column)}return this.$inSelection},d.prototype.getButton=function(){return L.getButton(this.domEvent)},d.prototype.getShiftKey=function(){return this.domEvent.shiftKey},d.prototype.getAccelKey=function(){return T.isMac?this.domEvent.metaKey:this.domEvent.ctrlKey},d}();M.MouseEvent=C}),ace.define("ace/mouse/dragdrop_handler",["require","exports","module","ace/lib/dom","ace/lib/event","ace/lib/useragent"],function(n,M,G){"use strict";var L=n("../lib/dom"),T=n("../lib/event"),C=n("../lib/useragent"),d=200,h=200,l=5;function o(i){var r=i.editor,a=L.createElement("div");a.style.cssText="top:-100px;position:absolute;z-index:2147483647;opacity:0.5",a.textContent="\xA0";var c=["dragWait","dragWaitEnd","startDrag","dragReadyEnd","onMouseDrag"];c.forEach(function(Y){i[Y]=this[Y]},this),r.on("mousedown",this.onMouseDown.bind(i));var p=r.container,g,A,b,$,S,v,w=0,O,B,k,_,y;this.onDragStart=function(Y){if(this.cancelDrag||!p.draggable){var t0=this;return setTimeout(function(){t0.startSelect(),t0.captureMouse(Y)},0),Y.preventDefault()}S=r.getSelectionRange();var n0=Y.dataTransfer;n0.effectAllowed=r.getReadOnly()?"copy":"copyMove",r.container.appendChild(a),n0.setDragImage&&n0.setDragImage(a,0,0),setTimeout(function(){r.container.removeChild(a)}),n0.clearData(),n0.setData("Text",r.session.getTextRange()),B=!0,this.setState("drag")},this.onDragEnd=function(Y){if(p.draggable=!1,B=!1,this.setState(null),!r.getReadOnly()){var t0=Y.dataTransfer.dropEffect;!O&&t0=="move"&&r.session.remove(r.getSelectionRange()),r.$resetCursorStyle()}this.editor.unsetStyle("ace_dragging"),this.editor.renderer.setCursorStyle("")},this.onDragEnter=function(Y){if(!(r.getReadOnly()||!j(Y.dataTransfer)))return A=Y.clientX,b=Y.clientY,g||N(),w++,Y.dataTransfer.dropEffect=O=q(Y),T.preventDefault(Y)},this.onDragOver=function(Y){if(!(r.getReadOnly()||!j(Y.dataTransfer)))return A=Y.clientX,b=Y.clientY,g||(N(),w++),z!==null&&(z=null),Y.dataTransfer.dropEffect=O=q(Y),T.preventDefault(Y)},this.onDragLeave=function(Y){if(w--,w<=0&&g)return W(),O=null,T.preventDefault(Y)},this.onDrop=function(Y){if(v){var t0=Y.dataTransfer;if(B)switch(O){case"move":S.contains(v.row,v.column)?S={start:v,end:v}:S=r.moveText(S,v);break;case"copy":S=r.moveText(S,v,!0);break}else{var n0=t0.getData("Text");S={start:v,end:r.session.insert(v,n0)},r.focus(),O=null}return W(),T.preventDefault(Y)}},T.addListener(p,"dragstart",this.onDragStart.bind(i),r),T.addListener(p,"dragend",this.onDragEnd.bind(i),r),T.addListener(p,"dragenter",this.onDragEnter.bind(i),r),T.addListener(p,"dragover",this.onDragOver.bind(i),r),T.addListener(p,"dragleave",this.onDragLeave.bind(i),r),T.addListener(p,"drop",this.onDrop.bind(i),r);function m(Y,t0){var n0=Date.now(),u0=!t0||Y.row!=t0.row,h0=!t0||Y.column!=t0.column;if(!_||u0||h0)r.moveCursorToPosition(Y),_=n0,y={x:A,y:b};else{var m0=s(y.x,y.y,A,b);m0>l?_=null:n0-_>=h&&(r.renderer.scrollCursorIntoView(),_=null)}}function E(Y,t0){var n0=Date.now(),u0=r.renderer.layerConfig.lineHeight,h0=r.renderer.layerConfig.characterWidth,m0=r.renderer.scroller.getBoundingClientRect(),p0={x:{left:A-m0.left,right:m0.right-A},y:{top:b-m0.top,bottom:m0.bottom-b}},b0=Math.min(p0.x.left,p0.x.right),k0=Math.min(p0.y.top,p0.y.bottom),w0={row:Y.row,column:Y.column};b0/h0<=2&&(w0.column+=p0.x.left=d&&r.renderer.scrollCursorIntoView(w0):k=n0:k=null}function I(){var Y=v;v=r.renderer.screenToTextCoordinates(A,b),m(v,Y),E(v,Y)}function N(){S=r.selection.toOrientedRange(),g=r.session.addMarker(S,"ace_selection",r.getSelectionStyle()),r.clearSelection(),r.isFocused()&&r.renderer.$cursorLayer.setBlinking(!1),clearInterval($),I(),$=setInterval(I,20),w=0,T.addListener(document,"mousemove",U)}function W(){clearInterval($),r.session.removeMarker(g),g=null,r.selection.fromOrientedRange(S),r.isFocused()&&!B&&r.$resetCursorStyle(),S=null,v=null,w=0,k=null,_=null,T.removeListener(document,"mousemove",U)}var z=null;function U(){z==null&&(z=setTimeout(function(){z!=null&&g&&W()},20))}function j(Y){var t0=Y.types;return!t0||Array.prototype.some.call(t0,function(n0){return n0=="text/plain"||n0=="Text"})}function q(Y){var t0=["copy","copymove","all","uninitialized"],n0=["move","copymove","linkmove","all","uninitialized"],u0=C.isMac?Y.altKey:Y.ctrlKey,h0="uninitialized";try{h0=Y.dataTransfer.effectAllowed.toLowerCase()}catch(p0){}var m0="none";return u0&&t0.indexOf(h0)>=0?m0="copy":n0.indexOf(h0)>=0?m0="move":t0.indexOf(h0)>=0&&(m0="copy"),m0}}(function(){this.dragWait=function(){var i=Date.now()-this.mousedownEvent.time;i>this.editor.getDragDelay()&&this.startDrag()},this.dragWaitEnd=function(){var i=this.editor.container;i.draggable=!1,this.startSelect(this.mousedownEvent.getDocumentPosition()),this.selectEnd()},this.dragReadyEnd=function(i){this.editor.$resetCursorStyle(),this.editor.unsetStyle("ace_dragging"),this.editor.renderer.setCursorStyle(""),this.dragWaitEnd()},this.startDrag=function(){this.cancelDrag=!1;var i=this.editor,r=i.container;r.draggable=!0,i.renderer.$cursorLayer.setBlinking(!1),i.setStyle("ace_dragging");var a=C.isWin?"default":"move";i.renderer.setCursorStyle(a),this.setState("dragReady")},this.onMouseDrag=function(i){var r=this.editor.container;if(C.isIE&&this.state=="dragReady"){var a=s(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y);a>3&&r.dragDrop()}if(this.state==="dragWait"){var a=s(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y);a>0&&(r.draggable=!1,this.startSelect(this.mousedownEvent.getDocumentPosition()))}},this.onMouseDown=function(i){if(this.$dragEnabled){this.mousedownEvent=i;var r=this.editor,a=i.inSelection(),c=i.getButton(),p=i.domEvent.detail||1;if(p===1&&c===0&&a){if(i.editor.inMultiSelectMode&&(i.getAccelKey()||i.getShiftKey()))return;this.mousedownEvent.time=Date.now();var g=i.domEvent.target||i.domEvent.srcElement;if("unselectable"in g&&(g.unselectable="on"),r.getDragDelay()){if(C.isWebKit){this.cancelDrag=!0;var A=r.container;A.draggable=!0}this.setState("dragWait")}else this.startDrag();this.captureMouse(i,this.onMouseDrag.bind(this)),i.defaultPrevented=!0}}}}).call(o.prototype);function s(i,r,a,c){return Math.sqrt(Math.pow(a-i,2)+Math.pow(c-r,2))}M.DragdropHandler=o}),ace.define("ace/mouse/touch_handler",["require","exports","module","ace/mouse/mouse_event","ace/lib/event","ace/lib/dom"],function(n,M,G){"use strict";var L=n("./mouse_event").MouseEvent,T=n("../lib/event"),C=n("../lib/dom");M.addTouchListeners=function(d,h){var l="scroll",o,s,i,r,a,c,p=0,g,A=0,b=0,$=0,S,v;function w(){var m=window.navigator&&window.navigator.clipboard,E=!1,I=function(){var W=h.getCopyText(),z=h.session.getUndoManager().hasUndo();v.replaceChild(C.buildDom(E?["span",!W&&["span",{class:"ace_mobile-button",action:"selectall"},"Select All"],W&&["span",{class:"ace_mobile-button",action:"copy"},"Copy"],W&&["span",{class:"ace_mobile-button",action:"cut"},"Cut"],m&&["span",{class:"ace_mobile-button",action:"paste"},"Paste"],z&&["span",{class:"ace_mobile-button",action:"undo"},"Undo"],["span",{class:"ace_mobile-button",action:"find"},"Find"],["span",{class:"ace_mobile-button",action:"openCommandPalette"},"Palette"]]:["span"]),v.firstChild)},N=function(W){var z=W.target.getAttribute("action");if(z=="more"||!E)return E=!E,I();z=="paste"?m.readText().then(function(U){h.execCommand(z,U)}):z&&((z=="cut"||z=="copy")&&(m?m.writeText(h.getCopyText()):document.execCommand("copy")),h.execCommand(z)),v.firstChild.style.display="none",E=!1,z!="openCommandPalette"&&h.focus()};v=C.buildDom(["div",{class:"ace_mobile-menu",ontouchstart:function(W){l="menu",W.stopPropagation(),W.preventDefault(),h.textInput.focus()},ontouchend:function(W){W.stopPropagation(),W.preventDefault(),N(W)},onclick:N},["span"],["span",{class:"ace_mobile-button",action:"more"},"..."]],h.container)}function O(){v||w();var m=h.selection.cursor,E=h.renderer.textToScreenCoordinates(m.row,m.column),I=h.renderer.textToScreenCoordinates(0,0).pageX,N=h.renderer.scrollLeft,W=h.container.getBoundingClientRect();v.style.top=E.pageY-W.top-3+"px",E.pageX-W.left=2?h.selection.getLineRange(g.row):h.session.getBracketRange(g);m&&!m.isEmpty()?h.selection.setRange(m):h.selection.selectWord(),l="wait"}T.addListener(d,"contextmenu",function(m){if(S){var E=h.textInput.getElement();E.focus()}},h),T.addListener(d,"touchstart",function(m){var E=m.touches;if(a||E.length>1){clearTimeout(a),a=null,i=-1,l="zoom";return}S=h.$mouseHandler.isMousePressed=!0;var I=h.renderer.layerConfig.lineHeight,N=h.renderer.layerConfig.lineHeight,W=m.timeStamp;r=W;var z=E[0],U=z.clientX,j=z.clientY;Math.abs(o-U)+Math.abs(s-j)>I&&(i=-1),o=m.clientX=U,s=m.clientY=j,b=$=0;var q=new L(m,h);if(g=q.getDocumentPosition(),W-i<500&&E.length==1&&!p)A++,m.preventDefault(),m.button=0,_();else{A=0;var Y=h.selection.cursor,t0=h.selection.isEmpty()?Y:h.selection.anchor,n0=h.renderer.$cursorLayer.getPixelPosition(Y,!0),u0=h.renderer.$cursorLayer.getPixelPosition(t0,!0),h0=h.renderer.scroller.getBoundingClientRect(),m0=h.renderer.layerConfig.offset,p0=h.renderer.scrollLeft,b0=function(H0,N0){return H0=H0/N,N0=N0/I-.75,H0*H0+N0*N0};if(m.clientXw0?"cursor":"anchor"),w0<3.5?l="anchor":k0<3.5?l="cursor":l="scroll",a=setTimeout(k,450)}i=W},h),T.addListener(d,"touchend",function(m){S=h.$mouseHandler.isMousePressed=!1,c&&clearInterval(c),l=="zoom"?(l="",p=0):a?(h.selection.moveToPosition(g),p=0,O()):l=="scroll"?(y(),B()):O(),clearTimeout(a),a=null},h),T.addListener(d,"touchmove",function(m){a&&(clearTimeout(a),a=null);var E=m.touches;if(!(E.length>1||l=="zoom")){var I=E[0],N=o-I.clientX,W=s-I.clientY;if(l=="wait")if(N*N+W*W>4)l="cursor";else return m.preventDefault();o=I.clientX,s=I.clientY,m.clientX=I.clientX,m.clientY=I.clientY;var z=m.timeStamp,U=z-r;if(r=z,l=="scroll"){var j=new L(m,h);j.speed=1,j.wheelX=N,j.wheelY=W,10*Math.abs(N)0)if(m5==16){for(j0=f5;j0-1){for(j0=f5;j0=0&&w0[y5]==k;y5--)b0[y5]=C}}}function n0(p0,b0,k0){if(!(d=p0){for(N0=H0+1;N0=p0;)N0++;for(z0=H0,M0=N0-1;z0=b0.length||(N0=k0[w0-1])!=$&&N0!=S||(z0=b0[w0+1])!=$&&z0!=S?v:(h&&(z0=S),z0==N0?z0:v);case y:return N0=w0>0?k0[w0-1]:w,N0==$&&w0+10&&k0[w0-1]==$)return $;if(h)return v;for(Y0=w0+1,M0=b0.length;Y0=1425&&m5<=2303||m5==64286;if(N0=b0[Y0],k5&&(N0==b||N0==B))return b}return w0<1||(N0=b0[w0-1])==w?v:k0[w0-1];case w:return h=!1,o=!0,C;case O:return s=!0,v;case I:case N:case z:case U:case W:h=!1;case j:return v}}function h0(p0){var b0=p0.charCodeAt(0),k0=b0>>8;return k0==0?b0>191?A:q[b0]:k0==5?/[\u0591-\u05f4]/.test(p0)?b:A:k0==6?/[\u0610-\u061a\u064b-\u065f\u06d6-\u06e4\u06e7-\u06ed]/.test(p0)?E:/[\u0660-\u0669\u066b-\u066c]/.test(p0)?S:b0==1642?m:/[\u06f0-\u06f9]/.test(p0)?$:B:k0==32&&b0<=8287?Y[b0&255]:k0==254&&b0>=65136?B:v}function m0(p0){return p0>="\u064B"&&p0<="\u0655"}M.L=A,M.R=b,M.EN=$,M.ON_R=3,M.AN=4,M.R_H=5,M.B=6,M.RLE=7,M.DOT="\xB7",M.doBidiReorder=function(p0,b0,k0){if(p0.length<2)return{};var w0=p0.split(""),H0=new Array(w0.length),N0=new Array(w0.length),z0=[];C=k0?g:p,t0(w0,z0,w0.length,b0);for(var M0=0;M0B&&b0[M0]0&&w0[M0-1]==="\u0644"&&/\u0622|\u0623|\u0625|\u0627/.test(w0[M0])&&(z0[M0-1]=z0[M0]=M.R_H,M0++);w0[w0.length-1]===M.DOT&&(z0[w0.length-1]=M.B),w0[0]==="\u202B"&&(z0[0]=M.RLE);for(var M0=0;M0=0&&(l=this.session.$docRowCache[s])}return l},h.prototype.getSplitIndex=function(){var l=0,o=this.session.$screenRowCache;if(o.length)for(var s,i=this.session.$getRowCacheIndex(o,this.currentRow);this.currentRow-l>0&&(s=this.session.$getRowCacheIndex(o,this.currentRow-l-1),s===i);)i=s,l++;else l=this.currentRow;return l},h.prototype.updateRowLine=function(l,o){l===void 0&&(l=this.getDocumentRow());var s=l===this.session.getLength()-1,i=s?this.EOF:this.EOL;if(this.wrapIndent=0,this.line=this.session.getLine(l),this.isRtlDir=this.$isRtl||this.line.charAt(0)===this.RLE,this.session.$useWrapMode){var r=this.session.$wrapData[l];r&&(o===void 0&&(o=this.getSplitIndex()),o>0&&r.length?(this.wrapIndent=r.indent,this.wrapOffset=this.wrapIndent*this.charWidths[L.L],this.line=oo?this.session.getOverwrite()?l:l-1:o,i=L.getVisualFromLogicalIdx(s,this.bidiMap),r=this.bidiMap.bidiLevels,a=0;!this.session.getOverwrite()&&l<=o&&r[i]%2!==0&&i++;for(var c=0;co&&r[i]%2===0&&(a+=this.charWidths[r[i]]),this.wrapIndent&&(a+=this.isRtlDir?-1*this.wrapOffset:this.wrapOffset),this.isRtlDir&&(a+=this.rtlLineOffset),a},h.prototype.getSelections=function(l,o){var s=this.bidiMap,i=s.bidiLevels,r,a=[],c=0,p=Math.min(l,o)-this.wrapIndent,g=Math.max(l,o)-this.wrapIndent,A=!1,b=!1,$=0;this.wrapIndent&&(c+=this.isRtlDir?-1*this.wrapOffset:this.wrapOffset);for(var S,v=0;v=p&&Si+c/2;){if(i+=c,r===a.length-1){c=0;break}c=this.charWidths[a[++r]]}return r>0&&a[r-1]%2!==0&&a[r]%2===0?(s0&&a[r-1]%2===0&&a[r]%2!==0?o=1+(s>i?this.bidiMap.logicalFromVisual[r]:this.bidiMap.logicalFromVisual[r-1]):this.isRtlDir&&r===a.length-1&&c===0&&a[r-1]%2===0||!this.isRtlDir&&r===0&&a[r]%2!==0?o=1+this.bidiMap.logicalFromVisual[r]:(r>0&&a[r-1]%2!==0&&c!==0&&r--,o=this.bidiMap.logicalFromVisual[r]),o===0&&this.isRtlDir&&o++,o+this.wrapIndent},h}();M.BidiHandler=d}),ace.define("ace/selection",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/lib/event_emitter","ace/range"],function(n,M,G){"use strict";var L=n("./lib/oop"),T=n("./lib/lang"),C=n("./lib/event_emitter").EventEmitter,d=n("./range").Range,h=function(){function l(o){this.session=o,this.doc=o.getDocument(),this.clearSelection(),this.cursor=this.lead=this.doc.createAnchor(0,0),this.anchor=this.doc.createAnchor(0,0),this.$silent=!1;var s=this;this.cursor.on("change",function(i){s.$cursorChanged=!0,s.$silent||s._emit("changeCursor"),!s.$isEmpty&&!s.$silent&&s._emit("changeSelection"),!s.$keepDesiredColumnOnChange&&i.old.column!=i.value.column&&(s.$desiredColumn=null)}),this.anchor.on("change",function(){s.$anchorChanged=!0,!s.$isEmpty&&!s.$silent&&s._emit("changeSelection")})}return l.prototype.isEmpty=function(){return this.$isEmpty||this.anchor.row==this.lead.row&&this.anchor.column==this.lead.column},l.prototype.isMultiLine=function(){return!this.$isEmpty&&this.anchor.row!=this.cursor.row},l.prototype.getCursor=function(){return this.lead.getPosition()},l.prototype.setAnchor=function(o,s){this.$isEmpty=!1,this.anchor.setPosition(o,s)},l.prototype.getAnchor=function(){return this.$isEmpty?this.getSelectionLead():this.anchor.getPosition()},l.prototype.getSelectionLead=function(){return this.lead.getPosition()},l.prototype.isBackwards=function(){var o=this.anchor,s=this.lead;return o.row>s.row||o.row==s.row&&o.column>s.column},l.prototype.getRange=function(){var o=this.anchor,s=this.lead;return this.$isEmpty?d.fromPoints(s,s):this.isBackwards()?d.fromPoints(s,o):d.fromPoints(o,s)},l.prototype.clearSelection=function(){this.$isEmpty||(this.$isEmpty=!0,this._emit("changeSelection"))},l.prototype.selectAll=function(){this.$setSelection(0,0,Number.MAX_VALUE,Number.MAX_VALUE)},l.prototype.setRange=function(o,s){var i=s?o.end:o.start,r=s?o.start:o.end;this.$setSelection(i.row,i.column,r.row,r.column)},l.prototype.$setSelection=function(o,s,i,r){if(!this.$silent){var a=this.$isEmpty,c=this.inMultiSelectMode;this.$silent=!0,this.$cursorChanged=this.$anchorChanged=!1,this.anchor.setPosition(o,s),this.cursor.setPosition(i,r),this.$isEmpty=!d.comparePoints(this.anchor,this.cursor),this.$silent=!1,this.$cursorChanged&&this._emit("changeCursor"),(this.$cursorChanged||this.$anchorChanged||a!=this.$isEmpty||c)&&this._emit("changeSelection")}},l.prototype.$moveSelection=function(o){var s=this.lead;this.$isEmpty&&this.setSelectionAnchor(s.row,s.column),o.call(this)},l.prototype.selectTo=function(o,s){this.$moveSelection(function(){this.moveCursorTo(o,s)})},l.prototype.selectToPosition=function(o){this.$moveSelection(function(){this.moveCursorToPosition(o)})},l.prototype.moveTo=function(o,s){this.clearSelection(),this.moveCursorTo(o,s)},l.prototype.moveToPosition=function(o){this.clearSelection(),this.moveCursorToPosition(o)},l.prototype.selectUp=function(){this.$moveSelection(this.moveCursorUp)},l.prototype.selectDown=function(){this.$moveSelection(this.moveCursorDown)},l.prototype.selectRight=function(){this.$moveSelection(this.moveCursorRight)},l.prototype.selectLeft=function(){this.$moveSelection(this.moveCursorLeft)},l.prototype.selectLineStart=function(){this.$moveSelection(this.moveCursorLineStart)},l.prototype.selectLineEnd=function(){this.$moveSelection(this.moveCursorLineEnd)},l.prototype.selectFileEnd=function(){this.$moveSelection(this.moveCursorFileEnd)},l.prototype.selectFileStart=function(){this.$moveSelection(this.moveCursorFileStart)},l.prototype.selectWordRight=function(){this.$moveSelection(this.moveCursorWordRight)},l.prototype.selectWordLeft=function(){this.$moveSelection(this.moveCursorWordLeft)},l.prototype.getWordRange=function(o,s){if(typeof s=="undefined"){var i=o||this.lead;o=i.row,s=i.column}return this.session.getWordRange(o,s)},l.prototype.selectWord=function(){this.setSelectionRange(this.getWordRange())},l.prototype.selectAWord=function(){var o=this.getCursor(),s=this.session.getAWordRange(o.row,o.column);this.setSelectionRange(s)},l.prototype.getLineRange=function(o,s){var i=typeof o=="number"?o:this.lead.row,r,a=this.session.getFoldLine(i);return a?(i=a.start.row,r=a.end.row):r=i,s===!0?new d(i,0,r,this.session.getLine(r).length):new d(i,0,r+1,0)},l.prototype.selectLine=function(){this.setSelectionRange(this.getLineRange())},l.prototype.moveCursorUp=function(){this.moveCursorBy(-1,0)},l.prototype.moveCursorDown=function(){this.moveCursorBy(1,0)},l.prototype.wouldMoveIntoSoftTab=function(o,s,i){var r=o.column,a=o.column+s;return i<0&&(r=o.column-s,a=o.column),this.session.isTabStop(o)&&this.doc.getLine(o.row).slice(r,a).split(" ").length-1==s},l.prototype.moveCursorLeft=function(){var o=this.lead.getPosition(),s;if(s=this.session.getFoldAt(o.row,o.column,-1))this.moveCursorTo(s.start.row,s.start.column);else if(o.column===0)o.row>0&&this.moveCursorTo(o.row-1,this.doc.getLine(o.row-1).length);else{var i=this.session.getTabSize();this.wouldMoveIntoSoftTab(o,i,-1)&&!this.session.getNavigateWithinSoftTabs()?this.moveCursorBy(0,-i):this.moveCursorBy(0,-1)}},l.prototype.moveCursorRight=function(){var o=this.lead.getPosition(),s;if(s=this.session.getFoldAt(o.row,o.column,1))this.moveCursorTo(s.end.row,s.end.column);else if(this.lead.column==this.doc.getLine(this.lead.row).length)this.lead.row0&&(s.column=r)}}this.moveCursorTo(s.row,s.column)},l.prototype.moveCursorFileEnd=function(){var o=this.doc.getLength()-1,s=this.doc.getLine(o).length;this.moveCursorTo(o,s)},l.prototype.moveCursorFileStart=function(){this.moveCursorTo(0,0)},l.prototype.moveCursorLongWordRight=function(){var o=this.lead.row,s=this.lead.column,i=this.doc.getLine(o),r=i.substring(s);this.session.nonTokenRe.lastIndex=0,this.session.tokenRe.lastIndex=0;var a=this.session.getFoldAt(o,s,1);if(a){this.moveCursorTo(a.end.row,a.end.column);return}if(this.session.nonTokenRe.exec(r)&&(s+=this.session.nonTokenRe.lastIndex,this.session.nonTokenRe.lastIndex=0,r=i.substring(s)),s>=i.length){this.moveCursorTo(o,i.length),this.moveCursorRight(),o0&&this.moveCursorWordLeft();return}this.session.tokenRe.exec(a)&&(s-=this.session.tokenRe.lastIndex,this.session.tokenRe.lastIndex=0),this.moveCursorTo(o,s)},l.prototype.$shortWordEndIndex=function(o){var s=0,i,r=/\s/,a=this.session.tokenRe;if(a.lastIndex=0,this.session.tokenRe.exec(o))s=this.session.tokenRe.lastIndex;else{for(;(i=o[s])&&r.test(i);)s++;if(s<1){for(a.lastIndex=0;(i=o[s])&&!a.test(i);)if(a.lastIndex=0,s++,r.test(i))if(s>2){s--;break}else{for(;(i=o[s])&&r.test(i);)s++;if(s>2)break}}}return a.lastIndex=0,s},l.prototype.moveCursorShortWordRight=function(){var o=this.lead.row,s=this.lead.column,i=this.doc.getLine(o),r=i.substring(s),a=this.session.getFoldAt(o,s,1);if(a)return this.moveCursorTo(a.end.row,a.end.column);if(s==i.length){var c=this.doc.getLength();do o++,r=this.doc.getLine(o);while(o0&&/^\s*$/.test(r));s=r.length,/\s+$/.test(r)||(r="")}var a=T.stringReverse(r),c=this.$shortWordEndIndex(a);return this.moveCursorTo(o,s-c)},l.prototype.moveCursorWordRight=function(){this.session.$selectLongWords?this.moveCursorLongWordRight():this.moveCursorShortWordRight()},l.prototype.moveCursorWordLeft=function(){this.session.$selectLongWords?this.moveCursorLongWordLeft():this.moveCursorShortWordLeft()},l.prototype.moveCursorBy=function(o,s){var i=this.session.documentToScreenPosition(this.lead.row,this.lead.column),r;if(s===0&&(o!==0&&(this.session.$bidiHandler.isBidiRow(i.row,this.lead.row)?(r=this.session.$bidiHandler.getPosLeft(i.column),i.column=Math.round(r/this.session.$bidiHandler.charWidths[0])):r=i.column*this.session.$bidiHandler.charWidths[0]),this.$desiredColumn?i.column=this.$desiredColumn:this.$desiredColumn=i.column),o!=0&&this.session.lineWidgets&&this.session.lineWidgets[this.lead.row]){var a=this.session.lineWidgets[this.lead.row];o<0?o-=a.rowsAbove||0:o>0&&(o+=a.rowCount-(a.rowsAbove||0))}var c=this.session.screenToDocumentPosition(i.row+o,i.column,r);o!==0&&s===0&&c.row===this.lead.row&&(c.column,this.lead.column),this.moveCursorTo(c.row,c.column+s,s===0)},l.prototype.moveCursorToPosition=function(o){this.moveCursorTo(o.row,o.column)},l.prototype.moveCursorTo=function(o,s,i){var r=this.session.getFoldAt(o,s,1);r&&(o=r.start.row,s=r.start.column),this.$keepDesiredColumnOnChange=!0;var a=this.session.getLine(o);/[\uDC00-\uDFFF]/.test(a.charAt(s))&&a.charAt(s-1)&&(this.lead.row==o&&this.lead.column==s+1?s=s-1:s=s+1),this.lead.setPosition(o,s),this.$keepDesiredColumnOnChange=!1,i||(this.$desiredColumn=null)},l.prototype.moveCursorToScreen=function(o,s,i){var r=this.session.screenToDocumentPosition(o,s);this.moveCursorTo(r.row,r.column,i)},l.prototype.detach=function(){this.lead.detach(),this.anchor.detach()},l.prototype.fromOrientedRange=function(o){this.setSelectionRange(o,o.cursor==o.start),this.$desiredColumn=o.desiredColumn||this.$desiredColumn},l.prototype.toOrientedRange=function(o){var s=this.getRange();return o?(o.start.column=s.start.column,o.start.row=s.start.row,o.end.column=s.end.column,o.end.row=s.end.row):o=s,o.cursor=this.isBackwards()?o.start:o.end,o.desiredColumn=this.$desiredColumn,o},l.prototype.getRangeOfMovements=function(o){var s=this.getCursor();try{o(this);var i=this.getCursor();return d.fromPoints(s,i)}catch(r){return d.fromPoints(s,s)}finally{this.moveCursorToPosition(s)}},l.prototype.toJSON=function(){if(this.rangeCount)var o=this.ranges.map(function(s){var i=s.clone();return i.isBackwards=s.cursor==s.start,i});else{var o=this.getRange();o.isBackwards=this.isBackwards()}return o},l.prototype.fromJSON=function(o){if(o.start==null)if(this.rangeList&&o.length>1){this.toSingleRange(o[0]);for(var s=o.length;s--;){var i=d.fromPoints(o[s].start,o[s].end);o[s].isBackwards&&(i.cursor=i.start),this.addRange(i,!0)}return}else o=o[0];this.rangeList&&this.toSingleRange(o),this.setSelectionRange(o,o.isBackwards)},l.prototype.isEqual=function(o){if((o.length||this.rangeCount)&&o.length!=this.rangeCount)return!1;if(!o.length||!this.ranges)return this.getRange().isEqual(o);for(var s=this.ranges.length;s--;)if(!this.ranges[s].isEqual(o[s]))return!1;return!0},l}();h.prototype.setSelectionAnchor=h.prototype.setAnchor,h.prototype.getSelectionAnchor=h.prototype.getAnchor,h.prototype.setSelectionRange=h.prototype.setRange,L.implement(h.prototype,C),M.Selection=h}),ace.define("ace/tokenizer",["require","exports","module","ace/lib/report_error"],function(n,M,G){"use strict";var L=n("./lib/report_error").reportError,T=2e3,C=function(){function d(h){this.states=h,this.regExps={},this.matchMappings={};for(var l in this.states){for(var o=this.states[l],s=[],i=0,r=this.matchMappings[l]={defaultToken:"text"},a="g",c=[],p=0;p1?g.onMatch=this.$applyToken:g.onMatch=g.token),b>1&&(/\\\d/.test(g.regex)?A=g.regex.replace(/\\([0-9]+)/g,function($,S){return"\\"+(parseInt(S,10)+i+1)}):(b=1,A=this.removeCapturingGroups(g.regex)),!g.splitRegex&&typeof g.token!="string"&&c.push(g)),r[i]=p,i+=b,s.push(A),g.onMatch||(g.onMatch=null)}}s.length||(r[0]=0,s.push("$")),c.forEach(function($){$.splitRegex=this.createSplitterRegexp($.regex,a)},this),this.regExps[l]=new RegExp("("+s.join(")|(")+")|($)",a)}}return d.prototype.$setMaxTokenCount=function(h){T=h|0},d.prototype.$applyToken=function(h){var l=this.splitRegex.exec(h).slice(1),o=this.token.apply(this,l);if(typeof o=="string")return[{type:o,value:h}];for(var s=[],i=0,r=o.length;ig){var O=h.substring(g,w-v.length);b.type==$?b.value+=O:(b.type&&p.push(b),b={type:$,value:O})}for(var B=0;BT){for(A>2*h.length&&this.reportError("infinite loop with in ace tokenizer",{startState:l,line:h});g1&&o[0]!==s&&o.unshift("#tmp",s),{tokens:p,state:o.length?o:s}},d}();C.prototype.reportError=L,M.Tokenizer=C}),ace.define("ace/mode/text_highlight_rules",["require","exports","module","ace/lib/deep_copy"],function(n,M,G){"use strict";var L=n("../lib/deep_copy").deepCopy,T=function(){this.$rules={start:[{token:"empty_line",regex:"^$"},{defaultToken:"text"}]}};(function(){this.addRules=function(h,l){if(!l){for(var o in h)this.$rules[o]=h[o];return}for(var o in h){for(var s=h[o],i=0;i=this.$rowTokens.length;){if(this.$row+=1,d||(d=this.$session.getLength()),this.$row>=d)return this.$row=d-1,null;this.$rowTokens=this.$session.getTokens(this.$row),this.$tokenIndex=0}return this.$rowTokens[this.$tokenIndex]},C.prototype.getCurrentToken=function(){return this.$rowTokens[this.$tokenIndex]},C.prototype.getCurrentTokenRow=function(){return this.$row},C.prototype.getCurrentTokenColumn=function(){var d=this.$rowTokens,h=this.$tokenIndex,l=d[h].start;if(l!==void 0)return l;for(l=0;h>0;)h-=1,l+=d[h].value.length;return l},C.prototype.getCurrentTokenPosition=function(){return{row:this.$row,column:this.getCurrentTokenColumn()}},C.prototype.getCurrentTokenRange=function(){var d=this.$rowTokens[this.$tokenIndex],h=this.getCurrentTokenColumn();return new L(this.$row,h,this.$row,h+d.value.length)},C}();M.TokenIterator=T}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(n,M,G){"use strict";var L=n("../../lib/oop"),T=n("../behaviour").Behaviour,C=n("../../token_iterator").TokenIterator,d=n("../../lib/lang"),h=["text","paren.rparen","rparen","paren","punctuation.operator"],l=["text","paren.rparen","rparen","paren","punctuation.operator","comment"],o,s={},i={'"':'"',"'":"'"},r=function(p){var g=-1;if(p.multiSelect&&(g=p.selection.index,s.rangeCount!=p.multiSelect.rangeCount&&(s={rangeCount:p.multiSelect.rangeCount})),s[g])return o=s[g];o=s[g]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},a=function(p,g,A,b){var $=p.end.row-p.start.row;return{text:A+g+b,selection:[0,p.start.column+1,$,p.end.column+($?0:1)]}},c=function(p){p=p||{},this.add("braces","insertion",function(g,A,b,$,S){var v=b.getCursorPosition(),w=$.doc.getLine(v.row);if(S=="{"){r(b);var O=b.getSelectionRange(),B=$.doc.getTextRange(O);if(B!==""&&B!=="{"&&b.getWrapBehavioursEnabled())return a(O,B,"{","}");if(c.isSaneInsertion(b,$))return/[\]\}\)]/.test(w[v.column])||b.inMultiSelectMode||p.braces?(c.recordAutoInsert(b,$,"}"),{text:"{}",selection:[1,1]}):(c.recordMaybeInsert(b,$,"{"),{text:"{",selection:[1,1]})}else if(S=="}"){r(b);var k=w.substring(v.column,v.column+1);if(k=="}"){var _=$.$findOpeningBracket("}",{column:v.column+1,row:v.row});if(_!==null&&c.isAutoInsertedClosing(v,w,S))return c.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else if(S==` -`||S==`\r -`){r(b);var y="";c.isMaybeInsertedClosing(v,w)&&(y=d.stringRepeat("}",o.maybeInsertedBrackets),c.clearMaybeInsertedClosing());var k=w.substring(v.column,v.column+1);if(k==="}"){var m=$.findMatchingBracket({row:v.row,column:v.column+1},"}");if(!m)return null;var E=this.$getIndent($.getLine(m.row))}else if(y)var E=this.$getIndent(w);else{c.clearMaybeInsertedClosing();return}var I=E+$.getTabString();return{text:` -`+I+` -`+E+y,selection:[1,I.length,1,I.length]}}else c.clearMaybeInsertedClosing()}),this.add("braces","deletion",function(g,A,b,$,S){var v=$.doc.getTextRange(S);if(!S.isMultiLine()&&v=="{"){r(b);var w=$.doc.getLine(S.start.row),O=w.substring(S.end.column,S.end.column+1);if(O=="}")return S.end.column++,S;o.maybeInsertedBrackets--}}),this.add("parens","insertion",function(g,A,b,$,S){if(S=="("){r(b);var v=b.getSelectionRange(),w=$.doc.getTextRange(v);if(w!==""&&b.getWrapBehavioursEnabled())return a(v,w,"(",")");if(c.isSaneInsertion(b,$))return c.recordAutoInsert(b,$,")"),{text:"()",selection:[1,1]}}else if(S==")"){r(b);var O=b.getCursorPosition(),B=$.doc.getLine(O.row),k=B.substring(O.column,O.column+1);if(k==")"){var _=$.$findOpeningBracket(")",{column:O.column+1,row:O.row});if(_!==null&&c.isAutoInsertedClosing(O,B,S))return c.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(g,A,b,$,S){var v=$.doc.getTextRange(S);if(!S.isMultiLine()&&v=="("){r(b);var w=$.doc.getLine(S.start.row),O=w.substring(S.start.column+1,S.start.column+2);if(O==")")return S.end.column++,S}}),this.add("brackets","insertion",function(g,A,b,$,S){if(S=="["){r(b);var v=b.getSelectionRange(),w=$.doc.getTextRange(v);if(w!==""&&b.getWrapBehavioursEnabled())return a(v,w,"[","]");if(c.isSaneInsertion(b,$))return c.recordAutoInsert(b,$,"]"),{text:"[]",selection:[1,1]}}else if(S=="]"){r(b);var O=b.getCursorPosition(),B=$.doc.getLine(O.row),k=B.substring(O.column,O.column+1);if(k=="]"){var _=$.$findOpeningBracket("]",{column:O.column+1,row:O.row});if(_!==null&&c.isAutoInsertedClosing(O,B,S))return c.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(g,A,b,$,S){var v=$.doc.getTextRange(S);if(!S.isMultiLine()&&v=="["){r(b);var w=$.doc.getLine(S.start.row),O=w.substring(S.start.column+1,S.start.column+2);if(O=="]")return S.end.column++,S}}),this.add("string_dquotes","insertion",function(g,A,b,$,S){var v=$.$mode.$quotes||i;if(S.length==1&&v[S]){if(this.lineCommentStart&&this.lineCommentStart.indexOf(S)!=-1)return;r(b);var w=S,O=b.getSelectionRange(),B=$.doc.getTextRange(O);if(B!==""&&(B.length!=1||!v[B])&&b.getWrapBehavioursEnabled())return a(O,B,w,w);if(!B){var k=b.getCursorPosition(),_=$.doc.getLine(k.row),y=_.substring(k.column-1,k.column),m=_.substring(k.column,k.column+1),E=$.getTokenAt(k.row,k.column),I=$.getTokenAt(k.row,k.column+1);if(y=="\\"&&E&&/escape/.test(E.type))return null;var N=E&&/string|escape/.test(E.type),W=!I||/string|escape/.test(I.type),z;if(m==w)z=N!==W,z&&/string\.end/.test(I.type)&&(z=!1);else{if(N&&!W||N&&W)return null;var U=$.$mode.tokenRe;U.lastIndex=0;var j=U.test(y);U.lastIndex=0;var q=U.test(m),Y=$.$mode.$pairQuotesAfter,t0=Y&&Y[w]&&Y[w].test(y);if(!t0&&j||q||m&&!/[\s;,.})\]\\]/.test(m))return null;var n0=_[k.column-2];if(y==w&&(n0==w||U.test(n0)))return null;z=!0}return{text:z?w+w:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(g,A,b,$,S){var v=$.$mode.$quotes||i,w=$.doc.getTextRange(S);if(!S.isMultiLine()&&v.hasOwnProperty(w)){r(b);var O=$.doc.getLine(S.start.row),B=O.substring(S.start.column+1,S.start.column+2);if(B==w)return S.end.column++,S}}),p.closeDocComment!==!1&&this.add("doc comment end","insertion",function(g,A,b,$,S){if(g==="doc-start"&&(S===` -`||S===`\r -`)&&b.selection.isEmpty()){var v=b.getCursorPosition(),w=$.doc.getLine(v.row),O=$.doc.getLine(v.row+1),B=this.$getIndent(w);if(/\s*\*/.test(O))return/^\s*\*/.test(w)?{text:S+B+"* ",selection:[1,3+B.length,1,3+B.length]}:{text:S+B+" * ",selection:[1,3+B.length,1,3+B.length]};if(/\/\*\*/.test(w.substring(0,v.column)))return{text:S+B+" * "+S+" "+B+"*/",selection:[1,4+B.length,1,4+B.length]}}})};c.isSaneInsertion=function(p,g){var A=p.getCursorPosition(),b=new C(g,A.row,A.column);if(!this.$matchTokenType(b.getCurrentToken()||"text",h)){if(/[)}\]]/.test(p.session.getLine(A.row)[A.column]))return!0;var $=new C(g,A.row,A.column+1);if(!this.$matchTokenType($.getCurrentToken()||"text",h))return!1}return b.stepForward(),b.getCurrentTokenRow()!==A.row||this.$matchTokenType(b.getCurrentToken()||"text",l)},c.$matchTokenType=function(p,g){return g.indexOf(p.type||p)>-1},c.recordAutoInsert=function(p,g,A){var b=p.getCursorPosition(),$=g.doc.getLine(b.row);this.isAutoInsertedClosing(b,$,o.autoInsertedLineEnd[0])||(o.autoInsertedBrackets=0),o.autoInsertedRow=b.row,o.autoInsertedLineEnd=A+$.substr(b.column),o.autoInsertedBrackets++},c.recordMaybeInsert=function(p,g,A){var b=p.getCursorPosition(),$=g.doc.getLine(b.row);this.isMaybeInsertedClosing(b,$)||(o.maybeInsertedBrackets=0),o.maybeInsertedRow=b.row,o.maybeInsertedLineStart=$.substr(0,b.column)+A,o.maybeInsertedLineEnd=$.substr(b.column),o.maybeInsertedBrackets++},c.isAutoInsertedClosing=function(p,g,A){return o.autoInsertedBrackets>0&&p.row===o.autoInsertedRow&&A===o.autoInsertedLineEnd[0]&&g.substr(p.column)===o.autoInsertedLineEnd},c.isMaybeInsertedClosing=function(p,g){return o.maybeInsertedBrackets>0&&p.row===o.maybeInsertedRow&&g.substr(p.column)===o.maybeInsertedLineEnd&&g.substr(0,p.column)==o.maybeInsertedLineStart},c.popAutoInsertedClosing=function(){o.autoInsertedLineEnd=o.autoInsertedLineEnd.substr(1),o.autoInsertedBrackets--},c.clearMaybeInsertedClosing=function(){o&&(o.maybeInsertedBrackets=0,o.maybeInsertedRow=-1)},L.inherits(c,T),M.CstyleBehaviour=c}),ace.define("ace/unicode",["require","exports","module"],function(n,M,G){"use strict";for(var L=[48,9,8,25,5,0,2,25,48,0,11,0,5,0,6,22,2,30,2,457,5,11,15,4,8,0,2,0,18,116,2,1,3,3,9,0,2,2,2,0,2,19,2,82,2,138,2,4,3,155,12,37,3,0,8,38,10,44,2,0,2,1,2,1,2,0,9,26,6,2,30,10,7,61,2,9,5,101,2,7,3,9,2,18,3,0,17,58,3,100,15,53,5,0,6,45,211,57,3,18,2,5,3,11,3,9,2,1,7,6,2,2,2,7,3,1,3,21,2,6,2,0,4,3,3,8,3,1,3,3,9,0,5,1,2,4,3,11,16,2,2,5,5,1,3,21,2,6,2,1,2,1,2,1,3,0,2,4,5,1,3,2,4,0,8,3,2,0,8,15,12,2,2,8,2,2,2,21,2,6,2,1,2,4,3,9,2,2,2,2,3,0,16,3,3,9,18,2,2,7,3,1,3,21,2,6,2,1,2,4,3,8,3,1,3,2,9,1,5,1,2,4,3,9,2,0,17,1,2,5,4,2,2,3,4,1,2,0,2,1,4,1,4,2,4,11,5,4,4,2,2,3,3,0,7,0,15,9,18,2,2,7,2,2,2,22,2,9,2,4,4,7,2,2,2,3,8,1,2,1,7,3,3,9,19,1,2,7,2,2,2,22,2,9,2,4,3,8,2,2,2,3,8,1,8,0,2,3,3,9,19,1,2,7,2,2,2,22,2,15,4,7,2,2,2,3,10,0,9,3,3,9,11,5,3,1,2,17,4,23,2,8,2,0,3,6,4,0,5,5,2,0,2,7,19,1,14,57,6,14,2,9,40,1,2,0,3,1,2,0,3,0,7,3,2,6,2,2,2,0,2,0,3,1,2,12,2,2,3,4,2,0,2,5,3,9,3,1,35,0,24,1,7,9,12,0,2,0,2,0,5,9,2,35,5,19,2,5,5,7,2,35,10,0,58,73,7,77,3,37,11,42,2,0,4,328,2,3,3,6,2,0,2,3,3,40,2,3,3,32,2,3,3,6,2,0,2,3,3,14,2,56,2,3,3,66,5,0,33,15,17,84,13,619,3,16,2,25,6,74,22,12,2,6,12,20,12,19,13,12,2,2,2,1,13,51,3,29,4,0,5,1,3,9,34,2,3,9,7,87,9,42,6,69,11,28,4,11,5,11,11,39,3,4,12,43,5,25,7,10,38,27,5,62,2,28,3,10,7,9,14,0,89,75,5,9,18,8,13,42,4,11,71,55,9,9,4,48,83,2,2,30,14,230,23,280,3,5,3,37,3,5,3,7,2,0,2,0,2,0,2,30,3,52,2,6,2,0,4,2,2,6,4,3,3,5,5,12,6,2,2,6,67,1,20,0,29,0,14,0,17,4,60,12,5,0,4,11,18,0,5,0,3,9,2,0,4,4,7,0,2,0,2,0,2,3,2,10,3,3,6,4,5,0,53,1,2684,46,2,46,2,132,7,6,15,37,11,53,10,0,17,22,10,6,2,6,2,6,2,6,2,6,2,6,2,6,2,6,2,31,48,0,470,1,36,5,2,4,6,1,5,85,3,1,3,2,2,89,2,3,6,40,4,93,18,23,57,15,513,6581,75,20939,53,1164,68,45,3,268,4,27,21,31,3,13,13,1,2,24,9,69,11,1,38,8,3,102,3,1,111,44,25,51,13,68,12,9,7,23,4,0,5,45,3,35,13,28,4,64,15,10,39,54,10,13,3,9,7,22,4,1,5,66,25,2,227,42,2,1,3,9,7,11171,13,22,5,48,8453,301,3,61,3,105,39,6,13,4,6,11,2,12,2,4,2,0,2,1,2,1,2,107,34,362,19,63,3,53,41,11,5,15,17,6,13,1,25,2,33,4,2,134,20,9,8,25,5,0,2,25,12,88,4,5,3,5,3,5,3,2],T=0,C=[],d=0;d2?n0%S!=S-1:n0%S==0}}else{if(!this.blockComment)return!1;var w=this.blockComment.start,O=this.blockComment.end,B=new RegExp("^(\\s*)(?:"+l.escapeRegExp(w)+")"),k=new RegExp("(?:"+l.escapeRegExp(O)+")\\s*$"),_=function(z,U){m(z,U)||(!A||/\S/.test(z))&&(g.insertInLine({row:U,column:z.length},O),g.insertInLine({row:U,column:$},w))},y=function(z,U){var j;(j=z.match(k))&&g.removeInLine(U,z.length-j[0].length,z.length),(j=z.match(B))&&g.removeInLine(U,j[1].length,j[0].length)},m=function(z,U){if(B.test(z))return!0;for(var j=a.getTokens(U),q=0;qz.length&&(W=z.length)}),$==1/0&&($=W,A=!1,b=!1),v&&$%S!=0&&($=Math.floor($/S)*S),N(b?y:_)},this.toggleBlockComment=function(r,a,c,p){var g=this.blockComment;if(g){!g.start&&g[0]&&(g=g[0]);var A=new o(a,p.row,p.column),b=A.getCurrentToken(),$=a.selection,S=a.selection.toOrientedRange(),v,w;if(b&&/comment/.test(b.type)){for(var O,B;b&&/comment/.test(b.type);){var k=b.value.indexOf(g.start);if(k!=-1){var _=A.getCurrentTokenRow(),y=A.getCurrentTokenColumn()+k;O=new s(_,y,_,y+g.start.length);break}b=A.stepBackward()}for(var A=new o(a,p.row,p.column),b=A.getCurrentToken();b&&/comment/.test(b.type);){var k=b.value.indexOf(g.end);if(k!=-1){var _=A.getCurrentTokenRow(),y=A.getCurrentTokenColumn()+k;B=new s(_,y,_,y+g.end.length);break}b=A.stepForward()}B&&a.remove(B),O&&(a.remove(O),v=O.start.row,w=-g.start.length)}else w=g.start.length,v=c.start.row,a.insert(c.end,g.end),a.insert(c.start,g.start);S.start.row==v&&(S.start.column+=w),S.end.row==v&&(S.end.column+=w),a.selection.fromOrientedRange(S)}},this.getNextLineIndent=function(r,a,c){return this.$getIndent(a)},this.checkOutdent=function(r,a,c){return!1},this.autoOutdent=function(r,a,c){},this.$getIndent=function(r){return r.match(/^\s*/)[0]},this.createWorker=function(r){return null},this.createModeDelegates=function(r){this.$embeds=[],this.$modes={};for(var a in r)if(r[a]){var c=r[a],p=c.prototype.$id,g=L.$modes[p];g||(L.$modes[p]=g=new c),L.$modes[a]||(L.$modes[a]=g),this.$embeds.push(a),this.$modes[a]=g}for(var A=["toggleBlockComment","toggleCommentLines","getNextLineIndent","checkOutdent","autoOutdent","transformAction","getCompletions"],a=0;a=0&&h.row=0&&h.column<=d[h.row].length}function C(d,h){h.action!="insert"&&h.action!="remove"&&L(h,"delta.action must be 'insert' or 'remove'"),h.lines instanceof Array||L(h,"delta.lines must be an Array"),(!h.start||!h.end)&&L(h,"delta.start/end must be an present");var l=h.start;T(d,h.start)||L(h,"delta.start must be contained in document");var o=h.end;h.action=="remove"&&!T(d,o)&&L(h,"delta.end must contained in document for 'remove' actions");var s=o.row-l.row,i=o.column-(s==0?l.column:0);(s!=h.lines.length-1||h.lines[s].length!=i)&&L(h,"delta.range must match delta lines")}M.applyDelta=function(d,h,l){var o=h.start.row,s=h.start.column,i=d[o]||"";switch(h.action){case"insert":var r=h.lines;if(r.length===1)d[o]=i.substring(0,s)+h.lines[0]+i.substring(s);else{var a=[o,1].concat(h.lines);d.splice.apply(d,a),d[o]=i.substring(0,s)+d[o],d[o+h.lines.length-1]+=i.substring(s)}break;case"remove":var c=h.end.column,p=h.end.row;o===p?d[o]=i.substring(0,s)+i.substring(c):d.splice(o,p-o+1,i.substring(0,s)+d[p].substring(c));break}}}),ace.define("ace/anchor",["require","exports","module","ace/lib/oop","ace/lib/event_emitter"],function(n,M,G){"use strict";var L=n("./lib/oop"),T=n("./lib/event_emitter").EventEmitter,C=function(){function l(o,s,i){this.$onChange=this.onChange.bind(this),this.attach(o),typeof i=="undefined"?this.setPosition(s.row,s.column):this.setPosition(s,i)}return l.prototype.getPosition=function(){return this.$clipPositionToDocument(this.row,this.column)},l.prototype.getDocument=function(){return this.document},l.prototype.onChange=function(o){if(!(o.start.row==o.end.row&&o.start.row!=this.row)&&!(o.start.row>this.row)){var s=h(o,{row:this.row,column:this.column},this.$insertRight);this.setPosition(s.row,s.column,!0)}},l.prototype.setPosition=function(o,s,i){var r;if(i?r={row:o,column:s}:r=this.$clipPositionToDocument(o,s),!(this.row==r.row&&this.column==r.column)){var a={row:this.row,column:this.column};this.row=r.row,this.column=r.column,this._signal("change",{old:a,value:r})}},l.prototype.detach=function(){this.document.off("change",this.$onChange)},l.prototype.attach=function(o){this.document=o||this.document,this.document.on("change",this.$onChange)},l.prototype.$clipPositionToDocument=function(o,s){var i={};return o>=this.document.getLength()?(i.row=Math.max(0,this.document.getLength()-1),i.column=this.document.getLine(i.row).length):o<0?(i.row=0,i.column=0):(i.row=o,i.column=Math.min(this.document.getLine(i.row).length,Math.max(0,s))),s<0&&(i.column=0),i},l}();C.prototype.$insertRight=!1,L.implement(C.prototype,T);function d(l,o,s){var i=s?l.column<=o.column:l.column=r&&(s=r-1,i=void 0);var a=this.getLine(s);return i==null&&(i=a.length),i=Math.min(Math.max(i,0),a.length),{row:s,column:i}},o.prototype.clonePos=function(s){return{row:s.row,column:s.column}},o.prototype.pos=function(s,i){return{row:s,column:i}},o.prototype.$clipPosition=function(s){var i=this.getLength();return s.row>=i?(s.row=Math.max(0,i-1),s.column=this.getLine(i-1).length):(s.row=Math.max(0,s.row),s.column=Math.min(Math.max(s.column,0),this.getLine(s.row).length)),s},o.prototype.insertFullLines=function(s,i){s=Math.min(Math.max(s,0),this.getLength());var r=0;s0,a=i=0&&this.applyDelta({start:this.pos(s,this.getLine(s).length),end:this.pos(s+1,0),action:"remove",lines:["",""]})},o.prototype.replace=function(s,i){if(s instanceof d||(s=d.fromPoints(s.start,s.end)),i.length===0&&s.isEmpty())return s.start;if(i==this.getTextRange(s))return s.end;this.remove(s);var r;return i?r=this.insert(s.start,i):r=s.start,r},o.prototype.applyDeltas=function(s){for(var i=0;i=0;i--)this.revertDelta(s[i])},o.prototype.applyDelta=function(s,i){var r=s.action=="insert";(r?s.lines.length<=1&&!s.lines[0]:!d.comparePoints(s.start,s.end))||(r&&s.lines.length>2e4?this.$splitAndapplyLargeDelta(s,2e4):(T(this.$lines,s,i),this._signal("change",s)))},o.prototype.$safeApplyDelta=function(s){var i=this.$lines.length;(s.action=="remove"&&s.start.row20){o.running=setTimeout(o.$worker,20);break}}o.currentLine=i,r==-1&&(r=i),c<=r&&o.fireUpdateEvent(c,r)}}}return d.prototype.setTokenizer=function(h){this.tokenizer=h,this.lines=[],this.states=[],this.start(0)},d.prototype.setDocument=function(h){this.doc=h,this.lines=[],this.states=[],this.stop()},d.prototype.fireUpdateEvent=function(h,l){var o={first:h,last:l};this._signal("update",{data:o})},d.prototype.start=function(h){this.currentLine=Math.min(h||0,this.currentLine,this.doc.getLength()),this.lines.splice(this.currentLine,this.lines.length),this.states.splice(this.currentLine,this.states.length),this.stop(),this.running=setTimeout(this.$worker,700)},d.prototype.scheduleStart=function(){this.running||(this.running=setTimeout(this.$worker,700))},d.prototype.$updateOnChange=function(h){var l=h.start.row,o=h.end.row-l;if(o===0)this.lines[l]=null;else if(h.action=="remove")this.lines.splice(l,o+1,null),this.states.splice(l,o+1,null);else{var s=Array(o+1);s.unshift(l,1),this.lines.splice.apply(this.lines,s),this.states.splice.apply(this.states,s)}this.currentLine=Math.min(l,this.currentLine,this.doc.getLength()),this.stop()},d.prototype.stop=function(){this.running&&clearTimeout(this.running),this.running=!1},d.prototype.getTokens=function(h){return this.lines[h]||this.$tokenizeRow(h)},d.prototype.getState=function(h){return this.currentLine==h&&this.$tokenizeRow(h),this.states[h]||"start"},d.prototype.$tokenizeRow=function(h){var l=this.doc.getLine(h),o=this.states[h-1],s=this.tokenizer.getLineTokens(l,o,h);return this.states[h]+""!=s.state+""?(this.states[h]=s.state,this.lines[h+1]=null,this.currentLine>h+1&&(this.currentLine=h+1)):this.currentLine==h&&(this.currentLine=h+1),this.lines[h]=s.tokens},d.prototype.cleanup=function(){this.running=!1,this.lines=[],this.states=[],this.currentLine=0,this.removeAllListeners()},d}();L.implement(C.prototype,T),M.BackgroundTokenizer=C}),ace.define("ace/search_highlight",["require","exports","module","ace/lib/lang","ace/range"],function(n,M,G){"use strict";var L=n("./lib/lang"),T=n("./range").Range,C=function(){function d(h,l,o){o===void 0&&(o="text"),this.setRegexp(h),this.clazz=l,this.type=o}return d.prototype.setRegexp=function(h){this.regExp+""!=h+""&&(this.regExp=h,this.cache=[])},d.prototype.update=function(h,l,o,s){if(this.regExp)for(var i=s.firstRow,r=s.lastRow,a={},c=i;c<=r;c++){var p=this.cache[c];p==null&&(p=L.getMatchOffsets(o.getLine(c),this.regExp),p.length>this.MAX_RANGES&&(p=p.slice(0,this.MAX_RANGES)),p=p.map(function($){return new T(c,$.offset,c,$.offset+$.length)}),this.cache[c]=p.length?p:"");for(var g=p.length;g--;){var A=p[g].toScreenRange(o),b=A.toString();a[b]||(a[b]=!0,l.drawSingleLineMarker(h,A,this.clazz,s))}}},d}();C.prototype.MAX_RANGES=500,M.SearchHighlight=C}),ace.define("ace/undomanager",["require","exports","module","ace/range"],function(n,M,G){"use strict";var L=function(){function v(){this.$maxRev=0,this.$fromUndo=!1,this.$undoDepth=1/0,this.reset()}return v.prototype.addSession=function(w){this.$session=w},v.prototype.add=function(w,O,B){if(!this.$fromUndo&&w!=this.$lastDelta){if(this.$keepRedoStack||(this.$redoStack.length=0),O===!1||!this.lastDeltas){this.lastDeltas=[];var k=this.$undoStack.length;k>this.$undoDepth-1&&this.$undoStack.splice(0,k-this.$undoDepth+1),this.$undoStack.push(this.lastDeltas),w.id=this.$rev=++this.$maxRev}(w.action=="remove"||w.action=="insert")&&(this.$lastDelta=w),this.lastDeltas.push(w)}},v.prototype.addSelection=function(w,O){this.selections.push({value:w,rev:O||this.$rev})},v.prototype.startNewGroup=function(){return this.lastDeltas=null,this.$rev},v.prototype.markIgnored=function(w,O){O==null&&(O=this.$rev+1);for(var B=this.$undoStack,k=B.length;k--;){var _=B[k][0];if(_.id<=w)break;_.id0},v.prototype.canRedo=function(){return this.$redoStack.length>0},v.prototype.bookmark=function(w){w==null&&(w=this.$rev),this.mark=w},v.prototype.isAtBookmark=function(){return this.$rev===this.mark},v.prototype.toJSON=function(){return{$redoStack:this.$redoStack,$undoStack:this.$undoStack}},v.prototype.fromJSON=function(w){this.reset(),this.$undoStack=w.$undoStack,this.$redoStack=w.$redoStack},v.prototype.$prettyPrint=function(w){return w?i(w):i(this.$undoStack)+` ---- -`+i(this.$redoStack)},v}();L.prototype.hasUndo=L.prototype.canUndo,L.prototype.hasRedo=L.prototype.canRedo,L.prototype.isClean=L.prototype.isAtBookmark,L.prototype.markClean=L.prototype.bookmark;function T(v,w){for(var O=w;O--;){var B=v[O];if(B&&!B[0].ignore){for(;O0){m.row+=k,m.column+=m.row==B.row?_:0;continue}!w&&I<=0&&(m.row=O.row,m.column=O.column,I===0&&(m.bias=1))}}}function o(v){return{row:v.row,column:v.column}}function s(v){return{start:o(v.start),end:o(v.end),action:v.action,lines:v.lines.slice()}}function i(v){if(v=v||this,Array.isArray(v))return v.map(i).join(` -`);var w="";return v.action?(w=v.action=="insert"?"+":"-",w+="["+v.lines+"]"):v.value&&(Array.isArray(v.value)?w=v.value.map(r).join(` -`):w=r(v.value)),v.start&&(w+=r(v)),(v.id||v.rev)&&(w+=" ("+(v.id||v.rev)+")"),w}function r(v){return v.start.row+":"+v.start.column+"=>"+v.end.row+":"+v.end.column}function a(v,w){var O=v.action=="insert",B=w.action=="insert";if(O&&B)if(d(w.start,v.end)>=0)g(w,v,-1);else if(d(w.start,v.start)<=0)g(v,w,1);else return null;else if(O&&!B)if(d(w.start,v.end)>=0)g(w,v,-1);else if(d(w.end,v.start)<=0)g(v,w,-1);else return null;else if(!O&&B)if(d(w.start,v.start)>=0)g(w,v,1);else if(d(w.start,v.start)<=0)g(v,w,1);else return null;else if(!O&&!B)if(d(w.start,v.start)>=0)g(w,v,1);else if(d(w.end,v.start)<=0)g(v,w,-1);else return null;return[w,v]}function c(v,w){for(var O=v.length;O--;)for(var B=0;B=0?g(v,w,-1):(d(v.start,w.start)<=0||g(v,C.fromPoints(w.start,v.start),-1),g(w,v,1));else if(!O&&B)d(w.start,v.end)>=0?g(w,v,-1):(d(w.start,v.start)<=0||g(w,C.fromPoints(v.start,w.start),-1),g(v,w,1));else if(!O&&!B)if(d(w.start,v.end)>=0)g(w,v,-1);else if(d(w.end,v.start)<=0)g(v,w,-1);else{var k,_;return d(v.start,w.start)<0&&(k=v,v=b(v,w.start)),d(v.end,w.end)>0&&(_=b(v,w.end)),A(w.end,v.start,v.end,-1),_&&!k&&(v.lines=_.lines,v.start=_.start,v.end=_.end,_=v),[w,k,_].filter(Boolean)}return[w,v]}function g(v,w,O){A(v.start,w.start,w.end,O),A(v.end,w.start,w.end,O)}function A(v,w,O,B){v.row==(B==1?w:O).row&&(v.column+=B*(O.column-w.column)),v.row+=B*(O.row-w.row)}function b(v,w){var O=v.lines,B=v.end;v.end=o(w);var k=v.end.row-v.start.row,_=O.splice(k,O.length),y=k?w.column:w.column-v.start.column;O.push(_[0].substring(0,y)),_[0]=_[0].substr(y);var m={start:o(w),end:B,lines:_,action:v.action};return m}function $(v,w){w=s(w);for(var O=v.length;O--;){for(var B=v[O],k=0;kthis.endRow)throw new Error("Can't add a fold to this FoldLine as it has no connection");this.folds.push(d),this.folds.sort(function(h,l){return-h.range.compareEnd(l.start.row,l.start.column)}),this.range.compareEnd(d.start.row,d.start.column)>0?(this.end.row=d.end.row,this.end.column=d.end.column):this.range.compareStart(d.end.row,d.end.column)<0&&(this.start.row=d.start.row,this.start.column=d.start.column)}else if(d.start.row==this.end.row)this.folds.push(d),this.end.row=d.end.row,this.end.column=d.end.column;else if(d.end.row==this.start.row)this.folds.unshift(d),this.start.row=d.start.row,this.start.column=d.start.column;else throw new Error("Trying to add fold to FoldRow that doesn't have a matching row");d.foldLine=this},C.prototype.containsRow=function(d){return d>=this.start.row&&d<=this.end.row},C.prototype.walk=function(d,h,l){var o=0,s=this.folds,i,r,a,c=!0;h==null&&(h=this.end.row,l=this.end.column);for(var p=0;p0)){var c=T(h,r.start);return a===0?l&&c!==0?-i-2:i:c>0||c===0&&!l?i:-i-1}}return-i-1},d.prototype.add=function(h){var l=!h.isEmpty(),o=this.pointIndex(h.start,l);o<0&&(o=-o-1);var s=this.pointIndex(h.end,l,o);return s<0?s=-s-1:s++,this.ranges.splice(o,s-o,h)},d.prototype.addList=function(h){for(var l=[],o=h.length;o--;)l.push.apply(l,this.add(h[o]));return l},d.prototype.substractPoint=function(h){var l=this.pointIndex(h);if(l>=0)return this.ranges.splice(l,1)},d.prototype.merge=function(){var h=[],l=this.ranges;l=l.sort(function(a,c){return T(a.start,c.start)});for(var o=l[0],s,i=1;i=0},d.prototype.containsPoint=function(h){return this.pointIndex(h)>=0},d.prototype.rangeAtPoint=function(h){var l=this.pointIndex(h);if(l>=0)return this.ranges[l]},d.prototype.clipRows=function(h,l){var o=this.ranges;if(o[0].start.row>l||o[o.length-1].start.row=s)break}if(h.action=="insert")for(var g=i-s,A=-l.column+o.column;as)break;if(p.start.row==s&&p.start.column>=l.column&&(p.start.column==l.column&&this.$bias<=0||(p.start.column+=A,p.start.row+=g)),p.end.row==s&&p.end.column>=l.column){if(p.end.column==l.column&&this.$bias<0)continue;p.end.column==l.column&&A>0&&ap.start.column&&p.end.column==r[a+1].start.column&&(p.end.column-=A),p.end.column+=A,p.end.row+=g}}else for(var g=s-i,A=l.column-o.column;ai)break;p.end.rowl.column)&&(p.end.column=l.column,p.end.row=l.row):(p.end.column+=A,p.end.row+=g):p.end.row>i&&(p.end.row+=g),p.start.rowl.column)&&(p.start.column=l.column,p.start.row=l.row):(p.start.column+=A,p.start.row+=g):p.start.row>i&&(p.start.row+=g)}if(g!=0&&a=o)return a;if(a.end.row>o)return null}return null},this.getNextFoldLine=function(o,s){var i=this.$foldData,r=0;for(s&&(r=i.indexOf(s)),r==-1&&(r=0),r;r=o)return a}return null},this.getFoldedRowCount=function(o,s){for(var i=this.$foldData,r=s-o+1,a=0;a=s){g=o?r-=s-g:r=0);break}else p>=o&&(g>=o?r-=p-g:r-=p-o+1)}return r},this.$addFoldLine=function(o){return this.$foldData.push(o),this.$foldData.sort(function(s,i){return s.start.row-i.start.row}),o},this.addFold=function(o,s){var i=this.$foldData,r=!1,a;o instanceof C?a=o:(a=new C(s,o),a.collapseChildren=s.collapseChildren),this.$clipRangeToDocument(a.range);var c=a.start.row,p=a.start.column,g=a.end.row,A=a.end.column,b=this.getFoldAt(c,p,1),$=this.getFoldAt(g,A,-1);if(b&&$==b)return b.addSubFold(a);b&&!b.range.isStart(c,p)&&this.removeFold(b),$&&!$.range.isEnd(g,A)&&this.removeFold($);var S=this.getFoldsInRange(a.range);S.length>0&&(this.removeFolds(S),a.collapseChildren||S.forEach(function(B){a.addSubFold(B)}));for(var v=0;v0&&this.foldAll(o.start.row+1,o.end.row,o.collapseChildren-1),o.subFolds=[]},this.expandFolds=function(o){o.forEach(function(s){this.expandFold(s)},this)},this.unfold=function(o,s){var i,r;if(o==null)i=new L(0,0,this.getLength(),0),s==null&&(s=!0);else if(typeof o=="number")i=new L(o,0,o,this.getLine(o).length);else if("row"in o)i=L.fromPoints(o,o);else{if(Array.isArray(o))return r=[],o.forEach(function(c){r=r.concat(this.unfold(c))},this),r;i=o}r=this.getFoldsInRangeList(i);for(var a=r;r.length==1&&L.comparePoints(r[0].start,i.start)<0&&L.comparePoints(r[0].end,i.end)>0;)this.expandFolds(r),r=this.getFoldsInRangeList(i);if(s!=!1?this.removeFolds(r):this.expandFolds(r),a.length)return a},this.isRowFolded=function(o,s){return!!this.getFoldLine(o,s)},this.getRowFoldEnd=function(o,s){var i=this.getFoldLine(o,s);return i?i.end.row:o},this.getRowFoldStart=function(o,s){var i=this.getFoldLine(o,s);return i?i.start.row:o},this.getFoldDisplayLine=function(o,s,i,r,a){r==null&&(r=o.start.row),a==null&&(a=0),s==null&&(s=o.end.row),i==null&&(i=this.getLine(s).length);var c=this.doc,p="";return o.walk(function(g,A,b,$){if(!(AA)break;while(a&&p.test(a.type)&&!/^comment.start/.test(a.type));a=r.stepBackward()}else a=r.getCurrentToken();return g.end.row=r.getCurrentTokenRow(),g.end.column=r.getCurrentTokenColumn(),/^comment.end/.test(a.type)||(g.end.column+=a.value.length-2),g}},this.foldAll=function(o,s,i,r){i==null&&(i=1e5);var a=this.foldWidgets;if(a){s=s||this.getLength(),o=o||0;for(var c=o;c=o&&(c=p.end.row,p.collapseChildren=i,this.addFold("...",p))}}},this.foldToLevel=function(o){for(this.foldAll();o-- >0;)this.unfold(null,!1)},this.foldAllComments=function(){var o=this;this.foldAll(null,null,null,function(s){for(var i=o.getTokens(s),r=0;r=0;){var c=i[r];if(c==null&&(c=i[r]=this.getFoldWidget(r)),c=="start"){var p=this.getFoldWidgetRange(r);if(a||(a=p),p&&p.end.row>=o)break}r--}return{range:r!==-1&&p,firstRange:a}},this.onFoldWidgetClick=function(o,s){s instanceof h&&(s=s.domEvent);var i={children:s.shiftKey,all:s.ctrlKey||s.metaKey,siblings:s.altKey},r=this.$toggleFoldWidget(o,i);if(!r){var a=s.target||s.srcElement;a&&/ace_fold-widget/.test(a.className)&&(a.className+=" ace_invalid")}},this.$toggleFoldWidget=function(o,s){if(this.getFoldWidget){var i=this.getFoldWidget(o),r=this.getLine(o),a=i==="end"?-1:1,c=this.getFoldAt(o,a===-1?0:r.length,a);if(c)return s.children||s.all?this.removeFold(c):this.expandFold(c),c;var p=this.getFoldWidgetRange(o,!0);if(p&&!p.isMultiLine()&&(c=this.getFoldAt(p.start.row,p.start.column,1),c&&p.isEqual(c.range)))return this.removeFold(c),c;if(s.siblings){var g=this.getParentFoldRangeData(o);if(g.range)var A=g.range.start.row+1,b=g.range.end.row;this.foldAll(A,b,s.all?1e4:0)}else s.children?(b=p?p.end.row:this.getLength(),this.foldAll(o+1,b,s.all?1e4:0)):p&&(s.all&&(p.collapseChildren=1e4),this.addFold("...",p));return p}},this.toggleFoldWidget=function(o){var s=this.selection.getCursor().row;s=this.getRowFoldStart(s);var i=this.$toggleFoldWidget(s,{});if(!i){var r=this.getParentFoldRangeData(s,!0);if(i=r.range||r.firstRange,i){s=i.start.row;var a=this.getFoldAt(s,this.getLine(s).length,1);a?this.removeFold(a):this.addFold("...",i)}}},this.updateFoldWidgets=function(o){var s=o.start.row,i=o.end.row-s;if(i===0)this.foldWidgets[s]=null;else if(o.action=="remove")this.foldWidgets.splice(s,i+1,null);else{var r=Array(i+1);r.unshift(s,1),this.foldWidgets.splice.apply(this.foldWidgets,r)}},this.tokenizerUpdateFoldWidgets=function(o){var s=o.data;s.first!=s.last&&this.foldWidgets.length>s.first&&this.foldWidgets.splice(s.first,this.foldWidgets.length)}}M.Folding=l}),ace.define("ace/edit_session/bracket_match",["require","exports","module","ace/token_iterator","ace/range"],function(n,M,G){"use strict";var L=n("../token_iterator").TokenIterator,T=n("../range").Range;function C(){this.findMatchingBracket=function(d,h){if(d.column==0)return null;var l=h||this.getLine(d.row).charAt(d.column-1);if(l=="")return null;var o=l.match(/([\(\[\{])|([\)\]\}])/);return o?o[1]?this.$findClosingBracket(o[1],d):this.$findOpeningBracket(o[2],d):null},this.getBracketRange=function(d){var h=this.getLine(d.row),l=!0,o,s=h.charAt(d.column-1),i=s&&s.match(/([\(\[\{])|([\)\]\}])/);if(i||(s=h.charAt(d.column),d={row:d.row,column:d.column+1},i=s&&s.match(/([\(\[\{])|([\)\]\}])/),l=!1),!i)return null;if(i[1]){var r=this.$findClosingBracket(i[1],d);if(!r)return null;o=T.fromPoints(d,r),l||(o.end.column++,o.start.column--),o.cursor=o.end}else{var r=this.$findOpeningBracket(i[2],d);if(!r)return null;o=T.fromPoints(r,d),l||(o.start.column++,o.end.column--),o.cursor=o.start}return o},this.getMatchingBracketRanges=function(d,h){var l=this.getLine(d.row),o=/([\(\[\{])|([\)\]\}])/,s=!h&&l.charAt(d.column-1),i=s&&s.match(o);if(i||(s=(h===void 0||h)&&l.charAt(d.column),d={row:d.row,column:d.column+1},i=s&&s.match(o)),!i)return null;var r=new T(d.row,d.column-1,d.row,d.column),a=i[1]?this.$findClosingBracket(i[1],d):this.$findOpeningBracket(i[2],d);if(!a)return[r];var c=new T(a.row,a.column,a.row,a.column+1);return[r,c]},this.$brackets={")":"(","(":")","]":"[","[":"]","{":"}","}":"{","<":">",">":"<"},this.$findOpeningBracket=function(d,h,l){var o=this.$brackets[d],s=1,i=new L(this,h.row,h.column),r=i.getCurrentToken();if(r||(r=i.stepForward()),!!r){l||(l=new RegExp("(\\.?"+r.type.replace(".","\\.").replace("rparen",".paren").replace(/\b(?:end)\b/,"(?:start|begin|end)").replace(/-close\b/,"-(close|open)")+")+"));for(var a=h.column-i.getCurrentTokenColumn()-2,c=r.value;;){for(;a>=0;){var p=c.charAt(a);if(p==o){if(s-=1,s==0)return{row:i.getCurrentTokenRow(),column:a+i.getCurrentTokenColumn()}}else p==d&&(s+=1);a-=1}do r=i.stepBackward();while(r&&!l.test(r.type));if(r==null)break;c=r.value,a=c.length-1}return null}},this.$findClosingBracket=function(d,h,l){var o=this.$brackets[d],s=1,i=new L(this,h.row,h.column),r=i.getCurrentToken();if(r||(r=i.stepForward()),!!r){l||(l=new RegExp("(\\.?"+r.type.replace(".","\\.").replace("lparen",".paren").replace(/\b(?:start|begin)\b/,"(?:start|begin|end)").replace(/-open\b/,"-(close|open)")+")+"));for(var a=h.column-i.getCurrentTokenColumn();;){for(var c=r.value,p=c.length;a"?o=!0:h.type.indexOf("tag-name")!==-1&&(l=!0));while(h&&!l);return h},this.$findClosingTag=function(d,h){var l,o=h.value,s=h.value,i=0,r=new T(d.getCurrentTokenRow(),d.getCurrentTokenColumn(),d.getCurrentTokenRow(),d.getCurrentTokenColumn()+1);h=d.stepForward();var a=new T(d.getCurrentTokenRow(),d.getCurrentTokenColumn(),d.getCurrentTokenRow(),d.getCurrentTokenColumn()+h.value.length),c=!1;do if(l=h,h=d.stepForward(),h){if(h.value===">"&&!c){var p=new T(d.getCurrentTokenRow(),d.getCurrentTokenColumn(),d.getCurrentTokenRow(),d.getCurrentTokenColumn()+1);c=!0}if(h.type.indexOf("tag-name")!==-1){if(o=h.value,s===o){if(l.value==="<")i++;else if(l.value==="")var b=new T(d.getCurrentTokenRow(),d.getCurrentTokenColumn(),d.getCurrentTokenRow(),d.getCurrentTokenColumn()+1);else return}}}else if(s===o&&h.value==="/>"&&(i--,i<0))var g=new T(d.getCurrentTokenRow(),d.getCurrentTokenColumn(),d.getCurrentTokenRow(),d.getCurrentTokenColumn()+2),A=g,b=A,p=new T(a.end.row,a.end.column,a.end.row,a.end.column+1)}while(h&&i>=0);if(r&&p&&g&&b&&a&&A)return{openTag:new T(r.start.row,r.start.column,p.end.row,p.end.column),closeTag:new T(g.start.row,g.start.column,b.end.row,b.end.column),openTagName:a,closeTagName:A}},this.$findOpeningTag=function(d,h){var l=d.getCurrentToken(),o=h.value,s=0,i=d.getCurrentTokenRow(),r=d.getCurrentTokenColumn(),a=r+2,c=new T(i,r,i,a);d.stepForward();var p=new T(d.getCurrentTokenRow(),d.getCurrentTokenColumn(),d.getCurrentTokenRow(),d.getCurrentTokenColumn()+h.value.length);if(h=d.stepForward(),!(!h||h.value!==">")){var g=new T(d.getCurrentTokenRow(),d.getCurrentTokenColumn(),d.getCurrentTokenRow(),d.getCurrentTokenColumn()+1);d.stepBackward(),d.stepBackward();do if(h=l,i=d.getCurrentTokenRow(),r=d.getCurrentTokenColumn(),a=r+h.value.length,l=d.stepBackward(),h){if(h.type.indexOf("tag-name")!==-1){if(o===h.value)if(l.value==="<"){if(s++,s>0){var A=new T(i,r,i,a),b=new T(d.getCurrentTokenRow(),d.getCurrentTokenColumn(),d.getCurrentTokenRow(),d.getCurrentTokenColumn()+1);do h=d.stepForward();while(h&&h.value!==">");var $=new T(d.getCurrentTokenRow(),d.getCurrentTokenColumn(),d.getCurrentTokenRow(),d.getCurrentTokenColumn()+1)}}else l.value===""){for(var S=0,v=l;v;){if(v.type.indexOf("tag-name")!==-1&&v.value===o){s--;break}else if(v.value==="<")break;v=d.stepBackward(),S++}for(var w=0;wm&&(this.$docRowCache.splice(m,y),this.$screenRowCache.splice(m,y))},k.prototype.$getRowCacheIndex=function(_,y){for(var m=0,E=_.length-1;m<=E;){var I=m+E>>1,N=_[I];if(y>N)m=I+1;else if(y=y));N++);return E=m[N],E?(E.index=N,E.start=I-E.value.length,E):null},k.prototype.setUndoManager=function(_){if(this.$undoManager=_,this.$informUndoManager&&this.$informUndoManager.cancel(),_){var y=this;_.addSession(this),this.$syncInformUndoManager=function(){y.$informUndoManager.cancel(),y.mergeUndoDeltas=!1},this.$informUndoManager=T.delayedCall(this.$syncInformUndoManager)}else this.$syncInformUndoManager=function(){}},k.prototype.markUndoGroup=function(){this.$syncInformUndoManager&&this.$syncInformUndoManager()},k.prototype.getUndoManager=function(){return this.$undoManager||this.$defaultUndoManager},k.prototype.getTabString=function(){return this.getUseSoftTabs()?T.stringRepeat(" ",this.getTabSize()):" "},k.prototype.setUseSoftTabs=function(_){this.setOption("useSoftTabs",_)},k.prototype.getUseSoftTabs=function(){return this.$useSoftTabs&&!this.$mode.$indentWithTabs},k.prototype.setTabSize=function(_){this.setOption("tabSize",_)},k.prototype.getTabSize=function(){return this.$tabSize},k.prototype.isTabStop=function(_){return this.$useSoftTabs&&_.column%this.$tabSize===0},k.prototype.setNavigateWithinSoftTabs=function(_){this.setOption("navigateWithinSoftTabs",_)},k.prototype.getNavigateWithinSoftTabs=function(){return this.$navigateWithinSoftTabs},k.prototype.setOverwrite=function(_){this.setOption("overwrite",_)},k.prototype.getOverwrite=function(){return this.$overwrite},k.prototype.toggleOverwrite=function(){this.setOverwrite(!this.$overwrite)},k.prototype.addGutterDecoration=function(_,y){this.$decorations[_]||(this.$decorations[_]=""),this.$decorations[_]+=" "+y,this._signal("changeBreakpoint",{})},k.prototype.removeGutterDecoration=function(_,y){this.$decorations[_]=(this.$decorations[_]||"").replace(" "+y,""),this._signal("changeBreakpoint",{})},k.prototype.getBreakpoints=function(){return this.$breakpoints},k.prototype.setBreakpoints=function(_){this.$breakpoints=[];for(var y=0;y<_.length;y++)this.$breakpoints[_[y]]="ace_breakpoint";this._signal("changeBreakpoint",{})},k.prototype.clearBreakpoints=function(){this.$breakpoints=[],this._signal("changeBreakpoint",{})},k.prototype.setBreakpoint=function(_,y){y===void 0&&(y="ace_breakpoint"),y?this.$breakpoints[_]=y:delete this.$breakpoints[_],this._signal("changeBreakpoint",{})},k.prototype.clearBreakpoint=function(_){delete this.$breakpoints[_],this._signal("changeBreakpoint",{})},k.prototype.addMarker=function(_,y,m,E){var I=this.$markerId++,N={range:_,type:m||"line",renderer:typeof m=="function"?m:null,clazz:y,inFront:!!E,id:I};return E?(this.$frontMarkers[I]=N,this._signal("changeFrontMarker")):(this.$backMarkers[I]=N,this._signal("changeBackMarker")),I},k.prototype.addDynamicMarker=function(_,y){if(_.update){var m=this.$markerId++;return _.id=m,_.inFront=!!y,y?(this.$frontMarkers[m]=_,this._signal("changeFrontMarker")):(this.$backMarkers[m]=_,this._signal("changeBackMarker")),_}},k.prototype.removeMarker=function(_){var y=this.$frontMarkers[_]||this.$backMarkers[_];if(y){var m=y.inFront?this.$frontMarkers:this.$backMarkers;delete m[_],this._signal(y.inFront?"changeFrontMarker":"changeBackMarker")}},k.prototype.getMarkers=function(_){return _?this.$frontMarkers:this.$backMarkers},k.prototype.highlight=function(_){if(!this.$searchHighlight){var y=new a(null,"ace_selected-word","text");this.$searchHighlight=this.addDynamicMarker(y)}this.$searchHighlight.setRegexp(_)},k.prototype.highlightLines=function(_,y,m,E){typeof y!="number"&&(m=y,y=_),m||(m="ace_step");var I=new s(_,0,y,1/0);return I.id=this.addMarker(I,m,"fullLine",E),I},k.prototype.setAnnotations=function(_){this.$annotations=_,this._signal("changeAnnotation",{})},k.prototype.getAnnotations=function(){return this.$annotations||[]},k.prototype.clearAnnotations=function(){this.setAnnotations([])},k.prototype.$detectNewLine=function(_){var y=_.match(/^.*?(\r?\n)/m);y?this.$autoNewLine=y[1]:this.$autoNewLine=` -`},k.prototype.getWordRange=function(_,y){var m=this.getLine(_),E=!1;if(y>0&&(E=!!m.charAt(y-1).match(this.tokenRe)),E||(E=!!m.charAt(y).match(this.tokenRe)),E)var I=this.tokenRe;else if(/^\s+$/.test(m.slice(y-1,y+1)))var I=/\s/;else var I=this.nonTokenRe;var N=y;if(N>0){do N--;while(N>=0&&m.charAt(N).match(I));N++}for(var W=y;W_&&(_=y.screenWidth)}),this.lineWidgetWidth=_},k.prototype.$computeWidth=function(_){if(this.$modified||_){if(this.$modified=!1,this.$useWrapMode)return this.screenWidth=this.$wrapLimit;for(var y=this.doc.getAllLines(),m=this.$rowLengthCache,E=0,I=0,N=this.$foldData[I],W=N?N.start.row:1/0,z=y.length,U=0;UW){if(U=N.end.row+1,U>=z)break;N=this.$foldData[I++],W=N?N.start.row:1/0}m[U]==null&&(m[U]=this.$getStringScreenWidth(y[U])[0]),m[U]>E&&(E=m[U])}this.screenWidth=E}},k.prototype.getLine=function(_){return this.doc.getLine(_)},k.prototype.getLines=function(_,y){return this.doc.getLines(_,y)},k.prototype.getLength=function(){return this.doc.getLength()},k.prototype.getTextRange=function(_){return this.doc.getTextRange(_||this.selection.getRange())},k.prototype.insert=function(_,y){return this.doc.insert(_,y)},k.prototype.remove=function(_){return this.doc.remove(_)},k.prototype.removeFullLines=function(_,y){return this.doc.removeFullLines(_,y)},k.prototype.undoChanges=function(_,y){if(_.length){this.$fromUndo=!0;for(var m=_.length-1;m!=-1;m--){var E=_[m];E.action=="insert"||E.action=="remove"?this.doc.revertDelta(E):E.folds&&this.addFolds(E.folds)}!y&&this.$undoSelect&&(_.selectionBefore?this.selection.fromJSON(_.selectionBefore):this.selection.setRange(this.$getUndoSelection(_,!0))),this.$fromUndo=!1}},k.prototype.redoChanges=function(_,y){if(_.length){this.$fromUndo=!0;for(var m=0;m<_.length;m++){var E=_[m];(E.action=="insert"||E.action=="remove")&&this.doc.$safeApplyDelta(E)}!y&&this.$undoSelect&&(_.selectionAfter?this.selection.fromJSON(_.selectionAfter):this.selection.setRange(this.$getUndoSelection(_,!1))),this.$fromUndo=!1}},k.prototype.setUndoSelect=function(_){this.$undoSelect=_},k.prototype.$getUndoSelection=function(_,y){function m(z){return y?z.action!=="insert":z.action==="insert"}for(var E,I,N=0;N<_.length;N++){var W=_[N];if(W.start){if(!E){m(W)?E=s.fromPoints(W.start,W.end):E=s.fromPoints(W.start,W.start);continue}m(W)?(I=W.start,E.compare(I.row,I.column)==-1&&E.setStart(I),I=W.end,E.compare(I.row,I.column)==1&&E.setEnd(I)):(I=W.start,E.compare(I.row,I.column)==-1&&(E=s.fromPoints(W.start,W.start)))}}return E},k.prototype.replace=function(_,y){return this.doc.replace(_,y)},k.prototype.moveText=function(_,y,m){var E=this.getTextRange(_),I=this.getFoldsInRange(_),N=s.fromPoints(y,y);if(!m){this.remove(_);var W=_.start.row-_.end.row,z=W?-_.end.column:_.start.column-_.end.column;z&&(N.start.row==_.end.row&&N.start.column>_.end.column&&(N.start.column+=z),N.end.row==_.end.row&&N.end.column>_.end.column&&(N.end.column+=z)),W&&N.start.row>=_.end.row&&(N.start.row+=W,N.end.row+=W)}if(N.end=this.insert(N.start,E),I.length){var U=_.start,j=N.start,W=j.row-U.row,z=j.column-U.column;this.addFolds(I.map(function(t0){return t0=t0.clone(),t0.start.row==U.row&&(t0.start.column+=z),t0.end.row==U.row&&(t0.end.column+=z),t0.start.row+=W,t0.end.row+=W,t0}))}return N},k.prototype.indentRows=function(_,y,m){m=m.replace(/\t/g,this.getTabString());for(var E=_;E<=y;E++)this.doc.insertInLine({row:E,column:0},m)},k.prototype.outdentRows=function(_){for(var y=_.collapseRows(),m=new s(0,0,0,0),E=this.getTabSize(),I=y.start.row;I<=y.end.row;++I){var N=this.getLine(I);m.start.row=I,m.end.row=I;for(var W=0;W0){var E=this.getRowFoldEnd(y+m);if(E>this.doc.getLength()-1)return 0;var I=E-y}else{_=this.$clipRowToDocument(_),y=this.$clipRowToDocument(y);var I=y-_+1}var N=new s(_,0,y,Number.MAX_VALUE),W=this.getFoldsInRange(N).map(function(U){return U=U.clone(),U.start.row+=I,U.end.row+=I,U}),z=m==0?this.doc.getLines(_,y):this.doc.removeFullLines(_,y);return this.doc.insertFullLines(_+I,z),W.length&&this.addFolds(W),I},k.prototype.moveLinesUp=function(_,y){return this.$moveLines(_,y,-1)},k.prototype.moveLinesDown=function(_,y){return this.$moveLines(_,y,1)},k.prototype.duplicateLines=function(_,y){return this.$moveLines(_,y,0)},k.prototype.$clipRowToDocument=function(_){return Math.max(0,Math.min(_,this.doc.getLength()-1))},k.prototype.$clipColumnToRow=function(_,y){return y<0?0:Math.min(this.doc.getLine(_).length,y)},k.prototype.$clipPositionToDocument=function(_,y){if(y=Math.max(0,y),_<0)_=0,y=0;else{var m=this.doc.getLength();_>=m?(_=m-1,y=this.doc.getLine(m-1).length):y=Math.min(this.doc.getLine(_).length,y)}return{row:_,column:y}},k.prototype.$clipRangeToDocument=function(_){_.start.row<0?(_.start.row=0,_.start.column=0):_.start.column=this.$clipColumnToRow(_.start.row,_.start.column);var y=this.doc.getLength()-1;return _.end.row>y?(_.end.row=y,_.end.column=this.doc.getLine(y).length):_.end.column=this.$clipColumnToRow(_.end.row,_.end.column),_},k.prototype.setUseWrapMode=function(_){if(_!=this.$useWrapMode){if(this.$useWrapMode=_,this.$modified=!0,this.$resetRowCache(0),_){var y=this.getLength();this.$wrapData=Array(y),this.$updateWrapData(0,y-1)}this._signal("changeWrapMode")}},k.prototype.getUseWrapMode=function(){return this.$useWrapMode},k.prototype.setWrapLimitRange=function(_,y){(this.$wrapLimitRange.min!==_||this.$wrapLimitRange.max!==y)&&(this.$wrapLimitRange={min:_,max:y},this.$modified=!0,this.$bidiHandler.markAsDirty(),this.$useWrapMode&&this._signal("changeWrapMode"))},k.prototype.adjustWrapLimit=function(_,y){var m=this.$wrapLimitRange;m.max<0&&(m={min:y,max:y});var E=this.$constrainWrapLimit(_,m.min,m.max);return E!=this.$wrapLimit&&E>1?(this.$wrapLimit=E,this.$modified=!0,this.$useWrapMode&&(this.$updateWrapData(0,this.getLength()-1),this.$resetRowCache(0),this._signal("changeWrapLimit")),!0):!1},k.prototype.$constrainWrapLimit=function(_,y,m){return y&&(_=Math.max(y,_)),m&&(_=Math.min(m,_)),_},k.prototype.getWrapLimit=function(){return this.$wrapLimit},k.prototype.setWrapLimit=function(_){this.setWrapLimitRange(_,_)},k.prototype.getWrapLimitRange=function(){return{min:this.$wrapLimitRange.min,max:this.$wrapLimitRange.max}},k.prototype.$updateInternalDataOnChange=function(_){var y=this.$useWrapMode,m=_.action,E=_.start,I=_.end,N=E.row,W=I.row,z=W-N,U=null;if(this.$updating=!0,z!=0)if(m==="remove"){this[y?"$wrapData":"$rowLengthCache"].splice(N,z);var j=this.$foldData;U=this.getFoldsInRange(_),this.removeFolds(U);var q=this.getFoldLine(I.row),Y=0;if(q){q.addRemoveChars(I.row,I.column,E.column-I.column),q.shiftRow(-z);var t0=this.getFoldLine(N);t0&&t0!==q&&(t0.merge(q),q=t0),Y=j.indexOf(q)+1}for(Y;Y=I.row&&q.shiftRow(-z)}W=N}else{var n0=Array(z);n0.unshift(N,0);var u0=y?this.$wrapData:this.$rowLengthCache;u0.splice.apply(u0,n0);var j=this.$foldData,q=this.getFoldLine(N),Y=0;if(q){var h0=q.range.compareInside(E.row,E.column);h0==0?(q=q.split(E.row,E.column),q&&(q.shiftRow(z),q.addRemoveChars(W,0,I.column-E.column))):h0==-1&&(q.addRemoveChars(N,0,I.column-E.column),q.shiftRow(z)),Y=j.indexOf(q)+1}for(Y;Y=N&&q.shiftRow(z)}}else{z=Math.abs(_.start.column-_.end.column),m==="remove"&&(U=this.getFoldsInRange(_),this.removeFolds(U),z=-z);var q=this.getFoldLine(N);q&&q.addRemoveChars(N,E.column,z)}return y&&this.$wrapData.length!=this.doc.getLength()&&console.error("doc.getLength() and $wrapData.length have to be the same!"),this.$updating=!1,y?this.$updateWrapData(N,W):this.$updateRowLengthCache(N,W),U},k.prototype.$updateRowLengthCache=function(_,y,m){this.$rowLengthCache[_]=null,this.$rowLengthCache[y]=null},k.prototype.$updateWrapData=function(_,y){var m=this.doc.getAllLines(),E=this.getTabSize(),I=this.$wrapData,N=this.$wrapLimit,W,z,U=_;for(y=Math.min(y,m.length-1);U<=y;)z=this.getFoldLine(U,z),z?(W=[],z.walk(function(j,q,Y,t0){var n0;if(j!=null){n0=this.$getDisplayTokens(j,W.length),n0[0]=b;for(var u0=1;u0y-t0;){var n0=N+y-t0;if(_[n0-1]>=v&&_[n0]>=v){Y(n0);continue}if(_[n0]==b||_[n0]==$){for(n0;n0!=N-1&&_[n0]!=b;n0--);if(n0>N){Y(n0);continue}for(n0=N+y,n0;n0<_.length&&_[n0]==$;n0++);if(n0==_.length)break;Y(n0);continue}for(var u0=Math.max(n0-(y-(y>>2)),N-1);n0>u0&&_[n0]u0&&_[n0]u0&&_[n0]==S;)n0--}else for(;n0>u0&&_[n0]u0){Y(++n0);continue}n0=N+y,_[n0]==A&&n0--,Y(n0-t0)}return E},k.prototype.$getDisplayTokens=function(_,y){var m=[],E;y=y||0;for(var I=0;I<_.length;I++){var N=_.charCodeAt(I);if(N==9){E=this.getScreenTabSize(m.length+y),m.push(w);for(var W=1;W39&&N<48||N>57&&N<64?m.push(S):N>=4352&&B(N)?m.push(g,A):m.push(g)}return m},k.prototype.$getStringScreenWidth=function(_,y,m){if(y==0)return[0,0];y==null&&(y=1/0),m=m||0;var E,I;for(I=0;I<_.length&&(E=_.charCodeAt(I),E==9?m+=this.getScreenTabSize(m):E>=4352&&B(E)?m+=2:m+=1,!(m>y));I++);return[m,I]},k.prototype.getRowLength=function(_){var y=1;return this.lineWidgets&&(y+=this.lineWidgets[_]&&this.lineWidgets[_].rowCount||0),!this.$useWrapMode||!this.$wrapData[_]?y:this.$wrapData[_].length+y},k.prototype.getRowLineCount=function(_){return!this.$useWrapMode||!this.$wrapData[_]?1:this.$wrapData[_].length+1},k.prototype.getRowWrapIndent=function(_){if(this.$useWrapMode){var y=this.screenToDocumentPosition(_,Number.MAX_VALUE),m=this.$wrapData[y.row];return m.length&&m[0]=0)var z=j[q],I=this.$docRowCache[q],t0=_>j[Y-1];else var t0=!Y;for(var n0=this.getLength()-1,u0=this.getNextFoldLine(I),h0=u0?u0.start.row:1/0;z<=_&&(U=this.getRowLength(I),!(z+U>_||I>=n0));)z+=U,I++,I>h0&&(I=u0.end.row+1,u0=this.getNextFoldLine(I,u0),h0=u0?u0.start.row:1/0),t0&&(this.$docRowCache.push(I),this.$screenRowCache.push(z));if(u0&&u0.start.row<=I)E=this.getFoldDisplayLine(u0),I=u0.start.row;else{if(z+U<=_||I>n0)return{row:n0,column:this.getLine(n0).length};E=this.getLine(I),u0=null}var m0=0,p0=Math.floor(_-z);if(this.$useWrapMode){var b0=this.$wrapData[I];b0&&(W=b0[p0],p0>0&&b0.length&&(m0=b0.indent,N=b0[p0-1]||b0[b0.length-1],E=E.substring(N)))}return m!==void 0&&this.$bidiHandler.isBidiRow(z+p0,I,p0)&&(y=this.$bidiHandler.offsetToCol(m)),N+=this.$getStringScreenWidth(E,y-m0)[1],this.$useWrapMode&&N>=W&&(N=W-1),u0?u0.idxToPosition(N):{row:I,column:N}},k.prototype.documentToScreenPosition=function(_,y){if(typeof y=="undefined")var m=this.$clipPositionToDocument(_.row,_.column);else m=this.$clipPositionToDocument(_,y);_=m.row,y=m.column;var E=0,I=null,N=null;N=this.getFoldAt(_,y,1),N&&(_=N.start.row,y=N.start.column);var W,z=0,U=this.$docRowCache,j=this.$getRowCacheIndex(U,_),q=U.length;if(q&&j>=0)var z=U[j],E=this.$screenRowCache[j],Y=_>U[q-1];else var Y=!q;for(var t0=this.getNextFoldLine(z),n0=t0?t0.start.row:1/0;z<_;){if(z>=n0){if(W=t0.end.row+1,W>_)break;t0=this.getNextFoldLine(W,t0),n0=t0?t0.start.row:1/0}else W=z+1;E+=this.getRowLength(z),z=W,Y&&(this.$docRowCache.push(z),this.$screenRowCache.push(E))}var u0="";t0&&z>=n0?(u0=this.getFoldDisplayLine(t0,_,y),I=t0.start.row):(u0=this.getLine(_).substring(0,y),I=_);var h0=0;if(this.$useWrapMode){var m0=this.$wrapData[I];if(m0){for(var p0=0;u0.length>=m0[p0];)E++,p0++;u0=u0.substring(m0[p0-1]||0,u0.length),h0=p0>0?m0.indent:0}}return this.lineWidgets&&this.lineWidgets[z]&&this.lineWidgets[z].rowsAbove&&(E+=this.lineWidgets[z].rowsAbove),{row:E,column:h0+this.$getStringScreenWidth(u0)[0]}},k.prototype.documentToScreenColumn=function(_,y){return this.documentToScreenPosition(_,y).column},k.prototype.documentToScreenRow=function(_,y){return this.documentToScreenPosition(_,y).row},k.prototype.getScreenLength=function(){var _=0,y=null;if(this.$useWrapMode)for(var I=this.$wrapData.length,N=0,E=0,y=this.$foldData[E++],W=y?y.start.row:1/0;NW&&(N=y.end.row+1,y=this.$foldData[E++],W=y?y.start.row:1/0)}else{_=this.getLength();for(var m=this.$foldData,E=0;Em));N++);return[E,N]})},k.prototype.destroy=function(){this.destroyed||(this.bgTokenizer.setDocument(null),this.bgTokenizer.cleanup(),this.destroyed=!0),this.$stopWorker(),this.removeAllListeners(),this.doc&&this.doc.off("change",this.$onChange),this.selection.detach()},k}();p.$uid=0,p.prototype.$modes=d.$modes,p.prototype.getValue=p.prototype.toString,p.prototype.$defaultUndoManager={undo:function(){},redo:function(){},hasUndo:function(){},hasRedo:function(){},reset:function(){},add:function(){},addSelection:function(){},startNewGroup:function(){},addSession:function(){}},p.prototype.$overwrite=!1,p.prototype.$mode=null,p.prototype.$modeId=null,p.prototype.$scrollTop=0,p.prototype.$scrollLeft=0,p.prototype.$wrapLimit=80,p.prototype.$useWrapMode=!1,p.prototype.$wrapLimitRange={min:null,max:null},p.prototype.lineWidgets=null,p.prototype.isFullWidth=B,L.implement(p.prototype,h);var g=1,A=2,b=3,$=4,S=9,v=10,w=11,O=12;function B(k){return k<4352?!1:k>=4352&&k<=4447||k>=4515&&k<=4519||k>=4602&&k<=4607||k>=9001&&k<=9002||k>=11904&&k<=11929||k>=11931&&k<=12019||k>=12032&&k<=12245||k>=12272&&k<=12283||k>=12288&&k<=12350||k>=12353&&k<=12438||k>=12441&&k<=12543||k>=12549&&k<=12589||k>=12593&&k<=12686||k>=12688&&k<=12730||k>=12736&&k<=12771||k>=12784&&k<=12830||k>=12832&&k<=12871||k>=12880&&k<=13054||k>=13056&&k<=19903||k>=19968&&k<=42124||k>=42128&&k<=42182||k>=43360&&k<=43388||k>=44032&&k<=55203||k>=55216&&k<=55238||k>=55243&&k<=55291||k>=63744&&k<=64255||k>=65040&&k<=65049||k>=65072&&k<=65106||k>=65108&&k<=65126||k>=65128&&k<=65131||k>=65281&&k<=65376||k>=65504&&k<=65510}n("./edit_session/folding").Folding.call(p.prototype),n("./edit_session/bracket_match").BracketMatch.call(p.prototype),d.defineOptions(p.prototype,"session",{wrap:{set:function(k){if(!k||k=="off"?k=!1:k=="free"?k=!0:k=="printMargin"?k=-1:typeof k=="string"&&(k=parseInt(k,10)||!1),this.$wrap!=k)if(this.$wrap=k,!k)this.setUseWrapMode(!1);else{var _=typeof k=="number"?k:null;this.setWrapLimitRange(_,_),this.setUseWrapMode(!0)}},get:function(){return this.getUseWrapMode()?this.$wrap==-1?"printMargin":this.getWrapLimitRange().min?this.$wrap:"free":"off"},handlesSet:!0},wrapMethod:{set:function(k){k=k=="auto"?this.$mode.type!="text":k!="text",k!=this.$wrapAsCode&&(this.$wrapAsCode=k,this.$useWrapMode&&(this.$useWrapMode=!1,this.setUseWrapMode(!0)))},initialValue:"auto"},indentedSoftWrap:{set:function(){this.$useWrapMode&&(this.$useWrapMode=!1,this.setUseWrapMode(!0))},initialValue:!0},firstLineNumber:{set:function(){this._signal("changeBreakpoint")},initialValue:1},useWorker:{set:function(k){this.$useWorker=k,this.$stopWorker(),k&&this.$startWorker()},initialValue:!0},useSoftTabs:{initialValue:!0},tabSize:{set:function(k){k=parseInt(k),k>0&&this.$tabSize!==k&&(this.$modified=!0,this.$rowLengthCache=[],this.$tabSize=k,this._signal("changeTabSize"))},initialValue:4,handlesSet:!0},navigateWithinSoftTabs:{initialValue:!1},foldStyle:{set:function(k){this.setFoldStyle(k)},handlesSet:!0},overwrite:{set:function(k){this._signal("changeOverwrite")},initialValue:!1},newLineMode:{set:function(k){this.doc.setNewLineMode(k)},get:function(){return this.doc.getNewLineMode()},handlesSet:!0},mode:{set:function(k){this.setMode(k)},get:function(){return this.$modeId},handlesSet:!0}}),M.EditSession=p}),ace.define("ace/search",["require","exports","module","ace/lib/lang","ace/lib/oop","ace/range"],function(n,M,G){"use strict";var L=n("./lib/lang"),T=n("./lib/oop"),C=n("./range").Range,d=function(){function l(){this.$options={}}return l.prototype.set=function(o){return T.mixin(this.$options,o),this},l.prototype.getOptions=function(){return L.copyObject(this.$options)},l.prototype.setOptions=function(o){this.$options=o},l.prototype.find=function(o){var s=this.$options,i=this.$matchIterator(o,s);if(!i)return!1;var r=null;return i.forEach(function(a,c,p,g){return r=new C(a,c,p,g),c==g&&s.start&&s.start.start&&s.skipCurrent!=!1&&r.isEqual(s.start)?(r=null,!1):!0}),r},l.prototype.findAll=function(o){var s=this.$options;if(!s.needle)return[];this.$assembleRegExp(s);var i=s.range,r=i?o.getLines(i.start.row,i.end.row):o.doc.getAllLines(),a=[],c=s.re;if(s.$isMultiLine){var p=c.length,g=r.length-p,A;e:for(var b=c.offset||0;b<=g;b++){for(var $=0;$w||(a.push(A=new C(b,w,b+p-1,O)),p>2&&(b=b+p-2))}}else for(var B=0;Bm&&a[$].end.row==E;)$--;for(a=a.slice(B,$+1),B=0,$=a.length;B<$;B++)a[B].start.row+=i.start.row,a[B].end.row+=i.start.row}return a},l.prototype.replace=function(o,s){var i=this.$options,r=this.$assembleRegExp(i);if(i.$isMultiLine)return s;if(r){var a=r.exec(o);if(!a||a[0].length!=o.length)return null;if(s=o.replace(r,s),i.preserveCase){s=s.split("");for(var c=Math.min(o.length,o.length);c--;){var p=o[c];p&&p.toLowerCase()!=p?s[c]=s[c].toUpperCase():s[c]=s[c].toLowerCase()}s=s.join("")}return s}},l.prototype.$assembleRegExp=function(o,s){if(o.needle instanceof RegExp)return o.re=o.needle;var i=o.needle;if(!o.needle)return o.re=!1;o.$supportsUnicodeFlag===void 0&&(o.$supportsUnicodeFlag=L.supportsUnicodeFlag());try{new RegExp(i,"u")}catch(c){o.$supportsUnicodeFlag=!1}o.regExp||(i=L.escapeRegExp(i)),o.wholeWord&&(i=h(i,o));var r=o.caseSensitive?"gm":"gmi";if(o.$supportsUnicodeFlag&&(r+="u"),o.$isMultiLine=!s&&/[\n\r]/.test(i),o.$isMultiLine)return o.re=this.$assembleMultilineRegExp(i,r);try{var a=new RegExp(i,r)}catch(c){a=!1}return o.re=a},l.prototype.$assembleMultilineRegExp=function(o,s){for(var i=o.replace(/\r\n|\r|\n/g,`$ -^`).split(` -`),r=[],a=0;a=g;w--)if(S(w,Number.MAX_VALUE,v))return;if(s.wrap!=!1){for(w=A,g=p.row;w>=g;w--)if(S(w,Number.MAX_VALUE,v))return}}};else var b=function(w){var O=p.row;if(!S(O,p.column,w)){for(O=O+1;O<=A;O++)if(S(O,0,w))return;if(s.wrap!=!1){for(O=g,A=p.row;O<=A;O++)if(S(O,0,w))return}}};if(s.$isMultiLine)var $=i.length,S=function(v,w,O){var B=r?v-$+1:v;if(!(B<0||B+$>o.getLength())){var k=o.getLine(B),_=k.search(i[0]);if(!(!r&&_w)&&O(B,_,B+$-1,m))return!0}}};else if(r)var S=function(w,O,B){var k=o.getLine(w),_=[],y,m=0;for(i.lastIndex=0;y=i.exec(k);){var E=y[0].length;if(m=y.index,!E){if(m>=k.length)break;i.lastIndex=m+=1}if(y.index+E>O)break;_.push(y.index,E)}for(var I=_.length-1;I>=0;I-=2){var N=_[I-1],E=_[I];if(B(w,N,w,N+E))return!0}};else var S=function(w,O,B){var k=o.getLine(w),_,y;for(i.lastIndex=O;y=i.exec(k);){var m=y[0].length;if(_=y.index,B(w,_,w,_+m))return!0;if(!m&&(i.lastIndex=_+=1,_>=k.length))return!1}};return{forEach:b}},l}();function h(l,o){var s=L.supportsLookbehind();function i(p,g){g===void 0&&(g=!0);var A=s&&o.$supportsUnicodeFlag?new RegExp("[\\p{L}\\p{N}_]","u"):new RegExp("\\w");return A.test(p)||o.regExp?s&&o.$supportsUnicodeFlag?g?"(?<=^|[^\\p{L}\\p{N}_])":"(?=[^\\p{L}\\p{N}_]|$)":"\\b":""}var r=Array.from(l),a=r[0],c=r[r.length-1];return i(a)+l+i(c,!1)}M.Search=d}),ace.define("ace/keyboard/hash_handler",["require","exports","module","ace/lib/keys","ace/lib/useragent"],function(n,M,G){"use strict";var L=this&&this.__extends||function(){var s=function(i,r){return s=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(a,c){a.__proto__=c}||function(a,c){for(var p in c)Object.prototype.hasOwnProperty.call(c,p)&&(a[p]=c[p])},s(i,r)};return function(i,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");s(i,r);function a(){this.constructor=i}i.prototype=r===null?Object.create(r):(a.prototype=r.prototype,new a)}}(),T=n("../lib/keys"),C=n("../lib/useragent"),d=T.KEY_MODS,h=function(){function s(i,r){this.$init(i,r,!1)}return s.prototype.$init=function(i,r,a){this.platform=r||(C.isMac?"mac":"win"),this.commands={},this.commandKeyBinding={},this.addCommands(i),this.$singleCommand=a},s.prototype.addCommand=function(i){this.commands[i.name]&&this.removeCommand(i),this.commands[i.name]=i,i.bindKey&&this._buildKeyHash(i)},s.prototype.removeCommand=function(i,r){var a=i&&(typeof i=="string"?i:i.name);i=this.commands[a],r||delete this.commands[a];var c=this.commandKeyBinding;for(var p in c){var g=c[p];if(g==i)delete c[p];else if(Array.isArray(g)){var A=g.indexOf(i);A!=-1&&(g.splice(A,1),g.length==1&&(c[p]=g[0]))}}},s.prototype.bindKey=function(i,r,a){if(typeof i=="object"&&i&&(a==null&&(a=i.position),i=i[this.platform]),!!i){if(typeof r=="function")return this.addCommand({exec:r,bindKey:i,name:r.name||i});i.split("|").forEach(function(c){var p="";if(c.indexOf(" ")!=-1){var g=c.split(/\s+/);c=g.pop(),g.forEach(function($){var S=this.parseKeys($),v=d[S.hashId]+S.key;p+=(p?" ":"")+v,this._addCommandToBinding(p,"chainKeys")},this),p+=" "}var A=this.parseKeys(c),b=d[A.hashId]+A.key;this._addCommandToBinding(p+b,r,a)},this)}},s.prototype._addCommandToBinding=function(i,r,a){var c=this.commandKeyBinding,p;if(!r)delete c[i];else if(!c[i]||this.$singleCommand)c[i]=r;else{Array.isArray(c[i])?(p=c[i].indexOf(r))!=-1&&c[i].splice(p,1):c[i]=[c[i]],typeof a!="number"&&(a=l(r));var g=c[i];for(p=0;pa)break}g.splice(p,0,r)}},s.prototype.addCommands=function(i){i&&Object.keys(i).forEach(function(r){var a=i[r];if(a){if(typeof a=="string")return this.bindKey(a,r);typeof a=="function"&&(a={exec:a}),typeof a=="object"&&(a.name||(a.name=r),this.addCommand(a))}},this)},s.prototype.removeCommands=function(i){Object.keys(i).forEach(function(r){this.removeCommand(i[r])},this)},s.prototype.bindKeys=function(i){Object.keys(i).forEach(function(r){this.bindKey(r,i[r])},this)},s.prototype._buildKeyHash=function(i){this.bindKey(i.bindKey,i)},s.prototype.parseKeys=function(i){var r=i.toLowerCase().split(/[\-\+]([\-\+])?/).filter(function(b){return b}),a=r.pop(),c=T[a];if(T.FUNCTION_KEYS[c])a=T.FUNCTION_KEYS[c].toLowerCase();else if(r.length){if(r.length==1&&r[0]=="shift")return{key:a.toUpperCase(),hashId:-1}}else return{key:a,hashId:-1};for(var p=0,g=r.length;g--;){var A=T.KEY_MODS[r[g]];if(A==null)return typeof console!="undefined"&&console.error("invalid modifier "+r[g]+" in "+i),!1;p|=A}return{key:a,hashId:p}},s.prototype.findKeyCommand=function(i,r){var a=d[i]+r;return this.commandKeyBinding[a]},s.prototype.handleKeyboard=function(i,r,a,c){if(!(c<0)){var p=d[r]+a,g=this.commandKeyBinding[p];return i.$keyChain&&(i.$keyChain+=" "+p,g=this.commandKeyBinding[i.$keyChain]||g),g&&(g=="chainKeys"||g[g.length-1]=="chainKeys")?(i.$keyChain=i.$keyChain||p,{command:"null"}):(i.$keyChain&&((!r||r==4)&&a.length==1?i.$keyChain=i.$keyChain.slice(0,-p.length-1):(r==-1||c>0)&&(i.$keyChain="")),{command:g})}},s.prototype.getStatusText=function(i,r){return r.$keyChain||""},s}();function l(s){return typeof s=="object"&&s.bindKey&&s.bindKey.position||(s.isDefault?-100:0)}var o=function(s){L(i,s);function i(r,a){var c=s.call(this,r,a)||this;return c.$singleCommand=!0,c}return i}(h);o.call=function(s,i,r){h.prototype.$init.call(s,i,r,!0)},h.call=function(s,i,r){h.prototype.$init.call(s,i,r,!1)},M.HashHandler=o,M.MultiHashHandler=h}),ace.define("ace/commands/command_manager",["require","exports","module","ace/lib/oop","ace/keyboard/hash_handler","ace/lib/event_emitter"],function(n,M,G){"use strict";var L=this&&this.__extends||function(){var l=function(o,s){return l=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,r){i.__proto__=r}||function(i,r){for(var a in r)Object.prototype.hasOwnProperty.call(r,a)&&(i[a]=r[a])},l(o,s)};return function(o,s){if(typeof s!="function"&&s!==null)throw new TypeError("Class extends value "+String(s)+" is not a constructor or null");l(o,s);function i(){this.constructor=o}o.prototype=s===null?Object.create(s):(i.prototype=s.prototype,new i)}}(),T=n("../lib/oop"),C=n("../keyboard/hash_handler").MultiHashHandler,d=n("../lib/event_emitter").EventEmitter,h=function(l){L(o,l);function o(s,i){var r=l.call(this,i,s)||this;return r.byName=r.commands,r.setDefaultHandler("exec",function(a){return a.args?a.command.exec(a.editor,a.args,a.event,!1):a.command.exec(a.editor,{},a.event,!0)}),r}return o.prototype.exec=function(s,i,r){if(Array.isArray(s)){for(var a=s.length;a--;)if(this.exec(s[a],i,r))return!0;return!1}if(typeof s=="string"&&(s=this.commands[s]),!s||i&&i.$readOnly&&!s.readOnly||this.$checkCommandState!=!1&&s.isAvailable&&!s.isAvailable(i))return!1;var c={editor:i,command:s,args:r};return c.returnValue=this._emit("exec",c),this._signal("afterExec",c),c.returnValue!==!1},o.prototype.toggleRecording=function(s){if(!this.$inReplay)return s&&s._emit("changeStatus"),this.recording?(this.macro.pop(),this.off("exec",this.$addCommandToMacro),this.macro.length||(this.macro=this.oldMacro),this.recording=!1):(this.$addCommandToMacro||(this.$addCommandToMacro=function(i){this.macro.push([i.command,i.args])}.bind(this)),this.oldMacro=this.macro,this.macro=[],this.on("exec",this.$addCommandToMacro),this.recording=!0)},o.prototype.replay=function(s){if(!(this.$inReplay||!this.macro)){if(this.recording)return this.toggleRecording(s);try{this.$inReplay=!0,this.macro.forEach(function(i){typeof i=="string"?this.exec(i,s):this.exec(i[0],s,i[1])},this)}finally{this.$inReplay=!1}}},o.prototype.trimMacro=function(s){return s.map(function(i){return typeof i[0]!="string"&&(i[0]=i[0].name),i[1]||(i=i[0]),i})},o}(C);T.implement(h.prototype,d),M.CommandManager=h}),ace.define("ace/commands/default_commands",["require","exports","module","ace/lib/lang","ace/config","ace/range"],function(n,M,G){"use strict";var L=n("../lib/lang"),T=n("../config"),C=n("../range").Range;function d(l,o){return{win:l,mac:o}}M.commands=[{name:"showSettingsMenu",description:"Show settings menu",bindKey:d("Ctrl-,","Command-,"),exec:function(l){T.loadModule("ace/ext/settings_menu",function(o){o.init(l),l.showSettingsMenu()})},readOnly:!0},{name:"goToNextError",description:"Go to next error",bindKey:d("Alt-E","F4"),exec:function(l){T.loadModule("ace/ext/error_marker",function(o){o.showErrorMarker(l,1)})},scrollIntoView:"animate",readOnly:!0},{name:"goToPreviousError",description:"Go to previous error",bindKey:d("Alt-Shift-E","Shift-F4"),exec:function(l){T.loadModule("ace/ext/error_marker",function(o){o.showErrorMarker(l,-1)})},scrollIntoView:"animate",readOnly:!0},{name:"selectall",description:"Select all",bindKey:d("Ctrl-A","Command-A"),exec:function(l){l.selectAll()},readOnly:!0},{name:"centerselection",description:"Center selection",bindKey:d(null,"Ctrl-L"),exec:function(l){l.centerSelection()},readOnly:!0},{name:"gotoline",description:"Go to line...",bindKey:d("Ctrl-L","Command-L"),exec:function(l,o){typeof o=="number"&&!isNaN(o)&&l.gotoLine(o),l.prompt({$type:"gotoLine"})},readOnly:!0},{name:"fold",bindKey:d("Alt-L|Ctrl-F1","Command-Alt-L|Command-F1"),exec:function(l){l.session.toggleFold(!1)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"unfold",bindKey:d("Alt-Shift-L|Ctrl-Shift-F1","Command-Alt-Shift-L|Command-Shift-F1"),exec:function(l){l.session.toggleFold(!0)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"toggleFoldWidget",description:"Toggle fold widget",bindKey:d("F2","F2"),exec:function(l){l.session.toggleFoldWidget()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"toggleParentFoldWidget",description:"Toggle parent fold widget",bindKey:d("Alt-F2","Alt-F2"),exec:function(l){l.session.toggleFoldWidget(!0)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"foldall",description:"Fold all",bindKey:d(null,"Ctrl-Command-Option-0"),exec:function(l){l.session.foldAll()},scrollIntoView:"center",readOnly:!0},{name:"foldAllComments",description:"Fold all comments",bindKey:d(null,"Ctrl-Command-Option-0"),exec:function(l){l.session.foldAllComments()},scrollIntoView:"center",readOnly:!0},{name:"foldOther",description:"Fold other",bindKey:d("Alt-0","Command-Option-0"),exec:function(l){l.session.foldAll(),l.session.unfold(l.selection.getAllRanges())},scrollIntoView:"center",readOnly:!0},{name:"unfoldall",description:"Unfold all",bindKey:d("Alt-Shift-0","Command-Option-Shift-0"),exec:function(l){l.session.unfold()},scrollIntoView:"center",readOnly:!0},{name:"findnext",description:"Find next",bindKey:d("Ctrl-K","Command-G"),exec:function(l){l.findNext()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"findprevious",description:"Find previous",bindKey:d("Ctrl-Shift-K","Command-Shift-G"),exec:function(l){l.findPrevious()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"selectOrFindNext",description:"Select or find next",bindKey:d("Alt-K","Ctrl-G"),exec:function(l){l.selection.isEmpty()?l.selection.selectWord():l.findNext()},readOnly:!0},{name:"selectOrFindPrevious",description:"Select or find previous",bindKey:d("Alt-Shift-K","Ctrl-Shift-G"),exec:function(l){l.selection.isEmpty()?l.selection.selectWord():l.findPrevious()},readOnly:!0},{name:"find",description:"Find",bindKey:d("Ctrl-F","Command-F"),exec:function(l){T.loadModule("ace/ext/searchbox",function(o){o.Search(l)})},readOnly:!0},{name:"overwrite",description:"Overwrite",bindKey:"Insert",exec:function(l){l.toggleOverwrite()},readOnly:!0},{name:"selecttostart",description:"Select to start",bindKey:d("Ctrl-Shift-Home","Command-Shift-Home|Command-Shift-Up"),exec:function(l){l.getSelection().selectFileStart()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"gotostart",description:"Go to start",bindKey:d("Ctrl-Home","Command-Home|Command-Up"),exec:function(l){l.navigateFileStart()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"selectup",description:"Select up",bindKey:d("Shift-Up","Shift-Up|Ctrl-Shift-P"),exec:function(l){l.getSelection().selectUp()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"golineup",description:"Go line up",bindKey:d("Up","Up|Ctrl-P"),exec:function(l,o){l.navigateUp(o.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttoend",description:"Select to end",bindKey:d("Ctrl-Shift-End","Command-Shift-End|Command-Shift-Down"),exec:function(l){l.getSelection().selectFileEnd()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"gotoend",description:"Go to end",bindKey:d("Ctrl-End","Command-End|Command-Down"),exec:function(l){l.navigateFileEnd()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"selectdown",description:"Select down",bindKey:d("Shift-Down","Shift-Down|Ctrl-Shift-N"),exec:function(l){l.getSelection().selectDown()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"golinedown",description:"Go line down",bindKey:d("Down","Down|Ctrl-N"),exec:function(l,o){l.navigateDown(o.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectwordleft",description:"Select word left",bindKey:d("Ctrl-Shift-Left","Option-Shift-Left"),exec:function(l){l.getSelection().selectWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotowordleft",description:"Go to word left",bindKey:d("Ctrl-Left","Option-Left"),exec:function(l){l.navigateWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttolinestart",description:"Select to line start",bindKey:d("Alt-Shift-Left","Command-Shift-Left|Ctrl-Shift-A"),exec:function(l){l.getSelection().selectLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotolinestart",description:"Go to line start",bindKey:d("Alt-Left|Home","Command-Left|Home|Ctrl-A"),exec:function(l){l.navigateLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectleft",description:"Select left",bindKey:d("Shift-Left","Shift-Left|Ctrl-Shift-B"),exec:function(l){l.getSelection().selectLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotoleft",description:"Go to left",bindKey:d("Left","Left|Ctrl-B"),exec:function(l,o){l.navigateLeft(o.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectwordright",description:"Select word right",bindKey:d("Ctrl-Shift-Right","Option-Shift-Right"),exec:function(l){l.getSelection().selectWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotowordright",description:"Go to word right",bindKey:d("Ctrl-Right","Option-Right"),exec:function(l){l.navigateWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttolineend",description:"Select to line end",bindKey:d("Alt-Shift-Right","Command-Shift-Right|Shift-End|Ctrl-Shift-E"),exec:function(l){l.getSelection().selectLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotolineend",description:"Go to line end",bindKey:d("Alt-Right|End","Command-Right|End|Ctrl-E"),exec:function(l){l.navigateLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectright",description:"Select right",bindKey:d("Shift-Right","Shift-Right"),exec:function(l){l.getSelection().selectRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotoright",description:"Go to right",bindKey:d("Right","Right|Ctrl-F"),exec:function(l,o){l.navigateRight(o.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectpagedown",description:"Select page down",bindKey:"Shift-PageDown",exec:function(l){l.selectPageDown()},readOnly:!0},{name:"pagedown",description:"Page down",bindKey:d(null,"Option-PageDown"),exec:function(l){l.scrollPageDown()},readOnly:!0},{name:"gotopagedown",description:"Go to page down",bindKey:d("PageDown","PageDown|Ctrl-V"),exec:function(l){l.gotoPageDown()},readOnly:!0},{name:"selectpageup",description:"Select page up",bindKey:"Shift-PageUp",exec:function(l){l.selectPageUp()},readOnly:!0},{name:"pageup",description:"Page up",bindKey:d(null,"Option-PageUp"),exec:function(l){l.scrollPageUp()},readOnly:!0},{name:"gotopageup",description:"Go to page up",bindKey:"PageUp",exec:function(l){l.gotoPageUp()},readOnly:!0},{name:"scrollup",description:"Scroll up",bindKey:d("Ctrl-Up",null),exec:function(l){l.renderer.scrollBy(0,-2*l.renderer.layerConfig.lineHeight)},readOnly:!0},{name:"scrolldown",description:"Scroll down",bindKey:d("Ctrl-Down",null),exec:function(l){l.renderer.scrollBy(0,2*l.renderer.layerConfig.lineHeight)},readOnly:!0},{name:"selectlinestart",description:"Select line start",bindKey:"Shift-Home",exec:function(l){l.getSelection().selectLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectlineend",description:"Select line end",bindKey:"Shift-End",exec:function(l){l.getSelection().selectLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"togglerecording",description:"Toggle recording",bindKey:d("Ctrl-Alt-E","Command-Option-E"),exec:function(l){l.commands.toggleRecording(l)},readOnly:!0},{name:"replaymacro",description:"Replay macro",bindKey:d("Ctrl-Shift-E","Command-Shift-E"),exec:function(l){l.commands.replay(l)},readOnly:!0},{name:"jumptomatching",description:"Jump to matching",bindKey:d("Ctrl-\\|Ctrl-P","Command-\\"),exec:function(l){l.jumpToMatching()},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"selecttomatching",description:"Select to matching",bindKey:d("Ctrl-Shift-\\|Ctrl-Shift-P","Command-Shift-\\"),exec:function(l){l.jumpToMatching(!0)},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"expandToMatching",description:"Expand to matching",bindKey:d("Ctrl-Shift-M","Ctrl-Shift-M"),exec:function(l){l.jumpToMatching(!0,!0)},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"passKeysToBrowser",description:"Pass keys to browser",bindKey:d(null,null),exec:function(){},passEvent:!0,readOnly:!0},{name:"copy",description:"Copy",exec:function(l){},readOnly:!0},{name:"cut",description:"Cut",exec:function(l){var o=l.$copyWithEmptySelection&&l.selection.isEmpty(),s=o?l.selection.getLineRange():l.selection.getRange();l._emit("cut",s),s.isEmpty()||l.session.remove(s),l.clearSelection()},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"paste",description:"Paste",exec:function(l,o){l.$handlePaste(o)},scrollIntoView:"cursor"},{name:"removeline",description:"Remove line",bindKey:d("Ctrl-D","Command-D"),exec:function(l){l.removeLines()},scrollIntoView:"cursor",multiSelectAction:"forEachLine"},{name:"duplicateSelection",description:"Duplicate selection",bindKey:d("Ctrl-Shift-D","Command-Shift-D"),exec:function(l){l.duplicateSelection()},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"sortlines",description:"Sort lines",bindKey:d("Ctrl-Alt-S","Command-Alt-S"),exec:function(l){l.sortLines()},scrollIntoView:"selection",multiSelectAction:"forEachLine"},{name:"togglecomment",description:"Toggle comment",bindKey:d("Ctrl-/","Command-/"),exec:function(l){l.toggleCommentLines()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"toggleBlockComment",description:"Toggle block comment",bindKey:d("Ctrl-Shift-/","Command-Shift-/"),exec:function(l){l.toggleBlockComment()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"modifyNumberUp",description:"Modify number up",bindKey:d("Ctrl-Shift-Up","Alt-Shift-Up"),exec:function(l){l.modifyNumber(1)},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"modifyNumberDown",description:"Modify number down",bindKey:d("Ctrl-Shift-Down","Alt-Shift-Down"),exec:function(l){l.modifyNumber(-1)},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"replace",description:"Replace",bindKey:d("Ctrl-H","Command-Option-F"),exec:function(l){T.loadModule("ace/ext/searchbox",function(o){o.Search(l,!0)})}},{name:"undo",description:"Undo",bindKey:d("Ctrl-Z","Command-Z"),exec:function(l){l.undo()}},{name:"redo",description:"Redo",bindKey:d("Ctrl-Shift-Z|Ctrl-Y","Command-Shift-Z|Command-Y"),exec:function(l){l.redo()}},{name:"copylinesup",description:"Copy lines up",bindKey:d("Alt-Shift-Up","Command-Option-Up"),exec:function(l){l.copyLinesUp()},scrollIntoView:"cursor"},{name:"movelinesup",description:"Move lines up",bindKey:d("Alt-Up","Option-Up"),exec:function(l){l.moveLinesUp()},scrollIntoView:"cursor"},{name:"copylinesdown",description:"Copy lines down",bindKey:d("Alt-Shift-Down","Command-Option-Down"),exec:function(l){l.copyLinesDown()},scrollIntoView:"cursor"},{name:"movelinesdown",description:"Move lines down",bindKey:d("Alt-Down","Option-Down"),exec:function(l){l.moveLinesDown()},scrollIntoView:"cursor"},{name:"del",description:"Delete",bindKey:d("Delete","Delete|Ctrl-D|Shift-Delete"),exec:function(l){l.remove("right")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"backspace",description:"Backspace",bindKey:d("Shift-Backspace|Backspace","Ctrl-Backspace|Shift-Backspace|Backspace|Ctrl-H"),exec:function(l){l.remove("left")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"cut_or_delete",description:"Cut or delete",bindKey:d("Shift-Delete",null),exec:function(l){if(l.selection.isEmpty())l.remove("left");else return!1},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolinestart",description:"Remove to line start",bindKey:d("Alt-Backspace","Command-Backspace"),exec:function(l){l.removeToLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolineend",description:"Remove to line end",bindKey:d("Alt-Delete","Ctrl-K|Command-Delete"),exec:function(l){l.removeToLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolinestarthard",description:"Remove to line start hard",bindKey:d("Ctrl-Shift-Backspace",null),exec:function(l){var o=l.selection.getRange();o.start.column=0,l.session.remove(o)},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolineendhard",description:"Remove to line end hard",bindKey:d("Ctrl-Shift-Delete",null),exec:function(l){var o=l.selection.getRange();o.end.column=Number.MAX_VALUE,l.session.remove(o)},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removewordleft",description:"Remove word left",bindKey:d("Ctrl-Backspace","Alt-Backspace|Ctrl-Alt-Backspace"),exec:function(l){l.removeWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removewordright",description:"Remove word right",bindKey:d("Ctrl-Delete","Alt-Delete"),exec:function(l){l.removeWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"outdent",description:"Outdent",bindKey:d("Shift-Tab","Shift-Tab"),exec:function(l){l.blockOutdent()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"indent",description:"Indent",bindKey:d("Tab","Tab"),exec:function(l){l.indent()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"blockoutdent",description:"Block outdent",bindKey:d("Ctrl-[","Ctrl-["),exec:function(l){l.blockOutdent()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"blockindent",description:"Block indent",bindKey:d("Ctrl-]","Ctrl-]"),exec:function(l){l.blockIndent()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"insertstring",description:"Insert string",exec:function(l,o){l.insert(o)},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"inserttext",description:"Insert text",exec:function(l,o){l.insert(L.stringRepeat(o.text||"",o.times||1))},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"splitline",description:"Split line",bindKey:d(null,"Ctrl-O"),exec:function(l){l.splitLine()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"transposeletters",description:"Transpose letters",bindKey:d("Alt-Shift-X","Ctrl-T"),exec:function(l){l.transposeLetters()},multiSelectAction:function(l){l.transposeSelections(1)},scrollIntoView:"cursor"},{name:"touppercase",description:"To uppercase",bindKey:d("Ctrl-U","Ctrl-U"),exec:function(l){l.toUpperCase()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"tolowercase",description:"To lowercase",bindKey:d("Ctrl-Shift-U","Ctrl-Shift-U"),exec:function(l){l.toLowerCase()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"autoindent",description:"Auto Indent",bindKey:d(null,null),exec:function(l){l.autoIndent()},multiSelectAction:"forEachLine",scrollIntoView:"animate"},{name:"expandtoline",description:"Expand to line",bindKey:d("Ctrl-Shift-L","Command-Shift-L"),exec:function(l){var o=l.selection.getRange();o.start.column=o.end.column=0,o.end.row++,l.selection.setRange(o,!1)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"openlink",bindKey:d("Ctrl+F3","F3"),exec:function(l){l.openLink()}},{name:"joinlines",description:"Join lines",bindKey:d(null,null),exec:function(l){for(var o=l.selection.isBackwards(),s=o?l.selection.getSelectionLead():l.selection.getSelectionAnchor(),i=o?l.selection.getSelectionAnchor():l.selection.getSelectionLead(),r=l.session.doc.getLine(s.row).length,a=l.session.doc.getTextRange(l.selection.getRange()),c=a.replace(/\n\s*/," ").length,p=l.session.doc.getLine(s.row),g=s.row+1;g<=i.row+1;g++){var A=L.stringTrimLeft(L.stringTrimRight(l.session.doc.getLine(g)));A.length!==0&&(A=" "+A),p+=A}i.row+10?(l.selection.moveCursorTo(s.row,s.column),l.selection.selectTo(s.row,s.column+c)):(r=l.session.doc.getLine(s.row).length>r?r+1:r,l.selection.moveCursorTo(s.row,r))},multiSelectAction:"forEach",readOnly:!0},{name:"invertSelection",description:"Invert selection",bindKey:d(null,null),exec:function(l){var o=l.session.doc.getLength()-1,s=l.session.doc.getLine(o).length,i=l.selection.rangeList.ranges,r=[];i.length<1&&(i=[l.selection.getRange()]);for(var a=0;ah[l].column&&l++,i.unshift(l,0),h.splice.apply(h,i),this.$updateRows()}}},C.prototype.$updateRows=function(){var d=this.session.lineWidgets;if(d){var h=!0;d.forEach(function(l,o){if(l)for(h=!1,l.row=o;l.$oldWidget;)l.$oldWidget.row=o,l=l.$oldWidget}),h&&(this.session.lineWidgets=null)}},C.prototype.$registerLineWidget=function(d){this.session.lineWidgets||(this.session.lineWidgets=new Array(this.session.getLength()));var h=this.session.lineWidgets[d.row];return h&&(d.$oldWidget=h,h.el&&h.el.parentNode&&(h.el.parentNode.removeChild(h.el),h._inDocument=!1)),this.session.lineWidgets[d.row]=d,d},C.prototype.addLineWidget=function(d){if(this.$registerLineWidget(d),d.session=this.session,!this.editor)return d;var h=this.editor.renderer;d.html&&!d.el&&(d.el=L.createElement("div"),d.el.innerHTML=d.html),d.text&&!d.el&&(d.el=L.createElement("div"),d.el.textContent=d.text),d.el&&(L.addCssClass(d.el,"ace_lineWidgetContainer"),d.className&&L.addCssClass(d.el,d.className),d.el.style.position="absolute",d.el.style.zIndex=5,h.container.appendChild(d.el),d._inDocument=!0,d.coverGutter||(d.el.style.zIndex=3),d.pixelHeight==null&&(d.pixelHeight=d.el.offsetHeight)),d.rowCount==null&&(d.rowCount=d.pixelHeight/h.layerConfig.lineHeight);var l=this.session.getFoldAt(d.row,0);if(d.$fold=l,l){var o=this.session.lineWidgets;d.row==l.end.row&&!o[l.start.row]?o[l.start.row]=d:d.hidden=!0}return this.session._emit("changeFold",{data:{start:{row:d.row}}}),this.$updateRows(),this.renderWidgets(null,h),this.onWidgetChanged(d),d},C.prototype.removeLineWidget=function(d){if(d._inDocument=!1,d.session=null,d.el&&d.el.parentNode&&d.el.parentNode.removeChild(d.el),d.editor&&d.editor.destroy)try{d.editor.destroy()}catch(l){}if(this.session.lineWidgets){var h=this.session.lineWidgets[d.row];if(h==d)this.session.lineWidgets[d.row]=d.$oldWidget,d.$oldWidget&&this.onWidgetChanged(d.$oldWidget);else for(;h;){if(h.$oldWidget==d){h.$oldWidget=d.$oldWidget;break}h=h.$oldWidget}}this.session._emit("changeFold",{data:{start:{row:d.row}}}),this.$updateRows()},C.prototype.getWidgetsAtRow=function(d){for(var h=this.session.lineWidgets,l=h&&h[d],o=[];l;)o.push(l),l=l.$oldWidget;return o},C.prototype.onWidgetChanged=function(d){this.session._changedWidgets.push(d),this.editor&&this.editor.renderer.updateFull()},C.prototype.measureWidgets=function(d,h){var l=this.session._changedWidgets,o=h.layerConfig;if(!(!l||!l.length)){for(var s=1/0,i=0;i0&&!o[s];)s--;this.firstRow=l.firstRow,this.lastRow=l.lastRow,h.$cursorLayer.config=l;for(var r=s;r<=i;r++){var a=o[r];if(!(!a||!a.el)){if(a.hidden){a.el.style.top=-100-(a.pixelHeight||0)+"px";continue}a._inDocument||(a._inDocument=!0,h.container.appendChild(a.el));var c=h.$cursorLayer.getPixelPosition({row:r,column:0},!0).top;a.coverLine||(c+=l.lineHeight*this.session.getRowLineCount(a.row)),a.el.style.top=c-l.offset+"px";var p=a.coverGutter?0:h.gutterWidth;a.fixedWidth||(p-=h.scrollLeft),a.el.style.left=p+"px",a.fullWidth&&a.screenWidth&&(a.el.style.minWidth=l.width+2*l.padding+"px"),a.fixedWidth?a.el.style.right=h.scrollBar.getWidth()+"px":a.el.style.right=""}}}},C}();M.LineWidgets=T}),ace.define("ace/keyboard/gutter_handler",["require","exports","module","ace/lib/keys","ace/mouse/default_gutter_handler"],function(n,M,G){"use strict";var L=n("../lib/keys"),T=n("../mouse/default_gutter_handler").GutterTooltip,C=function(){function h(l){this.editor=l,this.gutterLayer=l.renderer.$gutterLayer,this.element=l.renderer.$gutter,this.lines=l.renderer.$gutterLayer.$lines,this.activeRowIndex=null,this.activeLane=null,this.annotationTooltip=new T(this.editor)}return h.prototype.addListener=function(){this.element.addEventListener("keydown",this.$onGutterKeyDown.bind(this)),this.element.addEventListener("focusout",this.$blurGutter.bind(this)),this.editor.on("mousewheel",this.$blurGutter.bind(this))},h.prototype.removeListener=function(){this.element.removeEventListener("keydown",this.$onGutterKeyDown.bind(this)),this.element.removeEventListener("focusout",this.$blurGutter.bind(this)),this.editor.off("mousewheel",this.$blurGutter.bind(this))},h.prototype.$onGutterKeyDown=function(l){if(this.annotationTooltip.isOpen){l.preventDefault(),l.keyCode===L.escape&&this.annotationTooltip.hideTooltip();return}if(l.target===this.element){if(l.keyCode!=L.enter)return;l.preventDefault();var o=this.editor.getCursorPosition().row;this.editor.isRowVisible(o)||this.editor.scrollToLine(o,!0,!0),setTimeout(function(){var s=this.$rowToRowIndex(this.gutterLayer.$cursorCell.row),i=this.$findNearestFoldWidget(s),r=this.$findNearestAnnotation(s);if(!(i===null&&r===null)){if(i===null&&r!==null){this.activeRowIndex=r,this.activeLane="annotation",this.$focusAnnotation(this.activeRowIndex);return}if(i!==null&&r===null){this.activeRowIndex=i,this.activeLane="fold",this.$focusFoldWidget(this.activeRowIndex);return}if(Math.abs(r-s)0||l+o=0&&this.$isFoldWidgetVisible(l-o))return l-o;if(l+o<=this.lines.getLength()-1&&this.$isFoldWidgetVisible(l+o))return l+o}return null},h.prototype.$findNearestAnnotation=function(l){if(this.$isAnnotationVisible(l))return l;for(var o=0;l-o>0||l+o=0&&this.$isAnnotationVisible(l-o))return l-o;if(l+o<=this.lines.getLength()-1&&this.$isAnnotationVisible(l+o))return l+o}return null},h.prototype.$focusFoldWidget=function(l){if(l!=null){var o=this.$getFoldWidget(l);o.classList.add(this.editor.renderer.keyboardFocusClassName),o.focus()}},h.prototype.$focusAnnotation=function(l){if(l!=null){var o=this.$getAnnotation(l);o.classList.add(this.editor.renderer.keyboardFocusClassName),o.focus()}},h.prototype.$blurFoldWidget=function(l){var o=this.$getFoldWidget(l);o.classList.remove(this.editor.renderer.keyboardFocusClassName),o.blur()},h.prototype.$blurAnnotation=function(l){var o=this.$getAnnotation(l);o.classList.remove(this.editor.renderer.keyboardFocusClassName),o.blur()},h.prototype.$moveFoldWidgetUp=function(){for(var l=this.activeRowIndex;l>0;)if(l--,this.$isFoldWidgetVisible(l)){this.$blurFoldWidget(this.activeRowIndex),this.activeRowIndex=l,this.$focusFoldWidget(this.activeRowIndex);return}},h.prototype.$moveFoldWidgetDown=function(){for(var l=this.activeRowIndex;l0;)if(l--,this.$isAnnotationVisible(l)){this.$blurAnnotation(this.activeRowIndex),this.activeRowIndex=l,this.$focusAnnotation(this.activeRowIndex);return}},h.prototype.$moveAnnotationDown=function(){for(var l=this.activeRowIndex;l=y.length&&(y=void 0),{value:y&&y[I++],done:!y}}};throw new TypeError(m?"Object is not iterable.":"Symbol.iterator is not defined.")},T=n("./lib/oop"),C=n("./lib/dom"),d=n("./lib/lang"),h=n("./lib/useragent"),l=n("./keyboard/textinput").TextInput,o=n("./mouse/mouse_handler").MouseHandler,s=n("./mouse/fold_handler").FoldHandler,i=n("./keyboard/keybinding").KeyBinding,r=n("./edit_session").EditSession,a=n("./search").Search,c=n("./range").Range,p=n("./lib/event_emitter").EventEmitter,g=n("./commands/command_manager").CommandManager,A=n("./commands/default_commands").commands,b=n("./config"),$=n("./token_iterator").TokenIterator,S=n("./line_widgets").LineWidgets,v=n("./keyboard/gutter_handler").GutterKeyboardHandler,w=n("./config").nls,O=n("./clipboard"),B=n("./lib/keys"),k=function(){function y(m,E,I){this.$toDestroy=[];var N=m.getContainerElement();this.container=N,this.renderer=m,this.id="editor"+ ++y.$uid,this.commands=new g(h.isMac?"mac":"win",A),typeof document=="object"&&(this.textInput=new l(m.getTextAreaContainer(),this),this.renderer.textarea=this.textInput.getElement(),this.$mouseHandler=new o(this),new s(this)),this.keyBinding=new i(this),this.$search=new a().set({wrap:!0}),this.$historyTracker=this.$historyTracker.bind(this),this.commands.on("exec",this.$historyTracker),this.$initOperationListeners(),this._$emitInputEvent=d.delayedCall(function(){this._signal("input",{}),this.session&&!this.session.destroyed&&this.session.bgTokenizer.scheduleStart()}.bind(this)),this.on("change",function(W,z){z._$emitInputEvent.schedule(31)}),this.setSession(E||I&&I.session||new r("")),b.resetOptions(this),I&&this.setOptions(I),b._signal("editor",this)}return y.prototype.$initOperationListeners=function(){this.commands.on("exec",this.startOperation.bind(this),!0),this.commands.on("afterExec",this.endOperation.bind(this),!0),this.$opResetTimer=d.delayedCall(this.endOperation.bind(this,!0)),this.on("change",function(){this.curOp||(this.startOperation(),this.curOp.selectionBefore=this.$lastSel),this.curOp.docChanged=!0}.bind(this),!0),this.on("changeSelection",function(){this.curOp||(this.startOperation(),this.curOp.selectionBefore=this.$lastSel),this.curOp.selectionChanged=!0}.bind(this),!0)},y.prototype.startOperation=function(m){if(this.curOp){if(!m||this.curOp.command)return;this.prevOp=this.curOp}m||(this.previousCommand=null,m={}),this.$opResetTimer.schedule(),this.curOp=this.session.curOp={command:m.command||{},args:m.args,scrollTop:this.renderer.scrollTop},this.curOp.selectionBefore=this.selection.toJSON()},y.prototype.endOperation=function(m){if(this.curOp&&this.session){if(m&&m.returnValue===!1||!this.session)return this.curOp=null;if(m==!0&&this.curOp.command&&this.curOp.command.name=="mouse"||(this._signal("beforeEndOperation"),!this.curOp))return;var E=this.curOp.command,I=E&&E.scrollIntoView;if(I){switch(I){case"center-animate":I="animate";case"center":this.renderer.scrollCursorIntoView(null,.5);break;case"animate":case"cursor":this.renderer.scrollCursorIntoView();break;case"selectionPart":var N=this.selection.getRange(),W=this.renderer.layerConfig;(N.start.row>=W.lastRow||N.end.row<=W.firstRow)&&this.renderer.scrollSelectionIntoView(this.selection.anchor,this.selection.lead);break;default:break}I=="animate"&&this.renderer.animateScrolling(this.curOp.scrollTop)}var z=this.selection.toJSON();this.curOp.selectionAfter=z,this.$lastSel=this.selection.toJSON(),this.session.getUndoManager().addSelection(z),this.prevOp=this.curOp,this.curOp=null}},y.prototype.$historyTracker=function(m){if(this.$mergeUndoDeltas){var E=this.prevOp,I=this.$mergeableCommands,N=E.command&&m.command.name==E.command.name;if(m.command.name=="insertstring"){var W=m.args;this.mergeNextCommand===void 0&&(this.mergeNextCommand=!0),N=N&&this.mergeNextCommand&&(!/\s/.test(W)||/\s/.test(E.args)),this.mergeNextCommand=!0}else N=N&&I.indexOf(m.command.name)!==-1;this.$mergeUndoDeltas!="always"&&Date.now()-this.sequenceStartTime>2e3&&(N=!1),N?this.session.mergeUndoDeltas=!0:I.indexOf(m.command.name)!==-1&&(this.sequenceStartTime=Date.now())}},y.prototype.setKeyboardHandler=function(m,E){if(m&&typeof m=="string"&&m!="ace"){this.$keybindingId=m;var I=this;b.loadModule(["keybinding",m],function(N){I.$keybindingId==m&&I.keyBinding.setKeyboardHandler(N&&N.handler),E&&E()})}else this.$keybindingId=null,this.keyBinding.setKeyboardHandler(m),E&&E()},y.prototype.getKeyboardHandler=function(){return this.keyBinding.getKeyboardHandler()},y.prototype.setSession=function(m){if(this.session!=m){this.curOp&&this.endOperation(),this.curOp={};var E=this.session;if(E){this.session.off("change",this.$onDocumentChange),this.session.off("changeMode",this.$onChangeMode),this.session.off("tokenizerUpdate",this.$onTokenizerUpdate),this.session.off("changeTabSize",this.$onChangeTabSize),this.session.off("changeWrapLimit",this.$onChangeWrapLimit),this.session.off("changeWrapMode",this.$onChangeWrapMode),this.session.off("changeFold",this.$onChangeFold),this.session.off("changeFrontMarker",this.$onChangeFrontMarker),this.session.off("changeBackMarker",this.$onChangeBackMarker),this.session.off("changeBreakpoint",this.$onChangeBreakpoint),this.session.off("changeAnnotation",this.$onChangeAnnotation),this.session.off("changeOverwrite",this.$onCursorChange),this.session.off("changeScrollTop",this.$onScrollTopChange),this.session.off("changeScrollLeft",this.$onScrollLeftChange);var I=this.session.getSelection();I.off("changeCursor",this.$onCursorChange),I.off("changeSelection",this.$onSelectionChange)}this.session=m,m?(this.$onDocumentChange=this.onDocumentChange.bind(this),m.on("change",this.$onDocumentChange),this.renderer.setSession(m),this.$onChangeMode=this.onChangeMode.bind(this),m.on("changeMode",this.$onChangeMode),this.$onTokenizerUpdate=this.onTokenizerUpdate.bind(this),m.on("tokenizerUpdate",this.$onTokenizerUpdate),this.$onChangeTabSize=this.renderer.onChangeTabSize.bind(this.renderer),m.on("changeTabSize",this.$onChangeTabSize),this.$onChangeWrapLimit=this.onChangeWrapLimit.bind(this),m.on("changeWrapLimit",this.$onChangeWrapLimit),this.$onChangeWrapMode=this.onChangeWrapMode.bind(this),m.on("changeWrapMode",this.$onChangeWrapMode),this.$onChangeFold=this.onChangeFold.bind(this),m.on("changeFold",this.$onChangeFold),this.$onChangeFrontMarker=this.onChangeFrontMarker.bind(this),this.session.on("changeFrontMarker",this.$onChangeFrontMarker),this.$onChangeBackMarker=this.onChangeBackMarker.bind(this),this.session.on("changeBackMarker",this.$onChangeBackMarker),this.$onChangeBreakpoint=this.onChangeBreakpoint.bind(this),this.session.on("changeBreakpoint",this.$onChangeBreakpoint),this.$onChangeAnnotation=this.onChangeAnnotation.bind(this),this.session.on("changeAnnotation",this.$onChangeAnnotation),this.$onCursorChange=this.onCursorChange.bind(this),this.session.on("changeOverwrite",this.$onCursorChange),this.$onScrollTopChange=this.onScrollTopChange.bind(this),this.session.on("changeScrollTop",this.$onScrollTopChange),this.$onScrollLeftChange=this.onScrollLeftChange.bind(this),this.session.on("changeScrollLeft",this.$onScrollLeftChange),this.selection=m.getSelection(),this.selection.on("changeCursor",this.$onCursorChange),this.$onSelectionChange=this.onSelectionChange.bind(this),this.selection.on("changeSelection",this.$onSelectionChange),this.onChangeMode(),this.onCursorChange(),this.onScrollTopChange(),this.onScrollLeftChange(),this.onSelectionChange(),this.onChangeFrontMarker(),this.onChangeBackMarker(),this.onChangeBreakpoint(),this.onChangeAnnotation(),this.session.getUseWrapMode()&&this.renderer.adjustWrapLimit(),this.renderer.updateFull()):(this.selection=null,this.renderer.setSession(m)),this._signal("changeSession",{session:m,oldSession:E}),this.curOp=null,E&&E._signal("changeEditor",{oldEditor:this}),m&&m._signal("changeEditor",{editor:this}),m&&!m.destroyed&&m.bgTokenizer.scheduleStart()}},y.prototype.getSession=function(){return this.session},y.prototype.setValue=function(m,E){return this.session.doc.setValue(m),E?E==1?this.navigateFileEnd():E==-1&&this.navigateFileStart():this.selectAll(),m},y.prototype.getValue=function(){return this.session.getValue()},y.prototype.getSelection=function(){return this.selection},y.prototype.resize=function(m){this.renderer.onResize(m)},y.prototype.setTheme=function(m,E){this.renderer.setTheme(m,E)},y.prototype.getTheme=function(){return this.renderer.getTheme()},y.prototype.setStyle=function(m){this.renderer.setStyle(m)},y.prototype.unsetStyle=function(m){this.renderer.unsetStyle(m)},y.prototype.getFontSize=function(){return this.getOption("fontSize")||C.computedStyle(this.container).fontSize},y.prototype.setFontSize=function(m){this.setOption("fontSize",m)},y.prototype.$highlightBrackets=function(){if(!this.$highlightPending){var m=this;this.$highlightPending=!0,setTimeout(function(){m.$highlightPending=!1;var E=m.session;if(!(!E||E.destroyed)){E.$bracketHighlight&&(E.$bracketHighlight.markerIds.forEach(function(t0){E.removeMarker(t0)}),E.$bracketHighlight=null);var I=m.getCursorPosition(),N=m.getKeyboardHandler(),W=N&&N.$getDirectionForHighlight&&N.$getDirectionForHighlight(m),z=E.getMatchingBracketRanges(I,W);if(!z){var U=new $(E,I.row,I.column),j=U.getCurrentToken();if(j&&/\b(?:tag-open|tag-name)/.test(j.type)){var q=E.getMatchingTags(I);q&&(z=[q.openTagName,q.closeTagName])}}if(!z&&E.$mode.getMatching&&(z=E.$mode.getMatching(m.session)),!z){m.getHighlightIndentGuides()&&m.renderer.$textLayer.$highlightIndentGuide();return}var Y="ace_bracket";Array.isArray(z)?z.length==1&&(Y="ace_error_bracket"):z=[z],z.length==2&&(c.comparePoints(z[0].end,z[1].start)==0?z=[c.fromPoints(z[0].start,z[1].end)]:c.comparePoints(z[0].start,z[1].end)==0&&(z=[c.fromPoints(z[1].start,z[0].end)])),E.$bracketHighlight={ranges:z,markerIds:z.map(function(t0){return E.addMarker(t0,Y,"text")})},m.getHighlightIndentGuides()&&m.renderer.$textLayer.$highlightIndentGuide()}},50)}},y.prototype.focus=function(){this.textInput.focus()},y.prototype.isFocused=function(){return this.textInput.isFocused()},y.prototype.blur=function(){this.textInput.blur()},y.prototype.onFocus=function(m){this.$isFocused||(this.$isFocused=!0,this.renderer.showCursor(),this.renderer.visualizeFocus(),this._emit("focus",m))},y.prototype.onBlur=function(m){this.$isFocused&&(this.$isFocused=!1,this.renderer.hideCursor(),this.renderer.visualizeBlur(),this._emit("blur",m))},y.prototype.$cursorChange=function(){this.renderer.updateCursor(),this.$highlightBrackets(),this.$updateHighlightActiveLine()},y.prototype.onDocumentChange=function(m){var E=this.session.$useWrapMode,I=m.start.row==m.end.row?m.end.row:1/0;this.renderer.updateLines(m.start.row,I,E),this._signal("change",m),this.$cursorChange()},y.prototype.onTokenizerUpdate=function(m){var E=m.data;this.renderer.updateLines(E.first,E.last)},y.prototype.onScrollTopChange=function(){this.renderer.scrollToY(this.session.getScrollTop())},y.prototype.onScrollLeftChange=function(){this.renderer.scrollToX(this.session.getScrollLeft())},y.prototype.onCursorChange=function(){this.$cursorChange(),this._signal("changeSelection")},y.prototype.$updateHighlightActiveLine=function(){var m=this.getSession(),E;if(this.$highlightActiveLine&&((this.$selectionStyle!="line"||!this.selection.isMultiLine())&&(E=this.getCursorPosition()),this.renderer.theme&&this.renderer.theme.$selectionColorConflict&&!this.selection.isEmpty()&&(E=!1),this.renderer.$maxLines&&this.session.getLength()===1&&!(this.renderer.$minLines>1)&&(E=!1)),m.$highlightLineMarker&&!E)m.removeMarker(m.$highlightLineMarker.id),m.$highlightLineMarker=null;else if(!m.$highlightLineMarker&&E){var I=new c(E.row,E.column,E.row,1/0);I.id=m.addMarker(I,"ace_active-line","screenLine"),m.$highlightLineMarker=I}else E&&(m.$highlightLineMarker.start.row=E.row,m.$highlightLineMarker.end.row=E.row,m.$highlightLineMarker.start.column=E.column,m._signal("changeBackMarker"))},y.prototype.onSelectionChange=function(m){var E=this.session;if(E.$selectionMarker&&E.removeMarker(E.$selectionMarker),E.$selectionMarker=null,this.selection.isEmpty())this.$updateHighlightActiveLine();else{var I=this.selection.getRange(),N=this.getSelectionStyle();E.$selectionMarker=E.addMarker(I,"ace_selection",N)}var W=this.$highlightSelectedWord&&this.$getSelectionHighLightRegexp();this.session.highlight(W),this._signal("changeSelection")},y.prototype.$getSelectionHighLightRegexp=function(){var m=this.session,E=this.getSelectionRange();if(!(E.isEmpty()||E.isMultiLine())){var I=E.start.column,N=E.end.column,W=m.getLine(E.start.row),z=W.substring(I,N);if(!(z.length>5e3||!/[\w\d]/.test(z))){var U=this.$search.$assembleRegExp({wholeWord:!0,caseSensitive:!0,needle:z}),j=W.substring(I-1,N+1);if(U.test(j))return U}}},y.prototype.onChangeFrontMarker=function(){this.renderer.updateFrontMarkers()},y.prototype.onChangeBackMarker=function(){this.renderer.updateBackMarkers()},y.prototype.onChangeBreakpoint=function(){this.renderer.updateBreakpoints()},y.prototype.onChangeAnnotation=function(){this.renderer.setAnnotations(this.session.getAnnotations())},y.prototype.onChangeMode=function(m){this.renderer.updateText(),this._emit("changeMode",m)},y.prototype.onChangeWrapLimit=function(){this.renderer.updateFull()},y.prototype.onChangeWrapMode=function(){this.renderer.onResize(!0)},y.prototype.onChangeFold=function(){this.$updateHighlightActiveLine(),this.renderer.updateFull()},y.prototype.getSelectedText=function(){return this.session.getTextRange(this.getSelectionRange())},y.prototype.getCopyText=function(){var m=this.getSelectedText(),E=this.session.doc.getNewLineCharacter(),I=!1;if(!m&&this.$copyWithEmptySelection){I=!0;for(var N=this.selection.getAllRanges(),W=0;Wt0.search(/\S|$/)){var j=t0.substr(W.column).search(/\S|$/);I.doc.removeInLine(W.row,W.column,W.column+j)}}this.clearSelection();var q=W.column,Y=I.getState(W.row),t0=I.getLine(W.row),n0=N.checkOutdent(Y,t0,m);if(I.insert(W,m),z&&z.selection&&(z.selection.length==2?this.selection.setSelectionRange(new c(W.row,q+z.selection[0],W.row,q+z.selection[1])):this.selection.setSelectionRange(new c(W.row+z.selection[0],z.selection[1],W.row+z.selection[2],z.selection[3]))),this.$enableAutoIndent){if(I.getDocument().isNewLine(m)){var u0=N.getNextLineIndent(Y,t0.slice(0,W.column),I.getTabString());I.insert({row:W.row+1,column:0},u0)}n0&&N.autoOutdent(Y,I,W.row)}},y.prototype.autoIndent=function(){var m=this.session,E=m.getMode(),I,N;if(this.selection.isEmpty())I=0,N=m.doc.getLength()-1;else{var W=this.getSelectionRange();I=W.start.row,N=W.end.row}for(var z="",U="",j="",q,Y,t0,n0=m.getTabString(),u0=I;u0<=N;u0++)u0>0&&(z=m.getState(u0-1),U=m.getLine(u0-1),j=E.getNextLineIndent(z,U,n0)),q=m.getLine(u0),Y=E.$getIndent(q),j!==Y&&(Y.length>0&&(t0=new c(u0,0,u0,Y.length),m.remove(t0)),j.length>0&&m.insert({row:u0,column:0},j)),E.autoOutdent(z,m,u0)},y.prototype.onTextInput=function(m,E){if(!E)return this.keyBinding.onTextInput(m);this.startOperation({command:{name:"insertstring"}});var I=this.applyComposition.bind(this,m,E);this.selection.rangeCount?this.forEachSelection(I):I(),this.endOperation()},y.prototype.applyComposition=function(m,E){if(E.extendLeft||E.extendRight){var I=this.selection.getRange();I.start.column-=E.extendLeft,I.end.column+=E.extendRight,I.start.column<0&&(I.start.row--,I.start.column+=this.session.getLine(I.start.row).length+1),this.selection.setRange(I),!m&&!I.isEmpty()&&this.remove()}if((m||!this.selection.isEmpty())&&this.insert(m,!0),E.restoreStart||E.restoreEnd){var I=this.selection.getRange();I.start.column-=E.restoreStart,I.end.column-=E.restoreEnd,this.selection.setRange(I)}},y.prototype.onCommandKey=function(m,E,I){return this.keyBinding.onCommandKey(m,E,I)},y.prototype.setOverwrite=function(m){this.session.setOverwrite(m)},y.prototype.getOverwrite=function(){return this.session.getOverwrite()},y.prototype.toggleOverwrite=function(){this.session.toggleOverwrite()},y.prototype.setScrollSpeed=function(m){this.setOption("scrollSpeed",m)},y.prototype.getScrollSpeed=function(){return this.getOption("scrollSpeed")},y.prototype.setDragDelay=function(m){this.setOption("dragDelay",m)},y.prototype.getDragDelay=function(){return this.getOption("dragDelay")},y.prototype.setSelectionStyle=function(m){this.setOption("selectionStyle",m)},y.prototype.getSelectionStyle=function(){return this.getOption("selectionStyle")},y.prototype.setHighlightActiveLine=function(m){this.setOption("highlightActiveLine",m)},y.prototype.getHighlightActiveLine=function(){return this.getOption("highlightActiveLine")},y.prototype.setHighlightGutterLine=function(m){this.setOption("highlightGutterLine",m)},y.prototype.getHighlightGutterLine=function(){return this.getOption("highlightGutterLine")},y.prototype.setHighlightSelectedWord=function(m){this.setOption("highlightSelectedWord",m)},y.prototype.getHighlightSelectedWord=function(){return this.$highlightSelectedWord},y.prototype.setAnimatedScroll=function(m){this.renderer.setAnimatedScroll(m)},y.prototype.getAnimatedScroll=function(){return this.renderer.getAnimatedScroll()},y.prototype.setShowInvisibles=function(m){this.renderer.setShowInvisibles(m)},y.prototype.getShowInvisibles=function(){return this.renderer.getShowInvisibles()},y.prototype.setDisplayIndentGuides=function(m){this.renderer.setDisplayIndentGuides(m)},y.prototype.getDisplayIndentGuides=function(){return this.renderer.getDisplayIndentGuides()},y.prototype.setHighlightIndentGuides=function(m){this.renderer.setHighlightIndentGuides(m)},y.prototype.getHighlightIndentGuides=function(){return this.renderer.getHighlightIndentGuides()},y.prototype.setShowPrintMargin=function(m){this.renderer.setShowPrintMargin(m)},y.prototype.getShowPrintMargin=function(){return this.renderer.getShowPrintMargin()},y.prototype.setPrintMarginColumn=function(m){this.renderer.setPrintMarginColumn(m)},y.prototype.getPrintMarginColumn=function(){return this.renderer.getPrintMarginColumn()},y.prototype.setReadOnly=function(m){this.setOption("readOnly",m)},y.prototype.getReadOnly=function(){return this.getOption("readOnly")},y.prototype.setBehavioursEnabled=function(m){this.setOption("behavioursEnabled",m)},y.prototype.getBehavioursEnabled=function(){return this.getOption("behavioursEnabled")},y.prototype.setWrapBehavioursEnabled=function(m){this.setOption("wrapBehavioursEnabled",m)},y.prototype.getWrapBehavioursEnabled=function(){return this.getOption("wrapBehavioursEnabled")},y.prototype.setShowFoldWidgets=function(m){this.setOption("showFoldWidgets",m)},y.prototype.getShowFoldWidgets=function(){return this.getOption("showFoldWidgets")},y.prototype.setFadeFoldWidgets=function(m){this.setOption("fadeFoldWidgets",m)},y.prototype.getFadeFoldWidgets=function(){return this.getOption("fadeFoldWidgets")},y.prototype.remove=function(m){this.selection.isEmpty()&&(m=="left"?this.selection.selectLeft():this.selection.selectRight());var E=this.getSelectionRange();if(this.getBehavioursEnabled()){var I=this.session,N=I.getState(E.start.row),W=I.getMode().transformAction(N,"deletion",this,I,E);if(E.end.column===0){var z=I.getTextRange(E);if(z[z.length-1]==` -`){var U=I.getLine(E.end.row);/^\s+$/.test(U)&&(E.end.column=U.length)}}W&&(E=W)}this.session.remove(E),this.clearSelection()},y.prototype.removeWordRight=function(){this.selection.isEmpty()&&this.selection.selectWordRight(),this.session.remove(this.getSelectionRange()),this.clearSelection()},y.prototype.removeWordLeft=function(){this.selection.isEmpty()&&this.selection.selectWordLeft(),this.session.remove(this.getSelectionRange()),this.clearSelection()},y.prototype.removeToLineStart=function(){this.selection.isEmpty()&&this.selection.selectLineStart(),this.selection.isEmpty()&&this.selection.selectLeft(),this.session.remove(this.getSelectionRange()),this.clearSelection()},y.prototype.removeToLineEnd=function(){this.selection.isEmpty()&&this.selection.selectLineEnd();var m=this.getSelectionRange();m.start.column==m.end.column&&m.start.row==m.end.row&&(m.end.column=0,m.end.row++),this.session.remove(m),this.clearSelection()},y.prototype.splitLine=function(){this.selection.isEmpty()||(this.session.remove(this.getSelectionRange()),this.clearSelection());var m=this.getCursorPosition();this.insert(` -`),this.moveCursorToPosition(m)},y.prototype.setGhostText=function(m,E){this.session.widgetManager||(this.session.widgetManager=new S(this.session),this.session.widgetManager.attach(this)),this.renderer.setGhostText(m,E)},y.prototype.removeGhostText=function(){this.session.widgetManager&&this.renderer.removeGhostText()},y.prototype.transposeLetters=function(){if(this.selection.isEmpty()){var m=this.getCursorPosition(),E=m.column;if(E!==0){var I=this.session.getLine(m.row),N,W;Ej.toLowerCase()?1:0});for(var W=new c(0,0,0,0),N=m.first;N<=m.last;N++){var z=E.getLine(N);W.start.row=N,W.end.row=N,W.end.column=z.length,E.replace(W,I[N-m.first])}},y.prototype.toggleCommentLines=function(){var m=this.session.getState(this.getCursorPosition().row),E=this.$getSelectedRows();this.session.getMode().toggleCommentLines(m,this.session,E.first,E.last)},y.prototype.toggleBlockComment=function(){var m=this.getCursorPosition(),E=this.session.getState(m.row),I=this.getSelectionRange();this.session.getMode().toggleBlockComment(E,this.session,I,m)},y.prototype.getNumberAt=function(m,E){var I=/[\-]?[0-9]+(?:\.[0-9]+)?/g;I.lastIndex=0;for(var N=this.session.getLine(m);I.lastIndex=E){var z={value:W[0],start:W.index,end:W.index+W[0].length};return z}}return null},y.prototype.modifyNumber=function(m){var E=this.selection.getCursor().row,I=this.selection.getCursor().column,N=new c(E,I-1,E,I),W=this.session.getTextRange(N);if(!isNaN(parseFloat(W))&&isFinite(W)){var z=this.getNumberAt(E,I);if(z){var U=z.value.indexOf(".")>=0?z.start+z.value.indexOf(".")+1:z.end,j=z.start+z.value.length-U,q=parseFloat(z.value);q*=Math.pow(10,j),U!==z.end&&I=U&&z<=j&&(I=k0,q.selection.clearSelection(),q.moveCursorTo(m,U+N),q.selection.selectTo(m,j+N)),U=j});for(var Y=this.$toggleWordPairs,t0,n0=0;n0=j&&U<=q&&u0.match(/((?:https?|ftp):\/\/[\S]+)/)){Y=u0.replace(/[\s:.,'";}\]]+$/,"");break}j=q}}catch(h0){I={error:h0}}finally{try{n0&&!n0.done&&(N=t0.return)&&N.call(t0)}finally{if(I)throw I.error}}return Y},y.prototype.openLink=function(){var m=this.selection.getCursor(),E=this.findLinkAt(m.row,m.column);return E&&window.open(E,"_blank"),E!=null},y.prototype.removeLines=function(){var m=this.$getSelectedRows();this.session.removeFullLines(m.first,m.last),this.clearSelection()},y.prototype.duplicateSelection=function(){var m=this.selection,E=this.session,I=m.getRange(),N=m.isBackwards();if(I.isEmpty()){var W=I.start.row;E.duplicateLines(W,W)}else{var z=N?I.start:I.end,U=E.insert(z,E.getTextRange(I),!1);I.start=z,I.end=U,m.setSelectionRange(I,N)}},y.prototype.moveLinesDown=function(){this.$moveLines(1,!1)},y.prototype.moveLinesUp=function(){this.$moveLines(-1,!1)},y.prototype.moveText=function(m,E,I){return this.session.moveText(m,E,I)},y.prototype.copyLinesUp=function(){this.$moveLines(-1,!0)},y.prototype.copyLinesDown=function(){this.$moveLines(1,!0)},y.prototype.$moveLines=function(m,E){var I,N,W=this.selection;if(!W.inMultiSelectMode||this.inVirtualSelectionMode){var z=W.toOrientedRange();I=this.$getSelectedRows(z),N=this.session.$moveLines(I.first,I.last,E?0:m),E&&m==-1&&(N=0),z.moveBy(N,0),W.fromOrientedRange(z)}else{var U=W.rangeList.ranges;W.rangeList.detach(this.session),this.inVirtualSelectionMode=!0;for(var j=0,q=0,Y=U.length,t0=0;t0h0+1)break;h0=m0.last}for(t0--,j=this.session.$moveLines(u0,h0,E?0:m),E&&m==-1&&(n0=t0+1);n0<=t0;)U[n0].moveBy(j,0),n0++;E||(j=0),q+=j}W.fromOrientedRange(W.ranges[0]),W.rangeList.attach(this.session),this.inVirtualSelectionMode=!1}},y.prototype.$getSelectedRows=function(m){return m=(m||this.getSelectionRange()).collapseRows(),{first:this.session.getRowFoldStart(m.start.row),last:this.session.getRowFoldEnd(m.end.row)}},y.prototype.onCompositionStart=function(m){this.renderer.showComposition(m)},y.prototype.onCompositionUpdate=function(m){this.renderer.setCompositionText(m)},y.prototype.onCompositionEnd=function(){this.renderer.hideComposition()},y.prototype.getFirstVisibleRow=function(){return this.renderer.getFirstVisibleRow()},y.prototype.getLastVisibleRow=function(){return this.renderer.getLastVisibleRow()},y.prototype.isRowVisible=function(m){return m>=this.getFirstVisibleRow()&&m<=this.getLastVisibleRow()},y.prototype.isRowFullyVisible=function(m){return m>=this.renderer.getFirstFullyVisibleRow()&&m<=this.renderer.getLastFullyVisibleRow()},y.prototype.$getVisibleRowCount=function(){return this.renderer.getScrollBottomRow()-this.renderer.getScrollTopRow()+1},y.prototype.$moveByPage=function(m,E){var I=this.renderer,N=this.renderer.layerConfig,W=m*Math.floor(N.height/N.lineHeight);E===!0?this.selection.$moveSelection(function(){this.moveCursorBy(W,0)}):E===!1&&(this.selection.moveCursorBy(W,0),this.selection.clearSelection());var z=I.scrollTop;I.scrollBy(0,W*N.lineHeight),E!=null&&I.scrollCursorIntoView(null,.5),I.animateScrolling(z)},y.prototype.selectPageDown=function(){this.$moveByPage(1,!0)},y.prototype.selectPageUp=function(){this.$moveByPage(-1,!0)},y.prototype.gotoPageDown=function(){this.$moveByPage(1,!1)},y.prototype.gotoPageUp=function(){this.$moveByPage(-1,!1)},y.prototype.scrollPageDown=function(){this.$moveByPage(1)},y.prototype.scrollPageUp=function(){this.$moveByPage(-1)},y.prototype.scrollToRow=function(m){this.renderer.scrollToRow(m)},y.prototype.scrollToLine=function(m,E,I,N){this.renderer.scrollToLine(m,E,I,N)},y.prototype.centerSelection=function(){var m=this.getSelectionRange(),E={row:Math.floor(m.start.row+(m.end.row-m.start.row)/2),column:Math.floor(m.start.column+(m.end.column-m.start.column)/2)};this.renderer.alignCursor(E,.5)},y.prototype.getCursorPosition=function(){return this.selection.getCursor()},y.prototype.getCursorPositionScreen=function(){return this.session.documentToScreenPosition(this.getCursorPosition())},y.prototype.getSelectionRange=function(){return this.selection.getRange()},y.prototype.selectAll=function(){this.selection.selectAll()},y.prototype.clearSelection=function(){this.selection.clearSelection()},y.prototype.moveCursorTo=function(m,E){this.selection.moveCursorTo(m,E)},y.prototype.moveCursorToPosition=function(m){this.selection.moveCursorToPosition(m)},y.prototype.jumpToMatching=function(m,E){var I=this.getCursorPosition(),N=new $(this.session,I.row,I.column),W=N.getCurrentToken(),z=0;W&&W.type.indexOf("tag-name")!==-1&&(W=N.stepBackward());var U=W||N.stepForward();if(U){var j,q=!1,Y={},t0=I.column-U.start,n0,u0={")":"(","(":"(","]":"[","[":"[","{":"{","}":"{"};do{if(U.value.match(/[{}()\[\]]/g)){for(;t01?Y[U.value]++:W.value==="=0;--z)this.$tryReplace(I[z],m)&&N++;return this.selection.setSelectionRange(W),N},y.prototype.$tryReplace=function(m,E){var I=this.session.getTextRange(m);return E=this.$search.replace(I,E),E!==null?(m.end=this.session.replace(m,E),m):null},y.prototype.getLastSearchOptions=function(){return this.$search.getOptions()},y.prototype.find=function(m,E,I){E||(E={}),typeof m=="string"||m instanceof RegExp?E.needle=m:typeof m=="object"&&T.mixin(E,m);var N=this.selection.getRange();E.needle==null&&(m=this.session.getTextRange(N)||this.$search.$options.needle,m||(N=this.session.getWordRange(N.start.row,N.start.column),m=this.session.getTextRange(N)),this.$search.set({needle:m})),this.$search.set(E),E.start||this.$search.set({start:N});var W=this.$search.find(this.session);if(E.preventScroll)return W;if(W)return this.revealRange(W,I),W;E.backwards?N.start=N.end:N.end=N.start,this.selection.setRange(N)},y.prototype.findNext=function(m,E){this.find({skipCurrent:!0,backwards:!1},m,E)},y.prototype.findPrevious=function(m,E){this.find(m,{skipCurrent:!0,backwards:!0},E)},y.prototype.revealRange=function(m,E){this.session.unfold(m),this.selection.setSelectionRange(m);var I=this.renderer.scrollTop;this.renderer.scrollSelectionIntoView(m.start,m.end,.5),E!==!1&&this.renderer.animateScrolling(I)},y.prototype.undo=function(){this.session.getUndoManager().undo(this.session),this.renderer.scrollCursorIntoView(null,.5)},y.prototype.redo=function(){this.session.getUndoManager().redo(this.session),this.renderer.scrollCursorIntoView(null,.5)},y.prototype.destroy=function(){this.$toDestroy&&(this.$toDestroy.forEach(function(m){m.destroy()}),this.$toDestroy=null),this.$mouseHandler&&this.$mouseHandler.destroy(),this.renderer.destroy(),this._signal("destroy",this),this.session&&this.session.destroy(),this._$emitInputEvent&&this._$emitInputEvent.cancel(),this.removeAllListeners()},y.prototype.setAutoScrollEditorIntoView=function(m){if(m){var E,I=this,N=!1;this.$scrollAnchor||(this.$scrollAnchor=document.createElement("div"));var W=this.$scrollAnchor;W.style.cssText="position:absolute",this.container.insertBefore(W,this.container.firstChild);var z=this.on("changeSelection",function(){N=!0}),U=this.renderer.on("beforeRender",function(){N&&(E=I.renderer.container.getBoundingClientRect())}),j=this.renderer.on("afterRender",function(){if(N&&E&&(I.isFocused()||I.searchBox&&I.searchBox.isFocused())){var q=I.renderer,Y=q.$cursorLayer.$pixelPos,t0=q.layerConfig,n0=Y.top-t0.offset;Y.top>=0&&n0+E.top<0?N=!0:Y.topwindow.innerHeight?N=!1:N=null,N!=null&&(W.style.top=n0+"px",W.style.left=Y.left+"px",W.style.height=t0.lineHeight+"px",W.scrollIntoView(N)),N=E=null}});this.setAutoScrollEditorIntoView=function(q){q||(delete this.setAutoScrollEditorIntoView,this.off("changeSelection",z),this.renderer.off("afterRender",j),this.renderer.off("beforeRender",U))}}},y.prototype.$resetCursorStyle=function(){var m=this.$cursorStyle||"ace",E=this.renderer.$cursorLayer;E&&(E.setSmoothBlinking(/smooth/.test(m)),E.isBlinking=!this.$readOnly&&m!="wide",C.setCssClass(E.element,"ace_slim-cursors",/slim/.test(m)))},y.prototype.prompt=function(m,E,I){var N=this;b.loadModule("ace/ext/prompt",function(W){W.prompt(N,m,E,I)})},y}();k.$uid=0,k.prototype.curOp=null,k.prototype.prevOp={},k.prototype.$mergeableCommands=["backspace","del","insertstring"],k.prototype.$toggleWordPairs=[["first","last"],["true","false"],["yes","no"],["width","height"],["top","bottom"],["right","left"],["on","off"],["x","y"],["get","set"],["max","min"],["horizontal","vertical"],["show","hide"],["add","remove"],["up","down"],["before","after"],["even","odd"],["in","out"],["inside","outside"],["next","previous"],["increase","decrease"],["attach","detach"],["&&","||"],["==","!="]],T.implement(k.prototype,p),b.defineOptions(k.prototype,"editor",{selectionStyle:{set:function(y){this.onSelectionChange(),this._signal("changeSelectionStyle",{data:y})},initialValue:"line"},highlightActiveLine:{set:function(){this.$updateHighlightActiveLine()},initialValue:!0},highlightSelectedWord:{set:function(y){this.$onSelectionChange()},initialValue:!0},readOnly:{set:function(y){this.textInput.setReadOnly(y),this.$resetCursorStyle()},initialValue:!1},copyWithEmptySelection:{set:function(y){this.textInput.setCopyWithEmptySelection(y)},initialValue:!1},cursorStyle:{set:function(y){this.$resetCursorStyle()},values:["ace","slim","smooth","wide"],initialValue:"ace"},mergeUndoDeltas:{values:[!1,!0,"always"],initialValue:!0},behavioursEnabled:{initialValue:!0},wrapBehavioursEnabled:{initialValue:!0},enableAutoIndent:{initialValue:!0},autoScrollEditorIntoView:{set:function(y){this.setAutoScrollEditorIntoView(y)}},keyboardHandler:{set:function(y){this.setKeyboardHandler(y)},get:function(){return this.$keybindingId},handlesSet:!0},value:{set:function(y){this.session.setValue(y)},get:function(){return this.getValue()},handlesSet:!0,hidden:!0},session:{set:function(y){this.setSession(y)},get:function(){return this.session},handlesSet:!0,hidden:!0},showLineNumbers:{set:function(y){this.renderer.$gutterLayer.setShowLineNumbers(y),this.renderer.$loop.schedule(this.renderer.CHANGE_GUTTER),y&&this.$relativeLineNumbers?_.attach(this):_.detach(this)},initialValue:!0},relativeLineNumbers:{set:function(y){this.$showLineNumbers&&y?_.attach(this):_.detach(this)}},placeholder:{set:function(y){this.$updatePlaceholder||(this.$updatePlaceholder=function(){var m=this.session&&(this.renderer.$composition||this.session.getLength()>1||this.session.getLine(0).length>0);if(m&&this.renderer.placeholderNode)this.renderer.off("afterRender",this.$updatePlaceholder),C.removeCssClass(this.container,"ace_hasPlaceholder"),this.renderer.placeholderNode.remove(),this.renderer.placeholderNode=null;else if(!m&&!this.renderer.placeholderNode){this.renderer.on("afterRender",this.$updatePlaceholder),C.addCssClass(this.container,"ace_hasPlaceholder");var E=C.createElement("div");E.className="ace_placeholder",E.textContent=this.$placeholder||"",this.renderer.placeholderNode=E,this.renderer.content.appendChild(this.renderer.placeholderNode)}else!m&&this.renderer.placeholderNode&&(this.renderer.placeholderNode.textContent=this.$placeholder||"")}.bind(this),this.on("input",this.$updatePlaceholder)),this.$updatePlaceholder()}},enableKeyboardAccessibility:{set:function(y){var m={name:"blurTextInput",description:"Set focus to the editor content div to allow tabbing through the page",bindKey:"Esc",exec:function(N){N.blur(),N.renderer.scroller.focus()},readOnly:!0},E=function(N){if(N.target==this.renderer.scroller&&N.keyCode===B.enter){N.preventDefault();var W=this.getCursorPosition().row;this.isRowVisible(W)||this.scrollToLine(W,!0,!0),this.focus()}},I;y?(this.renderer.enableKeyboardAccessibility=!0,this.renderer.keyboardFocusClassName="ace_keyboard-focus",this.textInput.getElement().setAttribute("tabindex",-1),this.textInput.setNumberOfExtraLines(h.isWin?3:0),this.renderer.scroller.setAttribute("tabindex",0),this.renderer.scroller.setAttribute("role","group"),this.renderer.scroller.setAttribute("aria-roledescription",w("editor")),this.renderer.scroller.classList.add(this.renderer.keyboardFocusClassName),this.renderer.scroller.setAttribute("aria-label",w("Editor content, press Enter to start editing, press Escape to exit")),this.renderer.scroller.addEventListener("keyup",E.bind(this)),this.commands.addCommand(m),this.renderer.$gutter.setAttribute("tabindex",0),this.renderer.$gutter.setAttribute("aria-hidden",!1),this.renderer.$gutter.setAttribute("role","group"),this.renderer.$gutter.setAttribute("aria-roledescription",w("editor")),this.renderer.$gutter.setAttribute("aria-label",w("Editor gutter, press Enter to interact with controls using arrow keys, press Escape to exit")),this.renderer.$gutter.classList.add(this.renderer.keyboardFocusClassName),this.renderer.content.setAttribute("aria-hidden",!0),I||(I=new v(this)),I.addListener()):(this.renderer.enableKeyboardAccessibility=!1,this.textInput.getElement().setAttribute("tabindex",0),this.textInput.setNumberOfExtraLines(0),this.renderer.scroller.setAttribute("tabindex",-1),this.renderer.scroller.removeAttribute("role"),this.renderer.scroller.removeAttribute("aria-roledescription"),this.renderer.scroller.classList.remove(this.renderer.keyboardFocusClassName),this.renderer.scroller.removeAttribute("aria-label"),this.renderer.scroller.removeEventListener("keyup",E.bind(this)),this.commands.removeCommand(m),this.renderer.content.removeAttribute("aria-hidden"),this.renderer.$gutter.setAttribute("tabindex",-1),this.renderer.$gutter.setAttribute("aria-hidden",!0),this.renderer.$gutter.removeAttribute("role"),this.renderer.$gutter.removeAttribute("aria-roledescription"),this.renderer.$gutter.removeAttribute("aria-label"),this.renderer.$gutter.classList.remove(this.renderer.keyboardFocusClassName),I&&I.removeListener())},initialValue:!1},customScrollbar:"renderer",hScrollBarAlwaysVisible:"renderer",vScrollBarAlwaysVisible:"renderer",highlightGutterLine:"renderer",animatedScroll:"renderer",showInvisibles:"renderer",showPrintMargin:"renderer",printMarginColumn:"renderer",printMargin:"renderer",fadeFoldWidgets:"renderer",showFoldWidgets:"renderer",displayIndentGuides:"renderer",highlightIndentGuides:"renderer",showGutter:"renderer",fontSize:"renderer",fontFamily:"renderer",maxLines:"renderer",minLines:"renderer",scrollPastEnd:"renderer",fixedWidthGutter:"renderer",theme:"renderer",hasCssTransforms:"renderer",maxPixelHeight:"renderer",useTextareaForIME:"renderer",useResizeObserver:"renderer",useSvgGutterIcons:"renderer",showFoldedAnnotations:"renderer",scrollSpeed:"$mouseHandler",dragDelay:"$mouseHandler",dragEnabled:"$mouseHandler",focusTimeout:"$mouseHandler",tooltipFollowsMouse:"$mouseHandler",firstLineNumber:"session",overwrite:"session",newLineMode:"session",useWorker:"session",useSoftTabs:"session",navigateWithinSoftTabs:"session",tabSize:"session",wrap:"session",indentedSoftWrap:"session",foldStyle:"session",mode:"session"});var _={getText:function(y,m){return(Math.abs(y.selection.lead.row-m)||m+1+(m<9?"\xB7":""))+""},getWidth:function(y,m,E){return Math.max(m.toString().length,(E.lastRow+1).toString().length,2)*E.characterWidth},update:function(y,m){m.renderer.$loop.schedule(m.renderer.CHANGE_GUTTER)},attach:function(y){y.renderer.$gutterLayer.$renderer=this,y.on("changeSelection",this.update),this.update(null,y)},detach:function(y){y.renderer.$gutterLayer.$renderer==this&&(y.renderer.$gutterLayer.$renderer=null),y.off("changeSelection",this.update),this.update(null,y)}};M.Editor=k}),ace.define("ace/layer/lines",["require","exports","module","ace/lib/dom"],function(n,M,G){"use strict";var L=n("../lib/dom"),T=function(){function C(d,h){this.element=d,this.canvasHeight=h||5e5,this.element.style.height=this.canvasHeight*2+"px",this.cells=[],this.cellCache=[],this.$offsetCoefficient=0}return C.prototype.moveContainer=function(d){L.translate(this.element,0,-(d.firstRowScreen*d.lineHeight%this.canvasHeight)-d.offset*this.$offsetCoefficient)},C.prototype.pageChanged=function(d,h){return Math.floor(d.firstRowScreen*d.lineHeight/this.canvasHeight)!==Math.floor(h.firstRowScreen*h.lineHeight/this.canvasHeight)},C.prototype.computeLineTop=function(d,h,l){var o=h.firstRowScreen*h.lineHeight,s=Math.floor(o/this.canvasHeight),i=l.documentToScreenRow(d,0)*h.lineHeight;return i-s*this.canvasHeight},C.prototype.computeLineHeight=function(d,h,l){return h.lineHeight*l.getRowLineCount(d)},C.prototype.getLength=function(){return this.cells.length},C.prototype.get=function(d){return this.cells[d]},C.prototype.shift=function(){this.$cacheCell(this.cells.shift())},C.prototype.pop=function(){this.$cacheCell(this.cells.pop())},C.prototype.push=function(d){if(Array.isArray(d)){this.cells.push.apply(this.cells,d);for(var h=L.createFragment(this.element),l=0;lA&&(S=g.end.row+1,g=a.getNextFoldLine(S,g),A=g?g.start.row:1/0),S>p){for(;this.$lines.getLength()>$+1;)this.$lines.pop();break}b=this.$lines.get(++$),b?b.row=S:(b=this.$lines.createCell(S,r,this.session,s),this.$lines.push(b)),this.$renderCell(b,r,g,S),S++}this._signal("afterRender"),this.$updateGutterWidth(r)},i.prototype.$updateGutterWidth=function(r){var a=this.session,c=a.gutterRenderer||this.$renderer,p=a.$firstLineNumber,g=this.$lines.last()?this.$lines.last().text:"";(this.$fixedWidth||a.$useWrapMode)&&(g=a.getLength()+p-1);var A=c?c.getWidth(a,g,r):g.toString().length*r.characterWidth,b=this.$padding||this.$computePadding();A+=b.left+b.right,A!==this.gutterWidth&&!isNaN(A)&&(this.gutterWidth=A,this.element.parentNode.style.width=this.element.style.width=Math.ceil(this.gutterWidth)+"px",this._signal("changeGutterWidth",A))},i.prototype.$updateCursorRow=function(){if(this.$highlightGutterLine){var r=this.session.selection.getCursor();this.$cursorRow!==r.row&&(this.$cursorRow=r.row)}},i.prototype.updateLineHighlight=function(){if(this.$highlightGutterLine){var r=this.session.selection.cursor.row;if(this.$cursorRow=r,!(this.$cursorCell&&this.$cursorCell.row==r)){this.$cursorCell&&(this.$cursorCell.element.className=this.$cursorCell.element.className.replace("ace_gutter-active-line ",""));var a=this.$lines.cells;this.$cursorCell=null;for(var c=0;c=this.$cursorRow){if(p.row>this.$cursorRow){var g=this.session.getFoldLine(this.$cursorRow);if(c>0&&g&&g.start.row==a[c-1].row)p=a[c-1];else break}p.element.className="ace_gutter-active-line "+p.element.className,this.$cursorCell=p;break}}}}},i.prototype.scrollLines=function(r){var a=this.config;if(this.config=r,this.$updateCursorRow(),this.$lines.pageChanged(a,r))return this.update(r);this.$lines.moveContainer(r);var c=Math.min(r.lastRow+r.gutterOffset,this.session.getLength()-1),p=this.oldLastRow;if(this.oldLastRow=c,!a||p0;g--)this.$lines.shift();if(p>c)for(var g=this.session.getFoldedRowCount(c+1,p);g>0;g--)this.$lines.pop();r.firstRowp&&this.$lines.push(this.$renderLines(r,p+1,c)),this.updateLineHighlight(),this._signal("afterRender"),this.$updateGutterWidth(r)},i.prototype.$renderLines=function(r,a,c){for(var p=[],g=a,A=this.session.getNextFoldLine(g),b=A?A.start.row:1/0;g>b&&(g=A.end.row+1,A=this.session.getNextFoldLine(g,A),b=A?A.start.row:1/0),!(g>c);){var $=this.$lines.createCell(g,r,this.session,s);this.$renderCell($,r,A,g),p.push($),g++}return p},i.prototype.$renderCell=function(r,a,c,p){var g=r.element,A=this.session,b=g.childNodes[0],$=g.childNodes[1],S=g.childNodes[2],v=S.firstChild,w=A.$firstLineNumber,O=A.$breakpoints,B=A.$decorations,k=A.gutterRenderer||this.$renderer,_=this.$showFoldWidgets&&A.foldWidgets,y=c?c.start.row:Number.MAX_VALUE,m=a.lineHeight+"px",E=this.$useSvgGutterIcons?"ace_gutter-cell_svg-icons ":"ace_gutter-cell ",I=this.$useSvgGutterIcons?"ace_icon_svg":"ace_icon",N=(k?k.getText(A,p):p+w).toString();if(this.$highlightGutterLine&&(p==this.$cursorRow||c&&p=y&&this.$cursorRow<=c.end.row)&&(E+="ace_gutter-active-line ",this.$cursorCell!=r&&(this.$cursorCell&&(this.$cursorCell.element.className=this.$cursorCell.element.className.replace("ace_gutter-active-line ","")),this.$cursorCell=r)),O[p]&&(E+=O[p]),B[p]&&(E+=B[p]),this.$annotations[p]&&p!==y&&(E+=this.$annotations[p].className),_){var W=_[p];W==null&&(W=_[p]=A.getFoldWidget(p))}if(W){var z="ace_fold-widget ace_"+W,U=W=="start"&&p==y&&pc.right-a.right)return"foldWidgets"},i}();o.prototype.$fixedWidth=!1,o.prototype.$highlightGutterLine=!0,o.prototype.$renderer="",o.prototype.$showLineNumbers=!0,o.prototype.$showFoldWidgets=!0,T.implement(o.prototype,d);function s(i){var r=document.createTextNode("");i.appendChild(r);var a=L.createElement("span");i.appendChild(a);var c=L.createElement("span");i.appendChild(c);var p=L.createElement("span");return c.appendChild(p),i}M.Gutter=o}),ace.define("ace/layer/marker",["require","exports","module","ace/range","ace/lib/dom"],function(n,M,G){"use strict";var L=n("../range").Range,T=n("../lib/dom"),C=function(){function h(l){this.element=T.createElement("div"),this.element.className="ace_layer ace_marker-layer",l.appendChild(this.element)}return h.prototype.setPadding=function(l){this.$padding=l},h.prototype.setSession=function(l){this.session=l},h.prototype.setMarkers=function(l){this.markers=l},h.prototype.elt=function(l,o){var s=this.i!=-1&&this.element.childNodes[this.i];s?this.i++:(s=document.createElement("div"),this.element.appendChild(s),this.i=-1),s.style.cssText=o,s.className=l},h.prototype.update=function(l){if(l){this.config=l,this.i=0;var o;for(var s in this.markers){var i=this.markers[s];if(!i.range){i.update(o,this,this.session,l);continue}var r=i.range.clipRows(l.firstRow,l.lastRow);if(!r.isEmpty())if(r=r.toScreenRange(this.session),i.renderer){var a=this.$getTop(r.start.row,l),c=this.$padding+r.start.column*l.characterWidth;i.renderer(o,r,c,a,l)}else i.type=="fullLine"?this.drawFullLineMarker(o,r,i.clazz,l):i.type=="screenLine"?this.drawScreenLineMarker(o,r,i.clazz,l):r.isMultiLine()?i.type=="text"?this.drawTextMarker(o,r,i.clazz,l):this.drawMultiLineMarker(o,r,i.clazz,l):this.drawSingleLineMarker(o,r,i.clazz+" ace_start ace_br15",l)}if(this.i!=-1)for(;this.i$,g==p),i,g==p?0:1,r)},h.prototype.drawMultiLineMarker=function(l,o,s,i,r){var a=this.$padding,c=i.lineHeight,p=this.$getTop(o.start.row,i),g=a+o.start.column*i.characterWidth;if(r=r||"",this.session.$bidiHandler.isBidiRow(o.start.row)){var A=o.clone();A.end.row=A.start.row,A.end.column=this.session.getLine(A.start.row).length,this.drawBidiSingleLineMarker(l,A,s+" ace_br1 ace_start",i,null,r)}else this.elt(s+" ace_br1 ace_start","height:"+c+"px;right:0;top:"+p+"px;left:"+g+"px;"+(r||""));if(this.session.$bidiHandler.isBidiRow(o.end.row)){var A=o.clone();A.start.row=A.end.row,A.start.column=0,this.drawBidiSingleLineMarker(l,A,s+" ace_br12",i,null,r)}else{p=this.$getTop(o.end.row,i);var b=o.end.column*i.characterWidth;this.elt(s+" ace_br12","height:"+c+"px;width:"+b+"px;top:"+p+"px;left:"+a+"px;"+(r||""))}if(c=(o.end.row-o.start.row-1)*i.lineHeight,!(c<=0)){p=this.$getTop(o.start.row+1,i);var $=(o.start.column?1:0)|(o.end.column?0:8);this.elt(s+($?" ace_br"+$:""),"height:"+c+"px;right:0;top:"+p+"px;left:"+a+"px;"+(r||""))}},h.prototype.drawSingleLineMarker=function(l,o,s,i,r,a){if(this.session.$bidiHandler.isBidiRow(o.start.row))return this.drawBidiSingleLineMarker(l,o,s,i,r,a);var c=i.lineHeight,p=(o.end.column+(r||0)-o.start.column)*i.characterWidth,g=this.$getTop(o.start.row,i),A=this.$padding+o.start.column*i.characterWidth;this.elt(s,"height:"+c+"px;width:"+p+"px;top:"+g+"px;left:"+A+"px;"+(a||""))},h.prototype.drawBidiSingleLineMarker=function(l,o,s,i,r,a){var c=i.lineHeight,p=this.$getTop(o.start.row,i),g=this.$padding,A=this.session.$bidiHandler.getSelections(o.start.column,o.end.column);A.forEach(function(b){this.elt(s,"height:"+c+"px;width:"+(b.width+(r||0))+"px;top:"+p+"px;left:"+(g+b.left)+"px;"+(a||""))},this)},h.prototype.drawFullLineMarker=function(l,o,s,i,r){var a=this.$getTop(o.start.row,i),c=i.lineHeight;o.start.row!=o.end.row&&(c+=this.$getTop(o.end.row,i)-a),this.elt(s,"height:"+c+"px;top:"+a+"px;left:0;right:0;"+(r||""))},h.prototype.drawScreenLineMarker=function(l,o,s,i,r){var a=this.$getTop(o.start.row,i),c=i.lineHeight;this.elt(s,"height:"+c+"px;top:"+a+"px;left:0;right:0;"+(r||""))},h}();C.prototype.$padding=0;function d(h,l,o,s){return(h?1:0)|(l?2:0)|(o?4:0)|(s?8:0)}M.Marker=C}),ace.define("ace/layer/text_util",["require","exports","module"],function(n,M,G){var L=new Set(["text","rparen","lparen"]);M.isTextToken=function(T){return L.has(T)}}),ace.define("ace/layer/text",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/layer/lines","ace/lib/event_emitter","ace/config","ace/layer/text_util"],function(n,M,G){"use strict";var L=n("../lib/oop"),T=n("../lib/dom"),C=n("../lib/lang"),d=n("./lines").Lines,h=n("../lib/event_emitter").EventEmitter,l=n("../config").nls,o=n("./text_util").isTextToken,s=function(){function i(r){this.dom=T,this.element=this.dom.createElement("div"),this.element.className="ace_layer ace_text-layer",r.appendChild(this.element),this.$updateEolChar=this.$updateEolChar.bind(this),this.$lines=new d(this.element)}return i.prototype.$updateEolChar=function(){var r=this.session.doc,a=r.getNewLineCharacter()==` -`&&r.getNewLineMode()!="windows",c=a?this.EOL_CHAR_LF:this.EOL_CHAR_CRLF;if(this.EOL_CHAR!=c)return this.EOL_CHAR=c,!0},i.prototype.setPadding=function(r){this.$padding=r,this.element.style.margin="0 "+r+"px"},i.prototype.getLineHeight=function(){return this.$fontMetrics.$characterSize.height||0},i.prototype.getCharacterWidth=function(){return this.$fontMetrics.$characterSize.width||0},i.prototype.$setFontMetrics=function(r){this.$fontMetrics=r,this.$fontMetrics.on("changeCharacterSize",function(a){this._signal("changeCharacterSize",a)}.bind(this)),this.$pollSizeChanges()},i.prototype.checkForSizeChanges=function(){this.$fontMetrics.checkForSizeChanges()},i.prototype.$pollSizeChanges=function(){return this.$pollSizeChangesTimer=this.$fontMetrics.$pollSizeChanges()},i.prototype.setSession=function(r){this.session=r,r&&this.$computeTabString()},i.prototype.setShowInvisibles=function(r){return this.showInvisibles==r?!1:(this.showInvisibles=r,typeof r=="string"?(this.showSpaces=/tab/i.test(r),this.showTabs=/space/i.test(r),this.showEOL=/eol/i.test(r)):this.showSpaces=this.showTabs=this.showEOL=r,this.$computeTabString(),!0)},i.prototype.setDisplayIndentGuides=function(r){return this.displayIndentGuides==r?!1:(this.displayIndentGuides=r,this.$computeTabString(),!0)},i.prototype.setHighlightIndentGuides=function(r){return this.$highlightIndentGuides===r?!1:(this.$highlightIndentGuides=r,r)},i.prototype.$computeTabString=function(){var r=this.session.getTabSize();this.tabSize=r;for(var a=this.$tabStrings=[0],c=1;cw&&(S=v.end.row+1,v=this.session.getNextFoldLine(S,v),w=v?v.start.row:1/0),!(S>g);){var O=A[b++];if(O){this.dom.removeChildren(O),this.$renderLine(O,S,S==w?v:!1),$&&(O.style.top=this.$lines.computeLineTop(S,r,this.session)+"px");var B=r.lineHeight*this.session.getRowLength(S)+"px";O.style.height!=B&&($=!0,O.style.height=B)}S++}if($)for(;b0;g--)this.$lines.shift();if(a.lastRow>r.lastRow)for(var g=this.session.getFoldedRowCount(r.lastRow+1,a.lastRow);g>0;g--)this.$lines.pop();r.firstRowa.lastRow&&this.$lines.push(this.$renderLinesFragment(r,a.lastRow+1,r.lastRow)),this.$highlightIndentGuide()},i.prototype.$renderLinesFragment=function(r,a,c){for(var p=[],g=a,A=this.session.getNextFoldLine(g),b=A?A.start.row:1/0;g>b&&(g=A.end.row+1,A=this.session.getNextFoldLine(g,A),b=A?A.start.row:1/0),!(g>c);){var $=this.$lines.createCell(g,r,this.session),S=$.element;this.dom.removeChildren(S),T.setStyle(S.style,"height",this.$lines.computeLineHeight(g,r,this.session)+"px"),T.setStyle(S.style,"top",this.$lines.computeLineTop(g,r,this.session)+"px"),this.$renderLine(S,g,g==b?A:!1),this.$useLineGroups()?S.className="ace_line_group":S.className="ace_line",p.push($),g++}return p},i.prototype.update=function(r){this.$lines.moveContainer(r),this.config=r;for(var a=r.firstRow,c=r.lastRow,p=this.$lines;p.getLength();)p.pop();p.push(this.$renderLinesFragment(r,a,c))},i.prototype.$renderToken=function(r,a,c,p){for(var g=this,A=/(\t)|( +)|([\x00-\x1f\x80-\xa0\xad\u1680\u180E\u2000-\u200f\u2028\u2029\u202F\u205F\uFEFF\uFFF9-\uFFFC\u2066\u2067\u2068\u202A\u202B\u202D\u202E\u202C\u2069]+)|(\u3000)|([\u1100-\u115F\u11A3-\u11A7\u11FA-\u11FF\u2329-\u232A\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u2FF0-\u2FFB\u3001-\u303E\u3041-\u3096\u3099-\u30FF\u3105-\u312D\u3131-\u318E\u3190-\u31BA\u31C0-\u31E3\u31F0-\u321E\u3220-\u3247\u3250-\u32FE\u3300-\u4DBF\u4E00-\uA48C\uA490-\uA4C6\uA960-\uA97C\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFAFF\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE66\uFE68-\uFE6B\uFF01-\uFF60\uFFE0-\uFFE6]|[\uD800-\uDBFF][\uDC00-\uDFFF])/g,b=this.dom.createFragment(this.element),$,S=0;$=A.exec(p);){var v=$[1],w=$[2],O=$[3],B=$[4],k=$[5];if(!(!g.showSpaces&&w)){var _=S!=$.index?p.slice(S,$.index):"";if(S=$.index+$[0].length,_&&b.appendChild(this.dom.createTextNode(_,this.element)),v){var y=g.session.getScreenTabSize(a+$.index);b.appendChild(g.$tabStrings[y].cloneNode(!0)),a+=y-1}else if(w)if(g.showSpaces){var m=this.dom.createElement("span");m.className="ace_invisible ace_invisible_space",m.textContent=C.stringRepeat(g.SPACE_CHAR,w.length),b.appendChild(m)}else b.appendChild(this.dom.createTextNode(w,this.element));else if(O){var m=this.dom.createElement("span");m.className="ace_invisible ace_invisible_space ace_invalid",m.textContent=C.stringRepeat(g.SPACE_CHAR,O.length),b.appendChild(m)}else if(B){a+=1;var m=this.dom.createElement("span");m.style.width=g.config.characterWidth*2+"px",m.className=g.showSpaces?"ace_cjk ace_invisible ace_invisible_space":"ace_cjk",m.textContent=g.showSpaces?g.SPACE_CHAR:B,b.appendChild(m)}else if(k){a+=1;var m=this.dom.createElement("span");m.style.width=g.config.characterWidth*2+"px",m.className="ace_cjk",m.textContent=k,b.appendChild(m)}}}if(b.appendChild(this.dom.createTextNode(S?p.slice(S):p,this.element)),o(c.type))r.appendChild(b);else{var E="ace_"+c.type.replace(/\./g," ace_"),m=this.dom.createElement("span");c.type=="fold"&&(m.style.width=c.value.length*this.config.characterWidth+"px",m.setAttribute("title",l("Unfold code"))),m.className=E,m.appendChild(b),r.appendChild(m)}return a+p.length},i.prototype.renderIndentGuide=function(r,a,c){var p=a.search(this.$indentGuideRe);if(p<=0||p>=c)return a;if(a[0]==" "){p-=p%this.tabSize;for(var g=p/this.tabSize,A=0;AA[b].start.row?this.$highlightIndentGuideMarker.dir=-1:this.$highlightIndentGuideMarker.dir=1;break}}if(!this.$highlightIndentGuideMarker.end&&r[a.row]!==""&&a.column===r[a.row].length){this.$highlightIndentGuideMarker.dir=1;for(var b=a.row+1;b0){for(var g=0;g=this.$highlightIndentGuideMarker.start+1){if(p.row>=this.$highlightIndentGuideMarker.end)break;this.$setIndentGuideActive(p,a)}}else for(var c=r.length-1;c>=0;c--){var p=r[c];if(this.$highlightIndentGuideMarker.end&&p.row=A;)b=this.$renderToken($,b,v,w.substring(0,A-p)),w=w.substring(A-p),p=A,$=this.$createLineElement(),r.appendChild($),$.appendChild(this.dom.createTextNode(C.stringRepeat("\xA0",c.indent),this.element)),g++,b=0,A=c[g]||Number.MAX_VALUE;w.length!=0&&(p+=w.length,b=this.$renderToken($,b,v,w))}}c[c.length-1]>this.MAX_LINE_LENGTH&&this.$renderOverflowMessage($,b,null,"",!0)},i.prototype.$renderSimpleLine=function(r,a){for(var c=0,p=0;pthis.MAX_LINE_LENGTH)return this.$renderOverflowMessage(r,c,g,A);c=this.$renderToken(r,c,g,A)}}},i.prototype.$renderOverflowMessage=function(r,a,c,p,g){c&&this.$renderToken(r,a,c,p.slice(0,this.MAX_LINE_LENGTH-a));var A=this.dom.createElement("span");A.className="ace_inline_button ace_keyword ace_toggle_wrap",A.textContent=g?"":"",r.appendChild(A)},i.prototype.$renderLine=function(r,a,c){if(!c&&c!=!1&&(c=this.session.getFoldLine(a)),c)var p=this.$getFoldLineTokens(a,c);else var p=this.session.getTokens(a);var g=r;if(p.length){var A=this.session.getRowSplitData(a);if(A&&A.length){this.$renderWrappedLine(r,p,A);var g=r.lastChild}else{var g=r;this.$useLineGroups()&&(g=this.$createLineElement(),r.appendChild(g)),this.$renderSimpleLine(g,p)}}else this.$useLineGroups()&&(g=this.$createLineElement(),r.appendChild(g));if(this.showEOL&&g){c&&(a=c.end.row);var b=this.dom.createElement("span");b.className="ace_invisible ace_invisible_eol",b.textContent=a==this.session.getLength()-1?this.EOF_CHAR:this.EOL_CHAR,g.appendChild(b)}},i.prototype.$getFoldLineTokens=function(r,a){var c=this.session,p=[];function g(b,$,S){for(var v=0,w=0;w+b[v].value.length<$;)if(w+=b[v].value.length,v++,v==b.length)return;if(w!=$){var O=b[v].value.substring($-w);O.length>S-$&&(O=O.substring(0,S-$)),p.push({type:b[v].type,value:O}),w=$+O.length,v+=1}for(;wS?p.push({type:b[v].type,value:O.substring(0,S-w)}):p.push(b[v]),w+=O.length,v+=1}}var A=c.getTokens(r);return a.walk(function(b,$,S,v,w){b!=null?p.push({type:"fold",value:b}):(w&&(A=c.getTokens($)),A.length&&g(A,v,S))},a.end.row,this.session.getLine(a.end.row).length),p},i.prototype.$useLineGroups=function(){return this.session.getUseWrapMode()},i}();s.prototype.EOF_CHAR="\xB6",s.prototype.EOL_CHAR_LF="\xAC",s.prototype.EOL_CHAR_CRLF="\xA4",s.prototype.EOL_CHAR=s.prototype.EOL_CHAR_LF,s.prototype.TAB_CHAR="\u2014",s.prototype.SPACE_CHAR="\xB7",s.prototype.$padding=0,s.prototype.MAX_LINE_LENGTH=1e4,s.prototype.showInvisibles=!1,s.prototype.showSpaces=!1,s.prototype.showTabs=!1,s.prototype.showEOL=!1,s.prototype.displayIndentGuides=!0,s.prototype.$highlightIndentGuides=!0,s.prototype.$tabStrings=[],s.prototype.destroy={},s.prototype.onChangeTabSize=s.prototype.$computeTabString,L.implement(s.prototype,h),M.Text=s}),ace.define("ace/layer/cursor",["require","exports","module","ace/lib/dom"],function(n,M,G){"use strict";var L=n("../lib/dom"),T=function(){function C(d){this.element=L.createElement("div"),this.element.className="ace_layer ace_cursor-layer",d.appendChild(this.element),this.isVisible=!1,this.isBlinking=!0,this.blinkInterval=1e3,this.smoothBlinking=!1,this.cursors=[],this.cursor=this.addCursor(),L.addCssClass(this.element,"ace_hidden-cursors"),this.$updateCursors=this.$updateOpacity.bind(this)}return C.prototype.$updateOpacity=function(d){for(var h=this.cursors,l=h.length;l--;)L.setStyle(h[l].style,"opacity",d?"":"0")},C.prototype.$startCssAnimation=function(){for(var d=this.cursors,h=d.length;h--;)d[h].style.animationDuration=this.blinkInterval+"ms";this.$isAnimating=!0,setTimeout(function(){this.$isAnimating&&L.addCssClass(this.element,"ace_animate-blinking")}.bind(this))},C.prototype.$stopCssAnimation=function(){this.$isAnimating=!1,L.removeCssClass(this.element,"ace_animate-blinking")},C.prototype.setPadding=function(d){this.$padding=d},C.prototype.setSession=function(d){this.session=d},C.prototype.setBlinking=function(d){d!=this.isBlinking&&(this.isBlinking=d,this.restartTimer())},C.prototype.setBlinkInterval=function(d){d!=this.blinkInterval&&(this.blinkInterval=d,this.restartTimer())},C.prototype.setSmoothBlinking=function(d){d!=this.smoothBlinking&&(this.smoothBlinking=d,L.setCssClass(this.element,"ace_smooth-blinking",d),this.$updateCursors(!0),this.restartTimer())},C.prototype.addCursor=function(){var d=L.createElement("div");return d.className="ace_cursor",this.element.appendChild(d),this.cursors.push(d),d},C.prototype.removeCursor=function(){if(this.cursors.length>1){var d=this.cursors.pop();return d.parentNode.removeChild(d),d}},C.prototype.hideCursor=function(){this.isVisible=!1,L.addCssClass(this.element,"ace_hidden-cursors"),this.restartTimer()},C.prototype.showCursor=function(){this.isVisible=!0,L.removeCssClass(this.element,"ace_hidden-cursors"),this.restartTimer()},C.prototype.restartTimer=function(){var d=this.$updateCursors;if(clearInterval(this.intervalId),clearTimeout(this.timeoutId),this.$stopCssAnimation(),this.smoothBlinking&&(this.$isSmoothBlinking=!1,L.removeCssClass(this.element,"ace_smooth-blinking")),d(!0),!this.isBlinking||!this.blinkInterval||!this.isVisible){this.$stopCssAnimation();return}if(this.smoothBlinking&&(this.$isSmoothBlinking=!0,setTimeout(function(){this.$isSmoothBlinking&&L.addCssClass(this.element,"ace_smooth-blinking")}.bind(this))),L.HAS_CSS_ANIMATION)this.$startCssAnimation();else{var h=function(){this.timeoutId=setTimeout(function(){d(!1)},.6*this.blinkInterval)}.bind(this);this.intervalId=setInterval(function(){d(!0),h()},this.blinkInterval),h()}},C.prototype.getPixelPosition=function(d,h){if(!this.config||!this.session)return{left:0,top:0};d||(d=this.session.selection.getCursor());var l=this.session.documentToScreenPosition(d),o=this.$padding+(this.session.$bidiHandler.isBidiRow(l.row,d.row)?this.session.$bidiHandler.getPosLeft(l.column):l.column*this.config.characterWidth),s=(l.row-(h?this.config.firstRowScreen:0))*this.config.lineHeight;return{left:o,top:s}},C.prototype.isCursorInView=function(d,h){return d.top>=0&&d.topd.height+d.offset||i.top<0)&&l>1)){var r=this.cursors[o++]||this.addCursor(),a=r.style;this.drawCursor?this.drawCursor(r,i,d,h[l],this.session):this.isCursorInView(i,d)?(L.setStyle(a,"display","block"),L.translate(r,i.left,i.top),L.setStyle(a,"width",Math.round(d.characterWidth)+"px"),L.setStyle(a,"height",d.lineHeight+"px")):L.setStyle(a,"display","none")}}for(;this.cursors.length>o;)this.removeCursor();var c=this.session.getOverwrite();this.$setOverwrite(c),this.$pixelPos=i,this.restartTimer()},C.prototype.$setOverwrite=function(d){d!=this.overwrite&&(this.overwrite=d,d?L.addCssClass(this.element,"ace_overwrite-cursors"):L.removeCssClass(this.element,"ace_overwrite-cursors"))},C.prototype.destroy=function(){clearInterval(this.intervalId),clearTimeout(this.timeoutId)},C}();T.prototype.$padding=0,T.prototype.drawCursor=null,M.Cursor=T}),ace.define("ace/scrollbar",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/event","ace/lib/event_emitter"],function(n,M,G){"use strict";var L=this&&this.__extends||function(){var r=function(a,c){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(p,g){p.__proto__=g}||function(p,g){for(var A in g)Object.prototype.hasOwnProperty.call(g,A)&&(p[A]=g[A])},r(a,c)};return function(a,c){if(typeof c!="function"&&c!==null)throw new TypeError("Class extends value "+String(c)+" is not a constructor or null");r(a,c);function p(){this.constructor=a}a.prototype=c===null?Object.create(c):(p.prototype=c.prototype,new p)}}(),T=n("./lib/oop"),C=n("./lib/dom"),d=n("./lib/event"),h=n("./lib/event_emitter").EventEmitter,l=32768,o=function(){function r(a,c){this.element=C.createElement("div"),this.element.className="ace_scrollbar ace_scrollbar"+c,this.inner=C.createElement("div"),this.inner.className="ace_scrollbar-inner",this.inner.textContent="\xA0",this.element.appendChild(this.inner),a.appendChild(this.element),this.setVisible(!1),this.skipEvent=!1,d.addListener(this.element,"scroll",this.onScroll.bind(this)),d.addListener(this.element,"mousedown",d.preventDefault)}return r.prototype.setVisible=function(a){this.element.style.display=a?"":"none",this.isVisible=a,this.coeff=1},r}();T.implement(o.prototype,h);var s=function(r){L(a,r);function a(c,p){var g=r.call(this,c,"-v")||this;return g.scrollTop=0,g.scrollHeight=0,p.$scrollbarWidth=g.width=C.scrollbarWidth(c.ownerDocument),g.inner.style.width=g.element.style.width=(g.width||15)+5+"px",g.$minWidth=0,g}return a.prototype.onScroll=function(){if(!this.skipEvent){if(this.scrollTop=this.element.scrollTop,this.coeff!=1){var c=this.element.clientHeight/this.scrollHeight;this.scrollTop=this.scrollTop*(1-c)/(this.coeff-c)}this._emit("scroll",{data:this.scrollTop})}this.skipEvent=!1},a.prototype.getWidth=function(){return Math.max(this.isVisible?this.width:0,this.$minWidth||0)},a.prototype.setHeight=function(c){this.element.style.height=c+"px"},a.prototype.setScrollHeight=function(c){this.scrollHeight=c,c>l?(this.coeff=l/c,c=l):this.coeff!=1&&(this.coeff=1),this.inner.style.height=c+"px"},a.prototype.setScrollTop=function(c){this.scrollTop!=c&&(this.skipEvent=!0,this.scrollTop=c,this.element.scrollTop=c*this.coeff)},a}(o);s.prototype.setInnerHeight=s.prototype.setScrollHeight;var i=function(r){L(a,r);function a(c,p){var g=r.call(this,c,"-h")||this;return g.scrollLeft=0,g.height=p.$scrollbarWidth,g.inner.style.height=g.element.style.height=(g.height||15)+5+"px",g}return a.prototype.onScroll=function(){this.skipEvent||(this.scrollLeft=this.element.scrollLeft,this._emit("scroll",{data:this.scrollLeft})),this.skipEvent=!1},a.prototype.getHeight=function(){return this.isVisible?this.height:0},a.prototype.setWidth=function(c){this.element.style.width=c+"px"},a.prototype.setInnerWidth=function(c){this.inner.style.width=c+"px"},a.prototype.setScrollWidth=function(c){this.inner.style.width=c+"px"},a.prototype.setScrollLeft=function(c){this.scrollLeft!=c&&(this.skipEvent=!0,this.scrollLeft=this.element.scrollLeft=c)},a}(o);M.ScrollBar=s,M.ScrollBarV=s,M.ScrollBarH=i,M.VScrollBar=s,M.HScrollBar=i}),ace.define("ace/scrollbar_custom",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/event","ace/lib/event_emitter"],function(n,M,G){"use strict";var L=this&&this.__extends||function(){var i=function(r,a){return i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(c,p){c.__proto__=p}||function(c,p){for(var g in p)Object.prototype.hasOwnProperty.call(p,g)&&(c[g]=p[g])},i(r,a)};return function(r,a){if(typeof a!="function"&&a!==null)throw new TypeError("Class extends value "+String(a)+" is not a constructor or null");i(r,a);function c(){this.constructor=r}r.prototype=a===null?Object.create(a):(c.prototype=a.prototype,new c)}}(),T=n("./lib/oop"),C=n("./lib/dom"),d=n("./lib/event"),h=n("./lib/event_emitter").EventEmitter;C.importCssString(`.ace_editor>.ace_sb-v div, .ace_editor>.ace_sb-h div{ - position: absolute; - background: rgba(128, 128, 128, 0.6); - -moz-box-sizing: border-box; - box-sizing: border-box; - border: 1px solid #bbb; - border-radius: 2px; - z-index: 8; -} -.ace_editor>.ace_sb-v, .ace_editor>.ace_sb-h { - position: absolute; - z-index: 6; - background: none; - overflow: hidden!important; -} -.ace_editor>.ace_sb-v { - z-index: 6; - right: 0; - top: 0; - width: 12px; -} -.ace_editor>.ace_sb-v div { - z-index: 8; - right: 0; - width: 100%; -} -.ace_editor>.ace_sb-h { - bottom: 0; - left: 0; - height: 12px; -} -.ace_editor>.ace_sb-h div { - bottom: 0; - height: 100%; -} -.ace_editor>.ace_sb_grabbed { - z-index: 8; - background: #000; -}`,"ace_scrollbar.css",!1);var l=function(){function i(r,a){this.element=C.createElement("div"),this.element.className="ace_sb"+a,this.inner=C.createElement("div"),this.inner.className="",this.element.appendChild(this.inner),this.VScrollWidth=12,this.HScrollHeight=12,r.appendChild(this.element),this.setVisible(!1),this.skipEvent=!1,d.addMultiMouseDownListener(this.element,[500,300,300],this,"onMouseDown")}return i.prototype.setVisible=function(r){this.element.style.display=r?"":"none",this.isVisible=r,this.coeff=1},i}();T.implement(l.prototype,h);var o=function(i){L(r,i);function r(a,c){var p=i.call(this,a,"-v")||this;return p.scrollTop=0,p.scrollHeight=0,p.parent=a,p.width=p.VScrollWidth,p.renderer=c,p.inner.style.width=p.element.style.width=(p.width||15)+"px",p.$minWidth=0,p}return r.prototype.onMouseDown=function(a,c){if(a==="mousedown"&&!(d.getButton(c)!==0||c.detail===2)){if(c.target===this.inner){var p=this,g=c.clientY,A=function(B){g=B.clientY},b=function(){clearInterval(w)},$=c.clientY,S=this.thumbTop,v=function(){if(g!==void 0){var B=p.scrollTopFromThumbTop(S+g-$);B!==p.scrollTop&&p._emit("scroll",{data:B})}};d.capture(this.inner,A,b);var w=setInterval(v,20);return d.preventDefault(c)}var O=c.clientY-this.element.getBoundingClientRect().top-this.thumbHeight/2;return this._emit("scroll",{data:this.scrollTopFromThumbTop(O)}),d.preventDefault(c)}},r.prototype.getHeight=function(){return this.height},r.prototype.scrollTopFromThumbTop=function(a){var c=a*(this.pageHeight-this.viewHeight)/(this.slideHeight-this.thumbHeight);return c=c>>0,c<0?c=0:c>this.pageHeight-this.viewHeight&&(c=this.pageHeight-this.viewHeight),c},r.prototype.getWidth=function(){return Math.max(this.isVisible?this.width:0,this.$minWidth||0)},r.prototype.setHeight=function(a){this.height=Math.max(0,a),this.slideHeight=this.height,this.viewHeight=this.height,this.setScrollHeight(this.pageHeight,!0)},r.prototype.setScrollHeight=function(a,c){this.pageHeight===a&&!c||(this.pageHeight=a,this.thumbHeight=this.slideHeight*this.viewHeight/this.pageHeight,this.thumbHeight>this.slideHeight&&(this.thumbHeight=this.slideHeight),this.thumbHeight<15&&(this.thumbHeight=15),this.inner.style.height=this.thumbHeight+"px",this.scrollTop>this.pageHeight-this.viewHeight&&(this.scrollTop=this.pageHeight-this.viewHeight,this.scrollTop<0&&(this.scrollTop=0),this._emit("scroll",{data:this.scrollTop})))},r.prototype.setScrollTop=function(a){this.scrollTop=a,a<0&&(a=0),this.thumbTop=a*(this.slideHeight-this.thumbHeight)/(this.pageHeight-this.viewHeight),this.inner.style.top=this.thumbTop+"px"},r}(l);o.prototype.setInnerHeight=o.prototype.setScrollHeight;var s=function(i){L(r,i);function r(a,c){var p=i.call(this,a,"-h")||this;return p.scrollLeft=0,p.scrollWidth=0,p.height=p.HScrollHeight,p.inner.style.height=p.element.style.height=(p.height||12)+"px",p.renderer=c,p}return r.prototype.onMouseDown=function(a,c){if(a==="mousedown"&&!(d.getButton(c)!==0||c.detail===2)){if(c.target===this.inner){var p=this,g=c.clientX,A=function(B){g=B.clientX},b=function(){clearInterval(w)},$=c.clientX,S=this.thumbLeft,v=function(){if(g!==void 0){var B=p.scrollLeftFromThumbLeft(S+g-$);B!==p.scrollLeft&&p._emit("scroll",{data:B})}};d.capture(this.inner,A,b);var w=setInterval(v,20);return d.preventDefault(c)}var O=c.clientX-this.element.getBoundingClientRect().left-this.thumbWidth/2;return this._emit("scroll",{data:this.scrollLeftFromThumbLeft(O)}),d.preventDefault(c)}},r.prototype.getHeight=function(){return this.isVisible?this.height:0},r.prototype.scrollLeftFromThumbLeft=function(a){var c=a*(this.pageWidth-this.viewWidth)/(this.slideWidth-this.thumbWidth);return c=c>>0,c<0?c=0:c>this.pageWidth-this.viewWidth&&(c=this.pageWidth-this.viewWidth),c},r.prototype.setWidth=function(a){this.width=Math.max(0,a),this.element.style.width=this.width+"px",this.slideWidth=this.width,this.viewWidth=this.width,this.setScrollWidth(this.pageWidth,!0)},r.prototype.setScrollWidth=function(a,c){this.pageWidth===a&&!c||(this.pageWidth=a,this.thumbWidth=this.slideWidth*this.viewWidth/this.pageWidth,this.thumbWidth>this.slideWidth&&(this.thumbWidth=this.slideWidth),this.thumbWidth<15&&(this.thumbWidth=15),this.inner.style.width=this.thumbWidth+"px",this.scrollLeft>this.pageWidth-this.viewWidth&&(this.scrollLeft=this.pageWidth-this.viewWidth,this.scrollLeft<0&&(this.scrollLeft=0),this._emit("scroll",{data:this.scrollLeft})))},r.prototype.setScrollLeft=function(a){this.scrollLeft=a,a<0&&(a=0),this.thumbLeft=a*(this.slideWidth-this.thumbWidth)/(this.pageWidth-this.viewWidth),this.inner.style.left=this.thumbLeft+"px"},r}(l);s.prototype.setInnerWidth=s.prototype.setScrollWidth,M.ScrollBar=o,M.ScrollBarV=o,M.ScrollBarH=s,M.VScrollBar=o,M.HScrollBar=s}),ace.define("ace/renderloop",["require","exports","module","ace/lib/event"],function(n,M,G){"use strict";var L=n("./lib/event"),T=function(){function C(d,h){this.onRender=d,this.pending=!1,this.changes=0,this.$recursionLimit=2,this.window=h||window;var l=this;this._flush=function(o){l.pending=!1;var s=l.changes;if(s&&(L.blockIdle(100),l.changes=0,l.onRender(s)),l.changes){if(l.$recursionLimit--<0)return;l.schedule()}else l.$recursionLimit=2}}return C.prototype.schedule=function(d){this.changes=this.changes|d,this.changes&&!this.pending&&(L.nextFrame(this._flush),this.pending=!0)},C.prototype.clear=function(d){var h=this.changes;return this.changes=0,h},C}();M.RenderLoop=T}),ace.define("ace/layer/font_metrics",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/lib/event","ace/lib/useragent","ace/lib/event_emitter"],function(n,M,G){var L=n("../lib/oop"),T=n("../lib/dom"),C=n("../lib/lang"),d=n("../lib/event"),h=n("../lib/useragent"),l=n("../lib/event_emitter").EventEmitter,o=512,s=typeof ResizeObserver=="function",i=200,r=function(){function a(c){this.el=T.createElement("div"),this.$setMeasureNodeStyles(this.el.style,!0),this.$main=T.createElement("div"),this.$setMeasureNodeStyles(this.$main.style),this.$measureNode=T.createElement("div"),this.$setMeasureNodeStyles(this.$measureNode.style),this.el.appendChild(this.$main),this.el.appendChild(this.$measureNode),c.appendChild(this.el),this.$measureNode.textContent=C.stringRepeat("X",o),this.$characterSize={width:0,height:0},s?this.$addObserver():this.checkForSizeChanges()}return a.prototype.$setMeasureNodeStyles=function(c,p){c.width=c.height="auto",c.left=c.top="0px",c.visibility="hidden",c.position="absolute",c.whiteSpace="pre",h.isIE<8?c["font-family"]="inherit":c.font="inherit",c.overflow=p?"hidden":"visible"},a.prototype.checkForSizeChanges=function(c){if(c===void 0&&(c=this.$measureSizes()),c&&(this.$characterSize.width!==c.width||this.$characterSize.height!==c.height)){this.$measureNode.style.fontWeight="bold";var p=this.$measureSizes();this.$measureNode.style.fontWeight="",this.$characterSize=c,this.charSizes=Object.create(null),this.allowBoldFonts=p&&p.width===c.width&&p.height===c.height,this._emit("changeCharacterSize",{data:c})}},a.prototype.$addObserver=function(){var c=this;this.$observer=new window.ResizeObserver(function(p){c.checkForSizeChanges()}),this.$observer.observe(this.$measureNode)},a.prototype.$pollSizeChanges=function(){if(this.$pollSizeChangesTimer||this.$observer)return this.$pollSizeChangesTimer;var c=this;return this.$pollSizeChangesTimer=d.onIdle(function p(){c.checkForSizeChanges(),d.onIdle(p,500)},500)},a.prototype.setPolling=function(c){c?this.$pollSizeChanges():this.$pollSizeChangesTimer&&(clearInterval(this.$pollSizeChangesTimer),this.$pollSizeChangesTimer=0)},a.prototype.$measureSizes=function(c){var p={height:(c||this.$measureNode).clientHeight,width:(c||this.$measureNode).clientWidth/o};return p.width===0||p.height===0?null:p},a.prototype.$measureCharWidth=function(c){this.$main.textContent=C.stringRepeat(c,o);var p=this.$main.getBoundingClientRect();return p.width/o},a.prototype.getCharacterWidth=function(c){var p=this.charSizes[c];return p===void 0&&(p=this.charSizes[c]=this.$measureCharWidth(c)/this.$characterSize.width),p},a.prototype.destroy=function(){clearInterval(this.$pollSizeChangesTimer),this.$observer&&this.$observer.disconnect(),this.el&&this.el.parentNode&&this.el.parentNode.removeChild(this.el)},a.prototype.$getZoom=function(c){return!c||!c.parentElement?1:(window.getComputedStyle(c).zoom||1)*this.$getZoom(c.parentElement)},a.prototype.$initTransformMeasureNodes=function(){var c=function(p,g){return["div",{style:"position: absolute;top:"+p+"px;left:"+g+"px;"}]};this.els=T.buildDom([c(0,0),c(i,0),c(0,i),c(i,i)],this.el)},a.prototype.transformCoordinates=function(c,p){if(c){var g=this.$getZoom(this.el);c=S(1/g,c)}function A(U,j,q){var Y=U[1]*j[0]-U[0]*j[1];return[(-j[1]*q[0]+j[0]*q[1])/Y,(+U[1]*q[0]-U[0]*q[1])/Y]}function b(U,j){return[U[0]-j[0],U[1]-j[1]]}function $(U,j){return[U[0]+j[0],U[1]+j[1]]}function S(U,j){return[U*j[0],U*j[1]]}this.els||this.$initTransformMeasureNodes();function v(U){var j=U.getBoundingClientRect();return[j.left,j.top]}var w=v(this.els[0]),O=v(this.els[1]),B=v(this.els[2]),k=v(this.els[3]),_=A(b(k,O),b(k,B),b($(O,B),$(k,w))),y=S(1+_[0],b(O,w)),m=S(1+_[1],b(B,w));if(p){var E=p,I=_[0]*E[0]/i+_[1]*E[1]/i+1,N=$(S(E[0],y),S(E[1],m));return $(S(1/I/i,N),w)}var W=b(c,w),z=A(b(y,S(_[0],W)),b(m,S(_[1],W)),W);return S(i,z)},a}();r.prototype.$characterSize={width:0,height:0},L.implement(r.prototype,l),M.FontMetrics=r}),ace.define("ace/css/editor-css",["require","exports","module"],function(n,M,G){G.exports=` -.ace_br1 {border-top-left-radius : 3px;} -.ace_br2 {border-top-right-radius : 3px;} -.ace_br3 {border-top-left-radius : 3px; border-top-right-radius: 3px;} -.ace_br4 {border-bottom-right-radius: 3px;} -.ace_br5 {border-top-left-radius : 3px; border-bottom-right-radius: 3px;} -.ace_br6 {border-top-right-radius : 3px; border-bottom-right-radius: 3px;} -.ace_br7 {border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px;} -.ace_br8 {border-bottom-left-radius : 3px;} -.ace_br9 {border-top-left-radius : 3px; border-bottom-left-radius: 3px;} -.ace_br10{border-top-right-radius : 3px; border-bottom-left-radius: 3px;} -.ace_br11{border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-left-radius: 3px;} -.ace_br12{border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;} -.ace_br13{border-top-left-radius : 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;} -.ace_br14{border-top-right-radius : 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;} -.ace_br15{border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;} - - -.ace_editor { - position: relative; - overflow: hidden; - padding: 0; - font: 12px/normal 'Monaco', 'Menlo', 'Ubuntu Mono', 'Consolas', 'Source Code Pro', 'source-code-pro', monospace; - direction: ltr; - text-align: left; - -webkit-tap-highlight-color: rgba(0, 0, 0, 0); -} - -.ace_scroller { - position: absolute; - overflow: hidden; - top: 0; - bottom: 0; - background-color: inherit; - -ms-user-select: none; - -moz-user-select: none; - -webkit-user-select: none; - user-select: none; - cursor: text; -} - -.ace_content { - position: absolute; - box-sizing: border-box; - min-width: 100%; - contain: style size layout; - font-variant-ligatures: no-common-ligatures; -} - -.ace_keyboard-focus:focus { - box-shadow: inset 0 0 0 2px #5E9ED6; - outline: none; -} - -.ace_dragging .ace_scroller:before{ - position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 0; - content: ''; - background: rgba(250, 250, 250, 0.01); - z-index: 1000; -} -.ace_dragging.ace_dark .ace_scroller:before{ - background: rgba(0, 0, 0, 0.01); -} - -.ace_gutter { - position: absolute; - overflow : hidden; - width: auto; - top: 0; - bottom: 0; - left: 0; - cursor: default; - z-index: 4; - -ms-user-select: none; - -moz-user-select: none; - -webkit-user-select: none; - user-select: none; - contain: style size layout; -} - -.ace_gutter-active-line { - position: absolute; - left: 0; - right: 0; -} - -.ace_scroller.ace_scroll-left:after { - content: ""; - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - box-shadow: 17px 0 16px -16px rgba(0, 0, 0, 0.4) inset; - pointer-events: none; -} - -.ace_gutter-cell, .ace_gutter-cell_svg-icons { - position: absolute; - top: 0; - left: 0; - right: 0; - padding-left: 19px; - padding-right: 6px; - background-repeat: no-repeat; -} - -.ace_gutter-cell_svg-icons .ace_gutter_annotation { - margin-left: -14px; - float: left; -} - -.ace_gutter-cell .ace_gutter_annotation { - margin-left: -19px; - float: left; -} - -.ace_gutter-cell.ace_error, .ace_icon.ace_error, .ace_icon.ace_error_fold { - background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAABOFBMVEX/////////QRswFAb/Ui4wFAYwFAYwFAaWGAfDRymzOSH/PxswFAb/SiUwFAYwFAbUPRvjQiDllog5HhHdRybsTi3/Tyv9Tir+Syj/UC3////XurebMBIwFAb/RSHbPx/gUzfdwL3kzMivKBAwFAbbvbnhPx66NhowFAYwFAaZJg8wFAaxKBDZurf/RB6mMxb/SCMwFAYwFAbxQB3+RB4wFAb/Qhy4Oh+4QifbNRcwFAYwFAYwFAb/QRzdNhgwFAYwFAbav7v/Uy7oaE68MBK5LxLewr/r2NXewLswFAaxJw4wFAbkPRy2PyYwFAaxKhLm1tMwFAazPiQwFAaUGAb/QBrfOx3bvrv/VC/maE4wFAbRPBq6MRO8Qynew8Dp2tjfwb0wFAbx6eju5+by6uns4uH9/f36+vr/GkHjAAAAYnRSTlMAGt+64rnWu/bo8eAA4InH3+DwoN7j4eLi4xP99Nfg4+b+/u9B/eDs1MD1mO7+4PHg2MXa347g7vDizMLN4eG+Pv7i5evs/v79yu7S3/DV7/498Yv24eH+4ufQ3Ozu/v7+y13sRqwAAADLSURBVHjaZc/XDsFgGIBhtDrshlitmk2IrbHFqL2pvXf/+78DPokj7+Fz9qpU/9UXJIlhmPaTaQ6QPaz0mm+5gwkgovcV6GZzd5JtCQwgsxoHOvJO15kleRLAnMgHFIESUEPmawB9ngmelTtipwwfASilxOLyiV5UVUyVAfbG0cCPHig+GBkzAENHS0AstVF6bacZIOzgLmxsHbt2OecNgJC83JERmePUYq8ARGkJx6XtFsdddBQgZE2nPR6CICZhawjA4Fb/chv+399kfR+MMMDGOQAAAABJRU5ErkJggg=="); - background-repeat: no-repeat; - background-position: 2px center; -} - -.ace_gutter-cell.ace_warning, .ace_icon.ace_warning, .ace_icon.ace_warning_fold { - background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAmVBMVEX///8AAAD///8AAAAAAABPSzb/5sAAAAB/blH/73z/ulkAAAAAAAD85pkAAAAAAAACAgP/vGz/rkDerGbGrV7/pkQICAf////e0IsAAAD/oED/qTvhrnUAAAD/yHD/njcAAADuv2r/nz//oTj/p064oGf/zHAAAAA9Nir/tFIAAAD/tlTiuWf/tkIAAACynXEAAAAAAAAtIRW7zBpBAAAAM3RSTlMAABR1m7RXO8Ln31Z36zT+neXe5OzooRDfn+TZ4p3h2hTf4t3k3ucyrN1K5+Xaks52Sfs9CXgrAAAAjklEQVR42o3PbQ+CIBQFYEwboPhSYgoYunIqqLn6/z8uYdH8Vmdnu9vz4WwXgN/xTPRD2+sgOcZjsge/whXZgUaYYvT8QnuJaUrjrHUQreGczuEafQCO/SJTufTbroWsPgsllVhq3wJEk2jUSzX3CUEDJC84707djRc5MTAQxoLgupWRwW6UB5fS++NV8AbOZgnsC7BpEAAAAABJRU5ErkJggg=="); - background-repeat: no-repeat; - background-position: 2px center; -} - -.ace_gutter-cell.ace_info, .ace_icon.ace_info { - background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAAAAAA6mKC9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAAJ0Uk5TAAB2k804AAAAPklEQVQY02NgIB68QuO3tiLznjAwpKTgNyDbMegwisCHZUETUZV0ZqOquBpXj2rtnpSJT1AEnnRmL2OgGgAAIKkRQap2htgAAAAASUVORK5CYII="); - background-repeat: no-repeat; - background-position: 2px center; -} -.ace_dark .ace_gutter-cell.ace_info, .ace_dark .ace_icon.ace_info { - background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAJFBMVEUAAAChoaGAgIAqKiq+vr6tra1ZWVmUlJSbm5s8PDxubm56enrdgzg3AAAAAXRSTlMAQObYZgAAAClJREFUeNpjYMAPdsMYHegyJZFQBlsUlMFVCWUYKkAZMxZAGdxlDMQBAG+TBP4B6RyJAAAAAElFTkSuQmCC"); -} - -.ace_icon_svg.ace_error { - -webkit-mask-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMCAxNiI+CjxnIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlPSJyZWQiIHNoYXBlLXJlbmRlcmluZz0iZ2VvbWV0cmljUHJlY2lzaW9uIj4KPGNpcmNsZSBmaWxsPSJub25lIiBjeD0iOCIgY3k9IjgiIHI9IjciIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPGxpbmUgeDE9IjExIiB5MT0iNSIgeDI9IjUiIHkyPSIxMSIvPgo8bGluZSB4MT0iMTEiIHkxPSIxMSIgeDI9IjUiIHkyPSI1Ii8+CjwvZz4KPC9zdmc+"); - background-color: crimson; -} -.ace_icon_svg.ace_warning { - -webkit-mask-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMCAxNiI+CjxnIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlPSJkYXJrb3JhbmdlIiBzaGFwZS1yZW5kZXJpbmc9Imdlb21ldHJpY1ByZWNpc2lvbiI+Cjxwb2x5Z29uIHN0cm9rZS1saW5lam9pbj0icm91bmQiIGZpbGw9Im5vbmUiIHBvaW50cz0iOCAxIDE1IDE1IDEgMTUgOCAxIi8+CjxyZWN0IHg9IjgiIHk9IjEyIiB3aWR0aD0iMC4wMSIgaGVpZ2h0PSIwLjAxIi8+CjxsaW5lIHgxPSI4IiB5MT0iNiIgeDI9IjgiIHkyPSIxMCIvPgo8L2c+Cjwvc3ZnPg=="); - background-color: darkorange; -} -.ace_icon_svg.ace_info { - -webkit-mask-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMCAxNiI+CjxnIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlPSJibHVlIiBzaGFwZS1yZW5kZXJpbmc9Imdlb21ldHJpY1ByZWNpc2lvbiI+CjxjaXJjbGUgZmlsbD0ibm9uZSIgY3g9IjgiIGN5PSI4IiByPSI3IiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+Cjxwb2x5bGluZSBwb2ludHM9IjggMTEgOCA4Ii8+Cjxwb2x5bGluZSBwb2ludHM9IjkgOCA2IDgiLz4KPGxpbmUgeDE9IjEwIiB5MT0iMTEiIHgyPSI2IiB5Mj0iMTEiLz4KPHJlY3QgeD0iOCIgeT0iNSIgd2lkdGg9IjAuMDEiIGhlaWdodD0iMC4wMSIvPgo8L2c+Cjwvc3ZnPg=="); - background-color: royalblue; -} - -.ace_icon_svg.ace_error_fold { - -webkit-mask-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMCAxNiIgZmlsbD0ibm9uZSI+CiAgPHBhdGggZD0ibSAxOC45Mjk4NTEsNy44Mjk4MDc2IGMgMC4xNDYzNTMsNi4zMzc0NjA0IC02LjMyMzE0Nyw3Ljc3Nzg0NDQgLTcuNDc3OTEyLDcuNzc3ODQ0NCAtMi4xMDcyNzI2LC0wLjEyODc1IDUuMTE3Njc4LDAuMzU2MjQ5IDUuMDUxNjk4LC03Ljg3MDA2MTggLTAuNjA0NjcyLC04LjAwMzk3MzQ5IC03LjA3NzI3MDYsLTcuNTYzMTE4OSAtNC44NTczLC03LjQzMDM5NTU2IDEuNjA2LC0wLjExNTE0MjI1IDYuODk3NDg1LDEuMjYyNTQ1OTYgNy4yODM1MTQsNy41MjI2MTI5NiB6IiBmaWxsPSJjcmltc29uIiBzdHJva2Utd2lkdGg9IjIiLz4KICA8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0ibSA4LjExNDc1NjIsMi4wNTI5ODI4IGMgMy4zNDkxNjk4LDAgNi4wNjQxMzI4LDIuNjc2ODYyNyA2LjA2NDEzMjgsNS45Nzg5NTMgMCwzLjMwMjExMjIgLTIuNzE0OTYzLDUuOTc4OTIwMiAtNi4wNjQxMzI4LDUuOTc4OTIwMiAtMy4zNDkxNDczLDAgLTYuMDY0MTc3MiwtMi42NzY4MDggLTYuMDY0MTc3MiwtNS45Nzg5MjAyIDAuMDA1MzksLTMuMjk5ODg2MSAyLjcxNzI2NTYsLTUuOTczNjQwOCA2LjA2NDE3NzIsLTUuOTc4OTUzIHogbSAwLC0xLjczNTgyNzE5IGMgLTQuMzIxNDgzNiwwIC03LjgyNDc0MDM4LDMuNDU0MDE4NDkgLTcuODI0NzQwMzgsNy43MTQ3ODAxOSAwLDQuMjYwNzI4MiAzLjUwMzI1Njc4LDcuNzE0NzQ1MiA3LjgyNDc0MDM4LDcuNzE0NzQ1MiA0LjMyMTQ0OTgsMCA3LjgyNDY5OTgsLTMuNDU0MDE3IDcuODI0Njk5OCwtNy43MTQ3NDUyIDAsLTIuMDQ2MDkxNCAtMC44MjQzOTIsLTQuMDA4MzY3MiAtMi4yOTE3NTYsLTUuNDU1MTc0NiBDIDEyLjE4MDIyNSwxLjEyOTk2NDggMTAuMTkwMDEzLDAuMzE3MTU1NjEgOC4xMTQ3NTYyLDAuMzE3MTU1NjEgWiBNIDYuOTM3NDU2Myw4LjI0MDU5ODUgNC42NzE4Njg1LDEwLjQ4NTg1MiA2LjAwODY4MTQsMTEuODc2NzI4IDguMzE3MDAzNSw5LjYwMDc5MTEgMTAuNjI1MzM3LDExLjg3NjcyOCAxMS45NjIxMzgsMTAuNDg1ODUyIDkuNjk2NTUwOCw4LjI0MDU5ODUgMTEuOTYyMTM4LDYuMDA2ODA2NiAxMC41NzMyNDYsNC42Mzc0MzM1IDguMzE3MDAzNSw2Ljg3MzQyOTcgNi4wNjA3NjA3LDQuNjM3NDMzNSA0LjY3MTg2ODUsNi4wMDY4MDY2IFoiIGZpbGw9ImNyaW1zb24iIHN0cm9rZS13aWR0aD0iMiIvPgo8L3N2Zz4="); - background-color: crimson; -} -.ace_icon_svg.ace_warning_fold { - -webkit-mask-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAyMCAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xNC43NzY5IDE0LjczMzdMOC42NTE5MiAyLjQ4MzY5QzguMzI5NDYgMS44Mzg3NyA3LjQwOTEzIDEuODM4NzcgNy4wODY2NyAyLjQ4MzY5TDAuOTYxNjY5IDE0LjczMzdDMC42NzA3NzUgMTUuMzE1NSAxLjA5MzgzIDE2IDEuNzQ0MjkgMTZIMTMuOTk0M0MxNC42NDQ4IDE2IDE1LjA2NzggMTUuMzE1NSAxNC43NzY5IDE0LjczMzdaTTMuMTYwMDcgMTQuMjVMNy44NjkyOSA0LjgzMTU2TDEyLjU3ODUgMTQuMjVIMy4xNjAwN1pNOC43NDQyOSAxMS42MjVWMTMuMzc1SDYuOTk0MjlWMTEuNjI1SDguNzQ0MjlaTTYuOTk0MjkgMTAuNzVWNy4yNUg4Ljc0NDI5VjEwLjc1SDYuOTk0MjlaIiBmaWxsPSIjRUM3MjExIi8+CjxwYXRoIGQ9Ik0xMS4xOTkxIDIuOTUyMzhDMTAuODgwOSAyLjMxNDY3IDEwLjM1MzcgMS44MDUyNiA5LjcwNTUgMS41MDlMMTEuMDQxIDEuMDY5NzhDMTEuNjg4MyAwLjk0OTgxNCAxMi4zMzcgMS4yNzI2MyAxMi42MzE3IDEuODYxNDFMMTcuNjEzNiAxMS44MTYxQzE4LjM1MjcgMTMuMjkyOSAxNy41OTM4IDE1LjA4MDQgMTYuMDE4IDE1LjU3NDVDMTYuNDA0NCAxNC40NTA3IDE2LjMyMzEgMTMuMjE4OCAxNS43OTI0IDEyLjE1NTVMMTEuMTk5MSAyLjk1MjM4WiIgZmlsbD0iI0VDNzIxMSIvPgo8L3N2Zz4="); - background-color: darkorange; -} - -.ace_scrollbar { - contain: strict; - position: absolute; - right: 0; - bottom: 0; - z-index: 6; -} - -.ace_scrollbar-inner { - position: absolute; - cursor: text; - left: 0; - top: 0; -} - -.ace_scrollbar-v{ - overflow-x: hidden; - overflow-y: scroll; - top: 0; -} - -.ace_scrollbar-h { - overflow-x: scroll; - overflow-y: hidden; - left: 0; -} - -.ace_print-margin { - position: absolute; - height: 100%; -} - -.ace_text-input { - position: absolute; - z-index: 0; - width: 0.5em; - height: 1em; - opacity: 0; - background: transparent; - -moz-appearance: none; - appearance: none; - border: none; - resize: none; - outline: none; - overflow: hidden; - font: inherit; - padding: 0 1px; - margin: 0 -1px; - contain: strict; - -ms-user-select: text; - -moz-user-select: text; - -webkit-user-select: text; - user-select: text; - /*with \`pre-line\` chrome inserts   instead of space*/ - white-space: pre!important; -} -.ace_text-input.ace_composition { - background: transparent; - color: inherit; - z-index: 1000; - opacity: 1; -} -.ace_composition_placeholder { color: transparent } -.ace_composition_marker { - border-bottom: 1px solid; - position: absolute; - border-radius: 0; - margin-top: 1px; -} -[ace_nocontext=true] { - transform: none!important; - filter: none!important; - clip-path: none!important; - mask : none!important; - contain: none!important; - perspective: none!important; - mix-blend-mode: initial!important; - z-index: auto; -} -.ace_layer { - z-index: 1; - position: absolute; - overflow: hidden; - /* workaround for chrome bug https://github.com/ajaxorg/ace/issues/2312*/ - word-wrap: normal; - white-space: pre; - height: 100%; - width: 100%; - box-sizing: border-box; - /* setting pointer-events: auto; on node under the mouse, which changes - during scroll, will break mouse wheel scrolling in Safari */ - pointer-events: none; -} +const FieldCombobox2 = (props) => { + const { input, meta, validationmessages } = props; + const getComboboxError = () => { + const { touched, error, warning } = meta; + let message = null; + if (touched && error && validationmessages[error]) { + message = validationmessages[error]; + } else if (touched && warning) { + message = "warning"; + } + return message; + }; + const handleOnChange = (value) => { + const { onChange } = input; + onChange((0,external_immutable_namespaceObject.fromJS)(value)); + }; + return /* @__PURE__ */ external_react_default().createElement( + components_Combobox2, + FieldCombobox2_spreadProps(FieldCombobox2_spreadValues({}, props), { + onChange: handleOnChange, + value: !input.value ? input.value : input.value.toJS(), + error: getComboboxError() + }) + ); +}; +FieldCombobox2.propTypes = { + meta: external_prop_types_default().instanceOf(Object), + input: external_prop_types_default().instanceOf(Object), + validationmessages: external_prop_types_default().instanceOf(Object) +}; +/* harmony default export */ const redux_form_FieldCombobox2 = (FieldCombobox2); -.ace_gutter-layer { - position: relative; - width: auto; - text-align: right; - pointer-events: auto; - height: 1000000px; - contain: style size layout; -} +;// CONCATENATED MODULE: ./src/form/redux-form/FieldDatePicker/index.js +var FieldDatePicker_defProp = Object.defineProperty; +var FieldDatePicker_defProps = Object.defineProperties; +var FieldDatePicker_getOwnPropDescs = Object.getOwnPropertyDescriptors; +var FieldDatePicker_getOwnPropSymbols = Object.getOwnPropertySymbols; +var FieldDatePicker_hasOwnProp = Object.prototype.hasOwnProperty; +var FieldDatePicker_propIsEnum = Object.prototype.propertyIsEnumerable; +var FieldDatePicker_defNormalProp = (obj, key, value) => key in obj ? FieldDatePicker_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var FieldDatePicker_spreadValues = (a, b) => { + for (var prop in b || (b = {})) + if (FieldDatePicker_hasOwnProp.call(b, prop)) + FieldDatePicker_defNormalProp(a, prop, b[prop]); + if (FieldDatePicker_getOwnPropSymbols) + for (var prop of FieldDatePicker_getOwnPropSymbols(b)) { + if (FieldDatePicker_propIsEnum.call(b, prop)) + FieldDatePicker_defNormalProp(a, prop, b[prop]); + } + return a; +}; +var FieldDatePicker_spreadProps = (a, b) => FieldDatePicker_defProps(a, FieldDatePicker_getOwnPropDescs(b)); +var FieldDatePicker_objRest = (source, exclude) => { + var target = {}; + for (var prop in source) + if (FieldDatePicker_hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) + target[prop] = source[prop]; + if (source != null && FieldDatePicker_getOwnPropSymbols) + for (var prop of FieldDatePicker_getOwnPropSymbols(source)) { + if (exclude.indexOf(prop) < 0 && FieldDatePicker_propIsEnum.call(source, prop)) + target[prop] = source[prop]; + } + return target; +}; -.ace_text-layer { - font: inherit !important; - position: absolute; - height: 1000000px; - width: 1000000px; - contain: style size layout; -} -.ace_text-layer > .ace_line, .ace_text-layer > .ace_line_group { - contain: style size layout; - position: absolute; - top: 0; - left: 0; - right: 0; -} -.ace_hidpi .ace_text-layer, -.ace_hidpi .ace_gutter-layer, -.ace_hidpi .ace_content, -.ace_hidpi .ace_gutter { - contain: strict; -} -.ace_hidpi .ace_text-layer > .ace_line, -.ace_hidpi .ace_text-layer > .ace_line_group { - contain: strict; -} -.ace_cjk { - display: inline-block; - text-align: center; -} +const FormDatePicker = (props) => { + const _a = props, { + input, + meta, + validationmessages + } = _a, rest = FieldDatePicker_objRest(_a, [ + "input", + "meta", + "validationmessages" + ]); + const getDatePickerError = () => { + const { touched, error } = meta; + let message = null; + if (touched && error && validationmessages[error]) { + message = validationmessages[error]; + } + return message; + }; + const handleOnChange = (value) => { + const { onChange } = input; + onChange((0,external_immutable_namespaceObject.fromJS)(value)); + }; + return /* @__PURE__ */ external_react_default().createElement( + components_DatePicker, + FieldDatePicker_spreadProps(FieldDatePicker_spreadValues({}, rest), { + onChange: handleOnChange, + value: !input.value ? input.value : input.value.toJS(), + error: getDatePickerError() + }) + ); +}; +FormDatePicker.propTypes = { + meta: external_prop_types_default().instanceOf(Object), + input: external_prop_types_default().instanceOf(Object), + validationmessages: external_prop_types_default().instanceOf(Object) +}; +/* harmony default export */ const FieldDatePicker = (FormDatePicker); -.ace_cursor-layer { - z-index: 4; -} +;// CONCATENATED MODULE: ./src/form/redux-form/FieldEditableList/index.js +var FieldEditableList_defProp = Object.defineProperty; +var FieldEditableList_defProps = Object.defineProperties; +var FieldEditableList_getOwnPropDescs = Object.getOwnPropertyDescriptors; +var FieldEditableList_getOwnPropSymbols = Object.getOwnPropertySymbols; +var FieldEditableList_hasOwnProp = Object.prototype.hasOwnProperty; +var FieldEditableList_propIsEnum = Object.prototype.propertyIsEnumerable; +var FieldEditableList_defNormalProp = (obj, key, value) => key in obj ? FieldEditableList_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var FieldEditableList_spreadValues = (a, b) => { + for (var prop in b || (b = {})) + if (FieldEditableList_hasOwnProp.call(b, prop)) + FieldEditableList_defNormalProp(a, prop, b[prop]); + if (FieldEditableList_getOwnPropSymbols) + for (var prop of FieldEditableList_getOwnPropSymbols(b)) { + if (FieldEditableList_propIsEnum.call(b, prop)) + FieldEditableList_defNormalProp(a, prop, b[prop]); + } + return a; +}; +var FieldEditableList_spreadProps = (a, b) => FieldEditableList_defProps(a, FieldEditableList_getOwnPropDescs(b)); +var FieldEditableList_objRest = (source, exclude) => { + var target = {}; + for (var prop in source) + if (FieldEditableList_hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) + target[prop] = source[prop]; + if (source != null && FieldEditableList_getOwnPropSymbols) + for (var prop of FieldEditableList_getOwnPropSymbols(source)) { + if (exclude.indexOf(prop) < 0 && FieldEditableList_propIsEnum.call(source, prop)) + target[prop] = source[prop]; + } + return target; +}; +var FieldEditableList_publicField = (obj, key, value) => { + FieldEditableList_defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); + return value; +}; -.ace_cursor { - z-index: 4; - position: absolute; - box-sizing: border-box; - border-left: 2px solid; - /* workaround for smooth cursor repaintng whole screen in chrome */ - transform: translatez(0); -} -.ace_multiselect .ace_cursor { - border-left-width: 1px; -} -.ace_slim-cursors .ace_cursor { - border-left-width: 1px; -} -.ace_overwrite-cursors .ace_cursor { - border-left-width: 0; - border-bottom: 1px solid; +class FieldEditableList extends external_react_namespaceObject.Component { + constructor(props) { + super(props); + this.handleOnChange = this.handleOnChange.bind(this); + } + getEditableListError() { + const { meta, validationmessages } = this.props; + const { touched, error } = meta; + let message = null; + if (touched && error && validationmessages[error]) { + message = validationmessages[error]; + } + return message; + } + handleOnChange(value) { + const { input } = this.props; + const { onChange } = input; + onChange((0,external_immutable_namespaceObject.fromJS)(value)); + } + render() { + const props = FieldEditableList_objRest(this.props, []); + return /* @__PURE__ */ external_react_default().createElement( + EditableList, + FieldEditableList_spreadProps(FieldEditableList_spreadValues({}, props), { + onChange: this.handleOnChange, + value: !props.input.value ? null : props.input.value.toJS(), + error: this.getEditableListError() + }) + ); + } } +FieldEditableList_publicField(FieldEditableList, "propTypes", { + input: external_prop_types_default().instanceOf(Object), + meta: external_prop_types_default().instanceOf(Object), + validationmessages: external_prop_types_default().instanceOf(Object) +}); -.ace_hidden-cursors .ace_cursor { - opacity: 0.2; -} +;// CONCATENATED MODULE: ./src/form/redux-form/FieldFileInput/index.js +var FieldFileInput_defProp = Object.defineProperty; +var FieldFileInput_defProps = Object.defineProperties; +var FieldFileInput_getOwnPropDescs = Object.getOwnPropertyDescriptors; +var FieldFileInput_getOwnPropSymbols = Object.getOwnPropertySymbols; +var FieldFileInput_hasOwnProp = Object.prototype.hasOwnProperty; +var FieldFileInput_propIsEnum = Object.prototype.propertyIsEnumerable; +var FieldFileInput_defNormalProp = (obj, key, value) => key in obj ? FieldFileInput_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var FieldFileInput_spreadValues = (a, b) => { + for (var prop in b || (b = {})) + if (FieldFileInput_hasOwnProp.call(b, prop)) + FieldFileInput_defNormalProp(a, prop, b[prop]); + if (FieldFileInput_getOwnPropSymbols) + for (var prop of FieldFileInput_getOwnPropSymbols(b)) { + if (FieldFileInput_propIsEnum.call(b, prop)) + FieldFileInput_defNormalProp(a, prop, b[prop]); + } + return a; +}; +var FieldFileInput_spreadProps = (a, b) => FieldFileInput_defProps(a, FieldFileInput_getOwnPropDescs(b)); +var FieldFileInput_objRest = (source, exclude) => { + var target = {}; + for (var prop in source) + if (FieldFileInput_hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) + target[prop] = source[prop]; + if (source != null && FieldFileInput_getOwnPropSymbols) + for (var prop of FieldFileInput_getOwnPropSymbols(source)) { + if (exclude.indexOf(prop) < 0 && FieldFileInput_propIsEnum.call(source, prop)) + target[prop] = source[prop]; + } + return target; +}; +var FieldFileInput_publicField = (obj, key, value) => { + FieldFileInput_defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); + return value; +}; -.ace_hasPlaceholder .ace_hidden-cursors .ace_cursor { - opacity: 0; -} -.ace_smooth-blinking .ace_cursor { - transition: opacity 0.18s; -} -.ace_animate-blinking .ace_cursor { - animation-duration: 1000ms; - animation-timing-function: step-end; - animation-name: blink-ace-animate; - animation-iteration-count: infinite; +class FieldFileInput extends external_react_namespaceObject.Component { + getInputError() { + const { meta, validationmessages } = this.props; + const { touched, error, warning } = meta; + let message = null; + if (touched && error && validationmessages[error]) { + message = validationmessages[error]; + } else if (touched && warning) { + message = "warning"; + } + return message; + } + render() { + const _a = this.props, { input } = _a, rest = FieldFileInput_objRest(_a, ["input"]); + return /* @__PURE__ */ external_react_default().createElement( + FileInput, + FieldFileInput_spreadProps(FieldFileInput_spreadValues(FieldFileInput_spreadValues({}, input), rest), { + error: this.getInputError() + }) + ); + } } +FieldFileInput_publicField(FieldFileInput, "propTypes", { + input: external_prop_types_default().instanceOf(Object), + meta: external_prop_types_default().instanceOf(Object), + validationmessages: external_prop_types_default().instanceOf(Object) +}); -.ace_animate-blinking.ace_smooth-blinking .ace_cursor { - animation-duration: 1000ms; - animation-timing-function: ease-in-out; - animation-name: blink-ace-animate-smooth; -} - -@keyframes blink-ace-animate { - from, to { opacity: 1; } - 60% { opacity: 0; } -} +;// CONCATENATED MODULE: ./src/form/redux-form/FieldInput/index.js +var FieldInput_defProp = Object.defineProperty; +var FieldInput_defProps = Object.defineProperties; +var FieldInput_getOwnPropDescs = Object.getOwnPropertyDescriptors; +var FieldInput_getOwnPropSymbols = Object.getOwnPropertySymbols; +var FieldInput_hasOwnProp = Object.prototype.hasOwnProperty; +var FieldInput_propIsEnum = Object.prototype.propertyIsEnumerable; +var FieldInput_defNormalProp = (obj, key, value) => key in obj ? FieldInput_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var FieldInput_spreadValues = (a, b) => { + for (var prop in b || (b = {})) + if (FieldInput_hasOwnProp.call(b, prop)) + FieldInput_defNormalProp(a, prop, b[prop]); + if (FieldInput_getOwnPropSymbols) + for (var prop of FieldInput_getOwnPropSymbols(b)) { + if (FieldInput_propIsEnum.call(b, prop)) + FieldInput_defNormalProp(a, prop, b[prop]); + } + return a; +}; +var FieldInput_spreadProps = (a, b) => FieldInput_defProps(a, FieldInput_getOwnPropDescs(b)); +var FieldInput_objRest = (source, exclude) => { + var target = {}; + for (var prop in source) + if (FieldInput_hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) + target[prop] = source[prop]; + if (source != null && FieldInput_getOwnPropSymbols) + for (var prop of FieldInput_getOwnPropSymbols(source)) { + if (exclude.indexOf(prop) < 0 && FieldInput_propIsEnum.call(source, prop)) + target[prop] = source[prop]; + } + return target; +}; +var FieldInput_publicField = (obj, key, value) => { + FieldInput_defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); + return value; +}; -@keyframes blink-ace-animate-smooth { - from, to { opacity: 1; } - 45% { opacity: 1; } - 60% { opacity: 0; } - 85% { opacity: 0; } -} -.ace_marker-layer .ace_step, .ace_marker-layer .ace_stack { - position: absolute; - z-index: 3; -} -.ace_marker-layer .ace_selection { - position: absolute; - z-index: 5; +class FieldInput extends external_react_namespaceObject.Component { + getInputError() { + const { meta, validationmessages } = this.props; + const { touched, error, warning } = meta; + let message = null; + if (touched && error && validationmessages[error]) { + message = validationmessages[error]; + } else if (touched && warning) { + message = "warning"; + } + return message; + } + render() { + const _a = this.props, { input } = _a, rest = FieldInput_objRest(_a, ["input"]); + return /* @__PURE__ */ external_react_default().createElement( + Input, + FieldInput_spreadProps(FieldInput_spreadValues(FieldInput_spreadValues({}, input), rest), { + isfield: true, + error: this.getInputError() + }) + ); + } } +FieldInput_publicField(FieldInput, "propTypes", { + meta: external_prop_types_default().instanceOf(Object), + input: external_prop_types_default().instanceOf(Object), + validationmessages: external_prop_types_default().instanceOf(Object) +}); -.ace_marker-layer .ace_bracket { - position: absolute; - z-index: 6; -} +;// CONCATENATED MODULE: ./src/form/redux-form/FieldMultiselect/index.js +var FieldMultiselect_defProp = Object.defineProperty; +var FieldMultiselect_defProps = Object.defineProperties; +var FieldMultiselect_getOwnPropDescs = Object.getOwnPropertyDescriptors; +var FieldMultiselect_getOwnPropSymbols = Object.getOwnPropertySymbols; +var FieldMultiselect_hasOwnProp = Object.prototype.hasOwnProperty; +var FieldMultiselect_propIsEnum = Object.prototype.propertyIsEnumerable; +var FieldMultiselect_defNormalProp = (obj, key, value) => key in obj ? FieldMultiselect_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var FieldMultiselect_spreadValues = (a, b) => { + for (var prop in b || (b = {})) + if (FieldMultiselect_hasOwnProp.call(b, prop)) + FieldMultiselect_defNormalProp(a, prop, b[prop]); + if (FieldMultiselect_getOwnPropSymbols) + for (var prop of FieldMultiselect_getOwnPropSymbols(b)) { + if (FieldMultiselect_propIsEnum.call(b, prop)) + FieldMultiselect_defNormalProp(a, prop, b[prop]); + } + return a; +}; +var FieldMultiselect_spreadProps = (a, b) => FieldMultiselect_defProps(a, FieldMultiselect_getOwnPropDescs(b)); +var FieldMultiselect_objRest = (source, exclude) => { + var target = {}; + for (var prop in source) + if (FieldMultiselect_hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) + target[prop] = source[prop]; + if (source != null && FieldMultiselect_getOwnPropSymbols) + for (var prop of FieldMultiselect_getOwnPropSymbols(source)) { + if (exclude.indexOf(prop) < 0 && FieldMultiselect_propIsEnum.call(source, prop)) + target[prop] = source[prop]; + } + return target; +}; +var FieldMultiselect_publicField = (obj, key, value) => { + FieldMultiselect_defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); + return value; +}; -.ace_marker-layer .ace_error_bracket { - position: absolute; - border-bottom: 1px solid #DE5555; - border-radius: 0; -} -.ace_marker-layer .ace_active-line { - position: absolute; - z-index: 2; -} -.ace_marker-layer .ace_selected-word { - position: absolute; - z-index: 4; - box-sizing: border-box; + +class FieldMultiselect extends external_react_namespaceObject.Component { + constructor(props) { + super(props); + this.handleOnChange = this.handleOnChange.bind(this); + } + getMultiselectError() { + const { meta, validationmessages } = this.props; + const { touched, error, warning } = meta; + let message = null; + if (touched && error && validationmessages[error]) { + message = validationmessages[error]; + } else if (touched && warning) { + message = "warning"; + } + return message; + } + handleOnChange(value) { + const { input } = this.props; + const { onChange } = input; + onChange((0,external_immutable_namespaceObject.fromJS)(value)); + } + render() { + const props = FieldMultiselect_objRest(this.props, []); + return /* @__PURE__ */ external_react_default().createElement( + components_Multiselect, + FieldMultiselect_spreadProps(FieldMultiselect_spreadValues({}, props), { + onChange: this.handleOnChange, + value: !props.input.value ? props.input.value : props.input.value.toJS(), + error: this.getMultiselectError() + }) + ); + } } +FieldMultiselect_publicField(FieldMultiselect, "propTypes", { + input: external_prop_types_default().instanceOf(Object), + meta: external_prop_types_default().instanceOf(Object), + validationmessages: external_prop_types_default().instanceOf(Object) +}); -.ace_line .ace_fold { - box-sizing: border-box; +;// CONCATENATED MODULE: ./src/form/redux-form/FieldSelect/index.js +var FieldSelect_defProp = Object.defineProperty; +var FieldSelect_defProps = Object.defineProperties; +var FieldSelect_getOwnPropDescs = Object.getOwnPropertyDescriptors; +var FieldSelect_getOwnPropSymbols = Object.getOwnPropertySymbols; +var FieldSelect_hasOwnProp = Object.prototype.hasOwnProperty; +var FieldSelect_propIsEnum = Object.prototype.propertyIsEnumerable; +var FieldSelect_defNormalProp = (obj, key, value) => key in obj ? FieldSelect_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var FieldSelect_spreadValues = (a, b) => { + for (var prop in b || (b = {})) + if (FieldSelect_hasOwnProp.call(b, prop)) + FieldSelect_defNormalProp(a, prop, b[prop]); + if (FieldSelect_getOwnPropSymbols) + for (var prop of FieldSelect_getOwnPropSymbols(b)) { + if (FieldSelect_propIsEnum.call(b, prop)) + FieldSelect_defNormalProp(a, prop, b[prop]); + } + return a; +}; +var FieldSelect_spreadProps = (a, b) => FieldSelect_defProps(a, FieldSelect_getOwnPropDescs(b)); +var FieldSelect_objRest = (source, exclude) => { + var target = {}; + for (var prop in source) + if (FieldSelect_hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) + target[prop] = source[prop]; + if (source != null && FieldSelect_getOwnPropSymbols) + for (var prop of FieldSelect_getOwnPropSymbols(source)) { + if (exclude.indexOf(prop) < 0 && FieldSelect_propIsEnum.call(source, prop)) + target[prop] = source[prop]; + } + return target; +}; +var FieldSelect_publicField = (obj, key, value) => { + FieldSelect_defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); + return value; +}; - display: inline-block; - height: 11px; - margin-top: -2px; - vertical-align: middle; - background-image: - url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII="), - url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACJJREFUeNpi+P//fxgTAwPDBxDxD078RSX+YeEyDFMCIMAAI3INmXiwf2YAAAAASUVORK5CYII="); - background-repeat: no-repeat, repeat-x; - background-position: center center, top left; - color: transparent; - border: 1px solid black; - border-radius: 2px; - cursor: pointer; - pointer-events: auto; +class FieldSelect extends external_react_namespaceObject.Component { + constructor(props) { + super(props); + this.handleEvent = this.handleEvent.bind(this); + } + getSelectError() { + const { meta, validationmessages } = this.props; + const { touched, error, warning } = meta; + let message = null; + if (touched && error && validationmessages[error]) { + message = validationmessages[error]; + } else if (touched && warning) { + message = "warning"; + } + return message; + } + handleEvent(selectValue) { + const { input } = this.props; + const { onChange, value } = input; + onChange((0,external_immutable_namespaceObject.fromJS)(selectValue !== void 0 ? selectValue : value)); + } + render() { + const _a = this.props, { input } = _a, rest = FieldSelect_objRest(_a, ["input"]); + return /* @__PURE__ */ external_react_default().createElement( + Select, + FieldSelect_spreadProps(FieldSelect_spreadValues(FieldSelect_spreadValues({}, input), rest), { + isfield: true, + error: this.getSelectError(), + onChange: this.handleEvent, + onBlur: this.handleEvent, + value: !input.value ? input.value : input.value.toJS() + }) + ); + } } +FieldSelect_publicField(FieldSelect, "propTypes", { + input: external_prop_types_default().instanceOf(Object), + meta: external_prop_types_default().instanceOf(Object), + validationmessages: external_prop_types_default().instanceOf(Object) +}); -.ace_dark .ace_fold { -} +;// CONCATENATED MODULE: ./src/form/redux-form/FieldSelectableList/index.js +var FieldSelectableList_defProp = Object.defineProperty; +var FieldSelectableList_defProps = Object.defineProperties; +var FieldSelectableList_getOwnPropDescs = Object.getOwnPropertyDescriptors; +var FieldSelectableList_getOwnPropSymbols = Object.getOwnPropertySymbols; +var FieldSelectableList_hasOwnProp = Object.prototype.hasOwnProperty; +var FieldSelectableList_propIsEnum = Object.prototype.propertyIsEnumerable; +var FieldSelectableList_defNormalProp = (obj, key, value) => key in obj ? FieldSelectableList_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var FieldSelectableList_spreadValues = (a, b) => { + for (var prop in b || (b = {})) + if (FieldSelectableList_hasOwnProp.call(b, prop)) + FieldSelectableList_defNormalProp(a, prop, b[prop]); + if (FieldSelectableList_getOwnPropSymbols) + for (var prop of FieldSelectableList_getOwnPropSymbols(b)) { + if (FieldSelectableList_propIsEnum.call(b, prop)) + FieldSelectableList_defNormalProp(a, prop, b[prop]); + } + return a; +}; +var FieldSelectableList_spreadProps = (a, b) => FieldSelectableList_defProps(a, FieldSelectableList_getOwnPropDescs(b)); +var FieldSelectableList_objRest = (source, exclude) => { + var target = {}; + for (var prop in source) + if (FieldSelectableList_hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) + target[prop] = source[prop]; + if (source != null && FieldSelectableList_getOwnPropSymbols) + for (var prop of FieldSelectableList_getOwnPropSymbols(source)) { + if (exclude.indexOf(prop) < 0 && FieldSelectableList_propIsEnum.call(source, prop)) + target[prop] = source[prop]; + } + return target; +}; +var FieldSelectableList_publicField = (obj, key, value) => { + FieldSelectableList_defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); + return value; +}; -.ace_fold:hover{ - background-image: - url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII="), - url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACBJREFUeNpi+P//fz4TAwPDZxDxD5X4i5fLMEwJgAADAEPVDbjNw87ZAAAAAElFTkSuQmCC"); -} -.ace_tooltip { - background-color: #f5f5f5; - border: 1px solid gray; - border-radius: 1px; - box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3); - color: black; - max-width: 100%; - padding: 3px 4px; - position: fixed; - z-index: 999999; - box-sizing: border-box; - cursor: default; - white-space: pre; - word-wrap: break-word; - line-height: normal; - font-style: normal; - font-weight: normal; - letter-spacing: normal; - pointer-events: none; -} -.ace_tooltip.ace_dark { - background-color: #636363; - color: #fff; -} -.ace_tooltip:focus { - outline: 1px solid #5E9ED6; +class FieldSelectableList extends external_react_namespaceObject.Component { + constructor(props) { + super(props); + this.handleOnChange = this.handleOnChange.bind(this); + } + handleOnChange(value) { + const { input } = this.props; + input.onChange((0,external_immutable_namespaceObject.fromJS)(value)); + } + render() { + const _a = this.props, { children } = _a, props = FieldSelectableList_objRest(_a, ["children"]); + return /* @__PURE__ */ external_react_default().createElement( + components_SelectableList, + FieldSelectableList_spreadProps(FieldSelectableList_spreadValues({}, props), { + onChange: this.handleOnChange, + value: props.input.value ? props.input.value.toJS() : [] + }) + ); + } } +FieldSelectableList_publicField(FieldSelectableList, "propTypes", { + children: external_prop_types_default().oneOfType([ + (external_prop_types_default()).node + ]), + onChange: (external_prop_types_default()).func, + input: external_prop_types_default().instanceOf(Object) +}); + +;// CONCATENATED MODULE: ./src/form/redux-form/FieldToggle/index.js +var FieldToggle_defProp = Object.defineProperty; +var FieldToggle_defProps = Object.defineProperties; +var FieldToggle_getOwnPropDescs = Object.getOwnPropertyDescriptors; +var FieldToggle_getOwnPropSymbols = Object.getOwnPropertySymbols; +var FieldToggle_hasOwnProp = Object.prototype.hasOwnProperty; +var FieldToggle_propIsEnum = Object.prototype.propertyIsEnumerable; +var FieldToggle_defNormalProp = (obj, key, value) => key in obj ? FieldToggle_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var FieldToggle_spreadValues = (a, b) => { + for (var prop in b || (b = {})) + if (FieldToggle_hasOwnProp.call(b, prop)) + FieldToggle_defNormalProp(a, prop, b[prop]); + if (FieldToggle_getOwnPropSymbols) + for (var prop of FieldToggle_getOwnPropSymbols(b)) { + if (FieldToggle_propIsEnum.call(b, prop)) + FieldToggle_defNormalProp(a, prop, b[prop]); + } + return a; +}; +var FieldToggle_spreadProps = (a, b) => FieldToggle_defProps(a, FieldToggle_getOwnPropDescs(b)); +var FieldToggle_objRest = (source, exclude) => { + var target = {}; + for (var prop in source) + if (FieldToggle_hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) + target[prop] = source[prop]; + if (source != null && FieldToggle_getOwnPropSymbols) + for (var prop of FieldToggle_getOwnPropSymbols(source)) { + if (exclude.indexOf(prop) < 0 && FieldToggle_propIsEnum.call(source, prop)) + target[prop] = source[prop]; + } + return target; +}; +var FieldToggle_publicField = (obj, key, value) => { + FieldToggle_defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); + return value; +}; -.ace_icon { - display: inline-block; - width: 18px; - vertical-align: top; -} -.ace_icon_svg { - display: inline-block; - width: 12px; - vertical-align: top; - -webkit-mask-repeat: no-repeat; - -webkit-mask-size: 12px; - -webkit-mask-position: center; -} -.ace_folding-enabled > .ace_gutter-cell, .ace_folding-enabled > .ace_gutter-cell_svg-icons { - padding-right: 13px; + +class FieldToggle extends external_react_namespaceObject.Component { + constructor(props) { + super(props); + this.handleOnChange = this.handleOnChange.bind(this); + } + handleOnChange(value) { + const { input } = this.props; + input.onChange((0,external_immutable_namespaceObject.fromJS)(value)); + } + render() { + const _a = this.props, { children } = _a, props = FieldToggle_objRest(_a, ["children"]); + return /* @__PURE__ */ external_react_default().createElement( + components_Toggle, + FieldToggle_spreadProps(FieldToggle_spreadValues({}, props), { + onChange: this.handleOnChange, + value: props.input.value + }), + children + ); + } } +FieldToggle_publicField(FieldToggle, "propTypes", { + children: external_prop_types_default().oneOfType([ + (external_prop_types_default()).node + ]), + onChange: (external_prop_types_default()).func, + input: external_prop_types_default().instanceOf(Object) +}); -.ace_fold-widget { - box-sizing: border-box; +;// CONCATENATED MODULE: ./src/index.js - margin: 0 -12px 0 1px; - display: none; - width: 11px; - vertical-align: top; - background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42mWKsQ0AMAzC8ixLlrzQjzmBiEjp0A6WwBCSPgKAXoLkqSot7nN3yMwR7pZ32NzpKkVoDBUxKAAAAABJRU5ErkJggg=="); - background-repeat: no-repeat; - background-position: center; - border-radius: 3px; - - border: 1px solid transparent; - cursor: pointer; -} -.ace_folding-enabled .ace_fold-widget { - display: inline-block; -} -.ace_fold-widget.ace_end { - background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42m3HwQkAMAhD0YzsRchFKI7sAikeWkrxwScEB0nh5e7KTPWimZki4tYfVbX+MNl4pyZXejUO1QAAAABJRU5ErkJggg=="); -} -.ace_fold-widget.ace_closed { - background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAGCAYAAAAG5SQMAAAAOUlEQVR42jXKwQkAMAgDwKwqKD4EwQ26sSOkVWjgIIHAzPiCgaqiqnJHZnKICBERHN194O5b9vbLuAVRL+l0YWnZAAAAAElFTkSuQmCCXA=="); -} -.ace_fold-widget:hover { - border: 1px solid rgba(0, 0, 0, 0.3); - background-color: rgba(255, 255, 255, 0.2); - box-shadow: 0 1px 1px rgba(255, 255, 255, 0.7); -} -.ace_fold-widget:active { - border: 1px solid rgba(0, 0, 0, 0.4); - background-color: rgba(0, 0, 0, 0.05); - box-shadow: 0 1px 1px rgba(255, 255, 255, 0.8); -} -/** - * Dark version for fold widgets - */ -.ace_dark .ace_fold-widget { - background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHklEQVQIW2P4//8/AzoGEQ7oGCaLLAhWiSwB146BAQCSTPYocqT0AAAAAElFTkSuQmCC"); -} -.ace_dark .ace_fold-widget.ace_end { - background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAH0lEQVQIW2P4//8/AxQ7wNjIAjDMgC4AxjCVKBirIAAF0kz2rlhxpAAAAABJRU5ErkJggg=="); -} -.ace_dark .ace_fold-widget.ace_closed { - background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAFCAYAAACAcVaiAAAAHElEQVQIW2P4//+/AxAzgDADlOOAznHAKgPWAwARji8UIDTfQQAAAABJRU5ErkJggg=="); -} -.ace_dark .ace_fold-widget:hover { - box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2); - background-color: rgba(255, 255, 255, 0.1); -} -.ace_dark .ace_fold-widget:active { - box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2); -} -.ace_inline_button { - border: 1px solid lightgray; - display: inline-block; - margin: -1px 8px; - padding: 0 5px; - pointer-events: auto; - cursor: pointer; -} -.ace_inline_button:hover { - border-color: gray; - background: rgba(200,200,200,0.2); - display: inline-block; - pointer-events: auto; -} -.ace_fold-widget.ace_invalid { - background-color: #FFB4B4; - border-color: #DE5555; -} -.ace_fade-fold-widgets .ace_fold-widget { - transition: opacity 0.4s ease 0.05s; - opacity: 0; -} -.ace_fade-fold-widgets:hover .ace_fold-widget { - transition: opacity 0.05s ease 0.05s; - opacity:1; -} -.ace_underline { - text-decoration: underline; -} -.ace_bold { - font-weight: bold; -} -.ace_nobold .ace_bold { - font-weight: normal; -} -.ace_italic { - font-style: italic; -} -.ace_error-marker { - background-color: rgba(255, 0, 0,0.2); - position: absolute; - z-index: 9; -} -.ace_highlight-marker { - background-color: rgba(255, 255, 0,0.2); - position: absolute; - z-index: 8; -} -.ace_mobile-menu { - position: absolute; - line-height: 1.5; - border-radius: 4px; - -ms-user-select: none; - -moz-user-select: none; - -webkit-user-select: none; - user-select: none; - background: white; - box-shadow: 1px 3px 2px grey; - border: 1px solid #dcdcdc; - color: black; -} -.ace_dark > .ace_mobile-menu { - background: #333; - color: #ccc; - box-shadow: 1px 3px 2px grey; - border: 1px solid #444; -} -.ace_mobile-button { - padding: 2px; - cursor: pointer; - overflow: hidden; -} -.ace_mobile-button:hover { - background-color: #eee; - opacity:1; -} -.ace_mobile-button:active { - background-color: #ddd; -} -.ace_placeholder { - font-family: arial; - transform: scale(0.9); - transform-origin: left; - white-space: pre; - opacity: 0.7; - margin: 0 10px; -} - -.ace_ghost_text { - opacity: 0.5; - font-style: italic; - white-space: pre; -} - -.ace_screenreader-only { - position:absolute; - left:-10000px; - top:auto; - width:1px; - height:1px; - overflow:hidden; -}`}),ace.define("ace/layer/decorators",["require","exports","module","ace/lib/dom","ace/lib/oop","ace/lib/event_emitter"],function(n,M,G){"use strict";var L=n("../lib/dom"),T=n("../lib/oop"),C=n("../lib/event_emitter").EventEmitter,d=function(){function h(l,o){this.canvas=L.createElement("canvas"),this.renderer=o,this.pixelRatio=1,this.maxHeight=o.layerConfig.maxHeight,this.lineHeight=o.layerConfig.lineHeight,this.canvasHeight=l.parent.scrollHeight,this.heightRatio=this.canvasHeight/this.maxHeight,this.canvasWidth=l.width,this.minDecorationHeight=2*this.pixelRatio|0,this.halfMinDecorationHeight=this.minDecorationHeight/2|0,this.canvas.width=this.canvasWidth,this.canvas.height=this.canvasHeight,this.canvas.style.top="0px",this.canvas.style.right="0px",this.canvas.style.zIndex="7px",this.canvas.style.position="absolute",this.colors={},this.colors.dark={error:"rgba(255, 18, 18, 1)",warning:"rgba(18, 136, 18, 1)",info:"rgba(18, 18, 136, 1)"},this.colors.light={error:"rgb(255,51,51)",warning:"rgb(32,133,72)",info:"rgb(35,68,138)"},l.element.appendChild(this.canvas)}return h.prototype.$updateDecorators=function(l){var o=this.renderer.theme.isDark===!0?this.colors.dark:this.colors.light;if(l){this.maxHeight=l.maxHeight,this.lineHeight=l.lineHeight,this.canvasHeight=l.height;var s=(l.lastRow+1)*this.lineHeight;s_.priority?1:0}var a=this.renderer.session.$annotations;if(i.clearRect(0,0,this.canvas.width,this.canvas.height),a){var c={info:1,warning:2,error:3};a.forEach(function(k){k.priority=c[k.type]||null}),a=a.sort(r);for(var p=this.renderer.session.$foldData,g=0;gthis.canvasHeight&&(O=this.canvasHeight-this.halfMinDecorationHeight),S=Math.round(O-this.halfMinDecorationHeight),v=Math.round(O+this.halfMinDecorationHeight)}i.fillStyle=o[a[g].type]||null,i.fillRect(0,$,this.canvasWidth,v-S)}}var B=this.renderer.session.selection.getCursor();if(B){var b=this.compensateFoldRows(B.row,p),$=Math.round((B.row-b)*this.lineHeight*this.heightRatio);i.fillStyle="rgba(0, 0, 0, 0.5)",i.fillRect(0,$,this.canvasWidth,2)}},h.prototype.compensateFoldRows=function(l,o){var s=0;if(o&&o.length>0)for(var i=0;io[i].start.row&&l=o[i].end.row&&(s+=o[i].end.row-o[i].start.row);return s},h}();T.implement(d.prototype,C),M.Decorator=d}),ace.define("ace/virtual_renderer",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/config","ace/layer/gutter","ace/layer/marker","ace/layer/text","ace/layer/cursor","ace/scrollbar","ace/scrollbar","ace/scrollbar_custom","ace/scrollbar_custom","ace/renderloop","ace/layer/font_metrics","ace/lib/event_emitter","ace/css/editor-css","ace/layer/decorators","ace/lib/useragent"],function(n,M,G){"use strict";var L=n("./lib/oop"),T=n("./lib/dom"),C=n("./lib/lang"),d=n("./config"),h=n("./layer/gutter").Gutter,l=n("./layer/marker").Marker,o=n("./layer/text").Text,s=n("./layer/cursor").Cursor,i=n("./scrollbar").HScrollBar,r=n("./scrollbar").VScrollBar,a=n("./scrollbar_custom").HScrollBar,c=n("./scrollbar_custom").VScrollBar,p=n("./renderloop").RenderLoop,g=n("./layer/font_metrics").FontMetrics,A=n("./lib/event_emitter").EventEmitter,b=n("./css/editor-css"),$=n("./layer/decorators").Decorator,S=n("./lib/useragent");T.importCssString(b,"ace_editor.css",!1);var v=function(){function w(O,B){var k=this;this.container=O||T.createElement("div"),T.addCssClass(this.container,"ace_editor"),T.HI_DPI&&T.addCssClass(this.container,"ace_hidpi"),this.setTheme(B),d.get("useStrictCSP")==null&&d.set("useStrictCSP",!1),this.$gutter=T.createElement("div"),this.$gutter.className="ace_gutter",this.container.appendChild(this.$gutter),this.$gutter.setAttribute("aria-hidden",!0),this.scroller=T.createElement("div"),this.scroller.className="ace_scroller",this.container.appendChild(this.scroller),this.content=T.createElement("div"),this.content.className="ace_content",this.scroller.appendChild(this.content),this.$gutterLayer=new h(this.$gutter),this.$gutterLayer.on("changeGutterWidth",this.onGutterResize.bind(this)),this.$markerBack=new l(this.content);var _=this.$textLayer=new o(this.content);this.canvas=_.element,this.$markerFront=new l(this.content),this.$cursorLayer=new s(this.content),this.$horizScroll=!1,this.$vScroll=!1,this.scrollBar=this.scrollBarV=new r(this.container,this),this.scrollBarH=new i(this.container,this),this.scrollBarV.on("scroll",function(y){k.$scrollAnimation||k.session.setScrollTop(y.data-k.scrollMargin.top)}),this.scrollBarH.on("scroll",function(y){k.$scrollAnimation||k.session.setScrollLeft(y.data-k.scrollMargin.left)}),this.scrollTop=0,this.scrollLeft=0,this.cursorPos={row:0,column:0},this.$fontMetrics=new g(this.container),this.$textLayer.$setFontMetrics(this.$fontMetrics),this.$textLayer.on("changeCharacterSize",function(y){k.updateCharacterSize(),k.onResize(!0,k.gutterWidth,k.$size.width,k.$size.height),k._signal("changeCharacterSize",y)}),this.$size={width:0,height:0,scrollerHeight:0,scrollerWidth:0,$dirty:!0},this.layerConfig={width:1,padding:0,firstRow:0,firstRowScreen:0,lastRow:0,lineHeight:0,characterWidth:0,minHeight:1,maxHeight:1,offset:0,height:1,gutterOffset:1},this.scrollMargin={left:0,right:0,top:0,bottom:0,v:0,h:0},this.margin={left:0,right:0,top:0,bottom:0,v:0,h:0},this.$keepTextAreaAtCursor=!S.isIOS,this.$loop=new p(this.$renderChanges.bind(this),this.container.ownerDocument.defaultView),this.$loop.schedule(this.CHANGE_FULL),this.updateCharacterSize(),this.setPadding(4),this.$addResizeObserver(),d.resetOptions(this),d._signal("renderer",this)}return w.prototype.updateCharacterSize=function(){this.$textLayer.allowBoldFonts!=this.$allowBoldFonts&&(this.$allowBoldFonts=this.$textLayer.allowBoldFonts,this.setStyle("ace_nobold",!this.$allowBoldFonts)),this.layerConfig.characterWidth=this.characterWidth=this.$textLayer.getCharacterWidth(),this.layerConfig.lineHeight=this.lineHeight=this.$textLayer.getLineHeight(),this.$updatePrintMargin(),T.setStyle(this.scroller.style,"line-height",this.lineHeight+"px")},w.prototype.setSession=function(O){this.session&&this.session.doc.off("changeNewLineMode",this.onChangeNewLineMode),this.session=O,O&&this.scrollMargin.top&&O.getScrollTop()<=0&&O.setScrollTop(-this.scrollMargin.top),this.$cursorLayer.setSession(O),this.$markerBack.setSession(O),this.$markerFront.setSession(O),this.$gutterLayer.setSession(O),this.$textLayer.setSession(O),O&&(this.$loop.schedule(this.CHANGE_FULL),this.session.$setFontMetrics(this.$fontMetrics),this.scrollBarH.scrollLeft=this.scrollBarV.scrollTop=null,this.onChangeNewLineMode=this.onChangeNewLineMode.bind(this),this.onChangeNewLineMode(),this.session.doc.on("changeNewLineMode",this.onChangeNewLineMode))},w.prototype.updateLines=function(O,B,k){if(B===void 0&&(B=1/0),this.$changedLines?(this.$changedLines.firstRow>O&&(this.$changedLines.firstRow=O),this.$changedLines.lastRowthis.layerConfig.lastRow||this.$loop.schedule(this.CHANGE_LINES)},w.prototype.onChangeNewLineMode=function(){this.$loop.schedule(this.CHANGE_TEXT),this.$textLayer.$updateEolChar(),this.session.$bidiHandler.setEolChar(this.$textLayer.EOL_CHAR)},w.prototype.onChangeTabSize=function(){this.$loop.schedule(this.CHANGE_TEXT|this.CHANGE_MARKER),this.$textLayer.onChangeTabSize()},w.prototype.updateText=function(){this.$loop.schedule(this.CHANGE_TEXT)},w.prototype.updateFull=function(O){O?this.$renderChanges(this.CHANGE_FULL,!0):this.$loop.schedule(this.CHANGE_FULL)},w.prototype.updateFontSize=function(){this.$textLayer.checkForSizeChanges()},w.prototype.$updateSizeAsync=function(){this.$loop.pending?this.$size.$dirty=!0:this.onResize()},w.prototype.onResize=function(O,B,k,_){if(!(this.resizing>2)){this.resizing>0?this.resizing++:this.resizing=O?1:0;var y=this.container;_||(_=y.clientHeight||y.scrollHeight),k||(k=y.clientWidth||y.scrollWidth);var m=this.$updateCachedSize(O,B,k,_);if(this.$resizeTimer&&this.$resizeTimer.cancel(),!this.$size.scrollerHeight||!k&&!_)return this.resizing=0;O&&(this.$gutterLayer.$padding=null),O?this.$renderChanges(m|this.$changes,!0):this.$loop.schedule(m|this.$changes),this.resizing&&(this.resizing=0),this.scrollBarH.scrollLeft=this.scrollBarV.scrollTop=null,this.$customScrollbar&&this.$updateCustomScrollbar(!0)}},w.prototype.$updateCachedSize=function(O,B,k,_){_-=this.$extraHeight||0;var y=0,m=this.$size,E={width:m.width,height:m.height,scrollerHeight:m.scrollerHeight,scrollerWidth:m.scrollerWidth};if(_&&(O||m.height!=_)&&(m.height=_,y|=this.CHANGE_SIZE,m.scrollerHeight=m.height,this.$horizScroll&&(m.scrollerHeight-=this.scrollBarH.getHeight()),this.scrollBarV.setHeight(m.scrollerHeight),this.scrollBarV.element.style.bottom=this.scrollBarH.getHeight()+"px",y=y|this.CHANGE_SCROLL),k&&(O||m.width!=k)){y|=this.CHANGE_SIZE,m.width=k,B==null&&(B=this.$showGutter?this.$gutter.offsetWidth:0),this.gutterWidth=B,T.setStyle(this.scrollBarH.element.style,"left",B+"px"),T.setStyle(this.scroller.style,"left",B+this.margin.left+"px"),m.scrollerWidth=Math.max(0,k-B-this.scrollBarV.getWidth()-this.margin.h),T.setStyle(this.$gutter.style,"left",this.margin.left+"px");var I=this.scrollBarV.getWidth()+"px";T.setStyle(this.scrollBarH.element.style,"right",I),T.setStyle(this.scroller.style,"right",I),T.setStyle(this.scroller.style,"bottom",this.scrollBarH.getHeight()),this.scrollBarH.setWidth(m.scrollerWidth),(this.session&&this.session.getUseWrapMode()&&this.adjustWrapLimit()||O)&&(y|=this.CHANGE_FULL)}return m.$dirty=!k||!_,y&&this._signal("resize",E),y},w.prototype.onGutterResize=function(O){var B=this.$showGutter?O:0;B!=this.gutterWidth&&(this.$changes|=this.$updateCachedSize(!0,B,this.$size.width,this.$size.height)),this.session.getUseWrapMode()&&this.adjustWrapLimit()?this.$loop.schedule(this.CHANGE_FULL):this.$size.$dirty?this.$loop.schedule(this.CHANGE_FULL):this.$computeLayerConfig()},w.prototype.adjustWrapLimit=function(){var O=this.$size.scrollerWidth-this.$padding*2,B=Math.floor(O/this.characterWidth);return this.session.adjustWrapLimit(B,this.$showPrintMargin&&this.$printMarginColumn)},w.prototype.setAnimatedScroll=function(O){this.setOption("animatedScroll",O)},w.prototype.getAnimatedScroll=function(){return this.$animatedScroll},w.prototype.setShowInvisibles=function(O){this.setOption("showInvisibles",O),this.session.$bidiHandler.setShowInvisibles(O)},w.prototype.getShowInvisibles=function(){return this.getOption("showInvisibles")},w.prototype.getDisplayIndentGuides=function(){return this.getOption("displayIndentGuides")},w.prototype.setDisplayIndentGuides=function(O){this.setOption("displayIndentGuides",O)},w.prototype.getHighlightIndentGuides=function(){return this.getOption("highlightIndentGuides")},w.prototype.setHighlightIndentGuides=function(O){this.setOption("highlightIndentGuides",O)},w.prototype.setShowPrintMargin=function(O){this.setOption("showPrintMargin",O)},w.prototype.getShowPrintMargin=function(){return this.getOption("showPrintMargin")},w.prototype.setPrintMarginColumn=function(O){this.setOption("printMarginColumn",O)},w.prototype.getPrintMarginColumn=function(){return this.getOption("printMarginColumn")},w.prototype.getShowGutter=function(){return this.getOption("showGutter")},w.prototype.setShowGutter=function(O){return this.setOption("showGutter",O)},w.prototype.getFadeFoldWidgets=function(){return this.getOption("fadeFoldWidgets")},w.prototype.setFadeFoldWidgets=function(O){this.setOption("fadeFoldWidgets",O)},w.prototype.setHighlightGutterLine=function(O){this.setOption("highlightGutterLine",O)},w.prototype.getHighlightGutterLine=function(){return this.getOption("highlightGutterLine")},w.prototype.$updatePrintMargin=function(){if(!(!this.$showPrintMargin&&!this.$printMarginEl)){if(!this.$printMarginEl){var O=T.createElement("div");O.className="ace_layer ace_print-margin-layer",this.$printMarginEl=T.createElement("div"),this.$printMarginEl.className="ace_print-margin",O.appendChild(this.$printMarginEl),this.content.insertBefore(O,this.content.firstChild)}var B=this.$printMarginEl.style;B.left=Math.round(this.characterWidth*this.$printMarginColumn+this.$padding)+"px",B.visibility=this.$showPrintMargin?"visible":"hidden",this.session&&this.session.$wrap==-1&&this.adjustWrapLimit()}},w.prototype.getContainerElement=function(){return this.container},w.prototype.getMouseEventTarget=function(){return this.scroller},w.prototype.getTextAreaContainer=function(){return this.container},w.prototype.$moveTextAreaToCursor=function(){if(!this.$isMousePressed){var O=this.textarea.style,B=this.$composition;if(!this.$keepTextAreaAtCursor&&!B){T.translate(this.textarea,-100,0);return}var k=this.$cursorLayer.$pixelPos;if(k){B&&B.markerRange&&(k=this.$cursorLayer.getPixelPosition(B.markerRange.start,!0));var _=this.layerConfig,y=k.top,m=k.left;y-=_.offset;var E=B&&B.useTextareaForIME||S.isMobile?this.lineHeight:1;if(y<0||y>_.height-E){T.translate(this.textarea,0,0);return}var I=1,N=this.$size.height-E;if(!B)y+=this.lineHeight;else if(B.useTextareaForIME){var W=this.textarea.value;I=this.characterWidth*this.session.$getStringScreenWidth(W)[0]}else y+=this.lineHeight+2;m-=this.scrollLeft,m>this.$size.scrollerWidth-I&&(m=this.$size.scrollerWidth-I),m+=this.gutterWidth+this.margin.left,T.setStyle(O,"height",E+"px"),T.setStyle(O,"width",I+"px"),T.translate(this.textarea,Math.min(m,this.$size.scrollerWidth-I),Math.min(y,N))}}},w.prototype.getFirstVisibleRow=function(){return this.layerConfig.firstRow},w.prototype.getFirstFullyVisibleRow=function(){return this.layerConfig.firstRow+(this.layerConfig.offset===0?0:1)},w.prototype.getLastFullyVisibleRow=function(){var O=this.layerConfig,B=O.lastRow,k=this.session.documentToScreenRow(B,0)*O.lineHeight;return k-this.session.getScrollTop()>O.height-O.lineHeight?B-1:B},w.prototype.getLastVisibleRow=function(){return this.layerConfig.lastRow},w.prototype.setPadding=function(O){this.$padding=O,this.$textLayer.setPadding(O),this.$cursorLayer.setPadding(O),this.$markerFront.setPadding(O),this.$markerBack.setPadding(O),this.$loop.schedule(this.CHANGE_FULL),this.$updatePrintMargin()},w.prototype.setScrollMargin=function(O,B,k,_){var y=this.scrollMargin;y.top=O|0,y.bottom=B|0,y.right=_|0,y.left=k|0,y.v=y.top+y.bottom,y.h=y.left+y.right,y.top&&this.scrollTop<=0&&this.session&&this.session.setScrollTop(-y.top),this.updateFull()},w.prototype.setMargin=function(O,B,k,_){var y=this.margin;y.top=O|0,y.bottom=B|0,y.right=_|0,y.left=k|0,y.v=y.top+y.bottom,y.h=y.left+y.right,this.$updateCachedSize(!0,this.gutterWidth,this.$size.width,this.$size.height),this.updateFull()},w.prototype.getHScrollBarAlwaysVisible=function(){return this.$hScrollBarAlwaysVisible},w.prototype.setHScrollBarAlwaysVisible=function(O){this.setOption("hScrollBarAlwaysVisible",O)},w.prototype.getVScrollBarAlwaysVisible=function(){return this.$vScrollBarAlwaysVisible},w.prototype.setVScrollBarAlwaysVisible=function(O){this.setOption("vScrollBarAlwaysVisible",O)},w.prototype.$updateScrollBarV=function(){var O=this.layerConfig.maxHeight,B=this.$size.scrollerHeight;!this.$maxLines&&this.$scrollPastEnd&&(O-=(B-this.lineHeight)*this.$scrollPastEnd,this.scrollTop>O-B&&(O=this.scrollTop+B,this.scrollBarV.scrollTop=null)),this.scrollBarV.setScrollHeight(O+this.scrollMargin.v),this.scrollBarV.setScrollTop(this.scrollTop+this.scrollMargin.top)},w.prototype.$updateScrollBarH=function(){this.scrollBarH.setScrollWidth(this.layerConfig.width+2*this.$padding+this.scrollMargin.h),this.scrollBarH.setScrollLeft(this.scrollLeft+this.scrollMargin.left)},w.prototype.freeze=function(){this.$frozen=!0},w.prototype.unfreeze=function(){this.$frozen=!1},w.prototype.$renderChanges=function(O,B){if(this.$changes&&(O|=this.$changes,this.$changes=0),!this.session||!this.container.offsetWidth||this.$frozen||!O&&!B){this.$changes|=O;return}if(this.$size.$dirty)return this.$changes|=O,this.onResize(!0);this.lineHeight||this.$textLayer.checkForSizeChanges(),this._signal("beforeRender",O),this.session&&this.session.$bidiHandler&&this.session.$bidiHandler.updateCharacterWidths(this.$fontMetrics);var k=this.layerConfig;if(O&this.CHANGE_FULL||O&this.CHANGE_SIZE||O&this.CHANGE_TEXT||O&this.CHANGE_LINES||O&this.CHANGE_SCROLL||O&this.CHANGE_H_SCROLL){if(O|=this.$computeLayerConfig()|this.$loop.clear(),k.firstRow!=this.layerConfig.firstRow&&k.firstRowScreen==this.layerConfig.firstRowScreen){var _=this.scrollTop+(k.firstRow-Math.max(this.layerConfig.firstRow,0))*this.lineHeight;_>0&&(this.scrollTop=_,O=O|this.CHANGE_SCROLL,O|=this.$computeLayerConfig()|this.$loop.clear())}k=this.layerConfig,this.$updateScrollBarV(),O&this.CHANGE_H_SCROLL&&this.$updateScrollBarH(),T.translate(this.content,-this.scrollLeft,-k.offset);var y=k.width+2*this.$padding+"px",m=k.minHeight+"px";T.setStyle(this.content.style,"width",y),T.setStyle(this.content.style,"height",m)}if(O&this.CHANGE_H_SCROLL&&(T.translate(this.content,-this.scrollLeft,-k.offset),this.scroller.className=this.scrollLeft<=0?"ace_scroller ":"ace_scroller ace_scroll-left ",this.enableKeyboardAccessibility&&(this.scroller.className+=this.keyboardFocusClassName)),O&this.CHANGE_FULL){this.$changedLines=null,this.$textLayer.update(k),this.$showGutter&&this.$gutterLayer.update(k),this.$customScrollbar&&this.$scrollDecorator.$updateDecorators(k),this.$markerBack.update(k),this.$markerFront.update(k),this.$cursorLayer.update(k),this.$moveTextAreaToCursor(),this._signal("afterRender",O);return}if(O&this.CHANGE_SCROLL){this.$changedLines=null,O&this.CHANGE_TEXT||O&this.CHANGE_LINES?this.$textLayer.update(k):this.$textLayer.scrollLines(k),this.$showGutter&&(O&this.CHANGE_GUTTER||O&this.CHANGE_LINES?this.$gutterLayer.update(k):this.$gutterLayer.scrollLines(k)),this.$customScrollbar&&this.$scrollDecorator.$updateDecorators(k),this.$markerBack.update(k),this.$markerFront.update(k),this.$cursorLayer.update(k),this.$moveTextAreaToCursor(),this._signal("afterRender",O);return}O&this.CHANGE_TEXT?(this.$changedLines=null,this.$textLayer.update(k),this.$showGutter&&this.$gutterLayer.update(k),this.$customScrollbar&&this.$scrollDecorator.$updateDecorators(k)):O&this.CHANGE_LINES?((this.$updateLines()||O&this.CHANGE_GUTTER&&this.$showGutter)&&this.$gutterLayer.update(k),this.$customScrollbar&&this.$scrollDecorator.$updateDecorators(k)):O&this.CHANGE_TEXT||O&this.CHANGE_GUTTER?(this.$showGutter&&this.$gutterLayer.update(k),this.$customScrollbar&&this.$scrollDecorator.$updateDecorators(k)):O&this.CHANGE_CURSOR&&(this.$highlightGutterLine&&this.$gutterLayer.updateLineHighlight(k),this.$customScrollbar&&this.$scrollDecorator.$updateDecorators(k)),O&this.CHANGE_CURSOR&&(this.$cursorLayer.update(k),this.$moveTextAreaToCursor()),O&(this.CHANGE_MARKER|this.CHANGE_MARKER_FRONT)&&this.$markerFront.update(k),O&(this.CHANGE_MARKER|this.CHANGE_MARKER_BACK)&&this.$markerBack.update(k),this._signal("afterRender",O)},w.prototype.$autosize=function(){var O=this.session.getScreenLength()*this.lineHeight,B=this.$maxLines*this.lineHeight,k=Math.min(B,Math.max((this.$minLines||1)*this.lineHeight,O))+this.scrollMargin.v+(this.$extraHeight||0);this.$horizScroll&&(k+=this.scrollBarH.getHeight()),this.$maxPixelHeight&&k>this.$maxPixelHeight&&(k=this.$maxPixelHeight);var _=k<=2*this.lineHeight,y=!_&&O>B;if(k!=this.desiredHeight||this.$size.height!=this.desiredHeight||y!=this.$vScroll){y!=this.$vScroll&&(this.$vScroll=y,this.scrollBarV.setVisible(y));var m=this.container.clientWidth;this.container.style.height=k+"px",this.$updateCachedSize(!0,this.$gutterWidth,m,k),this.desiredHeight=k,this._signal("autosize")}},w.prototype.$computeLayerConfig=function(){var O=this.session,B=this.$size,k=B.height<=2*this.lineHeight,_=this.session.getScreenLength(),y=_*this.lineHeight,m=this.$getLongestLine(),E=!k&&(this.$hScrollBarAlwaysVisible||B.scrollerWidth-m-2*this.$padding<0),I=this.$horizScroll!==E;I&&(this.$horizScroll=E,this.scrollBarH.setVisible(E));var N=this.$vScroll;this.$maxLines&&this.lineHeight>1&&this.$autosize();var W=B.scrollerHeight+this.lineHeight,z=!this.$maxLines&&this.$scrollPastEnd?(B.scrollerHeight-this.lineHeight)*this.$scrollPastEnd:0;y+=z;var U=this.scrollMargin;this.session.setScrollTop(Math.max(-U.top,Math.min(this.scrollTop,y-B.scrollerHeight+U.bottom))),this.session.setScrollLeft(Math.max(-U.left,Math.min(this.scrollLeft,m+2*this.$padding-B.scrollerWidth+U.right)));var j=!k&&(this.$vScrollBarAlwaysVisible||B.scrollerHeight-y+z<0||this.scrollTop>U.top),q=N!==j;q&&(this.$vScroll=j,this.scrollBarV.setVisible(j));var Y=this.scrollTop%this.lineHeight,t0=Math.ceil(W/this.lineHeight)-1,n0=Math.max(0,Math.round((this.scrollTop-Y)/this.lineHeight)),u0=n0+t0,h0,m0,p0=this.lineHeight;n0=O.screenToDocumentRow(n0,0);var b0=O.getFoldLine(n0);b0&&(n0=b0.start.row),h0=O.documentToScreenRow(n0,0),m0=O.getRowLength(n0)*p0,u0=Math.min(O.screenToDocumentRow(u0,0),O.getLength()-1),W=B.scrollerHeight+O.getRowLength(u0)*p0+m0,Y=this.scrollTop-h0*p0;var k0=0;return(this.layerConfig.width!=m||I)&&(k0=this.CHANGE_H_SCROLL),(I||q)&&(k0|=this.$updateCachedSize(!0,this.gutterWidth,B.width,B.height),this._signal("scrollbarVisibilityChanged"),q&&(m=this.$getLongestLine())),this.layerConfig={width:m,padding:this.$padding,firstRow:n0,firstRowScreen:h0,lastRow:u0,lineHeight:p0,characterWidth:this.characterWidth,minHeight:W,maxHeight:y,offset:Y,gutterOffset:p0?Math.max(0,Math.ceil((Y+B.height-B.scrollerHeight)/p0)):0,height:this.$size.scrollerHeight},this.session.$bidiHandler&&this.session.$bidiHandler.setContentWidth(m-this.$padding),k0},w.prototype.$updateLines=function(){if(this.$changedLines){var O=this.$changedLines.firstRow,B=this.$changedLines.lastRow;this.$changedLines=null;var k=this.layerConfig;if(!(O>k.lastRow+1)&&!(Bthis.$textLayer.MAX_LINE_LENGTH&&(O=this.$textLayer.MAX_LINE_LENGTH+30),Math.max(this.$size.scrollerWidth-2*this.$padding,Math.round(O*this.characterWidth))},w.prototype.updateFrontMarkers=function(){this.$markerFront.setMarkers(this.session.getMarkers(!0)),this.$loop.schedule(this.CHANGE_MARKER_FRONT)},w.prototype.updateBackMarkers=function(){this.$markerBack.setMarkers(this.session.getMarkers()),this.$loop.schedule(this.CHANGE_MARKER_BACK)},w.prototype.addGutterDecoration=function(O,B){this.$gutterLayer.addGutterDecoration(O,B)},w.prototype.removeGutterDecoration=function(O,B){this.$gutterLayer.removeGutterDecoration(O,B)},w.prototype.updateBreakpoints=function(O){this.$loop.schedule(this.CHANGE_GUTTER)},w.prototype.setAnnotations=function(O){this.$gutterLayer.setAnnotations(O),this.$loop.schedule(this.CHANGE_GUTTER)},w.prototype.updateCursor=function(){this.$loop.schedule(this.CHANGE_CURSOR)},w.prototype.hideCursor=function(){this.$cursorLayer.hideCursor()},w.prototype.showCursor=function(){this.$cursorLayer.showCursor()},w.prototype.scrollSelectionIntoView=function(O,B,k){this.scrollCursorIntoView(O,k),this.scrollCursorIntoView(B,k)},w.prototype.scrollCursorIntoView=function(O,B,k){if(this.$size.scrollerHeight!==0){var _=this.$cursorLayer.getPixelPosition(O),y=_.left,m=_.top,E=k&&k.top||0,I=k&&k.bottom||0;this.$scrollAnimation&&(this.$stopAnimation=!0);var N=this.$scrollAnimation?this.session.getScrollTop():this.scrollTop;N+E>m?(B&&N+E>m+this.lineHeight&&(m-=B*this.$size.scrollerHeight),m===0&&(m=-this.scrollMargin.top),this.session.setScrollTop(m)):N+this.$size.scrollerHeight-I=1-this.scrollMargin.top||B>0&&this.session.getScrollTop()+this.$size.scrollerHeight-this.layerConfig.maxHeight<-1+this.scrollMargin.bottom||O<0&&this.session.getScrollLeft()>=1-this.scrollMargin.left||O>0&&this.session.getScrollLeft()+this.$size.scrollerWidth-this.layerConfig.width<-1+this.scrollMargin.right)return!0},w.prototype.pixelToScreenCoordinates=function(O,B){var k;if(this.$hasCssTransforms){k={top:0,left:0};var _=this.$fontMetrics.transformCoordinates([O,B]);O=_[1]-this.gutterWidth-this.margin.left,B=_[0]}else k=this.scroller.getBoundingClientRect();var y=O+this.scrollLeft-k.left-this.$padding,m=y/this.characterWidth,E=Math.floor((B+this.scrollTop-k.top)/this.lineHeight),I=this.$blockCursor?Math.floor(m):Math.round(m);return{row:E,column:I,side:m-I>0?1:-1,offsetX:y}},w.prototype.screenToTextCoordinates=function(O,B){var k;if(this.$hasCssTransforms){k={top:0,left:0};var _=this.$fontMetrics.transformCoordinates([O,B]);O=_[1]-this.gutterWidth-this.margin.left,B=_[0]}else k=this.scroller.getBoundingClientRect();var y=O+this.scrollLeft-k.left-this.$padding,m=y/this.characterWidth,E=this.$blockCursor?Math.floor(m):Math.round(m),I=Math.floor((B+this.scrollTop-k.top)/this.lineHeight);return this.session.screenToDocumentPosition(I,Math.max(E,0),y)},w.prototype.textToScreenCoordinates=function(O,B){var k=this.scroller.getBoundingClientRect(),_=this.session.documentToScreenPosition(O,B),y=this.$padding+(this.session.$bidiHandler.isBidiRow(_.row,O)?this.session.$bidiHandler.getPosLeft(_.column):Math.round(_.column*this.characterWidth)),m=_.row*this.lineHeight;return{pageX:k.left+y-this.scrollLeft,pageY:k.top+m-this.scrollTop}},w.prototype.visualizeFocus=function(){T.addCssClass(this.container,"ace_focus")},w.prototype.visualizeBlur=function(){T.removeCssClass(this.container,"ace_focus")},w.prototype.showComposition=function(O){this.$composition=O,O.cssText||(O.cssText=this.textarea.style.cssText),O.useTextareaForIME==null&&(O.useTextareaForIME=this.$useTextareaForIME),this.$useTextareaForIME?(T.addCssClass(this.textarea,"ace_composition"),this.textarea.style.cssText="",this.$moveTextAreaToCursor(),this.$cursorLayer.element.style.display="none"):O.markerId=this.session.addMarker(O.markerRange,"ace_composition_marker","text")},w.prototype.setCompositionText=function(O){var B=this.session.selection.cursor;this.addToken(O,"composition_placeholder",B.row,B.column),this.$moveTextAreaToCursor()},w.prototype.hideComposition=function(){if(this.$composition){this.$composition.markerId&&this.session.removeMarker(this.$composition.markerId),T.removeCssClass(this.textarea,"ace_composition"),this.textarea.style.cssText=this.$composition.cssText;var O=this.session.selection.cursor;this.removeExtraToken(O.row,O.column),this.$composition=null,this.$cursorLayer.element.style.display=""}},w.prototype.setGhostText=function(O,B){var k=this.session.selection.cursor,_=B||{row:k.row,column:k.column};this.removeGhostText();var y=O.split(` -`);this.addToken(y[0],"ghost_text",_.row,_.column),this.$ghostText={text:O,position:{row:_.row,column:_.column}},y.length>1&&(this.$ghostTextWidget={text:y.slice(1).join(` -`),row:_.row,column:_.column,className:"ace_ghost_text"},this.session.widgetManager.addLineWidget(this.$ghostTextWidget))},w.prototype.removeGhostText=function(){if(this.$ghostText){var O=this.$ghostText.position;this.removeExtraToken(O.row,O.column),this.$ghostTextWidget&&(this.session.widgetManager.removeLineWidget(this.$ghostTextWidget),this.$ghostTextWidget=null),this.$ghostText=null}},w.prototype.addToken=function(O,B,k,_){var y=this.session;y.bgTokenizer.lines[k]=null;var m={type:B,value:O},E=y.getTokens(k);if(_==null||!E.length)E.push(m);else for(var I=0,N=0;N1||Math.abs(O.$size.height-_)>1?O.$resizeTimer.delay():O.$resizeTimer.cancel()}),this.$resizeObserver.observe(this.container)}},w}();v.prototype.CHANGE_CURSOR=1,v.prototype.CHANGE_MARKER=2,v.prototype.CHANGE_GUTTER=4,v.prototype.CHANGE_SCROLL=8,v.prototype.CHANGE_LINES=16,v.prototype.CHANGE_TEXT=32,v.prototype.CHANGE_SIZE=64,v.prototype.CHANGE_MARKER_BACK=128,v.prototype.CHANGE_MARKER_FRONT=256,v.prototype.CHANGE_FULL=512,v.prototype.CHANGE_H_SCROLL=1024,v.prototype.$changes=0,v.prototype.$padding=null,v.prototype.$frozen=!1,v.prototype.STEPS=8,L.implement(v.prototype,A),d.defineOptions(v.prototype,"renderer",{useResizeObserver:{set:function(w){!w&&this.$resizeObserver?(this.$resizeObserver.disconnect(),this.$resizeTimer.cancel(),this.$resizeTimer=this.$resizeObserver=null):w&&!this.$resizeObserver&&this.$addResizeObserver()}},animatedScroll:{initialValue:!1},showInvisibles:{set:function(w){this.$textLayer.setShowInvisibles(w)&&this.$loop.schedule(this.CHANGE_TEXT)},initialValue:!1},showPrintMargin:{set:function(){this.$updatePrintMargin()},initialValue:!0},printMarginColumn:{set:function(){this.$updatePrintMargin()},initialValue:80},printMargin:{set:function(w){typeof w=="number"&&(this.$printMarginColumn=w),this.$showPrintMargin=!!w,this.$updatePrintMargin()},get:function(){return this.$showPrintMargin&&this.$printMarginColumn}},showGutter:{set:function(w){this.$gutter.style.display=w?"block":"none",this.$loop.schedule(this.CHANGE_FULL),this.onGutterResize()},initialValue:!0},useSvgGutterIcons:{set:function(w){this.$gutterLayer.$useSvgGutterIcons=w},initialValue:!1},showFoldedAnnotations:{set:function(w){this.$gutterLayer.$showFoldedAnnotations=w},initialValue:!1},fadeFoldWidgets:{set:function(w){T.setCssClass(this.$gutter,"ace_fade-fold-widgets",w)},initialValue:!1},showFoldWidgets:{set:function(w){this.$gutterLayer.setShowFoldWidgets(w),this.$loop.schedule(this.CHANGE_GUTTER)},initialValue:!0},displayIndentGuides:{set:function(w){this.$textLayer.setDisplayIndentGuides(w)&&this.$loop.schedule(this.CHANGE_TEXT)},initialValue:!0},highlightIndentGuides:{set:function(w){this.$textLayer.setHighlightIndentGuides(w)==!0?this.$textLayer.$highlightIndentGuide():this.$textLayer.$clearActiveIndentGuide(this.$textLayer.$lines.cells)},initialValue:!0},highlightGutterLine:{set:function(w){this.$gutterLayer.setHighlightGutterLine(w),this.$loop.schedule(this.CHANGE_GUTTER)},initialValue:!0},hScrollBarAlwaysVisible:{set:function(w){(!this.$hScrollBarAlwaysVisible||!this.$horizScroll)&&this.$loop.schedule(this.CHANGE_SCROLL)},initialValue:!1},vScrollBarAlwaysVisible:{set:function(w){(!this.$vScrollBarAlwaysVisible||!this.$vScroll)&&this.$loop.schedule(this.CHANGE_SCROLL)},initialValue:!1},fontSize:{set:function(w){typeof w=="number"&&(w=w+"px"),this.container.style.fontSize=w,this.updateFontSize()},initialValue:12},fontFamily:{set:function(w){this.container.style.fontFamily=w,this.updateFontSize()}},maxLines:{set:function(w){this.updateFull()}},minLines:{set:function(w){this.$minLines<562949953421311||(this.$minLines=0),this.updateFull()}},maxPixelHeight:{set:function(w){this.updateFull()},initialValue:0},scrollPastEnd:{set:function(w){w=+w||0,this.$scrollPastEnd!=w&&(this.$scrollPastEnd=w,this.$loop.schedule(this.CHANGE_SCROLL))},initialValue:0,handlesSet:!0},fixedWidthGutter:{set:function(w){this.$gutterLayer.$fixedWidth=!!w,this.$loop.schedule(this.CHANGE_GUTTER)}},customScrollbar:{set:function(w){this.$updateCustomScrollbar(w)},initialValue:!1},theme:{set:function(w){this.setTheme(w)},get:function(){return this.$themeId||this.theme},initialValue:"./theme/textmate",handlesSet:!0},hasCssTransforms:{},useTextareaForIME:{initialValue:!S.isMobile&&!S.isIE}}),M.VirtualRenderer=v}),ace.define("ace/worker/worker_client",["require","exports","module","ace/lib/oop","ace/lib/net","ace/lib/event_emitter","ace/config"],function(n,M,G){"use strict";var L=n("../lib/oop"),T=n("../lib/net"),C=n("../lib/event_emitter").EventEmitter,d=n("../config");function h(i){var r="importScripts('"+T.qualifyURL(i)+"');";try{return new Blob([r],{type:"application/javascript"})}catch(p){var a=window.BlobBuilder||window.WebKitBlobBuilder||window.MozBlobBuilder,c=new a;return c.append(r),c.getBlob("application/javascript")}}function l(i){if(typeof Worker=="undefined")return{postMessage:function(){},terminate:function(){}};if(d.get("loadWorkerFromBlob")){var r=h(i),a=window.URL||window.webkitURL,c=a.createObjectURL(r);return new Worker(c)}return new Worker(i)}var o=function(i){i.postMessage||(i=this.$createWorkerFromOldConfig.apply(this,arguments)),this.$worker=i,this.$sendDeltaQueue=this.$sendDeltaQueue.bind(this),this.changeListener=this.changeListener.bind(this),this.onMessage=this.onMessage.bind(this),this.callbackId=1,this.callbacks={},this.$worker.onmessage=this.onMessage};(function(){L.implement(this,C),this.$createWorkerFromOldConfig=function(i,r,a,c,p){if(n.nameToUrl&&!n.toUrl&&(n.toUrl=n.nameToUrl),d.get("packaged")||!n.toUrl)c=c||d.moduleUrl(r,"worker");else{var g=this.$normalizePath;c=c||g(n.toUrl("ace/worker/worker.js",null,"_"));var A={};i.forEach(function(b){A[b]=g(n.toUrl(b,null,"_").replace(/(\.js)?(\?.*)?$/,""))})}return this.$worker=l(c),p&&this.send("importScripts",p),this.$worker.postMessage({init:!0,tlns:A,module:r,classname:a}),this.$worker},this.onMessage=function(i){var r=i.data;switch(r.type){case"event":this._signal(r.name,{data:r.data});break;case"call":var a=this.callbacks[r.id];a&&(a(r.data),delete this.callbacks[r.id]);break;case"error":this.reportError(r.data);break;case"log":window.console&&console.log&&console.log.apply(console,r.data);break}},this.reportError=function(i){window.console&&console.error&&console.error(i)},this.$normalizePath=function(i){return T.qualifyURL(i)},this.terminate=function(){this._signal("terminate",{}),this.deltaQueue=null,this.$worker.terminate(),this.$worker.onerror=function(i){i.preventDefault()},this.$worker=null,this.$doc&&this.$doc.off("change",this.changeListener),this.$doc=null},this.send=function(i,r){this.$worker.postMessage({command:i,args:r})},this.call=function(i,r,a){if(a){var c=this.callbackId++;this.callbacks[c]=a,r.push(c)}this.send(i,r)},this.emit=function(i,r){try{r.data&&r.data.err&&(r.data.err={message:r.data.err.message,stack:r.data.err.stack,code:r.data.err.code}),this.$worker&&this.$worker.postMessage({event:i,data:{data:r.data}})}catch(a){console.error(a.stack)}},this.attachToDocument=function(i){this.$doc&&this.terminate(),this.$doc=i,this.call("setValue",[i.getValue()]),i.on("change",this.changeListener,!0)},this.changeListener=function(i){this.deltaQueue||(this.deltaQueue=[],setTimeout(this.$sendDeltaQueue,0)),i.action=="insert"?this.deltaQueue.push(i.start,i.lines):this.deltaQueue.push(i.start,i.end)},this.$sendDeltaQueue=function(){var i=this.deltaQueue;i&&(this.deltaQueue=null,i.length>50&&i.length>this.$doc.getLength()>>1?this.call("setValue",[this.$doc.getValue()]):this.emit("change",{data:i}))}}).call(o.prototype);var s=function(i,r,a){var c=null,p=!1,g=Object.create(C),A=[],b=new o({messageBuffer:A,terminate:function(){},postMessage:function(S){A.push(S),c&&(p?setTimeout($):$())}});b.setEmitSync=function(S){p=S};var $=function(){var S=A.shift();S.command?c[S.command].apply(c,S.args):S.event&&g._signal(S.event,S.data)};return g.postMessage=function(S){b.onMessage({data:S})},g.callback=function(S,v){this.postMessage({type:"call",id:v,data:S})},g.emit=function(S,v){this.postMessage({type:"event",name:S,data:v})},d.loadModule(["worker",r],function(S){for(c=new S[a](g);A.length;)$()}),b};M.UIWorkerClient=s,M.WorkerClient=o,M.createWorker=l}),ace.define("ace/placeholder",["require","exports","module","ace/range","ace/lib/event_emitter","ace/lib/oop"],function(n,M,G){"use strict";var L=n("./range").Range,T=n("./lib/event_emitter").EventEmitter,C=n("./lib/oop"),d=function(){function h(l,o,s,i,r,a){var c=this;this.length=o,this.session=l,this.doc=l.getDocument(),this.mainClass=r,this.othersClass=a,this.$onUpdate=this.onUpdate.bind(this),this.doc.on("change",this.$onUpdate,!0),this.$others=i,this.$onCursorChange=function(){setTimeout(function(){c.onCursorChange()})},this.$pos=s;var p=l.getUndoManager().$undoStack||l.getUndoManager().$undostack||{length:-1};this.$undoStackDepth=p.length,this.setup(),l.selection.on("changeCursor",this.$onCursorChange)}return h.prototype.setup=function(){var l=this,o=this.doc,s=this.session;this.selectionBefore=s.selection.toJSON(),s.selection.inMultiSelectMode&&s.selection.toSingleRange(),this.pos=o.createAnchor(this.$pos.row,this.$pos.column);var i=this.pos;i.$insertRight=!0,i.detach(),i.markerId=s.addMarker(new L(i.row,i.column,i.row,i.column+this.length),this.mainClass,null,!1),this.others=[],this.$others.forEach(function(r){var a=o.createAnchor(r.row,r.column);a.$insertRight=!0,a.detach(),l.others.push(a)}),s.setUndoSelect(!1)},h.prototype.showOtherMarkers=function(){if(!this.othersActive){var l=this.session,o=this;this.othersActive=!0,this.others.forEach(function(s){s.markerId=l.addMarker(new L(s.row,s.column,s.row,s.column+o.length),o.othersClass,null,!1)})}},h.prototype.hideOtherMarkers=function(){if(this.othersActive){this.othersActive=!1;for(var l=0;l=this.pos.column&&o.start.column<=this.pos.column+this.length+1,r=o.start.column-this.pos.column;if(this.updateAnchors(l),i&&(this.length+=s),i&&!this.session.$fromUndo){if(l.action==="insert")for(var a=this.others.length-1;a>=0;a--){var c=this.others[a],p={row:c.row,column:c.column+r};this.doc.insertMergedLines(p,l.lines)}else if(l.action==="remove")for(var a=this.others.length-1;a>=0;a--){var c=this.others[a],p={row:c.row,column:c.column+r};this.doc.remove(new L(p.row,p.column,p.row,p.column-s))}}this.$updating=!1,this.updateMarkers()}},h.prototype.updateAnchors=function(l){this.pos.onChange(l);for(var o=this.others.length;o--;)this.others[o].onChange(l);this.updateMarkers()},h.prototype.updateMarkers=function(){if(!this.$updating){var l=this,o=this.session,s=function(r,a){o.removeMarker(r.markerId),r.markerId=o.addMarker(new L(r.row,r.column,r.row,r.column+l.length),a,null,!1)};s(this.pos,this.mainClass);for(var i=this.others.length;i--;)s(this.others[i],this.othersClass)}},h.prototype.onCursorChange=function(l){if(!(this.$updating||!this.session)){var o=this.session.selection.getCursor();o.row===this.pos.row&&o.column>=this.pos.column&&o.column<=this.pos.column+this.length?(this.showOtherMarkers(),this._emit("cursorEnter",l)):(this.hideOtherMarkers(),this._emit("cursorLeave",l))}},h.prototype.detach=function(){this.session.removeMarker(this.pos&&this.pos.markerId),this.hideOtherMarkers(),this.doc.off("change",this.$onUpdate),this.session.selection.off("changeCursor",this.$onCursorChange),this.session.setUndoSelect(!0),this.session=null},h.prototype.cancel=function(){if(this.$undoStackDepth!==-1){for(var l=this.session.getUndoManager(),o=(l.$undoStack||l.$undostack).length-this.$undoStackDepth,s=0;s1?T.multiSelect.joinSelections():T.multiSelect.splitIntoLines()},bindKey:{win:"Ctrl-Alt-L",mac:"Ctrl-Alt-L"},readOnly:!0},{name:"splitSelectionIntoLines",description:"Split into lines",exec:function(T){T.multiSelect.splitIntoLines()},readOnly:!0},{name:"alignCursors",description:"Align cursors",exec:function(T){T.alignCursors()},bindKey:{win:"Ctrl-Alt-A",mac:"Ctrl-Alt-A"},scrollIntoView:"cursor"},{name:"findAll",description:"Find all",exec:function(T){T.findAll()},bindKey:{win:"Ctrl-Alt-K",mac:"Ctrl-Alt-G"},scrollIntoView:"cursor",readOnly:!0}],M.multiSelectCommands=[{name:"singleSelection",description:"Single selection",bindKey:"esc",exec:function(T){T.exitMultiSelectMode()},scrollIntoView:"cursor",readOnly:!0,isAvailable:function(T){return T&&T.inMultiSelectMode}}];var L=n("../keyboard/hash_handler").HashHandler;M.keyboardHandler=new L(M.multiSelectCommands)}),ace.define("ace/multi_select",["require","exports","module","ace/range_list","ace/range","ace/selection","ace/mouse/multi_select_handler","ace/lib/event","ace/lib/lang","ace/commands/multi_select_commands","ace/search","ace/edit_session","ace/editor","ace/config"],function(n,M,G){var L=n("./range_list").RangeList,T=n("./range").Range,C=n("./selection").Selection,d=n("./mouse/multi_select_handler").onMouseDown,h=n("./lib/event"),l=n("./lib/lang"),o=n("./commands/multi_select_commands");M.commands=o.defaultCommands.concat(o.multiSelectCommands);var s=n("./search").Search,i=new s;function r(b,$,S){return i.$options.wrap=!0,i.$options.needle=$,i.$options.backwards=S==-1,i.find(b)}var a=n("./edit_session").EditSession;(function(){this.getSelectionMarkers=function(){return this.$selectionMarkers}}).call(a.prototype),function(){this.ranges=null,this.rangeList=null,this.addRange=function(b,$){if(b){if(!this.inMultiSelectMode&&this.rangeCount===0){var S=this.toOrientedRange();if(this.rangeList.add(S),this.rangeList.add(b),this.rangeList.ranges.length!=2)return this.rangeList.removeAll(),$||this.fromOrientedRange(b);this.rangeList.removeAll(),this.rangeList.add(S),this.$onAddRange(S)}b.cursor||(b.cursor=b.end);var v=this.rangeList.add(b);return this.$onAddRange(b),v.length&&this.$onRemoveRange(v),this.rangeCount>1&&!this.inMultiSelectMode&&(this._signal("multiSelect"),this.inMultiSelectMode=!0,this.session.$undoSelect=!1,this.rangeList.attach(this.session)),$||this.fromOrientedRange(b)}},this.toSingleRange=function(b){b=b||this.ranges[0];var $=this.rangeList.removeAll();$.length&&this.$onRemoveRange($),b&&this.fromOrientedRange(b)},this.substractPoint=function(b){var $=this.rangeList.substractPoint(b);if($)return this.$onRemoveRange($),$[0]},this.mergeOverlappingRanges=function(){var b=this.rangeList.merge();b.length&&this.$onRemoveRange(b)},this.$onAddRange=function(b){this.rangeCount=this.rangeList.ranges.length,this.ranges.unshift(b),this._signal("addRange",{range:b})},this.$onRemoveRange=function(b){if(this.rangeCount=this.rangeList.ranges.length,this.rangeCount==1&&this.inMultiSelectMode){var $=this.rangeList.ranges.pop();b.push($),this.rangeCount=0}for(var S=b.length;S--;){var v=this.ranges.indexOf(b[S]);this.ranges.splice(v,1)}this._signal("removeRange",{ranges:b}),this.rangeCount===0&&this.inMultiSelectMode&&(this.inMultiSelectMode=!1,this._signal("singleSelect"),this.session.$undoSelect=!0,this.rangeList.detach(this.session)),$=$||this.ranges[0],$&&!$.isEqual(this.getRange())&&this.fromOrientedRange($)},this.$initRangeList=function(){this.rangeList||(this.rangeList=new L,this.ranges=[],this.rangeCount=0)},this.getAllRanges=function(){return this.rangeCount?this.rangeList.ranges.concat():[this.getRange()]},this.splitIntoLines=function(){for(var b=this.ranges.length?this.ranges:[this.getRange()],$=[],S=0;S1){var b=this.rangeList.ranges,$=b[b.length-1],S=T.fromPoints(b[0].start,$.end);this.toSingleRange(),this.setSelectionRange(S,$.cursor==$.start)}else{var v=this.session.documentToScreenPosition(this.cursor),w=this.session.documentToScreenPosition(this.anchor),O=this.rectangularRangeBlock(v,w);O.forEach(this.addRange,this)}},this.rectangularRangeBlock=function(b,$,S){var v=[],w=b.column<$.column;if(w)var O=b.column,B=$.column,k=b.offsetX,_=$.offsetX;else var O=$.column,B=b.column,k=$.offsetX,_=b.offsetX;var y=b.row<$.row;if(y)var m=b.row,E=$.row;else var m=$.row,E=b.row;O<0&&(O=0),m<0&&(m=0),m==E&&(S=!0);for(var I,N=m;N<=E;N++){var W=T.fromPoints(this.session.screenToDocumentPosition(N,O,k),this.session.screenToDocumentPosition(N,B,_));if(W.isEmpty()){if(I&&p(W.end,I))break;I=W.end}W.cursor=w?W.start:W.end,v.push(W)}if(y&&v.reverse(),!S){for(var z=v.length-1;v[z].isEmpty()&&z>0;)z--;if(z>0)for(var U=0;v[U].isEmpty();)U++;for(var j=z;j>=U;j--)v[j].isEmpty()&&v.splice(j,1)}return v}}.call(C.prototype);var c=n("./editor").Editor;(function(){this.updateSelectionMarkers=function(){this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.addSelectionMarker=function(b){b.cursor||(b.cursor=b.end);var $=this.getSelectionStyle();return b.marker=this.session.addMarker(b,"ace_selection",$),this.session.$selectionMarkers.push(b),this.session.selectionMarkerCount=this.session.$selectionMarkers.length,b},this.removeSelectionMarker=function(b){if(b.marker){this.session.removeMarker(b.marker);var $=this.session.$selectionMarkers.indexOf(b);$!=-1&&this.session.$selectionMarkers.splice($,1),this.session.selectionMarkerCount=this.session.$selectionMarkers.length}},this.removeSelectionMarkers=function(b){for(var $=this.session.$selectionMarkers,S=b.length;S--;){var v=b[S];if(v.marker){this.session.removeMarker(v.marker);var w=$.indexOf(v);w!=-1&&$.splice(w,1)}}this.session.selectionMarkerCount=$.length},this.$onAddRange=function(b){this.addSelectionMarker(b.range),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onRemoveRange=function(b){this.removeSelectionMarkers(b.ranges),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onMultiSelect=function(b){this.inMultiSelectMode||(this.inMultiSelectMode=!0,this.setStyle("ace_multiselect"),this.keyBinding.addKeyboardHandler(o.keyboardHandler),this.commands.setDefaultHandler("exec",this.$onMultiSelectExec),this.renderer.updateCursor(),this.renderer.updateBackMarkers())},this.$onSingleSelect=function(b){this.session.multiSelect.inVirtualMode||(this.inMultiSelectMode=!1,this.unsetStyle("ace_multiselect"),this.keyBinding.removeKeyboardHandler(o.keyboardHandler),this.commands.removeDefaultHandler("exec",this.$onMultiSelectExec),this.renderer.updateCursor(),this.renderer.updateBackMarkers(),this._emit("changeSelection"))},this.$onMultiSelectExec=function(b){var $=b.command,S=b.editor;if(S.multiSelect){if($.multiSelectAction)$.multiSelectAction=="forEach"?v=S.forEachSelection($,b.args):$.multiSelectAction=="forEachLine"?v=S.forEachSelection($,b.args,!0):$.multiSelectAction=="single"?(S.exitMultiSelectMode(),v=$.exec(S,b.args||{})):v=$.multiSelectAction(S,b.args||{});else{var v=$.exec(S,b.args||{});S.multiSelect.addRange(S.multiSelect.toOrientedRange()),S.multiSelect.mergeOverlappingRanges()}return v}},this.forEachSelection=function(b,$,S){if(!this.inVirtualSelectionMode){var v=S&&S.keepOrder,w=S==!0||S&&S.$byLines,O=this.session,B=this.selection,k=B.rangeList,_=(v?B:k).ranges,y;if(!_.length)return b.exec?b.exec(this,$||{}):b(this,$||{});var m=B._eventRegistry;B._eventRegistry={};var E=new C(O);this.inVirtualSelectionMode=!0;for(var I=_.length;I--;){if(w)for(;I>0&&_[I].start.row==_[I-1].end.row;)I--;E.fromOrientedRange(_[I]),E.index=I,this.selection=O.selection=E;var N=b.exec?b.exec(this,$||{}):b(this,$||{});!y&&N!==void 0&&(y=N),E.toOrientedRange(_[I])}E.detach(),this.selection=O.selection=B,this.inVirtualSelectionMode=!1,B._eventRegistry=m,B.mergeOverlappingRanges(),B.ranges[0]&&B.fromOrientedRange(B.ranges[0]);var W=this.renderer.$scrollAnimation;return this.onCursorChange(),this.onSelectionChange(),W&&W.from==W.to&&this.renderer.animateScrolling(W.from),y}},this.exitMultiSelectMode=function(){!this.inMultiSelectMode||this.inVirtualSelectionMode||this.multiSelect.toSingleRange()},this.getSelectedText=function(){var b="";if(this.inMultiSelectMode&&!this.inVirtualSelectionMode){for(var $=this.multiSelect.rangeList.ranges,S=[],v=0;v<$.length;v++)S.push(this.session.getTextRange($[v]));var w=this.session.getDocument().getNewLineCharacter();b=S.join(w),b.length==(S.length-1)*w.length&&(b="")}else this.selection.isEmpty()||(b=this.session.getTextRange(this.getSelectionRange()));return b},this.$checkMultiselectChange=function(b,$){if(this.inMultiSelectMode&&!this.inVirtualSelectionMode){var S=this.multiSelect.ranges[0];if(this.multiSelect.isEmpty()&&$==this.multiSelect.anchor)return;var v=$==this.multiSelect.anchor?S.cursor==S.start?S.end:S.start:S.cursor;v.row!=$.row||this.session.$clipPositionToDocument(v.row,v.column).column!=$.column?this.multiSelect.toSingleRange(this.multiSelect.toOrientedRange()):this.multiSelect.mergeOverlappingRanges()}},this.findAll=function(b,$,S){if($=$||{},$.needle=b||$.needle,$.needle==null){var v=this.selection.isEmpty()?this.selection.getWordRange():this.selection.getRange();$.needle=this.session.getTextRange(v)}this.$search.set($);var w=this.$search.findAll(this.session);if(!w.length)return 0;var O=this.multiSelect;S||O.toSingleRange(w[0]);for(var B=w.length;B--;)O.addRange(w[B],!0);return v&&O.rangeList.rangeAtPoint(v.start)&&O.addRange(v,!0),w.length},this.selectMoreLines=function(b,$){var S=this.selection.toOrientedRange(),v=S.cursor==S.end,w=this.session.documentToScreenPosition(S.cursor);this.selection.$desiredColumn&&(w.column=this.selection.$desiredColumn);var O=this.session.screenToDocumentPosition(w.row+b,w.column);if(S.isEmpty())var k=O;else var B=this.session.documentToScreenPosition(v?S.end:S.start),k=this.session.screenToDocumentPosition(B.row+b,B.column);if(v){var _=T.fromPoints(O,k);_.cursor=_.start}else{var _=T.fromPoints(k,O);_.cursor=_.end}if(_.desiredColumn=w.column,!this.selection.inMultiSelectMode)this.selection.addRange(S);else if($)var y=S.cursor;this.selection.addRange(_),y&&this.selection.substractPoint(y)},this.transposeSelections=function(b){for(var $=this.session,S=$.multiSelect,v=S.ranges,w=v.length;w--;){var O=v[w];if(O.isEmpty()){var B=$.getWordRange(O.start.row,O.start.column);O.start.row=B.start.row,O.start.column=B.start.column,O.end.row=B.end.row,O.end.column=B.end.column}}S.mergeOverlappingRanges();for(var k=[],w=v.length;w--;){var O=v[w];k.unshift($.getTextRange(O))}b<0?k.unshift(k.pop()):k.push(k.shift());for(var w=v.length;w--;){var O=v[w],B=O.clone();$.replace(O,k[w]),O.start.row=B.start.row,O.start.column=B.start.column}S.fromOrientedRange(S.ranges[0])},this.selectMore=function(b,$,S){var v=this.session,w=v.multiSelect,O=w.toOrientedRange();if(!(O.isEmpty()&&(O=v.getWordRange(O.start.row,O.start.column),O.cursor=b==-1?O.start:O.end,this.multiSelect.addRange(O),S))){var B=v.getTextRange(O),k=r(v,B,b);k&&(k.cursor=b==-1?k.start:k.end,this.session.unfold(k),this.multiSelect.addRange(k),this.renderer.scrollCursorIntoView(null,.5)),$&&this.multiSelect.substractPoint(O.cursor)}},this.alignCursors=function(){var b=this.session,$=b.multiSelect,S=$.ranges,v=-1,w=S.filter(function(z){if(z.cursor.row==v)return!0;v=z.cursor.row});if(!S.length||w.length==S.length-1){var O=this.selection.getRange(),B=O.start.row,k=O.end.row,_=B==k;if(_){var y=this.session.getLength(),m;do m=this.session.getLine(k);while(/[=:]/.test(m)&&++k0);B<0&&(B=0),k>=y&&(k=y-1)}var E=this.session.removeFullLines(B,k);E=this.$reAlignText(E,_),this.session.insert({row:B,column:0},E.join(` -`)+` -`),_||(O.start.column=0,O.end.column=E[E.length-1].length),this.selection.setRange(O)}else{w.forEach(function(z){$.substractPoint(z.cursor)});var I=0,N=1/0,W=S.map(function(z){var U=z.cursor,j=b.getLine(U.row),q=j.substr(U.column).search(/\S/g);return q==-1&&(q=0),U.column>I&&(I=U.column),qY?b.insert(j,l.stringRepeat(" ",q-Y)):b.remove(new T(j.row,j.column,j.row,j.column-q+Y)),z.start.column=z.end.column=I,z.start.row=z.end.row=j.row,z.cursor=z.end}),$.fromOrientedRange(S[0]),this.renderer.updateCursor(),this.renderer.updateBackMarkers()}},this.$reAlignText=function(b,$){var S=!0,v=!0,w,O,B;return b.map(function(E){var I=E.match(/(\s*)(.*?)(\s*)([=:].*)/);return I?w==null?(w=I[1].length,O=I[2].length,B=I[3].length,I):(w+O+B!=I[1].length+I[2].length+I[3].length&&(v=!1),w!=I[1].length&&(S=!1),w>I[1].length&&(w=I[1].length),OI[3].length&&(B=I[3].length),I):[E]}).map($?_:S?v?y:_:m);function k(E){return l.stringRepeat(" ",E)}function _(E){return E[2]?k(w)+E[2]+k(O-E[2].length+B)+E[4].replace(/^([=:])\s+/,"$1 "):E[0]}function y(E){return E[2]?k(w+O-E[2].length)+E[2]+k(B)+E[4].replace(/^([=:])\s+/,"$1 "):E[0]}function m(E){return E[2]?k(w)+E[2]+k(B)+E[4].replace(/^([=:])\s+/,"$1 "):E[0]}}}).call(c.prototype);function p(b,$){return b.row==$.row&&b.column==$.column}M.onSessionChange=function(b){var $=b.session;$&&!$.multiSelect&&($.$selectionMarkers=[],$.selection.$initRangeList(),$.multiSelect=$.selection),this.multiSelect=$&&$.multiSelect;var S=b.oldSession;S&&(S.multiSelect.off("addRange",this.$onAddRange),S.multiSelect.off("removeRange",this.$onRemoveRange),S.multiSelect.off("multiSelect",this.$onMultiSelect),S.multiSelect.off("singleSelect",this.$onSingleSelect),S.multiSelect.lead.off("change",this.$checkMultiselectChange),S.multiSelect.anchor.off("change",this.$checkMultiselectChange)),$&&($.multiSelect.on("addRange",this.$onAddRange),$.multiSelect.on("removeRange",this.$onRemoveRange),$.multiSelect.on("multiSelect",this.$onMultiSelect),$.multiSelect.on("singleSelect",this.$onSingleSelect),$.multiSelect.lead.on("change",this.$checkMultiselectChange),$.multiSelect.anchor.on("change",this.$checkMultiselectChange)),$&&this.inMultiSelectMode!=$.selection.inMultiSelectMode&&($.selection.inMultiSelectMode?this.$onMultiSelect():this.$onSingleSelect())};function g(b){b.$multiselectOnSessionChange||(b.$onAddRange=b.$onAddRange.bind(b),b.$onRemoveRange=b.$onRemoveRange.bind(b),b.$onMultiSelect=b.$onMultiSelect.bind(b),b.$onSingleSelect=b.$onSingleSelect.bind(b),b.$multiselectOnSessionChange=M.onSessionChange.bind(b),b.$checkMultiselectChange=b.$checkMultiselectChange.bind(b),b.$multiselectOnSessionChange(b),b.on("changeSession",b.$multiselectOnSessionChange),b.on("mousedown",d),b.commands.addCommands(o.defaultCommands),A(b))}function A(b){if(!b.textInput)return;var $=b.textInput.getElement(),S=!1;h.addListener($,"keydown",function(w){var O=w.keyCode==18&&!(w.ctrlKey||w.shiftKey||w.metaKey);b.$blockSelectEnabled&&O?S||(b.renderer.setMouseCursor("crosshair"),S=!0):S&&v()},b),h.addListener($,"keyup",v,b),h.addListener($,"blur",v,b);function v(w){S&&(b.renderer.setMouseCursor(""),S=!1)}}M.MultiSelect=g,n("./config").defineOptions(c.prototype,"editor",{enableMultiselect:{set:function(b){g(this),b?this.on("mousedown",d):this.off("mousedown",d)},value:!0},enableBlockSelect:{set:function(b){this.$blockSelectEnabled=b},value:!0}})}),ace.define("ace/mode/folding/fold_mode",["require","exports","module","ace/range"],function(n,M,G){"use strict";var L=n("../../range").Range,T=M.FoldMode=function(){};(function(){this.foldingStartMarker=null,this.foldingStopMarker=null,this.getFoldWidget=function(C,d,h){var l=C.getLine(h);return this.foldingStartMarker.test(l)?"start":d=="markbeginend"&&this.foldingStopMarker&&this.foldingStopMarker.test(l)?"end":""},this.getFoldWidgetRange=function(C,d,h){return null},this.indentationBlock=function(C,d,h){var l=/\S/,o=C.getLine(d),s=o.search(l);if(s!=-1){for(var i=h||o.length,r=C.getLength(),a=d,c=d;++da){var A=C.getLine(c).length;return new L(a,i,c,A)}}},this.openingBracketBlock=function(C,d,h,l,o){var s={row:h,column:l+1},i=C.$findClosingBracket(d,s,o);if(i){var r=C.foldWidgets[i.row];return r==null&&(r=C.getFoldWidget(i.row)),r=="start"&&i.row>s.row&&(i.row--,i.column=C.getLine(i.row).length),L.fromPoints(s,i)}},this.closingBracketBlock=function(C,d,h,l,o){var s={row:h,column:l},i=C.$findOpeningBracket(d,s);if(i)return i.column++,s.column--,L.fromPoints(i,s)}}).call(T.prototype)}),ace.define("ace/ext/error_marker",["require","exports","module","ace/line_widgets","ace/lib/dom","ace/range","ace/config"],function(n,M,G){"use strict";var L=n("../line_widgets").LineWidgets,T=n("../lib/dom"),C=n("../range").Range,d=n("../config").nls;function h(o,s,i){for(var r=0,a=o.length-1;r<=a;){var c=r+a>>1,p=i(s,o[c]);if(p>0)r=c+1;else if(p<0)a=c-1;else return c}return-(r+1)}function l(o,s,i){var r=o.getAnnotations().sort(C.comparePoints);if(r.length){var a=h(r,{row:s,column:-1},C.comparePoints);a<0&&(a=-a-1),a>=r.length?a=i>0?0:r.length-1:a===0&&i<0&&(a=r.length-1);var c=r[a];if(!(!c||!i)){if(c.row===s){do c=r[a+=i];while(c&&c.row===s);if(!c)return r.slice()}var p=[];s=c.row;do p[i<0?"unshift":"push"](c),c=r[a+=i];while(c&&c.row==s);return p.length&&p}}}M.showErrorMarker=function(o,s){var i=o.session;i.widgetManager||(i.widgetManager=new L(i),i.widgetManager.attach(o));var r=o.getCursorPosition(),a=r.row,c=i.widgetManager.getWidgetsAtRow(a).filter(function(O){return O.type=="errorMarker"})[0];c?c.destroy():a-=s;var p=l(i,a,s),g;if(p){var A=p[0];r.column=(A.pos&&typeof A.column!="number"?A.pos.sc:A.column)||0,r.row=A.row,g=o.renderer.$gutterLayer.$annotations[r.row]}else{if(c)return;g={text:[d("Looks good!")],className:"ace_ok"}}o.session.unfold(r.row),o.selection.moveToPosition(r);var b={row:r.row,fixedWidth:!0,coverGutter:!0,el:T.createElement("div"),type:"errorMarker"},$=b.el.appendChild(T.createElement("div")),S=b.el.appendChild(T.createElement("div"));S.className="error_widget_arrow "+g.className;var v=o.renderer.$cursorLayer.getPixelPosition(r).left;S.style.left=v+o.renderer.gutterWidth-5+"px",b.el.className="error_widget_wrapper",$.className="error_widget "+g.className,$.innerHTML=g.text.join("
"),$.appendChild(T.createElement("div"));var w=function(O,B,k){if(B===0&&(k==="esc"||k==="return"))return b.destroy(),{command:"null"}};b.destroy=function(){o.$mouseHandler.isMousePressed||(o.keyBinding.removeKeyboardHandler(w),i.widgetManager.removeLineWidget(b),o.off("changeSelection",b.destroy),o.off("changeSession",b.destroy),o.off("mouseup",b.destroy),o.off("change",b.destroy))},o.keyBinding.addKeyboardHandler(w),o.on("changeSelection",b.destroy),o.on("changeSession",b.destroy),o.on("mouseup",b.destroy),o.on("change",b.destroy),o.session.widgetManager.addLineWidget(b),b.el.onmousedown=o.focus.bind(o),o.renderer.scrollCursorIntoView(null,.5,{bottom:b.el.offsetHeight})},T.importCssString(` - .error_widget_wrapper { - background: inherit; - color: inherit; - border:none - } - .error_widget { - border-top: solid 2px; - border-bottom: solid 2px; - margin: 5px 0; - padding: 10px 40px; - white-space: pre-wrap; - } - .error_widget.ace_error, .error_widget_arrow.ace_error{ - border-color: #ff5a5a - } - .error_widget.ace_warning, .error_widget_arrow.ace_warning{ - border-color: #F1D817 - } - .error_widget.ace_info, .error_widget_arrow.ace_info{ - border-color: #5a5a5a - } - .error_widget.ace_ok, .error_widget_arrow.ace_ok{ - border-color: #5aaa5a - } - .error_widget_arrow { - position: absolute; - border: solid 5px; - border-top-color: transparent!important; - border-right-color: transparent!important; - border-left-color: transparent!important; - top: -5px; - } -`,"error_marker.css",!1)}),ace.define("ace/ace",["require","exports","module","ace/lib/dom","ace/range","ace/editor","ace/edit_session","ace/undomanager","ace/virtual_renderer","ace/worker/worker_client","ace/keyboard/hash_handler","ace/placeholder","ace/multi_select","ace/mode/folding/fold_mode","ace/theme/textmate","ace/ext/error_marker","ace/config","ace/loader_build"],function(n,M,G){"use strict";n("./loader_build")(M);var L=n("./lib/dom"),T=n("./range").Range,C=n("./editor").Editor,d=n("./edit_session").EditSession,h=n("./undomanager").UndoManager,l=n("./virtual_renderer").VirtualRenderer;n("./worker/worker_client"),n("./keyboard/hash_handler"),n("./placeholder"),n("./multi_select"),n("./mode/folding/fold_mode"),n("./theme/textmate"),n("./ext/error_marker"),M.config=n("./config"),M.edit=function(o,s){if(typeof o=="string"){var i=o;if(o=document.getElementById(i),!o)throw new Error("ace.edit can't find div #"+i)}if(o&&o.env&&o.env.editor instanceof C)return o.env.editor;var r="";if(o&&/input|textarea/i.test(o.tagName)){var a=o;r=a.value,o=L.createElement("pre"),a.parentNode.replaceChild(o,a)}else o&&(r=o.textContent,o.innerHTML="");var c=M.createEditSession(r),p=new C(new l(o),c,s),g={document:c,editor:p,onResize:p.resize.bind(p,null)};return a&&(g.textarea=a),p.on("destroy",function(){g.editor.container.env=null}),p.container.env=p.env=g,p},M.createEditSession=function(o,s){var i=new d(o,s);return i.setUndoManager(new h),i},M.Range=T,M.Editor=C,M.EditSession=d,M.UndoManager=h,M.VirtualRenderer=l,M.version=M.config.version}),function(){ace.require(["ace/ace"],function(n){n&&(n.config.init(!0),n.define=ace.define);var M=function(){return this}();!M&&typeof window!="undefined"&&(M=window),!M&&typeof self!="undefined"&&(M=self),M.ace||(M.ace=n);for(var G in n)n.hasOwnProperty(G)&&(M.ace[G]=n[G]);M.ace.default=M.ace,D&&(D.exports=M.ace)})}()},134:(D,R,f0)=>{D=f0.nmd(D),ace.define("ace/ext/beautify",["require","exports","module","ace/token_iterator"],function(n,M,G){"use strict";var L=n("../token_iterator").TokenIterator;function T(C,d){return C.type.lastIndexOf(d+".xml")>-1}M.singletonTags=["area","base","br","col","command","embed","hr","html","img","input","keygen","link","meta","param","source","track","wbr"],M.blockTags=["article","aside","blockquote","body","div","dl","fieldset","footer","form","head","header","html","nav","ol","p","script","section","style","table","tbody","tfoot","thead","ul"],M.formatOptions={lineBreaksAfterCommasInCurlyBlock:!0},M.beautify=function(C){for(var d=new L(C,0,0),h=d.getCurrentToken(),l=C.getTabString(),o=M.singletonTags,s=M.blockTags,i=M.formatOptions||{},r,a=!1,c=!1,p=!1,g="",A="",b="",$=0,S=0,v=0,w=0,O=0,B=0,k=0,_,y=0,m=0,E=[],I=!1,N,W=!1,z=!1,U=!1,j=!1,q={0:0},Y=[],t0=!1,n0=function(){r&&r.value&&r.type!=="string.regexp"&&(r.value=r.value.replace(/^\s*/,""))},u0=function(){for(var m0=g.length-1;!(m0==0||g[m0]!==" ");)m0=m0-1;g=g.slice(0,m0+1)},h0=function(){g=g.trimRight(),a=!1};h!==null;){if(y=d.getCurrentTokenRow(),E=d.$rowTokens,r=d.stepForward(),typeof h!="undefined"){if(A=h.value,O=0,U=b==="style"||C.$modeId==="ace/mode/css",T(h,"tag-open")?(z=!0,r&&(j=s.indexOf(r.value)!==-1),A==="0;m--)g+=` -`;a=!0,!T(h,"comment")&&!h.type.match(/^(comment|string)$/)&&(A=A.trimLeft())}if(A){if(h.type==="keyword"&&A.match(/^(if|else|elseif|for|foreach|while|switch)$/)?(Y[$]=A,n0(),p=!0,A.match(/^(else|elseif)$/)&&g.match(/\}[\s]*$/)&&(h0(),c=!0)):h.type==="paren.lparen"?(n0(),A.substr(-1)==="{"&&(p=!0,W=!1,z||(m=1)),A.substr(0,1)==="{"&&(c=!0,g.substr(-1)!=="["&&g.trimRight().substr(-1)==="["?(h0(),c=!1):g.trimRight().substr(-1)===")"?h0():u0())):h.type==="paren.rparen"?(O=1,A.substr(0,1)==="}"&&(Y[$-1]==="case"&&O++,g.trimRight().substr(-1)==="{"?h0():(c=!0,U&&(m+=2))),A.substr(0,1)==="]"&&g.substr(-1)!=="}"&&g.trimRight().substr(-1)==="}"&&(c=!1,w++,h0()),A.substr(0,1)===")"&&g.substr(-1)!=="("&&g.trimRight().substr(-1)==="("&&(c=!1,w++,h0()),u0()):(h.type==="keyword.operator"||h.type==="keyword")&&A.match(/^(=|==|===|!=|!==|&&|\|\||and|or|xor|\+=|.=|>|>=|<|<=|=>)$/)?(h0(),n0(),c=!0,p=!0):h.type==="punctuation.operator"&&A===";"?(h0(),n0(),p=!0,U&&m++):h.type==="punctuation.operator"&&A.match(/^(:|,)$/)?(h0(),n0(),A.match(/^(,)$/)&&k>0&&B===0&&i.lineBreaksAfterCommasInCurlyBlock?m++:(p=!0,a=!1)):h.type==="support.php_tag"&&A==="?>"&&!a?(h0(),c=!0):T(h,"attribute-name")&&g.substr(-1).match(/^\s$/)?c=!0:T(h,"attribute-equals")?(u0(),n0()):T(h,"tag-close")?(u0(),A==="/>"&&(c=!0)):h.type==="keyword"&&A.match(/^(case|default)$/)&&t0&&(O=1),a&&!(h.type.match(/^(comment)$/)&&!A.substr(0,1).match(/^[/#]$/))&&!(h.type.match(/^(string)$/)&&!A.substr(0,1).match(/^['"@]$/))){if(w=v,$>S)for(w++,N=$;N>S;N--)q[N]=w;else $")&&(j&&r&&r.value===""&&$--),T(h,"tag-name")&&(b=A),_=y}}h=r}g=g.trim(),C.doc.setValue(g)},M.commands=[{name:"beautify",description:"Format selection (Beautify)",exec:function(C){M.beautify(C.session)},bindKey:"Ctrl-Shift-B"}]}),function(){ace.require(["ace/ext/beautify"],function(n){D&&(D.exports=n)})}()},604:(D,R,f0)=>{D=f0.nmd(D),ace.define("ace/ext/searchbox-css",["require","exports","module"],function(n,M,G){G.exports=` - -/* ------------------------------------------------------------------------------------------ - * Editor Search Form - * --------------------------------------------------------------------------------------- */ -.ace_search { - background-color: #ddd; - color: #666; - border: 1px solid #cbcbcb; - border-top: 0 none; - overflow: hidden; - margin: 0; - padding: 4px 6px 0 4px; - position: absolute; - top: 0; - z-index: 99; - white-space: normal; -} -.ace_search.left { - border-left: 0 none; - border-radius: 0px 0px 5px 0px; - left: 0; -} -.ace_search.right { - border-radius: 0px 0px 0px 5px; - border-right: 0 none; - right: 0; -} - -.ace_search_form, .ace_replace_form { - margin: 0 20px 4px 0; - overflow: hidden; - line-height: 1.9; -} -.ace_replace_form { - margin-right: 0; -} -.ace_search_form.ace_nomatch { - outline: 1px solid red; -} - -.ace_search_field { - border-radius: 3px 0 0 3px; - background-color: white; - color: black; - border: 1px solid #cbcbcb; - border-right: 0 none; - outline: 0; - padding: 0; - font-size: inherit; - margin: 0; - line-height: inherit; - padding: 0 6px; - min-width: 17em; - vertical-align: top; - min-height: 1.8em; - box-sizing: content-box; -} -.ace_searchbtn { - border: 1px solid #cbcbcb; - line-height: inherit; - display: inline-block; - padding: 0 6px; - background: #fff; - border-right: 0 none; - border-left: 1px solid #dcdcdc; - cursor: pointer; - margin: 0; - position: relative; - color: #666; -} -.ace_searchbtn:last-child { - border-radius: 0 3px 3px 0; - border-right: 1px solid #cbcbcb; -} -.ace_searchbtn:disabled { - background: none; - cursor: default; -} -.ace_searchbtn:hover { - background-color: #eef1f6; -} -.ace_searchbtn.prev, .ace_searchbtn.next { - padding: 0px 0.7em -} -.ace_searchbtn.prev:after, .ace_searchbtn.next:after { - content: ""; - border: solid 2px #888; - width: 0.5em; - height: 0.5em; - border-width: 2px 0 0 2px; - display:inline-block; - transform: rotate(-45deg); -} -.ace_searchbtn.next:after { - border-width: 0 2px 2px 0 ; -} -.ace_searchbtn_close { - background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAcCAYAAABRVo5BAAAAZ0lEQVR42u2SUQrAMAhDvazn8OjZBilCkYVVxiis8H4CT0VrAJb4WHT3C5xU2a2IQZXJjiQIRMdkEoJ5Q2yMqpfDIo+XY4k6h+YXOyKqTIj5REaxloNAd0xiKmAtsTHqW8sR2W5f7gCu5nWFUpVjZwAAAABJRU5ErkJggg==) no-repeat 50% 0; - border-radius: 50%; - border: 0 none; - color: #656565; - cursor: pointer; - font: 16px/16px Arial; - padding: 0; - height: 14px; - width: 14px; - top: 9px; - right: 7px; - position: absolute; -} -.ace_searchbtn_close:hover { - background-color: #656565; - background-position: 50% 100%; - color: white; -} -.ace_button { - margin-left: 2px; - cursor: pointer; - -webkit-user-select: none; - -moz-user-select: none; - -o-user-select: none; - -ms-user-select: none; - user-select: none; - overflow: hidden; - opacity: 0.7; - border: 1px solid rgba(100,100,100,0.23); - padding: 1px; - box-sizing: border-box!important; - color: black; -} -.ace_button:hover { - background-color: #eee; - opacity:1; -} -.ace_button:active { - background-color: #ddd; -} -.ace_button.checked { - border-color: #3399ff; - opacity:1; -} -.ace_search_options{ - margin-bottom: 3px; - text-align: right; - -webkit-user-select: none; - -moz-user-select: none; - -o-user-select: none; - -ms-user-select: none; - user-select: none; - clear: both; -} -.ace_search_counter { - float: left; - font-family: arial; - padding: 0 8px; -}`}),ace.define("ace/ext/searchbox",["require","exports","module","ace/lib/dom","ace/lib/lang","ace/lib/event","ace/ext/searchbox-css","ace/keyboard/hash_handler","ace/lib/keys","ace/config"],function(n,M,G){"use strict";var L=n("../lib/dom"),T=n("../lib/lang"),C=n("../lib/event"),d=n("./searchbox-css"),h=n("../keyboard/hash_handler").HashHandler,l=n("../lib/keys"),o=n("../config").nls,s=999;L.importCssString(d,"ace_searchbox",!1);var i=function(){function c(p,g,A){var b=L.createElement("div");L.buildDom(["div",{class:"ace_search right"},["span",{action:"hide",class:"ace_searchbtn_close"}],["div",{class:"ace_search_form"},["input",{class:"ace_search_field",placeholder:o("Search for"),spellcheck:"false"}],["span",{action:"findPrev",class:"ace_searchbtn prev"},"\u200B"],["span",{action:"findNext",class:"ace_searchbtn next"},"\u200B"],["span",{action:"findAll",class:"ace_searchbtn",title:"Alt-Enter"},o("All")]],["div",{class:"ace_replace_form"},["input",{class:"ace_search_field",placeholder:o("Replace with"),spellcheck:"false"}],["span",{action:"replaceAndFindNext",class:"ace_searchbtn"},o("Replace")],["span",{action:"replaceAll",class:"ace_searchbtn"},o("All")]],["div",{class:"ace_search_options"},["span",{action:"toggleReplace",class:"ace_button",title:o("Toggle Replace mode"),style:"float:left;margin-top:-2px;padding:0 5px;"},"+"],["span",{class:"ace_search_counter"}],["span",{action:"toggleRegexpMode",class:"ace_button",title:o("RegExp Search")},".*"],["span",{action:"toggleCaseSensitive",class:"ace_button",title:o("CaseSensitive Search")},"Aa"],["span",{action:"toggleWholeWords",class:"ace_button",title:o("Whole Word Search")},"\\b"],["span",{action:"searchInSelection",class:"ace_button",title:o("Search In Selection")},"S"]]],b),this.element=b.firstChild,this.setSession=this.setSession.bind(this),this.$init(),this.setEditor(p),L.importCssString(d,"ace_searchbox",p.container)}return c.prototype.setEditor=function(p){p.searchBox=this,p.renderer.scroller.appendChild(this.element),this.editor=p},c.prototype.setSession=function(p){this.searchRange=null,this.$syncOptions(!0)},c.prototype.$initElements=function(p){this.searchBox=p.querySelector(".ace_search_form"),this.replaceBox=p.querySelector(".ace_replace_form"),this.searchOption=p.querySelector("[action=searchInSelection]"),this.replaceOption=p.querySelector("[action=toggleReplace]"),this.regExpOption=p.querySelector("[action=toggleRegexpMode]"),this.caseSensitiveOption=p.querySelector("[action=toggleCaseSensitive]"),this.wholeWordOption=p.querySelector("[action=toggleWholeWords]"),this.searchInput=this.searchBox.querySelector(".ace_search_field"),this.replaceInput=this.replaceBox.querySelector(".ace_search_field"),this.searchCounter=p.querySelector(".ace_search_counter")},c.prototype.$init=function(){var p=this.element;this.$initElements(p);var g=this;C.addListener(p,"mousedown",function(A){setTimeout(function(){g.activeInput.focus()},0),C.stopPropagation(A)}),C.addListener(p,"click",function(A){var b=A.target||A.srcElement,$=b.getAttribute("action");$&&g[$]?g[$]():g.$searchBarKb.commands[$]&&g.$searchBarKb.commands[$].exec(g),C.stopPropagation(A)}),C.addCommandKeyListener(p,function(A,b,$){var S=l.keyCodeToString($),v=g.$searchBarKb.findKeyCommand(b,S);v&&v.exec&&(v.exec(g),C.stopEvent(A))}),this.$onChange=T.delayedCall(function(){g.find(!1,!1)}),C.addListener(this.searchInput,"input",function(){g.$onChange.schedule(20)}),C.addListener(this.searchInput,"focus",function(){g.activeInput=g.searchInput,g.searchInput.value&&g.highlight()}),C.addListener(this.replaceInput,"focus",function(){g.activeInput=g.replaceInput,g.searchInput.value&&g.highlight()})},c.prototype.setSearchRange=function(p){this.searchRange=p,p?this.searchRangeMarker=this.editor.session.addMarker(p,"ace_active-line"):this.searchRangeMarker&&(this.editor.session.removeMarker(this.searchRangeMarker),this.searchRangeMarker=null)},c.prototype.$syncOptions=function(p){L.setCssClass(this.replaceOption,"checked",this.searchRange),L.setCssClass(this.searchOption,"checked",this.searchOption.checked),this.replaceOption.textContent=this.replaceOption.checked?"-":"+",L.setCssClass(this.regExpOption,"checked",this.regExpOption.checked),L.setCssClass(this.wholeWordOption,"checked",this.wholeWordOption.checked),L.setCssClass(this.caseSensitiveOption,"checked",this.caseSensitiveOption.checked);var g=this.editor.getReadOnly();this.replaceOption.style.display=g?"none":"",this.replaceBox.style.display=this.replaceOption.checked&&!g?"":"none",this.find(!1,!1,p)},c.prototype.highlight=function(p){this.editor.session.highlight(p||this.editor.$search.$options.re),this.editor.renderer.updateBackMarkers()},c.prototype.find=function(p,g,A){var b=this.editor.find(this.searchInput.value,{skipCurrent:p,backwards:g,wrap:!0,regExp:this.regExpOption.checked,caseSensitive:this.caseSensitiveOption.checked,wholeWord:this.wholeWordOption.checked,preventScroll:A,range:this.searchRange}),$=!b&&this.searchInput.value;L.setCssClass(this.searchBox,"ace_nomatch",$),this.editor._emit("findSearchBox",{match:!$}),this.highlight(),this.updateCounter()},c.prototype.updateCounter=function(){var p=this.editor,g=p.$search.$options.re,A=0,b=0;if(g){var $=this.searchRange?p.session.getTextRange(this.searchRange):p.getValue(),S=p.session.doc.positionToIndex(p.selection.anchor);this.searchRange&&(S-=p.session.doc.positionToIndex(this.searchRange.start));for(var v=g.lastIndex=0,w;(w=g.exec($))&&(A++,v=w.index,v<=S&&b++,!(A>s||!w[0]&&(g.lastIndex=v+=1,v>=$.length))););}this.searchCounter.textContent=o("$0 of $1",[b,A>s?s+"+":A])},c.prototype.findNext=function(){this.find(!0,!1)},c.prototype.findPrev=function(){this.find(!0,!0)},c.prototype.findAll=function(){var p=this.editor.findAll(this.searchInput.value,{regExp:this.regExpOption.checked,caseSensitive:this.caseSensitiveOption.checked,wholeWord:this.wholeWordOption.checked}),g=!p&&this.searchInput.value;L.setCssClass(this.searchBox,"ace_nomatch",g),this.editor._emit("findSearchBox",{match:!g}),this.highlight(),this.hide()},c.prototype.replace=function(){this.editor.getReadOnly()||this.editor.replace(this.replaceInput.value)},c.prototype.replaceAndFindNext=function(){this.editor.getReadOnly()||(this.editor.replace(this.replaceInput.value),this.findNext())},c.prototype.replaceAll=function(){this.editor.getReadOnly()||this.editor.replaceAll(this.replaceInput.value)},c.prototype.hide=function(){this.active=!1,this.setSearchRange(null),this.editor.off("changeSession",this.setSession),this.element.style.display="none",this.editor.keyBinding.removeKeyboardHandler(this.$closeSearchBarKb),this.editor.focus()},c.prototype.show=function(p,g){this.active=!0,this.editor.on("changeSession",this.setSession),this.element.style.display="",this.replaceOption.checked=g,p&&(this.searchInput.value=p),this.searchInput.focus(),this.searchInput.select(),this.editor.keyBinding.addKeyboardHandler(this.$closeSearchBarKb),this.$syncOptions(!0)},c.prototype.isFocused=function(){var p=document.activeElement;return p==this.searchInput||p==this.replaceInput},c}(),r=new h;r.bindKeys({"Ctrl-f|Command-f":function(c){var p=c.isReplace=!c.isReplace;c.replaceBox.style.display=p?"":"none",c.replaceOption.checked=!1,c.$syncOptions(),c.searchInput.focus()},"Ctrl-H|Command-Option-F":function(c){c.editor.getReadOnly()||(c.replaceOption.checked=!0,c.$syncOptions(),c.replaceInput.focus())},"Ctrl-G|Command-G":function(c){c.findNext()},"Ctrl-Shift-G|Command-Shift-G":function(c){c.findPrev()},esc:function(c){setTimeout(function(){c.hide()})},Return:function(c){c.activeInput==c.replaceInput&&c.replace(),c.findNext()},"Shift-Return":function(c){c.activeInput==c.replaceInput&&c.replace(),c.findPrev()},"Alt-Return":function(c){c.activeInput==c.replaceInput&&c.replaceAll(),c.findAll()},Tab:function(c){(c.activeInput==c.replaceInput?c.searchInput:c.replaceInput).focus()}}),r.addCommands([{name:"toggleRegexpMode",bindKey:{win:"Alt-R|Alt-/",mac:"Ctrl-Alt-R|Ctrl-Alt-/"},exec:function(c){c.regExpOption.checked=!c.regExpOption.checked,c.$syncOptions()}},{name:"toggleCaseSensitive",bindKey:{win:"Alt-C|Alt-I",mac:"Ctrl-Alt-R|Ctrl-Alt-I"},exec:function(c){c.caseSensitiveOption.checked=!c.caseSensitiveOption.checked,c.$syncOptions()}},{name:"toggleWholeWords",bindKey:{win:"Alt-B|Alt-W",mac:"Ctrl-Alt-B|Ctrl-Alt-W"},exec:function(c){c.wholeWordOption.checked=!c.wholeWordOption.checked,c.$syncOptions()}},{name:"toggleReplace",exec:function(c){c.replaceOption.checked=!c.replaceOption.checked,c.$syncOptions()}},{name:"searchInSelection",exec:function(c){c.searchOption.checked=!c.searchRange,c.setSearchRange(c.searchOption.checked&&c.editor.getSelectionRange()),c.$syncOptions()}}]);var a=new h([{bindKey:"Esc",name:"closeSearchBar",exec:function(c){c.searchBox.hide()}}]);i.prototype.$searchBarKb=r,i.prototype.$closeSearchBarKb=a,M.SearchBox=i,M.Search=function(c,p){var g=c.searchBox||new i(c);g.show(c.session.getTextRange(),p)}}),function(){ace.require(["ace/ext/searchbox"],function(n){D&&(D.exports=n)})}()},549:(D,R,f0)=>{D=f0.nmd(D),ace.define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"],function(n,M,G){"use strict";var L=n("../lib/oop"),T=n("../lib/lang"),C=n("./text_highlight_rules").TextHighlightRules,d=M.supportType="align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index",h=M.supportFunction="rgb|rgba|url|attr|counter|counters",l=M.supportConstant="absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|flex-end|flex-start|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom",o=M.supportConstantColor="aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|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|green|greenyellow|grey|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|magenta|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|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen",s=M.supportConstantFonts="arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace",i=M.numRe="\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))",r=M.pseudoElements="(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b",a=M.pseudoClasses="(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b",c=function(){var p=this.createKeywordMapper({"support.function":h,"support.constant":l,"support.type":d,"support.constant.color":o,"support.constant.fonts":s},"text",!0);this.$rules={start:[{include:["strings","url","comments"]},{token:"paren.lparen",regex:"\\{",next:"ruleset"},{token:"paren.rparen",regex:"\\}"},{token:"string",regex:"@(?!viewport)",next:"media"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"keyword",regex:"%"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant.numeric",regex:i},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],media:[{include:["strings","url","comments"]},{token:"paren.lparen",regex:"\\{",next:"start"},{token:"paren.rparen",regex:"\\}",next:"start"},{token:"string",regex:";",next:"start"},{token:"keyword",regex:"(?:media|supports|document|charset|import|namespace|media|supports|document|page|font|keyframes|viewport|counter-style|font-feature-values|swash|ornaments|annotation|stylistic|styleset|character-variant)"}],comments:[{token:"comment",regex:"\\/\\*",push:[{token:"comment",regex:"\\*\\/",next:"pop"},{defaultToken:"comment"}]}],ruleset:[{regex:"-(webkit|ms|moz|o)-",token:"text"},{token:"punctuation.operator",regex:"[:;]"},{token:"paren.rparen",regex:"\\}",next:"start"},{include:["strings","url","comments"]},{token:["constant.numeric","keyword"],regex:"("+i+")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)"},{token:"constant.numeric",regex:i},{token:"constant.numeric",regex:"#[a-f0-9]{6}"},{token:"constant.numeric",regex:"#[a-f0-9]{3}"},{token:["punctuation","entity.other.attribute-name.pseudo-element.css"],regex:r},{token:["punctuation","entity.other.attribute-name.pseudo-class.css"],regex:a},{include:"url"},{token:p,regex:"\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"},{caseInsensitive:!0}],url:[{token:"support.function",regex:"(?:url(:?-prefix)?|domain|regexp)\\(",push:[{token:"support.function",regex:"\\)",next:"pop"},{defaultToken:"string"}]}],strings:[{token:"string.start",regex:"'",push:[{token:"string.end",regex:"'|$",next:"pop"},{include:"escapes"},{token:"constant.language.escape",regex:/\\$/,consumeLineEnd:!0},{defaultToken:"string"}]},{token:"string.start",regex:'"',push:[{token:"string.end",regex:'"|$',next:"pop"},{include:"escapes"},{token:"constant.language.escape",regex:/\\$/,consumeLineEnd:!0},{defaultToken:"string"}]}],escapes:[{token:"constant.language.escape",regex:/\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/}]},this.normalizeRules()};L.inherits(c,C),M.CssHighlightRules=c}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(n,M,G){"use strict";var L=n("../range").Range,T=function(){};(function(){this.checkOutdent=function(C,d){return/^\s+$/.test(C)?/^\s*\}/.test(d):!1},this.autoOutdent=function(C,d){var h=C.getLine(d),l=h.match(/^(\s*\})/);if(!l)return 0;var o=l[1].length,s=C.findMatchingBracket({row:d,column:o});if(!s||s.row==d)return 0;var i=this.$getIndent(C.getLine(s.row));C.replace(new L(d,0,d,o-1),i)},this.$getIndent=function(C){return C.match(/^\s*/)[0]}}).call(T.prototype),M.MatchingBraceOutdent=T}),ace.define("ace/mode/css_completions",["require","exports","module"],function(n,M,G){"use strict";var L={background:{"#$0":1},"background-color":{"#$0":1,transparent:1,fixed:1},"background-image":{"url('/$0')":1},"background-repeat":{repeat:1,"repeat-x":1,"repeat-y":1,"no-repeat":1,inherit:1},"background-position":{bottom:2,center:2,left:2,right:2,top:2,inherit:2},"background-attachment":{scroll:1,fixed:1},"background-size":{cover:1,contain:1},"background-clip":{"border-box":1,"padding-box":1,"content-box":1},"background-origin":{"border-box":1,"padding-box":1,"content-box":1},border:{"solid $0":1,"dashed $0":1,"dotted $0":1,"#$0":1},"border-color":{"#$0":1},"border-style":{solid:2,dashed:2,dotted:2,double:2,groove:2,hidden:2,inherit:2,inset:2,none:2,outset:2,ridged:2},"border-collapse":{collapse:1,separate:1},bottom:{px:1,em:1,"%":1},clear:{left:1,right:1,both:1,none:1},color:{"#$0":1,"rgb(#$00,0,0)":1},cursor:{default:1,pointer:1,move:1,text:1,wait:1,help:1,progress:1,"n-resize":1,"ne-resize":1,"e-resize":1,"se-resize":1,"s-resize":1,"sw-resize":1,"w-resize":1,"nw-resize":1},display:{none:1,block:1,inline:1,"inline-block":1,"table-cell":1},"empty-cells":{show:1,hide:1},float:{left:1,right:1,none:1},"font-family":{Arial:2,"Comic Sans MS":2,Consolas:2,"Courier New":2,Courier:2,Georgia:2,Monospace:2,"Sans-Serif":2,"Segoe UI":2,Tahoma:2,"Times New Roman":2,"Trebuchet MS":2,Verdana:1},"font-size":{px:1,em:1,"%":1},"font-weight":{bold:1,normal:1},"font-style":{italic:1,normal:1},"font-variant":{normal:1,"small-caps":1},height:{px:1,em:1,"%":1},left:{px:1,em:1,"%":1},"letter-spacing":{normal:1},"line-height":{normal:1},"list-style-type":{none:1,disc:1,circle:1,square:1,decimal:1,"decimal-leading-zero":1,"lower-roman":1,"upper-roman":1,"lower-greek":1,"lower-latin":1,"upper-latin":1,georgian:1,"lower-alpha":1,"upper-alpha":1},margin:{px:1,em:1,"%":1},"margin-right":{px:1,em:1,"%":1},"margin-left":{px:1,em:1,"%":1},"margin-top":{px:1,em:1,"%":1},"margin-bottom":{px:1,em:1,"%":1},"max-height":{px:1,em:1,"%":1},"max-width":{px:1,em:1,"%":1},"min-height":{px:1,em:1,"%":1},"min-width":{px:1,em:1,"%":1},overflow:{hidden:1,visible:1,auto:1,scroll:1},"overflow-x":{hidden:1,visible:1,auto:1,scroll:1},"overflow-y":{hidden:1,visible:1,auto:1,scroll:1},padding:{px:1,em:1,"%":1},"padding-top":{px:1,em:1,"%":1},"padding-right":{px:1,em:1,"%":1},"padding-bottom":{px:1,em:1,"%":1},"padding-left":{px:1,em:1,"%":1},"page-break-after":{auto:1,always:1,avoid:1,left:1,right:1},"page-break-before":{auto:1,always:1,avoid:1,left:1,right:1},position:{absolute:1,relative:1,fixed:1,static:1},right:{px:1,em:1,"%":1},"table-layout":{fixed:1,auto:1},"text-decoration":{none:1,underline:1,"line-through":1,blink:1},"text-align":{left:1,right:1,center:1,justify:1},"text-transform":{capitalize:1,uppercase:1,lowercase:1,none:1},top:{px:1,em:1,"%":1},"vertical-align":{top:1,bottom:1},visibility:{hidden:1,visible:1},"white-space":{nowrap:1,normal:1,pre:1,"pre-line":1,"pre-wrap":1},width:{px:1,em:1,"%":1},"word-spacing":{normal:1},filter:{"alpha(opacity=$0100)":1},"text-shadow":{"$02px 2px 2px #777":1},"text-overflow":{"ellipsis-word":1,clip:1,ellipsis:1},"-moz-border-radius":1,"-moz-border-radius-topright":1,"-moz-border-radius-bottomright":1,"-moz-border-radius-topleft":1,"-moz-border-radius-bottomleft":1,"-webkit-border-radius":1,"-webkit-border-top-right-radius":1,"-webkit-border-top-left-radius":1,"-webkit-border-bottom-right-radius":1,"-webkit-border-bottom-left-radius":1,"-moz-box-shadow":1,"-webkit-box-shadow":1,transform:{"rotate($00deg)":1,"skew($00deg)":1},"-moz-transform":{"rotate($00deg)":1,"skew($00deg)":1},"-webkit-transform":{"rotate($00deg)":1,"skew($00deg)":1}},T=function(){};(function(){this.completionsDefined=!1,this.defineCompletions=function(){if(document){var C=document.createElement("c").style;for(var d in C)if(typeof C[d]=="string"){var h=d.replace(/[A-Z]/g,function(l){return"-"+l.toLowerCase()});L.hasOwnProperty(h)||(L[h]=1)}}this.completionsDefined=!0},this.getCompletions=function(C,d,h,l){if(this.completionsDefined||this.defineCompletions(),C==="ruleset"||d.$mode.$id=="ace/mode/scss"){var o=d.getLine(h.row).substr(0,h.column),s=/\([^)]*$/.test(o);return s&&(o=o.substr(o.lastIndexOf("(")+1)),/:[^;]+$/.test(o)?(/([\w\-]+):[^:]*$/.test(o),this.getPropertyValueCompletions(C,d,h,l)):this.getPropertyCompletions(C,d,h,l,s)}return[]},this.getPropertyCompletions=function(C,d,h,l,o){o=o||!1;var s=Object.keys(L);return s.map(function(i){return{caption:i,snippet:i+": $0"+(o?"":";"),meta:"property",score:1e6}})},this.getPropertyValueCompletions=function(C,d,h,l){var o=d.getLine(h.row).substr(0,h.column),s=(/([\w\-]+):[^:]*$/.exec(o)||{})[1];if(!s)return[];var i=[];return s in L&&typeof L[s]=="object"&&(i=Object.keys(L[s])),i.map(function(r){return{caption:r,snippet:r,meta:"property value",score:1e6}})}}).call(T.prototype),M.CssCompletions=T}),ace.define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"],function(n,M,G){"use strict";var L=n("../../lib/oop"),T=n("../behaviour").Behaviour,C=n("./cstyle").CstyleBehaviour,d=n("../../token_iterator").TokenIterator,h=function(){this.inherit(C),this.add("colon","insertion",function(l,o,s,i,r){if(r===":"&&s.selection.isEmpty()){var a=s.getCursorPosition(),c=new d(i,a.row,a.column),p=c.getCurrentToken();if(p&&p.value.match(/\s+/)&&(p=c.stepBackward()),p&&p.type==="support.type"){var g=i.doc.getLine(a.row),A=g.substring(a.column,a.column+1);if(A===":")return{text:"",selection:[1,1]};if(/^(\s+[^;]|\s*$)/.test(g.substring(a.column)))return{text:":;",selection:[1,1]}}}}),this.add("colon","deletion",function(l,o,s,i,r){var a=i.doc.getTextRange(r);if(!r.isMultiLine()&&a===":"){var c=s.getCursorPosition(),p=new d(i,c.row,c.column),g=p.getCurrentToken();if(g&&g.value.match(/\s+/)&&(g=p.stepBackward()),g&&g.type==="support.type"){var A=i.doc.getLine(r.start.row),b=A.substring(r.end.column,r.end.column+1);if(b===";")return r.end.column++,r}}}),this.add("semicolon","insertion",function(l,o,s,i,r){if(r===";"&&s.selection.isEmpty()){var a=s.getCursorPosition(),c=i.doc.getLine(a.row),p=c.substring(a.column,a.column+1);if(p===";")return{text:"",selection:[1,1]}}}),this.add("!important","insertion",function(l,o,s,i,r){if(r==="!"&&s.selection.isEmpty()){var a=s.getCursorPosition(),c=i.doc.getLine(a.row);if(/^\s*(;|}|$)/.test(c.substring(a.column)))return{text:"!important",selection:[10,10]}}})};L.inherits(h,C),M.CssBehaviour=h}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(n,M,G){"use strict";var L=n("../../lib/oop"),T=n("../../range").Range,C=n("./fold_mode").FoldMode,d=M.FoldMode=function(h){h&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+h.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+h.end)))};L.inherits(d,C),function(){this.foldingStartMarker=/([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(h,l,o){var s=h.getLine(o);if(this.singleLineBlockCommentRe.test(s)&&!this.startRegionRe.test(s)&&!this.tripleStarBlockCommentRe.test(s))return"";var i=this._getFoldWidgetBase(h,l,o);return!i&&this.startRegionRe.test(s)?"start":i},this.getFoldWidgetRange=function(h,l,o,s){var i=h.getLine(o);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(h,i,o);var c=i.match(this.foldingStartMarker);if(c){var r=c.index;if(c[1])return this.openingBracketBlock(h,c[1],o,r);var a=h.getCommentFoldRange(o,r+c[0].length,1);return a&&!a.isMultiLine()&&(s?a=this.getSectionRange(h,o):l!="all"&&(a=null)),a}if(l!=="markbegin"){var c=i.match(this.foldingStopMarker);if(c){var r=c.index+c[0].length;return c[1]?this.closingBracketBlock(h,c[1],o,r):h.getCommentFoldRange(o,r,-1)}}},this.getSectionRange=function(h,l){var o=h.getLine(l),s=o.search(/\S/),i=l,r=o.length;l=l+1;for(var a=l,c=h.getLength();++lp)break;var g=this.getFoldWidgetRange(h,"all",l);if(g){if(g.start.row<=i)break;if(g.isMultiLine())l=g.end.row;else if(s==p)break}a=l}}return new T(i,r,a,h.getLine(a).length)},this.getCommentRegionBlock=function(h,l,o){for(var s=l.search(/\s*$/),i=h.getLength(),r=o,a=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,c=1;++or)return new T(r,s,g,l.length)}}.call(d.prototype)}),ace.define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"],function(n,M,G){"use strict";var L=n("../lib/oop"),T=n("./text").Mode,C=n("./css_highlight_rules").CssHighlightRules,d=n("./matching_brace_outdent").MatchingBraceOutdent,h=n("../worker/worker_client").WorkerClient,l=n("./css_completions").CssCompletions,o=n("./behaviour/css").CssBehaviour,s=n("./folding/cstyle").FoldMode,i=function(){this.HighlightRules=C,this.$outdent=new d,this.$behaviour=new o,this.$completer=new l,this.foldingRules=new s};L.inherits(i,T),function(){this.foldingRules="cStyle",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(r,a,c){var p=this.$getIndent(a),g=this.getTokenizer().getLineTokens(a,r).tokens;if(g.length&&g[g.length-1].type=="comment")return p;var A=a.match(/^.*\{\s*$/);return A&&(p+=c),p},this.checkOutdent=function(r,a,c){return this.$outdent.checkOutdent(a,c)},this.autoOutdent=function(r,a,c){this.$outdent.autoOutdent(a,c)},this.getCompletions=function(r,a,c,p){return this.$completer.getCompletions(r,a,c,p)},this.createWorker=function(r){var a=new h(["ace"],"ace/mode/css_worker","Worker");return a.attachToDocument(r.getDocument()),a.on("annotate",function(c){r.setAnnotations(c.data)}),a.on("terminate",function(){r.clearAnnotations()}),a},this.$id="ace/mode/css",this.snippetFileId="ace/snippets/css"}.call(i.prototype),M.Mode=i}),function(){ace.require(["ace/mode/css"],function(n){D&&(D.exports=n)})}()},576:(D,R,f0)=>{D=f0.nmd(D),ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(n,M,G){"use strict";var L=n("../lib/oop"),T=n("./text_highlight_rules").TextHighlightRules,C=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@\\w+(?=\\s|$)"},C.getTagRule(),{defaultToken:"comment.doc",caseInsensitive:!0}]}};L.inherits(C,T),C.getTagRule=function(d){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},C.getStartRule=function(d){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:d}},C.getEndRule=function(d){return{token:"comment.doc",regex:"\\*\\/",next:d}},M.DocCommentHighlightRules=C}),ace.define("ace/mode/golang_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(n,M,G){var L=n("../lib/oop"),T=n("./doc_comment_highlight_rules").DocCommentHighlightRules,C=n("./text_highlight_rules").TextHighlightRules,d=function(){var h="else|break|case|return|goto|if|const|select|continue|struct|default|switch|for|range|func|import|package|chan|defer|fallthrough|go|interface|map|range|select|type|var",l="string|uint8|uint16|uint32|uint64|int8|int16|int32|int64|float32|float64|complex64|complex128|byte|rune|uint|int|uintptr|bool|error",o="new|close|cap|copy|panic|panicln|print|println|len|make|delete|real|recover|imag|append",s="nil|true|false|iota",i=this.createKeywordMapper({keyword:h,"constant.language":s,"support.function":o,"support.type":l},""),r=`\\\\(?:[0-7]{3}|x\\h{2}|u{4}|U\\h{6}|[abfnrtv'"\\\\])`.replace(/\\h/g,"[a-fA-F\\d]");this.$rules={start:[{token:"comment",regex:"\\/\\/.*$"},T.getStartRule("doc-start"),{token:"comment.start",regex:"\\/\\*",next:"comment"},{token:"string",regex:/"(?:[^"\\]|\\.)*?"/},{token:"string",regex:"`",next:"bqstring"},{token:"constant.numeric",regex:"'(?:[^\\'\uD800-\uDBFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|"+r.replace('"',"")+")'"},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:["keyword","text","entity.name.function"],regex:"(func)(\\s+)([a-zA-Z_$][a-zA-Z0-9_$]*)\\b"},{token:function(a){return a[a.length-1]=="("?[{type:i(a.slice(0,-1))||"support.function",value:a.slice(0,-1)},{type:"paren.lparen",value:a.slice(-1)}]:i(a)||"identifier"},regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b\\(?"},{token:"keyword.operator",regex:"!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|==|=|!=|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^="},{token:"punctuation.operator",regex:"\\?|\\:|\\,|\\;|\\."},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"}],comment:[{token:"comment.end",regex:"\\*\\/",next:"start"},{defaultToken:"comment"}],bqstring:[{token:"string",regex:"`",next:"start"},{defaultToken:"string"}]},this.embedRules(T,"doc-",[T.getEndRule("start")])};L.inherits(d,C),M.GolangHighlightRules=d}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(n,M,G){"use strict";var L=n("../range").Range,T=function(){};(function(){this.checkOutdent=function(C,d){return/^\s+$/.test(C)?/^\s*\}/.test(d):!1},this.autoOutdent=function(C,d){var h=C.getLine(d),l=h.match(/^(\s*\})/);if(!l)return 0;var o=l[1].length,s=C.findMatchingBracket({row:d,column:o});if(!s||s.row==d)return 0;var i=this.$getIndent(C.getLine(s.row));C.replace(new L(d,0,d,o-1),i)},this.$getIndent=function(C){return C.match(/^\s*/)[0]}}).call(T.prototype),M.MatchingBraceOutdent=T}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(n,M,G){"use strict";var L=n("../../lib/oop"),T=n("../../range").Range,C=n("./fold_mode").FoldMode,d=M.FoldMode=function(h){h&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+h.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+h.end)))};L.inherits(d,C),function(){this.foldingStartMarker=/([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(h,l,o){var s=h.getLine(o);if(this.singleLineBlockCommentRe.test(s)&&!this.startRegionRe.test(s)&&!this.tripleStarBlockCommentRe.test(s))return"";var i=this._getFoldWidgetBase(h,l,o);return!i&&this.startRegionRe.test(s)?"start":i},this.getFoldWidgetRange=function(h,l,o,s){var i=h.getLine(o);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(h,i,o);var c=i.match(this.foldingStartMarker);if(c){var r=c.index;if(c[1])return this.openingBracketBlock(h,c[1],o,r);var a=h.getCommentFoldRange(o,r+c[0].length,1);return a&&!a.isMultiLine()&&(s?a=this.getSectionRange(h,o):l!="all"&&(a=null)),a}if(l!=="markbegin"){var c=i.match(this.foldingStopMarker);if(c){var r=c.index+c[0].length;return c[1]?this.closingBracketBlock(h,c[1],o,r):h.getCommentFoldRange(o,r,-1)}}},this.getSectionRange=function(h,l){var o=h.getLine(l),s=o.search(/\S/),i=l,r=o.length;l=l+1;for(var a=l,c=h.getLength();++lp)break;var g=this.getFoldWidgetRange(h,"all",l);if(g){if(g.start.row<=i)break;if(g.isMultiLine())l=g.end.row;else if(s==p)break}a=l}}return new T(i,r,a,h.getLine(a).length)},this.getCommentRegionBlock=function(h,l,o){for(var s=l.search(/\s*$/),i=h.getLength(),r=o,a=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,c=1;++or)return new T(r,s,g,l.length)}}.call(d.prototype)}),ace.define("ace/mode/golang",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/golang_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/folding/cstyle"],function(n,M,G){var L=n("../lib/oop"),T=n("./text").Mode,C=n("./golang_highlight_rules").GolangHighlightRules,d=n("./matching_brace_outdent").MatchingBraceOutdent,h=n("./folding/cstyle").FoldMode,l=function(){this.HighlightRules=C,this.$outdent=new d,this.foldingRules=new h,this.$behaviour=this.$defaultBehaviour};L.inherits(l,T),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(o,s,i){var r=this.$getIndent(s),a=this.getTokenizer().getLineTokens(s,o),c=a.tokens,p=a.state;if(c.length&&c[c.length-1].type=="comment")return r;if(o=="start"){var g=s.match(/^.*[\{\(\[]\s*$/);g&&(r+=i)}return r},this.checkOutdent=function(o,s,i){return this.$outdent.checkOutdent(s,i)},this.autoOutdent=function(o,s,i){this.$outdent.autoOutdent(s,i)},this.$id="ace/mode/golang"}.call(l.prototype),M.Mode=l}),function(){ace.require(["ace/mode/golang"],function(n){D&&(D.exports=n)})}()},395:(D,R,f0)=>{D=f0.nmd(D),ace.define("ace/mode/jsdoc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(n,M,G){"use strict";var L=n("../lib/oop"),T=n("./text_highlight_rules").TextHighlightRules,C=function(){this.$rules={start:[{token:["comment.doc.tag","comment.doc.text","lparen.doc"],regex:"(@(?:param|member|typedef|property|namespace|var|const|callback))(\\s*)({)",push:[{token:"lparen.doc",regex:"{",push:[{include:"doc-syntax"},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"}]},{token:["rparen.doc","text.doc","variable.parameter.doc","lparen.doc","variable.parameter.doc","rparen.doc"],regex:/(})(\s*)(?:([\w=:\/\.]+)|(?:(\[)([\w=:\/\.]+)(\])))/,next:"pop"},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"},{include:"doc-syntax"},{defaultToken:"text.doc"}]},{token:["comment.doc.tag","text.doc","lparen.doc"],regex:"(@(?:returns?|yields|type|this|suppress|public|protected|private|package|modifies|implements|external|exception|throws|enum|define|extends))(\\s*)({)",push:[{token:"lparen.doc",regex:"{",push:[{include:"doc-syntax"},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"}]},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"},{include:"doc-syntax"},{defaultToken:"text.doc"}]},{token:["comment.doc.tag","text.doc","variable.parameter.doc"],regex:'(@(?:alias|memberof|instance|module|name|lends|namespace|external|this|template|requires|param|implements|function|extends|typedef|mixes|constructor|var|memberof\\!|event|listens|exports|class|constructs|interface|emits|fires|throws|const|callback|borrows|augments))(\\s+)(\\w[\\w#.:/~"\\-]*)?'},{token:["comment.doc.tag","text.doc","variable.parameter.doc"],regex:"(@method)(\\s+)(\\w[\\w.\\(\\)]*)"},{token:"comment.doc.tag",regex:"@access\\s+(?:private|public|protected)"},{token:"comment.doc.tag",regex:"@kind\\s+(?:class|constant|event|external|file|function|member|mixin|module|namespace|typedef)"},{token:"comment.doc.tag",regex:"@\\w+(?=\\s|$)"},C.getTagRule(),{defaultToken:"comment.doc",caseInsensitive:!0}],"doc-syntax":[{token:"operator.doc",regex:/[|:]/},{token:"paren.doc",regex:/[\[\]]/}]},this.normalizeRules()};L.inherits(C,T),C.getTagRule=function(d){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},C.getStartRule=function(d){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:d}},C.getEndRule=function(d){return{token:"comment.doc",regex:"\\*\\/",next:d}},M.JsDocCommentHighlightRules=C}),ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/jsdoc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(n,M,G){"use strict";var L=n("../lib/oop"),T=n("./jsdoc_comment_highlight_rules").JsDocCommentHighlightRules,C=n("./text_highlight_rules").TextHighlightRules,d="[a-zA-Z\\$_\xA1-\uFFFF][a-zA-Z\\d\\$_\xA1-\uFFFF]*",h=function(s){var i=this.createKeywordMapper({"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Symbol|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",keyword:"const|yield|import|get|set|async|await|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static|constructor","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},"identifier"),r="case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",a="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]{1,6}}|[0-2][0-7]{0,2}|3[0-7][0-7]?|[4-7][0-7]?|.)";this.$rules={no_regex:[T.getStartRule("doc-start"),o("no_regex"),{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/},{token:["storage.type","punctuation.operator","support.function","punctuation.operator","entity.name.function","text","keyword.operator"],regex:"("+d+")(\\.)(prototype)(\\.)("+d+")(\\s*)(=)",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+d+")(\\.)("+d+")(\\s*)(=)(\\s*)(function\\*?)(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+d+")(\\s*)(=)(\\s*)(function\\*?)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+d+")(\\.)("+d+")(\\s*)(=)(\\s*)(function\\*?)(\\s+)(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","entity.name.function","text","paren.lparen"],regex:"(function\\*?)(\\s+)("+d+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","paren.lparen"],regex:"("+d+")(\\s*)(:)(\\s*)(function\\*?)(\\s*)(\\()",next:"function_arguments"},{token:["text","text","storage.type","text","paren.lparen"],regex:"(:)(\\s*)(function\\*?)(\\s*)(\\()",next:"function_arguments"},{token:"keyword",regex:`from(?=\\s*('|"))`},{token:"keyword",regex:"(?:"+r+")\\b",next:"start"},{token:"support.constant",regex:/that\b/},{token:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/},{token:i,regex:d},{token:"punctuation.operator",regex:/[.](?![.])/,next:"property"},{token:"storage.type",regex:/=>/,next:"start"},{token:"keyword.operator",regex:/--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/,next:"start"},{token:"punctuation.operator",regex:/[?:,;.]/,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"comment",regex:/^#!.*$/}],property:[{token:"text",regex:"\\s+"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+d+")(\\.)("+d+")(\\s*)(=)(\\s*)(function\\*?)(?:(\\s+)(\\w+))?(\\s*)(\\()",next:"function_arguments"},{token:"punctuation.operator",regex:/[.](?![.])/},{token:"support.function",regex:/(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|lter|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward|rEach)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:"support.function.dom",regex:/(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:"support.constant",regex:/(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:"identifier",regex:d},{regex:"",token:"empty",next:"no_regex"}],start:[T.getStartRule("doc-start"),o("start"),{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],regex:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],default_parameter:[{token:"string",regex:"'(?=.)",push:[{token:"string",regex:"'|$",next:"pop"},{include:"qstring"}]},{token:"string",regex:'"(?=.)',push:[{token:"string",regex:'"|$',next:"pop"},{include:"qqstring"}]},{token:"constant.language",regex:"null|Infinity|NaN|undefined"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/},{token:"punctuation.operator",regex:",",next:"function_arguments"},{token:"text",regex:"\\s+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],function_arguments:[o("function_arguments"),{token:"variable.parameter",regex:d},{token:"punctuation.operator",regex:","},{token:"text",regex:"\\s+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],qqstring:[{token:"constant.language.escape",regex:a},{token:"string",regex:"\\\\$",consumeLineEnd:!0},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:a},{token:"string",regex:"\\\\$",consumeLineEnd:!0},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]},(!s||!s.noES6)&&(this.$rules.no_regex.unshift({regex:"[{}]",onMatch:function(c,p,g){if(this.next=c=="{"?this.nextState:"",c=="{"&&g.length)g.unshift("start",p);else if(c=="}"&&g.length&&(g.shift(),this.next=g.shift(),this.next.indexOf("string")!=-1||this.next.indexOf("jsx")!=-1))return"paren.quasi.end";return c=="{"?"paren.lparen":"paren.rparen"},nextState:"start"},{token:"string.quasi.start",regex:/`/,push:[{token:"constant.language.escape",regex:a},{token:"paren.quasi.start",regex:/\${/,push:"start"},{token:"string.quasi.end",regex:/`/,next:"pop"},{defaultToken:"string.quasi"}]},{token:["variable.parameter","text"],regex:"("+d+")(\\s*)(?=\\=>)"},{token:"paren.lparen",regex:"(\\()(?=.+\\s*=>)",next:"function_arguments"},{token:"variable.language",regex:"(?:(?:(?:Weak)?(?:Set|Map))|Promise)\\b"}),this.$rules.function_arguments.unshift({token:"keyword.operator",regex:"=",next:"default_parameter"},{token:"keyword.operator",regex:"\\.{3}"}),this.$rules.property.unshift({token:"support.function",regex:"(findIndex|repeat|startsWith|endsWith|includes|isSafeInteger|trunc|cbrt|log2|log10|sign|then|catch|finally|resolve|reject|race|any|all|allSettled|keys|entries|isInteger)\\b(?=\\()"},{token:"constant.language",regex:"(?:MAX_SAFE_INTEGER|MIN_SAFE_INTEGER|EPSILON)\\b"}),(!s||s.jsx!=!1)&&l.call(this)),this.embedRules(T,"doc-",[T.getEndRule("no_regex")]),this.normalizeRules()};L.inherits(h,C);function l(){var s=d.replace("\\d","\\d\\-"),i={onMatch:function(a,c,p){var g=a.charAt(1)=="/"?2:1;return g==1?(c!=this.nextState?p.unshift(this.next,this.nextState,0):p.unshift(this.next),p[2]++):g==2&&c==this.nextState&&(p[1]--,(!p[1]||p[1]<0)&&(p.shift(),p.shift())),[{type:"meta.tag.punctuation."+(g==1?"":"end-")+"tag-open.xml",value:a.slice(0,g)},{type:"meta.tag.tag-name.xml",value:a.substr(g)}]},regex:"",onMatch:function(a,c,p){return c==p[0]&&p.shift(),a.length==2&&(p[0]==this.nextState&&p[1]--,(!p[1]||p[1]<0)&&p.splice(0,2)),this.next=p[0]||"start",[{type:this.token,value:a}]},nextState:"jsx"},r,o("jsxAttributes"),{token:"entity.other.attribute-name.xml",regex:s},{token:"keyword.operator.attribute-equals.xml",regex:"="},{token:"text.tag-whitespace.xml",regex:"\\s+"},{token:"string.attribute-value.xml",regex:"'",stateName:"jsx_attr_q",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',stateName:"jsx_attr_qq",push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},i],this.$rules.reference=[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}]}function o(s){return[{token:"comment",regex:/\/\*/,next:[T.getTagRule(),{token:"comment",regex:"\\*\\/",next:s||"pop"},{defaultToken:"comment",caseInsensitive:!0}]},{token:"comment",regex:"\\/\\/",next:[T.getTagRule(),{token:"comment",regex:"$|^",next:s||"pop"},{defaultToken:"comment",caseInsensitive:!0}]}]}M.JavaScriptHighlightRules=h}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(n,M,G){"use strict";var L=n("../range").Range,T=function(){};(function(){this.checkOutdent=function(C,d){return/^\s+$/.test(C)?/^\s*\}/.test(d):!1},this.autoOutdent=function(C,d){var h=C.getLine(d),l=h.match(/^(\s*\})/);if(!l)return 0;var o=l[1].length,s=C.findMatchingBracket({row:d,column:o});if(!s||s.row==d)return 0;var i=this.$getIndent(C.getLine(s.row));C.replace(new L(d,0,d,o-1),i)},this.$getIndent=function(C){return C.match(/^\s*/)[0]}}).call(T.prototype),M.MatchingBraceOutdent=T}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(n,M,G){"use strict";var L=n("../../lib/oop"),T=n("../../range").Range,C=n("./fold_mode").FoldMode,d=M.FoldMode=function(h){h&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+h.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+h.end)))};L.inherits(d,C),function(){this.foldingStartMarker=/([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(h,l,o){var s=h.getLine(o);if(this.singleLineBlockCommentRe.test(s)&&!this.startRegionRe.test(s)&&!this.tripleStarBlockCommentRe.test(s))return"";var i=this._getFoldWidgetBase(h,l,o);return!i&&this.startRegionRe.test(s)?"start":i},this.getFoldWidgetRange=function(h,l,o,s){var i=h.getLine(o);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(h,i,o);var c=i.match(this.foldingStartMarker);if(c){var r=c.index;if(c[1])return this.openingBracketBlock(h,c[1],o,r);var a=h.getCommentFoldRange(o,r+c[0].length,1);return a&&!a.isMultiLine()&&(s?a=this.getSectionRange(h,o):l!="all"&&(a=null)),a}if(l!=="markbegin"){var c=i.match(this.foldingStopMarker);if(c){var r=c.index+c[0].length;return c[1]?this.closingBracketBlock(h,c[1],o,r):h.getCommentFoldRange(o,r,-1)}}},this.getSectionRange=function(h,l){var o=h.getLine(l),s=o.search(/\S/),i=l,r=o.length;l=l+1;for(var a=l,c=h.getLength();++lp)break;var g=this.getFoldWidgetRange(h,"all",l);if(g){if(g.start.row<=i)break;if(g.isMultiLine())l=g.end.row;else if(s==p)break}a=l}}return new T(i,r,a,h.getLine(a).length)},this.getCommentRegionBlock=function(h,l,o){for(var s=l.search(/\s*$/),i=h.getLength(),r=o,a=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,c=1;++or)return new T(r,s,g,l.length)}}.call(d.prototype)}),ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"],function(n,M,G){"use strict";var L=n("../lib/oop"),T=n("./text").Mode,C=n("./javascript_highlight_rules").JavaScriptHighlightRules,d=n("./matching_brace_outdent").MatchingBraceOutdent,h=n("../worker/worker_client").WorkerClient,l=n("./behaviour/cstyle").CstyleBehaviour,o=n("./folding/cstyle").FoldMode,s=function(){this.HighlightRules=C,this.$outdent=new d,this.$behaviour=new l,this.foldingRules=new o};L.inherits(s,T),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.$quotes={'"':'"',"'":"'","`":"`"},this.$pairQuotesAfter={"`":/\w/},this.getNextLineIndent=function(i,r,a){var c=this.$getIndent(r),p=this.getTokenizer().getLineTokens(r,i),g=p.tokens,A=p.state;if(g.length&&g[g.length-1].type=="comment")return c;if(i=="start"||i=="no_regex"){var b=r.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/);b&&(c+=a)}else if(i=="doc-start"){if(A=="start"||A=="no_regex")return"";var b=r.match(/^\s*(\/?)\*/);b&&(b[1]&&(c+=" "),c+="* ")}return c},this.checkOutdent=function(i,r,a){return this.$outdent.checkOutdent(r,a)},this.autoOutdent=function(i,r,a){this.$outdent.autoOutdent(r,a)},this.createWorker=function(i){var r=new h(["ace"],"ace/mode/javascript_worker","JavaScriptWorker");return r.attachToDocument(i.getDocument()),r.on("annotate",function(a){i.setAnnotations(a.data)}),r.on("terminate",function(){i.clearAnnotations()}),r},this.$id="ace/mode/javascript",this.snippetFileId="ace/snippets/javascript"}.call(s.prototype),M.Mode=s}),function(){ace.require(["ace/mode/javascript"],function(n){D&&(D.exports=n)})}()},252:(D,R,f0)=>{D=f0.nmd(D),ace.define("ace/mode/json_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(n,M,G){"use strict";var L=n("../lib/oop"),T=n("./text_highlight_rules").TextHighlightRules,C=function(){this.$rules={start:[{token:"variable",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]\\s*(?=:)'},{token:"string",regex:'"',next:"string"},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:"constant.language.boolean",regex:"(?:true|false)\\b"},{token:"text",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:"comment",regex:"\\/\\/.*$"},{token:"comment.start",regex:"\\/\\*",next:"comment"},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"punctuation.operator",regex:/[,]/},{token:"text",regex:"\\s+"}],string:[{token:"constant.language.escape",regex:/\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|["\\\/bfnrt])/},{token:"string",regex:'"|$',next:"start"},{defaultToken:"string"}],comment:[{token:"comment.end",regex:"\\*\\/",next:"start"},{defaultToken:"comment"}]}};L.inherits(C,T),M.JsonHighlightRules=C}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(n,M,G){"use strict";var L=n("../range").Range,T=function(){};(function(){this.checkOutdent=function(C,d){return/^\s+$/.test(C)?/^\s*\}/.test(d):!1},this.autoOutdent=function(C,d){var h=C.getLine(d),l=h.match(/^(\s*\})/);if(!l)return 0;var o=l[1].length,s=C.findMatchingBracket({row:d,column:o});if(!s||s.row==d)return 0;var i=this.$getIndent(C.getLine(s.row));C.replace(new L(d,0,d,o-1),i)},this.$getIndent=function(C){return C.match(/^\s*/)[0]}}).call(T.prototype),M.MatchingBraceOutdent=T}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(n,M,G){"use strict";var L=n("../../lib/oop"),T=n("../../range").Range,C=n("./fold_mode").FoldMode,d=M.FoldMode=function(h){h&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+h.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+h.end)))};L.inherits(d,C),function(){this.foldingStartMarker=/([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(h,l,o){var s=h.getLine(o);if(this.singleLineBlockCommentRe.test(s)&&!this.startRegionRe.test(s)&&!this.tripleStarBlockCommentRe.test(s))return"";var i=this._getFoldWidgetBase(h,l,o);return!i&&this.startRegionRe.test(s)?"start":i},this.getFoldWidgetRange=function(h,l,o,s){var i=h.getLine(o);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(h,i,o);var c=i.match(this.foldingStartMarker);if(c){var r=c.index;if(c[1])return this.openingBracketBlock(h,c[1],o,r);var a=h.getCommentFoldRange(o,r+c[0].length,1);return a&&!a.isMultiLine()&&(s?a=this.getSectionRange(h,o):l!="all"&&(a=null)),a}if(l!=="markbegin"){var c=i.match(this.foldingStopMarker);if(c){var r=c.index+c[0].length;return c[1]?this.closingBracketBlock(h,c[1],o,r):h.getCommentFoldRange(o,r,-1)}}},this.getSectionRange=function(h,l){var o=h.getLine(l),s=o.search(/\S/),i=l,r=o.length;l=l+1;for(var a=l,c=h.getLength();++lp)break;var g=this.getFoldWidgetRange(h,"all",l);if(g){if(g.start.row<=i)break;if(g.isMultiLine())l=g.end.row;else if(s==p)break}a=l}}return new T(i,r,a,h.getLine(a).length)},this.getCommentRegionBlock=function(h,l,o){for(var s=l.search(/\s*$/),i=h.getLength(),r=o,a=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,c=1;++or)return new T(r,s,g,l.length)}}.call(d.prototype)}),ace.define("ace/mode/json",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/json_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/folding/cstyle","ace/worker/worker_client"],function(n,M,G){"use strict";var L=n("../lib/oop"),T=n("./text").Mode,C=n("./json_highlight_rules").JsonHighlightRules,d=n("./matching_brace_outdent").MatchingBraceOutdent,h=n("./folding/cstyle").FoldMode,l=n("../worker/worker_client").WorkerClient,o=function(){this.HighlightRules=C,this.$outdent=new d,this.$behaviour=this.$defaultBehaviour,this.foldingRules=new h};L.inherits(o,T),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(s,i,r){var a=this.$getIndent(i);if(s=="start"){var c=i.match(/^.*[\{\(\[]\s*$/);c&&(a+=r)}return a},this.checkOutdent=function(s,i,r){return this.$outdent.checkOutdent(i,r)},this.autoOutdent=function(s,i,r){this.$outdent.autoOutdent(i,r)},this.createWorker=function(s){var i=new l(["ace"],"ace/mode/json_worker","JsonWorker");return i.attachToDocument(s.getDocument()),i.on("annotate",function(r){s.setAnnotations(r.data)}),i.on("terminate",function(){s.clearAnnotations()}),i},this.$id="ace/mode/json"}.call(o.prototype),M.Mode=o}),function(){ace.require(["ace/mode/json"],function(n){D&&(D.exports=n)})}()},711:(D,R,f0)=>{D=f0.nmd(D),ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(n,M,G){"use strict";var L=n("../lib/oop"),T=n("./text_highlight_rules").TextHighlightRules,C=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@\\w+(?=\\s|$)"},C.getTagRule(),{defaultToken:"comment.doc",caseInsensitive:!0}]}};L.inherits(C,T),C.getTagRule=function(d){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},C.getStartRule=function(d){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:d}},C.getEndRule=function(d){return{token:"comment.doc",regex:"\\*\\/",next:d}},M.DocCommentHighlightRules=C}),ace.define("ace/mode/jsx_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(n,M,G){var L=n("../lib/oop"),T=n("../lib/lang"),C=n("./doc_comment_highlight_rules").DocCommentHighlightRules,d=n("./text_highlight_rules").TextHighlightRules,h=function(){var l=T.arrayToMap("break|do|instanceof|typeof|case|else|new|var|catch|finally|return|void|continue|for|switch|default|while|function|this|if|throw|delete|in|try|class|extends|super|import|from|into|implements|interface|static|mixin|override|abstract|final|number|int|string|boolean|variant|log|assert".split("|")),o=T.arrayToMap("null|true|false|NaN|Infinity|__FILE__|__LINE__|undefined".split("|")),s=T.arrayToMap("debugger|with|const|export|let|private|public|yield|protected|extern|native|as|operator|__fake__|__readonly__".split("|")),i="[a-zA-Z_][a-zA-Z0-9_]*\\b";this.$rules={start:[{token:"comment",regex:"\\/\\/.*$"},C.getStartRule("doc-start"),{token:"comment",regex:"\\/\\*",next:"comment"},{token:"string.regexp",regex:"[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/]\\w*\\s*(?=[).,;]|$)"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:"constant.language.boolean",regex:"(?:true|false)\\b"},{token:["storage.type","text","entity.name.function"],regex:"(function)(\\s+)("+i+")"},{token:function(r){return r=="this"?"variable.language":r=="function"?"storage.type":l.hasOwnProperty(r)||s.hasOwnProperty(r)?"keyword":o.hasOwnProperty(r)?"constant.language":/^_?[A-Z][a-zA-Z0-9_]*$/.test(r)?"language.support.class":"identifier"},regex:i},{token:"keyword.operator",regex:"!|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|==|=|!=|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)"},{token:"punctuation.operator",regex:"\\?|\\:|\\,|\\;|\\."},{token:"paren.lparen",regex:"[[({<]"},{token:"paren.rparen",regex:"[\\])}>]"},{token:"text",regex:"\\s+"}],comment:[{token:"comment",regex:"\\*\\/",next:"start"},{defaultToken:"comment"}]},this.embedRules(C,"doc-",[C.getEndRule("start")])};L.inherits(h,d),M.JsxHighlightRules=h}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(n,M,G){"use strict";var L=n("../range").Range,T=function(){};(function(){this.checkOutdent=function(C,d){return/^\s+$/.test(C)?/^\s*\}/.test(d):!1},this.autoOutdent=function(C,d){var h=C.getLine(d),l=h.match(/^(\s*\})/);if(!l)return 0;var o=l[1].length,s=C.findMatchingBracket({row:d,column:o});if(!s||s.row==d)return 0;var i=this.$getIndent(C.getLine(s.row));C.replace(new L(d,0,d,o-1),i)},this.$getIndent=function(C){return C.match(/^\s*/)[0]}}).call(T.prototype),M.MatchingBraceOutdent=T}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(n,M,G){"use strict";var L=n("../../lib/oop"),T=n("../../range").Range,C=n("./fold_mode").FoldMode,d=M.FoldMode=function(h){h&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+h.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+h.end)))};L.inherits(d,C),function(){this.foldingStartMarker=/([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(h,l,o){var s=h.getLine(o);if(this.singleLineBlockCommentRe.test(s)&&!this.startRegionRe.test(s)&&!this.tripleStarBlockCommentRe.test(s))return"";var i=this._getFoldWidgetBase(h,l,o);return!i&&this.startRegionRe.test(s)?"start":i},this.getFoldWidgetRange=function(h,l,o,s){var i=h.getLine(o);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(h,i,o);var c=i.match(this.foldingStartMarker);if(c){var r=c.index;if(c[1])return this.openingBracketBlock(h,c[1],o,r);var a=h.getCommentFoldRange(o,r+c[0].length,1);return a&&!a.isMultiLine()&&(s?a=this.getSectionRange(h,o):l!="all"&&(a=null)),a}if(l!=="markbegin"){var c=i.match(this.foldingStopMarker);if(c){var r=c.index+c[0].length;return c[1]?this.closingBracketBlock(h,c[1],o,r):h.getCommentFoldRange(o,r,-1)}}},this.getSectionRange=function(h,l){var o=h.getLine(l),s=o.search(/\S/),i=l,r=o.length;l=l+1;for(var a=l,c=h.getLength();++lp)break;var g=this.getFoldWidgetRange(h,"all",l);if(g){if(g.start.row<=i)break;if(g.isMultiLine())l=g.end.row;else if(s==p)break}a=l}}return new T(i,r,a,h.getLine(a).length)},this.getCommentRegionBlock=function(h,l,o){for(var s=l.search(/\s*$/),i=h.getLength(),r=o,a=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,c=1;++or)return new T(r,s,g,l.length)}}.call(d.prototype)}),ace.define("ace/mode/jsx",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/jsx_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/folding/cstyle"],function(n,M,G){"use strict";var L=n("../lib/oop"),T=n("./text").Mode,C=n("./jsx_highlight_rules").JsxHighlightRules,d=n("./matching_brace_outdent").MatchingBraceOutdent,h=n("./folding/cstyle").FoldMode;function l(){this.HighlightRules=C,this.$outdent=new d,this.$behaviour=this.$defaultBehaviour,this.foldingRules=new h}L.inherits(l,T),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(o,s,i){var r=this.$getIndent(s),a=this.getTokenizer().getLineTokens(s,o),c=a.tokens;if(c.length&&c[c.length-1].type=="comment")return r;if(o=="start"){var p=s.match(/^.*[\{\(\[]\s*$/);p&&(r+=i)}return r},this.checkOutdent=function(o,s,i){return this.$outdent.checkOutdent(s,i)},this.autoOutdent=function(o,s,i){this.$outdent.autoOutdent(s,i)},this.$id="ace/mode/jsx"}.call(l.prototype),M.Mode=l}),function(){ace.require(["ace/mode/jsx"],function(n){D&&(D.exports=n)})}()},7:(D,R,f0)=>{D=f0.nmd(D),ace.define("ace/mode/python_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(n,M,G){"use strict";var L=n("../lib/oop"),T=n("./text_highlight_rules").TextHighlightRules,C=function(){var d="and|as|assert|break|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|not|or|pass|print|raise|return|try|while|with|yield|async|await|nonlocal",h="True|False|None|NotImplemented|Ellipsis|__debug__",l="abs|divmod|input|open|staticmethod|all|enumerate|int|ord|str|any|eval|isinstance|pow|sum|basestring|execfile|issubclass|print|super|binfile|bin|iter|property|tuple|bool|filter|len|range|type|bytearray|float|list|raw_input|unichr|callable|format|locals|reduce|unicode|chr|frozenset|long|reload|vars|classmethod|getattr|map|repr|xrange|cmp|globals|max|reversed|zip|compile|hasattr|memoryview|round|__import__|complex|hash|min|apply|delattr|help|next|setattr|set|buffer|dict|hex|object|slice|coerce|dir|id|oct|sorted|intern|ascii|breakpoint|bytes",o=this.createKeywordMapper({"invalid.deprecated":"debugger","support.function":l,"variable.language":"self|cls","constant.language":h,keyword:d},"identifier"),s="[uU]?",i="[rR]",r="[fF]",a="(?:[rR][fF]|[fF][rR])",c="(?:(?:[1-9]\\d*)|(?:0))",p="(?:0[oO]?[0-7]+)",g="(?:0[xX][\\dA-Fa-f]+)",A="(?:0[bB][01]+)",b="(?:"+c+"|"+p+"|"+g+"|"+A+")",$="(?:[eE][+-]?\\d+)",S="(?:\\.\\d+)",v="(?:\\d+)",w="(?:(?:"+v+"?"+S+")|(?:"+v+"\\.))",O="(?:(?:"+w+"|"+v+")"+$+")",B="(?:"+O+"|"+w+")",k=`\\\\(x[0-9A-Fa-f]{2}|[0-7]{3}|[\\\\abfnrtv'"]|U[0-9A-Fa-f]{8}|u[0-9A-Fa-f]{4})`;this.$rules={start:[{token:"comment",regex:"#.*$"},{token:"string",regex:s+'"{3}',next:"qqstring3"},{token:"string",regex:s+'"(?=.)',next:"qqstring"},{token:"string",regex:s+"'{3}",next:"qstring3"},{token:"string",regex:s+"'(?=.)",next:"qstring"},{token:"string",regex:i+'"{3}',next:"rawqqstring3"},{token:"string",regex:i+'"(?=.)',next:"rawqqstring"},{token:"string",regex:i+"'{3}",next:"rawqstring3"},{token:"string",regex:i+"'(?=.)",next:"rawqstring"},{token:"string",regex:r+'"{3}',next:"fqqstring3"},{token:"string",regex:r+'"(?=.)',next:"fqqstring"},{token:"string",regex:r+"'{3}",next:"fqstring3"},{token:"string",regex:r+"'(?=.)",next:"fqstring"},{token:"string",regex:a+'"{3}',next:"rfqqstring3"},{token:"string",regex:a+'"(?=.)',next:"rfqqstring"},{token:"string",regex:a+"'{3}",next:"rfqstring3"},{token:"string",regex:a+"'(?=.)",next:"rfqstring"},{token:"keyword.operator",regex:"\\+|\\-|\\*|\\*\\*|\\/|\\/\\/|%|@|<<|>>|&|\\||\\^|~|<|>|<=|=>|==|!=|<>|="},{token:"punctuation",regex:",|:|;|\\->|\\+=|\\-=|\\*=|\\/=|\\/\\/=|%=|@=|&=|\\|=|^=|>>=|<<=|\\*\\*="},{token:"paren.lparen",regex:"[\\[\\(\\{]"},{token:"paren.rparen",regex:"[\\]\\)\\}]"},{token:["keyword","text","entity.name.function"],regex:"(def|class)(\\s+)([\\u00BF-\\u1FFF\\u2C00-\\uD7FF\\w]+)"},{token:"text",regex:"\\s+"},{include:"constants"}],qqstring3:[{token:"constant.language.escape",regex:k},{token:"string",regex:'"{3}',next:"start"},{defaultToken:"string"}],qstring3:[{token:"constant.language.escape",regex:k},{token:"string",regex:"'{3}",next:"start"},{defaultToken:"string"}],qqstring:[{token:"constant.language.escape",regex:k},{token:"string",regex:"\\\\$",next:"qqstring"},{token:"string",regex:'"|$',next:"start"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:k},{token:"string",regex:"\\\\$",next:"qstring"},{token:"string",regex:"'|$",next:"start"},{defaultToken:"string"}],rawqqstring3:[{token:"string",regex:'"{3}',next:"start"},{defaultToken:"string"}],rawqstring3:[{token:"string",regex:"'{3}",next:"start"},{defaultToken:"string"}],rawqqstring:[{token:"string",regex:"\\\\$",next:"rawqqstring"},{token:"string",regex:'"|$',next:"start"},{defaultToken:"string"}],rawqstring:[{token:"string",regex:"\\\\$",next:"rawqstring"},{token:"string",regex:"'|$",next:"start"},{defaultToken:"string"}],fqqstring3:[{token:"constant.language.escape",regex:k},{token:"string",regex:'"{3}',next:"start"},{token:"paren.lparen",regex:"{",push:"fqstringParRules"},{defaultToken:"string"}],fqstring3:[{token:"constant.language.escape",regex:k},{token:"string",regex:"'{3}",next:"start"},{token:"paren.lparen",regex:"{",push:"fqstringParRules"},{defaultToken:"string"}],fqqstring:[{token:"constant.language.escape",regex:k},{token:"string",regex:"\\\\$",next:"fqqstring"},{token:"string",regex:'"|$',next:"start"},{token:"paren.lparen",regex:"{",push:"fqstringParRules"},{defaultToken:"string"}],fqstring:[{token:"constant.language.escape",regex:k},{token:"string",regex:"'|$",next:"start"},{token:"paren.lparen",regex:"{",push:"fqstringParRules"},{defaultToken:"string"}],rfqqstring3:[{token:"string",regex:'"{3}',next:"start"},{token:"paren.lparen",regex:"{",push:"fqstringParRules"},{defaultToken:"string"}],rfqstring3:[{token:"string",regex:"'{3}",next:"start"},{token:"paren.lparen",regex:"{",push:"fqstringParRules"},{defaultToken:"string"}],rfqqstring:[{token:"string",regex:"\\\\$",next:"rfqqstring"},{token:"string",regex:'"|$',next:"start"},{token:"paren.lparen",regex:"{",push:"fqstringParRules"},{defaultToken:"string"}],rfqstring:[{token:"string",regex:"'|$",next:"start"},{token:"paren.lparen",regex:"{",push:"fqstringParRules"},{defaultToken:"string"}],fqstringParRules:[{token:"paren.lparen",regex:"[\\[\\(]"},{token:"paren.rparen",regex:"[\\]\\)]"},{token:"string",regex:"\\s+"},{token:"string",regex:"'[^']*'"},{token:"string",regex:'"[^"]*"'},{token:"function.support",regex:"(!s|!r|!a)"},{include:"constants"},{token:"paren.rparen",regex:"}",next:"pop"},{token:"paren.lparen",regex:"{",push:"fqstringParRules"}],constants:[{token:"constant.numeric",regex:"(?:"+B+"|\\d+)[jJ]\\b"},{token:"constant.numeric",regex:B},{token:"constant.numeric",regex:b+"[lL]\\b"},{token:"constant.numeric",regex:b+"\\b"},{token:["punctuation","function.support"],regex:"(\\.)([a-zA-Z_]+)\\b"},{token:o,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"}]},this.normalizeRules()};L.inherits(C,T),M.PythonHighlightRules=C}),ace.define("ace/mode/folding/pythonic",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode"],function(n,M,G){"use strict";var L=n("../../lib/oop"),T=n("./fold_mode").FoldMode,C=M.FoldMode=function(d){this.foldingStartMarker=new RegExp("([\\[{])(?:\\s*)$|("+d+")(?:\\s*)(?:#.*)?$")};L.inherits(C,T),function(){this.getFoldWidgetRange=function(d,h,l){var o=d.getLine(l),s=o.match(this.foldingStartMarker);if(s)return s[1]?this.openingBracketBlock(d,s[1],l,s.index):s[2]?this.indentationBlock(d,l,s.index+s[2].length):this.indentationBlock(d,l)}}.call(C.prototype)}),ace.define("ace/mode/python",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/python_highlight_rules","ace/mode/folding/pythonic","ace/range"],function(n,M,G){"use strict";var L=n("../lib/oop"),T=n("./text").Mode,C=n("./python_highlight_rules").PythonHighlightRules,d=n("./folding/pythonic").FoldMode,h=n("../range").Range,l=function(){this.HighlightRules=C,this.foldingRules=new d("\\:"),this.$behaviour=this.$defaultBehaviour};L.inherits(l,T),function(){this.lineCommentStart="#",this.$pairQuotesAfter={"'":/[ruf]/i,'"':/[ruf]/i},this.getNextLineIndent=function(s,i,r){var a=this.$getIndent(i),c=this.getTokenizer().getLineTokens(i,s),p=c.tokens;if(p.length&&p[p.length-1].type=="comment")return a;if(s=="start"){var g=i.match(/^.*[\{\(\[:]\s*$/);g&&(a+=r)}return a};var o={pass:1,return:1,raise:1,break:1,continue:1};this.checkOutdent=function(s,i,r){if(r!==`\r -`&&r!=="\r"&&r!==` -`)return!1;var a=this.getTokenizer().getLineTokens(i.trim(),s).tokens;if(!a)return!1;do var c=a.pop();while(c&&(c.type=="comment"||c.type=="text"&&c.value.match(/^\s+$/)));return c?c.type=="keyword"&&o[c.value]:!1},this.autoOutdent=function(s,i,r){r+=1;var a=this.$getIndent(i.getLine(r)),c=i.getTabString();a.slice(-c.length)==c&&i.remove(new h(r,a.length-c.length,r,a.length))},this.$id="ace/mode/python",this.snippetFileId="ace/snippets/python"}.call(l.prototype),M.Mode=l}),function(){ace.require(["ace/mode/python"],function(n){D&&(D.exports=n)})}()},202:(D,R,f0)=>{D=f0.nmd(D),ace.define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(n,M,G){"use strict";var L=n("../lib/oop"),T=n("./text_highlight_rules").TextHighlightRules,C=function(d){var h="[_:a-zA-Z\xC0-\uFFFF][-_:.a-zA-Z0-9\xC0-\uFFFF]*";this.$rules={start:[{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\[",next:"cdata"},{token:["punctuation.instruction.xml","keyword.instruction.xml"],regex:"(<\\?)("+h+")",next:"processing_instruction"},{token:"comment.start.xml",regex:"<\\!--",next:"comment"},{token:["xml-pe.doctype.xml","xml-pe.doctype.xml"],regex:"(<\\!)(DOCTYPE)(?=[\\s])",next:"doctype",caseInsensitive:!0},{include:"tag"},{token:"text.end-tag-open.xml",regex:"",next:"start"}],doctype:[{include:"whitespace"},{include:"string"},{token:"xml-pe.doctype.xml",regex:">",next:"start"},{token:"xml-pe.xml",regex:"[-_a-zA-Z0-9:]+"},{token:"punctuation.int-subset",regex:"\\[",push:"int_subset"}],int_subset:[{token:"text.xml",regex:"\\s+"},{token:"punctuation.int-subset.xml",regex:"]",next:"pop"},{token:["punctuation.markup-decl.xml","keyword.markup-decl.xml"],regex:"(<\\!)("+h+")",push:[{token:"text",regex:"\\s+"},{token:"punctuation.markup-decl.xml",regex:">",next:"pop"},{include:"string"}]}],cdata:[{token:"string.cdata.xml",regex:"\\]\\]>",next:"start"},{token:"text.xml",regex:"\\s+"},{token:"text.xml",regex:"(?:[^\\]]|\\](?!\\]>))+"}],comment:[{token:"comment.end.xml",regex:"-->",next:"start"},{defaultToken:"comment.xml"}],reference:[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],attr_reference:[{token:"constant.language.escape.reference.attribute-value.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],tag:[{token:["meta.tag.punctuation.tag-open.xml","meta.tag.punctuation.end-tag-open.xml","meta.tag.tag-name.xml"],regex:"(?:(<)|(",next:"start"}]}],tag_whitespace:[{token:"text.tag-whitespace.xml",regex:"\\s+"}],whitespace:[{token:"text.whitespace.xml",regex:"\\s+"}],string:[{token:"string.xml",regex:"'",push:[{token:"string.xml",regex:"'",next:"pop"},{defaultToken:"string.xml"}]},{token:"string.xml",regex:'"',push:[{token:"string.xml",regex:'"',next:"pop"},{defaultToken:"string.xml"}]}],attributes:[{token:"entity.other.attribute-name.xml",regex:h},{token:"keyword.operator.attribute-equals.xml",regex:"="},{include:"tag_whitespace"},{include:"attribute_value"}],attribute_value:[{token:"string.attribute-value.xml",regex:"'",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]}]},this.constructor===C&&this.normalizeRules()};(function(){this.embedTagRules=function(d,h,l){this.$rules.tag.unshift({token:["meta.tag.punctuation.tag-open.xml","meta.tag."+l+".tag-name.xml"],regex:"(<)("+l+"(?=\\s|>|$))",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:h+"start"}]}),this.$rules[l+"-end"]=[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start",onMatch:function(o,s,i){return i.splice(0),this.token}}],this.embedRules(d,h,[{token:["meta.tag.punctuation.end-tag-open.xml","meta.tag."+l+".tag-name.xml"],regex:"(|$))",next:l+"-end"},{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\["},{token:"string.cdata.xml",regex:"\\]\\]>"}])}}).call(T.prototype),L.inherits(C,T),M.XmlHighlightRules=C}),ace.define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(n,M,G){"use strict";var L=n("../../lib/oop"),T=n("../behaviour").Behaviour,C=n("../../token_iterator").TokenIterator,d=n("../../lib/lang");function h(o,s){return o&&o.type.lastIndexOf(s+".xml")>-1}var l=function(){this.add("string_dquotes","insertion",function(o,s,i,r,a){if(a=='"'||a=="'"){var c=a,p=r.doc.getTextRange(i.getSelectionRange());if(p!==""&&p!=="'"&&p!='"'&&i.getWrapBehavioursEnabled())return{text:c+p+c,selection:!1};var g=i.getCursorPosition(),A=r.doc.getLine(g.row),b=A.substring(g.column,g.column+1),$=new C(r,g.row,g.column),S=$.getCurrentToken();if(b==c&&(h(S,"attribute-value")||h(S,"string")))return{text:"",selection:[1,1]};if(S||(S=$.stepBackward()),!S)return;for(;h(S,"tag-whitespace")||h(S,"whitespace");)S=$.stepBackward();var v=!b||b.match(/\s/);if(h(S,"attribute-equals")&&(v||b==">")||h(S,"decl-attribute-equals")&&(v||b=="?"))return{text:c+c,selection:[1,1]}}}),this.add("string_dquotes","deletion",function(o,s,i,r,a){var c=r.doc.getTextRange(a);if(!a.isMultiLine()&&(c=='"'||c=="'")){var p=r.doc.getLine(a.start.row),g=p.substring(a.start.column+1,a.start.column+2);if(g==c)return a.end.column++,a}}),this.add("autoclosing","insertion",function(o,s,i,r,a){if(a==">"){var c=i.getSelectionRange().start,p=new C(r,c.row,c.column),g=p.getCurrentToken()||p.stepBackward();if(!g||!(h(g,"tag-name")||h(g,"tag-whitespace")||h(g,"attribute-name")||h(g,"attribute-equals")||h(g,"attribute-value"))||h(g,"reference.attribute-value"))return;if(h(g,"attribute-value")){var A=p.getCurrentTokenColumn()+g.value.length;if(c.column/.test(r.getLine(c.row).slice(c.column)))return;for(;!h(g,"tag-name");)if(g=p.stepBackward(),g.value=="<"){g=p.stepForward();break}var $=p.getCurrentTokenRow(),S=p.getCurrentTokenColumn();if(h(p.stepBackward(),"end-tag-open"))return;var v=g.value;return $==c.row&&(v=v.substring(0,c.column-S)),this.voidElements.hasOwnProperty(v.toLowerCase())?void 0:{text:">",selection:[1,1]}}}),this.add("autoindent","insertion",function(o,s,i,r,a){if(a==` -`){var c=i.getCursorPosition(),p=r.getLine(c.row),g=new C(r,c.row,c.column),A=g.getCurrentToken();if(A&&A.type.indexOf("tag-close")!==-1){if(A.value=="/>")return;for(;A&&A.type.indexOf("tag-name")===-1;)A=g.stepBackward();if(!A)return;var b=A.value,$=g.getCurrentTokenRow();if(A=g.stepBackward(),!A||A.type.indexOf("end-tag")!==-1)return;if(this.voidElements&&!this.voidElements[b]){var S=r.getTokenAt(c.row,c.column+1),p=r.getLine($),v=this.$getIndent(p),w=v+r.getTabString();return S&&S.value==="-1}(function(){this.getFoldWidget=function(o,s,i){var r=this._getFirstTagInLine(o,i);return r?r.closing||!r.tagName&&r.selfClosing?s==="markbeginend"?"end":"":!r.tagName||r.selfClosing||this.voidElements.hasOwnProperty(r.tagName.toLowerCase())||this._findEndTagInLine(o,i,r.tagName,r.end.column)?"":"start":this.getCommentFoldWidget(o,i)},this.getCommentFoldWidget=function(o,s){return/comment/.test(o.getState(s))&&/";break}return r}else if(l(c,"tag-close"))return r.selfClosing=c.value=="/>",r;r.start.column+=c.value.length}return null},this._findEndTagInLine=function(o,s,i,r){for(var a=o.getTokens(s),c=0,p=0;p"},this.createWorker=function(i){var r=new o(["ace"],"ace/mode/xml_worker","Worker");return r.attachToDocument(i.getDocument()),r.on("error",function(a){i.setAnnotations(a.data)}),r.on("terminate",function(){i.clearAnnotations()}),r},this.$id="ace/mode/xml"}.call(s.prototype),M.Mode=s}),function(){ace.require(["ace/mode/xml"],function(n){D&&(D.exports=n)})}()},203:(D,R,f0)=>{D=f0.nmd(D),ace.define("ace/theme/github-css",["require","exports","module"],function(n,M,G){G.exports=`/* CSS style content from github's default pygments highlighter template. - Cursor and selection styles from textmate.css. */ -.ace-github .ace_gutter { - background: #e8e8e8; - color: #AAA; -} -.ace-github { - background: #fff; - color: #000; -} -.ace-github .ace_keyword { - font-weight: bold; -} -.ace-github .ace_string { - color: #D14; -} -.ace-github .ace_variable.ace_class { - color: teal; -} -.ace-github .ace_constant.ace_numeric { - color: #099; -} -.ace-github .ace_constant.ace_buildin { - color: #0086B3; -} -.ace-github .ace_support.ace_function { - color: #0086B3; -} -.ace-github .ace_comment { - color: #998; - font-style: italic; -} -.ace-github .ace_variable.ace_language { - color: #0086B3; -} -.ace-github .ace_paren { - font-weight: bold; -} -.ace-github .ace_boolean { - font-weight: bold; -} -.ace-github .ace_string.ace_regexp { - color: #009926; - font-weight: normal; -} -.ace-github .ace_variable.ace_instance { - color: teal; -} -.ace-github .ace_constant.ace_language { - font-weight: bold; -} -.ace-github .ace_cursor { - color: black; -} -.ace-github.ace_focus .ace_marker-layer .ace_active-line { - background: rgb(255, 255, 204); -} -.ace-github .ace_marker-layer .ace_active-line { - background: rgb(245, 245, 245); -} -.ace-github .ace_marker-layer .ace_selection { - background: rgb(181, 213, 255); -} -.ace-github.ace_multiselect .ace_selection.ace_start { - box-shadow: 0 0 3px 0px white; -} -/* bold keywords cause cursor issues for some fonts */ -/* this disables bold style for editor and keeps for static highlighter */ -.ace-github.ace_nobold .ace_line > span { - font-weight: normal !important; -} -.ace-github .ace_marker-layer .ace_step { - background: rgb(252, 255, 0); -} -.ace-github .ace_marker-layer .ace_stack { - background: rgb(164, 229, 101); -} -.ace-github .ace_marker-layer .ace_bracket { - margin: -1px 0 0 -1px; - border: 1px solid rgb(192, 192, 192); -} -.ace-github .ace_gutter-active-line { - background-color : rgba(0, 0, 0, 0.07); -} -.ace-github .ace_marker-layer .ace_selected-word { - background: rgb(250, 250, 255); - border: 1px solid rgb(200, 200, 250); -} -.ace-github .ace_invisible { - color: #BFBFBF -} -.ace-github .ace_print-margin { - width: 1px; - background: #e8e8e8; -} -.ace-github .ace_indent-guide { - background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y; -} -.ace-github .ace_indent-guide-active { - background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAAZSURBVHjaYvj///9/hivKyv8BAAAA//8DACLqBhbvk+/eAAAAAElFTkSuQmCC") right repeat-y; -} -`}),ace.define("ace/theme/github",["require","exports","module","ace/theme/github-css","ace/lib/dom"],function(n,M,G){M.isDark=!1,M.cssClass="ace-github",M.cssText=n("./github-css");var L=n("../lib/dom");L.importCssString(M.cssText,M.cssClass,!1)}),function(){ace.require(["ace/theme/github"],function(n){D&&(D.exports=n)})}()},821:(D,R,f0)=>{"use strict";f0.d(R,{Z:()=>C});var n=f0(537),M=f0.n(n),G=f0(645),L=f0.n(G),T=L()(M());T.push([D.id,`.flatpickr-calendar{background:transparent;opacity:0;display:none;text-align:center;visibility:hidden;padding:0;-webkit-animation:none;animation:none;direction:ltr;border:0;font-size:14px;line-height:24px;border-radius:5px;position:absolute;width:307.875px;-webkit-box-sizing:border-box;box-sizing:border-box;-ms-touch-action:manipulation;touch-action:manipulation;background:#fff;-webkit-box-shadow:1px 0 0 #e6e6e6,-1px 0 0 #e6e6e6,0 1px 0 #e6e6e6,0 -1px 0 #e6e6e6,0 3px 13px rgba(0,0,0,0.08);box-shadow:1px 0 0 #e6e6e6,-1px 0 0 #e6e6e6,0 1px 0 #e6e6e6,0 -1px 0 #e6e6e6,0 3px 13px rgba(0,0,0,0.08)}.flatpickr-calendar.open,.flatpickr-calendar.inline{opacity:1;max-height:640px;visibility:visible}.flatpickr-calendar.open{display:inline-block;z-index:99999}.flatpickr-calendar.animate.open{-webkit-animation:fpFadeInDown 300ms cubic-bezier(.23,1,.32,1);animation:fpFadeInDown 300ms cubic-bezier(.23,1,.32,1)}.flatpickr-calendar.inline{display:block;position:relative;top:2px}.flatpickr-calendar.static{position:absolute;top:calc(100% + 2px)}.flatpickr-calendar.static.open{z-index:999;display:block}.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+1) .flatpickr-day.inRange:nth-child(7n+7){-webkit-box-shadow:none !important;box-shadow:none !important}.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+2) .flatpickr-day.inRange:nth-child(7n+1){-webkit-box-shadow:-2px 0 0 #e6e6e6,5px 0 0 #e6e6e6;box-shadow:-2px 0 0 #e6e6e6,5px 0 0 #e6e6e6}.flatpickr-calendar .hasWeeks .dayContainer,.flatpickr-calendar .hasTime .dayContainer{border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.flatpickr-calendar .hasWeeks .dayContainer{border-left:0}.flatpickr-calendar.hasTime .flatpickr-time{height:40px;border-top:1px solid #e6e6e6}.flatpickr-calendar.noCalendar.hasTime .flatpickr-time{height:auto}.flatpickr-calendar:before,.flatpickr-calendar:after{position:absolute;display:block;pointer-events:none;border:solid transparent;content:'';height:0;width:0;left:22px}.flatpickr-calendar.rightMost:before,.flatpickr-calendar.arrowRight:before,.flatpickr-calendar.rightMost:after,.flatpickr-calendar.arrowRight:after{left:auto;right:22px}.flatpickr-calendar.arrowCenter:before,.flatpickr-calendar.arrowCenter:after{left:50%;right:50%}.flatpickr-calendar:before{border-width:5px;margin:0 -5px}.flatpickr-calendar:after{border-width:4px;margin:0 -4px}.flatpickr-calendar.arrowTop:before,.flatpickr-calendar.arrowTop:after{bottom:100%}.flatpickr-calendar.arrowTop:before{border-bottom-color:#e6e6e6}.flatpickr-calendar.arrowTop:after{border-bottom-color:#fff}.flatpickr-calendar.arrowBottom:before,.flatpickr-calendar.arrowBottom:after{top:100%}.flatpickr-calendar.arrowBottom:before{border-top-color:#e6e6e6}.flatpickr-calendar.arrowBottom:after{border-top-color:#fff}.flatpickr-calendar:focus{outline:0}.flatpickr-wrapper{position:relative;display:inline-block}.flatpickr-months{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.flatpickr-months .flatpickr-month{background:transparent;color:rgba(0,0,0,0.9);fill:rgba(0,0,0,0.9);height:34px;line-height:1;text-align:center;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:hidden;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}.flatpickr-months .flatpickr-prev-month,.flatpickr-months .flatpickr-next-month{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;text-decoration:none;cursor:pointer;position:absolute;top:0;height:34px;padding:10px;z-index:3;color:rgba(0,0,0,0.9);fill:rgba(0,0,0,0.9)}.flatpickr-months .flatpickr-prev-month.flatpickr-disabled,.flatpickr-months .flatpickr-next-month.flatpickr-disabled{display:none}.flatpickr-months .flatpickr-prev-month i,.flatpickr-months .flatpickr-next-month i{position:relative}.flatpickr-months .flatpickr-prev-month.flatpickr-prev-month,.flatpickr-months .flatpickr-next-month.flatpickr-prev-month{/* - /*rtl:begin:ignore*/left:0/* - /*rtl:end:ignore*/}/* - /*rtl:begin:ignore*/ -/* - /*rtl:end:ignore*/ -.flatpickr-months .flatpickr-prev-month.flatpickr-next-month,.flatpickr-months .flatpickr-next-month.flatpickr-next-month{/* - /*rtl:begin:ignore*/right:0/* - /*rtl:end:ignore*/}/* - /*rtl:begin:ignore*/ -/* - /*rtl:end:ignore*/ -.flatpickr-months .flatpickr-prev-month:hover,.flatpickr-months .flatpickr-next-month:hover{color:#959ea9}.flatpickr-months .flatpickr-prev-month:hover svg,.flatpickr-months .flatpickr-next-month:hover svg{fill:#f64747}.flatpickr-months .flatpickr-prev-month svg,.flatpickr-months .flatpickr-next-month svg{width:14px;height:14px}.flatpickr-months .flatpickr-prev-month svg path,.flatpickr-months .flatpickr-next-month svg path{-webkit-transition:fill .1s;transition:fill .1s;fill:inherit}.numInputWrapper{position:relative;height:auto}.numInputWrapper input,.numInputWrapper span{display:inline-block}.numInputWrapper input{width:100%}.numInputWrapper input::-ms-clear{display:none}.numInputWrapper input::-webkit-outer-spin-button,.numInputWrapper input::-webkit-inner-spin-button{margin:0;-webkit-appearance:none}.numInputWrapper span{position:absolute;right:0;width:14px;padding:0 4px 0 2px;height:50%;line-height:50%;opacity:0;cursor:pointer;border:1px solid rgba(57,57,57,0.15);-webkit-box-sizing:border-box;box-sizing:border-box}.numInputWrapper span:hover{background:rgba(0,0,0,0.1)}.numInputWrapper span:active{background:rgba(0,0,0,0.2)}.numInputWrapper span:after{display:block;content:"";position:absolute}.numInputWrapper span.arrowUp{top:0;border-bottom:0}.numInputWrapper span.arrowUp:after{border-left:4px solid transparent;border-right:4px solid transparent;border-bottom:4px solid rgba(57,57,57,0.6);top:26%}.numInputWrapper span.arrowDown{top:50%}.numInputWrapper span.arrowDown:after{border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px solid rgba(57,57,57,0.6);top:40%}.numInputWrapper span svg{width:inherit;height:auto}.numInputWrapper span svg path{fill:rgba(0,0,0,0.5)}.numInputWrapper:hover{background:rgba(0,0,0,0.05)}.numInputWrapper:hover span{opacity:1}.flatpickr-current-month{font-size:135%;line-height:inherit;font-weight:300;color:inherit;position:absolute;width:75%;left:12.5%;padding:7.48px 0 0 0;line-height:1;height:34px;display:inline-block;text-align:center;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.flatpickr-current-month span.cur-month{font-family:inherit;font-weight:700;color:inherit;display:inline-block;margin-left:.5ch;padding:0}.flatpickr-current-month span.cur-month:hover{background:rgba(0,0,0,0.05)}.flatpickr-current-month .numInputWrapper{width:6ch;width:7ch\\0;display:inline-block}.flatpickr-current-month .numInputWrapper span.arrowUp:after{border-bottom-color:rgba(0,0,0,0.9)}.flatpickr-current-month .numInputWrapper span.arrowDown:after{border-top-color:rgba(0,0,0,0.9)}.flatpickr-current-month input.cur-year{background:transparent;-webkit-box-sizing:border-box;box-sizing:border-box;color:inherit;cursor:text;padding:0 0 0 .5ch;margin:0;display:inline-block;font-size:inherit;font-family:inherit;font-weight:300;line-height:inherit;height:auto;border:0;border-radius:0;vertical-align:initial;-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.flatpickr-current-month input.cur-year:focus{outline:0}.flatpickr-current-month input.cur-year[disabled],.flatpickr-current-month input.cur-year[disabled]:hover{font-size:100%;color:rgba(0,0,0,0.5);background:transparent;pointer-events:none}.flatpickr-current-month .flatpickr-monthDropdown-months{appearance:menulist;background:transparent;border:none;border-radius:0;box-sizing:border-box;color:inherit;cursor:pointer;font-size:inherit;font-family:inherit;font-weight:300;height:auto;line-height:inherit;margin:-1px 0 0 0;outline:none;padding:0 0 0 .5ch;position:relative;vertical-align:initial;-webkit-box-sizing:border-box;-webkit-appearance:menulist;-moz-appearance:menulist;width:auto}.flatpickr-current-month .flatpickr-monthDropdown-months:focus,.flatpickr-current-month .flatpickr-monthDropdown-months:active{outline:none}.flatpickr-current-month .flatpickr-monthDropdown-months:hover{background:rgba(0,0,0,0.05)}.flatpickr-current-month .flatpickr-monthDropdown-months .flatpickr-monthDropdown-month{background-color:transparent;outline:none;padding:0}.flatpickr-weekdays{background:transparent;text-align:center;overflow:hidden;width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;height:28px}.flatpickr-weekdays .flatpickr-weekdaycontainer{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}span.flatpickr-weekday{cursor:default;font-size:90%;background:transparent;color:rgba(0,0,0,0.54);line-height:1;margin:0;text-align:center;display:block;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;font-weight:bolder}.dayContainer,.flatpickr-weeks{padding:1px 0 0 0}.flatpickr-days{position:relative;overflow:hidden;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:flex-start;width:307.875px}.flatpickr-days:focus{outline:0}.dayContainer{padding:0;outline:0;text-align:left;width:307.875px;min-width:307.875px;max-width:307.875px;-webkit-box-sizing:border-box;box-sizing:border-box;display:inline-block;display:-ms-flexbox;display:-webkit-box;display:-webkit-flex;display:flex;-webkit-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-wrap:wrap;-ms-flex-pack:justify;-webkit-justify-content:space-around;justify-content:space-around;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}.dayContainer + .dayContainer{-webkit-box-shadow:-1px 0 0 #e6e6e6;box-shadow:-1px 0 0 #e6e6e6}.flatpickr-day{background:none;border:1px solid transparent;border-radius:150px;-webkit-box-sizing:border-box;box-sizing:border-box;color:#393939;cursor:pointer;font-weight:400;width:14.2857143%;-webkit-flex-basis:14.2857143%;-ms-flex-preferred-size:14.2857143%;flex-basis:14.2857143%;max-width:39px;height:39px;line-height:39px;margin:0;display:inline-block;position:relative;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;text-align:center}.flatpickr-day.inRange,.flatpickr-day.prevMonthDay.inRange,.flatpickr-day.nextMonthDay.inRange,.flatpickr-day.today.inRange,.flatpickr-day.prevMonthDay.today.inRange,.flatpickr-day.nextMonthDay.today.inRange,.flatpickr-day:hover,.flatpickr-day.prevMonthDay:hover,.flatpickr-day.nextMonthDay:hover,.flatpickr-day:focus,.flatpickr-day.prevMonthDay:focus,.flatpickr-day.nextMonthDay:focus{cursor:pointer;outline:0;background:#e6e6e6;border-color:#e6e6e6}.flatpickr-day.today{border-color:#959ea9}.flatpickr-day.today:hover,.flatpickr-day.today:focus{border-color:#959ea9;background:#959ea9;color:#fff}.flatpickr-day.selected,.flatpickr-day.startRange,.flatpickr-day.endRange,.flatpickr-day.selected.inRange,.flatpickr-day.startRange.inRange,.flatpickr-day.endRange.inRange,.flatpickr-day.selected:focus,.flatpickr-day.startRange:focus,.flatpickr-day.endRange:focus,.flatpickr-day.selected:hover,.flatpickr-day.startRange:hover,.flatpickr-day.endRange:hover,.flatpickr-day.selected.prevMonthDay,.flatpickr-day.startRange.prevMonthDay,.flatpickr-day.endRange.prevMonthDay,.flatpickr-day.selected.nextMonthDay,.flatpickr-day.startRange.nextMonthDay,.flatpickr-day.endRange.nextMonthDay{background:#569ff7;-webkit-box-shadow:none;box-shadow:none;color:#fff;border-color:#569ff7}.flatpickr-day.selected.startRange,.flatpickr-day.startRange.startRange,.flatpickr-day.endRange.startRange{border-radius:50px 0 0 50px}.flatpickr-day.selected.endRange,.flatpickr-day.startRange.endRange,.flatpickr-day.endRange.endRange{border-radius:0 50px 50px 0}.flatpickr-day.selected.startRange + .endRange:not(:nth-child(7n+1)),.flatpickr-day.startRange.startRange + .endRange:not(:nth-child(7n+1)),.flatpickr-day.endRange.startRange + .endRange:not(:nth-child(7n+1)){-webkit-box-shadow:-10px 0 0 #569ff7;box-shadow:-10px 0 0 #569ff7}.flatpickr-day.selected.startRange.endRange,.flatpickr-day.startRange.startRange.endRange,.flatpickr-day.endRange.startRange.endRange{border-radius:50px}.flatpickr-day.inRange{border-radius:0;-webkit-box-shadow:-5px 0 0 #e6e6e6,5px 0 0 #e6e6e6;box-shadow:-5px 0 0 #e6e6e6,5px 0 0 #e6e6e6}.flatpickr-day.flatpickr-disabled,.flatpickr-day.flatpickr-disabled:hover,.flatpickr-day.prevMonthDay,.flatpickr-day.nextMonthDay,.flatpickr-day.notAllowed,.flatpickr-day.notAllowed.prevMonthDay,.flatpickr-day.notAllowed.nextMonthDay{color:rgba(57,57,57,0.3);background:transparent;border-color:transparent;cursor:default}.flatpickr-day.flatpickr-disabled,.flatpickr-day.flatpickr-disabled:hover{cursor:not-allowed;color:rgba(57,57,57,0.1)}.flatpickr-day.week.selected{border-radius:0;-webkit-box-shadow:-5px 0 0 #569ff7,5px 0 0 #569ff7;box-shadow:-5px 0 0 #569ff7,5px 0 0 #569ff7}.flatpickr-day.hidden{visibility:hidden}.rangeMode .flatpickr-day{margin-top:1px}.flatpickr-weekwrapper{float:left}.flatpickr-weekwrapper .flatpickr-weeks{padding:0 12px;-webkit-box-shadow:1px 0 0 #e6e6e6;box-shadow:1px 0 0 #e6e6e6}.flatpickr-weekwrapper .flatpickr-weekday{float:none;width:100%;line-height:28px}.flatpickr-weekwrapper span.flatpickr-day,.flatpickr-weekwrapper span.flatpickr-day:hover{display:block;width:100%;max-width:none;color:rgba(57,57,57,0.3);background:transparent;cursor:default;border:none}.flatpickr-innerContainer{display:block;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden}.flatpickr-rContainer{display:inline-block;padding:0;-webkit-box-sizing:border-box;box-sizing:border-box}.flatpickr-time{text-align:center;outline:0;display:block;height:0;line-height:40px;max-height:40px;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.flatpickr-time:after{content:"";display:table;clear:both}.flatpickr-time .numInputWrapper{-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;width:40%;height:40px;float:left}.flatpickr-time .numInputWrapper span.arrowUp:after{border-bottom-color:#393939}.flatpickr-time .numInputWrapper span.arrowDown:after{border-top-color:#393939}.flatpickr-time.hasSeconds .numInputWrapper{width:26%}.flatpickr-time.time24hr .numInputWrapper{width:49%}.flatpickr-time input{background:transparent;-webkit-box-shadow:none;box-shadow:none;border:0;border-radius:0;text-align:center;margin:0;padding:0;height:inherit;line-height:inherit;color:#393939;font-size:14px;position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.flatpickr-time input.flatpickr-hour{font-weight:bold}.flatpickr-time input.flatpickr-minute,.flatpickr-time input.flatpickr-second{font-weight:400}.flatpickr-time input:focus{outline:0;border:0}.flatpickr-time .flatpickr-time-separator,.flatpickr-time .flatpickr-am-pm{height:inherit;float:left;line-height:inherit;color:#393939;font-weight:bold;width:2%;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-align-self:center;-ms-flex-item-align:center;align-self:center}.flatpickr-time .flatpickr-am-pm{outline:0;width:18%;cursor:pointer;text-align:center;font-weight:400}.flatpickr-time input:hover,.flatpickr-time .flatpickr-am-pm:hover,.flatpickr-time input:focus,.flatpickr-time .flatpickr-am-pm:focus{background:#eee}.flatpickr-input[readonly]{cursor:pointer}@-webkit-keyframes fpFadeInDown{from{opacity:0;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@keyframes fpFadeInDown{from{opacity:0;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}`,"",{version:3,sources:["webpack://./node_modules/flatpickr/dist/flatpickr.min.css"],names:[],mappings:"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",sourcesContent:[`.flatpickr-calendar{background:transparent;opacity:0;display:none;text-align:center;visibility:hidden;padding:0;-webkit-animation:none;animation:none;direction:ltr;border:0;font-size:14px;line-height:24px;border-radius:5px;position:absolute;width:307.875px;-webkit-box-sizing:border-box;box-sizing:border-box;-ms-touch-action:manipulation;touch-action:manipulation;background:#fff;-webkit-box-shadow:1px 0 0 #e6e6e6,-1px 0 0 #e6e6e6,0 1px 0 #e6e6e6,0 -1px 0 #e6e6e6,0 3px 13px rgba(0,0,0,0.08);box-shadow:1px 0 0 #e6e6e6,-1px 0 0 #e6e6e6,0 1px 0 #e6e6e6,0 -1px 0 #e6e6e6,0 3px 13px rgba(0,0,0,0.08)}.flatpickr-calendar.open,.flatpickr-calendar.inline{opacity:1;max-height:640px;visibility:visible}.flatpickr-calendar.open{display:inline-block;z-index:99999}.flatpickr-calendar.animate.open{-webkit-animation:fpFadeInDown 300ms cubic-bezier(.23,1,.32,1);animation:fpFadeInDown 300ms cubic-bezier(.23,1,.32,1)}.flatpickr-calendar.inline{display:block;position:relative;top:2px}.flatpickr-calendar.static{position:absolute;top:calc(100% + 2px)}.flatpickr-calendar.static.open{z-index:999;display:block}.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+1) .flatpickr-day.inRange:nth-child(7n+7){-webkit-box-shadow:none !important;box-shadow:none !important}.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+2) .flatpickr-day.inRange:nth-child(7n+1){-webkit-box-shadow:-2px 0 0 #e6e6e6,5px 0 0 #e6e6e6;box-shadow:-2px 0 0 #e6e6e6,5px 0 0 #e6e6e6}.flatpickr-calendar .hasWeeks .dayContainer,.flatpickr-calendar .hasTime .dayContainer{border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.flatpickr-calendar .hasWeeks .dayContainer{border-left:0}.flatpickr-calendar.hasTime .flatpickr-time{height:40px;border-top:1px solid #e6e6e6}.flatpickr-calendar.noCalendar.hasTime .flatpickr-time{height:auto}.flatpickr-calendar:before,.flatpickr-calendar:after{position:absolute;display:block;pointer-events:none;border:solid transparent;content:'';height:0;width:0;left:22px}.flatpickr-calendar.rightMost:before,.flatpickr-calendar.arrowRight:before,.flatpickr-calendar.rightMost:after,.flatpickr-calendar.arrowRight:after{left:auto;right:22px}.flatpickr-calendar.arrowCenter:before,.flatpickr-calendar.arrowCenter:after{left:50%;right:50%}.flatpickr-calendar:before{border-width:5px;margin:0 -5px}.flatpickr-calendar:after{border-width:4px;margin:0 -4px}.flatpickr-calendar.arrowTop:before,.flatpickr-calendar.arrowTop:after{bottom:100%}.flatpickr-calendar.arrowTop:before{border-bottom-color:#e6e6e6}.flatpickr-calendar.arrowTop:after{border-bottom-color:#fff}.flatpickr-calendar.arrowBottom:before,.flatpickr-calendar.arrowBottom:after{top:100%}.flatpickr-calendar.arrowBottom:before{border-top-color:#e6e6e6}.flatpickr-calendar.arrowBottom:after{border-top-color:#fff}.flatpickr-calendar:focus{outline:0}.flatpickr-wrapper{position:relative;display:inline-block}.flatpickr-months{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.flatpickr-months .flatpickr-month{background:transparent;color:rgba(0,0,0,0.9);fill:rgba(0,0,0,0.9);height:34px;line-height:1;text-align:center;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:hidden;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}.flatpickr-months .flatpickr-prev-month,.flatpickr-months .flatpickr-next-month{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;text-decoration:none;cursor:pointer;position:absolute;top:0;height:34px;padding:10px;z-index:3;color:rgba(0,0,0,0.9);fill:rgba(0,0,0,0.9)}.flatpickr-months .flatpickr-prev-month.flatpickr-disabled,.flatpickr-months .flatpickr-next-month.flatpickr-disabled{display:none}.flatpickr-months .flatpickr-prev-month i,.flatpickr-months .flatpickr-next-month i{position:relative}.flatpickr-months .flatpickr-prev-month.flatpickr-prev-month,.flatpickr-months .flatpickr-next-month.flatpickr-prev-month{/* - /*rtl:begin:ignore*/left:0/* - /*rtl:end:ignore*/}/* - /*rtl:begin:ignore*/ -/* - /*rtl:end:ignore*/ -.flatpickr-months .flatpickr-prev-month.flatpickr-next-month,.flatpickr-months .flatpickr-next-month.flatpickr-next-month{/* - /*rtl:begin:ignore*/right:0/* - /*rtl:end:ignore*/}/* - /*rtl:begin:ignore*/ -/* - /*rtl:end:ignore*/ -.flatpickr-months .flatpickr-prev-month:hover,.flatpickr-months .flatpickr-next-month:hover{color:#959ea9}.flatpickr-months .flatpickr-prev-month:hover svg,.flatpickr-months .flatpickr-next-month:hover svg{fill:#f64747}.flatpickr-months .flatpickr-prev-month svg,.flatpickr-months .flatpickr-next-month svg{width:14px;height:14px}.flatpickr-months .flatpickr-prev-month svg path,.flatpickr-months .flatpickr-next-month svg path{-webkit-transition:fill .1s;transition:fill .1s;fill:inherit}.numInputWrapper{position:relative;height:auto}.numInputWrapper input,.numInputWrapper span{display:inline-block}.numInputWrapper input{width:100%}.numInputWrapper input::-ms-clear{display:none}.numInputWrapper input::-webkit-outer-spin-button,.numInputWrapper input::-webkit-inner-spin-button{margin:0;-webkit-appearance:none}.numInputWrapper span{position:absolute;right:0;width:14px;padding:0 4px 0 2px;height:50%;line-height:50%;opacity:0;cursor:pointer;border:1px solid rgba(57,57,57,0.15);-webkit-box-sizing:border-box;box-sizing:border-box}.numInputWrapper span:hover{background:rgba(0,0,0,0.1)}.numInputWrapper span:active{background:rgba(0,0,0,0.2)}.numInputWrapper span:after{display:block;content:"";position:absolute}.numInputWrapper span.arrowUp{top:0;border-bottom:0}.numInputWrapper span.arrowUp:after{border-left:4px solid transparent;border-right:4px solid transparent;border-bottom:4px solid rgba(57,57,57,0.6);top:26%}.numInputWrapper span.arrowDown{top:50%}.numInputWrapper span.arrowDown:after{border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px solid rgba(57,57,57,0.6);top:40%}.numInputWrapper span svg{width:inherit;height:auto}.numInputWrapper span svg path{fill:rgba(0,0,0,0.5)}.numInputWrapper:hover{background:rgba(0,0,0,0.05)}.numInputWrapper:hover span{opacity:1}.flatpickr-current-month{font-size:135%;line-height:inherit;font-weight:300;color:inherit;position:absolute;width:75%;left:12.5%;padding:7.48px 0 0 0;line-height:1;height:34px;display:inline-block;text-align:center;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.flatpickr-current-month span.cur-month{font-family:inherit;font-weight:700;color:inherit;display:inline-block;margin-left:.5ch;padding:0}.flatpickr-current-month span.cur-month:hover{background:rgba(0,0,0,0.05)}.flatpickr-current-month .numInputWrapper{width:6ch;width:7ch\\0;display:inline-block}.flatpickr-current-month .numInputWrapper span.arrowUp:after{border-bottom-color:rgba(0,0,0,0.9)}.flatpickr-current-month .numInputWrapper span.arrowDown:after{border-top-color:rgba(0,0,0,0.9)}.flatpickr-current-month input.cur-year{background:transparent;-webkit-box-sizing:border-box;box-sizing:border-box;color:inherit;cursor:text;padding:0 0 0 .5ch;margin:0;display:inline-block;font-size:inherit;font-family:inherit;font-weight:300;line-height:inherit;height:auto;border:0;border-radius:0;vertical-align:initial;-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.flatpickr-current-month input.cur-year:focus{outline:0}.flatpickr-current-month input.cur-year[disabled],.flatpickr-current-month input.cur-year[disabled]:hover{font-size:100%;color:rgba(0,0,0,0.5);background:transparent;pointer-events:none}.flatpickr-current-month .flatpickr-monthDropdown-months{appearance:menulist;background:transparent;border:none;border-radius:0;box-sizing:border-box;color:inherit;cursor:pointer;font-size:inherit;font-family:inherit;font-weight:300;height:auto;line-height:inherit;margin:-1px 0 0 0;outline:none;padding:0 0 0 .5ch;position:relative;vertical-align:initial;-webkit-box-sizing:border-box;-webkit-appearance:menulist;-moz-appearance:menulist;width:auto}.flatpickr-current-month .flatpickr-monthDropdown-months:focus,.flatpickr-current-month .flatpickr-monthDropdown-months:active{outline:none}.flatpickr-current-month .flatpickr-monthDropdown-months:hover{background:rgba(0,0,0,0.05)}.flatpickr-current-month .flatpickr-monthDropdown-months .flatpickr-monthDropdown-month{background-color:transparent;outline:none;padding:0}.flatpickr-weekdays{background:transparent;text-align:center;overflow:hidden;width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;height:28px}.flatpickr-weekdays .flatpickr-weekdaycontainer{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}span.flatpickr-weekday{cursor:default;font-size:90%;background:transparent;color:rgba(0,0,0,0.54);line-height:1;margin:0;text-align:center;display:block;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;font-weight:bolder}.dayContainer,.flatpickr-weeks{padding:1px 0 0 0}.flatpickr-days{position:relative;overflow:hidden;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:flex-start;width:307.875px}.flatpickr-days:focus{outline:0}.dayContainer{padding:0;outline:0;text-align:left;width:307.875px;min-width:307.875px;max-width:307.875px;-webkit-box-sizing:border-box;box-sizing:border-box;display:inline-block;display:-ms-flexbox;display:-webkit-box;display:-webkit-flex;display:flex;-webkit-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-wrap:wrap;-ms-flex-pack:justify;-webkit-justify-content:space-around;justify-content:space-around;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}.dayContainer + .dayContainer{-webkit-box-shadow:-1px 0 0 #e6e6e6;box-shadow:-1px 0 0 #e6e6e6}.flatpickr-day{background:none;border:1px solid transparent;border-radius:150px;-webkit-box-sizing:border-box;box-sizing:border-box;color:#393939;cursor:pointer;font-weight:400;width:14.2857143%;-webkit-flex-basis:14.2857143%;-ms-flex-preferred-size:14.2857143%;flex-basis:14.2857143%;max-width:39px;height:39px;line-height:39px;margin:0;display:inline-block;position:relative;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;text-align:center}.flatpickr-day.inRange,.flatpickr-day.prevMonthDay.inRange,.flatpickr-day.nextMonthDay.inRange,.flatpickr-day.today.inRange,.flatpickr-day.prevMonthDay.today.inRange,.flatpickr-day.nextMonthDay.today.inRange,.flatpickr-day:hover,.flatpickr-day.prevMonthDay:hover,.flatpickr-day.nextMonthDay:hover,.flatpickr-day:focus,.flatpickr-day.prevMonthDay:focus,.flatpickr-day.nextMonthDay:focus{cursor:pointer;outline:0;background:#e6e6e6;border-color:#e6e6e6}.flatpickr-day.today{border-color:#959ea9}.flatpickr-day.today:hover,.flatpickr-day.today:focus{border-color:#959ea9;background:#959ea9;color:#fff}.flatpickr-day.selected,.flatpickr-day.startRange,.flatpickr-day.endRange,.flatpickr-day.selected.inRange,.flatpickr-day.startRange.inRange,.flatpickr-day.endRange.inRange,.flatpickr-day.selected:focus,.flatpickr-day.startRange:focus,.flatpickr-day.endRange:focus,.flatpickr-day.selected:hover,.flatpickr-day.startRange:hover,.flatpickr-day.endRange:hover,.flatpickr-day.selected.prevMonthDay,.flatpickr-day.startRange.prevMonthDay,.flatpickr-day.endRange.prevMonthDay,.flatpickr-day.selected.nextMonthDay,.flatpickr-day.startRange.nextMonthDay,.flatpickr-day.endRange.nextMonthDay{background:#569ff7;-webkit-box-shadow:none;box-shadow:none;color:#fff;border-color:#569ff7}.flatpickr-day.selected.startRange,.flatpickr-day.startRange.startRange,.flatpickr-day.endRange.startRange{border-radius:50px 0 0 50px}.flatpickr-day.selected.endRange,.flatpickr-day.startRange.endRange,.flatpickr-day.endRange.endRange{border-radius:0 50px 50px 0}.flatpickr-day.selected.startRange + .endRange:not(:nth-child(7n+1)),.flatpickr-day.startRange.startRange + .endRange:not(:nth-child(7n+1)),.flatpickr-day.endRange.startRange + .endRange:not(:nth-child(7n+1)){-webkit-box-shadow:-10px 0 0 #569ff7;box-shadow:-10px 0 0 #569ff7}.flatpickr-day.selected.startRange.endRange,.flatpickr-day.startRange.startRange.endRange,.flatpickr-day.endRange.startRange.endRange{border-radius:50px}.flatpickr-day.inRange{border-radius:0;-webkit-box-shadow:-5px 0 0 #e6e6e6,5px 0 0 #e6e6e6;box-shadow:-5px 0 0 #e6e6e6,5px 0 0 #e6e6e6}.flatpickr-day.flatpickr-disabled,.flatpickr-day.flatpickr-disabled:hover,.flatpickr-day.prevMonthDay,.flatpickr-day.nextMonthDay,.flatpickr-day.notAllowed,.flatpickr-day.notAllowed.prevMonthDay,.flatpickr-day.notAllowed.nextMonthDay{color:rgba(57,57,57,0.3);background:transparent;border-color:transparent;cursor:default}.flatpickr-day.flatpickr-disabled,.flatpickr-day.flatpickr-disabled:hover{cursor:not-allowed;color:rgba(57,57,57,0.1)}.flatpickr-day.week.selected{border-radius:0;-webkit-box-shadow:-5px 0 0 #569ff7,5px 0 0 #569ff7;box-shadow:-5px 0 0 #569ff7,5px 0 0 #569ff7}.flatpickr-day.hidden{visibility:hidden}.rangeMode .flatpickr-day{margin-top:1px}.flatpickr-weekwrapper{float:left}.flatpickr-weekwrapper .flatpickr-weeks{padding:0 12px;-webkit-box-shadow:1px 0 0 #e6e6e6;box-shadow:1px 0 0 #e6e6e6}.flatpickr-weekwrapper .flatpickr-weekday{float:none;width:100%;line-height:28px}.flatpickr-weekwrapper span.flatpickr-day,.flatpickr-weekwrapper span.flatpickr-day:hover{display:block;width:100%;max-width:none;color:rgba(57,57,57,0.3);background:transparent;cursor:default;border:none}.flatpickr-innerContainer{display:block;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden}.flatpickr-rContainer{display:inline-block;padding:0;-webkit-box-sizing:border-box;box-sizing:border-box}.flatpickr-time{text-align:center;outline:0;display:block;height:0;line-height:40px;max-height:40px;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.flatpickr-time:after{content:"";display:table;clear:both}.flatpickr-time .numInputWrapper{-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;width:40%;height:40px;float:left}.flatpickr-time .numInputWrapper span.arrowUp:after{border-bottom-color:#393939}.flatpickr-time .numInputWrapper span.arrowDown:after{border-top-color:#393939}.flatpickr-time.hasSeconds .numInputWrapper{width:26%}.flatpickr-time.time24hr .numInputWrapper{width:49%}.flatpickr-time input{background:transparent;-webkit-box-shadow:none;box-shadow:none;border:0;border-radius:0;text-align:center;margin:0;padding:0;height:inherit;line-height:inherit;color:#393939;font-size:14px;position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.flatpickr-time input.flatpickr-hour{font-weight:bold}.flatpickr-time input.flatpickr-minute,.flatpickr-time input.flatpickr-second{font-weight:400}.flatpickr-time input:focus{outline:0;border:0}.flatpickr-time .flatpickr-time-separator,.flatpickr-time .flatpickr-am-pm{height:inherit;float:left;line-height:inherit;color:#393939;font-weight:bold;width:2%;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-align-self:center;-ms-flex-item-align:center;align-self:center}.flatpickr-time .flatpickr-am-pm{outline:0;width:18%;cursor:pointer;text-align:center;font-weight:400}.flatpickr-time input:hover,.flatpickr-time .flatpickr-am-pm:hover,.flatpickr-time input:focus,.flatpickr-time .flatpickr-am-pm:focus{background:#eee}.flatpickr-input[readonly]{cursor:pointer}@-webkit-keyframes fpFadeInDown{from{opacity:0;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@keyframes fpFadeInDown{from{opacity:0;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}`],sourceRoot:""}]);const C=T},645:D=>{"use strict";D.exports=function(R){var f0=[];return f0.toString=function(){return this.map(function(M){var G="",L=typeof M[5]!="undefined";return M[4]&&(G+="@supports (".concat(M[4],") {")),M[2]&&(G+="@media ".concat(M[2]," {")),L&&(G+="@layer".concat(M[5].length>0?" ".concat(M[5]):""," {")),G+=R(M),L&&(G+="}"),M[2]&&(G+="}"),M[4]&&(G+="}"),G}).join("")},f0.i=function(M,G,L,T,C){typeof M=="string"&&(M=[[null,M,void 0]]);var d={};if(L)for(var h=0;h0?" ".concat(s[5]):""," {").concat(s[1],"}")),s[5]=C),G&&(s[2]&&(s[1]="@media ".concat(s[2]," {").concat(s[1],"}")),s[2]=G),T&&(s[4]?(s[1]="@supports (".concat(s[4],") {").concat(s[1],"}"),s[4]=T):s[4]="".concat(T)),f0.push(s))}},f0}},537:D=>{"use strict";D.exports=function(R){var f0=R[1],n=R[3];if(!n)return f0;if(typeof btoa=="function"){var M=btoa(unescape(encodeURIComponent(JSON.stringify(n)))),G="sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(M),L="/*# ".concat(G," */");return[f0].concat([L]).join(` -`)}return[f0].join(` -`)}},745:(D,R,f0)=>{"use strict";var n,M=f0(137);if(1)R.s=M.createRoot,n=M.hydrateRoot;else var G},590:D=>{var R=typeof Element!="undefined",f0=typeof Map=="function",n=typeof Set=="function",M=typeof ArrayBuffer=="function"&&!!ArrayBuffer.isView;function G(L,T){if(L===T)return!0;if(L&&T&&typeof L=="object"&&typeof T=="object"){if(L.constructor!==T.constructor)return!1;var C,d,h;if(Array.isArray(L)){if(C=L.length,C!=T.length)return!1;for(d=C;d--!==0;)if(!G(L[d],T[d]))return!1;return!0}var l;if(f0&&L instanceof Map&&T instanceof Map){if(L.size!==T.size)return!1;for(l=L.entries();!(d=l.next()).done;)if(!T.has(d.value[0]))return!1;for(l=L.entries();!(d=l.next()).done;)if(!G(d.value[1],T.get(d.value[0])))return!1;return!0}if(n&&L instanceof Set&&T instanceof Set){if(L.size!==T.size)return!1;for(l=L.entries();!(d=l.next()).done;)if(!T.has(d.value[0]))return!1;return!0}if(M&&ArrayBuffer.isView(L)&&ArrayBuffer.isView(T)){if(C=L.length,C!=T.length)return!1;for(d=C;d--!==0;)if(L[d]!==T[d])return!1;return!0}if(L.constructor===RegExp)return L.source===T.source&&L.flags===T.flags;if(L.valueOf!==Object.prototype.valueOf&&typeof L.valueOf=="function"&&typeof T.valueOf=="function")return L.valueOf()===T.valueOf();if(L.toString!==Object.prototype.toString&&typeof L.toString=="function"&&typeof T.toString=="function")return L.toString()===T.toString();if(h=Object.keys(L),C=h.length,C!==Object.keys(T).length)return!1;for(d=C;d--!==0;)if(!Object.prototype.hasOwnProperty.call(T,h[d]))return!1;if(R&&L instanceof Element)return!1;for(d=C;d--!==0;)if(!((h[d]==="_owner"||h[d]==="__v"||h[d]==="__o")&&L.$$typeof)&&!G(L[h[d]],T[h[d]]))return!1;return!0}return L!==L&&T!==T}D.exports=function(T,C){try{return G(T,C)}catch(d){if((d.message||"").match(/stack|recursion/i))return console.warn("react-fast-compare cannot handle circular refs"),!1;throw d}}},379:D=>{"use strict";var R=[];function f0(G){for(var L=-1,T=0;T{"use strict";var R={};function f0(M){if(typeof R[M]=="undefined"){var G=document.querySelector(M);if(window.HTMLIFrameElement&&G instanceof window.HTMLIFrameElement)try{G=G.contentDocument.head}catch(L){G=null}R[M]=G}return R[M]}function n(M,G){var L=f0(M);if(!L)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");L.appendChild(G)}D.exports=n},216:D=>{"use strict";function R(f0){var n=document.createElement("style");return f0.setAttributes(n,f0.attributes),f0.insert(n,f0.options),n}D.exports=R},565:(D,R,f0)=>{"use strict";function n(M){var G=f0.nc;G&&M.setAttribute("nonce",G)}D.exports=n},795:D=>{"use strict";function R(M,G,L){var T="";L.supports&&(T+="@supports (".concat(L.supports,") {")),L.media&&(T+="@media ".concat(L.media," {"));var C=typeof L.layer!="undefined";C&&(T+="@layer".concat(L.layer.length>0?" ".concat(L.layer):""," {")),T+=L.css,C&&(T+="}"),L.media&&(T+="}"),L.supports&&(T+="}");var d=L.sourceMap;d&&typeof btoa!="undefined"&&(T+=` -/*# sourceMappingURL=data:application/json;base64,`.concat(btoa(unescape(encodeURIComponent(JSON.stringify(d))))," */")),G.styleTagTransform(T,M,G.options)}function f0(M){if(M.parentNode===null)return!1;M.parentNode.removeChild(M)}function n(M){if(typeof document=="undefined")return{update:function(){},remove:function(){}};var G=M.insertStyleElement(M);return{update:function(T){R(G,M,T)},remove:function(){f0(G)}}}D.exports=n},589:D=>{"use strict";function R(f0,n){if(n.styleSheet)n.styleSheet.cssText=f0;else{for(;n.firstChild;)n.removeChild(n.firstChild);n.appendChild(document.createTextNode(f0))}}D.exports=R},137:D=>{"use strict";D.exports=require("react-dom")}},L5={};function O0(D){var R=L5[D];if(R!==void 0)return R.exports;var f0=L5[D]={id:D,loaded:!1,exports:{}};return f2[D](f0,f0.exports,O0),f0.loaded=!0,f0.exports}O0.amdD=function(){throw new Error("define cannot be used indirect")},O0.n=D=>{var R=D&&D.__esModule?()=>D.default:()=>D;return O0.d(R,{a:R}),R},O0.d=(D,R)=>{for(var f0 in R)O0.o(R,f0)&&!O0.o(D,f0)&&Object.defineProperty(D,f0,{enumerable:!0,get:R[f0]})},O0.o=(D,R)=>Object.prototype.hasOwnProperty.call(D,R),O0.r=D=>{typeof Symbol!="undefined"&&Symbol.toStringTag&&Object.defineProperty(D,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(D,"__esModule",{value:!0})},O0.nmd=D=>(D.paths=[],D.children||(D.children=[]),D),O0.p="",O0.nc=void 0;var p2={};(()=>{"use strict";O0.r(p2),O0.d(p2,{Accordion:()=>w0,Button:()=>j0,ButtonGroup:()=>S5,Chart:()=>n5,Checkbox:()=>$9,CodeEditor:()=>D2,Collapsible:()=>m0,Column:()=>O9,Combobox:()=>j2,Combobox2:()=>V2,Confirm:()=>D6,CopyToClipboard:()=>L6,DatePicker:()=>U2,Dropdown:()=>B7,EditableList:()=>Y2,EditableList2:()=>k4,FieldCodeEditor:()=>b3,FieldCombobox:()=>A3,FieldCombobox2:()=>oo,FieldDatePicker:()=>fo,FieldDropdown:()=>S3,FieldEditableList:()=>W3,FieldFileInput:()=>V3,FieldInput:()=>Y3,FieldMultiselect:()=>Q3,FieldPagination:()=>Qi,FieldSelect:()=>t6,FieldSelectableList:()=>i6,FieldToggle:()=>a6,FileInput:()=>W9,FixedWrapper:()=>W6,FloatingContainer:()=>w9,FormikCheckbox:()=>ci,FormikCodeEditor:()=>ui,FormikCombobox:()=>hi,FormikCombobox2:()=>di,FormikDatePicker:()=>fi,FormikEditableList:()=>pi,FormikEditableList2:()=>gi,FormikFileInput:()=>mi,FormikInput:()=>vi,FormikInput2:()=>yi,FormikMultiselect:()=>bi,FormikRadio:()=>wi,FormikSelect:()=>Ci,FormikSelectableList:()=>Ai,FormikStringBuilder:()=>Si,FormikTextarea:()=>ki,FormikToggle:()=>xi,FormikWrapper:()=>c5,Icon:()=>a,InfiniteScroller:()=>b9,InfoNote:()=>U6,Input:()=>z9,Input2:()=>L4,List:()=>C2,Loader:()=>_0,Message:()=>D0,Modal:()=>y9,Multiselect:()=>q2,NavBar:()=>K6,Navigation:()=>X6,Pagination:()=>S9,Panel:()=>o8,Pill:()=>e7,Radio:()=>e1,RevealPanel:()=>l8,Row:()=>a9,Select:()=>G9,SelectableList:()=>r1,StringBuilder:()=>c3,Table:()=>Y8,Tabs:()=>v8,TextEllipsis:()=>w8,Textarea:()=>Z4,Toggle:()=>i1,Tooltip:()=>R2,setConfig:()=>ri,toast:()=>m2,useComponentSize:()=>I,useEventListener:()=>y,useInterval:()=>k,usePrevious:()=>w,useTimeout:()=>B});const D=require("react");var R=O0.n(D);const f0=require("prop-types");var n=O0.n(f0);const G=(0,D.createContext)(),T=(0,D.createContext)();var C=Object.defineProperty,d=Object.getOwnPropertySymbols,h=Object.prototype.hasOwnProperty,l=Object.prototype.propertyIsEnumerable,o=(u,e,t)=>e in u?C(u,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):u[e]=t,s=(u,e)=>{for(var t in e||(e={}))h.call(e,t)&&o(u,t,e[t]);if(d)for(var t of d(e))l.call(e,t)&&o(u,t,e[t]);return u},i=(u,e)=>{var t={};for(var f in u)h.call(u,f)&&e.indexOf(f)<0&&(t[f]=u[f]);if(u!=null&&d)for(var f of d(u))e.indexOf(f)<0&&l.call(u,f)&&(t[f]=u[f]);return t};function r(u){var e=u,{className:t,family:f,type:x}=e,P=i(e,["className","family","type"]);function F(){const H=f||"fa";return["tyk-icon",H,`${H}-${x}`,t].filter(Boolean).join(" ")}return R().createElement("i",s({className:F()},P))}r.propTypes={className:n().string,family:n().string,type:n().string.isRequired};const a=r;function c({wrap:u}){const{collapsed:e,disabled:t,toggleChange:f}=(0,D.useContext)(T),x=e?"chevron-down":"chevron-up",P=["tyk-accordion__trigger",t&&"tyk-accordion__trigger--disabled"].filter(Boolean).join(" "),F=R().createElement("button",{className:P,onClick:f,type:"button"},R().createElement(a,{className:"collapsable__arrow",type:x}));return u?R().createElement("div",{className:"tyk-accordion__trigger-wrapper"},F):F}c.propTypes={wrap:n().bool};const p=c;function g({collapsed:u,children:e,className:t,disabled:f},x){const{arrow:P}=(0,D.useContext)(G),[F,H]=(0,D.useState)(u),V=()=>{f||H(!F)},K=(0,D.useMemo)(()=>["tyk-accordion__item",P.expandToContent?`tyk-accordion__item--trigger-position-${P.position}`:"tyk-accordion__item--trigger-in-header",t,F===!1&&"tyk-accordion__item--active"].filter(Boolean).join(" "),[P,t,F]),X=(0,D.useMemo)(()=>({collapsed:F,disabled:f,toggleChange:V}),[F,f,V]);return R().createElement("div",{ref:x,className:K},R().createElement(T.Provider,{value:X},P.expandToContent&&R().createElement(p,{wrap:!0}),e))}g.propTypes={children:n().oneOfType([n().arrayOf(n().node),n().node,n().element,n().string]),collapsed:n().bool,className:n().string,disabled:n().bool},g.defaultProps={collapsed:!1};const A=(0,D.forwardRef)(g);function b({className:u,children:e}){const{collapsed:t,disabled:f,toggleChange:x}=(0,D.useContext)(T),{usearrowastrigger:P,arrow:F}=(0,D.useContext)(G),H=t?"chevron-down":"chevron-up",V=["tyk-accordion__item-header",P&&"tyk-accordion__arrow-trigger",u].filter(Boolean).join(" ");return R().createElement("div",{className:V},P?R().createElement(R().Fragment,null,!F.expandToContent&&F.position==="left"&&R().createElement(p,null),R().createElement("div",null,e),!F.expandToContent&&F.position==="right"&&R().createElement(p,null)):R().createElement("button",{className:f?"tyk-accordion__trigger--disabled":"",onClick:x,type:"button"},R().createElement("span",null,e),R().createElement(a,{className:"collapsable__arrow",type:H})))}b.propTypes={children:n().oneOfType([n().arrayOf(n().node),n().node,n().element,n().string]),className:n().string};const $=b,S=require("react-transition-group"),w=u=>{const e=(0,D.useRef)();return(0,D.useEffect)(()=>{e.current=u},[u]),e.current},B=(u,e)=>{const t=(0,D.useRef)();(0,D.useEffect)(()=>{t.current=u},[u]),(0,D.useEffect)(()=>{function f(){t.current()}if(e!==null){const x=setTimeout(f,e);return()=>clearTimeout(x)}return()=>{}},[e])};function k(u,e,...t){const f=(0,D.useRef)();(0,D.useEffect)(()=>{f.current=u},[u]),(0,D.useEffect)(()=>{function x(){f.current(...t)}if(e!=null){const P=setInterval(x,e);return()=>clearInterval(P)}},[e])}const y=(u,e,t)=>{const f=(0,D.useRef)();(0,D.useEffect)(()=>{f.current=e},[e]),(0,D.useEffect)(()=>{if(!(t==null?void 0:t.addEventListener))return;const P=F=>f.current(F);return t.addEventListener(u,P),()=>{t.removeEventListener(u,P)}},[u,t])},m=u=>u?{width:u.offsetWidth,height:u.offsetHeight}:{width:0,height:0},I=u=>{const[e,t]=(0,D.useState)(m(u?u.current:{})),f=(0,D.useCallback)(()=>{u.current&&t(m(u.current))},[u]);return(0,D.useLayoutEffect)(()=>{f();let x=new ResizeObserver(()=>{f()});return x.observe(u.current),()=>{x.disconnect(u.current),x=null}},[u.current]),e};var N=Object.defineProperty,W=Object.defineProperties,z=Object.getOwnPropertyDescriptors,U=Object.getOwnPropertySymbols,j=Object.prototype.hasOwnProperty,q=Object.prototype.propertyIsEnumerable,Y=(u,e,t)=>e in u?N(u,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):u[e]=t,t0=(u,e)=>{for(var t in e||(e={}))j.call(e,t)&&Y(u,t,e[t]);if(U)for(var t of U(e))q.call(e,t)&&Y(u,t,e[t]);return u},n0=(u,e)=>W(u,z(e)),u0=(u,e)=>{var t={};for(var f in u)j.call(u,f)&&e.indexOf(f)<0&&(t[f]=u[f]);if(u!=null&&U)for(var f of U(u))e.indexOf(f)<0&&q.call(u,f)&&(t[f]=u[f]);return t};function h0(u){var e=u,{className:t,collapsed:f,children:x}=e,P=u0(e,["className","collapsed","children"]);const F=(0,D.useRef)(null),H=(0,D.useRef)(null),V=I(F),[K,X]=(0,D.useState)({height:f?0:"auto"}),e0=c0=>{X({height:`${c0}px`})},Z=()=>F.current?F.current.clientHeight:0,Q=()=>{e0(Z())},i0=()=>{e0(0)};(0,D.useEffect)(()=>{!f&&(V!=null&&V.height)&&K.height!==(V==null?void 0:V.height)&&e0(V.height)},[V.height]);const J=(0,D.useCallback)(()=>{!f&&F.current&&(e0(Z()),H.current.style.height=`${Z()}px`)},[f,F.current]);return y("resize",J,window),R().createElement(S.CSSTransition,{onEnter:Q,onExit:i0,in:!f,timeout:0,classNames:"collapse"},R().createElement("div",{className:"collapse-wrapper",ref:H,style:K},R().createElement("div",n0(t0({},P),{className:t,ref:F}),x)))}h0.propTypes={children:n().oneOfType([n().element,n().node,n().string]),collapsed:n().bool,className:n().string};const m0=h0;function p0({children:u,className:e}){const{collapsed:t}=(0,D.useContext)(T),f=["tyk-accordion__item-content",e].filter(Boolean).join(" ");return R().createElement("div",{className:f},R().createElement(m0,{collapsed:t},u))}p0.propTypes={children:n().oneOfType([n().arrayOf(n().node),n().node,n().element,n().string]),className:n().string};const b0=p0;function k0({className:u,children:e,usearrowastrigger:t,arrow:f={position:"right",expandToContent:!1}}){const x=["tyk-accordion",u].filter(Boolean).join(" "),P=(0,D.useMemo)(()=>({usearrowastrigger:t,arrow:f}),[t,f]);return R().createElement("div",{className:x},R().createElement(G.Provider,{value:P},e))}k0.propTypes={children:n().oneOfType([n().arrayOf(n().node),n().node,n().element,n().string]),className:n().string,usearrowastrigger:n().bool,arrow:n().shape({position:n().oneOf(["left","right"]),expandToContent:n().bool})},k0.defaultProps={usearrowastrigger:!1},k0.Item=A,k0.Item.Header=$,k0.Item.Content=b0;const w0=k0;var H0=Object.defineProperty,N0=Object.getOwnPropertySymbols,z0=Object.prototype.hasOwnProperty,M0=Object.prototype.propertyIsEnumerable,Y0=(u,e,t)=>e in u?H0(u,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):u[e]=t,m5=(u,e)=>{for(var t in e||(e={}))z0.call(e,t)&&Y0(u,t,e[t]);if(N0)for(var t of N0(e))M0.call(e,t)&&Y0(u,t,e[t]);return u},k5=(u,e)=>{var t={};for(var f in u)z0.call(u,f)&&e.indexOf(f)<0&&(t[f]=u[f]);if(u!=null&&N0)for(var f of N0(u))e.indexOf(f)<0&&M0.call(u,f)&&(t[f]=u[f]);return t};const f5=R().forwardRef((u,e)=>{const t=u,{customButton:f,children:x,iconType:P,iconFamily:F,iconPosition:H,iconOnly:V,id:K,className:X,disabled:e0,display:Z,href:Q,onClick:i0,noStyle:J,size:c0,theme:r0,type:o0}=t,g0=k5(t,["customButton","children","iconType","iconFamily","iconPosition","iconOnly","id","className","disabled","display","href","onClick","noStyle","size","theme","type"]),y0=()=>{const S0=["tyk-button"].concat(X?X.split(" "):[]),B0=c0?`tyk-button--${c0}`:"tyk-button--md",I0=e0?"disabled":"",v0=Z||"",l0=r0?`tyk-button--${r0}`:"",s0=V?"tyk-button--icon-only":"",C0=J?"tyk-button--no-style":"";return S0.push(s0),S0.push(l0),S0.push(B0),S0.push(I0),S0.push(v0),S0.push(C0),P&&S0.push(`icon-${H||"left"}`),S0.join(" ")},L0=S0=>P&&(H||"left")===S0?R().createElement(a,{family:F,type:P}):null;return(()=>{let S0;return f?R().createElement(D.Fragment,null,(0,D.cloneElement)(f,{className:y0(),disabled:e0})):(Q?S0=R().createElement("a",m5({id:K,className:y0(),disabled:e0,onClick:i0,href:Q,ref:e},g0),L0("left"),x,L0("right")):S0=R().createElement("button",m5({id:K,className:y0(),disabled:e0,onClick:i0,type:o0||"button",ref:e},g0),L0("left"),x&&R().createElement("span",null,x),L0("right")),S0)})()});f5.propTypes={children:n().oneOfType([n().arrayOf(n().node),n().node,n().element,n().string]),customButton:n().oneOfType([n().arrayOf(n().node),n().node,n().element]),className:n().string,display:n().string,disabled:n().bool,id:n().string,href:n().string,iconPosition:n().string,iconFamily:n().string,iconOnly:n().bool,iconType:n().string,noStyle:n().bool,onClick:n().func,theme:n().string,type:n().string,size:n().string},f5.defaultProps={theme:"",type:"button"};const j0=f5;function l5({className:u,children:e,label:t}){return R().createElement("div",{className:`tyk-button-group__wrapper ${u}`},!!t&&R().createElement("label",null,t),R().createElement("div",{className:"tyk-button-group"},e))}l5.propTypes={children:n().oneOfType([n().arrayOf(n().node),n().node,n().element,n().string]),className:n().string,label:n().string};const S5=l5,y5=require("echarts"),W0=require("immutable"),a0=(u,e,t)=>{let f;return function(...P){const F=this,H=()=>{f=null,t||u.apply(F,P)},V=t&&!f;clearTimeout(f),f=setTimeout(H,e),V&&u.apply(F,P)}};function x0({className:u,position:e="relative",withbackground:t=!1}){const f=["loading",e,u].filter(Boolean).join(" "),x=R().createElement("div",{className:f},R().createElement("div",{className:"loading-bar"}),R().createElement("div",{className:"loading-bar"}),R().createElement("div",{className:"loading-bar"}),R().createElement("div",{className:"loading-bar"}));return t?R().createElement("div",{className:"tyk-loading__wrapper"},x):x}x0.propTypes={className:n().string,position:n().string,withbackground:n().bool};const _0=x0;function F0({children:u,theme:e,onClose:t,noMargin:f,className:x}){function P(){return["tyk-message",`tyk-message--${e||"info"}`,f&&"no-margin",x].filter(Boolean).join(" ")}const F=e==="success"?"check":"warning";return R().createElement("div",{className:P()},R().createElement(a,{family:"tykon",type:F}),R().createElement("div",{className:"tyk-message__content"},u),t&&R().createElement(a,{family:"tykon",type:"x",onClick:t}))}F0.propTypes={theme:n().string,children:n().oneOfType([n().element,n().node,n().string]),className:n().string,noMargin:n().bool,onClose:n().func};const D0=F0,t5=JSON.parse(`{"type":"FeatureCollection","crs":{"type":"name","properties":{"name":"urn:ogc:def:crs:OGC:1.3:CRS84"}},"features":[{"geometry":{"type":"Polygon","coordinates":[[[47.97822265625001,7.9970703125],[46.97822265625001,7.9970703125],[43.98378906250002,9.008837890624989],[43.482519531250006,9.379492187499991],[43.181640625,9.879980468749991],[42.84160156250002,10.203076171874997],[42.65644531250001,10.6],[42.92275390625002,10.999316406249989],[43.24599609375002,11.499804687499989],[43.85273437500001,10.784277343749991],[44.38652343750002,10.430224609374989],[44.94296875,10.43671875],[45.81669921875002,10.835888671874997],[46.565039062500006,10.745996093749994],[47.40498046875001,11.174023437499997],[48.01923828125001,11.139355468749997],[48.57255859375002,11.320507812499997],[48.938574218750006,11.258447265624994],[50.11005859375001,11.529296875],[50.79228515625002,11.983691406249989],[51.2548828125,11.830712890624994],[51.08427734375002,11.335644531249997],[51.140625,10.656884765624994],[51.031835937500006,10.444775390624997],[51.19296875,10.554638671874997],[51.390234375,10.422607421875],[50.93007812500002,10.33554687499999],[50.825,9.428173828124997],[50.10283203125002,8.199804687499991],[49.85205078125,7.962548828124994],[49.234960937500006,6.77734375],[49.04931640625,6.173632812499989],[47.97529296875001,4.497021484374997],[46.87880859375002,3.28564453125],[46.05117187500002,2.475146484374989],[44.92021484375002,1.81015625],[43.71757812500002,0.857861328124997],[41.97988281250002,-0.973046875],[41.53271484375,-1.6953125],[41.521875,-1.572265625],[41.42695312500001,-1.449511718750003],[41.24980468750002,-1.220507812500003],[40.97871093750001,-0.870312500000011],[40.964453125,2.814648437499997],[41.341796875,3.20166015625],[41.61347656250001,3.590478515624994],[41.88398437500001,3.977734375],[41.91533203125002,4.031298828124989],[42.02412109375001,4.137939453125],[42.85664062500001,4.32421875],[43.12568359375001,4.644482421874997],[43.58349609375,4.85498046875],[43.988867187500006,4.950537109374991],[44.940527343750006,4.912011718749994],[47.97822265625001,7.9970703125]]]},"properties":{"name":"Somalia","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[9.579979133936737,47.05856388629306],[9.409458596647225,47.02019676540292],[9.46249431093294,47.09010747968864],[9.46249431093294,47.19858962254578],[9.527658197470123,47.27026989773668],[9.579979133936737,47.05856388629306]]]},"properties":{"name":"Liechtenstein","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-8.683349609375,27.77800740805682],[-13.038761787013554,27.81190166624856],[-12.948925781249926,27.914160156250034],[-11.552685546874955,28.31010742187496],[-10.486474609374994,29.06494140625],[-10.200585937499994,29.380371093750057],[-9.667089843749949,30.10927734375005],[-9.652929687499977,30.447558593750045],[-9.875488281249943,30.717919921874966],[-9.80869140624992,31.42460937499996],[-9.347460937499932,32.086376953124955],[-9.245849609375,32.572460937499955],[-8.512841796874994,33.25244140625003],[-6.900976562499949,33.96904296874999],[-6.353125,34.77607421875001],[-5.924804687499943,35.78579101562502],[-5.277832031249943,35.90273437500002],[-5.252685546874972,35.61474609374997],[-4.628320312499966,35.206396484375006],[-4.329980468749937,35.161474609375006],[-3.693261718749994,35.27998046874998],[-3.394726562499926,35.21181640625005],[-2.972216796874989,35.40727539062499],[-2.839941406249949,35.127832031249994],[-2.731396484374955,35.13520507812498],[-2.636816406249977,35.11269531250002],[-2.423730468749994,35.12348632812498],[-2.219628906249966,35.10419921874998],[-1.795605468749926,34.751904296874955],[-1.67919921875,33.31865234375002],[-1.550732421874955,33.073583984375006],[-1.510009765625,32.877636718749955],[-1.45,32.784814453124966],[-1.352148437499977,32.70336914062497],[-1.29638671875,32.67568359375002],[-1.188232421875,32.608496093750006],[-1.111035156249983,32.55229492187502],[-1.065527343749949,32.46831054687496],[-1.16259765625,32.399169921875],[-1.275341796874983,32.089013671874966],[-2.863427734374937,32.07470703124997],[-2.930859374999926,32.04252929687499],[-2.988232421874983,31.874218749999983],[-3.01738281249996,31.834277343750017],[-3.439794921874949,31.704541015624983],[-3.604589843749949,31.686767578125],[-3.700244140624989,31.70009765625005],[-3.768164062499977,31.689550781250034],[-3.837109374999983,31.512353515624994],[-3.833398437499937,31.197802734375045],[-3.626904296874955,31.000927734374983],[-4.148779296874977,30.8095703125],[-4.322851562500006,30.698876953124994],[-4.52915039062492,30.62553710937499],[-4.778515624999926,30.552392578124994],[-4.968261718749943,30.465380859375045],[-5.061914062499937,30.326416015625057],[-5.180126953124955,30.166162109374994],[-5.293652343749983,30.058642578125045],[-5.44877929687496,29.956933593750023],[-6.00429687499999,29.83125],[-6.479736328124943,29.82036132812499],[-6.520556640624989,29.659863281249983],[-6.59775390624992,29.578955078125006],[-6.635351562499949,29.568798828124983],[-6.755126953125,29.583837890625034],[-6.855566406249949,29.601611328125017],[-7.142431640624949,29.61958007812504],[-7.427685546874983,29.425],[-7.485742187499994,29.392236328124994],[-8.659912109375,28.718603515625063],[-8.683349609375,27.900390625],[-8.683349609375,27.77800740805682]]]},"properties":{"name":"Morocco","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-13.038761787013554,27.81190166624856],[-8.683349609375,27.77800740805682],[-8.683349609375,27.65644531250004],[-8.817822265624955,27.65644531250004],[-8.817822265624951,27.656445312499997],[-8.683349609375,27.656445312499997],[-8.683349609375,27.2859375],[-8.682861328125,26.921337890624997],[-8.6826171875,26.72314453125],[-8.682324218749983,26.497705078124994],[-8.68212890625,26.273193359375],[-8.68212890625,26.10947265625],[-8.682226562499977,25.995507812499994],[-12.016308593749983,25.995410156250003],[-12.016308593749983,25.740136718749994],[-12.016308593749983,25.331689453124994],[-12.016308593749983,25.059375],[-12.016308593749983,24.923242187499994],[-12.016308593749983,24.378662109375],[-12.016308593749983,23.97021484375],[-12.0234375,23.467578125],[-12.372900390624977,23.318017578124994],[-12.559375,23.290820312500003],[-12.620410156249989,23.27133789062499],[-13.031494140625,23.000244140625],[-13.153271484374983,22.820507812499997],[-13.12702845982141,22.703770926339278],[-13.136540684091575,22.708182548616723],[-13.094335937499977,22.495996093749994],[-13.051220703124983,21.854785156250003],[-13.041748046875,21.713818359374997],[-13.0322265625,21.572070312500003],[-13.025097656249983,21.466796875],[-13.016210937499977,21.333935546874997],[-15.231201171875,21.331298828125],[-16.964550781249983,21.329248046874994],[-17.06396484375,20.89882812499999],[-17.048046874999983,20.80615234375],[-17.098779296874994,20.856884765624997],[-16.930859374999983,21.9],[-16.35874023437495,22.594531250000045],[-16.21025390624999,23.097900390625],[-15.789257812499926,23.792871093750023],[-15.980712890624943,23.670312500000023],[-15.899316406249966,23.844433593749955],[-14.904296875000028,24.719775390625017],[-14.794921874999943,25.404150390625006],[-14.413867187499932,26.25371093749999],[-13.57578125,26.735107421875],[-13.175976562499983,27.655712890624983],[-13.038761787013554,27.81190166624856]],[[-8.774365234374983,27.460546875],[-8.794873046874983,27.120703125000034],[-8.794873046874983,27.120703125],[-8.774365234374983,27.460546875]]]},"properties":{"name":"W. Sahara","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[21.5625,42.247509765625],[21.560839843750017,42.24765625],[21.389550781250023,42.21982421875],[21.28662109375,42.100390625],[21.05976562500001,42.171289062499994],[20.778125,42.071044921875],[20.725,41.87353515625],[20.566210937500017,41.873681640624994],[20.485449218750006,42.223388671875],[20.06396484375,42.54726562499999],[20.054296875,42.760058593749996],[20.344335937500006,42.827929687499996],[20.40996305279786,42.84373166741877],[20.344335937500063,42.82792968750002],[19.670996093750006,43.163964843749994],[19.21875,43.449951171875],[19.196484375000068,43.48500976562502],[19.19160156250004,43.52104492187499],[19.19433593749997,43.533300781250006],[19.495117187500057,43.642871093750045],[19.245019531249994,43.96503906250004],[19.583789062500017,44.04345703125003],[19.118457031250074,44.359960937500006],[19.348632812500057,44.88090820312502],[19.007128906250045,44.86918945312502],[19.062890625000023,45.13720703125],[19.4,45.2125],[19.004687500000074,45.39951171875006],[19.064257812500045,45.51499023437506],[18.839062499999983,45.83574218750002],[18.905371093750006,45.931738281250034],[19.421289062500023,46.064453125],[19.61347656250001,46.169189453125],[19.84443359375001,46.145898437499966],[19.934082031250057,46.161474609375034],[20.161425781250017,46.14189453124996],[20.210156250000068,46.12602539062502],[20.241796875000034,46.10859375000001],[20.301367187500006,46.05068359375002],[20.35859375000004,45.975488281249994],[20.581152343749977,45.86948242187506],[20.65273437499999,45.779394531250006],[20.709277343750074,45.735253906249994],[20.727832031250017,45.73740234374998],[20.746875,45.74897460937501],[20.76015625000005,45.75810546875002],[20.775,45.74980468750002],[20.794042968750006,45.467871093750034],[21.431445312500017,45.192529296874994],[21.465429687500006,45.171875],[21.357031250000034,44.99077148437502],[21.532324218750063,44.900683593750045],[21.519921875000023,44.88081054687498],[21.442187500000074,44.87338867187498],[21.384375,44.87006835937501],[21.357910156250057,44.86181640625003],[21.36005859375004,44.82666015624997],[21.52314453125004,44.79008789062499],[21.63613281250005,44.71044921875],[21.909277343750034,44.666113281250034],[22.026953125,44.61987304687503],[22.093066406250074,44.541943359374955],[22.200976562500017,44.560693359374966],[22.350683593750063,44.676123046875034],[22.497656249999977,44.70625],[22.64208984375,44.65097656249998],[22.720898437499983,44.605517578125045],[22.734375,44.56992187499998],[22.700781250000063,44.55551757812498],[22.620117187500057,44.562353515625034],[22.554003906250017,44.54033203124999],[22.49453125000005,44.43544921875002],[22.687890625000023,44.248291015625],[22.42080078125005,44.00742187500006],[22.399023437500063,43.96953125],[22.36542968750004,43.86210937500002],[22.36962890625003,43.78129882812499],[22.55458984375005,43.45449218750002],[22.767578125,43.35415039062502],[22.81972656250005,43.300732421874955],[22.85957031250001,43.252343749999966],[22.97685546874999,43.18798828125],[22.799902343750006,42.985742187499994],[22.706152343750006,42.88393554687505],[22.466796875,42.842480468749955],[22.53242187500004,42.48120117187497],[22.523535156250006,42.440966796875045],[22.44570312500005,42.35913085937497],[22.42207031250004,42.32885742187503],[22.344042968750045,42.31396484375003],[22.23974609375003,42.303110028468716],[21.81464843750001,42.303125],[21.5625,42.24750976562498],[21.5625,42.247509765625]]]},"properties":{"name":"Serbia","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[74.54140625000002,37.02216796875],[74.03886718750002,36.825732421874996],[73.116796875,36.868554687499994],[72.24980468750002,36.734716796875],[71.23291015625,36.12177734375],[71.18505859375,36.04208984375],[71.57197265625001,35.546826171875],[71.62050781250002,35.183007812499994],[70.965625,34.53037109375],[71.095703125,34.369433593749996],[71.05156250000002,34.049707031249994],[70.65400390625001,33.952294921874994],[69.8896484375,34.007275390625],[70.26113281250002,33.289013671875],[69.5015625,33.020068359374996],[69.24140625000001,32.433544921875],[69.279296875,31.936816406249996],[68.86894531250002,31.634228515624997],[68.59765625,31.802978515625],[68.16103515625002,31.802978515625],[67.57822265625,31.506494140624994],[67.737890625,31.343945312499997],[67.45283203125001,31.234619140625],[66.82929687500001,31.263671875],[66.346875,30.802783203124996],[66.23125,29.86572265625],[65.09550781250002,29.559472656249994],[64.39375,29.544335937499994],[64.09873046875,29.391943359375],[63.56757812500001,29.497998046874997],[62.4765625,29.408349609374994],[62.0009765625,29.530419921874994],[61.22441406250002,29.749414062499994],[60.843359375,29.858691406249996],[61.331640625,30.363720703124997],[61.55947265625002,30.599365234375],[61.7841796875,30.831933593749994],[61.81083984375002,30.91328125],[61.81425781250002,31.072558593749996],[61.75507812500001,31.285302734374994],[61.66015625,31.382421875],[61.34648437500002,31.421630859375],[61.11074218750002,31.451123046874997],[60.854101562500006,31.483251953125],[60.82070312500002,31.495166015624996],[60.791601562500006,31.660595703124997],[60.804296875,31.73447265625],[60.7875,31.877197265625],[60.78994140625002,31.987109375],[60.827246093750006,32.16796875],[60.82929687500001,32.249414062499994],[60.71044921875,32.6],[60.57656250000002,32.994873046875],[60.560546875,33.137841796874994],[60.9169921875,33.505224609375],[60.573828125,33.588330078125],[60.4859375,33.7119140625],[60.48574218750002,34.094775390624996],[60.642675781250006,34.307177734374996],[60.88945312500002,34.31943359375],[60.80390625000001,34.418017578124996],[60.76259765625002,34.475244140624994],[60.73613281250002,34.491796875],[60.72626953125001,34.51826171875],[60.73945312500001,34.544726562499996],[60.80234375,34.554638671875],[60.8453125,34.587695312499996],[60.91474609375001,34.633984375],[60.951171875,34.653857421874996],[61.080078125,34.855615234374994],[61.1,35.272314453125],[61.18925781250002,35.31201171875],[61.24550781250002,35.474072265625],[61.27851562500001,35.51376953125],[61.281835937500006,35.55341796875],[61.26201171875002,35.619580078125],[61.3447265625,35.6294921875],[61.62099609375002,35.43232421875],[62.08964843750002,35.3796875],[62.30781250000001,35.170800781249994],[62.688085937500006,35.255322265625],[63.056640625,35.44580078125],[63.08417968750001,35.56806640625],[63.16972656250002,35.678125],[63.129980468750006,35.84619140625],[63.8625,36.012353515624994],[64.184375,36.14892578125],[64.51103515625002,36.340673828125],[64.56582031250002,36.427587890625],[64.6025390625,36.554541015625],[64.78242187500001,37.05927734375],[64.81630859375002,37.132080078125],[64.95156250000002,37.1935546875],[65.08964843750002,37.237939453124994],[65.30361328125002,37.24677734375],[65.55498046875002,37.251171875],[65.76503906250002,37.569140625],[66.471875,37.3447265625],[66.52226562500002,37.348486328125],[66.827734375,37.3712890625],[67.06884765625,37.334814453125],[67.19550781250001,37.235205078125],[67.31972656250002,37.2095703125],[67.44169921875002,37.2580078125],[67.51728515625001,37.266650390624996],[67.546484375,37.235644531249996],[67.607421875,37.222509765625],[67.7,37.22724609375],[67.7529296875,37.1998046875],[67.75898437500001,37.172216796875],[67.76601562500002,37.14013671875],[67.83447265625,37.064208984375],[67.9580078125,36.972021484375],[68.06777343750002,36.9498046875],[68.26093750000001,37.013085937499994],[68.284765625,37.036328125],[68.29951171875001,37.088427734374996],[68.38691406250001,37.1375],[68.66914062500001,37.2583984375],[68.7232421875,37.268017578125],[68.78203125000002,37.2580078125],[68.82373046875,37.270703125],[68.8384765625,37.30283203125],[68.85537109375002,37.316845703125],[68.88525390625,37.328076171875],[68.91181640625001,37.333935546875],[68.96044921875,37.325048828125],[69.18017578125,37.15830078125],[69.26484375000001,37.1083984375],[69.30390625000001,37.116943359375],[69.35380859375002,37.150048828124994],[69.41445312500002,37.207763671875],[69.4296875,37.290869140625],[69.39921875000002,37.399316406249994],[69.42011718750001,37.48671875],[69.49208984375002,37.553076171875],[69.62578125000002,37.594042968749996],[69.8208984375,37.6095703125],[69.9849609375,37.566162109375],[70.18867187500001,37.582470703125],[70.25146484375,37.66416015625],[70.25498046875,37.765380859375],[70.19941406250001,37.886035156249996],[70.21464843750002,37.9244140625],[70.41777343750002,38.075439453125],[70.7359375,38.42255859375],[71.255859375,38.306982421875],[71.33271484375001,38.170263671875],[71.27851562500001,37.918408203125],[71.319921875,37.90185546875],[71.3896484375,37.906298828124996],[71.48779296875,37.931884765625],[71.55195312500001,37.933154296874996],[71.58222656250001,37.910107421875],[71.43291015625002,37.1275390625],[71.530859375,36.845117187499994],[71.665625,36.696923828124994],[72.65742187500001,37.029052734375],[72.8955078125,37.267529296875],[73.21113281250001,37.408496093749996],[73.38291015625,37.462255859375],[73.48134765625002,37.4716796875],[73.60468750000001,37.446044921875],[73.65712890625002,37.43046875],[73.72060546875002,37.41875],[73.73378906250002,37.37578125],[73.71728515625,37.329443359375],[73.6275390625,37.261572265625],[73.65351562500001,37.23935546875],[73.749609375,37.231787109375],[74.16708984375,37.329443359375],[74.20351562500002,37.372460937499994],[74.25966796875002,37.415429687499994],[74.659375,37.394482421875],[74.73056640625,37.35703125],[74.83046875000002,37.2859375],[74.89130859375001,37.231640625],[74.84023437500002,37.225048828125],[74.76738281250002,37.249169921874994],[74.73896484375001,37.28564453125],[74.72666015625,37.29072265625],[74.6689453125,37.26669921875],[74.55898437500002,37.236621093749996],[74.37216796875,37.15771484375],[74.37617187500001,37.137353515624994],[74.49794921875002,37.0572265625],[74.52646484375,37.030664062499994],[74.54140625000002,37.02216796875]]]},"properties":{"name":"Afghanistan","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[17.57958984375,-8.099023437500009],[17.643359375000017,-8.090722656250009],[18.00878906250003,-8.107617187499983],[18.56269531250001,-7.9359375],[18.944433593750063,-8.001464843750028],[19.142675781250034,-8.001464843750028],[19.34082031249997,-7.966601562500031],[19.369921875000045,-7.706542968749986],[19.371679687500063,-7.655078124999989],[19.47988281250008,-7.472167968750028],[19.48378906250008,-7.279492187500026],[19.527636718750017,-7.144433593749952],[19.87519531250004,-6.986328124999986],[19.99746093750008,-6.976464843750023],[20.190039062500063,-6.9462890625],[20.482226562500074,-6.915820312500017],[20.59003906250001,-6.919921874999957],[20.598730468750006,-6.935156249999949],[20.536914062500045,-7.121777343749955],[20.535839843749983,-7.182812499999955],[20.558398437500045,-7.244433593749989],[20.60781250000008,-7.277734375000023],[20.910937500000017,-7.281445312499983],[21.190332031250023,-7.284960937499989],[21.751074218750034,-7.305468749999989],[21.80605468750005,-7.32861328125],[21.905371093750034,-8.693359374999943],[21.813183593750068,-9.46875],[22.19775390625,-10.040625],[22.30703125000005,-10.691308593750023],[22.203515625000023,-10.829492187500009],[22.226171875,-11.121972656250009],[22.27880859375,-11.19414062499996],[22.314941406250057,-11.198632812499994],[22.39296875000005,-11.159472656250003],[22.486132812500045,-11.086718750000017],[22.56103515625003,-11.05585937500004],[22.814746093750017,-11.08027343750004],[23.076269531250006,-11.087890624999986],[23.463964843750034,-10.969335937499991],[23.83388671875008,-11.013671874999972],[23.96650390625001,-10.871777343750011],[23.98388671875,-11.725],[23.909375,-12.636132812500009],[23.886523437500045,-12.743261718749991],[23.882421875,-12.799023437499983],[23.968066406250045,-12.956933593749994],[23.962988281250006,-12.988476562500026],[23.843164062500023,-13.0009765625],[22.209570312500006,-13.0009765625],[21.97890625000008,-13.0009765625],[21.979101562500034,-13.798730468749994],[21.979296875000074,-14.11962890625],[21.979394531249994,-14.440527343750006],[21.97978515624999,-15.955566406250014],[22.193945312500006,-16.628125],[23.380664062500017,-17.640625],[22.32421875,-17.8375],[20.74550781250008,-18.019726562499983],[20.194335937500057,-17.86367187499999],[18.95527343750004,-17.80351562499999],[18.39638671875005,-17.3994140625],[16.14843750000003,-17.39023437499999],[14.017480468750023,-17.40888671874997],[13.475976562500023,-17.04003906249997],[13.179492187500017,-16.971679687499986],[12.548144531250017,-17.212695312499974],[12.35927734375008,-17.205859375],[12.318457031250006,-17.21337890625003],[12.213378906250028,-17.209960937500043],[12.013964843750074,-17.168554687500034],[11.902539062500011,-17.226562499999957],[11.743066406250023,-17.24921875000004],[11.780078125000017,-16.87128906249997],[11.818945312500034,-16.704101562500014],[11.750878906250023,-15.831933593749966],[12.016113281250057,-15.513671874999957],[12.55048828125004,-13.437792968750003],[12.983203124999989,-12.775683593750017],[13.4169921875,-12.52041015624998],[13.597949218750017,-12.286132812500028],[13.785351562499983,-11.81279296874996],[13.833593750000063,-10.9296875],[13.33222656250004,-9.998925781250009],[12.99853515625,-9.048046875],[13.358984375,-8.687207031250026],[13.378515625000063,-8.369726562500006],[12.82343750000004,-6.954785156249955],[12.283300781250063,-6.12431640624996],[13.184375,-5.85625],[13.346484375000017,-5.863378906250006],[13.978515625,-5.857226562500003],[16.315234375000074,-5.865625],[16.431445312500045,-5.90019531249996],[16.53710937499997,-5.9658203125],[16.697265625,-6.164257812500026],[16.74296874999999,-6.618457031250003],[16.813085937500063,-6.772558593749963],[16.919433593750057,-6.93398437499998],[16.98476562500005,-7.257421874999977],[17.57958984375,-8.099023437500009]]],[[[12.50146484375,-4.5875],[12.848144531250028,-4.428906249999983],[12.881054687500068,-4.445117187499989],[12.971386718750068,-4.551757812499957],[13.048046875000068,-4.619238281250034],[13.072753906250028,-4.634765625],[13.057324218750011,-4.651074218750026],[12.947460937500011,-4.695312499999986],[12.829687499999977,-4.73662109374996],[12.451464843750017,-5.071484374999969],[12.453222656250034,-5.090625],[12.52236328125008,-5.148925781250028],[12.484570312500011,-5.71875],[12.213671875000074,-5.758691406249994],[12.177148437499994,-5.324804687499977],[12.018359375000074,-5.004296874999966],[12.50146484375,-4.5875]]]]},"properties":{"name":"Angola","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[20.06396484375,42.54726562499999],[20.485449218750006,42.223388671875],[20.566210937500017,41.873681640624994],[20.48896484375001,41.272607421874994],[20.709277343750017,40.928369140624994],[20.964257812500023,40.849902343749996],[20.95576171875001,40.775292968749994],[21.030859375,40.622460937499994],[20.881640625000017,40.467919921874994],[20.65742187500001,40.1173828125],[20.4560546875,40.065576171874994],[20.408007812500017,40.049462890624994],[20.383691406250023,40.0171875],[20.338476562500006,39.991064453125],[20.311132812500006,39.979443359375],[20.311328125000017,39.95078125],[20.381640625000017,39.841796875],[20.382421875,39.802636718749994],[20.206835937500017,39.653515625],[20.13105468750001,39.66162109375],[20.05976562500001,39.699121093749994],[20.022558593750006,39.710693359375],[20.001269531250017,39.709423828125],[19.851855468750017,40.0435546875],[19.322265625,40.407080078125],[19.45917968750001,40.40537109375],[19.3375,40.663818359375],[19.57568359375,41.640429687499996],[19.577539062500023,41.7875],[19.342382812500006,41.869091796875],[19.280664062500023,42.17255859375],[19.65449218750001,42.628564453124994],[19.78828125000001,42.476171875],[20.06396484375,42.54726562499999]]]},"properties":{"name":"Albania","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[19.66230468750001,60.187158203124994],[19.53652343750005,60.14497070312501],[19.551367187500063,60.24384765625001],[19.66230468750001,60.187158203124994]]],[[[19.989550781250074,60.351171875],[20.258886718750063,60.26127929687499],[19.799804687500057,60.08173828125001],[19.68691406250005,60.267626953125045],[19.84765625000003,60.22055664062506],[19.823046875000074,60.390185546875045],[19.989550781250074,60.351171875]]]]},"properties":{"name":"Aland","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[1.7060546875,42.503320312499994],[1.534082031250023,42.441699218749996],[1.448828125,42.437451171875],[1.428125,42.46132812499999],[1.414843750000017,42.548388671874996],[1.428320312500006,42.5958984375],[1.501367187500023,42.642724609374994],[1.568164062500017,42.635009765625],[1.709863281250023,42.604443359375],[1.739453125000011,42.575927734375],[1.740234375,42.55673828125],[1.713964843750006,42.525634765625],[1.7060546875,42.503320312499994]]]},"properties":{"name":"Andorra","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[53.927832031250006,24.177197265624983],[53.63447265625004,24.169775390624977],[53.83378906250002,24.258935546875023],[53.927832031250006,24.177197265624983]]],[[[53.3322265625001,24.258593750000045],[53.19091796874997,24.290917968749966],[53.412402343750074,24.411035156250023],[53.3322265625001,24.258593750000045]]],[[[56.29785156250003,25.650683593750045],[56.38798828125002,24.97919921875004],[56.06386718750005,24.73876953125],[56.00058593750006,24.953222656249977],[55.795703125000074,24.868115234374955],[55.76083984375006,24.24267578125],[55.92861328125005,24.215136718750074],[55.98515625000002,24.063378906249966],[55.4684570312501,23.94111328125001],[55.53164062499999,23.81904296875001],[55.1999023437501,23.034765625000034],[55.185839843750074,22.7041015625],[55.104296875000074,22.621484375000023],[52.55507812500005,22.932812499999955],[51.592578125000074,24.07885742187503],[51.56835937500003,24.286181640625074],[51.76757812500003,24.25439453125],[51.84316406250005,24.010888671875023],[52.118554687499994,23.97109375],[52.64824218750002,24.154638671875006],[53.80175781249997,24.069482421874966],[54.14794921875003,24.17119140624999],[54.39707031250006,24.278173828125034],[54.74677734375004,24.810449218750023],[55.94121093750002,25.793994140625017],[56.08046875,26.06264648437505],[56.16748046875003,26.047460937499977],[56.144628906250006,25.690527343750006],[56.29785156250003,25.650683593750045]]]]},"properties":{"name":"United Arab Emirates","childNum":3}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-64.54916992187498,-54.71621093749998],[-63.81542968749997,-54.725097656250014],[-64.637353515625,-54.90253906250001],[-64.75732421875,-54.82656249999999],[-64.54916992187498,-54.71621093749998]]],[[[-68.65322265624994,-54.85361328124999],[-68.62993164062499,-52.65263671875004],[-68.24013671875,-53.08183593749999],[-68.43115234375,-53.0552734375],[-68.48852539062497,-53.260937499999976],[-68.16113281249997,-53.30644531250001],[-68.00849609374995,-53.5640625],[-67.29423828125002,-54.049804687500014],[-66.23564453124999,-54.53349609374997],[-65.17900390624993,-54.678125],[-65.47114257812495,-54.91464843749999],[-66.5111328125,-55.032128906249945],[-67.127099609375,-54.90380859375001],[-68.65322265624994,-54.85361328124999]]],[[[-61.084716796875,-23.65644531250001],[-60.83984375000003,-23.85810546874997],[-59.89248046874994,-24.093554687499974],[-59.18725585937497,-24.56230468749999],[-57.82167968749994,-25.136425781249983],[-57.56313476562494,-25.473730468749963],[-57.943115234375,-26.05292968750001],[-58.18149414062498,-26.30742187499999],[-58.222070312499994,-26.65],[-58.618603515624955,-27.13212890624996],[-58.64174804687494,-27.196093750000017],[-58.60483398437498,-27.314355468750037],[-58.16826171874993,-27.27343749999997],[-56.437158203124966,-27.553808593749977],[-56.16406250000003,-27.321484374999983],[-55.95146484374996,-27.325683593749957],[-55.789990234374926,-27.416406249999966],[-55.71464843749996,-27.41484375],[-55.632910156250006,-27.35712890624997],[-55.59379882812502,-27.288085937500014],[-55.597265625,-27.207617187499963],[-55.56489257812498,-27.15],[-55.496728515624966,-27.11533203124999],[-55.45063476562498,-27.068359375000014],[-55.426660156249994,-27.00927734374997],[-55.13593750000001,-26.931152343749957],[-54.934472656249994,-26.70253906250001],[-54.677734375,-26.308789062499997],[-54.631933593750006,-26.005761718749994],[-54.615869140624994,-25.576074218750023],[-54.44394531249998,-25.625],[-54.15458984374999,-25.523046874999963],[-53.89116210937499,-25.66884765625001],[-53.668554687500006,-26.288183593749977],[-53.83818359375002,-27.121093750000014],[-54.32700195312495,-27.423535156249997],[-54.82910156250003,-27.55058593750003],[-55.10151367187501,-27.866796874999963],[-55.72548828125002,-28.20410156250003],[-55.68725585937497,-28.38164062499996],[-55.890527343749994,-28.370019531249994],[-56.938623046874994,-29.594824218750034],[-57.22465820312499,-29.782128906249994],[-57.40522460937501,-30.03388671875004],[-57.563867187499994,-30.139941406249974],[-57.60888671875003,-30.187792968750045],[-57.65087890624997,-30.295019531250034],[-57.71269531249996,-30.38447265624997],[-57.83120117187502,-30.495214843749963],[-57.87250976562501,-30.591015625000026],[-57.81059570312499,-30.85859375000001],[-57.88632812499998,-30.937402343749994],[-57.86840820312497,-31.104394531249994],[-57.89335937499999,-31.195312499999957],[-58.03339843750001,-31.416601562500006],[-58.053857421874994,-31.494921874999974],[-58.009667968749966,-31.534375],[-57.98798828124998,-31.576171875],[-58.00698242187494,-31.684960937499966],[-58.04233398437495,-31.769238281249997],[-58.16748046874997,-31.87265625],[-58.18901367187499,-31.924218750000037],[-58.16040039062503,-31.986523437500026],[-58.156347656250006,-32.0515625],[-58.17700195312494,-32.11904296875002],[-58.16479492187494,-32.18486328125002],[-58.119726562500006,-32.24892578125002],[-58.12304687499997,-32.321875],[-58.201171875,-32.471679687500014],[-58.219970703125,-32.563964843749986],[-58.17099609374998,-32.95927734374996],[-58.424462890624994,-33.11152343749998],[-58.54721679687498,-33.66347656249998],[-58.392480468749966,-34.192968750000034],[-58.52548828124998,-34.29619140625002],[-58.28334960937494,-34.68349609375005],[-57.54785156250003,-35.018945312499994],[-57.170654296875,-35.3625],[-57.35390624999994,-35.72031249999998],[-57.33544921875,-36.026757812499966],[-57.07617187499994,-36.296777343749994],[-56.74946289062501,-36.346484375],[-56.67202148437494,-36.85126953124998],[-57.546972656250034,-38.085644531250026],[-58.17919921874994,-38.435839843750045],[-59.82832031250001,-38.83818359375003],[-61.112207031249994,-38.99296875000003],[-61.84790039062497,-38.961816406249994],[-62.33476562499993,-38.80009765625],[-62.29506835937502,-39.24326171874996],[-62.053662109374955,-39.373828125],[-62.179345703124994,-39.38046875000002],[-62.076806640624966,-39.46152343750002],[-62.131542968749926,-39.82539062499998],[-62.28691406249996,-39.89531250000002],[-62.40185546875003,-40.19658203125002],[-62.24633789062494,-40.674609374999974],[-62.39501953124997,-40.89082031249997],[-62.95903320312493,-41.10966796875006],[-63.621777343749955,-41.15976562499996],[-64.86948242187503,-40.735839843750014],[-65.13339843749998,-40.88066406250003],[-64.98637695312496,-42.102050781249986],[-64.53774414062494,-42.25458984374998],[-64.57099609374998,-42.416015625],[-64.42041015625003,-42.43378906249998],[-64.10087890624993,-42.395117187500006],[-64.06118164062494,-42.266113281250014],[-64.228515625,-42.21826171874996],[-63.795556640624994,-42.113867187500006],[-63.6298828125,-42.28271484375003],[-63.61733398437502,-42.695800781249986],[-64.03476562499998,-42.88125],[-64.48784179687499,-42.51347656250006],[-64.97070312499997,-42.66630859375002],[-65.02690429687496,-42.75888671874996],[-64.31914062499999,-42.968945312500026],[-64.83994140624998,-43.18886718749998],[-65.25234374999997,-43.571875],[-65.26552734375,-44.2796875],[-65.64760742187502,-44.661425781250045],[-65.63876953125,-45.0078125],[-66.19013671874995,-44.96474609375002],[-66.94140625,-45.25732421875003],[-67.59956054687495,-46.05253906250003],[-67.5064453125,-46.44277343749995],[-66.77685546874994,-47.005859375],[-65.99853515625,-47.09375],[-65.73808593749999,-47.34492187499998],[-65.81430664062495,-47.63818359374996],[-66.22524414062502,-47.826757812500006],[-65.93422851562497,-47.826757812500006],[-65.81005859374997,-47.941113281250026],[-67.46630859375,-48.95175781250004],[-67.68486328125002,-49.2466796875],[-67.82597656249999,-49.91962890625005],[-68.2572265625,-50.104589843749984],[-68.66757812500003,-49.75253906250003],[-68.66162109374997,-49.93574218750005],[-68.97958984375,-50.003027343749984],[-68.59794921874996,-50.00947265624997],[-68.421875,-50.15791015625001],[-69.04477539062495,-50.49912109374998],[-69.35859374999993,-51.028125],[-69.20102539062498,-50.99365234375001],[-69.03530273437497,-51.48896484375002],[-69.46542968750003,-51.58447265625003],[-68.96533203125003,-51.67714843749999],[-68.443359375,-52.35664062500004],[-69.96025390624993,-52.00820312500002],[-71.91865234374995,-51.98955078125004],[-72.40766601562501,-51.54082031250002],[-72.34023437499997,-50.68183593749999],[-72.50981445312496,-50.607519531250034],[-73.15292968749998,-50.73828125000003],[-73.50126953124996,-50.125292968750024],[-73.55419921875,-49.463867187500014],[-73.46157226562497,-49.31386718750001],[-73.13525390625,-49.30068359374999],[-73.03364257812501,-49.014355468750004],[-72.65126953125,-48.84160156249998],[-72.582861328125,-48.47539062499999],[-72.35473632812497,-48.36582031250005],[-72.32832031250001,-48.11005859374998],[-72.517919921875,-47.87636718749998],[-72.34594726562497,-47.49267578124997],[-71.90498046875001,-47.201660156250014],[-71.94023437499999,-46.83125],[-71.69965820312501,-46.6513671875],[-71.87568359374998,-46.160546875],[-71.63154296874998,-45.95371093749998],[-71.74619140624998,-45.57890625],[-71.34931640624995,-45.33193359374995],[-71.5962890625,-44.97919921875004],[-72.04169921874998,-44.90419921875004],[-72.06372070312503,-44.771875],[-71.26113281250002,-44.763085937499966],[-71.15971679687496,-44.56025390625004],[-71.21259765624998,-44.44121093750003],[-71.82001953124993,-44.38310546875],[-71.68007812500002,-43.92958984374998],[-71.90498046875001,-43.34755859374998],[-71.750634765625,-43.237304687499986],[-72.14643554687498,-42.990039062499974],[-72.10820312499993,-42.25185546874995],[-71.75,-42.04677734375001],[-71.91127929687497,-41.650390624999986],[-71.93212890624994,-40.69169921874999],[-71.70898437499997,-40.381738281249994],[-71.81831054687493,-40.17666015624995],[-71.65976562499998,-40.02080078125],[-71.71992187499995,-39.63525390624997],[-71.53945312499997,-39.60244140624995],[-71.40156249999995,-38.93505859374996],[-70.858642578125,-38.60449218750003],[-71.16757812499998,-37.76230468749996],[-71.19218750000002,-36.84365234375004],[-71.05551757812498,-36.52373046874996],[-70.40478515625,-36.06171874999998],[-70.41572265625001,-35.52304687500002],[-70.55517578125,-35.246875],[-70.39316406250003,-35.146875],[-70.05205078124999,-34.30078124999997],[-69.85244140625,-34.224316406250026],[-69.81962890624999,-33.28378906249999],[-70.08486328125002,-33.20175781249998],[-70.02197265625,-32.88457031250002],[-70.36376953125,-32.08349609374997],[-70.25439453125,-31.957714843750026],[-70.585205078125,-31.569433593749963],[-70.51958007812493,-31.1484375],[-70.30908203124994,-31.02265625000004],[-70.15322265625,-30.360937499999963],[-69.95634765624996,-30.35820312500003],[-69.84428710937493,-30.175],[-69.95996093749997,-30.078320312500026],[-70.02680664062501,-29.324023437500017],[-69.82788085937497,-29.10322265624997],[-69.65693359374995,-28.413574218749986],[-69.17441406249998,-27.924707031250037],[-68.84633789062494,-27.153710937499994],[-68.59208984375002,-27.140039062499966],[-68.31865234374999,-26.973242187500006],[-68.59160156249999,-26.47041015624997],[-68.41450195312498,-26.153710937500023],[-68.59208984375002,-25.420019531250034],[-68.38422851562495,-25.091894531249977],[-68.56201171875,-24.74736328125003],[-68.25029296875002,-24.391992187500023],[-67.35620117187503,-24.033789062499963],[-67.00878906249994,-23.00136718750005],[-67.19487304687493,-22.821679687500037],[-66.99111328125,-22.509863281250006],[-66.71171874999999,-22.216308593749986],[-66.36518554687501,-22.113769531249957],[-66.32246093750001,-22.053125],[-66.28212890624997,-21.94746093750001],[-66.24760742187496,-21.83046875],[-66.22016601562495,-21.802539062499974],[-66.174658203125,-21.805664062499986],[-66.09858398437495,-21.83505859375002],[-66.05859375,-21.87949218750002],[-65.86015624999999,-22.019726562499983],[-65.77104492187493,-22.099609375000014],[-65.68618164062497,-22.11025390625005],[-65.51879882812497,-22.094531250000045],[-64.99262695312498,-22.109667968750017],[-64.60551757812499,-22.228808593750045],[-64.52363281250001,-22.37158203125],[-64.47773437499998,-22.485351562499986],[-64.44550781249998,-22.585351562500023],[-64.37397460937498,-22.761035156250017],[-64.32529296875,-22.82763671875],[-64.30791015624993,-22.7953125],[-64.26640625000002,-22.60332031249996],[-63.97612304687502,-22.072558593750003],[-63.92167968749993,-22.028613281250017],[-62.843359375,-21.997265625000026],[-62.62597656250003,-22.29042968749998],[-62.54155273437496,-22.349609374999957],[-62.37250976562498,-22.439160156249997],[-62.21416015624996,-22.612402343750034],[-61.798535156249955,-23.18203125],[-61.084716796875,-23.65644531250001]]]]},"properties":{"name":"Argentina","childNum":3}},{"geometry":{"type":"Polygon","coordinates":[[[46.490625,38.90668945312498],[46.1144531250001,38.877783203125034],[45.977441406249994,39.24389648437503],[45.76630859375004,39.37846679687499],[45.78447265625002,39.54560546875001],[45.456835937500074,39.494482421875006],[45.15283203125003,39.58266601562502],[45.03164062500005,39.76513671874997],[44.76826171875004,39.70351562500005],[44.28925781250004,40.040380859375006],[43.66621093750004,40.12636718750002],[43.56933593750003,40.48237304687498],[43.72265624999997,40.71953124999999],[43.43945312500003,41.10712890625001],[44.077246093750006,41.182519531249994],[44.81132812500002,41.259375],[45.001367187499994,41.29096679687498],[45.188574218750006,41.14741210937504],[45.07050781250004,41.075585937499966],[45.5875,40.846923828125],[45.37890624999997,40.67358398437506],[45.45439453125002,40.532373046874966],[45.96464843750002,40.233789062499966],[45.8859375000001,40.024853515624955],[45.57978515625004,39.9775390625],[46.202050781249994,39.59448242187503],[46.48144531249997,39.55517578125003],[46.36523437500003,39.402490234374994],[46.584765625000074,39.22368164062499],[46.400292968749994,39.1921875],[46.490625,38.90668945312498]]]},"properties":{"name":"Armenia","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-170.72626953125,-14.351171875],[-170.8205078125,-14.312109375],[-170.568115234375,-14.266796875000011],[-170.72626953125,-14.351171875]]]},"properties":{"name":"American Samoa","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[69.2824218750001,-49.05888671875002],[69.16718750000004,-48.88291015624996],[69.36875,-48.89042968749998],[69.2824218750001,-49.05888671875002]]],[[[69.18486328125002,-49.10957031250004],[69.59277343749997,-48.97099609375005],[69.64404296875003,-49.11738281250003],[69.40507812500002,-49.18173828125],[69.5423828125,-49.25566406250005],[70.32021484375005,-49.05859374999996],[70.55546875000007,-49.201464843750024],[70.38613281250005,-49.433984374999966],[70.16582031250002,-49.34296874999998],[69.75996093750004,-49.430175781249986],[69.98642578125006,-49.58164062500003],[70.2477539062501,-49.53066406250003],[70.12431640625002,-49.70439453124999],[69.153125,-49.5296875],[68.99296875000007,-49.704980468750016],[68.81474609375002,-49.69960937499999],[68.88339843750006,-49.16494140624995],[68.76953125000003,-49.06591796875003],[69.00244140624997,-48.661230468750006],[69.13613281250005,-48.86103515625003],[69.05214843750005,-49.08193359375001],[69.18486328125002,-49.10957031250004]]],[[[51.83457031250006,-46.43994140625],[51.65927734375006,-46.37363281249999],[51.7418945312501,-46.32685546874997],[51.83457031250006,-46.43994140625]]]]},"properties":{"name":"Fr. S. Antarctic Lands","childNum":3}},{"geometry":{"type":"Polygon","coordinates":[[[-61.71606445312503,17.037011718749994],[-61.85966796874996,17.013330078124966],[-61.887109374999966,17.09814453125],[-61.81728515624994,17.168945312500057],[-61.71606445312503,17.037011718749994]]]},"properties":{"name":"Antigua and Barb.","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[147.35605468750006,-43.396972656250014],[147.30888671875007,-43.50078125000002],[147.10498046875003,-43.43115234374996],[147.28388671875004,-43.278906250000034],[147.35605468750006,-43.396972656250014]]],[[[145.04296875000003,-40.78671875],[145.28300781250002,-40.76992187500002],[146.31748046875006,-41.16347656250001],[146.72343750000002,-41.07802734375001],[146.84814453124997,-41.16806640624996],[146.98984375000006,-40.99238281249997],[147.45478515625004,-41.00166015624998],[147.62167968750012,-40.844726562499986],[147.87294921875005,-40.87255859374997],[147.96875,-40.779589843750045],[148.215234375,-40.85488281250002],[148.34257812500007,-42.21533203124997],[148.21367187500002,-41.97001953125],[147.92441406250006,-42.5724609375],[147.94541015625006,-43.18183593749997],[147.7858398437501,-43.22001953125002],[147.69892578125004,-43.12255859374997],[147.64794921874997,-43.02060546874999],[147.8,-42.928125],[147.57382812500006,-42.84570312499997],[147.4523437500001,-43.03339843750001],[147.29794921875006,-42.790917968749994],[147.24501953125005,-43.21591796874999],[146.99697265625005,-43.15634765625002],[147.07734375000004,-43.27587890625003],[146.87392578125,-43.6125],[146.54853515625004,-43.50888671874999],[146.04316406250004,-43.547167968749974],[145.99443359375007,-43.37607421875002],[146.20800781249997,-43.31621093749999],[145.8732421875001,-43.29238281250002],[145.48759765625002,-42.92666015625004],[145.19882812500006,-42.23085937500004],[145.46826171874997,-42.492871093750026],[145.51660156249997,-42.3544921875],[145.33105468750003,-42.14707031250002],[145.23486328124997,-42.19697265624997],[145.23818359375,-42.01962890624999],[144.76611328125003,-41.39003906249998],[144.64609375000006,-40.980859375],[144.71855468750002,-40.67226562500002],[145.04296875000003,-40.78671875]]],[[[148.23691406250006,-40.515136718749986],[148.18779296875007,-40.592578125000045],[148.11728515625012,-40.52148437499996],[148.23691406250006,-40.515136718749986]]],[[[144.784375,-40.506738281249966],[144.74804687499997,-40.589453125000034],[144.7833984375001,-40.434863281249974],[144.784375,-40.506738281249966]]],[[[148.32626953125006,-40.30693359375003],[148.40400390625004,-40.486523437500026],[148.02011718750012,-40.40419921874995],[148.32626953125006,-40.30693359375003]]],[[[148.000390625,-39.75761718750003],[148.29736328125003,-39.985742187499966],[148.31357421875012,-40.173535156250026],[148.10566406250004,-40.26210937499995],[147.76718750000012,-39.87031249999998],[148.000390625,-39.75761718750003]]],[[[143.92792968750004,-40.116113281249966],[143.83857421875004,-39.90410156250003],[144.00078125000007,-39.580175781250034],[144.14101562500005,-39.953808593750026],[143.92792968750004,-40.116113281249966]]],[[[145.31445312500003,-38.49082031249996],[145.35507812500012,-38.55703124999995],[145.12841796875003,-38.52763671875],[145.31445312500003,-38.49082031249996]]],[[[137.59648437500007,-35.73867187499998],[137.92890625000004,-35.72607421875],[138.12343750000005,-35.85234375],[137.67089843749997,-35.897949218750014],[137.44843750000004,-36.07480468749999],[137.20957031250012,-35.982421875],[136.7550781250001,-36.03310546875002],[136.540625,-35.89013671875003],[136.63867187499997,-35.74882812500002],[137.33408203125006,-35.59248046875004],[137.58496093749997,-35.620214843750006],[137.59648437500007,-35.73867187499998]]],[[[153.53876953125004,-27.436425781250037],[153.42656250000002,-27.70644531249998],[153.43544921875,-27.40537109375002],[153.53876953125004,-27.436425781250037]]],[[[113.18300781250005,-26.053125],[112.96425781250005,-25.78310546875001],[112.94707031250002,-25.531542968750017],[113.18300781250005,-26.053125]]],[[[153.07744140625002,-25.75078125],[152.97666015625012,-25.551367187499963],[153.03808593750003,-25.193164062500003],[153.22753906249997,-25.00576171875001],[153.14375,-24.814843750000023],[153.25693359375012,-24.72890625],[153.35019531250012,-25.063085937499963],[153.07744140625002,-25.75078125]]],[[[151.14658203125006,-23.49082031250002],[151.24013671875,-23.529687500000037],[151.23828124999997,-23.77578125],[151.03330078125006,-23.530175781250037],[151.14658203125006,-23.49082031250002]]],[[[115.44619140625005,-20.78779296875001],[115.31806640625004,-20.850585937500014],[115.43457031249997,-20.66796875000003],[115.44619140625005,-20.78779296875001]]],[[[149.04375,-20.29150390624997],[148.93886718750005,-20.283691406249986],[148.98105468750012,-20.153515625000026],[149.04375,-20.29150390624997]]],[[[146.27832031249997,-18.23125],[146.29882812499997,-18.48476562500005],[146.09882812500004,-18.251757812500003],[146.27832031249997,-18.23125]]],[[[139.45917968750004,-17.11455078124996],[139.49277343750006,-16.990429687499983],[139.57089843750006,-17.09443359375004],[139.45917968750004,-17.11455078124996]]],[[[139.50781250000003,-16.57304687499996],[139.1595703125,-16.74169921875003],[139.29296875000003,-16.467285156249986],[139.58789062499997,-16.39521484374997],[139.69775390624997,-16.514941406250017],[139.50781250000003,-16.57304687499996]]],[[[137.09365234375005,-15.778125],[136.94267578125002,-15.711718749999989],[137.00957031250007,-15.594824218749977],[137.09365234375005,-15.778125]]],[[[124.59726562500006,-15.40195312500002],[124.52421875000002,-15.421484375],[124.51933593750002,-15.26748046874998],[124.59726562500006,-15.40195312500002]]],[[[125.19882812500006,-14.57949218749998],[125.0912109375,-14.59169921874998],[125.15996093750002,-14.456054687499972],[125.19882812500006,-14.57949218749998]]],[[[136.71464843750002,-13.803906249999983],[136.89082031250004,-13.786621093750014],[136.74531250000004,-14.072656250000023],[136.95078125000006,-14.184277343750026],[136.89433593750002,-14.293066406249977],[136.33544921875003,-14.211816406250037],[136.42470703125,-13.864843749999963],[136.6556640625,-13.675878906250006],[136.71464843750002,-13.803906249999983]]],[[[136.23740234375006,-13.824511718750003],[136.12265625000012,-13.816601562499983],[136.21542968750012,-13.664746093750054],[136.23740234375006,-13.824511718750003]]],[[[136.33867187500007,-11.602343749999989],[136.18027343750006,-11.676757812499957],[136.47929687500002,-11.465917968749991],[136.33867187500007,-11.602343749999989]]],[[[130.45927734375007,-11.679296875000034],[130.60625,-11.816601562500026],[130.04326171875007,-11.787304687500011],[130.19755859375007,-11.658203125],[130.15283203124997,-11.477539062499972],[130.29492187499997,-11.33681640624998],[130.45927734375007,-11.679296875000034]]],[[[130.6188476562501,-11.376074218749991],[131.02304687500006,-11.334375],[131.26826171875004,-11.18984375],[131.53857421874997,-11.436914062500037],[130.95097656250007,-11.926464843750026],[130.51191406250004,-11.617871093749955],[130.38457031250002,-11.1921875],[130.6188476562501,-11.376074218749991]]],[[[136.59853515625,-11.378906249999943],[136.52656250000004,-11.438867187499994],[136.78027343749997,-11.0125],[136.59853515625,-11.378906249999943]]],[[[132.59335937500006,-11.302832031249991],[132.48378906250005,-11.037304687499983],[132.57880859375004,-10.968847656249977],[132.59335937500006,-11.302832031249991]]],[[[143.17890625000004,-11.954492187499966],[143.11025390625,-12.303515625000017],[143.40156250000004,-12.639941406249989],[143.5866210937501,-13.443652343750031],[143.54843750000012,-13.74101562499996],[143.75634765625003,-14.348828124999969],[143.96181640625005,-14.462890625000028],[144.473046875,-14.231835937500023],[144.64804687500006,-14.492480468750017],[145.28769531250006,-14.943164062499989],[145.42607421875002,-16.406152343749966],[145.75478515625,-16.879492187500034],[145.91210937499997,-16.9125],[146.12587890625005,-17.63525390625],[146.03222656249997,-18.272851562500037],[146.3332031250001,-18.55371093749997],[146.38339843750006,-18.97705078124997],[147.13876953125006,-19.39316406250002],[147.41855468750012,-19.378125],[147.7423828125001,-19.770117187499977],[148.759375,-20.28955078125003],[148.88476562499997,-20.480859375],[148.72998046874997,-20.4677734375],[148.68369140625012,-20.58017578124999],[149.20488281250007,-21.125097656249977],[149.45410156249997,-21.57871093750002],[149.70390625000002,-22.440527343750006],[149.82246093750004,-22.389843749999983],[149.97441406250007,-22.55068359374998],[149.94189453125003,-22.30810546875003],[150.07617187500003,-22.16445312499998],[150.54130859375002,-22.55908203125],[150.56855468750004,-22.38398437500004],[150.67246093750012,-22.418164062499983],[150.84316406250005,-23.4580078125],[151.15380859375003,-23.784082031249994],[151.83164062500006,-24.12294921875001],[152.12988281250003,-24.59755859374998],[152.45634765625007,-24.802441406249983],[152.65429687499997,-25.201953125000017],[152.91347656250005,-25.432128906250014],[152.98496093750012,-25.816210937500003],[153.16494140625,-25.964160156250045],[153.11679687500006,-27.194433593750034],[153.57568359375003,-28.24052734374999],[153.6168945312501,-28.673046875],[153.03056640625002,-30.563378906249994],[152.94394531250012,-31.43486328124999],[152.5592773437501,-32.045703125],[152.4704101562501,-32.439062500000034],[152.13652343750002,-32.678125],[152.1642578125001,-32.75742187499996],[151.812890625,-32.90107421875001],[151.29208984375012,-33.580957031249966],[151.28027343750003,-33.92666015625005],[151.12480468750007,-34.00527343749998],[151.23154296875006,-34.0296875],[150.8712890625001,-34.49912109374996],[150.80458984375,-35.01289062500001],[150.19531249999997,-35.83359374999996],[149.93271484375012,-37.528515625000026],[149.480859375,-37.77119140625],[147.87675781250002,-37.93417968749998],[146.8568359375,-38.663476562499966],[146.21748046875004,-38.72744140625004],[146.33662109375004,-38.89423828125],[146.46660156250007,-38.84033203125003],[146.40000000000012,-39.14550781250003],[146.1583984375001,-38.86572265624996],[145.93535156250002,-38.90175781250002],[145.79082031250007,-38.66699218749997],[145.39726562500002,-38.53535156249998],[145.54218750000004,-38.39384765625002],[145.4757812500001,-38.24375],[145.29277343750002,-38.237597656249974],[144.95957031250012,-38.500781250000045],[144.71777343749997,-38.34033203125004],[144.91142578125007,-38.34404296874999],[145.11992187500007,-38.091308593750014],[144.89130859375004,-37.899804687499994],[144.39550781250003,-38.13691406249998],[144.6652343750001,-38.20996093750003],[143.53896484375005,-38.82089843749998],[142.45585937500002,-38.38632812499999],[141.725,-38.27138671875002],[141.5939453125001,-38.38779296875002],[141.42421875,-38.36347656250004],[141.0109375000001,-38.07695312500003],[140.39042968750007,-37.89667968749998],[139.78427734375012,-37.24580078124998],[139.85732421875,-36.662109375],[139.72900390625003,-36.37138671875002],[138.9689453125001,-35.58076171874997],[139.17802734375007,-35.52304687500002],[139.289453125,-35.61132812499997],[139.28251953125002,-35.375390624999966],[138.521875,-35.6423828125],[138.184375,-35.612695312499994],[138.5111328125,-35.02441406249996],[138.48994140625004,-34.76357421875002],[138.0892578125,-34.16982421875002],[137.69169921875002,-35.14296875000004],[136.88359375000007,-35.23974609375004],[137.01425781250012,-34.91582031250003],[137.39101562500005,-34.91328124999997],[137.49384765625004,-34.16113281250003],[137.9318359375001,-33.57910156250003],[137.85234375000007,-33.20078124999996],[137.99257812500005,-33.094238281250014],[137.78320312500003,-32.578125],[137.79091796875,-32.82324218749996],[137.44228515625,-33.1935546875],[137.23730468750003,-33.62949218749999],[136.43066406249997,-34.02998046875004],[135.891015625,-34.660937499999974],[135.96972656249997,-34.98183593749998],[135.7923828125,-34.863281249999986],[135.64755859375006,-34.93964843750001],[135.12304687499997,-34.58574218750003],[135.21679687499997,-34.48730468749996],[135.45,-34.58105468749996],[135.21894531250004,-33.959765625000045],[134.88876953125012,-33.62636718749998],[134.79101562499997,-33.32832031250001],[134.60771484375002,-33.19013671875001],[134.30126953124997,-33.16503906249996],[134.17353515625004,-32.979101562500006],[134.10039062500007,-32.748632812500034],[134.22714843750006,-32.73056640624999],[134.23417968750007,-32.54853515625004],[133.66533203125007,-32.207226562500054],[133.21210937500004,-32.18378906249998],[132.75742187500012,-31.95625],[132.21464843750002,-32.00712890624996],[131.14365234375006,-31.49570312500005],[130.78300781250002,-31.604003906249986],[129.1876953125001,-31.659960937500017],[127.31982421874997,-32.2640625],[125.91718750000004,-32.296972656250034],[124.75878906250003,-32.882714843749994],[124.24375,-33.01523437499999],[123.50683593749997,-33.916210937500054],[122.15097656250006,-33.99179687499999],[122.06113281250006,-33.874414062499966],[121.40507812500007,-33.826757812500034],[119.85410156250012,-33.97470703124998],[119.45058593750005,-34.368261718750034],[118.89531250000007,-34.47988281250004],[118.13554687500002,-34.98662109374999],[117.58193359375005,-35.09775390624998],[116.51718750000012,-34.98789062499998],[115.98671875000005,-34.795019531250034],[115.56503906250012,-34.42578125000003],[115.00878906250003,-34.25585937499997],[114.9938476562501,-33.51533203125],[115.3587890625,-33.63994140624999],[115.68300781250005,-33.19287109375003],[115.6984375000001,-31.694531250000054],[115.07792968750007,-30.560449218750023],[114.85683593750005,-29.14296875],[114.16513671875012,-28.08066406250002],[114.028125,-27.34726562499999],[113.18476562500004,-26.182226562499963],[113.32324218749997,-26.243847656249997],[113.35605468750012,-26.080468750000023],[113.58164062500006,-26.558105468749986],[113.73369140625002,-26.59511718749998],[113.83642578125003,-26.50058593749999],[113.85283203125007,-26.33212890625005],[113.39531250000002,-25.71328125],[113.4513671875001,-25.599121093750014],[113.7130859375001,-25.83076171875004],[113.72373046875006,-26.129785156250037],[113.85390625,-26.01445312499999],[113.99199218750007,-26.32148437500001],[114.09033203124997,-26.393652343749963],[114.21572265625,-26.289453124999966],[114.2142578125,-25.851562500000014],[113.41767578125004,-24.435644531250034],[113.48984375000012,-23.869628906250014],[113.7570312500001,-23.418164062500054],[113.79511718750004,-22.91455078125003],[113.68281250000004,-22.637792968749963],[114.02285156250005,-21.881445312499977],[114.12392578125005,-21.828613281249957],[114.14160156250003,-22.483105468749983],[114.37773437500007,-22.341503906249997],[114.70927734375002,-21.82343749999997],[115.45615234375012,-21.49169921874997],[116.0109375000001,-21.030371093749963],[116.7067382812501,-20.653808593749986],[117.40625,-20.72119140625003],[118.19921875000003,-20.37519531249997],[118.75146484374997,-20.261914062499983],[119.10449218749997,-19.995312500000026],[119.58593750000003,-20.03828125],[120.99794921875,-19.604394531249966],[121.33769531250002,-19.31992187500002],[121.83378906250002,-18.477050781249986],[122.34541015625004,-18.11191406250002],[122.14746093749997,-17.54902343750001],[122.2609375000001,-17.135742187500014],[122.72041015625004,-16.78769531249999],[122.97070312499997,-16.436816406250003],[123.56308593750006,-17.520898437499966],[123.59355468750007,-17.03037109375005],[123.83105468750003,-17.120800781249997],[123.8744140625,-16.918652343750026],[123.4904296875001,-16.49072265624997],[123.62597656249997,-16.416308593750003],[123.60703125000006,-16.224023437499994],[123.72890625,-16.192480468749963],[123.85917968750007,-16.38232421875],[124.04443359374997,-16.264941406249974],[124.30039062500006,-16.388281249999977],[124.77197265624997,-16.40263671874996],[124.40488281250006,-16.298925781249977],[124.41640625,-16.133496093750026],[124.5768554687501,-16.11367187499998],[124.64853515625012,-15.870214843750034],[124.50429687500005,-15.972460937499989],[124.38164062500002,-15.758203125000037],[124.43955078125012,-15.493554687500037],[124.56162109375012,-15.496289062499969],[124.69257812500004,-15.273632812499997],[125.06298828125003,-15.44228515624998],[125.0729492187501,-15.306738281249991],[124.90917968750003,-15.310058593749957],[124.83906250000004,-15.160742187500006],[125.03818359375012,-15.004101562499969],[125.35566406250004,-15.119824218750011],[125.17871093749997,-14.714746093749994],[125.57978515625004,-14.483203124999989],[125.62773437500002,-14.256640625000017],[125.70458984374997,-14.29140625],[125.66162109375003,-14.529492187500011],[125.81953125000004,-14.469140624999966],[125.890625,-14.61796875],[126.0207031250001,-14.49453125],[126.0539062500001,-13.977246093750026],[126.1842773437501,-14.00205078125002],[126.25849609375004,-14.163574218749972],[126.403125,-14.018945312499994],[126.5697265625,-14.160937499999974],[126.7806640625,-13.955175781249977],[126.77558593750004,-13.788476562500037],[126.90322265625,-13.744140624999972],[127.45761718750006,-14.031445312499969],[128.18046875000007,-14.711621093749983],[128.06943359375012,-15.329296874999969],[128.15546875000004,-15.225585937499972],[128.25468750000002,-15.298535156250011],[128.175,-15.043164062500026],[128.57578125000006,-14.774511718750006],[129.05820312500012,-14.884375],[129.21582031249997,-15.160253906249991],[129.26757812500003,-14.871484375000051],[129.63476562499997,-15.139746093749991],[129.637109375,-14.850976562500037],[129.84873046875012,-14.828906249999989],[129.60468750000004,-14.647070312499977],[129.69794921875004,-14.557421875000017],[129.37871093750002,-14.39248046874998],[129.70986328125,-13.979980468749972],[129.83886718749997,-13.572949218749997],[130.25976562500003,-13.30224609375],[130.1349609375001,-13.145507812499957],[130.1681640625001,-12.957421875],[130.39990234374997,-12.68789062499999],[130.61748046875007,-12.646875],[130.62265625000006,-12.43105468749998],[130.8673828125001,-12.557812499999955],[130.87382812500007,-12.367187500000028],[131.29160156250006,-12.067871093749972],[131.43828125000002,-12.27695312500002],[132.06406250000006,-12.28076171875],[132.25322265625007,-12.186035156249972],[132.41103515625,-12.295117187499997],[132.51054687500002,-12.134863281250034],[132.71279296875,-12.1234375],[132.63046875000012,-12.035156249999972],[132.67421875000005,-11.649023437499991],[132.47519531250006,-11.491503906249974],[132.07285156250006,-11.474707031250006],[131.82246093750004,-11.302441406249997],[131.96152343750006,-11.180859375000011],[132.15546875000004,-11.311132812499991],[132.33398437499997,-11.223535156249994],[132.6828125000001,-11.505566406249997],[132.96103515625012,-11.407324218749963],[133.18525390625004,-11.705664062499991],[133.90419921875,-11.832031249999972],[134.4173828125,-12.052734375],[134.73027343750002,-11.984375],[135.02968750000005,-12.19375],[135.2179687500001,-12.221679687499957],[135.92246093750012,-11.825781250000034],[135.70439453125007,-12.209863281250037],[136.00849609375004,-12.19140625],[136.08183593750007,-12.422460937500006],[136.26064453125,-12.433789062499997],[136.32851562500005,-12.305566406249994],[136.24990234375,-12.173046875],[136.44335937499997,-11.951464843749974],[136.7194335937501,-12.226464843749952],[136.89746093749997,-12.243554687499966],[136.94746093750004,-12.34990234374996],[136.53701171875,-12.784277343749991],[136.59433593750012,-13.003808593750051],[136.46103515625006,-13.225195312500034],[136.29414062500004,-13.137988281250031],[135.92734375000012,-13.304296874999977],[135.95449218750005,-13.934863281250017],[135.40517578125005,-14.758203124999966],[135.4533203125001,-14.923144531250003],[136.20537109375002,-15.403417968749963],[136.29140625000005,-15.570117187500003],[136.70488281250007,-15.685253906250011],[136.78466796874997,-15.89423828125004],[137.00214843750004,-15.878320312499994],[137.70371093750006,-16.233007812499963],[138.24501953125005,-16.718359374999977],[139.00986328125006,-16.899316406249994],[139.2484375,-17.328613281249957],[140.03583984375004,-17.702636718749957],[140.51113281250005,-17.62451171875003],[140.83046875,-17.414453125000037],[141.29140625,-16.46347656250002],[141.62548828124997,-15.056640625000014],[141.52294921875003,-14.470117187499994],[141.59433593750006,-14.152832031250014],[141.47255859375,-13.797558593750011],[141.64541015625,-13.259082031250003],[141.61357421875002,-12.943457031250006],[141.92978515625006,-12.73984375],[141.67773437500003,-12.491406250000011],[141.68857421875012,-12.351074218750028],[141.87050781250005,-11.9755859375],[141.96113281250004,-12.054296874999963],[142.168359375,-10.946582031249974],[142.45644531250005,-10.707324218749989],[142.60507812500012,-10.748242187499983],[142.55273437500003,-10.874414062500023],[142.7796875,-11.115332031249977],[142.87255859374997,-11.821386718750034],[143.17890625000004,-11.954492187499966]]],[[[142.2748046875,-10.704785156250011],[142.19140624999997,-10.762011718750031],[142.1310546875001,-10.640625],[142.19794921875004,-10.59199218750004],[142.2748046875,-10.704785156250011]]]]},"properties":{"name":"Australia","childNum":30}},{"geometry":{"type":"Polygon","coordinates":[[[16.953125,48.598828125],[16.86542968750001,48.3869140625],[17.147363281250023,48.00595703125],[17.06660156250001,47.707568359374996],[16.421289062500023,47.674462890624994],[16.676562500000017,47.536035156249994],[16.44287109375,47.39951171875],[16.453417968750017,47.006787109375],[16.093066406250017,46.86328125],[15.957617187500006,46.677636718749994],[14.893261718750011,46.605908203125],[14.5498046875,46.399707031249996],[13.7,46.520263671875],[13.490039062500017,46.555566406249994],[13.3515625,46.557910156249996],[13.16875,46.57265625],[12.479199218750011,46.672509765624994],[12.38828125,46.70263671875],[12.330078125,46.759814453124996],[12.267968750000023,46.835888671875],[12.154101562500017,46.93525390625],[12.130761718750023,46.98476562499999],[12.16552734375,47.028173828125],[12.201269531250006,47.060888671875],[12.197167968750023,47.075],[12.16943359375,47.08212890625],[11.775683593750017,46.986083984375],[11.527539062500011,46.997412109375],[11.433203125,46.983056640624994],[11.244433593750017,46.97568359375],[11.133886718750006,46.936181640624994],[11.0634765625,46.859130859375],[11.025097656250011,46.79697265625],[10.993261718750006,46.777001953124994],[10.92734375,46.769482421875],[10.828906250000017,46.775244140625],[10.759765625,46.793310546875],[10.689257812500017,46.84638671875],[10.579785156250011,46.8537109375],[10.479394531250023,46.855126953124994],[10.452832031250011,46.86494140625],[10.45458984375,46.8994140625],[10.414941406250023,46.964404296874996],[10.349414062500017,46.98476562499999],[10.133496093750011,46.851513671875],[9.580273437500011,47.057373046875],[9.527539062500011,47.270751953125],[9.625878906250023,47.467041015625],[9.524023437500006,47.52421875],[9.748925781250023,47.575537109375],[9.839160156250017,47.552294921874996],[9.971582031250023,47.505322265625],[10.034082031250023,47.473583984375],[10.059863281250017,47.449072265625],[10.066308593750023,47.393359375],[10.200292968750006,47.363427734374994],[10.183007812500023,47.27880859375],[10.369140625,47.366064453125],[10.40390625,47.4169921875],[10.439453125,47.5515625],[10.482812500000023,47.541796875],[10.65869140625,47.547216796875],[10.741601562500023,47.52412109375],[10.873046875,47.52021484375],[11.0419921875,47.393115234374996],[12.185644531250006,47.61953125],[12.203808593750011,47.646728515625],[12.196875,47.70908203125],[12.209277343750017,47.71826171875],[12.268359375000017,47.702734375],[12.353540736607165,47.70264787946429],[12.492553013392856,47.68551897321428],[12.685839843750017,47.669335937499994],[12.771386718750023,47.639404296875],[12.796191406250017,47.60703125],[12.781152343750023,47.5904296875],[12.7828125,47.56416015625],[12.809375,47.5421875],[12.87890625,47.5064453125],[12.968066406250017,47.47568359375],[13.014355468750011,47.478076171874996],[13.031542968750017,47.5080078125],[13.047949218750006,47.579150390624996],[13.054101562500023,47.655126953125],[12.897656250000011,47.721875],[12.953515625000023,47.890625],[12.760351562500006,48.106982421874996],[13.215234375000023,48.301904296874994],[13.322851562500006,48.33125],[13.409375,48.394140625],[13.459863281250023,48.56455078125],[13.4716796875,48.571826171874996],[13.486621093750017,48.581835937499996],[13.636623883928596,48.580904017857144],[13.785351562500011,48.587451171874996],[13.798828125,48.6216796875],[13.802929687500011,48.747509765625],[13.814746093750017,48.766943359375],[14.049121093750017,48.602490234375],[14.691308593750023,48.59921875],[15.066796875000023,48.997851562499996],[16.057226562500006,48.754785156249994],[16.543554687500006,48.796240234375],[16.953125,48.598828125]]]},"properties":{"name":"Austria","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[46.1144531250001,38.877783203125034],[45.4796875000001,39.00625],[44.81718750000002,39.65043945312496],[44.76826171875004,39.70351562500005],[45.03164062500005,39.76513671874997],[45.15283203125003,39.58266601562502],[45.456835937500074,39.494482421875006],[45.78447265625002,39.54560546875001],[45.76630859375004,39.37846679687499],[45.977441406249994,39.24389648437503],[46.1144531250001,38.877783203125034]]],[[[48.572851562500006,41.84448242187503],[49.45673828125004,40.79985351562502],[49.77597656250006,40.583984375],[50.18251953125005,40.50478515625002],[50.3659179687501,40.279492187499955],[49.91884765625005,40.31640625000003],[49.55117187499999,40.19414062499999],[49.3244140625001,39.60834960937501],[49.36279296875003,39.349560546874955],[49.16533203125002,39.03027343750003],[49.013476562500074,39.13398437500001],[48.85449218750003,38.83881835937501],[48.86875,38.43549804687498],[48.59267578125005,38.41108398437498],[47.99648437499999,38.85375976562503],[48.292089843750006,39.01884765624999],[48.10439453125005,39.241113281249994],[48.322167968749994,39.39907226562502],[47.995898437500074,39.683935546875034],[46.490625,38.90668945312498],[46.400292968749994,39.1921875],[46.584765625000074,39.22368164062499],[46.36523437500003,39.402490234374994],[46.48144531249997,39.55517578125003],[46.202050781249994,39.59448242187503],[45.57978515625004,39.9775390625],[45.8859375000001,40.024853515624955],[45.96464843750002,40.233789062499966],[45.45439453125002,40.532373046874966],[45.37890624999997,40.67358398437506],[45.5875,40.846923828125],[45.07050781250004,41.075585937499966],[45.188574218750006,41.14741210937504],[45.001367187499994,41.29096679687498],[45.2171875,41.423193359375006],[45.28095703125004,41.449560546875034],[46.086523437500006,41.183837890625],[46.43095703125002,41.077050781249994],[46.534375,41.08857421875004],[46.62636718750005,41.15966796875006],[46.66240234375002,41.24550781250002],[46.67255859375004,41.28681640625001],[46.61894531250002,41.34375],[46.30546875000002,41.507714843749994],[46.18427734375004,41.70214843749997],[46.42988281250004,41.890966796875006],[46.74931640625002,41.812597656250006],[47.31767578125002,41.28242187500001],[47.79101562499997,41.19926757812502],[48.572851562500006,41.84448242187503]]]]},"properties":{"name":"Azerbaijan","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[30.553613281250023,-2.400097656250011],[30.53369140625,-2.42626953125],[30.441992187500006,-2.613476562500011],[30.424218750000023,-2.6416015625],[30.47333984375001,-2.6943359375],[30.42402343750001,-2.824023437500003],[30.433496093750023,-2.87451171875],[30.515039062500023,-2.917578125],[30.604296875000017,-2.935253906250011],[30.70947265625,-2.977246093750011],[30.7802734375,-2.98486328125],[30.811132812500006,-3.116406250000011],[30.79023437500001,-3.274609375000011],[30.4,-3.65390625],[29.947265625,-4.307324218750011],[29.7177734375,-4.455859375],[29.403222656250023,-4.449316406250006],[29.211816406250023,-3.833789062500003],[29.224414062500017,-3.053515625],[29.01435546875001,-2.72021484375],[29.10205078125,-2.595703125],[29.390234375,-2.80859375],[29.698046875000017,-2.794726562500003],[29.8681640625,-2.71640625],[29.93017578125,-2.339550781250011],[30.117285156250006,-2.416601562500006],[30.408496093750017,-2.31298828125],[30.553613281250023,-2.400097656250011]]]},"properties":{"name":"Burundi","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[5.693554687500011,50.774755859375006],[5.993945312500017,50.75043945312504],[6.340917968750006,50.451757812500034],[6.116503906250045,50.120996093749966],[6.08906250000004,50.15458984374996],[6.054785156249977,50.154296875],[5.976269531250068,50.167187499999955],[5.866894531250068,50.08281250000002],[5.817382812500028,50.01269531250003],[5.7880859375,49.96123046875002],[5.744042968749994,49.91962890624998],[5.789746093749983,49.53828125000001],[5.50732421875,49.51088867187502],[4.867578125000051,49.78813476562502],[4.818652343750045,50.153173828125034],[4.545019531250063,49.96025390624999],[4.149316406250023,49.971582031249994],[4.174609375000017,50.24648437500005],[3.689355468750023,50.30605468750002],[3.595410156250068,50.47734374999999],[3.27333984375008,50.53154296875002],[3.10683593750008,50.779443359374994],[2.759375,50.750634765624994],[2.52490234375,51.097119140624955],[3.35009765625,51.37768554687503],[3.43251953125008,51.24575195312505],[3.902050781250011,51.20766601562502],[4.226171875000034,51.38647460937503],[5.03095703125004,51.46909179687498],[5.214160156250045,51.278955078124966],[5.796484375000034,51.153076171875],[5.693554687500011,50.774755859375006]]]},"properties":{"name":"Belgium","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[3.595410156250011,11.6962890625],[3.553906250000011,11.631884765624989],[3.490527343750017,11.49921875],[3.48779296875,11.395410156249994],[3.638867187500011,11.176855468749991],[3.65625,11.154589843749989],[3.6953125,11.1203125],[3.71640625,11.07958984375],[3.7568359375,10.76875],[3.83447265625,10.607421875],[3.771777343750017,10.417626953124994],[3.646582031250006,10.408984374999989],[3.60205078125,10.004541015624994],[3.3251953125,9.778466796874994],[3.044921875,9.083837890624991],[2.774804687500023,9.048535156249997],[2.703125,8.371826171875],[2.68603515625,7.873730468749997],[2.719335937500006,7.616259765624989],[2.7509765625,7.541894531249994],[2.78515625,7.476855468749989],[2.783984375000017,7.443408203124989],[2.765820312500011,7.422509765624994],[2.75048828125,7.395068359374989],[2.756738281250023,7.067919921874989],[2.721386718750011,6.980273437499989],[2.731738281250017,6.852832031249989],[2.7529296875,6.771630859374994],[2.774609375000011,6.711718749999989],[2.753710937500017,6.661767578124994],[2.735644531250017,6.595703125],[2.706445312500023,6.369238281249991],[1.62265625,6.216796875],[1.777929687500006,6.294628906249997],[1.530957031250011,6.992431640625],[1.624707031250011,6.997314453125],[1.600195312500006,9.050048828125],[1.3857421875,9.361669921874991],[1.330078125,9.996972656249994],[0.763378906250011,10.386669921874997],[0.900488281250006,10.993261718749991],[1.4267578125,11.447119140624991],[1.980371093750023,11.418408203124997],[2.38916015625,11.897070312499991],[2.366015625000017,12.221923828125],[2.805273437500006,12.383837890624989],[3.595410156250011,11.6962890625]]]},"properties":{"name":"Benin","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[0.217480468750011,14.911474609374991],[0.163867187500017,14.497216796874994],[0.382519531250011,14.245800781249997],[0.42919921875,13.972119140624997],[0.6181640625,13.703417968750003],[1.201171875,13.357519531249991],[0.988476562500011,13.36484375],[0.9873046875,13.041894531249994],[1.56494140625,12.635400390624994],[2.104589843750006,12.701269531249991],[2.226269531250011,12.466064453125],[2.072949218750011,12.309375],[2.38916015625,11.897070312499991],[1.980371093750023,11.418408203124997],[1.4267578125,11.447119140624991],[0.900488281250006,10.993261718749991],[0.49267578125,10.954980468749994],[-0.068603515625,11.115625],[-0.299462890624994,11.166894531249994],[-0.627148437499983,10.927392578124994],[-1.04248046875,11.010058593749989],[-2.829931640624977,10.998388671874991],[-2.914892578124977,10.592333984374989],[-2.791162109374994,10.432421874999989],[-2.780517578125,9.745849609375],[-2.765966796874977,9.658056640624991],[-2.706201171874994,9.533935546875],[-2.695849609374989,9.481347656249994],[-2.7171875,9.457128906249991],[-2.7666015625,9.424707031249994],[-2.816748046874977,9.425830078124989],[-2.875146484374994,9.500927734374997],[-2.90087890625,9.534619140624997],[-2.948144531249994,9.610742187499994],[-2.98828125,9.687353515624991],[-3.042626953124994,9.720898437499997],[-3.095800781249977,9.752099609374994],[-3.160693359374989,9.849169921874989],[-3.223535156249994,9.895458984374997],[-3.289697265624994,9.882226562499994],[-3.581152343749977,9.92431640625],[-3.790625,9.9171875],[-4.18115234375,9.78173828125],[-4.267187499999977,9.743261718749991],[-4.332226562499983,9.645703125],[-4.406201171874983,9.647998046874989],[-4.526611328125,9.723486328124991],[-4.625830078124977,9.713574218749997],[-4.721777343749977,9.756542968749997],[-5.262304687499977,10.319677734374991],[-5.523535156249977,10.426025390625],[-5.490478515625,11.042382812499994],[-5.250244140625,11.375781249999989],[-5.288134765624989,11.827929687499989],[-4.699316406249977,12.076171875],[-4.4287109375,12.337597656249997],[-4.480615234374994,12.672216796874991],[-4.227099609374989,12.793701171875],[-4.328710937499977,13.119042968749994],[-4.151025390624994,13.306201171875003],[-3.947314453124989,13.402197265624991],[-3.527636718749989,13.182714843749991],[-3.3017578125,13.28076171875],[-3.248632812499977,13.658349609374994],[-2.950830078124994,13.6484375],[-2.873925781249994,13.950732421875003],[-2.586718749999989,14.227587890625003],[-2.113232421874983,14.16845703125],[-1.97304687499999,14.45654296875],[-1.049560546875,14.81953125],[-0.760449218749983,15.047753906249994],[-0.235888671874989,15.059423828124991],[0.217480468750011,14.911474609374991]]]},"properties":{"name":"Burkina Faso","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[91.94921875000003,21.50805664062503],[91.85947265625012,21.532958984375057],[91.90771484374997,21.722949218750017],[91.94921875000003,21.50805664062503]]],[[[91.87382812500002,21.832128906249977],[91.8375976562501,21.750244140625],[91.85068359375012,21.927050781250045],[91.87382812500002,21.832128906249977]]],[[[91.15078125000005,22.175195312499966],[91.04472656250002,22.10517578125001],[91.0794921875,22.519726562499983],[91.15078125000005,22.175195312499966]]],[[[91.55673828125006,22.38222656250005],[91.41132812500004,22.475683593750006],[91.45605468749997,22.61650390624999],[91.55673828125006,22.38222656250005]]],[[[90.77763671875007,22.089306640624983],[90.51503906250005,22.06513671875001],[90.68046875000007,22.327490234375006],[90.50292968749997,22.835351562499994],[90.59648437500002,22.863525390625057],[90.86816406250003,22.48486328125],[90.77763671875007,22.089306640624983]]],[[[88.94072265625002,26.24536132812497],[88.97041015625004,26.250878906250023],[88.95195312500002,26.412109375],[89.01865234375012,26.410253906249977],[89.28925781250004,26.03759765625],[89.54990234375006,26.005273437499994],[89.57275390625003,26.13232421875003],[89.67089843750003,26.21381835937504],[89.8229492187501,25.94140625000003],[89.82490234375004,25.56015625],[89.80087890625012,25.33613281250001],[89.81406250000006,25.305371093749955],[89.86630859375012,25.293164062499955],[90.11962890625003,25.21997070312497],[90.61308593750002,25.16772460937497],[92.04970703125005,25.16948242187499],[92.46835937500006,24.94414062499999],[92.38496093750004,24.848779296875023],[92.25126953125007,24.895068359375045],[92.22832031250002,24.88134765625],[92.22666015625012,24.77099609374997],[92.11748046875002,24.493945312500017],[92.06416015625004,24.374365234375006],[91.84619140624997,24.17529296875003],[91.72656250000003,24.20507812499997],[91.35019531250012,24.06049804687501],[91.16044921875007,23.66064453125],[91.359375,23.06835937500003],[91.43623046875004,23.19990234375001],[91.55351562500002,22.991552734375006],[91.61953125,22.97968750000001],[91.75097656250003,23.053515625000017],[91.75419921875007,23.287304687499955],[91.79003906249997,23.361035156249983],[91.937890625,23.504687500000017],[91.92949218750007,23.598242187499977],[91.92958984375,23.68598632812501],[91.97851562500003,23.691992187499977],[92.04404296875006,23.677783203125017],[92.24609375000003,23.683593750000057],[92.33378906250002,23.242382812499955],[92.36162109375002,22.929003906250074],[92.46445312500006,22.734423828125045],[92.49140625000004,22.685400390625006],[92.5612304687501,22.04804687500001],[92.57490234375004,21.978076171875045],[92.58281250000002,21.940332031249994],[92.5934570312501,21.46733398437499],[92.63164062500002,21.306201171875045],[92.33056640624997,21.439794921874977],[92.17958984375005,21.293115234375023],[92.32412109375,20.791845703125063],[92.0560546875,21.1748046875],[91.86337890625012,22.350488281249966],[91.7970703125001,22.297460937500006],[91.48007812500006,22.884814453125045],[91.2162109375,22.642236328124994],[90.94560546875002,22.597021484375034],[90.65625,23.025488281250006],[90.60400390624997,23.59135742187499],[90.55566406249997,23.42153320312505],[90.26914062500012,23.455859375000017],[90.59091796875012,23.266406250000045],[90.43505859374997,22.751904296874955],[90.61611328125,22.362158203125034],[90.23056640625006,21.82978515625004],[90.07119140625005,21.887255859375017],[90.20957031250006,22.156591796875006],[89.95419921875006,22.022851562500023],[89.91806640625012,22.11616210937501],[89.98515625000002,22.466406250000063],[89.81191406250005,21.983496093750006],[89.56855468750004,21.767431640625034],[89.48320312500007,22.275537109374994],[89.50058593750006,21.914355468750045],[89.35371093750004,21.72109375],[89.09394531250004,21.872753906249983],[89.05,22.274609374999983],[88.92070312500002,22.632031249999955],[88.89970703125002,22.843505859375057],[88.85058593749997,23.040527343750057],[88.928125,23.186621093750063],[88.72441406250002,23.254980468750034],[88.69765625,23.493017578125034],[88.63574218749997,23.55],[88.56738281249997,23.674414062500034],[88.69980468750006,24.002539062500006],[88.71376953125,24.069628906250017],[88.72656250000003,24.186230468749955],[88.7335937500001,24.23090820312501],[88.72353515625,24.27490234375],[88.64228515625004,24.325976562500017],[88.49853515625003,24.34663085937504],[88.3375,24.45385742187503],[88.225,24.460644531249983],[88.14550781250003,24.485791015624955],[88.07910156249997,24.549902343750063],[88.02343750000003,24.62783203125005],[88.03027343749997,24.66445312500005],[88.0451171875001,24.713037109374994],[88.1498046875,24.914648437500034],[88.1888671875,24.92060546875001],[88.27949218750004,24.881933593750034],[88.31337890625005,24.8818359375],[88.37294921875,24.961523437499977],[88.45625,25.18842773437504],[88.57382812500006,25.18789062499999],[88.92978515625012,25.222998046875063],[88.94414062500002,25.290771484375],[88.85478515625002,25.333544921875017],[88.76914062500006,25.490478515625],[88.50244140624997,25.537011718749994],[88.14746093749997,25.811425781250023],[88.1066406250001,25.841113281250045],[88.15078125000005,26.08715820312497],[88.33398437499997,26.257519531249955],[88.44042968749997,26.369482421875034],[88.38623046875003,26.471533203125034],[88.35146484375005,26.482568359374966],[88.36992187500002,26.564111328124994],[88.51826171875004,26.517773437499955],[88.68281250000004,26.291699218749983],[88.94072265625002,26.24536132812497]]]]},"properties":{"name":"Bangladesh","childNum":6}},{"geometry":{"type":"Polygon","coordinates":[[[28.585351562500023,43.742236328124996],[28.465429687500006,43.389306640624994],[28.133691406250023,43.39560546875],[27.92890625000001,43.1861328125],[27.88886718750001,42.74970703125],[27.484765625000023,42.468066406249996],[28.014453125000017,41.969042968749996],[27.47480468750001,41.946875],[27.294921875,42.079541015625],[27.24433593750001,42.09326171875],[27.01171875,42.058642578124996],[26.96875,42.02685546875],[26.884863281250006,41.991845703124994],[26.615332031250006,41.964892578124996],[26.549707031250023,41.896728515625],[26.51142578125001,41.8263671875],[26.3603515625,41.8015625],[26.327246093750006,41.772802734375],[26.31796875,41.744677734374996],[26.320898437500006,41.716552734375],[26.200585937500023,41.743798828124994],[26.107421875,41.72568359375],[26.085546875,41.704150390624996],[26.066015625,41.673242187499994],[26.1435546875,41.521533203124996],[26.155175781250023,41.434863281249996],[26.135351562500006,41.3857421875],[26.06640625,41.35068359375],[25.92333984375,41.311914062499994],[25.784960937500017,41.330419921875],[25.52705078125001,41.2998046875],[25.381933593750006,41.26435546875],[25.25117187500001,41.243554687499994],[24.773730468750017,41.356103515624994],[24.595996093750017,41.442724609375],[24.5693359375,41.4673828125],[24.51826171875001,41.552539062499996],[24.487890625,41.555224609374996],[24.056054687500023,41.527246093749994],[24.03291015625001,41.469091796875],[24.011328125,41.46005859375],[23.635156250000023,41.386767578124996],[23.53583984375001,41.386035156249996],[23.433398437500017,41.398730468749996],[23.3720703125,41.3896484375],[23.23984375,41.3849609375],[23.15595703125001,41.322070312499996],[22.916015625,41.336279296875],[23.00361328125001,41.73984375],[22.836816406250023,41.993603515625],[22.344042968750017,42.31396484375],[22.42207031250001,42.328857421875],[22.445703125000023,42.359130859375],[22.523535156250006,42.440966796874996],[22.53242187500001,42.481201171875],[22.524218750000017,42.50390625],[22.43623046875001,42.6291015625],[22.466796875,42.84248046875],[22.799902343750006,42.985742187499994],[22.976855468750017,43.18798828125],[22.85957031250001,43.25234375],[22.819726562500023,43.300732421875],[22.767578125,43.354150390624994],[22.554589843750023,43.454492187499994],[22.36962890625,43.781298828124996],[22.36542968750001,43.862109375],[22.399023437500006,43.96953125],[22.420800781250023,44.007421875],[22.452529688228115,44.0510441391688],[22.547921095934313,44.113823956634434],[22.688564844478098,44.254306249271906],[23.02851562500001,44.077978515625],[22.868261718750006,43.947900390624994],[22.919042968750006,43.83447265625],[25.4970703125,43.670800781249994],[26.2158203125,44.007275390625],[27.0869140625,44.167382812499994],[27.425390625,44.0205078125],[27.88427734375,43.987353515624996],[28.221972656250017,43.772851562499994],[28.585351562500023,43.742236328124996]]]},"properties":{"name":"Bulgaria","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[50.60722656250002,25.883105468750003],[50.57490234375001,25.806787109374994],[50.465917968750006,25.965527343749997],[50.46992187500001,26.228955078124997],[50.5859375,26.24072265625],[50.60722656250002,25.883105468750003]]]},"properties":{"name":"Bahrain","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-73.02685546874994,21.19238281250003],[-73.16455078125003,20.979150390625023],[-73.68115234375003,20.9755859375],[-73.68037109374995,21.103320312500017],[-73.52309570312497,21.190820312499966],[-73.23535156249997,21.15449218750004],[-73.05849609375,21.313378906249994],[-73.02685546874994,21.19238281250003]]],[[[-73.041015625,22.429052734375006],[-72.74726562500001,22.32739257812497],[-73.16191406250002,22.380712890625006],[-73.041015625,22.429052734375006]]],[[[-74.20673828124998,22.213769531250023],[-74.27690429687499,22.183691406250006],[-73.906396484375,22.527441406250063],[-73.95419921874995,22.71552734375001],[-73.84995117187503,22.731054687500063],[-73.83652343749998,22.538427734374977],[-74.20673828124998,22.213769531250023]]],[[[-74.05751953124997,22.723486328125034],[-74.27460937499995,22.71166992187503],[-74.30703125,22.83959960937497],[-74.05751953124997,22.723486328125034]]],[[[-74.84047851562494,22.894335937500017],[-75.22333984374995,23.165332031250074],[-75.13056640624998,23.267919921875006],[-75.31596679687502,23.668359374999966],[-74.84047851562494,22.894335937500017]]],[[[-75.66455078124997,23.45014648437501],[-76.03710937500003,23.60278320312503],[-76.01044921875001,23.671386718750057],[-75.66455078124997,23.45014648437501]]],[[[-74.42944335937497,24.068066406249955],[-74.55092773437502,23.96894531250001],[-74.52690429687502,24.105078125000034],[-74.42944335937497,24.068066406249955]]],[[[-77.65771484374994,24.249462890624955],[-77.75527343750002,24.163476562500023],[-77.61538085937494,24.216357421875045],[-77.5615234375,24.136816406250006],[-77.57373046875,23.739160156249994],[-77.77128906249999,23.752539062499977],[-77.99990234374994,24.219824218750063],[-77.65771484374994,24.249462890624955]]],[[[-75.30839843749999,24.2],[-75.50322265624996,24.139062500000023],[-75.40893554687503,24.265771484374994],[-75.72666015625,24.68935546875005],[-75.30839843749999,24.2]]],[[[-77.34755859375,25.013867187499983],[-77.56191406249997,25.030029296875],[-77.27558593750001,25.055761718750006],[-77.34755859375,25.013867187499983]]],[[[-77.74384765625001,24.70742187499999],[-77.74521484375,24.463476562500034],[-78.04492187499997,24.287451171875063],[-78.14580078125002,24.493457031250017],[-78.36650390624993,24.544189453125057],[-78.435302734375,24.627587890624994],[-78.24272460937493,24.65380859375],[-78.21137695312495,25.191259765624977],[-77.97529296874998,25.084814453125063],[-77.74384765625001,24.70742187499999]]],[[[-76.64882812499994,25.487402343750006],[-76.34379882812496,25.33203124999997],[-76.12661132812497,25.14052734375005],[-76.16953125,24.6494140625],[-76.319970703125,24.81767578124999],[-76.21376953124994,24.822460937499983],[-76.160400390625,25.119335937499983],[-76.36928710937502,25.312597656250006],[-76.62070312499998,25.43164062500003],[-76.78066406249997,25.426855468750006],[-76.71083984374997,25.564892578124983],[-76.64882812499994,25.487402343750006]]],[[[-78.49287109375001,26.729052734375017],[-77.92246093749998,26.69111328125001],[-78.74365234374994,26.50068359375004],[-78.98564453124996,26.689501953125045],[-78.79804687500001,26.58242187499999],[-78.59711914062493,26.797949218750006],[-78.49287109375001,26.729052734375017]]],[[[-77.22563476562496,25.904199218750023],[-77.40317382812498,26.02470703124996],[-77.24677734374998,26.156347656250034],[-77.238623046875,26.561132812500006],[-77.510595703125,26.845996093750045],[-77.94375,26.90356445312503],[-77.53388671874995,26.903417968750006],[-77.06635742187501,26.530175781249994],[-77.03828124999998,26.333447265624983],[-77.16728515624996,26.240332031250006],[-77.22563476562496,25.904199218750023]]]]},"properties":{"name":"Bahamas","childNum":14}},{"geometry":{"type":"Polygon","coordinates":[[[19.007128906250045,44.86918945312502],[19.348632812500057,44.88090820312502],[19.118457031250074,44.359960937500006],[19.583789062500017,44.04345703125003],[19.245019531249994,43.96503906250004],[19.495117187500057,43.642871093750045],[19.19433593749997,43.533300781250006],[19.164355468750017,43.53544921874999],[19.11279296874997,43.52773437500002],[19.080078125000057,43.51772460937502],[19.0283203125,43.53251953125002],[18.97421875,43.54233398437498],[18.95068359375,43.52666015624999],[19.036718750000034,43.35732421875002],[19.026660156250017,43.292431640624955],[18.97871093750001,43.28540039062503],[18.934667968750006,43.339453125000034],[18.85107421875003,43.34633789062502],[18.749218750000068,43.283544921875006],[18.67421875000008,43.230810546875006],[18.623632812500063,43.027685546875034],[18.488476562500068,43.01215820312498],[18.44384765625003,42.96845703125004],[18.46601562500001,42.777246093749994],[18.54589843750003,42.64160156249997],[18.436328125000017,42.559716796874994],[17.667578125000063,42.897119140624994],[17.585156250000068,42.93837890625005],[17.650488281250063,43.006591796875],[17.27382812500005,43.44575195312501],[16.300097656250017,44.12451171875],[16.10341796875008,44.52099609375006],[15.736621093750045,44.76582031250001],[15.788085937500057,45.17895507812497],[16.028320312500057,45.18959960937502],[16.29335937500005,45.00883789062496],[16.53066406250008,45.21669921875002],[16.918652343749983,45.27656249999998],[17.812792968750074,45.078125],[18.66259765625,45.07744140624999],[18.83642578125,44.883251953124955],[19.007128906250045,44.86918945312502]]]},"properties":{"name":"Bosnia and Herz.","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[28.14794921875,56.142919921875],[28.284277343750006,56.055908203125],[29.375,55.938720703125],[29.353417968750023,55.784375],[29.412988281250023,55.724853515625],[29.482226562500017,55.6845703125],[29.63007812500001,55.751171875],[29.6845703125,55.7697265625],[29.744140625,55.77041015625],[29.82392578125001,55.7951171875],[29.881640625000017,55.832324218749996],[29.93701171875,55.845263671874996],[30.04267578125001,55.83642578125],[30.23359375000001,55.84521484375],[30.625585937500006,55.666259765625],[30.906835937500006,55.57001953125],[30.90058593750001,55.397412109375],[30.82099609375001,55.3302734375],[30.810546875,55.306982421875],[30.814453125,55.2787109375],[30.87744140625,55.2234375],[30.958886718750023,55.13759765625],[30.97773437500001,55.08779296875],[30.97773437500001,55.05048828125],[30.829882812500017,54.914990234375],[30.804492187500017,54.8609375],[30.791015625,54.806005859375],[30.798828125,54.783251953124996],[30.984179687500017,54.6958984375],[31.12128906250001,54.648486328124996],[31.152148437500017,54.625341796875],[31.074804687500006,54.491796875],[31.18476562500001,54.452978515625],[31.299121093750017,54.29169921875],[31.403613281250017,54.195947265625],[31.62841796875,54.111181640625],[31.7919921875,54.055908203125],[31.825976562500017,54.030712890625],[31.837792968750023,54.00078125],[31.825292968750006,53.935009765625],[31.783007812500017,53.85498046875],[31.754199218750017,53.81044921875],[31.82080078125,53.791943359375],[31.9921875,53.796875],[32.20039062500001,53.78125],[32.45097656250002,53.6533203125],[32.70429687500001,53.336328125],[32.64443359375002,53.32890625],[32.57802734375002,53.31240234375],[32.469335937500006,53.2703125],[32.14199218750002,53.091162109375],[31.849707031250006,53.106201171875],[31.668261718750017,53.200927734375],[31.417871093750023,53.196044921875],[31.38837890625001,53.184814453125],[31.364550781250017,53.138964843749996],[31.30292968750001,53.060888671875],[31.2587890625,53.01669921875],[31.29511718750001,52.989794921874996],[31.35302734375,52.933447265625],[31.442773437500023,52.86181640625],[31.53515625,52.7982421875],[31.564843750000023,52.759228515625],[31.585546875,52.532470703125],[31.57734375000001,52.312304687499996],[31.6015625,52.284814453125],[31.64990234375,52.26220703125],[31.690625,52.220654296875],[31.758593750000017,52.125830078125],[31.76337890625001,52.10107421875],[31.57373046875,52.10810546875],[31.345996093750017,52.10537109375],[31.21796875000001,52.050244140625],[30.98066406250001,52.046191406249996],[30.845703125,51.953076171875],[30.755273437500023,51.895166015625],[30.667285156250017,51.814111328125],[30.583886718750023,51.68896484375],[30.533007812500017,51.596337890624994],[30.56074218750001,51.531494140625],[30.602343750000017,51.471240234374996],[30.611718750000023,51.40634765625],[30.63251953125001,51.355419921875],[30.449511718750017,51.274316406249994],[30.160742187500006,51.477880859375],[29.346484375000017,51.382568359375],[29.10205078125,51.6275390625],[29.06074218750001,51.625439453125],[29.013085937500023,51.598925781249996],[28.97773437500001,51.57177734375],[28.927539062500017,51.562158203124994],[28.849511718750023,51.540185546874994],[28.73125,51.433398437499996],[28.690234375000017,51.438867187499994],[28.647753906250017,51.45654296875],[28.599023437500023,51.542626953124994],[28.532031250000017,51.562451171875],[27.85859375000001,51.5923828125],[27.7,51.477978515625],[27.689746093750017,51.572412109374994],[27.296289062500023,51.597412109375],[27.270117187500006,51.613574218749996],[27.141992187500023,51.75205078125],[27.074121093750023,51.76083984375],[26.95283203125001,51.75400390625],[26.7734375,51.770703125],[25.785742187500006,51.923828125],[24.361914062500006,51.867529296875],[24.280078125000017,51.774707031249996],[24.126855468750023,51.6646484375],[23.978320312500017,51.59130859375],[23.951171875,51.58505859375],[23.8642578125,51.623974609375],[23.79169921875001,51.637109375],[23.706835937500017,51.64130859375],[23.61376953125,51.525390625],[23.605273437500017,51.517919921875],[23.652441406250006,52.040380859375],[23.175097656250017,52.28662109375],[23.915429687500023,52.770263671875],[23.484667968750017,53.939794921875],[23.55908203125,53.91982421875],[23.733691406250017,53.912255859375],[24.191308593750023,53.950439453125],[24.236621093750017,53.919970703124996],[24.31796875,53.89296875],[24.620703125,53.979833984375],[24.768164062500006,53.974658203124996],[24.78925781250001,53.9982421875],[24.82568359375,54.118994140625],[24.869531250000023,54.145166015625],[25.04609375000001,54.133056640625],[25.111425781250006,54.154931640625],[25.179492187500017,54.2142578125],[25.46113281250001,54.292773437499996],[25.505664062500017,54.264941406249996],[25.52734375,54.215136718749996],[25.497363281250017,54.175244140625],[25.573046875000017,54.139892578125],[25.765234375,54.17978515625],[25.702539062500023,54.29296875],[25.61689453125001,54.310107421874996],[25.557519531250023,54.310693359375],[25.54736328125,54.331835937499996],[25.56757812500001,54.37705078125],[25.62031250000001,54.460400390625],[25.68515625,54.535791015625],[25.72480468750001,54.564257812499996],[25.73164062500001,54.590380859374996],[25.722460937500017,54.71787109375],[25.859277343750023,54.919287109375],[25.964453125,54.94716796875],[26.09296875000001,54.9623046875],[26.175195312500023,55.003271484375],[26.250781250000017,55.12451171875],[26.291796875000017,55.139599609375],[26.601171875,55.130175781249996],[26.6484375,55.20419921875],[26.775683593750017,55.273095703125],[26.760156250000023,55.293359375],[26.68125,55.306445312499996],[26.49531250000001,55.318017578125],[26.457617187500006,55.34248046875],[26.469531250000017,55.371923828125],[26.51923828125001,55.44814453125],[26.56660156250001,55.546484375],[26.5908203125,55.62265625],[26.593554687500017,55.667529296874996],[27.052539062500017,55.83056640625],[27.576757812500006,55.798779296875],[28.14794921875,56.142919921875]]]},"properties":{"name":"Belarus","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-87.8529296875,17.4228515625],[-87.92998046874996,17.283007812500017],[-87.826416015625,17.546289062499994],[-87.8529296875,17.4228515625]]],[[[-88.89404296875,15.890625],[-89.2328125,15.888671875],[-89.16147460937503,17.81484375],[-89.13354492187503,17.970800781249977],[-88.80634765624998,17.965527343749983],[-88.52299804687499,18.445898437500063],[-88.29565429687494,18.47241210937503],[-88.34926757812494,18.358837890624983],[-88.1302734375,18.350732421875023],[-88.08525390624999,18.226123046875045],[-88.27172851562494,17.60986328125],[-88.203466796875,17.5166015625],[-88.31342773437501,16.632763671874983],[-88.89404296875,15.890625]]]]},"properties":{"name":"Belize","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[-64.73027343749999,32.29345703125],[-64.86284179687499,32.273876953125],[-64.66831054687499,32.38193359375],[-64.73027343749999,32.29345703125]]]},"properties":{"name":"Bermuda","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-58.15976562499999,-20.164648437500006],[-58.18017578125,-19.81787109375],[-59.09052734375,-19.286230468750006],[-60.00737304687499,-19.29755859375001],[-61.7568359375,-19.6453125],[-62.276318359375,-20.5625],[-62.27666015624999,-21.066015625],[-62.65097656249999,-22.233691406250003],[-62.84335937499999,-21.99726562500001],[-63.92167968749999,-22.028613281250003],[-63.97612304687499,-22.072558593750003],[-64.26640624999999,-22.603320312500003],[-64.30791015624999,-22.7953125],[-64.32529296874999,-22.82763671875],[-64.373974609375,-22.761035156250003],[-64.4455078125,-22.58535156250001],[-64.477734375,-22.4853515625],[-64.5236328125,-22.37158203125],[-64.60551757812499,-22.228808593750003],[-64.992626953125,-22.109667968750003],[-65.518798828125,-22.09453125],[-65.686181640625,-22.11025390625001],[-65.77104492187499,-22.099609375],[-65.86015624999999,-22.01972656250001],[-66.05859375,-21.879492187500006],[-66.098583984375,-21.835058593750006],[-66.17465820312499,-21.8056640625],[-66.220166015625,-21.802539062500003],[-66.24760742187499,-21.83046875],[-66.28212890625,-21.94746093750001],[-66.3224609375,-22.053125],[-66.365185546875,-22.11376953125],[-66.71171874999999,-22.21630859375],[-66.99111328125,-22.509863281250006],[-67.19487304687499,-22.82167968750001],[-67.362255859375,-22.85517578125001],[-67.57993164062499,-22.891699218750006],[-67.79443359375,-22.879492187500006],[-67.87944335937499,-22.82294921875001],[-67.88173828125,-22.49335937500001],[-68.18642578125,-21.61855468750001],[-68.197021484375,-21.30029296875],[-68.558251953125,-20.901953125],[-68.484326171875,-20.62841796875],[-68.74516601562499,-20.45859375],[-68.75932617187499,-20.115527343750003],[-68.560693359375,-19.967089843750003],[-68.559375,-19.90234375],[-68.578271484375,-19.856542968750006],[-68.69619140625,-19.74072265625],[-68.69829101562499,-19.72109375],[-68.57529296874999,-19.56015625],[-68.462890625,-19.43281250000001],[-68.470166015625,-19.409960937500003],[-68.49199218749999,-19.381933593750006],[-68.85795898437499,-19.093359375],[-68.96831054687499,-18.96796875000001],[-68.97885742187499,-18.81298828125],[-69.026806640625,-18.65625],[-69.09228515625,-18.28242187500001],[-69.145458984375,-18.14404296875],[-69.0939453125,-18.05048828125001],[-69.28232421874999,-17.96484375],[-69.31337890625,-17.943164062500003],[-69.5109375,-17.50605468750001],[-69.51108398437499,-17.5048828125],[-69.510986328125,-17.46035156250001],[-69.521923828125,-17.388964843750003],[-69.645703125,-17.24853515625],[-69.62485351562499,-17.2001953125],[-69.020703125,-16.6421875],[-69.03291015625,-16.47597656250001],[-68.8427734375,-16.337890625],[-69.21757812499999,-16.14912109375001],[-69.4208984375,-15.640625],[-69.17246093749999,-15.236621093750003],[-69.37470703125,-14.962988281250006],[-69.35947265624999,-14.7953125],[-68.87089843749999,-14.169726562500003],[-69.07412109375,-13.682812500000011],[-68.97861328124999,-12.880078125000011],[-68.68525390625,-12.501953125],[-69.57861328125,-10.951757812500006],[-69.228515625,-10.955664062500006],[-68.84833984375,-11.011132812500009],[-68.678369140625,-11.11279296875],[-68.39799804687499,-11.01875],[-68.0716796875,-10.703125],[-67.99169921875,-10.674414062500006],[-67.83500976562499,-10.662792968750011],[-67.72177734374999,-10.68310546875],[-67.416943359375,-10.389843750000011],[-66.575341796875,-9.89990234375],[-65.396142578125,-9.71240234375],[-65.298583984375,-10.146777343750003],[-65.31308593749999,-10.253027343750006],[-65.395458984375,-10.392285156250011],[-65.4369140625,-10.449023437500003],[-65.44711914062499,-10.507421875],[-65.33403320312499,-10.892773437500011],[-65.32377929687499,-11.024804687500009],[-65.389892578125,-11.246289062500011],[-65.1857421875,-11.74951171875],[-64.783447265625,-12.059375],[-64.42050781249999,-12.439746093750003],[-63.68857421874999,-12.47802734375],[-63.3466796875,-12.680078125],[-63.06748046874999,-12.669140625000011],[-62.76547851562499,-12.997265625000011],[-62.11801757812499,-13.159765625],[-62.09477539062499,-13.241992187500003],[-61.944726562499994,-13.40625],[-61.87412109374999,-13.470410156250011],[-61.789941406249994,-13.525585937500011],[-61.57568359375,-13.524804687500009],[-61.51157226562499,-13.541210937500011],[-61.41606445312499,-13.526562500000011],[-61.129150390625,-13.49853515625],[-61.07700195312499,-13.48974609375],[-60.506591796875,-13.78984375],[-60.372705078124994,-14.41875],[-60.273339843749994,-15.088769531250009],[-60.402001953124994,-15.0927734375],[-60.583203125,-15.098339843750011],[-60.53046875,-15.143164062500006],[-60.38046875,-15.318261718750009],[-60.242333984374994,-15.479589843750006],[-60.20664062499999,-15.901953125],[-60.18720703125,-16.132128906250003],[-60.17558593749999,-16.269335937500003],[-58.53793945312499,-16.328222656250006],[-58.49658203125,-16.32666015625],[-58.42368164062499,-16.307910156250003],[-58.37539062499999,-16.28359375],[-58.345605468749994,-16.284375],[-58.35039062499999,-16.490820312500006],[-58.470605468749994,-16.650195312500003],[-58.478125,-16.70068359375],[-58.45981445312499,-16.910742187500006],[-58.417382812499994,-17.08056640625],[-58.39599609375,-17.23427734375001],[-58.34775390624999,-17.28212890625001],[-57.99091796875,-17.51289062500001],[-57.905029296875,-17.532324218750006],[-57.832470703125,-17.512109375],[-57.78886718749999,-17.573046875],[-57.780175781249994,-17.67177734375001],[-57.66166992187499,-17.947363281250006],[-57.58647460937499,-18.12226562500001],[-57.49565429687499,-18.214648437500003],[-57.57402343749999,-18.279296875],[-57.725,-18.733203125],[-57.783105468749994,-18.91425781250001],[-57.716796875,-19.044042968750006],[-58.131494140624994,-19.74453125],[-57.860742187499994,-19.979589843750006],[-57.887597656249994,-20.02041015625001],[-57.96015625,-20.04072265625001],[-58.021142578124994,-20.05517578125],[-58.09375,-20.15107421875001],[-58.15976562499999,-20.164648437500006]]]},"properties":{"name":"Bolivia","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-48.48588867187493,-27.76699218749998],[-48.554589843749994,-27.81220703125004],[-48.542187499999955,-27.57480468749999],[-48.41489257812495,-27.399609375],[-48.48588867187493,-27.76699218749998]]],[[[-48.584423828124955,-26.401562499999983],[-48.665771484375,-26.289648437500006],[-48.53974609374998,-26.170312500000023],[-48.584423828124955,-26.401562499999983]]],[[[-45.26025390624997,-23.889160156249986],[-45.451416015625,-23.895605468749977],[-45.30234375,-23.727539062500014],[-45.26025390624997,-23.889160156249986]]],[[[-44.12929687499994,-23.14189453124999],[-44.36015624999999,-23.17207031250001],[-44.24287109374998,-23.074121093750037],[-44.12929687499994,-23.14189453124999]]],[[[-38.90356445312497,-13.473437499999974],[-38.97758789062496,-13.523535156249963],[-39.02216796874998,-13.445605468749989],[-38.907128906249994,-13.401074218749983],[-38.90356445312497,-13.473437499999974]]],[[[-38.743847656249955,-13.097070312500037],[-38.668115234374966,-12.880175781249989],[-38.601171875,-12.99257812499998],[-38.743847656249955,-13.097070312500037]]],[[[-44.49931640625002,-2.939648437499983],[-44.597753906250006,-3.037597656249943],[-44.4814453125,-2.717578125000031],[-44.49931640625002,-2.939648437499983]]],[[[-44.88310546874996,-1.317871093749986],[-45.020849609375034,-1.372363281249974],[-44.978662109374966,-1.267285156249983],[-44.88310546874996,-1.317871093749986]]],[[[-51.83251953124997,-1.433789062499969],[-51.938378906249966,-1.452636718749986],[-51.680029296875006,-1.086132812500026],[-51.546044921874966,-0.649609375],[-51.25400390624998,-0.54140625],[-51.16074218749998,-0.666699218750011],[-51.27631835937498,-1.02177734374996],[-51.83251953124997,-1.433789062499969]]],[[[-49.62866210937497,-0.229199218749969],[-49.11699218749999,-0.163574218750014],[-48.39267578124995,-0.29736328125],[-48.83359375,-1.390039062500023],[-49.038476562499994,-1.5140625],[-49.17270507812498,-1.41259765625],[-49.233984375000034,-1.59951171874998],[-49.50664062499999,-1.511621093750023],[-49.587890625,-1.712402343749972],[-49.805126953124955,-1.790234375000026],[-50.06572265625002,-1.703808593749997],[-50.50761718749999,-1.787988281250009],[-50.759765625,-1.240234374999972],[-50.72949218749997,-1.126757812499946],[-50.57695312499999,-1.103125],[-50.709619140624994,-1.07773437499999],[-50.796093749999955,-0.90625],[-50.6455078125,-0.27285156249998],[-50.24824218749998,-0.11640625],[-49.62866210937497,-0.229199218749969]]],[[[-50.65288085937499,-0.131640624999989],[-50.926367187500034,-0.327343749999983],[-51.03808593749994,-0.225878906250003],[-50.84218750000002,-0.050195312500009],[-50.65288085937499,-0.131640624999989]]],[[[-49.44389648437499,-0.112402343749977],[-49.83007812499997,-0.093896484375023],[-49.50346679687496,0.083691406250011],[-49.37231445312497,0.001074218749963],[-49.44389648437499,-0.112402343749977]]],[[[-49.73823242187498,0.26816406250002],[-49.917089843750006,-0.023193359375014],[-50.339453125,0.043359375000051],[-50.27265624999998,0.231738281249974],[-49.73823242187498,0.26816406250002]]],[[[-50.42612304687498,0.139257812500048],[-50.44394531249998,-0.007666015624949],[-50.623925781249966,0.054394531249983],[-50.372753906249955,0.590869140625031],[-50.33227539062497,0.259033203125028],[-50.42612304687498,0.139257812500048]]],[[[-50.152929687500006,0.393017578125054],[-50.26132812499998,0.359179687500003],[-50.281689453124955,0.51650390624998],[-50.05883789062503,0.638037109374963],[-50.152929687500006,0.393017578125054]]],[[[-50.29897460937502,1.93852539062496],[-50.45610351562496,1.910498046875034],[-50.49101562499996,2.128613281249969],[-50.34199218749998,2.14174804687498],[-50.29897460937502,1.93852539062496]]],[[[-59.69970703125,4.353515625],[-59.73857421874993,4.226757812500026],[-59.62021484374998,4.023144531250026],[-59.557763671874966,3.960009765625031],[-59.551123046875034,3.933544921874969],[-59.854394531249994,3.5875],[-59.99433593749998,2.689990234375031],[-59.88964843749997,2.362939453125009],[-59.75522460937495,2.27412109375004],[-59.74350585937498,2.12163085937496],[-59.75175781249996,1.962402343750028],[-59.75620117187498,1.900634765624972],[-59.666601562500006,1.746289062499969],[-59.53569335937499,1.7],[-59.23120117187494,1.376025390625031],[-58.82177734374994,1.201220703125031],[-58.787207031250006,1.208496093750014],[-58.73032226562498,1.247509765625054],[-58.68461914062499,1.28105468749996],[-58.511865234374966,1.284667968749986],[-58.506054687499926,1.438671875000011],[-58.39580078124993,1.481738281249989],[-58.38037109375,1.530224609375011],[-58.34067382812498,1.587548828125051],[-58.03466796875,1.520263671875014],[-57.9828125,1.648437500000014],[-57.87343750000002,1.667285156250045],[-57.79565429687497,1.7],[-57.59443359375001,1.704101562499986],[-57.54575195312495,1.726074218750028],[-57.31748046874998,1.963476562499991],[-57.27558593749998,1.959228515625014],[-57.189599609374966,1.981591796875037],[-57.11889648437494,2.013964843749974],[-57.09267578125002,2.005810546874997],[-57.03759765625,1.936474609374997],[-56.96953124999999,1.91640625],[-56.48281249999994,1.942138671874986],[-56.019921874999966,1.842236328124983],[-55.96333007812498,1.85708007812498],[-55.929638671874955,1.8875],[-55.92163085937503,1.976660156250006],[-55.91533203124999,2.039550781250028],[-55.96196289062496,2.09511718749998],[-56.02006835937499,2.15815429687504],[-56.073632812499994,2.236767578124969],[-56.13769531249997,2.259033203124986],[-56.12939453124997,2.299511718749969],[-56.08779296875002,2.341308593750043],[-56.045117187499955,2.364404296875037],[-56.02036132812498,2.392773437500054],[-55.993505859375006,2.497509765624983],[-55.9755859375,2.515966796875006],[-55.957470703124955,2.52045898437504],[-55.730566406250006,2.406152343750023],[-55.385351562500006,2.440625],[-55.34399414062503,2.488769531249972],[-55.28603515625002,2.49965820312498],[-55.18769531249998,2.547509765625037],[-55.114111328125006,2.539208984375037],[-55.07031249999994,2.548339843750028],[-55.005810546874955,2.592968749999983],[-54.97866210937502,2.597656250000043],[-54.968408203124966,2.548339843750028],[-54.92656249999999,2.497363281250045],[-54.876074218750006,2.450390624999969],[-54.72221679687499,2.441650390624972],[-54.69741210937502,2.359814453124997],[-54.66186523437497,2.327539062499994],[-54.61625976562499,2.326757812500006],[-54.59194335937502,2.313769531250031],[-54.55048828125001,2.293066406249991],[-54.51508789062498,2.245458984374963],[-54.43310546875,2.207519531250057],[-54.13007812499998,2.121044921875026],[-53.76777343749998,2.354833984375048],[-52.90346679687502,2.211523437499977],[-52.58300781250003,2.528906249999977],[-52.327880859375,3.18173828125002],[-51.65253906249998,4.061279296874972],[-51.54707031250001,4.31088867187502],[-51.219921874999955,4.093603515624991],[-50.71440429687502,2.134033203125],[-50.458886718749994,1.829589843749972],[-49.957128906250006,1.65986328125004],[-49.898876953124955,1.16298828124998],[-50.29443359374997,0.835742187500003],[-50.755078124999955,0.222558593749966],[-51.28291015625001,-0.085205078125028],[-51.98081054687498,-1.367968749999974],[-52.22924804687497,-1.3625],[-52.664160156250034,-1.551757812500028],[-51.94755859374996,-1.586718749999946],[-50.89492187500002,-0.937597656249963],[-50.690039062500006,-1.761718749999986],[-50.40322265625002,-2.015527343750009],[-49.999218749999955,-1.831835937499974],[-49.71953125000002,-1.926367187499963],[-49.31367187500001,-1.731738281250003],[-49.63652343749996,-2.656933593750026],[-49.45751953125,-2.504589843749983],[-49.21103515624998,-1.916503906249986],[-48.99130859374998,-1.829785156249997],[-48.71000976562496,-1.487695312500023],[-48.46293945312499,-1.613964843749997],[-48.349804687499926,-1.482128906249955],[-48.46806640624996,-1.393847656250003],[-48.44980468749998,-1.145507812499943],[-48.11508789062498,-0.7375],[-47.557324218749955,-0.669921874999957],[-47.418652343749955,-0.765917968749974],[-47.39809570312502,-0.626660156250026],[-45.45859374999995,-1.35625],[-45.32915039062496,-1.71728515625],[-45.07636718749998,-1.466406249999949],[-44.72114257812498,-1.733496093750006],[-44.778515624999955,-1.798828125],[-44.651269531249966,-1.745800781250026],[-44.537792968749955,-2.052734374999943],[-44.75634765624997,-2.265527343749952],[-44.66240234375002,-2.373242187499955],[-44.435449218749966,-2.168066406249991],[-44.38183593749997,-2.365527343749989],[-44.52011718749998,-2.40546875000004],[-44.589013671874994,-2.573437499999983],[-44.72304687500002,-3.204785156249997],[-44.43754882812496,-2.944433593749977],[-44.228613281250006,-2.471289062499949],[-44.105566406250006,-2.493457031250031],[-44.19267578124999,-2.809570312499943],[-43.93291015624999,-2.583496093749986],[-43.45512695312499,-2.502050781250006],[-43.38007812499998,-2.376074218750006],[-42.93671874999998,-2.465039062500011],[-42.24960937499998,-2.7919921875],[-41.876171874999926,-2.746582031249986],[-41.479931640624955,-2.916503906249972],[-40.474560546874926,-2.795605468750026],[-39.96469726562498,-2.861523437499955],[-38.475781249999955,-3.717480468749997],[-38.04882812500003,-4.216406250000034],[-37.626318359375006,-4.592089843750003],[-37.30146484375001,-4.713085937499969],[-37.174658203125006,-4.912402343749974],[-36.590722656249966,-5.097558593749952],[-35.549414062500006,-5.129394531249957],[-35.39257812499994,-5.250878906250009],[-34.833886718749994,-7.024414062500014],[-34.83466796874998,-7.97148437499996],[-35.34086914062499,-9.230664062499983],[-35.76396484374993,-9.702539062500023],[-35.890820312499926,-9.687011718749957],[-35.88544921875001,-9.84765625],[-36.39833984374994,-10.484082031249983],[-36.768310546875,-10.671679687500017],[-37.18281249999998,-11.06845703125002],[-37.35600585937502,-11.403906249999977],[-37.35922851562495,-11.252539062499963],[-37.68872070312503,-12.1],[-38.019238281249955,-12.591308593750028],[-38.401757812499994,-12.966210937500023],[-38.69096679687502,-12.623925781250009],[-38.85175781250001,-12.790136718750034],[-38.76372070312502,-12.9072265625],[-38.835302734375034,-13.147167968750026],[-39.030908203124994,-13.365136718750023],[-39.08935546875,-13.588183593749989],[-38.988623046875006,-13.61503906249996],[-39.04814453124996,-14.043945312500028],[-38.94233398437498,-14.030664062499994],[-39.05957031249997,-14.654785156249957],[-38.88061523437503,-15.864257812499972],[-39.20288085937503,-17.178125],[-39.154003906249926,-17.70390625000003],[-39.650781249999966,-18.252343750000037],[-39.78330078124998,-19.571777343749986],[-40.001367187499994,-19.74199218750003],[-40.39594726562501,-20.56943359375002],[-40.78925781250001,-20.90605468750003],[-40.954541015624926,-21.237890624999963],[-41.04726562499999,-21.505664062499974],[-41.00029296875002,-21.99902343750003],[-41.70551757812498,-22.30966796874999],[-41.980419921874955,-22.580664062499963],[-42.042382812499966,-22.947070312500003],[-42.95830078124996,-22.96708984374999],[-43.154296875,-22.725195312500006],[-43.22416992187502,-22.991210937500014],[-43.898828124999966,-23.10146484375001],[-43.97382812499998,-23.057324218749983],[-43.675976562499955,-23.00947265625001],[-43.86616210937498,-22.910546875000023],[-44.63725585937496,-23.05546875],[-44.67382812499994,-23.206640625000034],[-44.56967773437495,-23.27402343749999],[-45.32539062499998,-23.59970703124999],[-45.464306640624955,-23.802539062500017],[-45.97207031250002,-23.795507812500006],[-46.86728515624998,-24.236328125000014],[-47.989160156249994,-25.03574218749999],[-47.92939453124998,-25.16826171874999],[-48.20273437499998,-25.41650390625003],[-48.18593749999994,-25.309863281249974],[-48.402490234374994,-25.27207031249999],[-48.47612304687499,-25.44296875],[-48.73173828124993,-25.36875],[-48.6921875,-25.49150390625003],[-48.40117187500002,-25.59736328125001],[-48.665771484375,-25.844335937499963],[-48.576318359374994,-25.935449218749966],[-48.61943359374996,-26.17939453125001],[-48.74829101562503,-26.26865234374999],[-48.55415039062498,-27.195996093749997],[-48.62080078124998,-28.075585937499966],[-48.799658203125006,-28.575292968749977],[-49.27128906249999,-28.87119140625005],[-49.745996093749966,-29.363183593749994],[-50.299511718749955,-30.42578125000003],[-50.92138671874997,-31.25839843750002],[-52.039208984374994,-32.11484374999996],[-52.063232421875,-31.830371093750017],[-51.68066406249994,-31.774609375000026],[-51.272167968749955,-31.476953125000037],[-51.16142578124996,-31.11884765625001],[-50.980078125000034,-31.09423828124997],[-50.94082031249994,-30.903710937499966],[-50.68930664062495,-30.70419921874999],[-50.71630859374994,-30.425976562499983],[-50.58193359375002,-30.438867187500037],[-50.56352539062499,-30.25361328125004],[-51.02495117187493,-30.36865234375003],[-51.29804687499998,-30.03486328124997],[-51.15727539062499,-30.364257812500014],[-51.283056640625034,-30.751562499999963],[-51.35908203124998,-30.674511718749983],[-51.506298828124955,-31.104492187500014],[-51.97246093749999,-31.383789062499986],[-52.19355468749998,-31.885546874999974],[-52.12739257812501,-32.1677734375],[-52.652246093749994,-33.137792968750006],[-53.37060546874997,-33.74218750000003],[-53.39755859374995,-33.737304687500014],[-53.46357421875001,-33.70986328125002],[-53.531347656250034,-33.65546875000004],[-53.531347656250034,-33.1708984375],[-53.511865234374966,-33.10869140625003],[-53.482861328124926,-33.068554687500026],[-53.39521484375001,-33.01035156249998],[-53.31010742187499,-32.927050781249974],[-53.21406249999998,-32.82109375],[-53.12558593749998,-32.73671875],[-53.15727539062496,-32.680078125],[-53.601708984374994,-32.40302734374997],[-53.76171875,-32.05683593749997],[-53.920605468749926,-31.95234375],[-54.220556640625034,-31.855175781249997],[-54.58764648437503,-31.48515625000003],[-55.036035156249994,-31.27900390625004],[-55.091162109375034,-31.31396484374997],[-55.173535156249926,-31.279589843749974],[-55.557324218749955,-30.8759765625],[-55.60302734375003,-30.85078125000001],[-55.62714843749998,-30.858105468749997],[-55.650488281250034,-30.89208984375],[-55.66523437500001,-30.92490234375002],[-55.807763671874994,-31.036718749999977],[-55.87368164062502,-31.069628906250017],[-55.95200195312498,-31.08085937499999],[-56.0046875,-31.079199218750006],[-56.01845703125002,-30.991894531249983],[-55.998974609374955,-30.837207031250003],[-56.4072265625,-30.44746093750001],[-56.83271484374998,-30.107226562499974],[-57.120507812499994,-30.144433593749994],[-57.21445312499995,-30.283398437499983],[-57.55229492187496,-30.261230468749986],[-57.60888671875003,-30.187792968750045],[-57.563867187499994,-30.139941406249974],[-57.40522460937501,-30.03388671875004],[-57.22465820312499,-29.782128906249994],[-56.938623046874994,-29.594824218750034],[-55.890527343749994,-28.370019531249994],[-55.68725585937497,-28.38164062499996],[-55.72548828125002,-28.20410156250003],[-55.10151367187501,-27.866796874999963],[-54.82910156250003,-27.55058593750003],[-54.32700195312495,-27.423535156249997],[-53.83818359375002,-27.121093750000014],[-53.668554687500006,-26.288183593749977],[-53.89116210937499,-25.66884765625001],[-54.15458984374999,-25.523046874999963],[-54.44394531249998,-25.625],[-54.615869140624994,-25.576074218750023],[-54.61054687499998,-25.432714843750034],[-54.47314453124997,-25.22021484375],[-54.43623046875001,-25.12128906250001],[-54.281005859375,-24.30605468750001],[-54.31826171874994,-24.128125],[-54.26689453124996,-24.06582031250001],[-54.241796875,-24.047265624999966],[-54.44023437500002,-23.90175781249998],[-54.62548828125,-23.8125],[-54.98266601562494,-23.974511718749966],[-55.081884765625006,-23.997656249999977],[-55.1943359375,-24.017480468750023],[-55.28691406249993,-24.00429687499999],[-55.366308593750034,-23.99101562499996],[-55.41591796875002,-23.95136718749997],[-55.4423828125,-23.86533203125002],[-55.4423828125,-23.792578125000034],[-55.458886718749966,-23.686718750000054],[-55.51845703124994,-23.627246093750017],[-55.53828124999998,-23.580957031249994],[-55.61767578125,-22.67148437499999],[-55.74663085937499,-22.51269531249997],[-55.753271484375006,-22.410156250000043],[-55.84916992187499,-22.307617187500014],[-55.991406249999926,-22.28115234375005],[-56.18984374999994,-22.28115234375005],[-56.246044921874926,-22.26464843749997],[-56.39487304687498,-22.092675781250023],[-56.44780273437502,-22.07617187500003],[-56.77519531249999,-22.261328125],[-57.955908203125034,-22.109179687500003],[-57.94267578124999,-21.79833984375],[-57.830224609374994,-20.99794921875001],[-57.91513671874998,-20.690332031249966],[-57.97905273437493,-20.65732421874999],[-58.00224609374996,-20.465429687499977],[-58.02539062499997,-20.41582031249999],[-58.05844726562495,-20.38613281249998],[-58.091503906249926,-20.33320312500004],[-58.124609375000034,-20.293457031250014],[-58.13779296874995,-20.237304687500043],[-58.15976562499998,-20.164648437499977],[-58.09375,-20.15107421874997],[-58.021142578124994,-20.05517578124997],[-57.96015625000001,-20.04072265625004],[-57.887597656249966,-20.020410156249994],[-57.860742187499994,-19.97958984375002],[-58.029931640624994,-19.83271484375004],[-58.131494140624994,-19.74453125],[-57.71679687499997,-19.044042968750034],[-57.73085937499999,-18.91718750000004],[-57.783105468749994,-18.91425781249997],[-57.725,-18.73320312500003],[-57.57402343749993,-18.279296875000014],[-57.49565429687496,-18.21464843749999],[-57.58647460937499,-18.122265625],[-57.66166992187493,-17.94736328124999],[-57.78017578125002,-17.67177734374998],[-57.78886718750002,-17.573046875000017],[-57.83247070312501,-17.512109375000037],[-57.90502929687497,-17.53232421874999],[-57.990917968749955,-17.512890625000026],[-58.20556640625,-17.363085937499974],[-58.347753906250006,-17.282128906249994],[-58.39599609374997,-17.234277343750023],[-58.417382812499994,-17.08056640624997],[-58.459814453125006,-16.910742187500006],[-58.478125,-16.70068359375003],[-58.470605468749994,-16.650195312500045],[-58.35039062500002,-16.49082031249999],[-58.34560546875002,-16.284375],[-58.375390624999966,-16.283593749999966],[-58.423681640625034,-16.30791015625003],[-58.49658203124994,-16.32666015625003],[-58.537939453125034,-16.32822265624999],[-60.17558593749996,-16.26933593749999],[-60.187207031249955,-16.132128906250017],[-60.206640625,-15.90195312500002],[-60.242333984374994,-15.479589843750034],[-60.38046874999998,-15.318261718750023],[-60.53046874999998,-15.143164062499977],[-60.58320312499998,-15.098339843749983],[-60.273339843749994,-15.088769531249994],[-60.372705078124994,-14.41875],[-60.506591796875,-13.78984375],[-61.077001953125034,-13.489746093750014],[-61.129150390625,-13.498535156250028],[-61.41606445312502,-13.526562499999969],[-61.511572265625006,-13.541210937500011],[-61.789941406249966,-13.525585937500026],[-61.87412109374998,-13.470410156249983],[-61.944726562499966,-13.40625],[-62.09477539062499,-13.241992187499989],[-62.118017578125006,-13.15976562500002],[-62.765478515625034,-12.99726562500004],[-63.01518554687502,-12.80556640624998],[-63.067480468750006,-12.669140624999983],[-63.34667968749994,-12.68007812499999],[-63.68857421874998,-12.478027343749957],[-64.42050781249995,-12.439746093749974],[-64.783447265625,-12.059375],[-65.18574218749998,-11.749511718749957],[-65.389892578125,-11.246289062500011],[-65.33403320312499,-10.892773437500026],[-65.44711914062503,-10.507421875000034],[-65.4369140625,-10.449023437499946],[-65.39545898437498,-10.392285156250026],[-65.31308593749998,-10.253027343749991],[-65.29858398437497,-10.146777343750017],[-65.39614257812494,-9.712402343749986],[-66.57534179687502,-9.899902343749986],[-67.41694335937495,-10.389843749999969],[-67.72177734374998,-10.683105468749943],[-67.83500976562496,-10.662792968749983],[-67.99169921875,-10.674414062499949],[-68.07167968749994,-10.703125],[-68.39799804687499,-11.01875],[-68.678369140625,-11.11279296875],[-68.84833984374998,-11.01113281249998],[-69.228515625,-10.955664062499963],[-69.46254882812497,-10.948144531250023],[-69.57861328125,-10.951757812499963],[-69.67402343749998,-10.9541015625],[-69.83979492187501,-10.93339843749996],[-69.96035156249997,-10.92988281250004],[-70.06630859374997,-10.982421875],[-70.22006835937503,-11.04765625],[-70.29038085937498,-11.064257812499974],[-70.34199218750001,-11.066699218750017],[-70.39228515624995,-11.058593749999972],[-70.45087890624998,-11.024804687500009],[-70.53325195312496,-10.946875],[-70.59653320312498,-10.976855468750017],[-70.642333984375,-11.010253906249986],[-70.59916992187499,-9.620507812500009],[-70.54111328124998,-9.4375],[-70.60791015625,-9.463671875000031],[-70.63691406249995,-9.478222656249969],[-71.041748046875,-9.81875],[-71.11528320312499,-9.852441406250009],[-71.33940429687499,-9.988574218750031],[-72.18159179687495,-10.003710937500003],[-72.37905273437497,-9.51015625],[-73.20942382812493,-9.411425781249946],[-73.08984375,-9.26572265625002],[-72.970361328125,-9.120117187500028],[-72.97402343750002,-8.9931640625],[-73.07050781249995,-8.8828125],[-73.203125,-8.719335937499991],[-73.30244140624995,-8.654003906250011],[-73.36040039062496,-8.479296875000031],[-73.39814453125001,-8.458984374999986],[-73.54912109374993,-8.34580078125002],[-73.73203125,-7.875390625],[-73.72041015624993,-7.782519531250017],[-73.76689453124999,-7.753515624999963],[-73.82207031249996,-7.738964843750026],[-73.89462890624998,-7.654785156250014],[-73.946875,-7.611230468750023],[-73.98173828124996,-7.58505859375002],[-74.00205078125003,-7.556054687499966],[-73.98173828124996,-7.535742187500006],[-73.95849609374994,-7.506640625000031],[-73.96430664062498,-7.378906250000028],[-73.74946289062498,-7.335351562500037],[-73.72041015624993,-7.309277343749969],[-73.758203125,-7.172753906249952],[-73.79301757812499,-7.135058593750003],[-73.75810546874999,-6.90576171875],[-73.137353515625,-6.4658203125],[-73.23554687500001,-6.098437500000017],[-73.209375,-6.028710937500023],[-73.16289062499996,-5.933398437499974],[-72.97988281249997,-5.634863281249991],[-72.88706054687498,-5.122753906250026],[-72.83193359374994,-5.09375],[-72.69873046874997,-5.067187499999989],[-72.60834960937495,-5.009570312499974],[-72.46899414062497,-4.901269531250023],[-72.35283203124993,-4.786035156249994],[-72.25678710937501,-4.74892578124998],[-71.8447265625,-4.504394531249986],[-70.97368164062499,-4.350488281249994],[-70.86601562499999,-4.229589843749963],[-70.79951171874995,-4.173339843749957],[-70.72158203124997,-4.15888671875004],[-70.53066406249997,-4.167578125000034],[-70.40463867187498,-4.150097656250026],[-70.34365234375,-4.193652343750017],[-70.31689453124994,-4.246972656250037],[-70.23916015625002,-4.30117187499998],[-70.12880859375,-4.286621093749943],[-70.05332031249998,-4.333105468750006],[-70.00395507812496,-4.327246093749963],[-69.97202148437503,-4.30117187499998],[-69.96591796875003,-4.2359375],[-69.94819335937498,-4.200585937500009],[-69.66904296875003,-2.667675781249997],[-69.40024414062498,-1.194921874999977],[-69.63398437500001,-0.50927734375],[-70.07050781249993,-0.13886718750004],[-70.05390624999993,0.578613281250028],[-69.47211914062498,0.72993164062504],[-69.15332031249994,0.65878906250002],[-69.31181640624999,1.050488281249969],[-69.85214843750003,1.05952148437504],[-69.84858398437493,1.708740234375043],[-68.17656249999999,1.719824218749991],[-68.25595703125,1.845507812500017],[-68.19379882812495,1.987011718749983],[-67.93623046874998,1.748486328124969],[-67.40043945312499,2.116699218750028],[-67.11923828124998,1.703613281249986],[-67.082275390625,1.185400390625006],[-66.87602539062499,1.223046875000037],[-66.34711914062498,0.7671875],[-66.06005859375003,0.78535156250004],[-65.68144531249999,0.983447265624989],[-65.52299804687493,0.843408203124966],[-65.55605468750002,0.687988281250014],[-65.47338867187497,0.691259765624977],[-65.10375976562497,1.108105468749983],[-64.20502929687493,1.52949218750004],[-64.00849609374995,1.931591796874969],[-63.43251953124994,2.155566406250045],[-63.389257812500006,2.411914062500045],[-64.04658203124998,2.502392578124997],[-64.22109375000002,3.587402343749972],[-64.66899414062496,4.01181640625002],[-64.788671875,4.276025390625023],[-64.57636718750001,4.139892578125],[-64.19248046874995,4.126855468750009],[-64.02148437500003,3.929101562500051],[-63.33867187500002,3.943896484375045],[-62.85698242187502,3.593457031249969],[-62.71210937499998,4.01791992187502],[-62.41064453124994,4.156738281249972],[-62.153125,4.098388671874986],[-61.82084960937496,4.197021484375],[-61.28007812500002,4.516894531249974],[-61.00283203125002,4.535253906249991],[-60.603857421875006,4.94936523437498],[-60.671972656250034,5.164355468749989],[-60.71196289062499,5.191552734375023],[-60.742138671874926,5.202050781250037],[-60.6513671875,5.221142578125011],[-60.45952148437499,5.188085937500034],[-60.40878906249998,5.21015625],[-60.33520507812497,5.199316406250006],[-60.241650390624926,5.257958984374966],[-60.14204101562498,5.238818359374974],[-59.990673828124955,5.082861328124991],[-60.14863281249998,4.533251953125031],[-59.69970703125,4.353515625]]]]},"properties":{"name":"Brazil","childNum":17}},{"geometry":{"type":"Polygon","coordinates":[[[-59.493310546874994,13.081982421874997],[-59.611328125,13.102099609374989],[-59.6466796875,13.303125],[-59.427636718749994,13.152783203124997],[-59.493310546874994,13.081982421874997]]]},"properties":{"name":"Barbados","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[115.02675781250005,4.899707031249989],[115.1400390625,4.899755859374991],[115.290625,4.352587890624989],[115.10703125000006,4.390429687499974],[115.02675781250005,4.899707031249989]]],[[[115.02675781250005,4.899707031249989],[114.74667968750006,4.718066406250017],[114.84023437500005,4.393212890625009],[114.65410156250007,4.037646484375045],[114.0638671875,4.592675781249966],[114.42441406250006,4.660400390625],[114.99541015625002,5.022363281250023],[115.02675781250005,4.899707031249989]]]]},"properties":{"name":"Brunei","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[91.63193359375003,27.759960937499997],[91.5947265625,27.557666015624996],[91.74306640625002,27.442529296874994],[91.85126953125001,27.438623046874994],[91.95097656249999,27.458300781249996],[91.99082031250003,27.4501953125],[92.044921875,27.364697265624997],[92.08339843750002,27.290625],[92.03115234375002,27.214306640624997],[92.00253906250003,27.147363281249994],[91.99228515625003,27.099902343749996],[91.99863281250003,27.079296875],[92.03085937500003,27.040820312499996],[92.06816406249999,26.9751953125],[92.07343750000001,26.91484375],[92.04970703125002,26.874853515625],[91.99833984374999,26.85498046875],[91.84208984374999,26.852978515624997],[91.67158203125001,26.802001953125],[91.517578125,26.807324218749997],[91.45585937499999,26.866894531249997],[91.4267578125,26.867089843749994],[91.28652343750002,26.789941406249994],[90.73964843750002,26.771679687499997],[90.34589843750001,26.890332031249997],[90.2060546875,26.847509765625],[90.12294921875002,26.754589843749997],[89.94316406249999,26.723925781249996],[89.76386718750001,26.7015625],[89.60996093750003,26.719433593749997],[89.58613281250001,26.778955078124994],[89.33212890625003,26.8486328125],[89.14824218749999,26.816162109375],[89.04091796875002,26.865039062499996],[88.85761718750001,26.961474609374996],[88.73876953125,27.175585937499996],[88.76035156250003,27.218115234375],[88.88164062499999,27.2974609375],[88.89140624999999,27.316064453124994],[88.94755859374999,27.464013671874994],[89.48066406250001,28.059960937499994],[89.53691406249999,28.107421875],[89.65273437500002,28.15830078125],[89.74980468749999,28.188183593749997],[89.81689453125,28.256298828124997],[89.89785156250002,28.294140625],[89.98105468750003,28.311181640624994],[90.34824218750003,28.243945312499996],[90.36298828125001,28.216503906249997],[90.33310546875003,28.093994140625],[90.35273437500001,28.080224609374994],[90.47734374999999,28.070849609374996],[90.63007812500001,28.078564453124997],[90.71572265625002,28.071728515624997],[91.02080078124999,27.970068359375],[91.07773437500003,27.974462890625],[91.22587890624999,28.071240234374997],[91.27304687500003,28.078369140625],[91.30683593750001,28.064013671874996],[91.36757812500002,28.021630859374994],[91.64189453124999,27.923242187499994],[91.63193359375003,27.759960937499997]]]},"properties":{"name":"Bhutan","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[25.2587890625,-17.793554687500006],[25.242285156250006,-17.969042968750003],[25.939355468750023,-18.93867187500001],[26.168066406250006,-19.53828125000001],[27.17822265625,-20.10097656250001],[27.28076171875,-20.47871093750001],[27.679296875,-20.503027343750006],[27.66943359375,-21.064257812500003],[28.014062500000023,-21.55419921875],[29.02558593750001,-21.796875],[29.042382812500023,-22.018359375],[29.237207031250023,-22.07949218750001],[29.315234375000017,-22.15771484375],[29.36484375,-22.193945312500006],[29.1298828125,-22.21328125],[29.013476562500017,-22.278417968750006],[28.94580078125,-22.395117187500006],[28.83984375,-22.480859375],[28.21015625000001,-22.693652343750003],[27.812597656250006,-23.108007812500006],[27.7685546875,-23.14892578125],[27.085546875,-23.577929687500003],[26.835058593750006,-24.240820312500006],[26.617773437500006,-24.3955078125],[26.451757812500006,-24.58271484375001],[26.39716796875001,-24.613574218750003],[26.130859375,-24.671484375],[26.031835937500006,-24.702441406250003],[25.912109375,-24.74746093750001],[25.518164062500006,-25.66279296875001],[25.21337890625,-25.75625],[24.33056640625,-25.74287109375001],[24.19296875,-25.632910156250006],[23.969531250000017,-25.626074218750006],[23.89375,-25.600878906250003],[23.389257812500006,-25.29140625],[23.148730468750017,-25.288671875],[22.878808593750023,-25.45791015625001],[22.59765625,-26.13271484375001],[22.548632812500017,-26.17841796875001],[22.47089843750001,-26.219042968750003],[22.217578125000017,-26.38886718750001],[22.090917968750006,-26.580175781250006],[22.01093750000001,-26.635839843750006],[21.78828125000001,-26.710058593750006],[21.738085937500017,-26.80683593750001],[21.694726562500023,-26.840917968750006],[20.73984375,-26.84882812500001],[20.641406250000017,-26.7421875],[20.79316406250001,-25.915625],[20.4306640625,-25.147070312500006],[19.98046875,-24.77675781250001],[19.977343750000017,-22.00019531250001],[20.9794921875,-21.9619140625],[20.97412109375,-18.31884765625],[23.219335937500006,-17.99970703125001],[23.599707031250006,-18.4599609375],[24.243945312500017,-18.0234375],[24.530566406250017,-18.052734375],[24.909082031250023,-17.821386718750006],[25.2587890625,-17.793554687500006]]]},"properties":{"name":"Botswana","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[22.86005859375001,10.919677734375],[23.646289062500017,9.822900390624994],[23.62265625,9.340625],[23.46826171875,9.11474609375],[23.53730468750001,8.815820312499994],[24.147363281250023,8.665625],[24.291406250000023,8.29140625],[24.853320312500017,8.137548828124991],[25.20039062500001,7.807910156249989],[25.18134765625001,7.557226562499991],[25.27890625,7.427490234375],[26.36181640625,6.635302734374989],[26.30859375,6.455322265625],[26.514257812500006,6.069238281249994],[27.143945312500023,5.722949218749989],[27.4033203125,5.109179687499989],[27.071875,5.199755859374989],[26.822070312500017,5.062402343749994],[25.52509765625001,5.31210937499999],[25.065234375000017,4.967431640624994],[24.31982421875,4.994140625],[23.41718750000001,4.663134765624989],[22.864550781250017,4.723876953125],[22.422167968750017,4.134960937499997],[20.55810546875,4.462695312499989],[20.226367187500017,4.829638671874989],[19.806542968750023,5.089306640624997],[19.5009765625,5.127490234374989],[19.06855468750001,4.891406249999989],[18.594140625000023,4.346240234374989],[18.6103515625,3.478417968749994],[18.474414062500017,3.622998046874997],[18.160937500000017,3.499804687499989],[17.491601562500023,3.687304687499989],[16.610742187500023,3.50537109375],[16.468554687500017,2.831738281249997],[16.183398437500017,2.270068359374989],[16.0634765625,2.90859375],[15.128710937500017,3.826904296875],[15.063574218750006,4.284863281249997],[14.73125,4.602392578124991],[14.56298828125,5.279931640624994],[14.616894531250011,5.865136718749994],[14.43115234375,6.038720703124994],[14.7392578125,6.27978515625],[15.206738281250011,7.206152343749991],[15.480078125,7.523779296874991],[15.957617187500006,7.507568359375],[16.37890625,7.683544921874997],[16.545312500000023,7.865478515625],[16.784765625,7.550976562499997],[17.6494140625,7.98359375],[18.56416015625001,8.0458984375],[19.108691406250017,8.656152343749994],[18.886035156250017,8.836035156249991],[18.95625,8.938867187499994],[20.342089843750017,9.127099609374994],[20.773242187500017,9.405664062499994],[21.682714843750006,10.289843749999989],[21.771484375,10.642822265625],[22.49384765625001,10.996240234374994],[22.86005859375001,10.919677734375]]]},"properties":{"name":"Central African Rep.","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-59.78759765624997,43.939599609374994],[-60.11748046874996,43.95336914062506],[-59.727148437500006,44.002832031249994],[-59.78759765624997,43.939599609374994]]],[[[-66.7625,44.68178710937502],[-66.8970703125,44.62890625],[-66.80214843749994,44.80537109374998],[-66.7625,44.68178710937502]]],[[[-60.961572265624966,45.48994140625001],[-61.081738281249926,45.55781249999998],[-60.91245117187498,45.56728515625005],[-60.961572265624966,45.48994140625001]]],[[[-73.69531249999997,45.58549804687502],[-73.85771484375002,45.573583984375006],[-73.57236328124998,45.69448242187502],[-73.69531249999997,45.58549804687502]]],[[[-73.56650390625003,45.469091796875034],[-73.960546875,45.44140624999997],[-73.68745117187498,45.561425781249994],[-73.47607421874997,45.704736328124994],[-73.56650390625003,45.469091796875034]]],[[[-61.10517578124998,45.94472656250002],[-60.86523437499997,45.983496093750006],[-61.05903320312501,45.70336914062497],[-60.73789062499995,45.75141601562498],[-60.46059570312494,45.96870117187501],[-60.733300781249994,45.956591796875045],[-60.297949218750034,46.31123046874998],[-60.22646484374994,46.19555664062506],[-59.86503906249993,46.159521484375006],[-59.8421875,45.941552734374994],[-60.67294921874995,45.59082031250006],[-61.28369140624994,45.573876953124966],[-61.44980468749995,45.71621093750002],[-61.40864257812501,46.17036132812498],[-60.87016601562499,46.796777343749966],[-60.40820312500003,47.00351562499998],[-60.332910156249966,46.737011718749955],[-60.49453125000002,46.270263671875],[-61.10517578124998,45.94472656250002]]],[[[-63.811279296875,46.46870117187501],[-63.68144531249993,46.561914062499994],[-63.12939453125,46.422216796875034],[-62.02373046874999,46.42158203125001],[-62.52607421875001,46.20288085937503],[-62.531347656250034,45.977294921875],[-63.02207031249998,46.06660156249998],[-62.89453125000003,46.12358398437496],[-63.056347656249955,46.22392578124996],[-62.97846679687498,46.31635742187498],[-63.21347656249998,46.15986328124998],[-63.641015624999966,46.23046874999997],[-63.758642578125034,46.397607421874994],[-64.11083984375003,46.425439453124994],[-64.13603515624999,46.59970703125006],[-64.388037109375,46.640869140625],[-63.99355468750002,47.06157226562502],[-64.08789062499997,46.77543945312499],[-63.811279296875,46.46870117187501]]],[[[-61.91411132812496,47.284521484375034],[-61.77255859374998,47.25981445312499],[-62.00830078124994,47.23427734375002],[-61.924707031249966,47.425146484375006],[-61.3955078125,47.63764648437504],[-61.91411132812496,47.284521484375034]]],[[[-54.227148437500034,47.44135742187501],[-54.32597656250002,47.408105468749994],[-54.12817382812494,47.646826171875034],[-54.227148437500034,47.44135742187501]]],[[[-74.70888671874997,45.0038574218751],[-73.55810546875,45.425097656250045],[-73.1595703125,46.01005859375002],[-72.10927734374997,46.55122070312504],[-71.26118164062495,46.75625],[-70.51948242187501,47.032519531250045],[-69.47104492187503,47.96728515625006],[-68.23818359374994,48.62641601562504],[-66.17817382812493,49.21313476562503],[-64.83632812499994,49.191748046875006],[-64.2162109375,48.873632812500034],[-64.51372070312493,48.84111328124999],[-64.24609374999994,48.69111328124998],[-64.34882812500001,48.423193359375034],[-65.259423828125,48.02124023437503],[-65.92670898437495,48.188867187499994],[-66.70439453125002,48.0224609375],[-66.35961914062494,48.06064453125006],[-65.84941406250002,47.91103515625005],[-65.60722656249996,47.67001953125006],[-65.00166015624995,47.84682617187502],[-64.70322265625,47.72485351562503],[-64.91220703125003,47.36865234375003],[-65.31889648437502,47.101220703124994],[-64.831396484375,47.06079101562503],[-64.88251953124993,46.822851562500034],[-64.54150390625,46.240332031250034],[-63.91591796875002,46.165820312500045],[-63.831933593749966,46.107177734375],[-64.05639648437503,46.021337890625006],[-63.70288085937494,45.858007812500034],[-62.70068359374997,45.740576171875006],[-62.750097656250006,45.64824218750002],[-62.483056640624966,45.62182617187506],[-61.955517578124955,45.86816406249997],[-61.776513671874994,45.655615234375006],[-61.49228515624998,45.68701171875],[-61.350488281249966,45.57368164062501],[-61.28198242187494,45.441064453124994],[-61.46098632812502,45.36669921875003],[-61.03154296875002,45.29174804687506],[-63.306298828124994,44.64257812500003],[-63.60400390624997,44.68320312500006],[-63.60976562499999,44.47998046875006],[-63.999707031249926,44.64492187499999],[-64.10087890624993,44.487451171874966],[-64.1669921875,44.58666992187503],[-64.28608398437493,44.55034179687499],[-64.27568359374993,44.33408203124998],[-65.48168945312497,43.51806640625],[-65.73813476562498,43.56074218750001],[-65.88691406250001,43.79521484374999],[-66.125732421875,43.813818359375034],[-66.19306640624995,44.143847656250045],[-65.86801757812498,44.56879882812501],[-66.14638671875002,44.43593750000005],[-66.090625,44.50493164062499],[-64.44814453125,45.33745117187502],[-64.13549804687497,45.023046875],[-64.09316406249997,45.21708984375002],[-63.368017578125034,45.36479492187502],[-64.87314453124998,45.35458984375006],[-64.31464843749998,45.83569335937503],[-64.48222656250002,45.80634765624998],[-64.63271484375002,45.94663085937506],[-64.77851562499998,45.63842773437497],[-65.88447265624995,45.22290039062506],[-66.10976562500002,45.316601562499955],[-66.02656249999995,45.417578125],[-66.43984374999994,45.09589843750001],[-66.87246093749997,45.067285156249966],[-67.12485351562498,45.16943359375],[-67.366943359375,45.17377929687498],[-67.43266601562496,45.603125],[-67.80224609374994,45.7275390625],[-67.806787109375,47.08281249999999],[-68.23549804687502,47.34594726562503],[-68.93720703124998,47.21123046875002],[-69.0501953125,47.426611328125034],[-69.24287109374998,47.46298828124998],[-70.00771484375002,46.70893554687501],[-70.296240234375,45.90610351562506],[-70.86503906249999,45.27070312500001],[-71.327294921875,45.29008789062496],[-71.51752929687495,45.00756835937497],[-74.663232421875,45.00390625000003],[-74.70888671874997,45.0038574218751]]],[[[-126.09208984374995,49.35400390625003],[-126.06401367187499,49.26362304687501],[-126.22963867187498,49.29565429687506],[-126.09208984374995,49.35400390625003]]],[[[-54.55439453125001,49.5888671875],[-54.786523437499966,49.496142578125045],[-54.86357421875002,49.576074218749966],[-54.55439453125001,49.5888671875]]],[[[-54.093701171874955,49.74443359374999],[-53.98066406250001,49.66196289062498],[-54.28613281249997,49.595361328124994],[-54.27763671875002,49.71147460937502],[-54.093701171874955,49.74443359374999]]],[[[-126.64121093749999,49.605810546875006],[-126.93857421874999,49.71845703125004],[-126.92583007812497,49.837744140625006],[-126.73813476562502,49.84365234375005],[-126.64121093749999,49.605810546875006]]],[[[-61.801123046875034,49.093896484374966],[-63.04150390624994,49.224951171875034],[-64.485205078125,49.88696289062497],[-64.13144531249995,49.94165039062503],[-62.858544921874966,49.70546875000005],[-61.817138671875,49.28354492187498],[-61.69614257812495,49.139013671875006],[-61.801123046875034,49.093896484374966]]],[[[-125.18413085937497,50.09711914062498],[-125.301171875,50.4140625],[-125.07402343750002,50.22065429687501],[-125.18413085937497,50.09711914062498]]],[[[-127.19731445312495,50.640380859375],[-125.48208007812501,50.316796874999966],[-124.83061523437499,49.53007812500002],[-123.99580078125,49.22402343750002],[-123.49702148437498,48.58208007812499],[-123.38989257812501,48.67021484374999],[-123.31064453125003,48.41103515625002],[-123.57314453124995,48.32280273437499],[-123.91694335937501,48.386572265625034],[-125.12070312500002,48.76079101562496],[-124.84965820312496,49.02827148437501],[-124.81264648437497,49.212646484375],[-124.92734374999998,49.01420898437499],[-125.489453125,48.933789062499955],[-125.82851562499998,49.09184570312499],[-125.64423828125001,49.18579101562506],[-125.95166015625001,49.24804687500003],[-125.93540039062499,49.401464843750006],[-126.51914062499999,49.396777343750045],[-126.54189453125001,49.590478515624966],[-126.13408203124997,49.672314453124955],[-126.52524414062499,49.71958007812498],[-126.90332031250001,49.94414062499999],[-127.114306640625,49.879736328125034],[-127.24980468749999,50.13798828124996],[-127.34941406249995,50.05195312500001],[-127.46713867187503,50.163427734375006],[-127.86391601562495,50.12773437500002],[-127.90585937499998,50.44521484375002],[-127.48652343749998,50.404638671875034],[-127.46591796874996,50.58310546875006],[-128.05834960937494,50.498486328124955],[-128.34604492187503,50.744238281250006],[-127.91806640624998,50.86054687500001],[-127.19731445312495,50.640380859375]]],[[[-55.45874023437494,51.53652343750005],[-55.58339843749994,51.38857421875002],[-56.031103515625034,51.328369140625],[-55.8,51.033300781250034],[-56.732324218749966,50.007714843749994],[-56.822167968749966,49.613476562499955],[-56.179394531249955,50.114990234375],[-56.161279296874994,49.94013671874998],[-55.50292968749997,49.98315429687503],[-56.14018554687496,49.61914062500006],[-55.869824218749955,49.67016601562506],[-56.08730468750002,49.45195312499999],[-55.375927734374955,49.48974609374997],[-55.34384765624998,49.37290039062506],[-55.22954101562496,49.508154296875006],[-55.35317382812502,49.07944335937506],[-54.50219726562503,49.52734375],[-54.44824218749997,49.329443359375006],[-53.957714843749955,49.44184570312498],[-53.61943359374996,49.321630859375006],[-53.57343750000001,49.141210937500034],[-54.16127929687494,48.787695312500034],[-53.852880859375006,48.81132812499996],[-53.966015624999955,48.70668945312505],[-53.70634765624999,48.65551757812503],[-54.11445312499998,48.393603515625045],[-53.027587890625,48.634716796874955],[-53.1357421875,48.40185546875003],[-53.60976562500002,48.20771484375001],[-53.56943359374998,48.088085937499955],[-53.869580078124926,48.019677734374966],[-53.63823242187496,48.01464843750003],[-53.863671874999966,47.787011718749994],[-53.67236328125,47.64824218749999],[-53.28271484375,47.99785156249996],[-52.86601562499993,48.11298828124998],[-53.16982421875002,47.51210937500005],[-52.945019531249955,47.55283203124998],[-52.782421874999955,47.769433593749966],[-52.653662109375034,47.549414062500006],[-53.11484375,46.65581054687502],[-53.32304687499996,46.71835937499998],[-53.589794921874955,46.638867187499955],[-53.59736328124998,47.14599609374997],[-54.00957031249993,46.839599609375],[-54.173730468749994,46.88037109375003],[-53.84951171875002,47.440332031249994],[-53.98901367187503,47.756201171875034],[-54.191845703124955,47.85981445312501],[-54.488134765625006,47.40385742187502],[-54.47392578124996,47.54707031249998],[-54.856640624999955,47.385009765625],[-55.31572265624993,46.905712890624955],[-55.78852539062498,46.86723632812502],[-55.91923828124996,47.01689453124996],[-55.49150390624996,47.16064453125003],[-54.78461914062501,47.664746093749955],[-55.366308593750034,47.66108398437501],[-55.57612304687498,47.46523437499999],[-56.12724609374999,47.50283203125002],[-55.867089843749994,47.592333984375045],[-55.85791015625,47.81918945312498],[-56.774121093749955,47.56499023437499],[-58.33686523437501,47.73085937500002],[-59.11694335937494,47.57070312499999],[-59.32065429687498,47.736914062500006],[-59.272070312500034,47.99555664062504],[-58.330224609374994,48.52211914062502],[-59.16767578124998,48.558496093749966],[-58.84179687500003,48.74643554687498],[-58.906445312499955,48.65019531249999],[-58.716455078124994,48.59804687500002],[-58.403662109375034,49.08432617187498],[-57.99052734374996,48.987939453124966],[-58.09892578124993,49.07744140624999],[-57.98007812499998,49.229638671874994],[-58.19091796875003,49.25874023437498],[-58.21337890625,49.38666992187501],[-58.01582031249998,49.54248046874997],[-57.79130859374999,49.48999023437503],[-57.92617187499999,49.700830078124994],[-57.4326171875,50.50581054687504],[-57.179589843749966,50.614843750000034],[-57.29799804687502,50.69873046874997],[-57.03593750000002,51.01083984374998],[-56.68242187500002,51.332763671875],[-56.025585937499955,51.56835937500006],[-55.6904296875,51.471337890624994],[-55.666406249999966,51.57890624999999],[-55.45874023437494,51.53652343750005]]],[[[-127.92465820312498,51.47387695312497],[-128.14877929687498,51.62670898437503],[-128.03173828125006,51.708398437499966],[-127.92465820312498,51.47387695312497]]],[[[-79.38427734374997,51.951953125000045],[-79.64375,52.01005859374996],[-79.27128906249996,52.086816406249966],[-79.38427734374997,51.951953125000045]]],[[[-128.36875,52.40087890625],[-128.43979492187503,52.696386718750006],[-128.24726562499998,52.784375],[-128.36875,52.40087890625]]],[[[-80.73168945312494,52.74726562499998],[-82.03925781249998,53.04990234374998],[-81.84731445312494,53.18627929687497],[-81.135595703125,53.20581054687503],[-80.73168945312494,52.74726562499998]]],[[[-131.7537109375,53.195556640625],[-131.63466796874997,52.92216796874999],[-131.97177734374998,52.87983398437498],[-131.45522460937502,52.70170898437502],[-131.59057617187494,52.578222656250006],[-131.25971679687495,52.415917968749966],[-131.31992187499998,52.30307617187498],[-131.142626953125,52.291113281250034],[-131.221533203125,52.15361328124999],[-132.16508789062493,52.783300781250034],[-132.14375,52.99931640624999],[-132.54677734374997,53.1375],[-131.7537109375,53.195556640625]]],[[[-128.55244140624998,52.93974609375002],[-128.50991210937502,52.51860351562502],[-128.678955078125,52.289648437500006],[-128.74633789062494,52.763378906249955],[-128.89980468749997,52.67382812500003],[-129.175927734375,52.964941406250006],[-129.033251953125,53.27993164062505],[-128.63266601562498,53.1125],[-128.55244140624998,52.93974609375002]]],[[[-129.167724609375,53.11787109374998],[-129.32387695312502,53.142138671875045],[-129.23818359374997,53.33007812500006],[-129.167724609375,53.11787109374998]]],[[[-129.84858398437498,53.167919921874955],[-130.51757812500003,53.54423828124999],[-130.45200195312498,53.63115234375002],[-129.94472656250002,53.436376953125034],[-129.75483398437498,53.244775390624994],[-129.84858398437498,53.167919921874955]]],[[[-130.236279296875,53.95854492187502],[-130.38422851562504,53.84394531250001],[-130.703173828125,53.892236328124994],[-130.44799804687497,54.08901367187502],[-130.236279296875,53.95854492187502]]],[[[-132.65551757812503,54.12749023437496],[-132.30336914062497,54.098876953125],[-132.16611328124998,53.95522460937505],[-132.53466796875,53.651708984375034],[-132.18696289062504,53.68481445312503],[-132.134423828125,54.03427734374998],[-131.66762695312502,54.14135742187503],[-131.957421875,53.308691406250034],[-132.34726562500003,53.18920898437503],[-132.747509765625,53.310498046874955],[-132.425,53.33696289062502],[-132.84501953125,53.507714843749994],[-133.07949218749997,53.837011718750034],[-133.04838867187493,54.15893554687497],[-132.65551757812503,54.12749023437496]]],[[[-130.92714843749997,54.47905273437499],[-130.90683593750003,54.63178710937504],[-130.75800781249998,54.61376953125],[-130.92714843749997,54.47905273437499]]],[[[-130.57534179687497,54.769677734374966],[-130.2140625,55.02587890625003],[-130.34941406249996,54.814550781250034],[-130.57534179687497,54.769677734374966]]],[[[-79.97758789062499,56.20703125000006],[-80.057470703125,56.28735351562497],[-79.57973632812502,56.466357421875045],[-79.97758789062499,56.20703125000006]]],[[[-78.93559570312496,56.26606445312498],[-79.17548828124998,55.88505859374999],[-79.18212890625,56.21215820312503],[-79.4951171875,55.87475585937503],[-79.76474609374995,55.80678710937505],[-79.54472656249999,56.12836914062501],[-79.9875,55.89213867187502],[-79.45888671875,56.53974609374998],[-79.53632812499995,56.180078124999966],[-79.27241210937493,56.600439453125006],[-78.93559570312496,56.26606445312498]]],[[[-61.743603515624955,57.55458984375005],[-61.6375,57.41606445312499],[-62.01123046875003,57.54848632812505],[-61.743603515624955,57.55458984375005]]],[[[-79.71650390624998,57.515527343749994],[-79.80844726562498,57.44243164062502],[-79.74257812499997,57.60795898437499],[-79.71650390624998,57.515527343749994]]],[[[-69.16005859375,59.04023437500001],[-69.35283203125002,58.96074218749999],[-69.30322265625003,59.144873046875006],[-69.16005859375,59.04023437500001]]],[[[-64.40703125,60.367089843749966],[-64.44194335937496,60.2978515625],[-64.73793945312497,60.37563476562502],[-64.83642578124997,60.50102539062499],[-64.40703125,60.367089843749966]]],[[[-68.23378906250002,60.24091796875001],[-68.36787109374998,60.314746093750045],[-68.08759765624998,60.58784179687501],[-67.81884765624994,60.449511718750074],[-68.23378906250002,60.24091796875001]]],[[[-78.531640625,60.72856445312499],[-78.66889648437498,60.716894531250006],[-78.24169921875,60.818652343750045],[-78.531640625,60.72856445312499]]],[[[-64.83261718749998,61.366064453125006],[-65.43212890625,61.649511718750034],[-64.78964843750003,61.662207031250034],[-64.83261718749998,61.366064453125006]]],[[[-65.03056640624999,61.879052734374966],[-64.89658203124995,61.73330078125005],[-65.23535156249997,61.89770507812506],[-65.03056640624999,61.879052734374966]]],[[[-79.54531250000002,62.41171875000006],[-79.28647460937495,62.247656250000034],[-79.32392578124995,62.02607421875001],[-79.81611328124995,61.59462890625002],[-80.26518554687496,61.818212890625006],[-80.26005859374996,62.10903320312502],[-79.9267578125,62.39287109375002],[-79.54531250000002,62.41171875000006]]],[[[-64.82382812499998,62.558740234374994],[-64.46503906249998,62.535937500000045],[-64.47832031250002,62.417871093749966],[-64.901220703125,62.421044921874994],[-64.82382812499998,62.558740234374994]]],[[[-70.33706054687497,62.548730468749994],[-70.76606445312498,62.596875],[-71.22011718750002,62.873925781249966],[-70.44262695312497,62.73378906250002],[-70.33706054687497,62.548730468749994]]],[[[-82.00048828124997,62.95419921874998],[-82.02583007812498,62.73007812499998],[-82.56826171875002,62.403222656249994],[-83.01582031249998,62.20991210937498],[-83.69887695312497,62.16025390624998],[-83.91049804687498,62.45415039062499],[-83.37641601562498,62.904931640624994],[-82.00048828124997,62.95419921874998]]],[[[-77.87670898437497,63.470556640625034],[-77.53271484374997,63.233642578125],[-77.94243164062496,63.11440429687502],[-78.536767578125,63.423730468749994],[-77.87670898437497,63.470556640625034]]],[[[-76.67758789062503,63.393945312499966],[-77.36474609374994,63.588330078124955],[-77.13369140624997,63.68203125000002],[-76.65244140624998,63.503564453124994],[-76.67758789062503,63.393945312499966]]],[[[-84.91962890624995,65.26108398437503],[-84.50112304687497,65.45844726562501],[-84.08486328125,65.21782226562502],[-82.05,64.64428710937506],[-81.67612304687498,64.21264648437503],[-81.88710937499997,64.01640625000002],[-80.82895507812495,64.08994140625],[-80.30205078124999,63.76220703125003],[-81.04638671875003,63.461572265624966],[-82.378125,63.706787109375],[-82.46708984375002,63.92695312500001],[-83.30395507812497,64.14379882812506],[-84.63291015625,63.30922851562502],[-85.39262695312496,63.119677734375045],[-85.76894531249997,63.70034179687502],[-87.15190429687499,63.58564453125001],[-86.93203124999997,63.90166015625002],[-86.252099609375,64.13686523437497],[-86.37426757812503,64.56582031249997],[-86.074609375,65.533837890625],[-85.55468750000003,65.91865234374995],[-85.17622070312501,65.746875],[-85.23994140624993,65.51030273437499],[-84.91962890624995,65.26108398437503]]],[[[-84.67475585937498,65.575],[-85.096337890625,65.756201171875],[-85.14960937500001,66.01538085937506],[-84.75737304687496,65.85893554687505],[-84.67475585937498,65.575]]],[[[-83.72597656249997,65.796728515625],[-83.23374023437495,65.71503906249995],[-83.332421875,65.63105468749998],[-84.11826171874995,65.77177734375007],[-84.40717773437501,66.13100585937497],[-83.78696289062495,65.96577148437498],[-83.72597656249997,65.796728515625]]],[[[-108.09272460937501,67.00517578124999],[-107.80551757812493,66.99858398437507],[-107.94394531249999,66.8578125],[-108.09272460937501,67.00517578124999]]],[[[-62.681542968749966,67.05629882812502],[-62.87163085937499,67.06259765625006],[-62.41679687499996,67.18847656250003],[-62.681542968749966,67.05629882812502]]],[[[-107.89985351562497,67.40180664062495],[-107.95024414062503,67.31821289062498],[-108.15224609374997,67.429443359375],[-108.04897460937498,67.664892578125],[-107.89985351562497,67.40180664062495]]],[[[-73.621728515625,67.783837890625],[-74.573388671875,67.82866210937507],[-74.70654296875003,68.06708984374995],[-73.49375,68.00063476562502],[-73.40717773437498,67.79306640625],[-73.621728515625,67.783837890625]]],[[[-86.59555664062498,67.7359375],[-86.89252929687498,67.836572265625],[-86.95981445312503,68.10024414062497],[-86.70209960937501,68.30561523437498],[-86.42114257812497,68.18344726562503],[-86.59555664062498,67.7359375]]],[[[-75.67587890624998,68.32250976562506],[-75.078125,68.17314453124999],[-75.20195312499996,67.45917968750001],[-75.78007812499996,67.28354492187503],[-76.94418945312498,67.25029296875002],[-77.30439453125001,67.68510742187505],[-77.12587890624997,67.94707031250002],[-76.59580078124998,68.27895507812497],[-75.67587890624998,68.32250976562506]]],[[[-78.98271484374999,68.19282226562501],[-79.17475585937493,68.26445312500002],[-78.95258789062495,68.35302734375006],[-78.98271484374999,68.19282226562501]]],[[[-104.54067382812497,68.405908203125],[-105.05136718749999,68.55903320312501],[-104.60200195312503,68.56152343749997],[-104.54067382812497,68.405908203125]]],[[[-74.880859375,68.34868164062505],[-75.40024414062503,68.52548828125],[-75.28740234374996,68.68774414062503],[-74.98364257812497,68.64760742187502],[-74.880859375,68.34868164062505]]],[[[-101.84589843749994,68.58632812499997],[-102.30815429687497,68.681982421875],[-102.01337890624995,68.82539062500001],[-101.73295898437495,68.75341796875],[-101.84589843749994,68.58632812499997]]],[[[-100.21723632812497,68.80668945312502],[-100.59653320312496,68.76640625000007],[-100.56547851562495,69.02680664062501],[-100.21723632812497,68.80668945312502]]],[[[-99.99467773437502,69.01352539062503],[-100.19570312500002,68.991455078125],[-100.153125,69.12949218750003],[-99.99467773437502,69.01352539062503]]],[[[-79.21064453124995,68.845458984375],[-79.24267578125,69.04926757812495],[-78.33256835937496,69.38603515624999],[-78.77919921875,68.95048828124999],[-79.21064453124995,68.845458984375]]],[[[-90.1998046875,69.419091796875],[-90.33027343749993,69.252197265625],[-90.49204101562503,69.369873046875],[-90.1998046875,69.419091796875]]],[[[-76.99536132812503,69.14375],[-77.37939453125,69.2740234375],[-77.18754882812502,69.440087890625],[-76.66884765625002,69.36616210937504],[-76.99536132812503,69.14375]]],[[[-101.171728515625,69.39707031250003],[-101.31289062499998,69.57607421875],[-101.00063476562497,69.4619140625],[-101.171728515625,69.39707031250003]]],[[[-95.51367187499997,69.57363281250002],[-95.43745117187498,69.37846679687505],[-95.73012695312502,69.34755859374997],[-95.80620117187499,69.56049804687501],[-95.89345703125,69.35175781250004],[-95.87583007812495,69.60600585937505],[-95.51367187499997,69.57363281250002]]],[[[-67.91469726562494,69.54096679687504],[-68.22138671874998,69.61674804687502],[-67.908837890625,69.68183593749995],[-67.91469726562494,69.54096679687504]]],[[[-78.02910156249993,69.71489257812502],[-78.03999023437495,69.6083984375],[-78.84819335937502,69.4828125],[-78.02910156249993,69.71489257812502]]],[[[-79.43066406250003,69.78779296874995],[-79.55283203124995,69.63085937500006],[-80.04750976562502,69.63432617187505],[-79.97783203124993,69.50966796874997],[-80.794775390625,69.68925781250005],[-80.42421875000002,69.797607421875],[-79.43066406250003,69.78779296874995]]],[[[-97.439453125,69.64267578125006],[-96.29995117187494,69.34438476562505],[-95.7513671875,68.89765624999998],[-95.26777343749998,68.82607421874997],[-96.40156249999995,68.47070312500003],[-97.47202148437498,68.543701171875],[-98.320556640625,68.84272460937498],[-98.70380859374993,68.80278320312502],[-98.90449218749995,68.93242187500005],[-99.25400390625002,68.86318359374997],[-99.49467773437493,68.95957031249998],[-99.455712890625,69.13120117187503],[-98.45595703124997,69.33466796875001],[-98.54599609375,69.57290039062497],[-98.04135742187498,69.456640625],[-98.20048828124996,69.79697265625006],[-97.79072265624998,69.86162109374999],[-97.439453125,69.64267578125006]]],[[[-86.91303710937501,70.11323242187501],[-86.55766601562499,69.99531249999995],[-87.3232421875,70.08012695312502],[-86.91303710937501,70.11323242187501]]],[[[-74.70888671874997,45.0038574218751],[-74.76245117187494,44.99907226562502],[-74.99614257812496,44.970117187499966],[-75.40126953124997,44.77226562499999],[-75.81933593749997,44.468017578125],[-76.18579101562503,44.24223632812502],[-76.819970703125,43.62880859375011],[-77.59653320312492,43.62861328125007],[-78.45825195312497,43.63149414062511],[-78.72041015624993,43.62495117187501],[-78.84555664062492,43.58334960937506],[-79.171875,43.466552734375085],[-79.0830566406249,43.33139648437509],[-79.05922851562494,43.27807617187506],[-79.066064453125,43.10610351562502],[-79.02617187499996,43.01733398437506],[-78.98076171874993,42.98061523437502],[-78.91508789062496,42.90913085937504],[-79.17373046875,42.74853515625],[-80.24755859374991,42.366015625000045],[-81.02822265624997,42.247167968750006],[-81.50732421874997,42.10346679687504],[-81.97416992187496,41.88872070312499],[-82.43906249999989,41.6748535156251],[-82.69003906249995,41.675195312499994],[-83.141943359375,41.97587890624996],[-83.10952148437497,42.25068359375001],[-82.54531249999997,42.62470703124998],[-82.19038085937495,43.47407226562501],[-82.137841796875,43.570898437500034],[-82.48505859374993,45.08374023437503],[-82.55107421874987,45.3473632812501],[-82.91933593749994,45.51796875000002],[-83.59267578125,45.81713867187506],[-83.46948242187503,45.99467773437499],[-83.61596679687503,46.116845703124994],[-83.97778320312494,46.08491210937507],[-84.12319335937497,46.50292968749997],[-84.44047851562496,46.49814453125006],[-84.66577148437503,46.54326171875002],[-84.87597656249994,46.89990234375003],[-85.07006835937497,46.97993164062498],[-85.65224609375,47.21997070312503],[-86.67216796874996,47.636425781249955],[-87.20800781249997,47.848486328125006],[-87.74389648437497,48.06054687500003],[-88.37817382812497,48.30307617187506],[-89.45566406249992,47.99624023437508],[-90.79731445312495,48.13105468750001],[-91.04345703124991,48.19370117187498],[-91.38720703124997,48.05854492187498],[-92.00517578125002,48.301855468750006],[-92.3484375,48.276611328125],[-92.41459960937493,48.276611328125],[-92.50058593749995,48.43535156250002],[-92.83671875,48.567773437499994],[-93.25795898437497,48.62885742187501],[-93.37788085937498,48.61655273437498],[-93.70771484374995,48.525439453125074],[-93.85161132812496,48.607275390625034],[-94.6208984374999,48.7426269531251],[-94.71279296874997,48.863427734374994],[-94.80346679687497,49.0029296875],[-94.86040039062493,49.258593750000045],[-94.85434570312495,49.304589843749994],[-95.15527343749997,49.3696777343751],[-95.16206054687493,48.991748046875045],[-95.39790039062493,48.99316406249997],[-96.25068359374993,48.99316406249997],[-96.67705078124993,48.99316406249997],[-97.52983398437493,48.99316406249997],[-98.80898437499995,48.99316406249997],[-104.77832031249997,48.993115234375125],[-110.7476562499999,48.993066406250136],[-116.71704101562493,48.993066406250136],[-118.84892578124993,48.993066406250136],[-119.27534179687494,48.993066406250136],[-119.70170898437495,48.99301757812495],[-120.98085937499995,48.99301757812495],[-122.78876953124994,48.99301757812495],[-122.82670898437495,49.028417968750034],[-122.9241699218749,49.07465820312504],[-122.96269531249993,49.07460937500005],[-123.06328125,48.97773437500001],[-123.22944335937493,49.260498046875085],[-122.87910156249995,49.39892578125003],[-123.27675781249997,49.34394531250001],[-123.1875,49.680322265624994],[-123.53056640624989,49.39731445312506],[-124.02861328125002,49.602880859375006],[-123.99262695312497,49.736181640625006],[-123.81718749999993,49.58657226562508],[-123.58247070312498,49.68125],[-123.87441406250005,49.736816406250114],[-123.82543945312493,50.14423828124998],[-123.94589843749995,50.18393554687509],[-123.9849121093749,49.87558593749998],[-124.28125,49.77211914062502],[-124.78237304687492,50.02011718749992],[-125.05668945312495,50.418652343750125],[-124.8598632812499,50.872412109375006],[-125.05878906249993,50.51386718749998],[-125.4763183593749,50.49716796874995],[-125.53935546874996,50.64902343749998],[-125.64130859374994,50.46621093750005],[-126.09433593749995,50.497607421875045],[-126.44746093750004,50.58774414062492],[-125.90410156250002,50.704931640625006],[-126.51435546875,50.679394531250125],[-126.37460937499995,50.83735351562498],[-126.5217773437499,50.86606445312498],[-126.51733398437497,51.0568359375001],[-126.63178710937494,50.915136718750006],[-127.057568359375,50.86752929687509],[-127.70810546875,51.15117187499996],[-127.41967773437496,51.608056640625136],[-126.69145507812502,51.70341796875002],[-127.33872070312489,51.70737304687495],[-127.66870117187497,51.47758789062502],[-127.85053710937498,51.67319335937509],[-127.79536132812493,52.19101562500006],[-127.43793945312504,52.356152343750125],[-127.24223632812496,52.39511718750009],[-126.71396484374989,52.060693359374994],[-127.19399414062498,52.45766601562502],[-126.95136718749994,52.7510253906251],[-127.01933593750002,52.8424804687501],[-127.06621093749989,52.65268554687498],[-127.79189453124994,52.28935546875002],[-128.10224609374993,51.78842773437495],[-128.3576171875,52.1588867187501],[-128.0375,52.318164062500045],[-127.94023437499996,52.545166015625085],[-128.27153320312493,52.3629882812501],[-128.05327148437487,52.91069335937496],[-128.3650390624999,52.82578125000006],[-128.52470703125002,53.1406738281251],[-129.08090820312492,53.36728515625006],[-129.1715820312499,53.53359375000002],[-128.8545898437499,53.70454101562504],[-128.90561523437492,53.559326171875114],[-128.5421386718749,53.420654296875114],[-128.13271484375002,53.417773437500045],[-127.92783203125,53.274707031250045],[-128.2072265624999,53.483203125000074],[-128.67553710937494,53.55458984375005],[-128.76367187500003,53.746875],[-128.5321289062499,53.85810546875007],[-128.959375,53.84145507812505],[-129.2578613281249,53.417968750000085],[-129.56372070312506,53.251464843750114],[-130.33525390625002,53.723925781250074],[-130.04331054687495,54.13354492187503],[-129.62602539062493,54.23027343750002],[-130.08422851562503,54.18139648437503],[-130.4302734375,54.42099609374998],[-129.56064453124995,55.46254882812508],[-129.79516601562503,55.559570312500114],[-130.04848632812494,55.05727539062511],[-130.01406249999997,55.950537109375006],[-130.09785156249995,56.10927734375002],[-130.41313476562487,56.12250976562507],[-130.47709960937496,56.230566406250034],[-130.649072265625,56.26367187500003],[-131.471875,56.55673828125006],[-131.82426757812496,56.58999023437508],[-131.86616210937495,56.792822265625006],[-132.1042968749999,56.85678710937509],[-132.062890625,56.95336914062503],[-132.33798828124992,57.07944335937498],[-132.27939453124998,57.14536132812506],[-132.23217773437494,57.198535156250074],[-132.30166015625005,57.2763183593751],[-132.44248046874986,57.40673828125003],[-132.55048828124995,57.499902343749994],[-133.00141601562495,57.948974609375],[-133.27529296875,58.22285156250004],[-133.54638671874997,58.50346679687499],[-134.21850585937503,58.849902343750045],[-134.32963867187505,58.93969726562506],[-134.39306640625,59.009179687499994],[-134.67724609374997,59.19926757812499],[-134.94375,59.28828125000001],[-135.05102539062491,59.57866210937502],[-135.36787109374998,59.743310546874994],[-135.70258789062504,59.72875976562506],[-136.3218261718749,59.604833984375034],[-136.27797851562494,59.48032226562506],[-136.46635742187493,59.459082031250006],[-136.57875976562494,59.15224609375002],[-136.81328125000002,59.15004882812511],[-137.12622070312491,59.04096679687507],[-137.2775390624999,58.988183593749994],[-137.43857421874995,58.903125],[-137.52089843749994,58.91538085937506],[-137.59331054687493,59.22626953124998],[-138.317626953125,59.611132812500074],[-138.86875,59.94575195312501],[-139.18515624999986,60.083593750000034],[-139.13696289062494,60.17270507812506],[-139.07924804687497,60.279443359375136],[-139.07924804687497,60.3437011718751],[-139.23476562499997,60.339746093749994],[-139.67631835937505,60.32832031249998],[-139.97329101562497,60.183154296875074],[-140.45283203125004,60.29970703125002],[-140.5254394531249,60.21835937499995],[-140.76274414062505,60.25913085937509],[-141.00214843750004,60.300244140625125],[-141.00214843750004,60.884667968749994],[-141.00214843750004,61.761279296875045],[-141.00214843750004,63.22226562499998],[-141.00214843750004,64.09887695312506],[-141.00214843750004,65.55991210937498],[-141.00214843750004,66.43652343750006],[-141.00214843750004,67.89755859374998],[-141.00214843750004,68.77416992187506],[-141.00214843750004,69.65078125000011],[-139.18154296874997,69.51552734375008],[-137.25996093749998,68.96411132812503],[-136.12236328124993,68.88222656250002],[-135.258837890625,68.68432617187503],[-135.93901367187487,68.9741699218751],[-135.575537109375,69.02695312500003],[-135.91020507812487,69.11147460937502],[-135.6914550781249,69.31118164062502],[-135.29282226562486,69.30786132812506],[-135.1408203124999,69.46782226562496],[-134.45683593749993,69.47763671875],[-134.40893554687494,69.68178710937502],[-133.87978515624997,69.50771484375011],[-134.17431640624991,69.25283203125005],[-133.16313476562496,69.43388671874999],[-132.91533203125002,69.62963867187506],[-132.40390625,69.65874023437496],[-132.48847656249993,69.73808593749996],[-132.16342773437498,69.70498046875014],[-131.13637695312497,69.90688476562505],[-130.66547851562495,70.12705078124998],[-129.944970703125,70.09091796875006],[-129.675634765625,70.19296875000009],[-129.64829101562495,69.9977539062501],[-130.83208007812487,69.65146484375006],[-131.9377929687499,69.5347167968751],[-132.8174804687499,69.20576171875004],[-133.41831054687492,68.84428710937493],[-133.138037109375,68.74658203125011],[-133.33666992187497,68.83525390625005],[-132.57763671874997,68.84780273437514],[-132.71894531249998,69.07919921875],[-131.78837890625002,69.43198242187495],[-131.32470703124997,69.36118164062509],[-131.06342773437504,69.45068359375003],[-130.97065429687495,69.20908203125],[-130.1176269531249,69.720068359375],[-128.89892578124994,69.96616210937506],[-129.15791015624995,69.80009765624999],[-129.05434570312502,69.70107421875005],[-128.85302734375003,69.7510253906251],[-127.68378906249994,70.26035156249995],[-128.17011718749998,70.41845703125],[-127.99101562499992,70.57382812500003],[-127.22597656249992,70.29614257812497],[-126.25043945312495,69.54526367187492],[-125.52495117187495,69.35156250000009],[-125.171875,69.42797851562503],[-125.35693359374991,69.62597656250003],[-124.767919921875,69.99003906249996],[-124.99038085937494,70.02661132812511],[-124.55502929687488,70.15122070312509],[-124.40693359374991,69.76743164062506],[-124.12460937499995,69.6899902343751],[-124.33808593749991,69.36484374999995],[-123.5284179687499,69.38935546874995],[-123.02578125,69.81000976562504],[-122.07006835937499,69.81616210937506],[-120.96245117187502,69.66040039062511],[-120.13999023437488,69.38056640625013],[-117.22695312499998,68.913427734375],[-116.05947265625,68.83701171875006],[-116.2434082031249,68.9740722656251],[-115.44228515624994,68.94091796875009],[-114.62016601562496,68.74609375],[-113.96440429687495,68.39907226562502],[-114.09594726562491,68.26679687500007],[-114.76528320312494,68.27021484375004],[-115.12705078124992,68.13203124999995],[-115.43447265624994,67.90234375000006],[-115.13320312499994,67.819189453125],[-112.50302734374993,67.6819335937501],[-110.9900390624999,67.79082031250007],[-110.07392578124995,67.99291992187506],[-109.63037109374991,67.73271484374996],[-109.03803710937504,67.69116210937503],[-108.85200195312497,67.42197265625009],[-108.61333007812493,67.59804687500008],[-107.98872070312495,67.2563964843751],[-107.99130859374995,67.09516601562513],[-108.49604492187493,67.09228515625006],[-107.25947265624998,66.39853515624995],[-107.71035156250001,66.74003906250007],[-107.7250976562499,66.98413085937506],[-107.15649414062497,66.88173828124997],[-107.9583984375,67.81860351562506],[-107.79829101562498,68.03691406249996],[-106.42426757812491,68.20058593750008],[-105.7501953125,68.59228515625011],[-106.45805664062496,68.51645507812495],[-106.60849609374988,68.35737304687504],[-107.61933593749994,68.3310546875],[-107.73417968749989,68.17373046875011],[-108.3228027343749,68.15410156250002],[-108.71811523437488,68.29746093750009],[-108.31347656249996,68.61079101562498],[-106.16445312499992,68.91987304687507],[-105.68559570312489,68.82817382812505],[-105.3774414062499,68.413818359375],[-104.65317382812488,68.23007812500003],[-104.48681640624991,68.06318359374998],[-103.47412109374993,68.11503906250005],[-102.32036132812489,67.73564453125005],[-101.55498046874992,67.69316406250007],[-100.21293945312489,67.83857421875004],[-98.92045898437502,67.72578124999998],[-98.41210937499991,67.80717773437505],[-98.63154296875004,68.0725585937501],[-97.45493164062486,67.61699218750002],[-97.20654296874989,67.85507812500003],[-97.73911132812495,67.97817382812505],[-98.19252929687494,67.92299804687502],[-98.65048828124989,68.36352539062506],[-98.21855468750002,68.31743164062507],[-97.7942382812499,68.38759765625],[-97.9250976562499,68.523681640625],[-97.41035156249993,68.49653320312498],[-96.97670898437497,68.25541992187505],[-96.43066406249991,68.3105957031251],[-96.72207031250005,68.03876953124998],[-95.9703125,68.24912109375],[-96.36914062499991,67.50976562500003],[-96.14145507812489,67.27182617187503],[-95.71992187499998,67.31679687500014],[-95.77768554687495,67.18461914062505],[-95.41591796875005,67.15556640624999],[-95.41889648437504,67.01323242187493],[-96.42255859374995,67.05175781249997],[-95.7875488281249,66.616796875],[-96.03686523437489,66.9375],[-95.39965820312503,66.94946289062509],[-95.25874023437493,67.26254882812492],[-95.65048828124986,67.73745117187505],[-95.46069335937503,68.02138671875],[-94.74443359374993,68.07089843749995],[-93.44892578124998,68.61889648437503],[-93.85244140624994,69.00034179687495],[-94.06489257812495,68.78476562500006],[-94.600439453125,68.80322265625011],[-94.08364257812497,69.12309570312507],[-94.254736328125,69.31376953125002],[-93.61948242187492,69.41699218750009],[-93.74853515624991,69.2261230468751],[-93.5322753906249,69.48090820312495],[-94.2708007812499,69.45512695312505],[-94.63383789062496,69.64965820312506],[-94.82250976562494,69.577783203125],[-95.96494140624989,69.80278320312499],[-96.5513671875,70.21030273437506],[-96.29770507812492,70.51137695312511],[-95.87861328124998,70.54897460937514],[-95.88632812499986,70.69428710937507],[-96.25800781249993,70.64228515625013],[-96.54892578124995,70.80874023437511],[-96.44658203124996,71.23989257812502],[-96.06201171874997,71.41386718749993],[-95.5642578124999,71.33676757812503],[-95.40625,71.49165039062498],[-95.87231445312494,71.57314453125005],[-94.73486328124994,71.98295898437507],[-94.30834960937491,71.76489257812506],[-93.74628906249998,71.742822265625],[-92.94868164062493,71.26210937500011],[-92.98144531249994,70.8522460937501],[-91.56406249999995,70.1782714843751],[-92.32050781250004,70.2353515625],[-92.51186523437494,70.10385742187503],[-91.976708984375,70.03867187500009],[-92.88779296874989,69.66821289062511],[-92.31166992187494,69.67290039062499],[-91.91196289062495,69.53125],[-91.20180664062494,69.64477539062494],[-91.43994140624997,69.52568359375002],[-90.4155761718749,69.45698242187507],[-90.89228515625004,69.26728515624995],[-91.23720703125005,69.28554687500014],[-90.47900390624994,68.88115234374999],[-90.57363281250005,68.47470703124998],[-90.20478515625004,68.25747070312511],[-89.27954101562491,69.25546875000003],[-88.22353515625,68.91503906249997],[-87.81357421874986,68.34570312499997],[-87.89267578125,68.24814453125],[-88.34697265624993,68.28828125000001],[-88.313818359375,67.95034179687508],[-87.359375,67.17724609374997],[-86.56079101562491,67.48212890625007],[-85.64316406249992,68.69970703124997],[-84.86757812499994,68.77333984375005],[-85.10664062499995,68.84404296875007],[-84.86220703125,69.07397460937503],[-85.38676757812493,69.23188476562504],[-85.50737304687487,69.84526367187493],[-82.61835937499993,69.69106445312514],[-82.39023437499989,69.60087890625007],[-82.75483398437493,69.49438476562506],[-82.30986328124996,69.41000976562509],[-82.22753906249997,69.24887695312495],[-81.37783203125005,69.18564453125003],[-81.95791015624991,68.88364257812498],[-81.38090820312496,68.85004882812504],[-81.28154296874987,68.65722656250003],[-81.91484374999993,68.4587890625001],[-82.55268554687504,68.44648437500007],[-82.22241210937489,68.145263671875],[-82.0125,68.19389648437496],[-81.97646484374997,67.86201171875001],[-81.2943359375,67.497412109375],[-81.46757812499996,67.0698730468751],[-83.40644531249998,66.37124023437508],[-84.53847656249994,66.97280273437505],[-84.84575195312502,67.02871093750008],[-85.11372070312498,66.90693359375013],[-84.73774414062504,66.93359375000006],[-84.223046875,66.68247070312506],[-83.86904296875,66.2135742187501],[-84.29306640624995,66.29179687500005],[-84.628076171875,66.20771484374998],[-85.603857421875,66.56826171875005],[-86.708154296875,66.52304687500009],[-86.68510742187502,66.36040039062499],[-85.95874023437491,66.11904296875002],[-87.45288085937503,65.33896484375009],[-87.96997070312503,65.34892578124999],[-89.7494140625,65.93603515625006],[-89.88969726562487,65.86855468749997],[-91.42724609374994,65.94790039062497],[-91.04111328124989,65.82983398437509],[-90.98344726562496,65.91923828124999],[-89.92407226562497,65.78027343750011],[-88.97402343749994,65.34829101562502],[-87.02753906249995,65.19809570312498],[-88.10561523437497,64.18330078125001],[-88.81772460937489,63.99223632812499],[-89.20063476562493,64.11376953125006],[-89.13154296874998,63.96850585937494],[-89.61582031249995,64.030615234375],[-89.8113281249999,64.18056640625],[-90.04165039062494,64.14086914062509],[-89.85571289062497,63.9569824218751],[-90.16816406250004,63.978759765625085],[-90.15473632812498,63.68964843749998],[-90.81191406249991,63.580908203125034],[-91.98222656249996,63.82241210937502],[-92.33842773437496,63.787646484375045],[-93.69633789062493,64.14716796875013],[-93.55981445312491,63.865283203125074],[-93.27021484374998,63.840869140625074],[-93.37851562499992,63.94848632812497],[-92.15688476562491,63.691699218750045],[-92.46508789062491,63.55507812500011],[-91.84184570312496,63.69755859374999],[-90.97006835937489,63.442773437500136],[-90.69858398437492,63.06386718750005],[-91.44897460937503,62.804052734375034],[-92.3612792968749,62.81938476562496],[-91.93583984374993,62.59238281250009],[-92.55141601562491,62.546728515625034],[-92.76596679687492,62.34995117187509],[-92.52797851562494,62.16840820312504],[-93.20537109374993,62.364941406250125],[-92.90551757812503,62.21513671874996],[-93.3330566406249,61.93291015625002],[-93.58178710937494,61.94204101562511],[-93.31201171874997,61.76728515625004],[-93.91274414062497,61.48144531250006],[-94.509375,60.60454101562493],[-94.76171874999991,60.498242187500125],[-94.78828124999998,59.26787109374993],[-94.95732421874996,59.068847656250085],[-94.28706054687493,58.716015625000125],[-94.33222656249998,58.297363281250114],[-94.12319335937494,58.73671875000008],[-93.1787597656249,58.72563476562496],[-92.43281249999993,57.3203125],[-92.7981445312499,56.921972656250034],[-90.89746093750003,57.25693359375006],[-88.94848632812489,56.85131835937503],[-88.07509765624997,56.46728515624994],[-87.48242187499991,56.021289062500045],[-85.55932617187491,55.54018554687508],[-85.21801757812491,55.348974609375034],[-85.3652832031249,55.07929687499998],[-85.06093749999997,55.285644531250085],[-83.91059570312493,55.314648437499955],[-82.39326171874998,55.067822265625125],[-82.219384765625,54.8134765625],[-82.42416992187486,54.2445800781251],[-82.14145507812492,53.81762695312497],[-82.29155273437496,53.03071289062507],[-81.5994140624999,52.432617187500085],[-81.82788085937489,52.22421875000009],[-81.46621093749994,52.204492187500136],[-80.588037109375,51.667236328125114],[-80.4433105468749,51.38857421875002],[-80.85122070312497,51.125],[-80.47832031249993,51.30732421874998],[-80.10356445312487,51.282861328125136],[-79.34790039062494,50.76264648437504],[-79.737451171875,51.186279296875],[-79.33867187500002,51.62817382812497],[-79.04052734375003,51.46376953125005],[-78.90317382812495,51.200292968750034],[-78.73134765624994,51.497460937499994],[-78.98164062499993,51.774560546875136],[-78.44809570312495,52.26137695312502],[-78.74414062499994,52.65537109374998],[-79.10034179687497,53.65664062500005],[-78.99604492187493,54.00249023437499],[-79.241796875,54.098876953125085],[-79.14672851562491,54.16923828125002],[-79.71235351562495,54.6718261718751],[-77.77529296874994,55.291259765625],[-76.60405273437496,56.19956054687495],[-76.52558593749998,56.8917968750001],[-76.80981445312497,57.65795898437506],[-77.15678710937496,58.018896484375034],[-78.51508789062493,58.68237304687503],[-77.76069335937498,59.38002929687505],[-77.72617187499995,59.67587890624992],[-77.34907226562495,59.57895507812509],[-77.48530273437493,59.684570312500114],[-77.28920898437494,60.0220214843751],[-77.58588867187498,60.088183593750074],[-77.45288085937497,60.1458007812501],[-77.6814453124999,60.427099609375034],[-77.503564453125,60.54272460937497],[-77.7908203124999,60.63984375000004],[-77.58955078124993,60.808593750000114],[-78.18134765624995,60.81914062499996],[-77.51435546874998,61.55629882812505],[-78.02138671874997,61.8320800781251],[-78.13339843749986,62.28227539062496],[-77.372412109375,62.572509765625114],[-75.81689453124991,62.31586914062507],[-75.7898437499999,62.17958984375002],[-75.3412109375,62.312109375],[-74.63256835937497,62.115673828125125],[-74.6458007812499,62.21113281250004],[-73.70507812499991,62.47314453124994],[-72.68696289062498,62.12456054687499],[-72.771630859375,61.840429687500006],[-72.50556640624998,61.922656250000074],[-72.22612304687487,61.83159179687499],[-72.04003906249991,61.68027343750006],[-72.21586914062502,61.58725585937495],[-71.86611328125,61.68852539062499],[-71.63828124999995,61.6171875],[-71.85439453124991,61.43979492187492],[-71.42270507812489,61.158935546875085],[-70.27929687499991,61.06865234374999],[-69.99243164062491,60.8564941406251],[-69.50332031249994,61.04042968750011],[-69.40473632812493,60.84677734375009],[-69.75947265624998,60.440234375000045],[-69.67373046874994,60.07587890625007],[-70.65483398437496,60.02622070312506],[-69.73393554687493,59.918017578125045],[-69.68188476562489,59.34174804687507],[-69.3440429687499,59.303076171875006],[-69.53164062499994,58.86923828125009],[-69.64838867187493,58.82080078125],[-69.78417968749994,58.95571289062511],[-70.15434570312496,58.76059570312498],[-69.78989257812486,58.689306640625034],[-69.27109374999986,58.88393554687505],[-68.69819335937495,58.904541015625],[-68.38115234374993,58.74350585937506],[-68.22939453124994,58.48457031250007],[-68.35654296874989,58.163232421875136],[-69.04082031249996,57.902490234375136],[-68.41357421874997,58.0517578125],[-68.02104492187493,58.48530273437504],[-67.88828124999989,58.29575195312495],[-68.06386718750005,58.13896484374999],[-67.75595703124992,58.4045898437501],[-67.6782714843749,57.99111328125008],[-67.5696289062499,58.21347656250006],[-66.72216796874991,58.49101562499996],[-66.36240234374989,58.791162109374994],[-66.0023925781249,58.43120117187502],[-66.04306640624995,58.82065429687495],[-65.72099609374996,59.02377929687495],[-65.38354492187494,59.06020507812508],[-65.7,59.21333007812501],[-65.4117187499999,59.31499023437496],[-65.47509765624994,59.47031249999998],[-65.03823242187494,59.38789062500007],[-65.40742187499993,59.53935546875002],[-65.4333984374999,59.776513671874994],[-65.02817382812495,59.77070312500007],[-65.17172851562489,59.90800781249996],[-64.81733398437498,60.3310546875],[-64.49941406250005,60.26826171875001],[-64.41958007812494,60.17138671874997],[-64.76845703124997,60.01210937500005],[-64.28349609374993,60.06406249999998],[-64.22631835937491,59.741210937500085],[-64.05605468750005,59.82255859374996],[-63.7501953124999,59.51259765625005],[-63.945458984374994,59.380175781250074],[-63.775878906249915,59.277148437500045],[-63.539892578124864,59.332861328125034],[-63.41513671874995,59.194384765625074],[-63.97114257812498,59.053808593750034],[-63.24843749999991,59.068310546874955],[-63.28212890624994,58.86738281250007],[-63.05029296874997,58.87817382812494],[-62.87387695312489,58.67246093749998],[-63.537060546874926,58.329931640625006],[-63.209960937499886,58.46694335937502],[-62.593847656249864,58.47402343750005],[-62.81206054687502,58.20039062500007],[-63.26152343749993,58.014697265625074],[-62.486230468749966,58.15405273437506],[-62.30566406249997,57.97226562499995],[-61.95864257812505,57.91176757812508],[-61.9679687499999,57.61191406250009],[-62.495556640624926,57.489208984375125],[-61.92114257812497,57.42080078125005],[-61.977441406249966,57.24794921875002],[-61.33374023437494,57.01059570312498],[-61.37163085937502,56.68081054687511],[-62.497265624999926,56.80170898437504],[-61.73774414062498,56.52602539062502],[-61.940429687499886,56.423583984375114],[-61.42529296874994,56.360644531250074],[-61.713085937499955,56.230957031250114],[-61.364697265624926,56.2160156250001],[-61.30112304687495,56.04716796874999],[-61.4495117187499,55.99570312499998],[-61.08935546874997,55.86635742187511],[-60.74326171874989,55.94145507812493],[-60.56210937499995,55.727001953125125],[-60.341015624999926,55.78466796874997],[-60.40830078124995,55.649560546874994],[-60.19238281249994,55.4809082031251],[-60.617138671874955,55.060205078124994],[-59.75878906249997,55.3095703125],[-59.68906249999989,55.19633789062502],[-59.43789062500005,55.175927734375136],[-59.837792968749994,54.813964843750114],[-59.25957031249996,55.19995117187506],[-58.99711914062496,55.149462890625074],[-58.780175781249994,54.838378906250114],[-58.39814453124998,54.77412109374998],[-57.96245117187493,54.875732421875085],[-57.40449218750004,54.59086914062496],[-57.69926757812496,54.38657226562506],[-58.435205078124966,54.228125],[-58.63320312499999,54.04956054687497],[-59.8230468749999,53.83442382812504],[-60.14492187499994,53.59614257812498],[-60.395410156249994,53.653320312500085],[-60.1002929687499,53.48696289062511],[-60.329492187499966,53.26611328125006],[-58.652050781249926,53.97788085937495],[-57.935986328124955,54.09116210937492],[-58.31748046874989,54.11445312500007],[-58.192089843749926,54.228173828125136],[-57.4160644531249,54.162744140625136],[-57.134960937499926,53.79184570312506],[-57.524072265624966,53.61142578125006],[-57.331738281249955,53.469091796875034],[-56.84086914062496,53.73945312500004],[-56.46499023437505,53.76503906250011],[-55.96611328125002,53.4711425781251],[-55.79794921874995,53.211962890625045],[-55.80283203124989,52.64316406249998],[-56.324902343749926,52.54453124999998],[-55.74648437499994,52.4745605468751],[-55.7771484374999,52.3642578125],[-56.01171874999997,52.394482421875125],[-55.695214843749994,52.13779296875006],[-56.97597656250005,51.45766601562505],[-58.510351562500006,51.295068359375136],[-59.88632812499992,50.316406250000085],[-61.72485351562503,50.10405273437499],[-61.91953124999989,50.2328613281251],[-62.71542968749995,50.30166015625008],[-66.49550781249991,50.2118652343751],[-66.94116210937503,49.993701171875045],[-67.37202148437495,49.348437500000045],[-68.28193359374998,49.197167968750136],[-69.67387695312496,48.19916992187504],[-71.01826171874993,48.455615234375045],[-69.86552734374993,48.17226562500005],[-69.775,48.09809570312504],[-69.9944335937499,47.73989257812508],[-70.70585937499996,47.13979492187505],[-71.26777343749995,46.79594726562499],[-71.87958984374998,46.68681640624996],[-72.98100585937493,46.209716796875085],[-73.4766113281249,45.738232421874955],[-74.03784179687494,45.501855468750136],[-74.31508789062494,45.531054687500045],[-73.97382812499995,45.345117187499994],[-74.70888671874997,45.0038574218751]]],[[[-96.78232421874998,72.93662109375],[-97.0927734375,72.99692382812503],[-96.86240234374995,73.18881835937506],[-96.78232421874998,72.93662109375]]],[[[-114.52153320312502,72.592919921875],[-113.57807617187501,72.65209960937506],[-113.2923828125,72.94980468750003],[-112.75361328125001,72.98603515624995],[-111.26972656249994,72.71372070312498],[-111.895166015625,72.35610351562497],[-111.67509765625002,72.30014648437503],[-110.20512695312495,72.66127929687497],[-110.66083984374998,73.00820312500002],[-110.00844726562494,72.983642578125],[-108.75498046875002,72.55107421874999],[-108.18823242187501,71.72377929687502],[-107.812841796875,71.62617187500004],[-107.30600585937496,71.89467773437502],[-108.23740234374999,73.14990234375003],[-108.029052734375,73.34873046875003],[-106.48212890624998,73.19619140624997],[-105.41513671874995,72.788330078125],[-104.38593749999997,71.57695312500005],[-104.51479492187502,71.06425781250005],[-103.58457031249995,70.63085937500003],[-103.07719726562497,70.50883789062505],[-103.04956054687503,70.65507812499999],[-101.67631835937495,70.27827148437495],[-101.56240234375001,70.135009765625],[-101.04267578125,70.11079101562504],[-100.98237304687497,69.67988281250001],[-101.483837890625,69.85019531250006],[-101.64765624999997,69.69853515625007],[-102.18212890624997,69.845947265625],[-102.59589843749997,69.71791992187502],[-102.62109374999996,69.55151367187506],[-103.464892578125,69.64448242187498],[-103.04892578124999,69.47177734375006],[-103.12021484374995,69.20458984374997],[-102.44677734374997,69.476318359375],[-102.04594726562493,69.46484374999997],[-101.85712890625001,69.02397460937505],[-102.89506835937499,68.8236328125],[-104.57143554687501,68.87211914062502],[-105.105859375,68.92041015625],[-105.019580078125,69.08125],[-106.27016601562497,69.19458007812497],[-106.65908203124997,69.439599609375],[-107.43989257812497,69.00214843749995],[-108.36499023437497,68.93476562499998],[-109.47211914062501,68.67670898437498],[-113.12773437500002,68.49414062500003],[-113.61684570312501,68.8384765625],[-113.69414062499995,69.19501953124998],[-115.61811523437495,69.28295898437506],[-116.51347656249993,69.42460937500005],[-117.19541015624995,70.05405273437503],[-114.59233398437497,70.31245117187498],[-112.63789062499997,70.225244140625],[-111.63256835937497,70.30883789062497],[-113.75727539062503,70.69072265625005],[-115.99091796874997,70.586279296875],[-117.58706054687498,70.62954101562502],[-118.2640625,70.888330078125],[-118.26909179687493,71.03471679687505],[-115.30341796874997,71.49370117187505],[-117.93564453125003,71.39208984375003],[-118.22646484374995,71.46708984375005],[-117.742333984375,71.65932617187502],[-118.58300781250003,71.64902343749998],[-118.98769531249997,71.7642578125],[-118.94462890624997,71.98554687499995],[-118.21347656249998,72.26289062499998],[-118.481298828125,72.42768554687498],[-118.13310546874995,72.63281250000003],[-114.63823242187499,73.37265625000003],[-114.20639648437495,73.29780273437495],[-114.05170898437497,73.07099609375004],[-114.52153320312502,72.592919921875]]],[[[-105.28891601562499,72.919921875],[-106.92153320312497,73.479833984375],[-106.61396484375001,73.69560546875002],[-105.31796874999995,73.76713867187502],[-104.5875,73.57807617187495],[-104.62172851562495,73.3111328125],[-105.28891601562499,72.919921875]]],[[[-79.53730468749998,73.65449218749998],[-78.2865234375,73.66582031250007],[-77.20654296874997,73.49956054687505],[-76.18339843749999,72.84306640625005],[-77.83593750000003,72.89682617187498],[-79.3193359375,72.75771484375],[-79.820703125,72.82631835937502],[-80.18330078124995,73.22465820312499],[-80.77641601562502,73.33417968750001],[-80.84887695312503,73.72124023437499],[-79.53730468749998,73.65449218749998]]],[[[-86.58935546874997,71.01079101562507],[-85.64384765624999,71.15244140624998],[-85.09487304687497,71.15195312500006],[-84.82373046874997,71.02861328125005],[-84.69941406249995,71.63144531250003],[-85.33906249999998,71.69726562500003],[-85.91162109375,71.98652343749998],[-85.321875,72.23315429687506],[-84.28374023437499,72.04448242187499],[-84.84199218749995,72.30815429687505],[-84.62304687500003,72.37656250000003],[-85.34111328124993,72.42153320312497],[-85.64990234374997,72.72216796875003],[-85.26210937500002,72.95400390625],[-84.25664062499999,72.79672851562503],[-85.454736328125,73.10546875000003],[-84.41606445312496,73.45649414062495],[-83.781884765625,73.41689453125],[-83.72983398437495,73.57587890624995],[-81.946142578125,73.72983398437506],[-81.40615234374997,73.634521484375],[-80.27724609375,72.77016601562502],[-81.229345703125,72.31171874999998],[-80.61147460937497,72.450830078125],[-80.925146484375,71.90766601562501],[-80.18193359374996,72.20878906250007],[-79.884375,72.17719726562501],[-80.10893554687499,72.33217773437497],[-79.83129882812503,72.44628906250003],[-79.000244140625,72.27202148437507],[-79.00781250000003,72.04291992187501],[-78.58510742187497,71.880615234375],[-78.86274414062495,72.100830078125],[-78.69926757812496,72.35141601562498],[-77.51650390624997,72.17778320312505],[-78.48427734374994,72.47060546875002],[-77.75322265624996,72.72475585937502],[-75.70429687499998,72.57153320312497],[-75.05268554687493,72.22636718749999],[-75.92280273437501,71.71723632812501],[-74.90317382812503,72.10048828125002],[-74.20932617187498,71.978662109375],[-74.31572265624999,71.84267578125],[-75.20478515625001,71.70913085937497],[-74.70078125,71.67558593750005],[-74.99619140624998,71.21811523437503],[-74.48808593750002,71.64838867187501],[-73.8140625,71.77143554687495],[-74.197265625,71.404150390625],[-73.71284179687498,71.58759765624998],[-73.18061523437501,71.282861328125],[-73.27822265625,71.53798828125],[-72.901953125,71.67778320312507],[-71.64067382812499,71.51625976562502],[-71.22939453124997,71.33876953125],[-71.49501953124997,71.10512695312502],[-71.93793945312498,71.09428710937502],[-72.63271484374994,70.83076171874998],[-71.74252929687495,71.046875],[-71.370849609375,70.97514648437499],[-70.82607421874994,71.10874023437503],[-70.67265625,71.05219726562498],[-70.76171874999997,70.79223632812503],[-71.89018554687502,70.43154296875002],[-71.27587890625,70.50029296874999],[-71.42944335937503,70.12778320312503],[-70.97978515624999,70.5810546875],[-69.94980468750003,70.84501953125005],[-68.49575195312502,70.61025390625],[-68.363525390625,70.48125],[-70.05771484375,70.042626953125],[-68.77822265625,70.20356445312501],[-69.00830078124997,69.97895507812501],[-68.74404296874997,69.94140625],[-68.05908203124997,70.317236328125],[-67.36367187499994,70.03442382812503],[-67.22163085937495,69.73071289062506],[-68.02041015625,69.77006835937499],[-69.25078124999999,69.51191406249998],[-68.51303710937498,69.57729492187497],[-67.236962890625,69.460107421875],[-66.71674804687495,69.31186523437498],[-66.70742187500002,69.16821289062503],[-68.40629882812499,69.23222656250002],[-69.040625,69.09799804687503],[-68.41552734375,69.17207031250001],[-67.8326171875,69.06596679687499],[-67.88320312500002,68.78398437499999],[-69.31909179687497,68.85698242187505],[-68.21040039062495,68.702978515625],[-67.9384765625,68.524169921875],[-66.74272460937502,68.45776367187497],[-67.032958984375,68.32607421874997],[-66.923095703125,68.06572265625005],[-66.72900390624997,68.12900390625006],[-66.66269531249995,68.03442382812497],[-66.63095703124998,68.21064453124998],[-66.21240234374997,68.280419921875],[-66.44394531249998,67.83383789062506],[-65.94238281250003,68.07094726562505],[-65.86435546875003,67.92285156249997],[-65.50908203124996,67.96826171875],[-65.40126953125002,67.67485351562499],[-65.41533203124996,67.87924804687498],[-64.92231445312495,68.03164062500002],[-65.02109375,67.78754882812495],[-64.63779296875,67.84023437500002],[-63.850195312500034,67.56606445312502],[-64.00795898437502,67.34731445312497],[-64.69995117187494,67.35053710937501],[-63.83623046874993,67.26411132812498],[-63.59160156250002,67.3775390625],[-63.040136718750034,67.235009765625],[-63.70156249999994,66.82236328125003],[-62.962304687499966,66.94926757812505],[-62.37973632812495,66.90537109375],[-62.12358398437499,67.046728515625],[-61.35341796874994,66.689208984375],[-61.52783203124994,66.55810546875003],[-62.12333984374993,66.64306640625003],[-61.57080078125,66.37290039062506],[-61.95634765624993,66.30932617187497],[-62.553125,66.40683593750003],[-62.53359374999994,66.22700195312498],[-61.99160156250002,66.03530273437502],[-62.624121093750006,66.01625976562505],[-62.381982421874966,65.83330078124999],[-62.65888671874998,65.63994140625002],[-63.16894531249997,65.65732421875],[-63.45874023437494,65.85302734375],[-63.42089843749997,65.70859374999998],[-63.651074218749955,65.66098632812506],[-63.33745117187493,65.61674804687502],[-63.36337890624998,65.22973632812503],[-63.606591796874966,64.92807617187503],[-64.345703125,65.17241210937499],[-64.26967773437497,65.40078124999997],[-64.55507812500002,65.1166015625],[-65.401611328125,65.764013671875],[-64.44536132812496,66.31713867187497],[-65.0044921875,66.07773437500003],[-65.82573242187499,65.996923828125],[-65.65634765625003,66.204736328125],[-66.06372070312497,66.13271484374997],[-66.986328125,66.62749023437505],[-67.07685546874995,66.52548828125006],[-67.30732421874993,66.5697265625],[-67.22539062499993,66.31025390624998],[-67.88339843749995,66.46743164062502],[-67.18320312499995,66.03442382812503],[-67.350439453125,65.92973632812502],[-67.82802734374997,65.96518554687503],[-68.45991210937498,66.249267578125],[-68.74892578125,66.200048828125],[-68.21718750000002,66.078857421875],[-68.18671874999993,65.87099609375002],[-67.86645507812497,65.773681640625],[-67.936767578125,65.56489257812501],[-67.56962890624999,65.64355468749997],[-67.11796874999999,65.44038085937495],[-67.3365234375,65.34658203125005],[-66.69741210937502,64.81518554687506],[-66.63549804687503,65.00034179687503],[-66.21464843749999,64.72241210937497],[-65.93852539062496,64.88574218750003],[-65.2748046875,64.63154296875004],[-65.52934570312499,64.50478515624997],[-65.074609375,64.43666992187502],[-65.21298828125003,64.30327148437502],[-65.580322265625,64.29384765624997],[-65.16987304687495,64.02817382812503],[-64.67846679687503,64.027978515625],[-64.79814453124999,63.91596679687498],[-64.4109375,63.70634765625002],[-64.66464843749995,63.24536132812497],[-65.19184570312498,63.764257812500006],[-65.06894531249998,63.26347656250002],[-64.67236328125003,62.921972656250006],[-65.16279296875001,62.93261718750003],[-65.10849609374998,62.62646484375],[-66.22402343749994,63.10717773437497],[-66.228662109375,62.99096679687503],[-66.41445312500002,63.027197265625034],[-66.65498046874998,63.264746093750006],[-66.69746093749993,63.069531249999955],[-67.89326171874993,63.733740234375006],[-67.72255859374997,63.422753906249966],[-68.49375,63.725488281249994],[-68.91108398437498,63.703222656250006],[-68.141259765625,63.17231445312501],[-67.67597656249998,63.093554687500045],[-67.73696289062497,63.00957031249999],[-65.98017578125001,62.20888671875002],[-66.12387695312498,61.89306640625],[-68.53588867187503,62.25561523437506],[-69.12558593749998,62.423974609374966],[-69.604736328125,62.76772460937502],[-70.23613281250002,62.76337890625001],[-70.801416015625,62.91049804687506],[-71.10576171874999,63.00224609375002],[-70.94604492187497,63.12070312499998],[-71.34726562499998,63.066113281249955],[-71.99223632812493,63.41616210937505],[-71.380859375,63.580322265625],[-72.29013671874995,63.72797851562498],[-72.17426757812498,63.893408203125006],[-72.49843749999994,63.82348632812497],[-73.45454101562495,64.39926757812503],[-73.27128906250002,64.58251953125],[-73.91035156249998,64.578125],[-74.064794921875,64.42465820312498],[-74.13046874999998,64.6078125],[-74.46123046874996,64.64467773437505],[-74.68139648437497,64.8306640625],[-74.91943359374997,64.76552734374997],[-74.69472656250002,64.49658203124997],[-75.71503906249995,64.52436523437495],[-75.76669921875,64.39194335937498],[-76.85615234374998,64.23764648437498],[-77.76049804687503,64.36015624999999],[-78.04521484374993,64.499267578125],[-78.09560546875,64.93925781250002],[-77.36088867187496,65.19653320312503],[-77.32670898437493,65.453125],[-75.82832031249993,65.22705078125003],[-75.45209960937495,64.84160156250002],[-75.35712890624995,65.00874023437495],[-75.79868164062503,65.297509765625],[-75.16630859374999,65.28393554687497],[-74.13847656250002,65.50346679687502],[-73.55078125000003,65.48525390625005],[-74.41640624999997,66.16708984375003],[-73.03325195312502,66.72817382812505],[-72.78881835937494,67.030615234375],[-72.22001953124999,67.25429687500002],[-73.28447265624993,68.35698242187505],[-73.82050781249998,68.36293945312502],[-73.82211914062495,68.68598632812501],[-74.11796875000002,68.70092773437506],[-73.9892578125,68.54863281250002],[-74.2701171875,68.54121093750001],[-74.89296875,68.80815429687505],[-74.71669921874997,69.04550781249998],[-76.58505859375,68.69873046875003],[-76.55722656250003,69.00947265625001],[-75.9537109375,69.03081054687502],[-75.64775390625002,69.212548828125],[-76.46494140624995,69.46943359375001],[-76.23408203125001,69.66210937500003],[-76.742333984375,69.57290039062497],[-77.08994140625,69.63510742187503],[-76.85859374999995,69.775390625],[-77.591650390625,69.84560546875002],[-77.77402343750003,70.23852539062503],[-78.28281250000003,70.229150390625],[-79.06640624999997,70.60356445312507],[-79.40522460937498,70.40073242187503],[-78.86284179687499,70.24189453125001],[-78.88964843750003,69.97749023437495],[-79.51542968749996,69.88759765625005],[-81.65195312500003,70.09462890625002],[-80.92172851562503,69.73090820312501],[-81.56469726562503,69.94272460937498],[-82.29384765624997,69.83691406250003],[-83.14995117187493,70.00908203125002],[-83.85908203124998,69.96274414062498],[-85.43237304687497,70.11137695312507],[-85.780029296875,70.03666992187505],[-86.32202148437503,70.14541015625],[-86.396875,70.46533203124997],[-87.838134765625,70.24658203125],[-88.78271484374997,70.49448242187503],[-89.45590820312498,71.06171874999995],[-87.84492187499995,70.94438476562505],[-87.14008789062498,71.01162109374997],[-89.80537109374993,71.46230468750005],[-89.86152343750001,72.41191406250005],[-88.70517578124998,73.40327148437495],[-87.71977539062496,73.72290039062497],[-85.95078124999998,73.85014648437505],[-84.94677734375,73.72163085937498],[-86.00053710937499,73.31254882812505],[-86.65629882812502,72.72402343750005],[-86.21845703124998,71.89912109375004],[-85.02338867187495,71.35322265625001],[-86.58935546874997,71.01079101562507]]],[[[-100.00190429687497,73.9458984375],[-99.15795898437499,73.73159179687497],[-97.66997070312499,73.88774414062499],[-97.1705078125,73.82485351562497],[-97.001708984375,73.66650390625003],[-97.62587890624997,73.50229492187498],[-97.27250976562502,73.38681640624998],[-98.42177734375002,72.94101562500003],[-97.63632812499998,73.02763671874999],[-97.128125,72.62758789062502],[-96.59208984374996,72.71025390624999],[-96.44560546874996,72.55244140624998],[-96.80146484374998,72.32241210937502],[-96.61342773437494,71.83383789062506],[-97.58227539062497,71.62968750000005],[-98.18134765624998,71.66245117187503],[-98.32270507812501,71.85234375000002],[-98.19863281249994,71.44086914062501],[-98.66289062499993,71.302099609375],[-99.22363281249996,71.387109375],[-100.594482421875,72.15234375000003],[-101.20854492187495,72.31699218749998],[-101.72392578124996,72.31489257812501],[-102.70874023437496,72.76450195312503],[-102.20400390624998,73.077294921875],[-101.27319335937497,72.7216796875],[-100.48476562500002,72.77294921874997],[-100.395703125,72.97700195312498],[-100.128125,72.90668945312495],[-100.53637695312497,73.19785156250003],[-99.82514648437503,73.2138671875],[-100.36611328125001,73.359033203125],[-100.88935546875003,73.27534179687501],[-101.52319335937501,73.48637695312502],[-100.97578124999995,73.59975585937502],[-100.5216796875,73.44931640625],[-100.96298828125002,73.79140625],[-99.99111328125,73.79516601562503],[-100.00190429687497,73.9458984375]]],[[[-98.270361328125,73.86850585937498],[-98.97392578124997,73.81206054687502],[-99.4169921875,73.89541015625002],[-97.69824218749997,74.10869140625005],[-98.270361328125,73.86850585937498]]],[[[-93.17084960937498,74.16098632812506],[-92.22270507812502,73.97236328124998],[-90.62744140625,73.95170898437505],[-90.38139648437496,73.82475585937502],[-92.11791992187497,72.75380859375],[-94.21132812499997,72.75693359375],[-93.77055664062496,72.66821289062506],[-93.55517578124994,72.42114257812497],[-94.03754882812498,72.02875976562498],[-95.00786132812496,72.01279296875],[-95.60214843749998,72.88447265624995],[-95.63291015625003,73.69545898437497],[-94.697607421875,73.66357421874997],[-95.134130859375,73.88125],[-94.97353515625,74.04140625000002],[-93.17084960937498,74.16098632812506]]],[[[-119.73632812499997,74.11264648437498],[-119.20595703125002,74.19799804687503],[-119.11796874999995,74.01552734375],[-118.54399414062499,74.24462890625003],[-117.51484375000001,74.23173828124999],[-115.51069335937501,73.61875],[-115.446875,73.43886718750002],[-118.96157226562497,72.68413085937499],[-119.51284179687501,72.30268554687501],[-120.17988281250001,72.21264648437506],[-120.61933593750001,71.50576171875002],[-121.47216796875003,71.38901367187503],[-121.74936523437502,71.44477539062501],[-123.09565429687503,71.09379882812502],[-124.00776367187494,71.67744140624998],[-125.29667968749999,71.973046875],[-125.84531250000002,71.978662109375],[-123.79726562499997,73.76816406250003],[-124.69624023437497,74.34819335937499],[-121.50415039062497,74.54511718749998],[-119.56264648437494,74.23281250000002],[-119.73632812499997,74.11264648437498]]],[[[-97.35551757812496,74.52631835937495],[-97.75,74.51054687500005],[-97.41650390624994,74.62656250000003],[-97.35551757812496,74.52631835937495]]],[[[-95.306640625,74.50541992187505],[-95.850732421875,74.58247070312504],[-95.51020507812498,74.63676757812499],[-95.306640625,74.50541992187505]]],[[[-104.11992187499995,75.03632812500004],[-104.88740234374998,75.14775390624999],[-104.34619140624996,75.42993164062503],[-103.64350585937497,75.18657226562499],[-104.11992187499995,75.03632812500004]]],[[[-93.54257812499995,75.0279296875],[-93.57309570312495,74.66884765625005],[-94.53452148437498,74.63671874999997],[-96.59960937499997,75.03178710937499],[-95.95463867187493,75.44379882812501],[-94.878173828125,75.63002929687502],[-93.90908203125002,75.42250976562502],[-93.54257812499995,75.0279296875]]],[[[-96.07856445312495,75.510107421875],[-96.91513671875003,75.37968749999999],[-96.98281249999997,75.50981445312505],[-96.367822265625,75.65463867187506],[-96.07856445312495,75.510107421875]]],[[[-94.52656249999995,75.74931640624999],[-94.901220703125,75.93076171875],[-94.53789062499996,75.99643554687506],[-94.52656249999995,75.74931640624999]]],[[[-118.328125,75.57968749999998],[-118.81713867187503,75.52211914062497],[-119.39458007812499,75.617333984375],[-117.63369140624998,76.11508789062498],[-118.328125,75.57968749999998]]],[[[-79.0630859375,75.92587890624998],[-79.63876953124995,75.84291992187505],[-79.00932617187499,76.14589843750005],[-79.0630859375,75.92587890624998]]],[[[-102.22734374999995,76.014892578125],[-102.00800781250003,75.93940429687498],[-102.57958984375003,75.78022460937498],[-103.31474609374996,75.76420898437499],[-103.04150390624999,75.91884765624997],[-103.98525390624997,75.93310546875003],[-103.80078124999994,76.03701171874997],[-104.24248046874996,76.04697265625006],[-104.35063476562497,76.18232421875001],[-102.72802734374999,76.30703125],[-102.22734374999995,76.014892578125]]],[[[-104.02285156249998,76.58310546875003],[-103.05131835937495,76.44985351562497],[-103.31137695312499,76.34755859375],[-104.35751953124995,76.33461914062502],[-104.58569335937499,76.60649414062499],[-104.07451171875003,76.66611328124998],[-104.02285156249998,76.58310546875003]]],[[[-97.70092773437497,76.46650390624998],[-97.89052734374997,75.7603515625],[-97.40751953124999,75.67250976562497],[-97.33603515624998,75.41982421875],[-97.65332031249997,75.50776367187498],[-97.87822265624996,75.41611328125003],[-97.67431640624997,75.127294921875],[-98.04531249999997,75.20083007812497],[-98.12094726562503,75.03271484375],[-100.234375,75.00771484374997],[-100.48349609374995,75.18842773437501],[-100.14570312499995,75.24614257812505],[-100.71191406250003,75.40634765625],[-99.19458007812499,75.698388671875],[-102.58740234375001,75.51367187500003],[-102.79750976562501,75.59965820312505],[-102.14472656249998,75.87504882812502],[-100.97280273437498,75.79843750000003],[-101.414990234375,75.84584960937502],[-101.87211914062496,76.08310546875003],[-101.52895507812495,76.21728515625003],[-102.1046875,76.33120117187505],[-101.41518554687495,76.42490234375003],[-99.86547851562499,75.92421875],[-100.11284179687502,76.11723632812507],[-99.54106445312497,76.14628906250005],[-100.41420898437495,76.242529296875],[-99.97773437500003,76.31245117187495],[-100.82973632812497,76.52387695312495],[-99.8140625,76.6322265625],[-98.89033203125,76.46557617187497],[-98.71083984374994,76.69384765625003],[-97.70092773437497,76.46650390624998]]],[[[-101.22612304687497,76.57934570312497],[-101.61308593749995,76.60458984375006],[-100.26914062499998,76.73413085937497],[-101.22612304687497,76.57934570312497]]],[[[-108.29238281250001,76.05712890625],[-107.72348632812502,75.99541015625002],[-108.020703125,75.80478515625],[-107.21621093749997,75.89155273437501],[-106.91352539062503,75.67963867187501],[-106.67700195312499,76.02373046875002],[-105.63266601562493,75.94536132812505],[-105.51948242187497,75.63237304687505],[-106.09262695312495,75.08945312500003],[-107.15341796874996,74.9271484375],[-108.47475585937495,74.94721679687501],[-108.83129882812501,75.06489257812498],[-112.51933593749997,74.41684570312503],[-113.67158203124997,74.45302734375005],[-114.31269531250003,74.71508789062506],[-112.835986328125,74.9755859375],[-111.67109375,75.01943359374997],[-111.09345703125001,75.25629882812498],[-113.71176757812499,75.06860351562503],[-113.85332031249996,75.259375],[-113.46708984374996,75.41611328125003],[-114.01650390624998,75.43427734375001],[-114.16845703124994,75.23950195312503],[-114.51381835937497,75.27548828125],[-114.45175781250002,75.08789062499997],[-115.02011718749999,74.97617187500003],[-115.41318359374995,75.11499023437497],[-115.72885742187496,74.968115234375],[-116.47607421874996,75.17177734375],[-117.56523437499997,75.23334960937504],[-117.25761718750002,75.45952148437502],[-116.07714843749996,75.49296874999999],[-115.14184570312501,75.67851562500005],[-116.42563476562498,75.58535156249997],[-117.16362304687496,75.64487304687503],[-116.80214843749995,75.77158203124998],[-114.99150390625002,75.896337890625],[-116.66455078124999,75.95756835937505],[-116.20986328125,76.19443359374998],[-114.77861328124999,76.17260742187497],[-115.82216796874997,76.27001953125003],[-114.99848632812503,76.4974609375],[-114.19394531249999,76.45146484375005],[-113.82348632812501,76.20683593750002],[-112.69760742187496,76.20170898437505],[-111.05268554687495,75.54853515625001],[-108.94716796875,75.54179687499999],[-108.94477539062495,75.69897460937503],[-109.8705078125,75.929052734375],[-109.48681640624999,76.14467773437497],[-110.31445312500001,76.369384765625],[-109.09824218749996,76.811865234375],[-108.46699218749997,76.73759765625007],[-108.29238281250001,76.05712890625]]],[[[-89.72646484374994,76.50742187499998],[-90.55625,76.73457031249998],[-90.13632812499995,76.83696289062505],[-89.69541015625,76.74116210937498],[-89.72646484374994,76.50742187499998]]],[[[-113.56069335937494,76.74326171874998],[-114.83525390624999,76.79467773437497],[-113.89165039062495,76.89487304687503],[-113.56069335937494,76.74326171874998]]],[[[-94.29497070312493,76.91245117187498],[-93.23002929687496,76.77026367187497],[-93.53457031250002,76.44770507812498],[-92.99536132812494,76.62041015624999],[-91.305029296875,76.68076171875003],[-90.54262695312494,76.495751953125],[-91.41508789062496,76.45585937500005],[-89.28452148437498,76.30161132812506],[-89.40659179687498,76.18916015624998],[-91.40732421874998,76.22006835937506],[-89.27758789062497,75.79506835937497],[-89.64604492187499,75.5650390625],[-88.91669921874998,75.45395507812503],[-88.64497070312495,75.65844726562503],[-88.201318359375,75.51201171875005],[-87.72973632812503,75.57563476562495],[-87.53911132812502,75.48486328125003],[-87.25693359374998,75.61772460937499],[-85.95146484374993,75.39501953125],[-85.97299804687498,75.5287109375],[-83.931982421875,75.81894531250003],[-83.23710937499993,75.75083007812503],[-82.153662109375,75.83105468750003],[-80.32197265624998,75.62910156250001],[-79.50908203125002,75.25981445312499],[-80.38198242187494,75.03417968750003],[-79.40141601562502,74.91762695312502],[-79.944482421875,74.83364257812505],[-80.34775390624998,74.90297851562505],[-80.26274414062499,74.58447265625],[-81.94018554687494,74.47270507812505],[-82.73579101562495,74.53027343749997],[-83.5220703125,74.90146484375],[-83.53188476562494,74.58569335937497],[-84.42553710937503,74.50810546875007],[-85.06142578125,74.60693359375003],[-85.133447265625,74.517431640625],[-85.44233398437495,74.6005859375],[-85.80800781249994,74.49897460937498],[-88.42304687499995,74.49414062499997],[-88.53496093749993,74.83173828125001],[-89.55869140624995,74.55473632812507],[-90.55327148437499,74.61274414062498],[-90.88022460937498,74.8177734375],[-91.13457031250002,74.64985351562498],[-91.54912109375002,74.65556640624999],[-92.3892578125,75.263330078125],[-92.18510742187499,75.84653320312498],[-93.09174804687495,76.35400390624997],[-95.27387695312498,76.26440429687503],[-96.03969726562494,76.48671875000002],[-95.65097656249998,76.58466796874998],[-96.88071289062495,76.73833007812505],[-96.40156249999995,76.79721679687503],[-96.75830078124997,76.97177734374998],[-95.84951171875002,77.06621093750005],[-94.29497070312493,76.91245117187498]]],[[[-115.55126953125001,77.36328125],[-116.32919921874996,77.137060546875],[-115.81005859374999,76.939111328125],[-116.25273437500002,76.90141601562505],[-115.94628906250003,76.71127929687503],[-116.99921874999995,76.531591796875],[-117.23359375000001,76.28154296875005],[-117.99296874999999,76.40581054687505],[-117.88081054687497,76.80507812500005],[-118.79140624999994,76.51298828125005],[-119.080712890625,76.12407226562505],[-119.58037109375,76.32651367187498],[-119.52612304687496,75.99721679687505],[-119.91289062499997,75.85883789062501],[-120.40888671874995,75.82563476562498],[-120.84838867187496,76.18266601562499],[-121.21347656249999,75.98369140625005],[-122.53305664062498,75.95092773437503],[-122.59272460937497,76.16206054687495],[-122.90278320312498,76.13471679687498],[-122.51938476562503,76.353173828125],[-121.56113281250003,76.453466796875],[-119.09018554687496,77.30507812500002],[-116.84355468749995,77.33955078124995],[-117.03974609374995,77.46513671875005],[-116.51132812500003,77.54760742187497],[-115.55126953125001,77.36328125]]],[[[-89.83325195312503,77.26762695312505],[-90.22827148437503,77.21245117187499],[-90.99321289062499,77.32949218750002],[-91.01904296875003,77.64389648437503],[-89.83896484375003,77.49140624999998],[-89.83325195312503,77.26762695312505]]],[[[-104.55815429687497,77.14174804687497],[-105.21508789062496,77.18208007812501],[-106.03559570312495,77.73984375000006],[-105.58789062499997,77.73598632812497],[-104.54223632812501,77.33774414062503],[-104.55815429687497,77.14174804687497]]],[[[-95.484375,77.79199218750003],[-93.30097656249995,77.73979492187505],[-93.54394531249997,77.466650390625],[-95.98706054687497,77.484130859375],[-96.19458007812497,77.70053710937503],[-95.484375,77.79199218750003]]],[[[-101.6935546875,77.69658203125005],[-102.37783203124995,77.728125],[-102.44770507812498,77.88061523437506],[-101.19321289062493,77.82978515624998],[-101.00205078124998,77.73510742187497],[-101.6935546875,77.69658203125005]]],[[[-113.83247070312497,77.75463867187506],[-114.28720703124998,77.72148437500005],[-114.98041992187498,77.91542968750002],[-114.33037109374997,78.07753906250002],[-113.83247070312497,77.75463867187506]]],[[[-110.45805664062496,78.10322265625001],[-109.62226562499995,78.07475585937499],[-110.865625,77.834130859375],[-110.15273437500002,77.76293945312506],[-110.19848632812501,77.52451171874998],[-112.37265625000002,77.36411132812498],[-113.16435546875002,77.5302734375],[-113.21518554687498,77.90351562500001],[-110.45805664062496,78.10322265625001]]],[[[-109.81596679687499,78.65039062500003],[-109.48447265624995,78.31640625],[-111.16918945312499,78.38627929687505],[-111.51748046874997,78.27470703125005],[-112.13125,78.366064453125],[-113.22304687499998,78.29790039062505],[-112.85585937499997,78.46684570312502],[-110.877587890625,78.73505859375004],[-109.81596679687499,78.65039062500003]]],[[[-96.20449218749994,78.53129882812499],[-94.91538085937495,78.39052734375002],[-95.32924804687497,78.22504882812495],[-94.93427734374998,78.07563476562498],[-96.98964843749994,77.80600585937503],[-97.65815429687498,78.090625],[-96.944677734375,78.15185546874997],[-98.04951171874995,78.325927734375],[-98.33261718749998,78.77353515625006],[-97.38232421875,78.78291015625001],[-96.20449218749994,78.53129882812499]]],[[[-103.42602539062499,79.315625],[-102.57617187499996,78.87939453125003],[-101.70366210937502,79.07890625000002],[-101.128125,78.80166015625002],[-100.43549804687503,78.8203125],[-99.60942382812495,78.58305664062507],[-99.16640625000002,77.85693359375003],[-100.27465820312503,77.83271484374995],[-101.07412109375001,78.19384765625],[-102.60698242187502,78.24892578125002],[-102.73134765624995,78.37104492187495],[-103.94658203124999,78.26000976562497],[-104.76357421874998,78.35166015625],[-104.90961914062498,78.55263671875],[-103.57050781250003,78.53984375000005],[-104.02084960937502,78.63491210937497],[-103.37158203125,78.73632812500003],[-104.18500976562498,78.78129882812505],[-104.15195312499999,78.989892578125],[-104.89550781249996,78.80815429687502],[-104.74677734375003,79.02709960937503],[-105.53564453124999,79.03251953125007],[-105.51455078124995,79.24248046875002],[-105.38769531249994,79.32358398437503],[-103.42602539062499,79.315625]]],[[[-98.79160156249995,79.98110351562505],[-98.94521484375,79.72407226562498],[-100.05683593749997,79.89824218750005],[-100.05327148437496,80.093359375],[-99.15322265625001,80.12421874999998],[-98.79160156249995,79.98110351562505]]],[[[-91.88554687499999,81.13286132812505],[-90.64301757812498,80.59370117187498],[-89.23559570312494,80.51064453125002],[-88.85732421874997,80.16621093750001],[-88.19990234374998,80.11147460937497],[-88.5248046875,80.41801757812507],[-87.675,80.37211914062505],[-87.92231445312501,80.09770507812499],[-86.97719726562502,79.89423828125001],[-87.29516601562494,79.58017578124998],[-86.33696289062496,79.63496093749995],[-86.00703124999998,79.47944335937498],[-85.6478515625,79.61142578125006],[-85.04213867187497,79.2845703125],[-86.95717773437502,78.97490234375005],[-87.61738281249995,78.67631835937505],[-88.04018554687494,78.99531250000004],[-87.98286132812498,78.53706054687501],[-88.74160156250002,78.58403320312499],[-88.82241210937497,78.18588867187498],[-90.037109375,78.60683593750002],[-89.52568359374999,78.15961914062495],[-90.29721679687495,78.32802734374997],[-90.614404296875,78.14985351562501],[-92.35126953125001,78.312890625],[-92.8482421875,78.46010742187497],[-91.86689453124998,78.54267578125001],[-93.26660156249997,78.60830078124997],[-93.63442382812502,78.75092773437498],[-93.15986328124998,78.77563476562503],[-94.11459960937498,78.92890625000001],[-92.54721679687495,79.28261718750002],[-91.29990234375003,79.372705078125],[-92.82192382812497,79.44990234375001],[-93.93315429687496,79.29072265624998],[-94.11030273437498,79.40156250000001],[-95.10317382812502,79.289892578125],[-95.66289062500002,79.52734374999997],[-94.40185546874997,79.736328125],[-95.73935546874995,79.66015625000003],[-96.58906249999995,79.91665039062497],[-96.77324218749999,80.13579101562502],[-94.64589843749994,80.04873046874997],[-94.26259765625002,80.19487304687499],[-95.40507812499996,80.13500976562506],[-96.39409179687493,80.31503906250003],[-95.549072265625,80.36660156249997],[-95.92695312499998,80.72065429687498],[-93.92792968749995,80.55917968750003],[-95.51474609375003,80.83813476562503],[-94.98051757812499,81.04965820312503],[-93.28671874999998,81.10029296874998],[-94.22011718749997,81.33076171875004],[-93.03466796874997,81.3462890625],[-91.88554687499999,81.13286132812505]]],[[[-69.4888671875,83.01679687499998],[-66.42255859374998,82.92685546875003],[-68.46933593749995,82.65336914062502],[-65.29902343749995,82.79960937500005],[-64.98388671874997,82.90229492187501],[-64.50400390625,82.77841796874998],[-63.641015624999966,82.81259765625003],[-63.246777343749926,82.4501953125],[-62.47519531249995,82.51958007812502],[-61.392480468749994,82.44189453125],[-61.61538085937502,82.18442382812503],[-64.43579101562497,81.74262695312501],[-66.62573242187497,81.61640624999995],[-68.68852539062493,81.29331054687503],[-64.78007812499993,81.49287109375001],[-69.55068359375,80.38325195312498],[-70.71259765625001,80.53959960937505],[-70.264892578125,80.23359374999998],[-72.05595703124996,80.12324218749995],[-70.56840820312493,80.09370117187498],[-71.387841796875,79.76176757812505],[-72.43652343750003,79.69438476562499],[-74.39448242187495,79.87407226562499],[-73.47246093749996,79.7564453125],[-73.36152343750001,79.50400390625],[-75.50341796875,79.41416015625],[-76.898828125,79.5123046875],[-75.60273437499998,79.23955078125005],[-74.48120117187503,79.22949218750006],[-74.64091796874996,79.03554687499997],[-78.58164062499998,79.075],[-77.88276367187498,78.9423828125],[-76.255859375,79.00683593749997],[-74.486328125,78.75009765624998],[-74.87861328124998,78.54482421875],[-76.41611328124995,78.51152343750005],[-75.19345703125,78.327734375],[-75.86596679687497,78.00981445312499],[-78.01259765624997,77.94604492187506],[-78.07617187500003,77.51904296875],[-78.70849609374997,77.34213867187503],[-80.57304687499996,77.31479492187506],[-81.65908203124997,77.52543945312499],[-81.3013671875,77.34404296875007],[-82.056787109375,77.29653320312497],[-81.75634765624997,77.20400390625005],[-79.49726562500001,77.19609375000005],[-78.97919921874998,76.89287109374999],[-78.28886718750002,76.97797851562501],[-77.98330078124994,76.75498046875006],[-78.284326171875,76.57124023437501],[-80.79970703124997,76.173583984375],[-80.97451171874994,76.470068359375],[-81.71738281250003,76.494970703125],[-82.52983398437499,76.723291015625],[-82.23315429687494,76.46582031250003],[-83.88569335937501,76.453125],[-84.22377929687497,76.67534179687499],[-84.27534179687498,76.35654296875006],[-85.141259765625,76.30458984375005],[-86.45371093750003,76.58486328125002],[-86.68022460937499,76.37661132812497],[-87.35419921874998,76.44804687500005],[-87.48979492187499,76.58583984374997],[-87.49755859374997,76.38627929687499],[-88.39599609374997,76.40527343750003],[-88.49584960937497,76.77285156249997],[-88.54580078125002,76.42089843750003],[-89.36962890624997,76.474462890625],[-89.49975585937503,76.82680664062502],[-88.39814453124995,77.10395507812501],[-86.81225585937497,77.18491210937498],[-87.68144531249996,77.43637695312503],[-88.01699218750002,77.78471679687505],[-86.75507812499998,77.86372070312498],[-85.58847656249998,77.46113281250004],[-84.73867187499997,77.36103515624998],[-83.72128906249998,77.41420898437497],[-82.7103515625,77.84951171875002],[-82.5953125,77.99213867187504],[-83.77939453125,77.53261718750002],[-85.28935546874996,77.55903320312498],[-85.54755859374998,77.92768554687495],[-84.61542968749998,78.19570312500002],[-84.22270507812499,78.176025390625],[-84.91035156249993,78.23969726562501],[-84.78320312499997,78.52758789062506],[-85.5859375,78.10957031249998],[-86.21777343750003,78.08120117187497],[-85.92006835937494,78.34287109374998],[-86.91323242187494,78.126806640625],[-87.5517578125,78.17661132812503],[-86.80791015624999,78.77436523437495],[-85.00375976562495,78.912255859375],[-83.27143554687501,78.77031250000002],[-81.75009765624995,78.97578124999995],[-82.43876953125002,78.903662109375],[-84.41201171875002,78.99658203125003],[-84.38359375000002,79.1185546875],[-83.57587890624995,79.05366210937501],[-86.42075195312498,79.84521484374997],[-86.49853515625003,80.25825195312501],[-83.72363281250003,80.22895507812501],[-81.68837890625,79.685791015625],[-80.47592773437498,79.60625],[-80.12446289062495,79.66948242187507],[-81.01015625000002,79.693115234375],[-82.98701171874995,80.32260742187498],[-76.86298828124995,80.86479492187505],[-78.71621093749994,80.95166015624997],[-76.88510742187503,81.43027343750006],[-81.00703125000001,80.6548828125],[-82.88432617187502,80.57753906249997],[-82.22236328124998,80.77231445312503],[-84.41782226562495,80.52675781250002],[-86.250341796875,80.56577148437506],[-86.60307617187499,80.66401367187498],[-85.63930664062494,80.92460937500007],[-83.288818359375,81.14794921875],[-85.780859375,81.03505859375],[-87.32988281250002,80.669775390625],[-88.00366210937497,80.675390625],[-89.16689453125,80.94130859375],[-86.47675781249993,81.03574218750006],[-84.94121093750002,81.28623046875],[-87.27509765624995,81.080810546875],[-89.623046875,81.032470703125],[-89.94731445312499,81.17265625000005],[-89.20869140624998,81.25009765625003],[-89.67368164062503,81.32861328125003],[-87.59702148437498,81.52583007812498],[-88.47905273437502,81.56464843749998],[-90.41630859374996,81.40537109375003],[-89.82167968749997,81.63486328124998],[-91.29238281250002,81.57124023437498],[-91.64755859374998,81.68383789062503],[-88.06318359375001,82.09648437500007],[-87.01821289062502,81.95874023437497],[-86.62680664062495,82.05102539062503],[-85.04482421874997,81.9828125],[-86.615625,82.21855468750007],[-84.89682617187503,82.44941406250001],[-82.63369140625002,82.07729492187497],[-82.53691406250002,82.24726562499995],[-79.465625,81.85112304687499],[-82.44755859374993,82.39501953125003],[-81.68115234375003,82.51865234375],[-82.11684570312497,82.62866210937503],[-80.8625,82.57153320312503],[-81.01015625000002,82.77905273437503],[-78.748779296875,82.67939453124998],[-80.15493164062497,82.91113281250003],[-77.61806640624997,82.89584960937503],[-76.009375,82.53515625],[-75.565625,82.60854492187502],[-77.12490234374994,83.00854492187497],[-74.41416015624995,83.01313476562501],[-72.65869140625,82.72163085937495],[-73.44189453124994,82.90483398437499],[-72.811669921875,83.08120117187502],[-71.98320312499996,83.10141601562498],[-70.94038085937495,82.90224609375],[-71.08481445312498,83.08266601562497],[-69.96992187499995,83.11611328125005],[-69.4888671875,83.01679687499998]]]]},"properties":{"name":"Canada","childNum":110}},{"geometry":{"type":"Polygon","coordinates":[[[9.527658197470123,47.27026989773668],[9.46249431093294,47.19858962254578],[9.46249431093294,47.09010747968864],[9.409458596647225,47.02019676540292],[9.579979133936737,47.05856388629306],[9.580273437500011,47.057373046875],[10.133496093750011,46.851513671875],[10.349414062500017,46.98476562499999],[10.414941406250023,46.964404296874996],[10.45458984375,46.8994140625],[10.452832031250011,46.86494140625],[10.406054687500017,46.73486328125],[10.39794921875,46.6650390625],[10.4306640625,46.550048828125],[10.195507812500011,46.62109375],[10.1375,46.61435546875],[10.087011718750006,46.599902343749996],[10.061230468750011,46.546777343749994],[10.038281250000011,46.483203125],[10.045605468750011,46.447900390624994],[10.081933593750023,46.420751953125],[10.109667968750017,46.362841796874996],[10.128320312500023,46.238232421875],[10.08056640625,46.227978515625],[10.041015625,46.238085937499996],[9.939257812500017,46.36181640625],[9.884472656250011,46.3677734375],[9.787792968750011,46.346044921875],[9.639453125000017,46.2958984375],[9.57958984375,46.29609375],[9.528710937500023,46.306201171874996],[9.427636718750023,46.482324218749994],[9.399316406250023,46.4806640625],[9.304394531250011,46.495556640625],[9.203417968750017,46.21923828125],[9.11874162946429,46.014892578125],[8.97551618303573,45.81677455357143],[8.74961495535715,46.02246372767857],[8.818554687500011,46.0771484375],[8.458398437500023,46.245898437499996],[8.370703125,46.445117187499996],[8.298535156250011,46.40341796875],[8.23193359375,46.341210937499994],[8.08154296875,46.256005859374994],[7.9931640625,46.015917968749996],[7.327929687500017,45.912353515625],[7.129003906250006,45.880419921874996],[7.055761718750006,45.90380859375],[7.02109375,45.92578125],[6.953710937500006,46.017138671874996],[6.897265625000017,46.0517578125],[6.772070312500006,46.16513671875],[6.758105468750017,46.415771484375],[6.578222656250006,46.437353515625],[6.428906250000011,46.430517578125],[6.321875,46.393701171874994],[6.234667968750017,46.3326171875],[6.199414062500011,46.19306640625],[6.086621093750011,46.147021484374996],[6.006640625000017,46.142333984375],[5.971484375000017,46.151220703125],[5.970019531250017,46.214697265625],[6.0361328125,46.238085937499996],[6.095898437500011,46.27939453125],[6.129687500000017,46.5669921875],[6.41015625,46.755419921874996],[6.429003906250017,46.832275390625],[6.45625,46.94833984375],[6.624804687500017,47.004345703125],[6.666894531250023,47.026513671874994],[6.688085937500006,47.058251953124994],[6.820703125000023,47.16318359375],[6.952050781250023,47.2671875],[6.978515625,47.302050781249996],[7.000585937500006,47.322509765625],[7.000585937500006,47.339453125],[6.900390625,47.39423828125],[6.968359375,47.45322265625],[7.136035156250017,47.48984375],[7.343164062500023,47.43310546875],[7.615625,47.592724609375],[8.454003906250023,47.59619140625],[8.559472656250023,47.6240234375],[8.570507812500011,47.63779296875],[8.567089843750011,47.651904296874996],[8.55234375,47.659130859375],[8.451757812500006,47.651806640625],[8.413281250000011,47.6626953125],[8.403417968750006,47.687792968749996],[8.435742187500011,47.731347656249994],[8.572656250000023,47.775634765625],[9.524023437500006,47.52421875],[9.625878906250023,47.467041015625],[9.527539062500011,47.270751953125],[9.527658197470123,47.27026989773668]]]},"properties":{"name":"Switzerland","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-67.28886718749999,-55.776855468749964],[-67.55996093749997,-55.72480468750002],[-67.39736328124997,-55.58515625],[-67.28886718749999,-55.776855468749964]]],[[[-67.07993164062498,-55.15380859374996],[-67.33969726562495,-55.292578124999984],[-67.4947265625,-55.177441406249976],[-68.07001953124995,-55.22109374999999],[-68.30136718750003,-54.98066406250003],[-67.245263671875,-54.977636718750034],[-67.07993164062498,-55.15380859374996]]],[[[-69.70297851562503,-54.91904296875],[-68.90078125000002,-55.01777343750004],[-68.45800781249997,-54.95966796875002],[-68.61328124999997,-55.155566406250045],[-68.28266601562495,-55.25517578125],[-68.04833984375,-55.6431640625],[-68.86704101562498,-55.45019531250003],[-68.89008789062498,-55.2412109375],[-69.19262695312497,-55.171875],[-69.35922851562498,-55.300683593749945],[-69.18085937499995,-55.47480468749998],[-69.41181640624995,-55.44423828124997],[-69.97978515625002,-55.14746093749999],[-69.88442382812494,-54.88203125000001],[-69.70297851562503,-54.91904296875]]],[[[-70.9916015625,-54.86796874999999],[-70.80483398437497,-54.96767578124996],[-70.41752929687493,-54.908886718749976],[-70.29785156249997,-55.11376953124997],[-70.47558593749994,-55.17705078124998],[-71.43720703125001,-54.88925781249997],[-70.9916015625,-54.86796874999999]]],[[[-71.390478515625,-54.03281250000002],[-71.02192382812495,-54.111816406250036],[-71.14326171874998,-54.374023437499986],[-71.473291015625,-54.23115234375001],[-71.94853515624999,-54.300878906250006],[-72.21044921874997,-54.04775390624995],[-71.996484375,-53.884863281249984],[-71.390478515625,-54.03281250000002]]],[[[-72.92324218749997,-53.481640625],[-72.88222656249997,-53.578320312499976],[-72.48227539062503,-53.58808593750001],[-72.20541992187503,-53.80742187500002],[-72.408544921875,-54.00380859374997],[-72.87099609375,-54.12656250000002],[-72.76376953125,-53.86484375],[-73.03945312499994,-53.83281250000004],[-73.08076171875001,-53.99804687499995],[-73.21064453125001,-53.98583984374995],[-73.31435546875,-53.72919921874998],[-73.845458984375,-53.54580078125001],[-73.44707031249993,-53.41005859374998],[-72.92324218749997,-53.481640625]]],[[[-74.38574218749994,-52.92236328125001],[-73.65400390624998,-53.06982421875003],[-73.13520507812498,-53.35390625],[-73.56728515625,-53.3068359375],[-73.86694335937494,-53.096875],[-74.27021484374995,-53.08154296875002],[-74.71201171874998,-52.74873046874998],[-74.38574218749994,-52.92236328125001]]],[[[-68.62993164062499,-52.65263671875004],[-68.65322265624994,-54.85361328124999],[-69.48627929687493,-54.85888671875],[-69.72343750000002,-54.71210937500003],[-70.49716796875,-54.80957031249999],[-71.83154296874997,-54.62617187500002],[-71.92773437500003,-54.52871093749997],[-71.80014648437498,-54.433984374999945],[-71.07993164062498,-54.444238281249994],[-70.79726562500002,-54.32724609374996],[-70.70112304687498,-54.48544921875004],[-70.31098632812498,-54.52851562500002],[-70.86308593749993,-54.11044921875003],[-70.86772460937499,-53.88417968750002],[-70.53129882812502,-53.627343750000016],[-70.37973632812495,-53.98671874999995],[-70.62983398437493,-54.005566406249976],[-70.53530273437494,-54.136132812500016],[-70.16899414062502,-54.37929687499999],[-69.74184570312494,-54.30585937500005],[-69.25317382812494,-54.557421875000045],[-69.04433593749997,-54.40673828124999],[-69.98813476562503,-54.10908203125001],[-70.15112304687503,-53.88808593750002],[-70.09111328124996,-53.72177734374998],[-69.35595703125003,-53.41630859375001],[-69.63701171874999,-53.33408203125004],[-70.32929687499998,-53.37763671875003],[-70.44335937499994,-53.085546875000034],[-70.130615234375,-52.942773437499994],[-70.38012695312494,-52.75195312500002],[-69.93544921874997,-52.82109374999998],[-69.41406249999997,-52.48623046874997],[-69.16704101562499,-52.66757812499997],[-68.78979492187497,-52.576757812500034],[-68.62993164062499,-52.65263671875004]]],[[[-74.82294921874993,-51.63017578125001],[-74.53681640624998,-51.96513671875004],[-74.69448242187497,-52.27919921874999],[-74.85180664062494,-52.27070312500003],[-75.10537109375,-51.78886718750001],[-74.82294921874993,-51.63017578125001]]],[[[-74.55864257812499,-51.27705078125001],[-74.62036132812497,-51.395703125000026],[-75.04736328125,-51.39833984375003],[-75.28911132812496,-51.625390625000016],[-75.15366210937498,-51.278808593750014],[-74.73666992187503,-51.20761718749999],[-74.55864257812499,-51.27705078125001]]],[[[-75.302001953125,-50.67998046875005],[-75.411376953125,-50.76435546875001],[-75.42763671875002,-50.48056640625002],[-75.11533203124998,-50.510449218749976],[-75.302001953125,-50.67998046875005]]],[[[-75.05478515625,-50.29609375],[-75.44912109374997,-50.34335937500004],[-75.32666015624997,-50.01181640625],[-74.8759765625,-50.10996093750001],[-75.05478515625,-50.29609375]]],[[[-75.106689453125,-48.83652343750001],[-75.38994140624999,-49.15917968750002],[-75.64116210937499,-49.195410156250034],[-75.48764648437498,-49.082421875000016],[-75.58310546874998,-48.85888671874995],[-75.106689453125,-48.83652343750001]]],[[[-74.47617187499998,-49.14785156250002],[-74.59472656249997,-50.00664062500001],[-74.76298828124996,-50.01142578125001],[-74.88041992187502,-49.72587890625001],[-74.72382812499998,-49.42382812500003],[-74.960107421875,-49.533007812499974],[-75.06601562499998,-49.85234375000002],[-75.54980468749994,-49.79130859375002],[-75.30585937499998,-49.49404296875003],[-75.46748046874995,-49.35888671875003],[-75.08603515624998,-49.27021484375],[-75.21015624999995,-49.14804687499998],[-74.94921875,-48.960156249999976],[-74.89624023437503,-48.73320312500002],[-74.54609374999993,-48.76689453125004],[-74.47617187499998,-49.14785156250002]]],[[[-75.51025390624997,-48.76347656250005],[-75.65092773437496,-48.58632812500002],[-75.57148437499993,-48.095898437500026],[-75.39140625000002,-48.01972656249997],[-75.15849609374999,-48.62265624999996],[-75.51025390624997,-48.76347656250005]]],[[[-74.56728515625,-48.591992187500026],[-74.92304687499998,-48.62646484375003],[-75.21289062499997,-48.141699218750034],[-75.19829101562502,-47.974609375000014],[-74.895654296875,-47.839355468749986],[-74.56728515625,-48.591992187500026]]],[[[-75.11220703124997,-47.8376953125],[-75.26103515625002,-47.76386718749998],[-74.92646484374998,-47.72314453125003],[-75.11220703124997,-47.8376953125]]],[[[-74.31289062500002,-45.69150390625002],[-74.46552734374995,-45.757226562499994],[-74.68984375,-45.66259765625],[-74.310546875,-45.17265625000002],[-74.31289062500002,-45.69150390625002]]],[[[-73.63217773437498,-44.82148437499997],[-73.81845703125,-44.65214843750002],[-73.72392578124993,-44.544238281249974],[-73.63217773437498,-44.82148437499997]]],[[[-72.98613281249999,-44.780078124999974],[-73.22846679687498,-44.85996093749999],[-73.39707031249998,-44.77431640624995],[-73.44506835937497,-44.641015624999966],[-73.20771484374993,-44.33496093749997],[-72.7763671875,-44.50859374999999],[-72.98613281249999,-44.780078124999974]]],[[[-73.73535156249997,-44.39453125000003],[-74.00205078125003,-44.59091796874998],[-73.728173828125,-45.195898437500034],[-74.016259765625,-45.344921875000026],[-74.61777343749998,-44.64794921874996],[-74.50180664062498,-44.47353515624995],[-74.09721679687496,-44.38935546875004],[-73.99492187499999,-44.140234375],[-73.70322265624998,-44.27412109375001],[-73.73535156249997,-44.39453125000003]]],[[[-73.81064453125003,-43.827246093750006],[-73.95566406249998,-43.921972656250034],[-74.14296874999997,-43.872167968750006],[-73.81064453125003,-43.827246093750006]]],[[[-73.77338867187498,-43.3458984375],[-74.114404296875,-43.35791015624996],[-74.387353515625,-43.231640625],[-74.03666992187496,-41.79550781249998],[-73.52783203124997,-41.89628906249999],[-73.42290039062499,-42.192871093750014],[-73.47080078124998,-42.46630859375004],[-73.78925781249993,-42.58574218750003],[-73.43632812499996,-42.9365234375],[-73.74965820312494,-43.15908203124995],[-73.77338867187498,-43.3458984375]]],[[[-78.80415039062501,-33.646484374999986],[-78.98945312499993,-33.66171874999998],[-78.87744140625003,-33.57519531250003],[-78.80415039062501,-33.646484374999986]]],[[[-109.27998046874994,-27.14042968749996],[-109.434130859375,-27.171289062500023],[-109.39047851562499,-27.068359375000014],[-109.27998046874994,-27.14042968749996]]],[[[-67.19487304687493,-22.821679687500037],[-67.00878906249994,-23.00136718750005],[-67.35620117187503,-24.033789062499963],[-68.25029296875002,-24.391992187500023],[-68.56201171875,-24.74736328125003],[-68.38422851562495,-25.091894531249977],[-68.59208984375002,-25.420019531250034],[-68.41450195312498,-26.153710937500023],[-68.59160156249999,-26.47041015624997],[-68.31865234374999,-26.973242187500006],[-68.59208984375002,-27.140039062499966],[-68.84633789062494,-27.153710937499994],[-69.17441406249998,-27.924707031250037],[-69.65693359374995,-28.413574218749986],[-69.82788085937497,-29.10322265624997],[-70.02680664062501,-29.324023437500017],[-69.95996093749997,-30.078320312500026],[-69.84428710937493,-30.175],[-69.95634765624996,-30.35820312500003],[-70.15322265625,-30.360937499999963],[-70.30908203124994,-31.02265625000004],[-70.51958007812493,-31.1484375],[-70.585205078125,-31.569433593749963],[-70.25439453125,-31.957714843750026],[-70.36376953125,-32.08349609374997],[-70.02197265625,-32.88457031250002],[-70.08486328125002,-33.20175781249998],[-69.81962890624999,-33.28378906249999],[-69.85244140625,-34.224316406250026],[-70.05205078124999,-34.30078124999997],[-70.39316406250003,-35.146875],[-70.55517578125,-35.246875],[-70.41572265625001,-35.52304687500002],[-70.40478515625,-36.06171874999998],[-71.05551757812498,-36.52373046874996],[-71.19218750000002,-36.84365234375004],[-71.16757812499998,-37.76230468749996],[-70.858642578125,-38.60449218750003],[-71.40156249999995,-38.93505859374996],[-71.53945312499997,-39.60244140624995],[-71.71992187499995,-39.63525390624997],[-71.65976562499998,-40.02080078125],[-71.81831054687493,-40.17666015624995],[-71.70898437499997,-40.381738281249994],[-71.93212890624994,-40.69169921874999],[-71.91127929687497,-41.650390624999986],[-71.75,-42.04677734375001],[-72.10820312499993,-42.25185546874995],[-72.14643554687498,-42.990039062499974],[-71.750634765625,-43.237304687499986],[-71.90498046875001,-43.34755859374998],[-71.68007812500002,-43.92958984374998],[-71.82001953124993,-44.38310546875],[-71.21259765624998,-44.44121093750003],[-71.15971679687496,-44.56025390625004],[-71.26113281250002,-44.763085937499966],[-72.06372070312503,-44.771875],[-72.04169921874998,-44.90419921875004],[-71.5962890625,-44.97919921875004],[-71.34931640624995,-45.33193359374995],[-71.74619140624998,-45.57890625],[-71.63154296874998,-45.95371093749998],[-71.87568359374998,-46.160546875],[-71.69965820312501,-46.6513671875],[-71.94023437499999,-46.83125],[-71.90498046875001,-47.201660156250014],[-72.34594726562497,-47.49267578124997],[-72.517919921875,-47.87636718749998],[-72.32832031250001,-48.11005859374998],[-72.35473632812497,-48.36582031250005],[-72.582861328125,-48.47539062499999],[-72.65126953125,-48.84160156249998],[-73.03364257812501,-49.014355468750004],[-73.13525390625,-49.30068359374999],[-73.46157226562497,-49.31386718750001],[-73.55419921875,-49.463867187500014],[-73.50126953124996,-50.125292968750024],[-73.15292968749998,-50.73828125000003],[-72.50981445312496,-50.607519531250034],[-72.34023437499997,-50.68183593749999],[-72.40766601562501,-51.54082031250002],[-71.91865234374995,-51.98955078125004],[-69.96025390624993,-52.00820312500002],[-68.443359375,-52.35664062500004],[-69.24101562499996,-52.20546874999997],[-69.62031249999995,-52.46474609374995],[-70.79511718749995,-52.76875],[-70.99584960937497,-53.77929687499997],[-71.29775390625002,-53.88339843750004],[-72.1744140625,-53.632324218749964],[-72.41289062500002,-53.35019531250004],[-71.94169921874993,-53.23408203125001],[-71.89169921874998,-53.523535156250006],[-71.79145507812498,-53.48457031249997],[-71.74052734374999,-53.232617187499976],[-71.28896484375002,-53.03369140624995],[-71.22714843750003,-52.810644531249984],[-71.38774414062496,-52.76425781250004],[-72.27802734374998,-53.13232421874997],[-72.54892578125,-53.4607421875],[-73.05273437499997,-53.24345703125005],[-72.72768554687502,-52.7623046875],[-72.453466796875,-52.814453124999964],[-72.11757812499997,-52.65],[-71.51127929687502,-52.60537109375],[-72.22568359374998,-52.52099609374995],[-72.43769531250001,-52.62578124999998],[-72.71210937499995,-52.53554687499999],[-73.12246093749997,-53.073925781249976],[-73.64521484374998,-52.83701171875003],[-73.2408203125,-52.707128906250034],[-73.12392578125,-52.487988281249976],[-73.24414062499997,-52.62402343749998],[-73.58569335937503,-52.68574218750003],[-74.01445312499999,-52.63935546875],[-74.26494140624993,-52.1048828125],[-73.83447265625,-52.23398437500001],[-73.68432617187494,-52.07773437499998],[-73.26044921874993,-52.157812500000034],[-72.79501953124998,-51.94951171875005],[-72.57084960937496,-52.200097656249945],[-72.67705078125002,-52.38466796874998],[-72.52333984374997,-52.255468750000034],[-72.62460937499998,-51.94648437499997],[-72.48964843750002,-51.76367187500003],[-72.76123046875,-51.57324218749996],[-73.16875,-51.45390624999998],[-72.60004882812495,-51.79912109374997],[-73.51816406250003,-52.04101562499996],[-73.75263671874993,-51.795507812500034],[-74.19667968749997,-51.68056640624997],[-73.92978515624995,-51.61787109374999],[-73.93950195312499,-51.26630859375005],[-74.81474609374996,-51.06289062499999],[-75.09467773437495,-50.68125],[-74.68574218749995,-50.662011718749945],[-74.77587890625003,-50.46992187499998],[-74.64448242187498,-50.360937499999984],[-74.365576171875,-50.487890625],[-74.13940429687503,-50.81777343749997],[-73.80654296875,-50.93837890625003],[-73.654443359375,-50.49267578125],[-73.97802734375003,-50.827050781249994],[-74.18559570312493,-50.485351562500014],[-73.95034179687497,-50.510546875],[-74.62958984374998,-50.19404296875],[-74.333740234375,-49.97460937499997],[-73.95859374999998,-49.994726562499984],[-74.32392578124995,-49.783398437500004],[-74.29082031249996,-49.604101562499984],[-73.83637695312493,-49.609375],[-74.09443359374993,-49.42968749999998],[-73.93496093749994,-49.02089843750001],[-74.2212890625,-49.500585937500034],[-74.36655273437503,-49.40048828124998],[-74.34101562499998,-48.59570312499998],[-74.00908203124996,-48.475],[-74.47441406249999,-48.46396484374996],[-74.58466796874998,-47.999023437500014],[-73.39106445312498,-48.14589843750001],[-73.60991210937499,-47.993945312500045],[-73.71586914062499,-47.65546875000001],[-73.94086914062498,-47.92939453125004],[-74.22705078124994,-47.96894531250001],[-74.654931640625,-47.702246093750034],[-74.5337890625,-47.567675781249974],[-74.24296874999999,-47.67929687499998],[-74.13408203125002,-47.590820312499986],[-74.48266601562497,-47.43046875],[-74.15839843749998,-47.18251953125002],[-74.31357421874998,-46.78818359374998],[-74.45419921875003,-46.76679687499997],[-74.51225585937496,-46.88515625000002],[-75.00595703125,-46.74111328124998],[-74.98417968750002,-46.51210937499995],[-75.54033203124999,-46.69873046874996],[-75.43037109374995,-46.93457031249996],[-75.70639648437498,-46.70527343749997],[-74.924462890625,-46.159667968750014],[-75.06669921874993,-45.874902343749994],[-74.15786132812497,-45.7671875],[-74.122705078125,-45.49619140625002],[-73.95717773437494,-45.40439453124998],[-73.825,-45.446875],[-74.01992187500002,-46.055859375],[-74.39296875,-46.21738281250005],[-73.96757812500002,-46.15410156250003],[-73.87871093749993,-45.846875],[-73.73525390624994,-45.81171875],[-73.70815429687502,-46.070312500000014],[-73.94863281249997,-46.533105468749966],[-73.845361328125,-46.56601562500002],[-73.59184570312493,-45.89912109375004],[-73.73076171874999,-45.47998046875],[-73.26621093749995,-45.346191406250014],[-72.933837890625,-45.45234374999997],[-73.44497070312497,-45.23818359374995],[-73.36245117187502,-44.97822265625001],[-72.73896484375001,-44.73417968750003],[-72.680078125,-44.59394531249997],[-72.66386718749999,-44.43642578124995],[-73.26508789062498,-44.16865234375001],[-73.22446289062498,-43.89794921875003],[-73.06879882812495,-43.86201171874998],[-72.99658203125,-43.63154296875001],[-73.07597656250002,-43.323632812499994],[-72.75800781249998,-43.039453125],[-72.84804687500002,-42.66914062499997],[-72.77392578125003,-42.505175781250045],[-72.63183593750003,-42.509667968749994],[-72.77324218749996,-42.257714843749994],[-72.63105468749995,-42.199804687500006],[-72.412353515625,-42.388183593750014],[-72.49941406249997,-41.98085937499999],[-72.82407226562503,-41.90878906249996],[-72.36040039062499,-41.64912109375],[-72.31826171875,-41.49902343749997],[-72.54238281250002,-41.690625],[-72.95283203124995,-41.51474609374998],[-73.24179687499995,-41.78085937500002],[-73.62402343750003,-41.77363281249997],[-73.73515625000002,-41.74248046875002],[-73.62392578125,-41.581347656250045],[-73.81074218749995,-41.51748046875001],[-73.96586914062493,-41.118261718750034],[-73.67099609375,-39.96318359374999],[-73.41040039062503,-39.78916015624998],[-73.22646484375002,-39.22441406250003],[-73.52021484375001,-38.509375],[-73.46479492187498,-38.04033203125003],[-73.66181640624998,-37.69853515625003],[-73.66240234375002,-37.341015625000026],[-73.60166015624998,-37.18847656250003],[-73.21596679687502,-37.16689453124998],[-73.11806640624997,-36.68837890625002],[-72.58735351562493,-35.759667968749994],[-72.62392578125002,-35.5857421875],[-72.22377929687494,-35.096191406250014],[-72.00283203124997,-34.16533203125],[-71.66435546875002,-33.65263671875],[-71.74296875,-33.09511718750001],[-71.45224609374998,-32.65957031250001],[-71.70893554687495,-30.62802734375002],[-71.66948242187499,-30.33037109374996],[-71.40039062499997,-30.142968749999966],[-71.31572265624996,-29.649707031250017],[-71.51923828124993,-28.926464843750026],[-71.30673828124998,-28.672460937499963],[-71.08652343749998,-27.814453124999957],[-70.92578125,-27.588671874999974],[-70.64658203124998,-26.329394531250017],[-70.71372070312498,-25.78417968749997],[-70.44536132812502,-25.17265624999999],[-70.57412109374994,-24.644335937500003],[-70.39233398437494,-23.565917968749957],[-70.59335937499995,-23.255468750000034],[-70.56318359374995,-23.057031250000023],[-70.33168945312494,-22.848632812500014],[-70.08002929687501,-21.356835937500037],[-70.19702148437494,-20.725390625],[-70.15742187499995,-19.70585937500003],[-70.41826171874999,-18.345605468750023],[-69.92636718749998,-18.206054687500014],[-69.80258789062498,-17.990234375000014],[-69.85209960937493,-17.70380859375001],[-69.68476562499995,-17.649804687500023],[-69.58642578125,-17.57324218749997],[-69.51093749999998,-17.50605468749997],[-69.31337890624997,-17.943164062500017],[-69.28232421875003,-17.96484375],[-69.09394531249993,-18.05048828125004],[-69.14545898437495,-18.14404296875],[-69.09228515624994,-18.28242187500004],[-69.02680664062493,-18.65625],[-68.97885742187503,-18.81298828125003],[-68.96831054687502,-18.967968749999983],[-68.85795898437499,-19.09335937500005],[-68.62055664062495,-19.29667968749999],[-68.54785156249997,-19.341113281249974],[-68.49199218749996,-19.381933593750034],[-68.47016601562495,-19.409960937499974],[-68.46289062499997,-19.43281250000001],[-68.57529296874998,-19.56015625000002],[-68.69829101562499,-19.721093750000037],[-68.69619140625,-19.74072265625003],[-68.57827148437494,-19.856542968750006],[-68.559375,-19.902343750000014],[-68.56069335937502,-19.96708984374996],[-68.75932617187499,-20.115527343750003],[-68.74516601562493,-20.45859375],[-68.48432617187498,-20.628417968749957],[-68.55825195312497,-20.90195312499999],[-68.197021484375,-21.30029296874997],[-68.18642578124997,-21.618554687499966],[-67.88173828124997,-22.493359375000026],[-67.87944335937496,-22.822949218750026],[-67.57993164062495,-22.89169921874999],[-67.36225585937493,-22.85517578125001],[-67.19487304687493,-22.821679687500037]]]]},"properties":{"name":"Chile","childNum":26}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[110.88876953125006,19.99194335937497],[111.01367187500003,19.65546875000001],[110.64091796875002,19.291210937499955],[110.45126953125012,18.747949218750023],[110.06738281249997,18.447558593750045],[109.51933593750007,18.21826171875003],[108.7015625,18.535253906250034],[108.66552734375003,19.304101562499994],[109.27666015625002,19.761132812500023],[109.17744140625004,19.768457031250023],[109.26347656250007,19.882666015625006],[110.1715820312501,20.053710937500057],[110.58818359375002,19.976367187500017],[110.6517578125,20.137744140625017],[110.88876953125006,19.99194335937497]]],[[[110.38515625000005,21.093164062499966],[110.52158203125006,21.083105468750063],[110.50390625000003,20.96772460937501],[110.28095703125004,21.001171874999983],[110.38515625000005,21.093164062499966]]],[[[112.64375,21.63964843750003],[112.525,21.62304687500003],[112.64765625000004,21.710253906250017],[112.64375,21.63964843750003]]],[[[112.79023437500004,21.601855468750045],[112.78203125000007,21.772265625000045],[112.86259765625002,21.75263671875004],[112.79023437500004,21.601855468750045]]],[[[118.1830078125,24.496289062499983],[118.0905273437501,24.446142578125063],[118.10380859375002,24.552343750000034],[118.1830078125,24.496289062499983]]],[[[119.82089843750006,25.45698242187504],[119.70029296875012,25.432714843750063],[119.72255859375005,25.638818359375023],[119.83837890625003,25.591064453125],[119.82089843750006,25.45698242187504]]],[[[121.2513671875,28.086425781250057],[121.13154296875004,28.062597656250006],[121.20546875,28.204394531250017],[121.2513671875,28.086425781250057]]],[[[122.29589843750003,29.96342773437499],[122.02402343750012,30.01333007812505],[121.96943359375004,30.143115234375017],[122.28447265625007,30.068017578124994],[122.29589843750003,29.96342773437499]]],[[[121.86269531250005,31.492285156249977],[121.519921875,31.549609375000017],[121.2111328125001,31.80537109375001],[121.86269531250005,31.492285156249977]]],[[[130.52695312500012,42.535400390625],[130.24667968750012,42.744824218749955],[130.24033203125006,42.891796874999955],[129.89824218750002,42.998144531250034],[129.69785156250012,42.448144531249994],[129.3136718750001,42.41357421874997],[128.92343750000006,42.038232421874966],[128.04521484375007,41.9875],[128.28925781250004,41.60742187500006],[128.14941406249997,41.38774414062496],[127.17968750000003,41.531347656250006],[126.95478515625004,41.76948242187501],[126.74306640625,41.724853515625],[125.98906250000002,40.904638671875034],[124.8893554687501,40.459814453125006],[124.36210937500002,40.004052734374994],[124.10576171875002,39.84101562499998],[123.65087890625003,39.881591796875],[122.8400390625001,39.600830078125],[121.98232421875,39.05317382812498],[121.67724609374997,39.00341796875006],[121.64990234375003,38.865087890625034],[121.16357421874997,38.73164062500001],[121.10673828125002,38.920800781249994],[121.6798828125001,39.10869140625002],[121.62763671875004,39.22016601562498],[121.81845703125006,39.38652343750002],[121.27548828125006,39.38476562500003],[121.26748046875,39.544677734375],[121.51757812499997,39.638964843750045],[121.51738281250002,39.84482421875006],[121.8009765625001,39.950537109375006],[122.27500000000012,40.541845703125034],[121.83486328125005,40.97426757812502],[121.72929687500002,40.84614257812504],[121.1745117187501,40.901269531249994],[120.47910156250006,40.23095703125003],[119.39111328125003,39.75249023437499],[118.976953125,39.182568359374955],[118.29785156249997,39.067089843749955],[118.04091796875,39.22675781249998],[117.86572265625003,39.191259765625034],[117.61669921875003,38.852880859375034],[117.5578125000001,38.625146484374994],[117.76669921875012,38.311669921874994],[118.01494140625007,38.18339843749996],[118.94003906250006,38.04277343750002],[119.08916015625007,37.70073242187496],[118.95263671875003,37.33115234374998],[119.28740234375002,37.138281250000034],[119.76054687500007,37.15507812499999],[120.31152343750003,37.62270507812505],[120.2572265625,37.67900390624996],[120.75,37.83393554687501],[121.64023437500012,37.46035156250002],[122.05664062500003,37.528906250000034],[122.66699218750003,37.40283203125003],[122.4466796875,37.06811523437503],[122.51972656250004,36.94682617187502],[122.34091796875012,36.83222656250004],[121.93271484375006,36.95947265625003],[121.05380859375006,36.61137695312499],[120.81083984375007,36.6328125],[120.89580078125007,36.44414062500002],[120.71152343750006,36.41328125000004],[120.6378906250001,36.129931640625045],[120.39306640625003,36.053857421874994],[120.32773437500006,36.228173828124994],[120.18330078125004,36.20244140624999],[120.094140625,36.11889648437503],[120.28476562500006,35.98442382812499],[119.42968749999997,35.301416015624994],[119.16533203125002,34.84882812499998],[119.20097656250002,34.748437499999966],[120.26669921875006,34.274023437500034],[120.87109374999997,33.016503906249994],[120.8532226562501,32.66137695312503],[121.34169921875005,32.42504882812503],[121.40390625000006,32.20625],[121.85634765625,31.816455078125045],[121.86630859375006,31.703564453124955],[121.68085937500004,31.71215820312503],[121.351953125,31.85878906250005],[120.97353515625,31.86938476562497],[120.52011718750006,32.10585937500002],[120.03593750000002,31.93627929687503],[120.7155273437501,31.983740234375006],[120.7877929687501,31.81977539062501],[121.66064453124997,31.319726562499994],[121.87792968750003,30.91699218750003],[121.41894531249997,30.789794921875057],[120.8214843750001,30.354638671875023],[120.44980468750006,30.38784179687505],[120.19462890625002,30.241308593750034],[120.49453125,30.303076171875006],[120.63339843750006,30.133154296875034],[121.25800781250004,30.30410156250005],[121.67792968750004,29.979101562500006],[122.08291015625005,29.870361328125057],[121.50625,29.484570312499955],[121.94121093750002,29.605908203124983],[121.91777343750007,29.13500976562497],[121.71748046875004,29.25634765625],[121.48710937500007,29.193164062500017],[121.67968749999997,28.953125],[121.54003906250003,28.931884765625],[121.6625,28.851416015625034],[121.47519531250006,28.64140625],[121.60996093750006,28.29213867187505],[121.27226562500002,28.222119140624983],[121.14570312500004,28.32666015624997],[120.95859375000006,28.037011718750023],[120.74765625000006,28.00996093750001],[120.83300781249997,27.891455078125034],[120.58750000000012,27.580761718749983],[120.60751953125012,27.41240234374996],[120.2787109375,27.097070312500023],[120.08671875000007,26.67158203125004],[119.88222656250005,26.610449218750006],[119.82421874999997,26.84638671875001],[119.71044921874997,26.728662109375023],[119.58818359375002,26.784960937500045],[119.8810546875001,26.33417968750004],[119.46308593750004,26.05468750000003],[119.13945312500007,26.12177734375001],[119.33203124999997,25.94873046875003],[119.61875000000012,26.003564453124994],[119.53945312500005,25.59125976562504],[119.6224609375,25.391162109375017],[119.180078125,25.449804687499977],[119.285546875,25.232226562500074],[118.97753906249997,25.209277343750017],[118.90908203125005,24.92890625000001],[118.63691406250004,24.835546874999977],[118.65703125000002,24.621435546874977],[118.0871093750001,24.627001953125045],[118.00595703125006,24.48198242187499],[117.84267578125005,24.47431640625004],[118.0560546875,24.24609374999997],[117.62822265625002,23.836718750000074],[117.46640625000012,23.84057617187497],[117.36767578124997,23.58862304687497],[117.29082031250007,23.71435546875],[117.08251953124997,23.578759765625023],[116.91064453124997,23.646679687499983],[116.86093750000006,23.453076171874983],[116.62939453124997,23.353857421875034],[116.69882812500006,23.277783203124983],[116.53828125000004,23.17968749999997],[116.47070312499997,22.945898437500034],[116.25185546875005,22.981347656249994],[115.85214843750006,22.801562500000045],[115.64042968750002,22.853417968750023],[115.49833984375002,22.718847656250063],[115.19580078125003,22.81728515625005],[114.85380859375007,22.616796875000063],[114.65166015625002,22.755273437500023],[114.55419921874997,22.52890625],[114.26601562500005,22.540966796874983],[114.01542968750007,22.51191406250001],[113.61962890624997,22.861425781249977],[113.6205078125,23.12749023437499],[113.51972656250004,23.102099609375074],[113.33105468749997,22.912011718749966],[113.55302734375002,22.594042968750045],[113.54912109375002,22.225195312500034],[113.14902343750012,22.075],[113.08876953125,22.207958984374983],[112.95390625000007,21.907324218750034],[112.80859374999997,21.944628906250074],[112.58632812500005,21.77685546875],[112.35966796875007,21.97802734375003],[112.30498046875002,21.74169921875003],[111.94394531250012,21.84965820312499],[111.60273437500004,21.55908203125003],[111.01689453125007,21.51171874999997],[110.56718750000002,21.21406250000001],[110.41093750000007,21.33813476562497],[110.15400390625004,20.944628906250017],[110.36542968750004,20.837597656249955],[110.31308593750012,20.67167968749999],[110.51152343750007,20.51826171875001],[110.34472656249997,20.29482421875005],[109.88251953125004,20.364062500000045],[109.96835937500006,20.448144531250023],[109.66259765625003,20.91689453125005],[109.68125000000012,21.13164062499999],[109.93076171875012,21.480566406250034],[109.6869140625,21.52460937500004],[109.56640624999997,21.690576171874994],[109.54404296875012,21.537939453125006],[109.14863281250004,21.425537109375],[109.1017578125001,21.59047851562505],[108.77167968750004,21.63046875],[108.59375,21.901025390624994],[108.47988281250005,21.904638671875006],[108.50214843750004,21.633447265624994],[108.32480468750006,21.693505859374994],[108.24628906250004,21.55839843749999],[107.97265624999997,21.507958984375023],[107.75927734374997,21.655029296875057],[107.35117187500012,21.60888671874997],[106.97099609375002,21.923925781250034],[106.66357421875003,21.97890625000005],[106.55039062500006,22.501367187499994],[106.78027343749997,22.778906250000034],[106.54179687500007,22.908349609375023],[106.2790039062501,22.857470703125045],[106.14843749999997,22.970068359375006],[105.8429687500001,22.922802734374955],[105.27539062500003,23.34521484375003],[104.86474609375003,23.136376953125023],[104.68730468750002,22.822216796874983],[104.37177734375004,22.704052734374983],[104.14306640624997,22.800146484375006],[103.94150390625006,22.540087890625045],[103.62021484375006,22.782031250000045],[103.49296875000007,22.587988281250034],[103.32666015625003,22.769775390625057],[102.98193359374997,22.4482421875],[102.47089843750004,22.75092773437501],[102.40644531250004,22.70800781249997],[102.2370117187501,22.466015624999983],[102.1759765625001,22.414648437500006],[102.12744140624997,22.379199218750045],[101.84179687500003,22.38847656249999],[101.75996093750004,22.490332031250034],[101.73876953124997,22.495263671874994],[101.70751953125003,22.486572265625],[101.67148437500006,22.462304687500023],[101.64619140625004,22.405419921874966],[101.61992187500002,22.32744140624999],[101.56787109374997,22.27636718749997],[101.52451171875006,22.25366210937497],[101.7365234375001,21.826513671874977],[101.74394531250007,21.77797851562505],[101.74726562500004,21.605761718750045],[101.72294921875007,21.31494140625003],[101.80058593750007,21.212597656249983],[101.78349609375007,21.204150390625017],[101.728125,21.156396484374994],[101.7047851562501,21.15014648437503],[101.54238281250005,21.23427734375005],[101.2814453125001,21.184130859375045],[101.24785156250007,21.197314453125045],[101.22441406250002,21.223730468750034],[101.21181640625,21.278222656250023],[101.2199218750001,21.34243164062505],[101.17539062500006,21.407519531250074],[101.19667968750005,21.522070312500063],[101.1388671875001,21.567480468749977],[101.07978515625004,21.75585937499997],[100.60458984375012,21.471777343750006],[100.14765625000004,21.480517578125017],[99.94072265625007,21.75874023437504],[99.9176757812501,22.02802734375001],[99.19296875000006,22.12597656249997],[99.50712890625002,22.959130859374994],[99.41806640625006,23.069238281250023],[98.86376953125003,23.191259765625034],[98.8322265625001,23.624365234374977],[98.67675781250003,23.905078125000045],[98.83505859375006,24.121191406250034],[98.2125,24.110644531250017],[97.56455078125012,23.911035156250023],[97.7082031250001,24.228759765625],[97.53144531250004,24.49169921875003],[97.58330078125002,24.77480468750005],[97.73789062500006,24.869873046875057],[97.8195312500001,25.251855468749994],[98.01074218749997,25.292529296875017],[98.14287109375007,25.571093750000017],[98.33378906250007,25.586767578125006],[98.65625,25.86357421874999],[98.56406250000006,26.072412109374994],[98.68554687499997,26.189355468750023],[98.7384765625001,26.785742187500006],[98.65117187500007,27.572460937499983],[98.4525390625,27.6572265625],[98.29882812499997,27.550097656250045],[98.06162109375012,28.185888671874977],[97.59921875000006,28.51704101562504],[97.53789062500002,28.510205078124983],[97.43144531250002,28.353906250000023],[97.35644531249997,28.254492187500006],[97.32158929493812,28.217097107438057],[97.3027336276825,28.08710519614969],[97.34382779482424,27.982305259167095],[97.04929369561631,27.76000444316393],[96.96494598325154,27.699301564540924],[96.19423412199573,28.04146177926422],[95.73730002295082,28.117613231051525],[95.11298892962586,27.748338353239472],[94.07167814294401,27.588707868507477],[93.61247595136224,27.323800298697016],[93.30681393470121,26.786120363519142],[92.74319481218781,26.833531317384058],[92.04974640832253,26.874866505386724],[92.07342257335648,26.915311275859864],[92.06813426293174,26.9752569185349],[92.02985139563152,27.03987087331446],[91.99856592104459,27.079255842602592],[91.99177981607339,27.100605151743654],[92.0025114452454,27.147290053160265],[92.03101585307499,27.214271359861193],[92.08387457645458,27.29090135496722],[92.04520857607581,27.364442429033787],[91.99069061380867,27.450181624174498],[91.95099838734396,27.45828799115413],[91.85276579410389,27.438593286730903],[91.74366351462741,27.442853010105477],[91.59505352446729,27.557262710287986],[91.63193359375012,27.759960937499983],[91.64189453125002,27.923242187500023],[91.36259958579089,28.02438066407592],[91.27304687500012,28.078369140625],[91.22587890625007,28.071240234374983],[91.07773437500012,27.974462890624977],[91.02080078125002,27.970068359374977],[90.71572265625,28.071728515624983],[90.63007812500004,28.078564453124955],[90.47734375000007,28.07084960937499],[90.3527343750001,28.080224609375023],[90.33310546875012,28.093994140625],[90.36298828125004,28.21650390625001],[90.34824218750006,28.24394531249999],[90.22080078125006,28.27773437500005],[90.10449218749997,28.302050781250017],[89.98105468750006,28.311181640625023],[89.8978515625,28.29414062500001],[89.81689453125003,28.25629882812501],[89.74980468750002,28.18818359375001],[89.65273437500005,28.158300781250034],[89.53691406250007,28.10742187499997],[89.4806640625001,28.059960937499994],[88.89140625000002,27.316064453124966],[88.83251953125003,27.36284179687499],[88.7648437500001,27.429882812499983],[88.74902343749997,27.521875],[88.82988281250002,27.76738281249999],[88.84882812500004,27.86865234375],[88.80371093750003,28.006933593750034],[88.57792968750002,28.093359375000034],[88.42597656250004,28.01166992187501],[88.27519531250007,27.968847656250006],[88.14111328125003,27.94892578125001],[88.10898437500006,27.933007812499966],[88.10976562500005,27.870605468750057],[87.8607421875,27.886083984375006],[87.62255859374997,27.81518554687503],[87.29072265625004,27.821923828124994],[87.14140625000002,27.838330078124955],[87.02011718750006,27.928662109374983],[86.9337890625001,27.96845703125001],[86.84238281250012,27.99916992187505],[86.750390625,28.022070312500006],[86.71962890625005,28.070654296875034],[86.69052734375006,28.09492187500001],[86.61445312500004,28.10302734374997],[86.55449218750007,28.08520507812497],[86.51689453125007,27.963525390624966],[86.40869140625003,27.928662109374983],[86.32861328124997,27.95952148437496],[86.2179687500001,28.022070312500006],[86.13701171875002,28.114355468750063],[86.07871093750006,28.08359375],[86.0641601562501,27.934716796874966],[85.99453125000005,27.910400390625],[85.95410156249997,27.92822265624997],[85.92167968750002,27.989697265624983],[85.84023437500005,28.135351562499977],[85.75947265625004,28.220654296874955],[85.67832031250012,28.277441406249977],[85.41064453125003,28.27602539062505],[85.21210937500004,28.292626953124966],[85.1224609375,28.315966796875017],[85.08857421875004,28.37226562500001],[85.121484375,28.484277343750023],[85.16015624999997,28.571875],[85.15908203125,28.592236328124983],[85.1263671875,28.602636718750063],[85.06914062500007,28.60966796874999],[84.85507812500006,28.553613281250023],[84.796875,28.560205078125023],[84.2287109375001,28.911767578124966],[84.17558593750002,29.036376953125057],[84.12783203125005,29.15629882812496],[84.10136718750002,29.21997070312497],[84.02197265624997,29.25385742187504],[83.93593750000005,29.27949218750001],[83.58349609375003,29.18359375000003],[83.15546875000004,29.612646484375034],[82.22070312500003,30.063867187500023],[82.04335937500005,30.326757812500034],[81.8548828125,30.362402343750006],[81.64189453125007,30.3875],[81.4171875000001,30.33759765625001],[81.25507812500004,30.09331054687499],[81.17714843750005,30.039892578125034],[80.98544921875006,30.23710937499999],[80.87353515625003,30.290576171875045],[80.19121093750002,30.56840820312496],[80.20712890625006,30.683740234375023],[79.92451171875004,30.888769531250034],[79.66425781250004,30.96523437499999],[79.38847656250007,31.064208984375],[79.10712890625004,31.402636718750017],[78.74355468750005,31.323779296875017],[78.7550781250001,31.55029296875],[78.69345703125006,31.740380859374994],[78.72558593750003,31.983789062500023],[78.49589843750002,32.21577148437504],[78.4552734375001,32.30034179687502],[78.41748046874997,32.466699218749994],[78.38964843749997,32.51987304687498],[78.73671875,32.55839843750002],[78.75351562500012,32.49926757812506],[78.91894531249997,32.35820312500002],[79.16992187500003,32.497216796874994],[79.14550781250003,33.00146484375006],[79.10283203125007,33.05253906249996],[79.13515625000005,33.17192382812496],[79.1125,33.22626953125001],[78.94843750000004,33.346533203125006],[78.86503906250002,33.43110351562501],[78.78378906250006,33.80878906250004],[78.72666015625006,34.013378906249955],[78.97060546875,34.22822265625004],[78.93642578125,34.35195312500002],[78.86484375000006,34.39033203125001],[78.32695312500007,34.60639648437498],[78.15849609375002,34.94648437499998],[78.07578125000006,35.13491210937502],[78.0426757812501,35.47978515625002],[77.79941406250006,35.49589843750002],[77.44648437500004,35.47558593750006],[77.29482421875005,35.508154296875034],[77.09003906250004,35.55205078124999],[76.87890625000003,35.61328125000003],[76.76689453125002,35.661718750000034],[76.72753906250003,35.67866210937504],[76.63183593749997,35.729394531249966],[76.56347656249997,35.77299804687499],[76.55126953124997,35.887060546875034],[76.50205078125006,35.87822265625002],[76.38574218750003,35.837158203125],[76.25166015625004,35.8109375],[76.17783203125012,35.810546875],[76.14785156250005,35.82900390625002],[76.07089843750006,35.983007812500034],[75.91230468750004,36.048974609374994],[75.97441406250007,36.38242187500006],[75.9518554687501,36.458105468750034],[75.9330078125,36.52158203124998],[75.840234375,36.64970703124999],[75.7721679687501,36.694921875000034],[75.6671875000001,36.741992187500045],[75.57373046874997,36.75932617187502],[75.46025390625002,36.725048828124955],[75.42421875000005,36.73823242187498],[75.37685546875,36.88369140625005],[75.34667968749997,36.913476562499966],[75.05390625000004,36.98715820312498],[74.94912109375,36.96835937500006],[74.88925781250006,36.95244140625002],[74.69218750000007,37.035742187500006],[74.60058593749997,37.03666992187502],[74.54140625,37.02216796875001],[74.52646484375006,37.03066406250005],[74.49794921875,37.057226562500034],[74.37617187500004,37.13735351562502],[74.37216796875006,37.15771484375],[74.558984375,37.23662109374999],[74.66894531250003,37.266699218750006],[74.72666015625006,37.29072265625001],[74.7389648437501,37.28564453125003],[74.76738281250002,37.249169921874966],[74.840234375,37.22504882812504],[74.89130859375004,37.231640624999955],[75.11875,37.38569335937498],[74.8942382812501,37.60141601562498],[74.81230468750002,38.46030273437498],[74.27744140625,38.659765625000034],[74.02558593750004,38.53984375000002],[73.80166015625,38.60688476562501],[73.69609375000007,38.85429687499996],[73.8052734375,38.968652343749994],[73.60732421875,39.229199218749955],[73.63632812500006,39.396679687499955],[73.63164062500007,39.44887695312502],[73.82294921875004,39.48896484375004],[73.90712890625,39.578515624999966],[73.9146484375,39.60649414062499],[73.88251953125004,39.71455078124998],[73.83974609375005,39.76284179687505],[73.8353515625,39.800146484375006],[73.85625,39.828662109375045],[73.88457031250002,39.87792968750006],[73.93876953125002,39.97880859374999],[73.99160156250005,40.04311523437502],[74.83046875,40.32851562499999],[74.80126953124997,40.428515625000045],[74.83515625000004,40.482617187499955],[74.865625,40.493505859375034],[75.0044921875,40.44951171874996],[75.11132812499997,40.4541015625],[75.24101562500002,40.48027343750002],[75.52080078125002,40.627539062500006],[75.55556640625,40.625195312499955],[75.6771484375,40.305810546874994],[75.87197265625,40.30322265625],[76.25830078124997,40.43076171875006],[76.3185546875001,40.352246093749955],[76.39638671875005,40.389794921874966],[76.4801757812501,40.44951171874996],[76.57792968750002,40.577880859375],[76.62216796875006,40.66235351562497],[76.6398437500001,40.74223632812499],[76.66113281249997,40.77963867187498],[76.70839843750005,40.818115234375],[76.82402343750002,40.982324218749966],[76.90771484374997,41.02416992187497],[76.98662109375002,41.039160156250006],[77.58173828125004,40.99277343750006],[77.71933593750012,41.024316406249994],[77.81523437500002,41.05561523437498],[77.9564453125,41.05068359375005],[78.1234375,41.07563476562498],[78.34628906250012,41.28144531249998],[78.36240234375012,41.37163085937496],[78.44287109374997,41.41752929687499],[78.742578125,41.56005859375],[79.29355468750006,41.78281249999998],[79.76611328124997,41.89887695312501],[79.84042968750012,41.99575195312502],[79.90966796875003,42.014990234375034],[80.21621093750005,42.03242187500004],[80.23515625000007,42.04345703124997],[80.24619140625012,42.05981445312503],[80.209375,42.190039062500006],[80.20224609375012,42.73447265624998],[80.53896484375005,42.873486328124955],[80.39023437500006,43.043115234374966],[80.78574218750006,43.16157226562504],[80.35527343750002,44.09726562500006],[80.48154296875006,44.71464843749999],[79.871875,44.88378906249997],[80.05917968750012,45.006445312500006],[81.69199218750012,45.34936523437497],[81.94492187500006,45.16083984375001],[82.26660156249997,45.21909179687498],[82.52148437500003,45.12548828125],[82.61162109375007,45.424267578124955],[82.31523437500002,45.59492187499998],[83.02949218750004,47.18593750000002],[84.016015625,46.97050781250002],[84.66660156250006,46.97236328125004],[84.78613281249997,46.83071289062505],[85.484765625,47.06352539062496],[85.65664062500005,47.254638671875],[85.52597656250006,47.915625],[85.7494140625,48.38505859374999],[86.54941406250012,48.52861328125002],[86.8083007812501,49.04970703125002],[87.32285156250012,49.085791015625006],[87.41669921875004,49.07661132812501],[87.5158203125001,49.122412109375006],[87.7625,49.16582031249996],[87.81425781250002,49.162304687499955],[87.87216796875012,49.000146484374966],[87.74316406250003,48.88164062499999],[87.83183593750007,48.79165039062505],[88.02792968750006,48.735595703125],[88.06005859375003,48.707177734374966],[87.9796875000001,48.55512695312498],[88.30996093750005,48.47207031250002],[88.41396484375,48.403417968750006],[88.51708984374997,48.384472656249955],[88.56679687500005,48.31743164062496],[88.57597656250007,48.220166015624955],[88.68183593750004,48.170556640624994],[88.83828125000005,48.101708984374994],[88.91777343750007,48.089013671874966],[89.04765625000007,48.002539062500034],[89.47919921875004,48.02905273437503],[89.5609375,48.00395507812496],[89.778125,47.82700195312498],[89.83134765625002,47.82329101562502],[89.91044921875007,47.844335937500034],[89.95869140625004,47.88632812499998],[90.02792968750012,47.877685546875],[90.1032226562501,47.74541015624996],[90.19101562500012,47.70209960937501],[90.31328125000007,47.67617187499999],[90.33066406250006,47.655175781249966],[90.42519531250005,47.50410156250001],[90.49619140625012,47.28515625],[90.64335937500007,47.10029296874998],[90.71552734375004,47.00385742187498],[90.7990234375001,46.98515624999999],[90.86992187500002,46.95449218750005],[90.91054687500005,46.88325195312501],[90.9857421875,46.7490234375],[90.9115234375,46.270654296874994],[90.94755859375002,46.17729492187499],[90.99677734375004,46.10498046875],[91.00175781250007,46.03579101562502],[90.6618164062501,45.525244140625006],[90.87724609375002,45.19609375000002],[91.05,45.217431640624994],[91.584375,45.07651367187498],[92.42382812499997,45.008935546874994],[92.57890625000002,45.01098632812506],[92.78789062500007,45.035742187500034],[93.51621093750012,44.944482421874994],[94.71201171875012,44.35083007812503],[95.35029296875004,44.27807617187503],[95.32558593750005,44.03935546874999],[95.52558593750004,43.953955078125006],[95.85957031250004,43.27597656249998],[96.38544921875004,42.72036132812502],[97.20566406250012,42.78979492187506],[99.46787109375012,42.568212890625034],[99.98378906250005,42.67734375000006],[100.08632812500005,42.67075195312506],[100.51904296875003,42.61679687499998],[101.09199218750004,42.55131835937496],[101.49531250000004,42.53876953124998],[101.57910156249997,42.52353515624998],[101.65996093750002,42.50004882812499],[101.97294921875002,42.21586914062502],[102.15664062500005,42.158105468749966],[102.57519531249997,42.09208984375002],[103.07285156250006,42.00595703125006],[103.7111328125001,41.75131835937506],[103.99726562500004,41.796972656250034],[104.30517578124997,41.84614257812501],[104.49824218750004,41.87700195312499],[104.49824218750004,41.65869140625],[104.86035156250003,41.64375],[104.98203125000012,41.59550781250002],[105.05058593750002,41.61591796875001],[105.1154296875001,41.66328124999998],[105.19707031250002,41.738037109375],[105.31435546875005,41.77089843750005],[105.86757812500005,41.993994140625034],[106.77001953125003,42.28872070312502],[108.17119140625002,42.44731445312502],[108.68730468750002,42.416113281250034],[109.33984374999997,42.43837890625005],[109.44316406250002,42.455957031249994],[110.40039062499997,42.77368164062497],[111.00722656250005,43.34140624999998],[111.878125,43.68017578125],[111.93173828125012,43.81494140625],[111.40224609375005,44.367285156250006],[111.89804687500006,45.064062500000034],[112.03261718750005,45.08164062500006],[112.11289062500006,45.06293945312498],[112.41132812500004,45.05820312499998],[112.49931640625002,45.01093750000004],[112.59677734375006,44.917675781249955],[112.7067382812501,44.883447265624994],[113.04941406250006,44.81035156250002],[113.3009765625001,44.79165039062502],[113.50791015625006,44.76235351562502],[113.58701171875006,44.745703125],[113.65263671875002,44.76347656249999],[113.87705078125012,44.89619140625001],[114.03027343749997,44.942578124999955],[114.08027343750004,44.97114257812501],[114.41914062500004,45.20258789062501],[114.56015625000012,45.38999023437498],[114.73876953124997,45.41962890624998],[114.91923828125007,45.378271484375006],[115.16259765624997,45.390234375000034],[115.6810546875,45.45825195312503],[116.19765625,45.739355468750006],[116.240625,45.795996093750006],[116.22910156250012,45.84575195312502],[116.21298828125012,45.88691406249998],[116.56259765625012,46.28979492187497],[116.85908203125004,46.387939453125],[117.3333984375,46.36201171875004],[117.35693359375003,46.391308593749955],[117.35634765625,46.436669921874966],[117.39218750000012,46.53759765625003],[117.40556640625007,46.57089843750006],[117.43808593750012,46.58623046874999],[117.546875,46.58828125000005],[117.74121093749997,46.51816406250006],[118.07128906249997,46.666601562500006],[118.15683593750006,46.678564453125034],[118.30869140625012,46.71704101562497],[118.40439453125006,46.70317382812499],[118.58046875,46.69189453125],[118.64873046875002,46.70166015625006],[118.72294921875007,46.69189453125],[118.8439453125001,46.76020507812498],[118.95712890625006,46.73486328124997],[119.16210937499997,46.638671875],[119.33183593750002,46.61381835937499],[119.47402343750005,46.626660156249955],[119.62021484375006,46.60395507812504],[119.70664062500006,46.60600585937502],[119.74746093750005,46.62719726562497],[119.86718750000003,46.67216796874999],[119.89785156250005,46.857812499999966],[119.71113281250004,47.15],[119.08193359375,47.654150390625034],[119.01757812500003,47.68535156249999],[118.88027343750005,47.72509765625],[118.75996093750004,47.75761718749996],[118.69052734375012,47.822265625],[118.56777343750005,47.94326171875005],[118.49843750000005,47.98398437499998],[117.76835937500002,47.98789062499998],[117.3507812500001,47.65219726562498],[117.28593750000002,47.666357421875034],[117.06972656250005,47.80639648437506],[116.95166015624997,47.836572265624966],[116.90117187500007,47.85307617187496],[116.76054687500002,47.869775390624994],[116.65195312500012,47.86450195312497],[116.51347656250007,47.839550781249955],[116.37822265625002,47.84404296874999],[116.31718750000002,47.85986328125],[116.2311523437501,47.85820312500002],[116.07480468750012,47.78955078125],[115.99384765625004,47.71132812500005],[115.89824218750002,47.68691406250005],[115.6164062500001,47.874804687500045],[115.52509765625004,48.13085937499997],[115.63945312500007,48.18623046874998],[115.785546875,48.24824218750001],[115.7965820312501,48.346337890624994],[115.7916992187501,48.455712890624994],[115.8205078125001,48.57724609375006],[116.6833007812501,49.82377929687499],[117.8734375,49.51347656250002],[118.4515625,49.84448242187503],[119.25986328125012,50.06640625000003],[119.34628906250012,50.278955078124994],[119.16367187500006,50.40600585937503],[120.06689453125003,51.60068359375006],[120.74980468750007,52.096533203125006],[120.65615234375,52.56665039062503],[120.0675781250001,52.632910156250034],[120.09453125000007,52.787207031250034],[120.98544921875012,53.28457031250002],[123.6078125,53.546533203124994],[124.81230468750002,53.133837890625045],[125.075,53.20366210937496],[125.64902343750012,53.042285156250045],[126.34169921875,52.36201171875001],[126.92480468749997,51.10014648437496],[127.30703125000005,50.70795898437501],[127.33720703125007,50.35014648437502],[127.590234375,50.20898437500003],[127.55078124999997,49.801806640625045],[127.99960937500006,49.56860351562506],[128.70400390625,49.60014648437499],[129.0651367187501,49.374658203124966],[129.49814453125012,49.38881835937502],[130.1959960937501,48.89165039062499],[130.553125,48.861181640625006],[130.5521484375,48.602490234374955],[130.80429687500012,48.34150390624998],[130.7326171875001,48.01923828124998],[130.96191406249997,47.70932617187498],[132.47626953125004,47.714990234374994],[132.7072265625001,47.94726562500006],[133.14404296875003,48.10566406249998],[133.46835937500006,48.09716796875003],[134.29335937500005,48.37343750000002],[134.66523437500004,48.25390625],[134.56601562500006,48.02250976562502],[134.75234375,47.71542968749998],[134.1676757812501,47.30219726562501],[133.86132812500003,46.24775390625004],[133.43642578125,45.60468750000004],[133.18603515625003,45.49482421875004],[133.1134765625001,45.130712890625006],[132.93603515624997,45.029931640624994],[131.85185546875002,45.32685546875001],[131.44687500000012,44.984033203124966],[130.9816406250001,44.844335937500034],[131.2552734375,44.07158203124999],[131.25732421875003,43.378076171874994],[131.06855468750004,42.90224609375005],[130.42480468749997,42.72705078124997],[130.52695312500012,42.535400390625]]],[[[113.9977539062501,22.210498046875045],[113.83886718749997,22.24169921875003],[114.04394531250003,22.33339843750005],[113.9977539062501,22.210498046875045]]],[[[114.01542968750007,22.51191406250001],[114.26601562500005,22.540966796874983],[114.26796875,22.295556640624966],[113.93730468750002,22.364990234375],[114.01542968750007,22.51191406250001]]],[],[[[118.4074218750001,24.522119140624994],[118.43271484375006,24.414355468750074],[118.29511718750004,24.436328125000017],[118.4074218750001,24.522119140624994]]],[[[121.00878906249997,22.62036132812497],[120.83984375000003,21.925],[120.2328125,22.71791992187505],[120.0724609375001,23.149755859375006],[120.13212890625007,23.652929687500034],[121.040625,25.032812500000034],[121.59365234375,25.275341796874983],[121.92900390625002,24.973730468749977],[121.39746093750003,23.172509765625023],[121.00878906249997,22.62036132812497]]]]},"properties":{"name":"China","childNum":15}},{"geometry":{"type":"Polygon","coordinates":[[[-5.262304687499977,10.319677734374991],[-4.72177734374992,9.756542968750026],[-4.625830078125006,9.713574218749969],[-4.526611328124943,9.723486328125034],[-4.406201171874926,9.647998046875031],[-4.332226562499955,9.645703125],[-4.18115234375,9.78173828125],[-3.790625,9.917187499999983],[-3.581152343749977,9.924316406250014],[-3.289697265625023,9.882226562500051],[-3.223535156249937,9.895458984374997],[-3.160693359374932,9.849169921874974],[-3.095800781249949,9.752099609375009],[-3.042626953124937,9.72089843750004],[-2.988281249999972,9.687353515624963],[-2.900878906249943,9.534619140625026],[-2.875146484374937,9.500927734374997],[-2.816748046874949,9.425830078124974],[-2.766601562499943,9.424707031250009],[-2.7171875,9.457128906250048],[-2.695849609374989,9.481347656250009],[-2.686132812499977,9.43173828125002],[-2.705761718749983,9.351367187499989],[-2.74692382812492,9.04511718750004],[-2.689892578124955,9.02509765625004],[-2.649218750000017,8.956591796875031],[-2.600390625000017,8.800439453125023],[-2.505859375000028,8.208740234375],[-2.538281249999955,8.171630859374986],[-2.61171875,8.147558593749963],[-2.619970703125006,8.12109375],[-2.600976562499937,8.082226562499983],[-2.613378906249977,8.046679687500017],[-2.668847656249994,8.022216796875014],[-2.789746093749955,7.931933593750003],[-2.959082031249977,7.454541015624997],[-3.227148437499977,6.749121093749991],[-2.998291015624972,5.711328125000051],[-2.793652343749955,5.600097656250028],[-2.754980468749977,5.432519531249994],[-2.815673828125,5.153027343749997],[-3.168701171874972,5.203027343749966],[-3.199951171874943,5.3544921875],[-3.347558593749994,5.13066406249996],[-4.120166015625017,5.309716796875023],[-4.60888671875,5.235888671875003],[-4.037207031249977,5.23012695312498],[-4.899707031249932,5.138330078125023],[-5.282373046874994,5.210253906250017],[-5.36752929687492,5.15078125],[-5.061816406249989,5.13066406249996],[-5.913769531249926,5.0109375],[-7.544970703124989,4.351318359375],[-7.574658203124983,4.572314453124989],[-7.585058593749977,4.916748046875],[-7.39990234375,5.550585937499989],[-7.454394531249989,5.841308593749972],[-7.636132812499994,5.90771484375],[-7.730371093749994,5.919042968749991],[-7.800927734374994,6.038916015624991],[-7.833251953125,6.076367187499983],[-7.855517578125017,6.150146484375],[-7.888623046875011,6.234863281250028],[-7.981591796874937,6.2861328125],[-8.287109375,6.31904296875004],[-8.587890625,6.490527343749989],[-8.324511718749989,6.920019531249991],[-8.408740234374989,7.411816406249997],[-8.429980468749989,7.601855468749989],[-8.351757812499926,7.590576171875],[-8.231884765624955,7.556738281250034],[-8.205957031249994,7.590234375000023],[-8.115429687499926,7.760742187500028],[-8.126855468749937,7.867724609374974],[-8.00986328124992,8.078515625000023],[-8.048583984375,8.169726562500045],[-8.140625,8.181445312500031],[-8.217138671874949,8.219677734375011],[-8.256103515625,8.253710937500017],[-8.244140624999943,8.407910156249983],[-8.236962890624994,8.455664062500034],[-7.953125,8.477734375],[-7.823583984374977,8.467675781249994],[-7.738964843749983,8.375244140624986],[-7.696093749999932,8.375585937499977],[-7.71958007812492,8.643017578125011],[-7.950976562499989,8.786816406249997],[-7.938183593749983,8.97978515624996],[-7.902099609375,9.017089843750014],[-7.777978515624937,9.080859375000031],[-7.799804687499943,9.115039062499989],[-7.839404296875017,9.151611328124972],[-7.918066406249949,9.188525390625031],[-7.896191406249955,9.415869140624991],[-8.136962890624972,9.49570312499999],[-8.155175781249937,9.973193359375017],[-7.990625,10.1625],[-7.661132812500028,10.427441406250011],[-7.385058593749989,10.340136718749989],[-7.01708984375,10.143261718750026],[-6.950341796874994,10.342333984374989],[-6.693261718750023,10.34946289062502],[-6.669335937499937,10.39218750000002],[-6.69199218749992,10.512011718750017],[-6.686132812499977,10.578027343750051],[-6.676367187499949,10.633789062500043],[-6.654150390624949,10.65644531250004],[-6.482617187499983,10.561230468749997],[-6.250244140625,10.717919921875037],[-6.190673828124943,10.400292968749994],[-6.192626953124972,10.369433593750003],[-6.241308593749949,10.279199218750009],[-6.238378906249977,10.26162109374998],[-6.117187499999972,10.201904296874986],[-6.034570312499937,10.194824218750057],[-5.907568359375006,10.307226562500034],[-5.896191406249983,10.354736328125028],[-5.843847656249977,10.389550781250023],[-5.694287109374983,10.433203125000034],[-5.556591796874983,10.439941406249986],[-5.382275390625011,10.314013671875003],[-5.262304687499977,10.319677734374991]]]},"properties":{"name":"C\xF4te d'Ivoire","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[15.480078125,7.523779296874991],[15.206738281250011,7.206152343749991],[14.7392578125,6.27978515625],[14.43115234375,6.038720703124994],[14.616894531250011,5.865136718749994],[14.56298828125,5.279931640624994],[14.73125,4.602392578124991],[15.063574218750006,4.284863281249997],[15.128710937500017,3.826904296875],[16.0634765625,2.90859375],[16.183398437500017,2.270068359374989],[16.059375,1.676220703124997],[15.741601562500023,1.914990234374997],[14.902441406250006,2.012304687499991],[14.578906250000017,2.199121093749994],[13.293554687500006,2.161572265624997],[13.2203125,2.256445312499991],[11.558984375000023,2.302197265624997],[11.348437500000017,2.299707031249994],[11.328710937500006,2.167431640624997],[11.096582031250023,2.16748046875],[10.790917968750023,2.16757812499999],[9.979882812500023,2.167773437499989],[9.8701171875,2.21328125],[9.8369140625,2.242382812499997],[9.830371093750017,2.275488281249991],[9.826171875,2.297802734374997],[9.80078125,2.304443359375],[9.82177734375,2.539257812499997],[9.948437500000011,3.079052734374997],[9.672070312500011,3.53759765625],[9.765722656250006,3.623828124999989],[9.642382812500017,3.611767578124997],[9.55615234375,3.798046875],[9.739648437500023,3.852929687499994],[9.639941406250017,3.96533203125],[9.688867187500023,4.056396484375],[9.483691406250017,4.066113281249997],[9.42529296875,3.922314453124997],[9.000097656250006,4.091601562499989],[8.918261718750017,4.553759765624989],[8.660351562500011,4.670996093749991],[8.65625,4.516357421875],[8.53955078125,4.571875],[8.715625,5.046875],[8.997167968750006,5.917724609375],[9.490234375,6.418652343749997],[9.779882812500006,6.76015625],[9.820703125000023,6.783935546875],[9.874218750000011,6.803271484374989],[10.038867187500017,6.92138671875],[10.1435546875,6.996435546874991],[10.167773437500017,6.959179687499997],[10.185546875,6.912792968749997],[10.205468750000023,6.8916015625],[10.293066406250006,6.876757812499989],[10.413183593750006,6.877734374999989],[10.60625,7.063085937499991],[10.954199218750006,6.7765625],[11.032519531250017,6.697900390624994],[11.1064453125,6.457714843749997],[11.1533203125,6.437939453124997],[11.2373046875,6.450537109374991],[11.401757812500023,6.533935546875],[11.551660156250023,6.697265625],[11.580078125,6.888867187499997],[11.657519531250017,6.9515625],[11.861425781250006,7.11640625],[11.767382812500017,7.272265624999989],[11.809179687500006,7.345068359374991],[12.016015625000023,7.589746093749994],[12.2333984375,8.282324218749991],[12.403515625000011,8.595556640624991],[12.582714843750011,8.624121093749991],[12.651562500000011,8.667773437499989],[12.7822265625,8.81787109375],[12.806542968750023,8.886621093749994],[12.875683593750011,9.303515624999989],[12.929492187500017,9.42626953125],[13.19873046875,9.563769531249989],[13.269921875000023,10.036181640624989],[13.41455078125,10.171435546874989],[13.535351562500011,10.60507812499999],[13.699902343750011,10.873144531249991],[13.89208984375,11.140087890624997],[13.9814453125,11.211865234374997],[14.056738281250006,11.245019531249994],[14.143261718750011,11.24853515625],[14.202343750000011,11.268164062499991],[14.559765625000011,11.492285156249991],[14.619726562500006,12.150976562499991],[14.518945312500023,12.298242187499994],[14.272851562500023,12.356494140624989],[14.184863281250017,12.447216796874997],[14.06396484375,13.07851562499999],[14.244824218750011,13.07734375],[14.461718750000017,13.021777343749989],[14.847070312500023,12.502099609374994],[15.08125,11.845507812499989],[15.029882812500006,11.11367187499999],[15.132226562500023,10.648486328124989],[15.276074218750011,10.357373046874997],[15.654882812500006,10.0078125],[14.243261718750006,9.979736328125],[13.977246093750011,9.691552734374994],[14.332324218750017,9.20351562499999],[15.1162109375,8.557324218749997],[15.5498046875,7.787890624999989],[15.480078125,7.523779296874991]]]},"properties":{"name":"Cameroon","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[27.4033203125,5.109179687499989],[27.7880859375,4.644677734374994],[28.19208984375001,4.350244140624994],[28.427539062500017,4.324169921874997],[28.72705078125,4.504980468749991],[29.224902343750017,4.391894531249989],[29.469628906250023,4.61181640625],[29.676855468750006,4.5869140625],[30.194921875,3.98193359375],[30.50830078125,3.835693359375],[30.586718750000017,3.62421875],[30.757226562500023,3.62421875],[30.83857421875001,3.49072265625],[30.90644531250001,3.408935546875],[30.754003906250006,3.041796874999989],[30.8466796875,2.847021484374991],[30.728613281250006,2.455371093749989],[31.176367187500006,2.270068359374989],[31.252734375000017,2.044580078124994],[29.94287109375,0.819238281249994],[29.934472656250023,0.4990234375],[29.717675781250023,0.098339843749997],[29.576953125000017,-1.387890625000011],[29.196582031250017,-1.719921875000011],[29.13154296875001,-2.195117187500003],[28.876367187500023,-2.400292968750009],[28.893945312500023,-2.635058593750003],[29.01435546875001,-2.72021484375],[29.224414062500017,-3.053515625],[29.211816406250023,-3.833789062500003],[29.403222656250023,-4.449316406250006],[29.404199218750023,-4.496679687500006],[29.32568359375,-4.835644531250011],[29.32343750000001,-4.898828125],[29.3427734375,-4.983105468750011],[29.542382812500023,-5.499804687500003],[29.594140625000023,-5.65078125],[29.60703125,-5.72265625],[29.59638671875001,-5.775976562500006],[29.490820312500006,-5.965429687500006],[29.480078125,-6.025],[29.50625,-6.172070312500011],[29.540820312500017,-6.313867187500009],[29.590625,-6.394433593750009],[29.70966796875001,-6.616894531250011],[29.798144531250017,-6.69189453125],[29.961816406250023,-6.803125],[30.10625,-6.9150390625],[30.212695312500017,-7.037890625],[30.31318359375001,-7.203710937500006],[30.40673828125,-7.460644531250011],[30.75117187500001,-8.193652343750003],[28.89814453125001,-8.485449218750006],[28.869531250000023,-8.785839843750011],[28.400683593750017,-9.224804687500011],[28.60419921875001,-9.678808593750006],[28.6455078125,-10.550195312500009],[28.383398437500006,-11.566699218750003],[28.482519531250006,-11.812109375],[29.064355468750023,-12.348828125000011],[29.48554687500001,-12.41845703125],[29.508203125000023,-12.228222656250011],[29.79511718750001,-12.155468750000011],[29.775195312500017,-13.438085937500006],[29.55419921875,-13.248925781250009],[29.20185546875001,-13.398339843750009],[29.014257812500006,-13.368847656250011],[28.730078125,-12.925488281250011],[28.550878906250006,-12.836132812500011],[28.412890625000017,-12.51806640625],[27.573828125,-12.22705078125],[27.1591796875,-11.579199218750006],[26.824023437500017,-11.965234375],[26.025976562500006,-11.89013671875],[25.349414062500017,-11.623046875],[25.28876953125001,-11.21240234375],[24.3779296875,-11.417089843750006],[24.36572265625,-11.1298828125],[23.96650390625001,-10.871777343750011],[23.901171875000017,-10.983203125],[23.833886718750023,-11.013671875],[23.463964843750006,-10.969335937500006],[23.076269531250006,-11.087890625],[22.814746093750017,-11.080273437500011],[22.56103515625,-11.055859375000011],[22.486132812500017,-11.08671875],[22.392968750000023,-11.159472656250003],[22.31494140625,-11.198632812500009],[22.27880859375,-11.194140625],[22.226171875,-11.121972656250009],[22.203515625000023,-10.829492187500009],[22.307031250000023,-10.691308593750009],[22.19775390625,-10.040625],[21.81318359375001,-9.46875],[21.905371093750006,-8.693359375],[21.806054687500023,-7.32861328125],[21.751074218750006,-7.30546875],[21.190332031250023,-7.284960937500003],[20.910937500000017,-7.281445312500011],[20.607812500000023,-7.277734375],[20.558398437500017,-7.244433593750003],[20.53583984375001,-7.182812500000011],[20.536914062500017,-7.121777343750011],[20.598730468750006,-6.93515625],[20.59003906250001,-6.919921875],[20.482226562500017,-6.915820312500003],[20.190039062500006,-6.9462890625],[19.997460937500023,-6.976464843750009],[19.87519531250001,-6.986328125],[19.527636718750017,-7.144433593750009],[19.483789062500023,-7.279492187500011],[19.479882812500023,-7.47216796875],[19.371679687500006,-7.655078125],[19.369921875000017,-7.70654296875],[19.3408203125,-7.966601562500003],[19.142675781250006,-8.00146484375],[18.944433593750006,-8.00146484375],[18.56269531250001,-7.9359375],[18.0087890625,-8.107617187500011],[17.643359375000017,-8.090722656250009],[17.57958984375,-8.099023437500009],[16.984765625000023,-7.257421875],[16.91943359375,-6.933984375],[16.813085937500006,-6.772558593750006],[16.742968750000017,-6.618457031250003],[16.697265625,-6.164257812500011],[16.537109375,-5.9658203125],[16.431445312500017,-5.900195312500003],[16.315234375000017,-5.865625],[13.978515625,-5.857226562500003],[13.346484375000017,-5.863378906250006],[13.184375,-5.85625],[12.452929687500017,-6.00048828125],[12.213671875000017,-5.758691406250009],[12.484570312500011,-5.71875],[12.451464843750017,-5.071484375000011],[12.502734375000017,-5.036914062500003],[12.573535156250017,-4.99658203125],[12.59619140625,-4.978417968750009],[12.8296875,-4.736621093750003],[12.947460937500011,-4.6953125],[13.057324218750011,-4.651074218750011],[13.07275390625,-4.634765625],[13.08740234375,-4.601953125],[13.136621093750023,-4.604296875],[13.414941406250023,-4.83740234375],[13.659570312500023,-4.721484375],[13.717089843750017,-4.454492187500009],[13.94091796875,-4.484667968750003],[14.358300781250023,-4.299414062500006],[14.449804687500006,-4.449511718750003],[14.365429687500011,-4.585546875],[14.410742187500006,-4.83125],[14.707910156250023,-4.881738281250009],[15.990039062500017,-3.766210937500006],[16.217382812500006,-3.0302734375],[16.21533203125,-2.177832031250006],[16.54072265625001,-1.840136718750003],[16.8798828125,-1.225878906250003],[17.752832031250023,-0.549023437500011],[18.072167968750023,2.01328125],[18.49091796875001,2.924414062499991],[18.6103515625,3.478417968749994],[18.594140625000023,4.346240234374989],[19.06855468750001,4.891406249999989],[19.5009765625,5.127490234374989],[19.806542968750023,5.089306640624997],[20.226367187500017,4.829638671874989],[20.55810546875,4.462695312499989],[22.422167968750017,4.134960937499997],[22.864550781250017,4.723876953125],[23.41718750000001,4.663134765624989],[24.31982421875,4.994140625],[25.065234375000017,4.967431640624994],[25.52509765625001,5.31210937499999],[26.822070312500017,5.062402343749994],[27.071875,5.199755859374989],[27.4033203125,5.109179687499989]]]},"properties":{"name":"Dem. Rep. Congo","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[18.6103515625,3.478417968749994],[18.49091796875001,2.924414062499991],[18.072167968750023,2.01328125],[17.752832031250023,-0.549023437500011],[16.8798828125,-1.225878906250003],[16.54072265625001,-1.840136718750003],[16.21533203125,-2.177832031250006],[16.217382812500006,-3.0302734375],[15.990039062500017,-3.766210937500006],[14.707910156250023,-4.881738281250009],[14.410742187500006,-4.83125],[14.365429687500011,-4.585546875],[14.449804687500006,-4.449511718750003],[14.358300781250023,-4.299414062500006],[13.94091796875,-4.484667968750003],[13.717089843750017,-4.454492187500009],[13.659570312500023,-4.721484375],[13.414941406250023,-4.83740234375],[13.136621093750023,-4.604296875],[13.08740234375,-4.601953125],[13.07275390625,-4.634765625],[13.048046875000011,-4.619238281250006],[12.971386718750011,-4.5517578125],[12.881054687500011,-4.445117187500003],[12.84814453125,-4.428906250000011],[12.50146484375,-4.5875],[12.018359375000017,-5.004296875],[11.777539062500011,-4.565820312500009],[11.130175781250017,-3.916308593750003],[11.234472656250006,-3.690820312500009],[11.504296875000023,-3.5203125],[11.685742187500011,-3.68203125],[11.8798828125,-3.665917968750009],[11.934179687500006,-3.318554687500011],[11.715429687500006,-3.176953125000011],[11.760156250000023,-2.983105468750011],[11.537792968750011,-2.83671875],[11.60546875,-2.342578125],[12.064453125,-2.41259765625],[12.446386718750006,-2.329980468750009],[12.43212890625,-1.928906250000011],[12.590429687500006,-1.826855468750011],[12.793554687500006,-1.931835937500011],[12.991992187500017,-2.313378906250009],[13.464941406250006,-2.395410156250009],[13.733789062500023,-2.138476562500003],[13.886914062500011,-2.465429687500006],[13.993847656250011,-2.490625],[14.199804687500006,-2.354199218750011],[14.162890625000017,-2.217578125],[14.383984375000011,-1.890039062500009],[14.47412109375,-0.573437500000011],[13.860058593750011,-0.203320312500011],[13.949609375000023,0.353808593749989],[14.32421875,0.62421875],[14.429882812500011,0.901464843749991],[14.180859375000011,1.370214843749991],[13.851367187500017,1.41875],[13.21630859375,1.2484375],[13.172167968750017,1.78857421875],[13.293554687500006,2.161572265624997],[14.578906250000017,2.199121093749994],[14.902441406250006,2.012304687499991],[15.741601562500023,1.914990234374997],[16.059375,1.676220703124997],[16.183398437500017,2.270068359374989],[16.468554687500017,2.831738281249997],[16.610742187500023,3.50537109375],[17.491601562500023,3.687304687499989],[18.160937500000017,3.499804687499989],[18.474414062500017,3.622998046874997],[18.6103515625,3.478417968749994]]]},"properties":{"name":"Congo","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-71.31972656249997,11.861914062500048],[-71.95810546875,11.66640625],[-72.24848632812501,11.196435546875009],[-72.690087890625,10.835839843749994],[-72.86933593750001,10.49125976562496],[-73.00654296874998,9.789160156250006],[-73.36621093749997,9.194140625000017],[-73.05839843749999,9.259570312500031],[-72.79638671874997,9.10898437499999],[-72.66542968749994,8.62758789062498],[-72.39033203124995,8.287060546874969],[-72.47197265624996,7.524267578124991],[-72.20771484374995,7.37026367187498],[-72.00664062499993,7.032617187500023],[-71.12861328124993,6.98671875],[-70.73715820312503,7.090039062499997],[-70.12919921874999,6.95361328125],[-69.42714843749997,6.123974609374997],[-68.47177734375,6.156542968749974],[-67.85917968749999,6.289892578124963],[-67.48198242187499,6.18027343750002],[-67.47387695312503,5.929980468750003],[-67.82490234374995,5.270458984375026],[-67.85527343750002,4.506884765624989],[-67.66162109375,3.864257812499986],[-67.3111328125,3.41586914062502],[-67.85908203124998,2.793603515624994],[-67.61870117187496,2.793603515624994],[-67.21083984375,2.390136718750043],[-66.87602539062499,1.223046875000037],[-67.082275390625,1.185400390625006],[-67.11923828124998,1.703613281249986],[-67.40043945312499,2.116699218750028],[-67.93623046874998,1.748486328124969],[-68.19379882812495,1.987011718749983],[-68.25595703125,1.845507812500017],[-68.17656249999999,1.719824218749991],[-69.84858398437493,1.708740234375043],[-69.85214843750003,1.05952148437504],[-69.31181640624999,1.050488281249969],[-69.15332031249994,0.65878906250002],[-69.47211914062498,0.72993164062504],[-70.05390624999993,0.578613281250028],[-70.07050781249993,-0.13886718750004],[-69.63398437500001,-0.50927734375],[-69.40024414062498,-1.194921874999977],[-69.66904296875003,-2.667675781249997],[-69.94819335937498,-4.200585937500009],[-69.96591796875003,-4.2359375],[-70.16752929687499,-4.050195312500009],[-70.24028320312496,-3.882714843749994],[-70.2984375,-3.844238281249972],[-70.33950195312502,-3.814355468750009],[-70.73510742187497,-3.781542968749989],[-70.09584960937494,-2.658203125000014],[-70.16474609374995,-2.639843750000011],[-70.24443359375002,-2.606542968749977],[-70.29462890624995,-2.552539062499989],[-70.57587890624995,-2.418261718749989],[-70.64799804687499,-2.405761718750014],[-70.70537109374996,-2.341992187499983],[-70.91455078125003,-2.218554687499974],[-70.96855468750002,-2.206835937499989],[-71.02729492187498,-2.225781250000026],[-71.11337890625003,-2.245410156250031],[-71.19638671874998,-2.313085937499963],[-71.39697265625,-2.334082031249977],[-71.55947265624997,-2.224218749999977],[-71.75253906249995,-2.15273437499998],[-71.80273437499997,-2.166308593749989],[-71.86728515624998,-2.227734374999983],[-71.932470703125,-2.288671874999963],[-71.98427734375,-2.326562499999952],[-72.21845703125001,-2.400488281250006],[-72.94111328124998,-2.394042968750028],[-72.9896484375,-2.33974609374998],[-73.15449218749993,-2.278222656249966],[-73.19697265624995,-1.830273437500011],[-73.49628906249993,-1.69306640625004],[-73.66430664062497,-1.248828124999946],[-73.86318359374997,-1.19667968749998],[-73.92695312500001,-1.125195312499983],[-73.98681640625003,-1.098144531249986],[-74.05439453124995,-1.028613281250031],[-74.18076171875,-0.997753906249955],[-74.24638671874999,-0.970605468750023],[-74.28388671874998,-0.927832031250006],[-74.33442382812498,-0.85087890624996],[-74.41787109375,-0.580664062499977],[-74.46518554687498,-0.517675781250034],[-74.51386718749993,-0.470117187500023],[-74.555078125,-0.429882812499997],[-74.61635742187494,-0.370019531249966],[-74.691650390625,-0.335253906249989],[-74.75537109375003,-0.298632812499989],[-74.78046874999998,-0.24453125],[-74.80175781249997,-0.200097656249994],[-75.13837890624998,-0.050488281249969],[-75.28447265624999,-0.10654296875002],[-75.77666015624999,0.08925781249998],[-76.27060546874998,0.439404296874997],[-76.49462890624997,0.23544921875002],[-77.396337890625,0.393896484374963],[-77.46767578124997,0.636523437500017],[-77.702880859375,0.837841796874997],[-78.1806640625,0.968554687499974],[-78.85966796874996,1.455371093750031],[-79.02543945312499,1.623681640625037],[-78.79296874999994,1.848730468749963],[-78.576904296875,1.773779296874977],[-78.59169921875,2.356640624999969],[-78.41689453125,2.483496093749963],[-78.06665039062494,2.509130859375034],[-77.81357421875,2.716357421874974],[-77.076806640625,3.913281250000026],[-77.26352539062503,3.893212890625023],[-77.27802734374995,4.058496093750023],[-77.35820312499996,3.944726562500037],[-77.40874023437496,4.24775390625004],[-77.52070312499993,4.212792968750023],[-77.35351562499997,4.398291015624977],[-77.28632812499995,4.72172851562496],[-77.373291015625,5.323974609375],[-77.53442382812497,5.537109374999986],[-77.24926757812497,5.780175781250037],[-77.46943359374995,6.176757812500014],[-77.368798828125,6.575585937499994],[-77.90117187499999,7.229345703125048],[-77.76191406249995,7.698828125000034],[-77.53828124999995,7.56625976562502],[-77.19599609374995,7.972460937500003],[-77.47851562499994,8.498437500000037],[-77.37421874999993,8.65830078125002],[-76.85185546875002,8.09047851562498],[-76.924658203125,7.973193359374974],[-76.78657226562493,7.931591796875026],[-76.7720703125,8.310546875000043],[-76.92045898437496,8.573730468750014],[-76.27685546875,8.989111328124991],[-76.02724609374997,9.365771484374989],[-75.63935546874998,9.450439453125014],[-75.680029296875,9.729785156249989],[-75.53857421874997,10.205175781250034],[-75.708349609375,10.143408203124963],[-75.44599609374995,10.610888671874989],[-74.84458007812498,11.109716796875006],[-74.330224609375,10.996679687499991],[-74.51625976562497,10.8625],[-74.40087890625,10.76523437499999],[-74.14291992187503,11.320849609375031],[-73.31337890624997,11.295751953124991],[-72.275,11.88925781250002],[-72.13574218749994,12.188574218749977],[-71.71455078124993,12.41997070312496],[-71.26210937499997,12.335302734375034],[-71.13730468750003,12.04633789062504],[-71.31972656249997,11.861914062500048]]]},"properties":{"name":"Colombia","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[43.788671875,-12.307031250000023],[43.85898437500006,-12.368261718749977],[43.66367187500006,-12.342871093749949],[43.63134765624997,-12.247070312499972],[43.788671875,-12.307031250000023]]],[[[44.476367187500074,-12.08154296875],[44.504980468750006,-12.356542968749991],[44.220117187499994,-12.171386718750014],[44.476367187500074,-12.08154296875]]],[[[43.46582031249997,-11.901269531249966],[43.226660156250006,-11.75185546874998],[43.2990234375001,-11.374511718750028],[43.39296875000005,-11.408593749999952],[43.46582031249997,-11.901269531249966]]]]},"properties":{"name":"Comoros","childNum":3}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-24.308251953124966,14.856298828124991],[-24.44052734374992,14.834814453124963],[-24.496875,14.980273437500017],[-24.329492187499937,15.019482421875011],[-24.308251953124966,14.856298828124991]]],[[[-23.18212890624997,15.136767578125017],[-23.210253906250017,15.32353515625006],[-23.119335937499955,15.26840820312502],[-23.18212890624997,15.136767578125017]]],[[[-23.444238281249994,15.00795898437498],[-23.5046875,14.916113281250006],[-23.70537109374999,14.96132812499998],[-23.74809570312499,15.328515625],[-23.444238281249994,15.00795898437498]]],[[[-22.917724609375,16.237255859374955],[-22.69262695312497,16.169042968750006],[-22.710107421874994,16.043359374999966],[-22.95927734374996,16.045117187499983],[-22.917724609375,16.237255859374955]]],[[[-24.08769531249999,16.62250976562501],[-24.03271484374997,16.57202148437503],[-24.243066406250023,16.599414062500017],[-24.32236328124992,16.49311523437504],[-24.398095703124966,16.61840820312497],[-24.08769531249999,16.62250976562501]]],[[[-22.888330078124966,16.659082031249994],[-22.980615234374937,16.700878906249983],[-22.93291015624999,16.84101562500004],[-22.888330078124966,16.659082031249994]]],[[[-24.88706054687495,16.81811523437497],[-25.09306640624999,16.83251953125],[-24.936474609374983,16.92211914062503],[-24.88706054687495,16.81811523437497]]],[[[-25.169824218749994,16.94648437500001],[-25.308300781249955,16.93583984374999],[-25.337109374999955,17.091015624999983],[-25.03466796875,17.176464843749983],[-24.979687499999983,17.09472656250003],[-25.169824218749994,16.94648437500001]]]]},"properties":{"name":"Cape Verde","childNum":8}},{"geometry":{"type":"Polygon","coordinates":[[[-83.6419921875,10.917236328125],[-83.346826171875,10.315380859374997],[-82.77841796874999,9.66953125],[-82.56357421874999,9.57666015625],[-82.56923828125,9.55820312499999],[-82.58652343749999,9.538818359375],[-82.64409179687499,9.505859375],[-82.801025390625,9.591796875],[-82.843994140625,9.57080078125],[-82.86015624999999,9.511474609375],[-82.88896484374999,9.481005859374989],[-82.925048828125,9.469042968749989],[-82.93984375,9.449169921874997],[-82.94033203125,9.060107421874989],[-82.88134765625,9.055859375],[-82.78305664062499,8.990283203124989],[-82.741162109375,8.951708984374989],[-82.72783203124999,8.916064453124989],[-82.91704101562499,8.740332031249991],[-82.855712890625,8.635302734374989],[-82.84477539062499,8.489355468749991],[-82.86162109374999,8.45351562499999],[-83.02734375,8.337744140624991],[-82.879345703125,8.070654296874991],[-83.12333984374999,8.353076171874989],[-83.16240234374999,8.588183593749989],[-83.4697265625,8.706835937499989],[-83.29150390625,8.406005859375],[-83.54375,8.445849609374989],[-83.73408203125,8.614453125],[-83.613720703125,8.804052734374991],[-83.73691406249999,9.150292968749994],[-84.58159179687499,9.568359375],[-84.71494140624999,9.8994140625],[-85.23564453124999,10.242089843749994],[-85.2365234375,10.107373046874997],[-84.88642578125,9.820947265624994],[-85.07705078125,9.60195312499999],[-85.31455078124999,9.8109375],[-85.62485351562499,9.902441406249991],[-85.84965820312499,10.292041015624989],[-85.667236328125,10.745019531249994],[-85.90800781249999,10.897558593749991],[-85.7443359375,11.06210937499999],[-85.5841796875,11.189453125],[-84.9091796875,10.9453125],[-84.6341796875,11.045605468749997],[-83.91928710937499,10.7353515625],[-83.71293945312499,10.785888671875],[-83.6419921875,10.917236328125]]]},"properties":{"name":"Costa Rica","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-82.56176757812503,21.571679687500023],[-82.959619140625,21.441308593750023],[-83.18378906250001,21.59345703125004],[-82.97358398437498,21.592285156250057],[-83.08251953124997,21.791406250000023],[-82.99121093750003,21.942724609375034],[-82.71455078124998,21.890283203125023],[-82.56176757812503,21.571679687500023]]],[[[-77.66899414062493,21.951953125000045],[-77.91855468749998,22.088085937499983],[-77.63369140624994,22.054003906250074],[-77.66899414062493,21.951953125000045]]],[[[-77.87939453125,22.127539062500034],[-78.04165039062502,22.201269531250034],[-77.99921874999998,22.298730468749994],[-77.87939453125,22.127539062500034]]],[[[-81.83745117187499,23.163037109374955],[-81.26235351562497,23.156835937500034],[-81.14462890624998,23.054931640625057],[-80.65014648437494,23.10307617187499],[-80.36489257812502,22.943408203125074],[-79.82026367187498,22.887011718750045],[-79.27568359374999,22.407617187499994],[-78.68647460937493,22.366845703125023],[-77.63681640624995,21.79736328125],[-77.49711914062502,21.78833007812503],[-77.58315429687497,21.889257812499977],[-77.49726562499995,21.871630859375045],[-77.14414062499995,21.643603515625017],[-77.36616210937498,21.612646484375034],[-77.25288085937498,21.483496093750006],[-77.0986328125,21.589013671875023],[-76.86743164062497,21.330419921875006],[-75.72294921874996,21.111035156249983],[-75.59580078125,20.99467773437499],[-75.72456054687493,20.71455078125004],[-74.882568359375,20.65063476562497],[-74.51313476562495,20.384570312500045],[-74.16748046874997,20.292187499999955],[-74.15371093750002,20.168554687500006],[-75.11640624999995,19.901416015625017],[-75.151611328125,20.008349609375045],[-75.29047851562495,19.893115234375017],[-76.15844726562497,19.98974609374997],[-77.715087890625,19.85546874999997],[-77.10380859374999,20.407519531250017],[-77.22958984374995,20.64375],[-78.11635742187497,20.761865234374994],[-78.49077148437493,21.05371093750003],[-78.72768554687497,21.592724609374955],[-79.35742187500003,21.58515625000001],[-80.23134765625,21.872167968750063],[-80.48544921874998,22.1234375],[-81.03564453124997,22.073583984375063],[-81.18549804687495,22.26796875000005],[-81.284375,22.109423828125074],[-81.84941406249993,22.21367187499999],[-82.077734375,22.3876953125],[-81.71035156250002,22.496679687500006],[-81.83881835937498,22.672460937500034],[-82.73803710937497,22.689257812500074],[-83.37963867187503,22.222998046875034],[-83.90073242187495,22.17011718750001],[-84.03095703124993,21.94311523437503],[-84.502587890625,21.776171875000045],[-84.50136718750002,21.930273437499977],[-84.88720703125003,21.856982421875074],[-84.32636718749998,22.074316406250034],[-84.36127929687498,22.37890625],[-84.04492187500003,22.666015625000057],[-83.25781249999997,22.967578125000017],[-81.83745117187499,23.163037109374955]]]]},"properties":{"name":"Cuba","childNum":4}},{"geometry":{"type":"Polygon","coordinates":[[[-68.75107421874999,12.059765625],[-68.9951171875,12.141845703125],[-69.15888671875,12.380273437499994],[-68.75107421874999,12.059765625]]]},"properties":{"name":"Cura\xE7ao","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-81.36953124999997,19.34887695312497],[-81.10712890624995,19.305175781250057],[-81.40478515624994,19.278417968750006],[-81.36953124999997,19.34887695312497]]],[[[-79.823388671875,19.711914062500057],[-79.90620117187501,19.702539062499994],[-79.74228515625,19.757128906250017],[-79.823388671875,19.711914062500057]]]]},"properties":{"name":"Cayman Is.","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[34.004492187500006,35.065234375],[33.47578125000001,35.000341796875],[33.3837890625,35.1626953125],[32.91953125,35.087841796875],[32.71269531250002,35.171044921874994],[32.8798828125,35.180566406249994],[32.94160156250001,35.390429687499996],[33.60761718750001,35.354150390624994],[34.55605468750002,35.662060546875],[33.941992187500006,35.292041015624996],[34.004492187500006,35.065234375]]]},"properties":{"name":"N. Cyprus","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[32.71269531250002,35.171044921874994],[32.91953125,35.087841796875],[33.3837890625,35.1626953125],[33.47578125000001,35.000341796875],[34.004492187500006,35.065234375],[34.05019531250002,34.98837890625],[33.69941406250001,34.969873046874994],[33.007910156250006,34.569580078125],[32.44902343750002,34.729443359375],[32.31718750000002,34.9533203125],[32.30097656250001,35.082958984375],[32.71269531250002,35.171044921874994]]]},"properties":{"name":"Cyprus","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[14.809375,50.858984375],[14.895800781250017,50.861376953124996],[14.98291015625,50.886572265625],[14.99375,51.01435546875],[16.007226562500023,50.611621093749996],[16.2822265625,50.655615234375],[16.419726562500017,50.573632812499994],[16.210351562500023,50.423730468749994],[16.63916015625,50.1021484375],[16.989648437500023,50.2369140625],[16.88007812500001,50.427050781249996],[17.41523437500001,50.254785156249994],[17.702246093750006,50.307177734374996],[17.627050781250006,50.11640625],[17.874804687500017,49.972265625],[18.0283203125,50.03525390625],[18.562402343750023,49.879345703125],[18.83222656250001,49.510791015624996],[18.160937500000017,49.257373046874996],[18.0859375,49.06513671875],[17.75849609375001,48.888134765625],[17.135644531250023,48.841064453125],[16.953125,48.598828125],[16.543554687500006,48.796240234375],[16.057226562500006,48.754785156249994],[15.066796875000023,48.997851562499996],[14.691308593750023,48.59921875],[14.049121093750017,48.602490234375],[13.814746093750017,48.766943359375],[13.769921875000023,48.815966796874996],[13.684960937500023,48.876708984375],[13.547656250000017,48.95966796875],[13.440722656250017,48.95556640625],[13.401171875000017,48.977587890624996],[12.916699218750011,49.33046875],[12.68115234375,49.414501953125],[12.390527343750023,49.739648437499994],[12.5125,49.87744140625],[12.09921875,50.310986328125],[12.134863281250006,50.3109375],[12.1748046875,50.288378906249996],[12.231152343750011,50.244873046875],[12.27734375,50.181445312499996],[12.3056640625,50.205712890624994],[12.549023437500011,50.393408203125],[13.016406250000017,50.490380859374994],[13.18115234375,50.510498046875],[14.369042968750023,50.898730468749996],[14.319726562500023,51.03779296875],[14.545703125000017,50.993945312499996],[14.559667968750006,50.954931640625],[14.59521484375,50.918603515624994],[14.623828125000017,50.91474609375],[14.613574218750017,50.85556640625],[14.658203125,50.8326171875],[14.723339843750011,50.814697265625],[14.766503906250023,50.818310546875],[14.797460937500006,50.842333984374996],[14.809375,50.858984375]]]},"properties":{"name":"Czech Rep.","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[14.1982421875,53.919042968750034],[13.92578125,53.879052734374966],[13.827734375,54.12724609374999],[14.1982421875,53.919042968750034]]],[[[13.709179687500011,54.382714843749994],[13.707324218750074,54.281152343749994],[13.190039062500034,54.32563476562501],[13.336816406249994,54.697119140625006],[13.65761718750008,54.55957031249997],[13.709179687500011,54.382714843749994]]],[[[9.739746093750028,54.82553710937498],[10.022167968750011,54.673925781250006],[9.86865234375,54.47246093749999],[10.731542968750006,54.31625976562506],[11.013378906250068,54.37915039062497],[11.008593750000074,54.18115234374997],[10.810742187500068,54.075146484374955],[10.917773437500045,53.99531250000004],[11.39960937500004,53.94462890625002],[12.111328125,54.168310546875006],[12.57539062500004,54.467382812500006],[13.028613281250017,54.411035156249994],[13.448046875000017,54.14086914062503],[13.724218750000063,54.153222656249966],[13.865527343750074,53.85336914062498],[14.258886718750006,53.729638671874994],[14.298730468750051,53.55644531249999],[14.41455078125,53.28349609374996],[14.412304687500011,53.216748046874955],[14.410937500000074,53.19902343749999],[14.368554687500051,53.105566406250034],[14.293164062500068,53.026757812499966],[14.138867187500068,52.93286132812503],[14.128613281250011,52.87822265625002],[14.253710937500017,52.78251953124996],[14.514062500000023,52.645605468750034],[14.619433593750017,52.52851562499998],[14.569726562499994,52.431103515624955],[14.554589843750023,52.35966796874996],[14.573925781250068,52.31416015625001],[14.615625,52.277636718750045],[14.679882812500068,52.25],[14.752539062500034,52.08183593750002],[14.601660156250034,51.832373046875006],[14.738671875000051,51.62714843750004],[14.7109375,51.54492187499997],[14.724707031250063,51.523876953124955],[14.90595703125004,51.463330078124955],[14.935546875000028,51.435351562500045],[14.9638671875,51.095117187499994],[14.917480468750057,51.00874023437498],[14.814257812499989,50.871630859375045],[14.809375,50.858984375000034],[14.797460937500034,50.84233398437502],[14.766503906250051,50.81831054687501],[14.72333984375004,50.81469726562497],[14.658203125,50.832617187500006],[14.613574218750045,50.85556640625006],[14.623828125000017,50.91474609375004],[14.595214843750057,50.91860351562502],[14.559667968750006,50.954931640625034],[14.545703124999989,50.99394531249999],[14.319726562500051,51.037792968749955],[14.36904296875008,50.89873046874996],[13.18115234375,50.510498046875],[13.016406250000017,50.490380859374994],[12.549023437500011,50.393408203125034],[12.3056640625,50.205712890624994],[12.27734375,50.18144531250002],[12.231152343749983,50.24487304687497],[12.174804687500057,50.28837890624996],[12.134863281250006,50.31093750000002],[12.099218750000034,50.31098632812504],[12.089843749999972,50.30175781250003],[12.089746093750051,50.2685546875],[12.294598214285761,50.13608119419641],[12.5125,49.87744140625],[12.390527343750051,49.739648437499994],[12.68115234375,49.41450195312501],[12.91669921875004,49.33046875000002],[13.401171875000074,48.97758789062499],[13.440722656250045,48.95556640625003],[13.547656250000074,48.95966796874998],[13.684960937500051,48.87670898437506],[13.769921875000051,48.81596679687502],[13.814746093750017,48.76694335937498],[13.802929687500011,48.74750976562501],[13.798828124999972,48.62167968750006],[13.785351562499983,48.58745117187502],[13.486621093750074,48.58183593750002],[13.471679687500028,48.57182617187502],[13.459863281250023,48.564550781250034],[13.409375,48.39414062500006],[13.322851562500006,48.33125],[13.215234375000023,48.301904296874994],[12.760351562500063,48.10698242187499],[12.95351562500008,47.890625],[12.897656250000068,47.721875],[13.054101562500051,47.655126953125034],[13.047949218750034,47.57915039062502],[13.031542968750074,47.50800781250001],[13.01435546875004,47.478076171875045],[12.968066406250017,47.475683593750006],[12.878906250000057,47.506445312500034],[12.809375,47.542187499999955],[12.782812500000034,47.56416015624998],[12.781152343750051,47.590429687500006],[12.796191406249989,47.60703125],[12.771386718750023,47.63940429687503],[12.685839843750074,47.66933593750002],[12.209277343750074,47.71826171875003],[12.196875,47.709082031250034],[12.203808593750011,47.64672851562503],[12.185644531250063,47.61953125],[11.041992187500028,47.39311523437496],[10.98085937499999,47.39814453125001],[10.893945312500051,47.470458984375],[10.870605468750028,47.500781250000045],[10.873046874999972,47.52021484375001],[10.741601562500023,47.52412109375001],[10.65869140625,47.547216796875006],[10.482812500000051,47.54179687499996],[10.439453125000028,47.55156249999999],[10.403906250000063,47.41699218750003],[10.369140625,47.366064453125034],[10.18300781250008,47.27880859375003],[10.200292968750063,47.36342773437505],[10.066308593750023,47.39335937500002],[10.064575892857171,47.42369419642856],[10.059863281250045,47.44907226562498],[10.034082031250023,47.47358398437501],[9.971582031249994,47.50532226562498],[9.839160156250017,47.55229492187496],[9.748925781250023,47.575537109375006],[9.524023437500034,47.52421875000002],[8.572656250000023,47.775634765625],[8.435742187500011,47.73134765625002],[8.403417968750006,47.687792968750045],[8.413281250000068,47.66269531249998],[8.451757812500006,47.65180664062498],[8.552343750000063,47.65913085937498],[8.56708984375004,47.65190429687502],[8.57050781250004,47.63779296874998],[8.55947265625008,47.62402343750003],[8.477636718750034,47.61269531250002],[8.454003906249994,47.59619140625003],[7.615625,47.59272460937504],[7.616601562500023,48.15678710937502],[8.134863281250006,48.97358398437498],[7.450585937500051,49.152197265625034],[6.735449218750006,49.16059570312498],[6.344335937500006,49.45273437499998],[6.4873046875,49.798486328124994],[6.204882812500017,49.915136718750034],[6.13818359375,49.97431640625001],[6.10976562500008,50.034375],[6.116503906250045,50.120996093749966],[6.340917968750006,50.451757812500034],[5.993945312500017,50.75043945312504],[6.048437500000034,50.90488281250006],[5.857519531250034,51.030126953125006],[6.129980468750034,51.14741210937501],[6.198828125000034,51.45],[5.948730468750057,51.80268554687501],[6.800390625,51.96738281249998],[6.724511718749994,52.080224609374966],[7.035156250000057,52.38022460937498],[6.748828125000074,52.464013671874994],[6.710742187500045,52.61787109374998],[7.033007812500045,52.65136718749997],[7.197265625000028,53.28227539062499],[7.074316406250034,53.477636718750006],[7.285253906250034,53.68134765625001],[8.00927734375,53.69072265624999],[8.108496093750063,53.46767578125002],[8.245214843750006,53.44531249999997],[8.333886718750051,53.606201171875],[8.495214843750063,53.39423828124998],[8.618945312500045,53.875],[9.20556640625,53.85595703124997],[9.783984375000074,53.554638671874955],[9.31201171875,53.859130859375],[8.92041015625,53.96533203125006],[8.906640625000023,54.26079101562502],[8.625781250000017,54.35395507812501],[8.951855468750011,54.46757812499996],[8.670312500000023,54.903417968750034],[9.739746093750028,54.82553710937498]]],[[[8.307714843750034,54.786962890625034],[8.451464843750017,55.05537109374998],[8.3798828125,54.89985351562501],[8.629589843750068,54.891748046874966],[8.307714843750034,54.786962890625034]]]]},"properties":{"name":"Germany","childNum":4}},{"geometry":{"type":"Polygon","coordinates":[[[43.24599609375002,11.499804687499989],[42.92275390625002,10.999316406249989],[42.557714843750006,11.080761718749997],[41.79824218750002,10.98046875],[41.79267578125001,11.68603515625],[42.378515625,12.46640625],[42.40859375000002,12.494384765625],[42.45,12.521337890624991],[42.47939453125002,12.513623046874997],[42.703710937500006,12.380322265624997],[42.76748046875002,12.4228515625],[42.825292968750006,12.5693359375],[42.86591796875001,12.622802734375],[42.88330078125,12.621289062499997],[43.00566406250002,12.662304687499997],[43.11669921875,12.70859375],[43.353515625,12.367041015624991],[43.38027343750002,12.091259765624997],[42.64003906250002,11.560107421874989],[42.52177734375002,11.572167968749994],[42.58378906250002,11.496777343749997],[43.04277343750002,11.588476562499991],[43.24599609375002,11.499804687499989]]]},"properties":{"name":"Djibouti","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-61.281689453125,15.2490234375],[-61.37539062499999,15.227294921875],[-61.45810546874999,15.633105468750003],[-61.277246093749994,15.526708984374991],[-61.281689453125,15.2490234375]]]},"properties":{"name":"Dominica","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[11.361425781250006,54.891650390625045],[11.739550781250017,54.80742187500002],[11.765917968750074,54.67944335937506],[11.457421875000023,54.628857421874955],[11.035546875000051,54.77309570312505],[11.058593750000028,54.940576171874966],[11.361425781250006,54.891650390625045]]],[[[12.549218750000051,54.96577148437504],[12.11884765625004,54.91440429687506],[12.274023437500034,55.064111328124994],[12.549218750000051,54.96577148437504]]],[[[10.061230468750068,54.88637695312502],[9.80625,54.90600585937503],[9.78125,55.06904296875001],[10.061230468750068,54.88637695312502]]],[[[10.734082031250011,54.750732421875],[10.621679687500006,54.851416015625006],[10.95107421875008,55.15620117187501],[10.734082031250011,54.750732421875]]],[[[15.087695312500017,55.021875],[14.684179687500063,55.10224609375004],[14.765332031250068,55.296728515625034],[15.132617187500017,55.14453125000003],[15.087695312500017,55.021875]]],[[[10.645117187500006,55.60981445312498],[10.785253906250034,55.13339843749998],[10.44277343750008,55.04877929687498],[9.988769531250028,55.163183593750006],[9.860644531250045,55.515478515625034],[10.645117187500006,55.60981445312498]]],[[[12.665722656250068,55.596533203125006],[12.550878906250034,55.55625],[12.59921875,55.68022460937502],[12.665722656250068,55.596533203125006]]],[[[12.56875,55.785058593749966],[12.215039062500011,55.46650390624998],[12.413085937500028,55.28618164062502],[12.089941406250006,55.18813476562505],[12.050390625000034,54.81533203125002],[11.8623046875,54.77260742187502],[11.653808593750057,55.186914062499966],[11.286328125000068,55.20444335937498],[10.978906250000051,55.721533203125006],[11.322265625000028,55.752539062500006],[11.627734375000074,55.95688476562498],[11.819726562500023,55.69765625000002],[11.86640625000004,55.968164062499966],[12.218945312499983,56.11865234374997],[12.578710937500006,56.06406250000006],[12.56875,55.785058593749966]]],[[[11.052148437500051,57.25253906250006],[10.873828125000045,57.26225585937499],[11.174511718750011,57.322900390624994],[11.052148437500051,57.25253906250006]]],[[[9.739746093750028,54.82553710937498],[8.670312500000023,54.903417968750034],[8.61591796875004,55.41821289062503],[8.132128906250074,55.59980468749998],[8.16396484375008,56.60688476562498],[8.671679687500045,56.49565429687496],[8.88808593750008,56.73505859374998],[9.06708984375004,56.79384765625005],[9.196386718750006,56.70166015625],[9.2548828125,57.01171875000003],[8.992773437499977,57.01611328125003],[8.771972656250028,56.72529296875004],[8.468359375,56.66455078125],[8.284082031250023,56.85234374999999],[8.618554687500051,57.11127929687498],[9.43359375,57.17431640625003],[9.96230468750008,57.580957031249994],[10.609960937500034,57.73691406249998],[10.282714843750057,56.620507812499994],[10.926171875000051,56.44326171875002],[10.753417968750028,56.24199218749999],[10.31875,56.212890625],[10.18300781250008,55.86518554687504],[9.903710937500023,55.84282226562502],[10.02363281250004,55.76142578125004],[9.591113281250017,55.49321289062502],[9.670996093750063,55.26640624999999],[9.453710937500006,55.03955078125006],[9.732324218750023,54.96801757812506],[9.739746093750028,54.82553710937498]]]]},"properties":{"name":"Denmark","childNum":10,"cp":[10.2768332,56.1773879]}},{"geometry":{"type":"Polygon","coordinates":[[[-71.647216796875,19.195947265624994],[-71.746484375,19.285839843749997],[-71.71147460937499,19.486572265625],[-71.75742187499999,19.688183593749997],[-71.779248046875,19.718164062499994],[-71.6673828125,19.8486328125],[-70.95415039062499,19.913964843749994],[-70.19384765625,19.63803710937499],[-69.95683593749999,19.671875],[-69.739404296875,19.29921875],[-69.23247070312499,19.27182617187499],[-69.60595703125,19.206494140624997],[-69.62363281249999,19.117822265624994],[-68.684765625,18.90478515625],[-68.33916015624999,18.611523437499997],[-68.68740234375,18.21494140624999],[-68.9349609375,18.408007812500003],[-69.27451171874999,18.43984375],[-69.770654296875,18.443554687499997],[-70.479931640625,18.21728515625],[-70.644677734375,18.336230468750003],[-71.02783203125,18.273193359375],[-71.43896484375,17.63559570312499],[-71.63173828125,17.773632812499997],[-71.768310546875,18.03916015624999],[-71.76376953124999,18.20395507812499],[-71.737255859375,18.270800781250003],[-71.7619140625,18.34130859375],[-71.87255859375,18.416210937499997],[-71.940380859375,18.512597656249994],[-72.000390625,18.597900390625],[-71.98686523437499,18.6103515625],[-71.86650390624999,18.614160156249994],[-71.74321289062499,18.73291015625],[-71.72705078125,18.80322265625],[-71.733642578125,18.856396484374997],[-71.80712890625,18.987011718749997],[-71.647216796875,19.195947265624994]]]},"properties":{"name":"Dominican Rep.","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[8.207617187500006,36.518945312499994],[8.348730468750006,36.36796875],[8.318066406250011,35.654931640624994],[8.31640625,35.403125],[8.35986328125,35.299609375],[8.394238281250011,35.203857421875],[8.312109375,35.084619140624994],[8.27685546875,34.9794921875],[8.24560546875,34.73408203125],[7.513867187500011,34.080517578125],[7.534375,33.717919921874994],[7.877246093750017,33.172119140625],[8.1125,33.055322265624994],[8.333398437500023,32.543603515624994],[9.044042968750006,32.07236328125],[9.160253906250006,31.621337890625],[9.224023437500023,31.373681640624994],[9.51875,30.229394531249994],[9.310253906250011,30.115234375],[9.805273437500006,29.176953125],[9.916015625,27.785693359374996],[9.74755859375,27.330859375],[9.883203125000023,26.630810546874997],[9.491406250000011,26.333740234375],[9.4482421875,26.067138671875],[10.000683593750011,25.332080078125003],[10.255859375,24.591015625],[10.395898437500023,24.485595703125],[10.686132812500006,24.55136718749999],[11.507617187500017,24.314355468749994],[11.967871093750006,23.517871093750003],[7.481738281250017,20.873095703125003],[5.836621093750011,19.479150390624994],[4.227636718750006,19.142773437499997],[3.3564453125,18.986621093750003],[3.119726562500006,19.103173828124994],[3.255859375,19.4109375],[3.130273437500023,19.85019531249999],[1.685449218750023,20.378369140624997],[1.610644531250017,20.555566406249994],[1.165722656250011,20.817431640625003],[1.1455078125,21.102246093749997],[-1.947900390624994,23.124804687500003],[-4.822607421874977,24.99560546875],[-8.683349609375,27.2859375],[-8.683349609375,27.656445312499997],[-8.683349609375,27.900390625],[-8.659912109375,28.718603515625],[-7.485742187499994,29.392236328124994],[-7.427685546874983,29.425],[-7.142431640624977,29.619580078124997],[-6.855566406249977,29.601611328124996],[-6.755126953125,29.583837890625],[-6.635351562499977,29.568798828124997],[-6.597753906249977,29.578955078125],[-6.520556640624989,29.659863281249997],[-6.479736328125,29.820361328124996],[-6.00429687499999,29.83125],[-5.448779296874989,29.956933593749994],[-5.293652343749983,30.058642578124996],[-5.180126953124983,30.166162109374994],[-4.96826171875,30.465380859374996],[-4.778515624999983,30.552392578124994],[-4.529150390624977,30.625537109374996],[-4.322851562499977,30.698876953124994],[-4.148779296874977,30.8095703125],[-3.626904296874983,31.000927734374997],[-3.833398437499994,31.197802734374996],[-3.837109374999983,31.512353515624994],[-3.768164062499977,31.68955078125],[-3.700244140624989,31.700097656249994],[-3.604589843749977,31.686767578125],[-3.439794921874977,31.704541015624997],[-3.017382812499989,31.834277343749996],[-2.988232421874983,31.87421875],[-2.930859374999983,32.042529296874996],[-2.863427734374994,32.07470703125],[-1.275341796874983,32.089013671874994],[-1.16259765625,32.399169921875],[-1.111035156249983,32.552294921874996],[-1.188232421875,32.60849609375],[-1.29638671875,32.675683593749994],[-1.352148437499977,32.703369140625],[-1.45,32.784814453124994],[-1.510009765625,32.87763671875],[-1.550732421874983,33.073583984375],[-1.67919921875,33.318652343749996],[-1.795605468749983,34.751904296875],[-2.131787109374983,34.970849609374994],[-2.190771484374977,35.02978515625],[-2.219628906249994,35.10419921875],[-1.673632812499989,35.18310546875],[-0.426123046874977,35.8615234375],[-0.048242187499994,35.8328125],[0.312207031250011,36.162353515625],[0.9716796875,36.4439453125],[2.593359375,36.60068359375],[2.972851562500011,36.784472656249996],[3.779003906250011,36.89619140625],[4.758105468750017,36.896337890625],[5.29541015625,36.648242187499996],[6.486523437500011,37.085742187499996],[6.927539062500017,36.91943359375],[7.238476562500011,36.968505859375],[7.204296875000011,37.0923828125],[7.910449218750017,36.856347656249994],[8.576562500000023,36.93720703125],[8.601269531250011,36.833935546875],[8.207617187500006,36.518945312499994]]]},"properties":{"name":"Algeria","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-80.131591796875,-2.973144531249957],[-80.27294921875003,-2.995898437499974],[-80.22368164062502,-2.753125],[-80.08076171874995,-2.668847656249966],[-79.90903320312495,-2.725585937499972],[-80.131591796875,-2.973144531249957]]],[[[-90.42392578125,-1.339941406250034],[-90.51953124999994,-1.299121093749974],[-90.47719726562494,-1.22099609374996],[-90.42392578125,-1.339941406250034]]],[[[-89.41889648437498,-0.911035156249966],[-89.60859374999998,-0.888574218750009],[-89.28784179687503,-0.689843750000023],[-89.41889648437498,-0.911035156249966]]],[[[-90.33486328125,-0.771582031249977],[-90.54213867187502,-0.676464843749955],[-90.53168945312493,-0.581445312499966],[-90.26938476562498,-0.48466796874996],[-90.19272460937498,-0.658789062500006],[-90.33486328125,-0.771582031249977]]],[[[-91.42597656249995,-0.460839843749994],[-91.61074218749994,-0.44394531250002],[-91.64667968749998,-0.284472656249946],[-91.46015625000001,-0.255664062500031],[-91.42597656249995,-0.460839843749994]]],[[[-90.57392578124993,-0.333984375],[-90.8677734375,-0.271386718750037],[-90.78037109374998,-0.160449218749989],[-90.57392578124993,-0.333984375]]],[[[-91.27216796874998,0.025146484374986],[-90.799658203125,-0.752050781249991],[-90.90551757812497,-0.94052734375002],[-91.13105468750001,-1.019628906249977],[-91.41904296874998,-0.996679687500006],[-91.49541015624999,-0.860937499999977],[-91.120947265625,-0.559082031250028],[-91.36918945312493,-0.287207031249977],[-91.42885742187502,-0.023388671874955],[-91.59682617187497,0.002099609374994],[-91.36137695312496,0.125830078124977],[-91.27216796874998,0.025146484374986]]],[[[-78.90922851562502,1.252783203124977],[-78.99169921875003,1.293212890625043],[-78.89980468749997,1.359765625],[-78.90922851562502,1.252783203124977]]],[[[-75.28447265624999,-0.10654296875002],[-75.62626953124999,-0.122851562499974],[-75.63203125000001,-0.157617187500037],[-75.56059570312502,-0.200097656249994],[-75.49106445312498,-0.24833984374996],[-75.42470703124997,-0.408886718749983],[-75.259375,-0.59013671874996],[-75.24960937499998,-0.951855468750026],[-75.34819335937499,-0.966796874999957],[-75.38012695312503,-0.94023437499996],[-75.40805664062503,-0.92431640625],[-75.42041015624997,-0.962207031250003],[-75.570556640625,-1.53125],[-76.08979492187501,-2.133105468749974],[-76.6791015625,-2.562597656249991],[-77.860595703125,-2.981640625000011],[-78.240380859375,-3.472558593750009],[-78.345361328125,-3.397363281249966],[-78.64799804687499,-4.248144531250006],[-78.68603515625003,-4.562402343749994],[-78.86152343749998,-4.665039062499943],[-78.90761718749997,-4.714453124999977],[-78.92578125,-4.770703124999983],[-78.91420898437497,-4.818652343749974],[-78.919189453125,-4.858398437499986],[-78.97539062499999,-4.873242187499997],[-78.99526367187497,-4.908007812499974],[-79.03330078124998,-4.96914062499999],[-79.07626953125003,-4.990625],[-79.18666992187497,-4.958203124999983],[-79.26811523437493,-4.957617187499949],[-79.33095703124997,-4.92783203125002],[-79.39941406249997,-4.840039062499983],[-79.45576171874998,-4.766210937499949],[-79.50190429687495,-4.670605468750011],[-79.51616210937493,-4.539160156249963],[-79.57768554687496,-4.50058593750002],[-79.638525390625,-4.454882812500031],[-79.71098632812502,-4.467578124999946],[-79.79726562500002,-4.47636718749996],[-79.8451171875,-4.445898437499977],[-79.962890625,-4.390332031250026],[-80.06352539062499,-4.327539062500023],[-80.13955078125002,-4.296093750000011],[-80.19746093750001,-4.311035156249943],[-80.293359375,-4.416796875],[-80.38349609374998,-4.46367187499996],[-80.424169921875,-4.461425781250028],[-80.47856445312499,-4.430078125000037],[-80.48847656249995,-4.393652343749991],[-80.44384765625003,-4.335839843750023],[-80.35288085937495,-4.208496093750014],[-80.453759765625,-4.205175781249963],[-80.48847656249995,-4.165527343749972],[-80.49345703124999,-4.119140625000014],[-80.510009765625,-4.06953125000004],[-80.49013671874994,-4.010058593750003],[-80.43720703125001,-3.978613281249991],[-80.30327148437499,-4.005078124999969],[-80.26689453124993,-3.948828124999963],[-80.23051757812499,-3.924023437499969],[-80.19414062499996,-3.905859375],[-80.24375,-3.576757812500006],[-80.32465820312498,-3.387890625],[-79.96333007812501,-3.15771484375],[-79.72988281249997,-2.579101562499972],[-79.842138671875,-2.0673828125],[-79.92558593749996,-2.548535156249969],[-80.03017578124994,-2.556738281249949],[-80.00664062499993,-2.353808593750003],[-80.28471679687502,-2.706738281249955],[-80.93217773437493,-2.269140624999977],[-80.76059570312498,-1.934570312500028],[-80.90239257812499,-1.078906249999974],[-80.55390624999998,-0.847949218749989],[-80.45546875,-0.585449218749986],[-80.282373046875,-0.620507812500023],[-80.48227539062503,-0.368261718749963],[-80.046142578125,0.155371093750048],[-80.08828124999997,0.78476562500002],[-78.89965820312503,1.20625],[-78.85966796874996,1.455371093750031],[-78.1806640625,0.968554687499974],[-77.702880859375,0.837841796874997],[-77.46767578124997,0.636523437500017],[-77.396337890625,0.393896484374963],[-76.49462890624997,0.23544921875002],[-76.27060546874998,0.439404296874997],[-75.77666015624999,0.08925781249998],[-75.28447265624999,-0.10654296875002]]]]},"properties":{"name":"Ecuador","childNum":9}},{"geometry":{"type":"Polygon","coordinates":[[[34.24531250000001,31.208300781249996],[34.904296875,29.47734375],[34.736425781250006,29.27060546875],[34.39970703125002,28.01601562499999],[34.22011718750002,27.764306640624994],[33.76025390625,28.04765625],[33.24775390625001,28.567724609375],[32.56572265625002,29.973974609375],[32.35976562500002,29.630664062499996],[32.89824218750002,28.565234375],[33.54707031250001,27.898144531249997],[33.5498046875,27.607373046874997],[33.84931640625001,27.184912109375],[33.959082031250006,26.6490234375],[35.19414062500002,24.475146484375003],[35.78388671875001,23.937792968750003],[35.54082031250002,23.920654296875],[35.50439453125,23.779296875],[35.697851562500006,22.946191406249994],[36.22968750000001,22.628808593749994],[36.87138671875002,21.996728515624994],[31.434472656250023,21.995849609375],[31.486132812500017,22.14780273437499],[31.400292968750023,22.202441406250003],[31.260644531250023,22.00229492187499],[31.092675781250023,21.994873046875],[28.036425781250017,21.995361328125],[24.980273437500017,21.995849609375],[24.980273437500017,25.5888671875],[24.980273437500017,29.181884765625],[24.703222656250006,30.201074218749994],[24.96142578125,30.678515625],[24.85273437500001,31.334814453125],[25.150488281250006,31.654980468749997],[25.382226562500023,31.51279296875],[25.89326171875001,31.620898437499996],[27.248046875,31.377880859374997],[27.5400390625,31.212695312499996],[28.51484375000001,31.050439453124994],[29.072070312500017,30.830273437499997],[29.929785156250006,31.227490234374997],[30.22265625,31.2583984375],[30.395117187500006,31.4576171875],[30.92353515625001,31.566845703124997],[30.56298828125,31.4169921875],[31.001757812500017,31.462792968749994],[31.082910156250023,31.603320312499996],[31.5244140625,31.458251953125],[31.888964843750017,31.54140625],[32.13603515625002,31.341064453125],[31.8921875,31.482470703124996],[31.77109375,31.292578125],[32.10175781250001,31.092822265624996],[32.281835937500006,31.200878906249997],[32.21621093750002,31.29375],[32.60332031250002,31.06875],[33.66650390625,31.130419921874996],[34.19814453125002,31.322607421875],[34.24531250000001,31.208300781249996]]]},"properties":{"name":"Egypt","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[40.141210937500006,15.696142578125034],[40.399023437500006,15.579882812500045],[39.975195312500006,15.612451171875023],[39.94746093750004,15.696142578125034],[40.07050781250004,15.676611328125034],[39.93994140625003,15.744531250000023],[39.9567382812501,15.889404296875057],[40.141210937500006,15.696142578125034]]],[[[40.07646484375002,16.082421875000023],[40.11005859375004,15.985742187500051],[39.99609375000003,16.04267578125001],[40.07646484375002,16.082421875000023]]],[[[40.938574218750006,13.983105468749997],[40.82011718750002,14.111669921874991],[40.22148437500002,14.431152343749972],[39.531835937500006,14.53671875],[39.198046875000074,14.479394531250037],[39.1354492187501,14.581884765625034],[39.07421874999997,14.628222656249974],[39.02382812499999,14.628222656249974],[38.99570312500006,14.586865234374983],[38.81201171875003,14.482324218750009],[38.50439453124997,14.42441406250002],[38.43144531250002,14.428613281249994],[38.221484375000074,14.649658203124986],[38.002539062500006,14.737109375000045],[37.94345703125006,14.810546875],[37.884179687499994,14.852294921874972],[37.82031250000003,14.708496093749986],[37.70839843750005,14.45722656250004],[37.64843750000003,14.32255859375006],[37.571191406249994,14.149072265624966],[37.546777343749994,14.143847656249974],[37.507226562499994,14.156396484375037],[37.257226562499994,14.453759765625051],[37.024511718750006,14.271972656250057],[36.81191406250005,14.315039062500034],[36.67910156250005,14.307568359375026],[36.542382812499994,14.25820312499999],[36.52431640625005,14.256835937499986],[36.492285156250006,14.544335937500023],[36.470800781250006,14.736474609375009],[36.448144531249994,14.940087890625009],[36.42675781249997,15.132080078125043],[36.566015625,15.362109375],[36.9137695312501,16.296191406250045],[36.887792968750006,16.624658203124994],[36.9787109375001,16.800585937500045],[36.9757812500001,16.866552734375006],[36.99521484375006,17.020556640625017],[37.00898437500004,17.058886718750017],[37.06152343749997,17.061279296875057],[37.16953125000006,17.04140625],[37.41103515625005,17.061718749999955],[37.452929687500074,17.108691406250017],[37.51015625,17.28813476562499],[37.54746093750006,17.32412109375005],[37.78242187500004,17.458007812500057],[38.253515625,17.584765625000017],[38.26728515625004,17.616699218750057],[38.28984375000002,17.637011718750017],[38.34736328125004,17.68359375],[38.37373046875004,17.717333984375045],[38.42246093750006,17.823925781249983],[38.60947265625006,18.00507812500004],[39.03447265625002,17.085546875000034],[39.298925781250006,15.921093750000011],[39.78554687499999,15.124853515624991],[39.86376953124997,15.470312500000034],[40.20410156250003,15.014111328124983],[41.17646484375004,14.620312500000054],[41.65820312499997,13.983056640624994],[42.24511718749997,13.587646484374986],[42.39931640625005,13.212597656249969],[42.522851562499994,13.221484375],[42.796191406250074,12.864257812500057],[42.96953125000002,12.808349609375028],[42.99902343750003,12.899511718750048],[43.08291015625005,12.824609374999966],[43.11669921874997,12.708593749999963],[43.00566406250002,12.66230468750004],[42.88330078124997,12.621289062500026],[42.86591796875004,12.622802734374986],[42.82529296875006,12.569335937500014],[42.767480468749994,12.422851562500014],[42.70371093750006,12.380322265625054],[42.479394531249994,12.513623046875026],[42.45,12.521337890625006],[42.40859375,12.494384765625014],[42.37851562500006,12.46640625],[42.28994140625005,12.570214843750009],[42.225,12.661962890624963],[42.13427734374997,12.771435546874969],[41.95214843749997,12.88232421875],[41.85957031250004,13.025878906250028],[41.76503906250005,13.183935546874991],[41.362890625,13.499804687500031],[40.938574218750006,13.983105468749997]]]]},"properties":{"name":"Eritrea","childNum":3}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-17.887939453125,27.809570312500057],[-17.984765625000023,27.646386718750023],[-18.160546874999937,27.76147460937503],[-17.887939453125,27.809570312500057]]],[[[-15.400585937499955,28.147363281250023],[-15.436767578124972,27.810693359375023],[-15.71030273437492,27.784082031250023],[-15.809472656249966,27.994482421874977],[-15.682763671874994,28.15405273437497],[-15.400585937499955,28.147363281250023]]],[[[-17.184667968749977,28.02197265624997],[-17.324902343749955,28.11767578125003],[-17.25859375,28.203173828125045],[-17.103759765624943,28.111132812500017],[-17.184667968749977,28.02197265624997]]],[[[-16.33447265624997,28.37993164062499],[-16.41821289062497,28.15141601562496],[-16.65800781249999,28.007177734374977],[-16.905322265625017,28.33959960937503],[-16.12363281249992,28.57597656249996],[-16.33447265624997,28.37993164062499]]],[[[-14.196777343749943,28.169287109375063],[-14.332617187500006,28.056005859374977],[-14.49179687499992,28.100927734374977],[-14.231982421875017,28.21582031250003],[-14.003369140624983,28.706689453125023],[-13.85722656249996,28.73803710937503],[-13.928027343749989,28.25346679687499],[-14.196777343749943,28.169287109375063]]],[[[-17.83427734374999,28.49321289062496],[-18.00078124999999,28.758251953124955],[-17.928808593749977,28.844580078125063],[-17.7265625,28.724462890625006],[-17.83427734374999,28.49321289062496]]],[[[-13.715966796874966,28.911230468750034],[-13.85991210937496,28.869091796874983],[-13.823632812499966,29.013330078124966],[-13.463574218749955,29.237207031250023],[-13.477929687499966,29.00659179687503],[-13.715966796874966,28.911230468750034]]],[[[1.593945312500068,38.672070312499955],[1.40576171875,38.670996093750006],[1.436328125000017,38.768212890624994],[1.593945312500068,38.672070312499955]]],[[[1.445214843750051,38.91870117187503],[1.223339843750068,38.90385742187502],[1.3486328125,39.080810546875],[1.564453125,39.12104492187504],[1.623632812499977,39.03881835937497],[1.445214843750051,38.91870117187503]]],[[[3.145312500000017,39.79008789062499],[3.461816406250023,39.69775390625003],[3.072851562500006,39.30126953124997],[2.799804687500057,39.38505859374999],[2.700585937500023,39.54213867187502],[2.49951171875,39.47788085937498],[2.37001953125008,39.57207031249999],[3.15869140625,39.97050781249999],[3.145312500000017,39.79008789062499]]],[[[4.293652343750011,39.84184570312499],[3.8671875,39.958740234375],[3.853417968750051,40.06303710937502],[4.22578125000004,40.032373046874966],[4.293652343750011,39.84184570312499]]],[[[-1.794042968749949,43.407324218750006],[-1.410693359374932,43.240087890625034],[-1.460839843749937,43.05175781250006],[-1.300048828124943,43.10097656250002],[-0.586425781249943,42.798974609374966],[0.631640625000045,42.689599609374994],[0.696875,42.84511718750005],[1.428320312499977,42.59589843749998],[1.414843750000074,42.54838867187499],[1.448828124999977,42.43745117187504],[1.534082031250051,42.44169921875002],[1.7060546875,42.50332031250005],[1.859765625000051,42.457080078125045],[1.927929687500068,42.42631835937499],[2.032714843750028,42.353515625],[3.21142578125,42.43115234375],[3.248046875,41.94423828125002],[3.0048828125,41.76743164062506],[2.082617187500063,41.287402343750045],[1.032910156250068,41.06206054687496],[0.714648437500074,40.822851562500006],[0.891113281250057,40.72236328125004],[0.59609375000008,40.614501953125],[-0.327001953124949,39.519873046875006],[-0.204931640624949,39.062597656250034],[0.20156250000008,38.75917968750002],[-0.520800781249989,38.317285156249966],[-0.814648437500011,37.76992187500002],[-0.721582031249966,37.63105468749998],[-1.327539062499937,37.561132812500034],[-1.640966796874949,37.38696289062497],[-2.111523437499983,36.77666015624999],[-4.366845703124994,36.71811523437506],[-4.67412109374996,36.506445312500006],[-5.171484374999949,36.423779296874955],[-5.3609375,36.134912109374994],[-5.62548828125,36.02592773437499],[-6.040673828124937,36.18842773437498],[-6.38413085937492,36.63701171874996],[-6.216796875000028,36.91357421875],[-6.396191406249983,36.831640625],[-6.863769531250028,37.27890625],[-7.406152343749937,37.17944335937497],[-7.44394531249992,37.72827148437497],[-6.957568359374932,38.18789062499999],[-7.106396484374983,38.181005859375006],[-7.343017578124943,38.45742187500002],[-6.997949218749994,39.05644531250002],[-7.53569335937496,39.66157226562501],[-7.117675781249972,39.681689453125045],[-6.975390624999932,39.79838867187502],[-6.896093749999949,40.02182617187506],[-7.032617187499966,40.16791992187498],[-6.8101562499999,40.343115234375034],[-6.928466796874972,41.009130859375006],[-6.2125,41.53203125],[-6.542187499999955,41.672509765624994],[-6.61826171874992,41.9423828125],[-7.147119140625023,41.98115234374998],[-7.40361328124996,41.833691406249955],[-8.152490234374937,41.81196289062498],[-8.266064453124983,42.13740234375001],[-8.777148437500017,41.941064453124994],[-8.887207031249943,42.105273437500045],[-8.690917968749943,42.274169921875],[-8.815820312499966,42.285253906250034],[-8.730029296874989,42.411718750000034],[-8.8115234375,42.64033203124998],[-9.033105468750023,42.593847656250006],[-8.927197265624926,42.79858398437497],[-9.235205078124977,42.97690429687498],[-9.178076171874977,43.17402343749998],[-8.248925781249937,43.43940429687498],[-8.256738281249937,43.57988281249999],[-8.004687499999932,43.69438476562496],[-7.503613281249983,43.73994140625001],[-7.060986328124955,43.55395507812503],[-5.846679687499943,43.645068359375045],[-4.52304687499992,43.41572265625004],[-3.604638671874966,43.51948242187504],[-3.045605468749926,43.37158203125],[-2.875048828125017,43.454443359375006],[-2.337109374999926,43.32802734375002],[-1.794042968749949,43.407324218750006]]]]},"properties":{"name":"Spain","childNum":12,"cp":[-2.9366964,40.3438963]}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[22.61738281250004,58.62124023437502],[23.323242187500057,58.45083007812502],[22.730273437500045,58.23066406250001],[22.371679687499977,58.217138671875006],[21.996875,57.93134765624998],[22.187695312500068,58.15434570312502],[21.88212890624999,58.262353515624994],[21.862304687500057,58.497167968750034],[22.61738281250004,58.62124023437502]]],[[[23.343554687500017,58.550341796875045],[23.10908203125004,58.65922851562502],[23.332812500000045,58.648583984374994],[23.343554687500017,58.550341796875045]]],[[[22.923730468750023,58.826904296875],[22.54218750000001,58.68999023437499],[22.411035156250023,58.863378906250034],[22.05625,58.94360351562506],[22.6494140625,59.08710937499998],[22.90986328125004,58.99121093749997],[22.923730468750023,58.826904296875]]],[[[28.0125,59.484277343749966],[28.15107421875004,59.374414062499966],[27.434179687500006,58.787255859374994],[27.502441406250057,58.221337890624994],[27.778515625000068,57.87070312500006],[27.542089843750063,57.799414062500006],[27.4,57.66679687499999],[27.35195312500005,57.528125],[26.96601562500001,57.60913085937506],[26.532617187499994,57.53100585937503],[26.29804687500001,57.60107421875],[25.66015625,57.920166015625],[25.27265625000001,58.009375],[25.11103515625004,58.06342773437498],[24.45888671875005,57.907861328124994],[24.3625,57.86616210937501],[24.322558593750074,57.87060546875003],[24.529101562500045,58.35424804687497],[24.114843750000034,58.26611328125006],[23.767578125000057,58.36083984374997],[23.50927734375003,58.65854492187498],[23.680761718750063,58.787158203125074],[23.43203125,58.920654296875],[23.494433593750017,59.19565429687498],[24.083398437500023,59.29189453125005],[24.38037109375003,59.47265625],[25.44375,59.52114257812502],[25.50927734374997,59.63901367187506],[26.974707031250006,59.450634765624955],[28.0125,59.484277343749966]]]]},"properties":{"name":"Estonia","childNum":4}},{"geometry":{"type":"Polygon","coordinates":[[[38.43144531250002,14.428613281249994],[38.50439453125,14.424414062499991],[38.81201171875,14.482324218749994],[38.995703125,14.586865234374997],[39.02382812500002,14.628222656250003],[39.07421875,14.628222656250003],[39.13544921875001,14.581884765624991],[39.19804687500002,14.479394531249994],[39.531835937500006,14.53671875],[40.22148437500002,14.43115234375],[40.82011718750002,14.111669921874991],[40.938574218750006,13.983105468749997],[41.362890625,13.499804687500003],[41.76503906250002,13.183935546874991],[41.85957031250001,13.02587890625],[41.9521484375,12.88232421875],[42.13427734375,12.771435546874997],[42.225,12.661962890624991],[42.28994140625002,12.570214843749994],[42.378515625,12.46640625],[41.79267578125001,11.68603515625],[41.79824218750002,10.98046875],[42.557714843750006,11.080761718749997],[42.92275390625002,10.999316406249989],[42.65644531250001,10.6],[42.84160156250002,10.203076171874997],[43.181640625,9.879980468749991],[43.482519531250006,9.379492187499991],[43.98378906250002,9.008837890624989],[46.97822265625001,7.9970703125],[47.97822265625001,7.9970703125],[44.940527343750006,4.912011718749994],[43.988867187500006,4.950537109374991],[43.58349609375,4.85498046875],[43.12568359375001,4.644482421874997],[42.85664062500001,4.32421875],[42.02412109375001,4.137939453125],[41.91533203125002,4.031298828124989],[41.88398437500001,3.977734375],[41.73769531250002,3.979052734374989],[41.48193359375,3.96328125],[41.37246093750002,3.946191406249994],[41.22089843750001,3.943554687499997],[41.02080078125002,4.057470703124991],[40.765234375,4.27304687499999],[39.84218750000002,3.851464843749994],[39.79033203125002,3.754248046874991],[39.65751953125002,3.577832031249997],[39.49443359375002,3.456103515624989],[38.608007812500006,3.60009765625],[38.45156250000002,3.604833984374991],[38.22529296875001,3.618994140624991],[38.08613281250001,3.64882812499999],[37.15458984375002,4.254541015624994],[36.90556640625002,4.411474609374991],[36.02197265625,4.468115234374991],[35.76308593750002,4.808007812499994],[35.75615234375002,4.950488281249989],[35.779296875,5.105566406249991],[35.80029296875,5.156933593749997],[35.74501953125002,5.343994140625],[35.325292968750006,5.364892578124994],[35.2646484375,5.412060546874997],[35.26386718750001,5.457910156249994],[35.26835937500002,5.492285156249991],[34.98359375000001,5.858300781249994],[34.71064453125001,6.660302734374994],[34.06425781250002,7.225732421874994],[33.902441406250006,7.509521484375],[32.99892578125002,7.899511718749991],[33.28105468750002,8.437255859375],[33.95332031250001,8.443505859374994],[34.07275390625,8.545263671874991],[34.078125,9.461523437499991],[34.31123046875001,10.190869140624997],[34.34394531250001,10.658642578124997],[34.571875,10.880175781249989],[34.77128906250002,10.746191406249991],[34.93144531250002,10.864794921874989],[35.1123046875,11.816552734374994],[35.67021484375002,12.623730468749997],[36.12519531250001,12.75703125],[36.52431640625002,14.2568359375],[36.54238281250002,14.25820312499999],[36.67910156250002,14.307568359374997],[36.81191406250002,14.315039062499991],[37.024511718750006,14.27197265625],[37.25722656250002,14.453759765624994],[37.50722656250002,14.156396484374994],[37.54677734375002,14.143847656250003],[37.57119140625002,14.149072265624994],[37.6484375,14.322558593750003],[37.70839843750002,14.457226562499997],[37.8203125,14.70849609375],[37.88417968750002,14.852294921875],[37.943457031250006,14.810546875],[38.002539062500006,14.737109375],[38.22148437500002,14.649658203125],[38.43144531250002,14.428613281249994]]]},"properties":{"name":"Ethiopia","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[22.17509765624999,60.370751953124994],[22.41552734375003,60.30336914062505],[22.36054687500004,60.165576171875045],[22.07714843750003,60.286328124999955],[22.17509765624999,60.370751953124994]]],[[[21.450878906250068,60.529589843750045],[21.3,60.47978515625002],[21.224707031250006,60.62060546875003],[21.450878906250068,60.529589843750045]]],[[[21.2177734375,63.241308593750034],[21.415625,63.19736328125006],[21.25341796875,63.152001953124966],[21.08388671875008,63.277539062499955],[21.2177734375,63.241308593750034]]],[[[24.848242187500034,64.99101562499999],[24.576562500000023,65.04287109375],[24.970605468750023,65.05532226562502],[24.848242187500034,64.99101562499999]]],[[[28.96582031250003,69.02197265625],[28.414062500000057,68.90415039062506],[28.77285156250005,68.84003906249995],[28.470703125000057,68.48837890625],[28.685156250000034,68.189794921875],[29.343847656250006,68.06186523437506],[29.988085937500017,67.66826171874999],[29.066210937500045,66.89174804687497],[30.102734375000097,65.72626953125004],[29.715917968750063,65.62456054687502],[29.608007812500006,65.248681640625],[29.826953125000017,65.14506835937502],[29.60419921875004,64.968408203125],[30.072851562500063,64.76503906250005],[30.04189453125005,64.44335937499997],[30.513769531250006,64.2],[30.50390625000003,64.02060546875],[29.991503906250074,63.73515625000002],[31.180859375000097,63.208300781250074],[31.533984375000017,62.885400390624994],[31.18671875000004,62.48139648437504],[29.69013671875004,61.54609375000001],[27.797656250000074,60.53613281250003],[26.53466796874997,60.412890625000074],[26.56933593750003,60.62456054687502],[26.377734375000074,60.42407226562503],[25.955957031250023,60.474218750000034],[26.03583984375004,60.34150390625001],[25.75800781250004,60.26752929687504],[25.65644531250004,60.33320312499998],[24.44560546874999,60.021289062500045],[23.46357421875004,59.986230468749994],[23.021289062500074,59.81601562500006],[23.19843750000001,60.02182617187498],[22.911718750000063,60.20971679687497],[22.749804687500017,60.057275390624994],[22.462695312500045,60.029199218749966],[22.5849609375,60.380566406249955],[21.436035156250057,60.596386718749955],[21.605957031250057,61.59155273437503],[21.255957031250063,61.98964843750005],[21.143847656250045,62.73999023437506],[21.650976562500063,63.039306640625],[21.545117187499983,63.204296874999955],[22.31972656250005,63.310449218749994],[22.532324218750034,63.647851562499994],[23.598925781250074,64.04091796874997],[24.557910156250045,64.801025390625],[25.288183593750063,64.8603515625],[25.34785156250004,65.47924804687497],[24.674902343750006,65.67070312499999],[24.628027343750034,65.85917968750002],[24.15546875000004,65.80527343750006],[23.700292968750034,66.25263671874998],[23.988574218750045,66.81054687500003],[23.64150390625005,67.12939453124997],[23.733593750000068,67.42290039062499],[23.454882812500045,67.46025390625007],[23.63886718750004,67.95439453125002],[22.854101562500034,68.36733398437502],[21.99746093750005,68.52060546874998],[20.622167968750006,69.036865234375],[21.065722656250017,69.04174804687503],[21.06611328125001,69.21411132812497],[21.59375,69.273583984375],[22.410937500000074,68.719873046875],[23.324023437500017,68.64897460937502],[23.85400390625,68.80590820312503],[24.94140625000003,68.59326171875006],[25.748339843750017,68.99013671875],[26.07246093750004,69.69155273437497],[26.525390625000057,69.91503906250003],[27.127539062500063,69.90649414062497],[27.747851562500045,70.06484375],[29.14160156250003,69.67143554687505],[29.33339843750005,69.47299804687503],[28.846289062500006,69.17690429687502],[28.96582031250003,69.02197265625]]]]},"properties":{"name":"Finland","childNum":5}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[178.48789062500018,-18.97412109375],[177.95869140624998,-19.121582031250014],[178.33427734375013,-18.93447265625001],[178.48789062500018,-18.97412109375]]],[[[179.34931640625015,-18.10234375000003],[179.25351562500018,-18.030566406249974],[179.30644531250013,-17.944042968750026],[179.34931640625015,-18.10234375000003]]],[[[178.28017578124994,-17.37197265625001],[178.59160156249996,-17.651464843750006],[178.66767578125004,-18.080859375],[177.95546875000005,-18.264062500000023],[177.32138671875,-18.077539062500037],[177.26396484375007,-17.86347656250004],[177.5044921875,-17.539550781250043],[177.81796875000012,-17.38847656249999],[178.28017578124994,-17.37197265625001]]],[[[180,-16.96308593750001],[179.89697265625003,-16.96406250000004],[180,-16.785742187500034],[180,-16.96308593750001]]],[[[-179.97490234374996,-16.92480468750003],[-180,-16.96298828124999],[-180,-16.907812500000034],[-180,-16.82431640624999],[-180,-16.78554687499999],[-179.86098632812502,-16.68828124999999],[-179.97490234374996,-16.92480468750003]]],[[[-179.92944335937503,-16.502832031250037],[-179.999951171875,-16.540039062499986],[-179.900927734375,-16.431542968749994],[-179.92944335937503,-16.502832031250037]]],[[[179.99921875000004,-16.168554687499977],[179.56416015625004,-16.636914062499997],[179.56816406249996,-16.747460937499966],[179.93037109375004,-16.51943359375005],[179.9279296875001,-16.74443359374996],[179.41933593750005,-16.80654296875001],[179.20234375000004,-16.71269531249999],[179.00683593750003,-16.90019531249999],[178.70664062500018,-16.97617187500002],[178.4974609375,-16.78789062500003],[178.58359375000012,-16.621875],[178.80507812499994,-16.631445312500034],[179.55175781250003,-16.249902343750023],[180,-16.15292968749999],[179.99921875000004,-16.168554687499977]]]]},"properties":{"name":"Fiji","childNum":7}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-61.01875,-51.7857421875],[-60.87597656250003,-51.79423828125004],[-60.94755859374996,-51.94628906250002],[-61.14501953125003,-51.83945312500001],[-61.01875,-51.7857421875]]],[[[-60.28623046874995,-51.461914062500014],[-59.38759765625002,-51.35996093750003],[-59.26806640625,-51.42753906250003],[-59.92138671874997,-51.969531250000045],[-60.246337890625,-51.98642578125003],[-60.35346679687498,-52.13994140625004],[-60.686376953125034,-52.18837890624996],[-60.96142578125003,-52.05732421874999],[-60.23847656249998,-51.771972656250036],[-60.58251953125,-51.71269531250004],[-60.24516601562493,-51.638867187500004],[-60.56845703124998,-51.357812499999945],[-60.28623046874995,-51.461914062500014]]],[[[-60.11171875000002,-51.39589843749998],[-60.275341796874955,-51.28056640625002],[-60.06982421875,-51.307910156249996],[-60.11171875000002,-51.39589843749998]]],[[[-58.85019531249995,-51.26992187499998],[-58.42583007812502,-51.32421875000003],[-58.508935546874994,-51.48359375],[-58.271582031250034,-51.57470703124999],[-58.25922851562501,-51.417089843750034],[-57.976513671874955,-51.384375],[-57.80849609375002,-51.51796875],[-57.96044921874997,-51.58320312500003],[-57.79179687499999,-51.63613281249998],[-58.68349609375002,-51.93623046875001],[-58.65278320312498,-52.09921875],[-59.19584960937496,-52.01767578125],[-59.06801757812502,-52.17304687500003],[-59.341503906249955,-52.19599609375],[-59.395654296874966,-52.308007812499994],[-59.64873046875002,-52.134375],[-59.57080078124994,-51.92539062500003],[-59.05952148437498,-51.685449218749994],[-59.09663085937498,-51.49140624999998],[-58.85019531249995,-51.26992187499998]]]]},"properties":{"name":"Falkland Is.","childNum":4}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[55.79736328125003,-21.33935546875003],[55.36269531250005,-21.27363281250004],[55.23281250000005,-21.05839843749999],[55.311328125000074,-20.90410156249999],[55.661914062500074,-20.90625],[55.8390625000001,-21.13857421874998],[55.79736328125003,-21.33935546875003]]],[[[45.180273437500006,-12.97675781250004],[45.069433593750006,-12.895605468750034],[45.09238281250006,-12.653027343749997],[45.22314453124997,-12.752148437500026],[45.180273437500006,-12.97675781250004]]],[[[-51.65253906249998,4.061279296874972],[-52.327880859375,3.18173828125002],[-52.58300781250003,2.528906249999977],[-52.90346679687502,2.211523437499977],[-53.76777343749998,2.354833984375048],[-54.13007812499998,2.121044921875026],[-54.43310546875,2.207519531250057],[-54.51508789062498,2.245458984374963],[-54.55048828125001,2.293066406249991],[-54.59194335937502,2.313769531250031],[-54.61625976562499,2.326757812500006],[-54.60473632812497,2.335791015624991],[-54.56840820312502,2.342578125000031],[-54.53593749999999,2.343310546875003],[-54.48554687500001,2.416113281250006],[-54.402001953124966,2.46152343750002],[-54.25673828125002,2.713720703124977],[-54.19550781249998,2.817871093750057],[-54.17070312499999,2.993603515624969],[-54.203125,3.138183593750028],[-54.18803710937499,3.178759765625031],[-54.063183593749955,3.353320312499989],[-54.00957031249993,3.448535156250017],[-54.03422851562499,3.62939453125],[-54.350732421874994,4.054101562500023],[-54.47968749999998,4.836523437499991],[-53.91992187499997,5.768994140624983],[-52.899316406249966,5.425048828124986],[-52.29052734375003,4.942187500000031],[-52.324609374999966,4.770898437500037],[-52.21997070312494,4.862792968750014],[-52.05810546875003,4.717382812499963],[-52.00292968749997,4.352294921875014],[-51.82753906250002,4.635693359375026],[-51.65253906249998,4.061279296874972]]],[[[-60.826269531250006,14.494482421874991],[-61.063720703125,14.467089843750017],[-61.01132812499998,14.601904296875034],[-61.21333007812501,14.848583984375011],[-60.927148437499966,14.755175781249989],[-60.826269531250006,14.494482421874991]]],[[[-61.23046875000003,15.889941406250074],[-61.310742187499955,15.894677734374966],[-61.25,16.006298828124983],[-61.23046875000003,15.889941406250074]]],[[[-61.58955078125001,16.006933593750006],[-61.759423828124966,16.062060546875045],[-61.74804687499997,16.355273437500017],[-61.55234374999998,16.270898437499966],[-61.58955078125001,16.006933593750006]]],[[[-61.3271484375,16.230419921874983],[-61.522167968749955,16.22802734375003],[-61.47119140624994,16.506640625000045],[-61.17260742187497,16.25610351562497],[-61.3271484375,16.230419921874983]]],[[[9.480371093750023,42.80541992187503],[9.550683593750051,42.12973632812506],[9.186132812500034,41.38491210937502],[8.80751953125008,41.58837890625],[8.886816406249977,41.70068359375003],[8.621875,41.93071289062502],[8.700976562500045,42.09560546875002],[8.565625,42.35771484374996],[8.81484375000008,42.60791015625003],[9.313378906250023,42.71318359374999],[9.363183593750051,43.01738281249996],[9.480371093750023,42.80541992187503]]],[[[-1.17832031249992,45.904052734375],[-1.213574218750011,45.81660156250004],[-1.388671874999972,46.05039062500006],[-1.17832031249992,45.904052734375]]],[[[5.789746093749983,49.53828125000001],[5.823437500000011,49.50507812499998],[5.9013671875,49.48974609374997],[5.928906250000011,49.47753906249997],[5.959472656250028,49.45463867187502],[6.01142578125004,49.44545898437502],[6.074121093750023,49.45463867187502],[6.119921875000017,49.485205078125034],[6.181054687500051,49.498925781249966],[6.344335937500006,49.45273437499998],[6.735449218750006,49.16059570312498],[7.450585937500051,49.152197265625034],[8.134863281250006,48.97358398437498],[7.616601562500023,48.15678710937502],[7.615625,47.59272460937504],[7.343164062499994,47.43310546875003],[7.136035156249989,47.489843750000034],[6.968359375000034,47.453222656250034],[6.900390625000028,47.39423828125001],[7.000585937500034,47.339453125000034],[7.000585937500034,47.32250976562506],[6.978515625000057,47.30205078124996],[6.95205078125008,47.26718750000006],[6.820703125000051,47.163183593750006],[6.688085937500034,47.05825195312505],[6.66689453125008,47.026513671874966],[6.624804687500017,47.00434570312498],[6.45625,46.948339843750034],[6.438646763392874,46.774418247767855],[6.129687500000045,46.56699218750006],[6.118111049107182,46.447459542410726],[6.095898437500011,46.279394531250006],[5.970019531250045,46.214697265625034],[5.971484375000074,46.151220703125006],[6.006640625000045,46.14233398437506],[6.086621093750068,46.14702148437502],[6.19941406250004,46.19306640624998],[6.234667968750045,46.332617187500006],[6.321875,46.39370117187502],[6.428906250000011,46.43051757812506],[6.578222656250034,46.437353515625034],[6.758105468750017,46.41577148437497],[6.772070312500006,46.16513671874998],[6.897265625000017,46.05175781249997],[6.953710937500063,46.017138671875045],[7.00390625,45.95883789062506],[7.021093750000034,45.92578124999997],[6.790917968750023,45.740869140624966],[7.146386718750051,45.381738281249994],[7.07832031250004,45.23994140624998],[6.634765625000028,45.06816406249996],[6.99267578125,44.82729492187502],[6.900195312499989,44.33574218749996],[7.318554687500068,44.13798828125002],[7.637207031250057,44.16484375],[7.4931640625,43.767138671875045],[6.570214843750023,43.199072265625034],[6.115917968750011,43.07236328124998],[5.406542968750074,43.228515625],[5.05976562500004,43.44453125000004],[4.712109375000011,43.373291015625],[3.910839843750011,43.563085937500034],[3.258886718750063,43.193212890625006],[3.051757812500057,42.915136718750006],[3.21142578125,42.43115234375],[2.032714843750028,42.353515625],[1.927929687500068,42.42631835937499],[1.859765625000051,42.457080078125045],[1.7060546875,42.50332031250005],[1.709863281250051,42.604443359374955],[1.568164062500045,42.63500976562506],[1.501367187500023,42.64272460937502],[1.428320312499977,42.59589843749998],[0.696875,42.84511718750005],[0.631640625000045,42.689599609374994],[-0.586425781249943,42.798974609374966],[-1.300048828124943,43.10097656250002],[-1.460839843749937,43.05175781250006],[-1.410693359374932,43.240087890625034],[-1.794042968749949,43.407324218750006],[-1.484863281249943,43.56376953124999],[-1.245507812499937,44.55986328124999],[-1.07695312499996,44.68984375],[-1.152880859374989,44.764013671875006],[-1.245214843749977,44.66669921874998],[-1.081005859374983,45.532421874999955],[-0.548486328124966,45.00058593750006],[-0.790771484375028,45.46801757812497],[-1.195996093749983,45.714453125],[-1.03173828125,45.741064453125006],[-1.14628906249996,46.311376953125034],[-1.786523437499937,46.51484375000001],[-2.059375,46.81030273437497],[-2.01889648437492,47.03764648437502],[-2.197070312499989,47.16293945312506],[-2.027587890625028,47.27358398437502],[-1.742529296874949,47.21596679687502],[-1.97539062499996,47.31069335937505],[-2.503125,47.31206054687496],[-2.427685546874983,47.47089843749998],[-2.770312499999989,47.513867187499955],[-2.787207031249949,47.62553710937496],[-4.312109374999949,47.82290039062502],[-4.678808593749949,48.03950195312501],[-4.32944335937492,48.169970703125045],[-4.577148437499943,48.2900390625],[-4.241406249999926,48.30366210937501],[-4.719384765624966,48.363134765625034],[-4.7625,48.45024414062502],[-4.531201171874983,48.61997070312506],[-3.231445312499972,48.84082031250003],[-2.692333984374983,48.53681640624998],[-2.446191406249937,48.64829101562506],[-2.00371093749996,48.58208007812499],[-1.905712890624955,48.69711914062506],[-1.376464843749972,48.65258789062503],[-1.565478515624932,48.805517578125034],[-1.583105468749977,49.20239257812506],[-1.856445312499972,49.68378906249998],[-1.258642578124949,49.68017578125006],[-1.138525390624977,49.38789062500001],[-0.163476562499937,49.296777343749994],[0.41689453125008,49.448388671874994],[0.129394531250028,49.508447265624966],[0.186718749999983,49.703027343749994],[1.245507812500051,49.99824218750001],[1.5927734375,50.25219726562506],[1.672265625000023,50.885009765625],[2.52490234375,51.097119140624955],[2.759375,50.750634765624994],[3.10683593750008,50.779443359374994],[3.27333984375008,50.53154296875002],[3.595410156250068,50.47734374999999],[3.689355468750023,50.30605468750002],[4.174609375000017,50.24648437500005],[4.149316406250023,49.971582031249994],[4.545019531250063,49.96025390624999],[4.818652343750045,50.153173828125034],[4.867578125000051,49.78813476562502],[5.50732421875,49.51088867187502],[5.789746093749983,49.53828125000001]]]]},"properties":{"name":"France","childNum":10,"cp":[2.8719426,46.8222422]}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-7.186865234374949,62.139306640624966],[-7.116796874999977,62.046826171874955],[-7.379101562499926,62.07480468749998],[-7.186865234374949,62.139306640624966]]],[[[-6.631054687499955,62.22788085937498],[-6.655810546874932,62.09360351562498],[-6.840527343749983,62.119287109374994],[-6.725195312499949,61.95146484374999],[-7.17216796874996,62.28559570312501],[-6.631054687499955,62.22788085937498]]],[[[-6.406054687499932,62.258642578125034],[-6.544140624999926,62.20561523437499],[-6.554589843749994,62.35566406250001],[-6.406054687499932,62.258642578125034]]]]},"properties":{"name":"Faeroe Is.","childNum":3}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[158.31484375,6.813671875],[158.18339843750002,6.801269531250057],[158.13476562499997,6.944824218749986],[158.29462890625004,6.951074218750023],[158.31484375,6.813671875]]],[[[138.14267578125006,9.50068359375004],[138.06708984375004,9.419042968750006],[138.18583984375007,9.593310546874989],[138.14267578125006,9.50068359375004]]]]},"properties":{"name":"Micronesia","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[13.293554687500006,2.161572265624997],[13.172167968750017,1.78857421875],[13.21630859375,1.2484375],[13.851367187500017,1.41875],[14.180859375000011,1.370214843749991],[14.429882812500011,0.901464843749991],[14.32421875,0.62421875],[13.949609375000023,0.353808593749989],[13.860058593750011,-0.203320312500011],[14.47412109375,-0.573437500000011],[14.383984375000011,-1.890039062500009],[14.162890625000017,-2.217578125],[14.199804687500006,-2.354199218750011],[13.993847656250011,-2.490625],[13.886914062500011,-2.465429687500006],[13.733789062500023,-2.138476562500003],[13.464941406250006,-2.395410156250009],[12.991992187500017,-2.313378906250009],[12.793554687500006,-1.931835937500011],[12.590429687500006,-1.826855468750011],[12.43212890625,-1.928906250000011],[12.446386718750006,-2.329980468750009],[12.064453125,-2.41259765625],[11.60546875,-2.342578125],[11.537792968750011,-2.83671875],[11.760156250000023,-2.983105468750011],[11.715429687500006,-3.176953125000011],[11.934179687500006,-3.318554687500011],[11.8798828125,-3.665917968750009],[11.685742187500011,-3.68203125],[11.504296875000023,-3.5203125],[11.234472656250006,-3.690820312500009],[11.130175781250017,-3.916308593750003],[10.34765625,-3.013085937500009],[9.722070312500023,-2.467578125],[10.06201171875,-2.549902343750006],[9.624609375,-2.367089843750009],[9.298925781250006,-1.903027343750011],[9.483203125000017,-1.894628906250006],[9.265625,-1.825097656250009],[9.036328125000011,-1.308886718750003],[9.31884765625,-1.632031250000011],[9.501074218750006,-1.55517578125],[9.295800781250023,-1.515234375],[9.3466796875,-1.325],[9.203808593750011,-1.382421875],[9.064648437500011,-1.29833984375],[8.703125,-0.591015625000011],[8.946386718750006,-0.688769531250003],[9.296679687500017,-0.351269531250011],[9.354882812500023,0.343603515624991],[9.468164062500023,0.15976562499999],[9.796777343750023,0.044238281249989],[10.00146484375,0.194970703124994],[9.546484375,0.295947265624989],[9.324804687500006,0.552099609374991],[9.495312500000011,0.664843749999989],[9.617968750000017,0.576513671874991],[9.5908203125,1.031982421875],[9.636132812500023,1.046679687499989],[9.676464843750011,1.07470703125],[9.70458984375,1.079980468749994],[9.760546875000017,1.07470703125],[9.788671875,1.025683593749989],[9.803906250000011,0.998730468749997],[9.90673828125,0.960107421874994],[11.335351562500023,0.999707031249997],[11.332324218750017,1.528369140624989],[11.328710937500006,2.167431640624997],[11.348437500000017,2.299707031249994],[11.558984375000023,2.302197265624997],[13.2203125,2.256445312499991],[13.293554687500006,2.161572265624997]]]},"properties":{"name":"Gabon","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-1.065576171874966,50.69023437500002],[-1.25146484375,50.58881835937498],[-1.563427734374955,50.666113281250006],[-1.31279296874996,50.77348632812502],[-1.065576171874966,50.69023437500002]]],[[[-4.196777343749972,53.321435546874966],[-4.04936523437496,53.30576171874998],[-4.373046875,53.13417968750002],[-4.56787109375,53.386474609375],[-4.315087890625023,53.41723632812503],[-4.196777343749972,53.321435546874966]]],[[[-6.218017578125,54.08872070312506],[-6.649804687499937,54.05864257812496],[-7.007714843749937,54.40668945312501],[-7.324511718750017,54.13344726562502],[-7.606542968750006,54.14384765625002],[-8.118261718749977,54.41425781250004],[-7.75439453125,54.59492187499998],[-7.910595703124955,54.698339843750006],[-7.55039062499992,54.767968749999966],[-7.218652343749937,55.09199218749998],[-6.475048828124955,55.24101562499999],[-6.035791015624994,55.14453125000003],[-5.71684570312496,54.817480468750034],[-5.878613281249955,54.64130859375001],[-5.582519531249943,54.66342773437498],[-5.470410156249926,54.500195312499955],[-5.671093749999955,54.54975585937501],[-5.60678710937492,54.272558593750034],[-6.019042968749972,54.05126953124997],[-6.218017578125,54.08872070312506]]],[[[-5.105419921875011,55.448828125000034],[-5.331494140624955,55.481054687500034],[-5.318115234375,55.709179687499955],[-5.105419921875011,55.448828125000034]]],[[[-6.128906249999972,55.93056640625002],[-6.055322265624994,55.69531249999997],[-6.305078124999966,55.60693359375],[-6.286425781249989,55.77250976562499],[-6.491357421874994,55.697314453125045],[-6.462841796874955,55.808251953124994],[-6.128906249999972,55.93056640625002]]],[[[-5.970068359374949,55.814550781250034],[-6.071972656250011,55.893115234375045],[-5.72514648437496,56.118554687499966],[-5.970068359374949,55.814550781250034]]],[[[-5.77788085937496,56.344335937500034],[-6.313427734374983,56.29365234375001],[-6.138867187499955,56.490625],[-6.286328124999983,56.61186523437502],[-6.102734374999955,56.645654296874966],[-5.760839843749949,56.49067382812501],[-5.77788085937496,56.344335937500034]]],[[[-7.249853515624977,57.115332031250006],[-7.410546874999937,57.38110351562506],[-7.26713867187496,57.37177734375001],[-7.249853515624977,57.115332031250006]]],[[[-6.144726562499983,57.50498046874998],[-6.135546874999989,57.31425781250002],[-5.672460937499977,57.252685546875],[-5.94907226562492,57.045166015625],[-6.034375,57.20122070312499],[-6.322705078124926,57.20249023437498],[-6.761132812499994,57.4423828125],[-6.305957031249989,57.67197265624998],[-6.144726562499983,57.50498046874998]]],[[[-7.205566406250028,57.682958984375006],[-7.182617187499972,57.53330078125006],[-7.514746093749949,57.60195312500002],[-7.205566406250028,57.682958984375006]]],[[[-6.198681640624983,58.36328125000003],[-6.554589843749994,58.092871093750006],[-6.425195312499937,58.02128906249999],[-6.983105468749983,57.75],[-7.083447265624926,57.81376953124999],[-6.856835937499937,57.92353515624998],[-7.085253906249932,58.18217773437499],[-6.726464843749937,58.189404296874955],[-6.776464843750006,58.30151367187497],[-6.237451171874966,58.50283203125005],[-6.198681640624983,58.36328125000003]]],[[[-3.109667968749932,58.515478515625034],[-3.212353515624983,58.32124023437501],[-3.99003906249996,57.95903320312502],[-4.035595703124926,57.85200195312498],[-3.857128906249983,57.81855468750001],[-4.134521484375,57.57773437500006],[-3.402783203124955,57.708251953125],[-2.074072265624977,57.70239257812506],[-1.780664062499994,57.474023437499966],[-2.592675781249937,56.56157226562499],[-3.309960937499966,56.36347656250004],[-2.885156249999937,56.397509765625045],[-2.674267578124955,56.25341796875],[-3.362255859374955,56.02763671875002],[-3.789062499999972,56.09521484375],[-3.048730468749937,55.951953125000045],[-2.599316406249955,56.02729492187501],[-2.14707031249992,55.90297851562502],[-1.655371093749949,55.57036132812502],[-1.232421874999943,54.703710937500034],[-0.084375,54.118066406249994],[-0.20556640625,54.021728515625],[0.115332031250006,53.609277343749994],[-0.270019531249972,53.73676757812504],[-0.659912109375,53.72402343750002],[-0.293701171875,53.69233398437504],[0.270996093750028,53.33549804687499],[0.355761718750045,53.15996093750002],[0.0458984375,52.90561523437498],[0.279785156250028,52.80869140625006],[0.55878906250004,52.96694335937505],[1.05556640625008,52.95898437500003],[1.656738281249972,52.753710937500045],[1.74658203125,52.46899414062503],[1.59140625,52.11977539062502],[1.232421875000057,51.97124023437496],[1.188476562500057,51.803369140624966],[0.752246093750017,51.729589843750034],[0.890917968750017,51.571435546874966],[0.42451171875004,51.465625],[1.414941406250023,51.36328125],[1.397558593750034,51.18203125000002],[0.960156250000011,50.92587890624998],[0.299707031249994,50.775976562500006],[-0.785253906249949,50.76542968749999],[-1.416455078124955,50.896875],[-1.334472656249943,50.82080078124997],[-1.516748046874937,50.747460937499966],[-2.031054687499932,50.72539062499999],[-2.035839843749926,50.603076171875045],[-2.999414062499937,50.71660156249999],[-3.40458984374996,50.63242187499998],[-3.679785156250006,50.239941406249955],[-4.194580078124972,50.39331054687503],[-4.727978515624926,50.29047851562504],[-5.11850585937492,50.038330078125],[-5.622119140624932,50.05068359375002],[-4.188183593749926,51.18852539062502],[-3.135986328124972,51.20502929687501],[-2.433056640624926,51.74072265625],[-3.293115234374994,51.390429687500045],[-3.890771484374994,51.591650390625006],[-4.234570312499955,51.56909179687503],[-4.091015624999926,51.65991210937506],[-4.38627929687496,51.74106445312506],[-4.902294921874926,51.626269531250045],[-5.168359374999937,51.74072265625],[-5.183349609374972,51.94965820312501],[-4.217724609374983,52.277441406250006],[-3.980322265624949,52.54174804687503],[-4.101464843750023,52.915478515624955],[-4.683056640624926,52.80615234374997],[-4.268554687499943,53.14453125],[-3.427734374999972,53.34067382812498],[-3.097558593749937,53.260302734375045],[-3.064746093749932,53.426855468750034],[-2.74951171875,53.310205078124994],[-3.064599609374994,53.512841796874966],[-2.84648437499996,54.135302734375045],[-3.165966796874955,54.12792968750006],[-3.56938476562496,54.46757812499996],[-3.464599609374943,54.77309570312505],[-3.036230468749977,54.95307617187501],[-3.550439453124937,54.94741210937502],[-3.957910156249994,54.780957031249955],[-4.818066406249983,54.84614257812501],[-4.911230468749949,54.68945312500006],[-5.032324218749949,54.76137695312505],[-5.172705078124949,54.98588867187496],[-4.676757812499972,55.50131835937498],[-4.871679687499977,55.87392578125005],[-4.58408203124992,55.93867187500001],[-4.844091796874949,56.05117187499999],[-4.80029296875,56.158349609374994],[-5.228222656249983,55.886328125],[-5.084326171874977,56.197460937499955],[-5.41044921874996,55.995361328125],[-5.55644531249996,55.389599609374955],[-5.730664062499926,55.33413085937502],[-5.504492187499949,55.80239257812502],[-5.609570312499955,56.055273437500034],[-5.188378906249937,56.75805664062503],[-5.652441406249977,56.531982421875],[-6.133691406249966,56.706689453124966],[-5.730615234374994,56.853076171875045],[-5.86142578124992,56.902685546875006],[-5.561914062499994,57.23271484375002],[-5.794921874999972,57.37880859375002],[-5.581787109374972,57.546777343749966],[-5.744921874999989,57.668310546875034],[-5.608349609374955,57.88134765625],[-5.157226562499972,57.88134765625],[-5.413183593750006,58.06972656250002],[-5.338281250000023,58.23872070312498],[-5.008300781250028,58.262646484374955],[-5.016748046874966,58.566552734374966],[-4.433251953124937,58.51284179687505],[-3.25913085937492,58.65],[-3.053076171874949,58.63481445312502],[-3.109667968749932,58.515478515625034]]],[[[-3.057421874999932,59.02963867187498],[-2.793017578124989,58.906933593749955],[-3.331640624999949,58.97124023437499],[-3.31035156249996,59.13081054687498],[-3.057421874999932,59.02963867187498]]],[[[-1.30810546875,60.5375],[-1.052441406249955,60.44448242187502],[-1.299462890624994,59.87866210937503],[-1.290917968749937,60.153466796874966],[-1.663769531249983,60.282519531250074],[-1.374609374999949,60.33291015625002],[-1.571777343749972,60.494433593750074],[-1.363964843750011,60.60957031249998],[-1.30810546875,60.5375]]]]},"properties":{"name":"United Kingdom","childNum":14,"cp":[-2.5830348,54.4598409]}},{"geometry":{"type":"Polygon","coordinates":[[[46.30546875000002,41.507714843749994],[46.61894531250002,41.34375],[46.67255859375001,41.28681640625],[46.66240234375002,41.245507812499994],[46.62636718750002,41.15966796875],[46.534375,41.08857421875],[46.43095703125002,41.077050781249994],[46.086523437500006,41.183837890625],[45.28095703125001,41.449560546875],[45.21718750000002,41.423193359375],[45.00136718750002,41.290966796875],[44.97587890625002,41.277490234374994],[44.81132812500002,41.259375],[44.077246093750006,41.182519531249994],[43.43339843750002,41.155517578125],[43.20546875000002,41.199169921875],[43.15283203125,41.23642578125],[43.14101562500002,41.26484375],[43.17128906250002,41.287939453125],[43.149023437500006,41.30712890625],[43.05712890625,41.352832031249996],[42.90673828125,41.466845703124996],[42.82167968750002,41.4923828125],[42.78789062500002,41.563720703125],[42.75410156250001,41.57890625],[42.68242187500002,41.585742187499996],[42.60683593750002,41.57880859375],[42.590429687500006,41.57070312499999],[42.5673828125,41.55927734375],[42.46640625,41.43984375],[41.92578125,41.495654296874996],[41.82353515625002,41.432373046875],[41.779394531250006,41.44052734375],[41.701757812500006,41.471582031249994],[41.57656250000002,41.497314453125],[41.51005859375002,41.517480468749994],[41.701757812500006,41.705419921875],[41.76298828125002,41.970019531249996],[41.48876953125,42.659326171874994],[40.83662109375001,43.0634765625],[40.46210937500001,43.145703125],[39.97832031250002,43.419824218749994],[40.02373046875002,43.48486328125],[40.084570312500006,43.553125],[40.648046875,43.53388671875],[40.941992187500006,43.41806640625],[41.083105468750006,43.374462890625],[41.35820312500002,43.333398437499994],[41.46074218750002,43.276318359375],[41.58056640625,43.21923828125],[42.76064453125002,43.169580078124994],[42.99160156250002,43.09150390625],[43.00019531250001,43.049658203125],[43.08916015625002,42.9890625],[43.55781250000001,42.844482421875],[43.623046875,42.80771484375],[43.78261718750002,42.747021484375],[43.79873046875002,42.727783203125],[43.79541015625,42.702978515625],[43.74990234375002,42.657519531249996],[43.738378906250006,42.616992187499996],[43.759863281250006,42.59384765625],[43.82597656250002,42.571533203125],[43.95742187500002,42.566552734374994],[44.00468750000002,42.595605468749994],[44.10273437500001,42.616357421874994],[44.32949218750002,42.70351562499999],[44.505859375,42.7486328125],[44.77109375,42.616796875],[44.85048828125002,42.746826171875],[44.87099609375002,42.756396484374996],[44.943359375,42.730273437499996],[45.07158203125002,42.694140625],[45.160253906250006,42.675],[45.34375,42.52978515625],[45.56289062500002,42.5357421875],[45.70527343750001,42.498095703124996],[45.7275390625,42.475048828125],[45.63427734375,42.234716796875],[45.63857421875002,42.205078125],[46.21269531250002,41.989892578124994],[46.42988281250001,41.890966796875],[46.18427734375001,41.7021484375],[46.30546875000002,41.507714843749994]]]},"properties":{"name":"Georgia","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-0.068603515625,11.115625],[0.009423828125023,11.02099609375],[-0.08632812499999,10.673046875],[0.380859375,10.291845703124991],[0.264550781250023,9.644726562499997],[0.342578125000017,9.604150390624994],[0.2333984375,9.463525390624994],[0.525683593750017,9.398486328124989],[0.48876953125,8.851464843749994],[0.37255859375,8.75927734375],[0.686328125000017,8.354882812499994],[0.5,7.546875],[0.634765625,7.353662109374994],[0.525585937500011,6.850927734374991],[0.736914062500006,6.452587890624997],[1.187207031250011,6.089404296874989],[0.94970703125,5.810253906249997],[0.259667968750023,5.75732421875],[-2.001855468749994,4.762451171875],[-3.114013671875,5.088671874999989],[-2.815673828125,5.153027343749997],[-2.754980468749977,5.432519531249994],[-2.793652343749983,5.60009765625],[-2.998291015625,5.71132812499999],[-3.227148437499977,6.749121093749991],[-2.959082031249977,7.454541015624997],[-2.789746093749983,7.931933593749989],[-2.668847656249994,8.022216796875],[-2.613378906249977,8.046679687499989],[-2.600976562499994,8.082226562499997],[-2.619970703124977,8.12109375],[-2.61171875,8.147558593749991],[-2.538281249999983,8.171630859375],[-2.505859375,8.208740234375],[-2.600390624999989,8.800439453124994],[-2.649218749999989,8.956591796874989],[-2.689892578124983,9.025097656249997],[-2.746923828124977,9.045117187499997],[-2.705761718749983,9.351367187499989],[-2.695849609374989,9.481347656249994],[-2.706201171874994,9.533935546875],[-2.765966796874977,9.658056640624991],[-2.780517578125,9.745849609375],[-2.791162109374994,10.432421874999989],[-2.914892578124977,10.592333984374989],[-2.829931640624977,10.998388671874991],[-1.04248046875,11.010058593749989],[-0.627148437499983,10.927392578124994],[-0.299462890624994,11.166894531249994],[-0.068603515625,11.115625]]]},"properties":{"name":"Ghana","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-11.389404296875,12.404394531249991],[-11.502197265625,12.198632812499994],[-11.30517578125,12.015429687499989],[-10.933203124999977,12.205175781249991],[-10.709228515625,11.898730468749989],[-10.274853515624983,12.212646484375],[-9.754003906249977,12.029931640624994],[-9.358105468749983,12.255419921874989],[-9.395361328124977,12.464648437499989],[-9.043066406249977,12.40234375],[-8.818310546874983,11.922509765624994],[-8.822021484375,11.673242187499994],[-8.398535156249977,11.366552734374991],[-8.666699218749983,11.009472656249997],[-8.33740234375,10.990625],[-8.266650390624989,10.485986328124994],[-8.007275390624983,10.321875],[-7.990625,10.1625],[-8.155175781249994,9.973193359374989],[-8.136962890625,9.49570312499999],[-7.896191406249983,9.415869140624991],[-7.918066406249977,9.188525390624989],[-7.839404296874989,9.151611328125],[-7.7998046875,9.115039062499989],[-7.777978515624994,9.080859374999989],[-7.902099609375,9.01708984375],[-7.938183593749983,8.979785156249989],[-7.950976562499989,8.786816406249997],[-7.719580078124977,8.643017578124997],[-7.696093749999989,8.375585937499991],[-7.823583984374977,8.467675781249994],[-7.953125,8.477734375],[-8.236962890624994,8.455664062499991],[-8.244140625,8.407910156249997],[-8.256103515625,8.253710937499989],[-8.217138671874977,8.219677734374997],[-8.140625,8.181445312499989],[-8.048583984375,8.169726562499989],[-8.009863281249977,8.07851562499999],[-8.126855468749994,7.867724609374989],[-8.115429687499983,7.7607421875],[-8.205957031249994,7.59023437499999],[-8.231884765624983,7.556738281249991],[-8.429980468749989,7.601855468749989],[-8.486425781249977,7.558496093749994],[-8.659765624999977,7.688378906249994],[-8.8896484375,7.2626953125],[-9.11757812499999,7.215917968749991],[-9.463818359374983,7.415869140624991],[-9.369140625,7.703808593749997],[-9.518261718749983,8.34609375],[-9.781982421875,8.537695312499991],[-10.064355468749994,8.429882812499997],[-10.147412109374983,8.519726562499997],[-10.233056640624994,8.488818359374989],[-10.283203125,8.485156249999989],[-10.360058593749983,8.495507812499994],[-10.394433593749994,8.48095703125],[-10.496435546874977,8.362109374999989],[-10.557714843749977,8.315673828125],[-10.686962890624983,8.321679687499994],[-10.712109374999983,8.335253906249989],[-10.677343749999977,8.400585937499997],[-10.500537109374989,8.687548828124989],[-10.615966796875,9.059179687499991],[-10.726855468749989,9.081689453124994],[-10.747021484374983,9.095263671874989],[-10.749951171874983,9.122363281249989],[-10.687646484374994,9.261132812499994],[-10.682714843749977,9.289355468749989],[-10.758593749999989,9.385351562499991],[-11.047460937499977,9.786328125],[-11.180859374999983,9.925341796874989],[-11.205664062499977,9.977734375],[-11.273632812499983,9.996533203124997],[-11.911083984374983,9.993017578124991],[-12.142333984375,9.87539062499999],[-12.427978515625,9.898144531249997],[-12.557861328125,9.704980468749994],[-12.755859375,9.373583984374989],[-12.958789062499989,9.263330078124994],[-13.077294921874994,9.069628906249989],[-13.292675781249983,9.04921875],[-13.436279296875,9.4203125],[-13.691357421874983,9.535791015624994],[-13.689794921874977,9.927783203124989],[-13.820117187499989,9.88720703125],[-14.045019531249977,10.141259765624994],[-14.426904296874994,10.248339843749989],[-14.609570312499983,10.549853515624989],[-14.593505859375,10.766699218749991],[-14.677343749999977,10.68896484375],[-14.775927734374989,10.931640625],[-14.88671875,10.968066406249989],[-14.975,10.803417968749997],[-15.051220703124983,10.834570312499991],[-15.043017578124989,10.940136718749997],[-14.9990234375,10.9921875],[-14.944433593749977,11.072167968749994],[-14.779296875,11.405517578125],[-14.720263671874989,11.48193359375],[-14.682958984374977,11.508496093749997],[-14.604785156249989,11.511621093749994],[-14.452441406249989,11.556201171874989],[-14.327832031249983,11.629785156249994],[-14.265576171874983,11.659912109375],[-14.122314453125,11.65195312499999],[-13.953222656249977,11.664599609374989],[-13.732763671874977,11.736035156249997],[-13.730664062499983,11.959863281249994],[-13.737988281249983,12.009667968749994],[-13.816308593749994,12.054492187499989],[-13.948876953124994,12.178173828124997],[-13.8875,12.246875],[-13.759765625,12.262353515624994],[-13.673535156249983,12.478515625],[-13.732617187499983,12.592822265624989],[-13.729248046875,12.673925781249991],[-13.082910156249994,12.633544921875],[-13.061279296875,12.489990234375],[-12.930712890624989,12.532275390624989],[-12.399072265624994,12.340087890625],[-11.389404296875,12.404394531249991]]]},"properties":{"name":"Guinea","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-16.763330078124994,13.064160156249997],[-16.824804687499977,13.341064453125],[-16.669335937499994,13.475],[-16.41337890624999,13.269726562499997],[-15.427490234375,13.46835937499999],[-16.135449218749983,13.4482421875],[-16.351806640625,13.34335937499999],[-16.56230468749999,13.587304687499994],[-15.509667968749994,13.586230468750003],[-15.426855468749977,13.727001953124997],[-15.108349609374983,13.81210937499999],[-14.405468749999983,13.503710937500003],[-13.977392578124977,13.54345703125],[-13.826708984374989,13.4078125],[-14.246777343749983,13.23583984375],[-15.151123046875,13.556494140624991],[-15.286230468749977,13.39599609375],[-15.814404296874983,13.325146484374997],[-15.834277343749989,13.156445312499997],[-16.648779296874977,13.154150390624991],[-16.763330078124994,13.064160156249997]]]},"properties":{"name":"Gambia","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-15.895898437499966,11.082470703124969],[-15.963964843749977,11.05898437499998],[-15.937695312499955,11.192773437499966],[-15.895898437499966,11.082470703124969]]],[[[-16.11450195312503,11.059423828124977],[-16.236425781249977,11.113427734374966],[-16.06733398437501,11.197216796874983],[-16.11450195312503,11.059423828124977]]],[[[-15.901806640624926,11.4658203125],[-16.02319335937497,11.477148437499991],[-15.964550781249926,11.59829101562498],[-15.901806640624926,11.4658203125]]],[[[-15.986425781249949,11.882031249999969],[-16.038330078124943,11.759716796875011],[-16.15244140624992,11.876806640624963],[-15.986425781249949,11.882031249999969]]],[[[-13.759765625,12.262353515624994],[-13.8875,12.246875],[-13.948876953124966,12.178173828124997],[-13.737988281250011,12.009667968750037],[-13.730664062499926,11.959863281250009],[-13.73276367187492,11.736035156249983],[-13.953222656249977,11.664599609374989],[-14.265576171874926,11.659912109375014],[-14.327832031250011,11.629785156250009],[-14.452441406249989,11.556201171875017],[-14.604785156249932,11.511621093749994],[-14.682958984374949,11.508496093749983],[-14.720263671875017,11.481933593749986],[-14.779296874999972,11.405517578125057],[-14.944433593749949,11.072167968749994],[-14.999023437499972,10.992187500000043],[-15.04301757812496,10.940136718750011],[-15.09375,11.011035156249974],[-15.054589843749994,11.141943359375006],[-15.222119140624926,11.030908203125037],[-15.216699218749994,11.15625],[-15.39311523437496,11.217236328124983],[-15.354687499999955,11.396337890624963],[-15.479492187499972,11.410302734374966],[-15.072656249999937,11.597802734374966],[-15.230371093750023,11.686767578124972],[-15.412988281249994,11.615234374999972],[-15.501904296875011,11.723779296874966],[-15.467187499999937,11.842822265624974],[-15.078271484374937,11.968994140625014],[-15.941748046875006,11.786621093749986],[-15.92021484374996,11.93779296874996],[-16.138427734375,11.917285156250045],[-16.32807617187501,12.051611328124963],[-16.244580078124955,12.237109375],[-16.43681640624996,12.204150390625045],[-16.711816406249937,12.354833984375006],[-16.656933593749955,12.364355468749991],[-16.52133789062495,12.348632812499986],[-16.41630859374996,12.367675781250057],[-16.24150390624996,12.443310546875011],[-16.144189453124937,12.457421875000037],[-15.839550781249955,12.437890624999966],[-15.57480468749992,12.490380859375009],[-15.19609375,12.679931640624986],[-14.3492187499999,12.67641601562498],[-14.064843749999966,12.675292968750014],[-13.729248046875,12.673925781250006],[-13.732617187499983,12.592822265625003],[-13.673535156249926,12.478515624999986],[-13.759765625,12.262353515624994]]]]},"properties":{"name":"Guinea-Bissau","childNum":5}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[11.332324218750017,1.528369140624989],[11.335351562500023,0.999707031250011],[9.906738281250028,0.960107421875037],[9.80390625000004,0.998730468749997],[9.788671875000034,1.025683593749974],[9.760546874999989,1.074707031250014],[9.704589843750057,1.079980468750023],[9.676464843750011,1.074707031250014],[9.636132812500051,1.046679687499989],[9.590820312500057,1.031982421875014],[9.599414062500045,1.054443359374972],[9.509863281250006,1.114794921875017],[9.385937500000068,1.13925781250002],[9.807031250000051,1.927490234375028],[9.77968750000008,2.068212890625006],[9.800781250000028,2.304443359375],[9.826171875000057,2.297802734374969],[9.8369140625,2.242382812500054],[9.870117187500028,2.21328125],[9.979882812499994,2.167773437500045],[10.790917968750023,2.167578125],[11.096582031250051,2.167480468749986],[11.328710937500006,2.167431640624969],[11.332324218750017,1.528369140624989]]],[[[8.735742187500023,3.758300781249972],[8.910058593750023,3.758203125000051],[8.946093750000074,3.627539062499977],[8.704003906250051,3.223632812500028],[8.474902343749989,3.264648437500043],[8.464648437500045,3.450585937499994],[8.735742187500023,3.758300781249972]]]]},"properties":{"name":"Eq. Guinea","childNum":2}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[23.852246093749983,35.53544921874999],[24.166015625000057,35.59521484375],[24.108984374999977,35.49580078124998],[24.35400390625,35.359472656250034],[25.73017578125004,35.34858398437501],[25.791308593750074,35.122851562500045],[26.32021484375008,35.315136718749955],[26.165625,35.018603515625045],[24.79980468750003,34.93447265625002],[24.70888671875008,35.08906250000001],[24.463671875000045,35.160351562499955],[23.59277343749997,35.257226562499966],[23.56982421875,35.534765625000034],[23.67265624999999,35.51391601562506],[23.736914062500034,35.65551757812503],[23.852246093749983,35.53544921874999]]],[[[27.17607421874999,35.46528320312498],[27.070703125000023,35.59775390624998],[27.22314453125,35.820458984374966],[27.17607421874999,35.46528320312498]]],[[[23.053808593750034,36.18979492187498],[22.91083984375004,36.220996093750045],[22.950488281250045,36.38393554687502],[23.053808593750034,36.18979492187498]]],[[[27.84277343750003,35.929296875000034],[27.71552734375004,35.95732421874996],[27.71630859375003,36.17158203125001],[28.23183593750005,36.43364257812502],[28.087792968750023,36.06533203125002],[27.84277343750003,35.929296875000034]]],[[[25.48242187500003,36.39262695312502],[25.37050781250005,36.35893554687499],[25.408984375000074,36.473730468750006],[25.48242187500003,36.39262695312502]]],[[[26.46064453125001,36.58540039062501],[26.270019531250057,36.54692382812499],[26.370019531250023,36.63857421875002],[26.46064453125001,36.58540039062501]]],[[[26.94960937500005,36.72709960937502],[27.214941406250006,36.89863281249998],[27.352148437499977,36.86889648437506],[26.94960937500005,36.72709960937502]]],[[[25.859375,36.79042968750005],[25.74316406250003,36.78974609374998],[26.06445312500003,36.90273437500002],[25.859375,36.79042968750005]]],[[[27.01972656250004,36.95903320312502],[26.91992187500003,36.94521484375005],[26.88867187499997,37.087255859375034],[27.01972656250004,36.95903320312502]]],[[[25.278906250000034,37.06840820312502],[25.105468750000057,37.034960937500045],[25.235058593750068,37.148535156250006],[25.278906250000034,37.06840820312502]]],[[[25.54589843749997,36.96757812499999],[25.45673828125001,36.9296875],[25.361914062500063,37.07041015624998],[25.52529296875005,37.19638671875006],[25.54589843749997,36.96757812499999]]],[[[24.523535156250063,37.125097656250006],[24.42480468750003,37.131982421874994],[24.48378906250005,37.21020507812503],[24.523535156250063,37.125097656250006]]],[[[25.402734375000023,37.419140624999955],[25.312695312500068,37.48930664062496],[25.462988281250063,37.47109375],[25.402734375000023,37.419140624999955]]],[[[26.029296875000057,37.529394531250034],[26.086328125000023,37.63491210937505],[26.351367187500017,37.67431640625],[26.029296875000057,37.529394531250034]]],[[[25.255859375000057,37.59960937500006],[25.156347656250034,37.54506835937505],[24.99648437500005,37.676904296874994],[25.255859375000057,37.59960937500006]]],[[[24.35595703125003,37.57685546875004],[24.28896484375005,37.52827148437498],[24.37910156250004,37.682714843750006],[24.35595703125003,37.57685546875004]]],[[[26.82441406250004,37.81142578125005],[27.05507812500005,37.70927734375002],[26.84492187500004,37.64472656250001],[26.58105468750003,37.723730468750034],[26.82441406250004,37.81142578125005]]],[[[20.888476562500074,37.805371093749955],[20.993945312500074,37.70800781250003],[20.81855468750004,37.66474609375001],[20.61953125000008,37.855029296875045],[20.691503906250006,37.929541015625034],[20.888476562500074,37.805371093749955]]],[[[24.991699218750057,37.75961914062506],[24.962207031250074,37.69238281250003],[24.7001953125,37.961669921875],[24.956347656250045,37.90478515625006],[24.991699218750057,37.75961914062506]]],[[[20.61230468750003,38.38334960937502],[20.761328125,38.07055664062497],[20.523535156250063,38.106640624999955],[20.4521484375,38.23417968750002],[20.35253906250003,38.179882812499955],[20.563183593750068,38.474951171875034],[20.61230468750003,38.38334960937502]]],[[[26.094042968750017,38.21806640625002],[25.891894531250045,38.243310546874994],[25.991406250000068,38.353515625],[25.846093750000023,38.57402343749996],[26.16035156250001,38.54072265625001],[26.094042968750017,38.21806640625002]]],[[[20.68671875000001,38.60869140625002],[20.5546875,38.58256835937502],[20.69414062499999,38.84423828125003],[20.68671875000001,38.60869140625002]]],[[[24.67470703125005,38.80922851562502],[24.54101562499997,38.788671875],[24.485644531250074,38.980273437500045],[24.67470703125005,38.80922851562502]]],[[[23.41542968750008,38.958642578124994],[23.525,38.8134765625],[24.127539062500034,38.648486328125045],[24.27578125000005,38.22001953124996],[24.58837890625003,38.12397460937504],[24.53652343750005,37.97973632812506],[24.212011718750006,38.11752929687506],[24.040136718750006,38.389990234375034],[23.65078125000008,38.44306640625001],[23.25214843750004,38.80122070312498],[22.870312500000068,38.870507812499966],[23.258203125000023,39.03134765625006],[23.41542968750008,38.958642578124994]]],[[[26.41015625000003,39.329443359375034],[26.59560546875005,39.04882812499997],[26.488671875000023,39.074804687500034],[26.46875,38.97280273437502],[26.10791015625,39.08105468749997],[26.273144531249983,39.19755859374999],[26.072363281250034,39.095605468749994],[25.84414062500008,39.20004882812506],[26.16542968750008,39.37353515625006],[26.41015625000003,39.329443359375034]]],[[[20.077929687500045,39.432714843750034],[19.883984375000068,39.461523437500034],[19.646484375,39.76708984375003],[19.926074218750017,39.773730468750045],[19.8466796875,39.66811523437502],[20.077929687500045,39.432714843750034]]],[[[25.43769531250004,39.98330078125002],[25.357031250000063,39.80810546875003],[25.24941406250005,39.89414062500006],[25.06220703125004,39.852392578125006],[25.05800781250005,39.999658203124966],[25.43769531250004,39.98330078125002]]],[[[24.774218750000074,40.615185546874955],[24.515527343750023,40.64702148437496],[24.623339843750045,40.79291992187501],[24.774218750000074,40.615185546874955]]],[[[26.03896484375008,40.726757812499955],[25.10449218750003,40.994726562500006],[24.792968750000057,40.857519531250034],[24.47705078125,40.94775390625003],[24.082324218750074,40.72407226562504],[23.762792968750063,40.74780273437497],[23.866796875000034,40.41855468750006],[24.21279296875008,40.32778320312502],[24.343359375000034,40.14770507812503],[23.913183593750063,40.35878906250005],[23.72792968750008,40.329736328124994],[23.96748046875001,40.11455078125002],[23.947070312500045,39.96557617187506],[23.66455078125003,40.22382812499998],[23.42626953125,40.26396484374999],[23.62734375,39.92407226562503],[22.896484375000057,40.39990234374997],[22.92226562500008,40.59086914062499],[22.629492187500034,40.49555664062501],[22.59218750000005,40.03691406250002],[23.327734374999977,39.174902343750006],[23.15468750000008,39.10146484375005],[23.16171875,39.25776367187501],[22.92138671874997,39.30634765625004],[22.886035156250074,39.16997070312496],[23.066699218750017,39.03793945312498],[22.569140625000074,38.86748046874999],[23.25292968750003,38.66123046875006],[23.68398437500008,38.35244140625002],[23.96699218750001,38.275],[24.024511718750006,38.139794921874966],[24.01972656250001,37.67773437499997],[23.50175781249999,38.03486328124998],[23.03632812500004,37.87836914062501],[23.48925781250003,37.440185546875],[23.16152343750005,37.333837890625006],[22.725390625000017,37.542138671874966],[23.16015625000003,36.448095703125034],[22.717187500000023,36.79394531250006],[22.42773437500003,36.47578124999998],[22.08046875000008,37.028955078124966],[21.95556640625003,36.990087890625034],[21.892382812500045,36.73730468749997],[21.58291015625005,37.080957031249994],[21.678906250000068,37.38720703125003],[21.124707031250068,37.89160156250003],[21.40371093750005,38.19667968750002],[21.658398437500068,38.17509765624996],[21.82470703125003,38.328125],[22.846386718750068,37.96757812499996],[23.18349609375008,38.133691406249966],[22.421679687500045,38.43852539062499],[22.319921875,38.35683593750005],[21.96533203124997,38.412451171875006],[21.47255859375005,38.321386718750006],[21.3310546875,38.48730468749997],[21.303320312500034,38.373925781249966],[21.113183593750023,38.38466796875002],[20.768554687500057,38.874414062499966],[21.111621093750045,38.89628906249999],[21.11835937500001,39.029980468749955],[20.71337890625,39.03515625000003],[20.300781250000057,39.32709960937501],[20.19140625,39.545800781249966],[20.099414062500074,39.641259765624966],[20.001269531250074,39.70942382812501],[20.022558593750063,39.710693359375],[20.059765624999983,39.69912109375002],[20.13105468750004,39.66162109375003],[20.206835937500017,39.65351562499998],[20.382421875,39.802636718749994],[20.381640625000017,39.84179687500006],[20.311328125000074,39.95078125000006],[20.311132812500034,39.97944335937504],[20.338476562500006,39.991064453125006],[20.38369140625008,40.0171875],[20.408007812500074,40.049462890624994],[20.4560546875,40.065576171874994],[20.657421875000068,40.11738281249998],[20.881640625000017,40.467919921874994],[21.030859375000034,40.62246093750002],[20.95576171875001,40.775292968749994],[20.96425781250005,40.84990234374999],[21.575781250000034,40.86894531249996],[21.627539062500006,40.896337890625034],[21.77949218750004,40.95043945312506],[21.99335937500001,41.13095703125006],[22.18447265625005,41.15864257812501],[22.49355468750005,41.118505859375006],[22.603613281249977,41.14018554687499],[22.724804687500068,41.17851562499999],[22.78388671875004,41.33198242187498],[23.155957031250068,41.32207031249999],[23.239843750000034,41.38496093750001],[23.372070312500057,41.3896484375],[23.433398437500017,41.39873046874999],[23.53583984375001,41.38603515624999],[23.63515625000008,41.386767578125045],[24.011328124999977,41.460058593750034],[24.03291015625004,41.469091796875034],[24.05605468750005,41.527246093749966],[24.38671875,41.523535156250006],[24.487890625,41.55522460937499],[24.518261718750068,41.55253906249996],[24.773730468750045,41.356103515624994],[24.99355468750008,41.36499023437503],[25.133398437500063,41.31577148437506],[25.251171875000068,41.243554687499994],[25.923339843750057,41.311914062499966],[26.066406250000057,41.35068359375006],[26.135351562499977,41.3857421875],[26.155175781250023,41.43486328124999],[26.143554687500057,41.52153320312496],[26.085546875000063,41.704150390625045],[26.10742187499997,41.72568359374998],[26.20058593750005,41.74379882812502],[26.320898437500034,41.716552734375],[26.581347656250074,41.60126953125004],[26.62490234375008,41.401757812499994],[26.330664062499977,41.23876953125],[26.331054687500057,40.954492187499994],[26.03896484375008,40.726757812499955]]]]},"properties":{"name":"Greece","childNum":29}},{"geometry":{"type":"Polygon","coordinates":[[[-61.71552734375,12.012646484374997],[-61.714990234374994,12.18515625],[-61.60703125,12.223291015624994],[-61.71552734375,12.012646484374997]]]},"properties":{"name":"Grenada","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-46.266699218750006,60.781396484374994],[-46.381542968749955,60.66030273437502],[-46.7880859375,60.758398437500034],[-46.205224609374994,60.943505859374994],[-46.266699218750006,60.781396484374994]]],[[[-37.03125,65.53198242187497],[-37.23842773437494,65.60986328125003],[-37.047509765624966,65.722265625],[-37.03125,65.53198242187497]]],[[[-51.01367187499994,69.55249023437497],[-51.202050781249966,69.525],[-51.33886718749994,69.73203125000006],[-51.094580078125006,69.92416992187503],[-50.67900390624999,69.84853515625],[-51.01367187499994,69.55249023437497]]],[[[-52.73115234375001,69.94472656250005],[-52.0453125,69.8072265625],[-51.90019531249999,69.60478515625007],[-53.57841796874996,69.25664062500002],[-54.18271484374995,69.40351562500001],[-53.65830078124998,69.46513671875005],[-53.825,69.54033203124999],[-54.91914062499998,69.71362304687503],[-54.78789062499996,69.94985351562502],[-54.322607421875034,69.94189453125],[-54.83076171875001,70.13295898437502],[-54.37163085937499,70.31728515625],[-53.296728515625034,70.20537109375002],[-52.73115234375001,69.94472656250005]]],[[[-51.67514648437498,70.855224609375],[-52.11938476562497,70.87065429687502],[-52.10673828124999,70.96801757812497],[-51.67514648437498,70.855224609375]]],[[[-25.43232421875001,70.92133789062495],[-25.402246093749994,70.65268554687503],[-26.217871093749977,70.45405273437498],[-26.604687499999926,70.55336914062497],[-28.03525390624995,70.48681640625],[-27.61723632812496,70.91376953125001],[-26.621777343749955,70.87563476562497],[-25.81889648437499,71.04365234375001],[-25.43232421875001,70.92133789062495]]],[[[-53.53520507812493,71.04082031250005],[-53.9578125,71.12773437499999],[-53.58447265625003,71.29707031249995],[-53.53520507812493,71.04082031250005]]],[[[-55.01689453124999,72.79111328125003],[-55.56660156249998,72.56435546875002],[-56.214794921874955,72.71918945312495],[-55.01689453124999,72.79111328125003]]],[[[-18.000537109374932,75.40732421875003],[-17.391992187499937,75.03691406250007],[-18.670800781249966,75.00166015624998],[-18.856054687499977,75.31914062500002],[-18.000537109374932,75.40732421875003]]],[[[-18.58261718749995,76.042333984375],[-19.085351562499966,76.43037109375001],[-18.882470703124937,76.70380859375001],[-18.58261718749995,76.042333984375]]],[[[-71.667333984375,77.32529296874998],[-72.48955078124999,77.43164062499997],[-71.43344726562495,77.394384765625],[-71.667333984375,77.32529296874998]]],[[[-17.6125,79.82587890624995],[-18.662011718749966,79.72001953125005],[-19.13828125,79.85234375000002],[-17.98291015625,80.05517578125003],[-17.471386718749955,80.02871093749997],[-17.6125,79.82587890624995]]],[[[-44.86455078124999,82.08364257812502],[-46.75190429687501,82.34819335937502],[-47.27226562499996,82.65693359375001],[-46.399169921875,82.692138671875],[-44.91748046875003,82.48051757812505],[-44.86455078124999,82.08364257812502]]],[[[-29.952880859375,83.56484374999997],[-25.795068359374994,83.26098632812497],[-31.99267578125,83.0853515625],[-32.03271484374997,82.98344726562502],[-25.12338867187495,83.15961914062501],[-24.47031249999995,82.87739257812498],[-21.582519531249943,82.6341796875],[-23.118066406249966,82.32470703125003],[-29.57939453124996,82.16118164062502],[-29.887402343749983,82.05483398437502],[-29.543847656249994,81.93994140624997],[-27.839501953124966,82.04887695312505],[-25.148828124999966,82.001123046875],[-24.293066406249977,81.70097656250005],[-23.103710937499983,82.01181640625003],[-21.337988281249977,82.068701171875],[-21.230517578125017,81.60136718749999],[-23.11772460937499,80.77817382812498],[-19.62993164062499,81.63989257812503],[-17.456054687499943,81.397705078125],[-16.12070312499995,81.776611328125],[-14.241992187500017,81.81386718750005],[-12.434423828125006,81.68251953125002],[-11.430664062499972,81.45683593750005],[-13.126220703124972,81.08779296875],[-14.452343749999955,80.99311523437498],[-14.503564453124994,80.76328125000006],[-16.76059570312492,80.573388671875],[-15.937255859374972,80.42763671874997],[-16.48876953124997,80.25195312499997],[-18.070947265624994,80.17207031249995],[-19.429199218749943,80.25771484375],[-20.150146484375,80.01123046874997],[-18.99199218749996,79.17836914062502],[-21.133740234374926,78.65864257812501],[-21.729589843749977,77.70854492187499],[-20.862597656249932,77.91186523437503],[-19.490429687499983,77.71889648437497],[-19.46752929687503,77.56582031250005],[-20.162060546874926,77.68984375],[-20.680810546875023,77.61899414062503],[-20.23193359374997,77.36840820312497],[-19.30029296874997,77.22236328124995],[-18.442626953124943,77.259375],[-18.51030273437496,76.77817382812498],[-20.48671875,76.92080078125],[-21.614697265624926,76.68789062499997],[-22.18525390625001,76.79409179687502],[-22.609326171874983,76.70429687500004],[-21.877343749999966,76.57348632812503],[-21.488232421874926,76.271875],[-20.10361328124992,76.21909179687503],[-19.508984374999926,75.75751953124995],[-19.52636718750003,75.18022460937505],[-20.484960937500006,75.31425781249999],[-21.649316406249966,75.02343749999997],[-22.232861328124926,75.11972656249998],[-21.69511718749999,74.96445312500003],[-20.985791015624983,75.07436523437497],[-20.86157226562497,74.63593750000001],[-20.41708984374995,74.9751953125],[-19.98491210937499,74.9751953125],[-19.287011718750023,74.54638671875006],[-19.36914062499997,74.28403320312498],[-20.256445312499977,74.2828125],[-20.653125,74.13735351562502],[-21.954931640624977,74.24428710937497],[-21.942919921874932,74.56572265624999],[-22.32158203124999,74.30253906250002],[-22.134814453124932,73.99047851562503],[-20.36728515624992,73.8482421875],[-20.509667968749966,73.49287109375001],[-22.346875,73.26923828125001],[-23.23320312499999,73.39770507812497],[-24.157714843749943,73.76445312499999],[-24.67724609375,73.602197265625],[-25.521289062500017,73.85161132812499],[-24.79125976562497,73.51127929687502],[-26.062304687500017,73.25302734375],[-27.270410156250023,73.43627929687503],[-26.541845703125006,73.24897460937495],[-27.561621093750006,73.13847656250002],[-27.348046875000023,73.06782226562501],[-25.057031250000023,73.396484375],[-24.132666015625006,73.409375],[-22.036328124999955,72.91845703125006],[-22.29321289062497,72.11953125],[-24.06904296875001,72.49873046874998],[-24.629980468749977,73.03764648437499],[-26.657617187499966,72.71582031249997],[-24.81333007812492,72.90151367187497],[-24.65,72.58251953125],[-25.117871093749983,72.34697265625005],[-24.66684570312492,72.437353515625],[-21.959667968749955,71.74467773437502],[-22.479638671874937,71.38344726562497],[-22.417578125,71.24868164062505],[-22.29902343750001,71.43232421874998],[-21.75224609374999,71.47832031250002],[-21.522656249999926,70.52622070312503],[-22.38413085937492,70.46240234375],[-22.437011718749943,70.860009765625],[-22.690673828124943,70.43730468750002],[-23.327832031249983,70.45097656250007],[-23.97138671875001,70.64946289062499],[-24.562207031249926,71.22353515624997],[-25.885156249999966,71.571923828125],[-27.08720703124999,71.6265625],[-27.107031250000034,71.53266601562498],[-25.842724609374955,71.48017578124995],[-25.74223632812499,71.18359375],[-26.717919921874994,70.95048828125005],[-28.39843749999997,70.99291992187497],[-27.99218749999997,70.89521484374998],[-28.06987304687499,70.69902343750005],[-29.07207031249999,70.444970703125],[-26.621777343749955,70.46337890625],[-26.576806640625023,70.35708007812502],[-27.560839843749932,70.12446289062498],[-27.384179687500023,69.9916015625],[-27.027734374999966,70.20122070312499],[-25.529882812499977,70.35317382812502],[-23.66733398437495,70.139306640625],[-22.28447265624996,70.12583007812498],[-22.287060546874955,70.03339843749998],[-23.03364257812501,69.90083007812498],[-23.04956054687497,69.79272460937497],[-23.86572265624997,69.73671875000002],[-23.739404296874994,69.58862304687497],[-24.296679687500017,69.58554687500006],[-24.295556640624966,69.439306640625],[-25.188574218750006,69.26054687500002],[-25.092431640624937,69.16518554687502],[-25.697998046874943,68.889892578125],[-26.48291015624997,68.67592773437502],[-29.24951171874997,68.29877929687501],[-29.86850585937495,68.31157226562505],[-30.318115234375,68.19331054687501],[-30.72001953124999,68.25117187499998],[-30.610742187499994,68.11791992187503],[-30.97856445312499,68.06132812500005],[-32.32744140624999,68.43730468749999],[-32.16455078125,67.99111328125002],[-33.15698242187497,67.62670898437506],[-34.1982421875,66.65507812499999],[-35.18857421874995,66.25029296875002],[-35.86723632812502,66.44140624999997],[-35.630078124999926,66.13994140625002],[-36.37919921874996,65.830810546875],[-36.52724609375002,66.00771484375],[-36.665185546874966,65.79008789062507],[-37.06279296874996,65.87143554687503],[-37.410058593749994,65.65634765625],[-37.954785156249955,65.63359375000007],[-37.278710937499994,66.30439453124995],[-38.156640624999966,66.38559570312498],[-37.75234375000002,66.26152343750002],[-38.13994140625002,65.90351562499998],[-38.52036132812498,66.00966796875002],[-38.20336914062497,65.71171874999999],[-40.17353515624998,65.55615234375],[-39.57792968749996,65.34077148437501],[-39.937255859375,65.14160156250003],[-40.253125,65.04887695312505],[-41.08442382812501,65.10083007812497],[-40.966015624999955,64.86884765624995],[-40.655468749999926,64.91533203125002],[-40.18222656249998,64.47993164062495],[-40.78173828125,64.22177734375003],[-41.581005859374926,64.29833984375],[-41.03056640624996,64.12104492187504],[-40.61777343749998,64.13173828125],[-40.550390625000034,63.72524414062505],[-40.77519531249999,63.53364257812501],[-41.04873046875002,63.51381835937505],[-41.387890624999926,63.06186523437498],[-41.84448242187497,63.07026367187501],[-42.174511718749955,63.20878906249999],[-41.63447265624998,62.972460937500074],[-41.90898437499996,62.73710937499999],[-42.94165039062503,62.72021484375003],[-42.15297851562502,62.568457031250006],[-42.32148437499998,62.15273437500005],[-42.110205078125006,61.857226562500074],[-42.58530273437498,61.71748046875001],[-42.34736328125001,61.61743164062497],[-42.717041015625,60.767480468749994],[-43.04409179687502,60.523681640625],[-43.92270507812495,60.59536132812502],[-43.21298828124998,60.390673828125074],[-43.122900390625006,60.06123046875001],[-43.32011718749993,59.928125],[-43.95502929687498,60.025488281250006],[-43.65791015625001,59.85864257812503],[-43.90654296874996,59.815478515625045],[-44.11699218750002,59.83193359375002],[-44.06547851562499,59.92480468750003],[-44.412939453125006,59.922607421875],[-44.22436523437494,60.273535156250006],[-44.61328124999997,60.01665039062499],[-45.37924804687495,60.20292968750002],[-45.367773437500006,60.37294921875002],[-44.97470703124995,60.457226562499955],[-44.756738281249966,60.66459960937502],[-45.38051757812494,60.444921875],[-46.04663085937503,60.61572265625],[-46.141943359375006,60.776513671874994],[-45.87021484374998,61.21831054687502],[-46.87446289062501,60.81640625000003],[-48.180810546874966,60.76923828125001],[-47.77031249999999,60.99775390625001],[-48.386425781249926,61.004736328125034],[-48.42817382812501,61.18740234375002],[-48.92207031249998,61.27744140624998],[-49.28906249999997,61.58994140625006],[-49.380273437499994,61.89018554687502],[-48.82871093749998,62.0796875],[-49.62377929687494,61.99858398437499],[-49.553466796875,62.23271484374999],[-50.319238281249966,62.473193359375045],[-50.298730468749966,62.72197265625002],[-49.793115234374994,63.04462890625004],[-50.39008789062501,62.82202148437497],[-51.46884765624995,63.64228515625001],[-51.547509765624994,64.00610351562497],[-50.260693359374955,64.21425781250002],[-50.48662109374996,64.20888671875],[-50.43706054687499,64.31284179687503],[-51.58491210937498,64.10317382812502],[-51.70786132812498,64.205078125],[-51.403759765624926,64.46318359375002],[-50.49208984375002,64.69316406250005],[-50.00898437500001,64.44726562499997],[-50.12163085937493,64.703759765625],[-50.51699218750002,64.76650390625],[-50.96064453124998,65.20112304687498],[-50.721582031249966,64.79760742187503],[-51.22060546875002,64.62846679687502],[-51.25537109375,64.75810546875005],[-51.92260742187503,64.21875],[-52.259033203125,65.154931640625],[-52.537695312500034,65.32880859374998],[-51.61914062500003,65.71318359375002],[-51.091894531250006,65.77578125],[-51.7234375,65.723486328125],[-52.55126953125003,65.46137695312498],[-52.760937499999926,65.59082031249997],[-53.198974609375,65.59404296875002],[-53.106347656249966,65.97714843749998],[-53.39204101562498,66.04833984375],[-51.225,66.88154296875001],[-53.035791015624966,66.20141601562503],[-53.538769531249955,66.13935546874998],[-53.41875,66.64853515624998],[-53.038281249999955,66.82680664062497],[-52.38686523437502,66.88115234375005],[-53.44360351562503,66.924658203125],[-53.88442382812502,67.13554687499999],[-53.79858398437494,67.41816406250001],[-52.666455078124955,67.74970703124995],[-50.613476562499955,67.5279296875],[-51.171044921874966,67.693603515625],[-50.96884765624998,67.80664062500003],[-51.765234375000034,67.73784179687505],[-52.34482421874998,67.83691406249997],[-53.735205078125006,67.54902343750004],[-53.151562499999926,68.20776367187503],[-51.779980468749926,68.05673828124998],[-51.456494140624926,68.116064453125],[-51.21015625000001,68.419921875],[-52.19853515624993,68.22080078125],[-53.38315429687495,68.29736328124997],[-53.03945312500002,68.61088867187499],[-52.60458984374998,68.70874023437503],[-51.62314453124995,68.53481445312505],[-50.945703124999966,68.68266601562505],[-50.807714843750006,68.81699218749998],[-51.24941406250002,68.73994140625001],[-51.084863281249994,69.12827148437498],[-50.29736328124994,69.17060546874998],[-51.07695312499996,69.20947265625],[-50.291699218749955,70.01445312500005],[-52.254638671875,70.05893554687503],[-53.02304687499995,70.30190429687497],[-54.01445312499996,70.42167968750005],[-54.53076171875,70.69926757812502],[-54.16582031249999,70.82011718750005],[-52.801953124999955,70.7505859375],[-50.87236328124993,70.36489257812502],[-50.66328124999998,70.417578125],[-51.32285156249998,70.58876953124997],[-51.25659179687497,70.85268554687502],[-51.77431640625002,71.01044921875001],[-51.018945312499966,71.001318359375],[-51.37666015625001,71.11904296875],[-53.007568359375,71.17998046874999],[-52.89184570312497,71.457666015625],[-51.76992187500002,71.67172851562498],[-53.44008789062502,71.57900390625002],[-53.14453125000003,71.80742187500002],[-53.65214843749996,72.36264648437506],[-53.92773437499997,72.31879882812501],[-53.47758789062502,71.84995117187506],[-54.01992187500002,71.657861328125],[-53.96298828124995,71.45898437499997],[-54.6890625,71.36723632812505],[-55.59404296874999,71.55351562500005],[-55.315576171874994,72.11069335937498],[-54.84013671874996,72.35610351562497],[-55.581445312499994,72.178857421875],[-55.63583984374998,72.300439453125],[-55.29570312499996,72.35439453124997],[-55.60170898437494,72.453466796875],[-54.924951171874994,72.57197265624998],[-54.737939453124994,72.87250976562501],[-55.07309570312498,73.01513671875003],[-55.28891601562498,72.93320312500003],[-55.66855468749998,73.00791015624998],[-55.288281249999955,73.32709960937498],[-56.10405273437496,73.55815429687499],[-55.83828125,73.75971679687501],[-56.22539062499999,74.12910156249995],[-57.23056640624995,74.12529296875007],[-56.70634765625002,74.21918945312501],[-56.717675781249994,74.42924804687499],[-56.25546874999998,74.52680664062498],[-58.56552734374998,75.35273437500001],[-58.249658203124994,75.50668945312503],[-58.51621093749995,75.68906250000006],[-61.18823242187494,76.157861328125],[-63.29130859374996,76.35205078125003],[-63.84306640624999,76.21713867187498],[-64.307275390625,76.31650390624998],[-65.36992187499993,76.13056640625004],[-65.87573242187494,76.23833007812505],[-66.46577148437498,76.13916015625],[-66.99257812500002,76.21293945312502],[-66.67480468750003,75.977392578125],[-68.14873046875002,76.06704101562497],[-69.48408203125001,76.39916992187503],[-68.1142578125,76.65063476562503],[-69.67382812499994,76.73588867187507],[-69.69423828125002,76.98945312500004],[-70.613134765625,76.82182617187499],[-71.14145507812498,77.02866210937503],[-70.86284179687496,77.175439453125],[-68.97832031250002,77.19531250000006],[-68.13554687499999,77.37958984375001],[-66.38945312499999,77.28027343750003],[-66.69121093749999,77.68120117187502],[-67.68808593749995,77.523779296875],[-68.62153320312498,77.60185546875002],[-69.35136718749999,77.467138671875],[-70.53540039062497,77.699560546875],[-70.11445312500001,77.84135742187505],[-71.27163085937494,77.81313476562497],[-72.81806640624995,78.1943359375],[-72.47250976562498,78.48203125],[-71.65131835937493,78.62314453124998],[-68.99345703124999,78.857421875],[-68.37705078124998,79.037841796875],[-65.82553710937503,79.17373046874997],[-64.79228515624993,80.00063476562502],[-64.17915039062498,80.09926757812497],[-66.84365234374997,80.07622070312507],[-67.05063476562503,80.384521484375],[-64.51552734374997,81],[-63.72197265624993,81.05732421875001],[-63.028662109375006,80.88955078125002],[-62.90336914062496,81.21835937500003],[-61.43598632812498,81.13359375000002],[-60.842871093750034,81.85537109374997],[-59.28193359374998,81.88403320312503],[-56.615136718749994,81.362890625],[-59.26181640624998,82.00664062500005],[-54.54887695312496,82.35063476562505],[-53.671337890624955,82.16406249999997],[-53.55566406250003,81.65327148437501],[-53.022558593750034,82.32172851562504],[-50.894433593749994,81.89521484375001],[-49.54106445312496,81.91806640625003],[-50.93554687500003,82.38281250000003],[-50.03710937499994,82.472412109375],[-44.7294921875,81.77983398437505],[-44.23886718749998,82.3681640625],[-45.55654296875002,82.74702148437498],[-41.87646484375,82.680322265625],[-41.36962890625003,82.75],[-46.136816406250006,82.85883789062504],[-46.169042968750006,83.06386718749997],[-45.41459960937496,83.01767578124998],[-43.00927734375003,83.26459960937501],[-41.300146484375006,83.10078125000004],[-40.35683593750002,83.332177734375],[-38.15625,82.9986328125],[-38.74956054687496,83.37084960937497],[-37.72333984374998,83.49775390624998],[-29.952880859375,83.56484374999997]]]]},"properties":{"name":"Greenland","childNum":14}},{"geometry":{"type":"Polygon","coordinates":[[[-89.2328125,15.888671875],[-88.89404296875,15.890625],[-88.60336914062499,15.76416015625],[-88.5939453125,15.950292968749991],[-88.22832031249999,15.72900390625],[-88.271435546875,15.694873046875003],[-88.36455078124999,15.616015625],[-88.68447265625,15.360498046874994],[-88.96098632812499,15.152441406249991],[-89.142578125,15.072314453125003],[-89.22236328125,14.866064453124991],[-89.16220703124999,14.669238281250003],[-89.17177734375,14.606884765624997],[-89.28671875,14.529980468749997],[-89.36259765624999,14.416015625],[-89.5736328125,14.390087890624997],[-89.54716796874999,14.241259765625003],[-90.04814453124999,13.904052734375],[-90.09521484375,13.736523437499997],[-90.60693359375,13.929003906250003],[-91.37734375,13.990185546874997],[-92.23515624999999,14.54541015625],[-92.15854492187499,14.963574218749997],[-92.14423828125,15.001953125],[-92.09873046874999,15.026757812499994],[-92.07480468749999,15.07421875],[-92.187158203125,15.320898437499991],[-92.08212890624999,15.495556640624997],[-91.9572265625,15.703222656249991],[-91.736572265625,16.07016601562499],[-91.433984375,16.070458984374994],[-90.97958984374999,16.07080078125],[-90.70322265624999,16.071044921875],[-90.52197265625,16.071191406249994],[-90.44716796875,16.072705078124997],[-90.45986328125,16.162353515625],[-90.450146484375,16.261376953124994],[-90.4169921875,16.351318359375],[-90.4169921875,16.39101562499999],[-90.47109375,16.43955078124999],[-90.57578125,16.467822265625003],[-90.63408203124999,16.5107421875],[-90.634375,16.565136718749997],[-90.65996093749999,16.630908203125003],[-90.710693359375,16.70810546874999],[-90.975830078125,16.867822265624994],[-91.409619140625,17.255859375],[-91.1955078125,17.254101562499997],[-90.99296874999999,17.25244140625],[-90.98916015625,17.81640625],[-89.16147460937499,17.81484375],[-89.2328125,15.888671875]]]},"properties":{"name":"Guatemala","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[144.74179687500003,13.25927734375],[144.64931640625002,13.4287109375],[144.87539062500002,13.614648437499994],[144.94082031250002,13.5703125],[144.74179687500003,13.25927734375]]]},"properties":{"name":"Guam","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-57.194775390625,5.5484375],[-57.3185546875,5.335351562499994],[-57.20981445312499,5.195410156249991],[-57.331005859375,5.020166015624994],[-57.711083984374994,4.991064453124991],[-57.91704101562499,4.820410156249991],[-57.84599609374999,4.668164062499997],[-58.05429687499999,4.101660156249991],[-57.646728515625,3.39453125],[-57.303662109375,3.377099609374994],[-57.19736328124999,2.853271484375],[-56.704345703125,2.036474609374991],[-56.4828125,1.942138671875],[-56.96953124999999,1.91640625],[-57.03759765625,1.936474609374997],[-57.092675781249994,2.005810546874997],[-57.118896484375,2.013964843749989],[-57.31748046874999,1.963476562499991],[-57.41269531249999,1.908935546875],[-57.500439453125,1.77382812499999],[-57.54575195312499,1.72607421875],[-57.59443359375,1.7041015625],[-57.795654296875,1.7],[-57.8734375,1.667285156249989],[-57.9828125,1.6484375],[-58.03466796875,1.520263671875],[-58.34067382812499,1.587548828124994],[-58.38037109375,1.530224609374997],[-58.39580078124999,1.481738281249989],[-58.5060546875,1.438671875],[-58.511865234374994,1.28466796875],[-58.68461914062499,1.281054687499989],[-58.73032226562499,1.247509765624997],[-58.78720703124999,1.20849609375],[-58.82177734375,1.201220703124989],[-59.231201171875,1.376025390624989],[-59.53569335937499,1.7],[-59.66660156249999,1.746289062499997],[-59.66850585937499,1.842333984374989],[-59.74072265625,1.874169921874994],[-59.75620117187499,1.900634765625],[-59.75522460937499,2.274121093749997],[-59.8896484375,2.362939453124994],[-59.9943359375,2.689990234374989],[-59.854394531249994,3.5875],[-59.55112304687499,3.933544921874997],[-59.557763671874994,3.960009765624989],[-59.62021484374999,4.023144531249997],[-59.73857421874999,4.226757812499997],[-59.69970703125,4.353515625],[-60.1486328125,4.533251953124989],[-59.990673828125,5.082861328124991],[-60.142041015625,5.238818359374989],[-60.241650390625,5.257958984374994],[-60.335205078125,5.199316406249991],[-60.45952148437499,5.188085937499991],[-60.6513671875,5.221142578124997],[-60.742138671875,5.202050781249994],[-61.37680664062499,5.906982421875],[-61.3908203125,5.938769531249989],[-61.303125,6.049511718749997],[-61.22495117187499,6.129199218749989],[-61.15947265624999,6.174414062499991],[-61.12871093749999,6.214306640624997],[-61.152294921875,6.385107421874991],[-61.151025390624994,6.446533203125],[-61.181591796875,6.513378906249997],[-61.20361328125,6.58837890625],[-61.14560546874999,6.69453125],[-60.717919921874994,6.768310546875],[-60.35209960937499,7.002880859374997],[-60.32207031249999,7.092041015625],[-60.32548828124999,7.133984375],[-60.34506835937499,7.15],[-60.46494140624999,7.166552734374989],[-60.523193359375,7.143701171874994],[-60.583203125,7.156201171874997],[-60.63330078125,7.211083984374994],[-60.718652343749994,7.535937499999989],[-60.513623046875,7.813183593749997],[-60.032421875,8.053564453124991],[-59.99072265625,8.162011718749994],[-59.96484375,8.191601562499997],[-59.849072265625,8.248681640624994],[-59.83164062499999,8.305957031249989],[-60.017529296875,8.54931640625],[-59.20024414062499,8.07460937499999],[-58.51108398437499,7.39804687499999],[-58.48056640624999,7.038134765624989],[-58.67294921874999,6.390771484374994],[-58.414990234375,6.85117187499999],[-57.982568359374994,6.785888671875],[-57.54013671874999,6.33154296875],[-57.2275390625,6.178417968749997],[-57.194775390625,5.5484375]]]},"properties":{"name":"Guyana","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[73.70742187500002,-53.13710937499999],[73.46513671875002,-53.184179687500006],[73.25117187500001,-52.97578125000001],[73.83779296875002,-53.11279296875],[73.70742187500002,-53.13710937499999]]]},"properties":{"name":"Heard I. and McDonald Is.","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-83.635498046875,14.876416015624997],[-84.53764648437496,14.633398437499963],[-84.64594726562498,14.661083984375011],[-84.86044921874998,14.809765625000011],[-84.98515624999999,14.752441406249972],[-85.059375,14.582958984374997],[-85.20834960937498,14.311816406250003],[-85.73393554687496,13.85869140625006],[-85.75341796875,13.852050781250028],[-85.78671874999995,13.844433593749997],[-85.98378906249997,13.965673828125006],[-86.04038085937503,14.050146484374977],[-86.33173828124995,13.770068359375031],[-86.37695312500003,13.755664062500031],[-86.61025390624997,13.774853515625026],[-86.73364257812494,13.763476562500017],[-86.75898437499995,13.746142578125045],[-86.77060546875003,13.698730468749972],[-86.763525390625,13.635253906250014],[-86.72958984375,13.4072265625],[-86.710693359375,13.31337890624998],[-86.72929687499996,13.284375],[-86.79213867187497,13.279785156249972],[-86.87353515624994,13.266503906250023],[-86.918212890625,13.223583984374983],[-87.00932617187499,13.007812499999986],[-87.0591796875,12.991455078125028],[-87.337255859375,12.979248046875028],[-87.48911132812503,13.352929687500051],[-87.814208984375,13.399169921875057],[-87.781884765625,13.521386718749994],[-87.71533203125003,13.812695312500011],[-87.73144531250003,13.841064453125014],[-87.80224609374997,13.889990234375034],[-87.89199218749997,13.894970703124983],[-87.99101562499996,13.879638671874972],[-88.15102539062497,13.987353515624974],[-88.44912109374994,13.850976562499994],[-88.48266601562503,13.854248046875043],[-88.49765624999998,13.904541015624986],[-88.50434570312501,13.964208984374963],[-88.51254882812498,13.97895507812504],[-89.12050781249994,14.370214843749991],[-89.36259765624996,14.416015625],[-89.17177734375,14.606884765624983],[-89.16220703125,14.669238281249989],[-89.22236328125001,14.86606445312502],[-89.142578125,15.072314453125031],[-88.96098632812496,15.15244140625002],[-88.68447265625002,15.360498046875037],[-88.36455078124996,15.616015625000045],[-88.27143554687498,15.694873046875045],[-88.22832031249999,15.729003906249972],[-88.131103515625,15.701025390625034],[-87.87495117187495,15.879345703124955],[-86.35664062499998,15.783203125],[-85.93627929687497,15.953417968750045],[-85.98564453124999,16.02416992187497],[-85.48369140624996,15.899511718749977],[-84.97373046874998,15.989892578124994],[-84.55966796875,15.802001953125],[-84.26142578124998,15.822607421875034],[-83.765283203125,15.405468750000054],[-83.972802734375,15.519628906250034],[-84.11132812499997,15.492431640625],[-84.09506835937503,15.400927734375017],[-83.92744140624998,15.394042968750028],[-83.76044921874998,15.220361328124994],[-83.49794921874997,15.222119140624997],[-83.64638671875,15.368408203125043],[-83.36918945312493,15.239990234375],[-83.29086914062498,15.078906250000045],[-83.2255859375,15.042285156250045],[-83.15751953124999,14.993066406249966],[-83.41503906249994,15.008056640625],[-83.5365234375,14.977001953124983],[-83.635498046875,14.876416015624997]]]},"properties":{"name":"Honduras","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[17.60781250000005,42.76904296875],[17.744238281250063,42.70034179687505],[17.34414062500008,42.790380859375006],[17.60781250000005,42.76904296875]]],[[[16.650683593750017,42.99658203125],[17.188281250000045,42.917041015625045],[16.850683593750006,42.8955078125],[16.650683593750017,42.99658203125]]],[[[17.667578125000063,42.897119140624994],[18.436328125000017,42.559716796874994],[18.517480468750023,42.43291015624999],[17.823828125,42.79741210937502],[17.045410156250057,43.014892578125],[17.667578125000063,42.897119140624994]]],[[[16.785253906250006,43.270654296874966],[16.490332031250034,43.28618164062502],[16.44892578125004,43.38706054687506],[16.89130859375001,43.314648437499955],[16.785253906250006,43.270654296874966]]],[[[15.371386718750074,43.973828124999955],[15.437207031250068,43.899511718750006],[15.270019531250028,44.01074218750003],[15.371386718750074,43.973828124999955]]],[[[14.488085937500074,44.66005859375005],[14.31240234375008,44.90039062499997],[14.33125,45.16499023437498],[14.488085937500074,44.66005859375005]]],[[[14.810253906250068,44.97705078124997],[14.45039062500004,45.079199218750006],[14.571093750000017,45.224755859374994],[14.810253906250068,44.97705078124997]]],[[[18.905371093750006,45.931738281250034],[18.839062499999983,45.83574218750002],[19.064257812500045,45.51499023437506],[19.004687500000074,45.39951171875006],[19.4,45.2125],[19.062890625000023,45.13720703125],[19.007128906250045,44.86918945312502],[18.83642578125,44.883251953124955],[18.66259765625,45.07744140624999],[17.812792968750074,45.078125],[16.918652343749983,45.27656249999998],[16.53066406250008,45.21669921875002],[16.29335937500005,45.00883789062496],[16.028320312500057,45.18959960937502],[15.788085937500057,45.17895507812497],[15.736621093750045,44.76582031250001],[16.10341796875008,44.52099609375006],[16.300097656250017,44.12451171875],[17.27382812500005,43.44575195312501],[17.650488281250063,43.006591796875],[17.585156250000068,42.93837890625005],[16.903125,43.392431640625006],[16.393945312500023,43.54335937500002],[15.985546875000068,43.519775390625],[15.185839843750017,44.17211914062503],[15.122949218749994,44.256787109374955],[15.470996093750045,44.27197265625003],[14.981347656250023,44.60292968750005],[14.854589843750034,45.08100585937501],[14.550488281249983,45.297705078125006],[14.31269531250004,45.33779296875002],[13.86074218750008,44.83740234375003],[13.517187500000063,45.481787109375034],[13.878710937500017,45.428369140624994],[14.369921875000074,45.48144531250006],[14.427343750000034,45.50576171875002],[14.56884765625,45.65722656249997],[14.591796875000057,45.65126953125002],[14.649511718750006,45.57148437500001],[14.793066406250034,45.47822265625001],[14.95458984375,45.499902343749994],[15.110449218750034,45.450781250000034],[15.242089843750023,45.44140624999997],[15.339453125000063,45.46704101562506],[15.326660156250028,45.502294921875034],[15.291210937500011,45.541552734375045],[15.283593750000051,45.5796875],[15.35371093750004,45.659912109375],[15.27705078125004,45.73261718749998],[15.652148437500074,45.86215820312498],[15.675585937500045,45.98369140624996],[15.666210937500011,46.04848632812502],[15.596875,46.10922851562506],[15.592578125000017,46.139990234375006],[15.608984374999977,46.171923828125045],[16.1064453125,46.382226562499994],[16.32119140625005,46.53461914062504],[16.42763671875005,46.5244140625],[16.516210937499977,46.499902343749966],[16.569921875,46.48500976562505],[16.748046875000057,46.41640625000002],[16.87148437500008,46.33930664062504],[17.310644531250006,45.99614257812502],[17.80712890625,45.79042968750002],[18.358300781250023,45.75302734375006],[18.533593750000023,45.79614257812503],[18.56464843750004,45.81328124999999],[18.666015625,45.90747070312497],[18.905371093750006,45.931738281250034]]]]},"properties":{"name":"Croatia","childNum":8}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-72.80458984374997,18.777685546875063],[-72.82221679687501,18.707128906249977],[-73.07797851562498,18.790917968749994],[-73.27641601562499,18.95405273437501],[-72.80458984374997,18.777685546875063]]],[[[-71.647216796875,19.195947265624994],[-71.80712890624997,18.987011718749983],[-71.733642578125,18.85639648437501],[-71.72705078125,18.80322265625003],[-71.74321289062502,18.73291015625],[-71.86650390624999,18.61416015625005],[-71.98686523437499,18.61035156249997],[-72.000390625,18.59790039062503],[-71.94038085937493,18.51259765625005],[-71.87255859374997,18.416210937499955],[-71.76191406249998,18.34130859374997],[-71.73725585937495,18.27080078124999],[-71.76831054687497,18.039160156250063],[-71.85292968749997,18.119140625],[-71.94609375,18.186083984375045],[-72.05986328124993,18.228564453125017],[-72.87666015624998,18.151757812499994],[-73.38515625000002,18.251171874999983],[-73.747314453125,18.190234375000017],[-73.88496093749998,18.041894531249994],[-74.478125,18.45],[-74.3875,18.624707031249983],[-74.22773437499998,18.662695312499977],[-72.78935546874996,18.434814453125],[-72.37607421874998,18.57446289062503],[-72.34765624999994,18.674951171874994],[-72.81108398437496,19.071582031250074],[-72.70322265625,19.441064453125023],[-73.43837890624994,19.722119140624983],[-73.21777343750003,19.88369140625005],[-72.63701171875002,19.90087890625],[-72.21982421875003,19.744628906250057],[-71.834716796875,19.696728515624983],[-71.77924804687498,19.718164062499994],[-71.75742187499998,19.68818359375001],[-71.71147460937493,19.486572265625057],[-71.74648437499997,19.28583984375001],[-71.647216796875,19.195947265624994]]]]},"properties":{"name":"Haiti","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[22.1318359375,48.405322265624996],[22.253710937500017,48.407373046874994],[22.582421875000023,48.134033203125],[22.769140625,48.109619140625],[22.87666015625001,47.947265625],[21.99970703125001,47.505029296874994],[21.121679687500006,46.282421875],[20.76025390625,46.246240234374994],[20.613671875000023,46.13349609375],[20.508105468750017,46.166943359375],[20.28095703125001,46.1330078125],[20.241796875,46.10859375],[20.21015625000001,46.126025390624996],[20.161425781250017,46.141894531249996],[19.93408203125,46.161474609375],[19.84443359375001,46.145898437499994],[19.61347656250001,46.169189453125],[19.421289062500023,46.064453125],[18.666015625,45.907470703125],[18.56464843750001,45.81328125],[18.533593750000023,45.796142578125],[18.358300781250023,45.75302734375],[17.80712890625,45.790429687499994],[17.310644531250006,45.996142578124996],[16.871484375000023,46.339306640625],[16.748046875,46.41640625],[16.569921875,46.485009765624994],[16.516210937500006,46.499902343749994],[16.283593750000023,46.857275390625],[16.093066406250017,46.86328125],[16.453417968750017,47.006787109375],[16.44287109375,47.39951171875],[16.676562500000017,47.536035156249994],[16.421289062500023,47.674462890624994],[17.06660156250001,47.707568359374996],[17.147363281250023,48.00595703125],[17.76191406250001,47.770166015624994],[18.72421875,47.787158203124996],[18.791894531250023,48.000292968749996],[19.625390625000023,48.223095703125],[19.95039062500001,48.146630859374994],[20.333789062500017,48.295556640624994],[20.490039062500017,48.526904296874996],[21.45136718750001,48.55224609375],[21.766992187500023,48.3380859375],[22.1318359375,48.405322265624996]]]},"properties":{"name":"Hungary","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[122.9489257812501,-10.90927734375002],[122.82617187500003,-10.899121093749983],[122.84570312500003,-10.761816406249991],[123.37109375000003,-10.474902343749989],[123.41816406250004,-10.651269531250037],[122.9489257812501,-10.90927734375002]]],[[[121.8830078125001,-10.590332031249957],[121.70468750000006,-10.5556640625],[121.99833984375002,-10.446972656249983],[121.8830078125001,-10.590332031249957]]],[[[123.41621093750004,-10.302636718749966],[123.3255859375,-10.264160156249943],[123.45878906250002,-10.13994140624996],[123.41621093750004,-10.302636718749966]]],[[[120.0125,-9.374707031250026],[120.78447265625002,-9.95703125],[120.83261718750006,-10.0375],[120.69804687500002,-10.206640624999949],[120.4391601562501,-10.294042968749991],[120.14482421875002,-10.200097656249952],[119.60107421874997,-9.773535156250006],[119.08544921875003,-9.706933593750023],[118.95878906250002,-9.519335937500003],[119.29589843749997,-9.3671875],[119.9420898437501,-9.301464843750026],[120.0125,-9.374707031250026]]],[[[125.06816406250002,-9.511914062499997],[124.42753906250002,-10.14863281250004],[123.7472656250001,-10.347167968749986],[123.60478515625002,-10.270117187500006],[123.71640625000012,-10.078613281249986],[123.5892578125,-9.966796875000028],[123.709375,-9.61484375],[124.0363281250001,-9.341601562500031],[124.28232421875012,-9.427929687500026],[124.44443359375012,-9.190332031250023],[124.92226562500005,-8.942480468749977],[124.93681640625007,-9.053417968750026],[125.14902343750012,-9.042578125000034],[125.10048828125,-9.189843750000023],[124.96015625000004,-9.213769531250009],[125.06816406250002,-9.511914062499997]]],[[[115.60996093750012,-8.769824218749974],[115.48046875000003,-8.715429687500006],[115.56142578125,-8.669921874999972],[115.60996093750012,-8.769824218749974]]],[[[122.97734375000002,-8.54521484374996],[122.88779296875006,-8.587304687500009],[123.01054687500002,-8.448339843750034],[123.153125,-8.475781250000026],[122.97734375000002,-8.54521484374996]]],[[[119.46406250000004,-8.741015624999974],[119.38554687500002,-8.736035156250026],[119.4464843750001,-8.429199218749957],[119.55722656250012,-8.518847656250003],[119.46406250000004,-8.741015624999974]]],[[[123.31748046875012,-8.354785156249974],[123.02500000000012,-8.395507812500014],[123.21708984375002,-8.235449218750006],[123.33603515625006,-8.269042968750014],[123.31748046875012,-8.354785156249974]]],[[[116.64082031250004,-8.613867187500006],[116.51425781250012,-8.820996093750011],[116.58652343750012,-8.886132812499966],[116.23935546875006,-8.912109375000014],[115.85732421875005,-8.787890625000017],[116.07646484375002,-8.744921874999974],[116.06113281250006,-8.437402343750023],[116.4015625000001,-8.204199218750034],[116.7189453125001,-8.336035156249977],[116.64082031250004,-8.613867187500006]]],[[[124.28662109375003,-8.32949218749998],[124.14667968750004,-8.531445312499997],[123.92773437500003,-8.448925781249969],[124.23955078125002,-8.20341796874996],[124.28662109375003,-8.32949218749998]]],[[[123.92480468750003,-8.2724609375],[123.55302734375007,-8.566796875],[123.23007812500006,-8.530664062500023],[123.47587890625007,-8.322265625000014],[123.39121093750012,-8.280468750000026],[123.77597656250006,-8.190429687499986],[123.92480468750003,-8.2724609375]]],[[[138.89511718750006,-8.388671874999957],[138.56337890625,-8.30908203125],[138.79619140625007,-8.173632812500017],[138.89511718750006,-8.388671874999957]]],[[[117.55634765625004,-8.367285156249949],[117.49052734375007,-8.183398437499974],[117.66503906249997,-8.148242187500003],[117.55634765625004,-8.367285156249949]]],[[[124.5755859375,-8.140820312499997],[125.05029296874997,-8.179589843749994],[125.13173828125,-8.326464843749989],[124.38066406250002,-8.41513671875002],[124.43066406249997,-8.18320312500002],[124.5755859375,-8.140820312499997]]],[[[127.8234375000001,-8.098828124999969],[128.11923828125012,-8.17070312499996],[128.02353515625006,-8.255371093749972],[127.82089843750012,-8.190234375000031],[127.8234375000001,-8.098828124999969]]],[[[122.7829101562501,-8.61171875],[121.65136718749997,-8.898730468749946],[121.41464843750006,-8.81484375],[121.32832031250004,-8.916894531250009],[121.03525390625012,-8.935449218749966],[120.55048828125004,-8.80185546875002],[119.909375,-8.857617187500011],[119.80791015625002,-8.697656250000023],[119.87480468750007,-8.419824218749994],[120.61025390625005,-8.24042968750004],[121.44453125000004,-8.57783203125004],[121.96650390625004,-8.455175781250006],[122.32324218749997,-8.628320312500023],[122.85048828125,-8.304394531250011],[122.91914062500004,-8.221875],[122.75859375000002,-8.185937499999952],[122.91699218749997,-8.105566406250006],[123.00595703125006,-8.329101562499986],[122.7829101562501,-8.61171875]]],[[[130.86220703125,-8.31875],[130.77519531250002,-8.34990234374996],[131.02011718750012,-8.091308593749943],[131.17636718750006,-8.130761718749994],[130.86220703125,-8.31875]]],[[[118.24238281250004,-8.317773437499994],[118.61191406250006,-8.28066406249998],[118.71386718749997,-8.41494140624998],[118.926171875,-8.297656249999974],[119.12968750000002,-8.668164062499969],[118.74589843750002,-8.735449218749991],[118.83261718750012,-8.833398437499966],[118.47861328125012,-8.856445312499957],[118.37890625000003,-8.674609375000031],[118.18994140624997,-8.840527343749997],[117.06132812500002,-9.099023437499994],[116.78847656250005,-9.006347656250028],[116.83505859375012,-8.532421875000026],[117.16484375000007,-8.367187500000014],[117.56708984375004,-8.426367187499991],[117.80605468750005,-8.711132812500011],[117.96953125000002,-8.728027343749986],[118.23486328124997,-8.591894531249963],[117.81484375000005,-8.342089843749974],[117.7552734375,-8.149511718749991],[118.11748046875007,-8.12226562500004],[118.24238281250004,-8.317773437499994]]],[[[115.44785156250012,-8.155175781249994],[115.70429687500004,-8.40712890624998],[115.14492187500005,-8.849023437500037],[115.05507812500005,-8.573046874999946],[114.61318359375,-8.37832031249998],[114.46757812500007,-8.166308593749946],[114.93847656249997,-8.18710937500002],[115.15400390625004,-8.065722656249974],[115.44785156250012,-8.155175781249994]]],[[[129.83886718749997,-7.954589843749986],[129.71347656250012,-8.04072265625004],[129.60898437500006,-7.803417968750011],[129.81298828124997,-7.819726562499952],[129.83886718749997,-7.954589843749986]]],[[[126.80097656250004,-7.667871093750009],[126.4720703125,-7.950390625000011],[126.04003906250003,-7.885839843750006],[125.79824218750005,-7.984570312499969],[125.97529296875004,-7.663378906249989],[126.21367187500002,-7.706738281250026],[126.60957031250004,-7.571777343749972],[126.80097656250004,-7.667871093750009]]],[[[127.41943359375003,-7.623046875000028],[127.37070312500012,-7.512792968749949],[127.47519531250012,-7.531054687500031],[127.41943359375003,-7.623046875000028]]],[[[138.53535156250004,-8.273632812499969],[138.2962890625,-8.405175781250037],[137.65039062499997,-8.386132812499966],[138.08183593750002,-7.566210937500003],[138.29550781250012,-7.4384765625],[138.76982421875002,-7.390429687499974],[138.98906250000002,-7.696093749999989],[138.53535156250004,-8.273632812499969]]],[[[131.3255859375,-7.999511718749986],[131.11376953125003,-7.997363281249989],[131.13779296875012,-7.684863281250017],[131.64345703125,-7.11279296875],[131.73613281250007,-7.197070312500017],[131.64384765625002,-7.266894531249946],[131.62441406250005,-7.626171874999955],[131.3255859375,-7.999511718749986]]],[[[131.98203125000006,-7.202050781249966],[131.75078125000002,-7.116796875],[131.92226562500005,-7.104492187499986],[131.98203125000006,-7.202050781249966]]],[[[128.6701171875001,-7.183300781249969],[128.52978515625003,-7.134570312499989],[128.62773437500007,-7.06875],[128.6701171875001,-7.183300781249969]]],[[[120.77441406250003,-7.118945312500003],[120.64082031250004,-7.115820312499991],[120.63339843750006,-7.018261718750011],[120.77441406250003,-7.118945312500003]]],[[[113.84453125000007,-7.105371093749994],[113.12695312499997,-7.224121093750028],[112.72587890625007,-7.072753906250014],[112.86806640625,-6.899902343749972],[113.06738281250003,-6.879980468749991],[113.97470703125012,-6.873046875],[114.0736328125,-6.960156249999983],[113.84453125000007,-7.105371093749994]]],[[[115.37705078125006,-6.97080078125002],[115.22031250000012,-6.952539062500037],[115.24052734375007,-6.861230468749994],[115.54609375000004,-6.938671874999955],[115.37705078125006,-6.97080078125002]]],[[[105.25283203125005,-6.640429687499946],[105.12138671875007,-6.614941406249997],[105.26054687500002,-6.523925781250014],[105.25283203125005,-6.640429687499946]]],[[[134.53681640625004,-6.442285156249994],[134.32275390624997,-6.84873046875002],[134.09082031249997,-6.833789062500003],[134.10703125000006,-6.471582031250009],[134.19462890625007,-6.459765625],[134.11464843750005,-6.190820312500009],[134.53681640625004,-6.442285156249994]]],[[[107.37392578125005,-6.007617187499989],[107.66679687500002,-6.215820312499957],[108.33017578125012,-6.286035156249966],[108.67783203125006,-6.790527343749972],[110.42626953124997,-6.947265625000028],[110.83476562500002,-6.424218749999952],[110.97226562500012,-6.435644531249977],[111.18154296875005,-6.686718749999969],[111.54033203125002,-6.648242187500031],[112.0873046875,-6.89335937499996],[112.53925781250004,-6.926464843749955],[112.64873046875007,-7.221289062499977],[112.7943359375,-7.304492187499974],[112.79453125000012,-7.55244140625004],[113.01357421875005,-7.657714843749986],[113.49765625000006,-7.723828124999955],[114.07070312500005,-7.633007812500011],[114.40927734375012,-7.79248046875],[114.38691406250004,-8.405175781250037],[114.58378906250002,-8.769628906250034],[113.25332031250005,-8.286718749999963],[112.67880859375006,-8.409179687499957],[111.50996093750004,-8.30507812499998],[110.60722656250002,-8.149414062499972],[109.28164062500005,-7.704882812500003],[108.74121093749997,-7.667089843750034],[108.45175781250006,-7.79697265625002],[107.91748046875003,-7.724121093750014],[107.28496093750007,-7.471679687500014],[106.45527343750004,-7.368652343749986],[106.51972656250004,-7.053710937499943],[106.19824218749997,-6.927832031249977],[105.25546875000012,-6.835253906250031],[105.37089843750002,-6.664355468750031],[105.48369140625007,-6.781542968750017],[105.65507812500002,-6.469531249999946],[105.78691406250002,-6.456933593749966],[105.86826171875006,-6.11640625000004],[106.075,-5.914160156249963],[106.82519531249997,-6.098242187499977],[107.0462890625,-5.90419921874998],[107.37392578125005,-6.007617187499989]]],[[[120.52832031249997,-6.2984375],[120.48730468749997,-6.464843749999972],[120.47734375000007,-5.775292968750009],[120.52832031249997,-6.2984375]]],[[[112.7194335937501,-5.81103515625],[112.58603515625006,-5.803613281249994],[112.69003906250006,-5.726171875000034],[112.7194335937501,-5.81103515625]]],[[[132.80712890625003,-5.850781250000011],[132.68144531250002,-5.91259765625],[132.63017578125002,-5.60703125],[132.80712890625003,-5.850781250000011]]],[[[134.74697265625,-5.707031249999957],[134.71416015625007,-6.29511718750004],[134.44111328125004,-6.334863281249966],[134.15488281250006,-6.06289062499998],[134.3019531250001,-6.009765624999986],[134.34306640625002,-5.833007812499943],[134.20537109375002,-5.707226562499997],[134.34130859375003,-5.712890624999986],[134.57080078124997,-5.42734375],[134.74697265625,-5.707031249999957]]],[[[132.92626953124997,-5.902050781249983],[132.84501953125002,-5.987988281249997],[133.13847656250002,-5.317871093749986],[133.11962890625003,-5.575976562499989],[132.92626953124997,-5.902050781249983]]],[[[102.36718750000003,-5.478710937499983],[102.1107421875,-5.32255859374996],[102.3717773437501,-5.366406250000011],[102.36718750000003,-5.478710937499983]]],[[[123.62675781250007,-5.271582031249963],[123.58261718750006,-5.36738281250004],[123.54277343750002,-5.271093749999963],[123.62675781250007,-5.271582031249963]]],[[[122.04296874999997,-5.437988281250028],[121.80849609375,-5.256152343750017],[121.91367187500012,-5.072265624999957],[122.04101562500003,-5.158789062499991],[122.04296874999997,-5.437988281250028]]],[[[122.64511718750012,-5.26943359374998],[122.5638671875,-5.3875],[122.28310546875,-5.319531249999969],[122.39628906250002,-5.069824218749986],[122.36894531250007,-4.767187499999977],[122.70195312500002,-4.61865234375],[122.75986328125012,-4.933886718750003],[122.61406250000007,-5.138671874999986],[122.64511718750012,-5.26943359374998]]],[[[123.17978515625006,-4.551171875000023],[123.195703125,-4.82265625],[123.05517578124997,-4.748242187500026],[122.97167968750003,-5.138476562500031],[123.18730468750007,-5.333007812499957],[122.96875,-5.405761718749943],[122.81210937500012,-5.671289062499952],[122.64501953124997,-5.663378906250031],[122.58642578124997,-5.488867187500006],[122.76650390625005,-5.210156249999983],[122.85332031250007,-4.618359375000026],[123.074609375,-4.38691406250004],[123.17978515625006,-4.551171875000023]]],[[[133.57080078124997,-4.245898437500003],[133.621875,-4.299316406249957],[133.32089843750006,-4.111035156249969],[133.57080078124997,-4.245898437500003]]],[[[123.2423828125001,-4.112988281250011],[123.07617187499997,-4.227148437499991],[122.96904296875002,-4.029980468749969],[123.21191406250003,-3.997558593750028],[123.2423828125001,-4.112988281250011]]],[[[128.56259765625012,-3.58544921875],[128.39160156250003,-3.637890625000026],[128.45156250000005,-3.514746093749991],[128.56259765625012,-3.58544921875]]],[[[128.2755859375001,-3.67460937499996],[127.97802734374997,-3.770996093749972],[127.925,-3.69931640625002],[128.32910156249997,-3.51591796874996],[128.2755859375001,-3.67460937499996]]],[[[116.42412109375007,-3.464453124999963],[116.38779296875012,-3.636718749999972],[116.3265625,-3.539062499999972],[116.42412109375007,-3.464453124999963]]],[[[116.30332031250006,-3.868164062499957],[116.05878906250004,-4.006933593749991],[116.06357421875006,-3.457910156249952],[116.26972656250004,-3.251074218750006],[116.30332031250006,-3.868164062499957]]],[[[126.86113281250007,-3.087890624999986],[127.22734375000007,-3.391015625],[127.22958984375006,-3.633007812500011],[126.68632812500007,-3.823632812500037],[126.21455078125004,-3.605175781250026],[126.05654296875,-3.420996093749991],[126.08828125,-3.105468750000014],[126.86113281250007,-3.087890624999986]]],[[[106.88642578125004,-3.005273437500023],[106.7428710937501,-2.932812500000011],[106.91064453124997,-2.93398437499998],[106.88642578125004,-3.005273437500023]]],[[[129.75468750000007,-2.865820312500034],[130.3791015625001,-2.989355468749977],[130.56992187500006,-3.130859375000028],[130.85996093750006,-3.570312500000028],[130.805078125,-3.85771484374996],[129.844140625,-3.327148437499957],[129.51171875000003,-3.32851562499998],[129.46767578125005,-3.453222656249977],[128.8625,-3.234960937500006],[128.51660156249997,-3.449121093750037],[128.13203125000004,-3.157421875000026],[127.90234374999997,-3.496289062499955],[127.87792968749997,-3.222070312499966],[128.19853515625002,-2.865917968749969],[128.99111328125,-2.82851562499998],[129.17441406250006,-2.933496093749966],[129.48417968750002,-2.785742187499977],[129.75468750000007,-2.865820312500034]]],[[[100.42509765625007,-3.182910156249974],[100.46513671875007,-3.32851562499998],[100.20429687500004,-2.98681640625],[100.19853515625002,-2.785546875000023],[100.45458984375003,-3.001953124999972],[100.42509765625007,-3.182910156249974]]],[[[108.2072265625001,-2.997656249999977],[108.05527343750006,-3.22685546874996],[107.85820312500002,-3.086328125000023],[107.61445312500004,-3.209375],[107.56347656250003,-2.920117187499997],[107.66630859375002,-2.566308593750037],[107.83779296875005,-2.530273437499972],[108.21513671875002,-2.696972656250011],[108.29062500000012,-2.829980468750023],[108.2072265625001,-2.997656249999977]]],[[[100.20410156249997,-2.741015625000017],[100.01494140625007,-2.819726562499966],[99.98789062500006,-2.525390624999957],[100.20410156249997,-2.741015625000017]]],[[[99.84306640625007,-2.343066406250031],[99.60703125000012,-2.257519531250011],[99.57216796875005,-2.025781249999966],[99.84306640625007,-2.343066406250031]]],[[[126.055078125,-2.451269531249963],[125.86289062500006,-2.077148437499943],[125.92275390625,-1.974804687499969],[126.055078125,-2.451269531249963]]],[[[126.02421875000007,-1.789746093750011],[126.33173828125004,-1.822851562500006],[125.47919921875004,-1.940039062499991],[125.38720703124997,-1.843066406249946],[126.02421875000007,-1.789746093750011]]],[[[130.35332031250007,-1.690527343749963],[130.41884765625,-1.971289062499963],[130.24804687500003,-2.047753906249994],[129.7376953125,-1.866894531250011],[130.35332031250007,-1.690527343749963]]],[[[124.96953125000007,-1.70546875],[125.18789062500005,-1.712890624999986],[125.31406250000006,-1.877148437499969],[124.41777343750002,-2.005175781250031],[124.32968750000012,-1.858886718749972],[124.41757812500006,-1.659277343749991],[124.96953125000007,-1.70546875]]],[[[135.47421875000006,-1.591796875000014],[136.89257812500003,-1.799707031249994],[136.22812500000012,-1.893652343749949],[135.47421875000006,-1.591796875000014]]],[[[108.953125,-1.61962890625],[108.83789062499997,-1.661621093750028],[108.80371093750003,-1.567773437499994],[108.953125,-1.61962890625]]],[[[106.04570312500002,-1.669433593750014],[106.36591796875004,-2.464843749999972],[106.81845703125006,-2.573339843749963],[106.6120117187501,-2.895507812499957],[106.66718750000004,-3.071777343749986],[105.99873046875004,-2.824902343749955],[105.7858398437501,-2.18134765625004],[105.13339843750012,-2.042578125],[105.45957031250006,-1.574707031249986],[105.58544921875003,-1.526757812499994],[105.7008789062501,-1.731054687499963],[105.7204101562501,-1.533886718750026],[105.91005859375,-1.504980468749991],[106.04570312500002,-1.669433593750014]]],[[[123.59755859375,-1.704296875000011],[123.48251953125006,-1.681445312499974],[123.52851562500004,-1.502832031250009],[123.59755859375,-1.704296875000011]]],[[[128.1530273437501,-1.66054687499998],[127.56162109375012,-1.728515624999972],[127.39501953125003,-1.589843749999972],[127.64667968750004,-1.332421875],[128.1530273437501,-1.66054687499998]]],[[[123.2123046875,-1.171289062499966],[123.23779296874997,-1.389355468749983],[123.43476562500004,-1.236816406249986],[123.54726562500005,-1.337402343749957],[123.51191406250004,-1.447363281249977],[123.27490234374997,-1.437207031249955],[123.17294921875006,-1.616015624999974],[123.15039062500003,-1.304492187500003],[122.89042968750007,-1.58720703124996],[122.81083984375002,-1.432128906249986],[122.90800781250002,-1.182226562499963],[123.2123046875,-1.171289062499966]]],[[[109.71025390625007,-1.1806640625],[109.46367187500002,-1.277539062500026],[109.4759765625,-0.9853515625],[109.74335937500004,-1.039355468749989],[109.71025390625007,-1.1806640625]]],[[[134.96533203124997,-1.116015624999974],[134.86171875,-1.114160156249952],[134.82792968750002,-0.978808593750003],[134.99628906250004,-1.03408203124998],[134.96533203124997,-1.116015624999974]]],[[[99.16386718750007,-1.777929687500006],[98.82773437500006,-1.609960937499977],[98.60175781250004,-1.197851562499949],[98.67607421875007,-0.970507812500003],[98.93261718750003,-0.954003906250009],[99.2672851562501,-1.62773437499996],[99.16386718750007,-1.777929687500006]]],[[[131.00185546875005,-1.315527343750034],[130.78232421875006,-1.255468749999963],[130.67294921875006,-0.959765625000031],[131.03300781250007,-0.917578124999963],[131.00185546875005,-1.315527343750034]]],[[[135.38300781250004,-0.6513671875],[135.89355468749997,-0.725781249999969],[136.37529296875007,-1.094042968750031],[136.1647460937501,-1.214746093750023],[135.91503906250003,-1.178417968749997],[135.74707031249997,-0.823046874999974],[135.64570312500004,-0.881933593749991],[135.38300781250004,-0.6513671875]]],[[[127.30039062500012,-0.780957031250026],[127.1564453125001,-0.760937500000026],[127.20908203125006,-0.619335937499955],[127.30039062500012,-0.780957031250026]]],[[[130.6266601562501,-0.528710937499966],[130.46542968750006,-0.486523437499983],[130.6159179687501,-0.417285156250003],[130.6266601562501,-0.528710937499966]]],[[[121.86435546875012,-0.406835937500006],[121.88125,-0.502636718749983],[121.65527343749997,-0.526171874999989],[121.86435546875012,-0.406835937500006]]],[[[140.97343750000007,-2.609765625],[140.97353515625,-2.803417968750026],[140.975,-6.346093750000023],[140.86230468749997,-6.740039062499989],[140.97519531250006,-6.90537109375002],[140.97617187500012,-9.11875],[140.00292968749997,-8.19550781250004],[140.11699218750002,-7.923730468750009],[139.93476562500004,-8.101171875],[139.38564453125,-8.189062499999963],[139.24882812500002,-7.982421874999972],[138.890625,-8.237792968749943],[139.08798828125012,-7.587207031250017],[138.74794921875,-7.25146484375],[139.17685546875006,-7.1904296875],[138.84570312500003,-7.13632812499999],[138.60136718750007,-6.936523437499972],[138.86455078125007,-6.858398437499943],[138.43867187500004,-6.343359375],[138.2962890625,-5.94902343749996],[138.37460937500006,-5.84365234374998],[138.19960937500005,-5.80703125],[138.33964843750007,-5.675683593749966],[138.08710937500004,-5.70917968750004],[138.06083984375002,-5.46523437499998],[137.27978515624997,-4.945410156249949],[136.61884765625004,-4.81875],[135.97968750000004,-4.530859374999963],[135.19560546875007,-4.450683593749972],[134.67968749999997,-4.079101562499943],[134.70654296875003,-3.954785156250026],[134.88652343750007,-3.938476562499986],[134.26621093750012,-3.945800781249972],[134.14707031250006,-3.79677734374998],[133.97382812500004,-3.817968750000034],[133.67832031250006,-3.4794921875],[133.8415039062501,-3.054785156249991],[133.70039062500004,-3.0875],[133.653125,-3.364355468749991],[133.51816406250012,-3.411914062500003],[133.40087890625003,-3.899023437500034],[133.24873046875004,-4.062304687499989],[132.91445312500005,-4.05693359374996],[132.75390625000003,-3.703613281250014],[132.86972656250006,-3.550976562499997],[132.75136718750005,-3.294628906249997],[131.97119140624997,-2.788574218750014],[132.2306640625001,-2.680371093749997],[132.725,-2.789062500000028],[133.19101562500006,-2.43779296874996],[133.70009765625005,-2.624609375],[133.75332031250005,-2.450683593750014],[133.90488281250012,-2.390917968750003],[133.79101562500003,-2.293652343749997],[133.92158203125004,-2.102050781249957],[132.96279296875005,-2.272558593749963],[132.30761718749997,-2.24228515625002],[132.02343749999997,-1.99033203125002],[131.93037109375004,-1.559667968750034],[131.29375,-1.393457031250009],[130.99589843750007,-1.42470703124998],[131.1908203125,-1.165820312500003],[131.2572265625,-0.855468750000014],[131.80429687500006,-0.703808593750026],[132.39375,-0.355468750000028],[132.85644531250003,-0.417382812500023],[133.47265624999997,-0.726171874999963],[133.97451171875,-0.744335937500026],[134.11152343750004,-0.84677734375002],[134.07197265625004,-1.001855468749994],[134.25957031250007,-1.362988281250026],[134.105859375,-1.720996093749946],[134.19482421875003,-2.309082031249943],[134.45996093749997,-2.83232421874996],[134.48330078125,-2.583007812499972],[134.62744140624997,-2.536718749999963],[134.70214843749997,-2.933593749999986],[134.84335937500006,-2.909179687499986],[134.88681640625006,-3.209863281249966],[135.25156250000012,-3.368554687499966],[135.48662109375002,-3.34511718749998],[135.85917968750002,-2.99531250000004],[136.38994140625002,-2.273339843750037],[137.07207031250002,-2.105078124999949],[137.1710937500001,-2.025488281249991],[137.1234375,-1.840917968749963],[137.80625000000012,-1.483203125],[139.78955078125003,-2.34824218750002],[140.62255859374997,-2.44580078125],[140.74746093750005,-2.607128906249997],[140.97343750000007,-2.609765625]]],[[[104.47421875000012,-0.334667968749955],[104.59013671875002,-0.466601562500017],[104.36318359375,-0.658593749999966],[104.25712890625002,-0.463281249999966],[104.47421875000012,-0.334667968749955]]],[[[127.56699218750006,-0.318945312499949],[127.68242187500002,-0.46835937500002],[127.60498046874997,-0.610156249999946],[127.88017578125002,-0.808691406249991],[127.7611328125,-0.883691406249994],[127.62382812500002,-0.76601562499999],[127.46269531250002,-0.80595703124996],[127.46865234375,-0.64296875],[127.3,-0.500292968749946],[127.32509765625,-0.335839843750023],[127.45517578125012,-0.406347656249991],[127.56699218750006,-0.318945312499949]]],[[[127.24990234375005,-0.4953125],[127.11914062500003,-0.520507812499986],[127.12646484375003,-0.278613281250003],[127.29003906250003,-0.284375],[127.24990234375005,-0.4953125]]],[[[103.73652343750004,-0.347949218750003],[103.461328125,-0.357617187500011],[103.54892578125006,-0.227539062499986],[103.73652343750004,-0.347949218750003]]],[[[130.81328125000007,-0.004101562500026],[131.27685546875003,-0.149804687499952],[131.33974609375005,-0.290332031249989],[131.00537109374997,-0.360742187500037],[130.62216796875006,-0.0859375],[130.89921875000002,-0.344433593749997],[130.7501953125001,-0.44384765625],[130.6886718750001,-0.296582031250011],[130.55078124999997,-0.366406250000026],[130.23662109375002,-0.209667968749983],[130.3625,-0.072851562500006],[130.81328125000007,-0.004101562500026]]],[[[98.45927734375007,-0.530468749999969],[98.30966796875012,-0.531835937499977],[98.4271484375,-0.226464843750037],[98.3229492187501,-0.000781249999974],[98.54414062500004,-0.257617187499989],[98.45927734375007,-0.530468749999969]]],[[[104.77861328125007,-0.175976562499955],[105.00537109374997,-0.282812499999963],[104.44707031250002,-0.189160156249983],[104.54267578125004,0.01772460937498],[104.77861328125007,-0.175976562499955]]],[[[103.28447265625002,0.541943359375011],[103.13955078125,0.549072265625043],[103.18740234375,0.699755859375017],[103.28447265625002,0.541943359375011]]],[[[103.0275390625001,0.746630859374974],[102.4904296875001,0.856640625],[102.50664062500002,1.088769531250037],[103.00244140624997,0.859277343750009],[103.0275390625001,0.746630859374974]]],[[[103.42392578125012,1.048339843749972],[103.31542968750003,1.071289062500028],[103.37998046875006,1.133642578125034],[103.42392578125012,1.048339843749972]]],[[[103.16640625000005,0.870166015625003],[102.7018554687501,1.0537109375],[102.72558593749997,1.158837890625023],[102.99941406250005,1.067773437500023],[103.16640625000005,0.870166015625003]]],[[[104.02480468750005,1.180566406250009],[104.13984375000004,1.165576171874974],[104.06611328125004,0.989550781249989],[103.93222656250012,1.071386718749963],[104.02480468750005,1.180566406250009]]],[[[104.58535156250005,1.21611328124996],[104.66289062500002,1.04951171875004],[104.57519531250003,0.831933593750037],[104.43925781250002,1.050439453125051],[104.25195312499997,1.014892578125],[104.36181640624997,1.18149414062502],[104.58535156250005,1.21611328124996]]],[[[102.4271484375,0.990136718750023],[102.27958984375002,1.075683593750043],[102.25634765625003,1.397070312499963],[102.44287109374997,1.234228515625006],[102.4271484375,0.990136718750023]]],[[[97.48154296875006,1.465087890624972],[97.93193359375002,0.973925781250003],[97.82041015625012,0.564453124999986],[97.683984375,0.596093750000037],[97.60390625000005,0.83388671874998],[97.40537109375012,0.946972656250026],[97.07919921875006,1.425488281249983],[97.35595703124997,1.539746093749997],[97.48154296875006,1.465087890624972]]],[[[102.49189453125004,1.459179687500011],[102.49941406250005,1.330908203124991],[102.02402343750012,1.607958984375031],[102.49189453125004,1.459179687500011]]],[[[124.88886718750004,0.995312500000011],[124.42753906250002,0.470605468750051],[123.75380859375,0.305517578124991],[123.26542968750007,0.326611328125026],[122.996875,0.493505859375006],[121.01298828125002,0.441699218750017],[120.57900390625,0.5283203125],[120.19228515625,0.268505859374997],[120.01328125000012,-0.196191406249994],[120.062890625,-0.555566406250023],[120.240625,-0.868261718749949],[120.51757812499997,-1.039453125],[120.66738281250005,-1.370117187499972],[121.14853515625012,-1.33945312500002],[121.5755859375,-0.828515625000023],[121.96962890625005,-0.933300781249969],[122.27998046875004,-0.757031250000026],[122.88876953125006,-0.755175781250003],[122.8294921875,-0.658886718750026],[123.17148437500012,-0.57070312499999],[123.37968750000002,-0.648535156249949],[123.43417968750006,-0.778222656249994],[123.37792968749997,-1.004101562500011],[122.90283203125003,-0.900976562499963],[122.25068359375004,-1.555273437500034],[121.8585937500001,-1.69326171874998],[121.65097656250006,-1.895410156249952],[121.35546874999997,-1.878222656250003],[122.29169921875004,-2.907617187500023],[122.39902343750006,-3.200878906249997],[122.25292968749997,-3.620410156250017],[122.68964843750004,-4.084472656249972],[122.84794921875002,-4.064550781250006],[122.8722656250001,-4.391992187500009],[122.71972656250003,-4.340722656249952],[122.11425781250003,-4.540234375000011],[122.03808593749997,-4.832421875000023],[121.58867187500007,-4.759570312500017],[121.48652343750004,-4.581054687499972],[121.61806640625,-4.092675781249952],[120.89179687500004,-3.520605468750034],[121.05429687500012,-3.167089843749949],[121.0521484375,-2.751660156249955],[120.87939453124997,-2.64560546875002],[120.65361328125002,-2.667578124999977],[120.26103515625007,-2.949316406249991],[120.43662109375012,-3.70732421874996],[120.42011718750004,-4.617382812500011],[120.27929687499997,-5.146093749999977],[120.4303710937501,-5.591015625000026],[119.9515625,-5.577636718749972],[119.71728515625003,-5.693359375000014],[119.55742187500007,-5.611035156250026],[119.36035156249997,-5.314160156250026],[119.59404296875007,-4.523144531249997],[119.62363281250006,-4.034375],[119.46748046875004,-3.512988281249989],[118.99462890624997,-3.537597656250028],[118.86767578124997,-3.39804687500002],[118.78330078125006,-2.720800781249977],[119.09218750000005,-2.482910156250014],[119.32187500000012,-1.929687500000014],[119.308984375,-1.408203125],[119.508203125,-0.906738281249972],[119.71132812500005,-0.680761718750034],[119.84433593750006,-0.861914062499991],[119.721875,-0.088476562499991],[119.865625,0.040087890625003],[119.80927734375004,0.238671875000051],[119.9132812500001,0.445068359375],[120.26953125000003,0.970800781249991],[120.60253906249997,0.854394531249994],[120.86796875000007,1.25283203124998],[121.0817382812501,1.327636718750028],[121.40410156250002,1.243603515624969],[121.59179687499997,1.067968749999977],[122.43662109375006,1.018066406250028],[122.83828125,0.845703125],[123.06650390625006,0.941796875000037],[123.93076171875006,0.850439453124977],[124.53369140624997,1.230468750000043],[124.94707031250002,1.672167968749974],[125.11093750000012,1.685693359374966],[125.2337890625,1.502294921875006],[124.88886718750004,0.995312500000011]]],[[[101.70810546875006,2.078417968750045],[101.71943359375004,1.789160156250006],[101.50078125000002,1.733203124999974],[101.40966796875003,2.021679687500026],[101.70810546875006,2.078417968750045]]],[[[127.73271484375007,0.848144531250043],[127.8810546875001,0.832128906249977],[127.96728515624997,1.042578125000048],[128.16074218750006,1.1578125],[128.22246093750002,1.400634765624986],[128.68837890625,1.572558593750017],[128.70263671874997,1.106396484374997],[128.29882812500003,0.87680664062502],[128.26064453125,0.733789062500023],[128.61123046875,0.549951171875051],[128.89960937500004,0.216259765625011],[127.9831054687501,0.471875],[127.88740234375004,0.298339843750043],[127.97783203125002,-0.24833984374996],[128.4254882812501,-0.892675781249949],[128.04638671875003,-0.706054687499943],[127.69160156250004,-0.241894531249983],[127.70869140625004,0.288085937499986],[127.53710937500003,0.610888671875031],[127.60800781250006,0.848242187499977],[127.42851562500002,1.139990234374991],[127.63173828125,1.843701171875011],[128.03642578125002,2.199023437500017],[127.88681640625012,1.83295898437504],[128.0109375000001,1.701220703125031],[128.01171874999997,1.331738281249983],[127.65283203124997,1.013867187499969],[127.73271484375007,0.848144531250043]]],[[[97.3341796875001,2.075634765625011],[97.10830078125,2.216894531250006],[97.29140625,2.200830078125023],[97.3341796875001,2.075634765625011]]],[[[128.45390625000002,2.051757812500028],[128.29589843749997,2.034716796875017],[128.2179687500001,2.297460937499991],[128.60214843750012,2.59760742187504],[128.68847656250003,2.473681640625017],[128.62324218750004,2.224414062500031],[128.45390625000002,2.051757812500028]]],[[[96.46367187500002,2.360009765625037],[95.80859374999997,2.655615234375034],[95.7171875,2.825976562500017],[95.89580078125007,2.8890625],[96.41728515625007,2.515185546875031],[96.46367187500002,2.360009765625037]]],[[[108.8875,2.905419921875037],[108.7865234375,2.885644531250009],[108.88574218750003,2.998974609374997],[108.8875,2.905419921875037]]],[[[105.76035156250006,2.863037109375014],[105.69218750000002,3.0625],[105.83671875000007,2.97651367187504],[105.76035156250006,2.863037109375014]]],[[[106.28525390625006,3.15712890624998],[106.28369140624997,3.088232421874977],[106.20097656250002,3.204882812500031],[106.28525390625006,3.15712890624998]]],[[[117.65839843750004,3.280517578124986],[117.54785156250003,3.43198242187502],[117.68085937500004,3.407519531250017],[117.65839843750004,3.280517578124986]]],[[[125.65810546875,3.436035156250043],[125.51152343750007,3.461132812500011],[125.46884765625006,3.73325195312502],[125.65810546875,3.436035156250043]]],[[[117.88476562499997,4.186132812500006],[117.92285156250003,4.054296874999977],[117.73681640624997,4.004003906250034],[117.64902343750012,4.168994140624974],[117.88476562499997,4.186132812500006]]],[[[108.31601562500006,3.689648437500026],[108.10039062500002,3.70454101562504],[108.24326171875006,3.810351562500017],[108.00234375,3.982861328124983],[108.24833984375002,4.21713867187502],[108.39287109375007,3.986181640625034],[108.31601562500006,3.689648437500026]]],[[[117.5744140625001,4.17060546875004],[117.46533203124997,4.076074218749966],[117.77724609375005,3.689257812500031],[117.05595703125007,3.622656249999963],[117.34628906250006,3.426611328124991],[117.35244140625,3.19375],[117.61064453125002,3.064355468749994],[117.56914062500002,2.92929687500002],[117.69765625,2.887304687499991],[117.6388671875001,2.825292968749963],[118.0666015625001,2.317822265624969],[117.7892578125001,2.026855468750014],[118.98496093750006,0.982128906249983],[118.53476562500006,0.813525390625017],[118.19609375000002,0.874365234374977],[117.91162109374997,1.098681640625017],[117.96425781250005,0.889550781250051],[117.74511718749997,0.72963867187498],[117.52216796875004,0.235888671875017],[117.46289062500003,-0.323730468749957],[117.5625,-0.770898437500009],[116.91396484375,-1.223632812499972],[116.73984375000006,-1.044238281250017],[116.75341796874997,-1.327343749999955],[116.27548828125006,-1.784863281249997],[116.42431640625003,-1.784863281249997],[116.45195312500002,-1.923144531250017],[116.31396484374997,-2.139843750000011],[116.56542968749997,-2.299707031249994],[116.52929687499997,-2.51054687499996],[116.31679687500005,-2.55185546875002],[116.33066406250012,-2.902148437499974],[116.16630859375002,-2.934570312500014],[116.2572265625,-3.126367187500009],[115.95615234375012,-3.595019531250003],[114.6935546875001,-4.169726562500017],[114.5255859375001,-3.376660156250011],[114.44599609375004,-3.481835937500037],[114.34433593750012,-3.444433593749963],[114.34433593750012,-3.23515625],[114.23632812500003,-3.36113281249996],[114.0822265625001,-3.27890625],[113.70507812499997,-3.45527343750004],[113.6100585937501,-3.195703125],[113.34316406250005,-3.246484374999966],[113.03398437500002,-2.933496093749966],[112.97148437500002,-3.187109375000034],[112.75800781250004,-3.322167968750009],[112.60029296875004,-3.400488281249977],[112.28496093750002,-3.32099609375004],[111.85810546875004,-3.551855468750006],[111.82304687500007,-3.057226562499949],[111.69472656250005,-2.88945312499996],[110.93007812500005,-3.071093750000017],[110.82968750000012,-2.9951171875],[110.89931640625,-2.908593749999952],[110.703125,-3.020898437500009],[110.57402343750007,-2.89140625],[110.25605468750004,-2.966113281249946],[110.09658203125,-2.001367187499966],[109.95986328125,-1.862792968749972],[109.98330078125,-1.274804687499994],[109.78740234375007,-1.011328124999963],[109.25878906250003,-0.807421874999989],[109.37275390625004,-0.638183593749972],[109.12109375000003,-0.39091796874996],[109.2575195312501,0.031152343750051],[108.94453125000004,0.355664062499997],[108.91679687500007,0.912646484375045],[108.95859375000006,1.134619140624963],[109.1315429687501,1.253857421875011],[109.01025390624997,1.239648437500051],[109.07587890625004,1.495898437500031],[109.37851562500006,1.922705078125034],[109.62890625000003,2.027539062499983],[109.53896484375,1.89619140625004],[109.65400390625004,1.614892578125023],[110.50576171875005,0.861962890625023],[111.10136718750002,1.050537109374986],[111.80898437500005,1.011669921874969],[112.078515625,1.143359374999974],[112.1857421875001,1.4390625],[112.47617187500006,1.559082031250028],[112.94296875000006,1.566992187500034],[113.00654296875004,1.433886718750003],[113.6222656250001,1.2359375],[113.90234375000003,1.434277343749997],[114.5125,1.452001953124963],[114.83056640625003,1.980029296874989],[114.78642578125002,2.250488281250014],[115.1791015625,2.523193359374972],[115.08076171875004,2.63422851562504],[115.117578125,2.89487304687502],[115.24697265625005,3.025927734374989],[115.45439453125002,3.034326171875009],[115.67880859375006,4.193017578124994],[115.86074218750005,4.348046875000037],[116.51474609375006,4.370800781249969],[117.10058593750003,4.337060546875023],[117.5744140625001,4.17060546875004]]],[[[126.81660156250004,4.033496093750003],[126.70449218750005,4.070996093749997],[126.81357421875006,4.258496093750011],[126.72207031250005,4.344189453124969],[126.75732421874997,4.547900390624989],[126.9210937500001,4.291015624999972],[126.81660156250004,4.033496093750003]]],[[[96.49257812500005,5.229345703124991],[97.54716796875002,5.205859375],[98.2484375,4.41455078125],[98.3073242187501,4.09287109375002],[99.73232421875005,3.183056640625026],[100.523828125,2.18916015625004],[100.88789062500004,1.948242187499986],[100.82822265625012,2.242578125],[101.04619140625002,2.257470703125023],[101.47666015625006,1.693066406250054],[102.019921875,1.442138671875],[102.38994140625007,0.84199218750004],[103.03183593750006,0.57890625],[103.0075195312501,0.415332031249974],[102.55,0.216455078124966],[103.33896484375012,0.513720703125045],[103.67265625000007,0.288916015624977],[103.78671875000012,0.046972656249991],[103.42851562500007,-0.19179687499998],[103.40517578125005,-0.36220703124998],[103.5091796875,-0.465527343749969],[103.43857421875006,-0.575585937500009],[103.72109375,-0.886718749999986],[104.36054687500004,-1.038378906249974],[104.51591796875002,-1.81943359375002],[104.84521484375003,-2.092968749999969],[104.65078125000005,-2.595214843749972],[104.97080078125012,-2.370898437500017],[105.39697265624997,-2.380175781249946],[106.0443359375,-3.10625],[105.84375,-3.61367187499998],[105.93046875000007,-3.833007812499986],[105.83144531250005,-4.16289062499996],[105.88720703124997,-5.009570312499974],[105.74833984375007,-5.818261718749966],[105.34941406250007,-5.549511718750011],[105.08134765625002,-5.74550781249998],[104.63955078125005,-5.520410156250037],[104.68398437500005,-5.89267578125002],[104.60156249999997,-5.90458984374996],[103.8314453125,-5.079589843750028],[102.53769531250006,-4.152148437499989],[102.12753906250006,-3.599218749999963],[101.57861328124997,-3.166992187500014],[100.88955078125,-2.248535156249957],[100.85527343750002,-1.934179687499949],[100.30820312500006,-0.82666015625],[99.66982421875005,0.045068359375037],[99.15917968749997,0.351757812499997],[98.59531250000006,1.864599609375006],[97.70078125000006,2.358544921875009],[97.59082031249997,2.846582031250037],[97.3913085937501,2.975292968749969],[96.9689453125001,3.575146484374969],[96.44472656250005,3.81630859374998],[95.57861328125003,4.661962890625048],[95.20664062500006,5.284033203125034],[95.22783203125002,5.564794921875034],[95.62890625000003,5.609082031249997],[96.13330078125003,5.294287109374991],[96.49257812500005,5.229345703124991]]]]},"properties":{"name":"Indonesia","childNum":107}},{"geometry":{"type":"Polygon","coordinates":[[[-4.412060546874983,54.185351562499996],[-4.785351562499983,54.073046875],[-4.424707031249994,54.407177734375],[-4.412060546874983,54.185351562499996]]]},"properties":{"name":"Isle of Man","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[75.32221348233018,32.28516356678968],[75.62496871116024,32.28516356678968],[75.73585997688717,32.78417426256088],[76.32728006076415,32.87658365066666],[76.62299010270264,33.32014871357439],[77.06655516561037,33.301666835953235],[77.71342088235082,32.6917648744551],[78.10154031239509,32.87658365066666],[78.49194250885338,32.53122786149202],[78.38964843749997,32.51987304687498],[78.41748046874997,32.466699218749994],[78.4552734375001,32.30034179687502],[78.49589843750002,32.21577148437504],[78.72558593750009,31.983789062500023],[78.71972656250009,31.887646484374983],[78.69345703125006,31.740380859374994],[78.7550781250001,31.55029296875],[78.74355468750005,31.323779296875017],[79.10712890625004,31.402636718750102],[79.38847656250013,31.064208984375085],[79.66425781250004,30.96523437499999],[79.92451171875004,30.888769531250034],[80.20712890625006,30.683740234375023],[80.19121093750002,30.56840820312496],[80.87353515625003,30.290576171875045],[80.98544921875006,30.23710937499999],[81.01025390625014,30.164501953125097],[80.96611328125002,30.180029296875063],[80.90761718750005,30.171923828125017],[80.84814453125009,30.139746093750034],[80.81992187500012,30.119335937499955],[80.68408203125014,29.994335937500068],[80.54902343750015,29.899804687499994],[80.40185546875003,29.730273437500102],[80.31689453125014,29.572070312500017],[80.25488281250009,29.423339843750114],[80.25595703125006,29.318017578125136],[80.23300781250006,29.194628906250045],[80.16953125000012,29.124316406250102],[80.13046875000006,29.100390625000045],[80.08457031249995,28.994189453125074],[80.05166015625,28.870312500000068],[80.07070312500005,28.830175781250063],[80.22656250000003,28.723339843750125],[80.32480468750012,28.66640625000008],[80.41855468749995,28.61201171875001],[80.47910156250012,28.604882812499994],[80.49580078125015,28.635791015625074],[80.51787109375002,28.665185546875023],[80.58701171875006,28.64960937500004],[81.16894531250014,28.335009765625074],[81.85263671875018,27.867089843750136],[81.89687500000011,27.87446289062504],[81.94521484375005,27.89926757812495],[81.98769531250016,27.91376953125004],[82.03701171875,27.90058593750004],[82.11191406250006,27.86494140625004],[82.28769531250018,27.756542968749983],[82.45136718750004,27.671826171874955],[82.62988281249997,27.687060546875045],[82.67734375000006,27.67343749999995],[82.71083984375005,27.596679687500114],[82.73339843750003,27.518994140625097],[83.28974609375004,27.370996093750136],[83.36943359375002,27.410253906249977],[83.38398437500004,27.444824218750085],[83.44716796875011,27.46533203125],[83.55166015625011,27.456347656249932],[83.74697265625011,27.395947265625068],[83.8288085937501,27.377832031250108],[84.09101562499993,27.491357421875136],[84.22978515625007,27.427832031250006],[84.48085937500005,27.348193359375102],[84.61015625000002,27.298681640624977],[84.64072265625012,27.249853515624977],[84.65478515625014,27.20366210937499],[84.65380859375009,27.09169921875008],[84.68535156250013,27.041015625000057],[85.19179687500011,26.766552734375097],[85.29296875000009,26.741015625000045],[85.56845703125012,26.839843750000114],[85.64843749999997,26.829003906250023],[85.69990234375004,26.781640624999966],[85.73730468750003,26.639746093750034],[85.79453125000006,26.60415039062505],[86.00732421875009,26.64936523437504],[86.70136718750015,26.435058593750057],[87.01640625000002,26.555419921875085],[87.2874023437499,26.360302734375125],[87.41357421875014,26.42294921875009],[87.84921875000006,26.43691406250008],[87.99511718750014,26.38237304687499],[88.02695312500023,26.395019531250085],[88.05488281250004,26.43002929687492],[88.11152343750004,26.58642578125],[88.1615234375,26.724804687500125],[88.15722656250009,26.807324218750068],[88.1110351562501,26.928466796875057],[87.99316406250009,27.086083984374994],[87.984375,27.133935546874994],[88.14697265625014,27.749218750000097],[88.15029296875011,27.843310546875074],[88.10976562500005,27.87060546874997],[88.10898437499995,27.93300781250005],[88.14111328125003,27.948925781250097],[88.27519531250013,27.96884765625009],[88.42597656250015,28.011669921875097],[88.57792968750002,28.093359375000034],[88.80371093750003,28.006933593750034],[88.74902343749997,27.521875000000136],[88.7648437500001,27.429882812500068],[88.83251953125003,27.362841796875074],[88.89140625000002,27.316064453125136],[88.88164062500007,27.29746093750009],[88.76035156250006,27.21811523437509],[88.73876953125009,27.175585937499932],[88.85761718750015,26.961474609375017],[89.14824218750002,26.816162109375085],[89.33212890625018,26.848632812500114],[89.58613281250004,26.778955078125136],[89.60996093750012,26.719433593750097],[89.71093750000009,26.713916015625045],[89.76386718750004,26.7015625],[89.94316406250013,26.723925781249932],[90.12294921875011,26.754589843749983],[90.20605468749997,26.847509765625063],[90.34589843750004,26.890332031250097],[90.73964843750005,26.771679687500068],[91.2865234375,26.78994140625008],[91.42675781249997,26.867089843749966],[91.45585937500013,26.866894531250125],[91.51757812500009,26.807324218750068],[91.67158203124993,26.80200195312503],[91.84208984375013,26.852978515625125],[91.94375,26.860839843750114],[91.99833984375013,26.85498046875],[92.04970703125016,26.87485351562495],[92.73155507489682,26.833697862861648],[93.30975376159499,26.784950522650554],[93.61047043679247,27.32239435188504],[94.06979001484449,27.589407158584788],[95.10800937321915,27.749636881153737],[95.74000740838363,28.116850432722256],[96.19577594042592,28.04291597700983],[96.96279296875,27.698291015625017],[96.88359375000013,27.514843750000125],[96.90195312500012,27.43959960937508],[97.10371093749993,27.163330078125114],[97.10205078125003,27.115429687500125],[96.95341796875013,27.13330078125003],[96.79785156249997,27.29619140624999],[96.19082031250005,27.26127929687499],[95.20146484375007,26.641406250000017],[95.05976562500015,26.473974609375006],[95.06894531250006,26.191113281250097],[95.10839843750014,26.091406250000034],[95.12929687500011,26.070410156250034],[95.13242187500006,26.041259765624943],[94.99199218750002,25.77045898437504],[94.66777343750007,25.458886718749966],[94.55302734375013,25.215722656249994],[94.70371093750012,25.097851562499955],[94.49316406250003,24.637646484374983],[94.37724609375002,24.473730468750006],[94.29306640625012,24.321875],[94.07480468750006,23.8720703125],[93.68339843750007,24.00654296875004],[93.45214843750003,23.987402343750034],[93.32626953125006,24.064208984375057],[93.36601562500007,23.132519531249955],[93.34941406250007,23.08496093750003],[93.20390625000002,23.03701171875005],[93.07871093750018,22.718212890625097],[93.16201171875,22.360205078125006],[93.07060546875002,22.20942382812501],[92.96455078125015,22.003759765625034],[92.90947265625013,21.988916015625023],[92.85429687500002,22.010156250000108],[92.77138671875,22.104785156250017],[92.68896484375009,22.130957031250006],[92.63037109375014,22.011328124999977],[92.57490234374993,21.97807617187496],[92.5612304687501,22.04804687500001],[92.49140625000004,22.685400390625006],[92.46445312500006,22.734423828125045],[92.36162109375002,22.929003906250074],[92.33378906250002,23.242382812499955],[92.24609375000003,23.68359374999997],[92.04404296875006,23.677783203125017],[91.97851562500003,23.691992187500063],[91.92958984375011,23.685986328125097],[91.92949218750019,23.598242187499977],[91.93789062500011,23.504687500000102],[91.75419921875013,23.28730468750004],[91.75097656250003,23.053515625000017],[91.55351562500013,22.991552734375006],[91.43623046875004,23.19990234375001],[91.359375,23.06835937500003],[91.16044921875019,23.660644531250085],[91.35019531250012,24.06049804687501],[91.72656250000003,24.20507812499997],[91.84619140624997,24.175292968749943],[92.06416015625004,24.374365234375006],[92.11748046875002,24.493945312500017],[92.22666015625012,24.77099609374997],[92.22832031250002,24.881347656250085],[92.2512695312499,24.895068359375045],[92.38496093750004,24.848779296875023],[92.46835937500018,24.944140625000074],[92.04970703125016,25.16948242187499],[90.61308593750002,25.16772460937497],[90.11962890625003,25.21997070312497],[89.86630859375012,25.293164062499955],[89.81406250000006,25.305371093749955],[89.80087890625012,25.33613281250001],[89.82490234375004,25.56015625],[89.82294921875015,25.94140625000003],[89.67089843750009,26.213818359375125],[89.57275390625003,26.13232421875003],[89.54990234375006,26.00527343750008],[89.28925781250015,26.037597656250085],[89.01865234375012,26.410253906249977],[88.95195312500002,26.412109375],[88.97041015625004,26.250878906250023],[88.94072265625002,26.24536132812497],[88.68281250000004,26.291699218749983],[88.51826171875004,26.51777343750004],[88.36992187500002,26.56411132812508],[88.35146484375005,26.482568359374966],[88.38623046875003,26.471533203125034],[88.44042968749997,26.369482421875034],[88.33398437499997,26.257519531249955],[88.15078125000005,26.087158203125057],[88.1066406250001,25.841113281250045],[88.14746093749997,25.811425781250023],[88.50244140625009,25.53701171875008],[88.76914062500006,25.490478515625],[88.85478515625002,25.333544921875017],[88.94414062500002,25.290771484375],[88.92978515625012,25.222998046875063],[88.57382812500006,25.18789062499999],[88.45625,25.188427734375125],[88.37294921875016,24.961523437500063],[88.31337890625011,24.8818359375],[88.27949218750015,24.881933593750034],[88.18886718750016,24.920605468750097],[88.14980468750011,24.91464843749995],[88.04511718750015,24.71303710937508],[88.03027343750009,24.664453125000136],[88.02343750000003,24.627832031250136],[88.07910156250009,24.549902343750063],[88.14550781250003,24.485791015624955],[88.225,24.460644531249983],[88.3375,24.45385742187503],[88.49853515625003,24.34663085937504],[88.64228515625015,24.325976562500102],[88.72353515625011,24.27490234375],[88.7335937500001,24.230908203125097],[88.72656250000009,24.18623046875004],[88.71376953125016,24.069628906250102],[88.69980468750006,24.00253906249992],[88.56738281250009,23.674414062500034],[88.63574218749997,23.55],[88.69765625,23.493017578125034],[88.72441406250002,23.254980468750034],[88.89707031250018,23.21040039062501],[88.92812500000011,23.186621093749977],[88.89970703125002,22.843505859375057],[88.92070312500002,22.632031249999955],[89.05,22.274609374999983],[89.02792968750023,21.937207031249983],[88.94931640625018,21.937939453125125],[89.05166015625,21.654101562500045],[88.85751953125012,21.744677734375017],[88.74501953125011,21.584375],[88.74023437500003,22.005419921875017],[88.64160156250003,22.121972656250136],[88.58466796875015,21.659716796874932],[88.44599609375004,21.614257812500085],[88.28750000000016,21.758203125000108],[88.25371093750002,21.622314453124943],[88.0568359375001,21.694140625000017],[88.19628906249997,22.139550781249994],[87.94140625000003,22.374316406250045],[88.15927734375018,22.12172851562508],[87.82373046875003,21.727343750000045],[87.20068359375009,21.544873046874983],[86.95410156250014,21.365332031250006],[86.84228515625009,21.106347656249994],[86.97548828125005,20.70014648437501],[86.75039062500011,20.313232421875057],[86.37656250000006,20.006738281249966],[86.24521484375012,20.05302734374999],[86.27949218750021,19.919433593749943],[85.575,19.69291992187499],[85.496875,19.696923828125108],[85.50410156250004,19.887695312500057],[85.24863281250006,19.757666015625034],[85.18076171875018,19.59487304687508],[85.44160156249993,19.626562499999977],[84.77099609375009,19.125390625000023],[84.10410156250018,18.29267578125001],[82.35957031250004,17.09619140624997],[82.25878906250014,16.55986328124996],[81.76191406250015,16.32949218750008],[81.28613281249997,16.337060546875023],[80.97871093750004,15.758349609375074],[80.64658203125006,15.895019531250028],[80.29345703125014,15.710742187499989],[80.0534179687501,15.074023437499932],[80.17871093750003,14.478320312500074],[80.11171875000005,14.212207031250045],[80.30654296875016,13.485058593750054],[80.15625,13.713769531250108],[80.06210937500006,13.60625],[80.34238281250006,13.361328125000071],[80.22910156250018,12.690332031249966],[79.85849609375018,11.988769531250043],[79.69316406250007,11.312548828124946],[79.79902343750004,11.338671874999932],[79.84863281250009,11.196875],[79.83818359375002,10.322558593750045],[79.31455078125018,10.256689453124949],[78.93994140625009,9.565771484375063],[79.01992187500005,9.333349609374963],[79.41142578125002,9.192382812500014],[78.97958984375018,9.268554687500085],[78.42148437500006,9.105029296874989],[78.19248046874995,8.890869140625057],[78.06015625000006,8.384570312499932],[77.51757812500003,8.078320312500068],[77.06591796875003,8.315917968749986],[76.5534179687501,8.902783203124997],[76.32460937500016,9.452099609374997],[76.24238281250004,9.927099609374949],[76.37558593750006,9.539892578124935],[76.45878906250013,9.536230468750077],[76.34648437500002,9.922119140625],[76.19560546875002,10.086132812500026],[75.72382812500015,11.361767578125026],[74.94550781250004,12.56455078124992],[74.38222656250005,14.494726562500048],[73.94921875000014,15.074755859375088],[73.80078125000009,15.39697265625],[73.93193359375013,15.39697265625],[73.77177734375013,15.573046874999989],[73.83281250000013,15.659375],[73.67988281250015,15.708886718750136],[73.47607421875003,16.05424804687496],[72.87548828124997,18.642822265625114],[72.97207031250011,19.15332031250003],[72.8346679687501,18.975585937500057],[72.80302734375013,19.07929687500004],[72.81162109375,19.298925781250006],[72.98720703125,19.27744140625009],[72.78789062500013,19.362988281250097],[72.66777343750019,19.83095703125005],[72.89375,20.672753906250136],[72.81386718750011,21.117187500000085],[72.62382812500002,21.371972656250108],[72.73476562500016,21.470800781250006],[72.61328125000009,21.461816406250108],[73.1125,21.750439453125125],[72.54306640625,21.69658203124999],[72.70019531250003,21.971923828124943],[72.52226562500013,21.976220703125108],[72.55302734375007,22.159960937500074],[72.80917968749995,22.23330078125008],[72.18281250000015,22.26972656250004],[72.30644531250002,22.18920898437497],[72.27441406250009,22.089746093749966],[72.03720703125006,21.82304687499999],[72.2103515625,21.72822265625004],[72.25400390625006,21.531005859375],[72.01523437500012,21.155712890625097],[71.0246093750001,20.73886718750009],[70.71933593750006,20.740429687500068],[70.12734375,21.094677734375097],[68.96992187500021,22.29028320312497],[69.05166015625016,22.437304687500074],[69.27656250000004,22.285498046875063],[70.17724609375014,22.57275390624997],[70.48925781250009,23.08950195312508],[70.33945312500012,22.939746093749932],[69.66464843750006,22.759082031250074],[69.23593749999995,22.848535156250023],[68.64072265625006,23.189941406250114],[68.41748046875009,23.57148437500004],[68.7767578125,23.852099609375017],[68.23496093749995,23.596972656250074],[68.16503906250009,23.857324218749994],[68.28251953125013,23.927978515625],[68.38125000000016,23.950878906250068],[68.48867187500011,23.96723632812501],[68.5866210937501,23.966601562500074],[68.72412109375003,23.964697265625034],[68.72812500000012,24.265625],[68.73964843750016,24.291992187500085],[68.75898437499993,24.307226562500006],[68.78115234375011,24.313720703125085],[68.8,24.30908203125003],[68.82832031250004,24.26401367187509],[68.86347656250015,24.26650390625005],[68.90078125000011,24.29243164062501],[68.98457031250015,24.273095703124966],[69.05156250000013,24.28632812500001],[69.11953125000011,24.26865234374995],[69.23505859374993,24.268261718750068],[69.44345703124995,24.275390625000085],[69.55917968750006,24.273095703124966],[69.80517578125009,24.16523437500004],[70.0982421875,24.2875],[70.28906250000009,24.356298828125063],[70.54677734375,24.418310546875063],[70.56503906250006,24.385791015625017],[70.55585937500015,24.331103515625074],[70.57929687500015,24.279052734374943],[70.65947265625013,24.24609374999997],[70.71630859375009,24.237988281250097],[70.7672851562501,24.245410156250017],[70.80507812500011,24.26196289062503],[70.88623046875014,24.34375],[70.92812500000016,24.362353515625045],[70.98281250000011,24.361035156250125],[71.04404296875006,24.400097656250097],[71.04531250000005,24.42998046874996],[70.96982421875012,24.571875],[70.97636718750013,24.61875],[71.00234375000016,24.6539062499999],[71.04785156250003,24.687744140625085],[71.02070312500021,24.75766601562492],[70.95087890625015,24.89160156250003],[70.87773437500019,25.06298828124997],[70.65205078125004,25.422900390625102],[70.64843750000003,25.666943359375068],[70.5695312500001,25.705957031250023],[70.50585937500009,25.685302734375085],[70.44853515625013,25.681347656249983],[70.26464843750009,25.70654296874997],[70.10019531250006,25.91005859375005],[70.14921875000002,26.347558593749994],[70.11464843750016,26.548046874999983],[69.47001953125002,26.804443359375],[69.56796875,27.174609375000102],[69.89628906250007,27.473632812500085],[70.04980468750009,27.694726562500023],[70.14453125000003,27.849023437499994],[70.19394531250006,27.89487304687492],[70.24433593750004,27.934130859375102],[70.4037109375,28.025048828124994],[70.48857421875013,28.023144531250125],[70.62910156250015,27.937451171875068],[70.6916015625001,27.76899414062504],[70.79794921875012,27.709619140625023],[70.87490234375016,27.71445312499995],[71.18476562500004,27.831640625],[71.54296875000003,27.869873046875],[71.8703125000001,27.9625],[71.88886718750004,28.04746093749992],[71.94804687500002,28.177294921875102],[72.12851562500012,28.34633789062508],[72.29199218750003,28.69726562499997],[72.34189453125006,28.751904296875097],[72.90332031250003,29.02875976562501],[73.38164062500013,29.934375],[73.8091796875,30.093359375],[73.88652343750013,30.162011718750136],[73.93339843750002,30.222070312500108],[73.92460937500007,30.28164062499999],[73.88271484375,30.352148437499977],[73.89931640625,30.435351562500045],[74.00898437500004,30.519677734374994],[74.33935546875003,30.893554687499943],[74.38037109375003,30.89340820312509],[74.50976562500009,30.959667968750097],[74.63281250000014,31.034667968750114],[74.62578125000002,31.068750000000108],[74.61035156250009,31.112841796875045],[74.51767578125012,31.185595703124932],[74.53496093750007,31.261376953125108],[74.59394531249993,31.465380859375102],[74.58183593750013,31.523925781250114],[74.50996093750015,31.712939453125074],[74.52597656249995,31.765136718750057],[74.55556640625011,31.818554687500097],[74.63574218750003,31.889746093750034],[74.73945312500015,31.948828125],[75.07148437500015,32.08935546875003],[75.13876953125,32.10478515624999],[75.25410156250004,32.140332031250125],[75.33349609374997,32.279199218749994],[75.32221348233018,32.28516356678968]]]]},"properties":{"name":"India","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[72.49199218750002,-7.37744140625],[72.42910156250002,-7.435351562500003],[72.34970703125,-7.263378906250011],[72.447265625,-7.395703125000011],[72.44560546875002,-7.220410156250011],[72.49199218750002,-7.37744140625]]]},"properties":{"name":"Br. Indian Ocean Ter.","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-9.948193359374926,53.91313476562499],[-10.265722656249949,53.977685546874994],[-9.99638671874996,54.00361328125004],[-9.948193359374926,53.91313476562499]]],[[[-6.218017578125,54.08872070312506],[-6.347607421874926,53.94130859375005],[-6.027392578124989,52.927099609375006],[-6.463183593749932,52.345361328124994],[-6.325,52.246679687500034],[-6.890234375,52.15922851562499],[-6.965771484374926,52.24951171875],[-8.057812499999926,51.82558593750005],[-8.4091796875,51.888769531250034],[-8.349121093749943,51.73930664062496],[-8.813427734374926,51.584912109374955],[-9.737304687499943,51.473730468750034],[-9.524902343750028,51.68110351562501],[-10.120751953124994,51.60068359375006],[-9.598828124999983,51.87441406250005],[-10.341064453124943,51.798925781250034],[-9.909667968749972,52.122949218749966],[-10.39023437499992,52.134912109374994],[-10.356689453125,52.20693359375002],[-9.772119140624937,52.250097656250034],[-9.90605468749996,52.403710937499966],[-9.632226562499937,52.54692382812502],[-8.783447265624943,52.679638671874955],[-8.990283203124989,52.755419921875045],[-9.175390624999949,52.634912109374994],[-9.916601562499977,52.56972656250005],[-9.46489257812496,52.82319335937498],[-9.299218749999966,53.09755859375002],[-8.930126953124983,53.207080078125045],[-9.51420898437496,53.23823242187498],[-10.091259765624926,53.41284179687503],[-10.116992187499932,53.548535156249955],[-9.720654296874926,53.6044921875],[-9.901611328124943,53.72719726562502],[-9.578222656249949,53.80541992187497],[-9.578857421875,53.879833984374955],[-9.9140625,53.863720703124955],[-9.856445312499972,54.095361328124994],[-10.092675781249966,54.15576171875003],[-10.056396484374943,54.25781250000006],[-8.545556640624994,54.24121093750003],[-8.623144531249977,54.346875],[-8.133447265624966,54.64082031250001],[-8.763916015624972,54.68120117187496],[-8.377294921874977,54.88945312500002],[-8.274609374999955,55.146289062500045],[-7.667089843749977,55.25649414062502],[-7.65874023437496,54.97094726562503],[-7.308789062500011,55.365820312500006],[-6.961669921874972,55.23789062500006],[-7.218652343749937,55.09199218749998],[-7.55039062499992,54.767968749999966],[-7.910595703124955,54.698339843750006],[-7.75439453125,54.59492187499998],[-8.118261718749977,54.41425781250004],[-7.606542968750006,54.14384765625002],[-7.324511718750017,54.13344726562502],[-7.007714843749937,54.40668945312501],[-6.649804687499937,54.05864257812496],[-6.218017578125,54.08872070312506]]]]},"properties":{"name":"Ireland","childNum":2}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[56.18798828125003,26.92114257812497],[55.95429687500004,26.70112304687501],[55.31152343749997,26.592626953125006],[55.76259765625005,26.81196289062504],[55.75761718750002,26.94765625000005],[56.279394531250006,26.952099609374983],[56.18798828125003,26.92114257812497]]],[[[46.1144531250001,38.877783203125034],[46.490625,38.90668945312498],[47.995898437500074,39.683935546875034],[48.322167968749994,39.39907226562502],[48.10439453125005,39.241113281249994],[48.292089843750006,39.01884765624999],[47.99648437499999,38.85375976562503],[48.59267578125005,38.41108398437498],[48.86875,38.43549804687498],[48.95996093750003,37.89013671875],[49.171191406250074,37.60058593749997],[50.13046875,37.407128906249994],[50.53320312499997,37.01367187500006],[51.11855468750005,36.742578124999966],[52.19013671875004,36.62172851562505],[53.76767578125006,36.93032226562502],[53.91542968750005,36.93032226562502],[53.67949218750002,36.853125],[53.970117187499994,36.818310546874955],[53.91416015625006,37.34355468750002],[54.6994140625001,37.47016601562498],[54.90009765625004,37.77792968750006],[55.38085937500003,38.051123046875034],[56.272070312500006,38.080419921875034],[56.440625,38.249414062499994],[57.1935546875001,38.216406250000034],[57.35371093750004,37.97333984374998],[58.261621093749994,37.665820312500045],[58.81542968750003,37.683496093749994],[59.30175781249997,37.51064453125005],[59.454980468749994,37.25283203125002],[60.06279296875002,36.962890625],[60.34130859375003,36.63764648437501],[61.11962890625003,36.64257812500003],[61.212011718750006,36.190527343750034],[61.15292968750006,35.97675781250001],[61.25214843750004,35.86762695312498],[61.26201171875002,35.61958007812498],[61.28183593750006,35.55341796875001],[61.2785156250001,35.513769531250006],[61.245507812499994,35.47407226562501],[61.18925781250002,35.31201171875003],[61.1,35.272314453125034],[61.08007812499997,34.85561523437505],[60.95117187499997,34.65385742187499],[60.91474609375004,34.63398437500001],[60.80234375000006,34.55463867187501],[60.73945312500004,34.544726562500045],[60.7262695312501,34.51826171874998],[60.736132812500074,34.491796875],[60.76259765625005,34.475244140624994],[60.88945312500002,34.31943359375006],[60.642675781250006,34.30717773437496],[60.48574218750005,34.09477539062502],[60.4859375,33.7119140625],[60.57382812500006,33.58833007812498],[60.91699218749997,33.505224609375006],[60.56054687499997,33.13784179687502],[60.5765625,32.99487304687503],[60.71044921874997,32.6],[60.82929687500004,32.24941406250005],[60.82724609375006,32.16796874999997],[60.789941406249994,31.98710937499999],[60.7875,31.87719726562497],[60.791601562500006,31.660595703124983],[60.82070312499999,31.495166015625045],[60.854101562500006,31.483251953125006],[61.110742187499994,31.45112304687504],[61.346484375000074,31.42163085937497],[61.66015625000003,31.382421874999977],[61.7550781250001,31.285302734374994],[61.814257812500074,31.072558593750017],[61.810839843750074,30.913281249999983],[61.78417968749997,30.831933593750023],[61.55947265625005,30.59936523437497],[61.33164062500006,30.36372070312501],[60.84335937500006,29.85869140624999],[61.03417968750003,29.663427734374977],[61.15214843750002,29.542724609375],[61.8898437500001,28.546533203124994],[62.7625,28.202050781249994],[62.782324218750006,27.800537109375],[62.75273437500002,27.265625],[63.16679687500002,27.25249023437499],[63.19609375000002,27.243945312500017],[63.25625,27.20791015625005],[63.30156250000002,27.151464843750006],[63.30517578124997,27.124560546875017],[63.242089843749994,27.07768554687499],[63.25039062499999,26.879248046875063],[63.24160156250005,26.86474609375003],[63.18613281250006,26.83759765625001],[63.168066406250006,26.66557617187496],[62.31230468750002,26.490869140624994],[62.23935546875006,26.357031249999977],[62.12597656249997,26.368994140625034],[61.842382812500006,26.225927734375006],[61.809960937499994,26.165283203125],[61.78076171874997,25.99584960937503],[61.75439453125003,25.843359375000063],[61.737695312499994,25.821093750000045],[61.66865234375004,25.76899414062501],[61.6618164062501,25.751269531250017],[61.67138671874997,25.69238281250003],[61.64013671875003,25.584619140624994],[61.61542968750004,25.28613281250003],[61.58789062499997,25.20234375000001],[61.533105468749994,25.195507812499955],[61.41220703125006,25.102099609375017],[60.66386718750002,25.28222656250003],[60.51054687500002,25.437060546875045],[60.40019531250002,25.311572265625074],[59.45605468749997,25.481494140625045],[59.0460937500001,25.417285156250017],[58.79785156249997,25.554589843750023],[57.334570312500006,25.791552734375074],[57.03603515625005,26.80068359375005],[56.728125,27.127685546875057],[56.118066406249994,27.14311523437499],[54.75927734375003,26.50507812500004],[54.24707031250003,26.696630859374977],[53.70576171875004,26.72558593750003],[52.69160156250004,27.323388671875023],[52.475878906250074,27.61650390624999],[52.03076171874997,27.824414062499955],[51.58906250000004,27.864208984374983],[51.27890625,28.13134765624997],[51.06201171874997,28.72612304687499],[50.86699218750002,28.870166015625017],[50.87578125000002,29.062695312499983],[50.67519531250005,29.146582031250034],[50.64960937500004,29.420068359374966],[50.16894531250003,29.921240234375034],[50.071582031250074,30.198535156250017],[49.55488281250004,30.028955078125023],[49.028125,30.333447265624983],[49.224511718749994,30.472314453125023],[49.00195312500003,30.506542968749983],[48.91914062500004,30.120898437500017],[48.54648437500006,29.962353515624955],[48.47851562499997,30.003808593749966],[48.43457031249997,30.03759765625],[48.33105468749997,30.28544921874996],[48.01494140625002,30.465625],[48.01064453125005,30.989794921875017],[47.679492187500074,31.00239257812501],[47.679492187500074,31.400585937499955],[47.75390624999997,31.601367187500017],[47.829980468749994,31.79443359375],[47.71455078125004,31.936425781249966],[47.5915039062501,32.087988281250034],[47.51191406250004,32.15083007812504],[47.3297851562501,32.45551757812501],[47.28515625000003,32.474023437499966],[47.121386718750074,32.46660156249996],[46.569921875,32.83393554687501],[46.37705078125006,32.92924804687499],[46.29824218750005,32.95024414062502],[46.11279296875003,32.957666015624994],[46.09306640625002,32.97587890624999],[46.08046875,33.028222656249994],[46.0807617187501,33.08652343750006],[46.14111328125003,33.174414062500034],[46.145898437499994,33.229638671874994],[46.01992187500005,33.41572265624998],[45.39707031250006,33.970849609374994],[45.542773437500074,34.21552734375004],[45.459375,34.470361328124994],[45.50078125000002,34.58159179687499],[45.6375,34.573828125],[45.678125,34.798437500000034],[45.92089843750003,35.02851562500001],[46.04179687500002,35.08017578125006],[46.13378906249997,35.127636718749955],[46.15468750000005,35.19672851562498],[46.112109375000074,35.32167968750005],[45.97109375000005,35.524169921875],[46.03740234375002,35.67314453124999],[46.180957031250074,35.71137695312504],[46.2625,35.74414062500006],[46.27343749999997,35.77324218750002],[46.16748046874997,35.820556640625],[45.77636718749997,35.82182617187499],[45.36162109375002,36.015332031249955],[45.241113281249994,36.35595703125],[45.20654296874997,36.397167968749955],[45.15527343749997,36.407373046874994],[45.11240234375006,36.409277343750034],[45.053125,36.47163085937501],[44.76513671875003,37.142431640625006],[44.79414062500004,37.290380859375034],[44.574023437500074,37.435400390625006],[44.589941406250006,37.710351562499966],[44.21132812499999,37.908056640625006],[44.4499023437501,38.33422851562506],[44.2985351562501,38.38627929687499],[44.27167968750004,38.83603515625006],[44.02324218750002,39.37744140625006],[44.3893554687501,39.422119140625],[44.58710937500004,39.76855468750006],[44.81718750000002,39.65043945312496],[45.4796875000001,39.00625],[46.1144531250001,38.877783203125034]]]]},"properties":{"name":"Iran","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[45.6375,34.573828125],[45.50078125000002,34.581591796874996],[45.459375,34.470361328124994],[45.54277343750002,34.21552734375],[45.397070312500006,33.970849609374994],[46.01992187500002,33.41572265625],[46.14589843750002,33.229638671874994],[46.14111328125,33.1744140625],[46.08076171875001,33.0865234375],[46.08046875000002,33.028222656249994],[46.09306640625002,32.975878906249996],[46.11279296875,32.957666015624994],[46.377050781250006,32.929248046874996],[46.569921875,32.833935546875],[47.12138671875002,32.466601562499996],[47.28515625,32.474023437499994],[47.32978515625001,32.455517578125],[47.51191406250001,32.150830078125],[47.59150390625001,32.08798828125],[47.71455078125001,31.936425781249994],[47.82998046875002,31.79443359375],[47.75390625,31.601367187499996],[47.67949218750002,31.400585937499997],[47.67949218750002,31.002392578124997],[48.01064453125002,30.989794921874996],[48.01494140625002,30.465625],[48.3310546875,30.285449218749996],[48.546484375,29.962353515624997],[48.454199218750006,29.9384765625],[48.354589843750006,29.956738281249997],[48.141699218750006,30.040917968749994],[47.982519531250006,30.011328125],[47.97871093750001,29.9828125],[47.64375,30.097314453124994],[47.14824218750002,30.0009765625],[46.905859375,29.5375],[46.76933593750002,29.347460937499996],[46.69375,29.259667968749994],[46.53144531250001,29.096240234374996],[46.3564453125,29.063671875],[44.71650390625001,29.193603515625],[43.77373046875002,29.84921875],[42.07441406250001,31.080371093749996],[40.47890625000002,31.893359375],[40.36933593750001,31.93896484375],[40.02783203125,31.995019531249994],[39.7041015625,32.042529296874996],[39.14541015625002,32.12451171875],[39.29277343750002,32.24384765625],[39.24746093750002,32.350976562499994],[39.04140625000002,32.3056640625],[38.773535156250006,33.372216796874994],[40.98701171875001,34.429052734375],[41.19472656250002,34.768994140625],[41.354101562500006,35.640429687499996],[41.295996093750006,36.383349609374996],[41.41679687500002,36.5146484375],[41.78857421875,36.59716796875],[42.358984375,37.10859375],[42.45585937500002,37.128710937499996],[42.63544921875001,37.249267578125],[42.74111328125002,37.3619140625],[42.77460937500001,37.371875],[42.869140625,37.334912109375],[42.936621093750006,37.324755859374996],[43.09248046875001,37.3673828125],[43.67578125,37.22724609375],[43.83642578125,37.223535156249994],[44.01318359375,37.313525390624996],[44.11445312500001,37.30185546875],[44.15625,37.282958984375],[44.19179687500002,37.249853515625],[44.20839843750002,37.20263671875],[44.20166015625,37.051806640624996],[44.281835937500006,36.97802734375],[44.32558593750002,37.0107421875],[44.401953125,37.058496093749994],[44.60595703125,37.176025390625],[44.66933593750002,37.173583984375],[44.73095703125,37.165283203125],[44.76513671875,37.142431640625],[45.053125,36.471630859375],[45.112402343750006,36.40927734375],[45.1552734375,36.407373046874994],[45.20654296875,36.39716796875],[45.24111328125002,36.35595703125],[45.36162109375002,36.01533203125],[45.7763671875,35.821826171874996],[46.16748046875,35.820556640625],[46.2734375,35.773242187499996],[46.2625,35.744140625],[46.18095703125002,35.711376953125],[46.03740234375002,35.673144531249996],[45.97109375000002,35.524169921875],[46.11210937500002,35.321679687499994],[46.15468750000002,35.196728515625],[46.1337890625,35.12763671875],[46.04179687500002,35.08017578125],[45.9208984375,35.028515625],[45.678125,34.7984375],[45.6375,34.573828125]]]},"properties":{"name":"Iraq","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-15.543115234374994,66.228515625],[-14.595849609374994,66.38154296875],[-15.117382812499983,66.125634765625],[-14.698193359374983,66.02021484375],[-14.827099609374983,65.7642578125],[-14.391845703125,65.78740234375],[-14.473388671875,65.575341796875],[-14.166943359374983,65.64228515625],[-13.617871093749983,65.5193359375],[-13.804785156249977,65.35478515625],[-13.599316406249983,65.0359375],[-14.04443359375,64.74189453125],[-14.385107421874977,64.74521484375],[-14.475390624999989,64.493994140625],[-14.927392578124994,64.319677734375],[-15.832910156249994,64.17666015625],[-16.640332031249983,63.865478515625],[-17.81572265624999,63.71298828125],[-17.946923828124994,63.5357421875],[-18.65361328124999,63.406689453125],[-20.198144531249994,63.555810546874994],[-20.494042968749994,63.687353515625],[-20.413964843749994,63.80517578125],[-20.65092773437499,63.73740234375],[-21.15239257812499,63.94453125],[-22.652197265624977,63.827734375],[-22.701171875,64.083203125],[-22.51005859374999,63.991455078125],[-22.187597656249977,64.039208984375],[-21.463330078124983,64.379150390625],[-22.053369140624994,64.313916015625],[-21.950341796874994,64.514990234375],[-21.590625,64.6263671875],[-22.10600585937499,64.533056640625],[-22.467041015625,64.794970703125],[-23.818994140624994,64.73916015625],[-24.02617187499999,64.863427734375],[-22.7880859375,65.046484375],[-21.89213867187499,65.048779296875],[-21.779980468749983,65.1876953125],[-22.50908203124999,65.19677734375],[-21.844384765624994,65.44736328125],[-22.902490234374994,65.58046875],[-23.89990234375,65.407568359375],[-24.475683593749977,65.5251953125],[-24.248925781249994,65.614990234375],[-23.85673828124999,65.53837890625],[-24.092626953124977,65.77646484375],[-23.615917968749983,65.67958984375],[-23.285351562499983,65.75],[-23.832617187499977,65.84921875],[-23.52495117187499,65.880029296875],[-23.77734375,66.017578125],[-23.434472656249994,66.02421875],[-23.452539062499994,66.181005859375],[-23.018994140624983,65.98212890625],[-22.659863281249983,66.025927734375],[-22.61601562499999,65.86748046875],[-22.44169921874999,65.90830078125],[-22.4453125,66.07001953125],[-22.947900390624994,66.212744140625],[-22.48442382812499,66.26630859375],[-23.116943359375,66.338720703125],[-22.9443359375,66.429443359375],[-22.426123046874977,66.430126953125],[-21.406884765624994,66.0255859375],[-21.374902343749994,65.74189453125],[-21.658447265625,65.723583984375],[-21.12968749999999,65.2666015625],[-20.804345703124994,65.63642578125],[-20.454833984375,65.571044921875],[-20.20751953125,66.10009765625],[-19.489697265624983,65.76806640625],[-19.382958984374994,66.07568359375],[-18.845898437499983,66.183935546875],[-18.141943359374977,65.73408203125],[-18.29716796874999,66.157421875],[-17.906982421875,66.143310546875],[-17.550439453124994,65.964404296875],[-17.153027343749983,66.20283203125],[-16.838037109374994,66.125244140625],[-16.485009765624994,66.195947265625],[-16.540673828124994,66.446728515625],[-16.24931640624999,66.522900390625],[-15.985400390624989,66.5146484375],[-15.543115234374994,66.228515625]]]},"properties":{"name":"Iceland","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[35.78730468750001,32.734912109374996],[35.572851562500006,32.640869140625],[35.56904296875001,32.619873046875],[35.55146484375001,32.3955078125],[35.484375,32.401660156249996],[35.40263671875002,32.450634765625],[35.38671875,32.493017578125],[35.303808593750006,32.512939453125],[35.19326171875002,32.534423828125],[35.065039062500006,32.46044921875],[35.01054687500002,32.338183593749996],[34.95595703125002,32.1609375],[34.98974609375,31.91328125],[34.97832031250002,31.86640625],[34.95380859375001,31.841259765624997],[34.96113281250001,31.82333984375],[34.983007812500006,31.81679687499999],[35.05322265625,31.837939453124996],[35.12714843750001,31.816748046875],[35.203710937500006,31.75],[34.95097656250002,31.602294921875],[34.88046875,31.3681640625],[35.45058593750002,31.479296875],[34.97343750000002,29.555029296875],[34.904296875,29.47734375],[34.24531250000001,31.208300781249996],[34.34833984375001,31.292919921874997],[34.350195312500006,31.362744140624997],[34.52558593750001,31.525634765625],[34.47734375000002,31.584863281249994],[34.483984375,31.59228515625],[34.67841796875001,31.895703125],[35.10859375000001,33.08369140625],[35.411230468750006,33.07568359375],[35.869140625,33.43173828125],[35.91347656250002,32.94960937499999],[35.78730468750001,32.734912109374996]]]},"properties":{"name":"Israel","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[15.576562500000051,38.220312500000034],[15.099511718750023,37.45859375],[15.295703125000017,37.05517578124997],[15.112597656250017,36.687841796875006],[14.501855468750023,36.798681640625034],[14.142968750000023,37.103662109374994],[13.90546875000004,37.10063476562502],[13.169921875000028,37.47929687499996],[12.640234375000034,37.594335937500034],[12.435546874999972,37.819775390624955],[12.734375,38.18305664062498],[12.902734375000023,38.03486328124998],[13.291113281250034,38.19145507812502],[13.788867187499989,37.981201171875],[15.11875,38.15273437500002],[15.498730468750011,38.290869140625006],[15.576562500000051,38.220312500000034]]],[[[8.478906250000023,39.067529296874966],[8.421484375000034,38.968652343749994],[8.366796875,39.115917968749955],[8.478906250000023,39.067529296874966]]],[[[8.28603515625008,41.03984375],[8.205664062500034,40.99746093750005],[8.320214843750023,41.121875],[8.28603515625008,41.03984375]]],[[[9.632031250000011,40.88203124999998],[9.805273437500063,40.499560546875045],[9.642968750000023,40.268408203125006],[9.5625,39.16601562500006],[9.056347656250068,39.23916015625002],[8.966601562500074,38.963720703125034],[8.648535156250034,38.92656250000002],[8.418164062500068,39.205712890624966],[8.547753906250023,39.83920898437506],[8.4078125,39.91723632812497],[8.471289062500063,40.29267578124998],[8.189941406250028,40.651611328125],[8.22421875,40.91333007812503],[8.571875,40.85019531250006],[9.228417968750023,41.257080078125],[9.615332031249977,41.01728515624998],[9.632031250000011,40.88203124999998]]],[[[10.395117187500034,42.85815429687503],[10.419335937499994,42.71318359374999],[10.13125,42.742041015625006],[10.395117187500034,42.85815429687503]]],[[[13.420996093750006,46.212304687499994],[13.63251953125004,46.17705078125002],[13.634960937499983,46.15776367187499],[13.61660156250008,46.133105468750045],[13.54804687500004,46.08911132812503],[13.486425781250034,46.03955078124997],[13.480273437500017,46.00922851562501],[13.487695312500023,45.987109375000045],[13.509179687500051,45.973779296874994],[13.6005859375,45.97978515624996],[13.663476562500023,45.7919921875],[13.831152343750006,45.680419921875],[13.719824218750063,45.58759765625001],[13.628320312500051,45.77094726562498],[13.206347656250074,45.771386718749966],[12.27431640625008,45.44604492187503],[12.225683593750034,45.24150390625002],[12.523437500000028,44.96796874999998],[12.248339843750045,44.72250976562498],[12.396289062500074,44.223876953125],[13.56416015625004,43.57128906250003],[14.010449218750011,42.68955078125006],[14.54072265625004,42.24428710937502],[15.16875,41.93403320312498],[16.164648437500034,41.89619140624998],[15.900488281250034,41.51206054687498],[17.954980468749994,40.65517578125002],[18.460644531249983,40.221044921875034],[18.34375,39.82138671874998],[18.077929687500017,39.93696289062498],[17.865039062500074,40.28017578125002],[17.395800781250045,40.34023437499999],[17.179980468750045,40.50278320312498],[16.92822265625,40.45805664062502],[16.521875,39.74755859375003],[17.114550781250017,39.38061523437497],[17.174609375000017,38.998095703125045],[16.61669921875003,38.800146484375034],[16.54560546875001,38.40908203125002],[16.05683593750001,37.941845703124955],[15.72451171875008,37.93911132812502],[15.645800781250017,38.034228515625045],[15.87890625,38.61391601562502],[16.19677734375,38.759228515624955],[16.20996093750003,38.94111328124998],[15.692773437499994,39.99018554687501],[14.95087890625004,40.23901367187497],[14.94765625000008,40.469335937500006],[14.765722656250063,40.66840820312498],[14.339941406250006,40.59882812500001],[14.460546875000063,40.72871093750001],[14.04433593750008,40.81225585937506],[13.733398437500057,41.23564453124999],[13.088671875000074,41.243847656249955],[12.630859374999972,41.469677734374955],[11.637304687500063,42.287548828124955],[11.141210937499977,42.38989257812503],[11.167773437500074,42.53515625000006],[10.708398437500023,42.93632812499999],[10.514843750000011,42.96752929687503],[10.188085937500063,43.947509765625],[8.76582031250004,44.42231445312501],[8.004980468750006,43.87675781249999],[7.4931640625,43.767138671875045],[7.637207031250057,44.16484375],[7.318554687500068,44.13798828125002],[6.900195312499989,44.33574218749996],[6.99267578125,44.82729492187502],[6.634765625000028,45.06816406249996],[7.07832031250004,45.23994140624998],[7.146386718750051,45.381738281249994],[6.790917968750023,45.740869140624966],[7.021093750000034,45.92578124999997],[7.055761718749977,45.90380859375003],[7.129003906249977,45.88041992187499],[7.327929687500017,45.912353515625],[7.9931640625,46.01591796874996],[8.081542968750057,46.25600585937502],[8.231933593750057,46.341210937499966],[8.29853515625004,46.403417968750034],[8.370703125,46.44511718750002],[8.458398437500023,46.24589843750002],[8.818554687500011,46.0771484375],[8.826757812500006,46.06103515625],[8.77802734375004,45.996191406250034],[8.953710937500034,45.83002929687501],[9.023730468750074,45.845703125],[9.203417968750017,46.21923828125],[9.304394531250068,46.49555664062498],[9.399316406250023,46.480664062499955],[9.427636718750023,46.48232421875002],[9.528710937500023,46.306201171875045],[9.57958984375,46.29609375000001],[9.639453125000017,46.29589843749997],[9.78779296875004,46.34604492187498],[9.884472656250011,46.36777343750006],[9.939257812500074,46.36181640625],[10.041015625000028,46.23808593750002],[10.08056640625,46.22797851562501],[10.128320312500051,46.238232421874955],[10.109667968750074,46.36284179687502],[10.081933593750023,46.420751953125006],[10.045605468750068,46.44790039062505],[10.038281250000011,46.483203125000045],[10.061230468750068,46.54677734375002],[10.087011718750063,46.59990234375002],[10.1375,46.614355468750034],[10.195507812500068,46.62109374999997],[10.4306640625,46.55004882812497],[10.409352678571473,46.6092047991071],[10.39794921875,46.66503906250006],[10.406054687500045,46.73486328124997],[10.452832031249983,46.86494140625001],[10.47939453125008,46.85512695312505],[10.579785156250011,46.85371093750001],[10.689257812500017,46.846386718749955],[10.759765625,46.79331054687498],[10.828906250000045,46.775244140625034],[10.927343750000034,46.76948242187501],[10.993261718750034,46.77700195312502],[11.02509765625004,46.796972656250006],[11.063476562500057,46.85913085937497],[11.133886718750006,46.93618164062505],[11.244433593750045,46.975683593750006],[11.433203125000063,46.983056640624994],[11.527539062500011,46.99741210937498],[11.775683593750017,46.986083984375],[12.169433593750028,47.082128906250006],[12.19716796875008,47.075],[12.201269531250034,47.060888671875034],[12.165527343750028,47.028173828125034],[12.130761718750051,46.98476562499999],[12.154101562500017,46.93525390625004],[12.267968750000023,46.83588867187504],[12.330078125,46.75981445312499],[12.388281250000034,46.70263671874997],[12.479199218749983,46.672509765624966],[13.16875,46.572656249999966],[13.3515625,46.55791015624999],[13.490039062500045,46.55556640625002],[13.7,46.52026367187503],[13.679687500000057,46.46289062499997],[13.63710937500008,46.44853515624999],[13.563281250000045,46.41508789062502],[13.399511718749977,46.31752929687502],[13.420996093750006,46.212304687499994]]]]},"properties":{"name":"Italy","childNum":6}},{"geometry":{"type":"Polygon","coordinates":[[[-77.261474609375,18.45742187499999],[-76.349853515625,18.15185546875],[-76.21079101562499,17.913525390624997],[-76.524609375,17.8662109375],[-76.85322265625,17.97373046874999],[-76.94414062499999,17.848779296874994],[-77.11948242187499,17.880078125],[-77.20498046875,17.71494140624999],[-77.36142578124999,17.833691406249997],[-77.76816406249999,17.877392578124997],[-78.04448242187499,18.173828125],[-78.339501953125,18.28720703124999],[-78.21669921875,18.44809570312499],[-77.8734375,18.522216796875],[-77.261474609375,18.45742187499999]]]},"properties":{"name":"Jamaica","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-2.018652343749977,49.23125],[-2.23583984375,49.1763671875],[-2.220507812499989,49.266357421875],[-2.018652343749977,49.23125]]]},"properties":{"name":"Jersey","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[39.14541015625002,32.12451171875],[38.9970703125,32.007470703124994],[38.96230468750002,31.994921875],[38.37548828125,31.847460937499996],[38.111425781250006,31.781152343749994],[37.49335937500001,31.625878906249994],[37.215625,31.556103515624997],[36.95859375,31.491503906249996],[37.980078125,30.5],[37.862890625,30.442626953125],[37.66972656250002,30.34814453125],[37.64990234375,30.330957031249994],[37.63359375000002,30.31328125],[37.55361328125002,30.144580078124996],[37.49072265625,30.01171875],[37.46923828125,29.995068359374997],[36.75527343750002,29.866015625],[36.70390625000002,29.831640625],[36.591796875,29.66611328125],[36.47607421875,29.4951171875],[36.2828125,29.355371093749994],[36.068457031250006,29.200537109375],[34.95078125,29.353515625],[34.97343750000002,29.555029296875],[35.45058593750002,31.479296875],[35.57207031250002,32.237890625],[35.55146484375001,32.3955078125],[35.56904296875001,32.619873046875],[35.572851562500006,32.640869140625],[35.78730468750001,32.734912109374996],[36.3720703125,32.3869140625],[36.818359375,32.317285156249994],[38.773535156250006,33.372216796874994],[39.04140625000002,32.3056640625],[39.24746093750002,32.350976562499994],[39.29277343750002,32.24384765625],[39.14541015625002,32.12451171875]]]},"properties":{"name":"Jordan","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[123.88867187499997,24.280126953124977],[123.67978515625012,24.317773437500023],[123.77148437499997,24.41445312499999],[123.93486328125002,24.362011718749983],[123.88867187499997,24.280126953124977]]],[[[124.29316406250004,24.515917968750074],[124.13574218750003,24.347607421874983],[124.08476562500002,24.435839843750017],[124.30195312500004,24.58710937500001],[124.29316406250004,24.515917968750074]]],[[[125.44414062500002,24.7431640625],[125.26894531250005,24.732519531250063],[125.28359375,24.871923828125034],[125.44414062500002,24.7431640625]]],[[[128.25878906249997,26.65278320312501],[127.86708984375,26.442480468749977],[127.80361328125005,26.152539062499983],[127.653125,26.0947265625],[127.90722656250003,26.69360351562497],[128.09765624999997,26.66777343749996],[128.25488281249997,26.88188476562496],[128.25878906249997,26.65278320312501]]],[[[128.99814453125012,27.720800781250006],[128.90000000000012,27.727783203125],[128.9076171875,27.897998046875045],[128.99814453125012,27.720800781250006]]],[[[129.45253906250005,28.20898437499997],[129.3664062500001,28.127734375000045],[129.16464843750012,28.24975585937503],[129.68955078125012,28.517480468750023],[129.45253906250005,28.20898437499997]]],[[[130.6227539062501,30.262988281250017],[130.44560546875002,30.264697265625017],[130.38808593750005,30.38818359375003],[130.49716796875006,30.465527343749983],[130.64355468749997,30.388964843750017],[130.6227539062501,30.262988281250017]]],[[[130.95976562500007,30.39692382812504],[130.87031250000004,30.444238281249994],[131.06035156250007,30.828466796875006],[130.95976562500007,30.39692382812504]]],[[[130.38105468750004,32.42373046875002],[130.24169921874997,32.462792968749994],[130.46142578124997,32.515722656250034],[130.38105468750004,32.42373046875002]]],[[[130.08251953124997,32.22968750000001],[129.9601562500001,32.24375],[130.00976562499997,32.521630859374994],[130.16777343750002,32.54121093749998],[130.19951171875002,32.34057617187506],[130.08251953124997,32.22968750000001]]],[[[128.66533203125002,32.783886718749955],[128.89453124999997,32.65214843750002],[128.69296875000012,32.60473632812506],[128.66533203125002,32.783886718749955]]],[[[129.07695312500002,32.84028320312498],[128.99726562500004,32.95185546874998],[129.10976562500005,33.13256835937503],[129.18193359375002,32.99311523437504],[129.07695312500002,32.84028320312498]]],[[[129.49179687500006,33.22304687499999],[129.37041015625002,33.176025390625],[129.56992187500006,33.36103515625004],[129.49179687500006,33.22304687499999]]],[[[129.79570312500007,33.74882812499999],[129.67480468749997,33.73969726562498],[129.71728515624997,33.8583984375],[129.79570312500007,33.74882812499999]]],[[[131.17460937500007,33.602587890625045],[131.69628906250003,33.60283203124999],[131.53740234375007,33.274072265624994],[131.89658203125006,33.25458984375001],[131.8478515625001,33.118066406249994],[132.0021484375001,32.882373046875045],[131.6603515625001,32.465625],[131.33720703125007,31.4046875],[131.07080078124997,31.436865234374977],[131.09843750000002,31.256152343750017],[130.68574218750004,31.01513671875003],[130.77626953125,31.70629882812497],[130.65507812500002,31.71840820312505],[130.5560546875,31.563085937500034],[130.58876953125,31.178515625000017],[130.20068359374997,31.291894531250023],[130.14726562500002,31.40849609374996],[130.2941406250001,31.45068359375003],[130.3219726562501,31.601464843750023],[130.18789062500005,31.768847656250017],[130.19443359375012,32.090771484374955],[130.64052734375005,32.61923828124998],[130.49785156250002,32.65693359375001],[130.547265625,32.83159179687499],[130.2375,33.177636718749966],[130.12685546875005,33.10483398437506],[130.175,32.851318359375],[130.32646484375002,32.852636718750006],[130.34042968750012,32.70185546875004],[130.05410156250005,32.770800781250045],[129.76855468749997,32.57099609375001],[129.82675781250006,32.72534179687503],[129.67910156250005,33.059960937499966],[129.99169921875003,32.85156249999997],[129.58007812500003,33.23627929687501],[129.61015625000002,33.34365234375005],[129.844140625,33.32177734375003],[129.82568359374997,33.43701171875006],[130.36503906250007,33.634472656249955],[130.4837890625,33.834619140624966],[130.715625,33.92778320312502],[130.953125,33.87202148437504],[131.17460937500007,33.602587890625045]]],[[[132.266015625,33.945166015625006],[132.44492187500006,33.91318359374998],[132.20878906250007,33.87285156250002],[132.266015625,33.945166015625006]]],[[[129.27949218750004,34.123388671875006],[129.18642578125,34.14501953125006],[129.21484374999997,34.320654296875034],[129.3371093750001,34.284765625],[129.27949218750004,34.123388671875006]]],[[[134.35742187500003,34.25634765625],[134.6375,34.22661132812499],[134.73886718750012,33.82050781250001],[134.37705078125012,33.60839843749997],[134.18164062500003,33.24721679687502],[133.95869140625004,33.44833984375006],[133.63203125000004,33.51098632812503],[133.28593750000007,33.35996093749998],[132.97724609375004,32.84199218749998],[132.80429687500006,32.75200195312502],[132.6417968750001,32.76245117187503],[132.70898437500003,32.90249023437505],[132.49511718749997,32.91660156249998],[132.41279296875004,33.43046875],[132.0326171875,33.339990234374994],[132.64306640624997,33.68994140624997],[132.93515625000006,34.09531250000006],[133.19306640625004,33.93320312499998],[133.58203124999997,34.01713867187502],[133.60263671875006,34.24384765625001],[133.94833984375006,34.34804687500002],[134.35742187500003,34.25634765625]]],[[[134.35185546875002,34.48364257812503],[134.25185546875,34.42304687500004],[134.18212890625003,34.51923828124998],[134.35185546875002,34.48364257812503]]],[[[134.9328125000001,34.28813476562499],[134.82441406250004,34.202929687500045],[134.66787109375005,34.294140624999955],[135.00468750000002,34.54404296874998],[134.9328125000001,34.28813476562499]]],[[[129.38564453125,34.35366210937502],[129.26669921875012,34.37045898437506],[129.45107421875005,34.68657226562499],[129.38564453125,34.35366210937502]]],[[[133.37050781250005,36.203857421875],[133.23925781249997,36.178759765625045],[133.20615234375006,36.293408203124955],[133.29570312500002,36.34013671874996],[133.37050781250005,36.203857421875]]],[[[138.34404296875007,37.822119140625006],[138.22519531250006,37.82939453124996],[138.25,38.078466796875006],[138.50361328125004,38.31591796875006],[138.45361328124997,38.07568359375006],[138.57519531249997,38.065527343750034],[138.34404296875007,37.822119140625006]]],[[[141.22929687500007,41.37265625],[141.45546875000005,41.404736328124955],[141.43046875000002,40.72333984374998],[141.7970703125001,40.29116210937502],[141.97695312500005,39.428808593750034],[141.90078125,39.111328125],[141.5462890625,38.762841796874966],[141.4674804687501,38.404150390625006],[141.10839843750003,38.33793945312502],[140.9621093750001,38.148876953124955],[141.00166015625004,37.11464843750002],[140.57353515625007,36.23134765625002],[140.87402343749997,35.72495117187506],[140.457421875,35.51025390625],[140.35468750000004,35.18144531249999],[139.8439453125001,34.914892578125034],[139.82646484375002,35.29667968750002],[140.096875,35.58515624999998],[139.83476562500002,35.658056640625006],[139.65000000000012,35.40913085937501],[139.675,35.149267578125006],[139.47441406250002,35.298535156249955],[139.24941406250005,35.27802734375004],[139.08603515625006,34.83916015624999],[138.8375,34.619238281250034],[138.80273437499997,34.97480468749998],[138.90361328125002,35.02524414062506],[138.71962890625,35.12407226562502],[138.18906250000012,34.596337890624994],[137.543359375,34.66420898437505],[137.06171875000004,34.58281249999999],[137.27519531250002,34.77250976562499],[136.96328125000005,34.83491210937501],[136.87128906250004,34.733105468749955],[136.89707031250006,35.03554687500002],[136.80419921874997,35.05029296875],[136.53300781250007,34.678369140624994],[136.8802734375,34.43359375000006],[136.8537109375001,34.324072265625034],[136.32988281250007,34.17685546875006],[135.91621093750004,33.561718749999955],[135.69531250000003,33.48696289062502],[135.4528320312501,33.55336914062505],[135.12792968749997,34.006982421874994],[135.10009765624997,34.288378906250045],[135.41591796875,34.61748046875002],[134.74003906250007,34.765234375],[134.246875,34.71386718750003],[133.96826171874997,34.52729492187504],[133.14238281250002,34.30244140624998],[132.65654296875007,34.24609375000003],[132.31259765625006,34.32495117187503],[132.14648437499997,33.83876953125002],[131.74052734375007,34.05205078125002],[130.91884765625,33.97573242187502],[130.88925781250012,34.261816406250034],[131.00419921875007,34.39257812500003],[131.35439453125,34.41318359375006],[132.92294921875006,35.511279296875045],[133.98125,35.50722656250002],[135.17431640625003,35.74707031250003],[135.32695312500002,35.52553710937502],[135.68027343750006,35.503125],[135.903125,35.60688476562498],[136.09531250000006,35.767626953125045],[136.06748046875006,36.11684570312505],[136.69814453125005,36.742041015625034],[136.84345703125004,37.38212890624999],[137.32265625,37.52207031249998],[136.89990234375003,37.11767578125],[137.01669921875006,36.83720703124999],[137.24628906250004,36.753173828125],[137.5140625,36.95156250000002],[138.31992187500012,37.21840820312502],[138.88505859375007,37.84394531250001],[139.36386718750006,38.09902343750002],[139.80195312500004,38.881591796875],[140.06474609375002,39.624414062499994],[139.99472656250006,39.855078125],[139.74150390625002,39.92084960937498],[140.01113281250005,40.26035156250006],[139.92285156250003,40.59843750000002],[140.28125,40.84609375000002],[140.3444335937501,41.203320312499955],[140.62763671875004,41.195410156250034],[140.74863281250012,40.830322265625],[140.93603515625003,40.940771484375034],[141.1185546875,40.88227539062501],[141.24423828125006,41.20561523437499],[140.80058593750002,41.138818359374966],[140.80185546875012,41.253662109375],[140.9369140625,41.50556640624998],[141.22929687500007,41.37265625]]],[[[139.48125,42.08100585937498],[139.43134765625004,42.19956054687498],[139.55839843750002,42.235205078125034],[139.48125,42.08100585937498]]],[[[141.29541015625003,45.11933593750001],[141.14531250000002,45.153906250000034],[141.19375,45.24785156249999],[141.29541015625003,45.11933593750001]]],[[[141.07275390624997,45.33286132812498],[141.03398437500007,45.26933593750002],[140.97167968749997,45.465478515624994],[141.07275390624997,45.33286132812498]]],[[[143.82431640625012,44.11699218749999],[144.71523437500005,43.92797851562503],[145.36953125000005,44.32739257812506],[145.13964843750003,43.6625],[145.34082031249997,43.30253906249999],[145.83300781249997,43.38593750000001],[144.92138671874997,43.00092773437498],[143.96933593750006,42.88139648437499],[143.42949218750002,42.41889648437498],[143.2365234375001,42.000195312499955],[141.85136718750007,42.57905273437501],[141.40664062500005,42.54692382812496],[140.98613281250002,42.34213867187498],[140.70976562500002,42.555615234374955],[140.48046875000003,42.559375],[140.32666015625003,42.29335937499999],[141.15097656250012,41.80507812499999],[140.99951171874997,41.73740234375006],[140.65986328125004,41.815576171874994],[140.3849609375001,41.51928710937503],[140.08515625000004,41.43408203125],[139.99531250000004,41.57641601562503],[140.10839843749997,41.912939453125034],[139.83544921874997,42.278076171875],[139.86015625000002,42.58173828125004],[140.43222656250012,42.95410156250006],[140.39238281250002,43.303125],[141.13818359374997,43.17993164062506],[141.37412109375006,43.279638671875006],[141.7609375000001,44.482519531250034],[141.58300781250003,45.15595703125001],[141.66796874999997,45.401269531249966],[141.93769531250004,45.509521484375],[142.88476562499997,44.670117187499955],[143.82431640625012,44.11699218749999]]]]},"properties":{"name":"Japan","childNum":28}},{"geometry":{"type":"Polygon","coordinates":[[[77.04863281249999,35.109912109374996],[76.927734375,35.346630859375],[76.88222656250002,35.4357421875],[76.81279296874999,35.571826171874996],[76.76689453124999,35.66171875],[76.87890625,35.61328125],[77.09003906250001,35.552050781249996],[77.29482421875002,35.508154296875],[77.44648437500001,35.4755859375],[77.57255859374999,35.471826171874994],[77.72402343750002,35.48056640625],[77.79941406250003,35.495898437499996],[77.42343750000003,35.302587890625],[77.16855468750003,35.171533203124994],[77.04863281249999,35.109912109374996]]]},"properties":{"name":"Siachen Glacier","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[50.184472656249994,44.854638671874994],[49.99511718750003,44.93696289062498],[50.10986328124997,45.08193359375002],[50.038867187500074,44.949121093749966],[50.184472656249994,44.854638671874994]]],[[[87.32285156250012,49.085791015625006],[86.8083007812501,49.04970703125002],[86.54941406250012,48.52861328125002],[85.7494140625,48.38505859374999],[85.52597656250006,47.915625],[85.65664062500005,47.254638671875],[85.484765625,47.06352539062496],[84.78613281249997,46.83071289062505],[84.66660156250006,46.97236328125004],[84.016015625,46.97050781250002],[83.02949218750004,47.18593750000002],[82.31523437500002,45.59492187499998],[82.61162109375007,45.424267578124955],[82.52148437500003,45.12548828125],[82.26660156249997,45.21909179687498],[81.94492187500006,45.16083984375001],[81.69199218750012,45.34936523437497],[80.05917968750012,45.006445312500006],[79.871875,44.88378906249997],[80.48154296875006,44.71464843749999],[80.35527343750002,44.09726562500006],[80.78574218750006,43.16157226562504],[80.39023437500006,43.043115234374966],[80.53896484375005,42.873486328124955],[80.20224609375012,42.73447265624998],[80.209375,42.190039062500006],[80.07128906249997,42.302978515625],[79.92109375000004,42.41313476562496],[79.49013671875,42.45756835937496],[79.42822265624997,42.483496093750006],[79.20302734375005,42.66601562499997],[79.16484375000007,42.759033203125],[79.1266601562501,42.775732421875034],[76.98808593750007,42.97358398437501],[76.64648437500003,42.928808593750034],[76.50917968750005,42.91889648437498],[75.9322265625,42.92851562499999],[75.84033203125003,42.9375],[75.78955078124997,42.93291015624999],[75.68173828125,42.83046875],[75.04765625000007,42.904394531250034],[74.20908203125006,43.24038085937502],[73.88603515625002,43.132568359375],[73.55625,43.002783203125006],[73.45019531249997,42.703027343749966],[73.421875,42.59350585937503],[73.49296875000007,42.409033203125034],[73.41162109375003,42.41977539062498],[73.316015625,42.46699218750001],[73.2829101562501,42.50410156250004],[72.85507812500006,42.561132812500006],[72.75292968750003,42.63789062500001],[72.54316406250004,42.67773437500006],[72.27578125,42.757666015625006],[71.76054687500002,42.82148437500004],[71.5142578125,42.766943359375006],[71.42207031250004,42.78315429687504],[71.25664062500002,42.733544921874966],[70.89287109375007,42.339990234374994],[70.94677734374997,42.24868164062505],[69.15361328125002,41.42524414062498],[68.58408203125,40.876269531250045],[68.57265625,40.62265624999998],[68.29189453125,40.656103515625034],[68.04765625000007,40.80927734374998],[68.11308593750007,41.02861328124999],[67.9357421875001,41.19658203125002],[66.70966796875004,41.17915039062501],[66.49863281250006,41.99487304687503],[66.00957031250007,42.00488281250003],[66.1002929687501,42.99082031249998],[65.80302734375002,42.87695312500006],[65.49619140625,43.310546875],[64.9054687500001,43.714697265625006],[64.44316406250007,43.55117187499999],[63.20703125000003,43.62797851562502],[61.99023437500003,43.492138671874955],[61.007910156250006,44.39379882812497],[58.555273437500006,45.55537109375001],[55.97568359375006,44.99492187499996],[55.97744140625005,41.32221679687504],[55.434375,41.296289062499994],[54.85380859375002,41.965185546875006],[54.120996093749994,42.335205078125],[53.0558593750001,42.14775390624999],[52.4938476562501,41.780371093750034],[52.59658203125005,42.760156249999966],[51.898242187500074,42.86962890624997],[51.61601562500002,43.15844726562503],[51.29541015624997,43.17412109375002],[51.30175781249997,43.48237304687501],[50.8307617187501,44.192773437499966],[50.331152343750006,44.32548828125002],[50.25292968749997,44.461523437500006],[50.409472656250074,44.6240234375],[51.543554687500006,44.53100585937506],[51.009375,44.92182617187501],[51.4157226562501,45.35786132812501],[53.20039062500004,45.33198242187498],[52.77382812499999,45.57275390625],[53.13525390625003,46.19165039062497],[53.069433593750006,46.85605468750006],[52.48320312500002,46.99067382812504],[52.13828125,46.82861328124997],[51.178027343750074,47.110156250000045],[49.886328125,46.59565429687504],[49.347460937500074,46.51914062499998],[49.232226562500074,46.33715820312503],[48.54121093750004,46.60561523437502],[48.558398437500074,46.75712890624999],[48.959375,46.77460937499998],[48.16699218750003,47.70878906249996],[47.48193359374997,47.80390624999998],[47.292382812499994,47.74091796875004],[47.06464843750004,48.23247070312499],[46.660937500000074,48.41225585937502],[46.70263671875003,48.80556640625002],[47.031347656250006,49.150292968749994],[46.80205078125002,49.36708984375002],[46.889550781249994,49.69697265625001],[47.42919921874997,50.35795898437502],[47.7057617187501,50.37797851562502],[48.33496093750003,49.858251953125006],[48.7589843750001,49.92832031250006],[48.625097656250006,50.61269531250005],[49.32343750000004,50.851708984374966],[49.49804687500003,51.08359375000006],[50.246875,51.28950195312498],[50.79394531249997,51.729199218749955],[51.16347656250005,51.6474609375],[51.344531250000074,51.47534179687503],[52.21914062499999,51.709375],[52.57119140625005,51.481640624999955],[53.33808593750004,51.48237304687504],[54.139746093750006,51.04077148437503],[54.555273437500006,50.535791015624994],[54.64160156250003,51.011572265625034],[55.68623046875004,50.582861328125006],[56.49140625000004,51.01953124999997],[57.01171874999997,51.06518554687503],[57.44218750000002,50.88886718749998],[57.83886718750003,51.091650390625006],[58.359179687500074,51.063818359375034],[58.88369140625005,50.694433593750006],[59.4523437500001,50.62041015625002],[59.523046875,50.492871093749955],[59.812402343749994,50.58203125],[60.05859374999997,50.850292968749955],[60.42480468749997,50.67915039062498],[60.94228515625005,50.69550781250004],[61.38945312500002,50.86103515625001],[61.55468750000003,51.32460937500005],[60.464746093749994,51.651171875000045],[60.03027343749997,51.93325195312505],[60.99453125000005,52.33686523437504],[60.77441406249997,52.67578124999997],[61.047460937500006,52.97246093750002],[62.08271484375004,53.00541992187499],[61.65986328125004,53.22846679687504],[61.19921874999997,53.28715820312502],[61.22890625,53.445898437500006],[61.53496093750002,53.52329101562506],[60.97949218749997,53.62172851562505],[61.231054687500006,54.01948242187498],[61.92871093750003,53.94648437500004],[64.46123046875002,54.38417968750002],[65.08837890624997,54.340185546875034],[65.476953125,54.62329101562497],[68.15585937500006,54.97670898437505],[68.20625,55.16093750000002],[68.9772460937501,55.389599609374955],[70.18242187500002,55.162451171875034],[70.73808593750007,55.30517578125],[71.18554687500003,54.59931640624998],[71.09316406250005,54.21220703124999],[72.00449218750006,54.20566406249998],[72.18603515625003,54.32563476562501],[72.44677734375003,53.94184570312498],[72.62226562500004,54.13432617187502],[73.22988281250005,53.957812500000045],[73.71240234375003,54.04238281250002],[73.30566406250003,53.707226562499955],[73.40693359375004,53.44755859374999],[73.85898437500006,53.61972656249998],[74.35156250000003,53.487646484375006],[74.45195312500007,53.64726562500002],[75.22021484374997,53.89379882812506],[75.43720703125004,54.08964843749999],[76.8373046875,54.4423828125],[76.65458984375007,54.14526367187503],[76.42167968750007,54.151513671874966],[76.48476562500005,54.02255859374998],[77.85996093750006,53.269189453124994],[79.98623046875,50.774560546874966],[80.42363281250002,50.94628906249997],[80.44804687500002,51.18334960937503],[80.73525390625,51.29340820312498],[81.12724609375002,51.19106445312502],[81.0714843750001,50.96875],[81.38828125000006,50.95649414062501],[81.46591796875006,50.73984375],[82.49394531250007,50.72758789062499],[82.76083984375012,50.89335937500002],[83.35732421875005,50.99458007812504],[83.94511718750007,50.774658203125],[84.32324218749997,50.239160156249966],[84.9894531250001,50.061425781249994],[85.2326171875001,49.61582031249998],[86.1808593750001,49.49931640624996],[86.67548828125004,49.77729492187501],[86.62646484374997,49.56269531250001],[87.32285156250012,49.085791015625006]]]]},"properties":{"name":"Kazakhstan","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[35.325292968750006,5.364892578124994],[35.745019531249994,5.343994140625],[35.80029296874997,5.156933593749983],[35.77929687499997,5.105566406250006],[35.756152343750074,4.950488281250031],[35.76308593750005,4.808007812500051],[36.02197265625003,4.468115234374991],[36.90556640625002,4.411474609374991],[37.15458984375002,4.254541015624994],[37.944921875,3.746728515625023],[38.0861328125001,3.648828124999966],[38.22529296875004,3.61899414062502],[38.45156250000005,3.604833984374977],[38.608007812500006,3.600097656249986],[39.49443359375002,3.45610351562496],[39.65751953125002,3.577832031249983],[39.79033203125002,3.754248046875034],[39.8421875,3.851464843750037],[40.765234375,4.273046875000034],[41.02080078125002,4.057470703124991],[41.22089843750004,3.943554687499969],[41.372460937499994,3.94619140624998],[41.48193359375003,3.96328125],[41.737695312499994,3.979052734375003],[41.88398437500004,3.977734375000011],[41.6134765625001,3.59047851562498],[41.34179687499997,3.20166015625],[40.964453125,2.814648437500026],[40.9787109375001,-0.870312500000011],[41.249804687500074,-1.220507812499946],[41.4269531250001,-1.449511718749974],[41.521875,-1.572265625000028],[41.53271484374997,-1.695312499999957],[41.26748046875005,-1.945019531250026],[40.889746093750006,-2.023535156250034],[40.89824218750002,-2.269921874999966],[40.64414062500006,-2.53945312499998],[40.22246093750002,-2.688378906250037],[40.1154296875001,-3.250585937499991],[39.8609375,-3.576757812500006],[39.49091796875004,-4.478417968750023],[39.221777343750006,-4.692382812500014],[37.608203125000074,-3.497070312500028],[37.643847656250074,-3.045410156250028],[33.90322265625005,-1.002050781250034],[33.94316406250002,0.173779296874969],[34.160937500000074,0.605175781250026],[34.4108398437501,0.867285156250034],[34.48173828125002,1.042138671875051],[34.79863281250002,1.24453125],[34.976464843749994,1.719628906250051],[34.97753906249997,1.861914062499991],[34.9640625000001,2.06240234374998],[34.8830078125001,2.417919921875026],[34.90576171875003,2.4796875],[34.44785156250006,3.163476562500037],[34.40722656249997,3.357519531250034],[34.39941406249997,3.412695312500006],[34.44179687499999,3.60625],[34.43769531250004,3.650585937499969],[34.392871093750074,3.691503906250048],[34.26708984375003,3.733154296875],[34.16503906250003,3.812988281250014],[34.18574218750004,3.869775390625037],[34.13203125000004,3.889160156249986],[33.97607421874997,4.220214843750028],[34.176855468750006,4.419091796875037],[34.38017578125002,4.620654296874974],[34.6398437500001,4.875488281250028],[34.878320312499994,5.109570312500026],[35.08447265624997,5.31186523437502],[35.268359375000074,5.492285156250006],[35.325292968750006,5.364892578124994]]]},"properties":{"name":"Kenya","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[72.63994140625002,39.385986328125],[72.22998046875,39.20751953125],[72.14736328125002,39.2607421875],[72.08417968750001,39.31064453125],[72.04277343750002,39.3521484375],[71.77861328125002,39.277978515624994],[71.73222656250002,39.422998046874994],[71.50332031250002,39.478808593749996],[71.51738281250002,39.553857421874994],[71.50302734375,39.582177734374994],[71.4703125,39.603662109374994],[70.79931640625,39.3947265625],[70.50117187500001,39.587353515625],[69.29765625000002,39.524804687499994],[69.2447265625,39.827099609375],[69.27880859375,39.917773437499996],[69.3072265625,39.968554687499996],[69.36542968750001,39.947070312499996],[69.43193359375002,39.909765625],[69.47626953125001,39.919726562499996],[69.47099609375002,39.990625],[69.46875,40.020751953125],[69.966796875,40.20224609375],[70.59921875,39.974511718749994],[70.990625,40.2548828125],[71.3046875,40.286914062499996],[71.69248046875,40.15234375],[72.13125,40.438623046874994],[72.3892578125,40.427392578124994],[72.40205078125001,40.578076171875],[72.6041015625,40.525439453124996],[73.13212890625002,40.82851562499999],[72.65830078125,40.869921875],[72.36406250000002,41.04345703125],[72.294921875,41.039941406249994],[72.21308593750001,41.0142578125],[72.18730468750002,41.025927734374996],[72.18095703125002,41.118457031249996],[72.16425781250001,41.173730468749994],[72.11542968750001,41.186572265624996],[72.05244140625001,41.16474609375],[71.95849609375,41.187060546874996],[71.87861328125001,41.19501953125],[71.8580078125,41.311376953125],[71.79248046875,41.413134765624996],[71.75771484375002,41.428027343749996],[71.70068359375,41.454003906249994],[71.66494140625002,41.5412109375],[71.6375,41.5341796875],[71.60224609375001,41.503271484375],[71.60625,41.367431640625],[71.54560546875001,41.308056640625],[71.5,41.307470703125],[71.4208984375,41.34189453125],[71.40839843750001,41.136035156249996],[71.39306640625,41.123388671875],[71.11074218750002,41.152636718749996],[70.86044921875,41.224902343749996],[70.734375,41.400537109374994],[70.18095703125002,41.571435546874994],[70.85664062500001,42.030810546874996],[71.0322265625,42.077783203124994],[71.228515625,42.162890625],[71.23232421875002,42.186279296875],[71.21269531250002,42.206445312499994],[71.12998046875,42.25],[71.03603515625002,42.28466796875],[70.97900390625,42.266552734375],[70.94677734375,42.248681640624994],[70.89287109375002,42.339990234374994],[71.25664062500002,42.733544921874994],[71.42207031250001,42.783154296875],[71.5142578125,42.766943359375],[71.76054687500002,42.821484375],[72.16181640625001,42.760693359375],[72.27578125000002,42.757666015625],[72.54316406250001,42.677734375],[72.7529296875,42.637890625],[72.855078125,42.5611328125],[73.28291015625001,42.5041015625],[73.316015625,42.4669921875],[73.41162109375,42.419775390625],[73.49296875000002,42.409033203125],[73.421875,42.593505859375],[73.4501953125,42.703027343749994],[73.55625,43.002783203125],[73.88603515625002,43.132568359375],[74.20908203125,43.240380859374994],[75.04765625000002,42.90439453125],[75.68173828125,42.83046875],[75.78955078125,42.932910156249996],[75.84033203125,42.9375],[75.9322265625,42.928515625],[76.50917968750002,42.918896484375],[76.646484375,42.92880859375],[76.98808593749999,42.973583984375],[79.12666015625001,42.775732421875],[79.20302734375002,42.666015625],[79.29550781250003,42.604833984375],[79.36777343750003,42.547216796875],[79.42822265625,42.48349609375],[79.92109375000001,42.413134765624996],[80.0712890625,42.302978515625],[80.209375,42.1900390625],[80.24619140625003,42.059814453125],[80.23515624999999,42.04345703125],[80.21621093750002,42.032421875],[79.90966796875,42.014990234375],[79.84042968750003,41.995751953124994],[79.76611328125,41.898876953125],[78.74257812500002,41.56005859375],[78.54316406250001,41.4595703125],[78.44287109375,41.417529296874996],[78.36240234375003,41.371630859374996],[78.34628906250003,41.2814453125],[78.12343750000002,41.075634765625],[77.95644531250002,41.050683593749994],[77.81523437499999,41.055615234375],[77.71933593750003,41.024316406249994],[77.58173828125001,40.9927734375],[76.98662109374999,41.03916015625],[76.90771484375,41.024169921875],[76.82402343749999,40.982324218749994],[76.70839843750002,40.818115234375],[76.6611328125,40.779638671875],[76.63984375000001,40.742236328124996],[76.62216796875003,40.662353515625],[76.57792968749999,40.577880859375],[76.48017578125001,40.449511718749996],[76.39638671875002,40.389794921874994],[76.31855468750001,40.35224609375],[76.25830078125,40.43076171875],[75.87197265625002,40.30322265625],[75.67714843750002,40.305810546874994],[75.55556640625002,40.6251953125],[75.52080078125002,40.6275390625],[75.24101562500002,40.480273437499996],[75.111328125,40.4541015625],[75.0044921875,40.449511718749996],[74.865625,40.493505859375],[74.80126953125,40.428515625],[74.83046875000002,40.32851562499999],[74.41191406250002,40.13720703125],[74.24267578125,40.092041015625],[74.08515625000001,40.07431640625],[73.99160156250002,40.043115234374994],[73.93876953125002,39.978808593749996],[73.88457031250002,39.8779296875],[73.85625,39.828662109374996],[73.83535156250002,39.800146484375],[73.83974609375002,39.762841796874994],[73.88251953125001,39.71455078125],[73.9146484375,39.606494140624996],[73.90712890625002,39.57851562499999],[73.87275390625001,39.53330078125],[73.82294921875001,39.48896484375],[73.71572265625002,39.462255859375],[73.63164062500002,39.448876953124994],[73.47041015625001,39.460595703124994],[73.38740234375001,39.442724609375],[73.33613281250001,39.412353515625],[73.2349609375,39.374560546874996],[73.10927734375002,39.3619140625],[72.63994140625002,39.385986328125]],[[70.66416015625,39.85546875],[70.56708984375001,39.866601562499994],[70.49775390625001,39.882421875],[70.48281250000002,39.882714843749994],[70.4892578125,39.863037109375],[70.5595703125,39.790917968749994],[70.61210937500002,39.786767578124994],[70.70166015625,39.82529296875],[70.66416015625,39.85546875]],[[71.20615234375,39.892578125],[71.22871093750001,40.048144531249996],[71.08037109375002,40.079882812499996],[71.02412109375001,40.149169921875],[71.00546875,40.152294921875],[70.96064453125001,40.08798828125],[71.04482421875002,39.992529296875],[71.04365234375001,39.976318359375],[71.01171875,39.8951171875],[71.06425781250002,39.884912109374994],[71.15625,39.883447265624994],[71.20615234375,39.892578125]]]},"properties":{"name":"Kyrgyzstan","childNum":3}},{"geometry":{"type":"Polygon","coordinates":[[[104.42636718750006,10.411230468749991],[103.87050781250005,10.655126953125034],[103.58710937500004,10.552197265625026],[103.54042968750005,10.668701171875043],[103.721875,10.890136718750043],[103.5324218750001,11.146679687499997],[103.35361328125006,10.921582031250054],[103.15283203124997,10.913720703125051],[103.12548828124997,11.460644531250011],[102.9486328125,11.773486328124974],[102.93388671875002,11.706689453125037],[102.73662109375007,12.089794921875011],[102.75566406250002,12.42626953125],[102.49960937500012,12.669970703125003],[102.33632812500005,13.560302734375014],[102.546875,13.585693359375043],[102.90927734375006,14.136718750000028],[103.19941406250004,14.332617187499977],[104.77900390625004,14.427832031250006],[105.07412109375005,14.227441406250037],[105.12597656250003,14.280957031250011],[105.16914062500004,14.336083984374966],[105.1833007812501,14.346240234374989],[105.18554687500003,14.319091796874972],[105.20703125000003,14.259375],[105.24570312500006,14.200537109374977],[105.35019531250006,14.109570312500011],[105.53154296875007,14.156152343749994],[105.73974609375003,14.084960937500057],[105.83144531250005,13.976611328125003],[105.9044921875001,13.924511718750054],[106.06679687500005,13.921191406250003],[106.12470703125004,14.049121093750031],[106.09667968749997,14.127099609375023],[106.00410156250004,14.262890624999983],[105.97890625,14.343017578125043],[106.00839843750012,14.357177734375],[106.1652343750001,14.372363281249989],[106.19072265625007,14.388134765624997],[106.22539062500002,14.476220703125009],[106.26796875,14.466210937500009],[106.35498046875003,14.454785156249997],[106.44697265625004,14.515039062500009],[106.50146484375003,14.578222656250006],[106.53115234375005,14.549414062499991],[106.5636718750001,14.505078125000026],[106.59921875000006,14.479394531250037],[106.66542968750005,14.441308593749994],[106.73818359375005,14.387744140625017],[106.78349609375002,14.335107421875037],[106.81992187500006,14.314697265625057],[106.91318359375006,14.329394531250031],[106.93808593750006,14.327343750000054],[106.99218750000003,14.391015624999966],[107.03017578125,14.425683593750009],[107.06240234375,14.415771484375043],[107.109375,14.416699218750054],[107.29267578125004,14.592382812500048],[107.37988281250003,14.555322265625051],[107.41474609375004,14.56289062499999],[107.51943359375005,14.705078125],[107.3314453125,14.126611328125009],[107.60546874999997,13.437792968750017],[107.47539062500002,13.030371093749963],[107.50644531250006,12.364550781250031],[107.39335937500002,12.260498046874972],[107.21210937500004,12.30400390624996],[106.70009765625,11.979296874999974],[106.41386718750002,11.9484375],[106.39921875000007,11.687011718750028],[106.0060546875001,11.758007812500011],[105.85146484375005,11.635009765625],[105.85605468750006,11.294287109375048],[106.16093750000002,11.037109375000057],[106.16396484375005,10.794921875],[105.85332031250007,10.86357421874996],[105.75507812500004,10.989990234375043],[105.40576171875003,10.95161132812504],[105.3146484375001,10.845166015625026],[105.04570312500002,10.911376953125014],[105.04638671874997,10.701660156250014],[104.85058593749997,10.534472656249974],[104.42636718750006,10.411230468749991]]]},"properties":{"name":"Cambodia","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-157.34213867187503,1.855566406250034],[-157.17578125,1.73984375],[-157.57895507812498,1.902050781249997],[-157.43583984374993,1.84726562500002],[-157.365185546875,1.94609375],[-157.44189453125003,2.025048828125009],[-157.321875,1.968554687500045],[-157.34213867187503,1.855566406250034]]],[[[-159.3390625,3.923535156249983],[-159.27475585937503,3.796582031250054],[-159.40903320312503,3.87324218750004],[-159.3390625,3.923535156249983]]]]},"properties":{"name":"Kiribati","childNum":2}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[126.32695312500002,33.2236328125],[126.16562500000012,33.31201171875],[126.33769531250002,33.46040039062501],[126.90117187500002,33.51513671874997],[126.87285156250002,33.34116210937498],[126.32695312500002,33.2236328125]]],[[[126.23369140625002,34.370507812499994],[126.12285156250002,34.443945312500034],[126.34384765625012,34.544921875],[126.23369140625002,34.370507812499994]]],[[[126.17197265625006,34.73115234375001],[126.00751953125004,34.86748046874999],[126.07841796875002,34.914843750000045],[126.17197265625006,34.73115234375001]]],[[[128.0658203125,34.80585937500004],[128.05468750000003,34.70805664062502],[127.87343750000005,34.73496093749998],[127.8322265625001,34.87451171875],[128.0658203125,34.80585937500004]]],[[[128.74101562500007,34.798535156249955],[128.64667968750004,34.73686523437502],[128.48925781250003,34.86528320312496],[128.66796875000003,35.0087890625],[128.74101562500007,34.798535156249955]]],[[[126.52070312500004,37.73681640625003],[126.516015625,37.60468750000001],[126.42333984375003,37.62363281250006],[126.41162109374997,37.82265625000002],[126.52070312500004,37.73681640625003]]],[[[128.37460937500012,38.6234375],[129.41826171875002,37.059033203124955],[129.40351562500004,36.052148437499994],[129.57285156250006,36.05053710937503],[129.4191406250001,35.49785156249996],[129.07675781250006,35.12270507812502],[128.5109375000001,35.10097656250002],[128.44394531250012,34.87036132812503],[128.03623046875006,35.02197265625],[127.71484374999997,34.95468749999998],[127.71542968750012,34.72104492187498],[127.40429687499997,34.823095703125006],[127.47910156250012,34.625244140625],[127.324609375,34.463281249999966],[127.17343750000006,34.54614257812497],[127.24707031249997,34.755126953125],[126.89746093749997,34.438867187499966],[126.75478515625005,34.511865234374994],[126.53144531250004,34.31425781249999],[126.26445312500002,34.67324218750002],[126.52451171875006,34.697900390624966],[126.59335937500012,34.824365234374994],[126.42070312500002,34.823388671874966],[126.29111328125012,35.154150390625034],[126.61406250000007,35.57099609375004],[126.4884765625001,35.647070312500006],[126.75302734375006,35.871972656249994],[126.5404296875,36.166162109374966],[126.4876953125,36.69379882812498],[126.18085937500004,36.69160156249998],[126.16054687500005,36.77192382812501],[126.48701171875004,37.00747070312502],[126.78447265625007,36.94843749999998],[126.87207031249997,36.82446289062506],[126.97685546875002,36.93940429687501],[126.74638671875002,37.19355468750001],[126.63388671875012,37.78183593750006],[127.09033203125003,38.28388671875001],[128.03896484375,38.30854492187498],[128.37460937500012,38.6234375]]]]},"properties":{"name":"Korea","childNum":7}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[48.27539062499997,29.624316406250017],[48.17968750000003,29.611425781250063],[48.081445312499994,29.798925781250063],[48.1847656250001,29.978857421875034],[48.348242187500006,29.78266601562504],[48.27539062499997,29.624316406250017]]],[[[48.442480468750006,28.542919921874983],[47.671289062499994,28.53315429687504],[47.433203125,28.989550781250017],[46.53144531250004,29.09624023437499],[46.69375,29.259667968749966],[46.76933593750002,29.347460937500017],[46.90585937500006,29.5375],[47.14824218750002,30.0009765625],[47.64375,30.097314453125023],[47.75390624999997,30.076611328124955],[47.97871093750004,29.98281250000005],[48.00566406250002,29.835791015625034],[48.143457031249994,29.57246093750001],[47.96962890625005,29.61669921874997],[47.72265624999997,29.393017578124955],[48.0514648437501,29.355371093750023],[48.442480468750006,28.542919921874983]]]]},"properties":{"name":"Kuwait","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[102.12744140625011,22.37919921874999],[102.58251953125006,21.904296875000057],[102.66201171875008,21.676025390625057],[102.73857421875005,21.677929687500125],[102.77109375000015,21.70966796875001],[102.79824218750014,21.797949218750034],[102.81591796875,21.807373046875],[102.94960937500008,21.681347656250068],[102.85117187500009,21.26591796874999],[102.8837890625,21.202587890625068],[103.1044921875,20.89165039062499],[103.21074218749999,20.840625],[103.46357421874995,20.779833984375102],[103.6350585937501,20.697070312500102],[104.10136718750005,20.945507812500125],[104.1953125,20.91396484375008],[104.349609375,20.82109374999999],[104.58320312500001,20.646679687499955],[104.53271484375,20.554882812500125],[104.47861328124998,20.529589843750102],[104.40781250000015,20.485742187500023],[104.36777343750015,20.441406250000057],[104.39218750000015,20.424755859375068],[104.49619140625003,20.41367187499992],[104.61884765624995,20.374511718750114],[104.65644531250001,20.328515624999966],[104.66191406250005,20.289013671875125],[104.67695312500007,20.224707031249977],[104.69873046875006,20.205322265625114],[104.84785156250007,20.202441406250045],[104.88867187500006,20.169091796875023],[104.92919921874994,20.082812500000045],[104.92792968750007,20.01811523437499],[104.81513671875001,19.90400390625001],[104.80175781250011,19.836132812500068],[104.74316406250006,19.754736328124977],[104.58789062500006,19.61875],[104.54628906250014,19.610546875000068],[104.25986328125003,19.685498046875068],[104.06279296875005,19.678417968750068],[104.03203124999999,19.67514648437492],[104.0134765625001,19.646484374999943],[104.05156250000005,19.564160156250068],[104.06289062500002,19.482568359375136],[104.02753906250013,19.420458984375102],[103.93203125000002,19.366064453125034],[103.89638671875002,19.339990234375023],[103.89160156249994,19.30498046874999],[105.146484375,18.650976562499977],[105.14541015625014,18.616796874999977],[105.08701171875015,18.49624023437508],[105.11455078125005,18.405273437500057],[105.45820312500007,18.154296875000057],[105.51855468750011,18.077441406250045],[105.58847656250015,17.983691406249932],[105.69140625,17.737841796874932],[106.00625,17.415283203124943],[106.26953125,17.216796875000057],[106.33339843750002,17.14370117187508],[106.42597656250007,17.00253906250009],[106.50224609374999,16.9541015625],[106.52597656250003,16.876611328125023],[106.53369140625,16.821044921875057],[106.54619140625005,16.650732421874977],[106.65644531250013,16.492626953125125],[106.73955078124999,16.452539062500136],[106.79160156250015,16.490332031249977],[106.83242187500008,16.526269531250023],[106.85107421875,16.515625],[106.89277343750013,16.396533203125102],[106.93066406250006,16.353125],[107.39638671875008,16.04301757812499],[107.39199218750008,15.951660156250057],[107.36064453125005,15.921728515624977],[107.18886718750008,15.838623046875114],[107.16591796875002,15.802490234375],[107.27939453125003,15.618701171875045],[107.33876953125002,15.560498046875125],[107.56425781249999,15.3916015625],[107.62167968750015,15.309863281250045],[107.653125,15.255224609375091],[107.63369140625008,15.18984375000008],[107.58964843749999,15.118457031250102],[107.55527343750009,15.057031250000023],[107.48037109375014,14.979882812500136],[107.5046875000001,14.91591796875008],[107.52451171875003,14.871826171874943],[107.51376953124998,14.817382812500057],[107.51943359375008,14.705078125000114],[107.46513671875005,14.664990234375125],[107.41474609375007,14.56289062500008],[107.37988281250006,14.555322265625136],[107.29267578125007,14.592382812500034],[107.109375,14.416699218749955],[107.06240234375008,14.415771484374943],[107.03017578125008,14.425683593750023],[106.99218749999994,14.39101562500008],[106.93808593750015,14.327343750000068],[106.91318359375003,14.329394531249932],[106.81992187500003,14.314697265624943],[106.7834960937501,14.335107421875023],[106.73818359375008,14.387744140625102],[106.66542968750002,14.441308593750023],[106.59921875000003,14.479394531250136],[106.56367187500007,14.505078125000011],[106.53115234375002,14.549414062499977],[106.50146484375,14.578222656250034],[106.22539062500005,14.476220703125023],[106.1907226562501,14.388134765625011],[106.16523437500007,14.372363281249989],[106.00839843750009,14.357177734375114],[105.97890625000014,14.343017578125057],[106.00410156250013,14.262890625000068],[106.09667968750011,14.127099609375136],[106.12470703124995,14.049121093750045],[106.06679687500008,13.921191406250102],[105.90449218750007,13.924511718750068],[105.83144531250008,13.976611328124989],[105.73974609375006,14.084960937500057],[105.5315429687501,14.156152343750023],[105.35019531250009,14.109570312500125],[105.24570312500015,14.200537109374977],[105.20703125000006,14.259375],[105.18554687499994,14.319091796875],[105.18330078125001,14.346240234374989],[105.24365234375006,14.367871093749955],[105.34218750000008,14.416699218749955],[105.42265624999993,14.471630859374955],[105.47558593750006,14.530126953124977],[105.49736328125005,14.590673828125034],[105.52304687500015,14.843310546874989],[105.54667968749999,14.932470703125034],[105.53339843750013,15.041601562500091],[105.49042968750007,15.127587890625023],[105.49042968750007,15.256591796875],[105.615625,15.488281249999943],[105.63886718750013,15.585937499999943],[105.64101562500002,15.656542968749932],[105.62207031250006,15.699951171875114],[105.39892578125011,15.829882812500102],[105.40625,15.987451171875023],[105.33066406250003,16.037890625000045],[105.1487304687501,16.09355468749999],[105.04716796874999,16.16025390625009],[104.81933593749994,16.466064453125057],[104.75058593750015,16.647558593750034],[104.74355468750014,16.884375],[104.75898437500013,17.0771484375],[104.81601562499998,17.30029296875],[104.73964843750008,17.461669921875],[104.428125,17.698974609375057],[104.32265625000002,17.815820312500023],[104.19619140625002,17.988378906250034],[104.04873046875002,18.216699218749966],[103.94960937500008,18.318994140625023],[103.89882812500002,18.295312500000023],[103.79228515624999,18.31650390625009],[103.62968750000005,18.382568359375057],[103.48798828124995,18.41816406250001],[103.36699218750005,18.42333984375],[103.28828124999995,18.408398437499955],[103.25175781249999,18.373486328125125],[103.24892578125014,18.338964843750034],[103.27958984374999,18.304980468750045],[103.26318359375,18.278466796875136],[103.19970703125006,18.25947265625001],[103.14853515625009,18.221728515624932],[103.09121093750014,18.13823242187499],[103.05136718750003,18.02851562500001],[102.80742187500005,17.945556640625],[102.71757812500005,17.892236328125136],[102.67519531250014,17.851757812500068],[102.68007812500008,17.824121093750136],[102.66064453125,17.8179687499999],[102.61679687500015,17.833349609375034],[102.59824218750009,17.926757812500057],[102.55253906249999,17.965087890625057],[102.4587890625001,17.984619140624943],[102.35185546874999,18.045947265625045],[102.14824218750005,18.203857421875057],[102.10146484375014,18.21064453125001],[102.03457031250002,18.169824218750023],[101.94746093750001,18.081494140624955],[101.87548828125011,18.046435546874932],[101.81865234375005,18.064648437500125],[101.77480468750002,18.033398437500125],[101.6875,17.889404296875114],[101.56367187500001,17.820507812500125],[101.55507812500002,17.812353515625034],[101.41367187500015,17.71875],[101.16748046875011,17.4990234375],[101.10517578125001,17.479541015625102],[100.9084960937501,17.583886718750023],[101.14394531250008,18.14262695312499],[101.1375,18.286865234375057],[101.0505859375001,18.407031250000045],[101.04697265625003,18.441992187500034],[101.28632812499995,18.977148437500034],[101.19755859374999,19.327929687500045],[101.22080078125015,19.486621093750045],[101.21191406250011,19.548339843750057],[100.51357421875008,19.553466796875],[100.39765625000013,19.756103515625057],[100.51953125000006,20.177929687500068],[100.31796875000003,20.385888671875136],[100.2180664062501,20.339599609375114],[100.13974609375015,20.245410156250102],[100.11494140625007,20.25766601562492],[100.12246093750002,20.316650390625057],[100.12968750000005,20.372216796875023],[100.1838867187501,20.589111328124943],[100.2493164062501,20.730273437499932],[100.32607421875008,20.795703124999932],[100.40742187499995,20.823242187500057],[100.56513671875013,20.82509765625008],[100.62294921875002,20.85957031250001],[100.61767578125,20.87924804687509],[100.54931640625011,20.884228515625068],[100.5222656250001,20.921923828125102],[100.53613281250006,20.992382812500068],[100.703125,21.25136718750008],[101.0803710937501,21.46865234375008],[101.13886718750013,21.567480468749977],[101.19667968750002,21.522070312499977],[101.17539062500009,21.407519531250102],[101.21992187500013,21.342431640625136],[101.21181640625008,21.278222656250023],[101.22441406249999,21.22373046874992],[101.24785156249993,21.197314453125045],[101.28144531250007,21.184130859375045],[101.44355468750001,21.230810546874977],[101.54238281250008,21.234277343750136],[101.70478515625013,21.150146484375057],[101.728125,21.15639648437508],[101.78349609374999,21.204150390625045],[101.8005859375001,21.212597656249955],[101.7229492187501,21.314941406250057],[101.74726562500007,21.60576171874999],[101.7439453125001,21.77797851562508],[101.73652343750001,21.826513671874977],[101.52451171874998,22.253662109375],[101.56787109375011,22.2763671875],[101.6199218750001,22.327441406250102],[101.67148437500009,22.462304687500023],[101.70751953125,22.486572265625],[101.73876953125011,22.495263671874966],[101.75996093750001,22.490332031250034],[101.841796875,22.388476562500102],[102.02441406250006,22.439208984375114],[102.09150390625007,22.412255859375136],[102.12744140625011,22.37919921874999]]]},"properties":{"name":"Lao PDR","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[35.869140625,33.43173828125],[35.411230468750006,33.07568359375],[35.10859375000001,33.08369140625],[35.64785156250002,34.2482421875],[35.97626953125001,34.629199218749996],[36.383886718750006,34.65791015625],[36.32988281250002,34.499609375],[36.50439453125,34.432373046875],[36.5849609375,34.221240234374996],[36.27783203125,33.92529296875],[36.36503906250002,33.83935546875],[35.98613281250002,33.75263671875],[36.03447265625002,33.58505859375],[35.869140625,33.43173828125]]]},"properties":{"name":"Lebanon","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-8.486425781249977,7.558496093749994],[-8.408740234374989,7.411816406249997],[-8.324511718749989,6.920019531249991],[-8.587890625,6.490527343749989],[-8.287109375,6.319042968749997],[-7.981591796874994,6.2861328125],[-7.888623046874983,6.23486328125],[-7.800927734374994,6.038916015624991],[-7.730371093749994,5.919042968749991],[-7.636132812499994,5.90771484375],[-7.454394531249989,5.84130859375],[-7.39990234375,5.550585937499989],[-7.585058593749977,4.916748046875],[-7.574658203124983,4.572314453124989],[-7.544970703124989,4.351318359375],[-8.259033203125,4.589990234374994],[-9.132177734374977,5.054638671874997],[-10.2763671875,6.07763671875],[-11.291601562499977,6.688232421875],[-11.507519531249983,6.906542968749989],[-11.267675781249977,7.232617187499997],[-10.878076171874994,7.538232421874994],[-10.6474609375,7.759375],[-10.570849609374989,8.071142578124991],[-10.516748046874994,8.125292968749989],[-10.359814453124983,8.187939453124997],[-10.283203125,8.485156249999989],[-10.233056640624994,8.488818359374989],[-10.147412109374983,8.519726562499997],[-10.064355468749994,8.429882812499997],[-9.781982421875,8.537695312499991],[-9.518261718749983,8.34609375],[-9.369140625,7.703808593749997],[-9.463818359374983,7.415869140624991],[-9.11757812499999,7.215917968749991],[-8.8896484375,7.2626953125],[-8.659765624999977,7.688378906249994],[-8.486425781249977,7.558496093749994]]]},"properties":{"name":"Liberia","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[25.150488281250006,31.654980468749997],[24.85273437500001,31.334814453125],[24.96142578125,30.678515625],[24.703222656250006,30.201074218749994],[24.980273437500017,29.181884765625],[24.980273437500017,25.5888671875],[24.980273437500017,21.995849609375],[24.9794921875,20.002587890624994],[23.980273437500017,19.99594726562499],[23.980273437500017,19.496630859375003],[20.14765625000001,21.38925781249999],[15.984082031250011,23.445214843749994],[14.97900390625,22.99619140624999],[14.215527343750011,22.619677734375003],[13.48125,23.18017578125],[11.967871093750006,23.517871093750003],[11.507617187500017,24.314355468749994],[10.686132812500006,24.55136718749999],[10.395898437500023,24.485595703125],[10.255859375,24.591015625],[10.000683593750011,25.332080078125003],[9.4482421875,26.067138671875],[9.491406250000011,26.333740234375],[9.883203125000023,26.630810546874997],[9.74755859375,27.330859375],[9.916015625,27.785693359374996],[9.805273437500006,29.176953125],[9.310253906250011,30.115234375],[9.51875,30.229394531249994],[9.89501953125,30.3873046875],[9.932519531250023,30.425341796874996],[10.059765625000011,30.580078125],[10.21640625,30.783203125],[10.114941406250011,31.463769531249994],[10.274609375000011,31.684960937499994],[10.475781250000011,31.736035156249997],[10.60888671875,31.929541015625],[10.826367187500011,32.0806640625],[11.005175781250017,32.172705078125],[11.168261718750017,32.256738281249994],[11.358007812500006,32.34521484375],[11.504980468750006,32.413671875],[11.535937500000017,32.47333984375],[11.533789062500006,32.524951171874996],[11.453906250000017,32.642578125],[11.453906250000017,32.781689453125],[11.459179687500011,32.897363281249994],[11.467187500000023,32.965722656249994],[11.504589843750011,33.181933593749996],[11.657128906250023,33.118896484375],[11.8134765625,33.093701171875],[12.279882812500006,32.858544921874994],[12.753515625,32.801074218749996],[13.283496093750017,32.9146484375],[15.176562500000017,32.391162109374996],[15.705957031250023,31.426416015624994],[17.830468750000023,30.927587890625],[18.669824218750023,30.415673828124994],[19.12373046875001,30.26611328125],[19.713281250000023,30.48837890625],[20.11152343750001,30.963720703125],[19.926367187500006,31.817529296874994],[20.121484375000023,32.21875],[20.62109375,32.58017578125],[21.63593750000001,32.937304687499996],[22.187402343750023,32.918261718749996],[23.090625,32.61875],[23.10625,32.331445312499994],[23.28632812500001,32.213818359375],[24.129687500000017,32.009228515625],[24.878515625,31.984277343749994],[25.150488281250006,31.654980468749997]]]},"properties":{"name":"Libya","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-60.89521484375,13.821972656249997],[-60.951416015625,13.717578125],[-61.073144531249994,13.865576171874991],[-60.908105468749994,14.09335937499999],[-60.89521484375,13.821972656249997]]]},"properties":{"name":"Saint Lucia","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[79.87480468750002,9.050732421875026],[79.90371093750005,8.975],[79.74765625000006,9.104589843749991],[79.87480468750002,9.050732421875026]]],[[[79.98232421875,9.812695312500011],[80.25283203125005,9.796337890625054],[80.71113281250004,9.366357421875023],[81.226953125,8.50551757812498],[81.37285156250002,8.431445312499989],[81.42216796875007,8.147851562500023],[81.87412109375012,7.288330078124986],[81.86142578125012,6.901269531249994],[81.63740234375004,6.425146484374991],[80.72412109375003,5.97905273437496],[80.26738281250007,6.009765625],[80.09531250000012,6.153173828125006],[79.859375,6.829296874999983],[79.71298828125012,8.18232421875004],[79.74980468750007,8.294238281250003],[79.78349609375007,8.018457031250051],[79.92890625000004,8.899218749999974],[80.09960937499997,9.209960937500043],[80.08632812500005,9.577832031250026],[80.42832031250006,9.480957031250014],[80.04580078125005,9.649902343749972],[79.98232421875,9.812695312500011]]]]},"properties":{"name":"Sri Lanka","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[28.646875,-30.1265625],[28.39208984375,-30.147558593750006],[28.128710937500017,-30.52509765625001],[28.05683593750001,-30.63105468750001],[27.753125,-30.6],[27.364062500000017,-30.27919921875001],[27.19355468750001,-29.94130859375001],[27.056933593750017,-29.625585937500006],[27.29453125,-29.519335937500003],[27.73554687500001,-28.940039062500006],[27.959863281250023,-28.873339843750003],[28.084375,-28.77998046875001],[28.23261718750001,-28.701269531250006],[28.471875,-28.615820312500006],[28.583398437500023,-28.594140625],[28.625781250000017,-28.58173828125001],[29.301367187500006,-29.08984375],[29.38671875,-29.31972656250001],[29.34882812500001,-29.441992187500006],[29.293554687500006,-29.56689453125],[29.1421875,-29.700976562500003],[29.098046875000023,-29.919042968750006],[28.646875,-30.1265625]]]},"properties":{"name":"Lesotho","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[20.957812500000074,55.27890625000006],[20.89980468750008,55.286669921875045],[21.11484375,55.61650390624999],[20.957812500000074,55.27890625000006]]],[[[25.573046875000017,54.139892578125],[25.497363281250045,54.17524414062501],[25.52734375000003,54.21513671874996],[25.505664062500045,54.26494140624999],[25.46113281250004,54.29277343749996],[25.179492187500017,54.214257812499966],[25.111425781250006,54.15493164062505],[25.04609375000004,54.13305664062503],[24.869531250000023,54.14516601562502],[24.82568359374997,54.118994140625006],[24.78925781250001,53.99824218750001],[24.768164062499977,53.97465820312499],[24.31796875,53.892968749999966],[24.236621093750045,53.91997070312496],[24.19130859375005,53.95043945312503],[23.559082031250057,53.91982421875002],[23.484667968750074,53.939794921875006],[23.453613281250057,54.14345703125002],[23.3701171875,54.20048828124999],[23.282324218750063,54.240332031250034],[23.17031250000008,54.28144531249998],[23.0875,54.299462890624994],[23.042187500000068,54.30419921875],[23.01552734375005,54.34833984375001],[22.976757812500068,54.36635742187505],[22.89394531250008,54.390527343749994],[22.82373046874997,54.39580078124999],[22.766210937499977,54.356787109375034],[22.679882812500068,54.493017578125006],[22.684472656250023,54.56293945312504],[22.82470703125,54.87128906249998],[22.56728515625005,55.05913085937496],[22.072363281250034,55.06367187499998],[21.235742187500023,55.26411132812498],[21.237890625000034,55.455029296874955],[21.06191406250005,55.81342773437498],[21.053808593750006,56.02294921875003],[21.04609375000004,56.07006835937503],[21.31464843750004,56.18813476562502],[21.65351562500004,56.314550781250006],[22.084570312500034,56.40673828125006],[22.875585937500063,56.39643554687501],[22.96826171875003,56.38041992187502],[23.042968750000057,56.324072265625006],[23.119824218749983,56.330664062500006],[23.195898437500034,56.36713867187498],[24.120703125000063,56.26425781249998],[24.90302734375001,56.398193359375],[25.069921875,56.20039062500004],[25.663183593750063,56.104833984375006],[26.593554687500074,55.66752929687502],[26.590820312500057,55.62265625],[26.56660156250001,55.546484375000034],[26.51923828125004,55.448144531249994],[26.469531250000045,55.371923828125006],[26.457617187500006,55.342480468749955],[26.49531250000004,55.31801757812502],[26.68125,55.30644531249999],[26.76015625000008,55.29335937499999],[26.775683593750045,55.27309570312502],[26.601171875000034,55.130175781250045],[26.291796875000074,55.13959960937501],[26.250781250000045,55.12451171875006],[26.175195312500023,55.003271484375034],[26.092968750000068,54.96230468750005],[25.964453124999977,54.947167968749966],[25.85927734375005,54.91928710937498],[25.722460937500074,54.71787109374998],[25.731640625000068,54.59038085937502],[25.72480468750001,54.564257812500045],[25.68515625,54.53579101562502],[25.62031250000004,54.46040039062501],[25.56757812500004,54.377050781250006],[25.54736328125,54.33183593750002],[25.55751953125005,54.310693359374994],[25.702539062499994,54.29296875],[25.765234374999977,54.179785156250034],[25.573046875000017,54.139892578125]]]]},"properties":{"name":"Lithuania","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[6.4873046875,49.798486328124994],[6.344335937500006,49.452734375],[6.181054687500023,49.498925781249994],[6.119921875000017,49.485205078125],[6.074121093750023,49.454638671874996],[6.011425781250011,49.445458984374994],[5.95947265625,49.454638671874996],[5.928906250000011,49.4775390625],[5.9013671875,49.48974609375],[5.823437500000011,49.505078125],[5.789746093750011,49.53828125],[5.776710379464286,49.639953962053575],[5.744042968750023,49.91962890625],[5.7880859375,49.961230468749996],[5.8173828125,50.0126953125],[5.866894531250011,50.0828125],[5.976269531250011,50.1671875],[6.089062500000011,50.154589843749996],[6.110058593750011,50.123779296875],[6.116503906250017,50.120996093749994],[6.109765625000023,50.034375],[6.13818359375,49.97431640625],[6.204882812500017,49.91513671875],[6.272327008928583,49.887234933035714],[6.4873046875,49.798486328124994]]]},"properties":{"name":"Luxembourg","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[28.14794921875,56.142919921875],[27.576757812500006,55.798779296875],[27.052539062500017,55.83056640625],[26.593554687500017,55.667529296874996],[25.663183593750006,56.104833984375],[25.069921875,56.200390625],[24.90302734375001,56.398193359375],[24.120703125,56.2642578125],[23.81269531250001,56.329248046875],[23.195898437500006,56.367138671875],[23.11982421875001,56.3306640625],[23.04296875,56.324072265625],[22.875585937500006,56.396435546875],[22.084570312500006,56.40673828125],[21.730566406250006,56.325976562499996],[21.65351562500001,56.31455078125],[21.31464843750001,56.188134765625],[21.04609375000001,56.070068359375],[21.0712890625,56.82373046875],[21.72871093750001,57.57099609375],[22.554589843750023,57.724267578125],[23.28730468750001,57.08974609375],[23.647753906250017,56.971044921875],[24.382617187500017,57.250048828124996],[24.322558593750017,57.87060546875],[24.3625,57.866162109375],[24.458886718750023,57.907861328125],[25.11103515625001,58.063427734375],[25.27265625000001,58.009375],[25.66015625,57.920166015625],[26.29804687500001,57.60107421875],[26.532617187500023,57.531005859375],[26.96601562500001,57.609130859375],[27.187109375,57.538330078125],[27.326562500000023,57.52548828125],[27.4697265625,57.5240234375],[27.538671875,57.42978515625],[27.796875,57.316943359374996],[27.82861328125,57.293310546875],[27.838281250000023,57.247705078125],[27.83027343750001,57.194482421875],[27.639453125000017,56.845654296875],[27.806054687500023,56.86708984375],[27.8486328125,56.85341796875],[27.89208984375,56.741064453125],[28.00751953125001,56.599853515625],[28.103125,56.545703125],[28.11083984375,56.510693359375],[28.169238281250017,56.386865234375],[28.191699218750017,56.315576171875],[28.202050781250023,56.260400390625],[28.14794921875,56.142919921875]]]},"properties":{"name":"Latvia","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[28.2125,45.450439453125],[28.07470703125,45.598974609375],[28.23945312500001,46.6408203125],[28.07177734375,46.978417968749994],[27.614062500000017,47.34052734375],[26.980761718750017,48.155029296875],[26.618945312500017,48.25986328125],[26.640429687500017,48.294140625],[26.847070312500023,48.387158203125],[26.90058593750001,48.371923828125],[27.228515625,48.371435546875],[27.549218750000023,48.477734375],[28.34052734375001,48.144433593749994],[28.42304687500001,48.146875],[29.125390625000023,47.96455078125],[29.134863281250006,47.489697265625],[29.455664062500006,47.292626953124994],[29.57197265625001,46.964013671874994],[29.7197265625,46.88291015625],[29.877832031250023,46.82890625],[29.942480468750006,46.723779296874994],[29.93476562500001,46.625],[29.92431640625,46.538867187499996],[30.13105468750001,46.423095703125],[30.07568359375,46.377832031249994],[29.878027343750006,46.360205078125],[29.837890625,46.350537109375],[29.458789062500017,46.453759765624994],[29.30488281250001,46.466601562499996],[29.22382812500001,46.376953125],[29.20458984375,46.379345703125],[29.20078125,46.50498046875],[29.18623046875001,46.523974609374996],[29.146289062500017,46.526904296874996],[28.958398437500023,46.45849609375],[28.92744140625001,46.424121093749996],[28.930566406250023,46.362255859375],[28.94375,46.288427734375],[29.00625,46.17646484375],[28.971875,46.12763671875],[28.94775390625,46.049951171874994],[28.849511718750023,45.978662109374994],[28.73876953125,45.937158203124994],[28.729296875000017,45.852001953125],[28.667578125,45.793847656249994],[28.562304687500017,45.735791015625],[28.491601562500023,45.665771484375],[28.4990234375,45.517724609374994],[28.310351562500017,45.498583984374996],[28.26484375000001,45.48388671875],[28.2125,45.450439453125]]]},"properties":{"name":"Moldova","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[49.936425781249994,-16.90292968750002],[49.82402343750002,-17.08652343750002],[50.02304687500006,-16.6953125],[49.936425781249994,-16.90292968750002]]],[[[48.3421875,-13.363867187500034],[48.21191406250003,-13.385253906249957],[48.191210937500074,-13.259960937500011],[48.308886718750074,-13.198242187499957],[48.3421875,-13.363867187500034]]],[[[49.53828125000004,-12.432128906250014],[49.9375,-13.072265624999957],[50.23535156249997,-14.732031249999963],[50.482714843750074,-15.385644531249994],[50.20898437499997,-15.960449218750028],[50.02041015625005,-15.801757812500028],[49.89257812500003,-15.457714843750011],[49.664355468750074,-15.521582031249977],[49.83906250000004,-16.486523437499997],[49.76718750000006,-16.815136718749983],[49.44931640625006,-17.240625],[49.477832031250074,-17.89853515624999],[49.362890625,-18.336328125],[47.934472656249994,-22.393945312500023],[47.55800781250005,-23.874609374999963],[47.17734375,-24.787207031249977],[46.72851562499997,-25.14990234374997],[46.15869140624997,-25.230371093750023],[45.5080078125001,-25.56318359374997],[45.2057617187501,-25.57050781250004],[44.0353515625001,-24.995703125],[43.670019531250006,-24.30029296875],[43.722265625,-23.529687500000037],[43.2648437500001,-22.38359375],[43.29052734374997,-21.93251953124998],[43.50185546875005,-21.356445312499957],[43.800195312499994,-21.179199218749986],[44.40468750000005,-19.922070312500026],[44.44882812500006,-19.42871093749997],[44.23876953124997,-19.075195312499986],[44.23310546875004,-18.740625],[44.04003906249997,-18.288476562500023],[43.979394531249994,-17.3916015625],[44.42138671874997,-16.70263671874997],[44.476171875,-16.217285156249957],[44.90917968749997,-16.174511718750026],[45.2228515625001,-15.95048828124996],[45.3421875,-16.03671875000002],[45.598242187500006,-15.992578125],[45.70019531249997,-15.813769531249989],[46.157519531250074,-15.738281249999972],[46.3996093750001,-15.924609375000017],[46.331445312499994,-15.713671875000031],[46.47509765625003,-15.513476562500003],[46.942285156249994,-15.219042968749974],[47.09921875,-15.43417968750002],[47.092578125000074,-15.150097656249969],[47.35195312500005,-14.766113281249986],[47.46474609375005,-14.713281249999966],[47.47832031250002,-15.009375],[47.77402343750006,-14.63671875],[47.964160156250074,-14.672558593750026],[47.773339843749994,-14.369921875],[47.995507812499994,-13.960449218749986],[47.88359375000002,-13.807519531250009],[47.94101562500006,-13.662402343750017],[48.03984375000002,-13.596289062499963],[48.25527343750005,-13.719335937499977],[48.796484375,-13.267480468750023],[48.91943359375003,-12.839062499999969],[48.78632812500004,-12.470898437500011],[48.931738281250006,-12.4390625],[49.20703124999997,-12.079589843749957],[49.53828125000004,-12.432128906250014]]]]},"properties":{"name":"Madagascar","childNum":3}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-91.68369140624998,18.677343750000034],[-91.81611328124995,18.675878906250006],[-91.53671874999998,18.760009765625],[-91.68369140624998,18.677343750000034]]],[[[-86.93964843750001,20.303320312500006],[-86.97797851562498,20.489794921875074],[-86.76328124999995,20.579052734374955],[-86.93964843750001,20.303320312500006]]],[[[-106.50224609374999,21.61083984375003],[-106.60703124999993,21.561474609374983],[-106.63935546874995,21.697851562499977],[-106.50224609374999,21.61083984375003]]],[[[-110.56738281249994,25.003466796875017],[-110.5388671875,24.89155273437504],[-110.69926757812499,25.081445312499994],[-110.56738281249994,25.003466796875017]]],[[[-112.05727539062498,24.545703125000017],[-112.29677734375002,24.789648437500063],[-112.15942382812501,25.28564453125003],[-112.19501953124998,24.841064453125057],[-112.05727539062498,24.545703125000017]]],[[[-111.10029296874998,26.020605468750006],[-111.224658203125,25.83588867187504],[-111.18291015625002,26.040625],[-111.10029296874998,26.020605468750006]]],[[[-115.17060546875001,28.06938476562496],[-115.35292968750002,28.103955078124983],[-115.23354492187495,28.36835937500004],[-115.17060546875001,28.06938476562496]]],[[[-112.20307617187503,29.00532226562504],[-112.27841796875,28.769335937500017],[-112.51406249999997,28.847607421874955],[-112.42353515625,29.203662109375017],[-112.28505859374994,29.240429687499955],[-112.20307617187503,29.00532226562504]]],[[[-113.15561523437502,29.05224609375],[-113.49633789062497,29.30761718749997],[-113.58720703125002,29.57304687499996],[-113.20214843749999,29.301855468750034],[-113.15561523437502,29.05224609375]]],[[[-97.14624023437494,25.961474609375045],[-97.66767578124995,24.389990234374977],[-97.84248046874995,22.510302734375017],[-97.76328124999998,22.105859374999966],[-97.31450195312496,21.56420898437503],[-97.40917968749997,21.272558593750034],[-97.38344726562497,21.56669921874999],[-97.75380859375002,22.02666015624999],[-97.18632812499996,20.717041015625],[-96.45605468749994,19.869775390624966],[-96.28955078124994,19.34375],[-95.778125,18.805517578125034],[-95.92036132812495,18.81958007812497],[-95.62680664062503,18.690576171874994],[-95.71982421874998,18.768359375000017],[-95.18183593749995,18.700732421875017],[-94.79814453124996,18.51459960937501],[-94.45976562499993,18.166650390624994],[-93.55234375,18.430468750000017],[-92.88476562499997,18.468652343749966],[-92.44101562499998,18.67529296874997],[-91.97377929687502,18.715869140625074],[-91.91357421875,18.52851562500001],[-91.53398437499993,18.45654296875],[-91.27524414062498,18.62446289062501],[-91.34306640624996,18.900585937499955],[-91.43666992187502,18.889794921874966],[-90.73925781249994,19.352246093749955],[-90.69316406249996,19.729882812499966],[-90.49169921874997,19.94677734375003],[-90.353125,21.009423828124966],[-89.81977539062495,21.274609374999983],[-88.46669921874997,21.569384765625017],[-88.0068359375,21.604052734375045],[-87.25087890625,21.44697265625004],[-87.18828124999993,21.546435546875045],[-87.36850585937498,21.57373046875],[-87.034765625,21.592236328124955],[-86.824072265625,21.421679687500017],[-86.77177734374999,21.150537109375023],[-86.92622070312493,20.786474609375034],[-87.42138671875,20.23139648437501],[-87.44174804687498,19.861523437499983],[-87.68769531249998,19.63710937499999],[-87.6453125,19.55390625000001],[-87.42475585937498,19.583349609375063],[-87.65869140625003,19.352343750000074],[-87.65576171874997,19.25786132812499],[-87.50107421874998,19.287792968749983],[-87.76181640624998,18.446142578125006],[-87.88198242187497,18.27387695312501],[-88.05644531249996,18.524462890625074],[-88.03173828125,18.838916015625017],[-88.29565429687494,18.47241210937503],[-88.52299804687499,18.445898437500063],[-88.80634765624998,17.965527343749983],[-89.13354492187503,17.970800781249977],[-89.16147460937503,17.81484375],[-90.98916015624997,17.81640624999997],[-90.99296874999993,17.25244140625],[-91.19550781249998,17.254101562499983],[-91.40961914062501,17.255859375],[-90.975830078125,16.867822265624994],[-90.710693359375,16.708105468750034],[-90.65996093749996,16.630908203125045],[-90.634375,16.565136718749955],[-90.63408203125002,16.51074218749997],[-90.57578124999995,16.467822265625017],[-90.47109374999994,16.439550781250034],[-90.41699218750003,16.391015625000023],[-90.41699218750003,16.351318359375],[-90.45014648437493,16.261376953124994],[-90.45986328124997,16.16235351562497],[-90.44716796874994,16.07270507812501],[-90.52197265625,16.07119140625005],[-90.70322265624998,16.07104492187503],[-90.97958984374998,16.07080078124997],[-91.433984375,16.070458984374994],[-91.736572265625,16.070166015625006],[-91.95722656250001,15.703222656250034],[-92.08212890624998,15.495556640625011],[-92.18715820312497,15.320898437499963],[-92.07480468749998,15.074218749999972],[-92.09873046874998,15.026757812499994],[-92.14423828125001,15.001953125],[-92.158544921875,14.963574218749997],[-92.23515625,14.545410156249986],[-93.91606445312493,16.053564453125006],[-94.374169921875,16.284765625000034],[-94.426416015625,16.22626953125001],[-94.00126953124996,16.018945312499966],[-94.66152343750002,16.20190429687503],[-94.58710937499995,16.315820312499966],[-94.79082031249999,16.28715820312499],[-94.85869140624996,16.41972656249999],[-95.02084960937503,16.277636718750017],[-94.79941406249995,16.20966796875001],[-95.134375,16.17695312500001],[-96.21357421874993,15.693066406250011],[-96.80795898437495,15.726416015624977],[-97.18466796874998,15.909277343750006],[-97.75478515624994,15.966845703125017],[-98.52031249999993,16.30483398437505],[-98.76220703125,16.534765624999977],[-99.69067382812499,16.719628906249994],[-100.847802734375,17.20048828124999],[-101.91870117187494,17.959765625000045],[-102.69956054687495,18.062841796875006],[-103.44160156249995,18.32539062500001],[-103.91245117187496,18.828466796875006],[-104.9384765625,19.309375],[-105.482080078125,19.97607421875003],[-105.66943359374997,20.385595703124977],[-105.26015625,20.579052734374955],[-105.32705078124994,20.752978515625045],[-105.51083984374999,20.808740234375023],[-105.23706054687499,21.119189453125045],[-105.20869140624998,21.490820312499977],[-105.43144531249997,21.618261718750006],[-105.64912109375001,21.988085937500045],[-105.64550781249999,22.32690429687497],[-105.79179687500003,22.627490234375017],[-106.93549804687497,23.88125],[-107.76494140625002,24.47192382812497],[-107.52724609375001,24.36005859375001],[-107.51191406249998,24.489160156250023],[-107.95117187499994,24.614892578124966],[-108.28076171874994,25.08154296875],[-108.05146484374995,25.067041015624994],[-108.69638671874998,25.382910156250034],[-108.78725585937502,25.53803710937501],[-109.02880859375003,25.48046875000003],[-108.886572265625,25.733447265625045],[-109.19648437499998,25.59252929687503],[-109.38496093750001,25.727148437500006],[-109.42563476562495,26.032568359375063],[-109.19970703125003,26.30522460937499],[-109.11669921874999,26.25273437499996],[-109.27626953125,26.533886718749955],[-109.48286132812498,26.710351562500023],[-109.75478515624995,26.702929687500017],[-109.94399414062495,27.079345703125057],[-110.37729492187495,27.233300781249966],[-110.59267578124995,27.544335937500023],[-110.52988281249995,27.864208984374983],[-111.12138671875002,27.966992187499983],[-112.16176757812495,29.018896484375034],[-113.05766601562496,30.651025390625023],[-113.04672851562495,31.17924804687499],[-113.62348632812494,31.34589843750001],[-113.75942382812501,31.557763671874994],[-113.94775390625001,31.62934570312501],[-114.14931640624995,31.507373046875045],[-114.93359374999994,31.900732421874977],[-114.78989257812498,31.647119140624994],[-114.88188476562499,31.156396484375023],[-114.55048828124997,30.02226562499999],[-113.75546875,29.367480468750017],[-113.49970703124995,28.92670898437501],[-113.20556640624997,28.798779296874955],[-113.09365234375001,28.511767578125017],[-112.870849609375,28.42421875000005],[-112.73403320312501,27.825976562500017],[-112.32919921874996,27.52343750000003],[-111.86264648437495,26.678515625000017],[-111.6994140625,26.58095703125005],[-111.79526367187499,26.8796875],[-111.56967773437495,26.707617187500006],[-111.29160156249996,25.78979492187497],[-110.68676757812501,24.867675781250057],[-110.65932617187502,24.34145507812505],[-110.36743164062497,24.100488281249994],[-110.30375976562497,24.339453125],[-110.02280273437502,24.17460937499999],[-109.6765625,23.66157226562501],[-109.42084960937495,23.480126953124994],[-109.49570312500002,23.159814453125023],[-110.00625,22.894042968750057],[-110.3626953125,23.60493164062501],[-111.68291015625002,24.555810546875023],[-111.80249023437494,24.542529296875074],[-112.07255859374999,24.84003906250001],[-112.06987304687497,25.572851562500006],[-112.37724609374997,26.21391601562496],[-113.02075195312499,26.58325195312497],[-113.15581054687496,26.94624023437504],[-113.27226562499997,26.79096679687501],[-113.59853515625001,26.721289062500034],[-113.84096679687502,26.966503906249983],[-114.44526367187503,27.218164062499994],[-114.53989257812495,27.431103515624955],[-114.99350585937499,27.736035156249983],[-115.03647460937495,27.84184570312496],[-114.57001953124995,27.78393554687497],[-114.30058593749995,27.87299804687501],[-114.30224609375003,27.775732421875006],[-114.0693359375,27.67568359375005],[-114.15839843750003,27.919677734375],[-114.26586914062499,27.934472656249994],[-114.04848632812502,28.42617187499999],[-114.93730468749999,29.35161132812496],[-115.67382812500003,29.756396484375017],[-116.06215820312501,30.80415039062504],[-116.29628906250001,30.97050781249999],[-116.33344726562494,31.202783203124994],[-116.66215820312495,31.56489257812504],[-116.72207031249998,31.734570312499955],[-116.62080078124995,31.85107421874997],[-116.84799804687496,31.997363281250045],[-117.12827148437495,32.533349609374994],[-114.72475585937495,32.71533203125003],[-114.83593749999994,32.50830078125003],[-111.0419921875,31.32421875000003],[-108.21445312499993,31.329443359375034],[-108.21181640625002,31.779345703125017],[-106.44541015624996,31.768408203125006],[-106.14804687499995,31.450927734375],[-104.97880859374996,30.645947265624955],[-104.50400390624995,29.677685546874955],[-104.110595703125,29.386132812499994],[-103.16831054687498,28.998193359374994],[-102.8919921875,29.216406250000034],[-102.61494140624994,29.75234375],[-102.26894531249998,29.871191406250034],[-101.44038085937503,29.77685546875],[-100.75458984375001,29.182519531249994],[-100.29604492187495,28.32768554687499],[-99.50532226562497,27.54833984375003],[-99.45654296874999,27.05668945312496],[-99.10776367187498,26.446923828124994],[-97.37563476562497,25.871826171875],[-97.14624023437494,25.961474609375045]]]]},"properties":{"name":"Mexico","childNum":10}},{"geometry":{"type":"Polygon","coordinates":[[[22.344042968750017,42.31396484375],[22.836816406250023,41.993603515625],[23.00361328125001,41.73984375],[22.916015625,41.336279296875],[22.78388671875001,41.331982421875],[22.72480468750001,41.178515625],[22.603613281250006,41.140185546874996],[22.493554687500023,41.118505859375],[22.184472656250023,41.158642578125],[21.99335937500001,41.13095703125],[21.77949218750001,40.950439453125],[21.627539062500006,40.896337890625],[21.57578125,40.868945312499996],[20.964257812500023,40.849902343749996],[20.709277343750017,40.928369140624994],[20.48896484375001,41.272607421874994],[20.566210937500017,41.873681640624994],[20.725,41.87353515625],[20.778125,42.071044921875],[21.05976562500001,42.171289062499994],[21.28662109375,42.100390625],[21.389550781250023,42.21982421875],[21.560839843750017,42.24765625],[21.5625,42.247509765625],[21.81464843750001,42.303125],[22.344042968750017,42.31396484375]]]},"properties":{"name":"Macedonia","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[4.227636718750006,19.142773437499997],[4.234667968750017,16.996386718750003],[4.121289062500011,16.357714843750003],[3.842968750000011,15.701708984375003],[3.5205078125,15.483105468749997],[3.504296875000023,15.356347656249994],[3.06015625,15.427197265624997],[3.001074218750006,15.340966796874994],[1.300195312500023,15.272265625],[0.947460937500011,14.982128906249997],[0.217480468750011,14.911474609374991],[-0.235888671874989,15.059423828124991],[-0.760449218749983,15.047753906249994],[-1.049560546875,14.81953125],[-1.97304687499999,14.45654296875],[-2.113232421874983,14.16845703125],[-2.586718749999989,14.227587890625003],[-2.873925781249994,13.950732421875003],[-2.950830078124994,13.6484375],[-3.248632812499977,13.658349609374994],[-3.3017578125,13.28076171875],[-3.527636718749989,13.182714843749991],[-3.947314453124989,13.402197265624991],[-4.151025390624994,13.306201171875003],[-4.328710937499977,13.119042968749994],[-4.227099609374989,12.793701171875],[-4.480615234374994,12.672216796874991],[-4.4287109375,12.337597656249997],[-4.699316406249977,12.076171875],[-5.288134765624989,11.827929687499989],[-5.250244140625,11.375781249999989],[-5.490478515625,11.042382812499994],[-5.523535156249977,10.426025390625],[-5.556591796874983,10.43994140625],[-5.694287109374983,10.43320312499999],[-5.843847656249977,10.389550781249994],[-5.896191406249983,10.354736328125],[-5.907568359374977,10.307226562499991],[-6.034570312499994,10.19482421875],[-6.1171875,10.201904296875],[-6.238378906249977,10.261621093749994],[-6.241308593749977,10.279199218749994],[-6.192626953125,10.369433593749989],[-6.190673828125,10.400292968749994],[-6.250244140625,10.717919921874994],[-6.482617187499983,10.561230468749997],[-6.564599609374994,10.58642578125],[-6.654150390624977,10.656445312499997],[-6.676367187499977,10.6337890625],[-6.686132812499977,10.578027343749994],[-6.691992187499977,10.512011718749989],[-6.669335937499994,10.3921875],[-6.693261718749994,10.349462890624991],[-6.950341796874994,10.342333984374989],[-7.01708984375,10.143261718749997],[-7.385058593749989,10.340136718749989],[-7.6611328125,10.427441406249997],[-7.990625,10.1625],[-8.007275390624983,10.321875],[-8.266650390624989,10.485986328124994],[-8.33740234375,10.990625],[-8.666699218749983,11.009472656249997],[-8.398535156249977,11.366552734374991],[-8.822021484375,11.673242187499994],[-8.818310546874983,11.922509765624994],[-9.043066406249977,12.40234375],[-9.395361328124977,12.464648437499989],[-9.358105468749983,12.255419921874989],[-9.754003906249977,12.029931640624994],[-10.274853515624983,12.212646484375],[-10.709228515625,11.898730468749989],[-10.933203124999977,12.205175781249991],[-11.30517578125,12.015429687499989],[-11.502197265625,12.198632812499994],[-11.389404296875,12.404394531249991],[-11.390380859375,12.941992187499991],[-11.634960937499983,13.369873046875],[-11.831689453124994,13.315820312499994],[-12.05419921875,13.633056640625],[-11.960888671874983,13.875292968750003],[-12.019189453124994,14.206494140624997],[-12.228417968749994,14.45859375],[-12.280615234374977,14.809033203124997],[-12.104687499999983,14.745361328125],[-12.08154296875,14.766357421875],[-12.021582031249977,14.804931640625],[-11.76015625,15.425537109375],[-11.675878906249977,15.512060546874991],[-11.502685546875,15.636816406249991],[-11.455224609374994,15.62539062499999],[-10.9482421875,15.151123046875],[-10.696582031249989,15.42265625],[-9.94140625,15.373779296875],[-9.446923828124994,15.458203125],[-9.447705078124983,15.574853515624994],[-9.426562499999989,15.623046875],[-9.3505859375,15.677392578124994],[-9.33544921875,15.525683593750003],[-9.293701171875,15.502832031249994],[-5.5125,15.496289062499997],[-5.359912109374989,16.282861328124994],[-5.509619140624977,16.442041015624994],[-5.628662109375,16.568652343750003],[-5.65625,16.8095703125],[-5.684765624999983,17.058251953124994],[-5.713183593749989,17.306884765625],[-5.74169921875,17.555566406249994],[-5.827099609374983,18.3015625],[-6.026416015624989,20.0421875],[-6.396582031249977,23.274804687499994],[-6.482031249999977,24.020800781250003],[-6.538964843749994,24.51816406249999],[-6.5673828125,24.766796875],[-6.594091796874977,24.99462890625],[-6.287207031249977,24.994824218749997],[-5.959814453124977,24.99497070312499],[-5.640771484374994,24.995166015625003],[-4.822607421874977,24.99560546875],[-1.947900390624994,23.124804687500003],[1.1455078125,21.102246093749997],[1.165722656250011,20.817431640625003],[1.610644531250017,20.555566406249994],[1.685449218750023,20.378369140624997],[3.130273437500023,19.85019531249999],[3.255859375,19.4109375],[3.119726562500006,19.103173828124994],[3.3564453125,18.986621093750003],[4.227636718750006,19.142773437499997]]]},"properties":{"name":"Mali","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[14.566210937499989,35.85273437499998],[14.436425781250023,35.82167968750005],[14.351269531250011,35.978417968749994],[14.566210937499989,35.85273437499998]]]},"properties":{"name":"Malta","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[98.18261718749997,9.933447265625006],[98.11806640625,9.877880859375054],[98.2916992187501,10.051318359375031],[98.18261718749997,9.933447265625006]]],[[[98.20976562500002,10.952734375],[98.27148437499997,10.73989257812498],[98.08046875000005,10.886621093750037],[98.20976562500002,10.952734375]]],[[[98.55380859375012,11.744873046875],[98.52841796875012,11.538671875],[98.43476562500004,11.567089843750026],[98.37646484374997,11.79150390625],[98.55380859375012,11.744873046875]]],[[[98.516015625,11.905029296875028],[98.46621093750005,12.08427734374996],[98.60957031250004,11.956640624999977],[98.516015625,11.905029296875028]]],[[[98.06611328125004,12.389794921875023],[98.00234375000005,12.279003906250011],[97.93867187500004,12.34609375],[98.06611328125004,12.389794921875023]]],[[[98.41396484375005,12.597949218749974],[98.45947265625003,12.473730468749991],[98.3138671875,12.335986328124989],[98.31210937500006,12.678173828124983],[98.41396484375005,12.597949218749974]]],[[[98.31542968749997,13.099072265625026],[98.30917968750012,12.934716796875023],[98.26533203125004,13.202246093749991],[98.31542968749997,13.099072265625026]]],[[[94.80488281250004,15.8193359375],[94.73349609375006,15.823046875000045],[94.82802734375005,15.933007812499966],[94.80488281250004,15.8193359375]]],[[[94.47675781250004,15.945947265625023],[94.41191406250007,15.848388671875057],[94.3878906250001,15.994140624999972],[94.60126953125004,16.205517578124983],[94.47675781250004,15.945947265625023]]],[[[97.575,16.253222656250017],[97.48037109375,16.305712890625045],[97.54199218749997,16.505078124999983],[97.575,16.253222656250017]]],[[[93.6908203125,18.68427734375004],[93.4875,18.867529296875063],[93.74472656250006,18.865527343750017],[93.6908203125,18.68427734375004]]],[[[93.71484374999997,19.558251953124994],[93.94570312500005,19.428613281249966],[93.90195312500012,19.33203125],[93.75585937500003,19.325683593750057],[93.64404296874997,19.49506835937501],[93.71484374999997,19.558251953124994]]],[[[93.49179687500012,19.892578125],[93.51328125000006,19.754785156249994],[93.41289062500002,19.950341796875023],[93.49179687500012,19.892578125]]],[[[93.01015625000005,19.923925781249977],[93.02324218750007,19.82885742187497],[92.91464843750006,20.086474609375045],[93.01015625000005,19.923925781249977]]],[[[101.1388671875001,21.567480468749977],[101.08037109375007,21.468652343749994],[100.703125,21.251367187499966],[100.613671875,21.059326171875],[100.56660156250004,21.038183593750063],[100.53613281250003,20.992382812499955],[100.52226562500007,20.92192382812499],[100.54931640624997,20.884228515624955],[100.61767578125003,20.879248046875006],[100.62294921875005,20.859570312499983],[100.5651367187501,20.825097656249994],[100.4074218750001,20.823242187500057],[100.32607421875005,20.795703125000045],[100.24931640625002,20.730273437500045],[100.18388671875002,20.589111328125057],[100.12968750000002,20.372216796874994],[100.12246093750005,20.316650390625057],[100.0036132812501,20.37958984375001],[99.9542968750001,20.415429687500023],[99.8903320312501,20.424414062499977],[99.72011718750005,20.32543945312497],[99.45888671875005,20.363037109375],[99.48593750000006,20.14985351562501],[99.07421875000003,20.09936523437503],[98.9166992187501,19.77290039062504],[98.37128906250004,19.68916015625004],[98.01503906250005,19.74951171874997],[97.816796875,19.459960937500057],[97.74589843750002,18.58818359374999],[97.37392578125,18.51796875],[97.63222656250005,18.290332031250074],[97.7064453125,17.79711914062503],[98.4388671875,16.975683593750034],[98.66074218750006,16.330419921875006],[98.83544921875003,16.417578125],[98.88828125000006,16.351904296875034],[98.81796875000012,16.180810546874994],[98.59238281250006,16.05068359375005],[98.55693359375007,15.367675781249986],[98.19101562500012,15.204101562499972],[98.20214843749997,14.97592773437502],[98.57001953125004,14.359912109375031],[99.13681640625006,13.716699218749994],[99.12392578125,13.030761718750043],[99.40507812500002,12.547900390625003],[99.61474609374997,11.781201171875026],[99.1901367187501,11.105273437499989],[98.7572265625,10.660937499999974],[98.70253906250005,10.19038085937504],[98.56259765625006,10.034960937499989],[98.46494140625006,10.675830078124989],[98.67558593750007,10.986914062500034],[98.74140625000004,11.591699218749966],[98.87597656250003,11.719726562500028],[98.63632812500006,11.738378906250006],[98.69628906250003,12.225244140624994],[98.6002929687501,12.2453125],[98.67871093749997,12.348486328124963],[98.57597656250002,13.161914062500031],[98.20039062500004,13.980175781250026],[98.14951171875012,13.647607421875037],[98.11064453125007,13.712890625000014],[98.10019531250006,14.161523437500023],[97.90976562500012,14.652685546874991],[98.01875,14.652587890625057],[97.81230468750007,14.858935546874989],[97.7103515625,15.875537109375074],[97.58427734375007,16.019580078125017],[97.72597656250005,16.56855468750004],[97.37587890625005,16.52294921874997],[97.20019531249997,17.095410156249983],[96.85146484375005,17.401025390624994],[96.90859375000005,17.03095703125001],[96.76542968750002,16.710351562499966],[96.43115234374997,16.504931640625045],[96.18906250000012,16.768310546875057],[96.32431640625006,16.444433593750063],[95.76328125000006,16.169042968750006],[95.38955078125005,15.722753906250034],[95.30146484375004,15.756152343749989],[95.34677734375012,16.09760742187501],[95.17695312500004,15.825683593750028],[94.9425781250001,15.818261718750023],[94.89316406250006,16.182812499999955],[94.66152343750005,15.904394531250006],[94.70332031250004,16.511914062499955],[94.4416015625001,16.094384765624966],[94.22382812500004,16.016455078125006],[94.58896484375006,17.5693359375],[94.17070312500007,18.73242187499997],[94.24570312500006,18.741162109374983],[94.07001953125004,18.893408203125006],[94.04492187500003,19.287402343750074],[93.92919921874997,18.89965820312503],[93.70546875000005,19.026904296875017],[93.49306640625005,19.369482421875006],[93.82490234375004,19.238476562499955],[93.99814453125006,19.440869140624983],[93.61171875000005,19.776074218749983],[93.70703125000003,19.912158203125074],[93.25,20.070117187500017],[93.12949218750012,19.858007812500063],[93.00195312499997,20.074853515624994],[93.06679687500005,20.377636718749955],[92.82832031250004,20.177587890625063],[92.89111328124997,20.34033203125],[92.73564453125007,20.56269531250001],[92.72285156250004,20.29560546875004],[92.32412109375,20.791845703125063],[92.17958984375005,21.293115234375023],[92.33056640624997,21.439794921874977],[92.63164062500002,21.306201171875045],[92.5934570312501,21.46733398437499],[92.58281250000002,21.940332031249994],[92.57490234375004,21.978076171875045],[92.68896484374997,22.130957031250006],[92.72099609375002,22.132421875000063],[92.77138671875,22.104785156250017],[92.9645507812501,22.003759765625034],[93.07060546875002,22.20942382812501],[93.16201171875,22.360205078125006],[93.07871093750006,22.71821289062501],[93.20390625000002,23.03701171875005],[93.34941406250007,23.08496093750003],[93.36601562500007,23.132519531249955],[93.32626953125006,24.064208984375057],[93.45214843750003,23.987402343750034],[93.68339843750007,24.00654296875004],[94.07480468750006,23.8720703125],[94.29306640625012,24.321875],[94.37724609375002,24.473730468750006],[94.49316406250003,24.637646484374983],[94.70371093750012,25.097851562499955],[94.55302734375007,25.215722656249994],[94.66777343750007,25.458886718749966],[94.99199218750002,25.77045898437504],[95.01523437500006,25.912939453125006],[95.0929687500001,25.98730468749997],[95.13242187500006,26.041259765625057],[95.12929687500005,26.070410156250034],[95.10839843749997,26.091406250000034],[95.06894531250006,26.19111328125001],[95.0597656250001,26.473974609375006],[95.20146484375007,26.641406250000017],[96.19082031250005,27.26127929687499],[96.79785156249997,27.29619140624999],[96.95341796875002,27.13330078125003],[97.10205078125003,27.11542968750004],[97.10371093750004,27.16333007812503],[96.90195312500012,27.439599609374994],[96.88359375000002,27.514843749999955],[96.96279296875,27.698291015625017],[97.04970703125005,27.760009765625],[97.34355468750002,27.982324218749994],[97.30273437499997,28.08598632812496],[97.3224609375001,28.21796875000004],[97.35644531249997,28.254492187500006],[97.43144531250002,28.353906250000023],[97.53789062500002,28.510205078124983],[97.59921875000006,28.51704101562504],[98.06162109375012,28.185888671874977],[98.29882812499997,27.550097656250045],[98.4525390625,27.6572265625],[98.65117187500007,27.572460937499983],[98.7384765625001,26.785742187500006],[98.68554687499997,26.189355468750023],[98.56406250000006,26.072412109374994],[98.65625,25.86357421874999],[98.33378906250007,25.586767578125006],[98.14287109375007,25.571093750000017],[98.01074218749997,25.292529296875017],[97.8195312500001,25.251855468749994],[97.73789062500006,24.869873046875057],[97.58330078125002,24.77480468750005],[97.53144531250004,24.49169921875003],[97.7082031250001,24.228759765625],[97.56455078125012,23.911035156250023],[98.2125,24.110644531250017],[98.83505859375006,24.121191406250034],[98.67675781250003,23.905078125000045],[98.8322265625001,23.624365234374977],[98.86376953125003,23.191259765625034],[99.41806640625006,23.069238281250023],[99.50712890625002,22.959130859374994],[99.19296875000006,22.12597656249997],[99.9176757812501,22.02802734375001],[99.94072265625007,21.75874023437504],[100.14765625000004,21.480517578125017],[100.60458984375012,21.471777343750006],[101.07978515625004,21.75585937499997],[101.1388671875001,21.567480468749977]]]]},"properties":{"name":"Myanmar","childNum":15}},{"geometry":{"type":"Polygon","coordinates":[[[19.21875,43.449951171875],[19.670996093750006,43.163964843749994],[20.344335937500006,42.827929687499996],[20.054296875,42.760058593749996],[20.06396484375,42.54726562499999],[19.78828125000001,42.476171875],[19.65449218750001,42.628564453124994],[19.280664062500023,42.17255859375],[19.342382812500006,41.869091796875],[18.436328125000017,42.559716796874994],[18.5458984375,42.6416015625],[18.46601562500001,42.777246093749994],[18.44384765625,42.96845703125],[18.46015625000001,42.997900390625],[18.48847656250001,43.012158203125],[18.623632812500006,43.027685546875],[18.621875,43.124609375],[18.674218750000023,43.230810546875],[18.74921875000001,43.283544921875],[18.85107421875,43.346337890624994],[18.934667968750006,43.339453125],[18.97871093750001,43.285400390625],[19.026660156250017,43.292431640625],[19.03671875,43.357324218749994],[18.940234375000017,43.496728515624994],[18.95068359375,43.526660156249996],[18.97421875,43.542333984375],[19.0283203125,43.532519531249996],[19.080078125,43.517724609374994],[19.11279296875,43.52773437499999],[19.164355468750017,43.535449218749996],[19.1943359375,43.53330078125],[19.21875,43.449951171875]]]},"properties":{"name":"Montenegro","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[111.878125,43.68017578125],[111.00722656250002,43.34140625],[110.400390625,42.773681640625],[109.44316406249999,42.455957031249994],[109.33984375,42.438378906249994],[108.68730468749999,42.41611328125],[108.17119140624999,42.447314453124996],[106.77001953125,42.288720703124994],[105.86757812500002,41.993994140625],[105.31435546875002,41.770898437499994],[105.19707031249999,41.738037109375],[105.11542968750001,41.66328125],[105.05058593749999,41.61591796875],[104.98203125000003,41.595507812499996],[104.49824218750001,41.65869140625],[104.49824218750001,41.877001953124996],[104.30517578125,41.846142578125],[103.99726562500001,41.79697265625],[103.71113281250001,41.751318359375],[103.07285156250003,42.00595703125],[102.5751953125,42.092089843749996],[102.15664062500002,42.158105468749994],[101.97294921874999,42.215869140624996],[101.65996093749999,42.500048828124996],[101.5791015625,42.52353515625],[101.49531250000001,42.53876953125],[101.09199218750001,42.551318359374996],[100.51904296875,42.616796875],[100.08632812500002,42.670751953125],[99.98378906250002,42.67734375],[99.46787109375003,42.568212890625],[97.20566406250003,42.789794921875],[96.38544921875001,42.720361328124994],[95.85957031250001,43.2759765625],[95.52558593750001,43.953955078125],[95.32558593750002,44.039355468749996],[95.35029296875001,44.278076171875],[94.71201171875003,44.350830078125],[93.51621093750003,44.944482421874994],[92.78789062499999,45.0357421875],[92.57890624999999,45.010986328125],[92.423828125,45.008935546874994],[92.17265624999999,45.03525390625],[92.02978515625,45.068505859374994],[91.584375,45.076513671875],[91.05,45.217431640624994],[90.87724609374999,45.19609375],[90.66181640625001,45.525244140625],[91.00175781249999,46.035791015624994],[90.99677734375001,46.10498046875],[90.94755859374999,46.177294921874996],[90.91152343750002,46.270654296874994],[90.98574218750002,46.7490234375],[90.91054687500002,46.883251953125],[90.86992187499999,46.954492187499994],[90.79902343750001,46.98515625],[90.71552734375001,47.003857421875],[90.49619140625003,47.28515625],[90.42519531250002,47.5041015625],[90.34746093749999,47.596972656249996],[90.33066406250003,47.655175781249994],[90.31328124999999,47.67617187499999],[90.19101562500003,47.702099609375],[90.10322265625001,47.745410156249996],[90.02792968750003,47.877685546875],[89.95869140625001,47.886328125],[89.91044921874999,47.8443359375],[89.83134765624999,47.823291015624996],[89.778125,47.827001953125],[89.56093750000002,48.003955078124996],[89.47919921875001,48.029052734375],[89.04765624999999,48.0025390625],[88.97109375000002,48.049951171874994],[88.91777343749999,48.089013671874994],[88.83828125000002,48.101708984374994],[88.68183593750001,48.170556640624994],[88.57597656249999,48.220166015625],[88.56679687500002,48.317431640624996],[88.51708984375,48.38447265625],[88.41396484375002,48.40341796875],[88.30996093750002,48.472070312499994],[87.97968750000001,48.555126953125],[88.06005859375,48.707177734374994],[87.83183593749999,48.791650390624994],[87.7431640625,48.881640625],[87.87216796875003,49.000146484374994],[87.81630859375002,49.0802734375],[87.8251953125,49.11630859375],[87.81425781249999,49.1623046875],[87.93476562500001,49.16455078125],[87.98808593749999,49.186914062499994],[88.02851562500001,49.219775390624996],[88.11572265625,49.256298828125],[88.19257812500001,49.451708984374996],[88.63320312500002,49.486132812499996],[88.83164062500003,49.4484375],[88.86386718750003,49.527636718749996],[88.90019531249999,49.539697265624994],[88.94541015625003,49.507666015625],[88.97060546875002,49.483740234375],[89.00839843750003,49.472802734374994],[89.10947265625003,49.501367187499994],[89.17998046874999,49.5322265625],[89.20292968749999,49.595703125],[89.24394531249999,49.62705078125],[89.39560546875003,49.6115234375],[89.475,49.66054687499999],[89.57919921875003,49.69970703125],[89.65410156249999,49.71748046875],[89.64384765624999,49.90302734375],[90.0537109375,50.09375],[90.65507812499999,50.22236328125],[90.71435546875,50.259423828124994],[90.7607421875,50.305957031249996],[91.02158203125003,50.415478515625],[91.23378906250002,50.452392578125],[91.30058593749999,50.46337890625],[91.3408203125,50.470068359375],[91.4150390625,50.468017578125],[91.44648437500001,50.52216796875],[91.80429687500003,50.693603515625],[92.10400390625,50.6919921875],[92.1923828125,50.700585937499994],[92.35478515624999,50.864160156249994],[92.42636718750003,50.803076171875],[92.62666015625001,50.68828125],[92.68134765625001,50.683203125],[92.73867187500002,50.7109375],[92.779296875,50.778662109375],[92.8564453125,50.789111328124996],[92.94130859375002,50.778222656249994],[93.103125,50.60390625],[94.25107421875003,50.556396484375],[94.35468750000001,50.221826171874994],[94.61474609375,50.023730468749996],[94.67548828125001,50.028076171875],[94.71806640624999,50.043261718749996],[94.93027343750003,50.04375],[95.11142578125003,49.935449218749994],[95.52265625000001,49.91123046875],[96.06552734375003,49.99873046875],[96.31503906250003,49.901123046875],[96.98574218750002,49.8828125],[97.20859375000003,49.730810546875],[97.35976562500002,49.741455078125],[97.58935546875,49.911474609375],[98.00390625,50.0142578125],[98.25029296874999,50.30244140625],[98.27949218750001,50.533251953124996],[98.14501953125,50.5685546875],[98.07890624999999,50.603808593749996],[98.02978515625,50.64462890625],[97.82529296875003,50.985253906249994],[98.103125,51.483544921874994],[98.64052734375002,51.801171875],[98.89316406250003,52.11728515625],[99.92167968749999,51.755517578125],[100.03457031250002,51.737109375],[100.23037109375002,51.729833984375],[100.46894531250001,51.72607421875],[100.53623046875003,51.7134765625],[101.38125,51.45263671875],[101.57089843750003,51.4671875],[101.82119140625002,51.421044921874994],[102.11152343750001,51.353466796875],[102.15566406250002,51.313769531249996],[102.16005859375002,51.26083984375],[102.14238281249999,51.216064453125],[102.15195312500003,51.10751953125],[102.19453125000001,51.050683593749994],[102.21503906250001,50.829443359375],[102.31660156250001,50.71845703125],[102.28837890624999,50.585107421874994],[103.30439453125001,50.20029296875],[103.63291015625003,50.138574218749994],[103.72324218750003,50.153857421874996],[103.80263671875002,50.176074218749996],[104.07871093750003,50.154248046875],[105.38359374999999,50.47373046875],[106.21787109375003,50.304589843749994],[106.36845703124999,50.317578125],[106.57441406250001,50.32880859375],[106.71113281250001,50.31259765625],[106.94130859375002,50.196679687499994],[107.04023437500001,50.086474609374996],[107.14306640625,50.033007812499996],[107.23330078125002,49.989404296874994],[107.34707031250002,49.986669921875],[107.63095703125003,49.98310546875],[107.91660156250003,49.947802734374996],[107.96542968750003,49.653515625],[108.40693359375001,49.396386718749994],[108.5224609375,49.34150390625],[108.61367187500002,49.322802734374996],[109.23671875000002,49.334912109375],[109.45371093750003,49.296337890625],[109.52871093750002,49.269873046875],[110.19990234375001,49.17041015625],[110.42783203125003,49.219970703125],[110.70976562499999,49.14296875],[110.82792968749999,49.166162109374994],[111.20419921875003,49.304296875],[111.33662109375001,49.35585937499999],[111.42929687500003,49.342626953125],[112.07968750000003,49.42421875],[112.49492187499999,49.53232421875],[112.69736328125003,49.507275390625],[112.80644531249999,49.523583984374994],[112.91484374999999,49.569238281249994],[113.05556640625002,49.616259765624996],[113.09208984374999,49.692529296874994],[113.16416015625003,49.797167968749996],[113.31904296875001,49.874316406249996],[113.44550781250001,49.9416015625],[113.57421875,50.00703125],[114.29707031250001,50.2744140625],[114.7431640625,50.233691406249996],[115.00332031250002,50.138574218749994],[115.27451171875003,49.948876953124994],[115.36503906249999,49.911767578124994],[115.42919921875,49.896484375],[115.58798828125003,49.886035156249996],[115.7177734375,49.880615234375],[115.79521484374999,49.905908203124994],[115.92597656250001,49.9521484375],[116.13457031249999,50.010791015624996],[116.216796875,50.00927734375],[116.35117187500003,49.978076171874996],[116.55117187500002,49.9203125],[116.68330078125001,49.823779296874996],[115.82050781250001,48.57724609375],[115.79169921875001,48.455712890624994],[115.79658203125001,48.346337890624994],[115.78554687500002,48.2482421875],[115.63945312499999,48.18623046875],[115.52509765625001,48.130859375],[115.61640625000001,47.874804687499996],[115.89824218749999,47.686914062499994],[115.99384765625001,47.71132812499999],[116.07480468750003,47.78955078125],[116.23115234375001,47.858203125],[116.31718749999999,47.85986328125],[116.37822265624999,47.844042968749996],[116.51347656249999,47.83955078125],[116.65195312500003,47.864501953125],[116.76054687499999,47.869775390624994],[116.90117187499999,47.853076171874996],[116.95166015625,47.836572265624994],[117.06972656250002,47.806396484375],[117.28593749999999,47.666357421875],[117.35078125000001,47.652197265625],[117.76835937499999,47.987890625],[118.49843750000002,47.983984375],[118.56777343750002,47.943261718749994],[118.69052734375003,47.822265625],[118.75996093750001,47.757617187499996],[118.88027343750002,47.72509765625],[119.017578125,47.685351562499996],[119.08193359375002,47.654150390625],[119.71113281250001,47.15],[119.89785156250002,46.8578125],[119.8671875,46.672167968749996],[119.74746093750002,46.627197265625],[119.70664062500003,46.606005859374996],[119.62021484375003,46.603955078125],[119.47402343750002,46.62666015625],[119.33183593749999,46.613818359374996],[119.162109375,46.638671875],[118.95712890625003,46.73486328125],[118.84394531250001,46.760205078125],[118.79033203124999,46.7470703125],[118.72294921874999,46.69189453125],[118.64873046874999,46.70166015625],[118.58046875000002,46.69189453125],[118.40439453125003,46.703173828124996],[118.30869140625003,46.717041015625],[118.15683593750003,46.678564453125],[118.0712890625,46.6666015625],[117.7412109375,46.5181640625],[117.546875,46.58828125],[117.43808593750003,46.586230468749996],[117.40556640624999,46.5708984375],[117.39218750000003,46.53759765625],[117.35634765625002,46.436669921874994],[117.35693359375,46.39130859375],[117.33339843750002,46.36201171875],[116.85908203125001,46.387939453125],[116.56259765625003,46.289794921875],[116.21298828125003,45.8869140625],[116.22910156250003,45.845751953124996],[116.240625,45.79599609375],[116.19765625000002,45.73935546875],[115.68105468750002,45.458251953125],[115.16259765625,45.390234375],[114.91923828124999,45.378271484375],[114.73876953125,45.41962890625],[114.56015625000003,45.389990234375],[114.41914062500001,45.202587890625],[114.16738281250002,45.049853515624996],[114.08027343750001,44.971142578125],[113.87705078125003,44.89619140625],[113.65263671874999,44.763476562499996],[113.58701171875003,44.745703125],[113.04941406250003,44.810351562499996],[112.70673828125001,44.883447265624994],[112.59677734375003,44.91767578125],[112.49931640624999,45.0109375],[112.41132812500001,45.058203125],[112.11289062500003,45.062939453125],[112.03261718750002,45.081640625],[111.89804687500003,45.0640625],[111.40224609375002,44.36728515625],[111.93173828125003,43.81494140625],[111.878125,43.68017578125]]]},"properties":{"name":"Mongolia","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[145.75195312499997,15.133154296874991],[145.71318359375007,15.215283203125026],[145.821875,15.265380859375014],[145.75195312499997,15.133154296874991]]]},"properties":{"name":"N. Mariana Is.","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[32.112890625,-26.839453125],[32.10595703125,-26.52001953125],[32.04140625000002,-26.28125],[32.060546875,-26.018359375],[31.9482421875,-25.957617187500006],[31.98583984375,-24.46064453125001],[31.799609375000017,-23.8921875],[31.54560546875001,-23.48232421875001],[31.287890625000017,-22.40205078125001],[31.429492187500017,-22.298828125],[32.429785156250006,-21.29707031250001],[32.353613281250006,-21.136523437500003],[32.49238281250001,-20.659765625],[32.992773437500006,-19.98486328125],[32.77763671875002,-19.388769531250006],[32.84980468750001,-19.10439453125001],[32.69970703125,-18.94091796875],[32.99306640625002,-18.35957031250001],[32.87626953125002,-16.88359375],[32.94804687500002,-16.71230468750001],[31.939843750000023,-16.428808593750006],[31.236230468750023,-16.02363281250001],[30.437792968750017,-15.995312500000011],[30.39609375,-15.64306640625],[30.231835937500023,-14.990332031250006],[33.201757812500006,-14.013378906250011],[33.63642578125001,-14.568164062500003],[34.375,-14.4248046875],[34.50527343750002,-14.59814453125],[34.54082031250002,-15.297265625],[34.24609375,-15.829394531250003],[34.528125,-16.319140625],[34.93339843750002,-16.760351562500006],[35.11210937500002,-16.898535156250006],[35.06464843750001,-17.07861328125],[35.124609375,-17.127246093750003],[35.20136718750001,-17.13105468750001],[35.272558593750006,-17.118457031250003],[35.29042968750002,-17.096972656250003],[35.28115234375002,-16.80781250000001],[35.22978515625002,-16.639257812500006],[35.178320312500006,-16.573339843750006],[35.16718750000001,-16.56025390625001],[35.242773437500006,-16.375390625],[35.358496093750006,-16.160546875],[35.59931640625001,-16.12587890625001],[35.70888671875002,-16.095800781250006],[35.75527343750002,-16.05830078125001],[35.79121093750001,-15.958691406250011],[35.89277343750001,-14.891796875000011],[35.86669921875,-14.86376953125],[35.84716796875,-14.6708984375],[35.6904296875,-14.465527343750011],[35.48847656250001,-14.201074218750009],[35.37578125000002,-14.058691406250006],[35.24746093750002,-13.896875],[35.01386718750001,-13.643457031250009],[34.61152343750001,-13.437890625],[34.54570312500002,-13.21630859375],[34.542578125,-13.108691406250003],[34.35781250000002,-12.164746093750011],[34.60625,-11.690039062500006],[34.65957031250002,-11.588671875],[34.82656250000002,-11.57568359375],[34.95947265625,-11.578125],[35.1826171875,-11.574804687500006],[35.41826171875002,-11.583203125000011],[35.50439453125,-11.604785156250003],[35.56435546875002,-11.60234375],[35.630957031250006,-11.58203125],[35.78544921875002,-11.452929687500003],[35.91132812500001,-11.4546875],[36.08222656250001,-11.537304687500011],[36.17548828125001,-11.609277343750009],[36.19130859375002,-11.670703125],[36.3056640625,-11.706347656250003],[36.97890625000002,-11.566992187500006],[37.37285156250002,-11.71044921875],[37.54169921875001,-11.675097656250003],[37.72480468750001,-11.580664062500006],[37.92021484375002,-11.294726562500003],[38.491796875,-11.413281250000011],[38.9875,-11.167285156250003],[39.81708984375001,-10.912402343750003],[39.98867187500002,-10.82080078125],[40.46357421875001,-10.46435546875],[40.61171875000002,-10.661523437500009],[40.48662109375002,-10.76513671875],[40.59716796875,-10.830664062500006],[40.40283203125,-11.33203125],[40.53154296875002,-12.004589843750011],[40.48710937500002,-12.4921875],[40.58085937500002,-12.635546875],[40.43681640625002,-12.983105468750011],[40.56875,-12.984667968750003],[40.595703125,-14.122851562500003],[40.715625,-14.214453125],[40.64609375,-14.538671875],[40.775,-14.421289062500009],[40.84453125000002,-14.718652343750009],[40.617773437500006,-15.115527343750003],[40.650976562500006,-15.260937500000011],[39.98359375000001,-16.22548828125001],[39.79091796875002,-16.29453125],[39.84462890625002,-16.435644531250006],[39.084375,-16.97285156250001],[38.14492187500002,-17.242773437500006],[37.24453125000002,-17.73994140625001],[36.93935546875002,-17.993457031250003],[36.40371093750002,-18.76972656250001],[36.26289062500001,-18.71962890625001],[36.23564453125002,-18.861328125],[35.85371093750001,-18.99335937500001],[34.947851562500006,-19.81269531250001],[34.6494140625,-19.70136718750001],[34.75576171875002,-19.82197265625001],[34.705078125,-20.473046875],[34.98232421875002,-20.80625],[35.267675781250006,-21.650976562500006],[35.31572265625002,-22.396875],[35.38300781250001,-22.45458984375],[35.45634765625002,-22.11591796875001],[35.53007812500002,-22.248144531250006],[35.57539062500001,-22.96308593750001],[35.37041015625002,-23.79824218750001],[35.5419921875,-23.82441406250001],[35.48964843750002,-24.065527343750006],[34.99208984375002,-24.65058593750001],[32.96113281250001,-25.49042968750001],[32.590429687500006,-26.00410156250001],[32.84882812500001,-26.26806640625],[32.95488281250002,-26.08359375],[32.93359375,-26.25234375],[32.88916015625,-26.83046875],[32.88613281250002,-26.84931640625001],[32.353515625,-26.861621093750003],[32.19960937500002,-26.83349609375],[32.112890625,-26.839453125]]]},"properties":{"name":"Mozambique","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-16.37333984374999,19.706445312499994],[-16.437548828124932,19.609277343749994],[-16.477001953124983,19.710351562499994],[-16.343652343749994,19.86621093750003],[-16.37333984374999,19.706445312499994]]],[[[-5.359912109374989,16.282861328124994],[-5.5125,15.496289062499983],[-9.293701171875,15.502832031249994],[-9.350585937499943,15.677392578125023],[-9.38535156249992,15.667626953124994],[-9.4265625,15.623046875000057],[-9.447705078124926,15.574853515624994],[-9.446923828124937,15.458203124999955],[-9.941406249999972,15.373779296874986],[-10.696582031249989,15.42265625],[-10.9482421875,15.151123046875014],[-11.455224609374994,15.62539062499999],[-11.760156249999937,15.425537109375057],[-11.828759765624966,15.244873046875014],[-11.872851562499989,14.995166015625031],[-12.02158203124992,14.804931640625],[-12.081542968749972,14.766357421875057],[-12.104687499999955,14.745361328125043],[-12.40869140625,14.889013671874991],[-12.735253906249994,15.13125],[-13.105273437499989,15.57177734375],[-13.40966796875,16.059179687500006],[-13.756640624999989,16.172509765624994],[-13.868457031249932,16.14814453125001],[-14.300097656249932,16.58027343750001],[-14.990625,16.676904296874994],[-15.768212890624994,16.485107421875],[-16.23901367187497,16.53129882812499],[-16.44101562499992,16.20454101562504],[-16.480078124999977,16.097216796875017],[-16.50205078124992,15.917333984375063],[-16.53525390624995,15.838378906250057],[-16.53574218749995,16.28681640625001],[-16.463623046875,16.60151367187501],[-16.030322265625017,17.88793945312497],[-16.213085937499926,19.003320312500023],[-16.51445312499996,19.361962890624994],[-16.305273437499977,19.51264648437504],[-16.44487304687499,19.47314453124997],[-16.21044921875003,20.227929687500023],[-16.42978515624995,20.652343750000057],[-16.622509765624955,20.634179687499994],[-16.87607421874992,21.086132812499955],[-16.998242187499926,21.039697265625023],[-17.048046874999955,20.80615234375003],[-17.06396484375,20.89882812499999],[-16.96455078125001,21.329248046875023],[-15.231201171875,21.331298828125],[-14.084667968749926,21.33271484375001],[-13.626025390624932,21.33325195312503],[-13.396728515624943,21.333544921875017],[-13.167431640624926,21.333789062500074],[-13.016210937499949,21.33393554687501],[-13.025097656249983,21.46679687499997],[-13.032226562500028,21.572070312500017],[-13.041748046875,21.71381835937504],[-13.051220703124983,21.854785156250074],[-13.094335937499977,22.49599609375005],[-13.153271484374983,22.820507812499983],[-13.031494140624943,23.000244140625],[-12.895996093749972,23.08955078125001],[-12.739599609375006,23.192724609375063],[-12.62041015624996,23.271337890625006],[-12.559375,23.290820312500045],[-12.372900390624977,23.318017578124994],[-12.023437499999943,23.467578125000017],[-12.016308593749983,23.97021484375],[-12.016308593749983,24.378662109375],[-12.016308593749983,24.923242187499994],[-12.016308593749983,25.059375],[-12.016308593749983,25.331689453124994],[-12.016308593749983,25.740136718749994],[-12.016308593749983,25.995410156250017],[-10.376123046874966,25.995458984375034],[-9.444531249999983,25.99550781250005],[-9.071923828124937,25.99550781250005],[-8.885644531249994,25.99550781250005],[-8.682226562499949,25.99550781250005],[-8.68212890625,26.109472656250006],[-8.68212890625,26.273193359375057],[-8.682324218749955,26.49770507812505],[-8.682617187500028,26.723144531250057],[-8.682861328124972,26.92133789062501],[-8.683349609375,27.285937500000045],[-4.822607421874949,24.99560546875],[-5.640771484374994,24.99516601562499],[-5.959814453124977,24.994970703125063],[-6.287207031249977,24.99482421875001],[-6.594091796874977,24.99462890624997],[-6.396582031249977,23.274804687499994],[-6.02641601562496,20.04218750000001],[-5.827099609374955,18.301562500000045],[-5.741699218749943,17.555566406250023],[-5.713183593750017,17.306884765625],[-5.684765624999983,17.058251953124966],[-5.628662109375028,16.568652343750045],[-5.50961914062492,16.442041015625023],[-5.359912109374989,16.282861328124994]]]]},"properties":{"name":"Mauritania","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[-62.1484375,16.74033203124999],[-62.221630859375,16.699511718750003],[-62.191357421875,16.804394531249997],[-62.1484375,16.74033203124999]]]},"properties":{"name":"Montserrat","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[57.65126953125002,-20.48486328125],[57.31767578125002,-20.42763671875001],[57.416015625,-20.18378906250001],[57.65654296875002,-19.98994140625001],[57.7919921875,-20.21259765625001],[57.65126953125002,-20.48486328125]]]},"properties":{"name":"Mauritius","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[34.95947265625003,-11.578125],[34.82656250000005,-11.575683593749972],[34.65957031250005,-11.58867187499996],[34.61855468750005,-11.620214843749991],[34.60625,-11.690039062500006],[34.3578125,-12.164746093749997],[34.542578125,-13.108691406250003],[34.54570312500002,-13.21630859375],[34.6115234375001,-13.437890625000023],[35.0138671875001,-13.64345703124998],[35.247460937499994,-13.896875],[35.37578125000002,-14.05869140625002],[35.48847656250004,-14.20107421874998],[35.69042968749997,-14.465527343750026],[35.84716796875003,-14.670898437500043],[35.8927734375001,-14.891796875000011],[35.7912109375001,-15.958691406250026],[35.75527343750005,-16.058300781249983],[35.708886718749994,-16.095800781249977],[35.5993164062501,-16.12587890624998],[35.35849609375006,-16.160546875000023],[35.242773437500006,-16.375390625],[35.16718750000004,-16.56025390625001],[35.178320312500006,-16.57333984375002],[35.22978515625002,-16.639257812500034],[35.281152343749994,-16.8078125],[35.29042968750005,-17.096972656250017],[35.27255859375006,-17.11845703124996],[35.2013671875001,-17.13105468750004],[35.124609375,-17.127246093749974],[35.06464843750004,-17.078613281250014],[35.11210937500002,-16.898535156250006],[34.93339843750002,-16.760351562500006],[34.528125,-16.319140625],[34.24609374999997,-15.829394531249974],[34.54082031250002,-15.297265625],[34.50527343750005,-14.598144531249957],[34.375,-14.4248046875],[33.63642578125004,-14.568164062499974],[33.148046875,-13.94091796875],[32.98125,-14.009375],[32.797460937500006,-13.6884765625],[32.67041015624997,-13.590429687500006],[32.96757812500002,-13.225],[32.97519531250006,-12.701367187499983],[33.51230468750006,-12.347753906249977],[33.340136718750074,-12.308300781250011],[33.25234375000005,-12.112597656250031],[33.3039062500001,-11.69082031249998],[33.23271484375002,-11.417675781250026],[33.26835937500002,-11.403906249999977],[33.379785156249994,-11.15791015625004],[33.29277343750002,-10.85234375],[33.661523437499994,-10.553125],[33.55371093749997,-10.391308593750011],[33.53759765624997,-10.351562499999986],[33.52890625,-10.234667968749974],[33.31152343750003,-10.037988281249966],[33.3371093750001,-9.954003906249994],[33.350976562499994,-9.862207031250037],[33.25,-9.759570312500003],[33.148046875,-9.603515625],[32.99599609375005,-9.622851562499946],[32.91992187500003,-9.407421875000026],[33.88886718750004,-9.670117187499983],[33.99560546875003,-9.495410156250003],[34.32089843750006,-9.731542968749977],[34.56992187500006,-10.241113281249966],[34.66708984375006,-10.792480468750028],[34.60791015624997,-11.08046875],[34.77382812500005,-11.341699218750009],[34.890625,-11.3935546875],[34.93701171874997,-11.463476562500034],[34.95947265625003,-11.578125]]]},"properties":{"name":"Malawi","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[111.38925781250006,2.415332031250031],[111.31152343749997,2.437597656250034],[111.33349609374997,2.768310546875],[111.38925781250006,2.415332031250031]]],[[[104.22158203125,2.731738281250003],[104.1291015625001,2.767236328125037],[104.18476562500004,2.871728515625009],[104.22158203125,2.731738281250003]]],[[[117.88476562499997,4.186132812500006],[117.64902343750012,4.168994140624974],[117.70800781249997,4.262402343749997],[117.88476562499997,4.186132812500006]]],[[[100.28896484375005,5.294726562499989],[100.19101562500006,5.28286132812498],[100.2455078125,5.467773437499986],[100.33886718749997,5.410058593750037],[100.28896484375005,5.294726562499989]]],[[[99.848046875,6.465722656249994],[99.9186523437501,6.358593750000011],[99.74375,6.263281249999963],[99.64628906250002,6.418359375000023],[99.848046875,6.465722656249994]]],[[[102.10107421874997,6.242236328125031],[102.34013671875002,6.172021484375023],[102.534375,5.862548828125028],[103.09707031250005,5.408447265624986],[103.41582031250007,4.85029296875004],[103.43945312499997,2.93310546875],[103.8122070312501,2.58046875],[104.21855468750002,1.722851562499997],[104.25009765625012,1.388574218750009],[104.11494140625004,1.412255859375037],[103.98144531250003,1.623632812500034],[103.99150390625002,1.454785156249997],[103.6945312500001,1.449658203125026],[103.48027343750007,1.329492187499966],[103.35683593750005,1.546142578125057],[102.72714843750012,1.855566406250034],[101.29550781250012,2.885205078125011],[101.29990234375012,3.253271484375034],[100.71542968750006,3.966210937499966],[100.79550781250012,4.023388671874983],[100.61455078125002,4.3734375],[100.34326171874997,5.984179687500031],[100.11914062499997,6.441992187500048],[100.26142578125004,6.682714843749963],[100.3454101562501,6.549902343750006],[100.75449218750012,6.460058593749991],[100.87392578125,6.24541015624996],[101.05351562500002,6.242578125],[100.98164062500004,5.771044921875045],[101.1139648437501,5.636767578125045],[101.5560546875,5.907763671875003],[101.67841796875004,5.778808593750028],[101.87363281250012,5.825292968749991],[102.10107421874997,6.242236328125031]]],[[[117.5744140625001,4.17060546875004],[117.10058593750003,4.337060546875023],[116.51474609375006,4.370800781249969],[115.86074218750005,4.348046875000037],[115.67880859375006,4.193017578124994],[115.45439453125002,3.034326171875009],[115.24697265625005,3.025927734374989],[115.117578125,2.89487304687502],[115.08076171875004,2.63422851562504],[115.1791015625,2.523193359374972],[114.78642578125002,2.250488281250014],[114.83056640625003,1.980029296874989],[114.5125,1.452001953124963],[113.90234375000003,1.434277343749997],[113.6222656250001,1.2359375],[113.00654296875004,1.433886718750003],[112.94296875000006,1.566992187500034],[112.47617187500006,1.559082031250028],[112.1857421875001,1.4390625],[112.078515625,1.143359374999974],[111.80898437500005,1.011669921874969],[111.10136718750002,1.050537109374986],[110.50576171875005,0.861962890625023],[109.65400390625004,1.614892578125023],[109.53896484375,1.89619140625004],[109.62890625000003,2.027539062499983],[109.86484375000012,1.764453125000031],[110.34921875000012,1.719726562499972],[111.22324218750012,1.395849609374991],[111.0287109375,1.557812500000026],[111.26816406250012,2.13974609375002],[111.20859375000012,2.379638671875043],[111.44384765625003,2.381542968749983],[111.5125,2.743017578124991],[112.98789062500006,3.161914062499974],[113.92392578125006,4.243212890625003],[114.0638671875,4.592675781249966],[114.65410156250007,4.037646484375045],[114.84023437500005,4.393212890625009],[114.74667968750006,4.718066406250017],[115.02675781250005,4.899707031249989],[115.10703125000006,4.390429687499974],[115.290625,4.352587890624989],[115.1400390625,4.899755859374991],[115.37490234375,4.932763671874966],[115.55449218750007,5.093554687500045],[115.41904296875012,5.413183593749963],[115.60390625,5.603417968749994],[115.74082031250012,5.533007812500045],[115.8771484375001,5.613525390625014],[116.74980468750007,6.977099609374989],[116.8498046875001,6.826708984374989],[116.78808593749997,6.606103515624994],[117.12851562500012,6.968896484375009],[117.2298828125,6.939990234374974],[117.29404296875006,6.676904296875023],[117.60966796875002,6.512646484375054],[117.69375,6.35],[117.64453124999997,6.001855468749994],[117.5011718750001,5.884667968750009],[118.00380859375,6.053320312499991],[118.11582031250006,5.8625],[117.93476562500004,5.7875],[117.97363281249997,5.70625],[118.35312500000012,5.80605468749998],[118.59482421875006,5.592089843750003],[119.22343750000007,5.412646484375031],[119.2663085937501,5.308105468750057],[119.21962890625,5.159814453125037],[118.9125,5.02290039062504],[118.26054687500007,4.988867187500034],[118.18535156250002,4.828515625000051],[118.5625,4.502148437499997],[118.54833984375003,4.379248046875006],[118.008203125,4.250244140625014],[117.6964843750001,4.342822265625045],[117.5744140625001,4.17060546875004]]],[[[117.14160156250003,7.168212890625028],[117.08066406250006,7.115283203124989],[117.06425781250007,7.26069335937504],[117.2640625,7.351660156250006],[117.26679687500004,7.220800781249991],[117.14160156250003,7.168212890625028]]]]},"properties":{"name":"Malaysia","childNum":8}},{"geometry":{"type":"Polygon","coordinates":[[[23.380664062500017,-17.640625],[24.27490234375,-17.481054687500006],[24.73291015625,-17.51777343750001],[25.001757812500017,-17.56855468750001],[25.2587890625,-17.793554687500006],[24.909082031250023,-17.821386718750006],[24.530566406250017,-18.052734375],[24.243945312500017,-18.0234375],[23.599707031250006,-18.4599609375],[23.219335937500006,-17.99970703125001],[20.97412109375,-18.31884765625],[20.9794921875,-21.9619140625],[19.977343750000017,-22.00019531250001],[19.98046875,-24.77675781250001],[19.98046875,-28.310351562500003],[19.98046875,-28.451269531250006],[19.539843750000017,-28.574609375],[19.31269531250001,-28.73330078125001],[19.24580078125001,-28.901660156250003],[19.16171875,-28.938769531250003],[18.310839843750017,-28.88623046875],[17.44794921875001,-28.69814453125001],[17.34785156250001,-28.50117187500001],[17.358691406250017,-28.26943359375001],[17.1884765625,-28.13251953125001],[17.05625,-28.031054687500003],[16.93330078125001,-28.069628906250003],[16.875292968750017,-28.1279296875],[16.841210937500023,-28.21894531250001],[16.81015625,-28.26455078125001],[16.7875,-28.39472656250001],[16.755761718750023,-28.4521484375],[16.62617187500001,-28.487890625],[16.487109375000017,-28.572851562500006],[16.447558593750017,-28.617578125],[15.719042968750017,-27.9658203125],[15.341503906250011,-27.386523437500003],[15.139062500000023,-26.50800781250001],[14.9677734375,-26.31806640625001],[14.837109375000011,-25.033203125],[14.5015625,-24.201953125],[14.462792968750023,-22.44912109375001],[13.450585937500023,-20.91669921875001],[13.168359375000023,-20.184667968750006],[12.458203125000011,-18.9267578125],[11.77587890625,-18.001757812500003],[11.733496093750006,-17.7509765625],[11.743066406250023,-17.24921875000001],[11.902539062500011,-17.2265625],[12.013964843750017,-17.168554687500006],[12.21337890625,-17.2099609375],[12.318457031250006,-17.21337890625],[12.359277343750023,-17.205859375],[12.548144531250017,-17.212695312500003],[13.179492187500017,-16.9716796875],[13.475976562500023,-17.0400390625],[14.017480468750023,-17.40888671875001],[16.1484375,-17.390234375],[18.396386718750023,-17.3994140625],[18.95527343750001,-17.803515625],[20.1943359375,-17.863671875],[20.745507812500023,-18.01972656250001],[22.32421875,-17.8375],[23.380664062500017,-17.640625]]]},"properties":{"name":"Namibia","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[167.54443359375003,-22.62324218750001],[167.44375,-22.63916015624997],[167.44345703125006,-22.541406250000037],[167.54443359375003,-22.62324218750001]]],[[[168.01093750000004,-21.429980468750017],[168.1390625,-21.44521484375001],[168.12070312500012,-21.615820312500034],[167.96679687500003,-21.641601562499957],[167.81542968749997,-21.392675781249963],[167.9884765625001,-21.337890624999986],[168.01093750000004,-21.429980468750017]]],[[[167.40087890625003,-21.16064453125003],[167.07265625,-20.99726562499997],[167.03271484374997,-20.922558593750026],[167.18945312500003,-20.803515625000017],[167.05576171875012,-20.720214843750014],[167.29794921875006,-20.732519531250034],[167.40087890625003,-21.16064453125003]]],[[[164.20234375000004,-20.246093749999957],[164.4359375,-20.282226562499957],[165.191796875,-20.768847656249974],[165.66279296875004,-21.267187499999977],[166.94238281250003,-22.09013671875003],[166.97031250000012,-22.32285156250002],[166.77412109375004,-22.37617187500004],[166.4679687500001,-22.256054687499997],[164.92744140625004,-21.289843749999974],[164.16972656250007,-20.48017578125004],[164.05966796875012,-20.141503906249966],[164.20234375000004,-20.246093749999957]]]]},"properties":{"name":"New Caledonia","childNum":4}},{"geometry":{"type":"Polygon","coordinates":[[[14.97900390625,22.99619140624999],[15.181835937500011,21.523388671874997],[15.607324218750023,20.954394531250003],[15.587109375000011,20.733300781249994],[15.963183593750017,20.34619140625],[15.735058593750011,19.904052734375],[15.474316406250011,16.908398437499997],[14.367968750000017,15.750146484374994],[13.4482421875,14.380664062500003],[13.505761718750023,14.134423828124994],[13.606347656250023,13.70458984375],[13.426953125000011,13.701757812499991],[13.323828125,13.670849609374997],[12.871679687500006,13.449023437500003],[12.65478515625,13.3265625],[12.463183593750017,13.09375],[10.958886718750023,13.371533203124997],[10.475878906250017,13.330224609374994],[10.229589843750006,13.281005859375],[10.184667968750006,13.270117187499991],[9.615917968750011,12.810644531249991],[9.201562500000023,12.821484375],[8.750585937500006,12.908154296874997],[8.4560546875,13.059667968749991],[8.095019531250017,13.291162109374994],[7.955761718750011,13.32275390625],[7.788671875,13.337890625],[7.056738281250006,13.000195312499997],[6.804296875,13.107666015625],[6.2998046875,13.658789062499991],[6.184277343750011,13.66367187499999],[5.838183593750017,13.765380859375],[5.491992187500017,13.872851562500003],[5.415820312500017,13.859179687500003],[5.361621093750017,13.836865234374997],[5.241894531250011,13.757226562499994],[4.664843750000017,13.733203125],[4.147558593750006,13.457714843749997],[3.947851562500006,12.775048828124994],[3.646679687500011,12.529980468749997],[3.595410156250011,11.6962890625],[2.805273437500006,12.383837890624989],[2.366015625000017,12.221923828125],[2.38916015625,11.897070312499991],[2.072949218750011,12.309375],[2.226269531250011,12.466064453125],[2.104589843750006,12.701269531249991],[1.56494140625,12.635400390624994],[0.9873046875,13.041894531249994],[0.988476562500011,13.36484375],[1.201171875,13.357519531249991],[0.6181640625,13.703417968750003],[0.42919921875,13.972119140624997],[0.382519531250011,14.245800781249997],[0.163867187500017,14.497216796874994],[0.217480468750011,14.911474609374991],[0.947460937500011,14.982128906249997],[1.300195312500023,15.272265625],[3.001074218750006,15.340966796874994],[3.06015625,15.427197265624997],[3.504296875000023,15.356347656249994],[3.5205078125,15.483105468749997],[3.842968750000011,15.701708984375003],[4.121289062500011,16.357714843750003],[4.234667968750017,16.996386718750003],[4.227636718750006,19.142773437499997],[5.836621093750011,19.479150390624994],[7.481738281250017,20.873095703125003],[11.967871093750006,23.517871093750003],[13.48125,23.18017578125],[14.215527343750011,22.619677734375003],[14.97900390625,22.99619140624999]]]},"properties":{"name":"Niger","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[7.30078125,4.418164062500026],[7.140429687500017,4.395117187500034],[7.227343750000045,4.527343749999972],[7.30078125,4.418164062500026]]],[[[6.804296875,13.107666015625],[7.056738281250006,13.00019531250004],[7.788671875,13.337890625],[7.955761718750011,13.322753906250028],[8.095019531250045,13.29116210937498],[8.750585937500034,12.908154296875026],[9.20156250000008,12.82148437500004],[9.615917968750011,12.810644531249963],[10.184667968750063,13.270117187499963],[10.229589843749977,13.281005859375043],[10.475878906250074,13.330224609375037],[10.958886718750051,13.371533203125011],[12.463183593750017,13.09375],[12.654785156250057,13.3265625],[13.426953125000068,13.701757812499963],[13.606347656250023,13.704589843750014],[13.932324218750011,13.258496093749997],[14.06396484375,13.078515625],[14.160058593750023,12.612792968749986],[14.184863281250017,12.447216796874997],[14.272851562500023,12.356494140624989],[14.518945312500051,12.298242187500023],[14.619726562500063,12.150976562500048],[14.559765625000011,11.492285156249963],[14.20234375000004,11.268164062499963],[14.143261718750068,11.248535156250043],[14.056738281250034,11.245019531250037],[13.981445312500057,11.21186523437504],[13.892089843750057,11.140087890624983],[13.699902343749983,10.873144531250048],[13.53535156250004,10.605078124999963],[13.414550781250028,10.171435546874989],[13.269921875000051,10.036181640624974],[13.198730468750028,9.563769531250003],[12.929492187500074,9.426269531249972],[12.87568359375004,9.303515625000017],[12.80654296875008,8.886621093749994],[12.7822265625,8.817871093750014],[12.651562500000011,8.667773437499989],[12.40351562500004,8.59555664062502],[12.311328125000074,8.419726562499989],[12.2333984375,8.282324218749977],[12.016015625000051,7.589746093750009],[11.809179687500006,7.345068359374991],[11.767382812500017,7.272265624999989],[11.861425781249977,7.11640625000004],[11.657519531250017,6.951562500000023],[11.580078125000057,6.88886718750004],[11.551660156250023,6.697265625],[11.153320312500057,6.437939453125011],[11.1064453125,6.457714843750054],[11.032519531250045,6.697900390625037],[10.954199218750006,6.7765625],[10.60625,7.063085937500006],[10.413183593750006,6.877734375],[10.293066406250034,6.876757812499974],[10.205468750000051,6.891601562499986],[10.185546874999972,6.91279296875004],[10.167773437500017,6.959179687499983],[10.143554687500057,6.99643554687502],[10.038867187500045,6.921386718750014],[9.874218750000068,6.803271484375017],[9.82070312500008,6.783935546874986],[9.779882812500034,6.760156250000023],[9.725585937499972,6.65],[9.659960937500017,6.531982421874986],[9.490234375,6.418652343749997],[8.997167968750006,5.917724609375],[8.715625,5.046875],[8.514843750000068,4.724707031250034],[8.23378906250008,4.907470703124972],[8.293066406250006,4.557617187500014],[7.644238281250068,4.525341796875011],[7.530761718750028,4.655175781249994],[7.284375,4.547656250000031],[7.076562500000051,4.716162109374991],[7.15468750000008,4.514404296875],[6.92324218750008,4.390673828125017],[6.767675781250006,4.724707031250034],[6.860351562500057,4.373339843750045],[6.633007812500011,4.340234375000051],[6.579980468750051,4.475976562499994],[6.554589843750023,4.34140625000002],[6.263671875,4.309423828124991],[6.270996093749972,4.432128906250028],[6.173339843749972,4.277392578125031],[5.970703125,4.338574218749983],[5.587792968750051,4.647216796874972],[5.448144531250023,4.945849609374974],[5.383300781250057,5.129003906249977],[5.475976562500023,5.153857421874989],[5.370019531250023,5.195019531250026],[5.367968750000045,5.337744140624963],[5.549707031250023,5.474218749999963],[5.385839843750034,5.401757812500037],[5.199218750000028,5.533544921874977],[5.456640624999977,5.61171875],[5.327343750000011,5.707519531249986],[5.112402343750034,5.64155273437504],[4.861035156250068,6.026318359374997],[4.431347656250011,6.348583984375026],[3.450781249999977,6.427050781250017],[3.71699218750004,6.597949218750017],[3.430175781250057,6.525],[3.335546875000063,6.396923828125011],[2.706445312500051,6.369238281249963],[2.735644531250045,6.595703125],[2.753710937499989,6.661767578124966],[2.774609374999983,6.711718750000017],[2.752929687500028,6.771630859374966],[2.731738281250045,6.852832031249989],[2.721386718750068,6.980273437500017],[2.75673828125008,7.067919921875017],[2.750488281250057,7.39506835937496],[2.765820312500068,7.422509765625051],[2.783984375000045,7.443408203125045],[2.78515625,7.476855468750017],[2.703125,8.371826171875],[2.774804687500023,9.048535156250026],[3.044921875,9.08383789062502],[3.325195312499972,9.778466796875051],[3.60205078125,10.004541015625009],[3.646582031250006,10.408984374999989],[3.771777343750017,10.417626953124966],[3.83447265625,10.607421875],[3.7568359375,10.76875],[3.71640625,11.07958984375],[3.695312499999972,11.12031250000004],[3.63886718750004,11.176855468750006],[3.487792968749972,11.395410156250037],[3.490527343750017,11.499218750000054],[3.55390625000004,11.631884765624989],[3.595410156250068,11.696289062500057],[3.664746093750068,11.762451171875028],[3.646679687500011,12.529980468749983],[3.947851562500006,12.775048828124994],[4.147558593750006,13.457714843749983],[4.664843750000045,13.733203124999974],[5.241894531250011,13.757226562499994],[5.361621093750074,13.836865234375054],[5.415820312500017,13.859179687499974],[5.491992187500074,13.872851562500003],[6.2998046875,13.658789062500006],[6.804296875,13.107666015625]]]]},"properties":{"name":"Nigeria","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[-83.6419921875,10.917236328125],[-83.71293945312499,10.785888671875],[-83.91928710937499,10.7353515625],[-84.6341796875,11.045605468749997],[-84.9091796875,10.9453125],[-85.5841796875,11.189453125],[-85.7443359375,11.06210937499999],[-87.670166015625,12.965673828124991],[-87.58505859374999,13.043310546874991],[-87.42436523437499,12.921142578125],[-87.33725585937499,12.979248046875],[-87.05917968749999,12.991455078125],[-87.00932617187499,13.0078125],[-86.918212890625,13.223583984374997],[-86.87353515625,13.266503906249994],[-86.792138671875,13.27978515625],[-86.72929687499999,13.284375],[-86.710693359375,13.313378906249994],[-86.76352539062499,13.63525390625],[-86.77060546874999,13.69873046875],[-86.758984375,13.746142578125003],[-86.733642578125,13.763476562500003],[-86.61025390625,13.774853515624997],[-86.376953125,13.755664062500003],[-86.33173828125,13.770068359375003],[-86.238232421875,13.899462890625003],[-86.15122070312499,13.994580078124997],[-86.0892578125,14.037207031249991],[-86.04038085937499,14.050146484374991],[-85.9837890625,13.965673828124991],[-85.78671875,13.844433593749997],[-85.75341796875,13.85205078125],[-85.73393554687499,13.858691406250003],[-85.727734375,13.876074218749991],[-85.731201171875,13.931835937499997],[-85.68193359374999,13.982568359374994],[-85.20834960937499,14.311816406250003],[-85.059375,14.582958984374997],[-84.86044921874999,14.809765625],[-84.645947265625,14.661083984374997],[-84.53764648437499,14.633398437499991],[-83.635498046875,14.876416015624997],[-83.5365234375,14.977001953124997],[-83.4150390625,15.008056640625],[-83.15751953124999,14.993066406249994],[-83.18535156249999,14.956396484374991],[-83.21591796874999,14.932373046875],[-83.27988281249999,14.812792968750003],[-83.344384765625,14.902099609375],[-83.413720703125,14.825341796874994],[-83.29921875,14.7490234375],[-83.187744140625,14.340087890625],[-83.4123046875,13.99648437499999],[-83.567333984375,13.3203125],[-83.5109375,12.411816406249997],[-83.627197265625,12.459326171874991],[-83.59335937499999,12.713085937499997],[-83.75424804687499,12.501953125],[-83.680419921875,12.024316406249994],[-83.7671875,12.059277343749997],[-83.82890624999999,11.861035156249997],[-83.70458984375,11.824560546874991],[-83.6517578125,11.642041015624997],[-83.86787109375,11.300048828125],[-83.6419921875,10.917236328125]]]},"properties":{"name":"Nicaragua","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-169.80341796875,-19.0830078125],[-169.94833984375,-19.072851562500006],[-169.834033203125,-18.96601562500001],[-169.80341796875,-19.0830078125]]]},"properties":{"name":"Niue","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-68.205810546875,12.144580078124989],[-68.25434570312495,12.032080078124977],[-68.36923828125,12.301953124999983],[-68.205810546875,12.144580078124989]]],[[[4.226171875000034,51.38647460937503],[3.902050781250011,51.20766601562502],[3.43251953125008,51.24575195312505],[3.35009765625,51.37768554687503],[4.226171875000034,51.38647460937503]]],[[[3.94912109375008,51.73945312500001],[4.07509765625008,51.648779296875006],[3.699023437500017,51.70991210937501],[3.94912109375008,51.73945312500001]]],[[[4.886132812500023,53.07070312500005],[4.70917968750004,53.036035156249994],[4.886425781249983,53.18330078124998],[4.886132812500023,53.07070312500005]]],[[[4.226171875000034,51.38647460937503],[3.448925781250068,51.54077148437503],[3.743945312500017,51.596044921875006],[4.27412109375004,51.47163085937498],[4.004785156250051,51.595849609374966],[4.182617187500057,51.61030273437498],[3.946875,51.810546875],[4.482812500000023,52.30917968749998],[4.76875,52.941308593749966],[5.061230468750068,52.96064453125001],[5.532031250000074,53.268701171874966],[6.062207031250068,53.407080078125006],[6.816210937500045,53.44116210937503],[7.197265625000028,53.28227539062499],[7.033007812500045,52.65136718749997],[6.710742187500045,52.61787109374998],[6.748828125000074,52.464013671874994],[7.035156250000057,52.38022460937498],[6.724511718749994,52.080224609374966],[6.800390625,51.96738281249998],[5.948730468750057,51.80268554687501],[6.198828125000034,51.45],[6.129980468750034,51.14741210937501],[5.857519531250034,51.030126953125006],[6.048437500000034,50.90488281250006],[5.993945312500017,50.75043945312504],[5.693554687500011,50.774755859375006],[5.796484375000034,51.153076171875],[5.214160156250045,51.278955078124966],[5.03095703125004,51.46909179687498],[4.226171875000034,51.38647460937503]]],[[[5.325781250000063,53.38574218750003],[5.190234375000074,53.39179687500001],[5.582617187500063,53.438085937500034],[5.325781250000063,53.38574218750003]]]]},"properties":{"name":"Netherlands","childNum":6,"cp":[5.0752777,52.358465]}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[5.085839843750023,60.30756835937501],[5.089062500000068,60.188769531250045],[4.95722656250004,60.44726562500006],[5.085839843750023,60.30756835937501]]],[[[4.958691406250068,61.084570312500034],[4.79902343750004,61.08271484375001],[4.861621093749989,61.19384765625],[4.958691406250068,61.084570312500034]]],[[[8.10273437500004,63.33759765625004],[7.804003906250017,63.413916015625034],[8.073535156250045,63.47080078124998],[8.10273437500004,63.33759765625004]]],[[[8.470800781250063,63.66713867187502],[8.287109375000028,63.68715820312502],[8.764648437500057,63.804638671874955],[8.78652343750008,63.703466796875034],[8.470800781250063,63.66713867187502]]],[[[11.2314453125,64.865869140625],[10.739843750000034,64.87031250000001],[11.02099609375,64.97871093749995],[11.2314453125,64.865869140625]]],[[[12.971777343750063,67.87412109375],[12.824023437500074,67.82124023437498],[13.068066406250068,68.07133789062505],[12.971777343750063,67.87412109375]]],[[[13.872851562500045,68.26533203125004],[14.096777343750034,68.218603515625],[13.229394531250051,67.995361328125],[13.300195312499994,68.16044921875007],[13.872851562500045,68.26533203125004]]],[[[15.207128906250006,68.943115234375],[15.222070312500023,68.61630859375003],[14.404687500000051,68.663232421875],[15.037792968750068,69.00053710937507],[15.207128906250006,68.943115234375]]],[[[15.760351562500006,68.56123046875001],[16.328906250000017,68.87631835937498],[16.519238281250068,68.63300781249998],[15.975292968750011,68.402490234375],[14.257519531249983,68.19077148437503],[15.412597656250028,68.61582031250003],[15.483007812500006,69.04345703125003],[16.04804687500001,69.30205078125002],[15.760351562500006,68.56123046875001]]],[[[17.503027343750034,69.59624023437502],[18.004101562500068,69.50498046874998],[17.95068359375003,69.19814453125],[17.487890625000063,69.19682617187499],[17.08251953124997,69.013671875],[16.81044921875008,69.07070312499997],[17.001757812500045,69.36191406250006],[17.36083984375003,69.38149414062497],[17.503027343750034,69.59624023437502]]],[[[29.956152343750006,69.79677734375002],[29.766210937500006,69.76752929687501],[29.835839843749994,69.90556640625005],[29.956152343750006,69.79677734375002]]],[[[20.779199218750023,70.08974609375002],[20.46425781250005,70.0765625],[20.492773437500006,70.20332031249995],[20.78603515625008,70.21953124999999],[20.779199218750023,70.08974609375002]]],[[[19.25507812500001,70.06640625000006],[19.607812500000023,70.019140625],[19.334765625000074,69.82026367187501],[18.784765625000034,69.57900390624997],[18.12988281250003,69.557861328125],[18.34931640625004,69.76787109374999],[18.67402343750004,69.78164062500002],[19.13271484375005,70.24414062500003],[19.25507812500001,70.06640625000006]]],[[[19.76748046875005,70.21669921875002],[20.005957031250034,70.07622070312502],[19.599023437499994,70.26616210937507],[19.76748046875005,70.21669921875002]]],[[[23.615332031250034,70.54931640625003],[23.15917968750003,70.28261718750005],[22.941015625000063,70.444580078125],[23.546679687500017,70.61708984374997],[23.615332031250034,70.54931640625003]]],[[[24.01757812500003,70.56738281249997],[23.716601562500074,70.561865234375],[23.778417968750063,70.74736328125005],[24.01757812500003,70.56738281249997]]],[[[23.440527343750063,70.81577148437503],[22.8291015625,70.54155273437505],[22.358691406250017,70.514794921875],[21.99453125000008,70.65712890624997],[23.440527343750063,70.81577148437503]]],[[[30.869726562500006,69.78344726562506],[30.860742187499994,69.53842773437503],[30.18017578124997,69.63583984375],[30.08730468750005,69.43286132812503],[29.38828125,69.29814453125005],[28.96582031250003,69.02197265625],[28.846289062500006,69.17690429687502],[29.33339843750005,69.47299804687503],[29.14160156250003,69.67143554687505],[27.747851562500045,70.06484375],[27.127539062500063,69.90649414062497],[26.525390625000057,69.91503906250003],[26.07246093750004,69.69155273437497],[25.748339843750017,68.99013671875],[24.94140625000003,68.59326171875006],[23.85400390625,68.80590820312503],[23.324023437500017,68.64897460937502],[22.410937500000074,68.719873046875],[21.59375,69.273583984375],[21.06611328125001,69.21411132812497],[21.065722656250017,69.04174804687503],[20.622167968750006,69.036865234375],[20.116699218750057,69.02089843750005],[20.348046875000023,68.84873046875003],[19.969824218750063,68.35639648437501],[18.303027343750045,68.55541992187497],[17.91669921875001,67.96489257812502],[17.324609375000023,68.10380859374999],[16.783593750000023,67.89501953125],[16.12744140625,67.42583007812507],[16.40351562500004,67.05498046875002],[15.422949218750006,66.48984374999998],[15.483789062500051,66.30595703124999],[14.543261718750045,66.12934570312498],[14.47968750000004,65.30146484374998],[13.650292968750023,64.58154296874997],[14.077636718750028,64.464013671875],[14.141210937500006,64.17353515624998],[13.960546875000063,64.01401367187498],[13.203515625000023,64.07509765625],[12.792773437500017,64],[12.175195312500051,63.595947265625],[11.999902343750051,63.29169921875001],[12.303515625000074,62.28559570312501],[12.155371093750006,61.720751953125045],[12.88076171875008,61.35229492187506],[12.706054687500028,61.059863281250074],[12.29414062500004,61.00268554687506],[12.588671874999989,60.450732421875045],[12.486132812500074,60.10678710937506],[11.680761718750034,59.59228515625003],[11.798144531250074,59.28989257812498],[11.64277343750004,58.92607421875002],[11.470703125000057,58.909521484375034],[11.388281250000063,59.036523437499966],[10.834472656250028,59.18393554687498],[10.595312500000063,59.764550781249966],[10.179394531250068,59.00927734375003],[9.842578125000017,58.95849609374997],[9.557226562500063,59.11269531250002],[9.65693359375004,58.97119140624997],[8.166113281250063,58.145312500000045],[7.0048828125,58.024218750000074],[6.877050781250006,58.15073242187498],[6.590527343750068,58.09731445312502],[6.659863281250068,58.26274414062499],[5.706835937500074,58.52363281250001],[5.55556640625008,58.975195312500006],[6.099023437500023,58.87026367187502],[6.363281250000028,59.00092773437501],[6.099414062500017,58.951953125000074],[5.88916015625,59.097949218750045],[5.951855468750068,59.299072265625],[6.415332031250074,59.547119140625],[5.17324218750008,59.16254882812498],[5.2421875,59.564306640625034],[5.472460937500017,59.713085937499955],[5.77216796875004,59.66093749999999],[6.216601562499989,59.818359375],[5.73046875,59.863085937500045],[6.348730468750006,60.35297851562504],[6.57363281250008,60.36059570312497],[6.526855468750057,60.152929687500034],[6.995703125,60.511962890625],[6.1533203125,60.34624023437499],[5.145800781250074,59.63881835937502],[5.205664062500006,60.087939453125045],[5.688574218749977,60.12319335937502],[5.285839843750011,60.20571289062505],[5.13710937500008,60.445605468750074],[5.648339843750051,60.68798828124997],[5.244042968750023,60.569580078125],[5.115820312500006,60.63598632812503],[5.008593750000017,61.038183593750006],[6.777832031250028,61.142431640625006],[7.038671875000063,60.952929687500045],[7.040136718750006,61.091162109375034],[7.604492187500057,61.210546875000034],[7.34658203125008,61.30058593749999],[7.442578125000011,61.43461914062502],[7.173535156250011,61.16596679687501],[6.599902343750017,61.28964843749998],[6.383496093750068,61.133886718750034],[5.451269531250034,61.10234375000002],[5.106738281250017,61.187548828125045],[5.002734375000074,61.43359375],[5.338671875000017,61.485498046874994],[4.927832031249977,61.71069335937506],[4.93007812499999,61.878320312499994],[6.01582031250004,61.7875],[6.730761718750045,61.86977539062505],[5.266894531250045,61.935595703125045],[5.143164062500063,62.159912109375],[5.908300781249977,62.41601562500003],[6.083496093750057,62.349609375],[6.580078125000057,62.407275390625045],[6.692382812500028,62.46806640624999],[6.136132812500051,62.40747070312497],[6.352929687500051,62.61113281249999],[7.653125,62.56401367187499],[7.538378906250074,62.67207031249998],[8.045507812500006,62.77124023437503],[6.734960937500006,62.72070312500003],[6.940429687500028,62.930468750000045],[7.571875,63.09951171875002],[8.100585937500028,63.090966796874966],[8.623144531250006,62.84624023437502],[8.158007812500017,63.16152343750005],[8.635546875000045,63.34233398437502],[8.360742187500023,63.498876953125034],[8.576171875000028,63.60117187499998],[9.135839843750006,63.593652343749966],[9.156054687500045,63.459326171875034],[9.696875,63.624560546875045],[10.020996093750028,63.39082031250004],[10.76015625000008,63.461279296875006],[10.725292968750068,63.625],[11.370703125000034,63.804833984374994],[11.175585937500074,63.89887695312498],[11.457617187500063,64.00297851562505],[11.306640625000028,64.04887695312499],[10.91425781250004,63.92109374999998],[10.934863281250045,63.770214843749955],[10.055078125000051,63.5126953125],[9.567285156250051,63.70615234374998],[10.565625,64.418310546875],[11.523828125000051,64.744384765625],[11.632910156250063,64.81391601562495],[11.296777343750051,64.75478515625],[11.489355468750034,64.975830078125],[12.15966796875,65.178955078125],[12.508398437499977,65.09941406250005],[12.915527343750057,65.33925781249997],[12.417578125000063,65.18408203124997],[12.133886718749977,65.27915039062498],[12.68886718750008,65.90219726562498],[13.033105468750051,65.95625],[12.783789062500063,66.10043945312506],[14.034179687500057,66.29755859374998],[13.118847656250011,66.23066406250004],[13.211425781250028,66.64082031250001],[13.959472656250028,66.79433593750002],[13.651562500000011,66.90708007812498],[14.10878906250008,67.11923828125003],[15.41572265625004,67.20244140625002],[14.441699218750045,67.27138671875005],[14.961914062500057,67.57426757812502],[15.59443359375004,67.34853515625005],[15.691503906250006,67.52138671875],[15.24873046875004,67.6021484375],[15.303906250000011,67.76528320312502],[14.854687500000068,67.66333007812506],[14.798925781250063,67.80932617187503],[15.13427734375,67.97270507812502],[15.621386718750017,67.94829101562502],[15.316015624999977,68.06875],[16.007910156250006,68.22871093750004],[16.312304687500017,67.88144531249998],[16.20380859375001,68.31674804687503],[17.552832031250063,68.42626953125006],[16.51435546875004,68.53256835937503],[18.101464843749994,69.15629882812499],[18.259765625,69.47060546875],[18.915917968750023,69.33559570312502],[18.614453125000068,69.49057617187498],[19.197265625000057,69.74785156249999],[19.722460937500017,69.78164062500002],[19.64150390625005,69.42402343750001],[20.324218750000057,69.94531249999997],[20.054492187500074,69.33266601562497],[20.486718750000023,69.54208984375],[20.739453124999983,69.52050781250003],[20.622070312500057,69.91391601562498],[21.163085937500057,69.88950195312498],[21.432910156250045,70.01318359375006],[21.974707031250034,69.83457031249998],[21.355761718750045,70.23339843749997],[22.321972656250068,70.264501953125],[22.684570312500057,70.374755859375],[23.35390625000008,69.98339843750003],[23.3291015625,70.20722656249995],[24.420019531250034,70.70200195312503],[24.263476562500017,70.82631835937497],[24.658007812500017,71.00102539062505],[25.264648437500057,70.843505859375],[25.768164062500063,70.85317382812502],[25.043847656250023,70.10903320312502],[26.66132812500004,70.93974609374999],[26.585058593750034,70.41000976562498],[26.989355468750063,70.51137695312502],[27.183691406250034,70.74404296875],[27.546484375000063,70.80400390625005],[27.23525390625008,70.94721679687498],[27.59707031250005,71.09130859375003],[28.392285156250068,70.97529296875004],[27.898046875,70.67792968750001],[28.271777343750017,70.66796875000003],[28.192968750000034,70.24858398437505],[28.83154296875003,70.86396484375001],[29.7375,70.646826171875],[30.065136718750097,70.70297851562498],[30.944140625000017,70.27441406249997],[30.262988281250074,70.12470703125004],[28.804296875000063,70.09252929687506],[29.601367187500017,69.97675781249998],[29.792089843750063,69.727880859375],[30.08828125,69.71757812500005],[30.237597656250017,69.86220703125002],[30.428320312500006,69.722265625],[30.869726562500006,69.78344726562506]]],[[[25.58632812500005,71.14208984375],[26.13378906250003,70.99580078125004],[25.582031250000057,70.960791015625],[25.31494140625,71.03413085937504],[25.58632812500005,71.14208984375]]],[[[-8.953564453124983,70.83916015625002],[-8.001367187499966,71.17768554687495],[-8.002099609374937,71.04125976562497],[-8.953564453124983,70.83916015625002]]],[[[19.219335937500006,74.39101562500002],[18.86123046875008,74.51416015624997],[19.182910156250045,74.51791992187503],[19.219335937500006,74.39101562500002]]],[[[21.60810546875004,78.59570312499997],[22.04316406250004,78.57695312500007],[22.29951171875004,78.22817382812497],[23.451953125000074,78.14946289062502],[23.11669921874997,77.99150390624999],[24.901855468750057,77.756591796875],[22.55371093750003,77.26665039062502],[22.685351562500045,77.55351562500002],[20.928125,77.45966796874998],[21.653125,77.92353515624998],[20.22792968750005,78.47783203125005],[21.60810546875004,78.59570312499997]]],[[[11.250292968750017,78.610693359375],[12.116406250000068,78.232568359375],[11.121289062500011,78.46328125],[10.558203125000063,78.90292968750003],[11.250292968750017,78.610693359375]]],[[[29.047070312500068,78.91206054687504],[29.69667968750005,78.90473632812495],[27.88906250000005,78.8521484375],[28.511132812500023,78.96733398437502],[29.047070312500068,78.91206054687504]]],[[[16.786718750000034,79.90673828125],[17.834570312499977,79.80004882812503],[17.66875,79.38593750000004],[18.39736328125008,79.60517578125001],[18.677832031250006,79.26171875000003],[19.893554687500057,79.05620117187499],[20.61103515625004,79.10664062499998],[21.388769531250034,78.74042968749998],[19.67675781250003,78.60957031249995],[16.700488281250045,76.57929687499995],[14.365820312500034,77.23447265625003],[13.995703125000034,77.50820312500002],[14.69501953125004,77.525048828125],[14.920800781250023,77.68881835937506],[17.033300781250006,77.79770507812503],[16.91406250000003,77.89799804687505],[14.089941406250063,77.77138671875],[13.680566406250051,78.028125],[14.307226562500006,78.00507812500001],[15.783886718750011,78.32705078125005],[17.00292968750003,78.36938476562497],[16.44863281250008,78.50356445312502],[16.78261718750008,78.66362304687505],[15.417382812500023,78.47324218749998],[15.384179687500023,78.77119140625001],[15.01630859375004,78.63012695312497],[14.689257812500017,78.720947265625],[14.638281250000034,78.41459960937502],[14.110449218750063,78.27089843749997],[13.150195312499989,78.2375],[11.365429687500011,78.95039062500004],[12.323437500000068,78.91425781249995],[12.083984375000028,79.26752929687498],[11.579785156250068,79.28349609375005],[11.208105468750034,79.12963867187503],[10.737597656250017,79.52016601562502],[10.804003906250045,79.79877929687504],[11.150390625,79.71699218749998],[11.702343750000011,79.82060546875005],[12.287792968750068,79.713134765625],[12.279980468749983,79.81596679687507],[13.692871093749972,79.860986328125],[13.777539062500011,79.71528320312498],[12.555371093750068,79.56948242187502],[13.333789062500017,79.57480468750006],[14.029589843750017,79.34414062500005],[14.59365234375008,79.79873046875002],[16.34375,78.97612304687502],[15.816113281250011,79.68183593750001],[16.245703125000034,80.04946289062502],[16.786718750000034,79.90673828125]]],[[[32.52597656250006,80.119140625],[31.48193359374997,80.10791015625003],[33.62929687499999,80.21743164062497],[32.52597656250006,80.119140625]]],[[[20.897851562500023,80.24995117187501],[22.289746093749983,80.04921874999997],[22.450781250000034,80.40224609375005],[23.00800781250004,80.473974609375],[23.114550781250074,80.18696289062498],[24.29755859375004,80.36040039062505],[26.86083984375,80.16000976562498],[27.19863281250008,79.90659179687506],[25.641210937500034,79.40302734374995],[23.94775390625,79.19428710937498],[22.903710937500023,79.23066406250001],[22.865527343750045,79.41186523437497],[20.861132812500017,79.39785156249997],[20.128222656250074,79.489599609375],[19.674609375000045,79.591162109375],[20.784082031250023,79.74858398437502],[18.725,79.7607421875],[18.25537109375,79.92919921875003],[18.855957031250057,80.03662109375],[17.91689453125005,80.14311523437502],[19.343359375000063,80.11640624999998],[19.733300781249994,80.47783203124999],[20.897851562500023,80.24995117187501]]]]},"properties":{"name":"Norway","childNum":27}},{"geometry":{"type":"Polygon","coordinates":[[[87.984375,27.133935546874994],[87.9931640625,27.086083984374994],[88.11103515625001,26.928466796875],[88.1572265625,26.807324218749997],[88.16152343750002,26.724804687499997],[88.11152343750001,26.58642578125],[88.05488281250001,26.430029296875],[88.02695312500003,26.39501953125],[87.9951171875,26.382373046874996],[87.28740234374999,26.360302734374997],[87.01640624999999,26.555419921875],[86.70136718750001,26.43505859375],[86.00732421875,26.649365234374997],[85.79453125000003,26.604150390624994],[85.7373046875,26.63974609375],[85.6484375,26.829003906249994],[85.56845703125003,26.83984375],[85.29296875,26.741015625],[85.19179687500002,26.766552734374997],[84.68535156249999,27.041015625],[84.65380859375,27.091699218749994],[84.65478515625,27.203662109374996],[84.64072265625003,27.249853515625],[84.61015624999999,27.298681640625],[84.48085937500002,27.348193359374996],[84.22978515624999,27.42783203125],[84.09101562500001,27.491357421874994],[83.82880859375001,27.377832031249994],[83.74697265625002,27.395947265624997],[83.55166015625002,27.456347656249996],[83.44716796875002,27.46533203125],[83.38398437500001,27.44482421875],[83.36943359374999,27.41025390625],[83.28974609375001,27.370996093749994],[82.7333984375,27.518994140624997],[82.71083984375002,27.5966796875],[82.67734375000003,27.6734375],[82.6298828125,27.687060546874996],[82.45136718750001,27.671826171874997],[82.28769531250003,27.756542968749997],[82.11191406250003,27.864941406249997],[82.03701171875002,27.900585937499997],[81.98769531250002,27.913769531249997],[81.94521484375002,27.899267578125],[81.896875,27.874462890624997],[81.85263671875003,27.867089843749994],[81.1689453125,28.335009765624996],[80.58701171875003,28.649609375],[80.51787109374999,28.665185546874994],[80.49580078125001,28.635791015624996],[80.47910156250003,28.604882812499994],[80.41855468750003,28.612011718749997],[80.32480468750003,28.66640625],[80.2265625,28.723339843749997],[80.07070312500002,28.83017578125],[80.05166015625002,28.8703125],[80.08457031250003,28.994189453124996],[80.13046875000003,29.100390625],[80.16953125000003,29.124316406249996],[80.23300781250003,29.194628906249996],[80.25595703125003,29.318017578124994],[80.2548828125,29.42333984375],[80.31689453125,29.572070312499996],[80.40185546875,29.730273437499996],[80.54902343750001,29.899804687499994],[80.81992187500003,30.119335937499997],[80.84814453125,30.13974609375],[80.90761718750002,30.171923828124996],[80.96611328124999,30.180029296875],[81.17714843750002,30.039892578125],[81.25507812500001,30.093310546874996],[81.41718750000001,30.337597656249997],[81.64189453124999,30.3875],[81.85488281250002,30.36240234375],[82.04335937500002,30.3267578125],[82.220703125,30.063867187499994],[83.15546875000001,29.612646484375],[83.58349609375,29.18359375],[83.93593750000002,29.279492187499997],[84.02197265625,29.253857421874997],[84.10136718749999,29.219970703125],[84.12783203125002,29.156298828124996],[84.17558593749999,29.036376953125],[84.22871093750001,28.911767578124994],[84.796875,28.560205078124994],[84.85507812500003,28.553613281249994],[85.06914062499999,28.609667968749996],[85.12636718750002,28.60263671875],[85.15908203125002,28.592236328124997],[85.16015625,28.571875],[85.12148437500002,28.484277343749994],[85.08857421875001,28.372265625],[85.12246093750002,28.315966796874996],[85.21210937500001,28.292626953124994],[85.41064453125,28.276025390624994],[85.67832031250003,28.27744140625],[85.75947265625001,28.220654296874997],[85.84023437500002,28.1353515625],[85.92167968749999,27.989697265624997],[85.9541015625,27.92822265625],[85.99453125000002,27.910400390625],[86.06416015625001,27.934716796874994],[86.07871093750003,28.08359375],[86.13701171874999,28.11435546875],[86.21796875000001,28.0220703125],[86.32861328125,27.959521484374996],[86.40869140625,27.928662109374997],[86.51689453124999,27.963525390624994],[86.55449218749999,28.085205078125],[86.61445312500001,28.10302734375],[86.69052734375003,28.094921875],[86.71962890625002,28.070654296875],[86.75039062500002,28.0220703125],[86.93378906250001,27.968457031249997],[87.02011718750003,27.928662109374997],[87.14140624999999,27.838330078124997],[87.29072265625001,27.821923828124994],[87.62255859375,27.815185546875],[87.86074218750002,27.886083984375],[88.10976562500002,27.87060546875],[87.984375,27.133935546874994]]]},"properties":{"name":"Nepal","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[169.17822265624997,-52.497265625],[169.12753906250006,-52.570312499999964],[169.02177734375002,-52.49541015624998],[169.17822265624997,-52.497265625]]],[[[166.22109375,-50.76152343749997],[166.2428710937501,-50.84570312499998],[165.88916015624997,-50.80771484374996],[166.10136718750002,-50.538964843750016],[166.26748046875005,-50.558593750000014],[166.22109375,-50.76152343749997]]],[[[168.14492187500005,-46.862207031249966],[168.04316406250004,-46.9326171875],[168.2409179687501,-47.070019531250026],[167.52197265624997,-47.258691406249994],[167.80078125000003,-46.90654296875002],[167.78398437500007,-46.699804687500006],[167.9557617187501,-46.69443359374998],[168.14492187500005,-46.862207031249966]]],[[[166.97949218749997,-45.17968750000003],[167.02265625000004,-45.299804687499986],[166.89267578125012,-45.24052734374999],[166.97949218749997,-45.17968750000003]]],[[[-176.17763671874997,-43.74033203124998],[-176.38173828124997,-43.86679687499998],[-176.40737304687497,-43.7609375],[-176.516552734375,-43.78476562499996],[-176.33359375000003,-44.02529296875004],[-176.51552734374997,-44.11660156249998],[-176.62934570312495,-44.036132812500014],[-176.55512695312504,-43.85195312499998],[-176.84765625000003,-43.82392578125004],[-176.56611328124995,-43.717578125000045],[-176.17763671874997,-43.74033203124998]]],[[[173.91464843750018,-40.86367187500004],[173.78085937500012,-40.921777343749966],[173.964453125,-40.71298828124998],[173.91464843750018,-40.86367187500004]]],[[[173.11533203125006,-41.27929687499997],[173.94716796875005,-40.92412109375],[173.79785156250003,-41.271972656249986],[173.99941406250005,-40.99326171874996],[174.30253906249996,-41.019531249999986],[174.03857421875003,-41.24189453125],[174.37011718750009,-41.1037109375],[174.06933593750009,-41.42949218750002],[174.08369140625015,-41.67080078124998],[174.2831054687501,-41.740625],[173.22119140624997,-42.976562499999986],[172.62402343749997,-43.27246093749996],[172.73476562500005,-43.35478515625003],[172.52666015625002,-43.464746093749966],[172.69345703125006,-43.444335937499986],[172.80703125000005,-43.620996093749994],[173.07324218750003,-43.676171874999966],[173.065625,-43.87460937499998],[172.50273437500002,-43.84365234374998],[172.48037109375,-43.726660156250034],[172.29658203125004,-43.867871093750026],[172.035546875,-43.70175781250002],[172.17978515625006,-43.895996093749986],[171.24072265624997,-44.26416015625003],[171.14628906250002,-44.9123046875],[170.99902343750003,-44.91142578124999],[171.11328125000003,-45.03925781250001],[170.7005859375,-45.68427734374997],[170.77626953125005,-45.870898437499974],[170.4191406250001,-45.94101562499996],[169.68662109375006,-46.55166015625002],[169.34228515625003,-46.62050781250001],[168.38212890625007,-46.60537109374995],[168.1891601562501,-46.362207031249966],[167.8419921875001,-46.366210937499986],[167.539453125,-46.14853515624996],[167.36894531250007,-46.24150390624999],[166.73154296875006,-46.19785156249998],[166.91669921875004,-45.95722656249998],[166.64990234374997,-46.04169921875004],[166.71796875000004,-45.88935546875001],[166.49316406249997,-45.9638671875],[166.48828124999997,-45.83183593750002],[167.0033203125,-45.71210937500004],[166.79765625000002,-45.64560546874999],[166.99082031250012,-45.531738281249986],[166.73398437500012,-45.54355468749999],[166.74306640625,-45.46845703124997],[166.91992187499997,-45.40791015624998],[166.86923828125006,-45.31123046875],[167.15566406250005,-45.410937499999974],[167.23007812500012,-45.29033203125],[167.02587890624997,-45.12363281249998],[167.25947265625004,-45.08222656249997],[167.19453125000004,-44.963476562500034],[167.41074218750006,-44.82792968750003],[167.4662109375,-44.958300781250045],[167.48496093750006,-44.77138671874998],[167.78701171875,-44.59501953125002],[167.90898437500002,-44.66474609375001],[167.85654296875012,-44.50068359374998],[168.45742187500005,-44.030566406250045],[169.17890625000004,-43.9130859375],[169.16953125000006,-43.77705078125],[169.83388671875,-43.53701171875004],[170.24023437499997,-43.163867187500045],[170.39609375000012,-43.18222656249996],[170.30283203125012,-43.10761718750004],[170.61181640625003,-43.091796875000014],[170.5236328125001,-43.00898437500001],[170.6654296875,-42.961230468749974],[170.73525390625005,-43.029785156249986],[170.96992187500004,-42.71835937499996],[171.01171875000003,-42.88505859374999],[171.027734375,-42.696093750000045],[171.31337890625005,-42.460156250000026],[171.48623046875,-41.7947265625],[171.94804687500002,-41.53867187499996],[172.13945312500002,-40.947265625000014],[172.640625,-40.51826171875001],[172.94365234375007,-40.51875],[172.73261718750004,-40.54375],[172.70439453125002,-40.6677734375],[172.988671875,-40.84824218749999],[173.11533203125006,-41.27929687499997]]],[[[175.54316406250015,-36.279296874999986],[175.34619140624997,-36.217773437499986],[175.3895507812501,-36.07773437499996],[175.54316406250015,-36.279296874999986]]],[[[173.26943359375,-34.93476562499998],[173.44785156250012,-34.844335937500034],[173.47265625000003,-34.94697265624998],[174.10400390625003,-35.14287109375002],[174.1431640625,-35.3],[174.32031250000003,-35.246679687500034],[174.58066406250018,-35.78554687500004],[174.39580078124996,-35.79736328124996],[174.8021484375,-36.30947265625001],[174.72246093750007,-36.84121093749998],[175.29951171875004,-36.99326171874996],[175.38535156250012,-37.206933593749966],[175.54248046874997,-37.2013671875],[175.46083984375005,-36.475683593750034],[175.77216796875004,-36.73515625],[176.10839843749997,-37.64511718749998],[177.27402343750012,-37.993457031249974],[178.0091796875,-37.55488281249998],[178.53623046875006,-37.69208984375004],[178.26767578125006,-38.551171875],[177.976171875,-38.72226562500005],[177.90878906250012,-39.23955078125],[177.52294921875003,-39.07382812499999],[177.07675781250012,-39.22177734375002],[176.93925781249996,-39.55527343750002],[177.10986328125009,-39.673144531250045],[176.8421875000001,-40.15781250000002],[175.98291015625003,-41.21328125000002],[175.30976562499998,-41.610644531249974],[175.16562500000012,-41.41738281249995],[174.88134765624997,-41.42402343749997],[174.8656250000001,-41.223046874999966],[174.63535156250012,-41.28945312499999],[175.1625,-40.62158203125],[175.25410156250004,-40.28935546875],[175.1559570312501,-40.11494140625],[175.00927734375009,-39.95214843749996],[173.93437500000013,-39.50908203125002],[173.76367187499997,-39.31875],[173.84433593750006,-39.13935546875001],[174.39843749999997,-38.96259765624998],[174.59736328124998,-38.78505859374995],[174.80166015625005,-37.895507812500014],[174.92802734375002,-37.80449218750003],[174.58583984374994,-37.09775390625002],[174.73427734375,-37.21523437499998],[174.92890625000004,-37.084765625000045],[174.78203125000013,-36.94375],[174.47558593750009,-36.94189453124997],[174.1888671875001,-36.492285156250034],[174.4015625000001,-36.60195312499999],[174.39277343750004,-36.24003906249999],[174.26787109375002,-36.16308593750003],[174.25371093749996,-36.24912109374998],[174.03642578125013,-36.12246093750001],[173.91445312499994,-35.908691406249986],[173.91728515625002,-36.01816406249999],[174.16640624999994,-36.327636718749986],[174.05468749999991,-36.35976562500004],[173.41220703125012,-35.542578125],[173.62617187500004,-35.31914062499996],[173.3763671875001,-35.50009765624996],[173.31396484375003,-35.44335937499996],[173.11669921874997,-35.205273437500026],[173.190625,-35.01621093749998],[172.70595703125005,-34.45517578124998],[173.04394531249997,-34.429101562499994],[172.96376953125,-34.53515625000003],[173.26943359375,-34.93476562499998]]]]},"properties":{"name":"New Zealand","childNum":9}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[58.722070312499994,20.21875],[58.640917968750074,20.210693359375057],[58.64121093750006,20.33735351562501],[58.884375,20.680566406250023],[58.95078125000006,20.516162109375017],[58.722070312499994,20.21875]]],[[[56.38798828125002,24.97919921875004],[56.640625,24.4703125],[57.12304687500003,23.980712890625],[58.773046875,23.517187499999977],[59.42939453125004,22.660839843749955],[59.82324218749997,22.50898437500004],[59.8,22.21992187500001],[59.37148437500005,21.498828125000017],[58.89570312500004,21.11279296874997],[58.47421875000006,20.406884765624966],[58.20898437500003,20.423974609374994],[58.245019531249994,20.599218749999977],[58.16943359375003,20.58950195312505],[57.86181640624997,20.24414062500003],[57.71416015625002,19.678417968749983],[57.81162109375006,19.01708984374997],[56.825976562500074,18.753515625],[56.3834960937501,17.98798828125001],[55.479101562500006,17.84326171875003],[55.25537109375003,17.58564453125004],[55.275195312500074,17.320898437500006],[55.06416015625004,17.038916015625034],[54.06816406250002,17.005517578124966],[53.60986328124997,16.75996093750004],[53.08564453125004,16.648388671874955],[51.977636718750006,18.996142578125074],[54.97734375000002,19.995947265625006],[55.64101562499999,22.001855468749994],[55.185839843750074,22.7041015625],[55.1999023437501,23.034765625000034],[55.53164062499999,23.81904296875001],[55.4684570312501,23.94111328125001],[55.98515625000002,24.063378906249966],[55.92861328125005,24.215136718750074],[55.76083984375006,24.24267578125],[55.795703125000074,24.868115234374955],[56.00058593750006,24.953222656249977],[56.06386718750005,24.73876953125],[56.38798828125002,24.97919921875004]]],[[[56.29785156250003,25.650683593750045],[56.144628906250006,25.690527343750006],[56.16748046875003,26.047460937499977],[56.08046875,26.06264648437505],[56.41308593749997,26.351171875000034],[56.29785156250003,25.650683593750045]]]]},"properties":{"name":"Oman","childNum":3}},{"geometry":{"type":"Polygon","coordinates":[[[73.08961802927895,36.86435907947333],[73.08203125000107,36.43949943991182],[72.31128647748268,35.77290936638241],[73.13410859949555,34.82510160558277],[73.19895048106557,33.88770931468204],[74.00809389139292,33.25375789331485],[73.98984375,33.22119140625],[74.30361328125002,32.991796875],[74.30546875000002,32.810449218749994],[74.35458984375,32.768701171874994],[74.58828125000002,32.753222656249996],[74.632421875,32.770898437499994],[74.66328125000001,32.757666015625],[74.64335937500002,32.607714843749996],[74.68574218750001,32.493798828124994],[74.78886718750002,32.4578125],[74.9873046875,32.462207031249996],[75.33349609375,32.279199218749994],[75.25410156250001,32.14033203125],[75.13876953125,32.104785156249996],[75.07148437500001,32.08935546875],[74.73945312500001,31.948828125],[74.6357421875,31.88974609375],[74.55556640625002,31.818554687499997],[74.5259765625,31.76513671875],[74.50996093750001,31.712939453124996],[74.58183593750002,31.52392578125],[74.59394531250001,31.465380859374996],[74.53496093750002,31.261376953124994],[74.51767578125,31.185595703124996],[74.6103515625,31.112841796874996],[74.62578125000002,31.06875],[74.6328125,31.03466796875],[74.509765625,30.959667968749997],[74.38037109375,30.893408203125],[74.33935546875,30.8935546875],[74.00898437500001,30.519677734374994],[73.89931640625002,30.435351562499996],[73.88271484375002,30.3521484375],[73.92460937500002,30.28164062499999],[73.93339843750002,30.222070312499994],[73.88652343750002,30.162011718749994],[73.8091796875,30.093359375],[73.38164062500002,29.934375],[72.9033203125,29.028759765624997],[72.34189453125,28.751904296874997],[72.2919921875,28.697265625],[72.128515625,28.346337890624994],[71.94804687500002,28.177294921874996],[71.88886718750001,28.0474609375],[71.87031250000001,27.9625],[71.54296875,27.869873046875],[71.18476562500001,27.831640625],[70.87490234375002,27.714453125],[70.79794921875,27.709619140624994],[70.69160156250001,27.768994140624997],[70.62910156250001,27.937451171874997],[70.40371093750002,28.025048828124994],[70.24433593750001,27.934130859374996],[70.1939453125,27.894873046875],[70.14453125,27.849023437499994],[70.0498046875,27.694726562499994],[69.89628906250002,27.4736328125],[69.56796875,27.174609375],[69.47001953125002,26.804443359375],[70.11464843750002,26.548046875],[70.14921875000002,26.347558593749994],[70.1001953125,25.910058593749994],[70.2646484375,25.70654296875],[70.3251953125,25.685742187499997],[70.44853515625002,25.681347656249997],[70.505859375,25.685302734375],[70.56953125000001,25.705957031249994],[70.6484375,25.666943359374997],[70.65205078125001,25.422900390625003],[70.87773437500002,25.06298828125],[70.95087890625001,24.8916015625],[71.02070312500001,24.75766601562499],[71.0478515625,24.687744140625],[71.00234375000002,24.65390625],[70.97636718750002,24.61875],[70.96982421875,24.571875],[71.04531250000002,24.429980468750003],[71.04404296875,24.400097656249997],[70.98281250000002,24.361035156249997],[70.928125,24.362353515625003],[70.88623046875,24.34375],[70.80507812500002,24.261962890625],[70.76728515625001,24.245410156250003],[70.71630859375,24.237988281249997],[70.65947265625002,24.24609375],[70.57929687500001,24.279052734375],[70.55585937500001,24.331103515625003],[70.5650390625,24.385791015625003],[70.54677734375002,24.41831054687499],[70.2890625,24.35629882812499],[70.0982421875,24.2875],[69.80517578125,24.165234375],[69.71621093750002,24.172607421875],[69.63417968750002,24.22519531249999],[69.5591796875,24.273095703124994],[69.44345703125,24.275390625],[69.23505859375001,24.268261718749997],[69.11953125000002,24.26865234374999],[69.05156250000002,24.286328125],[68.98457031250001,24.273095703124994],[68.90078125000002,24.292431640624997],[68.86347656250001,24.266503906249994],[68.82832031250001,24.26401367187499],[68.78115234375002,24.313720703125],[68.75898437500001,24.30722656249999],[68.73964843750002,24.2919921875],[68.728125,24.265625],[68.72412109375,23.96469726562499],[68.48867187500002,23.967236328124997],[68.38125,23.950878906249997],[68.28251953125002,23.927978515625],[68.1650390625,23.857324218749994],[68.11552734375002,23.753369140624997],[67.8599609375,23.90268554687499],[67.66845703125,23.810986328124997],[67.309375,24.1748046875],[67.171484375,24.756103515625],[66.70302734375002,24.8609375],[66.69863281250002,25.226318359375],[66.32421875,25.601806640625],[66.13115234375002,25.49326171874999],[66.46767578125002,25.4453125],[64.77666015625002,25.307324218749997],[64.65898437500002,25.18408203125],[64.059375,25.40292968749999],[63.556640625,25.353173828124994],[63.49140625000001,25.210839843749994],[61.56689453125,25.186328125],[61.587890625,25.20234375],[61.61542968750001,25.2861328125],[61.64013671875,25.584619140624994],[61.67138671875,25.6923828125],[61.66181640625001,25.751269531250003],[61.66865234375001,25.768994140624997],[61.73769531250002,25.82109375],[61.75439453125,25.84335937499999],[61.78076171875,25.995849609375],[61.80996093750002,26.165283203125],[61.842382812500006,26.225927734375],[62.1259765625,26.368994140625],[62.239355468750006,26.35703125],[62.31230468750002,26.490869140624994],[63.168066406250006,26.665576171874996],[63.186132812500006,26.837597656249997],[63.24160156250002,26.86474609375],[63.25039062500002,26.879248046875],[63.24208984375002,27.077685546874996],[63.30517578125,27.124560546874996],[63.30156250000002,27.15146484375],[63.25625,27.207910156249994],[63.19609375000002,27.243945312499996],[63.16679687500002,27.252490234374996],[62.75273437500002,27.265625],[62.782324218750006,27.800537109375],[62.7625,28.202050781249994],[61.88984375000001,28.546533203124994],[61.15214843750002,29.542724609375],[61.0341796875,29.663427734375],[60.843359375,29.858691406249996],[61.22441406250002,29.749414062499994],[62.0009765625,29.530419921874994],[62.4765625,29.408349609374994],[63.56757812500001,29.497998046874997],[64.09873046875,29.391943359375],[64.39375,29.544335937499994],[65.09550781250002,29.559472656249994],[66.23125,29.86572265625],[66.346875,30.802783203124996],[66.82929687500001,31.263671875],[67.45283203125001,31.234619140625],[67.737890625,31.343945312499997],[67.57822265625,31.506494140624994],[68.16103515625002,31.802978515625],[68.59765625,31.802978515625],[68.86894531250002,31.634228515624997],[69.279296875,31.936816406249996],[69.24140625000001,32.433544921875],[69.5015625,33.020068359374996],[70.26113281250002,33.289013671875],[69.8896484375,34.007275390625],[70.65400390625001,33.952294921874994],[71.05156250000002,34.049707031249994],[71.095703125,34.369433593749996],[70.965625,34.53037109375],[71.62050781250002,35.183007812499994],[71.57197265625001,35.546826171875],[71.18505859375,36.04208984375],[71.23291015625,36.12177734375],[72.24980468750002,36.734716796875],[73.08961802927895,36.86435907947333]]]},"properties":{"name":"Pakistan","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-81.60327148437497,7.332812499999989],[-81.85205078125003,7.453320312500026],[-81.812158203125,7.59238281250002],[-81.72875976562494,7.62119140625002],[-81.60327148437497,7.332812499999989]]],[[[-78.89833984375002,8.27426757812502],[-78.960595703125,8.435839843749989],[-78.88325195312495,8.460253906249989],[-78.89833984375002,8.27426757812502]]],[[[-77.37421874999993,8.65830078125002],[-77.47851562499994,8.498437500000037],[-77.19599609374995,7.972460937500003],[-77.53828124999995,7.56625976562502],[-77.76191406249995,7.698828125000034],[-77.90117187499999,7.229345703125048],[-78.42158203124995,8.060986328125011],[-78.28735351562497,8.091796874999972],[-78.14189453125002,8.386083984374977],[-77.76054687499993,8.133251953124983],[-78.09946289062498,8.496972656250009],[-78.22304687500002,8.396630859374994],[-78.39921874999993,8.505664062500003],[-78.40986328124998,8.35532226562502],[-78.51406249999997,8.628173828125],[-79.08637695312495,8.997167968750034],[-79.50708007812494,8.97006835937502],[-79.68745117187493,8.850976562500009],[-79.81591796875,8.639208984375031],[-79.75043945312498,8.595507812500017],[-80.458984375,8.213867187499972],[-80.45810546875,8.077050781249994],[-80.01123046875,7.500048828125031],[-80.66669921874995,7.225683593750006],[-80.90122070312503,7.277148437500017],[-81.06386718749994,7.89975585937502],[-81.26840820312495,7.625488281250014],[-81.50415039062503,7.721191406249972],[-81.72763671875,8.137548828124977],[-82.15986328124995,8.19482421875],[-82.23544921874998,8.311035156250057],[-82.67954101562503,8.321972656249969],[-82.86611328124994,8.246337890625014],[-82.87934570312498,8.07065429687502],[-83.02734375,8.337744140624991],[-82.86162109374999,8.453515625000037],[-82.84477539062493,8.489355468749963],[-82.85571289062494,8.635302734375031],[-82.91704101562502,8.740332031250034],[-82.88198242187497,8.805322265625037],[-82.72783203125002,8.916064453125031],[-82.78305664062498,8.990283203124974],[-82.88134765625003,9.055859375000011],[-82.94033203124997,9.060107421874989],[-82.93984374999994,9.449169921875026],[-82.92504882812494,9.469042968749989],[-82.88896484374999,9.481005859375017],[-82.86015625,9.511474609375014],[-82.84399414062497,9.570800781250014],[-82.801025390625,9.591796875000028],[-82.64409179687502,9.505859375000028],[-82.56357421875003,9.576660156249972],[-82.50034179687503,9.523242187500017],[-82.37080078124993,9.428564453124991],[-82.33974609375,9.209179687499983],[-82.18813476562502,9.191748046874977],[-82.24418945312499,9.031494140625014],[-82.07788085937503,8.93486328124996],[-81.78022460937495,8.957226562499983],[-81.89448242187495,9.140429687500003],[-81.35478515624996,8.78056640624996],[-80.83867187499999,8.887207031250014],[-80.12709960937497,9.20991210937504],[-79.57729492187497,9.597851562500026],[-78.08276367187494,9.236279296874997],[-77.37421874999993,8.65830078125002]]]]},"properties":{"name":"Panama","childNum":3}},{"geometry":{"type":"Polygon","coordinates":[[[-73.137353515625,-6.4658203125],[-73.75810546874999,-6.90576171875],[-73.79301757812499,-7.135058593750003],[-73.758203125,-7.172753906250009],[-73.72041015625,-7.309277343750011],[-73.964306640625,-7.37890625],[-73.95849609375,-7.506640625],[-73.98173828124999,-7.535742187500006],[-74.00205078124999,-7.556054687500009],[-73.98173828124999,-7.585058593750006],[-73.946875,-7.611230468750009],[-73.89462890624999,-7.65478515625],[-73.82207031249999,-7.738964843750011],[-73.76689453124999,-7.753515625],[-73.72041015625,-7.782519531250003],[-73.73203125,-7.875390625],[-73.54912109374999,-8.345800781250006],[-73.39814453125,-8.458984375],[-73.36040039062499,-8.479296875],[-73.351708984375,-8.51416015625],[-73.35673828124999,-8.566992187500006],[-73.30244140625,-8.654003906250011],[-73.203125,-8.719335937500006],[-73.0705078125,-8.8828125],[-72.9740234375,-8.9931640625],[-72.970361328125,-9.1201171875],[-73.08984375,-9.265722656250006],[-73.209423828125,-9.411425781250003],[-72.379052734375,-9.51015625],[-72.181591796875,-10.003710937500003],[-71.33940429687499,-9.988574218750003],[-71.11528320312499,-9.852441406250009],[-71.041748046875,-9.81875],[-70.6369140625,-9.478222656250011],[-70.60791015625,-9.463671875],[-70.54111328124999,-9.4375],[-70.57016601562499,-9.48984375],[-70.592236328125,-9.54345703125],[-70.59916992187499,-9.620507812500009],[-70.642333984375,-11.01025390625],[-70.59653320312499,-10.976855468750003],[-70.53325195312499,-10.946875],[-70.45087890625,-11.024804687500009],[-70.39228515625,-11.05859375],[-70.3419921875,-11.066699218750003],[-70.29038085937499,-11.064257812500003],[-70.22006835937499,-11.04765625],[-70.06630859375,-10.982421875],[-69.9603515625,-10.929882812500011],[-69.839794921875,-10.933398437500003],[-69.6740234375,-10.9541015625],[-69.57861328125,-10.951757812500006],[-68.68525390625,-12.501953125],[-68.97861328124999,-12.880078125000011],[-69.07412109375,-13.682812500000011],[-68.87089843749999,-14.169726562500003],[-69.35947265624999,-14.7953125],[-69.37470703125,-14.962988281250006],[-69.17246093749999,-15.236621093750003],[-69.4208984375,-15.640625],[-69.21757812499999,-16.14912109375001],[-68.8427734375,-16.337890625],[-69.03291015625,-16.47597656250001],[-69.020703125,-16.6421875],[-69.62485351562499,-17.2001953125],[-69.645703125,-17.24853515625],[-69.521923828125,-17.388964843750003],[-69.510986328125,-17.46035156250001],[-69.51108398437499,-17.5048828125],[-69.5109375,-17.50605468750001],[-69.58642578125,-17.5732421875],[-69.684765625,-17.64980468750001],[-69.85209960937499,-17.70380859375001],[-69.80258789062499,-17.990234375],[-69.92636718749999,-18.2060546875],[-70.41826171874999,-18.34560546875001],[-71.33696289062499,-17.68251953125001],[-71.5322265625,-17.29433593750001],[-72.46767578125,-16.708105468750006],[-73.727685546875,-16.20166015625],[-75.104248046875,-15.411914062500003],[-75.533642578125,-14.89921875],[-75.93388671874999,-14.63359375],[-76.37646484375,-13.863085937500003],[-76.259228515625,-13.802832031250006],[-76.2236328125,-13.371191406250006],[-76.83212890624999,-12.348730468750006],[-77.152734375,-12.060351562500003],[-77.2203125,-11.663378906250003],[-77.633203125,-11.287792968750011],[-77.736083984375,-10.83671875],[-78.18559570312499,-10.089062500000011],[-78.76225585937499,-8.616992187500003],[-79.37724609374999,-7.835546875],[-79.99497070312499,-6.768945312500009],[-81.142041015625,-6.056738281250006],[-81.164306640625,-5.875292968750003],[-80.9306640625,-5.8408203125],[-80.88193359374999,-5.635058593750003],[-81.33662109375,-4.66953125],[-81.283203125,-4.322265625],[-80.503662109375,-3.49609375],[-80.324658203125,-3.387890625000011],[-80.24375,-3.576757812500006],[-80.19414062499999,-3.905859375],[-80.23051757812499,-3.924023437500011],[-80.26689453124999,-3.948828125],[-80.30327148437499,-4.005078125000011],[-80.43720703125,-3.978613281250006],[-80.49013671875,-4.010058593750003],[-80.510009765625,-4.069531250000011],[-80.49345703124999,-4.119140625],[-80.4884765625,-4.16552734375],[-80.453759765625,-4.205175781250006],[-80.35288085937499,-4.20849609375],[-80.44384765625,-4.335839843750009],[-80.4884765625,-4.393652343750006],[-80.47856445312499,-4.430078125],[-80.42416992187499,-4.46142578125],[-80.38349609375,-4.463671875],[-80.293359375,-4.416796875],[-80.1974609375,-4.31103515625],[-80.13955078125,-4.296093750000011],[-80.06352539062499,-4.327539062500009],[-79.962890625,-4.390332031250011],[-79.8451171875,-4.445898437500006],[-79.797265625,-4.476367187500003],[-79.71098632812499,-4.467578125],[-79.63852539062499,-4.454882812500003],[-79.57768554687499,-4.500585937500006],[-79.51616210937499,-4.539160156250006],[-79.501904296875,-4.670605468750011],[-79.45576171875,-4.766210937500006],[-79.3994140625,-4.840039062500011],[-79.33095703125,-4.927832031250006],[-79.26811523437499,-4.957617187500006],[-79.186669921875,-4.958203125000011],[-79.07626953124999,-4.990625],[-79.03330078124999,-4.969140625],[-78.995263671875,-4.908007812500003],[-78.97539062499999,-4.873242187500011],[-78.919189453125,-4.8583984375],[-78.92578125,-4.770703125000011],[-78.9076171875,-4.714453125],[-78.8615234375,-4.6650390625],[-78.68603515625,-4.562402343750009],[-78.64799804687499,-4.248144531250006],[-78.345361328125,-3.397363281250009],[-78.240380859375,-3.472558593750009],[-77.860595703125,-2.981640625000011],[-76.6791015625,-2.562597656250006],[-76.089794921875,-2.133105468750003],[-75.570556640625,-1.53125],[-75.42041015625,-0.962207031250003],[-75.40805664062499,-0.92431640625],[-75.24960937499999,-0.951855468750011],[-75.259375,-0.590136718750003],[-75.42470703125,-0.408886718750011],[-75.49106445312499,-0.248339843750003],[-75.56059570312499,-0.200097656250009],[-75.63203125,-0.157617187500009],[-75.62626953124999,-0.122851562500003],[-75.340478515625,-0.1421875],[-75.13837890625,-0.050488281250011],[-74.8017578125,-0.200097656250009],[-74.78046875,-0.24453125],[-74.75537109375,-0.298632812500003],[-74.691650390625,-0.335253906250003],[-74.616357421875,-0.370019531250009],[-74.555078125,-0.429882812500011],[-74.5138671875,-0.470117187500009],[-74.46518554687499,-0.517675781250006],[-74.41787109375,-0.580664062500006],[-74.334423828125,-0.850878906250003],[-74.28388671875,-0.927832031250006],[-74.24638671874999,-0.970605468750009],[-74.05439453125,-1.028613281250003],[-73.98681640625,-1.09814453125],[-73.926953125,-1.125195312500011],[-73.86318359375,-1.196679687500009],[-73.664306640625,-1.248828125],[-73.4962890625,-1.693066406250011],[-73.19697265625,-1.830273437500011],[-73.1544921875,-2.278222656250009],[-72.9896484375,-2.339746093750009],[-72.94111328125,-2.39404296875],[-72.21845703125,-2.400488281250006],[-71.98427734375,-2.3265625],[-71.93247070312499,-2.288671875],[-71.86728515624999,-2.227734375000011],[-71.802734375,-2.166308593750003],[-71.75253906249999,-2.152734375],[-71.55947265625,-2.22421875],[-71.39697265625,-2.334082031250006],[-71.19638671874999,-2.313085937500006],[-71.11337890624999,-2.245410156250003],[-71.027294921875,-2.225781250000011],[-70.96855468749999,-2.206835937500003],[-70.70537109374999,-2.341992187500011],[-70.64799804687499,-2.40576171875],[-70.57587890625,-2.418261718750003],[-70.29462890625,-2.552539062500003],[-70.24443359374999,-2.606542968750006],[-70.16474609375,-2.639843750000011],[-70.095849609375,-2.658203125],[-70.735107421875,-3.781542968750003],[-70.5296875,-3.866406250000011],[-70.48583984375,-3.869335937500011],[-70.42109375,-3.849609375],[-70.37919921874999,-3.81875],[-70.339501953125,-3.814355468750009],[-70.2984375,-3.84423828125],[-70.24028320312499,-3.882714843750009],[-70.16752929687499,-4.050195312500009],[-70.0171875,-4.162011718750009],[-69.96591796874999,-4.2359375],[-69.97202148437499,-4.301171875],[-70.00395507812499,-4.327246093750006],[-70.05332031249999,-4.333105468750006],[-70.12880859375,-4.28662109375],[-70.23916015625,-4.301171875],[-70.31689453125,-4.246972656250009],[-70.34365234375,-4.193652343750003],[-70.40463867187499,-4.150097656250011],[-70.5306640625,-4.167578125],[-70.72158203125,-4.158886718750011],[-70.79951171875,-4.17333984375],[-70.97368164062499,-4.350488281250009],[-71.8447265625,-4.50439453125],[-72.256787109375,-4.748925781250009],[-72.35283203124999,-4.786035156250009],[-72.468994140625,-4.901269531250009],[-72.608349609375,-5.009570312500003],[-72.69873046875,-5.0671875],[-72.83193359375,-5.09375],[-72.88706054687499,-5.122753906250011],[-72.9798828125,-5.634863281250006],[-73.16289062499999,-5.933398437500003],[-73.209375,-6.028710937500009],[-73.235546875,-6.0984375],[-73.137353515625,-6.4658203125]]]},"properties":{"name":"Peru","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[120.250390625,5.256591796875043],[119.82148437500004,5.06953125000004],[120.1652343750001,5.332421875000037],[120.250390625,5.256591796875043]]],[[[121.159375,6.075634765625011],[121.41103515625005,5.939843749999966],[121.29443359374997,5.869970703125034],[120.8763671875,5.95263671875],[121.159375,6.075634765625011]]],[[[122.09287109375012,6.428320312500006],[121.95917968750004,6.415820312500045],[121.83203125000003,6.664062499999986],[122.0583007812501,6.740722656249972],[122.32353515625002,6.602246093750011],[122.09287109375012,6.428320312500006]]],[[[122.93710937500006,7.409130859374983],[122.80468750000003,7.315966796875017],[122.82216796875,7.428466796875014],[122.93710937500006,7.409130859374983]]],[[[117.07988281250007,7.883398437499977],[117.02832031249997,7.807519531249966],[116.96953125000007,7.894921875],[116.9935546875,8.050537109375014],[117.07705078125,8.069140624999974],[117.07988281250007,7.883398437499977]]],[[[117.35527343750002,8.21464843749996],[117.28701171875,8.191015625000034],[117.28085937500006,8.314990234374974],[117.35527343750002,8.21464843749996]]],[[[124.80664062500003,9.142626953125003],[124.66582031250002,9.132324218750043],[124.65332031250003,9.225830078125],[124.80664062500003,9.142626953125003]]],[[[123.69765625000005,9.237304687500028],[123.61445312500004,9.103320312499989],[123.49345703125002,9.192089843750054],[123.69765625000005,9.237304687500028]]],[[[126.00595703125006,9.320947265625009],[126.19335937499997,9.276708984374963],[126.30458984375,8.952050781249994],[126.13955078125005,8.59565429687504],[126.36533203125012,8.483886718750014],[126.45869140625004,8.20283203125004],[126.43535156250002,7.832812499999974],[126.57011718750002,7.677246093749986],[126.58154296875003,7.247753906249969],[126.1920898437501,6.852539062500014],[126.18935546875,6.309667968749991],[125.82441406250004,7.333300781249989],[125.68925781250007,7.263037109374977],[125.38066406250007,6.689941406250014],[125.58847656250012,6.465771484374997],[125.66796874999997,5.97866210937498],[125.34648437500002,5.598974609374977],[125.23154296875006,6.069531250000011],[124.92734375000006,5.875341796874977],[124.21279296875,6.233251953124977],[124.078125,6.404443359375037],[123.98525390625,6.993701171875003],[124.20664062500006,7.396435546874983],[123.66582031250002,7.817773437500023],[123.49306640625,7.80791015624996],[123.39091796875007,7.407519531250017],[123.09667968749997,7.700439453125],[122.8429687500001,7.529296875000043],[122.79179687500002,7.72246093749996],[122.61621093749997,7.763134765624983],[122.14248046875,6.949658203124997],[121.96425781250005,6.96821289062504],[121.92460937500002,7.199511718750003],[122.24335937500004,7.945117187500031],[122.91113281250003,8.156445312499997],[123.05058593750002,8.433935546875048],[123.43457031249997,8.70332031250004],[123.84921875000006,8.432714843749977],[123.79941406250006,8.049121093749989],[124.19765625,8.229541015624974],[124.40488281250006,8.599853515625014],[124.7311523437501,8.562988281250043],[124.86894531250002,8.972265625000034],[125.141015625,8.86875],[125.20966796875004,9.027148437500017],[125.49873046875004,9.014746093749977],[125.47128906250006,9.756787109374983],[126.00595703125006,9.320947265625009]]],[[[126.059375,9.766210937500034],[125.99121093750003,9.838525390625023],[126.07382812500006,10.059228515625051],[126.1725585937501,9.79995117187498],[126.059375,9.766210937500034]]],[[[124.59384765625006,9.787207031249963],[124.1224609375,9.599316406249969],[123.93564453125012,9.623974609375011],[123.81718750000002,9.817382812499986],[124.17285156250003,10.135205078124983],[124.33574218750002,10.159912109375043],[124.57714843749997,10.026708984374991],[124.59384765625006,9.787207031249963]]],[[[125.69023437500007,9.914453125000037],[125.49482421875004,10.118701171875003],[125.66679687500002,10.440136718750026],[125.69023437500007,9.914453125000037]]],[[[119.91621093750004,10.485986328125037],[119.79316406250004,10.455273437499997],[119.85205078124997,10.64013671875],[120.00839843750012,10.570117187500031],[119.91621093750004,10.485986328125037]]],[[[122.64951171875012,10.472705078125003],[122.53837890625002,10.424951171875037],[122.5375,10.607568359375023],[122.70126953125006,10.740625],[122.64951171875012,10.472705078125003]]],[[[123.13085937500003,9.064111328124994],[122.99472656250006,9.058837890624986],[122.8666015625,9.319824218750043],[122.5625,9.482812500000037],[122.39951171875006,9.823046874999989],[122.47148437500007,9.961523437500034],[122.85556640625006,10.0869140625],[122.81699218750012,10.503808593750023],[122.98330078125,10.886621093750037],[123.25664062500007,10.99394531249996],[123.51064453125005,10.923046875],[123.5675781250001,10.780761718750057],[123.16201171875,9.864257812500028],[123.1498046875,9.606152343750026],[123.32050781250004,9.27294921875],[123.13085937500003,9.064111328124994]]],[[[123.37031250000004,9.449609375000023],[123.38623046874997,9.967089843750017],[124.03886718750002,11.273535156249991],[124.00498046875012,10.40009765625004],[123.70048828125007,10.128320312500009],[123.37031250000004,9.449609375000023]]],[[[123.75703125000004,11.28330078125002],[123.815625,11.15073242187502],[123.73671875,11.151464843749991],[123.75703125000004,11.28330078125002]]],[[[117.31113281250012,8.439599609375051],[117.21855468750007,8.367285156249963],[117.34990234375002,8.713574218749997],[119.22382812500004,10.477294921875043],[119.30566406250003,10.9736328125],[119.55332031250012,11.31352539062496],[119.52666015625002,10.953173828125003],[119.68691406250005,10.500341796875034],[119.36933593750004,10.327294921875037],[119.19150390625012,10.061083984374989],[118.78212890625005,9.91611328125002],[118.4349609375,9.256005859375009],[117.31113281250012,8.439599609375051]]],[[[119.86142578125006,11.52534179687504],[119.83066406250012,11.375683593750011],[119.72998046874997,11.431933593750017],[119.86142578125006,11.52534179687504]]],[[[124.574609375,11.343066406250031],[124.92998046875002,11.372851562499974],[125.02656250000004,11.21171875],[125.01318359374997,10.785693359374989],[125.26845703125005,10.307714843750048],[125.14257812499997,10.189453125000028],[124.9875,10.36757812499998],[125.02656250000004,10.033105468749966],[124.78076171874997,10.16806640625002],[124.78671875000012,10.781396484375009],[124.66269531250006,10.961962890625017],[124.44550781250004,10.923583984375014],[124.33066406250012,11.535205078125003],[124.574609375,11.343066406250031]]],[[[124.60839843750003,11.492187500000043],[124.48349609375006,11.485839843749986],[124.36035156250003,11.665917968749994],[124.5109375000001,11.687109375000048],[124.60839843750003,11.492187500000043]]],[[[122.49619140625006,11.615087890625034],[122.83808593750004,11.595654296874983],[122.89453125000003,11.44130859374998],[123.15830078125012,11.53554687499999],[123.11953125,11.286816406250026],[122.8029296875001,10.99003906249996],[122.76992187500005,10.823828125000034],[121.95400390625,10.444384765625003],[122.10351562499997,11.64291992187502],[121.91601562499997,11.854345703125006],[122.02919921875005,11.895410156250023],[122.49619140625006,11.615087890625034]]],[[[120.03876953125004,11.703320312499969],[119.94492187500006,11.690722656249989],[119.86093750000006,11.953955078124963],[120.03593750000002,11.917236328125028],[120.03876953125004,11.703320312499969]]],[[[120.1,12.167675781249983],[120.22822265625004,12.219824218750034],[120.31455078125012,12.012402343749969],[120.01054687500002,12.008251953125011],[119.88574218749997,12.299853515625003],[120.1,12.167675781249983]]],[[[122.65449218750004,12.309033203125011],[122.42294921875006,12.455078125],[122.60361328125006,12.49160156249998],[122.65449218750004,12.309033203125011]]],[[[125.23955078125002,12.527880859375003],[125.32021484375,12.321826171875031],[125.53564453125003,12.191406250000028],[125.49179687500006,11.594335937499977],[125.57353515625002,11.238232421874997],[125.73564453125002,11.049609375000017],[125.23339843749997,11.145068359375017],[125.03427734375012,11.341259765625026],[124.91699218750003,11.558398437500031],[124.99501953125,11.764941406250003],[124.445703125,12.152783203124969],[124.29472656250007,12.569335937500014],[125.23955078125002,12.527880859375003]]],[[[123.71660156250007,12.287353515625028],[124.04033203125002,11.966796875],[124.04550781250012,11.752441406250028],[123.47373046875006,12.21665039062502],[123.15781250000012,11.925634765624963],[123.23642578125012,12.583496093750057],[123.71660156250007,12.287353515625028]]],[[[122.09404296875002,12.354882812500023],[122.01396484375002,12.105615234375037],[121.9232421875,12.331298828125014],[122.00156250000006,12.598535156250009],[122.14501953124997,12.652636718750017],[122.09404296875002,12.354882812500023]]],[[[123.77539062499997,12.453906250000031],[123.77910156250002,12.366259765625031],[123.62148437500005,12.67490234375002],[123.77539062499997,12.453906250000031]]],[[[123.28183593750006,12.85341796874998],[123.36718750000003,12.70083007812498],[122.95751953124997,13.107177734374986],[123.28183593750006,12.85341796874998]]],[[[120.70439453125002,13.479492187499986],[121.20273437500006,13.432324218749969],[121.52275390625007,13.131201171874991],[121.540625,12.63818359375],[121.39433593750002,12.300585937499974],[121.23671875000005,12.218798828125003],[120.92216796875002,12.51162109374998],[120.65136718749997,13.169140625],[120.33847656250012,13.412353515624986],[120.40126953125,13.517041015624997],[120.70439453125002,13.479492187499986]]],[[[121.91484375000002,13.540332031250031],[122.11455078125002,13.463183593750031],[122.00488281249997,13.204980468750009],[121.82919921875006,13.328613281249972],[121.91484375000002,13.540332031250031]]],[[[124.35361328125006,13.632226562500009],[124.17539062500012,13.531542968750017],[124.03886718750002,13.663134765625003],[124.22490234375007,14.077587890624969],[124.41718750000004,13.871044921874997],[124.35361328125006,13.632226562500009]]],[[[122.03349609375002,15.005029296875009],[121.93300781250005,14.656054687500045],[121.83984374999997,15.038134765625003],[122.03349609375002,15.005029296875009]]],[[[121.10156249999997,18.615283203125017],[121.84560546875,18.29541015625003],[122.03847656250005,18.32792968749999],[122.14667968750004,18.486572265625],[122.26552734375005,18.458837890625034],[122.15234374999997,17.664404296875006],[122.51914062500012,17.124853515625034],[122.13515625000005,16.18481445312503],[121.59531250000012,15.933251953125023],[121.60703125000006,15.669824218749994],[121.39228515625004,15.324414062499969],[121.69541015625006,14.7373046875],[121.62792968749997,14.581152343749977],[121.76660156249997,14.16806640625002],[122.21171875000002,13.930175781250057],[122.2875,13.996191406250006],[122.19970703125003,14.148046875000034],[122.6271484375001,14.317529296875009],[122.93417968750012,14.18808593750002],[123.101953125,13.750244140624986],[123.29697265625012,13.836425781250043],[123.32031249999997,14.061669921875023],[123.81572265625002,13.837109375000011],[123.80625000000012,13.721728515625045],[123.54960937500007,13.645751953125014],[123.81923828125,13.269482421875011],[123.78515625000003,13.110546875000054],[124.14277343750004,13.035791015625009],[124.0597656250001,12.567089843749997],[123.87783203125005,12.689697265625014],[123.94853515625007,12.916406250000023],[123.31093750000005,13.044091796875009],[123.16328125000004,13.44174804687502],[122.59521484374997,13.90761718749998],[122.46796875000004,13.886718749999986],[122.66787109375,13.395361328124991],[122.59990234375002,13.194140625000031],[122.37656250000012,13.520605468750006],[121.77792968750006,13.93764648437498],[121.50107421875006,13.8421875],[121.344140625,13.649121093749997],[121.09550781250007,13.679492187500045],[120.84072265625,13.884716796875026],[120.637109375,13.804492187500031],[120.61679687500006,14.188037109375003],[120.9220703125001,14.493115234374983],[120.94130859375,14.645068359375031],[120.58369140625004,14.88125],[120.58867187500002,14.483105468749983],[120.43876953125002,14.453369140624972],[120.25078125000002,14.793310546875034],[120.08212890625012,14.851074218749986],[119.77255859375012,16.25512695312503],[119.83076171875004,16.326562500000023],[120.15976562500012,16.047656250000045],[120.36875,16.109570312499955],[120.35839843749997,17.63818359375],[120.59970703125012,18.507861328125074],[121.10156249999997,18.615283203125017]]],[[[121.92167968750007,18.89472656250001],[121.82519531250003,18.842724609374983],[121.94335937500003,19.010449218749955],[121.92167968750007,18.89472656250001]]],[[[121.52089843750005,19.361962890624994],[121.53125,19.271337890625006],[121.37460937500006,19.356298828124977],[121.52089843750005,19.361962890624994]]]]},"properties":{"name":"Philippines","childNum":37}},{"geometry":{"type":"Polygon","coordinates":[[[134.5954101562501,7.382031249999969],[134.51572265625012,7.525781250000037],[134.65117187500002,7.712109374999983],[134.5954101562501,7.382031249999969]]]},"properties":{"name":"Palau","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[153.53613281249997,-11.476171874999949],[153.75986328125006,-11.586328125],[153.55371093749997,-11.630566406249969],[153.28681640625004,-11.516992187500009],[153.20361328124997,-11.32412109374998],[153.53613281249997,-11.476171874999949]]],[[[154.28076171874997,-11.36142578125002],[154.12119140625006,-11.425683593749966],[154.02343750000003,-11.347949218750031],[154.28076171874997,-11.36142578125002]]],[[[150.89873046875002,-10.565332031250023],[150.88466796875,-10.643457031250037],[150.78574218750006,-10.603417968749966],[150.89873046875002,-10.565332031250023]]],[[[151.08095703125,-10.020117187499963],[151.29648437500012,-9.956738281250026],[151.230859375,-10.194726562500009],[150.95917968750004,-10.092578124999989],[150.77607421875004,-9.70908203125002],[151.08095703125,-10.020117187499963]]],[[[150.52841796875006,-9.34658203124998],[150.78867187500006,-9.417968749999957],[150.89404296875003,-9.667480468749986],[150.43623046875004,-9.624609374999949],[150.5084960937501,-9.536132812499957],[150.43730468750007,-9.359960937500034],[150.52841796875006,-9.34658203124998]]],[[[150.3454101562501,-9.493847656249955],[150.10976562500005,-9.361914062499991],[150.20830078125002,-9.206347656250003],[150.32011718750007,-9.264160156249972],[150.3454101562501,-9.493847656249955]]],[[[152.63095703125012,-8.959375],[152.95292968750007,-9.07011718749996],[152.96689453125006,-9.208984375000014],[152.51513671874997,-9.009863281250034],[152.63095703125012,-8.959375]]],[[[151.10683593750005,-8.733496093749949],[151.12412109375012,-8.804882812500011],[151.00498046875006,-8.523828124999952],[151.117578125,-8.41884765624998],[151.10683593750005,-8.733496093749949]]],[[[143.58681640625005,-8.481738281250003],[143.321875,-8.367578125],[143.5814453125,-8.390917968749974],[143.58681640625005,-8.481738281250003]]],[[[148.02578125,-5.826367187500011],[147.78105468750007,-5.627246093749946],[147.7946289062501,-5.492382812500011],[148.05478515625006,-5.61152343750004],[148.02578125,-5.826367187500011]]],[[[155.95761718750006,-6.686816406249989],[155.71933593750012,-6.862792968749957],[155.34404296875007,-6.721679687499986],[155.20214843750003,-6.3076171875],[154.75927734375003,-5.931347656249997],[154.72929687500002,-5.444433593750006],[155.09384765625006,-5.620214843750034],[155.46699218750004,-6.145117187500034],[155.82255859375002,-6.38046875000002],[155.95761718750006,-6.686816406249989]]],[[[147.17626953124997,-5.431933593749946],[147.00585937499997,-5.30703125],[147.1310546875001,-5.190820312500037],[147.17626953124997,-5.431933593749946]]],[[[154.64726562500002,-5.43271484375002],[154.54003906250003,-5.11083984375],[154.63261718750007,-5.013867187499955],[154.72714843750006,-5.218066406249989],[154.64726562500002,-5.43271484375002]]],[[[146.01933593750007,-4.726171874999963],[145.88359375000007,-4.66748046875],[145.9958007812501,-4.539257812499983],[146.01933593750007,-4.726171874999963]]],[[[151.915625,-4.296777343749966],[152.11718749999997,-4.212207031249974],[152.40566406250005,-4.340722656249952],[152.35117187500006,-4.82216796874998],[151.98369140625007,-5.07441406250004],[152.14296875,-5.357031249999963],[152.07705078125,-5.458300781249989],[151.86542968750004,-5.564843750000023],[151.51513671874997,-5.552343749999963],[151.22929687500002,-5.919921874999986],[150.47353515625,-6.263378906249969],[149.65253906250004,-6.290429687499966],[149.38232421874997,-6.078125],[149.0990234375,-6.116992187499989],[148.33720703125007,-5.669433593750014],[148.43203125,-5.471777343749991],[149.35888671875003,-5.583984375000014],[149.8314453125,-5.524121093749997],[149.96279296875,-5.447753906249972],[150.0900390625001,-5.011816406249977],[150.1703125,-5.070605468749974],[150.0724609375001,-5.309570312499986],[150.18310546874997,-5.523632812499983],[150.90029296875005,-5.447167968750037],[151.32656250000005,-4.96035156249998],[151.67119140625007,-4.88330078125],[151.59306640625007,-4.200781249999949],[151.915625,-4.296777343749966]]],[[[152.67060546875004,-3.13339843750002],[152.64619140625004,-3.221191406249957],[152.54326171875002,-3.095605468749952],[152.63876953125012,-3.042773437500031],[152.67060546875004,-3.13339843750002]]],[[[140.97617187500012,-9.11875],[140.97519531250006,-6.90537109375002],[140.86230468749997,-6.740039062499989],[140.975,-6.346093750000023],[140.97353515625,-2.803417968750026],[140.97343750000007,-2.609765625],[142.90517578125,-3.32070312499998],[143.50898437500004,-3.431152343750014],[144.06640625000003,-3.80517578125],[144.4777343750001,-3.82529296875002],[145.08779296875,-4.349121093749972],[145.33457031250012,-4.385253906249972],[145.7669921875,-4.823046874999989],[145.74521484375012,-5.402441406249977],[147.56669921875002,-6.056933593750003],[147.80205078125002,-6.31523437499996],[147.84550781250007,-6.662402343749989],[147.11914062499997,-6.721679687499986],[146.95361328124997,-6.834082031249963],[147.19003906250012,-7.378125],[148.12675781250007,-8.103613281249963],[148.246875,-8.554296875000034],[148.45117187499997,-8.694531250000011],[148.58310546875006,-9.051757812499957],[149.19833984375006,-9.03125],[149.26318359374997,-9.497851562499974],[150.01103515625007,-9.688183593750026],[149.76123046874997,-9.805859375000011],[149.87441406250005,-10.012988281250031],[150.84951171875,-10.236035156249997],[150.44609375000007,-10.30732421875004],[150.6471679687501,-10.517968749999966],[150.31992187500012,-10.654882812499963],[150.0167968750001,-10.577148437500028],[149.75410156250004,-10.353027343750028],[147.76865234375012,-10.070117187500031],[147.01718750000006,-9.38789062500004],[146.96376953125,-9.059570312499943],[146.63085937499997,-8.951171874999972],[146.03320312499997,-8.076367187500011],[144.97382812500004,-7.802148437500009],[144.86425781249997,-7.631542968749983],[144.50986328125006,-7.567382812499972],[144.14287109375007,-7.757226562500009],[143.65488281250012,-7.460351562500009],[143.94228515625005,-7.944238281250009],[143.8333984375,-8.029101562499974],[143.51816406250006,-8.000683593749955],[143.61376953125003,-8.200390624999969],[142.52412109375004,-8.32167968749998],[142.34746093750002,-8.167480468750014],[142.20683593750002,-8.195800781250014],[142.47480468750004,-8.369433593750031],[142.79794921875006,-8.345019531250031],[143.11181640624997,-8.474511718750037],[143.37724609375007,-8.762207031250028],[143.36621093750003,-8.961035156250034],[142.6471679687501,-9.327832031249969],[142.22958984375012,-9.169921874999957],[141.13320312500005,-9.221289062500034],[140.97617187500012,-9.11875]]],[[[152.96582031249997,-4.756347656249986],[152.89169921875006,-4.832421875000023],[152.73994140625004,-4.635839843750034],[152.66816406250004,-4.131835937500028],[152.27939453125006,-3.582421875],[151.06679687500005,-2.829003906249994],[150.74609374999997,-2.73886718750002],[150.8253906250001,-2.572949218749969],[152.03291015625004,-3.25136718749998],[153.01679687500004,-4.105664062500026],[153.1325195312501,-4.352441406250037],[152.96582031249997,-4.756347656249986]]],[[[150.43662109375012,-2.66181640625004],[150.16572265625004,-2.660253906249991],[149.96162109375004,-2.473828125000026],[150.22714843750006,-2.384179687499966],[150.42949218750007,-2.47041015625004],[150.43662109375012,-2.66181640625004]]],[[[147.06757812500004,-1.96015625],[147.43808593750012,-2.05898437499998],[147.20634765625007,-2.181933593749974],[146.54648437500012,-2.20859375],[146.65625,-1.97402343749998],[147.06757812500004,-1.96015625]]],[[[149.76542968750007,-1.553027343750017],[149.54589843749997,-1.471679687499957],[149.58095703125005,-1.353222656249983],[149.76542968750007,-1.553027343750017]]]]},"properties":{"name":"Papua New Guinea","childNum":21}},{"geometry":{"type":"Polygon","coordinates":[[[23.484667968750017,53.939794921875],[23.915429687500023,52.770263671875],[23.175097656250017,52.28662109375],[23.652441406250006,52.040380859375],[23.605273437500017,51.517919921875],[23.664453125000023,51.31005859375],[24.095800781250006,50.87275390625],[23.9970703125,50.809375],[24.089941406250006,50.53046875],[23.97265625,50.410058593749994],[23.711718750000017,50.37734375],[23.03632812500001,49.899072265624994],[22.706152343750006,49.606201171875],[22.6494140625,49.539013671875],[22.66064453125,49.483691406249996],[22.71992187500001,49.353808593749996],[22.732421875,49.295166015625],[22.705664062500006,49.171191406249996],[22.847070312500023,49.08125],[22.538671875,49.072705078125],[22.473046875000023,49.081298828125],[22.020117187500006,49.209521484374996],[21.6396484375,49.411962890625],[21.079394531250017,49.418261718749996],[20.868457031250017,49.314697265625],[20.36298828125001,49.38525390625],[20.0576171875,49.181298828124994],[19.756640625000017,49.204394531249996],[19.77392578125,49.37216796875],[19.44160156250001,49.597705078124996],[19.1494140625,49.4],[18.83222656250001,49.510791015624996],[18.562402343750023,49.879345703125],[18.0283203125,50.03525390625],[17.874804687500017,49.972265625],[17.627050781250006,50.11640625],[17.702246093750006,50.307177734374996],[17.41523437500001,50.254785156249994],[16.88007812500001,50.427050781249996],[16.989648437500023,50.2369140625],[16.63916015625,50.1021484375],[16.210351562500023,50.423730468749994],[16.419726562500017,50.573632812499994],[16.2822265625,50.655615234375],[16.007226562500023,50.611621093749996],[14.99375,51.01435546875],[14.98291015625,50.886572265625],[14.895800781250017,50.861376953124996],[14.809375,50.858984375],[14.814257812500017,50.871630859374996],[14.91748046875,51.008740234375],[14.9638671875,51.095117187499994],[14.935546875,51.435351562499996],[14.905957031250011,51.463330078125],[14.724707031250006,51.523876953125],[14.7109375,51.544921875],[14.738671875000023,51.6271484375],[14.601660156250006,51.832373046875],[14.752539062500006,52.081835937499996],[14.679882812500011,52.25],[14.615625,52.277636718749996],[14.573925781250011,52.31416015625],[14.554589843750023,52.359667968749996],[14.569726562500023,52.431103515625],[14.619433593750017,52.528515625],[14.514062500000023,52.64560546875],[14.253710937500017,52.782519531249996],[14.128613281250011,52.878222656249996],[14.138867187500011,52.932861328125],[14.293164062500011,53.0267578125],[14.368554687500023,53.10556640625],[14.410937500000017,53.199023437499996],[14.412304687500011,53.216748046875],[14.41455078125,53.283496093749996],[14.258886718750006,53.729638671875],[14.58349609375,53.63935546875],[14.558398437500017,53.823193359375],[14.21142578125,53.950341796875],[16.186328125000017,54.290380859375],[16.55976562500001,54.55380859375],[18.32343750000001,54.838183593749996],[18.75927734375,54.6845703125],[18.43623046875001,54.7447265625],[18.83642578125,54.369580078125],[19.604394531250023,54.4591796875],[20.20820312500001,54.420751953125],[22.16845703125,54.35986328125],[22.731835937500023,54.35009765625],[22.766210937500006,54.356787109375],[22.82373046875,54.395800781249996],[22.893945312500023,54.39052734375],[22.97675781250001,54.366357421875],[23.015527343750023,54.34833984375],[23.04218750000001,54.30419921875],[23.0875,54.299462890625],[23.170312500000023,54.2814453125],[23.282324218750006,54.24033203125],[23.3701171875,54.200488281249996],[23.45361328125,54.14345703125],[23.484667968750017,53.939794921875]]]},"properties":{"name":"Poland","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-65.42558593749999,18.105615234374994],[-65.57221679687493,18.137304687499977],[-65.29487304687501,18.133349609375045],[-65.42558593749999,18.105615234374994]]],[[[-66.12939453125003,18.444921875000034],[-65.62880859375,18.381396484375045],[-65.62084960937497,18.242333984374966],[-65.97080078124995,17.974365234375],[-67.196875,17.994189453125045],[-67.2640625,18.364599609375006],[-67.15864257812501,18.499218749999983],[-66.12939453125003,18.444921875000034]]]]},"properties":{"name":"Puerto Rico","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[130.52695312500012,42.535400390625],[130.68730468750007,42.30253906249999],[130.2357421875,42.183203125000034],[129.75634765624997,41.712255859375006],[129.70869140625004,40.857324218749994],[129.34111328125002,40.72631835937506],[128.51123046874997,40.130224609375006],[127.56816406250002,39.78198242187503],[127.39453125000003,39.207910156249966],[127.78613281250003,39.084130859374966],[128.37460937500012,38.6234375],[128.03896484375,38.30854492187498],[127.09033203125003,38.28388671875001],[126.63388671875012,37.78183593750006],[126.36992187500007,37.87836914062501],[126.11669921875003,37.74291992187503],[125.76914062500006,37.98535156250003],[125.35781250000005,37.72480468749998],[125.31074218750004,37.843505859375],[124.98876953124997,37.93144531249999],[125.2067382812501,38.08154296875],[124.69091796874997,38.12919921875002],[125.06738281250003,38.556738281250006],[125.55449218750002,38.68623046875001],[125.16884765625,38.80551757812506],[125.40966796875003,39.28837890625002],[125.36083984375003,39.52661132812497],[124.77529296875,39.75805664062506],[124.63828125000006,39.61508789062506],[124.36210937500002,40.004052734374994],[124.8893554687501,40.459814453125006],[125.98906250000002,40.904638671875034],[126.74306640625,41.724853515625],[126.95478515625004,41.76948242187501],[127.17968750000003,41.531347656250006],[128.14941406249997,41.38774414062496],[128.28925781250004,41.60742187500006],[128.04521484375007,41.9875],[128.92343750000006,42.038232421874966],[129.3136718750001,42.41357421874997],[129.69785156250012,42.448144531249994],[129.89824218750002,42.998144531250034],[130.24033203125006,42.891796874999955],[130.24667968750012,42.744824218749955],[130.52695312500012,42.535400390625]]]},"properties":{"name":"Dem. Rep. Korea","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-17.190869140624926,32.86860351562498],[-16.693261718749966,32.75800781250001],[-17.018261718749926,32.66279296874998],[-17.226025390624983,32.76684570312503],[-17.190869140624926,32.86860351562498]]],[[[-25.64897460937499,37.840917968750006],[-25.18193359374996,37.837890625],[-25.19072265624999,37.764355468749955],[-25.73447265624992,37.76289062500001],[-25.845898437499983,37.89404296875],[-25.64897460937499,37.840917968750006]]],[[[-28.14726562499996,38.45268554687502],[-28.064794921875034,38.412744140624966],[-28.454492187500023,38.40864257812504],[-28.54882812499997,38.51855468750003],[-28.14726562499996,38.45268554687502]]],[[[-28.641308593749983,38.525],[-28.842041015625,38.5984375],[-28.69775390625,38.638476562500045],[-28.641308593749983,38.525]]],[[[-27.07524414062496,38.643457031249994],[-27.38593750000001,38.765820312499955],[-27.127001953125017,38.78984375],[-27.07524414062496,38.643457031249994]]],[[[-31.137109374999937,39.40693359375001],[-31.282958984375,39.39409179687496],[-31.260839843750034,39.49677734375001],[-31.137109374999937,39.40693359375001]]],[[[-7.406152343749937,37.17944335937497],[-7.834130859374994,37.005712890625034],[-8.597656249999943,37.12133789062506],[-8.997802734375028,37.03227539062502],[-8.814160156249983,37.43081054687502],[-8.881103515624943,38.44667968750005],[-8.668310546874949,38.42431640625003],[-8.798876953124989,38.518164062500034],[-9.213281249999937,38.44809570312498],[-9.250390624999966,38.65673828125003],[-9.021484374999943,38.746875],[-8.79160156249992,39.07817382812502],[-9.13579101562496,38.74277343749998],[-9.35673828124996,38.697900390624994],[-9.479736328124972,38.79877929687501],[-9.374755859374972,39.338281249999966],[-8.837841796874926,40.11567382812498],[-8.684619140624989,40.75253906250006],[-8.755419921874932,41.69838867187502],[-8.887597656249937,41.76459960937501],[-8.777148437500017,41.941064453124994],[-8.266064453124983,42.13740234375001],[-8.152490234374937,41.81196289062498],[-7.40361328124996,41.833691406249955],[-7.147119140625023,41.98115234374998],[-6.61826171874992,41.9423828125],[-6.542187499999955,41.672509765624994],[-6.2125,41.53203125],[-6.928466796874972,41.009130859375006],[-6.8101562499999,40.343115234375034],[-7.032617187499966,40.16791992187498],[-6.896093749999949,40.02182617187506],[-6.975390624999932,39.79838867187502],[-7.117675781249972,39.681689453125045],[-7.53569335937496,39.66157226562501],[-6.997949218749994,39.05644531250002],[-7.343017578124943,38.45742187500002],[-7.106396484374983,38.181005859375006],[-6.957568359374932,38.18789062499999],[-7.44394531249992,37.72827148437497],[-7.406152343749937,37.17944335937497]]]]},"properties":{"name":"Portugal","childNum":7,"cp":[-8.7440694,39.9251454]}},{"geometry":{"type":"Polygon","coordinates":[[[-58.15976562499999,-20.164648437500006],[-58.13779296874999,-20.2373046875],[-58.12460937499999,-20.29345703125],[-58.09150390625,-20.33320312500001],[-58.05844726562499,-20.38613281250001],[-58.025390625,-20.415820312500003],[-58.00224609374999,-20.465429687500006],[-57.97905273437499,-20.657324218750006],[-57.91513671874999,-20.69033203125001],[-57.830224609374994,-20.99794921875001],[-57.94267578124999,-21.79833984375],[-57.95590820312499,-22.109179687500003],[-56.77519531249999,-22.261328125],[-56.44780273437499,-22.076171875],[-56.39487304687499,-22.09267578125001],[-56.35185546874999,-22.17861328125001],[-56.246044921875,-22.2646484375],[-56.18984375,-22.28115234375001],[-55.99140625,-22.28115234375001],[-55.84916992187499,-22.3076171875],[-55.75327148437499,-22.41015625],[-55.74663085937499,-22.5126953125],[-55.61767578125,-22.671484375],[-55.53828125,-23.58095703125001],[-55.518457031249994,-23.627246093750003],[-55.458886718749994,-23.68671875000001],[-55.4423828125,-23.792578125],[-55.4423828125,-23.865332031250006],[-55.415917968749994,-23.95136718750001],[-55.36630859374999,-23.991015625],[-55.28691406249999,-24.004296875],[-55.1943359375,-24.01748046875001],[-55.08188476562499,-23.99765625],[-54.982666015625,-23.97451171875001],[-54.62548828125,-23.8125],[-54.44023437499999,-23.90175781250001],[-54.37080078125,-23.97119140625],[-54.24179687499999,-24.047265625],[-54.281005859375,-24.30605468750001],[-54.43623046875,-25.12128906250001],[-54.47314453125,-25.22021484375],[-54.610546875,-25.432714843750006],[-54.615869140624994,-25.57607421875001],[-54.63193359374999,-26.00576171875001],[-54.677734375,-26.30878906250001],[-54.934472656249994,-26.70253906250001],[-55.1359375,-26.93115234375],[-55.426660156249994,-27.00927734375],[-55.450634765625,-27.068359375],[-55.496728515624994,-27.115332031250006],[-55.564892578125,-27.15],[-55.59726562499999,-27.207617187500006],[-55.59379882812499,-27.2880859375],[-55.63291015624999,-27.35712890625001],[-55.71464843749999,-27.41484375],[-55.789990234375,-27.41640625],[-55.95146484374999,-27.32568359375],[-56.1640625,-27.32148437500001],[-56.437158203124994,-27.553808593750006],[-58.16826171874999,-27.2734375],[-58.60483398437499,-27.31435546875001],[-58.641748046874994,-27.19609375],[-58.618603515625,-27.132128906250003],[-58.222070312499994,-26.65],[-58.18149414062499,-26.307421875],[-57.943115234375,-26.05292968750001],[-57.563134765624994,-25.473730468750006],[-57.821679687499994,-25.13642578125001],[-59.187255859375,-24.562304687500003],[-59.892480468749994,-24.093554687500003],[-60.83984375,-23.85810546875001],[-61.084716796875,-23.65644531250001],[-61.79853515625,-23.18203125],[-62.21416015624999,-22.612402343750006],[-62.372509765625,-22.43916015625001],[-62.54155273437499,-22.349609375],[-62.6259765625,-22.29042968750001],[-62.62568359375,-22.261523437500003],[-62.65097656249999,-22.233691406250003],[-62.27666015624999,-21.066015625],[-62.276318359375,-20.5625],[-61.7568359375,-19.6453125],[-60.00737304687499,-19.29755859375001],[-59.09052734375,-19.286230468750006],[-58.18017578125,-19.81787109375],[-58.15976562499999,-20.164648437500006]]]},"properties":{"name":"Paraguay","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[34.34833984375004,31.292919921874955],[34.2453125000001,31.208300781250045],[34.2125,31.292285156250017],[34.198144531249994,31.322607421875063],[34.47734375000002,31.584863281250023],[34.52412109375004,31.541650390624994],[34.5255859375001,31.52563476562503],[34.34833984375004,31.292919921874955]]],[[[34.88046875,31.3681640625],[34.950976562500074,31.60229492187503],[35.20371093750006,31.75],[35.1271484375001,31.816748046875006],[35.05322265625003,31.83793945312496],[34.983007812500006,31.816796875000023],[34.9611328125001,31.823339843750006],[34.95380859375004,31.84125976562504],[34.98974609374997,31.913281249999955],[34.955957031249994,32.1609375],[35.01054687500002,32.33818359375002],[35.06503906250006,32.46044921875006],[35.19326171875005,32.53442382812503],[35.303808593750006,32.512939453125],[35.38671875000003,32.493017578125034],[35.402636718750074,32.45063476562501],[35.484375,32.40166015624999],[35.5514648437501,32.39550781250006],[35.57207031250002,32.237890625],[35.450585937499994,31.479296875000017],[34.88046875,31.3681640625]]]]},"properties":{"name":"Palestine","childNum":2}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-149.321533203125,-17.690039062499963],[-149.177685546875,-17.736621093750045],[-149.18178710937497,-17.86230468749997],[-149.34111328125,-17.732421874999986],[-149.57890624999993,-17.734960937499963],[-149.635009765625,-17.564257812500003],[-149.37919921874993,-17.522363281249994],[-149.321533203125,-17.690039062499963]]],[[[-143.44057617187497,-16.619726562499963],[-143.38618164062498,-16.668847656250023],[-143.55068359375002,-16.62109374999997],[-143.44057617187497,-16.619726562499963]]],[[[-139.02431640624997,-9.695214843750037],[-138.82734375,-9.74160156249998],[-139.13408203124996,-9.829492187500037],[-139.02431640624997,-9.695214843750037]]],[[[-140.075634765625,-9.425976562499983],[-140.14438476562498,-9.359375],[-140.07094726562497,-9.328125],[-140.075634765625,-9.425976562499983]]],[[[-140.07260742187503,-8.910449218750031],[-140.21743164062497,-8.929687499999957],[-140.24003906249993,-8.79755859375004],[-140.057666015625,-8.801464843750026],[-140.07260742187503,-8.910449218750031]]]]},"properties":{"name":"Fr. Polynesia","childNum":5}},{"geometry":{"type":"Polygon","coordinates":[[[51.26796875000002,24.607226562500003],[51.17802734375002,24.58671875],[51.093359375,24.564648437499997],[51.02275390625002,24.565234375],[50.96601562500001,24.573925781249997],[50.928320312500006,24.595117187499994],[50.85566406250001,24.679638671874997],[50.80439453125001,24.789257812499997],[50.8359375,24.850390625],[50.846777343750006,24.888574218749994],[50.75458984375001,25.39926757812499],[51.003125,25.9814453125],[51.262304687500006,26.153271484374997],[51.543066406250006,25.902392578125003],[51.4853515625,25.524707031250003],[51.60888671875,25.052880859374994],[51.42792968750001,24.668261718750003],[51.26796875000002,24.607226562500003]]]},"properties":{"name":"Qatar","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[28.2125,45.450439453125],[28.317675781250017,45.347119140625],[28.451269531250006,45.2921875],[28.78828125000001,45.240966796875],[28.78173828125,45.309863281249996],[28.894335937500017,45.289941406249994],[29.223535156250023,45.4029296875],[29.403710937500023,45.419677734375],[29.567675781250017,45.37080078125],[29.705859375000017,45.259912109374994],[29.557519531250023,44.843408203124994],[29.048242187500023,44.757568359375],[29.0953125,44.975048828125],[28.891503906250023,44.91865234375],[28.585351562500023,43.742236328124996],[28.221972656250017,43.772851562499994],[27.88427734375,43.987353515624996],[27.425390625,44.0205078125],[27.0869140625,44.167382812499994],[26.2158203125,44.007275390625],[25.4970703125,43.670800781249994],[22.919042968750006,43.83447265625],[22.868261718750006,43.947900390624994],[23.02851562500001,44.077978515625],[22.705078125,44.23779296875],[22.687890625000023,44.248291015625],[22.494531250000023,44.435449218749994],[22.554003906250017,44.540332031249996],[22.6201171875,44.562353515625],[22.70078125,44.555517578125],[22.734375,44.569921875],[22.72089843750001,44.605517578124996],[22.64208984375,44.6509765625],[22.49765625,44.70625],[22.350683593750006,44.676123046875],[22.200976562500017,44.560693359374994],[22.093066406250017,44.541943359375],[21.909277343750006,44.66611328125],[21.636132812500023,44.71044921875],[21.52314453125001,44.790087890624996],[21.36005859375001,44.82666015625],[21.35791015625,44.86181640625],[21.384375,44.870068359375],[21.442187500000017,44.873388671875],[21.519921875000023,44.880810546875],[21.532324218750006,44.900683593749996],[21.35703125,44.990771484374996],[21.465429687500006,45.171875],[21.431445312500017,45.192529296874994],[20.794042968750006,45.46787109375],[20.775,45.749804687499996],[20.760156250000023,45.758105468749996],[20.746875,45.748974609375],[20.727832031250017,45.73740234375],[20.709277343750017,45.735253906249994],[20.652734375000023,45.77939453125],[20.581152343750006,45.869482421875],[20.35859375000001,45.975488281249994],[20.241796875,46.10859375],[20.28095703125001,46.1330078125],[20.508105468750017,46.166943359375],[20.613671875000023,46.13349609375],[20.76025390625,46.246240234374994],[21.121679687500006,46.282421875],[21.99970703125001,47.505029296874994],[22.87666015625001,47.947265625],[23.054785156250006,48.00654296875],[23.139453125000017,48.08740234375],[23.20263671875,48.084521484374996],[23.408203125,47.989990234375],[23.628710937500017,47.995849609375],[24.578906250000017,47.931054687499994],[24.979101562500006,47.72412109375],[25.464257812500023,47.910791015624994],[25.689257812500017,47.932470703125],[25.90869140625,47.967578125],[26.162695312500006,47.992529296875],[26.236230468750023,48.064355468749994],[26.276953125,48.113232421875],[26.3056640625,48.203759765624994],[26.4423828125,48.22998046875],[26.618945312500017,48.25986328125],[26.980761718750017,48.155029296875],[27.614062500000017,47.34052734375],[28.07177734375,46.978417968749994],[28.23945312500001,46.6408203125],[28.07470703125,45.598974609375],[28.2125,45.450439453125]]]},"properties":{"name":"Romania","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[146.71396484375012,43.743798828124994],[146.62197265625,43.81298828125006],[146.88408203125002,43.82915039062496],[146.71396484375012,43.743798828124994]]],[[[146.20761718750006,44.49765625],[146.5677734375,44.44042968749997],[145.91406249999997,44.10371093750004],[145.58681640625,43.84511718750002],[145.5558593750001,43.66459960937502],[145.46171875000007,43.870898437500045],[146.20761718750006,44.49765625]]],[[[148.59951171875,45.317626953125],[147.91376953125004,44.99038085937502],[147.65781250000012,44.97714843749998],[146.89746093750003,44.404296875],[147.24658203124997,44.856054687500006],[147.88554687500007,45.22563476562499],[147.9240234375001,45.38330078125006],[148.05605468750005,45.26210937500005],[148.32421874999997,45.28242187500001],[148.8122070312501,45.510009765625],[148.83710937500004,45.36269531250002],[148.59951171875,45.317626953125]]],[[[149.68769531250004,45.64204101562501],[149.44707031250002,45.593359375000034],[149.9623046875,46.02192382812504],[150.553125,46.208544921875045],[149.68769531250004,45.64204101562501]]],[[[152.00205078125006,46.89716796874998],[151.72343750000007,46.82880859375001],[152.28886718750007,47.1421875],[152.00205078125006,46.89716796874998]]],[[[154.81044921875005,49.31201171875],[154.61093750000006,49.29404296874998],[154.82490234375004,49.64692382812501],[154.81044921875005,49.31201171875]]],[[[155.9210937500001,50.30219726562501],[155.39716796875004,50.04125976562497],[155.24306640625,50.09462890625002],[155.21835937500012,50.29785156250003],[155.68017578124997,50.400732421875034],[156.096875,50.771875],[155.9210937500001,50.30219726562501]]],[[[156.40507812500002,50.65761718750005],[156.16796874999997,50.73188476562498],[156.37646484374997,50.86210937499996],[156.4875,50.84296874999998],[156.40507812500002,50.65761718750005]]],[[[142.76103515625002,54.393945312499966],[143.32470703125003,52.96308593749998],[143.15556640625002,52.08374023437497],[143.29951171875004,51.632373046875045],[143.81601562500006,50.28261718750002],[144.71376953125,48.64028320312502],[144.04873046875,49.249169921874994],[143.73232421875,49.31201171875],[143.10498046875003,49.198828125000034],[142.57421874999997,48.07216796875002],[142.55693359375002,47.737890625000034],[143.21767578125005,46.79487304687504],[143.48564453125002,46.752050781250006],[143.58066406250012,46.360693359375034],[143.43164062500003,46.02866210937498],[143.28232421875006,46.55898437500002],[142.57802734375005,46.700781250000034],[142.07714843749997,45.91704101562499],[141.83037109375002,46.451074218749966],[142.03867187500012,47.140283203124966],[141.9640625000001,47.58745117187502],[142.18173828125012,48.01337890625001],[141.86630859375006,48.750097656250006],[142.1422851562501,49.56914062499999],[142.06601562500006,50.630468750000034],[142.20673828125004,51.22255859375002],[141.72236328125004,51.73632812499997],[141.66083984375004,52.27294921874997],[141.85556640625012,52.79350585937499],[141.82353515625007,53.33950195312502],[142.1419921875,53.49560546875003],[142.52617187500002,53.44746093749998],[142.70595703125,53.89570312499998],[142.33496093749997,54.28071289062501],[142.76103515625002,54.393945312499966]]],[[[137.17861328125005,55.100439453125034],[137.05527343750006,54.9267578125],[136.71464843750002,54.956152343750034],[137.17861328125005,55.100439453125034]]],[[[137.94052734375012,55.092626953125034],[138.20615234375012,55.03354492187498],[137.72148437500007,54.66323242187505],[137.46269531250002,54.873388671875034],[137.23291015624997,54.79057617187496],[137.5773437500001,55.19702148437497],[137.94052734375012,55.092626953125034]]],[[[21.235742187500023,55.26411132812498],[22.072363281250034,55.06367187499998],[22.56728515625005,55.05913085937496],[22.82470703125,54.87128906249998],[22.684472656250023,54.56293945312504],[22.679882812500068,54.493017578125006],[22.766210937499977,54.356787109375034],[22.168457031250057,54.35986328125006],[21.14052734375008,54.39179687499998],[19.604394531250023,54.45917968750004],[19.974511718750023,54.92119140625002],[20.520312500000017,54.994873046875],[20.89980468750008,55.286669921875045],[20.957812500000074,55.27890625000006],[20.594824218750006,54.982373046874955],[20.995898437500017,54.90268554687506],[21.18886718750008,54.93520507812502],[21.235742187500023,55.26411132812498]]],[[[166.65029296875005,54.83906249999998],[166.64511718750006,54.69409179687503],[165.75107421875006,55.294531250000034],[166.27578125000005,55.311962890624955],[166.24804687499997,55.16542968750002],[166.65029296875005,54.83906249999998]]],[[[150.58994140625006,59.01875],[150.47021484375003,59.05405273437498],[150.66621093750004,59.16015625000003],[150.58994140625006,59.01875]]],[[[163.63515625000005,58.603369140625006],[163.47138671875004,58.509375],[163.7609375000001,59.01503906250002],[164.57265625,59.22114257812501],[164.61572265624997,58.885595703125034],[163.63515625000005,58.603369140625006]]],[[[35.8161132812501,65.18208007812501],[35.77871093750005,64.97666015625],[35.52890625000006,65.15107421875001],[35.8161132812501,65.18208007812501]]],[[[70.02070312500004,66.502197265625],[69.65136718750003,66.56533203125],[69.50273437500002,66.75107421875],[70.07666015624997,66.69589843750003],[70.02070312500004,66.502197265625]]],[[[-179.79853515625,68.9404296875],[-178.873876953125,68.75410156249995],[-178.69262695312503,68.54599609375],[-178.09746093750002,68.4248046875],[-178.05581054687497,68.26489257812503],[-177.79677734374997,68.33798828125],[-178.37304687500003,68.56567382812503],[-177.52724609375002,68.29438476562501],[-177.58920898437503,68.22421875],[-175.34521484375,67.67807617187503],[-175.37470703124998,67.35737304687498],[-175.00268554687494,67.4375],[-174.849853515625,67.34887695312503],[-174.92490234375,66.62314453125006],[-174.503759765625,66.537939453125],[-174.39409179687496,66.34423828124997],[-174.084765625,66.47309570312504],[-174.06503906249998,66.22958984374998],[-173.77397460937502,66.43466796875003],[-174.23159179687497,66.63188476562505],[-174.08642578125,66.94287109375],[-174.55009765624993,67.090625],[-173.6796875,67.144775390625],[-173.15781249999998,67.06909179687503],[-173.32353515625,66.95483398437503],[-173.25893554687497,66.84008789062503],[-173.19301757812497,66.99360351562504],[-172.5201171875,66.952490234375],[-173.00751953125,67.06489257812498],[-171.79555664062502,66.93173828125003],[-170.50952148437503,66.34365234375005],[-170.604443359375,66.24892578125002],[-170.30122070312504,66.29404296874998],[-170.24394531250002,66.16928710937503],[-169.777880859375,66.14311523437505],[-169.83168945312497,65.99892578124997],[-170.54067382812497,65.86542968749995],[-170.66630859375,65.62153320312501],[-171.42153320312502,65.81035156250002],[-171.10585937500002,65.51103515625005],[-171.90712890625,65.495947265625],[-172.78330078124998,65.68105468749997],[-172.23281250000002,65.45571289062497],[-172.30927734375004,65.27563476562497],[-172.66191406249993,65.24853515625006],[-172.28603515625002,65.20571289062502],[-172.21318359375,65.04814453124999],[-173.08579101562498,64.81733398437495],[-172.80107421874996,64.79052734375],[-172.90087890624994,64.62885742187501],[-172.40146484374998,64.413916015625],[-172.73916015624997,64.41225585937502],[-172.90317382812498,64.52607421875004],[-172.96005859375003,64.32768554687502],[-173.27548828124998,64.2896484375],[-173.327490234375,64.53955078125003],[-173.72973632812497,64.36450195312497],[-174.57055664062503,64.7177734375],[-175.39511718749998,64.80239257812502],[-175.85385742187498,65.01083984375003],[-176.09326171875,65.471044921875],[-177.05625,65.613623046875],[-177.48876953125,65.50371093749999],[-178.4125,65.49555664062501],[-178.93906249999998,66.03276367187505],[-178.74672851562497,66.01367187500006],[-178.52656250000004,66.40156250000004],[-178.86811523437498,66.18706054687502],[-179.14340820312503,66.37504882812505],[-179.327197265625,66.16259765625003],[-179.68330078124998,66.18413085937505],[-179.78969726562497,65.90087890625],[-179.352099609375,65.51674804687497],[-180,65.06723632812498],[-180,65.31196289062501],[-180,65.55678710937497],[-180,65.80156250000002],[-180,66.04628906250002],[-180,66.29106445312499],[-180,66.53583984375004],[-180,66.78056640625005],[-180,67.02534179687501],[-180,67.27011718750006],[-180,67.51484374999998],[-180,67.75961914062503],[-180,68.00439453124997],[-180,68.24912109375],[-180,68.49389648437497],[-180,68.738671875],[-179.999951171875,68.98344726562505],[-179.79853515625,68.9404296875]]],[[[50.265234375,69.18559570312502],[49.62626953125002,68.85971679687498],[48.91035156250004,68.74306640625002],[48.4390625,68.80488281249998],[48.319921875,69.26923828125001],[48.8449218750001,69.49472656250003],[49.22519531250006,69.51123046875],[50.265234375,69.18559570312502]]],[[[161.46708984375002,68.90097656250003],[161.08281250000007,69.4056640625],[161.50517578125007,69.63945312500002],[161.46708984375002,68.90097656250003]]],[[[169.20078125000006,69.58046875],[168.34804687500005,69.66435546875005],[167.86474609375003,69.90107421875004],[168.35791015625003,70.01567382812502],[169.37480468750007,69.88261718749999],[169.20078125000006,69.58046875]]],[[[60.450488281250074,69.93486328124999],[60.44023437500002,69.72592773437506],[59.637011718750074,69.72104492187503],[59.50263671875004,69.86621093750003],[58.952734375,69.89277343750004],[58.51992187500005,70.31831054687504],[59.04804687500004,70.46049804687505],[60.450488281250074,69.93486328124999]]],[[[52.90332031250003,71.36499023437503],[53.19257812500004,71.21528320312498],[53.0226562500001,70.96870117187501],[52.24960937500006,71.28491210937506],[52.90332031250003,71.36499023437503]]],[[[178.8615234375001,70.826416015625],[178.68388671875013,71.10566406250004],[180,71.53774414062505],[180,70.993017578125],[178.8615234375001,70.826416015625]]],[[[137.95986328125005,71.50766601562503],[137.71181640625005,71.4232421875],[137.06406250000006,71.52988281250003],[137.816796875,71.58789062500006],[137.95986328125005,71.50766601562503]]],[[[-178.87646484375,71.57705078124997],[-178.13388671874998,71.46547851562497],[-177.523583984375,71.16689453125],[-179.415673828125,70.91899414062502],[-179.999951171875,70.993017578125],[-179.999951171875,71.53774414062505],[-178.87646484375,71.57705078124997]]],[[[77.6325195312501,72.291259765625],[76.87109374999997,72.317041015625],[77.74853515625003,72.63120117187506],[78.36513671875005,72.48242187500003],[77.6325195312501,72.291259765625]]],[[[79.50146484374997,72.72192382812497],[78.63320312500005,72.85073242187502],[79.16425781250004,73.0943359375],[79.50146484374997,72.72192382812497]]],[[[74.660546875,72.87343750000002],[74.18066406250003,72.975341796875],[74.19853515625002,73.10908203124998],[74.9615234375,73.0625],[74.660546875,72.87343750000002]]],[[[120.26132812500012,73.08984374999997],[119.79208984375006,73.04541015624997],[119.64042968750002,73.12431640625007],[120.26132812500012,73.08984374999997]]],[[[55.31982421875003,73.30830078124998],[56.42958984375005,73.201171875],[56.121679687500006,72.80659179687498],[55.40332031249997,72.54907226562503],[55.29785156249997,71.93535156250005],[56.45439453125002,71.10737304687504],[57.62539062500005,70.72880859374999],[57.14589843750005,70.58911132812506],[56.38574218749997,70.73413085937503],[56.49970703125004,70.56640625000003],[55.687304687500074,70.69218749999999],[54.60117187500006,70.68007812500002],[53.383593750000074,70.87353515625],[53.670507812500006,71.08691406250003],[54.155664062499994,71.12548828125],[53.40996093750002,71.34013671875002],[53.41162109375003,71.530126953125],[51.93789062500005,71.47470703124998],[51.511328125,71.64809570312497],[51.58251953124997,72.07119140625],[52.252050781250006,72.12973632812503],[52.66191406250002,72.33686523437495],[52.91660156250006,72.66889648437501],[52.5792968750001,72.791357421875],[53.3698242187501,72.91674804687506],[53.2511718750001,73.182958984375],[54.80390625000004,73.38764648437498],[55.31982421875003,73.30830078124998]]],[[[70.67392578125006,73.09501953125005],[70.04072265625004,73.03715820312507],[69.99589843750002,73.359375],[70.94023437500002,73.51440429687503],[71.6261718750001,73.17397460937497],[70.67392578125006,73.09501953125005]]],[[[142.18486328125007,73.89589843750005],[143.34375,73.56875],[143.45146484375007,73.231298828125],[141.59667968750003,73.31083984375005],[140.66279296875004,73.45200195312503],[139.785546875,73.35522460937503],[141.08476562500002,73.86586914062497],[142.18486328125007,73.89589843750005]]],[[[83.5490234375001,74.07177734375],[82.8177734375,74.09160156250005],[83.14980468750005,74.151611328125],[83.5490234375001,74.07177734375]]],[[[141.01025390625003,73.99946289062501],[140.40947265625002,73.92167968750005],[140.1935546875001,74.23671875000002],[141.03857421875003,74.24272460937502],[141.01025390625003,73.99946289062501]]],[[[113.38720703124997,74.40043945312499],[112.78242187500004,74.09506835937503],[111.50341796874997,74.35307617187502],[111.87978515625,74.36381835937499],[112.08447265624997,74.54897460937505],[113.38720703124997,74.40043945312499]]],[[[86.653125,74.981298828125],[87.05214843750005,74.982568359375],[86.92714843750005,74.83076171874998],[86.25859375000002,74.89350585937498],[86.653125,74.981298828125]]],[[[82.17236328125003,75.41938476562501],[81.97851562499997,75.24711914062499],[81.65478515625003,75.28891601562498],[81.71210937500004,75.45141601562506],[82.165625,75.515625],[82.17236328125003,75.41938476562501]]],[[[146.79521484375007,75.37075195312505],[148.43242187500002,75.41352539062495],[148.59013671875007,75.23637695312502],[150.82236328125006,75.15654296875002],[150.64628906250002,74.944580078125],[149.596875,74.77260742187505],[148.296875,74.80043945312502],[146.14853515625012,75.19829101562499],[146.5375,75.58178710937506],[146.79521484375007,75.37075195312505]]],[[[135.9486328125,75.40957031250005],[135.45195312500007,75.38955078124997],[135.6986328125,75.84526367187499],[136.16894531249997,75.60556640625],[135.9486328125,75.40957031250005]]],[[[140.04873046875,75.82895507812503],[140.81591796874997,75.63071289062498],[141.48544921875012,76.13715820312495],[142.66953125000012,75.86342773437497],[143.68583984375002,75.86367187500002],[145.35996093750006,75.53046874999998],[144.01972656250004,75.04467773437506],[143.1703125,75.11689453125001],[142.72949218749997,75.33764648437506],[142.941796875,75.71328125000002],[142.30791015625007,75.69169921875005],[142.19882812500006,75.39267578124998],[143.12792968749997,74.9703125],[142.47275390625006,74.82041015625],[141.98730468750003,74.99125976562499],[140.26787109375002,74.846923828125],[139.68125,74.96406249999995],[139.09912109374997,74.65654296875002],[138.09228515625003,74.79746093750003],[136.94765625000005,75.32553710937498],[137.28974609375004,75.34863281249997],[137.26884765625002,75.7494140625],[137.70654296875003,75.75957031250002],[137.56054687499997,75.95522460937502],[138.20761718750006,76.11494140624995],[138.91953125000006,76.19672851562501],[140.04873046875,75.82895507812503]]],[[[96.5324218750001,76.278125],[96.30058593750002,76.121728515625],[95.31113281250006,76.21474609375002],[95.37988281250003,76.2890625],[96.5324218750001,76.278125]]],[[[112.47802734375003,76.62089843749999],[112.531640625,76.450048828125],[111.96894531250004,76.62617187500001],[112.47802734375003,76.62089843749999]]],[[[149.15019531250002,76.65991210937506],[148.39863281250004,76.64824218750007],[149.4064453125001,76.78208007812498],[149.15019531250002,76.65991210937506]]],[[[67.7653320312501,76.23759765624999],[61.35595703124997,75.31484375000002],[60.27685546875003,75.00756835937503],[60.501367187499994,74.90463867187503],[59.67402343750004,74.61015624999999],[59.24013671875005,74.69296874999998],[59.040429687499994,74.48554687500001],[58.53466796875003,74.49892578124997],[58.6178710937501,74.22739257812498],[57.76738281250002,74.013818359375],[57.755957031250006,73.769189453125],[57.313085937500006,73.838037109375],[57.54257812500006,73.65820312500003],[56.96386718750003,73.36655273437503],[56.43037109375004,73.29721679687503],[55.00683593750003,73.45385742187506],[54.29990234375006,73.35097656249997],[53.7628906250001,73.76616210937499],[54.64267578125006,73.95957031250006],[55.34091796875006,74.41962890624998],[56.13710937500005,74.49609375000003],[55.5822265625001,74.627685546875],[56.4987304687501,74.95708007812505],[55.81005859374997,75.12490234374997],[56.03554687499999,75.19423828124997],[56.57031250000003,75.09775390625003],[56.8444335937501,75.351416015625],[57.606835937499994,75.34125976562498],[58.05830078125004,75.6630859375],[58.88125,75.85478515625007],[60.27929687499997,76.09624023437505],[60.94218750000002,76.07128906250003],[61.20166015624997,76.28203125000007],[62.97148437500002,76.23666992187498],[64.4634765625,76.37817382812503],[67.65185546874997,77.011572265625],[68.48574218750005,76.93369140625003],[68.94169921875002,76.707666015625],[67.7653320312501,76.23759765624999]]],[[[96.28544921875002,77.02666015625007],[95.27031250000007,77.01884765624999],[96.52841796875006,77.20551757812501],[96.28544921875002,77.02666015625007]]],[[[89.51425781250006,77.18881835937498],[89.14169921875012,77.22680664062497],[89.61621093749997,77.31103515625],[89.51425781250006,77.18881835937498]]],[[[130.68730468750007,42.30253906249999],[130.52695312500012,42.535400390625],[130.42480468749997,42.72705078124997],[131.06855468750004,42.90224609375005],[131.25732421875003,43.378076171874994],[131.2552734375,44.07158203124999],[130.9816406250001,44.844335937500034],[131.44687500000012,44.984033203124966],[131.85185546875002,45.32685546875001],[132.93603515624997,45.029931640624994],[133.1134765625001,45.130712890625006],[133.18603515625003,45.49482421875004],[133.43642578125,45.60468750000004],[133.86132812500003,46.24775390625004],[134.1676757812501,47.30219726562501],[134.75234375,47.71542968749998],[134.56601562500006,48.02250976562502],[134.66523437500004,48.25390625],[134.29335937500005,48.37343750000002],[133.46835937500006,48.09716796875003],[133.14404296875003,48.10566406249998],[132.7072265625001,47.94726562500006],[132.47626953125004,47.714990234374994],[130.96191406249997,47.70932617187498],[130.7326171875001,48.01923828124998],[130.80429687500012,48.34150390624998],[130.5521484375,48.602490234374955],[130.553125,48.861181640625006],[130.1959960937501,48.89165039062499],[129.49814453125012,49.38881835937502],[129.0651367187501,49.374658203124966],[128.70400390625,49.60014648437499],[127.99960937500006,49.56860351562506],[127.55078124999997,49.801806640625045],[127.590234375,50.20898437500003],[127.33720703125007,50.35014648437502],[127.30703125000005,50.70795898437501],[126.92480468749997,51.10014648437496],[126.34169921875,52.36201171875001],[125.64902343750012,53.042285156250045],[125.075,53.20366210937496],[124.81230468750002,53.133837890625045],[123.6078125,53.546533203124994],[120.98544921875012,53.28457031250002],[120.09453125000007,52.787207031250034],[120.0675781250001,52.632910156250034],[120.65615234375,52.56665039062503],[120.74980468750007,52.096533203125006],[120.06689453125003,51.60068359375006],[119.16367187500006,50.40600585937503],[119.34628906250012,50.278955078124994],[119.25986328125012,50.06640625000003],[118.4515625,49.84448242187503],[117.8734375,49.51347656250002],[116.6833007812501,49.82377929687499],[116.551171875,49.92031250000002],[116.35117187500012,49.97807617187499],[116.21679687500003,50.00927734375003],[116.13457031250002,50.01079101562499],[115.9259765625001,49.95214843750003],[115.79521484375002,49.90590820312502],[115.71777343750003,49.88061523437503],[115.58798828125006,49.88603515624996],[115.42919921874997,49.89648437499997],[115.36503906250002,49.911767578124966],[115.27451171875006,49.948876953124994],[115.00332031250005,50.138574218749994],[114.74316406249997,50.23369140625002],[114.29707031250004,50.27441406250006],[113.57421874999997,50.00703125000001],[113.44550781250004,49.94160156250001],[113.31904296875004,49.87431640624999],[113.16416015625012,49.79716796874999],[113.09208984375007,49.692529296874994],[113.05556640625,49.61625976562499],[112.91484375000002,49.569238281249994],[112.80644531250007,49.52358398437502],[112.69736328125012,49.50727539062498],[112.49492187500002,49.532324218750034],[112.07968750000006,49.42421875000002],[111.42929687500006,49.342626953125034],[111.3366210937501,49.355859374999966],[111.20419921875012,49.304296875000034],[110.82792968750002,49.16616210937505],[110.70976562500002,49.14296875000002],[110.42783203125006,49.219970703125],[110.32138671875012,49.215869140625045],[110.19990234375004,49.17041015625003],[109.5287109375,49.269873046875034],[109.45371093750012,49.29633789062501],[109.23671875000005,49.334912109374955],[108.61367187500005,49.32280273437499],[108.52246093750003,49.34150390624998],[108.4069335937501,49.39638671875005],[107.96542968750012,49.65351562500004],[107.91660156250012,49.947802734375045],[107.63095703125012,49.98310546875004],[107.3470703125,49.986669921875034],[107.23330078125,49.989404296874994],[107.14306640625003,50.03300781249999],[107.04023437500004,50.086474609375045],[106.94130859375005,50.19667968750002],[106.71113281250004,50.312597656250006],[106.57441406250004,50.32880859375004],[106.36845703125002,50.317578124999955],[106.21787109375006,50.304589843749966],[105.38359375000002,50.47373046874998],[104.07871093750012,50.15424804687498],[103.63291015625006,50.138574218749994],[103.49628906250004,50.16494140625005],[103.42119140625002,50.18706054687502],[103.3043945312501,50.200292968750034],[102.28837890625007,50.58510742187502],[102.31660156250004,50.71845703125001],[102.21503906250004,50.82944335937506],[102.19453125000004,51.05068359375002],[102.15195312500006,51.107519531250034],[102.14238281250007,51.21606445312503],[102.16005859375005,51.260839843750006],[102.1556640625,51.31376953124996],[102.1115234375001,51.353466796874955],[101.97919921875004,51.382226562499966],[101.82119140625,51.421044921874966],[101.57089843750006,51.46718750000005],[101.38125,51.45263671875],[100.53623046875006,51.713476562500034],[100.46894531250004,51.72607421875003],[100.23037109375,51.729833984375006],[100.0345703125,51.73710937499996],[99.92167968750002,51.755517578124994],[99.71923828124997,51.87163085937502],[98.89316406250006,52.11728515625006],[98.64052734375005,51.80117187500005],[98.103125,51.483544921874994],[97.82529296875012,50.985253906249994],[97.953125,50.85517578124998],[98.02978515625003,50.64462890624998],[98.07890625000002,50.60380859375002],[98.14501953124997,50.56855468750001],[98.22050781250007,50.55717773437502],[98.2794921875001,50.53325195312502],[98.25029296875002,50.30244140624998],[98.00390625000003,50.01425781249998],[97.35976562500005,49.741455078125],[97.20859375000006,49.73081054687506],[96.98574218750005,49.88281250000003],[96.31503906250012,49.90112304687503],[96.06552734375006,49.99873046875001],[95.52265625000004,49.911230468750034],[95.11142578125012,49.935449218749994],[94.93027343750006,50.04375],[94.8112304687501,50.04819335937506],[94.71806640625002,50.04326171875002],[94.67548828125004,50.02807617187506],[94.61474609375003,50.02373046874996],[94.56464843750004,50.08793945312499],[94.35468750000004,50.221826171874994],[94.25107421875006,50.55639648437503],[93.103125,50.60390625000002],[92.94130859375005,50.77822265625002],[92.85644531250003,50.78911132812502],[92.77929687500003,50.778662109375006],[92.738671875,50.71093749999997],[92.68134765625004,50.683203125],[92.6266601562501,50.68828124999999],[92.57890625000002,50.725439453125006],[92.42636718750006,50.803076171875006],[92.35478515625002,50.86416015625002],[92.29580078125,50.84980468750004],[92.19238281249997,50.700585937499994],[91.80429687500006,50.693603515625],[91.4464843750001,50.52216796874998],[91.41503906249997,50.46801757812506],[91.34082031249997,50.470068359375034],[91.30058593750002,50.46337890625],[91.2337890625,50.45239257812497],[91.02158203125012,50.41547851562501],[90.83808593750004,50.32373046874997],[90.76074218749997,50.30595703124999],[90.71435546874997,50.25942382812502],[90.65507812500007,50.22236328125001],[90.05371093750003,50.09375],[89.64384765625002,49.90302734374998],[89.65410156250007,49.71748046875001],[89.57919921875006,49.69970703125003],[89.475,49.66054687500005],[89.39560546875006,49.61152343750001],[89.24394531250007,49.62705078125006],[89.20292968750007,49.59570312499997],[89.17998046875002,49.5322265625],[89.10947265625012,49.50136718750002],[89.00839843750006,49.472802734374994],[88.97060546875,49.483740234375006],[88.94541015625012,49.50766601562498],[88.90019531250002,49.53969726562502],[88.86386718750006,49.52763671874996],[88.83164062500012,49.44843749999998],[88.633203125,49.486132812500045],[88.19257812500004,49.451708984375045],[88.13554687500002,49.38149414062502],[88.11572265624997,49.25629882812501],[88.0285156250001,49.219775390625045],[87.98808593750002,49.186914062499994],[87.9347656250001,49.16455078124997],[87.81425781250002,49.162304687499955],[87.7625,49.16582031249996],[87.5158203125001,49.122412109375006],[87.41669921875004,49.07661132812501],[87.32285156250012,49.085791015625006],[86.62646484374997,49.56269531250001],[86.67548828125004,49.77729492187501],[86.1808593750001,49.49931640624996],[85.2326171875001,49.61582031249998],[84.9894531250001,50.061425781249994],[84.32324218749997,50.239160156249966],[83.94511718750007,50.774658203125],[83.35732421875005,50.99458007812504],[82.76083984375012,50.89335937500002],[82.49394531250007,50.72758789062499],[81.46591796875006,50.73984375],[81.38828125000006,50.95649414062501],[81.0714843750001,50.96875],[81.12724609375002,51.19106445312502],[80.73525390625,51.29340820312498],[80.44804687500002,51.18334960937503],[80.42363281250002,50.94628906249997],[79.98623046875,50.774560546874966],[77.85996093750006,53.269189453124994],[76.48476562500005,54.02255859374998],[76.42167968750007,54.151513671874966],[76.65458984375007,54.14526367187503],[76.8373046875,54.4423828125],[75.43720703125004,54.08964843749999],[75.22021484374997,53.89379882812506],[74.45195312500007,53.64726562500002],[74.35156250000003,53.487646484375006],[73.85898437500006,53.61972656249998],[73.40693359375004,53.44755859374999],[73.30566406250003,53.707226562499955],[73.71240234375003,54.04238281250002],[73.22988281250005,53.957812500000045],[72.62226562500004,54.13432617187502],[72.44677734375003,53.94184570312498],[72.18603515625003,54.32563476562501],[72.00449218750006,54.20566406249998],[71.09316406250005,54.21220703124999],[71.18554687500003,54.59931640624998],[70.73808593750007,55.30517578125],[70.18242187500002,55.162451171875034],[68.9772460937501,55.389599609374955],[68.20625,55.16093750000002],[68.15585937500006,54.97670898437505],[65.476953125,54.62329101562497],[65.08837890624997,54.340185546875034],[64.46123046875002,54.38417968750002],[61.92871093750003,53.94648437500004],[61.231054687500006,54.01948242187498],[60.97949218749997,53.62172851562505],[61.53496093750002,53.52329101562506],[61.22890625,53.445898437500006],[61.19921874999997,53.28715820312502],[61.65986328125004,53.22846679687504],[62.08271484375004,53.00541992187499],[61.047460937500006,52.97246093750002],[60.77441406249997,52.67578124999997],[60.99453125000005,52.33686523437504],[60.03027343749997,51.93325195312505],[60.464746093749994,51.651171875000045],[61.55468750000003,51.32460937500005],[61.38945312500002,50.86103515625001],[60.94228515625005,50.69550781250004],[60.42480468749997,50.67915039062498],[60.05859374999997,50.850292968749955],[59.812402343749994,50.58203125],[59.523046875,50.492871093749955],[59.4523437500001,50.62041015625002],[58.88369140625005,50.694433593750006],[58.359179687500074,51.063818359375034],[57.83886718750003,51.091650390625006],[57.44218750000002,50.88886718749998],[57.01171874999997,51.06518554687503],[56.49140625000004,51.01953124999997],[55.68623046875004,50.582861328125006],[54.64160156250003,51.011572265625034],[54.555273437500006,50.535791015624994],[54.139746093750006,51.04077148437503],[53.33808593750004,51.48237304687504],[52.57119140625005,51.481640624999955],[52.21914062499999,51.709375],[51.344531250000074,51.47534179687503],[51.16347656250005,51.6474609375],[50.79394531249997,51.729199218749955],[50.246875,51.28950195312498],[49.49804687500003,51.08359375000006],[49.32343750000004,50.851708984374966],[48.625097656250006,50.61269531250005],[48.7589843750001,49.92832031250006],[48.33496093750003,49.858251953125006],[47.7057617187501,50.37797851562502],[47.42919921874997,50.35795898437502],[46.889550781249994,49.69697265625001],[46.80205078125002,49.36708984375002],[47.031347656250006,49.150292968749994],[46.70263671875003,48.80556640625002],[46.660937500000074,48.41225585937502],[47.06464843750004,48.23247070312499],[47.292382812499994,47.74091796875004],[47.48193359374997,47.80390624999998],[48.16699218750003,47.70878906249996],[48.959375,46.77460937499998],[48.558398437500074,46.75712890624999],[48.54121093750004,46.60561523437502],[49.232226562500074,46.33715820312503],[48.683691406250006,46.08618164062497],[48.72958984375006,45.896826171875034],[48.4870117187501,45.93486328124996],[47.63330078124997,45.58403320312499],[47.46328125,45.67968750000003],[47.5294921875001,45.530224609374955],[47.3512695312501,45.21772460937498],[46.7072265625001,44.503320312499994],[47.30703125000005,44.103125],[47.462792968749994,43.55502929687498],[47.64648437500003,43.88461914062498],[47.463183593750074,43.03505859375002],[48.572851562500006,41.84448242187503],[47.79101562499997,41.19926757812502],[47.31767578125002,41.28242187500001],[46.74931640625002,41.812597656250006],[46.42988281250004,41.890966796875006],[46.21269531250002,41.989892578124994],[45.63857421875005,42.20507812500003],[45.63427734374997,42.234716796875034],[45.72753906249997,42.47504882812498],[45.70527343750004,42.49809570312496],[45.56289062499999,42.53574218749998],[45.34375,42.52978515625003],[45.16025390625006,42.675],[45.07158203125002,42.69414062500002],[44.94335937499997,42.73027343750002],[44.870996093749994,42.75639648437499],[44.850488281249994,42.746826171875],[44.77109375000006,42.61679687499998],[44.69179687499999,42.709619140624966],[44.64433593750002,42.734716796875034],[44.50585937500003,42.748632812500006],[44.329492187499994,42.703515624999966],[44.10273437500004,42.616357421874994],[44.004687500000074,42.59560546875002],[43.95742187500005,42.56655273437505],[43.825976562500074,42.571533203125],[43.759863281250006,42.593847656250006],[43.738378906250006,42.61699218750002],[43.74990234375005,42.65751953125002],[43.79541015624997,42.702978515625034],[43.78261718750005,42.747021484374955],[43.62304687500003,42.80771484374998],[43.5578125000001,42.844482421875],[43.089160156250074,42.9890625],[43.00019531250004,43.04965820312506],[42.991601562499994,43.09150390624998],[42.76064453125005,43.169580078124966],[41.58056640624997,43.21923828124997],[41.460742187500074,43.276318359374955],[41.35820312500002,43.33339843750005],[41.08310546875006,43.37446289062498],[40.94199218750006,43.41806640624998],[40.801660156249994,43.479931640624955],[40.64804687500006,43.53388671875004],[40.084570312500006,43.553125],[40.02373046875002,43.48486328125],[39.873632812500006,43.47280273437502],[38.71728515624997,44.28808593750003],[38.18125,44.41967773437503],[37.851464843749994,44.698828125000034],[37.49511718750003,44.69526367187504],[37.20478515625004,44.97197265624999],[36.62763671875004,45.15131835937504],[36.941210937500074,45.289697265624994],[36.72041015625004,45.371875],[36.8659179687501,45.42705078124999],[37.21357421875004,45.272314453125006],[37.6471679687501,45.37719726562506],[37.61240234375006,45.56469726562506],[37.93310546875003,46.001708984375],[38.014257812500006,46.047753906249966],[38.07958984375003,45.93481445312506],[38.18359374999997,46.09482421875006],[38.49228515625006,46.09052734374998],[37.913867187500074,46.40649414062503],[37.766503906249994,46.63613281250002],[38.50097656249997,46.663671875000034],[38.43867187500004,46.813085937500006],[39.29345703125003,47.105761718750045],[39.19570312499999,47.268847656250045],[39.023730468750074,47.27221679687503],[38.928320312500006,47.175683593749994],[38.55244140625004,47.15034179687498],[38.7619140625001,47.261621093749994],[38.21435546875003,47.091455078124966],[38.36884765625004,47.609960937500006],[38.90029296875005,47.85512695312502],[39.77871093750005,47.88754882812506],[39.95791015625005,48.268896484375034],[39.8356445312501,48.54277343749996],[39.6447265625001,48.591210937499966],[39.792871093749994,48.807714843750034],[40.00361328125004,48.82207031250002],[39.68652343749997,49.007910156250034],[40.10878906250005,49.251562500000034],[40.080664062500006,49.576855468749955],[39.780566406250074,49.57202148437503],[39.17480468750003,49.85595703124997],[38.91835937499999,49.82470703125],[38.258593750000074,50.05234375],[38.046875,49.92001953125006],[37.42285156249997,50.411474609375006],[36.619433593750074,50.209228515625],[36.1164062500001,50.408544921875006],[35.59111328125002,50.36875],[35.31191406250005,51.043896484374955],[35.0640625,51.203417968750045],[34.21386718750003,51.25537109375006],[34.12109375000003,51.67915039062498],[34.397851562499994,51.780419921874994],[33.735253906249994,52.344775390625045],[32.435449218749994,52.307226562500034],[32.12226562500004,52.05058593749996],[31.763378906250097,52.10107421875003],[31.758593750000017,52.125830078125034],[31.690625,52.22065429687498],[31.64990234374997,52.26220703125],[31.60156250000003,52.284814453124994],[31.57734375000004,52.31230468749999],[31.585546875,52.532470703125],[31.56484375,52.75922851562501],[31.53515624999997,52.798242187499966],[31.442773437499994,52.86181640625003],[31.35302734374997,52.93344726562498],[31.295117187500097,52.98979492187499],[31.25878906249997,53.01669921875006],[31.364550781250017,53.13896484375002],[31.388378906250097,53.18481445312503],[31.41787109375005,53.196044921875],[31.849707031250006,53.106201171875],[32.14199218750005,53.091162109375034],[32.46933593750006,53.270312500000045],[32.578027343749994,53.312402343749994],[32.644433593749994,53.32890624999999],[32.70429687500004,53.33632812499999],[32.45097656250002,53.6533203125],[32.20039062500004,53.78125],[31.99218750000003,53.796875],[31.82080078124997,53.79194335937498],[31.754199218750017,53.81044921875002],[31.825292968750006,53.93500976562501],[31.837792968749994,54.00078124999999],[31.825976562500074,54.030712890624955],[31.79199218749997,54.05590820312503],[31.62841796874997,54.111181640625006],[31.403613281250017,54.195947265624966],[31.299121093750017,54.29169921875001],[31.184765625000097,54.452978515625006],[31.074804687500063,54.491796875],[31.154882812500063,54.610937500000034],[31.152148437500017,54.625341796875034],[31.12128906250004,54.64848632812496],[30.984179687500074,54.695898437500034],[30.79882812499997,54.78325195312499],[30.79101562499997,54.806005859375006],[30.804492187500074,54.8609375],[30.829882812500017,54.91499023437498],[30.977734375000097,55.05048828124998],[30.977734375000097,55.08779296875002],[30.958886718749994,55.13759765625005],[30.87744140625003,55.223437500000045],[30.81445312499997,55.27871093750002],[30.81054687499997,55.306982421875006],[30.82099609375004,55.330273437499955],[30.900585937500097,55.397412109374955],[30.906835937500063,55.57001953125004],[30.625585937500006,55.666259765625],[30.23359375000004,55.84521484375006],[30.04267578125004,55.83642578125003],[29.93701171874997,55.84526367187499],[29.881640625000074,55.83232421875002],[29.82392578125004,55.79511718749998],[29.74414062499997,55.770410156249994],[29.630078125000097,55.75117187499998],[29.482226562500074,55.6845703125],[29.412988281249994,55.72485351562506],[29.35341796875005,55.784375],[29.375,55.938720703125],[28.284277343750006,56.055908203125],[28.14794921875003,56.142919921875034],[28.202050781250023,56.260400390624994],[28.191699218750045,56.31557617187505],[28.169238281250017,56.386865234374994],[28.11083984375,56.51069335937501],[28.103125,56.545703125000045],[27.89208984375003,56.741064453125034],[27.88154296875001,56.82416992187501],[27.848632812500057,56.85341796875002],[27.806054687499994,56.86708984375005],[27.639453125000074,56.84565429687504],[27.83027343750004,57.19448242187505],[27.83828125000008,57.247705078124966],[27.82861328124997,57.293310546875006],[27.796875,57.316943359375045],[27.538671875000063,57.429785156250034],[27.51113281250005,57.508154296875006],[27.469726562500057,57.524023437500034],[27.35195312500005,57.528125],[27.4,57.66679687499999],[27.542089843750063,57.799414062500006],[27.778515625000068,57.87070312500006],[27.502441406250057,58.221337890624994],[27.434179687500006,58.787255859374994],[28.15107421875004,59.374414062499966],[28.0125,59.484277343749966],[28.05800781250008,59.781542968750045],[28.334570312500034,59.69252929687502],[28.518164062500034,59.849560546874955],[28.947265625000057,59.828759765624994],[29.147265625000045,59.999755859375],[30.12255859374997,59.873583984375074],[30.172656250000017,59.957128906250034],[29.72119140624997,60.19531249999997],[29.069140625000017,60.19145507812499],[28.643164062500006,60.375292968750045],[28.512792968750006,60.67729492187502],[27.797656250000074,60.53613281250003],[29.69013671875004,61.54609375000001],[31.18671875000004,62.48139648437504],[31.533984375000017,62.885400390624994],[31.180859375000097,63.208300781250074],[29.991503906250074,63.73515625000002],[30.50390625000003,64.02060546875],[30.513769531250006,64.2],[30.04189453125005,64.44335937499997],[30.072851562500063,64.76503906250005],[29.60419921875004,64.968408203125],[29.826953125000017,65.14506835937502],[29.608007812500006,65.248681640625],[29.715917968750063,65.62456054687502],[30.102734375000097,65.72626953125004],[29.066210937500045,66.89174804687497],[29.988085937500017,67.66826171874999],[29.343847656250006,68.06186523437506],[28.685156250000034,68.189794921875],[28.470703125000057,68.48837890625],[28.77285156250005,68.84003906249995],[28.414062500000057,68.90415039062506],[28.96582031250003,69.02197265625],[29.38828125,69.29814453125005],[30.08730468750005,69.43286132812503],[30.18017578124997,69.63583984375],[30.860742187499994,69.53842773437503],[30.869726562500006,69.78344726562506],[31.546972656250063,69.696923828125],[31.997949218749994,69.80991210937503],[31.98457031250004,69.95366210937499],[33.00781249999997,69.72211914062498],[32.91503906249997,69.60170898437497],[32.17675781250003,69.67402343749995],[32.37773437500002,69.47910156250003],[32.99980468750002,69.4701171875],[32.97890625000005,69.367333984375],[33.45429687500004,69.42817382812495],[33.14121093750006,69.068701171875],[33.684375,69.31025390625001],[35.85791015625003,69.19174804687503],[37.73056640625006,68.69213867187503],[38.43017578125003,68.35561523437505],[39.568945312500006,68.07172851562501],[39.82333984375006,68.05859375],[39.80927734375004,68.15083007812498],[40.38066406250002,67.831884765625],[40.96640625000006,67.71347656250003],[41.358789062499994,67.20966796874998],[41.18896484375003,66.82617187500003],[40.10332031250002,66.29995117187502],[38.65390625000006,66.06904296874995],[35.51347656250002,66.39580078125002],[34.82460937499999,66.61113281249999],[34.48261718750004,66.55034179687505],[34.4515625,66.651220703125],[33.15019531250002,66.84394531250001],[32.93046875000002,67.08681640625002],[31.895312500000074,67.16142578125002],[33.65595703125004,66.44262695312506],[33.36054687500004,66.32954101562501],[34.112695312499994,66.225244140625],[34.69179687500005,65.95185546874998],[34.77695312500006,65.76826171874998],[34.40644531250004,65.39575195312503],[35.03535156250004,64.44023437500005],[35.802050781250074,64.3353515625],[36.3649414062501,64.00283203125002],[37.44218750000002,63.813378906249966],[37.9679687500001,63.949121093749994],[38.0622070312501,64.09101562499995],[37.953710937500006,64.32011718749999],[37.183691406250006,64.40849609375007],[36.6242187500001,64.75053710937502],[36.534570312499994,64.93862304687497],[36.88281249999997,65.17236328124997],[39.7580078125001,64.57705078125002],[40.05781250000004,64.77075195312497],[40.44492187500006,64.7787109375],[39.7980468750001,65.349853515625],[39.816503906250006,65.59794921874999],[41.4757812500001,66.12343750000002],[42.21054687500006,66.51967773437502],[43.23320312500002,66.41552734375003],[43.653125,66.2509765625],[43.54189453125005,66.12338867187503],[43.84375,66.14238281249999],[44.10439453125005,66.00859374999999],[44.42929687500006,66.93774414062503],[43.7824218750001,67.25449218749998],[44.20468750000006,68.25375976562498],[43.33320312500004,68.67338867187502],[44.04804687500004,68.54882812499997],[45.891992187499994,68.47968750000001],[46.69042968750003,67.84882812500001],[45.52871093750005,67.75756835937497],[44.90214843750002,67.41313476562505],[45.56220703125004,67.18559570312507],[45.88535156250006,66.89106445312501],[46.4923828125001,66.80019531249997],[47.65585937500006,66.97592773437498],[47.87470703125004,67.58417968749998],[48.83320312500004,67.681494140625],[48.75429687500005,67.89594726562501],[49.15527343750003,67.87041015625005],[51.994726562500006,68.53876953124995],[52.3966796875001,68.35170898437505],[52.72265624999997,68.484033203125],[52.34404296875002,68.60815429687497],[53.80195312500004,68.99589843750002],[54.49121093750003,68.992333984375],[53.797656250000074,68.90747070312503],[53.9308593750001,68.43554687499997],[53.260546875000074,68.26748046875002],[54.476171875,68.29414062499995],[54.86132812500003,68.20185546874998],[55.418066406250006,68.56782226562501],[56.04365234375004,68.64887695312501],[57.126855468749994,68.55400390625005],[58.17304687500004,68.88974609375006],[59.0573242187501,69.00605468750004],[59.37050781250005,68.73837890625003],[59.09902343750005,68.4443359375],[59.725683593750006,68.35161132812502],[59.89599609374997,68.70634765624999],[60.489160156249994,68.72895507812498],[60.93359374999997,68.98676757812501],[60.17060546875004,69.59091796875],[60.90908203125005,69.84711914062495],[64.19042968750003,69.53466796875],[64.89628906250002,69.247802734375],[67.00244140625003,68.87358398437505],[68.37119140625006,68.31425781250005],[69.14052734375005,68.95063476562501],[68.54277343750002,68.96708984374999],[68.00585937499997,69.48002929687505],[67.62412109375,69.58442382812501],[67.06445312500003,69.69370117187498],[66.89667968750004,69.55380859374998],[67.28476562500006,70.73872070312498],[67.14335937500002,70.83754882812502],[66.70224609375006,70.81850585937497],[66.63964843749997,71.08139648437498],[68.2692382812501,71.68281250000001],[69.61181640625003,72.98193359375],[69.73828124999997,72.88496093749998],[71.5001953125001,72.91367187500003],[72.812109375,72.69140624999997],[72.57412109375,72.01254882812506],[71.86728515625,71.457373046875],[72.70449218750005,70.96323242187498],[72.5767578125,68.96870117187498],[73.59169921875005,68.48188476562501],[73.13945312500002,68.18134765624998],[73.06679687500005,67.766943359375],[71.84746093750002,67.00761718750005],[71.36523437500003,66.96152343749998],[71.53955078125003,66.68310546875],[70.72490234375007,66.51943359374997],[70.38281249999997,66.60249023437501],[70.69072265625002,66.74531249999998],[70.2833984375001,66.68579101562503],[69.8771484375001,66.84545898437506],[69.21777343749997,66.82861328125],[69.01347656250002,66.78833007812503],[69.19433593749997,66.57866210937505],[70.33945312500006,66.34238281250006],[71.35800781250006,66.35942382812505],[71.91699218749997,66.24672851562502],[72.32158203125002,66.33212890625],[72.4173828125,66.56079101562506],[73.79208984375,66.99531250000001],[74.07451171875007,67.41411132812499],[74.76953124999997,67.76635742187497],[74.39140625000007,68.42060546874995],[74.57958984375003,68.751220703125],[76.10751953125006,68.975732421875],[76.45917968750004,68.97827148437497],[77.2384765625001,68.46958007812498],[77.17441406250012,67.77851562499998],[77.77158203125006,67.57026367187501],[78.92246093750006,67.58911132812503],[77.58828125000005,67.75190429687498],[77.66484375000002,68.19038085937495],[77.99511718749997,68.25947265624998],[77.65068359375007,68.90302734375001],[76.00097656249997,69.23505859374998],[75.42001953125,69.23862304687498],[74.81484375,69.09057617187503],[73.83603515625006,69.143212890625],[73.578125,69.80297851562503],[74.34335937500006,70.57871093749998],[73.08623046875007,71.44492187500006],[73.67177734375,71.84506835937503],[74.99218749999997,72.14482421874999],[74.78681640625004,72.811865234375],[75.15244140625,72.85273437499998],[75.74140625000004,72.29624023437503],[75.273828125,71.95893554687495],[75.33203125000003,71.34174804687498],[76.92900390625002,71.12788085937504],[77.58964843750007,71.16791992187501],[78.32060546875002,70.93041992187503],[78.94218750000002,70.93378906250001],[79.08388671875,71.00200195312505],[78.58769531250007,70.993896484375],[78.21259765625004,71.26630859374998],[76.43339843750002,71.55249023437503],[76.03242187500004,71.91040039062503],[76.87138671875002,72.03300781250005],[77.77753906250004,71.83642578125006],[78.23242187500003,71.95229492187502],[78.01640625000007,72.092041015625],[77.49287109375004,72.07172851562504],[77.47158203125,72.19213867187506],[78.22539062500007,72.37744140625006],[79.4220703125001,72.38076171875002],[80.7625,72.08916015625002],[81.66162109374997,71.71596679687502],[82.75781250000003,71.76411132812498],[83.23359375000004,71.66816406249995],[82.32285156250006,71.26000976562503],[82.16318359375012,70.59814453125003],[82.22119140625003,70.39570312499998],[82.86914062499997,70.95483398437503],[83.03017578125,70.58051757812498],[82.6823242187501,70.21772460937498],[83.0807617187501,70.09301757812497],[83.07382812500012,70.276708984375],[83.73593750000006,70.54648437499998],[83.15126953125005,71.10361328124998],[83.534375,71.68393554687498],[83.20029296875012,71.87470703125004],[82.64541015625005,71.92524414062504],[82.09365234375,72.26542968750005],[80.82705078125005,72.48828124999997],[80.84160156250007,72.94916992187498],[80.4245117187501,73.23115234374998],[80.5832031250001,73.56845703125003],[85.20058593750005,73.72153320312506],[86.89296875,73.88710937500002],[85.79257812500012,73.438330078125],[86.67705078125002,73.10678710937503],[85.93896484374997,73.45649414062495],[87.12011718750003,73.61503906250002],[87.57119140625,73.81074218750001],[86.57109375000007,74.24375],[86.0013671875,74.316015625],[86.39580078125007,74.45009765624997],[86.89794921874997,74.32534179687497],[87.22968750000004,74.3638671875],[85.79101562499997,74.6451171875],[86.20126953125006,74.81621093750005],[86.65146484375012,74.68242187500005],[87.04179687500007,74.77885742187499],[87.46757812500002,75.01323242187505],[86.93906250000006,75.06811523437503],[87.00595703125012,75.16982421874997],[87.67138671874997,75.12958984375004],[90.18496093750005,75.59106445312497],[94.07519531249997,75.91289062499999],[92.89042968750002,75.90996093750002],[93.25927734375003,76.09877929687502],[95.57871093750012,76.13730468749998],[96.07548828125007,76.08198242187498],[95.65332031250003,75.89218750000003],[96.50859375000002,76.00556640624995],[96.49707031249997,75.89121093750003],[98.66201171875005,76.24267578125003],[99.77041015625,76.02875976562498],[99.5407226562501,75.79858398437497],[99.85136718750007,75.93027343749998],[99.8253906250001,76.13593749999995],[98.80566406250003,76.48066406250004],[100.84375,76.52519531250005],[101.59775390625006,76.43920898437503],[100.92802734375002,76.55673828124998],[100.98994140625004,76.99047851562497],[102.61015625000007,77.508544921875],[104.01455078125,77.73041992187501],[106.05957031249997,77.39052734375002],[104.20244140625002,77.101806640625],[106.9416015625001,77.034375],[107.42978515625006,76.92656250000002],[106.41357421874997,76.51225585937499],[107.72216796875003,76.52231445312498],[108.18164062500003,76.73784179687502],[111.39248046875,76.686669921875],[112.09394531250004,76.48032226562506],[111.94267578125002,76.38046875000003],[112.61953125,76.38354492187506],[112.65625,76.05356445312498],[113.2726562500001,76.25166015625001],[113.5638671875,75.89165039062502],[113.85722656250007,75.92128906250002],[113.56757812500004,75.56840820312499],[112.45302734375,75.83017578125003],[112.95566406250006,75.571923828125],[113.24296875000007,75.61142578125003],[113.72617187500012,75.45063476562498],[112.92490234375012,75.01503906249997],[109.84033203124997,74.32197265624998],[109.8102539062501,74.16918945312503],[108.19951171875002,73.69409179687497],[107.27109375000006,73.62104492187501],[106.67939453125004,73.3306640625],[106.1886718750001,73.3080078125],[105.14394531250005,72.77705078125001],[105.7082031250001,72.836669921875],[106.47792968750005,73.13940429687503],[107.750390625,73.17314453125007],[109.33105468749997,73.48745117187497],[109.85527343750002,73.47246093750002],[110.86816406249997,73.73071289062497],[109.70673828125004,73.74375],[110.2614257812501,74.01743164062503],[111.05625,73.93935546875002],[111.13085937500003,74.05283203125003],[111.55058593750007,74.02851562499998],[111.22812500000012,73.96855468750002],[111.40039062500003,73.827734375],[112.14726562500007,73.70893554687498],[112.79541015625003,73.74609375],[112.83593750000003,73.96206054687502],[113.03281250000006,73.91386718750007],[113.4162109375001,73.647607421875],[113.15693359375004,73.45957031249998],[113.49091796875004,73.34609375000002],[113.12783203125,72.8306640625],[113.66455078124997,72.63452148437503],[113.2155273437501,72.80585937500001],[113.88623046875003,73.34580078124998],[113.51035156250012,73.50498046874998],[115.33769531250007,73.70258789062501],[118.87089843750007,73.53789062500002],[118.45703124999997,73.46440429687507],[118.43027343750012,73.24653320312501],[119.750390625,72.97910156250006],[122.26015625,72.88056640624995],[122.75195312500003,72.906494140625],[122.61523437499997,73.02792968750006],[123.1603515625001,72.95488281250002],[123.62226562500004,73.19326171875],[123.49111328125005,73.666357421875],[124.54121093750004,73.75126953125007],[125.59853515625005,73.447412109375],[126.25449218750012,73.548193359375],[126.55253906250007,73.33491210937498],[127.03134765625006,73.54746093750003],[127.74033203125012,73.48154296875],[129.10058593750003,73.11235351562502],[128.5990234375,72.895166015625],[129.01728515625004,72.8724609375],[129.250390625,72.70517578125003],[128.41826171875002,72.53515625000003],[129.28134765625006,72.43769531249998],[129.41064453124997,72.16630859375002],[128.93496093750005,72.07949218750002],[127.8034179687501,72.43403320312504],[127.84140625000012,72.308251953125],[128.91142578125002,71.75532226562495],[129.21025390625007,71.91694335937501],[129.46083984375,71.73930664062499],[128.84326171875003,71.6634765625],[129.76191406250004,71.11953125000002],[130.53710937500003,70.89252929687495],[130.75712890625002,70.96235351562498],[131.02158203125006,70.74609374999997],[132.0353515625001,71.24404296875],[132.65390625000006,71.92597656250001],[133.6888671875,71.434228515625],[134.70273437500012,71.38681640625003],[135.55917968750006,71.6103515625],[136.09033203125003,71.61958007812501],[137.9396484375001,71.1333984375],[137.84404296875007,71.22680664062503],[138.31406250000006,71.32553710937498],[137.918359375,71.38408203124999],[138.23417968750007,71.596337890625],[138.78017578125,71.62900390624998],[139.209375,71.44477539062501],[139.98417968750007,71.49150390625005],[139.72294921875002,71.88496093749998],[139.35927734375005,71.95136718750001],[140.18769531250004,72.19130859374997],[139.17636718750006,72.16347656249997],[139.14082031250004,72.32973632812502],[139.60117187500012,72.49609374999997],[141.07929687500004,72.5869140625],[140.80820312500006,72.89096679687503],[142.06142578125005,72.72080078125],[146.25292968749997,72.442236328125],[146.234765625,72.34970703125],[144.77636718749997,72.38227539062495],[144.16923828125002,72.25878906250003],[144.29492187499997,72.19262695312497],[146.83183593750007,72.29541015625003],[146.11328125000003,71.94497070312497],[146.23027343750007,72.1375],[145.75859375000007,72.22587890624999],[145.75673828125005,71.94130859375002],[145.06396484374997,71.92607421875002],[145.18857421875012,71.69580078125],[146.07324218749997,71.80834960937503],[147.26181640625006,72.327880859375],[149.50156250000012,72.16430664062497],[150.01689453125002,71.89565429687505],[149.04873046875005,71.79575195312503],[148.9681640625,71.69047851562499],[150.59980468750004,71.5201171875],[150.09765624999997,71.22656249999997],[150.96777343749997,71.38046874999998],[151.58242187500005,71.28696289062503],[152.09277343749997,71.02329101562503],[151.76201171875002,70.98247070312499],[152.50878906250003,70.83447265625003],[156.68457031250003,71.09375],[158.03701171875005,71.03925781250001],[159.35068359375006,70.79072265625001],[160.00644531250006,70.30966796875006],[159.72939453125005,69.87021484375006],[160.91074218750012,69.60634765625002],[161.03554687500005,69.09819335937507],[161.30986328125007,68.98227539062498],[160.85605468750006,68.53833007812506],[161.565625,68.90517578125],[161.53691406250002,69.379541015625],[162.16601562499997,69.61157226562503],[163.20136718750004,69.71474609375],[166.82031250000003,69.49956054687505],[167.8568359375,69.72822265624998],[168.30302734375002,69.27148437500003],[169.31064453125006,69.07954101562498],[169.60986328124997,68.78603515624997],[170.53759765624997,68.82539062500001],[170.99541015625002,69.04531250000005],[170.58222656250004,69.58334960937506],[170.16093750000007,69.62656249999998],[170.48681640625003,70.107568359375],[173.27744140625006,69.823828125],[173.43867187500004,69.94682617187502],[175.92148437500012,69.89531250000002],[179.27265624999998,69.25966796875002],[180,68.98344726562505],[180,65.06723632812498],[178.51953125000003,64.60297851562498],[177.7486328125,64.71704101562503],[176.88085937499997,65.08193359375002],[176.34101562500015,65.04731445312501],[177.03730468750004,64.99965820312497],[177.22285156250004,64.861669921875],[177.06875,64.78666992187502],[176.06113281250012,64.96088867187498],[174.54882812500009,64.68388671875005],[176.0565429687501,64.90473632812498],[176.35097656250005,64.70512695312502],[176.14091796875007,64.58583984375005],[177.42744140625015,64.76337890624998],[177.43291015625002,64.44448242187502],[177.6875,64.30473632812507],[178.04472656250013,64.21958007812503],[178.22949218749991,64.36440429687497],[178.38144531250018,64.26088867187502],[178.73144531250003,63.667089843750006],[178.44042968750009,63.605566406250006],[178.74404296874994,63.39477539062503],[178.79296874999997,63.54033203125002],[179.38857421875,63.14721679687497],[179.25957031250002,63.00830078125],[179.5705078125001,62.6875],[179.12070312500012,62.32036132812499],[177.292578125,62.59902343750002],[177.33896484375006,62.781347656250034],[177.02353515625012,62.777246093749994],[177.15947265625007,62.56098632812498],[174.51435546875015,61.823632812499966],[173.6234375,61.716064453125],[173.13183593749997,61.40664062500002],[172.85654296875006,61.469189453124955],[172.90800781250002,61.311621093750006],[172.39609375000006,61.16738281250002],[172.39277343750004,61.061767578125],[170.60820312500007,60.434912109375034],[170.3509765625,59.965527343749955],[169.9826171875001,60.067089843749955],[169.2267578125001,60.59594726562497],[168.1375,60.57392578125001],[167.22675781250004,60.406298828125045],[166.27304687500012,59.85625],[166.13603515625007,59.979345703125034],[166.35214843750006,60.48481445312498],[165.08457031250006,60.09858398437498],[164.95371093750006,59.843603515625006],[164.52529296875,60.06127929687503],[164.11328125000003,59.89755859374998],[164.13505859375002,59.984375],[163.74384765625004,60.02802734374998],[163.36484375000012,59.78144531250004],[163.27285156250005,59.302587890625006],[162.14160156249997,58.44741210937502],[161.96005859375012,58.07690429687506],[162.39140625000002,57.717236328124955],[162.65429687499997,57.94824218750003],[163.22578125000004,57.790380859375034],[162.77929687500003,57.35761718749998],[162.79111328125012,56.875390624999966],[162.92207031250004,56.72265625000003],[163.2565429687501,56.68803710937499],[163.33554687500012,56.232519531250006],[163.04736328125003,56.044677734375],[162.84033203125003,56.065625],[162.628125,56.232275390625034],[163.03837890625002,56.521875],[162.67148437500006,56.49008789062498],[162.52822265625005,56.260693359374955],[162.08496093749997,56.08964843750002],[161.72392578125002,55.49614257812499],[162.10556640625006,54.75214843750004],[161.62480468750002,54.51625976562502],[160.77265625000004,54.54135742187498],[160.0744140625001,54.18916015625001],[159.84375,53.78364257812498],[160.02509765625004,53.129589843749955],[159.58593750000003,53.237695312499966],[158.74541015625002,52.90893554687506],[158.47207031250005,53.032373046874966],[158.6087890625,52.873632812500034],[158.49316406249997,52.383154296875034],[158.10351562500003,51.80961914062499],[156.84746093750002,51.006591796875],[156.74775390625004,50.969287109375045],[156.52119140625004,51.38027343750002],[156.36474609374997,52.509375],[156.11035156250003,52.86616210937504],[155.62031250000004,54.86455078125002],[155.5548828125001,55.348486328125034],[155.98251953125012,56.69521484375002],[156.8488281250001,57.290185546874994],[156.97675781250004,57.46630859375],[156.82988281250007,57.77963867187498],[157.4503906250001,57.79926757812498],[157.66640625000005,58.01977539062506],[158.27519531250007,58.00898437499998],[159.21064453125004,58.519433593749966],[159.8473632812501,59.127148437499955],[161.75351562500012,60.15229492187501],[162.06816406250002,60.466406250000034],[163.70996093749997,60.916796875000045],[163.55351562500002,61.02563476562503],[164.00546875000006,61.34379882812499],[163.80439453125004,61.46137695312498],[164.20722656250004,62.29223632812506],[164.59833984375004,62.470556640625034],[165.20810546875012,62.37397460937501],[165.41738281250005,62.447070312500045],[164.418359375,62.704638671875045],[163.33173828125004,62.550927734374994],[163.01767578125006,61.89106445312504],[163.25781249999997,61.69946289062497],[163.08525390625002,61.570556640625],[162.85595703125003,61.705029296874955],[162.39257812500003,61.662109375],[160.76660156249997,60.753320312499966],[160.17363281250002,60.638427734375],[160.37890625000003,61.02548828124998],[159.79042968750005,60.956640625],[160.309375,61.894384765625006],[159.55234375000012,61.71948242187497],[159.18925781250007,61.92939453125001],[158.07011718750002,61.75361328125001],[157.46933593750012,61.798925781250006],[157.0841796875001,61.67568359375002],[155.71611328125002,60.682373046875],[154.97080078125012,60.376660156249955],[154.29306640625006,59.833349609375034],[154.1498046875,59.52851562500001],[154.97128906250006,59.44960937500002],[155.16044921875002,59.19013671875001],[154.45800781250003,59.21655273437497],[154.01093750000004,59.075537109375006],[153.69521484375005,59.22475585937505],[153.36113281250002,59.214794921874955],[152.81787109375003,58.92626953124997],[152.31962890625002,59.03076171875003],[152.08789062499997,58.910449218750045],[151.32675781250006,58.875097656250034],[151.12109375000003,59.08251953125003],[152.26064453125,59.22358398437498],[151.34824218750012,59.561132812500006],[150.4835937500001,59.494384765625],[150.66728515625002,59.55634765625001],[149.64257812499997,59.770410156249994],[149.06523437500002,59.63051757812502],[149.20498046875,59.488183593749966],[148.79707031250004,59.532324218750006],[148.74414062499997,59.37353515624997],[148.96464843750007,59.36914062499997],[148.72666015625006,59.257910156250034],[148.25742187500006,59.414208984374994],[147.51445312500002,59.2685546875],[146.53720703125006,59.45698242187501],[146.0495117187501,59.17055664062502],[145.55458984375,59.413525390624955],[143.19218750000002,59.3701171875],[142.58027343750004,59.240136718749966],[140.79023437500004,58.30346679687503],[140.446875,57.81367187499998],[138.66210937500003,56.96552734375004],[137.69150390625006,56.13935546875004],[135.2625,54.94331054687498],[135.25771484375005,54.73149414062499],[135.85156249999997,54.583935546874955],[136.797265625,54.62099609375005],[136.71884765625006,53.804101562499994],[137.15537109375012,53.82167968750002],[137.14160156249997,54.182226562500006],[137.66601562500003,54.283300781250006],[137.3392578125,54.10053710937498],[137.83476562500002,53.94672851562498],[137.25371093750007,53.546142578125],[137.95048828125007,53.60356445312499],[138.52792968750012,53.959863281249994],[138.56914062500002,53.818798828124955],[138.24970703125004,53.524023437500034],[138.45068359375003,53.53701171875002],[138.69941406250004,53.869726562500034],[138.65722656249997,54.29833984375003],[139.31972656250005,54.19296874999998],[139.707421875,54.27714843749999],[140.68759765625012,53.59643554687503],[141.3737304687501,53.29277343749999],[141.18125,53.01528320312505],[140.83964843750002,53.087890625],[141.25585937499997,52.84013671874996],[141.13242187500006,52.435693359374994],[141.48525390625,52.17851562500002],[141.36689453125004,51.92065429687506],[140.93261718750003,51.61992187499999],[140.5208984375,50.80019531250005],[140.62451171874997,50.08242187500002],[140.46269531250002,49.911474609375006],[140.51718750000012,49.59614257812498],[140.17060546875004,48.52368164062497],[138.58681640625005,47.057226562500006],[138.33691406250003,46.543408203124955],[137.68544921875,45.81835937500003],[136.14228515625004,44.489111328125034],[135.87460937500012,44.37353515625003],[135.1310546875001,43.52573242187506],[134.01044921875004,42.94746093750001],[133.15996093750007,42.69697265624998],[132.70898437500003,42.875830078125006],[132.30380859375006,42.88330078125],[132.30957031249997,43.31352539062499],[131.8666015625,43.09516601562501],[131.93896484374997,43.30195312500004],[131.15830078125012,42.62602539062499],[130.709375,42.656396484374966],[130.8341796875001,42.52294921875006],[130.68730468750007,42.30253906249999]]],[[[107.69550781250004,78.13090820312505],[107.48164062500004,78.057763671875],[106.41552734375003,78.13984375000001],[107.69550781250004,78.13090820312505]]],[[[102.88476562499997,79.25395507812505],[102.4123046875001,78.83544921874997],[103.80078124999997,79.14926757812503],[104.45205078125005,78.880029296875],[105.14599609375003,78.81884765625006],[105.31259765625012,78.49990234375],[104.74179687500012,78.33974609374997],[102.79667968750007,78.18789062500002],[101.20410156249997,78.19194335937505],[99.50029296875002,77.97607421875003],[101.590625,79.350439453125],[102.25126953125002,79.25605468749995],[102.40488281250006,79.43320312499998],[102.88476562499997,79.25395507812505]]],[[[76.24892578125005,79.65107421874995],[77.58896484375012,79.50190429687504],[76.64951171875012,79.493408203125],[76.24892578125005,79.65107421874995]]],[[[92.68349609375005,79.685205078125],[91.37626953125007,79.83549804687505],[91.22929687500007,80.03071289062504],[93.803125,79.904541015625],[92.68349609375005,79.685205078125]]],[[[51.409277343750006,79.94423828125],[50.09140625,79.98056640625003],[50.93632812500002,80.09423828125],[51.409277343750006,79.94423828125]]],[[[59.68886718750005,79.95581054687506],[58.91923828125002,79.98461914062506],[59.54453125000006,80.11884765624995],[59.68886718750005,79.95581054687506]]],[[[97.67451171875004,80.15825195312499],[97.65166015625002,79.76064453125],[98.59648437500002,80.05219726562495],[100.0612304687501,79.77709960937506],[99.68066406250003,79.32333984374998],[99.04179687500007,79.29301757812502],[99.92929687500012,78.96142578124997],[98.41113281250003,78.78779296875004],[95.53105468750007,79.09809570312501],[95.02041015625005,79.05268554687498],[94.21875,79.40234375],[93.07080078124997,79.49531250000001],[94.98730468749997,80.096826171875],[95.28134765625012,80.030517578125],[97.67451171875004,80.15825195312499]]],[[[50.05175781250003,80.07431640625003],[49.55605468750005,80.15893554687503],[49.883691406249994,80.230224609375],[50.05175781250003,80.07431640625003]]],[[[57.07871093750006,80.35092773437498],[56.986914062500006,80.07148437499998],[55.811621093750006,80.08715820312497],[56.02441406250003,80.34130859374997],[57.07871093750006,80.35092773437498]]],[[[53.521386718749994,80.18520507812497],[52.34355468750002,80.213232421875],[52.85390625,80.40239257812499],[53.85166015625006,80.26835937500005],[53.521386718749994,80.18520507812497]]],[[[57.95625,80.12324218749995],[57.33232421875002,80.15810546875005],[57.075,80.49394531249999],[59.25546875000006,80.34321289062501],[58.39794921874997,80.31875],[57.95625,80.12324218749995]]],[[[54.41533203125002,80.47280273437502],[53.811914062499994,80.47622070312502],[53.87724609375002,80.60527343750002],[54.41533203125002,80.47280273437502]]],[[[47.441992187500006,80.853662109375],[48.44570312500005,80.80600585937506],[48.68359375000003,80.63325195312504],[47.7052734375001,80.76518554687499],[46.141406250000074,80.44672851562495],[45.969042968750074,80.56948242187502],[44.9049804687501,80.61127929687501],[47.441992187500006,80.853662109375]]],[[[62.167773437500074,80.83476562500005],[62.07578125000006,80.616943359375],[61.05126953124997,80.418603515625],[60.27832031249997,80.49443359374999],[59.649804687499994,80.43125],[59.59228515625003,80.81650390624998],[62.167773437500074,80.83476562500005]]],[[[50.278125,80.92724609374997],[51.70361328125003,80.68764648437502],[48.81103515625003,80.35371093750001],[48.97753906250003,80.16259765624997],[47.73730468749997,80.08168945312502],[47.89296875000005,80.23925781249997],[46.991015625000074,80.182763671875],[46.644433593749994,80.30034179687507],[47.89580078125002,80.52905273437503],[49.087792968749994,80.515771484375],[49.24433593750004,80.82138671875],[50.278125,80.92724609374997]]],[[[80.02666015625007,80.84814453125003],[79.09853515625005,80.81206054687505],[79.21738281250012,80.96035156249997],[80.27958984375007,80.94980468750003],[80.02666015625007,80.84814453125003]]],[[[61.1408203125001,80.95034179687497],[60.0783203125001,80.99916992187497],[61.45742187499999,81.10395507812501],[61.1408203125001,80.95034179687497]]],[[[54.71894531250004,81.11596679687497],[56.47226562500006,80.99824218749995],[57.58037109375002,80.75546874999998],[55.88339843750006,80.62841796875003],[54.66816406250004,80.73867187500002],[54.04541015624997,80.87197265625],[54.71894531250004,81.11596679687497]]],[[[58.62236328125002,81.04165039062502],[58.930566406249994,80.83168945312497],[58.28564453124997,80.76489257812503],[57.21093749999997,81.01708984374997],[58.04951171875004,81.11845703125002],[58.62236328125002,81.04165039062502]]],[[[63.37382812500002,80.70009765624997],[62.59257812500002,80.85302734375006],[64.80205078125002,81.197265625],[65.43740234375005,80.93071289062507],[63.37382812500002,80.70009765624997]]],[[[91.56718750000007,81.14121093750003],[91.2228515625001,81.063818359375],[89.90117187500002,81.17070312500002],[91.56718750000007,81.14121093750003]]],[[[96.52656250000004,81.0755859375],[97.86992187500007,80.76328125000006],[97.02539062499997,80.53554687500002],[97.29843750000006,80.27275390625005],[93.6546875,80.009619140625],[91.52382812500005,80.35854492187502],[93.2625,80.79125976562497],[92.59257812500007,80.780859375],[92.7103515625,80.87216796875003],[95.1595703125,81.27099609375003],[95.80068359375005,81.28046874999998],[96.52656250000004,81.0755859375]]],[[[57.81025390625004,81.54604492187502],[58.563867187499994,81.41840820312504],[57.858691406250074,81.36806640625],[57.76972656250004,81.16972656249999],[55.71669921875005,81.1884765625],[55.46601562500004,81.31118164062502],[57.81025390625004,81.54604492187502]]],[[[63.65097656250006,81.60932617187501],[62.10644531249997,81.679345703125],[63.709570312500006,81.68730468750002],[63.65097656250006,81.60932617187501]]],[[[58.29541015625003,81.715185546875],[58.13457031250002,81.82797851562498],[59.261816406250006,81.85419921874998],[59.35644531250003,81.75898437499995],[58.29541015625003,81.715185546875]]]]},"properties":{"name":"Russia","childNum":73}},{"geometry":{"type":"Polygon","coordinates":[[[30.50996093750001,-1.067285156250009],[30.47705078125,-1.0830078125],[30.47021484375,-1.131152343750003],[30.508105468750017,-1.208203125000011],[30.631933593750006,-1.367480468750003],[30.710742187500017,-1.396777343750003],[30.76220703125,-1.458691406250011],[30.812597656250006,-1.563085937500006],[30.8765625,-2.143359375],[30.85498046875,-2.265429687500003],[30.828710937500006,-2.338476562500006],[30.7625,-2.371679687500006],[30.71484375,-2.363476562500011],[30.656640625000023,-2.373828125],[30.593359375,-2.396777343750003],[30.553613281250023,-2.400097656250011],[30.408496093750017,-2.31298828125],[30.117285156250006,-2.416601562500006],[29.93017578125,-2.339550781250011],[29.8681640625,-2.71640625],[29.698046875000017,-2.794726562500003],[29.390234375,-2.80859375],[29.10205078125,-2.595703125],[29.01435546875001,-2.72021484375],[28.893945312500023,-2.635058593750003],[28.876367187500023,-2.400292968750009],[29.13154296875001,-2.195117187500003],[29.196582031250017,-1.719921875000011],[29.576953125000017,-1.387890625000011],[29.82539062500001,-1.335546875],[29.930078125000023,-1.469921875000011],[30.360253906250023,-1.074609375],[30.41230468750001,-1.063085937500006],[30.46992187500001,-1.066015625],[30.50996093750001,-1.067285156250009]]]},"properties":{"name":"Rwanda","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[41.98769531250005,16.715625],[42.059960937499994,16.803515625000017],[42.15781250000006,16.570703125000023],[41.80156250000002,16.778759765624955],[41.86044921875006,17.002539062499977],[41.98769531250005,16.715625]]],[[[46.53144531250004,29.09624023437499],[47.433203125,28.989550781250017],[47.671289062499994,28.53315429687504],[48.442480468750006,28.542919921874983],[48.80898437499999,27.895898437499966],[48.797167968750074,27.72431640625001],[49.2375,27.49272460937499],[49.17509765625002,27.43764648437505],[49.40527343749997,27.18095703124996],[50.149804687499994,26.66264648437499],[50.00810546875002,26.678515625000017],[50.21386718750003,26.30849609375005],[50.15546875000004,26.100537109374955],[50.03164062499999,26.11098632812505],[50.55791015625002,25.086669921875],[50.66689453125005,24.96381835937501],[50.72558593749997,24.869384765625057],[50.80439453125004,24.789257812499983],[50.928320312500006,24.595117187500023],[50.96601562500004,24.573925781249983],[51.022753906250074,24.56523437499999],[51.09335937500006,24.564648437499955],[51.178027343750074,24.586718750000017],[51.26796875,24.607226562500017],[51.33847656250006,24.564355468749994],[51.41123046875006,24.570800781250057],[51.30986328125002,24.340380859375017],[51.56835937500003,24.286181640625074],[51.592578125000074,24.07885742187503],[52.55507812500005,22.932812499999955],[55.104296875000074,22.621484375000023],[55.185839843750074,22.7041015625],[55.64101562499999,22.001855468749994],[54.97734375000002,19.995947265625006],[51.977636718750006,18.996142578125074],[49.04199218750003,18.58178710937503],[48.17216796875002,18.156933593749983],[47.57958984374997,17.448339843750034],[47.44179687499999,17.111865234375045],[47.14355468749997,16.946679687499966],[46.97568359375006,16.953466796875034],[46.72763671875006,17.26557617187501],[45.5353515625001,17.30205078124999],[45.14804687500006,17.427441406249955],[43.91699218749997,17.32470703124997],[43.41796875000003,17.516259765625023],[43.19091796875003,17.359375],[43.16503906249997,16.689404296874955],[42.79931640624997,16.37177734375001],[42.29394531249997,17.434960937499966],[41.75,17.88574218749997],[41.22949218750003,18.678417968749983],[40.75917968750005,19.755468750000034],[40.080664062500006,20.265917968750017],[39.728320312500074,20.390332031249955],[39.27607421875004,20.973974609375034],[39.093554687500074,21.31035156249999],[39.14707031250006,21.518994140624955],[38.98789062500006,21.88173828125005],[39.06201171874997,22.592187500000023],[38.46416015625002,23.71186523437504],[37.91972656250002,24.185400390625063],[37.54306640625006,24.291650390625023],[37.18085937500004,24.82001953125001],[37.26630859375004,24.960058593750034],[37.14882812499999,25.291113281249977],[35.18046875000002,28.03486328125004],[34.722070312499994,28.130664062500017],[34.625,28.064501953125017],[34.95078125,29.353515625],[36.068457031250006,29.200537109375006],[36.28281250000006,29.355371093750023],[36.47607421874997,29.49511718749997],[36.59179687500003,29.666113281250006],[36.703906250000074,29.831640624999977],[36.75527343750005,29.86601562499996],[37.46923828125003,29.995068359374955],[37.49072265625003,30.01171874999997],[37.55361328125005,30.14458007812496],[37.63359375000002,30.313281250000045],[37.64990234374997,30.330957031249994],[37.669726562500074,30.34814453125003],[37.862890625,30.44262695312503],[37.98007812500006,30.5],[37.47900390624997,31.007763671874955],[37.10527343750002,31.35517578125004],[36.95859375000006,31.491503906250017],[37.215625,31.55610351562501],[37.49335937500004,31.625878906250023],[38.111425781250006,31.78115234375005],[38.37548828124997,31.84746093749996],[38.962304687499994,31.99492187499999],[38.99707031249997,32.00747070312505],[39.145410156249994,32.12451171875],[39.36865234374997,32.09174804687498],[39.70410156250003,32.04252929687499],[40.02783203124997,31.995019531249994],[40.3693359375001,31.93896484375003],[40.47890625000005,31.89335937499999],[42.07441406250004,31.08037109374999],[43.77373046875002,29.84921875],[44.71650390625004,29.19360351562503],[46.35644531250003,29.06367187500001],[46.53144531250004,29.09624023437499]]]]},"properties":{"name":"Saudi Arabia","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[36.87138671875002,21.996728515624994],[36.92695312500001,21.58652343749999],[37.25859375000002,21.108544921874994],[37.25722656250002,21.03940429687499],[37.15058593750001,21.103759765625],[37.14111328125,20.98178710937499],[37.19316406250002,20.12070312499999],[37.471289062500006,18.820117187500003],[38.609472656250006,18.005078125],[38.422460937500006,17.823925781249997],[38.39716796875001,17.778369140625003],[38.38554687500002,17.751269531250003],[38.37373046875001,17.717333984375003],[38.34736328125001,17.68359375],[38.28984375000002,17.637011718750003],[38.26728515625001,17.61669921875],[38.253515625,17.584765625],[37.78242187500001,17.4580078125],[37.547460937500006,17.324121093749994],[37.51015625000002,17.288134765625003],[37.45292968750002,17.108691406250003],[37.41103515625002,17.06171875],[37.24882812500002,17.056884765625],[37.16953125,17.04140625],[37.0615234375,17.061279296875],[37.00898437500001,17.058886718750003],[36.995214843750006,17.020556640625003],[36.97578125000001,16.86655273437499],[36.97871093750001,16.800585937500003],[36.887792968750006,16.624658203124994],[36.91376953125001,16.296191406250003],[36.566015625,15.362109375],[36.4267578125,15.132080078125],[36.44814453125002,14.940087890624994],[36.470800781250006,14.736474609374994],[36.52431640625002,14.2568359375],[36.12519531250001,12.75703125],[35.67021484375002,12.623730468749997],[35.1123046875,11.816552734374994],[34.93144531250002,10.864794921874989],[34.77128906250002,10.746191406249991],[34.571875,10.880175781249989],[34.34394531250001,10.658642578124997],[34.31123046875001,10.190869140624997],[34.078125,9.461523437499991],[33.87148437500002,9.506152343749989],[33.96328125000002,9.861767578124997],[33.90703125000002,10.181445312499989],[33.13007812500001,10.745947265624991],[33.073339843750006,11.606103515624994],[33.199316406250006,12.21728515625],[32.721875,12.223095703124997],[32.73671875000002,12.009667968749994],[32.072265625,12.006738281249994],[32.338476562500006,11.710107421874994],[32.42080078125002,11.089111328125],[31.224902343750017,9.799267578124997],[30.75537109375,9.731201171875],[30.003027343750006,10.277392578124989],[29.60546875,10.065087890624994],[29.47314453125,9.768603515624989],[28.979589843750006,9.594189453124997],[28.844531250000017,9.326074218749994],[28.048925781250006,9.32861328125],[27.880859375,9.601611328124989],[27.07421875,9.613818359374989],[26.65869140625,9.484130859375],[25.91914062500001,10.169335937499994],[25.858203125000017,10.406494140625],[25.211718750000017,10.329931640624991],[25.066992187500006,10.293798828124991],[24.785253906250006,9.774658203125],[24.53193359375001,8.886914062499997],[24.147363281250023,8.665625],[23.53730468750001,8.815820312499994],[23.46826171875,9.11474609375],[23.62265625,9.340625],[23.646289062500017,9.822900390624994],[22.86005859375001,10.919677734375],[22.922656250000017,11.344873046874994],[22.591113281250017,11.579882812499989],[22.580957031250023,11.990136718749994],[22.472460937500017,12.067773437499994],[22.352343750000017,12.660449218749989],[21.928125,12.678125],[21.825292968750006,12.79052734375],[22.228125,13.32958984375],[22.1064453125,13.7998046875],[22.53857421875,14.161865234375],[22.38154296875001,14.550488281249997],[22.6708984375,14.722460937500003],[22.93232421875001,15.162109375],[22.933886718750017,15.533105468749994],[23.10517578125001,15.702539062499994],[23.970800781250006,15.721533203124991],[23.980273437500017,19.496630859375003],[23.980273437500017,19.99594726562499],[24.9794921875,20.002587890624994],[24.980273437500017,21.995849609375],[28.036425781250017,21.995361328125],[31.092675781250023,21.994873046875],[31.260644531250023,22.00229492187499],[31.400292968750023,22.202441406250003],[31.486132812500017,22.14780273437499],[31.434472656250023,21.995849609375],[36.87138671875002,21.996728515624994]]]},"properties":{"name":"Sudan","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[34.078125,9.461523437499991],[34.07275390625,8.545263671874991],[33.95332031250001,8.443505859374994],[33.28105468750002,8.437255859375],[32.99892578125002,7.899511718749991],[33.902441406250006,7.509521484375],[34.06425781250002,7.225732421874994],[34.71064453125001,6.660302734374994],[34.98359375000001,5.858300781249994],[35.26835937500002,5.492285156249991],[35.08447265625,5.311865234374991],[34.87832031250002,5.109570312499997],[34.63984375000001,4.87548828125],[34.38017578125002,4.620654296874989],[34.176855468750006,4.419091796874994],[33.97607421875,4.22021484375],[33.74160156250002,3.985253906249994],[33.568457031250006,3.81171875],[33.489355468750006,3.755078125],[32.99726562500001,3.880175781249989],[32.33574218750002,3.706201171874994],[32.13593750000001,3.519726562499997],[31.79804687500001,3.802636718749994],[31.547167968750017,3.677587890624991],[31.15234375,3.785595703124997],[30.83857421875001,3.49072265625],[30.757226562500023,3.62421875],[30.586718750000017,3.62421875],[30.50830078125,3.835693359375],[30.194921875,3.98193359375],[29.676855468750006,4.5869140625],[29.469628906250023,4.61181640625],[29.224902343750017,4.391894531249989],[28.72705078125,4.504980468749991],[28.427539062500017,4.324169921874997],[28.19208984375001,4.350244140624994],[27.7880859375,4.644677734374994],[27.4033203125,5.109179687499989],[27.143945312500023,5.722949218749989],[26.514257812500006,6.069238281249994],[26.30859375,6.455322265625],[26.36181640625,6.635302734374989],[25.27890625,7.427490234375],[25.18134765625001,7.557226562499991],[25.20039062500001,7.807910156249989],[24.853320312500017,8.137548828124991],[24.291406250000023,8.29140625],[24.147363281250023,8.665625],[24.53193359375001,8.886914062499997],[24.785253906250006,9.774658203125],[25.066992187500006,10.293798828124991],[25.211718750000017,10.329931640624991],[25.858203125000017,10.406494140625],[25.91914062500001,10.169335937499994],[26.65869140625,9.484130859375],[27.07421875,9.613818359374989],[27.880859375,9.601611328124989],[28.048925781250006,9.32861328125],[28.844531250000017,9.326074218749994],[28.979589843750006,9.594189453124997],[29.47314453125,9.768603515624989],[29.60546875,10.065087890624994],[30.003027343750006,10.277392578124989],[30.75537109375,9.731201171875],[31.224902343750017,9.799267578124997],[32.42080078125002,11.089111328125],[32.338476562500006,11.710107421874994],[32.072265625,12.006738281249994],[32.73671875000002,12.009667968749994],[32.721875,12.223095703124997],[33.199316406250006,12.21728515625],[33.073339843750006,11.606103515624994],[33.13007812500001,10.745947265624991],[33.90703125000002,10.181445312499989],[33.96328125000002,9.861767578124997],[33.87148437500002,9.506152343749989],[34.078125,9.461523437499991]]]},"properties":{"name":"S. Sudan","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-12.280615234374977,14.809033203124997],[-12.228417968749994,14.45859375],[-12.019189453124994,14.206494140624997],[-11.960888671874983,13.875292968750003],[-12.05419921875,13.633056640625],[-11.831689453124994,13.315820312499994],[-11.634960937499983,13.369873046875],[-11.390380859375,12.941992187499991],[-11.389404296875,12.404394531249991],[-12.399072265624994,12.340087890625],[-12.930712890624989,12.532275390624989],[-13.061279296875,12.489990234375],[-13.082910156249994,12.633544921875],[-13.729248046875,12.673925781249991],[-14.06484375,12.67529296875],[-14.349218749999977,12.676416015624994],[-15.196093749999989,12.679931640625],[-15.3779296875,12.588964843749991],[-15.574804687499977,12.490380859374994],[-15.839550781249983,12.43789062499999],[-16.144189453124994,12.45742187499999],[-16.24150390624999,12.443310546874997],[-16.41630859374999,12.36767578125],[-16.521337890624977,12.3486328125],[-16.656933593749983,12.364355468749991],[-16.711816406249994,12.354833984374991],[-16.76030273437499,12.52578125],[-16.44287109375,12.609472656249991],[-16.59765625,12.715283203124997],[-16.743896484375,12.58544921875],[-16.763330078124994,13.064160156249997],[-16.648779296874977,13.154150390624991],[-15.834277343749989,13.156445312499997],[-15.814404296874983,13.325146484374997],[-15.286230468749977,13.39599609375],[-15.151123046875,13.556494140624991],[-14.246777343749983,13.23583984375],[-13.826708984374989,13.4078125],[-13.977392578124977,13.54345703125],[-14.405468749999983,13.503710937500003],[-15.108349609374983,13.81210937499999],[-15.426855468749977,13.727001953124997],[-15.509667968749994,13.586230468750003],[-16.56230468749999,13.587304687499994],[-16.766943359374977,13.904931640624994],[-16.618115234374983,14.04052734375],[-16.791748046875,14.004150390625],[-17.168066406249977,14.640625],[-17.345800781249977,14.729296875],[-17.445019531249983,14.651611328125],[-17.53564453125,14.755126953125],[-17.147167968749983,14.922021484374994],[-16.843408203124994,15.293994140625003],[-16.570751953124983,15.734423828125003],[-16.535253906249977,15.83837890625],[-16.502050781249977,15.917333984374991],[-16.480078124999977,16.097216796875003],[-16.441015624999977,16.204541015624997],[-16.239013671875,16.531298828125003],[-15.768212890624994,16.485107421875],[-14.990625,16.676904296874994],[-14.300097656249989,16.580273437499997],[-13.868457031249989,16.148144531249997],[-13.756640624999989,16.172509765624994],[-13.40966796875,16.05917968749999],[-13.105273437499989,15.57177734375],[-12.735253906249994,15.13125],[-12.40869140625,14.889013671874991],[-12.280615234374977,14.809033203124997]]]},"properties":{"name":"Senegal","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[103.9697265625,1.331445312499994],[103.65019531249999,1.325537109374991],[103.81796875000003,1.447070312499989],[103.9697265625,1.331445312499994]]]},"properties":{"name":"Singapore","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-37.10332031249996,-54.065625],[-36.70380859375001,-54.10810546874999],[-36.64741210937498,-54.26230468749996],[-36.32646484374996,-54.251171875],[-35.79858398437497,-54.76347656250002],[-36.08549804687499,-54.86679687500001],[-36.885986328125,-54.33945312499996],[-37.63090820312496,-54.16748046875001],[-37.61884765625001,-54.04208984375004],[-38.017431640625034,-54.008007812500026],[-37.10332031249996,-54.065625]]]},"properties":{"name":"S. Geo. and S. Sandw. Is.","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-5.692138671874972,-15.997753906249997],[-5.782519531250017,-16.00400390625002],[-5.707861328124977,-15.90615234374998],[-5.692138671874972,-15.997753906249997]]]},"properties":{"name":"Saint Helena","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[160.57626953125006,-11.797851562500028],[160.44306640625004,-11.814941406249957],[159.98632812499997,-11.494726562500006],[160.57626953125006,-11.797851562500028]]],[[[166.13320312500005,-10.757812499999972],[165.90400390625004,-10.851464843749966],[165.79101562500003,-10.784765624999963],[166.02382812500005,-10.6611328125],[166.13320312500005,-10.757812499999972]]],[[[161.71533203124997,-10.387304687499991],[162.10537109375005,-10.45380859375004],[162.37333984375002,-10.823242187499986],[161.78681640625004,-10.716894531249991],[161.53789062500007,-10.566406249999972],[161.4870117187501,-10.361425781249963],[161.29394531250003,-10.326464843750031],[161.30478515625012,-10.204394531250031],[161.71533203124997,-10.387304687499991]]],[[[161.54785156249997,-9.625683593749997],[161.55380859375012,-9.769726562500026],[161.40976562500006,-9.681640625000028],[161.36416015625,-9.353417968750037],[161.54785156249997,-9.625683593749997]]],[[[159.75039062500005,-9.272656250000011],[159.97060546875,-9.433300781249969],[160.35458984375006,-9.421582031249983],[160.81894531250006,-9.862792968749986],[160.64921875000002,-9.92861328124998],[159.80273437499997,-9.763476562500003],[159.61230468749997,-9.470703124999943],[159.62558593750012,-9.311230468749969],[159.75039062500005,-9.272656250000011]]],[[[160.1681640625001,-8.995507812500037],[160.40751953125007,-9.140332031249969],[160.10537109375,-9.080761718749997],[160.1681640625001,-8.995507812500037]]],[[[159.18857421875006,-9.123535156250014],[159.03632812500004,-9.075],[159.12978515625,-8.99306640624998],[159.22841796875005,-9.029980468749955],[159.18857421875006,-9.123535156250014]]],[[[158.10791015625003,-8.684179687500034],[157.93759765625006,-8.73642578125002],[157.90927734375006,-8.565625],[158.10546874999997,-8.536816406250026],[158.10791015625003,-8.684179687500034]]],[[[157.38896484375002,-8.713476562499963],[157.2123046875,-8.565039062500006],[157.37949218750012,-8.420898437499943],[157.38896484375002,-8.713476562499963]]],[[[160.7494140625,-8.313964843750014],[160.99765625000006,-8.612011718749983],[160.94433593750003,-8.799023437499983],[161.15869140624997,-8.961816406250009],[161.36738281250004,-9.61123046874998],[160.77207031250012,-8.963867187499986],[160.7140625000001,-8.539257812499997],[160.59042968750006,-8.372753906249997],[160.7494140625,-8.313964843750014]]],[[[157.76347656250002,-8.242187499999957],[157.89843749999997,-8.506347656249943],[157.81933593750003,-8.612011718749983],[157.58789062500003,-8.445410156249963],[157.5580078125,-8.269921875],[157.30244140625004,-8.33330078124996],[157.21757812500002,-8.262792968749977],[157.490625,-7.965722656250037],[157.76347656250002,-8.242187499999957]]],[[[157.171875,-8.108105468749997],[156.95830078125002,-8.014355468749997],[157.02412109375004,-7.867871093749997],[157.18613281250006,-7.941210937500017],[157.171875,-8.108105468749997]]],[[[156.687890625,-7.92304687500004],[156.5109375000001,-7.707812499999974],[156.5609375,-7.574023437499989],[156.80908203124997,-7.722851562500026],[156.687890625,-7.92304687500004]]],[[[159.8791015625001,-8.534277343749949],[158.9440429687501,-8.04072265625004],[158.457421875,-7.544726562499974],[158.734375,-7.604296875000031],[159.43144531250002,-8.029003906249955],[159.84306640625002,-8.326953124999989],[159.8791015625001,-8.534277343749949]]],[[[155.83984374999997,-7.097167968750014],[155.67753906250002,-7.08896484375002],[155.73896484375004,-6.972949218750017],[155.83984374999997,-7.097167968750014]]],[[[157.48671875000005,-7.330371093750003],[157.44130859375,-7.425683593749966],[157.10156249999997,-7.323632812499966],[156.4525390625,-6.638281249999963],[157.03027343750003,-6.891992187499952],[157.19335937499997,-7.160351562499997],[157.48671875000005,-7.330371093750003]]]]},"properties":{"name":"Solomon Is.","childNum":16}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-12.526074218749926,7.436328125000017],[-12.951611328124926,7.570849609374989],[-12.615234374999972,7.63720703125],[-12.5125,7.582421875000037],[-12.526074218749926,7.436328125000017]]],[[[-10.758593749999989,9.385351562499991],[-10.682714843750006,9.289355468749974],[-10.687646484374937,9.261132812499994],[-10.749951171874926,9.12236328124996],[-10.747021484374955,9.095263671875045],[-10.726855468749932,9.081689453125023],[-10.615966796875,9.059179687499977],[-10.500537109375017,8.687548828125017],[-10.677343749999977,8.400585937499997],[-10.712109374999955,8.335253906250017],[-10.686962890624983,8.321679687500009],[-10.652636718749989,8.330273437499983],[-10.604003906249943,8.319482421874994],[-10.55771484374992,8.315673828125028],[-10.496435546874977,8.362109374999974],[-10.394433593749966,8.480957031250028],[-10.360058593749983,8.49550781249998],[-10.283203124999972,8.48515625],[-10.285742187499949,8.454101562499986],[-10.314648437499983,8.310839843750017],[-10.359814453124926,8.187939453125026],[-10.570849609374932,8.071142578125034],[-10.6474609375,7.759375],[-10.878076171874994,7.538232421874994],[-11.267675781249977,7.232617187499997],[-11.507519531249983,6.906542968750003],[-12.48564453124996,7.386279296875045],[-12.480273437499932,7.75327148437502],[-12.697607421874977,7.715869140625045],[-12.850878906249932,7.818701171875034],[-12.956933593749966,8.145312500000045],[-13.148974609374989,8.214599609375043],[-13.272753906249989,8.429736328124989],[-13.085009765624932,8.42475585937504],[-12.894091796874932,8.62978515624998],[-13.181835937499955,8.576904296875043],[-13.206933593749994,8.843115234375006],[-13.059472656249966,8.881152343750031],[-13.292675781249955,9.04921875],[-13.077294921874966,9.069628906249974],[-12.958789062499989,9.263330078124994],[-12.755859374999943,9.373583984374989],[-12.557861328125,9.704980468749994],[-12.427978515625028,9.898144531250011],[-12.142333984375,9.87539062499999],[-11.911083984374955,9.993017578124977],[-11.273632812499955,9.996533203124983],[-11.205664062499949,9.977734374999969],[-11.180859374999955,9.925341796875045],[-11.047460937499977,9.786328125000054],[-10.758593749999989,9.385351562499991]]]]},"properties":{"name":"Sierra Leone","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[-89.36259765624999,14.416015625],[-89.1205078125,14.370214843749991],[-88.51254882812499,13.978955078124997],[-88.504345703125,13.964208984374991],[-88.49765625,13.904541015625],[-88.482666015625,13.854248046875],[-88.44912109375,13.850976562499994],[-88.40849609374999,13.87539062499999],[-88.27622070312499,13.942675781250003],[-88.151025390625,13.987353515625003],[-87.99101562499999,13.879638671875],[-87.8919921875,13.894970703124997],[-87.80224609375,13.889990234374991],[-87.7314453125,13.841064453125],[-87.71533203125,13.812695312499997],[-87.781884765625,13.521386718749994],[-87.930859375,13.1806640625],[-88.68564453124999,13.281494140625],[-88.51201171874999,13.183935546874991],[-89.80419921875,13.560107421875003],[-90.09521484375,13.736523437499997],[-90.04814453124999,13.904052734375],[-89.54716796874999,14.241259765625003],[-89.5736328125,14.390087890624997],[-89.36259765624999,14.416015625]]]},"properties":{"name":"El Salvador","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-56.26708984374997,46.838476562500034],[-56.38476562499994,46.81943359375006],[-56.36464843749994,47.09897460937498],[-56.26708984374997,46.838476562500034]]]},"properties":{"name":"St. Pierre and Miquelon","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[6.659960937499989,0.120654296874989],[6.51972656250004,0.066308593750023],[6.468164062499994,0.22734375],[6.68691406250008,0.404394531249977],[6.75,0.24345703124996],[6.659960937499989,0.120654296874989]]],[[[7.423828125,1.567724609375006],[7.330664062500034,1.603369140624991],[7.414453125000051,1.699121093750037],[7.423828125,1.567724609375006]]]]},"properties":{"name":"S\xE3o Tom\xE9 and Principe","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[-54.03422851562499,3.62939453125],[-54.00957031249999,3.448535156249989],[-54.06318359375,3.353320312499989],[-54.18803710937499,3.178759765624989],[-54.203125,3.13818359375],[-54.17070312499999,2.993603515624997],[-54.18808593749999,2.874853515624991],[-54.1955078125,2.81787109375],[-54.256738281249994,2.713720703124991],[-54.402001953124994,2.461523437499991],[-54.53593749999999,2.343310546874989],[-54.56840820312499,2.342578124999989],[-54.604736328125,2.335791015624991],[-54.61625976562499,2.326757812499991],[-54.661865234375,2.327539062499994],[-54.697412109374994,2.359814453124997],[-54.72221679687499,2.441650390625],[-54.87607421874999,2.450390625],[-54.92656249999999,2.497363281249989],[-54.968408203124994,2.54833984375],[-54.978662109374994,2.59765625],[-55.005810546875,2.59296875],[-55.0703125,2.54833984375],[-55.11411132812499,2.539208984374994],[-55.1876953125,2.547509765624994],[-55.286035156249994,2.499658203124994],[-55.343994140625,2.48876953125],[-55.38535156249999,2.440625],[-55.73056640624999,2.406152343749994],[-55.957470703125,2.520458984374997],[-55.99350585937499,2.497509765624997],[-56.02036132812499,2.392773437499997],[-56.0451171875,2.364404296874994],[-56.087792968749994,2.34130859375],[-56.12939453125,2.299511718749997],[-56.1376953125,2.259033203125],[-56.073632812499994,2.236767578124997],[-56.02006835937499,2.158154296874997],[-55.96196289062499,2.095117187499994],[-55.91533203124999,2.03955078125],[-55.921630859375,1.976660156249991],[-55.929638671875,1.8875],[-56.01992187499999,1.842236328124997],[-56.4828125,1.942138671875],[-56.704345703125,2.036474609374991],[-57.19736328124999,2.853271484375],[-57.303662109375,3.377099609374994],[-57.646728515625,3.39453125],[-58.05429687499999,4.101660156249991],[-57.84599609374999,4.668164062499997],[-57.91704101562499,4.820410156249991],[-57.711083984374994,4.991064453124991],[-57.331005859375,5.020166015624994],[-57.20981445312499,5.195410156249991],[-57.3185546875,5.335351562499994],[-57.194775390625,5.5484375],[-56.96982421874999,5.992871093749997],[-56.235595703125,5.885351562499991],[-55.897607421874994,5.699316406249991],[-55.909912109375,5.892626953124989],[-55.648339843749994,5.985888671874989],[-54.83369140625,5.988330078124989],[-54.05419921875,5.807910156249989],[-54.08046875,5.502246093749989],[-54.4796875,4.836523437499991],[-54.350732421874994,4.054101562499994],[-54.03422851562499,3.62939453125]]]},"properties":{"name":"Suriname","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[22.538671875,49.072705078125],[22.52412109375001,49.031396484374994],[22.389453125000017,48.873486328125],[22.295214843750017,48.685839843749996],[22.142871093750017,48.568505859374994],[22.1318359375,48.405322265624996],[21.766992187500023,48.3380859375],[21.45136718750001,48.55224609375],[20.490039062500017,48.526904296874996],[20.333789062500017,48.295556640624994],[19.95039062500001,48.146630859374994],[19.625390625000023,48.223095703125],[18.791894531250023,48.000292968749996],[18.72421875,47.787158203124996],[17.76191406250001,47.770166015624994],[17.147363281250023,48.00595703125],[16.86542968750001,48.3869140625],[16.953125,48.598828125],[17.135644531250023,48.841064453125],[17.75849609375001,48.888134765625],[18.0859375,49.06513671875],[18.160937500000017,49.257373046874996],[18.83222656250001,49.510791015624996],[19.1494140625,49.4],[19.44160156250001,49.597705078124996],[19.77392578125,49.37216796875],[19.756640625000017,49.204394531249996],[20.0576171875,49.181298828124994],[20.36298828125001,49.38525390625],[20.868457031250017,49.314697265625],[21.079394531250017,49.418261718749996],[21.6396484375,49.411962890625],[22.020117187500006,49.209521484374996],[22.473046875000023,49.081298828125],[22.538671875,49.072705078125]]]},"properties":{"name":"Slovakia","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[16.516210937500006,46.499902343749994],[16.427636718750023,46.5244140625],[16.321191406250023,46.534619140625],[16.1064453125,46.382226562499994],[15.608984375,46.171923828124996],[15.592578125000017,46.139990234375],[15.596875,46.109228515625],[15.675585937500017,45.983691406249996],[15.652148437500017,45.862158203125],[15.277050781250011,45.7326171875],[15.353710937500011,45.659912109375],[15.283593750000023,45.5796875],[15.291210937500011,45.541552734374996],[15.32666015625,45.502294921875],[15.339453125,45.467041015625],[15.242089843750023,45.44140625],[15.110449218750006,45.45078125],[14.95458984375,45.499902343749994],[14.793066406250006,45.47822265625],[14.649511718750006,45.571484375],[14.591796875,45.651269531249994],[14.56884765625,45.6572265625],[14.548448660714302,45.628388671875],[14.507586495535731,45.59039341517857],[14.42734375,45.505761718749994],[14.369921875000017,45.4814453125],[13.878710937500017,45.428369140624994],[13.577929687500017,45.516894531249996],[13.8447265625,45.59287109375],[13.831152343750006,45.680419921875],[13.663476562500023,45.7919921875],[13.6005859375,45.979785156249996],[13.509179687500023,45.973779296874994],[13.487695312500023,45.987109375],[13.480273437500017,46.009228515625],[13.486425781250006,46.03955078125],[13.548046875000011,46.089111328125],[13.616601562500023,46.133105468749996],[13.634960937500011,46.157763671874996],[13.632519531250011,46.177050781249996],[13.420996093750006,46.212304687499994],[13.399511718750006,46.317529296874994],[13.563281250000017,46.415087890624996],[13.637109375000023,46.448535156249996],[13.6796875,46.462890625],[13.7,46.520263671875],[14.5498046875,46.399707031249996],[14.893261718750011,46.605908203125],[15.957617187500006,46.677636718749994],[16.093066406250017,46.86328125],[16.283593750000023,46.857275390625],[16.516210937500006,46.499902343749994]]]},"properties":{"name":"Slovenia","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[16.52851562500001,56.29052734375],[16.431640625,56.24375],[16.41230468750004,56.568994140624994],[17.02539062499997,57.345068359375006],[16.52851562500001,56.29052734375]]],[[[19.076464843750045,57.8359375],[18.813867187500023,57.70620117187502],[18.907910156250068,57.39833984375002],[18.146386718749994,56.920507812500006],[18.285351562500068,57.08320312500001],[18.136523437500045,57.55664062500003],[18.53740234374999,57.83056640625006],[18.90058593750001,57.91547851562504],[19.076464843750045,57.8359375]]],[[[19.156347656250063,57.92260742187497],[19.086523437500034,57.86499023437506],[19.134863281250034,57.98134765625002],[19.331445312500023,57.962890625],[19.156347656250063,57.92260742187497]]],[[[24.15546875000004,65.80527343750006],[23.102343750000074,65.73535156250003],[22.400976562500006,65.86210937499999],[22.254003906250006,65.59755859375002],[21.565527343750063,65.40810546874997],[21.609179687500074,65.261376953125],[21.410351562500068,65.31743164062505],[21.57392578125001,65.12578124999999],[21.138183593750057,64.80869140625006],[21.519628906250034,64.46308593749998],[20.76269531250003,63.86782226562505],[18.60644531250003,63.17827148437499],[18.31289062500008,62.996386718750045],[18.46308593750004,62.895849609375006],[18.170019531250034,62.789355468750074],[17.906640625000023,62.88676757812502],[18.037304687500068,62.60053710937498],[17.834472656250057,62.50273437500002],[17.410253906250063,62.508398437500034],[17.633691406249994,62.23300781250006],[17.374511718750057,61.866308593750034],[17.465429687500006,61.68447265625005],[17.196386718750006,61.72456054687504],[17.13076171875005,61.57573242187499],[17.25097656250003,60.70078125],[17.6611328125,60.53515625000003],[17.955761718750068,60.589794921874955],[18.85273437500001,60.02587890625],[18.970507812500045,59.757226562499994],[17.964257812500023,59.359375],[18.56025390625004,59.39448242187498],[18.285351562500068,59.109375],[16.978125,58.65415039062506],[16.214257812500023,58.636669921874955],[16.92382812499997,58.49257812499999],[16.651953125,58.43432617187503],[16.65224609375008,57.50068359374998],[16.348730468750063,56.70927734374996],[15.826660156250028,56.12495117187501],[14.782031250000017,56.16191406250002],[14.754785156250051,56.03315429687498],[14.401953125000034,55.97675781250004],[14.21503906250004,55.83261718749998],[14.341699218749994,55.52773437500002],[14.17373046875008,55.396630859374966],[12.885839843750063,55.41137695312506],[12.973925781250074,55.748144531250006],[12.471191406250057,56.29052734375],[12.801660156250051,56.263916015625],[12.65644531250004,56.44057617187502],[12.857421875000028,56.45239257812503],[12.883691406250051,56.61772460937496],[12.421484375000034,56.906396484374966],[11.449316406250063,58.118359374999955],[11.43154296875008,58.339990234374994],[11.24824218750004,58.369140625],[11.14716796875004,58.98862304687498],[11.19580078125,59.07827148437505],[11.388281250000063,59.036523437499966],[11.470703125000057,58.909521484375034],[11.64277343750004,58.92607421875002],[11.798144531250074,59.28989257812498],[11.680761718750034,59.59228515625003],[12.486132812500074,60.10678710937506],[12.588671874999989,60.450732421875045],[12.29414062500004,61.00268554687506],[12.706054687500028,61.059863281250074],[12.88076171875008,61.35229492187506],[12.155371093750006,61.720751953125045],[12.303515625000074,62.28559570312501],[11.999902343750051,63.29169921875001],[12.175195312500051,63.595947265625],[12.792773437500017,64],[13.203515625000023,64.07509765625],[13.960546875000063,64.01401367187498],[14.141210937500006,64.17353515624998],[14.077636718750028,64.464013671875],[13.650292968750023,64.58154296874997],[14.47968750000004,65.30146484374998],[14.543261718750045,66.12934570312498],[15.483789062500051,66.30595703124999],[15.422949218750006,66.48984374999998],[16.40351562500004,67.05498046875002],[16.12744140625,67.42583007812507],[16.783593750000023,67.89501953125],[17.324609375000023,68.10380859374999],[17.91669921875001,67.96489257812502],[18.303027343750045,68.55541992187497],[19.969824218750063,68.35639648437501],[20.348046875000023,68.84873046875003],[20.116699218750057,69.02089843750005],[20.622167968750006,69.036865234375],[21.99746093750005,68.52060546874998],[22.854101562500034,68.36733398437502],[23.63886718750004,67.95439453125002],[23.454882812500045,67.46025390625007],[23.733593750000068,67.42290039062499],[23.64150390625005,67.12939453124997],[23.988574218750045,66.81054687500003],[23.700292968750034,66.25263671874998],[24.15546875000004,65.80527343750006]]]]},"properties":{"name":"Sweden","childNum":4}},{"geometry":{"type":"Polygon","coordinates":[[[31.9482421875,-25.957617187500006],[32.060546875,-26.018359375],[32.04140625000002,-26.28125],[32.10595703125,-26.52001953125],[32.112890625,-26.839453125],[32.02480468750002,-26.811132812500006],[31.994726562500006,-26.817480468750006],[31.967187500000023,-26.96064453125001],[31.946093750000017,-27.173632812500003],[31.958398437500023,-27.30585937500001],[31.742578125000023,-27.30996093750001],[31.469531250000017,-27.295507812500006],[31.274023437500006,-27.238378906250006],[31.063378906250023,-27.1123046875],[30.938085937500006,-26.915820312500003],[30.88330078125,-26.79238281250001],[30.806738281250006,-26.785253906250006],[30.794335937500023,-26.764257812500006],[30.803320312500006,-26.41347656250001],[31.08808593750001,-25.98066406250001],[31.207324218750017,-25.843359375],[31.33515625000001,-25.75556640625001],[31.382617187500017,-25.74296875],[31.415136718750006,-25.74658203125],[31.921679687500017,-25.96875],[31.9482421875,-25.957617187500006]]]},"properties":{"name":"Swaziland","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[55.54033203125002,-4.693066406250011],[55.54296875,-4.785546875],[55.383398437500006,-4.609277343750009],[55.45576171875001,-4.558789062500011],[55.54033203125002,-4.693066406250011]]]},"properties":{"name":"Seychelles","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[42.358984375,37.10859375],[41.78857421875,36.59716796875],[41.41679687500002,36.5146484375],[41.295996093750006,36.383349609374996],[41.354101562500006,35.640429687499996],[41.19472656250002,34.768994140625],[40.98701171875001,34.429052734375],[38.773535156250006,33.372216796874994],[36.818359375,32.317285156249994],[36.3720703125,32.3869140625],[35.78730468750001,32.734912109374996],[35.91347656250002,32.94960937499999],[35.869140625,33.43173828125],[36.03447265625002,33.58505859375],[35.98613281250002,33.75263671875],[36.36503906250002,33.83935546875],[36.27783203125,33.92529296875],[36.5849609375,34.221240234374996],[36.50439453125,34.432373046875],[36.32988281250002,34.499609375],[36.383886718750006,34.65791015625],[35.97626953125001,34.629199218749996],[35.902441406250006,35.420703125],[35.76445312500002,35.571582031249996],[35.83964843750002,35.84921875],[35.892675781250006,35.916552734374996],[35.96757812500002,35.910058593749994],[36.12734375000002,35.831445312499994],[36.15361328125002,35.833886718749994],[36.34755859375002,36.003515625],[36.37539062500002,36.171240234375],[36.63671875,36.233984375],[36.64140625000002,36.263525390625],[36.5375,36.45742187499999],[36.54667968750002,36.50634765625],[36.596875,36.7013671875],[36.62841796875,36.777685546875],[36.65859375000002,36.802539062499996],[36.77656250000001,36.79267578125],[36.94179687500002,36.7583984375],[36.9853515625,36.702392578125],[37.06621093750002,36.652636718749996],[37.43632812500002,36.643310546875],[37.523535156250006,36.6783203125],[37.7203125,36.743701171874996],[37.90664062500002,36.79462890625],[38.19169921875002,36.9015625],[38.7666015625,36.693115234375],[38.90644531250001,36.694677734375],[39.1083984375,36.680566406249994],[39.35664062500001,36.681591796875],[39.50146484375,36.70224609375],[39.6865234375,36.738623046875],[40.01640625000002,36.826074218749994],[40.705664062500006,37.097705078124996],[41.886816406250006,37.156396484374994],[42.05986328125002,37.2060546875],[42.16787109375002,37.288623046874996],[42.202734375,37.29726562499999],[42.24755859375,37.2822265625],[42.2685546875,37.2765625],[42.31289062500002,37.22958984375],[42.358984375,37.10859375]]]},"properties":{"name":"Syria","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-72.3328125,21.85136718749999],[-72.14433593750002,21.79272460937503],[-72.33544921874994,21.758007812499983],[-72.3328125,21.85136718749999]]]},"properties":{"name":"Turks and Caicos Is.","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[23.980273437500017,19.496630859375003],[23.970800781250006,15.721533203124991],[23.10517578125001,15.702539062499994],[22.933886718750017,15.533105468749994],[22.93232421875001,15.162109375],[22.6708984375,14.722460937500003],[22.38154296875001,14.550488281249997],[22.53857421875,14.161865234375],[22.1064453125,13.7998046875],[22.228125,13.32958984375],[21.825292968750006,12.79052734375],[21.928125,12.678125],[22.352343750000017,12.660449218749989],[22.472460937500017,12.067773437499994],[22.580957031250023,11.990136718749994],[22.591113281250017,11.579882812499989],[22.922656250000017,11.344873046874994],[22.86005859375001,10.919677734375],[22.49384765625001,10.996240234374994],[21.771484375,10.642822265625],[21.682714843750006,10.289843749999989],[20.773242187500017,9.405664062499994],[20.342089843750017,9.127099609374994],[18.95625,8.938867187499994],[18.886035156250017,8.836035156249991],[19.108691406250017,8.656152343749994],[18.56416015625001,8.0458984375],[17.6494140625,7.98359375],[16.784765625,7.550976562499997],[16.545312500000023,7.865478515625],[16.37890625,7.683544921874997],[15.957617187500006,7.507568359375],[15.480078125,7.523779296874991],[15.5498046875,7.787890624999989],[15.1162109375,8.557324218749997],[14.332324218750017,9.20351562499999],[13.977246093750011,9.691552734374994],[14.243261718750006,9.979736328125],[15.654882812500006,10.0078125],[15.276074218750011,10.357373046874997],[15.132226562500023,10.648486328124989],[15.029882812500006,11.11367187499999],[15.08125,11.845507812499989],[14.847070312500023,12.502099609374994],[14.461718750000017,13.021777343749989],[14.244824218750011,13.07734375],[14.06396484375,13.07851562499999],[13.932324218750011,13.258496093749997],[13.606347656250023,13.70458984375],[13.505761718750023,14.134423828124994],[13.4482421875,14.380664062500003],[14.367968750000017,15.750146484374994],[15.474316406250011,16.908398437499997],[15.735058593750011,19.904052734375],[15.963183593750017,20.34619140625],[15.587109375000011,20.733300781249994],[15.607324218750023,20.954394531250003],[15.181835937500011,21.523388671874997],[14.97900390625,22.99619140624999],[15.984082031250011,23.445214843749994],[20.14765625000001,21.38925781249999],[23.980273437500017,19.496630859375003]]]},"properties":{"name":"Chad","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[0.900488281250006,10.993261718749991],[0.763378906250011,10.386669921874997],[1.330078125,9.996972656249994],[1.3857421875,9.361669921874991],[1.600195312500006,9.050048828125],[1.624707031250011,6.997314453125],[1.530957031250011,6.992431640625],[1.777929687500006,6.294628906249997],[1.62265625,6.216796875],[1.187207031250011,6.089404296874989],[0.736914062500006,6.452587890624997],[0.525585937500011,6.850927734374991],[0.634765625,7.353662109374994],[0.5,7.546875],[0.686328125000017,8.354882812499994],[0.37255859375,8.75927734375],[0.48876953125,8.851464843749994],[0.525683593750017,9.398486328124989],[0.2333984375,9.463525390624994],[0.342578125000017,9.604150390624994],[0.264550781250023,9.644726562499997],[0.380859375,10.291845703124991],[-0.08632812499999,10.673046875],[0.009423828125023,11.02099609375],[-0.068603515625,11.115625],[0.49267578125,10.954980468749994],[0.900488281250006,10.993261718749991]]]},"properties":{"name":"Togo","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[98.40908203125005,7.90205078125004],[98.2962890625,7.776074218750054],[98.32207031250007,8.166308593749974],[98.4349609375,8.085644531249969],[98.40908203125005,7.90205078125004]]],[[[100.070703125,9.58603515625002],[99.96240234375003,9.421630859375],[99.93955078125006,9.559960937500037],[100.070703125,9.58603515625002]]],[[[102.42675781250003,11.988720703125026],[102.30195312500004,11.98081054687502],[102.27744140625006,12.151855468750043],[102.42675781250003,11.988720703125026]]],[[[100.12246093750005,20.316650390625057],[100.11494140625004,20.257666015625034],[100.13974609375012,20.245410156250017],[100.31796875000006,20.38588867187505],[100.51953125000003,20.17792968750004],[100.39765625000004,19.756103515625],[100.51357421875005,19.553466796875],[101.21191406249997,19.54833984375003],[101.22080078125006,19.486621093750074],[101.19755859375007,19.327929687500074],[101.2863281250001,18.977148437500006],[101.04697265625012,18.441992187500063],[101.05058593750002,18.407031250000045],[101.1375,18.28686523437497],[101.14394531250005,18.14262695312499],[100.90849609375002,17.583886718750023],[100.95585937500002,17.541113281250006],[101.10517578125004,17.47954101562499],[101.16748046874997,17.49902343749997],[101.41367187500012,17.71875],[101.55507812500005,17.812353515625034],[101.56367187500004,17.82050781250001],[101.6875,17.889404296875],[101.77480468750005,18.03339843750004],[101.81865234375002,18.06464843750001],[101.87548828124997,18.046435546875017],[101.94746093750004,18.081494140624983],[102.03457031250005,18.169824218750023],[102.10146484375,18.210644531249983],[102.14824218750002,18.20385742187503],[102.35185546875002,18.045947265625017],[102.45878906250002,17.984619140625057],[102.55253906250007,17.96508789062497],[102.61679687500006,17.833349609375034],[102.66064453124997,17.817968750000034],[102.680078125,17.824121093750023],[103.05136718750006,18.02851562500001],[103.0912109375,18.13823242187499],[103.14853515625006,18.221728515625045],[103.19970703124997,18.259472656249983],[103.26318359374997,18.27846679687505],[103.27958984375002,18.304980468750017],[103.24892578125,18.338964843750034],[103.25175781250002,18.373486328124955],[103.2882812500001,18.408398437499955],[103.36699218750007,18.42333984374997],[103.48798828125004,18.418164062499983],[103.62968750000002,18.38256835937503],[103.79228515625002,18.316503906249977],[103.89882812500005,18.295312500000023],[103.949609375,18.31899414062505],[104.04873046875005,18.216699218749994],[104.19619140625005,17.988378906250006],[104.32265625,17.815820312500023],[104.428125,17.69897460937503],[104.7396484375,17.461669921875],[104.81601562500012,17.30029296874997],[104.75898437500004,17.0771484375],[104.7435546875,16.884375],[104.75058593750012,16.647558593750063],[104.81933593750003,16.46606445312503],[105.04716796875007,16.160253906249977],[105.14873046875007,16.09355468749999],[105.33066406250006,16.037890625000017],[105.40625,15.987451171875051],[105.39892578124997,15.829882812500017],[105.62207031250003,15.699951171875],[105.641015625,15.656542968750045],[105.6388671875001,15.585937500000057],[105.615625,15.488281250000057],[105.49042968750004,15.256591796875],[105.49042968750004,15.127587890625009],[105.5333984375001,15.041601562499991],[105.54667968750002,14.932470703124963],[105.52304687500012,14.843310546875003],[105.49736328125002,14.590673828124963],[105.47558593750003,14.530126953124977],[105.42265625000007,14.471630859375054],[105.34218750000005,14.416699218750054],[105.24365234375003,14.367871093750054],[105.1833007812501,14.346240234374989],[105.16914062500004,14.336083984374966],[105.12597656250003,14.280957031250011],[105.07412109375005,14.227441406250037],[104.77900390625004,14.427832031250006],[103.19941406250004,14.332617187499977],[102.90927734375006,14.136718750000028],[102.546875,13.585693359375043],[102.33632812500005,13.560302734375014],[102.49960937500012,12.669970703125003],[102.75566406250002,12.42626953125],[102.73662109375007,12.089794921875011],[102.93388671875002,11.706689453125037],[102.594140625,12.203027343749994],[102.54023437500004,12.109228515624977],[101.83574218750002,12.640380859375014],[100.89775390625007,12.653808593749986],[100.96269531250007,13.431982421874991],[100.60292968750005,13.568164062500017],[100.23564453125002,13.48447265625002],[99.99052734375007,13.243457031250031],[100.08994140625006,13.045654296874972],[99.96396484375006,12.690039062500006],[99.98906250000007,12.170800781249994],[99.16503906250003,10.319824218750028],[99.25390625000003,9.265234375000034],[99.83554687500012,9.288378906250031],[99.98955078125007,8.589208984374977],[100.129296875,8.428076171875006],[100.16347656250005,8.508398437500034],[100.27939453125006,8.268505859375011],[100.54521484375002,7.226904296874991],[100.43935546875005,7.280761718750043],[100.38037109375003,7.541503906250043],[100.28378906250006,7.551513671875043],[100.25664062500002,7.774902343749986],[100.16074218750012,7.599267578124994],[100.4235351562501,7.18784179687502],[101.01787109375002,6.860937500000034],[101.49794921875005,6.865283203125031],[102.10107421874997,6.242236328125031],[101.87363281250012,5.825292968749991],[101.67841796875004,5.778808593750028],[101.5560546875,5.907763671875003],[101.1139648437501,5.636767578125045],[100.98164062500004,5.771044921875045],[101.05351562500002,6.242578125],[100.87392578125,6.24541015624996],[100.75449218750012,6.460058593749991],[100.3454101562501,6.549902343750006],[100.26142578125004,6.682714843749963],[100.11914062499997,6.441992187500048],[99.69599609375004,6.87666015625004],[99.72031250000012,7.106201171875],[99.55302734375002,7.218798828125031],[99.59697265625002,7.355615234375009],[99.35859375000004,7.372216796875023],[99.26367187499997,7.619042968750037],[99.07763671874997,7.718066406250045],[99.05107421875002,7.887841796874994],[98.78867187500012,8.059814453125028],[98.703515625,8.256738281250009],[98.57919921875006,8.344287109374989],[98.42099609375006,8.17822265625],[98.30546875000007,8.226220703125009],[98.24179687500006,8.767871093750045],[98.70253906250005,10.19038085937504],[98.7572265625,10.660937499999974],[99.1901367187501,11.105273437499989],[99.61474609374997,11.781201171875026],[99.40507812500002,12.547900390625003],[99.12392578125,13.030761718750043],[99.13681640625006,13.716699218749994],[98.57001953125004,14.359912109375031],[98.20214843749997,14.97592773437502],[98.19101562500012,15.204101562499972],[98.55693359375007,15.367675781249986],[98.59238281250006,16.05068359375005],[98.81796875000012,16.180810546874994],[98.88828125000006,16.351904296875034],[98.83544921875003,16.417578125],[98.66074218750006,16.330419921875006],[98.4388671875,16.975683593750034],[97.7064453125,17.79711914062503],[97.63222656250005,18.290332031250074],[97.37392578125,18.51796875],[97.74589843750002,18.58818359374999],[97.816796875,19.459960937500057],[98.01503906250005,19.74951171874997],[98.37128906250004,19.68916015625004],[98.9166992187501,19.77290039062504],[99.07421875000003,20.09936523437503],[99.48593750000006,20.14985351562501],[99.45888671875005,20.363037109375],[99.72011718750005,20.32543945312497],[99.8903320312501,20.424414062499977],[99.9542968750001,20.415429687500023],[100.0036132812501,20.37958984375001],[100.12246093750005,20.316650390625057]]]]},"properties":{"name":"Thailand","childNum":4}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[70.66416015625,39.85546875],[70.55957031250003,39.790917968749994],[70.48925781250003,39.86303710937503],[70.48281250000005,39.88271484375005],[70.49775390625004,39.88242187499998],[70.56708984375004,39.86660156250005],[70.66416015625,39.85546875]]],[[[70.95800781250003,40.238867187500034],[70.59921875,39.974511718749994],[69.96679687499997,40.202246093750034],[69.46875,40.020751953125],[69.47099609375002,39.990625],[69.43193359375007,39.909765625000034],[69.36542968750004,39.94707031250002],[69.30722656250006,39.968554687500045],[69.27880859374997,39.91777343749999],[69.24472656250006,39.82709960937498],[69.29765625000007,39.52480468750005],[70.50117187500004,39.58735351562501],[70.79931640625003,39.39472656250001],[71.4703125,39.60366210937502],[71.50302734375006,39.58217773437502],[71.51738281250002,39.55385742187502],[71.50585937499997,39.51708984374997],[71.5033203125,39.47880859374999],[71.73222656250002,39.422998046874994],[71.77861328125007,39.27797851562502],[72.04277343750002,39.352148437500034],[72.08417968750004,39.310644531250034],[72.14736328125005,39.26074218749997],[72.22998046874997,39.20751953124997],[72.63994140625002,39.385986328125],[73.10927734375,39.36191406249998],[73.2349609375,39.37456054687499],[73.3361328125001,39.41235351562506],[73.38740234375004,39.442724609375034],[73.4704101562501,39.46059570312502],[73.63164062500007,39.44887695312502],[73.63632812500006,39.396679687499955],[73.60732421875,39.229199218749955],[73.8052734375,38.968652343749994],[73.69609375000007,38.85429687499996],[73.80166015625,38.60688476562501],[74.02558593750004,38.53984375000002],[74.27744140625,38.659765625000034],[74.81230468750002,38.46030273437498],[74.8942382812501,37.60141601562498],[75.11875,37.38569335937498],[74.89130859375004,37.231640624999955],[74.875390625,37.24199218750002],[74.83046875,37.28593750000002],[74.73056640625006,37.35703125],[74.659375,37.39448242187501],[74.34902343750005,37.41875],[74.25966796875005,37.41542968750002],[74.20351562500005,37.37246093750005],[74.16708984375,37.32944335937498],[73.74960937500006,37.23178710937498],[73.6535156250001,37.239355468750034],[73.62753906250006,37.261572265625006],[73.71728515625003,37.32944335937498],[73.7337890625,37.37578125000002],[73.72060546875,37.41875],[73.65712890625005,37.43046875],[73.6046875000001,37.44604492187503],[73.48134765625,37.4716796875],[73.38291015625006,37.462255859375034],[73.21113281250004,37.40849609375002],[72.89550781250003,37.26752929687498],[72.65742187500004,37.029052734375],[71.665625,36.696923828124994],[71.530859375,36.845117187499994],[71.43291015625007,37.12753906249998],[71.5822265625001,37.91010742187498],[71.55195312500004,37.93315429687496],[71.48779296874997,37.93188476562497],[71.38964843750003,37.90629882812502],[71.31992187500006,37.90185546875],[71.27851562500004,37.91840820312498],[71.33271484375004,38.170263671875034],[71.25585937499997,38.306982421875006],[70.7359375,38.42255859375001],[70.41777343750002,38.075439453125],[70.21464843750002,37.92441406250006],[70.19941406250004,37.88603515624996],[70.25498046875006,37.76538085937497],[70.25146484374997,37.66416015625006],[70.18867187500004,37.58247070312501],[70.11982421875004,37.54350585937499],[69.9849609375,37.566162109375],[69.8208984375,37.60957031250004],[69.62578125000002,37.59404296874999],[69.49208984375,37.55307617187498],[69.42011718750004,37.486718749999966],[69.39921875000007,37.39931640625002],[69.42968749999997,37.290869140625034],[69.414453125,37.20776367187497],[69.35380859375007,37.15004882812502],[69.3039062500001,37.11694335937503],[69.26484375000004,37.1083984375],[69.18017578125003,37.158300781250034],[68.96044921875003,37.32504882812498],[68.9118164062501,37.33393554687501],[68.88525390624997,37.32807617187498],[68.85537109375005,37.31684570312501],[68.83847656250006,37.30283203124998],[68.82373046874997,37.27070312500001],[68.78203125000002,37.25800781250001],[68.7232421875,37.26801757812501],[68.6691406250001,37.258398437500006],[68.3869140625001,37.1375],[68.29951171875004,37.08842773437502],[68.28476562500006,37.036328124999955],[68.2609375000001,37.01308593750002],[68.2121093750001,37.02153320312496],[68.0677734375,36.949804687500006],[67.95800781249997,36.972021484375006],[67.83447265624997,37.06420898437506],[67.75898437500004,37.172216796875034],[67.7980468750001,37.244970703125006],[67.81435546875005,37.48701171875004],[68.3502929687501,38.211035156250006],[68.08720703125002,38.47353515625002],[68.13251953125004,38.927636718749966],[67.69443359375006,38.99462890625003],[67.64833984375005,39.13105468750004],[67.3576171875001,39.216699218749994],[67.426171875,39.46557617187497],[67.71904296875007,39.62138671875002],[68.46328125,39.53671874999998],[68.63896484375007,39.8388671875],[68.86875,39.90747070312503],[68.80468750000003,40.05034179687499],[68.9720703125,40.08994140624998],[68.63066406250007,40.16708984374998],[69.27490234374997,40.19809570312498],[69.20625,40.566552734374994],[69.35722656250002,40.76738281249996],[69.71289062500003,40.65698242187503],[70.40195312500006,41.03510742187498],[70.75107421875006,40.721777343750006],[70.37158203125003,40.38413085937506],[70.653125,40.201171875],[70.95800781250003,40.238867187500034]]]]},"properties":{"name":"Tajikistan","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[66.52226562500007,37.34848632812506],[66.471875,37.3447265625],[65.7650390625,37.56914062499996],[65.55498046875002,37.25117187500004],[65.30361328125005,37.24677734375001],[65.08964843750007,37.237939453124994],[64.9515625,37.19355468750001],[64.81630859375005,37.13208007812503],[64.7824218750001,37.05927734375001],[64.60253906250003,36.554541015625034],[64.5658203125,36.427587890625034],[64.51103515625002,36.34067382812498],[64.184375,36.14892578125],[63.8625,36.012353515624994],[63.12998046875006,35.84619140624997],[63.169726562500074,35.678125],[63.05664062500003,35.44580078125003],[62.98027343750002,35.40917968750003],[62.85800781250006,35.34965820312499],[62.688085937500006,35.25532226562504],[62.3078125000001,35.17080078125005],[62.08964843750002,35.3796875],[61.62099609375005,35.43232421875004],[61.34472656249997,35.62949218750006],[61.26201171875002,35.61958007812498],[61.25214843750004,35.86762695312498],[61.15292968750006,35.97675781250001],[61.212011718750006,36.190527343750034],[61.11962890625003,36.64257812500003],[60.34130859375003,36.63764648437501],[60.06279296875002,36.962890625],[59.454980468749994,37.25283203125002],[59.30175781249997,37.51064453125005],[58.81542968750003,37.683496093749994],[58.261621093749994,37.665820312500045],[57.35371093750004,37.97333984374998],[57.1935546875001,38.216406250000034],[56.440625,38.249414062499994],[56.272070312500006,38.080419921875034],[55.38085937500003,38.051123046875034],[54.90009765625004,37.77792968750006],[54.6994140625001,37.47016601562498],[53.91416015625006,37.34355468750002],[53.86865234375003,38.949267578125045],[53.70458984375003,39.209570312500034],[53.33632812500005,39.34082031250006],[53.15664062499999,39.26499023437506],[53.23564453125002,39.608544921874966],[53.603125,39.546972656250034],[53.472265625,39.66879882812498],[53.48730468749997,39.909375],[52.9875,39.98759765625002],[53.03554687500005,39.7744140625],[52.80468749999997,40.054003906250045],[52.73369140625002,40.39873046875002],[52.943457031250006,41.03808593750006],[53.1452148437501,40.82495117187497],[53.61523437500003,40.818505859374994],[53.87001953125005,40.64868164062503],[54.37734375,40.693261718749966],[54.319433593750006,40.83457031249998],[54.68505859375003,40.873046875],[54.70371093750006,41.071142578125034],[54.094824218750006,41.51938476562506],[53.80468749999997,42.11762695312498],[53.16416015625006,42.09379882812502],[52.97001953125002,41.97622070312505],[52.81484375,41.711816406249994],[52.850390625000074,41.20029296875006],[52.4938476562501,41.780371093750034],[53.0558593750001,42.14775390624999],[54.120996093749994,42.335205078125],[54.85380859375002,41.965185546875006],[55.434375,41.296289062499994],[55.97744140625005,41.32221679687504],[57.01796875,41.26347656249996],[57.11884765625004,41.35029296874998],[56.96406250000004,41.856542968750006],[57.290625,42.123779296875],[57.814257812500074,42.18984375000005],[58.02890625,42.48764648437506],[58.474414062500074,42.29936523437496],[58.15156250000004,42.628076171874966],[58.477148437500006,42.66284179687503],[58.5890625000001,42.778466796874966],[59.35429687500002,42.32329101562496],[59.98515625000002,42.21171875],[59.94179687499999,41.97353515625002],[60.20078125000006,41.803125],[60.07558593750005,41.759667968749966],[60.089648437500074,41.39941406250003],[60.454980468749994,41.221630859374955],[61.2423828125001,41.18920898437503],[61.496972656249994,41.276074218749955],[61.90283203124997,41.09370117187501],[62.48320312500002,39.97563476562496],[63.76367187500003,39.16054687499999],[64.3099609375,38.97729492187497],[65.612890625,38.23857421875002],[65.97119140624997,38.244238281250006],[66.60625,37.98671875000005],[66.52558593750004,37.785742187500034],[66.51132812500006,37.59916992187496],[66.51064453125,37.45869140625004],[66.52226562500007,37.34848632812506]]]},"properties":{"name":"Turkmenistan","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[124.0363281250001,-9.341601562500031],[124.44443359375012,-9.190332031250023],[124.28232421875012,-9.427929687500026],[124.0363281250001,-9.341601562500031]]],[[[125.06816406250002,-9.511914062499997],[124.96015625000004,-9.213769531250009],[125.10048828125,-9.189843750000023],[125.14902343750012,-9.042578125000034],[124.93681640625007,-9.053417968750026],[124.92226562500005,-8.942480468749977],[125.17802734375002,-8.647851562499994],[125.38183593749997,-8.575390624999983],[126.61972656250006,-8.459472656249986],[126.96640625000012,-8.315722656250017],[127.29609375000004,-8.424511718749969],[126.91523437500004,-8.715234374999966],[125.40800781250002,-9.275781250000023],[125.06816406250002,-9.511914062499997]]],[[[125.64609375000006,-8.139941406250003],[125.5794921875,-8.311816406250017],[125.50712890625007,-8.275097656249997],[125.64609375000006,-8.139941406250003]]]]},"properties":{"name":"Timor-Leste","childNum":3}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-175.1619140625,-21.169335937500023],[-175.07817382812496,-21.129003906249977],[-175.15659179687495,-21.26367187499997],[-175.36235351562496,-21.106835937499994],[-175.1619140625,-21.169335937500023]]],[[[-173.953515625,-18.63935546875001],[-174.06914062500002,-18.640234375],[-173.96806640624993,-18.565332031250023],[-173.953515625,-18.63935546875001]]]]},"properties":{"name":"Tonga","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[-61.012109374999966,10.134326171874989],[-61.906103515625006,10.069140625000031],[-61.49931640624999,10.268554687499972],[-61.47827148437497,10.603369140624977],[-61.65117187499993,10.718066406249974],[-60.917626953124966,10.84023437499999],[-61.03374023437502,10.669873046875026],[-61.012109374999966,10.134326171874989]]]},"properties":{"name":"Trinidad and Tobago","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[10.957617187500063,33.72207031250005],[10.722070312500051,33.738916015624994],[10.745214843750063,33.88867187500006],[11.017871093749989,33.82333984374998],[10.957617187500063,33.72207031250005]]],[[[11.278027343750068,34.753808593749994],[11.123632812500063,34.68168945312496],[11.254882812500057,34.82031250000006],[11.278027343750068,34.753808593749994]]],[[[10.274609375000011,31.684960937499994],[10.114941406250068,31.46376953125005],[10.216406250000063,30.78320312500003],[10.05976562500004,30.58007812500003],[9.932519531250051,30.42534179687496],[9.895019531250028,30.387304687500034],[9.51875,30.229394531249994],[9.224023437500023,31.373681640624994],[9.160253906250006,31.621337890625],[9.044042968750034,32.072363281250034],[8.333398437500051,32.54360351562502],[8.1125,33.055322265624994],[7.877246093750017,33.172119140625],[7.534375,33.717919921874994],[7.513867187500068,34.080517578124955],[8.24560546875,34.73408203124998],[8.276855468750057,34.97949218749997],[8.312109375000063,35.084619140624994],[8.394238281250011,35.20385742187503],[8.318066406250011,35.654931640624994],[8.348730468750063,36.367968750000045],[8.207617187500006,36.518945312499994],[8.601269531250068,36.83393554687504],[8.576562500000023,36.93720703125001],[9.687988281250057,37.34038085937499],[9.838476562500063,37.30898437499999],[9.830273437499983,37.13535156250006],[9.875585937499977,37.25415039062503],[10.196386718750063,37.205859375000045],[10.293261718750074,36.781494140625],[10.412304687499983,36.73183593750002],[11.053906250000068,37.07250976562506],[11.12666015625004,36.874072265625045],[10.476562500000028,36.175146484375006],[10.590820312500028,35.88725585937499],[11.00429687500008,35.63383789062496],[11.120117187500057,35.24028320312499],[10.69091796875,34.67846679687503],[10.118359375000068,34.280078125000045],[10.049023437500068,34.056298828124994],[10.305273437500034,33.72827148437497],[10.713183593750017,33.68901367187496],[10.722753906250006,33.514404296875],[10.958007812500057,33.62631835937498],[11.257421875000034,33.30883789062506],[11.202636718749972,33.24921874999998],[11.50458984375004,33.181933593750045],[11.502441406250028,33.15556640624999],[11.467187500000051,32.96572265625005],[11.459179687500011,32.897363281249966],[11.453906250000017,32.64257812500003],[11.533789062500034,32.52495117187496],[11.535937500000017,32.47333984375001],[11.504980468750034,32.413671875000034],[11.358007812500006,32.34521484375003],[11.168261718750074,32.25673828125002],[11.005175781250074,32.17270507812506],[10.826367187500068,32.080664062500034],[10.771582031250006,32.02119140625001],[10.60888671875,31.929541015624977],[10.47578125000004,31.736035156249983],[10.274609375000011,31.684960937499994]]]]},"properties":{"name":"Tunisia","childNum":3}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[25.970019531250045,40.136328125],[25.6689453125,40.13588867187502],[25.918359375000023,40.23798828125004],[25.970019531250045,40.136328125]]],[[[43.43339843750002,41.155517578125],[43.43945312500003,41.10712890625001],[43.72265624999997,40.71953124999999],[43.56933593750003,40.48237304687498],[43.66621093750004,40.12636718750002],[44.28925781250004,40.040380859375006],[44.76826171875004,39.70351562500005],[44.81718750000002,39.65043945312496],[44.58710937500004,39.76855468750006],[44.3893554687501,39.422119140625],[44.02324218750002,39.37744140625006],[44.27167968750004,38.83603515625006],[44.2985351562501,38.38627929687499],[44.4499023437501,38.33422851562506],[44.21132812499999,37.908056640625006],[44.589941406250006,37.710351562499966],[44.574023437500074,37.435400390625006],[44.79414062500004,37.290380859375034],[44.76513671875003,37.142431640625006],[44.73095703124997,37.16528320312503],[44.66933593750005,37.17358398437503],[44.60595703124997,37.176025390625],[44.401953125,37.05849609375002],[44.325585937499994,37.0107421875],[44.28183593750006,36.97802734374997],[44.24570312500006,36.983300781249994],[44.20166015624997,37.05180664062502],[44.208398437499994,37.20263671875],[44.19179687499999,37.249853515625034],[44.15625,37.28295898437503],[44.11445312500004,37.30185546875006],[44.01318359375003,37.313525390625045],[43.83642578124997,37.223535156249994],[43.67578125000003,37.227246093749955],[43.09248046875004,37.36738281249998],[42.936621093750006,37.32475585937502],[42.77460937500004,37.371875],[42.74111328125005,37.361914062500034],[42.6354492187501,37.249267578125],[42.45585937500002,37.128710937500045],[42.358984375,37.10859375000004],[42.31289062499999,37.22958984374998],[42.26855468749997,37.276562499999955],[42.24755859375003,37.28222656250006],[42.20273437500006,37.29726562499999],[42.16787109375005,37.28862304687502],[42.059863281250074,37.2060546875],[41.886816406250006,37.156396484374994],[40.70566406250006,37.09770507812502],[40.4503906250001,37.00888671875006],[40.016406250000074,36.82607421875002],[39.68652343749997,36.73862304687506],[39.50146484374997,36.702246093750034],[39.35664062500004,36.68159179687498],[39.10839843749997,36.68056640625005],[38.90644531250004,36.69467773437498],[38.76660156249997,36.69311523437503],[38.19169921875002,36.90156250000004],[37.90664062500005,36.79462890625001],[37.7203125,36.74370117187502],[37.52353515625006,36.678320312500034],[37.436328125000074,36.643310546875],[37.327050781249994,36.64658203125006],[37.18740234375005,36.655908203124994],[37.066210937500074,36.652636718750045],[36.98535156250003,36.70239257812506],[36.94179687499999,36.758398437500006],[36.77656250000004,36.79267578124998],[36.65859375000005,36.80253906250002],[36.62841796875003,36.777685546875034],[36.596875,36.70136718750001],[36.546679687500074,36.50634765625],[36.5375,36.457421874999966],[36.63671874999997,36.233984375],[36.37539062499999,36.171240234375034],[36.347558593749994,36.003515625000034],[36.20195312500002,35.93754882812502],[36.15361328125002,35.83388671875005],[36.12734375,35.831445312499994],[35.967578125000074,35.91005859375002],[35.89267578125006,35.91655273437502],[35.81093750000005,36.30986328125002],[36.18847656250003,36.65898437499999],[36.048925781250006,36.91059570312501],[35.393164062500006,36.57519531249997],[34.70361328125003,36.81679687499999],[33.694726562499994,36.18198242187498],[32.794824218749994,36.03588867187497],[32.37773437500002,36.18364257812496],[32.02197265625003,36.53530273437502],[31.35253906249997,36.80107421874999],[30.64404296874997,36.86567382812501],[30.446093750000074,36.269873046875034],[29.6890625,36.15668945312498],[29.22363281249997,36.32446289062497],[28.96962890625008,36.71533203125003],[28.303710937500057,36.81196289062498],[28.01943359375005,36.63447265624998],[28.083984375000057,36.75146484375],[27.453906250000017,36.712158203125],[28.00537109375003,36.83198242187498],[28.242382812500068,37.029052734375],[27.262988281250045,36.97656250000003],[27.30019531250005,37.12685546875002],[27.53505859375005,37.16386718750002],[27.06796875,37.65791015625004],[27.224414062500074,37.725439453125006],[27.23242187500003,37.978662109374994],[26.29072265625001,38.27719726562498],[26.44130859375005,38.64121093749998],[26.67421875000008,38.33574218750002],[27.14423828125001,38.45195312499996],[26.906835937500034,38.48173828124999],[26.763671875,38.709619140624966],[27.013671875000057,38.88686523437502],[26.814941406250057,38.96098632812502],[26.853613281250034,39.115625],[26.68183593750004,39.292236328125],[26.89921874999999,39.549658203125034],[26.113085937500074,39.46738281249998],[26.101367187500074,39.56894531249998],[26.18134765625004,39.99008789062498],[26.738085937500045,40.40024414062506],[27.28457031250008,40.45561523437496],[27.4755859375,40.319921875000034],[27.72802734375,40.32880859374998],[27.84853515625005,40.38173828125002],[27.73183593750008,40.48149414062499],[27.87490234375008,40.512939453125],[27.989550781250074,40.48945312500001],[27.96259765625001,40.369873046875],[29.00712890624999,40.389746093750034],[28.787890625000017,40.534033203125034],[28.95800781250003,40.63056640624998],[29.849218750000063,40.760107421875006],[29.113867187499977,40.93784179687506],[29.14814453125004,41.221044921875034],[31.25488281249997,41.10761718750001],[31.45800781249997,41.32001953125004],[32.306445312500074,41.72958984374998],[33.38134765625003,42.01757812500003],[34.75048828124997,41.95683593749999],[35.006445312500006,42.06328125000002],[35.15488281250006,42.02753906250001],[35.12207031250003,41.89111328125003],[35.297753906249994,41.72851562500003],[35.558007812499994,41.63403320312506],[36.05175781249997,41.68256835937498],[36.40537109375006,41.27460937500001],[36.77773437499999,41.36347656250001],[37.066210937500074,41.184423828125034],[38.38105468750004,40.92451171875001],[39.426367187500006,41.10644531250003],[40.26523437500006,40.96132812500005],[41.08359375000006,41.26118164062504],[41.41435546875002,41.42363281249999],[41.510058593750074,41.51748046875002],[41.70175781250006,41.471582031249994],[41.77939453125006,41.44052734374998],[41.823535156250074,41.432373046875],[41.92578125000003,41.49565429687502],[42.46640625,41.43984375000002],[42.56738281249997,41.55927734375001],[42.590429687500006,41.57070312500002],[42.60683593750005,41.57880859374998],[42.682421875000074,41.58574218749999],[42.75410156250004,41.57890625000002],[42.787890625000074,41.56372070312503],[42.82167968750005,41.49238281249998],[42.90673828125003,41.46684570312502],[43.05712890625003,41.35283203124996],[43.149023437500006,41.30712890624997],[43.171289062499994,41.28793945312498],[43.14101562499999,41.26484374999998],[43.15283203124997,41.23642578125006],[43.20546875000005,41.19916992187501],[43.43339843750002,41.155517578125]]],[[[27.47480468750001,41.946875],[28.014453125000017,41.96904296874999],[28.197851562500063,41.55449218750002],[29.057226562500006,41.22973632812503],[28.95625,41.00820312499999],[28.172167968750074,41.08071289062502],[27.49941406250005,40.97314453124997],[27.258007812499983,40.687353515625006],[26.772070312500034,40.498046875],[26.202734375000034,40.07539062500004],[26.25380859375005,40.31469726562503],[26.792089843750034,40.626611328124994],[26.10546875000003,40.61132812499997],[26.03896484375008,40.726757812499955],[26.331054687500057,40.954492187499994],[26.330664062499977,41.23876953125],[26.62490234375008,41.401757812499994],[26.581347656250074,41.60126953125004],[26.320898437500034,41.716552734375],[26.3603515625,41.80156249999999],[26.51142578125004,41.82636718749998],[26.549707031250023,41.896728515625],[26.5796875,41.947949218749955],[26.615332031250063,41.964892578125045],[26.884863281250006,41.99184570312502],[26.96875,42.02685546875006],[27.01171875,42.05864257812496],[27.193359375000057,42.07709960937498],[27.24433593750004,42.09326171875],[27.294921875000057,42.079541015624955],[27.47480468750001,41.946875]]]]},"properties":{"name":"Turkey","childNum":3}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[39.71132812499999,-7.977441406250023],[39.602929687499994,-7.936132812499949],[39.907128906249994,-7.649218750000031],[39.71132812499999,-7.977441406250023]]],[[[39.49648437499999,-6.174609375],[39.573046875000074,-6.387402343750011],[39.48095703124997,-6.45371093750002],[39.18232421875004,-6.172558593750026],[39.30898437499999,-5.721972656249974],[39.49648437499999,-6.174609375]]],[[[39.86503906250002,-4.906152343750037],[39.74931640625002,-5.443847656249986],[39.646777343750074,-5.368554687500009],[39.6734375,-4.927050781250031],[39.86503906250002,-4.906152343750037]]],[[[33.90322265625005,-1.002050781250034],[37.643847656250074,-3.045410156250028],[37.608203125000074,-3.497070312500028],[39.221777343750006,-4.692382812500014],[38.80468750000003,-6.070117187500031],[38.87402343750003,-6.33125],[39.5460937500001,-7.024023437500034],[39.288476562499994,-7.517871093750003],[39.28701171875005,-7.787695312500006],[39.4284179687501,-7.81279296874996],[39.441015625,-8.011523437499946],[39.304003906250074,-8.44384765625],[39.451269531250006,-8.94296875],[39.64130859375004,-9.19248046875002],[39.72519531250006,-10.000488281249972],[40.46357421875004,-10.464355468749972],[39.98867187499999,-10.820800781250014],[39.81708984375004,-10.912402343750031],[38.9875,-11.167285156250003],[38.49179687500006,-11.413281250000026],[37.92021484375002,-11.294726562500031],[37.72480468750004,-11.58066406250002],[37.54169921875004,-11.675097656249974],[37.37285156250002,-11.710449218749986],[36.97890625000005,-11.566992187499977],[36.30566406250003,-11.706347656249946],[36.191308593749994,-11.670703124999974],[36.17548828125004,-11.60927734374998],[36.08222656250004,-11.537304687499969],[35.91132812500004,-11.45468750000002],[35.785449218750074,-11.452929687500017],[35.63095703125006,-11.582031250000028],[35.564355468749994,-11.602343749999989],[35.418261718750074,-11.583203125],[35.18261718750003,-11.574804687499977],[34.95947265625003,-11.578125],[34.93701171874997,-11.463476562500034],[34.890625,-11.3935546875],[34.77382812500005,-11.341699218750009],[34.60791015624997,-11.08046875],[34.66708984375006,-10.792480468750028],[34.56992187500006,-10.241113281249966],[34.32089843750006,-9.731542968749977],[33.99560546875003,-9.495410156250003],[33.88886718750004,-9.670117187499983],[32.91992187500003,-9.407421875000026],[32.75664062500002,-9.322265625],[31.94257812500004,-9.05400390624996],[31.91865234375004,-8.942187500000017],[31.886132812499994,-8.921972656249977],[31.81806640625004,-8.902246093749952],[31.673632812500017,-8.908789062499963],[31.55625,-8.80546875],[31.44921874999997,-8.65390625],[31.35058593750003,-8.607031250000034],[31.07636718750004,-8.611914062499963],[30.968359375000063,-8.550976562499983],[30.89199218750005,-8.473730468749963],[30.830664062500063,-8.385546875000031],[30.720898437500097,-8.104394531250037],[30.40673828125003,-7.460644531249983],[30.313183593750097,-7.203710937499949],[30.212695312500017,-7.037890625000017],[30.10625,-6.915039062500028],[29.961816406249994,-6.803125],[29.798144531250017,-6.691894531249957],[29.70966796875004,-6.61689453125004],[29.590625,-6.394433593750023],[29.540820312500017,-6.313867187500037],[29.50625,-6.172070312500011],[29.480078125,-6.025],[29.490820312500063,-5.96542968750002],[29.59638671875004,-5.775976562499963],[29.60703125,-5.722656250000028],[29.59414062500005,-5.650781250000037],[29.542382812499994,-5.499804687500017],[29.34277343749997,-4.983105468749997],[29.32343750000004,-4.898828124999966],[29.32568359374997,-4.835644531249969],[29.404199218749994,-4.49667968750002],[29.40322265625005,-4.449316406249963],[29.71777343750003,-4.45585937499996],[29.94726562499997,-4.307324218749983],[30.4,-3.65390625],[30.790234375000097,-3.274609375000011],[30.811132812500006,-3.116406250000011],[30.78027343750003,-2.984863281249957],[30.70947265624997,-2.977246093749997],[30.604296875000074,-2.935253906249969],[30.515039062499994,-2.917578125],[30.45556640625003,-2.893164062500006],[30.433496093749994,-2.874511718750028],[30.424023437500097,-2.82402343749996],[30.473339843750097,-2.6943359375],[30.42421875000005,-2.641601562500014],[30.441992187500006,-2.613476562499969],[30.53369140624997,-2.426269531250014],[30.55361328125005,-2.400097656250011],[30.593359375000063,-2.39677734374996],[30.65664062500005,-2.373828124999989],[30.71484375000003,-2.363476562500011],[30.7625,-2.371679687499991],[30.828710937500006,-2.338476562499977],[30.85498046874997,-2.265429687500017],[30.8765625,-2.143359375000017],[30.864648437499994,-2.044042968749949],[30.819140625000017,-1.967480468749983],[30.812597656250006,-1.56308593750002],[30.76220703124997,-1.458691406249983],[30.710742187500074,-1.396777343749974],[30.631933593750006,-1.36748046874996],[30.508105468750074,-1.208203125000026],[30.47021484374997,-1.13115234374996],[30.47705078124997,-1.0830078125],[30.509960937500097,-1.067285156249994],[30.51992187499999,-1.0625],[30.67275390625005,-1.051367187499949],[30.741992187500017,-1.007519531249997],[30.809179687500063,-0.994921875],[30.82363281250005,-0.999023437499943],[30.84472656250003,-1.002050781250034],[32.371875,-1.002050781250034],[33.90322265625005,-1.002050781250034]]]]},"properties":{"name":"Tanzania","childNum":4}},{"geometry":{"type":"Polygon","coordinates":[[[30.50996093750001,-1.067285156250009],[30.46992187500001,-1.066015625],[30.41230468750001,-1.063085937500006],[30.360253906250023,-1.074609375],[29.930078125000023,-1.469921875000011],[29.82539062500001,-1.335546875],[29.576953125000017,-1.387890625000011],[29.717675781250023,0.098339843749997],[29.934472656250023,0.4990234375],[29.94287109375,0.819238281249994],[31.252734375000017,2.044580078124994],[31.176367187500006,2.270068359374989],[30.728613281250006,2.455371093749989],[30.8466796875,2.847021484374991],[30.754003906250006,3.041796874999989],[30.90644531250001,3.408935546875],[30.83857421875001,3.49072265625],[31.15234375,3.785595703124997],[31.547167968750017,3.677587890624991],[31.79804687500001,3.802636718749994],[32.13593750000001,3.519726562499997],[32.33574218750002,3.706201171874994],[32.99726562500001,3.880175781249989],[33.489355468750006,3.755078125],[33.568457031250006,3.81171875],[33.74160156250002,3.985253906249994],[33.97607421875,4.22021484375],[34.13203125000001,3.88916015625],[34.18574218750001,3.869775390624994],[34.1650390625,3.81298828125],[34.26708984375,3.733154296875],[34.39287109375002,3.691503906249991],[34.43769531250001,3.650585937499997],[34.44179687500002,3.60625],[34.3994140625,3.412695312499991],[34.4072265625,3.357519531249991],[34.447851562500006,3.163476562499994],[34.90576171875,2.4796875],[34.88300781250001,2.417919921874997],[34.96406250000001,2.062402343749994],[34.9775390625,1.861914062499991],[34.97646484375002,1.719628906249994],[34.79863281250002,1.24453125],[34.48173828125002,1.042138671874994],[34.41083984375001,0.867285156249991],[34.16093750000002,0.605175781249997],[33.94316406250002,0.173779296874997],[33.90322265625002,-1.002050781250006],[32.371875,-1.002050781250006],[30.8447265625,-1.002050781250006],[30.823632812500023,-0.9990234375],[30.809179687500006,-0.994921875],[30.741992187500017,-1.007519531250011],[30.672753906250023,-1.051367187500006],[30.598730468750006,-1.069726562500009],[30.519921875000023,-1.0625],[30.50996093750001,-1.067285156250009]]]},"properties":{"name":"Uganda","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[32.01220703124997,46.20390624999999],[32.15009765625004,46.1546875],[31.56386718750005,46.25776367187504],[31.50878906250003,46.373144531250006],[32.01220703124997,46.20390624999999]]],[[[38.21435546875003,47.091455078124966],[37.54335937499999,47.07456054687498],[36.794824218749994,46.71440429687499],[36.55878906250004,46.76269531250006],[35.82714843749997,46.62431640625002],[35.01455078125005,46.10600585937502],[35.280175781249994,46.27949218750001],[35.23037109375005,46.440625],[34.84960937500003,46.189892578124955],[35.02285156250005,45.70097656250002],[35.45751953124997,45.316308593749994],[36.170507812500006,45.453076171874955],[36.575,45.3935546875],[36.39335937500002,45.06538085937501],[35.87011718750003,45.005322265624955],[35.472558593749994,45.098486328125006],[35.08769531250002,44.802636718749966],[34.46992187500004,44.7216796875],[33.909960937500074,44.387597656249966],[33.45068359374997,44.553662109374955],[33.55517578125003,45.09765625000003],[32.5080078125001,45.40380859375006],[33.664843750000074,45.94707031249996],[33.59414062500005,46.09624023437499],[33.42988281250004,46.05761718750003],[33.20224609375006,46.17573242187501],[32.47675781250004,46.08369140625001],[31.83125,46.28168945312501],[32.00849609375004,46.42998046875002],[31.554882812500097,46.554296875000034],[32.36132812499997,46.474951171875034],[32.578027343749994,46.615625],[32.04433593750005,46.642480468749966],[31.75917968750005,47.21284179687501],[31.872851562500017,46.649755859375034],[31.532128906249994,46.66474609374998],[31.56337890625005,46.77729492187501],[31.402929687500063,46.62880859375002],[30.796289062499994,46.55200195312503],[30.219042968750074,45.866748046875045],[29.62841796875003,45.722460937500045],[29.705859375000074,45.25991210937505],[29.567675781250074,45.37080078124998],[29.40371093750005,45.419677734375],[29.22353515625005,45.402929687500034],[28.894335937500017,45.28994140625002],[28.78173828125,45.30986328125002],[28.76660156250003,45.28623046874998],[28.78828125000001,45.240966796875],[28.451269531250006,45.292187499999955],[28.317675781250045,45.347119140624955],[28.2125,45.45043945312506],[28.26484375000004,45.48388671875003],[28.310351562500074,45.49858398437499],[28.499023437500057,45.517724609374994],[28.513769531250034,45.57241210937502],[28.49160156250005,45.66577148437503],[28.562304687500074,45.73579101562501],[28.667578125,45.79384765625002],[28.729296875000074,45.852001953124955],[28.73876953125003,45.937158203124994],[28.84951171875005,45.97866210937502],[28.94775390624997,46.049951171874966],[28.971875,46.12763671874998],[29.00625,46.17646484374998],[28.94375,46.28842773437506],[28.930566406250023,46.36225585937501],[28.92744140625001,46.42412109374999],[28.958398437500023,46.45849609374997],[29.146289062500017,46.52690429687496],[29.186230468750068,46.52397460937499],[29.20078125,46.504980468750034],[29.20458984374997,46.37934570312501],[29.223828125000097,46.37695312499997],[29.458789062500017,46.453759765624994],[29.83789062499997,46.35053710937501],[29.878027343750063,46.360205078125034],[30.07568359375003,46.377832031249966],[30.131054687500097,46.42309570312506],[29.92431640624997,46.53886718750002],[29.934765625000097,46.625],[29.942480468750063,46.72377929687502],[29.918066406250063,46.78242187499998],[29.877832031249994,46.828906250000045],[29.57197265625004,46.96401367187502],[29.455664062500006,47.292626953124994],[29.134863281250006,47.48969726562501],[29.125390625000023,47.96455078125001],[28.42304687500001,48.146875],[28.34052734375001,48.144433593749994],[27.54921875000008,48.47773437500004],[27.22851562500003,48.37143554687506],[26.90058593750001,48.37192382812506],[26.847070312500023,48.387158203124955],[26.640429687500045,48.29414062500001],[26.618945312500017,48.25986328125006],[26.4423828125,48.22998046875],[26.162695312500063,47.992529296875034],[25.90869140625,47.96757812500002],[25.689257812500045,47.93247070312506],[25.46425781250005,47.910791015624994],[24.979101562500063,47.72412109374997],[24.578906250000074,47.93105468750005],[23.628710937500017,47.995849609375],[23.40820312500003,47.98999023437506],[23.20263671875,48.084521484375045],[23.13945312499999,48.08740234375],[22.87666015625001,47.94726562500006],[22.769140625000063,48.109619140625],[22.582421875000023,48.134033203125],[22.253710937500017,48.407373046874994],[22.131835937500057,48.40532226562502],[22.142871093750017,48.568505859374966],[22.295214843750045,48.68583984374999],[22.389453125000045,48.87348632812501],[22.52412109375004,49.03139648437502],[22.538671875,49.07270507812501],[22.847070312500023,49.08125],[22.705664062500006,49.17119140624999],[22.6494140625,49.53901367187498],[22.706152343750006,49.60620117187497],[23.03632812500004,49.899072265624966],[23.711718750000045,50.377343749999966],[23.97265625,50.410058593749966],[24.089941406250006,50.53046874999998],[24.0947265625,50.617041015625034],[23.9970703125,50.809375],[24.095800781250063,50.87275390625001],[23.664453125000023,51.31005859375],[23.61376953125,51.525390625],[23.706835937500045,51.64130859374998],[23.79169921875001,51.63710937500002],[23.864257812500057,51.62397460937501],[23.951171875,51.58505859374998],[23.978320312500017,51.59130859375003],[24.12685546875008,51.664648437500034],[24.280078125000017,51.77470703124999],[24.361914062500006,51.86752929687498],[25.785742187500006,51.923828125],[26.77343750000003,51.77070312499998],[26.952832031249983,51.754003906250034],[27.074121093750023,51.760839843750006],[27.14199218750008,51.75205078124998],[27.29628906250008,51.59741210937503],[27.689746093750017,51.572412109374994],[27.7,51.47797851562501],[27.85859375000004,51.59238281250006],[28.532031250000017,51.56245117187501],[28.59902343750008,51.54262695312505],[28.647753906250074,51.45654296875],[28.690234375000017,51.43886718750005],[28.73125,51.43339843749999],[28.84951171875005,51.540185546874994],[28.927539062500045,51.56215820312502],[28.97773437500004,51.57177734375003],[29.01308593750005,51.59892578124996],[29.06074218750001,51.625439453124955],[29.102050781250057,51.627539062500034],[29.346484375000017,51.38256835937503],[30.160742187500006,51.477880859375006],[30.449511718750017,51.274316406249994],[30.63251953125004,51.35541992187501],[30.61171875000005,51.406347656250006],[30.602343750000017,51.47124023437499],[30.56074218750004,51.531494140625],[30.533007812500017,51.596337890624966],[30.583886718749994,51.68896484375003],[30.667285156250017,51.81411132812502],[30.755273437499994,51.89516601562502],[30.84570312500003,51.95307617187501],[30.980664062500097,52.04619140624996],[31.217968750000097,52.05024414062498],[31.345996093750074,52.10537109375002],[31.57373046875003,52.108105468749955],[31.763378906250097,52.10107421875003],[32.12226562500004,52.05058593749996],[32.435449218749994,52.307226562500034],[33.735253906249994,52.344775390625045],[34.397851562499994,51.780419921874994],[34.12109375000003,51.67915039062498],[34.21386718750003,51.25537109375006],[35.0640625,51.203417968750045],[35.31191406250005,51.043896484374955],[35.59111328125002,50.36875],[36.1164062500001,50.408544921875006],[36.619433593750074,50.209228515625],[37.42285156249997,50.411474609375006],[38.046875,49.92001953125006],[38.258593750000074,50.05234375],[38.91835937499999,49.82470703125],[39.17480468750003,49.85595703124997],[39.780566406250074,49.57202148437503],[40.080664062500006,49.576855468749955],[40.10878906250005,49.251562500000034],[39.68652343749997,49.007910156250034],[40.00361328125004,48.82207031250002],[39.792871093749994,48.807714843750034],[39.6447265625001,48.591210937499966],[39.8356445312501,48.54277343749996],[39.95791015625005,48.268896484375034],[39.77871093750005,47.88754882812506],[38.90029296875005,47.85512695312502],[38.36884765625004,47.609960937500006],[38.21435546875003,47.091455078124966]]]]},"properties":{"name":"Ukraine","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[-57.81059570312499,-30.85859375000001],[-57.872509765625,-30.59101562500001],[-57.831201171874994,-30.495214843750006],[-57.71269531249999,-30.38447265625001],[-57.65087890625,-30.295019531250006],[-57.645751953125,-30.226953125],[-57.60888671875,-30.187792968750003],[-57.55229492187499,-30.26123046875],[-57.21445312499999,-30.28339843750001],[-57.186914062499994,-30.26484375000001],[-57.120507812499994,-30.14443359375001],[-56.83271484375,-30.107226562500003],[-56.4072265625,-30.44746093750001],[-55.998974609375,-30.837207031250003],[-56.018457031249994,-30.99189453125001],[-56.00468749999999,-31.079199218750006],[-55.873681640624994,-31.069628906250003],[-55.6271484375,-30.85810546875001],[-55.60302734375,-30.85078125000001],[-55.55732421875,-30.8759765625],[-55.17353515625,-31.279589843750003],[-55.09116210937499,-31.31396484375],[-55.036035156249994,-31.27900390625001],[-54.587646484375,-31.48515625],[-54.22055664062499,-31.85517578125001],[-53.76171875,-32.05683593750001],[-53.601708984374994,-32.40302734375001],[-53.12558593749999,-32.73671875],[-53.2140625,-32.82109375],[-53.31010742187499,-32.92705078125],[-53.39521484375,-33.010351562500006],[-53.482861328125,-33.06855468750001],[-53.511865234374994,-33.10869140625],[-53.53134765624999,-33.1708984375],[-53.53134765624999,-33.65546875000001],[-53.37060546875,-33.7421875],[-53.419580078124994,-33.77919921875001],[-53.47246093749999,-33.84931640625001],[-53.53452148437499,-34.01748046875001],[-53.742919921875,-34.24951171875],[-53.785302734374994,-34.38037109375],[-54.16855468749999,-34.670703125],[-54.902294921875,-34.93281250000001],[-55.67314453124999,-34.77568359375],[-56.249951171875,-34.90126953125001],[-57.17070312499999,-34.45234375000001],[-57.8291015625,-34.47734375],[-58.40019531249999,-33.91240234375],[-58.363525390625,-33.18232421875001],[-58.08232421874999,-32.893652343750006],[-58.12958984375,-32.75722656250001],[-58.16220703124999,-32.566503906250006],[-58.201171875,-32.4716796875],[-58.123046875,-32.321875],[-58.11972656249999,-32.24892578125001],[-58.164794921875,-32.18486328125],[-58.177001953125,-32.11904296875001],[-58.15634765624999,-32.0515625],[-58.160400390625,-31.98652343750001],[-58.18901367187499,-31.92421875],[-58.16748046875,-31.87265625],[-58.04233398437499,-31.76923828125001],[-58.006982421874994,-31.68496093750001],[-58.053857421874994,-31.494921875],[-58.0333984375,-31.416601562500006],[-57.89335937499999,-31.1953125],[-57.868408203125,-31.10439453125001],[-57.88632812499999,-30.93740234375001],[-57.81059570312499,-30.85859375000001]]]},"properties":{"name":"Uruguay","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-155.58134765624996,19.012011718750017],[-155.88129882812495,19.07050781250001],[-156.04868164062498,19.749951171874983],[-155.82031249999997,20.01416015624997],[-155.83164062499998,20.27583007812501],[-155.198779296875,19.99438476562503],[-154.80419921875,19.524462890625045],[-155.58134765624996,19.012011718750017]]],[[[-156.84960937499997,20.772656249999955],[-156.97338867187497,20.757519531249983],[-157.0505859375,20.912451171875034],[-156.88056640624995,20.904833984375074],[-156.84960937499997,20.772656249999955]]],[[[-156.48681640624994,20.93256835937504],[-156.27753906250004,20.951269531250034],[-155.98984374999998,20.75712890624999],[-156.40878906249998,20.60517578125004],[-156.480078125,20.80122070312501],[-156.69775390625003,20.949072265625034],[-156.58540039062495,21.034326171874994],[-156.48681640624994,20.93256835937504]]],[[[-157.21362304687497,21.215380859375017],[-156.71215820312506,21.155078125000074],[-156.85986328125,21.05634765625004],[-157.29033203124996,21.112597656250017],[-157.21362304687497,21.215380859375017]]],[[[-157.79936523437502,21.456640625000034],[-157.63540039062502,21.30761718749997],[-158.11035156249994,21.318603515625],[-158.27314453125,21.585253906250045],[-157.9625,21.701367187499983],[-157.79936523437502,21.456640625000034]]],[[[-159.37275390625,21.93237304687497],[-159.60883789062495,21.909521484375034],[-159.78916015625003,22.041796875000074],[-159.57919921874998,22.22314453124997],[-159.35205078124997,22.219580078125034],[-159.37275390625,21.93237304687497]]],[[[-81.04418945312503,24.716796875000057],[-81.137353515625,24.710498046875017],[-80.93046875,24.75947265625004],[-81.04418945312503,24.716796875000057]]],[[[-80.3818359375,25.142285156249955],[-80.58056640624997,24.954248046875023],[-80.25708007812497,25.34760742187504],[-80.3818359375,25.142285156249955]]],[[[-97.17070312499996,26.159375],[-97.40209960937494,26.820507812499983],[-97.38598632812494,27.19648437500004],[-97.17070312499996,26.159375]]],[[[-80.18676757812497,27.278417968750034],[-80.17050781250003,27.20478515625004],[-80.43691406249994,27.850537109374955],[-80.18676757812497,27.278417968750034]]],[[[-91.793701171875,29.50073242187497],[-92.00664062499996,29.61030273437501],[-91.875244140625,29.640966796875034],[-91.793701171875,29.50073242187497]]],[[[-84.90791015624998,29.642626953125017],[-85.11674804687499,29.63281249999997],[-84.737158203125,29.732421875],[-84.90791015624998,29.642626953125017]]],[[[-89.22397460937498,30.084082031249977],[-89.34199218749995,30.062841796875006],[-89.18466796874995,30.168652343749983],[-89.22397460937498,30.084082031249977]]],[[[-118.34794921875002,33.3857421875],[-118.29746093750003,33.312109375],[-118.44628906249997,33.317089843749955],[-118.56943359375002,33.46416015624999],[-118.34794921875002,33.3857421875]]],[[[-120.04355468749995,33.918847656249994],[-120.25190429687494,34.01386718749998],[-120.07182617187493,34.026513671874966],[-120.04355468749995,33.918847656249994]]],[[[-119.88237304687497,34.07968749999998],[-119.54926757812497,34.02817382812506],[-119.80957031249997,33.9677734375],[-119.88237304687497,34.07968749999998]]],[[[-75.54414062499995,35.240087890625034],[-75.69008789062502,35.221582031249994],[-75.53637695312497,35.27861328124999],[-75.50351562500003,35.769140625],[-75.46474609374994,35.448632812499966],[-75.54414062499995,35.240087890625034]]],[[[-74.13320312500002,39.680761718750034],[-74.25048828125,39.529394531250006],[-74.10673828124996,39.74643554687498],[-74.13320312500002,39.680761718750034]]],[[[-72.50976562500003,40.98603515625001],[-72.58085937499996,40.92133789062498],[-71.90322265625,41.06069335937505],[-73.19428710937495,40.654199218749994],[-74.01489257812497,40.581201171874966],[-73.87924804687498,40.79165039062502],[-73.573828125,40.91962890624998],[-72.62509765624998,40.99184570312505],[-72.27412109374998,41.15302734375001],[-72.50976562500003,40.98603515625001]]],[[[-69.9779296875,41.26557617187504],[-70.23305664062502,41.28632812500001],[-70.04121093750001,41.3974609375],[-69.9779296875,41.26557617187504]]],[[[-70.50991210937502,41.376318359375034],[-70.82919921874995,41.35898437500006],[-70.61601562499996,41.45722656250001],[-70.50991210937502,41.376318359375034]]],[[[-71.24140625000001,41.49194335937497],[-71.34624023437496,41.469384765624994],[-71.23203124999995,41.654296875],[-71.24140625000001,41.49194335937497]]],[[[-68.18725585937497,44.33247070312501],[-68.41171875000003,44.294335937499966],[-68.29941406249998,44.456494140624955],[-68.18725585937497,44.33247070312501]]],[[[-122.394140625,47.39526367187503],[-122.50991210937497,47.358007812500006],[-122.486474609375,47.48876953125],[-122.394140625,47.39526367187503]]],[[[-122.57275390624999,48.15664062499999],[-122.38315429687499,47.923193359375034],[-122.74150390624999,48.22529296875004],[-122.62861328125,48.38422851562498],[-122.54243164062503,48.29399414062499],[-122.69702148437499,48.228662109374994],[-122.57275390624999,48.15664062499999]]],[[[-94.80346679687497,49.0029296875],[-94.71279296874997,48.863427734374994],[-94.62089843749999,48.74262695312501],[-93.85161132812496,48.607275390625034],[-93.70771484374995,48.52543945312499],[-93.37788085937498,48.61655273437498],[-93.25795898437497,48.62885742187501],[-92.83671875,48.567773437499994],[-92.50058593749995,48.43535156250002],[-92.41459960937493,48.276611328125],[-92.3484375,48.276611328125],[-92.00517578125002,48.301855468750006],[-91.38720703124997,48.05854492187498],[-91.04345703125003,48.19370117187498],[-90.84033203125003,48.20053710937506],[-90.79731445312495,48.13105468750001],[-89.4556640625,47.996240234374994],[-88.37817382812497,48.30307617187498],[-87.74389648437497,48.06054687500003],[-87.20800781249997,47.848486328125006],[-86.67216796874996,47.636425781249955],[-85.65224609375,47.21997070312503],[-85.07006835937497,46.97993164062498],[-84.87597656249994,46.89990234375003],[-84.66577148437503,46.54326171875002],[-84.44047851562496,46.49814453125006],[-84.12319335937497,46.50292968749997],[-83.97778320312503,46.08491210937498],[-83.61596679687503,46.116845703124994],[-83.46948242187503,45.99467773437499],[-83.59267578125,45.81713867187506],[-82.91933593749994,45.51796875000002],[-82.55107421874996,45.34736328125001],[-82.48505859374993,45.08374023437503],[-82.137841796875,43.570898437500034],[-82.19038085937495,43.47407226562501],[-82.54531249999997,42.62470703124998],[-83.10952148437497,42.25068359375001],[-83.141943359375,41.97587890624996],[-82.69003906249995,41.675195312499994],[-82.43906249999998,41.67485351562502],[-81.97416992187496,41.88872070312499],[-81.50732421874997,42.10346679687504],[-81.02822265624997,42.247167968750006],[-80.24755859375,42.36601562499996],[-79.17373046875,42.74853515625],[-78.91508789062496,42.90913085937504],[-78.98076171874993,42.98061523437502],[-79.02617187499996,43.01733398437506],[-79.066064453125,43.10610351562502],[-79.171875,43.466552734375],[-79.00249023437502,43.52714843749999],[-78.845556640625,43.58334960937498],[-78.72041015625001,43.62495117187501],[-78.45825195312497,43.63149414062502],[-77.596533203125,43.62861328124998],[-76.819970703125,43.62880859375002],[-76.18579101562503,44.24223632812502],[-75.81933593749997,44.468017578125],[-75.40126953124997,44.77226562499999],[-74.99614257812496,44.970117187499966],[-74.76245117187494,44.99907226562502],[-74.663232421875,45.00390625000003],[-71.51752929687495,45.00756835937497],[-71.327294921875,45.29008789062496],[-70.86503906249999,45.27070312500001],[-70.296240234375,45.90610351562506],[-70.00771484375002,46.70893554687501],[-69.24287109374998,47.46298828124998],[-69.0501953125,47.426611328125034],[-68.93720703124998,47.21123046875002],[-68.23549804687502,47.34594726562503],[-67.806787109375,47.08281249999999],[-67.80224609374994,45.7275390625],[-67.43266601562496,45.603125],[-67.366943359375,45.17377929687498],[-67.12485351562498,45.16943359375],[-66.98701171874995,44.82768554687502],[-67.191259765625,44.67558593750002],[-67.83906249999998,44.576269531250034],[-68.056640625,44.38432617187502],[-68.15205078124998,44.50200195312499],[-68.45058593749997,44.50761718749999],[-68.53251953124996,44.25864257812498],[-68.81191406249994,44.33935546875],[-68.76269531249994,44.57075195312498],[-69.22607421875003,43.98647460937505],[-69.52075195312503,43.89736328125002],[-69.55668945312496,43.982763671875006],[-69.62392578125,43.88061523437497],[-69.65288085937493,43.99389648437506],[-69.808349609375,43.772314453125034],[-69.965234375,43.855078125],[-70.17880859374998,43.76635742187506],[-70.73310546875001,43.07001953125004],[-70.82905273437493,42.82534179687502],[-70.61293945312497,42.623242187499955],[-71.04619140624993,42.331103515625045],[-70.73828125,42.228857421875006],[-70.42666015625002,41.75727539062501],[-70.00141601562498,41.82617187500003],[-70.24106445312495,42.09121093750002],[-70.10893554687496,42.07832031249998],[-69.97788085937498,41.961279296875006],[-69.94863281249997,41.67714843750005],[-70.65712890625,41.53422851562496],[-70.70112304687498,41.71484375],[-71.1685546875,41.489404296874994],[-71.14873046874996,41.74570312499998],[-71.27109375,41.68125],[-71.39013671875003,41.79531250000005],[-71.52285156249997,41.378955078125045],[-72.92470703125002,41.28515625000003],[-73.98710937499999,40.751367187499994],[-73.87197265625,41.05517578124997],[-73.96992187499995,41.24970703125001],[-73.92719726562495,40.914257812499955],[-74.26420898437496,40.52861328124999],[-73.972265625,40.40034179687498],[-74.079931640625,39.78813476562496],[-74.06459960937497,39.99311523437498],[-74.79448242187499,39.00190429687501],[-74.95429687499995,38.949951171875],[-74.89702148437502,39.14545898437504],[-75.52421874999999,39.49018554687501],[-75.421875,39.78969726562502],[-75.07416992187495,39.98349609375006],[-75.40063476562503,39.83159179687502],[-75.58759765625001,39.64077148437505],[-75.3921875,39.09277343750006],[-75.08867187499999,38.777539062499955],[-75.18710937499995,38.59111328124999],[-75.03876953124993,38.426367187500006],[-75.934375,37.15190429687496],[-75.97504882812498,37.3984375],[-75.65927734374995,37.953955078125034],[-75.850830078125,37.971582031249994],[-75.85869140624999,38.36206054687503],[-76.05122070312495,38.27954101562503],[-76.2646484375,38.436425781249994],[-76.26416015625,38.599951171875006],[-76.016943359375,38.62509765624998],[-76.21298828124998,38.75830078125003],[-76.34116210937498,38.70966796874998],[-76.16816406249998,38.85273437499998],[-76.32958984375,38.95278320312505],[-76.13520507812493,39.082128906250006],[-76.23569335937498,39.19160156250001],[-76.153125,39.315039062500034],[-75.87597656249997,39.3759765625],[-76.003125,39.41083984375001],[-75.87294921874997,39.510888671874966],[-75.95893554687498,39.58505859374998],[-76.2763671875,39.32275390625],[-76.330810546875,39.40390625],[-76.42089843749997,39.225],[-76.57041015624995,39.26933593749996],[-76.42758789062498,39.12602539062499],[-76.55854492187493,39.065234375000045],[-76.39409179687502,38.368994140625034],[-76.67734374999998,38.611962890624966],[-76.66855468749998,38.5375],[-76.34116210937498,38.08701171875006],[-76.86811523437495,38.39028320312502],[-76.88974609375,38.292089843750006],[-77.00117187499995,38.44526367187504],[-77.23251953125,38.40771484375003],[-77.03037109374995,38.88925781249998],[-77.26040039062502,38.6],[-77.27324218749996,38.35175781249998],[-77.04677734375002,38.356689453125],[-76.26425781250003,37.89355468749997],[-76.34414062499997,37.675683593749994],[-76.49248046874999,37.682226562500006],[-77.11108398437497,38.165673828124994],[-76.54946289062494,37.66914062500001],[-76.30556640625,37.57148437500001],[-76.26347656249996,37.35703125],[-76.40097656249998,37.386132812499994],[-76.45390624999993,37.27353515625006],[-76.75771484375002,37.50541992187496],[-76.28330078125,37.05268554687501],[-76.40087890624997,36.991308593750034],[-76.63090820312493,37.22172851562499],[-77.25087890624994,37.329199218750034],[-76.671875,37.172949218750006],[-76.48784179687502,36.89702148437499],[-75.99941406249997,36.91264648437499],[-75.53417968749997,35.81909179687506],[-75.94648437499995,36.65908203125002],[-75.99277343749995,36.47377929687502],[-75.82006835937494,36.11284179687502],[-76.14785156250002,36.279296875],[-76.15,36.14575195312497],[-76.27060546874998,36.18989257812501],[-76.22739257812498,36.11601562499996],[-76.559375,36.015332031249955],[-76.733642578125,36.229150390624994],[-76.726220703125,35.957617187500034],[-76.06977539062501,35.970312500000034],[-76.08359374999998,35.69052734375006],[-75.85390625,35.96015625000001],[-75.75883789062499,35.84326171875],[-75.77392578124997,35.64697265624997],[-76.17382812499997,35.354150390624994],[-76.489501953125,35.397021484375045],[-76.57719726562502,35.53232421874998],[-76.74140624999998,35.431494140625034],[-77.03999023437495,35.527392578125045],[-76.51293945312497,35.270410156249994],[-76.77915039062503,34.990332031250034],[-77.07026367187501,35.154638671875034],[-76.97495117187503,35.025195312500045],[-76.74497070312498,34.94096679687502],[-76.45673828124998,34.989355468750034],[-76.36220703125,34.9365234375],[-76.43979492187498,34.84291992187502],[-77.29624023437503,34.602929687499994],[-77.41225585937497,34.730810546875034],[-77.37978515625,34.526611328125],[-77.750732421875,34.28496093749996],[-77.92783203125,33.93974609374999],[-77.95327148437494,34.16899414062496],[-78.01333007812502,33.91181640624998],[-78.40585937499995,33.91757812499998],[-78.84145507812497,33.72407226562501],[-79.19379882812498,33.24414062500003],[-79.22646484375,33.40488281249998],[-79.27602539062497,33.135400390624966],[-79.80498046874999,32.78740234374996],[-79.93310546874997,32.81005859375006],[-79.94072265625002,32.667138671874966],[-80.36284179687496,32.500732421875],[-80.6341796875,32.51171875000003],[-80.474267578125,32.42275390625002],[-80.579345703125,32.28730468750004],[-80.80253906249999,32.44804687500002],[-80.69423828124997,32.21572265625002],[-81.11328124999997,31.87861328125001],[-81.06611328124995,31.787988281250023],[-81.259375,31.538916015624977],[-81.17543945312494,31.531298828125017],[-81.38095703124998,31.353271484375],[-81.28847656249997,31.263916015625],[-81.441748046875,31.19970703124997],[-81.5162109375,30.801806640625017],[-81.24951171875003,29.793798828125006],[-80.52412109374995,28.48608398437503],[-80.5849609375,28.271582031250034],[-80.456884765625,27.90068359374996],[-80.61000976562494,28.177587890624977],[-80.60693359375003,28.522900390624983],[-80.693505859375,28.34497070312497],[-80.68847656250003,28.578515625000023],[-80.83818359374999,28.757666015625034],[-80.74863281250003,28.381005859375023],[-80.050048828125,26.807714843750063],[-80.1263671875,25.83349609375],[-80.48466796874999,25.229833984375034],[-81.11049804687494,25.138037109374977],[-81.13603515624999,25.309667968750034],[-80.94042968750003,25.264208984375017],[-81.11333007812499,25.367236328125045],[-81.36494140625001,25.83105468750003],[-81.715478515625,25.98315429687503],[-81.95893554687495,26.489941406249983],[-81.82866210937496,26.68706054687499],[-82.03959960937496,26.552050781250017],[-82.01328125,26.96157226562505],[-82.24287109374998,26.848876953125],[-82.44135742187501,27.059667968750034],[-82.71459960937497,27.499609375000063],[-82.40576171874994,27.862890624999977],[-82.67519531249994,27.963769531250023],[-82.61098632812502,27.77724609375005],[-82.74287109374995,27.709375],[-82.84350585937494,27.845996093750017],[-82.65146484375,28.8875],[-83.69438476562502,29.92597656250001],[-84.04423828124996,30.10380859374999],[-84.30966796874995,30.064746093750045],[-84.38281250000003,29.90737304687505],[-85.31894531249995,29.680224609375045],[-85.413818359375,29.76757812499997],[-85.413818359375,29.842480468749955],[-85.31489257812493,29.758105468750017],[-85.35361328125,29.875732421875],[-85.67578125,30.121923828125063],[-85.60351562500003,30.286767578124966],[-85.75581054687495,30.1669921875],[-86.454443359375,30.39912109375004],[-86.12382812499999,30.40581054687499],[-86.25737304687502,30.493017578124977],[-87.201171875,30.339257812499994],[-86.98579101562498,30.43085937500001],[-86.99755859375,30.5703125],[-87.17060546874998,30.538769531249983],[-87.28105468750002,30.339257812499994],[-87.47578124999998,30.294287109375006],[-87.44829101562499,30.394140625],[-87.62226562499998,30.264746093750006],[-88.00595703124998,30.230908203124955],[-87.79028320312503,30.291796875000017],[-88.011328125,30.694189453125006],[-88.13544921874998,30.366601562499994],[-88.90522460937495,30.415136718750006],[-89.32055664062503,30.3453125],[-89.58847656249998,30.165966796874955],[-90.12597656249997,30.369091796874955],[-90.33198242187493,30.277587890625057],[-90.41303710937501,30.140332031249983],[-90.17534179687499,30.02910156249996],[-89.73745117187497,30.171972656250034],[-89.66503906249994,30.117041015625034],[-89.81518554687497,30.007275390624955],[-89.631689453125,29.90380859375003],[-89.400732421875,30.04604492187505],[-89.35444335937501,29.82021484375005],[-89.72089843749995,29.619287109374966],[-89.01572265625,29.202880859375057],[-89.15551757812497,29.01660156250003],[-89.23608398437494,29.081103515625017],[-89.37612304687497,28.981347656250023],[-89.44316406249996,29.194140625000045],[-90.15908203124997,29.537158203125017],[-90.05278320312499,29.336816406249966],[-90.21279296875,29.104931640624983],[-90.37919921874996,29.29511718750001],[-90.75102539062496,29.13085937500003],[-91.29013671875,29.288964843749994],[-91.15078124999994,29.317919921875045],[-91.24882812499993,29.56420898437503],[-91.51420898437499,29.55537109375001],[-91.8931640625,29.836035156249977],[-92.135498046875,29.699462890625057],[-92.08403320312499,29.59282226562499],[-92.26083984374995,29.55683593750004],[-93.17568359375,29.778955078124994],[-93.82646484374999,29.725146484375045],[-93.84145507812502,29.97973632812503],[-93.89047851562495,29.689355468750023],[-94.759619140625,29.384277343750057],[-94.52626953125,29.547949218750006],[-94.77827148437498,29.54785156249997],[-94.74194335937497,29.75],[-95.0228515625,29.70234375000001],[-94.88828125000003,29.37055664062501],[-95.27348632812499,28.96386718750003],[-96.23452148437502,28.488964843749983],[-96.01103515624996,28.631933593749977],[-96.44873046874997,28.594482421875],[-96.64003906249994,28.708789062500017],[-96.42109374999993,28.457324218750045],[-96.67636718749998,28.34130859375003],[-96.77353515624998,28.421630859375057],[-96.839501953125,28.194384765625017],[-97.156494140625,28.144335937500045],[-97.141259765625,28.060742187499983],[-97.034326171875,28.093847656250063],[-97.07309570312498,27.98608398437503],[-97.43149414062498,27.83720703124999],[-97.28872070312494,27.670605468749983],[-97.43911132812502,27.328271484374966],[-97.76845703124997,27.45751953125],[-97.69238281250003,27.287158203125017],[-97.48510742187497,27.237402343750006],[-97.55468749999994,26.96733398437496],[-97.43505859375,26.48583984375003],[-97.14624023437494,25.961474609375045],[-97.37563476562497,25.871826171875],[-99.10776367187498,26.446923828124994],[-99.45654296874999,27.05668945312496],[-99.50532226562497,27.54833984375003],[-100.29604492187495,28.32768554687499],[-100.75458984375001,29.182519531249994],[-101.44038085937503,29.77685546875],[-102.26894531249998,29.871191406250034],[-102.61494140624994,29.75234375],[-102.8919921875,29.216406250000034],[-103.16831054687498,28.998193359374994],[-104.110595703125,29.386132812499994],[-104.50400390624995,29.677685546874955],[-104.97880859374996,30.645947265624955],[-106.14804687499995,31.450927734375],[-106.44541015624996,31.768408203125006],[-108.21181640625002,31.779345703125017],[-108.21445312499993,31.329443359375034],[-111.0419921875,31.32421875000003],[-114.83593749999994,32.50830078125003],[-114.72475585937495,32.71533203125003],[-117.12827148437495,32.533349609374994],[-117.46743164062495,33.295507812500006],[-118.08051757812497,33.72216796874997],[-118.41044921874996,33.74394531249996],[-118.506201171875,34.01738281249999],[-119.14375,34.11201171874998],[-119.60605468749999,34.41801757812499],[-120.48120117187503,34.47163085937498],[-120.64467773437502,34.57998046875002],[-120.65908203124994,35.122412109375034],[-120.85737304687501,35.209667968749955],[-120.899609375,35.42509765624999],[-121.28383789062494,35.67631835937499],[-121.87739257812498,36.33105468749997],[-121.80742187499995,36.851220703124994],[-122.394921875,37.20751953125003],[-122.49921875000001,37.542626953124994],[-122.44560546875002,37.797998046874966],[-122.07050781249998,37.47827148437503],[-122.38544921875001,37.960595703124966],[-122.31425781249999,38.00732421874997],[-121.52534179687503,38.05590820312503],[-122.39335937499995,38.14482421875002],[-122.52133789062499,37.82641601562497],[-122.93198242187498,38.05546875000002],[-122.998779296875,37.98862304687498],[-122.90815429687501,38.19658203124999],[-123.701123046875,38.90727539062502],[-123.83291015624994,39.775488281250034],[-124.35654296875003,40.37109374999997],[-124.07192382812497,41.45952148437502],[-124.53964843750003,42.812890624999966],[-124.14873046874997,43.691748046875034],[-123.92934570312495,45.57695312499996],[-123.989306640625,46.21938476562502],[-123.22060546874998,46.153613281250045],[-123.46484375,46.27109374999998],[-124.07275390624996,46.279443359374994],[-124.04433593750002,46.605078125],[-123.946142578125,46.43256835937501],[-123.88916015625003,46.660009765625006],[-124.11254882812497,46.862695312499994],[-123.84287109375002,46.963183593750045],[-124.11171875,47.03520507812496],[-124.1392578125,46.95468749999998],[-124.376025390625,47.658642578124955],[-124.66308593749996,47.97412109375003],[-124.7099609375,48.38037109375],[-123.97578125,48.16845703125],[-122.97387695312499,48.07329101562496],[-122.77861328125,48.13759765625002],[-122.65664062500002,47.88115234374999],[-122.77841796874996,47.738427734374966],[-122.82138671875,47.79316406250001],[-123.1390625,47.386083984375034],[-122.92216796874993,47.40766601562498],[-123.066796875,47.39965820312506],[-123.04863281249995,47.479345703125034],[-122.53281250000002,47.919726562500045],[-122.67548828124995,47.612353515625045],[-122.57788085937496,47.29316406250001],[-122.76777343750001,47.21835937500006],[-122.82846679687503,47.336572265624994],[-123.02758789062501,47.13891601562503],[-122.70195312500002,47.11088867187502],[-122.35380859374996,47.37158203125],[-122.40180664062497,47.78427734374998],[-122.24199218750002,48.01074218750003],[-122.5169921875,48.15966796874997],[-122.40854492187502,48.29389648437498],[-122.66899414062496,48.465234374999966],[-122.49677734374995,48.50556640625001],[-122.51274414062502,48.66943359375],[-122.56201171875001,48.777978515624994],[-122.68593749999995,48.794287109375034],[-122.72246093750002,48.85302734375003],[-122.78876953125003,48.993017578125034],[-121.40722656249994,48.993017578125034],[-119.70170898437495,48.993017578125034],[-119.27534179687494,48.99306640625005],[-118.84892578124993,48.99306640625005],[-117.99619140625002,48.99306640625005],[-116.71704101562501,48.99306640625005],[-110.74765625,48.99306640625005],[-104.77832031249997,48.993115234374955],[-98.80898437499995,48.99316406249997],[-97.52983398437493,48.99316406249997],[-96.67705078124993,48.99316406249997],[-96.25068359374993,48.99316406249997],[-95.39790039062493,48.99316406249997],[-95.16206054687493,48.991748046875045],[-95.15527343749997,49.36967773437502],[-94.85434570312495,49.304589843749994],[-94.86040039062493,49.258593750000045],[-94.80346679687497,49.0029296875]]],[[[-176.28671874999998,51.79199218750006],[-176.34965820312502,51.733300781249994],[-176.41372070312502,51.840576171875],[-176.28671874999998,51.79199218750006]]],[[[-177.87905273437502,51.64970703125002],[-178.05888671875,51.67260742187497],[-177.98637695312493,51.76425781249998],[-178.16826171874996,51.90302734375001],[-177.644482421875,51.826269531250006],[-177.87905273437502,51.64970703125002]]],[[[-177.14819335937497,51.71674804687498],[-177.67021484375002,51.701074218749994],[-177.11005859375,51.92875976562502],[-177.14819335937497,51.71674804687498]]],[[[-176.593310546875,51.86669921875],[-176.45234374999995,51.735693359375034],[-176.96162109374998,51.60366210937505],[-176.69833984374998,51.986035156249955],[-176.593310546875,51.86669921875]]],[[[179.72773437500015,51.905419921874966],[179.50390625000003,51.97958984374998],[179.6271484375001,52.03041992187502],[179.72773437500015,51.905419921874966]]],[[[177.4154296875,51.88281249999997],[177.25029296875013,51.902929687500006],[177.6696289062501,52.10302734375],[177.4154296875,51.88281249999997]]],[[[-173.5533203125,52.13627929687502],[-173.02290039062504,52.07915039062502],[-173.83579101562498,52.048193359375006],[-173.99248046874993,52.12333984374996],[-173.5533203125,52.13627929687502]]],[[[-172.464794921875,52.27226562500002],[-172.61982421874998,52.27285156250005],[-172.47041015625,52.38803710937506],[-172.31362304687497,52.32958984375006],[-172.464794921875,52.27226562500002]]],[[[-174.67739257812502,52.035009765625006],[-175.29555664062502,52.022167968749955],[-174.30615234375,52.216162109375034],[-174.43554687499997,52.317236328125034],[-174.168896484375,52.42016601562503],[-174.04560546875,52.36723632812499],[-174.12065429687493,52.13520507812498],[-174.67739257812502,52.035009765625006]]],[[[173.72275390625018,52.35957031250004],[173.40234375000009,52.40478515625],[173.77607421875004,52.49511718750003],[173.72275390625018,52.35957031250004]]],[[[172.81181640625002,53.01298828125002],[173.43603515625003,52.85205078125],[172.93515625000012,52.752099609374966],[172.49482421875004,52.93789062499999],[172.81181640625002,53.01298828125002]]],[[[-167.96435546875003,53.345117187499994],[-169.088916015625,52.83203125],[-168.68984375000002,53.227246093749955],[-168.38041992187496,53.28344726562506],[-168.28769531249998,53.500146484374966],[-167.82807617187495,53.50795898437505],[-167.96435546875003,53.345117187499994]]],[[[-166.61533203124998,53.90092773437499],[-166.37231445312494,53.99897460937498],[-166.230859375,53.93261718750006],[-166.54560546875,53.726464843749966],[-166.354541015625,53.67353515625004],[-166.85097656249997,53.45288085937503],[-167.78085937500003,53.30024414062501],[-167.13608398437503,53.526464843750006],[-167.01572265625003,53.69838867187502],[-166.80898437500002,53.64614257812505],[-166.741259765625,53.71293945312496],[-167.10561523437497,53.813378906249994],[-167.03808593749997,53.9421875],[-166.67329101562498,54.00595703124998],[-166.61533203124998,53.90092773437499]]],[[[-165.841552734375,54.070654296875006],[-166.05664062500003,54.054345703124994],[-166.08774414062498,54.16914062500001],[-165.89287109375,54.20698242187498],[-165.69287109375,54.09990234375002],[-165.841552734375,54.070654296875006]]],[[[-165.56113281249998,54.13671874999997],[-165.55063476562498,54.28452148437498],[-165.40786132812502,54.19682617187496],[-165.56113281249998,54.13671874999997]]],[[[-162.29814453124993,54.847021484375006],[-162.43388671875,54.931542968749994],[-162.26459960937504,54.983496093750006],[-162.29814453124993,54.847021484375006]]],[[[-163.476025390625,54.98071289062497],[-163.37895507812496,54.81552734374998],[-163.083251953125,54.66899414062496],[-163.35810546874995,54.73569335937506],[-164.82343749999998,54.41909179687505],[-164.887646484375,54.60781250000002],[-164.47861328124998,54.906835937500006],[-163.80712890624997,55.04907226562503],[-163.476025390625,54.98071289062497]]],[[[-159.51513671875,55.15185546875003],[-159.617724609375,55.05732421875004],[-159.54506835937497,55.22597656250002],[-159.51513671875,55.15185546875003]]],[[[-131.33974609375002,55.079833984375],[-131.32954101562498,54.887744140625045],[-131.592236328125,55.02568359374999],[-131.5654296875,55.26411132812498],[-131.33974609375002,55.079833984375]]],[[[-159.87299804687495,55.128759765625034],[-160.22705078124997,54.92270507812506],[-160.17207031249995,55.123046875],[-159.88735351562497,55.27299804687502],[-159.87299804687495,55.128759765625034]]],[[[-132.86225585937504,54.894433593749966],[-132.61723632812493,54.892431640625006],[-132.70581054687497,54.684179687500034],[-133.42905273437498,55.30380859374998],[-133.097412109375,55.213720703125006],[-132.86225585937504,54.894433593749966]]],[[[-160.329296875,55.337695312500045],[-160.34331054687493,55.25878906250006],[-160.51748046875,55.33383789062506],[-160.329296875,55.337695312500045]]],[[[-160.68491210937498,55.314794921875006],[-160.552783203125,55.38076171875002],[-160.48754882812503,55.18486328124999],[-160.79506835937497,55.14521484375001],[-160.72392578124993,55.404638671875006],[-160.68491210937498,55.314794921875006]]],[[[-133.30507812500002,55.54375],[-133.6501953125,55.26928710937506],[-133.73710937500002,55.49692382812498],[-133.30507812500002,55.54375]]],[[[-155.56601562500003,55.82119140625005],[-155.73735351562493,55.82978515625001],[-155.59394531250004,55.92431640625],[-155.56601562500003,55.82119140625005]]],[[[-130.97915039062502,55.489160156249994],[-131.187890625,55.206298828125],[-131.44755859374996,55.40878906250006],[-131.7625,55.16582031250002],[-131.84609374999997,55.41625976562497],[-131.62495117187504,55.831689453124966],[-131.26923828125004,55.95537109375002],[-130.997802734375,55.727636718750006],[-130.97915039062502,55.489160156249994]]],[[[-133.56611328125,56.33920898437498],[-133.202978515625,56.31982421875003],[-133.096630859375,56.09003906250001],[-132.59760742187504,55.89501953125],[-132.17270507812498,55.48061523437502],[-132.51127929687493,55.59394531250001],[-132.63129882812495,55.47319335937502],[-132.41787109375002,55.48291015625006],[-132.20668945312497,55.22441406249996],[-131.97641601562498,55.208593750000034],[-132.06474609375002,54.713134765625],[-133.11855468750002,55.32763671875003],[-132.95888671875002,55.39555664062502],[-133.0333984375,55.589697265625034],[-133.68017578124994,55.78515625],[-133.24150390624993,55.920800781249994],[-133.371240234375,56.035888671875],[-133.74252929687498,55.96484375],[-133.530859375,56.145654296874966],[-133.56611328125,56.33920898437498]]],[[[-132.77988281249998,56.24726562499998],[-133.03500976562498,56.34091796875006],[-132.90205078124998,56.45375976562505],[-132.62910156249995,56.411914062500045],[-132.77988281249998,56.24726562499998]]],[[[-132.11235351562493,56.109375],[-132.13295898437497,55.94326171875005],[-132.28730468749995,55.92939453124998],[-132.65991210937503,56.07817382812499],[-132.379833984375,56.49877929687497],[-132.06689453125,56.24423828124998],[-132.11235351562493,56.109375]]],[[[-154.208642578125,56.51489257812497],[-154.32221679687504,56.570605468750045],[-154.11040039062496,56.602929687499966],[-154.208642578125,56.51489257812497]]],[[[-169.755224609375,56.63505859375002],[-169.47431640624998,56.59404296875002],[-169.6326171875,56.545703125000045],[-169.755224609375,56.63505859375002]]],[[[-132.746875,56.525683593750045],[-132.94804687500002,56.56723632812498],[-132.842529296875,56.79477539062506],[-132.56796875000003,56.57583007812505],[-132.746875,56.525683593750045]]],[[[-133.98959960937503,56.84497070312497],[-133.73837890625,56.65043945312496],[-133.94970703125,56.12773437499996],[-134.18959960937502,56.07695312500002],[-134.084375,56.456347656250045],[-134.37368164062502,56.838671875000045],[-134.14326171874998,56.93232421875001],[-133.98959960937503,56.84497070312497]]],[[[-133.36621093750006,57.003515625000034],[-132.99624023437497,56.93041992187497],[-132.95917968749998,56.67705078124996],[-133.03491210937494,56.62075195312505],[-133.32895507812498,56.83007812499997],[-133.158154296875,56.495166015625045],[-133.4841796875,56.45175781249998],[-133.979443359375,57.009570312500045],[-133.36621093750006,57.003515625000034]]],[[[-153.007080078125,57.12485351562498],[-153.37460937499998,57.05190429687505],[-153.285205078125,57.18505859375],[-152.90839843750004,57.152441406250006],[-153.007080078125,57.12485351562498]]],[[[-134.96977539062496,57.351416015625034],[-134.62070312499998,56.71831054687502],[-134.68188476562503,56.216162109375034],[-134.98056640625003,56.518945312499994],[-134.88344726562497,56.679052734375034],[-135.33061523437505,56.821875],[-135.19960937499997,57.02734375],[-135.45493164062503,57.24941406250005],[-135.81230468750002,57.00952148437503],[-135.82275390625,57.280419921874966],[-135.448681640625,57.534375],[-134.96977539062496,57.351416015625034]]],[[[-152.89804687499998,57.82392578125004],[-152.42875976562493,57.82568359375003],[-152.48261718749998,57.70332031249998],[-152.21621093749997,57.577001953125006],[-152.41220703125003,57.454785156249955],[-152.94077148437498,57.49809570312499],[-152.67905273437503,57.345117187499994],[-153.274365234375,57.22636718749996],[-153.732568359375,57.052343750000034],[-153.643310546875,56.960742187500045],[-154.02734375,56.77797851562502],[-153.793212890625,56.98950195312503],[-154.24375,57.143017578124955],[-154.33896484374998,56.9208984375],[-154.67319335937498,57.44609375],[-154.11616210937498,57.651220703125006],[-153.6876953125,57.30512695312504],[-153.841552734375,57.86284179687496],[-153.48793945312497,57.73095703125],[-153.21748046875004,57.79575195312506],[-153.16044921875,57.97197265624999],[-152.85039062499993,57.896777343750045],[-152.89804687499998,57.82392578125004]]],[[[-135.73037109375002,58.244238281250034],[-135.61323242187507,57.99184570312505],[-135.346630859375,58.12412109374998],[-134.9546875,58.01533203125004],[-134.97065429687495,57.817236328125006],[-135.33847656250003,57.768652343750034],[-134.97885742187503,57.724365234375],[-134.93149414062498,57.48115234375001],[-135.564208984375,57.66640625],[-135.691943359375,57.41992187500006],[-135.91079101562502,57.44658203124999],[-136.568603515625,57.97216796875003],[-136.32197265625,58.21889648437502],[-136.14375,58.098486328125006],[-136.09438476562502,58.198144531249966],[-135.73037109375002,58.244238281250034]]],[[[-134.68027343749998,58.16166992187499],[-134.24008789062498,58.143994140624955],[-133.82275390624997,57.62866210937503],[-134.29233398437498,58.044726562500074],[-133.91113281250003,57.3525390625],[-134.51601562499997,57.042578125],[-134.48676757812495,57.48203125],[-134.92348632812497,58.354638671874966],[-134.68027343749998,58.16166992187499]]],[[[-152.416943359375,58.360205078125034],[-151.974365234375,58.30986328124999],[-152.068896484375,58.17792968750001],[-152.26835937499993,58.25170898437506],[-152.30922851562502,58.133886718750034],[-152.5982421875,58.16259765625],[-152.92841796875004,57.99370117187499],[-153.38134765625003,58.08720703125002],[-152.976123046875,58.29702148437505],[-152.771875,58.278564453125],[-152.84111328125002,58.41640625000002],[-152.416943359375,58.360205078125034]]],[[[-152.486083984375,58.485009765624966],[-152.63662109375002,58.54169921874998],[-152.3955078125,58.619384765625],[-152.486083984375,58.485009765624966]]],[[[-160.918994140625,58.57709960937498],[-161.13149414062502,58.668212890625],[-160.71513671875005,58.79521484375002],[-160.918994140625,58.57709960937498]]],[[[-148.02177734375,60.06533203125005],[-148.271875,60.05327148437499],[-148.07958984375003,60.151660156250045],[-148.02177734375,60.06533203125005]]],[[[-147.735888671875,59.81323242187503],[-147.76806640625,59.94375],[-147.180859375,60.358251953125034],[-147.01987304687498,60.33222656249998],[-147.735888671875,59.81323242187503]]],[[[-166.13544921875,60.38354492187503],[-165.72968750000004,60.31420898437503],[-165.591796875,59.913134765625045],[-166.14873046874996,59.764111328124955],[-167.13886718749998,60.00854492187503],[-167.43642578125002,60.20664062500006],[-166.836328125,60.21699218750004],[-166.47568359374998,60.382763671874955],[-166.13544921875,60.38354492187503]]],[[[-146.3939453125,60.44965820312501],[-146.10224609374998,60.41118164062499],[-146.61831054687497,60.27368164062503],[-146.70253906249997,60.40854492187498],[-146.3939453125,60.44965820312501]]],[[[-147.658251953125,60.45048828124999],[-147.787841796875,60.17792968749998],[-147.89145507812498,60.299414062500034],[-147.658251953125,60.45048828124999]]],[[[-172.74223632812496,60.45737304687498],[-172.23208007812494,60.299121093750074],[-172.63574218750003,60.328857421875],[-173.04765625000002,60.56831054687501],[-172.74223632812496,60.45737304687498]]],[[[-171.46303710937494,63.640039062499994],[-171.03486328125,63.58549804687499],[-170.29936523437502,63.68061523437501],[-169.55454101562498,63.373486328124955],[-168.71601562500004,63.310595703125045],[-168.76132812500003,63.21376953125002],[-169.364697265625,63.17114257812506],[-169.67636718750003,62.95610351562502],[-169.81860351562494,63.122363281250045],[-170.84838867187494,63.44438476562502],[-171.63183593749997,63.351220703124966],[-171.74638671874993,63.703076171874955],[-171.46303710937494,63.640039062499994]]],[[[-141.00214843750004,68.77416992187506],[-141.00214843750004,67.89755859374998],[-141.00214843750004,66.43652343750006],[-141.00214843750004,65.55991210937498],[-141.00214843750004,64.09887695312506],[-141.00214843750004,63.22226562499998],[-141.00214843750004,61.761279296875045],[-141.00214843750004,60.884667968749994],[-141.00214843750004,60.30024414062504],[-140.76274414062505,60.259130859375006],[-140.525439453125,60.218359375000034],[-140.45283203125004,60.29970703125002],[-139.97329101562497,60.183154296875074],[-139.67631835937505,60.32832031249998],[-139.23476562499997,60.339746093749994],[-139.07924804687497,60.34370117187501],[-139.07924804687497,60.279443359374966],[-139.136962890625,60.17270507812498],[-139.18515624999998,60.083593750000034],[-138.86875,59.94575195312501],[-138.317626953125,59.611132812500074],[-137.59331054687493,59.22626953124998],[-137.52089843750002,58.91538085937498],[-137.43857421875003,58.903125],[-137.2775390625,58.988183593749994],[-137.126220703125,59.04096679687498],[-136.81328125000002,59.150048828124994],[-136.57875976562502,59.15224609375002],[-136.46635742187493,59.459082031250006],[-136.27797851562502,59.48032226562506],[-136.321826171875,59.604833984375034],[-135.70258789062504,59.72875976562506],[-135.36787109374998,59.743310546874994],[-135.051025390625,59.57866210937502],[-134.94375,59.28828125000001],[-134.67724609374997,59.19926757812499],[-134.39306640625,59.009179687499994],[-134.32963867187505,58.93969726562506],[-134.21850585937503,58.849902343750045],[-133.54638671874997,58.50346679687499],[-133.27529296875,58.22285156250004],[-133.00141601562495,57.948974609375],[-132.55048828125,57.499902343749994],[-132.44248046874998,57.40673828125003],[-132.30166015624997,57.27631835937501],[-132.232177734375,57.19853515624999],[-132.27939453124998,57.14536132812498],[-132.33798828124998,57.07944335937506],[-132.15703125,57.048193359375006],[-132.03154296875,57.02656250000004],[-132.062890625,56.95336914062503],[-132.104296875,56.856787109375006],[-131.86616210937495,56.792822265625006],[-131.82426757812496,56.589990234374994],[-131.471875,56.55673828125006],[-130.649072265625,56.26367187500003],[-130.47709960937496,56.230566406250034],[-130.413134765625,56.12250976562498],[-130.09785156249995,56.10927734375002],[-130.01406249999997,55.950537109375006],[-130.2140625,55.02587890625003],[-130.57534179687497,54.769677734374966],[-130.849609375,54.80761718750006],[-131.04785156249997,55.157666015624955],[-130.74819335937502,55.31801757812502],[-131.127685546875,55.96015625000001],[-131.032763671875,56.08808593749998],[-131.78417968749997,55.876562500000034],[-131.98339843749994,55.535009765625006],[-132.15541992187502,55.59956054687501],[-132.20751953124997,55.75341796875],[-131.84384765625003,56.16010742187498],[-131.55136718749998,56.206787109375],[-131.88789062500004,56.24165039062498],[-132.18203125000002,56.42065429687506],[-132.82460937500002,57.05581054687505],[-133.465869140625,57.17216796875002],[-133.64873046874993,57.64228515624998],[-133.11704101562498,57.56621093750002],[-133.535205078125,57.83295898437501],[-133.1943359375,57.87768554687506],[-133.559375,57.924462890624994],[-133.72231445312502,57.84423828125],[-134.03110351562498,58.072167968749966],[-133.87675781249996,58.51816406249998],[-134.20883789062503,58.232958984375045],[-134.77612304687506,58.45385742187503],[-135.36367187500002,59.41943359375],[-135.50234375000002,59.202294921874994],[-135.090234375,58.245849609375],[-135.57177734374994,58.41206054687504],[-135.89755859374998,58.40019531250002],[-136.04311523437497,58.82163085937498],[-135.82636718750004,58.89794921874997],[-136.0166015625,58.87397460937498],[-136.150048828125,59.04809570312503],[-136.22583007812497,58.765478515625006],[-136.98901367187503,59.03447265624999],[-137.05903320312498,58.87373046875001],[-136.613916015625,58.809277343749955],[-136.48374023437503,58.61767578125],[-136.224609375,58.602246093749955],[-136.06147460937495,58.45273437500006],[-136.607421875,58.24399414062498],[-137.54399414062502,58.58120117187502],[-138.51489257812503,59.16591796875005],[-139.77329101562498,59.52729492187504],[-139.51303710937498,59.698095703125006],[-139.5123046875,59.95356445312501],[-139.28671874999998,59.610937500000034],[-139.22080078125003,59.819873046875045],[-138.9880859375,59.83500976562502],[-139.43144531249996,60.012255859375074],[-140.41982421874997,59.71074218750002],[-141.40830078125,59.90278320312498],[-141.408740234375,60.11767578125006],[-141.67016601562497,59.969873046874966],[-142.94565429687503,60.09697265625002],[-144.14721679687494,60.01640625000002],[-144.185498046875,60.150732421875034],[-144.901318359375,60.335156249999955],[-144.69111328125,60.66909179687502],[-145.248291015625,60.38012695312506],[-145.898876953125,60.47817382812505],[-145.67490234374998,60.65112304687503],[-146.57045898437497,60.72915039062502],[-146.39199218749997,60.810839843750045],[-146.63842773437497,60.89731445312498],[-146.59912109374994,61.05351562500002],[-146.284912109375,61.11264648437498],[-147.89111328125,60.889892578125],[-148.00512695312494,60.96855468750002],[-147.75185546874997,61.218945312499955],[-148.34189453125,61.060400390625006],[-148.34443359374998,60.853564453125045],[-148.55615234374994,60.82700195312506],[-148.25673828124997,60.67529296874997],[-148.64013671875,60.48945312500004],[-148.11918945312502,60.57514648437498],[-147.96411132812494,60.48486328124997],[-148.430712890625,59.98911132812498],[-149.2666015625,59.99829101562497],[-149.395263671875,60.10576171875002],[-149.59804687500002,59.77045898437501],[-149.7138671875,59.91958007812502],[-149.80126953124994,59.737939453124966],[-150.00532226562507,59.78442382812503],[-150.19804687499996,59.56655273437505],[-150.60737304687504,59.56337890625002],[-150.934521484375,59.249121093750034],[-151.18276367187502,59.30078124999997],[-151.73818359375002,59.18852539062502],[-151.94951171875,59.26508789062498],[-151.88461914062503,59.386328125],[-151.39960937499995,59.51630859375001],[-151.04648437499998,59.771826171875034],[-151.45009765624997,59.65039062499997],[-151.85322265625,59.78208007812498],[-151.39599609375006,60.27446289062502],[-151.35644531249997,60.72294921874999],[-150.44125976562503,61.02358398437505],[-149.07509765624997,60.87641601562498],[-150.05327148437496,61.17109374999998],[-149.433544921875,61.50078125000002],[-149.97568359374998,61.27934570312502],[-150.61225585937495,61.301123046875006],[-151.59350585937494,60.979638671874966],[-152.54091796874997,60.265429687500045],[-153.025,60.29565429687497],[-152.660107421875,59.99721679687502],[-153.21123046875002,59.84272460937498],[-153.09360351562503,59.70913085937505],[-153.65253906250004,59.64702148437499],[-154.17832031250003,59.155566406250074],[-153.41826171875,58.9599609375],[-153.43759765625003,58.754833984374955],[-154.289013671875,58.30434570312502],[-154.247021484375,58.15942382812497],[-155.006884765625,58.01606445312501],[-155.77797851562497,57.56821289062498],[-156.43588867187498,57.359960937500006],[-156.62900390624998,57.00996093750001],[-158.41440429687498,56.435839843750045],[-158.5521484375,56.31269531249998],[-158.27563476562497,56.19624023437498],[-158.5046875,56.062109375],[-158.59116210937503,56.18452148437498],[-158.78984375000002,55.98691406250006],[-159.52324218749993,55.81000976562498],[-159.65966796875003,55.625927734374955],[-159.77138671874997,55.84111328125002],[-160.49931640625002,55.53730468750004],[-161.38193359374998,55.371289062499955],[-161.44379882812495,55.513281250000034],[-161.202099609375,55.54355468750006],[-161.51694335937503,55.61840820312503],[-162.073974609375,55.13930664062505],[-162.38637695312497,55.05234375],[-162.63037109375003,55.24667968749998],[-162.67436523437505,54.99658203125],[-162.86503906249996,54.954541015624955],[-163.11962890624997,55.06469726562503],[-163.131103515625,54.916552734375045],[-163.33530273437503,54.83916015624999],[-163.27880859374997,55.12182617187503],[-162.906591796875,55.19555664062503],[-161.69731445312502,55.9072265625],[-161.215625,56.02143554687498],[-160.8986328125,55.99365234375],[-161.00537109375,55.88715820312498],[-160.80283203125003,55.754443359375045],[-160.70634765625002,55.870458984375034],[-160.29169921875,55.80507812500005],[-160.53906250000006,56.00629882812501],[-160.30205078125,56.31411132812502],[-158.91801757812502,56.882177734375006],[-158.675146484375,56.79487304687498],[-158.66079101562502,57.03940429687498],[-158.32094726562497,57.29790039062499],[-157.84575195312496,57.52807617187497],[-157.4619140625,57.506201171875034],[-157.697216796875,57.679443359375],[-157.610888671875,58.050830078125074],[-157.19370117187498,58.19418945312506],[-157.48837890624998,58.25371093750002],[-157.52363281249998,58.421337890624955],[-156.97465820312496,58.736328125],[-156.80888671875005,59.13427734375],[-157.14204101562504,58.87763671875001],[-158.19091796875003,58.6142578125],[-158.50317382812494,58.85034179687497],[-158.42563476562498,58.99931640625002],[-158.080517578125,58.97744140625002],[-158.422802734375,59.08984375],[-158.67827148437502,58.92939453124998],[-158.80947265625002,58.973876953125],[-158.78862304687493,58.440966796875045],[-158.95068359375,58.404541015625],[-159.67026367187498,58.9111328125],[-159.92021484375,58.819873046875074],[-160.36313476562498,59.05117187500002],[-161.246826171875,58.799462890624994],[-161.36132812499994,58.66953124999998],[-162.144921875,58.64423828124998],[-161.724365234375,58.794287109375006],[-161.64438476562498,59.109667968750045],[-161.9810546875,59.14614257812502],[-161.82871093749998,59.588623046875],[-162.421337890625,60.28398437500002],[-161.96201171875003,60.695361328125045],[-162.68496093749997,60.268945312499966],[-162.57075195312495,59.98974609375],[-163.68037109374998,59.80151367187503],[-164.14282226562497,59.89677734374999],[-165.02651367187497,60.500634765624994],[-165.35380859375002,60.54121093750001],[-164.80517578125,60.89204101562498],[-164.31850585937497,60.77128906249999],[-164.37236328125002,60.59184570312502],[-163.999560546875,60.76606445312498],[-163.72998046874997,60.589990234374994],[-163.420947265625,60.757421875],[-163.90654296874996,60.85380859375002],[-163.58691406249994,60.902978515624994],[-163.74902343750003,60.9697265625],[-163.99462890624997,60.86469726562501],[-165.11484375,60.93281250000004],[-164.86899414062503,61.11176757812498],[-165.27978515624994,61.169628906249955],[-165.27363281250004,61.27485351562498],[-165.56586914062498,61.10234375000002],[-165.86396484375004,61.33569335937503],[-165.84531249999998,61.536230468750034],[-166.152734375,61.545947265625074],[-166.16811523437502,61.65083007812501],[-165.80893554687503,61.69609375000002],[-166.07880859375,61.803125],[-165.61279296875003,61.86928710937502],[-165.707275390625,62.10043945312506],[-165.19453125,62.47353515625002],[-164.75786132812493,62.496728515624966],[-164.589453125,62.709375],[-164.79267578125,62.623193359374966],[-164.79965820312503,62.918066406250006],[-164.384228515625,63.03046874999998],[-164.40903320312503,63.21503906250001],[-163.94287109375,63.247216796874994],[-163.61630859374998,63.125146484374994],[-163.73784179687496,63.016406250000045],[-163.504345703125,63.105859374999966],[-163.28784179687494,63.046435546875045],[-162.621484375,63.26582031249998],[-162.28281250000003,63.529199218749994],[-161.97397460937498,63.45292968749999],[-161.09970703125003,63.557910156250045],[-160.778564453125,63.818945312500034],[-160.987548828125,64.25126953125002],[-161.49072265625003,64.43378906249998],[-160.93193359374996,64.5791015625],[-160.855908203125,64.755615234375],[-161.13017578125005,64.92543945312505],[-161.759375,64.816259765625],[-162.80703124999997,64.37421875000001],[-163.20390625,64.65200195312502],[-163.14433593750002,64.423828125],[-163.71308593749998,64.588232421875],[-164.978759765625,64.45366210937502],[-166.1427734375,64.58276367187503],[-166.48139648437498,64.72807617187507],[-166.415234375,64.926513671875],[-166.92841796875,65.15708007812498],[-166.15703125,65.28583984375001],[-167.40400390625,65.42211914062497],[-168.08837890624997,65.65776367187502],[-166.39873046875002,66.14443359375005],[-165.62993164062496,66.131201171875],[-165.77617187500002,66.31904296875001],[-164.46049804687502,66.58842773437499],[-163.63823242187502,66.57465820312504],[-163.89394531249997,66.57587890625001],[-164.03374023437493,66.21552734374995],[-163.69536132812502,66.08383789062503],[-161.93369140625003,66.04287109374997],[-161.45541992187503,66.28139648437497],[-161.03427734375003,66.18881835937503],[-161.12031249999995,66.334326171875],[-161.91689453124997,66.41181640624998],[-162.54365234375004,66.80512695312501],[-162.36162109375,66.94731445312502],[-161.591015625,66.45952148437502],[-160.23168945312503,66.420263671875],[-160.360888671875,66.6125],[-160.864013671875,66.67084960937501],[-161.39804687499998,66.55185546875],[-161.85668945312497,66.70034179687497],[-161.719921875,67.02055664062502],[-163.5318359375,67.10258789062502],[-164.1251953125,67.60673828125007],[-166.786279296875,68.35961914062497],[-166.38051757812502,68.425146484375],[-166.20908203125,68.88535156250003],[-165.04394531249994,68.882470703125],[-163.867919921875,69.03666992187505],[-161.88095703125003,70.33173828125001],[-162.073876953125,70.16196289062498],[-160.9962890625,70.30458984375],[-160.11713867187495,70.59121093750002],[-159.86567382812498,70.27885742187499],[-159.81499023437496,70.49707031250003],[-159.38676757812493,70.52451171875003],[-160.081591796875,70.63486328125003],[-159.680908203125,70.786767578125],[-159.31450195312496,70.87851562500003],[-159.251171875,70.7484375],[-157.909375,70.860107421875],[-156.47021484374994,71.40766601562501],[-156.469970703125,71.29155273437507],[-155.57944335937503,71.12109374999997],[-156.14658203125,70.92783203125003],[-155.97353515625002,70.84199218749995],[-155.16684570312498,71.09921875000006],[-154.19521484375002,70.80112304687498],[-153.23291015625,70.93256835937504],[-152.49121093749994,70.88095703125],[-152.23291015625,70.81035156249999],[-152.39921875,70.62045898437503],[-151.76904296875,70.56015625],[-151.94467773437498,70.45209960937501],[-149.26943359374997,70.50078124999999],[-147.70537109375,70.21723632812495],[-145.82314453124997,70.16005859375002],[-145.19736328125003,70.00869140625002],[-143.218310546875,70.11625976562499],[-142.70786132812498,70.03378906249998],[-141.40791015625,69.65336914062502],[-141.00214843750004,69.65078125000002],[-141.00214843750004,68.77416992187506]]]]},"properties":{"name":"United States","childNum":76}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[71.20615234375006,39.892578125],[71.15625,39.88344726562502],[71.06425781250002,39.88491210937505],[71.01171874999997,39.895117187500006],[71.04365234375004,39.97631835937503],[71.04482421875005,39.992529296875034],[70.96064453125004,40.087988281250034],[71.00546875,40.15229492187498],[71.0241210937501,40.14916992187497],[71.08037109375007,40.07988281249999],[71.2287109375001,40.04814453124999],[71.20615234375006,39.892578125]]],[[[70.94677734374997,42.24868164062505],[70.97900390625003,42.26655273437504],[71.03603515625,42.28466796875],[71.12998046875006,42.25],[71.21269531250002,42.20644531250005],[71.23232421875005,42.18627929687503],[71.22851562499997,42.16289062499996],[70.18095703125007,41.571435546874994],[70.734375,41.400537109374994],[70.86044921875006,41.22490234375002],[71.11074218750005,41.152636718750045],[71.29882812500003,41.152490234374994],[71.39306640625003,41.123388671875034],[71.40839843750004,41.13603515625002],[71.42089843750003,41.341894531250034],[71.60625,41.367431640625],[71.66494140625,41.54121093749998],[71.70068359374997,41.454003906249966],[71.75771484375005,41.42802734375002],[71.79248046875003,41.41313476562499],[71.85800781250006,41.311376953125034],[71.8786132812501,41.195019531249955],[71.95849609375003,41.18706054687502],[72.05244140625004,41.16474609375001],[72.1154296875001,41.18657226562502],[72.1642578125001,41.173730468749966],[72.18095703125002,41.11845703124999],[72.18730468750002,41.02592773437499],[72.2130859375001,41.014257812500006],[72.36406250000002,41.04345703125],[72.65830078125,40.86992187499999],[73.13212890625002,40.82851562499999],[72.6041015625,40.52543945312499],[72.40205078125004,40.578076171874955],[72.3892578125,40.427392578124994],[72.13125,40.438623046874966],[71.69248046875,40.15234375],[71.30468749999997,40.28691406249996],[70.990625,40.2548828125],[70.95800781250003,40.238867187500034],[70.653125,40.201171875],[70.37158203125003,40.38413085937506],[70.75107421875006,40.721777343750006],[70.40195312500006,41.03510742187498],[69.71289062500003,40.65698242187503],[69.35722656250002,40.76738281249996],[69.20625,40.566552734374994],[69.27490234374997,40.19809570312498],[68.63066406250007,40.16708984374998],[68.9720703125,40.08994140624998],[68.80468750000003,40.05034179687499],[68.86875,39.90747070312503],[68.63896484375007,39.8388671875],[68.46328125,39.53671874999998],[67.71904296875007,39.62138671875002],[67.426171875,39.46557617187497],[67.3576171875001,39.216699218749994],[67.64833984375005,39.13105468750004],[67.69443359375006,38.99462890625003],[68.13251953125004,38.927636718749966],[68.08720703125002,38.47353515625002],[68.3502929687501,38.211035156250006],[67.81435546875005,37.48701171875004],[67.7980468750001,37.244970703125006],[67.75898437500004,37.172216796875034],[67.75292968749997,37.199804687500034],[67.7,37.227246093749955],[67.60742187499997,37.22250976562506],[67.5172851562501,37.26665039062499],[67.44169921875007,37.25800781250001],[67.3197265625,37.209570312500006],[67.1955078125001,37.23520507812498],[67.06884765624997,37.334814453125006],[66.82773437500006,37.37128906249998],[66.52226562500007,37.34848632812506],[66.51064453125,37.45869140625004],[66.51132812500006,37.59916992187496],[66.52558593750004,37.785742187500034],[66.60625,37.98671875000005],[65.97119140624997,38.244238281250006],[65.612890625,38.23857421875002],[64.3099609375,38.97729492187497],[63.76367187500003,39.16054687499999],[62.48320312500002,39.97563476562496],[61.90283203124997,41.09370117187501],[61.496972656249994,41.276074218749955],[61.2423828125001,41.18920898437503],[60.454980468749994,41.221630859374955],[60.089648437500074,41.39941406250003],[60.07558593750005,41.759667968749966],[60.20078125000006,41.803125],[59.94179687499999,41.97353515625002],[59.98515625000002,42.21171875],[59.35429687500002,42.32329101562496],[58.5890625000001,42.778466796874966],[58.477148437500006,42.66284179687503],[58.15156250000004,42.628076171874966],[58.474414062500074,42.29936523437496],[58.02890625,42.48764648437506],[57.814257812500074,42.18984375000005],[57.290625,42.123779296875],[56.96406250000004,41.856542968750006],[57.11884765625004,41.35029296874998],[57.01796875,41.26347656249996],[55.97744140625005,41.32221679687504],[55.97568359375006,44.99492187499996],[58.555273437500006,45.55537109375001],[61.007910156250006,44.39379882812497],[61.99023437500003,43.492138671874955],[63.20703125000003,43.62797851562502],[64.44316406250007,43.55117187499999],[64.9054687500001,43.714697265625006],[65.49619140625,43.310546875],[65.80302734375002,42.87695312500006],[66.1002929687501,42.99082031249998],[66.00957031250007,42.00488281250003],[66.49863281250006,41.99487304687503],[66.70966796875004,41.17915039062501],[67.9357421875001,41.19658203125002],[68.11308593750007,41.02861328124999],[68.04765625000007,40.80927734374998],[68.29189453125,40.656103515625034],[68.57265625,40.62265624999998],[68.58408203125,40.876269531250045],[69.15361328125002,41.42524414062498],[70.94677734374997,42.24868164062505]]]]},"properties":{"name":"Uzbekistan","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[-61.17451171875001,13.158105468749966],[-61.268457031249966,13.287695312499991],[-61.13896484374996,13.358740234374991],[-61.17451171875001,13.158105468749966]]]},"properties":{"name":"St. Vin. and Gren.","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-60.99790039062498,8.867333984374966],[-61.069189453125034,8.947314453125003],[-60.91582031249996,9.070312500000014],[-60.86142578124998,8.949609375000037],[-60.99790039062498,8.867333984374966]]],[[[-60.821191406249966,9.138378906250026],[-60.94140625000003,9.105566406250006],[-60.73583984374997,9.203320312500026],[-60.821191406249966,9.138378906250026]]],[[[-63.84936523437494,11.131005859374994],[-63.917626953124994,10.887548828125048],[-64.40234375,10.981591796875023],[-64.21367187500002,11.086132812499997],[-64.0283203125,11.00185546874998],[-63.84936523437494,11.131005859374994]]],[[[-60.742138671874926,5.202050781250037],[-60.71196289062499,5.191552734375023],[-60.671972656250034,5.164355468749989],[-60.603857421875006,4.94936523437498],[-61.00283203125002,4.535253906249991],[-61.28007812500002,4.516894531249974],[-61.82084960937496,4.197021484375],[-62.153125,4.098388671874986],[-62.41064453124994,4.156738281249972],[-62.71210937499998,4.01791992187502],[-62.85698242187502,3.593457031249969],[-63.33867187500002,3.943896484375045],[-64.02148437500003,3.929101562500051],[-64.19248046874995,4.126855468750009],[-64.57636718750001,4.139892578125],[-64.788671875,4.276025390625023],[-64.66899414062496,4.01181640625002],[-64.22109375000002,3.587402343749972],[-64.04658203124998,2.502392578124997],[-63.389257812500006,2.411914062500045],[-63.43251953124994,2.155566406250045],[-64.00849609374995,1.931591796874969],[-64.20502929687493,1.52949218750004],[-65.10375976562497,1.108105468749983],[-65.47338867187497,0.691259765624977],[-65.55605468750002,0.687988281250014],[-65.52299804687493,0.843408203124966],[-65.68144531249999,0.983447265624989],[-66.06005859375003,0.78535156250004],[-66.34711914062498,0.7671875],[-66.87602539062499,1.223046875000037],[-67.21083984375,2.390136718750043],[-67.61870117187496,2.793603515624994],[-67.85908203124998,2.793603515624994],[-67.3111328125,3.41586914062502],[-67.66162109375,3.864257812499986],[-67.85527343750002,4.506884765624989],[-67.82490234374995,5.270458984375026],[-67.47387695312503,5.929980468750003],[-67.48198242187499,6.18027343750002],[-67.85917968749999,6.289892578124963],[-68.47177734375,6.156542968749974],[-69.42714843749997,6.123974609374997],[-70.12919921874999,6.95361328125],[-70.73715820312503,7.090039062499997],[-71.12861328124993,6.98671875],[-72.00664062499993,7.032617187500023],[-72.20771484374995,7.37026367187498],[-72.47197265624996,7.524267578124991],[-72.39033203124995,8.287060546874969],[-72.66542968749994,8.62758789062498],[-72.79638671874997,9.10898437499999],[-73.05839843749999,9.259570312500031],[-73.36621093749997,9.194140625000017],[-73.00654296874998,9.789160156250006],[-72.86933593750001,10.49125976562496],[-72.690087890625,10.835839843749994],[-72.24848632812501,11.196435546875009],[-71.95810546875,11.66640625],[-71.31972656249997,11.861914062500048],[-71.95693359375002,11.569921874999977],[-71.835107421875,11.190332031250009],[-71.6416015625,11.013525390625048],[-71.73090820312498,10.994677734375017],[-71.59433593749995,10.657373046875051],[-72.11284179687499,9.815576171874966],[-71.61953124999994,9.047949218749991],[-71.24140625000001,9.160449218750003],[-71.08583984375002,9.348242187499977],[-71.05268554687501,9.705810546874986],[-71.49423828125,10.533203124999972],[-71.46953124999993,10.964160156250017],[-70.23251953124998,11.372998046874997],[-70.09711914062493,11.519775390624972],[-69.80478515624998,11.47421875000002],[-69.81733398437495,11.672070312499997],[-70.19257812499993,11.62460937500002],[-70.28652343749997,11.886035156249989],[-70.20278320312497,12.098388671874986],[-70.00395507812496,12.177880859375023],[-69.63159179687494,11.479931640625026],[-68.827978515625,11.431738281249977],[-68.39863281249995,11.160986328124977],[-68.29628906249997,10.689355468749994],[-68.13994140624999,10.492724609374989],[-66.24721679687497,10.632226562499994],[-65.85175781249995,10.257763671874997],[-65.12910156249998,10.070068359375043],[-64.85048828125,10.098095703124969],[-64.188330078125,10.457812499999989],[-63.73188476562501,10.503417968750043],[-64.24750976562498,10.54257812500002],[-64.298193359375,10.635156249999966],[-61.879492187500006,10.741015625000031],[-62.379980468750006,10.546875],[-62.91357421875,10.531494140624986],[-62.68583984374996,10.289794921875043],[-62.740576171875006,10.056152343750043],[-62.55034179687499,10.200439453125043],[-62.320410156250034,9.783056640625006],[-62.22114257812498,9.882568359375028],[-62.15336914062493,9.821777343749986],[-62.15532226562499,9.979248046875014],[-62.077099609374926,9.97504882812504],[-61.73593749999998,9.631201171874977],[-61.76591796874996,9.813818359374963],[-61.58886718749994,9.894531249999986],[-60.79248046874997,9.360742187500037],[-61.02314453124998,9.15458984374996],[-61.24726562499998,8.600341796875014],[-61.61870117187499,8.59746093749996],[-61.30400390624999,8.410400390625043],[-60.800976562499926,8.592138671875034],[-60.16748046875,8.616992187500031],[-60.01752929687501,8.549316406250014],[-59.83164062499998,8.305957031250003],[-59.84907226562498,8.248681640624966],[-59.96484375000003,8.191601562499969],[-59.99072265624997,8.16201171874998],[-60.032421874999926,8.053564453125006],[-60.51362304687501,7.813183593749969],[-60.71865234374994,7.535937499999974],[-60.606542968750006,7.320849609375031],[-60.63330078124997,7.211083984374966],[-60.58320312499998,7.156201171874969],[-60.523193359375,7.143701171875009],[-60.464941406250034,7.166552734375045],[-60.39238281249999,7.164550781249986],[-60.34506835937495,7.15],[-60.32548828124996,7.133984374999983],[-60.32207031249996,7.092041015625043],[-60.35209960937496,7.002880859374997],[-60.39501953125,6.945361328125003],[-60.717919921874966,6.768310546875],[-61.14560546874998,6.694531249999983],[-61.20361328124997,6.588378906250028],[-61.181591796874926,6.513378906250026],[-61.15102539062502,6.446533203124986],[-61.15229492187501,6.385107421875006],[-61.12871093749999,6.214306640625026],[-61.15947265624996,6.174414062499977],[-61.22495117187498,6.129199218750003],[-61.303125,6.049511718750026],[-61.39082031250001,5.938769531250017],[-61.376806640625006,5.906982421875028],[-61.167187499999926,5.674218750000037],[-60.95400390625002,5.437402343750023],[-60.742138671874926,5.202050781250037]]]]},"properties":{"name":"Venezuela","childNum":4}},{"geometry":{"type":"Polygon","coordinates":[[[-64.765625,17.794335937499994],[-64.58046874999994,17.750195312499983],[-64.88911132812495,17.701708984375045],[-64.765625,17.794335937499994]]]},"properties":{"name":"U.S. Virgin Is.","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[104.06396484375003,10.390820312500011],[104.01845703125,10.029199218749966],[103.84951171875005,10.371093749999986],[104.06396484375003,10.390820312500011]]],[[[107.52128906250007,20.926611328124977],[107.39921875000007,20.903466796874966],[107.55126953125003,21.034033203125006],[107.52128906250007,20.926611328124977]]],[[[107.60273437500004,21.21679687500003],[107.40351562500004,21.093652343749994],[107.47626953125004,21.268945312499994],[107.60273437500004,21.21679687500003]]],[[[107.97265624999997,21.507958984375023],[107.40996093750002,21.284814453125023],[107.35429687500007,21.055175781250057],[107.1647460937501,20.94873046875003],[106.68339843750007,21.000292968750074],[106.75341796875003,20.73505859375004],[106.55078124999997,20.52656250000001],[106.57285156250012,20.392187499999977],[105.98408203125004,19.939062500000034],[105.62177734375004,18.96630859375003],[105.88828125000006,18.502490234375045],[106.49902343749997,17.946435546874994],[106.47890625000005,17.719580078125063],[106.3705078125,17.746875],[107.83378906250002,16.322460937499983],[108.02939453125012,16.331103515625074],[108.82128906249997,15.377929687500028],[109.30332031250012,13.856445312500043],[109.271875,13.279345703124974],[109.42392578125006,12.955957031249994],[109.44492187500006,12.599609375000057],[109.33554687500012,12.751904296874997],[109.21894531250004,12.64580078124996],[109.30468750000003,12.391162109375045],[109.20683593750007,12.415380859375006],[109.1986328125,11.724853515625014],[109.03964843750012,11.592675781249994],[108.98671875,11.336376953124997],[108.09492187500004,10.897265624999989],[108.0013671875,10.720361328125009],[107.26152343750007,10.39838867187504],[107.00664062500002,10.66054687499998],[106.94746093750004,10.400341796874997],[106.72734375000007,10.535644531250028],[106.605859375,10.46494140625002],[106.74121093750003,10.444384765625003],[106.75742187500006,10.295800781250023],[106.46406250000004,10.298291015624997],[106.78525390625012,10.116455078124986],[106.59560546875005,9.859863281250028],[106.1364257812501,10.221679687500014],[106.56435546875005,9.715625],[106.48408203125004,9.559423828125006],[105.83095703125005,10.000732421875028],[106.15859375,9.59414062499998],[106.16835937500005,9.396728515625],[105.50097656249997,9.093212890624983],[105.11435546875006,8.629199218750031],[104.77041015625,8.59765625],[104.89628906250007,8.746630859374974],[104.81855468750004,8.801855468750034],[104.84521484375003,9.606152343750026],[105.08447265625003,9.99570312499999],[104.8019531250001,10.202734374999977],[104.66347656250005,10.169921875000043],[104.42636718750006,10.411230468749991],[104.85058593749997,10.534472656249974],[105.04638671874997,10.701660156250014],[105.04570312500002,10.911376953125014],[105.3146484375001,10.845166015625026],[105.40576171875003,10.95161132812504],[105.75507812500004,10.989990234375043],[105.85332031250007,10.86357421874996],[106.16396484375005,10.794921875],[106.16093750000002,11.037109375000057],[105.85605468750006,11.294287109375048],[105.85146484375005,11.635009765625],[106.0060546875001,11.758007812500011],[106.39921875000007,11.687011718750028],[106.41386718750002,11.9484375],[106.70009765625,11.979296874999974],[107.21210937500004,12.30400390624996],[107.39335937500002,12.260498046874972],[107.50644531250006,12.364550781250031],[107.47539062500002,13.030371093749963],[107.60546874999997,13.437792968750017],[107.3314453125,14.126611328125009],[107.51943359375005,14.705078125],[107.51376953125012,14.817382812500057],[107.52451171875012,14.871826171875043],[107.50468750000007,14.915917968749966],[107.48037109375,14.979882812500037],[107.55527343750006,15.057031250000023],[107.58964843750002,15.118457031250017],[107.63369140625005,15.18984375],[107.653125,15.255224609374991],[107.62167968750006,15.309863281250017],[107.56425781250002,15.391601562499972],[107.45957031250012,15.4658203125],[107.33876953125,15.560498046875011],[107.27939453125006,15.618701171875045],[107.16591796875005,15.802490234375028],[107.1888671875,15.838623046875],[107.36064453125002,15.921728515624977],[107.3919921875,15.951660156250028],[107.39638671875,16.04301757812499],[106.93066406249997,16.353125],[106.8927734375001,16.396533203125074],[106.85107421875003,16.515625],[106.83242187500005,16.526269531250023],[106.79160156250006,16.490332031250006],[106.73955078125007,16.452539062500023],[106.6564453125001,16.49262695312501],[106.54619140625002,16.650732421874977],[106.53369140625003,16.821044921875057],[106.52597656250006,16.876611328124994],[106.50224609375002,16.95410156249997],[106.26953125000003,17.21679687500003],[106.00625,17.415283203125057],[105.69140625000003,17.737841796875045],[105.58847656250012,17.983691406250045],[105.51855468749997,18.077441406250045],[105.45820312500004,18.15429687499997],[105.11455078125002,18.40527343750003],[105.08701171875006,18.496240234374994],[105.14541015625,18.616796875000063],[105.14648437500003,18.650976562500006],[103.89160156250003,19.304980468750017],[103.89638671875,19.339990234375023],[103.93203125,19.366064453125006],[104.0275390625001,19.42045898437499],[104.062890625,19.48256835937505],[104.05156250000007,19.564160156249955],[104.01347656250007,19.64648437500003],[104.03203125000002,19.675146484375006],[104.06279296875007,19.678417968749983],[104.25986328125006,19.685498046874983],[104.5462890625,19.61054687500001],[104.58789062500003,19.61875],[104.74316406250003,19.754736328124977],[104.80175781249997,19.83613281250004],[104.81513671875004,19.90400390625001],[104.9279296875001,20.01811523437499],[104.92919921875003,20.082812500000017],[104.88867187500003,20.169091796875023],[104.84785156250004,20.202441406250045],[104.69873046875003,20.20532226562503],[104.67695312500004,20.224707031249977],[104.66191406250007,20.28901367187501],[104.65644531250004,20.32851562499999],[104.6188476562501,20.37451171875003],[104.49619140625006,20.413671875],[104.39218750000012,20.424755859374955],[104.36777343750012,20.44140624999997],[104.40781250000012,20.48574218750005],[104.47861328125006,20.529589843750017],[104.53271484374997,20.55488281250001],[104.58320312500004,20.646679687499955],[104.34960937499997,20.821093750000074],[104.19531249999997,20.913964843749966],[104.10136718750002,20.94550781250001],[103.63505859375007,20.697070312500017],[103.46357421875004,20.779833984375017],[103.21074218750002,20.840625],[103.10449218749997,20.891650390625045],[102.88378906250003,21.202587890624983],[102.85117187500006,21.26591796874999],[102.94960937500005,21.681347656249983],[102.84521484374997,21.73476562500005],[102.81591796874997,21.807373046875],[102.7982421875,21.797949218750034],[102.77109375000006,21.709667968749983],[102.73857421875002,21.67792968750001],[102.66201171875005,21.67602539062497],[102.58251953125003,21.90429687500003],[102.12744140624997,22.379199218750045],[102.1759765625001,22.414648437500006],[102.2370117187501,22.466015624999983],[102.40644531250004,22.70800781249997],[102.47089843750004,22.75092773437501],[102.98193359374997,22.4482421875],[103.32666015625003,22.769775390625057],[103.49296875000007,22.587988281250034],[103.62021484375006,22.782031250000045],[103.94150390625006,22.540087890625045],[104.14306640624997,22.800146484375006],[104.37177734375004,22.704052734374983],[104.68730468750002,22.822216796874983],[104.86474609375003,23.136376953125023],[105.27539062500003,23.34521484375003],[105.8429687500001,22.922802734374955],[106.14843749999997,22.970068359375006],[106.2790039062501,22.857470703125045],[106.54179687500007,22.908349609375023],[106.78027343749997,22.778906250000034],[106.55039062500006,22.501367187499994],[106.66357421875003,21.97890625000005],[106.97099609375002,21.923925781250034],[107.35117187500012,21.60888671874997],[107.75927734374997,21.655029296875057],[107.97265624999997,21.507958984375023]]]]},"properties":{"name":"Vietnam","childNum":4}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[169.49130859375006,-19.54013671875002],[169.34726562500006,-19.623535156249957],[169.2174804687501,-19.476367187500003],[169.24746093750005,-19.3447265625],[169.49130859375006,-19.54013671875002]]],[[[169.334375,-18.940234375000017],[168.98691406250006,-18.87128906250001],[169.01582031250004,-18.64375],[169.14384765625002,-18.63105468750001],[169.334375,-18.940234375000017]]],[[[168.44580078124997,-17.54218750000004],[168.58496093750003,-17.695898437500006],[168.52460937500004,-17.798046875000026],[168.15820312500003,-17.710546874999963],[168.2731445312501,-17.552246093749957],[168.44580078124997,-17.54218750000004]]],[[[168.44677734375003,-16.778808593749957],[168.18144531250002,-16.804003906250017],[168.13535156250006,-16.636914062499997],[168.44677734375003,-16.778808593749957]]],[[[168.29667968750007,-16.33652343749999],[167.92900390625002,-16.22871093749997],[168.16386718750002,-16.081640625000034],[168.29667968750007,-16.33652343749999]]],[[[167.4125,-16.095898437499997],[167.83662109375004,-16.449707031249957],[167.44931640625012,-16.554980468750003],[167.34921875000006,-16.15449218750004],[167.15146484375006,-16.080468749999966],[167.19951171875002,-15.885058593750031],[167.33574218750007,-15.916699218749997],[167.4125,-16.095898437499997]]],[[[167.9113281250001,-15.435937500000023],[167.67421875,-15.4515625],[168.00253906250012,-15.283203124999986],[167.9113281250001,-15.435937500000023]]],[[[166.74580078125004,-14.826855468750011],[166.81015625000012,-15.15742187500004],[167.0755859375,-14.935644531249977],[167.20078125000012,-15.443066406249969],[167.0939453125001,-15.580859374999974],[166.75830078125003,-15.631152343750003],[166.63105468750004,-15.406054687499974],[166.56738281250003,-14.641796874999969],[166.74580078125004,-14.826855468750011]]],[[[167.58486328125,-14.260937500000011],[167.43027343750012,-14.294921875],[167.41074218750006,-14.19746093750004],[167.50644531250012,-14.142187499999977],[167.58486328125,-14.260937500000011]]],[[[167.48886718750006,-13.907226562499972],[167.3917968750001,-13.788378906250017],[167.48105468750006,-13.709472656250014],[167.48886718750006,-13.907226562499972]]]]},"properties":{"name":"Vanuatu","childNum":10}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-171.4541015625,-14.04648437500002],[-171.9119140625,-14.001660156250026],[-172.04589843750003,-13.857128906249983],[-171.60390624999997,-13.879199218750045],[-171.4541015625,-14.04648437500002]]],[[[-172.33349609375,-13.46523437499999],[-172.17685546874998,-13.68466796875002],[-172.224951171875,-13.804296874999963],[-172.535693359375,-13.791699218749983],[-172.77851562499998,-13.516796875000011],[-172.33349609375,-13.46523437499999]]]]},"properties":{"name":"Samoa","childNum":2}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[53.76318359374997,12.636816406249991],[54.18740234375005,12.664013671875026],[54.511132812499994,12.552783203125017],[54.12949218750006,12.360644531250045],[53.71884765625006,12.318994140624994],[53.31582031250005,12.533154296875011],[53.53496093750002,12.715771484374997],[53.76318359374997,12.636816406249991]]],[[[42.75585937500003,13.70429687500004],[42.689746093750074,13.673632812500017],[42.7941406250001,13.766113281250028],[42.75585937500003,13.70429687500004]]],[[[42.787402343750074,13.971484375000031],[42.69404296875004,14.007910156249991],[42.76210937500005,14.067480468750048],[42.787402343750074,13.971484375000031]]],[[[53.08564453125004,16.648388671874955],[52.327734375,16.293554687500063],[52.17402343750004,15.956835937500017],[52.2174804687501,15.655517578125],[51.3224609375001,15.22626953125004],[49.34990234375002,14.637792968749977],[48.66835937499999,14.050146484374977],[47.9899414062501,14.048095703125],[47.40771484374997,13.661621093750057],[46.78886718750002,13.465576171874986],[45.65732421875006,13.338720703124991],[45.03867187500006,12.815869140624969],[44.617773437500006,12.817236328124977],[44.00585937499997,12.607666015625],[43.634375,12.744482421874991],[43.487597656250074,12.69882812500002],[43.23193359375003,13.267089843750057],[43.2824218750001,13.692529296875037],[43.08906250000004,14.010986328125],[42.93642578125005,14.938574218749963],[42.85566406250004,15.132958984375037],[42.65781250000006,15.232812500000051],[42.79902343750004,15.326269531249991],[42.71718750000005,15.654638671875006],[42.83964843750002,16.032031250000074],[42.79931640624997,16.37177734375001],[43.16503906249997,16.689404296874955],[43.19091796875003,17.359375],[43.41796875000003,17.516259765625023],[43.91699218749997,17.32470703124997],[45.14804687500006,17.427441406249955],[45.5353515625001,17.30205078124999],[46.72763671875006,17.26557617187501],[46.97568359375006,16.953466796875034],[47.14355468749997,16.946679687499966],[47.44179687499999,17.111865234375045],[47.57958984374997,17.448339843750034],[48.17216796875002,18.156933593749983],[49.04199218750003,18.58178710937503],[51.977636718750006,18.996142578125074],[53.08564453125004,16.648388671874955]]]]},"properties":{"name":"Yemen","childNum":4}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[37.85693359375003,-46.94423828124998],[37.5900390625001,-46.90800781250006],[37.78955078124997,-46.8375],[37.85693359375003,-46.94423828124998]]],[[[31.799609375000017,-23.8921875],[31.98583984374997,-24.460644531249983],[31.921679687500017,-25.96875],[31.335156250000097,-25.755566406249997],[31.207324218750074,-25.843359375000034],[31.08808593750004,-25.980664062500026],[30.803320312500006,-26.41347656250001],[30.806738281250006,-26.78525390624999],[30.88330078124997,-26.792382812500023],[30.938085937500006,-26.91582031250003],[31.06337890625005,-27.1123046875],[31.274023437500063,-27.23837890625002],[31.469531250000017,-27.29550781250002],[31.74257812500005,-27.309960937500037],[31.95839843750005,-27.305859375],[31.946093750000017,-27.173632812499974],[31.96718750000005,-26.96064453125001],[31.994726562500006,-26.817480468749977],[32.024804687499994,-26.81113281250002],[32.112890625,-26.83945312500002],[32.19960937499999,-26.833496093749957],[32.35351562499997,-26.861621093750003],[32.7765625000001,-26.850976562499966],[32.88613281250005,-26.849316406249983],[32.53476562500006,-28.19970703125003],[32.285742187500006,-28.62148437499998],[31.335156250000097,-29.378125],[29.97119140625003,-31.322070312500017],[28.449414062500068,-32.62460937499999],[27.077441406250074,-33.52119140625004],[26.429492187500045,-33.75957031250002],[25.80585937500001,-33.737109374999974],[25.574218750000057,-34.03535156249998],[25.00292968750003,-33.97363281250003],[24.8271484375,-34.16894531250003],[24.595507812500074,-34.17451171875],[23.697851562500063,-33.99277343750002],[23.268164062500006,-34.08115234374999],[22.553808593750063,-34.01005859374999],[22.24550781250005,-34.06914062500003],[21.788964843750023,-34.37265624999996],[20.529882812500034,-34.4630859375],[20.020605468750006,-34.785742187500006],[19.298242187500023,-34.61503906249996],[19.330761718750068,-34.49238281250001],[19.098339843750068,-34.350097656249986],[18.831347656250017,-34.36406249999999],[18.75214843750004,-34.08261718750002],[18.50039062499999,-34.10927734375004],[18.46162109375001,-34.346875],[18.35205078124997,-34.1884765625],[18.43300781250005,-33.71728515625003],[17.851074218750057,-32.82744140625002],[17.96523437500005,-32.70859374999996],[18.125,-32.74912109374996],[18.325292968750034,-32.50498046874996],[18.21083984375008,-31.74248046874996],[17.34707031250005,-30.44482421875],[16.95,-29.40341796875002],[16.739453124999983,-29.009375],[16.447558593750045,-28.61757812499998],[16.755761718750023,-28.45214843750003],[16.7875,-28.39472656249997],[16.81015625,-28.264550781249994],[16.841210937500023,-28.21894531250004],[16.875292968750045,-28.12792968749997],[16.93330078125004,-28.06962890624999],[17.05625,-28.03105468750003],[17.1884765625,-28.13251953125001],[17.358691406250017,-28.269433593750023],[17.44794921875001,-28.698144531249966],[18.310839843750017,-28.88623046875],[19.16171875,-28.93876953124996],[19.245800781250068,-28.90166015625003],[19.31269531250004,-28.733300781250023],[19.539843750000017,-28.574609375000023],[19.98046875,-28.45126953125002],[19.98046875,-28.310351562500003],[19.98046875,-24.77675781249998],[20.430664062500057,-25.14707031250002],[20.79316406250001,-25.915625],[20.641406250000017,-26.7421875],[20.739843749999977,-26.84882812499997],[21.694726562500023,-26.840917968749963],[21.738085937500045,-26.806835937500026],[21.788281250000068,-26.710058593750034],[22.01093750000004,-26.635839843750006],[22.090917968749977,-26.580175781250034],[22.217578125000045,-26.38886718749997],[22.47089843750004,-26.219042968750003],[22.548632812500074,-26.178417968749997],[22.59765625000003,-26.13271484375001],[22.878808593750023,-25.457910156250023],[23.148730468750017,-25.288671875],[23.389257812500006,-25.291406250000023],[23.89375,-25.600878906250017],[23.96953124999999,-25.62607421874999],[24.192968750000034,-25.632910156249963],[24.33056640625,-25.742871093749983],[25.21337890625,-25.75625],[25.518164062500006,-25.66279296875001],[25.91210937499997,-24.747460937499966],[26.031835937500034,-24.70244140625003],[26.130859375000057,-24.671484375000034],[26.39716796875004,-24.61357421874996],[26.451757812500063,-24.582714843749983],[26.835058593750063,-24.240820312499963],[27.085546875000034,-23.577929687500003],[27.7685546875,-23.14892578125],[27.812597656250006,-23.108007812500006],[28.210156249999983,-22.693652343749974],[28.83984375000003,-22.480859374999966],[28.94580078125003,-22.39511718749999],[29.013476562500045,-22.27841796875002],[29.129882812500057,-22.21328125],[29.364843750000063,-22.19394531250005],[29.37744140625003,-22.19277343749998],[29.66308593749997,-22.146289062500017],[29.90234375000003,-22.184179687500006],[30.19042968750003,-22.291113281250034],[30.460156250000097,-22.329003906250023],[30.71162109375004,-22.297851562499986],[31.07343750000004,-22.30781249999997],[31.19726562499997,-22.344921874999983],[31.287890625000074,-22.402050781249983],[31.54560546875004,-23.48232421874998],[31.799609375000017,-23.8921875]],[[27.19355468750001,-29.94130859375001],[27.364062500000017,-30.27919921875001],[27.753125,-30.6],[28.05683593750001,-30.63105468750001],[28.128710937500017,-30.52509765625001],[28.39208984375003,-30.14755859375002],[28.646875,-30.1265625],[29.09804687500005,-29.919042968750006],[29.142187500000063,-29.70097656249999],[29.293554687500006,-29.56689453125003],[29.348828125000097,-29.441992187499977],[29.38671874999997,-29.319726562500023],[29.301367187500006,-29.08984375],[28.625781250000017,-28.581738281250054],[28.583398437499994,-28.59414062499999],[28.471875,-28.615820312499977],[28.23261718750004,-28.701269531249977],[28.084375,-28.779980468750026],[27.95986328125008,-28.87333984375003],[27.73554687500004,-28.940039062500034],[27.294531250000063,-29.519335937500017],[27.056933593750074,-29.62558593749999],[27.19355468750001,-29.94130859375001]]]]},"properties":{"name":"South Africa","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[33.148046875,-9.603515625],[33.25,-9.759570312500003],[33.35097656250002,-9.862207031250009],[33.33710937500001,-9.954003906250009],[33.3115234375,-10.037988281250009],[33.52890625,-10.234667968750003],[33.53759765625,-10.3515625],[33.5537109375,-10.391308593750011],[33.66152343750002,-10.553125],[33.29277343750002,-10.85234375],[33.37978515625002,-11.157910156250011],[33.26835937500002,-11.40390625],[33.23271484375002,-11.417675781250011],[33.22636718750002,-11.534863281250011],[33.30390625000001,-11.690820312500009],[33.25234375000002,-12.112597656250003],[33.34013671875002,-12.308300781250011],[33.512304687500006,-12.347753906250006],[32.975195312500006,-12.701367187500011],[32.96757812500002,-13.225],[32.67041015625,-13.590429687500006],[32.797460937500006,-13.6884765625],[32.98125,-14.009375],[33.148046875,-13.94091796875],[33.201757812500006,-14.013378906250011],[30.231835937500023,-14.990332031250006],[30.39609375,-15.64306640625],[29.4873046875,-15.69677734375],[28.9130859375,-15.98779296875],[28.760546875000017,-16.53212890625001],[27.932226562500006,-16.89619140625001],[27.020800781250017,-17.95839843750001],[26.779882812500006,-18.04150390625],[26.333398437500023,-17.929296875],[25.995898437500017,-17.969824218750006],[25.2587890625,-17.793554687500006],[25.001757812500017,-17.56855468750001],[24.73291015625,-17.51777343750001],[24.27490234375,-17.481054687500006],[23.380664062500017,-17.640625],[22.193945312500006,-16.628125],[21.979785156250017,-15.95556640625],[21.979394531250023,-14.440527343750006],[21.979296875000017,-14.11962890625],[21.979101562500006,-13.798730468750009],[21.978906250000023,-13.0009765625],[22.209570312500006,-13.0009765625],[23.843164062500023,-13.0009765625],[23.962988281250006,-12.988476562500011],[23.882421875,-12.799023437500011],[23.886523437500017,-12.743261718750006],[23.909375,-12.636132812500009],[23.98388671875,-11.725],[23.96650390625001,-10.871777343750011],[24.36572265625,-11.1298828125],[24.3779296875,-11.417089843750006],[25.28876953125001,-11.21240234375],[25.349414062500017,-11.623046875],[26.025976562500006,-11.89013671875],[26.824023437500017,-11.965234375],[27.1591796875,-11.579199218750006],[27.573828125,-12.22705078125],[28.412890625000017,-12.51806640625],[28.550878906250006,-12.836132812500011],[28.730078125,-12.925488281250011],[29.014257812500006,-13.368847656250011],[29.20185546875001,-13.398339843750009],[29.55419921875,-13.248925781250009],[29.775195312500017,-13.438085937500006],[29.79511718750001,-12.155468750000011],[29.508203125000023,-12.228222656250011],[29.48554687500001,-12.41845703125],[29.064355468750023,-12.348828125000011],[28.482519531250006,-11.812109375],[28.383398437500006,-11.566699218750003],[28.6455078125,-10.550195312500009],[28.60419921875001,-9.678808593750006],[28.400683593750017,-9.224804687500011],[28.869531250000023,-8.785839843750011],[28.89814453125001,-8.485449218750006],[30.75117187500001,-8.193652343750003],[30.830664062500006,-8.385546875],[30.891992187500023,-8.473730468750006],[30.968359375,-8.550976562500011],[31.07636718750001,-8.611914062500006],[31.3505859375,-8.60703125],[31.44921875,-8.65390625],[31.53486328125001,-8.71328125],[31.55625,-8.80546875],[31.673632812500017,-8.908789062500006],[31.91865234375001,-8.9421875],[31.921875,-9.019433593750009],[31.94257812500001,-9.054003906250003],[32.75664062500002,-9.322265625],[32.919921875,-9.407421875000011],[32.99599609375002,-9.622851562500003],[33.148046875,-9.603515625]]]},"properties":{"name":"Zambia","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[31.287890625000017,-22.40205078125001],[31.07343750000001,-22.30781250000001],[30.71162109375001,-22.2978515625],[30.46015625000001,-22.32900390625001],[30.1904296875,-22.291113281250006],[29.90234375,-22.184179687500006],[29.6630859375,-22.146289062500003],[29.37744140625,-22.19277343750001],[29.36484375,-22.193945312500006],[29.315234375000017,-22.15771484375],[29.237207031250023,-22.07949218750001],[29.042382812500023,-22.018359375],[29.02558593750001,-21.796875],[28.014062500000023,-21.55419921875],[27.66943359375,-21.064257812500003],[27.679296875,-20.503027343750006],[27.28076171875,-20.47871093750001],[27.17822265625,-20.10097656250001],[26.168066406250006,-19.53828125000001],[25.939355468750023,-18.93867187500001],[25.242285156250006,-17.969042968750003],[25.2587890625,-17.793554687500006],[25.995898437500017,-17.969824218750006],[26.333398437500023,-17.929296875],[26.779882812500006,-18.04150390625],[27.020800781250017,-17.95839843750001],[27.932226562500006,-16.89619140625001],[28.760546875000017,-16.53212890625001],[28.9130859375,-15.98779296875],[29.4873046875,-15.69677734375],[30.39609375,-15.64306640625],[30.437792968750017,-15.995312500000011],[31.236230468750023,-16.02363281250001],[31.939843750000023,-16.428808593750006],[32.94804687500002,-16.71230468750001],[32.87626953125002,-16.88359375],[32.99306640625002,-18.35957031250001],[32.69970703125,-18.94091796875],[32.84980468750001,-19.10439453125001],[32.77763671875002,-19.388769531250006],[32.992773437500006,-19.98486328125],[32.49238281250001,-20.659765625],[32.353613281250006,-21.136523437500003],[32.429785156250006,-21.29707031250001],[31.429492187500017,-22.298828125],[31.287890625000017,-22.40205078125001]]]},"properties":{"name":"Zimbabwe","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[74.00809389139292,33.25375789331485],[73.19660141888893,33.898124784580936],[73.13410859949555,34.82510160558277],[72.31128647748268,35.77290936638241],[73.08203125000107,36.43949943991182],[73.08961802927895,36.86435907947333],[73.116796875,36.868554687499994],[74.03886718750002,36.825732421874996],[74.54140625000002,37.02216796875],[74.69218750000002,37.0357421875],[74.8892578125,36.952441406249996],[74.94912109375002,36.968359375],[75.05390625000001,36.987158203125],[75.14521484375001,36.9732421875],[75.3466796875,36.913476562499994],[75.37685546875002,36.883691406249994],[75.42421875000002,36.738232421875],[75.46025390625002,36.725048828125],[75.57373046875,36.759326171874996],[75.66718750000001,36.741992187499996],[75.77216796875001,36.694921875],[75.84023437500002,36.649707031249996],[75.88496093750001,36.600732421874994],[75.93300781250002,36.52158203125],[75.95185546875001,36.45810546875],[75.97441406250002,36.382421875],[75.91230468750001,36.048974609374994],[76.07089843750003,35.9830078125],[76.14785156250002,35.829003906249994],[76.17783203125003,35.810546875],[76.25166015625001,35.8109375],[76.3857421875,35.837158203125],[76.50205078125003,35.878222656249996],[76.55126953125,35.887060546875],[76.5634765625,35.772998046874996],[76.6318359375,35.729394531249994],[76.7275390625,35.678662109375],[76.76689453124999,35.66171875],[76.81279296874999,35.571826171874996],[76.88222656250002,35.4357421875],[76.927734375,35.346630859375],[77.04863281249999,35.109912109374996],[77.00087890625002,34.991992187499996],[76.78291015625001,34.900195312499996],[76.75751953125001,34.877832031249994],[76.7490234375,34.847558593749994],[76.6962890625,34.786914062499996],[76.59443359375001,34.73583984375],[76.45673828125001,34.756103515625],[76.17246093750003,34.667724609375],[76.041015625,34.669921875],[75.93828125000002,34.612548828125],[75.86210937500002,34.56025390625],[75.70917968750001,34.503076171874994],[74.300390625,34.765380859375],[74.17197265625,34.7208984375],[74.05585937500001,34.6806640625],[73.96123046875002,34.653466796874994],[73.79453125,34.378222656249996],[73.80996093750002,34.325341796874994],[73.92460937500002,34.287841796875],[73.97236328125001,34.236621093749996],[73.9794921875,34.191308593749994],[73.90390625,34.1080078125],[73.94990234375001,34.018798828125],[74.24648437500002,33.990185546875],[73.97646484375002,33.7212890625],[74.15,33.506982421874994],[74.00809389139292,33.25375789331485]]]},"properties":{"name":"","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[78.49194250885338,32.53122786149202],[78.10154031239509,32.87658365066666],[77.71342088235082,32.6917648744551],[77.06655516561037,33.301666835953235],[76.62299010270264,33.32014871357439],[76.32728006076415,32.87658365066666],[75.73585997688717,32.78417426256088],[75.62496871116024,32.28516356678968],[75.32221348233018,32.28516356678968],[74.98730468749997,32.46220703124996],[74.78886718750013,32.4578125],[74.6857421875001,32.493798828124994],[74.66328125000004,32.75766601562495],[74.63242187499995,32.770898437500136],[74.58828125000011,32.7532226562501],[74.35458984375012,32.76870117187505],[74.30546875000007,32.81044921875002],[74.30361328125005,32.991796875000034],[73.98984375000006,33.22119140625006],[74.15,33.506982421874994],[73.97646484375016,33.72128906249998],[74.24648437500011,33.99018554687504],[73.9499023437501,34.018798828125],[73.90390625000012,34.10800781250006],[73.97949218750009,34.191308593749966],[73.97236328125004,34.23662109374996],[73.92460937500007,34.287841796875114],[73.80996093750016,34.32534179687511],[73.79453125000006,34.378222656250045],[73.96123046875007,34.653466796874994],[74.05585937500015,34.68066406250003],[74.17197265624995,34.72089843750004],[74.30039062500006,34.76538085937506],[75.70917968750004,34.50307617187508],[75.86210937500002,34.56025390625001],[75.93828125000019,34.612548828125],[76.04101562500014,34.66992187499997],[76.17246093750006,34.66772460937506],[76.4567382812501,34.756103515625114],[76.5944335937501,34.73583984375006],[76.69628906249997,34.78691406249999],[76.74902343750014,34.84755859375008],[76.7575195312501,34.87783203125005],[76.7829101562501,34.90019531249999],[77.00087890625011,34.99199218750002],[77.03066406250011,35.06235351562498],[77.04863281250007,35.109912109375074],[77.42343749999995,35.30258789062506],[77.57158203125002,35.37875976562495],[77.69697265625015,35.443261718750136],[77.79941406250006,35.49589843750002],[78.0426757812501,35.4797851562501],[78.07578125000006,35.13491210937502],[78.15849609375002,34.94648437499998],[78.32695312500007,34.60639648437498],[78.86484375000006,34.39033203125001],[78.93642578125,34.35195312500002],[78.97060546875011,34.22822265625004],[78.72666015625006,34.013378906249955],[78.78378906250006,33.80878906250004],[78.86503906250002,33.43110351562501],[78.94843750000004,33.346533203125006],[79.1125,33.22626953125001],[79.13515625000005,33.17192382812496],[79.10283203125007,33.05253906249996],[79.14550781250003,33.00146484375006],[79.16992187500003,32.497216796874994],[78.91894531249997,32.3582031250001],[78.75351562500012,32.49926757812506],[78.73671875,32.55839843750002],[78.49194250885338,32.53122786149202]]]]},"properties":{"name":"","childNum":1}}]}`);y5.registerMap("world",t5);const r5=u=>{const{areaStyleColors:e,dataLoaded:t,hasData:f,highlight:x,type:P,option:F,series:H,onChange:V,zoomStart:K,zoomEnd:X,title:e0,seriesConfig:Z=[],noDataComponent:Q=null,zoomColors:i0}=u,[J,c0]=(0,D.useState)(null),r0=(0,D.useRef)(null),o0=()=>{J&&J.resize()},g0={defaultOpts:(0,W0.fromJS)({title:{show:!0,text:e0,left:0},color:[],toolbox:{right:"0",orient:"horizontal",itemSize:15,showTitle:!0,feature:null},dataZoom:[{show:!0,start:0,end:100,orient:"horizontal",dataBackground:{lineStyle:{color:(i0==null?void 0:i0.lineStyle)||"#368493"},areaStyle:{color:(i0==null?void 0:i0.areaStyle)||"#368493"}},handleStyle:{color:(i0==null?void 0:i0.handleStyle)||"#368493"},textStyle:{color:(i0==null?void 0:i0.textStyle)||"#368493"},borderColor:"transparent",fillerColor:(i0==null?void 0:i0.fillerColor)||"rgba(54, 132, 147, 0.1)"}],legend:{show:!1},tooltip:{trigger:"axis",axisPointer:{type:"cross"}},grid:{left:"1%",right:"1%",bottom:"50px",top:"40px",containLabel:!0},xAxis:{boundaryGap:!1,type:"category",splitLine:{show:!0,lineStyle:{type:"dotted",color:"#F0F0F0"}},axisLine:{show:!1},axisTick:{show:!1},data:[]},yAxis:{min:"dataMin",boundaryGap:!0,axisPointer:{show:!0},splitLine:{lineStyle:{type:"dotted",color:"#F0F0F0"},show:!0},axisLabel:{show:!0},axisLine:{show:!0},axisTick:{show:!1},type:"value"},textStyle:{color:"#5a5a68"},series:[],animationEasing:"elasticOut"}),seriesDefault:(0,W0.fromJS)({data:[],type:"line",areaStyle:{opacity:1,color:e?new y5.graphic.LinearGradient(0,0,1,1,e.map((R0,U0)=>({offset:U0,color:R0}))):[]},smooth:!1,symbolSize:7,name:""})},y0={defaultOpts:(0,W0.fromJS)({tooltip:{trigger:"axis",formatter:"{b}: {c} ({d}%)"},legend:{orient:"horizontal",x:"left",y:"top",data:[]},color:[],series:[]}),seriesDefault:(0,W0.fromJS)({type:"pie",center:["50%","55%"],radius:["50%","75%"],avoidLabelOverlap:!1,animationType:"scale",animationEasing:"elasticOut",labelLine:{normal:{show:!0,smooth:.2,length:6,length2:6}},data:[]})},L0={defaultOpts:(0,W0.fromJS)({series:[]}),seriesDefault:(0,W0.fromJS)({type:"map",data:[]})},E0=(R0,U0,s5)=>{let J0={};switch(R0){case"pie":{J0=y0.defaultOpts.mergeDeep((0,W0.fromJS)(U0)).toJS(),s5.forEach(G0=>{J0.series.push(y0.seriesDefault.mergeDeep((0,W0.fromJS)(G0)).toJS())});break}case"geo":{J0=L0.defaultOpts.mergeDeep((0,W0.fromJS)(U0)).toJS(),s5.forEach(G0=>{J0.series.push(L0.seriesDefault.mergeDeep((0,W0.fromJS)(G0)).toJS())});break}default:{J0=g0.defaultOpts.mergeDeep((0,W0.fromJS)(U0)).toJS(),Array.isArray(U0.yAxis)&&(J0.yAxis=U0.yAxis),s5.forEach((G0,h5)=>{const u5=Object.assign({},g0.seriesDefault.toJS(),Z[h5],G0);J0.series.push(u5)});break}}return J0};(0,D.useEffect)(()=>(window.addEventListener("resize",o0),()=>{window.removeEventListener("resize",o0)}),[J]),(0,D.useEffect)(()=>{if(r0!=null&&r0.current)return c0(y5.init(r0.current)),()=>{J&&J.dispose()}},[r0.current]);const S0=R0=>{V&&V(R0)};(0,D.useEffect)(()=>{let R0;return J&&(R0=a0(S0,500),J.on("dataZoom",R0),J.on("restore",R0),J.on("click",R0),J.on("mousemove",U0=>{U0.data&&J.getZr().setCursorStyle("pointer")})),()=>{J&&(J.off("dataZoom",R0),J.off("restore",R0),J.off("click",R0))}},[J,V]);const B0=w(J),I0=w(F),v0=w(P),l0=w(H);(0,D.useEffect)(()=>{var R0,U0,s5,J0,G0,h5;J&&(!((U0=(R0=(0,W0.fromJS)(B0))==null?void 0:R0.equals)!=null&&U0.call(R0,(0,W0.fromJS)(J)))||!((J0=(s5=(0,W0.fromJS)(I0))==null?void 0:s5.equals)!=null&&J0.call(s5,(0,W0.fromJS)(F)))||v0!==P||!((h5=(G0=(0,W0.fromJS)(l0)).equals)!=null&&h5.call(G0,(0,W0.fromJS)(H))))&&(J.clear(),J.setOption(E0(P,F,H)),J.dispatchAction({type:"takeGlobalCursor",key:"dataZoomSelect",dataZoomSelectActive:!0}))},[J,F,H,P]),(0,D.useEffect)(()=>{J&&x&&(J.dispatchAction({type:"highlight",seriesIndex:x.seriesIndex,dataIndex:x.dataIndex}),J.dispatchAction({type:"showTip",seriesIndex:x.seriesIndex,dataIndex:x.dataIndex}))},[x]);const s0=w(K),C0=w(X);(0,D.useEffect)(()=>{J&&K!==-1&&X!==-1&&(s0!==K||C0!==X)&&J.dispatchAction({type:"dataZoom",startValue:K,endValue:X})},[K,X]);const T0=()=>{const{style:R0}=u,U0=R0||{};return U0.height||(U0.height="300px"),U0.width||(U0.width="100%"),U0},$0=()=>t&&(f===!1||f===!0)?f:!0,K0=()=>{const R0=["tyk-chart"];return t||R0.push("tyk-chart--loading-chart"),$0()||R0.push("tyk-chart--no-data"),R0.join(" ")};return R().createElement("div",{className:"tyk-chart__wrapper"},t?null:R().createElement(_0,null),R().createElement("div",{className:K0(),style:T0(),ref:r0}),$0()?null:Q?Q():R().createElement(D0,{theme:"info"},"No data to display"))};r5.propTypes={areaStyleColors:n().instanceOf(Array),dataLoaded:n().bool,hasData:n().bool,highlight:n().oneOfType([n().number,n().string,n().instanceOf(Array)]),noDataComponent:n().func,zoomStart:n().number,zoomEnd:n().number,zoomColors:n().instanceOf(Object),option:n().instanceOf(Object),onChange:n().func,style:n().instanceOf(Object),type:n().string,title:n().string,series:n().instanceOf(Array),seriesConfig:n().instanceOf(Object)};const n5=(0,D.memo)(r5);var Z0=O0(745);const V0=u=>{const{children:e,options:t,onClose:f,index:x}=u,P=Object.assign({theme:"success",delay:3e3},t);let F;const H=V=>{f(V),clearTimeout(F)};return B(()=>H(x),P.delay),R().createElement(D0,{className:"tyk-toast__message",theme:P.theme,onClose:()=>H(x)},e)};V0.propTypes={children:n().oneOfType([n().element,n().node,n().string]),options:n().instanceOf(Object),onClose:n().func,index:n().number};const d5=V0;var P5=Object.defineProperty,f9=Object.defineProperties,v6=Object.getOwnPropertyDescriptors,p9=Object.getOwnPropertySymbols,S1=Object.prototype.hasOwnProperty,_1=Object.prototype.propertyIsEnumerable,$1=(u,e,t)=>e in u?P5(u,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):u[e]=t,E1=(u,e)=>{for(var t in e||(e={}))S1.call(e,t)&&$1(u,t,e[t]);if(p9)for(var t of p9(e))_1.call(e,t)&&$1(u,t,e[t]);return u},y6=(u,e)=>f9(u,v6(e)),b6=u=>typeof u=="symbol"?u:u+"",w6=(u,e)=>{var t={};for(var f in u)S1.call(u,f)&&e.indexOf(f)<0&&(t[f]=u[f]);if(u!=null&&p9)for(var f of p9(u))e.indexOf(f)<0&&_1.call(u,f)&&(t[f]=u[f]);return t};const O1=u=>{const[e,t]=(0,D.useState)({}),{notify:f}=u,x=(F,H)=>{const V=Math.floor(Math.random()*1e6);t(K=>y6(E1({},K),{[V]:{message:F,options:H}}))};(0,D.useEffect)(()=>{f(x)},[e]);const P=F=>{const H=E1({},e);delete H[F],t(V=>{const K=V,{[F]:X}=K;return w6(K,[b6(F)])})};return R().createElement("div",{className:"tyk-toast__container"},Object.keys(e).map(F=>e[F]?R().createElement(d5,{options:e[F].options,onClose:P.bind(null,F),index:F,key:F},e[F].message):null))};O1.propTypes={notify:n().func};const C6=O1;var A6=Object.defineProperty,k6=Object.defineProperties,x6=Object.getOwnPropertyDescriptors,T1=Object.getOwnPropertySymbols,S6=Object.prototype.hasOwnProperty,_6=Object.prototype.propertyIsEnumerable,g2=(u,e,t)=>e in u?A6(u,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):u[e]=t,g9=(u,e)=>{for(var t in e||(e={}))S6.call(e,t)&&g2(u,t,e[t]);if(T1)for(var t of T1(e))_6.call(e,t)&&g2(u,t,e[t]);return u},m9=(u,e)=>k6(u,x6(e)),$6=(u,e,t)=>(g2(u,typeof e!="symbol"?e+"":e,t),t);class E6{constructor(){$6(this,"bindNotify",f=>{this.createNotification=f});const e=document.createElement("div");e.className="tyk-toast",document.body.appendChild(e),(0,Z0.s)(e).render(R().createElement(C6,{notify:this.bindNotify}))}notify(e,t){this.createNotification&&this.createNotification(e,t)}danger(e,t){this.notify(e,m9(g9({},t),{theme:"danger"}))}success(e,t){this.notify(e,m9(g9({},t),{theme:"success"}))}warning(e,t){this.notify(e,m9(g9({},t),{theme:"warning"}))}info(e,t){this.notify(e,m9(g9({},t),{theme:"info"}))}}const m2=new E6;var O6=Object.defineProperty,R1=Object.getOwnPropertySymbols,T6=Object.prototype.hasOwnProperty,R6=Object.prototype.propertyIsEnumerable,M1=(u,e,t)=>e in u?O6(u,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):u[e]=t,M6=(u,e)=>{for(var t in e||(e={}))T6.call(e,t)&&M1(u,t,e[t]);if(R1)for(var t of R1(e))R6.call(e,t)&&M1(u,t,e[t]);return u};const L1=u=>{const{display:e,copy:t,children:f,onCopy:x}=u,P=(0,D.createRef)(),F=(0,D.useCallback)(()=>{if(x&&x(),!window.navigator.clipboard){P.current.select(),document.execCommand("copy"),m2.notify("copied",{theme:"success"});return}window.navigator.clipboard.writeText(t),m2.notify("copied",{theme:"success"})},[x,P]);return R().createElement(D.Fragment,null,R().createElement(u.element,M6({onClick:F,onKeyUp:F},u),f||e),window.navigator.clipboard?null:R().createElement("textarea",{ref:P,className:"tyk-copy-to-clipboard",name:"copy",value:t},t))};L1.propTypes={onCopy:n().func,copy:n().string.isRequired,display:n().string,children:n().oneOfType([n().element,n().string,n().object,n().node])};const L6=L1;var v2=O0(137),r9=O0.n(v2);function P1({children:u}){return R().createElement("div",{className:"tyk-modal__footer"},u)}P1.propTypes={children:n().oneOfType([n().element,n().node,n().string])};const P6=P1;function I1({children:u}){return R().createElement("div",{className:"tyk-modal__body"},u)}I1.propTypes={children:n().oneOfType([n().element,n().node,n().string])};const I6=I1;var B6=Object.defineProperty,v9=Object.getOwnPropertySymbols,B1=Object.prototype.hasOwnProperty,F1=Object.prototype.propertyIsEnumerable,N1=(u,e,t)=>e in u?B6(u,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):u[e]=t,F6=(u,e)=>{for(var t in e||(e={}))B1.call(e,t)&&N1(u,t,e[t]);if(v9)for(var t of v9(e))F1.call(e,t)&&N1(u,t,e[t]);return u},N6=(u,e)=>{var t={};for(var f in u)B1.call(u,f)&&e.indexOf(f)<0&&(t[f]=u[f]);if(u!=null&&v9)for(var f of v9(u))e.indexOf(f)<0&&F1.call(u,f)&&(t[f]=u[f]);return t};function V5(u){var e=u,{children:t,theme:f="none",disableCloseCommands:x=!1,opened:P=!1,onClose:F=()=>{},size:H="md",className:V="",showBackdrop:K=!0}=e,X=N6(e,["children","theme","disableCloseCommands","opened","onClose","size","className","showBackdrop"]);const e0=["tyk-modal",`tyk-modal--theme-${f}`,P&&"opened"].concat(V.split(" ")).filter(Boolean).join(" "),Z=["tyk-modal__backdrop",P&&"opened"].filter(Boolean).join(" "),Q={success:"check",warning:"warning",danger:"delete"}[f];return R().createElement(R().Fragment,null,r9().createPortal(R().createElement(S.CSSTransition,{in:P,timeout:100,classNames:"appear"},R().createElement("div",F6({className:e0},X),R().createElement("div",{className:`tyk-modal__dialog tyk-modal--${H}`},R().createElement("div",{className:"tyk-modal__content"},f!=="none"&&R().createElement("div",{className:"tyk-modal__theme-header"},R().createElement(a,{family:"tykon",type:Q})),t)))),document.querySelector("body")),K&&r9().createPortal(R().createElement(S.CSSTransition,{in:P,timeout:100,classNames:"fade"},R().createElement("button",{className:Z,onClick:()=>!x&&F(),onKeyDown:()=>{},type:"button","aria-label":"Close"})),document.querySelector("body")))}V5.Body=I6,V5.Footer=P6,V5.Header=({children:u})=>(console.warn("%cModal.Header%c is deprecated.","font-weight: bold",""),R().createElement("div",{className:"tyk-modal__header"},u)),V5.Title=({children:u})=>(console.warn("%cModal.Title%c is deprecated.","font-weight: bold",""),R().createElement("h4",{className:"tyk-modal__title"},u)),V5.propTypes={children:n().oneOfType([n().element,n().node,n().string]),className:n().string,theme:n().string,disableCloseCommands:n().bool,opened:n().bool,onClose:n().func,size:n().string,showBackdrop:n().bool};const y9=V5;function D1(u){const{children:e,title:t,description:f,confirmBtnText:x="Confirm",cancelBtnText:P="Cancel"}=u,[F,H]=(0,D.useState)(!1),[V,K]=(0,D.useState)(null),[X,e0]=(0,D.useState)(null),Z=(c0,r0,o0)=>(...g0)=>{o0&&o0(...g0),H(!0),K(()=>()=>c0(...g0)),r0&&e0(()=>()=>r0(...g0))},Q=()=>{H(!1),K(null),e0(null)},i0=()=>{X&&X(),Q()},J=()=>{V(),Q()};return R().createElement(R().Fragment,null,e(Z),R().createElement(y9,{opened:F,onClose:i0},R().createElement(y9.Body,null,R().createElement("h4",null,t),f),R().createElement(y9.Footer,null,R().createElement(j0,{onClick:i0,theme:"default"},P),R().createElement(j0,{onClick:J,theme:"success"},x))))}D1.propTypes={confirmBtnText:n().string,cancelBtnText:n().string,title:n().string,description:n().string,children:n().oneOfType([n().element,n().string,n().object,n().node,n().func])};const D6=D1;function y2({children:u,className:e,showShadow:t}){const f=(0,D.useRef)(null),x=(0,D.useCallback)(()=>{const F=f.current;F&&(window.scrollY?F.classList.add("tyk-fixed-wrapper--scrolled"):F.classList.remove("tyk-fixed-wrapper--scrolled"))},[f.current]),P=(0,D.useCallback)(a0(x,100),[x]);return(0,D.useEffect)(()=>(t&&window.addEventListener("scroll",P),()=>{window.removeEventListener("scroll",P)}),[P,t]),R().createElement("div",{className:`tyk-fixed-wrapper ${e}`,ref:f},u)}y2.propTypes={children:n().oneOfType([n().element,n().node,n().string]),className:n().string,showShadow:n().bool},y2.defaultProps={className:""};const W6=y2;function b2({children:u,hasMore:e,initialLoad:t,loadMore:f,pageNumber:x,refChild:P}){const[F,H]=(0,D.useState)(!1),V=(0,D.useRef)(null),K=I(P);(0,D.useEffect)(()=>{t&&typeof f=="function"&&(H(!1),f(x))},[t]);const X=(0,D.useCallback)(()=>{if(!V.current)return!1;const{clientHeight:J,scrollTop:c0}=V.current;return e&&(J+Math.round(c0)===K.height||J>=K.height)},[V,K.height]),e0=(0,D.useCallback)(()=>{e&&typeof f=="function"?(f(x+1),H(!0)):H(!1)},[e,x]),Z=w(x),Q=(0,D.useCallback)(a0(()=>{X()&&Z<=x&&e0()},200),[e0,X]);(0,D.useEffect)(()=>{var J;return(J=V.current)==null||J.addEventListener("scroll",Q),()=>{var c0;return(c0=V.current)==null?void 0:c0.removeEventListener("scroll",Q)}},[V,Q]),(0,D.useEffect)(()=>{Z>0&&x===0&&(V.current.scrollTop=0)},[V,x]);const i0=w(K);return(0,D.useEffect)(()=>{K&&i0&&K.height!==i0.height&&F===!0&&H(!1)},[F,K.height]),(0,D.useEffect)(()=>{P&&K.heighte in u?H6(u,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):u[e]=t,V6=(u,e)=>{for(var t in e||(e={}))z6.call(e,t)&&H1(u,t,e[t]);if(W1)for(var t of W1(e))j6.call(e,t)&&H1(u,t,e[t]);return u};function z1({element:u,size:e="auto",forceDisplay:t="auto",displayAxis:f="auto",preferredPosition:x,offset:P=0,className:F,children:H,infiniteScrollerConfig:V},K){const X=(0,D.useRef)(null),e0=K||X,Z=(0,D.useRef)(null);function Q(){const J=u.current,c0=e0.current;if(!c0)return(x!=null?x:f==="vertical")?"bottom":"right";const{left:r0,top:o0}=J.getBoundingClientRect(),g0=o0,y0=window.innerHeight-o0-J.offsetHeight,L0=r0,E0=window.innerWidth-r0-J.offsetWidth,S0=g0>c0.scrollHeight,B0=y0>c0.scrollHeight,I0=L0>c0.offsetWidth,v0=E0>c0.offsetWidth,l0=r0+J.offsetWidth/2-c0.offsetWidth/2>0,s0=o0+J.offsetHeight/2-c0.scrollHeight/2>0;return f==="vertical"||f==="auto"&&(S0||B0)&&l0?x==="top"&&S0?"top":x==="bottom"&&B0||B0||y0>g0?"bottom":"top":f==="horizontal"?x==="left"&&I0?"left":x==="right"&&I0||v0||E0>L0?"right":"left":S0&&l0?"top":B0&&l0?"bottom":v0&&s0?"right":I0&&s0?"left":x!=null?x:"bottom"}function i0(){const J=t!=="auto"?t:Q(),c0=u.current,r0=e0.current;if(!c0||!r0)return;const o0=c0.getBoundingClientRect();if(J==="top"){const g0=o0.top-r0.offsetHeight-P;r0.style.top=`${g0}px`,r0.style.left=e==="auto"?`${o0.left+c0.offsetWidth/2-r0.offsetWidth/2}px`:`${o0.left}px`,e==="matchElement"?r0.style.width=`${c0.offsetWidth}px`:typeof e=="function"&&(r0.style.width=`${e(c0.offsetWidth)}px`),r0.style.maxHeight=`${o0.top-P}px`}if(J==="bottom"&&(r0.style.top=`${o0.bottom+P}px`,r0.style.left=e==="auto"?`${o0.left+c0.offsetWidth/2-r0.offsetWidth/2}px`:`${o0.left}px`,e==="matchElement"?r0.style.width=`${c0.offsetWidth}px`:typeof e=="function"&&(r0.style.width=`${e(c0.offsetWidth)}px`),r0.style.maxHeight=`${window.innerHeight-o0.bottom-P}px`),J==="left"){const g0=o0.top+c0.offsetHeight/2-r0.offsetHeight/2;r0.style.top=e==="auto"?`${g0}px`:`${o0.top}px`,r0.style.left=`${o0.left-r0.offsetWidth-P}px`,e==="matchElement"?r0.style.height=`${c0.offsetHeight}px`:typeof e=="function"&&(r0.style.height=`${e(c0.offsetHeight)}px`),r0.style.maxWidth=`${o0.left-P}px`}if(J==="right"){const g0=o0.top+c0.offsetHeight/2-r0.offsetHeight/2;r0.style.top=e==="auto"?`${g0}px`:`${o0.top}px`,r0.style.left=`${o0.left+c0.offsetWidth+P}px`,e==="matchElement"?r0.style.height=`${c0.offsetHeight}px`:typeof e=="function"&&(r0.style.height=`${e(c0.offsetHeight)}px`),r0.style.maxWidth=`${window.innerWidth-o0.left-c0.offsetWidth-P}px`}}return(0,D.useEffect)(()=>{window.requestAnimationFrame(function J(){i0(),window.requestAnimationFrame(J)})},[]),(0,v2.createPortal)(R().createElement("div",{className:`floating-container ${F||""}`,ref:e0},R().createElement(b9,V6({refChild:Z},V),R().createElement("div",{className:"floating-container__content-wrapper",ref:Z},H))),document.querySelector("body"))}z1.propTypes={element:n().instanceOf(Object),className:n().string,size:n().oneOfType([n().oneOf(["auto","matchElement"]),n().func]),offset:n().number,forceDisplay:n().oneOf(["auto","top","bottom","left","right"]),displayAxis:n().oneOf(["auto","vertical","horizontal"]),preferredPosition:n().oneOf(["top","bottom","left","right"]),infiniteScrollerConfig:n().instanceOf(Object)};const w9=(0,D.forwardRef)(z1);function j1({children:u}){return R().createElement("div",{className:"tyk-info-note"},R().createElement(D0,{theme:"info"},u))}j1.propTypes={children:n().oneOfType([n().element,n().node,n().string])};const U6=j1,w2=u=>{const{className:e,children:t}=u;return R().createElement("li",{className:e},t)};w2.propTypes={children:n().oneOfType([n().arrayOf(n().node),n().node,n().element,n().string]),className:n().string},w2.defaultProps={className:""};const G6=w2,C9=u=>{const{className:e,children:t,label:f,labelwidth:x,theme:P,style:F}=u,H=()=>{let K=["tyk-list"];return P&&K.push(`tyk-list--${P}`),e&&(K=K.concat(e.split(" "))),K.join(" ")},V=()=>{const K=(0,W0.fromJS)(F).toJS();return x&&(K.flexBasis=`calc(100% - ${x} - 20px)`),K};return R().createElement("div",{className:`tyk-list__wrapper ${x?"tyk-list--with-inline-label":""}`},f!==void 0?R().createElement("label",{style:{flexBasis:x||"auto"}},f):null,R().createElement("ul",{className:H(),style:V()},t))};C9.propTypes={children:n().oneOfType([n().arrayOf(n().node),n().node,n().element,n().string]),className:n().string,label:n().string,labelwidth:n().string,theme:n().string,style:n().instanceOf(Object)},C9.defaultProps={theme:"default",style:{}},C9.Item=G6;const C2=C9;function V1({align:u="center",children:e,left:t,right:f,title:x,pre:P,subtitle:F,withTabs:H}){const V=F?R().createElement("p",{className:"font-family-medium"},F):null;return R().createElement("section",{className:`tyk-nav-bar ${H?"tyk-nav-bar__with-tabs":""}`},R().createElement("div",{className:`tyk-nav-bar__wrapper tyk-nav-bar--align-${u}`},P&&R().createElement("div",{className:"tyk-nav-bar__pre"},P),x?R().createElement("div",null,R().createElement("h1",null,x),V):V,R().createElement("div",{className:"tyk-nav-bar__container"},t&&R().createElement("div",{className:"tyk-nav-bar__left"},t),f&&R().createElement("div",{className:"tyk-nav-bar__right"},f))),e)}V1.propTypes={align:n().string,children:n().oneOfType([n().arrayOf(n().node),n().node,n().element,n().string]),title:n().string,subtitle:n().string,pre:n().oneOfType([n().element,n().node]),left:n().oneOfType([n().element,n().node]),right:n().oneOfType([n().element,n().node]),withTabs:n().bool};const K6=V1;function U1({children:u}){return R().createElement("li",{className:"tyk-navigation-item"},u)}U1.propTypes={children:n().oneOfType([n().arrayOf(n().node),n().node,n().element,n().string])};const Y6=U1;function A2({children:u}){return R().createElement("ul",{className:"tyk-navigation"},u)}A2.propTypes={children:n().oneOfType([n().arrayOf(n().node),n().node,n().element,n().string])},A2.Item=Y6;const X6=A2,k2=(0,D.createContext)();var J6=Object.defineProperty,Q6=Object.defineProperties,q6=Object.getOwnPropertyDescriptors,A9=Object.getOwnPropertySymbols,G1=Object.prototype.hasOwnProperty,K1=Object.prototype.propertyIsEnumerable,Y1=(u,e,t)=>e in u?J6(u,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):u[e]=t,X1=(u,e)=>{for(var t in e||(e={}))G1.call(e,t)&&Y1(u,t,e[t]);if(A9)for(var t of A9(e))K1.call(e,t)&&Y1(u,t,e[t]);return u},J1=(u,e)=>Q6(u,q6(e)),Z6=(u,e)=>{var t={};for(var f in u)G1.call(u,f)&&e.indexOf(f)<0&&(t[f]=u[f]);if(u!=null&&A9)for(var f of A9(u))e.indexOf(f)<0&&K1.call(u,f)&&(t[f]=u[f]);return t};function Q1(u){var e=u,{children:t,noPadding:f,className:x}=e,P=Z6(e,["children","noPadding","className"]);const F=(0,D.useCallback)(()=>["tyk-panel__body",x,f&&"no-padding"].filter(Boolean).join(" "),[x,f]);return R().createElement(k2.Consumer,null,H=>H.collapsable?R().createElement(m0,J1(X1({},P),{collapsed:H.collapsed,className:F()}),t):R().createElement("div",J1(X1({},P),{className:F()}),t))}Q1.propTypes={children:n().oneOfType([n().element,n().node,n().string]),noPadding:n().bool,className:n().string};const e8=Q1,q1=u=>{const{children:e}=u;return R().createElement("div",{className:"tyk-panel__footer"},e)};q1.propTypes={children:n().oneOfType([n().element,n().node,n().string])};const t8=q1;var n8=Object.defineProperty,r8=(u,e,t)=>e in u?n8(u,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):u[e]=t,i8=(u,e,t)=>(r8(u,typeof e!="symbol"?e+"":e,t),t);class Z1 extends D.Component{getCssClasses(e){const{className:t}=this.props;let f=["tyk-panel__header"];return e.collapsable&&f.push("collapsable"),t&&(f=f.concat(t.split(" "))),f.join(" ")}render(){const{children:e}=this.props;return R().createElement(k2.Consumer,null,t=>{const f=t.theme==="blank"?"h3":"div",x=t.collapsed?"chevron-down":"chevron-up";return R().createElement(f,{className:this.getCssClasses(t),onClick:t.collapsable?t.onToggle:void 0},e,t.collapsable?R().createElement("div",{className:`collapsable__arrow-${t.collapsibleIconPosition}`},R().createElement(a,{type:x})):null)})}}i8(Z1,"propTypes",{children:n().oneOfType([n().element,n().node,n().string]).isRequired,className:n().string});const i9=u=>{const{children:e,className:t,collapsed:f,collapsable:x,theme:P,onToggleCollapse:F,collapsibleIconPosition:H="right"}=u,[V,K]=(0,D.useState)(f||!1);(0,D.useEffect)(()=>{f!==V&&K(f)},[f]);const X=()=>{let Z=["tyk-panel"];const Q=`tyk-panel--${P||"default"}`,i0=`tyk-panel__icon-collapse--${H}`;return Z.push(Q),Z.push(i0),t&&(Z=Z.concat(t.split(" "))),V&&Z.push("tyk-panel--collapsed"),Z.join(" ")},e0=()=>{K(!V),F&&F(!V)};return R().createElement("div",{className:X()},R().createElement(k2.Provider,{value:{collapsable:x,collapsed:V,onToggle:e0,theme:P,collapsibleIconPosition:H}},typeof e=="function"?e({toggleCollapse:e0}):e))};i9.propTypes={children:n().oneOfType([n().func,n().element,n().node,n().string]),className:n().string,collapsable:n().bool,collapsibleIconPosition:n().string,collapsed:n().bool,theme:n().string,onToggleCollapse:n().func},i9.Body=e8,i9.Footer=t8,i9.Header=Z1;const o8=i9,x2=u=>{const{children:e,className:t,theme:f}=u,x=()=>{let P=["tyk-pill",...f.split(" ").map(F=>`tyk-pill--${F}`)];return t&&(P=P.concat(t)),P.join(" ")};return R().createElement("div",{className:x()},e)};x2.propTypes={children:n().oneOfType([n().arrayOf(n().node),n().node,n().element,n().string]),className:n().string,theme:n().string},x2.defaultProps={theme:"default"};const e7=x2;var t7=(u,e,t)=>{if(!e.has(u))throw TypeError("Cannot "+t)},q0=(u,e,t)=>(t7(u,e,"read from private field"),t?t.call(u):e.get(u)),$5=(u,e,t)=>{if(e.has(u))throw TypeError("Cannot add the same private member more than once");e instanceof WeakSet?e.add(u):e.set(u,t)},C5=(u,e,t,f)=>(t7(u,e,"write to private field"),f?f.call(u,t):e.set(u,t),t),E5,O5,I5,T5,U5,G5,K5,Y5;class s8{constructor(){$5(this,E5,null),$5(this,O5,null),$5(this,I5,null),$5(this,T5,null),$5(this,U5,[]),$5(this,G5,[]),$5(this,K5,[]),$5(this,Y5,!1)}on(e,t){let f=null;e==="onHeightChange"?f=q0(this,U5):e==="onDragStart"?f=q0(this,G5):e==="onDragEnd"&&(f=q0(this,K5)),f&&this.addListener(f,t)}off(e,t){let f=null;e==="onHeightChange"?f=q0(this,U5):e==="onDragStart"?f=q0(this,G5):e==="onDragEnd"&&(f=q0(this,K5)),f&&this.removeListener(f,t)}setRefs(e,t,f){(q0(this,O5)||q0(this,I5)||q0(this,T5))&&this.unbindEvents(),C5(this,T5,e),C5(this,O5,t),C5(this,I5,f),C5(this,E5,null),this.bindEvents()}bindEvents(){this.ensureRefs("bindEvents"),q0(this,I5).addEventListener("mousedown",this.onMouseDown.bind(this)),document.addEventListener("mousemove",this.onMouseMove.bind(this)),document.addEventListener("mouseup",this.onMouseUp.bind(this))}getHeight(){return this.ensureRefs("getHeight"),q0(this,O5).getBoundingClientRect().height}onMouseDown(e){this.ensureRefs("onMouseDown"),C5(this,E5,{mouseDown:!0,initialRect:q0(this,O5).getBoundingClientRect(),initialEvent:e})}onMouseMove(e){if(this.ensureRefs("onMouseMove"),!q0(this,E5))return;if(!this.isPrimaryMouseButtonDown(e)){this.onMouseUp();return}q0(this,Y5)||(C5(this,Y5,!0),this.onDragStart.bind(this)());const f=q0(this,E5).initialEvent.y-e.y,x=Math.ceil(q0(this,E5).initialRect.height+f);this.setHeight(`${x}px`,"mousemove")}notifyListeners(e,t){e&&Array.isArray(e)&&e.length&&e.forEach(f=>{typeof f=="function"&&f(t)})}addListener(e,t){e&&Array.isArray(e)&&typeof t=="function"&&e.push(t)}removeListener(e,t){if(e&&Array.isArray(e)&&typeof t=="function"&&e.length){const f=e.indexOf(t);f>-1&&e.splice(f,1)}}onDragEnd(){q0(this,Y5)&&this.notifyListeners(q0(this,K5),this.getHeight())}onDragStart(){this.notifyListeners(q0(this,G5),this.getHeight())}isPrimaryMouseButtonDown(e){return(e.buttons!==void 0?e.buttons:e.which)===1}onMouseUp(){C5(this,E5,null),this.onDragEnd.bind(this)(),C5(this,Y5,!1)}setHeight(e){let t=e;this.ensureRefs("setHeight"),typeof t=="number"&&(t+="px"),q0(this,O5).style.height=t,this.notifyListeners(q0(this,U5),this.getHeight())}ensureRefs(e){if(!q0(this,O5)||!q0(this,I5)||!q0(this,T5))throw new Error(`${e}: Wrapper, panel, and gutter elements are required. Use setRefs method first.`)}isHidden(){return this.ensureRefs("isHidden"),q0(this,T5).style.visibility==="hidden"}hide(){this.ensureRefs("hide"),q0(this,T5).style.visibility="hidden"}show(){this.ensureRefs("show"),q0(this,T5).style.visibility="visible"}unbindEvents(){C5(this,U5,[]),C5(this,G5,[]),C5(this,K5,[]),q0(this,I5).removeEventListener("mousedown",this.onMouseDown.bind(this)),document.removeEventListener("mousemove",this.onMouseMove.bind(this)),document.removeEventListener("mouseup",this.onMouseUp.bind(this))}deinit(){this.unbindEvents()}}E5=new WeakMap,O5=new WeakMap,I5=new WeakMap,T5=new WeakMap,U5=new WeakMap,G5=new WeakMap,K5=new WeakMap,Y5=new WeakMap;const a8=()=>(0,D.useRef)(new s8).current;function S2({children:u}){return R().createElement(R().Fragment,null,u)}S2.propTypes={children:n().instanceOf({})};function _2({children:u}){return R().createElement(R().Fragment,null,u)}_2.propTypes={children:n().instanceOf({})};const $2=(...u)=>u.map(e=>(e||"").trim()).filter(Boolean).join(" "),k9=(0,D.forwardRef)(({children:u,height:e,onHeightChange:t=null,onDragStart:f=null,onDragEnd:x=null,style:P=null,parentSelector:F=null,contentStyle:H,contentClassName:V,gutterClassName:K,wrapperClassName:X},e0)=>{const Z=(0,D.useRef)(null),Q=(0,D.useRef)(null),i0=(0,D.useRef)(null),J=a8();(0,D.useEffect)(()=>{if(!(!Z.current||!Q.current||!i0.current)&&J)return J.setRefs(i0.current,Z.current,Q.current),J.on("onHeightChange",t),J.on("onDragStart",f),J.on("onDragEnd",x),J.setHeight(e,"initialize"),()=>{J.unbindEvents()}},[]),(0,D.useImperativeHandle)(e0,()=>{const y0=L0=>L0.bind(J);return{getHeight:y0(J.getHeight),setHeight:y0(J.setHeight),hide:y0(J.hide),show:y0(J.show),isHidden:y0(J.isHidden),deinit:y0(J.deinit),on:y0(J.on),off:y0(J.off)}},[]);let c0=null,r0=null;const o0=[];R().Children.forEach(u,y0=>{y0&&R().isValidElement(y0)&&(y0.type===S2?c0=y0:y0.type===_2?r0=y0:o0.push(y0))});const g0=R().createElement("div",{className:$2("tyk-ui-reveal-wrapper",X||"cem"),ref:i0,style:P},R().createElement("div",{className:"tyk-ui-reveal-wrapper__hole"}),R().createElement("div",{ref:Q,className:$2("tyk-ui-reveal-wrapper__gutter",K)},R().createElement("div",{className:"tyk-ui-reveal-wrapper__gutter__headerleft"},c0),R().createElement("div",{className:"tyk-ui-reveal-wrapper__gutter__logo"}," "),R().createElement("div",{className:"tyk-ui-reveal-wrapper__gutter__headerright"},r0)),R().createElement("div",{ref:Z,className:$2("tyk-ui-reveal-wrapper__panel",V),style:H},o0));if(F)return(0,v2.createPortal)(g0,document.querySelector(F))});k9.propTypes={children:n().instanceOf({}),height:n().string,onHeightChange:n().func,onDragStart:n().func,onDragEnd:n().func,parentSelector:n().string,style:n().instanceOf({}),contentStyle:n().instanceOf({}),contentClassName:n().string,gutterClassName:n().string,wrapperClassName:n().string},k9.HeaderLeft=S2,k9.HeaderRight=_2;const l8=k9,n7=(0,D.createContext)(),r7=(0,D.createContext)();var c8=Object.defineProperty,i7=Object.getOwnPropertySymbols,u8=Object.prototype.hasOwnProperty,h8=Object.prototype.propertyIsEnumerable,o7=(u,e,t)=>e in u?c8(u,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):u[e]=t,s7=(u,e)=>{for(var t in e||(e={}))u8.call(e,t)&&o7(u,t,e[t]);if(i7)for(var t of i7(e))h8.call(e,t)&&o7(u,t,e[t]);return u};const a7=u=>{const{addTab:e,hideTab:t,updateTab:f,showTab:x,children:P,selectedPath:F,tabData:H,tabsId:V,tabExists:K,path:X,rendered:e0,hideTabContent:Z,tabs:Q}=u;(0,D.useEffect)(()=>{const c0=s7({},H);K(X)||e(c0,X)},[H,X]);const i0=w(H);return(0,D.useEffect)(()=>{if(K(X)&&(H!=null&&H.title)&&((i0==null?void 0:i0.title)!==(H==null?void 0:H.title)||i0.selected!==H.selected)){const c0=s7({},H);f(c0,X)}},[H,X,i0,Q]),(0,D.useEffect)(()=>(x(X),()=>t(X)),[]),(0,D.useMemo)(()=>!Object.keys(Q).length||Z||Q[H.id].show===!1?!1:e0?F&&F.indexOf(H.id)>-1:K(X),[Z,e0,F,H,Q])?R().createElement("div",{key:H.id,className:"tyk-tab__content",style:{display:F&&F.indexOf(H.id)>-1?"block":"none"}},R().createElement(r7.Provider,{value:{path:X,tabsId:V}},P)):null};a7.propTypes={addTab:n().func,updateTab:n().func,hideTab:n().func,showTab:n().func,children:n().oneOfType([n().arrayOf(n().node),n().node,n().element,n().string]),path:n().instanceOf(Array),hideTabContent:n().bool,rendered:n().bool,selectedPath:n().instanceOf(Array),tabExists:n().func,tabsId:n().string,tabData:n().instanceOf(Object),tabs:n().instanceOf(Object)};const d8=a7,E2=u=>{const{id:e}=u,t=(0,D.useContext)(n7),f=(0,D.useContext)(r7),{tabExists:x,selectedPath:P,addTab:F,updateTab:H,hideTab:V,showTab:K,rendered:X,hideTabContent:e0,tabs:Z}=t,{children:Q}=u,[i0,J]=(0,D.useState)("");return(0,D.useEffect)(()=>{let c0;f&&i0?f.tabsId===t.id?c0=f.path.concat([e]):c0=[e]:c0=[e],J(c0)},[f]),i0?R().createElement(D.Fragment,null,R().createElement(d8,{addTab:F,updateTab:H,hideTab:V,showTab:K,tabExists:x,tabData:u,path:i0,tabsId:t.id,selectedPath:P,rendered:X,hideTabContent:e0,tabs:Z},Q)):null};E2.propTypes={children:n().oneOfType([n().arrayOf(n().node),n().node,n().element,n().string]),id:n().string},E2.defaultProps={};const f8=E2;var p8=Object.defineProperty,l7=Object.getOwnPropertySymbols,g8=Object.prototype.hasOwnProperty,m8=Object.prototype.propertyIsEnumerable,c7=(u,e,t)=>e in u?p8(u,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):u[e]=t,o9=(u,e)=>{for(var t in e||(e={}))g8.call(e,t)&&c7(u,t,e[t]);if(l7)for(var t of l7(e))m8.call(e,t)&&c7(u,t,e[t]);return u};const O2=u=>{const{children:e,className:t,id:f,onTabChange:x,type:P,hideTabContent:F}=u,[H,V]=(0,D.useState)({}),[K,X]=(0,D.useState)([]),[e0,Z]=(0,D.useState)(!1),[Q,i0]=(0,D.useState)(null);(0,D.useEffect)(()=>{X(Q)},[Q]);const J=(v0,l0,s0)=>{let C0=Object.assign({},v0);const T0=Object.assign({},s0),$0=l0.slice(0);for(;$0.length>1;)C0=C0[$0.shift()],C0||(C0={});return T0.tempPath=$0,C0[$0.shift()]=T0,C0},c0=(v0,l0)=>{let s0=Object.assign({},v0);const C0=l0.slice(0);for(;C0.length>1;)s0=s0[C0.shift()];const T0=C0.shift();return s0[T0].collapsed===void 0?s0[T0].collapsed=!0:s0[T0].collapsed=!s0[T0].collapsed,s0},r0=()=>{let v0=["tyk-tabs"];return v0.push(`tyk-tabs--${P||"default"}`),t&&(v0=v0.concat(t.split(" "))),v0.join(" ")},o0=(v0,l0)=>{const s0=v0.slice(0);let C0=!0;l0.collapsible&&(s0.push(Object.keys(l0.tabs)[0]),C0=!1),V(T0=>{let $0=Object.assign({},T0);return $0=c0($0,v0),$0}),X(s0),Z(C0),x&&x(l0)},g0=v0=>{const l0=[];return K&&K.indexOf(v0)>-1&&l0.push("active"),l0.join(" ")},y0=(v0,l0)=>v0?R().createElement("ul",null,Object.keys(v0).map((s0,C0)=>{const T0=l0?l0.concat([v0[s0].id]):[v0[s0].id],$0=v0[s0].collapsed?"chevron-up":"chevron-down";return v0[s0].show===!1?null:R().createElement("li",{className:g0(v0[s0].id),key:v0[s0].id},R().createElement("button",{type:"button",onClick:o0.bind(null,T0,v0[s0]),onKeyDown:o0.bind(null,T0,v0[s0]),tabIndex:C0},v0[s0].title,v0[s0].collapsible?R().createElement(a,{className:"collapsable-arrow",type:$0}):null),v0[s0].collapsible?R().createElement(m0,{collapsed:v0[s0].collapsed},y0(v0[s0].tabs,T0)):y0(v0[s0].tabs,T0))})):null,L0=(v0,l0)=>{V(s0=>J(o9({},s0),l0,v0)),v0.selected&&i0(l0)},E0=(v0,l0)=>{V(s0=>{const C0=o9({},s0);return C0[v0.id]=v0,C0}),v0.selected&&o0(l0,v0)},S0=v0=>{V(l0=>{const s0=o9({},l0);return s0[v0].show=!1,s0})},B0=v0=>{V(l0=>{const s0=o9({},l0);return s0[v0].show=!0,s0})},I0=v0=>{let l0=o9({},H);const s0=v0.slice(0);for(;s0.length>1;)l0=l0[s0.shift()];const C0=s0.shift();return!!(l0&&l0[C0])};return R().createElement("div",{className:r0()},y0(H),R().createElement(n7.Provider,{value:{id:f,addTab:L0,hideTab:S0,updateTab:E0,showTab:B0,tabExists:I0,selectedPath:K,rendered:e0,hideTabContent:F,tabs:H}},typeof e=="function"?e({hideTab:S0,showTab:B0}):e))};O2.propTypes={className:n().string,children:n().oneOfType([n().arrayOf(n().node),n().node,n().element,n().string]),hideTabContent:n().bool,id:n().string,onTabChange:n().func,type:n().string},O2.Tab=f8;const v8=O2;var y8=Object.defineProperty,x9=Object.getOwnPropertySymbols,u7=Object.prototype.hasOwnProperty,h7=Object.prototype.propertyIsEnumerable,d7=(u,e,t)=>e in u?y8(u,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):u[e]=t,T2=(u,e)=>{for(var t in e||(e={}))u7.call(e,t)&&d7(u,t,e[t]);if(x9)for(var t of x9(e))h7.call(e,t)&&d7(u,t,e[t]);return u},b8=(u,e)=>{var t={};for(var f in u)u7.call(u,f)&&e.indexOf(f)<0&&(t[f]=u[f]);if(u!=null&&x9)for(var f of x9(u))e.indexOf(f)<0&&h7.call(u,f)&&(t[f]=u[f]);return t};function f7(u){var e=u,{render:t,className:f,children:x,position:P="auto",style:F,icon:H=!1,closable:V,isOpened:K=!1,additionalClickParents:X=[]}=e,e0=b8(e,["render","className","children","position","style","icon","closable","isOpened","additionalClickParents"]);const[Z,Q]=(0,D.useState)(!1),i0=(0,D.useRef)(null),J=(0,D.useRef)(null),c0=V?{onClick:()=>Q(!0)}:{onMouseEnter:()=>Q(!0),onMouseLeave:()=>Q(!1),onFocus:()=>Q(!0),onBlur:()=>Q(!1)},r0=(0,D.useCallback)(g0=>{[...X,J.current].some(y0=>{var L0;return(L0=y0==null?void 0:y0.contains)==null?void 0:L0.call(y0,g0.target)})||Q(!1)},[X]);(0,D.useEffect)(()=>(document.addEventListener("click",r0,!0),()=>document.removeEventListener("click",r0,!0)),[r0]),(0,D.useEffect)(()=>{Q(K)},[K]);const o0=["tyk-tooltip",f].filter(Boolean).join(" ");return R().createElement("div",T2(T2({className:"tyk-tooltip__wrapper",style:T2({display:"inline-block"},F),ref:i0},c0),e0),x,Z&&R().createElement(w9,{element:i0,forceDisplay:P,preferredPosition:"top",offset:20},R().createElement("div",{className:o0,ref:J},H&&(H===!0?R().createElement(a,{family:"tykon",type:"help"}):H),R().createElement("div",{className:"tyk-tooltip__content"},t),V&&R().createElement(a,{family:"tykon",type:"x",onClick:g0=>{g0.stopPropagation(),Q(!1)}}))))}f7.propTypes={children:n().node.isRequired,style:n().instanceOf(Object),position:n().string,render:n().oneOfType([n().node,n().string]),className:n().string,icon:n().oneOfType([n().bool,n().node]),closable:n().bool,isOpened:n().bool,additionalClickParents:n().instanceOf(Array)};const R2=f7;function p7({text:u,limit:e,position:t}){return u.length>e?R().createElement(R2,{render:u,position:t},u.substring(0,e),"..."):u}p7.propTypes={text:n().string,limit:n().number,position:n().string};const w8=p7;var C8=Object.defineProperty,A8=(u,e,t)=>e in u?C8(u,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):u[e]=t,k8=(u,e,t)=>(A8(u,typeof e!="symbol"?e+"":e,t),t);const x8=(u,e,t)=>t<10||e<5&&u<5||e>t-5&&u>t-5||u>=e-2&&u<=e+2||[0,1,t-1,t].indexOf(u)>-1,M2=(u,e)=>{let t;const f=[];for(t=0;t<=u;t+=1)x8(t,e,u)&&(t>f[f.length-1]&&f.push("..."),f.push(t+1));return f};class S9 extends D.Component{constructor(e){super(e);const{value:t,totalNrOfPages:f}=this.props;this.state={prevProps:this.props,selectedPage:t||0,pagesArray:M2(f,t)},this.pageKey=0}static getDerivedStateFromProps(e,t){return e.value!==t.prevProps.value||e.totalNrOfPages!==t.prevProps.totalNrOfPages?{selectedPage:e.value,pagesArray:M2(e.totalNrOfPages,e.value)}:null}getPageCssClass(e){const{selectedPage:t}=this.state,f=[];return t===e&&f.push("active"),f.join(" ")}getPageKey(){return this.pageKey+=1,this.pageKey}goToPage(e){const{onChange:t,totalNrOfPages:f}=this.props;this.setState({selectedPage:e,pagesArray:M2(f,e)},()=>{t&&t(e)})}render(){const{totalNrOfPages:e}=this.props,{pagesArray:t,selectedPage:f}=this.state;return R().createElement(D.Fragment,null,e?R().createElement("ul",{className:"tyk-pagination"},f>0&&e>5?R().createElement("li",null,R().createElement("button",{onClick:this.goToPage.bind(this,f-1),type:"button"},"Previous")):null,t.map(x=>R().createElement("li",{key:this.getPageKey(),className:this.getPageCssClass(x-1)},x!=="..."?R().createElement("button",{onClick:this.goToPage.bind(this,x-1),type:"button"},x):R().createElement("span",null,x))),f5?R().createElement("li",null,R().createElement("button",{onClick:this.goToPage.bind(this,f+1),type:"button"},"Next")):null):null)}}k8(S9,"propTypes",{value:n().number,totalNrOfPages:n().number,onChange:n().func});const s9=(0,D.createContext)(),g7=({column:u})=>{const{sortable:e}=u,[t,f]=(0,D.useState)((e==null?void 0:e.default)||"ASC"),{state:x,sendMessage:P}=(0,D.useContext)(s9);return R().createElement("th",{key:u.id,onClick:e?()=>{P("sort",{column:u,sortOrder:t}),f(t==="ASC"?"DESC":"ASC")}:null,className:x.maxHeight?"fixed-header":""},u.name,u.sortable&&R().createElement("span",{className:"header-sort"},R().createElement(a,{family:"tykon",type:"arrowsort"})))};g7.propTypes={column:n().instanceOf(Object)};var S8=Object.defineProperty,_8=Object.defineProperties,$8=Object.getOwnPropertyDescriptors,m7=Object.getOwnPropertySymbols,E8=Object.prototype.hasOwnProperty,O8=Object.prototype.propertyIsEnumerable,v7=(u,e,t)=>e in u?S8(u,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):u[e]=t,T8=(u,e)=>{for(var t in e||(e={}))E8.call(e,t)&&v7(u,t,e[t]);if(m7)for(var t of m7(e))O8.call(e,t)&&v7(u,t,e[t]);return u},R8=(u,e)=>_8(u,$8(e));const M8=()=>{const[u,e]=(0,D.useState)(!1),{state:t,sendMessage:f}=(0,D.useContext)(s9),{columns:x,selectable:P}=t,F=()=>x.map(V=>R().createElement(g7,{key:V.id,column:V})),H=()=>{var V;if(!P)return;const K=P.type;return R().createElement("th",{className:t.maxHeight?"fixed-header":""},P!=null&&P.allowSelectAll?R().createElement("div",{className:P==null?void 0:P.style},R().createElement(K,R8(T8({},P.values),{onClick:()=>{e(!u),f("header.selectAll.click",u)},onChange:X=>{f("header.selectAll.change",X)}}),(V=P.values)==null?void 0:V.value)):P.name||"Select")};return R().createElement("thead",null,R().createElement("tr",null,P&&P.position==="LEFT"&&H(),F(),P&&P.position==="RIGHT"&&H()))};var L8=Object.defineProperty,P8=Object.defineProperties,I8=Object.getOwnPropertyDescriptors,_9=Object.getOwnPropertySymbols,y7=Object.prototype.hasOwnProperty,b7=Object.prototype.propertyIsEnumerable,L2=(u,e,t)=>e in u?L8(u,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):u[e]=t,w7=(u,e)=>{for(var t in e||(e={}))y7.call(e,t)&&L2(u,t,e[t]);if(_9)for(var t of _9(e))b7.call(e,t)&&L2(u,t,e[t]);return u},B8=(u,e)=>P8(u,I8(e)),F8=(u,e)=>{var t={};for(var f in u)y7.call(u,f)&&e.indexOf(f)<0&&(t[f]=u[f]);if(u!=null&&_9)for(var f of _9(u))e.indexOf(f)<0&&b7.call(u,f)&&(t[f]=u[f]);return t},N8=(u,e,t)=>(L2(u,typeof e!="symbol"?e+"":e,t),t);class $9 extends D.Component{getCssClasses(){const{inline:e,disabled:t,readOnly:f,theme:x="",wrapperClassName:P=""}=this.props,F=[P];return F.push("tyk-checkbox"),e&&F.push("tyk-checkbox--inline"),x.trim()&&F.push(...x.split(" ").map(H=>`tyk-checkbox--theme-${H}`)),(t||f)&&F.push("tyk-checkbox--is-disabled"),F.join(" ")}displayError(){const{error:e}=this.props;return e?R().createElement("p",{className:"tyk-form-control__error-message"},e):null}displayNote(){const{note:e}=this.props;return e?R().createElement("p",{className:"tyk-form-control__help-block"},e):null}render(){const e=this.props,{input:t,value:f,label:x}=e,P=F8(e,["input","value","label"]);return R().createElement("div",{className:this.getCssClasses()},R().createElement("div",{className:"tyk-form-control__wrapper"},R().createElement("label",null,R().createElement("input",B8(w7(w7({checked:t?t.value:f},t),P),{type:"checkbox"})),x),this.displayNote(),this.displayError()))}}N8($9,"propTypes",{disabled:n().bool,readOnly:n().bool,inline:n().bool,theme:n().string,error:n().oneOfType([n().string,n().bool]),note:n().string,input:n().instanceOf(Object),label:n().oneOfType([n().arrayOf(n().node),n().node,n().element,n().func,n().string]),name:n().string,value:n().oneOfType([n().string,n().bool]),checked:n().oneOfType([n().string,n().bool]),onChange:n().func,wrapperClassName:n().string});var D8=Object.defineProperty,C7=Object.getOwnPropertySymbols,W8=Object.prototype.hasOwnProperty,H8=Object.prototype.propertyIsEnumerable,A7=(u,e,t)=>e in u?D8(u,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):u[e]=t,P2=(u,e)=>{for(var t in e||(e={}))W8.call(e,t)&&A7(u,t,e[t]);if(C7)for(var t of C7(e))H8.call(e,t)&&A7(u,t,e[t]);return u};const k7=({col:u,row:e})=>{var t,f,x,P,F;if(!e.values[u.id])return R().createElement("td",null);if(u.type==="string")return R().createElement("td",P2({className:((t=e.values[u.id].styling)==null?void 0:t.className)||null},(f=e==null?void 0:e.values[u.id])==null?void 0:f.events),(x=e.values[u.id])==null?void 0:x.value);const H=u.type;return R().createElement("td",P2({className:((P=e.values[u.id].styling)==null?void 0:P.className)||null},(F=e==null?void 0:e.values[u.id])==null?void 0:F.events),R().createElement(H,P2({},e.values[u.id].props),e.values[u.id].children?e.values[u.id].children:null))};k7.propTypes={col:n().instanceOf(Object),row:n().instanceOf(Object),index:n().number};const x7=({row:u,index:e})=>{var t,f;const{state:x,sendMessage:P}=(0,D.useContext)(s9),{columns:F,selectable:H}=x,V=()=>R().createElement("td",null,R().createElement($9,{defaultChecked:u.selected,onChange:K=>P("row.selected",{index:e,selected:K})}));return R().createElement("tr",{onClick:(t=u.events)==null?void 0:t.onClick,className:(f=u.styling)==null?void 0:f.className},H&&H.position==="LEFT"&&V(),F.map(K=>R().createElement(k7,{key:K.id,col:K,row:u,index:e})),H&&H.position==="RIGHT"&&V())};x7.propTypes={row:n().instanceOf(Object),index:n().number};const z8=()=>{const{state:u}=(0,D.useContext)(s9),{rows:e}=u;return R().createElement("tbody",null,e.map((t,f)=>R().createElement(x7,{key:f,row:t,index:f})))};var j8=Object.defineProperty,V8=Object.defineProperties,U8=Object.getOwnPropertyDescriptors,S7=Object.getOwnPropertySymbols,G8=Object.prototype.hasOwnProperty,K8=Object.prototype.propertyIsEnumerable,_7=(u,e,t)=>e in u?j8(u,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):u[e]=t,B5=(u,e)=>{for(var t in e||(e={}))G8.call(e,t)&&_7(u,t,e[t]);if(S7)for(var t of S7(e))K8.call(e,t)&&_7(u,t,e[t]);return u},F5=(u,e)=>V8(u,U8(e));function I2({value:u,onChange:e,noDataMessage:t,loading:f,infiniteScrolling:x}){var P;const[F,H]=(0,D.useState)(null),[V,K]=(0,D.useState)("api"),X=(0,D.useRef)(null),e0=(o0,g0)=>{H(F5(B5({},F),{sort:{order:g0,col:o0}}))},Z=o0=>{H(F5(B5({},F),{rows:F.rows.map(g0=>F5(B5({},g0),{selected:o0}))}))},Q=o0=>{const{index:g0,selected:y0}=o0,L0=F.rows[g0];H(F5(B5({},F),{rows:[...F.rows.slice(0,g0),F5(B5({},L0),{selected:y0}),...F.rows.slice(g0+1)]}))},i0=o0=>{H(F5(B5({},F),{pagination:F5(B5({},F.pagination),{current:o0+1})}))},J={getState:()=>F,setState:o0=>H(o0)},c0=(o0,g0)=>{K(o0),o0==="sort"&&e0(g0.column.id,g0.sortOrder),o0==="header.selectAll.click"&&Z(g0),o0==="header.selectAll.change"&&Z(g0),o0==="row.selected"&&Q(g0),o0==="pagination.change"&&i0(g0)};if((0,D.useEffect)(()=>H(u),[u]),(0,D.useEffect)(()=>{e&&e(V,F,J),K("api")},[F]),!F)return R().createElement(_0,{position:"absolute"});if(F.rows<=0)return R().createElement(D0,{theme:"info"},t||"No Data Available");const r0=()=>R().createElement("table",{className:"tyk-table",ref:X},R().createElement(M8,null),R().createElement(z8,null));return R().createElement(s9.Provider,{value:{state:F,sendMessage:c0}},R().createElement("div",{className:`scrollable ${((P=F.styling)==null?void 0:P.className)||""}`,style:{height:F.maxHeight?F.maxHeight:"auto",position:"relative"}},f&&R().createElement(_0,{position:"absolute",withbackground:!0}),x&&F.pagination?R().createElement(b9,{refChild:X,hasMore:F.pagination.totalPages>F.pagination.current,loadMore:o0=>c0("pagination.change",o0),pageNumber:F.pagination.current-1,initialLoad:!1},r0()):r0()),F.pagination&&!x&&R().createElement("div",{className:"new-table-pagination"},R().createElement(S9,{value:F.pagination.current-1,nrItemsOnPage:F.pagination.perPage-1,totalNrOfPages:F.pagination.totalPages-1,onChange:o0=>c0("pagination.change",o0)})))}I2.propTypes={value:n().shape({columns:n().arrayOf(n().shape({id:n().string.isRequired,name:n().string,type:n().oneOfType([n().string,n().element,n().func]),sortable:n().oneOfType([n().bool,n().shape({default:n().string})])})),rows:n().arrayOf(n().shape({})),selectable:n().shape({}),pagination:n().shape({}),maxHeight:n().string,styling:n().shape({className:n().string})}).isRequired,onChange:n().func,noDataMessage:n().string,loading:n().bool,infiniteScrolling:n().bool},I2.defaultProps={loading:!1,infiniteScrolling:!1,noDataMessage:"No Data Available",onChange:null};const Y8=I2;var X8=Object.defineProperty,J8=Object.defineProperties,Q8=Object.getOwnPropertyDescriptors,E9=Object.getOwnPropertySymbols,$7=Object.prototype.hasOwnProperty,E7=Object.prototype.propertyIsEnumerable,B2=(u,e,t)=>e in u?X8(u,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):u[e]=t,q8=(u,e)=>{for(var t in e||(e={}))$7.call(e,t)&&B2(u,t,e[t]);if(E9)for(var t of E9(e))E7.call(e,t)&&B2(u,t,e[t]);return u},Z8=(u,e)=>J8(u,Q8(e)),ee=(u,e)=>{var t={};for(var f in u)$7.call(u,f)&&e.indexOf(f)<0&&(t[f]=u[f]);if(u!=null&&E9)for(var f of E9(u))e.indexOf(f)<0&&E7.call(u,f)&&(t[f]=u[f]);return t},te=(u,e,t)=>(B2(u,typeof e!="symbol"?e+"":e,t),t);class O7 extends D.PureComponent{getCssClasses(){const{align:e,className:t,offset:f,size:x}=this.props,P=x.split(" "),F=f?f.split(" "):[];let H=P.map(K=>`tyk-col--${K}`);const V=F.map(K=>`tyk-col--offset-${K}`);return e&&H.push(`tyk-col--align-${e}`),t&&(H=H.concat(t.split(" "))),H.push("tyk-col"),H=H.concat(V||[]),H.join(" ")}render(){const e=this.props,{children:t,id:f}=e,x=ee(e,["children","id"]);return R().createElement("div",Z8(q8({},x),{className:this.getCssClasses(),id:f}),t)}}te(O7,"propTypes",{align:n().string,className:n().string,id:n().string,size:n().string.isRequired,offset:n().string,children:n().oneOfType([n().element,n().string,n().object,n().node])});const O9=O7;var ne=Object.defineProperty,re=Object.defineProperties,ie=Object.getOwnPropertyDescriptors,T9=Object.getOwnPropertySymbols,T7=Object.prototype.hasOwnProperty,R7=Object.prototype.propertyIsEnumerable,F2=(u,e,t)=>e in u?ne(u,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):u[e]=t,oe=(u,e)=>{for(var t in e||(e={}))T7.call(e,t)&&F2(u,t,e[t]);if(T9)for(var t of T9(e))R7.call(e,t)&&F2(u,t,e[t]);return u},se=(u,e)=>re(u,ie(e)),ae=(u,e)=>{var t={};for(var f in u)T7.call(u,f)&&e.indexOf(f)<0&&(t[f]=u[f]);if(u!=null&&T9)for(var f of T9(u))e.indexOf(f)<0&&R7.call(u,f)&&(t[f]=u[f]);return t},le=(u,e,t)=>(F2(u,typeof e!="symbol"?e+"":e,t),t);class a9 extends D.PureComponent{getCssClasses(){const{className:e,nogutters:t}=this.props;let f=["tyk-row"];return t&&(f.push("no-gutters"),f.push("tyk-row--gutterless")),e&&(f=f.concat(e.split(" "))),f.join(" ")}render(){const e=this.props,{children:t,nogutters:f}=e,x=ae(e,["children","nogutters"]);return R().createElement("div",se(oe({},x),{className:this.getCssClasses()}),t)}}le(a9,"propTypes",{children:n().oneOfType([n().element,n().node]),className:n().string,nogutters:n().bool});const M7=(0,D.createContext)();function L7(u){const{customdropdownitem:e,children:t,eventKey:f,href:x,target:P,title:F,onClick:H}=u,V=(0,D.useCallback)((K,X)=>{K.onSelectItem(f,X),H&&H(f)},[]);return R().createElement(M7.Consumer,null,K=>R().createElement("li",{onClick:()=>V(K,u),onKeyUp:()=>{}},e?(0,D.cloneElement)(e,{}):R().createElement("a",{href:x,target:P},f&&K.selectedItem===f&&K.showCheckmark?R().createElement(a,{type:"check"}):null,R().createElement("span",null,F||t))))}L7.propTypes={children:n().oneOfType([n().element,n().node,n().string]),customdropdownitem:n().oneOfType([n().arrayOf(n().node),n().node,n().element]),eventKey:n().string,href:n().string,target:n().string,onClick:n().func,title:n().string};const ce=L7;var ue=Object.defineProperty,P7=Object.getOwnPropertySymbols,he=Object.prototype.hasOwnProperty,de=Object.prototype.propertyIsEnumerable,I7=(u,e,t)=>e in u?ue(u,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):u[e]=t,fe=(u,e)=>{for(var t in e||(e={}))he.call(e,t)&&I7(u,t,e[t]);if(P7)for(var t of P7(e))de.call(e,t)&&I7(u,t,e[t]);return u};class N5 extends D.Component{static isElemInRightView(e,t){const f=window.innerWidth;return e.getBoundingClientRect().left+t<=f}static isElemInBottomView(e,t){const f=window.innerHeight,x=e.getBoundingClientRect(),P=e.clientHeight;return x.top+P+t<=f}constructor(e){super(e);const{selectedItem:t,open:f}=this.props;this.state={opened:f,selectedItem:t||null},this.dropdownRef=(0,D.createRef)(),this.dropdownListRef=(0,D.createRef)(),this.dropdownButtonRef=(0,D.createRef)(),this.onSelectItem=this.onSelectItem.bind(this),this.toggleDropdown=this.toggleDropdown.bind(this),this.handleClickOutside=this.handleClickOutside.bind(this)}componentDidMount(){document.addEventListener("mousedown",this.handleClickOutside),this.dropdownListRef.current&&this.getStyles()}componentDidUpdate(e){const{open:t}=this.props,{opened:f}=this.state;this.dropdownListRef.current&&this.getStyles(),!e.open&&t===!0&&!f&&this.toggleDropdown(),e.open&&t===!1&&f&&this.closeDropdown()}componentWillUnmount(){document.removeEventListener("mousedown",this.handleClickOutside)}handleClickOutside(e){this.dropdownListRef.current&&!this.dropdownListRef.current.contains(e.target)&&this.dropdownRef.current&&!this.dropdownRef.current.contains(e.target)&&this.closeDropdown()}onSelectItem(e,t){const{closeOnSelect:f,onSelect:x}=this.props,P={selectedItem:e,selectedItemProps:t};f&&(P.opened=!1),this.setState(P),x&&typeof x=="function"&&x(e)}getStyles(){const{display:e,position:t,offset:f}=this.props,x=this.dropdownListRef.current;if(f){x.style.top=`${f.top}`,x.style.left=`${f.left}`;return}const P=Math.max(document.documentElement.scrollTop,document.body.scrollTop,window.scrollY),F=this.dropdownRef.current,H=F.clientHeight,V=x?x.clientHeight:0,K=x?x.clientWidth:0,X=F.getBoundingClientRect(),{left:e0,top:Z}=X;let Q=0,i0=e0;N5.isElemInBottomView(F,V)?Q=Z+P+H:Q=Z+P-V-5,N5.isElemInRightView(F,K)?i0=e0:i0=e0+F.clientWidth-K,t!=="relative"&&(x.style.top=`${Q}px`,e!=="block"&&(x.style.left=`${i0}px`)),e!=="block"&&(x.style.minWidth=`${this.dropdownButtonRef.current.clientWidth}px`)}getWrapperCssClasses(){const{btnGroup:e,btnGroupSize:t,className:f,btnTheme:x,wrapperClassName:P=""}=this.props;let F=[P,"tyk-dropdown"];return F.push(`theme-${x||"default"}`),f&&(F=F.concat(f.split(" "))),e&&(F.push("tyk-button-group"),F.push(t?`tyk-button-group--${t}`:"tyk-button-group--md")),F.join(" ")}getCssClasses(){const{opened:e}=this.state,{hasCustomContent:t,display:f,listclassnames:x,position:P,maxHeight:F}=this.props;let H=["tyk-dropdown-menu","tyk-dropdown"];return F&&H.push("tyk-dropdown--scrollable"),e&&H.push("opened"),x&&(H=H.concat(x.split(" "))),f&&H.push("tyk-dropdown--block"),t&&H.push("tyk-dropdown--custom"),P==="relative"&&H.push("tyk-dropdown--relative"),H.join(" ")}getBtnTitle(){const{btnTitle:e,stopButtonTextChange:t}=this.props,{selectedItemProps:f}=this.state;return!t&&f&&f.title?f.title:e}closeDropdown(){const{onClose:e}=this.props;this.setState({opened:!1},()=>{e&&e()})}toggleDropdown(){const{opened:e}=this.state;if(e){this.closeDropdown();return}this.setState({opened:!0})}render(){const{appendTo:e,btnClassName:t,btnSize:f,customBtnTitle:x,hasCustomContent:P,btnTheme:F,children:H,label:V,showDropdownIcon:K,showTriggerButton:X,showCheckmark:e0,disabled:Z=!1,maxHeight:Q}=this.props,{selectedItem:i0,opened:J}=this.state,c0=P?"div":"ul";return R().createElement("div",{className:this.getWrapperCssClasses(),ref:this.dropdownRef},V?R().createElement("label",{className:"font-family-medium"},V):null,X?R().createElement(j0,{className:`tyk-dropdown__trigger ${J?"tyk-dropdown__trigger--opened ":" "} ${t}`,theme:F||"default",onClick:this.toggleDropdown,iconType:K?"chevron-down":null,iconPosition:"right",size:f||"md",type:"button",disabled:Z,ref:this.dropdownButtonRef},x||this.getBtnTitle()):null,J?r9().createPortal(R().createElement(M7.Provider,{value:{onSelectItem:this.onSelectItem,selectedItem:i0,showCheckmark:e0}},J?R().createElement(c0,fe({className:this.getCssClasses(),ref:this.dropdownListRef},Q&&{style:{maxHeight:Q}}),typeof H=="function"?H({closeDropdown:this.closeDropdown.bind(this)}):H):null),document.querySelector(e||"body")):null)}}N5.propTypes={appendTo:n().string,children:n().oneOfType([n().element,n().node,n().string,n().func]),closeOnSelect:n().bool,btnClassName:n().string,btnSize:n().string,btnGroupSize:n().string,btnTheme:n().string,btnTitle:n().oneOfType([n().node,n().element,n().string]),customBtnTitle:n().oneOfType([n().node,n().element,n().string]),btnGroup:n().bool,className:n().string,display:n().string,disabled:n().bool,hasCustomContent:n().bool,label:n().oneOfType([n().arrayOf(n().node),n().node,n().element,n().func,n().string]),listclassnames:n().string,onClose:n().func,onSelect:n().func,open:n().bool,offset:n().instanceOf(Object),position:n().string,selectedItem:n().string,showDropdownIcon:n().bool,stopButtonTextChange:n().bool,showTriggerButton:n().bool,showCheckmark:n().bool,maxHeight:n().string,wrapperClassName:n().string},N5.defaultProps={closeOnSelect:!1,showDropdownIcon:!0,showTriggerButton:!0,showCheckmark:!0,open:!1},N5.Item=ce;const B7=N5;var pe=O0(239),ge=O0.n(pe);const me=require("react-ace");var ve=O0.n(me),vs=O0(395),ys=O0(576),bs=O0(7),ws=O0(549),Cs=O0(252),As=O0(202),ks=O0(711),xs=O0(604),Ss=O0(134),_s=O0(203);const ye=O0.p+"9c4ab5d453e67f8e3a66.js";var be=Object.defineProperty,we=Object.defineProperties,Ce=Object.getOwnPropertyDescriptors,F7=Object.getOwnPropertySymbols,Ae=Object.prototype.hasOwnProperty,ke=Object.prototype.propertyIsEnumerable,N7=(u,e,t)=>e in u?be(u,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):u[e]=t,N2=(u,e)=>{for(var t in e||(e={}))Ae.call(e,t)&&N7(u,t,e[t]);if(F7)for(var t of F7(e))ke.call(e,t)&&N7(u,t,e[t]);return u},xe=(u,e)=>we(u,Ce(e));ge().config.setModuleUrl("ace/mode/json_worker",ye);function D7(u){const{disabled:e,readOnly:t,disableValidation:f,id:x,error:P,label:F,labelwidth:H,note:V,onBlur:K,onChange:X,theme:e0,value:Z,setOptions:Q,wrapperClassName:i0}=u,J=["tyk-form-group",i0,...e0?e0.split(" ").map(E0=>`tyk-form-group--${E0}`):[],H&&"tyk-form-group--label-has-width",P&&"has-error"].filter(Boolean).join(" "),c0=N2(N2({},Q),f&&{useWorker:!1}),r0=(0,D.useCallback)(()=>P&&P!=="true"&&P!=="false"?R().createElement("p",{className:"tyk-form-control__error-message"},P):null,[P]),o0=(0,D.useCallback)(()=>H?{flexBasis:H}:{},[H]),g0=(0,D.useCallback)(()=>H?{flexBasis:`calc(100% - ${H} - 20px)`}:{},[H]),y0=(0,D.useCallback)(E0=>{X&&X(E0)},[X]),L0=(0,D.useCallback)(()=>{K&&K(Z)},[K,Z]);return R().createElement("div",{className:J},F?R().createElement("label",{htmlFor:x,style:o0()},F):null,R().createElement("div",{className:"tyk-form-control__wrapper",style:g0()},R().createElement(ve(),xe(N2({className:"tyk-form-control"},u),{onChange:y0,onBlur:L0,theme:"github",editorProps:{$blockScrolling:!0},readOnly:t||e,onLoad:E0=>{E0.container.style.resize="both",document.addEventListener("mouseup",()=>E0.resize())},setOptions:c0})),V?R().createElement("p",{className:"tyk-form-control__help-block"},V):null,r0()))}D7.propTypes={disabled:n().bool,readOnly:n().bool,disableValidation:n().bool,id:n().string,error:n().oneOfType([n().string,n().bool]),label:n().oneOfType([n().arrayOf(n().node),n().node,n().element,n().func,n().string]),labelwidth:n().string,mode:n().string,name:n().string,note:n().string,onBlur:n().func,onChange:n().func,theme:n().string,value:n().string,setOptions:n().instanceOf(Object),wrapperClassName:n().string};const D2=D7;var Se=Object.defineProperty,_e=Object.defineProperties,$e=Object.getOwnPropertyDescriptors,W7=Object.getOwnPropertySymbols,Ee=Object.prototype.hasOwnProperty,Oe=Object.prototype.propertyIsEnumerable,W2=(u,e,t)=>e in u?Se(u,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):u[e]=t,Te=(u,e)=>{for(var t in e||(e={}))Ee.call(e,t)&&W2(u,t,e[t]);if(W7)for(var t of W7(e))Oe.call(e,t)&&W2(u,t,e[t]);return u},Re=(u,e)=>_e(u,$e(e)),H7=(u,e,t)=>(W2(u,typeof e!="symbol"?e+"":e,t),t);const H2=(u,e,t)=>t||(u||e?[]:null),z2=class _5 extends D.Component{static closeList(){return{cursor:-1,opened:!1}}static openList(){return{opened:!0}}static filterByName(e,t){return e.name.toLowerCase().indexOf(t)>-1}constructor(e){super(e);const{multiple:t,tags:f,value:x}=e;this.state={cursor:-1,opened:!1,width:50,initialValue:x,stateSelectedValues:H2(t,f,x),searchText:"",tags:f},this.comboboxRef=(0,D.createRef)(),this.valuesListRef=(0,D.createRef)(),this.inputRef=(0,D.createRef)(),this.textRef=(0,D.createRef)(),this.focusInput=this.focusInput.bind(this),this.onKeyUp=this.onKeyUp.bind(this),_5.openList=_5.openList.bind(this),this.handleClickOutside=this.handleClickOutside.bind(this),this.handleItemsNavigation=this.handleItemsNavigation.bind(this),this.handleComboboxDropdownClick=this.handleComboboxDropdownClick.bind(this),this.handleListItemClick=this.handleListItemClick.bind(this),this.handlePillRemoveClick=this.handlePillRemoveClick.bind(this),this.manageSelectedTags=this.manageSelectedTags.bind(this)}componentDidMount(){const{tags:e}=this.props;e&&this.setInputWidth(),this.bindEvents()}componentWillUnmount(){this.unBindEvents()}static getDerivedStateFromProps(e,t){return JSON.stringify(e.value)!==JSON.stringify(t.initialValue)||e.tags!==t.tags?{initialValue:e.value,stateSelectedValues:H2(e.multiple,e.tags,e.value),tags:e.tags}:null}onKeyUp(e){const{tags:t,allowCustomValues:f}=this.props,{cursor:x,opened:P}=this.state,F=this.filterValues();let H=Object.assign({},this.getSearchText());t&&e.key!=="Escape"&&(H=Object.assign({},H,this.setInputWidth())),e.key==="Enter"&&(H=Object.assign({},H,this[t?"manageSelectedTags":"manageSelectedValues"](x))),f&&!e.key===" "&&t&&(H=Object.assign({},H,this.manageSelectedTags())),!P&&this.inputRef.current.value&&F&&F.length&&e.key!=="Escape"&&(H=Object.assign({},H,_5.openList())),e.key==="Escape"&&P&&(H=Object.assign({},H,_5.closeList())),P&&F&&!F.length&&(H=Object.assign({},H,_5.closeList())),this.setState(V=>Object.assign({},V,H))}getLabelStyles(){const{labelwidth:e}=this.props,t={};return e&&(t.flexBasis=e),t}getNonLabelWidth(){const{labelwidth:e}=this.props,t={};return e&&(t.flexBasis=`calc(100% - ${e} - 20px)`),t}setInputWidth(){return{width:50+this.textRef.current.offsetWidth}}getSelectedIndex(e){const{stateSelectedValues:t}=this.state;let f=-1;return Array.isArray(t)?t.forEach((x,P)=>{x.id===e.id&&(f=P)}):t&&t.id===e.id&&(f=0),f}getSearchText(){return{searchText:this.inputRef.current.value}}getListItemCssClasses(e,t){const f=[],{cursor:x}=this.state;return x===t&&f.push("active"),e.disabled&&f.push("disabled"),f.join(" ")}getComboboxListCssClass(){const{opened:e}=this.state,{tags:t,theme:f}=this.props,x=f?f.split(" "):[],P=["tyk-combobox__list"];return e&&P.push("tyk-combobox__list--opened"),t&&P.push("tyk-combobox__list--has-tags"),x.length&&x.forEach(F=>{P.push(`tyk-form-group--${F}`)}),P.join(" ")}getCssClasses(){const{error:e,disabled:t,theme:f,labelwidth:x}=this.props,P=["tyk-form-group","tyk-combobox"],F=f?f.split(" "):[];return e&&P.push("has-error"),x&&P.push("tyk-form-group--label-has-width"),F.length&&F.forEach(H=>{P.push(`tyk-form-group--${H}`)}),t&&P.push("disabled"),P.join(" ")}getInputError(){const{error:e}=this.props;return e&&e!=="true"&&e!=="false"?R().createElement("p",{className:"tyk-form-control__error-message"},e):null}getStyles(){const{scrollTop:e}=document.documentElement,t=this.comboboxRef.current,f=t.offsetHeight,x=t.offsetWidth,P=t.getBoundingClientRect(),{left:F}=P;let H=0;return H=P.top+e+f,{top:`${H-1}px`,left:`${F}px`,width:`${x}px`}}getComboboxDisplayData(){const{stateSelectedValues:e}=this.state,{multiple:t,placeholder:f,values:x}=this.props;return!e||e&&Array.isArray(e)&&!e.length||e&&!Array.isArray(e)&&!e.id?f:Array.isArray(e)&&t?e.reduce((P,F,H)=>P+F.name+(H!==e.length-1?", ":""),""):x&&x.length&&!Array.isArray(e)&&!e.name?x.filter(P=>P.id===e.id)[0].name:e.name}manageSelectedTags(e){const{max:t,allowCustomValues:f}=this.props,{stateSelectedValues:x}=this.state,P=this.filterValues(),F={id:this.inputRef.current.value,name:this.inputRef.current.value};if(f===!1&&e===-1)return null;const H=P[e]||F,V=this.getSelectedIndex(H);let K={};if(this.inputRef.current.value="",V>-1&&this.isInInitialValues(H))K=this.removeSelectedValue(V);else if(V===-1){if(t&&x.length>=t)return K;K=this.addSelectedValue(H)}return K}manageSelectedValues(e){const{stateSelectedValues:t}=this.state,{multiple:f,onChange:x,max:P}=this.props,F=this.filterValues(),H=F[e];let V;const K=this.getSelectedIndex(H);if(H&&f)if(K>-1)V=this.removeSelectedValue(K);else{if(P&&t.length>=P)return V;V=this.addSelectedValue(F[e])}else V={stateSelectedValues:K===-1?H:{id:null}},x&&typeof x=="function"&&x(K===-1?H:null);return V}removeSelectedValue(e){const{stateSelectedValues:t}=this.state,{onChange:f}=this.props,x=JSON.parse(JSON.stringify(t));return x.splice(e,1),f&&typeof f=="function"&&f(x.length?x:null),{stateSelectedValues:x,searchText:""}}addSelectedValue(e){const{stateSelectedValues:t}=this.state,{onChange:f}=this.props,x=JSON.parse(JSON.stringify(t));return x.push(e),f&&typeof f=="function"&&f(x.length?x:null),{stateSelectedValues:x,searchText:""}}isInInitialValues(e){const{values:t}=this.props;let f=!1;return t.forEach(x=>{e.id===x.id&&(f=!0)}),f}filterValues(){const{values:e,searchItem:t}=this.props;return this.inputRef.current?e.filter(x=>t?t(x,this.inputRef.current.value.toLowerCase()):_5.filterByName(x,this.inputRef.current.value.toLowerCase())):e}bindEvents(){document.addEventListener("mousedown",this.handleClickOutside)}unBindEvents(){document.removeEventListener("mousedown",this.handleClickOutside)}handleItemsNavigation(e){const{tags:t}=this.props;if(["ArrowDown","ArrowUp"].indexOf(e.key)===-1)return;const{cursor:f}=this.state,x=this.filterValues();let P;if(e.preventDefault(),e.key==="ArrowDown"&&(f===-1||f===x.length-1?P=0:f0?P=f-1:P=x.length-1),this.valuesListRef.current&&P>4){const F=(P-4)*38;this.valuesListRef.current.scrollTop=t?F:60+F}else this.valuesListRef.current&&(this.valuesListRef.current.scrollTop=0);this.setState(F=>Re(Te({},F),{opened:!0,cursor:P}))}handleListItemClick(e){if(this.props.values[e].disabled)return;const{multiple:f,tags:x}=this.props,P=x?"manageSelectedTags":"manageSelectedValues",F=Object.assign({},this.state,this[P](e));this.setState(H=>(!f&&!x&&(F.opened=!1),Object.assign({},H,F)))}handlePillRemoveClick(e){const{disabled:t}=this.props;if(t)return;const f=this.removeSelectedValue(e);this.setState(x=>Object.assign({},x,f))}handleClickOutside(e){this.valuesListRef.current&&!this.valuesListRef.current.contains(e.target)&&this.comboboxRef.current&&!this.comboboxRef.current.contains(e.target)&&this.setState(t=>Object.assign({},t,_5.closeList()))}handleComboboxDropdownClick(){const{disabled:e}=this.props;e||this.setState(t=>Object.assign({},t,_5.openList()))}reset(){const{multiple:e,tags:t,value:f}=this.props;this.setState({stateSelectedValues:H2(e,t,f)})}focusInput(){this.inputRef.current&&this.inputRef.current.focus()}render(){const{CustomListComponent:e,disabled:t,id:f,label:x,note:P,tags:F,max:H,placeholder:V}=this.props,{width:K,opened:X,searchText:e0,stateSelectedValues:Z}=this.state,Q=this.filterValues();return R().createElement(D.Fragment,null,R().createElement("div",{className:this.getCssClasses()},x?R().createElement("label",{htmlFor:f,style:this.getLabelStyles()},x):null,R().createElement("div",{className:"tyk-form-control__wrapper",style:this.getNonLabelWidth()},R().createElement("ul",{className:`tyk-form-control${F?" tyk-form-control--with-tags":""}`,onClick:this.focusInput,onKeyDown:()=>{},ref:this.comboboxRef},F?R().createElement(D.Fragment,null,(Z||[]).map((i0,J)=>R().createElement("li",{className:"pill",key:i0.id},R().createElement("button",{type:"button",onClick:this.handlePillRemoveClick.bind(this,J)},R().createElement(a,{type:"times"})),R().createElement("span",null,i0.name))),R().createElement("li",{className:"tyk-combobox__search-box",style:{width:!Z||!Z.length?"100%":"auto"}},(H===void 0||(Z==null?void 0:Z.length){i0.key==="Enter"&&i0.preventDefault()},onKeyUp:this.onKeyUp,onKeyDown:this.handleItemsNavigation,placeholder:!Z||!Z.length?V:"",ref:this.inputRef,style:{width:!Z||!Z.length?"100%":`${K}px`}}),R().createElement("span",{ref:this.textRef,style:{visbility:"hidden",position:"absolute",top:"-9999px"}},e0)),Q.length?R().createElement(j0,{className:"tyk-combobox--with-tags__button-down",iconType:"arrow-down",iconOnly:!0,onClick:this.handleComboboxDropdownClick}):null)):R().createElement("li",{className:"tyk-combobox__placeholder",onClick:this.handleComboboxDropdownClick,onKeyDown:()=>{}},this.getComboboxDisplayData(),R().createElement(a,{family:"tykon",type:"arrowdown"}))),P?R().createElement("p",{className:"tyk-form-control__help-block"},P):null,this.getInputError())),e?R().createElement(e,{ref:this.valuesListRef,className:this.getComboboxListCssClass(),getListItemCssClasses:this.getListItemCssClasses.bind(this),getSelectedIndex:this.getSelectedIndex.bind(this),filteredValues:Q,handleListItemClick:this.handleListItemClick.bind(this)}):X&&Q.length?r9().createPortal(R().createElement("ul",{className:this.getComboboxListCssClass(),ref:this.valuesListRef,style:this.getStyles()},F?null:R().createElement("li",{className:"combobox-search__container"},R().createElement("input",{autoFocus:X,className:"tyk-form-control",onKeyUp:this.onKeyUp,onKeyDown:this.handleItemsNavigation,key:"searchInput",ref:this.inputRef})),Q.map((i0,J)=>R().createElement("li",{className:this.getListItemCssClasses(i0,J),onClick:this.handleListItemClick.bind(this,J),onKeyDown:()=>{},key:i0.id},this.getSelectedIndex(i0)>-1?R().createElement(a,{type:"check"}):null,R().createElement("span",null," ",i0.name)))),document.querySelector("body")):null)}};H7(z2,"propTypes",{allowCustomValues:n().bool,CustomListComponent:n().elementType,searchItem:n().func,disabled:n().bool,error:n().string,id:n().string,label:n().oneOfType([n().arrayOf(n().node),n().node,n().element,n().func,n().string]),labelwidth:n().string,multiple:n().bool,max:n().number,note:n().oneOfType([n().node,n().element,n().string]),onChange:n().func,placeholder:n().string,tags:n().bool,theme:n().string,value:n().oneOfType([n().string,n().instanceOf(Object),n().instanceOf(Array)]),values:n().instanceOf(Array)}),H7(z2,"defaultProps",{allowCustomValues:!0});let j2=z2;function Me(u){const{value:e,max:t,tags:f,tagSeparators:x,addTagOnBlur:P,placeholder:F,disabled:H,renderValue:V,valueOverflow:K,focus:X,onMessage:e0,readOnly:Z}=u,Q=60,i0=(0,D.useRef)(null),J=(0,D.useRef)(null),[c0,r0]=(0,D.useState)(""),[o0,g0]=(0,D.useState)(`${Q+10}px`);function y0(l0){if(x.some(C0=>l0.slice(-1)===C0))return;const s0=J.current;s0.innerHTML=l0,g0(`${Math.max(s0.clientWidth,Q)+10}px`),r0(l0),e0("tag.input.change",l0)}function L0(l0,s0){if(f){if(s0===""&&l0==="Backspace"&&e.length){e0("tag.remove",e[e.length-1].id);return}if(l0==="Enter"){e0("tag.input.enter",s0),y0("");return}if(l0==="ArrowUp"){e0("tag.input.arrowUp");return}if(l0==="ArrowDown"){e0("tag.input.arrowDown");return}if(l0==="Escape"){e0("tag.input.escape");return}x.includes(l0)&&(e0("tag.add",s0),y0(""))}}function E0(){e0("text-value.click")}function S0(l0,s0=!1){if(Z)return l0||"-";const C0=["tyk-combobox2__text-value",`overflow-${K}`,s0&&"is-placeholder"].filter(Boolean).join(" ");return R().createElement("span",{className:C0,title:K==="single"?l0:void 0,role:"none",tabIndex:H?"-1":"0",onClick:E0,onKeyPress:E0},l0)}function B0(l0){return V(l0,{tags:f,tagSeparators:x,placeholder:F,disabled:H,renderValue:V,sendMessage:e0})}function I0(l0){return V?B0(l0):R().createElement(e7,{key:l0.id,theme:"combobox"},R().createElement("button",{type:"button",onClick:s0=>{s0.stopPropagation(),e0("tag.remove",l0.id)}},R().createElement(a,{type:"times"})),R().createElement("span",{title:l0.name},l0.name))}function v0(){return R().createElement(R().Fragment,null,e.map(I0),e.lengthy0(l0.target.value),onKeyDown:l0=>{l0.key==="Enter"&&l0.preventDefault(),L0(l0.key,l0.target.value)},onFocus:()=>e0("tag.input.focus"),onBlur:l0=>{e0("tag.input.blur",l0.target.value),P&&y0("")}}),R().createElement("span",{ref:J,style:{visbility:"hidden",position:"absolute",top:"-9999px"}})))}return(0,D.useEffect)(()=>{X&&i0.current&&i0.current.focus()},[X]),Z?R().createElement("div",{className:"tyk-form-control--readonly"},S0(e.map(l0=>l0.name).join(", "))):f?v0():V?e.length===0?S0(F,!0):e.map(B0):e.length===0?S0(F,!0):S0(e.map(l0=>l0.name).join(", "))}const z7=Me;function j7(u){const{listRef:e,tags:t,values:f,searchValue:x,activeItem:P,onMessage:F,renderListItem:H,selectAll:V,showSearch:K}=u;(0,D.useEffect)(()=>{if(!e.current)return;const Z=e.current.querySelector(".active");Z&&Z.scrollIntoView({block:"end"})},[P]);function X(Z){return H?H(Z,{tags:t,searchValue:x,sendMessage:F,activeItem:P}):R().createElement("li",{key:Z.id,title:Z.name,className:[Z.disabled&&"disabled",P&&Z.id===P.id&&"active"].filter(Boolean).join(" "),onClick:()=>!Z.disabled&&F("value.select",{item:Z}),onKeyPress:()=>{}},Z.selected&&R().createElement(a,{type:"check"}),R().createElement("span",{className:"item-name"},Z.name))}function e0(){var Z,Q,i0;const J=f.every(E0=>E0.selected),c0=f.every(E0=>!E0.selected),r0=(Z=V==null?void 0:V.label)!=null?Z:"Select All",o0=(Q=V==null?void 0:V.mode)!=null?Q:"select",g0=(i0=V==null?void 0:V.show)!=null?i0:"always",y0=V==null?void 0:V.render;return g0==="always"||(o0==="select"?!J:!c0)?y0?y0({label:r0,mode:o0,show:g0,isAllSelected:J,isNoneSelected:c0},F):R().createElement("li",{onClick:()=>F("value.select-all",o0==="select"?!J:c0),onKeyDown:()=>{}},(o0==="select"?J:c0)&&R().createElement(a,{type:"check"}),r0):null}return R().createElement(R().Fragment,null,!t&&K&&R().createElement("div",{className:"tyk-combobox2__combobox-search"},R().createElement("input",{autoFocus:!0,className:"tyk-form-control",value:x,onChange:Z=>F("search.change",Z.target.value),onKeyDown:Z=>{Z.key==="Escape"&&F("search.escape"),Z.key==="ArrowUp"&&F("search.arrowUp"),Z.key==="ArrowDown"&&F("search.arrowDown"),Z.key==="Enter"&&F("search.enter")}})),f.length>0&&R().createElement("ul",{ref:e,className:"tyk-combobox2__combobox-list"},!!V&&e0(),f.map(X)))}j7.propTypes={listRef:n().instanceOf(Object),tags:n().bool,values:n().instanceOf(Array),searchValue:n().string,activeItem:n().instanceOf(Object),onMessage:n().func,renderListItem:n().func,selectAll:n().oneOfType([n().bool,n().shape({label:n().oneOfType([n().arrayOf(n().node),n().node,n().element,n().func,n().string]),mode:n().oneOf(["select","unselect"]),show:n().oneOf(["always","notSameState"]),render:n().func})]),showSearch:n().bool};const Le=j7;var Pe=Object.defineProperty,Ie=Object.defineProperties,Be=Object.getOwnPropertyDescriptors,R9=Object.getOwnPropertySymbols,V7=Object.prototype.hasOwnProperty,U7=Object.prototype.propertyIsEnumerable,G7=(u,e,t)=>e in u?Pe(u,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):u[e]=t,v5=(u,e)=>{for(var t in e||(e={}))V7.call(e,t)&&G7(u,t,e[t]);if(R9)for(var t of R9(e))U7.call(e,t)&&G7(u,t,e[t]);return u},A5=(u,e)=>Ie(u,Be(e)),Fe=(u,e)=>{var t={};for(var f in u)V7.call(u,f)&&e.indexOf(f)<0&&(t[f]=u[f]);if(u!=null&&R9)for(var f of R9(u))e.indexOf(f)<0&&U7.call(u,f)&&(t[f]=u[f]);return t};function l9(u,e){let t=u;if(typeof u=="string"?t={id:u,name:u}:u.hasOwnProperty("name")||(t=A5(v5({},u),{name:u.id})),!e)return t;const f=e.find(x=>x.id===t.id);return f?v5(v5({},t),f):t}function K7(u,e){return u?Array.isArray(u)?u.map(t=>l9(t,e)):[l9(u,e)]:[]}function Y7(u){var e=u,{value:t,values:f=[],valueOverflow:x="single",label:P="",labelwidth:F,tags:H=!1,tagSeparators:V=[" ","Enter"],addTagOnBlur:K=!1,max:X,multiple:e0=!1,placeholder:Z="",theme:Q,note:i0="",error:J="",disabled:c0=!1,readOnly:r0=!1,allowCustomValues:o0=!0,searchItem:g0,renderValue:y0,renderListItem:L0,renderList:E0,CustomListComponent:S0,onBeforeChange:B0=()=>!0,onChange:I0=()=>{},floatingContainerConfig:v0,expandMode:l0,infiniteScrollerConfig:s0,displayDropdownTrigger:C0=!0,selectAll:T0,closeOnSelect:$0,showSearch:K0=!1,required:R0=!1,validateOnChange:U0=()=>{},wrapperClassName:s5=""}=e,J0=Fe(e,["value","values","valueOverflow","label","labelwidth","tags","tagSeparators","addTagOnBlur","max","multiple","placeholder","theme","note","error","disabled","readOnly","allowCustomValues","searchItem","renderValue","renderListItem","renderList","CustomListComponent","onBeforeChange","onChange","floatingContainerConfig","expandMode","infiniteScrollerConfig","displayDropdownTrigger","selectAll","closeOnSelect","showSearch","required","validateOnChange","wrapperClassName"]);const G0=e0?1/0:X||(H?1/0:1),h5=S0?(d0,{sendMessage:A0})=>R().createElement(S0,{filteredValues:d0,handleListItemClick:P0=>A0("value.select",{item:d0[P0]}),getListItemCssClasses:()=>{}}):E0,u5=(0,D.useRef)(null),z5=(0,D.useRef)(null),q5=(0,D.useRef)(null),c2=(0,D.useRef)(null),[a5,i5]=(0,D.useState)(K7(t,f)),[Q0,b5]=(0,D.useState)(f.map(d0=>l9(d0))),[M5,v1]=(0,D.useState)(""),[w5,Z5]=(0,D.useState)(null),[y1,l6]=(0,D.useState)(!1),[u2,ss]=(0,D.useState)(!1),[b1,as]=(0,D.useState)("");function c6(){return(Q?Q.split(" "):[]).map(A0=>`tyk-form-group--${A0}`)}function ls(){return[s5,"tyk-form-group","tyk-combobox2",...c6(),(J||b1)&&"has-error",F&&"tyk-form-group--label-has-width",c0&&"disabled",l0&&"is-expand-mode"].filter(Boolean).join(" ")}function h2(){const A0=g0||((e5,o5)=>{var t9,g6;return(g6=(t9=e5==null?void 0:e5.name)==null?void 0:t9.toLowerCase())==null?void 0:g6.includes(o5)});return Q0.filter(e5=>A0(e5,M5.toLowerCase()))}function j5(){l6(!0)}function h9(){l6(!1),H||e9(""),Z5(null)}function e9(d0){v1(d0),w5&&h2().every(A0=>A0.id!==w5.id)&&Z5(null),d0&&!y1&&j5()}function u6(d0,A0){const P0=U0(d0,A0);return as(P0),P0===void 0}function d2(d0){i5(d0),I0(G0===1&&!H?d0[0]||null:d0)}function w1(d0){if(!d0||a5.length>=G0||a5.some(({name:t9})=>t9===d0))return;const A0=Q0.findIndex(t9=>t9.name===d0);let P0,e5=[...a5],o5;A0===-1?o0&&(P0={id:d0,name:d0},e5=[...a5,P0]):(o5=[...Q0.slice(0,A0),A5(v5({},Q0[A0]),{selected:!0}),...Q0.slice(A0+1)],P0=Q0[A0],e5=[...a5,Q0[A0]]),u6(e5,P0)&&B0(a5,e5)&&(o5&&b5(o5),d2(e5))}function cs(d0){if(R0&&G0===1)return;const A0=Q0.findIndex(e5=>e5.id===d0),P0=a5.filter(e5=>e5.id!==d0);B0(a5,P0)&&(A0!==-1&&b5([...Q0.slice(0,A0),A5(v5({},Q0[A0]),{selected:!1}),...Q0.slice(A0+1)]),d2(P0))}function C1({id:d0}){const A0=Q0.find(o5=>o5.id===d0);let P0=a5,e5=Q0;A0.selected?(!R0||G0!==1)&&(P0=a5.filter(o5=>o5.id!==A0.id),e5=Q0.map(o5=>o5.id===A0.id?A5(v5({},o5),{selected:!1}):o5)):a5.lengtho5.id===A0.id?A5(v5({},o5),{selected:!0}):o5)):G0===1&&(P0=[A0],e5=Q0.map(o5=>A5(v5({},o5),{selected:o5.id===A0.id}))),u6(P0,A0)&&B0(a5,P0)&&(d2(P0),b5(e5)),(G0===1||$0)&&h9()}function us(d0){if(Q0.length>G0)return;const A0=d0?[...Q0]:[];B0(a5,A0)&&(d2(A0),b5(Q0.map(P0=>A5(v5({},P0),{selected:d0}))),$0&&h9())}function h6(){const d0=h2().filter(P0=>!P0.disabled);if(d0.length===0)return;if(w5===null||d0.length===1){Z5(d0[d0.length-1]);return}const A0=d0.findIndex(P0=>P0.id===w5.id);Z5(d0[A0>0?A0-1:d0.length-1])}function d6(){const d0=h2().filter(P0=>!P0.disabled);if(d0.length===0)return;if(w5===null||d0.length===1){Z5(d0[0]);return}const A0=d0.findIndex(P0=>P0.id===w5.id);Z5(d0[A0(window.addEventListener("click",p6,!0),()=>window.removeEventListener("click",p6,!0)),[]),(0,D.useEffect)(()=>{if(f.length){const d0=f.map(A0=>A5(v5({},l9(A0)),{selected:a5.some(P0=>P0.id===A0.id)}));b5(d0),i5(A0=>A0.map(P0=>d0.find(e5=>e5.id===P0.id)||P0))}else Q0.length&&b5([])},[f]),(0,D.useEffect)(()=>{const d0=K7(t,Q0);i5(d0),b5(A0=>A0.map(P0=>A5(v5({},l9(P0)),{selected:d0.some(e5=>e5.id===P0.id)})))},[t]),(0,D.useEffect)(()=>{if(!l0)return()=>{};const d0=z5.current.querySelector(".tyk-combobox2__current-values"),A0=()=>{d0.scrollTop=d0.scrollHeight},P0=new MutationObserver(A0),e5=new ResizeObserver(A0);return P0.observe(d0,{attributes:!0,childList:!0,subtree:!0}),e5.observe(d0),()=>{P0.disconnect(),e5.disconnect()}});const k1=h2(),fs=["tyk-combobox2__current-values",l0&&"expand-mode",`tyk-combobox2__current-values--${u2?"expanded":"collapsed"}`].join(" ");return R().createElement("div",A5(v5({ref:u5,tabIndex:c0?"-1":"0",onClickCapture:hs},J0),{className:ls()}),P&&R().createElement("label",{style:{flexBasis:F||"auto"}},P),!r0&&R().createElement("div",{className:"tyk-form-control__wrapper",style:{flexBasis:`calc(100% - ${F} - 20px)`}},R().createElement("div",{className:"tyk-form-control",ref:z5},R().createElement("div",{className:fs,onClick:j5,role:"none"},R().createElement(z7,{value:a5,max:G0,tags:H,tagSeparators:V,addTagOnBlur:K,allowCustomValues:o0,placeholder:Z,disabled:c0,valueOverflow:x,renderValue:y0,focus:y1,onMessage:A1,readOnly:r0})),C0&&R().createElement("div",{className:`tyk-combobox2__values-container-trigger${u2?" tyk-combobox2__values-container-trigger--expanded":""}`,role:"button",tabIndex:c0?-1:0,onClick:f6,onKeyPress:f6},l0?R().createElement(a,{type:u2?"compress-arrows-alt":"expand-arrows-alt"}):R().createElement(a,{family:"tykon",type:"arrowdown"}))),y1&&(!H||k1.length>0)&&R().createElement(w9,A5(v5({element:z5,size:"matchElement",className:`tyk-combobox2__combobox-dropdown tyk-form-group ${c6().join(" ")}`,ref:q5,displayAxis:"vertical"},v0),{infiniteScrollerConfig:s0}),h5?h5(k1,{tags:H,searchValue:M5,activeItem:w5,listRef:c2,sendMessage:A1}):R().createElement(Le,{listRef:c2,showSearch:K0,values:k1,tags:H,searchValue:M5,activeItem:w5,onMessage:A1,renderListItem:L0,selectAll:T0})),i0&&R().createElement("p",{className:"tyk-form-control__help-block"},i0),(J&&J!=="true"&&J!=="false"||!!b1)&&R().createElement("p",{className:"tyk-form-control__error-message"},J||b1)),r0&&R().createElement("div",null,R().createElement(z7,{value:a5,tags:H,renderValue:y0,readOnly:r0})))}Y7.propTypes={allowCustomValues:n().bool,CustomListComponent:n().elementType,searchItem:n().func,renderValue:n().func,renderListItem:n().func,renderList:n().func,disabled:n().bool,readOnly:n().bool,error:n().string,label:n().oneOfType([n().arrayOf(n().node),n().node,n().element,n().func,n().string]),labelwidth:n().string,max:n().number,multiple:n().bool,note:n().oneOfType([n().node,n().element,n().string]),onBeforeChange:n().func,onChange:n().func,placeholder:n().string,tags:n().bool,tagSeparators:n().arrayOf(n().string),addTagOnBlur:n().bool,theme:n().string,value:n().oneOfType([n().string,n().instanceOf(Array),n().instanceOf(Object)]),values:n().instanceOf(Array),floatingContainerConfig:n().instanceOf(Object),valueOverflow:n().oneOf(["single","multiple"]),expandMode:n().bool,infiniteScrollerConfig:n().instanceOf(Object),displayDropdownTrigger:n().bool,selectAll:n().oneOfType([n().bool,n().shape({label:n().oneOfType([n().arrayOf(n().node),n().node,n().element,n().func,n().string]),mode:n().oneOf(["select","unselect"]),show:n().oneOf(["always","notSameState"]),render:n().func})]),closeOnSelect:n().bool,showSearch:n().bool,required:n().bool,validateOnChange:n().func,wrapperClassName:n().string};const V2=Y7,Ne=require("flatpickr");var X7=O0.n(Ne),De=O0(379),We=O0.n(De),He=O0(795),ze=O0.n(He),je=O0(569),Ve=O0.n(je),Ue=O0(565),Ge=O0.n(Ue),Ke=O0(216),Ye=O0.n(Ke),Xe=O0(589),Je=O0.n(Xe),M9=O0(821),X5={};X5.styleTagTransform=Je(),X5.setAttributes=Ge(),X5.insert=Ve().bind(null,"head"),X5.domAPI=ze(),X5.insertStyleElement=Ye();var $s=We()(M9.Z,X5);const Es=M9.Z&&M9.Z.locals?M9.Z.locals:void 0;var Qe=Object.defineProperty,qe=Object.defineProperties,Ze=Object.getOwnPropertyDescriptors,J7=Object.getOwnPropertySymbols,et=Object.prototype.hasOwnProperty,tt=Object.prototype.propertyIsEnumerable,Q7=(u,e,t)=>e in u?Qe(u,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):u[e]=t,nt=(u,e)=>{for(var t in e||(e={}))et.call(e,t)&&Q7(u,t,e[t]);if(J7)for(var t of J7(e))tt.call(e,t)&&Q7(u,t,e[t]);return u},rt=(u,e)=>qe(u,Ze(e));function q7({children:u,disabled:e,readOnly:t=!1,error:f,id:x,label:P,labelwidth:F,note:H,onClose:V,onChange:K,onOpen:X,theme:e0,config:Z={},value:Q,wrapperClassName:i0=""}){const[J,c0]=(0,D.useState)(null),r0=(0,D.useRef)(null),o0=w(Q),g0=(0,D.useCallback)((l0,s0)=>{if(!l0)return!0;if(!Array.isArray(s0))return l0.getTime()!==s0.getTime();let C0=s0;return l0&&s0.length&&l0.length?(C0=s0.filter((T0,$0)=>T0.getTime()!==l0[$0].getTime()),C0.length>0):s0.length>0},[]),y0=(0,D.useCallback)(l0=>{const s0=Z.mode==="range"?l0:l0[0]||null;K&&(Z.mode==="range"?s0.length===2&&g0(o0,s0)&&K(s0):K(s0))},[o0,K,g0]);(0,D.useEffect)(()=>{if(r0&&r0.current&&!J){const l0=X7()(r0.current,rt(nt({},Z),{defaultDate:Q,onChange:y0,onClose:V,onOpen:X}));c0(l0)}return()=>{J&&J.destroy()}},[r0.current,J]),(0,D.useEffect)(()=>{if(J){let l0=Q;typeof Q=="string"?l0=new Date(Q):Array.isArray(Q)&&(l0=Q.map(s0=>typeof s0=="string"?new Date(s0):s0)),g0(o0,l0)&&(J.set("onChange",y0),Z.mode==="range"?l0&&l0.length===2&&J.setDate(l0,!0):J.setDate(l0,!0))}},[o0,Q,J]);const L0=["tyk-form-group","tyk-form-group--addon-right",i0,...e0?e0.split(" ").map(l0=>`tyk-form-group--${l0}`):[],F&&"tyk-form-group--label-has-width",f&&"has-error"].filter(Boolean).join(" "),E0=()=>F?{flexBasis:F}:{},S0=()=>F?{flexBasis:`calc(100% - ${F} - 20px)`}:{},B0=(0,D.useCallback)(()=>{J&&J.open()},[J]),I0=()=>f&&f!=="true"&&f!=="false"?R().createElement("p",{className:"tyk-form-control__error-message"},f):null,v0=()=>{let l0={},s0={};return Z&&Z.inline&&(l0={height:0,padding:0,width:0,visibility:"hidden"},s0={display:"none"}),R().createElement(R().Fragment,null,R().createElement("input",{disabled:e,className:"tyk-form-control","data-input":!0,type:"date",ref:r0,style:l0}),R().createElement("div",{className:"tyk-input-group__addon",onClick:B0,role:"button",onKeyUp:()=>{},tabIndex:0,style:s0},R().createElement(a,{type:"calendar"})))};return R().createElement(R().Fragment,null,u&&u.length?u({openCalendar:B0,ref:r0}):R().createElement("div",{className:L0},P?R().createElement("label",{htmlFor:x,style:E0()},P):null,!t&&R().createElement("div",{className:"tyk-form-control__wrapper flatpickr",style:S0()},R().createElement("div",{className:"tyk-input-group"},v0()),H?R().createElement("p",{className:"tyk-form-control__help-block"},H):null,I0())),R().createElement("div",{className:"tyk-form-control--readonly"},t&&!Q&&"-",t&&Q&&X7().formatDate(Q,Z.dateFormat||"d/m/Y")))}q7.propTypes={config:n().instanceOf(Object),children:n().oneOfType([n().element,n().node,n().string,n().func]),disabled:n().bool,readOnly:n().bool,id:n().string,label:n().oneOfType([n().arrayOf(n().node),n().node,n().element,n().func,n().string]),labelwidth:n().string,note:n().string,onChange:n().oneOfType([n().func,n().instanceOf(Array)]),onClose:n().oneOfType([n().func,n().instanceOf(Array)]),onOpen:n().oneOfType([n().func,n().instanceOf(Array)]),theme:n().string,error:n().string,value:n().oneOfType([n().instanceOf(Array),n().instanceOf(Object),n().string]),wrapperClassName:n().string};const U2=q7;function L9(u){"@babel/helpers - typeof";return L9=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},L9(u)}function p5(u,e){if(e.length1?"s":"")+" required, but only "+e.length+" present")}function Z7(u){return p5(1,arguments),u instanceof Date||L9(u)==="object"&&Object.prototype.toString.call(u)==="[object Date]"}function x5(u){p5(1,arguments);var e=Object.prototype.toString.call(u);return u instanceof Date||L9(u)==="object"&&e==="[object Date]"?new Date(u.getTime()):typeof u=="number"||e==="[object Number]"?new Date(u):((typeof u=="string"||e==="[object String]")&&typeof console!="undefined"&&(console.warn("Starting with v2.0.0-beta.1 date-fns doesn't accept strings as date arguments. Please use `parseISO` to parse strings. See: https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#string-arguments"),console.warn(new Error().stack)),new Date(NaN))}function it(u){if(p5(1,arguments),!Z7(u)&&typeof u!="number")return!1;var e=x5(u);return!isNaN(Number(e))}function D5(u){if(u===null||u===!0||u===!1)return NaN;var e=Number(u);return isNaN(e)?e:e<0?Math.ceil(e):Math.floor(e)}function ot(u,e){p5(2,arguments);var t=x5(u).getTime(),f=D5(e);return new Date(t+f)}function st(u,e){p5(2,arguments);var t=D5(e);return ot(u,-t)}var at=864e5;function lt(u){p5(1,arguments);var e=x5(u),t=e.getTime();e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0);var f=e.getTime(),x=t-f;return Math.floor(x/at)+1}function P9(u){p5(1,arguments);var e=1,t=x5(u),f=t.getUTCDay(),x=(f=x.getTime()?t+1:e.getTime()>=F.getTime()?t:t-1}function ct(u){p5(1,arguments);var e=e4(u),t=new Date(0);t.setUTCFullYear(e,0,4),t.setUTCHours(0,0,0,0);var f=P9(t);return f}var ut=6048e5;function ht(u){p5(1,arguments);var e=x5(u),t=P9(e).getTime()-ct(e).getTime();return Math.round(t/ut)+1}var t4={};function I9(){return t4}function Os(u){t4=u}function B9(u,e){var t,f,x,P,F,H,V,K;p5(1,arguments);var X=I9(),e0=D5((t=(f=(x=(P=e==null?void 0:e.weekStartsOn)!==null&&P!==void 0?P:e==null||(F=e.locale)===null||F===void 0||(H=F.options)===null||H===void 0?void 0:H.weekStartsOn)!==null&&x!==void 0?x:X.weekStartsOn)!==null&&f!==void 0?f:(V=X.locale)===null||V===void 0||(K=V.options)===null||K===void 0?void 0:K.weekStartsOn)!==null&&t!==void 0?t:0);if(!(e0>=0&&e0<=6))throw new RangeError("weekStartsOn must be between 0 and 6 inclusively");var Z=x5(u),Q=Z.getUTCDay(),i0=(Q=1&&Q<=7))throw new RangeError("firstWeekContainsDate must be between 1 and 7 inclusively");var i0=new Date(0);i0.setUTCFullYear(e0+1,0,Q),i0.setUTCHours(0,0,0,0);var J=B9(i0,e),c0=new Date(0);c0.setUTCFullYear(e0,0,Q),c0.setUTCHours(0,0,0,0);var r0=B9(c0,e);return X.getTime()>=J.getTime()?e0+1:X.getTime()>=r0.getTime()?e0:e0-1}function dt(u,e){var t,f,x,P,F,H,V,K;p5(1,arguments);var X=I9(),e0=D5((t=(f=(x=(P=e==null?void 0:e.firstWeekContainsDate)!==null&&P!==void 0?P:e==null||(F=e.locale)===null||F===void 0||(H=F.options)===null||H===void 0?void 0:H.firstWeekContainsDate)!==null&&x!==void 0?x:X.firstWeekContainsDate)!==null&&f!==void 0?f:(V=X.locale)===null||V===void 0||(K=V.options)===null||K===void 0?void 0:K.firstWeekContainsDate)!==null&&t!==void 0?t:1),Z=n4(u,e),Q=new Date(0);Q.setUTCFullYear(Z,0,e0),Q.setUTCHours(0,0,0,0);var i0=B9(Q,e);return i0}var ft=6048e5;function pt(u,e){p5(1,arguments);var t=x5(u),f=B9(t,e).getTime()-dt(t,e).getTime();return Math.round(f/ft)+1}function X0(u,e){for(var t=u<0?"-":"",f=Math.abs(u).toString();f.length0?f:1-f;return X0(t==="yy"?x%100:x,t.length)},M:function(e,t){var f=e.getUTCMonth();return t==="M"?String(f+1):X0(f+1,2)},d:function(e,t){return X0(e.getUTCDate(),t.length)},a:function(e,t){var f=e.getUTCHours()/12>=1?"pm":"am";switch(t){case"a":case"aa":return f.toUpperCase();case"aaa":return f;case"aaaaa":return f[0];case"aaaa":default:return f==="am"?"a.m.":"p.m."}},h:function(e,t){return X0(e.getUTCHours()%12||12,t.length)},H:function(e,t){return X0(e.getUTCHours(),t.length)},m:function(e,t){return X0(e.getUTCMinutes(),t.length)},s:function(e,t){return X0(e.getUTCSeconds(),t.length)},S:function(e,t){var f=t.length,x=e.getUTCMilliseconds(),P=Math.floor(x*Math.pow(10,f-3));return X0(P,t.length)}};const R5=gt;var J5={am:"am",pm:"pm",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},mt={G:function(e,t,f){var x=e.getUTCFullYear()>0?1:0;switch(t){case"G":case"GG":case"GGG":return f.era(x,{width:"abbreviated"});case"GGGGG":return f.era(x,{width:"narrow"});case"GGGG":default:return f.era(x,{width:"wide"})}},y:function(e,t,f){if(t==="yo"){var x=e.getUTCFullYear(),P=x>0?x:1-x;return f.ordinalNumber(P,{unit:"year"})}return R5.y(e,t)},Y:function(e,t,f,x){var P=n4(e,x),F=P>0?P:1-P;if(t==="YY"){var H=F%100;return X0(H,2)}return t==="Yo"?f.ordinalNumber(F,{unit:"year"}):X0(F,t.length)},R:function(e,t){var f=e4(e);return X0(f,t.length)},u:function(e,t){var f=e.getUTCFullYear();return X0(f,t.length)},Q:function(e,t,f){var x=Math.ceil((e.getUTCMonth()+1)/3);switch(t){case"Q":return String(x);case"QQ":return X0(x,2);case"Qo":return f.ordinalNumber(x,{unit:"quarter"});case"QQQ":return f.quarter(x,{width:"abbreviated",context:"formatting"});case"QQQQQ":return f.quarter(x,{width:"narrow",context:"formatting"});case"QQQQ":default:return f.quarter(x,{width:"wide",context:"formatting"})}},q:function(e,t,f){var x=Math.ceil((e.getUTCMonth()+1)/3);switch(t){case"q":return String(x);case"qq":return X0(x,2);case"qo":return f.ordinalNumber(x,{unit:"quarter"});case"qqq":return f.quarter(x,{width:"abbreviated",context:"standalone"});case"qqqqq":return f.quarter(x,{width:"narrow",context:"standalone"});case"qqqq":default:return f.quarter(x,{width:"wide",context:"standalone"})}},M:function(e,t,f){var x=e.getUTCMonth();switch(t){case"M":case"MM":return R5.M(e,t);case"Mo":return f.ordinalNumber(x+1,{unit:"month"});case"MMM":return f.month(x,{width:"abbreviated",context:"formatting"});case"MMMMM":return f.month(x,{width:"narrow",context:"formatting"});case"MMMM":default:return f.month(x,{width:"wide",context:"formatting"})}},L:function(e,t,f){var x=e.getUTCMonth();switch(t){case"L":return String(x+1);case"LL":return X0(x+1,2);case"Lo":return f.ordinalNumber(x+1,{unit:"month"});case"LLL":return f.month(x,{width:"abbreviated",context:"standalone"});case"LLLLL":return f.month(x,{width:"narrow",context:"standalone"});case"LLLL":default:return f.month(x,{width:"wide",context:"standalone"})}},w:function(e,t,f,x){var P=pt(e,x);return t==="wo"?f.ordinalNumber(P,{unit:"week"}):X0(P,t.length)},I:function(e,t,f){var x=ht(e);return t==="Io"?f.ordinalNumber(x,{unit:"week"}):X0(x,t.length)},d:function(e,t,f){return t==="do"?f.ordinalNumber(e.getUTCDate(),{unit:"date"}):R5.d(e,t)},D:function(e,t,f){var x=lt(e);return t==="Do"?f.ordinalNumber(x,{unit:"dayOfYear"}):X0(x,t.length)},E:function(e,t,f){var x=e.getUTCDay();switch(t){case"E":case"EE":case"EEE":return f.day(x,{width:"abbreviated",context:"formatting"});case"EEEEE":return f.day(x,{width:"narrow",context:"formatting"});case"EEEEEE":return f.day(x,{width:"short",context:"formatting"});case"EEEE":default:return f.day(x,{width:"wide",context:"formatting"})}},e:function(e,t,f,x){var P=e.getUTCDay(),F=(P-x.weekStartsOn+8)%7||7;switch(t){case"e":return String(F);case"ee":return X0(F,2);case"eo":return f.ordinalNumber(F,{unit:"day"});case"eee":return f.day(P,{width:"abbreviated",context:"formatting"});case"eeeee":return f.day(P,{width:"narrow",context:"formatting"});case"eeeeee":return f.day(P,{width:"short",context:"formatting"});case"eeee":default:return f.day(P,{width:"wide",context:"formatting"})}},c:function(e,t,f,x){var P=e.getUTCDay(),F=(P-x.weekStartsOn+8)%7||7;switch(t){case"c":return String(F);case"cc":return X0(F,t.length);case"co":return f.ordinalNumber(F,{unit:"day"});case"ccc":return f.day(P,{width:"abbreviated",context:"standalone"});case"ccccc":return f.day(P,{width:"narrow",context:"standalone"});case"cccccc":return f.day(P,{width:"short",context:"standalone"});case"cccc":default:return f.day(P,{width:"wide",context:"standalone"})}},i:function(e,t,f){var x=e.getUTCDay(),P=x===0?7:x;switch(t){case"i":return String(P);case"ii":return X0(P,t.length);case"io":return f.ordinalNumber(P,{unit:"day"});case"iii":return f.day(x,{width:"abbreviated",context:"formatting"});case"iiiii":return f.day(x,{width:"narrow",context:"formatting"});case"iiiiii":return f.day(x,{width:"short",context:"formatting"});case"iiii":default:return f.day(x,{width:"wide",context:"formatting"})}},a:function(e,t,f){var x=e.getUTCHours(),P=x/12>=1?"pm":"am";switch(t){case"a":case"aa":return f.dayPeriod(P,{width:"abbreviated",context:"formatting"});case"aaa":return f.dayPeriod(P,{width:"abbreviated",context:"formatting"}).toLowerCase();case"aaaaa":return f.dayPeriod(P,{width:"narrow",context:"formatting"});case"aaaa":default:return f.dayPeriod(P,{width:"wide",context:"formatting"})}},b:function(e,t,f){var x=e.getUTCHours(),P;switch(x===12?P=J5.noon:x===0?P=J5.midnight:P=x/12>=1?"pm":"am",t){case"b":case"bb":return f.dayPeriod(P,{width:"abbreviated",context:"formatting"});case"bbb":return f.dayPeriod(P,{width:"abbreviated",context:"formatting"}).toLowerCase();case"bbbbb":return f.dayPeriod(P,{width:"narrow",context:"formatting"});case"bbbb":default:return f.dayPeriod(P,{width:"wide",context:"formatting"})}},B:function(e,t,f){var x=e.getUTCHours(),P;switch(x>=17?P=J5.evening:x>=12?P=J5.afternoon:x>=4?P=J5.morning:P=J5.night,t){case"B":case"BB":case"BBB":return f.dayPeriod(P,{width:"abbreviated",context:"formatting"});case"BBBBB":return f.dayPeriod(P,{width:"narrow",context:"formatting"});case"BBBB":default:return f.dayPeriod(P,{width:"wide",context:"formatting"})}},h:function(e,t,f){if(t==="ho"){var x=e.getUTCHours()%12;return x===0&&(x=12),f.ordinalNumber(x,{unit:"hour"})}return R5.h(e,t)},H:function(e,t,f){return t==="Ho"?f.ordinalNumber(e.getUTCHours(),{unit:"hour"}):R5.H(e,t)},K:function(e,t,f){var x=e.getUTCHours()%12;return t==="Ko"?f.ordinalNumber(x,{unit:"hour"}):X0(x,t.length)},k:function(e,t,f){var x=e.getUTCHours();return x===0&&(x=24),t==="ko"?f.ordinalNumber(x,{unit:"hour"}):X0(x,t.length)},m:function(e,t,f){return t==="mo"?f.ordinalNumber(e.getUTCMinutes(),{unit:"minute"}):R5.m(e,t)},s:function(e,t,f){return t==="so"?f.ordinalNumber(e.getUTCSeconds(),{unit:"second"}):R5.s(e,t)},S:function(e,t){return R5.S(e,t)},X:function(e,t,f,x){var P=x._originalDate||e,F=P.getTimezoneOffset();if(F===0)return"Z";switch(t){case"X":return i4(F);case"XXXX":case"XX":return W5(F);case"XXXXX":case"XXX":default:return W5(F,":")}},x:function(e,t,f,x){var P=x._originalDate||e,F=P.getTimezoneOffset();switch(t){case"x":return i4(F);case"xxxx":case"xx":return W5(F);case"xxxxx":case"xxx":default:return W5(F,":")}},O:function(e,t,f,x){var P=x._originalDate||e,F=P.getTimezoneOffset();switch(t){case"O":case"OO":case"OOO":return"GMT"+r4(F,":");case"OOOO":default:return"GMT"+W5(F,":")}},z:function(e,t,f,x){var P=x._originalDate||e,F=P.getTimezoneOffset();switch(t){case"z":case"zz":case"zzz":return"GMT"+r4(F,":");case"zzzz":default:return"GMT"+W5(F,":")}},t:function(e,t,f,x){var P=x._originalDate||e,F=Math.floor(P.getTime()/1e3);return X0(F,t.length)},T:function(e,t,f,x){var P=x._originalDate||e,F=P.getTime();return X0(F,t.length)}};function r4(u,e){var t=u>0?"-":"+",f=Math.abs(u),x=Math.floor(f/60),P=f%60;if(P===0)return t+String(x);var F=e||"";return t+String(x)+F+X0(P,2)}function i4(u,e){if(u%60===0){var t=u>0?"-":"+";return t+X0(Math.abs(u)/60,2)}return W5(u,e)}function W5(u,e){var t=e||"",f=u>0?"-":"+",x=Math.abs(u),P=X0(Math.floor(x/60),2),F=X0(x%60,2);return f+P+t+F}const vt=mt;var o4=function(e,t){switch(e){case"P":return t.date({width:"short"});case"PP":return t.date({width:"medium"});case"PPP":return t.date({width:"long"});case"PPPP":default:return t.date({width:"full"})}},s4=function(e,t){switch(e){case"p":return t.time({width:"short"});case"pp":return t.time({width:"medium"});case"ppp":return t.time({width:"long"});case"pppp":default:return t.time({width:"full"})}},yt=function(e,t){var f=e.match(/(P+)(p+)?/)||[],x=f[1],P=f[2];if(!P)return o4(e,t);var F;switch(x){case"P":F=t.dateTime({width:"short"});break;case"PP":F=t.dateTime({width:"medium"});break;case"PPP":F=t.dateTime({width:"long"});break;case"PPPP":default:F=t.dateTime({width:"full"});break}return F.replace("{{date}}",o4(x,t)).replace("{{time}}",s4(P,t))},bt={p:s4,P:yt};const wt=bt;function Ct(u){var e=new Date(Date.UTC(u.getFullYear(),u.getMonth(),u.getDate(),u.getHours(),u.getMinutes(),u.getSeconds(),u.getMilliseconds()));return e.setUTCFullYear(u.getFullYear()),u.getTime()-e.getTime()}var At=["D","DD"],kt=["YY","YYYY"];function xt(u){return At.indexOf(u)!==-1}function St(u){return kt.indexOf(u)!==-1}function a4(u,e,t){if(u==="YYYY")throw new RangeError("Use `yyyy` instead of `YYYY` (in `".concat(e,"`) for formatting years to the input `").concat(t,"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md"));if(u==="YY")throw new RangeError("Use `yy` instead of `YY` (in `".concat(e,"`) for formatting years to the input `").concat(t,"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md"));if(u==="D")throw new RangeError("Use `d` instead of `D` (in `".concat(e,"`) for formatting days of the month to the input `").concat(t,"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md"));if(u==="DD")throw new RangeError("Use `dd` instead of `DD` (in `".concat(e,"`) for formatting days of the month to the input `").concat(t,"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md"))}var _t={lessThanXSeconds:{one:"less than a second",other:"less than {{count}} seconds"},xSeconds:{one:"1 second",other:"{{count}} seconds"},halfAMinute:"half a minute",lessThanXMinutes:{one:"less than a minute",other:"less than {{count}} minutes"},xMinutes:{one:"1 minute",other:"{{count}} minutes"},aboutXHours:{one:"about 1 hour",other:"about {{count}} hours"},xHours:{one:"1 hour",other:"{{count}} hours"},xDays:{one:"1 day",other:"{{count}} days"},aboutXWeeks:{one:"about 1 week",other:"about {{count}} weeks"},xWeeks:{one:"1 week",other:"{{count}} weeks"},aboutXMonths:{one:"about 1 month",other:"about {{count}} months"},xMonths:{one:"1 month",other:"{{count}} months"},aboutXYears:{one:"about 1 year",other:"about {{count}} years"},xYears:{one:"1 year",other:"{{count}} years"},overXYears:{one:"over 1 year",other:"over {{count}} years"},almostXYears:{one:"almost 1 year",other:"almost {{count}} years"}},$t=function(e,t,f){var x,P=_t[e];return typeof P=="string"?x=P:t===1?x=P.one:x=P.other.replace("{{count}}",t.toString()),f!=null&&f.addSuffix?f.comparison&&f.comparison>0?"in "+x:x+" ago":x};const Et=$t;function G2(u){return function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},t=e.width?String(e.width):u.defaultWidth,f=u.formats[t]||u.formats[u.defaultWidth];return f}}var Ot={full:"EEEE, MMMM do, y",long:"MMMM do, y",medium:"MMM d, y",short:"MM/dd/yyyy"},Tt={full:"h:mm:ss a zzzz",long:"h:mm:ss a z",medium:"h:mm:ss a",short:"h:mm a"},Rt={full:"{{date}} 'at' {{time}}",long:"{{date}} 'at' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},Mt={date:G2({formats:Ot,defaultWidth:"full"}),time:G2({formats:Tt,defaultWidth:"full"}),dateTime:G2({formats:Rt,defaultWidth:"full"})};const Lt=Mt;var Pt={lastWeek:"'last' eeee 'at' p",yesterday:"'yesterday at' p",today:"'today at' p",tomorrow:"'tomorrow at' p",nextWeek:"eeee 'at' p",other:"P"},It=function(e,t,f,x){return Pt[e]};const Bt=It;function c9(u){return function(e,t){var f=t!=null&&t.context?String(t.context):"standalone",x;if(f==="formatting"&&u.formattingValues){var P=u.defaultFormattingWidth||u.defaultWidth,F=t!=null&&t.width?String(t.width):P;x=u.formattingValues[F]||u.formattingValues[P]}else{var H=u.defaultWidth,V=t!=null&&t.width?String(t.width):u.defaultWidth;x=u.values[V]||u.values[H]}var K=u.argumentCallback?u.argumentCallback(e):e;return x[K]}}var Ft={narrow:["B","A"],abbreviated:["BC","AD"],wide:["Before Christ","Anno Domini"]},Nt={narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1st quarter","2nd quarter","3rd quarter","4th quarter"]},Dt={narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],wide:["January","February","March","April","May","June","July","August","September","October","November","December"]},Wt={narrow:["S","M","T","W","T","F","S"],short:["Su","Mo","Tu","We","Th","Fr","Sa"],abbreviated:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],wide:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},Ht={narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"}},zt={narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"}},jt=function(e,t){var f=Number(e),x=f%100;if(x>20||x<10)switch(x%10){case 1:return f+"st";case 2:return f+"nd";case 3:return f+"rd"}return f+"th"},Vt={ordinalNumber:jt,era:c9({values:Ft,defaultWidth:"wide"}),quarter:c9({values:Nt,defaultWidth:"wide",argumentCallback:function(e){return e-1}}),month:c9({values:Dt,defaultWidth:"wide"}),day:c9({values:Wt,defaultWidth:"wide"}),dayPeriod:c9({values:Ht,defaultWidth:"wide",formattingValues:zt,defaultFormattingWidth:"wide"})};const Ut=Vt;function u9(u){return function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},f=t.width,x=f&&u.matchPatterns[f]||u.matchPatterns[u.defaultMatchWidth],P=e.match(x);if(!P)return null;var F=P[0],H=f&&u.parsePatterns[f]||u.parsePatterns[u.defaultParseWidth],V=Array.isArray(H)?Kt(H,function(e0){return e0.test(F)}):Gt(H,function(e0){return e0.test(F)}),K;K=u.valueCallback?u.valueCallback(V):V,K=t.valueCallback?t.valueCallback(K):K;var X=e.slice(F.length);return{value:K,rest:X}}}function Gt(u,e){for(var t in u)if(u.hasOwnProperty(t)&&e(u[t]))return t}function Kt(u,e){for(var t=0;t1&&arguments[1]!==void 0?arguments[1]:{},f=e.match(u.matchPattern);if(!f)return null;var x=f[0],P=e.match(u.parsePattern);if(!P)return null;var F=u.valueCallback?u.valueCallback(P[0]):P[0];F=t.valueCallback?t.valueCallback(F):F;var H=e.slice(x.length);return{value:F,rest:H}}}var Xt=/^(\d+)(th|st|nd|rd)?/i,Jt=/\d+/i,Qt={narrow:/^(b|a)/i,abbreviated:/^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i,wide:/^(before christ|before common era|anno domini|common era)/i},qt={any:[/^b/i,/^(a|c)/i]},Zt={narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](th|st|nd|rd)? quarter/i},en={any:[/1/i,/2/i,/3/i,/4/i]},tn={narrow:/^[jfmasond]/i,abbreviated:/^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,wide:/^(january|february|march|april|may|june|july|august|september|october|november|december)/i},nn={narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^ap/i,/^may/i,/^jun/i,/^jul/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},rn={narrow:/^[smtwf]/i,short:/^(su|mo|tu|we|th|fr|sa)/i,abbreviated:/^(sun|mon|tue|wed|thu|fri|sat)/i,wide:/^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i},on={narrow:[/^s/i,/^m/i,/^t/i,/^w/i,/^t/i,/^f/i,/^s/i],any:[/^su/i,/^m/i,/^tu/i,/^w/i,/^th/i,/^f/i,/^sa/i]},sn={narrow:/^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,any:/^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i},an={any:{am:/^a/i,pm:/^p/i,midnight:/^mi/i,noon:/^no/i,morning:/morning/i,afternoon:/afternoon/i,evening:/evening/i,night:/night/i}},ln={ordinalNumber:Yt({matchPattern:Xt,parsePattern:Jt,valueCallback:function(e){return parseInt(e,10)}}),era:u9({matchPatterns:Qt,defaultMatchWidth:"wide",parsePatterns:qt,defaultParseWidth:"any"}),quarter:u9({matchPatterns:Zt,defaultMatchWidth:"wide",parsePatterns:en,defaultParseWidth:"any",valueCallback:function(e){return e+1}}),month:u9({matchPatterns:tn,defaultMatchWidth:"wide",parsePatterns:nn,defaultParseWidth:"any"}),day:u9({matchPatterns:rn,defaultMatchWidth:"wide",parsePatterns:on,defaultParseWidth:"any"}),dayPeriod:u9({matchPatterns:sn,defaultMatchWidth:"any",parsePatterns:an,defaultParseWidth:"any"})},cn={code:"en-US",formatDistance:Et,formatLong:Lt,formatRelative:Bt,localize:Ut,match:ln,options:{weekStartsOn:0,firstWeekContainsDate:1}};const un=cn;var hn=/[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g,dn=/P+p+|P+|p+|''|'(''|[^'])+('|$)|./g,fn=/^'([^]*?)'?$/,pn=/''/g,gn=/[a-zA-Z]/;function mn(u,e,t){var f,x,P,F,H,V,K,X,e0,Z,Q,i0,J,c0,r0,o0,g0,y0;p5(2,arguments);var L0=String(e),E0=I9(),S0=(f=(x=t==null?void 0:t.locale)!==null&&x!==void 0?x:E0.locale)!==null&&f!==void 0?f:un,B0=D5((P=(F=(H=(V=t==null?void 0:t.firstWeekContainsDate)!==null&&V!==void 0?V:t==null||(K=t.locale)===null||K===void 0||(X=K.options)===null||X===void 0?void 0:X.firstWeekContainsDate)!==null&&H!==void 0?H:E0.firstWeekContainsDate)!==null&&F!==void 0?F:(e0=E0.locale)===null||e0===void 0||(Z=e0.options)===null||Z===void 0?void 0:Z.firstWeekContainsDate)!==null&&P!==void 0?P:1);if(!(B0>=1&&B0<=7))throw new RangeError("firstWeekContainsDate must be between 1 and 7 inclusively");var I0=D5((Q=(i0=(J=(c0=t==null?void 0:t.weekStartsOn)!==null&&c0!==void 0?c0:t==null||(r0=t.locale)===null||r0===void 0||(o0=r0.options)===null||o0===void 0?void 0:o0.weekStartsOn)!==null&&J!==void 0?J:E0.weekStartsOn)!==null&&i0!==void 0?i0:(g0=E0.locale)===null||g0===void 0||(y0=g0.options)===null||y0===void 0?void 0:y0.weekStartsOn)!==null&&Q!==void 0?Q:0);if(!(I0>=0&&I0<=6))throw new RangeError("weekStartsOn must be between 0 and 6 inclusively");if(!S0.localize)throw new RangeError("locale must contain localize property");if(!S0.formatLong)throw new RangeError("locale must contain formatLong property");var v0=x5(u);if(!it(v0))throw new RangeError("Invalid time value");var l0=Ct(v0),s0=st(v0,l0),C0={firstWeekContainsDate:B0,weekStartsOn:I0,locale:S0,_originalDate:v0},T0=L0.match(dn).map(function($0){var K0=$0[0];if(K0==="p"||K0==="P"){var R0=wt[K0];return R0($0,S0.formatLong)}return $0}).join("").match(hn).map(function($0){if($0==="''")return"'";var K0=$0[0];if(K0==="'")return vn($0);var R0=vt[K0];if(R0)return!(t!=null&&t.useAdditionalWeekYearTokens)&&St($0)&&a4($0,e,String(u)),!(t!=null&&t.useAdditionalDayOfYearTokens)&&xt($0)&&a4($0,e,String(u)),R0(s0,$0,S0.localize,C0);if(K0.match(gn))throw new RangeError("Format string contains an unescaped latin alphabet character `"+K0+"`");return $0}).join("");return T0}function vn(u){var e=u.match(fn);return e?e[1].replace(pn,"'"):u}var yn=O0(590),l4=O0.n(yn),bn=Object.defineProperty,wn=Object.defineProperties,Cn=Object.getOwnPropertyDescriptors,F9=Object.getOwnPropertySymbols,c4=Object.prototype.hasOwnProperty,u4=Object.prototype.propertyIsEnumerable,K2=(u,e,t)=>e in u?bn(u,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):u[e]=t,An=(u,e)=>{for(var t in e||(e={}))c4.call(e,t)&&K2(u,t,e[t]);if(F9)for(var t of F9(e))u4.call(e,t)&&K2(u,t,e[t]);return u},kn=(u,e)=>wn(u,Cn(e)),xn=(u,e)=>{var t={};for(var f in u)c4.call(u,f)&&e.indexOf(f)<0&&(t[f]=u[f]);if(u!=null&&F9)for(var f of F9(u))e.indexOf(f)<0&&u4.call(u,f)&&(t[f]=u[f]);return t},Sn=(u,e,t)=>(K2(u,typeof e!="symbol"?e+"":e,t),t);const h4=class n9 extends D.Component{static getMainFormValue(e){const t=new Array(e.length);return e.forEach((f,x)=>{t[x]=f.props.value||void 0}),t}constructor(e){super(e);const{components:t}=e;this.submitButtonRef=(0,D.createRef)(),this.handleOnChange=this.handleOnChange.bind(this),this.submitForm=this.submitForm.bind(this),this.state={components:t,errors:{},mainError:null,mainFormValue:n9.getMainFormValue(t),refs:[]}}componentDidMount(){const{addValueOnFieldChange:e,getMainFormButtonWidth:t}=this.props;this.createRefs(),t&&t(e?0:this.submitButtonRef.current.clientWidth)}static getDerivedStateFromProps(e,t){const f={},{components:x}=e,{components:P}=t;return!l4()(x,P)&&!l4()(n9.getMainFormValue(x),n9.getMainFormValue(P))&&(f.mainFormValue=n9.getMainFormValue(x),f.components=x),f}getFormCssClasses(){const{noLabels:e}=this.props,t=["tyk-editable-list__form"];return e&&t.push("no-labels"),t.join(" ")}getButtonClassName(){const{buttonStyle:e,displayType:t}=this.props,f=[];return e&&f.push(e),t&&f.push(t),f.join(" ")}getComponentsError(e){const{error:t,errors:f,mainError:x}=this.state;return t||x?f[e.props.name]="true":!(t||x)&&f[e.props.name]==="true"&&delete f[e.props.name],f[e.props.name]?f[e.props.name].toString():void 0}createRefs(){const{components:e}=this.props,t=[];e.forEach(()=>{t.push((0,D.createRef)())}),this.setState({refs:t})}validateValue(e,t){const{mainError:f,errors:x}=this.state,{error:P,errorPersist:F}=this.props,H=t.validate?Object.keys(t.validate):[],V={errors:P||f?{}:Object.assign({},x)};let K=!0;if(F)return V;for(let X=0;X0?!0:(t.forEach((F,H)=>{P.errors=Object.assign({},P.errors,this.validateValue(x[H],F.props).errors)}),Object.keys(P.errors).length>0)}handleOnChange(e,t,f){const{addValueOnFieldChange:x}=this.props;let P=this.state;P=Object.assign({},P,this.validateValue(f,e.props)),P.errors[e.props.name]||(P.mainFormValue[t]=f,e.props.onChange&&e.props.onChange(f)),this.setState(F=>Object.assign({},F,P),()=>{x&&this.submitForm()})}resetForm(){const{refs:e}=this.state,{components:t}=this.props;e.forEach(f=>{var x;(x=f.current)!=null&&x.reset&&f.current.reset()}),this.setState({errors:{},mainError:null,mainFormValue:n9.getMainFormValue(t)})}showMainError(e){this.setState({mainError:e})}submitForm(){const{errors:e,mainFormValue:t}=this.state,{errorPersist:f,onSubmit:x,validate:P,validationmessage:F}=this.props;f&&(x(t),this.resetForm()),Object.keys(e).length===0&&x&&typeof x=="function"&&(P?P(t)?this.showMainError(F):(x(t),this.resetForm()):(x(t),this.resetForm()))}render(){const{addValueOnFieldChange:e,components:t,buttonName:f,disabled:x,displayType:P,error:F}=this.props,{mainError:H,refs:V,errors:K}=this.state;return R().createElement("div",null,R().createElement("div",{className:this.getFormCssClasses()},R().createElement(a9,null,t.map((X,e0)=>{const Z=X.name,Q=X.props,{onChange:i0,value:J}=Q,c0=xn(Q,["onChange","value"]);return R().createElement(O9,{size:`md-${X.size||"12"} lg-${X.size||"12"}`,key:X.props.name},R().createElement(Z,kn(An({disabled:x||X.props.disabled,onChange:this.handleOnChange.bind(this,X,e0)},c0),{label:P==="inline"?"":X.props.label,error:this.getComponentsError(X),ref:V[e0],value:J})))})),e?null:R().createElement("span",{className:this.getButtonClassName(),ref:this.submitButtonRef},R().createElement(j0,{disabled:this.hasMainFormErrors(K),className:"tyk-editable-list__submit-btn",onClick:this.submitForm,theme:"default",type:"button",size:P==="inline"?"sm":"md"},f||"ADD"))),F||H?R().createElement("div",{className:"tyk-editable-list-main-error"},R().createElement("p",{className:"error-message"},F||H)):null)}};Sn(h4,"propTypes",{addValueOnFieldChange:n().bool,noLabels:n().bool,buttonName:n().string,buttonStyle:n().string,components:n().instanceOf(Array),displayType:n().string,disabled:n().bool,getMainFormButtonWidth:n().func,error:n().string,errorPersist:n().bool,onSubmit:n().func,validate:n().func,validationmessage:n().string});let d4=h4;var _n=Object.defineProperty,$n=(u,e,t)=>e in u?_n(u,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):u[e]=t,En=(u,e,t)=>($n(u,typeof e!="symbol"?e+"":e,t),t);const f4=class d9 extends D.Component{static getItemListValue(e){let t=null;return typeof e=="string"&&(t=e),Object.prototype.toString.call(e)==="[object Object]"&&(t=e.name),Z7(e)&&(t=mn(e,"dd/MM/yyyy")),t}static getListItemCssClass(e){const t=[];return e==="inline"&&t.push("tyk-editable-list-item--inline"),t.join(" ")}constructor(e){super(e);const{value:t}=this.props;this.state={initialValue:t||"",value:t||[],buttonWidth:0},this.startIndex=1,this.handleFormSubmit=this.handleFormSubmit.bind(this),this.getMainFormButtonWidth=this.getMainFormButtonWidth.bind(this),this.dropdownListItemRef=(0,D.createRef)()}static getDerivedStateFromProps(e,t){const f={};return e.value&&JSON.stringify(e.value)!==JSON.stringify(t.initialValue)&&(f.value=e.value||[],f.initialValue=e.value||""),f.value?f:null}getListItemsCssClass(e){const{config:t}=this.props,f=["tyk-editable-list-items"];return f.push(t.displayType||"table"),e==="inline"&&f.push("tyk-editable-list-items--inline"),f.join(" ")}getFormInputKey(){return this.startIndex+=1,this.startIndex}getListItemText(e){const{config:t}=this.props;let f=null;switch(t.displayType){case"list":case"inline":{f=e.value.reduce((P,F,H)=>{const V=d9.getItemListValue(F);let K=", ";return H===e.value.length-1&&(K=""),P+V+K},"");break}default:f=R().createElement(a9,null,t.components.map((x,P)=>R().createElement(O9,{key:this.getFormInputKey(),size:`md-${x.size} lg-${x.size}`},d9.getItemListValue(e.value[P]))));break}return f}getMainFormButtonWidth(e){this.setState({buttonWidth:e})}setItemEditMode(e){const t=this.closeListItems();this.setState(f=>{const x=Object.assign({},f);return x.value=t,x.value[e].editMode=!x.value[e].editMode,x})}isInList(e,t){const{value:f}=this.state;let x=!1;return f.forEach((P,F)=>{JSON.stringify(P.value)===JSON.stringify(t)&&(e>=0&&F===e?x=!1:x=!0)}),x}addValues(e){const{value:t}=this.state,{config:f}=this.props,x={editMode:!1,value:e},P={value:t.slice(0)};return f.children&&(x.children=[]),P.value.push(x),P}removeListItem(e){let t;this.setState(f=>{const x=f.value.slice(0);return t=x.splice(e,1),{value:x}},()=>{this.triggerOnChange(e,t,null)})}handleFormSubmit(e){const t=this.addValues(e);this.setState(f=>Object.assign({},f,t),()=>{this.triggerOnChange(t.value.length-1,null,e)})}handleItemUpdate(e,t){let f;this.setState(x=>{const P=Object.assign({},x);return f=(0,W0.fromJS)(P.value[e].value).toJS(),P.value[e].value=t,P.value[e].editMode=!1,P},()=>{this.triggerOnChange(e,f,t)})}handleChildrenOnChange(e,t){let f;this.setState(x=>{const P=Object.assign({},x);return f=(0,W0.fromJS)(P.value[e].children).toJS(),P.value[e].children=t,P},()=>{this.triggerOnChange(e,f,t)})}closeListItems(){const{value:e}=this.state;return e.map(f=>{const x=Object.assign({},f);return x.editMode&&(x.editMode=!1),x})}triggerOnChange(e,t,f){const{onChange:x}=this.props,{value:P}=this.state;x&&typeof x=="function"&&x(P.length?P:null,e,t,f)}genListItem(e,t){const{config:f,disabled:x}=this.props,{buttonWidth:P,value:F}=this.state,H=(0,W0.fromJS)(f.components).toJS();return e.value.forEach((V,K)=>{H[K].props.value=V}),R().createElement("li",{key:t,className:d9.getListItemCssClass(f.displayType),ref:this.dropdownListItemRef},R().createElement("div",{className:`tyk-editable-list-item__text ${f.displayType||"table"}${e.editMode?" edit-mode-wrapper":""}`},e.editMode?R().createElement(D.Fragment,null,R().createElement(d4,{buttonName:"Update",noLabels:f.noLabels,disabled:x,displayType:f.displayType,components:H,onSubmit:this.handleItemUpdate.bind(this,t),validate:this.isInList.bind(this,t),validationmessage:"This value is already in the list"}),R().createElement("button",{type:"button",className:"tyk-editable-list-action__button on-edit",onClick:this.removeListItem.bind(this,t)},R().createElement(a,{type:"trash"}))):R().createElement(D.Fragment,null,this.getListItemText(e,t),R().createElement("div",{className:"tyk-editable-list-item__controls",style:{display:"block",width:f.displayType==="inline"?"auto":`${P+60}px`}},R().createElement("button",{disabled:x,type:"button",className:"tyk-editable-list-action__button",onClick:this.setItemEditMode.bind(this,t)},R().createElement(a,{type:"edit"})),R().createElement("button",{disabled:x,type:"button",className:"tyk-editable-list-action__button",onClick:this.removeListItem.bind(this,t)},R().createElement(a,{type:"trash"}))))),f.children?R().createElement(d9,{disabled:x,onChange:this.handleChildrenOnChange.bind(this,t),config:f.children.config,value:F[t]&&F[t].children||[]}):null)}genList(){const{config:e}=this.props,{buttonWidth:t,value:f}=this.state;return!f||f.length===0?null:R().createElement(D.Fragment,null,e.displayType==="table"||!e.displayType?R().createElement("div",{className:"tyk-editable-list__header",style:{paddingRight:`${t+60}px`}},R().createElement(a9,null,e.components.map((x,P)=>R().createElement(O9,{key:x.props.label||P,size:`md-${x.size||12} lg-${x.size||12}`},x.props.label)))):null,R().createElement("ul",{className:this.getListItemsCssClass(e.displayType)},f.map((x,P)=>this.genListItem(x,P))))}render(){const{addValueOnFieldChange:e,config:t,error:f,disabled:x,label:P}=this.props,F=document.querySelector(t.appendTo)||document.querySelector("body");return R().createElement("div",{className:"tyk-editable-list"},P?R().createElement("label",null,P):null,R().createElement(d4,{addValueOnFieldChange:e,components:t.components,buttonName:t.formButtonTitle,buttonStyle:t.formButtonStyle,disabled:x,error:f,errorPersist:!!f,noLabels:t.noLabels,onSubmit:this.handleFormSubmit,validate:this.isInList.bind(this,-1),validationmessage:"This value is already in the list",getMainFormButtonWidth:this.getMainFormButtonWidth}),t.appendTo?r9().createPortal(this.genList(),F):this.genList())}};En(f4,"propTypes",{addValueOnFieldChange:n().bool,disabled:n().bool,error:n().string,config:n().instanceOf(Object),onChange:n().func,label:n().oneOfType([n().arrayOf(n().node),n().node,n().element,n().func,n().string]),value:n().oneOfType([n().instanceOf(Array),n().instanceOf(Object)])});let Y2=f4;const p4=({label:u,addButtonName:e,onAddRow:t,disabled:f,readOnly:x})=>R().createElement("div",{className:"editable-list__header"},u?R().createElement("label",null,u):null,!f&&!x&&R().createElement(j0,{theme:"primary rounded-corners",onClick:t},e||"Add"));p4.propTypes={disabled:n().bool,readOnly:n().bool,onAddRow:n().func,addButtonName:n().string,label:n().oneOfType([n().string,n().element,n().node])};const On=p4,g4=({fields:u,readOnly:e})=>R().createElement("li",{className:"editable-list__item editable-list__item-header"},u.map(t=>{var f;return R().createElement("div",{className:`editable-list__item-cell editable-list__item--size-${(t==null?void 0:t.size)||12}`},(f=t==null?void 0:t.props)==null?void 0:f.label)}),R().createElement("div",{className:`editable-list__item-cell editable-list__item-action ${e&&"editable-list__item-action--read-only"}`},"Delete"));g4.propTypes={fields:n().instanceOf(Array),readOnly:n().bool};const Tn=g4;var Rn=Object.defineProperty,Mn=Object.defineProperties,Ln=Object.getOwnPropertyDescriptors,m4=Object.getOwnPropertySymbols,Pn=Object.prototype.hasOwnProperty,In=Object.prototype.propertyIsEnumerable,v4=(u,e,t)=>e in u?Rn(u,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):u[e]=t,Bn=(u,e)=>{for(var t in e||(e={}))Pn.call(e,t)&&v4(u,t,e[t]);if(m4)for(var t of m4(e))In.call(e,t)&&v4(u,t,e[t]);return u},Fn=(u,e)=>Mn(u,Ln(e));const y4=({fields:u,disabled:e,readOnly:t,errors:f,components:x,onChange:P,onDelete:F,value:H,rowIndex:V})=>R().createElement("li",{className:"editable-list__item"},x.map((K,X)=>{var e0,Z,Q;let i0=u[X],J=typeof i0=="function"?i0(V,X):i0;return R().createElement("div",{className:`editable-list__item-cell editable-list__item--size-${((e0=u[X])==null?void 0:e0.size)||12}`},R().createElement(K,Fn(Bn({},J==null?void 0:J.props),{label:"",value:H[X],onChange:P.bind(null,X),error:f==null?void 0:f[X],disabled:e||((Z=J==null?void 0:J.props)==null?void 0:Z.disabled),readOnly:t||((Q=J==null?void 0:J.props)==null?void 0:Q.readOnly)})))}),R().createElement("div",{className:`editable-list__item-cell editable-list__item-action ${t&&"editable-list__item-action--read-only"}`},R().createElement(j0,{iconOnly:!0,iconType:"trash-alt",theme:"primary-link",onClick:F,disabled:t||e})));y4.propTypes={disabled:n().bool,readOnly:n().bool,rowIndex:n().oneOfType([n().string,n().number]),fields:n().instanceOf(Array),errors:n().instanceOf(Array),components:n().instanceOf(Array),value:n().instanceOf(Array),onChange:n().func,onDelete:n().func};const Nn=y4,Dn=(u,e)=>{var t;return(t=e||[[void 0,void 0]])==null?void 0:t.map(f=>f==null?void 0:f.map((x,P)=>{var F,H;return((H=(F=u==null?void 0:u[P])==null?void 0:F.props)==null?void 0:H.validate)&&u[P].props.validate(x)}))};var Wn=Object.defineProperty,Hn=Object.defineProperties,zn=Object.getOwnPropertyDescriptors,N9=Object.getOwnPropertySymbols,b4=Object.prototype.hasOwnProperty,w4=Object.prototype.propertyIsEnumerable,C4=(u,e,t)=>e in u?Wn(u,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):u[e]=t,jn=(u,e)=>{for(var t in e||(e={}))b4.call(e,t)&&C4(u,t,e[t]);if(N9)for(var t of N9(e))w4.call(e,t)&&C4(u,t,e[t]);return u},Vn=(u,e)=>Hn(u,zn(e)),Un=(u,e)=>{var t={};for(var f in u)b4.call(u,f)&&e.indexOf(f)<0&&(t[f]=u[f]);if(u!=null&&N9)for(var f of N9(u))e.indexOf(f)<0&&w4.call(u,f)&&(t[f]=u[f]);return t};const Gn=u=>e=>{var t=e,{onChange:f,validate:x,error:P}=t,F=Un(t,["onChange","validate","error"]);const[H,V]=(0,D.useState)(null),K=(0,D.useCallback)(X=>{const e0=X!=null&&X.target?["radio","checkbox"].includes(X.target.type)?X.target.checked:X==null?void 0:X.target.value:X;let Z=!0;if(x&&typeof x=="function"){const Q=x(e0);Z=!Q,V(Q)}f(e0,Z)},[x,f]);return R().createElement(u,Vn(jn({},F),{onChange:K,error:H||P}))};let Kn=1;const Yn=u=>`${u}-${Kn++}`,A4=({addButtonName:u,disabled:e,readOnly:t,fields:f,label:x,error:P,value:F=[],onChange:H=()=>{},hideOnEmpty:V=!0,wrapperClassName:K=""})=>{const[X,e0]=(0,D.useState)(null),Z=(r0,o0,g0,y0)=>{var L0;const E0=F?[...F]:[];if(!F)E0[r0]=[...new Array(f.length)],E0[r0][o0]=g0;else{const S0=[...E0[r0]];S0[o0]=g0,E0[r0]=S0,E0[r0].id=F[r0].id}if((L0=X==null?void 0:X[r0])!=null&&L0[o0]&&y0){const S0=[...X],B0=[...S0[r0]];B0[o0]=null,S0[r0]=B0,e0(S0)}H(E0)},Q=r0=>{var o0;return!!((o0=r0==null?void 0:r0.flat())!=null&&o0.filter(Boolean).length)},i0=(0,D.useMemo)(()=>f.map(r0=>{let o0=typeof r0=="function"?r0():r0;return Gn((o0==null?void 0:o0.component)||R().createElement(R().Fragment,null))}),[]),J=()=>{const r0=Dn(f,F);if(Q(r0)){e0(r0);return}const o0=[...new Array(f.length)];o0.id=Yn("row"),H([...F&&F,o0])},c0=r0=>{if(!F)return;const o0=[...F];o0.splice(r0,1),H(o0)};return R().createElement("div",{className:`editable-list__wrapper tyk-form-group tyk-form-group--default ${P?"has-error":""} ${K}`},R().createElement(On,{disabled:e,readOnly:t,label:x,addButtonName:u,onAddRow:J}),F!=null&&F.length||!V?R().createElement("ul",{className:"editable-list__list"},(F||[[]]).map((r0,o0)=>R().createElement(R().Fragment,null,R().createElement(Nn,{key:r0.id||o0,rowIndex:o0,disabled:e,readOnly:t,fields:f,onChange:Z.bind(null,o0),onDelete:c0.bind(null,o0),value:r0,errors:X==null?void 0:X[o0],components:i0}))),R().createElement(Tn,{fields:f,readOnly:t})):null,P&&P!=="true"&&P!=="false"?R().createElement("p",{className:"tyk-form-control__error-message"},P):null)};A4.propTypes={disabled:n().bool,readOnly:n().bool,addButtonName:n().string,label:n().oneOfType([n().string,n().element,n().node]),fields:n().instanceOf(Array),onChange:n().func,value:n().oneOfType([n().instanceOf(Object),n().instanceOf(Array)]),error:n().string,hideOnEmpty:n().bool,wrapperClassName:n().string};const k4=A4;var Xn=Object.defineProperty,Jn=Object.defineProperties,Qn=Object.getOwnPropertyDescriptors,D9=Object.getOwnPropertySymbols,x4=Object.prototype.hasOwnProperty,S4=Object.prototype.propertyIsEnumerable,X2=(u,e,t)=>e in u?Xn(u,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):u[e]=t,qn=(u,e)=>{for(var t in e||(e={}))x4.call(e,t)&&X2(u,t,e[t]);if(D9)for(var t of D9(e))S4.call(e,t)&&X2(u,t,e[t]);return u},Zn=(u,e)=>Jn(u,Qn(e)),er=(u,e)=>{var t={};for(var f in u)x4.call(u,f)&&e.indexOf(f)<0&&(t[f]=u[f]);if(u!=null&&D9)for(var f of D9(u))e.indexOf(f)<0&&S4.call(u,f)&&(t[f]=u[f]);return t},tr=(u,e,t)=>(X2(u,typeof e!="symbol"?e+"":e,t),t);class W9 extends D.Component{constructor(e){super(e),this.handleOnChange=this.handleOnChange.bind(this),this.clearValue=this.clearValue.bind(this),this.fileInputRef=(0,D.createRef)()}getCssClasses(){const{error:e,theme:t,labelwidth:f,wrapperClassName:x=""}=this.props,P=[x,"tyk-form-group"],F=t?t.split(" "):[];return F.length&&F.forEach(H=>{P.push(`tyk-form-group--${H}`)}),f&&P.push("tyk-form-group--label-has-width"),e&&P.push("has-error"),P.join(" ")}getLabelStyles(){const{labelwidth:e}=this.props,t={};return e&&(t.flexBasis=e),t}getNonLabelWidth(){const{labelwidth:e}=this.props,t={};return e&&(t.flexBasis=`calc(100% - ${e} - 20px)`),t}getFileInputError(){const{error:e}=this.props;return e&&e!=="true"&&e!=="false"?R().createElement("p",{className:"tyk-form-control__error-message"},e):null}getFileInputComponent(){const e=this.props,{accept:t,value:f,onChange:x}=e,P=er(e,["accept","value","onChange"]);return R().createElement("div",{className:"tyk-file-input__wrapper",style:this.getNonLabelWidth()},R().createElement("input",Zn(qn({accept:t,className:"tyk-form-control"},P),{onChange:this.handleOnChange,ref:this.fileInputRef,type:"file"})),this.fileInputRef.current&&this.fileInputRef.current.files.length>0?R().createElement("button",{onClick:this.clearValue,type:"button"},R().createElement(a,{type:"times"})):null)}clearValue(){const{onChange:e}=this.props;this.fileInputRef.current.value="",e("")}handleOnChange(e){const{onChange:t}=this.props;t(e.target.files)}reset(){}render(){const{id:e,label:t,note:f}=this.props;return R().createElement(D.Fragment,null,R().createElement("div",{className:this.getCssClasses()},t?R().createElement("label",{htmlFor:e,style:this.getLabelStyles()},t):null,R().createElement("div",{className:"tyk-form-control__wrapper"},this.getFileInputComponent(),f?R().createElement("p",{className:"tyk-form-control__help-block"},f):null),this.getFileInputError()))}}tr(W9,"propTypes",{accept:n().string,disabled:n().bool,id:n().string,error:n().oneOfType([n().string,n().bool]),label:n().oneOfType([n().arrayOf(n().node),n().node,n().element,n().func,n().string]),labelwidth:n().string,name:n().string,note:n().string,onChange:n().func,placeholder:n().string,theme:n().string,value:n().instanceOf(Object),wrapperClassName:n().string});var nr=Object.defineProperty,rr=Object.defineProperties,ir=Object.getOwnPropertyDescriptors,H9=Object.getOwnPropertySymbols,_4=Object.prototype.hasOwnProperty,$4=Object.prototype.propertyIsEnumerable,J2=(u,e,t)=>e in u?nr(u,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):u[e]=t,or=(u,e)=>{for(var t in e||(e={}))_4.call(e,t)&&J2(u,t,e[t]);if(H9)for(var t of H9(e))$4.call(e,t)&&J2(u,t,e[t]);return u},sr=(u,e)=>rr(u,ir(e)),ar=(u,e)=>{var t={};for(var f in u)_4.call(u,f)&&e.indexOf(f)<0&&(t[f]=u[f]);if(u!=null&&H9)for(var f of H9(u))e.indexOf(f)<0&&$4.call(u,f)&&(t[f]=u[f]);return t},lr=(u,e,t)=>(J2(u,typeof e!="symbol"?e+"":e,t),t);const E4=class x1 extends D.Component{static getAddon(e){return R().createElement("div",{className:"tyk-input-group__addon"},e)}constructor(e){super(e);const{value:t}=this.props;this.state={initValue:t,stateValue:t},this.handleOnChange=this.handleOnChange.bind(this)}componentDidUpdate(e){const{isfield:t,value:f,onChange:x}=this.props;!t&&e.value!==f&&this.setState({stateValue:f},()=>{x&&x(f)})}getLabelStyles(){const{labelwidth:e}=this.props,t={};return e&&(t.flexBasis=e),t}getNonLabelWidth(){const{labelwidth:e}=this.props,t={};return e&&(t.flexBasis=`calc(100% - ${e} - 20px)`),t}getInputError(){const{error:e}=this.props;return e&&e!=="true"&&e!=="false"?R().createElement("p",{className:"tyk-form-control__error-message"},e):null}getCssClasses(){const{error:e,theme:t,labelwidth:f,inputgroupaddonleft:x,inputgroupaddonright:P}=this.props,F=["tyk-form-group"],H=t?t.split(" "):[];return H.length&&H.forEach(V=>{F.push(`tyk-form-group--${V}`)}),x&&F.push("tyk-form-group--addon-left"),P&&F.push("tyk-form-group--addon-right"),f&&F.push("tyk-form-group--label-has-width"),e&&F.push("has-error"),F.join(" ")}getInputGroupAddon(){const{inputgroupaddonleft:e,inputgroupaddonright:t}=this.props;return R().createElement("div",{className:"tyk-input-group"},e?x1.getAddon(e):null,this.getInputComponent(),t?x1.getAddon(t):null)}getInputComponent(){const e=this.props,{isfield:t,onChange:f,value:x}=e,P=ar(e,["isfield","onChange","value"]),{stateValue:F}=this.state;return R().createElement("input",sr(or({autoComplete:"off",className:"tyk-form-control"},P),{onChange:this.handleOnChange,value:t?x:F}))}reset(){const{initValue:e}=this.state;this.setState({stateValue:e})}handleOnChange(e){const{onChange:t,isfield:f}=this.props,x=e.target.value;f?t(x):this.setState({stateValue:x},()=>{t&&t(x)})}render(){const{label:e,id:t,inputgroupaddonleft:f,inputgroupaddonright:x,note:P,readOnly:F,value:H}=this.props;return R().createElement("div",{className:this.getCssClasses()},e?R().createElement("label",{htmlFor:t,style:this.getLabelStyles()},e):null,!F&&R().createElement("div",{className:"tyk-form-control__wrapper",style:this.getNonLabelWidth()},f||x?this.getInputGroupAddon():this.getInputComponent(),P?R().createElement("p",{className:"tyk-form-control__help-block"},P):null,this.getInputError()),F&&R().createElement("div",{className:"tyk-form-control--readonly"},H||"-"))}};lr(E4,"propTypes",{disabled:n().bool,readOnly:n().bool,id:n().string,isfield:n().bool,error:n().oneOfType([n().string,n().bool]),inputgroupaddonleft:n().oneOfType([n().element,n().node,n().string]),inputgroupaddonright:n().oneOfType([n().element,n().node,n().string]),label:n().oneOfType([n().string,n().element,n().node]),labelwidth:n().string,name:n().string,note:n().string,onChange:n().func,placeholder:n().string,theme:n().string,value:n().oneOfType([n().number,n().string])});let z9=E4;var cr=Object.defineProperty,ur=Object.defineProperties,hr=Object.getOwnPropertyDescriptors,j9=Object.getOwnPropertySymbols,O4=Object.prototype.hasOwnProperty,T4=Object.prototype.propertyIsEnumerable,R4=(u,e,t)=>e in u?cr(u,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):u[e]=t,Q2=(u,e)=>{for(var t in e||(e={}))O4.call(e,t)&&R4(u,t,e[t]);if(j9)for(var t of j9(e))T4.call(e,t)&&R4(u,t,e[t]);return u},dr=(u,e)=>ur(u,hr(e)),fr=(u,e)=>{var t={};for(var f in u)O4.call(u,f)&&e.indexOf(f)<0&&(t[f]=u[f]);if(u!=null&&j9)for(var f of j9(u))e.indexOf(f)<0&&T4.call(u,f)&&(t[f]=u[f]);return t};const M4=(0,D.forwardRef)((u,e)=>{var t=u,{error:f,onChange:x,readOnly:P,id:F,inputgroupaddonleft:H,inputgroupaddonright:V,label:K,labelwidth:X,note:e0,theme:Z,value:Q,wrapperClassName:i0=""}=t,J=fr(t,["error","onChange","readOnly","id","inputgroupaddonleft","inputgroupaddonright","label","labelwidth","note","theme","value","wrapperClassName"]);const c0=(0,D.useRef)();(0,D.useImperativeHandle)(e,()=>({focus:()=>{c0.current.focus()}}));const r0=I0=>R().createElement("div",{className:"tyk-input-group__addon"},I0),o0=()=>Q2({},X&&{flexBasis:X}),g0=()=>Q2({},X&&{flexBasis:`calc(100% - ${X} - 20px)`}),y0=()=>f&&f!=="true"&&f!=="false"?R().createElement("p",{className:"tyk-form-control__error-message"},f):null,L0=()=>{const I0=[i0,"tyk-form-group"],v0=Z?Z.split(" "):[];return v0.length&&v0.forEach(l0=>{I0.push(`tyk-form-group--${l0}`)}),H&&I0.push("tyk-form-group--addon-left"),V&&I0.push("tyk-form-group--addon-right"),X&&I0.push("tyk-form-group--label-has-width"),f&&I0.push("has-error"),I0.join(" ")},E0=I0=>{x(I0,I0.target.value)},S0=()=>R().createElement("input",dr(Q2({autoComplete:"off",className:"tyk-form-control"},J),{onChange:E0,value:Q,ref:c0})),B0=()=>R().createElement("div",{className:"tyk-input-group"},H?r0(H):null,S0(),V?r0(V):null);return R().createElement("div",{className:L0()},K?R().createElement("label",{htmlFor:F,style:o0()},K):null,!P&&R().createElement("div",{className:"tyk-form-control__wrapper",style:g0()},H||V?B0():S0(),e0?R().createElement("p",{className:"tyk-form-control__help-block"},e0):null,y0()),P&&R().createElement("div",{className:"tyk-form-control--readonly"},Q||"-"))});M4.propTypes={disabled:n().bool,readOnly:n().bool,id:n().string,error:n().oneOfType([n().string,n().bool]),inputgroupaddonleft:n().oneOfType([n().element,n().node,n().string]),inputgroupaddonright:n().oneOfType([n().element,n().node,n().string]),label:n().oneOfType([n().string,n().element,n().node]),labelwidth:n().string,name:n().string,note:n().string,onChange:n().func,placeholder:n().string,theme:n().string,value:n().oneOfType([n().number,n().string]),wrapperClassName:n().string};const L4=M4,P4=(0,D.createContext)();var pr=Object.defineProperty,gr=(u,e,t)=>e in u?pr(u,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):u[e]=t,mr=(u,e,t)=>(gr(u,typeof e!="symbol"?e+"":e,t),t);const vr=(u,e)=>u.detailsDisplayTemplate?u.detailsDisplayTemplate(e):JSON.stringify(e.details),yr=(u,e)=>{const{opened:t}=u;return t[e.id]?R().createElement(_0,{position:"relative"}):null};class I4 extends D.Component{isInSearchValue(e){const{searchValue:t,item:f}=this.props;if(e&&e.length>0){let x=e.slice(0);return x=x.filter(P=>f[P]&&f[P].search(t)>-1),x.length>0}return JSON.stringify(f).search(t)>-1}render(){const{item:e,itemType:t,onChange:f}=this.props;return R().createElement(D.Fragment,null,R().createElement(P4.Consumer,null,x=>this.isInSearchValue(x.fieldsToSearchOn)?R().createElement("li",null,R().createElement("div",null,R().createElement("span",{className:"tyk-multiselect-item__name"},x.itemDisplayTemplate?x.itemDisplayTemplate(e):JSON.stringify(e)),R().createElement("span",{className:"tyk-multiselect-item__controls"},R().createElement(j0,{iconType:t==="normal"?"plus":"minus",iconOnly:!0,onClick:f.bind(null,e),disabled:x.disabled||x.maxSelections&&x.maxSelections===x.nrSelectedItems&&t==="normal"}),R().createElement(j0,{iconType:x.opened[e.id]?"chevron-up":"chevron-down",iconOnly:!0,onClick:x.onGetItemDetails.bind(x.parentContext,e)}))),e.details?R().createElement(m0,{collapsed:!x.opened[e.id],className:"tyk-multiselect-item__details"},vr(x,e)):yr(x,e)):null))}}mr(I4,"propTypes",{item:n().instanceOf(Object),itemType:n().string,searchValue:n().string,onChange:n().func});const br=I4;var wr=Object.defineProperty,Cr=(u,e,t)=>e in u?wr(u,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):u[e]=t,B4=(u,e,t)=>(Cr(u,typeof e!="symbol"?e+"":e,t),t);class F4 extends D.Component{constructor(e){super(e),B4(this,"state",{searchValue:""}),this.searchOnChange=this.searchOnChange.bind(this),this.itemChanged=this.itemChanged.bind(this),this.itemIndex=0,this.itemsListRef=(0,D.createRef)()}getItemIndex(){return this.itemIndex+=1,this.itemIndex}getItemsList(){const{itemsPageNumber:e,itemsNrPages:t,loadMoreItems:f,serverLoad:x}=this.props;return x?R().createElement(b9,{refChild:this.itemsListRef,hasMore:t>e,loadMore:f,pageNumber:e},this.renderListItems()):this.renderListItems()}searchOnChange(e){const{onCustomSearch:t}=this.props;t?t(e):this.setState({searchValue:e})}itemChanged(e){const{items:t,onChange:f}=this.props;let x=(0,W0.fromJS)(t).toJS();x=x.filter(P=>e.id!==P.id),f(x,e)}renderListItems(){const{customSearch:e,items:t,panelType:f,serverLoad:x}=this.props,{searchValue:P}=this.state;return R().createElement("ul",{className:`tyk-multiselect__list${x?"":" tyk-multiselect__list--scroll"}`,ref:this.itemsListRef},t.map(F=>R().createElement(br,{itemType:f,key:this.getItemIndex(),onChange:this.itemChanged,searchValue:e?"":P,item:F})))}render(){const{inputPlaceholder:e,noItemsMessage:t,items:f}=this.props,{searchValue:x}=this.state;return R().createElement("div",{className:"tyk-multiselect__panel"},R().createElement(z9,{inputgroupaddonleft:R().createElement(a,{type:"search"}),name:"search",onChange:this.searchOnChange,placeholder:e,value:x}),f.length?this.getItemsList():R().createElement(D0,{theme:"info"},t))}}B4(F4,"propTypes",{customSearch:n().bool,onCustomSearch:n().func,panelType:n().string,onChange:n().func,items:n().instanceOf(Array),itemsPageNumber:n().number,itemsNrPages:n().number,inputPlaceholder:n().string,loadMoreItems:n().func,noItemsMessage:n().string,serverLoad:n().bool});const N4=F4;var Ar=Object.defineProperty,kr=(u,e,t)=>e in u?Ar(u,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):u[e]=t,D4=(u,e,t)=>(kr(u,typeof e!="symbol"?e+"":e,t),t);const xr=(u,e)=>e.filter(f=>!(u.filter(P=>P.id===f.id).length>0));class W4 extends D.Component{constructor(e){super(e),D4(this,"state",{opened:{}}),this.valueChange=this.valueChange.bind(this),this.itemsChange=this.itemsChange.bind(this)}onGetItemDetails(e){const{getItemDetails:t}=this.props;this.setState(f=>{const x=Object.assign({},f);return x.opened[e.id]=!x.opened[e.id],x},()=>{t&&t(e)})}getMultiselectError(){const{error:e}=this.props;return e&&e!=="true"&&e!=="false"?R().createElement("p",{className:"tyk-form-control__error-message"},e):null}getCssClasses(){const{error:e,wrapperClassName:t=""}=this.props,f=[t,"tyk-multiselect"];return e&&f.push("has-error"),f.join(" ")}itemsChange(e,t){const{value:f,onChange:x}=this.props,P=(0,W0.fromJS)(f).toJS();P.unshift(t),x(P,t,"added")}valueChange(e,t){const{items:f,onChange:x}=this.props;(0,W0.fromJS)(f).toJS().unshift(t),x(e,t,"removed")}render(){const{customSearch:e,entityNamePlural:t,disabled:f,itemDisplayTemplate:x,detailsDisplayTemplate:P,fieldsToSearchOn:F,items:H,itemsPageNumber:V,itemsNrPages:K,loadMoreItems:X,maxSelections:e0,note:Z,value:Q}=this.props,{opened:i0}=this.state;return R().createElement(D.Fragment,null,R().createElement("div",{className:this.getCssClasses()},R().createElement(P4.Provider,{value:{disabled:f,parentContext:this,itemDisplayTemplate:x,detailsDisplayTemplate:P,fieldsToSearchOn:F,maxSelections:e0,nrSelectedItems:Q.length,onGetItemDetails:this.onGetItemDetails,opened:i0}},R().createElement("div",{className:"tyk-multiselect__header"},R().createElement("div",null,Q.length," ","Selected"," ",t),R().createElement("div",null,"Select from existing",t)),R().createElement("div",{className:"tyk-multiselect__panel-wrapper"},R().createElement(N4,{inputPlaceholder:`Search through selected ${t}`,noItemsMessage:`Selected ${t} will show here`,items:Q,onChange:this.valueChange,panelType:"selected"}),R().createElement(N4,{inputPlaceholder:`Search existing ${t}`,noItemsMessage:`No ${t} to display`,entityNamePlural:t,customSearch:!!e,onCustomSearch:e,items:xr(Q,H),onChange:this.itemsChange,serverLoad:!!X,loadMoreItems:X,itemsPageNumber:V,itemsNrPages:K,panelType:"normal"})))),R().createElement("div",null,Z?R().createElement("p",{className:"tyk-form-control__help-block"},Z):null),this.getMultiselectError())}}D4(W4,"propTypes",{customSearch:n().func,disabled:n().bool,error:n().string,entityNamePlural:n().string,items:n().instanceOf(Array),itemDisplayTemplate:n().func,detailsDisplayTemplate:n().func,fieldsToSearchOn:n().instanceOf(Array),onChange:n().func,getItemDetails:n().func,itemsPageNumber:n().number,itemsNrPages:n().number,loadMoreItems:n().func,note:n().string,maxSelections:n().number,value:n().instanceOf(Array),wrapperClassName:n().string});const q2=W4;var Sr=Object.defineProperty,_r=Object.defineProperties,$r=Object.getOwnPropertyDescriptors,V9=Object.getOwnPropertySymbols,H4=Object.prototype.hasOwnProperty,z4=Object.prototype.propertyIsEnumerable,Z2=(u,e,t)=>e in u?Sr(u,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):u[e]=t,j4=(u,e)=>{for(var t in e||(e={}))H4.call(e,t)&&Z2(u,t,e[t]);if(V9)for(var t of V9(e))z4.call(e,t)&&Z2(u,t,e[t]);return u},Er=(u,e)=>_r(u,$r(e)),Or=(u,e)=>{var t={};for(var f in u)H4.call(u,f)&&e.indexOf(f)<0&&(t[f]=u[f]);if(u!=null&&V9)for(var f of V9(u))e.indexOf(f)<0&&z4.call(u,f)&&(t[f]=u[f]);return t},Tr=(u,e,t)=>(Z2(u,typeof e!="symbol"?e+"":e,t),t);class e1 extends D.Component{getCssClasses(){const{inline:e,nospace:t,theme:f="",disabled:x,readOnly:P,wrapperClassName:F=""}=this.props,H=[F];return e?H.push("tyk-radio--inline"):H.push("tyk-radio"),t&&H.push("no-margin"),f.trim()&&H.push(...f.split(" ").map(V=>`tyk-radio--theme-${V}`)),(P||x)&&H.push("tyk-radio--is-disabled"),H.join(" ")}render(){const e=this.props,{input:t,label:f,note:x,disabled:P,readOnly:F}=e,H=Or(e,["input","label","note","disabled","readOnly"]);return R().createElement("div",{className:this.getCssClasses()},R().createElement("label",null,R().createElement("input",Er(j4(j4({},t),H),{type:"radio",disabled:F||P})),f),R().createElement("p",{className:"tyk-form-control__help-block"},x))}}Tr(e1,"propTypes",{disabled:n().bool,readOnly:n().bool,inline:n().bool,theme:n().string,input:n().instanceOf(Object),label:n().oneOfType([n().arrayOf(n().node),n().node,n().element,n().func,n().string]),name:n().string,nospace:n().bool,value:n().string,note:n().oneOfType([n().string,n().element,n().node]),wrapperClassName:n().string});var Rr=Object.defineProperty,Mr=Object.defineProperties,Lr=Object.getOwnPropertyDescriptors,U9=Object.getOwnPropertySymbols,V4=Object.prototype.hasOwnProperty,U4=Object.prototype.propertyIsEnumerable,t1=(u,e,t)=>e in u?Rr(u,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):u[e]=t,Pr=(u,e)=>{for(var t in e||(e={}))V4.call(e,t)&&t1(u,t,e[t]);if(U9)for(var t of U9(e))U4.call(e,t)&&t1(u,t,e[t]);return u},Ir=(u,e)=>Mr(u,Lr(e)),Br=(u,e)=>{var t={};for(var f in u)V4.call(u,f)&&e.indexOf(f)<0&&(t[f]=u[f]);if(u!=null&&U9)for(var f of U9(u))e.indexOf(f)<0&&U4.call(u,f)&&(t[f]=u[f]);return t},Fr=(u,e,t)=>(t1(u,typeof e!="symbol"?e+"":e,t),t);class G9 extends D.Component{constructor(e){super(e);const{value:t}=this.props;this.state={initValue:t,stateValue:t},this.handleOnChange=this.handleOnChange.bind(this),this.handleOnBlur=this.handleOnBlur.bind(this)}componentDidUpdate(e){const{isfield:t,value:f,onChange:x}=this.props;!t&&e.value!==f&&this.setState({stateValue:f},()=>{x&&x(f)})}getSelectComponent(){const e=this.props,{isfield:t,options:f,onChange:x,onBlur:P,value:F}=e,H=Br(e,["isfield","options","onChange","onBlur","value"]),{stateValue:V}=this.state;let K="";return t&&F?K=F:V&&(K=V),R().createElement("select",Ir(Pr({className:"tyk-form-control tyk-select"},H),{onChange:this.handleOnChange,onBlur:this.handleOnBlur,value:K?K.id:""}),f.map(X=>R().createElement("option",{key:X.id,value:X.id},X.name)))}getSelectError(){const{error:e}=this.props;return e&&e!=="true"&&e!=="false"?R().createElement("p",{className:"tyk-form-control__error-message"},e):null}getCssClasses(){const{error:e,labelwidth:t,theme:f,wrapperClassName:x=""}=this.props,P=[x,"tyk-form-group"],F=f?f.split(" "):[];return F.length&&F.forEach(H=>{P.push(`tyk-form-group--${H}`)}),t&&P.push("tyk-form-group--label-has-width"),e&&P.push("has-error"),P.join(" ")}getLabelStyles(){const{labelwidth:e}=this.props,t={};return e&&(t.flexBasis=e),t}getNonLabelWidth(){const{labelwidth:e}=this.props,t={};return e&&(t.flexBasis=`calc(100% - ${e} - 20px)`),t}handleOnBlur(){const{value:e,onBlur:t}=this.props;t&&t(e)}handleOnChange(e){const{onChange:t,isfield:f,options:x}=this.props;let P=null;P=x.filter(F=>F.id===e.target.value),[P]=P,f?t(P.id?P:null):this.setState({stateValue:P},()=>{t(P.id?P:null)})}reset(){const{initValue:e}=this.state;this.setState({stateValue:e})}render(){const{label:e,id:t,note:f,readOnly:x,value:P}=this.props;return R().createElement(D.Fragment,null,R().createElement("div",{className:this.getCssClasses()},e?R().createElement("label",{htmlFor:t,style:this.getLabelStyles()},e):null,!x&&R().createElement("div",{className:"tyk-form-control__wrapper",style:this.getNonLabelWidth()},this.getSelectComponent(),f?R().createElement("p",{className:"tyk-form-control__help-block"},f):null,this.getSelectError()),x&&R().createElement("div",{className:"tyk-form-control--readonly"},P||"-")))}}Fr(G9,"propTypes",{disabled:n().bool,readOnly:n().bool,id:n().string,isfield:n().bool,error:n().oneOfType([n().string,n().bool]),options:n().instanceOf(Array),label:n().oneOfType([n().arrayOf(n().node),n().node,n().element,n().func,n().string]),labelwidth:n().string,name:n().string,note:n().string,onBlur:n().func,onChange:n().func,placeholder:n().string,theme:n().string,value:n().oneOfType([n().string,n().object]),wrapperClassName:n().string});var Nr=Object.defineProperty,Dr=Object.defineProperties,Wr=Object.getOwnPropertyDescriptors,G4=Object.getOwnPropertySymbols,Hr=Object.prototype.hasOwnProperty,zr=Object.prototype.propertyIsEnumerable,K4=(u,e,t)=>e in u?Nr(u,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):u[e]=t,jr=(u,e)=>{for(var t in e||(e={}))Hr.call(e,t)&&K4(u,t,e[t]);if(G4)for(var t of G4(e))zr.call(e,t)&&K4(u,t,e[t]);return u},Vr=(u,e)=>Dr(u,Wr(e));function n1(u){const{checkboxalticon:e,items:t,itemTemplate:f,value:x,noItemsMessage:P="No items in the list",onChange:F,theme:H,primaryKey:V,wrapperClassName:K=""}=u,X=Q=>{const i0=structuredClone(x),J=i0.findIndex(c0=>JSON.stringify(c0)===JSON.stringify(Array.isArray(c0)?Q.target.value.split(","):Q.target.value));if(Q.target.checked&&J===-1){const c0=Q.target.value.split(","),r0=c0.length>1?c0:Q.target.value;i0.push(r0)}else!Q.target.checked&&J>-1&&i0.splice(J,1);F&&F(i0)},e0=Q=>{const i0=[];return e&&i0.push("tyk-selectable-list__item--with-icon"),Q&&i0.push("tyk-selectable-list__item--active"),i0.join(" ")},Z=(Q,i0)=>!!Q.find(J=>JSON.stringify(i0)===JSON.stringify(J));return R().createElement(C2,Vr(jr({},u),{theme:H||"default",className:`tyk-selectable-list ${K}`}),t.length?t.map((Q,i0)=>R().createElement(C2.Item,{key:i0,className:e0(x.includes(Q[V]))},R().createElement("label",null,R().createElement("div",{className:"tyk-selectable-list__item"},f?f(Q):Q.name),R().createElement("input",{type:"checkbox",checked:Z(x,Q[V]),onChange:X.bind(Q),value:Q[V]}),e?R().createElement(a,{type:e}):null))):R().createElement("li",{className:"tyk-selectable-list__no-items-message"},R().createElement(D0,{theme:"info"},P)))}n1.propTypes={items:n().instanceOf(Array),itemTemplate:n().oneOfType([n().node,n().element,n().string,n().func]),value:n().instanceOf(Array),onChange:n().func,primaryKey:n().string,noItemsMessage:n().string,checkboxalticon:n().oneOfType([n().node,n().element,n().string]),theme:n().string,wrapperClassName:n().string},n1.defaultProps={items:[],primaryKey:"id",value:[]};const r1=n1;var Ur=Object.defineProperty,K9=Object.getOwnPropertySymbols,Y4=Object.prototype.hasOwnProperty,X4=Object.prototype.propertyIsEnumerable,J4=(u,e,t)=>e in u?Ur(u,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):u[e]=t,Q4=(u,e)=>{for(var t in e||(e={}))Y4.call(e,t)&&J4(u,t,e[t]);if(K9)for(var t of K9(e))X4.call(e,t)&&J4(u,t,e[t]);return u},Gr=(u,e)=>{var t={};for(var f in u)Y4.call(u,f)&&e.indexOf(f)<0&&(t[f]=u[f]);if(u!=null&&K9)for(var f of K9(u))e.indexOf(f)<0&&X4.call(u,f)&&(t[f]=u[f]);return t};function q4(u){var e=u,{id:t,input:f,label:x,note:P,error:F,theme:H,labelwidth:V,value:K,readOnly:X,wrapperClassName:e0}=e,Z=Gr(e,["id","input","label","note","error","theme","labelwidth","value","readOnly","wrapperClassName"]);const Q=["tyk-form-group",e0,...H?H.split(" ").map(r0=>`tyk-form-group--${r0}`):[],V&&"tyk-form-group--label-has-width",F&&"has-error"].filter(Boolean).join(" "),i0=()=>V?{flexBasis:V}:{},J=()=>V?{flexBasis:`calc(100% - ${V} - 20px)`}:{};function c0(){return F&&F!=="true"&&F!=="false"?R().createElement("p",{className:"tyk-form-control__error-message"},F):null}return R().createElement("div",{className:Q},x?R().createElement("label",{htmlFor:t,style:i0()},x):null,!X&&R().createElement("div",{className:"tyk-form-control__wrapper",style:J()},R().createElement("textarea",Q4(Q4({className:"tyk-form-control"},Z),f),K),P?R().createElement("p",{className:"tyk-form-control__help-block"},P):null,c0()),X&&R().createElement("div",{className:"tyk-form-control--readonly"},K||"-"))}q4.propTypes={disabled:n().bool,readOnly:n().bool,input:n().instanceOf(Object),error:n().string,label:n().oneOfType([n().arrayOf(n().node),n().node,n().element,n().func,n().string]),labelwidth:n().string,name:n().string,note:n().string,onChange:n().func,id:n().string,theme:n().string,value:n().string,wrapperClassName:n().string};const Z4=q4,e3=(0,D.createContext)();class Y9 extends D.Component{static getNotchCssClasses(e){return["tyk-toggle__item-notch",`tyk-toggle__item-notch--${e.type}`].join(" ")}constructor(e){super(e),this.itemRef=(0,D.createRef)()}componentDidMount(){const{context:e,value:t}=this.props;e.value===t&&e.saveSelectedRef(this.itemRef)}componentDidUpdate(e){const{context:t,value:f}=this.props;e.context.value!==t.value&&t.value===f&&t.saveSelectedRef(this.itemRef)}onChange(e){const{context:t,value:f}=this.props,{disabled:x,readOnly:P}=t;x||P||t.onItemSelected(t.type==="single"?!t.value:f,e)}render(){const{context:e,label:t,name:f,value:x}=this.props;return R().createElement("li",{className:`tyk-toggle__item ${e.value&&(e.type==="single"||e.value===x)?"tyk-toggle__item--active":""}`,ref:this.itemRef},R().createElement("label",null,R().createElement("input",{type:e.type==="single"?"checkbox":"radio",name:f,checked:e.value===x,onChange:this.onChange.bind(this),value:x}),t?R().createElement("span",null,t):R().createElement("span",{className:"empty-toggle"}," "),e.type==="single"?R().createElement("span",{className:Y9.getNotchCssClasses(e)}):null))}}Y9.propTypes={context:n().instanceOf(Object),label:n().oneOfType([n().arrayOf(n().node),n().node,n().element,n().func,n().string]),name:n().string,value:n().string};const Kr=Y9;var Yr=Object.defineProperty,Xr=Object.defineProperties,Jr=Object.getOwnPropertyDescriptors,t3=Object.getOwnPropertySymbols,Qr=Object.prototype.hasOwnProperty,qr=Object.prototype.propertyIsEnumerable,n3=(u,e,t)=>e in u?Yr(u,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):u[e]=t,Zr=(u,e)=>{for(var t in e||(e={}))Qr.call(e,t)&&n3(u,t,e[t]);if(t3)for(var t of t3(e))qr.call(e,t)&&n3(u,t,e[t]);return u},ei=(u,e)=>Xr(u,Jr(e));const r3=R().forwardRef((u,e)=>R().createElement(e3.Consumer,null,t=>R().createElement(Kr,ei(Zr({},u),{context:t,ref:e}),u.children)));r3.propTypes={children:n().oneOfType([n().arrayOf(n().node),n().node,n().element,n().string])};const ti=r3;function X9({className:u,disabled:e,readOnly:t,size:f,theme:x,direction:P,onDark:F,wrapperClassName:H="",onChange:V,labelwidth:K,label:X,separated:e0,children:Z,type:Q,value:i0,error:J}){const[c0,r0]=(0,D.useState)(null),o0=(0,D.useRef)(),g0=(0,D.useRef)(),y0=[H,u,"tyk-toggle",`tyk-toggle--disabled-${t||e}`,`tyk-toggle--${f||"md"}`,`tyk-toggle--${x}`,`tyk-toggle--${P}`,F&&"tyk-toggle--on-dark"].filter(Boolean).join(" "),L0=(0,D.useCallback)((I0,v0)=>{V&&V(I0,v0)},[V]),E0=(0,D.useCallback)(()=>K?{flexBasis:K}:{},[K]),S0=(0,D.useCallback)(()=>{if(!c0||e0)return{};const I0=c0.current.offsetWidth,v0=c0.current.getBoundingClientRect().left,l0=g0.current.getBoundingClientRect().left;return{left:`${v0-l0+4}px`,width:`${I0-8}px`}},[c0,e0]),B0=(0,D.useMemo)(()=>({disabled:e,readOnly:t,onItemSelected:L0,saveSelectedRef:r0,separated:e0,type:Q,value:i0}),[e,t,L0,e0,Q,i0]);return R().createElement(R().Fragment,null,R().createElement("div",{className:y0,ref:g0},R().createElement(e3.Provider,{value:B0},X?R().createElement("label",{className:"tyk-toggle__label",style:E0()},X):null,R().createElement("ul",{className:`tyk-toggle__list tyk-toggle__list--${Q} ${J&&"tyk-toggle__list--has-error"} tyk-toggle__list--${e0?"separated":"not-separated"}`},Z,Q==="multiple"&&!e0?R().createElement("li",{className:"tyk-toggle__notch",ref:o0,style:S0()}):null))),J&&R().createElement("p",{className:"tyk-form-control__error-message"},J))}X9.propTypes={children:n().oneOfType([n().arrayOf(n().node),n().node,n().element,n().string]),className:n().string,disabled:n().bool,readOnly:n().bool,error:n().string,onChange:n().func,label:n().oneOfType([n().arrayOf(n().node),n().node,n().element,n().func,n().string]),labelwidth:n().string,theme:n().string,type:n().string,size:n().string,separated:n().bool,direction:n().string,value:n().oneOfType([n().bool,n().string]),onDark:n().bool,wrapperClassName:n().string},X9.defaultProps={separated:!1,theme:"primary",type:"single",direction:"row"},X9.Item=ti;const i1=X9,g5=(u,e)=>{let t=u;return e.forEach(f=>{t=t.replaceAll(f.id,`__TOKEN__${f.id}__TOKEN__`)}),t},H5=(u,e)=>{setTimeout(()=>{u.current.setSelectionRange(e,e)},20)};function i3({setShowOptions:u,tokenValue:e,disabled:t,placeholder:f,tokens:x,dropdownTriggerKey:P,setStringBuilderHeight:F,stringBuilderHeight:H,setTokenString:V,tokenString:K,showOptions:X,options:e0,setTokenValue:Z,inputRef:Q,setInputInFocus:i0,invalidTokenRegex:J,name:c0,contextMaxLength:r0}){const[o0,g0]=(0,D.useState)(!1);(0,D.useEffect)(()=>{if(e){const s0=e.length>50?e.length/5:0;F(Q.current.scrollHeight+s0)}},[]);const y0=s0=>{const{selectionEnd:C0}=s0.target;if(C0===e.length)return;const T0=e.substring(0,C0),$0=e.slice(C0),K0=g5($0,e0);if(K0.startsWith("__TOKEN__")){const J0=K0.split(/__TOKEN__(.*?)__TOKEN__/g).filter(u5=>u5!=="")[0],G0=`${T0}${$0.substr(J0.length)}`,h5=g5(G0,e0);V(h5),H5(Q,C0);return}const R0=`${T0}${$0.substr(1)}`,U0=g5(R0,e0);V(U0),H5(Q,C0)},L0=s0=>{const{selectionEnd:C0}=s0.target;if(C0===e.length){const J0=x[(x==null?void 0:x.length)-2],G0=e.slice(-(J0==null?void 0:J0.length));if(J0===G0){s0.preventDefault(),V(K.slice(0,-`__TOKEN__${G0}__TOKEN__`.length));return}if(e.endsWith(" ")){const h5=e.match(J),u5=e.slice(0,-` ${h5[h5.length-1]} `.length),z5=g5(u5,e0);V(z5);return}V(K.slice(0,-1));return}const T0=e.substring(0,C0),$0=e.slice(C0),K0=g5(T0,e0);if(K0.endsWith("__TOKEN__")){s0.preventDefault();const J0=K0.split(/__TOKEN__(.*?)__TOKEN__/g),G0=J0[J0.length-2],h5=`${T0.slice(0,-G0.length)}${$0}`,u5=g5(h5,e0);V(u5),H5(Q,C0-G0.length);return}const R0=T0.match(J);if(R0!=null&&R0[0]&&R0.length===1){s0.preventDefault();const J0=`${T0.replaceAll(J,"").trim()}${$0}`,G0=g5(J0,e0);V(G0),H5(Q,C0-` ${R0[0]} `.length);return}const U0=`${T0.slice(0,-1)}${$0}`,s5=g5(U0,e0);V(s5),H5(Q,C0-1)},E0=(s0,C0)=>{if(C0-1===e.length){V(`${K}${s0}`);return}const T0=e.slice(0,C0-1)+s0+e.slice(C0-1),$0=g5(T0,e0);V($0)},S0=(s0,C0,T0)=>{const $0=["Delete","Backspace"];if(T0.length>1&&$0.indexOf(T0)===-1)return;const{selectionEnd:K0,selectionStart:R0}=s0.target,U0=T0.length>1?"":T0;if(C0.length>1){const s5=e.substring(0,R0)+U0+e.substring(K0),J0=g5(s5,e0);V(J0),H5(Q,U0.length?R0+1:R0)}},B0=s0=>{const{key:C0}=s0,{selectionEnd:T0,selectionStart:$0,value:K0}=s0.target,R0=K0.substring($0,T0);if(C0===P&&!X){s0.preventDefault(),u(!0);return}if(C0==="Enter"){s0.preventDefault();return}C0==="Backspace"&&(s0.preventDefault(),L0(s0)),C0==="Delete"&&(s0.preventDefault(),y0(s0)),s0.metaKey&&C0==="x"&&V(""),R0&&(s0.preventDefault(),S0(s0,R0,C0))},I0=s0=>{const{target:C0}=s0,{selectionStart:T0,value:$0}=C0;if(X&&u(!1),Z($0),$0&&!o0){const K0=$0.charAt(T0-1);E0(K0,T0)}g0(!1)},v0=s0=>{s0.preventDefault();const{clipboardData:C0}=s0,{selectionStart:T0,selectionEnd:$0}=s0.target;g0(!0);let K0=C0.getData("text/plain");if(T0!==$0){K0=e.slice(0,T0)+K0+e.slice($0,e.length);const U0=g5(K0,e0);V(U0);return}const R0=g5(K0,e0);E0(R0,T0)},l0=()=>{i0(!0)};return R().createElement("textarea",{spellCheck:!1,disabled:t,className:"string-builder__input",value:e,onChange:s0=>I0(s0),onKeyDown:s0=>B0(s0),placeholder:f,name:c0,ref:Q,style:{height:`${H}px`},maxLength:r0,onPaste:v0,onFocus:l0,onBlur:()=>i0(!1)})}i3.propTypes={setShowOptions:n().func,tokenValue:n().string,disabled:n().bool,placeholder:n().string,tokenString:n().string,stringBuilderHeight:n().number,dropdownTriggerKey:n().string,setStringBuilderHeight:n().func,setTokenString:n().func,setTokenValue:n().func,setInputInFocus:n().func,showOptions:n().bool,tokens:n().arrayOf(n().string),options:n().arrayOf(n().shape({id:n().string.isRequired,name:n().string.isRequired,className:n().string,desc:n().string})),inputRef:n().instanceOf(Object),invalidTokenRegex:n().instanceOf(RegExp),name:n().string,contextMaxLength:n().number};const o3=u=>{const{token:e,findInvalidTokenSubstitute:t}=u;return R().createElement("span",{role:"main",onClick:()=>t(e),onKeyDown:()=>{}},R().createElement(R2,{render:"invalid token detected",position:"top"},R().createElement("span",{className:"invalid_token"},`${e}`,R().createElement(a,{type:"exclamation-circle"}))))};o3.propTypes={token:n().string,findInvalidTokenSubstitute:n().func};const ni=o3,s3=u=>{const{tokens:e,options:t,disabled:f,invalidTokenRegex:x,findInvalidTokenSubstitute:P}=u,F=new Set(e).size!==e.length,H=e&&e.map(V=>{if(t){const K=t.find(X=>X.id===V);if(x&&!K){const X=V.replaceAll(" ","").split(x);if((X==null?void 0:X.length)>1)return R().createElement("span",{key:`${V}${F&&Math.random()}`},X.map(e0=>e0.match(x)?R().createElement(ni,{token:e0,findInvalidTokenSubstitute:P}):R().createElement("span",null,`${e0} `)))}if(K)return R().createElement("span",{key:`${V}${F&&Math.random()}`,className:`${K.className||"default-option-name"}`},K.id)}return R().createElement("span",{key:`${V}${F&&Math.random()}`},V)});return R().createElement("div",{className:`string-builder__styled ${f&&"string-builder__disabled"}`},H)};s3.propTypes={tokens:n().arrayOf(n().string),options:n().arrayOf(n().instanceOf(Object)),disabled:n().bool,invalidTokenRegex:n().instanceOf(RegExp),findInvalidTokenSubstitute:n().func};const a3=({options:u,showOptions:e,handleOptionSelection:t,containerRef:f,getThemeClasses:x,setShowOptions:P,allowSearch:F,initialSearchValue:H})=>{const[V,K]=(0,D.useState)(H),[X,e0]=(0,D.useState)(u);return(0,D.useEffect)(()=>{K(H)},[H]),(0,D.useEffect)(()=>{if(V===""){e0(u);return}const Z=u.filter(Q=>Q.name.toLowerCase().includes(V.toLowerCase()));e0(Z)},[V]),(0,D.useEffect)(()=>{e0(u)},[u]),e?R().createElement(R().Fragment,null,R().createElement(w9,{className:`string-builder-dropdown tyk-form-group ${x().join(" ")}`,element:f,size:"matchElement",displayAxis:"vertical"},F&&R().createElement("div",{className:"string-builder-search"},R().createElement("input",{autoFocus:!0,className:"tyk-form-control",value:V,placeholder:"Search parameter",onChange:Z=>{K(Z.target.value)},onKeyDown:Z=>{(Z.key==="Escape"||Z.key==="ArrowUp"||Z.key==="Enter")&&P(!1)}})),R().createElement("ul",{className:"string-builder-list"},X.map(Z=>R().createElement("li",{key:`${Z.id}${Math.random()}`,onMouseDown:()=>t(Z)},R().createElement("span",{className:`url-builder__options_name ${Z.className||"default-option-name"}`},Z.name),Z.desc&&R().createElement("span",{className:"url-builder__options_description"},"\xA0 : \xA0",Z.desc)))))):null};a3.propTypes={options:n().arrayOf(Object),showOptions:n().bool,handleOptionSelection:n().func,getThemeClasses:n().func,setShowOptions:n().func,containerRef:n().instanceOf(Object),allowSearch:n().bool,initialSearchValue:n().string};const l3=u=>{const{note:e,error:t,inputInFocus:f,stringBuilderHeight:x,dropdownTriggerKey:P}=u;return R().createElement("div",{className:"string-builder-footer",style:{marginTop:x?`${x-8}px`:"30px"}},f&&!t&&R().createElement("p",{className:"tyk-form-control__help-block"},R().createElement("span",null,"Enter",R().createElement("span",{className:"string_builder_trigger"},P),"to add any parameter")),e&&R().createElement("p",{className:"tyk-form-control__help-block"},e),t&&t!=="true"&&t!=="false"&&R().createElement("p",{className:"tyk-form-control__error-message"},t))};l3.propTypes={note:n().string,error:n().string,dropdownTriggerKey:n().string,inputInFocus:n().bool,stringBuilderHeight:n().number};function o1(u){const{options:e,onChange:t,value:f,theme:x,error:P,disabled:F,readOnly:H,note:V,label:K,labelwidth:X,placeholder:e0,allowSearch:Z,dropdownTriggerKey:Q,invalidTokenRegex:i0,name:J,wrapperClassName:c0=""}=u,[r0,o0]=(0,D.useState)(f),[g0,y0]=(0,D.useState)(),[L0,E0]=(0,D.useState)(!1),[S0,B0]=(0,D.useState)(g5(f,e)),[I0,v0]=(0,D.useState)(r0.length+5),[l0,s0]=(0,D.useState)([]),[C0,T0]=(0,D.useState)(),[$0,K0]=(0,D.useState)(!1),[R0,U0]=(0,D.useState)(""),[s5,J0]=(0,D.useState)(null),G0=w(S0),h5=(0,D.useRef)(),u5=(0,D.useRef)();(0,D.useEffect)(()=>{t&&t(r0.replaceAll(" ",""))},[r0]),(0,D.useEffect)(()=>{const i5=i0?f.replaceAll(i0," $& "):f;o0(()=>i5),B0(()=>g5(i5,e))},[f]),(0,D.useEffect)(()=>{const i5=S0.split(/__TOKEN__(.*?)__TOKEN__/g),Q0=i5.join("");s0(()=>i5),o0(()=>Q0),T0(()=>Q0)},[S0]),(0,D.useEffect)(()=>{if(I0-3i5),v0(()=>I0+25)}},[S0,r0]);const z5=i5=>{let Q0="";const{selectionStart:b5}=u5.current;G0&&G0!==f&&!s5&&(Q0=G0+r0.split(C0)[1]);let M5="";if(b5!==r0.length&&!s5){const v1=r0.slice(0,b5)+i5.id+r0.slice(b5);M5=g5(v1,e),H5(u5,b5+i5.id.length)}else M5=`${Q0||r0}__TOKEN__${i5.id}__TOKEN__`;s5&&(M5=S0.replace(` ${s5} `,`__TOKEN__${i5.id}__TOKEN__`),J0(()=>null),U0(()=>"")),B0(()=>M5),E0(()=>!1),setTimeout(()=>{u5.current.focus()},20)},q5=()=>(x?x.split(" "):[]).map(Q0=>`tyk-form-group--${Q0}`),c2=()=>["tyk-form-group",...q5(),P&&"has-error",F&&"disabled"].filter(Boolean).join(" "),a5=i5=>{J0(()=>i5),U0(()=>i5.replace(/[^a-zA-Z ]/g,"")),E0(()=>!0)};return R().createElement("div",{className:`string-builder ${c0}`,ref:h5},R().createElement("div",{className:c2()},K&&R().createElement("label",{style:{flexBasis:X||"auto"}},K),!H&&R().createElement("div",{className:"tyk-form-control__wrapper"},R().createElement("div",{className:`tyk-form-control ${F&&"string-builder__disabled"}`,style:{height:`${g0}px`}},R().createElement(i3,{setInputInFocus:K0,setShowOptions:E0,tokenValue:r0,disabled:F,placeholder:e0,allowSearch:Z,tokens:l0,dropdownTriggerKey:Q,setStringBuilderHeight:y0,stringBuilderHeight:g0,setTokenString:B0,tokenString:S0,showOptions:L0,options:e,setTokenValue:o0,inputRef:u5,invalidTokenRegex:i0,name:J,contextMaxLength:I0,setContentMaxLength:v0}),R().createElement(s3,{tokens:l0,options:e,disabled:F,invalidTokenRegex:i0,findInvalidTokenSubstitute:a5}),R().createElement(a3,{showOptions:L0,options:e,handleOptionSelection:z5,containerRef:h5,getThemeClasses:q5,setShowOptions:E0,allowSearch:Z,initialSearchValue:R0}),R().createElement(l3,{error:P,note:V,inputInFocus:$0,stringBuilderHeight:g0,dropdownTriggerKey:Q}))),H&&R().createElement("div",{className:"tyk-form-control--readonly"},f||"-")))}o1.propTypes={options:n().arrayOf(n().shape({id:n().string.isRequired,name:n().string.isRequired,className:n().string,desc:n().string})),onChange:n().func,value:n().string,disabled:n().bool,readOnly:n().bool,error:n().string,theme:n().string,note:n().string,label:n().oneOfType([n().arrayOf(n().node),n().node,n().element,n().func,n().string]),labelwidth:n().string,placeholder:n().string,dropdownTriggerKey:n().string,invalidTokenRegex:n().instanceOf(RegExp),allowSearch:n().bool,name:n().string,wrapperClassName:n().string},o1.defaultProps={onChange:null,value:"",options:[],theme:"default"};const c3=o1,u3={FORM_DEBOUNCE:200};function ri(u,e){u3[u]=e}const s1=u3;var ii=Object.defineProperty,oi=Object.defineProperties,si=Object.getOwnPropertyDescriptors,J9=Object.getOwnPropertySymbols,h3=Object.prototype.hasOwnProperty,d3=Object.prototype.propertyIsEnumerable,f3=(u,e,t)=>e in u?ii(u,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):u[e]=t,Q5=(u,e)=>{for(var t in e||(e={}))h3.call(e,t)&&f3(u,t,e[t]);if(J9)for(var t of J9(e))d3.call(e,t)&&f3(u,t,e[t]);return u},p3=(u,e)=>oi(u,si(e)),ai=(u,e)=>{var t={};for(var f in u)h3.call(u,f)&&e.indexOf(f)<0&&(t[f]=u[f]);if(u!=null&&J9)for(var f of J9(u))e.indexOf(f)<0&&d3.call(u,f)&&(t[f]=u[f]);return t};function g3(u,e){return e.split(/[\][.]/).filter(Boolean).reduce((f,x)=>f&&f[x],u)}function li(u,e){let t;return(...f)=>{clearTimeout(t),t=setTimeout(u,e,...f)}}const c5=(u,e)=>t=>{var f=t,{field:x,form:P}=f,F=ai(f,["field","form"]),H;const V=typeof s1.FORM_DEBOUNCE=="number"?s1.FORM_DEBOUNCE:200,[K,X]=(0,D.useState)(x.value),e0=Q5({getOnChangeProps:()=>({}),hasIsFieldProp:!1},e),Z=(0,D.useCallback)((()=>{const o0=y0=>y0();if(F.debounce===!1||s1.FORM_DEBOUNCE===!1&&!F.debounce)return o0;const g0=typeof F.debounce=="number"?F.debounce:V;return li(o0,g0)})(),[]),Q=o0=>o0&&o0.target?o0.target.nodeName==="INPUT"&&(o0.target.type==="checkbox"||o0.target.type==="radio")?o0.target.checked:o0.target.value:o0,i0=o0=>{const g0=Q(o0),y0=e0.getOnChangeProps(g0,x,P,F),L0=y0.value||F.value||g0;Z(()=>{typeof F.onChange=="function"&&F.onChange(L0),x.onChange({target:Q5({name:x.name,value:L0},y0)})}),X(L0)},J=(g3(P.touched,x.name)||!!P.submitCount)&&g3(P.errors,x.name),c0=typeof J=="string"?J:"";(0,D.useEffect)(()=>{X(x.value)},[x.value]),(H=P.status)!=null&&H.disabled&&(F.disabled=!0);const r0=Q5({},F);return delete r0.debounce,R().createElement(u,p3(Q5(Q5(p3(Q5({},x),{error:c0}),e0.hasIsFieldProp?{isfield:!0}:{}),r0),{checked:typeof F.value=="string"?x.value===F.value:x.value,onChange:i0,value:K,input:{value:K,onChange:i0}}))},ci=c5($9,{getOnChangeProps:u=>({checked:u})}),ui=c5(D2),hi=c5(j2),di=c5(V2),fi=c5(U2),pi=c5(Y2,{getOnChangeProps:u=>({value:u||[]})}),gi=c5(k4),mi=c5(W9),vi=c5(z9,{hasIsFieldProp:!0}),yi=c5(L4),bi=c5(q2),wi=c5(e1,{getOnChangeProps:(u,e,t,f)=>({checked:u===f.value,value:f.value})}),Ci=c5(G9,{hasIsFieldProp:!0}),Ai=c5(r1),ki=c5(Z4),xi=c5(i1),Si=c5(c3);var _i=Object.defineProperty,$i=Object.defineProperties,Ei=Object.getOwnPropertyDescriptors,Q9=Object.getOwnPropertySymbols,m3=Object.prototype.hasOwnProperty,v3=Object.prototype.propertyIsEnumerable,a1=(u,e,t)=>e in u?_i(u,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):u[e]=t,y3=(u,e)=>{for(var t in e||(e={}))m3.call(e,t)&&a1(u,t,e[t]);if(Q9)for(var t of Q9(e))v3.call(e,t)&&a1(u,t,e[t]);return u},Oi=(u,e)=>$i(u,Ei(e)),Ti=(u,e)=>{var t={};for(var f in u)m3.call(u,f)&&e.indexOf(f)<0&&(t[f]=u[f]);if(u!=null&&Q9)for(var f of Q9(u))e.indexOf(f)<0&&v3.call(u,f)&&(t[f]=u[f]);return t},Ri=(u,e,t)=>(a1(u,typeof e!="symbol"?e+"":e,t),t);class b3 extends D.Component{constructor(e){super(e),this.handleOnChange=this.handleOnChange.bind(this)}getInputError(){const{meta:e,validationmessages:t}=this.props,{touched:f,error:x,warning:P}=e;let F=null;return f&&x&&t[x]?F=t[x]:f&&P&&(F="warning"),F}handleOnChange(e){const{input:t}=this.prop,{onChange:f}=t;f((0,W0.fromJS)(e))}render(){const e=this.props,{input:t}=e,f=Ti(e,["input"]);return R().createElement(D2,Oi(y3(y3({},t),f),{error:this.getInputError()}))}}Ri(b3,"propTypes",{input:n().instanceOf(Object),meta:n().instanceOf(Object),validationmessages:n().instanceOf(Object)});var Mi=Object.defineProperty,Li=Object.defineProperties,Pi=Object.getOwnPropertyDescriptors,q9=Object.getOwnPropertySymbols,w3=Object.prototype.hasOwnProperty,C3=Object.prototype.propertyIsEnumerable,l1=(u,e,t)=>e in u?Mi(u,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):u[e]=t,Ii=(u,e)=>{for(var t in e||(e={}))w3.call(e,t)&&l1(u,t,e[t]);if(q9)for(var t of q9(e))C3.call(e,t)&&l1(u,t,e[t]);return u},Bi=(u,e)=>Li(u,Pi(e)),Fi=(u,e)=>{var t={};for(var f in u)w3.call(u,f)&&e.indexOf(f)<0&&(t[f]=u[f]);if(u!=null&&q9)for(var f of q9(u))e.indexOf(f)<0&&C3.call(u,f)&&(t[f]=u[f]);return t},Ni=(u,e,t)=>(l1(u,typeof e!="symbol"?e+"":e,t),t);class A3 extends D.Component{constructor(e){super(e),this.handleOnChange=this.handleOnChange.bind(this)}getComboboxError(){const{meta:e,validationmessages:t}=this.props,{touched:f,error:x,warning:P}=e;let F=null;return f&&x&&t[x]?F=t[x]:f&&P&&(F="warning"),F}handleOnChange(e){const{input:t}=this.props,{onChange:f}=t;f((0,W0.fromJS)(e))}render(){const e=Fi(this.props,[]);return R().createElement(j2,Bi(Ii({},e),{onChange:this.handleOnChange,value:e.input.value?e.input.value.toJS():e.input.value,error:this.getComboboxError()}))}}Ni(A3,"propTypes",{meta:n().instanceOf(Object),input:n().instanceOf(Object),validationmessages:n().instanceOf(Object)});var Di=Object.defineProperty,Wi=Object.defineProperties,Hi=Object.getOwnPropertyDescriptors,Z9=Object.getOwnPropertySymbols,k3=Object.prototype.hasOwnProperty,x3=Object.prototype.propertyIsEnumerable,c1=(u,e,t)=>e in u?Di(u,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):u[e]=t,zi=(u,e)=>{for(var t in e||(e={}))k3.call(e,t)&&c1(u,t,e[t]);if(Z9)for(var t of Z9(e))x3.call(e,t)&&c1(u,t,e[t]);return u},ji=(u,e)=>Wi(u,Hi(e)),Vi=(u,e)=>{var t={};for(var f in u)k3.call(u,f)&&e.indexOf(f)<0&&(t[f]=u[f]);if(u!=null&&Z9)for(var f of Z9(u))e.indexOf(f)<0&&x3.call(u,f)&&(t[f]=u[f]);return t},Ui=(u,e,t)=>(c1(u,typeof e!="symbol"?e+"":e,t),t);class S3 extends D.Component{constructor(e){super(e),this.handleOnChange=this.handleOnChange.bind(this)}handleOnChange(e){const{input:t}=this.props,{onChange:f}=t;f((0,W0.fromJS)(e))}render(){const e=this.props,{children:t,input:f}=e,x=Vi(e,["children","input"]);return R().createElement(B7,ji(zi({},x),{onSelect:this.handleOnChange,selectedItem:f.value}),t)}}Ui(S3,"propTypes",{children:n().oneOfType([n().arrayOf(n().node),n().node,n().element,n().string]),input:n().instanceOf(Object)});var Gi=Object.defineProperty,Ki=Object.defineProperties,Yi=Object.getOwnPropertyDescriptors,e2=Object.getOwnPropertySymbols,_3=Object.prototype.hasOwnProperty,$3=Object.prototype.propertyIsEnumerable,E3=(u,e,t)=>e in u?Gi(u,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):u[e]=t,O3=(u,e)=>{for(var t in e||(e={}))_3.call(e,t)&&E3(u,t,e[t]);if(e2)for(var t of e2(e))$3.call(e,t)&&E3(u,t,e[t]);return u},Xi=(u,e)=>Ki(u,Yi(e)),Ji=(u,e)=>{var t={};for(var f in u)_3.call(u,f)&&e.indexOf(f)<0&&(t[f]=u[f]);if(u!=null&&e2)for(var f of e2(u))e.indexOf(f)<0&&$3.call(u,f)&&(t[f]=u[f]);return t};const T3=u=>{const e=u,{input:t}=e,f=Ji(e,["input"]);return R().createElement(S9,Xi(O3(O3({},t),f),{onChange:t.onChange,value:t.value?t.value:0}))};T3.propTypes={input:n().instanceOf(Object)};const Qi=T3;var qi=Object.defineProperty,Zi=Object.defineProperties,eo=Object.getOwnPropertyDescriptors,R3=Object.getOwnPropertySymbols,to=Object.prototype.hasOwnProperty,no=Object.prototype.propertyIsEnumerable,M3=(u,e,t)=>e in u?qi(u,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):u[e]=t,ro=(u,e)=>{for(var t in e||(e={}))to.call(e,t)&&M3(u,t,e[t]);if(R3)for(var t of R3(e))no.call(e,t)&&M3(u,t,e[t]);return u},io=(u,e)=>Zi(u,eo(e));const L3=u=>{const{input:e,meta:t,validationmessages:f}=u,x=()=>{const{touched:F,error:H,warning:V}=t;let K=null;return F&&H&&f[H]?K=f[H]:F&&V&&(K="warning"),K},P=F=>{const{onChange:H}=e;H((0,W0.fromJS)(F))};return R().createElement(V2,io(ro({},u),{onChange:P,value:e.value?e.value.toJS():e.value,error:x()}))};L3.propTypes={meta:n().instanceOf(Object),input:n().instanceOf(Object),validationmessages:n().instanceOf(Object)};const oo=L3;var so=Object.defineProperty,ao=Object.defineProperties,lo=Object.getOwnPropertyDescriptors,t2=Object.getOwnPropertySymbols,P3=Object.prototype.hasOwnProperty,I3=Object.prototype.propertyIsEnumerable,B3=(u,e,t)=>e in u?so(u,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):u[e]=t,co=(u,e)=>{for(var t in e||(e={}))P3.call(e,t)&&B3(u,t,e[t]);if(t2)for(var t of t2(e))I3.call(e,t)&&B3(u,t,e[t]);return u},uo=(u,e)=>ao(u,lo(e)),ho=(u,e)=>{var t={};for(var f in u)P3.call(u,f)&&e.indexOf(f)<0&&(t[f]=u[f]);if(u!=null&&t2)for(var f of t2(u))e.indexOf(f)<0&&I3.call(u,f)&&(t[f]=u[f]);return t};const F3=u=>{const e=u,{input:t,meta:f,validationmessages:x}=e,P=ho(e,["input","meta","validationmessages"]),F=()=>{const{touched:V,error:K}=f;let X=null;return V&&K&&x[K]&&(X=x[K]),X},H=V=>{const{onChange:K}=t;K((0,W0.fromJS)(V))};return R().createElement(U2,uo(co({},P),{onChange:H,value:t.value?t.value.toJS():t.value,error:F()}))};F3.propTypes={meta:n().instanceOf(Object),input:n().instanceOf(Object),validationmessages:n().instanceOf(Object)};const fo=F3;var po=Object.defineProperty,go=Object.defineProperties,mo=Object.getOwnPropertyDescriptors,n2=Object.getOwnPropertySymbols,N3=Object.prototype.hasOwnProperty,D3=Object.prototype.propertyIsEnumerable,u1=(u,e,t)=>e in u?po(u,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):u[e]=t,vo=(u,e)=>{for(var t in e||(e={}))N3.call(e,t)&&u1(u,t,e[t]);if(n2)for(var t of n2(e))D3.call(e,t)&&u1(u,t,e[t]);return u},yo=(u,e)=>go(u,mo(e)),bo=(u,e)=>{var t={};for(var f in u)N3.call(u,f)&&e.indexOf(f)<0&&(t[f]=u[f]);if(u!=null&&n2)for(var f of n2(u))e.indexOf(f)<0&&D3.call(u,f)&&(t[f]=u[f]);return t},wo=(u,e,t)=>(u1(u,typeof e!="symbol"?e+"":e,t),t);class W3 extends D.Component{constructor(e){super(e),this.handleOnChange=this.handleOnChange.bind(this)}getEditableListError(){const{meta:e,validationmessages:t}=this.props,{touched:f,error:x}=e;let P=null;return f&&x&&t[x]&&(P=t[x]),P}handleOnChange(e){const{input:t}=this.props,{onChange:f}=t;f((0,W0.fromJS)(e))}render(){const e=bo(this.props,[]);return R().createElement(Y2,yo(vo({},e),{onChange:this.handleOnChange,value:e.input.value?e.input.value.toJS():null,error:this.getEditableListError()}))}}wo(W3,"propTypes",{input:n().instanceOf(Object),meta:n().instanceOf(Object),validationmessages:n().instanceOf(Object)});var Co=Object.defineProperty,Ao=Object.defineProperties,ko=Object.getOwnPropertyDescriptors,r2=Object.getOwnPropertySymbols,H3=Object.prototype.hasOwnProperty,z3=Object.prototype.propertyIsEnumerable,h1=(u,e,t)=>e in u?Co(u,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):u[e]=t,j3=(u,e)=>{for(var t in e||(e={}))H3.call(e,t)&&h1(u,t,e[t]);if(r2)for(var t of r2(e))z3.call(e,t)&&h1(u,t,e[t]);return u},xo=(u,e)=>Ao(u,ko(e)),So=(u,e)=>{var t={};for(var f in u)H3.call(u,f)&&e.indexOf(f)<0&&(t[f]=u[f]);if(u!=null&&r2)for(var f of r2(u))e.indexOf(f)<0&&z3.call(u,f)&&(t[f]=u[f]);return t},_o=(u,e,t)=>(h1(u,typeof e!="symbol"?e+"":e,t),t);class V3 extends D.Component{getInputError(){const{meta:e,validationmessages:t}=this.props,{touched:f,error:x,warning:P}=e;let F=null;return f&&x&&t[x]?F=t[x]:f&&P&&(F="warning"),F}render(){const e=this.props,{input:t}=e,f=So(e,["input"]);return R().createElement(W9,xo(j3(j3({},t),f),{error:this.getInputError()}))}}_o(V3,"propTypes",{input:n().instanceOf(Object),meta:n().instanceOf(Object),validationmessages:n().instanceOf(Object)});var $o=Object.defineProperty,Eo=Object.defineProperties,Oo=Object.getOwnPropertyDescriptors,i2=Object.getOwnPropertySymbols,U3=Object.prototype.hasOwnProperty,G3=Object.prototype.propertyIsEnumerable,d1=(u,e,t)=>e in u?$o(u,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):u[e]=t,K3=(u,e)=>{for(var t in e||(e={}))U3.call(e,t)&&d1(u,t,e[t]);if(i2)for(var t of i2(e))G3.call(e,t)&&d1(u,t,e[t]);return u},To=(u,e)=>Eo(u,Oo(e)),Ro=(u,e)=>{var t={};for(var f in u)U3.call(u,f)&&e.indexOf(f)<0&&(t[f]=u[f]);if(u!=null&&i2)for(var f of i2(u))e.indexOf(f)<0&&G3.call(u,f)&&(t[f]=u[f]);return t},Mo=(u,e,t)=>(d1(u,typeof e!="symbol"?e+"":e,t),t);class Y3 extends D.Component{getInputError(){const{meta:e,validationmessages:t}=this.props,{touched:f,error:x,warning:P}=e;let F=null;return f&&x&&t[x]?F=t[x]:f&&P&&(F="warning"),F}render(){const e=this.props,{input:t}=e,f=Ro(e,["input"]);return R().createElement(z9,To(K3(K3({},t),f),{isfield:!0,error:this.getInputError()}))}}Mo(Y3,"propTypes",{meta:n().instanceOf(Object),input:n().instanceOf(Object),validationmessages:n().instanceOf(Object)});var Lo=Object.defineProperty,Po=Object.defineProperties,Io=Object.getOwnPropertyDescriptors,o2=Object.getOwnPropertySymbols,X3=Object.prototype.hasOwnProperty,J3=Object.prototype.propertyIsEnumerable,f1=(u,e,t)=>e in u?Lo(u,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):u[e]=t,Bo=(u,e)=>{for(var t in e||(e={}))X3.call(e,t)&&f1(u,t,e[t]);if(o2)for(var t of o2(e))J3.call(e,t)&&f1(u,t,e[t]);return u},Fo=(u,e)=>Po(u,Io(e)),No=(u,e)=>{var t={};for(var f in u)X3.call(u,f)&&e.indexOf(f)<0&&(t[f]=u[f]);if(u!=null&&o2)for(var f of o2(u))e.indexOf(f)<0&&J3.call(u,f)&&(t[f]=u[f]);return t},Do=(u,e,t)=>(f1(u,typeof e!="symbol"?e+"":e,t),t);class Q3 extends D.Component{constructor(e){super(e),this.handleOnChange=this.handleOnChange.bind(this)}getMultiselectError(){const{meta:e,validationmessages:t}=this.props,{touched:f,error:x,warning:P}=e;let F=null;return f&&x&&t[x]?F=t[x]:f&&P&&(F="warning"),F}handleOnChange(e){const{input:t}=this.props,{onChange:f}=t;f((0,W0.fromJS)(e))}render(){const e=No(this.props,[]);return R().createElement(q2,Fo(Bo({},e),{onChange:this.handleOnChange,value:e.input.value?e.input.value.toJS():e.input.value,error:this.getMultiselectError()}))}}Do(Q3,"propTypes",{input:n().instanceOf(Object),meta:n().instanceOf(Object),validationmessages:n().instanceOf(Object)});var Wo=Object.defineProperty,Ho=Object.defineProperties,zo=Object.getOwnPropertyDescriptors,s2=Object.getOwnPropertySymbols,q3=Object.prototype.hasOwnProperty,Z3=Object.prototype.propertyIsEnumerable,p1=(u,e,t)=>e in u?Wo(u,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):u[e]=t,e6=(u,e)=>{for(var t in e||(e={}))q3.call(e,t)&&p1(u,t,e[t]);if(s2)for(var t of s2(e))Z3.call(e,t)&&p1(u,t,e[t]);return u},jo=(u,e)=>Ho(u,zo(e)),Vo=(u,e)=>{var t={};for(var f in u)q3.call(u,f)&&e.indexOf(f)<0&&(t[f]=u[f]);if(u!=null&&s2)for(var f of s2(u))e.indexOf(f)<0&&Z3.call(u,f)&&(t[f]=u[f]);return t},Uo=(u,e,t)=>(p1(u,typeof e!="symbol"?e+"":e,t),t);class t6 extends D.Component{constructor(e){super(e),this.handleEvent=this.handleEvent.bind(this)}getSelectError(){const{meta:e,validationmessages:t}=this.props,{touched:f,error:x,warning:P}=e;let F=null;return f&&x&&t[x]?F=t[x]:f&&P&&(F="warning"),F}handleEvent(e){const{input:t}=this.props,{onChange:f,value:x}=t;f((0,W0.fromJS)(e!==void 0?e:x))}render(){const e=this.props,{input:t}=e,f=Vo(e,["input"]);return R().createElement(G9,jo(e6(e6({},t),f),{isfield:!0,error:this.getSelectError(),onChange:this.handleEvent,onBlur:this.handleEvent,value:t.value?t.value.toJS():t.value}))}}Uo(t6,"propTypes",{input:n().instanceOf(Object),meta:n().instanceOf(Object),validationmessages:n().instanceOf(Object)});var Go=Object.defineProperty,Ko=Object.defineProperties,Yo=Object.getOwnPropertyDescriptors,a2=Object.getOwnPropertySymbols,n6=Object.prototype.hasOwnProperty,r6=Object.prototype.propertyIsEnumerable,g1=(u,e,t)=>e in u?Go(u,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):u[e]=t,Xo=(u,e)=>{for(var t in e||(e={}))n6.call(e,t)&&g1(u,t,e[t]);if(a2)for(var t of a2(e))r6.call(e,t)&&g1(u,t,e[t]);return u},Jo=(u,e)=>Ko(u,Yo(e)),Qo=(u,e)=>{var t={};for(var f in u)n6.call(u,f)&&e.indexOf(f)<0&&(t[f]=u[f]);if(u!=null&&a2)for(var f of a2(u))e.indexOf(f)<0&&r6.call(u,f)&&(t[f]=u[f]);return t},qo=(u,e,t)=>(g1(u,typeof e!="symbol"?e+"":e,t),t);class i6 extends D.Component{constructor(e){super(e),this.handleOnChange=this.handleOnChange.bind(this)}handleOnChange(e){const{input:t}=this.props;t.onChange((0,W0.fromJS)(e))}render(){const e=this.props,{children:t}=e,f=Qo(e,["children"]);return R().createElement(r1,Jo(Xo({},f),{onChange:this.handleOnChange,value:f.input.value?f.input.value.toJS():[]}))}}qo(i6,"propTypes",{children:n().oneOfType([n().node]),onChange:n().func,input:n().instanceOf(Object)});var Zo=Object.defineProperty,es=Object.defineProperties,ts=Object.getOwnPropertyDescriptors,l2=Object.getOwnPropertySymbols,o6=Object.prototype.hasOwnProperty,s6=Object.prototype.propertyIsEnumerable,m1=(u,e,t)=>e in u?Zo(u,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):u[e]=t,ns=(u,e)=>{for(var t in e||(e={}))o6.call(e,t)&&m1(u,t,e[t]);if(l2)for(var t of l2(e))s6.call(e,t)&&m1(u,t,e[t]);return u},rs=(u,e)=>es(u,ts(e)),is=(u,e)=>{var t={};for(var f in u)o6.call(u,f)&&e.indexOf(f)<0&&(t[f]=u[f]);if(u!=null&&l2)for(var f of l2(u))e.indexOf(f)<0&&s6.call(u,f)&&(t[f]=u[f]);return t},os=(u,e,t)=>(m1(u,typeof e!="symbol"?e+"":e,t),t);class a6 extends D.Component{constructor(e){super(e),this.handleOnChange=this.handleOnChange.bind(this)}handleOnChange(e){const{input:t}=this.props;t.onChange((0,W0.fromJS)(e))}render(){const e=this.props,{children:t}=e,f=is(e,["children"]);return R().createElement(i1,rs(ns({},f),{onChange:this.handleOnChange,value:f.input.value}),t)}}os(a6,"propTypes",{children:n().oneOfType([n().node]),onChange:n().func,input:n().instanceOf(Object)})})(),m6.exports=p2})()});gs();})(); + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +})(); + +module.exports = __webpack_exports__; +/******/ })() +; //# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/lib/index.js.map b/lib/index.js.map index 351006e7..a8363772 100644 --- a/lib/index.js.map +++ b/lib/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","mappings":"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EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,IAAK,GAAI,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,KAAM,GAAI,EAAG,GAAI,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,IAAK,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,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AAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;A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,2BACP,MAAO,+CACX,EAAG,CACC,MAAO,8BACP,MAAO,IACX,EAAG,CACC,MAAO,2BACP,MAAO,QACP,KAAM,uBACV,EAAG,CACC,MAAO,QACP,MAAO,IACP,KAAM,UACV,EAAG,CACC,aAAc,eAClB,CACJ,EACA,sBAAyB,CACrB,CACI,MAAO,oCACP,MAAO,2CACX,EAAG,CACC,MAAO,2BACP,MAAO,IACP,KAAM,OACV,EAAG,CACC,MAAO,2BACP,MAAO,GACX,EAAG,CACC,MAAO,QACP,MAAO,IACP,KAAM,UACV,EAAG,CACC,aAAc,+BAClB,CACJ,EACA,kBAAqB,CACjB,CACI,MAAO,SACP,MAAO,SACP,KAAM,CACF,CACI,MAAO,SACP,MAAO,MACP,KAAM,KACV,EAAG,CACC,QAAS,SACb,CACJ,CACJ,EAAG,CACC,MAAO,SACP,MAAO,SACP,KAAM,CACF,CACI,MAAO,SACP,MAAO,MACP,KAAM,KACV,EAAG,CACC,QAAS,UACb,CACJ,CACJ,EAAG,CACC,MAAO,oBACP,MAAO,6BACX,EAAG,CACC,MAAO,mBACP,MAAO,8CACX,EAAG,CACC,MAAO,mBACP,MAAO,8CACX,EAAG,CACC,MAAO,uBACP,MAAO,IACP,KAAM,oBACV,EAAG,CACC,MAAO,OACP,MAAO,MACX,EAAG,CACC,MAAO,uBACP,MAAO,GACX,EAAG,CACC,MAAO,QACP,MAAO,GACP,KAAM,UACV,CACJ,EACA,mBAAsB,CAClBA,EAAS,oBAAoB,EAC7B,CACI,MAAO,qBACP,MAAOJ,CACX,EAAG,CACC,MAAO,uBACP,MAAO,GACX,EAAG,CACC,MAAO,OACP,MAAO,MACX,EAAG,CACC,MAAO,uBACP,MAAO,GACX,EAAG,CACC,MAAO,QACP,MAAO,GACP,KAAM,UACV,CACJ,EACA,SAAY,CACR,CACI,MAAO,2BACP,MAAOG,CACX,EAAG,CACC,MAAO,SACP,MAAO,QACP,eAAgB,EACpB,EAAG,CACC,MAAO,SACP,MAAO,MACP,KAAM,UACV,EAAG,CACC,aAAc,QAClB,CACJ,EACA,QAAW,CACP,CACI,MAAO,2BACP,MAAOA,CACX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CV,EAAG,CACC,MAAO,SACP,MAAO,MACP,KAAM,OACV,EAAG,CACC,aAAc,QAClB,CAAC,EACL,QAAW,CAAC,CACJ,MAAO,2BACP,MAAOA,CACX,EAAG,CACC,MAAO,SACP,MAAO,QACP,KAAM,SACV,EAAG,CACC,MAAO,SACP,MAAO,MACP,KAAM,OACV,EAAG,CACC,aAAc,QAClB,CAAC,EACL,aAAgB,CAAC,CACT,MAAO,SACP,MAAO,OACP,KAAM,OACV,EAAG,CACC,aAAc,QAClB,CAAC,EACL,YAAe,CAAC,CACR,MAAO,SACP,MAAO,OACP,KAAM,OACV,EAAG,CACC,aAAc,QAClB,CAAC,EACL,YAAe,CAAC,CACR,MAAO,SACP,MAAO,QACP,KAAM,aACV,EAAG,CACC,MAAO,SACP,MAAO,MACP,KAAM,OACV,EAAG,CACC,aAAc,QAClB,CAAC,EACL,WAAc,CAAC,CACP,MAAO,SACP,MAAO,QACP,KAAM,YACV,EAAG,CACC,MAAO,SACP,MAAO,MACP,KAAM,OACV,EAAG,CACC,aAAc,QAClB,CAAC,EACL,WAAc,CAAC,CACP,MAAO,2BACP,MAAOA,CACX,EAAG,CACC,MAAO,SACP,MAAO,OACP,KAAM,OACV,EAAG,CACC,MAAO,eACP,MAAO,IACP,KAAM,kBACV,EAAG,CACC,aAAc,QAClB,CAAC,EACL,UAAa,CAAC,CACN,MAAO,2BACP,MAAOA,CACX,EAAG,CACC,MAAO,SACP,MAAO,OACP,KAAM,OACV,EAAG,CACC,MAAO,eACP,MAAO,IACP,KAAM,kBACV,EAAG,CACC,aAAc,QAClB,CAAC,EACL,UAAa,CAAC,CACN,MAAO,2BACP,MAAOA,CACX,EAAG,CACC,MAAO,SACP,MAAO,QACP,KAAM,WACV,EAAG,CACC,MAAO,SACP,MAAO,MACP,KAAM,OACV,EAAG,CACC,MAAO,eACP,MAAO,IACP,KAAM,kBACV,EAAG,CACC,aAAc,QAClB,CAAC,EACL,SAAY,CAAC,CACL,MAAO,2BACP,MAAOA,CACX,EAAG,CACC,MAAO,SACP,MAAO,MACP,KAAM,OACV,EAAG,CACC,MAAO,eACP,MAAO,IACP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","sources":["webpack://@tyk-technologies/tyk-ui/./node_modules/ace-builds/src-noconflict/ace.js","webpack://@tyk-technologies/tyk-ui/./node_modules/ace-builds/src-noconflict/ext-beautify.js","webpack://@tyk-technologies/tyk-ui/./node_modules/ace-builds/src-noconflict/ext-searchbox.js","webpack://@tyk-technologies/tyk-ui/./node_modules/ace-builds/src-noconflict/mode-css.js","webpack://@tyk-technologies/tyk-ui/./node_modules/ace-builds/src-noconflict/mode-golang.js","webpack://@tyk-technologies/tyk-ui/./node_modules/ace-builds/src-noconflict/mode-javascript.js","webpack://@tyk-technologies/tyk-ui/./node_modules/ace-builds/src-noconflict/mode-json.js","webpack://@tyk-technologies/tyk-ui/./node_modules/ace-builds/src-noconflict/mode-jsx.js","webpack://@tyk-technologies/tyk-ui/./node_modules/ace-builds/src-noconflict/mode-python.js","webpack://@tyk-technologies/tyk-ui/./node_modules/ace-builds/src-noconflict/mode-xml.js","webpack://@tyk-technologies/tyk-ui/./node_modules/ace-builds/src-noconflict/theme-github.js","webpack://@tyk-technologies/tyk-ui/./node_modules/flatpickr/dist/flatpickr.min.css","webpack://@tyk-technologies/tyk-ui/./node_modules/css-loader/dist/runtime/api.js","webpack://@tyk-technologies/tyk-ui/./node_modules/css-loader/dist/runtime/sourceMaps.js","webpack://@tyk-technologies/tyk-ui/./node_modules/react-dom/client.js","webpack://@tyk-technologies/tyk-ui/./node_modules/react-fast-compare/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js","webpack://@tyk-technologies/tyk-ui/./node_modules/style-loader/dist/runtime/insertBySelector.js","webpack://@tyk-technologies/tyk-ui/./node_modules/style-loader/dist/runtime/insertStyleElement.js","webpack://@tyk-technologies/tyk-ui/./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js","webpack://@tyk-technologies/tyk-ui/./node_modules/style-loader/dist/runtime/styleDomAPI.js","webpack://@tyk-technologies/tyk-ui/./node_modules/style-loader/dist/runtime/styleTagTransform.js","webpack://@tyk-technologies/tyk-ui/external commonjs2 \"react-dom\"","webpack://@tyk-technologies/tyk-ui/webpack/bootstrap","webpack://@tyk-technologies/tyk-ui/webpack/runtime/amd define","webpack://@tyk-technologies/tyk-ui/webpack/runtime/compat get default export","webpack://@tyk-technologies/tyk-ui/webpack/runtime/define property getters","webpack://@tyk-technologies/tyk-ui/webpack/runtime/hasOwnProperty shorthand","webpack://@tyk-technologies/tyk-ui/webpack/runtime/make namespace object","webpack://@tyk-technologies/tyk-ui/webpack/runtime/node module decorator","webpack://@tyk-technologies/tyk-ui/webpack/runtime/publicPath","webpack://@tyk-technologies/tyk-ui/webpack/runtime/nonce","webpack://@tyk-technologies/tyk-ui/external commonjs2 \"react\"","webpack://@tyk-technologies/tyk-ui/external commonjs2 \"prop-types\"","webpack://@tyk-technologies/tyk-ui/./src/components/Accordion/js/AccordionContext.js","webpack://@tyk-technologies/tyk-ui/./src/components/Accordion/js/AccordionItemContext.js","webpack://@tyk-technologies/tyk-ui/./src/components/Icon/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Accordion/js/AccordionItemTrigger.js","webpack://@tyk-technologies/tyk-ui/./src/components/Accordion/js/AccordionItem.js","webpack://@tyk-technologies/tyk-ui/./src/components/Accordion/js/AccordionItemHeader.js","webpack://@tyk-technologies/tyk-ui/external commonjs2 \"react-transition-group\"","webpack://@tyk-technologies/tyk-ui/./src/hooks/usePrevious/index.js","webpack://@tyk-technologies/tyk-ui/./src/hooks/useTimeout/index.js","webpack://@tyk-technologies/tyk-ui/./src/hooks/useInterval/index.js","webpack://@tyk-technologies/tyk-ui/./src/hooks/useEventListener/index.js","webpack://@tyk-technologies/tyk-ui/./src/hooks/useComponentSize/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Collapsible/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Accordion/js/AccordionItemContent.js","webpack://@tyk-technologies/tyk-ui/./src/components/Accordion/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Button/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/ButtonGroup/index.js","webpack://@tyk-technologies/tyk-ui/external commonjs2 \"echarts\"","webpack://@tyk-technologies/tyk-ui/external commonjs2 \"immutable\"","webpack://@tyk-technologies/tyk-ui/./src/utils/debounce/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Loader/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Message/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Chart/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Toast/js/ToastMessage.js","webpack://@tyk-technologies/tyk-ui/./src/components/Toast/js/ToastContainer.js","webpack://@tyk-technologies/tyk-ui/./src/components/Toast/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/CopyToClipboard/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Modal/js/ModalFooter.js","webpack://@tyk-technologies/tyk-ui/./src/components/Modal/js/ModalBody.js","webpack://@tyk-technologies/tyk-ui/./src/components/Modal/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Confirm/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/FixedWrapper/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/InfiniteScroller/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/FloatingContainer/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/InfoNote/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/List/js/ListItem.js","webpack://@tyk-technologies/tyk-ui/./src/components/List/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/NavBar/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Navigation/js/NavigationItem.js","webpack://@tyk-technologies/tyk-ui/./src/components/Navigation/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Panel/panel-context.js","webpack://@tyk-technologies/tyk-ui/./src/components/Panel/js/PanelBody.js","webpack://@tyk-technologies/tyk-ui/./src/components/Panel/js/PanelFooter.js","webpack://@tyk-technologies/tyk-ui/./src/components/Panel/js/PanelHeader.js","webpack://@tyk-technologies/tyk-ui/./src/components/Panel/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Pill/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/RevealPanel/js/RevealPanelService.js","webpack://@tyk-technologies/tyk-ui/./src/components/RevealPanel/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Tabs/tabs-context.js","webpack://@tyk-technologies/tyk-ui/./src/components/Tabs/js/TabContext.js","webpack://@tyk-technologies/tyk-ui/./src/components/Tabs/js/TabContent.js","webpack://@tyk-technologies/tyk-ui/./src/components/Tabs/js/Tab.js","webpack://@tyk-technologies/tyk-ui/./src/components/Tabs/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Tooltip/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/TextEllipsis/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Pagination/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Table/tableContext.js","webpack://@tyk-technologies/tyk-ui/./src/components/Table/js/header-cell.js","webpack://@tyk-technologies/tyk-ui/./src/components/Table/js/header.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Checkbox/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Table/js/cell.js","webpack://@tyk-technologies/tyk-ui/./src/components/Table/js/row.js","webpack://@tyk-technologies/tyk-ui/./src/components/Table/js/body.js","webpack://@tyk-technologies/tyk-ui/./src/components/Table/index.js","webpack://@tyk-technologies/tyk-ui/./src/layout/Column/index.js","webpack://@tyk-technologies/tyk-ui/./src/layout/Row/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Dropdown/dropdown-context.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Dropdown/js/DropdownItem.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Dropdown/index.js","webpack://@tyk-technologies/tyk-ui/external commonjs2 \"react-ace\"","webpack://@tyk-technologies/tyk-ui/./src/form/components/CodeEditor/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Combobox/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Combobox2/js/Value.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Combobox2/js/List.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Combobox2/index.js","webpack://@tyk-technologies/tyk-ui/external commonjs2 \"flatpickr\"","webpack://@tyk-technologies/tyk-ui/./node_modules/flatpickr/dist/flatpickr.min.css?e03b","webpack://@tyk-technologies/tyk-ui/./src/form/components/DatePicker/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/@babel/runtime/helpers/esm/typeof.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/requiredArgs/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/isDate/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/toDate/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/isValid/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/toInteger/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/addMilliseconds/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/subMilliseconds/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/getUTCDayOfYear/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/startOfUTCISOWeek/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/getUTCISOWeekYear/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/startOfUTCISOWeekYear/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/getUTCISOWeek/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/defaultOptions/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/startOfUTCWeek/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/getUTCWeekYear/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/startOfUTCWeekYear/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/getUTCWeek/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/addLeadingZeros/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/format/lightFormatters/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/format/formatters/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/format/longFormatters/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/getTimezoneOffsetInMilliseconds/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/protectedTokens/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/locale/en-US/_lib/formatDistance/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/locale/_lib/buildFormatLongFn/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/locale/en-US/_lib/formatLong/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/locale/en-US/_lib/formatRelative/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/locale/_lib/buildLocalizeFn/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/locale/en-US/_lib/localize/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/locale/_lib/buildMatchFn/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/locale/_lib/buildMatchPatternFn/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/locale/en-US/_lib/match/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/locale/en-US/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/defaultLocale/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/format/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/EditableList/js/EditableListForm.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/EditableList/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/EditableList2/Header.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/EditableList2/ListHeader.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/EditableList2/FieldsList.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/EditableList2/validate-values.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/EditableList2/with-validation.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/EditableList2/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/FileInput/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Input/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Input2/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Multiselect/js/MultiselectContext.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Multiselect/js/MultiselectItem.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Multiselect/js/MultiselectPanel.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Multiselect/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Radio/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Select/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/SelectableList/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Textarea/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Toggle/js/ToggleContext.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Toggle/js/ToggleItem.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Toggle/js/ToggleItemWrapper.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Toggle/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/StringBuilder/js/service.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/StringBuilder/js/string-input.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/StringBuilder/js/invalid-token.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/StringBuilder/js/tokenized-string.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/StringBuilder/js/options-list.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/StringBuilder/js/string-builder-footer.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/StringBuilder/index.js","webpack://@tyk-technologies/tyk-ui/./src/utils/config/config.js","webpack://@tyk-technologies/tyk-ui/./src/utils/formik/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikCheckbox/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikCodeEditor/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikCombobox/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikCombobox2/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikDatePicker/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikEditableList/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikEditableList2/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikFileInput/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikInput/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikInput2/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikMultiselect/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikRadio/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikSelect/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikSelectableList/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikTextarea/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikToggle/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikStringBuilder/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/redux-form/FieldCodeEditor/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/redux-form/FieldCombobox/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/redux-form/FieldDropdown/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/redux-form/FieldPagination/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/redux-form/FieldCombobox2/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/redux-form/FieldDatePicker/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/redux-form/FieldEditableList/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/redux-form/FieldFileInput/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/redux-form/FieldInput/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/redux-form/FieldMultiselect/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/redux-form/FieldSelect/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/redux-form/FieldSelectableList/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/redux-form/FieldToggle/index.js"],"sourcesContent":["/* ***** BEGIN LICENSE BLOCK *****\n * Distributed under the BSD license:\n *\n * Copyright (c) 2010, Ajax.org B.V.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright\n * notice, this list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright\n * notice, this list of conditions and the following disclaimer in the\n * documentation and/or other materials provided with the distribution.\n * * Neither the name of Ajax.org B.V. nor the\n * names of its contributors may be used to endorse or promote products\n * derived from this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\n * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY\n * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\n * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *\n * ***** END LICENSE BLOCK ***** */\n\n/**\n * Define a module along with a payload\n * @param module a name for the payload\n * @param payload a function to call with (require, exports, module) params\n */\n\n(function() {\n\nvar ACE_NAMESPACE = \"ace\";\n\nvar global = (function() { return this; })();\nif (!global && typeof window != \"undefined\") global = window; // strict mode\n\n\nif (!ACE_NAMESPACE && typeof requirejs !== \"undefined\")\n return;\n\n\nvar define = function(module, deps, payload) {\n if (typeof module !== \"string\") {\n if (define.original)\n define.original.apply(this, arguments);\n else {\n console.error(\"dropping module because define wasn\\'t a string.\");\n console.trace();\n }\n return;\n }\n if (arguments.length == 2)\n payload = deps;\n if (!define.modules[module]) {\n define.payloads[module] = payload;\n define.modules[module] = null;\n }\n};\n\ndefine.modules = {};\ndefine.payloads = {};\n\n/**\n * Get at functionality define()ed using the function above\n */\nvar _require = function(parentId, module, callback) {\n if (typeof module === \"string\") {\n var payload = lookup(parentId, module);\n if (payload != undefined) {\n callback && callback();\n return payload;\n }\n } else if (Object.prototype.toString.call(module) === \"[object Array]\") {\n var params = [];\n for (var i = 0, l = module.length; i < l; ++i) {\n var dep = lookup(parentId, module[i]);\n if (dep == undefined && require.original)\n return;\n params.push(dep);\n }\n return callback && callback.apply(null, params) || true;\n }\n};\n\nvar require = function(module, callback) {\n var packagedModule = _require(\"\", module, callback);\n if (packagedModule == undefined && require.original)\n return require.original.apply(this, arguments);\n return packagedModule;\n};\n\nvar normalizeModule = function(parentId, moduleName) {\n // normalize plugin requires\n if (moduleName.indexOf(\"!\") !== -1) {\n var chunks = moduleName.split(\"!\");\n return normalizeModule(parentId, chunks[0]) + \"!\" + normalizeModule(parentId, chunks[1]);\n }\n // normalize relative requires\n if (moduleName.charAt(0) == \".\") {\n var base = parentId.split(\"/\").slice(0, -1).join(\"/\");\n moduleName = base + \"/\" + moduleName;\n\n while(moduleName.indexOf(\".\") !== -1 && previous != moduleName) {\n var previous = moduleName;\n moduleName = moduleName.replace(/\\/\\.\\//, \"/\").replace(/[^\\/]+\\/\\.\\.\\//, \"\");\n }\n }\n return moduleName;\n};\n\n/**\n * Internal function to lookup moduleNames and resolve them by calling the\n * definition function if needed.\n */\nvar lookup = function(parentId, moduleName) {\n moduleName = normalizeModule(parentId, moduleName);\n\n var module = define.modules[moduleName];\n if (!module) {\n module = define.payloads[moduleName];\n if (typeof module === 'function') {\n var exports = {};\n var mod = {\n id: moduleName,\n uri: '',\n exports: exports,\n packaged: true\n };\n\n var req = function(module, callback) {\n return _require(moduleName, module, callback);\n };\n\n var returnValue = module(req, exports, mod);\n exports = returnValue || mod.exports;\n define.modules[moduleName] = exports;\n delete define.payloads[moduleName];\n }\n module = define.modules[moduleName] = exports || module;\n }\n return module;\n};\n\nfunction exportAce(ns) {\n var root = global;\n if (ns) {\n if (!global[ns])\n global[ns] = {};\n root = global[ns];\n }\n\n if (!root.define || !root.define.packaged) {\n define.original = root.define;\n root.define = define;\n root.define.packaged = true;\n }\n\n if (!root.require || !root.require.packaged) {\n require.original = root.require;\n root.require = require;\n root.require.packaged = true;\n }\n}\n\nexportAce(ACE_NAMESPACE);\n\n})();\n\nace.define(\"ace/lib/es6-shim\",[\"require\",\"exports\",\"module\"], function(require, exports, module){function defineProp(obj, name, val) {\n Object.defineProperty(obj, name, {\n value: val,\n enumerable: false,\n writable: true,\n configurable: true\n });\n}\nif (!String.prototype.startsWith) {\n defineProp(String.prototype, \"startsWith\", function (searchString, position) {\n position = position || 0;\n return this.lastIndexOf(searchString, position) === position;\n });\n}\nif (!String.prototype.endsWith) {\n defineProp(String.prototype, \"endsWith\", function (searchString, position) {\n var subjectString = this;\n if (position === undefined || position > subjectString.length) {\n position = subjectString.length;\n }\n position -= searchString.length;\n var lastIndex = subjectString.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n });\n}\nif (!String.prototype.repeat) {\n defineProp(String.prototype, \"repeat\", function (count) {\n var result = \"\";\n var string = this;\n while (count > 0) {\n if (count & 1)\n result += string;\n if ((count >>= 1))\n string += string;\n }\n return result;\n });\n}\nif (!String.prototype.includes) {\n defineProp(String.prototype, \"includes\", function (str, position) {\n return this.indexOf(str, position) != -1;\n });\n}\nif (!Object.assign) {\n Object.assign = function (target) {\n if (target === undefined || target === null) {\n throw new TypeError(\"Cannot convert undefined or null to object\");\n }\n var output = Object(target);\n for (var index = 1; index < arguments.length; index++) {\n var source = arguments[index];\n if (source !== undefined && source !== null) {\n Object.keys(source).forEach(function (key) {\n output[key] = source[key];\n });\n }\n }\n return output;\n };\n}\nif (!Object.values) {\n Object.values = function (o) {\n return Object.keys(o).map(function (k) {\n return o[k];\n });\n };\n}\nif (!Array.prototype.find) {\n defineProp(Array.prototype, \"find\", function (predicate) {\n var len = this.length;\n var thisArg = arguments[1];\n for (var k = 0; k < len; k++) {\n var kValue = this[k];\n if (predicate.call(thisArg, kValue, k, this)) {\n return kValue;\n }\n }\n });\n}\nif (!Array.prototype.findIndex) {\n defineProp(Array.prototype, \"findIndex\", function (predicate) {\n var len = this.length;\n var thisArg = arguments[1];\n for (var k = 0; k < len; k++) {\n var kValue = this[k];\n if (predicate.call(thisArg, kValue, k, this)) {\n return k;\n }\n }\n });\n}\nif (!Array.prototype.includes) {\n defineProp(Array.prototype, \"includes\", function (item, position) {\n return this.indexOf(item, position) != -1;\n });\n}\nif (!Array.prototype.fill) {\n defineProp(Array.prototype, \"fill\", function (value) {\n var O = this;\n var len = O.length >>> 0;\n var start = arguments[1];\n var relativeStart = start >> 0;\n var k = relativeStart < 0\n ? Math.max(len + relativeStart, 0)\n : Math.min(relativeStart, len);\n var end = arguments[2];\n var relativeEnd = end === undefined ? len : end >> 0;\n var final = relativeEnd < 0\n ? Math.max(len + relativeEnd, 0)\n : Math.min(relativeEnd, len);\n while (k < final) {\n O[k] = value;\n k++;\n }\n return O;\n });\n}\nif (!Array.of) {\n defineProp(Array, \"of\", function () {\n return Array.prototype.slice.call(arguments);\n });\n}\n\n});\n\nace.define(\"ace/lib/fixoldbrowsers\",[\"require\",\"exports\",\"module\",\"ace/lib/es6-shim\"], function(require, exports, module){// vim:set ts=4 sts=4 sw=4 st:\n\"use strict\";\nrequire(\"./es6-shim\");\n\n});\n\nace.define(\"ace/lib/deep_copy\",[\"require\",\"exports\",\"module\"], function(require, exports, module){exports.deepCopy = function deepCopy(obj) {\n if (typeof obj !== \"object\" || !obj)\n return obj;\n var copy;\n if (Array.isArray(obj)) {\n copy = [];\n for (var key = 0; key < obj.length; key++) {\n copy[key] = deepCopy(obj[key]);\n }\n return copy;\n }\n if (Object.prototype.toString.call(obj) !== \"[object Object]\")\n return obj;\n copy = {};\n for (var key in obj)\n copy[key] = deepCopy(obj[key]);\n return copy;\n};\n\n});\n\nace.define(\"ace/lib/lang\",[\"require\",\"exports\",\"module\",\"ace/lib/deep_copy\"], function(require, exports, module){\"use strict\";\nexports.last = function (a) {\n return a[a.length - 1];\n};\nexports.stringReverse = function (string) {\n return string.split(\"\").reverse().join(\"\");\n};\nexports.stringRepeat = function (string, count) {\n var result = '';\n while (count > 0) {\n if (count & 1)\n result += string;\n if (count >>= 1)\n string += string;\n }\n return result;\n};\nvar trimBeginRegexp = /^\\s\\s*/;\nvar trimEndRegexp = /\\s\\s*$/;\nexports.stringTrimLeft = function (string) {\n return string.replace(trimBeginRegexp, '');\n};\nexports.stringTrimRight = function (string) {\n return string.replace(trimEndRegexp, '');\n};\nexports.copyObject = function (obj) {\n var copy = {};\n for (var key in obj) {\n copy[key] = obj[key];\n }\n return copy;\n};\nexports.copyArray = function (array) {\n var copy = [];\n for (var i = 0, l = array.length; i < l; i++) {\n if (array[i] && typeof array[i] == \"object\")\n copy[i] = this.copyObject(array[i]);\n else\n copy[i] = array[i];\n }\n return copy;\n};\nexports.deepCopy = require(\"./deep_copy\").deepCopy;\nexports.arrayToMap = function (arr) {\n var map = {};\n for (var i = 0; i < arr.length; i++) {\n map[arr[i]] = 1;\n }\n return map;\n};\nexports.createMap = function (props) {\n var map = Object.create(null);\n for (var i in props) {\n map[i] = props[i];\n }\n return map;\n};\nexports.arrayRemove = function (array, value) {\n for (var i = 0; i <= array.length; i++) {\n if (value === array[i]) {\n array.splice(i, 1);\n }\n }\n};\nexports.escapeRegExp = function (str) {\n return str.replace(/([.*+?^${}()|[\\]\\/\\\\])/g, '\\\\$1');\n};\nexports.escapeHTML = function (str) {\n return (\"\" + str).replace(/&/g, \"&\").replace(/\"/g, \""\").replace(/'/g, \"'\").replace(/= 0)\n ? parseFloat((ua.match(/(?:MSIE |Trident\\/[0-9]+[\\.0-9]+;.*rv:)([0-9]+[\\.0-9]+)/) || [])[1])\n : parseFloat((ua.match(/(?:Trident\\/[0-9]+[\\.0-9]+;.*rv:)([0-9]+[\\.0-9]+)/) || [])[1]); // for ie\nexports.isOldIE = exports.isIE && exports.isIE < 9;\nexports.isGecko = exports.isMozilla = ua.match(/ Gecko\\/\\d+/);\nexports.isOpera = typeof opera == \"object\" && Object.prototype.toString.call(window.opera) == \"[object Opera]\";\nexports.isWebKit = parseFloat(ua.split(\"WebKit/\")[1]) || undefined;\nexports.isChrome = parseFloat(ua.split(\" Chrome/\")[1]) || undefined;\nexports.isEdge = parseFloat(ua.split(\" Edge/\")[1]) || undefined;\nexports.isAIR = ua.indexOf(\"AdobeAIR\") >= 0;\nexports.isAndroid = ua.indexOf(\"Android\") >= 0;\nexports.isChromeOS = ua.indexOf(\" CrOS \") >= 0;\nexports.isIOS = /iPad|iPhone|iPod/.test(ua) && !window.MSStream;\nif (exports.isIOS)\n exports.isMac = true;\nexports.isMobile = exports.isIOS || exports.isAndroid;\n\n});\n\nace.define(\"ace/lib/dom\",[\"require\",\"exports\",\"module\",\"ace/lib/useragent\"], function(require, exports, module){\"use strict\";\nvar useragent = require(\"./useragent\");\nvar XHTML_NS = \"http://www.w3.org/1999/xhtml\";\nexports.buildDom = function buildDom(arr, parent, refs) {\n if (typeof arr == \"string\" && arr) {\n var txt = document.createTextNode(arr);\n if (parent)\n parent.appendChild(txt);\n return txt;\n }\n if (!Array.isArray(arr)) {\n if (arr && arr.appendChild && parent)\n parent.appendChild(arr);\n return arr;\n }\n if (typeof arr[0] != \"string\" || !arr[0]) {\n var els = [];\n for (var i = 0; i < arr.length; i++) {\n var ch = buildDom(arr[i], parent, refs);\n ch && els.push(ch);\n }\n return els;\n }\n var el = document.createElement(arr[0]);\n var options = arr[1];\n var childIndex = 1;\n if (options && typeof options == \"object\" && !Array.isArray(options))\n childIndex = 2;\n for (var i = childIndex; i < arr.length; i++)\n buildDom(arr[i], el, refs);\n if (childIndex == 2) {\n Object.keys(options).forEach(function (n) {\n var val = options[n];\n if (n === \"class\") {\n el.className = Array.isArray(val) ? val.join(\" \") : val;\n }\n else if (typeof val == \"function\" || n == \"value\" || n[0] == \"$\") {\n el[n] = val;\n }\n else if (n === \"ref\") {\n if (refs)\n refs[val] = el;\n }\n else if (n === \"style\") {\n if (typeof val == \"string\")\n el.style.cssText = val;\n }\n else if (val != null) {\n el.setAttribute(n, val);\n }\n });\n }\n if (parent)\n parent.appendChild(el);\n return el;\n};\nexports.getDocumentHead = function (doc) {\n if (!doc)\n doc = document;\n return doc.head || doc.getElementsByTagName(\"head\")[0] || doc.documentElement;\n};\nexports.createElement = function (tag, ns) {\n return document.createElementNS ?\n document.createElementNS(ns || XHTML_NS, tag) :\n document.createElement(tag);\n};\nexports.removeChildren = function (element) {\n element.innerHTML = \"\";\n};\nexports.createTextNode = function (textContent, element) {\n var doc = element ? element.ownerDocument : document;\n return doc.createTextNode(textContent);\n};\nexports.createFragment = function (element) {\n var doc = element ? element.ownerDocument : document;\n return doc.createDocumentFragment();\n};\nexports.hasCssClass = function (el, name) {\n var classes = (el.className + \"\").split(/\\s+/g);\n return classes.indexOf(name) !== -1;\n};\nexports.addCssClass = function (el, name) {\n if (!exports.hasCssClass(el, name)) {\n el.className += \" \" + name;\n }\n};\nexports.removeCssClass = function (el, name) {\n var classes = el.className.split(/\\s+/g);\n while (true) {\n var index = classes.indexOf(name);\n if (index == -1) {\n break;\n }\n classes.splice(index, 1);\n }\n el.className = classes.join(\" \");\n};\nexports.toggleCssClass = function (el, name) {\n var classes = el.className.split(/\\s+/g), add = true;\n while (true) {\n var index = classes.indexOf(name);\n if (index == -1) {\n break;\n }\n add = false;\n classes.splice(index, 1);\n }\n if (add)\n classes.push(name);\n el.className = classes.join(\" \");\n return add;\n};\nexports.setCssClass = function (node, className, include) {\n if (include) {\n exports.addCssClass(node, className);\n }\n else {\n exports.removeCssClass(node, className);\n }\n};\nexports.hasCssString = function (id, doc) {\n var index = 0, sheets;\n doc = doc || document;\n if ((sheets = doc.querySelectorAll(\"style\"))) {\n while (index < sheets.length) {\n if (sheets[index++].id === id) {\n return true;\n }\n }\n }\n};\nexports.removeElementById = function (id, doc) {\n doc = doc || document;\n if (doc.getElementById(id)) {\n doc.getElementById(id).remove();\n }\n};\nvar strictCSP;\nvar cssCache = [];\nexports.useStrictCSP = function (value) {\n strictCSP = value;\n if (value == false)\n insertPendingStyles();\n else if (!cssCache)\n cssCache = [];\n};\nfunction insertPendingStyles() {\n var cache = cssCache;\n cssCache = null;\n cache && cache.forEach(function (item) {\n importCssString(item[0], item[1]);\n });\n}\nfunction importCssString(cssText, id, target) {\n if (typeof document == \"undefined\")\n return;\n if (cssCache) {\n if (target) {\n insertPendingStyles();\n }\n else if (target === false) {\n return cssCache.push([cssText, id]);\n }\n }\n if (strictCSP)\n return;\n var container = target;\n if (!target || !target.getRootNode) {\n container = document;\n }\n else {\n container = target.getRootNode();\n if (!container || container == target)\n container = document;\n }\n var doc = container.ownerDocument || container;\n if (id && exports.hasCssString(id, container))\n return null;\n if (id)\n cssText += \"\\n/*# sourceURL=ace/css/\" + id + \" */\";\n var style = exports.createElement(\"style\");\n style.appendChild(doc.createTextNode(cssText));\n if (id)\n style.id = id;\n if (container == doc)\n container = exports.getDocumentHead(doc);\n container.insertBefore(style, container.firstChild);\n}\nexports.importCssString = importCssString;\nexports.importCssStylsheet = function (uri, doc) {\n exports.buildDom([\"link\", { rel: \"stylesheet\", href: uri }], exports.getDocumentHead(doc));\n};\nexports.scrollbarWidth = function (doc) {\n var inner = exports.createElement(\"ace_inner\");\n inner.style.width = \"100%\";\n inner.style.minWidth = \"0px\";\n inner.style.height = \"200px\";\n inner.style.display = \"block\";\n var outer = exports.createElement(\"ace_outer\");\n var style = outer.style;\n style.position = \"absolute\";\n style.left = \"-10000px\";\n style.overflow = \"hidden\";\n style.width = \"200px\";\n style.minWidth = \"0px\";\n style.height = \"150px\";\n style.display = \"block\";\n outer.appendChild(inner);\n var body = (doc && doc.documentElement) || (document && document.documentElement);\n if (!body)\n return 0;\n body.appendChild(outer);\n var noScrollbar = inner.offsetWidth;\n style.overflow = \"scroll\";\n var withScrollbar = inner.offsetWidth;\n if (noScrollbar === withScrollbar) {\n withScrollbar = outer.clientWidth;\n }\n body.removeChild(outer);\n return noScrollbar - withScrollbar;\n};\nexports.computedStyle = function (element, style) {\n return window.getComputedStyle(element, \"\") || {};\n};\nexports.setStyle = function (styles, property, value) {\n if (styles[property] !== value) {\n styles[property] = value;\n }\n};\nexports.HAS_CSS_ANIMATION = false;\nexports.HAS_CSS_TRANSFORMS = false;\nexports.HI_DPI = useragent.isWin\n ? typeof window !== \"undefined\" && window.devicePixelRatio >= 1.5\n : true;\nif (useragent.isChromeOS)\n exports.HI_DPI = false;\nif (typeof document !== \"undefined\") {\n var div = document.createElement(\"div\");\n if (exports.HI_DPI && div.style.transform !== undefined)\n exports.HAS_CSS_TRANSFORMS = true;\n if (!useragent.isEdge && typeof div.style.animationName !== \"undefined\")\n exports.HAS_CSS_ANIMATION = true;\n div = null;\n}\nif (exports.HAS_CSS_TRANSFORMS) {\n exports.translate = function (element, tx, ty) {\n element.style.transform = \"translate(\" + Math.round(tx) + \"px, \" + Math.round(ty) + \"px)\";\n };\n}\nelse {\n exports.translate = function (element, tx, ty) {\n element.style.top = Math.round(ty) + \"px\";\n element.style.left = Math.round(tx) + \"px\";\n };\n}\n\n});\n\nace.define(\"ace/lib/net\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"], function(require, exports, module){/*\n * based on code from:\n *\n * @license RequireJS text 0.25.0 Copyright (c) 2010-2011, The Dojo Foundation All Rights Reserved.\n * Available via the MIT or new BSD license.\n * see: http://github.com/jrburke/requirejs for details\n */\n\"use strict\";\nvar dom = require(\"./dom\");\nexports.get = function (url, callback) {\n var xhr = new XMLHttpRequest();\n xhr.open('GET', url, true);\n xhr.onreadystatechange = function () {\n if (xhr.readyState === 4) {\n callback(xhr.responseText);\n }\n };\n xhr.send(null);\n};\nexports.loadScript = function (path, callback) {\n var head = dom.getDocumentHead();\n var s = document.createElement('script');\n s.src = path;\n head.appendChild(s);\n s.onload = s.onreadystatechange = function (_, isAbort) {\n if (isAbort || !s.readyState || s.readyState == \"loaded\" || s.readyState == \"complete\") {\n s = s.onload = s.onreadystatechange = null;\n if (!isAbort)\n callback();\n }\n };\n};\nexports.qualifyURL = function (url) {\n var a = document.createElement('a');\n a.href = url;\n return a.href;\n};\n\n});\n\nace.define(\"ace/lib/oop\",[\"require\",\"exports\",\"module\"], function(require, exports, module){\"use strict\";\nexports.inherits = function (ctor, superCtor) {\n ctor.super_ = superCtor;\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n};\nexports.mixin = function (obj, mixin) {\n for (var key in mixin) {\n obj[key] = mixin[key];\n }\n return obj;\n};\nexports.implement = function (proto, mixin) {\n exports.mixin(proto, mixin);\n};\n\n});\n\nace.define(\"ace/lib/event_emitter\",[\"require\",\"exports\",\"module\"], function(require, exports, module){\"use strict\";\nvar EventEmitter = {};\nvar stopPropagation = function () { this.propagationStopped = true; };\nvar preventDefault = function () { this.defaultPrevented = true; };\nEventEmitter._emit =\n EventEmitter._dispatchEvent = function (eventName, e) {\n this._eventRegistry || (this._eventRegistry = {});\n this._defaultHandlers || (this._defaultHandlers = {});\n var listeners = this._eventRegistry[eventName] || [];\n var defaultHandler = this._defaultHandlers[eventName];\n if (!listeners.length && !defaultHandler)\n return;\n if (typeof e != \"object\" || !e)\n e = {};\n if (!e.type)\n e.type = eventName;\n if (!e.stopPropagation)\n e.stopPropagation = stopPropagation;\n if (!e.preventDefault)\n e.preventDefault = preventDefault;\n listeners = listeners.slice();\n for (var i = 0; i < listeners.length; i++) {\n listeners[i](e, this);\n if (e.propagationStopped)\n break;\n }\n if (defaultHandler && !e.defaultPrevented)\n return defaultHandler(e, this);\n };\nEventEmitter._signal = function (eventName, e) {\n var listeners = (this._eventRegistry || {})[eventName];\n if (!listeners)\n return;\n listeners = listeners.slice();\n for (var i = 0; i < listeners.length; i++)\n listeners[i](e, this);\n};\nEventEmitter.once = function (eventName, callback) {\n var _self = this;\n this.on(eventName, function newCallback() {\n _self.off(eventName, newCallback);\n callback.apply(null, arguments);\n });\n if (!callback) {\n return new Promise(function (resolve) {\n callback = resolve;\n });\n }\n};\nEventEmitter.setDefaultHandler = function (eventName, callback) {\n var handlers = this._defaultHandlers;\n if (!handlers)\n handlers = this._defaultHandlers = { _disabled_: {} };\n if (handlers[eventName]) {\n var old = handlers[eventName];\n var disabled = handlers._disabled_[eventName];\n if (!disabled)\n handlers._disabled_[eventName] = disabled = [];\n disabled.push(old);\n var i = disabled.indexOf(callback);\n if (i != -1)\n disabled.splice(i, 1);\n }\n handlers[eventName] = callback;\n};\nEventEmitter.removeDefaultHandler = function (eventName, callback) {\n var handlers = this._defaultHandlers;\n if (!handlers)\n return;\n var disabled = handlers._disabled_[eventName];\n if (handlers[eventName] == callback) {\n if (disabled)\n this.setDefaultHandler(eventName, disabled.pop());\n }\n else if (disabled) {\n var i = disabled.indexOf(callback);\n if (i != -1)\n disabled.splice(i, 1);\n }\n};\nEventEmitter.on =\n EventEmitter.addEventListener = function (eventName, callback, capturing) {\n this._eventRegistry = this._eventRegistry || {};\n var listeners = this._eventRegistry[eventName];\n if (!listeners)\n listeners = this._eventRegistry[eventName] = [];\n if (listeners.indexOf(callback) == -1)\n listeners[capturing ? \"unshift\" : \"push\"](callback);\n return callback;\n };\nEventEmitter.off =\n EventEmitter.removeListener =\n EventEmitter.removeEventListener = function (eventName, callback) {\n this._eventRegistry = this._eventRegistry || {};\n var listeners = this._eventRegistry[eventName];\n if (!listeners)\n return;\n var index = listeners.indexOf(callback);\n if (index !== -1)\n listeners.splice(index, 1);\n };\nEventEmitter.removeAllListeners = function (eventName) {\n if (!eventName)\n this._eventRegistry = this._defaultHandlers = undefined;\n if (this._eventRegistry)\n this._eventRegistry[eventName] = undefined;\n if (this._defaultHandlers)\n this._defaultHandlers[eventName] = undefined;\n};\nexports.EventEmitter = EventEmitter;\n\n});\n\nace.define(\"ace/lib/report_error\",[\"require\",\"exports\",\"module\"], function(require, exports, module){exports.reportError = function reportError(msg, data) {\n var e = new Error(msg);\n e.data = data;\n if (typeof console == \"object\" && console.error)\n console.error(e);\n setTimeout(function () { throw e; });\n};\n\n});\n\nace.define(\"ace/lib/app_config\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/event_emitter\",\"ace/lib/report_error\"], function(require, exports, module){\"no use strict\";\nvar oop = require(\"./oop\");\nvar EventEmitter = require(\"./event_emitter\").EventEmitter;\nvar reportError = require(\"./report_error\").reportError;\nvar optionsProvider = {\n setOptions: function (optList) {\n Object.keys(optList).forEach(function (key) {\n this.setOption(key, optList[key]);\n }, this);\n },\n getOptions: function (optionNames) {\n var result = {};\n if (!optionNames) {\n var options = this.$options;\n optionNames = Object.keys(options).filter(function (key) {\n return !options[key].hidden;\n });\n }\n else if (!Array.isArray(optionNames)) {\n result = optionNames;\n optionNames = Object.keys(result);\n }\n optionNames.forEach(function (key) {\n result[key] = this.getOption(key);\n }, this);\n return result;\n },\n setOption: function (name, value) {\n if (this[\"$\" + name] === value)\n return;\n var opt = this.$options[name];\n if (!opt) {\n return warn('misspelled option \"' + name + '\"');\n }\n if (opt.forwardTo)\n return this[opt.forwardTo] && this[opt.forwardTo].setOption(name, value);\n if (!opt.handlesSet)\n this[\"$\" + name] = value;\n if (opt && opt.set)\n opt.set.call(this, value);\n },\n getOption: function (name) {\n var opt = this.$options[name];\n if (!opt) {\n return warn('misspelled option \"' + name + '\"');\n }\n if (opt.forwardTo)\n return this[opt.forwardTo] && this[opt.forwardTo].getOption(name);\n return opt && opt.get ? opt.get.call(this) : this[\"$\" + name];\n }\n};\nfunction warn(message) {\n if (typeof console != \"undefined\" && console.warn)\n console.warn.apply(console, arguments);\n}\nvar messages;\nvar AppConfig = /** @class */ (function () {\n function AppConfig() {\n this.$defaultOptions = {};\n }\n AppConfig.prototype.defineOptions = function (obj, path, options) {\n if (!obj.$options)\n this.$defaultOptions[path] = obj.$options = {};\n Object.keys(options).forEach(function (key) {\n var opt = options[key];\n if (typeof opt == \"string\")\n opt = { forwardTo: opt };\n opt.name || (opt.name = key);\n obj.$options[opt.name] = opt;\n if (\"initialValue\" in opt)\n obj[\"$\" + opt.name] = opt.initialValue;\n });\n oop.implement(obj, optionsProvider);\n return this;\n };\n AppConfig.prototype.resetOptions = function (obj) {\n Object.keys(obj.$options).forEach(function (key) {\n var opt = obj.$options[key];\n if (\"value\" in opt)\n obj.setOption(key, opt.value);\n });\n };\n AppConfig.prototype.setDefaultValue = function (path, name, value) {\n if (!path) {\n for (path in this.$defaultOptions)\n if (this.$defaultOptions[path][name])\n break;\n if (!this.$defaultOptions[path][name])\n return false;\n }\n var opts = this.$defaultOptions[path] || (this.$defaultOptions[path] = {});\n if (opts[name]) {\n if (opts.forwardTo)\n this.setDefaultValue(opts.forwardTo, name, value);\n else\n opts[name].value = value;\n }\n };\n AppConfig.prototype.setDefaultValues = function (path, optionHash) {\n Object.keys(optionHash).forEach(function (key) {\n this.setDefaultValue(path, key, optionHash[key]);\n }, this);\n };\n AppConfig.prototype.setMessages = function (value) {\n messages = value;\n };\n AppConfig.prototype.nls = function (string, params) {\n if (messages && !messages[string]) {\n warn(\"No message found for '\" + string + \"' in the provided messages, falling back to default English message.\");\n }\n var translated = messages && messages[string] || string;\n if (params) {\n translated = translated.replace(/\\$(\\$|[\\d]+)/g, function (_, name) {\n if (name == \"$\")\n return \"$\";\n return params[name];\n });\n }\n return translated;\n };\n return AppConfig;\n}());\nAppConfig.prototype.warn = warn;\nAppConfig.prototype.reportError = reportError;\noop.implement(AppConfig.prototype, EventEmitter);\nexports.AppConfig = AppConfig;\n\n});\n\nace.define(\"ace/theme/textmate-css\",[\"require\",\"exports\",\"module\"], function(require, exports, module){module.exports = \".ace-tm .ace_gutter {\\n background: #f0f0f0;\\n color: #333;\\n}\\n\\n.ace-tm .ace_print-margin {\\n width: 1px;\\n background: #e8e8e8;\\n}\\n\\n.ace-tm .ace_fold {\\n background-color: #6B72E6;\\n}\\n\\n.ace-tm {\\n background-color: #FFFFFF;\\n color: black;\\n}\\n\\n.ace-tm .ace_cursor {\\n color: black;\\n}\\n \\n.ace-tm .ace_invisible {\\n color: rgb(191, 191, 191);\\n}\\n\\n.ace-tm .ace_storage,\\n.ace-tm .ace_keyword {\\n color: blue;\\n}\\n\\n.ace-tm .ace_constant {\\n color: rgb(197, 6, 11);\\n}\\n\\n.ace-tm .ace_constant.ace_buildin {\\n color: rgb(88, 72, 246);\\n}\\n\\n.ace-tm .ace_constant.ace_language {\\n color: rgb(88, 92, 246);\\n}\\n\\n.ace-tm .ace_constant.ace_library {\\n color: rgb(6, 150, 14);\\n}\\n\\n.ace-tm .ace_invalid {\\n background-color: rgba(255, 0, 0, 0.1);\\n color: red;\\n}\\n\\n.ace-tm .ace_support.ace_function {\\n color: rgb(60, 76, 114);\\n}\\n\\n.ace-tm .ace_support.ace_constant {\\n color: rgb(6, 150, 14);\\n}\\n\\n.ace-tm .ace_support.ace_type,\\n.ace-tm .ace_support.ace_class {\\n color: rgb(109, 121, 222);\\n}\\n\\n.ace-tm .ace_keyword.ace_operator {\\n color: rgb(104, 118, 135);\\n}\\n\\n.ace-tm .ace_string {\\n color: rgb(3, 106, 7);\\n}\\n\\n.ace-tm .ace_comment {\\n color: rgb(76, 136, 107);\\n}\\n\\n.ace-tm .ace_comment.ace_doc {\\n color: rgb(0, 102, 255);\\n}\\n\\n.ace-tm .ace_comment.ace_doc.ace_tag {\\n color: rgb(128, 159, 191);\\n}\\n\\n.ace-tm .ace_constant.ace_numeric {\\n color: rgb(0, 0, 205);\\n}\\n\\n.ace-tm .ace_variable {\\n color: rgb(49, 132, 149);\\n}\\n\\n.ace-tm .ace_xml-pe {\\n color: rgb(104, 104, 91);\\n}\\n\\n.ace-tm .ace_entity.ace_name.ace_function {\\n color: #0000A2;\\n}\\n\\n\\n.ace-tm .ace_heading {\\n color: rgb(12, 7, 255);\\n}\\n\\n.ace-tm .ace_list {\\n color:rgb(185, 6, 144);\\n}\\n\\n.ace-tm .ace_meta.ace_tag {\\n color:rgb(0, 22, 142);\\n}\\n\\n.ace-tm .ace_string.ace_regex {\\n color: rgb(255, 0, 0)\\n}\\n\\n.ace-tm .ace_marker-layer .ace_selection {\\n background: rgb(181, 213, 255);\\n}\\n.ace-tm.ace_multiselect .ace_selection.ace_start {\\n box-shadow: 0 0 3px 0px white;\\n}\\n.ace-tm .ace_marker-layer .ace_step {\\n background: rgb(252, 255, 0);\\n}\\n\\n.ace-tm .ace_marker-layer .ace_stack {\\n background: rgb(164, 229, 101);\\n}\\n\\n.ace-tm .ace_marker-layer .ace_bracket {\\n margin: -1px 0 0 -1px;\\n border: 1px solid rgb(192, 192, 192);\\n}\\n\\n.ace-tm .ace_marker-layer .ace_active-line {\\n background: rgba(0, 0, 0, 0.07);\\n}\\n\\n.ace-tm .ace_gutter-active-line {\\n background-color : #dcdcdc;\\n}\\n\\n.ace-tm .ace_marker-layer .ace_selected-word {\\n background: rgb(250, 250, 255);\\n border: 1px solid rgb(200, 200, 250);\\n}\\n\\n.ace-tm .ace_indent-guide {\\n background: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==\\\") right repeat-y;\\n}\\n\\n.ace-tm .ace_indent-guide-active {\\n background: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAAZSURBVHjaYvj///9/hivKyv8BAAAA//8DACLqBhbvk+/eAAAAAElFTkSuQmCC\\\") right repeat-y;\\n}\\n\";\n\n});\n\nace.define(\"ace/theme/textmate\",[\"require\",\"exports\",\"module\",\"ace/theme/textmate-css\",\"ace/lib/dom\"], function(require, exports, module){\"use strict\";\nexports.isDark = false;\nexports.cssClass = \"ace-tm\";\nexports.cssText = require(\"./textmate-css\");\nexports.$id = \"ace/theme/textmate\";\nvar dom = require(\"../lib/dom\");\ndom.importCssString(exports.cssText, exports.cssClass, false);\n\n});\n\nace.define(\"ace/config\",[\"require\",\"exports\",\"module\",\"ace/lib/lang\",\"ace/lib/net\",\"ace/lib/dom\",\"ace/lib/app_config\",\"ace/theme/textmate\"], function(require, exports, module){\"no use strict\";\nvar lang = require(\"./lib/lang\");\nvar net = require(\"./lib/net\");\nvar dom = require(\"./lib/dom\");\nvar AppConfig = require(\"./lib/app_config\").AppConfig;\nmodule.exports = exports = new AppConfig();\nvar options = {\n packaged: false,\n workerPath: null,\n modePath: null,\n themePath: null,\n basePath: \"\",\n suffix: \".js\",\n $moduleUrls: {},\n loadWorkerFromBlob: true,\n sharedPopups: false,\n useStrictCSP: null\n};\nexports.get = function (key) {\n if (!options.hasOwnProperty(key))\n throw new Error(\"Unknown config key: \" + key);\n return options[key];\n};\nexports.set = function (key, value) {\n if (options.hasOwnProperty(key))\n options[key] = value;\n else if (this.setDefaultValue(\"\", key, value) == false)\n throw new Error(\"Unknown config key: \" + key);\n if (key == \"useStrictCSP\")\n dom.useStrictCSP(value);\n};\nexports.all = function () {\n return lang.copyObject(options);\n};\nexports.$modes = {};\nexports.moduleUrl = function (name, component) {\n if (options.$moduleUrls[name])\n return options.$moduleUrls[name];\n var parts = name.split(\"/\");\n component = component || parts[parts.length - 2] || \"\";\n var sep = component == \"snippets\" ? \"/\" : \"-\";\n var base = parts[parts.length - 1];\n if (component == \"worker\" && sep == \"-\") {\n var re = new RegExp(\"^\" + component + \"[\\\\-_]|[\\\\-_]\" + component + \"$\", \"g\");\n base = base.replace(re, \"\");\n }\n if ((!base || base == component) && parts.length > 1)\n base = parts[parts.length - 2];\n var path = options[component + \"Path\"];\n if (path == null) {\n path = options.basePath;\n }\n else if (sep == \"/\") {\n component = sep = \"\";\n }\n if (path && path.slice(-1) != \"/\")\n path += \"/\";\n return path + component + sep + base + this.get(\"suffix\");\n};\nexports.setModuleUrl = function (name, subst) {\n return options.$moduleUrls[name] = subst;\n};\nvar loader = function (moduleName, cb) {\n if (moduleName === \"ace/theme/textmate\" || moduleName === \"./theme/textmate\")\n return cb(null, require(\"./theme/textmate\"));\n if (customLoader)\n return customLoader(moduleName, cb);\n console.error(\"loader is not configured\");\n};\nvar customLoader;\nexports.setLoader = function (cb) {\n customLoader = cb;\n};\nexports.dynamicModules = Object.create(null);\nexports.$loading = {};\nexports.$loaded = {};\nexports.loadModule = function (moduleName, onLoad) {\n var loadedModule, moduleType;\n if (Array.isArray(moduleName)) {\n moduleType = moduleName[0];\n moduleName = moduleName[1];\n }\n var load = function (module) {\n if (module && !exports.$loading[moduleName])\n return onLoad && onLoad(module);\n if (!exports.$loading[moduleName])\n exports.$loading[moduleName] = [];\n exports.$loading[moduleName].push(onLoad);\n if (exports.$loading[moduleName].length > 1)\n return;\n var afterLoad = function () {\n loader(moduleName, function (err, module) {\n if (module)\n exports.$loaded[moduleName] = module;\n exports._emit(\"load.module\", { name: moduleName, module: module });\n var listeners = exports.$loading[moduleName];\n exports.$loading[moduleName] = null;\n listeners.forEach(function (onLoad) {\n onLoad && onLoad(module);\n });\n });\n };\n if (!exports.get(\"packaged\"))\n return afterLoad();\n net.loadScript(exports.moduleUrl(moduleName, moduleType), afterLoad);\n reportErrorIfPathIsNotConfigured();\n };\n if (exports.dynamicModules[moduleName]) {\n exports.dynamicModules[moduleName]().then(function (module) {\n if (module.default) {\n load(module.default);\n }\n else {\n load(module);\n }\n });\n }\n else {\n try {\n loadedModule = this.$require(moduleName);\n }\n catch (e) { }\n load(loadedModule || exports.$loaded[moduleName]);\n }\n};\nexports.$require = function (moduleName) {\n if (typeof module.require == \"function\") {\n var req = \"require\";\n return module[req](moduleName);\n }\n};\nexports.setModuleLoader = function (moduleName, onLoad) {\n exports.dynamicModules[moduleName] = onLoad;\n};\nvar reportErrorIfPathIsNotConfigured = function () {\n if (!options.basePath && !options.workerPath\n && !options.modePath && !options.themePath\n && !Object.keys(options.$moduleUrls).length) {\n console.error(\"Unable to infer path to ace from script src,\", \"use ace.config.set('basePath', 'path') to enable dynamic loading of modes and themes\", \"or with webpack use ace/webpack-resolver\");\n reportErrorIfPathIsNotConfigured = function () { };\n }\n};\nexports.version = \"1.31.2\";\n\n});\n\nace.define(\"ace/loader_build\",[\"require\",\"exports\",\"module\",\"ace/lib/fixoldbrowsers\",\"ace/config\"], function(require, exports, module) {\n\"use strict\";\n\nrequire(\"./lib/fixoldbrowsers\");\nvar config = require(\"./config\");\nconfig.setLoader(function(moduleName, cb) {\n require([moduleName], function(module) {\n cb(null, module);\n });\n});\n\nvar global = (function() {\n return this || typeof window != \"undefined\" && window;\n})();\n\nmodule.exports = function(ace) {\n config.init = init;\n config.$require = require;\n ace.require = require;\n\n if (typeof define === \"function\")\n ace.define = define;\n};\ninit(true);function init(packaged) {\n\n if (!global || !global.document)\n return;\n \n config.set(\"packaged\", packaged || require.packaged || module.packaged || (global.define && define.packaged));\n\n var scriptOptions = {};\n var scriptUrl = \"\";\n var currentScript = (document.currentScript || document._currentScript ); // native or polyfill\n var currentDocument = currentScript && currentScript.ownerDocument || document;\n \n if (currentScript && currentScript.src) {\n scriptUrl = currentScript.src.split(/[?#]/)[0].split(\"/\").slice(0, -1).join(\"/\") || \"\";\n }\n \n var scripts = currentDocument.getElementsByTagName(\"script\");\n for (var i=0; i [\" + this.end.row + \"/\" + this.end.column + \"]\");\n };\n Range.prototype.contains = function (row, column) {\n return this.compare(row, column) == 0;\n };\n Range.prototype.compareRange = function (range) {\n var cmp, end = range.end, start = range.start;\n cmp = this.compare(end.row, end.column);\n if (cmp == 1) {\n cmp = this.compare(start.row, start.column);\n if (cmp == 1) {\n return 2;\n }\n else if (cmp == 0) {\n return 1;\n }\n else {\n return 0;\n }\n }\n else if (cmp == -1) {\n return -2;\n }\n else {\n cmp = this.compare(start.row, start.column);\n if (cmp == -1) {\n return -1;\n }\n else if (cmp == 1) {\n return 42;\n }\n else {\n return 0;\n }\n }\n };\n Range.prototype.comparePoint = function (p) {\n return this.compare(p.row, p.column);\n };\n Range.prototype.containsRange = function (range) {\n return this.comparePoint(range.start) == 0 && this.comparePoint(range.end) == 0;\n };\n Range.prototype.intersects = function (range) {\n var cmp = this.compareRange(range);\n return (cmp == -1 || cmp == 0 || cmp == 1);\n };\n Range.prototype.isEnd = function (row, column) {\n return this.end.row == row && this.end.column == column;\n };\n Range.prototype.isStart = function (row, column) {\n return this.start.row == row && this.start.column == column;\n };\n Range.prototype.setStart = function (row, column) {\n if (typeof row == \"object\") {\n this.start.column = row.column;\n this.start.row = row.row;\n }\n else {\n this.start.row = row;\n this.start.column = column;\n }\n };\n Range.prototype.setEnd = function (row, column) {\n if (typeof row == \"object\") {\n this.end.column = row.column;\n this.end.row = row.row;\n }\n else {\n this.end.row = row;\n this.end.column = column;\n }\n };\n Range.prototype.inside = function (row, column) {\n if (this.compare(row, column) == 0) {\n if (this.isEnd(row, column) || this.isStart(row, column)) {\n return false;\n }\n else {\n return true;\n }\n }\n return false;\n };\n Range.prototype.insideStart = function (row, column) {\n if (this.compare(row, column) == 0) {\n if (this.isEnd(row, column)) {\n return false;\n }\n else {\n return true;\n }\n }\n return false;\n };\n Range.prototype.insideEnd = function (row, column) {\n if (this.compare(row, column) == 0) {\n if (this.isStart(row, column)) {\n return false;\n }\n else {\n return true;\n }\n }\n return false;\n };\n Range.prototype.compare = function (row, column) {\n if (!this.isMultiLine()) {\n if (row === this.start.row) {\n return column < this.start.column ? -1 : (column > this.end.column ? 1 : 0);\n }\n }\n if (row < this.start.row)\n return -1;\n if (row > this.end.row)\n return 1;\n if (this.start.row === row)\n return column >= this.start.column ? 0 : -1;\n if (this.end.row === row)\n return column <= this.end.column ? 0 : 1;\n return 0;\n };\n Range.prototype.compareStart = function (row, column) {\n if (this.start.row == row && this.start.column == column) {\n return -1;\n }\n else {\n return this.compare(row, column);\n }\n };\n Range.prototype.compareEnd = function (row, column) {\n if (this.end.row == row && this.end.column == column) {\n return 1;\n }\n else {\n return this.compare(row, column);\n }\n };\n Range.prototype.compareInside = function (row, column) {\n if (this.end.row == row && this.end.column == column) {\n return 1;\n }\n else if (this.start.row == row && this.start.column == column) {\n return -1;\n }\n else {\n return this.compare(row, column);\n }\n };\n Range.prototype.clipRows = function (firstRow, lastRow) {\n if (this.end.row > lastRow)\n var end = { row: lastRow + 1, column: 0 };\n else if (this.end.row < firstRow)\n var end = { row: firstRow, column: 0 };\n if (this.start.row > lastRow)\n var start = { row: lastRow + 1, column: 0 };\n else if (this.start.row < firstRow)\n var start = { row: firstRow, column: 0 };\n return Range.fromPoints(start || this.start, end || this.end);\n };\n Range.prototype.extend = function (row, column) {\n var cmp = this.compare(row, column);\n if (cmp == 0)\n return this;\n else if (cmp == -1)\n var start = { row: row, column: column };\n else\n var end = { row: row, column: column };\n return Range.fromPoints(start || this.start, end || this.end);\n };\n Range.prototype.isEmpty = function () {\n return (this.start.row === this.end.row && this.start.column === this.end.column);\n };\n Range.prototype.isMultiLine = function () {\n return (this.start.row !== this.end.row);\n };\n Range.prototype.clone = function () {\n return Range.fromPoints(this.start, this.end);\n };\n Range.prototype.collapseRows = function () {\n if (this.end.column == 0)\n return new Range(this.start.row, 0, Math.max(this.start.row, this.end.row - 1), 0);\n else\n return new Range(this.start.row, 0, this.end.row, 0);\n };\n Range.prototype.toScreenRange = function (session) {\n var screenPosStart = session.documentToScreenPosition(this.start);\n var screenPosEnd = session.documentToScreenPosition(this.end);\n return new Range(screenPosStart.row, screenPosStart.column, screenPosEnd.row, screenPosEnd.column);\n };\n Range.prototype.moveBy = function (row, column) {\n this.start.row += row;\n this.start.column += column;\n this.end.row += row;\n this.end.column += column;\n };\n return Range;\n}());\nRange.fromPoints = function (start, end) {\n return new Range(start.row, start.column, end.row, end.column);\n};\nRange.comparePoints = comparePoints;\nRange.comparePoints = function (p1, p2) {\n return p1.row - p2.row || p1.column - p2.column;\n};\nexports.Range = Range;\n\n});\n\nace.define(\"ace/lib/keys\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\"], function(require, exports, module){/*! @license\n==========================================================================\nSproutCore -- JavaScript Application Framework\ncopyright 2006-2009, Sprout Systems Inc., Apple Inc. and contributors.\n\nPermission is hereby granted, free of charge, to any person obtaining a\ncopy of this software and associated documentation files (the \"Software\"),\nto deal in the Software without restriction, including without limitation\nthe rights to use, copy, modify, merge, publish, distribute, sublicense,\nand/or sell copies of the Software, and to permit persons to whom the\nSoftware is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\nFROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n\nSproutCore and the SproutCore logo are trademarks of Sprout Systems, Inc.\n\nFor more information about SproutCore, visit http://www.sproutcore.com\n\n\n==========================================================================\n@license */\n\"use strict\";\nvar oop = require(\"./oop\");\nvar Keys = (function () {\n var ret = {\n MODIFIER_KEYS: {\n 16: 'Shift', 17: 'Ctrl', 18: 'Alt', 224: 'Meta',\n 91: 'MetaLeft', 92: 'MetaRight', 93: 'ContextMenu'\n },\n KEY_MODS: {\n \"ctrl\": 1, \"alt\": 2, \"option\": 2, \"shift\": 4,\n \"super\": 8, \"meta\": 8, \"command\": 8, \"cmd\": 8,\n \"control\": 1\n },\n FUNCTION_KEYS: {\n 8: \"Backspace\",\n 9: \"Tab\",\n 13: \"Return\",\n 19: \"Pause\",\n 27: \"Esc\",\n 32: \"Space\",\n 33: \"PageUp\",\n 34: \"PageDown\",\n 35: \"End\",\n 36: \"Home\",\n 37: \"Left\",\n 38: \"Up\",\n 39: \"Right\",\n 40: \"Down\",\n 44: \"Print\",\n 45: \"Insert\",\n 46: \"Delete\",\n 96: \"Numpad0\",\n 97: \"Numpad1\",\n 98: \"Numpad2\",\n 99: \"Numpad3\",\n 100: \"Numpad4\",\n 101: \"Numpad5\",\n 102: \"Numpad6\",\n 103: \"Numpad7\",\n 104: \"Numpad8\",\n 105: \"Numpad9\",\n '-13': \"NumpadEnter\",\n 112: \"F1\",\n 113: \"F2\",\n 114: \"F3\",\n 115: \"F4\",\n 116: \"F5\",\n 117: \"F6\",\n 118: \"F7\",\n 119: \"F8\",\n 120: \"F9\",\n 121: \"F10\",\n 122: \"F11\",\n 123: \"F12\",\n 144: \"Numlock\",\n 145: \"Scrolllock\"\n },\n PRINTABLE_KEYS: {\n 32: ' ', 48: '0', 49: '1', 50: '2', 51: '3', 52: '4', 53: '5',\n 54: '6', 55: '7', 56: '8', 57: '9', 59: ';', 61: '=', 65: 'a',\n 66: 'b', 67: 'c', 68: 'd', 69: 'e', 70: 'f', 71: 'g', 72: 'h',\n 73: 'i', 74: 'j', 75: 'k', 76: 'l', 77: 'm', 78: 'n', 79: 'o',\n 80: 'p', 81: 'q', 82: 'r', 83: 's', 84: 't', 85: 'u', 86: 'v',\n 87: 'w', 88: 'x', 89: 'y', 90: 'z', 107: '+', 109: '-', 110: '.',\n 186: ';', 187: '=', 188: ',', 189: '-', 190: '.', 191: '/', 192: '`',\n 219: '[', 220: '\\\\', 221: ']', 222: \"'\", 111: '/', 106: '*'\n }\n };\n ret.PRINTABLE_KEYS[173] = '-';\n var name, i;\n for (i in ret.FUNCTION_KEYS) {\n name = ret.FUNCTION_KEYS[i].toLowerCase();\n ret[name] = parseInt(i, 10);\n }\n for (i in ret.PRINTABLE_KEYS) {\n name = ret.PRINTABLE_KEYS[i].toLowerCase();\n ret[name] = parseInt(i, 10);\n }\n oop.mixin(ret, ret.MODIFIER_KEYS);\n oop.mixin(ret, ret.PRINTABLE_KEYS);\n oop.mixin(ret, ret.FUNCTION_KEYS);\n ret.enter = ret[\"return\"];\n ret.escape = ret.esc;\n ret.del = ret[\"delete\"];\n (function () {\n var mods = [\"cmd\", \"ctrl\", \"alt\", \"shift\"];\n for (var i = Math.pow(2, mods.length); i--;) {\n ret.KEY_MODS[i] = mods.filter(function (x) {\n return i & ret.KEY_MODS[x];\n }).join(\"-\") + \"-\";\n }\n })();\n ret.KEY_MODS[0] = \"\";\n ret.KEY_MODS[-1] = \"input-\";\n return ret;\n})();\noop.mixin(exports, Keys);\nexports.default = exports;\nexports.keyCodeToString = function (keyCode) {\n var keyString = Keys[keyCode];\n if (typeof keyString != \"string\")\n keyString = String.fromCharCode(keyCode);\n return keyString.toLowerCase();\n};\n\n});\n\nace.define(\"ace/lib/event\",[\"require\",\"exports\",\"module\",\"ace/lib/keys\",\"ace/lib/useragent\"], function(require, exports, module){\"use strict\";\nvar keys = require(\"./keys\");\nvar useragent = require(\"./useragent\");\nvar pressedKeys = null;\nvar ts = 0;\nvar activeListenerOptions;\nfunction detectListenerOptionsSupport() {\n activeListenerOptions = false;\n try {\n document.createComment(\"\").addEventListener(\"test\", function () { }, {\n get passive() {\n activeListenerOptions = { passive: false };\n }\n });\n }\n catch (e) { }\n}\nfunction getListenerOptions() {\n if (activeListenerOptions == undefined)\n detectListenerOptionsSupport();\n return activeListenerOptions;\n}\nfunction EventListener(elem, type, callback) {\n this.elem = elem;\n this.type = type;\n this.callback = callback;\n}\nEventListener.prototype.destroy = function () {\n removeListener(this.elem, this.type, this.callback);\n this.elem = this.type = this.callback = undefined;\n};\nvar addListener = exports.addListener = function (elem, type, callback, destroyer) {\n elem.addEventListener(type, callback, getListenerOptions());\n if (destroyer)\n destroyer.$toDestroy.push(new EventListener(elem, type, callback));\n};\nvar removeListener = exports.removeListener = function (elem, type, callback) {\n elem.removeEventListener(type, callback, getListenerOptions());\n};\nexports.stopEvent = function (e) {\n exports.stopPropagation(e);\n exports.preventDefault(e);\n return false;\n};\nexports.stopPropagation = function (e) {\n if (e.stopPropagation)\n e.stopPropagation();\n};\nexports.preventDefault = function (e) {\n if (e.preventDefault)\n e.preventDefault();\n};\nexports.getButton = function (e) {\n if (e.type == \"dblclick\")\n return 0;\n if (e.type == \"contextmenu\" || (useragent.isMac && (e.ctrlKey && !e.altKey && !e.shiftKey)))\n return 2;\n return e.button;\n};\nexports.capture = function (el, eventHandler, releaseCaptureHandler) {\n var ownerDocument = el && el.ownerDocument || document;\n function onMouseUp(e) {\n eventHandler && eventHandler(e);\n releaseCaptureHandler && releaseCaptureHandler(e);\n removeListener(ownerDocument, \"mousemove\", eventHandler);\n removeListener(ownerDocument, \"mouseup\", onMouseUp);\n removeListener(ownerDocument, \"dragstart\", onMouseUp);\n }\n addListener(ownerDocument, \"mousemove\", eventHandler);\n addListener(ownerDocument, \"mouseup\", onMouseUp);\n addListener(ownerDocument, \"dragstart\", onMouseUp);\n return onMouseUp;\n};\nexports.addMouseWheelListener = function (el, callback, destroyer) {\n addListener(el, \"wheel\", function (e) {\n var factor = 0.15;\n var deltaX = e.deltaX || 0;\n var deltaY = e.deltaY || 0;\n switch (e.deltaMode) {\n case e.DOM_DELTA_PIXEL:\n e.wheelX = deltaX * factor;\n e.wheelY = deltaY * factor;\n break;\n case e.DOM_DELTA_LINE:\n var linePixels = 15;\n e.wheelX = deltaX * linePixels;\n e.wheelY = deltaY * linePixels;\n break;\n case e.DOM_DELTA_PAGE:\n var pagePixels = 150;\n e.wheelX = deltaX * pagePixels;\n e.wheelY = deltaY * pagePixels;\n break;\n }\n callback(e);\n }, destroyer);\n};\nexports.addMultiMouseDownListener = function (elements, timeouts, eventHandler, callbackName, destroyer) {\n var clicks = 0;\n var startX, startY, timer;\n var eventNames = {\n 2: \"dblclick\",\n 3: \"tripleclick\",\n 4: \"quadclick\"\n };\n function onMousedown(e) {\n if (exports.getButton(e) !== 0) {\n clicks = 0;\n }\n else if (e.detail > 1) {\n clicks++;\n if (clicks > 4)\n clicks = 1;\n }\n else {\n clicks = 1;\n }\n if (useragent.isIE) {\n var isNewClick = Math.abs(e.clientX - startX) > 5 || Math.abs(e.clientY - startY) > 5;\n if (!timer || isNewClick)\n clicks = 1;\n if (timer)\n clearTimeout(timer);\n timer = setTimeout(function () { timer = null; }, timeouts[clicks - 1] || 600);\n if (clicks == 1) {\n startX = e.clientX;\n startY = e.clientY;\n }\n }\n e._clicks = clicks;\n eventHandler[callbackName](\"mousedown\", e);\n if (clicks > 4)\n clicks = 0;\n else if (clicks > 1)\n return eventHandler[callbackName](eventNames[clicks], e);\n }\n if (!Array.isArray(elements))\n elements = [elements];\n elements.forEach(function (el) {\n addListener(el, \"mousedown\", onMousedown, destroyer);\n });\n};\nvar getModifierHash = function (e) {\n return 0 | (e.ctrlKey ? 1 : 0) | (e.altKey ? 2 : 0) | (e.shiftKey ? 4 : 0) | (e.metaKey ? 8 : 0);\n};\nexports.getModifierString = function (e) {\n return keys.KEY_MODS[getModifierHash(e)];\n};\nfunction normalizeCommandKeys(callback, e, keyCode) {\n var hashId = getModifierHash(e);\n if (!useragent.isMac && pressedKeys) {\n if (e.getModifierState && (e.getModifierState(\"OS\") || e.getModifierState(\"Win\")))\n hashId |= 8;\n if (pressedKeys.altGr) {\n if ((3 & hashId) != 3)\n pressedKeys.altGr = 0;\n else\n return;\n }\n if (keyCode === 18 || keyCode === 17) {\n var location = \"location\" in e ? e.location : e.keyLocation;\n if (keyCode === 17 && location === 1) {\n if (pressedKeys[keyCode] == 1)\n ts = e.timeStamp;\n }\n else if (keyCode === 18 && hashId === 3 && location === 2) {\n var dt = e.timeStamp - ts;\n if (dt < 50)\n pressedKeys.altGr = true;\n }\n }\n }\n if (keyCode in keys.MODIFIER_KEYS) {\n keyCode = -1;\n }\n if (!hashId && keyCode === 13) {\n var location = \"location\" in e ? e.location : e.keyLocation;\n if (location === 3) {\n callback(e, hashId, -keyCode);\n if (e.defaultPrevented)\n return;\n }\n }\n if (useragent.isChromeOS && hashId & 8) {\n callback(e, hashId, keyCode);\n if (e.defaultPrevented)\n return;\n else\n hashId &= ~8;\n }\n if (!hashId && !(keyCode in keys.FUNCTION_KEYS) && !(keyCode in keys.PRINTABLE_KEYS)) {\n return false;\n }\n return callback(e, hashId, keyCode);\n}\nexports.addCommandKeyListener = function (el, callback, destroyer) {\n if (useragent.isOldGecko || (useragent.isOpera && !(\"KeyboardEvent\" in window))) {\n var lastKeyDownKeyCode = null;\n addListener(el, \"keydown\", function (e) {\n lastKeyDownKeyCode = e.keyCode;\n }, destroyer);\n addListener(el, \"keypress\", function (e) {\n return normalizeCommandKeys(callback, e, lastKeyDownKeyCode);\n }, destroyer);\n }\n else {\n var lastDefaultPrevented = null;\n addListener(el, \"keydown\", function (e) {\n pressedKeys[e.keyCode] = (pressedKeys[e.keyCode] || 0) + 1;\n var result = normalizeCommandKeys(callback, e, e.keyCode);\n lastDefaultPrevented = e.defaultPrevented;\n return result;\n }, destroyer);\n addListener(el, \"keypress\", function (e) {\n if (lastDefaultPrevented && (e.ctrlKey || e.altKey || e.shiftKey || e.metaKey)) {\n exports.stopEvent(e);\n lastDefaultPrevented = null;\n }\n }, destroyer);\n addListener(el, \"keyup\", function (e) {\n pressedKeys[e.keyCode] = null;\n }, destroyer);\n if (!pressedKeys) {\n resetPressedKeys();\n addListener(window, \"focus\", resetPressedKeys);\n }\n }\n};\nfunction resetPressedKeys() {\n pressedKeys = Object.create(null);\n}\nif (typeof window == \"object\" && window.postMessage && !useragent.isOldIE) {\n var postMessageId = 1;\n exports.nextTick = function (callback, win) {\n win = win || window;\n var messageName = \"zero-timeout-message-\" + (postMessageId++);\n var listener = function (e) {\n if (e.data == messageName) {\n exports.stopPropagation(e);\n removeListener(win, \"message\", listener);\n callback();\n }\n };\n addListener(win, \"message\", listener);\n win.postMessage(messageName, \"*\");\n };\n}\nexports.$idleBlocked = false;\nexports.onIdle = function (cb, timeout) {\n return setTimeout(function handler() {\n if (!exports.$idleBlocked) {\n cb();\n }\n else {\n setTimeout(handler, 100);\n }\n }, timeout);\n};\nexports.$idleBlockId = null;\nexports.blockIdle = function (delay) {\n if (exports.$idleBlockId)\n clearTimeout(exports.$idleBlockId);\n exports.$idleBlocked = true;\n exports.$idleBlockId = setTimeout(function () {\n exports.$idleBlocked = false;\n }, delay || 100);\n};\nexports.nextFrame = typeof window == \"object\" && (window.requestAnimationFrame\n || window.mozRequestAnimationFrame\n || window.webkitRequestAnimationFrame\n || window.msRequestAnimationFrame\n || window.oRequestAnimationFrame);\nif (exports.nextFrame)\n exports.nextFrame = exports.nextFrame.bind(window);\nelse\n exports.nextFrame = function (callback) {\n setTimeout(callback, 17);\n };\n\n});\n\nace.define(\"ace/clipboard\",[\"require\",\"exports\",\"module\"], function(require, exports, module){\"use strict\";\nvar $cancelT;\nmodule.exports = {\n lineMode: false,\n pasteCancelled: function () {\n if ($cancelT && $cancelT > Date.now() - 50)\n return true;\n return $cancelT = false;\n },\n cancel: function () {\n $cancelT = Date.now();\n }\n};\n\n});\n\nace.define(\"ace/keyboard/textinput\",[\"require\",\"exports\",\"module\",\"ace/lib/event\",\"ace/config\",\"ace/lib/useragent\",\"ace/lib/dom\",\"ace/lib/lang\",\"ace/clipboard\",\"ace/lib/keys\"], function(require, exports, module){\"use strict\";\nvar event = require(\"../lib/event\");\nvar nls = require(\"../config\").nls;\nvar useragent = require(\"../lib/useragent\");\nvar dom = require(\"../lib/dom\");\nvar lang = require(\"../lib/lang\");\nvar clipboard = require(\"../clipboard\");\nvar BROKEN_SETDATA = useragent.isChrome < 18;\nvar USE_IE_MIME_TYPE = useragent.isIE;\nvar HAS_FOCUS_ARGS = useragent.isChrome > 63;\nvar MAX_LINE_LENGTH = 400;\nvar KEYS = require(\"../lib/keys\");\nvar MODS = KEYS.KEY_MODS;\nvar isIOS = useragent.isIOS;\nvar valueResetRegex = isIOS ? /\\s/ : /\\n/;\nvar isMobile = useragent.isMobile;\nvar TextInput = function (parentNode, host) {\n var text = dom.createElement(\"textarea\");\n text.className = \"ace_text-input\";\n text.setAttribute(\"wrap\", \"off\");\n text.setAttribute(\"autocorrect\", \"off\");\n text.setAttribute(\"autocapitalize\", \"off\");\n text.setAttribute(\"spellcheck\", false);\n text.style.opacity = \"0\";\n parentNode.insertBefore(text, parentNode.firstChild);\n var copied = false;\n var pasted = false;\n var inComposition = false;\n var sendingText = false;\n var tempStyle = '';\n if (!isMobile)\n text.style.fontSize = \"1px\";\n var commandMode = false;\n var ignoreFocusEvents = false;\n var lastValue = \"\";\n var lastSelectionStart = 0;\n var lastSelectionEnd = 0;\n var lastRestoreEnd = 0;\n var rowStart = Number.MAX_SAFE_INTEGER;\n var rowEnd = Number.MIN_SAFE_INTEGER;\n var numberOfExtraLines = 0;\n try {\n var isFocused = document.activeElement === text;\n }\n catch (e) { }\n this.setNumberOfExtraLines = function (number) {\n rowStart = Number.MAX_SAFE_INTEGER;\n rowEnd = Number.MIN_SAFE_INTEGER;\n if (number < 0) {\n numberOfExtraLines = 0;\n return;\n }\n numberOfExtraLines = number;\n };\n this.setAriaOptions = function (options) {\n if (options.activeDescendant) {\n text.setAttribute(\"aria-haspopup\", \"true\");\n text.setAttribute(\"aria-autocomplete\", options.inline ? \"both\" : \"list\");\n text.setAttribute(\"aria-activedescendant\", options.activeDescendant);\n }\n else {\n text.setAttribute(\"aria-haspopup\", \"false\");\n text.setAttribute(\"aria-autocomplete\", \"both\");\n text.removeAttribute(\"aria-activedescendant\");\n }\n if (options.role) {\n text.setAttribute(\"role\", options.role);\n }\n if (options.setLabel) {\n text.setAttribute(\"aria-roledescription\", nls(\"editor\"));\n if (host.session) {\n var row = host.session.selection.cursor.row;\n text.setAttribute(\"aria-label\", nls(\"Cursor at row $0\", [row + 1]));\n }\n }\n };\n this.setAriaOptions({ role: \"textbox\" });\n event.addListener(text, \"blur\", function (e) {\n if (ignoreFocusEvents)\n return;\n host.onBlur(e);\n isFocused = false;\n }, host);\n event.addListener(text, \"focus\", function (e) {\n if (ignoreFocusEvents)\n return;\n isFocused = true;\n if (useragent.isEdge) {\n try {\n if (!document.hasFocus())\n return;\n }\n catch (e) { }\n }\n host.onFocus(e);\n if (useragent.isEdge)\n setTimeout(resetSelection);\n else\n resetSelection();\n }, host);\n this.$focusScroll = false;\n this.focus = function () {\n this.setAriaOptions({\n setLabel: host.renderer.enableKeyboardAccessibility\n });\n if (tempStyle || HAS_FOCUS_ARGS || this.$focusScroll == \"browser\")\n return text.focus({ preventScroll: true });\n var top = text.style.top;\n text.style.position = \"fixed\";\n text.style.top = \"0px\";\n try {\n var isTransformed = text.getBoundingClientRect().top != 0;\n }\n catch (e) {\n return;\n }\n var ancestors = [];\n if (isTransformed) {\n var t = text.parentElement;\n while (t && t.nodeType == 1) {\n ancestors.push(t);\n t.setAttribute(\"ace_nocontext\", true);\n if (!t.parentElement && t.getRootNode)\n t = t.getRootNode().host;\n else\n t = t.parentElement;\n }\n }\n text.focus({ preventScroll: true });\n if (isTransformed) {\n ancestors.forEach(function (p) {\n p.removeAttribute(\"ace_nocontext\");\n });\n }\n setTimeout(function () {\n text.style.position = \"\";\n if (text.style.top == \"0px\")\n text.style.top = top;\n }, 0);\n };\n this.blur = function () {\n text.blur();\n };\n this.isFocused = function () {\n return isFocused;\n };\n host.on(\"beforeEndOperation\", function () {\n var curOp = host.curOp;\n var commandName = curOp && curOp.command && curOp.command.name;\n if (commandName == \"insertstring\")\n return;\n var isUserAction = commandName && (curOp.docChanged || curOp.selectionChanged);\n if (inComposition && isUserAction) {\n lastValue = text.value = \"\";\n onCompositionEnd();\n }\n resetSelection();\n });\n var positionToSelection = function (row, column) {\n var selection = column;\n for (var i = 1; i <= row - rowStart && i < 2 * numberOfExtraLines + 1; i++) {\n selection += host.session.getLine(row - i).length + 1;\n }\n return selection;\n };\n var resetSelection = isIOS\n ? function (value) {\n if (!isFocused || (copied && !value) || sendingText)\n return;\n if (!value)\n value = \"\";\n var newValue = \"\\n ab\" + value + \"cde fg\\n\";\n if (newValue != text.value)\n text.value = lastValue = newValue;\n var selectionStart = 4;\n var selectionEnd = 4 + (value.length || (host.selection.isEmpty() ? 0 : 1));\n if (lastSelectionStart != selectionStart || lastSelectionEnd != selectionEnd) {\n text.setSelectionRange(selectionStart, selectionEnd);\n }\n lastSelectionStart = selectionStart;\n lastSelectionEnd = selectionEnd;\n }\n : function () {\n if (inComposition || sendingText)\n return;\n if (!isFocused && !afterContextMenu)\n return;\n inComposition = true;\n var selectionStart = 0;\n var selectionEnd = 0;\n var line = \"\";\n if (host.session) {\n var selection = host.selection;\n var range = selection.getRange();\n var row = selection.cursor.row;\n if (row === rowEnd + 1) {\n rowStart = rowEnd + 1;\n rowEnd = rowStart + 2 * numberOfExtraLines;\n }\n else if (row === rowStart - 1) {\n rowEnd = rowStart - 1;\n rowStart = rowEnd - 2 * numberOfExtraLines;\n }\n else if (row < rowStart - 1 || row > rowEnd + 1) {\n rowStart = row > numberOfExtraLines ? row - numberOfExtraLines : 0;\n rowEnd = row > numberOfExtraLines ? row + numberOfExtraLines : 2 * numberOfExtraLines;\n }\n var lines = [];\n for (var i = rowStart; i <= rowEnd; i++) {\n lines.push(host.session.getLine(i));\n }\n line = lines.join('\\n');\n selectionStart = positionToSelection(range.start.row, range.start.column);\n selectionEnd = positionToSelection(range.end.row, range.end.column);\n if (range.start.row < rowStart) {\n var prevLine = host.session.getLine(rowStart - 1);\n selectionStart = range.start.row < rowStart - 1 ? 0 : selectionStart;\n selectionEnd += prevLine.length + 1;\n line = prevLine + \"\\n\" + line;\n }\n else if (range.end.row > rowEnd) {\n var nextLine = host.session.getLine(rowEnd + 1);\n selectionEnd = range.end.row > rowEnd + 1 ? nextLine.length : range.end.column;\n selectionEnd += line.length + 1;\n line = line + \"\\n\" + nextLine;\n }\n else if (isMobile && row > 0) {\n line = \"\\n\" + line;\n selectionEnd += 1;\n selectionStart += 1;\n }\n if (line.length > MAX_LINE_LENGTH) {\n if (selectionStart < MAX_LINE_LENGTH && selectionEnd < MAX_LINE_LENGTH) {\n line = line.slice(0, MAX_LINE_LENGTH);\n }\n else {\n line = \"\\n\";\n if (selectionStart == selectionEnd) {\n selectionStart = selectionEnd = 0;\n }\n else {\n selectionStart = 0;\n selectionEnd = 1;\n }\n }\n }\n var newValue = line + \"\\n\\n\";\n if (newValue != lastValue) {\n text.value = lastValue = newValue;\n lastSelectionStart = lastSelectionEnd = newValue.length;\n }\n }\n if (afterContextMenu) {\n lastSelectionStart = text.selectionStart;\n lastSelectionEnd = text.selectionEnd;\n }\n if (lastSelectionEnd != selectionEnd\n || lastSelectionStart != selectionStart\n || text.selectionEnd != lastSelectionEnd // on ie edge selectionEnd changes silently after the initialization\n ) {\n try {\n text.setSelectionRange(selectionStart, selectionEnd);\n lastSelectionStart = selectionStart;\n lastSelectionEnd = selectionEnd;\n }\n catch (e) { }\n }\n inComposition = false;\n };\n this.resetSelection = resetSelection;\n if (isFocused)\n host.onFocus();\n var isAllSelected = function (text) {\n return text.selectionStart === 0 && text.selectionEnd >= lastValue.length\n && text.value === lastValue && lastValue\n && text.selectionEnd !== lastSelectionEnd;\n };\n var onSelect = function (e) {\n if (inComposition)\n return;\n if (copied) {\n copied = false;\n }\n else if (isAllSelected(text)) {\n host.selectAll();\n resetSelection();\n }\n else if (isMobile && text.selectionStart != lastSelectionStart) {\n resetSelection();\n }\n };\n var inputHandler = null;\n this.setInputHandler = function (cb) { inputHandler = cb; };\n this.getInputHandler = function () { return inputHandler; };\n var afterContextMenu = false;\n var sendText = function (value, fromInput) {\n if (afterContextMenu)\n afterContextMenu = false;\n if (pasted) {\n resetSelection();\n if (value)\n host.onPaste(value);\n pasted = false;\n return \"\";\n }\n else {\n var selectionStart = text.selectionStart;\n var selectionEnd = text.selectionEnd;\n var extendLeft = lastSelectionStart;\n var extendRight = lastValue.length - lastSelectionEnd;\n var inserted = value;\n var restoreStart = value.length - selectionStart;\n var restoreEnd = value.length - selectionEnd;\n var i = 0;\n while (extendLeft > 0 && lastValue[i] == value[i]) {\n i++;\n extendLeft--;\n }\n inserted = inserted.slice(i);\n i = 1;\n while (extendRight > 0 && lastValue.length - i > lastSelectionStart - 1 && lastValue[lastValue.length - i] == value[value.length - i]) {\n i++;\n extendRight--;\n }\n restoreStart -= i - 1;\n restoreEnd -= i - 1;\n var endIndex = inserted.length - i + 1;\n if (endIndex < 0) {\n extendLeft = -endIndex;\n endIndex = 0;\n }\n inserted = inserted.slice(0, endIndex);\n if (!fromInput && !inserted && !restoreStart && !extendLeft && !extendRight && !restoreEnd)\n return \"\";\n sendingText = true;\n var shouldReset = false;\n if (useragent.isAndroid && inserted == \". \") {\n inserted = \" \";\n shouldReset = true;\n }\n if (inserted && !extendLeft && !extendRight && !restoreStart && !restoreEnd || commandMode) {\n host.onTextInput(inserted);\n }\n else {\n host.onTextInput(inserted, {\n extendLeft: extendLeft,\n extendRight: extendRight,\n restoreStart: restoreStart,\n restoreEnd: restoreEnd\n });\n }\n sendingText = false;\n lastValue = value;\n lastSelectionStart = selectionStart;\n lastSelectionEnd = selectionEnd;\n lastRestoreEnd = restoreEnd;\n return shouldReset ? \"\\n\" : inserted;\n }\n };\n var onInput = function (e) {\n if (inComposition)\n return onCompositionUpdate();\n if (e && e.inputType) {\n if (e.inputType == \"historyUndo\")\n return host.execCommand(\"undo\");\n if (e.inputType == \"historyRedo\")\n return host.execCommand(\"redo\");\n }\n var data = text.value;\n var inserted = sendText(data, true);\n if (data.length > MAX_LINE_LENGTH + 100\n || valueResetRegex.test(inserted)\n || isMobile && lastSelectionStart < 1 && lastSelectionStart == lastSelectionEnd) {\n resetSelection();\n }\n };\n var handleClipboardData = function (e, data, forceIEMime) {\n var clipboardData = e.clipboardData || window.clipboardData;\n if (!clipboardData || BROKEN_SETDATA)\n return;\n var mime = USE_IE_MIME_TYPE || forceIEMime ? \"Text\" : \"text/plain\";\n try {\n if (data) {\n return clipboardData.setData(mime, data) !== false;\n }\n else {\n return clipboardData.getData(mime);\n }\n }\n catch (e) {\n if (!forceIEMime)\n return handleClipboardData(e, data, true);\n }\n };\n var doCopy = function (e, isCut) {\n var data = host.getCopyText();\n if (!data)\n return event.preventDefault(e);\n if (handleClipboardData(e, data)) {\n if (isIOS) {\n resetSelection(data);\n copied = data;\n setTimeout(function () {\n copied = false;\n }, 10);\n }\n isCut ? host.onCut() : host.onCopy();\n event.preventDefault(e);\n }\n else {\n copied = true;\n text.value = data;\n text.select();\n setTimeout(function () {\n copied = false;\n resetSelection();\n isCut ? host.onCut() : host.onCopy();\n });\n }\n };\n var onCut = function (e) {\n doCopy(e, true);\n };\n var onCopy = function (e) {\n doCopy(e, false);\n };\n var onPaste = function (e) {\n var data = handleClipboardData(e);\n if (clipboard.pasteCancelled())\n return;\n if (typeof data == \"string\") {\n if (data)\n host.onPaste(data, e);\n if (useragent.isIE)\n setTimeout(resetSelection);\n event.preventDefault(e);\n }\n else {\n text.value = \"\";\n pasted = true;\n }\n };\n event.addCommandKeyListener(text, host.onCommandKey.bind(host), host);\n event.addListener(text, \"select\", onSelect, host);\n event.addListener(text, \"input\", onInput, host);\n event.addListener(text, \"cut\", onCut, host);\n event.addListener(text, \"copy\", onCopy, host);\n event.addListener(text, \"paste\", onPaste, host);\n if (!('oncut' in text) || !('oncopy' in text) || !('onpaste' in text)) {\n event.addListener(parentNode, \"keydown\", function (e) {\n if ((useragent.isMac && !e.metaKey) || !e.ctrlKey)\n return;\n switch (e.keyCode) {\n case 67:\n onCopy(e);\n break;\n case 86:\n onPaste(e);\n break;\n case 88:\n onCut(e);\n break;\n }\n }, host);\n }\n var onCompositionStart = function (e) {\n if (inComposition || !host.onCompositionStart || host.$readOnly)\n return;\n inComposition = {};\n if (commandMode)\n return;\n if (e.data)\n inComposition.useTextareaForIME = false;\n setTimeout(onCompositionUpdate, 0);\n host._signal(\"compositionStart\");\n host.on(\"mousedown\", cancelComposition);\n var range = host.getSelectionRange();\n range.end.row = range.start.row;\n range.end.column = range.start.column;\n inComposition.markerRange = range;\n inComposition.selectionStart = lastSelectionStart;\n host.onCompositionStart(inComposition);\n if (inComposition.useTextareaForIME) {\n lastValue = text.value = \"\";\n lastSelectionStart = 0;\n lastSelectionEnd = 0;\n }\n else {\n if (text.msGetInputContext)\n inComposition.context = text.msGetInputContext();\n if (text.getInputContext)\n inComposition.context = text.getInputContext();\n }\n };\n var onCompositionUpdate = function () {\n if (!inComposition || !host.onCompositionUpdate || host.$readOnly)\n return;\n if (commandMode)\n return cancelComposition();\n if (inComposition.useTextareaForIME) {\n host.onCompositionUpdate(text.value);\n }\n else {\n var data = text.value;\n sendText(data);\n if (inComposition.markerRange) {\n if (inComposition.context) {\n inComposition.markerRange.start.column = inComposition.selectionStart\n = inComposition.context.compositionStartOffset;\n }\n inComposition.markerRange.end.column = inComposition.markerRange.start.column\n + lastSelectionEnd - inComposition.selectionStart + lastRestoreEnd;\n }\n }\n };\n var onCompositionEnd = function (e) {\n if (!host.onCompositionEnd || host.$readOnly)\n return;\n inComposition = false;\n host.onCompositionEnd();\n host.off(\"mousedown\", cancelComposition);\n if (e)\n onInput();\n };\n function cancelComposition() {\n ignoreFocusEvents = true;\n text.blur();\n text.focus();\n ignoreFocusEvents = false;\n }\n var syncComposition = lang.delayedCall(onCompositionUpdate, 50).schedule.bind(null, null);\n function onKeyup(e) {\n if (e.keyCode == 27 && text.value.length < text.selectionStart) {\n if (!inComposition)\n lastValue = text.value;\n lastSelectionStart = lastSelectionEnd = -1;\n resetSelection();\n }\n syncComposition();\n }\n event.addListener(text, \"compositionstart\", onCompositionStart, host);\n event.addListener(text, \"compositionupdate\", onCompositionUpdate, host);\n event.addListener(text, \"keyup\", onKeyup, host);\n event.addListener(text, \"keydown\", syncComposition, host);\n event.addListener(text, \"compositionend\", onCompositionEnd, host);\n this.getElement = function () {\n return text;\n };\n this.setCommandMode = function (value) {\n commandMode = value;\n text.readOnly = false;\n };\n this.setReadOnly = function (readOnly) {\n if (!commandMode)\n text.readOnly = readOnly;\n };\n this.setCopyWithEmptySelection = function (value) {\n };\n this.onContextMenu = function (e) {\n afterContextMenu = true;\n resetSelection();\n host._emit(\"nativecontextmenu\", { target: host, domEvent: e });\n this.moveToMouse(e, true);\n };\n this.moveToMouse = function (e, bringToFront) {\n if (!tempStyle)\n tempStyle = text.style.cssText;\n text.style.cssText = (bringToFront ? \"z-index:100000;\" : \"\")\n + (useragent.isIE ? \"opacity:0.1;\" : \"\")\n + \"text-indent: -\" + (lastSelectionStart + lastSelectionEnd) * host.renderer.characterWidth * 0.5 + \"px;\";\n var rect = host.container.getBoundingClientRect();\n var style = dom.computedStyle(host.container);\n var top = rect.top + (parseInt(style.borderTopWidth) || 0);\n var left = rect.left + (parseInt(rect.borderLeftWidth) || 0);\n var maxTop = rect.bottom - top - text.clientHeight - 2;\n var move = function (e) {\n dom.translate(text, e.clientX - left - 2, Math.min(e.clientY - top - 2, maxTop));\n };\n move(e);\n if (e.type != \"mousedown\")\n return;\n host.renderer.$isMousePressed = true;\n clearTimeout(closeTimeout);\n if (useragent.isWin)\n event.capture(host.container, move, onContextMenuClose);\n };\n this.onContextMenuClose = onContextMenuClose;\n var closeTimeout;\n function onContextMenuClose() {\n clearTimeout(closeTimeout);\n closeTimeout = setTimeout(function () {\n if (tempStyle) {\n text.style.cssText = tempStyle;\n tempStyle = '';\n }\n host.renderer.$isMousePressed = false;\n if (host.renderer.$keepTextAreaAtCursor)\n host.renderer.$moveTextAreaToCursor();\n }, 0);\n }\n var onContextMenu = function (e) {\n host.textInput.onContextMenu(e);\n onContextMenuClose();\n };\n event.addListener(text, \"mouseup\", onContextMenu, host);\n event.addListener(text, \"mousedown\", function (e) {\n e.preventDefault();\n onContextMenuClose();\n }, host);\n event.addListener(host.renderer.scroller, \"contextmenu\", onContextMenu, host);\n event.addListener(text, \"contextmenu\", onContextMenu, host);\n if (isIOS)\n addIosSelectionHandler(parentNode, host, text);\n function addIosSelectionHandler(parentNode, host, text) {\n var typingResetTimeout = null;\n var typing = false;\n text.addEventListener(\"keydown\", function (e) {\n if (typingResetTimeout)\n clearTimeout(typingResetTimeout);\n typing = true;\n }, true);\n text.addEventListener(\"keyup\", function (e) {\n typingResetTimeout = setTimeout(function () {\n typing = false;\n }, 100);\n }, true);\n var detectArrowKeys = function (e) {\n if (document.activeElement !== text)\n return;\n if (typing || inComposition || host.$mouseHandler.isMousePressed)\n return;\n if (copied) {\n return;\n }\n var selectionStart = text.selectionStart;\n var selectionEnd = text.selectionEnd;\n var key = null;\n var modifier = 0;\n if (selectionStart == 0) {\n key = KEYS.up;\n }\n else if (selectionStart == 1) {\n key = KEYS.home;\n }\n else if (selectionEnd > lastSelectionEnd && lastValue[selectionEnd] == \"\\n\") {\n key = KEYS.end;\n }\n else if (selectionStart < lastSelectionStart && lastValue[selectionStart - 1] == \" \") {\n key = KEYS.left;\n modifier = MODS.option;\n }\n else if (selectionStart < lastSelectionStart\n || (selectionStart == lastSelectionStart\n && lastSelectionEnd != lastSelectionStart\n && selectionStart == selectionEnd)) {\n key = KEYS.left;\n }\n else if (selectionEnd > lastSelectionEnd && lastValue.slice(0, selectionEnd).split(\"\\n\").length > 2) {\n key = KEYS.down;\n }\n else if (selectionEnd > lastSelectionEnd && lastValue[selectionEnd - 1] == \" \") {\n key = KEYS.right;\n modifier = MODS.option;\n }\n else if (selectionEnd > lastSelectionEnd\n || (selectionEnd == lastSelectionEnd\n && lastSelectionEnd != lastSelectionStart\n && selectionStart == selectionEnd)) {\n key = KEYS.right;\n }\n if (selectionStart !== selectionEnd)\n modifier |= MODS.shift;\n if (key) {\n var result = host.onCommandKey({}, modifier, key);\n if (!result && host.commands) {\n key = KEYS.keyCodeToString(key);\n var command = host.commands.findKeyCommand(modifier, key);\n if (command)\n host.execCommand(command);\n }\n lastSelectionStart = selectionStart;\n lastSelectionEnd = selectionEnd;\n resetSelection(\"\");\n }\n };\n document.addEventListener(\"selectionchange\", detectArrowKeys);\n host.on(\"destroy\", function () {\n document.removeEventListener(\"selectionchange\", detectArrowKeys);\n });\n }\n this.destroy = function () {\n if (text.parentElement)\n text.parentElement.removeChild(text);\n };\n};\nexports.TextInput = TextInput;\nexports.$setUserAgentForTests = function (_isMobile, _isIOS) {\n isMobile = _isMobile;\n isIOS = _isIOS;\n};\n\n});\n\nace.define(\"ace/mouse/default_handlers\",[\"require\",\"exports\",\"module\",\"ace/lib/useragent\"], function(require, exports, module){\"use strict\";\nvar useragent = require(\"../lib/useragent\");\nvar DRAG_OFFSET = 0; // pixels\nvar SCROLL_COOLDOWN_T = 550; // milliseconds\nvar DefaultHandlers = /** @class */ (function () {\n function DefaultHandlers(mouseHandler) {\n mouseHandler.$clickSelection = null;\n var editor = mouseHandler.editor;\n editor.setDefaultHandler(\"mousedown\", this.onMouseDown.bind(mouseHandler));\n editor.setDefaultHandler(\"dblclick\", this.onDoubleClick.bind(mouseHandler));\n editor.setDefaultHandler(\"tripleclick\", this.onTripleClick.bind(mouseHandler));\n editor.setDefaultHandler(\"quadclick\", this.onQuadClick.bind(mouseHandler));\n editor.setDefaultHandler(\"mousewheel\", this.onMouseWheel.bind(mouseHandler));\n var exports = [\"select\", \"startSelect\", \"selectEnd\", \"selectAllEnd\", \"selectByWordsEnd\",\n \"selectByLinesEnd\", \"dragWait\", \"dragWaitEnd\", \"focusWait\"];\n exports.forEach(function (x) {\n mouseHandler[x] = this[x];\n }, this);\n mouseHandler.selectByLines = this.extendSelectionBy.bind(mouseHandler, \"getLineRange\");\n mouseHandler.selectByWords = this.extendSelectionBy.bind(mouseHandler, \"getWordRange\");\n }\n DefaultHandlers.prototype.onMouseDown = function (ev) {\n var inSelection = ev.inSelection();\n var pos = ev.getDocumentPosition();\n this.mousedownEvent = ev;\n var editor = this.editor;\n var button = ev.getButton();\n if (button !== 0) {\n var selectionRange = editor.getSelectionRange();\n var selectionEmpty = selectionRange.isEmpty();\n if (selectionEmpty || button == 1)\n editor.selection.moveToPosition(pos);\n if (button == 2) {\n editor.textInput.onContextMenu(ev.domEvent);\n if (!useragent.isMozilla)\n ev.preventDefault();\n }\n return;\n }\n this.mousedownEvent.time = Date.now();\n if (inSelection && !editor.isFocused()) {\n editor.focus();\n if (this.$focusTimeout && !this.$clickSelection && !editor.inMultiSelectMode) {\n this.setState(\"focusWait\");\n this.captureMouse(ev);\n return;\n }\n }\n this.captureMouse(ev);\n this.startSelect(pos, ev.domEvent._clicks > 1);\n return ev.preventDefault();\n };\n DefaultHandlers.prototype.startSelect = function (pos, waitForClickSelection) {\n pos = pos || this.editor.renderer.screenToTextCoordinates(this.x, this.y);\n var editor = this.editor;\n if (!this.mousedownEvent)\n return;\n if (this.mousedownEvent.getShiftKey())\n editor.selection.selectToPosition(pos);\n else if (!waitForClickSelection)\n editor.selection.moveToPosition(pos);\n if (!waitForClickSelection)\n this.select();\n editor.setStyle(\"ace_selecting\");\n this.setState(\"select\");\n };\n DefaultHandlers.prototype.select = function () {\n var anchor, editor = this.editor;\n var cursor = editor.renderer.screenToTextCoordinates(this.x, this.y);\n if (this.$clickSelection) {\n var cmp = this.$clickSelection.comparePoint(cursor);\n if (cmp == -1) {\n anchor = this.$clickSelection.end;\n }\n else if (cmp == 1) {\n anchor = this.$clickSelection.start;\n }\n else {\n var orientedRange = calcRangeOrientation(this.$clickSelection, cursor);\n cursor = orientedRange.cursor;\n anchor = orientedRange.anchor;\n }\n editor.selection.setSelectionAnchor(anchor.row, anchor.column);\n }\n editor.selection.selectToPosition(cursor);\n editor.renderer.scrollCursorIntoView();\n };\n DefaultHandlers.prototype.extendSelectionBy = function (unitName) {\n var anchor, editor = this.editor;\n var cursor = editor.renderer.screenToTextCoordinates(this.x, this.y);\n var range = editor.selection[unitName](cursor.row, cursor.column);\n if (this.$clickSelection) {\n var cmpStart = this.$clickSelection.comparePoint(range.start);\n var cmpEnd = this.$clickSelection.comparePoint(range.end);\n if (cmpStart == -1 && cmpEnd <= 0) {\n anchor = this.$clickSelection.end;\n if (range.end.row != cursor.row || range.end.column != cursor.column)\n cursor = range.start;\n }\n else if (cmpEnd == 1 && cmpStart >= 0) {\n anchor = this.$clickSelection.start;\n if (range.start.row != cursor.row || range.start.column != cursor.column)\n cursor = range.end;\n }\n else if (cmpStart == -1 && cmpEnd == 1) {\n cursor = range.end;\n anchor = range.start;\n }\n else {\n var orientedRange = calcRangeOrientation(this.$clickSelection, cursor);\n cursor = orientedRange.cursor;\n anchor = orientedRange.anchor;\n }\n editor.selection.setSelectionAnchor(anchor.row, anchor.column);\n }\n editor.selection.selectToPosition(cursor);\n editor.renderer.scrollCursorIntoView();\n };\n DefaultHandlers.prototype.selectByLinesEnd = function () {\n this.$clickSelection = null;\n this.editor.unsetStyle(\"ace_selecting\");\n };\n DefaultHandlers.prototype.focusWait = function () {\n var distance = calcDistance(this.mousedownEvent.x, this.mousedownEvent.y, this.x, this.y);\n var time = Date.now();\n if (distance > DRAG_OFFSET || time - this.mousedownEvent.time > this.$focusTimeout)\n this.startSelect(this.mousedownEvent.getDocumentPosition());\n };\n DefaultHandlers.prototype.onDoubleClick = function (ev) {\n var pos = ev.getDocumentPosition();\n var editor = this.editor;\n var session = editor.session;\n var range = session.getBracketRange(pos);\n if (range) {\n if (range.isEmpty()) {\n range.start.column--;\n range.end.column++;\n }\n this.setState(\"select\");\n }\n else {\n range = editor.selection.getWordRange(pos.row, pos.column);\n this.setState(\"selectByWords\");\n }\n this.$clickSelection = range;\n this.select();\n };\n DefaultHandlers.prototype.onTripleClick = function (ev) {\n var pos = ev.getDocumentPosition();\n var editor = this.editor;\n this.setState(\"selectByLines\");\n var range = editor.getSelectionRange();\n if (range.isMultiLine() && range.contains(pos.row, pos.column)) {\n this.$clickSelection = editor.selection.getLineRange(range.start.row);\n this.$clickSelection.end = editor.selection.getLineRange(range.end.row).end;\n }\n else {\n this.$clickSelection = editor.selection.getLineRange(pos.row);\n }\n this.select();\n };\n DefaultHandlers.prototype.onQuadClick = function (ev) {\n var editor = this.editor;\n editor.selectAll();\n this.$clickSelection = editor.getSelectionRange();\n this.setState(\"selectAll\");\n };\n DefaultHandlers.prototype.onMouseWheel = function (ev) {\n if (ev.getAccelKey())\n return;\n if (ev.getShiftKey() && ev.wheelY && !ev.wheelX) {\n ev.wheelX = ev.wheelY;\n ev.wheelY = 0;\n }\n var editor = this.editor;\n if (!this.$lastScroll)\n this.$lastScroll = { t: 0, vx: 0, vy: 0, allowed: 0 };\n var prevScroll = this.$lastScroll;\n var t = ev.domEvent.timeStamp;\n var dt = t - prevScroll.t;\n var vx = dt ? ev.wheelX / dt : prevScroll.vx;\n var vy = dt ? ev.wheelY / dt : prevScroll.vy;\n if (dt < SCROLL_COOLDOWN_T) {\n vx = (vx + prevScroll.vx) / 2;\n vy = (vy + prevScroll.vy) / 2;\n }\n var direction = Math.abs(vx / vy);\n var canScroll = false;\n if (direction >= 1 && editor.renderer.isScrollableBy(ev.wheelX * ev.speed, 0))\n canScroll = true;\n if (direction <= 1 && editor.renderer.isScrollableBy(0, ev.wheelY * ev.speed))\n canScroll = true;\n if (canScroll) {\n prevScroll.allowed = t;\n }\n else if (t - prevScroll.allowed < SCROLL_COOLDOWN_T) {\n var isSlower = Math.abs(vx) <= 1.5 * Math.abs(prevScroll.vx)\n && Math.abs(vy) <= 1.5 * Math.abs(prevScroll.vy);\n if (isSlower) {\n canScroll = true;\n prevScroll.allowed = t;\n }\n else {\n prevScroll.allowed = 0;\n }\n }\n prevScroll.t = t;\n prevScroll.vx = vx;\n prevScroll.vy = vy;\n if (canScroll) {\n editor.renderer.scrollBy(ev.wheelX * ev.speed, ev.wheelY * ev.speed);\n return ev.stop();\n }\n };\n return DefaultHandlers;\n}());\nDefaultHandlers.prototype.selectEnd = DefaultHandlers.prototype.selectByLinesEnd;\nDefaultHandlers.prototype.selectAllEnd = DefaultHandlers.prototype.selectByLinesEnd;\nDefaultHandlers.prototype.selectByWordsEnd = DefaultHandlers.prototype.selectByLinesEnd;\nexports.DefaultHandlers = DefaultHandlers;\nfunction calcDistance(ax, ay, bx, by) {\n return Math.sqrt(Math.pow(bx - ax, 2) + Math.pow(by - ay, 2));\n}\nfunction calcRangeOrientation(range, cursor) {\n if (range.start.row == range.end.row)\n var cmp = 2 * cursor.column - range.start.column - range.end.column;\n else if (range.start.row == range.end.row - 1 && !range.start.column && !range.end.column)\n var cmp = cursor.column - 4;\n else\n var cmp = 2 * cursor.row - range.start.row - range.end.row;\n if (cmp < 0)\n return { cursor: range.start, anchor: range.end };\n else\n return { cursor: range.end, anchor: range.start };\n}\n\n});\n\nace.define(\"ace/tooltip\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar dom = require(\"./lib/dom\");\nvar Range = require(\"./range\").Range;\nvar CLASSNAME = \"ace_tooltip\";\nvar Tooltip = /** @class */ (function () {\n function Tooltip(parentNode) {\n this.isOpen = false;\n this.$element = null;\n this.$parentNode = parentNode;\n }\n Tooltip.prototype.$init = function () {\n this.$element = dom.createElement(\"div\");\n this.$element.className = CLASSNAME;\n this.$element.style.display = \"none\";\n this.$parentNode.appendChild(this.$element);\n return this.$element;\n };\n Tooltip.prototype.getElement = function () {\n return this.$element || this.$init();\n };\n Tooltip.prototype.setText = function (text) {\n this.getElement().textContent = text;\n };\n Tooltip.prototype.setHtml = function (html) {\n this.getElement().innerHTML = html;\n };\n Tooltip.prototype.setPosition = function (x, y) {\n this.getElement().style.left = x + \"px\";\n this.getElement().style.top = y + \"px\";\n };\n Tooltip.prototype.setClassName = function (className) {\n dom.addCssClass(this.getElement(), className);\n };\n Tooltip.prototype.setTheme = function (theme) {\n this.$element.className = CLASSNAME + \" \" +\n (theme.isDark ? \"ace_dark \" : \"\") + (theme.cssClass || \"\");\n };\n Tooltip.prototype.show = function (text, x, y) {\n if (text != null)\n this.setText(text);\n if (x != null && y != null)\n this.setPosition(x, y);\n if (!this.isOpen) {\n this.getElement().style.display = \"block\";\n this.isOpen = true;\n }\n };\n Tooltip.prototype.hide = function () {\n if (this.isOpen) {\n this.getElement().style.display = \"none\";\n this.getElement().className = CLASSNAME;\n this.isOpen = false;\n }\n };\n Tooltip.prototype.getHeight = function () {\n return this.getElement().offsetHeight;\n };\n Tooltip.prototype.getWidth = function () {\n return this.getElement().offsetWidth;\n };\n Tooltip.prototype.destroy = function () {\n this.isOpen = false;\n if (this.$element && this.$element.parentNode) {\n this.$element.parentNode.removeChild(this.$element);\n }\n };\n return Tooltip;\n}());\nvar PopupManager = /** @class */ (function () {\n function PopupManager() {\n this.popups = [];\n }\n PopupManager.prototype.addPopup = function (popup) {\n this.popups.push(popup);\n this.updatePopups();\n };\n PopupManager.prototype.removePopup = function (popup) {\n var index = this.popups.indexOf(popup);\n if (index !== -1) {\n this.popups.splice(index, 1);\n this.updatePopups();\n }\n };\n PopupManager.prototype.updatePopups = function () {\n var e_1, _a, e_2, _b;\n this.popups.sort(function (a, b) { return b.priority - a.priority; });\n var visiblepopups = [];\n try {\n for (var _c = __values(this.popups), _d = _c.next(); !_d.done; _d = _c.next()) {\n var popup = _d.value;\n var shouldDisplay = true;\n try {\n for (var visiblepopups_1 = (e_2 = void 0, __values(visiblepopups)), visiblepopups_1_1 = visiblepopups_1.next(); !visiblepopups_1_1.done; visiblepopups_1_1 = visiblepopups_1.next()) {\n var visiblePopup = visiblepopups_1_1.value;\n if (this.doPopupsOverlap(visiblePopup, popup)) {\n shouldDisplay = false;\n break;\n }\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (visiblepopups_1_1 && !visiblepopups_1_1.done && (_b = visiblepopups_1.return)) _b.call(visiblepopups_1);\n }\n finally { if (e_2) throw e_2.error; }\n }\n if (shouldDisplay) {\n visiblepopups.push(popup);\n }\n else {\n popup.hide();\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_d && !_d.done && (_a = _c.return)) _a.call(_c);\n }\n finally { if (e_1) throw e_1.error; }\n }\n };\n PopupManager.prototype.doPopupsOverlap = function (popupA, popupB) {\n var rectA = popupA.getElement().getBoundingClientRect();\n var rectB = popupB.getElement().getBoundingClientRect();\n return (rectA.left < rectB.right && rectA.right > rectB.left && rectA.top < rectB.bottom && rectA.bottom\n > rectB.top);\n };\n return PopupManager;\n}());\nvar popupManager = new PopupManager();\nexports.popupManager = popupManager;\nexports.Tooltip = Tooltip;\nvar HoverTooltip = /** @class */ (function (_super) {\n __extends(HoverTooltip, _super);\n function HoverTooltip(parentNode) {\n if (parentNode === void 0) { parentNode = document.body; }\n var _this = _super.call(this, parentNode) || this;\n _this.timeout = undefined;\n _this.lastT = 0;\n _this.idleTime = 350;\n _this.lastEvent = undefined;\n _this.onMouseOut = _this.onMouseOut.bind(_this);\n _this.onMouseMove = _this.onMouseMove.bind(_this);\n _this.waitForHover = _this.waitForHover.bind(_this);\n _this.hide = _this.hide.bind(_this);\n var el = _this.getElement();\n el.style.whiteSpace = \"pre-wrap\";\n el.style.pointerEvents = \"auto\";\n el.addEventListener(\"mouseout\", _this.onMouseOut);\n el.tabIndex = -1;\n el.addEventListener(\"blur\", function () {\n if (!el.contains(document.activeElement))\n this.hide();\n }.bind(_this));\n return _this;\n }\n HoverTooltip.prototype.addToEditor = function (editor) {\n editor.on(\"mousemove\", this.onMouseMove);\n editor.on(\"mousedown\", this.hide);\n editor.renderer.getMouseEventTarget().addEventListener(\"mouseout\", this.onMouseOut, true);\n };\n HoverTooltip.prototype.removeFromEditor = function (editor) {\n editor.off(\"mousemove\", this.onMouseMove);\n editor.off(\"mousedown\", this.hide);\n editor.renderer.getMouseEventTarget().removeEventListener(\"mouseout\", this.onMouseOut, true);\n if (this.timeout) {\n clearTimeout(this.timeout);\n this.timeout = null;\n }\n };\n HoverTooltip.prototype.onMouseMove = function (e, editor) {\n this.lastEvent = e;\n this.lastT = Date.now();\n var isMousePressed = editor.$mouseHandler.isMousePressed;\n if (this.isOpen) {\n var pos = this.lastEvent && this.lastEvent.getDocumentPosition();\n if (!this.range\n || !this.range.contains(pos.row, pos.column)\n || isMousePressed\n || this.isOutsideOfText(this.lastEvent)) {\n this.hide();\n }\n }\n if (this.timeout || isMousePressed)\n return;\n this.lastEvent = e;\n this.timeout = setTimeout(this.waitForHover, this.idleTime);\n };\n HoverTooltip.prototype.waitForHover = function () {\n if (this.timeout)\n clearTimeout(this.timeout);\n var dt = Date.now() - this.lastT;\n if (this.idleTime - dt > 10) {\n this.timeout = setTimeout(this.waitForHover, this.idleTime - dt);\n return;\n }\n this.timeout = null;\n if (this.lastEvent && !this.isOutsideOfText(this.lastEvent)) {\n this.$gatherData(this.lastEvent, this.lastEvent.editor);\n }\n };\n HoverTooltip.prototype.isOutsideOfText = function (e) {\n var editor = e.editor;\n var docPos = e.getDocumentPosition();\n var line = editor.session.getLine(docPos.row);\n if (docPos.column == line.length) {\n var screenPos = editor.renderer.pixelToScreenCoordinates(e.clientX, e.clientY);\n var clippedPos = editor.session.documentToScreenPosition(docPos.row, docPos.column);\n if (clippedPos.column != screenPos.column\n || clippedPos.row != screenPos.row) {\n return true;\n }\n }\n return false;\n };\n HoverTooltip.prototype.setDataProvider = function (value) {\n this.$gatherData = value;\n };\n HoverTooltip.prototype.showForRange = function (editor, range, domNode, startingEvent) {\n if (startingEvent && startingEvent != this.lastEvent)\n return;\n if (this.isOpen && document.activeElement == this.getElement())\n return;\n var renderer = editor.renderer;\n if (!this.isOpen) {\n popupManager.addPopup(this);\n this.$registerCloseEvents();\n this.setTheme(renderer.theme);\n }\n this.isOpen = true;\n this.addMarker(range, editor.session);\n this.range = Range.fromPoints(range.start, range.end);\n var element = this.getElement();\n element.innerHTML = \"\";\n element.appendChild(domNode);\n element.style.display = \"block\";\n var position = renderer.textToScreenCoordinates(range.start.row, range.start.column);\n var labelHeight = element.clientHeight;\n var rect = renderer.scroller.getBoundingClientRect();\n var isAbove = true;\n if (position.pageY - labelHeight < 0) {\n isAbove = false;\n }\n if (isAbove) {\n position.pageY -= labelHeight;\n }\n else {\n position.pageY += renderer.lineHeight;\n }\n element.style.maxWidth = rect.width - (position.pageX - rect.left) + \"px\";\n this.setPosition(position.pageX, position.pageY);\n };\n HoverTooltip.prototype.addMarker = function (range, session) {\n if (this.marker) {\n this.$markerSession.removeMarker(this.marker);\n }\n this.$markerSession = session;\n this.marker = session && session.addMarker(range, \"ace_highlight-marker\", \"text\");\n };\n HoverTooltip.prototype.hide = function (e) {\n if (!e && document.activeElement == this.getElement())\n return;\n if (e && e.target && (e.type != \"keydown\" || e.ctrlKey || e.metaKey) && this.$element.contains(e.target))\n return;\n this.lastEvent = null;\n if (this.timeout)\n clearTimeout(this.timeout);\n this.timeout = null;\n this.addMarker(null);\n if (this.isOpen) {\n this.$removeCloseEvents();\n this.getElement().style.display = \"none\";\n this.isOpen = false;\n popupManager.removePopup(this);\n }\n };\n HoverTooltip.prototype.$registerCloseEvents = function () {\n window.addEventListener(\"keydown\", this.hide, true);\n window.addEventListener(\"mousewheel\", this.hide, true);\n window.addEventListener(\"mousedown\", this.hide, true);\n };\n HoverTooltip.prototype.$removeCloseEvents = function () {\n window.removeEventListener(\"keydown\", this.hide, true);\n window.removeEventListener(\"mousewheel\", this.hide, true);\n window.removeEventListener(\"mousedown\", this.hide, true);\n };\n HoverTooltip.prototype.onMouseOut = function (e) {\n if (this.timeout) {\n clearTimeout(this.timeout);\n this.timeout = null;\n }\n this.lastEvent = null;\n if (!this.isOpen)\n return;\n if (!e.relatedTarget || e.relatedTarget == this.getElement())\n return;\n if (e && e.currentTarget.contains(e.relatedTarget))\n return;\n if (!e.relatedTarget.classList.contains(\"ace_content\"))\n this.hide();\n };\n return HoverTooltip;\n}(Tooltip));\nexports.HoverTooltip = HoverTooltip;\n\n});\n\nace.define(\"ace/mouse/default_gutter_handler\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\",\"ace/lib/event\",\"ace/tooltip\",\"ace/config\"], function(require, exports, module){\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar dom = require(\"../lib/dom\");\nvar event = require(\"../lib/event\");\nvar Tooltip = require(\"../tooltip\").Tooltip;\nvar nls = require(\"../config\").nls;\nfunction GutterHandler(mouseHandler) {\n var editor = mouseHandler.editor;\n var gutter = editor.renderer.$gutterLayer;\n var tooltip = new GutterTooltip(editor);\n mouseHandler.editor.setDefaultHandler(\"guttermousedown\", function (e) {\n if (!editor.isFocused() || e.getButton() != 0)\n return;\n var gutterRegion = gutter.getRegion(e);\n if (gutterRegion == \"foldWidgets\")\n return;\n var row = e.getDocumentPosition().row;\n var selection = editor.session.selection;\n if (e.getShiftKey())\n selection.selectTo(row, 0);\n else {\n if (e.domEvent.detail == 2) {\n editor.selectAll();\n return e.preventDefault();\n }\n mouseHandler.$clickSelection = editor.selection.getLineRange(row);\n }\n mouseHandler.setState(\"selectByLines\");\n mouseHandler.captureMouse(e);\n return e.preventDefault();\n });\n var tooltipTimeout, mouseEvent;\n function showTooltip() {\n var row = mouseEvent.getDocumentPosition().row;\n var maxRow = editor.session.getLength();\n if (row == maxRow) {\n var screenRow = editor.renderer.pixelToScreenCoordinates(0, mouseEvent.y).row;\n var pos = mouseEvent.$pos;\n if (screenRow > editor.session.documentToScreenRow(pos.row, pos.column))\n return hideTooltip();\n }\n tooltip.showTooltip(row);\n if (!tooltip.isOpen)\n return;\n editor.on(\"mousewheel\", hideTooltip);\n if (mouseHandler.$tooltipFollowsMouse) {\n moveTooltip(mouseEvent);\n }\n else {\n var gutterRow = mouseEvent.getGutterRow();\n var gutterCell = gutter.$lines.get(gutterRow);\n if (gutterCell) {\n var gutterElement = gutterCell.element.querySelector(\".ace_gutter_annotation\");\n var rect = gutterElement.getBoundingClientRect();\n var style = tooltip.getElement().style;\n style.left = rect.right + \"px\";\n style.top = rect.bottom + \"px\";\n }\n else {\n moveTooltip(mouseEvent);\n }\n }\n }\n function hideTooltip() {\n if (tooltipTimeout)\n tooltipTimeout = clearTimeout(tooltipTimeout);\n if (tooltip.isOpen) {\n tooltip.hideTooltip();\n editor.off(\"mousewheel\", hideTooltip);\n }\n }\n function moveTooltip(e) {\n tooltip.setPosition(e.x, e.y);\n }\n mouseHandler.editor.setDefaultHandler(\"guttermousemove\", function (e) {\n var target = e.domEvent.target || e.domEvent.srcElement;\n if (dom.hasCssClass(target, \"ace_fold-widget\"))\n return hideTooltip();\n if (tooltip.isOpen && mouseHandler.$tooltipFollowsMouse)\n moveTooltip(e);\n mouseEvent = e;\n if (tooltipTimeout)\n return;\n tooltipTimeout = setTimeout(function () {\n tooltipTimeout = null;\n if (mouseEvent && !mouseHandler.isMousePressed)\n showTooltip();\n else\n hideTooltip();\n }, 50);\n });\n event.addListener(editor.renderer.$gutter, \"mouseout\", function (e) {\n mouseEvent = null;\n if (!tooltip.isOpen || tooltipTimeout)\n return;\n tooltipTimeout = setTimeout(function () {\n tooltipTimeout = null;\n hideTooltip();\n }, 50);\n }, editor);\n editor.on(\"changeSession\", hideTooltip);\n editor.on(\"input\", hideTooltip);\n}\nexports.GutterHandler = GutterHandler;\nvar GutterTooltip = /** @class */ (function (_super) {\n __extends(GutterTooltip, _super);\n function GutterTooltip(editor) {\n var _this = _super.call(this, editor.container) || this;\n _this.editor = editor;\n return _this;\n }\n GutterTooltip.prototype.setPosition = function (x, y) {\n var windowWidth = window.innerWidth || document.documentElement.clientWidth;\n var windowHeight = window.innerHeight || document.documentElement.clientHeight;\n var width = this.getWidth();\n var height = this.getHeight();\n x += 15;\n y += 15;\n if (x + width > windowWidth) {\n x -= (x + width) - windowWidth;\n }\n if (y + height > windowHeight) {\n y -= 20 + height;\n }\n Tooltip.prototype.setPosition.call(this, x, y);\n };\n Object.defineProperty(GutterTooltip, \"annotationLabels\", {\n get: function () {\n return {\n error: { singular: nls(\"error\"), plural: nls(\"errors\") },\n warning: { singular: nls(\"warning\"), plural: nls(\"warnings\") },\n info: { singular: nls(\"information message\"), plural: nls(\"information messages\") }\n };\n },\n enumerable: false,\n configurable: true\n });\n GutterTooltip.prototype.showTooltip = function (row) {\n var gutter = this.editor.renderer.$gutterLayer;\n var annotationsInRow = gutter.$annotations[row];\n var annotation;\n if (annotationsInRow)\n annotation = { text: Array.from(annotationsInRow.text), type: Array.from(annotationsInRow.type) };\n else\n annotation = { text: [], type: [] };\n var fold = gutter.session.getFoldLine(row);\n if (fold && gutter.$showFoldedAnnotations) {\n var annotationsInFold = { error: [], warning: [], info: [] };\n var mostSevereAnnotationInFoldType;\n for (var i = row + 1; i <= fold.end.row; i++) {\n if (!gutter.$annotations[i])\n continue;\n for (var j = 0; j < gutter.$annotations[i].text.length; j++) {\n var annotationType = gutter.$annotations[i].type[j];\n annotationsInFold[annotationType].push(gutter.$annotations[i].text[j]);\n if (annotationType === \"error\") {\n mostSevereAnnotationInFoldType = \"error_fold\";\n continue;\n }\n if (annotationType === \"warning\") {\n mostSevereAnnotationInFoldType = \"warning_fold\";\n continue;\n }\n }\n }\n if (mostSevereAnnotationInFoldType === \"error_fold\" || mostSevereAnnotationInFoldType === \"warning_fold\") {\n var summaryFoldedAnnotations = \"\".concat(GutterTooltip.annotationsToSummaryString(annotationsInFold), \" in folded code.\");\n annotation.text.push(summaryFoldedAnnotations);\n annotation.type.push(mostSevereAnnotationInFoldType);\n }\n }\n if (annotation.text.length === 0)\n return this.hide();\n var annotationMessages = { error: [], warning: [], info: [] };\n var iconClassName = gutter.$useSvgGutterIcons ? \"ace_icon_svg\" : \"ace_icon\";\n for (var i = 0; i < annotation.text.length; i++) {\n var line = \" \").concat(annotation.text[i]);\n annotationMessages[annotation.type[i].replace(\"_fold\", \"\")].push(line);\n }\n var tooltipContent = [].concat(annotationMessages.error, annotationMessages.warning, annotationMessages.info).join(\"
\");\n this.setHtml(tooltipContent);\n this.$element.setAttribute(\"aria-live\", \"polite\");\n if (!this.isOpen) {\n this.setTheme(this.editor.renderer.theme);\n this.setClassName(\"ace_gutter-tooltip\");\n }\n this.show();\n this.editor._signal(\"showGutterTooltip\", this);\n };\n GutterTooltip.prototype.hideTooltip = function () {\n this.$element.removeAttribute(\"aria-live\");\n this.hide();\n this.editor._signal(\"hideGutterTooltip\", this);\n };\n GutterTooltip.annotationsToSummaryString = function (annotations) {\n var e_1, _a;\n var summary = [];\n var annotationTypes = ['error', 'warning', 'info'];\n try {\n for (var annotationTypes_1 = __values(annotationTypes), annotationTypes_1_1 = annotationTypes_1.next(); !annotationTypes_1_1.done; annotationTypes_1_1 = annotationTypes_1.next()) {\n var annotationType = annotationTypes_1_1.value;\n if (!annotations[annotationType].length)\n continue;\n var label = annotations[annotationType].length === 1 ? GutterTooltip.annotationLabels[annotationType].singular : GutterTooltip.annotationLabels[annotationType].plural;\n summary.push(\"\".concat(annotations[annotationType].length, \" \").concat(label));\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (annotationTypes_1_1 && !annotationTypes_1_1.done && (_a = annotationTypes_1.return)) _a.call(annotationTypes_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return summary.join(\", \");\n };\n return GutterTooltip;\n}(Tooltip));\nexports.GutterTooltip = GutterTooltip;\n\n});\n\nace.define(\"ace/mouse/mouse_event\",[\"require\",\"exports\",\"module\",\"ace/lib/event\",\"ace/lib/useragent\"], function(require, exports, module){\"use strict\";\nvar event = require(\"../lib/event\");\nvar useragent = require(\"../lib/useragent\");\nvar MouseEvent = /** @class */ (function () {\n function MouseEvent(domEvent, editor) {\n this.domEvent = domEvent;\n this.editor = editor;\n this.x = this.clientX = domEvent.clientX;\n this.y = this.clientY = domEvent.clientY;\n this.$pos = null;\n this.$inSelection = null;\n this.propagationStopped = false;\n this.defaultPrevented = false;\n }\n MouseEvent.prototype.stopPropagation = function () {\n event.stopPropagation(this.domEvent);\n this.propagationStopped = true;\n };\n MouseEvent.prototype.preventDefault = function () {\n event.preventDefault(this.domEvent);\n this.defaultPrevented = true;\n };\n MouseEvent.prototype.stop = function () {\n this.stopPropagation();\n this.preventDefault();\n };\n MouseEvent.prototype.getDocumentPosition = function () {\n if (this.$pos)\n return this.$pos;\n this.$pos = this.editor.renderer.screenToTextCoordinates(this.clientX, this.clientY);\n return this.$pos;\n };\n MouseEvent.prototype.getGutterRow = function () {\n var documentRow = this.getDocumentPosition().row;\n var screenRow = this.editor.session.documentToScreenRow(documentRow, 0);\n var screenTopRow = this.editor.session.documentToScreenRow(this.editor.renderer.$gutterLayer.$lines.get(0).row, 0);\n return screenRow - screenTopRow;\n };\n MouseEvent.prototype.inSelection = function () {\n if (this.$inSelection !== null)\n return this.$inSelection;\n var editor = this.editor;\n var selectionRange = editor.getSelectionRange();\n if (selectionRange.isEmpty())\n this.$inSelection = false;\n else {\n var pos = this.getDocumentPosition();\n this.$inSelection = selectionRange.contains(pos.row, pos.column);\n }\n return this.$inSelection;\n };\n MouseEvent.prototype.getButton = function () {\n return event.getButton(this.domEvent);\n };\n MouseEvent.prototype.getShiftKey = function () {\n return this.domEvent.shiftKey;\n };\n MouseEvent.prototype.getAccelKey = function () {\n return useragent.isMac ? this.domEvent.metaKey : this.domEvent.ctrlKey;\n };\n return MouseEvent;\n}());\nexports.MouseEvent = MouseEvent;\n\n});\n\nace.define(\"ace/mouse/dragdrop_handler\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\",\"ace/lib/event\",\"ace/lib/useragent\"], function(require, exports, module){\"use strict\";\nvar dom = require(\"../lib/dom\");\nvar event = require(\"../lib/event\");\nvar useragent = require(\"../lib/useragent\");\nvar AUTOSCROLL_DELAY = 200;\nvar SCROLL_CURSOR_DELAY = 200;\nvar SCROLL_CURSOR_HYSTERESIS = 5;\nfunction DragdropHandler(mouseHandler) {\n var editor = mouseHandler.editor;\n var dragImage = dom.createElement(\"div\");\n dragImage.style.cssText = \"top:-100px;position:absolute;z-index:2147483647;opacity:0.5\";\n dragImage.textContent = \"\\xa0\";\n var exports = [\"dragWait\", \"dragWaitEnd\", \"startDrag\", \"dragReadyEnd\", \"onMouseDrag\"];\n exports.forEach(function (x) {\n mouseHandler[x] = this[x];\n }, this);\n editor.on(\"mousedown\", this.onMouseDown.bind(mouseHandler));\n var mouseTarget = editor.container;\n var dragSelectionMarker, x, y;\n var timerId, range;\n var dragCursor, counter = 0;\n var dragOperation;\n var isInternal;\n var autoScrollStartTime;\n var cursorMovedTime;\n var cursorPointOnCaretMoved;\n this.onDragStart = function (e) {\n if (this.cancelDrag || !mouseTarget.draggable) {\n var self = this;\n setTimeout(function () {\n self.startSelect();\n self.captureMouse(e);\n }, 0);\n return e.preventDefault();\n }\n range = editor.getSelectionRange();\n var dataTransfer = e.dataTransfer;\n dataTransfer.effectAllowed = editor.getReadOnly() ? \"copy\" : \"copyMove\";\n editor.container.appendChild(dragImage);\n dataTransfer.setDragImage && dataTransfer.setDragImage(dragImage, 0, 0);\n setTimeout(function () {\n editor.container.removeChild(dragImage);\n });\n dataTransfer.clearData();\n dataTransfer.setData(\"Text\", editor.session.getTextRange());\n isInternal = true;\n this.setState(\"drag\");\n };\n this.onDragEnd = function (e) {\n mouseTarget.draggable = false;\n isInternal = false;\n this.setState(null);\n if (!editor.getReadOnly()) {\n var dropEffect = e.dataTransfer.dropEffect;\n if (!dragOperation && dropEffect == \"move\")\n editor.session.remove(editor.getSelectionRange());\n editor.$resetCursorStyle();\n }\n this.editor.unsetStyle(\"ace_dragging\");\n this.editor.renderer.setCursorStyle(\"\");\n };\n this.onDragEnter = function (e) {\n if (editor.getReadOnly() || !canAccept(e.dataTransfer))\n return;\n x = e.clientX;\n y = e.clientY;\n if (!dragSelectionMarker)\n addDragMarker();\n counter++;\n e.dataTransfer.dropEffect = dragOperation = getDropEffect(e);\n return event.preventDefault(e);\n };\n this.onDragOver = function (e) {\n if (editor.getReadOnly() || !canAccept(e.dataTransfer))\n return;\n x = e.clientX;\n y = e.clientY;\n if (!dragSelectionMarker) {\n addDragMarker();\n counter++;\n }\n if (onMouseMoveTimer !== null)\n onMouseMoveTimer = null;\n e.dataTransfer.dropEffect = dragOperation = getDropEffect(e);\n return event.preventDefault(e);\n };\n this.onDragLeave = function (e) {\n counter--;\n if (counter <= 0 && dragSelectionMarker) {\n clearDragMarker();\n dragOperation = null;\n return event.preventDefault(e);\n }\n };\n this.onDrop = function (e) {\n if (!dragCursor)\n return;\n var dataTransfer = e.dataTransfer;\n if (isInternal) {\n switch (dragOperation) {\n case \"move\":\n if (range.contains(dragCursor.row, dragCursor.column)) {\n range = {\n start: dragCursor,\n end: dragCursor\n };\n }\n else {\n range = editor.moveText(range, dragCursor);\n }\n break;\n case \"copy\":\n range = editor.moveText(range, dragCursor, true);\n break;\n }\n }\n else {\n var dropData = dataTransfer.getData('Text');\n range = {\n start: dragCursor,\n end: editor.session.insert(dragCursor, dropData)\n };\n editor.focus();\n dragOperation = null;\n }\n clearDragMarker();\n return event.preventDefault(e);\n };\n event.addListener(mouseTarget, \"dragstart\", this.onDragStart.bind(mouseHandler), editor);\n event.addListener(mouseTarget, \"dragend\", this.onDragEnd.bind(mouseHandler), editor);\n event.addListener(mouseTarget, \"dragenter\", this.onDragEnter.bind(mouseHandler), editor);\n event.addListener(mouseTarget, \"dragover\", this.onDragOver.bind(mouseHandler), editor);\n event.addListener(mouseTarget, \"dragleave\", this.onDragLeave.bind(mouseHandler), editor);\n event.addListener(mouseTarget, \"drop\", this.onDrop.bind(mouseHandler), editor);\n function scrollCursorIntoView(cursor, prevCursor) {\n var now = Date.now();\n var vMovement = !prevCursor || cursor.row != prevCursor.row;\n var hMovement = !prevCursor || cursor.column != prevCursor.column;\n if (!cursorMovedTime || vMovement || hMovement) {\n editor.moveCursorToPosition(cursor);\n cursorMovedTime = now;\n cursorPointOnCaretMoved = { x: x, y: y };\n }\n else {\n var distance = calcDistance(cursorPointOnCaretMoved.x, cursorPointOnCaretMoved.y, x, y);\n if (distance > SCROLL_CURSOR_HYSTERESIS) {\n cursorMovedTime = null;\n }\n else if (now - cursorMovedTime >= SCROLL_CURSOR_DELAY) {\n editor.renderer.scrollCursorIntoView();\n cursorMovedTime = null;\n }\n }\n }\n function autoScroll(cursor, prevCursor) {\n var now = Date.now();\n var lineHeight = editor.renderer.layerConfig.lineHeight;\n var characterWidth = editor.renderer.layerConfig.characterWidth;\n var editorRect = editor.renderer.scroller.getBoundingClientRect();\n var offsets = {\n x: {\n left: x - editorRect.left,\n right: editorRect.right - x\n },\n y: {\n top: y - editorRect.top,\n bottom: editorRect.bottom - y\n }\n };\n var nearestXOffset = Math.min(offsets.x.left, offsets.x.right);\n var nearestYOffset = Math.min(offsets.y.top, offsets.y.bottom);\n var scrollCursor = { row: cursor.row, column: cursor.column };\n if (nearestXOffset / characterWidth <= 2) {\n scrollCursor.column += (offsets.x.left < offsets.x.right ? -3 : +2);\n }\n if (nearestYOffset / lineHeight <= 1) {\n scrollCursor.row += (offsets.y.top < offsets.y.bottom ? -1 : +1);\n }\n var vScroll = cursor.row != scrollCursor.row;\n var hScroll = cursor.column != scrollCursor.column;\n var vMovement = !prevCursor || cursor.row != prevCursor.row;\n if (vScroll || (hScroll && !vMovement)) {\n if (!autoScrollStartTime)\n autoScrollStartTime = now;\n else if (now - autoScrollStartTime >= AUTOSCROLL_DELAY)\n editor.renderer.scrollCursorIntoView(scrollCursor);\n }\n else {\n autoScrollStartTime = null;\n }\n }\n function onDragInterval() {\n var prevCursor = dragCursor;\n dragCursor = editor.renderer.screenToTextCoordinates(x, y);\n scrollCursorIntoView(dragCursor, prevCursor);\n autoScroll(dragCursor, prevCursor);\n }\n function addDragMarker() {\n range = editor.selection.toOrientedRange();\n dragSelectionMarker = editor.session.addMarker(range, \"ace_selection\", editor.getSelectionStyle());\n editor.clearSelection();\n if (editor.isFocused())\n editor.renderer.$cursorLayer.setBlinking(false);\n clearInterval(timerId);\n onDragInterval();\n timerId = setInterval(onDragInterval, 20);\n counter = 0;\n event.addListener(document, \"mousemove\", onMouseMove);\n }\n function clearDragMarker() {\n clearInterval(timerId);\n editor.session.removeMarker(dragSelectionMarker);\n dragSelectionMarker = null;\n editor.selection.fromOrientedRange(range);\n if (editor.isFocused() && !isInternal)\n editor.$resetCursorStyle();\n range = null;\n dragCursor = null;\n counter = 0;\n autoScrollStartTime = null;\n cursorMovedTime = null;\n event.removeListener(document, \"mousemove\", onMouseMove);\n }\n var onMouseMoveTimer = null;\n function onMouseMove() {\n if (onMouseMoveTimer == null) {\n onMouseMoveTimer = setTimeout(function () {\n if (onMouseMoveTimer != null && dragSelectionMarker)\n clearDragMarker();\n }, 20);\n }\n }\n function canAccept(dataTransfer) {\n var types = dataTransfer.types;\n return !types || Array.prototype.some.call(types, function (type) {\n return type == 'text/plain' || type == 'Text';\n });\n }\n function getDropEffect(e) {\n var copyAllowed = ['copy', 'copymove', 'all', 'uninitialized'];\n var moveAllowed = ['move', 'copymove', 'linkmove', 'all', 'uninitialized'];\n var copyModifierState = useragent.isMac ? e.altKey : e.ctrlKey;\n var effectAllowed = \"uninitialized\";\n try {\n effectAllowed = e.dataTransfer.effectAllowed.toLowerCase();\n }\n catch (e) { }\n var dropEffect = \"none\";\n if (copyModifierState && copyAllowed.indexOf(effectAllowed) >= 0)\n dropEffect = \"copy\";\n else if (moveAllowed.indexOf(effectAllowed) >= 0)\n dropEffect = \"move\";\n else if (copyAllowed.indexOf(effectAllowed) >= 0)\n dropEffect = \"copy\";\n return dropEffect;\n }\n}\n(function () {\n this.dragWait = function () {\n var interval = Date.now() - this.mousedownEvent.time;\n if (interval > this.editor.getDragDelay())\n this.startDrag();\n };\n this.dragWaitEnd = function () {\n var target = this.editor.container;\n target.draggable = false;\n this.startSelect(this.mousedownEvent.getDocumentPosition());\n this.selectEnd();\n };\n this.dragReadyEnd = function (e) {\n this.editor.$resetCursorStyle();\n this.editor.unsetStyle(\"ace_dragging\");\n this.editor.renderer.setCursorStyle(\"\");\n this.dragWaitEnd();\n };\n this.startDrag = function () {\n this.cancelDrag = false;\n var editor = this.editor;\n var target = editor.container;\n target.draggable = true;\n editor.renderer.$cursorLayer.setBlinking(false);\n editor.setStyle(\"ace_dragging\");\n var cursorStyle = useragent.isWin ? \"default\" : \"move\";\n editor.renderer.setCursorStyle(cursorStyle);\n this.setState(\"dragReady\");\n };\n this.onMouseDrag = function (e) {\n var target = this.editor.container;\n if (useragent.isIE && this.state == \"dragReady\") {\n var distance = calcDistance(this.mousedownEvent.x, this.mousedownEvent.y, this.x, this.y);\n if (distance > 3)\n target.dragDrop();\n }\n if (this.state === \"dragWait\") {\n var distance = calcDistance(this.mousedownEvent.x, this.mousedownEvent.y, this.x, this.y);\n if (distance > 0) {\n target.draggable = false;\n this.startSelect(this.mousedownEvent.getDocumentPosition());\n }\n }\n };\n this.onMouseDown = function (e) {\n if (!this.$dragEnabled)\n return;\n this.mousedownEvent = e;\n var editor = this.editor;\n var inSelection = e.inSelection();\n var button = e.getButton();\n var clickCount = e.domEvent.detail || 1;\n if (clickCount === 1 && button === 0 && inSelection) {\n if (e.editor.inMultiSelectMode && (e.getAccelKey() || e.getShiftKey()))\n return;\n this.mousedownEvent.time = Date.now();\n var eventTarget = e.domEvent.target || e.domEvent.srcElement;\n if (\"unselectable\" in eventTarget)\n eventTarget.unselectable = \"on\";\n if (editor.getDragDelay()) {\n if (useragent.isWebKit) {\n this.cancelDrag = true;\n var mouseTarget = editor.container;\n mouseTarget.draggable = true;\n }\n this.setState(\"dragWait\");\n }\n else {\n this.startDrag();\n }\n this.captureMouse(e, this.onMouseDrag.bind(this));\n e.defaultPrevented = true;\n }\n };\n}).call(DragdropHandler.prototype);\nfunction calcDistance(ax, ay, bx, by) {\n return Math.sqrt(Math.pow(bx - ax, 2) + Math.pow(by - ay, 2));\n}\nexports.DragdropHandler = DragdropHandler;\n\n});\n\nace.define(\"ace/mouse/touch_handler\",[\"require\",\"exports\",\"module\",\"ace/mouse/mouse_event\",\"ace/lib/event\",\"ace/lib/dom\"], function(require, exports, module){\"use strict\";\nvar MouseEvent = require(\"./mouse_event\").MouseEvent;\nvar event = require(\"../lib/event\");\nvar dom = require(\"../lib/dom\");\nexports.addTouchListeners = function (el, editor) {\n var mode = \"scroll\";\n var startX;\n var startY;\n var touchStartT;\n var lastT;\n var longTouchTimer;\n var animationTimer;\n var animationSteps = 0;\n var pos;\n var clickCount = 0;\n var vX = 0;\n var vY = 0;\n var pressed;\n var contextMenu;\n function createContextMenu() {\n var clipboard = window.navigator && window.navigator.clipboard;\n var isOpen = false;\n var updateMenu = function () {\n var selected = editor.getCopyText();\n var hasUndo = editor.session.getUndoManager().hasUndo();\n contextMenu.replaceChild(dom.buildDom(isOpen ? [\"span\",\n !selected && [\"span\", { class: \"ace_mobile-button\", action: \"selectall\" }, \"Select All\"],\n selected && [\"span\", { class: \"ace_mobile-button\", action: \"copy\" }, \"Copy\"],\n selected && [\"span\", { class: \"ace_mobile-button\", action: \"cut\" }, \"Cut\"],\n clipboard && [\"span\", { class: \"ace_mobile-button\", action: \"paste\" }, \"Paste\"],\n hasUndo && [\"span\", { class: \"ace_mobile-button\", action: \"undo\" }, \"Undo\"],\n [\"span\", { class: \"ace_mobile-button\", action: \"find\" }, \"Find\"],\n [\"span\", { class: \"ace_mobile-button\", action: \"openCommandPalette\" }, \"Palette\"]\n ] : [\"span\"]), contextMenu.firstChild);\n };\n var handleClick = function (e) {\n var action = e.target.getAttribute(\"action\");\n if (action == \"more\" || !isOpen) {\n isOpen = !isOpen;\n return updateMenu();\n }\n if (action == \"paste\") {\n clipboard.readText().then(function (text) {\n editor.execCommand(action, text);\n });\n }\n else if (action) {\n if (action == \"cut\" || action == \"copy\") {\n if (clipboard)\n clipboard.writeText(editor.getCopyText());\n else\n document.execCommand(\"copy\");\n }\n editor.execCommand(action);\n }\n contextMenu.firstChild.style.display = \"none\";\n isOpen = false;\n if (action != \"openCommandPalette\")\n editor.focus();\n };\n contextMenu = dom.buildDom([\"div\",\n {\n class: \"ace_mobile-menu\",\n ontouchstart: function (e) {\n mode = \"menu\";\n e.stopPropagation();\n e.preventDefault();\n editor.textInput.focus();\n },\n ontouchend: function (e) {\n e.stopPropagation();\n e.preventDefault();\n handleClick(e);\n },\n onclick: handleClick\n },\n [\"span\"],\n [\"span\", { class: \"ace_mobile-button\", action: \"more\" }, \"...\"]\n ], editor.container);\n }\n function showContextMenu() {\n if (!contextMenu)\n createContextMenu();\n var cursor = editor.selection.cursor;\n var pagePos = editor.renderer.textToScreenCoordinates(cursor.row, cursor.column);\n var leftOffset = editor.renderer.textToScreenCoordinates(0, 0).pageX;\n var scrollLeft = editor.renderer.scrollLeft;\n var rect = editor.container.getBoundingClientRect();\n contextMenu.style.top = pagePos.pageY - rect.top - 3 + \"px\";\n if (pagePos.pageX - rect.left < rect.width - 70) {\n contextMenu.style.left = \"\";\n contextMenu.style.right = \"10px\";\n }\n else {\n contextMenu.style.right = \"\";\n contextMenu.style.left = leftOffset + scrollLeft - rect.left + \"px\";\n }\n contextMenu.style.display = \"\";\n contextMenu.firstChild.style.display = \"none\";\n editor.on(\"input\", hideContextMenu);\n }\n function hideContextMenu(e) {\n if (contextMenu)\n contextMenu.style.display = \"none\";\n editor.off(\"input\", hideContextMenu);\n }\n function handleLongTap() {\n longTouchTimer = null;\n clearTimeout(longTouchTimer);\n var range = editor.selection.getRange();\n var inSelection = range.contains(pos.row, pos.column);\n if (range.isEmpty() || !inSelection) {\n editor.selection.moveToPosition(pos);\n editor.selection.selectWord();\n }\n mode = \"wait\";\n showContextMenu();\n }\n function switchToSelectionMode() {\n longTouchTimer = null;\n clearTimeout(longTouchTimer);\n editor.selection.moveToPosition(pos);\n var range = clickCount >= 2\n ? editor.selection.getLineRange(pos.row)\n : editor.session.getBracketRange(pos);\n if (range && !range.isEmpty()) {\n editor.selection.setRange(range);\n }\n else {\n editor.selection.selectWord();\n }\n mode = \"wait\";\n }\n event.addListener(el, \"contextmenu\", function (e) {\n if (!pressed)\n return;\n var textarea = editor.textInput.getElement();\n textarea.focus();\n }, editor);\n event.addListener(el, \"touchstart\", function (e) {\n var touches = e.touches;\n if (longTouchTimer || touches.length > 1) {\n clearTimeout(longTouchTimer);\n longTouchTimer = null;\n touchStartT = -1;\n mode = \"zoom\";\n return;\n }\n pressed = editor.$mouseHandler.isMousePressed = true;\n var h = editor.renderer.layerConfig.lineHeight;\n var w = editor.renderer.layerConfig.lineHeight;\n var t = e.timeStamp;\n lastT = t;\n var touchObj = touches[0];\n var x = touchObj.clientX;\n var y = touchObj.clientY;\n if (Math.abs(startX - x) + Math.abs(startY - y) > h)\n touchStartT = -1;\n startX = e.clientX = x;\n startY = e.clientY = y;\n vX = vY = 0;\n var ev = new MouseEvent(e, editor);\n pos = ev.getDocumentPosition();\n if (t - touchStartT < 500 && touches.length == 1 && !animationSteps) {\n clickCount++;\n e.preventDefault();\n e.button = 0;\n switchToSelectionMode();\n }\n else {\n clickCount = 0;\n var cursor = editor.selection.cursor;\n var anchor = editor.selection.isEmpty() ? cursor : editor.selection.anchor;\n var cursorPos = editor.renderer.$cursorLayer.getPixelPosition(cursor, true);\n var anchorPos = editor.renderer.$cursorLayer.getPixelPosition(anchor, true);\n var rect = editor.renderer.scroller.getBoundingClientRect();\n var offsetTop = editor.renderer.layerConfig.offset;\n var offsetLeft = editor.renderer.scrollLeft;\n var weightedDistance = function (x, y) {\n x = x / w;\n y = y / h - 0.75;\n return x * x + y * y;\n };\n if (e.clientX < rect.left) {\n mode = \"zoom\";\n return;\n }\n var diff1 = weightedDistance(e.clientX - rect.left - cursorPos.left + offsetLeft, e.clientY - rect.top - cursorPos.top + offsetTop);\n var diff2 = weightedDistance(e.clientX - rect.left - anchorPos.left + offsetLeft, e.clientY - rect.top - anchorPos.top + offsetTop);\n if (diff1 < 3.5 && diff2 < 3.5)\n mode = diff1 > diff2 ? \"cursor\" : \"anchor\";\n if (diff2 < 3.5)\n mode = \"anchor\";\n else if (diff1 < 3.5)\n mode = \"cursor\";\n else\n mode = \"scroll\";\n longTouchTimer = setTimeout(handleLongTap, 450);\n }\n touchStartT = t;\n }, editor);\n event.addListener(el, \"touchend\", function (e) {\n pressed = editor.$mouseHandler.isMousePressed = false;\n if (animationTimer)\n clearInterval(animationTimer);\n if (mode == \"zoom\") {\n mode = \"\";\n animationSteps = 0;\n }\n else if (longTouchTimer) {\n editor.selection.moveToPosition(pos);\n animationSteps = 0;\n showContextMenu();\n }\n else if (mode == \"scroll\") {\n animate();\n hideContextMenu();\n }\n else {\n showContextMenu();\n }\n clearTimeout(longTouchTimer);\n longTouchTimer = null;\n }, editor);\n event.addListener(el, \"touchmove\", function (e) {\n if (longTouchTimer) {\n clearTimeout(longTouchTimer);\n longTouchTimer = null;\n }\n var touches = e.touches;\n if (touches.length > 1 || mode == \"zoom\")\n return;\n var touchObj = touches[0];\n var wheelX = startX - touchObj.clientX;\n var wheelY = startY - touchObj.clientY;\n if (mode == \"wait\") {\n if (wheelX * wheelX + wheelY * wheelY > 4)\n mode = \"cursor\";\n else\n return e.preventDefault();\n }\n startX = touchObj.clientX;\n startY = touchObj.clientY;\n e.clientX = touchObj.clientX;\n e.clientY = touchObj.clientY;\n var t = e.timeStamp;\n var dt = t - lastT;\n lastT = t;\n if (mode == \"scroll\") {\n var mouseEvent = new MouseEvent(e, editor);\n mouseEvent.speed = 1;\n mouseEvent.wheelX = wheelX;\n mouseEvent.wheelY = wheelY;\n if (10 * Math.abs(wheelX) < Math.abs(wheelY))\n wheelX = 0;\n if (10 * Math.abs(wheelY) < Math.abs(wheelX))\n wheelY = 0;\n if (dt != 0) {\n vX = wheelX / dt;\n vY = wheelY / dt;\n }\n editor._emit(\"mousewheel\", mouseEvent);\n if (!mouseEvent.propagationStopped) {\n vX = vY = 0;\n }\n }\n else {\n var ev = new MouseEvent(e, editor);\n var pos = ev.getDocumentPosition();\n if (mode == \"cursor\")\n editor.selection.moveCursorToPosition(pos);\n else if (mode == \"anchor\")\n editor.selection.setSelectionAnchor(pos.row, pos.column);\n editor.renderer.scrollCursorIntoView(pos);\n e.preventDefault();\n }\n }, editor);\n function animate() {\n animationSteps += 60;\n animationTimer = setInterval(function () {\n if (animationSteps-- <= 0) {\n clearInterval(animationTimer);\n animationTimer = null;\n }\n if (Math.abs(vX) < 0.01)\n vX = 0;\n if (Math.abs(vY) < 0.01)\n vY = 0;\n if (animationSteps < 20)\n vX = 0.9 * vX;\n if (animationSteps < 20)\n vY = 0.9 * vY;\n var oldScrollTop = editor.session.getScrollTop();\n editor.renderer.scrollBy(10 * vX, 10 * vY);\n if (oldScrollTop == editor.session.getScrollTop())\n animationSteps = 0;\n }, 10);\n }\n};\n\n});\n\nace.define(\"ace/mouse/mouse_handler\",[\"require\",\"exports\",\"module\",\"ace/lib/event\",\"ace/lib/useragent\",\"ace/mouse/default_handlers\",\"ace/mouse/default_gutter_handler\",\"ace/mouse/mouse_event\",\"ace/mouse/dragdrop_handler\",\"ace/mouse/touch_handler\",\"ace/config\"], function(require, exports, module){\"use strict\";\nvar event = require(\"../lib/event\");\nvar useragent = require(\"../lib/useragent\");\nvar DefaultHandlers = require(\"./default_handlers\").DefaultHandlers;\nvar DefaultGutterHandler = require(\"./default_gutter_handler\").GutterHandler;\nvar MouseEvent = require(\"./mouse_event\").MouseEvent;\nvar DragdropHandler = require(\"./dragdrop_handler\").DragdropHandler;\nvar addTouchListeners = require(\"./touch_handler\").addTouchListeners;\nvar config = require(\"../config\");\nvar MouseHandler = /** @class */ (function () {\n function MouseHandler(editor) {\n var _self = this;\n this.editor = editor;\n new DefaultHandlers(this);\n new DefaultGutterHandler(this);\n new DragdropHandler(this);\n var focusEditor = function (e) {\n var windowBlurred = !document.hasFocus || !document.hasFocus()\n || !editor.isFocused() && document.activeElement == (editor.textInput && editor.textInput.getElement());\n if (windowBlurred)\n window.focus();\n editor.focus();\n setTimeout(function () {\n if (!editor.isFocused())\n editor.focus();\n });\n };\n var mouseTarget = editor.renderer.getMouseEventTarget();\n event.addListener(mouseTarget, \"click\", this.onMouseEvent.bind(this, \"click\"), editor);\n event.addListener(mouseTarget, \"mousemove\", this.onMouseMove.bind(this, \"mousemove\"), editor);\n event.addMultiMouseDownListener([\n mouseTarget,\n editor.renderer.scrollBarV && editor.renderer.scrollBarV.inner,\n editor.renderer.scrollBarH && editor.renderer.scrollBarH.inner,\n editor.textInput && editor.textInput.getElement()\n ].filter(Boolean), [400, 300, 250], this, \"onMouseEvent\", editor);\n event.addMouseWheelListener(editor.container, this.onMouseWheel.bind(this, \"mousewheel\"), editor);\n addTouchListeners(editor.container, editor);\n var gutterEl = editor.renderer.$gutter;\n event.addListener(gutterEl, \"mousedown\", this.onMouseEvent.bind(this, \"guttermousedown\"), editor);\n event.addListener(gutterEl, \"click\", this.onMouseEvent.bind(this, \"gutterclick\"), editor);\n event.addListener(gutterEl, \"dblclick\", this.onMouseEvent.bind(this, \"gutterdblclick\"), editor);\n event.addListener(gutterEl, \"mousemove\", this.onMouseEvent.bind(this, \"guttermousemove\"), editor);\n event.addListener(mouseTarget, \"mousedown\", focusEditor, editor);\n event.addListener(gutterEl, \"mousedown\", focusEditor, editor);\n if (useragent.isIE && editor.renderer.scrollBarV) {\n event.addListener(editor.renderer.scrollBarV.element, \"mousedown\", focusEditor, editor);\n event.addListener(editor.renderer.scrollBarH.element, \"mousedown\", focusEditor, editor);\n }\n editor.on(\"mousemove\", function (e) {\n if (_self.state || _self.$dragDelay || !_self.$dragEnabled)\n return;\n var character = editor.renderer.screenToTextCoordinates(e.x, e.y);\n var range = editor.session.selection.getRange();\n var renderer = editor.renderer;\n if (!range.isEmpty() && range.insideStart(character.row, character.column)) {\n renderer.setCursorStyle(\"default\");\n }\n else {\n renderer.setCursorStyle(\"\");\n }\n }, editor);\n }\n MouseHandler.prototype.onMouseEvent = function (name, e) {\n if (!this.editor.session)\n return;\n this.editor._emit(name, new MouseEvent(e, this.editor));\n };\n MouseHandler.prototype.onMouseMove = function (name, e) {\n var listeners = this.editor._eventRegistry && this.editor._eventRegistry.mousemove;\n if (!listeners || !listeners.length)\n return;\n this.editor._emit(name, new MouseEvent(e, this.editor));\n };\n MouseHandler.prototype.onMouseWheel = function (name, e) {\n var mouseEvent = new MouseEvent(e, this.editor);\n mouseEvent.speed = this.$scrollSpeed * 2;\n mouseEvent.wheelX = e.wheelX;\n mouseEvent.wheelY = e.wheelY;\n this.editor._emit(name, mouseEvent);\n };\n MouseHandler.prototype.setState = function (state) {\n this.state = state;\n };\n MouseHandler.prototype.captureMouse = function (ev, mouseMoveHandler) {\n this.x = ev.x;\n this.y = ev.y;\n this.isMousePressed = true;\n var editor = this.editor;\n var renderer = this.editor.renderer;\n renderer.$isMousePressed = true;\n var self = this;\n var onMouseMove = function (e) {\n if (!e)\n return;\n if (useragent.isWebKit && !e.which && self.releaseMouse)\n return self.releaseMouse();\n self.x = e.clientX;\n self.y = e.clientY;\n mouseMoveHandler && mouseMoveHandler(e);\n self.mouseEvent = new MouseEvent(e, self.editor);\n self.$mouseMoved = true;\n };\n var onCaptureEnd = function (e) {\n editor.off(\"beforeEndOperation\", onOperationEnd);\n clearInterval(timerId);\n if (editor.session)\n onCaptureInterval();\n self[self.state + \"End\"] && self[self.state + \"End\"](e);\n self.state = \"\";\n self.isMousePressed = renderer.$isMousePressed = false;\n if (renderer.$keepTextAreaAtCursor)\n renderer.$moveTextAreaToCursor();\n self.$onCaptureMouseMove = self.releaseMouse = null;\n e && self.onMouseEvent(\"mouseup\", e);\n editor.endOperation();\n };\n var onCaptureInterval = function () {\n self[self.state] && self[self.state]();\n self.$mouseMoved = false;\n };\n if (useragent.isOldIE && ev.domEvent.type == \"dblclick\") {\n return setTimeout(function () { onCaptureEnd(ev); });\n }\n var onOperationEnd = function (e) {\n if (!self.releaseMouse)\n return;\n if (editor.curOp.command.name && editor.curOp.selectionChanged) {\n self[self.state + \"End\"] && self[self.state + \"End\"]();\n self.state = \"\";\n self.releaseMouse();\n }\n };\n editor.on(\"beforeEndOperation\", onOperationEnd);\n editor.startOperation({ command: { name: \"mouse\" } });\n self.$onCaptureMouseMove = onMouseMove;\n self.releaseMouse = event.capture(this.editor.container, onMouseMove, onCaptureEnd);\n var timerId = setInterval(onCaptureInterval, 20);\n };\n MouseHandler.prototype.cancelContextMenu = function () {\n var stop = function (e) {\n if (e && e.domEvent && e.domEvent.type != \"contextmenu\")\n return;\n this.editor.off(\"nativecontextmenu\", stop);\n if (e && e.domEvent)\n event.stopEvent(e.domEvent);\n }.bind(this);\n setTimeout(stop, 10);\n this.editor.on(\"nativecontextmenu\", stop);\n };\n MouseHandler.prototype.destroy = function () {\n if (this.releaseMouse)\n this.releaseMouse();\n };\n return MouseHandler;\n}());\nMouseHandler.prototype.releaseMouse = null;\nconfig.defineOptions(MouseHandler.prototype, \"mouseHandler\", {\n scrollSpeed: { initialValue: 2 },\n dragDelay: { initialValue: (useragent.isMac ? 150 : 0) },\n dragEnabled: { initialValue: true },\n focusTimeout: { initialValue: 0 },\n tooltipFollowsMouse: { initialValue: true }\n});\nexports.MouseHandler = MouseHandler;\n\n});\n\nace.define(\"ace/mouse/fold_handler\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"], function(require, exports, module){\"use strict\";\nvar dom = require(\"../lib/dom\");\nvar FoldHandler = /** @class */ (function () {\n function FoldHandler(editor) {\n editor.on(\"click\", function (e) {\n var position = e.getDocumentPosition();\n var session = editor.session;\n var fold = session.getFoldAt(position.row, position.column, 1);\n if (fold) {\n if (e.getAccelKey())\n session.removeFold(fold);\n else\n session.expandFold(fold);\n e.stop();\n }\n var target = e.domEvent && e.domEvent.target;\n if (target && dom.hasCssClass(target, \"ace_inline_button\")) {\n if (dom.hasCssClass(target, \"ace_toggle_wrap\")) {\n session.setOption(\"wrap\", !session.getUseWrapMode());\n editor.renderer.scrollCursorIntoView();\n }\n }\n });\n editor.on(\"gutterclick\", function (e) {\n var gutterRegion = editor.renderer.$gutterLayer.getRegion(e);\n if (gutterRegion == \"foldWidgets\") {\n var row = e.getDocumentPosition().row;\n var session = editor.session;\n if (session.foldWidgets && session.foldWidgets[row])\n editor.session.onFoldWidgetClick(row, e);\n if (!editor.isFocused())\n editor.focus();\n e.stop();\n }\n });\n editor.on(\"gutterdblclick\", function (e) {\n var gutterRegion = editor.renderer.$gutterLayer.getRegion(e);\n if (gutterRegion == \"foldWidgets\") {\n var row = e.getDocumentPosition().row;\n var session = editor.session;\n var data = session.getParentFoldRangeData(row, true);\n var range = data.range || data.firstRange;\n if (range) {\n row = range.start.row;\n var fold = session.getFoldAt(row, session.getLine(row).length, 1);\n if (fold) {\n session.removeFold(fold);\n }\n else {\n session.addFold(\"...\", range);\n editor.renderer.scrollCursorIntoView({ row: range.start.row, column: 0 });\n }\n }\n e.stop();\n }\n });\n }\n return FoldHandler;\n}());\nexports.FoldHandler = FoldHandler;\n\n});\n\nace.define(\"ace/keyboard/keybinding\",[\"require\",\"exports\",\"module\",\"ace/lib/keys\",\"ace/lib/event\"], function(require, exports, module){\"use strict\";\nvar keyUtil = require(\"../lib/keys\");\nvar event = require(\"../lib/event\");\nvar KeyBinding = /** @class */ (function () {\n function KeyBinding(editor) {\n this.$editor = editor;\n this.$data = { editor: editor };\n this.$handlers = [];\n this.setDefaultHandler(editor.commands);\n }\n KeyBinding.prototype.setDefaultHandler = function (kb) {\n this.removeKeyboardHandler(this.$defaultHandler);\n this.$defaultHandler = kb;\n this.addKeyboardHandler(kb, 0);\n };\n KeyBinding.prototype.setKeyboardHandler = function (kb) {\n var h = this.$handlers;\n if (h[h.length - 1] == kb)\n return;\n while (h[h.length - 1] && h[h.length - 1] != this.$defaultHandler)\n this.removeKeyboardHandler(h[h.length - 1]);\n this.addKeyboardHandler(kb, 1);\n };\n KeyBinding.prototype.addKeyboardHandler = function (kb, pos) {\n if (!kb)\n return;\n if (typeof kb == \"function\" && !kb.handleKeyboard)\n kb.handleKeyboard = kb;\n var i = this.$handlers.indexOf(kb);\n if (i != -1)\n this.$handlers.splice(i, 1);\n if (pos == undefined)\n this.$handlers.push(kb);\n else\n this.$handlers.splice(pos, 0, kb);\n if (i == -1 && kb.attach)\n kb.attach(this.$editor);\n };\n KeyBinding.prototype.removeKeyboardHandler = function (kb) {\n var i = this.$handlers.indexOf(kb);\n if (i == -1)\n return false;\n this.$handlers.splice(i, 1);\n kb.detach && kb.detach(this.$editor);\n return true;\n };\n KeyBinding.prototype.getKeyboardHandler = function () {\n return this.$handlers[this.$handlers.length - 1];\n };\n KeyBinding.prototype.getStatusText = function () {\n var data = this.$data;\n var editor = data.editor;\n return this.$handlers.map(function (h) {\n return h.getStatusText && h.getStatusText(editor, data) || \"\";\n }).filter(Boolean).join(\" \");\n };\n KeyBinding.prototype.$callKeyboardHandlers = function (hashId, keyString, keyCode, e) {\n var toExecute;\n var success = false;\n var commands = this.$editor.commands;\n for (var i = this.$handlers.length; i--;) {\n toExecute = this.$handlers[i].handleKeyboard(this.$data, hashId, keyString, keyCode, e);\n if (!toExecute || !toExecute.command)\n continue;\n if (toExecute.command == \"null\") {\n success = true;\n }\n else {\n success = commands.exec(toExecute.command, this.$editor, toExecute.args, e);\n }\n if (success && e && hashId != -1 &&\n toExecute.passEvent != true && toExecute.command.passEvent != true) {\n event.stopEvent(e);\n }\n if (success)\n break;\n }\n if (!success && hashId == -1) {\n toExecute = { command: \"insertstring\" };\n success = commands.exec(\"insertstring\", this.$editor, keyString);\n }\n if (success && this.$editor._signal)\n this.$editor._signal(\"keyboardActivity\", toExecute);\n return success;\n };\n KeyBinding.prototype.onCommandKey = function (e, hashId, keyCode) {\n var keyString = keyUtil.keyCodeToString(keyCode);\n return this.$callKeyboardHandlers(hashId, keyString, keyCode, e);\n };\n KeyBinding.prototype.onTextInput = function (text) {\n return this.$callKeyboardHandlers(-1, text);\n };\n return KeyBinding;\n}());\nexports.KeyBinding = KeyBinding;\n\n});\n\nace.define(\"ace/lib/bidiutil\",[\"require\",\"exports\",\"module\"], function(require, exports, module){\"use strict\";\nvar ArabicAlefBetIntervalsBegine = ['\\u0621', '\\u0641'];\nvar ArabicAlefBetIntervalsEnd = ['\\u063A', '\\u064a'];\nvar dir = 0, hiLevel = 0;\nvar lastArabic = false, hasUBAT_AL = false, hasUBAT_B = false, hasUBAT_S = false, hasBlockSep = false, hasSegSep = false;\nvar impTab_LTR = [ [0, 3, 0, 1, 0, 0, 0], [0, 3, 0, 1, 2, 2, 0], [0, 3, 0, 0x11, 2, 0, 1], [0, 3, 5, 5, 4, 1, 0], [0, 3, 0x15, 0x15, 4, 0, 1], [0, 3, 5, 5, 4, 2, 0]\n];\nvar impTab_RTL = [ [2, 0, 1, 1, 0, 1, 0], [2, 0, 1, 1, 0, 2, 0], [2, 0, 2, 1, 3, 2, 0], [2, 0, 2, 0x21, 3, 1, 1]\n];\nvar LTR = 0, RTL = 1;\nvar L = 0;\nvar R = 1;\nvar EN = 2;\nvar AN = 3;\nvar ON = 4;\nvar B = 5;\nvar S = 6;\nvar AL = 7;\nvar WS = 8;\nvar CS = 9;\nvar ES = 10;\nvar ET = 11;\nvar NSM = 12;\nvar LRE = 13;\nvar RLE = 14;\nvar PDF = 15;\nvar LRO = 16;\nvar RLO = 17;\nvar BN = 18;\nvar UnicodeTBL00 = [\n BN, BN, BN, BN, BN, BN, BN, BN, BN, S, B, S, WS, B, BN, BN,\n BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, B, B, B, S,\n WS, ON, ON, ET, ET, ET, ON, ON, ON, ON, ON, ES, CS, ES, CS, CS,\n EN, EN, EN, EN, EN, EN, EN, EN, EN, EN, CS, ON, ON, ON, ON, ON,\n ON, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L,\n L, L, L, L, L, L, L, L, L, L, L, ON, ON, ON, ON, ON,\n ON, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L,\n L, L, L, L, L, L, L, L, L, L, L, ON, ON, ON, ON, BN,\n BN, BN, BN, BN, BN, B, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN,\n BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN,\n CS, ON, ET, ET, ET, ET, ON, ON, ON, ON, L, ON, ON, BN, ON, ON,\n ET, ET, EN, EN, ON, L, ON, ON, ON, EN, L, ON, ON, ON, ON, ON\n];\nvar UnicodeTBL20 = [\n WS, WS, WS, WS, WS, WS, WS, WS, WS, WS, WS, BN, BN, BN, L, R,\n ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON,\n ON, ON, ON, ON, ON, ON, ON, ON, WS, B, LRE, RLE, PDF, LRO, RLO, CS,\n ET, ET, ET, ET, ET, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON,\n ON, ON, ON, ON, CS, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON,\n ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, WS\n];\nfunction _computeLevels(chars, levels, len, charTypes) {\n var impTab = dir ? impTab_RTL : impTab_LTR, prevState = null, newClass = null, newLevel = null, newState = 0, action = null, cond = null, condPos = -1, i = null, ix = null, classes = [];\n if (!charTypes) {\n for (i = 0, charTypes = []; i < len; i++) {\n charTypes[i] = _getCharacterType(chars[i]);\n }\n }\n hiLevel = dir;\n lastArabic = false;\n hasUBAT_AL = false;\n hasUBAT_B = false;\n hasUBAT_S = false;\n for (ix = 0; ix < len; ix++) {\n prevState = newState;\n classes[ix] = newClass = _getCharClass(chars, charTypes, classes, ix);\n newState = impTab[prevState][newClass];\n action = newState & 0xF0;\n newState &= 0x0F;\n levels[ix] = newLevel = impTab[newState][5];\n if (action > 0) {\n if (action == 0x10) {\n for (i = condPos; i < ix; i++) {\n levels[i] = 1;\n }\n condPos = -1;\n }\n else {\n condPos = -1;\n }\n }\n cond = impTab[newState][6];\n if (cond) {\n if (condPos == -1) {\n condPos = ix;\n }\n }\n else {\n if (condPos > -1) {\n for (i = condPos; i < ix; i++) {\n levels[i] = newLevel;\n }\n condPos = -1;\n }\n }\n if (charTypes[ix] == B) {\n levels[ix] = 0;\n }\n hiLevel |= newLevel;\n }\n if (hasUBAT_S) {\n for (i = 0; i < len; i++) {\n if (charTypes[i] == S) {\n levels[i] = dir;\n for (var j = i - 1; j >= 0; j--) {\n if (charTypes[j] == WS) {\n levels[j] = dir;\n }\n else {\n break;\n }\n }\n }\n }\n }\n}\nfunction _invertLevel(lev, levels, _array) {\n if (hiLevel < lev) {\n return;\n }\n if (lev == 1 && dir == RTL && !hasUBAT_B) {\n _array.reverse();\n return;\n }\n var len = _array.length, start = 0, end, lo, hi, tmp;\n while (start < len) {\n if (levels[start] >= lev) {\n end = start + 1;\n while (end < len && levels[end] >= lev) {\n end++;\n }\n for (lo = start, hi = end - 1; lo < hi; lo++, hi--) {\n tmp = _array[lo];\n _array[lo] = _array[hi];\n _array[hi] = tmp;\n }\n start = end;\n }\n start++;\n }\n}\nfunction _getCharClass(chars, types, classes, ix) {\n var cType = types[ix], wType, nType, len, i;\n switch (cType) {\n case L:\n case R:\n lastArabic = false;\n case ON:\n case AN:\n return cType;\n case EN:\n return lastArabic ? AN : EN;\n case AL:\n lastArabic = true;\n hasUBAT_AL = true;\n return R;\n case WS:\n return ON;\n case CS:\n if (ix < 1 || (ix + 1) >= types.length ||\n ((wType = classes[ix - 1]) != EN && wType != AN) ||\n ((nType = types[ix + 1]) != EN && nType != AN)) {\n return ON;\n }\n if (lastArabic) {\n nType = AN;\n }\n return nType == wType ? nType : ON;\n case ES:\n wType = ix > 0 ? classes[ix - 1] : B;\n if (wType == EN && (ix + 1) < types.length && types[ix + 1] == EN) {\n return EN;\n }\n return ON;\n case ET:\n if (ix > 0 && classes[ix - 1] == EN) {\n return EN;\n }\n if (lastArabic) {\n return ON;\n }\n i = ix + 1;\n len = types.length;\n while (i < len && types[i] == ET) {\n i++;\n }\n if (i < len && types[i] == EN) {\n return EN;\n }\n return ON;\n case NSM:\n len = types.length;\n i = ix + 1;\n while (i < len && types[i] == NSM) {\n i++;\n }\n if (i < len) {\n var c = chars[ix], rtlCandidate = (c >= 0x0591 && c <= 0x08FF) || c == 0xFB1E;\n wType = types[i];\n if (rtlCandidate && (wType == R || wType == AL)) {\n return R;\n }\n }\n if (ix < 1 || (wType = types[ix - 1]) == B) {\n return ON;\n }\n return classes[ix - 1];\n case B:\n lastArabic = false;\n hasUBAT_B = true;\n return dir;\n case S:\n hasUBAT_S = true;\n return ON;\n case LRE:\n case RLE:\n case LRO:\n case RLO:\n case PDF:\n lastArabic = false;\n case BN:\n return ON;\n }\n}\nfunction _getCharacterType(ch) {\n var uc = ch.charCodeAt(0), hi = uc >> 8;\n if (hi == 0) {\n return ((uc > 0x00BF) ? L : UnicodeTBL00[uc]);\n }\n else if (hi == 5) {\n return (/[\\u0591-\\u05f4]/.test(ch) ? R : L);\n }\n else if (hi == 6) {\n if (/[\\u0610-\\u061a\\u064b-\\u065f\\u06d6-\\u06e4\\u06e7-\\u06ed]/.test(ch))\n return NSM;\n else if (/[\\u0660-\\u0669\\u066b-\\u066c]/.test(ch))\n return AN;\n else if (uc == 0x066A)\n return ET;\n else if (/[\\u06f0-\\u06f9]/.test(ch))\n return EN;\n else\n return AL;\n }\n else if (hi == 0x20 && uc <= 0x205F) {\n return UnicodeTBL20[uc & 0xFF];\n }\n else if (hi == 0xFE) {\n return (uc >= 0xFE70 ? AL : ON);\n }\n return ON;\n}\nfunction _isArabicDiacritics(ch) {\n return (ch >= '\\u064b' && ch <= '\\u0655');\n}\nexports.L = L;\nexports.R = R;\nexports.EN = EN;\nexports.ON_R = 3;\nexports.AN = 4;\nexports.R_H = 5;\nexports.B = 6;\nexports.RLE = 7;\nexports.DOT = \"\\xB7\";\nexports.doBidiReorder = function (text, textCharTypes, isRtl) {\n if (text.length < 2)\n return {};\n var chars = text.split(\"\"), logicalFromVisual = new Array(chars.length), bidiLevels = new Array(chars.length), levels = [];\n dir = isRtl ? RTL : LTR;\n _computeLevels(chars, levels, chars.length, textCharTypes);\n for (var i = 0; i < logicalFromVisual.length; logicalFromVisual[i] = i, i++)\n ;\n _invertLevel(2, levels, logicalFromVisual);\n _invertLevel(1, levels, logicalFromVisual);\n for (var i = 0; i < logicalFromVisual.length - 1; i++) { //fix levels to reflect character width\n if (textCharTypes[i] === AN) {\n levels[i] = exports.AN;\n }\n else if (levels[i] === R && ((textCharTypes[i] > AL && textCharTypes[i] < LRE)\n || textCharTypes[i] === ON || textCharTypes[i] === BN)) {\n levels[i] = exports.ON_R;\n }\n else if ((i > 0 && chars[i - 1] === '\\u0644') && /\\u0622|\\u0623|\\u0625|\\u0627/.test(chars[i])) {\n levels[i - 1] = levels[i] = exports.R_H;\n i++;\n }\n }\n if (chars[chars.length - 1] === exports.DOT)\n levels[chars.length - 1] = exports.B;\n if (chars[0] === '\\u202B')\n levels[0] = exports.RLE;\n for (var i = 0; i < logicalFromVisual.length; i++) {\n bidiLevels[i] = levels[logicalFromVisual[i]];\n }\n return { 'logicalFromVisual': logicalFromVisual, 'bidiLevels': bidiLevels };\n};\nexports.hasBidiCharacters = function (text, textCharTypes) {\n var ret = false;\n for (var i = 0; i < text.length; i++) {\n textCharTypes[i] = _getCharacterType(text.charAt(i));\n if (!ret && (textCharTypes[i] == R || textCharTypes[i] == AL || textCharTypes[i] == AN))\n ret = true;\n }\n return ret;\n};\nexports.getVisualFromLogicalIdx = function (logIdx, rowMap) {\n for (var i = 0; i < rowMap.logicalFromVisual.length; i++) {\n if (rowMap.logicalFromVisual[i] == logIdx)\n return i;\n }\n return 0;\n};\n\n});\n\nace.define(\"ace/bidihandler\",[\"require\",\"exports\",\"module\",\"ace/lib/bidiutil\",\"ace/lib/lang\"], function(require, exports, module){\"use strict\";\nvar bidiUtil = require(\"./lib/bidiutil\");\nvar lang = require(\"./lib/lang\");\nvar bidiRE = /[\\u0590-\\u05f4\\u0600-\\u06ff\\u0700-\\u08ac\\u202B]/;\nvar BidiHandler = /** @class */ (function () {\n function BidiHandler(session) {\n this.session = session;\n this.bidiMap = {};\n this.currentRow = null;\n this.bidiUtil = bidiUtil;\n this.charWidths = [];\n this.EOL = \"\\xAC\";\n this.showInvisibles = true;\n this.isRtlDir = false;\n this.$isRtl = false;\n this.line = \"\";\n this.wrapIndent = 0;\n this.EOF = \"\\xB6\";\n this.RLE = \"\\u202B\";\n this.contentWidth = 0;\n this.fontMetrics = null;\n this.rtlLineOffset = 0;\n this.wrapOffset = 0;\n this.isMoveLeftOperation = false;\n this.seenBidi = bidiRE.test(session.getValue());\n }\n BidiHandler.prototype.isBidiRow = function (screenRow, docRow, splitIndex) {\n if (!this.seenBidi)\n return false;\n if (screenRow !== this.currentRow) {\n this.currentRow = screenRow;\n this.updateRowLine(docRow, splitIndex);\n this.updateBidiMap();\n }\n return this.bidiMap.bidiLevels;\n };\n BidiHandler.prototype.onChange = function (delta) {\n if (!this.seenBidi) {\n if (delta.action == \"insert\" && bidiRE.test(delta.lines.join(\"\\n\"))) {\n this.seenBidi = true;\n this.currentRow = null;\n }\n }\n else {\n this.currentRow = null;\n }\n };\n BidiHandler.prototype.getDocumentRow = function () {\n var docRow = 0;\n var rowCache = this.session.$screenRowCache;\n if (rowCache.length) {\n var index = this.session.$getRowCacheIndex(rowCache, this.currentRow);\n if (index >= 0)\n docRow = this.session.$docRowCache[index];\n }\n return docRow;\n };\n BidiHandler.prototype.getSplitIndex = function () {\n var splitIndex = 0;\n var rowCache = this.session.$screenRowCache;\n if (rowCache.length) {\n var currentIndex, prevIndex = this.session.$getRowCacheIndex(rowCache, this.currentRow);\n while (this.currentRow - splitIndex > 0) {\n currentIndex = this.session.$getRowCacheIndex(rowCache, this.currentRow - splitIndex - 1);\n if (currentIndex !== prevIndex)\n break;\n prevIndex = currentIndex;\n splitIndex++;\n }\n }\n else {\n splitIndex = this.currentRow;\n }\n return splitIndex;\n };\n BidiHandler.prototype.updateRowLine = function (docRow, splitIndex) {\n if (docRow === undefined)\n docRow = this.getDocumentRow();\n var isLastRow = (docRow === this.session.getLength() - 1), endOfLine = isLastRow ? this.EOF : this.EOL;\n this.wrapIndent = 0;\n this.line = this.session.getLine(docRow);\n this.isRtlDir = this.$isRtl || this.line.charAt(0) === this.RLE;\n if (this.session.$useWrapMode) {\n var splits = this.session.$wrapData[docRow];\n if (splits) {\n if (splitIndex === undefined)\n splitIndex = this.getSplitIndex();\n if (splitIndex > 0 && splits.length) {\n this.wrapIndent = splits.indent;\n this.wrapOffset = this.wrapIndent * this.charWidths[bidiUtil.L];\n this.line = (splitIndex < splits.length) ?\n this.line.substring(splits[splitIndex - 1], splits[splitIndex]) :\n this.line.substring(splits[splits.length - 1]);\n }\n else {\n this.line = this.line.substring(0, splits[splitIndex]);\n }\n if (splitIndex == splits.length) {\n this.line += (this.showInvisibles) ? endOfLine : bidiUtil.DOT;\n }\n }\n }\n else {\n this.line += this.showInvisibles ? endOfLine : bidiUtil.DOT;\n }\n var session = this.session, shift = 0, size;\n this.line = this.line.replace(/\\t|[\\u1100-\\u2029, \\u202F-\\uFFE6]/g, function (ch, i) {\n if (ch === '\\t' || session.isFullWidth(ch.charCodeAt(0))) {\n size = (ch === '\\t') ? session.getScreenTabSize(i + shift) : 2;\n shift += size - 1;\n return lang.stringRepeat(bidiUtil.DOT, size);\n }\n return ch;\n });\n if (this.isRtlDir) {\n this.fontMetrics.$main.textContent = (this.line.charAt(this.line.length - 1) == bidiUtil.DOT) ? this.line.substr(0, this.line.length - 1) : this.line;\n this.rtlLineOffset = this.contentWidth - this.fontMetrics.$main.getBoundingClientRect().width;\n }\n };\n BidiHandler.prototype.updateBidiMap = function () {\n var textCharTypes = [];\n if (bidiUtil.hasBidiCharacters(this.line, textCharTypes) || this.isRtlDir) {\n this.bidiMap = bidiUtil.doBidiReorder(this.line, textCharTypes, this.isRtlDir);\n }\n else {\n this.bidiMap = {};\n }\n };\n BidiHandler.prototype.markAsDirty = function () {\n this.currentRow = null;\n };\n BidiHandler.prototype.updateCharacterWidths = function (fontMetrics) {\n if (this.characterWidth === fontMetrics.$characterSize.width)\n return;\n this.fontMetrics = fontMetrics;\n var characterWidth = this.characterWidth = fontMetrics.$characterSize.width;\n var bidiCharWidth = fontMetrics.$measureCharWidth(\"\\u05d4\");\n this.charWidths[bidiUtil.L] = this.charWidths[bidiUtil.EN] = this.charWidths[bidiUtil.ON_R] = characterWidth;\n this.charWidths[bidiUtil.R] = this.charWidths[bidiUtil.AN] = bidiCharWidth;\n this.charWidths[bidiUtil.R_H] = bidiCharWidth * 0.45;\n this.charWidths[bidiUtil.B] = this.charWidths[bidiUtil.RLE] = 0;\n this.currentRow = null;\n };\n BidiHandler.prototype.setShowInvisibles = function (showInvisibles) {\n this.showInvisibles = showInvisibles;\n this.currentRow = null;\n };\n BidiHandler.prototype.setEolChar = function (eolChar) {\n this.EOL = eolChar;\n };\n BidiHandler.prototype.setContentWidth = function (width) {\n this.contentWidth = width;\n };\n BidiHandler.prototype.isRtlLine = function (row) {\n if (this.$isRtl)\n return true;\n if (row != undefined)\n return (this.session.getLine(row).charAt(0) == this.RLE);\n else\n return this.isRtlDir;\n };\n BidiHandler.prototype.setRtlDirection = function (editor, isRtlDir) {\n var cursor = editor.getCursorPosition();\n for (var row = editor.selection.getSelectionAnchor().row; row <= cursor.row; row++) {\n if (!isRtlDir && editor.session.getLine(row).charAt(0) === editor.session.$bidiHandler.RLE)\n editor.session.doc.removeInLine(row, 0, 1);\n else if (isRtlDir && editor.session.getLine(row).charAt(0) !== editor.session.$bidiHandler.RLE)\n editor.session.doc.insert({ column: 0, row: row }, editor.session.$bidiHandler.RLE);\n }\n };\n BidiHandler.prototype.getPosLeft = function (col) {\n col -= this.wrapIndent;\n var leftBoundary = (this.line.charAt(0) === this.RLE) ? 1 : 0;\n var logicalIdx = (col > leftBoundary) ? (this.session.getOverwrite() ? col : col - 1) : leftBoundary;\n var visualIdx = bidiUtil.getVisualFromLogicalIdx(logicalIdx, this.bidiMap), levels = this.bidiMap.bidiLevels, left = 0;\n if (!this.session.getOverwrite() && col <= leftBoundary && levels[visualIdx] % 2 !== 0)\n visualIdx++;\n for (var i = 0; i < visualIdx; i++) {\n left += this.charWidths[levels[i]];\n }\n if (!this.session.getOverwrite() && (col > leftBoundary) && (levels[visualIdx] % 2 === 0))\n left += this.charWidths[levels[visualIdx]];\n if (this.wrapIndent)\n left += this.isRtlDir ? (-1 * this.wrapOffset) : this.wrapOffset;\n if (this.isRtlDir)\n left += this.rtlLineOffset;\n return left;\n };\n BidiHandler.prototype.getSelections = function (startCol, endCol) {\n var map = this.bidiMap, levels = map.bidiLevels, level, selections = [], offset = 0, selColMin = Math.min(startCol, endCol) - this.wrapIndent, selColMax = Math.max(startCol, endCol) - this.wrapIndent, isSelected = false, isSelectedPrev = false, selectionStart = 0;\n if (this.wrapIndent)\n offset += this.isRtlDir ? (-1 * this.wrapOffset) : this.wrapOffset;\n for (var logIdx, visIdx = 0; visIdx < levels.length; visIdx++) {\n logIdx = map.logicalFromVisual[visIdx];\n level = levels[visIdx];\n isSelected = (logIdx >= selColMin) && (logIdx < selColMax);\n if (isSelected && !isSelectedPrev) {\n selectionStart = offset;\n }\n else if (!isSelected && isSelectedPrev) {\n selections.push({ left: selectionStart, width: offset - selectionStart });\n }\n offset += this.charWidths[level];\n isSelectedPrev = isSelected;\n }\n if (isSelected && (visIdx === levels.length)) {\n selections.push({ left: selectionStart, width: offset - selectionStart });\n }\n if (this.isRtlDir) {\n for (var i = 0; i < selections.length; i++) {\n selections[i].left += this.rtlLineOffset;\n }\n }\n return selections;\n };\n BidiHandler.prototype.offsetToCol = function (posX) {\n if (this.isRtlDir)\n posX -= this.rtlLineOffset;\n var logicalIdx = 0, posX = Math.max(posX, 0), offset = 0, visualIdx = 0, levels = this.bidiMap.bidiLevels, charWidth = this.charWidths[levels[visualIdx]];\n if (this.wrapIndent)\n posX -= this.isRtlDir ? (-1 * this.wrapOffset) : this.wrapOffset;\n while (posX > offset + charWidth / 2) {\n offset += charWidth;\n if (visualIdx === levels.length - 1) {\n charWidth = 0;\n break;\n }\n charWidth = this.charWidths[levels[++visualIdx]];\n }\n if (visualIdx > 0 && (levels[visualIdx - 1] % 2 !== 0) && (levels[visualIdx] % 2 === 0)) {\n if (posX < offset)\n visualIdx--;\n logicalIdx = this.bidiMap.logicalFromVisual[visualIdx];\n }\n else if (visualIdx > 0 && (levels[visualIdx - 1] % 2 === 0) && (levels[visualIdx] % 2 !== 0)) {\n logicalIdx = 1 + ((posX > offset) ? this.bidiMap.logicalFromVisual[visualIdx]\n : this.bidiMap.logicalFromVisual[visualIdx - 1]);\n }\n else if ((this.isRtlDir && visualIdx === levels.length - 1 && charWidth === 0 && (levels[visualIdx - 1] % 2 === 0))\n || (!this.isRtlDir && visualIdx === 0 && (levels[visualIdx] % 2 !== 0))) {\n logicalIdx = 1 + this.bidiMap.logicalFromVisual[visualIdx];\n }\n else {\n if (visualIdx > 0 && (levels[visualIdx - 1] % 2 !== 0) && charWidth !== 0)\n visualIdx--;\n logicalIdx = this.bidiMap.logicalFromVisual[visualIdx];\n }\n if (logicalIdx === 0 && this.isRtlDir)\n logicalIdx++;\n return (logicalIdx + this.wrapIndent);\n };\n return BidiHandler;\n}());\nexports.BidiHandler = BidiHandler;\n\n});\n\nace.define(\"ace/selection\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/lib/event_emitter\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"./lib/oop\");\nvar lang = require(\"./lib/lang\");\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar Range = require(\"./range\").Range;\nvar Selection = /** @class */ (function () {\n function Selection(session) {\n this.session = session;\n this.doc = session.getDocument();\n this.clearSelection();\n this.cursor = this.lead = this.doc.createAnchor(0, 0);\n this.anchor = this.doc.createAnchor(0, 0);\n this.$silent = false;\n var self = this;\n this.cursor.on(\"change\", function (e) {\n self.$cursorChanged = true;\n if (!self.$silent)\n self._emit(\"changeCursor\");\n if (!self.$isEmpty && !self.$silent)\n self._emit(\"changeSelection\");\n if (!self.$keepDesiredColumnOnChange && e.old.column != e.value.column)\n self.$desiredColumn = null;\n });\n this.anchor.on(\"change\", function () {\n self.$anchorChanged = true;\n if (!self.$isEmpty && !self.$silent)\n self._emit(\"changeSelection\");\n });\n }\n Selection.prototype.isEmpty = function () {\n return this.$isEmpty || (this.anchor.row == this.lead.row &&\n this.anchor.column == this.lead.column);\n };\n Selection.prototype.isMultiLine = function () {\n return !this.$isEmpty && this.anchor.row != this.cursor.row;\n };\n Selection.prototype.getCursor = function () {\n return this.lead.getPosition();\n };\n Selection.prototype.setAnchor = function (row, column) {\n this.$isEmpty = false;\n this.anchor.setPosition(row, column);\n };\n Selection.prototype.getAnchor = function () {\n if (this.$isEmpty)\n return this.getSelectionLead();\n return this.anchor.getPosition();\n };\n Selection.prototype.getSelectionLead = function () {\n return this.lead.getPosition();\n };\n Selection.prototype.isBackwards = function () {\n var anchor = this.anchor;\n var lead = this.lead;\n return (anchor.row > lead.row || (anchor.row == lead.row && anchor.column > lead.column));\n };\n Selection.prototype.getRange = function () {\n var anchor = this.anchor;\n var lead = this.lead;\n if (this.$isEmpty)\n return Range.fromPoints(lead, lead);\n return this.isBackwards()\n ? Range.fromPoints(lead, anchor)\n : Range.fromPoints(anchor, lead);\n };\n Selection.prototype.clearSelection = function () {\n if (!this.$isEmpty) {\n this.$isEmpty = true;\n this._emit(\"changeSelection\");\n }\n };\n Selection.prototype.selectAll = function () {\n this.$setSelection(0, 0, Number.MAX_VALUE, Number.MAX_VALUE);\n };\n Selection.prototype.setRange = function (range, reverse) {\n var start = reverse ? range.end : range.start;\n var end = reverse ? range.start : range.end;\n this.$setSelection(start.row, start.column, end.row, end.column);\n };\n Selection.prototype.$setSelection = function (anchorRow, anchorColumn, cursorRow, cursorColumn) {\n if (this.$silent)\n return;\n var wasEmpty = this.$isEmpty;\n var wasMultiselect = this.inMultiSelectMode;\n this.$silent = true;\n this.$cursorChanged = this.$anchorChanged = false;\n this.anchor.setPosition(anchorRow, anchorColumn);\n this.cursor.setPosition(cursorRow, cursorColumn);\n this.$isEmpty = !Range.comparePoints(this.anchor, this.cursor);\n this.$silent = false;\n if (this.$cursorChanged)\n this._emit(\"changeCursor\");\n if (this.$cursorChanged || this.$anchorChanged || wasEmpty != this.$isEmpty || wasMultiselect)\n this._emit(\"changeSelection\");\n };\n Selection.prototype.$moveSelection = function (mover) {\n var lead = this.lead;\n if (this.$isEmpty)\n this.setSelectionAnchor(lead.row, lead.column);\n mover.call(this);\n };\n Selection.prototype.selectTo = function (row, column) {\n this.$moveSelection(function () {\n this.moveCursorTo(row, column);\n });\n };\n Selection.prototype.selectToPosition = function (pos) {\n this.$moveSelection(function () {\n this.moveCursorToPosition(pos);\n });\n };\n Selection.prototype.moveTo = function (row, column) {\n this.clearSelection();\n this.moveCursorTo(row, column);\n };\n Selection.prototype.moveToPosition = function (pos) {\n this.clearSelection();\n this.moveCursorToPosition(pos);\n };\n Selection.prototype.selectUp = function () {\n this.$moveSelection(this.moveCursorUp);\n };\n Selection.prototype.selectDown = function () {\n this.$moveSelection(this.moveCursorDown);\n };\n Selection.prototype.selectRight = function () {\n this.$moveSelection(this.moveCursorRight);\n };\n Selection.prototype.selectLeft = function () {\n this.$moveSelection(this.moveCursorLeft);\n };\n Selection.prototype.selectLineStart = function () {\n this.$moveSelection(this.moveCursorLineStart);\n };\n Selection.prototype.selectLineEnd = function () {\n this.$moveSelection(this.moveCursorLineEnd);\n };\n Selection.prototype.selectFileEnd = function () {\n this.$moveSelection(this.moveCursorFileEnd);\n };\n Selection.prototype.selectFileStart = function () {\n this.$moveSelection(this.moveCursorFileStart);\n };\n Selection.prototype.selectWordRight = function () {\n this.$moveSelection(this.moveCursorWordRight);\n };\n Selection.prototype.selectWordLeft = function () {\n this.$moveSelection(this.moveCursorWordLeft);\n };\n Selection.prototype.getWordRange = function (row, column) {\n if (typeof column == \"undefined\") {\n var cursor = row || this.lead;\n row = cursor.row;\n column = cursor.column;\n }\n return this.session.getWordRange(row, column);\n };\n Selection.prototype.selectWord = function () {\n this.setSelectionRange(this.getWordRange());\n };\n Selection.prototype.selectAWord = function () {\n var cursor = this.getCursor();\n var range = this.session.getAWordRange(cursor.row, cursor.column);\n this.setSelectionRange(range);\n };\n Selection.prototype.getLineRange = function (row, excludeLastChar) {\n var rowStart = typeof row == \"number\" ? row : this.lead.row;\n var rowEnd;\n var foldLine = this.session.getFoldLine(rowStart);\n if (foldLine) {\n rowStart = foldLine.start.row;\n rowEnd = foldLine.end.row;\n }\n else {\n rowEnd = rowStart;\n }\n if (excludeLastChar === true)\n return new Range(rowStart, 0, rowEnd, this.session.getLine(rowEnd).length);\n else\n return new Range(rowStart, 0, rowEnd + 1, 0);\n };\n Selection.prototype.selectLine = function () {\n this.setSelectionRange(this.getLineRange());\n };\n Selection.prototype.moveCursorUp = function () {\n this.moveCursorBy(-1, 0);\n };\n Selection.prototype.moveCursorDown = function () {\n this.moveCursorBy(1, 0);\n };\n Selection.prototype.wouldMoveIntoSoftTab = function (cursor, tabSize, direction) {\n var start = cursor.column;\n var end = cursor.column + tabSize;\n if (direction < 0) {\n start = cursor.column - tabSize;\n end = cursor.column;\n }\n return this.session.isTabStop(cursor) && this.doc.getLine(cursor.row).slice(start, end).split(\" \").length - 1 == tabSize;\n };\n Selection.prototype.moveCursorLeft = function () {\n var cursor = this.lead.getPosition(), fold;\n if (fold = this.session.getFoldAt(cursor.row, cursor.column, -1)) {\n this.moveCursorTo(fold.start.row, fold.start.column);\n }\n else if (cursor.column === 0) {\n if (cursor.row > 0) {\n this.moveCursorTo(cursor.row - 1, this.doc.getLine(cursor.row - 1).length);\n }\n }\n else {\n var tabSize = this.session.getTabSize();\n if (this.wouldMoveIntoSoftTab(cursor, tabSize, -1) && !this.session.getNavigateWithinSoftTabs()) {\n this.moveCursorBy(0, -tabSize);\n }\n else {\n this.moveCursorBy(0, -1);\n }\n }\n };\n Selection.prototype.moveCursorRight = function () {\n var cursor = this.lead.getPosition(), fold;\n if (fold = this.session.getFoldAt(cursor.row, cursor.column, 1)) {\n this.moveCursorTo(fold.end.row, fold.end.column);\n }\n else if (this.lead.column == this.doc.getLine(this.lead.row).length) {\n if (this.lead.row < this.doc.getLength() - 1) {\n this.moveCursorTo(this.lead.row + 1, 0);\n }\n }\n else {\n var tabSize = this.session.getTabSize();\n var cursor = this.lead;\n if (this.wouldMoveIntoSoftTab(cursor, tabSize, 1) && !this.session.getNavigateWithinSoftTabs()) {\n this.moveCursorBy(0, tabSize);\n }\n else {\n this.moveCursorBy(0, 1);\n }\n }\n };\n Selection.prototype.moveCursorLineStart = function () {\n var row = this.lead.row;\n var column = this.lead.column;\n var screenRow = this.session.documentToScreenRow(row, column);\n var firstColumnPosition = this.session.screenToDocumentPosition(screenRow, 0);\n var beforeCursor = this.session.getDisplayLine(row, null, firstColumnPosition.row, firstColumnPosition.column);\n var leadingSpace = beforeCursor.match(/^\\s*/);\n if (leadingSpace[0].length != column && !this.session.$useEmacsStyleLineStart)\n firstColumnPosition.column += leadingSpace[0].length;\n this.moveCursorToPosition(firstColumnPosition);\n };\n Selection.prototype.moveCursorLineEnd = function () {\n var lead = this.lead;\n var lineEnd = this.session.getDocumentLastRowColumnPosition(lead.row, lead.column);\n if (this.lead.column == lineEnd.column) {\n var line = this.session.getLine(lineEnd.row);\n if (lineEnd.column == line.length) {\n var textEnd = line.search(/\\s+$/);\n if (textEnd > 0)\n lineEnd.column = textEnd;\n }\n }\n this.moveCursorTo(lineEnd.row, lineEnd.column);\n };\n Selection.prototype.moveCursorFileEnd = function () {\n var row = this.doc.getLength() - 1;\n var column = this.doc.getLine(row).length;\n this.moveCursorTo(row, column);\n };\n Selection.prototype.moveCursorFileStart = function () {\n this.moveCursorTo(0, 0);\n };\n Selection.prototype.moveCursorLongWordRight = function () {\n var row = this.lead.row;\n var column = this.lead.column;\n var line = this.doc.getLine(row);\n var rightOfCursor = line.substring(column);\n this.session.nonTokenRe.lastIndex = 0;\n this.session.tokenRe.lastIndex = 0;\n var fold = this.session.getFoldAt(row, column, 1);\n if (fold) {\n this.moveCursorTo(fold.end.row, fold.end.column);\n return;\n }\n if (this.session.nonTokenRe.exec(rightOfCursor)) {\n column += this.session.nonTokenRe.lastIndex;\n this.session.nonTokenRe.lastIndex = 0;\n rightOfCursor = line.substring(column);\n }\n if (column >= line.length) {\n this.moveCursorTo(row, line.length);\n this.moveCursorRight();\n if (row < this.doc.getLength() - 1)\n this.moveCursorWordRight();\n return;\n }\n if (this.session.tokenRe.exec(rightOfCursor)) {\n column += this.session.tokenRe.lastIndex;\n this.session.tokenRe.lastIndex = 0;\n }\n this.moveCursorTo(row, column);\n };\n Selection.prototype.moveCursorLongWordLeft = function () {\n var row = this.lead.row;\n var column = this.lead.column;\n var fold;\n if (fold = this.session.getFoldAt(row, column, -1)) {\n this.moveCursorTo(fold.start.row, fold.start.column);\n return;\n }\n var str = this.session.getFoldStringAt(row, column, -1);\n if (str == null) {\n str = this.doc.getLine(row).substring(0, column);\n }\n var leftOfCursor = lang.stringReverse(str);\n this.session.nonTokenRe.lastIndex = 0;\n this.session.tokenRe.lastIndex = 0;\n if (this.session.nonTokenRe.exec(leftOfCursor)) {\n column -= this.session.nonTokenRe.lastIndex;\n leftOfCursor = leftOfCursor.slice(this.session.nonTokenRe.lastIndex);\n this.session.nonTokenRe.lastIndex = 0;\n }\n if (column <= 0) {\n this.moveCursorTo(row, 0);\n this.moveCursorLeft();\n if (row > 0)\n this.moveCursorWordLeft();\n return;\n }\n if (this.session.tokenRe.exec(leftOfCursor)) {\n column -= this.session.tokenRe.lastIndex;\n this.session.tokenRe.lastIndex = 0;\n }\n this.moveCursorTo(row, column);\n };\n Selection.prototype.$shortWordEndIndex = function (rightOfCursor) {\n var index = 0, ch;\n var whitespaceRe = /\\s/;\n var tokenRe = this.session.tokenRe;\n tokenRe.lastIndex = 0;\n if (this.session.tokenRe.exec(rightOfCursor)) {\n index = this.session.tokenRe.lastIndex;\n }\n else {\n while ((ch = rightOfCursor[index]) && whitespaceRe.test(ch))\n index++;\n if (index < 1) {\n tokenRe.lastIndex = 0;\n while ((ch = rightOfCursor[index]) && !tokenRe.test(ch)) {\n tokenRe.lastIndex = 0;\n index++;\n if (whitespaceRe.test(ch)) {\n if (index > 2) {\n index--;\n break;\n }\n else {\n while ((ch = rightOfCursor[index]) && whitespaceRe.test(ch))\n index++;\n if (index > 2)\n break;\n }\n }\n }\n }\n }\n tokenRe.lastIndex = 0;\n return index;\n };\n Selection.prototype.moveCursorShortWordRight = function () {\n var row = this.lead.row;\n var column = this.lead.column;\n var line = this.doc.getLine(row);\n var rightOfCursor = line.substring(column);\n var fold = this.session.getFoldAt(row, column, 1);\n if (fold)\n return this.moveCursorTo(fold.end.row, fold.end.column);\n if (column == line.length) {\n var l = this.doc.getLength();\n do {\n row++;\n rightOfCursor = this.doc.getLine(row);\n } while (row < l && /^\\s*$/.test(rightOfCursor));\n if (!/^\\s+/.test(rightOfCursor))\n rightOfCursor = \"\";\n column = 0;\n }\n var index = this.$shortWordEndIndex(rightOfCursor);\n this.moveCursorTo(row, column + index);\n };\n Selection.prototype.moveCursorShortWordLeft = function () {\n var row = this.lead.row;\n var column = this.lead.column;\n var fold;\n if (fold = this.session.getFoldAt(row, column, -1))\n return this.moveCursorTo(fold.start.row, fold.start.column);\n var line = this.session.getLine(row).substring(0, column);\n if (column === 0) {\n do {\n row--;\n line = this.doc.getLine(row);\n } while (row > 0 && /^\\s*$/.test(line));\n column = line.length;\n if (!/\\s+$/.test(line))\n line = \"\";\n }\n var leftOfCursor = lang.stringReverse(line);\n var index = this.$shortWordEndIndex(leftOfCursor);\n return this.moveCursorTo(row, column - index);\n };\n Selection.prototype.moveCursorWordRight = function () {\n if (this.session.$selectLongWords)\n this.moveCursorLongWordRight();\n else\n this.moveCursorShortWordRight();\n };\n Selection.prototype.moveCursorWordLeft = function () {\n if (this.session.$selectLongWords)\n this.moveCursorLongWordLeft();\n else\n this.moveCursorShortWordLeft();\n };\n Selection.prototype.moveCursorBy = function (rows, chars) {\n var screenPos = this.session.documentToScreenPosition(this.lead.row, this.lead.column);\n var offsetX;\n if (chars === 0) {\n if (rows !== 0) {\n if (this.session.$bidiHandler.isBidiRow(screenPos.row, this.lead.row)) {\n offsetX = this.session.$bidiHandler.getPosLeft(screenPos.column);\n screenPos.column = Math.round(offsetX / this.session.$bidiHandler.charWidths[0]);\n }\n else {\n offsetX = screenPos.column * this.session.$bidiHandler.charWidths[0];\n }\n }\n if (this.$desiredColumn)\n screenPos.column = this.$desiredColumn;\n else\n this.$desiredColumn = screenPos.column;\n }\n if (rows != 0 && this.session.lineWidgets && this.session.lineWidgets[this.lead.row]) {\n var widget = this.session.lineWidgets[this.lead.row];\n if (rows < 0)\n rows -= widget.rowsAbove || 0;\n else if (rows > 0)\n rows += widget.rowCount - (widget.rowsAbove || 0);\n }\n var docPos = this.session.screenToDocumentPosition(screenPos.row + rows, screenPos.column, offsetX);\n if (rows !== 0 && chars === 0 && docPos.row === this.lead.row && docPos.column === this.lead.column) {\n }\n this.moveCursorTo(docPos.row, docPos.column + chars, chars === 0);\n };\n Selection.prototype.moveCursorToPosition = function (position) {\n this.moveCursorTo(position.row, position.column);\n };\n Selection.prototype.moveCursorTo = function (row, column, keepDesiredColumn) {\n var fold = this.session.getFoldAt(row, column, 1);\n if (fold) {\n row = fold.start.row;\n column = fold.start.column;\n }\n this.$keepDesiredColumnOnChange = true;\n var line = this.session.getLine(row);\n if (/[\\uDC00-\\uDFFF]/.test(line.charAt(column)) && line.charAt(column - 1)) {\n if (this.lead.row == row && this.lead.column == column + 1)\n column = column - 1;\n else\n column = column + 1;\n }\n this.lead.setPosition(row, column);\n this.$keepDesiredColumnOnChange = false;\n if (!keepDesiredColumn)\n this.$desiredColumn = null;\n };\n Selection.prototype.moveCursorToScreen = function (row, column, keepDesiredColumn) {\n var pos = this.session.screenToDocumentPosition(row, column);\n this.moveCursorTo(pos.row, pos.column, keepDesiredColumn);\n };\n Selection.prototype.detach = function () {\n this.lead.detach();\n this.anchor.detach();\n };\n Selection.prototype.fromOrientedRange = function (range) {\n this.setSelectionRange(range, range.cursor == range.start);\n this.$desiredColumn = range.desiredColumn || this.$desiredColumn;\n };\n Selection.prototype.toOrientedRange = function (range) {\n var r = this.getRange();\n if (range) {\n range.start.column = r.start.column;\n range.start.row = r.start.row;\n range.end.column = r.end.column;\n range.end.row = r.end.row;\n }\n else {\n range = r;\n }\n range.cursor = this.isBackwards() ? range.start : range.end;\n range.desiredColumn = this.$desiredColumn;\n return range;\n };\n Selection.prototype.getRangeOfMovements = function (func) {\n var start = this.getCursor();\n try {\n func(this);\n var end = this.getCursor();\n return Range.fromPoints(start, end);\n }\n catch (e) {\n return Range.fromPoints(start, start);\n }\n finally {\n this.moveCursorToPosition(start);\n }\n };\n Selection.prototype.toJSON = function () {\n if (this.rangeCount) {\n var data = this.ranges.map(function (r) {\n var r1 = r.clone();\n r1.isBackwards = r.cursor == r.start;\n return r1;\n });\n }\n else {\n var data = this.getRange();\n data.isBackwards = this.isBackwards();\n }\n return data;\n };\n Selection.prototype.fromJSON = function (data) {\n if (data.start == undefined) {\n if (this.rangeList && data.length > 1) {\n this.toSingleRange(data[0]);\n for (var i = data.length; i--;) {\n var r = Range.fromPoints(data[i].start, data[i].end);\n if (data[i].isBackwards)\n r.cursor = r.start;\n this.addRange(r, true);\n }\n return;\n }\n else {\n data = data[0];\n }\n }\n if (this.rangeList)\n this.toSingleRange(data);\n this.setSelectionRange(data, data.isBackwards);\n };\n Selection.prototype.isEqual = function (data) {\n if ((data.length || this.rangeCount) && data.length != this.rangeCount)\n return false;\n if (!data.length || !this.ranges)\n return this.getRange().isEqual(data);\n for (var i = this.ranges.length; i--;) {\n if (!this.ranges[i].isEqual(data[i]))\n return false;\n }\n return true;\n };\n return Selection;\n}());\nSelection.prototype.setSelectionAnchor = Selection.prototype.setAnchor;\nSelection.prototype.getSelectionAnchor = Selection.prototype.getAnchor;\nSelection.prototype.setSelectionRange = Selection.prototype.setRange;\noop.implement(Selection.prototype, EventEmitter);\nexports.Selection = Selection;\n\n});\n\nace.define(\"ace/tokenizer\",[\"require\",\"exports\",\"module\",\"ace/lib/report_error\"], function(require, exports, module){\"use strict\";\nvar reportError = require(\"./lib/report_error\").reportError;\nvar MAX_TOKEN_COUNT = 2000;\nvar Tokenizer = /** @class */ (function () {\n function Tokenizer(rules) {\n this.states = rules;\n this.regExps = {};\n this.matchMappings = {};\n for (var key in this.states) {\n var state = this.states[key];\n var ruleRegExps = [];\n var matchTotal = 0;\n var mapping = this.matchMappings[key] = { defaultToken: \"text\" };\n var flag = \"g\";\n var splitterRurles = [];\n for (var i = 0; i < state.length; i++) {\n var rule = state[i];\n if (rule.defaultToken)\n mapping.defaultToken = rule.defaultToken;\n if (rule.caseInsensitive && flag.indexOf(\"i\") === -1)\n flag += \"i\";\n if (rule.unicode && flag.indexOf(\"u\") === -1)\n flag += \"u\";\n if (rule.regex == null)\n continue;\n if (rule.regex instanceof RegExp)\n rule.regex = rule.regex.toString().slice(1, -1);\n var adjustedregex = rule.regex;\n var matchcount = new RegExp(\"(?:(\" + adjustedregex + \")|(.))\").exec(\"a\").length - 2;\n if (Array.isArray(rule.token)) {\n if (rule.token.length == 1 || matchcount == 1) {\n rule.token = rule.token[0];\n }\n else if (matchcount - 1 != rule.token.length) {\n this.reportError(\"number of classes and regexp groups doesn't match\", {\n rule: rule,\n groupCount: matchcount - 1\n });\n rule.token = rule.token[0];\n }\n else {\n rule.tokenArray = rule.token;\n rule.token = null;\n rule.onMatch = this.$arrayTokens;\n }\n }\n else if (typeof rule.token == \"function\" && !rule.onMatch) {\n if (matchcount > 1)\n rule.onMatch = this.$applyToken;\n else\n rule.onMatch = rule.token;\n }\n if (matchcount > 1) {\n if (/\\\\\\d/.test(rule.regex)) {\n adjustedregex = rule.regex.replace(/\\\\([0-9]+)/g, function (match, digit) {\n return \"\\\\\" + (parseInt(digit, 10) + matchTotal + 1);\n });\n }\n else {\n matchcount = 1;\n adjustedregex = this.removeCapturingGroups(rule.regex);\n }\n if (!rule.splitRegex && typeof rule.token != \"string\")\n splitterRurles.push(rule); // flag will be known only at the very end\n }\n mapping[matchTotal] = i;\n matchTotal += matchcount;\n ruleRegExps.push(adjustedregex);\n if (!rule.onMatch)\n rule.onMatch = null;\n }\n if (!ruleRegExps.length) {\n mapping[0] = 0;\n ruleRegExps.push(\"$\");\n }\n splitterRurles.forEach(function (rule) {\n rule.splitRegex = this.createSplitterRegexp(rule.regex, flag);\n }, this);\n this.regExps[key] = new RegExp(\"(\" + ruleRegExps.join(\")|(\") + \")|($)\", flag);\n }\n }\n Tokenizer.prototype.$setMaxTokenCount = function (m) {\n MAX_TOKEN_COUNT = m | 0;\n };\n Tokenizer.prototype.$applyToken = function (str) {\n var values = this.splitRegex.exec(str).slice(1);\n var types = this.token.apply(this, values);\n if (typeof types === \"string\")\n return [{ type: types, value: str }];\n var tokens = [];\n for (var i = 0, l = types.length; i < l; i++) {\n if (values[i])\n tokens[tokens.length] = {\n type: types[i],\n value: values[i]\n };\n }\n return tokens;\n };\n Tokenizer.prototype.$arrayTokens = function (str) {\n if (!str)\n return [];\n var values = this.splitRegex.exec(str);\n if (!values)\n return \"text\";\n var tokens = [];\n var types = this.tokenArray;\n for (var i = 0, l = types.length; i < l; i++) {\n if (values[i + 1])\n tokens[tokens.length] = {\n type: types[i],\n value: values[i + 1]\n };\n }\n return tokens;\n };\n Tokenizer.prototype.removeCapturingGroups = function (src) {\n var r = src.replace(/\\\\.|\\[(?:\\\\.|[^\\\\\\]])*|\\(\\?[:=!<]|(\\()/g, function (x, y) { return y ? \"(?:\" : x; });\n return r;\n };\n Tokenizer.prototype.createSplitterRegexp = function (src, flag) {\n if (src.indexOf(\"(?=\") != -1) {\n var stack = 0;\n var inChClass = false;\n var lastCapture = {};\n src.replace(/(\\\\.)|(\\((?:\\?[=!])?)|(\\))|([\\[\\]])/g, function (m, esc, parenOpen, parenClose, square, index) {\n if (inChClass) {\n inChClass = square != \"]\";\n }\n else if (square) {\n inChClass = true;\n }\n else if (parenClose) {\n if (stack == lastCapture.stack) {\n lastCapture.end = index + 1;\n lastCapture.stack = -1;\n }\n stack--;\n }\n else if (parenOpen) {\n stack++;\n if (parenOpen.length != 1) {\n lastCapture.stack = stack;\n lastCapture.start = index;\n }\n }\n return m;\n });\n if (lastCapture.end != null && /^\\)*$/.test(src.substr(lastCapture.end)))\n src = src.substring(0, lastCapture.start) + src.substr(lastCapture.end);\n }\n if (src.charAt(0) != \"^\")\n src = \"^\" + src;\n if (src.charAt(src.length - 1) != \"$\")\n src += \"$\";\n return new RegExp(src, (flag || \"\").replace(\"g\", \"\"));\n };\n Tokenizer.prototype.getLineTokens = function (line, startState) {\n if (startState && typeof startState != \"string\") {\n var stack = startState.slice(0);\n startState = stack[0];\n if (startState === \"#tmp\") {\n stack.shift();\n startState = stack.shift();\n }\n }\n else\n var stack = [];\n var currentState = startState || \"start\";\n var state = this.states[currentState];\n if (!state) {\n currentState = \"start\";\n state = this.states[currentState];\n }\n var mapping = this.matchMappings[currentState];\n var re = this.regExps[currentState];\n re.lastIndex = 0;\n var match, tokens = [];\n var lastIndex = 0;\n var matchAttempts = 0;\n var token = { type: null, value: \"\" };\n while (match = re.exec(line)) {\n var type = mapping.defaultToken;\n var rule = null;\n var value = match[0];\n var index = re.lastIndex;\n if (index - value.length > lastIndex) {\n var skipped = line.substring(lastIndex, index - value.length);\n if (token.type == type) {\n token.value += skipped;\n }\n else {\n if (token.type)\n tokens.push(token);\n token = { type: type, value: skipped };\n }\n }\n for (var i = 0; i < match.length - 2; i++) {\n if (match[i + 1] === undefined)\n continue;\n rule = state[mapping[i]];\n if (rule.onMatch)\n type = rule.onMatch(value, currentState, stack, line);\n else\n type = rule.token;\n if (rule.next) {\n if (typeof rule.next == \"string\") {\n currentState = rule.next;\n }\n else {\n currentState = rule.next(currentState, stack);\n }\n state = this.states[currentState];\n if (!state) {\n this.reportError(\"state doesn't exist\", currentState);\n currentState = \"start\";\n state = this.states[currentState];\n }\n mapping = this.matchMappings[currentState];\n lastIndex = index;\n re = this.regExps[currentState];\n re.lastIndex = index;\n }\n if (rule.consumeLineEnd)\n lastIndex = index;\n break;\n }\n if (value) {\n if (typeof type === \"string\") {\n if ((!rule || rule.merge !== false) && token.type === type) {\n token.value += value;\n }\n else {\n if (token.type)\n tokens.push(token);\n token = { type: type, value: value };\n }\n }\n else if (type) {\n if (token.type)\n tokens.push(token);\n token = { type: null, value: \"\" };\n for (var i = 0; i < type.length; i++)\n tokens.push(type[i]);\n }\n }\n if (lastIndex == line.length)\n break;\n lastIndex = index;\n if (matchAttempts++ > MAX_TOKEN_COUNT) {\n if (matchAttempts > 2 * line.length) {\n this.reportError(\"infinite loop with in ace tokenizer\", {\n startState: startState,\n line: line\n });\n }\n while (lastIndex < line.length) {\n if (token.type)\n tokens.push(token);\n token = {\n value: line.substring(lastIndex, lastIndex += 500),\n type: \"overflow\"\n };\n }\n currentState = \"start\";\n stack = [];\n break;\n }\n }\n if (token.type)\n tokens.push(token);\n if (stack.length > 1) {\n if (stack[0] !== currentState)\n stack.unshift(\"#tmp\", currentState);\n }\n return {\n tokens: tokens,\n state: stack.length ? stack : currentState\n };\n };\n return Tokenizer;\n}());\nTokenizer.prototype.reportError = reportError;\nexports.Tokenizer = Tokenizer;\n\n});\n\nace.define(\"ace/mode/text_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/deep_copy\"], function(require, exports, module){\"use strict\";\nvar deepCopy = require(\"../lib/deep_copy\").deepCopy;\nvar TextHighlightRules = function () {\n this.$rules = {\n \"start\": [{\n token: \"empty_line\",\n regex: '^$'\n }, {\n defaultToken: \"text\"\n }]\n };\n};\n(function () {\n this.addRules = function (rules, prefix) {\n if (!prefix) {\n for (var key in rules)\n this.$rules[key] = rules[key];\n return;\n }\n for (var key in rules) {\n var state = rules[key];\n for (var i = 0; i < state.length; i++) {\n var rule = state[i];\n if (rule.next || rule.onMatch) {\n if (typeof rule.next == \"string\") {\n if (rule.next.indexOf(prefix) !== 0)\n rule.next = prefix + rule.next;\n }\n if (rule.nextState && rule.nextState.indexOf(prefix) !== 0)\n rule.nextState = prefix + rule.nextState;\n }\n }\n this.$rules[prefix + key] = state;\n }\n };\n this.getRules = function () {\n return this.$rules;\n };\n this.embedRules = function (HighlightRules, prefix, escapeRules, states, append) {\n var embedRules = typeof HighlightRules == \"function\"\n ? new HighlightRules().getRules()\n : HighlightRules;\n if (states) {\n for (var i = 0; i < states.length; i++)\n states[i] = prefix + states[i];\n }\n else {\n states = [];\n for (var key in embedRules)\n states.push(prefix + key);\n }\n this.addRules(embedRules, prefix);\n if (escapeRules) {\n var addRules = Array.prototype[append ? \"push\" : \"unshift\"];\n for (var i = 0; i < states.length; i++)\n addRules.apply(this.$rules[states[i]], deepCopy(escapeRules));\n }\n if (!this.$embeds)\n this.$embeds = [];\n this.$embeds.push(prefix);\n };\n this.getEmbeds = function () {\n return this.$embeds;\n };\n var pushState = function (currentState, stack) {\n if (currentState != \"start\" || stack.length)\n stack.unshift(this.nextState, currentState);\n return this.nextState;\n };\n var popState = function (currentState, stack) {\n stack.shift();\n return stack.shift() || \"start\";\n };\n this.normalizeRules = function () {\n var id = 0;\n var rules = this.$rules;\n function processState(key) {\n var state = rules[key];\n state.processed = true;\n for (var i = 0; i < state.length; i++) {\n var rule = state[i];\n var toInsert = null;\n if (Array.isArray(rule)) {\n toInsert = rule;\n rule = {};\n }\n if (!rule.regex && rule.start) {\n rule.regex = rule.start;\n if (!rule.next)\n rule.next = [];\n rule.next.push({\n defaultToken: rule.token\n }, {\n token: rule.token + \".end\",\n regex: rule.end || rule.start,\n next: \"pop\"\n });\n rule.token = rule.token + \".start\";\n rule.push = true;\n }\n var next = rule.next || rule.push;\n if (next && Array.isArray(next)) {\n var stateName = rule.stateName;\n if (!stateName) {\n stateName = rule.token;\n if (typeof stateName != \"string\")\n stateName = stateName[0] || \"\";\n if (rules[stateName])\n stateName += id++;\n }\n rules[stateName] = next;\n rule.next = stateName;\n processState(stateName);\n }\n else if (next == \"pop\") {\n rule.next = popState;\n }\n if (rule.push) {\n rule.nextState = rule.next || rule.push;\n rule.next = pushState;\n delete rule.push;\n }\n if (rule.rules) {\n for (var r in rule.rules) {\n if (rules[r]) {\n if (rules[r].push)\n rules[r].push.apply(rules[r], rule.rules[r]);\n }\n else {\n rules[r] = rule.rules[r];\n }\n }\n }\n var includeName = typeof rule == \"string\" ? rule : rule.include;\n if (includeName) {\n if (includeName === \"$self\")\n includeName = \"start\";\n if (Array.isArray(includeName))\n toInsert = includeName.map(function (x) { return rules[x]; });\n else\n toInsert = rules[includeName];\n }\n if (toInsert) {\n var args = [i, 1].concat(toInsert);\n if (rule.noEscape)\n args = args.filter(function (x) { return !x.next; });\n state.splice.apply(state, args);\n i--;\n }\n if (rule.keywordMap) {\n rule.token = this.createKeywordMapper(rule.keywordMap, rule.defaultToken || \"text\", rule.caseInsensitive);\n delete rule.defaultToken;\n }\n }\n }\n Object.keys(rules).forEach(processState, this);\n };\n this.createKeywordMapper = function (map, defaultToken, ignoreCase, splitChar) {\n var keywords = Object.create(null);\n this.$keywordList = [];\n Object.keys(map).forEach(function (className) {\n var a = map[className];\n var list = a.split(splitChar || \"|\");\n for (var i = list.length; i--;) {\n var word = list[i];\n this.$keywordList.push(word);\n if (ignoreCase)\n word = word.toLowerCase();\n keywords[word] = className;\n }\n }, this);\n map = null;\n return ignoreCase\n ? function (value) { return keywords[value.toLowerCase()] || defaultToken; }\n : function (value) { return keywords[value] || defaultToken; };\n };\n this.getKeywords = function () {\n return this.$keywords;\n };\n}).call(TextHighlightRules.prototype);\nexports.TextHighlightRules = TextHighlightRules;\n\n});\n\nace.define(\"ace/mode/behaviour\",[\"require\",\"exports\",\"module\"], function(require, exports, module){\"use strict\";\nvar Behaviour = function () {\n this.$behaviours = {};\n};\n(function () {\n this.add = function (name, action, callback) {\n switch (undefined) {\n case this.$behaviours:\n this.$behaviours = {};\n case this.$behaviours[name]:\n this.$behaviours[name] = {};\n }\n this.$behaviours[name][action] = callback;\n };\n this.addBehaviours = function (behaviours) {\n for (var key in behaviours) {\n for (var action in behaviours[key]) {\n this.add(key, action, behaviours[key][action]);\n }\n }\n };\n this.remove = function (name) {\n if (this.$behaviours && this.$behaviours[name]) {\n delete this.$behaviours[name];\n }\n };\n this.inherit = function (mode, filter) {\n if (typeof mode === \"function\") {\n var behaviours = new mode().getBehaviours(filter);\n }\n else {\n var behaviours = mode.getBehaviours(filter);\n }\n this.addBehaviours(behaviours);\n };\n this.getBehaviours = function (filter) {\n if (!filter) {\n return this.$behaviours;\n }\n else {\n var ret = {};\n for (var i = 0; i < filter.length; i++) {\n if (this.$behaviours[filter[i]]) {\n ret[filter[i]] = this.$behaviours[filter[i]];\n }\n }\n return ret;\n }\n };\n}).call(Behaviour.prototype);\nexports.Behaviour = Behaviour;\n\n});\n\nace.define(\"ace/token_iterator\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar Range = require(\"./range\").Range;\nvar TokenIterator = /** @class */ (function () {\n function TokenIterator(session, initialRow, initialColumn) {\n this.$session = session;\n this.$row = initialRow;\n this.$rowTokens = session.getTokens(initialRow);\n var token = session.getTokenAt(initialRow, initialColumn);\n this.$tokenIndex = token ? token.index : -1;\n }\n TokenIterator.prototype.stepBackward = function () {\n this.$tokenIndex -= 1;\n while (this.$tokenIndex < 0) {\n this.$row -= 1;\n if (this.$row < 0) {\n this.$row = 0;\n return null;\n }\n this.$rowTokens = this.$session.getTokens(this.$row);\n this.$tokenIndex = this.$rowTokens.length - 1;\n }\n return this.$rowTokens[this.$tokenIndex];\n };\n TokenIterator.prototype.stepForward = function () {\n this.$tokenIndex += 1;\n var rowCount;\n while (this.$tokenIndex >= this.$rowTokens.length) {\n this.$row += 1;\n if (!rowCount)\n rowCount = this.$session.getLength();\n if (this.$row >= rowCount) {\n this.$row = rowCount - 1;\n return null;\n }\n this.$rowTokens = this.$session.getTokens(this.$row);\n this.$tokenIndex = 0;\n }\n return this.$rowTokens[this.$tokenIndex];\n };\n TokenIterator.prototype.getCurrentToken = function () {\n return this.$rowTokens[this.$tokenIndex];\n };\n TokenIterator.prototype.getCurrentTokenRow = function () {\n return this.$row;\n };\n TokenIterator.prototype.getCurrentTokenColumn = function () {\n var rowTokens = this.$rowTokens;\n var tokenIndex = this.$tokenIndex;\n var column = rowTokens[tokenIndex].start;\n if (column !== undefined)\n return column;\n column = 0;\n while (tokenIndex > 0) {\n tokenIndex -= 1;\n column += rowTokens[tokenIndex].value.length;\n }\n return column;\n };\n TokenIterator.prototype.getCurrentTokenPosition = function () {\n return { row: this.$row, column: this.getCurrentTokenColumn() };\n };\n TokenIterator.prototype.getCurrentTokenRange = function () {\n var token = this.$rowTokens[this.$tokenIndex];\n var column = this.getCurrentTokenColumn();\n return new Range(this.$row, column, this.$row, column + token.value.length);\n };\n return TokenIterator;\n}());\nexports.TokenIterator = TokenIterator;\n\n});\n\nace.define(\"ace/mode/behaviour/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/behaviour\",\"ace/token_iterator\",\"ace/lib/lang\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../../lib/oop\");\nvar Behaviour = require(\"../behaviour\").Behaviour;\nvar TokenIterator = require(\"../../token_iterator\").TokenIterator;\nvar lang = require(\"../../lib/lang\");\nvar SAFE_INSERT_IN_TOKENS = [\"text\", \"paren.rparen\", \"rparen\", \"paren\", \"punctuation.operator\"];\nvar SAFE_INSERT_BEFORE_TOKENS = [\"text\", \"paren.rparen\", \"rparen\", \"paren\", \"punctuation.operator\", \"comment\"];\nvar context;\nvar contextCache = {};\nvar defaultQuotes = { '\"': '\"', \"'\": \"'\" };\nvar initContext = function (editor) {\n var id = -1;\n if (editor.multiSelect) {\n id = editor.selection.index;\n if (contextCache.rangeCount != editor.multiSelect.rangeCount)\n contextCache = { rangeCount: editor.multiSelect.rangeCount };\n }\n if (contextCache[id])\n return context = contextCache[id];\n context = contextCache[id] = {\n autoInsertedBrackets: 0,\n autoInsertedRow: -1,\n autoInsertedLineEnd: \"\",\n maybeInsertedBrackets: 0,\n maybeInsertedRow: -1,\n maybeInsertedLineStart: \"\",\n maybeInsertedLineEnd: \"\"\n };\n};\nvar getWrapped = function (selection, selected, opening, closing) {\n var rowDiff = selection.end.row - selection.start.row;\n return {\n text: opening + selected + closing,\n selection: [\n 0,\n selection.start.column + 1,\n rowDiff,\n selection.end.column + (rowDiff ? 0 : 1)\n ]\n };\n};\nvar CstyleBehaviour = function (options) {\n options = options || {};\n this.add(\"braces\", \"insertion\", function (state, action, editor, session, text) {\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n if (text == '{') {\n initContext(editor);\n var selection = editor.getSelectionRange();\n var selected = session.doc.getTextRange(selection);\n if (selected !== \"\" && selected !== \"{\" && editor.getWrapBehavioursEnabled()) {\n return getWrapped(selection, selected, '{', '}');\n }\n else if (CstyleBehaviour.isSaneInsertion(editor, session)) {\n if (/[\\]\\}\\)]/.test(line[cursor.column]) || editor.inMultiSelectMode || options.braces) {\n CstyleBehaviour.recordAutoInsert(editor, session, \"}\");\n return {\n text: '{}',\n selection: [1, 1]\n };\n }\n else {\n CstyleBehaviour.recordMaybeInsert(editor, session, \"{\");\n return {\n text: '{',\n selection: [1, 1]\n };\n }\n }\n }\n else if (text == '}') {\n initContext(editor);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n if (rightChar == '}') {\n var matching = session.$findOpeningBracket('}', { column: cursor.column + 1, row: cursor.row });\n if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) {\n CstyleBehaviour.popAutoInsertedClosing();\n return {\n text: '',\n selection: [1, 1]\n };\n }\n }\n }\n else if (text == \"\\n\" || text == \"\\r\\n\") {\n initContext(editor);\n var closing = \"\";\n if (CstyleBehaviour.isMaybeInsertedClosing(cursor, line)) {\n closing = lang.stringRepeat(\"}\", context.maybeInsertedBrackets);\n CstyleBehaviour.clearMaybeInsertedClosing();\n }\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n if (rightChar === '}') {\n var openBracePos = session.findMatchingBracket({ row: cursor.row, column: cursor.column + 1 }, '}');\n if (!openBracePos)\n return null;\n var next_indent = this.$getIndent(session.getLine(openBracePos.row));\n }\n else if (closing) {\n var next_indent = this.$getIndent(line);\n }\n else {\n CstyleBehaviour.clearMaybeInsertedClosing();\n return;\n }\n var indent = next_indent + session.getTabString();\n return {\n text: '\\n' + indent + '\\n' + next_indent + closing,\n selection: [1, indent.length, 1, indent.length]\n };\n }\n else {\n CstyleBehaviour.clearMaybeInsertedClosing();\n }\n });\n this.add(\"braces\", \"deletion\", function (state, action, editor, session, range) {\n var selected = session.doc.getTextRange(range);\n if (!range.isMultiLine() && selected == '{') {\n initContext(editor);\n var line = session.doc.getLine(range.start.row);\n var rightChar = line.substring(range.end.column, range.end.column + 1);\n if (rightChar == '}') {\n range.end.column++;\n return range;\n }\n else {\n context.maybeInsertedBrackets--;\n }\n }\n });\n this.add(\"parens\", \"insertion\", function (state, action, editor, session, text) {\n if (text == '(') {\n initContext(editor);\n var selection = editor.getSelectionRange();\n var selected = session.doc.getTextRange(selection);\n if (selected !== \"\" && editor.getWrapBehavioursEnabled()) {\n return getWrapped(selection, selected, '(', ')');\n }\n else if (CstyleBehaviour.isSaneInsertion(editor, session)) {\n CstyleBehaviour.recordAutoInsert(editor, session, \")\");\n return {\n text: '()',\n selection: [1, 1]\n };\n }\n }\n else if (text == ')') {\n initContext(editor);\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n if (rightChar == ')') {\n var matching = session.$findOpeningBracket(')', { column: cursor.column + 1, row: cursor.row });\n if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) {\n CstyleBehaviour.popAutoInsertedClosing();\n return {\n text: '',\n selection: [1, 1]\n };\n }\n }\n }\n });\n this.add(\"parens\", \"deletion\", function (state, action, editor, session, range) {\n var selected = session.doc.getTextRange(range);\n if (!range.isMultiLine() && selected == '(') {\n initContext(editor);\n var line = session.doc.getLine(range.start.row);\n var rightChar = line.substring(range.start.column + 1, range.start.column + 2);\n if (rightChar == ')') {\n range.end.column++;\n return range;\n }\n }\n });\n this.add(\"brackets\", \"insertion\", function (state, action, editor, session, text) {\n if (text == '[') {\n initContext(editor);\n var selection = editor.getSelectionRange();\n var selected = session.doc.getTextRange(selection);\n if (selected !== \"\" && editor.getWrapBehavioursEnabled()) {\n return getWrapped(selection, selected, '[', ']');\n }\n else if (CstyleBehaviour.isSaneInsertion(editor, session)) {\n CstyleBehaviour.recordAutoInsert(editor, session, \"]\");\n return {\n text: '[]',\n selection: [1, 1]\n };\n }\n }\n else if (text == ']') {\n initContext(editor);\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n if (rightChar == ']') {\n var matching = session.$findOpeningBracket(']', { column: cursor.column + 1, row: cursor.row });\n if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) {\n CstyleBehaviour.popAutoInsertedClosing();\n return {\n text: '',\n selection: [1, 1]\n };\n }\n }\n }\n });\n this.add(\"brackets\", \"deletion\", function (state, action, editor, session, range) {\n var selected = session.doc.getTextRange(range);\n if (!range.isMultiLine() && selected == '[') {\n initContext(editor);\n var line = session.doc.getLine(range.start.row);\n var rightChar = line.substring(range.start.column + 1, range.start.column + 2);\n if (rightChar == ']') {\n range.end.column++;\n return range;\n }\n }\n });\n this.add(\"string_dquotes\", \"insertion\", function (state, action, editor, session, text) {\n var quotes = session.$mode.$quotes || defaultQuotes;\n if (text.length == 1 && quotes[text]) {\n if (this.lineCommentStart && this.lineCommentStart.indexOf(text) != -1)\n return;\n initContext(editor);\n var quote = text;\n var selection = editor.getSelectionRange();\n var selected = session.doc.getTextRange(selection);\n if (selected !== \"\" && (selected.length != 1 || !quotes[selected]) && editor.getWrapBehavioursEnabled()) {\n return getWrapped(selection, selected, quote, quote);\n }\n else if (!selected) {\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n var leftChar = line.substring(cursor.column - 1, cursor.column);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n var token = session.getTokenAt(cursor.row, cursor.column);\n var rightToken = session.getTokenAt(cursor.row, cursor.column + 1);\n if (leftChar == \"\\\\\" && token && /escape/.test(token.type))\n return null;\n var stringBefore = token && /string|escape/.test(token.type);\n var stringAfter = !rightToken || /string|escape/.test(rightToken.type);\n var pair;\n if (rightChar == quote) {\n pair = stringBefore !== stringAfter;\n if (pair && /string\\.end/.test(rightToken.type))\n pair = false;\n }\n else {\n if (stringBefore && !stringAfter)\n return null; // wrap string with different quote\n if (stringBefore && stringAfter)\n return null; // do not pair quotes inside strings\n var wordRe = session.$mode.tokenRe;\n wordRe.lastIndex = 0;\n var isWordBefore = wordRe.test(leftChar);\n wordRe.lastIndex = 0;\n var isWordAfter = wordRe.test(rightChar);\n var pairQuotesAfter = session.$mode.$pairQuotesAfter;\n var shouldPairQuotes = pairQuotesAfter && pairQuotesAfter[quote] && pairQuotesAfter[quote].test(leftChar);\n if ((!shouldPairQuotes && isWordBefore) || isWordAfter)\n return null; // before or after alphanumeric\n if (rightChar && !/[\\s;,.})\\]\\\\]/.test(rightChar))\n return null; // there is rightChar and it isn't closing\n var charBefore = line[cursor.column - 2];\n if (leftChar == quote && (charBefore == quote || wordRe.test(charBefore)))\n return null;\n pair = true;\n }\n return {\n text: pair ? quote + quote : \"\",\n selection: [1, 1]\n };\n }\n }\n });\n this.add(\"string_dquotes\", \"deletion\", function (state, action, editor, session, range) {\n var quotes = session.$mode.$quotes || defaultQuotes;\n var selected = session.doc.getTextRange(range);\n if (!range.isMultiLine() && quotes.hasOwnProperty(selected)) {\n initContext(editor);\n var line = session.doc.getLine(range.start.row);\n var rightChar = line.substring(range.start.column + 1, range.start.column + 2);\n if (rightChar == selected) {\n range.end.column++;\n return range;\n }\n }\n });\n if (options.closeDocComment !== false) {\n this.add(\"doc comment end\", \"insertion\", function (state, action, editor, session, text) {\n if (state === \"doc-start\" && (text === \"\\n\" || text === \"\\r\\n\") && editor.selection.isEmpty()) {\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n var nextLine = session.doc.getLine(cursor.row + 1);\n var indent = this.$getIndent(line);\n if (/\\s*\\*/.test(nextLine)) {\n if (/^\\s*\\*/.test(line)) {\n return {\n text: text + indent + \"* \",\n selection: [1, 3 + indent.length, 1, 3 + indent.length]\n };\n }\n else {\n return {\n text: text + indent + \" * \",\n selection: [1, 3 + indent.length, 1, 3 + indent.length]\n };\n }\n }\n if (/\\/\\*\\*/.test(line.substring(0, cursor.column))) {\n return {\n text: text + indent + \" * \" + text + \" \" + indent + \"*/\",\n selection: [1, 4 + indent.length, 1, 4 + indent.length]\n };\n }\n }\n });\n }\n};\nCstyleBehaviour.isSaneInsertion = function (editor, session) {\n var cursor = editor.getCursorPosition();\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n if (!this.$matchTokenType(iterator.getCurrentToken() || \"text\", SAFE_INSERT_IN_TOKENS)) {\n if (/[)}\\]]/.test(editor.session.getLine(cursor.row)[cursor.column]))\n return true;\n var iterator2 = new TokenIterator(session, cursor.row, cursor.column + 1);\n if (!this.$matchTokenType(iterator2.getCurrentToken() || \"text\", SAFE_INSERT_IN_TOKENS))\n return false;\n }\n iterator.stepForward();\n return iterator.getCurrentTokenRow() !== cursor.row ||\n this.$matchTokenType(iterator.getCurrentToken() || \"text\", SAFE_INSERT_BEFORE_TOKENS);\n};\nCstyleBehaviour.$matchTokenType = function (token, types) {\n return types.indexOf(token.type || token) > -1;\n};\nCstyleBehaviour.recordAutoInsert = function (editor, session, bracket) {\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n if (!this.isAutoInsertedClosing(cursor, line, context.autoInsertedLineEnd[0]))\n context.autoInsertedBrackets = 0;\n context.autoInsertedRow = cursor.row;\n context.autoInsertedLineEnd = bracket + line.substr(cursor.column);\n context.autoInsertedBrackets++;\n};\nCstyleBehaviour.recordMaybeInsert = function (editor, session, bracket) {\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n if (!this.isMaybeInsertedClosing(cursor, line))\n context.maybeInsertedBrackets = 0;\n context.maybeInsertedRow = cursor.row;\n context.maybeInsertedLineStart = line.substr(0, cursor.column) + bracket;\n context.maybeInsertedLineEnd = line.substr(cursor.column);\n context.maybeInsertedBrackets++;\n};\nCstyleBehaviour.isAutoInsertedClosing = function (cursor, line, bracket) {\n return context.autoInsertedBrackets > 0 &&\n cursor.row === context.autoInsertedRow &&\n bracket === context.autoInsertedLineEnd[0] &&\n line.substr(cursor.column) === context.autoInsertedLineEnd;\n};\nCstyleBehaviour.isMaybeInsertedClosing = function (cursor, line) {\n return context.maybeInsertedBrackets > 0 &&\n cursor.row === context.maybeInsertedRow &&\n line.substr(cursor.column) === context.maybeInsertedLineEnd &&\n line.substr(0, cursor.column) == context.maybeInsertedLineStart;\n};\nCstyleBehaviour.popAutoInsertedClosing = function () {\n context.autoInsertedLineEnd = context.autoInsertedLineEnd.substr(1);\n context.autoInsertedBrackets--;\n};\nCstyleBehaviour.clearMaybeInsertedClosing = function () {\n if (context) {\n context.maybeInsertedBrackets = 0;\n context.maybeInsertedRow = -1;\n }\n};\noop.inherits(CstyleBehaviour, Behaviour);\nexports.CstyleBehaviour = CstyleBehaviour;\n\n});\n\nace.define(\"ace/unicode\",[\"require\",\"exports\",\"module\"], function(require, exports, module){\"use strict\";\nvar wordChars = [48, 9, 8, 25, 5, 0, 2, 25, 48, 0, 11, 0, 5, 0, 6, 22, 2, 30, 2, 457, 5, 11, 15, 4, 8, 0, 2, 0, 18, 116, 2, 1, 3, 3, 9, 0, 2, 2, 2, 0, 2, 19, 2, 82, 2, 138, 2, 4, 3, 155, 12, 37, 3, 0, 8, 38, 10, 44, 2, 0, 2, 1, 2, 1, 2, 0, 9, 26, 6, 2, 30, 10, 7, 61, 2, 9, 5, 101, 2, 7, 3, 9, 2, 18, 3, 0, 17, 58, 3, 100, 15, 53, 5, 0, 6, 45, 211, 57, 3, 18, 2, 5, 3, 11, 3, 9, 2, 1, 7, 6, 2, 2, 2, 7, 3, 1, 3, 21, 2, 6, 2, 0, 4, 3, 3, 8, 3, 1, 3, 3, 9, 0, 5, 1, 2, 4, 3, 11, 16, 2, 2, 5, 5, 1, 3, 21, 2, 6, 2, 1, 2, 1, 2, 1, 3, 0, 2, 4, 5, 1, 3, 2, 4, 0, 8, 3, 2, 0, 8, 15, 12, 2, 2, 8, 2, 2, 2, 21, 2, 6, 2, 1, 2, 4, 3, 9, 2, 2, 2, 2, 3, 0, 16, 3, 3, 9, 18, 2, 2, 7, 3, 1, 3, 21, 2, 6, 2, 1, 2, 4, 3, 8, 3, 1, 3, 2, 9, 1, 5, 1, 2, 4, 3, 9, 2, 0, 17, 1, 2, 5, 4, 2, 2, 3, 4, 1, 2, 0, 2, 1, 4, 1, 4, 2, 4, 11, 5, 4, 4, 2, 2, 3, 3, 0, 7, 0, 15, 9, 18, 2, 2, 7, 2, 2, 2, 22, 2, 9, 2, 4, 4, 7, 2, 2, 2, 3, 8, 1, 2, 1, 7, 3, 3, 9, 19, 1, 2, 7, 2, 2, 2, 22, 2, 9, 2, 4, 3, 8, 2, 2, 2, 3, 8, 1, 8, 0, 2, 3, 3, 9, 19, 1, 2, 7, 2, 2, 2, 22, 2, 15, 4, 7, 2, 2, 2, 3, 10, 0, 9, 3, 3, 9, 11, 5, 3, 1, 2, 17, 4, 23, 2, 8, 2, 0, 3, 6, 4, 0, 5, 5, 2, 0, 2, 7, 19, 1, 14, 57, 6, 14, 2, 9, 40, 1, 2, 0, 3, 1, 2, 0, 3, 0, 7, 3, 2, 6, 2, 2, 2, 0, 2, 0, 3, 1, 2, 12, 2, 2, 3, 4, 2, 0, 2, 5, 3, 9, 3, 1, 35, 0, 24, 1, 7, 9, 12, 0, 2, 0, 2, 0, 5, 9, 2, 35, 5, 19, 2, 5, 5, 7, 2, 35, 10, 0, 58, 73, 7, 77, 3, 37, 11, 42, 2, 0, 4, 328, 2, 3, 3, 6, 2, 0, 2, 3, 3, 40, 2, 3, 3, 32, 2, 3, 3, 6, 2, 0, 2, 3, 3, 14, 2, 56, 2, 3, 3, 66, 5, 0, 33, 15, 17, 84, 13, 619, 3, 16, 2, 25, 6, 74, 22, 12, 2, 6, 12, 20, 12, 19, 13, 12, 2, 2, 2, 1, 13, 51, 3, 29, 4, 0, 5, 1, 3, 9, 34, 2, 3, 9, 7, 87, 9, 42, 6, 69, 11, 28, 4, 11, 5, 11, 11, 39, 3, 4, 12, 43, 5, 25, 7, 10, 38, 27, 5, 62, 2, 28, 3, 10, 7, 9, 14, 0, 89, 75, 5, 9, 18, 8, 13, 42, 4, 11, 71, 55, 9, 9, 4, 48, 83, 2, 2, 30, 14, 230, 23, 280, 3, 5, 3, 37, 3, 5, 3, 7, 2, 0, 2, 0, 2, 0, 2, 30, 3, 52, 2, 6, 2, 0, 4, 2, 2, 6, 4, 3, 3, 5, 5, 12, 6, 2, 2, 6, 67, 1, 20, 0, 29, 0, 14, 0, 17, 4, 60, 12, 5, 0, 4, 11, 18, 0, 5, 0, 3, 9, 2, 0, 4, 4, 7, 0, 2, 0, 2, 0, 2, 3, 2, 10, 3, 3, 6, 4, 5, 0, 53, 1, 2684, 46, 2, 46, 2, 132, 7, 6, 15, 37, 11, 53, 10, 0, 17, 22, 10, 6, 2, 6, 2, 6, 2, 6, 2, 6, 2, 6, 2, 6, 2, 6, 2, 31, 48, 0, 470, 1, 36, 5, 2, 4, 6, 1, 5, 85, 3, 1, 3, 2, 2, 89, 2, 3, 6, 40, 4, 93, 18, 23, 57, 15, 513, 6581, 75, 20939, 53, 1164, 68, 45, 3, 268, 4, 27, 21, 31, 3, 13, 13, 1, 2, 24, 9, 69, 11, 1, 38, 8, 3, 102, 3, 1, 111, 44, 25, 51, 13, 68, 12, 9, 7, 23, 4, 0, 5, 45, 3, 35, 13, 28, 4, 64, 15, 10, 39, 54, 10, 13, 3, 9, 7, 22, 4, 1, 5, 66, 25, 2, 227, 42, 2, 1, 3, 9, 7, 11171, 13, 22, 5, 48, 8453, 301, 3, 61, 3, 105, 39, 6, 13, 4, 6, 11, 2, 12, 2, 4, 2, 0, 2, 1, 2, 1, 2, 107, 34, 362, 19, 63, 3, 53, 41, 11, 5, 15, 17, 6, 13, 1, 25, 2, 33, 4, 2, 134, 20, 9, 8, 25, 5, 0, 2, 25, 12, 88, 4, 5, 3, 5, 3, 5, 3, 2];\nvar code = 0;\nvar str = [];\nfor (var i = 0; i < wordChars.length; i += 2) {\n str.push(code += wordChars[i]);\n if (wordChars[i + 1])\n str.push(45, code += wordChars[i + 1]);\n}\nexports.wordChars = String.fromCharCode.apply(null, str);\n\n});\n\nace.define(\"ace/mode/text\",[\"require\",\"exports\",\"module\",\"ace/config\",\"ace/tokenizer\",\"ace/mode/text_highlight_rules\",\"ace/mode/behaviour/cstyle\",\"ace/unicode\",\"ace/lib/lang\",\"ace/token_iterator\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar config = require(\"../config\");\nvar Tokenizer = require(\"../tokenizer\").Tokenizer;\nvar TextHighlightRules = require(\"./text_highlight_rules\").TextHighlightRules;\nvar CstyleBehaviour = require(\"./behaviour/cstyle\").CstyleBehaviour;\nvar unicode = require(\"../unicode\");\nvar lang = require(\"../lib/lang\");\nvar TokenIterator = require(\"../token_iterator\").TokenIterator;\nvar Range = require(\"../range\").Range;\nvar Mode = function () {\n this.HighlightRules = TextHighlightRules;\n};\n(function () {\n this.$defaultBehaviour = new CstyleBehaviour();\n this.tokenRe = new RegExp(\"^[\" + unicode.wordChars + \"\\\\$_]+\", \"g\");\n this.nonTokenRe = new RegExp(\"^(?:[^\" + unicode.wordChars + \"\\\\$_]|\\\\s])+\", \"g\");\n this.getTokenizer = function () {\n if (!this.$tokenizer) {\n this.$highlightRules = this.$highlightRules || new this.HighlightRules(this.$highlightRuleConfig);\n this.$tokenizer = new Tokenizer(this.$highlightRules.getRules());\n }\n return this.$tokenizer;\n };\n this.lineCommentStart = \"\";\n this.blockComment = \"\";\n this.toggleCommentLines = function (state, session, startRow, endRow) {\n var doc = session.doc;\n var ignoreBlankLines = true;\n var shouldRemove = true;\n var minIndent = Infinity;\n var tabSize = session.getTabSize();\n var insertAtTabStop = false;\n if (!this.lineCommentStart) {\n if (!this.blockComment)\n return false;\n var lineCommentStart = this.blockComment.start;\n var lineCommentEnd = this.blockComment.end;\n var regexpStart = new RegExp(\"^(\\\\s*)(?:\" + lang.escapeRegExp(lineCommentStart) + \")\");\n var regexpEnd = new RegExp(\"(?:\" + lang.escapeRegExp(lineCommentEnd) + \")\\\\s*$\");\n var comment = function (line, i) {\n if (testRemove(line, i))\n return;\n if (!ignoreBlankLines || /\\S/.test(line)) {\n doc.insertInLine({ row: i, column: line.length }, lineCommentEnd);\n doc.insertInLine({ row: i, column: minIndent }, lineCommentStart);\n }\n };\n var uncomment = function (line, i) {\n var m;\n if (m = line.match(regexpEnd))\n doc.removeInLine(i, line.length - m[0].length, line.length);\n if (m = line.match(regexpStart))\n doc.removeInLine(i, m[1].length, m[0].length);\n };\n var testRemove = function (line, row) {\n if (regexpStart.test(line))\n return true;\n var tokens = session.getTokens(row);\n for (var i = 0; i < tokens.length; i++) {\n if (tokens[i].type === \"comment\")\n return true;\n }\n };\n }\n else {\n if (Array.isArray(this.lineCommentStart)) {\n var regexpStart = this.lineCommentStart.map(lang.escapeRegExp).join(\"|\");\n var lineCommentStart = this.lineCommentStart[0];\n }\n else {\n var regexpStart = lang.escapeRegExp(this.lineCommentStart);\n var lineCommentStart = this.lineCommentStart;\n }\n regexpStart = new RegExp(\"^(\\\\s*)(?:\" + regexpStart + \") ?\");\n insertAtTabStop = session.getUseSoftTabs();\n var uncomment = function (line, i) {\n var m = line.match(regexpStart);\n if (!m)\n return;\n var start = m[1].length, end = m[0].length;\n if (!shouldInsertSpace(line, start, end) && m[0][end - 1] == \" \")\n end--;\n doc.removeInLine(i, start, end);\n };\n var commentWithSpace = lineCommentStart + \" \";\n var comment = function (line, i) {\n if (!ignoreBlankLines || /\\S/.test(line)) {\n if (shouldInsertSpace(line, minIndent, minIndent))\n doc.insertInLine({ row: i, column: minIndent }, commentWithSpace);\n else\n doc.insertInLine({ row: i, column: minIndent }, lineCommentStart);\n }\n };\n var testRemove = function (line, i) {\n return regexpStart.test(line);\n };\n var shouldInsertSpace = function (line, before, after) {\n var spaces = 0;\n while (before-- && line.charAt(before) == \" \")\n spaces++;\n if (spaces % tabSize != 0)\n return false;\n var spaces = 0;\n while (line.charAt(after++) == \" \")\n spaces++;\n if (tabSize > 2)\n return spaces % tabSize != tabSize - 1;\n else\n return spaces % tabSize == 0;\n };\n }\n function iter(fun) {\n for (var i = startRow; i <= endRow; i++)\n fun(doc.getLine(i), i);\n }\n var minEmptyLength = Infinity;\n iter(function (line, i) {\n var indent = line.search(/\\S/);\n if (indent !== -1) {\n if (indent < minIndent)\n minIndent = indent;\n if (shouldRemove && !testRemove(line, i))\n shouldRemove = false;\n }\n else if (minEmptyLength > line.length) {\n minEmptyLength = line.length;\n }\n });\n if (minIndent == Infinity) {\n minIndent = minEmptyLength;\n ignoreBlankLines = false;\n shouldRemove = false;\n }\n if (insertAtTabStop && minIndent % tabSize != 0)\n minIndent = Math.floor(minIndent / tabSize) * tabSize;\n iter(shouldRemove ? uncomment : comment);\n };\n this.toggleBlockComment = function (state, session, range, cursor) {\n var comment = this.blockComment;\n if (!comment)\n return;\n if (!comment.start && comment[0])\n comment = comment[0];\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n var token = iterator.getCurrentToken();\n var sel = session.selection;\n var initialRange = session.selection.toOrientedRange();\n var startRow, colDiff;\n if (token && /comment/.test(token.type)) {\n var startRange, endRange;\n while (token && /comment/.test(token.type)) {\n var i = token.value.indexOf(comment.start);\n if (i != -1) {\n var row = iterator.getCurrentTokenRow();\n var column = iterator.getCurrentTokenColumn() + i;\n startRange = new Range(row, column, row, column + comment.start.length);\n break;\n }\n token = iterator.stepBackward();\n }\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n var token = iterator.getCurrentToken();\n while (token && /comment/.test(token.type)) {\n var i = token.value.indexOf(comment.end);\n if (i != -1) {\n var row = iterator.getCurrentTokenRow();\n var column = iterator.getCurrentTokenColumn() + i;\n endRange = new Range(row, column, row, column + comment.end.length);\n break;\n }\n token = iterator.stepForward();\n }\n if (endRange)\n session.remove(endRange);\n if (startRange) {\n session.remove(startRange);\n startRow = startRange.start.row;\n colDiff = -comment.start.length;\n }\n }\n else {\n colDiff = comment.start.length;\n startRow = range.start.row;\n session.insert(range.end, comment.end);\n session.insert(range.start, comment.start);\n }\n if (initialRange.start.row == startRow)\n initialRange.start.column += colDiff;\n if (initialRange.end.row == startRow)\n initialRange.end.column += colDiff;\n session.selection.fromOrientedRange(initialRange);\n };\n this.getNextLineIndent = function (state, line, tab) {\n return this.$getIndent(line);\n };\n this.checkOutdent = function (state, line, input) {\n return false;\n };\n this.autoOutdent = function (state, doc, row) {\n };\n this.$getIndent = function (line) {\n return line.match(/^\\s*/)[0];\n };\n this.createWorker = function (session) {\n return null;\n };\n this.createModeDelegates = function (mapping) {\n this.$embeds = [];\n this.$modes = {};\n for (var i in mapping) {\n if (mapping[i]) {\n var Mode = mapping[i];\n var id = Mode.prototype.$id;\n var mode = config.$modes[id];\n if (!mode)\n config.$modes[id] = mode = new Mode();\n if (!config.$modes[i])\n config.$modes[i] = mode;\n this.$embeds.push(i);\n this.$modes[i] = mode;\n }\n }\n var delegations = [\"toggleBlockComment\", \"toggleCommentLines\", \"getNextLineIndent\",\n \"checkOutdent\", \"autoOutdent\", \"transformAction\", \"getCompletions\"];\n for (var i = 0; i < delegations.length; i++) {\n (function (scope) {\n var functionName = delegations[i];\n var defaultHandler = scope[functionName];\n scope[delegations[i]] = function () {\n return this.$delegator(functionName, arguments, defaultHandler);\n };\n }(this));\n }\n };\n this.$delegator = function (method, args, defaultHandler) {\n var state = args[0] || \"start\";\n if (typeof state != \"string\") {\n if (Array.isArray(state[2])) {\n var language = state[2][state[2].length - 1];\n var mode = this.$modes[language];\n if (mode)\n return mode[method].apply(mode, [state[1]].concat([].slice.call(args, 1)));\n }\n state = state[0] || \"start\";\n }\n for (var i = 0; i < this.$embeds.length; i++) {\n if (!this.$modes[this.$embeds[i]])\n continue;\n var split = state.split(this.$embeds[i]);\n if (!split[0] && split[1]) {\n args[0] = split[1];\n var mode = this.$modes[this.$embeds[i]];\n return mode[method].apply(mode, args);\n }\n }\n var ret = defaultHandler.apply(this, args);\n return defaultHandler ? ret : undefined;\n };\n this.transformAction = function (state, action, editor, session, param) {\n if (this.$behaviour) {\n var behaviours = this.$behaviour.getBehaviours();\n for (var key in behaviours) {\n if (behaviours[key][action]) {\n var ret = behaviours[key][action].apply(this, arguments);\n if (ret) {\n return ret;\n }\n }\n }\n }\n };\n this.getKeywords = function (append) {\n if (!this.completionKeywords) {\n var rules = this.$tokenizer.rules;\n var completionKeywords = [];\n for (var rule in rules) {\n var ruleItr = rules[rule];\n for (var r = 0, l = ruleItr.length; r < l; r++) {\n if (typeof ruleItr[r].token === \"string\") {\n if (/keyword|support|storage/.test(ruleItr[r].token))\n completionKeywords.push(ruleItr[r].regex);\n }\n else if (typeof ruleItr[r].token === \"object\") {\n for (var a = 0, aLength = ruleItr[r].token.length; a < aLength; a++) {\n if (/keyword|support|storage/.test(ruleItr[r].token[a])) {\n var rule = ruleItr[r].regex.match(/\\(.+?\\)/g)[a];\n completionKeywords.push(rule.substr(1, rule.length - 2));\n }\n }\n }\n }\n }\n this.completionKeywords = completionKeywords;\n }\n if (!append)\n return this.$keywordList;\n return completionKeywords.concat(this.$keywordList || []);\n };\n this.$createKeywordList = function () {\n if (!this.$highlightRules)\n this.getTokenizer();\n return this.$keywordList = this.$highlightRules.$keywordList || [];\n };\n this.getCompletions = function (state, session, pos, prefix) {\n var keywords = this.$keywordList || this.$createKeywordList();\n return keywords.map(function (word) {\n return {\n name: word,\n value: word,\n score: 0,\n meta: \"keyword\"\n };\n });\n };\n this.$id = \"ace/mode/text\";\n}).call(Mode.prototype);\nexports.Mode = Mode;\n\n});\n\nace.define(\"ace/apply_delta\",[\"require\",\"exports\",\"module\"], function(require, exports, module){\"use strict\";\nfunction throwDeltaError(delta, errorText) {\n console.log(\"Invalid Delta:\", delta);\n throw \"Invalid Delta: \" + errorText;\n}\nfunction positionInDocument(docLines, position) {\n return position.row >= 0 && position.row < docLines.length &&\n position.column >= 0 && position.column <= docLines[position.row].length;\n}\nfunction validateDelta(docLines, delta) {\n if (delta.action != \"insert\" && delta.action != \"remove\")\n throwDeltaError(delta, \"delta.action must be 'insert' or 'remove'\");\n if (!(delta.lines instanceof Array))\n throwDeltaError(delta, \"delta.lines must be an Array\");\n if (!delta.start || !delta.end)\n throwDeltaError(delta, \"delta.start/end must be an present\");\n var start = delta.start;\n if (!positionInDocument(docLines, delta.start))\n throwDeltaError(delta, \"delta.start must be contained in document\");\n var end = delta.end;\n if (delta.action == \"remove\" && !positionInDocument(docLines, end))\n throwDeltaError(delta, \"delta.end must contained in document for 'remove' actions\");\n var numRangeRows = end.row - start.row;\n var numRangeLastLineChars = (end.column - (numRangeRows == 0 ? start.column : 0));\n if (numRangeRows != delta.lines.length - 1 || delta.lines[numRangeRows].length != numRangeLastLineChars)\n throwDeltaError(delta, \"delta.range must match delta lines\");\n}\nexports.applyDelta = function (docLines, delta, doNotValidate) {\n var row = delta.start.row;\n var startColumn = delta.start.column;\n var line = docLines[row] || \"\";\n switch (delta.action) {\n case \"insert\":\n var lines = delta.lines;\n if (lines.length === 1) {\n docLines[row] = line.substring(0, startColumn) + delta.lines[0] + line.substring(startColumn);\n }\n else {\n var args = [row, 1].concat(delta.lines);\n docLines.splice.apply(docLines, args);\n docLines[row] = line.substring(0, startColumn) + docLines[row];\n docLines[row + delta.lines.length - 1] += line.substring(startColumn);\n }\n break;\n case \"remove\":\n var endColumn = delta.end.column;\n var endRow = delta.end.row;\n if (row === endRow) {\n docLines[row] = line.substring(0, startColumn) + line.substring(endColumn);\n }\n else {\n docLines.splice(row, endRow - row + 1, line.substring(0, startColumn) + docLines[endRow].substring(endColumn));\n }\n break;\n }\n};\n\n});\n\nace.define(\"ace/anchor\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/event_emitter\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"./lib/oop\");\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar Anchor = /** @class */ (function () {\n function Anchor(doc, row, column) {\n this.$onChange = this.onChange.bind(this);\n this.attach(doc);\n if (typeof column == \"undefined\")\n this.setPosition(row.row, row.column);\n else\n this.setPosition(row, column);\n }\n Anchor.prototype.getPosition = function () {\n return this.$clipPositionToDocument(this.row, this.column);\n };\n Anchor.prototype.getDocument = function () {\n return this.document;\n };\n Anchor.prototype.onChange = function (delta) {\n if (delta.start.row == delta.end.row && delta.start.row != this.row)\n return;\n if (delta.start.row > this.row)\n return;\n var point = $getTransformedPoint(delta, { row: this.row, column: this.column }, this.$insertRight);\n this.setPosition(point.row, point.column, true);\n };\n Anchor.prototype.setPosition = function (row, column, noClip) {\n var pos;\n if (noClip) {\n pos = {\n row: row,\n column: column\n };\n }\n else {\n pos = this.$clipPositionToDocument(row, column);\n }\n if (this.row == pos.row && this.column == pos.column)\n return;\n var old = {\n row: this.row,\n column: this.column\n };\n this.row = pos.row;\n this.column = pos.column;\n this._signal(\"change\", {\n old: old,\n value: pos\n });\n };\n Anchor.prototype.detach = function () {\n this.document.off(\"change\", this.$onChange);\n };\n Anchor.prototype.attach = function (doc) {\n this.document = doc || this.document;\n this.document.on(\"change\", this.$onChange);\n };\n Anchor.prototype.$clipPositionToDocument = function (row, column) {\n var pos = {};\n if (row >= this.document.getLength()) {\n pos.row = Math.max(0, this.document.getLength() - 1);\n pos.column = this.document.getLine(pos.row).length;\n }\n else if (row < 0) {\n pos.row = 0;\n pos.column = 0;\n }\n else {\n pos.row = row;\n pos.column = Math.min(this.document.getLine(pos.row).length, Math.max(0, column));\n }\n if (column < 0)\n pos.column = 0;\n return pos;\n };\n return Anchor;\n}());\nAnchor.prototype.$insertRight = false;\noop.implement(Anchor.prototype, EventEmitter);\nfunction $pointsInOrder(point1, point2, equalPointsInOrder) {\n var bColIsAfter = equalPointsInOrder ? point1.column <= point2.column : point1.column < point2.column;\n return (point1.row < point2.row) || (point1.row == point2.row && bColIsAfter);\n}\nfunction $getTransformedPoint(delta, point, moveIfEqual) {\n var deltaIsInsert = delta.action == \"insert\";\n var deltaRowShift = (deltaIsInsert ? 1 : -1) * (delta.end.row - delta.start.row);\n var deltaColShift = (deltaIsInsert ? 1 : -1) * (delta.end.column - delta.start.column);\n var deltaStart = delta.start;\n var deltaEnd = deltaIsInsert ? deltaStart : delta.end; // Collapse insert range.\n if ($pointsInOrder(point, deltaStart, moveIfEqual)) {\n return {\n row: point.row,\n column: point.column\n };\n }\n if ($pointsInOrder(deltaEnd, point, !moveIfEqual)) {\n return {\n row: point.row + deltaRowShift,\n column: point.column + (point.row == deltaEnd.row ? deltaColShift : 0)\n };\n }\n return {\n row: deltaStart.row,\n column: deltaStart.column\n };\n}\nexports.Anchor = Anchor;\n\n});\n\nace.define(\"ace/document\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/apply_delta\",\"ace/lib/event_emitter\",\"ace/range\",\"ace/anchor\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"./lib/oop\");\nvar applyDelta = require(\"./apply_delta\").applyDelta;\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar Range = require(\"./range\").Range;\nvar Anchor = require(\"./anchor\").Anchor;\nvar Document = /** @class */ (function () {\n function Document(textOrLines) {\n this.$lines = [\"\"];\n if (textOrLines.length === 0) {\n this.$lines = [\"\"];\n }\n else if (Array.isArray(textOrLines)) {\n this.insertMergedLines({ row: 0, column: 0 }, textOrLines);\n }\n else {\n this.insert({ row: 0, column: 0 }, textOrLines);\n }\n }\n Document.prototype.setValue = function (text) {\n var len = this.getLength() - 1;\n this.remove(new Range(0, 0, len, this.getLine(len).length));\n this.insert({ row: 0, column: 0 }, text || \"\");\n };\n Document.prototype.getValue = function () {\n return this.getAllLines().join(this.getNewLineCharacter());\n };\n Document.prototype.createAnchor = function (row, column) {\n return new Anchor(this, row, column);\n };\n Document.prototype.$detectNewLine = function (text) {\n var match = text.match(/^.*?(\\r\\n|\\r|\\n)/m);\n this.$autoNewLine = match ? match[1] : \"\\n\";\n this._signal(\"changeNewLineMode\");\n };\n Document.prototype.getNewLineCharacter = function () {\n switch (this.$newLineMode) {\n case \"windows\":\n return \"\\r\\n\";\n case \"unix\":\n return \"\\n\";\n default:\n return this.$autoNewLine || \"\\n\";\n }\n };\n Document.prototype.setNewLineMode = function (newLineMode) {\n if (this.$newLineMode === newLineMode)\n return;\n this.$newLineMode = newLineMode;\n this._signal(\"changeNewLineMode\");\n };\n Document.prototype.getNewLineMode = function () {\n return this.$newLineMode;\n };\n Document.prototype.isNewLine = function (text) {\n return (text == \"\\r\\n\" || text == \"\\r\" || text == \"\\n\");\n };\n Document.prototype.getLine = function (row) {\n return this.$lines[row] || \"\";\n };\n Document.prototype.getLines = function (firstRow, lastRow) {\n return this.$lines.slice(firstRow, lastRow + 1);\n };\n Document.prototype.getAllLines = function () {\n return this.getLines(0, this.getLength());\n };\n Document.prototype.getLength = function () {\n return this.$lines.length;\n };\n Document.prototype.getTextRange = function (range) {\n return this.getLinesForRange(range).join(this.getNewLineCharacter());\n };\n Document.prototype.getLinesForRange = function (range) {\n var lines;\n if (range.start.row === range.end.row) {\n lines = [this.getLine(range.start.row).substring(range.start.column, range.end.column)];\n }\n else {\n lines = this.getLines(range.start.row, range.end.row);\n lines[0] = (lines[0] || \"\").substring(range.start.column);\n var l = lines.length - 1;\n if (range.end.row - range.start.row == l)\n lines[l] = lines[l].substring(0, range.end.column);\n }\n return lines;\n };\n Document.prototype.insertLines = function (row, lines) {\n console.warn(\"Use of document.insertLines is deprecated. Use the insertFullLines method instead.\");\n return this.insertFullLines(row, lines);\n };\n Document.prototype.removeLines = function (firstRow, lastRow) {\n console.warn(\"Use of document.removeLines is deprecated. Use the removeFullLines method instead.\");\n return this.removeFullLines(firstRow, lastRow);\n };\n Document.prototype.insertNewLine = function (position) {\n console.warn(\"Use of document.insertNewLine is deprecated. Use insertMergedLines(position, ['', '']) instead.\");\n return this.insertMergedLines(position, [\"\", \"\"]);\n };\n Document.prototype.insert = function (position, text) {\n if (this.getLength() <= 1)\n this.$detectNewLine(text);\n return this.insertMergedLines(position, this.$split(text));\n };\n Document.prototype.insertInLine = function (position, text) {\n var start = this.clippedPos(position.row, position.column);\n var end = this.pos(position.row, position.column + text.length);\n this.applyDelta({\n start: start,\n end: end,\n action: \"insert\",\n lines: [text]\n }, true);\n return this.clonePos(end);\n };\n Document.prototype.clippedPos = function (row, column) {\n var length = this.getLength();\n if (row === undefined) {\n row = length;\n }\n else if (row < 0) {\n row = 0;\n }\n else if (row >= length) {\n row = length - 1;\n column = undefined;\n }\n var line = this.getLine(row);\n if (column == undefined)\n column = line.length;\n column = Math.min(Math.max(column, 0), line.length);\n return { row: row, column: column };\n };\n Document.prototype.clonePos = function (pos) {\n return { row: pos.row, column: pos.column };\n };\n Document.prototype.pos = function (row, column) {\n return { row: row, column: column };\n };\n Document.prototype.$clipPosition = function (position) {\n var length = this.getLength();\n if (position.row >= length) {\n position.row = Math.max(0, length - 1);\n position.column = this.getLine(length - 1).length;\n }\n else {\n position.row = Math.max(0, position.row);\n position.column = Math.min(Math.max(position.column, 0), this.getLine(position.row).length);\n }\n return position;\n };\n Document.prototype.insertFullLines = function (row, lines) {\n row = Math.min(Math.max(row, 0), this.getLength());\n var column = 0;\n if (row < this.getLength()) {\n lines = lines.concat([\"\"]);\n column = 0;\n }\n else {\n lines = [\"\"].concat(lines);\n row--;\n column = this.$lines[row].length;\n }\n this.insertMergedLines({ row: row, column: column }, lines);\n };\n Document.prototype.insertMergedLines = function (position, lines) {\n var start = this.clippedPos(position.row, position.column);\n var end = {\n row: start.row + lines.length - 1,\n column: (lines.length == 1 ? start.column : 0) + lines[lines.length - 1].length\n };\n this.applyDelta({\n start: start,\n end: end,\n action: \"insert\",\n lines: lines\n });\n return this.clonePos(end);\n };\n Document.prototype.remove = function (range) {\n var start = this.clippedPos(range.start.row, range.start.column);\n var end = this.clippedPos(range.end.row, range.end.column);\n this.applyDelta({\n start: start,\n end: end,\n action: \"remove\",\n lines: this.getLinesForRange({ start: start, end: end })\n });\n return this.clonePos(start);\n };\n Document.prototype.removeInLine = function (row, startColumn, endColumn) {\n var start = this.clippedPos(row, startColumn);\n var end = this.clippedPos(row, endColumn);\n this.applyDelta({\n start: start,\n end: end,\n action: \"remove\",\n lines: this.getLinesForRange({ start: start, end: end })\n }, true);\n return this.clonePos(start);\n };\n Document.prototype.removeFullLines = function (firstRow, lastRow) {\n firstRow = Math.min(Math.max(0, firstRow), this.getLength() - 1);\n lastRow = Math.min(Math.max(0, lastRow), this.getLength() - 1);\n var deleteFirstNewLine = lastRow == this.getLength() - 1 && firstRow > 0;\n var deleteLastNewLine = lastRow < this.getLength() - 1;\n var startRow = (deleteFirstNewLine ? firstRow - 1 : firstRow);\n var startCol = (deleteFirstNewLine ? this.getLine(startRow).length : 0);\n var endRow = (deleteLastNewLine ? lastRow + 1 : lastRow);\n var endCol = (deleteLastNewLine ? 0 : this.getLine(endRow).length);\n var range = new Range(startRow, startCol, endRow, endCol);\n var deletedLines = this.$lines.slice(firstRow, lastRow + 1);\n this.applyDelta({\n start: range.start,\n end: range.end,\n action: \"remove\",\n lines: this.getLinesForRange(range)\n });\n return deletedLines;\n };\n Document.prototype.removeNewLine = function (row) {\n if (row < this.getLength() - 1 && row >= 0) {\n this.applyDelta({\n start: this.pos(row, this.getLine(row).length),\n end: this.pos(row + 1, 0),\n action: \"remove\",\n lines: [\"\", \"\"]\n });\n }\n };\n Document.prototype.replace = function (range, text) {\n if (!(range instanceof Range))\n range = Range.fromPoints(range.start, range.end);\n if (text.length === 0 && range.isEmpty())\n return range.start;\n if (text == this.getTextRange(range))\n return range.end;\n this.remove(range);\n var end;\n if (text) {\n end = this.insert(range.start, text);\n }\n else {\n end = range.start;\n }\n return end;\n };\n Document.prototype.applyDeltas = function (deltas) {\n for (var i = 0; i < deltas.length; i++) {\n this.applyDelta(deltas[i]);\n }\n };\n Document.prototype.revertDeltas = function (deltas) {\n for (var i = deltas.length - 1; i >= 0; i--) {\n this.revertDelta(deltas[i]);\n }\n };\n Document.prototype.applyDelta = function (delta, doNotValidate) {\n var isInsert = delta.action == \"insert\";\n if (isInsert ? delta.lines.length <= 1 && !delta.lines[0]\n : !Range.comparePoints(delta.start, delta.end)) {\n return;\n }\n if (isInsert && delta.lines.length > 20000) {\n this.$splitAndapplyLargeDelta(delta, 20000);\n }\n else {\n applyDelta(this.$lines, delta, doNotValidate);\n this._signal(\"change\", delta);\n }\n };\n Document.prototype.$safeApplyDelta = function (delta) {\n var docLength = this.$lines.length;\n if (delta.action == \"remove\" && delta.start.row < docLength && delta.end.row < docLength\n || delta.action == \"insert\" && delta.start.row <= docLength) {\n this.applyDelta(delta);\n }\n };\n Document.prototype.$splitAndapplyLargeDelta = function (delta, MAX) {\n var lines = delta.lines;\n var l = lines.length - MAX + 1;\n var row = delta.start.row;\n var column = delta.start.column;\n for (var from = 0, to = 0; from < l; from = to) {\n to += MAX - 1;\n var chunk = lines.slice(from, to);\n chunk.push(\"\");\n this.applyDelta({\n start: this.pos(row + from, column),\n end: this.pos(row + to, column = 0),\n action: delta.action,\n lines: chunk\n }, true);\n }\n delta.lines = lines.slice(from);\n delta.start.row = row + from;\n delta.start.column = column;\n this.applyDelta(delta, true);\n };\n Document.prototype.revertDelta = function (delta) {\n this.$safeApplyDelta({\n start: this.clonePos(delta.start),\n end: this.clonePos(delta.end),\n action: (delta.action == \"insert\" ? \"remove\" : \"insert\"),\n lines: delta.lines.slice()\n });\n };\n Document.prototype.indexToPosition = function (index, startRow) {\n var lines = this.$lines || this.getAllLines();\n var newlineLength = this.getNewLineCharacter().length;\n for (var i = startRow || 0, l = lines.length; i < l; i++) {\n index -= lines[i].length + newlineLength;\n if (index < 0)\n return { row: i, column: index + lines[i].length + newlineLength };\n }\n return { row: l - 1, column: index + lines[l - 1].length + newlineLength };\n };\n Document.prototype.positionToIndex = function (pos, startRow) {\n var lines = this.$lines || this.getAllLines();\n var newlineLength = this.getNewLineCharacter().length;\n var index = 0;\n var row = Math.min(pos.row, lines.length);\n for (var i = startRow || 0; i < row; ++i)\n index += lines[i].length + newlineLength;\n return index + pos.column;\n };\n Document.prototype.$split = function (text) {\n return text.split(/\\r\\n|\\r|\\n/);\n };\n return Document;\n}());\nDocument.prototype.$autoNewLine = \"\";\nDocument.prototype.$newLineMode = \"auto\";\noop.implement(Document.prototype, EventEmitter);\nexports.Document = Document;\n\n});\n\nace.define(\"ace/background_tokenizer\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/event_emitter\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"./lib/oop\");\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar BackgroundTokenizer = /** @class */ (function () {\n function BackgroundTokenizer(tokenizer, editor) {\n this.running = false;\n this.lines = [];\n this.states = [];\n this.currentLine = 0;\n this.tokenizer = tokenizer;\n var self = this;\n this.$worker = function () {\n if (!self.running) {\n return;\n }\n var workerStart = new Date();\n var currentLine = self.currentLine;\n var endLine = -1;\n var doc = self.doc;\n var startLine = currentLine;\n while (self.lines[currentLine])\n currentLine++;\n var len = doc.getLength();\n var processedLines = 0;\n self.running = false;\n while (currentLine < len) {\n self.$tokenizeRow(currentLine);\n endLine = currentLine;\n do {\n currentLine++;\n } while (self.lines[currentLine]);\n processedLines++;\n if ((processedLines % 5 === 0) && (new Date() - workerStart) > 20) {\n self.running = setTimeout(self.$worker, 20);\n break;\n }\n }\n self.currentLine = currentLine;\n if (endLine == -1)\n endLine = currentLine;\n if (startLine <= endLine)\n self.fireUpdateEvent(startLine, endLine);\n };\n }\n BackgroundTokenizer.prototype.setTokenizer = function (tokenizer) {\n this.tokenizer = tokenizer;\n this.lines = [];\n this.states = [];\n this.start(0);\n };\n BackgroundTokenizer.prototype.setDocument = function (doc) {\n this.doc = doc;\n this.lines = [];\n this.states = [];\n this.stop();\n };\n BackgroundTokenizer.prototype.fireUpdateEvent = function (firstRow, lastRow) {\n var data = {\n first: firstRow,\n last: lastRow\n };\n this._signal(\"update\", { data: data });\n };\n BackgroundTokenizer.prototype.start = function (startRow) {\n this.currentLine = Math.min(startRow || 0, this.currentLine, this.doc.getLength());\n this.lines.splice(this.currentLine, this.lines.length);\n this.states.splice(this.currentLine, this.states.length);\n this.stop();\n this.running = setTimeout(this.$worker, 700);\n };\n BackgroundTokenizer.prototype.scheduleStart = function () {\n if (!this.running)\n this.running = setTimeout(this.$worker, 700);\n };\n BackgroundTokenizer.prototype.$updateOnChange = function (delta) {\n var startRow = delta.start.row;\n var len = delta.end.row - startRow;\n if (len === 0) {\n this.lines[startRow] = null;\n }\n else if (delta.action == \"remove\") {\n this.lines.splice(startRow, len + 1, null);\n this.states.splice(startRow, len + 1, null);\n }\n else {\n var args = Array(len + 1);\n args.unshift(startRow, 1);\n this.lines.splice.apply(this.lines, args);\n this.states.splice.apply(this.states, args);\n }\n this.currentLine = Math.min(startRow, this.currentLine, this.doc.getLength());\n this.stop();\n };\n BackgroundTokenizer.prototype.stop = function () {\n if (this.running)\n clearTimeout(this.running);\n this.running = false;\n };\n BackgroundTokenizer.prototype.getTokens = function (row) {\n return this.lines[row] || this.$tokenizeRow(row);\n };\n BackgroundTokenizer.prototype.getState = function (row) {\n if (this.currentLine == row)\n this.$tokenizeRow(row);\n return this.states[row] || \"start\";\n };\n BackgroundTokenizer.prototype.$tokenizeRow = function (row) {\n var line = this.doc.getLine(row);\n var state = this.states[row - 1];\n var data = this.tokenizer.getLineTokens(line, state, row);\n if (this.states[row] + \"\" !== data.state + \"\") {\n this.states[row] = data.state;\n this.lines[row + 1] = null;\n if (this.currentLine > row + 1)\n this.currentLine = row + 1;\n }\n else if (this.currentLine == row) {\n this.currentLine = row + 1;\n }\n return this.lines[row] = data.tokens;\n };\n BackgroundTokenizer.prototype.cleanup = function () {\n this.running = false;\n this.lines = [];\n this.states = [];\n this.currentLine = 0;\n this.removeAllListeners();\n };\n return BackgroundTokenizer;\n}());\noop.implement(BackgroundTokenizer.prototype, EventEmitter);\nexports.BackgroundTokenizer = BackgroundTokenizer;\n\n});\n\nace.define(\"ace/search_highlight\",[\"require\",\"exports\",\"module\",\"ace/lib/lang\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar lang = require(\"./lib/lang\");\nvar Range = require(\"./range\").Range;\nvar SearchHighlight = /** @class */ (function () {\n function SearchHighlight(regExp, clazz, type) {\n if (type === void 0) { type = \"text\"; }\n this.setRegexp(regExp);\n this.clazz = clazz;\n this.type = type;\n }\n SearchHighlight.prototype.setRegexp = function (regExp) {\n if (this.regExp + \"\" == regExp + \"\")\n return;\n this.regExp = regExp;\n this.cache = [];\n };\n SearchHighlight.prototype.update = function (html, markerLayer, session, config) {\n if (!this.regExp)\n return;\n var start = config.firstRow, end = config.lastRow;\n var renderedMarkerRanges = {};\n for (var i = start; i <= end; i++) {\n var ranges = this.cache[i];\n if (ranges == null) {\n ranges = lang.getMatchOffsets(session.getLine(i), this.regExp);\n if (ranges.length > this.MAX_RANGES)\n ranges = ranges.slice(0, this.MAX_RANGES);\n ranges = ranges.map(function (match) {\n return new Range(i, match.offset, i, match.offset + match.length);\n });\n this.cache[i] = ranges.length ? ranges : \"\";\n }\n for (var j = ranges.length; j--;) {\n var rangeToAddMarkerTo = ranges[j].toScreenRange(session);\n var rangeAsString = rangeToAddMarkerTo.toString();\n if (renderedMarkerRanges[rangeAsString])\n continue;\n renderedMarkerRanges[rangeAsString] = true;\n markerLayer.drawSingleLineMarker(html, rangeToAddMarkerTo, this.clazz, config);\n }\n }\n };\n return SearchHighlight;\n}());\nSearchHighlight.prototype.MAX_RANGES = 500;\nexports.SearchHighlight = SearchHighlight;\n\n});\n\nace.define(\"ace/undomanager\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar UndoManager = /** @class */ (function () {\n function UndoManager() {\n this.$maxRev = 0;\n this.$fromUndo = false;\n this.$undoDepth = Infinity;\n this.reset();\n }\n UndoManager.prototype.addSession = function (session) {\n this.$session = session;\n };\n UndoManager.prototype.add = function (delta, allowMerge, session) {\n if (this.$fromUndo)\n return;\n if (delta == this.$lastDelta)\n return;\n if (!this.$keepRedoStack)\n this.$redoStack.length = 0;\n if (allowMerge === false || !this.lastDeltas) {\n this.lastDeltas = [];\n var undoStackLength = this.$undoStack.length;\n if (undoStackLength > this.$undoDepth - 1) {\n this.$undoStack.splice(0, undoStackLength - this.$undoDepth + 1);\n }\n this.$undoStack.push(this.lastDeltas);\n delta.id = this.$rev = ++this.$maxRev;\n }\n if (delta.action == \"remove\" || delta.action == \"insert\")\n this.$lastDelta = delta;\n this.lastDeltas.push(delta);\n };\n UndoManager.prototype.addSelection = function (selection, rev) {\n this.selections.push({\n value: selection,\n rev: rev || this.$rev\n });\n };\n UndoManager.prototype.startNewGroup = function () {\n this.lastDeltas = null;\n return this.$rev;\n };\n UndoManager.prototype.markIgnored = function (from, to) {\n if (to == null)\n to = this.$rev + 1;\n var stack = this.$undoStack;\n for (var i = stack.length; i--;) {\n var delta = stack[i][0];\n if (delta.id <= from)\n break;\n if (delta.id < to)\n delta.ignore = true;\n }\n this.lastDeltas = null;\n };\n UndoManager.prototype.getSelection = function (rev, after) {\n var stack = this.selections;\n for (var i = stack.length; i--;) {\n var selection = stack[i];\n if (selection.rev < rev) {\n if (after)\n selection = stack[i + 1];\n return selection;\n }\n }\n };\n UndoManager.prototype.getRevision = function () {\n return this.$rev;\n };\n UndoManager.prototype.getDeltas = function (from, to) {\n if (to == null)\n to = this.$rev + 1;\n var stack = this.$undoStack;\n var end = null, start = 0;\n for (var i = stack.length; i--;) {\n var delta = stack[i][0];\n if (delta.id < to && !end)\n end = i + 1;\n if (delta.id <= from) {\n start = i + 1;\n break;\n }\n }\n return stack.slice(start, end);\n };\n UndoManager.prototype.getChangedRanges = function (from, to) {\n if (to == null)\n to = this.$rev + 1;\n };\n UndoManager.prototype.getChangedLines = function (from, to) {\n if (to == null)\n to = this.$rev + 1;\n };\n UndoManager.prototype.undo = function (session, dontSelect) {\n this.lastDeltas = null;\n var stack = this.$undoStack;\n if (!rearrangeUndoStack(stack, stack.length))\n return;\n if (!session)\n session = this.$session;\n if (this.$redoStackBaseRev !== this.$rev && this.$redoStack.length)\n this.$redoStack = [];\n this.$fromUndo = true;\n var deltaSet = stack.pop();\n var undoSelectionRange = null;\n if (deltaSet) {\n undoSelectionRange = session.undoChanges(deltaSet, dontSelect);\n this.$redoStack.push(deltaSet);\n this.$syncRev();\n }\n this.$fromUndo = false;\n return undoSelectionRange;\n };\n UndoManager.prototype.redo = function (session, dontSelect) {\n this.lastDeltas = null;\n if (!session)\n session = this.$session;\n this.$fromUndo = true;\n if (this.$redoStackBaseRev != this.$rev) {\n var diff = this.getDeltas(this.$redoStackBaseRev, this.$rev + 1);\n rebaseRedoStack(this.$redoStack, diff);\n this.$redoStackBaseRev = this.$rev;\n this.$redoStack.forEach(function (x) {\n x[0].id = ++this.$maxRev;\n }, this);\n }\n var deltaSet = this.$redoStack.pop();\n var redoSelectionRange = null;\n if (deltaSet) {\n redoSelectionRange = session.redoChanges(deltaSet, dontSelect);\n this.$undoStack.push(deltaSet);\n this.$syncRev();\n }\n this.$fromUndo = false;\n return redoSelectionRange;\n };\n UndoManager.prototype.$syncRev = function () {\n var stack = this.$undoStack;\n var nextDelta = stack[stack.length - 1];\n var id = nextDelta && nextDelta[0].id || 0;\n this.$redoStackBaseRev = id;\n this.$rev = id;\n };\n UndoManager.prototype.reset = function () {\n this.lastDeltas = null;\n this.$lastDelta = null;\n this.$undoStack = [];\n this.$redoStack = [];\n this.$rev = 0;\n this.mark = 0;\n this.$redoStackBaseRev = this.$rev;\n this.selections = [];\n };\n UndoManager.prototype.canUndo = function () {\n return this.$undoStack.length > 0;\n };\n UndoManager.prototype.canRedo = function () {\n return this.$redoStack.length > 0;\n };\n UndoManager.prototype.bookmark = function (rev) {\n if (rev == undefined)\n rev = this.$rev;\n this.mark = rev;\n };\n UndoManager.prototype.isAtBookmark = function () {\n return this.$rev === this.mark;\n };\n UndoManager.prototype.toJSON = function () {\n return {\n $redoStack: this.$redoStack,\n $undoStack: this.$undoStack\n };\n };\n UndoManager.prototype.fromJSON = function (json) {\n this.reset();\n this.$undoStack = json.$undoStack;\n this.$redoStack = json.$redoStack;\n };\n UndoManager.prototype.$prettyPrint = function (delta) {\n if (delta)\n return stringifyDelta(delta);\n return stringifyDelta(this.$undoStack) + \"\\n---\\n\" + stringifyDelta(this.$redoStack);\n };\n return UndoManager;\n}());\nUndoManager.prototype.hasUndo = UndoManager.prototype.canUndo;\nUndoManager.prototype.hasRedo = UndoManager.prototype.canRedo;\nUndoManager.prototype.isClean = UndoManager.prototype.isAtBookmark;\nUndoManager.prototype.markClean = UndoManager.prototype.bookmark;\nfunction rearrangeUndoStack(stack, pos) {\n for (var i = pos; i--;) {\n var deltaSet = stack[i];\n if (deltaSet && !deltaSet[0].ignore) {\n while (i < pos - 1) {\n var swapped = swapGroups(stack[i], stack[i + 1]);\n stack[i] = swapped[0];\n stack[i + 1] = swapped[1];\n i++;\n }\n return true;\n }\n }\n}\nvar Range = require(\"./range\").Range;\nvar cmp = Range.comparePoints;\nvar comparePoints = Range.comparePoints;\nfunction $updateMarkers(delta) {\n var isInsert = delta.action == \"insert\";\n var start = delta.start;\n var end = delta.end;\n var rowShift = (end.row - start.row) * (isInsert ? 1 : -1);\n var colShift = (end.column - start.column) * (isInsert ? 1 : -1);\n if (isInsert)\n end = start;\n for (var i in this.marks) {\n var point = this.marks[i];\n var cmp = comparePoints(point, start);\n if (cmp < 0) {\n continue; // delta starts after the range\n }\n if (cmp === 0) {\n if (isInsert) {\n if (point.bias == 1) {\n cmp = 1;\n }\n else {\n point.bias == -1;\n continue;\n }\n }\n }\n var cmp2 = isInsert ? cmp : comparePoints(point, end);\n if (cmp2 > 0) {\n point.row += rowShift;\n point.column += point.row == end.row ? colShift : 0;\n continue;\n }\n if (!isInsert && cmp2 <= 0) {\n point.row = start.row;\n point.column = start.column;\n if (cmp2 === 0)\n point.bias = 1;\n }\n }\n}\nfunction clonePos(pos) {\n return { row: pos.row, column: pos.column };\n}\nfunction cloneDelta(d) {\n return {\n start: clonePos(d.start),\n end: clonePos(d.end),\n action: d.action,\n lines: d.lines.slice()\n };\n}\nfunction stringifyDelta(d) {\n d = d || this;\n if (Array.isArray(d)) {\n return d.map(stringifyDelta).join(\"\\n\");\n }\n var type = \"\";\n if (d.action) {\n type = d.action == \"insert\" ? \"+\" : \"-\";\n type += \"[\" + d.lines + \"]\";\n }\n else if (d.value) {\n if (Array.isArray(d.value)) {\n type = d.value.map(stringifyRange).join(\"\\n\");\n }\n else {\n type = stringifyRange(d.value);\n }\n }\n if (d.start) {\n type += stringifyRange(d);\n }\n if (d.id || d.rev) {\n type += \"\\t(\" + (d.id || d.rev) + \")\";\n }\n return type;\n}\nfunction stringifyRange(r) {\n return r.start.row + \":\" + r.start.column\n + \"=>\" + r.end.row + \":\" + r.end.column;\n}\nfunction swap(d1, d2) {\n var i1 = d1.action == \"insert\";\n var i2 = d2.action == \"insert\";\n if (i1 && i2) {\n if (cmp(d2.start, d1.end) >= 0) {\n shift(d2, d1, -1);\n }\n else if (cmp(d2.start, d1.start) <= 0) {\n shift(d1, d2, +1);\n }\n else {\n return null;\n }\n }\n else if (i1 && !i2) {\n if (cmp(d2.start, d1.end) >= 0) {\n shift(d2, d1, -1);\n }\n else if (cmp(d2.end, d1.start) <= 0) {\n shift(d1, d2, -1);\n }\n else {\n return null;\n }\n }\n else if (!i1 && i2) {\n if (cmp(d2.start, d1.start) >= 0) {\n shift(d2, d1, +1);\n }\n else if (cmp(d2.start, d1.start) <= 0) {\n shift(d1, d2, +1);\n }\n else {\n return null;\n }\n }\n else if (!i1 && !i2) {\n if (cmp(d2.start, d1.start) >= 0) {\n shift(d2, d1, +1);\n }\n else if (cmp(d2.end, d1.start) <= 0) {\n shift(d1, d2, -1);\n }\n else {\n return null;\n }\n }\n return [d2, d1];\n}\nfunction swapGroups(ds1, ds2) {\n for (var i = ds1.length; i--;) {\n for (var j = 0; j < ds2.length; j++) {\n if (!swap(ds1[i], ds2[j])) {\n while (i < ds1.length) {\n while (j--) {\n swap(ds2[j], ds1[i]);\n }\n j = ds2.length;\n i++;\n }\n return [ds1, ds2];\n }\n }\n }\n ds1.selectionBefore = ds2.selectionBefore =\n ds1.selectionAfter = ds2.selectionAfter = null;\n return [ds2, ds1];\n}\nfunction xform(d1, c1) {\n var i1 = d1.action == \"insert\";\n var i2 = c1.action == \"insert\";\n if (i1 && i2) {\n if (cmp(d1.start, c1.start) < 0) {\n shift(c1, d1, 1);\n }\n else {\n shift(d1, c1, 1);\n }\n }\n else if (i1 && !i2) {\n if (cmp(d1.start, c1.end) >= 0) {\n shift(d1, c1, -1);\n }\n else if (cmp(d1.start, c1.start) <= 0) {\n shift(c1, d1, +1);\n }\n else {\n shift(d1, Range.fromPoints(c1.start, d1.start), -1);\n shift(c1, d1, +1);\n }\n }\n else if (!i1 && i2) {\n if (cmp(c1.start, d1.end) >= 0) {\n shift(c1, d1, -1);\n }\n else if (cmp(c1.start, d1.start) <= 0) {\n shift(d1, c1, +1);\n }\n else {\n shift(c1, Range.fromPoints(d1.start, c1.start), -1);\n shift(d1, c1, +1);\n }\n }\n else if (!i1 && !i2) {\n if (cmp(c1.start, d1.end) >= 0) {\n shift(c1, d1, -1);\n }\n else if (cmp(c1.end, d1.start) <= 0) {\n shift(d1, c1, -1);\n }\n else {\n var before, after;\n if (cmp(d1.start, c1.start) < 0) {\n before = d1;\n d1 = splitDelta(d1, c1.start);\n }\n if (cmp(d1.end, c1.end) > 0) {\n after = splitDelta(d1, c1.end);\n }\n shiftPos(c1.end, d1.start, d1.end, -1);\n if (after && !before) {\n d1.lines = after.lines;\n d1.start = after.start;\n d1.end = after.end;\n after = d1;\n }\n return [c1, before, after].filter(Boolean);\n }\n }\n return [c1, d1];\n}\nfunction shift(d1, d2, dir) {\n shiftPos(d1.start, d2.start, d2.end, dir);\n shiftPos(d1.end, d2.start, d2.end, dir);\n}\nfunction shiftPos(pos, start, end, dir) {\n if (pos.row == (dir == 1 ? start : end).row) {\n pos.column += dir * (end.column - start.column);\n }\n pos.row += dir * (end.row - start.row);\n}\nfunction splitDelta(c, pos) {\n var lines = c.lines;\n var end = c.end;\n c.end = clonePos(pos);\n var rowsBefore = c.end.row - c.start.row;\n var otherLines = lines.splice(rowsBefore, lines.length);\n var col = rowsBefore ? pos.column : pos.column - c.start.column;\n lines.push(otherLines[0].substring(0, col));\n otherLines[0] = otherLines[0].substr(col);\n var rest = {\n start: clonePos(pos),\n end: end,\n lines: otherLines,\n action: c.action\n };\n return rest;\n}\nfunction moveDeltasByOne(redoStack, d) {\n d = cloneDelta(d);\n for (var j = redoStack.length; j--;) {\n var deltaSet = redoStack[j];\n for (var i = 0; i < deltaSet.length; i++) {\n var x = deltaSet[i];\n var xformed = xform(x, d);\n d = xformed[0];\n if (xformed.length != 2) {\n if (xformed[2]) {\n deltaSet.splice(i + 1, 1, xformed[1], xformed[2]);\n i++;\n }\n else if (!xformed[1]) {\n deltaSet.splice(i, 1);\n i--;\n }\n }\n }\n if (!deltaSet.length) {\n redoStack.splice(j, 1);\n }\n }\n return redoStack;\n}\nfunction rebaseRedoStack(redoStack, deltaSets) {\n for (var i = 0; i < deltaSets.length; i++) {\n var deltas = deltaSets[i];\n for (var j = 0; j < deltas.length; j++) {\n moveDeltasByOne(redoStack, deltas[j]);\n }\n }\n}\nexports.UndoManager = UndoManager;\n\n});\n\nace.define(\"ace/edit_session/fold_line\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar Range = require(\"../range\").Range;\nvar FoldLine = /** @class */ (function () {\n function FoldLine(foldData, folds) {\n this.foldData = foldData;\n if (Array.isArray(folds)) {\n this.folds = folds;\n }\n else {\n folds = this.folds = [folds];\n }\n var last = folds[folds.length - 1];\n this.range = new Range(folds[0].start.row, folds[0].start.column, last.end.row, last.end.column);\n this.start = this.range.start;\n this.end = this.range.end;\n this.folds.forEach(function (fold) {\n fold.setFoldLine(this);\n }, this);\n }\n FoldLine.prototype.shiftRow = function (shift) {\n this.start.row += shift;\n this.end.row += shift;\n this.folds.forEach(function (fold) {\n fold.start.row += shift;\n fold.end.row += shift;\n });\n };\n FoldLine.prototype.addFold = function (fold) {\n if (fold.sameRow) {\n if (fold.start.row < this.startRow || fold.endRow > this.endRow) {\n throw new Error(\"Can't add a fold to this FoldLine as it has no connection\");\n }\n this.folds.push(fold);\n this.folds.sort(function (a, b) {\n return -a.range.compareEnd(b.start.row, b.start.column);\n });\n if (this.range.compareEnd(fold.start.row, fold.start.column) > 0) {\n this.end.row = fold.end.row;\n this.end.column = fold.end.column;\n }\n else if (this.range.compareStart(fold.end.row, fold.end.column) < 0) {\n this.start.row = fold.start.row;\n this.start.column = fold.start.column;\n }\n }\n else if (fold.start.row == this.end.row) {\n this.folds.push(fold);\n this.end.row = fold.end.row;\n this.end.column = fold.end.column;\n }\n else if (fold.end.row == this.start.row) {\n this.folds.unshift(fold);\n this.start.row = fold.start.row;\n this.start.column = fold.start.column;\n }\n else {\n throw new Error(\"Trying to add fold to FoldRow that doesn't have a matching row\");\n }\n fold.foldLine = this;\n };\n FoldLine.prototype.containsRow = function (row) {\n return row >= this.start.row && row <= this.end.row;\n };\n FoldLine.prototype.walk = function (callback, endRow, endColumn) {\n var lastEnd = 0, folds = this.folds, fold, cmp, stop, isNewRow = true;\n if (endRow == null) {\n endRow = this.end.row;\n endColumn = this.end.column;\n }\n for (var i = 0; i < folds.length; i++) {\n fold = folds[i];\n cmp = fold.range.compareStart(endRow, endColumn);\n if (cmp == -1) {\n callback(null, endRow, endColumn, lastEnd, isNewRow);\n return;\n }\n stop = callback(null, fold.start.row, fold.start.column, lastEnd, isNewRow);\n stop = !stop && callback(fold.placeholder, fold.start.row, fold.start.column, lastEnd);\n if (stop || cmp === 0) {\n return;\n }\n isNewRow = !fold.sameRow;\n lastEnd = fold.end.column;\n }\n callback(null, endRow, endColumn, lastEnd, isNewRow);\n };\n FoldLine.prototype.getNextFoldTo = function (row, column) {\n var fold, cmp;\n for (var i = 0; i < this.folds.length; i++) {\n fold = this.folds[i];\n cmp = fold.range.compareEnd(row, column);\n if (cmp == -1) {\n return {\n fold: fold,\n kind: \"after\"\n };\n }\n else if (cmp === 0) {\n return {\n fold: fold,\n kind: \"inside\"\n };\n }\n }\n return null;\n };\n FoldLine.prototype.addRemoveChars = function (row, column, len) {\n var ret = this.getNextFoldTo(row, column), fold, folds;\n if (ret) {\n fold = ret.fold;\n if (ret.kind == \"inside\"\n && fold.start.column != column\n && fold.start.row != row) {\n window.console && window.console.log(row, column, fold);\n }\n else if (fold.start.row == row) {\n folds = this.folds;\n var i = folds.indexOf(fold);\n if (i === 0) {\n this.start.column += len;\n }\n for (i; i < folds.length; i++) {\n fold = folds[i];\n fold.start.column += len;\n if (!fold.sameRow) {\n return;\n }\n fold.end.column += len;\n }\n this.end.column += len;\n }\n }\n };\n FoldLine.prototype.split = function (row, column) {\n var pos = this.getNextFoldTo(row, column);\n if (!pos || pos.kind == \"inside\")\n return null;\n var fold = pos.fold;\n var folds = this.folds;\n var foldData = this.foldData;\n var i = folds.indexOf(fold);\n var foldBefore = folds[i - 1];\n this.end.row = foldBefore.end.row;\n this.end.column = foldBefore.end.column;\n folds = folds.splice(i, folds.length - i);\n var newFoldLine = new FoldLine(foldData, folds);\n foldData.splice(foldData.indexOf(this) + 1, 0, newFoldLine);\n return newFoldLine;\n };\n FoldLine.prototype.merge = function (foldLineNext) {\n var folds = foldLineNext.folds;\n for (var i = 0; i < folds.length; i++) {\n this.addFold(folds[i]);\n }\n var foldData = this.foldData;\n foldData.splice(foldData.indexOf(foldLineNext), 1);\n };\n FoldLine.prototype.toString = function () {\n var ret = [this.range.toString() + \": [\"];\n this.folds.forEach(function (fold) {\n ret.push(\" \" + fold.toString());\n });\n ret.push(\"]\");\n return ret.join(\"\\n\");\n };\n FoldLine.prototype.idxToPosition = function (idx) {\n var lastFoldEndColumn = 0;\n for (var i = 0; i < this.folds.length; i++) {\n var fold = this.folds[i];\n idx -= fold.start.column - lastFoldEndColumn;\n if (idx < 0) {\n return {\n row: fold.start.row,\n column: fold.start.column + idx\n };\n }\n idx -= fold.placeholder.length;\n if (idx < 0) {\n return fold.start;\n }\n lastFoldEndColumn = fold.end.column;\n }\n return {\n row: this.end.row,\n column: this.end.column + idx\n };\n };\n return FoldLine;\n}());\nexports.FoldLine = FoldLine;\n\n});\n\nace.define(\"ace/range_list\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar Range = require(\"./range\").Range;\nvar comparePoints = Range.comparePoints;\nvar RangeList = /** @class */ (function () {\n function RangeList() {\n this.ranges = [];\n this.$bias = 1;\n }\n RangeList.prototype.pointIndex = function (pos, excludeEdges, startIndex) {\n var list = this.ranges;\n for (var i = startIndex || 0; i < list.length; i++) {\n var range = list[i];\n var cmpEnd = comparePoints(pos, range.end);\n if (cmpEnd > 0)\n continue;\n var cmpStart = comparePoints(pos, range.start);\n if (cmpEnd === 0)\n return excludeEdges && cmpStart !== 0 ? -i - 2 : i;\n if (cmpStart > 0 || (cmpStart === 0 && !excludeEdges))\n return i;\n return -i - 1;\n }\n return -i - 1;\n };\n RangeList.prototype.add = function (range) {\n var excludeEdges = !range.isEmpty();\n var startIndex = this.pointIndex(range.start, excludeEdges);\n if (startIndex < 0)\n startIndex = -startIndex - 1;\n var endIndex = this.pointIndex(range.end, excludeEdges, startIndex);\n if (endIndex < 0)\n endIndex = -endIndex - 1;\n else\n endIndex++;\n return this.ranges.splice(startIndex, endIndex - startIndex, range);\n };\n RangeList.prototype.addList = function (list) {\n var removed = [];\n for (var i = list.length; i--;) {\n removed.push.apply(removed, this.add(list[i]));\n }\n return removed;\n };\n RangeList.prototype.substractPoint = function (pos) {\n var i = this.pointIndex(pos);\n if (i >= 0)\n return this.ranges.splice(i, 1);\n };\n RangeList.prototype.merge = function () {\n var removed = [];\n var list = this.ranges;\n list = list.sort(function (a, b) {\n return comparePoints(a.start, b.start);\n });\n var next = list[0], range;\n for (var i = 1; i < list.length; i++) {\n range = next;\n next = list[i];\n var cmp = comparePoints(range.end, next.start);\n if (cmp < 0)\n continue;\n if (cmp == 0 && !range.isEmpty() && !next.isEmpty())\n continue;\n if (comparePoints(range.end, next.end) < 0) {\n range.end.row = next.end.row;\n range.end.column = next.end.column;\n }\n list.splice(i, 1);\n removed.push(next);\n next = range;\n i--;\n }\n this.ranges = list;\n return removed;\n };\n RangeList.prototype.contains = function (row, column) {\n return this.pointIndex({ row: row, column: column }) >= 0;\n };\n RangeList.prototype.containsPoint = function (pos) {\n return this.pointIndex(pos) >= 0;\n };\n RangeList.prototype.rangeAtPoint = function (pos) {\n var i = this.pointIndex(pos);\n if (i >= 0)\n return this.ranges[i];\n };\n RangeList.prototype.clipRows = function (startRow, endRow) {\n var list = this.ranges;\n if (list[0].start.row > endRow || list[list.length - 1].start.row < startRow)\n return [];\n var startIndex = this.pointIndex({ row: startRow, column: 0 });\n if (startIndex < 0)\n startIndex = -startIndex - 1;\n var endIndex = this.pointIndex({ row: endRow, column: 0 }, startIndex);\n if (endIndex < 0)\n endIndex = -endIndex - 1;\n var clipped = [];\n for (var i = startIndex; i < endIndex; i++) {\n clipped.push(list[i]);\n }\n return clipped;\n };\n RangeList.prototype.removeAll = function () {\n return this.ranges.splice(0, this.ranges.length);\n };\n RangeList.prototype.attach = function (session) {\n if (this.session)\n this.detach();\n this.session = session;\n this.onChange = this.$onChange.bind(this);\n this.session.on('change', this.onChange);\n };\n RangeList.prototype.detach = function () {\n if (!this.session)\n return;\n this.session.removeListener('change', this.onChange);\n this.session = null;\n };\n RangeList.prototype.$onChange = function (delta) {\n var start = delta.start;\n var end = delta.end;\n var startRow = start.row;\n var endRow = end.row;\n var ranges = this.ranges;\n for (var i = 0, n = ranges.length; i < n; i++) {\n var r = ranges[i];\n if (r.end.row >= startRow)\n break;\n }\n if (delta.action == \"insert\") {\n var lineDif = endRow - startRow;\n var colDiff = -start.column + end.column;\n for (; i < n; i++) {\n var r = ranges[i];\n if (r.start.row > startRow)\n break;\n if (r.start.row == startRow && r.start.column >= start.column) {\n if (r.start.column == start.column && this.$bias <= 0) {\n }\n else {\n r.start.column += colDiff;\n r.start.row += lineDif;\n }\n }\n if (r.end.row == startRow && r.end.column >= start.column) {\n if (r.end.column == start.column && this.$bias < 0) {\n continue;\n }\n if (r.end.column == start.column && colDiff > 0 && i < n - 1) {\n if (r.end.column > r.start.column && r.end.column == ranges[i + 1].start.column)\n r.end.column -= colDiff;\n }\n r.end.column += colDiff;\n r.end.row += lineDif;\n }\n }\n }\n else {\n var lineDif = startRow - endRow;\n var colDiff = start.column - end.column;\n for (; i < n; i++) {\n var r = ranges[i];\n if (r.start.row > endRow)\n break;\n if (r.end.row < endRow\n && (startRow < r.end.row\n || startRow == r.end.row && start.column < r.end.column)) {\n r.end.row = startRow;\n r.end.column = start.column;\n }\n else if (r.end.row == endRow) {\n if (r.end.column <= end.column) {\n if (lineDif || r.end.column > start.column) {\n r.end.column = start.column;\n r.end.row = start.row;\n }\n }\n else {\n r.end.column += colDiff;\n r.end.row += lineDif;\n }\n }\n else if (r.end.row > endRow) {\n r.end.row += lineDif;\n }\n if (r.start.row < endRow\n && (startRow < r.start.row\n || startRow == r.start.row && start.column < r.start.column)) {\n r.start.row = startRow;\n r.start.column = start.column;\n }\n else if (r.start.row == endRow) {\n if (r.start.column <= end.column) {\n if (lineDif || r.start.column > start.column) {\n r.start.column = start.column;\n r.start.row = start.row;\n }\n }\n else {\n r.start.column += colDiff;\n r.start.row += lineDif;\n }\n }\n else if (r.start.row > endRow) {\n r.start.row += lineDif;\n }\n }\n }\n if (lineDif != 0 && i < n) {\n for (; i < n; i++) {\n var r = ranges[i];\n r.start.row += lineDif;\n r.end.row += lineDif;\n }\n }\n };\n return RangeList;\n}());\nRangeList.prototype.comparePoints = comparePoints;\nexports.RangeList = RangeList;\n\n});\n\nace.define(\"ace/edit_session/fold\",[\"require\",\"exports\",\"module\",\"ace/range_list\"], function(require, exports, module){\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar RangeList = require(\"../range_list\").RangeList;\nvar Fold = /** @class */ (function (_super) {\n __extends(Fold, _super);\n function Fold(range, placeholder) {\n var _this = _super.call(this) || this;\n _this.foldLine = null;\n _this.placeholder = placeholder;\n _this.range = range;\n _this.start = range.start;\n _this.end = range.end;\n _this.sameRow = range.start.row == range.end.row;\n _this.subFolds = _this.ranges = [];\n return _this;\n }\n Fold.prototype.toString = function () {\n return '\"' + this.placeholder + '\" ' + this.range.toString();\n };\n Fold.prototype.setFoldLine = function (foldLine) {\n this.foldLine = foldLine;\n this.subFolds.forEach(function (fold) {\n fold.setFoldLine(foldLine);\n });\n };\n Fold.prototype.clone = function () {\n var range = this.range.clone();\n var fold = new Fold(range, this.placeholder);\n this.subFolds.forEach(function (subFold) {\n fold.subFolds.push(subFold.clone());\n });\n fold.collapseChildren = this.collapseChildren;\n return fold;\n };\n Fold.prototype.addSubFold = function (fold) {\n if (this.range.isEqual(fold))\n return;\n consumeRange(fold, this.start);\n var row = fold.start.row, column = fold.start.column;\n for (var i = 0, cmp = -1; i < this.subFolds.length; i++) {\n cmp = this.subFolds[i].range.compare(row, column);\n if (cmp != 1)\n break;\n }\n var afterStart = this.subFolds[i];\n var firstConsumed = 0;\n if (cmp == 0) {\n if (afterStart.range.containsRange(fold))\n return afterStart.addSubFold(fold);\n else\n firstConsumed = 1;\n }\n var row = fold.range.end.row, column = fold.range.end.column;\n for (var j = i, cmp = -1; j < this.subFolds.length; j++) {\n cmp = this.subFolds[j].range.compare(row, column);\n if (cmp != 1)\n break;\n }\n if (cmp == 0)\n j++;\n var consumedFolds = this.subFolds.splice(i, j - i, fold);\n var last = cmp == 0 ? consumedFolds.length - 1 : consumedFolds.length;\n for (var k = firstConsumed; k < last; k++) {\n fold.addSubFold(consumedFolds[k]);\n }\n fold.setFoldLine(this.foldLine);\n return fold;\n };\n Fold.prototype.restoreRange = function (range) {\n return restoreRange(range, this.start);\n };\n return Fold;\n}(RangeList));\nfunction consumePoint(point, anchor) {\n point.row -= anchor.row;\n if (point.row == 0)\n point.column -= anchor.column;\n}\nfunction consumeRange(range, anchor) {\n consumePoint(range.start, anchor);\n consumePoint(range.end, anchor);\n}\nfunction restorePoint(point, anchor) {\n if (point.row == 0)\n point.column += anchor.column;\n point.row += anchor.row;\n}\nfunction restoreRange(range, anchor) {\n restorePoint(range.start, anchor);\n restorePoint(range.end, anchor);\n}\nexports.Fold = Fold;\n\n});\n\nace.define(\"ace/edit_session/folding\",[\"require\",\"exports\",\"module\",\"ace/range\",\"ace/edit_session/fold_line\",\"ace/edit_session/fold\",\"ace/token_iterator\",\"ace/mouse/mouse_event\"], function(require, exports, module){\"use strict\";\nvar Range = require(\"../range\").Range;\nvar FoldLine = require(\"./fold_line\").FoldLine;\nvar Fold = require(\"./fold\").Fold;\nvar TokenIterator = require(\"../token_iterator\").TokenIterator;\nvar MouseEvent = require(\"../mouse/mouse_event\").MouseEvent;\nfunction Folding() {\n this.getFoldAt = function (row, column, side) {\n var foldLine = this.getFoldLine(row);\n if (!foldLine)\n return null;\n var folds = foldLine.folds;\n for (var i = 0; i < folds.length; i++) {\n var range = folds[i].range;\n if (range.contains(row, column)) {\n if (side == 1 && range.isEnd(row, column) && !range.isEmpty()) {\n continue;\n }\n else if (side == -1 && range.isStart(row, column) && !range.isEmpty()) {\n continue;\n }\n return folds[i];\n }\n }\n };\n this.getFoldsInRange = function (range) {\n var start = range.start;\n var end = range.end;\n var foldLines = this.$foldData;\n var foundFolds = [];\n start.column += 1;\n end.column -= 1;\n for (var i = 0; i < foldLines.length; i++) {\n var cmp = foldLines[i].range.compareRange(range);\n if (cmp == 2) {\n continue;\n }\n else if (cmp == -2) {\n break;\n }\n var folds = foldLines[i].folds;\n for (var j = 0; j < folds.length; j++) {\n var fold = folds[j];\n cmp = fold.range.compareRange(range);\n if (cmp == -2) {\n break;\n }\n else if (cmp == 2) {\n continue;\n }\n else \n if (cmp == 42) {\n break;\n }\n foundFolds.push(fold);\n }\n }\n start.column -= 1;\n end.column += 1;\n return foundFolds;\n };\n this.getFoldsInRangeList = function (ranges) {\n if (Array.isArray(ranges)) {\n var folds = [];\n ranges.forEach(function (range) {\n folds = folds.concat(this.getFoldsInRange(range));\n }, this);\n }\n else {\n var folds = this.getFoldsInRange(ranges);\n }\n return folds;\n };\n this.getAllFolds = function () {\n var folds = [];\n var foldLines = this.$foldData;\n for (var i = 0; i < foldLines.length; i++)\n for (var j = 0; j < foldLines[i].folds.length; j++)\n folds.push(foldLines[i].folds[j]);\n return folds;\n };\n this.getFoldStringAt = function (row, column, trim, foldLine) {\n foldLine = foldLine || this.getFoldLine(row);\n if (!foldLine)\n return null;\n var lastFold = {\n end: { column: 0 }\n };\n var str, fold;\n for (var i = 0; i < foldLine.folds.length; i++) {\n fold = foldLine.folds[i];\n var cmp = fold.range.compareEnd(row, column);\n if (cmp == -1) {\n str = this\n .getLine(fold.start.row)\n .substring(lastFold.end.column, fold.start.column);\n break;\n }\n else if (cmp === 0) {\n return null;\n }\n lastFold = fold;\n }\n if (!str)\n str = this.getLine(fold.start.row).substring(lastFold.end.column);\n if (trim == -1)\n return str.substring(0, column - lastFold.end.column);\n else if (trim == 1)\n return str.substring(column - lastFold.end.column);\n else\n return str;\n };\n this.getFoldLine = function (docRow, startFoldLine) {\n var foldData = this.$foldData;\n var i = 0;\n if (startFoldLine)\n i = foldData.indexOf(startFoldLine);\n if (i == -1)\n i = 0;\n for (i; i < foldData.length; i++) {\n var foldLine = foldData[i];\n if (foldLine.start.row <= docRow && foldLine.end.row >= docRow) {\n return foldLine;\n }\n else if (foldLine.end.row > docRow) {\n return null;\n }\n }\n return null;\n };\n this.getNextFoldLine = function (docRow, startFoldLine) {\n var foldData = this.$foldData;\n var i = 0;\n if (startFoldLine)\n i = foldData.indexOf(startFoldLine);\n if (i == -1)\n i = 0;\n for (i; i < foldData.length; i++) {\n var foldLine = foldData[i];\n if (foldLine.end.row >= docRow) {\n return foldLine;\n }\n }\n return null;\n };\n this.getFoldedRowCount = function (first, last) {\n var foldData = this.$foldData, rowCount = last - first + 1;\n for (var i = 0; i < foldData.length; i++) {\n var foldLine = foldData[i], end = foldLine.end.row, start = foldLine.start.row;\n if (end >= last) {\n if (start < last) {\n if (start >= first)\n rowCount -= last - start;\n else\n rowCount = 0; // in one fold\n }\n break;\n }\n else if (end >= first) {\n if (start >= first) // fold inside range\n rowCount -= end - start;\n else\n rowCount -= end - first + 1;\n }\n }\n return rowCount;\n };\n this.$addFoldLine = function (foldLine) {\n this.$foldData.push(foldLine);\n this.$foldData.sort(function (a, b) {\n return a.start.row - b.start.row;\n });\n return foldLine;\n };\n this.addFold = function (placeholder, range) {\n var foldData = this.$foldData;\n var added = false;\n var fold;\n if (placeholder instanceof Fold)\n fold = placeholder;\n else {\n fold = new Fold(range, placeholder);\n fold.collapseChildren = range.collapseChildren;\n }\n this.$clipRangeToDocument(fold.range);\n var startRow = fold.start.row;\n var startColumn = fold.start.column;\n var endRow = fold.end.row;\n var endColumn = fold.end.column;\n var startFold = this.getFoldAt(startRow, startColumn, 1);\n var endFold = this.getFoldAt(endRow, endColumn, -1);\n if (startFold && endFold == startFold)\n return startFold.addSubFold(fold);\n if (startFold && !startFold.range.isStart(startRow, startColumn))\n this.removeFold(startFold);\n if (endFold && !endFold.range.isEnd(endRow, endColumn))\n this.removeFold(endFold);\n var folds = this.getFoldsInRange(fold.range);\n if (folds.length > 0) {\n this.removeFolds(folds);\n if (!fold.collapseChildren) {\n folds.forEach(function (subFold) {\n fold.addSubFold(subFold);\n });\n }\n }\n for (var i = 0; i < foldData.length; i++) {\n var foldLine = foldData[i];\n if (endRow == foldLine.start.row) {\n foldLine.addFold(fold);\n added = true;\n break;\n }\n else if (startRow == foldLine.end.row) {\n foldLine.addFold(fold);\n added = true;\n if (!fold.sameRow) {\n var foldLineNext = foldData[i + 1];\n if (foldLineNext && foldLineNext.start.row == endRow) {\n foldLine.merge(foldLineNext);\n break;\n }\n }\n break;\n }\n else if (endRow <= foldLine.start.row) {\n break;\n }\n }\n if (!added)\n foldLine = this.$addFoldLine(new FoldLine(this.$foldData, fold));\n if (this.$useWrapMode)\n this.$updateWrapData(foldLine.start.row, foldLine.start.row);\n else\n this.$updateRowLengthCache(foldLine.start.row, foldLine.start.row);\n this.$modified = true;\n this._signal(\"changeFold\", { data: fold, action: \"add\" });\n return fold;\n };\n this.addFolds = function (folds) {\n folds.forEach(function (fold) {\n this.addFold(fold);\n }, this);\n };\n this.removeFold = function (fold) {\n var foldLine = fold.foldLine;\n var startRow = foldLine.start.row;\n var endRow = foldLine.end.row;\n var foldLines = this.$foldData;\n var folds = foldLine.folds;\n if (folds.length == 1) {\n foldLines.splice(foldLines.indexOf(foldLine), 1);\n }\n else \n if (foldLine.range.isEnd(fold.end.row, fold.end.column)) {\n folds.pop();\n foldLine.end.row = folds[folds.length - 1].end.row;\n foldLine.end.column = folds[folds.length - 1].end.column;\n }\n else \n if (foldLine.range.isStart(fold.start.row, fold.start.column)) {\n folds.shift();\n foldLine.start.row = folds[0].start.row;\n foldLine.start.column = folds[0].start.column;\n }\n else \n if (fold.sameRow) {\n folds.splice(folds.indexOf(fold), 1);\n }\n else \n {\n var newFoldLine = foldLine.split(fold.start.row, fold.start.column);\n folds = newFoldLine.folds;\n folds.shift();\n newFoldLine.start.row = folds[0].start.row;\n newFoldLine.start.column = folds[0].start.column;\n }\n if (!this.$updating) {\n if (this.$useWrapMode)\n this.$updateWrapData(startRow, endRow);\n else\n this.$updateRowLengthCache(startRow, endRow);\n }\n this.$modified = true;\n this._signal(\"changeFold\", { data: fold, action: \"remove\" });\n };\n this.removeFolds = function (folds) {\n var cloneFolds = [];\n for (var i = 0; i < folds.length; i++) {\n cloneFolds.push(folds[i]);\n }\n cloneFolds.forEach(function (fold) {\n this.removeFold(fold);\n }, this);\n this.$modified = true;\n };\n this.expandFold = function (fold) {\n this.removeFold(fold);\n fold.subFolds.forEach(function (subFold) {\n fold.restoreRange(subFold);\n this.addFold(subFold);\n }, this);\n if (fold.collapseChildren > 0) {\n this.foldAll(fold.start.row + 1, fold.end.row, fold.collapseChildren - 1);\n }\n fold.subFolds = [];\n };\n this.expandFolds = function (folds) {\n folds.forEach(function (fold) {\n this.expandFold(fold);\n }, this);\n };\n this.unfold = function (location, expandInner) {\n var range, folds;\n if (location == null) {\n range = new Range(0, 0, this.getLength(), 0);\n if (expandInner == null)\n expandInner = true;\n }\n else if (typeof location == \"number\") {\n range = new Range(location, 0, location, this.getLine(location).length);\n }\n else if (\"row\" in location) {\n range = Range.fromPoints(location, location);\n }\n else if (Array.isArray(location)) {\n folds = [];\n location.forEach(function (range) {\n folds = folds.concat(this.unfold(range));\n }, this);\n return folds;\n }\n else {\n range = location;\n }\n folds = this.getFoldsInRangeList(range);\n var outermostFolds = folds;\n while (folds.length == 1\n && Range.comparePoints(folds[0].start, range.start) < 0\n && Range.comparePoints(folds[0].end, range.end) > 0) {\n this.expandFolds(folds);\n folds = this.getFoldsInRangeList(range);\n }\n if (expandInner != false) {\n this.removeFolds(folds);\n }\n else {\n this.expandFolds(folds);\n }\n if (outermostFolds.length)\n return outermostFolds;\n };\n this.isRowFolded = function (docRow, startFoldRow) {\n return !!this.getFoldLine(docRow, startFoldRow);\n };\n this.getRowFoldEnd = function (docRow, startFoldRow) {\n var foldLine = this.getFoldLine(docRow, startFoldRow);\n return foldLine ? foldLine.end.row : docRow;\n };\n this.getRowFoldStart = function (docRow, startFoldRow) {\n var foldLine = this.getFoldLine(docRow, startFoldRow);\n return foldLine ? foldLine.start.row : docRow;\n };\n this.getFoldDisplayLine = function (foldLine, endRow, endColumn, startRow, startColumn) {\n if (startRow == null)\n startRow = foldLine.start.row;\n if (startColumn == null)\n startColumn = 0;\n if (endRow == null)\n endRow = foldLine.end.row;\n if (endColumn == null)\n endColumn = this.getLine(endRow).length;\n var doc = this.doc;\n var textLine = \"\";\n foldLine.walk(function (placeholder, row, column, lastColumn) {\n if (row < startRow)\n return;\n if (row == startRow) {\n if (column < startColumn)\n return;\n lastColumn = Math.max(startColumn, lastColumn);\n }\n if (placeholder != null) {\n textLine += placeholder;\n }\n else {\n textLine += doc.getLine(row).substring(lastColumn, column);\n }\n }, endRow, endColumn);\n return textLine;\n };\n this.getDisplayLine = function (row, endColumn, startRow, startColumn) {\n var foldLine = this.getFoldLine(row);\n if (!foldLine) {\n var line;\n line = this.doc.getLine(row);\n return line.substring(startColumn || 0, endColumn || line.length);\n }\n else {\n return this.getFoldDisplayLine(foldLine, row, endColumn, startRow, startColumn);\n }\n };\n this.$cloneFoldData = function () {\n var fd = [];\n fd = this.$foldData.map(function (foldLine) {\n var folds = foldLine.folds.map(function (fold) {\n return fold.clone();\n });\n return new FoldLine(fd, folds);\n });\n return fd;\n };\n this.toggleFold = function (tryToUnfold) {\n var selection = this.selection;\n var range = selection.getRange();\n var fold;\n var bracketPos;\n if (range.isEmpty()) {\n var cursor = range.start;\n fold = this.getFoldAt(cursor.row, cursor.column);\n if (fold) {\n this.expandFold(fold);\n return;\n }\n else if (bracketPos = this.findMatchingBracket(cursor)) {\n if (range.comparePoint(bracketPos) == 1) {\n range.end = bracketPos;\n }\n else {\n range.start = bracketPos;\n range.start.column++;\n range.end.column--;\n }\n }\n else if (bracketPos = this.findMatchingBracket({ row: cursor.row, column: cursor.column + 1 })) {\n if (range.comparePoint(bracketPos) == 1)\n range.end = bracketPos;\n else\n range.start = bracketPos;\n range.start.column++;\n }\n else {\n range = this.getCommentFoldRange(cursor.row, cursor.column) || range;\n }\n }\n else {\n var folds = this.getFoldsInRange(range);\n if (tryToUnfold && folds.length) {\n this.expandFolds(folds);\n return;\n }\n else if (folds.length == 1) {\n fold = folds[0];\n }\n }\n if (!fold)\n fold = this.getFoldAt(range.start.row, range.start.column);\n if (fold && fold.range.toString() == range.toString()) {\n this.expandFold(fold);\n return;\n }\n var placeholder = \"...\";\n if (!range.isMultiLine()) {\n placeholder = this.getTextRange(range);\n if (placeholder.length < 4)\n return;\n placeholder = placeholder.trim().substring(0, 2) + \"..\";\n }\n this.addFold(placeholder, range);\n };\n this.getCommentFoldRange = function (row, column, dir) {\n var iterator = new TokenIterator(this, row, column);\n var token = iterator.getCurrentToken();\n var type = token && token.type;\n if (token && /^comment|string/.test(type)) {\n type = type.match(/comment|string/)[0];\n if (type == \"comment\")\n type += \"|doc-start|\\\\.doc\";\n var re = new RegExp(type);\n var range = new Range();\n if (dir != 1) {\n do {\n token = iterator.stepBackward();\n } while (token && re.test(token.type) && !/^comment.end/.test(token.type));\n token = iterator.stepForward();\n }\n range.start.row = iterator.getCurrentTokenRow();\n range.start.column = iterator.getCurrentTokenColumn() + (/^comment.start/.test(token.type) ? token.value.length : 2);\n iterator = new TokenIterator(this, row, column);\n if (dir != -1) {\n var lastRow = -1;\n do {\n token = iterator.stepForward();\n if (lastRow == -1) {\n var state = this.getState(iterator.$row);\n if (!re.test(state))\n lastRow = iterator.$row;\n }\n else if (iterator.$row > lastRow) {\n break;\n }\n } while (token && re.test(token.type) && !/^comment.start/.test(token.type));\n token = iterator.stepBackward();\n }\n else\n token = iterator.getCurrentToken();\n range.end.row = iterator.getCurrentTokenRow();\n range.end.column = iterator.getCurrentTokenColumn();\n if (!/^comment.end/.test(token.type)) {\n range.end.column += token.value.length - 2;\n }\n return range;\n }\n };\n this.foldAll = function (startRow, endRow, depth, test) {\n if (depth == undefined)\n depth = 100000; // JSON.stringify doesn't hanle Infinity\n var foldWidgets = this.foldWidgets;\n if (!foldWidgets)\n return; // mode doesn't support folding\n endRow = endRow || this.getLength();\n startRow = startRow || 0;\n for (var row = startRow; row < endRow; row++) {\n if (foldWidgets[row] == null)\n foldWidgets[row] = this.getFoldWidget(row);\n if (foldWidgets[row] != \"start\")\n continue;\n if (test && !test(row))\n continue;\n var range = this.getFoldWidgetRange(row);\n if (range && range.isMultiLine()\n && range.end.row <= endRow\n && range.start.row >= startRow) {\n row = range.end.row;\n range.collapseChildren = depth;\n this.addFold(\"...\", range);\n }\n }\n };\n this.foldToLevel = function (level) {\n this.foldAll();\n while (level-- > 0)\n this.unfold(null, false);\n };\n this.foldAllComments = function () {\n var session = this;\n this.foldAll(null, null, null, function (row) {\n var tokens = session.getTokens(row);\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n if (token.type == \"text\" && /^\\s+$/.test(token.value))\n continue;\n if (/comment/.test(token.type))\n return true;\n return false;\n }\n });\n };\n this.$foldStyles = {\n \"manual\": 1,\n \"markbegin\": 1,\n \"markbeginend\": 1\n };\n this.$foldStyle = \"markbegin\";\n this.setFoldStyle = function (style) {\n if (!this.$foldStyles[style])\n throw new Error(\"invalid fold style: \" + style + \"[\" + Object.keys(this.$foldStyles).join(\", \") + \"]\");\n if (this.$foldStyle == style)\n return;\n this.$foldStyle = style;\n if (style == \"manual\")\n this.unfold();\n var mode = this.$foldMode;\n this.$setFolding(null);\n this.$setFolding(mode);\n };\n this.$setFolding = function (foldMode) {\n if (this.$foldMode == foldMode)\n return;\n this.$foldMode = foldMode;\n this.off('change', this.$updateFoldWidgets);\n this.off('tokenizerUpdate', this.$tokenizerUpdateFoldWidgets);\n this._signal(\"changeAnnotation\");\n if (!foldMode || this.$foldStyle == \"manual\") {\n this.foldWidgets = null;\n return;\n }\n this.foldWidgets = [];\n this.getFoldWidget = foldMode.getFoldWidget.bind(foldMode, this, this.$foldStyle);\n this.getFoldWidgetRange = foldMode.getFoldWidgetRange.bind(foldMode, this, this.$foldStyle);\n this.$updateFoldWidgets = this.updateFoldWidgets.bind(this);\n this.$tokenizerUpdateFoldWidgets = this.tokenizerUpdateFoldWidgets.bind(this);\n this.on('change', this.$updateFoldWidgets);\n this.on('tokenizerUpdate', this.$tokenizerUpdateFoldWidgets);\n };\n this.getParentFoldRangeData = function (row, ignoreCurrent) {\n var fw = this.foldWidgets;\n if (!fw || (ignoreCurrent && fw[row]))\n return {};\n var i = row - 1, firstRange;\n while (i >= 0) {\n var c = fw[i];\n if (c == null)\n c = fw[i] = this.getFoldWidget(i);\n if (c == \"start\") {\n var range = this.getFoldWidgetRange(i);\n if (!firstRange)\n firstRange = range;\n if (range && range.end.row >= row)\n break;\n }\n i--;\n }\n return {\n range: i !== -1 && range,\n firstRange: firstRange\n };\n };\n this.onFoldWidgetClick = function (row, e) {\n if (e instanceof MouseEvent)\n e = e.domEvent;\n var options = {\n children: e.shiftKey,\n all: e.ctrlKey || e.metaKey,\n siblings: e.altKey\n };\n var range = this.$toggleFoldWidget(row, options);\n if (!range) {\n var el = (e.target || e.srcElement);\n if (el && /ace_fold-widget/.test(el.className))\n el.className += \" ace_invalid\";\n }\n };\n this.$toggleFoldWidget = function (row, options) {\n if (!this.getFoldWidget)\n return;\n var type = this.getFoldWidget(row);\n var line = this.getLine(row);\n var dir = type === \"end\" ? -1 : 1;\n var fold = this.getFoldAt(row, dir === -1 ? 0 : line.length, dir);\n if (fold) {\n if (options.children || options.all)\n this.removeFold(fold);\n else\n this.expandFold(fold);\n return fold;\n }\n var range = this.getFoldWidgetRange(row, true);\n if (range && !range.isMultiLine()) {\n fold = this.getFoldAt(range.start.row, range.start.column, 1);\n if (fold && range.isEqual(fold.range)) {\n this.removeFold(fold);\n return fold;\n }\n }\n if (options.siblings) {\n var data = this.getParentFoldRangeData(row);\n if (data.range) {\n var startRow = data.range.start.row + 1;\n var endRow = data.range.end.row;\n }\n this.foldAll(startRow, endRow, options.all ? 10000 : 0);\n }\n else if (options.children) {\n endRow = range ? range.end.row : this.getLength();\n this.foldAll(row + 1, endRow, options.all ? 10000 : 0);\n }\n else if (range) {\n if (options.all)\n range.collapseChildren = 10000;\n this.addFold(\"...\", range);\n }\n return range;\n };\n this.toggleFoldWidget = function (toggleParent) {\n var row = this.selection.getCursor().row;\n row = this.getRowFoldStart(row);\n var range = this.$toggleFoldWidget(row, {});\n if (range)\n return;\n var data = this.getParentFoldRangeData(row, true);\n range = data.range || data.firstRange;\n if (range) {\n row = range.start.row;\n var fold = this.getFoldAt(row, this.getLine(row).length, 1);\n if (fold) {\n this.removeFold(fold);\n }\n else {\n this.addFold(\"...\", range);\n }\n }\n };\n this.updateFoldWidgets = function (delta) {\n var firstRow = delta.start.row;\n var len = delta.end.row - firstRow;\n if (len === 0) {\n this.foldWidgets[firstRow] = null;\n }\n else if (delta.action == 'remove') {\n this.foldWidgets.splice(firstRow, len + 1, null);\n }\n else {\n var args = Array(len + 1);\n args.unshift(firstRow, 1);\n this.foldWidgets.splice.apply(this.foldWidgets, args);\n }\n };\n this.tokenizerUpdateFoldWidgets = function (e) {\n var rows = e.data;\n if (rows.first != rows.last) {\n if (this.foldWidgets.length > rows.first)\n this.foldWidgets.splice(rows.first, this.foldWidgets.length);\n }\n };\n}\nexports.Folding = Folding;\n\n});\n\nace.define(\"ace/edit_session/bracket_match\",[\"require\",\"exports\",\"module\",\"ace/token_iterator\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar TokenIterator = require(\"../token_iterator\").TokenIterator;\nvar Range = require(\"../range\").Range;\nfunction BracketMatch() {\n this.findMatchingBracket = function (position, chr) {\n if (position.column == 0)\n return null;\n var charBeforeCursor = chr || this.getLine(position.row).charAt(position.column - 1);\n if (charBeforeCursor == \"\")\n return null;\n var match = charBeforeCursor.match(/([\\(\\[\\{])|([\\)\\]\\}])/);\n if (!match)\n return null;\n if (match[1])\n return this.$findClosingBracket(match[1], position);\n else\n return this.$findOpeningBracket(match[2], position);\n };\n this.getBracketRange = function (pos) {\n var line = this.getLine(pos.row);\n var before = true, range;\n var chr = line.charAt(pos.column - 1);\n var match = chr && chr.match(/([\\(\\[\\{])|([\\)\\]\\}])/);\n if (!match) {\n chr = line.charAt(pos.column);\n pos = { row: pos.row, column: pos.column + 1 };\n match = chr && chr.match(/([\\(\\[\\{])|([\\)\\]\\}])/);\n before = false;\n }\n if (!match)\n return null;\n if (match[1]) {\n var bracketPos = this.$findClosingBracket(match[1], pos);\n if (!bracketPos)\n return null;\n range = Range.fromPoints(pos, bracketPos);\n if (!before) {\n range.end.column++;\n range.start.column--;\n }\n range.cursor = range.end;\n }\n else {\n var bracketPos = this.$findOpeningBracket(match[2], pos);\n if (!bracketPos)\n return null;\n range = Range.fromPoints(bracketPos, pos);\n if (!before) {\n range.start.column++;\n range.end.column--;\n }\n range.cursor = range.start;\n }\n return range;\n };\n this.getMatchingBracketRanges = function (pos, isBackwards) {\n var line = this.getLine(pos.row);\n var bracketsRegExp = /([\\(\\[\\{])|([\\)\\]\\}])/;\n var chr = !isBackwards && line.charAt(pos.column - 1);\n var match = chr && chr.match(bracketsRegExp);\n if (!match) {\n chr = (isBackwards === undefined || isBackwards) && line.charAt(pos.column);\n pos = {\n row: pos.row,\n column: pos.column + 1\n };\n match = chr && chr.match(bracketsRegExp);\n }\n if (!match)\n return null;\n var startRange = new Range(pos.row, pos.column - 1, pos.row, pos.column);\n var bracketPos = match[1] ? this.$findClosingBracket(match[1], pos)\n : this.$findOpeningBracket(match[2], pos);\n if (!bracketPos)\n return [startRange];\n var endRange = new Range(bracketPos.row, bracketPos.column, bracketPos.row, bracketPos.column + 1);\n return [startRange, endRange];\n };\n this.$brackets = {\n \")\": \"(\",\n \"(\": \")\",\n \"]\": \"[\",\n \"[\": \"]\",\n \"{\": \"}\",\n \"}\": \"{\",\n \"<\": \">\",\n \">\": \"<\"\n };\n this.$findOpeningBracket = function (bracket, position, typeRe) {\n var openBracket = this.$brackets[bracket];\n var depth = 1;\n var iterator = new TokenIterator(this, position.row, position.column);\n var token = iterator.getCurrentToken();\n if (!token)\n token = iterator.stepForward();\n if (!token)\n return;\n if (!typeRe) {\n typeRe = new RegExp(\"(\\\\.?\" +\n token.type.replace(\".\", \"\\\\.\").replace(\"rparen\", \".paren\")\n .replace(/\\b(?:end)\\b/, \"(?:start|begin|end)\")\n .replace(/-close\\b/, \"-(close|open)\")\n + \")+\");\n }\n var valueIndex = position.column - iterator.getCurrentTokenColumn() - 2;\n var value = token.value;\n while (true) {\n while (valueIndex >= 0) {\n var chr = value.charAt(valueIndex);\n if (chr == openBracket) {\n depth -= 1;\n if (depth == 0) {\n return { row: iterator.getCurrentTokenRow(),\n column: valueIndex + iterator.getCurrentTokenColumn() };\n }\n }\n else if (chr == bracket) {\n depth += 1;\n }\n valueIndex -= 1;\n }\n do {\n token = iterator.stepBackward();\n } while (token && !typeRe.test(token.type));\n if (token == null)\n break;\n value = token.value;\n valueIndex = value.length - 1;\n }\n return null;\n };\n this.$findClosingBracket = function (bracket, position, typeRe) {\n var closingBracket = this.$brackets[bracket];\n var depth = 1;\n var iterator = new TokenIterator(this, position.row, position.column);\n var token = iterator.getCurrentToken();\n if (!token)\n token = iterator.stepForward();\n if (!token)\n return;\n if (!typeRe) {\n typeRe = new RegExp(\"(\\\\.?\" +\n token.type.replace(\".\", \"\\\\.\").replace(\"lparen\", \".paren\")\n .replace(/\\b(?:start|begin)\\b/, \"(?:start|begin|end)\")\n .replace(/-open\\b/, \"-(close|open)\")\n + \")+\");\n }\n var valueIndex = position.column - iterator.getCurrentTokenColumn();\n while (true) {\n var value = token.value;\n var valueLength = value.length;\n while (valueIndex < valueLength) {\n var chr = value.charAt(valueIndex);\n if (chr == closingBracket) {\n depth -= 1;\n if (depth == 0) {\n return { row: iterator.getCurrentTokenRow(),\n column: valueIndex + iterator.getCurrentTokenColumn() };\n }\n }\n else if (chr == bracket) {\n depth += 1;\n }\n valueIndex += 1;\n }\n do {\n token = iterator.stepForward();\n } while (token && !typeRe.test(token.type));\n if (token == null)\n break;\n valueIndex = 0;\n }\n return null;\n };\n this.getMatchingTags = function (pos) {\n var iterator = new TokenIterator(this, pos.row, pos.column);\n var token = this.$findTagName(iterator);\n if (!token)\n return;\n var prevToken = iterator.stepBackward();\n if (prevToken.value === '<') {\n return this.$findClosingTag(iterator, token);\n }\n else {\n return this.$findOpeningTag(iterator, token);\n }\n };\n this.$findTagName = function (iterator) {\n var token = iterator.getCurrentToken();\n var found = false;\n var backward = false;\n if (token && token.type.indexOf('tag-name') === -1) {\n do {\n if (backward)\n token = iterator.stepBackward();\n else\n token = iterator.stepForward();\n if (token) {\n if (token.value === \"/>\") {\n backward = true;\n }\n else if (token.type.indexOf('tag-name') !== -1) {\n found = true;\n }\n }\n } while (token && !found);\n }\n return token;\n };\n this.$findClosingTag = function (iterator, token) {\n var prevToken;\n var currentTag = token.value;\n var tag = token.value;\n var depth = 0;\n var openTagStart = new Range(iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn(), iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() + 1);\n token = iterator.stepForward();\n var openTagName = new Range(iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn(), iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() + token.value.length);\n var foundOpenTagEnd = false;\n do {\n prevToken = token;\n token = iterator.stepForward();\n if (token) {\n if (token.value === '>' && !foundOpenTagEnd) {\n var openTagEnd = new Range(iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn(), iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() + 1); //Range for `>`\n foundOpenTagEnd = true;\n }\n if (token.type.indexOf('tag-name') !== -1) {\n currentTag = token.value;\n if (tag === currentTag) {\n if (prevToken.value === '<') {\n depth++;\n }\n else if (prevToken.value === '') {\n var closeTagEnd = new Range(iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn(), iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() + 1); //Range for >\n }\n else {\n return;\n }\n }\n }\n }\n }\n else if (tag === currentTag && token.value === '/>') { // self-closing tag\n depth--;\n if (depth < 0) { //found self-closing tag end\n var closeTagStart = new Range(iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn(), iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() + 2);\n var closeTagName = closeTagStart;\n var closeTagEnd = closeTagName;\n var openTagEnd = new Range(openTagName.end.row, openTagName.end.column, openTagName.end.row, openTagName.end.column + 1);\n }\n }\n }\n } while (token && depth >= 0);\n if (openTagStart && openTagEnd && closeTagStart && closeTagEnd && openTagName && closeTagName) {\n return {\n openTag: new Range(openTagStart.start.row, openTagStart.start.column, openTagEnd.end.row, openTagEnd.end.column),\n closeTag: new Range(closeTagStart.start.row, closeTagStart.start.column, closeTagEnd.end.row, closeTagEnd.end.column),\n openTagName: openTagName,\n closeTagName: closeTagName\n };\n }\n };\n this.$findOpeningTag = function (iterator, token) {\n var prevToken = iterator.getCurrentToken();\n var tag = token.value;\n var depth = 0;\n var startRow = iterator.getCurrentTokenRow();\n var startColumn = iterator.getCurrentTokenColumn();\n var endColumn = startColumn + 2;\n var closeTagStart = new Range(startRow, startColumn, startRow, endColumn); //Range for \")\n return;\n var closeTagEnd = new Range(iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn(), iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() + 1); //Range for >\n iterator.stepBackward();\n iterator.stepBackward();\n do {\n token = prevToken;\n startRow = iterator.getCurrentTokenRow();\n startColumn = iterator.getCurrentTokenColumn();\n endColumn = startColumn + token.value.length;\n prevToken = iterator.stepBackward();\n if (token) {\n if (token.type.indexOf('tag-name') !== -1) {\n if (tag === token.value) {\n if (prevToken.value === '<') {\n depth++;\n if (depth > 0) { //found opening tag\n var openTagName = new Range(startRow, startColumn, startRow, endColumn);\n var openTagStart = new Range(iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn(), iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() + 1); //Range for <\n do {\n token = iterator.stepForward();\n } while (token && token.value !== '>');\n var openTagEnd = new Range(iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn(), iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() + 1); //Range for >\n }\n }\n else if (prevToken.value === '') { // self-closing tag\n var stepCount = 0;\n var tmpToken = prevToken;\n while (tmpToken) {\n if (tmpToken.type.indexOf('tag-name') !== -1 && tmpToken.value === tag) {\n depth--;\n break;\n }\n else if (tmpToken.value === '<') {\n break;\n }\n tmpToken = iterator.stepBackward();\n stepCount++;\n }\n for (var i = 0; i < stepCount; i++) {\n iterator.stepForward();\n }\n }\n }\n } while (prevToken && depth <= 0);\n if (openTagStart && openTagEnd && closeTagStart && closeTagEnd && openTagName && closeTagName) {\n return {\n openTag: new Range(openTagStart.start.row, openTagStart.start.column, openTagEnd.end.row, openTagEnd.end.column),\n closeTag: new Range(closeTagStart.start.row, closeTagStart.start.column, closeTagEnd.end.row, closeTagEnd.end.column),\n openTagName: openTagName,\n closeTagName: closeTagName\n };\n }\n };\n}\nexports.BracketMatch = BracketMatch;\n\n});\n\nace.define(\"ace/edit_session\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/bidihandler\",\"ace/config\",\"ace/lib/event_emitter\",\"ace/selection\",\"ace/mode/text\",\"ace/range\",\"ace/document\",\"ace/background_tokenizer\",\"ace/search_highlight\",\"ace/undomanager\",\"ace/edit_session/folding\",\"ace/edit_session/bracket_match\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"./lib/oop\");\nvar lang = require(\"./lib/lang\");\nvar BidiHandler = require(\"./bidihandler\").BidiHandler;\nvar config = require(\"./config\");\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar Selection = require(\"./selection\").Selection;\nvar TextMode = require(\"./mode/text\").Mode;\nvar Range = require(\"./range\").Range;\nvar Document = require(\"./document\").Document;\nvar BackgroundTokenizer = require(\"./background_tokenizer\").BackgroundTokenizer;\nvar SearchHighlight = require(\"./search_highlight\").SearchHighlight;\nvar UndoManager = require(\"./undomanager\").UndoManager;\nvar EditSession = /** @class */ (function () {\n function EditSession(text, mode) {\n this.$breakpoints = [];\n this.$decorations = [];\n this.$frontMarkers = {};\n this.$backMarkers = {};\n this.$markerId = 1;\n this.$undoSelect = true;\n this.$foldData = [];\n this.id = \"session\" + (++EditSession.$uid);\n this.$foldData.toString = function () {\n return this.join(\"\\n\");\n };\n this.bgTokenizer = new BackgroundTokenizer((new TextMode()).getTokenizer(), this);\n var _self = this;\n this.bgTokenizer.on(\"update\", function (e) {\n _self._signal(\"tokenizerUpdate\", e);\n });\n this.on(\"changeFold\", this.onChangeFold.bind(this));\n this.$onChange = this.onChange.bind(this);\n if (typeof text != \"object\" || !text.getLine)\n text = new Document(text);\n this.setDocument(text);\n this.selection = new Selection(this);\n this.$bidiHandler = new BidiHandler(this);\n config.resetOptions(this);\n this.setMode(mode);\n config._signal(\"session\", this);\n this.destroyed = false;\n }\n EditSession.prototype.setDocument = function (doc) {\n if (this.doc)\n this.doc.off(\"change\", this.$onChange);\n this.doc = doc;\n doc.on(\"change\", this.$onChange, true);\n this.bgTokenizer.setDocument(this.getDocument());\n this.resetCaches();\n };\n EditSession.prototype.getDocument = function () {\n return this.doc;\n };\n EditSession.prototype.$resetRowCache = function (docRow) {\n if (!docRow) {\n this.$docRowCache = [];\n this.$screenRowCache = [];\n return;\n }\n var l = this.$docRowCache.length;\n var i = this.$getRowCacheIndex(this.$docRowCache, docRow) + 1;\n if (l > i) {\n this.$docRowCache.splice(i, l);\n this.$screenRowCache.splice(i, l);\n }\n };\n EditSession.prototype.$getRowCacheIndex = function (cacheArray, val) {\n var low = 0;\n var hi = cacheArray.length - 1;\n while (low <= hi) {\n var mid = (low + hi) >> 1;\n var c = cacheArray[mid];\n if (val > c)\n low = mid + 1;\n else if (val < c)\n hi = mid - 1;\n else\n return mid;\n }\n return low - 1;\n };\n EditSession.prototype.resetCaches = function () {\n this.$modified = true;\n this.$wrapData = [];\n this.$rowLengthCache = [];\n this.$resetRowCache(0);\n if (!this.destroyed)\n this.bgTokenizer.start(0);\n };\n EditSession.prototype.onChangeFold = function (e) {\n var fold = e.data;\n this.$resetRowCache(fold.start.row);\n };\n EditSession.prototype.onChange = function (delta) {\n this.$modified = true;\n this.$bidiHandler.onChange(delta);\n this.$resetRowCache(delta.start.row);\n var removedFolds = this.$updateInternalDataOnChange(delta);\n if (!this.$fromUndo && this.$undoManager) {\n if (removedFolds && removedFolds.length) {\n this.$undoManager.add({\n action: \"removeFolds\",\n folds: removedFolds\n }, this.mergeUndoDeltas);\n this.mergeUndoDeltas = true;\n }\n this.$undoManager.add(delta, this.mergeUndoDeltas);\n this.mergeUndoDeltas = true;\n this.$informUndoManager.schedule();\n }\n this.bgTokenizer.$updateOnChange(delta);\n this._signal(\"change\", delta);\n };\n EditSession.prototype.setValue = function (text) {\n this.doc.setValue(text);\n this.selection.moveTo(0, 0);\n this.$resetRowCache(0);\n this.setUndoManager(this.$undoManager);\n this.getUndoManager().reset();\n };\n EditSession.fromJSON = function (session) {\n session = JSON.parse(session);\n var undoManager = new UndoManager();\n undoManager.$undoStack = session.history.undo;\n undoManager.$redoStack = session.history.redo;\n undoManager.mark = session.history.mark;\n undoManager.$rev = session.history.rev;\n var editSession = new EditSession(session.value);\n session.folds.forEach(function (fold) {\n editSession.addFold(\"...\", Range.fromPoints(fold.start, fold.end));\n });\n editSession.setAnnotations(session.annotations);\n editSession.setBreakpoints(session.breakpoints);\n editSession.setMode(session.mode);\n editSession.setScrollLeft(session.scrollLeft);\n editSession.setScrollTop(session.scrollTop);\n editSession.setUndoManager(undoManager);\n editSession.selection.fromJSON(session.selection);\n return editSession;\n };\n EditSession.prototype.toJSON = function () {\n return {\n annotations: this.$annotations,\n breakpoints: this.$breakpoints,\n folds: this.getAllFolds().map(function (fold) {\n return fold.range;\n }),\n history: this.getUndoManager(),\n mode: this.$mode.$id,\n scrollLeft: this.$scrollLeft,\n scrollTop: this.$scrollTop,\n selection: this.selection.toJSON(),\n value: this.doc.getValue()\n };\n };\n EditSession.prototype.toString = function () {\n return this.doc.getValue();\n };\n EditSession.prototype.getSelection = function () {\n return this.selection;\n };\n EditSession.prototype.getState = function (row) {\n return this.bgTokenizer.getState(row);\n };\n EditSession.prototype.getTokens = function (row) {\n return this.bgTokenizer.getTokens(row);\n };\n EditSession.prototype.getTokenAt = function (row, column) {\n var tokens = this.bgTokenizer.getTokens(row);\n var token, c = 0;\n if (column == null) {\n var i = tokens.length - 1;\n c = this.getLine(row).length;\n }\n else {\n for (var i = 0; i < tokens.length; i++) {\n c += tokens[i].value.length;\n if (c >= column)\n break;\n }\n }\n token = tokens[i];\n if (!token)\n return null;\n token.index = i;\n token.start = c - token.value.length;\n return token;\n };\n EditSession.prototype.setUndoManager = function (undoManager) {\n this.$undoManager = undoManager;\n if (this.$informUndoManager)\n this.$informUndoManager.cancel();\n if (undoManager) {\n var self = this;\n undoManager.addSession(this);\n this.$syncInformUndoManager = function () {\n self.$informUndoManager.cancel();\n self.mergeUndoDeltas = false;\n };\n this.$informUndoManager = lang.delayedCall(this.$syncInformUndoManager);\n }\n else {\n this.$syncInformUndoManager = function () { };\n }\n };\n EditSession.prototype.markUndoGroup = function () {\n if (this.$syncInformUndoManager)\n this.$syncInformUndoManager();\n };\n EditSession.prototype.getUndoManager = function () {\n return this.$undoManager || this.$defaultUndoManager;\n };\n EditSession.prototype.getTabString = function () {\n if (this.getUseSoftTabs()) {\n return lang.stringRepeat(\" \", this.getTabSize());\n }\n else {\n return \"\\t\";\n }\n };\n EditSession.prototype.setUseSoftTabs = function (val) {\n this.setOption(\"useSoftTabs\", val);\n };\n EditSession.prototype.getUseSoftTabs = function () {\n return this.$useSoftTabs && !this.$mode.$indentWithTabs;\n };\n EditSession.prototype.setTabSize = function (tabSize) {\n this.setOption(\"tabSize\", tabSize);\n };\n EditSession.prototype.getTabSize = function () {\n return this.$tabSize;\n };\n EditSession.prototype.isTabStop = function (position) {\n return this.$useSoftTabs && (position.column % this.$tabSize === 0);\n };\n EditSession.prototype.setNavigateWithinSoftTabs = function (navigateWithinSoftTabs) {\n this.setOption(\"navigateWithinSoftTabs\", navigateWithinSoftTabs);\n };\n EditSession.prototype.getNavigateWithinSoftTabs = function () {\n return this.$navigateWithinSoftTabs;\n };\n EditSession.prototype.setOverwrite = function (overwrite) {\n this.setOption(\"overwrite\", overwrite);\n };\n EditSession.prototype.getOverwrite = function () {\n return this.$overwrite;\n };\n EditSession.prototype.toggleOverwrite = function () {\n this.setOverwrite(!this.$overwrite);\n };\n EditSession.prototype.addGutterDecoration = function (row, className) {\n if (!this.$decorations[row])\n this.$decorations[row] = \"\";\n this.$decorations[row] += \" \" + className;\n this._signal(\"changeBreakpoint\", {});\n };\n EditSession.prototype.removeGutterDecoration = function (row, className) {\n this.$decorations[row] = (this.$decorations[row] || \"\").replace(\" \" + className, \"\");\n this._signal(\"changeBreakpoint\", {});\n };\n EditSession.prototype.getBreakpoints = function () {\n return this.$breakpoints;\n };\n EditSession.prototype.setBreakpoints = function (rows) {\n this.$breakpoints = [];\n for (var i = 0; i < rows.length; i++) {\n this.$breakpoints[rows[i]] = \"ace_breakpoint\";\n }\n this._signal(\"changeBreakpoint\", {});\n };\n EditSession.prototype.clearBreakpoints = function () {\n this.$breakpoints = [];\n this._signal(\"changeBreakpoint\", {});\n };\n EditSession.prototype.setBreakpoint = function (row, className) {\n if (className === undefined)\n className = \"ace_breakpoint\";\n if (className)\n this.$breakpoints[row] = className;\n else\n delete this.$breakpoints[row];\n this._signal(\"changeBreakpoint\", {});\n };\n EditSession.prototype.clearBreakpoint = function (row) {\n delete this.$breakpoints[row];\n this._signal(\"changeBreakpoint\", {});\n };\n EditSession.prototype.addMarker = function (range, clazz, type, inFront) {\n var id = this.$markerId++;\n var marker = {\n range: range,\n type: type || \"line\",\n renderer: typeof type == \"function\" ? type : null,\n clazz: clazz,\n inFront: !!inFront,\n id: id\n };\n if (inFront) {\n this.$frontMarkers[id] = marker;\n this._signal(\"changeFrontMarker\");\n }\n else {\n this.$backMarkers[id] = marker;\n this._signal(\"changeBackMarker\");\n }\n return id;\n };\n EditSession.prototype.addDynamicMarker = function (marker, inFront) {\n if (!marker.update)\n return;\n var id = this.$markerId++;\n marker.id = id;\n marker.inFront = !!inFront;\n if (inFront) {\n this.$frontMarkers[id] = marker;\n this._signal(\"changeFrontMarker\");\n }\n else {\n this.$backMarkers[id] = marker;\n this._signal(\"changeBackMarker\");\n }\n return marker;\n };\n EditSession.prototype.removeMarker = function (markerId) {\n var marker = this.$frontMarkers[markerId] || this.$backMarkers[markerId];\n if (!marker)\n return;\n var markers = marker.inFront ? this.$frontMarkers : this.$backMarkers;\n delete (markers[markerId]);\n this._signal(marker.inFront ? \"changeFrontMarker\" : \"changeBackMarker\");\n };\n EditSession.prototype.getMarkers = function (inFront) {\n return inFront ? this.$frontMarkers : this.$backMarkers;\n };\n EditSession.prototype.highlight = function (re) {\n if (!this.$searchHighlight) {\n var highlight = new SearchHighlight(null, \"ace_selected-word\", \"text\");\n this.$searchHighlight = this.addDynamicMarker(highlight);\n }\n this.$searchHighlight.setRegexp(re);\n };\n EditSession.prototype.highlightLines = function (startRow, endRow, clazz, inFront) {\n if (typeof endRow != \"number\") {\n clazz = endRow;\n endRow = startRow;\n }\n if (!clazz)\n clazz = \"ace_step\";\n var range = new Range(startRow, 0, endRow, Infinity);\n range.id = this.addMarker(range, clazz, \"fullLine\", inFront);\n return range;\n };\n EditSession.prototype.setAnnotations = function (annotations) {\n this.$annotations = annotations;\n this._signal(\"changeAnnotation\", {});\n };\n EditSession.prototype.getAnnotations = function () {\n return this.$annotations || [];\n };\n EditSession.prototype.clearAnnotations = function () {\n this.setAnnotations([]);\n };\n EditSession.prototype.$detectNewLine = function (text) {\n var match = text.match(/^.*?(\\r?\\n)/m);\n if (match) {\n this.$autoNewLine = match[1];\n }\n else {\n this.$autoNewLine = \"\\n\";\n }\n };\n EditSession.prototype.getWordRange = function (row, column) {\n var line = this.getLine(row);\n var inToken = false;\n if (column > 0)\n inToken = !!line.charAt(column - 1).match(this.tokenRe);\n if (!inToken)\n inToken = !!line.charAt(column).match(this.tokenRe);\n if (inToken)\n var re = this.tokenRe;\n else if (/^\\s+$/.test(line.slice(column - 1, column + 1)))\n var re = /\\s/;\n else\n var re = this.nonTokenRe;\n var start = column;\n if (start > 0) {\n do {\n start--;\n } while (start >= 0 && line.charAt(start).match(re));\n start++;\n }\n var end = column;\n while (end < line.length && line.charAt(end).match(re)) {\n end++;\n }\n return new Range(row, start, row, end);\n };\n EditSession.prototype.getAWordRange = function (row, column) {\n var wordRange = this.getWordRange(row, column);\n var line = this.getLine(wordRange.end.row);\n while (line.charAt(wordRange.end.column).match(/[ \\t]/)) {\n wordRange.end.column += 1;\n }\n return wordRange;\n };\n EditSession.prototype.setNewLineMode = function (newLineMode) {\n this.doc.setNewLineMode(newLineMode);\n };\n EditSession.prototype.getNewLineMode = function () {\n return this.doc.getNewLineMode();\n };\n EditSession.prototype.setUseWorker = function (useWorker) { this.setOption(\"useWorker\", useWorker); };\n EditSession.prototype.getUseWorker = function () { return this.$useWorker; };\n EditSession.prototype.onReloadTokenizer = function (e) {\n var rows = e.data;\n this.bgTokenizer.start(rows.first);\n this._signal(\"tokenizerUpdate\", e);\n };\n EditSession.prototype.setMode = function (mode, cb) {\n if (mode && typeof mode === \"object\") {\n if (mode.getTokenizer)\n return this.$onChangeMode(mode);\n var options = mode;\n var path = options.path;\n }\n else {\n path = mode || \"ace/mode/text\";\n }\n if (!this.$modes[\"ace/mode/text\"])\n this.$modes[\"ace/mode/text\"] = new TextMode();\n if (this.$modes[path] && !options) {\n this.$onChangeMode(this.$modes[path]);\n cb && cb();\n return;\n }\n this.$modeId = path;\n config.loadModule([\"mode\", path], function (m) {\n if (this.$modeId !== path)\n return cb && cb();\n if (this.$modes[path] && !options) {\n this.$onChangeMode(this.$modes[path]);\n }\n else if (m && m.Mode) {\n m = new m.Mode(options);\n if (!options) {\n this.$modes[path] = m;\n m.$id = path;\n }\n this.$onChangeMode(m);\n }\n cb && cb();\n }.bind(this));\n if (!this.$mode)\n this.$onChangeMode(this.$modes[\"ace/mode/text\"], true);\n };\n EditSession.prototype.$onChangeMode = function (mode, $isPlaceholder) {\n if (!$isPlaceholder)\n this.$modeId = mode.$id;\n if (this.$mode === mode)\n return;\n var oldMode = this.$mode;\n this.$mode = mode;\n this.$stopWorker();\n if (this.$useWorker)\n this.$startWorker();\n var tokenizer = mode.getTokenizer();\n if (tokenizer.on !== undefined) {\n var onReloadTokenizer = this.onReloadTokenizer.bind(this);\n tokenizer.on(\"update\", onReloadTokenizer);\n }\n this.bgTokenizer.setTokenizer(tokenizer);\n this.bgTokenizer.setDocument(this.getDocument());\n this.tokenRe = mode.tokenRe;\n this.nonTokenRe = mode.nonTokenRe;\n if (!$isPlaceholder) {\n if (mode.attachToSession)\n mode.attachToSession(this);\n this.$options.wrapMethod.set.call(this, this.$wrapMethod);\n this.$setFolding(mode.foldingRules);\n this.bgTokenizer.start(0);\n this._emit(\"changeMode\", { oldMode: oldMode, mode: mode });\n }\n };\n EditSession.prototype.$stopWorker = function () {\n if (this.$worker) {\n this.$worker.terminate();\n this.$worker = null;\n }\n };\n EditSession.prototype.$startWorker = function () {\n try {\n this.$worker = this.$mode.createWorker(this);\n }\n catch (e) {\n config.warn(\"Could not load worker\", e);\n this.$worker = null;\n }\n };\n EditSession.prototype.getMode = function () {\n return this.$mode;\n };\n EditSession.prototype.setScrollTop = function (scrollTop) {\n if (this.$scrollTop === scrollTop || isNaN(scrollTop))\n return;\n this.$scrollTop = scrollTop;\n this._signal(\"changeScrollTop\", scrollTop);\n };\n EditSession.prototype.getScrollTop = function () {\n return this.$scrollTop;\n };\n EditSession.prototype.setScrollLeft = function (scrollLeft) {\n if (this.$scrollLeft === scrollLeft || isNaN(scrollLeft))\n return;\n this.$scrollLeft = scrollLeft;\n this._signal(\"changeScrollLeft\", scrollLeft);\n };\n EditSession.prototype.getScrollLeft = function () {\n return this.$scrollLeft;\n };\n EditSession.prototype.getScreenWidth = function () {\n this.$computeWidth();\n if (this.lineWidgets)\n return Math.max(this.getLineWidgetMaxWidth(), this.screenWidth);\n return this.screenWidth;\n };\n EditSession.prototype.getLineWidgetMaxWidth = function () {\n if (this.lineWidgetsWidth != null)\n return this.lineWidgetsWidth;\n var width = 0;\n this.lineWidgets.forEach(function (w) {\n if (w && w.screenWidth > width)\n width = w.screenWidth;\n });\n return this.lineWidgetWidth = width;\n };\n EditSession.prototype.$computeWidth = function (force) {\n if (this.$modified || force) {\n this.$modified = false;\n if (this.$useWrapMode)\n return this.screenWidth = this.$wrapLimit;\n var lines = this.doc.getAllLines();\n var cache = this.$rowLengthCache;\n var longestScreenLine = 0;\n var foldIndex = 0;\n var foldLine = this.$foldData[foldIndex];\n var foldStart = foldLine ? foldLine.start.row : Infinity;\n var len = lines.length;\n for (var i = 0; i < len; i++) {\n if (i > foldStart) {\n i = foldLine.end.row + 1;\n if (i >= len)\n break;\n foldLine = this.$foldData[foldIndex++];\n foldStart = foldLine ? foldLine.start.row : Infinity;\n }\n if (cache[i] == null)\n cache[i] = this.$getStringScreenWidth(lines[i])[0];\n if (cache[i] > longestScreenLine)\n longestScreenLine = cache[i];\n }\n this.screenWidth = longestScreenLine;\n }\n };\n EditSession.prototype.getLine = function (row) {\n return this.doc.getLine(row);\n };\n EditSession.prototype.getLines = function (firstRow, lastRow) {\n return this.doc.getLines(firstRow, lastRow);\n };\n EditSession.prototype.getLength = function () {\n return this.doc.getLength();\n };\n EditSession.prototype.getTextRange = function (range) {\n return this.doc.getTextRange(range || this.selection.getRange());\n };\n EditSession.prototype.insert = function (position, text) {\n return this.doc.insert(position, text);\n };\n EditSession.prototype.remove = function (range) {\n return this.doc.remove(range);\n };\n EditSession.prototype.removeFullLines = function (firstRow, lastRow) {\n return this.doc.removeFullLines(firstRow, lastRow);\n };\n EditSession.prototype.undoChanges = function (deltas, dontSelect) {\n if (!deltas.length)\n return;\n this.$fromUndo = true;\n for (var i = deltas.length - 1; i != -1; i--) {\n var delta = deltas[i];\n if (delta.action == \"insert\" || delta.action == \"remove\") {\n this.doc.revertDelta(delta);\n }\n else if (delta.folds) {\n this.addFolds(delta.folds);\n }\n }\n if (!dontSelect && this.$undoSelect) {\n if (deltas.selectionBefore)\n this.selection.fromJSON(deltas.selectionBefore);\n else\n this.selection.setRange(this.$getUndoSelection(deltas, true));\n }\n this.$fromUndo = false;\n };\n EditSession.prototype.redoChanges = function (deltas, dontSelect) {\n if (!deltas.length)\n return;\n this.$fromUndo = true;\n for (var i = 0; i < deltas.length; i++) {\n var delta = deltas[i];\n if (delta.action == \"insert\" || delta.action == \"remove\") {\n this.doc.$safeApplyDelta(delta);\n }\n }\n if (!dontSelect && this.$undoSelect) {\n if (deltas.selectionAfter)\n this.selection.fromJSON(deltas.selectionAfter);\n else\n this.selection.setRange(this.$getUndoSelection(deltas, false));\n }\n this.$fromUndo = false;\n };\n EditSession.prototype.setUndoSelect = function (enable) {\n this.$undoSelect = enable;\n };\n EditSession.prototype.$getUndoSelection = function (deltas, isUndo) {\n function isInsert(delta) {\n return isUndo ? delta.action !== \"insert\" : delta.action === \"insert\";\n }\n var range, point;\n for (var i = 0; i < deltas.length; i++) {\n var delta = deltas[i];\n if (!delta.start)\n continue; // skip folds\n if (!range) {\n if (isInsert(delta)) {\n range = Range.fromPoints(delta.start, delta.end);\n }\n else {\n range = Range.fromPoints(delta.start, delta.start);\n }\n continue;\n }\n if (isInsert(delta)) {\n point = delta.start;\n if (range.compare(point.row, point.column) == -1) {\n range.setStart(point);\n }\n point = delta.end;\n if (range.compare(point.row, point.column) == 1) {\n range.setEnd(point);\n }\n }\n else {\n point = delta.start;\n if (range.compare(point.row, point.column) == -1) {\n range = Range.fromPoints(delta.start, delta.start);\n }\n }\n }\n return range;\n };\n EditSession.prototype.replace = function (range, text) {\n return this.doc.replace(range, text);\n };\n EditSession.prototype.moveText = function (fromRange, toPosition, copy) {\n var text = this.getTextRange(fromRange);\n var folds = this.getFoldsInRange(fromRange);\n var toRange = Range.fromPoints(toPosition, toPosition);\n if (!copy) {\n this.remove(fromRange);\n var rowDiff = fromRange.start.row - fromRange.end.row;\n var collDiff = rowDiff ? -fromRange.end.column : fromRange.start.column - fromRange.end.column;\n if (collDiff) {\n if (toRange.start.row == fromRange.end.row && toRange.start.column > fromRange.end.column)\n toRange.start.column += collDiff;\n if (toRange.end.row == fromRange.end.row && toRange.end.column > fromRange.end.column)\n toRange.end.column += collDiff;\n }\n if (rowDiff && toRange.start.row >= fromRange.end.row) {\n toRange.start.row += rowDiff;\n toRange.end.row += rowDiff;\n }\n }\n toRange.end = this.insert(toRange.start, text);\n if (folds.length) {\n var oldStart = fromRange.start;\n var newStart = toRange.start;\n var rowDiff = newStart.row - oldStart.row;\n var collDiff = newStart.column - oldStart.column;\n this.addFolds(folds.map(function (x) {\n x = x.clone();\n if (x.start.row == oldStart.row)\n x.start.column += collDiff;\n if (x.end.row == oldStart.row)\n x.end.column += collDiff;\n x.start.row += rowDiff;\n x.end.row += rowDiff;\n return x;\n }));\n }\n return toRange;\n };\n EditSession.prototype.indentRows = function (startRow, endRow, indentString) {\n indentString = indentString.replace(/\\t/g, this.getTabString());\n for (var row = startRow; row <= endRow; row++)\n this.doc.insertInLine({ row: row, column: 0 }, indentString);\n };\n EditSession.prototype.outdentRows = function (range) {\n var rowRange = range.collapseRows();\n var deleteRange = new Range(0, 0, 0, 0);\n var size = this.getTabSize();\n for (var i = rowRange.start.row; i <= rowRange.end.row; ++i) {\n var line = this.getLine(i);\n deleteRange.start.row = i;\n deleteRange.end.row = i;\n for (var j = 0; j < size; ++j)\n if (line.charAt(j) != ' ')\n break;\n if (j < size && line.charAt(j) == '\\t') {\n deleteRange.start.column = j;\n deleteRange.end.column = j + 1;\n }\n else {\n deleteRange.start.column = 0;\n deleteRange.end.column = j;\n }\n this.remove(deleteRange);\n }\n };\n EditSession.prototype.$moveLines = function (firstRow, lastRow, dir) {\n firstRow = this.getRowFoldStart(firstRow);\n lastRow = this.getRowFoldEnd(lastRow);\n if (dir < 0) {\n var row = this.getRowFoldStart(firstRow + dir);\n if (row < 0)\n return 0;\n var diff = row - firstRow;\n }\n else if (dir > 0) {\n var row = this.getRowFoldEnd(lastRow + dir);\n if (row > this.doc.getLength() - 1)\n return 0;\n var diff = row - lastRow;\n }\n else {\n firstRow = this.$clipRowToDocument(firstRow);\n lastRow = this.$clipRowToDocument(lastRow);\n var diff = lastRow - firstRow + 1;\n }\n var range = new Range(firstRow, 0, lastRow, Number.MAX_VALUE);\n var folds = this.getFoldsInRange(range).map(function (x) {\n x = x.clone();\n x.start.row += diff;\n x.end.row += diff;\n return x;\n });\n var lines = dir == 0\n ? this.doc.getLines(firstRow, lastRow)\n : this.doc.removeFullLines(firstRow, lastRow);\n this.doc.insertFullLines(firstRow + diff, lines);\n folds.length && this.addFolds(folds);\n return diff;\n };\n EditSession.prototype.moveLinesUp = function (firstRow, lastRow) {\n return this.$moveLines(firstRow, lastRow, -1);\n };\n EditSession.prototype.moveLinesDown = function (firstRow, lastRow) {\n return this.$moveLines(firstRow, lastRow, 1);\n };\n EditSession.prototype.duplicateLines = function (firstRow, lastRow) {\n return this.$moveLines(firstRow, lastRow, 0);\n };\n EditSession.prototype.$clipRowToDocument = function (row) {\n return Math.max(0, Math.min(row, this.doc.getLength() - 1));\n };\n EditSession.prototype.$clipColumnToRow = function (row, column) {\n if (column < 0)\n return 0;\n return Math.min(this.doc.getLine(row).length, column);\n };\n EditSession.prototype.$clipPositionToDocument = function (row, column) {\n column = Math.max(0, column);\n if (row < 0) {\n row = 0;\n column = 0;\n }\n else {\n var len = this.doc.getLength();\n if (row >= len) {\n row = len - 1;\n column = this.doc.getLine(len - 1).length;\n }\n else {\n column = Math.min(this.doc.getLine(row).length, column);\n }\n }\n return {\n row: row,\n column: column\n };\n };\n EditSession.prototype.$clipRangeToDocument = function (range) {\n if (range.start.row < 0) {\n range.start.row = 0;\n range.start.column = 0;\n }\n else {\n range.start.column = this.$clipColumnToRow(range.start.row, range.start.column);\n }\n var len = this.doc.getLength() - 1;\n if (range.end.row > len) {\n range.end.row = len;\n range.end.column = this.doc.getLine(len).length;\n }\n else {\n range.end.column = this.$clipColumnToRow(range.end.row, range.end.column);\n }\n return range;\n };\n EditSession.prototype.setUseWrapMode = function (useWrapMode) {\n if (useWrapMode != this.$useWrapMode) {\n this.$useWrapMode = useWrapMode;\n this.$modified = true;\n this.$resetRowCache(0);\n if (useWrapMode) {\n var len = this.getLength();\n this.$wrapData = Array(len);\n this.$updateWrapData(0, len - 1);\n }\n this._signal(\"changeWrapMode\");\n }\n };\n EditSession.prototype.getUseWrapMode = function () {\n return this.$useWrapMode;\n };\n EditSession.prototype.setWrapLimitRange = function (min, max) {\n if (this.$wrapLimitRange.min !== min || this.$wrapLimitRange.max !== max) {\n this.$wrapLimitRange = { min: min, max: max };\n this.$modified = true;\n this.$bidiHandler.markAsDirty();\n if (this.$useWrapMode)\n this._signal(\"changeWrapMode\");\n }\n };\n EditSession.prototype.adjustWrapLimit = function (desiredLimit, $printMargin) {\n var limits = this.$wrapLimitRange;\n if (limits.max < 0)\n limits = { min: $printMargin, max: $printMargin };\n var wrapLimit = this.$constrainWrapLimit(desiredLimit, limits.min, limits.max);\n if (wrapLimit != this.$wrapLimit && wrapLimit > 1) {\n this.$wrapLimit = wrapLimit;\n this.$modified = true;\n if (this.$useWrapMode) {\n this.$updateWrapData(0, this.getLength() - 1);\n this.$resetRowCache(0);\n this._signal(\"changeWrapLimit\");\n }\n return true;\n }\n return false;\n };\n EditSession.prototype.$constrainWrapLimit = function (wrapLimit, min, max) {\n if (min)\n wrapLimit = Math.max(min, wrapLimit);\n if (max)\n wrapLimit = Math.min(max, wrapLimit);\n return wrapLimit;\n };\n EditSession.prototype.getWrapLimit = function () {\n return this.$wrapLimit;\n };\n EditSession.prototype.setWrapLimit = function (limit) {\n this.setWrapLimitRange(limit, limit);\n };\n EditSession.prototype.getWrapLimitRange = function () {\n return {\n min: this.$wrapLimitRange.min,\n max: this.$wrapLimitRange.max\n };\n };\n EditSession.prototype.$updateInternalDataOnChange = function (delta) {\n var useWrapMode = this.$useWrapMode;\n var action = delta.action;\n var start = delta.start;\n var end = delta.end;\n var firstRow = start.row;\n var lastRow = end.row;\n var len = lastRow - firstRow;\n var removedFolds = null;\n this.$updating = true;\n if (len != 0) {\n if (action === \"remove\") {\n this[useWrapMode ? \"$wrapData\" : \"$rowLengthCache\"].splice(firstRow, len);\n var foldLines = this.$foldData;\n removedFolds = this.getFoldsInRange(delta);\n this.removeFolds(removedFolds);\n var foldLine = this.getFoldLine(end.row);\n var idx = 0;\n if (foldLine) {\n foldLine.addRemoveChars(end.row, end.column, start.column - end.column);\n foldLine.shiftRow(-len);\n var foldLineBefore = this.getFoldLine(firstRow);\n if (foldLineBefore && foldLineBefore !== foldLine) {\n foldLineBefore.merge(foldLine);\n foldLine = foldLineBefore;\n }\n idx = foldLines.indexOf(foldLine) + 1;\n }\n for (idx; idx < foldLines.length; idx++) {\n var foldLine = foldLines[idx];\n if (foldLine.start.row >= end.row) {\n foldLine.shiftRow(-len);\n }\n }\n lastRow = firstRow;\n }\n else {\n var args = Array(len);\n args.unshift(firstRow, 0);\n var arr = useWrapMode ? this.$wrapData : this.$rowLengthCache;\n arr.splice.apply(arr, args);\n var foldLines = this.$foldData;\n var foldLine = this.getFoldLine(firstRow);\n var idx = 0;\n if (foldLine) {\n var cmp = foldLine.range.compareInside(start.row, start.column);\n if (cmp == 0) {\n foldLine = foldLine.split(start.row, start.column);\n if (foldLine) {\n foldLine.shiftRow(len);\n foldLine.addRemoveChars(lastRow, 0, end.column - start.column);\n }\n }\n else \n if (cmp == -1) {\n foldLine.addRemoveChars(firstRow, 0, end.column - start.column);\n foldLine.shiftRow(len);\n }\n idx = foldLines.indexOf(foldLine) + 1;\n }\n for (idx; idx < foldLines.length; idx++) {\n var foldLine = foldLines[idx];\n if (foldLine.start.row >= firstRow) {\n foldLine.shiftRow(len);\n }\n }\n }\n }\n else {\n len = Math.abs(delta.start.column - delta.end.column);\n if (action === \"remove\") {\n removedFolds = this.getFoldsInRange(delta);\n this.removeFolds(removedFolds);\n len = -len;\n }\n var foldLine = this.getFoldLine(firstRow);\n if (foldLine) {\n foldLine.addRemoveChars(firstRow, start.column, len);\n }\n }\n if (useWrapMode && this.$wrapData.length != this.doc.getLength()) {\n console.error(\"doc.getLength() and $wrapData.length have to be the same!\");\n }\n this.$updating = false;\n if (useWrapMode)\n this.$updateWrapData(firstRow, lastRow);\n else\n this.$updateRowLengthCache(firstRow, lastRow);\n return removedFolds;\n };\n EditSession.prototype.$updateRowLengthCache = function (firstRow, lastRow, b) {\n this.$rowLengthCache[firstRow] = null;\n this.$rowLengthCache[lastRow] = null;\n };\n EditSession.prototype.$updateWrapData = function (firstRow, lastRow) {\n var lines = this.doc.getAllLines();\n var tabSize = this.getTabSize();\n var wrapData = this.$wrapData;\n var wrapLimit = this.$wrapLimit;\n var tokens;\n var foldLine;\n var row = firstRow;\n lastRow = Math.min(lastRow, lines.length - 1);\n while (row <= lastRow) {\n foldLine = this.getFoldLine(row, foldLine);\n if (!foldLine) {\n tokens = this.$getDisplayTokens(lines[row]);\n wrapData[row] = this.$computeWrapSplits(tokens, wrapLimit, tabSize);\n row++;\n }\n else {\n tokens = [];\n foldLine.walk(function (placeholder, row, column, lastColumn) {\n var walkTokens;\n if (placeholder != null) {\n walkTokens = this.$getDisplayTokens(placeholder, tokens.length);\n walkTokens[0] = PLACEHOLDER_START;\n for (var i = 1; i < walkTokens.length; i++) {\n walkTokens[i] = PLACEHOLDER_BODY;\n }\n }\n else {\n walkTokens = this.$getDisplayTokens(lines[row].substring(lastColumn, column), tokens.length);\n }\n tokens = tokens.concat(walkTokens);\n }.bind(this), foldLine.end.row, lines[foldLine.end.row].length + 1);\n wrapData[foldLine.start.row] = this.$computeWrapSplits(tokens, wrapLimit, tabSize);\n row = foldLine.end.row + 1;\n }\n }\n };\n EditSession.prototype.$computeWrapSplits = function (tokens, wrapLimit, tabSize) {\n if (tokens.length == 0) {\n return [];\n }\n var splits = [];\n var displayLength = tokens.length;\n var lastSplit = 0, lastDocSplit = 0;\n var isCode = this.$wrapAsCode;\n var indentedSoftWrap = this.$indentedSoftWrap;\n var maxIndent = wrapLimit <= Math.max(2 * tabSize, 8)\n || indentedSoftWrap === false ? 0 : Math.floor(wrapLimit / 2);\n function getWrapIndent() {\n var indentation = 0;\n if (maxIndent === 0)\n return indentation;\n if (indentedSoftWrap) {\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n if (token == SPACE)\n indentation += 1;\n else if (token == TAB)\n indentation += tabSize;\n else if (token == TAB_SPACE)\n continue;\n else\n break;\n }\n }\n if (isCode && indentedSoftWrap !== false)\n indentation += tabSize;\n return Math.min(indentation, maxIndent);\n }\n function addSplit(screenPos) {\n var len = screenPos - lastSplit;\n for (var i = lastSplit; i < screenPos; i++) {\n var ch = tokens[i];\n if (ch === 12 || ch === 2)\n len -= 1;\n }\n if (!splits.length) {\n indent = getWrapIndent();\n splits.indent = indent;\n }\n lastDocSplit += len;\n splits.push(lastDocSplit);\n lastSplit = screenPos;\n }\n var indent = 0;\n while (displayLength - lastSplit > wrapLimit - indent) {\n var split = lastSplit + wrapLimit - indent;\n if (tokens[split - 1] >= SPACE && tokens[split] >= SPACE) {\n addSplit(split);\n continue;\n }\n if (tokens[split] == PLACEHOLDER_START || tokens[split] == PLACEHOLDER_BODY) {\n for (split; split != lastSplit - 1; split--) {\n if (tokens[split] == PLACEHOLDER_START) {\n break;\n }\n }\n if (split > lastSplit) {\n addSplit(split);\n continue;\n }\n split = lastSplit + wrapLimit;\n for (split; split < tokens.length; split++) {\n if (tokens[split] != PLACEHOLDER_BODY) {\n break;\n }\n }\n if (split == tokens.length) {\n break; // Breaks the while-loop.\n }\n addSplit(split);\n continue;\n }\n var minSplit = Math.max(split - (wrapLimit - (wrapLimit >> 2)), lastSplit - 1);\n while (split > minSplit && tokens[split] < PLACEHOLDER_START) {\n split--;\n }\n if (isCode) {\n while (split > minSplit && tokens[split] < PLACEHOLDER_START) {\n split--;\n }\n while (split > minSplit && tokens[split] == PUNCTUATION) {\n split--;\n }\n }\n else {\n while (split > minSplit && tokens[split] < SPACE) {\n split--;\n }\n }\n if (split > minSplit) {\n addSplit(++split);\n continue;\n }\n split = lastSplit + wrapLimit;\n if (tokens[split] == CHAR_EXT)\n split--;\n addSplit(split - indent);\n }\n return splits;\n };\n EditSession.prototype.$getDisplayTokens = function (str, offset) {\n var arr = [];\n var tabSize;\n offset = offset || 0;\n for (var i = 0; i < str.length; i++) {\n var c = str.charCodeAt(i);\n if (c == 9) {\n tabSize = this.getScreenTabSize(arr.length + offset);\n arr.push(TAB);\n for (var n = 1; n < tabSize; n++) {\n arr.push(TAB_SPACE);\n }\n }\n else if (c == 32) {\n arr.push(SPACE);\n }\n else if ((c > 39 && c < 48) || (c > 57 && c < 64)) {\n arr.push(PUNCTUATION);\n }\n else if (c >= 0x1100 && isFullWidth(c)) {\n arr.push(CHAR, CHAR_EXT);\n }\n else {\n arr.push(CHAR);\n }\n }\n return arr;\n };\n EditSession.prototype.$getStringScreenWidth = function (str, maxScreenColumn, screenColumn) {\n if (maxScreenColumn == 0)\n return [0, 0];\n if (maxScreenColumn == null)\n maxScreenColumn = Infinity;\n screenColumn = screenColumn || 0;\n var c, column;\n for (column = 0; column < str.length; column++) {\n c = str.charCodeAt(column);\n if (c == 9) {\n screenColumn += this.getScreenTabSize(screenColumn);\n }\n else if (c >= 0x1100 && isFullWidth(c)) {\n screenColumn += 2;\n }\n else {\n screenColumn += 1;\n }\n if (screenColumn > maxScreenColumn) {\n break;\n }\n }\n return [screenColumn, column];\n };\n EditSession.prototype.getRowLength = function (row) {\n var h = 1;\n if (this.lineWidgets)\n h += this.lineWidgets[row] && this.lineWidgets[row].rowCount || 0;\n if (!this.$useWrapMode || !this.$wrapData[row])\n return h;\n else\n return this.$wrapData[row].length + h;\n };\n EditSession.prototype.getRowLineCount = function (row) {\n if (!this.$useWrapMode || !this.$wrapData[row]) {\n return 1;\n }\n else {\n return this.$wrapData[row].length + 1;\n }\n };\n EditSession.prototype.getRowWrapIndent = function (screenRow) {\n if (this.$useWrapMode) {\n var pos = this.screenToDocumentPosition(screenRow, Number.MAX_VALUE);\n var splits = this.$wrapData[pos.row];\n return splits.length && splits[0] < pos.column ? splits.indent : 0;\n }\n else {\n return 0;\n }\n };\n EditSession.prototype.getScreenLastRowColumn = function (screenRow) {\n var pos = this.screenToDocumentPosition(screenRow, Number.MAX_VALUE);\n return this.documentToScreenColumn(pos.row, pos.column);\n };\n EditSession.prototype.getDocumentLastRowColumn = function (docRow, docColumn) {\n var screenRow = this.documentToScreenRow(docRow, docColumn);\n return this.getScreenLastRowColumn(screenRow);\n };\n EditSession.prototype.getDocumentLastRowColumnPosition = function (docRow, docColumn) {\n var screenRow = this.documentToScreenRow(docRow, docColumn);\n return this.screenToDocumentPosition(screenRow, Number.MAX_VALUE / 10);\n };\n EditSession.prototype.getRowSplitData = function (row) {\n if (!this.$useWrapMode) {\n return undefined;\n }\n else {\n return this.$wrapData[row];\n }\n };\n EditSession.prototype.getScreenTabSize = function (screenColumn) {\n return this.$tabSize - (screenColumn % this.$tabSize | 0);\n };\n EditSession.prototype.screenToDocumentRow = function (screenRow, screenColumn) {\n return this.screenToDocumentPosition(screenRow, screenColumn).row;\n };\n EditSession.prototype.screenToDocumentColumn = function (screenRow, screenColumn) {\n return this.screenToDocumentPosition(screenRow, screenColumn).column;\n };\n EditSession.prototype.screenToDocumentPosition = function (screenRow, screenColumn, offsetX) {\n if (screenRow < 0)\n return { row: 0, column: 0 };\n var line;\n var docRow = 0;\n var docColumn = 0;\n var column;\n var row = 0;\n var rowLength = 0;\n var rowCache = this.$screenRowCache;\n var i = this.$getRowCacheIndex(rowCache, screenRow);\n var l = rowCache.length;\n if (l && i >= 0) {\n var row = rowCache[i];\n var docRow = this.$docRowCache[i];\n var doCache = screenRow > rowCache[l - 1];\n }\n else {\n var doCache = !l;\n }\n var maxRow = this.getLength() - 1;\n var foldLine = this.getNextFoldLine(docRow);\n var foldStart = foldLine ? foldLine.start.row : Infinity;\n while (row <= screenRow) {\n rowLength = this.getRowLength(docRow);\n if (row + rowLength > screenRow || docRow >= maxRow) {\n break;\n }\n else {\n row += rowLength;\n docRow++;\n if (docRow > foldStart) {\n docRow = foldLine.end.row + 1;\n foldLine = this.getNextFoldLine(docRow, foldLine);\n foldStart = foldLine ? foldLine.start.row : Infinity;\n }\n }\n if (doCache) {\n this.$docRowCache.push(docRow);\n this.$screenRowCache.push(row);\n }\n }\n if (foldLine && foldLine.start.row <= docRow) {\n line = this.getFoldDisplayLine(foldLine);\n docRow = foldLine.start.row;\n }\n else if (row + rowLength <= screenRow || docRow > maxRow) {\n return {\n row: maxRow,\n column: this.getLine(maxRow).length\n };\n }\n else {\n line = this.getLine(docRow);\n foldLine = null;\n }\n var wrapIndent = 0, splitIndex = Math.floor(screenRow - row);\n if (this.$useWrapMode) {\n var splits = this.$wrapData[docRow];\n if (splits) {\n column = splits[splitIndex];\n if (splitIndex > 0 && splits.length) {\n wrapIndent = splits.indent;\n docColumn = splits[splitIndex - 1] || splits[splits.length - 1];\n line = line.substring(docColumn);\n }\n }\n }\n if (offsetX !== undefined && this.$bidiHandler.isBidiRow(row + splitIndex, docRow, splitIndex))\n screenColumn = this.$bidiHandler.offsetToCol(offsetX);\n docColumn += this.$getStringScreenWidth(line, screenColumn - wrapIndent)[1];\n if (this.$useWrapMode && docColumn >= column)\n docColumn = column - 1;\n if (foldLine)\n return foldLine.idxToPosition(docColumn);\n return { row: docRow, column: docColumn };\n };\n EditSession.prototype.documentToScreenPosition = function (docRow, docColumn) {\n if (typeof docColumn === \"undefined\")\n var pos = this.$clipPositionToDocument(docRow.row, docRow.column);\n else\n pos = this.$clipPositionToDocument(docRow, docColumn);\n docRow = pos.row;\n docColumn = pos.column;\n var screenRow = 0;\n var foldStartRow = null;\n var fold = null;\n fold = this.getFoldAt(docRow, docColumn, 1);\n if (fold) {\n docRow = fold.start.row;\n docColumn = fold.start.column;\n }\n var rowEnd, row = 0;\n var rowCache = this.$docRowCache;\n var i = this.$getRowCacheIndex(rowCache, docRow);\n var l = rowCache.length;\n if (l && i >= 0) {\n var row = rowCache[i];\n var screenRow = this.$screenRowCache[i];\n var doCache = docRow > rowCache[l - 1];\n }\n else {\n var doCache = !l;\n }\n var foldLine = this.getNextFoldLine(row);\n var foldStart = foldLine ? foldLine.start.row : Infinity;\n while (row < docRow) {\n if (row >= foldStart) {\n rowEnd = foldLine.end.row + 1;\n if (rowEnd > docRow)\n break;\n foldLine = this.getNextFoldLine(rowEnd, foldLine);\n foldStart = foldLine ? foldLine.start.row : Infinity;\n }\n else {\n rowEnd = row + 1;\n }\n screenRow += this.getRowLength(row);\n row = rowEnd;\n if (doCache) {\n this.$docRowCache.push(row);\n this.$screenRowCache.push(screenRow);\n }\n }\n var textLine = \"\";\n if (foldLine && row >= foldStart) {\n textLine = this.getFoldDisplayLine(foldLine, docRow, docColumn);\n foldStartRow = foldLine.start.row;\n }\n else {\n textLine = this.getLine(docRow).substring(0, docColumn);\n foldStartRow = docRow;\n }\n var wrapIndent = 0;\n if (this.$useWrapMode) {\n var wrapRow = this.$wrapData[foldStartRow];\n if (wrapRow) {\n var screenRowOffset = 0;\n while (textLine.length >= wrapRow[screenRowOffset]) {\n screenRow++;\n screenRowOffset++;\n }\n textLine = textLine.substring(wrapRow[screenRowOffset - 1] || 0, textLine.length);\n wrapIndent = screenRowOffset > 0 ? wrapRow.indent : 0;\n }\n }\n if (this.lineWidgets && this.lineWidgets[row] && this.lineWidgets[row].rowsAbove)\n screenRow += this.lineWidgets[row].rowsAbove;\n return {\n row: screenRow,\n column: wrapIndent + this.$getStringScreenWidth(textLine)[0]\n };\n };\n EditSession.prototype.documentToScreenColumn = function (row, docColumn) {\n return this.documentToScreenPosition(row, docColumn).column;\n };\n EditSession.prototype.documentToScreenRow = function (docRow, docColumn) {\n return this.documentToScreenPosition(docRow, docColumn).row;\n };\n EditSession.prototype.getScreenLength = function () {\n var screenRows = 0;\n var fold = null;\n if (!this.$useWrapMode) {\n screenRows = this.getLength();\n var foldData = this.$foldData;\n for (var i = 0; i < foldData.length; i++) {\n fold = foldData[i];\n screenRows -= fold.end.row - fold.start.row;\n }\n }\n else {\n var lastRow = this.$wrapData.length;\n var row = 0, i = 0;\n var fold = this.$foldData[i++];\n var foldStart = fold ? fold.start.row : Infinity;\n while (row < lastRow) {\n var splits = this.$wrapData[row];\n screenRows += splits ? splits.length + 1 : 1;\n row++;\n if (row > foldStart) {\n row = fold.end.row + 1;\n fold = this.$foldData[i++];\n foldStart = fold ? fold.start.row : Infinity;\n }\n }\n }\n if (this.lineWidgets)\n screenRows += this.$getWidgetScreenLength();\n return screenRows;\n };\n EditSession.prototype.$setFontMetrics = function (fm) {\n if (!this.$enableVarChar)\n return;\n this.$getStringScreenWidth = function (str, maxScreenColumn, screenColumn) {\n if (maxScreenColumn === 0)\n return [0, 0];\n if (!maxScreenColumn)\n maxScreenColumn = Infinity;\n screenColumn = screenColumn || 0;\n var c, column;\n for (column = 0; column < str.length; column++) {\n c = str.charAt(column);\n if (c === \"\\t\") {\n screenColumn += this.getScreenTabSize(screenColumn);\n }\n else {\n screenColumn += fm.getCharacterWidth(c);\n }\n if (screenColumn > maxScreenColumn) {\n break;\n }\n }\n return [screenColumn, column];\n };\n };\n EditSession.prototype.destroy = function () {\n if (!this.destroyed) {\n this.bgTokenizer.setDocument(null);\n this.bgTokenizer.cleanup();\n this.destroyed = true;\n }\n this.$stopWorker();\n this.removeAllListeners();\n if (this.doc) {\n this.doc.off(\"change\", this.$onChange);\n }\n this.selection.detach();\n };\n return EditSession;\n}());\nEditSession.$uid = 0;\nEditSession.prototype.$modes = config.$modes;\nEditSession.prototype.getValue = EditSession.prototype.toString;\nEditSession.prototype.$defaultUndoManager = {\n undo: function () { },\n redo: function () { },\n hasUndo: function () { },\n hasRedo: function () { },\n reset: function () { },\n add: function () { },\n addSelection: function () { },\n startNewGroup: function () { },\n addSession: function () { }\n};\nEditSession.prototype.$overwrite = false;\nEditSession.prototype.$mode = null;\nEditSession.prototype.$modeId = null;\nEditSession.prototype.$scrollTop = 0;\nEditSession.prototype.$scrollLeft = 0;\nEditSession.prototype.$wrapLimit = 80;\nEditSession.prototype.$useWrapMode = false;\nEditSession.prototype.$wrapLimitRange = {\n min: null,\n max: null\n};\nEditSession.prototype.lineWidgets = null;\nEditSession.prototype.isFullWidth = isFullWidth;\noop.implement(EditSession.prototype, EventEmitter);\nvar CHAR = 1, CHAR_EXT = 2, PLACEHOLDER_START = 3, PLACEHOLDER_BODY = 4, PUNCTUATION = 9, SPACE = 10, TAB = 11, TAB_SPACE = 12;\nfunction isFullWidth(c) {\n if (c < 0x1100)\n return false;\n return c >= 0x1100 && c <= 0x115F ||\n c >= 0x11A3 && c <= 0x11A7 ||\n c >= 0x11FA && c <= 0x11FF ||\n c >= 0x2329 && c <= 0x232A ||\n c >= 0x2E80 && c <= 0x2E99 ||\n c >= 0x2E9B && c <= 0x2EF3 ||\n c >= 0x2F00 && c <= 0x2FD5 ||\n c >= 0x2FF0 && c <= 0x2FFB ||\n c >= 0x3000 && c <= 0x303E ||\n c >= 0x3041 && c <= 0x3096 ||\n c >= 0x3099 && c <= 0x30FF ||\n c >= 0x3105 && c <= 0x312D ||\n c >= 0x3131 && c <= 0x318E ||\n c >= 0x3190 && c <= 0x31BA ||\n c >= 0x31C0 && c <= 0x31E3 ||\n c >= 0x31F0 && c <= 0x321E ||\n c >= 0x3220 && c <= 0x3247 ||\n c >= 0x3250 && c <= 0x32FE ||\n c >= 0x3300 && c <= 0x4DBF ||\n c >= 0x4E00 && c <= 0xA48C ||\n c >= 0xA490 && c <= 0xA4C6 ||\n c >= 0xA960 && c <= 0xA97C ||\n c >= 0xAC00 && c <= 0xD7A3 ||\n c >= 0xD7B0 && c <= 0xD7C6 ||\n c >= 0xD7CB && c <= 0xD7FB ||\n c >= 0xF900 && c <= 0xFAFF ||\n c >= 0xFE10 && c <= 0xFE19 ||\n c >= 0xFE30 && c <= 0xFE52 ||\n c >= 0xFE54 && c <= 0xFE66 ||\n c >= 0xFE68 && c <= 0xFE6B ||\n c >= 0xFF01 && c <= 0xFF60 ||\n c >= 0xFFE0 && c <= 0xFFE6;\n}\nrequire(\"./edit_session/folding\").Folding.call(EditSession.prototype);\nrequire(\"./edit_session/bracket_match\").BracketMatch.call(EditSession.prototype);\nconfig.defineOptions(EditSession.prototype, \"session\", {\n wrap: {\n set: function (value) {\n if (!value || value == \"off\")\n value = false;\n else if (value == \"free\")\n value = true;\n else if (value == \"printMargin\")\n value = -1;\n else if (typeof value == \"string\")\n value = parseInt(value, 10) || false;\n if (this.$wrap == value)\n return;\n this.$wrap = value;\n if (!value) {\n this.setUseWrapMode(false);\n }\n else {\n var col = typeof value == \"number\" ? value : null;\n this.setWrapLimitRange(col, col);\n this.setUseWrapMode(true);\n }\n },\n get: function () {\n if (this.getUseWrapMode()) {\n if (this.$wrap == -1)\n return \"printMargin\";\n if (!this.getWrapLimitRange().min)\n return \"free\";\n return this.$wrap;\n }\n return \"off\";\n },\n handlesSet: true\n },\n wrapMethod: {\n set: function (val) {\n val = val == \"auto\"\n ? this.$mode.type != \"text\"\n : val != \"text\";\n if (val != this.$wrapAsCode) {\n this.$wrapAsCode = val;\n if (this.$useWrapMode) {\n this.$useWrapMode = false;\n this.setUseWrapMode(true);\n }\n }\n },\n initialValue: \"auto\"\n },\n indentedSoftWrap: {\n set: function () {\n if (this.$useWrapMode) {\n this.$useWrapMode = false;\n this.setUseWrapMode(true);\n }\n },\n initialValue: true\n },\n firstLineNumber: {\n set: function () { this._signal(\"changeBreakpoint\"); },\n initialValue: 1\n },\n useWorker: {\n set: function (useWorker) {\n this.$useWorker = useWorker;\n this.$stopWorker();\n if (useWorker)\n this.$startWorker();\n },\n initialValue: true\n },\n useSoftTabs: { initialValue: true },\n tabSize: {\n set: function (tabSize) {\n tabSize = parseInt(tabSize);\n if (tabSize > 0 && this.$tabSize !== tabSize) {\n this.$modified = true;\n this.$rowLengthCache = [];\n this.$tabSize = tabSize;\n this._signal(\"changeTabSize\");\n }\n },\n initialValue: 4,\n handlesSet: true\n },\n navigateWithinSoftTabs: { initialValue: false },\n foldStyle: {\n set: function (val) { this.setFoldStyle(val); },\n handlesSet: true\n },\n overwrite: {\n set: function (val) { this._signal(\"changeOverwrite\"); },\n initialValue: false\n },\n newLineMode: {\n set: function (val) { this.doc.setNewLineMode(val); },\n get: function () { return this.doc.getNewLineMode(); },\n handlesSet: true\n },\n mode: {\n set: function (val) { this.setMode(val); },\n get: function () { return this.$modeId; },\n handlesSet: true\n }\n});\nexports.EditSession = EditSession;\n\n});\n\nace.define(\"ace/search\",[\"require\",\"exports\",\"module\",\"ace/lib/lang\",\"ace/lib/oop\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar lang = require(\"./lib/lang\");\nvar oop = require(\"./lib/oop\");\nvar Range = require(\"./range\").Range;\nvar Search = /** @class */ (function () {\n function Search() {\n this.$options = {};\n }\n Search.prototype.set = function (options) {\n oop.mixin(this.$options, options);\n return this;\n };\n Search.prototype.getOptions = function () {\n return lang.copyObject(this.$options);\n };\n Search.prototype.setOptions = function (options) {\n this.$options = options;\n };\n Search.prototype.find = function (session) {\n var options = this.$options;\n var iterator = this.$matchIterator(session, options);\n if (!iterator)\n return false;\n var firstRange = null;\n iterator.forEach(function (sr, sc, er, ec) {\n firstRange = new Range(sr, sc, er, ec);\n if (sc == ec && options.start && options.start.start\n && options.skipCurrent != false && firstRange.isEqual(options.start)) {\n firstRange = null;\n return false;\n }\n return true;\n });\n return firstRange;\n };\n Search.prototype.findAll = function (session) {\n var options = this.$options;\n if (!options.needle)\n return [];\n this.$assembleRegExp(options);\n var range = options.range;\n var lines = range\n ? session.getLines(range.start.row, range.end.row)\n : session.doc.getAllLines();\n var ranges = [];\n var re = options.re;\n if (options.$isMultiLine) {\n var len = re.length;\n var maxRow = lines.length - len;\n var prevRange;\n outer: for (var row = re.offset || 0; row <= maxRow; row++) {\n for (var j = 0; j < len; j++)\n if (lines[row + j].search(re[j]) == -1)\n continue outer;\n var startLine = lines[row];\n var line = lines[row + len - 1];\n var startIndex = startLine.length - startLine.match(re[0])[0].length;\n var endIndex = line.match(re[len - 1])[0].length;\n if (prevRange && prevRange.end.row === row &&\n prevRange.end.column > startIndex) {\n continue;\n }\n ranges.push(prevRange = new Range(row, startIndex, row + len - 1, endIndex));\n if (len > 2)\n row = row + len - 2;\n }\n }\n else {\n for (var i = 0; i < lines.length; i++) {\n var matches = lang.getMatchOffsets(lines[i], re);\n for (var j = 0; j < matches.length; j++) {\n var match = matches[j];\n ranges.push(new Range(i, match.offset, i, match.offset + match.length));\n }\n }\n }\n if (range) {\n var startColumn = range.start.column;\n var endColumn = range.end.column;\n var i = 0, j = ranges.length - 1;\n while (i < j && ranges[i].start.column < startColumn && ranges[i].start.row == 0)\n i++;\n var endRow = range.end.row - range.start.row;\n while (i < j && ranges[j].end.column > endColumn && ranges[j].end.row == endRow)\n j--;\n ranges = ranges.slice(i, j + 1);\n for (i = 0, j = ranges.length; i < j; i++) {\n ranges[i].start.row += range.start.row;\n ranges[i].end.row += range.start.row;\n }\n }\n return ranges;\n };\n Search.prototype.replace = function (input, replacement) {\n var options = this.$options;\n var re = this.$assembleRegExp(options);\n if (options.$isMultiLine)\n return replacement;\n if (!re)\n return;\n var match = re.exec(input);\n if (!match || match[0].length != input.length)\n return null;\n replacement = input.replace(re, replacement);\n if (options.preserveCase) {\n replacement = replacement.split(\"\");\n for (var i = Math.min(input.length, input.length); i--;) {\n var ch = input[i];\n if (ch && ch.toLowerCase() != ch)\n replacement[i] = replacement[i].toUpperCase();\n else\n replacement[i] = replacement[i].toLowerCase();\n }\n replacement = replacement.join(\"\");\n }\n return replacement;\n };\n Search.prototype.$assembleRegExp = function (options, $disableFakeMultiline) {\n if (options.needle instanceof RegExp)\n return options.re = options.needle;\n var needle = options.needle;\n if (!options.needle)\n return options.re = false;\n if (options.$supportsUnicodeFlag === undefined) {\n options.$supportsUnicodeFlag = lang.supportsUnicodeFlag();\n }\n try {\n new RegExp(needle, \"u\");\n }\n catch (e) {\n options.$supportsUnicodeFlag = false; //left for backward compatibility with previous versions for cases like /ab\\{2}/gu\n }\n if (!options.regExp)\n needle = lang.escapeRegExp(needle);\n if (options.wholeWord)\n needle = addWordBoundary(needle, options);\n var modifier = options.caseSensitive ? \"gm\" : \"gmi\";\n if (options.$supportsUnicodeFlag) {\n modifier += \"u\";\n }\n options.$isMultiLine = !$disableFakeMultiline && /[\\n\\r]/.test(needle);\n if (options.$isMultiLine)\n return options.re = this.$assembleMultilineRegExp(needle, modifier);\n try {\n var re = new RegExp(needle, modifier);\n }\n catch (e) {\n re = false;\n }\n return options.re = re;\n };\n Search.prototype.$assembleMultilineRegExp = function (needle, modifier) {\n var parts = needle.replace(/\\r\\n|\\r|\\n/g, \"$\\n^\").split(\"\\n\");\n var re = [];\n for (var i = 0; i < parts.length; i++)\n try {\n re.push(new RegExp(parts[i], modifier));\n }\n catch (e) {\n return false;\n }\n return re;\n };\n Search.prototype.$matchIterator = function (session, options) {\n var re = this.$assembleRegExp(options);\n if (!re)\n return false;\n var backwards = options.backwards == true;\n var skipCurrent = options.skipCurrent != false;\n var range = options.range;\n var start = options.start;\n if (!start)\n start = range ? range[backwards ? \"end\" : \"start\"] : session.selection.getRange();\n if (start.start)\n start = start[skipCurrent != backwards ? \"end\" : \"start\"];\n var firstRow = range ? range.start.row : 0;\n var lastRow = range ? range.end.row : session.getLength() - 1;\n if (backwards) {\n var forEach = function (callback) {\n var row = start.row;\n if (forEachInLine(row, start.column, callback))\n return;\n for (row--; row >= firstRow; row--)\n if (forEachInLine(row, Number.MAX_VALUE, callback))\n return;\n if (options.wrap == false)\n return;\n for (row = lastRow, firstRow = start.row; row >= firstRow; row--)\n if (forEachInLine(row, Number.MAX_VALUE, callback))\n return;\n };\n }\n else {\n var forEach = function (callback) {\n var row = start.row;\n if (forEachInLine(row, start.column, callback))\n return;\n for (row = row + 1; row <= lastRow; row++)\n if (forEachInLine(row, 0, callback))\n return;\n if (options.wrap == false)\n return;\n for (row = firstRow, lastRow = start.row; row <= lastRow; row++)\n if (forEachInLine(row, 0, callback))\n return;\n };\n }\n if (options.$isMultiLine) {\n var len = re.length;\n var forEachInLine = function (row, offset, callback) {\n var startRow = backwards ? row - len + 1 : row;\n if (startRow < 0 || startRow + len > session.getLength())\n return;\n var line = session.getLine(startRow);\n var startIndex = line.search(re[0]);\n if (!backwards && startIndex < offset || startIndex === -1)\n return;\n for (var i = 1; i < len; i++) {\n line = session.getLine(startRow + i);\n if (line.search(re[i]) == -1)\n return;\n }\n var endIndex = line.match(re[len - 1])[0].length;\n if (backwards && endIndex > offset)\n return;\n if (callback(startRow, startIndex, startRow + len - 1, endIndex))\n return true;\n };\n }\n else if (backwards) {\n var forEachInLine = function (row, endIndex, callback) {\n var line = session.getLine(row);\n var matches = [];\n var m, last = 0;\n re.lastIndex = 0;\n while ((m = re.exec(line))) {\n var length = m[0].length;\n last = m.index;\n if (!length) {\n if (last >= line.length)\n break;\n re.lastIndex = last += 1;\n }\n if (m.index + length > endIndex)\n break;\n matches.push(m.index, length);\n }\n for (var i = matches.length - 1; i >= 0; i -= 2) {\n var column = matches[i - 1];\n var length = matches[i];\n if (callback(row, column, row, column + length))\n return true;\n }\n };\n }\n else {\n var forEachInLine = function (row, startIndex, callback) {\n var line = session.getLine(row);\n var last;\n var m;\n re.lastIndex = startIndex;\n while ((m = re.exec(line))) {\n var length = m[0].length;\n last = m.index;\n if (callback(row, last, row, last + length))\n return true;\n if (!length) {\n re.lastIndex = last += 1;\n if (last >= line.length)\n return false;\n }\n }\n };\n }\n return { forEach: forEach };\n };\n return Search;\n}());\nfunction addWordBoundary(needle, options) {\n var supportsLookbehind = lang.supportsLookbehind();\n function wordBoundary(c, firstChar) {\n if (firstChar === void 0) { firstChar = true; }\n var wordRegExp = supportsLookbehind && options.$supportsUnicodeFlag ? new RegExp(\"[\\\\p{L}\\\\p{N}_]\", \"u\") : new RegExp(\"\\\\w\");\n if (wordRegExp.test(c) || options.regExp) {\n if (supportsLookbehind && options.$supportsUnicodeFlag) {\n if (firstChar)\n return \"(?<=^|[^\\\\p{L}\\\\p{N}_])\";\n return \"(?=[^\\\\p{L}\\\\p{N}_]|$)\";\n }\n return \"\\\\b\";\n }\n return \"\";\n }\n var needleArray = Array.from(needle);\n var firstChar = needleArray[0];\n var lastChar = needleArray[needleArray.length - 1];\n return wordBoundary(firstChar) + needle + wordBoundary(lastChar, false);\n}\nexports.Search = Search;\n\n});\n\nace.define(\"ace/keyboard/hash_handler\",[\"require\",\"exports\",\"module\",\"ace/lib/keys\",\"ace/lib/useragent\"], function(require, exports, module){\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar keyUtil = require(\"../lib/keys\");\nvar useragent = require(\"../lib/useragent\");\nvar KEY_MODS = keyUtil.KEY_MODS;\nvar MultiHashHandler = /** @class */ (function () {\n function MultiHashHandler(config, platform) {\n this.$init(config, platform, false);\n }\n MultiHashHandler.prototype.$init = function (config, platform, $singleCommand) {\n this.platform = platform || (useragent.isMac ? \"mac\" : \"win\");\n this.commands = {};\n this.commandKeyBinding = {};\n this.addCommands(config);\n this.$singleCommand = $singleCommand;\n };\n MultiHashHandler.prototype.addCommand = function (command) {\n if (this.commands[command.name])\n this.removeCommand(command);\n this.commands[command.name] = command;\n if (command.bindKey)\n this._buildKeyHash(command);\n };\n MultiHashHandler.prototype.removeCommand = function (command, keepCommand) {\n var name = command && (typeof command === 'string' ? command : command.name);\n command = this.commands[name];\n if (!keepCommand)\n delete this.commands[name];\n var ckb = this.commandKeyBinding;\n for (var keyId in ckb) {\n var cmdGroup = ckb[keyId];\n if (cmdGroup == command) {\n delete ckb[keyId];\n }\n else if (Array.isArray(cmdGroup)) {\n var i = cmdGroup.indexOf(command);\n if (i != -1) {\n cmdGroup.splice(i, 1);\n if (cmdGroup.length == 1)\n ckb[keyId] = cmdGroup[0];\n }\n }\n }\n };\n MultiHashHandler.prototype.bindKey = function (key, command, position) {\n if (typeof key == \"object\" && key) {\n if (position == undefined)\n position = key.position;\n key = key[this.platform];\n }\n if (!key)\n return;\n if (typeof command == \"function\")\n return this.addCommand({ exec: command, bindKey: key, name: command.name || key });\n key.split(\"|\").forEach(function (keyPart) {\n var chain = \"\";\n if (keyPart.indexOf(\" \") != -1) {\n var parts = keyPart.split(/\\s+/);\n keyPart = parts.pop();\n parts.forEach(function (keyPart) {\n var binding = this.parseKeys(keyPart);\n var id = KEY_MODS[binding.hashId] + binding.key;\n chain += (chain ? \" \" : \"\") + id;\n this._addCommandToBinding(chain, \"chainKeys\");\n }, this);\n chain += \" \";\n }\n var binding = this.parseKeys(keyPart);\n var id = KEY_MODS[binding.hashId] + binding.key;\n this._addCommandToBinding(chain + id, command, position);\n }, this);\n };\n MultiHashHandler.prototype._addCommandToBinding = function (keyId, command, position) {\n var ckb = this.commandKeyBinding, i;\n if (!command) {\n delete ckb[keyId];\n }\n else if (!ckb[keyId] || this.$singleCommand) {\n ckb[keyId] = command;\n }\n else {\n if (!Array.isArray(ckb[keyId])) {\n ckb[keyId] = [ckb[keyId]];\n }\n else if ((i = ckb[keyId].indexOf(command)) != -1) {\n ckb[keyId].splice(i, 1);\n }\n if (typeof position != \"number\") {\n position = getPosition(command);\n }\n var commands = ckb[keyId];\n for (i = 0; i < commands.length; i++) {\n var other = commands[i];\n var otherPos = getPosition(other);\n if (otherPos > position)\n break;\n }\n commands.splice(i, 0, command);\n }\n };\n MultiHashHandler.prototype.addCommands = function (commands) {\n commands && Object.keys(commands).forEach(function (name) {\n var command = commands[name];\n if (!command)\n return;\n if (typeof command === \"string\")\n return this.bindKey(command, name);\n if (typeof command === \"function\")\n command = { exec: command };\n if (typeof command !== \"object\")\n return;\n if (!command.name)\n command.name = name;\n this.addCommand(command);\n }, this);\n };\n MultiHashHandler.prototype.removeCommands = function (commands) {\n Object.keys(commands).forEach(function (name) {\n this.removeCommand(commands[name]);\n }, this);\n };\n MultiHashHandler.prototype.bindKeys = function (keyList) {\n Object.keys(keyList).forEach(function (key) {\n this.bindKey(key, keyList[key]);\n }, this);\n };\n MultiHashHandler.prototype._buildKeyHash = function (command) {\n this.bindKey(command.bindKey, command);\n };\n MultiHashHandler.prototype.parseKeys = function (keys) {\n var parts = keys.toLowerCase().split(/[\\-\\+]([\\-\\+])?/).filter(function (x) { return x; });\n var key = parts.pop();\n var keyCode = keyUtil[key];\n if (keyUtil.FUNCTION_KEYS[keyCode])\n key = keyUtil.FUNCTION_KEYS[keyCode].toLowerCase();\n else if (!parts.length)\n return { key: key, hashId: -1 };\n else if (parts.length == 1 && parts[0] == \"shift\")\n return { key: key.toUpperCase(), hashId: -1 };\n var hashId = 0;\n for (var i = parts.length; i--;) {\n var modifier = keyUtil.KEY_MODS[parts[i]];\n if (modifier == null) {\n if (typeof console != \"undefined\")\n console.error(\"invalid modifier \" + parts[i] + \" in \" + keys);\n return false;\n }\n hashId |= modifier;\n }\n return { key: key, hashId: hashId };\n };\n MultiHashHandler.prototype.findKeyCommand = function (hashId, keyString) {\n var key = KEY_MODS[hashId] + keyString;\n return this.commandKeyBinding[key];\n };\n MultiHashHandler.prototype.handleKeyboard = function (data, hashId, keyString, keyCode) {\n if (keyCode < 0)\n return;\n var key = KEY_MODS[hashId] + keyString;\n var command = this.commandKeyBinding[key];\n if (data.$keyChain) {\n data.$keyChain += \" \" + key;\n command = this.commandKeyBinding[data.$keyChain] || command;\n }\n if (command) {\n if (command == \"chainKeys\" || command[command.length - 1] == \"chainKeys\") {\n data.$keyChain = data.$keyChain || key;\n return { command: \"null\" };\n }\n }\n if (data.$keyChain) {\n if ((!hashId || hashId == 4) && keyString.length == 1)\n data.$keyChain = data.$keyChain.slice(0, -key.length - 1); // wait for input\n else if (hashId == -1 || keyCode > 0)\n data.$keyChain = \"\"; // reset keyChain\n }\n return { command: command };\n };\n MultiHashHandler.prototype.getStatusText = function (editor, data) {\n return data.$keyChain || \"\";\n };\n return MultiHashHandler;\n}());\nfunction getPosition(command) {\n return typeof command == \"object\" && command.bindKey\n && command.bindKey.position\n || (command.isDefault ? -100 : 0);\n}\nvar HashHandler = /** @class */ (function (_super) {\n __extends(HashHandler, _super);\n function HashHandler(config, platform) {\n var _this = _super.call(this, config, platform) || this;\n _this.$singleCommand = true;\n return _this;\n }\n return HashHandler;\n}(MultiHashHandler));\nHashHandler.call = function (thisArg, config, platform) {\n MultiHashHandler.prototype.$init.call(thisArg, config, platform, true);\n};\nMultiHashHandler.call = function (thisArg, config, platform) {\n MultiHashHandler.prototype.$init.call(thisArg, config, platform, false);\n};\nexports.HashHandler = HashHandler;\nexports.MultiHashHandler = MultiHashHandler;\n\n});\n\nace.define(\"ace/commands/command_manager\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/keyboard/hash_handler\",\"ace/lib/event_emitter\"], function(require, exports, module){\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar oop = require(\"../lib/oop\");\nvar MultiHashHandler = require(\"../keyboard/hash_handler\").MultiHashHandler;\nvar EventEmitter = require(\"../lib/event_emitter\").EventEmitter;\nvar CommandManager = /** @class */ (function (_super) {\n __extends(CommandManager, _super);\n function CommandManager(platform, commands) {\n var _this = _super.call(this, commands, platform) || this;\n _this.byName = _this.commands;\n _this.setDefaultHandler(\"exec\", function (e) {\n if (!e.args) {\n return e.command.exec(e.editor, {}, e.event, true);\n }\n return e.command.exec(e.editor, e.args, e.event, false);\n });\n return _this;\n }\n CommandManager.prototype.exec = function (command, editor, args) {\n if (Array.isArray(command)) {\n for (var i = command.length; i--;) {\n if (this.exec(command[i], editor, args))\n return true;\n }\n return false;\n }\n if (typeof command === \"string\")\n command = this.commands[command];\n if (!command)\n return false;\n if (editor && editor.$readOnly && !command.readOnly)\n return false;\n if (this.$checkCommandState != false && command.isAvailable && !command.isAvailable(editor))\n return false;\n var e = { editor: editor, command: command, args: args };\n e.returnValue = this._emit(\"exec\", e);\n this._signal(\"afterExec\", e);\n return e.returnValue === false ? false : true;\n };\n CommandManager.prototype.toggleRecording = function (editor) {\n if (this.$inReplay)\n return;\n editor && editor._emit(\"changeStatus\");\n if (this.recording) {\n this.macro.pop();\n this.off(\"exec\", this.$addCommandToMacro);\n if (!this.macro.length)\n this.macro = this.oldMacro;\n return this.recording = false;\n }\n if (!this.$addCommandToMacro) {\n this.$addCommandToMacro = function (e) {\n this.macro.push([e.command, e.args]);\n }.bind(this);\n }\n this.oldMacro = this.macro;\n this.macro = [];\n this.on(\"exec\", this.$addCommandToMacro);\n return this.recording = true;\n };\n CommandManager.prototype.replay = function (editor) {\n if (this.$inReplay || !this.macro)\n return;\n if (this.recording)\n return this.toggleRecording(editor);\n try {\n this.$inReplay = true;\n this.macro.forEach(function (x) {\n if (typeof x == \"string\")\n this.exec(x, editor);\n else\n this.exec(x[0], editor, x[1]);\n }, this);\n }\n finally {\n this.$inReplay = false;\n }\n };\n CommandManager.prototype.trimMacro = function (m) {\n return m.map(function (x) {\n if (typeof x[0] != \"string\")\n x[0] = x[0].name;\n if (!x[1])\n x = x[0];\n return x;\n });\n };\n return CommandManager;\n}(MultiHashHandler));\noop.implement(CommandManager.prototype, EventEmitter);\nexports.CommandManager = CommandManager;\n\n});\n\nace.define(\"ace/commands/default_commands\",[\"require\",\"exports\",\"module\",\"ace/lib/lang\",\"ace/config\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar lang = require(\"../lib/lang\");\nvar config = require(\"../config\");\nvar Range = require(\"../range\").Range;\nfunction bindKey(win, mac) {\n return { win: win, mac: mac };\n}\nexports.commands = [{\n name: \"showSettingsMenu\",\n description: \"Show settings menu\",\n bindKey: bindKey(\"Ctrl-,\", \"Command-,\"),\n exec: function (editor) {\n config.loadModule(\"ace/ext/settings_menu\", function (module) {\n module.init(editor);\n editor.showSettingsMenu();\n });\n },\n readOnly: true\n }, {\n name: \"goToNextError\",\n description: \"Go to next error\",\n bindKey: bindKey(\"Alt-E\", \"F4\"),\n exec: function (editor) {\n config.loadModule(\"ace/ext/error_marker\", function (module) {\n module.showErrorMarker(editor, 1);\n });\n },\n scrollIntoView: \"animate\",\n readOnly: true\n }, {\n name: \"goToPreviousError\",\n description: \"Go to previous error\",\n bindKey: bindKey(\"Alt-Shift-E\", \"Shift-F4\"),\n exec: function (editor) {\n config.loadModule(\"ace/ext/error_marker\", function (module) {\n module.showErrorMarker(editor, -1);\n });\n },\n scrollIntoView: \"animate\",\n readOnly: true\n }, {\n name: \"selectall\",\n description: \"Select all\",\n bindKey: bindKey(\"Ctrl-A\", \"Command-A\"),\n exec: function (editor) { editor.selectAll(); },\n readOnly: true\n }, {\n name: \"centerselection\",\n description: \"Center selection\",\n bindKey: bindKey(null, \"Ctrl-L\"),\n exec: function (editor) { editor.centerSelection(); },\n readOnly: true\n }, {\n name: \"gotoline\",\n description: \"Go to line...\",\n bindKey: bindKey(\"Ctrl-L\", \"Command-L\"),\n exec: function (editor, line) {\n if (typeof line === \"number\" && !isNaN(line))\n editor.gotoLine(line);\n editor.prompt({ $type: \"gotoLine\" });\n },\n readOnly: true\n }, {\n name: \"fold\",\n bindKey: bindKey(\"Alt-L|Ctrl-F1\", \"Command-Alt-L|Command-F1\"),\n exec: function (editor) { editor.session.toggleFold(false); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"center\",\n readOnly: true\n }, {\n name: \"unfold\",\n bindKey: bindKey(\"Alt-Shift-L|Ctrl-Shift-F1\", \"Command-Alt-Shift-L|Command-Shift-F1\"),\n exec: function (editor) { editor.session.toggleFold(true); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"center\",\n readOnly: true\n }, {\n name: \"toggleFoldWidget\",\n description: \"Toggle fold widget\",\n bindKey: bindKey(\"F2\", \"F2\"),\n exec: function (editor) { editor.session.toggleFoldWidget(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"center\",\n readOnly: true\n }, {\n name: \"toggleParentFoldWidget\",\n description: \"Toggle parent fold widget\",\n bindKey: bindKey(\"Alt-F2\", \"Alt-F2\"),\n exec: function (editor) { editor.session.toggleFoldWidget(true); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"center\",\n readOnly: true\n }, {\n name: \"foldall\",\n description: \"Fold all\",\n bindKey: bindKey(null, \"Ctrl-Command-Option-0\"),\n exec: function (editor) { editor.session.foldAll(); },\n scrollIntoView: \"center\",\n readOnly: true\n }, {\n name: \"foldAllComments\",\n description: \"Fold all comments\",\n bindKey: bindKey(null, \"Ctrl-Command-Option-0\"),\n exec: function (editor) { editor.session.foldAllComments(); },\n scrollIntoView: \"center\",\n readOnly: true\n }, {\n name: \"foldOther\",\n description: \"Fold other\",\n bindKey: bindKey(\"Alt-0\", \"Command-Option-0\"),\n exec: function (editor) {\n editor.session.foldAll();\n editor.session.unfold(editor.selection.getAllRanges());\n },\n scrollIntoView: \"center\",\n readOnly: true\n }, {\n name: \"unfoldall\",\n description: \"Unfold all\",\n bindKey: bindKey(\"Alt-Shift-0\", \"Command-Option-Shift-0\"),\n exec: function (editor) { editor.session.unfold(); },\n scrollIntoView: \"center\",\n readOnly: true\n }, {\n name: \"findnext\",\n description: \"Find next\",\n bindKey: bindKey(\"Ctrl-K\", \"Command-G\"),\n exec: function (editor) { editor.findNext(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"center\",\n readOnly: true\n }, {\n name: \"findprevious\",\n description: \"Find previous\",\n bindKey: bindKey(\"Ctrl-Shift-K\", \"Command-Shift-G\"),\n exec: function (editor) { editor.findPrevious(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"center\",\n readOnly: true\n }, {\n name: \"selectOrFindNext\",\n description: \"Select or find next\",\n bindKey: bindKey(\"Alt-K\", \"Ctrl-G\"),\n exec: function (editor) {\n if (editor.selection.isEmpty())\n editor.selection.selectWord();\n else\n editor.findNext();\n },\n readOnly: true\n }, {\n name: \"selectOrFindPrevious\",\n description: \"Select or find previous\",\n bindKey: bindKey(\"Alt-Shift-K\", \"Ctrl-Shift-G\"),\n exec: function (editor) {\n if (editor.selection.isEmpty())\n editor.selection.selectWord();\n else\n editor.findPrevious();\n },\n readOnly: true\n }, {\n name: \"find\",\n description: \"Find\",\n bindKey: bindKey(\"Ctrl-F\", \"Command-F\"),\n exec: function (editor) {\n config.loadModule(\"ace/ext/searchbox\", function (e) { e.Search(editor); });\n },\n readOnly: true\n }, {\n name: \"overwrite\",\n description: \"Overwrite\",\n bindKey: \"Insert\",\n exec: function (editor) { editor.toggleOverwrite(); },\n readOnly: true\n }, {\n name: \"selecttostart\",\n description: \"Select to start\",\n bindKey: bindKey(\"Ctrl-Shift-Home\", \"Command-Shift-Home|Command-Shift-Up\"),\n exec: function (editor) { editor.getSelection().selectFileStart(); },\n multiSelectAction: \"forEach\",\n readOnly: true,\n scrollIntoView: \"animate\",\n aceCommandGroup: \"fileJump\"\n }, {\n name: \"gotostart\",\n description: \"Go to start\",\n bindKey: bindKey(\"Ctrl-Home\", \"Command-Home|Command-Up\"),\n exec: function (editor) { editor.navigateFileStart(); },\n multiSelectAction: \"forEach\",\n readOnly: true,\n scrollIntoView: \"animate\",\n aceCommandGroup: \"fileJump\"\n }, {\n name: \"selectup\",\n description: \"Select up\",\n bindKey: bindKey(\"Shift-Up\", \"Shift-Up|Ctrl-Shift-P\"),\n exec: function (editor) { editor.getSelection().selectUp(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"golineup\",\n description: \"Go line up\",\n bindKey: bindKey(\"Up\", \"Up|Ctrl-P\"),\n exec: function (editor, args) { editor.navigateUp(args.times); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"selecttoend\",\n description: \"Select to end\",\n bindKey: bindKey(\"Ctrl-Shift-End\", \"Command-Shift-End|Command-Shift-Down\"),\n exec: function (editor) { editor.getSelection().selectFileEnd(); },\n multiSelectAction: \"forEach\",\n readOnly: true,\n scrollIntoView: \"animate\",\n aceCommandGroup: \"fileJump\"\n }, {\n name: \"gotoend\",\n description: \"Go to end\",\n bindKey: bindKey(\"Ctrl-End\", \"Command-End|Command-Down\"),\n exec: function (editor) { editor.navigateFileEnd(); },\n multiSelectAction: \"forEach\",\n readOnly: true,\n scrollIntoView: \"animate\",\n aceCommandGroup: \"fileJump\"\n }, {\n name: \"selectdown\",\n description: \"Select down\",\n bindKey: bindKey(\"Shift-Down\", \"Shift-Down|Ctrl-Shift-N\"),\n exec: function (editor) { editor.getSelection().selectDown(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"golinedown\",\n description: \"Go line down\",\n bindKey: bindKey(\"Down\", \"Down|Ctrl-N\"),\n exec: function (editor, args) { editor.navigateDown(args.times); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"selectwordleft\",\n description: \"Select word left\",\n bindKey: bindKey(\"Ctrl-Shift-Left\", \"Option-Shift-Left\"),\n exec: function (editor) { editor.getSelection().selectWordLeft(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"gotowordleft\",\n description: \"Go to word left\",\n bindKey: bindKey(\"Ctrl-Left\", \"Option-Left\"),\n exec: function (editor) { editor.navigateWordLeft(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"selecttolinestart\",\n description: \"Select to line start\",\n bindKey: bindKey(\"Alt-Shift-Left\", \"Command-Shift-Left|Ctrl-Shift-A\"),\n exec: function (editor) { editor.getSelection().selectLineStart(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"gotolinestart\",\n description: \"Go to line start\",\n bindKey: bindKey(\"Alt-Left|Home\", \"Command-Left|Home|Ctrl-A\"),\n exec: function (editor) { editor.navigateLineStart(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"selectleft\",\n description: \"Select left\",\n bindKey: bindKey(\"Shift-Left\", \"Shift-Left|Ctrl-Shift-B\"),\n exec: function (editor) { editor.getSelection().selectLeft(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"gotoleft\",\n description: \"Go to left\",\n bindKey: bindKey(\"Left\", \"Left|Ctrl-B\"),\n exec: function (editor, args) { editor.navigateLeft(args.times); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"selectwordright\",\n description: \"Select word right\",\n bindKey: bindKey(\"Ctrl-Shift-Right\", \"Option-Shift-Right\"),\n exec: function (editor) { editor.getSelection().selectWordRight(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"gotowordright\",\n description: \"Go to word right\",\n bindKey: bindKey(\"Ctrl-Right\", \"Option-Right\"),\n exec: function (editor) { editor.navigateWordRight(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"selecttolineend\",\n description: \"Select to line end\",\n bindKey: bindKey(\"Alt-Shift-Right\", \"Command-Shift-Right|Shift-End|Ctrl-Shift-E\"),\n exec: function (editor) { editor.getSelection().selectLineEnd(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"gotolineend\",\n description: \"Go to line end\",\n bindKey: bindKey(\"Alt-Right|End\", \"Command-Right|End|Ctrl-E\"),\n exec: function (editor) { editor.navigateLineEnd(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"selectright\",\n description: \"Select right\",\n bindKey: bindKey(\"Shift-Right\", \"Shift-Right\"),\n exec: function (editor) { editor.getSelection().selectRight(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"gotoright\",\n description: \"Go to right\",\n bindKey: bindKey(\"Right\", \"Right|Ctrl-F\"),\n exec: function (editor, args) { editor.navigateRight(args.times); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"selectpagedown\",\n description: \"Select page down\",\n bindKey: \"Shift-PageDown\",\n exec: function (editor) { editor.selectPageDown(); },\n readOnly: true\n }, {\n name: \"pagedown\",\n description: \"Page down\",\n bindKey: bindKey(null, \"Option-PageDown\"),\n exec: function (editor) { editor.scrollPageDown(); },\n readOnly: true\n }, {\n name: \"gotopagedown\",\n description: \"Go to page down\",\n bindKey: bindKey(\"PageDown\", \"PageDown|Ctrl-V\"),\n exec: function (editor) { editor.gotoPageDown(); },\n readOnly: true\n }, {\n name: \"selectpageup\",\n description: \"Select page up\",\n bindKey: \"Shift-PageUp\",\n exec: function (editor) { editor.selectPageUp(); },\n readOnly: true\n }, {\n name: \"pageup\",\n description: \"Page up\",\n bindKey: bindKey(null, \"Option-PageUp\"),\n exec: function (editor) { editor.scrollPageUp(); },\n readOnly: true\n }, {\n name: \"gotopageup\",\n description: \"Go to page up\",\n bindKey: \"PageUp\",\n exec: function (editor) { editor.gotoPageUp(); },\n readOnly: true\n }, {\n name: \"scrollup\",\n description: \"Scroll up\",\n bindKey: bindKey(\"Ctrl-Up\", null),\n exec: function (e) { e.renderer.scrollBy(0, -2 * e.renderer.layerConfig.lineHeight); },\n readOnly: true\n }, {\n name: \"scrolldown\",\n description: \"Scroll down\",\n bindKey: bindKey(\"Ctrl-Down\", null),\n exec: function (e) { e.renderer.scrollBy(0, 2 * e.renderer.layerConfig.lineHeight); },\n readOnly: true\n }, {\n name: \"selectlinestart\",\n description: \"Select line start\",\n bindKey: \"Shift-Home\",\n exec: function (editor) { editor.getSelection().selectLineStart(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"selectlineend\",\n description: \"Select line end\",\n bindKey: \"Shift-End\",\n exec: function (editor) { editor.getSelection().selectLineEnd(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"togglerecording\",\n description: \"Toggle recording\",\n bindKey: bindKey(\"Ctrl-Alt-E\", \"Command-Option-E\"),\n exec: function (editor) { editor.commands.toggleRecording(editor); },\n readOnly: true\n }, {\n name: \"replaymacro\",\n description: \"Replay macro\",\n bindKey: bindKey(\"Ctrl-Shift-E\", \"Command-Shift-E\"),\n exec: function (editor) { editor.commands.replay(editor); },\n readOnly: true\n }, {\n name: \"jumptomatching\",\n description: \"Jump to matching\",\n bindKey: bindKey(\"Ctrl-\\\\|Ctrl-P\", \"Command-\\\\\"),\n exec: function (editor) { editor.jumpToMatching(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"animate\",\n readOnly: true\n }, {\n name: \"selecttomatching\",\n description: \"Select to matching\",\n bindKey: bindKey(\"Ctrl-Shift-\\\\|Ctrl-Shift-P\", \"Command-Shift-\\\\\"),\n exec: function (editor) { editor.jumpToMatching(true); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"animate\",\n readOnly: true\n }, {\n name: \"expandToMatching\",\n description: \"Expand to matching\",\n bindKey: bindKey(\"Ctrl-Shift-M\", \"Ctrl-Shift-M\"),\n exec: function (editor) { editor.jumpToMatching(true, true); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"animate\",\n readOnly: true\n }, {\n name: \"passKeysToBrowser\",\n description: \"Pass keys to browser\",\n bindKey: bindKey(null, null),\n exec: function () { },\n passEvent: true,\n readOnly: true\n }, {\n name: \"copy\",\n description: \"Copy\",\n exec: function (editor) {\n },\n readOnly: true\n },\n {\n name: \"cut\",\n description: \"Cut\",\n exec: function (editor) {\n var cutLine = editor.$copyWithEmptySelection && editor.selection.isEmpty();\n var range = cutLine ? editor.selection.getLineRange() : editor.selection.getRange();\n editor._emit(\"cut\", range);\n if (!range.isEmpty())\n editor.session.remove(range);\n editor.clearSelection();\n },\n scrollIntoView: \"cursor\",\n multiSelectAction: \"forEach\"\n }, {\n name: \"paste\",\n description: \"Paste\",\n exec: function (editor, args) {\n editor.$handlePaste(args);\n },\n scrollIntoView: \"cursor\"\n }, {\n name: \"removeline\",\n description: \"Remove line\",\n bindKey: bindKey(\"Ctrl-D\", \"Command-D\"),\n exec: function (editor) { editor.removeLines(); },\n scrollIntoView: \"cursor\",\n multiSelectAction: \"forEachLine\"\n }, {\n name: \"duplicateSelection\",\n description: \"Duplicate selection\",\n bindKey: bindKey(\"Ctrl-Shift-D\", \"Command-Shift-D\"),\n exec: function (editor) { editor.duplicateSelection(); },\n scrollIntoView: \"cursor\",\n multiSelectAction: \"forEach\"\n }, {\n name: \"sortlines\",\n description: \"Sort lines\",\n bindKey: bindKey(\"Ctrl-Alt-S\", \"Command-Alt-S\"),\n exec: function (editor) { editor.sortLines(); },\n scrollIntoView: \"selection\",\n multiSelectAction: \"forEachLine\"\n }, {\n name: \"togglecomment\",\n description: \"Toggle comment\",\n bindKey: bindKey(\"Ctrl-/\", \"Command-/\"),\n exec: function (editor) { editor.toggleCommentLines(); },\n multiSelectAction: \"forEachLine\",\n scrollIntoView: \"selectionPart\"\n }, {\n name: \"toggleBlockComment\",\n description: \"Toggle block comment\",\n bindKey: bindKey(\"Ctrl-Shift-/\", \"Command-Shift-/\"),\n exec: function (editor) { editor.toggleBlockComment(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"selectionPart\"\n }, {\n name: \"modifyNumberUp\",\n description: \"Modify number up\",\n bindKey: bindKey(\"Ctrl-Shift-Up\", \"Alt-Shift-Up\"),\n exec: function (editor) { editor.modifyNumber(1); },\n scrollIntoView: \"cursor\",\n multiSelectAction: \"forEach\"\n }, {\n name: \"modifyNumberDown\",\n description: \"Modify number down\",\n bindKey: bindKey(\"Ctrl-Shift-Down\", \"Alt-Shift-Down\"),\n exec: function (editor) { editor.modifyNumber(-1); },\n scrollIntoView: \"cursor\",\n multiSelectAction: \"forEach\"\n }, {\n name: \"replace\",\n description: \"Replace\",\n bindKey: bindKey(\"Ctrl-H\", \"Command-Option-F\"),\n exec: function (editor) {\n config.loadModule(\"ace/ext/searchbox\", function (e) { e.Search(editor, true); });\n }\n }, {\n name: \"undo\",\n description: \"Undo\",\n bindKey: bindKey(\"Ctrl-Z\", \"Command-Z\"),\n exec: function (editor) { editor.undo(); }\n }, {\n name: \"redo\",\n description: \"Redo\",\n bindKey: bindKey(\"Ctrl-Shift-Z|Ctrl-Y\", \"Command-Shift-Z|Command-Y\"),\n exec: function (editor) { editor.redo(); }\n }, {\n name: \"copylinesup\",\n description: \"Copy lines up\",\n bindKey: bindKey(\"Alt-Shift-Up\", \"Command-Option-Up\"),\n exec: function (editor) { editor.copyLinesUp(); },\n scrollIntoView: \"cursor\"\n }, {\n name: \"movelinesup\",\n description: \"Move lines up\",\n bindKey: bindKey(\"Alt-Up\", \"Option-Up\"),\n exec: function (editor) { editor.moveLinesUp(); },\n scrollIntoView: \"cursor\"\n }, {\n name: \"copylinesdown\",\n description: \"Copy lines down\",\n bindKey: bindKey(\"Alt-Shift-Down\", \"Command-Option-Down\"),\n exec: function (editor) { editor.copyLinesDown(); },\n scrollIntoView: \"cursor\"\n }, {\n name: \"movelinesdown\",\n description: \"Move lines down\",\n bindKey: bindKey(\"Alt-Down\", \"Option-Down\"),\n exec: function (editor) { editor.moveLinesDown(); },\n scrollIntoView: \"cursor\"\n }, {\n name: \"del\",\n description: \"Delete\",\n bindKey: bindKey(\"Delete\", \"Delete|Ctrl-D|Shift-Delete\"),\n exec: function (editor) { editor.remove(\"right\"); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"backspace\",\n description: \"Backspace\",\n bindKey: bindKey(\"Shift-Backspace|Backspace\", \"Ctrl-Backspace|Shift-Backspace|Backspace|Ctrl-H\"),\n exec: function (editor) { editor.remove(\"left\"); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"cut_or_delete\",\n description: \"Cut or delete\",\n bindKey: bindKey(\"Shift-Delete\", null),\n exec: function (editor) {\n if (editor.selection.isEmpty()) {\n editor.remove(\"left\");\n }\n else {\n return false;\n }\n },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"removetolinestart\",\n description: \"Remove to line start\",\n bindKey: bindKey(\"Alt-Backspace\", \"Command-Backspace\"),\n exec: function (editor) { editor.removeToLineStart(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"removetolineend\",\n description: \"Remove to line end\",\n bindKey: bindKey(\"Alt-Delete\", \"Ctrl-K|Command-Delete\"),\n exec: function (editor) { editor.removeToLineEnd(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"removetolinestarthard\",\n description: \"Remove to line start hard\",\n bindKey: bindKey(\"Ctrl-Shift-Backspace\", null),\n exec: function (editor) {\n var range = editor.selection.getRange();\n range.start.column = 0;\n editor.session.remove(range);\n },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"removetolineendhard\",\n description: \"Remove to line end hard\",\n bindKey: bindKey(\"Ctrl-Shift-Delete\", null),\n exec: function (editor) {\n var range = editor.selection.getRange();\n range.end.column = Number.MAX_VALUE;\n editor.session.remove(range);\n },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"removewordleft\",\n description: \"Remove word left\",\n bindKey: bindKey(\"Ctrl-Backspace\", \"Alt-Backspace|Ctrl-Alt-Backspace\"),\n exec: function (editor) { editor.removeWordLeft(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"removewordright\",\n description: \"Remove word right\",\n bindKey: bindKey(\"Ctrl-Delete\", \"Alt-Delete\"),\n exec: function (editor) { editor.removeWordRight(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"outdent\",\n description: \"Outdent\",\n bindKey: bindKey(\"Shift-Tab\", \"Shift-Tab\"),\n exec: function (editor) { editor.blockOutdent(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"selectionPart\"\n }, {\n name: \"indent\",\n description: \"Indent\",\n bindKey: bindKey(\"Tab\", \"Tab\"),\n exec: function (editor) { editor.indent(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"selectionPart\"\n }, {\n name: \"blockoutdent\",\n description: \"Block outdent\",\n bindKey: bindKey(\"Ctrl-[\", \"Ctrl-[\"),\n exec: function (editor) { editor.blockOutdent(); },\n multiSelectAction: \"forEachLine\",\n scrollIntoView: \"selectionPart\"\n }, {\n name: \"blockindent\",\n description: \"Block indent\",\n bindKey: bindKey(\"Ctrl-]\", \"Ctrl-]\"),\n exec: function (editor) { editor.blockIndent(); },\n multiSelectAction: \"forEachLine\",\n scrollIntoView: \"selectionPart\"\n }, {\n name: \"insertstring\",\n description: \"Insert string\",\n exec: function (editor, str) { editor.insert(str); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"inserttext\",\n description: \"Insert text\",\n exec: function (editor, args) {\n editor.insert(lang.stringRepeat(args.text || \"\", args.times || 1));\n },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"splitline\",\n description: \"Split line\",\n bindKey: bindKey(null, \"Ctrl-O\"),\n exec: function (editor) { editor.splitLine(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"transposeletters\",\n description: \"Transpose letters\",\n bindKey: bindKey(\"Alt-Shift-X\", \"Ctrl-T\"),\n exec: function (editor) { editor.transposeLetters(); },\n multiSelectAction: function (editor) { editor.transposeSelections(1); },\n scrollIntoView: \"cursor\"\n }, {\n name: \"touppercase\",\n description: \"To uppercase\",\n bindKey: bindKey(\"Ctrl-U\", \"Ctrl-U\"),\n exec: function (editor) { editor.toUpperCase(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"tolowercase\",\n description: \"To lowercase\",\n bindKey: bindKey(\"Ctrl-Shift-U\", \"Ctrl-Shift-U\"),\n exec: function (editor) { editor.toLowerCase(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"autoindent\",\n description: \"Auto Indent\",\n bindKey: bindKey(null, null),\n exec: function (editor) { editor.autoIndent(); },\n multiSelectAction: \"forEachLine\",\n scrollIntoView: \"animate\"\n }, {\n name: \"expandtoline\",\n description: \"Expand to line\",\n bindKey: bindKey(\"Ctrl-Shift-L\", \"Command-Shift-L\"),\n exec: function (editor) {\n var range = editor.selection.getRange();\n range.start.column = range.end.column = 0;\n range.end.row++;\n editor.selection.setRange(range, false);\n },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"openlink\",\n bindKey: bindKey(\"Ctrl+F3\", \"F3\"),\n exec: function (editor) { editor.openLink(); }\n }, {\n name: \"joinlines\",\n description: \"Join lines\",\n bindKey: bindKey(null, null),\n exec: function (editor) {\n var isBackwards = editor.selection.isBackwards();\n var selectionStart = isBackwards ? editor.selection.getSelectionLead() : editor.selection.getSelectionAnchor();\n var selectionEnd = isBackwards ? editor.selection.getSelectionAnchor() : editor.selection.getSelectionLead();\n var firstLineEndCol = editor.session.doc.getLine(selectionStart.row).length;\n var selectedText = editor.session.doc.getTextRange(editor.selection.getRange());\n var selectedCount = selectedText.replace(/\\n\\s*/, \" \").length;\n var insertLine = editor.session.doc.getLine(selectionStart.row);\n for (var i = selectionStart.row + 1; i <= selectionEnd.row + 1; i++) {\n var curLine = lang.stringTrimLeft(lang.stringTrimRight(editor.session.doc.getLine(i)));\n if (curLine.length !== 0) {\n curLine = \" \" + curLine;\n }\n insertLine += curLine;\n }\n if (selectionEnd.row + 1 < (editor.session.doc.getLength() - 1)) {\n insertLine += editor.session.doc.getNewLineCharacter();\n }\n editor.clearSelection();\n editor.session.doc.replace(new Range(selectionStart.row, 0, selectionEnd.row + 2, 0), insertLine);\n if (selectedCount > 0) {\n editor.selection.moveCursorTo(selectionStart.row, selectionStart.column);\n editor.selection.selectTo(selectionStart.row, selectionStart.column + selectedCount);\n }\n else {\n firstLineEndCol = editor.session.doc.getLine(selectionStart.row).length > firstLineEndCol ? (firstLineEndCol + 1) : firstLineEndCol;\n editor.selection.moveCursorTo(selectionStart.row, firstLineEndCol);\n }\n },\n multiSelectAction: \"forEach\",\n readOnly: true\n }, {\n name: \"invertSelection\",\n description: \"Invert selection\",\n bindKey: bindKey(null, null),\n exec: function (editor) {\n var endRow = editor.session.doc.getLength() - 1;\n var endCol = editor.session.doc.getLine(endRow).length;\n var ranges = editor.selection.rangeList.ranges;\n var newRanges = [];\n if (ranges.length < 1) {\n ranges = [editor.selection.getRange()];\n }\n for (var i = 0; i < ranges.length; i++) {\n if (i == (ranges.length - 1)) {\n if (!(ranges[i].end.row === endRow && ranges[i].end.column === endCol)) {\n newRanges.push(new Range(ranges[i].end.row, ranges[i].end.column, endRow, endCol));\n }\n }\n if (i === 0) {\n if (!(ranges[i].start.row === 0 && ranges[i].start.column === 0)) {\n newRanges.push(new Range(0, 0, ranges[i].start.row, ranges[i].start.column));\n }\n }\n else {\n newRanges.push(new Range(ranges[i - 1].end.row, ranges[i - 1].end.column, ranges[i].start.row, ranges[i].start.column));\n }\n }\n editor.exitMultiSelectMode();\n editor.clearSelection();\n for (var i = 0; i < newRanges.length; i++) {\n editor.selection.addRange(newRanges[i], false);\n }\n },\n readOnly: true,\n scrollIntoView: \"none\"\n }, {\n name: \"addLineAfter\",\n description: \"Add new line after the current line\",\n exec: function (editor) {\n editor.selection.clearSelection();\n editor.navigateLineEnd();\n editor.insert(\"\\n\");\n },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"addLineBefore\",\n description: \"Add new line before the current line\",\n exec: function (editor) {\n editor.selection.clearSelection();\n var cursor = editor.getCursorPosition();\n editor.selection.moveTo(cursor.row - 1, Number.MAX_VALUE);\n editor.insert(\"\\n\");\n if (cursor.row === 0)\n editor.navigateUp();\n },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"openCommandPallete\",\n exec: function (editor) {\n console.warn(\"This is an obsolete command. Please use `openCommandPalette` instead.\");\n editor.prompt({ $type: \"commands\" });\n },\n readOnly: true\n }, {\n name: \"openCommandPalette\",\n description: \"Open command palette\",\n bindKey: bindKey(\"F1\", \"F1\"),\n exec: function (editor) {\n editor.prompt({ $type: \"commands\" });\n },\n readOnly: true\n }, {\n name: \"modeSelect\",\n description: \"Change language mode...\",\n bindKey: bindKey(null, null),\n exec: function (editor) {\n editor.prompt({ $type: \"modes\" });\n },\n readOnly: true\n }];\nfor (var i = 1; i < 9; i++) {\n exports.commands.push({\n name: \"foldToLevel\" + i,\n description: \"Fold To Level \" + i,\n level: i,\n exec: function (editor) { editor.session.foldToLevel(this.level); },\n scrollIntoView: \"center\",\n readOnly: true\n });\n}\n\n});\n\nace.define(\"ace/line_widgets\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"], function(require, exports, module){\"use strict\";\nvar dom = require(\"./lib/dom\");\nvar LineWidgets = /** @class */ (function () {\n function LineWidgets(session) {\n this.session = session;\n this.session.widgetManager = this;\n this.session.getRowLength = this.getRowLength;\n this.session.$getWidgetScreenLength = this.$getWidgetScreenLength;\n this.updateOnChange = this.updateOnChange.bind(this);\n this.renderWidgets = this.renderWidgets.bind(this);\n this.measureWidgets = this.measureWidgets.bind(this);\n this.session._changedWidgets = [];\n this.$onChangeEditor = this.$onChangeEditor.bind(this);\n this.session.on(\"change\", this.updateOnChange);\n this.session.on(\"changeFold\", this.updateOnFold);\n this.session.on(\"changeEditor\", this.$onChangeEditor);\n }\n LineWidgets.prototype.getRowLength = function (row) {\n var h;\n if (this.lineWidgets)\n h = this.lineWidgets[row] && this.lineWidgets[row].rowCount || 0;\n else\n h = 0;\n if (!this.$useWrapMode || !this.$wrapData[row]) {\n return 1 + h;\n }\n else {\n return this.$wrapData[row].length + 1 + h;\n }\n };\n LineWidgets.prototype.$getWidgetScreenLength = function () {\n var screenRows = 0;\n this.lineWidgets.forEach(function (w) {\n if (w && w.rowCount && !w.hidden)\n screenRows += w.rowCount;\n });\n return screenRows;\n };\n LineWidgets.prototype.$onChangeEditor = function (e) {\n this.attach(e.editor);\n };\n LineWidgets.prototype.attach = function (editor) {\n if (editor && editor.widgetManager && editor.widgetManager != this)\n editor.widgetManager.detach();\n if (this.editor == editor)\n return;\n this.detach();\n this.editor = editor;\n if (editor) {\n editor.widgetManager = this;\n editor.renderer.on(\"beforeRender\", this.measureWidgets);\n editor.renderer.on(\"afterRender\", this.renderWidgets);\n }\n };\n LineWidgets.prototype.detach = function (e) {\n var editor = this.editor;\n if (!editor)\n return;\n this.editor = null;\n editor.widgetManager = null;\n editor.renderer.off(\"beforeRender\", this.measureWidgets);\n editor.renderer.off(\"afterRender\", this.renderWidgets);\n var lineWidgets = this.session.lineWidgets;\n lineWidgets && lineWidgets.forEach(function (w) {\n if (w && w.el && w.el.parentNode) {\n w._inDocument = false;\n w.el.parentNode.removeChild(w.el);\n }\n });\n };\n LineWidgets.prototype.updateOnFold = function (e, session) {\n var lineWidgets = session.lineWidgets;\n if (!lineWidgets || !e.action)\n return;\n var fold = e.data;\n var start = fold.start.row;\n var end = fold.end.row;\n var hide = e.action == \"add\";\n for (var i = start + 1; i < end; i++) {\n if (lineWidgets[i])\n lineWidgets[i].hidden = hide;\n }\n if (lineWidgets[end]) {\n if (hide) {\n if (!lineWidgets[start])\n lineWidgets[start] = lineWidgets[end];\n else\n lineWidgets[end].hidden = hide;\n }\n else {\n if (lineWidgets[start] == lineWidgets[end])\n lineWidgets[start] = undefined;\n lineWidgets[end].hidden = hide;\n }\n }\n };\n LineWidgets.prototype.updateOnChange = function (delta) {\n var lineWidgets = this.session.lineWidgets;\n if (!lineWidgets)\n return;\n var startRow = delta.start.row;\n var len = delta.end.row - startRow;\n if (len === 0) {\n }\n else if (delta.action == \"remove\") {\n var removed = lineWidgets.splice(startRow + 1, len);\n if (!lineWidgets[startRow] && removed[removed.length - 1]) {\n lineWidgets[startRow] = removed.pop();\n }\n removed.forEach(function (w) {\n w && this.removeLineWidget(w);\n }, this);\n this.$updateRows();\n }\n else {\n var args = new Array(len);\n if (lineWidgets[startRow] && lineWidgets[startRow].column != null) {\n if (delta.start.column > lineWidgets[startRow].column)\n startRow++;\n }\n args.unshift(startRow, 0);\n lineWidgets.splice.apply(lineWidgets, args);\n this.$updateRows();\n }\n };\n LineWidgets.prototype.$updateRows = function () {\n var lineWidgets = this.session.lineWidgets;\n if (!lineWidgets)\n return;\n var noWidgets = true;\n lineWidgets.forEach(function (w, i) {\n if (w) {\n noWidgets = false;\n w.row = i;\n while (w.$oldWidget) {\n w.$oldWidget.row = i;\n w = w.$oldWidget;\n }\n }\n });\n if (noWidgets)\n this.session.lineWidgets = null;\n };\n LineWidgets.prototype.$registerLineWidget = function (w) {\n if (!this.session.lineWidgets)\n this.session.lineWidgets = new Array(this.session.getLength());\n var old = this.session.lineWidgets[w.row];\n if (old) {\n w.$oldWidget = old;\n if (old.el && old.el.parentNode) {\n old.el.parentNode.removeChild(old.el);\n old._inDocument = false;\n }\n }\n this.session.lineWidgets[w.row] = w;\n return w;\n };\n LineWidgets.prototype.addLineWidget = function (w) {\n this.$registerLineWidget(w);\n w.session = this.session;\n if (!this.editor)\n return w;\n var renderer = this.editor.renderer;\n if (w.html && !w.el) {\n w.el = dom.createElement(\"div\");\n w.el.innerHTML = w.html;\n }\n if (w.text && !w.el) {\n w.el = dom.createElement(\"div\");\n w.el.textContent = w.text;\n }\n if (w.el) {\n dom.addCssClass(w.el, \"ace_lineWidgetContainer\");\n if (w.className) {\n dom.addCssClass(w.el, w.className);\n }\n w.el.style.position = \"absolute\";\n w.el.style.zIndex = 5;\n renderer.container.appendChild(w.el);\n w._inDocument = true;\n if (!w.coverGutter) {\n w.el.style.zIndex = 3;\n }\n if (w.pixelHeight == null) {\n w.pixelHeight = w.el.offsetHeight;\n }\n }\n if (w.rowCount == null) {\n w.rowCount = w.pixelHeight / renderer.layerConfig.lineHeight;\n }\n var fold = this.session.getFoldAt(w.row, 0);\n w.$fold = fold;\n if (fold) {\n var lineWidgets = this.session.lineWidgets;\n if (w.row == fold.end.row && !lineWidgets[fold.start.row])\n lineWidgets[fold.start.row] = w;\n else\n w.hidden = true;\n }\n this.session._emit(\"changeFold\", { data: { start: { row: w.row } } });\n this.$updateRows();\n this.renderWidgets(null, renderer);\n this.onWidgetChanged(w);\n return w;\n };\n LineWidgets.prototype.removeLineWidget = function (w) {\n w._inDocument = false;\n w.session = null;\n if (w.el && w.el.parentNode)\n w.el.parentNode.removeChild(w.el);\n if (w.editor && w.editor.destroy)\n try {\n w.editor.destroy();\n }\n catch (e) { }\n if (this.session.lineWidgets) {\n var w1 = this.session.lineWidgets[w.row];\n if (w1 == w) {\n this.session.lineWidgets[w.row] = w.$oldWidget;\n if (w.$oldWidget)\n this.onWidgetChanged(w.$oldWidget);\n }\n else {\n while (w1) {\n if (w1.$oldWidget == w) {\n w1.$oldWidget = w.$oldWidget;\n break;\n }\n w1 = w1.$oldWidget;\n }\n }\n }\n this.session._emit(\"changeFold\", { data: { start: { row: w.row } } });\n this.$updateRows();\n };\n LineWidgets.prototype.getWidgetsAtRow = function (row) {\n var lineWidgets = this.session.lineWidgets;\n var w = lineWidgets && lineWidgets[row];\n var list = [];\n while (w) {\n list.push(w);\n w = w.$oldWidget;\n }\n return list;\n };\n LineWidgets.prototype.onWidgetChanged = function (w) {\n this.session._changedWidgets.push(w);\n this.editor && this.editor.renderer.updateFull();\n };\n LineWidgets.prototype.measureWidgets = function (e, renderer) {\n var changedWidgets = this.session._changedWidgets;\n var config = renderer.layerConfig;\n if (!changedWidgets || !changedWidgets.length)\n return;\n var min = Infinity;\n for (var i = 0; i < changedWidgets.length; i++) {\n var w = changedWidgets[i];\n if (!w || !w.el)\n continue;\n if (w.session != this.session)\n continue;\n if (!w._inDocument) {\n if (this.session.lineWidgets[w.row] != w)\n continue;\n w._inDocument = true;\n renderer.container.appendChild(w.el);\n }\n w.h = w.el.offsetHeight;\n if (!w.fixedWidth) {\n w.w = w.el.offsetWidth;\n w.screenWidth = Math.ceil(w.w / config.characterWidth);\n }\n var rowCount = w.h / config.lineHeight;\n if (w.coverLine) {\n rowCount -= this.session.getRowLineCount(w.row);\n if (rowCount < 0)\n rowCount = 0;\n }\n if (w.rowCount != rowCount) {\n w.rowCount = rowCount;\n if (w.row < min)\n min = w.row;\n }\n }\n if (min != Infinity) {\n this.session._emit(\"changeFold\", { data: { start: { row: min } } });\n this.session.lineWidgetWidth = null;\n }\n this.session._changedWidgets = [];\n };\n LineWidgets.prototype.renderWidgets = function (e, renderer) {\n var config = renderer.layerConfig;\n var lineWidgets = this.session.lineWidgets;\n if (!lineWidgets)\n return;\n var first = Math.min(this.firstRow, config.firstRow);\n var last = Math.max(this.lastRow, config.lastRow, lineWidgets.length);\n while (first > 0 && !lineWidgets[first])\n first--;\n this.firstRow = config.firstRow;\n this.lastRow = config.lastRow;\n renderer.$cursorLayer.config = config;\n for (var i = first; i <= last; i++) {\n var w = lineWidgets[i];\n if (!w || !w.el)\n continue;\n if (w.hidden) {\n w.el.style.top = -100 - (w.pixelHeight || 0) + \"px\";\n continue;\n }\n if (!w._inDocument) {\n w._inDocument = true;\n renderer.container.appendChild(w.el);\n }\n var top = renderer.$cursorLayer.getPixelPosition({ row: i, column: 0 }, true).top;\n if (!w.coverLine)\n top += config.lineHeight * this.session.getRowLineCount(w.row);\n w.el.style.top = top - config.offset + \"px\";\n var left = w.coverGutter ? 0 : renderer.gutterWidth;\n if (!w.fixedWidth)\n left -= renderer.scrollLeft;\n w.el.style.left = left + \"px\";\n if (w.fullWidth && w.screenWidth) {\n w.el.style.minWidth = config.width + 2 * config.padding + \"px\";\n }\n if (w.fixedWidth) {\n w.el.style.right = renderer.scrollBar.getWidth() + \"px\";\n }\n else {\n w.el.style.right = \"\";\n }\n }\n };\n return LineWidgets;\n}());\nexports.LineWidgets = LineWidgets;\n\n});\n\nace.define(\"ace/keyboard/gutter_handler\",[\"require\",\"exports\",\"module\",\"ace/lib/keys\",\"ace/mouse/default_gutter_handler\"], function(require, exports, module){\"use strict\";\nvar keys = require('../lib/keys');\nvar GutterTooltip = require(\"../mouse/default_gutter_handler\").GutterTooltip;\nvar GutterKeyboardHandler = /** @class */ (function () {\n function GutterKeyboardHandler(editor) {\n this.editor = editor;\n this.gutterLayer = editor.renderer.$gutterLayer;\n this.element = editor.renderer.$gutter;\n this.lines = editor.renderer.$gutterLayer.$lines;\n this.activeRowIndex = null;\n this.activeLane = null;\n this.annotationTooltip = new GutterTooltip(this.editor);\n }\n GutterKeyboardHandler.prototype.addListener = function () {\n this.element.addEventListener(\"keydown\", this.$onGutterKeyDown.bind(this));\n this.element.addEventListener(\"focusout\", this.$blurGutter.bind(this));\n this.editor.on(\"mousewheel\", this.$blurGutter.bind(this));\n };\n GutterKeyboardHandler.prototype.removeListener = function () {\n this.element.removeEventListener(\"keydown\", this.$onGutterKeyDown.bind(this));\n this.element.removeEventListener(\"focusout\", this.$blurGutter.bind(this));\n this.editor.off(\"mousewheel\", this.$blurGutter.bind(this));\n };\n GutterKeyboardHandler.prototype.$onGutterKeyDown = function (e) {\n if (this.annotationTooltip.isOpen) {\n e.preventDefault();\n if (e.keyCode === keys[\"escape\"])\n this.annotationTooltip.hideTooltip();\n return;\n }\n if (e.target === this.element) {\n if (e.keyCode != keys[\"enter\"]) {\n return;\n }\n e.preventDefault();\n var row = this.editor.getCursorPosition().row;\n if (!this.editor.isRowVisible(row))\n this.editor.scrollToLine(row, true, true);\n setTimeout(function () {\n var index = this.$rowToRowIndex(this.gutterLayer.$cursorCell.row);\n var nearestFoldIndex = this.$findNearestFoldWidget(index);\n var nearestAnnotationIndex = this.$findNearestAnnotation(index);\n if (nearestFoldIndex === null && nearestAnnotationIndex === null)\n return;\n if (nearestFoldIndex === null && nearestAnnotationIndex !== null) {\n this.activeRowIndex = nearestAnnotationIndex;\n this.activeLane = \"annotation\";\n this.$focusAnnotation(this.activeRowIndex);\n return;\n }\n if (nearestFoldIndex !== null && nearestAnnotationIndex === null) {\n this.activeRowIndex = nearestFoldIndex;\n this.activeLane = \"fold\";\n this.$focusFoldWidget(this.activeRowIndex);\n return;\n }\n if (Math.abs(nearestAnnotationIndex - index) < Math.abs(nearestFoldIndex - index)) {\n this.activeRowIndex = nearestAnnotationIndex;\n this.activeLane = \"annotation\";\n this.$focusAnnotation(this.activeRowIndex);\n return;\n }\n else {\n this.activeRowIndex = nearestFoldIndex;\n this.activeLane = \"fold\";\n this.$focusFoldWidget(this.activeRowIndex);\n return;\n }\n }.bind(this), 10);\n return;\n }\n this.$handleGutterKeyboardInteraction(e);\n setTimeout(function () {\n this.editor._signal(\"gutterkeydown\", new GutterKeyboardEvent(e, this));\n }.bind(this), 10);\n };\n GutterKeyboardHandler.prototype.$handleGutterKeyboardInteraction = function (e) {\n if (e.keyCode === keys[\"tab\"]) {\n e.preventDefault();\n return;\n }\n if (e.keyCode === keys[\"escape\"]) {\n e.preventDefault();\n this.$blurGutter();\n this.element.focus();\n this.lane = null;\n return;\n }\n if (e.keyCode === keys[\"up\"]) {\n e.preventDefault();\n switch (this.activeLane) {\n case \"fold\":\n this.$moveFoldWidgetUp();\n break;\n case \"annotation\":\n this.$moveAnnotationUp();\n break;\n }\n return;\n }\n if (e.keyCode === keys[\"down\"]) {\n e.preventDefault();\n switch (this.activeLane) {\n case \"fold\":\n this.$moveFoldWidgetDown();\n break;\n case \"annotation\":\n this.$moveAnnotationDown();\n break;\n }\n return;\n }\n if (e.keyCode === keys[\"left\"]) {\n e.preventDefault();\n this.$switchLane(\"annotation\");\n return;\n }\n if (e.keyCode === keys[\"right\"]) {\n e.preventDefault();\n this.$switchLane(\"fold\");\n return;\n }\n if (e.keyCode === keys[\"enter\"] || e.keyCode === keys[\"space\"]) {\n e.preventDefault();\n switch (this.activeLane) {\n case \"fold\":\n if (this.gutterLayer.session.foldWidgets[this.$rowIndexToRow(this.activeRowIndex)] === 'start') {\n var rowFoldingWidget = this.$rowIndexToRow(this.activeRowIndex);\n this.editor.session.onFoldWidgetClick(this.$rowIndexToRow(this.activeRowIndex), e);\n setTimeout(function () {\n if (this.$rowIndexToRow(this.activeRowIndex) !== rowFoldingWidget) {\n this.$blurFoldWidget(this.activeRowIndex);\n this.activeRowIndex = this.$rowToRowIndex(rowFoldingWidget);\n this.$focusFoldWidget(this.activeRowIndex);\n }\n }.bind(this), 10);\n break;\n }\n else if (this.gutterLayer.session.foldWidgets[this.$rowIndexToRow(this.activeRowIndex)] === 'end') {\n break;\n }\n return;\n case \"annotation\":\n var gutterElement = this.lines.cells[this.activeRowIndex].element.childNodes[2];\n var rect = gutterElement.getBoundingClientRect();\n var style = this.annotationTooltip.getElement().style;\n style.left = rect.right + \"px\";\n style.top = rect.bottom + \"px\";\n this.annotationTooltip.showTooltip(this.$rowIndexToRow(this.activeRowIndex));\n break;\n }\n return;\n }\n };\n GutterKeyboardHandler.prototype.$blurGutter = function () {\n if (this.activeRowIndex !== null) {\n switch (this.activeLane) {\n case \"fold\":\n this.$blurFoldWidget(this.activeRowIndex);\n break;\n case \"annotation\":\n this.$blurAnnotation(this.activeRowIndex);\n break;\n }\n }\n if (this.annotationTooltip.isOpen)\n this.annotationTooltip.hideTooltip();\n return;\n };\n GutterKeyboardHandler.prototype.$isFoldWidgetVisible = function (index) {\n var isRowFullyVisible = this.editor.isRowFullyVisible(this.$rowIndexToRow(index));\n var isIconVisible = this.$getFoldWidget(index).style.display !== \"none\";\n return isRowFullyVisible && isIconVisible;\n };\n GutterKeyboardHandler.prototype.$isAnnotationVisible = function (index) {\n var isRowFullyVisible = this.editor.isRowFullyVisible(this.$rowIndexToRow(index));\n var isIconVisible = this.$getAnnotation(index).style.display !== \"none\";\n return isRowFullyVisible && isIconVisible;\n };\n GutterKeyboardHandler.prototype.$getFoldWidget = function (index) {\n var cell = this.lines.get(index);\n var element = cell.element;\n return element.childNodes[1];\n };\n GutterKeyboardHandler.prototype.$getAnnotation = function (index) {\n var cell = this.lines.get(index);\n var element = cell.element;\n return element.childNodes[2];\n };\n GutterKeyboardHandler.prototype.$findNearestFoldWidget = function (index) {\n if (this.$isFoldWidgetVisible(index))\n return index;\n var i = 0;\n while (index - i > 0 || index + i < this.lines.getLength() - 1) {\n i++;\n if (index - i >= 0 && this.$isFoldWidgetVisible(index - i))\n return index - i;\n if (index + i <= this.lines.getLength() - 1 && this.$isFoldWidgetVisible(index + i))\n return index + i;\n }\n return null;\n };\n GutterKeyboardHandler.prototype.$findNearestAnnotation = function (index) {\n if (this.$isAnnotationVisible(index))\n return index;\n var i = 0;\n while (index - i > 0 || index + i < this.lines.getLength() - 1) {\n i++;\n if (index - i >= 0 && this.$isAnnotationVisible(index - i))\n return index - i;\n if (index + i <= this.lines.getLength() - 1 && this.$isAnnotationVisible(index + i))\n return index + i;\n }\n return null;\n };\n GutterKeyboardHandler.prototype.$focusFoldWidget = function (index) {\n if (index == null)\n return;\n var foldWidget = this.$getFoldWidget(index);\n foldWidget.classList.add(this.editor.renderer.keyboardFocusClassName);\n foldWidget.focus();\n };\n GutterKeyboardHandler.prototype.$focusAnnotation = function (index) {\n if (index == null)\n return;\n var annotation = this.$getAnnotation(index);\n annotation.classList.add(this.editor.renderer.keyboardFocusClassName);\n annotation.focus();\n };\n GutterKeyboardHandler.prototype.$blurFoldWidget = function (index) {\n var foldWidget = this.$getFoldWidget(index);\n foldWidget.classList.remove(this.editor.renderer.keyboardFocusClassName);\n foldWidget.blur();\n };\n GutterKeyboardHandler.prototype.$blurAnnotation = function (index) {\n var annotation = this.$getAnnotation(index);\n annotation.classList.remove(this.editor.renderer.keyboardFocusClassName);\n annotation.blur();\n };\n GutterKeyboardHandler.prototype.$moveFoldWidgetUp = function () {\n var index = this.activeRowIndex;\n while (index > 0) {\n index--;\n if (this.$isFoldWidgetVisible(index)) {\n this.$blurFoldWidget(this.activeRowIndex);\n this.activeRowIndex = index;\n this.$focusFoldWidget(this.activeRowIndex);\n return;\n }\n }\n return;\n };\n GutterKeyboardHandler.prototype.$moveFoldWidgetDown = function () {\n var index = this.activeRowIndex;\n while (index < this.lines.getLength() - 1) {\n index++;\n if (this.$isFoldWidgetVisible(index)) {\n this.$blurFoldWidget(this.activeRowIndex);\n this.activeRowIndex = index;\n this.$focusFoldWidget(this.activeRowIndex);\n return;\n }\n }\n return;\n };\n GutterKeyboardHandler.prototype.$moveAnnotationUp = function () {\n var index = this.activeRowIndex;\n while (index > 0) {\n index--;\n if (this.$isAnnotationVisible(index)) {\n this.$blurAnnotation(this.activeRowIndex);\n this.activeRowIndex = index;\n this.$focusAnnotation(this.activeRowIndex);\n return;\n }\n }\n return;\n };\n GutterKeyboardHandler.prototype.$moveAnnotationDown = function () {\n var index = this.activeRowIndex;\n while (index < this.lines.getLength() - 1) {\n index++;\n if (this.$isAnnotationVisible(index)) {\n this.$blurAnnotation(this.activeRowIndex);\n this.activeRowIndex = index;\n this.$focusAnnotation(this.activeRowIndex);\n return;\n }\n }\n return;\n };\n GutterKeyboardHandler.prototype.$switchLane = function (desinationLane) {\n switch (desinationLane) {\n case \"annotation\":\n if (this.activeLane === \"annotation\") {\n break;\n }\n var annotationIndex = this.$findNearestAnnotation(this.activeRowIndex);\n if (annotationIndex == null) {\n break;\n }\n this.activeLane = \"annotation\";\n this.$blurFoldWidget(this.activeRowIndex);\n this.activeRowIndex = annotationIndex;\n this.$focusAnnotation(this.activeRowIndex);\n break;\n case \"fold\":\n if (this.activeLane === \"fold\") {\n break;\n }\n var foldWidgetIndex = this.$findNearestFoldWidget(this.activeRowIndex);\n if (foldWidgetIndex == null) {\n break;\n }\n this.activeLane = \"fold\";\n this.$blurAnnotation(this.activeRowIndex);\n this.activeRowIndex = foldWidgetIndex;\n this.$focusFoldWidget(this.activeRowIndex);\n break;\n }\n return;\n };\n GutterKeyboardHandler.prototype.$rowIndexToRow = function (index) {\n var cell = this.lines.get(index);\n if (cell)\n return cell.row;\n return null;\n };\n GutterKeyboardHandler.prototype.$rowToRowIndex = function (row) {\n for (var i = 0; i < this.lines.getLength(); i++) {\n var cell = this.lines.get(i);\n if (cell.row == row)\n return i;\n }\n return null;\n };\n return GutterKeyboardHandler;\n}());\nexports.GutterKeyboardHandler = GutterKeyboardHandler;\nvar GutterKeyboardEvent = /** @class */ (function () {\n function GutterKeyboardEvent(domEvent, gutterKeyboardHandler) {\n this.gutterKeyboardHandler = gutterKeyboardHandler;\n this.domEvent = domEvent;\n }\n GutterKeyboardEvent.prototype.getKey = function () {\n return keys.keyCodeToString(this.domEvent.keyCode);\n };\n GutterKeyboardEvent.prototype.getRow = function () {\n return this.gutterKeyboardHandler.$rowIndexToRow(this.gutterKeyboardHandler.activeRowIndex);\n };\n GutterKeyboardEvent.prototype.isInAnnotationLane = function () {\n return this.gutterKeyboardHandler.activeLane === \"annotation\";\n };\n GutterKeyboardEvent.prototype.isInFoldLane = function () {\n return this.gutterKeyboardHandler.activeLane === \"fold\";\n };\n return GutterKeyboardEvent;\n}());\nexports.GutterKeyboardEvent = GutterKeyboardEvent;\n\n});\n\nace.define(\"ace/editor\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/dom\",\"ace/lib/lang\",\"ace/lib/useragent\",\"ace/keyboard/textinput\",\"ace/mouse/mouse_handler\",\"ace/mouse/fold_handler\",\"ace/keyboard/keybinding\",\"ace/edit_session\",\"ace/search\",\"ace/range\",\"ace/lib/event_emitter\",\"ace/commands/command_manager\",\"ace/commands/default_commands\",\"ace/config\",\"ace/token_iterator\",\"ace/line_widgets\",\"ace/keyboard/gutter_handler\",\"ace/config\",\"ace/clipboard\",\"ace/lib/keys\"], function(require, exports, module){\"use strict\";\nvar __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar oop = require(\"./lib/oop\");\nvar dom = require(\"./lib/dom\");\nvar lang = require(\"./lib/lang\");\nvar useragent = require(\"./lib/useragent\");\nvar TextInput = require(\"./keyboard/textinput\").TextInput;\nvar MouseHandler = require(\"./mouse/mouse_handler\").MouseHandler;\nvar FoldHandler = require(\"./mouse/fold_handler\").FoldHandler;\nvar KeyBinding = require(\"./keyboard/keybinding\").KeyBinding;\nvar EditSession = require(\"./edit_session\").EditSession;\nvar Search = require(\"./search\").Search;\nvar Range = require(\"./range\").Range;\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar CommandManager = require(\"./commands/command_manager\").CommandManager;\nvar defaultCommands = require(\"./commands/default_commands\").commands;\nvar config = require(\"./config\");\nvar TokenIterator = require(\"./token_iterator\").TokenIterator;\nvar LineWidgets = require(\"./line_widgets\").LineWidgets;\nvar GutterKeyboardHandler = require(\"./keyboard/gutter_handler\").GutterKeyboardHandler;\nvar nls = require(\"./config\").nls;\nvar clipboard = require(\"./clipboard\");\nvar keys = require('./lib/keys');\nvar Editor = /** @class */ (function () {\n function Editor(renderer, session, options) {\n this.$toDestroy = [];\n var container = renderer.getContainerElement();\n this.container = container;\n this.renderer = renderer;\n this.id = \"editor\" + (++Editor.$uid);\n this.commands = new CommandManager(useragent.isMac ? \"mac\" : \"win\", defaultCommands);\n if (typeof document == \"object\") {\n this.textInput = new TextInput(renderer.getTextAreaContainer(), this);\n this.renderer.textarea = this.textInput.getElement();\n this.$mouseHandler = new MouseHandler(this);\n new FoldHandler(this);\n }\n this.keyBinding = new KeyBinding(this);\n this.$search = new Search().set({\n wrap: true\n });\n this.$historyTracker = this.$historyTracker.bind(this);\n this.commands.on(\"exec\", this.$historyTracker);\n this.$initOperationListeners();\n this._$emitInputEvent = lang.delayedCall(function () {\n this._signal(\"input\", {});\n if (this.session && !this.session.destroyed)\n this.session.bgTokenizer.scheduleStart();\n }.bind(this));\n this.on(\"change\", function (_, _self) {\n _self._$emitInputEvent.schedule(31);\n });\n this.setSession(session || options && options.session || new EditSession(\"\"));\n config.resetOptions(this);\n if (options)\n this.setOptions(options);\n config._signal(\"editor\", this);\n }\n Editor.prototype.$initOperationListeners = function () {\n this.commands.on(\"exec\", this.startOperation.bind(this), true);\n this.commands.on(\"afterExec\", this.endOperation.bind(this), true);\n this.$opResetTimer = lang.delayedCall(this.endOperation.bind(this, true));\n this.on(\"change\", function () {\n if (!this.curOp) {\n this.startOperation();\n this.curOp.selectionBefore = this.$lastSel;\n }\n this.curOp.docChanged = true;\n }.bind(this), true);\n this.on(\"changeSelection\", function () {\n if (!this.curOp) {\n this.startOperation();\n this.curOp.selectionBefore = this.$lastSel;\n }\n this.curOp.selectionChanged = true;\n }.bind(this), true);\n };\n Editor.prototype.startOperation = function (commandEvent) {\n if (this.curOp) {\n if (!commandEvent || this.curOp.command)\n return;\n this.prevOp = this.curOp;\n }\n if (!commandEvent) {\n this.previousCommand = null;\n commandEvent = {};\n }\n this.$opResetTimer.schedule();\n this.curOp = this.session.curOp = {\n command: commandEvent.command || {},\n args: commandEvent.args,\n scrollTop: this.renderer.scrollTop\n };\n this.curOp.selectionBefore = this.selection.toJSON();\n };\n Editor.prototype.endOperation = function (e) {\n if (this.curOp && this.session) {\n if (e && e.returnValue === false || !this.session)\n return (this.curOp = null);\n if (e == true && this.curOp.command && this.curOp.command.name == \"mouse\")\n return;\n this._signal(\"beforeEndOperation\");\n if (!this.curOp)\n return;\n var command = this.curOp.command;\n var scrollIntoView = command && command.scrollIntoView;\n if (scrollIntoView) {\n switch (scrollIntoView) {\n case \"center-animate\":\n scrollIntoView = \"animate\";\n case \"center\":\n this.renderer.scrollCursorIntoView(null, 0.5);\n break;\n case \"animate\":\n case \"cursor\":\n this.renderer.scrollCursorIntoView();\n break;\n case \"selectionPart\":\n var range = this.selection.getRange();\n var config = this.renderer.layerConfig;\n if (range.start.row >= config.lastRow || range.end.row <= config.firstRow) {\n this.renderer.scrollSelectionIntoView(this.selection.anchor, this.selection.lead);\n }\n break;\n default:\n break;\n }\n if (scrollIntoView == \"animate\")\n this.renderer.animateScrolling(this.curOp.scrollTop);\n }\n var sel = this.selection.toJSON();\n this.curOp.selectionAfter = sel;\n this.$lastSel = this.selection.toJSON();\n this.session.getUndoManager().addSelection(sel);\n this.prevOp = this.curOp;\n this.curOp = null;\n }\n };\n Editor.prototype.$historyTracker = function (e) {\n if (!this.$mergeUndoDeltas)\n return;\n var prev = this.prevOp;\n var mergeableCommands = this.$mergeableCommands;\n var shouldMerge = prev.command && (e.command.name == prev.command.name);\n if (e.command.name == \"insertstring\") {\n var text = e.args;\n if (this.mergeNextCommand === undefined)\n this.mergeNextCommand = true;\n shouldMerge = shouldMerge\n && this.mergeNextCommand // previous command allows to coalesce with\n && (!/\\s/.test(text) || /\\s/.test(prev.args)); // previous insertion was of same type\n this.mergeNextCommand = true;\n }\n else {\n shouldMerge = shouldMerge\n && mergeableCommands.indexOf(e.command.name) !== -1; // the command is mergeable\n }\n if (this.$mergeUndoDeltas != \"always\"\n && Date.now() - this.sequenceStartTime > 2000) {\n shouldMerge = false; // the sequence is too long\n }\n if (shouldMerge)\n this.session.mergeUndoDeltas = true;\n else if (mergeableCommands.indexOf(e.command.name) !== -1)\n this.sequenceStartTime = Date.now();\n };\n Editor.prototype.setKeyboardHandler = function (keyboardHandler, cb) {\n if (keyboardHandler && typeof keyboardHandler === \"string\" && keyboardHandler != \"ace\") {\n this.$keybindingId = keyboardHandler;\n var _self = this;\n config.loadModule([\"keybinding\", keyboardHandler], function (module) {\n if (_self.$keybindingId == keyboardHandler)\n _self.keyBinding.setKeyboardHandler(module && module.handler);\n cb && cb();\n });\n }\n else {\n this.$keybindingId = null;\n this.keyBinding.setKeyboardHandler(keyboardHandler);\n cb && cb();\n }\n };\n Editor.prototype.getKeyboardHandler = function () {\n return this.keyBinding.getKeyboardHandler();\n };\n Editor.prototype.setSession = function (session) {\n if (this.session == session)\n return;\n if (this.curOp)\n this.endOperation();\n this.curOp = {};\n var oldSession = this.session;\n if (oldSession) {\n this.session.off(\"change\", this.$onDocumentChange);\n this.session.off(\"changeMode\", this.$onChangeMode);\n this.session.off(\"tokenizerUpdate\", this.$onTokenizerUpdate);\n this.session.off(\"changeTabSize\", this.$onChangeTabSize);\n this.session.off(\"changeWrapLimit\", this.$onChangeWrapLimit);\n this.session.off(\"changeWrapMode\", this.$onChangeWrapMode);\n this.session.off(\"changeFold\", this.$onChangeFold);\n this.session.off(\"changeFrontMarker\", this.$onChangeFrontMarker);\n this.session.off(\"changeBackMarker\", this.$onChangeBackMarker);\n this.session.off(\"changeBreakpoint\", this.$onChangeBreakpoint);\n this.session.off(\"changeAnnotation\", this.$onChangeAnnotation);\n this.session.off(\"changeOverwrite\", this.$onCursorChange);\n this.session.off(\"changeScrollTop\", this.$onScrollTopChange);\n this.session.off(\"changeScrollLeft\", this.$onScrollLeftChange);\n var selection = this.session.getSelection();\n selection.off(\"changeCursor\", this.$onCursorChange);\n selection.off(\"changeSelection\", this.$onSelectionChange);\n }\n this.session = session;\n if (session) {\n this.$onDocumentChange = this.onDocumentChange.bind(this);\n session.on(\"change\", this.$onDocumentChange);\n this.renderer.setSession(session);\n this.$onChangeMode = this.onChangeMode.bind(this);\n session.on(\"changeMode\", this.$onChangeMode);\n this.$onTokenizerUpdate = this.onTokenizerUpdate.bind(this);\n session.on(\"tokenizerUpdate\", this.$onTokenizerUpdate);\n this.$onChangeTabSize = this.renderer.onChangeTabSize.bind(this.renderer);\n session.on(\"changeTabSize\", this.$onChangeTabSize);\n this.$onChangeWrapLimit = this.onChangeWrapLimit.bind(this);\n session.on(\"changeWrapLimit\", this.$onChangeWrapLimit);\n this.$onChangeWrapMode = this.onChangeWrapMode.bind(this);\n session.on(\"changeWrapMode\", this.$onChangeWrapMode);\n this.$onChangeFold = this.onChangeFold.bind(this);\n session.on(\"changeFold\", this.$onChangeFold);\n this.$onChangeFrontMarker = this.onChangeFrontMarker.bind(this);\n this.session.on(\"changeFrontMarker\", this.$onChangeFrontMarker);\n this.$onChangeBackMarker = this.onChangeBackMarker.bind(this);\n this.session.on(\"changeBackMarker\", this.$onChangeBackMarker);\n this.$onChangeBreakpoint = this.onChangeBreakpoint.bind(this);\n this.session.on(\"changeBreakpoint\", this.$onChangeBreakpoint);\n this.$onChangeAnnotation = this.onChangeAnnotation.bind(this);\n this.session.on(\"changeAnnotation\", this.$onChangeAnnotation);\n this.$onCursorChange = this.onCursorChange.bind(this);\n this.session.on(\"changeOverwrite\", this.$onCursorChange);\n this.$onScrollTopChange = this.onScrollTopChange.bind(this);\n this.session.on(\"changeScrollTop\", this.$onScrollTopChange);\n this.$onScrollLeftChange = this.onScrollLeftChange.bind(this);\n this.session.on(\"changeScrollLeft\", this.$onScrollLeftChange);\n this.selection = session.getSelection();\n this.selection.on(\"changeCursor\", this.$onCursorChange);\n this.$onSelectionChange = this.onSelectionChange.bind(this);\n this.selection.on(\"changeSelection\", this.$onSelectionChange);\n this.onChangeMode();\n this.onCursorChange();\n this.onScrollTopChange();\n this.onScrollLeftChange();\n this.onSelectionChange();\n this.onChangeFrontMarker();\n this.onChangeBackMarker();\n this.onChangeBreakpoint();\n this.onChangeAnnotation();\n this.session.getUseWrapMode() && this.renderer.adjustWrapLimit();\n this.renderer.updateFull();\n }\n else {\n this.selection = null;\n this.renderer.setSession(session);\n }\n this._signal(\"changeSession\", {\n session: session,\n oldSession: oldSession\n });\n this.curOp = null;\n oldSession && oldSession._signal(\"changeEditor\", { oldEditor: this });\n session && session._signal(\"changeEditor\", { editor: this });\n if (session && !session.destroyed)\n session.bgTokenizer.scheduleStart();\n };\n Editor.prototype.getSession = function () {\n return this.session;\n };\n Editor.prototype.setValue = function (val, cursorPos) {\n this.session.doc.setValue(val);\n if (!cursorPos)\n this.selectAll();\n else if (cursorPos == 1)\n this.navigateFileEnd();\n else if (cursorPos == -1)\n this.navigateFileStart();\n return val;\n };\n Editor.prototype.getValue = function () {\n return this.session.getValue();\n };\n Editor.prototype.getSelection = function () {\n return this.selection;\n };\n Editor.prototype.resize = function (force) {\n this.renderer.onResize(force);\n };\n Editor.prototype.setTheme = function (theme, cb) {\n this.renderer.setTheme(theme, cb);\n };\n Editor.prototype.getTheme = function () {\n return this.renderer.getTheme();\n };\n Editor.prototype.setStyle = function (style) {\n this.renderer.setStyle(style);\n };\n Editor.prototype.unsetStyle = function (style) {\n this.renderer.unsetStyle(style);\n };\n Editor.prototype.getFontSize = function () {\n return this.getOption(\"fontSize\") ||\n dom.computedStyle(this.container).fontSize;\n };\n Editor.prototype.setFontSize = function (size) {\n this.setOption(\"fontSize\", size);\n };\n Editor.prototype.$highlightBrackets = function () {\n if (this.$highlightPending) {\n return;\n }\n var self = this;\n this.$highlightPending = true;\n setTimeout(function () {\n self.$highlightPending = false;\n var session = self.session;\n if (!session || session.destroyed)\n return;\n if (session.$bracketHighlight) {\n session.$bracketHighlight.markerIds.forEach(function (id) {\n session.removeMarker(id);\n });\n session.$bracketHighlight = null;\n }\n var pos = self.getCursorPosition();\n var handler = self.getKeyboardHandler();\n var isBackwards = handler && handler.$getDirectionForHighlight && handler.$getDirectionForHighlight(self);\n var ranges = session.getMatchingBracketRanges(pos, isBackwards);\n if (!ranges) {\n var iterator = new TokenIterator(session, pos.row, pos.column);\n var token = iterator.getCurrentToken();\n if (token && /\\b(?:tag-open|tag-name)/.test(token.type)) {\n var tagNamesRanges = session.getMatchingTags(pos);\n if (tagNamesRanges)\n ranges = [tagNamesRanges.openTagName, tagNamesRanges.closeTagName];\n }\n }\n if (!ranges && session.$mode.getMatching)\n ranges = session.$mode.getMatching(self.session);\n if (!ranges) {\n if (self.getHighlightIndentGuides())\n self.renderer.$textLayer.$highlightIndentGuide();\n return;\n }\n var markerType = \"ace_bracket\";\n if (!Array.isArray(ranges)) {\n ranges = [ranges];\n }\n else if (ranges.length == 1) {\n markerType = \"ace_error_bracket\";\n }\n if (ranges.length == 2) {\n if (Range.comparePoints(ranges[0].end, ranges[1].start) == 0)\n ranges = [Range.fromPoints(ranges[0].start, ranges[1].end)];\n else if (Range.comparePoints(ranges[0].start, ranges[1].end) == 0)\n ranges = [Range.fromPoints(ranges[1].start, ranges[0].end)];\n }\n session.$bracketHighlight = {\n ranges: ranges,\n markerIds: ranges.map(function (range) {\n return session.addMarker(range, markerType, \"text\");\n })\n };\n if (self.getHighlightIndentGuides())\n self.renderer.$textLayer.$highlightIndentGuide();\n }, 50);\n };\n Editor.prototype.focus = function () {\n this.textInput.focus();\n };\n Editor.prototype.isFocused = function () {\n return this.textInput.isFocused();\n };\n Editor.prototype.blur = function () {\n this.textInput.blur();\n };\n Editor.prototype.onFocus = function (e) {\n if (this.$isFocused)\n return;\n this.$isFocused = true;\n this.renderer.showCursor();\n this.renderer.visualizeFocus();\n this._emit(\"focus\", e);\n };\n Editor.prototype.onBlur = function (e) {\n if (!this.$isFocused)\n return;\n this.$isFocused = false;\n this.renderer.hideCursor();\n this.renderer.visualizeBlur();\n this._emit(\"blur\", e);\n };\n Editor.prototype.$cursorChange = function () {\n this.renderer.updateCursor();\n this.$highlightBrackets();\n this.$updateHighlightActiveLine();\n };\n Editor.prototype.onDocumentChange = function (delta) {\n var wrap = this.session.$useWrapMode;\n var lastRow = (delta.start.row == delta.end.row ? delta.end.row : Infinity);\n this.renderer.updateLines(delta.start.row, lastRow, wrap);\n this._signal(\"change\", delta);\n this.$cursorChange();\n };\n Editor.prototype.onTokenizerUpdate = function (e) {\n var rows = e.data;\n this.renderer.updateLines(rows.first, rows.last);\n };\n Editor.prototype.onScrollTopChange = function () {\n this.renderer.scrollToY(this.session.getScrollTop());\n };\n Editor.prototype.onScrollLeftChange = function () {\n this.renderer.scrollToX(this.session.getScrollLeft());\n };\n Editor.prototype.onCursorChange = function () {\n this.$cursorChange();\n this._signal(\"changeSelection\");\n };\n Editor.prototype.$updateHighlightActiveLine = function () {\n var session = this.getSession();\n var highlight;\n if (this.$highlightActiveLine) {\n if (this.$selectionStyle != \"line\" || !this.selection.isMultiLine())\n highlight = this.getCursorPosition();\n if (this.renderer.theme && this.renderer.theme.$selectionColorConflict && !this.selection.isEmpty())\n highlight = false;\n if (this.renderer.$maxLines && this.session.getLength() === 1 && !(this.renderer.$minLines > 1))\n highlight = false;\n }\n if (session.$highlightLineMarker && !highlight) {\n session.removeMarker(session.$highlightLineMarker.id);\n session.$highlightLineMarker = null;\n }\n else if (!session.$highlightLineMarker && highlight) {\n var range = new Range(highlight.row, highlight.column, highlight.row, Infinity);\n range.id = session.addMarker(range, \"ace_active-line\", \"screenLine\");\n session.$highlightLineMarker = range;\n }\n else if (highlight) {\n session.$highlightLineMarker.start.row = highlight.row;\n session.$highlightLineMarker.end.row = highlight.row;\n session.$highlightLineMarker.start.column = highlight.column;\n session._signal(\"changeBackMarker\");\n }\n };\n Editor.prototype.onSelectionChange = function (e) {\n var session = this.session;\n if (session.$selectionMarker) {\n session.removeMarker(session.$selectionMarker);\n }\n session.$selectionMarker = null;\n if (!this.selection.isEmpty()) {\n var range = this.selection.getRange();\n var style = this.getSelectionStyle();\n session.$selectionMarker = session.addMarker(range, \"ace_selection\", style);\n }\n else {\n this.$updateHighlightActiveLine();\n }\n var re = this.$highlightSelectedWord && this.$getSelectionHighLightRegexp();\n this.session.highlight(re);\n this._signal(\"changeSelection\");\n };\n Editor.prototype.$getSelectionHighLightRegexp = function () {\n var session = this.session;\n var selection = this.getSelectionRange();\n if (selection.isEmpty() || selection.isMultiLine())\n return;\n var startColumn = selection.start.column;\n var endColumn = selection.end.column;\n var line = session.getLine(selection.start.row);\n var needle = line.substring(startColumn, endColumn);\n if (needle.length > 5000 || !/[\\w\\d]/.test(needle))\n return;\n var re = this.$search.$assembleRegExp({\n wholeWord: true,\n caseSensitive: true,\n needle: needle\n });\n var wordWithBoundary = line.substring(startColumn - 1, endColumn + 1);\n if (!re.test(wordWithBoundary))\n return;\n return re;\n };\n Editor.prototype.onChangeFrontMarker = function () {\n this.renderer.updateFrontMarkers();\n };\n Editor.prototype.onChangeBackMarker = function () {\n this.renderer.updateBackMarkers();\n };\n Editor.prototype.onChangeBreakpoint = function () {\n this.renderer.updateBreakpoints();\n };\n Editor.prototype.onChangeAnnotation = function () {\n this.renderer.setAnnotations(this.session.getAnnotations());\n };\n Editor.prototype.onChangeMode = function (e) {\n this.renderer.updateText();\n this._emit(\"changeMode\", e);\n };\n Editor.prototype.onChangeWrapLimit = function () {\n this.renderer.updateFull();\n };\n Editor.prototype.onChangeWrapMode = function () {\n this.renderer.onResize(true);\n };\n Editor.prototype.onChangeFold = function () {\n this.$updateHighlightActiveLine();\n this.renderer.updateFull();\n };\n Editor.prototype.getSelectedText = function () {\n return this.session.getTextRange(this.getSelectionRange());\n };\n Editor.prototype.getCopyText = function () {\n var text = this.getSelectedText();\n var nl = this.session.doc.getNewLineCharacter();\n var copyLine = false;\n if (!text && this.$copyWithEmptySelection) {\n copyLine = true;\n var ranges = this.selection.getAllRanges();\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i];\n if (i && ranges[i - 1].start.row == range.start.row)\n continue;\n text += this.session.getLine(range.start.row) + nl;\n }\n }\n var e = { text: text };\n this._signal(\"copy\", e);\n clipboard.lineMode = copyLine ? e.text : false;\n return e.text;\n };\n Editor.prototype.onCopy = function () {\n this.commands.exec(\"copy\", this);\n };\n Editor.prototype.onCut = function () {\n this.commands.exec(\"cut\", this);\n };\n Editor.prototype.onPaste = function (text, event) {\n var e = { text: text, event: event };\n this.commands.exec(\"paste\", this, e);\n };\n Editor.prototype.$handlePaste = function (e) {\n if (typeof e == \"string\")\n e = { text: e };\n this._signal(\"paste\", e);\n var text = e.text;\n var lineMode = text === clipboard.lineMode;\n var session = this.session;\n if (!this.inMultiSelectMode || this.inVirtualSelectionMode) {\n if (lineMode)\n session.insert({ row: this.selection.lead.row, column: 0 }, text);\n else\n this.insert(text);\n }\n else if (lineMode) {\n this.selection.rangeList.ranges.forEach(function (range) {\n session.insert({ row: range.start.row, column: 0 }, text);\n });\n }\n else {\n var lines = text.split(/\\r\\n|\\r|\\n/);\n var ranges = this.selection.rangeList.ranges;\n var isFullLine = lines.length == 2 && (!lines[0] || !lines[1]);\n if (lines.length != ranges.length || isFullLine)\n return this.commands.exec(\"insertstring\", this, text);\n for (var i = ranges.length; i--;) {\n var range = ranges[i];\n if (!range.isEmpty())\n session.remove(range);\n session.insert(range.start, lines[i]);\n }\n }\n };\n Editor.prototype.execCommand = function (command, args) {\n return this.commands.exec(command, this, args);\n };\n Editor.prototype.insert = function (text, pasted) {\n var session = this.session;\n var mode = session.getMode();\n var cursor = this.getCursorPosition();\n if (this.getBehavioursEnabled() && !pasted) {\n var transform = mode.transformAction(session.getState(cursor.row), 'insertion', this, session, text);\n if (transform) {\n if (text !== transform.text) {\n if (!this.inVirtualSelectionMode) {\n this.session.mergeUndoDeltas = false;\n this.mergeNextCommand = false;\n }\n }\n text = transform.text;\n }\n }\n if (text == \"\\t\")\n text = this.session.getTabString();\n if (!this.selection.isEmpty()) {\n var range = this.getSelectionRange();\n cursor = this.session.remove(range);\n this.clearSelection();\n }\n else if (this.session.getOverwrite() && text.indexOf(\"\\n\") == -1) {\n var range = new Range.fromPoints(cursor, cursor);\n range.end.column += text.length;\n this.session.remove(range);\n }\n if (text == \"\\n\" || text == \"\\r\\n\") {\n var line = session.getLine(cursor.row);\n if (cursor.column > line.search(/\\S|$/)) {\n var d = line.substr(cursor.column).search(/\\S|$/);\n session.doc.removeInLine(cursor.row, cursor.column, cursor.column + d);\n }\n }\n this.clearSelection();\n var start = cursor.column;\n var lineState = session.getState(cursor.row);\n var line = session.getLine(cursor.row);\n var shouldOutdent = mode.checkOutdent(lineState, line, text);\n session.insert(cursor, text);\n if (transform && transform.selection) {\n if (transform.selection.length == 2) { // Transform relative to the current column\n this.selection.setSelectionRange(new Range(cursor.row, start + transform.selection[0], cursor.row, start + transform.selection[1]));\n }\n else { // Transform relative to the current row.\n this.selection.setSelectionRange(new Range(cursor.row + transform.selection[0], transform.selection[1], cursor.row + transform.selection[2], transform.selection[3]));\n }\n }\n if (this.$enableAutoIndent) {\n if (session.getDocument().isNewLine(text)) {\n var lineIndent = mode.getNextLineIndent(lineState, line.slice(0, cursor.column), session.getTabString());\n session.insert({ row: cursor.row + 1, column: 0 }, lineIndent);\n }\n if (shouldOutdent)\n mode.autoOutdent(lineState, session, cursor.row);\n }\n };\n Editor.prototype.autoIndent = function () {\n var session = this.session;\n var mode = session.getMode();\n var startRow, endRow;\n if (this.selection.isEmpty()) {\n startRow = 0;\n endRow = session.doc.getLength() - 1;\n }\n else {\n var selectedRange = this.getSelectionRange();\n startRow = selectedRange.start.row;\n endRow = selectedRange.end.row;\n }\n var prevLineState = \"\";\n var prevLine = \"\";\n var lineIndent = \"\";\n var line, currIndent, range;\n var tab = session.getTabString();\n for (var row = startRow; row <= endRow; row++) {\n if (row > 0) {\n prevLineState = session.getState(row - 1);\n prevLine = session.getLine(row - 1);\n lineIndent = mode.getNextLineIndent(prevLineState, prevLine, tab);\n }\n line = session.getLine(row);\n currIndent = mode.$getIndent(line);\n if (lineIndent !== currIndent) {\n if (currIndent.length > 0) {\n range = new Range(row, 0, row, currIndent.length);\n session.remove(range);\n }\n if (lineIndent.length > 0) {\n session.insert({ row: row, column: 0 }, lineIndent);\n }\n }\n mode.autoOutdent(prevLineState, session, row);\n }\n };\n Editor.prototype.onTextInput = function (text, composition) {\n if (!composition)\n return this.keyBinding.onTextInput(text);\n this.startOperation({ command: { name: \"insertstring\" } });\n var applyComposition = this.applyComposition.bind(this, text, composition);\n if (this.selection.rangeCount)\n this.forEachSelection(applyComposition);\n else\n applyComposition();\n this.endOperation();\n };\n Editor.prototype.applyComposition = function (text, composition) {\n if (composition.extendLeft || composition.extendRight) {\n var r = this.selection.getRange();\n r.start.column -= composition.extendLeft;\n r.end.column += composition.extendRight;\n if (r.start.column < 0) {\n r.start.row--;\n r.start.column += this.session.getLine(r.start.row).length + 1;\n }\n this.selection.setRange(r);\n if (!text && !r.isEmpty())\n this.remove();\n }\n if (text || !this.selection.isEmpty())\n this.insert(text, true);\n if (composition.restoreStart || composition.restoreEnd) {\n var r = this.selection.getRange();\n r.start.column -= composition.restoreStart;\n r.end.column -= composition.restoreEnd;\n this.selection.setRange(r);\n }\n };\n Editor.prototype.onCommandKey = function (e, hashId, keyCode) {\n return this.keyBinding.onCommandKey(e, hashId, keyCode);\n };\n Editor.prototype.setOverwrite = function (overwrite) {\n this.session.setOverwrite(overwrite);\n };\n Editor.prototype.getOverwrite = function () {\n return this.session.getOverwrite();\n };\n Editor.prototype.toggleOverwrite = function () {\n this.session.toggleOverwrite();\n };\n Editor.prototype.setScrollSpeed = function (speed) {\n this.setOption(\"scrollSpeed\", speed);\n };\n Editor.prototype.getScrollSpeed = function () {\n return this.getOption(\"scrollSpeed\");\n };\n Editor.prototype.setDragDelay = function (dragDelay) {\n this.setOption(\"dragDelay\", dragDelay);\n };\n Editor.prototype.getDragDelay = function () {\n return this.getOption(\"dragDelay\");\n };\n Editor.prototype.setSelectionStyle = function (val) {\n this.setOption(\"selectionStyle\", val);\n };\n Editor.prototype.getSelectionStyle = function () {\n return this.getOption(\"selectionStyle\");\n };\n Editor.prototype.setHighlightActiveLine = function (shouldHighlight) {\n this.setOption(\"highlightActiveLine\", shouldHighlight);\n };\n Editor.prototype.getHighlightActiveLine = function () {\n return this.getOption(\"highlightActiveLine\");\n };\n Editor.prototype.setHighlightGutterLine = function (shouldHighlight) {\n this.setOption(\"highlightGutterLine\", shouldHighlight);\n };\n Editor.prototype.getHighlightGutterLine = function () {\n return this.getOption(\"highlightGutterLine\");\n };\n Editor.prototype.setHighlightSelectedWord = function (shouldHighlight) {\n this.setOption(\"highlightSelectedWord\", shouldHighlight);\n };\n Editor.prototype.getHighlightSelectedWord = function () {\n return this.$highlightSelectedWord;\n };\n Editor.prototype.setAnimatedScroll = function (shouldAnimate) {\n this.renderer.setAnimatedScroll(shouldAnimate);\n };\n Editor.prototype.getAnimatedScroll = function () {\n return this.renderer.getAnimatedScroll();\n };\n Editor.prototype.setShowInvisibles = function (showInvisibles) {\n this.renderer.setShowInvisibles(showInvisibles);\n };\n Editor.prototype.getShowInvisibles = function () {\n return this.renderer.getShowInvisibles();\n };\n Editor.prototype.setDisplayIndentGuides = function (display) {\n this.renderer.setDisplayIndentGuides(display);\n };\n Editor.prototype.getDisplayIndentGuides = function () {\n return this.renderer.getDisplayIndentGuides();\n };\n Editor.prototype.setHighlightIndentGuides = function (highlight) {\n this.renderer.setHighlightIndentGuides(highlight);\n };\n Editor.prototype.getHighlightIndentGuides = function () {\n return this.renderer.getHighlightIndentGuides();\n };\n Editor.prototype.setShowPrintMargin = function (showPrintMargin) {\n this.renderer.setShowPrintMargin(showPrintMargin);\n };\n Editor.prototype.getShowPrintMargin = function () {\n return this.renderer.getShowPrintMargin();\n };\n Editor.prototype.setPrintMarginColumn = function (showPrintMargin) {\n this.renderer.setPrintMarginColumn(showPrintMargin);\n };\n Editor.prototype.getPrintMarginColumn = function () {\n return this.renderer.getPrintMarginColumn();\n };\n Editor.prototype.setReadOnly = function (readOnly) {\n this.setOption(\"readOnly\", readOnly);\n };\n Editor.prototype.getReadOnly = function () {\n return this.getOption(\"readOnly\");\n };\n Editor.prototype.setBehavioursEnabled = function (enabled) {\n this.setOption(\"behavioursEnabled\", enabled);\n };\n Editor.prototype.getBehavioursEnabled = function () {\n return this.getOption(\"behavioursEnabled\");\n };\n Editor.prototype.setWrapBehavioursEnabled = function (enabled) {\n this.setOption(\"wrapBehavioursEnabled\", enabled);\n };\n Editor.prototype.getWrapBehavioursEnabled = function () {\n return this.getOption(\"wrapBehavioursEnabled\");\n };\n Editor.prototype.setShowFoldWidgets = function (show) {\n this.setOption(\"showFoldWidgets\", show);\n };\n Editor.prototype.getShowFoldWidgets = function () {\n return this.getOption(\"showFoldWidgets\");\n };\n Editor.prototype.setFadeFoldWidgets = function (fade) {\n this.setOption(\"fadeFoldWidgets\", fade);\n };\n Editor.prototype.getFadeFoldWidgets = function () {\n return this.getOption(\"fadeFoldWidgets\");\n };\n Editor.prototype.remove = function (dir) {\n if (this.selection.isEmpty()) {\n if (dir == \"left\")\n this.selection.selectLeft();\n else\n this.selection.selectRight();\n }\n var range = this.getSelectionRange();\n if (this.getBehavioursEnabled()) {\n var session = this.session;\n var state = session.getState(range.start.row);\n var new_range = session.getMode().transformAction(state, 'deletion', this, session, range);\n if (range.end.column === 0) {\n var text = session.getTextRange(range);\n if (text[text.length - 1] == \"\\n\") {\n var line = session.getLine(range.end.row);\n if (/^\\s+$/.test(line)) {\n range.end.column = line.length;\n }\n }\n }\n if (new_range)\n range = new_range;\n }\n this.session.remove(range);\n this.clearSelection();\n };\n Editor.prototype.removeWordRight = function () {\n if (this.selection.isEmpty())\n this.selection.selectWordRight();\n this.session.remove(this.getSelectionRange());\n this.clearSelection();\n };\n Editor.prototype.removeWordLeft = function () {\n if (this.selection.isEmpty())\n this.selection.selectWordLeft();\n this.session.remove(this.getSelectionRange());\n this.clearSelection();\n };\n Editor.prototype.removeToLineStart = function () {\n if (this.selection.isEmpty())\n this.selection.selectLineStart();\n if (this.selection.isEmpty())\n this.selection.selectLeft();\n this.session.remove(this.getSelectionRange());\n this.clearSelection();\n };\n Editor.prototype.removeToLineEnd = function () {\n if (this.selection.isEmpty())\n this.selection.selectLineEnd();\n var range = this.getSelectionRange();\n if (range.start.column == range.end.column && range.start.row == range.end.row) {\n range.end.column = 0;\n range.end.row++;\n }\n this.session.remove(range);\n this.clearSelection();\n };\n Editor.prototype.splitLine = function () {\n if (!this.selection.isEmpty()) {\n this.session.remove(this.getSelectionRange());\n this.clearSelection();\n }\n var cursor = this.getCursorPosition();\n this.insert(\"\\n\");\n this.moveCursorToPosition(cursor);\n };\n Editor.prototype.setGhostText = function (text, position) {\n if (!this.session.widgetManager) {\n this.session.widgetManager = new LineWidgets(this.session);\n this.session.widgetManager.attach(this);\n }\n this.renderer.setGhostText(text, position);\n };\n Editor.prototype.removeGhostText = function () {\n if (!this.session.widgetManager)\n return;\n this.renderer.removeGhostText();\n };\n Editor.prototype.transposeLetters = function () {\n if (!this.selection.isEmpty()) {\n return;\n }\n var cursor = this.getCursorPosition();\n var column = cursor.column;\n if (column === 0)\n return;\n var line = this.session.getLine(cursor.row);\n var swap, range;\n if (column < line.length) {\n swap = line.charAt(column) + line.charAt(column - 1);\n range = new Range(cursor.row, column - 1, cursor.row, column + 1);\n }\n else {\n swap = line.charAt(column - 1) + line.charAt(column - 2);\n range = new Range(cursor.row, column - 2, cursor.row, column);\n }\n this.session.replace(range, swap);\n this.session.selection.moveToPosition(range.end);\n };\n Editor.prototype.toLowerCase = function () {\n var originalRange = this.getSelectionRange();\n if (this.selection.isEmpty()) {\n this.selection.selectWord();\n }\n var range = this.getSelectionRange();\n var text = this.session.getTextRange(range);\n this.session.replace(range, text.toLowerCase());\n this.selection.setSelectionRange(originalRange);\n };\n Editor.prototype.toUpperCase = function () {\n var originalRange = this.getSelectionRange();\n if (this.selection.isEmpty()) {\n this.selection.selectWord();\n }\n var range = this.getSelectionRange();\n var text = this.session.getTextRange(range);\n this.session.replace(range, text.toUpperCase());\n this.selection.setSelectionRange(originalRange);\n };\n Editor.prototype.indent = function () {\n var session = this.session;\n var range = this.getSelectionRange();\n if (range.start.row < range.end.row) {\n var rows = this.$getSelectedRows();\n session.indentRows(rows.first, rows.last, \"\\t\");\n return;\n }\n else if (range.start.column < range.end.column) {\n var text = session.getTextRange(range);\n if (!/^\\s+$/.test(text)) {\n var rows = this.$getSelectedRows();\n session.indentRows(rows.first, rows.last, \"\\t\");\n return;\n }\n }\n var line = session.getLine(range.start.row);\n var position = range.start;\n var size = session.getTabSize();\n var column = session.documentToScreenColumn(position.row, position.column);\n if (this.session.getUseSoftTabs()) {\n var count = (size - column % size);\n var indentString = lang.stringRepeat(\" \", count);\n }\n else {\n var count = column % size;\n while (line[range.start.column - 1] == \" \" && count) {\n range.start.column--;\n count--;\n }\n this.selection.setSelectionRange(range);\n indentString = \"\\t\";\n }\n return this.insert(indentString);\n };\n Editor.prototype.blockIndent = function () {\n var rows = this.$getSelectedRows();\n this.session.indentRows(rows.first, rows.last, \"\\t\");\n };\n Editor.prototype.blockOutdent = function () {\n var selection = this.session.getSelection();\n this.session.outdentRows(selection.getRange());\n };\n Editor.prototype.sortLines = function () {\n var rows = this.$getSelectedRows();\n var session = this.session;\n var lines = [];\n for (var i = rows.first; i <= rows.last; i++)\n lines.push(session.getLine(i));\n lines.sort(function (a, b) {\n if (a.toLowerCase() < b.toLowerCase())\n return -1;\n if (a.toLowerCase() > b.toLowerCase())\n return 1;\n return 0;\n });\n var deleteRange = new Range(0, 0, 0, 0);\n for (var i = rows.first; i <= rows.last; i++) {\n var line = session.getLine(i);\n deleteRange.start.row = i;\n deleteRange.end.row = i;\n deleteRange.end.column = line.length;\n session.replace(deleteRange, lines[i - rows.first]);\n }\n };\n Editor.prototype.toggleCommentLines = function () {\n var state = this.session.getState(this.getCursorPosition().row);\n var rows = this.$getSelectedRows();\n this.session.getMode().toggleCommentLines(state, this.session, rows.first, rows.last);\n };\n Editor.prototype.toggleBlockComment = function () {\n var cursor = this.getCursorPosition();\n var state = this.session.getState(cursor.row);\n var range = this.getSelectionRange();\n this.session.getMode().toggleBlockComment(state, this.session, range, cursor);\n };\n Editor.prototype.getNumberAt = function (row, column) {\n var _numberRx = /[\\-]?[0-9]+(?:\\.[0-9]+)?/g;\n _numberRx.lastIndex = 0;\n var s = this.session.getLine(row);\n while (_numberRx.lastIndex < column) {\n var m = _numberRx.exec(s);\n if (m.index <= column && m.index + m[0].length >= column) {\n var number = {\n value: m[0],\n start: m.index,\n end: m.index + m[0].length\n };\n return number;\n }\n }\n return null;\n };\n Editor.prototype.modifyNumber = function (amount) {\n var row = this.selection.getCursor().row;\n var column = this.selection.getCursor().column;\n var charRange = new Range(row, column - 1, row, column);\n var c = this.session.getTextRange(charRange);\n if (!isNaN(parseFloat(c)) && isFinite(c)) {\n var nr = this.getNumberAt(row, column);\n if (nr) {\n var fp = nr.value.indexOf(\".\") >= 0 ? nr.start + nr.value.indexOf(\".\") + 1 : nr.end;\n var decimals = nr.start + nr.value.length - fp;\n var t = parseFloat(nr.value);\n t *= Math.pow(10, decimals);\n if (fp !== nr.end && column < fp) {\n amount *= Math.pow(10, nr.end - column - 1);\n }\n else {\n amount *= Math.pow(10, nr.end - column);\n }\n t += amount;\n t /= Math.pow(10, decimals);\n var nnr = t.toFixed(decimals);\n var replaceRange = new Range(row, nr.start, row, nr.end);\n this.session.replace(replaceRange, nnr);\n this.moveCursorTo(row, Math.max(nr.start + 1, column + nnr.length - nr.value.length));\n }\n }\n else {\n this.toggleWord();\n }\n };\n Editor.prototype.toggleWord = function () {\n var row = this.selection.getCursor().row;\n var column = this.selection.getCursor().column;\n this.selection.selectWord();\n var currentState = this.getSelectedText();\n var currWordStart = this.selection.getWordRange().start.column;\n var wordParts = currentState.replace(/([a-z]+|[A-Z]+)(?=[A-Z_]|$)/g, '$1 ').split(/\\s/);\n var delta = column - currWordStart - 1;\n if (delta < 0)\n delta = 0;\n var curLength = 0, itLength = 0;\n var that = this;\n if (currentState.match(/[A-Za-z0-9_]+/)) {\n wordParts.forEach(function (item, i) {\n itLength = curLength + item.length;\n if (delta >= curLength && delta <= itLength) {\n currentState = item;\n that.selection.clearSelection();\n that.moveCursorTo(row, curLength + currWordStart);\n that.selection.selectTo(row, itLength + currWordStart);\n }\n curLength = itLength;\n });\n }\n var wordPairs = this.$toggleWordPairs;\n var reg;\n for (var i = 0; i < wordPairs.length; i++) {\n var item = wordPairs[i];\n for (var j = 0; j <= 1; j++) {\n var negate = +!j;\n var firstCondition = currentState.match(new RegExp('^\\\\s?_?(' + lang.escapeRegExp(item[j]) + ')\\\\s?$', 'i'));\n if (firstCondition) {\n var secondCondition = currentState.match(new RegExp('([_]|^|\\\\s)(' + lang.escapeRegExp(firstCondition[1]) + ')($|\\\\s)', 'g'));\n if (secondCondition) {\n reg = currentState.replace(new RegExp(lang.escapeRegExp(item[j]), 'i'), function (result) {\n var res = item[negate];\n if (result.toUpperCase() == result) {\n res = res.toUpperCase();\n }\n else if (result.charAt(0).toUpperCase() == result.charAt(0)) {\n res = res.substr(0, 0) + item[negate].charAt(0).toUpperCase() + res.substr(1);\n }\n return res;\n });\n this.insert(reg);\n reg = \"\";\n }\n }\n }\n }\n };\n Editor.prototype.findLinkAt = function (row, column) {\n var e_1, _a;\n var line = this.session.getLine(row);\n var wordParts = line.split(/((?:https?|ftp):\\/\\/[\\S]+)/);\n var columnPosition = column;\n if (columnPosition < 0)\n columnPosition = 0;\n var previousPosition = 0, currentPosition = 0, match;\n try {\n for (var wordParts_1 = __values(wordParts), wordParts_1_1 = wordParts_1.next(); !wordParts_1_1.done; wordParts_1_1 = wordParts_1.next()) {\n var item = wordParts_1_1.value;\n currentPosition = previousPosition + item.length;\n if (columnPosition >= previousPosition && columnPosition <= currentPosition) {\n if (item.match(/((?:https?|ftp):\\/\\/[\\S]+)/)) {\n match = item.replace(/[\\s:.,'\";}\\]]+$/, \"\");\n break;\n }\n }\n previousPosition = currentPosition;\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (wordParts_1_1 && !wordParts_1_1.done && (_a = wordParts_1.return)) _a.call(wordParts_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return match;\n };\n Editor.prototype.openLink = function () {\n var cursor = this.selection.getCursor();\n var url = this.findLinkAt(cursor.row, cursor.column);\n if (url)\n window.open(url, '_blank');\n return url != null;\n };\n Editor.prototype.removeLines = function () {\n var rows = this.$getSelectedRows();\n this.session.removeFullLines(rows.first, rows.last);\n this.clearSelection();\n };\n Editor.prototype.duplicateSelection = function () {\n var sel = this.selection;\n var doc = this.session;\n var range = sel.getRange();\n var reverse = sel.isBackwards();\n if (range.isEmpty()) {\n var row = range.start.row;\n doc.duplicateLines(row, row);\n }\n else {\n var point = reverse ? range.start : range.end;\n var endPoint = doc.insert(point, doc.getTextRange(range), false);\n range.start = point;\n range.end = endPoint;\n sel.setSelectionRange(range, reverse);\n }\n };\n Editor.prototype.moveLinesDown = function () {\n this.$moveLines(1, false);\n };\n Editor.prototype.moveLinesUp = function () {\n this.$moveLines(-1, false);\n };\n Editor.prototype.moveText = function (range, toPosition, copy) {\n return this.session.moveText(range, toPosition, copy);\n };\n Editor.prototype.copyLinesUp = function () {\n this.$moveLines(-1, true);\n };\n Editor.prototype.copyLinesDown = function () {\n this.$moveLines(1, true);\n };\n Editor.prototype.$moveLines = function (dir, copy) {\n var rows, moved;\n var selection = this.selection;\n if (!selection.inMultiSelectMode || this.inVirtualSelectionMode) {\n var range = selection.toOrientedRange();\n rows = this.$getSelectedRows(range);\n moved = this.session.$moveLines(rows.first, rows.last, copy ? 0 : dir);\n if (copy && dir == -1)\n moved = 0;\n range.moveBy(moved, 0);\n selection.fromOrientedRange(range);\n }\n else {\n var ranges = selection.rangeList.ranges;\n selection.rangeList.detach(this.session);\n this.inVirtualSelectionMode = true;\n var diff = 0;\n var totalDiff = 0;\n var l = ranges.length;\n for (var i = 0; i < l; i++) {\n var rangeIndex = i;\n ranges[i].moveBy(diff, 0);\n rows = this.$getSelectedRows(ranges[i]);\n var first = rows.first;\n var last = rows.last;\n while (++i < l) {\n if (totalDiff)\n ranges[i].moveBy(totalDiff, 0);\n var subRows = this.$getSelectedRows(ranges[i]);\n if (copy && subRows.first != last)\n break;\n else if (!copy && subRows.first > last + 1)\n break;\n last = subRows.last;\n }\n i--;\n diff = this.session.$moveLines(first, last, copy ? 0 : dir);\n if (copy && dir == -1)\n rangeIndex = i + 1;\n while (rangeIndex <= i) {\n ranges[rangeIndex].moveBy(diff, 0);\n rangeIndex++;\n }\n if (!copy)\n diff = 0;\n totalDiff += diff;\n }\n selection.fromOrientedRange(selection.ranges[0]);\n selection.rangeList.attach(this.session);\n this.inVirtualSelectionMode = false;\n }\n };\n Editor.prototype.$getSelectedRows = function (range) {\n range = (range || this.getSelectionRange()).collapseRows();\n return {\n first: this.session.getRowFoldStart(range.start.row),\n last: this.session.getRowFoldEnd(range.end.row)\n };\n };\n Editor.prototype.onCompositionStart = function (compositionState) {\n this.renderer.showComposition(compositionState);\n };\n Editor.prototype.onCompositionUpdate = function (text) {\n this.renderer.setCompositionText(text);\n };\n Editor.prototype.onCompositionEnd = function () {\n this.renderer.hideComposition();\n };\n Editor.prototype.getFirstVisibleRow = function () {\n return this.renderer.getFirstVisibleRow();\n };\n Editor.prototype.getLastVisibleRow = function () {\n return this.renderer.getLastVisibleRow();\n };\n Editor.prototype.isRowVisible = function (row) {\n return (row >= this.getFirstVisibleRow() && row <= this.getLastVisibleRow());\n };\n Editor.prototype.isRowFullyVisible = function (row) {\n return (row >= this.renderer.getFirstFullyVisibleRow() && row <= this.renderer.getLastFullyVisibleRow());\n };\n Editor.prototype.$getVisibleRowCount = function () {\n return this.renderer.getScrollBottomRow() - this.renderer.getScrollTopRow() + 1;\n };\n Editor.prototype.$moveByPage = function (dir, select) {\n var renderer = this.renderer;\n var config = this.renderer.layerConfig;\n var rows = dir * Math.floor(config.height / config.lineHeight);\n if (select === true) {\n this.selection.$moveSelection(function () {\n this.moveCursorBy(rows, 0);\n });\n }\n else if (select === false) {\n this.selection.moveCursorBy(rows, 0);\n this.selection.clearSelection();\n }\n var scrollTop = renderer.scrollTop;\n renderer.scrollBy(0, rows * config.lineHeight);\n if (select != null)\n renderer.scrollCursorIntoView(null, 0.5);\n renderer.animateScrolling(scrollTop);\n };\n Editor.prototype.selectPageDown = function () {\n this.$moveByPage(1, true);\n };\n Editor.prototype.selectPageUp = function () {\n this.$moveByPage(-1, true);\n };\n Editor.prototype.gotoPageDown = function () {\n this.$moveByPage(1, false);\n };\n Editor.prototype.gotoPageUp = function () {\n this.$moveByPage(-1, false);\n };\n Editor.prototype.scrollPageDown = function () {\n this.$moveByPage(1);\n };\n Editor.prototype.scrollPageUp = function () {\n this.$moveByPage(-1);\n };\n Editor.prototype.scrollToRow = function (row) {\n this.renderer.scrollToRow(row);\n };\n Editor.prototype.scrollToLine = function (line, center, animate, callback) {\n this.renderer.scrollToLine(line, center, animate, callback);\n };\n Editor.prototype.centerSelection = function () {\n var range = this.getSelectionRange();\n var pos = {\n row: Math.floor(range.start.row + (range.end.row - range.start.row) / 2),\n column: Math.floor(range.start.column + (range.end.column - range.start.column) / 2)\n };\n this.renderer.alignCursor(pos, 0.5);\n };\n Editor.prototype.getCursorPosition = function () {\n return this.selection.getCursor();\n };\n Editor.prototype.getCursorPositionScreen = function () {\n return this.session.documentToScreenPosition(this.getCursorPosition());\n };\n Editor.prototype.getSelectionRange = function () {\n return this.selection.getRange();\n };\n Editor.prototype.selectAll = function () {\n this.selection.selectAll();\n };\n Editor.prototype.clearSelection = function () {\n this.selection.clearSelection();\n };\n Editor.prototype.moveCursorTo = function (row, column) {\n this.selection.moveCursorTo(row, column);\n };\n Editor.prototype.moveCursorToPosition = function (pos) {\n this.selection.moveCursorToPosition(pos);\n };\n Editor.prototype.jumpToMatching = function (select, expand) {\n var cursor = this.getCursorPosition();\n var iterator = new TokenIterator(this.session, cursor.row, cursor.column);\n var prevToken = iterator.getCurrentToken();\n var tokenCount = 0;\n if (prevToken && prevToken.type.indexOf('tag-name') !== -1) {\n prevToken = iterator.stepBackward();\n }\n var token = prevToken || iterator.stepForward();\n if (!token)\n return;\n var matchType;\n var found = false;\n var depth = {};\n var i = cursor.column - token.start;\n var bracketType;\n var brackets = {\n \")\": \"(\",\n \"(\": \"(\",\n \"]\": \"[\",\n \"[\": \"[\",\n \"{\": \"{\",\n \"}\": \"{\"\n };\n do {\n if (token.value.match(/[{}()\\[\\]]/g)) {\n for (; i < token.value.length && !found; i++) {\n if (!brackets[token.value[i]]) {\n continue;\n }\n bracketType = brackets[token.value[i]] + '.' + token.type.replace(\"rparen\", \"lparen\");\n if (isNaN(depth[bracketType])) {\n depth[bracketType] = 0;\n }\n switch (token.value[i]) {\n case '(':\n case '[':\n case '{':\n depth[bracketType]++;\n break;\n case ')':\n case ']':\n case '}':\n depth[bracketType]--;\n if (depth[bracketType] === -1) {\n matchType = 'bracket';\n found = true;\n }\n break;\n }\n }\n }\n else if (token.type.indexOf('tag-name') !== -1) {\n if (isNaN(depth[token.value])) {\n depth[token.value] = 0;\n }\n if (prevToken.value === '<' && tokenCount > 1) {\n depth[token.value]++;\n }\n else if (prevToken.value === '= 0; --i) {\n if (this.$tryReplace(ranges[i], replacement)) {\n replaced++;\n }\n }\n this.selection.setSelectionRange(selection);\n return replaced;\n };\n Editor.prototype.$tryReplace = function (range, replacement) {\n var input = this.session.getTextRange(range);\n replacement = this.$search.replace(input, replacement);\n if (replacement !== null) {\n range.end = this.session.replace(range, replacement);\n return range;\n }\n else {\n return null;\n }\n };\n Editor.prototype.getLastSearchOptions = function () {\n return this.$search.getOptions();\n };\n Editor.prototype.find = function (needle, options, animate) {\n if (!options)\n options = {};\n if (typeof needle == \"string\" || needle instanceof RegExp)\n options.needle = needle;\n else if (typeof needle == \"object\")\n oop.mixin(options, needle);\n var range = this.selection.getRange();\n if (options.needle == null) {\n needle = this.session.getTextRange(range)\n || this.$search.$options.needle;\n if (!needle) {\n range = this.session.getWordRange(range.start.row, range.start.column);\n needle = this.session.getTextRange(range);\n }\n this.$search.set({ needle: needle });\n }\n this.$search.set(options);\n if (!options.start)\n this.$search.set({ start: range });\n var newRange = this.$search.find(this.session);\n if (options.preventScroll)\n return newRange;\n if (newRange) {\n this.revealRange(newRange, animate);\n return newRange;\n }\n if (options.backwards)\n range.start = range.end;\n else\n range.end = range.start;\n this.selection.setRange(range);\n };\n Editor.prototype.findNext = function (options, animate) {\n this.find({ skipCurrent: true, backwards: false }, options, animate);\n };\n Editor.prototype.findPrevious = function (options, animate) {\n this.find(options, { skipCurrent: true, backwards: true }, animate);\n };\n Editor.prototype.revealRange = function (range, animate) {\n this.session.unfold(range);\n this.selection.setSelectionRange(range);\n var scrollTop = this.renderer.scrollTop;\n this.renderer.scrollSelectionIntoView(range.start, range.end, 0.5);\n if (animate !== false)\n this.renderer.animateScrolling(scrollTop);\n };\n Editor.prototype.undo = function () {\n this.session.getUndoManager().undo(this.session);\n this.renderer.scrollCursorIntoView(null, 0.5);\n };\n Editor.prototype.redo = function () {\n this.session.getUndoManager().redo(this.session);\n this.renderer.scrollCursorIntoView(null, 0.5);\n };\n Editor.prototype.destroy = function () {\n if (this.$toDestroy) {\n this.$toDestroy.forEach(function (el) {\n el.destroy();\n });\n this.$toDestroy = null;\n }\n if (this.$mouseHandler)\n this.$mouseHandler.destroy();\n this.renderer.destroy();\n this._signal(\"destroy\", this);\n if (this.session)\n this.session.destroy();\n if (this._$emitInputEvent)\n this._$emitInputEvent.cancel();\n this.removeAllListeners();\n };\n Editor.prototype.setAutoScrollEditorIntoView = function (enable) {\n if (!enable)\n return;\n var rect;\n var self = this;\n var shouldScroll = false;\n if (!this.$scrollAnchor)\n this.$scrollAnchor = document.createElement(\"div\");\n var scrollAnchor = this.$scrollAnchor;\n scrollAnchor.style.cssText = \"position:absolute\";\n this.container.insertBefore(scrollAnchor, this.container.firstChild);\n var onChangeSelection = this.on(\"changeSelection\", function () {\n shouldScroll = true;\n });\n var onBeforeRender = this.renderer.on(\"beforeRender\", function () {\n if (shouldScroll)\n rect = self.renderer.container.getBoundingClientRect();\n });\n var onAfterRender = this.renderer.on(\"afterRender\", function () {\n if (shouldScroll && rect && (self.isFocused()\n || self.searchBox && self.searchBox.isFocused())) {\n var renderer = self.renderer;\n var pos = renderer.$cursorLayer.$pixelPos;\n var config = renderer.layerConfig;\n var top = pos.top - config.offset;\n if (pos.top >= 0 && top + rect.top < 0) {\n shouldScroll = true;\n }\n else if (pos.top < config.height &&\n pos.top + rect.top + config.lineHeight > window.innerHeight) {\n shouldScroll = false;\n }\n else {\n shouldScroll = null;\n }\n if (shouldScroll != null) {\n scrollAnchor.style.top = top + \"px\";\n scrollAnchor.style.left = pos.left + \"px\";\n scrollAnchor.style.height = config.lineHeight + \"px\";\n scrollAnchor.scrollIntoView(shouldScroll);\n }\n shouldScroll = rect = null;\n }\n });\n this.setAutoScrollEditorIntoView = function (enable) {\n if (enable)\n return;\n delete this.setAutoScrollEditorIntoView;\n this.off(\"changeSelection\", onChangeSelection);\n this.renderer.off(\"afterRender\", onAfterRender);\n this.renderer.off(\"beforeRender\", onBeforeRender);\n };\n };\n Editor.prototype.$resetCursorStyle = function () {\n var style = this.$cursorStyle || \"ace\";\n var cursorLayer = this.renderer.$cursorLayer;\n if (!cursorLayer)\n return;\n cursorLayer.setSmoothBlinking(/smooth/.test(style));\n cursorLayer.isBlinking = !this.$readOnly && style != \"wide\";\n dom.setCssClass(cursorLayer.element, \"ace_slim-cursors\", /slim/.test(style));\n };\n Editor.prototype.prompt = function (message, options, callback) {\n var editor = this;\n config.loadModule(\"ace/ext/prompt\", function (module) {\n module.prompt(editor, message, options, callback);\n });\n };\n return Editor;\n}());\nEditor.$uid = 0;\nEditor.prototype.curOp = null;\nEditor.prototype.prevOp = {};\nEditor.prototype.$mergeableCommands = [\"backspace\", \"del\", \"insertstring\"];\nEditor.prototype.$toggleWordPairs = [\n [\"first\", \"last\"],\n [\"true\", \"false\"],\n [\"yes\", \"no\"],\n [\"width\", \"height\"],\n [\"top\", \"bottom\"],\n [\"right\", \"left\"],\n [\"on\", \"off\"],\n [\"x\", \"y\"],\n [\"get\", \"set\"],\n [\"max\", \"min\"],\n [\"horizontal\", \"vertical\"],\n [\"show\", \"hide\"],\n [\"add\", \"remove\"],\n [\"up\", \"down\"],\n [\"before\", \"after\"],\n [\"even\", \"odd\"],\n [\"in\", \"out\"],\n [\"inside\", \"outside\"],\n [\"next\", \"previous\"],\n [\"increase\", \"decrease\"],\n [\"attach\", \"detach\"],\n [\"&&\", \"||\"],\n [\"==\", \"!=\"]\n];\noop.implement(Editor.prototype, EventEmitter);\nconfig.defineOptions(Editor.prototype, \"editor\", {\n selectionStyle: {\n set: function (style) {\n this.onSelectionChange();\n this._signal(\"changeSelectionStyle\", { data: style });\n },\n initialValue: \"line\"\n },\n highlightActiveLine: {\n set: function () { this.$updateHighlightActiveLine(); },\n initialValue: true\n },\n highlightSelectedWord: {\n set: function (shouldHighlight) { this.$onSelectionChange(); },\n initialValue: true\n },\n readOnly: {\n set: function (readOnly) {\n this.textInput.setReadOnly(readOnly);\n this.$resetCursorStyle();\n },\n initialValue: false\n },\n copyWithEmptySelection: {\n set: function (value) {\n this.textInput.setCopyWithEmptySelection(value);\n },\n initialValue: false\n },\n cursorStyle: {\n set: function (val) { this.$resetCursorStyle(); },\n values: [\"ace\", \"slim\", \"smooth\", \"wide\"],\n initialValue: \"ace\"\n },\n mergeUndoDeltas: {\n values: [false, true, \"always\"],\n initialValue: true\n },\n behavioursEnabled: { initialValue: true },\n wrapBehavioursEnabled: { initialValue: true },\n enableAutoIndent: { initialValue: true },\n autoScrollEditorIntoView: {\n set: function (val) { this.setAutoScrollEditorIntoView(val); }\n },\n keyboardHandler: {\n set: function (val) { this.setKeyboardHandler(val); },\n get: function () { return this.$keybindingId; },\n handlesSet: true\n },\n value: {\n set: function (val) { this.session.setValue(val); },\n get: function () { return this.getValue(); },\n handlesSet: true,\n hidden: true\n },\n session: {\n set: function (val) { this.setSession(val); },\n get: function () { return this.session; },\n handlesSet: true,\n hidden: true\n },\n showLineNumbers: {\n set: function (show) {\n this.renderer.$gutterLayer.setShowLineNumbers(show);\n this.renderer.$loop.schedule(this.renderer.CHANGE_GUTTER);\n if (show && this.$relativeLineNumbers)\n relativeNumberRenderer.attach(this);\n else\n relativeNumberRenderer.detach(this);\n },\n initialValue: true\n },\n relativeLineNumbers: {\n set: function (value) {\n if (this.$showLineNumbers && value)\n relativeNumberRenderer.attach(this);\n else\n relativeNumberRenderer.detach(this);\n }\n },\n placeholder: {\n set: function (message) {\n if (!this.$updatePlaceholder) {\n this.$updatePlaceholder = function () {\n var hasValue = this.session && (this.renderer.$composition ||\n this.session.getLength() > 1 || this.session.getLine(0).length > 0);\n if (hasValue && this.renderer.placeholderNode) {\n this.renderer.off(\"afterRender\", this.$updatePlaceholder);\n dom.removeCssClass(this.container, \"ace_hasPlaceholder\");\n this.renderer.placeholderNode.remove();\n this.renderer.placeholderNode = null;\n }\n else if (!hasValue && !this.renderer.placeholderNode) {\n this.renderer.on(\"afterRender\", this.$updatePlaceholder);\n dom.addCssClass(this.container, \"ace_hasPlaceholder\");\n var el = dom.createElement(\"div\");\n el.className = \"ace_placeholder\";\n el.textContent = this.$placeholder || \"\";\n this.renderer.placeholderNode = el;\n this.renderer.content.appendChild(this.renderer.placeholderNode);\n }\n else if (!hasValue && this.renderer.placeholderNode) {\n this.renderer.placeholderNode.textContent = this.$placeholder || \"\";\n }\n }.bind(this);\n this.on(\"input\", this.$updatePlaceholder);\n }\n this.$updatePlaceholder();\n }\n },\n enableKeyboardAccessibility: {\n set: function (value) {\n var blurCommand = {\n name: \"blurTextInput\",\n description: \"Set focus to the editor content div to allow tabbing through the page\",\n bindKey: \"Esc\",\n exec: function (editor) {\n editor.blur();\n editor.renderer.scroller.focus();\n },\n readOnly: true\n };\n var focusOnEnterKeyup = function (e) {\n if (e.target == this.renderer.scroller && e.keyCode === keys['enter']) {\n e.preventDefault();\n var row = this.getCursorPosition().row;\n if (!this.isRowVisible(row))\n this.scrollToLine(row, true, true);\n this.focus();\n }\n };\n var gutterKeyboardHandler;\n if (value) {\n this.renderer.enableKeyboardAccessibility = true;\n this.renderer.keyboardFocusClassName = \"ace_keyboard-focus\";\n this.textInput.getElement().setAttribute(\"tabindex\", -1);\n this.textInput.setNumberOfExtraLines(useragent.isWin ? 3 : 0);\n this.renderer.scroller.setAttribute(\"tabindex\", 0);\n this.renderer.scroller.setAttribute(\"role\", \"group\");\n this.renderer.scroller.setAttribute(\"aria-roledescription\", nls(\"editor\"));\n this.renderer.scroller.classList.add(this.renderer.keyboardFocusClassName);\n this.renderer.scroller.setAttribute(\"aria-label\", nls(\"Editor content, press Enter to start editing, press Escape to exit\"));\n this.renderer.scroller.addEventListener(\"keyup\", focusOnEnterKeyup.bind(this));\n this.commands.addCommand(blurCommand);\n this.renderer.$gutter.setAttribute(\"tabindex\", 0);\n this.renderer.$gutter.setAttribute(\"aria-hidden\", false);\n this.renderer.$gutter.setAttribute(\"role\", \"group\");\n this.renderer.$gutter.setAttribute(\"aria-roledescription\", nls(\"editor\"));\n this.renderer.$gutter.setAttribute(\"aria-label\", nls(\"Editor gutter, press Enter to interact with controls using arrow keys, press Escape to exit\"));\n this.renderer.$gutter.classList.add(this.renderer.keyboardFocusClassName);\n this.renderer.content.setAttribute(\"aria-hidden\", true);\n if (!gutterKeyboardHandler)\n gutterKeyboardHandler = new GutterKeyboardHandler(this);\n gutterKeyboardHandler.addListener();\n }\n else {\n this.renderer.enableKeyboardAccessibility = false;\n this.textInput.getElement().setAttribute(\"tabindex\", 0);\n this.textInput.setNumberOfExtraLines(0);\n this.renderer.scroller.setAttribute(\"tabindex\", -1);\n this.renderer.scroller.removeAttribute(\"role\");\n this.renderer.scroller.removeAttribute(\"aria-roledescription\");\n this.renderer.scroller.classList.remove(this.renderer.keyboardFocusClassName);\n this.renderer.scroller.removeAttribute(\"aria-label\");\n this.renderer.scroller.removeEventListener(\"keyup\", focusOnEnterKeyup.bind(this));\n this.commands.removeCommand(blurCommand);\n this.renderer.content.removeAttribute(\"aria-hidden\");\n this.renderer.$gutter.setAttribute(\"tabindex\", -1);\n this.renderer.$gutter.setAttribute(\"aria-hidden\", true);\n this.renderer.$gutter.removeAttribute(\"role\");\n this.renderer.$gutter.removeAttribute(\"aria-roledescription\");\n this.renderer.$gutter.removeAttribute(\"aria-label\");\n this.renderer.$gutter.classList.remove(this.renderer.keyboardFocusClassName);\n if (gutterKeyboardHandler)\n gutterKeyboardHandler.removeListener();\n }\n },\n initialValue: false\n },\n customScrollbar: \"renderer\",\n hScrollBarAlwaysVisible: \"renderer\",\n vScrollBarAlwaysVisible: \"renderer\",\n highlightGutterLine: \"renderer\",\n animatedScroll: \"renderer\",\n showInvisibles: \"renderer\",\n showPrintMargin: \"renderer\",\n printMarginColumn: \"renderer\",\n printMargin: \"renderer\",\n fadeFoldWidgets: \"renderer\",\n showFoldWidgets: \"renderer\",\n displayIndentGuides: \"renderer\",\n highlightIndentGuides: \"renderer\",\n showGutter: \"renderer\",\n fontSize: \"renderer\",\n fontFamily: \"renderer\",\n maxLines: \"renderer\",\n minLines: \"renderer\",\n scrollPastEnd: \"renderer\",\n fixedWidthGutter: \"renderer\",\n theme: \"renderer\",\n hasCssTransforms: \"renderer\",\n maxPixelHeight: \"renderer\",\n useTextareaForIME: \"renderer\",\n useResizeObserver: \"renderer\",\n useSvgGutterIcons: \"renderer\",\n showFoldedAnnotations: \"renderer\",\n scrollSpeed: \"$mouseHandler\",\n dragDelay: \"$mouseHandler\",\n dragEnabled: \"$mouseHandler\",\n focusTimeout: \"$mouseHandler\",\n tooltipFollowsMouse: \"$mouseHandler\",\n firstLineNumber: \"session\",\n overwrite: \"session\",\n newLineMode: \"session\",\n useWorker: \"session\",\n useSoftTabs: \"session\",\n navigateWithinSoftTabs: \"session\",\n tabSize: \"session\",\n wrap: \"session\",\n indentedSoftWrap: \"session\",\n foldStyle: \"session\",\n mode: \"session\"\n});\nvar relativeNumberRenderer = {\n getText: function (session, row) {\n return (Math.abs(session.selection.lead.row - row) || (row + 1 + (row < 9 ? \"\\xb7\" : \"\"))) + \"\";\n },\n getWidth: function (session, lastLineNumber, config) {\n return Math.max(lastLineNumber.toString().length, (config.lastRow + 1).toString().length, 2) * config.characterWidth;\n },\n update: function (e, editor) {\n editor.renderer.$loop.schedule(editor.renderer.CHANGE_GUTTER);\n },\n attach: function (editor) {\n editor.renderer.$gutterLayer.$renderer = this;\n editor.on(\"changeSelection\", this.update);\n this.update(null, editor);\n },\n detach: function (editor) {\n if (editor.renderer.$gutterLayer.$renderer == this)\n editor.renderer.$gutterLayer.$renderer = null;\n editor.off(\"changeSelection\", this.update);\n this.update(null, editor);\n }\n};\nexports.Editor = Editor;\n\n});\n\nace.define(\"ace/layer/lines\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"], function(require, exports, module){\"use strict\";\nvar dom = require(\"../lib/dom\");\nvar Lines = /** @class */ (function () {\n function Lines(element, canvasHeight) {\n this.element = element;\n this.canvasHeight = canvasHeight || 500000;\n this.element.style.height = (this.canvasHeight * 2) + \"px\";\n this.cells = [];\n this.cellCache = [];\n this.$offsetCoefficient = 0;\n }\n Lines.prototype.moveContainer = function (config) {\n dom.translate(this.element, 0, -((config.firstRowScreen * config.lineHeight) % this.canvasHeight) - config.offset * this.$offsetCoefficient);\n };\n Lines.prototype.pageChanged = function (oldConfig, newConfig) {\n return (Math.floor((oldConfig.firstRowScreen * oldConfig.lineHeight) / this.canvasHeight) !==\n Math.floor((newConfig.firstRowScreen * newConfig.lineHeight) / this.canvasHeight));\n };\n Lines.prototype.computeLineTop = function (row, config, session) {\n var screenTop = config.firstRowScreen * config.lineHeight;\n var screenPage = Math.floor(screenTop / this.canvasHeight);\n var lineTop = session.documentToScreenRow(row, 0) * config.lineHeight;\n return lineTop - (screenPage * this.canvasHeight);\n };\n Lines.prototype.computeLineHeight = function (row, config, session) {\n return config.lineHeight * session.getRowLineCount(row);\n };\n Lines.prototype.getLength = function () {\n return this.cells.length;\n };\n Lines.prototype.get = function (index) {\n return this.cells[index];\n };\n Lines.prototype.shift = function () {\n this.$cacheCell(this.cells.shift());\n };\n Lines.prototype.pop = function () {\n this.$cacheCell(this.cells.pop());\n };\n Lines.prototype.push = function (cell) {\n if (Array.isArray(cell)) {\n this.cells.push.apply(this.cells, cell);\n var fragment = dom.createFragment(this.element);\n for (var i = 0; i < cell.length; i++) {\n fragment.appendChild(cell[i].element);\n }\n this.element.appendChild(fragment);\n }\n else {\n this.cells.push(cell);\n this.element.appendChild(cell.element);\n }\n };\n Lines.prototype.unshift = function (cell) {\n if (Array.isArray(cell)) {\n this.cells.unshift.apply(this.cells, cell);\n var fragment = dom.createFragment(this.element);\n for (var i = 0; i < cell.length; i++) {\n fragment.appendChild(cell[i].element);\n }\n if (this.element.firstChild)\n this.element.insertBefore(fragment, this.element.firstChild);\n else\n this.element.appendChild(fragment);\n }\n else {\n this.cells.unshift(cell);\n this.element.insertAdjacentElement(\"afterbegin\", cell.element);\n }\n };\n Lines.prototype.last = function () {\n if (this.cells.length)\n return this.cells[this.cells.length - 1];\n else\n return null;\n };\n Lines.prototype.$cacheCell = function (cell) {\n if (!cell)\n return;\n cell.element.remove();\n this.cellCache.push(cell);\n };\n Lines.prototype.createCell = function (row, config, session, initElement) {\n var cell = this.cellCache.pop();\n if (!cell) {\n var element = dom.createElement(\"div\");\n if (initElement)\n initElement(element);\n this.element.appendChild(element);\n cell = {\n element: element,\n text: \"\",\n row: row\n };\n }\n cell.row = row;\n return cell;\n };\n return Lines;\n}());\nexports.Lines = Lines;\n\n});\n\nace.define(\"ace/layer/gutter\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/lib/event_emitter\",\"ace/layer/lines\",\"ace/config\"], function(require, exports, module){\"use strict\";\nvar dom = require(\"../lib/dom\");\nvar oop = require(\"../lib/oop\");\nvar lang = require(\"../lib/lang\");\nvar EventEmitter = require(\"../lib/event_emitter\").EventEmitter;\nvar Lines = require(\"./lines\").Lines;\nvar nls = require(\"../config\").nls;\nvar Gutter = /** @class */ (function () {\n function Gutter(parentEl) {\n this.element = dom.createElement(\"div\");\n this.element.className = \"ace_layer ace_gutter-layer\";\n parentEl.appendChild(this.element);\n this.setShowFoldWidgets(this.$showFoldWidgets);\n this.gutterWidth = 0;\n this.$annotations = [];\n this.$updateAnnotations = this.$updateAnnotations.bind(this);\n this.$lines = new Lines(this.element);\n this.$lines.$offsetCoefficient = 1;\n }\n Gutter.prototype.setSession = function (session) {\n if (this.session)\n this.session.off(\"change\", this.$updateAnnotations);\n this.session = session;\n if (session)\n session.on(\"change\", this.$updateAnnotations);\n };\n Gutter.prototype.addGutterDecoration = function (row, className) {\n if (window.console)\n console.warn && console.warn(\"deprecated use session.addGutterDecoration\");\n this.session.addGutterDecoration(row, className);\n };\n Gutter.prototype.removeGutterDecoration = function (row, className) {\n if (window.console)\n console.warn && console.warn(\"deprecated use session.removeGutterDecoration\");\n this.session.removeGutterDecoration(row, className);\n };\n Gutter.prototype.setAnnotations = function (annotations) {\n this.$annotations = [];\n for (var i = 0; i < annotations.length; i++) {\n var annotation = annotations[i];\n var row = annotation.row;\n var rowInfo = this.$annotations[row];\n if (!rowInfo)\n rowInfo = this.$annotations[row] = { text: [], type: [] };\n var annoText = annotation.text;\n var annoType = annotation.type;\n annoText = annoText ? lang.escapeHTML(annoText) : annotation.html || \"\";\n if (rowInfo.text.indexOf(annoText) === -1) {\n rowInfo.text.push(annoText);\n rowInfo.type.push(annoType);\n }\n var className = annotation.className;\n if (className)\n rowInfo.className = className;\n else if (annoType == \"error\")\n rowInfo.className = \" ace_error\";\n else if (annoType == \"warning\" && rowInfo.className != \" ace_error\")\n rowInfo.className = \" ace_warning\";\n else if (annoType == \"info\" && (!rowInfo.className))\n rowInfo.className = \" ace_info\";\n }\n };\n Gutter.prototype.$updateAnnotations = function (delta) {\n if (!this.$annotations.length)\n return;\n var firstRow = delta.start.row;\n var len = delta.end.row - firstRow;\n if (len === 0) {\n }\n else if (delta.action == 'remove') {\n this.$annotations.splice(firstRow, len + 1, null);\n }\n else {\n var args = new Array(len + 1);\n args.unshift(firstRow, 1);\n this.$annotations.splice.apply(this.$annotations, args);\n }\n };\n Gutter.prototype.update = function (config) {\n this.config = config;\n var session = this.session;\n var firstRow = config.firstRow;\n var lastRow = Math.min(config.lastRow + config.gutterOffset, // needed to compensate for hor scollbar\n session.getLength() - 1);\n this.oldLastRow = lastRow;\n this.config = config;\n this.$lines.moveContainer(config);\n this.$updateCursorRow();\n var fold = session.getNextFoldLine(firstRow);\n var foldStart = fold ? fold.start.row : Infinity;\n var cell = null;\n var index = -1;\n var row = firstRow;\n while (true) {\n if (row > foldStart) {\n row = fold.end.row + 1;\n fold = session.getNextFoldLine(row, fold);\n foldStart = fold ? fold.start.row : Infinity;\n }\n if (row > lastRow) {\n while (this.$lines.getLength() > index + 1)\n this.$lines.pop();\n break;\n }\n cell = this.$lines.get(++index);\n if (cell) {\n cell.row = row;\n }\n else {\n cell = this.$lines.createCell(row, config, this.session, onCreateCell);\n this.$lines.push(cell);\n }\n this.$renderCell(cell, config, fold, row);\n row++;\n }\n this._signal(\"afterRender\");\n this.$updateGutterWidth(config);\n };\n Gutter.prototype.$updateGutterWidth = function (config) {\n var session = this.session;\n var gutterRenderer = session.gutterRenderer || this.$renderer;\n var firstLineNumber = session.$firstLineNumber;\n var lastLineText = this.$lines.last() ? this.$lines.last().text : \"\";\n if (this.$fixedWidth || session.$useWrapMode)\n lastLineText = session.getLength() + firstLineNumber - 1;\n var gutterWidth = gutterRenderer\n ? gutterRenderer.getWidth(session, lastLineText, config)\n : lastLineText.toString().length * config.characterWidth;\n var padding = this.$padding || this.$computePadding();\n gutterWidth += padding.left + padding.right;\n if (gutterWidth !== this.gutterWidth && !isNaN(gutterWidth)) {\n this.gutterWidth = gutterWidth;\n this.element.parentNode.style.width =\n this.element.style.width = Math.ceil(this.gutterWidth) + \"px\";\n this._signal(\"changeGutterWidth\", gutterWidth);\n }\n };\n Gutter.prototype.$updateCursorRow = function () {\n if (!this.$highlightGutterLine)\n return;\n var position = this.session.selection.getCursor();\n if (this.$cursorRow === position.row)\n return;\n this.$cursorRow = position.row;\n };\n Gutter.prototype.updateLineHighlight = function () {\n if (!this.$highlightGutterLine)\n return;\n var row = this.session.selection.cursor.row;\n this.$cursorRow = row;\n if (this.$cursorCell && this.$cursorCell.row == row)\n return;\n if (this.$cursorCell)\n this.$cursorCell.element.className = this.$cursorCell.element.className.replace(\"ace_gutter-active-line \", \"\");\n var cells = this.$lines.cells;\n this.$cursorCell = null;\n for (var i = 0; i < cells.length; i++) {\n var cell = cells[i];\n if (cell.row >= this.$cursorRow) {\n if (cell.row > this.$cursorRow) {\n var fold = this.session.getFoldLine(this.$cursorRow);\n if (i > 0 && fold && fold.start.row == cells[i - 1].row)\n cell = cells[i - 1];\n else\n break;\n }\n cell.element.className = \"ace_gutter-active-line \" + cell.element.className;\n this.$cursorCell = cell;\n break;\n }\n }\n };\n Gutter.prototype.scrollLines = function (config) {\n var oldConfig = this.config;\n this.config = config;\n this.$updateCursorRow();\n if (this.$lines.pageChanged(oldConfig, config))\n return this.update(config);\n this.$lines.moveContainer(config);\n var lastRow = Math.min(config.lastRow + config.gutterOffset, // needed to compensate for hor scollbar\n this.session.getLength() - 1);\n var oldLastRow = this.oldLastRow;\n this.oldLastRow = lastRow;\n if (!oldConfig || oldLastRow < config.firstRow)\n return this.update(config);\n if (lastRow < oldConfig.firstRow)\n return this.update(config);\n if (oldConfig.firstRow < config.firstRow)\n for (var row = this.session.getFoldedRowCount(oldConfig.firstRow, config.firstRow - 1); row > 0; row--)\n this.$lines.shift();\n if (oldLastRow > lastRow)\n for (var row = this.session.getFoldedRowCount(lastRow + 1, oldLastRow); row > 0; row--)\n this.$lines.pop();\n if (config.firstRow < oldConfig.firstRow) {\n this.$lines.unshift(this.$renderLines(config, config.firstRow, oldConfig.firstRow - 1));\n }\n if (lastRow > oldLastRow) {\n this.$lines.push(this.$renderLines(config, oldLastRow + 1, lastRow));\n }\n this.updateLineHighlight();\n this._signal(\"afterRender\");\n this.$updateGutterWidth(config);\n };\n Gutter.prototype.$renderLines = function (config, firstRow, lastRow) {\n var fragment = [];\n var row = firstRow;\n var foldLine = this.session.getNextFoldLine(row);\n var foldStart = foldLine ? foldLine.start.row : Infinity;\n while (true) {\n if (row > foldStart) {\n row = foldLine.end.row + 1;\n foldLine = this.session.getNextFoldLine(row, foldLine);\n foldStart = foldLine ? foldLine.start.row : Infinity;\n }\n if (row > lastRow)\n break;\n var cell = this.$lines.createCell(row, config, this.session, onCreateCell);\n this.$renderCell(cell, config, foldLine, row);\n fragment.push(cell);\n row++;\n }\n return fragment;\n };\n Gutter.prototype.$renderCell = function (cell, config, fold, row) {\n var element = cell.element;\n var session = this.session;\n var textNode = element.childNodes[0];\n var foldWidget = element.childNodes[1];\n var annotationNode = element.childNodes[2];\n var annotationIconNode = annotationNode.firstChild;\n var firstLineNumber = session.$firstLineNumber;\n var breakpoints = session.$breakpoints;\n var decorations = session.$decorations;\n var gutterRenderer = session.gutterRenderer || this.$renderer;\n var foldWidgets = this.$showFoldWidgets && session.foldWidgets;\n var foldStart = fold ? fold.start.row : Number.MAX_VALUE;\n var lineHeight = config.lineHeight + \"px\";\n var className = this.$useSvgGutterIcons ? \"ace_gutter-cell_svg-icons \" : \"ace_gutter-cell \";\n var iconClassName = this.$useSvgGutterIcons ? \"ace_icon_svg\" : \"ace_icon\";\n var rowText = (gutterRenderer\n ? gutterRenderer.getText(session, row)\n : row + firstLineNumber).toString();\n if (this.$highlightGutterLine) {\n if (row == this.$cursorRow || (fold && row < this.$cursorRow && row >= foldStart && this.$cursorRow <= fold.end.row)) {\n className += \"ace_gutter-active-line \";\n if (this.$cursorCell != cell) {\n if (this.$cursorCell)\n this.$cursorCell.element.className = this.$cursorCell.element.className.replace(\"ace_gutter-active-line \", \"\");\n this.$cursorCell = cell;\n }\n }\n }\n if (breakpoints[row])\n className += breakpoints[row];\n if (decorations[row])\n className += decorations[row];\n if (this.$annotations[row] && row !== foldStart)\n className += this.$annotations[row].className;\n if (foldWidgets) {\n var c = foldWidgets[row];\n if (c == null)\n c = foldWidgets[row] = session.getFoldWidget(row);\n }\n if (c) {\n var foldClass = \"ace_fold-widget ace_\" + c;\n var isClosedFold = c == \"start\" && row == foldStart && row < fold.end.row;\n if (isClosedFold) {\n foldClass += \" ace_closed\";\n var foldAnnotationClass = '';\n var annotationInFold = false;\n for (var i = row + 1; i <= fold.end.row; i++) {\n if (!this.$annotations[i])\n continue;\n if (this.$annotations[i].className === \" ace_error\") {\n annotationInFold = true;\n foldAnnotationClass = \" ace_error_fold\";\n break;\n }\n if (this.$annotations[i].className === \" ace_warning\") {\n annotationInFold = true;\n foldAnnotationClass = \" ace_warning_fold\";\n continue;\n }\n }\n className += foldAnnotationClass;\n }\n else\n foldClass += \" ace_open\";\n if (foldWidget.className != foldClass)\n foldWidget.className = foldClass;\n dom.setStyle(foldWidget.style, \"height\", lineHeight);\n dom.setStyle(foldWidget.style, \"display\", \"inline-block\");\n foldWidget.setAttribute(\"role\", \"button\");\n foldWidget.setAttribute(\"tabindex\", \"-1\");\n var foldRange = session.getFoldWidgetRange(row);\n if (foldRange)\n foldWidget.setAttribute(\"aria-label\", nls(\"Toggle code folding, rows $0 through $1\", [foldRange.start.row + 1, foldRange.end.row + 1]));\n else {\n if (fold)\n foldWidget.setAttribute(\"aria-label\", nls(\"Toggle code folding, rows $0 through $1\", [fold.start.row + 1, fold.end.row + 1]));\n else\n foldWidget.setAttribute(\"aria-label\", nls(\"Toggle code folding, row $0\", [row + 1]));\n }\n if (isClosedFold) {\n foldWidget.setAttribute(\"aria-expanded\", \"false\");\n foldWidget.setAttribute(\"title\", nls(\"Unfold code\"));\n }\n else {\n foldWidget.setAttribute(\"aria-expanded\", \"true\");\n foldWidget.setAttribute(\"title\", nls(\"Fold code\"));\n }\n }\n else {\n if (foldWidget) {\n dom.setStyle(foldWidget.style, \"display\", \"none\");\n foldWidget.setAttribute(\"tabindex\", \"0\");\n foldWidget.removeAttribute(\"role\");\n foldWidget.removeAttribute(\"aria-label\");\n }\n }\n if (annotationInFold && this.$showFoldedAnnotations) {\n annotationNode.className = \"ace_gutter_annotation\";\n annotationIconNode.className = iconClassName;\n annotationIconNode.className += foldAnnotationClass;\n dom.setStyle(annotationIconNode.style, \"height\", lineHeight);\n dom.setStyle(annotationNode.style, \"display\", \"block\");\n dom.setStyle(annotationNode.style, \"height\", lineHeight);\n annotationNode.setAttribute(\"aria-label\", nls(\"Read annotations row $0\", [rowText]));\n annotationNode.setAttribute(\"tabindex\", \"-1\");\n annotationNode.setAttribute(\"role\", \"button\");\n }\n else if (this.$annotations[row]) {\n annotationNode.className = \"ace_gutter_annotation\";\n annotationIconNode.className = iconClassName;\n if (this.$useSvgGutterIcons)\n annotationIconNode.className += this.$annotations[row].className;\n else\n element.classList.add(this.$annotations[row].className.replace(\" \", \"\"));\n dom.setStyle(annotationIconNode.style, \"height\", lineHeight);\n dom.setStyle(annotationNode.style, \"display\", \"block\");\n dom.setStyle(annotationNode.style, \"height\", lineHeight);\n annotationNode.setAttribute(\"aria-label\", nls(\"Read annotations row $0\", [rowText]));\n annotationNode.setAttribute(\"tabindex\", \"-1\");\n annotationNode.setAttribute(\"role\", \"button\");\n }\n else {\n dom.setStyle(annotationNode.style, \"display\", \"none\");\n annotationNode.removeAttribute(\"aria-label\");\n annotationNode.removeAttribute(\"role\");\n annotationNode.setAttribute(\"tabindex\", \"0\");\n }\n if (rowText !== textNode.data) {\n textNode.data = rowText;\n }\n if (element.className != className)\n element.className = className;\n dom.setStyle(cell.element.style, \"height\", this.$lines.computeLineHeight(row, config, session) + \"px\");\n dom.setStyle(cell.element.style, \"top\", this.$lines.computeLineTop(row, config, session) + \"px\");\n cell.text = rowText;\n if (annotationNode.style.display === \"none\" && foldWidget.style.display === \"none\")\n cell.element.setAttribute(\"aria-hidden\", true);\n else\n cell.element.setAttribute(\"aria-hidden\", false);\n return cell;\n };\n Gutter.prototype.setHighlightGutterLine = function (highlightGutterLine) {\n this.$highlightGutterLine = highlightGutterLine;\n };\n Gutter.prototype.setShowLineNumbers = function (show) {\n this.$renderer = !show && {\n getWidth: function () { return 0; },\n getText: function () { return \"\"; }\n };\n };\n Gutter.prototype.getShowLineNumbers = function () {\n return this.$showLineNumbers;\n };\n Gutter.prototype.setShowFoldWidgets = function (show) {\n if (show)\n dom.addCssClass(this.element, \"ace_folding-enabled\");\n else\n dom.removeCssClass(this.element, \"ace_folding-enabled\");\n this.$showFoldWidgets = show;\n this.$padding = null;\n };\n Gutter.prototype.getShowFoldWidgets = function () {\n return this.$showFoldWidgets;\n };\n Gutter.prototype.$computePadding = function () {\n if (!this.element.firstChild)\n return { left: 0, right: 0 };\n var style = dom.computedStyle(this.element.firstChild);\n this.$padding = {};\n this.$padding.left = (parseInt(style.borderLeftWidth) || 0)\n + (parseInt(style.paddingLeft) || 0) + 1;\n this.$padding.right = (parseInt(style.borderRightWidth) || 0)\n + (parseInt(style.paddingRight) || 0);\n return this.$padding;\n };\n Gutter.prototype.getRegion = function (point) {\n var padding = this.$padding || this.$computePadding();\n var rect = this.element.getBoundingClientRect();\n if (point.x < padding.left + rect.left)\n return \"markers\";\n if (this.$showFoldWidgets && point.x > rect.right - padding.right)\n return \"foldWidgets\";\n };\n return Gutter;\n}());\nGutter.prototype.$fixedWidth = false;\nGutter.prototype.$highlightGutterLine = true;\nGutter.prototype.$renderer = \"\";\nGutter.prototype.$showLineNumbers = true;\nGutter.prototype.$showFoldWidgets = true;\noop.implement(Gutter.prototype, EventEmitter);\nfunction onCreateCell(element) {\n var textNode = document.createTextNode('');\n element.appendChild(textNode);\n var foldWidget = dom.createElement(\"span\");\n element.appendChild(foldWidget);\n var annotationNode = dom.createElement(\"span\");\n element.appendChild(annotationNode);\n var annotationIconNode = dom.createElement(\"span\");\n annotationNode.appendChild(annotationIconNode);\n return element;\n}\nexports.Gutter = Gutter;\n\n});\n\nace.define(\"ace/layer/marker\",[\"require\",\"exports\",\"module\",\"ace/range\",\"ace/lib/dom\"], function(require, exports, module){\"use strict\";\nvar Range = require(\"../range\").Range;\nvar dom = require(\"../lib/dom\");\nvar Marker = /** @class */ (function () {\n function Marker(parentEl) {\n this.element = dom.createElement(\"div\");\n this.element.className = \"ace_layer ace_marker-layer\";\n parentEl.appendChild(this.element);\n }\n Marker.prototype.setPadding = function (padding) {\n this.$padding = padding;\n };\n Marker.prototype.setSession = function (session) {\n this.session = session;\n };\n Marker.prototype.setMarkers = function (markers) {\n this.markers = markers;\n };\n Marker.prototype.elt = function (className, css) {\n var x = this.i != -1 && this.element.childNodes[this.i];\n if (!x) {\n x = document.createElement(\"div\");\n this.element.appendChild(x);\n this.i = -1;\n }\n else {\n this.i++;\n }\n x.style.cssText = css;\n x.className = className;\n };\n Marker.prototype.update = function (config) {\n if (!config)\n return;\n this.config = config;\n this.i = 0;\n var html;\n for (var key in this.markers) {\n var marker = this.markers[key];\n if (!marker.range) {\n marker.update(html, this, this.session, config);\n continue;\n }\n var range = marker.range.clipRows(config.firstRow, config.lastRow);\n if (range.isEmpty())\n continue;\n range = range.toScreenRange(this.session);\n if (marker.renderer) {\n var top = this.$getTop(range.start.row, config);\n var left = this.$padding + range.start.column * config.characterWidth;\n marker.renderer(html, range, left, top, config);\n }\n else if (marker.type == \"fullLine\") {\n this.drawFullLineMarker(html, range, marker.clazz, config);\n }\n else if (marker.type == \"screenLine\") {\n this.drawScreenLineMarker(html, range, marker.clazz, config);\n }\n else if (range.isMultiLine()) {\n if (marker.type == \"text\")\n this.drawTextMarker(html, range, marker.clazz, config);\n else\n this.drawMultiLineMarker(html, range, marker.clazz, config);\n }\n else {\n this.drawSingleLineMarker(html, range, marker.clazz + \" ace_start\" + \" ace_br15\", config);\n }\n }\n if (this.i != -1) {\n while (this.i < this.element.childElementCount)\n this.element.removeChild(this.element.lastChild);\n }\n };\n Marker.prototype.$getTop = function (row, layerConfig) {\n return (row - layerConfig.firstRowScreen) * layerConfig.lineHeight;\n };\n Marker.prototype.drawTextMarker = function (stringBuilder, range, clazz, layerConfig, extraStyle) {\n var session = this.session;\n var start = range.start.row;\n var end = range.end.row;\n var row = start;\n var prev = 0;\n var curr = 0;\n var next = session.getScreenLastRowColumn(row);\n var lineRange = new Range(row, range.start.column, row, curr);\n for (; row <= end; row++) {\n lineRange.start.row = lineRange.end.row = row;\n lineRange.start.column = row == start ? range.start.column : session.getRowWrapIndent(row);\n lineRange.end.column = next;\n prev = curr;\n curr = next;\n next = row + 1 < end ? session.getScreenLastRowColumn(row + 1) : row == end ? 0 : range.end.column;\n this.drawSingleLineMarker(stringBuilder, lineRange, clazz + (row == start ? \" ace_start\" : \"\") + \" ace_br\"\n + getBorderClass(row == start || row == start + 1 && range.start.column, prev < curr, curr > next, row == end), layerConfig, row == end ? 0 : 1, extraStyle);\n }\n };\n Marker.prototype.drawMultiLineMarker = function (stringBuilder, range, clazz, config, extraStyle) {\n var padding = this.$padding;\n var height = config.lineHeight;\n var top = this.$getTop(range.start.row, config);\n var left = padding + range.start.column * config.characterWidth;\n extraStyle = extraStyle || \"\";\n if (this.session.$bidiHandler.isBidiRow(range.start.row)) {\n var range1 = range.clone();\n range1.end.row = range1.start.row;\n range1.end.column = this.session.getLine(range1.start.row).length;\n this.drawBidiSingleLineMarker(stringBuilder, range1, clazz + \" ace_br1 ace_start\", config, null, extraStyle);\n }\n else {\n this.elt(clazz + \" ace_br1 ace_start\", \"height:\" + height + \"px;\" + \"right:0;\" + \"top:\" + top + \"px;left:\" + left + \"px;\" + (extraStyle || \"\"));\n }\n if (this.session.$bidiHandler.isBidiRow(range.end.row)) {\n var range1 = range.clone();\n range1.start.row = range1.end.row;\n range1.start.column = 0;\n this.drawBidiSingleLineMarker(stringBuilder, range1, clazz + \" ace_br12\", config, null, extraStyle);\n }\n else {\n top = this.$getTop(range.end.row, config);\n var width = range.end.column * config.characterWidth;\n this.elt(clazz + \" ace_br12\", \"height:\" + height + \"px;\" +\n \"width:\" + width + \"px;\" +\n \"top:\" + top + \"px;\" +\n \"left:\" + padding + \"px;\" + (extraStyle || \"\"));\n }\n height = (range.end.row - range.start.row - 1) * config.lineHeight;\n if (height <= 0)\n return;\n top = this.$getTop(range.start.row + 1, config);\n var radiusClass = (range.start.column ? 1 : 0) | (range.end.column ? 0 : 8);\n this.elt(clazz + (radiusClass ? \" ace_br\" + radiusClass : \"\"), \"height:\" + height + \"px;\" +\n \"right:0;\" +\n \"top:\" + top + \"px;\" +\n \"left:\" + padding + \"px;\" + (extraStyle || \"\"));\n };\n Marker.prototype.drawSingleLineMarker = function (stringBuilder, range, clazz, config, extraLength, extraStyle) {\n if (this.session.$bidiHandler.isBidiRow(range.start.row))\n return this.drawBidiSingleLineMarker(stringBuilder, range, clazz, config, extraLength, extraStyle);\n var height = config.lineHeight;\n var width = (range.end.column + (extraLength || 0) - range.start.column) * config.characterWidth;\n var top = this.$getTop(range.start.row, config);\n var left = this.$padding + range.start.column * config.characterWidth;\n this.elt(clazz, \"height:\" + height + \"px;\" +\n \"width:\" + width + \"px;\" +\n \"top:\" + top + \"px;\" +\n \"left:\" + left + \"px;\" + (extraStyle || \"\"));\n };\n Marker.prototype.drawBidiSingleLineMarker = function (stringBuilder, range, clazz, config, extraLength, extraStyle) {\n var height = config.lineHeight, top = this.$getTop(range.start.row, config), padding = this.$padding;\n var selections = this.session.$bidiHandler.getSelections(range.start.column, range.end.column);\n selections.forEach(function (selection) {\n this.elt(clazz, \"height:\" + height + \"px;\" +\n \"width:\" + (selection.width + (extraLength || 0)) + \"px;\" +\n \"top:\" + top + \"px;\" +\n \"left:\" + (padding + selection.left) + \"px;\" + (extraStyle || \"\"));\n }, this);\n };\n Marker.prototype.drawFullLineMarker = function (stringBuilder, range, clazz, config, extraStyle) {\n var top = this.$getTop(range.start.row, config);\n var height = config.lineHeight;\n if (range.start.row != range.end.row)\n height += this.$getTop(range.end.row, config) - top;\n this.elt(clazz, \"height:\" + height + \"px;\" +\n \"top:\" + top + \"px;\" +\n \"left:0;right:0;\" + (extraStyle || \"\"));\n };\n Marker.prototype.drawScreenLineMarker = function (stringBuilder, range, clazz, config, extraStyle) {\n var top = this.$getTop(range.start.row, config);\n var height = config.lineHeight;\n this.elt(clazz, \"height:\" + height + \"px;\" +\n \"top:\" + top + \"px;\" +\n \"left:0;right:0;\" + (extraStyle || \"\"));\n };\n return Marker;\n}());\nMarker.prototype.$padding = 0;\nfunction getBorderClass(tl, tr, br, bl) {\n return (tl ? 1 : 0) | (tr ? 2 : 0) | (br ? 4 : 0) | (bl ? 8 : 0);\n}\nexports.Marker = Marker;\n\n});\n\nace.define(\"ace/layer/text_util\",[\"require\",\"exports\",\"module\"], function(require, exports, module){// Tokens for which Ace just uses a simple TextNode and does not add any special className.\nvar textTokens = new Set([\"text\", \"rparen\", \"lparen\"]);\nexports.isTextToken = function (tokenType) {\n return textTokens.has(tokenType);\n};\n\n});\n\nace.define(\"ace/layer/text\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/dom\",\"ace/lib/lang\",\"ace/layer/lines\",\"ace/lib/event_emitter\",\"ace/config\",\"ace/layer/text_util\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar dom = require(\"../lib/dom\");\nvar lang = require(\"../lib/lang\");\nvar Lines = require(\"./lines\").Lines;\nvar EventEmitter = require(\"../lib/event_emitter\").EventEmitter;\nvar nls = require(\"../config\").nls;\nvar isTextToken = require(\"./text_util\").isTextToken;\nvar Text = /** @class */ (function () {\n function Text(parentEl) {\n this.dom = dom;\n this.element = this.dom.createElement(\"div\");\n this.element.className = \"ace_layer ace_text-layer\";\n parentEl.appendChild(this.element);\n this.$updateEolChar = this.$updateEolChar.bind(this);\n this.$lines = new Lines(this.element);\n }\n Text.prototype.$updateEolChar = function () {\n var doc = this.session.doc;\n var unixMode = doc.getNewLineCharacter() == \"\\n\" && doc.getNewLineMode() != \"windows\";\n var EOL_CHAR = unixMode ? this.EOL_CHAR_LF : this.EOL_CHAR_CRLF;\n if (this.EOL_CHAR != EOL_CHAR) {\n this.EOL_CHAR = EOL_CHAR;\n return true;\n }\n };\n Text.prototype.setPadding = function (padding) {\n this.$padding = padding;\n this.element.style.margin = \"0 \" + padding + \"px\";\n };\n Text.prototype.getLineHeight = function () {\n return this.$fontMetrics.$characterSize.height || 0;\n };\n Text.prototype.getCharacterWidth = function () {\n return this.$fontMetrics.$characterSize.width || 0;\n };\n Text.prototype.$setFontMetrics = function (measure) {\n this.$fontMetrics = measure;\n this.$fontMetrics.on(\"changeCharacterSize\", function (e) {\n this._signal(\"changeCharacterSize\", e);\n }.bind(this));\n this.$pollSizeChanges();\n };\n Text.prototype.checkForSizeChanges = function () {\n this.$fontMetrics.checkForSizeChanges();\n };\n Text.prototype.$pollSizeChanges = function () {\n return this.$pollSizeChangesTimer = this.$fontMetrics.$pollSizeChanges();\n };\n Text.prototype.setSession = function (session) {\n this.session = session;\n if (session)\n this.$computeTabString();\n };\n Text.prototype.setShowInvisibles = function (showInvisibles) {\n if (this.showInvisibles == showInvisibles)\n return false;\n this.showInvisibles = showInvisibles;\n if (typeof showInvisibles == \"string\") {\n this.showSpaces = /tab/i.test(showInvisibles);\n this.showTabs = /space/i.test(showInvisibles);\n this.showEOL = /eol/i.test(showInvisibles);\n }\n else {\n this.showSpaces = this.showTabs = this.showEOL = showInvisibles;\n }\n this.$computeTabString();\n return true;\n };\n Text.prototype.setDisplayIndentGuides = function (display) {\n if (this.displayIndentGuides == display)\n return false;\n this.displayIndentGuides = display;\n this.$computeTabString();\n return true;\n };\n Text.prototype.setHighlightIndentGuides = function (highlight) {\n if (this.$highlightIndentGuides === highlight)\n return false;\n this.$highlightIndentGuides = highlight;\n return highlight;\n };\n Text.prototype.$computeTabString = function () {\n var tabSize = this.session.getTabSize();\n this.tabSize = tabSize;\n var tabStr = this.$tabStrings = [0];\n for (var i = 1; i < tabSize + 1; i++) {\n if (this.showTabs) {\n var span = this.dom.createElement(\"span\");\n span.className = \"ace_invisible ace_invisible_tab\";\n span.textContent = lang.stringRepeat(this.TAB_CHAR, i);\n tabStr.push(span);\n }\n else {\n tabStr.push(this.dom.createTextNode(lang.stringRepeat(\" \", i), this.element));\n }\n }\n if (this.displayIndentGuides) {\n this.$indentGuideRe = /\\s\\S| \\t|\\t |\\s$/;\n var className = \"ace_indent-guide\";\n var spaceClass = this.showSpaces ? \" ace_invisible ace_invisible_space\" : \"\";\n var spaceContent = this.showSpaces\n ? lang.stringRepeat(this.SPACE_CHAR, this.tabSize)\n : lang.stringRepeat(\" \", this.tabSize);\n var tabClass = this.showTabs ? \" ace_invisible ace_invisible_tab\" : \"\";\n var tabContent = this.showTabs\n ? lang.stringRepeat(this.TAB_CHAR, this.tabSize)\n : spaceContent;\n var span = this.dom.createElement(\"span\");\n span.className = className + spaceClass;\n span.textContent = spaceContent;\n this.$tabStrings[\" \"] = span;\n var span = this.dom.createElement(\"span\");\n span.className = className + tabClass;\n span.textContent = tabContent;\n this.$tabStrings[\"\\t\"] = span;\n }\n };\n Text.prototype.updateLines = function (config, firstRow, lastRow) {\n if (this.config.lastRow != config.lastRow ||\n this.config.firstRow != config.firstRow) {\n return this.update(config);\n }\n this.config = config;\n var first = Math.max(firstRow, config.firstRow);\n var last = Math.min(lastRow, config.lastRow);\n var lineElements = this.element.childNodes;\n var lineElementsIdx = 0;\n for (var row = config.firstRow; row < first; row++) {\n var foldLine = this.session.getFoldLine(row);\n if (foldLine) {\n if (foldLine.containsRow(first)) {\n first = foldLine.start.row;\n break;\n }\n else {\n row = foldLine.end.row;\n }\n }\n lineElementsIdx++;\n }\n var heightChanged = false;\n var row = first;\n var foldLine = this.session.getNextFoldLine(row);\n var foldStart = foldLine ? foldLine.start.row : Infinity;\n while (true) {\n if (row > foldStart) {\n row = foldLine.end.row + 1;\n foldLine = this.session.getNextFoldLine(row, foldLine);\n foldStart = foldLine ? foldLine.start.row : Infinity;\n }\n if (row > last)\n break;\n var lineElement = lineElements[lineElementsIdx++];\n if (lineElement) {\n this.dom.removeChildren(lineElement);\n this.$renderLine(lineElement, row, row == foldStart ? foldLine : false);\n if (heightChanged)\n lineElement.style.top = this.$lines.computeLineTop(row, config, this.session) + \"px\";\n var height = (config.lineHeight * this.session.getRowLength(row)) + \"px\";\n if (lineElement.style.height != height) {\n heightChanged = true;\n lineElement.style.height = height;\n }\n }\n row++;\n }\n if (heightChanged) {\n while (lineElementsIdx < this.$lines.cells.length) {\n var cell = this.$lines.cells[lineElementsIdx++];\n cell.element.style.top = this.$lines.computeLineTop(cell.row, config, this.session) + \"px\";\n }\n }\n };\n Text.prototype.scrollLines = function (config) {\n var oldConfig = this.config;\n this.config = config;\n if (this.$lines.pageChanged(oldConfig, config))\n return this.update(config);\n this.$lines.moveContainer(config);\n var lastRow = config.lastRow;\n var oldLastRow = oldConfig ? oldConfig.lastRow : -1;\n if (!oldConfig || oldLastRow < config.firstRow)\n return this.update(config);\n if (lastRow < oldConfig.firstRow)\n return this.update(config);\n if (!oldConfig || oldConfig.lastRow < config.firstRow)\n return this.update(config);\n if (config.lastRow < oldConfig.firstRow)\n return this.update(config);\n if (oldConfig.firstRow < config.firstRow)\n for (var row = this.session.getFoldedRowCount(oldConfig.firstRow, config.firstRow - 1); row > 0; row--)\n this.$lines.shift();\n if (oldConfig.lastRow > config.lastRow)\n for (var row = this.session.getFoldedRowCount(config.lastRow + 1, oldConfig.lastRow); row > 0; row--)\n this.$lines.pop();\n if (config.firstRow < oldConfig.firstRow) {\n this.$lines.unshift(this.$renderLinesFragment(config, config.firstRow, oldConfig.firstRow - 1));\n }\n if (config.lastRow > oldConfig.lastRow) {\n this.$lines.push(this.$renderLinesFragment(config, oldConfig.lastRow + 1, config.lastRow));\n }\n this.$highlightIndentGuide();\n };\n Text.prototype.$renderLinesFragment = function (config, firstRow, lastRow) {\n var fragment = [];\n var row = firstRow;\n var foldLine = this.session.getNextFoldLine(row);\n var foldStart = foldLine ? foldLine.start.row : Infinity;\n while (true) {\n if (row > foldStart) {\n row = foldLine.end.row + 1;\n foldLine = this.session.getNextFoldLine(row, foldLine);\n foldStart = foldLine ? foldLine.start.row : Infinity;\n }\n if (row > lastRow)\n break;\n var line = this.$lines.createCell(row, config, this.session);\n var lineEl = line.element;\n this.dom.removeChildren(lineEl);\n dom.setStyle(lineEl.style, \"height\", this.$lines.computeLineHeight(row, config, this.session) + \"px\");\n dom.setStyle(lineEl.style, \"top\", this.$lines.computeLineTop(row, config, this.session) + \"px\");\n this.$renderLine(lineEl, row, row == foldStart ? foldLine : false);\n if (this.$useLineGroups()) {\n lineEl.className = \"ace_line_group\";\n }\n else {\n lineEl.className = \"ace_line\";\n }\n fragment.push(line);\n row++;\n }\n return fragment;\n };\n Text.prototype.update = function (config) {\n this.$lines.moveContainer(config);\n this.config = config;\n var firstRow = config.firstRow;\n var lastRow = config.lastRow;\n var lines = this.$lines;\n while (lines.getLength())\n lines.pop();\n lines.push(this.$renderLinesFragment(config, firstRow, lastRow));\n };\n Text.prototype.$renderToken = function (parent, screenColumn, token, value) {\n var self = this;\n var re = /(\\t)|( +)|([\\x00-\\x1f\\x80-\\xa0\\xad\\u1680\\u180E\\u2000-\\u200f\\u2028\\u2029\\u202F\\u205F\\uFEFF\\uFFF9-\\uFFFC\\u2066\\u2067\\u2068\\u202A\\u202B\\u202D\\u202E\\u202C\\u2069]+)|(\\u3000)|([\\u1100-\\u115F\\u11A3-\\u11A7\\u11FA-\\u11FF\\u2329-\\u232A\\u2E80-\\u2E99\\u2E9B-\\u2EF3\\u2F00-\\u2FD5\\u2FF0-\\u2FFB\\u3001-\\u303E\\u3041-\\u3096\\u3099-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u3190-\\u31BA\\u31C0-\\u31E3\\u31F0-\\u321E\\u3220-\\u3247\\u3250-\\u32FE\\u3300-\\u4DBF\\u4E00-\\uA48C\\uA490-\\uA4C6\\uA960-\\uA97C\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFAFF\\uFE10-\\uFE19\\uFE30-\\uFE52\\uFE54-\\uFE66\\uFE68-\\uFE6B\\uFF01-\\uFF60\\uFFE0-\\uFFE6]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF])/g;\n var valueFragment = this.dom.createFragment(this.element);\n var m;\n var i = 0;\n while (m = re.exec(value)) {\n var tab = m[1];\n var simpleSpace = m[2];\n var controlCharacter = m[3];\n var cjkSpace = m[4];\n var cjk = m[5];\n if (!self.showSpaces && simpleSpace)\n continue;\n var before = i != m.index ? value.slice(i, m.index) : \"\";\n i = m.index + m[0].length;\n if (before) {\n valueFragment.appendChild(this.dom.createTextNode(before, this.element));\n }\n if (tab) {\n var tabSize = self.session.getScreenTabSize(screenColumn + m.index);\n valueFragment.appendChild(self.$tabStrings[tabSize].cloneNode(true));\n screenColumn += tabSize - 1;\n }\n else if (simpleSpace) {\n if (self.showSpaces) {\n var span = this.dom.createElement(\"span\");\n span.className = \"ace_invisible ace_invisible_space\";\n span.textContent = lang.stringRepeat(self.SPACE_CHAR, simpleSpace.length);\n valueFragment.appendChild(span);\n }\n else {\n valueFragment.appendChild(this.dom.createTextNode(simpleSpace, this.element));\n }\n }\n else if (controlCharacter) {\n var span = this.dom.createElement(\"span\");\n span.className = \"ace_invisible ace_invisible_space ace_invalid\";\n span.textContent = lang.stringRepeat(self.SPACE_CHAR, controlCharacter.length);\n valueFragment.appendChild(span);\n }\n else if (cjkSpace) {\n screenColumn += 1;\n var span = this.dom.createElement(\"span\");\n span.style.width = (self.config.characterWidth * 2) + \"px\";\n span.className = self.showSpaces ? \"ace_cjk ace_invisible ace_invisible_space\" : \"ace_cjk\";\n span.textContent = self.showSpaces ? self.SPACE_CHAR : cjkSpace;\n valueFragment.appendChild(span);\n }\n else if (cjk) {\n screenColumn += 1;\n var span = this.dom.createElement(\"span\");\n span.style.width = (self.config.characterWidth * 2) + \"px\";\n span.className = \"ace_cjk\";\n span.textContent = cjk;\n valueFragment.appendChild(span);\n }\n }\n valueFragment.appendChild(this.dom.createTextNode(i ? value.slice(i) : value, this.element));\n if (!isTextToken(token.type)) {\n var classes = \"ace_\" + token.type.replace(/\\./g, \" ace_\");\n var span = this.dom.createElement(\"span\");\n if (token.type == \"fold\") {\n span.style.width = (token.value.length * this.config.characterWidth) + \"px\";\n span.setAttribute(\"title\", nls(\"Unfold code\"));\n }\n span.className = classes;\n span.appendChild(valueFragment);\n parent.appendChild(span);\n }\n else {\n parent.appendChild(valueFragment);\n }\n return screenColumn + value.length;\n };\n Text.prototype.renderIndentGuide = function (parent, value, max) {\n var cols = value.search(this.$indentGuideRe);\n if (cols <= 0 || cols >= max)\n return value;\n if (value[0] == \" \") {\n cols -= cols % this.tabSize;\n var count = cols / this.tabSize;\n for (var i = 0; i < count; i++) {\n parent.appendChild(this.$tabStrings[\" \"].cloneNode(true));\n }\n this.$highlightIndentGuide();\n return value.substr(cols);\n }\n else if (value[0] == \"\\t\") {\n for (var i = 0; i < cols; i++) {\n parent.appendChild(this.$tabStrings[\"\\t\"].cloneNode(true));\n }\n this.$highlightIndentGuide();\n return value.substr(cols);\n }\n this.$highlightIndentGuide();\n return value;\n };\n Text.prototype.$highlightIndentGuide = function () {\n if (!this.$highlightIndentGuides || !this.displayIndentGuides)\n return;\n this.$highlightIndentGuideMarker = {\n indentLevel: undefined,\n start: undefined,\n end: undefined,\n dir: undefined\n };\n var lines = this.session.doc.$lines;\n if (!lines)\n return;\n var cursor = this.session.selection.getCursor();\n var initialIndent = /^\\s*/.exec(this.session.doc.getLine(cursor.row))[0].length;\n var elementIndentLevel = Math.floor(initialIndent / this.tabSize);\n this.$highlightIndentGuideMarker = {\n indentLevel: elementIndentLevel,\n start: cursor.row\n };\n var bracketHighlight = this.session.$bracketHighlight;\n if (bracketHighlight) {\n var ranges = this.session.$bracketHighlight.ranges;\n for (var i = 0; i < ranges.length; i++) {\n if (cursor.row !== ranges[i].start.row) {\n this.$highlightIndentGuideMarker.end = ranges[i].start.row;\n if (cursor.row > ranges[i].start.row) {\n this.$highlightIndentGuideMarker.dir = -1;\n }\n else {\n this.$highlightIndentGuideMarker.dir = 1;\n }\n break;\n }\n }\n }\n if (!this.$highlightIndentGuideMarker.end) {\n if (lines[cursor.row] !== '' && cursor.column === lines[cursor.row].length) {\n this.$highlightIndentGuideMarker.dir = 1;\n for (var i = cursor.row + 1; i < lines.length; i++) {\n var line = lines[i];\n var currentIndent = /^\\s*/.exec(line)[0].length;\n if (line !== '') {\n this.$highlightIndentGuideMarker.end = i;\n if (currentIndent <= initialIndent)\n break;\n }\n }\n }\n }\n this.$renderHighlightIndentGuide();\n };\n Text.prototype.$clearActiveIndentGuide = function () {\n var cells = this.$lines.cells;\n for (var i = 0; i < cells.length; i++) {\n var cell = cells[i];\n var childNodes = cell.element.childNodes;\n if (childNodes.length > 0) {\n for (var j = 0; j < childNodes.length; j++) {\n if (childNodes[j].classList && childNodes[j].classList.contains(\"ace_indent-guide-active\")) {\n childNodes[j].classList.remove(\"ace_indent-guide-active\");\n break;\n }\n }\n }\n }\n };\n Text.prototype.$setIndentGuideActive = function (cell, indentLevel) {\n var line = this.session.doc.getLine(cell.row);\n if (line !== \"\") {\n var childNodes = cell.element.childNodes;\n if (childNodes) {\n var node = childNodes[indentLevel - 1];\n if (node && node.classList && node.classList.contains(\"ace_indent-guide\"))\n node.classList.add(\"ace_indent-guide-active\");\n }\n }\n };\n Text.prototype.$renderHighlightIndentGuide = function () {\n if (!this.$lines)\n return;\n var cells = this.$lines.cells;\n this.$clearActiveIndentGuide();\n var indentLevel = this.$highlightIndentGuideMarker.indentLevel;\n if (indentLevel !== 0) {\n if (this.$highlightIndentGuideMarker.dir === 1) {\n for (var i = 0; i < cells.length; i++) {\n var cell = cells[i];\n if (this.$highlightIndentGuideMarker.end && cell.row >= this.$highlightIndentGuideMarker.start\n + 1) {\n if (cell.row >= this.$highlightIndentGuideMarker.end)\n break;\n this.$setIndentGuideActive(cell, indentLevel);\n }\n }\n }\n else {\n for (var i = cells.length - 1; i >= 0; i--) {\n var cell = cells[i];\n if (this.$highlightIndentGuideMarker.end && cell.row < this.$highlightIndentGuideMarker.start) {\n if (cell.row <= this.$highlightIndentGuideMarker.end)\n break;\n this.$setIndentGuideActive(cell, indentLevel);\n }\n }\n }\n }\n };\n Text.prototype.$createLineElement = function (parent) {\n var lineEl = this.dom.createElement(\"div\");\n lineEl.className = \"ace_line\";\n lineEl.style.height = this.config.lineHeight + \"px\";\n return lineEl;\n };\n Text.prototype.$renderWrappedLine = function (parent, tokens, splits) {\n var chars = 0;\n var split = 0;\n var splitChars = splits[0];\n var screenColumn = 0;\n var lineEl = this.$createLineElement();\n parent.appendChild(lineEl);\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n var value = token.value;\n if (i == 0 && this.displayIndentGuides) {\n chars = value.length;\n value = this.renderIndentGuide(lineEl, value, splitChars);\n if (!value)\n continue;\n chars -= value.length;\n }\n if (chars + value.length < splitChars) {\n screenColumn = this.$renderToken(lineEl, screenColumn, token, value);\n chars += value.length;\n }\n else {\n while (chars + value.length >= splitChars) {\n screenColumn = this.$renderToken(lineEl, screenColumn, token, value.substring(0, splitChars - chars));\n value = value.substring(splitChars - chars);\n chars = splitChars;\n lineEl = this.$createLineElement();\n parent.appendChild(lineEl);\n lineEl.appendChild(this.dom.createTextNode(lang.stringRepeat(\"\\xa0\", splits.indent), this.element));\n split++;\n screenColumn = 0;\n splitChars = splits[split] || Number.MAX_VALUE;\n }\n if (value.length != 0) {\n chars += value.length;\n screenColumn = this.$renderToken(lineEl, screenColumn, token, value);\n }\n }\n }\n if (splits[splits.length - 1] > this.MAX_LINE_LENGTH)\n this.$renderOverflowMessage(lineEl, screenColumn, null, \"\", true);\n };\n Text.prototype.$renderSimpleLine = function (parent, tokens) {\n var screenColumn = 0;\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n var value = token.value;\n if (i == 0 && this.displayIndentGuides) {\n value = this.renderIndentGuide(parent, value);\n if (!value)\n continue;\n }\n if (screenColumn + value.length > this.MAX_LINE_LENGTH)\n return this.$renderOverflowMessage(parent, screenColumn, token, value);\n screenColumn = this.$renderToken(parent, screenColumn, token, value);\n }\n };\n Text.prototype.$renderOverflowMessage = function (parent, screenColumn, token, value, hide) {\n token && this.$renderToken(parent, screenColumn, token, value.slice(0, this.MAX_LINE_LENGTH - screenColumn));\n var overflowEl = this.dom.createElement(\"span\");\n overflowEl.className = \"ace_inline_button ace_keyword ace_toggle_wrap\";\n overflowEl.textContent = hide ? \"\" : \"\";\n parent.appendChild(overflowEl);\n };\n Text.prototype.$renderLine = function (parent, row, foldLine) {\n if (!foldLine && foldLine != false)\n foldLine = this.session.getFoldLine(row);\n if (foldLine)\n var tokens = this.$getFoldLineTokens(row, foldLine);\n else\n var tokens = this.session.getTokens(row);\n var lastLineEl = parent;\n if (tokens.length) {\n var splits = this.session.getRowSplitData(row);\n if (splits && splits.length) {\n this.$renderWrappedLine(parent, tokens, splits);\n var lastLineEl = parent.lastChild;\n }\n else {\n var lastLineEl = parent;\n if (this.$useLineGroups()) {\n lastLineEl = this.$createLineElement();\n parent.appendChild(lastLineEl);\n }\n this.$renderSimpleLine(lastLineEl, tokens);\n }\n }\n else if (this.$useLineGroups()) {\n lastLineEl = this.$createLineElement();\n parent.appendChild(lastLineEl);\n }\n if (this.showEOL && lastLineEl) {\n if (foldLine)\n row = foldLine.end.row;\n var invisibleEl = this.dom.createElement(\"span\");\n invisibleEl.className = \"ace_invisible ace_invisible_eol\";\n invisibleEl.textContent = row == this.session.getLength() - 1 ? this.EOF_CHAR : this.EOL_CHAR;\n lastLineEl.appendChild(invisibleEl);\n }\n };\n Text.prototype.$getFoldLineTokens = function (row, foldLine) {\n var session = this.session;\n var renderTokens = [];\n function addTokens(tokens, from, to) {\n var idx = 0, col = 0;\n while ((col + tokens[idx].value.length) < from) {\n col += tokens[idx].value.length;\n idx++;\n if (idx == tokens.length)\n return;\n }\n if (col != from) {\n var value = tokens[idx].value.substring(from - col);\n if (value.length > (to - from))\n value = value.substring(0, to - from);\n renderTokens.push({\n type: tokens[idx].type,\n value: value\n });\n col = from + value.length;\n idx += 1;\n }\n while (col < to && idx < tokens.length) {\n var value = tokens[idx].value;\n if (value.length + col > to) {\n renderTokens.push({\n type: tokens[idx].type,\n value: value.substring(0, to - col)\n });\n }\n else\n renderTokens.push(tokens[idx]);\n col += value.length;\n idx += 1;\n }\n }\n var tokens = session.getTokens(row);\n foldLine.walk(function (placeholder, row, column, lastColumn, isNewRow) {\n if (placeholder != null) {\n renderTokens.push({\n type: \"fold\",\n value: placeholder\n });\n }\n else {\n if (isNewRow)\n tokens = session.getTokens(row);\n if (tokens.length)\n addTokens(tokens, lastColumn, column);\n }\n }, foldLine.end.row, this.session.getLine(foldLine.end.row).length);\n return renderTokens;\n };\n Text.prototype.$useLineGroups = function () {\n return this.session.getUseWrapMode();\n };\n return Text;\n}());\nText.prototype.EOF_CHAR = \"\\xB6\";\nText.prototype.EOL_CHAR_LF = \"\\xAC\";\nText.prototype.EOL_CHAR_CRLF = \"\\xa4\";\nText.prototype.EOL_CHAR = Text.prototype.EOL_CHAR_LF;\nText.prototype.TAB_CHAR = \"\\u2014\"; //\"\\u21E5\";\nText.prototype.SPACE_CHAR = \"\\xB7\";\nText.prototype.$padding = 0;\nText.prototype.MAX_LINE_LENGTH = 10000;\nText.prototype.showInvisibles = false;\nText.prototype.showSpaces = false;\nText.prototype.showTabs = false;\nText.prototype.showEOL = false;\nText.prototype.displayIndentGuides = true;\nText.prototype.$highlightIndentGuides = true;\nText.prototype.$tabStrings = [];\nText.prototype.destroy = {};\nText.prototype.onChangeTabSize = Text.prototype.$computeTabString;\noop.implement(Text.prototype, EventEmitter);\nexports.Text = Text;\n\n});\n\nace.define(\"ace/layer/cursor\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"], function(require, exports, module){\"use strict\";\nvar dom = require(\"../lib/dom\");\nvar Cursor = /** @class */ (function () {\n function Cursor(parentEl) {\n this.element = dom.createElement(\"div\");\n this.element.className = \"ace_layer ace_cursor-layer\";\n parentEl.appendChild(this.element);\n this.isVisible = false;\n this.isBlinking = true;\n this.blinkInterval = 1000;\n this.smoothBlinking = false;\n this.cursors = [];\n this.cursor = this.addCursor();\n dom.addCssClass(this.element, \"ace_hidden-cursors\");\n this.$updateCursors = this.$updateOpacity.bind(this);\n }\n Cursor.prototype.$updateOpacity = function (val) {\n var cursors = this.cursors;\n for (var i = cursors.length; i--;)\n dom.setStyle(cursors[i].style, \"opacity\", val ? \"\" : \"0\");\n };\n Cursor.prototype.$startCssAnimation = function () {\n var cursors = this.cursors;\n for (var i = cursors.length; i--;)\n cursors[i].style.animationDuration = this.blinkInterval + \"ms\";\n this.$isAnimating = true;\n setTimeout(function () {\n if (this.$isAnimating) {\n dom.addCssClass(this.element, \"ace_animate-blinking\");\n }\n }.bind(this));\n };\n Cursor.prototype.$stopCssAnimation = function () {\n this.$isAnimating = false;\n dom.removeCssClass(this.element, \"ace_animate-blinking\");\n };\n Cursor.prototype.setPadding = function (padding) {\n this.$padding = padding;\n };\n Cursor.prototype.setSession = function (session) {\n this.session = session;\n };\n Cursor.prototype.setBlinking = function (blinking) {\n if (blinking != this.isBlinking) {\n this.isBlinking = blinking;\n this.restartTimer();\n }\n };\n Cursor.prototype.setBlinkInterval = function (blinkInterval) {\n if (blinkInterval != this.blinkInterval) {\n this.blinkInterval = blinkInterval;\n this.restartTimer();\n }\n };\n Cursor.prototype.setSmoothBlinking = function (smoothBlinking) {\n if (smoothBlinking != this.smoothBlinking) {\n this.smoothBlinking = smoothBlinking;\n dom.setCssClass(this.element, \"ace_smooth-blinking\", smoothBlinking);\n this.$updateCursors(true);\n this.restartTimer();\n }\n };\n Cursor.prototype.addCursor = function () {\n var el = dom.createElement(\"div\");\n el.className = \"ace_cursor\";\n this.element.appendChild(el);\n this.cursors.push(el);\n return el;\n };\n Cursor.prototype.removeCursor = function () {\n if (this.cursors.length > 1) {\n var el = this.cursors.pop();\n el.parentNode.removeChild(el);\n return el;\n }\n };\n Cursor.prototype.hideCursor = function () {\n this.isVisible = false;\n dom.addCssClass(this.element, \"ace_hidden-cursors\");\n this.restartTimer();\n };\n Cursor.prototype.showCursor = function () {\n this.isVisible = true;\n dom.removeCssClass(this.element, \"ace_hidden-cursors\");\n this.restartTimer();\n };\n Cursor.prototype.restartTimer = function () {\n var update = this.$updateCursors;\n clearInterval(this.intervalId);\n clearTimeout(this.timeoutId);\n this.$stopCssAnimation();\n if (this.smoothBlinking) {\n this.$isSmoothBlinking = false;\n dom.removeCssClass(this.element, \"ace_smooth-blinking\");\n }\n update(true);\n if (!this.isBlinking || !this.blinkInterval || !this.isVisible) {\n this.$stopCssAnimation();\n return;\n }\n if (this.smoothBlinking) {\n this.$isSmoothBlinking = true;\n setTimeout(function () {\n if (this.$isSmoothBlinking) {\n dom.addCssClass(this.element, \"ace_smooth-blinking\");\n }\n }.bind(this));\n }\n if (dom.HAS_CSS_ANIMATION) {\n this.$startCssAnimation();\n }\n else {\n var blink = function () {\n this.timeoutId = setTimeout(function () {\n update(false);\n }, 0.6 * this.blinkInterval);\n }.bind(this);\n this.intervalId = setInterval(function () {\n update(true);\n blink();\n }, this.blinkInterval);\n blink();\n }\n };\n Cursor.prototype.getPixelPosition = function (position, onScreen) {\n if (!this.config || !this.session)\n return { left: 0, top: 0 };\n if (!position)\n position = this.session.selection.getCursor();\n var pos = this.session.documentToScreenPosition(position);\n var cursorLeft = this.$padding + (this.session.$bidiHandler.isBidiRow(pos.row, position.row)\n ? this.session.$bidiHandler.getPosLeft(pos.column)\n : pos.column * this.config.characterWidth);\n var cursorTop = (pos.row - (onScreen ? this.config.firstRowScreen : 0)) *\n this.config.lineHeight;\n return { left: cursorLeft, top: cursorTop };\n };\n Cursor.prototype.isCursorInView = function (pixelPos, config) {\n return pixelPos.top >= 0 && pixelPos.top < config.maxHeight;\n };\n Cursor.prototype.update = function (config) {\n this.config = config;\n var selections = this.session.$selectionMarkers;\n var i = 0, cursorIndex = 0;\n if (selections === undefined || selections.length === 0) {\n selections = [{ cursor: null }];\n }\n for (var i = 0, n = selections.length; i < n; i++) {\n var pixelPos = this.getPixelPosition(selections[i].cursor, true);\n if ((pixelPos.top > config.height + config.offset ||\n pixelPos.top < 0) && i > 1) {\n continue;\n }\n var element = this.cursors[cursorIndex++] || this.addCursor();\n var style = element.style;\n if (!this.drawCursor) {\n if (!this.isCursorInView(pixelPos, config)) {\n dom.setStyle(style, \"display\", \"none\");\n }\n else {\n dom.setStyle(style, \"display\", \"block\");\n dom.translate(element, pixelPos.left, pixelPos.top);\n dom.setStyle(style, \"width\", Math.round(config.characterWidth) + \"px\");\n dom.setStyle(style, \"height\", config.lineHeight + \"px\");\n }\n }\n else {\n this.drawCursor(element, pixelPos, config, selections[i], this.session);\n }\n }\n while (this.cursors.length > cursorIndex)\n this.removeCursor();\n var overwrite = this.session.getOverwrite();\n this.$setOverwrite(overwrite);\n this.$pixelPos = pixelPos;\n this.restartTimer();\n };\n Cursor.prototype.$setOverwrite = function (overwrite) {\n if (overwrite != this.overwrite) {\n this.overwrite = overwrite;\n if (overwrite)\n dom.addCssClass(this.element, \"ace_overwrite-cursors\");\n else\n dom.removeCssClass(this.element, \"ace_overwrite-cursors\");\n }\n };\n Cursor.prototype.destroy = function () {\n clearInterval(this.intervalId);\n clearTimeout(this.timeoutId);\n };\n return Cursor;\n}());\nCursor.prototype.$padding = 0;\nCursor.prototype.drawCursor = null;\nexports.Cursor = Cursor;\n\n});\n\nace.define(\"ace/scrollbar\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/dom\",\"ace/lib/event\",\"ace/lib/event_emitter\"], function(require, exports, module){\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar oop = require(\"./lib/oop\");\nvar dom = require(\"./lib/dom\");\nvar event = require(\"./lib/event\");\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar MAX_SCROLL_H = 0x8000;\nvar Scrollbar = /** @class */ (function () {\n function Scrollbar(parent, classSuffix) {\n this.element = dom.createElement(\"div\");\n this.element.className = \"ace_scrollbar ace_scrollbar\" + classSuffix;\n this.inner = dom.createElement(\"div\");\n this.inner.className = \"ace_scrollbar-inner\";\n this.inner.textContent = \"\\xa0\";\n this.element.appendChild(this.inner);\n parent.appendChild(this.element);\n this.setVisible(false);\n this.skipEvent = false;\n event.addListener(this.element, \"scroll\", this.onScroll.bind(this));\n event.addListener(this.element, \"mousedown\", event.preventDefault);\n }\n Scrollbar.prototype.setVisible = function (isVisible) {\n this.element.style.display = isVisible ? \"\" : \"none\";\n this.isVisible = isVisible;\n this.coeff = 1;\n };\n return Scrollbar;\n}());\noop.implement(Scrollbar.prototype, EventEmitter);\nvar VScrollBar = /** @class */ (function (_super) {\n __extends(VScrollBar, _super);\n function VScrollBar(parent, renderer) {\n var _this = _super.call(this, parent, '-v') || this;\n _this.scrollTop = 0;\n _this.scrollHeight = 0;\n renderer.$scrollbarWidth =\n _this.width = dom.scrollbarWidth(parent.ownerDocument);\n _this.inner.style.width =\n _this.element.style.width = (_this.width || 15) + 5 + \"px\";\n _this.$minWidth = 0;\n return _this;\n }\n VScrollBar.prototype.onScroll = function () {\n if (!this.skipEvent) {\n this.scrollTop = this.element.scrollTop;\n if (this.coeff != 1) {\n var h = this.element.clientHeight / this.scrollHeight;\n this.scrollTop = this.scrollTop * (1 - h) / (this.coeff - h);\n }\n this._emit(\"scroll\", { data: this.scrollTop });\n }\n this.skipEvent = false;\n };\n VScrollBar.prototype.getWidth = function () {\n return Math.max(this.isVisible ? this.width : 0, this.$minWidth || 0);\n };\n VScrollBar.prototype.setHeight = function (height) {\n this.element.style.height = height + \"px\";\n };\n VScrollBar.prototype.setScrollHeight = function (height) {\n this.scrollHeight = height;\n if (height > MAX_SCROLL_H) {\n this.coeff = MAX_SCROLL_H / height;\n height = MAX_SCROLL_H;\n }\n else if (this.coeff != 1) {\n this.coeff = 1;\n }\n this.inner.style.height = height + \"px\";\n };\n VScrollBar.prototype.setScrollTop = function (scrollTop) {\n if (this.scrollTop != scrollTop) {\n this.skipEvent = true;\n this.scrollTop = scrollTop;\n this.element.scrollTop = scrollTop * this.coeff;\n }\n };\n return VScrollBar;\n}(Scrollbar));\nVScrollBar.prototype.setInnerHeight = VScrollBar.prototype.setScrollHeight;\nvar HScrollBar = /** @class */ (function (_super) {\n __extends(HScrollBar, _super);\n function HScrollBar(parent, renderer) {\n var _this = _super.call(this, parent, '-h') || this;\n _this.scrollLeft = 0;\n _this.height = renderer.$scrollbarWidth;\n _this.inner.style.height =\n _this.element.style.height = (_this.height || 15) + 5 + \"px\";\n return _this;\n }\n HScrollBar.prototype.onScroll = function () {\n if (!this.skipEvent) {\n this.scrollLeft = this.element.scrollLeft;\n this._emit(\"scroll\", { data: this.scrollLeft });\n }\n this.skipEvent = false;\n };\n HScrollBar.prototype.getHeight = function () {\n return this.isVisible ? this.height : 0;\n };\n HScrollBar.prototype.setWidth = function (width) {\n this.element.style.width = width + \"px\";\n };\n HScrollBar.prototype.setInnerWidth = function (width) {\n this.inner.style.width = width + \"px\";\n };\n HScrollBar.prototype.setScrollWidth = function (width) {\n this.inner.style.width = width + \"px\";\n };\n HScrollBar.prototype.setScrollLeft = function (scrollLeft) {\n if (this.scrollLeft != scrollLeft) {\n this.skipEvent = true;\n this.scrollLeft = this.element.scrollLeft = scrollLeft;\n }\n };\n return HScrollBar;\n}(Scrollbar));\nexports.ScrollBar = VScrollBar; // backward compatibility\nexports.ScrollBarV = VScrollBar; // backward compatibility\nexports.ScrollBarH = HScrollBar; // backward compatibility\nexports.VScrollBar = VScrollBar;\nexports.HScrollBar = HScrollBar;\n\n});\n\nace.define(\"ace/scrollbar_custom\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/dom\",\"ace/lib/event\",\"ace/lib/event_emitter\"], function(require, exports, module){\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar oop = require(\"./lib/oop\");\nvar dom = require(\"./lib/dom\");\nvar event = require(\"./lib/event\");\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\ndom.importCssString(\".ace_editor>.ace_sb-v div, .ace_editor>.ace_sb-h div{\\n position: absolute;\\n background: rgba(128, 128, 128, 0.6);\\n -moz-box-sizing: border-box;\\n box-sizing: border-box;\\n border: 1px solid #bbb;\\n border-radius: 2px;\\n z-index: 8;\\n}\\n.ace_editor>.ace_sb-v, .ace_editor>.ace_sb-h {\\n position: absolute;\\n z-index: 6;\\n background: none;\\n overflow: hidden!important;\\n}\\n.ace_editor>.ace_sb-v {\\n z-index: 6;\\n right: 0;\\n top: 0;\\n width: 12px;\\n}\\n.ace_editor>.ace_sb-v div {\\n z-index: 8;\\n right: 0;\\n width: 100%;\\n}\\n.ace_editor>.ace_sb-h {\\n bottom: 0;\\n left: 0;\\n height: 12px;\\n}\\n.ace_editor>.ace_sb-h div {\\n bottom: 0;\\n height: 100%;\\n}\\n.ace_editor>.ace_sb_grabbed {\\n z-index: 8;\\n background: #000;\\n}\", \"ace_scrollbar.css\", false);\nvar ScrollBar = /** @class */ (function () {\n function ScrollBar(parent, classSuffix) {\n this.element = dom.createElement(\"div\");\n this.element.className = \"ace_sb\" + classSuffix;\n this.inner = dom.createElement(\"div\");\n this.inner.className = \"\";\n this.element.appendChild(this.inner);\n this.VScrollWidth = 12;\n this.HScrollHeight = 12;\n parent.appendChild(this.element);\n this.setVisible(false);\n this.skipEvent = false;\n event.addMultiMouseDownListener(this.element, [500, 300, 300], this, \"onMouseDown\");\n }\n ScrollBar.prototype.setVisible = function (isVisible) {\n this.element.style.display = isVisible ? \"\" : \"none\";\n this.isVisible = isVisible;\n this.coeff = 1;\n };\n return ScrollBar;\n}());\noop.implement(ScrollBar.prototype, EventEmitter);\nvar VScrollBar = /** @class */ (function (_super) {\n __extends(VScrollBar, _super);\n function VScrollBar(parent, renderer) {\n var _this = _super.call(this, parent, '-v') || this;\n _this.scrollTop = 0;\n _this.scrollHeight = 0;\n _this.parent = parent;\n _this.width = _this.VScrollWidth;\n _this.renderer = renderer;\n _this.inner.style.width = _this.element.style.width = (_this.width || 15) + \"px\";\n _this.$minWidth = 0;\n return _this;\n }\n VScrollBar.prototype.onMouseDown = function (eType, e) {\n if (eType !== \"mousedown\")\n return;\n if (event.getButton(e) !== 0 || e.detail === 2) {\n return;\n }\n if (e.target === this.inner) {\n var self = this;\n var mousePageY = e.clientY;\n var onMouseMove = function (e) {\n mousePageY = e.clientY;\n };\n var onMouseUp = function () {\n clearInterval(timerId);\n };\n var startY = e.clientY;\n var startTop = this.thumbTop;\n var onScrollInterval = function () {\n if (mousePageY === undefined)\n return;\n var scrollTop = self.scrollTopFromThumbTop(startTop + mousePageY - startY);\n if (scrollTop === self.scrollTop)\n return;\n self._emit(\"scroll\", { data: scrollTop });\n };\n event.capture(this.inner, onMouseMove, onMouseUp);\n var timerId = setInterval(onScrollInterval, 20);\n return event.preventDefault(e);\n }\n var top = e.clientY - this.element.getBoundingClientRect().top - this.thumbHeight / 2;\n this._emit(\"scroll\", { data: this.scrollTopFromThumbTop(top) });\n return event.preventDefault(e);\n };\n VScrollBar.prototype.getHeight = function () {\n return this.height;\n };\n VScrollBar.prototype.scrollTopFromThumbTop = function (thumbTop) {\n var scrollTop = thumbTop * (this.pageHeight - this.viewHeight) / (this.slideHeight - this.thumbHeight);\n scrollTop = scrollTop >> 0;\n if (scrollTop < 0) {\n scrollTop = 0;\n }\n else if (scrollTop > this.pageHeight - this.viewHeight) {\n scrollTop = this.pageHeight - this.viewHeight;\n }\n return scrollTop;\n };\n VScrollBar.prototype.getWidth = function () {\n return Math.max(this.isVisible ? this.width : 0, this.$minWidth || 0);\n };\n VScrollBar.prototype.setHeight = function (height) {\n this.height = Math.max(0, height);\n this.slideHeight = this.height;\n this.viewHeight = this.height;\n this.setScrollHeight(this.pageHeight, true);\n };\n VScrollBar.prototype.setScrollHeight = function (height, force) {\n if (this.pageHeight === height && !force)\n return;\n this.pageHeight = height;\n this.thumbHeight = this.slideHeight * this.viewHeight / this.pageHeight;\n if (this.thumbHeight > this.slideHeight)\n this.thumbHeight = this.slideHeight;\n if (this.thumbHeight < 15)\n this.thumbHeight = 15;\n this.inner.style.height = this.thumbHeight + \"px\";\n if (this.scrollTop > (this.pageHeight - this.viewHeight)) {\n this.scrollTop = (this.pageHeight - this.viewHeight);\n if (this.scrollTop < 0)\n this.scrollTop = 0;\n this._emit(\"scroll\", { data: this.scrollTop });\n }\n };\n VScrollBar.prototype.setScrollTop = function (scrollTop) {\n this.scrollTop = scrollTop;\n if (scrollTop < 0)\n scrollTop = 0;\n this.thumbTop = scrollTop * (this.slideHeight - this.thumbHeight) / (this.pageHeight - this.viewHeight);\n this.inner.style.top = this.thumbTop + \"px\";\n };\n return VScrollBar;\n}(ScrollBar));\nVScrollBar.prototype.setInnerHeight = VScrollBar.prototype.setScrollHeight;\nvar HScrollBar = /** @class */ (function (_super) {\n __extends(HScrollBar, _super);\n function HScrollBar(parent, renderer) {\n var _this = _super.call(this, parent, '-h') || this;\n _this.scrollLeft = 0;\n _this.scrollWidth = 0;\n _this.height = _this.HScrollHeight;\n _this.inner.style.height = _this.element.style.height = (_this.height || 12) + \"px\";\n _this.renderer = renderer;\n return _this;\n }\n HScrollBar.prototype.onMouseDown = function (eType, e) {\n if (eType !== \"mousedown\")\n return;\n if (event.getButton(e) !== 0 || e.detail === 2) {\n return;\n }\n if (e.target === this.inner) {\n var self = this;\n var mousePageX = e.clientX;\n var onMouseMove = function (e) {\n mousePageX = e.clientX;\n };\n var onMouseUp = function () {\n clearInterval(timerId);\n };\n var startX = e.clientX;\n var startLeft = this.thumbLeft;\n var onScrollInterval = function () {\n if (mousePageX === undefined)\n return;\n var scrollLeft = self.scrollLeftFromThumbLeft(startLeft + mousePageX - startX);\n if (scrollLeft === self.scrollLeft)\n return;\n self._emit(\"scroll\", { data: scrollLeft });\n };\n event.capture(this.inner, onMouseMove, onMouseUp);\n var timerId = setInterval(onScrollInterval, 20);\n return event.preventDefault(e);\n }\n var left = e.clientX - this.element.getBoundingClientRect().left - this.thumbWidth / 2;\n this._emit(\"scroll\", { data: this.scrollLeftFromThumbLeft(left) });\n return event.preventDefault(e);\n };\n HScrollBar.prototype.getHeight = function () {\n return this.isVisible ? this.height : 0;\n };\n HScrollBar.prototype.scrollLeftFromThumbLeft = function (thumbLeft) {\n var scrollLeft = thumbLeft * (this.pageWidth - this.viewWidth) / (this.slideWidth - this.thumbWidth);\n scrollLeft = scrollLeft >> 0;\n if (scrollLeft < 0) {\n scrollLeft = 0;\n }\n else if (scrollLeft > this.pageWidth - this.viewWidth) {\n scrollLeft = this.pageWidth - this.viewWidth;\n }\n return scrollLeft;\n };\n HScrollBar.prototype.setWidth = function (width) {\n this.width = Math.max(0, width);\n this.element.style.width = this.width + \"px\";\n this.slideWidth = this.width;\n this.viewWidth = this.width;\n this.setScrollWidth(this.pageWidth, true);\n };\n HScrollBar.prototype.setScrollWidth = function (width, force) {\n if (this.pageWidth === width && !force)\n return;\n this.pageWidth = width;\n this.thumbWidth = this.slideWidth * this.viewWidth / this.pageWidth;\n if (this.thumbWidth > this.slideWidth)\n this.thumbWidth = this.slideWidth;\n if (this.thumbWidth < 15)\n this.thumbWidth = 15;\n this.inner.style.width = this.thumbWidth + \"px\";\n if (this.scrollLeft > (this.pageWidth - this.viewWidth)) {\n this.scrollLeft = (this.pageWidth - this.viewWidth);\n if (this.scrollLeft < 0)\n this.scrollLeft = 0;\n this._emit(\"scroll\", { data: this.scrollLeft });\n }\n };\n HScrollBar.prototype.setScrollLeft = function (scrollLeft) {\n this.scrollLeft = scrollLeft;\n if (scrollLeft < 0)\n scrollLeft = 0;\n this.thumbLeft = scrollLeft * (this.slideWidth - this.thumbWidth) / (this.pageWidth - this.viewWidth);\n this.inner.style.left = (this.thumbLeft) + \"px\";\n };\n return HScrollBar;\n}(ScrollBar));\nHScrollBar.prototype.setInnerWidth = HScrollBar.prototype.setScrollWidth;\nexports.ScrollBar = VScrollBar; // backward compatibility\nexports.ScrollBarV = VScrollBar; // backward compatibility\nexports.ScrollBarH = HScrollBar; // backward compatibility\nexports.VScrollBar = VScrollBar;\nexports.HScrollBar = HScrollBar;\n\n});\n\nace.define(\"ace/renderloop\",[\"require\",\"exports\",\"module\",\"ace/lib/event\"], function(require, exports, module){\"use strict\";\nvar event = require(\"./lib/event\");\nvar RenderLoop = /** @class */ (function () {\n function RenderLoop(onRender, win) {\n this.onRender = onRender;\n this.pending = false;\n this.changes = 0;\n this.$recursionLimit = 2;\n this.window = win || window;\n var _self = this;\n this._flush = function (ts) {\n _self.pending = false;\n var changes = _self.changes;\n if (changes) {\n event.blockIdle(100);\n _self.changes = 0;\n _self.onRender(changes);\n }\n if (_self.changes) {\n if (_self.$recursionLimit-- < 0)\n return;\n _self.schedule();\n }\n else {\n _self.$recursionLimit = 2;\n }\n };\n }\n RenderLoop.prototype.schedule = function (change) {\n this.changes = this.changes | change;\n if (this.changes && !this.pending) {\n event.nextFrame(this._flush);\n this.pending = true;\n }\n };\n RenderLoop.prototype.clear = function (change) {\n var changes = this.changes;\n this.changes = 0;\n return changes;\n };\n return RenderLoop;\n}());\nexports.RenderLoop = RenderLoop;\n\n});\n\nace.define(\"ace/layer/font_metrics\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/dom\",\"ace/lib/lang\",\"ace/lib/event\",\"ace/lib/useragent\",\"ace/lib/event_emitter\"], function(require, exports, module){var oop = require(\"../lib/oop\");\nvar dom = require(\"../lib/dom\");\nvar lang = require(\"../lib/lang\");\nvar event = require(\"../lib/event\");\nvar useragent = require(\"../lib/useragent\");\nvar EventEmitter = require(\"../lib/event_emitter\").EventEmitter;\nvar CHAR_COUNT = 512;\nvar USE_OBSERVER = typeof ResizeObserver == \"function\";\nvar L = 200;\nvar FontMetrics = /** @class */ (function () {\n function FontMetrics(parentEl) {\n this.el = dom.createElement(\"div\");\n this.$setMeasureNodeStyles(this.el.style, true);\n this.$main = dom.createElement(\"div\");\n this.$setMeasureNodeStyles(this.$main.style);\n this.$measureNode = dom.createElement(\"div\");\n this.$setMeasureNodeStyles(this.$measureNode.style);\n this.el.appendChild(this.$main);\n this.el.appendChild(this.$measureNode);\n parentEl.appendChild(this.el);\n this.$measureNode.textContent = lang.stringRepeat(\"X\", CHAR_COUNT);\n this.$characterSize = { width: 0, height: 0 };\n if (USE_OBSERVER)\n this.$addObserver();\n else\n this.checkForSizeChanges();\n }\n FontMetrics.prototype.$setMeasureNodeStyles = function (style, isRoot) {\n style.width = style.height = \"auto\";\n style.left = style.top = \"0px\";\n style.visibility = \"hidden\";\n style.position = \"absolute\";\n style.whiteSpace = \"pre\";\n if (useragent.isIE < 8) {\n style[\"font-family\"] = \"inherit\";\n }\n else {\n style.font = \"inherit\";\n }\n style.overflow = isRoot ? \"hidden\" : \"visible\";\n };\n FontMetrics.prototype.checkForSizeChanges = function (size) {\n if (size === undefined)\n size = this.$measureSizes();\n if (size && (this.$characterSize.width !== size.width || this.$characterSize.height !== size.height)) {\n this.$measureNode.style.fontWeight = \"bold\";\n var boldSize = this.$measureSizes();\n this.$measureNode.style.fontWeight = \"\";\n this.$characterSize = size;\n this.charSizes = Object.create(null);\n this.allowBoldFonts = boldSize && boldSize.width === size.width && boldSize.height === size.height;\n this._emit(\"changeCharacterSize\", { data: size });\n }\n };\n FontMetrics.prototype.$addObserver = function () {\n var self = this;\n this.$observer = new window.ResizeObserver(function (e) {\n self.checkForSizeChanges();\n });\n this.$observer.observe(this.$measureNode);\n };\n FontMetrics.prototype.$pollSizeChanges = function () {\n if (this.$pollSizeChangesTimer || this.$observer)\n return this.$pollSizeChangesTimer;\n var self = this;\n return this.$pollSizeChangesTimer = event.onIdle(function cb() {\n self.checkForSizeChanges();\n event.onIdle(cb, 500);\n }, 500);\n };\n FontMetrics.prototype.setPolling = function (val) {\n if (val) {\n this.$pollSizeChanges();\n }\n else if (this.$pollSizeChangesTimer) {\n clearInterval(this.$pollSizeChangesTimer);\n this.$pollSizeChangesTimer = 0;\n }\n };\n FontMetrics.prototype.$measureSizes = function (node) {\n var size = {\n height: (node || this.$measureNode).clientHeight,\n width: (node || this.$measureNode).clientWidth / CHAR_COUNT\n };\n if (size.width === 0 || size.height === 0)\n return null;\n return size;\n };\n FontMetrics.prototype.$measureCharWidth = function (ch) {\n this.$main.textContent = lang.stringRepeat(ch, CHAR_COUNT);\n var rect = this.$main.getBoundingClientRect();\n return rect.width / CHAR_COUNT;\n };\n FontMetrics.prototype.getCharacterWidth = function (ch) {\n var w = this.charSizes[ch];\n if (w === undefined) {\n w = this.charSizes[ch] = this.$measureCharWidth(ch) / this.$characterSize.width;\n }\n return w;\n };\n FontMetrics.prototype.destroy = function () {\n clearInterval(this.$pollSizeChangesTimer);\n if (this.$observer)\n this.$observer.disconnect();\n if (this.el && this.el.parentNode)\n this.el.parentNode.removeChild(this.el);\n };\n FontMetrics.prototype.$getZoom = function (element) {\n if (!element || !element.parentElement)\n return 1;\n return (window.getComputedStyle(element).zoom || 1) * this.$getZoom(element.parentElement);\n };\n FontMetrics.prototype.$initTransformMeasureNodes = function () {\n var t = function (t, l) {\n return [\"div\", {\n style: \"position: absolute;top:\" + t + \"px;left:\" + l + \"px;\"\n }];\n };\n this.els = dom.buildDom([t(0, 0), t(L, 0), t(0, L), t(L, L)], this.el);\n };\n FontMetrics.prototype.transformCoordinates = function (clientPos, elPos) {\n if (clientPos) {\n var zoom = this.$getZoom(this.el);\n clientPos = mul(1 / zoom, clientPos);\n }\n function solve(l1, l2, r) {\n var det = l1[1] * l2[0] - l1[0] * l2[1];\n return [\n (-l2[1] * r[0] + l2[0] * r[1]) / det,\n (+l1[1] * r[0] - l1[0] * r[1]) / det\n ];\n }\n function sub(a, b) { return [a[0] - b[0], a[1] - b[1]]; }\n function add(a, b) { return [a[0] + b[0], a[1] + b[1]]; }\n function mul(a, b) { return [a * b[0], a * b[1]]; }\n if (!this.els)\n this.$initTransformMeasureNodes();\n function p(el) {\n var r = el.getBoundingClientRect();\n return [r.left, r.top];\n }\n var a = p(this.els[0]);\n var b = p(this.els[1]);\n var c = p(this.els[2]);\n var d = p(this.els[3]);\n var h = solve(sub(d, b), sub(d, c), sub(add(b, c), add(d, a)));\n var m1 = mul(1 + h[0], sub(b, a));\n var m2 = mul(1 + h[1], sub(c, a));\n if (elPos) {\n var x = elPos;\n var k = h[0] * x[0] / L + h[1] * x[1] / L + 1;\n var ut = add(mul(x[0], m1), mul(x[1], m2));\n return add(mul(1 / k / L, ut), a);\n }\n var u = sub(clientPos, a);\n var f = solve(sub(m1, mul(h[0], u)), sub(m2, mul(h[1], u)), u);\n return mul(L, f);\n };\n return FontMetrics;\n}());\nFontMetrics.prototype.$characterSize = { width: 0, height: 0 };\noop.implement(FontMetrics.prototype, EventEmitter);\nexports.FontMetrics = FontMetrics;\n\n});\n\nace.define(\"ace/css/editor-css\",[\"require\",\"exports\",\"module\"], function(require, exports, module){/*\nstyles = []\nfor (var i = 1; i < 16; i++) {\n styles.push(\".ace_br\" + i + \"{\" + (\n [\"top-left\", \"top-right\", \"bottom-right\", \"bottom-left\"]\n ).map(function(x, j) {\n return i & (1< .ace_line, .ace_text-layer > .ace_line_group {\\n contain: style size layout;\\n position: absolute;\\n top: 0;\\n left: 0;\\n right: 0;\\n}\\n\\n.ace_hidpi .ace_text-layer,\\n.ace_hidpi .ace_gutter-layer,\\n.ace_hidpi .ace_content,\\n.ace_hidpi .ace_gutter {\\n contain: strict;\\n}\\n.ace_hidpi .ace_text-layer > .ace_line, \\n.ace_hidpi .ace_text-layer > .ace_line_group {\\n contain: strict;\\n}\\n\\n.ace_cjk {\\n display: inline-block;\\n text-align: center;\\n}\\n\\n.ace_cursor-layer {\\n z-index: 4;\\n}\\n\\n.ace_cursor {\\n z-index: 4;\\n position: absolute;\\n box-sizing: border-box;\\n border-left: 2px solid;\\n /* workaround for smooth cursor repaintng whole screen in chrome */\\n transform: translatez(0);\\n}\\n\\n.ace_multiselect .ace_cursor {\\n border-left-width: 1px;\\n}\\n\\n.ace_slim-cursors .ace_cursor {\\n border-left-width: 1px;\\n}\\n\\n.ace_overwrite-cursors .ace_cursor {\\n border-left-width: 0;\\n border-bottom: 1px solid;\\n}\\n\\n.ace_hidden-cursors .ace_cursor {\\n opacity: 0.2;\\n}\\n\\n.ace_hasPlaceholder .ace_hidden-cursors .ace_cursor {\\n opacity: 0;\\n}\\n\\n.ace_smooth-blinking .ace_cursor {\\n transition: opacity 0.18s;\\n}\\n\\n.ace_animate-blinking .ace_cursor {\\n animation-duration: 1000ms;\\n animation-timing-function: step-end;\\n animation-name: blink-ace-animate;\\n animation-iteration-count: infinite;\\n}\\n\\n.ace_animate-blinking.ace_smooth-blinking .ace_cursor {\\n animation-duration: 1000ms;\\n animation-timing-function: ease-in-out;\\n animation-name: blink-ace-animate-smooth;\\n}\\n \\n@keyframes blink-ace-animate {\\n from, to { opacity: 1; }\\n 60% { opacity: 0; }\\n}\\n\\n@keyframes blink-ace-animate-smooth {\\n from, to { opacity: 1; }\\n 45% { opacity: 1; }\\n 60% { opacity: 0; }\\n 85% { opacity: 0; }\\n}\\n\\n.ace_marker-layer .ace_step, .ace_marker-layer .ace_stack {\\n position: absolute;\\n z-index: 3;\\n}\\n\\n.ace_marker-layer .ace_selection {\\n position: absolute;\\n z-index: 5;\\n}\\n\\n.ace_marker-layer .ace_bracket {\\n position: absolute;\\n z-index: 6;\\n}\\n\\n.ace_marker-layer .ace_error_bracket {\\n position: absolute;\\n border-bottom: 1px solid #DE5555;\\n border-radius: 0;\\n}\\n\\n.ace_marker-layer .ace_active-line {\\n position: absolute;\\n z-index: 2;\\n}\\n\\n.ace_marker-layer .ace_selected-word {\\n position: absolute;\\n z-index: 4;\\n box-sizing: border-box;\\n}\\n\\n.ace_line .ace_fold {\\n box-sizing: border-box;\\n\\n display: inline-block;\\n height: 11px;\\n margin-top: -2px;\\n vertical-align: middle;\\n\\n background-image:\\n url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII=\\\"),\\n url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACJJREFUeNpi+P//fxgTAwPDBxDxD078RSX+YeEyDFMCIMAAI3INmXiwf2YAAAAASUVORK5CYII=\\\");\\n background-repeat: no-repeat, repeat-x;\\n background-position: center center, top left;\\n color: transparent;\\n\\n border: 1px solid black;\\n border-radius: 2px;\\n\\n cursor: pointer;\\n pointer-events: auto;\\n}\\n\\n.ace_dark .ace_fold {\\n}\\n\\n.ace_fold:hover{\\n background-image:\\n url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII=\\\"),\\n url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACBJREFUeNpi+P//fz4TAwPDZxDxD5X4i5fLMEwJgAADAEPVDbjNw87ZAAAAAElFTkSuQmCC\\\");\\n}\\n\\n.ace_tooltip {\\n background-color: #f5f5f5;\\n border: 1px solid gray;\\n border-radius: 1px;\\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);\\n color: black;\\n max-width: 100%;\\n padding: 3px 4px;\\n position: fixed;\\n z-index: 999999;\\n box-sizing: border-box;\\n cursor: default;\\n white-space: pre;\\n word-wrap: break-word;\\n line-height: normal;\\n font-style: normal;\\n font-weight: normal;\\n letter-spacing: normal;\\n pointer-events: none;\\n}\\n\\n.ace_tooltip.ace_dark {\\n background-color: #636363;\\n color: #fff;\\n}\\n\\n.ace_tooltip:focus {\\n outline: 1px solid #5E9ED6;\\n}\\n\\n.ace_icon {\\n display: inline-block;\\n width: 18px;\\n vertical-align: top;\\n}\\n\\n.ace_icon_svg {\\n display: inline-block;\\n width: 12px;\\n vertical-align: top;\\n -webkit-mask-repeat: no-repeat;\\n -webkit-mask-size: 12px;\\n -webkit-mask-position: center;\\n}\\n\\n.ace_folding-enabled > .ace_gutter-cell, .ace_folding-enabled > .ace_gutter-cell_svg-icons {\\n padding-right: 13px;\\n}\\n\\n.ace_fold-widget {\\n box-sizing: border-box;\\n\\n margin: 0 -12px 0 1px;\\n display: none;\\n width: 11px;\\n vertical-align: top;\\n\\n background-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42mWKsQ0AMAzC8ixLlrzQjzmBiEjp0A6WwBCSPgKAXoLkqSot7nN3yMwR7pZ32NzpKkVoDBUxKAAAAABJRU5ErkJggg==\\\");\\n background-repeat: no-repeat;\\n background-position: center;\\n\\n border-radius: 3px;\\n \\n border: 1px solid transparent;\\n cursor: pointer;\\n}\\n\\n.ace_folding-enabled .ace_fold-widget {\\n display: inline-block; \\n}\\n\\n.ace_fold-widget.ace_end {\\n background-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42m3HwQkAMAhD0YzsRchFKI7sAikeWkrxwScEB0nh5e7KTPWimZki4tYfVbX+MNl4pyZXejUO1QAAAABJRU5ErkJggg==\\\");\\n}\\n\\n.ace_fold-widget.ace_closed {\\n background-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAGCAYAAAAG5SQMAAAAOUlEQVR42jXKwQkAMAgDwKwqKD4EwQ26sSOkVWjgIIHAzPiCgaqiqnJHZnKICBERHN194O5b9vbLuAVRL+l0YWnZAAAAAElFTkSuQmCCXA==\\\");\\n}\\n\\n.ace_fold-widget:hover {\\n border: 1px solid rgba(0, 0, 0, 0.3);\\n background-color: rgba(255, 255, 255, 0.2);\\n box-shadow: 0 1px 1px rgba(255, 255, 255, 0.7);\\n}\\n\\n.ace_fold-widget:active {\\n border: 1px solid rgba(0, 0, 0, 0.4);\\n background-color: rgba(0, 0, 0, 0.05);\\n box-shadow: 0 1px 1px rgba(255, 255, 255, 0.8);\\n}\\n/**\\n * Dark version for fold widgets\\n */\\n.ace_dark .ace_fold-widget {\\n background-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHklEQVQIW2P4//8/AzoGEQ7oGCaLLAhWiSwB146BAQCSTPYocqT0AAAAAElFTkSuQmCC\\\");\\n}\\n.ace_dark .ace_fold-widget.ace_end {\\n background-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAH0lEQVQIW2P4//8/AxQ7wNjIAjDMgC4AxjCVKBirIAAF0kz2rlhxpAAAAABJRU5ErkJggg==\\\");\\n}\\n.ace_dark .ace_fold-widget.ace_closed {\\n background-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAFCAYAAACAcVaiAAAAHElEQVQIW2P4//+/AxAzgDADlOOAznHAKgPWAwARji8UIDTfQQAAAABJRU5ErkJggg==\\\");\\n}\\n.ace_dark .ace_fold-widget:hover {\\n box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);\\n background-color: rgba(255, 255, 255, 0.1);\\n}\\n.ace_dark .ace_fold-widget:active {\\n box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);\\n}\\n\\n.ace_inline_button {\\n border: 1px solid lightgray;\\n display: inline-block;\\n margin: -1px 8px;\\n padding: 0 5px;\\n pointer-events: auto;\\n cursor: pointer;\\n}\\n.ace_inline_button:hover {\\n border-color: gray;\\n background: rgba(200,200,200,0.2);\\n display: inline-block;\\n pointer-events: auto;\\n}\\n\\n.ace_fold-widget.ace_invalid {\\n background-color: #FFB4B4;\\n border-color: #DE5555;\\n}\\n\\n.ace_fade-fold-widgets .ace_fold-widget {\\n transition: opacity 0.4s ease 0.05s;\\n opacity: 0;\\n}\\n\\n.ace_fade-fold-widgets:hover .ace_fold-widget {\\n transition: opacity 0.05s ease 0.05s;\\n opacity:1;\\n}\\n\\n.ace_underline {\\n text-decoration: underline;\\n}\\n\\n.ace_bold {\\n font-weight: bold;\\n}\\n\\n.ace_nobold .ace_bold {\\n font-weight: normal;\\n}\\n\\n.ace_italic {\\n font-style: italic;\\n}\\n\\n\\n.ace_error-marker {\\n background-color: rgba(255, 0, 0,0.2);\\n position: absolute;\\n z-index: 9;\\n}\\n\\n.ace_highlight-marker {\\n background-color: rgba(255, 255, 0,0.2);\\n position: absolute;\\n z-index: 8;\\n}\\n\\n.ace_mobile-menu {\\n position: absolute;\\n line-height: 1.5;\\n border-radius: 4px;\\n -ms-user-select: none;\\n -moz-user-select: none;\\n -webkit-user-select: none;\\n user-select: none;\\n background: white;\\n box-shadow: 1px 3px 2px grey;\\n border: 1px solid #dcdcdc;\\n color: black;\\n}\\n.ace_dark > .ace_mobile-menu {\\n background: #333;\\n color: #ccc;\\n box-shadow: 1px 3px 2px grey;\\n border: 1px solid #444;\\n\\n}\\n.ace_mobile-button {\\n padding: 2px;\\n cursor: pointer;\\n overflow: hidden;\\n}\\n.ace_mobile-button:hover {\\n background-color: #eee;\\n opacity:1;\\n}\\n.ace_mobile-button:active {\\n background-color: #ddd;\\n}\\n\\n.ace_placeholder {\\n font-family: arial;\\n transform: scale(0.9);\\n transform-origin: left;\\n white-space: pre;\\n opacity: 0.7;\\n margin: 0 10px;\\n}\\n\\n.ace_ghost_text {\\n opacity: 0.5;\\n font-style: italic;\\n white-space: pre;\\n}\\n\\n.ace_screenreader-only {\\n position:absolute;\\n left:-10000px;\\n top:auto;\\n width:1px;\\n height:1px;\\n overflow:hidden;\\n}\";\n\n});\n\nace.define(\"ace/layer/decorators\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\",\"ace/lib/oop\",\"ace/lib/event_emitter\"], function(require, exports, module){\"use strict\";\nvar dom = require(\"../lib/dom\");\nvar oop = require(\"../lib/oop\");\nvar EventEmitter = require(\"../lib/event_emitter\").EventEmitter;\nvar Decorator = /** @class */ (function () {\n function Decorator(parent, renderer) {\n this.canvas = dom.createElement(\"canvas\");\n this.renderer = renderer;\n this.pixelRatio = 1;\n this.maxHeight = renderer.layerConfig.maxHeight;\n this.lineHeight = renderer.layerConfig.lineHeight;\n this.canvasHeight = parent.parent.scrollHeight;\n this.heightRatio = this.canvasHeight / this.maxHeight;\n this.canvasWidth = parent.width;\n this.minDecorationHeight = (2 * this.pixelRatio) | 0;\n this.halfMinDecorationHeight = (this.minDecorationHeight / 2) | 0;\n this.canvas.width = this.canvasWidth;\n this.canvas.height = this.canvasHeight;\n this.canvas.style.top = 0 + \"px\";\n this.canvas.style.right = 0 + \"px\";\n this.canvas.style.zIndex = 7 + \"px\";\n this.canvas.style.position = \"absolute\";\n this.colors = {};\n this.colors.dark = {\n \"error\": \"rgba(255, 18, 18, 1)\",\n \"warning\": \"rgba(18, 136, 18, 1)\",\n \"info\": \"rgba(18, 18, 136, 1)\"\n };\n this.colors.light = {\n \"error\": \"rgb(255,51,51)\",\n \"warning\": \"rgb(32,133,72)\",\n \"info\": \"rgb(35,68,138)\"\n };\n parent.element.appendChild(this.canvas);\n }\n Decorator.prototype.$updateDecorators = function (config) {\n var colors = (this.renderer.theme.isDark === true) ? this.colors.dark : this.colors.light;\n if (config) {\n this.maxHeight = config.maxHeight;\n this.lineHeight = config.lineHeight;\n this.canvasHeight = config.height;\n var allLineHeight = (config.lastRow + 1) * this.lineHeight;\n if (allLineHeight < this.canvasHeight) {\n this.heightRatio = 1;\n }\n else {\n this.heightRatio = this.canvasHeight / this.maxHeight;\n }\n }\n var ctx = this.canvas.getContext(\"2d\");\n function compare(a, b) {\n if (a.priority < b.priority)\n return -1;\n if (a.priority > b.priority)\n return 1;\n return 0;\n }\n var annotations = this.renderer.session.$annotations;\n ctx.clearRect(0, 0, this.canvas.width, this.canvas.height);\n if (annotations) {\n var priorities = {\n \"info\": 1,\n \"warning\": 2,\n \"error\": 3\n };\n annotations.forEach(function (item) {\n item.priority = priorities[item.type] || null;\n });\n annotations = annotations.sort(compare);\n var foldData = this.renderer.session.$foldData;\n for (var i = 0; i < annotations.length; i++) {\n var row = annotations[i].row;\n var compensateFold = this.compensateFoldRows(row, foldData);\n var currentY = Math.round((row - compensateFold) * this.lineHeight * this.heightRatio);\n var y1 = Math.round(((row - compensateFold) * this.lineHeight * this.heightRatio));\n var y2 = Math.round((((row - compensateFold) * this.lineHeight + this.lineHeight) * this.heightRatio));\n var height = y2 - y1;\n if (height < this.minDecorationHeight) {\n var yCenter = ((y1 + y2) / 2) | 0;\n if (yCenter < this.halfMinDecorationHeight) {\n yCenter = this.halfMinDecorationHeight;\n }\n else if (yCenter + this.halfMinDecorationHeight > this.canvasHeight) {\n yCenter = this.canvasHeight - this.halfMinDecorationHeight;\n }\n y1 = Math.round(yCenter - this.halfMinDecorationHeight);\n y2 = Math.round(yCenter + this.halfMinDecorationHeight);\n }\n ctx.fillStyle = colors[annotations[i].type] || null;\n ctx.fillRect(0, currentY, this.canvasWidth, y2 - y1);\n }\n }\n var cursor = this.renderer.session.selection.getCursor();\n if (cursor) {\n var compensateFold = this.compensateFoldRows(cursor.row, foldData);\n var currentY = Math.round((cursor.row - compensateFold) * this.lineHeight * this.heightRatio);\n ctx.fillStyle = \"rgba(0, 0, 0, 0.5)\";\n ctx.fillRect(0, currentY, this.canvasWidth, 2);\n }\n };\n Decorator.prototype.compensateFoldRows = function (row, foldData) {\n var compensateFold = 0;\n if (foldData && foldData.length > 0) {\n for (var j = 0; j < foldData.length; j++) {\n if (row > foldData[j].start.row && row < foldData[j].end.row) {\n compensateFold += row - foldData[j].start.row;\n }\n else if (row >= foldData[j].end.row) {\n compensateFold += foldData[j].end.row - foldData[j].start.row;\n }\n }\n }\n return compensateFold;\n };\n return Decorator;\n}());\noop.implement(Decorator.prototype, EventEmitter);\nexports.Decorator = Decorator;\n\n});\n\nace.define(\"ace/virtual_renderer\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/dom\",\"ace/lib/lang\",\"ace/config\",\"ace/layer/gutter\",\"ace/layer/marker\",\"ace/layer/text\",\"ace/layer/cursor\",\"ace/scrollbar\",\"ace/scrollbar\",\"ace/scrollbar_custom\",\"ace/scrollbar_custom\",\"ace/renderloop\",\"ace/layer/font_metrics\",\"ace/lib/event_emitter\",\"ace/css/editor-css\",\"ace/layer/decorators\",\"ace/lib/useragent\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"./lib/oop\");\nvar dom = require(\"./lib/dom\");\nvar lang = require(\"./lib/lang\");\nvar config = require(\"./config\");\nvar GutterLayer = require(\"./layer/gutter\").Gutter;\nvar MarkerLayer = require(\"./layer/marker\").Marker;\nvar TextLayer = require(\"./layer/text\").Text;\nvar CursorLayer = require(\"./layer/cursor\").Cursor;\nvar HScrollBar = require(\"./scrollbar\").HScrollBar;\nvar VScrollBar = require(\"./scrollbar\").VScrollBar;\nvar HScrollBarCustom = require(\"./scrollbar_custom\").HScrollBar;\nvar VScrollBarCustom = require(\"./scrollbar_custom\").VScrollBar;\nvar RenderLoop = require(\"./renderloop\").RenderLoop;\nvar FontMetrics = require(\"./layer/font_metrics\").FontMetrics;\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar editorCss = require(\"./css/editor-css\");\nvar Decorator = require(\"./layer/decorators\").Decorator;\nvar useragent = require(\"./lib/useragent\");\ndom.importCssString(editorCss, \"ace_editor.css\", false);\nvar VirtualRenderer = /** @class */ (function () {\n function VirtualRenderer(container, theme) {\n var _self = this;\n this.container = container || dom.createElement(\"div\");\n dom.addCssClass(this.container, \"ace_editor\");\n if (dom.HI_DPI)\n dom.addCssClass(this.container, \"ace_hidpi\");\n this.setTheme(theme);\n if (config.get(\"useStrictCSP\") == null)\n config.set(\"useStrictCSP\", false);\n this.$gutter = dom.createElement(\"div\");\n this.$gutter.className = \"ace_gutter\";\n this.container.appendChild(this.$gutter);\n this.$gutter.setAttribute(\"aria-hidden\", true);\n this.scroller = dom.createElement(\"div\");\n this.scroller.className = \"ace_scroller\";\n this.container.appendChild(this.scroller);\n this.content = dom.createElement(\"div\");\n this.content.className = \"ace_content\";\n this.scroller.appendChild(this.content);\n this.$gutterLayer = new GutterLayer(this.$gutter);\n this.$gutterLayer.on(\"changeGutterWidth\", this.onGutterResize.bind(this));\n this.$markerBack = new MarkerLayer(this.content);\n var textLayer = this.$textLayer = new TextLayer(this.content);\n this.canvas = textLayer.element;\n this.$markerFront = new MarkerLayer(this.content);\n this.$cursorLayer = new CursorLayer(this.content);\n this.$horizScroll = false;\n this.$vScroll = false;\n this.scrollBar =\n this.scrollBarV = new VScrollBar(this.container, this);\n this.scrollBarH = new HScrollBar(this.container, this);\n this.scrollBarV.on(\"scroll\", function (e) {\n if (!_self.$scrollAnimation)\n _self.session.setScrollTop(e.data - _self.scrollMargin.top);\n });\n this.scrollBarH.on(\"scroll\", function (e) {\n if (!_self.$scrollAnimation)\n _self.session.setScrollLeft(e.data - _self.scrollMargin.left);\n });\n this.scrollTop = 0;\n this.scrollLeft = 0;\n this.cursorPos = {\n row: 0,\n column: 0\n };\n this.$fontMetrics = new FontMetrics(this.container);\n this.$textLayer.$setFontMetrics(this.$fontMetrics);\n this.$textLayer.on(\"changeCharacterSize\", function (e) {\n _self.updateCharacterSize();\n _self.onResize(true, _self.gutterWidth, _self.$size.width, _self.$size.height);\n _self._signal(\"changeCharacterSize\", e);\n });\n this.$size = {\n width: 0,\n height: 0,\n scrollerHeight: 0,\n scrollerWidth: 0,\n $dirty: true\n };\n this.layerConfig = {\n width: 1,\n padding: 0,\n firstRow: 0,\n firstRowScreen: 0,\n lastRow: 0,\n lineHeight: 0,\n characterWidth: 0,\n minHeight: 1,\n maxHeight: 1,\n offset: 0,\n height: 1,\n gutterOffset: 1\n };\n this.scrollMargin = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0,\n v: 0,\n h: 0\n };\n this.margin = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0,\n v: 0,\n h: 0\n };\n this.$keepTextAreaAtCursor = !useragent.isIOS;\n this.$loop = new RenderLoop(this.$renderChanges.bind(this), this.container.ownerDocument.defaultView);\n this.$loop.schedule(this.CHANGE_FULL);\n this.updateCharacterSize();\n this.setPadding(4);\n this.$addResizeObserver();\n config.resetOptions(this);\n config._signal(\"renderer\", this);\n }\n VirtualRenderer.prototype.updateCharacterSize = function () {\n if (this.$textLayer.allowBoldFonts != this.$allowBoldFonts) {\n this.$allowBoldFonts = this.$textLayer.allowBoldFonts;\n this.setStyle(\"ace_nobold\", !this.$allowBoldFonts);\n }\n this.layerConfig.characterWidth =\n this.characterWidth = this.$textLayer.getCharacterWidth();\n this.layerConfig.lineHeight =\n this.lineHeight = this.$textLayer.getLineHeight();\n this.$updatePrintMargin();\n dom.setStyle(this.scroller.style, \"line-height\", this.lineHeight + \"px\");\n };\n VirtualRenderer.prototype.setSession = function (session) {\n if (this.session)\n this.session.doc.off(\"changeNewLineMode\", this.onChangeNewLineMode);\n this.session = session;\n if (session && this.scrollMargin.top && session.getScrollTop() <= 0)\n session.setScrollTop(-this.scrollMargin.top);\n this.$cursorLayer.setSession(session);\n this.$markerBack.setSession(session);\n this.$markerFront.setSession(session);\n this.$gutterLayer.setSession(session);\n this.$textLayer.setSession(session);\n if (!session)\n return;\n this.$loop.schedule(this.CHANGE_FULL);\n this.session.$setFontMetrics(this.$fontMetrics);\n this.scrollBarH.scrollLeft = this.scrollBarV.scrollTop = null;\n this.onChangeNewLineMode = this.onChangeNewLineMode.bind(this);\n this.onChangeNewLineMode();\n this.session.doc.on(\"changeNewLineMode\", this.onChangeNewLineMode);\n };\n VirtualRenderer.prototype.updateLines = function (firstRow, lastRow, force) {\n if (lastRow === undefined)\n lastRow = Infinity;\n if (!this.$changedLines) {\n this.$changedLines = {\n firstRow: firstRow,\n lastRow: lastRow\n };\n }\n else {\n if (this.$changedLines.firstRow > firstRow)\n this.$changedLines.firstRow = firstRow;\n if (this.$changedLines.lastRow < lastRow)\n this.$changedLines.lastRow = lastRow;\n }\n if (this.$changedLines.lastRow < this.layerConfig.firstRow) {\n if (force)\n this.$changedLines.lastRow = this.layerConfig.lastRow;\n else\n return;\n }\n if (this.$changedLines.firstRow > this.layerConfig.lastRow)\n return;\n this.$loop.schedule(this.CHANGE_LINES);\n };\n VirtualRenderer.prototype.onChangeNewLineMode = function () {\n this.$loop.schedule(this.CHANGE_TEXT);\n this.$textLayer.$updateEolChar();\n this.session.$bidiHandler.setEolChar(this.$textLayer.EOL_CHAR);\n };\n VirtualRenderer.prototype.onChangeTabSize = function () {\n this.$loop.schedule(this.CHANGE_TEXT | this.CHANGE_MARKER);\n this.$textLayer.onChangeTabSize();\n };\n VirtualRenderer.prototype.updateText = function () {\n this.$loop.schedule(this.CHANGE_TEXT);\n };\n VirtualRenderer.prototype.updateFull = function (force) {\n if (force)\n this.$renderChanges(this.CHANGE_FULL, true);\n else\n this.$loop.schedule(this.CHANGE_FULL);\n };\n VirtualRenderer.prototype.updateFontSize = function () {\n this.$textLayer.checkForSizeChanges();\n };\n VirtualRenderer.prototype.$updateSizeAsync = function () {\n if (this.$loop.pending)\n this.$size.$dirty = true;\n else\n this.onResize();\n };\n VirtualRenderer.prototype.onResize = function (force, gutterWidth, width, height) {\n if (this.resizing > 2)\n return;\n else if (this.resizing > 0)\n this.resizing++;\n else\n this.resizing = force ? 1 : 0;\n var el = this.container;\n if (!height)\n height = el.clientHeight || el.scrollHeight;\n if (!width)\n width = el.clientWidth || el.scrollWidth;\n var changes = this.$updateCachedSize(force, gutterWidth, width, height);\n if (this.$resizeTimer)\n this.$resizeTimer.cancel();\n if (!this.$size.scrollerHeight || (!width && !height))\n return this.resizing = 0;\n if (force)\n this.$gutterLayer.$padding = null;\n if (force)\n this.$renderChanges(changes | this.$changes, true);\n else\n this.$loop.schedule(changes | this.$changes);\n if (this.resizing)\n this.resizing = 0;\n this.scrollBarH.scrollLeft = this.scrollBarV.scrollTop = null;\n if (this.$customScrollbar) {\n this.$updateCustomScrollbar(true);\n }\n };\n VirtualRenderer.prototype.$updateCachedSize = function (force, gutterWidth, width, height) {\n height -= (this.$extraHeight || 0);\n var changes = 0;\n var size = this.$size;\n var oldSize = {\n width: size.width,\n height: size.height,\n scrollerHeight: size.scrollerHeight,\n scrollerWidth: size.scrollerWidth\n };\n if (height && (force || size.height != height)) {\n size.height = height;\n changes |= this.CHANGE_SIZE;\n size.scrollerHeight = size.height;\n if (this.$horizScroll)\n size.scrollerHeight -= this.scrollBarH.getHeight();\n this.scrollBarV.setHeight(size.scrollerHeight);\n this.scrollBarV.element.style.bottom = this.scrollBarH.getHeight() + \"px\";\n changes = changes | this.CHANGE_SCROLL;\n }\n if (width && (force || size.width != width)) {\n changes |= this.CHANGE_SIZE;\n size.width = width;\n if (gutterWidth == null)\n gutterWidth = this.$showGutter ? this.$gutter.offsetWidth : 0;\n this.gutterWidth = gutterWidth;\n dom.setStyle(this.scrollBarH.element.style, \"left\", gutterWidth + \"px\");\n dom.setStyle(this.scroller.style, \"left\", gutterWidth + this.margin.left + \"px\");\n size.scrollerWidth = Math.max(0, width - gutterWidth - this.scrollBarV.getWidth() - this.margin.h);\n dom.setStyle(this.$gutter.style, \"left\", this.margin.left + \"px\");\n var right = this.scrollBarV.getWidth() + \"px\";\n dom.setStyle(this.scrollBarH.element.style, \"right\", right);\n dom.setStyle(this.scroller.style, \"right\", right);\n dom.setStyle(this.scroller.style, \"bottom\", this.scrollBarH.getHeight());\n this.scrollBarH.setWidth(size.scrollerWidth);\n if (this.session && this.session.getUseWrapMode() && this.adjustWrapLimit() || force) {\n changes |= this.CHANGE_FULL;\n }\n }\n size.$dirty = !width || !height;\n if (changes)\n this._signal(\"resize\", oldSize);\n return changes;\n };\n VirtualRenderer.prototype.onGutterResize = function (width) {\n var gutterWidth = this.$showGutter ? width : 0;\n if (gutterWidth != this.gutterWidth)\n this.$changes |= this.$updateCachedSize(true, gutterWidth, this.$size.width, this.$size.height);\n if (this.session.getUseWrapMode() && this.adjustWrapLimit()) {\n this.$loop.schedule(this.CHANGE_FULL);\n }\n else if (this.$size.$dirty) {\n this.$loop.schedule(this.CHANGE_FULL);\n }\n else {\n this.$computeLayerConfig();\n }\n };\n VirtualRenderer.prototype.adjustWrapLimit = function () {\n var availableWidth = this.$size.scrollerWidth - this.$padding * 2;\n var limit = Math.floor(availableWidth / this.characterWidth);\n return this.session.adjustWrapLimit(limit, this.$showPrintMargin && this.$printMarginColumn);\n };\n VirtualRenderer.prototype.setAnimatedScroll = function (shouldAnimate) {\n this.setOption(\"animatedScroll\", shouldAnimate);\n };\n VirtualRenderer.prototype.getAnimatedScroll = function () {\n return this.$animatedScroll;\n };\n VirtualRenderer.prototype.setShowInvisibles = function (showInvisibles) {\n this.setOption(\"showInvisibles\", showInvisibles);\n this.session.$bidiHandler.setShowInvisibles(showInvisibles);\n };\n VirtualRenderer.prototype.getShowInvisibles = function () {\n return this.getOption(\"showInvisibles\");\n };\n VirtualRenderer.prototype.getDisplayIndentGuides = function () {\n return this.getOption(\"displayIndentGuides\");\n };\n VirtualRenderer.prototype.setDisplayIndentGuides = function (display) {\n this.setOption(\"displayIndentGuides\", display);\n };\n VirtualRenderer.prototype.getHighlightIndentGuides = function () {\n return this.getOption(\"highlightIndentGuides\");\n };\n VirtualRenderer.prototype.setHighlightIndentGuides = function (highlight) {\n this.setOption(\"highlightIndentGuides\", highlight);\n };\n VirtualRenderer.prototype.setShowPrintMargin = function (showPrintMargin) {\n this.setOption(\"showPrintMargin\", showPrintMargin);\n };\n VirtualRenderer.prototype.getShowPrintMargin = function () {\n return this.getOption(\"showPrintMargin\");\n };\n VirtualRenderer.prototype.setPrintMarginColumn = function (showPrintMargin) {\n this.setOption(\"printMarginColumn\", showPrintMargin);\n };\n VirtualRenderer.prototype.getPrintMarginColumn = function () {\n return this.getOption(\"printMarginColumn\");\n };\n VirtualRenderer.prototype.getShowGutter = function () {\n return this.getOption(\"showGutter\");\n };\n VirtualRenderer.prototype.setShowGutter = function (show) {\n return this.setOption(\"showGutter\", show);\n };\n VirtualRenderer.prototype.getFadeFoldWidgets = function () {\n return this.getOption(\"fadeFoldWidgets\");\n };\n VirtualRenderer.prototype.setFadeFoldWidgets = function (show) {\n this.setOption(\"fadeFoldWidgets\", show);\n };\n VirtualRenderer.prototype.setHighlightGutterLine = function (shouldHighlight) {\n this.setOption(\"highlightGutterLine\", shouldHighlight);\n };\n VirtualRenderer.prototype.getHighlightGutterLine = function () {\n return this.getOption(\"highlightGutterLine\");\n };\n VirtualRenderer.prototype.$updatePrintMargin = function () {\n if (!this.$showPrintMargin && !this.$printMarginEl)\n return;\n if (!this.$printMarginEl) {\n var containerEl = dom.createElement(\"div\");\n containerEl.className = \"ace_layer ace_print-margin-layer\";\n this.$printMarginEl = dom.createElement(\"div\");\n this.$printMarginEl.className = \"ace_print-margin\";\n containerEl.appendChild(this.$printMarginEl);\n this.content.insertBefore(containerEl, this.content.firstChild);\n }\n var style = this.$printMarginEl.style;\n style.left = Math.round(this.characterWidth * this.$printMarginColumn + this.$padding) + \"px\";\n style.visibility = this.$showPrintMargin ? \"visible\" : \"hidden\";\n if (this.session && this.session.$wrap == -1)\n this.adjustWrapLimit();\n };\n VirtualRenderer.prototype.getContainerElement = function () {\n return this.container;\n };\n VirtualRenderer.prototype.getMouseEventTarget = function () {\n return this.scroller;\n };\n VirtualRenderer.prototype.getTextAreaContainer = function () {\n return this.container;\n };\n VirtualRenderer.prototype.$moveTextAreaToCursor = function () {\n if (this.$isMousePressed)\n return;\n var style = this.textarea.style;\n var composition = this.$composition;\n if (!this.$keepTextAreaAtCursor && !composition) {\n dom.translate(this.textarea, -100, 0);\n return;\n }\n var pixelPos = this.$cursorLayer.$pixelPos;\n if (!pixelPos)\n return;\n if (composition && composition.markerRange)\n pixelPos = this.$cursorLayer.getPixelPosition(composition.markerRange.start, true);\n var config = this.layerConfig;\n var posTop = pixelPos.top;\n var posLeft = pixelPos.left;\n posTop -= config.offset;\n var h = composition && composition.useTextareaForIME || useragent.isMobile ? this.lineHeight : 1;\n if (posTop < 0 || posTop > config.height - h) {\n dom.translate(this.textarea, 0, 0);\n return;\n }\n var w = 1;\n var maxTop = this.$size.height - h;\n if (!composition) {\n posTop += this.lineHeight;\n }\n else {\n if (composition.useTextareaForIME) {\n var val = this.textarea.value;\n w = this.characterWidth * (this.session.$getStringScreenWidth(val)[0]);\n }\n else {\n posTop += this.lineHeight + 2;\n }\n }\n posLeft -= this.scrollLeft;\n if (posLeft > this.$size.scrollerWidth - w)\n posLeft = this.$size.scrollerWidth - w;\n posLeft += this.gutterWidth + this.margin.left;\n dom.setStyle(style, \"height\", h + \"px\");\n dom.setStyle(style, \"width\", w + \"px\");\n dom.translate(this.textarea, Math.min(posLeft, this.$size.scrollerWidth - w), Math.min(posTop, maxTop));\n };\n VirtualRenderer.prototype.getFirstVisibleRow = function () {\n return this.layerConfig.firstRow;\n };\n VirtualRenderer.prototype.getFirstFullyVisibleRow = function () {\n return this.layerConfig.firstRow + (this.layerConfig.offset === 0 ? 0 : 1);\n };\n VirtualRenderer.prototype.getLastFullyVisibleRow = function () {\n var config = this.layerConfig;\n var lastRow = config.lastRow;\n var top = this.session.documentToScreenRow(lastRow, 0) * config.lineHeight;\n if (top - this.session.getScrollTop() > config.height - config.lineHeight)\n return lastRow - 1;\n return lastRow;\n };\n VirtualRenderer.prototype.getLastVisibleRow = function () {\n return this.layerConfig.lastRow;\n };\n VirtualRenderer.prototype.setPadding = function (padding) {\n this.$padding = padding;\n this.$textLayer.setPadding(padding);\n this.$cursorLayer.setPadding(padding);\n this.$markerFront.setPadding(padding);\n this.$markerBack.setPadding(padding);\n this.$loop.schedule(this.CHANGE_FULL);\n this.$updatePrintMargin();\n };\n VirtualRenderer.prototype.setScrollMargin = function (top, bottom, left, right) {\n var sm = this.scrollMargin;\n sm.top = top | 0;\n sm.bottom = bottom | 0;\n sm.right = right | 0;\n sm.left = left | 0;\n sm.v = sm.top + sm.bottom;\n sm.h = sm.left + sm.right;\n if (sm.top && this.scrollTop <= 0 && this.session)\n this.session.setScrollTop(-sm.top);\n this.updateFull();\n };\n VirtualRenderer.prototype.setMargin = function (top, bottom, left, right) {\n var sm = this.margin;\n sm.top = top | 0;\n sm.bottom = bottom | 0;\n sm.right = right | 0;\n sm.left = left | 0;\n sm.v = sm.top + sm.bottom;\n sm.h = sm.left + sm.right;\n this.$updateCachedSize(true, this.gutterWidth, this.$size.width, this.$size.height);\n this.updateFull();\n };\n VirtualRenderer.prototype.getHScrollBarAlwaysVisible = function () {\n return this.$hScrollBarAlwaysVisible;\n };\n VirtualRenderer.prototype.setHScrollBarAlwaysVisible = function (alwaysVisible) {\n this.setOption(\"hScrollBarAlwaysVisible\", alwaysVisible);\n };\n VirtualRenderer.prototype.getVScrollBarAlwaysVisible = function () {\n return this.$vScrollBarAlwaysVisible;\n };\n VirtualRenderer.prototype.setVScrollBarAlwaysVisible = function (alwaysVisible) {\n this.setOption(\"vScrollBarAlwaysVisible\", alwaysVisible);\n };\n VirtualRenderer.prototype.$updateScrollBarV = function () {\n var scrollHeight = this.layerConfig.maxHeight;\n var scrollerHeight = this.$size.scrollerHeight;\n if (!this.$maxLines && this.$scrollPastEnd) {\n scrollHeight -= (scrollerHeight - this.lineHeight) * this.$scrollPastEnd;\n if (this.scrollTop > scrollHeight - scrollerHeight) {\n scrollHeight = this.scrollTop + scrollerHeight;\n this.scrollBarV.scrollTop = null;\n }\n }\n this.scrollBarV.setScrollHeight(scrollHeight + this.scrollMargin.v);\n this.scrollBarV.setScrollTop(this.scrollTop + this.scrollMargin.top);\n };\n VirtualRenderer.prototype.$updateScrollBarH = function () {\n this.scrollBarH.setScrollWidth(this.layerConfig.width + 2 * this.$padding + this.scrollMargin.h);\n this.scrollBarH.setScrollLeft(this.scrollLeft + this.scrollMargin.left);\n };\n VirtualRenderer.prototype.freeze = function () {\n this.$frozen = true;\n };\n VirtualRenderer.prototype.unfreeze = function () {\n this.$frozen = false;\n };\n VirtualRenderer.prototype.$renderChanges = function (changes, force) {\n if (this.$changes) {\n changes |= this.$changes;\n this.$changes = 0;\n }\n if ((!this.session || !this.container.offsetWidth || this.$frozen) || (!changes && !force)) {\n this.$changes |= changes;\n return;\n }\n if (this.$size.$dirty) {\n this.$changes |= changes;\n return this.onResize(true);\n }\n if (!this.lineHeight) {\n this.$textLayer.checkForSizeChanges();\n }\n this._signal(\"beforeRender\", changes);\n if (this.session && this.session.$bidiHandler)\n this.session.$bidiHandler.updateCharacterWidths(this.$fontMetrics);\n var config = this.layerConfig;\n if (changes & this.CHANGE_FULL ||\n changes & this.CHANGE_SIZE ||\n changes & this.CHANGE_TEXT ||\n changes & this.CHANGE_LINES ||\n changes & this.CHANGE_SCROLL ||\n changes & this.CHANGE_H_SCROLL) {\n changes |= this.$computeLayerConfig() | this.$loop.clear();\n if (config.firstRow != this.layerConfig.firstRow && config.firstRowScreen == this.layerConfig.firstRowScreen) {\n var st = this.scrollTop + (config.firstRow - Math.max(this.layerConfig.firstRow, 0)) * this.lineHeight;\n if (st > 0) {\n this.scrollTop = st;\n changes = changes | this.CHANGE_SCROLL;\n changes |= this.$computeLayerConfig() | this.$loop.clear();\n }\n }\n config = this.layerConfig;\n this.$updateScrollBarV();\n if (changes & this.CHANGE_H_SCROLL)\n this.$updateScrollBarH();\n dom.translate(this.content, -this.scrollLeft, -config.offset);\n var width = config.width + 2 * this.$padding + \"px\";\n var height = config.minHeight + \"px\";\n dom.setStyle(this.content.style, \"width\", width);\n dom.setStyle(this.content.style, \"height\", height);\n }\n if (changes & this.CHANGE_H_SCROLL) {\n dom.translate(this.content, -this.scrollLeft, -config.offset);\n this.scroller.className = this.scrollLeft <= 0 ? \"ace_scroller \" : \"ace_scroller ace_scroll-left \";\n if (this.enableKeyboardAccessibility)\n this.scroller.className += this.keyboardFocusClassName;\n }\n if (changes & this.CHANGE_FULL) {\n this.$changedLines = null;\n this.$textLayer.update(config);\n if (this.$showGutter)\n this.$gutterLayer.update(config);\n if (this.$customScrollbar) {\n this.$scrollDecorator.$updateDecorators(config);\n }\n this.$markerBack.update(config);\n this.$markerFront.update(config);\n this.$cursorLayer.update(config);\n this.$moveTextAreaToCursor();\n this._signal(\"afterRender\", changes);\n return;\n }\n if (changes & this.CHANGE_SCROLL) {\n this.$changedLines = null;\n if (changes & this.CHANGE_TEXT || changes & this.CHANGE_LINES)\n this.$textLayer.update(config);\n else\n this.$textLayer.scrollLines(config);\n if (this.$showGutter) {\n if (changes & this.CHANGE_GUTTER || changes & this.CHANGE_LINES)\n this.$gutterLayer.update(config);\n else\n this.$gutterLayer.scrollLines(config);\n }\n if (this.$customScrollbar) {\n this.$scrollDecorator.$updateDecorators(config);\n }\n this.$markerBack.update(config);\n this.$markerFront.update(config);\n this.$cursorLayer.update(config);\n this.$moveTextAreaToCursor();\n this._signal(\"afterRender\", changes);\n return;\n }\n if (changes & this.CHANGE_TEXT) {\n this.$changedLines = null;\n this.$textLayer.update(config);\n if (this.$showGutter)\n this.$gutterLayer.update(config);\n if (this.$customScrollbar) {\n this.$scrollDecorator.$updateDecorators(config);\n }\n }\n else if (changes & this.CHANGE_LINES) {\n if (this.$updateLines() || (changes & this.CHANGE_GUTTER) && this.$showGutter)\n this.$gutterLayer.update(config);\n if (this.$customScrollbar) {\n this.$scrollDecorator.$updateDecorators(config);\n }\n }\n else if (changes & this.CHANGE_TEXT || changes & this.CHANGE_GUTTER) {\n if (this.$showGutter)\n this.$gutterLayer.update(config);\n if (this.$customScrollbar) {\n this.$scrollDecorator.$updateDecorators(config);\n }\n }\n else if (changes & this.CHANGE_CURSOR) {\n if (this.$highlightGutterLine)\n this.$gutterLayer.updateLineHighlight(config);\n if (this.$customScrollbar) {\n this.$scrollDecorator.$updateDecorators(config);\n }\n }\n if (changes & this.CHANGE_CURSOR) {\n this.$cursorLayer.update(config);\n this.$moveTextAreaToCursor();\n }\n if (changes & (this.CHANGE_MARKER | this.CHANGE_MARKER_FRONT)) {\n this.$markerFront.update(config);\n }\n if (changes & (this.CHANGE_MARKER | this.CHANGE_MARKER_BACK)) {\n this.$markerBack.update(config);\n }\n this._signal(\"afterRender\", changes);\n };\n VirtualRenderer.prototype.$autosize = function () {\n var height = this.session.getScreenLength() * this.lineHeight;\n var maxHeight = this.$maxLines * this.lineHeight;\n var desiredHeight = Math.min(maxHeight, Math.max((this.$minLines || 1) * this.lineHeight, height)) + this.scrollMargin.v + (this.$extraHeight || 0);\n if (this.$horizScroll)\n desiredHeight += this.scrollBarH.getHeight();\n if (this.$maxPixelHeight && desiredHeight > this.$maxPixelHeight)\n desiredHeight = this.$maxPixelHeight;\n var hideScrollbars = desiredHeight <= 2 * this.lineHeight;\n var vScroll = !hideScrollbars && height > maxHeight;\n if (desiredHeight != this.desiredHeight ||\n this.$size.height != this.desiredHeight || vScroll != this.$vScroll) {\n if (vScroll != this.$vScroll) {\n this.$vScroll = vScroll;\n this.scrollBarV.setVisible(vScroll);\n }\n var w = this.container.clientWidth;\n this.container.style.height = desiredHeight + \"px\";\n this.$updateCachedSize(true, this.$gutterWidth, w, desiredHeight);\n this.desiredHeight = desiredHeight;\n this._signal(\"autosize\");\n }\n };\n VirtualRenderer.prototype.$computeLayerConfig = function () {\n var session = this.session;\n var size = this.$size;\n var hideScrollbars = size.height <= 2 * this.lineHeight;\n var screenLines = this.session.getScreenLength();\n var maxHeight = screenLines * this.lineHeight;\n var longestLine = this.$getLongestLine();\n var horizScroll = !hideScrollbars && (this.$hScrollBarAlwaysVisible ||\n size.scrollerWidth - longestLine - 2 * this.$padding < 0);\n var hScrollChanged = this.$horizScroll !== horizScroll;\n if (hScrollChanged) {\n this.$horizScroll = horizScroll;\n this.scrollBarH.setVisible(horizScroll);\n }\n var vScrollBefore = this.$vScroll; // autosize can change vscroll value in which case we need to update longestLine\n if (this.$maxLines && this.lineHeight > 1)\n this.$autosize();\n var minHeight = size.scrollerHeight + this.lineHeight;\n var scrollPastEnd = !this.$maxLines && this.$scrollPastEnd\n ? (size.scrollerHeight - this.lineHeight) * this.$scrollPastEnd\n : 0;\n maxHeight += scrollPastEnd;\n var sm = this.scrollMargin;\n this.session.setScrollTop(Math.max(-sm.top, Math.min(this.scrollTop, maxHeight - size.scrollerHeight + sm.bottom)));\n this.session.setScrollLeft(Math.max(-sm.left, Math.min(this.scrollLeft, longestLine + 2 * this.$padding - size.scrollerWidth + sm.right)));\n var vScroll = !hideScrollbars && (this.$vScrollBarAlwaysVisible ||\n size.scrollerHeight - maxHeight + scrollPastEnd < 0 || this.scrollTop > sm.top);\n var vScrollChanged = vScrollBefore !== vScroll;\n if (vScrollChanged) {\n this.$vScroll = vScroll;\n this.scrollBarV.setVisible(vScroll);\n }\n var offset = this.scrollTop % this.lineHeight;\n var lineCount = Math.ceil(minHeight / this.lineHeight) - 1;\n var firstRow = Math.max(0, Math.round((this.scrollTop - offset) / this.lineHeight));\n var lastRow = firstRow + lineCount;\n var firstRowScreen, firstRowHeight;\n var lineHeight = this.lineHeight;\n firstRow = session.screenToDocumentRow(firstRow, 0);\n var foldLine = session.getFoldLine(firstRow);\n if (foldLine) {\n firstRow = foldLine.start.row;\n }\n firstRowScreen = session.documentToScreenRow(firstRow, 0);\n firstRowHeight = session.getRowLength(firstRow) * lineHeight;\n lastRow = Math.min(session.screenToDocumentRow(lastRow, 0), session.getLength() - 1);\n minHeight = size.scrollerHeight + session.getRowLength(lastRow) * lineHeight +\n firstRowHeight;\n offset = this.scrollTop - firstRowScreen * lineHeight;\n var changes = 0;\n if (this.layerConfig.width != longestLine || hScrollChanged)\n changes = this.CHANGE_H_SCROLL;\n if (hScrollChanged || vScrollChanged) {\n changes |= this.$updateCachedSize(true, this.gutterWidth, size.width, size.height);\n this._signal(\"scrollbarVisibilityChanged\");\n if (vScrollChanged)\n longestLine = this.$getLongestLine();\n }\n this.layerConfig = {\n width: longestLine,\n padding: this.$padding,\n firstRow: firstRow,\n firstRowScreen: firstRowScreen,\n lastRow: lastRow,\n lineHeight: lineHeight,\n characterWidth: this.characterWidth,\n minHeight: minHeight,\n maxHeight: maxHeight,\n offset: offset,\n gutterOffset: lineHeight ? Math.max(0, Math.ceil((offset + size.height - size.scrollerHeight) / lineHeight)) : 0,\n height: this.$size.scrollerHeight\n };\n if (this.session.$bidiHandler)\n this.session.$bidiHandler.setContentWidth(longestLine - this.$padding);\n return changes;\n };\n VirtualRenderer.prototype.$updateLines = function () {\n if (!this.$changedLines)\n return;\n var firstRow = this.$changedLines.firstRow;\n var lastRow = this.$changedLines.lastRow;\n this.$changedLines = null;\n var layerConfig = this.layerConfig;\n if (firstRow > layerConfig.lastRow + 1) {\n return;\n }\n if (lastRow < layerConfig.firstRow) {\n return;\n }\n if (lastRow === Infinity) {\n if (this.$showGutter)\n this.$gutterLayer.update(layerConfig);\n this.$textLayer.update(layerConfig);\n return;\n }\n this.$textLayer.updateLines(layerConfig, firstRow, lastRow);\n return true;\n };\n VirtualRenderer.prototype.$getLongestLine = function () {\n var charCount = this.session.getScreenWidth();\n if (this.showInvisibles && !this.session.$useWrapMode)\n charCount += 1;\n if (this.$textLayer && charCount > this.$textLayer.MAX_LINE_LENGTH)\n charCount = this.$textLayer.MAX_LINE_LENGTH + 30;\n return Math.max(this.$size.scrollerWidth - 2 * this.$padding, Math.round(charCount * this.characterWidth));\n };\n VirtualRenderer.prototype.updateFrontMarkers = function () {\n this.$markerFront.setMarkers(this.session.getMarkers(true));\n this.$loop.schedule(this.CHANGE_MARKER_FRONT);\n };\n VirtualRenderer.prototype.updateBackMarkers = function () {\n this.$markerBack.setMarkers(this.session.getMarkers());\n this.$loop.schedule(this.CHANGE_MARKER_BACK);\n };\n VirtualRenderer.prototype.addGutterDecoration = function (row, className) {\n this.$gutterLayer.addGutterDecoration(row, className);\n };\n VirtualRenderer.prototype.removeGutterDecoration = function (row, className) {\n this.$gutterLayer.removeGutterDecoration(row, className);\n };\n VirtualRenderer.prototype.updateBreakpoints = function (rows) {\n this.$loop.schedule(this.CHANGE_GUTTER);\n };\n VirtualRenderer.prototype.setAnnotations = function (annotations) {\n this.$gutterLayer.setAnnotations(annotations);\n this.$loop.schedule(this.CHANGE_GUTTER);\n };\n VirtualRenderer.prototype.updateCursor = function () {\n this.$loop.schedule(this.CHANGE_CURSOR);\n };\n VirtualRenderer.prototype.hideCursor = function () {\n this.$cursorLayer.hideCursor();\n };\n VirtualRenderer.prototype.showCursor = function () {\n this.$cursorLayer.showCursor();\n };\n VirtualRenderer.prototype.scrollSelectionIntoView = function (anchor, lead, offset) {\n this.scrollCursorIntoView(anchor, offset);\n this.scrollCursorIntoView(lead, offset);\n };\n VirtualRenderer.prototype.scrollCursorIntoView = function (cursor, offset, $viewMargin) {\n if (this.$size.scrollerHeight === 0)\n return;\n var pos = this.$cursorLayer.getPixelPosition(cursor);\n var newLeft = pos.left;\n var newTop = pos.top;\n var topMargin = $viewMargin && $viewMargin.top || 0;\n var bottomMargin = $viewMargin && $viewMargin.bottom || 0;\n if (this.$scrollAnimation) {\n this.$stopAnimation = true;\n }\n var currentTop = this.$scrollAnimation ? this.session.getScrollTop() : this.scrollTop;\n if (currentTop + topMargin > newTop) {\n if (offset && currentTop + topMargin > newTop + this.lineHeight)\n newTop -= offset * this.$size.scrollerHeight;\n if (newTop === 0)\n newTop = -this.scrollMargin.top;\n this.session.setScrollTop(newTop);\n }\n else if (currentTop + this.$size.scrollerHeight - bottomMargin < newTop + this.lineHeight) {\n if (offset && currentTop + this.$size.scrollerHeight - bottomMargin < newTop - this.lineHeight)\n newTop += offset * this.$size.scrollerHeight;\n this.session.setScrollTop(newTop + this.lineHeight + bottomMargin - this.$size.scrollerHeight);\n }\n var currentLeft = this.scrollLeft;\n var twoCharsWidth = 2 * this.layerConfig.characterWidth;\n if (newLeft - twoCharsWidth < currentLeft) {\n newLeft -= twoCharsWidth;\n if (newLeft < this.$padding + twoCharsWidth) {\n newLeft = -this.scrollMargin.left;\n }\n this.session.setScrollLeft(newLeft);\n }\n else {\n newLeft += twoCharsWidth;\n if (currentLeft + this.$size.scrollerWidth < newLeft + this.characterWidth) {\n this.session.setScrollLeft(Math.round(newLeft + this.characterWidth - this.$size.scrollerWidth));\n }\n else if (currentLeft <= this.$padding && newLeft - currentLeft < this.characterWidth) {\n this.session.setScrollLeft(0);\n }\n }\n };\n VirtualRenderer.prototype.getScrollTop = function () {\n return this.session.getScrollTop();\n };\n VirtualRenderer.prototype.getScrollLeft = function () {\n return this.session.getScrollLeft();\n };\n VirtualRenderer.prototype.getScrollTopRow = function () {\n return this.scrollTop / this.lineHeight;\n };\n VirtualRenderer.prototype.getScrollBottomRow = function () {\n return Math.max(0, Math.floor((this.scrollTop + this.$size.scrollerHeight) / this.lineHeight) - 1);\n };\n VirtualRenderer.prototype.scrollToRow = function (row) {\n this.session.setScrollTop(row * this.lineHeight);\n };\n VirtualRenderer.prototype.alignCursor = function (cursor, alignment) {\n if (typeof cursor == \"number\")\n cursor = { row: cursor, column: 0 };\n var pos = this.$cursorLayer.getPixelPosition(cursor);\n var h = this.$size.scrollerHeight - this.lineHeight;\n var offset = pos.top - h * (alignment || 0);\n this.session.setScrollTop(offset);\n return offset;\n };\n VirtualRenderer.prototype.$calcSteps = function (fromValue, toValue) {\n var i = 0;\n var l = this.STEPS;\n var steps = [];\n var func = function (t, x_min, dx) {\n return dx * (Math.pow(t - 1, 3) + 1) + x_min;\n };\n for (i = 0; i < l; ++i)\n steps.push(func(i / this.STEPS, fromValue, toValue - fromValue));\n return steps;\n };\n VirtualRenderer.prototype.scrollToLine = function (line, center, animate, callback) {\n var pos = this.$cursorLayer.getPixelPosition({ row: line, column: 0 });\n var offset = pos.top;\n if (center)\n offset -= this.$size.scrollerHeight / 2;\n var initialScroll = this.scrollTop;\n this.session.setScrollTop(offset);\n if (animate !== false)\n this.animateScrolling(initialScroll, callback);\n };\n VirtualRenderer.prototype.animateScrolling = function (fromValue, callback) {\n var toValue = this.scrollTop;\n if (!this.$animatedScroll)\n return;\n var _self = this;\n if (fromValue == toValue)\n return;\n if (this.$scrollAnimation) {\n var oldSteps = this.$scrollAnimation.steps;\n if (oldSteps.length) {\n fromValue = oldSteps[0];\n if (fromValue == toValue)\n return;\n }\n }\n var steps = _self.$calcSteps(fromValue, toValue);\n this.$scrollAnimation = { from: fromValue, to: toValue, steps: steps };\n clearInterval(this.$timer);\n _self.session.setScrollTop(steps.shift());\n _self.session.$scrollTop = toValue;\n function endAnimation() {\n _self.$timer = clearInterval(_self.$timer);\n _self.$scrollAnimation = null;\n _self.$stopAnimation = false;\n callback && callback();\n }\n this.$timer = setInterval(function () {\n if (_self.$stopAnimation) {\n endAnimation();\n return;\n }\n if (!_self.session)\n return clearInterval(_self.$timer);\n if (steps.length) {\n _self.session.setScrollTop(steps.shift());\n _self.session.$scrollTop = toValue;\n }\n else if (toValue != null) {\n _self.session.$scrollTop = -1;\n _self.session.setScrollTop(toValue);\n toValue = null;\n }\n else {\n endAnimation();\n }\n }, 10);\n };\n VirtualRenderer.prototype.scrollToY = function (scrollTop) {\n if (this.scrollTop !== scrollTop) {\n this.$loop.schedule(this.CHANGE_SCROLL);\n this.scrollTop = scrollTop;\n }\n };\n VirtualRenderer.prototype.scrollToX = function (scrollLeft) {\n if (this.scrollLeft !== scrollLeft)\n this.scrollLeft = scrollLeft;\n this.$loop.schedule(this.CHANGE_H_SCROLL);\n };\n VirtualRenderer.prototype.scrollTo = function (x, y) {\n this.session.setScrollTop(y);\n this.session.setScrollLeft(x);\n };\n VirtualRenderer.prototype.scrollBy = function (deltaX, deltaY) {\n deltaY && this.session.setScrollTop(this.session.getScrollTop() + deltaY);\n deltaX && this.session.setScrollLeft(this.session.getScrollLeft() + deltaX);\n };\n VirtualRenderer.prototype.isScrollableBy = function (deltaX, deltaY) {\n if (deltaY < 0 && this.session.getScrollTop() >= 1 - this.scrollMargin.top)\n return true;\n if (deltaY > 0 && this.session.getScrollTop() + this.$size.scrollerHeight\n - this.layerConfig.maxHeight < -1 + this.scrollMargin.bottom)\n return true;\n if (deltaX < 0 && this.session.getScrollLeft() >= 1 - this.scrollMargin.left)\n return true;\n if (deltaX > 0 && this.session.getScrollLeft() + this.$size.scrollerWidth\n - this.layerConfig.width < -1 + this.scrollMargin.right)\n return true;\n };\n VirtualRenderer.prototype.pixelToScreenCoordinates = function (x, y) {\n var canvasPos;\n if (this.$hasCssTransforms) {\n canvasPos = { top: 0, left: 0 };\n var p = this.$fontMetrics.transformCoordinates([x, y]);\n x = p[1] - this.gutterWidth - this.margin.left;\n y = p[0];\n }\n else {\n canvasPos = this.scroller.getBoundingClientRect();\n }\n var offsetX = x + this.scrollLeft - canvasPos.left - this.$padding;\n var offset = offsetX / this.characterWidth;\n var row = Math.floor((y + this.scrollTop - canvasPos.top) / this.lineHeight);\n var col = this.$blockCursor ? Math.floor(offset) : Math.round(offset);\n return { row: row, column: col, side: offset - col > 0 ? 1 : -1, offsetX: offsetX };\n };\n VirtualRenderer.prototype.screenToTextCoordinates = function (x, y) {\n var canvasPos;\n if (this.$hasCssTransforms) {\n canvasPos = { top: 0, left: 0 };\n var p = this.$fontMetrics.transformCoordinates([x, y]);\n x = p[1] - this.gutterWidth - this.margin.left;\n y = p[0];\n }\n else {\n canvasPos = this.scroller.getBoundingClientRect();\n }\n var offsetX = x + this.scrollLeft - canvasPos.left - this.$padding;\n var offset = offsetX / this.characterWidth;\n var col = this.$blockCursor ? Math.floor(offset) : Math.round(offset);\n var row = Math.floor((y + this.scrollTop - canvasPos.top) / this.lineHeight);\n return this.session.screenToDocumentPosition(row, Math.max(col, 0), offsetX);\n };\n VirtualRenderer.prototype.textToScreenCoordinates = function (row, column) {\n var canvasPos = this.scroller.getBoundingClientRect();\n var pos = this.session.documentToScreenPosition(row, column);\n var x = this.$padding + (this.session.$bidiHandler.isBidiRow(pos.row, row)\n ? this.session.$bidiHandler.getPosLeft(pos.column)\n : Math.round(pos.column * this.characterWidth));\n var y = pos.row * this.lineHeight;\n return {\n pageX: canvasPos.left + x - this.scrollLeft,\n pageY: canvasPos.top + y - this.scrollTop\n };\n };\n VirtualRenderer.prototype.visualizeFocus = function () {\n dom.addCssClass(this.container, \"ace_focus\");\n };\n VirtualRenderer.prototype.visualizeBlur = function () {\n dom.removeCssClass(this.container, \"ace_focus\");\n };\n VirtualRenderer.prototype.showComposition = function (composition) {\n this.$composition = composition;\n if (!composition.cssText) {\n composition.cssText = this.textarea.style.cssText;\n }\n if (composition.useTextareaForIME == undefined)\n composition.useTextareaForIME = this.$useTextareaForIME;\n if (this.$useTextareaForIME) {\n dom.addCssClass(this.textarea, \"ace_composition\");\n this.textarea.style.cssText = \"\";\n this.$moveTextAreaToCursor();\n this.$cursorLayer.element.style.display = \"none\";\n }\n else {\n composition.markerId = this.session.addMarker(composition.markerRange, \"ace_composition_marker\", \"text\");\n }\n };\n VirtualRenderer.prototype.setCompositionText = function (text) {\n var cursor = this.session.selection.cursor;\n this.addToken(text, \"composition_placeholder\", cursor.row, cursor.column);\n this.$moveTextAreaToCursor();\n };\n VirtualRenderer.prototype.hideComposition = function () {\n if (!this.$composition)\n return;\n if (this.$composition.markerId)\n this.session.removeMarker(this.$composition.markerId);\n dom.removeCssClass(this.textarea, \"ace_composition\");\n this.textarea.style.cssText = this.$composition.cssText;\n var cursor = this.session.selection.cursor;\n this.removeExtraToken(cursor.row, cursor.column);\n this.$composition = null;\n this.$cursorLayer.element.style.display = \"\";\n };\n VirtualRenderer.prototype.setGhostText = function (text, position) {\n var cursor = this.session.selection.cursor;\n var insertPosition = position || { row: cursor.row, column: cursor.column };\n this.removeGhostText();\n var textLines = text.split(\"\\n\");\n this.addToken(textLines[0], \"ghost_text\", insertPosition.row, insertPosition.column);\n this.$ghostText = {\n text: text,\n position: {\n row: insertPosition.row,\n column: insertPosition.column\n }\n };\n if (textLines.length > 1) {\n this.$ghostTextWidget = {\n text: textLines.slice(1).join(\"\\n\"),\n row: insertPosition.row,\n column: insertPosition.column,\n className: \"ace_ghost_text\"\n };\n this.session.widgetManager.addLineWidget(this.$ghostTextWidget);\n }\n };\n VirtualRenderer.prototype.removeGhostText = function () {\n if (!this.$ghostText)\n return;\n var position = this.$ghostText.position;\n this.removeExtraToken(position.row, position.column);\n if (this.$ghostTextWidget) {\n this.session.widgetManager.removeLineWidget(this.$ghostTextWidget);\n this.$ghostTextWidget = null;\n }\n this.$ghostText = null;\n };\n VirtualRenderer.prototype.addToken = function (text, type, row, column) {\n var session = this.session;\n session.bgTokenizer.lines[row] = null;\n var newToken = { type: type, value: text };\n var tokens = session.getTokens(row);\n if (column == null || !tokens.length) {\n tokens.push(newToken);\n }\n else {\n var l = 0;\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n l += token.value.length;\n if (column <= l) {\n var diff = token.value.length - (l - column);\n var before = token.value.slice(0, diff);\n var after = token.value.slice(diff);\n tokens.splice(i, 1, { type: token.type, value: before }, newToken, { type: token.type, value: after });\n break;\n }\n }\n }\n this.updateLines(row, row);\n };\n VirtualRenderer.prototype.removeExtraToken = function (row, column) {\n this.session.bgTokenizer.lines[row] = null;\n this.updateLines(row, row);\n };\n VirtualRenderer.prototype.setTheme = function (theme, cb) {\n var _self = this;\n this.$themeId = theme;\n _self._dispatchEvent('themeChange', { theme: theme });\n if (!theme || typeof theme == \"string\") {\n var moduleName = theme || this.$options.theme.initialValue;\n config.loadModule([\"theme\", moduleName], afterLoad);\n }\n else {\n afterLoad(theme);\n }\n function afterLoad(module) {\n if (_self.$themeId != theme)\n return cb && cb();\n if (!module || !module.cssClass)\n throw new Error(\"couldn't load module \" + theme + \" or it didn't call define\");\n if (module.$id)\n _self.$themeId = module.$id;\n dom.importCssString(module.cssText, module.cssClass, _self.container);\n if (_self.theme)\n dom.removeCssClass(_self.container, _self.theme.cssClass);\n var padding = \"padding\" in module ? module.padding\n : \"padding\" in (_self.theme || {}) ? 4 : _self.$padding;\n if (_self.$padding && padding != _self.$padding)\n _self.setPadding(padding);\n _self.$theme = module.cssClass;\n _self.theme = module;\n dom.addCssClass(_self.container, module.cssClass);\n dom.setCssClass(_self.container, \"ace_dark\", module.isDark);\n if (_self.$size) {\n _self.$size.width = 0;\n _self.$updateSizeAsync();\n }\n _self._dispatchEvent('themeLoaded', { theme: module });\n cb && cb();\n }\n };\n VirtualRenderer.prototype.getTheme = function () {\n return this.$themeId;\n };\n VirtualRenderer.prototype.setStyle = function (style, include) {\n dom.setCssClass(this.container, style, include !== false);\n };\n VirtualRenderer.prototype.unsetStyle = function (style) {\n dom.removeCssClass(this.container, style);\n };\n VirtualRenderer.prototype.setCursorStyle = function (style) {\n dom.setStyle(this.scroller.style, \"cursor\", style);\n };\n VirtualRenderer.prototype.setMouseCursor = function (cursorStyle) {\n dom.setStyle(this.scroller.style, \"cursor\", cursorStyle);\n };\n VirtualRenderer.prototype.attachToShadowRoot = function () {\n dom.importCssString(editorCss, \"ace_editor.css\", this.container);\n };\n VirtualRenderer.prototype.destroy = function () {\n this.freeze();\n this.$fontMetrics.destroy();\n this.$cursorLayer.destroy();\n this.removeAllListeners();\n this.container.textContent = \"\";\n this.setOption(\"useResizeObserver\", false);\n };\n VirtualRenderer.prototype.$updateCustomScrollbar = function (val) {\n var _self = this;\n this.$horizScroll = this.$vScroll = null;\n this.scrollBarV.element.remove();\n this.scrollBarH.element.remove();\n if (this.$scrollDecorator) {\n delete this.$scrollDecorator;\n }\n if (val === true) {\n this.scrollBarV = new VScrollBarCustom(this.container, this);\n this.scrollBarH = new HScrollBarCustom(this.container, this);\n this.scrollBarV.setHeight(this.$size.scrollerHeight);\n this.scrollBarH.setWidth(this.$size.scrollerWidth);\n this.scrollBarV.addEventListener(\"scroll\", function (e) {\n if (!_self.$scrollAnimation)\n _self.session.setScrollTop(e.data - _self.scrollMargin.top);\n });\n this.scrollBarH.addEventListener(\"scroll\", function (e) {\n if (!_self.$scrollAnimation)\n _self.session.setScrollLeft(e.data - _self.scrollMargin.left);\n });\n this.$scrollDecorator = new Decorator(this.scrollBarV, this);\n this.$scrollDecorator.$updateDecorators();\n }\n else {\n this.scrollBarV = new VScrollBar(this.container, this);\n this.scrollBarH = new HScrollBar(this.container, this);\n this.scrollBarV.addEventListener(\"scroll\", function (e) {\n if (!_self.$scrollAnimation)\n _self.session.setScrollTop(e.data - _self.scrollMargin.top);\n });\n this.scrollBarH.addEventListener(\"scroll\", function (e) {\n if (!_self.$scrollAnimation)\n _self.session.setScrollLeft(e.data - _self.scrollMargin.left);\n });\n }\n };\n VirtualRenderer.prototype.$addResizeObserver = function () {\n if (!window.ResizeObserver || this.$resizeObserver)\n return;\n var self = this;\n this.$resizeTimer = lang.delayedCall(function () {\n if (!self.destroyed)\n self.onResize();\n }, 50);\n this.$resizeObserver = new window.ResizeObserver(function (e) {\n var w = e[0].contentRect.width;\n var h = e[0].contentRect.height;\n if (Math.abs(self.$size.width - w) > 1\n || Math.abs(self.$size.height - h) > 1) {\n self.$resizeTimer.delay();\n }\n else {\n self.$resizeTimer.cancel();\n }\n });\n this.$resizeObserver.observe(this.container);\n };\n return VirtualRenderer;\n}());\nVirtualRenderer.prototype.CHANGE_CURSOR = 1;\nVirtualRenderer.prototype.CHANGE_MARKER = 2;\nVirtualRenderer.prototype.CHANGE_GUTTER = 4;\nVirtualRenderer.prototype.CHANGE_SCROLL = 8;\nVirtualRenderer.prototype.CHANGE_LINES = 16;\nVirtualRenderer.prototype.CHANGE_TEXT = 32;\nVirtualRenderer.prototype.CHANGE_SIZE = 64;\nVirtualRenderer.prototype.CHANGE_MARKER_BACK = 128;\nVirtualRenderer.prototype.CHANGE_MARKER_FRONT = 256;\nVirtualRenderer.prototype.CHANGE_FULL = 512;\nVirtualRenderer.prototype.CHANGE_H_SCROLL = 1024;\nVirtualRenderer.prototype.$changes = 0;\nVirtualRenderer.prototype.$padding = null;\nVirtualRenderer.prototype.$frozen = false;\nVirtualRenderer.prototype.STEPS = 8;\noop.implement(VirtualRenderer.prototype, EventEmitter);\nconfig.defineOptions(VirtualRenderer.prototype, \"renderer\", {\n useResizeObserver: {\n set: function (value) {\n if (!value && this.$resizeObserver) {\n this.$resizeObserver.disconnect();\n this.$resizeTimer.cancel();\n this.$resizeTimer = this.$resizeObserver = null;\n }\n else if (value && !this.$resizeObserver) {\n this.$addResizeObserver();\n }\n }\n },\n animatedScroll: { initialValue: false },\n showInvisibles: {\n set: function (value) {\n if (this.$textLayer.setShowInvisibles(value))\n this.$loop.schedule(this.CHANGE_TEXT);\n },\n initialValue: false\n },\n showPrintMargin: {\n set: function () { this.$updatePrintMargin(); },\n initialValue: true\n },\n printMarginColumn: {\n set: function () { this.$updatePrintMargin(); },\n initialValue: 80\n },\n printMargin: {\n set: function (val) {\n if (typeof val == \"number\")\n this.$printMarginColumn = val;\n this.$showPrintMargin = !!val;\n this.$updatePrintMargin();\n },\n get: function () {\n return this.$showPrintMargin && this.$printMarginColumn;\n }\n },\n showGutter: {\n set: function (show) {\n this.$gutter.style.display = show ? \"block\" : \"none\";\n this.$loop.schedule(this.CHANGE_FULL);\n this.onGutterResize();\n },\n initialValue: true\n },\n useSvgGutterIcons: {\n set: function (value) {\n this.$gutterLayer.$useSvgGutterIcons = value;\n },\n initialValue: false\n },\n showFoldedAnnotations: {\n set: function (value) {\n this.$gutterLayer.$showFoldedAnnotations = value;\n },\n initialValue: false\n },\n fadeFoldWidgets: {\n set: function (show) {\n dom.setCssClass(this.$gutter, \"ace_fade-fold-widgets\", show);\n },\n initialValue: false\n },\n showFoldWidgets: {\n set: function (show) {\n this.$gutterLayer.setShowFoldWidgets(show);\n this.$loop.schedule(this.CHANGE_GUTTER);\n },\n initialValue: true\n },\n displayIndentGuides: {\n set: function (show) {\n if (this.$textLayer.setDisplayIndentGuides(show))\n this.$loop.schedule(this.CHANGE_TEXT);\n },\n initialValue: true\n },\n highlightIndentGuides: {\n set: function (show) {\n if (this.$textLayer.setHighlightIndentGuides(show) == true) {\n this.$textLayer.$highlightIndentGuide();\n }\n else {\n this.$textLayer.$clearActiveIndentGuide(this.$textLayer.$lines.cells);\n }\n },\n initialValue: true\n },\n highlightGutterLine: {\n set: function (shouldHighlight) {\n this.$gutterLayer.setHighlightGutterLine(shouldHighlight);\n this.$loop.schedule(this.CHANGE_GUTTER);\n },\n initialValue: true\n },\n hScrollBarAlwaysVisible: {\n set: function (val) {\n if (!this.$hScrollBarAlwaysVisible || !this.$horizScroll)\n this.$loop.schedule(this.CHANGE_SCROLL);\n },\n initialValue: false\n },\n vScrollBarAlwaysVisible: {\n set: function (val) {\n if (!this.$vScrollBarAlwaysVisible || !this.$vScroll)\n this.$loop.schedule(this.CHANGE_SCROLL);\n },\n initialValue: false\n },\n fontSize: {\n set: function (size) {\n if (typeof size == \"number\")\n size = size + \"px\";\n this.container.style.fontSize = size;\n this.updateFontSize();\n },\n initialValue: 12\n },\n fontFamily: {\n set: function (name) {\n this.container.style.fontFamily = name;\n this.updateFontSize();\n }\n },\n maxLines: {\n set: function (val) {\n this.updateFull();\n }\n },\n minLines: {\n set: function (val) {\n if (!(this.$minLines < 0x1ffffffffffff))\n this.$minLines = 0;\n this.updateFull();\n }\n },\n maxPixelHeight: {\n set: function (val) {\n this.updateFull();\n },\n initialValue: 0\n },\n scrollPastEnd: {\n set: function (val) {\n val = +val || 0;\n if (this.$scrollPastEnd == val)\n return;\n this.$scrollPastEnd = val;\n this.$loop.schedule(this.CHANGE_SCROLL);\n },\n initialValue: 0,\n handlesSet: true\n },\n fixedWidthGutter: {\n set: function (val) {\n this.$gutterLayer.$fixedWidth = !!val;\n this.$loop.schedule(this.CHANGE_GUTTER);\n }\n },\n customScrollbar: {\n set: function (val) {\n this.$updateCustomScrollbar(val);\n },\n initialValue: false\n },\n theme: {\n set: function (val) { this.setTheme(val); },\n get: function () { return this.$themeId || this.theme; },\n initialValue: \"./theme/textmate\",\n handlesSet: true\n },\n hasCssTransforms: {},\n useTextareaForIME: {\n initialValue: !useragent.isMobile && !useragent.isIE\n }\n});\nexports.VirtualRenderer = VirtualRenderer;\n\n});\n\nace.define(\"ace/worker/worker_client\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/net\",\"ace/lib/event_emitter\",\"ace/config\"], function(require, exports, module) {\n\"use strict\";\n\nvar oop = require(\"../lib/oop\");\nvar net = require(\"../lib/net\");\nvar EventEmitter = require(\"../lib/event_emitter\").EventEmitter;\nvar config = require(\"../config\");\n\nfunction $workerBlob(workerUrl) {\n var script = \"importScripts('\" + net.qualifyURL(workerUrl) + \"');\";\n try {\n return new Blob([script], {\"type\": \"application/javascript\"});\n } catch (e) { // Backwards-compatibility\n var BlobBuilder = window.BlobBuilder || window.WebKitBlobBuilder || window.MozBlobBuilder;\n var blobBuilder = new BlobBuilder();\n blobBuilder.append(script);\n return blobBuilder.getBlob(\"application/javascript\");\n }\n}\n\nfunction createWorker(workerUrl) {\n if (typeof Worker == \"undefined\")\n return { postMessage: function() {}, terminate: function() {} };\n if (config.get(\"loadWorkerFromBlob\")) {\n var blob = $workerBlob(workerUrl);\n var URL = window.URL || window.webkitURL;\n var blobURL = URL.createObjectURL(blob);\n return new Worker(blobURL);\n }\n return new Worker(workerUrl);\n}\n\nvar WorkerClient = function(worker) {\n if (!worker.postMessage)\n worker = this.$createWorkerFromOldConfig.apply(this, arguments);\n\n this.$worker = worker;\n this.$sendDeltaQueue = this.$sendDeltaQueue.bind(this);\n this.changeListener = this.changeListener.bind(this);\n this.onMessage = this.onMessage.bind(this);\n\n this.callbackId = 1;\n this.callbacks = {};\n\n this.$worker.onmessage = this.onMessage;\n};\n\n(function(){\n\n oop.implement(this, EventEmitter);\n\n this.$createWorkerFromOldConfig = function(topLevelNamespaces, mod, classname, workerUrl, importScripts) {\n if (require.nameToUrl && !require.toUrl)\n require.toUrl = require.nameToUrl;\n\n if (config.get(\"packaged\") || !require.toUrl) {\n workerUrl = workerUrl || config.moduleUrl(mod, \"worker\");\n } else {\n var normalizePath = this.$normalizePath;\n workerUrl = workerUrl || normalizePath(require.toUrl(\"ace/worker/worker.js\", null, \"_\"));\n\n var tlns = {};\n topLevelNamespaces.forEach(function(ns) {\n tlns[ns] = normalizePath(require.toUrl(ns, null, \"_\").replace(/(\\.js)?(\\?.*)?$/, \"\"));\n });\n }\n\n this.$worker = createWorker(workerUrl);\n if (importScripts) {\n this.send(\"importScripts\", importScripts);\n }\n this.$worker.postMessage({\n init : true,\n tlns : tlns,\n module : mod,\n classname : classname\n });\n return this.$worker;\n };\n\n this.onMessage = function(e) {\n var msg = e.data;\n switch (msg.type) {\n case \"event\":\n this._signal(msg.name, {data: msg.data});\n break;\n case \"call\":\n var callback = this.callbacks[msg.id];\n if (callback) {\n callback(msg.data);\n delete this.callbacks[msg.id];\n }\n break;\n case \"error\":\n this.reportError(msg.data);\n break;\n case \"log\":\n window.console && console.log && console.log.apply(console, msg.data);\n break;\n }\n };\n \n this.reportError = function(err) {\n window.console && console.error && console.error(err);\n };\n\n this.$normalizePath = function(path) {\n return net.qualifyURL(path);\n };\n\n this.terminate = function() {\n this._signal(\"terminate\", {});\n this.deltaQueue = null;\n this.$worker.terminate();\n this.$worker.onerror = function(e) {\n e.preventDefault();\n };\n this.$worker = null;\n if (this.$doc)\n this.$doc.off(\"change\", this.changeListener);\n this.$doc = null;\n };\n\n this.send = function(cmd, args) {\n this.$worker.postMessage({command: cmd, args: args});\n };\n\n this.call = function(cmd, args, callback) {\n if (callback) {\n var id = this.callbackId++;\n this.callbacks[id] = callback;\n args.push(id);\n }\n this.send(cmd, args);\n };\n\n this.emit = function(event, data) {\n try {\n if (data.data && data.data.err)\n data.data.err = {message: data.data.err.message, stack: data.data.err.stack, code: data.data.err.code};\n this.$worker && this.$worker.postMessage({event: event, data: {data: data.data}});\n }\n catch(ex) {\n console.error(ex.stack);\n }\n };\n\n this.attachToDocument = function(doc) {\n if (this.$doc)\n this.terminate();\n\n this.$doc = doc;\n this.call(\"setValue\", [doc.getValue()]);\n doc.on(\"change\", this.changeListener, true);\n };\n\n this.changeListener = function(delta) {\n if (!this.deltaQueue) {\n this.deltaQueue = [];\n setTimeout(this.$sendDeltaQueue, 0);\n }\n if (delta.action == \"insert\")\n this.deltaQueue.push(delta.start, delta.lines);\n else\n this.deltaQueue.push(delta.start, delta.end);\n };\n\n this.$sendDeltaQueue = function() {\n var q = this.deltaQueue;\n if (!q) return;\n this.deltaQueue = null;\n if (q.length > 50 && q.length > this.$doc.getLength() >> 1) {\n this.call(\"setValue\", [this.$doc.getValue()]);\n } else\n this.emit(\"change\", {data: q});\n };\n\n}).call(WorkerClient.prototype);\n\n\nvar UIWorkerClient = function(topLevelNamespaces, mod, classname) {\n var main = null;\n var emitSync = false;\n var sender = Object.create(EventEmitter);\n\n var messageBuffer = [];\n var workerClient = new WorkerClient({\n messageBuffer: messageBuffer,\n terminate: function() {},\n postMessage: function(e) {\n messageBuffer.push(e);\n if (!main) return;\n if (emitSync)\n setTimeout(processNext);\n else\n processNext();\n }\n });\n\n workerClient.setEmitSync = function(val) { emitSync = val; };\n\n var processNext = function() {\n var msg = messageBuffer.shift();\n if (msg.command)\n main[msg.command].apply(main, msg.args);\n else if (msg.event)\n sender._signal(msg.event, msg.data);\n };\n\n sender.postMessage = function(msg) {\n workerClient.onMessage({data: msg});\n };\n sender.callback = function(data, callbackId) {\n this.postMessage({type: \"call\", id: callbackId, data: data});\n };\n sender.emit = function(name, data) {\n this.postMessage({type: \"event\", name: name, data: data});\n };\n\n config.loadModule([\"worker\", mod], function(Main) {\n main = new Main[classname](sender);\n while (messageBuffer.length)\n processNext();\n });\n\n return workerClient;\n};\n\nexports.UIWorkerClient = UIWorkerClient;\nexports.WorkerClient = WorkerClient;\nexports.createWorker = createWorker;\n\n\n});\n\nace.define(\"ace/placeholder\",[\"require\",\"exports\",\"module\",\"ace/range\",\"ace/lib/event_emitter\",\"ace/lib/oop\"], function(require, exports, module){\"use strict\";\nvar Range = require(\"./range\").Range;\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar oop = require(\"./lib/oop\");\nvar PlaceHolder = /** @class */ (function () {\n function PlaceHolder(session, length, pos, others, mainClass, othersClass) {\n var _self = this;\n this.length = length;\n this.session = session;\n this.doc = session.getDocument();\n this.mainClass = mainClass;\n this.othersClass = othersClass;\n this.$onUpdate = this.onUpdate.bind(this);\n this.doc.on(\"change\", this.$onUpdate, true);\n this.$others = others;\n this.$onCursorChange = function () {\n setTimeout(function () {\n _self.onCursorChange();\n });\n };\n this.$pos = pos;\n var undoStack = session.getUndoManager().$undoStack || session.getUndoManager().$undostack || { length: -1 };\n this.$undoStackDepth = undoStack.length;\n this.setup();\n session.selection.on(\"changeCursor\", this.$onCursorChange);\n }\n PlaceHolder.prototype.setup = function () {\n var _self = this;\n var doc = this.doc;\n var session = this.session;\n this.selectionBefore = session.selection.toJSON();\n if (session.selection.inMultiSelectMode)\n session.selection.toSingleRange();\n this.pos = doc.createAnchor(this.$pos.row, this.$pos.column);\n var pos = this.pos;\n pos.$insertRight = true;\n pos.detach();\n pos.markerId = session.addMarker(new Range(pos.row, pos.column, pos.row, pos.column + this.length), this.mainClass, null, false);\n this.others = [];\n this.$others.forEach(function (other) {\n var anchor = doc.createAnchor(other.row, other.column);\n anchor.$insertRight = true;\n anchor.detach();\n _self.others.push(anchor);\n });\n session.setUndoSelect(false);\n };\n PlaceHolder.prototype.showOtherMarkers = function () {\n if (this.othersActive)\n return;\n var session = this.session;\n var _self = this;\n this.othersActive = true;\n this.others.forEach(function (anchor) {\n anchor.markerId = session.addMarker(new Range(anchor.row, anchor.column, anchor.row, anchor.column + _self.length), _self.othersClass, null, false);\n });\n };\n PlaceHolder.prototype.hideOtherMarkers = function () {\n if (!this.othersActive)\n return;\n this.othersActive = false;\n for (var i = 0; i < this.others.length; i++) {\n this.session.removeMarker(this.others[i].markerId);\n }\n };\n PlaceHolder.prototype.onUpdate = function (delta) {\n if (this.$updating)\n return this.updateAnchors(delta);\n var range = delta;\n if (range.start.row !== range.end.row)\n return;\n if (range.start.row !== this.pos.row)\n return;\n this.$updating = true;\n var lengthDiff = delta.action === \"insert\" ? range.end.column - range.start.column : range.start.column - range.end.column;\n var inMainRange = range.start.column >= this.pos.column && range.start.column <= this.pos.column + this.length + 1;\n var distanceFromStart = range.start.column - this.pos.column;\n this.updateAnchors(delta);\n if (inMainRange)\n this.length += lengthDiff;\n if (inMainRange && !this.session.$fromUndo) {\n if (delta.action === 'insert') {\n for (var i = this.others.length - 1; i >= 0; i--) {\n var otherPos = this.others[i];\n var newPos = { row: otherPos.row, column: otherPos.column + distanceFromStart };\n this.doc.insertMergedLines(newPos, delta.lines);\n }\n }\n else if (delta.action === 'remove') {\n for (var i = this.others.length - 1; i >= 0; i--) {\n var otherPos = this.others[i];\n var newPos = { row: otherPos.row, column: otherPos.column + distanceFromStart };\n this.doc.remove(new Range(newPos.row, newPos.column, newPos.row, newPos.column - lengthDiff));\n }\n }\n }\n this.$updating = false;\n this.updateMarkers();\n };\n PlaceHolder.prototype.updateAnchors = function (delta) {\n this.pos.onChange(delta);\n for (var i = this.others.length; i--;)\n this.others[i].onChange(delta);\n this.updateMarkers();\n };\n PlaceHolder.prototype.updateMarkers = function () {\n if (this.$updating)\n return;\n var _self = this;\n var session = this.session;\n var updateMarker = function (pos, className) {\n session.removeMarker(pos.markerId);\n pos.markerId = session.addMarker(new Range(pos.row, pos.column, pos.row, pos.column + _self.length), className, null, false);\n };\n updateMarker(this.pos, this.mainClass);\n for (var i = this.others.length; i--;)\n updateMarker(this.others[i], this.othersClass);\n };\n PlaceHolder.prototype.onCursorChange = function (event) {\n if (this.$updating || !this.session)\n return;\n var pos = this.session.selection.getCursor();\n if (pos.row === this.pos.row && pos.column >= this.pos.column && pos.column <= this.pos.column + this.length) {\n this.showOtherMarkers();\n this._emit(\"cursorEnter\", event);\n }\n else {\n this.hideOtherMarkers();\n this._emit(\"cursorLeave\", event);\n }\n };\n PlaceHolder.prototype.detach = function () {\n this.session.removeMarker(this.pos && this.pos.markerId);\n this.hideOtherMarkers();\n this.doc.off(\"change\", this.$onUpdate);\n this.session.selection.off(\"changeCursor\", this.$onCursorChange);\n this.session.setUndoSelect(true);\n this.session = null;\n };\n PlaceHolder.prototype.cancel = function () {\n if (this.$undoStackDepth === -1)\n return;\n var undoManager = this.session.getUndoManager();\n var undosRequired = (undoManager.$undoStack || undoManager.$undostack).length - this.$undoStackDepth;\n for (var i = 0; i < undosRequired; i++) {\n undoManager.undo(this.session, true);\n }\n if (this.selectionBefore)\n this.session.selection.fromJSON(this.selectionBefore);\n };\n return PlaceHolder;\n}());\noop.implement(PlaceHolder.prototype, EventEmitter);\nexports.PlaceHolder = PlaceHolder;\n\n});\n\nace.define(\"ace/mouse/multi_select_handler\",[\"require\",\"exports\",\"module\",\"ace/lib/event\",\"ace/lib/useragent\"], function(require, exports, module){var event = require(\"../lib/event\");\nvar useragent = require(\"../lib/useragent\");\nfunction isSamePoint(p1, p2) {\n return p1.row == p2.row && p1.column == p2.column;\n}\nfunction onMouseDown(e) {\n var ev = e.domEvent;\n var alt = ev.altKey;\n var shift = ev.shiftKey;\n var ctrl = ev.ctrlKey;\n var accel = e.getAccelKey();\n var button = e.getButton();\n if (ctrl && useragent.isMac)\n button = ev.button;\n if (e.editor.inMultiSelectMode && button == 2) {\n e.editor.textInput.onContextMenu(e.domEvent);\n return;\n }\n if (!ctrl && !alt && !accel) {\n if (button === 0 && e.editor.inMultiSelectMode)\n e.editor.exitMultiSelectMode();\n return;\n }\n if (button !== 0)\n return;\n var editor = e.editor;\n var selection = editor.selection;\n var isMultiSelect = editor.inMultiSelectMode;\n var pos = e.getDocumentPosition();\n var cursor = selection.getCursor();\n var inSelection = e.inSelection() || (selection.isEmpty() && isSamePoint(pos, cursor));\n var mouseX = e.x, mouseY = e.y;\n var onMouseSelection = function (e) {\n mouseX = e.clientX;\n mouseY = e.clientY;\n };\n var session = editor.session;\n var screenAnchor = editor.renderer.pixelToScreenCoordinates(mouseX, mouseY);\n var screenCursor = screenAnchor;\n var selectionMode;\n if (editor.$mouseHandler.$enableJumpToDef) {\n if (ctrl && alt || accel && alt)\n selectionMode = shift ? \"block\" : \"add\";\n else if (alt && editor.$blockSelectEnabled)\n selectionMode = \"block\";\n }\n else {\n if (accel && !alt) {\n selectionMode = \"add\";\n if (!isMultiSelect && shift)\n return;\n }\n else if (alt && editor.$blockSelectEnabled) {\n selectionMode = \"block\";\n }\n }\n if (selectionMode && useragent.isMac && ev.ctrlKey) {\n editor.$mouseHandler.cancelContextMenu();\n }\n if (selectionMode == \"add\") {\n if (!isMultiSelect && inSelection)\n return; // dragging\n if (!isMultiSelect) {\n var range = selection.toOrientedRange();\n editor.addSelectionMarker(range);\n }\n var oldRange = selection.rangeList.rangeAtPoint(pos);\n editor.inVirtualSelectionMode = true;\n if (shift) {\n oldRange = null;\n range = selection.ranges[0] || range;\n editor.removeSelectionMarker(range);\n }\n editor.once(\"mouseup\", function () {\n var tmpSel = selection.toOrientedRange();\n if (oldRange && tmpSel.isEmpty() && isSamePoint(oldRange.cursor, tmpSel.cursor))\n selection.substractPoint(tmpSel.cursor);\n else {\n if (shift) {\n selection.substractPoint(range.cursor);\n }\n else if (range) {\n editor.removeSelectionMarker(range);\n selection.addRange(range);\n }\n selection.addRange(tmpSel);\n }\n editor.inVirtualSelectionMode = false;\n });\n }\n else if (selectionMode == \"block\") {\n e.stop();\n editor.inVirtualSelectionMode = true;\n var initialRange;\n var rectSel = [];\n var blockSelect = function () {\n var newCursor = editor.renderer.pixelToScreenCoordinates(mouseX, mouseY);\n var cursor = session.screenToDocumentPosition(newCursor.row, newCursor.column, newCursor.offsetX);\n if (isSamePoint(screenCursor, newCursor) && isSamePoint(cursor, selection.lead))\n return;\n screenCursor = newCursor;\n editor.selection.moveToPosition(cursor);\n editor.renderer.scrollCursorIntoView();\n editor.removeSelectionMarkers(rectSel);\n rectSel = selection.rectangularRangeBlock(screenCursor, screenAnchor);\n if (editor.$mouseHandler.$clickSelection && rectSel.length == 1 && rectSel[0].isEmpty())\n rectSel[0] = editor.$mouseHandler.$clickSelection.clone();\n rectSel.forEach(editor.addSelectionMarker, editor);\n editor.updateSelectionMarkers();\n };\n if (isMultiSelect && !accel) {\n selection.toSingleRange();\n }\n else if (!isMultiSelect && accel) {\n initialRange = selection.toOrientedRange();\n editor.addSelectionMarker(initialRange);\n }\n if (shift)\n screenAnchor = session.documentToScreenPosition(selection.lead);\n else\n selection.moveToPosition(pos);\n screenCursor = { row: -1, column: -1 };\n var onMouseSelectionEnd = function (e) {\n blockSelect();\n clearInterval(timerId);\n editor.removeSelectionMarkers(rectSel);\n if (!rectSel.length)\n rectSel = [selection.toOrientedRange()];\n if (initialRange) {\n editor.removeSelectionMarker(initialRange);\n selection.toSingleRange(initialRange);\n }\n for (var i = 0; i < rectSel.length; i++)\n selection.addRange(rectSel[i]);\n editor.inVirtualSelectionMode = false;\n editor.$mouseHandler.$clickSelection = null;\n };\n var onSelectionInterval = blockSelect;\n event.capture(editor.container, onMouseSelection, onMouseSelectionEnd);\n var timerId = setInterval(function () { onSelectionInterval(); }, 20);\n return e.preventDefault();\n }\n}\nexports.onMouseDown = onMouseDown;\n\n});\n\nace.define(\"ace/commands/multi_select_commands\",[\"require\",\"exports\",\"module\",\"ace/keyboard/hash_handler\"], function(require, exports, module){// commands to enter multiselect mode\nexports.defaultCommands = [{\n name: \"addCursorAbove\",\n description: \"Add cursor above\",\n exec: function (editor) { editor.selectMoreLines(-1); },\n bindKey: { win: \"Ctrl-Alt-Up\", mac: \"Ctrl-Alt-Up\" },\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"addCursorBelow\",\n description: \"Add cursor below\",\n exec: function (editor) { editor.selectMoreLines(1); },\n bindKey: { win: \"Ctrl-Alt-Down\", mac: \"Ctrl-Alt-Down\" },\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"addCursorAboveSkipCurrent\",\n description: \"Add cursor above (skip current)\",\n exec: function (editor) { editor.selectMoreLines(-1, true); },\n bindKey: { win: \"Ctrl-Alt-Shift-Up\", mac: \"Ctrl-Alt-Shift-Up\" },\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"addCursorBelowSkipCurrent\",\n description: \"Add cursor below (skip current)\",\n exec: function (editor) { editor.selectMoreLines(1, true); },\n bindKey: { win: \"Ctrl-Alt-Shift-Down\", mac: \"Ctrl-Alt-Shift-Down\" },\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"selectMoreBefore\",\n description: \"Select more before\",\n exec: function (editor) { editor.selectMore(-1); },\n bindKey: { win: \"Ctrl-Alt-Left\", mac: \"Ctrl-Alt-Left\" },\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"selectMoreAfter\",\n description: \"Select more after\",\n exec: function (editor) { editor.selectMore(1); },\n bindKey: { win: \"Ctrl-Alt-Right\", mac: \"Ctrl-Alt-Right\" },\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"selectNextBefore\",\n description: \"Select next before\",\n exec: function (editor) { editor.selectMore(-1, true); },\n bindKey: { win: \"Ctrl-Alt-Shift-Left\", mac: \"Ctrl-Alt-Shift-Left\" },\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"selectNextAfter\",\n description: \"Select next after\",\n exec: function (editor) { editor.selectMore(1, true); },\n bindKey: { win: \"Ctrl-Alt-Shift-Right\", mac: \"Ctrl-Alt-Shift-Right\" },\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"toggleSplitSelectionIntoLines\",\n description: \"Split selection into lines\",\n exec: function (editor) {\n if (editor.multiSelect.rangeCount > 1)\n editor.multiSelect.joinSelections();\n else\n editor.multiSelect.splitIntoLines();\n },\n bindKey: { win: \"Ctrl-Alt-L\", mac: \"Ctrl-Alt-L\" },\n readOnly: true\n }, {\n name: \"splitSelectionIntoLines\",\n description: \"Split into lines\",\n exec: function (editor) { editor.multiSelect.splitIntoLines(); },\n readOnly: true\n }, {\n name: \"alignCursors\",\n description: \"Align cursors\",\n exec: function (editor) { editor.alignCursors(); },\n bindKey: { win: \"Ctrl-Alt-A\", mac: \"Ctrl-Alt-A\" },\n scrollIntoView: \"cursor\"\n }, {\n name: \"findAll\",\n description: \"Find all\",\n exec: function (editor) { editor.findAll(); },\n bindKey: { win: \"Ctrl-Alt-K\", mac: \"Ctrl-Alt-G\" },\n scrollIntoView: \"cursor\",\n readOnly: true\n }];\nexports.multiSelectCommands = [{\n name: \"singleSelection\",\n description: \"Single selection\",\n bindKey: \"esc\",\n exec: function (editor) { editor.exitMultiSelectMode(); },\n scrollIntoView: \"cursor\",\n readOnly: true,\n isAvailable: function (editor) { return editor && editor.inMultiSelectMode; }\n }];\nvar HashHandler = require(\"../keyboard/hash_handler\").HashHandler;\nexports.keyboardHandler = new HashHandler(exports.multiSelectCommands);\n\n});\n\nace.define(\"ace/multi_select\",[\"require\",\"exports\",\"module\",\"ace/range_list\",\"ace/range\",\"ace/selection\",\"ace/mouse/multi_select_handler\",\"ace/lib/event\",\"ace/lib/lang\",\"ace/commands/multi_select_commands\",\"ace/search\",\"ace/edit_session\",\"ace/editor\",\"ace/config\"], function(require, exports, module){var RangeList = require(\"./range_list\").RangeList;\nvar Range = require(\"./range\").Range;\nvar Selection = require(\"./selection\").Selection;\nvar onMouseDown = require(\"./mouse/multi_select_handler\").onMouseDown;\nvar event = require(\"./lib/event\");\nvar lang = require(\"./lib/lang\");\nvar commands = require(\"./commands/multi_select_commands\");\nexports.commands = commands.defaultCommands.concat(commands.multiSelectCommands);\nvar Search = require(\"./search\").Search;\nvar search = new Search();\nfunction find(session, needle, dir) {\n search.$options.wrap = true;\n search.$options.needle = needle;\n search.$options.backwards = dir == -1;\n return search.find(session);\n}\nvar EditSession = require(\"./edit_session\").EditSession;\n(function () {\n this.getSelectionMarkers = function () {\n return this.$selectionMarkers;\n };\n}).call(EditSession.prototype);\n(function () {\n this.ranges = null;\n this.rangeList = null;\n this.addRange = function (range, $blockChangeEvents) {\n if (!range)\n return;\n if (!this.inMultiSelectMode && this.rangeCount === 0) {\n var oldRange = this.toOrientedRange();\n this.rangeList.add(oldRange);\n this.rangeList.add(range);\n if (this.rangeList.ranges.length != 2) {\n this.rangeList.removeAll();\n return $blockChangeEvents || this.fromOrientedRange(range);\n }\n this.rangeList.removeAll();\n this.rangeList.add(oldRange);\n this.$onAddRange(oldRange);\n }\n if (!range.cursor)\n range.cursor = range.end;\n var removed = this.rangeList.add(range);\n this.$onAddRange(range);\n if (removed.length)\n this.$onRemoveRange(removed);\n if (this.rangeCount > 1 && !this.inMultiSelectMode) {\n this._signal(\"multiSelect\");\n this.inMultiSelectMode = true;\n this.session.$undoSelect = false;\n this.rangeList.attach(this.session);\n }\n return $blockChangeEvents || this.fromOrientedRange(range);\n };\n this.toSingleRange = function (range) {\n range = range || this.ranges[0];\n var removed = this.rangeList.removeAll();\n if (removed.length)\n this.$onRemoveRange(removed);\n range && this.fromOrientedRange(range);\n };\n this.substractPoint = function (pos) {\n var removed = this.rangeList.substractPoint(pos);\n if (removed) {\n this.$onRemoveRange(removed);\n return removed[0];\n }\n };\n this.mergeOverlappingRanges = function () {\n var removed = this.rangeList.merge();\n if (removed.length)\n this.$onRemoveRange(removed);\n };\n this.$onAddRange = function (range) {\n this.rangeCount = this.rangeList.ranges.length;\n this.ranges.unshift(range);\n this._signal(\"addRange\", { range: range });\n };\n this.$onRemoveRange = function (removed) {\n this.rangeCount = this.rangeList.ranges.length;\n if (this.rangeCount == 1 && this.inMultiSelectMode) {\n var lastRange = this.rangeList.ranges.pop();\n removed.push(lastRange);\n this.rangeCount = 0;\n }\n for (var i = removed.length; i--;) {\n var index = this.ranges.indexOf(removed[i]);\n this.ranges.splice(index, 1);\n }\n this._signal(\"removeRange\", { ranges: removed });\n if (this.rangeCount === 0 && this.inMultiSelectMode) {\n this.inMultiSelectMode = false;\n this._signal(\"singleSelect\");\n this.session.$undoSelect = true;\n this.rangeList.detach(this.session);\n }\n lastRange = lastRange || this.ranges[0];\n if (lastRange && !lastRange.isEqual(this.getRange()))\n this.fromOrientedRange(lastRange);\n };\n this.$initRangeList = function () {\n if (this.rangeList)\n return;\n this.rangeList = new RangeList();\n this.ranges = [];\n this.rangeCount = 0;\n };\n this.getAllRanges = function () {\n return this.rangeCount ? this.rangeList.ranges.concat() : [this.getRange()];\n };\n this.splitIntoLines = function () {\n var ranges = this.ranges.length ? this.ranges : [this.getRange()];\n var newRanges = [];\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i];\n var row = range.start.row;\n var endRow = range.end.row;\n if (row === endRow) {\n newRanges.push(range.clone());\n }\n else {\n newRanges.push(new Range(row, range.start.column, row, this.session.getLine(row).length));\n while (++row < endRow)\n newRanges.push(this.getLineRange(row, true));\n newRanges.push(new Range(endRow, 0, endRow, range.end.column));\n }\n if (i == 0 && !this.isBackwards())\n newRanges = newRanges.reverse();\n }\n this.toSingleRange();\n for (var i = newRanges.length; i--;)\n this.addRange(newRanges[i]);\n };\n this.joinSelections = function () {\n var ranges = this.rangeList.ranges;\n var lastRange = ranges[ranges.length - 1];\n var range = Range.fromPoints(ranges[0].start, lastRange.end);\n this.toSingleRange();\n this.setSelectionRange(range, lastRange.cursor == lastRange.start);\n };\n this.toggleBlockSelection = function () {\n if (this.rangeCount > 1) {\n var ranges = this.rangeList.ranges;\n var lastRange = ranges[ranges.length - 1];\n var range = Range.fromPoints(ranges[0].start, lastRange.end);\n this.toSingleRange();\n this.setSelectionRange(range, lastRange.cursor == lastRange.start);\n }\n else {\n var cursor = this.session.documentToScreenPosition(this.cursor);\n var anchor = this.session.documentToScreenPosition(this.anchor);\n var rectSel = this.rectangularRangeBlock(cursor, anchor);\n rectSel.forEach(this.addRange, this);\n }\n };\n this.rectangularRangeBlock = function (screenCursor, screenAnchor, includeEmptyLines) {\n var rectSel = [];\n var xBackwards = screenCursor.column < screenAnchor.column;\n if (xBackwards) {\n var startColumn = screenCursor.column;\n var endColumn = screenAnchor.column;\n var startOffsetX = screenCursor.offsetX;\n var endOffsetX = screenAnchor.offsetX;\n }\n else {\n var startColumn = screenAnchor.column;\n var endColumn = screenCursor.column;\n var startOffsetX = screenAnchor.offsetX;\n var endOffsetX = screenCursor.offsetX;\n }\n var yBackwards = screenCursor.row < screenAnchor.row;\n if (yBackwards) {\n var startRow = screenCursor.row;\n var endRow = screenAnchor.row;\n }\n else {\n var startRow = screenAnchor.row;\n var endRow = screenCursor.row;\n }\n if (startColumn < 0)\n startColumn = 0;\n if (startRow < 0)\n startRow = 0;\n if (startRow == endRow)\n includeEmptyLines = true;\n var docEnd;\n for (var row = startRow; row <= endRow; row++) {\n var range = Range.fromPoints(this.session.screenToDocumentPosition(row, startColumn, startOffsetX), this.session.screenToDocumentPosition(row, endColumn, endOffsetX));\n if (range.isEmpty()) {\n if (docEnd && isSamePoint(range.end, docEnd))\n break;\n docEnd = range.end;\n }\n range.cursor = xBackwards ? range.start : range.end;\n rectSel.push(range);\n }\n if (yBackwards)\n rectSel.reverse();\n if (!includeEmptyLines) {\n var end = rectSel.length - 1;\n while (rectSel[end].isEmpty() && end > 0)\n end--;\n if (end > 0) {\n var start = 0;\n while (rectSel[start].isEmpty())\n start++;\n }\n for (var i = end; i >= start; i--) {\n if (rectSel[i].isEmpty())\n rectSel.splice(i, 1);\n }\n }\n return rectSel;\n };\n}).call(Selection.prototype);\nvar Editor = require(\"./editor\").Editor;\n(function () {\n this.updateSelectionMarkers = function () {\n this.renderer.updateCursor();\n this.renderer.updateBackMarkers();\n };\n this.addSelectionMarker = function (orientedRange) {\n if (!orientedRange.cursor)\n orientedRange.cursor = orientedRange.end;\n var style = this.getSelectionStyle();\n orientedRange.marker = this.session.addMarker(orientedRange, \"ace_selection\", style);\n this.session.$selectionMarkers.push(orientedRange);\n this.session.selectionMarkerCount = this.session.$selectionMarkers.length;\n return orientedRange;\n };\n this.removeSelectionMarker = function (range) {\n if (!range.marker)\n return;\n this.session.removeMarker(range.marker);\n var index = this.session.$selectionMarkers.indexOf(range);\n if (index != -1)\n this.session.$selectionMarkers.splice(index, 1);\n this.session.selectionMarkerCount = this.session.$selectionMarkers.length;\n };\n this.removeSelectionMarkers = function (ranges) {\n var markerList = this.session.$selectionMarkers;\n for (var i = ranges.length; i--;) {\n var range = ranges[i];\n if (!range.marker)\n continue;\n this.session.removeMarker(range.marker);\n var index = markerList.indexOf(range);\n if (index != -1)\n markerList.splice(index, 1);\n }\n this.session.selectionMarkerCount = markerList.length;\n };\n this.$onAddRange = function (e) {\n this.addSelectionMarker(e.range);\n this.renderer.updateCursor();\n this.renderer.updateBackMarkers();\n };\n this.$onRemoveRange = function (e) {\n this.removeSelectionMarkers(e.ranges);\n this.renderer.updateCursor();\n this.renderer.updateBackMarkers();\n };\n this.$onMultiSelect = function (e) {\n if (this.inMultiSelectMode)\n return;\n this.inMultiSelectMode = true;\n this.setStyle(\"ace_multiselect\");\n this.keyBinding.addKeyboardHandler(commands.keyboardHandler);\n this.commands.setDefaultHandler(\"exec\", this.$onMultiSelectExec);\n this.renderer.updateCursor();\n this.renderer.updateBackMarkers();\n };\n this.$onSingleSelect = function (e) {\n if (this.session.multiSelect.inVirtualMode)\n return;\n this.inMultiSelectMode = false;\n this.unsetStyle(\"ace_multiselect\");\n this.keyBinding.removeKeyboardHandler(commands.keyboardHandler);\n this.commands.removeDefaultHandler(\"exec\", this.$onMultiSelectExec);\n this.renderer.updateCursor();\n this.renderer.updateBackMarkers();\n this._emit(\"changeSelection\");\n };\n this.$onMultiSelectExec = function (e) {\n var command = e.command;\n var editor = e.editor;\n if (!editor.multiSelect)\n return;\n if (!command.multiSelectAction) {\n var result = command.exec(editor, e.args || {});\n editor.multiSelect.addRange(editor.multiSelect.toOrientedRange());\n editor.multiSelect.mergeOverlappingRanges();\n }\n else if (command.multiSelectAction == \"forEach\") {\n result = editor.forEachSelection(command, e.args);\n }\n else if (command.multiSelectAction == \"forEachLine\") {\n result = editor.forEachSelection(command, e.args, true);\n }\n else if (command.multiSelectAction == \"single\") {\n editor.exitMultiSelectMode();\n result = command.exec(editor, e.args || {});\n }\n else {\n result = command.multiSelectAction(editor, e.args || {});\n }\n return result;\n };\n this.forEachSelection = function (cmd, args, options) {\n if (this.inVirtualSelectionMode)\n return;\n var keepOrder = options && options.keepOrder;\n var $byLines = options == true || options && options.$byLines;\n var session = this.session;\n var selection = this.selection;\n var rangeList = selection.rangeList;\n var ranges = (keepOrder ? selection : rangeList).ranges;\n var result;\n if (!ranges.length)\n return cmd.exec ? cmd.exec(this, args || {}) : cmd(this, args || {});\n var reg = selection._eventRegistry;\n selection._eventRegistry = {};\n var tmpSel = new Selection(session);\n this.inVirtualSelectionMode = true;\n for (var i = ranges.length; i--;) {\n if ($byLines) {\n while (i > 0 && ranges[i].start.row == ranges[i - 1].end.row)\n i--;\n }\n tmpSel.fromOrientedRange(ranges[i]);\n tmpSel.index = i;\n this.selection = session.selection = tmpSel;\n var cmdResult = cmd.exec ? cmd.exec(this, args || {}) : cmd(this, args || {});\n if (!result && cmdResult !== undefined)\n result = cmdResult;\n tmpSel.toOrientedRange(ranges[i]);\n }\n tmpSel.detach();\n this.selection = session.selection = selection;\n this.inVirtualSelectionMode = false;\n selection._eventRegistry = reg;\n selection.mergeOverlappingRanges();\n if (selection.ranges[0])\n selection.fromOrientedRange(selection.ranges[0]);\n var anim = this.renderer.$scrollAnimation;\n this.onCursorChange();\n this.onSelectionChange();\n if (anim && anim.from == anim.to)\n this.renderer.animateScrolling(anim.from);\n return result;\n };\n this.exitMultiSelectMode = function () {\n if (!this.inMultiSelectMode || this.inVirtualSelectionMode)\n return;\n this.multiSelect.toSingleRange();\n };\n this.getSelectedText = function () {\n var text = \"\";\n if (this.inMultiSelectMode && !this.inVirtualSelectionMode) {\n var ranges = this.multiSelect.rangeList.ranges;\n var buf = [];\n for (var i = 0; i < ranges.length; i++) {\n buf.push(this.session.getTextRange(ranges[i]));\n }\n var nl = this.session.getDocument().getNewLineCharacter();\n text = buf.join(nl);\n if (text.length == (buf.length - 1) * nl.length)\n text = \"\";\n }\n else if (!this.selection.isEmpty()) {\n text = this.session.getTextRange(this.getSelectionRange());\n }\n return text;\n };\n this.$checkMultiselectChange = function (e, anchor) {\n if (this.inMultiSelectMode && !this.inVirtualSelectionMode) {\n var range = this.multiSelect.ranges[0];\n if (this.multiSelect.isEmpty() && anchor == this.multiSelect.anchor)\n return;\n var pos = anchor == this.multiSelect.anchor\n ? range.cursor == range.start ? range.end : range.start\n : range.cursor;\n if (pos.row != anchor.row\n || this.session.$clipPositionToDocument(pos.row, pos.column).column != anchor.column)\n this.multiSelect.toSingleRange(this.multiSelect.toOrientedRange());\n else\n this.multiSelect.mergeOverlappingRanges();\n }\n };\n this.findAll = function (needle, options, additive) {\n options = options || {};\n options.needle = needle || options.needle;\n if (options.needle == undefined) {\n var range = this.selection.isEmpty()\n ? this.selection.getWordRange()\n : this.selection.getRange();\n options.needle = this.session.getTextRange(range);\n }\n this.$search.set(options);\n var ranges = this.$search.findAll(this.session);\n if (!ranges.length)\n return 0;\n var selection = this.multiSelect;\n if (!additive)\n selection.toSingleRange(ranges[0]);\n for (var i = ranges.length; i--;)\n selection.addRange(ranges[i], true);\n if (range && selection.rangeList.rangeAtPoint(range.start))\n selection.addRange(range, true);\n return ranges.length;\n };\n this.selectMoreLines = function (dir, skip) {\n var range = this.selection.toOrientedRange();\n var isBackwards = range.cursor == range.end;\n var screenLead = this.session.documentToScreenPosition(range.cursor);\n if (this.selection.$desiredColumn)\n screenLead.column = this.selection.$desiredColumn;\n var lead = this.session.screenToDocumentPosition(screenLead.row + dir, screenLead.column);\n if (!range.isEmpty()) {\n var screenAnchor = this.session.documentToScreenPosition(isBackwards ? range.end : range.start);\n var anchor = this.session.screenToDocumentPosition(screenAnchor.row + dir, screenAnchor.column);\n }\n else {\n var anchor = lead;\n }\n if (isBackwards) {\n var newRange = Range.fromPoints(lead, anchor);\n newRange.cursor = newRange.start;\n }\n else {\n var newRange = Range.fromPoints(anchor, lead);\n newRange.cursor = newRange.end;\n }\n newRange.desiredColumn = screenLead.column;\n if (!this.selection.inMultiSelectMode) {\n this.selection.addRange(range);\n }\n else {\n if (skip)\n var toRemove = range.cursor;\n }\n this.selection.addRange(newRange);\n if (toRemove)\n this.selection.substractPoint(toRemove);\n };\n this.transposeSelections = function (dir) {\n var session = this.session;\n var sel = session.multiSelect;\n var all = sel.ranges;\n for (var i = all.length; i--;) {\n var range = all[i];\n if (range.isEmpty()) {\n var tmp = session.getWordRange(range.start.row, range.start.column);\n range.start.row = tmp.start.row;\n range.start.column = tmp.start.column;\n range.end.row = tmp.end.row;\n range.end.column = tmp.end.column;\n }\n }\n sel.mergeOverlappingRanges();\n var words = [];\n for (var i = all.length; i--;) {\n var range = all[i];\n words.unshift(session.getTextRange(range));\n }\n if (dir < 0)\n words.unshift(words.pop());\n else\n words.push(words.shift());\n for (var i = all.length; i--;) {\n var range = all[i];\n var tmp = range.clone();\n session.replace(range, words[i]);\n range.start.row = tmp.start.row;\n range.start.column = tmp.start.column;\n }\n sel.fromOrientedRange(sel.ranges[0]);\n };\n this.selectMore = function (dir, skip, stopAtFirst) {\n var session = this.session;\n var sel = session.multiSelect;\n var range = sel.toOrientedRange();\n if (range.isEmpty()) {\n range = session.getWordRange(range.start.row, range.start.column);\n range.cursor = dir == -1 ? range.start : range.end;\n this.multiSelect.addRange(range);\n if (stopAtFirst)\n return;\n }\n var needle = session.getTextRange(range);\n var newRange = find(session, needle, dir);\n if (newRange) {\n newRange.cursor = dir == -1 ? newRange.start : newRange.end;\n this.session.unfold(newRange);\n this.multiSelect.addRange(newRange);\n this.renderer.scrollCursorIntoView(null, 0.5);\n }\n if (skip)\n this.multiSelect.substractPoint(range.cursor);\n };\n this.alignCursors = function () {\n var session = this.session;\n var sel = session.multiSelect;\n var ranges = sel.ranges;\n var row = -1;\n var sameRowRanges = ranges.filter(function (r) {\n if (r.cursor.row == row)\n return true;\n row = r.cursor.row;\n });\n if (!ranges.length || sameRowRanges.length == ranges.length - 1) {\n var range = this.selection.getRange();\n var fr = range.start.row, lr = range.end.row;\n var guessRange = fr == lr;\n if (guessRange) {\n var max = this.session.getLength();\n var line;\n do {\n line = this.session.getLine(lr);\n } while (/[=:]/.test(line) && ++lr < max);\n do {\n line = this.session.getLine(fr);\n } while (/[=:]/.test(line) && --fr > 0);\n if (fr < 0)\n fr = 0;\n if (lr >= max)\n lr = max - 1;\n }\n var lines = this.session.removeFullLines(fr, lr);\n lines = this.$reAlignText(lines, guessRange);\n this.session.insert({ row: fr, column: 0 }, lines.join(\"\\n\") + \"\\n\");\n if (!guessRange) {\n range.start.column = 0;\n range.end.column = lines[lines.length - 1].length;\n }\n this.selection.setRange(range);\n }\n else {\n sameRowRanges.forEach(function (r) {\n sel.substractPoint(r.cursor);\n });\n var maxCol = 0;\n var minSpace = Infinity;\n var spaceOffsets = ranges.map(function (r) {\n var p = r.cursor;\n var line = session.getLine(p.row);\n var spaceOffset = line.substr(p.column).search(/\\S/g);\n if (spaceOffset == -1)\n spaceOffset = 0;\n if (p.column > maxCol)\n maxCol = p.column;\n if (spaceOffset < minSpace)\n minSpace = spaceOffset;\n return spaceOffset;\n });\n ranges.forEach(function (r, i) {\n var p = r.cursor;\n var l = maxCol - p.column;\n var d = spaceOffsets[i] - minSpace;\n if (l > d)\n session.insert(p, lang.stringRepeat(\" \", l - d));\n else\n session.remove(new Range(p.row, p.column, p.row, p.column - l + d));\n r.start.column = r.end.column = maxCol;\n r.start.row = r.end.row = p.row;\n r.cursor = r.end;\n });\n sel.fromOrientedRange(ranges[0]);\n this.renderer.updateCursor();\n this.renderer.updateBackMarkers();\n }\n };\n this.$reAlignText = function (lines, forceLeft) {\n var isLeftAligned = true, isRightAligned = true;\n var startW, textW, endW;\n return lines.map(function (line) {\n var m = line.match(/(\\s*)(.*?)(\\s*)([=:].*)/);\n if (!m)\n return [line];\n if (startW == null) {\n startW = m[1].length;\n textW = m[2].length;\n endW = m[3].length;\n return m;\n }\n if (startW + textW + endW != m[1].length + m[2].length + m[3].length)\n isRightAligned = false;\n if (startW != m[1].length)\n isLeftAligned = false;\n if (startW > m[1].length)\n startW = m[1].length;\n if (textW < m[2].length)\n textW = m[2].length;\n if (endW > m[3].length)\n endW = m[3].length;\n return m;\n }).map(forceLeft ? alignLeft :\n isLeftAligned ? isRightAligned ? alignRight : alignLeft : unAlign);\n function spaces(n) {\n return lang.stringRepeat(\" \", n);\n }\n function alignLeft(m) {\n return !m[2] ? m[0] : spaces(startW) + m[2]\n + spaces(textW - m[2].length + endW)\n + m[4].replace(/^([=:])\\s+/, \"$1 \");\n }\n function alignRight(m) {\n return !m[2] ? m[0] : spaces(startW + textW - m[2].length) + m[2]\n + spaces(endW)\n + m[4].replace(/^([=:])\\s+/, \"$1 \");\n }\n function unAlign(m) {\n return !m[2] ? m[0] : spaces(startW) + m[2]\n + spaces(endW)\n + m[4].replace(/^([=:])\\s+/, \"$1 \");\n }\n };\n}).call(Editor.prototype);\nfunction isSamePoint(p1, p2) {\n return p1.row == p2.row && p1.column == p2.column;\n}\nexports.onSessionChange = function (e) {\n var session = e.session;\n if (session && !session.multiSelect) {\n session.$selectionMarkers = [];\n session.selection.$initRangeList();\n session.multiSelect = session.selection;\n }\n this.multiSelect = session && session.multiSelect;\n var oldSession = e.oldSession;\n if (oldSession) {\n oldSession.multiSelect.off(\"addRange\", this.$onAddRange);\n oldSession.multiSelect.off(\"removeRange\", this.$onRemoveRange);\n oldSession.multiSelect.off(\"multiSelect\", this.$onMultiSelect);\n oldSession.multiSelect.off(\"singleSelect\", this.$onSingleSelect);\n oldSession.multiSelect.lead.off(\"change\", this.$checkMultiselectChange);\n oldSession.multiSelect.anchor.off(\"change\", this.$checkMultiselectChange);\n }\n if (session) {\n session.multiSelect.on(\"addRange\", this.$onAddRange);\n session.multiSelect.on(\"removeRange\", this.$onRemoveRange);\n session.multiSelect.on(\"multiSelect\", this.$onMultiSelect);\n session.multiSelect.on(\"singleSelect\", this.$onSingleSelect);\n session.multiSelect.lead.on(\"change\", this.$checkMultiselectChange);\n session.multiSelect.anchor.on(\"change\", this.$checkMultiselectChange);\n }\n if (session && this.inMultiSelectMode != session.selection.inMultiSelectMode) {\n if (session.selection.inMultiSelectMode)\n this.$onMultiSelect();\n else\n this.$onSingleSelect();\n }\n};\nfunction MultiSelect(editor) {\n if (editor.$multiselectOnSessionChange)\n return;\n editor.$onAddRange = editor.$onAddRange.bind(editor);\n editor.$onRemoveRange = editor.$onRemoveRange.bind(editor);\n editor.$onMultiSelect = editor.$onMultiSelect.bind(editor);\n editor.$onSingleSelect = editor.$onSingleSelect.bind(editor);\n editor.$multiselectOnSessionChange = exports.onSessionChange.bind(editor);\n editor.$checkMultiselectChange = editor.$checkMultiselectChange.bind(editor);\n editor.$multiselectOnSessionChange(editor);\n editor.on(\"changeSession\", editor.$multiselectOnSessionChange);\n editor.on(\"mousedown\", onMouseDown);\n editor.commands.addCommands(commands.defaultCommands);\n addAltCursorListeners(editor);\n}\nfunction addAltCursorListeners(editor) {\n if (!editor.textInput)\n return;\n var el = editor.textInput.getElement();\n var altCursor = false;\n event.addListener(el, \"keydown\", function (e) {\n var altDown = e.keyCode == 18 && !(e.ctrlKey || e.shiftKey || e.metaKey);\n if (editor.$blockSelectEnabled && altDown) {\n if (!altCursor) {\n editor.renderer.setMouseCursor(\"crosshair\");\n altCursor = true;\n }\n }\n else if (altCursor) {\n reset();\n }\n }, editor);\n event.addListener(el, \"keyup\", reset, editor);\n event.addListener(el, \"blur\", reset, editor);\n function reset(e) {\n if (altCursor) {\n editor.renderer.setMouseCursor(\"\");\n altCursor = false;\n }\n }\n}\nexports.MultiSelect = MultiSelect;\nrequire(\"./config\").defineOptions(Editor.prototype, \"editor\", {\n enableMultiselect: {\n set: function (val) {\n MultiSelect(this);\n if (val) {\n this.on(\"mousedown\", onMouseDown);\n }\n else {\n this.off(\"mousedown\", onMouseDown);\n }\n },\n value: true\n },\n enableBlockSelect: {\n set: function (val) {\n this.$blockSelectEnabled = val;\n },\n value: true\n }\n});\n\n});\n\nace.define(\"ace/mode/folding/fold_mode\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar Range = require(\"../../range\").Range;\nvar FoldMode = exports.FoldMode = function () { };\n(function () {\n this.foldingStartMarker = null;\n this.foldingStopMarker = null;\n this.getFoldWidget = function (session, foldStyle, row) {\n var line = session.getLine(row);\n if (this.foldingStartMarker.test(line))\n return \"start\";\n if (foldStyle == \"markbeginend\"\n && this.foldingStopMarker\n && this.foldingStopMarker.test(line))\n return \"end\";\n return \"\";\n };\n this.getFoldWidgetRange = function (session, foldStyle, row) {\n return null;\n };\n this.indentationBlock = function (session, row, column) {\n var re = /\\S/;\n var line = session.getLine(row);\n var startLevel = line.search(re);\n if (startLevel == -1)\n return;\n var startColumn = column || line.length;\n var maxRow = session.getLength();\n var startRow = row;\n var endRow = row;\n while (++row < maxRow) {\n var level = session.getLine(row).search(re);\n if (level == -1)\n continue;\n if (level <= startLevel) {\n var token = session.getTokenAt(row, 0);\n if (!token || token.type !== \"string\")\n break;\n }\n endRow = row;\n }\n if (endRow > startRow) {\n var endColumn = session.getLine(endRow).length;\n return new Range(startRow, startColumn, endRow, endColumn);\n }\n };\n this.openingBracketBlock = function (session, bracket, row, column, typeRe) {\n var start = { row: row, column: column + 1 };\n var end = session.$findClosingBracket(bracket, start, typeRe);\n if (!end)\n return;\n var fw = session.foldWidgets[end.row];\n if (fw == null)\n fw = session.getFoldWidget(end.row);\n if (fw == \"start\" && end.row > start.row) {\n end.row--;\n end.column = session.getLine(end.row).length;\n }\n return Range.fromPoints(start, end);\n };\n this.closingBracketBlock = function (session, bracket, row, column, typeRe) {\n var end = { row: row, column: column };\n var start = session.$findOpeningBracket(bracket, end);\n if (!start)\n return;\n start.column++;\n end.column--;\n return Range.fromPoints(start, end);\n };\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/ext/error_marker\",[\"require\",\"exports\",\"module\",\"ace/line_widgets\",\"ace/lib/dom\",\"ace/range\",\"ace/config\"], function(require, exports, module){\"use strict\";\nvar LineWidgets = require(\"../line_widgets\").LineWidgets;\nvar dom = require(\"../lib/dom\");\nvar Range = require(\"../range\").Range;\nvar nls = require(\"../config\").nls;\nfunction binarySearch(array, needle, comparator) {\n var first = 0;\n var last = array.length - 1;\n while (first <= last) {\n var mid = (first + last) >> 1;\n var c = comparator(needle, array[mid]);\n if (c > 0)\n first = mid + 1;\n else if (c < 0)\n last = mid - 1;\n else\n return mid;\n }\n return -(first + 1);\n}\nfunction findAnnotations(session, row, dir) {\n var annotations = session.getAnnotations().sort(Range.comparePoints);\n if (!annotations.length)\n return;\n var i = binarySearch(annotations, { row: row, column: -1 }, Range.comparePoints);\n if (i < 0)\n i = -i - 1;\n if (i >= annotations.length)\n i = dir > 0 ? 0 : annotations.length - 1;\n else if (i === 0 && dir < 0)\n i = annotations.length - 1;\n var annotation = annotations[i];\n if (!annotation || !dir)\n return;\n if (annotation.row === row) {\n do {\n annotation = annotations[i += dir];\n } while (annotation && annotation.row === row);\n if (!annotation)\n return annotations.slice();\n }\n var matched = [];\n row = annotation.row;\n do {\n matched[dir < 0 ? \"unshift\" : \"push\"](annotation);\n annotation = annotations[i += dir];\n } while (annotation && annotation.row == row);\n return matched.length && matched;\n}\nexports.showErrorMarker = function (editor, dir) {\n var session = editor.session;\n if (!session.widgetManager) {\n session.widgetManager = new LineWidgets(session);\n session.widgetManager.attach(editor);\n }\n var pos = editor.getCursorPosition();\n var row = pos.row;\n var oldWidget = session.widgetManager.getWidgetsAtRow(row).filter(function (w) {\n return w.type == \"errorMarker\";\n })[0];\n if (oldWidget) {\n oldWidget.destroy();\n }\n else {\n row -= dir;\n }\n var annotations = findAnnotations(session, row, dir);\n var gutterAnno;\n if (annotations) {\n var annotation = annotations[0];\n pos.column = (annotation.pos && typeof annotation.column != \"number\"\n ? annotation.pos.sc\n : annotation.column) || 0;\n pos.row = annotation.row;\n gutterAnno = editor.renderer.$gutterLayer.$annotations[pos.row];\n }\n else if (oldWidget) {\n return;\n }\n else {\n gutterAnno = {\n text: [nls(\"Looks good!\")],\n className: \"ace_ok\"\n };\n }\n editor.session.unfold(pos.row);\n editor.selection.moveToPosition(pos);\n var w = {\n row: pos.row,\n fixedWidth: true,\n coverGutter: true,\n el: dom.createElement(\"div\"),\n type: \"errorMarker\"\n };\n var el = w.el.appendChild(dom.createElement(\"div\"));\n var arrow = w.el.appendChild(dom.createElement(\"div\"));\n arrow.className = \"error_widget_arrow \" + gutterAnno.className;\n var left = editor.renderer.$cursorLayer\n .getPixelPosition(pos).left;\n arrow.style.left = left + editor.renderer.gutterWidth - 5 + \"px\";\n w.el.className = \"error_widget_wrapper\";\n el.className = \"error_widget \" + gutterAnno.className;\n el.innerHTML = gutterAnno.text.join(\"
\");\n el.appendChild(dom.createElement(\"div\"));\n var kb = function (_, hashId, keyString) {\n if (hashId === 0 && (keyString === \"esc\" || keyString === \"return\")) {\n w.destroy();\n return { command: \"null\" };\n }\n };\n w.destroy = function () {\n if (editor.$mouseHandler.isMousePressed)\n return;\n editor.keyBinding.removeKeyboardHandler(kb);\n session.widgetManager.removeLineWidget(w);\n editor.off(\"changeSelection\", w.destroy);\n editor.off(\"changeSession\", w.destroy);\n editor.off(\"mouseup\", w.destroy);\n editor.off(\"change\", w.destroy);\n };\n editor.keyBinding.addKeyboardHandler(kb);\n editor.on(\"changeSelection\", w.destroy);\n editor.on(\"changeSession\", w.destroy);\n editor.on(\"mouseup\", w.destroy);\n editor.on(\"change\", w.destroy);\n editor.session.widgetManager.addLineWidget(w);\n w.el.onmousedown = editor.focus.bind(editor);\n editor.renderer.scrollCursorIntoView(null, 0.5, { bottom: w.el.offsetHeight });\n};\ndom.importCssString(\"\\n .error_widget_wrapper {\\n background: inherit;\\n color: inherit;\\n border:none\\n }\\n .error_widget {\\n border-top: solid 2px;\\n border-bottom: solid 2px;\\n margin: 5px 0;\\n padding: 10px 40px;\\n white-space: pre-wrap;\\n }\\n .error_widget.ace_error, .error_widget_arrow.ace_error{\\n border-color: #ff5a5a\\n }\\n .error_widget.ace_warning, .error_widget_arrow.ace_warning{\\n border-color: #F1D817\\n }\\n .error_widget.ace_info, .error_widget_arrow.ace_info{\\n border-color: #5a5a5a\\n }\\n .error_widget.ace_ok, .error_widget_arrow.ace_ok{\\n border-color: #5aaa5a\\n }\\n .error_widget_arrow {\\n position: absolute;\\n border: solid 5px;\\n border-top-color: transparent!important;\\n border-right-color: transparent!important;\\n border-left-color: transparent!important;\\n top: -5px;\\n }\\n\", \"error_marker.css\", false);\n\n});\n\nace.define(\"ace/ace\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\",\"ace/range\",\"ace/editor\",\"ace/edit_session\",\"ace/undomanager\",\"ace/virtual_renderer\",\"ace/worker/worker_client\",\"ace/keyboard/hash_handler\",\"ace/placeholder\",\"ace/multi_select\",\"ace/mode/folding/fold_mode\",\"ace/theme/textmate\",\"ace/ext/error_marker\",\"ace/config\",\"ace/loader_build\"], function(require, exports, module){/**\n * The main class required to set up an Ace instance in the browser.\n *\n * @class Ace\n **/\n\"use strict\";\nrequire(\"./loader_build\")(exports)\nvar dom = require(\"./lib/dom\");\nvar Range = require(\"./range\").Range;\nvar Editor = require(\"./editor\").Editor;\nvar EditSession = require(\"./edit_session\").EditSession;\nvar UndoManager = require(\"./undomanager\").UndoManager;\nvar Renderer = require(\"./virtual_renderer\").VirtualRenderer;\nrequire(\"./worker/worker_client\");\nrequire(\"./keyboard/hash_handler\");\nrequire(\"./placeholder\");\nrequire(\"./multi_select\");\nrequire(\"./mode/folding/fold_mode\");\nrequire(\"./theme/textmate\");\nrequire(\"./ext/error_marker\");\nexports.config = require(\"./config\");\nexports.edit = function (el, options) {\n if (typeof el == \"string\") {\n var _id = el;\n el = document.getElementById(_id);\n if (!el)\n throw new Error(\"ace.edit can't find div #\" + _id);\n }\n if (el && el.env && el.env.editor instanceof Editor)\n return el.env.editor;\n var value = \"\";\n if (el && /input|textarea/i.test(el.tagName)) {\n var oldNode = el;\n value = oldNode.value;\n el = dom.createElement(\"pre\");\n oldNode.parentNode.replaceChild(el, oldNode);\n }\n else if (el) {\n value = el.textContent;\n el.innerHTML = \"\";\n }\n var doc = exports.createEditSession(value);\n var editor = new Editor(new Renderer(el), doc, options);\n var env = {\n document: doc,\n editor: editor,\n onResize: editor.resize.bind(editor, null)\n };\n if (oldNode)\n env.textarea = oldNode;\n editor.on(\"destroy\", function () {\n env.editor.container.env = null; // prevent memory leak on old ie\n });\n editor.container.env = editor.env = env;\n return editor;\n};\nexports.createEditSession = function (text, mode) {\n var doc = new EditSession(text, mode);\n doc.setUndoManager(new UndoManager());\n return doc;\n};\nexports.Range = Range;\nexports.Editor = Editor;\nexports.EditSession = EditSession;\nexports.UndoManager = UndoManager;\nexports.VirtualRenderer = Renderer;\nexports.version = exports.config.version;\n\n}); (function() {\n ace.require([\"ace/ace\"], function(a) {\n if (a) {\n a.config.init(true);\n a.define = ace.define;\n }\n var global = (function () {\n return this;\n })();\n if (!global && typeof window != \"undefined\") global = window; // can happen in strict mode\n if (!global && typeof self != \"undefined\") global = self; // can happen in webworker\n \n if (!global.ace)\n global.ace = a;\n for (var key in a) if (a.hasOwnProperty(key))\n global.ace[key] = a[key];\n global.ace[\"default\"] = global.ace;\n if (typeof module == \"object\" && typeof exports == \"object\" && module) {\n module.exports = global.ace;\n }\n });\n })();\n ","ace.define(\"ace/ext/beautify\",[\"require\",\"exports\",\"module\",\"ace/token_iterator\"], function(require, exports, module){// [WIP]\n\"use strict\";\nvar TokenIterator = require(\"../token_iterator\").TokenIterator;\nfunction is(token, type) {\n return token.type.lastIndexOf(type + \".xml\") > -1;\n}\nexports.singletonTags = [\"area\", \"base\", \"br\", \"col\", \"command\", \"embed\", \"hr\", \"html\", \"img\", \"input\", \"keygen\", \"link\", \"meta\", \"param\", \"source\", \"track\", \"wbr\"];\nexports.blockTags = [\"article\", \"aside\", \"blockquote\", \"body\", \"div\", \"dl\", \"fieldset\", \"footer\", \"form\", \"head\", \"header\", \"html\", \"nav\", \"ol\", \"p\", \"script\", \"section\", \"style\", \"table\", \"tbody\", \"tfoot\", \"thead\", \"ul\"];\nexports.formatOptions = {\n lineBreaksAfterCommasInCurlyBlock: true\n};\nexports.beautify = function (session) {\n var iterator = new TokenIterator(session, 0, 0);\n var token = iterator.getCurrentToken();\n var tabString = session.getTabString();\n var singletonTags = exports.singletonTags;\n var blockTags = exports.blockTags;\n var formatOptions = exports.formatOptions || {};\n var nextToken;\n var breakBefore = false;\n var spaceBefore = false;\n var spaceAfter = false;\n var code = \"\";\n var value = \"\";\n var tagName = \"\";\n var depth = 0;\n var lastDepth = 0;\n var lastIndent = 0;\n var indent = 0;\n var unindent = 0;\n var roundDepth = 0;\n var curlyDepth = 0;\n var row;\n var curRow = 0;\n var rowsToAdd = 0;\n var rowTokens = [];\n var abort = false;\n var i;\n var indentNextLine = false;\n var inTag = false;\n var inCSS = false;\n var inBlock = false;\n var levels = { 0: 0 };\n var parents = [];\n var caseBody = false;\n var trimNext = function () {\n if (nextToken && nextToken.value && nextToken.type !== 'string.regexp')\n nextToken.value = nextToken.value.replace(/^\\s*/, \"\");\n };\n var trimLine = function () {\n var end = code.length - 1;\n while (true) {\n if (end == 0)\n break;\n if (code[end] !== \" \")\n break;\n end = end - 1;\n }\n code = code.slice(0, end + 1);\n };\n var trimCode = function () {\n code = code.trimRight();\n breakBefore = false;\n };\n while (token !== null) {\n curRow = iterator.getCurrentTokenRow();\n rowTokens = iterator.$rowTokens;\n nextToken = iterator.stepForward();\n if (typeof token !== \"undefined\") {\n value = token.value;\n unindent = 0;\n inCSS = (tagName === \"style\" || session.$modeId === \"ace/mode/css\");\n if (is(token, \"tag-open\")) {\n inTag = true;\n if (nextToken)\n inBlock = (blockTags.indexOf(nextToken.value) !== -1);\n if (value === \" 0; rowsToAdd--)\n code += \"\\n\";\n breakBefore = true;\n if (!is(token, \"comment\") && !token.type.match(/^(comment|string)$/))\n value = value.trimLeft();\n }\n if (value) {\n if (token.type === \"keyword\" && value.match(/^(if|else|elseif|for|foreach|while|switch)$/)) {\n parents[depth] = value;\n trimNext();\n spaceAfter = true;\n if (value.match(/^(else|elseif)$/)) {\n if (code.match(/\\}[\\s]*$/)) {\n trimCode();\n spaceBefore = true;\n }\n }\n }\n else if (token.type === \"paren.lparen\") {\n trimNext();\n if (value.substr(-1) === \"{\") {\n spaceAfter = true;\n indentNextLine = false;\n if (!inTag)\n rowsToAdd = 1;\n }\n if (value.substr(0, 1) === \"{\") {\n spaceBefore = true;\n if (code.substr(-1) !== '[' && code.trimRight().substr(-1) === '[') {\n trimCode();\n spaceBefore = false;\n }\n else if (code.trimRight().substr(-1) === ')') {\n trimCode();\n }\n else {\n trimLine();\n }\n }\n }\n else if (token.type === \"paren.rparen\") {\n unindent = 1;\n if (value.substr(0, 1) === \"}\") {\n if (parents[depth - 1] === 'case')\n unindent++;\n if (code.trimRight().substr(-1) === '{') {\n trimCode();\n }\n else {\n spaceBefore = true;\n if (inCSS)\n rowsToAdd += 2;\n }\n }\n if (value.substr(0, 1) === \"]\") {\n if (code.substr(-1) !== '}' && code.trimRight().substr(-1) === '}') {\n spaceBefore = false;\n indent++;\n trimCode();\n }\n }\n if (value.substr(0, 1) === \")\") {\n if (code.substr(-1) !== '(' && code.trimRight().substr(-1) === '(') {\n spaceBefore = false;\n indent++;\n trimCode();\n }\n }\n trimLine();\n }\n else if ((token.type === \"keyword.operator\" || token.type === \"keyword\") && value.match(/^(=|==|===|!=|!==|&&|\\|\\||and|or|xor|\\+=|.=|>|>=|<|<=|=>)$/)) {\n trimCode();\n trimNext();\n spaceBefore = true;\n spaceAfter = true;\n }\n else if (token.type === \"punctuation.operator\" && value === ';') {\n trimCode();\n trimNext();\n spaceAfter = true;\n if (inCSS)\n rowsToAdd++;\n }\n else if (token.type === \"punctuation.operator\" && value.match(/^(:|,)$/)) {\n trimCode();\n trimNext();\n if (value.match(/^(,)$/) && curlyDepth > 0 && roundDepth === 0 && formatOptions.lineBreaksAfterCommasInCurlyBlock) {\n rowsToAdd++;\n }\n else {\n spaceAfter = true;\n breakBefore = false;\n }\n }\n else if (token.type === \"support.php_tag\" && value === \"?>\" && !breakBefore) {\n trimCode();\n spaceBefore = true;\n }\n else if (is(token, \"attribute-name\") && code.substr(-1).match(/^\\s$/)) {\n spaceBefore = true;\n }\n else if (is(token, \"attribute-equals\")) {\n trimLine();\n trimNext();\n }\n else if (is(token, \"tag-close\")) {\n trimLine();\n if (value === \"/>\")\n spaceBefore = true;\n }\n else if (token.type === \"keyword\" && value.match(/^(case|default)$/)) {\n if (caseBody)\n unindent = 1;\n }\n if (breakBefore && !(token.type.match(/^(comment)$/) && !value.substr(0, 1).match(/^[/#]$/)) && !(token.type.match(/^(string)$/) && !value.substr(0, 1).match(/^['\"@]$/))) {\n indent = lastIndent;\n if (depth > lastDepth) {\n indent++;\n for (i = depth; i > lastDepth; i--)\n levels[i] = indent;\n }\n else if (depth < lastDepth)\n indent = levels[depth];\n lastDepth = depth;\n lastIndent = indent;\n if (unindent)\n indent -= unindent;\n if (indentNextLine && !roundDepth) {\n indent++;\n indentNextLine = false;\n }\n for (i = 0; i < indent; i++)\n code += tabString;\n }\n if (token.type === \"keyword\" && value.match(/^(case|default)$/)) {\n if (caseBody === false) {\n parents[depth] = value;\n depth++;\n caseBody = true;\n }\n }\n else if (token.type === \"keyword\" && value.match(/^(break)$/)) {\n if (parents[depth - 1] && parents[depth - 1].match(/^(case|default)$/)) {\n depth--;\n caseBody = false;\n }\n }\n if (token.type === \"paren.lparen\") {\n roundDepth += (value.match(/\\(/g) || []).length;\n curlyDepth += (value.match(/\\{/g) || []).length;\n depth += value.length;\n }\n if (token.type === \"keyword\" && value.match(/^(if|else|elseif|for|while)$/)) {\n indentNextLine = true;\n roundDepth = 0;\n }\n else if (!roundDepth && value.trim() && token.type !== \"comment\")\n indentNextLine = false;\n if (token.type === \"paren.rparen\") {\n roundDepth -= (value.match(/\\)/g) || []).length;\n curlyDepth -= (value.match(/\\}/g) || []).length;\n for (i = 0; i < value.length; i++) {\n depth--;\n if (value.substr(i, 1) === '}' && parents[depth] === 'case') {\n depth--;\n }\n }\n }\n if (token.type == \"text\")\n value = value.replace(/\\s+$/, \" \");\n if (spaceBefore && !breakBefore) {\n trimLine();\n if (code.substr(-1) !== \"\\n\")\n code += \" \";\n }\n code += value;\n if (spaceAfter)\n code += \" \";\n breakBefore = false;\n spaceBefore = false;\n spaceAfter = false;\n if ((is(token, \"tag-close\") && (inBlock || blockTags.indexOf(tagName) !== -1)) || (is(token, \"doctype\") && value === \">\")) {\n if (inBlock && nextToken && nextToken.value === \"\") {\n depth--;\n }\n }\n if (is(token, \"tag-name\")) {\n tagName = value;\n }\n row = curRow;\n }\n }\n token = nextToken;\n }\n code = code.trim();\n session.doc.setValue(code);\n};\nexports.commands = [{\n name: \"beautify\",\n description: \"Format selection (Beautify)\",\n exec: function (editor) {\n exports.beautify(editor.session);\n },\n bindKey: \"Ctrl-Shift-B\"\n }];\n\n}); (function() {\n ace.require([\"ace/ext/beautify\"], function(m) {\n if (typeof module == \"object\" && typeof exports == \"object\" && module) {\n module.exports = m;\n }\n });\n })();\n ","ace.define(\"ace/ext/searchbox-css\",[\"require\",\"exports\",\"module\"], function(require, exports, module){module.exports = \"\\n\\n/* ------------------------------------------------------------------------------------------\\n * Editor Search Form\\n * --------------------------------------------------------------------------------------- */\\n.ace_search {\\n background-color: #ddd;\\n color: #666;\\n border: 1px solid #cbcbcb;\\n border-top: 0 none;\\n overflow: hidden;\\n margin: 0;\\n padding: 4px 6px 0 4px;\\n position: absolute;\\n top: 0;\\n z-index: 99;\\n white-space: normal;\\n}\\n.ace_search.left {\\n border-left: 0 none;\\n border-radius: 0px 0px 5px 0px;\\n left: 0;\\n}\\n.ace_search.right {\\n border-radius: 0px 0px 0px 5px;\\n border-right: 0 none;\\n right: 0;\\n}\\n\\n.ace_search_form, .ace_replace_form {\\n margin: 0 20px 4px 0;\\n overflow: hidden;\\n line-height: 1.9;\\n}\\n.ace_replace_form {\\n margin-right: 0;\\n}\\n.ace_search_form.ace_nomatch {\\n outline: 1px solid red;\\n}\\n\\n.ace_search_field {\\n border-radius: 3px 0 0 3px;\\n background-color: white;\\n color: black;\\n border: 1px solid #cbcbcb;\\n border-right: 0 none;\\n outline: 0;\\n padding: 0;\\n font-size: inherit;\\n margin: 0;\\n line-height: inherit;\\n padding: 0 6px;\\n min-width: 17em;\\n vertical-align: top;\\n min-height: 1.8em;\\n box-sizing: content-box;\\n}\\n.ace_searchbtn {\\n border: 1px solid #cbcbcb;\\n line-height: inherit;\\n display: inline-block;\\n padding: 0 6px;\\n background: #fff;\\n border-right: 0 none;\\n border-left: 1px solid #dcdcdc;\\n cursor: pointer;\\n margin: 0;\\n position: relative;\\n color: #666;\\n}\\n.ace_searchbtn:last-child {\\n border-radius: 0 3px 3px 0;\\n border-right: 1px solid #cbcbcb;\\n}\\n.ace_searchbtn:disabled {\\n background: none;\\n cursor: default;\\n}\\n.ace_searchbtn:hover {\\n background-color: #eef1f6;\\n}\\n.ace_searchbtn.prev, .ace_searchbtn.next {\\n padding: 0px 0.7em\\n}\\n.ace_searchbtn.prev:after, .ace_searchbtn.next:after {\\n content: \\\"\\\";\\n border: solid 2px #888;\\n width: 0.5em;\\n height: 0.5em;\\n border-width: 2px 0 0 2px;\\n display:inline-block;\\n transform: rotate(-45deg);\\n}\\n.ace_searchbtn.next:after {\\n border-width: 0 2px 2px 0 ;\\n}\\n.ace_searchbtn_close {\\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAcCAYAAABRVo5BAAAAZ0lEQVR42u2SUQrAMAhDvazn8OjZBilCkYVVxiis8H4CT0VrAJb4WHT3C5xU2a2IQZXJjiQIRMdkEoJ5Q2yMqpfDIo+XY4k6h+YXOyKqTIj5REaxloNAd0xiKmAtsTHqW8sR2W5f7gCu5nWFUpVjZwAAAABJRU5ErkJggg==) no-repeat 50% 0;\\n border-radius: 50%;\\n border: 0 none;\\n color: #656565;\\n cursor: pointer;\\n font: 16px/16px Arial;\\n padding: 0;\\n height: 14px;\\n width: 14px;\\n top: 9px;\\n right: 7px;\\n position: absolute;\\n}\\n.ace_searchbtn_close:hover {\\n background-color: #656565;\\n background-position: 50% 100%;\\n color: white;\\n}\\n\\n.ace_button {\\n margin-left: 2px;\\n cursor: pointer;\\n -webkit-user-select: none;\\n -moz-user-select: none;\\n -o-user-select: none;\\n -ms-user-select: none;\\n user-select: none;\\n overflow: hidden;\\n opacity: 0.7;\\n border: 1px solid rgba(100,100,100,0.23);\\n padding: 1px;\\n box-sizing: border-box!important;\\n color: black;\\n}\\n\\n.ace_button:hover {\\n background-color: #eee;\\n opacity:1;\\n}\\n.ace_button:active {\\n background-color: #ddd;\\n}\\n\\n.ace_button.checked {\\n border-color: #3399ff;\\n opacity:1;\\n}\\n\\n.ace_search_options{\\n margin-bottom: 3px;\\n text-align: right;\\n -webkit-user-select: none;\\n -moz-user-select: none;\\n -o-user-select: none;\\n -ms-user-select: none;\\n user-select: none;\\n clear: both;\\n}\\n\\n.ace_search_counter {\\n float: left;\\n font-family: arial;\\n padding: 0 8px;\\n}\";\n\n});\n\nace.define(\"ace/ext/searchbox\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\",\"ace/lib/lang\",\"ace/lib/event\",\"ace/ext/searchbox-css\",\"ace/keyboard/hash_handler\",\"ace/lib/keys\",\"ace/config\"], function(require, exports, module){\"use strict\";\nvar dom = require(\"../lib/dom\");\nvar lang = require(\"../lib/lang\");\nvar event = require(\"../lib/event\");\nvar searchboxCss = require(\"./searchbox-css\");\nvar HashHandler = require(\"../keyboard/hash_handler\").HashHandler;\nvar keyUtil = require(\"../lib/keys\");\nvar nls = require(\"../config\").nls;\nvar MAX_COUNT = 999;\ndom.importCssString(searchboxCss, \"ace_searchbox\", false);\nvar SearchBox = /** @class */ (function () {\n function SearchBox(editor, range, showReplaceForm) {\n var div = dom.createElement(\"div\");\n dom.buildDom([\"div\", { class: \"ace_search right\" },\n [\"span\", { action: \"hide\", class: \"ace_searchbtn_close\" }],\n [\"div\", { class: \"ace_search_form\" },\n [\"input\", { class: \"ace_search_field\", placeholder: nls(\"Search for\"), spellcheck: \"false\" }],\n [\"span\", { action: \"findPrev\", class: \"ace_searchbtn prev\" }, \"\\u200b\"],\n [\"span\", { action: \"findNext\", class: \"ace_searchbtn next\" }, \"\\u200b\"],\n [\"span\", { action: \"findAll\", class: \"ace_searchbtn\", title: \"Alt-Enter\" }, nls(\"All\")]\n ],\n [\"div\", { class: \"ace_replace_form\" },\n [\"input\", { class: \"ace_search_field\", placeholder: nls(\"Replace with\"), spellcheck: \"false\" }],\n [\"span\", { action: \"replaceAndFindNext\", class: \"ace_searchbtn\" }, nls(\"Replace\")],\n [\"span\", { action: \"replaceAll\", class: \"ace_searchbtn\" }, nls(\"All\")]\n ],\n [\"div\", { class: \"ace_search_options\" },\n [\"span\", { action: \"toggleReplace\", class: \"ace_button\", title: nls(\"Toggle Replace mode\"),\n style: \"float:left;margin-top:-2px;padding:0 5px;\" }, \"+\"],\n [\"span\", { class: \"ace_search_counter\" }],\n [\"span\", { action: \"toggleRegexpMode\", class: \"ace_button\", title: nls(\"RegExp Search\") }, \".*\"],\n [\"span\", { action: \"toggleCaseSensitive\", class: \"ace_button\", title: nls(\"CaseSensitive Search\") }, \"Aa\"],\n [\"span\", { action: \"toggleWholeWords\", class: \"ace_button\", title: nls(\"Whole Word Search\") }, \"\\\\b\"],\n [\"span\", { action: \"searchInSelection\", class: \"ace_button\", title: nls(\"Search In Selection\") }, \"S\"]\n ]\n ], div);\n this.element = div.firstChild;\n this.setSession = this.setSession.bind(this);\n this.$init();\n this.setEditor(editor);\n dom.importCssString(searchboxCss, \"ace_searchbox\", editor.container);\n }\n SearchBox.prototype.setEditor = function (editor) {\n editor.searchBox = this;\n editor.renderer.scroller.appendChild(this.element);\n this.editor = editor;\n };\n SearchBox.prototype.setSession = function (e) {\n this.searchRange = null;\n this.$syncOptions(true);\n };\n SearchBox.prototype.$initElements = function (sb) {\n this.searchBox = sb.querySelector(\".ace_search_form\");\n this.replaceBox = sb.querySelector(\".ace_replace_form\");\n this.searchOption = sb.querySelector(\"[action=searchInSelection]\");\n this.replaceOption = sb.querySelector(\"[action=toggleReplace]\");\n this.regExpOption = sb.querySelector(\"[action=toggleRegexpMode]\");\n this.caseSensitiveOption = sb.querySelector(\"[action=toggleCaseSensitive]\");\n this.wholeWordOption = sb.querySelector(\"[action=toggleWholeWords]\");\n this.searchInput = this.searchBox.querySelector(\".ace_search_field\");\n this.replaceInput = this.replaceBox.querySelector(\".ace_search_field\");\n this.searchCounter = sb.querySelector(\".ace_search_counter\");\n };\n SearchBox.prototype.$init = function () {\n var sb = this.element;\n this.$initElements(sb);\n var _this = this;\n event.addListener(sb, \"mousedown\", function (e) {\n setTimeout(function () {\n _this.activeInput.focus();\n }, 0);\n event.stopPropagation(e);\n });\n event.addListener(sb, \"click\", function (e) {\n var t = e.target || e.srcElement;\n var action = t.getAttribute(\"action\");\n if (action && _this[action])\n _this[action]();\n else if (_this.$searchBarKb.commands[action])\n _this.$searchBarKb.commands[action].exec(_this);\n event.stopPropagation(e);\n });\n event.addCommandKeyListener(sb, function (e, hashId, keyCode) {\n var keyString = keyUtil.keyCodeToString(keyCode);\n var command = _this.$searchBarKb.findKeyCommand(hashId, keyString);\n if (command && command.exec) {\n command.exec(_this);\n event.stopEvent(e);\n }\n });\n this.$onChange = lang.delayedCall(function () {\n _this.find(false, false);\n });\n event.addListener(this.searchInput, \"input\", function () {\n _this.$onChange.schedule(20);\n });\n event.addListener(this.searchInput, \"focus\", function () {\n _this.activeInput = _this.searchInput;\n _this.searchInput.value && _this.highlight();\n });\n event.addListener(this.replaceInput, \"focus\", function () {\n _this.activeInput = _this.replaceInput;\n _this.searchInput.value && _this.highlight();\n });\n };\n SearchBox.prototype.setSearchRange = function (range) {\n this.searchRange = range;\n if (range) {\n this.searchRangeMarker = this.editor.session.addMarker(range, \"ace_active-line\");\n }\n else if (this.searchRangeMarker) {\n this.editor.session.removeMarker(this.searchRangeMarker);\n this.searchRangeMarker = null;\n }\n };\n SearchBox.prototype.$syncOptions = function (preventScroll) {\n dom.setCssClass(this.replaceOption, \"checked\", this.searchRange);\n dom.setCssClass(this.searchOption, \"checked\", this.searchOption.checked);\n this.replaceOption.textContent = this.replaceOption.checked ? \"-\" : \"+\";\n dom.setCssClass(this.regExpOption, \"checked\", this.regExpOption.checked);\n dom.setCssClass(this.wholeWordOption, \"checked\", this.wholeWordOption.checked);\n dom.setCssClass(this.caseSensitiveOption, \"checked\", this.caseSensitiveOption.checked);\n var readOnly = this.editor.getReadOnly();\n this.replaceOption.style.display = readOnly ? \"none\" : \"\";\n this.replaceBox.style.display = this.replaceOption.checked && !readOnly ? \"\" : \"none\";\n this.find(false, false, preventScroll);\n };\n SearchBox.prototype.highlight = function (re) {\n this.editor.session.highlight(re || this.editor.$search.$options.re);\n this.editor.renderer.updateBackMarkers();\n };\n SearchBox.prototype.find = function (skipCurrent, backwards, preventScroll) {\n var range = this.editor.find(this.searchInput.value, {\n skipCurrent: skipCurrent,\n backwards: backwards,\n wrap: true,\n regExp: this.regExpOption.checked,\n caseSensitive: this.caseSensitiveOption.checked,\n wholeWord: this.wholeWordOption.checked,\n preventScroll: preventScroll,\n range: this.searchRange\n });\n var noMatch = !range && this.searchInput.value;\n dom.setCssClass(this.searchBox, \"ace_nomatch\", noMatch);\n this.editor._emit(\"findSearchBox\", { match: !noMatch });\n this.highlight();\n this.updateCounter();\n };\n SearchBox.prototype.updateCounter = function () {\n var editor = this.editor;\n var regex = editor.$search.$options.re;\n var all = 0;\n var before = 0;\n if (regex) {\n var value = this.searchRange\n ? editor.session.getTextRange(this.searchRange)\n : editor.getValue();\n var offset = editor.session.doc.positionToIndex(editor.selection.anchor);\n if (this.searchRange)\n offset -= editor.session.doc.positionToIndex(this.searchRange.start);\n var last = regex.lastIndex = 0;\n var m;\n while ((m = regex.exec(value))) {\n all++;\n last = m.index;\n if (last <= offset)\n before++;\n if (all > MAX_COUNT)\n break;\n if (!m[0]) {\n regex.lastIndex = last += 1;\n if (last >= value.length)\n break;\n }\n }\n }\n this.searchCounter.textContent = nls(\"$0 of $1\", [before, (all > MAX_COUNT ? MAX_COUNT + \"+\" : all)]);\n };\n SearchBox.prototype.findNext = function () {\n this.find(true, false);\n };\n SearchBox.prototype.findPrev = function () {\n this.find(true, true);\n };\n SearchBox.prototype.findAll = function () {\n var range = this.editor.findAll(this.searchInput.value, {\n regExp: this.regExpOption.checked,\n caseSensitive: this.caseSensitiveOption.checked,\n wholeWord: this.wholeWordOption.checked\n });\n var noMatch = !range && this.searchInput.value;\n dom.setCssClass(this.searchBox, \"ace_nomatch\", noMatch);\n this.editor._emit(\"findSearchBox\", { match: !noMatch });\n this.highlight();\n this.hide();\n };\n SearchBox.prototype.replace = function () {\n if (!this.editor.getReadOnly())\n this.editor.replace(this.replaceInput.value);\n };\n SearchBox.prototype.replaceAndFindNext = function () {\n if (!this.editor.getReadOnly()) {\n this.editor.replace(this.replaceInput.value);\n this.findNext();\n }\n };\n SearchBox.prototype.replaceAll = function () {\n if (!this.editor.getReadOnly())\n this.editor.replaceAll(this.replaceInput.value);\n };\n SearchBox.prototype.hide = function () {\n this.active = false;\n this.setSearchRange(null);\n this.editor.off(\"changeSession\", this.setSession);\n this.element.style.display = \"none\";\n this.editor.keyBinding.removeKeyboardHandler(this.$closeSearchBarKb);\n this.editor.focus();\n };\n SearchBox.prototype.show = function (value, isReplace) {\n this.active = true;\n this.editor.on(\"changeSession\", this.setSession);\n this.element.style.display = \"\";\n this.replaceOption.checked = isReplace;\n if (value)\n this.searchInput.value = value;\n this.searchInput.focus();\n this.searchInput.select();\n this.editor.keyBinding.addKeyboardHandler(this.$closeSearchBarKb);\n this.$syncOptions(true);\n };\n SearchBox.prototype.isFocused = function () {\n var el = document.activeElement;\n return el == this.searchInput || el == this.replaceInput;\n };\n return SearchBox;\n}());\nvar $searchBarKb = new HashHandler();\n$searchBarKb.bindKeys({\n \"Ctrl-f|Command-f\": function (sb) {\n var isReplace = sb.isReplace = !sb.isReplace;\n sb.replaceBox.style.display = isReplace ? \"\" : \"none\";\n sb.replaceOption.checked = false;\n sb.$syncOptions();\n sb.searchInput.focus();\n },\n \"Ctrl-H|Command-Option-F\": function (sb) {\n if (sb.editor.getReadOnly())\n return;\n sb.replaceOption.checked = true;\n sb.$syncOptions();\n sb.replaceInput.focus();\n },\n \"Ctrl-G|Command-G\": function (sb) {\n sb.findNext();\n },\n \"Ctrl-Shift-G|Command-Shift-G\": function (sb) {\n sb.findPrev();\n },\n \"esc\": function (sb) {\n setTimeout(function () { sb.hide(); });\n },\n \"Return\": function (sb) {\n if (sb.activeInput == sb.replaceInput)\n sb.replace();\n sb.findNext();\n },\n \"Shift-Return\": function (sb) {\n if (sb.activeInput == sb.replaceInput)\n sb.replace();\n sb.findPrev();\n },\n \"Alt-Return\": function (sb) {\n if (sb.activeInput == sb.replaceInput)\n sb.replaceAll();\n sb.findAll();\n },\n \"Tab\": function (sb) {\n (sb.activeInput == sb.replaceInput ? sb.searchInput : sb.replaceInput).focus();\n }\n});\n$searchBarKb.addCommands([{\n name: \"toggleRegexpMode\",\n bindKey: { win: \"Alt-R|Alt-/\", mac: \"Ctrl-Alt-R|Ctrl-Alt-/\" },\n exec: function (sb) {\n sb.regExpOption.checked = !sb.regExpOption.checked;\n sb.$syncOptions();\n }\n }, {\n name: \"toggleCaseSensitive\",\n bindKey: { win: \"Alt-C|Alt-I\", mac: \"Ctrl-Alt-R|Ctrl-Alt-I\" },\n exec: function (sb) {\n sb.caseSensitiveOption.checked = !sb.caseSensitiveOption.checked;\n sb.$syncOptions();\n }\n }, {\n name: \"toggleWholeWords\",\n bindKey: { win: \"Alt-B|Alt-W\", mac: \"Ctrl-Alt-B|Ctrl-Alt-W\" },\n exec: function (sb) {\n sb.wholeWordOption.checked = !sb.wholeWordOption.checked;\n sb.$syncOptions();\n }\n }, {\n name: \"toggleReplace\",\n exec: function (sb) {\n sb.replaceOption.checked = !sb.replaceOption.checked;\n sb.$syncOptions();\n }\n }, {\n name: \"searchInSelection\",\n exec: function (sb) {\n sb.searchOption.checked = !sb.searchRange;\n sb.setSearchRange(sb.searchOption.checked && sb.editor.getSelectionRange());\n sb.$syncOptions();\n }\n }]);\nvar $closeSearchBarKb = new HashHandler([{\n bindKey: \"Esc\",\n name: \"closeSearchBar\",\n exec: function (editor) {\n editor.searchBox.hide();\n }\n }]);\nSearchBox.prototype.$searchBarKb = $searchBarKb;\nSearchBox.prototype.$closeSearchBarKb = $closeSearchBarKb;\nexports.SearchBox = SearchBox;\nexports.Search = function (editor, isReplace) {\n var sb = editor.searchBox || new SearchBox(editor);\n sb.show(editor.session.getTextRange(), isReplace);\n};\n\n}); (function() {\n ace.require([\"ace/ext/searchbox\"], function(m) {\n if (typeof module == \"object\" && typeof exports == \"object\" && module) {\n module.exports = m;\n }\n });\n })();\n ","ace.define(\"ace/mode/css_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/mode/text_highlight_rules\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar lang = require(\"../lib/lang\");\nvar TextHighlightRules = require(\"./text_highlight_rules\").TextHighlightRules;\nvar supportType = exports.supportType = \"align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index\";\nvar supportFunction = exports.supportFunction = \"rgb|rgba|url|attr|counter|counters\";\nvar supportConstant = exports.supportConstant = \"absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|flex-end|flex-start|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom\";\nvar supportConstantColor = exports.supportConstantColor = \"aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|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|green|greenyellow|grey|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|magenta|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|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen\";\nvar supportConstantFonts = exports.supportConstantFonts = \"arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace\";\nvar numRe = exports.numRe = \"\\\\-?(?:(?:[0-9]+(?:\\\\.[0-9]+)?)|(?:\\\\.[0-9]+))\";\nvar pseudoElements = exports.pseudoElements = \"(\\\\:+)\\\\b(after|before|first-letter|first-line|moz-selection|selection)\\\\b\";\nvar pseudoClasses = exports.pseudoClasses = \"(:)\\\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\\\b\";\nvar CssHighlightRules = function () {\n var keywordMapper = this.createKeywordMapper({\n \"support.function\": supportFunction,\n \"support.constant\": supportConstant,\n \"support.type\": supportType,\n \"support.constant.color\": supportConstantColor,\n \"support.constant.fonts\": supportConstantFonts\n }, \"text\", true);\n this.$rules = {\n \"start\": [{\n include: [\"strings\", \"url\", \"comments\"]\n }, {\n token: \"paren.lparen\",\n regex: \"\\\\{\",\n next: \"ruleset\"\n }, {\n token: \"paren.rparen\",\n regex: \"\\\\}\"\n }, {\n token: \"string\",\n regex: \"@(?!viewport)\",\n next: \"media\"\n }, {\n token: \"keyword\",\n regex: \"#[a-z0-9-_]+\"\n }, {\n token: \"keyword\",\n regex: \"%\"\n }, {\n token: \"variable\",\n regex: \"\\\\.[a-z0-9-_]+\"\n }, {\n token: \"string\",\n regex: \":[a-z0-9-_]+\"\n }, {\n token: \"constant.numeric\",\n regex: numRe\n }, {\n token: \"constant\",\n regex: \"[a-z0-9-_]+\"\n }, {\n caseInsensitive: true\n }],\n \"media\": [{\n include: [\"strings\", \"url\", \"comments\"]\n }, {\n token: \"paren.lparen\",\n regex: \"\\\\{\",\n next: \"start\"\n }, {\n token: \"paren.rparen\",\n regex: \"\\\\}\",\n next: \"start\"\n }, {\n token: \"string\",\n regex: \";\",\n next: \"start\"\n }, {\n token: \"keyword\",\n regex: \"(?:media|supports|document|charset|import|namespace|media|supports|document\"\n + \"|page|font|keyframes|viewport|counter-style|font-feature-values\"\n + \"|swash|ornaments|annotation|stylistic|styleset|character-variant)\"\n }],\n \"comments\": [{\n token: \"comment\",\n regex: \"\\\\/\\\\*\",\n push: [{\n token: \"comment\",\n regex: \"\\\\*\\\\/\",\n next: \"pop\"\n }, {\n defaultToken: \"comment\"\n }]\n }],\n \"ruleset\": [{\n regex: \"-(webkit|ms|moz|o)-\",\n token: \"text\"\n }, {\n token: \"punctuation.operator\",\n regex: \"[:;]\"\n }, {\n token: \"paren.rparen\",\n regex: \"\\\\}\",\n next: \"start\"\n }, {\n include: [\"strings\", \"url\", \"comments\"]\n }, {\n token: [\"constant.numeric\", \"keyword\"],\n regex: \"(\" + numRe + \")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)\"\n }, {\n token: \"constant.numeric\",\n regex: numRe\n }, {\n token: \"constant.numeric\",\n regex: \"#[a-f0-9]{6}\"\n }, {\n token: \"constant.numeric\",\n regex: \"#[a-f0-9]{3}\"\n }, {\n token: [\"punctuation\", \"entity.other.attribute-name.pseudo-element.css\"],\n regex: pseudoElements\n }, {\n token: [\"punctuation\", \"entity.other.attribute-name.pseudo-class.css\"],\n regex: pseudoClasses\n }, {\n include: \"url\"\n }, {\n token: keywordMapper,\n regex: \"\\\\-?[a-zA-Z_][a-zA-Z0-9_\\\\-]*\"\n }, {\n caseInsensitive: true\n }],\n url: [{\n token: \"support.function\",\n regex: \"(?:url(:?-prefix)?|domain|regexp)\\\\(\",\n push: [{\n token: \"support.function\",\n regex: \"\\\\)\",\n next: \"pop\"\n }, {\n defaultToken: \"string\"\n }]\n }],\n strings: [{\n token: \"string.start\",\n regex: \"'\",\n push: [{\n token: \"string.end\",\n regex: \"'|$\",\n next: \"pop\"\n }, {\n include: \"escapes\"\n }, {\n token: \"constant.language.escape\",\n regex: /\\\\$/,\n consumeLineEnd: true\n }, {\n defaultToken: \"string\"\n }]\n }, {\n token: \"string.start\",\n regex: '\"',\n push: [{\n token: \"string.end\",\n regex: '\"|$',\n next: \"pop\"\n }, {\n include: \"escapes\"\n }, {\n token: \"constant.language.escape\",\n regex: /\\\\$/,\n consumeLineEnd: true\n }, {\n defaultToken: \"string\"\n }]\n }],\n escapes: [{\n token: \"constant.language.escape\",\n regex: /\\\\([a-fA-F\\d]{1,6}|[^a-fA-F\\d])/\n }]\n };\n this.normalizeRules();\n};\noop.inherits(CssHighlightRules, TextHighlightRules);\nexports.CssHighlightRules = CssHighlightRules;\n\n});\n\nace.define(\"ace/mode/matching_brace_outdent\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar Range = require(\"../range\").Range;\nvar MatchingBraceOutdent = function () { };\n(function () {\n this.checkOutdent = function (line, input) {\n if (!/^\\s+$/.test(line))\n return false;\n return /^\\s*\\}/.test(input);\n };\n this.autoOutdent = function (doc, row) {\n var line = doc.getLine(row);\n var match = line.match(/^(\\s*\\})/);\n if (!match)\n return 0;\n var column = match[1].length;\n var openBracePos = doc.findMatchingBracket({ row: row, column: column });\n if (!openBracePos || openBracePos.row == row)\n return 0;\n var indent = this.$getIndent(doc.getLine(openBracePos.row));\n doc.replace(new Range(row, 0, row, column - 1), indent);\n };\n this.$getIndent = function (line) {\n return line.match(/^\\s*/)[0];\n };\n}).call(MatchingBraceOutdent.prototype);\nexports.MatchingBraceOutdent = MatchingBraceOutdent;\n\n});\n\nace.define(\"ace/mode/css_completions\",[\"require\",\"exports\",\"module\"], function(require, exports, module){\"use strict\";\nvar propertyMap = {\n \"background\": { \"#$0\": 1 },\n \"background-color\": { \"#$0\": 1, \"transparent\": 1, \"fixed\": 1 },\n \"background-image\": { \"url('/$0')\": 1 },\n \"background-repeat\": { \"repeat\": 1, \"repeat-x\": 1, \"repeat-y\": 1, \"no-repeat\": 1, \"inherit\": 1 },\n \"background-position\": { \"bottom\": 2, \"center\": 2, \"left\": 2, \"right\": 2, \"top\": 2, \"inherit\": 2 },\n \"background-attachment\": { \"scroll\": 1, \"fixed\": 1 },\n \"background-size\": { \"cover\": 1, \"contain\": 1 },\n \"background-clip\": { \"border-box\": 1, \"padding-box\": 1, \"content-box\": 1 },\n \"background-origin\": { \"border-box\": 1, \"padding-box\": 1, \"content-box\": 1 },\n \"border\": { \"solid $0\": 1, \"dashed $0\": 1, \"dotted $0\": 1, \"#$0\": 1 },\n \"border-color\": { \"#$0\": 1 },\n \"border-style\": { \"solid\": 2, \"dashed\": 2, \"dotted\": 2, \"double\": 2, \"groove\": 2, \"hidden\": 2, \"inherit\": 2, \"inset\": 2, \"none\": 2, \"outset\": 2, \"ridged\": 2 },\n \"border-collapse\": { \"collapse\": 1, \"separate\": 1 },\n \"bottom\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"clear\": { \"left\": 1, \"right\": 1, \"both\": 1, \"none\": 1 },\n \"color\": { \"#$0\": 1, \"rgb(#$00,0,0)\": 1 },\n \"cursor\": { \"default\": 1, \"pointer\": 1, \"move\": 1, \"text\": 1, \"wait\": 1, \"help\": 1, \"progress\": 1, \"n-resize\": 1, \"ne-resize\": 1, \"e-resize\": 1, \"se-resize\": 1, \"s-resize\": 1, \"sw-resize\": 1, \"w-resize\": 1, \"nw-resize\": 1 },\n \"display\": { \"none\": 1, \"block\": 1, \"inline\": 1, \"inline-block\": 1, \"table-cell\": 1 },\n \"empty-cells\": { \"show\": 1, \"hide\": 1 },\n \"float\": { \"left\": 1, \"right\": 1, \"none\": 1 },\n \"font-family\": { \"Arial\": 2, \"Comic Sans MS\": 2, \"Consolas\": 2, \"Courier New\": 2, \"Courier\": 2, \"Georgia\": 2, \"Monospace\": 2, \"Sans-Serif\": 2, \"Segoe UI\": 2, \"Tahoma\": 2, \"Times New Roman\": 2, \"Trebuchet MS\": 2, \"Verdana\": 1 },\n \"font-size\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"font-weight\": { \"bold\": 1, \"normal\": 1 },\n \"font-style\": { \"italic\": 1, \"normal\": 1 },\n \"font-variant\": { \"normal\": 1, \"small-caps\": 1 },\n \"height\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"left\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"letter-spacing\": { \"normal\": 1 },\n \"line-height\": { \"normal\": 1 },\n \"list-style-type\": { \"none\": 1, \"disc\": 1, \"circle\": 1, \"square\": 1, \"decimal\": 1, \"decimal-leading-zero\": 1, \"lower-roman\": 1, \"upper-roman\": 1, \"lower-greek\": 1, \"lower-latin\": 1, \"upper-latin\": 1, \"georgian\": 1, \"lower-alpha\": 1, \"upper-alpha\": 1 },\n \"margin\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"margin-right\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"margin-left\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"margin-top\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"margin-bottom\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"max-height\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"max-width\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"min-height\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"min-width\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"overflow\": { \"hidden\": 1, \"visible\": 1, \"auto\": 1, \"scroll\": 1 },\n \"overflow-x\": { \"hidden\": 1, \"visible\": 1, \"auto\": 1, \"scroll\": 1 },\n \"overflow-y\": { \"hidden\": 1, \"visible\": 1, \"auto\": 1, \"scroll\": 1 },\n \"padding\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"padding-top\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"padding-right\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"padding-bottom\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"padding-left\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"page-break-after\": { \"auto\": 1, \"always\": 1, \"avoid\": 1, \"left\": 1, \"right\": 1 },\n \"page-break-before\": { \"auto\": 1, \"always\": 1, \"avoid\": 1, \"left\": 1, \"right\": 1 },\n \"position\": { \"absolute\": 1, \"relative\": 1, \"fixed\": 1, \"static\": 1 },\n \"right\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"table-layout\": { \"fixed\": 1, \"auto\": 1 },\n \"text-decoration\": { \"none\": 1, \"underline\": 1, \"line-through\": 1, \"blink\": 1 },\n \"text-align\": { \"left\": 1, \"right\": 1, \"center\": 1, \"justify\": 1 },\n \"text-transform\": { \"capitalize\": 1, \"uppercase\": 1, \"lowercase\": 1, \"none\": 1 },\n \"top\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"vertical-align\": { \"top\": 1, \"bottom\": 1 },\n \"visibility\": { \"hidden\": 1, \"visible\": 1 },\n \"white-space\": { \"nowrap\": 1, \"normal\": 1, \"pre\": 1, \"pre-line\": 1, \"pre-wrap\": 1 },\n \"width\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"word-spacing\": { \"normal\": 1 },\n \"filter\": { \"alpha(opacity=$0100)\": 1 },\n \"text-shadow\": { \"$02px 2px 2px #777\": 1 },\n \"text-overflow\": { \"ellipsis-word\": 1, \"clip\": 1, \"ellipsis\": 1 },\n \"-moz-border-radius\": 1,\n \"-moz-border-radius-topright\": 1,\n \"-moz-border-radius-bottomright\": 1,\n \"-moz-border-radius-topleft\": 1,\n \"-moz-border-radius-bottomleft\": 1,\n \"-webkit-border-radius\": 1,\n \"-webkit-border-top-right-radius\": 1,\n \"-webkit-border-top-left-radius\": 1,\n \"-webkit-border-bottom-right-radius\": 1,\n \"-webkit-border-bottom-left-radius\": 1,\n \"-moz-box-shadow\": 1,\n \"-webkit-box-shadow\": 1,\n \"transform\": { \"rotate($00deg)\": 1, \"skew($00deg)\": 1 },\n \"-moz-transform\": { \"rotate($00deg)\": 1, \"skew($00deg)\": 1 },\n \"-webkit-transform\": { \"rotate($00deg)\": 1, \"skew($00deg)\": 1 }\n};\nvar CssCompletions = function () {\n};\n(function () {\n this.completionsDefined = false;\n this.defineCompletions = function () {\n if (document) {\n var style = document.createElement('c').style;\n for (var i in style) {\n if (typeof style[i] !== 'string')\n continue;\n var name = i.replace(/[A-Z]/g, function (x) {\n return '-' + x.toLowerCase();\n });\n if (!propertyMap.hasOwnProperty(name))\n propertyMap[name] = 1;\n }\n }\n this.completionsDefined = true;\n };\n this.getCompletions = function (state, session, pos, prefix) {\n if (!this.completionsDefined) {\n this.defineCompletions();\n }\n if (state === 'ruleset' || session.$mode.$id == \"ace/mode/scss\") {\n var line = session.getLine(pos.row).substr(0, pos.column);\n var inParens = /\\([^)]*$/.test(line);\n if (inParens) {\n line = line.substr(line.lastIndexOf('(') + 1);\n }\n if (/:[^;]+$/.test(line)) {\n /([\\w\\-]+):[^:]*$/.test(line);\n return this.getPropertyValueCompletions(state, session, pos, prefix);\n }\n else {\n return this.getPropertyCompletions(state, session, pos, prefix, inParens);\n }\n }\n return [];\n };\n this.getPropertyCompletions = function (state, session, pos, prefix, skipSemicolon) {\n skipSemicolon = skipSemicolon || false;\n var properties = Object.keys(propertyMap);\n return properties.map(function (property) {\n return {\n caption: property,\n snippet: property + ': $0' + (skipSemicolon ? '' : ';'),\n meta: \"property\",\n score: 1000000\n };\n });\n };\n this.getPropertyValueCompletions = function (state, session, pos, prefix) {\n var line = session.getLine(pos.row).substr(0, pos.column);\n var property = (/([\\w\\-]+):[^:]*$/.exec(line) || {})[1];\n if (!property)\n return [];\n var values = [];\n if (property in propertyMap && typeof propertyMap[property] === \"object\") {\n values = Object.keys(propertyMap[property]);\n }\n return values.map(function (value) {\n return {\n caption: value,\n snippet: value,\n meta: \"property value\",\n score: 1000000\n };\n });\n };\n}).call(CssCompletions.prototype);\nexports.CssCompletions = CssCompletions;\n\n});\n\nace.define(\"ace/mode/behaviour/css\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/behaviour\",\"ace/mode/behaviour/cstyle\",\"ace/token_iterator\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../../lib/oop\");\nvar Behaviour = require(\"../behaviour\").Behaviour;\nvar CstyleBehaviour = require(\"./cstyle\").CstyleBehaviour;\nvar TokenIterator = require(\"../../token_iterator\").TokenIterator;\nvar CssBehaviour = function () {\n this.inherit(CstyleBehaviour);\n this.add(\"colon\", \"insertion\", function (state, action, editor, session, text) {\n if (text === ':' && editor.selection.isEmpty()) {\n var cursor = editor.getCursorPosition();\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n var token = iterator.getCurrentToken();\n if (token && token.value.match(/\\s+/)) {\n token = iterator.stepBackward();\n }\n if (token && token.type === 'support.type') {\n var line = session.doc.getLine(cursor.row);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n if (rightChar === ':') {\n return {\n text: '',\n selection: [1, 1]\n };\n }\n if (/^(\\s+[^;]|\\s*$)/.test(line.substring(cursor.column))) {\n return {\n text: ':;',\n selection: [1, 1]\n };\n }\n }\n }\n });\n this.add(\"colon\", \"deletion\", function (state, action, editor, session, range) {\n var selected = session.doc.getTextRange(range);\n if (!range.isMultiLine() && selected === ':') {\n var cursor = editor.getCursorPosition();\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n var token = iterator.getCurrentToken();\n if (token && token.value.match(/\\s+/)) {\n token = iterator.stepBackward();\n }\n if (token && token.type === 'support.type') {\n var line = session.doc.getLine(range.start.row);\n var rightChar = line.substring(range.end.column, range.end.column + 1);\n if (rightChar === ';') {\n range.end.column++;\n return range;\n }\n }\n }\n });\n this.add(\"semicolon\", \"insertion\", function (state, action, editor, session, text) {\n if (text === ';' && editor.selection.isEmpty()) {\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n if (rightChar === ';') {\n return {\n text: '',\n selection: [1, 1]\n };\n }\n }\n });\n this.add(\"!important\", \"insertion\", function (state, action, editor, session, text) {\n if (text === '!' && editor.selection.isEmpty()) {\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n if (/^\\s*(;|}|$)/.test(line.substring(cursor.column))) {\n return {\n text: '!important',\n selection: [10, 10]\n };\n }\n }\n });\n};\noop.inherits(CssBehaviour, CstyleBehaviour);\nexports.CssBehaviour = CssBehaviour;\n\n});\n\nace.define(\"ace/mode/folding/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/range\",\"ace/mode/folding/fold_mode\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../../lib/oop\");\nvar Range = require(\"../../range\").Range;\nvar BaseFoldMode = require(\"./fold_mode\").FoldMode;\nvar FoldMode = exports.FoldMode = function (commentRegex) {\n if (commentRegex) {\n this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.start));\n this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.end));\n }\n};\noop.inherits(FoldMode, BaseFoldMode);\n(function () {\n this.foldingStartMarker = /([\\{\\[\\(])[^\\}\\]\\)]*$|^\\s*(\\/\\*)/;\n this.foldingStopMarker = /^[^\\[\\{\\(]*([\\}\\]\\)])|^[\\s\\*]*(\\*\\/)/;\n this.singleLineBlockCommentRe = /^\\s*(\\/\\*).*\\*\\/\\s*$/;\n this.tripleStarBlockCommentRe = /^\\s*(\\/\\*\\*\\*).*\\*\\/\\s*$/;\n this.startRegionRe = /^\\s*(\\/\\*|\\/\\/)#?region\\b/;\n this._getFoldWidgetBase = this.getFoldWidget;\n this.getFoldWidget = function (session, foldStyle, row) {\n var line = session.getLine(row);\n if (this.singleLineBlockCommentRe.test(line)) {\n if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line))\n return \"\";\n }\n var fw = this._getFoldWidgetBase(session, foldStyle, row);\n if (!fw && this.startRegionRe.test(line))\n return \"start\"; // lineCommentRegionStart\n return fw;\n };\n this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) {\n var line = session.getLine(row);\n if (this.startRegionRe.test(line))\n return this.getCommentRegionBlock(session, line, row);\n var match = line.match(this.foldingStartMarker);\n if (match) {\n var i = match.index;\n if (match[1])\n return this.openingBracketBlock(session, match[1], row, i);\n var range = session.getCommentFoldRange(row, i + match[0].length, 1);\n if (range && !range.isMultiLine()) {\n if (forceMultiline) {\n range = this.getSectionRange(session, row);\n }\n else if (foldStyle != \"all\")\n range = null;\n }\n return range;\n }\n if (foldStyle === \"markbegin\")\n return;\n var match = line.match(this.foldingStopMarker);\n if (match) {\n var i = match.index + match[0].length;\n if (match[1])\n return this.closingBracketBlock(session, match[1], row, i);\n return session.getCommentFoldRange(row, i, -1);\n }\n };\n this.getSectionRange = function (session, row) {\n var line = session.getLine(row);\n var startIndent = line.search(/\\S/);\n var startRow = row;\n var startColumn = line.length;\n row = row + 1;\n var endRow = row;\n var maxRow = session.getLength();\n while (++row < maxRow) {\n line = session.getLine(row);\n var indent = line.search(/\\S/);\n if (indent === -1)\n continue;\n if (startIndent > indent)\n break;\n var subRange = this.getFoldWidgetRange(session, \"all\", row);\n if (subRange) {\n if (subRange.start.row <= startRow) {\n break;\n }\n else if (subRange.isMultiLine()) {\n row = subRange.end.row;\n }\n else if (startIndent == indent) {\n break;\n }\n }\n endRow = row;\n }\n return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);\n };\n this.getCommentRegionBlock = function (session, line, row) {\n var startColumn = line.search(/\\s*$/);\n var maxRow = session.getLength();\n var startRow = row;\n var re = /^\\s*(?:\\/\\*|\\/\\/|--)#?(end)?region\\b/;\n var depth = 1;\n while (++row < maxRow) {\n line = session.getLine(row);\n var m = re.exec(line);\n if (!m)\n continue;\n if (m[1])\n depth--;\n else\n depth++;\n if (!depth)\n break;\n }\n var endRow = row;\n if (endRow > startRow) {\n return new Range(startRow, startColumn, endRow, line.length);\n }\n };\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/css\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/css_highlight_rules\",\"ace/mode/matching_brace_outdent\",\"ace/worker/worker_client\",\"ace/mode/css_completions\",\"ace/mode/behaviour/css\",\"ace/mode/folding/cstyle\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar TextMode = require(\"./text\").Mode;\nvar CssHighlightRules = require(\"./css_highlight_rules\").CssHighlightRules;\nvar MatchingBraceOutdent = require(\"./matching_brace_outdent\").MatchingBraceOutdent;\nvar WorkerClient = require(\"../worker/worker_client\").WorkerClient;\nvar CssCompletions = require(\"./css_completions\").CssCompletions;\nvar CssBehaviour = require(\"./behaviour/css\").CssBehaviour;\nvar CStyleFoldMode = require(\"./folding/cstyle\").FoldMode;\nvar Mode = function () {\n this.HighlightRules = CssHighlightRules;\n this.$outdent = new MatchingBraceOutdent();\n this.$behaviour = new CssBehaviour();\n this.$completer = new CssCompletions();\n this.foldingRules = new CStyleFoldMode();\n};\noop.inherits(Mode, TextMode);\n(function () {\n this.foldingRules = \"cStyle\";\n this.blockComment = { start: \"/*\", end: \"*/\" };\n this.getNextLineIndent = function (state, line, tab) {\n var indent = this.$getIndent(line);\n var tokens = this.getTokenizer().getLineTokens(line, state).tokens;\n if (tokens.length && tokens[tokens.length - 1].type == \"comment\") {\n return indent;\n }\n var match = line.match(/^.*\\{\\s*$/);\n if (match) {\n indent += tab;\n }\n return indent;\n };\n this.checkOutdent = function (state, line, input) {\n return this.$outdent.checkOutdent(line, input);\n };\n this.autoOutdent = function (state, doc, row) {\n this.$outdent.autoOutdent(doc, row);\n };\n this.getCompletions = function (state, session, pos, prefix) {\n return this.$completer.getCompletions(state, session, pos, prefix);\n };\n this.createWorker = function (session) {\n var worker = new WorkerClient([\"ace\"], \"ace/mode/css_worker\", \"Worker\");\n worker.attachToDocument(session.getDocument());\n worker.on(\"annotate\", function (e) {\n session.setAnnotations(e.data);\n });\n worker.on(\"terminate\", function () {\n session.clearAnnotations();\n });\n return worker;\n };\n this.$id = \"ace/mode/css\";\n this.snippetFileId = \"ace/snippets/css\";\n}).call(Mode.prototype);\nexports.Mode = Mode;\n\n}); (function() {\n ace.require([\"ace/mode/css\"], function(m) {\n if (typeof module == \"object\" && typeof exports == \"object\" && module) {\n module.exports = m;\n }\n });\n })();\n ","ace.define(\"ace/mode/doc_comment_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar TextHighlightRules = require(\"./text_highlight_rules\").TextHighlightRules;\nvar DocCommentHighlightRules = function () {\n this.$rules = {\n \"start\": [\n {\n token: \"comment.doc.tag\",\n regex: \"@\\\\w+(?=\\\\s|$)\"\n }, DocCommentHighlightRules.getTagRule(), {\n defaultToken: \"comment.doc\",\n caseInsensitive: true\n }\n ]\n };\n};\noop.inherits(DocCommentHighlightRules, TextHighlightRules);\nDocCommentHighlightRules.getTagRule = function (start) {\n return {\n token: \"comment.doc.tag.storage.type\",\n regex: \"\\\\b(?:TODO|FIXME|XXX|HACK)\\\\b\"\n };\n};\nDocCommentHighlightRules.getStartRule = function (start) {\n return {\n token: \"comment.doc\",\n regex: \"\\\\/\\\\*(?=\\\\*)\",\n next: start\n };\n};\nDocCommentHighlightRules.getEndRule = function (start) {\n return {\n token: \"comment.doc\",\n regex: \"\\\\*\\\\/\",\n next: start\n };\n};\nexports.DocCommentHighlightRules = DocCommentHighlightRules;\n\n});\n\nace.define(\"ace/mode/golang_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/doc_comment_highlight_rules\",\"ace/mode/text_highlight_rules\"], function(require, exports, module){var oop = require(\"../lib/oop\");\nvar DocCommentHighlightRules = require(\"./doc_comment_highlight_rules\").DocCommentHighlightRules;\nvar TextHighlightRules = require(\"./text_highlight_rules\").TextHighlightRules;\nvar GolangHighlightRules = function () {\n var keywords = (\"else|break|case|return|goto|if|const|select|\" +\n \"continue|struct|default|switch|for|range|\" +\n \"func|import|package|chan|defer|fallthrough|go|interface|map|range|\" +\n \"select|type|var\");\n var builtinTypes = (\"string|uint8|uint16|uint32|uint64|int8|int16|int32|int64|float32|\" +\n \"float64|complex64|complex128|byte|rune|uint|int|uintptr|bool|error\");\n var builtinFunctions = (\"new|close|cap|copy|panic|panicln|print|println|len|make|delete|real|recover|imag|append\");\n var builtinConstants = (\"nil|true|false|iota\");\n var keywordMapper = this.createKeywordMapper({\n \"keyword\": keywords,\n \"constant.language\": builtinConstants,\n \"support.function\": builtinFunctions,\n \"support.type\": builtinTypes\n }, \"\");\n var stringEscapeRe = \"\\\\\\\\(?:[0-7]{3}|x\\\\h{2}|u{4}|U\\\\h{6}|[abfnrtv'\\\"\\\\\\\\])\".replace(/\\\\h/g, \"[a-fA-F\\\\d]\");\n this.$rules = {\n \"start\": [\n {\n token: \"comment\",\n regex: \"\\\\/\\\\/.*$\"\n },\n DocCommentHighlightRules.getStartRule(\"doc-start\"),\n {\n token: \"comment.start\",\n regex: \"\\\\/\\\\*\",\n next: \"comment\"\n }, {\n token: \"string\",\n regex: /\"(?:[^\"\\\\]|\\\\.)*?\"/\n }, {\n token: \"string\",\n regex: '`',\n next: \"bqstring\"\n }, {\n token: \"constant.numeric\",\n regex: \"'(?:[^\\\\'\\uD800-\\uDBFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|\" + stringEscapeRe.replace('\"', '') + \")'\"\n }, {\n token: \"constant.numeric\",\n regex: \"0[xX][0-9a-fA-F]+\\\\b\"\n }, {\n token: \"constant.numeric\",\n regex: \"[+-]?\\\\d+(?:(?:\\\\.\\\\d*)?(?:[eE][+-]?\\\\d+)?)?\\\\b\"\n }, {\n token: [\"keyword\", \"text\", \"entity.name.function\"],\n regex: \"(func)(\\\\s+)([a-zA-Z_$][a-zA-Z0-9_$]*)\\\\b\"\n }, {\n token: function (val) {\n if (val[val.length - 1] == \"(\") {\n return [{\n type: keywordMapper(val.slice(0, -1)) || \"support.function\",\n value: val.slice(0, -1)\n }, {\n type: \"paren.lparen\",\n value: val.slice(-1)\n }];\n }\n return keywordMapper(val) || \"identifier\";\n },\n regex: \"[a-zA-Z_$][a-zA-Z0-9_$]*\\\\b\\\\(?\"\n }, {\n token: \"keyword.operator\",\n regex: \"!|\\\\$|%|&|\\\\*|\\\\-\\\\-|\\\\-|\\\\+\\\\+|\\\\+|~|==|=|!=|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\\\|\\\\||\\\\?\\\\:|\\\\*=|%=|\\\\+=|\\\\-=|&=|\\\\^=\"\n }, {\n token: \"punctuation.operator\",\n regex: \"\\\\?|\\\\:|\\\\,|\\\\;|\\\\.\"\n }, {\n token: \"paren.lparen\",\n regex: \"[[({]\"\n }, {\n token: \"paren.rparen\",\n regex: \"[\\\\])}]\"\n }, {\n token: \"text\",\n regex: \"\\\\s+\"\n }\n ],\n \"comment\": [\n {\n token: \"comment.end\",\n regex: \"\\\\*\\\\/\",\n next: \"start\"\n }, {\n defaultToken: \"comment\"\n }\n ],\n \"bqstring\": [\n {\n token: \"string\",\n regex: '`',\n next: \"start\"\n }, {\n defaultToken: \"string\"\n }\n ]\n };\n this.embedRules(DocCommentHighlightRules, \"doc-\", [DocCommentHighlightRules.getEndRule(\"start\")]);\n};\noop.inherits(GolangHighlightRules, TextHighlightRules);\nexports.GolangHighlightRules = GolangHighlightRules;\n\n});\n\nace.define(\"ace/mode/matching_brace_outdent\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar Range = require(\"../range\").Range;\nvar MatchingBraceOutdent = function () { };\n(function () {\n this.checkOutdent = function (line, input) {\n if (!/^\\s+$/.test(line))\n return false;\n return /^\\s*\\}/.test(input);\n };\n this.autoOutdent = function (doc, row) {\n var line = doc.getLine(row);\n var match = line.match(/^(\\s*\\})/);\n if (!match)\n return 0;\n var column = match[1].length;\n var openBracePos = doc.findMatchingBracket({ row: row, column: column });\n if (!openBracePos || openBracePos.row == row)\n return 0;\n var indent = this.$getIndent(doc.getLine(openBracePos.row));\n doc.replace(new Range(row, 0, row, column - 1), indent);\n };\n this.$getIndent = function (line) {\n return line.match(/^\\s*/)[0];\n };\n}).call(MatchingBraceOutdent.prototype);\nexports.MatchingBraceOutdent = MatchingBraceOutdent;\n\n});\n\nace.define(\"ace/mode/folding/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/range\",\"ace/mode/folding/fold_mode\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../../lib/oop\");\nvar Range = require(\"../../range\").Range;\nvar BaseFoldMode = require(\"./fold_mode\").FoldMode;\nvar FoldMode = exports.FoldMode = function (commentRegex) {\n if (commentRegex) {\n this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.start));\n this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.end));\n }\n};\noop.inherits(FoldMode, BaseFoldMode);\n(function () {\n this.foldingStartMarker = /([\\{\\[\\(])[^\\}\\]\\)]*$|^\\s*(\\/\\*)/;\n this.foldingStopMarker = /^[^\\[\\{\\(]*([\\}\\]\\)])|^[\\s\\*]*(\\*\\/)/;\n this.singleLineBlockCommentRe = /^\\s*(\\/\\*).*\\*\\/\\s*$/;\n this.tripleStarBlockCommentRe = /^\\s*(\\/\\*\\*\\*).*\\*\\/\\s*$/;\n this.startRegionRe = /^\\s*(\\/\\*|\\/\\/)#?region\\b/;\n this._getFoldWidgetBase = this.getFoldWidget;\n this.getFoldWidget = function (session, foldStyle, row) {\n var line = session.getLine(row);\n if (this.singleLineBlockCommentRe.test(line)) {\n if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line))\n return \"\";\n }\n var fw = this._getFoldWidgetBase(session, foldStyle, row);\n if (!fw && this.startRegionRe.test(line))\n return \"start\"; // lineCommentRegionStart\n return fw;\n };\n this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) {\n var line = session.getLine(row);\n if (this.startRegionRe.test(line))\n return this.getCommentRegionBlock(session, line, row);\n var match = line.match(this.foldingStartMarker);\n if (match) {\n var i = match.index;\n if (match[1])\n return this.openingBracketBlock(session, match[1], row, i);\n var range = session.getCommentFoldRange(row, i + match[0].length, 1);\n if (range && !range.isMultiLine()) {\n if (forceMultiline) {\n range = this.getSectionRange(session, row);\n }\n else if (foldStyle != \"all\")\n range = null;\n }\n return range;\n }\n if (foldStyle === \"markbegin\")\n return;\n var match = line.match(this.foldingStopMarker);\n if (match) {\n var i = match.index + match[0].length;\n if (match[1])\n return this.closingBracketBlock(session, match[1], row, i);\n return session.getCommentFoldRange(row, i, -1);\n }\n };\n this.getSectionRange = function (session, row) {\n var line = session.getLine(row);\n var startIndent = line.search(/\\S/);\n var startRow = row;\n var startColumn = line.length;\n row = row + 1;\n var endRow = row;\n var maxRow = session.getLength();\n while (++row < maxRow) {\n line = session.getLine(row);\n var indent = line.search(/\\S/);\n if (indent === -1)\n continue;\n if (startIndent > indent)\n break;\n var subRange = this.getFoldWidgetRange(session, \"all\", row);\n if (subRange) {\n if (subRange.start.row <= startRow) {\n break;\n }\n else if (subRange.isMultiLine()) {\n row = subRange.end.row;\n }\n else if (startIndent == indent) {\n break;\n }\n }\n endRow = row;\n }\n return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);\n };\n this.getCommentRegionBlock = function (session, line, row) {\n var startColumn = line.search(/\\s*$/);\n var maxRow = session.getLength();\n var startRow = row;\n var re = /^\\s*(?:\\/\\*|\\/\\/|--)#?(end)?region\\b/;\n var depth = 1;\n while (++row < maxRow) {\n line = session.getLine(row);\n var m = re.exec(line);\n if (!m)\n continue;\n if (m[1])\n depth--;\n else\n depth++;\n if (!depth)\n break;\n }\n var endRow = row;\n if (endRow > startRow) {\n return new Range(startRow, startColumn, endRow, line.length);\n }\n };\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/golang\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/golang_highlight_rules\",\"ace/mode/matching_brace_outdent\",\"ace/mode/folding/cstyle\"], function(require, exports, module){var oop = require(\"../lib/oop\");\nvar TextMode = require(\"./text\").Mode;\nvar GolangHighlightRules = require(\"./golang_highlight_rules\").GolangHighlightRules;\nvar MatchingBraceOutdent = require(\"./matching_brace_outdent\").MatchingBraceOutdent;\nvar CStyleFoldMode = require(\"./folding/cstyle\").FoldMode;\nvar Mode = function () {\n this.HighlightRules = GolangHighlightRules;\n this.$outdent = new MatchingBraceOutdent();\n this.foldingRules = new CStyleFoldMode();\n this.$behaviour = this.$defaultBehaviour;\n};\noop.inherits(Mode, TextMode);\n(function () {\n this.lineCommentStart = \"//\";\n this.blockComment = { start: \"/*\", end: \"*/\" };\n this.getNextLineIndent = function (state, line, tab) {\n var indent = this.$getIndent(line);\n var tokenizedLine = this.getTokenizer().getLineTokens(line, state);\n var tokens = tokenizedLine.tokens;\n var endState = tokenizedLine.state;\n if (tokens.length && tokens[tokens.length - 1].type == \"comment\") {\n return indent;\n }\n if (state == \"start\") {\n var match = line.match(/^.*[\\{\\(\\[]\\s*$/);\n if (match) {\n indent += tab;\n }\n }\n return indent;\n }; //end getNextLineIndent\n this.checkOutdent = function (state, line, input) {\n return this.$outdent.checkOutdent(line, input);\n };\n this.autoOutdent = function (state, doc, row) {\n this.$outdent.autoOutdent(doc, row);\n };\n this.$id = \"ace/mode/golang\";\n}).call(Mode.prototype);\nexports.Mode = Mode;\n\n}); (function() {\n ace.require([\"ace/mode/golang\"], function(m) {\n if (typeof module == \"object\" && typeof exports == \"object\" && module) {\n module.exports = m;\n }\n });\n })();\n ","ace.define(\"ace/mode/jsdoc_comment_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar TextHighlightRules = require(\"./text_highlight_rules\").TextHighlightRules;\nvar JsDocCommentHighlightRules = function () {\n this.$rules = {\n \"start\": [\n {\n token: [\"comment.doc.tag\", \"comment.doc.text\", \"lparen.doc\"],\n regex: \"(@(?:param|member|typedef|property|namespace|var|const|callback))(\\\\s*)({)\",\n push: [\n {\n token: \"lparen.doc\",\n regex: \"{\",\n push: [\n {\n include: \"doc-syntax\"\n }, {\n token: \"rparen.doc\",\n regex: \"}|(?=$)\",\n next: \"pop\"\n }\n ]\n }, {\n token: [\"rparen.doc\", \"text.doc\", \"variable.parameter.doc\", \"lparen.doc\", \"variable.parameter.doc\", \"rparen.doc\"],\n regex: /(})(\\s*)(?:([\\w=:\\/\\.]+)|(?:(\\[)([\\w=:\\/\\.]+)(\\])))/,\n next: \"pop\"\n }, {\n token: \"rparen.doc\",\n regex: \"}|(?=$)\",\n next: \"pop\"\n }, {\n include: \"doc-syntax\"\n }, {\n defaultToken: \"text.doc\"\n }\n ]\n }, {\n token: [\"comment.doc.tag\", \"text.doc\", \"lparen.doc\"],\n regex: \"(@(?:returns?|yields|type|this|suppress|public|protected|private|package|modifies|\"\n + \"implements|external|exception|throws|enum|define|extends))(\\\\s*)({)\",\n push: [\n {\n token: \"lparen.doc\",\n regex: \"{\",\n push: [\n {\n include: \"doc-syntax\"\n }, {\n token: \"rparen.doc\",\n regex: \"}|(?=$)\",\n next: \"pop\"\n }\n ]\n }, {\n token: \"rparen.doc\",\n regex: \"}|(?=$)\",\n next: \"pop\"\n }, {\n include: \"doc-syntax\"\n }, {\n defaultToken: \"text.doc\"\n }\n ]\n }, {\n token: [\"comment.doc.tag\", \"text.doc\", \"variable.parameter.doc\"],\n regex: \"(@(?:alias|memberof|instance|module|name|lends|namespace|external|this|template|\"\n + \"requires|param|implements|function|extends|typedef|mixes|constructor|var|\"\n + \"memberof\\\\!|event|listens|exports|class|constructs|interface|emits|fires|\"\n + \"throws|const|callback|borrows|augments))(\\\\s+)(\\\\w[\\\\w#\\.:\\/~\\\"\\\\-]*)?\"\n }, {\n token: [\"comment.doc.tag\", \"text.doc\", \"variable.parameter.doc\"],\n regex: \"(@method)(\\\\s+)(\\\\w[\\\\w\\.\\\\(\\\\)]*)\"\n }, {\n token: \"comment.doc.tag\",\n regex: \"@access\\\\s+(?:private|public|protected)\"\n }, {\n token: \"comment.doc.tag\",\n regex: \"@kind\\\\s+(?:class|constant|event|external|file|function|member|mixin|module|namespace|typedef)\"\n }, {\n token: \"comment.doc.tag\",\n regex: \"@\\\\w+(?=\\\\s|$)\"\n },\n JsDocCommentHighlightRules.getTagRule(),\n {\n defaultToken: \"comment.doc\",\n caseInsensitive: true\n }\n ],\n \"doc-syntax\": [{\n token: \"operator.doc\",\n regex: /[|:]/\n }, {\n token: \"paren.doc\",\n regex: /[\\[\\]]/\n }]\n };\n this.normalizeRules();\n};\noop.inherits(JsDocCommentHighlightRules, TextHighlightRules);\nJsDocCommentHighlightRules.getTagRule = function (start) {\n return {\n token: \"comment.doc.tag.storage.type\",\n regex: \"\\\\b(?:TODO|FIXME|XXX|HACK)\\\\b\"\n };\n};\nJsDocCommentHighlightRules.getStartRule = function (start) {\n return {\n token: \"comment.doc\",\n regex: \"\\\\/\\\\*(?=\\\\*)\",\n next: start\n };\n};\nJsDocCommentHighlightRules.getEndRule = function (start) {\n return {\n token: \"comment.doc\",\n regex: \"\\\\*\\\\/\",\n next: start\n };\n};\nexports.JsDocCommentHighlightRules = JsDocCommentHighlightRules;\n\n});\n\nace.define(\"ace/mode/javascript_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/jsdoc_comment_highlight_rules\",\"ace/mode/text_highlight_rules\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar DocCommentHighlightRules = require(\"./jsdoc_comment_highlight_rules\").JsDocCommentHighlightRules;\nvar TextHighlightRules = require(\"./text_highlight_rules\").TextHighlightRules;\nvar identifierRe = \"[a-zA-Z\\\\$_\\u00a1-\\uffff][a-zA-Z\\\\d\\\\$_\\u00a1-\\uffff]*\";\nvar JavaScriptHighlightRules = function (options) {\n var keywordMapper = this.createKeywordMapper({\n \"variable.language\": \"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Symbol|\" + // Constructors\n \"Namespace|QName|XML|XMLList|\" + // E4X\n \"ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|\" +\n \"Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|\" +\n \"Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|\" + // Errors\n \"SyntaxError|TypeError|URIError|\" +\n \"decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|\" + // Non-constructor functions\n \"isNaN|parseFloat|parseInt|\" +\n \"JSON|Math|\" + // Other\n \"this|arguments|prototype|window|document\",\n \"keyword\": \"const|yield|import|get|set|async|await|\" +\n \"break|case|catch|continue|default|delete|do|else|finally|for|function|\" +\n \"if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|\" +\n \"__parent__|__count__|escape|unescape|with|__proto__|\" +\n \"class|enum|extends|super|export|implements|private|public|interface|package|protected|static|constructor\",\n \"storage.type\": \"const|let|var|function\",\n \"constant.language\": \"null|Infinity|NaN|undefined\",\n \"support.function\": \"alert\",\n \"constant.language.boolean\": \"true|false\"\n }, \"identifier\");\n var kwBeforeRe = \"case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void\";\n var escapedRe = \"\\\\\\\\(?:x[0-9a-fA-F]{2}|\" + // hex\n \"u[0-9a-fA-F]{4}|\" + // unicode\n \"u{[0-9a-fA-F]{1,6}}|\" + // es6 unicode\n \"[0-2][0-7]{0,2}|\" + // oct\n \"3[0-7][0-7]?|\" + // oct\n \"[4-7][0-7]?|\" + //oct\n \".)\";\n this.$rules = {\n \"no_regex\": [\n DocCommentHighlightRules.getStartRule(\"doc-start\"),\n comments(\"no_regex\"),\n {\n token: \"string\",\n regex: \"'(?=.)\",\n next: \"qstring\"\n }, {\n token: \"string\",\n regex: '\"(?=.)',\n next: \"qqstring\"\n }, {\n token: \"constant.numeric\",\n regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\\b/\n }, {\n token: \"constant.numeric\",\n regex: /(?:\\d\\d*(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+\\b)?/\n }, {\n token: [\n \"storage.type\", \"punctuation.operator\", \"support.function\",\n \"punctuation.operator\", \"entity.name.function\", \"text\", \"keyword.operator\"\n ],\n regex: \"(\" + identifierRe + \")(\\\\.)(prototype)(\\\\.)(\" + identifierRe + \")(\\\\s*)(=)\",\n next: \"function_arguments\"\n }, {\n token: [\n \"storage.type\", \"punctuation.operator\", \"entity.name.function\", \"text\",\n \"keyword.operator\", \"text\", \"storage.type\", \"text\", \"paren.lparen\"\n ],\n regex: \"(\" + identifierRe + \")(\\\\.)(\" + identifierRe + \")(\\\\s*)(=)(\\\\s*)(function\\\\*?)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token: [\n \"entity.name.function\", \"text\", \"keyword.operator\", \"text\", \"storage.type\",\n \"text\", \"paren.lparen\"\n ],\n regex: \"(\" + identifierRe + \")(\\\\s*)(=)(\\\\s*)(function\\\\*?)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token: [\n \"storage.type\", \"punctuation.operator\", \"entity.name.function\", \"text\",\n \"keyword.operator\", \"text\",\n \"storage.type\", \"text\", \"entity.name.function\", \"text\", \"paren.lparen\"\n ],\n regex: \"(\" + identifierRe + \")(\\\\.)(\" + identifierRe + \")(\\\\s*)(=)(\\\\s*)(function\\\\*?)(\\\\s+)(\\\\w+)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token: [\n \"storage.type\", \"text\", \"entity.name.function\", \"text\", \"paren.lparen\"\n ],\n regex: \"(function\\\\*?)(\\\\s+)(\" + identifierRe + \")(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token: [\n \"entity.name.function\", \"text\", \"punctuation.operator\",\n \"text\", \"storage.type\", \"text\", \"paren.lparen\"\n ],\n regex: \"(\" + identifierRe + \")(\\\\s*)(:)(\\\\s*)(function\\\\*?)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token: [\n \"text\", \"text\", \"storage.type\", \"text\", \"paren.lparen\"\n ],\n regex: \"(:)(\\\\s*)(function\\\\*?)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token: \"keyword\",\n regex: \"from(?=\\\\s*('|\\\"))\"\n }, {\n token: \"keyword\",\n regex: \"(?:\" + kwBeforeRe + \")\\\\b\",\n next: \"start\"\n }, {\n token: \"support.constant\",\n regex: /that\\b/\n }, {\n token: [\"storage.type\", \"punctuation.operator\", \"support.function.firebug\"],\n regex: /(console)(\\.)(warn|info|log|error|time|trace|timeEnd|assert)\\b/\n }, {\n token: keywordMapper,\n regex: identifierRe\n }, {\n token: \"punctuation.operator\",\n regex: /[.](?![.])/,\n next: \"property\"\n }, {\n token: \"storage.type\",\n regex: /=>/,\n next: \"start\"\n }, {\n token: \"keyword.operator\",\n regex: /--|\\+\\+|\\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\\|\\||\\?:|[!$%&*+\\-~\\/^]=?/,\n next: \"start\"\n }, {\n token: \"punctuation.operator\",\n regex: /[?:,;.]/,\n next: \"start\"\n }, {\n token: \"paren.lparen\",\n regex: /[\\[({]/,\n next: \"start\"\n }, {\n token: \"paren.rparen\",\n regex: /[\\])}]/\n }, {\n token: \"comment\",\n regex: /^#!.*$/\n }\n ],\n property: [{\n token: \"text\",\n regex: \"\\\\s+\"\n }, {\n token: [\n \"storage.type\", \"punctuation.operator\", \"entity.name.function\", \"text\",\n \"keyword.operator\", \"text\",\n \"storage.type\", \"text\", \"entity.name.function\", \"text\", \"paren.lparen\"\n ],\n regex: \"(\" + identifierRe + \")(\\\\.)(\" + identifierRe + \")(\\\\s*)(=)(\\\\s*)(function\\\\*?)(?:(\\\\s+)(\\\\w+))?(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token: \"punctuation.operator\",\n regex: /[.](?![.])/\n }, {\n token: \"support.function\",\n regex: /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|lter|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward|rEach)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\\b(?=\\()/\n }, {\n token: \"support.function.dom\",\n regex: /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\\b(?=\\()/\n }, {\n token: \"support.constant\",\n regex: /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\\b/\n }, {\n token: \"identifier\",\n regex: identifierRe\n }, {\n regex: \"\",\n token: \"empty\",\n next: \"no_regex\"\n }\n ],\n \"start\": [\n DocCommentHighlightRules.getStartRule(\"doc-start\"),\n comments(\"start\"),\n {\n token: \"string.regexp\",\n regex: \"\\\\/\",\n next: \"regex\"\n }, {\n token: \"text\",\n regex: \"\\\\s+|^$\",\n next: \"start\"\n }, {\n token: \"empty\",\n regex: \"\",\n next: \"no_regex\"\n }\n ],\n \"regex\": [\n {\n token: \"regexp.keyword.operator\",\n regex: \"\\\\\\\\(?:u[\\\\da-fA-F]{4}|x[\\\\da-fA-F]{2}|.)\"\n }, {\n token: \"string.regexp\",\n regex: \"/[sxngimy]*\",\n next: \"no_regex\"\n }, {\n token: \"invalid\",\n regex: /\\{\\d+\\b,?\\d*\\}[+*]|[+*$^?][+*]|[$^][?]|\\?{3,}/\n }, {\n token: \"constant.language.escape\",\n regex: /\\(\\?[:=!]|\\)|\\{\\d+\\b,?\\d*\\}|[+*]\\?|[()$^+*?.]/\n }, {\n token: \"constant.language.delimiter\",\n regex: /\\|/\n }, {\n token: \"constant.language.escape\",\n regex: /\\[\\^?/,\n next: \"regex_character_class\"\n }, {\n token: \"empty\",\n regex: \"$\",\n next: \"no_regex\"\n }, {\n defaultToken: \"string.regexp\"\n }\n ],\n \"regex_character_class\": [\n {\n token: \"regexp.charclass.keyword.operator\",\n regex: \"\\\\\\\\(?:u[\\\\da-fA-F]{4}|x[\\\\da-fA-F]{2}|.)\"\n }, {\n token: \"constant.language.escape\",\n regex: \"]\",\n next: \"regex\"\n }, {\n token: \"constant.language.escape\",\n regex: \"-\"\n }, {\n token: \"empty\",\n regex: \"$\",\n next: \"no_regex\"\n }, {\n defaultToken: \"string.regexp.charachterclass\"\n }\n ],\n \"default_parameter\": [\n {\n token: \"string\",\n regex: \"'(?=.)\",\n push: [\n {\n token: \"string\",\n regex: \"'|$\",\n next: \"pop\"\n }, {\n include: \"qstring\"\n }\n ]\n }, {\n token: \"string\",\n regex: '\"(?=.)',\n push: [\n {\n token: \"string\",\n regex: '\"|$',\n next: \"pop\"\n }, {\n include: \"qqstring\"\n }\n ]\n }, {\n token: \"constant.language\",\n regex: \"null|Infinity|NaN|undefined\"\n }, {\n token: \"constant.numeric\",\n regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\\b/\n }, {\n token: \"constant.numeric\",\n regex: /(?:\\d\\d*(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+\\b)?/\n }, {\n token: \"punctuation.operator\",\n regex: \",\",\n next: \"function_arguments\"\n }, {\n token: \"text\",\n regex: \"\\\\s+\"\n }, {\n token: \"punctuation.operator\",\n regex: \"$\"\n }, {\n token: \"empty\",\n regex: \"\",\n next: \"no_regex\"\n }\n ],\n \"function_arguments\": [\n comments(\"function_arguments\"),\n {\n token: \"variable.parameter\",\n regex: identifierRe\n }, {\n token: \"punctuation.operator\",\n regex: \",\"\n }, {\n token: \"text\",\n regex: \"\\\\s+\"\n }, {\n token: \"punctuation.operator\",\n regex: \"$\"\n }, {\n token: \"empty\",\n regex: \"\",\n next: \"no_regex\"\n }\n ],\n \"qqstring\": [\n {\n token: \"constant.language.escape\",\n regex: escapedRe\n }, {\n token: \"string\",\n regex: \"\\\\\\\\$\",\n consumeLineEnd: true\n }, {\n token: \"string\",\n regex: '\"|$',\n next: \"no_regex\"\n }, {\n defaultToken: \"string\"\n }\n ],\n \"qstring\": [\n {\n token: \"constant.language.escape\",\n regex: escapedRe\n }, {\n token: \"string\",\n regex: \"\\\\\\\\$\",\n consumeLineEnd: true\n }, {\n token: \"string\",\n regex: \"'|$\",\n next: \"no_regex\"\n }, {\n defaultToken: \"string\"\n }\n ]\n };\n if (!options || !options.noES6) {\n this.$rules.no_regex.unshift({\n regex: \"[{}]\", onMatch: function (val, state, stack) {\n this.next = val == \"{\" ? this.nextState : \"\";\n if (val == \"{\" && stack.length) {\n stack.unshift(\"start\", state);\n }\n else if (val == \"}\" && stack.length) {\n stack.shift();\n this.next = stack.shift();\n if (this.next.indexOf(\"string\") != -1 || this.next.indexOf(\"jsx\") != -1)\n return \"paren.quasi.end\";\n }\n return val == \"{\" ? \"paren.lparen\" : \"paren.rparen\";\n },\n nextState: \"start\"\n }, {\n token: \"string.quasi.start\",\n regex: /`/,\n push: [{\n token: \"constant.language.escape\",\n regex: escapedRe\n }, {\n token: \"paren.quasi.start\",\n regex: /\\${/,\n push: \"start\"\n }, {\n token: \"string.quasi.end\",\n regex: /`/,\n next: \"pop\"\n }, {\n defaultToken: \"string.quasi\"\n }]\n }, {\n token: [\"variable.parameter\", \"text\"],\n regex: \"(\" + identifierRe + \")(\\\\s*)(?=\\\\=>)\"\n }, {\n token: \"paren.lparen\",\n regex: \"(\\\\()(?=.+\\\\s*=>)\",\n next: \"function_arguments\"\n }, {\n token: \"variable.language\",\n regex: \"(?:(?:(?:Weak)?(?:Set|Map))|Promise)\\\\b\"\n });\n this.$rules[\"function_arguments\"].unshift({\n token: \"keyword.operator\",\n regex: \"=\",\n next: \"default_parameter\"\n }, {\n token: \"keyword.operator\",\n regex: \"\\\\.{3}\"\n });\n this.$rules[\"property\"].unshift({\n token: \"support.function\",\n regex: \"(findIndex|repeat|startsWith|endsWith|includes|isSafeInteger|trunc|cbrt|log2|log10|sign|then|catch|\"\n + \"finally|resolve|reject|race|any|all|allSettled|keys|entries|isInteger)\\\\b(?=\\\\()\"\n }, {\n token: \"constant.language\",\n regex: \"(?:MAX_SAFE_INTEGER|MIN_SAFE_INTEGER|EPSILON)\\\\b\"\n });\n if (!options || options.jsx != false)\n JSX.call(this);\n }\n this.embedRules(DocCommentHighlightRules, \"doc-\", [DocCommentHighlightRules.getEndRule(\"no_regex\")]);\n this.normalizeRules();\n};\noop.inherits(JavaScriptHighlightRules, TextHighlightRules);\nfunction JSX() {\n var tagRegex = identifierRe.replace(\"\\\\d\", \"\\\\d\\\\-\");\n var jsxTag = {\n onMatch: function (val, state, stack) {\n var offset = val.charAt(1) == \"/\" ? 2 : 1;\n if (offset == 1) {\n if (state != this.nextState)\n stack.unshift(this.next, this.nextState, 0);\n else\n stack.unshift(this.next);\n stack[2]++;\n }\n else if (offset == 2) {\n if (state == this.nextState) {\n stack[1]--;\n if (!stack[1] || stack[1] < 0) {\n stack.shift();\n stack.shift();\n }\n }\n }\n return [{\n type: \"meta.tag.punctuation.\" + (offset == 1 ? \"\" : \"end-\") + \"tag-open.xml\",\n value: val.slice(0, offset)\n }, {\n type: \"meta.tag.tag-name.xml\",\n value: val.substr(offset)\n }];\n },\n regex: \"\",\n onMatch: function (value, currentState, stack) {\n if (currentState == stack[0])\n stack.shift();\n if (value.length == 2) {\n if (stack[0] == this.nextState)\n stack[1]--;\n if (!stack[1] || stack[1] < 0) {\n stack.splice(0, 2);\n }\n }\n this.next = stack[0] || \"start\";\n return [{ type: this.token, value: value }];\n },\n nextState: \"jsx\"\n },\n jsxJsRule,\n comments(\"jsxAttributes\"),\n {\n token: \"entity.other.attribute-name.xml\",\n regex: tagRegex\n }, {\n token: \"keyword.operator.attribute-equals.xml\",\n regex: \"=\"\n }, {\n token: \"text.tag-whitespace.xml\",\n regex: \"\\\\s+\"\n }, {\n token: \"string.attribute-value.xml\",\n regex: \"'\",\n stateName: \"jsx_attr_q\",\n push: [\n { token: \"string.attribute-value.xml\", regex: \"'\", next: \"pop\" },\n { include: \"reference\" },\n { defaultToken: \"string.attribute-value.xml\" }\n ]\n }, {\n token: \"string.attribute-value.xml\",\n regex: '\"',\n stateName: \"jsx_attr_qq\",\n push: [\n { token: \"string.attribute-value.xml\", regex: '\"', next: \"pop\" },\n { include: \"reference\" },\n { defaultToken: \"string.attribute-value.xml\" }\n ]\n },\n jsxTag\n ];\n this.$rules.reference = [{\n token: \"constant.language.escape.reference.xml\",\n regex: \"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\\\.-]+;)\"\n }];\n}\nfunction comments(next) {\n return [\n {\n token: \"comment\",\n regex: /\\/\\*/,\n next: [\n DocCommentHighlightRules.getTagRule(),\n { token: \"comment\", regex: \"\\\\*\\\\/\", next: next || \"pop\" },\n { defaultToken: \"comment\", caseInsensitive: true }\n ]\n }, {\n token: \"comment\",\n regex: \"\\\\/\\\\/\",\n next: [\n DocCommentHighlightRules.getTagRule(),\n { token: \"comment\", regex: \"$|^\", next: next || \"pop\" },\n { defaultToken: \"comment\", caseInsensitive: true }\n ]\n }\n ];\n}\nexports.JavaScriptHighlightRules = JavaScriptHighlightRules;\n\n});\n\nace.define(\"ace/mode/matching_brace_outdent\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar Range = require(\"../range\").Range;\nvar MatchingBraceOutdent = function () { };\n(function () {\n this.checkOutdent = function (line, input) {\n if (!/^\\s+$/.test(line))\n return false;\n return /^\\s*\\}/.test(input);\n };\n this.autoOutdent = function (doc, row) {\n var line = doc.getLine(row);\n var match = line.match(/^(\\s*\\})/);\n if (!match)\n return 0;\n var column = match[1].length;\n var openBracePos = doc.findMatchingBracket({ row: row, column: column });\n if (!openBracePos || openBracePos.row == row)\n return 0;\n var indent = this.$getIndent(doc.getLine(openBracePos.row));\n doc.replace(new Range(row, 0, row, column - 1), indent);\n };\n this.$getIndent = function (line) {\n return line.match(/^\\s*/)[0];\n };\n}).call(MatchingBraceOutdent.prototype);\nexports.MatchingBraceOutdent = MatchingBraceOutdent;\n\n});\n\nace.define(\"ace/mode/folding/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/range\",\"ace/mode/folding/fold_mode\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../../lib/oop\");\nvar Range = require(\"../../range\").Range;\nvar BaseFoldMode = require(\"./fold_mode\").FoldMode;\nvar FoldMode = exports.FoldMode = function (commentRegex) {\n if (commentRegex) {\n this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.start));\n this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.end));\n }\n};\noop.inherits(FoldMode, BaseFoldMode);\n(function () {\n this.foldingStartMarker = /([\\{\\[\\(])[^\\}\\]\\)]*$|^\\s*(\\/\\*)/;\n this.foldingStopMarker = /^[^\\[\\{\\(]*([\\}\\]\\)])|^[\\s\\*]*(\\*\\/)/;\n this.singleLineBlockCommentRe = /^\\s*(\\/\\*).*\\*\\/\\s*$/;\n this.tripleStarBlockCommentRe = /^\\s*(\\/\\*\\*\\*).*\\*\\/\\s*$/;\n this.startRegionRe = /^\\s*(\\/\\*|\\/\\/)#?region\\b/;\n this._getFoldWidgetBase = this.getFoldWidget;\n this.getFoldWidget = function (session, foldStyle, row) {\n var line = session.getLine(row);\n if (this.singleLineBlockCommentRe.test(line)) {\n if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line))\n return \"\";\n }\n var fw = this._getFoldWidgetBase(session, foldStyle, row);\n if (!fw && this.startRegionRe.test(line))\n return \"start\"; // lineCommentRegionStart\n return fw;\n };\n this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) {\n var line = session.getLine(row);\n if (this.startRegionRe.test(line))\n return this.getCommentRegionBlock(session, line, row);\n var match = line.match(this.foldingStartMarker);\n if (match) {\n var i = match.index;\n if (match[1])\n return this.openingBracketBlock(session, match[1], row, i);\n var range = session.getCommentFoldRange(row, i + match[0].length, 1);\n if (range && !range.isMultiLine()) {\n if (forceMultiline) {\n range = this.getSectionRange(session, row);\n }\n else if (foldStyle != \"all\")\n range = null;\n }\n return range;\n }\n if (foldStyle === \"markbegin\")\n return;\n var match = line.match(this.foldingStopMarker);\n if (match) {\n var i = match.index + match[0].length;\n if (match[1])\n return this.closingBracketBlock(session, match[1], row, i);\n return session.getCommentFoldRange(row, i, -1);\n }\n };\n this.getSectionRange = function (session, row) {\n var line = session.getLine(row);\n var startIndent = line.search(/\\S/);\n var startRow = row;\n var startColumn = line.length;\n row = row + 1;\n var endRow = row;\n var maxRow = session.getLength();\n while (++row < maxRow) {\n line = session.getLine(row);\n var indent = line.search(/\\S/);\n if (indent === -1)\n continue;\n if (startIndent > indent)\n break;\n var subRange = this.getFoldWidgetRange(session, \"all\", row);\n if (subRange) {\n if (subRange.start.row <= startRow) {\n break;\n }\n else if (subRange.isMultiLine()) {\n row = subRange.end.row;\n }\n else if (startIndent == indent) {\n break;\n }\n }\n endRow = row;\n }\n return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);\n };\n this.getCommentRegionBlock = function (session, line, row) {\n var startColumn = line.search(/\\s*$/);\n var maxRow = session.getLength();\n var startRow = row;\n var re = /^\\s*(?:\\/\\*|\\/\\/|--)#?(end)?region\\b/;\n var depth = 1;\n while (++row < maxRow) {\n line = session.getLine(row);\n var m = re.exec(line);\n if (!m)\n continue;\n if (m[1])\n depth--;\n else\n depth++;\n if (!depth)\n break;\n }\n var endRow = row;\n if (endRow > startRow) {\n return new Range(startRow, startColumn, endRow, line.length);\n }\n };\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/javascript\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/javascript_highlight_rules\",\"ace/mode/matching_brace_outdent\",\"ace/worker/worker_client\",\"ace/mode/behaviour/cstyle\",\"ace/mode/folding/cstyle\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar TextMode = require(\"./text\").Mode;\nvar JavaScriptHighlightRules = require(\"./javascript_highlight_rules\").JavaScriptHighlightRules;\nvar MatchingBraceOutdent = require(\"./matching_brace_outdent\").MatchingBraceOutdent;\nvar WorkerClient = require(\"../worker/worker_client\").WorkerClient;\nvar CstyleBehaviour = require(\"./behaviour/cstyle\").CstyleBehaviour;\nvar CStyleFoldMode = require(\"./folding/cstyle\").FoldMode;\nvar Mode = function () {\n this.HighlightRules = JavaScriptHighlightRules;\n this.$outdent = new MatchingBraceOutdent();\n this.$behaviour = new CstyleBehaviour();\n this.foldingRules = new CStyleFoldMode();\n};\noop.inherits(Mode, TextMode);\n(function () {\n this.lineCommentStart = \"//\";\n this.blockComment = { start: \"/*\", end: \"*/\" };\n this.$quotes = { '\"': '\"', \"'\": \"'\", \"`\": \"`\" };\n this.$pairQuotesAfter = {\n \"`\": /\\w/\n };\n this.getNextLineIndent = function (state, line, tab) {\n var indent = this.$getIndent(line);\n var tokenizedLine = this.getTokenizer().getLineTokens(line, state);\n var tokens = tokenizedLine.tokens;\n var endState = tokenizedLine.state;\n if (tokens.length && tokens[tokens.length - 1].type == \"comment\") {\n return indent;\n }\n if (state == \"start\" || state == \"no_regex\") {\n var match = line.match(/^.*(?:\\bcase\\b.*:|[\\{\\(\\[])\\s*$/);\n if (match) {\n indent += tab;\n }\n }\n else if (state == \"doc-start\") {\n if (endState == \"start\" || endState == \"no_regex\") {\n return \"\";\n }\n var match = line.match(/^\\s*(\\/?)\\*/);\n if (match) {\n if (match[1]) {\n indent += \" \";\n }\n indent += \"* \";\n }\n }\n return indent;\n };\n this.checkOutdent = function (state, line, input) {\n return this.$outdent.checkOutdent(line, input);\n };\n this.autoOutdent = function (state, doc, row) {\n this.$outdent.autoOutdent(doc, row);\n };\n this.createWorker = function (session) {\n var worker = new WorkerClient([\"ace\"], \"ace/mode/javascript_worker\", \"JavaScriptWorker\");\n worker.attachToDocument(session.getDocument());\n worker.on(\"annotate\", function (results) {\n session.setAnnotations(results.data);\n });\n worker.on(\"terminate\", function () {\n session.clearAnnotations();\n });\n return worker;\n };\n this.$id = \"ace/mode/javascript\";\n this.snippetFileId = \"ace/snippets/javascript\";\n}).call(Mode.prototype);\nexports.Mode = Mode;\n\n}); (function() {\n ace.require([\"ace/mode/javascript\"], function(m) {\n if (typeof module == \"object\" && typeof exports == \"object\" && module) {\n module.exports = m;\n }\n });\n })();\n ","ace.define(\"ace/mode/json_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar TextHighlightRules = require(\"./text_highlight_rules\").TextHighlightRules;\nvar JsonHighlightRules = function () {\n this.$rules = {\n \"start\": [\n {\n token: \"variable\",\n regex: '[\"](?:(?:\\\\\\\\.)|(?:[^\"\\\\\\\\]))*?[\"]\\\\s*(?=:)'\n }, {\n token: \"string\",\n regex: '\"',\n next: \"string\"\n }, {\n token: \"constant.numeric\",\n regex: \"0[xX][0-9a-fA-F]+\\\\b\"\n }, {\n token: \"constant.numeric\",\n regex: \"[+-]?\\\\d+(?:(?:\\\\.\\\\d*)?(?:[eE][+-]?\\\\d+)?)?\\\\b\"\n }, {\n token: \"constant.language.boolean\",\n regex: \"(?:true|false)\\\\b\"\n }, {\n token: \"text\",\n regex: \"['](?:(?:\\\\\\\\.)|(?:[^'\\\\\\\\]))*?[']\"\n }, {\n token: \"comment\",\n regex: \"\\\\/\\\\/.*$\"\n }, {\n token: \"comment.start\",\n regex: \"\\\\/\\\\*\",\n next: \"comment\"\n }, {\n token: \"paren.lparen\",\n regex: \"[[({]\"\n }, {\n token: \"paren.rparen\",\n regex: \"[\\\\])}]\"\n }, {\n token: \"punctuation.operator\",\n regex: /[,]/\n }, {\n token: \"text\",\n regex: \"\\\\s+\"\n }\n ],\n \"string\": [\n {\n token: \"constant.language.escape\",\n regex: /\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|[\"\\\\\\/bfnrt])/\n }, {\n token: \"string\",\n regex: '\"|$',\n next: \"start\"\n }, {\n defaultToken: \"string\"\n }\n ],\n \"comment\": [\n {\n token: \"comment.end\",\n regex: \"\\\\*\\\\/\",\n next: \"start\"\n }, {\n defaultToken: \"comment\"\n }\n ]\n };\n};\noop.inherits(JsonHighlightRules, TextHighlightRules);\nexports.JsonHighlightRules = JsonHighlightRules;\n\n});\n\nace.define(\"ace/mode/matching_brace_outdent\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar Range = require(\"../range\").Range;\nvar MatchingBraceOutdent = function () { };\n(function () {\n this.checkOutdent = function (line, input) {\n if (!/^\\s+$/.test(line))\n return false;\n return /^\\s*\\}/.test(input);\n };\n this.autoOutdent = function (doc, row) {\n var line = doc.getLine(row);\n var match = line.match(/^(\\s*\\})/);\n if (!match)\n return 0;\n var column = match[1].length;\n var openBracePos = doc.findMatchingBracket({ row: row, column: column });\n if (!openBracePos || openBracePos.row == row)\n return 0;\n var indent = this.$getIndent(doc.getLine(openBracePos.row));\n doc.replace(new Range(row, 0, row, column - 1), indent);\n };\n this.$getIndent = function (line) {\n return line.match(/^\\s*/)[0];\n };\n}).call(MatchingBraceOutdent.prototype);\nexports.MatchingBraceOutdent = MatchingBraceOutdent;\n\n});\n\nace.define(\"ace/mode/folding/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/range\",\"ace/mode/folding/fold_mode\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../../lib/oop\");\nvar Range = require(\"../../range\").Range;\nvar BaseFoldMode = require(\"./fold_mode\").FoldMode;\nvar FoldMode = exports.FoldMode = function (commentRegex) {\n if (commentRegex) {\n this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.start));\n this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.end));\n }\n};\noop.inherits(FoldMode, BaseFoldMode);\n(function () {\n this.foldingStartMarker = /([\\{\\[\\(])[^\\}\\]\\)]*$|^\\s*(\\/\\*)/;\n this.foldingStopMarker = /^[^\\[\\{\\(]*([\\}\\]\\)])|^[\\s\\*]*(\\*\\/)/;\n this.singleLineBlockCommentRe = /^\\s*(\\/\\*).*\\*\\/\\s*$/;\n this.tripleStarBlockCommentRe = /^\\s*(\\/\\*\\*\\*).*\\*\\/\\s*$/;\n this.startRegionRe = /^\\s*(\\/\\*|\\/\\/)#?region\\b/;\n this._getFoldWidgetBase = this.getFoldWidget;\n this.getFoldWidget = function (session, foldStyle, row) {\n var line = session.getLine(row);\n if (this.singleLineBlockCommentRe.test(line)) {\n if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line))\n return \"\";\n }\n var fw = this._getFoldWidgetBase(session, foldStyle, row);\n if (!fw && this.startRegionRe.test(line))\n return \"start\"; // lineCommentRegionStart\n return fw;\n };\n this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) {\n var line = session.getLine(row);\n if (this.startRegionRe.test(line))\n return this.getCommentRegionBlock(session, line, row);\n var match = line.match(this.foldingStartMarker);\n if (match) {\n var i = match.index;\n if (match[1])\n return this.openingBracketBlock(session, match[1], row, i);\n var range = session.getCommentFoldRange(row, i + match[0].length, 1);\n if (range && !range.isMultiLine()) {\n if (forceMultiline) {\n range = this.getSectionRange(session, row);\n }\n else if (foldStyle != \"all\")\n range = null;\n }\n return range;\n }\n if (foldStyle === \"markbegin\")\n return;\n var match = line.match(this.foldingStopMarker);\n if (match) {\n var i = match.index + match[0].length;\n if (match[1])\n return this.closingBracketBlock(session, match[1], row, i);\n return session.getCommentFoldRange(row, i, -1);\n }\n };\n this.getSectionRange = function (session, row) {\n var line = session.getLine(row);\n var startIndent = line.search(/\\S/);\n var startRow = row;\n var startColumn = line.length;\n row = row + 1;\n var endRow = row;\n var maxRow = session.getLength();\n while (++row < maxRow) {\n line = session.getLine(row);\n var indent = line.search(/\\S/);\n if (indent === -1)\n continue;\n if (startIndent > indent)\n break;\n var subRange = this.getFoldWidgetRange(session, \"all\", row);\n if (subRange) {\n if (subRange.start.row <= startRow) {\n break;\n }\n else if (subRange.isMultiLine()) {\n row = subRange.end.row;\n }\n else if (startIndent == indent) {\n break;\n }\n }\n endRow = row;\n }\n return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);\n };\n this.getCommentRegionBlock = function (session, line, row) {\n var startColumn = line.search(/\\s*$/);\n var maxRow = session.getLength();\n var startRow = row;\n var re = /^\\s*(?:\\/\\*|\\/\\/|--)#?(end)?region\\b/;\n var depth = 1;\n while (++row < maxRow) {\n line = session.getLine(row);\n var m = re.exec(line);\n if (!m)\n continue;\n if (m[1])\n depth--;\n else\n depth++;\n if (!depth)\n break;\n }\n var endRow = row;\n if (endRow > startRow) {\n return new Range(startRow, startColumn, endRow, line.length);\n }\n };\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/json\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/json_highlight_rules\",\"ace/mode/matching_brace_outdent\",\"ace/mode/folding/cstyle\",\"ace/worker/worker_client\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar TextMode = require(\"./text\").Mode;\nvar HighlightRules = require(\"./json_highlight_rules\").JsonHighlightRules;\nvar MatchingBraceOutdent = require(\"./matching_brace_outdent\").MatchingBraceOutdent;\nvar CStyleFoldMode = require(\"./folding/cstyle\").FoldMode;\nvar WorkerClient = require(\"../worker/worker_client\").WorkerClient;\nvar Mode = function () {\n this.HighlightRules = HighlightRules;\n this.$outdent = new MatchingBraceOutdent();\n this.$behaviour = this.$defaultBehaviour;\n this.foldingRules = new CStyleFoldMode();\n};\noop.inherits(Mode, TextMode);\n(function () {\n this.lineCommentStart = \"//\";\n this.blockComment = { start: \"/*\", end: \"*/\" };\n this.getNextLineIndent = function (state, line, tab) {\n var indent = this.$getIndent(line);\n if (state == \"start\") {\n var match = line.match(/^.*[\\{\\(\\[]\\s*$/);\n if (match) {\n indent += tab;\n }\n }\n return indent;\n };\n this.checkOutdent = function (state, line, input) {\n return this.$outdent.checkOutdent(line, input);\n };\n this.autoOutdent = function (state, doc, row) {\n this.$outdent.autoOutdent(doc, row);\n };\n this.createWorker = function (session) {\n var worker = new WorkerClient([\"ace\"], \"ace/mode/json_worker\", \"JsonWorker\");\n worker.attachToDocument(session.getDocument());\n worker.on(\"annotate\", function (e) {\n session.setAnnotations(e.data);\n });\n worker.on(\"terminate\", function () {\n session.clearAnnotations();\n });\n return worker;\n };\n this.$id = \"ace/mode/json\";\n}).call(Mode.prototype);\nexports.Mode = Mode;\n\n}); (function() {\n ace.require([\"ace/mode/json\"], function(m) {\n if (typeof module == \"object\" && typeof exports == \"object\" && module) {\n module.exports = m;\n }\n });\n })();\n ","ace.define(\"ace/mode/doc_comment_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar TextHighlightRules = require(\"./text_highlight_rules\").TextHighlightRules;\nvar DocCommentHighlightRules = function () {\n this.$rules = {\n \"start\": [\n {\n token: \"comment.doc.tag\",\n regex: \"@\\\\w+(?=\\\\s|$)\"\n }, DocCommentHighlightRules.getTagRule(), {\n defaultToken: \"comment.doc\",\n caseInsensitive: true\n }\n ]\n };\n};\noop.inherits(DocCommentHighlightRules, TextHighlightRules);\nDocCommentHighlightRules.getTagRule = function (start) {\n return {\n token: \"comment.doc.tag.storage.type\",\n regex: \"\\\\b(?:TODO|FIXME|XXX|HACK)\\\\b\"\n };\n};\nDocCommentHighlightRules.getStartRule = function (start) {\n return {\n token: \"comment.doc\",\n regex: \"\\\\/\\\\*(?=\\\\*)\",\n next: start\n };\n};\nDocCommentHighlightRules.getEndRule = function (start) {\n return {\n token: \"comment.doc\",\n regex: \"\\\\*\\\\/\",\n next: start\n };\n};\nexports.DocCommentHighlightRules = DocCommentHighlightRules;\n\n});\n\nace.define(\"ace/mode/jsx_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/mode/doc_comment_highlight_rules\",\"ace/mode/text_highlight_rules\"], function(require, exports, module){var oop = require(\"../lib/oop\");\nvar lang = require(\"../lib/lang\");\nvar DocCommentHighlightRules = require(\"./doc_comment_highlight_rules\").DocCommentHighlightRules;\nvar TextHighlightRules = require(\"./text_highlight_rules\").TextHighlightRules;\nvar JsxHighlightRules = function () {\n var keywords = lang.arrayToMap((\"break|do|instanceof|typeof|case|else|new|var|catch|finally|return|void|continue|for|switch|default|while|function|this|\" +\n \"if|throw|\" +\n \"delete|in|try|\" +\n \"class|extends|super|import|from|into|implements|interface|static|mixin|override|abstract|final|\" +\n \"number|int|string|boolean|variant|\" +\n \"log|assert\").split(\"|\"));\n var buildinConstants = lang.arrayToMap((\"null|true|false|NaN|Infinity|__FILE__|__LINE__|undefined\").split(\"|\"));\n var reserved = lang.arrayToMap((\"debugger|with|\" +\n \"const|export|\" +\n \"let|private|public|yield|protected|\" +\n \"extern|native|as|operator|__fake__|__readonly__\").split(\"|\"));\n var identifierRe = \"[a-zA-Z_][a-zA-Z0-9_]*\\\\b\";\n this.$rules = {\n \"start\": [\n {\n token: \"comment\",\n regex: \"\\\\/\\\\/.*$\"\n },\n DocCommentHighlightRules.getStartRule(\"doc-start\"),\n {\n token: \"comment\",\n regex: \"\\\\/\\\\*\",\n next: \"comment\"\n }, {\n token: \"string.regexp\",\n regex: \"[/](?:(?:\\\\[(?:\\\\\\\\]|[^\\\\]])+\\\\])|(?:\\\\\\\\/|[^\\\\]/]))*[/]\\\\w*\\\\s*(?=[).,;]|$)\"\n }, {\n token: \"string\",\n regex: '[\"](?:(?:\\\\\\\\.)|(?:[^\"\\\\\\\\]))*?[\"]'\n }, {\n token: \"string\",\n regex: \"['](?:(?:\\\\\\\\.)|(?:[^'\\\\\\\\]))*?[']\"\n }, {\n token: \"constant.numeric\",\n regex: \"0[xX][0-9a-fA-F]+\\\\b\"\n }, {\n token: \"constant.numeric\",\n regex: \"[+-]?\\\\d+(?:(?:\\\\.\\\\d*)?(?:[eE][+-]?\\\\d+)?)?\\\\b\"\n }, {\n token: \"constant.language.boolean\",\n regex: \"(?:true|false)\\\\b\"\n }, {\n token: [\n \"storage.type\",\n \"text\",\n \"entity.name.function\"\n ],\n regex: \"(function)(\\\\s+)(\" + identifierRe + \")\"\n }, {\n token: function (value) {\n if (value == \"this\")\n return \"variable.language\";\n else if (value == \"function\")\n return \"storage.type\";\n else if (keywords.hasOwnProperty(value) || reserved.hasOwnProperty(value))\n return \"keyword\";\n else if (buildinConstants.hasOwnProperty(value))\n return \"constant.language\";\n else if (/^_?[A-Z][a-zA-Z0-9_]*$/.test(value))\n return \"language.support.class\";\n else\n return \"identifier\";\n },\n regex: identifierRe\n }, {\n token: \"keyword.operator\",\n regex: \"!|%|&|\\\\*|\\\\-\\\\-|\\\\-|\\\\+\\\\+|\\\\+|~|==|=|!=|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\\\|\\\\||\\\\?\\\\:|\\\\*=|%=|\\\\+=|\\\\-=|&=|\\\\^=|\\\\b(?:in|instanceof|new|delete|typeof|void)\"\n }, {\n token: \"punctuation.operator\",\n regex: \"\\\\?|\\\\:|\\\\,|\\\\;|\\\\.\"\n }, {\n token: \"paren.lparen\",\n regex: \"[[({<]\"\n }, {\n token: \"paren.rparen\",\n regex: \"[\\\\])}>]\"\n }, {\n token: \"text\",\n regex: \"\\\\s+\"\n }\n ],\n \"comment\": [\n {\n token: \"comment\",\n regex: \"\\\\*\\\\/\",\n next: \"start\"\n }, {\n defaultToken: \"comment\"\n }\n ]\n };\n this.embedRules(DocCommentHighlightRules, \"doc-\", [DocCommentHighlightRules.getEndRule(\"start\")]);\n};\noop.inherits(JsxHighlightRules, TextHighlightRules);\nexports.JsxHighlightRules = JsxHighlightRules;\n\n});\n\nace.define(\"ace/mode/matching_brace_outdent\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar Range = require(\"../range\").Range;\nvar MatchingBraceOutdent = function () { };\n(function () {\n this.checkOutdent = function (line, input) {\n if (!/^\\s+$/.test(line))\n return false;\n return /^\\s*\\}/.test(input);\n };\n this.autoOutdent = function (doc, row) {\n var line = doc.getLine(row);\n var match = line.match(/^(\\s*\\})/);\n if (!match)\n return 0;\n var column = match[1].length;\n var openBracePos = doc.findMatchingBracket({ row: row, column: column });\n if (!openBracePos || openBracePos.row == row)\n return 0;\n var indent = this.$getIndent(doc.getLine(openBracePos.row));\n doc.replace(new Range(row, 0, row, column - 1), indent);\n };\n this.$getIndent = function (line) {\n return line.match(/^\\s*/)[0];\n };\n}).call(MatchingBraceOutdent.prototype);\nexports.MatchingBraceOutdent = MatchingBraceOutdent;\n\n});\n\nace.define(\"ace/mode/folding/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/range\",\"ace/mode/folding/fold_mode\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../../lib/oop\");\nvar Range = require(\"../../range\").Range;\nvar BaseFoldMode = require(\"./fold_mode\").FoldMode;\nvar FoldMode = exports.FoldMode = function (commentRegex) {\n if (commentRegex) {\n this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.start));\n this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.end));\n }\n};\noop.inherits(FoldMode, BaseFoldMode);\n(function () {\n this.foldingStartMarker = /([\\{\\[\\(])[^\\}\\]\\)]*$|^\\s*(\\/\\*)/;\n this.foldingStopMarker = /^[^\\[\\{\\(]*([\\}\\]\\)])|^[\\s\\*]*(\\*\\/)/;\n this.singleLineBlockCommentRe = /^\\s*(\\/\\*).*\\*\\/\\s*$/;\n this.tripleStarBlockCommentRe = /^\\s*(\\/\\*\\*\\*).*\\*\\/\\s*$/;\n this.startRegionRe = /^\\s*(\\/\\*|\\/\\/)#?region\\b/;\n this._getFoldWidgetBase = this.getFoldWidget;\n this.getFoldWidget = function (session, foldStyle, row) {\n var line = session.getLine(row);\n if (this.singleLineBlockCommentRe.test(line)) {\n if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line))\n return \"\";\n }\n var fw = this._getFoldWidgetBase(session, foldStyle, row);\n if (!fw && this.startRegionRe.test(line))\n return \"start\"; // lineCommentRegionStart\n return fw;\n };\n this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) {\n var line = session.getLine(row);\n if (this.startRegionRe.test(line))\n return this.getCommentRegionBlock(session, line, row);\n var match = line.match(this.foldingStartMarker);\n if (match) {\n var i = match.index;\n if (match[1])\n return this.openingBracketBlock(session, match[1], row, i);\n var range = session.getCommentFoldRange(row, i + match[0].length, 1);\n if (range && !range.isMultiLine()) {\n if (forceMultiline) {\n range = this.getSectionRange(session, row);\n }\n else if (foldStyle != \"all\")\n range = null;\n }\n return range;\n }\n if (foldStyle === \"markbegin\")\n return;\n var match = line.match(this.foldingStopMarker);\n if (match) {\n var i = match.index + match[0].length;\n if (match[1])\n return this.closingBracketBlock(session, match[1], row, i);\n return session.getCommentFoldRange(row, i, -1);\n }\n };\n this.getSectionRange = function (session, row) {\n var line = session.getLine(row);\n var startIndent = line.search(/\\S/);\n var startRow = row;\n var startColumn = line.length;\n row = row + 1;\n var endRow = row;\n var maxRow = session.getLength();\n while (++row < maxRow) {\n line = session.getLine(row);\n var indent = line.search(/\\S/);\n if (indent === -1)\n continue;\n if (startIndent > indent)\n break;\n var subRange = this.getFoldWidgetRange(session, \"all\", row);\n if (subRange) {\n if (subRange.start.row <= startRow) {\n break;\n }\n else if (subRange.isMultiLine()) {\n row = subRange.end.row;\n }\n else if (startIndent == indent) {\n break;\n }\n }\n endRow = row;\n }\n return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);\n };\n this.getCommentRegionBlock = function (session, line, row) {\n var startColumn = line.search(/\\s*$/);\n var maxRow = session.getLength();\n var startRow = row;\n var re = /^\\s*(?:\\/\\*|\\/\\/|--)#?(end)?region\\b/;\n var depth = 1;\n while (++row < maxRow) {\n line = session.getLine(row);\n var m = re.exec(line);\n if (!m)\n continue;\n if (m[1])\n depth--;\n else\n depth++;\n if (!depth)\n break;\n }\n var endRow = row;\n if (endRow > startRow) {\n return new Range(startRow, startColumn, endRow, line.length);\n }\n };\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/jsx\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/jsx_highlight_rules\",\"ace/mode/matching_brace_outdent\",\"ace/mode/folding/cstyle\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar TextMode = require(\"./text\").Mode;\nvar JsxHighlightRules = require(\"./jsx_highlight_rules\").JsxHighlightRules;\nvar MatchingBraceOutdent = require(\"./matching_brace_outdent\").MatchingBraceOutdent;\nvar CStyleFoldMode = require(\"./folding/cstyle\").FoldMode;\nfunction Mode() {\n this.HighlightRules = JsxHighlightRules;\n this.$outdent = new MatchingBraceOutdent();\n this.$behaviour = this.$defaultBehaviour;\n this.foldingRules = new CStyleFoldMode();\n}\noop.inherits(Mode, TextMode);\n(function () {\n this.lineCommentStart = \"//\";\n this.blockComment = { start: \"/*\", end: \"*/\" };\n this.getNextLineIndent = function (state, line, tab) {\n var indent = this.$getIndent(line);\n var tokenizedLine = this.getTokenizer().getLineTokens(line, state);\n var tokens = tokenizedLine.tokens;\n if (tokens.length && tokens[tokens.length - 1].type == \"comment\") {\n return indent;\n }\n if (state == \"start\") {\n var match = line.match(/^.*[\\{\\(\\[]\\s*$/);\n if (match) {\n indent += tab;\n }\n }\n return indent;\n };\n this.checkOutdent = function (state, line, input) {\n return this.$outdent.checkOutdent(line, input);\n };\n this.autoOutdent = function (state, doc, row) {\n this.$outdent.autoOutdent(doc, row);\n };\n this.$id = \"ace/mode/jsx\";\n}).call(Mode.prototype);\nexports.Mode = Mode;\n\n}); (function() {\n ace.require([\"ace/mode/jsx\"], function(m) {\n if (typeof module == \"object\" && typeof exports == \"object\" && module) {\n module.exports = m;\n }\n });\n })();\n ","ace.define(\"ace/mode/python_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(require, exports, module){/*\n * TODO: python delimiters\n */\n\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar TextHighlightRules = require(\"./text_highlight_rules\").TextHighlightRules;\nvar PythonHighlightRules = function () {\n var keywords = (\"and|as|assert|break|class|continue|def|del|elif|else|except|exec|\" +\n \"finally|for|from|global|if|import|in|is|lambda|not|or|pass|print|\" +\n \"raise|return|try|while|with|yield|async|await|nonlocal\");\n var builtinConstants = (\"True|False|None|NotImplemented|Ellipsis|__debug__\");\n var builtinFunctions = (\"abs|divmod|input|open|staticmethod|all|enumerate|int|ord|str|any|\" +\n \"eval|isinstance|pow|sum|basestring|execfile|issubclass|print|super|\" +\n \"binfile|bin|iter|property|tuple|bool|filter|len|range|type|bytearray|\" +\n \"float|list|raw_input|unichr|callable|format|locals|reduce|unicode|\" +\n \"chr|frozenset|long|reload|vars|classmethod|getattr|map|repr|xrange|\" +\n \"cmp|globals|max|reversed|zip|compile|hasattr|memoryview|round|\" +\n \"__import__|complex|hash|min|apply|delattr|help|next|setattr|set|\" +\n \"buffer|dict|hex|object|slice|coerce|dir|id|oct|sorted|intern|\" +\n \"ascii|breakpoint|bytes\");\n var keywordMapper = this.createKeywordMapper({\n \"invalid.deprecated\": \"debugger\",\n \"support.function\": builtinFunctions,\n \"variable.language\": \"self|cls\",\n \"constant.language\": builtinConstants,\n \"keyword\": keywords\n }, \"identifier\");\n var strPre = \"[uU]?\";\n var strRawPre = \"[rR]\";\n var strFormatPre = \"[fF]\";\n var strRawFormatPre = \"(?:[rR][fF]|[fF][rR])\";\n var decimalInteger = \"(?:(?:[1-9]\\\\d*)|(?:0))\";\n var octInteger = \"(?:0[oO]?[0-7]+)\";\n var hexInteger = \"(?:0[xX][\\\\dA-Fa-f]+)\";\n var binInteger = \"(?:0[bB][01]+)\";\n var integer = \"(?:\" + decimalInteger + \"|\" + octInteger + \"|\" + hexInteger + \"|\" + binInteger + \")\";\n var exponent = \"(?:[eE][+-]?\\\\d+)\";\n var fraction = \"(?:\\\\.\\\\d+)\";\n var intPart = \"(?:\\\\d+)\";\n var pointFloat = \"(?:(?:\" + intPart + \"?\" + fraction + \")|(?:\" + intPart + \"\\\\.))\";\n var exponentFloat = \"(?:(?:\" + pointFloat + \"|\" + intPart + \")\" + exponent + \")\";\n var floatNumber = \"(?:\" + exponentFloat + \"|\" + pointFloat + \")\";\n var stringEscape = \"\\\\\\\\(x[0-9A-Fa-f]{2}|[0-7]{3}|[\\\\\\\\abfnrtv'\\\"]|U[0-9A-Fa-f]{8}|u[0-9A-Fa-f]{4})\";\n this.$rules = {\n \"start\": [{\n token: \"comment\",\n regex: \"#.*$\"\n }, {\n token: \"string\",\n regex: strPre + '\"{3}',\n next: \"qqstring3\"\n }, {\n token: \"string\",\n regex: strPre + '\"(?=.)',\n next: \"qqstring\"\n }, {\n token: \"string\",\n regex: strPre + \"'{3}\",\n next: \"qstring3\"\n }, {\n token: \"string\",\n regex: strPre + \"'(?=.)\",\n next: \"qstring\"\n }, {\n token: \"string\",\n regex: strRawPre + '\"{3}',\n next: \"rawqqstring3\"\n }, {\n token: \"string\",\n regex: strRawPre + '\"(?=.)',\n next: \"rawqqstring\"\n }, {\n token: \"string\",\n regex: strRawPre + \"'{3}\",\n next: \"rawqstring3\"\n }, {\n token: \"string\",\n regex: strRawPre + \"'(?=.)\",\n next: \"rawqstring\"\n }, {\n token: \"string\",\n regex: strFormatPre + '\"{3}',\n next: \"fqqstring3\"\n }, {\n token: \"string\",\n regex: strFormatPre + '\"(?=.)',\n next: \"fqqstring\"\n }, {\n token: \"string\",\n regex: strFormatPre + \"'{3}\",\n next: \"fqstring3\"\n }, {\n token: \"string\",\n regex: strFormatPre + \"'(?=.)\",\n next: \"fqstring\"\n }, {\n token: \"string\",\n regex: strRawFormatPre + '\"{3}',\n next: \"rfqqstring3\"\n }, {\n token: \"string\",\n regex: strRawFormatPre + '\"(?=.)',\n next: \"rfqqstring\"\n }, {\n token: \"string\",\n regex: strRawFormatPre + \"'{3}\",\n next: \"rfqstring3\"\n }, {\n token: \"string\",\n regex: strRawFormatPre + \"'(?=.)\",\n next: \"rfqstring\"\n }, {\n token: \"keyword.operator\",\n regex: \"\\\\+|\\\\-|\\\\*|\\\\*\\\\*|\\\\/|\\\\/\\\\/|%|@|<<|>>|&|\\\\||\\\\^|~|<|>|<=|=>|==|!=|<>|=\"\n }, {\n token: \"punctuation\",\n regex: \",|:|;|\\\\->|\\\\+=|\\\\-=|\\\\*=|\\\\/=|\\\\/\\\\/=|%=|@=|&=|\\\\|=|^=|>>=|<<=|\\\\*\\\\*=\"\n }, {\n token: \"paren.lparen\",\n regex: \"[\\\\[\\\\(\\\\{]\"\n }, {\n token: \"paren.rparen\",\n regex: \"[\\\\]\\\\)\\\\}]\"\n }, {\n token: [\"keyword\", \"text\", \"entity.name.function\"],\n regex: \"(def|class)(\\\\s+)([\\\\u00BF-\\\\u1FFF\\\\u2C00-\\\\uD7FF\\\\w]+)\"\n }, {\n token: \"text\",\n regex: \"\\\\s+\"\n }, {\n include: \"constants\"\n }],\n \"qqstring3\": [{\n token: \"constant.language.escape\",\n regex: stringEscape\n }, {\n token: \"string\",\n regex: '\"{3}',\n next: \"start\"\n }, {\n defaultToken: \"string\"\n }],\n \"qstring3\": [{\n token: \"constant.language.escape\",\n regex: stringEscape\n }, {\n token: \"string\",\n regex: \"'{3}\",\n next: \"start\"\n }, {\n defaultToken: \"string\"\n }],\n \"qqstring\": [{\n token: \"constant.language.escape\",\n regex: stringEscape\n }, {\n token: \"string\",\n regex: \"\\\\\\\\$\",\n next: \"qqstring\"\n }, {\n token: \"string\",\n regex: '\"|$',\n next: \"start\"\n }, {\n defaultToken: \"string\"\n }],\n \"qstring\": [{\n token: \"constant.language.escape\",\n regex: stringEscape\n }, {\n token: \"string\",\n regex: \"\\\\\\\\$\",\n next: \"qstring\"\n }, {\n token: \"string\",\n regex: \"'|$\",\n next: \"start\"\n }, {\n defaultToken: \"string\"\n }],\n \"rawqqstring3\": [{\n token: \"string\",\n regex: '\"{3}',\n next: \"start\"\n }, {\n defaultToken: \"string\"\n }],\n \"rawqstring3\": [{\n token: \"string\",\n regex: \"'{3}\",\n next: \"start\"\n }, {\n defaultToken: \"string\"\n }],\n \"rawqqstring\": [{\n token: \"string\",\n regex: \"\\\\\\\\$\",\n next: \"rawqqstring\"\n }, {\n token: \"string\",\n regex: '\"|$',\n next: \"start\"\n }, {\n defaultToken: \"string\"\n }],\n \"rawqstring\": [{\n token: \"string\",\n regex: \"\\\\\\\\$\",\n next: \"rawqstring\"\n }, {\n token: \"string\",\n regex: \"'|$\",\n next: \"start\"\n }, {\n defaultToken: \"string\"\n }],\n \"fqqstring3\": [{\n token: \"constant.language.escape\",\n regex: stringEscape\n }, {\n token: \"string\",\n regex: '\"{3}',\n next: \"start\"\n }, {\n token: \"paren.lparen\",\n regex: \"{\",\n push: \"fqstringParRules\"\n }, {\n defaultToken: \"string\"\n }],\n \"fqstring3\": [{\n token: \"constant.language.escape\",\n regex: stringEscape\n }, {\n token: \"string\",\n regex: \"'{3}\",\n next: \"start\"\n }, {\n token: \"paren.lparen\",\n regex: \"{\",\n push: \"fqstringParRules\"\n }, {\n defaultToken: \"string\"\n }],\n \"fqqstring\": [{\n token: \"constant.language.escape\",\n regex: stringEscape\n }, {\n token: \"string\",\n regex: \"\\\\\\\\$\",\n next: \"fqqstring\"\n }, {\n token: \"string\",\n regex: '\"|$',\n next: \"start\"\n }, {\n token: \"paren.lparen\",\n regex: \"{\",\n push: \"fqstringParRules\"\n }, {\n defaultToken: \"string\"\n }],\n \"fqstring\": [{\n token: \"constant.language.escape\",\n regex: stringEscape\n }, {\n token: \"string\",\n regex: \"'|$\",\n next: \"start\"\n }, {\n token: \"paren.lparen\",\n regex: \"{\",\n push: \"fqstringParRules\"\n }, {\n defaultToken: \"string\"\n }],\n \"rfqqstring3\": [{\n token: \"string\",\n regex: '\"{3}',\n next: \"start\"\n }, {\n token: \"paren.lparen\",\n regex: \"{\",\n push: \"fqstringParRules\"\n }, {\n defaultToken: \"string\"\n }],\n \"rfqstring3\": [{\n token: \"string\",\n regex: \"'{3}\",\n next: \"start\"\n }, {\n token: \"paren.lparen\",\n regex: \"{\",\n push: \"fqstringParRules\"\n }, {\n defaultToken: \"string\"\n }],\n \"rfqqstring\": [{\n token: \"string\",\n regex: \"\\\\\\\\$\",\n next: \"rfqqstring\"\n }, {\n token: \"string\",\n regex: '\"|$',\n next: \"start\"\n }, {\n token: \"paren.lparen\",\n regex: \"{\",\n push: \"fqstringParRules\"\n }, {\n defaultToken: \"string\"\n }],\n \"rfqstring\": [{\n token: \"string\",\n regex: \"'|$\",\n next: \"start\"\n }, {\n token: \"paren.lparen\",\n regex: \"{\",\n push: \"fqstringParRules\"\n }, {\n defaultToken: \"string\"\n }],\n \"fqstringParRules\": [{\n token: \"paren.lparen\",\n regex: \"[\\\\[\\\\(]\"\n }, {\n token: \"paren.rparen\",\n regex: \"[\\\\]\\\\)]\"\n }, {\n token: \"string\",\n regex: \"\\\\s+\"\n }, {\n token: \"string\",\n regex: \"'[^']*'\"\n }, {\n token: \"string\",\n regex: '\"[^\"]*\"'\n }, {\n token: \"function.support\",\n regex: \"(!s|!r|!a)\"\n }, {\n include: \"constants\"\n }, {\n token: 'paren.rparen',\n regex: \"}\",\n next: 'pop'\n }, {\n token: 'paren.lparen',\n regex: \"{\",\n push: \"fqstringParRules\"\n }],\n \"constants\": [{\n token: \"constant.numeric\",\n regex: \"(?:\" + floatNumber + \"|\\\\d+)[jJ]\\\\b\"\n }, {\n token: \"constant.numeric\",\n regex: floatNumber\n }, {\n token: \"constant.numeric\",\n regex: integer + \"[lL]\\\\b\"\n }, {\n token: \"constant.numeric\",\n regex: integer + \"\\\\b\"\n }, {\n token: [\"punctuation\", \"function.support\"],\n regex: \"(\\\\.)([a-zA-Z_]+)\\\\b\"\n }, {\n token: keywordMapper,\n regex: \"[a-zA-Z_$][a-zA-Z0-9_$]*\\\\b\"\n }]\n };\n this.normalizeRules();\n};\noop.inherits(PythonHighlightRules, TextHighlightRules);\nexports.PythonHighlightRules = PythonHighlightRules;\n\n});\n\nace.define(\"ace/mode/folding/pythonic\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/folding/fold_mode\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../../lib/oop\");\nvar BaseFoldMode = require(\"./fold_mode\").FoldMode;\nvar FoldMode = exports.FoldMode = function (markers) {\n this.foldingStartMarker = new RegExp(\"([\\\\[{])(?:\\\\s*)$|(\" + markers + \")(?:\\\\s*)(?:#.*)?$\");\n};\noop.inherits(FoldMode, BaseFoldMode);\n(function () {\n this.getFoldWidgetRange = function (session, foldStyle, row) {\n var line = session.getLine(row);\n var match = line.match(this.foldingStartMarker);\n if (match) {\n if (match[1])\n return this.openingBracketBlock(session, match[1], row, match.index);\n if (match[2])\n return this.indentationBlock(session, row, match.index + match[2].length);\n return this.indentationBlock(session, row);\n }\n };\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/python\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/python_highlight_rules\",\"ace/mode/folding/pythonic\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar TextMode = require(\"./text\").Mode;\nvar PythonHighlightRules = require(\"./python_highlight_rules\").PythonHighlightRules;\nvar PythonFoldMode = require(\"./folding/pythonic\").FoldMode;\nvar Range = require(\"../range\").Range;\nvar Mode = function () {\n this.HighlightRules = PythonHighlightRules;\n this.foldingRules = new PythonFoldMode(\"\\\\:\");\n this.$behaviour = this.$defaultBehaviour;\n};\noop.inherits(Mode, TextMode);\n(function () {\n this.lineCommentStart = \"#\";\n this.$pairQuotesAfter = {\n \"'\": /[ruf]/i,\n '\"': /[ruf]/i\n };\n this.getNextLineIndent = function (state, line, tab) {\n var indent = this.$getIndent(line);\n var tokenizedLine = this.getTokenizer().getLineTokens(line, state);\n var tokens = tokenizedLine.tokens;\n if (tokens.length && tokens[tokens.length - 1].type == \"comment\") {\n return indent;\n }\n if (state == \"start\") {\n var match = line.match(/^.*[\\{\\(\\[:]\\s*$/);\n if (match) {\n indent += tab;\n }\n }\n return indent;\n };\n var outdents = {\n \"pass\": 1,\n \"return\": 1,\n \"raise\": 1,\n \"break\": 1,\n \"continue\": 1\n };\n this.checkOutdent = function (state, line, input) {\n if (input !== \"\\r\\n\" && input !== \"\\r\" && input !== \"\\n\")\n return false;\n var tokens = this.getTokenizer().getLineTokens(line.trim(), state).tokens;\n if (!tokens)\n return false;\n do {\n var last = tokens.pop();\n } while (last && (last.type == \"comment\" || (last.type == \"text\" && last.value.match(/^\\s+$/))));\n if (!last)\n return false;\n return (last.type == \"keyword\" && outdents[last.value]);\n };\n this.autoOutdent = function (state, doc, row) {\n row += 1;\n var indent = this.$getIndent(doc.getLine(row));\n var tab = doc.getTabString();\n if (indent.slice(-tab.length) == tab)\n doc.remove(new Range(row, indent.length - tab.length, row, indent.length));\n };\n this.$id = \"ace/mode/python\";\n this.snippetFileId = \"ace/snippets/python\";\n}).call(Mode.prototype);\nexports.Mode = Mode;\n\n}); (function() {\n ace.require([\"ace/mode/python\"], function(m) {\n if (typeof module == \"object\" && typeof exports == \"object\" && module) {\n module.exports = m;\n }\n });\n })();\n ","ace.define(\"ace/mode/xml_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar TextHighlightRules = require(\"./text_highlight_rules\").TextHighlightRules;\nvar XmlHighlightRules = function (normalize) {\n var tagRegex = \"[_:a-zA-Z\\xc0-\\uffff][-_:.a-zA-Z0-9\\xc0-\\uffff]*\";\n this.$rules = {\n start: [\n { token: \"string.cdata.xml\", regex: \"<\\\\!\\\\[CDATA\\\\[\", next: \"cdata\" },\n {\n token: [\"punctuation.instruction.xml\", \"keyword.instruction.xml\"],\n regex: \"(<\\\\?)(\" + tagRegex + \")\", next: \"processing_instruction\"\n },\n { token: \"comment.start.xml\", regex: \"<\\\\!--\", next: \"comment\" },\n {\n token: [\"xml-pe.doctype.xml\", \"xml-pe.doctype.xml\"],\n regex: \"(<\\\\!)(DOCTYPE)(?=[\\\\s])\", next: \"doctype\", caseInsensitive: true\n },\n { include: \"tag\" },\n { token: \"text.end-tag-open.xml\", regex: \"\",\n next: \"start\"\n }],\n doctype: [\n { include: \"whitespace\" },\n { include: \"string\" },\n { token: \"xml-pe.doctype.xml\", regex: \">\", next: \"start\" },\n { token: \"xml-pe.xml\", regex: \"[-_a-zA-Z0-9:]+\" },\n { token: \"punctuation.int-subset\", regex: \"\\\\[\", push: \"int_subset\" }\n ],\n int_subset: [{\n token: \"text.xml\",\n regex: \"\\\\s+\"\n }, {\n token: \"punctuation.int-subset.xml\",\n regex: \"]\",\n next: \"pop\"\n }, {\n token: [\"punctuation.markup-decl.xml\", \"keyword.markup-decl.xml\"],\n regex: \"(<\\\\!)(\" + tagRegex + \")\",\n push: [{\n token: \"text\",\n regex: \"\\\\s+\"\n },\n {\n token: \"punctuation.markup-decl.xml\",\n regex: \">\",\n next: \"pop\"\n },\n { include: \"string\" }]\n }],\n cdata: [\n { token: \"string.cdata.xml\", regex: \"\\\\]\\\\]>\", next: \"start\" },\n { token: \"text.xml\", regex: \"\\\\s+\" },\n { token: \"text.xml\", regex: \"(?:[^\\\\]]|\\\\](?!\\\\]>))+\" }\n ],\n comment: [\n { token: \"comment.end.xml\", regex: \"-->\", next: \"start\" },\n { defaultToken: \"comment.xml\" }\n ],\n reference: [{\n token: \"constant.language.escape.reference.xml\",\n regex: \"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\\\.-]+;)\"\n }],\n attr_reference: [{\n token: \"constant.language.escape.reference.attribute-value.xml\",\n regex: \"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\\\.-]+;)\"\n }],\n tag: [{\n token: [\"meta.tag.punctuation.tag-open.xml\", \"meta.tag.punctuation.end-tag-open.xml\", \"meta.tag.tag-name.xml\"],\n regex: \"(?:(<)|(\", next: \"start\" }\n ]\n }],\n tag_whitespace: [\n { token: \"text.tag-whitespace.xml\", regex: \"\\\\s+\" }\n ],\n whitespace: [\n { token: \"text.whitespace.xml\", regex: \"\\\\s+\" }\n ],\n string: [{\n token: \"string.xml\",\n regex: \"'\",\n push: [\n { token: \"string.xml\", regex: \"'\", next: \"pop\" },\n { defaultToken: \"string.xml\" }\n ]\n }, {\n token: \"string.xml\",\n regex: '\"',\n push: [\n { token: \"string.xml\", regex: '\"', next: \"pop\" },\n { defaultToken: \"string.xml\" }\n ]\n }],\n attributes: [{\n token: \"entity.other.attribute-name.xml\",\n regex: tagRegex\n }, {\n token: \"keyword.operator.attribute-equals.xml\",\n regex: \"=\"\n }, {\n include: \"tag_whitespace\"\n }, {\n include: \"attribute_value\"\n }],\n attribute_value: [{\n token: \"string.attribute-value.xml\",\n regex: \"'\",\n push: [\n { token: \"string.attribute-value.xml\", regex: \"'\", next: \"pop\" },\n { include: \"attr_reference\" },\n { defaultToken: \"string.attribute-value.xml\" }\n ]\n }, {\n token: \"string.attribute-value.xml\",\n regex: '\"',\n push: [\n { token: \"string.attribute-value.xml\", regex: '\"', next: \"pop\" },\n { include: \"attr_reference\" },\n { defaultToken: \"string.attribute-value.xml\" }\n ]\n }]\n };\n if (this.constructor === XmlHighlightRules)\n this.normalizeRules();\n};\n(function () {\n this.embedTagRules = function (HighlightRules, prefix, tag) {\n this.$rules.tag.unshift({\n token: [\"meta.tag.punctuation.tag-open.xml\", \"meta.tag.\" + tag + \".tag-name.xml\"],\n regex: \"(<)(\" + tag + \"(?=\\\\s|>|$))\",\n next: [\n { include: \"attributes\" },\n { token: \"meta.tag.punctuation.tag-close.xml\", regex: \"/?>\", next: prefix + \"start\" }\n ]\n });\n this.$rules[tag + \"-end\"] = [\n { include: \"attributes\" },\n { token: \"meta.tag.punctuation.tag-close.xml\", regex: \"/?>\", next: \"start\",\n onMatch: function (value, currentState, stack) {\n stack.splice(0);\n return this.token;\n } }\n ];\n this.embedRules(HighlightRules, prefix, [{\n token: [\"meta.tag.punctuation.end-tag-open.xml\", \"meta.tag.\" + tag + \".tag-name.xml\"],\n regex: \"(|$))\",\n next: tag + \"-end\"\n }, {\n token: \"string.cdata.xml\",\n regex: \"<\\\\!\\\\[CDATA\\\\[\"\n }, {\n token: \"string.cdata.xml\",\n regex: \"\\\\]\\\\]>\"\n }]);\n };\n}).call(TextHighlightRules.prototype);\noop.inherits(XmlHighlightRules, TextHighlightRules);\nexports.XmlHighlightRules = XmlHighlightRules;\n\n});\n\nace.define(\"ace/mode/behaviour/xml\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/behaviour\",\"ace/token_iterator\",\"ace/lib/lang\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../../lib/oop\");\nvar Behaviour = require(\"../behaviour\").Behaviour;\nvar TokenIterator = require(\"../../token_iterator\").TokenIterator;\nvar lang = require(\"../../lib/lang\");\nfunction is(token, type) {\n return token && token.type.lastIndexOf(type + \".xml\") > -1;\n}\nvar XmlBehaviour = function () {\n this.add(\"string_dquotes\", \"insertion\", function (state, action, editor, session, text) {\n if (text == '\"' || text == \"'\") {\n var quote = text;\n var selected = session.doc.getTextRange(editor.getSelectionRange());\n if (selected !== \"\" && selected !== \"'\" && selected != '\"' && editor.getWrapBehavioursEnabled()) {\n return {\n text: quote + selected + quote,\n selection: false\n };\n }\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n var token = iterator.getCurrentToken();\n if (rightChar == quote && (is(token, \"attribute-value\") || is(token, \"string\"))) {\n return {\n text: \"\",\n selection: [1, 1]\n };\n }\n if (!token)\n token = iterator.stepBackward();\n if (!token)\n return;\n while (is(token, \"tag-whitespace\") || is(token, \"whitespace\")) {\n token = iterator.stepBackward();\n }\n var rightSpace = !rightChar || rightChar.match(/\\s/);\n if (is(token, \"attribute-equals\") && (rightSpace || rightChar == '>') || (is(token, \"decl-attribute-equals\") && (rightSpace || rightChar == '?'))) {\n return {\n text: quote + quote,\n selection: [1, 1]\n };\n }\n }\n });\n this.add(\"string_dquotes\", \"deletion\", function (state, action, editor, session, range) {\n var selected = session.doc.getTextRange(range);\n if (!range.isMultiLine() && (selected == '\"' || selected == \"'\")) {\n var line = session.doc.getLine(range.start.row);\n var rightChar = line.substring(range.start.column + 1, range.start.column + 2);\n if (rightChar == selected) {\n range.end.column++;\n return range;\n }\n }\n });\n this.add(\"autoclosing\", \"insertion\", function (state, action, editor, session, text) {\n if (text == '>') {\n var position = editor.getSelectionRange().start;\n var iterator = new TokenIterator(session, position.row, position.column);\n var token = iterator.getCurrentToken() || iterator.stepBackward();\n if (!token || !(is(token, \"tag-name\") || is(token, \"tag-whitespace\") || is(token, \"attribute-name\") || is(token, \"attribute-equals\") || is(token, \"attribute-value\")))\n return;\n if (is(token, \"reference.attribute-value\"))\n return;\n if (is(token, \"attribute-value\")) {\n var tokenEndColumn = iterator.getCurrentTokenColumn() + token.value.length;\n if (position.column < tokenEndColumn)\n return;\n if (position.column == tokenEndColumn) {\n var nextToken = iterator.stepForward();\n if (nextToken && is(nextToken, \"attribute-value\"))\n return;\n iterator.stepBackward();\n }\n }\n if (/^\\s*>/.test(session.getLine(position.row).slice(position.column)))\n return;\n while (!is(token, \"tag-name\")) {\n token = iterator.stepBackward();\n if (token.value == \"<\") {\n token = iterator.stepForward();\n break;\n }\n }\n var tokenRow = iterator.getCurrentTokenRow();\n var tokenColumn = iterator.getCurrentTokenColumn();\n if (is(iterator.stepBackward(), \"end-tag-open\"))\n return;\n var element = token.value;\n if (tokenRow == position.row)\n element = element.substring(0, position.column - tokenColumn);\n if (this.voidElements.hasOwnProperty(element.toLowerCase()))\n return;\n return {\n text: \">\" + \"\",\n selection: [1, 1]\n };\n }\n });\n this.add(\"autoindent\", \"insertion\", function (state, action, editor, session, text) {\n if (text == \"\\n\") {\n var cursor = editor.getCursorPosition();\n var line = session.getLine(cursor.row);\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n var token = iterator.getCurrentToken();\n if (token && token.type.indexOf(\"tag-close\") !== -1) {\n if (token.value == \"/>\")\n return;\n while (token && token.type.indexOf(\"tag-name\") === -1) {\n token = iterator.stepBackward();\n }\n if (!token) {\n return;\n }\n var tag = token.value;\n var row = iterator.getCurrentTokenRow();\n token = iterator.stepBackward();\n if (!token || token.type.indexOf(\"end-tag\") !== -1) {\n return;\n }\n if (this.voidElements && !this.voidElements[tag]) {\n var nextToken = session.getTokenAt(cursor.row, cursor.column + 1);\n var line = session.getLine(row);\n var nextIndent = this.$getIndent(line);\n var indent = nextIndent + session.getTabString();\n if (nextToken && nextToken.value === \" -1;\n}\n(function () {\n this.getFoldWidget = function (session, foldStyle, row) {\n var tag = this._getFirstTagInLine(session, row);\n if (!tag)\n return this.getCommentFoldWidget(session, row);\n if (tag.closing || (!tag.tagName && tag.selfClosing))\n return foldStyle === \"markbeginend\" ? \"end\" : \"\";\n if (!tag.tagName || tag.selfClosing || this.voidElements.hasOwnProperty(tag.tagName.toLowerCase()))\n return \"\";\n if (this._findEndTagInLine(session, row, tag.tagName, tag.end.column))\n return \"\";\n return \"start\";\n };\n this.getCommentFoldWidget = function (session, row) {\n if (/comment/.test(session.getState(row)) && /';\n break;\n }\n }\n return tag;\n }\n else if (is(token, \"tag-close\")) {\n tag.selfClosing = token.value == '/>';\n return tag;\n }\n tag.start.column += token.value.length;\n }\n return null;\n };\n this._findEndTagInLine = function (session, row, tagName, startColumn) {\n var tokens = session.getTokens(row);\n var column = 0;\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n column += token.value.length;\n if (column < startColumn)\n continue;\n if (is(token, \"end-tag-open\")) {\n token = tokens[i + 1];\n if (token && token.value == tagName)\n return true;\n }\n }\n return false;\n };\n this.getFoldWidgetRange = function (session, foldStyle, row) {\n var tags = session.getMatchingTags({ row: row, column: 0 });\n if (tags) {\n return new Range(tags.openTag.end.row, tags.openTag.end.column, tags.closeTag.start.row, tags.closeTag.start.column);\n }\n else {\n return this.getCommentFoldWidget(session, row)\n && session.getCommentFoldRange(row, session.getLine(row).length);\n }\n };\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/xml\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/mode/text\",\"ace/mode/xml_highlight_rules\",\"ace/mode/behaviour/xml\",\"ace/mode/folding/xml\",\"ace/worker/worker_client\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar lang = require(\"../lib/lang\");\nvar TextMode = require(\"./text\").Mode;\nvar XmlHighlightRules = require(\"./xml_highlight_rules\").XmlHighlightRules;\nvar XmlBehaviour = require(\"./behaviour/xml\").XmlBehaviour;\nvar XmlFoldMode = require(\"./folding/xml\").FoldMode;\nvar WorkerClient = require(\"../worker/worker_client\").WorkerClient;\nvar Mode = function () {\n this.HighlightRules = XmlHighlightRules;\n this.$behaviour = new XmlBehaviour();\n this.foldingRules = new XmlFoldMode();\n};\noop.inherits(Mode, TextMode);\n(function () {\n this.voidElements = lang.arrayToMap([]);\n this.blockComment = { start: \"\" };\n this.createWorker = function (session) {\n var worker = new WorkerClient([\"ace\"], \"ace/mode/xml_worker\", \"Worker\");\n worker.attachToDocument(session.getDocument());\n worker.on(\"error\", function (e) {\n session.setAnnotations(e.data);\n });\n worker.on(\"terminate\", function () {\n session.clearAnnotations();\n });\n return worker;\n };\n this.$id = \"ace/mode/xml\";\n}).call(Mode.prototype);\nexports.Mode = Mode;\n\n}); (function() {\n ace.require([\"ace/mode/xml\"], function(m) {\n if (typeof module == \"object\" && typeof exports == \"object\" && module) {\n module.exports = m;\n }\n });\n })();\n ","ace.define(\"ace/theme/github-css\",[\"require\",\"exports\",\"module\"], function(require, exports, module){module.exports = \"/* CSS style content from github's default pygments highlighter template.\\n Cursor and selection styles from textmate.css. */\\n.ace-github .ace_gutter {\\n background: #e8e8e8;\\n color: #AAA;\\n}\\n\\n.ace-github {\\n background: #fff;\\n color: #000;\\n}\\n\\n.ace-github .ace_keyword {\\n font-weight: bold;\\n}\\n\\n.ace-github .ace_string {\\n color: #D14;\\n}\\n\\n.ace-github .ace_variable.ace_class {\\n color: teal;\\n}\\n\\n.ace-github .ace_constant.ace_numeric {\\n color: #099;\\n}\\n\\n.ace-github .ace_constant.ace_buildin {\\n color: #0086B3;\\n}\\n\\n.ace-github .ace_support.ace_function {\\n color: #0086B3;\\n}\\n\\n.ace-github .ace_comment {\\n color: #998;\\n font-style: italic;\\n}\\n\\n.ace-github .ace_variable.ace_language {\\n color: #0086B3;\\n}\\n\\n.ace-github .ace_paren {\\n font-weight: bold;\\n}\\n\\n.ace-github .ace_boolean {\\n font-weight: bold;\\n}\\n\\n.ace-github .ace_string.ace_regexp {\\n color: #009926;\\n font-weight: normal;\\n}\\n\\n.ace-github .ace_variable.ace_instance {\\n color: teal;\\n}\\n\\n.ace-github .ace_constant.ace_language {\\n font-weight: bold;\\n}\\n\\n.ace-github .ace_cursor {\\n color: black;\\n}\\n\\n.ace-github.ace_focus .ace_marker-layer .ace_active-line {\\n background: rgb(255, 255, 204);\\n}\\n.ace-github .ace_marker-layer .ace_active-line {\\n background: rgb(245, 245, 245);\\n}\\n\\n.ace-github .ace_marker-layer .ace_selection {\\n background: rgb(181, 213, 255);\\n}\\n\\n.ace-github.ace_multiselect .ace_selection.ace_start {\\n box-shadow: 0 0 3px 0px white;\\n}\\n/* bold keywords cause cursor issues for some fonts */\\n/* this disables bold style for editor and keeps for static highlighter */\\n.ace-github.ace_nobold .ace_line > span {\\n font-weight: normal !important;\\n}\\n\\n.ace-github .ace_marker-layer .ace_step {\\n background: rgb(252, 255, 0);\\n}\\n\\n.ace-github .ace_marker-layer .ace_stack {\\n background: rgb(164, 229, 101);\\n}\\n\\n.ace-github .ace_marker-layer .ace_bracket {\\n margin: -1px 0 0 -1px;\\n border: 1px solid rgb(192, 192, 192);\\n}\\n\\n.ace-github .ace_gutter-active-line {\\n background-color : rgba(0, 0, 0, 0.07);\\n}\\n\\n.ace-github .ace_marker-layer .ace_selected-word {\\n background: rgb(250, 250, 255);\\n border: 1px solid rgb(200, 200, 250);\\n}\\n\\n.ace-github .ace_invisible {\\n color: #BFBFBF\\n}\\n\\n.ace-github .ace_print-margin {\\n width: 1px;\\n background: #e8e8e8;\\n}\\n\\n.ace-github .ace_indent-guide {\\n background: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==\\\") right repeat-y;\\n}\\n\\n.ace-github .ace_indent-guide-active {\\n background: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAAZSURBVHjaYvj///9/hivKyv8BAAAA//8DACLqBhbvk+/eAAAAAElFTkSuQmCC\\\") right repeat-y;\\n}\\n\";\n\n});\n\nace.define(\"ace/theme/github\",[\"require\",\"exports\",\"module\",\"ace/theme/github-css\",\"ace/lib/dom\"], function(require, exports, module){exports.isDark = false;\nexports.cssClass = \"ace-github\";\nexports.cssText = require(\"./github-css\");\nvar dom = require(\"../lib/dom\");\ndom.importCssString(exports.cssText, exports.cssClass, false);\n\n}); (function() {\n ace.require([\"ace/theme/github\"], function(m) {\n if (typeof module == \"object\" && typeof exports == \"object\" && module) {\n module.exports = m;\n }\n });\n })();\n ","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.flatpickr-calendar{background:transparent;opacity:0;display:none;text-align:center;visibility:hidden;padding:0;-webkit-animation:none;animation:none;direction:ltr;border:0;font-size:14px;line-height:24px;border-radius:5px;position:absolute;width:307.875px;-webkit-box-sizing:border-box;box-sizing:border-box;-ms-touch-action:manipulation;touch-action:manipulation;background:#fff;-webkit-box-shadow:1px 0 0 #e6e6e6,-1px 0 0 #e6e6e6,0 1px 0 #e6e6e6,0 -1px 0 #e6e6e6,0 3px 13px rgba(0,0,0,0.08);box-shadow:1px 0 0 #e6e6e6,-1px 0 0 #e6e6e6,0 1px 0 #e6e6e6,0 -1px 0 #e6e6e6,0 3px 13px rgba(0,0,0,0.08)}.flatpickr-calendar.open,.flatpickr-calendar.inline{opacity:1;max-height:640px;visibility:visible}.flatpickr-calendar.open{display:inline-block;z-index:99999}.flatpickr-calendar.animate.open{-webkit-animation:fpFadeInDown 300ms cubic-bezier(.23,1,.32,1);animation:fpFadeInDown 300ms cubic-bezier(.23,1,.32,1)}.flatpickr-calendar.inline{display:block;position:relative;top:2px}.flatpickr-calendar.static{position:absolute;top:calc(100% + 2px)}.flatpickr-calendar.static.open{z-index:999;display:block}.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+1) .flatpickr-day.inRange:nth-child(7n+7){-webkit-box-shadow:none !important;box-shadow:none !important}.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+2) .flatpickr-day.inRange:nth-child(7n+1){-webkit-box-shadow:-2px 0 0 #e6e6e6,5px 0 0 #e6e6e6;box-shadow:-2px 0 0 #e6e6e6,5px 0 0 #e6e6e6}.flatpickr-calendar .hasWeeks .dayContainer,.flatpickr-calendar .hasTime .dayContainer{border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.flatpickr-calendar .hasWeeks .dayContainer{border-left:0}.flatpickr-calendar.hasTime .flatpickr-time{height:40px;border-top:1px solid #e6e6e6}.flatpickr-calendar.noCalendar.hasTime .flatpickr-time{height:auto}.flatpickr-calendar:before,.flatpickr-calendar:after{position:absolute;display:block;pointer-events:none;border:solid transparent;content:'';height:0;width:0;left:22px}.flatpickr-calendar.rightMost:before,.flatpickr-calendar.arrowRight:before,.flatpickr-calendar.rightMost:after,.flatpickr-calendar.arrowRight:after{left:auto;right:22px}.flatpickr-calendar.arrowCenter:before,.flatpickr-calendar.arrowCenter:after{left:50%;right:50%}.flatpickr-calendar:before{border-width:5px;margin:0 -5px}.flatpickr-calendar:after{border-width:4px;margin:0 -4px}.flatpickr-calendar.arrowTop:before,.flatpickr-calendar.arrowTop:after{bottom:100%}.flatpickr-calendar.arrowTop:before{border-bottom-color:#e6e6e6}.flatpickr-calendar.arrowTop:after{border-bottom-color:#fff}.flatpickr-calendar.arrowBottom:before,.flatpickr-calendar.arrowBottom:after{top:100%}.flatpickr-calendar.arrowBottom:before{border-top-color:#e6e6e6}.flatpickr-calendar.arrowBottom:after{border-top-color:#fff}.flatpickr-calendar:focus{outline:0}.flatpickr-wrapper{position:relative;display:inline-block}.flatpickr-months{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.flatpickr-months .flatpickr-month{background:transparent;color:rgba(0,0,0,0.9);fill:rgba(0,0,0,0.9);height:34px;line-height:1;text-align:center;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:hidden;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}.flatpickr-months .flatpickr-prev-month,.flatpickr-months .flatpickr-next-month{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;text-decoration:none;cursor:pointer;position:absolute;top:0;height:34px;padding:10px;z-index:3;color:rgba(0,0,0,0.9);fill:rgba(0,0,0,0.9)}.flatpickr-months .flatpickr-prev-month.flatpickr-disabled,.flatpickr-months .flatpickr-next-month.flatpickr-disabled{display:none}.flatpickr-months .flatpickr-prev-month i,.flatpickr-months .flatpickr-next-month i{position:relative}.flatpickr-months .flatpickr-prev-month.flatpickr-prev-month,.flatpickr-months .flatpickr-next-month.flatpickr-prev-month{/*\n /*rtl:begin:ignore*/left:0/*\n /*rtl:end:ignore*/}/*\n /*rtl:begin:ignore*/\n/*\n /*rtl:end:ignore*/\n.flatpickr-months .flatpickr-prev-month.flatpickr-next-month,.flatpickr-months .flatpickr-next-month.flatpickr-next-month{/*\n /*rtl:begin:ignore*/right:0/*\n /*rtl:end:ignore*/}/*\n /*rtl:begin:ignore*/\n/*\n /*rtl:end:ignore*/\n.flatpickr-months .flatpickr-prev-month:hover,.flatpickr-months .flatpickr-next-month:hover{color:#959ea9}.flatpickr-months .flatpickr-prev-month:hover svg,.flatpickr-months .flatpickr-next-month:hover svg{fill:#f64747}.flatpickr-months .flatpickr-prev-month svg,.flatpickr-months .flatpickr-next-month svg{width:14px;height:14px}.flatpickr-months .flatpickr-prev-month svg path,.flatpickr-months .flatpickr-next-month svg path{-webkit-transition:fill .1s;transition:fill .1s;fill:inherit}.numInputWrapper{position:relative;height:auto}.numInputWrapper input,.numInputWrapper span{display:inline-block}.numInputWrapper input{width:100%}.numInputWrapper input::-ms-clear{display:none}.numInputWrapper input::-webkit-outer-spin-button,.numInputWrapper input::-webkit-inner-spin-button{margin:0;-webkit-appearance:none}.numInputWrapper span{position:absolute;right:0;width:14px;padding:0 4px 0 2px;height:50%;line-height:50%;opacity:0;cursor:pointer;border:1px solid rgba(57,57,57,0.15);-webkit-box-sizing:border-box;box-sizing:border-box}.numInputWrapper span:hover{background:rgba(0,0,0,0.1)}.numInputWrapper span:active{background:rgba(0,0,0,0.2)}.numInputWrapper span:after{display:block;content:\"\";position:absolute}.numInputWrapper span.arrowUp{top:0;border-bottom:0}.numInputWrapper span.arrowUp:after{border-left:4px solid transparent;border-right:4px solid transparent;border-bottom:4px solid rgba(57,57,57,0.6);top:26%}.numInputWrapper span.arrowDown{top:50%}.numInputWrapper span.arrowDown:after{border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px solid rgba(57,57,57,0.6);top:40%}.numInputWrapper span svg{width:inherit;height:auto}.numInputWrapper span svg path{fill:rgba(0,0,0,0.5)}.numInputWrapper:hover{background:rgba(0,0,0,0.05)}.numInputWrapper:hover span{opacity:1}.flatpickr-current-month{font-size:135%;line-height:inherit;font-weight:300;color:inherit;position:absolute;width:75%;left:12.5%;padding:7.48px 0 0 0;line-height:1;height:34px;display:inline-block;text-align:center;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.flatpickr-current-month span.cur-month{font-family:inherit;font-weight:700;color:inherit;display:inline-block;margin-left:.5ch;padding:0}.flatpickr-current-month span.cur-month:hover{background:rgba(0,0,0,0.05)}.flatpickr-current-month .numInputWrapper{width:6ch;width:7ch\\\\0;display:inline-block}.flatpickr-current-month .numInputWrapper span.arrowUp:after{border-bottom-color:rgba(0,0,0,0.9)}.flatpickr-current-month .numInputWrapper span.arrowDown:after{border-top-color:rgba(0,0,0,0.9)}.flatpickr-current-month input.cur-year{background:transparent;-webkit-box-sizing:border-box;box-sizing:border-box;color:inherit;cursor:text;padding:0 0 0 .5ch;margin:0;display:inline-block;font-size:inherit;font-family:inherit;font-weight:300;line-height:inherit;height:auto;border:0;border-radius:0;vertical-align:initial;-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.flatpickr-current-month input.cur-year:focus{outline:0}.flatpickr-current-month input.cur-year[disabled],.flatpickr-current-month input.cur-year[disabled]:hover{font-size:100%;color:rgba(0,0,0,0.5);background:transparent;pointer-events:none}.flatpickr-current-month .flatpickr-monthDropdown-months{appearance:menulist;background:transparent;border:none;border-radius:0;box-sizing:border-box;color:inherit;cursor:pointer;font-size:inherit;font-family:inherit;font-weight:300;height:auto;line-height:inherit;margin:-1px 0 0 0;outline:none;padding:0 0 0 .5ch;position:relative;vertical-align:initial;-webkit-box-sizing:border-box;-webkit-appearance:menulist;-moz-appearance:menulist;width:auto}.flatpickr-current-month .flatpickr-monthDropdown-months:focus,.flatpickr-current-month .flatpickr-monthDropdown-months:active{outline:none}.flatpickr-current-month .flatpickr-monthDropdown-months:hover{background:rgba(0,0,0,0.05)}.flatpickr-current-month .flatpickr-monthDropdown-months .flatpickr-monthDropdown-month{background-color:transparent;outline:none;padding:0}.flatpickr-weekdays{background:transparent;text-align:center;overflow:hidden;width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;height:28px}.flatpickr-weekdays .flatpickr-weekdaycontainer{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}span.flatpickr-weekday{cursor:default;font-size:90%;background:transparent;color:rgba(0,0,0,0.54);line-height:1;margin:0;text-align:center;display:block;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;font-weight:bolder}.dayContainer,.flatpickr-weeks{padding:1px 0 0 0}.flatpickr-days{position:relative;overflow:hidden;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:flex-start;width:307.875px}.flatpickr-days:focus{outline:0}.dayContainer{padding:0;outline:0;text-align:left;width:307.875px;min-width:307.875px;max-width:307.875px;-webkit-box-sizing:border-box;box-sizing:border-box;display:inline-block;display:-ms-flexbox;display:-webkit-box;display:-webkit-flex;display:flex;-webkit-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-wrap:wrap;-ms-flex-pack:justify;-webkit-justify-content:space-around;justify-content:space-around;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}.dayContainer + .dayContainer{-webkit-box-shadow:-1px 0 0 #e6e6e6;box-shadow:-1px 0 0 #e6e6e6}.flatpickr-day{background:none;border:1px solid transparent;border-radius:150px;-webkit-box-sizing:border-box;box-sizing:border-box;color:#393939;cursor:pointer;font-weight:400;width:14.2857143%;-webkit-flex-basis:14.2857143%;-ms-flex-preferred-size:14.2857143%;flex-basis:14.2857143%;max-width:39px;height:39px;line-height:39px;margin:0;display:inline-block;position:relative;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;text-align:center}.flatpickr-day.inRange,.flatpickr-day.prevMonthDay.inRange,.flatpickr-day.nextMonthDay.inRange,.flatpickr-day.today.inRange,.flatpickr-day.prevMonthDay.today.inRange,.flatpickr-day.nextMonthDay.today.inRange,.flatpickr-day:hover,.flatpickr-day.prevMonthDay:hover,.flatpickr-day.nextMonthDay:hover,.flatpickr-day:focus,.flatpickr-day.prevMonthDay:focus,.flatpickr-day.nextMonthDay:focus{cursor:pointer;outline:0;background:#e6e6e6;border-color:#e6e6e6}.flatpickr-day.today{border-color:#959ea9}.flatpickr-day.today:hover,.flatpickr-day.today:focus{border-color:#959ea9;background:#959ea9;color:#fff}.flatpickr-day.selected,.flatpickr-day.startRange,.flatpickr-day.endRange,.flatpickr-day.selected.inRange,.flatpickr-day.startRange.inRange,.flatpickr-day.endRange.inRange,.flatpickr-day.selected:focus,.flatpickr-day.startRange:focus,.flatpickr-day.endRange:focus,.flatpickr-day.selected:hover,.flatpickr-day.startRange:hover,.flatpickr-day.endRange:hover,.flatpickr-day.selected.prevMonthDay,.flatpickr-day.startRange.prevMonthDay,.flatpickr-day.endRange.prevMonthDay,.flatpickr-day.selected.nextMonthDay,.flatpickr-day.startRange.nextMonthDay,.flatpickr-day.endRange.nextMonthDay{background:#569ff7;-webkit-box-shadow:none;box-shadow:none;color:#fff;border-color:#569ff7}.flatpickr-day.selected.startRange,.flatpickr-day.startRange.startRange,.flatpickr-day.endRange.startRange{border-radius:50px 0 0 50px}.flatpickr-day.selected.endRange,.flatpickr-day.startRange.endRange,.flatpickr-day.endRange.endRange{border-radius:0 50px 50px 0}.flatpickr-day.selected.startRange + .endRange:not(:nth-child(7n+1)),.flatpickr-day.startRange.startRange + .endRange:not(:nth-child(7n+1)),.flatpickr-day.endRange.startRange + .endRange:not(:nth-child(7n+1)){-webkit-box-shadow:-10px 0 0 #569ff7;box-shadow:-10px 0 0 #569ff7}.flatpickr-day.selected.startRange.endRange,.flatpickr-day.startRange.startRange.endRange,.flatpickr-day.endRange.startRange.endRange{border-radius:50px}.flatpickr-day.inRange{border-radius:0;-webkit-box-shadow:-5px 0 0 #e6e6e6,5px 0 0 #e6e6e6;box-shadow:-5px 0 0 #e6e6e6,5px 0 0 #e6e6e6}.flatpickr-day.flatpickr-disabled,.flatpickr-day.flatpickr-disabled:hover,.flatpickr-day.prevMonthDay,.flatpickr-day.nextMonthDay,.flatpickr-day.notAllowed,.flatpickr-day.notAllowed.prevMonthDay,.flatpickr-day.notAllowed.nextMonthDay{color:rgba(57,57,57,0.3);background:transparent;border-color:transparent;cursor:default}.flatpickr-day.flatpickr-disabled,.flatpickr-day.flatpickr-disabled:hover{cursor:not-allowed;color:rgba(57,57,57,0.1)}.flatpickr-day.week.selected{border-radius:0;-webkit-box-shadow:-5px 0 0 #569ff7,5px 0 0 #569ff7;box-shadow:-5px 0 0 #569ff7,5px 0 0 #569ff7}.flatpickr-day.hidden{visibility:hidden}.rangeMode .flatpickr-day{margin-top:1px}.flatpickr-weekwrapper{float:left}.flatpickr-weekwrapper .flatpickr-weeks{padding:0 12px;-webkit-box-shadow:1px 0 0 #e6e6e6;box-shadow:1px 0 0 #e6e6e6}.flatpickr-weekwrapper .flatpickr-weekday{float:none;width:100%;line-height:28px}.flatpickr-weekwrapper span.flatpickr-day,.flatpickr-weekwrapper span.flatpickr-day:hover{display:block;width:100%;max-width:none;color:rgba(57,57,57,0.3);background:transparent;cursor:default;border:none}.flatpickr-innerContainer{display:block;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden}.flatpickr-rContainer{display:inline-block;padding:0;-webkit-box-sizing:border-box;box-sizing:border-box}.flatpickr-time{text-align:center;outline:0;display:block;height:0;line-height:40px;max-height:40px;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.flatpickr-time:after{content:\"\";display:table;clear:both}.flatpickr-time .numInputWrapper{-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;width:40%;height:40px;float:left}.flatpickr-time .numInputWrapper span.arrowUp:after{border-bottom-color:#393939}.flatpickr-time .numInputWrapper span.arrowDown:after{border-top-color:#393939}.flatpickr-time.hasSeconds .numInputWrapper{width:26%}.flatpickr-time.time24hr .numInputWrapper{width:49%}.flatpickr-time input{background:transparent;-webkit-box-shadow:none;box-shadow:none;border:0;border-radius:0;text-align:center;margin:0;padding:0;height:inherit;line-height:inherit;color:#393939;font-size:14px;position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.flatpickr-time input.flatpickr-hour{font-weight:bold}.flatpickr-time input.flatpickr-minute,.flatpickr-time input.flatpickr-second{font-weight:400}.flatpickr-time input:focus{outline:0;border:0}.flatpickr-time .flatpickr-time-separator,.flatpickr-time .flatpickr-am-pm{height:inherit;float:left;line-height:inherit;color:#393939;font-weight:bold;width:2%;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-align-self:center;-ms-flex-item-align:center;align-self:center}.flatpickr-time .flatpickr-am-pm{outline:0;width:18%;cursor:pointer;text-align:center;font-weight:400}.flatpickr-time input:hover,.flatpickr-time .flatpickr-am-pm:hover,.flatpickr-time input:focus,.flatpickr-time .flatpickr-am-pm:focus{background:#eee}.flatpickr-input[readonly]{cursor:pointer}@-webkit-keyframes fpFadeInDown{from{opacity:0;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@keyframes fpFadeInDown{from{opacity:0;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/flatpickr/dist/flatpickr.min.css\"],\"names\":[],\"mappings\":\"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\",\"sourcesContent\":[\".flatpickr-calendar{background:transparent;opacity:0;display:none;text-align:center;visibility:hidden;padding:0;-webkit-animation:none;animation:none;direction:ltr;border:0;font-size:14px;line-height:24px;border-radius:5px;position:absolute;width:307.875px;-webkit-box-sizing:border-box;box-sizing:border-box;-ms-touch-action:manipulation;touch-action:manipulation;background:#fff;-webkit-box-shadow:1px 0 0 #e6e6e6,-1px 0 0 #e6e6e6,0 1px 0 #e6e6e6,0 -1px 0 #e6e6e6,0 3px 13px rgba(0,0,0,0.08);box-shadow:1px 0 0 #e6e6e6,-1px 0 0 #e6e6e6,0 1px 0 #e6e6e6,0 -1px 0 #e6e6e6,0 3px 13px rgba(0,0,0,0.08)}.flatpickr-calendar.open,.flatpickr-calendar.inline{opacity:1;max-height:640px;visibility:visible}.flatpickr-calendar.open{display:inline-block;z-index:99999}.flatpickr-calendar.animate.open{-webkit-animation:fpFadeInDown 300ms cubic-bezier(.23,1,.32,1);animation:fpFadeInDown 300ms cubic-bezier(.23,1,.32,1)}.flatpickr-calendar.inline{display:block;position:relative;top:2px}.flatpickr-calendar.static{position:absolute;top:calc(100% + 2px)}.flatpickr-calendar.static.open{z-index:999;display:block}.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+1) .flatpickr-day.inRange:nth-child(7n+7){-webkit-box-shadow:none !important;box-shadow:none !important}.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+2) .flatpickr-day.inRange:nth-child(7n+1){-webkit-box-shadow:-2px 0 0 #e6e6e6,5px 0 0 #e6e6e6;box-shadow:-2px 0 0 #e6e6e6,5px 0 0 #e6e6e6}.flatpickr-calendar .hasWeeks .dayContainer,.flatpickr-calendar .hasTime .dayContainer{border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.flatpickr-calendar .hasWeeks .dayContainer{border-left:0}.flatpickr-calendar.hasTime .flatpickr-time{height:40px;border-top:1px solid #e6e6e6}.flatpickr-calendar.noCalendar.hasTime .flatpickr-time{height:auto}.flatpickr-calendar:before,.flatpickr-calendar:after{position:absolute;display:block;pointer-events:none;border:solid transparent;content:'';height:0;width:0;left:22px}.flatpickr-calendar.rightMost:before,.flatpickr-calendar.arrowRight:before,.flatpickr-calendar.rightMost:after,.flatpickr-calendar.arrowRight:after{left:auto;right:22px}.flatpickr-calendar.arrowCenter:before,.flatpickr-calendar.arrowCenter:after{left:50%;right:50%}.flatpickr-calendar:before{border-width:5px;margin:0 -5px}.flatpickr-calendar:after{border-width:4px;margin:0 -4px}.flatpickr-calendar.arrowTop:before,.flatpickr-calendar.arrowTop:after{bottom:100%}.flatpickr-calendar.arrowTop:before{border-bottom-color:#e6e6e6}.flatpickr-calendar.arrowTop:after{border-bottom-color:#fff}.flatpickr-calendar.arrowBottom:before,.flatpickr-calendar.arrowBottom:after{top:100%}.flatpickr-calendar.arrowBottom:before{border-top-color:#e6e6e6}.flatpickr-calendar.arrowBottom:after{border-top-color:#fff}.flatpickr-calendar:focus{outline:0}.flatpickr-wrapper{position:relative;display:inline-block}.flatpickr-months{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.flatpickr-months .flatpickr-month{background:transparent;color:rgba(0,0,0,0.9);fill:rgba(0,0,0,0.9);height:34px;line-height:1;text-align:center;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:hidden;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}.flatpickr-months .flatpickr-prev-month,.flatpickr-months .flatpickr-next-month{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;text-decoration:none;cursor:pointer;position:absolute;top:0;height:34px;padding:10px;z-index:3;color:rgba(0,0,0,0.9);fill:rgba(0,0,0,0.9)}.flatpickr-months .flatpickr-prev-month.flatpickr-disabled,.flatpickr-months .flatpickr-next-month.flatpickr-disabled{display:none}.flatpickr-months .flatpickr-prev-month i,.flatpickr-months .flatpickr-next-month i{position:relative}.flatpickr-months .flatpickr-prev-month.flatpickr-prev-month,.flatpickr-months .flatpickr-next-month.flatpickr-prev-month{/*\\n /*rtl:begin:ignore*/left:0/*\\n /*rtl:end:ignore*/}/*\\n /*rtl:begin:ignore*/\\n/*\\n /*rtl:end:ignore*/\\n.flatpickr-months .flatpickr-prev-month.flatpickr-next-month,.flatpickr-months .flatpickr-next-month.flatpickr-next-month{/*\\n /*rtl:begin:ignore*/right:0/*\\n /*rtl:end:ignore*/}/*\\n /*rtl:begin:ignore*/\\n/*\\n /*rtl:end:ignore*/\\n.flatpickr-months .flatpickr-prev-month:hover,.flatpickr-months .flatpickr-next-month:hover{color:#959ea9}.flatpickr-months .flatpickr-prev-month:hover svg,.flatpickr-months .flatpickr-next-month:hover svg{fill:#f64747}.flatpickr-months .flatpickr-prev-month svg,.flatpickr-months .flatpickr-next-month svg{width:14px;height:14px}.flatpickr-months .flatpickr-prev-month svg path,.flatpickr-months .flatpickr-next-month svg path{-webkit-transition:fill .1s;transition:fill .1s;fill:inherit}.numInputWrapper{position:relative;height:auto}.numInputWrapper input,.numInputWrapper span{display:inline-block}.numInputWrapper input{width:100%}.numInputWrapper input::-ms-clear{display:none}.numInputWrapper input::-webkit-outer-spin-button,.numInputWrapper input::-webkit-inner-spin-button{margin:0;-webkit-appearance:none}.numInputWrapper span{position:absolute;right:0;width:14px;padding:0 4px 0 2px;height:50%;line-height:50%;opacity:0;cursor:pointer;border:1px solid rgba(57,57,57,0.15);-webkit-box-sizing:border-box;box-sizing:border-box}.numInputWrapper span:hover{background:rgba(0,0,0,0.1)}.numInputWrapper span:active{background:rgba(0,0,0,0.2)}.numInputWrapper span:after{display:block;content:\\\"\\\";position:absolute}.numInputWrapper span.arrowUp{top:0;border-bottom:0}.numInputWrapper span.arrowUp:after{border-left:4px solid transparent;border-right:4px solid transparent;border-bottom:4px solid rgba(57,57,57,0.6);top:26%}.numInputWrapper span.arrowDown{top:50%}.numInputWrapper span.arrowDown:after{border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px solid rgba(57,57,57,0.6);top:40%}.numInputWrapper span svg{width:inherit;height:auto}.numInputWrapper span svg path{fill:rgba(0,0,0,0.5)}.numInputWrapper:hover{background:rgba(0,0,0,0.05)}.numInputWrapper:hover span{opacity:1}.flatpickr-current-month{font-size:135%;line-height:inherit;font-weight:300;color:inherit;position:absolute;width:75%;left:12.5%;padding:7.48px 0 0 0;line-height:1;height:34px;display:inline-block;text-align:center;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.flatpickr-current-month span.cur-month{font-family:inherit;font-weight:700;color:inherit;display:inline-block;margin-left:.5ch;padding:0}.flatpickr-current-month span.cur-month:hover{background:rgba(0,0,0,0.05)}.flatpickr-current-month .numInputWrapper{width:6ch;width:7ch\\\\0;display:inline-block}.flatpickr-current-month .numInputWrapper span.arrowUp:after{border-bottom-color:rgba(0,0,0,0.9)}.flatpickr-current-month .numInputWrapper span.arrowDown:after{border-top-color:rgba(0,0,0,0.9)}.flatpickr-current-month input.cur-year{background:transparent;-webkit-box-sizing:border-box;box-sizing:border-box;color:inherit;cursor:text;padding:0 0 0 .5ch;margin:0;display:inline-block;font-size:inherit;font-family:inherit;font-weight:300;line-height:inherit;height:auto;border:0;border-radius:0;vertical-align:initial;-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.flatpickr-current-month input.cur-year:focus{outline:0}.flatpickr-current-month input.cur-year[disabled],.flatpickr-current-month input.cur-year[disabled]:hover{font-size:100%;color:rgba(0,0,0,0.5);background:transparent;pointer-events:none}.flatpickr-current-month .flatpickr-monthDropdown-months{appearance:menulist;background:transparent;border:none;border-radius:0;box-sizing:border-box;color:inherit;cursor:pointer;font-size:inherit;font-family:inherit;font-weight:300;height:auto;line-height:inherit;margin:-1px 0 0 0;outline:none;padding:0 0 0 .5ch;position:relative;vertical-align:initial;-webkit-box-sizing:border-box;-webkit-appearance:menulist;-moz-appearance:menulist;width:auto}.flatpickr-current-month .flatpickr-monthDropdown-months:focus,.flatpickr-current-month .flatpickr-monthDropdown-months:active{outline:none}.flatpickr-current-month .flatpickr-monthDropdown-months:hover{background:rgba(0,0,0,0.05)}.flatpickr-current-month .flatpickr-monthDropdown-months .flatpickr-monthDropdown-month{background-color:transparent;outline:none;padding:0}.flatpickr-weekdays{background:transparent;text-align:center;overflow:hidden;width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;height:28px}.flatpickr-weekdays .flatpickr-weekdaycontainer{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}span.flatpickr-weekday{cursor:default;font-size:90%;background:transparent;color:rgba(0,0,0,0.54);line-height:1;margin:0;text-align:center;display:block;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;font-weight:bolder}.dayContainer,.flatpickr-weeks{padding:1px 0 0 0}.flatpickr-days{position:relative;overflow:hidden;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:flex-start;width:307.875px}.flatpickr-days:focus{outline:0}.dayContainer{padding:0;outline:0;text-align:left;width:307.875px;min-width:307.875px;max-width:307.875px;-webkit-box-sizing:border-box;box-sizing:border-box;display:inline-block;display:-ms-flexbox;display:-webkit-box;display:-webkit-flex;display:flex;-webkit-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-wrap:wrap;-ms-flex-pack:justify;-webkit-justify-content:space-around;justify-content:space-around;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}.dayContainer + .dayContainer{-webkit-box-shadow:-1px 0 0 #e6e6e6;box-shadow:-1px 0 0 #e6e6e6}.flatpickr-day{background:none;border:1px solid transparent;border-radius:150px;-webkit-box-sizing:border-box;box-sizing:border-box;color:#393939;cursor:pointer;font-weight:400;width:14.2857143%;-webkit-flex-basis:14.2857143%;-ms-flex-preferred-size:14.2857143%;flex-basis:14.2857143%;max-width:39px;height:39px;line-height:39px;margin:0;display:inline-block;position:relative;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;text-align:center}.flatpickr-day.inRange,.flatpickr-day.prevMonthDay.inRange,.flatpickr-day.nextMonthDay.inRange,.flatpickr-day.today.inRange,.flatpickr-day.prevMonthDay.today.inRange,.flatpickr-day.nextMonthDay.today.inRange,.flatpickr-day:hover,.flatpickr-day.prevMonthDay:hover,.flatpickr-day.nextMonthDay:hover,.flatpickr-day:focus,.flatpickr-day.prevMonthDay:focus,.flatpickr-day.nextMonthDay:focus{cursor:pointer;outline:0;background:#e6e6e6;border-color:#e6e6e6}.flatpickr-day.today{border-color:#959ea9}.flatpickr-day.today:hover,.flatpickr-day.today:focus{border-color:#959ea9;background:#959ea9;color:#fff}.flatpickr-day.selected,.flatpickr-day.startRange,.flatpickr-day.endRange,.flatpickr-day.selected.inRange,.flatpickr-day.startRange.inRange,.flatpickr-day.endRange.inRange,.flatpickr-day.selected:focus,.flatpickr-day.startRange:focus,.flatpickr-day.endRange:focus,.flatpickr-day.selected:hover,.flatpickr-day.startRange:hover,.flatpickr-day.endRange:hover,.flatpickr-day.selected.prevMonthDay,.flatpickr-day.startRange.prevMonthDay,.flatpickr-day.endRange.prevMonthDay,.flatpickr-day.selected.nextMonthDay,.flatpickr-day.startRange.nextMonthDay,.flatpickr-day.endRange.nextMonthDay{background:#569ff7;-webkit-box-shadow:none;box-shadow:none;color:#fff;border-color:#569ff7}.flatpickr-day.selected.startRange,.flatpickr-day.startRange.startRange,.flatpickr-day.endRange.startRange{border-radius:50px 0 0 50px}.flatpickr-day.selected.endRange,.flatpickr-day.startRange.endRange,.flatpickr-day.endRange.endRange{border-radius:0 50px 50px 0}.flatpickr-day.selected.startRange + .endRange:not(:nth-child(7n+1)),.flatpickr-day.startRange.startRange + .endRange:not(:nth-child(7n+1)),.flatpickr-day.endRange.startRange + .endRange:not(:nth-child(7n+1)){-webkit-box-shadow:-10px 0 0 #569ff7;box-shadow:-10px 0 0 #569ff7}.flatpickr-day.selected.startRange.endRange,.flatpickr-day.startRange.startRange.endRange,.flatpickr-day.endRange.startRange.endRange{border-radius:50px}.flatpickr-day.inRange{border-radius:0;-webkit-box-shadow:-5px 0 0 #e6e6e6,5px 0 0 #e6e6e6;box-shadow:-5px 0 0 #e6e6e6,5px 0 0 #e6e6e6}.flatpickr-day.flatpickr-disabled,.flatpickr-day.flatpickr-disabled:hover,.flatpickr-day.prevMonthDay,.flatpickr-day.nextMonthDay,.flatpickr-day.notAllowed,.flatpickr-day.notAllowed.prevMonthDay,.flatpickr-day.notAllowed.nextMonthDay{color:rgba(57,57,57,0.3);background:transparent;border-color:transparent;cursor:default}.flatpickr-day.flatpickr-disabled,.flatpickr-day.flatpickr-disabled:hover{cursor:not-allowed;color:rgba(57,57,57,0.1)}.flatpickr-day.week.selected{border-radius:0;-webkit-box-shadow:-5px 0 0 #569ff7,5px 0 0 #569ff7;box-shadow:-5px 0 0 #569ff7,5px 0 0 #569ff7}.flatpickr-day.hidden{visibility:hidden}.rangeMode .flatpickr-day{margin-top:1px}.flatpickr-weekwrapper{float:left}.flatpickr-weekwrapper .flatpickr-weeks{padding:0 12px;-webkit-box-shadow:1px 0 0 #e6e6e6;box-shadow:1px 0 0 #e6e6e6}.flatpickr-weekwrapper .flatpickr-weekday{float:none;width:100%;line-height:28px}.flatpickr-weekwrapper span.flatpickr-day,.flatpickr-weekwrapper span.flatpickr-day:hover{display:block;width:100%;max-width:none;color:rgba(57,57,57,0.3);background:transparent;cursor:default;border:none}.flatpickr-innerContainer{display:block;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden}.flatpickr-rContainer{display:inline-block;padding:0;-webkit-box-sizing:border-box;box-sizing:border-box}.flatpickr-time{text-align:center;outline:0;display:block;height:0;line-height:40px;max-height:40px;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.flatpickr-time:after{content:\\\"\\\";display:table;clear:both}.flatpickr-time .numInputWrapper{-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;width:40%;height:40px;float:left}.flatpickr-time .numInputWrapper span.arrowUp:after{border-bottom-color:#393939}.flatpickr-time .numInputWrapper span.arrowDown:after{border-top-color:#393939}.flatpickr-time.hasSeconds .numInputWrapper{width:26%}.flatpickr-time.time24hr .numInputWrapper{width:49%}.flatpickr-time input{background:transparent;-webkit-box-shadow:none;box-shadow:none;border:0;border-radius:0;text-align:center;margin:0;padding:0;height:inherit;line-height:inherit;color:#393939;font-size:14px;position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.flatpickr-time input.flatpickr-hour{font-weight:bold}.flatpickr-time input.flatpickr-minute,.flatpickr-time input.flatpickr-second{font-weight:400}.flatpickr-time input:focus{outline:0;border:0}.flatpickr-time .flatpickr-time-separator,.flatpickr-time .flatpickr-am-pm{height:inherit;float:left;line-height:inherit;color:#393939;font-weight:bold;width:2%;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-align-self:center;-ms-flex-item-align:center;align-self:center}.flatpickr-time .flatpickr-am-pm{outline:0;width:18%;cursor:pointer;text-align:center;font-weight:400}.flatpickr-time input:hover,.flatpickr-time .flatpickr-am-pm:hover,.flatpickr-time input:focus,.flatpickr-time .flatpickr-am-pm:focus{background:#eee}.flatpickr-input[readonly]{cursor:pointer}@-webkit-keyframes fpFadeInDown{from{opacity:0;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@keyframes fpFadeInDown{from{opacity:0;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","\"use strict\";\n\n/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n*/\nmodule.exports = function (cssWithMappingToString) {\n var list = [];\n\n // return the list of modules as css string\n list.toString = function toString() {\n return this.map(function (item) {\n var content = \"\";\n var needLayer = typeof item[5] !== \"undefined\";\n if (item[4]) {\n content += \"@supports (\".concat(item[4], \") {\");\n }\n if (item[2]) {\n content += \"@media \".concat(item[2], \" {\");\n }\n if (needLayer) {\n content += \"@layer\".concat(item[5].length > 0 ? \" \".concat(item[5]) : \"\", \" {\");\n }\n content += cssWithMappingToString(item);\n if (needLayer) {\n content += \"}\";\n }\n if (item[2]) {\n content += \"}\";\n }\n if (item[4]) {\n content += \"}\";\n }\n return content;\n }).join(\"\");\n };\n\n // import a list of modules into the list\n list.i = function i(modules, media, dedupe, supports, layer) {\n if (typeof modules === \"string\") {\n modules = [[null, modules, undefined]];\n }\n var alreadyImportedModules = {};\n if (dedupe) {\n for (var k = 0; k < this.length; k++) {\n var id = this[k][0];\n if (id != null) {\n alreadyImportedModules[id] = true;\n }\n }\n }\n for (var _k = 0; _k < modules.length; _k++) {\n var item = [].concat(modules[_k]);\n if (dedupe && alreadyImportedModules[item[0]]) {\n continue;\n }\n if (typeof layer !== \"undefined\") {\n if (typeof item[5] === \"undefined\") {\n item[5] = layer;\n } else {\n item[1] = \"@layer\".concat(item[5].length > 0 ? \" \".concat(item[5]) : \"\", \" {\").concat(item[1], \"}\");\n item[5] = layer;\n }\n }\n if (media) {\n if (!item[2]) {\n item[2] = media;\n } else {\n item[1] = \"@media \".concat(item[2], \" {\").concat(item[1], \"}\");\n item[2] = media;\n }\n }\n if (supports) {\n if (!item[4]) {\n item[4] = \"\".concat(supports);\n } else {\n item[1] = \"@supports (\".concat(item[4], \") {\").concat(item[1], \"}\");\n item[4] = supports;\n }\n }\n list.push(item);\n }\n };\n return list;\n};","\"use strict\";\n\nmodule.exports = function (item) {\n var content = item[1];\n var cssMapping = item[3];\n if (!cssMapping) {\n return content;\n }\n if (typeof btoa === \"function\") {\n var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(cssMapping))));\n var data = \"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(base64);\n var sourceMapping = \"/*# \".concat(data, \" */\");\n return [content].concat([sourceMapping]).join(\"\\n\");\n }\n return [content].join(\"\\n\");\n};","'use strict';\n\nvar m = require('react-dom');\nif (process.env.NODE_ENV === 'production') {\n exports.createRoot = m.createRoot;\n exports.hydrateRoot = m.hydrateRoot;\n} else {\n var i = m.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\n exports.createRoot = function(c, o) {\n i.usingClientEntryPoint = true;\n try {\n return m.createRoot(c, o);\n } finally {\n i.usingClientEntryPoint = false;\n }\n };\n exports.hydrateRoot = function(c, h, o) {\n i.usingClientEntryPoint = true;\n try {\n return m.hydrateRoot(c, h, o);\n } finally {\n i.usingClientEntryPoint = false;\n }\n };\n}\n","/* global Map:readonly, Set:readonly, ArrayBuffer:readonly */\n\nvar hasElementType = typeof Element !== 'undefined';\nvar hasMap = typeof Map === 'function';\nvar hasSet = typeof Set === 'function';\nvar hasArrayBuffer = typeof ArrayBuffer === 'function' && !!ArrayBuffer.isView;\n\n// Note: We **don't** need `envHasBigInt64Array` in fde es6/index.js\n\nfunction equal(a, b) {\n // START: fast-deep-equal es6/index.js 3.1.3\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n // START: Modifications:\n // 1. Extra `has &&` helpers in initial condition allow es6 code\n // to co-exist with es5.\n // 2. Replace `for of` with es5 compliant iteration using `for`.\n // Basically, take:\n //\n // ```js\n // for (i of a.entries())\n // if (!b.has(i[0])) return false;\n // ```\n //\n // ... and convert to:\n //\n // ```js\n // it = a.entries();\n // while (!(i = it.next()).done)\n // if (!b.has(i.value[0])) return false;\n // ```\n //\n // **Note**: `i` access switches to `i.value`.\n var it;\n if (hasMap && (a instanceof Map) && (b instanceof Map)) {\n if (a.size !== b.size) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!b.has(i.value[0])) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!equal(i.value[1], b.get(i.value[0]))) return false;\n return true;\n }\n\n if (hasSet && (a instanceof Set) && (b instanceof Set)) {\n if (a.size !== b.size) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!b.has(i.value[0])) return false;\n return true;\n }\n // END: Modifications\n\n if (hasArrayBuffer && ArrayBuffer.isView(a) && ArrayBuffer.isView(b)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (a[i] !== b[i]) return false;\n return true;\n }\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n // START: Modifications:\n // Apply guards for `Object.create(null)` handling. See:\n // - https://github.com/FormidableLabs/react-fast-compare/issues/64\n // - https://github.com/epoberezkin/fast-deep-equal/issues/49\n if (a.valueOf !== Object.prototype.valueOf && typeof a.valueOf === 'function' && typeof b.valueOf === 'function') return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString && typeof a.toString === 'function' && typeof b.toString === 'function') return a.toString() === b.toString();\n // END: Modifications\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n // END: fast-deep-equal\n\n // START: react-fast-compare\n // custom handling for DOM elements\n if (hasElementType && a instanceof Element) return false;\n\n // custom handling for React/Preact\n for (i = length; i-- !== 0;) {\n if ((keys[i] === '_owner' || keys[i] === '__v' || keys[i] === '__o') && a.$$typeof) {\n // React-specific: avoid traversing React elements' _owner\n // Preact-specific: avoid traversing Preact elements' __v and __o\n // __v = $_original / $_vnode\n // __o = $_owner\n // These properties contain circular references and are not needed when\n // comparing the actual elements (and not their owners)\n // .$$typeof and ._store on just reasonable markers of elements\n\n continue;\n }\n\n // all other properties should be traversed as usual\n if (!equal(a[keys[i]], b[keys[i]])) return false;\n }\n // END: react-fast-compare\n\n // START: fast-deep-equal\n return true;\n }\n\n return a !== a && b !== b;\n}\n// end fast-deep-equal\n\nmodule.exports = function isEqual(a, b) {\n try {\n return equal(a, b);\n } catch (error) {\n if (((error.message || '').match(/stack|recursion/i))) {\n // warn on circular references, don't crash\n // browsers give this different errors name and messages:\n // chrome/safari: \"RangeError\", \"Maximum call stack size exceeded\"\n // firefox: \"InternalError\", too much recursion\"\n // edge: \"Error\", \"Out of stack space\"\n console.warn('react-fast-compare cannot handle circular refs');\n return false;\n }\n // some other error. we should definitely know about these\n throw error;\n }\n};\n","\"use strict\";\n\nvar stylesInDOM = [];\nfunction getIndexByIdentifier(identifier) {\n var result = -1;\n for (var i = 0; i < stylesInDOM.length; i++) {\n if (stylesInDOM[i].identifier === identifier) {\n result = i;\n break;\n }\n }\n return result;\n}\nfunction modulesToDom(list, options) {\n var idCountMap = {};\n var identifiers = [];\n for (var i = 0; i < list.length; i++) {\n var item = list[i];\n var id = options.base ? item[0] + options.base : item[0];\n var count = idCountMap[id] || 0;\n var identifier = \"\".concat(id, \" \").concat(count);\n idCountMap[id] = count + 1;\n var indexByIdentifier = getIndexByIdentifier(identifier);\n var obj = {\n css: item[1],\n media: item[2],\n sourceMap: item[3],\n supports: item[4],\n layer: item[5]\n };\n if (indexByIdentifier !== -1) {\n stylesInDOM[indexByIdentifier].references++;\n stylesInDOM[indexByIdentifier].updater(obj);\n } else {\n var updater = addElementStyle(obj, options);\n options.byIndex = i;\n stylesInDOM.splice(i, 0, {\n identifier: identifier,\n updater: updater,\n references: 1\n });\n }\n identifiers.push(identifier);\n }\n return identifiers;\n}\nfunction addElementStyle(obj, options) {\n var api = options.domAPI(options);\n api.update(obj);\n var updater = function updater(newObj) {\n if (newObj) {\n if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap && newObj.supports === obj.supports && newObj.layer === obj.layer) {\n return;\n }\n api.update(obj = newObj);\n } else {\n api.remove();\n }\n };\n return updater;\n}\nmodule.exports = function (list, options) {\n options = options || {};\n list = list || [];\n var lastIdentifiers = modulesToDom(list, options);\n return function update(newList) {\n newList = newList || [];\n for (var i = 0; i < lastIdentifiers.length; i++) {\n var identifier = lastIdentifiers[i];\n var index = getIndexByIdentifier(identifier);\n stylesInDOM[index].references--;\n }\n var newLastIdentifiers = modulesToDom(newList, options);\n for (var _i = 0; _i < lastIdentifiers.length; _i++) {\n var _identifier = lastIdentifiers[_i];\n var _index = getIndexByIdentifier(_identifier);\n if (stylesInDOM[_index].references === 0) {\n stylesInDOM[_index].updater();\n stylesInDOM.splice(_index, 1);\n }\n }\n lastIdentifiers = newLastIdentifiers;\n };\n};","\"use strict\";\n\nvar memo = {};\n\n/* istanbul ignore next */\nfunction getTarget(target) {\n if (typeof memo[target] === \"undefined\") {\n var styleTarget = document.querySelector(target);\n\n // Special case to return head of iframe instead of iframe itself\n if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {\n try {\n // This will throw an exception if access to iframe is blocked\n // due to cross-origin restrictions\n styleTarget = styleTarget.contentDocument.head;\n } catch (e) {\n // istanbul ignore next\n styleTarget = null;\n }\n }\n memo[target] = styleTarget;\n }\n return memo[target];\n}\n\n/* istanbul ignore next */\nfunction insertBySelector(insert, style) {\n var target = getTarget(insert);\n if (!target) {\n throw new Error(\"Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.\");\n }\n target.appendChild(style);\n}\nmodule.exports = insertBySelector;","\"use strict\";\n\n/* istanbul ignore next */\nfunction insertStyleElement(options) {\n var element = document.createElement(\"style\");\n options.setAttributes(element, options.attributes);\n options.insert(element, options.options);\n return element;\n}\nmodule.exports = insertStyleElement;","\"use strict\";\n\n/* istanbul ignore next */\nfunction setAttributesWithoutAttributes(styleElement) {\n var nonce = typeof __webpack_nonce__ !== \"undefined\" ? __webpack_nonce__ : null;\n if (nonce) {\n styleElement.setAttribute(\"nonce\", nonce);\n }\n}\nmodule.exports = setAttributesWithoutAttributes;","\"use strict\";\n\n/* istanbul ignore next */\nfunction apply(styleElement, options, obj) {\n var css = \"\";\n if (obj.supports) {\n css += \"@supports (\".concat(obj.supports, \") {\");\n }\n if (obj.media) {\n css += \"@media \".concat(obj.media, \" {\");\n }\n var needLayer = typeof obj.layer !== \"undefined\";\n if (needLayer) {\n css += \"@layer\".concat(obj.layer.length > 0 ? \" \".concat(obj.layer) : \"\", \" {\");\n }\n css += obj.css;\n if (needLayer) {\n css += \"}\";\n }\n if (obj.media) {\n css += \"}\";\n }\n if (obj.supports) {\n css += \"}\";\n }\n var sourceMap = obj.sourceMap;\n if (sourceMap && typeof btoa !== \"undefined\") {\n css += \"\\n/*# sourceMappingURL=data:application/json;base64,\".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), \" */\");\n }\n\n // For old IE\n /* istanbul ignore if */\n options.styleTagTransform(css, styleElement, options.options);\n}\nfunction removeStyleElement(styleElement) {\n // istanbul ignore if\n if (styleElement.parentNode === null) {\n return false;\n }\n styleElement.parentNode.removeChild(styleElement);\n}\n\n/* istanbul ignore next */\nfunction domAPI(options) {\n if (typeof document === \"undefined\") {\n return {\n update: function update() {},\n remove: function remove() {}\n };\n }\n var styleElement = options.insertStyleElement(options);\n return {\n update: function update(obj) {\n apply(styleElement, options, obj);\n },\n remove: function remove() {\n removeStyleElement(styleElement);\n }\n };\n}\nmodule.exports = domAPI;","\"use strict\";\n\n/* istanbul ignore next */\nfunction styleTagTransform(css, styleElement) {\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}\nmodule.exports = styleTagTransform;","module.exports = require(\"react-dom\");","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","__webpack_require__.amdD = function () {\n\tthrow new Error('define cannot be used indirect');\n};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.p = \"\";","__webpack_require__.nc = undefined;","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"react\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"prop-types\");","import { createContext } from 'react';\n\nconst AccordionContext = createContext();\n\nexport default AccordionContext;\n","import { createContext } from 'react';\n\nconst AccordionItemContext = createContext();\n\nexport default AccordionItemContext;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nfunction Icon({\n className,\n family,\n type,\n ...rest\n}) {\n function getCSSClasses() {\n const fontFamily = family || 'fa';\n\n return [\n 'tyk-icon',\n fontFamily,\n `${fontFamily}-${type}`,\n className,\n ].filter(Boolean).join(' ');\n }\n\n return ;\n}\n\nIcon.propTypes = {\n className: PropTypes.string,\n family: PropTypes.string,\n type: PropTypes.string.isRequired,\n};\n\nexport default Icon;\n","import React, { useContext } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Icon from '../../Icon';\nimport AccordionItemContext from './AccordionItemContext';\n\nfunction ItemTrigger({ wrap }) {\n const { collapsed, disabled, toggleChange } = useContext(AccordionItemContext);\n\n const iconType = collapsed ? 'chevron-down' : 'chevron-up';\n const classes = [\n 'tyk-accordion__trigger',\n disabled && 'tyk-accordion__trigger--disabled',\n ].filter(Boolean).join(' ');\n const trigger = (\n \n \n \n );\n\n return wrap\n ?
{trigger}
\n : trigger;\n}\n\nItemTrigger.propTypes = {\n wrap: PropTypes.bool,\n};\n\nexport default ItemTrigger;\n","import React, {\n useMemo, useState, useContext, forwardRef,\n} from 'react';\nimport PropTypes from 'prop-types';\n\nimport AccordionContext from './AccordionContext';\nimport AccordionItemContext from './AccordionItemContext';\nimport ItemTrigger from './AccordionItemTrigger';\n\nfunction AccordionItem({\n collapsed: collapsedProp,\n children,\n className,\n disabled,\n}, ref) {\n const { arrow } = useContext(AccordionContext);\n const [collapsed, setCollapsed] = useState(collapsedProp);\n\n const toggleChange = () => {\n if (disabled) {\n return;\n }\n\n setCollapsed(!collapsed);\n };\n\n const classes = useMemo(() => [\n 'tyk-accordion__item',\n arrow.expandToContent\n ? `tyk-accordion__item--trigger-position-${arrow.position}`\n : 'tyk-accordion__item--trigger-in-header',\n className,\n collapsed === false && 'tyk-accordion__item--active',\n ].filter(Boolean).join(' '), [arrow, className, collapsed]);\n\n const contextValue = useMemo(() => ({\n collapsed,\n disabled,\n toggleChange,\n }), [collapsed, disabled, toggleChange]);\n\n return (\n
\n \n {arrow.expandToContent && (\n \n )}\n {children}\n \n
\n );\n}\n\nAccordionItem.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n collapsed: PropTypes.bool,\n className: PropTypes.string,\n disabled: PropTypes.bool,\n};\n\nAccordionItem.defaultProps = {\n collapsed: false,\n};\n\nexport default forwardRef(AccordionItem);\n","import React, { useContext } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Icon from '../../Icon';\nimport AccordionContext from './AccordionContext';\nimport AccordionItemContext from './AccordionItemContext';\nimport ItemTrigger from './AccordionItemTrigger';\n\nfunction AccordionItemHeader({ className, children }) {\n const { collapsed, disabled, toggleChange } = useContext(AccordionItemContext);\n const { usearrowastrigger, arrow } = useContext(AccordionContext);\n const iconType = collapsed ? 'chevron-down' : 'chevron-up';\n const classes = [\n 'tyk-accordion__item-header',\n usearrowastrigger && 'tyk-accordion__arrow-trigger',\n className,\n ].filter(Boolean).join(' ');\n\n return (\n
\n {\n !usearrowastrigger\n ? (\n \n {children}\n \n \n )\n : (\n <>\n {!arrow.expandToContent && arrow.position === 'left' && (\n \n )}\n
{children}
\n {!arrow.expandToContent && arrow.position === 'right' && (\n \n )}\n \n )\n }\n
\n );\n}\n\nAccordionItemHeader.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n className: PropTypes.string,\n};\n\nexport default AccordionItemHeader;\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"react-transition-group\");","import { useEffect, useRef } from 'react';\n\nconst usePrevious = (value) => {\n const ref = useRef();\n useEffect(() => {\n ref.current = value;\n }, [value]);\n return ref.current;\n};\n\n/** @component */\nexport default usePrevious;\n","import { useEffect, useRef } from 'react';\n\nconst useTimeout = (callback, delay) => {\n const savedCallback = useRef();\n\n useEffect(() => {\n savedCallback.current = callback;\n },\n [callback]);\n\n useEffect(() => {\n function tick() {\n savedCallback.current();\n }\n if (delay !== null) {\n const id = setTimeout(tick, delay);\n return () => clearTimeout(id);\n }\n\n return () => {};\n },\n [delay]);\n};\n\n/** @component */\nexport default useTimeout;\n","import { useEffect, useRef } from 'react';\n\n/** @component */\nexport default function useInterval(callback, delay, ...args) {\n const savedCallback = useRef();\n\n useEffect(() => {\n savedCallback.current = callback;\n }, [callback]);\n\n /* eslint-disable consistent-return */\n useEffect(() => {\n function tick() {\n savedCallback.current(...args);\n }\n if (delay !== null && delay !== undefined) {\n const id = setInterval(tick, delay);\n return () => clearInterval(id);\n }\n }, [delay]);\n /* eslint-disable consistent-return */\n}\n","import { useEffect, useRef } from 'react';\n\nconst useEventListener = (eventName, handler, element) => {\n const savedHandler = useRef();\n useEffect(() => {\n savedHandler.current = handler;\n }, [handler]);\n\n useEffect(() => {\n const isSupported = element?.addEventListener;\n if (!isSupported) {\n // eslint-disable-next-line consistent-return\n return;\n }\n\n const eventListener = (event) => savedHandler.current(event);\n element.addEventListener(eventName, eventListener);\n\n // eslint-disable-next-line consistent-return\n return () => {\n element.removeEventListener(eventName, eventListener);\n };\n }, [eventName, element]);\n};\n\n/** @component */\nexport default useEventListener;\n","import { useCallback, useState, useLayoutEffect } from 'react';\n\nconst getSize = (el) => {\n if (!el) {\n return {\n width: 0,\n height: 0,\n };\n }\n\n return {\n width: el.offsetWidth,\n height: el.offsetHeight,\n };\n};\n\nconst useComponentSize = (ref) => {\n const [ComponentSize, setComponentSize] = useState(getSize(ref ? ref.current : {}));\n const handleResize = useCallback(() => {\n if (ref.current) {\n setComponentSize(getSize(ref.current));\n }\n }, [ref]);\n\n useLayoutEffect(() => {\n handleResize();\n\n let resizeObserver = new ResizeObserver(() => {\n handleResize();\n });\n resizeObserver.observe(ref.current);\n\n return () => {\n resizeObserver.disconnect(ref.current);\n resizeObserver = null;\n };\n }, [ref.current]);\n\n return ComponentSize;\n};\n\n/** @component */\nexport default useComponentSize;\n","import React, {\n useRef, useState, useCallback, useEffect,\n} from 'react';\nimport PropTypes from 'prop-types';\nimport { CSSTransition } from 'react-transition-group';\nimport { useEventListener, useComponentSize } from '../../hooks';\n\n/**\n * Collapsible is a component that helps you to collapse/expand any type of content\n */\nfunction Collapsible({\n className,\n collapsed,\n children,\n ...rest\n}) {\n const contentContainer = useRef(null);\n const collapseWrapper = useRef(null);\n const refContainerSize = useComponentSize(contentContainer);\n const [contentContainerStyle, setContentContainerStyle] = useState({\n // eslint-disable-next-line\n height: (collapsed) ? 0 : 'auto',\n });\n\n const setHeight = (height) => {\n setContentContainerStyle({\n height: `${height}px`,\n });\n };\n\n const getHeight = () => (contentContainer.current ? contentContainer.current.clientHeight : 0);\n\n const onEnter = () => {\n setHeight(getHeight());\n };\n\n const onExit = () => {\n setHeight(0);\n };\n\n useEffect(() => {\n if (!collapsed\n && refContainerSize?.height\n && contentContainerStyle.height !== refContainerSize?.height\n ) {\n setHeight(refContainerSize.height);\n }\n }, [refContainerSize.height]);\n\n const onWindowResize = useCallback(() => {\n if (!collapsed && contentContainer.current) {\n setHeight(getHeight());\n collapseWrapper.current.style.height = `${getHeight()}px`;\n }\n }, [collapsed, contentContainer.current]);\n\n useEventListener('resize', onWindowResize, window);\n\n return (\n \n \n \n { children }\n \n \n \n );\n}\n\nCollapsible.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]),\n /** Describes if the content of Collapsible should be hidden or not */\n collapsed: PropTypes.bool,\n /** CSS classes that can be passed to the Collapsible element */\n className: PropTypes.string,\n};\n\nexport default Collapsible;\n","import React, { useContext } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Collapsible from '../../Collapsible';\nimport AccordionItemContext from './AccordionItemContext';\n\nfunction AccordionItemContent({ children, className }) {\n const { collapsed } = useContext(AccordionItemContext);\n\n const classes = [\n 'tyk-accordion__item-content',\n className,\n ].filter(Boolean).join(' ');\n\n return (\n
\n \n { children }\n \n
\n );\n}\n\nAccordionItemContent.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n className: PropTypes.string,\n};\n\nexport default AccordionItemContent;\n","import React, { useMemo } from 'react';\nimport PropTypes from 'prop-types';\nimport AccordionItem from './js/AccordionItem';\nimport AccordionItemHeader from './js/AccordionItemHeader';\nimport AccordionItemContent from './js/AccordionItemContent';\nimport AccordionContext from './js/AccordionContext';\n\nfunction Accordion({\n className,\n children,\n usearrowastrigger,\n arrow = { position: 'right', expandToContent: false },\n}) {\n const classes = [\n 'tyk-accordion',\n className,\n ].filter(Boolean).join(' ');\n\n const contextValue = useMemo(() => ({\n usearrowastrigger,\n arrow,\n }), [usearrowastrigger, arrow]);\n\n return (\n
\n \n {children}\n \n
\n );\n}\n\nAccordion.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n className: PropTypes.string,\n usearrowastrigger: PropTypes.bool,\n arrow: PropTypes.shape({\n position: PropTypes.oneOf(['left', 'right']),\n expandToContent: PropTypes.bool,\n }),\n};\n\nAccordion.defaultProps = {\n usearrowastrigger: false,\n};\n\n// For Readme.md : Start\nAccordion.Item = AccordionItem;\nAccordion.Item.Header = AccordionItemHeader;\nAccordion.Item.Content = AccordionItemContent;\n// For Readme.md : End\n\nexport default Accordion;\n","import React, { Fragment, cloneElement } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Icon from '../Icon';\n\n/**\n * Button component.\n */\nconst Button = React.forwardRef((props, ref) => {\n const {\n customButton,\n children,\n iconType,\n iconFamily,\n iconPosition,\n iconOnly,\n id,\n className,\n disabled,\n display,\n href,\n onClick,\n noStyle,\n size,\n theme,\n type,\n ...rest\n } = props;\n\n const getCssClasses = () => {\n const cssClasses = ['tyk-button'].concat(className ? className.split(' ') : []);\n const sizeClass = (size) ? `tyk-button--${size}` : 'tyk-button--md';\n const disabledClass = (disabled) ? 'disabled' : '';\n const displayClass = display || '';\n const themeClass = theme ? `tyk-button--${theme}` : '';\n const iconOnlyClass = iconOnly ? 'tyk-button--icon-only' : '';\n const noStyleClass = noStyle ? 'tyk-button--no-style' : '';\n\n cssClasses.push(iconOnlyClass);\n cssClasses.push(themeClass);\n cssClasses.push(sizeClass);\n cssClasses.push(disabledClass);\n cssClasses.push(displayClass);\n cssClasses.push(noStyleClass);\n\n if (iconType) {\n cssClasses.push(`icon-${iconPosition || 'left'}`);\n }\n\n return cssClasses.join(' ');\n };\n\n const getButtonIcon = (position) => {\n const iPos = iconPosition || 'left';\n\n return (\n (iconType && iPos === position)\n ? \n : null\n );\n };\n\n const getButtonType = () => {\n let buttonType;\n\n if (customButton) {\n return (\n \n { cloneElement(customButton, {\n className: getCssClasses(),\n disabled,\n })\n }\n \n );\n }\n\n if (href) {\n buttonType = (\n \n { getButtonIcon('left') }\n { children }\n { getButtonIcon('right') }\n \n );\n } else {\n buttonType = (\n // eslint-disable-next-line react/button-has-type\n \n { getButtonIcon('left') }\n { children && {children} }\n { getButtonIcon('right') }\n \n );\n }\n\n return buttonType;\n };\n\n\n return (\n getButtonType()\n );\n});\n\nButton.propTypes = {\n /**\n * Content of a button. Can be a DOM element or a React component\n */\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n customButton: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n ]),\n className: PropTypes.string,\n /**\n * Display type: inline/block. Default is inline\n */\n display: PropTypes.string,\n /**\n * Sets the button disabled state\n */\n disabled: PropTypes.bool,\n /**\n * Having this property set the button will become a link\n */\n id: PropTypes.string,\n href: PropTypes.string,\n iconPosition: PropTypes.string, // left or right\n iconFamily: PropTypes.string,\n iconOnly: PropTypes.bool,\n iconType: PropTypes.string,\n noStyle: PropTypes.bool,\n /**\n * Callback function, called when the button si clicked\n */\n onClick: PropTypes.func,\n /**\n * Describes the appearence of the button (ex: primary, danger, primary-outline etc.)\n */\n theme: PropTypes.string,\n /**\n * Type of the button (ex: button, submit etc.)\n */\n type: PropTypes.string,\n /**\n * Describes the size of the button (sm, md, lg). Default one is md\n */\n size: PropTypes.string,\n};\n\nButton.defaultProps = {\n theme: '',\n type: 'button',\n};\n\nexport default Button;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\n/**\n * Tyk button component.\n */\nfunction ButtonGroup({\n className,\n children,\n label,\n}) {\n return (\n
\n {Boolean(label) && (\n \n )}\n
\n {children}\n
\n
\n );\n}\n\nButtonGroup.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n className: PropTypes.string,\n /**\n * Label that will sit above the button group\n */\n label: PropTypes.string,\n};\n\nexport default ButtonGroup;\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"echarts\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"immutable\");","export default (func, wait, immediate) => {\n let timeout;\n return function debouncer(...args) {\n const context = this;\n const later = () => {\n timeout = null;\n if (!immediate) {\n func.apply(context, args);\n }\n };\n const callNow = immediate && !timeout;\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n if (callNow) {\n func.apply(context, args);\n }\n };\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nfunction Loader({ className, position = 'relative', withbackground = false }) {\n const classes = [\n 'loading',\n position,\n className,\n ].filter(Boolean).join(' ');\n\n const loader = (\n
\n
\n
\n
\n
\n
\n );\n\n return withbackground\n ?
{loader}
\n : loader;\n}\n\nLoader.propTypes = {\n /** add a class to loader */\n className: PropTypes.string,\n /** position of loader (absolute / relative) */\n position: PropTypes.string,\n /** defines weather loader should be renders with or without background */\n withbackground: PropTypes.bool,\n};\n\nexport default Loader;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport Icon from '../Icon';\n\n/**\n * The Message component is used to highlight important content to the users.\n *\n * If the content you are displaying needs immediate attention or is a feedback,\n * consider using `toast` instead\n */\nfunction Message({\n children, theme, onClose, noMargin, className,\n}) {\n function getCssClasses() {\n return [\n 'tyk-message',\n `tyk-message--${theme || 'info'}`,\n noMargin && 'no-margin',\n className,\n ].filter(Boolean).join(' ');\n }\n\n const iconType = theme === 'success' ? 'check' : 'warning';\n\n return (\n
\n \n
\n { children }\n
\n {onClose && (\n \n )}\n
\n );\n}\n\nMessage.propTypes = {\n /** Set theme for message (eg. default, success, danger, etc) */\n theme: PropTypes.string,\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]),\n /** add a class to loader */\n className: PropTypes.string,\n /** Removes margins by adding `no-margin` class */\n noMargin: PropTypes.bool,\n /** Callback for clicking on the \"x\" */\n onClose: PropTypes.func,\n};\n\nexport default Message;\n","import React, {\n useState, useEffect, useRef, memo,\n} from 'react';\nimport PropTypes from 'prop-types';\nimport * as echarts from 'echarts';\nimport { fromJS } from 'immutable';\n\nimport debounce from '../../utils/debounce';\nimport { usePrevious } from '../../hooks';\nimport Loader from '../Loader';\nimport Message from '../Message';\nimport worldMap from './maps/world.json';\n\necharts.registerMap('world', worldMap);\n\nconst Chart = (props) => {\n const {\n areaStyleColors,\n dataLoaded,\n hasData,\n highlight,\n type,\n option,\n series,\n onChange,\n zoomStart,\n zoomEnd,\n title,\n seriesConfig = [],\n noDataComponent = null,\n zoomColors,\n } = props;\n const [tykChartInstance, setTykChartInstance] = useState(null);\n const chartWrapperRef = useRef(null);\n const onResize = () => {\n if (tykChartInstance) {\n tykChartInstance.resize();\n }\n };\n\n const lineBarChart = {\n defaultOpts: fromJS({\n title: {\n show: true,\n text: title,\n left: 0,\n },\n color: [],\n toolbox: {\n right: '0',\n orient: 'horizontal',\n itemSize: 15,\n showTitle: true,\n feature: null,\n },\n dataZoom: [{\n show: true,\n start: 0,\n end: 100,\n orient: 'horizontal',\n dataBackground: {\n lineStyle: {\n color: zoomColors?.lineStyle || '#368493',\n },\n areaStyle: {\n color: zoomColors?.areaStyle || '#368493',\n },\n },\n handleStyle: {\n color: zoomColors?.handleStyle || '#368493',\n },\n textStyle: {\n color: zoomColors?.textStyle || '#368493',\n },\n borderColor: 'transparent',\n fillerColor: zoomColors?.fillerColor || 'rgba(54, 132, 147, 0.1)',\n }],\n legend: {\n show: false,\n // data: [],\n // right: '1%',\n },\n tooltip: {\n trigger: 'axis',\n axisPointer: {\n type: 'cross',\n },\n },\n grid: {\n left: '1%',\n right: '1%',\n bottom: '50px',\n top: '40px',\n containLabel: true,\n },\n xAxis: {\n boundaryGap: false,\n type: 'category',\n splitLine: {\n show: true,\n lineStyle: {\n type: 'dotted',\n color: '#F0F0F0',\n },\n },\n axisLine: {\n show: false,\n },\n axisTick: {\n show: false,\n },\n data: [],\n },\n yAxis: {\n min: 'dataMin',\n boundaryGap: true,\n axisPointer: {\n show: true,\n },\n splitLine: {\n lineStyle: {\n type: 'dotted',\n color: '#F0F0F0',\n },\n show: true,\n },\n axisLabel: {\n show: true,\n },\n axisLine: {\n show: true,\n },\n axisTick: {\n show: false,\n },\n type: 'value',\n },\n textStyle: {\n color: '#5a5a68',\n },\n series: [],\n animationEasing: 'elasticOut',\n }),\n seriesDefault: fromJS({\n data: [],\n type: 'line',\n areaStyle: {\n opacity: 1,\n color: areaStyleColors ? new echarts.graphic.LinearGradient(0, 0, 1, 1,\n areaStyleColors.map((color, index) => ({\n offset: index,\n color,\n }))) : [],\n },\n smooth: false,\n symbolSize: 7,\n name: '',\n }),\n };\n\n const pieChart = {\n defaultOpts: fromJS({\n tooltip: {\n trigger: 'axis',\n formatter: '{b}: {c} ({d}%)',\n },\n legend: {\n orient: 'horizontal',\n x: 'left',\n y: 'top',\n data: [],\n },\n color: [],\n series: [],\n }),\n seriesDefault: fromJS({\n type: 'pie',\n center: [\n '50%',\n '55%',\n ],\n radius: [\n '50%',\n '75%',\n ],\n avoidLabelOverlap: false,\n animationType: 'scale',\n animationEasing: 'elasticOut',\n labelLine: {\n normal: {\n show: true,\n smooth: 0.2,\n length: 6,\n length2: 6,\n },\n },\n data: [],\n }),\n };\n\n const geoChart = {\n defaultOpts: fromJS({\n series: [],\n }),\n seriesDefault: fromJS({\n type: 'map',\n data: [],\n }),\n };\n\n const buildChartOptions = (selectedType, selectedOptions, selectedSeries) => {\n let finalOpts = {};\n switch (selectedType) {\n case 'pie': {\n finalOpts = pieChart.defaultOpts.mergeDeep(fromJS(selectedOptions)).toJS();\n\n selectedSeries.forEach((entry) => {\n finalOpts.series.push(pieChart.seriesDefault.mergeDeep(fromJS(entry)).toJS());\n });\n\n break;\n }\n\n case 'geo': {\n finalOpts = geoChart.defaultOpts.mergeDeep(fromJS(selectedOptions)).toJS();\n\n selectedSeries.forEach((entry) => {\n finalOpts.series.push(geoChart.seriesDefault.mergeDeep(fromJS(entry)).toJS());\n });\n\n break;\n }\n\n default: {\n finalOpts = lineBarChart.defaultOpts.mergeDeep(fromJS(selectedOptions)).toJS();\n if (Array.isArray(selectedOptions.yAxis)) {\n finalOpts.yAxis = selectedOptions.yAxis;\n }\n\n selectedSeries.forEach((entry, index) => {\n const seriesData = Object.assign(\n {},\n lineBarChart.seriesDefault.toJS(),\n seriesConfig[index], entry,\n );\n finalOpts.series.push(seriesData);\n });\n break;\n }\n }\n return finalOpts;\n };\n\n useEffect(() => {\n window.addEventListener('resize', onResize);\n\n return () => {\n window.removeEventListener('resize', onResize);\n };\n }, [tykChartInstance]);\n\n useEffect(() => {\n\n if (!chartWrapperRef?.current) {\n return;\n }\n\n setTykChartInstance(echarts.init(chartWrapperRef.current));\n return () => {\n if (tykChartInstance) {\n tykChartInstance.dispose();\n }\n };\n }, [chartWrapperRef.current]);\n\n const eventCallBack = (e) => {\n if (onChange) {\n onChange(e);\n }\n };\n\n useEffect(() => {\n let debouncedMethod;\n if (tykChartInstance) {\n debouncedMethod = debounce(eventCallBack, 500);\n tykChartInstance.on('dataZoom', debouncedMethod);\n tykChartInstance.on('restore', debouncedMethod);\n tykChartInstance.on('click', debouncedMethod);\n\n tykChartInstance.on('mousemove', (params) => {\n if (params.data) {\n tykChartInstance.getZr().setCursorStyle('pointer');\n }\n });\n }\n\n return () => {\n if (tykChartInstance) {\n tykChartInstance.off('dataZoom', debouncedMethod);\n tykChartInstance.off('restore', debouncedMethod);\n tykChartInstance.off('click', debouncedMethod);\n }\n };\n }, [tykChartInstance, onChange]);\n\n const prevInstance = usePrevious(tykChartInstance);\n const prevOption = usePrevious(option);\n const prevType = usePrevious(type);\n const prevSeries = usePrevious(series);\n useEffect(() => {\n if (\n tykChartInstance\n && (\n !fromJS(prevInstance)?.equals?.(fromJS(tykChartInstance))\n || !fromJS(prevOption)?.equals?.(fromJS(option))\n || (prevType !== type)\n || !fromJS(prevSeries).equals?.(fromJS(series))\n )\n ) {\n tykChartInstance.clear();\n tykChartInstance.setOption(buildChartOptions(type, option, series));\n tykChartInstance.dispatchAction({\n type: 'takeGlobalCursor',\n key: 'dataZoomSelect',\n dataZoomSelectActive: true,\n });\n }\n }, [tykChartInstance, option, series, type]);\n\n useEffect(() => {\n if (tykChartInstance && highlight) {\n tykChartInstance.dispatchAction({\n type: 'highlight',\n seriesIndex: highlight.seriesIndex,\n dataIndex: highlight.dataIndex,\n });\n tykChartInstance.dispatchAction({\n type: 'showTip',\n seriesIndex: highlight.seriesIndex,\n dataIndex: highlight.dataIndex,\n });\n }\n }, [highlight]);\n\n\n const prevZoomStart = usePrevious(zoomStart);\n const prevZoomEnd = usePrevious(zoomEnd);\n useEffect(() => {\n if (\n tykChartInstance\n && zoomStart !== -1\n && zoomEnd !== -1\n && (\n prevZoomStart !== zoomStart\n || prevZoomEnd !== zoomEnd\n )\n ) {\n tykChartInstance.dispatchAction({\n type: 'dataZoom',\n startValue: zoomStart,\n endValue: zoomEnd,\n });\n }\n }, [zoomStart, zoomEnd]);\n\n const getStyle = () => {\n const { style } = props;\n const tempStyle = style || {};\n\n if (!tempStyle.height) {\n tempStyle.height = '300px';\n }\n if (!tempStyle.width) {\n tempStyle.width = '100%';\n }\n return tempStyle;\n };\n\n const chartHasData = () => (\n (dataLoaded && (hasData === false || hasData === true)) ? hasData : true\n );\n\n const getCssClasses = () => {\n const cssClasses = ['tyk-chart'];\n\n if (!dataLoaded) {\n cssClasses.push('tyk-chart--loading-chart');\n }\n\n if (!chartHasData()) {\n cssClasses.push('tyk-chart--no-data');\n }\n\n return cssClasses.join(' ');\n };\n\n return (\n
\n {\n !dataLoaded\n ? \n : null\n }\n \n {\n /* eslint-disable-next-line no-nested-ternary */\n chartHasData()\n ? null\n : noDataComponent\n ? noDataComponent()\n : (\n \n No data to display\n \n )\n }\n
\n );\n};\n\nChart.propTypes = {\n areaStyleColors: PropTypes.instanceOf(Array),\n dataLoaded: PropTypes.bool,\n hasData: PropTypes.bool,\n highlight: PropTypes.oneOfType([\n PropTypes.number,\n PropTypes.string,\n PropTypes.instanceOf(Array),\n ]),\n noDataComponent: PropTypes.func,\n zoomStart: PropTypes.number,\n zoomEnd: PropTypes.number,\n zoomColors: PropTypes.instanceOf(Object),\n option: PropTypes.instanceOf(Object),\n onChange: PropTypes.func,\n style: PropTypes.instanceOf(Object),\n type: PropTypes.string,\n title: PropTypes.string,\n series: PropTypes.instanceOf(Array),\n seriesConfig: PropTypes.instanceOf(Object),\n};\n\nexport default memo(Chart);\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport Message from '../../Message';\nimport { useTimeout } from '../../../hooks';\n\nconst ToastMessage = (props) => {\n const {\n children,\n options,\n onClose,\n index,\n } = props;\n const opts = Object.assign({\n theme: 'success',\n delay: 3000,\n }, options);\n let timer;\n\n const handleClose = (itemIndex) => {\n onClose(itemIndex);\n clearTimeout(timer);\n };\n\n useTimeout(() => handleClose(index), opts.delay);\n\n return (\n handleClose(index)}\n >\n {children}\n \n );\n};\n\nToastMessage.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]),\n options: PropTypes.instanceOf(Object),\n onClose: PropTypes.func,\n index: PropTypes.number,\n};\n\nexport default ToastMessage;\n","import React, {\n useEffect, useState,\n} from 'react';\nimport PropTypes from 'prop-types';\n\nimport ToastMessage from './ToastMessage';\n\nconst ToastContainer = (props) => {\n const [messages, setMessages] = useState({});\n const {\n notify,\n } = props;\n\n const updateNotifications = (message, options) => {\n const msgID = Math.floor(Math.random() * 1000000);\n \n setMessages((prevMessages) => ({\n ...prevMessages,\n [msgID]: {\n message,\n options,\n }\n }));\n };\n\n useEffect(() => {\n notify(updateNotifications);\n }, [messages]);\n\n const onMessageClosed = (index) => {\n const tempMessages = {...messages};\n delete tempMessages[index];\n setMessages((prevMessages) => {\n const { [index]: messageToBeRemoved, ...restMessages } = prevMessages;\n return restMessages;\n });\n };\n\n return (\n
\n {\n Object.keys(messages).map((msgID) => (\n messages[msgID]\n ? (\n \n {messages[msgID].message}\n \n )\n : null\n ))\n }\n
\n );\n};\n\nToastContainer.propTypes = {\n notify: PropTypes.func,\n};\n\nexport default ToastContainer;\n","import React from 'react';\nimport { createRoot } from 'react-dom/client';\nimport ToastContainer from './js/ToastContainer';\n/**\n * Toast is a service that displays dialogs\n * on the bottom right part of the screen.\n *\n * The dialogs can have one of the Tyk UI themes, so that\n * it would match it's purpose (i.e success message, error message)\n *\n */\nclass ToastCreator {\n constructor() {\n const el = document.createElement('div');\n el.className = 'tyk-toast';\n document.body.appendChild(el);\n const root = createRoot(el);\n root.render();\n }\n\n bindNotify = (fn) => {\n this.createNotification = fn;\n };\n\n notify(message, options) {\n if (this.createNotification) {\n this.createNotification(message, options);\n }\n }\n\n danger(message, options) {\n this.notify(message, { ...options, theme: 'danger' });\n }\n\n success(message, options) {\n this.notify(message, { ...options, theme: 'success' });\n }\n\n warning(message, options) {\n this.notify(message, { ...options, theme: 'warning' });\n }\n\n info(message, options) {\n this.notify(message, { ...options, theme: 'info' });\n }\n}\n\nconst toast = new ToastCreator();\n\nexport default toast;\n","import React, { Fragment, createRef, useCallback } from 'react';\nimport PropTypes from 'prop-types';\n\nimport toast from '../Toast';\n\n/**\n * - CopyToClipboard is used to copy string for a user.\n * - Can be used normally with a text or a custom components (Eg. Button, Icon, etc)\n */\n\nconst CopyToClipboard = (props) => {\n const {\n display, copy, children, onCopy,\n } = props;\n const txtRef = createRef();\n const handleClick = useCallback(() => {\n if (onCopy) {\n onCopy();\n }\n\n if (!window.navigator.clipboard) {\n txtRef.current.select();\n document.execCommand('copy');\n toast.notify('copied', { theme: 'success' });\n return;\n }\n window.navigator.clipboard.writeText(copy);\n toast.notify('copied', { theme: 'success' });\n }, [onCopy, txtRef]);\n\n return (\n \n \n {children || display}\n \n {!window.navigator.clipboard ? (\n \n ) : null}\n \n );\n};\n\nCopyToClipboard.propTypes = {\n /** Callback function executed after text is copied */\n onCopy: PropTypes.func,\n /** Text to be copied */\n copy: PropTypes.string.isRequired,\n /** Text to be displayed */\n display: PropTypes.string,\n /** Children of custom element if you are using any custom element */\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.string,\n PropTypes.object,\n PropTypes.node,\n ]),\n};\n\nexport default CopyToClipboard;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nfunction ModalFooter({ children }) {\n return (\n
\n { children }\n
\n );\n}\n\nModalFooter.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]),\n};\n\nexport default ModalFooter;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nfunction ModalBody({ children }) {\n return (\n
\n { children }\n
\n );\n}\n\nModalBody.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]),\n};\n\nexport default ModalBody;\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport { CSSTransition } from 'react-transition-group';\n\nimport Icon from '../Icon';\nimport ModalFooter from './js/ModalFooter';\nimport ModalBody from './js/ModalBody';\n\n/**\n * Modals add dialogs confirmation boxes, notifications, or completely custom content\n * - only one Modal can be opened at a time\n * - are unmounted when Modal is closed\n */\nfunction Modal({\n children,\n theme = 'none',\n disableCloseCommands = false,\n opened = false,\n onClose = () => {},\n size = 'md',\n className = '',\n showBackdrop = true,\n ...restProps\n}) {\n const modalClasses = [\n 'tyk-modal',\n `tyk-modal--theme-${theme}`,\n opened && 'opened',\n ].concat(className.split(' ')).filter(Boolean).join(' ');\n\n const backdropClasses = [\n 'tyk-modal__backdrop',\n opened && 'opened',\n ].filter(Boolean).join(' ');\n\n const themeIcon = {\n success: 'check',\n warning: 'warning',\n danger: 'delete',\n }[theme];\n\n return (\n <>\n {\n ReactDOM.createPortal(\n \n
\n
\n
\n {theme !== 'none' && (\n
\n \n
\n )}\n { children }\n
\n
\n
\n ,\n document.querySelector('body'),\n )\n }\n {showBackdrop && ReactDOM.createPortal(\n \n !disableCloseCommands && onClose()}\n onKeyDown={() => {}}\n type=\"button\"\n aria-label=\"Close\"\n />\n ,\n document.querySelector('body'),\n )}\n \n );\n}\n\nModal.Body = ModalBody;\nModal.Footer = ModalFooter;\n/* eslint-disable-next-line */\nModal.Header = ({ children }) => {\n console.warn('%cModal.Header%c is deprecated.', 'font-weight: bold', '');\n return (\n
\n { children }\n
\n );\n};\n/* eslint-disable-next-line */\nModal.Title = ({ children }) => {\n console.warn('%cModal.Title%c is deprecated.', 'font-weight: bold', '');\n return (\n

\n { children }\n

\n );\n};\n\nModal.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]),\n className: PropTypes.string,\n /** one of \"success\", \"warning\", \"danger\", \"none\"; default is \"none\" */\n theme: PropTypes.string,\n /** If set on true, the Modal won't close when clicking on the overlay or by pressing ESC key */\n disableCloseCommands: PropTypes.bool,\n /** If true the Modal will be by default opened */\n opened: PropTypes.bool,\n /** Callback method when the Modal is closed */\n onClose: PropTypes.func,\n /** Width of the Moda: md or lg */\n size: PropTypes.string,\n showBackdrop: PropTypes.bool,\n};\n\nexport default Modal;\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Button from '../Button';\nimport Modal from '../Modal';\n\n/**\n * Confirm component can be used to open a dialog () before a specific action\n */\nfunction Confirm(props) {\n const {\n children,\n title,\n description,\n confirmBtnText = 'Confirm',\n cancelBtnText = 'Cancel',\n } = props;\n const [open, setOpen] = useState(false);\n const [callback, setCallback] = useState(null);\n const [cancelCallback, setCancelCallback] = useState(null);\n\n const show = (callbackFunc, cancelCallbackFunc, beforeCallback) => (...args) => {\n if (beforeCallback) {\n beforeCallback(...args);\n }\n setOpen(true);\n setCallback(() => () => callbackFunc(...args));\n if (cancelCallbackFunc) {\n setCancelCallback(() => () => cancelCallbackFunc(...args));\n }\n };\n\n const hide = () => {\n setOpen(false);\n setCallback(null);\n setCancelCallback(null);\n };\n\n const cancel = () => {\n if (cancelCallback) {\n cancelCallback();\n }\n hide();\n };\n\n const confirm = () => {\n callback();\n hide();\n };\n\n return (\n <>\n {children(show)}\n \n \n

{title}

\n {description}\n
\n \n \n {cancelBtnText}\n \n \n {confirmBtnText}\n \n \n
\n \n );\n}\n\nConfirm.propTypes = {\n /** Sets the text for primary / confirmation button on opened modal */\n confirmBtnText: PropTypes.string,\n /** Sets the text for danger / abort button on opened modal */\n cancelBtnText: PropTypes.string,\n /** Sets the title for the opened modal */\n title: PropTypes.string,\n /** Sets the description for the opened modal */\n description: PropTypes.string,\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.string,\n PropTypes.object,\n PropTypes.node,\n PropTypes.func,\n ]),\n};\n\nexport default Confirm;\n","import React, { useCallback, useEffect, useRef } from 'react';\nimport PropTypes from 'prop-types';\n\nimport debounce from '../../utils/debounce';\n/**\n * FixedWrapper component, keeps all its children in a fix position on the page,\n * even if the scroll position changes\n * i.e: The top navigation bar of a page sits within FixedWrapper component\n */\nfunction FixedWrapper({ children, className, showShadow }) {\n const fixedWrapperRef = useRef(null);\n\n const attachShadow = useCallback(() => {\n const element = fixedWrapperRef.current;\n\n if (!element) {\n return;\n }\n\n if (window.scrollY) {\n element.classList.add('tyk-fixed-wrapper--scrolled');\n } else {\n element.classList.remove('tyk-fixed-wrapper--scrolled');\n }\n }, [fixedWrapperRef.current]);\n\n const debouncedAttachShadow = useCallback(debounce(attachShadow, 100), [attachShadow]);\n\n useEffect(() => {\n if (showShadow) {\n window.addEventListener('scroll', debouncedAttachShadow);\n }\n\n return () => {\n window.removeEventListener('scroll', debouncedAttachShadow);\n };\n }, [debouncedAttachShadow, showShadow]);\n\n return (\n
\n { children }\n
\n );\n}\n\nFixedWrapper.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]),\n /** Css classes that can be passed to the FixedWraper element */\n className: PropTypes.string,\n /** If true, bottom shadow on the FixedWrapper component\n * is being displayed when scroll happens\n */\n showShadow: PropTypes.bool,\n};\n\nFixedWrapper.defaultProps = {\n className: '',\n};\n\nexport default FixedWrapper;\n","import React, {\n useEffect, useState, useRef, useCallback,\n} from 'react';\nimport { PropTypes } from 'prop-types';\n\nimport debounce from '../../utils/debounce';\nimport { usePrevious, useComponentSize } from '../../hooks';\nimport Loader from '../Loader';\n\nfunction InfiniteScroller({\n children,\n hasMore,\n initialLoad,\n loadMore,\n pageNumber,\n refChild,\n}) {\n const [showLoader, setShowLoader] = useState(false);\n const containerRef = useRef(null);\n const refChildSize = useComponentSize(refChild);\n\n useEffect(() => {\n if (initialLoad && typeof loadMore === 'function') {\n setShowLoader(false);\n loadMore(pageNumber);\n }\n }, [initialLoad]);\n\n const shouldLoad = useCallback(() => {\n if (!containerRef.current) return false;\n const { clientHeight, scrollTop } = containerRef.current;\n\n return (\n hasMore\n && (\n (clientHeight + Math.round(scrollTop) === refChildSize.height)\n || (clientHeight >= refChildSize.height)\n )\n );\n }, [containerRef, refChildSize.height]);\n\n const loadMoreData = useCallback(() => {\n if (hasMore && typeof loadMore === 'function') {\n loadMore(pageNumber + 1);\n setShowLoader(true);\n } else {\n setShowLoader(false);\n }\n }, [hasMore, pageNumber]);\n\n const prevPageNumber = usePrevious(pageNumber);\n const scrollHandler = useCallback(debounce(() => {\n if (shouldLoad() && prevPageNumber <= pageNumber) {\n loadMoreData();\n }\n }, 200), [loadMoreData, shouldLoad]);\n\n useEffect(() => {\n containerRef.current?.addEventListener('scroll', scrollHandler);\n return () => containerRef.current?.removeEventListener('scroll', scrollHandler);\n }, [containerRef, scrollHandler]);\n\n // if content resets (page number resets) scroll to top\n useEffect(() => {\n if (prevPageNumber > 0 && pageNumber === 0) {\n containerRef.current.scrollTop = 0;\n }\n }, [containerRef, pageNumber]);\n\n const prevRefChildSize = usePrevious(refChildSize);\n useEffect(() => {\n if (\n refChildSize && prevRefChildSize\n && refChildSize.height !== prevRefChildSize.height\n && showLoader === true\n ) {\n setShowLoader(false);\n }\n }, [showLoader, refChildSize.height]);\n\n useEffect(() => {\n if (\n refChild && refChildSize.height < containerRef.current.clientHeight\n && refChildSize.height\n && hasMore\n ) {\n loadMoreData();\n }\n }, [containerRef, refChildSize, refChild, hasMore]);\n\n return (\n
\n \n { children }\n
\n {showLoader && (\n \n )}\n
\n );\n}\n\nInfiniteScroller.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n hasMore: PropTypes.bool,\n initialLoad: PropTypes.bool,\n pageNumber: PropTypes.number,\n loadMore: PropTypes.func,\n refChild: PropTypes.instanceOf(Object),\n};\n\nInfiniteScroller.defaultProps = {\n hasMore: true,\n};\n\nexport default InfiniteScroller;\n","import React, {\n useEffect, useRef, forwardRef,\n} from 'react';\nimport { createPortal } from 'react-dom';\nimport PropTypes from 'prop-types';\nimport InfiniteScroller from '../InfiniteScroller';\n\n/**\n * It displays a container relative to another element.\n * Meant to be used for dropdowns, tooltips, and other similar components.\n */\nfunction FloatingContainer({\n element,\n size = 'auto',\n forceDisplay = 'auto',\n displayAxis = 'auto',\n preferredPosition,\n offset = 0,\n className,\n children,\n infiniteScrollerConfig,\n}, ref) {\n const localRef = useRef(null);\n const floatingContainerRef = ref || localRef;\n const contentWrapperRef = useRef(null);\n\n function determineDisplay() {\n const target = element.current;\n const container = floatingContainerRef.current;\n if (!container) return preferredPosition ?? displayAxis === 'vertical' ? 'bottom' : 'right';\n\n const { left, top } = target.getBoundingClientRect();\n const topSpace = top;\n const bottomSpace = window.innerHeight - top - target.offsetHeight;\n const leftSpace = left;\n const rightSpace = window.innerWidth - left - target.offsetWidth;\n const hasTopSpace = topSpace > container.scrollHeight;\n const hasBottomSpace = bottomSpace > container.scrollHeight;\n const hasLeftSpace = leftSpace > container.offsetWidth;\n const hasRightSpace = rightSpace > container.offsetWidth;\n const positionedVerticallyFitsInViewport = left + target.offsetWidth / 2 - container.offsetWidth / 2 > 0; // eslint-disable-line max-len\n const positionedHorizontallyFitsInViewport = top + target.offsetHeight / 2 - container.scrollHeight / 2 > 0; // eslint-disable-line max-len\n\n if (\n displayAxis === 'vertical'\n || (\n displayAxis === 'auto'\n && (hasTopSpace || hasBottomSpace)\n && positionedVerticallyFitsInViewport\n )\n ) {\n if (preferredPosition === 'top' && hasTopSpace) return 'top';\n if (preferredPosition === 'bottom' && hasBottomSpace) return 'bottom';\n return hasBottomSpace || bottomSpace > topSpace ? 'bottom' : 'top';\n }\n\n if (displayAxis === 'horizontal') {\n if (preferredPosition === 'left' && hasLeftSpace) return 'left';\n if (preferredPosition === 'right' && hasLeftSpace) return 'right';\n return hasRightSpace || rightSpace > leftSpace ? 'right' : 'left';\n }\n\n if (hasTopSpace && positionedVerticallyFitsInViewport) return 'top';\n if (hasBottomSpace && positionedVerticallyFitsInViewport) return 'bottom';\n if (hasRightSpace && positionedHorizontallyFitsInViewport) return 'right';\n if (hasLeftSpace && positionedHorizontallyFitsInViewport) return 'left';\n return preferredPosition ?? 'bottom';\n }\n\n function adjustPosition() {\n const display = forceDisplay !== 'auto' ? forceDisplay : determineDisplay();\n const target = element.current;\n const container = floatingContainerRef.current;\n\n if (!target || !container) return;\n\n const targetPosition = target.getBoundingClientRect();\n\n if (display === 'top') {\n const topPos = targetPosition.top - container.offsetHeight - offset;\n container.style.top = `${topPos}px`;\n container.style.left = (size === 'auto'\n ? `${targetPosition.left + target.offsetWidth / 2 - container.offsetWidth / 2}px`\n : `${targetPosition.left}px`);\n\n if (size === 'matchElement') {\n container.style.width = `${target.offsetWidth}px`;\n } else if (typeof size === 'function') {\n container.style.width = `${size(target.offsetWidth)}px`;\n }\n container.style.maxHeight = `${targetPosition.top - offset}px`;\n }\n\n if (display === 'bottom') {\n container.style.top = `${targetPosition.bottom + offset}px`;\n container.style.left = size === 'auto'\n ? `${targetPosition.left + target.offsetWidth / 2 - container.offsetWidth / 2}px`\n : `${targetPosition.left}px`;\n if (size === 'matchElement') {\n container.style.width = `${target.offsetWidth}px`;\n } else if (typeof size === 'function') {\n container.style.width = `${size(target.offsetWidth)}px`;\n }\n container.style.maxHeight = `${window.innerHeight - targetPosition.bottom - offset}px`;\n }\n\n if (display === 'left') {\n const topPos = targetPosition.top + target.offsetHeight / 2 - container.offsetHeight / 2;\n container.style.top = size === 'auto'\n ? `${topPos}px`\n : `${targetPosition.top}px`;\n container.style.left = `${targetPosition.left - container.offsetWidth - offset}px`;\n if (size === 'matchElement') {\n container.style.height = `${target.offsetHeight}px`;\n } else if (typeof size === 'function') {\n container.style.height = `${size(target.offsetHeight)}px`;\n }\n container.style.maxWidth = `${targetPosition.left - offset}px`;\n }\n\n if (display === 'right') {\n const topPos = targetPosition.top + target.offsetHeight / 2 - container.offsetHeight / 2;\n container.style.top = size === 'auto'\n ? `${topPos}px`\n : `${targetPosition.top}px`;\n container.style.left = `${targetPosition.left + target.offsetWidth + offset}px`;\n if (size === 'matchElement') {\n container.style.height = `${target.offsetHeight}px`;\n } else if (typeof size === 'function') {\n container.style.height = `${size(target.offsetHeight)}px`;\n }\n container.style.maxWidth = `${window.innerWidth - targetPosition.left - target.offsetWidth - offset}px`;\n }\n }\n\n useEffect(() => {\n window.requestAnimationFrame(function schedulePositionUpdate() {\n adjustPosition();\n window.requestAnimationFrame(schedulePositionUpdate);\n });\n }, []);\n\n return createPortal(\n \n \n \n {children}\n
\n \n
,\n document.querySelector('body'),\n );\n}\n\nFloatingContainer.propTypes = {\n /** A DOM element that the floating container will be displayed relative to. */\n element: PropTypes.instanceOf(Object),\n className: PropTypes.string,\n /** The size of the container.\n * If `auto` the size will be determined by its contents.\n * If `matchElement` it will take the width or the height of the element depending\n * on the `displayAxis` prop.\n * It can also be a function that returns a number representing the width\n * or the height in pixels.\n */\n size: PropTypes.oneOfType([\n PropTypes.oneOf(['auto', 'matchElement']),\n PropTypes.func,\n ]),\n /**\n * The distance between the element and the floating container.\n * It can be positive or negative.\n */\n offset: PropTypes.number,\n /**\n * If `auto` the component will try to determine where to display the container relative to the\n * element (top, bottom, left, right).\n * It can also be one of top, bottom, left, right, to force the floating container to always be\n * displayed in that position.\n */\n forceDisplay: PropTypes.oneOf(['auto', 'top', 'bottom', 'left', 'right']),\n /**\n * It can be `auto`, `vertical` or `horizontal`. It specifies the axis where\n * it will be displayed when `forceDisplay` is `auto`.\n */\n displayAxis: PropTypes.oneOf(['auto', 'vertical', 'horizontal']),\n /**\n * If there is space on both sides of the axis preffer this side.\n */\n preferredPosition: PropTypes.oneOf(['top', 'bottom', 'left', 'right']),\n /**\n * Configuration object that will be passed to the infinite scroller component.\n */\n infiniteScrollerConfig: PropTypes.instanceOf(Object),\n};\n\nexport default forwardRef(FloatingContainer);\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport Message from '../Message';\n\nfunction InfoNote({ children }) {\n return (\n
\n \n { children }\n \n
\n );\n}\n\nInfoNote.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]),\n};\n\nexport default InfoNote;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nconst ListItem = (props) => {\n const {\n className,\n children,\n } = props;\n\n return (\n
  • \n {children}\n
  • \n );\n};\n\nListItem.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n className: PropTypes.string,\n};\n\nListItem.defaultProps = {\n className: '',\n};\n\nexport default ListItem;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { fromJS } from 'immutable';\nimport ListItem from './js/ListItem';\n\nconst List = (props) => {\n const {\n className,\n children,\n label,\n labelwidth,\n theme,\n style,\n } = props;\n\n const getCssClasses = () => {\n let cssClasses = ['tyk-list'];\n\n if (theme) {\n cssClasses.push(`tyk-list--${theme}`);\n }\n\n if (className) {\n cssClasses = cssClasses.concat(className.split(' '));\n }\n\n return cssClasses.join(' ');\n };\n\n const getListStyle = () => {\n const styleCopy = fromJS(style).toJS();\n if (labelwidth) {\n styleCopy.flexBasis = `calc(100% - ${labelwidth} - 20px)`;\n }\n\n return styleCopy;\n };\n\n return (\n
    \n {\n label !== undefined\n ? (\n \n )\n : null\n }\n
      \n {children}\n
    \n
    \n );\n};\n\nList.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n className: PropTypes.string,\n label: PropTypes.string,\n labelwidth: PropTypes.string,\n theme: PropTypes.string,\n style: PropTypes.instanceOf(Object),\n};\n\nList.defaultProps = {\n theme: 'default',\n style: {},\n};\n\n\nList.Item = ListItem;\n\n\nexport default List;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nfunction NavBar({\n align = 'center',\n children,\n left,\n right,\n title,\n pre,\n subtitle,\n withTabs,\n}) {\n const subtitleContent = subtitle ?

    { subtitle }

    : null;\n return (\n
    \n
    \n {pre && (\n
    {pre}
    \n )}\n {\n title\n ? (\n
    \n

    { title }

    \n { subtitleContent }\n
    \n )\n : subtitleContent\n }\n
    \n {left && (\n
    { left }
    \n )}\n {right && (\n
    { right }
    \n )}\n
    \n
    \n { children }\n
    \n );\n}\n\nNavBar.propTypes = {\n align: PropTypes.string,\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n title: PropTypes.string,\n subtitle: PropTypes.string,\n pre: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n ]),\n left: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n ]),\n right: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n ]),\n withTabs: PropTypes.bool,\n};\n\nexport default NavBar;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nfunction NavigationItem({ children }) {\n return (\n
  • \n {children}\n
  • \n );\n}\n\nNavigationItem.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n};\n\nexport default NavigationItem;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport NavigationItem from './js/NavigationItem';\n\nfunction Navigation({ children }) {\n return (\n
      \n {children}\n
    \n );\n}\n\nNavigation.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n};\n\nNavigation.Item = NavigationItem;\n\nexport default Navigation;\n","import { createContext } from 'react';\n\nexport const PortalContext = createContext();\n","import React, { useCallback } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Collapsible from '../../Collapsible';\nimport { PortalContext } from '../panel-context';\n\nfunction PanelBody({\n children,\n noPadding,\n className,\n ...rest\n}) {\n const getCssClasses = useCallback(\n () => [\n 'tyk-panel__body',\n className,\n noPadding && 'no-padding',\n ].filter(Boolean).join(' '),\n [className, noPadding],\n );\n\n return (\n \n {\n (portalContext) => (\n portalContext.collapsable\n ? (\n \n { children }\n \n )\n : (\n \n { children }\n
    \n )\n )\n }\n \n );\n}\n\nPanelBody.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]),\n noPadding: PropTypes.bool,\n className: PropTypes.string,\n};\n\nexport default PanelBody;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nconst PanelFooter = (props) => {\n const { children } = props;\n return (\n
    \n { children }\n
    \n );\n};\n\nPanelFooter.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]),\n};\n\nexport default PanelFooter;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Icon from '../../Icon';\nimport { PortalContext } from '../panel-context';\n\nexport default class PanelHeader extends Component {\n static propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]).isRequired,\n className: PropTypes.string,\n }\n\n getCssClasses(props) {\n const { className } = this.props;\n let cssClasses = ['tyk-panel__header'];\n\n if (props.collapsable) {\n cssClasses.push('collapsable');\n }\n\n if (className) {\n cssClasses = cssClasses.concat(className.split(' '));\n }\n\n return cssClasses.join(' ');\n }\n\n render() {\n const {\n children,\n } = this.props;\n\n return (\n \n {\n (portalContext) => {\n const HeaderTag = portalContext.theme === 'blank' ? 'h3' : 'div';\n const iconType = portalContext.collapsed ? 'chevron-down' : 'chevron-up';\n\n return (\n \n { children }\n {\n portalContext.collapsable\n ?
    \n : null\n }\n \n );\n }\n }\n
    \n );\n }\n}\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport PanelBody from './js/PanelBody';\nimport PanelFooter from './js/PanelFooter';\nimport PanelHeader from './js/PanelHeader';\n\n\nimport { PortalContext } from './panel-context';\n\n\nconst Panel = (props) => {\n const {\n children,\n className,\n collapsed,\n collapsable,\n theme,\n onToggleCollapse,\n collapsibleIconPosition = 'right',\n } = props;\n const [collapsedState, setCollapsedState] = useState(collapsed || false);\n\n useEffect(() => {\n if (collapsed !== collapsedState) {\n setCollapsedState(collapsed);\n }\n }, [collapsed]);\n\n const getCssClasses = () => {\n let cssClasses = ['tyk-panel'];\n const panelTheme = `tyk-panel--${theme || 'default'}`;\n const collapsbleIconPosition = `tyk-panel__icon-collapse--${collapsibleIconPosition}`;\n\n cssClasses.push(panelTheme);\n cssClasses.push(collapsbleIconPosition);\n\n if (className) {\n cssClasses = cssClasses.concat(className.split(' '));\n }\n\n if (collapsedState) {\n cssClasses.push('tyk-panel--collapsed');\n }\n\n return cssClasses.join(' ');\n };\n\n const handleToggle = () => {\n setCollapsedState(!collapsedState);\n\n if (onToggleCollapse) {\n onToggleCollapse(!collapsedState);\n }\n };\n\n return (\n
    \n \n {\n (typeof children === 'function')\n ? children({\n toggleCollapse: handleToggle,\n })\n : children\n }\n \n
    \n );\n};\n\nPanel.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.func,\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]),\n className: PropTypes.string,\n collapsable: PropTypes.bool,\n collapsibleIconPosition: PropTypes.string,\n collapsed: PropTypes.bool,\n theme: PropTypes.string,\n onToggleCollapse: PropTypes.func,\n};\n\n\nPanel.Body = PanelBody;\nPanel.Footer = PanelFooter;\nPanel.Header = PanelHeader;\n\nexport default Panel;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n/**\n * Pill\n *\n */\nconst Pill = (props) => {\n const {\n children,\n className,\n theme,\n } = props;\n\n const getCssClasses = () => {\n let cssClasses = ['tyk-pill', ...theme.split(' ').map(t => `tyk-pill--${t}`)];\n\n if (className) {\n cssClasses = cssClasses.concat(className);\n }\n\n return cssClasses.join(' ');\n };\n\n return (\n
    \n {children}\n
    \n );\n};\n\nPill.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n /** Css classes that can be passed to the Pill element */\n className: PropTypes.string,\n /** Theme that can be applied to a Pill */\n theme: PropTypes.string,\n};\n\nPill.defaultProps = {\n theme: 'default',\n};\n\nexport default Pill;\n","import { useRef } from 'react';\n\n/**\n * RevealPanelService is a class that manages the resizing of a panel element.\n * It provides methods to set the panel's height, hide and show it, and attach\n * event listeners for resizing.\n */\nclass RevealPanelService {\n #state = null; // Private state for mouse interactions.\n\n #panel = null; // The panel element to be resized.\n\n #gutter = null; // The gutter element used for resizing.\n\n #wrapper = null; // The wrapper element that contains the panel and gutter.\n\n #onHeightChangeCallbacks = []; // Callback function to be executed when the panel is resized.\n\n #onDragStartCallbacks = []; // Callback function to be executed when the panel is resized.\n\n #onDragEndCallbacks = []; // Callback function to be executed when the panel is resized.\n\n #dragStarted = false;\n /**\n * Sets a callback function to be executed when the panel is resized.\n * @param {function} callback - The callback function to be called on panel resize.\n */\n\n on(eventName, listener) {\n let list = null;\n if (eventName === 'onHeightChange') {\n list = this.#onHeightChangeCallbacks;\n } else if (eventName === 'onDragStart') {\n list = this.#onDragStartCallbacks;\n } else if (eventName === 'onDragEnd') {\n list = this.#onDragEndCallbacks;\n }\n\n if (list) {\n this.addListener(list, listener);\n }\n }\n\n off(eventName, listener) {\n let list = null;\n if (eventName === 'onHeightChange') {\n list = this.#onHeightChangeCallbacks;\n } else if (eventName === 'onDragStart') {\n list = this.#onDragStartCallbacks;\n } else if (eventName === 'onDragEnd') {\n list = this.#onDragEndCallbacks;\n }\n\n if (list) {\n this.removeListener(list, listener);\n }\n }\n\n /**\n * Sets the panel, gutter, and wrapper elements to be controlled by this class.\n * @param {HTMLElement} wrapper - The wrapper element containing the panel and gutter.\n * @param {HTMLElement} panel - The panel element to be resized.\n * @param {HTMLElement} gutter - The gutter element used for resizing.\n */\n setRefs(wrapper, panel, gutter) {\n if (this.#panel || this.#gutter || this.#wrapper) {\n this.unbindEvents();\n }\n this.#wrapper = wrapper;\n this.#panel = panel;\n this.#gutter = gutter;\n this.#state = null;\n this.bindEvents();\n }\n\n /**\n * Attaches event listeners for panel resizing.\n */\n bindEvents() {\n this.ensureRefs('bindEvents');\n this.#gutter.addEventListener('mousedown', this.onMouseDown.bind(this));\n document.addEventListener('mousemove', this.onMouseMove.bind(this));\n document.addEventListener('mouseup', this.onMouseUp.bind(this));\n }\n\n /**\n * Gets the current height of the panel.\n * @returns {number} - The height of the panel in pixels.\n */\n getHeight() {\n this.ensureRefs('getHeight');\n const size = this.#panel.getBoundingClientRect();\n return size.height;\n }\n\n /**\n * Handles the mouse down event, initiating the resizing process.\n * @param {MouseEvent} e - The mouse event object.\n */\n onMouseDown(e) {\n this.ensureRefs('onMouseDown');\n this.#state = {\n mouseDown: true,\n initialRect: this.#panel.getBoundingClientRect(),\n initialEvent: e,\n };\n }\n\n /**\n * Handles the mouse move event, adjusting the panel's height during resizing.\n * @param {MouseEvent} e - The mouse event object.\n */\n onMouseMove(e) {\n this.ensureRefs('onMouseMove');\n\n if (!this.#state) {\n return;\n }\n\n const isButtonDown = this.isPrimaryMouseButtonDown(e);\n if (!isButtonDown) {\n this.onMouseUp();\n return;\n }\n\n if (!this.#dragStarted) {\n this.#dragStarted = true;\n this.onDragStart.bind(this)();\n }\n\n const newY = this.#state.initialEvent.y - e.y;\n const finalHeight = Math.ceil(this.#state.initialRect.height + newY);\n this.setHeight(`${finalHeight}px`, 'mousemove');\n }\n\n // eslint-disable-next-line class-methods-use-this\n notifyListeners(list, value) {\n if (list && Array.isArray(list) && list.length) {\n list.forEach((fn) => {\n if (typeof fn === 'function') {\n fn(value);\n }\n });\n }\n }\n\n // eslint-disable-next-line class-methods-use-this\n addListener(list, listener) {\n if (list && Array.isArray(list) && typeof listener === 'function') {\n list.push(listener);\n }\n }\n\n // eslint-disable-next-line class-methods-use-this\n removeListener(list, listener) {\n if (list && Array.isArray(list) && typeof listener === 'function' && list.length) {\n const index = list.indexOf(listener);\n\n if (index > -1) {\n list.splice(index, 1);\n }\n }\n }\n\n onDragEnd() {\n if (this.#dragStarted) {\n this.notifyListeners(this.#onDragEndCallbacks, this.getHeight());\n }\n }\n\n onDragStart() {\n this.notifyListeners(this.#onDragStartCallbacks, this.getHeight());\n }\n\n // eslint-disable-next-line class-methods-use-this\n isPrimaryMouseButtonDown(e) {\n const flags = e.buttons !== undefined ? e.buttons : e.which;\n // eslint-disable-next-line no-bitwise\n const isDown = flags === 1;\n return isDown;\n }\n\n /**\n * Resets the state after the mouse up event, ending the resizing process.\n */\n onMouseUp() {\n this.#state = null;\n this.onDragEnd.bind(this)();\n this.#dragStarted = false;\n }\n\n /**\n * Sets the height of the panel.\n * @param {string} height - The new height value as a CSS string (e.g., \"100px\").\n */\n setHeight(height) {\n let heightVal = height;\n this.ensureRefs('setHeight');\n\n if (typeof heightVal === 'number') {\n heightVal += 'px';\n }\n\n this.#panel.style.height = heightVal;\n\n this.notifyListeners(this.#onHeightChangeCallbacks, this.getHeight());\n }\n\n /**\n * Ensures that the required elements (wrapper, panel, and gutter) are set.\n * Throws an error if they are missing.\n */\n ensureRefs(reason) {\n if (!this.#panel || !this.#gutter || !this.#wrapper) {\n throw new Error(\n `${reason}: Wrapper, panel, and gutter elements are required. Use setRefs method first.`,\n );\n }\n }\n\n /**\n * Checks if the panel is hidden.\n * @returns {boolean} - True if the panel is hidden; false otherwise.\n */\n isHidden() {\n this.ensureRefs('isHidden');\n return this.#wrapper.style.visibility === 'hidden';\n }\n\n /**\n * Hides the panel by setting its visibility to \"hidden\".\n */\n hide() {\n this.ensureRefs('hide');\n this.#wrapper.style.visibility = 'hidden';\n }\n\n /**\n * Shows the panel by setting its visibility to \"visible\".\n */\n show() {\n this.ensureRefs('show');\n this.#wrapper.style.visibility = 'visible';\n }\n\n /**\n * Unbinds the event listeners added for resizing.\n */\n unbindEvents() {\n this.#onHeightChangeCallbacks = [];\n this.#onDragStartCallbacks = [];\n this.#onDragEndCallbacks = [];\n this.#gutter.removeEventListener('mousedown', this.onMouseDown.bind(this));\n document.removeEventListener('mousemove', this.onMouseMove.bind(this));\n document.removeEventListener('mouseup', this.onMouseUp.bind(this));\n }\n\n deinit() {\n this.unbindEvents();\n }\n}\n\nexport const useRevealPanelService = () => {\n const revealPanelServiceRef = useRef(new RevealPanelService());\n return revealPanelServiceRef.current;\n};\n","import React, {\n useEffect,\n useRef,\n useImperativeHandle,\n forwardRef,\n} from 'react';\nimport PropTypes from 'prop-types';\nimport { createPortal } from 'react-dom';\nimport { useRevealPanelService } from './js/RevealPanelService';\n\nfunction RevealPanelHeaderLeft({ children }) {\n // eslint-disable-next-line react/jsx-no-useless-fragment\n return <>{children};\n}\n\nRevealPanelHeaderLeft.propTypes = {\n children: PropTypes.instanceOf({}),\n};\n\nfunction RevealPanelHeaderRight({ children }) {\n // eslint-disable-next-line react/jsx-no-useless-fragment\n return <>{children};\n}\n\nRevealPanelHeaderRight.propTypes = {\n children: PropTypes.instanceOf({}),\n};\n\nconst mergeClasses = (...classNames) => classNames.map((it) => (it || '').trim()).filter(Boolean).join(' ');\n\nconst RevealPanel = forwardRef(({\n children,\n height,\n onHeightChange = null,\n onDragStart = null,\n onDragEnd = null,\n style = null,\n parentSelector = null,\n contentStyle,\n contentClassName,\n gutterClassName,\n wrapperClassName,\n// eslint-disable-next-line consistent-return\n}, ref) => {\n const panelRef = useRef(null);\n const gutterRef = useRef(null);\n const wrapperRef = useRef(null);\n\n const panelService = useRevealPanelService();\n\n useEffect(() => {\n if (!panelRef.current || !gutterRef.current || !wrapperRef.current) {\n return;\n }\n\n if (!panelService) {\n return;\n }\n\n panelService.setRefs(wrapperRef.current, panelRef.current, gutterRef.current);\n panelService.on('onHeightChange', onHeightChange);\n panelService.on('onDragStart', onDragStart);\n panelService.on('onDragEnd', onDragEnd);\n panelService.setHeight(height, 'initialize');\n\n // eslint-disable-next-line consistent-return\n return () => {\n panelService.unbindEvents();\n };\n }, []);\n\n useImperativeHandle(\n ref,\n () => {\n // bind this context\n const bind = (func) => func.bind(panelService);\n\n return {\n getHeight: bind(panelService.getHeight),\n setHeight: bind(panelService.setHeight),\n hide: bind(panelService.hide),\n show: bind(panelService.show),\n isHidden: bind(panelService.isHidden),\n deinit: bind(panelService.deinit),\n on: bind(panelService.on),\n off: bind(panelService.off),\n };\n },\n [],\n );\n\n let headerLeft = null;\n let headerRight = null;\n const contents = [];\n\n React.Children.forEach(children, (child) => {\n if (child && React.isValidElement(child)) {\n if (child.type === RevealPanelHeaderLeft) {\n headerLeft = child;\n } else if (child.type === RevealPanelHeaderRight) {\n headerRight = child;\n } else {\n contents.push(child);\n }\n }\n });\n\n const element = (\n
    \n
    \n
    \n\n
    {headerLeft}
    \n
    \n
    {headerRight}
    \n\n
    \n
    \n {contents}\n
    \n
    \n );\n\n if (parentSelector) {\n return createPortal(element, document.querySelector(parentSelector));\n }\n});\n\nRevealPanel.propTypes = {\n children: PropTypes.instanceOf({}),\n height: PropTypes.string,\n onHeightChange: PropTypes.func,\n onDragStart: PropTypes.func,\n onDragEnd: PropTypes.func,\n parentSelector: PropTypes.string,\n style: PropTypes.instanceOf({}),\n contentStyle: PropTypes.instanceOf({}),\n contentClassName: PropTypes.string,\n gutterClassName: PropTypes.string,\n wrapperClassName: PropTypes.string,\n};\n\nRevealPanel.HeaderLeft = RevealPanelHeaderLeft;\nRevealPanel.HeaderRight = RevealPanelHeaderRight;\n\nexport default RevealPanel;\n","import { createContext } from 'react';\n\nexport const TabsContext = createContext();\n","import { createContext } from 'react';\n\nexport default createContext();\n","import React, { useEffect, useMemo } from 'react';\nimport PropTypes from 'prop-types';\n\nimport TabContext from './TabContext';\nimport { usePrevious } from '../../../hooks';\n\nconst TabContent = (props) => {\n const {\n addTab,\n hideTab,\n updateTab,\n showTab,\n children,\n selectedPath,\n tabData,\n tabsId,\n tabExists,\n path,\n rendered,\n hideTabContent,\n tabs,\n } = props;\n\n useEffect(() => {\n const tempTabData = { ...tabData };\n\n if (!tabExists(path)) {\n addTab(tempTabData, path);\n }\n }, [tabData, path]);\n\n const prevTabData = usePrevious(tabData);\n useEffect(() => {\n if (\n tabExists(path) && tabData?.title\n && (prevTabData?.title !== tabData?.title || prevTabData.selected !== tabData.selected)\n ) {\n const tempTabData = { ...tabData };\n updateTab(tempTabData, path);\n }\n }, [tabData, path, prevTabData, tabs]);\n\n useEffect(() => {\n showTab(path);\n return () => hideTab(path);\n }, []);\n\n const shouldRender = useMemo(() => {\n if (!Object.keys(tabs).length) {\n return false;\n }\n\n if (hideTabContent || tabs[tabData.id].show === false) {\n return false;\n }\n\n if (!rendered) {\n return tabExists(path);\n }\n return selectedPath && selectedPath.indexOf(tabData.id) > -1;\n }, [hideTabContent, rendered, selectedPath, tabData, tabs]);\n\n return (\n (\n shouldRender\n ? (\n
    -1 ? 'block' : 'none' }}>\n \n {children}\n \n
    \n )\n : null\n )\n );\n};\n\nTabContent.propTypes = {\n addTab: PropTypes.func,\n updateTab: PropTypes.func,\n hideTab: PropTypes.func,\n showTab: PropTypes.func,\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n path: PropTypes.instanceOf(Array),\n hideTabContent: PropTypes.bool,\n rendered: PropTypes.bool,\n selectedPath: PropTypes.instanceOf(Array),\n tabExists: PropTypes.func,\n tabsId: PropTypes.string,\n tabData: PropTypes.instanceOf(Object),\n tabs: PropTypes.instanceOf(Object),\n};\n\nexport default TabContent;\n","import React, {\n Fragment, useContext, useEffect, useState,\n} from 'react';\nimport PropTypes from 'prop-types';\nimport { TabsContext } from '../tabs-context';\nimport TabContext from './TabContext';\nimport TabContent from './TabContent';\n\nconst Tab = (props) => {\n const { id } = props;\n const tabsContext = useContext(TabsContext);\n const tabContext = useContext(TabContext);\n const {\n tabExists,\n selectedPath,\n addTab,\n updateTab,\n hideTab,\n showTab,\n rendered,\n hideTabContent,\n tabs,\n } = tabsContext;\n const {\n children,\n } = props;\n const [path, setPath] = useState('');\n\n useEffect(() => {\n let tempPath;\n if (tabContext && path) {\n if (tabContext.tabsId === tabsContext.id) {\n tempPath = tabContext.path.concat([id]);\n } else {\n tempPath = [id];\n }\n } else {\n tempPath = [id];\n }\n setPath(tempPath);\n }, [tabContext]);\n\n if (!path) {\n return null;\n }\n\n return (\n \n \n {children}\n \n \n );\n};\n\nTab.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n id: PropTypes.string,\n};\n\nTab.defaultProps = {};\n\nexport default Tab;\n","\nimport React, {\n useEffect, useState,\n} from 'react';\nimport PropTypes from 'prop-types';\nimport Tab from './js/Tab';\n\nimport Collapsible from '../Collapsible';\nimport Icon from '../Icon';\nimport { TabsContext } from './tabs-context';\n\nconst Tabs = (props) => {\n const {\n children,\n className,\n id,\n onTabChange,\n type,\n hideTabContent,\n } = props;\n const [tabs, setTabs] = useState({});\n const [selectedPath, setSelectedPath] = useState([]);\n const [rendered, setRendered] = useState(false);\n const [initialPath, setInitialPath] = useState(null);\n\n useEffect(() => {\n setSelectedPath(initialPath);\n }, [initialPath]);\n\n const updateTabsList = (tabsState, path, tabData) => {\n let tempTabsState = Object.assign({}, tabsState);\n const tempTabData = Object.assign({}, tabData);\n const tempPath = path.slice(0);\n\n while (tempPath.length > 1) {\n tempTabsState = tempTabsState[tempPath.shift()];\n\n if (!tempTabsState) {\n tempTabsState = {};\n }\n }\n\n tempTabData.tempPath = tempPath;\n tempTabsState[tempPath.shift()] = tempTabData;\n\n return tempTabsState;\n };\n\n const toggleTab = (tabsState, path) => {\n let tempTabsState = Object.assign({}, tabsState);\n const tempPath = path.slice(0);\n\n while (tempPath.length > 1) {\n tempTabsState = tempTabsState[tempPath.shift()];\n }\n\n const key = tempPath.shift();\n if (tempTabsState[key].collapsed === undefined) {\n tempTabsState[key].collapsed = true;\n } else {\n tempTabsState[key].collapsed = !tempTabsState[key].collapsed;\n }\n\n return tempTabsState;\n };\n\n const getCssClasses = () => {\n let cssClasses = ['tyk-tabs'];\n\n cssClasses.push(`tyk-tabs--${type || 'default'}`);\n\n if (className) {\n cssClasses = cssClasses.concat(className.split(' '));\n }\n\n return cssClasses.join(' ');\n };\n\n const setCurrentSelectedPath = (path, tabData) => {\n const tempPath = path.slice(0);\n let tempRendered = true;\n\n if (tabData.collapsible) {\n tempPath.push(Object.keys(tabData.tabs)[0]);\n tempRendered = false;\n }\n\n setTabs((prevTabs) => {\n let tempTabs = Object.assign({}, prevTabs);\n\n tempTabs = toggleTab(tempTabs, path);\n\n return tempTabs;\n });\n setSelectedPath(tempPath);\n setRendered(tempRendered);\n\n if (onTabChange) {\n onTabChange(tabData);\n }\n };\n\n const getTabCssClass = (tabId) => {\n const cssClasses = [];\n\n if (selectedPath && selectedPath.indexOf(tabId) > -1) {\n cssClasses.push('active');\n }\n\n return cssClasses.join(' ');\n };\n\n const genTabs = (currentTabs, path) => {\n if (!currentTabs) {\n return null;\n }\n\n return (\n
      \n {\n Object.keys(currentTabs).map((tabId, index) => {\n const tempPath = path ? path.concat([currentTabs[tabId].id]) : [currentTabs[tabId].id];\n const iconType = currentTabs[tabId].collapsed ? 'chevron-up' : 'chevron-down';\n\n if (currentTabs[tabId].show === false) {\n return null;\n }\n\n return (\n
    • \n \n { currentTabs[tabId].title }\n {\n currentTabs[tabId].collapsible\n ? \n : null\n }\n \n {\n currentTabs[tabId].collapsible\n ? (\n \n {genTabs(currentTabs[tabId].tabs, tempPath)}\n \n )\n : genTabs(currentTabs[tabId].tabs, tempPath)\n }\n
    • \n );\n })\n }\n
    \n );\n };\n\n const addTab = (tabData, path) => {\n setTabs(prevTabs => updateTabsList({ ...prevTabs }, path, tabData));\n\n if (tabData.selected) {\n setInitialPath(path);\n }\n };\n\n const updateTab = (tabData, path) => {\n setTabs((prevTabs) => {\n const tempTabs = { ...prevTabs };\n tempTabs[tabData.id] = tabData;\n return tempTabs;\n });\n\n if (tabData.selected) {\n setCurrentSelectedPath(path, tabData);\n }\n };\n\n const hideTab = (path) => {\n setTabs((prevTabs) => {\n const tempTabs = { ...prevTabs };\n tempTabs[path].show = false;\n\n return tempTabs;\n });\n };\n\n const showTab = (path) => {\n setTabs((prevTabs) => {\n const tempTabs = { ...prevTabs };\n\n tempTabs[path].show = true;\n\n return tempTabs;\n });\n };\n\n const tabExists = (path) => {\n let tempTabs = { ...tabs };\n const tempPath = path.slice(0);\n while (tempPath.length > 1) {\n tempTabs = tempTabs[tempPath.shift()];\n }\n\n const key = tempPath.shift();\n\n return !!(tempTabs && tempTabs[key]);\n };\n\n return (\n
    \n {genTabs(tabs)}\n \n {\n (typeof children === 'function')\n ? children({\n hideTab,\n showTab,\n })\n : children\n }\n \n
    \n );\n};\n\nTabs.propTypes = {\n className: PropTypes.string,\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n hideTabContent: PropTypes.bool,\n id: PropTypes.string,\n onTabChange: PropTypes.func,\n type: PropTypes.string,\n};\n\n\nTabs.Tab = Tab;\n\nexport default Tabs;\n","import React, {\n useCallback, useEffect, useRef, useState,\n} from 'react';\nimport PropTypes from 'prop-types';\n\nimport FloatingContainer from '../FloatingContainer';\nimport Icon from '../Icon';\n\nfunction Tooltip({\n render,\n className,\n children,\n position = 'auto',\n style,\n icon = false,\n closable,\n isOpened = false,\n additionalClickParents = [],\n ...props\n}) {\n const [isActive, setIsActive] = useState(false);\n const wrapperRef = useRef(null);\n const tooltipRef = useRef(null);\n const activeEvents = closable\n ? {\n onClick: () => setIsActive(true),\n }\n : {\n onMouseEnter: () => setIsActive(true),\n onMouseLeave: () => setIsActive(false),\n onFocus: () => setIsActive(true),\n onBlur: () => setIsActive(false),\n };\n\n const handleDocumentClick = useCallback((e) => {\n if ([...additionalClickParents, tooltipRef.current].some((p) => p?.contains?.(e.target))) {\n return;\n }\n setIsActive(false);\n }, [additionalClickParents]);\n\n useEffect(() => {\n document.addEventListener('click', handleDocumentClick, true);\n return () => document.removeEventListener('click', handleDocumentClick, true);\n }, [handleDocumentClick]);\n\n useEffect(() => {\n setIsActive(isOpened);\n }, [isOpened]);\n\n const classes = ['tyk-tooltip', className].filter(Boolean).join(' ');\n return (\n \n {children}\n {isActive && (\n \n
    \n {icon && (\n icon === true ? (\n \n ) : (\n icon\n )\n )}\n
    \n {render}\n
    \n {closable && (\n {\n e.stopPropagation();\n setIsActive(false);\n }}\n />\n )}\n
    \n \n )}\n
    \n );\n}\n\nTooltip.propTypes = {\n children: PropTypes.node.isRequired,\n /** custom styles to apply on hovered element */\n style: PropTypes.instanceOf(Object),\n /** describes where the tooltip should be displayed in relation\n * whith the hovered element: top, bottom, left, right\n */\n position: PropTypes.string,\n /** content of the tooltip, can be a string or a React node element */\n render: PropTypes.oneOfType([\n PropTypes.node,\n PropTypes.string,\n ]),\n /** additional tooltip classes */\n className: PropTypes.string,\n /** if `true` displays the \"question mark\" icon;\n * optionally you can pass a different icon\n */\n icon: PropTypes.oneOfType([\n PropTypes.bool,\n PropTypes.node,\n ]),\n /** if `true` the tooltip is activated on click and an \"x\" is displayed to close it;\n * if `false` the tooltip is activated on hover and it closes when no longer hovering\n */\n closable: PropTypes.bool,\n /** handles the `isActive` state of the tooltip from outside */\n isOpened: PropTypes.bool,\n /** Additional dom elements to check if the document click was inside of them.\n * Useful when you want to open the tooltip after an interaction\n * with an element not inside the tooltip root.\n */\n additionalClickParents: PropTypes.instanceOf(Array),\n};\n\nexport default Tooltip;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Tooltip from '../Tooltip';\n/**\n * TextEllipsis component helps you to hide a part of a text,\n * but displaying it when it's being hovered.\n * The entire text is displayed with the help of Tooltip component\n */\n\nfunction TextEllipsis({ text, limit, position }) {\n return (\n text.length > limit\n ? (\n \n {text.substring(0, limit)}\n ...\n \n )\n : text\n );\n}\n\nTextEllipsis.propTypes = {\n /** Text to be shrinked by TextEllipsis */\n text: PropTypes.string,\n /** Number of characters that TextEllipsis would leave visible */\n limit: PropTypes.number,\n /** tooltip position */\n position: PropTypes.string,\n};\n\nexport default TextEllipsis;\n","import React, { Component, Fragment } from 'react';\nimport PropTypes from 'prop-types';\n\nconst shouldShowPage = (currentNr, pageNr, totalNrOfPages) => {\n const basePageNr = 5;\n const minimumNrOfPages = 10;\n\n if (totalNrOfPages < minimumNrOfPages) {\n return true;\n }\n\n if (\n pageNr < basePageNr\n && currentNr < basePageNr\n ) {\n return true;\n }\n\n if (\n pageNr > totalNrOfPages - basePageNr\n && currentNr > totalNrOfPages - basePageNr\n ) {\n return true;\n }\n\n if (\n currentNr >= pageNr - 2\n && currentNr <= pageNr + 2\n ) {\n return true;\n }\n\n if ([0, 1, totalNrOfPages - 1, totalNrOfPages].indexOf(currentNr) > -1) {\n return true;\n }\n\n return false;\n};\n\nconst getPagesArr = (nrOfPages, selectedPage) => {\n let i; const\n pagesArr = [];\n\n for (i = 0; i <= nrOfPages; i += 1) {\n if (shouldShowPage(i, selectedPage, nrOfPages)) {\n if (i > pagesArr[pagesArr.length - 1]) {\n pagesArr.push('...');\n }\n pagesArr.push(i + 1);\n }\n }\n\n return pagesArr;\n};\n\nexport default class Pagination extends Component {\n static propTypes = {\n value: PropTypes.number,\n totalNrOfPages: PropTypes.number,\n onChange: PropTypes.func,\n };\n\n constructor(props) {\n super(props);\n const {\n value,\n totalNrOfPages,\n } = this.props;\n\n this.state = {\n prevProps: this.props,\n selectedPage: value || 0,\n pagesArray: getPagesArr(totalNrOfPages, value),\n };\n\n this.pageKey = 0;\n }\n\n static getDerivedStateFromProps(nextProps, prevState) {\n if (\n nextProps.value !== prevState.prevProps.value\n || nextProps.totalNrOfPages !== prevState.prevProps.totalNrOfPages\n ) {\n return {\n selectedPage: nextProps.value,\n pagesArray: getPagesArr(nextProps.totalNrOfPages, nextProps.value),\n };\n }\n\n return null;\n }\n\n getPageCssClass(pageNr) {\n const { selectedPage } = this.state;\n const cssClasses = [];\n\n if (selectedPage === pageNr) {\n cssClasses.push('active');\n }\n\n return cssClasses.join(' ');\n }\n\n getPageKey() {\n this.pageKey += 1;\n\n return this.pageKey;\n }\n\n goToPage(pageNr) {\n const { onChange, totalNrOfPages } = this.props;\n this.setState({\n selectedPage: pageNr,\n pagesArray: getPagesArr(totalNrOfPages, pageNr),\n }, () => {\n if (onChange) {\n onChange(pageNr);\n }\n });\n }\n\n render() {\n const { totalNrOfPages } = this.props;\n const { pagesArray, selectedPage } = this.state;\n\n return (\n \n {\n totalNrOfPages\n ? (\n
      \n {\n selectedPage > 0 && totalNrOfPages > 5\n ? (\n
    • \n \n
    • \n )\n : null\n }\n {\n pagesArray.map(pageNr => (\n
    • \n {\n pageNr !== '...'\n ? \n : { pageNr }\n }\n
    • \n ))\n }\n {\n selectedPage < totalNrOfPages && totalNrOfPages > 5\n ? (\n
    • \n \n
    • \n )\n : null\n }\n
    \n )\n : null\n }\n
    \n );\n }\n}\n","import { createContext } from 'react';\n\nexport const tableContext = createContext();\n","import React, { useState, useContext } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { tableContext } from '../tableContext';\nimport Icon from '../../Icon';\n\nexport const HeaderCell = ({ column }) => {\n const { sortable } = column;\n const [sortOrder, setSortOrder] = useState(sortable?.default || 'ASC');\n const { state, sendMessage } = useContext(tableContext);\n return (\n {\n sendMessage('sort', { column, sortOrder });\n setSortOrder(sortOrder === 'ASC' ? 'DESC' : 'ASC');\n } : null}\n className={state.maxHeight ? 'fixed-header' : ''}\n >\n {column.name}\n {column.sortable && (\n \n \n \n )}\n \n );\n};\n\nHeaderCell.propTypes = {\n column: PropTypes.instanceOf(Object),\n};\n","import React, { useContext, useState } from 'react';\nimport { HeaderCell } from './header-cell';\nimport { tableContext } from '../tableContext';\n\nexport const Header = () => {\n const [selectAll, setSelectAll] = useState(false);\n const { state, sendMessage } = useContext(tableContext);\n const { columns, selectable } = state;\n\n const generateHeaders = () => columns.map(column => (\n \n ));\n\n const generateSelectable = () => {\n if (!selectable) {\n return;\n }\n const Component = selectable.type;\n // eslint-disable-next-line consistent-return\n return (\n \n {selectable?.allowSelectAll ? (\n
    \n {\n setSelectAll(!selectAll);\n sendMessage('header.selectAll.click', selectAll);\n }}\n onChange={(v) => {\n sendMessage('header.selectAll.change', v);\n }}\n >\n {selectable.values?.value}\n \n
    \n ) : (\n selectable.name || 'Select'\n )}\n \n );\n };\n\n return (\n \n \n {selectable && selectable.position === 'LEFT' && generateSelectable()}\n {generateHeaders()}\n {selectable && selectable.position === 'RIGHT' && generateSelectable()}\n \n \n );\n};\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\n\n/**\n * - Checkboxes are used when a user needs to select one or more values from a series of options.\n * - They can be also be used as a binary toggle but consider radio instead.\n * - Can be used with Formik respectively (FormikCheckbox)\n */\nexport default class Checkbox extends Component {\n static propTypes = {\n /** Disable a checkbox */\n disabled: PropTypes.bool,\n /** Readonly prop behaves the same as disable on checkboxes */\n readOnly: PropTypes.bool,\n /** Align checkbox with in same line with other elements */\n inline: PropTypes.bool,\n /** Set a theme for checkbox */\n theme: PropTypes.string,\n /** Set an error state for checkbox if boolean will show just icon without message */\n error: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.bool,\n ]),\n /** Adds additional information under the checkbox element */\n note: PropTypes.string,\n input: PropTypes.instanceOf(Object),\n /** Adds a label to checkbox */\n label: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.func,\n PropTypes.string,\n ]),\n /** Set a name for checkbox */\n name: PropTypes.string,\n /** Set initial value for checkbox */\n value: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.bool,\n ]),\n /** Make checkbox checked by default */\n checked: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.bool,\n ]),\n /** Callback function executed on change of checkbox */\n onChange: PropTypes.func,\n /** CSS classes added to the wrapper of the component */\n wrapperClassName: PropTypes.string,\n };\n\n getCssClasses() {\n const {\n inline, disabled, readOnly, theme = '', wrapperClassName = '',\n } = this.props;\n\n const cssClasses = [wrapperClassName];\n\n cssClasses.push('tyk-checkbox');\n\n if (inline) {\n cssClasses.push('tyk-checkbox--inline');\n }\n\n if (theme.trim()) {\n cssClasses.push(...theme.split(' ').map(t => `tyk-checkbox--theme-${t}`));\n }\n\n if (disabled || readOnly) {\n cssClasses.push('tyk-checkbox--is-disabled');\n }\n\n return cssClasses.join(' ');\n }\n\n displayError() {\n const { error } = this.props;\n if (!error) return null;\n\n return (\n

    \n {error}\n

    \n );\n }\n\n displayNote() {\n const { note } = this.props;\n if (!note) return null;\n\n return (\n

    \n {note}\n

    \n );\n }\n\n render() {\n const {\n input, value, label, ...rest\n } = this.props;\n return (\n \n
    \n \n {this.displayNote()}\n {this.displayError()}\n
    \n \n );\n }\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nexport const Cell = ({ col, row }) => {\n if (!row.values[col.id]) {\n return ;\n }\n\n if (col.type === 'string') {\n return (\n // eslint-disable-next-line jsx-a11y/click-events-have-key-events\n \n {row.values[col.id]?.value}\n \n );\n }\n const Component = col.type;\n return (\n \n \n {row.values[col.id].children ? row.values[col.id].children : null}\n \n \n );\n};\n\nCell.propTypes = {\n col: PropTypes.instanceOf(Object),\n row: PropTypes.instanceOf(Object),\n index: PropTypes.number,\n};\n","import React, { useContext } from 'react';\nimport PropTypes from 'prop-types';\nimport Checkbox from '../../../form/components/Checkbox';\nimport { Cell } from './cell';\nimport { tableContext } from '../tableContext';\n\nexport const Row = ({ row, index }) => {\n const { state, sendMessage } = useContext(tableContext);\n const { columns, selectable } = state;\n\n const SelectableCheckbox = () => (\n \n sendMessage('row.selected', { index, selected: v })}\n />\n \n );\n\n return (\n \n {selectable && selectable.position === 'LEFT' && SelectableCheckbox()}\n {columns.map(col => (\n \n ))}\n {selectable && selectable.position === 'RIGHT' && SelectableCheckbox()}\n \n );\n};\n\nRow.propTypes = {\n row: PropTypes.instanceOf(Object),\n index: PropTypes.number,\n};\n","import React, { useContext } from 'react';\nimport { tableContext } from '../tableContext';\nimport { Row } from './row';\n\n\nexport const Body = () => {\n const { state } = useContext(tableContext);\n const { rows } = state;\n\n return (\n \n {\n // eslint-disable-next-line react/no-array-index-key\n rows.map((row, i) => )\n }\n \n );\n};\n","import React, { useState, useEffect, useRef } from 'react';\nimport PropTypes from 'prop-types';\nimport Message from '../Message';\nimport Pagination from '../../form/components/Pagination';\nimport Loader from '../Loader';\nimport InfiniteScroller from '../InfiniteScroller';\nimport { Header } from './js/header';\nimport { Body } from './js/body';\nimport { tableContext } from './tableContext';\n\n/**\n * This is tyk's table component used to render a data in a tabular view.\n * See the example configuration object below to understand how to hydrate the table component\n */\n\nfunction Table({\n value, onChange, noDataMessage, loading, infiniteScrolling,\n}) {\n const [state, setState] = useState(null);\n const [onChangeMsg, setOnChangeMsg] = useState('api');\n const itemsListRef = useRef(null);\n const sortRows = (col, sortOrder) => {\n setState({\n ...state,\n sort: {\n order: sortOrder,\n col,\n },\n });\n };\n\n const selectAllRows = (data) => {\n setState({\n ...state,\n rows: state.rows.map((row) => ({ ...row, selected: data })),\n });\n };\n\n const selectRow = (data) => {\n const { index, selected } = data;\n const selectedRow = state.rows[index];\n \n setState({\n ...state,\n rows: [\n ...state.rows.slice(0, index),\n { ...selectedRow, selected },\n ...state.rows.slice(index + 1),\n ],\n });\n };\n\n const setPagination = (data) => {\n setState({\n ...state,\n pagination: {\n ...state.pagination,\n current: data + 1,\n },\n });\n };\n\n const api = {\n getState: () => state,\n setState: (newState) => setState(newState),\n };\n\n const sendMessage = (message, data) => {\n setOnChangeMsg(message);\n if (message === 'sort') {\n sortRows(data.column.id, data.sortOrder);\n }\n\n if (message === 'header.selectAll.click') {\n selectAllRows(data);\n }\n\n if (message === 'header.selectAll.change') {\n selectAllRows(data);\n }\n\n if (message === 'row.selected') {\n selectRow(data);\n }\n\n if (message === 'pagination.change') {\n setPagination(data);\n }\n };\n\n useEffect(() => setState(value), [value]);\n useEffect(() => {\n if (onChange) {\n onChange(onChangeMsg, state, api);\n }\n setOnChangeMsg('api');\n }, [state]);\n\n if (!state) {\n return ;\n }\n\n if (state.rows <= 0) {\n return {noDataMessage || 'No Data Available'};\n }\n\n const getTable = () => (\n \n
    \n \n
    \n );\n\n\n return (\n \n
    \n {\n loading && \n }\n {\n infiniteScrolling && state.pagination\n ? (\n state.pagination.current}\n loadMore={(num) => sendMessage('pagination.change', num)}\n pageNumber={state.pagination.current - 1}\n initialLoad={false}\n >\n { getTable() }\n \n )\n : getTable()\n }\n
    \n {state.pagination && !infiniteScrolling && (\n
    \n sendMessage('pagination.change', num)}\n />\n
    \n )}\n
    \n );\n}\n\nTable.propTypes = {\n /** Configuration object used to render the component */\n value: PropTypes.shape({\n /** Configuration for table columns */\n columns: PropTypes.arrayOf(PropTypes.shape({\n /** Unique id of the column */\n id: PropTypes.string.isRequired,\n /** Name of the column */\n name: PropTypes.string,\n /** Type of column, String by default */\n type: PropTypes.oneOfType([\n /** Just renders cell data of type strings */\n PropTypes.string,\n /** Render cell of elements (eg. Input / Button) */\n PropTypes.element,\n /** Render a custom function/component */\n PropTypes.func,\n ]),\n sortable: PropTypes.oneOfType([\n /** Make Column sortable */\n PropTypes.bool,\n /** Configure sorting behaviour */\n PropTypes.shape({\n /** Set default sorting direction ASC / DESC */\n default: PropTypes.string,\n }),\n ]),\n })),\n /** Configuration for table rows */\n rows: PropTypes.arrayOf(PropTypes.shape({})),\n /** Configuration to make table rows selectable */\n selectable: PropTypes.shape({}),\n /** Renders pagination for table if the object is missing / empty no pagination is rendered. */\n pagination: PropTypes.shape({}),\n /** Sets maximum height for table container. */\n maxHeight: PropTypes.string,\n /** Styling for the table container. */\n styling: PropTypes.shape({\n /** It's recommended to add styles to a class and pass the class in this object */\n className: PropTypes.string,\n }),\n }).isRequired,\n /** Callback executed with message and value when there are changes on table */\n onChange: PropTypes.func,\n /** Renders a component with the given message when `config.rows` is empty */\n noDataMessage: PropTypes.string,\n /** Show placeholder loader */\n loading: PropTypes.bool,\n /** Adds infinite scroller on page and calls `onChange` with `pagination.change` message */\n infiniteScrolling: PropTypes.bool,\n};\n\nTable.defaultProps = {\n loading: false,\n infiniteScrolling: false,\n noDataMessage: 'No Data Available',\n onChange: null,\n};\n\nexport default Table;\n","import React, { PureComponent } from 'react';\nimport PropTypes from 'prop-types';\n\n/**\n * Column component.\n */\nclass Column extends PureComponent {\n static propTypes = {\n /**\n * This property describes how the column element will be aligned vertically\n * within a Row: bottom, center, top\n */\n align: PropTypes.string,\n /** Css classes that can be passed to the column element */\n className: PropTypes.string,\n /**\n * ID that can be passed to the column element\n */\n id: PropTypes.string,\n /**\n * Specifies the size of the column within a Row (values must be between 1 - 12)\n */\n size: PropTypes.string.isRequired,\n /**\n * Specifies the left gap a column can have within a Row (values must be between 1 - 12)\n */\n offset: PropTypes.string,\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.string,\n PropTypes.object,\n PropTypes.node,\n ]),\n };\n\n getCssClasses() {\n const {\n align, className, offset, size,\n } = this.props;\n const colSize = size.split(' ');\n const colOffsets = offset ? offset.split(' ') : [];\n\n let cssClasses = colSize.map(cSize => `tyk-col--${cSize}`);\n const offsets = colOffsets.map(cOffset => `tyk-col--offset-${cOffset}`);\n\n if (align) {\n cssClasses.push(`tyk-col--align-${align}`);\n }\n\n if (className) {\n cssClasses = cssClasses.concat(className.split(' '));\n }\n\n cssClasses.push('tyk-col');\n cssClasses = cssClasses.concat(offsets || []);\n\n return cssClasses.join(' ');\n }\n\n render() {\n const { children, id, ...props } = this.props;\n\n return (\n
    \n { children }\n
    \n );\n }\n}\n\nexport default Column;\n","import React, { PureComponent } from 'react';\nimport PropTypes from 'prop-types';\n\n\n/** Row component which must be always present as a wrapper for Columns */\nexport default class Row extends PureComponent {\n static propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n ]),\n /** Css classes that can be passed to the Row element */\n className: PropTypes.string,\n /** Removes all the spaces between column */\n nogutters: PropTypes.bool,\n }\n\n getCssClasses() {\n const { className, nogutters } = this.props;\n let cssClass = ['tyk-row'];\n\n if (nogutters) {\n cssClass.push('no-gutters');\n cssClass.push('tyk-row--gutterless');\n }\n\n if (className) {\n cssClass = cssClass.concat(className.split(' '));\n }\n\n return cssClass.join(' ');\n }\n\n render() {\n const {\n children,\n nogutters,\n ...rest\n } = this.props;\n\n return (\n
    \n { children }\n
    \n );\n }\n}\n","import { createContext } from 'react';\n\nexport const DropdownContext = createContext();\n","import React, { cloneElement, useCallback } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { DropdownContext } from '../dropdown-context';\nimport Icon from '../../../../components/Icon';\n\nfunction DropdownItem(props) {\n const {\n customdropdownitem,\n children,\n eventKey,\n href,\n target,\n title,\n onClick,\n } = props;\n const dropdownItemCLick = useCallback((dropdownContext, itemProps) => {\n dropdownContext.onSelectItem(eventKey, itemProps);\n\n if (onClick) onClick(eventKey);\n }, []);\n\n return (\n \n {\n (dropdownContext) => (\n dropdownItemCLick(dropdownContext, props)}\n onKeyUp={() => {}}\n >\n {\n customdropdownitem\n ? cloneElement(customdropdownitem, {})\n : (\n \n {\n eventKey\n && dropdownContext.selectedItem === eventKey\n && dropdownContext.showCheckmark\n ? \n : null\n }\n \n {title || children}\n \n \n )\n }\n \n )\n }\n \n );\n}\n\nDropdownItem.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]),\n customdropdownitem: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n ]),\n eventKey: PropTypes.string,\n href: PropTypes.string,\n target: PropTypes.string,\n onClick: PropTypes.func,\n title: PropTypes.string,\n};\n\nexport default DropdownItem;\n","import React, {\n Component, createRef,\n} from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport DropdownItem from './js/DropdownItem';\nimport Button from '../../../components/Button';\nimport { DropdownContext } from './dropdown-context';\n\nclass Dropdown extends Component {\n static isElemInRightView(el, dropdownWidth) {\n const windowWidth = window.innerWidth;\n const offset = el.getBoundingClientRect();\n const elemRight = offset.left + dropdownWidth;\n\n return elemRight <= windowWidth;\n }\n\n static isElemInBottomView(el, dropdownHeight) {\n const windowHeight = window.innerHeight;\n const offset = el.getBoundingClientRect();\n const elHeight = el.clientHeight;\n const elemBottom = offset.top + elHeight + dropdownHeight;\n\n return elemBottom <= windowHeight;\n }\n\n constructor(props) {\n super(props);\n\n const {\n selectedItem,\n open,\n } = this.props;\n\n this.state = {\n opened: open,\n selectedItem: selectedItem || null,\n };\n\n this.dropdownRef = createRef();\n this.dropdownListRef = createRef();\n this.dropdownButtonRef = createRef();\n this.onSelectItem = this.onSelectItem.bind(this);\n this.toggleDropdown = this.toggleDropdown.bind(this);\n this.handleClickOutside = this.handleClickOutside.bind(this);\n }\n\n componentDidMount() {\n document.addEventListener('mousedown', this.handleClickOutside);\n\n if (this.dropdownListRef.current) {\n this.getStyles();\n }\n }\n\n componentDidUpdate(prevProps) {\n const {\n open,\n } = this.props;\n const {\n opened,\n } = this.state;\n\n if (this.dropdownListRef.current) {\n this.getStyles();\n }\n\n if (\n !prevProps.open\n && open === true\n && !opened\n ) {\n this.toggleDropdown();\n }\n\n if (\n prevProps.open\n && open === false\n && opened\n ) {\n this.closeDropdown();\n }\n }\n\n componentWillUnmount() {\n document.removeEventListener('mousedown', this.handleClickOutside);\n }\n\n handleClickOutside(event) {\n if (\n this.dropdownListRef.current && !this.dropdownListRef.current.contains(event.target)\n && this.dropdownRef.current && !this.dropdownRef.current.contains(event.target)\n ) {\n this.closeDropdown();\n }\n }\n\n onSelectItem(itemId, itemProps) {\n const { closeOnSelect, onSelect } = this.props;\n const changes = {\n selectedItem: itemId,\n selectedItemProps: itemProps,\n };\n\n if (closeOnSelect) {\n changes.opened = false;\n }\n\n this.setState(changes);\n\n if (onSelect && typeof onSelect === 'function') {\n onSelect(itemId);\n }\n }\n\n getStyles() {\n const {\n display,\n position,\n offset,\n } = this.props;\n\n const dropdownEl = this.dropdownListRef.current;\n\n if (offset) {\n dropdownEl.style.top = `${offset.top}`;\n dropdownEl.style.left = `${offset.left}`;\n return;\n }\n\n const scrollTop = Math.max(\n document.documentElement.scrollTop,\n document.body.scrollTop,\n window.scrollY,\n );\n const el = this.dropdownRef.current;\n const elHeight = el.clientHeight;\n const dropdownHeight = dropdownEl ? dropdownEl.clientHeight : 0;\n const dropdownWidth = dropdownEl ? dropdownEl.clientWidth : 0;\n const offsetPosition = el.getBoundingClientRect();\n const { left, top } = offsetPosition;\n let customTop = 0;\n let customLeft = left;\n\n // calculate top position, depending on the element position on the page\n if (Dropdown.isElemInBottomView(el, dropdownHeight)) {\n customTop = top + scrollTop + elHeight;\n } else {\n customTop = top + scrollTop - dropdownHeight - 5;\n }\n\n if (Dropdown.isElemInRightView(el, dropdownWidth)) {\n customLeft = left;\n } else {\n customLeft = left + el.clientWidth - dropdownWidth;\n }\n\n if (position !== 'relative') {\n dropdownEl.style.top = `${customTop}px`;\n if (display !== 'block') {\n dropdownEl.style.left = `${customLeft}px`;\n }\n }\n if (display !== 'block') {\n dropdownEl.style.minWidth = `${this.dropdownButtonRef.current.clientWidth}px`;\n }\n }\n\n getWrapperCssClasses() {\n const {\n btnGroup,\n btnGroupSize,\n className,\n btnTheme,\n wrapperClassName = '',\n } = this.props;\n let cssClasses = [wrapperClassName, 'tyk-dropdown'];\n\n cssClasses.push(`theme-${btnTheme || 'default'}`);\n\n if (className) {\n cssClasses = cssClasses.concat(className.split(' '));\n }\n\n if (btnGroup) {\n cssClasses.push('tyk-button-group');\n cssClasses.push(btnGroupSize ? `tyk-button-group--${btnGroupSize}` : 'tyk-button-group--md');\n }\n\n return cssClasses.join(' ');\n }\n\n getCssClasses() {\n const {\n opened,\n } = this.state;\n const {\n hasCustomContent,\n display,\n listclassnames,\n position,\n maxHeight,\n } = this.props;\n let cssClasses = ['tyk-dropdown-menu', 'tyk-dropdown'];\n\n if (maxHeight) {\n cssClasses.push('tyk-dropdown--scrollable');\n }\n\n if (opened) {\n cssClasses.push('opened');\n }\n\n if (listclassnames) {\n cssClasses = cssClasses.concat(listclassnames.split(' '));\n }\n\n if (display) {\n cssClasses.push('tyk-dropdown--block');\n }\n\n if (hasCustomContent) {\n cssClasses.push('tyk-dropdown--custom');\n }\n\n if (position === 'relative') {\n cssClasses.push('tyk-dropdown--relative');\n }\n\n return cssClasses.join(' ');\n }\n\n getBtnTitle() {\n const { btnTitle, stopButtonTextChange } = this.props;\n const { selectedItemProps } = this.state;\n\n if (!stopButtonTextChange && selectedItemProps && selectedItemProps.title) {\n return selectedItemProps.title;\n }\n\n return btnTitle;\n }\n\n closeDropdown() {\n const { onClose } = this.props;\n\n this.setState({\n opened: false,\n }, () => {\n if (onClose) {\n onClose();\n }\n });\n }\n\n toggleDropdown() {\n const {\n opened,\n } = this.state;\n if (opened) {\n this.closeDropdown();\n\n return;\n }\n\n this.setState({\n opened: true,\n });\n }\n\n render() {\n const {\n appendTo,\n btnClassName,\n btnSize,\n customBtnTitle,\n hasCustomContent,\n btnTheme,\n children,\n label,\n showDropdownIcon,\n showTriggerButton,\n showCheckmark,\n disabled = false,\n maxHeight,\n } = this.props;\n const {\n selectedItem,\n opened,\n } = this.state;\n const DropdownWrapperTag = hasCustomContent ? 'div' : 'ul';\n return (\n \n {\n label\n ? (\n \n )\n : null\n }\n {\n showTriggerButton\n ? (\n \n { customBtnTitle || this.getBtnTitle() }\n \n )\n : null\n }\n {\n opened\n ? ReactDOM.createPortal(\n \n {\n opened\n ? (\n \n {\n (typeof children === 'function')\n ? children({\n closeDropdown: this.closeDropdown.bind(this),\n })\n : children\n }\n \n )\n : null\n }\n ,\n document.querySelector(appendTo || 'body'),\n )\n : null\n }\n \n );\n }\n}\n\nDropdown.propTypes = {\n appendTo: PropTypes.string,\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n PropTypes.func,\n ]),\n closeOnSelect: PropTypes.bool,\n btnClassName: PropTypes.string,\n btnSize: PropTypes.string,\n btnGroupSize: PropTypes.string,\n btnTheme: PropTypes.string,\n btnTitle: PropTypes.oneOfType([\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n customBtnTitle: PropTypes.oneOfType([\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n btnGroup: PropTypes.bool,\n className: PropTypes.string,\n display: PropTypes.string,\n disabled: PropTypes.bool,\n hasCustomContent: PropTypes.bool,\n label: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.func,\n PropTypes.string,\n ]),\n listclassnames: PropTypes.string,\n onClose: PropTypes.func,\n onSelect: PropTypes.func,\n open: PropTypes.bool,\n offset: PropTypes.instanceOf(Object),\n position: PropTypes.string,\n selectedItem: PropTypes.string,\n showDropdownIcon: PropTypes.bool,\n stopButtonTextChange: PropTypes.bool,\n showTriggerButton: PropTypes.bool,\n showCheckmark: PropTypes.bool,\n maxHeight: PropTypes.string,\n wrapperClassName: PropTypes.string,\n};\n\nDropdown.defaultProps = {\n closeOnSelect: false,\n showDropdownIcon: true,\n showTriggerButton: true,\n showCheckmark: true,\n open: false,\n};\n\nDropdown.Item = DropdownItem;\n\nexport default Dropdown;\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"react-ace\");","import React, { useCallback } from 'react';\nimport PropTypes from 'prop-types';\n\nimport ace from 'ace-builds/src-noconflict/ace';\nimport AceEditor from 'react-ace';\nimport 'ace-builds/src-noconflict/mode-javascript';\nimport 'ace-builds/src-noconflict/mode-golang';\nimport 'ace-builds/src-noconflict/mode-python';\nimport 'ace-builds/src-noconflict/mode-css';\nimport 'ace-builds/src-noconflict/mode-json';\nimport 'ace-builds/src-noconflict/mode-xml';\nimport 'ace-builds/src-noconflict/mode-jsx';\nimport 'ace-builds/src-noconflict/ext-searchbox';\nimport 'ace-builds/src-noconflict/ext-beautify';\nimport 'ace-builds/src-noconflict/theme-github';\nimport jsonWorker from 'ace-builds/src-noconflict/worker-json';\n\nace.config.setModuleUrl('ace/mode/json_worker', jsonWorker);\n\nfunction CodeEditor(props) {\n const {\n disabled,\n readOnly,\n disableValidation,\n id,\n error,\n label,\n labelwidth,\n note,\n onBlur,\n onChange,\n theme,\n value,\n setOptions,\n wrapperClassName,\n } = props;\n const classes = [\n 'tyk-form-group',\n wrapperClassName,\n ...(theme ? theme.split(' ').map((t) => `tyk-form-group--${t}`) : []),\n labelwidth && 'tyk-form-group--label-has-width',\n error && 'has-error',\n ].filter(Boolean).join(' ');\n\n const finalSetOptions = {\n ...setOptions,\n ...disableValidation && { useWorker: false },\n };\n\n const getCodeEditorError = useCallback(() => (\n error && error !== 'true' && error !== 'false'\n ? (\n

    \n {error}\n

    \n )\n : null\n ), [error]);\n\n const getLabelStyles = useCallback(() => {\n if (labelwidth) return { flexBasis: labelwidth };\n return {};\n }, [labelwidth]);\n\n const getNonLabelWidth = useCallback(() => {\n if (labelwidth) return { flexBasis: `calc(100% - ${labelwidth} - 20px)` };\n return {};\n }, [labelwidth]);\n\n const handleOnChange = useCallback((newValue) => {\n if (onChange) onChange(newValue);\n }, [onChange]);\n\n const handleOnBlur = useCallback(() => {\n if (onBlur) onBlur(value);\n }, [onBlur, value]);\n\n return (\n
    \n {\n label\n ? \n : null\n }\n
    \n {\n // eslint-disable-next-line\n editorInstance.container.style.resize = 'both';\n // mouseup = css resize end\n document.addEventListener('mouseup', () => (\n editorInstance.resize()\n ));\n }}\n setOptions={finalSetOptions}\n />\n {\n note\n ?

    { note }

    \n : null\n }\n { getCodeEditorError() }\n
    \n
    \n );\n}\n\nCodeEditor.propTypes = {\n disabled: PropTypes.bool,\n readOnly: PropTypes.bool,\n disableValidation: PropTypes.bool,\n id: PropTypes.string,\n error: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.bool,\n ]),\n label: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.func,\n PropTypes.string,\n ]),\n labelwidth: PropTypes.string,\n mode: PropTypes.string,\n name: PropTypes.string,\n note: PropTypes.string,\n onBlur: PropTypes.func,\n onChange: PropTypes.func,\n theme: PropTypes.string,\n value: PropTypes.string,\n setOptions: PropTypes.instanceOf(Object),\n wrapperClassName: PropTypes.string,\n};\n\nexport default CodeEditor;\n","import React, { Component, Fragment, createRef } from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\n\nimport Icon from '../../../components/Icon';\nimport Button from '../../../components/Button';\n\nconst getStateSelectedValues = (multiple, tags, value) => {\n if (!value) {\n return (multiple || tags) ? [] : null;\n }\n\n return value;\n};\n\nexport default class Combobox extends Component {\n static closeList() {\n return {\n cursor: -1,\n opened: false,\n };\n }\n\n static openList() {\n return {\n opened: true,\n };\n }\n\n static filterByName(itemValue, inputValue) {\n return itemValue.name.toLowerCase().indexOf(inputValue) > -1;\n }\n\n static propTypes = {\n allowCustomValues: PropTypes.bool,\n CustomListComponent: PropTypes.elementType,\n searchItem: PropTypes.func,\n disabled: PropTypes.bool,\n error: PropTypes.string,\n id: PropTypes.string,\n label: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.func,\n PropTypes.string,\n ]),\n labelwidth: PropTypes.string,\n multiple: PropTypes.bool,\n max: PropTypes.number,\n note: PropTypes.oneOfType([\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n onChange: PropTypes.func,\n placeholder: PropTypes.string,\n tags: PropTypes.bool,\n theme: PropTypes.string,\n value: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.instanceOf(Object),\n PropTypes.instanceOf(Array),\n ]),\n values: PropTypes.instanceOf(Array),\n };\n\n static defaultProps = {\n allowCustomValues: true,\n };\n\n constructor(props) {\n super(props);\n const {\n multiple,\n tags,\n value,\n } = props;\n\n this.state = {\n cursor: -1,\n opened: false,\n width: 50,\n initialValue: value,\n stateSelectedValues: getStateSelectedValues(multiple, tags, value),\n searchText: '',\n tags,\n };\n\n this.comboboxRef = createRef();\n this.valuesListRef = createRef();\n this.inputRef = createRef();\n this.textRef = createRef();\n\n this.focusInput = this.focusInput.bind(this);\n this.onKeyUp = this.onKeyUp.bind(this);\n Combobox.openList = Combobox.openList.bind(this);\n this.handleClickOutside = this.handleClickOutside.bind(this);\n this.handleItemsNavigation = this.handleItemsNavigation.bind(this);\n this.handleComboboxDropdownClick = this.handleComboboxDropdownClick.bind(this);\n this.handleListItemClick = this.handleListItemClick.bind(this);\n this.handlePillRemoveClick = this.handlePillRemoveClick.bind(this);\n this.manageSelectedTags = this.manageSelectedTags.bind(this);\n }\n\n componentDidMount() {\n const { tags } = this.props;\n\n if (tags) {\n this.setInputWidth();\n }\n\n this.bindEvents();\n }\n\n componentWillUnmount() {\n this.unBindEvents();\n }\n\n static getDerivedStateFromProps(nextProps, prevState) {\n if (\n JSON.stringify(nextProps.value) !== JSON.stringify(prevState.initialValue)\n || nextProps.tags !== prevState.tags\n ) {\n return {\n initialValue: nextProps.value,\n stateSelectedValues: getStateSelectedValues(\n nextProps.multiple,\n nextProps.tags,\n nextProps.value,\n ),\n tags: nextProps.tags,\n };\n }\n\n return null;\n }\n\n onKeyUp(e) {\n const { tags, allowCustomValues } = this.props;\n const { cursor, opened } = this.state;\n const filteredValues = this.filterValues();\n let tempState = Object.assign({}, this.getSearchText());\n\n if (tags && e.key !== 'Escape') {\n tempState = Object.assign({}, tempState, this.setInputWidth());\n }\n\n if (e.key === 'Enter') {\n const methodName = (tags) ? 'manageSelectedTags' : 'manageSelectedValues';\n tempState = Object.assign({}, tempState, this[methodName](cursor));\n }\n\n if (allowCustomValues && !e.key === ' ' && tags) {\n tempState = Object.assign({}, tempState, this.manageSelectedTags());\n }\n\n if (\n !opened\n && this.inputRef.current.value\n && filteredValues\n && filteredValues.length\n && e.key !== 'Escape'\n ) {\n tempState = Object.assign({}, tempState, Combobox.openList());\n }\n\n if (e.key === 'Escape' && opened) {\n tempState = Object.assign({}, tempState, Combobox.closeList());\n }\n\n if (opened && filteredValues && !filteredValues.length) {\n tempState = Object.assign({}, tempState, Combobox.closeList());\n }\n\n this.setState(previousState => Object.assign({}, previousState, tempState));\n }\n\n getLabelStyles() {\n const { labelwidth } = this.props;\n const styles = {};\n\n if (labelwidth) {\n styles.flexBasis = labelwidth;\n }\n\n return styles;\n }\n\n getNonLabelWidth() {\n const { labelwidth } = this.props;\n const styles = {};\n\n if (labelwidth) {\n styles.flexBasis = `calc(100% - ${labelwidth} - 20px)`;\n }\n\n return styles;\n }\n\n setInputWidth() {\n return {\n width: 50 + this.textRef.current.offsetWidth,\n };\n }\n\n getSelectedIndex(value) {\n const { stateSelectedValues } = this.state;\n let position = -1;\n\n if (Array.isArray(stateSelectedValues)) {\n stateSelectedValues.forEach((item, index) => {\n if (item.id === value.id) {\n position = index;\n }\n });\n } else if (stateSelectedValues) {\n if (stateSelectedValues.id === value.id) {\n position = 0;\n }\n }\n\n return position;\n }\n\n getSearchText() {\n return {\n searchText: this.inputRef.current.value,\n };\n }\n\n getListItemCssClasses(value, index) {\n const cssClasses = [];\n const {\n cursor,\n } = this.state;\n\n if (cursor === index) {\n cssClasses.push('active');\n }\n\n if (value.disabled) {\n cssClasses.push('disabled');\n }\n\n return cssClasses.join(' ');\n }\n\n getComboboxListCssClass() {\n const { opened } = this.state;\n const { tags, theme } = this.props;\n const themes = theme ? theme.split(' ') : [];\n\n const cssClasses = ['tyk-combobox__list'];\n\n if (opened) {\n cssClasses.push('tyk-combobox__list--opened');\n }\n\n if (tags) {\n cssClasses.push('tyk-combobox__list--has-tags');\n }\n\n if (themes.length) {\n themes.forEach((iTheme) => {\n cssClasses.push(`tyk-form-group--${iTheme}`);\n });\n }\n\n return cssClasses.join(' ');\n }\n\n getCssClasses() {\n const {\n error, disabled, theme, labelwidth,\n } = this.props;\n const cssClasses = ['tyk-form-group', 'tyk-combobox'];\n const themes = theme ? theme.split(' ') : [];\n\n if (error) {\n cssClasses.push('has-error');\n }\n\n if (labelwidth) {\n cssClasses.push('tyk-form-group--label-has-width');\n }\n\n if (themes.length) {\n themes.forEach((iTheme) => {\n cssClasses.push(`tyk-form-group--${iTheme}`);\n });\n }\n\n if (disabled) {\n cssClasses.push('disabled');\n }\n\n return cssClasses.join(' ');\n }\n\n getInputError() {\n const { error } = this.props;\n\n return (error && error !== 'true' && error !== 'false')\n ? (\n \n { error }\n

    \n )\n : null;\n }\n\n getStyles() {\n const { scrollTop } = document.documentElement;\n const el = this.comboboxRef.current;\n const elHeight = el.offsetHeight;\n const elWidth = el.offsetWidth;\n\n const offset = el.getBoundingClientRect();\n const { left } = offset;\n let top = 0;\n\n top = offset.top + scrollTop + elHeight;\n\n return {\n top: `${top - 1}px`,\n left: `${left}px`,\n width: `${elWidth}px`,\n };\n }\n\n getComboboxDisplayData() {\n const { stateSelectedValues } = this.state;\n const { multiple, placeholder, values } = this.props;\n\n if (!stateSelectedValues) {\n return placeholder;\n }\n\n if (stateSelectedValues && Array.isArray(stateSelectedValues) && !stateSelectedValues.length) {\n return placeholder;\n }\n\n if (stateSelectedValues && !Array.isArray(stateSelectedValues) && !stateSelectedValues.id) {\n return placeholder;\n }\n\n if (Array.isArray(stateSelectedValues) && multiple) {\n return stateSelectedValues.reduce((prevValue, value, index) => prevValue + value.name + ((index !== stateSelectedValues.length - 1) ? ', ' : ''), '');\n }\n\n if (\n values\n && values.length\n && !Array.isArray(stateSelectedValues) && !stateSelectedValues.name\n ) {\n return values.filter(value => value.id === stateSelectedValues.id)[0].name;\n }\n\n return stateSelectedValues.name;\n }\n\n manageSelectedTags(index) {\n const { max, allowCustomValues } = this.props;\n const { stateSelectedValues } = this.state;\n const filteredValues = this.filterValues();\n const value = { id: this.inputRef.current.value, name: this.inputRef.current.value };\n\n if (allowCustomValues === false && index === -1) {\n return null;\n }\n\n const tempValue = filteredValues[index] || value;\n const selectedIndex = this.getSelectedIndex(tempValue);\n let selectedValues = {};\n\n this.inputRef.current.value = '';\n\n if (selectedIndex > -1 && this.isInInitialValues(tempValue)) {\n selectedValues = this.removeSelectedValue(selectedIndex);\n } else if (selectedIndex === -1) {\n if (max && stateSelectedValues.length >= max) {\n return selectedValues;\n }\n selectedValues = this.addSelectedValue(tempValue);\n }\n\n return selectedValues;\n }\n\n manageSelectedValues(index) {\n const { stateSelectedValues } = this.state;\n const {\n multiple, onChange, max,\n } = this.props;\n const filteredValues = this.filterValues();\n const tempSelectedValues = filteredValues[index];\n let selectedValues;\n const selectedIndex = this.getSelectedIndex(tempSelectedValues);\n\n if (tempSelectedValues && multiple) {\n if (selectedIndex > -1) {\n selectedValues = this.removeSelectedValue(selectedIndex);\n } else {\n if (max && stateSelectedValues.length >= max) {\n return selectedValues;\n }\n selectedValues = this.addSelectedValue(filteredValues[index]);\n }\n\n // tempSelectedValues = stateSelectedValues;\n } else {\n selectedValues = {\n stateSelectedValues: (selectedIndex === -1) ? tempSelectedValues : { id: null },\n };\n\n if (onChange && typeof onChange === 'function') {\n onChange((selectedIndex === -1) ? tempSelectedValues : null);\n }\n }\n\n return selectedValues;\n }\n\n removeSelectedValue(index) {\n const { stateSelectedValues } = this.state;\n const { onChange } = this.props;\n const tempStateSelectedValues = JSON.parse(JSON.stringify(stateSelectedValues));\n\n tempStateSelectedValues.splice(index, 1);\n\n if (onChange && typeof onChange === 'function') {\n onChange(tempStateSelectedValues.length ? tempStateSelectedValues : null);\n }\n\n return {\n stateSelectedValues: tempStateSelectedValues,\n searchText: '',\n };\n }\n\n addSelectedValue(value) {\n const { stateSelectedValues } = this.state;\n const { onChange } = this.props;\n const tempStateSelectedValues = JSON.parse(JSON.stringify(stateSelectedValues));\n\n tempStateSelectedValues.push(value);\n\n if (onChange && typeof onChange === 'function') {\n onChange(tempStateSelectedValues.length ? tempStateSelectedValues : null);\n }\n\n return {\n stateSelectedValues: tempStateSelectedValues,\n searchText: '',\n };\n }\n\n isInInitialValues(value) {\n const { values } = this.props;\n let ok = false;\n\n values.forEach((item) => {\n if (value.id === item.id) {\n ok = true;\n }\n });\n\n return ok;\n }\n\n filterValues() {\n const { values, searchItem } = this.props;\n\n if (!this.inputRef.current) {\n return values;\n }\n\n const arr = values\n .filter(\n value => (searchItem\n ? searchItem(value, this.inputRef.current.value.toLowerCase())\n : Combobox.filterByName(value, this.inputRef.current.value.toLowerCase())),\n );\n\n return arr;\n }\n\n bindEvents() {\n document.addEventListener('mousedown', this.handleClickOutside);\n }\n\n unBindEvents() {\n document.removeEventListener('mousedown', this.handleClickOutside);\n }\n\n handleItemsNavigation(e) {\n const { tags } = this.props;\n if (['ArrowDown', 'ArrowUp'].indexOf(e.key) === -1) {\n return;\n }\n\n const { cursor } = this.state;\n const filteredValues = this.filterValues();\n let cursorNext;\n\n e.preventDefault();\n\n if (e.key === 'ArrowDown') {\n if (cursor === -1 || cursor === filteredValues.length - 1) {\n cursorNext = 0;\n } else if (cursor < filteredValues.length - 1) {\n cursorNext = cursor + 1;\n }\n }\n\n if (e.key === 'ArrowUp') {\n if (cursor > 0) {\n cursorNext = cursor - 1;\n } else {\n cursorNext = filteredValues.length - 1;\n }\n }\n\n if (this.valuesListRef.current && cursorNext > 4) {\n const scrollTop = (cursorNext - 4) * 38;\n\n this.valuesListRef.current.scrollTop = (!tags) ? 60 + scrollTop : scrollTop;\n } else if (this.valuesListRef.current) {\n this.valuesListRef.current.scrollTop = 0;\n }\n\n this.setState(previousState => ({\n ...previousState,\n opened: true,\n cursor: cursorNext,\n }));\n }\n\n handleListItemClick(index) {\n // eslint-disable-next-line react/destructuring-assignment\n const clickedValue = this.props.values[index];\n if (clickedValue.disabled) return;\n\n const { multiple, tags } = this.props;\n\n const methodName = (tags) ? 'manageSelectedTags' : 'manageSelectedValues';\n const tempState = Object.assign({}, this.state, this[methodName](index));\n\n this.setState((previousState) => {\n if (!multiple && !tags) {\n tempState.opened = false;\n }\n\n return Object.assign({}, previousState, tempState);\n });\n }\n\n handlePillRemoveClick(index) {\n const { disabled } = this.props;\n\n if (disabled) {\n return;\n }\n\n const tempState = this.removeSelectedValue(index);\n\n this.setState(previousState => Object.assign({}, previousState, tempState));\n }\n\n handleClickOutside(event) {\n if (\n this.valuesListRef.current && !this.valuesListRef.current.contains(event.target)\n && this.comboboxRef.current && !this.comboboxRef.current.contains(event.target)\n ) {\n this.setState(previousState => Object.assign({}, previousState, Combobox.closeList()));\n }\n }\n\n handleComboboxDropdownClick() {\n const { disabled } = this.props;\n\n if (disabled) {\n return;\n }\n\n this.setState(previousState => Object.assign({}, previousState, Combobox.openList()));\n }\n\n reset() {\n const { multiple, tags, value } = this.props;\n\n this.setState({\n stateSelectedValues: getStateSelectedValues(multiple, tags, value),\n });\n }\n\n focusInput() {\n if (this.inputRef.current) {\n this.inputRef.current.focus();\n }\n }\n\n render() {\n const {\n CustomListComponent,\n disabled,\n id,\n label,\n note,\n tags,\n max,\n placeholder,\n } = this.props;\n const {\n width, opened, searchText, stateSelectedValues,\n } = this.state;\n\n const filteredValues = this.filterValues();\n\n return (\n \n
    \n {\n label\n ? \n : null\n }\n \n {}}\n ref={this.comboboxRef}\n >\n {\n tags\n ? (\n \n {\n (stateSelectedValues || []).map((value, index) => (\n
  • \n \n { value.name }\n
  • \n ))\n }\n \n {(max === undefined || stateSelectedValues?.length < max) && (\n <>\n {\n if (e.key === 'Enter') {\n e.preventDefault();\n }\n }}\n onKeyUp={this.onKeyUp}\n onKeyDown={this.handleItemsNavigation}\n placeholder={(!stateSelectedValues || !stateSelectedValues.length) ? placeholder : ''}\n ref={this.inputRef}\n style={{\n width: (!stateSelectedValues || !stateSelectedValues.length) ? '100%' : `${width}px`,\n }}\n />\n \n { searchText }\n \n \n )}\n {\n filteredValues.length\n ? (\n \n )\n : null\n }\n \n
    \n )\n : (\n {}}\n >\n { this.getComboboxDisplayData() }\n \n \n )\n }\n \n {\n note\n ?

    { note }

    \n : null\n }\n { this.getInputError() }\n
    \n \n {\n // eslint-disable-next-line no-nested-ternary\n !CustomListComponent\n ? opened && filteredValues.length\n ? ReactDOM.createPortal(\n \n {\n !tags\n ? (\n
  • \n \n
  • \n )\n : null\n }\n {\n filteredValues\n .map((value, index) => (\n {}}\n key={value.id}\n >\n {\n (this.getSelectedIndex(value) > -1)\n ? \n : null\n }\n \n {' '}\n { value.name }\n \n \n ))\n }\n ,\n document.querySelector('body'),\n )\n : null\n : (\n \n )\n }\n
    \n );\n }\n}\n","import React, { useState, useRef, useEffect } from 'react';\nimport Icon from '../../../../components/Icon';\nimport Pill from '../../../../components/Pill';\n\nfunction Value(props) {\n const {\n value,\n max,\n tags,\n tagSeparators,\n addTagOnBlur,\n placeholder,\n disabled,\n renderValue,\n valueOverflow,\n focus,\n onMessage: sendMessage,\n readOnly,\n } = props;\n const INPUT_MIN_WIDTH = 60;\n const inputRef = useRef(null);\n const dummyElementRef = useRef(null);\n const [inputValue, setInputValue] = useState('');\n const [inputWidth, setInputWidth] = useState(`${INPUT_MIN_WIDTH + 10}px`);\n\n function entryFieldOnChange(val) {\n if (tagSeparators.some(ts => val.slice(-1) === ts)) return;\n const dummy = dummyElementRef.current;\n dummy.innerHTML = val;\n setInputWidth(`${Math.max(dummy.clientWidth, INPUT_MIN_WIDTH) + 10}px`);\n setInputValue(val);\n sendMessage('tag.input.change', val);\n }\n\n function entryFieldOnKeyDown(key, val) {\n if (!tags) return;\n if (val === '' && key === 'Backspace' && value.length) {\n sendMessage('tag.remove', value[value.length - 1].id);\n return;\n }\n if (key === 'Enter') {\n sendMessage('tag.input.enter', val);\n entryFieldOnChange('');\n return;\n }\n if (key === 'ArrowUp') {\n sendMessage('tag.input.arrowUp');\n return;\n }\n if (key === 'ArrowDown') {\n sendMessage('tag.input.arrowDown');\n return;\n }\n if (key === 'Escape') {\n sendMessage('tag.input.escape');\n return;\n }\n if (tagSeparators.includes(key)) {\n sendMessage('tag.add', val);\n entryFieldOnChange('');\n }\n }\n\n function triggerAction() {\n sendMessage('text-value.click');\n }\n\n function textValue(val, isPlaceholder = false) {\n if (readOnly) return val || '-';\n\n const classes = [\n 'tyk-combobox2__text-value',\n `overflow-${valueOverflow}`,\n isPlaceholder && 'is-placeholder',\n ].filter(Boolean).join(' ');\n return (\n \n {val}\n \n );\n }\n\n function renderCustomValue(v) {\n const config = {\n tags,\n tagSeparators,\n placeholder,\n disabled,\n renderValue,\n sendMessage,\n };\n return renderValue(v, config);\n }\n\n function renderTag(v) {\n if (renderValue) return renderCustomValue(v);\n\n return (\n \n {\n e.stopPropagation();\n sendMessage('tag.remove', v.id);\n }}\n >\n \n \n { v.name }\n \n );\n }\n\n function getTags() {\n return (\n <>\n {value.map(renderTag)}\n {value.length < max && (\n <>\n entryFieldOnChange(e.target.value)}\n onKeyDown={(e) => {\n if (e.key === 'Enter') e.preventDefault();\n entryFieldOnKeyDown(e.key, e.target.value);\n }}\n onFocus={() => sendMessage('tag.input.focus')}\n onBlur={(e) => {\n sendMessage('tag.input.blur', e.target.value);\n if (addTagOnBlur) entryFieldOnChange('');\n }}\n />\n \n \n )}\n \n );\n }\n\n useEffect(() => {\n if (focus && inputRef.current) inputRef.current.focus();\n }, [focus]);\n\n if (readOnly) {\n return
    {textValue(value.map(v => v.name).join(', '))}
    ;\n }\n\n if (tags) return getTags();\n if (renderValue) {\n return value.length === 0 ? textValue(placeholder, true) : value.map(renderCustomValue);\n }\n return value.length === 0\n ? textValue(placeholder, true)\n : textValue(value.map(v => v.name).join(', '));\n}\n\nexport default Value;\n","import React, { useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport Icon from '../../../../components/Icon';\n\nfunction List(props) {\n const {\n listRef,\n tags,\n values,\n searchValue,\n activeItem,\n onMessage: sendMessage,\n renderListItem,\n selectAll,\n showSearch,\n } = props;\n\n useEffect(() => {\n if (!listRef.current) return;\n const activeElement = listRef.current.querySelector('.active');\n if (activeElement) activeElement.scrollIntoView({ block: 'end' });\n }, [activeItem]);\n\n function renderItem(item) {\n if (renderListItem) {\n return renderListItem(item, {\n tags, searchValue, sendMessage, activeItem,\n });\n }\n\n return (\n !item.disabled && sendMessage('value.select', { item })}\n onKeyPress={() => {}}\n >\n {item.selected && }\n {item.name}\n \n );\n }\n\n function renderSelectAllOption() {\n const isAllSelected = values.every(v => v.selected);\n const isNoneSelected = values.every(v => !v.selected);\n const label = selectAll?.label ?? 'Select All';\n const mode = selectAll?.mode ?? 'select';\n const show = selectAll?.show ?? 'always';\n const render = selectAll?.render;\n\n const shouldRenderOption = show === 'always' || (mode === 'select' ? !isAllSelected : !isNoneSelected);\n if (!shouldRenderOption) return null;\n\n if (render) {\n return render({\n label,\n mode,\n show,\n isAllSelected,\n isNoneSelected,\n }, sendMessage);\n }\n return (\n sendMessage('value.select-all', mode === 'select' ? !isAllSelected : isNoneSelected)}\n onKeyDown={() => {}}\n >\n {(mode === 'select' ? isAllSelected : isNoneSelected) && }\n {label}\n \n );\n }\n\n return (\n <>\n {!tags && showSearch && (\n
    \n sendMessage('search.change', e.target.value)}\n onKeyDown={(e) => {\n if (e.key === 'Escape') sendMessage('search.escape');\n if (e.key === 'ArrowUp') sendMessage('search.arrowUp');\n if (e.key === 'ArrowDown') sendMessage('search.arrowDown');\n if (e.key === 'Enter') sendMessage('search.enter');\n }}\n />\n
    \n )}\n {values.length > 0 && (\n
      \n {Boolean(selectAll) && (\n renderSelectAllOption()\n )}\n {values.map(renderItem)}\n
    \n )}\n \n );\n}\n\nList.propTypes = {\n listRef: PropTypes.instanceOf(Object),\n tags: PropTypes.bool,\n values: PropTypes.instanceOf(Array),\n searchValue: PropTypes.string,\n activeItem: PropTypes.instanceOf(Object),\n onMessage: PropTypes.func,\n renderListItem: PropTypes.func,\n selectAll: PropTypes.oneOfType([\n PropTypes.bool,\n PropTypes.shape({\n label: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.func,\n PropTypes.string,\n ]),\n mode: PropTypes.oneOf(['select', 'unselect']),\n show: PropTypes.oneOf(['always', 'notSameState']),\n render: PropTypes.func,\n }),\n ]),\n showSearch: PropTypes.bool,\n};\n\nexport default List;\n","import React, { useState, useRef, useEffect } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Icon from '../../../components/Icon';\nimport FloatingContainer from '../../../components/FloatingContainer';\n\nimport Value from './js/Value';\nimport List from './js/List';\n\nfunction normalizeValue(value, values) {\n let v = value;\n if (typeof value === 'string') v = { id: value, name: value };\n else if (!value.hasOwnProperty('name')) v = { ...value, name: value.id }; // eslint-disable-line no-prototype-builtins\n if (!values) return v;\n const existingVal = values.find((ev) => ev.id === v.id);\n return existingVal ? { ...v, ...existingVal } : v;\n}\n\nfunction getValueFromProp(value, values) {\n if (!value) return [];\n if (Array.isArray(value)) return value.map((v) => normalizeValue(v, values));\n return [normalizeValue(value, values)];\n}\n\n/**\n * Dropdown-like component that can display selected values as regular text,\n * tags, or in a custom way.\n * You can select values from a list or type in new ones.\n */\nfunction Combobox2({\n value: propValue,\n values: propValues = [],\n valueOverflow = 'single',\n label = '',\n labelwidth,\n tags = false,\n tagSeparators = [' ', 'Enter'],\n addTagOnBlur = false,\n max: maxProp,\n multiple = false,\n placeholder = '',\n theme,\n note = '',\n error = '',\n disabled = false,\n readOnly = false,\n allowCustomValues = true,\n searchItem: matchItemFn,\n renderValue,\n renderListItem,\n renderList: renderListProp,\n CustomListComponent,\n onBeforeChange = () => true,\n onChange = () => {},\n floatingContainerConfig,\n expandMode,\n infiniteScrollerConfig,\n displayDropdownTrigger = true,\n selectAll,\n closeOnSelect,\n showSearch = false,\n required = false,\n validateOnChange = () => {},\n wrapperClassName = '',\n ...restProps\n}) {\n const max = multiple ? Infinity : maxProp || (tags ? Infinity : 1);\n const renderList = CustomListComponent\n ? (values, { sendMessage }) => (\n sendMessage('value.select', { item: values[index] })}\n getListItemCssClasses={() => {}}\n />\n )\n : renderListProp;\n\n const rootRef = useRef(null);\n const comboboxControlRef = useRef(null);\n const dropdownRef = useRef(null);\n const listRef = useRef(null);\n\n const [value, setValue] = useState(getValueFromProp(propValue, propValues));\n const [values, setValues] = useState(propValues.map((v) => normalizeValue(v)));\n const [searchValue, setSearchValue] = useState('');\n const [activeItem, setActiveItem] = useState(null);\n const [isOpened, setIsOpened] = useState(false);\n const [valuesExpanded, setValuesExpanded] = useState(false);\n const [localValidationError, setLocalValidationError] = useState('');\n\n function getThemeClasses() {\n const themes = theme ? theme.split(' ') : [];\n return themes.map((iTheme) => `tyk-form-group--${iTheme}`);\n }\n\n function getCssClasses() {\n return [\n wrapperClassName,\n 'tyk-form-group',\n 'tyk-combobox2',\n ...getThemeClasses(),\n (error || localValidationError) && 'has-error',\n labelwidth && 'tyk-form-group--label-has-width',\n disabled && 'disabled',\n expandMode && 'is-expand-mode',\n ].filter(Boolean).join(' ');\n }\n\n function getFilteredValues() {\n const defaultFn = (v, s) => v?.name?.toLowerCase()?.includes(s);\n const fn = matchItemFn || defaultFn;\n const filteredValues = values.filter((v) => fn(v, searchValue.toLowerCase()));\n return filteredValues;\n }\n\n function openDropdown() {\n setIsOpened(true);\n }\n\n function closeDropdown() {\n setIsOpened(false);\n if (!tags) updateSearchValue('');\n setActiveItem(null);\n }\n\n function updateSearchValue(newSearchValue) {\n setSearchValue(newSearchValue);\n if (activeItem && getFilteredValues().every((fv) => fv.id !== activeItem.id)) {\n setActiveItem(null);\n }\n if (newSearchValue && !isOpened) openDropdown();\n }\n\n function isValidValue(newValues, lastValue) {\n const localError = validateOnChange(newValues, lastValue);\n setLocalValidationError(localError);\n return localError === undefined;\n }\n\n function updateValue(newValues) {\n setValue(newValues);\n onChange(max === 1 && !tags ? (newValues[0] || null) : newValues);\n }\n\n function addTag(val) {\n if (!val) return;\n if (value.length >= max) return;\n if (value.some(({ name }) => name === val)) return;\n\n const listValueIndex = values.findIndex((lv) => lv.name === val);\n let newValue;\n let finalValue = [...value];\n let selectedValues;\n\n if (listValueIndex === -1) {\n if (allowCustomValues) {\n newValue = { id: val, name: val };\n finalValue = [...value, newValue];\n }\n } else {\n selectedValues = [\n ...values.slice(0, listValueIndex),\n { ...values[listValueIndex], selected: true },\n ...values.slice(listValueIndex + 1),\n ];\n newValue = values[listValueIndex];\n finalValue = [...value, values[listValueIndex]];\n }\n\n if (isValidValue(finalValue, newValue) && onBeforeChange(value, finalValue)) {\n if (selectedValues) {\n setValues(selectedValues);\n }\n updateValue(finalValue);\n }\n }\n\n function removeTag(id) {\n if (required && max === 1) return;\n\n const listValueIndex = values.findIndex((lv) => lv.id === id);\n const newValue = value.filter((v) => v.id !== id);\n\n if (!onBeforeChange(value, newValue)) return;\n\n if (listValueIndex !== -1) {\n setValues([\n ...values.slice(0, listValueIndex),\n { ...values[listValueIndex], selected: false },\n ...values.slice(listValueIndex + 1),\n ]);\n }\n updateValue(newValue);\n }\n\n function selectValue({ id }) {\n const val = values.find((v) => v.id === id);\n let finalValue = value;\n let selectedValues = values;\n\n if (val.selected) {\n if (!required || max !== 1) {\n finalValue = value.filter((v) => v.id !== val.id);\n selectedValues = values.map((v) => (v.id === val.id ? { ...v, selected: false } : v));\n }\n } else if (value.length < max) {\n finalValue = [...value, val];\n selectedValues = values.map((v) => (v.id === val.id ? { ...v, selected: true } : v));\n } else if (max === 1) {\n finalValue = [val];\n selectedValues = values.map((v) => ({ ...v, selected: v.id === val.id }));\n }\n\n if (isValidValue(finalValue, val) && onBeforeChange(value, finalValue)) {\n updateValue(finalValue);\n setValues(selectedValues);\n }\n\n if (max === 1 || closeOnSelect) {\n closeDropdown();\n }\n }\n\n function selectAllValues(selected) {\n if (values.length > max) return;\n const newValue = selected ? [...values] : [];\n\n if (!onBeforeChange(value, newValue)) return;\n\n updateValue(newValue);\n setValues(values.map((v) => ({ ...v, selected })));\n if (closeOnSelect) closeDropdown();\n }\n\n function moveUpActiveItem() {\n const visibleItems = getFilteredValues().filter((v) => !v.disabled);\n if (visibleItems.length === 0) return;\n if (activeItem === null || visibleItems.length === 1) {\n setActiveItem(visibleItems[visibleItems.length - 1]);\n return;\n }\n const activeIndex = visibleItems.findIndex((v) => v.id === activeItem.id);\n setActiveItem(visibleItems[activeIndex > 0 ? activeIndex - 1 : visibleItems.length - 1]);\n }\n\n function moveDownActiveItem() {\n const visibleItems = getFilteredValues().filter((v) => !v.disabled);\n if (visibleItems.length === 0) return;\n if (activeItem === null || visibleItems.length === 1) {\n setActiveItem(visibleItems[0]);\n return;\n }\n const activeIndex = visibleItems.findIndex((v) => v.id === activeItem.id);\n setActiveItem(visibleItems[activeIndex < visibleItems.length - 1 ? activeIndex + 1 : 0]);\n }\n\n function executeTriggerAction() {\n if (expandMode) {\n setValuesExpanded(!valuesExpanded);\n } else {\n openDropdown();\n }\n }\n\n function handleDocumentClick(e) {\n const isClickInside = (rootRef.current && rootRef.current.contains(e.target))\n || (dropdownRef.current && dropdownRef.current.contains(e.target));\n if (!isClickInside) {\n closeDropdown();\n }\n }\n\n function onClickCapture(e) {\n if (!disabled) return;\n if (!expandMode) {\n e.stopPropagation();\n return;\n }\n\n const triggerElement = rootRef.current.querySelector('.tyk-combobox2__values-container-trigger');\n if (!triggerElement) return;\n\n const isClickOnTrigger = triggerElement === e.target || triggerElement.contains(e.target);\n if (!isClickOnTrigger) e.stopPropagation();\n }\n\n function onTagMessage(message, data) {\n if (message === 'add') {\n addTag(data);\n updateSearchValue('');\n }\n\n if (message === 'remove') removeTag(data);\n\n if (message === 'input.change') updateSearchValue(data);\n\n if (message === 'input.enter') {\n if (activeItem) {\n selectValue(activeItem);\n } else if (tagSeparators.includes('Enter')) {\n addTag(data);\n updateSearchValue('');\n }\n }\n\n if (message === 'input.arrowUp') {\n openDropdown();\n moveUpActiveItem();\n }\n\n if (message === 'input.arrowDown') {\n openDropdown();\n moveDownActiveItem();\n }\n\n if (message === 'input.escape') closeDropdown();\n\n if (message === 'input.blur' && addTagOnBlur) {\n addTag(data);\n updateSearchValue('');\n }\n\n if (message === 'input.focus') {\n openDropdown();\n }\n }\n\n function onMessage(message, data) {\n if (message.startsWith('tag.')) onTagMessage(message.slice(4), data);\n\n if (message === 'value.select') selectValue(data.item);\n\n if (message === 'value.select-all') selectAllValues(data);\n\n if (message === 'text-value.click') openDropdown();\n\n if (message === 'search.change') updateSearchValue(data);\n\n if (message === 'search.escape') closeDropdown();\n\n if (message === 'search.arrowUp') moveUpActiveItem();\n\n if (message === 'search.arrowDown') moveDownActiveItem();\n\n if (message === 'search.enter') {\n if (activeItem) selectValue(activeItem);\n }\n }\n\n useEffect(() => {\n window.addEventListener('click', handleDocumentClick, true);\n return () => window.removeEventListener('click', handleDocumentClick, true);\n }, []);\n\n useEffect(() => {\n if (propValues.length) {\n const newValues = propValues.map((v) => ({\n ...normalizeValue(v),\n selected: value.some((sv) => sv.id === v.id),\n }));\n setValues(newValues);\n setValue((val) => val.map((v) => newValues.find((nv) => nv.id === v.id) || v));\n } else if (values.length) {\n setValues([]);\n }\n }, [propValues]);\n\n useEffect(() => {\n const newValue = getValueFromProp(propValue, values);\n setValue(newValue);\n setValues((vals) => vals.map((v) => ({\n ...normalizeValue(v),\n selected: newValue.some((nv) => nv.id === v.id),\n })));\n }, [propValue]);\n\n useEffect(() => {\n if (!expandMode) return () => {};\n\n const valuesElement = comboboxControlRef.current.querySelector('.tyk-combobox2__current-values');\n const updateScroll = () => {\n valuesElement.scrollTop = valuesElement.scrollHeight;\n };\n /* eslint-disable-next-line no-undef */\n const mobserver = new MutationObserver(updateScroll);\n const robserver = new ResizeObserver(updateScroll);\n\n mobserver.observe(valuesElement, { attributes: true, childList: true, subtree: true });\n robserver.observe(valuesElement);\n\n return () => {\n mobserver.disconnect();\n robserver.disconnect();\n };\n });\n\n const filteredValues = getFilteredValues();\n const currentValuesClasses = [\n 'tyk-combobox2__current-values',\n expandMode && 'expand-mode',\n `tyk-combobox2__current-values--${valuesExpanded ? 'expanded' : 'collapsed'}`,\n ].join(' ');\n return (\n \n {label && (\n \n )}\n {!readOnly && (\n \n
    \n \n \n
    \n {displayDropdownTrigger && (\n \n {expandMode\n ? (\n \n )\n : (\n \n )}\n \n )}\n \n {isOpened && (!tags || filteredValues.length > 0) && (\n \n {renderList ? (\n renderList(filteredValues, {\n tags,\n searchValue,\n activeItem,\n listRef,\n sendMessage: onMessage,\n })\n ) : (\n \n )}\n \n )}\n {note && (\n

    {note}

    \n )}\n {((error && error !== 'true' && error !== 'false') || Boolean(localValidationError)) && (\n

    {error || localValidationError}

    \n )}\n \n )}\n {readOnly && (\n
    \n \n
    \n )}\n \n );\n}\n\nCombobox2.propTypes = {\n /** If `true` it allows entering values that are not in the list. */\n allowCustomValues: PropTypes.bool,\n /** Alias for `renderList`\n * used for backwards compatibility with the old Combobox component. */\n CustomListComponent: PropTypes.elementType,\n /** A function used for filtering elements displayed in the list when typing in. */\n searchItem: PropTypes.func,\n /** A custom component that will be used to display a value. */\n renderValue: PropTypes.func,\n /** A custom component that will be used to display an item in the dropdown list. */\n renderListItem: PropTypes.func,\n /** A custom component that will be used to display the entire content of the dropdown. */\n renderList: PropTypes.func,\n disabled: PropTypes.bool,\n /** hides the UI form element and displayes just the value as text */\n readOnly: PropTypes.bool,\n error: PropTypes.string,\n label: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.func,\n PropTypes.string,\n ]),\n labelwidth: PropTypes.string,\n /** The maximum number of values that can be selected/added. */\n max: PropTypes.number,\n /** Shorthand for max=Infinity */\n multiple: PropTypes.bool,\n note: PropTypes.oneOfType([\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n /**\n * Callback called before changing the value of the component.\n * The value change will succeed only if the callback's return value is truthy.\n * The callback is called with two arguments: 1) the previous value, 2) the next value */\n onBeforeChange: PropTypes.func,\n onChange: PropTypes.func,\n placeholder: PropTypes.string,\n /** Enables the display of values as `Pill` components that can be\n * removed without opening the dropdown. */\n tags: PropTypes.bool,\n /** A list of characters that will trigger the creation of a tag when typed. */\n tagSeparators: PropTypes.arrayOf(PropTypes.string),\n /** If set to true a tag will be created whenever the component loses focus\n * and there is something typed in. */\n addTagOnBlur: PropTypes.bool,\n theme: PropTypes.string,\n /** The value of the component. It can be a string, an array,\n * or an object with an `id` property. */\n value: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.instanceOf(Array),\n PropTypes.instanceOf(Object),\n ]),\n /** An array of selectable values. */\n values: PropTypes.instanceOf(Array),\n /** Config object passed to the internal floating container component. */\n floatingContainerConfig: PropTypes.instanceOf(Object),\n /** If set to `single` it will display the values on a single line\n * with an ellipsis at the end. */\n valueOverflow: PropTypes.oneOf(['single', 'multiple']),\n /**\n * If set to `true` whenever the user clicks on the dropdown trigger\n * the selected values container\n * will expand to show all selected values instead of opening the dropdown.\n */\n expandMode: PropTypes.bool,\n /** Config object passed to the internal infinite scroller component. */\n infiniteScrollerConfig: PropTypes.instanceOf(Object),\n /** Toggles the display of the dropdown trigger. */\n displayDropdownTrigger: PropTypes.bool,\n /**\n * If a boolean it will toggle the select all functionality from the dropdown.\n * It can also be an object with the shape `{ label, show, mode, render }`.\n * label - A string displayed as the select all option\n * show - It can be one of `['always', 'notSameState']`.\n * `always` means the option will always be displayed.\n * `notSameState` means it will be displayed only if the list items are\n * not all with the same state (depending on the `mode` value)\n * mode - It can be one of `['select', 'unselect']` and makes sense only\n * when the `show` property is `notSameState`\n * `select` means the select all option will only be displayed if not all\n * items are selected\n * `unselect` means the option will be displayed if no items are selected\n */\n selectAll: PropTypes.oneOfType([\n PropTypes.bool,\n PropTypes.shape({\n label: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.func,\n PropTypes.string,\n ]),\n mode: PropTypes.oneOf(['select', 'unselect']),\n show: PropTypes.oneOf(['always', 'notSameState']),\n render: PropTypes.func,\n }),\n ]),\n /** It `true` the dropdown will close after selecting a value. */\n closeOnSelect: PropTypes.bool,\n /** Toggles the display of the search input from the dropdown. */\n showSearch: PropTypes.bool,\n /** If it is required and can only select one value once you have something\n * selected you will not be able to deselect */\n required: PropTypes.bool,\n /** Validates newly added value before adding it to the selected values.\n * Returns an error string in case of error otherwise it returns undefined\n */\n validateOnChange: PropTypes.func,\n wrapperClassName: PropTypes.string,\n};\n\nexport default Combobox2;\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"flatpickr\");","\n import API from \"!../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../css-loader/dist/cjs.js!./flatpickr.min.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../css-loader/dist/cjs.js!./flatpickr.min.css\";\n export default content && content.locals ? content.locals : undefined;\n","import React, {\n useEffect, useState, useRef, useCallback,\n} from 'react';\nimport PropTypes from 'prop-types';\nimport flatpickr from 'flatpickr';\nimport 'flatpickr/dist/flatpickr.min.css';\n\nimport Icon from '../../../components/Icon';\nimport { usePrevious } from '../../../hooks';\n\nfunction DatePicker({\n children,\n disabled,\n readOnly = false,\n error,\n id,\n label,\n labelwidth,\n note,\n onClose,\n onChange,\n onOpen,\n theme,\n config = {},\n value,\n wrapperClassName = '',\n}) {\n const [pickerInstance, setPickerInstance] = useState(null);\n const dateRef = useRef(null);\n\n const prevValue = usePrevious(value);\n\n const hasValueChanged = useCallback((prevDate, currentDate) => {\n if (!prevDate) return true;\n if (!Array.isArray(currentDate)) return prevDate.getTime() !== currentDate.getTime();\n\n let diffDates = currentDate;\n\n if (prevDate && currentDate.length && prevDate.length) {\n diffDates = currentDate.filter((date, index) => date.getTime() !== prevDate[index].getTime());\n\n return diffDates.length > 0;\n }\n\n return currentDate.length > 0;\n }, []);\n\n const onDateChange = useCallback((dateValue) => {\n const finalValue = config.mode === 'range' ? dateValue : dateValue[0] || null;\n\n if (!onChange) return;\n\n if (config.mode === 'range') {\n if (finalValue.length === 2 && hasValueChanged(prevValue, finalValue)) {\n onChange(finalValue);\n }\n } else {\n onChange(finalValue);\n }\n }, [prevValue, onChange, hasValueChanged]);\n\n useEffect(() => {\n if (dateRef && dateRef.current && !pickerInstance) {\n const instance = flatpickr(dateRef.current, {\n ...config, defaultDate: value, onChange: onDateChange, onClose, onOpen,\n });\n setPickerInstance(instance);\n }\n\n return () => {\n if (pickerInstance) {\n pickerInstance.destroy();\n }\n };\n }, [dateRef.current, pickerInstance]);\n\n useEffect(() => {\n if (pickerInstance) {\n let tempValue = value;\n\n if (typeof value === 'string') {\n tempValue = new Date(value);\n } else if (Array.isArray(value)) {\n tempValue = value.map((date) => (typeof date === 'string' ? new Date(date) : date));\n }\n\n if (hasValueChanged(prevValue, tempValue)) {\n pickerInstance.set('onChange', onDateChange);\n if (config.mode === 'range') {\n if (tempValue && tempValue.length === 2) {\n pickerInstance.setDate(tempValue, true);\n }\n } else {\n pickerInstance.setDate(tempValue, true);\n }\n }\n }\n }, [prevValue, value, pickerInstance]);\n\n const classes = [\n 'tyk-form-group',\n 'tyk-form-group--addon-right',\n wrapperClassName,\n ...(theme ? theme.split(' ').map((t) => `tyk-form-group--${t}`) : []),\n labelwidth && 'tyk-form-group--label-has-width',\n error && 'has-error',\n ].filter(Boolean).join(' ');\n\n const getLabelStyles = () => {\n if (labelwidth) return { flexBasis: labelwidth };\n return {};\n };\n\n const getNonLabelWidth = () => {\n if (labelwidth) return { flexBasis: `calc(100% - ${labelwidth} - 20px)` };\n return {};\n };\n\n const openCalendar = useCallback(() => {\n if (!pickerInstance) return;\n\n pickerInstance.open();\n }, [pickerInstance]);\n\n const getInputError = () => (\n (error && error !== 'true' && error !== 'false')\n ? (\n

    \n { error }\n

    \n )\n : null\n );\n\n const getInputField = () => {\n let inputStyle = {};\n let addonStyle = {};\n\n if (config && config.inline) {\n inputStyle = {\n height: 0,\n padding: 0,\n width: 0,\n visibility: 'hidden',\n };\n\n addonStyle = {\n display: 'none',\n };\n }\n return (\n <>\n \n {}}\n tabIndex={0}\n style={addonStyle}\n >\n \n \n \n );\n };\n\n return (\n <>\n {\n children && children.length\n ? children({ openCalendar, ref: dateRef })\n : (\n
    \n {\n label\n ? \n : null\n }\n {!readOnly && (\n \n
    \n {getInputField()}\n
    \n {\n note\n ?

    { note }

    \n : null\n }\n { getInputError() }\n
    \n )}\n \n )\n }\n
    \n {readOnly && !value && '-'}\n {readOnly && value && flatpickr.formatDate(value, config.dateFormat || 'd/m/Y')}\n
    \n \n );\n}\n\nDatePicker.propTypes = {\n config: PropTypes.instanceOf(Object),\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n PropTypes.func,\n ]),\n disabled: PropTypes.bool,\n readOnly: PropTypes.bool,\n id: PropTypes.string,\n label: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.func,\n PropTypes.string,\n ]),\n labelwidth: PropTypes.string,\n note: PropTypes.string,\n onChange: PropTypes.oneOfType([\n PropTypes.func,\n PropTypes.instanceOf(Array),\n ]),\n onClose: PropTypes.oneOfType([\n PropTypes.func,\n PropTypes.instanceOf(Array),\n ]),\n onOpen: PropTypes.oneOfType([\n PropTypes.func,\n PropTypes.instanceOf(Array),\n ]),\n theme: PropTypes.string,\n error: PropTypes.string,\n value: PropTypes.oneOfType([\n PropTypes.instanceOf(Array),\n PropTypes.instanceOf(Object),\n PropTypes.string,\n ]),\n wrapperClassName: PropTypes.string,\n};\n\nexport default DatePicker;\n","export default function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}","export default function requiredArgs(required, args) {\n if (args.length < required) {\n throw new TypeError(required + ' argument' + (required > 1 ? 's' : '') + ' required, but only ' + args.length + ' present');\n }\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isDate\n * @category Common Helpers\n * @summary Is the given value a date?\n *\n * @description\n * Returns true if the given value is an instance of Date. The function works for dates transferred across iframes.\n *\n * @param {*} value - the value to check\n * @returns {boolean} true if the given value is a date\n * @throws {TypeError} 1 arguments required\n *\n * @example\n * // For a valid date:\n * const result = isDate(new Date())\n * //=> true\n *\n * @example\n * // For an invalid date:\n * const result = isDate(new Date(NaN))\n * //=> true\n *\n * @example\n * // For some value:\n * const result = isDate('2014-02-31')\n * //=> false\n *\n * @example\n * // For an object:\n * const result = isDate({})\n * //=> false\n */\nexport default function isDate(value) {\n requiredArgs(1, arguments);\n return value instanceof Date || _typeof(value) === 'object' && Object.prototype.toString.call(value) === '[object Date]';\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n *\n * @param {Date|Number} argument - the value to convert\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Clone the date:\n * const result = toDate(new Date(2014, 1, 11, 11, 30, 30))\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert the timestamp to date:\n * const result = toDate(1392098430000)\n * //=> Tue Feb 11 2014 11:30:30\n */\nexport default function toDate(argument) {\n requiredArgs(1, arguments);\n var argStr = Object.prototype.toString.call(argument);\n\n // Clone the date\n if (argument instanceof Date || _typeof(argument) === 'object' && argStr === '[object Date]') {\n // Prevent the date to lose the milliseconds when passed to new Date() in IE10\n return new Date(argument.getTime());\n } else if (typeof argument === 'number' || argStr === '[object Number]') {\n return new Date(argument);\n } else {\n if ((typeof argument === 'string' || argStr === '[object String]') && typeof console !== 'undefined') {\n // eslint-disable-next-line no-console\n console.warn(\"Starting with v2.0.0-beta.1 date-fns doesn't accept strings as date arguments. Please use `parseISO` to parse strings. See: https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#string-arguments\");\n // eslint-disable-next-line no-console\n console.warn(new Error().stack);\n }\n return new Date(NaN);\n }\n}","import isDate from \"../isDate/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isValid\n * @category Common Helpers\n * @summary Is the given date valid?\n *\n * @description\n * Returns false if argument is Invalid Date and true otherwise.\n * Argument is converted to Date using `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * Invalid Date is a Date, whose time value is NaN.\n *\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @param {*} date - the date to check\n * @returns {Boolean} the date is valid\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // For the valid date:\n * const result = isValid(new Date(2014, 1, 31))\n * //=> true\n *\n * @example\n * // For the value, convertable into a date:\n * const result = isValid(1393804800000)\n * //=> true\n *\n * @example\n * // For the invalid date:\n * const result = isValid(new Date(''))\n * //=> false\n */\nexport default function isValid(dirtyDate) {\n requiredArgs(1, arguments);\n if (!isDate(dirtyDate) && typeof dirtyDate !== 'number') {\n return false;\n }\n var date = toDate(dirtyDate);\n return !isNaN(Number(date));\n}","export default function toInteger(dirtyNumber) {\n if (dirtyNumber === null || dirtyNumber === true || dirtyNumber === false) {\n return NaN;\n }\n var number = Number(dirtyNumber);\n if (isNaN(number)) {\n return number;\n }\n return number < 0 ? Math.ceil(number) : Math.floor(number);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addMilliseconds\n * @category Millisecond Helpers\n * @summary Add the specified number of milliseconds to the given date.\n *\n * @description\n * Add the specified number of milliseconds to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the milliseconds added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 750 milliseconds to 10 July 2014 12:45:30.000:\n * const result = addMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:30.750\n */\nexport default function addMilliseconds(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var timestamp = toDate(dirtyDate).getTime();\n var amount = toInteger(dirtyAmount);\n return new Date(timestamp + amount);\n}","import addMilliseconds from \"../addMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\n/**\n * @name subMilliseconds\n * @category Millisecond Helpers\n * @summary Subtract the specified number of milliseconds from the given date.\n *\n * @description\n * Subtract the specified number of milliseconds from the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the milliseconds subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 750 milliseconds from 10 July 2014 12:45:30.000:\n * const result = subMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:29.250\n */\nexport default function subMilliseconds(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMilliseconds(dirtyDate, -amount);\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_DAY = 86400000;\nexport default function getUTCDayOfYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var timestamp = date.getTime();\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n var startOfYearTimestamp = date.getTime();\n var difference = timestamp - startOfYearTimestamp;\n return Math.floor(difference / MILLISECONDS_IN_DAY) + 1;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nexport default function startOfUTCISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n var weekStartsOn = 1;\n var date = toDate(dirtyDate);\n var day = date.getUTCDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setUTCDate(date.getUTCDate() - diff);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nexport default function getUTCISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getUTCFullYear();\n var fourthOfJanuaryOfNextYear = new Date(0);\n fourthOfJanuaryOfNextYear.setUTCFullYear(year + 1, 0, 4);\n fourthOfJanuaryOfNextYear.setUTCHours(0, 0, 0, 0);\n var startOfNextYear = startOfUTCISOWeek(fourthOfJanuaryOfNextYear);\n var fourthOfJanuaryOfThisYear = new Date(0);\n fourthOfJanuaryOfThisYear.setUTCFullYear(year, 0, 4);\n fourthOfJanuaryOfThisYear.setUTCHours(0, 0, 0, 0);\n var startOfThisYear = startOfUTCISOWeek(fourthOfJanuaryOfThisYear);\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}","import getUTCISOWeekYear from \"../getUTCISOWeekYear/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nexport default function startOfUTCISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var year = getUTCISOWeekYear(dirtyDate);\n var fourthOfJanuary = new Date(0);\n fourthOfJanuary.setUTCFullYear(year, 0, 4);\n fourthOfJanuary.setUTCHours(0, 0, 0, 0);\n var date = startOfUTCISOWeek(fourthOfJanuary);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nimport startOfUTCISOWeekYear from \"../startOfUTCISOWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000;\nexport default function getUTCISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var diff = startOfUTCISOWeek(date).getTime() - startOfUTCISOWeekYear(date).getTime();\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","var defaultOptions = {};\nexport function getDefaultOptions() {\n return defaultOptions;\n}\nexport function setDefaultOptions(newOptions) {\n defaultOptions = newOptions;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nimport { getDefaultOptions } from \"../defaultOptions/index.js\";\nexport default function startOfUTCWeek(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$weekStartsOn, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(1, arguments);\n var defaultOptions = getDefaultOptions();\n var weekStartsOn = toInteger((_ref = (_ref2 = (_ref3 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.weekStartsOn) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.weekStartsOn) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.weekStartsOn) !== null && _ref !== void 0 ? _ref : 0);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n var date = toDate(dirtyDate);\n var day = date.getUTCDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setUTCDate(date.getUTCDate() - diff);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nimport { getDefaultOptions } from \"../defaultOptions/index.js\";\nexport default function getUTCWeekYear(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$firstWeekCon, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getUTCFullYear();\n var defaultOptions = getDefaultOptions();\n var firstWeekContainsDate = toInteger((_ref = (_ref2 = (_ref3 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref !== void 0 ? _ref : 1);\n\n // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n var firstWeekOfNextYear = new Date(0);\n firstWeekOfNextYear.setUTCFullYear(year + 1, 0, firstWeekContainsDate);\n firstWeekOfNextYear.setUTCHours(0, 0, 0, 0);\n var startOfNextYear = startOfUTCWeek(firstWeekOfNextYear, options);\n var firstWeekOfThisYear = new Date(0);\n firstWeekOfThisYear.setUTCFullYear(year, 0, firstWeekContainsDate);\n firstWeekOfThisYear.setUTCHours(0, 0, 0, 0);\n var startOfThisYear = startOfUTCWeek(firstWeekOfThisYear, options);\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}","import getUTCWeekYear from \"../getUTCWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nimport { getDefaultOptions } from \"../defaultOptions/index.js\";\nexport default function startOfUTCWeekYear(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$firstWeekCon, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(1, arguments);\n var defaultOptions = getDefaultOptions();\n var firstWeekContainsDate = toInteger((_ref = (_ref2 = (_ref3 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref !== void 0 ? _ref : 1);\n var year = getUTCWeekYear(dirtyDate, options);\n var firstWeek = new Date(0);\n firstWeek.setUTCFullYear(year, 0, firstWeekContainsDate);\n firstWeek.setUTCHours(0, 0, 0, 0);\n var date = startOfUTCWeek(firstWeek, options);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport startOfUTCWeekYear from \"../startOfUTCWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000;\nexport default function getUTCWeek(dirtyDate, options) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var diff = startOfUTCWeek(date, options).getTime() - startOfUTCWeekYear(date, options).getTime();\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","export default function addLeadingZeros(number, targetLength) {\n var sign = number < 0 ? '-' : '';\n var output = Math.abs(number).toString();\n while (output.length < targetLength) {\n output = '0' + output;\n }\n return sign + output;\n}","import addLeadingZeros from \"../../addLeadingZeros/index.js\";\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | |\n * | d | Day of month | D | |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | m | Minute | M | Month |\n * | s | Second | S | Fraction of second |\n * | y | Year (abs) | Y | |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n */\nvar formatters = {\n // Year\n y: function y(date, token) {\n // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_tokens\n // | Year | y | yy | yyy | yyyy | yyyyy |\n // |----------|-------|----|-------|-------|-------|\n // | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n // | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n // | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n // | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n\n var signedYear = date.getUTCFullYear();\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n var year = signedYear > 0 ? signedYear : 1 - signedYear;\n return addLeadingZeros(token === 'yy' ? year % 100 : year, token.length);\n },\n // Month\n M: function M(date, token) {\n var month = date.getUTCMonth();\n return token === 'M' ? String(month + 1) : addLeadingZeros(month + 1, 2);\n },\n // Day of the month\n d: function d(date, token) {\n return addLeadingZeros(date.getUTCDate(), token.length);\n },\n // AM or PM\n a: function a(date, token) {\n var dayPeriodEnumValue = date.getUTCHours() / 12 >= 1 ? 'pm' : 'am';\n switch (token) {\n case 'a':\n case 'aa':\n return dayPeriodEnumValue.toUpperCase();\n case 'aaa':\n return dayPeriodEnumValue;\n case 'aaaaa':\n return dayPeriodEnumValue[0];\n case 'aaaa':\n default:\n return dayPeriodEnumValue === 'am' ? 'a.m.' : 'p.m.';\n }\n },\n // Hour [1-12]\n h: function h(date, token) {\n return addLeadingZeros(date.getUTCHours() % 12 || 12, token.length);\n },\n // Hour [0-23]\n H: function H(date, token) {\n return addLeadingZeros(date.getUTCHours(), token.length);\n },\n // Minute\n m: function m(date, token) {\n return addLeadingZeros(date.getUTCMinutes(), token.length);\n },\n // Second\n s: function s(date, token) {\n return addLeadingZeros(date.getUTCSeconds(), token.length);\n },\n // Fraction of second\n S: function S(date, token) {\n var numberOfDigits = token.length;\n var milliseconds = date.getUTCMilliseconds();\n var fractionalSeconds = Math.floor(milliseconds * Math.pow(10, numberOfDigits - 3));\n return addLeadingZeros(fractionalSeconds, token.length);\n }\n};\nexport default formatters;","import getUTCDayOfYear from \"../../../_lib/getUTCDayOfYear/index.js\";\nimport getUTCISOWeek from \"../../../_lib/getUTCISOWeek/index.js\";\nimport getUTCISOWeekYear from \"../../../_lib/getUTCISOWeekYear/index.js\";\nimport getUTCWeek from \"../../../_lib/getUTCWeek/index.js\";\nimport getUTCWeekYear from \"../../../_lib/getUTCWeekYear/index.js\";\nimport addLeadingZeros from \"../../addLeadingZeros/index.js\";\nimport lightFormatters from \"../lightFormatters/index.js\";\nvar dayPeriodEnum = {\n am: 'am',\n pm: 'pm',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n};\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O | Timezone (GMT) |\n * | p! | Long localized time | P! | Long localized date |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `format` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n * - `P` is long localized date format\n * - `p` is long localized time format\n */\n\nvar formatters = {\n // Era\n G: function G(date, token, localize) {\n var era = date.getUTCFullYear() > 0 ? 1 : 0;\n switch (token) {\n // AD, BC\n case 'G':\n case 'GG':\n case 'GGG':\n return localize.era(era, {\n width: 'abbreviated'\n });\n // A, B\n case 'GGGGG':\n return localize.era(era, {\n width: 'narrow'\n });\n // Anno Domini, Before Christ\n case 'GGGG':\n default:\n return localize.era(era, {\n width: 'wide'\n });\n }\n },\n // Year\n y: function y(date, token, localize) {\n // Ordinal number\n if (token === 'yo') {\n var signedYear = date.getUTCFullYear();\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n var year = signedYear > 0 ? signedYear : 1 - signedYear;\n return localize.ordinalNumber(year, {\n unit: 'year'\n });\n }\n return lightFormatters.y(date, token);\n },\n // Local week-numbering year\n Y: function Y(date, token, localize, options) {\n var signedWeekYear = getUTCWeekYear(date, options);\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n var weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear;\n\n // Two digit year\n if (token === 'YY') {\n var twoDigitYear = weekYear % 100;\n return addLeadingZeros(twoDigitYear, 2);\n }\n\n // Ordinal number\n if (token === 'Yo') {\n return localize.ordinalNumber(weekYear, {\n unit: 'year'\n });\n }\n\n // Padding\n return addLeadingZeros(weekYear, token.length);\n },\n // ISO week-numbering year\n R: function R(date, token) {\n var isoWeekYear = getUTCISOWeekYear(date);\n\n // Padding\n return addLeadingZeros(isoWeekYear, token.length);\n },\n // Extended year. This is a single number designating the year of this calendar system.\n // The main difference between `y` and `u` localizers are B.C. years:\n // | Year | `y` | `u` |\n // |------|-----|-----|\n // | AC 1 | 1 | 1 |\n // | BC 1 | 1 | 0 |\n // | BC 2 | 2 | -1 |\n // Also `yy` always returns the last two digits of a year,\n // while `uu` pads single digit years to 2 characters and returns other years unchanged.\n u: function u(date, token) {\n var year = date.getUTCFullYear();\n return addLeadingZeros(year, token.length);\n },\n // Quarter\n Q: function Q(date, token, localize) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case 'Q':\n return String(quarter);\n // 01, 02, 03, 04\n case 'QQ':\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n case 'Qo':\n return localize.ordinalNumber(quarter, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n case 'QQQ':\n return localize.quarter(quarter, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case 'QQQQQ':\n return localize.quarter(quarter, {\n width: 'narrow',\n context: 'formatting'\n });\n // 1st quarter, 2nd quarter, ...\n case 'QQQQ':\n default:\n return localize.quarter(quarter, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone quarter\n q: function q(date, token, localize) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case 'q':\n return String(quarter);\n // 01, 02, 03, 04\n case 'qq':\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n case 'qo':\n return localize.ordinalNumber(quarter, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n case 'qqq':\n return localize.quarter(quarter, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case 'qqqqq':\n return localize.quarter(quarter, {\n width: 'narrow',\n context: 'standalone'\n });\n // 1st quarter, 2nd quarter, ...\n case 'qqqq':\n default:\n return localize.quarter(quarter, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // Month\n M: function M(date, token, localize) {\n var month = date.getUTCMonth();\n switch (token) {\n case 'M':\n case 'MM':\n return lightFormatters.M(date, token);\n // 1st, 2nd, ..., 12th\n case 'Mo':\n return localize.ordinalNumber(month + 1, {\n unit: 'month'\n });\n // Jan, Feb, ..., Dec\n case 'MMM':\n return localize.month(month, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // J, F, ..., D\n case 'MMMMM':\n return localize.month(month, {\n width: 'narrow',\n context: 'formatting'\n });\n // January, February, ..., December\n case 'MMMM':\n default:\n return localize.month(month, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone month\n L: function L(date, token, localize) {\n var month = date.getUTCMonth();\n switch (token) {\n // 1, 2, ..., 12\n case 'L':\n return String(month + 1);\n // 01, 02, ..., 12\n case 'LL':\n return addLeadingZeros(month + 1, 2);\n // 1st, 2nd, ..., 12th\n case 'Lo':\n return localize.ordinalNumber(month + 1, {\n unit: 'month'\n });\n // Jan, Feb, ..., Dec\n case 'LLL':\n return localize.month(month, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // J, F, ..., D\n case 'LLLLL':\n return localize.month(month, {\n width: 'narrow',\n context: 'standalone'\n });\n // January, February, ..., December\n case 'LLLL':\n default:\n return localize.month(month, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // Local week of year\n w: function w(date, token, localize, options) {\n var week = getUTCWeek(date, options);\n if (token === 'wo') {\n return localize.ordinalNumber(week, {\n unit: 'week'\n });\n }\n return addLeadingZeros(week, token.length);\n },\n // ISO week of year\n I: function I(date, token, localize) {\n var isoWeek = getUTCISOWeek(date);\n if (token === 'Io') {\n return localize.ordinalNumber(isoWeek, {\n unit: 'week'\n });\n }\n return addLeadingZeros(isoWeek, token.length);\n },\n // Day of the month\n d: function d(date, token, localize) {\n if (token === 'do') {\n return localize.ordinalNumber(date.getUTCDate(), {\n unit: 'date'\n });\n }\n return lightFormatters.d(date, token);\n },\n // Day of year\n D: function D(date, token, localize) {\n var dayOfYear = getUTCDayOfYear(date);\n if (token === 'Do') {\n return localize.ordinalNumber(dayOfYear, {\n unit: 'dayOfYear'\n });\n }\n return addLeadingZeros(dayOfYear, token.length);\n },\n // Day of week\n E: function E(date, token, localize) {\n var dayOfWeek = date.getUTCDay();\n switch (token) {\n // Tue\n case 'E':\n case 'EE':\n case 'EEE':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n case 'EEEEE':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n case 'EEEEEE':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n case 'EEEE':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Local day of week\n e: function e(date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n switch (token) {\n // Numerical value (Nth day of week with current locale or weekStartsOn)\n case 'e':\n return String(localDayOfWeek);\n // Padded numerical value\n case 'ee':\n return addLeadingZeros(localDayOfWeek, 2);\n // 1st, 2nd, ..., 7th\n case 'eo':\n return localize.ordinalNumber(localDayOfWeek, {\n unit: 'day'\n });\n case 'eee':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n case 'eeeee':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n case 'eeeeee':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n case 'eeee':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone local day of week\n c: function c(date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n switch (token) {\n // Numerical value (same as in `e`)\n case 'c':\n return String(localDayOfWeek);\n // Padded numerical value\n case 'cc':\n return addLeadingZeros(localDayOfWeek, token.length);\n // 1st, 2nd, ..., 7th\n case 'co':\n return localize.ordinalNumber(localDayOfWeek, {\n unit: 'day'\n });\n case 'ccc':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // T\n case 'ccccc':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'standalone'\n });\n // Tu\n case 'cccccc':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'standalone'\n });\n // Tuesday\n case 'cccc':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // ISO day of week\n i: function i(date, token, localize) {\n var dayOfWeek = date.getUTCDay();\n var isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek;\n switch (token) {\n // 2\n case 'i':\n return String(isoDayOfWeek);\n // 02\n case 'ii':\n return addLeadingZeros(isoDayOfWeek, token.length);\n // 2nd\n case 'io':\n return localize.ordinalNumber(isoDayOfWeek, {\n unit: 'day'\n });\n // Tue\n case 'iii':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n case 'iiiii':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n case 'iiiiii':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n case 'iiii':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // AM or PM\n a: function a(date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n switch (token) {\n case 'a':\n case 'aa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n case 'aaa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n }).toLowerCase();\n case 'aaaaa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'aaaa':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // AM, PM, midnight, noon\n b: function b(date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue;\n if (hours === 12) {\n dayPeriodEnumValue = dayPeriodEnum.noon;\n } else if (hours === 0) {\n dayPeriodEnumValue = dayPeriodEnum.midnight;\n } else {\n dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n }\n switch (token) {\n case 'b':\n case 'bb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n case 'bbb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n }).toLowerCase();\n case 'bbbbb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'bbbb':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // in the morning, in the afternoon, in the evening, at night\n B: function B(date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue;\n if (hours >= 17) {\n dayPeriodEnumValue = dayPeriodEnum.evening;\n } else if (hours >= 12) {\n dayPeriodEnumValue = dayPeriodEnum.afternoon;\n } else if (hours >= 4) {\n dayPeriodEnumValue = dayPeriodEnum.morning;\n } else {\n dayPeriodEnumValue = dayPeriodEnum.night;\n }\n switch (token) {\n case 'B':\n case 'BB':\n case 'BBB':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n case 'BBBBB':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'BBBB':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Hour [1-12]\n h: function h(date, token, localize) {\n if (token === 'ho') {\n var hours = date.getUTCHours() % 12;\n if (hours === 0) hours = 12;\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n return lightFormatters.h(date, token);\n },\n // Hour [0-23]\n H: function H(date, token, localize) {\n if (token === 'Ho') {\n return localize.ordinalNumber(date.getUTCHours(), {\n unit: 'hour'\n });\n }\n return lightFormatters.H(date, token);\n },\n // Hour [0-11]\n K: function K(date, token, localize) {\n var hours = date.getUTCHours() % 12;\n if (token === 'Ko') {\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n return addLeadingZeros(hours, token.length);\n },\n // Hour [1-24]\n k: function k(date, token, localize) {\n var hours = date.getUTCHours();\n if (hours === 0) hours = 24;\n if (token === 'ko') {\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n return addLeadingZeros(hours, token.length);\n },\n // Minute\n m: function m(date, token, localize) {\n if (token === 'mo') {\n return localize.ordinalNumber(date.getUTCMinutes(), {\n unit: 'minute'\n });\n }\n return lightFormatters.m(date, token);\n },\n // Second\n s: function s(date, token, localize) {\n if (token === 'so') {\n return localize.ordinalNumber(date.getUTCSeconds(), {\n unit: 'second'\n });\n }\n return lightFormatters.s(date, token);\n },\n // Fraction of second\n S: function S(date, token) {\n return lightFormatters.S(date, token);\n },\n // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)\n X: function X(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n if (timezoneOffset === 0) {\n return 'Z';\n }\n switch (token) {\n // Hours and optional minutes\n case 'X':\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XX`\n case 'XXXX':\n case 'XX':\n // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XXX`\n case 'XXXXX':\n case 'XXX': // Hours and minutes with `:` delimiter\n default:\n return formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)\n x: function x(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n switch (token) {\n // Hours and optional minutes\n case 'x':\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xx`\n case 'xxxx':\n case 'xx':\n // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xxx`\n case 'xxxxx':\n case 'xxx': // Hours and minutes with `:` delimiter\n default:\n return formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (GMT)\n O: function O(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n switch (token) {\n // Short\n case 'O':\n case 'OO':\n case 'OOO':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n // Long\n case 'OOOO':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (specific non-location)\n z: function z(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n switch (token) {\n // Short\n case 'z':\n case 'zz':\n case 'zzz':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n // Long\n case 'zzzz':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':');\n }\n },\n // Seconds timestamp\n t: function t(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timestamp = Math.floor(originalDate.getTime() / 1000);\n return addLeadingZeros(timestamp, token.length);\n },\n // Milliseconds timestamp\n T: function T(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timestamp = originalDate.getTime();\n return addLeadingZeros(timestamp, token.length);\n }\n};\nfunction formatTimezoneShort(offset, dirtyDelimiter) {\n var sign = offset > 0 ? '-' : '+';\n var absOffset = Math.abs(offset);\n var hours = Math.floor(absOffset / 60);\n var minutes = absOffset % 60;\n if (minutes === 0) {\n return sign + String(hours);\n }\n var delimiter = dirtyDelimiter || '';\n return sign + String(hours) + delimiter + addLeadingZeros(minutes, 2);\n}\nfunction formatTimezoneWithOptionalMinutes(offset, dirtyDelimiter) {\n if (offset % 60 === 0) {\n var sign = offset > 0 ? '-' : '+';\n return sign + addLeadingZeros(Math.abs(offset) / 60, 2);\n }\n return formatTimezone(offset, dirtyDelimiter);\n}\nfunction formatTimezone(offset, dirtyDelimiter) {\n var delimiter = dirtyDelimiter || '';\n var sign = offset > 0 ? '-' : '+';\n var absOffset = Math.abs(offset);\n var hours = addLeadingZeros(Math.floor(absOffset / 60), 2);\n var minutes = addLeadingZeros(absOffset % 60, 2);\n return sign + hours + delimiter + minutes;\n}\nexport default formatters;","var dateLongFormatter = function dateLongFormatter(pattern, formatLong) {\n switch (pattern) {\n case 'P':\n return formatLong.date({\n width: 'short'\n });\n case 'PP':\n return formatLong.date({\n width: 'medium'\n });\n case 'PPP':\n return formatLong.date({\n width: 'long'\n });\n case 'PPPP':\n default:\n return formatLong.date({\n width: 'full'\n });\n }\n};\nvar timeLongFormatter = function timeLongFormatter(pattern, formatLong) {\n switch (pattern) {\n case 'p':\n return formatLong.time({\n width: 'short'\n });\n case 'pp':\n return formatLong.time({\n width: 'medium'\n });\n case 'ppp':\n return formatLong.time({\n width: 'long'\n });\n case 'pppp':\n default:\n return formatLong.time({\n width: 'full'\n });\n }\n};\nvar dateTimeLongFormatter = function dateTimeLongFormatter(pattern, formatLong) {\n var matchResult = pattern.match(/(P+)(p+)?/) || [];\n var datePattern = matchResult[1];\n var timePattern = matchResult[2];\n if (!timePattern) {\n return dateLongFormatter(pattern, formatLong);\n }\n var dateTimeFormat;\n switch (datePattern) {\n case 'P':\n dateTimeFormat = formatLong.dateTime({\n width: 'short'\n });\n break;\n case 'PP':\n dateTimeFormat = formatLong.dateTime({\n width: 'medium'\n });\n break;\n case 'PPP':\n dateTimeFormat = formatLong.dateTime({\n width: 'long'\n });\n break;\n case 'PPPP':\n default:\n dateTimeFormat = formatLong.dateTime({\n width: 'full'\n });\n break;\n }\n return dateTimeFormat.replace('{{date}}', dateLongFormatter(datePattern, formatLong)).replace('{{time}}', timeLongFormatter(timePattern, formatLong));\n};\nvar longFormatters = {\n p: timeLongFormatter,\n P: dateTimeLongFormatter\n};\nexport default longFormatters;","/**\n * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds.\n * They usually appear for dates that denote time before the timezones were introduced\n * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891\n * and GMT+01:00:00 after that date)\n *\n * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above,\n * which would lead to incorrect calculations.\n *\n * This function returns the timezone offset in milliseconds that takes seconds in account.\n */\nexport default function getTimezoneOffsetInMilliseconds(date) {\n var utcDate = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds()));\n utcDate.setUTCFullYear(date.getFullYear());\n return date.getTime() - utcDate.getTime();\n}","var protectedDayOfYearTokens = ['D', 'DD'];\nvar protectedWeekYearTokens = ['YY', 'YYYY'];\nexport function isProtectedDayOfYearToken(token) {\n return protectedDayOfYearTokens.indexOf(token) !== -1;\n}\nexport function isProtectedWeekYearToken(token) {\n return protectedWeekYearTokens.indexOf(token) !== -1;\n}\nexport function throwProtectedError(token, format, input) {\n if (token === 'YYYY') {\n throw new RangeError(\"Use `yyyy` instead of `YYYY` (in `\".concat(format, \"`) for formatting years to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n } else if (token === 'YY') {\n throw new RangeError(\"Use `yy` instead of `YY` (in `\".concat(format, \"`) for formatting years to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n } else if (token === 'D') {\n throw new RangeError(\"Use `d` instead of `D` (in `\".concat(format, \"`) for formatting days of the month to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n } else if (token === 'DD') {\n throw new RangeError(\"Use `dd` instead of `DD` (in `\".concat(format, \"`) for formatting days of the month to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n }\n}","var formatDistanceLocale = {\n lessThanXSeconds: {\n one: 'less than a second',\n other: 'less than {{count}} seconds'\n },\n xSeconds: {\n one: '1 second',\n other: '{{count}} seconds'\n },\n halfAMinute: 'half a minute',\n lessThanXMinutes: {\n one: 'less than a minute',\n other: 'less than {{count}} minutes'\n },\n xMinutes: {\n one: '1 minute',\n other: '{{count}} minutes'\n },\n aboutXHours: {\n one: 'about 1 hour',\n other: 'about {{count}} hours'\n },\n xHours: {\n one: '1 hour',\n other: '{{count}} hours'\n },\n xDays: {\n one: '1 day',\n other: '{{count}} days'\n },\n aboutXWeeks: {\n one: 'about 1 week',\n other: 'about {{count}} weeks'\n },\n xWeeks: {\n one: '1 week',\n other: '{{count}} weeks'\n },\n aboutXMonths: {\n one: 'about 1 month',\n other: 'about {{count}} months'\n },\n xMonths: {\n one: '1 month',\n other: '{{count}} months'\n },\n aboutXYears: {\n one: 'about 1 year',\n other: 'about {{count}} years'\n },\n xYears: {\n one: '1 year',\n other: '{{count}} years'\n },\n overXYears: {\n one: 'over 1 year',\n other: 'over {{count}} years'\n },\n almostXYears: {\n one: 'almost 1 year',\n other: 'almost {{count}} years'\n }\n};\nvar formatDistance = function formatDistance(token, count, options) {\n var result;\n var tokenValue = formatDistanceLocale[token];\n if (typeof tokenValue === 'string') {\n result = tokenValue;\n } else if (count === 1) {\n result = tokenValue.one;\n } else {\n result = tokenValue.other.replace('{{count}}', count.toString());\n }\n if (options !== null && options !== void 0 && options.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return 'in ' + result;\n } else {\n return result + ' ago';\n }\n }\n return result;\n};\nexport default formatDistance;","export default function buildFormatLongFn(args) {\n return function () {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n // TODO: Remove String()\n var width = options.width ? String(options.width) : args.defaultWidth;\n var format = args.formats[width] || args.formats[args.defaultWidth];\n return format;\n };\n}","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\nvar dateFormats = {\n full: 'EEEE, MMMM do, y',\n long: 'MMMM do, y',\n medium: 'MMM d, y',\n short: 'MM/dd/yyyy'\n};\nvar timeFormats = {\n full: 'h:mm:ss a zzzz',\n long: 'h:mm:ss a z',\n medium: 'h:mm:ss a',\n short: 'h:mm a'\n};\nvar dateTimeFormats = {\n full: \"{{date}} 'at' {{time}}\",\n long: \"{{date}} 'at' {{time}}\",\n medium: '{{date}}, {{time}}',\n short: '{{date}}, {{time}}'\n};\nvar formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: 'full'\n }),\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: 'full'\n }),\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: 'full'\n })\n};\nexport default formatLong;","var formatRelativeLocale = {\n lastWeek: \"'last' eeee 'at' p\",\n yesterday: \"'yesterday at' p\",\n today: \"'today at' p\",\n tomorrow: \"'tomorrow at' p\",\n nextWeek: \"eeee 'at' p\",\n other: 'P'\n};\nvar formatRelative = function formatRelative(token, _date, _baseDate, _options) {\n return formatRelativeLocale[token];\n};\nexport default formatRelative;","export default function buildLocalizeFn(args) {\n return function (dirtyIndex, options) {\n var context = options !== null && options !== void 0 && options.context ? String(options.context) : 'standalone';\n var valuesArray;\n if (context === 'formatting' && args.formattingValues) {\n var defaultWidth = args.defaultFormattingWidth || args.defaultWidth;\n var width = options !== null && options !== void 0 && options.width ? String(options.width) : defaultWidth;\n valuesArray = args.formattingValues[width] || args.formattingValues[defaultWidth];\n } else {\n var _defaultWidth = args.defaultWidth;\n var _width = options !== null && options !== void 0 && options.width ? String(options.width) : args.defaultWidth;\n valuesArray = args.values[_width] || args.values[_defaultWidth];\n }\n var index = args.argumentCallback ? args.argumentCallback(dirtyIndex) : dirtyIndex;\n // @ts-ignore: For some reason TypeScript just don't want to match it, no matter how hard we try. I challenge you to try to remove it!\n return valuesArray[index];\n };\n}","import buildLocalizeFn from \"../../../_lib/buildLocalizeFn/index.js\";\nvar eraValues = {\n narrow: ['B', 'A'],\n abbreviated: ['BC', 'AD'],\n wide: ['Before Christ', 'Anno Domini']\n};\nvar quarterValues = {\n narrow: ['1', '2', '3', '4'],\n abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'],\n wide: ['1st quarter', '2nd quarter', '3rd quarter', '4th quarter']\n};\n\n// Note: in English, the names of days of the week and months are capitalized.\n// If you are making a new locale based on this one, check if the same is true for the language you're working on.\n// Generally, formatted dates should look like they are in the middle of a sentence,\n// e.g. in Spanish language the weekdays and months should be in the lowercase.\nvar monthValues = {\n narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],\n abbreviated: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n wide: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']\n};\nvar dayValues = {\n narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],\n short: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n abbreviated: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n wide: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']\n};\nvar dayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n }\n};\nvar formattingDayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n }\n};\nvar ordinalNumber = function ordinalNumber(dirtyNumber, _options) {\n var number = Number(dirtyNumber);\n\n // If ordinal numbers depend on context, for example,\n // if they are different for different grammatical genders,\n // use `options.unit`.\n //\n // `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',\n // 'day', 'hour', 'minute', 'second'.\n\n var rem100 = number % 100;\n if (rem100 > 20 || rem100 < 10) {\n switch (rem100 % 10) {\n case 1:\n return number + 'st';\n case 2:\n return number + 'nd';\n case 3:\n return number + 'rd';\n }\n }\n return number + 'th';\n};\nvar localize = {\n ordinalNumber: ordinalNumber,\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: 'wide'\n }),\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: 'wide',\n argumentCallback: function argumentCallback(quarter) {\n return quarter - 1;\n }\n }),\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: 'wide'\n }),\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: 'wide'\n }),\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: 'wide',\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: 'wide'\n })\n};\nexport default localize;","export default function buildMatchFn(args) {\n return function (string) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var width = options.width;\n var matchPattern = width && args.matchPatterns[width] || args.matchPatterns[args.defaultMatchWidth];\n var matchResult = string.match(matchPattern);\n if (!matchResult) {\n return null;\n }\n var matchedString = matchResult[0];\n var parsePatterns = width && args.parsePatterns[width] || args.parsePatterns[args.defaultParseWidth];\n var key = Array.isArray(parsePatterns) ? findIndex(parsePatterns, function (pattern) {\n return pattern.test(matchedString);\n }) : findKey(parsePatterns, function (pattern) {\n return pattern.test(matchedString);\n });\n var value;\n value = args.valueCallback ? args.valueCallback(key) : key;\n value = options.valueCallback ? options.valueCallback(value) : value;\n var rest = string.slice(matchedString.length);\n return {\n value: value,\n rest: rest\n };\n };\n}\nfunction findKey(object, predicate) {\n for (var key in object) {\n if (object.hasOwnProperty(key) && predicate(object[key])) {\n return key;\n }\n }\n return undefined;\n}\nfunction findIndex(array, predicate) {\n for (var key = 0; key < array.length; key++) {\n if (predicate(array[key])) {\n return key;\n }\n }\n return undefined;\n}","export default function buildMatchPatternFn(args) {\n return function (string) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var matchResult = string.match(args.matchPattern);\n if (!matchResult) return null;\n var matchedString = matchResult[0];\n var parseResult = string.match(args.parsePattern);\n if (!parseResult) return null;\n var value = args.valueCallback ? args.valueCallback(parseResult[0]) : parseResult[0];\n value = options.valueCallback ? options.valueCallback(value) : value;\n var rest = string.slice(matchedString.length);\n return {\n value: value,\n rest: rest\n };\n };\n}","import buildMatchFn from \"../../../_lib/buildMatchFn/index.js\";\nimport buildMatchPatternFn from \"../../../_lib/buildMatchPatternFn/index.js\";\nvar matchOrdinalNumberPattern = /^(\\d+)(th|st|nd|rd)?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n narrow: /^(b|a)/i,\n abbreviated: /^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)/i,\n wide: /^(before christ|before common era|anno domini|common era)/i\n};\nvar parseEraPatterns = {\n any: [/^b/i, /^(a|c)/i]\n};\nvar matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^q[1234]/i,\n wide: /^[1234](th|st|nd|rd)? quarter/i\n};\nvar parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i]\n};\nvar matchMonthPatterns = {\n narrow: /^[jfmasond]/i,\n abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,\n wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i\n};\nvar parseMonthPatterns = {\n narrow: [/^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],\n any: [/^ja/i, /^f/i, /^mar/i, /^ap/i, /^may/i, /^jun/i, /^jul/i, /^au/i, /^s/i, /^o/i, /^n/i, /^d/i]\n};\nvar matchDayPatterns = {\n narrow: /^[smtwf]/i,\n short: /^(su|mo|tu|we|th|fr|sa)/i,\n abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,\n wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i\n};\nvar parseDayPatterns = {\n narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],\n any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i]\n};\nvar matchDayPeriodPatterns = {\n narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,\n any: /^([ap]\\.?\\s?m\\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i\n};\nvar parseDayPeriodPatterns = {\n any: {\n am: /^a/i,\n pm: /^p/i,\n midnight: /^mi/i,\n noon: /^no/i,\n morning: /morning/i,\n afternoon: /afternoon/i,\n evening: /evening/i,\n night: /night/i\n }\n};\nvar match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: function valueCallback(value) {\n return parseInt(value, 10);\n }\n }),\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseEraPatterns,\n defaultParseWidth: 'any'\n }),\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: 'any',\n valueCallback: function valueCallback(index) {\n return index + 1;\n }\n }),\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: 'any'\n }),\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseDayPatterns,\n defaultParseWidth: 'any'\n }),\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: 'any',\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: 'any'\n })\n};\nexport default match;","import formatDistance from \"./_lib/formatDistance/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\nimport formatRelative from \"./_lib/formatRelative/index.js\";\nimport localize from \"./_lib/localize/index.js\";\nimport match from \"./_lib/match/index.js\";\n/**\n * @type {Locale}\n * @category Locales\n * @summary English locale (United States).\n * @language English\n * @iso-639-2 eng\n * @author Sasha Koss [@kossnocorp]{@link https://github.com/kossnocorp}\n * @author Lesha Koss [@leshakoss]{@link https://github.com/leshakoss}\n */\nvar locale = {\n code: 'en-US',\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 0 /* Sunday */,\n firstWeekContainsDate: 1\n }\n};\nexport default locale;","import defaultLocale from \"../../locale/en-US/index.js\";\nexport default defaultLocale;","import isValid from \"../isValid/index.js\";\nimport subMilliseconds from \"../subMilliseconds/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport formatters from \"../_lib/format/formatters/index.js\";\nimport longFormatters from \"../_lib/format/longFormatters/index.js\";\nimport getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport { isProtectedDayOfYearToken, isProtectedWeekYearToken, throwProtectedError } from \"../_lib/protectedTokens/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getDefaultOptions } from \"../_lib/defaultOptions/index.js\";\nimport defaultLocale from \"../_lib/defaultLocale/index.js\"; // This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\nvar formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g;\n\n// This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\nvar longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\nvar escapedStringRegExp = /^'([^]*?)'?$/;\nvar doubleQuoteRegExp = /''/g;\nvar unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n\n/**\n * @name format\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format. The result may vary by locale.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * The characters wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n * (see the last example)\n *\n * Format of the string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 7 below the table).\n *\n * Accepted patterns:\n * | Unit | Pattern | Result examples | Notes |\n * |---------------------------------|---------|-----------------------------------|-------|\n * | Era | G..GGG | AD, BC | |\n * | | GGGG | Anno Domini, Before Christ | 2 |\n * | | GGGGG | A, B | |\n * | Calendar year | y | 44, 1, 1900, 2017 | 5 |\n * | | yo | 44th, 1st, 0th, 17th | 5,7 |\n * | | yy | 44, 01, 00, 17 | 5 |\n * | | yyy | 044, 001, 1900, 2017 | 5 |\n * | | yyyy | 0044, 0001, 1900, 2017 | 5 |\n * | | yyyyy | ... | 3,5 |\n * | Local week-numbering year | Y | 44, 1, 1900, 2017 | 5 |\n * | | Yo | 44th, 1st, 1900th, 2017th | 5,7 |\n * | | YY | 44, 01, 00, 17 | 5,8 |\n * | | YYY | 044, 001, 1900, 2017 | 5 |\n * | | YYYY | 0044, 0001, 1900, 2017 | 5,8 |\n * | | YYYYY | ... | 3,5 |\n * | ISO week-numbering year | R | -43, 0, 1, 1900, 2017 | 5,7 |\n * | | RR | -43, 00, 01, 1900, 2017 | 5,7 |\n * | | RRR | -043, 000, 001, 1900, 2017 | 5,7 |\n * | | RRRR | -0043, 0000, 0001, 1900, 2017 | 5,7 |\n * | | RRRRR | ... | 3,5,7 |\n * | Extended year | u | -43, 0, 1, 1900, 2017 | 5 |\n * | | uu | -43, 01, 1900, 2017 | 5 |\n * | | uuu | -043, 001, 1900, 2017 | 5 |\n * | | uuuu | -0043, 0001, 1900, 2017 | 5 |\n * | | uuuuu | ... | 3,5 |\n * | Quarter (formatting) | Q | 1, 2, 3, 4 | |\n * | | Qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | QQ | 01, 02, 03, 04 | |\n * | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | q | 1, 2, 3, 4 | |\n * | | qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | qq | 01, 02, 03, 04 | |\n * | | qqq | Q1, Q2, Q3, Q4 | |\n * | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | qqqqq | 1, 2, 3, 4 | 4 |\n * | Month (formatting) | M | 1, 2, ..., 12 | |\n * | | Mo | 1st, 2nd, ..., 12th | 7 |\n * | | MM | 01, 02, ..., 12 | |\n * | | MMM | Jan, Feb, ..., Dec | |\n * | | MMMM | January, February, ..., December | 2 |\n * | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | L | 1, 2, ..., 12 | |\n * | | Lo | 1st, 2nd, ..., 12th | 7 |\n * | | LL | 01, 02, ..., 12 | |\n * | | LLL | Jan, Feb, ..., Dec | |\n * | | LLLL | January, February, ..., December | 2 |\n * | | LLLLL | J, F, ..., D | |\n * | Local week of year | w | 1, 2, ..., 53 | |\n * | | wo | 1st, 2nd, ..., 53th | 7 |\n * | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | I | 1, 2, ..., 53 | 7 |\n * | | Io | 1st, 2nd, ..., 53th | 7 |\n * | | II | 01, 02, ..., 53 | 7 |\n * | Day of month | d | 1, 2, ..., 31 | |\n * | | do | 1st, 2nd, ..., 31st | 7 |\n * | | dd | 01, 02, ..., 31 | |\n * | Day of year | D | 1, 2, ..., 365, 366 | 9 |\n * | | Do | 1st, 2nd, ..., 365th, 366th | 7 |\n * | | DD | 01, 02, ..., 365, 366 | 9 |\n * | | DDD | 001, 002, ..., 365, 366 | |\n * | | DDDD | ... | 3 |\n * | Day of week (formatting) | E..EEE | Mon, Tue, Wed, ..., Sun | |\n * | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | EEEEE | M, T, W, T, F, S, S | |\n * | | EEEEEE | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | ISO day of week (formatting) | i | 1, 2, 3, ..., 7 | 7 |\n * | | io | 1st, 2nd, ..., 7th | 7 |\n * | | ii | 01, 02, ..., 07 | 7 |\n * | | iii | Mon, Tue, Wed, ..., Sun | 7 |\n * | | iiii | Monday, Tuesday, ..., Sunday | 2,7 |\n * | | iiiii | M, T, W, T, F, S, S | 7 |\n * | | iiiiii | Mo, Tu, We, Th, Fr, Sa, Su | 7 |\n * | Local day of week (formatting) | e | 2, 3, 4, ..., 1 | |\n * | | eo | 2nd, 3rd, ..., 1st | 7 |\n * | | ee | 02, 03, ..., 01 | |\n * | | eee | Mon, Tue, Wed, ..., Sun | |\n * | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | eeeee | M, T, W, T, F, S, S | |\n * | | eeeeee | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | Local day of week (stand-alone) | c | 2, 3, 4, ..., 1 | |\n * | | co | 2nd, 3rd, ..., 1st | 7 |\n * | | cc | 02, 03, ..., 01 | |\n * | | ccc | Mon, Tue, Wed, ..., Sun | |\n * | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | ccccc | M, T, W, T, F, S, S | |\n * | | cccccc | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | AM, PM | a..aa | AM, PM | |\n * | | aaa | am, pm | |\n * | | aaaa | a.m., p.m. | 2 |\n * | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | b..bb | AM, PM, noon, midnight | |\n * | | bbb | am, pm, noon, midnight | |\n * | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | bbbbb | a, p, n, mi | |\n * | Flexible day period | B..BBB | at night, in the morning, ... | |\n * | | BBBB | at night, in the morning, ... | 2 |\n * | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | h | 1, 2, ..., 11, 12 | |\n * | | ho | 1st, 2nd, ..., 11th, 12th | 7 |\n * | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | H | 0, 1, 2, ..., 23 | |\n * | | Ho | 0th, 1st, 2nd, ..., 23rd | 7 |\n * | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | K | 1, 2, ..., 11, 0 | |\n * | | Ko | 1st, 2nd, ..., 11th, 0th | 7 |\n * | | KK | 01, 02, ..., 11, 00 | |\n * | Hour [1-24] | k | 24, 1, 2, ..., 23 | |\n * | | ko | 24th, 1st, 2nd, ..., 23rd | 7 |\n * | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | m | 0, 1, ..., 59 | |\n * | | mo | 0th, 1st, ..., 59th | 7 |\n * | | mm | 00, 01, ..., 59 | |\n * | Second | s | 0, 1, ..., 59 | |\n * | | so | 0th, 1st, ..., 59th | 7 |\n * | | ss | 00, 01, ..., 59 | |\n * | Fraction of second | S | 0, 1, ..., 9 | |\n * | | SS | 00, 01, ..., 99 | |\n * | | SSS | 000, 001, ..., 999 | |\n * | | SSSS | ... | 3 |\n * | Timezone (ISO-8601 w/ Z) | X | -08, +0530, Z | |\n * | | XX | -0800, +0530, Z | |\n * | | XXX | -08:00, +05:30, Z | |\n * | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | x | -08, +0530, +00 | |\n * | | xx | -0800, +0530, +0000 | |\n * | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Timezone (GMT) | O...OOO | GMT-8, GMT+5:30, GMT+0 | |\n * | | OOOO | GMT-08:00, GMT+05:30, GMT+00:00 | 2 |\n * | Timezone (specific non-locat.) | z...zzz | GMT-8, GMT+5:30, GMT+0 | 6 |\n * | | zzzz | GMT-08:00, GMT+05:30, GMT+00:00 | 2,6 |\n * | Seconds timestamp | t | 512969520 | 7 |\n * | | tt | ... | 3,7 |\n * | Milliseconds timestamp | T | 512969520900 | 7 |\n * | | TT | ... | 3,7 |\n * | Long localized date | P | 04/29/1453 | 7 |\n * | | PP | Apr 29, 1453 | 7 |\n * | | PPP | April 29th, 1453 | 7 |\n * | | PPPP | Friday, April 29th, 1453 | 2,7 |\n * | Long localized time | p | 12:00 AM | 7 |\n * | | pp | 12:00:00 AM | 7 |\n * | | ppp | 12:00:00 AM GMT+2 | 7 |\n * | | pppp | 12:00:00 AM GMT+02:00 | 2,7 |\n * | Combination of date and time | Pp | 04/29/1453, 12:00 AM | 7 |\n * | | PPpp | Apr 29, 1453, 12:00:00 AM | 7 |\n * | | PPPppp | April 29th, 1453 at ... | 7 |\n * | | PPPPpppp| Friday, April 29th, 1453 at ... | 2,7 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table (e.g. `EEEEEEEEEEE`)\n * the output will be the same as default pattern for this unit, usually\n * the longest one (in case of ISO weekdays, `EEEE`). Default patterns for units\n * are marked with \"2\" in the last column of the table.\n *\n * `format(new Date(2017, 10, 6), 'MMM') //=> 'Nov'`\n *\n * `format(new Date(2017, 10, 6), 'MMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMM') //=> 'N'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMMM') //=> 'November'`\n *\n * 3. Some patterns could be unlimited length (such as `yyyyyyyy`).\n * The output will be padded with zeros to match the length of the pattern.\n *\n * `format(new Date(2017, 10, 6), 'yyyyyyyy') //=> '00002017'`\n *\n * 4. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 5. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` always returns the last two digits of a year,\n * while `uu` pads single digit years to 2 characters and returns other years unchanged:\n *\n * | Year | `yy` | `uu` |\n * |------|------|------|\n * | 1 | 01 | 01 |\n * | 14 | 14 | 14 |\n * | 376 | 76 | 376 |\n * | 1453 | 53 | 1453 |\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [getISOWeekYear]{@link https://date-fns.org/docs/getISOWeekYear}\n * and [getWeekYear]{@link https://date-fns.org/docs/getWeekYear}).\n *\n * 6. Specific non-location timezones are currently unavailable in `date-fns`,\n * so right now these tokens fall back to GMT timezones.\n *\n * 7. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `t`: seconds timestamp\n * - `T`: milliseconds timestamp\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 8. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n * You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 9. `D` and `DD` tokens represent days of the year but they are often confused with days of the month.\n * You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * @param {Date|Number} date - the original date\n * @param {String} format - the string of tokens\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {Number} [options.firstWeekContainsDate=1] - the day of January, which is\n * @param {Boolean} [options.useAdditionalWeekYearTokens=false] - if true, allows usage of the week-numbering year tokens `YY` and `YYYY`;\n * see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @param {Boolean} [options.useAdditionalDayOfYearTokens=false] - if true, allows usage of the day of year tokens `D` and `DD`;\n * see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @returns {String} the formatted date string\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `options.locale` must contain `localize` property\n * @throws {RangeError} `options.locale` must contain `formatLong` property\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} format string contains an unescaped latin alphabet character\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * const result = format(new Date(2014, 1, 11), 'MM/dd/yyyy')\n * //=> '02/11/2014'\n *\n * @example\n * // Represent 2 July 2014 in Esperanto:\n * import { eoLocale } from 'date-fns/locale/eo'\n * const result = format(new Date(2014, 6, 2), \"do 'de' MMMM yyyy\", {\n * locale: eoLocale\n * })\n * //=> '2-a de julio 2014'\n *\n * @example\n * // Escape string by single quote characters:\n * const result = format(new Date(2014, 6, 2, 15), \"h 'o''clock'\")\n * //=> \"3 o'clock\"\n */\n\nexport default function format(dirtyDate, dirtyFormatStr, options) {\n var _ref, _options$locale, _ref2, _ref3, _ref4, _options$firstWeekCon, _options$locale2, _options$locale2$opti, _defaultOptions$local, _defaultOptions$local2, _ref5, _ref6, _ref7, _options$weekStartsOn, _options$locale3, _options$locale3$opti, _defaultOptions$local3, _defaultOptions$local4;\n requiredArgs(2, arguments);\n var formatStr = String(dirtyFormatStr);\n var defaultOptions = getDefaultOptions();\n var locale = (_ref = (_options$locale = options === null || options === void 0 ? void 0 : options.locale) !== null && _options$locale !== void 0 ? _options$locale : defaultOptions.locale) !== null && _ref !== void 0 ? _ref : defaultLocale;\n var firstWeekContainsDate = toInteger((_ref2 = (_ref3 = (_ref4 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale2 = options.locale) === null || _options$locale2 === void 0 ? void 0 : (_options$locale2$opti = _options$locale2.options) === null || _options$locale2$opti === void 0 ? void 0 : _options$locale2$opti.firstWeekContainsDate) !== null && _ref4 !== void 0 ? _ref4 : defaultOptions.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : 1);\n\n // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n var weekStartsOn = toInteger((_ref5 = (_ref6 = (_ref7 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale3 = options.locale) === null || _options$locale3 === void 0 ? void 0 : (_options$locale3$opti = _options$locale3.options) === null || _options$locale3$opti === void 0 ? void 0 : _options$locale3$opti.weekStartsOn) !== null && _ref7 !== void 0 ? _ref7 : defaultOptions.weekStartsOn) !== null && _ref6 !== void 0 ? _ref6 : (_defaultOptions$local3 = defaultOptions.locale) === null || _defaultOptions$local3 === void 0 ? void 0 : (_defaultOptions$local4 = _defaultOptions$local3.options) === null || _defaultOptions$local4 === void 0 ? void 0 : _defaultOptions$local4.weekStartsOn) !== null && _ref5 !== void 0 ? _ref5 : 0);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n if (!locale.localize) {\n throw new RangeError('locale must contain localize property');\n }\n if (!locale.formatLong) {\n throw new RangeError('locale must contain formatLong property');\n }\n var originalDate = toDate(dirtyDate);\n if (!isValid(originalDate)) {\n throw new RangeError('Invalid time value');\n }\n\n // Convert the date in system timezone to the same date in UTC+00:00 timezone.\n // This ensures that when UTC functions will be implemented, locales will be compatible with them.\n // See an issue about UTC functions: https://github.com/date-fns/date-fns/issues/376\n var timezoneOffset = getTimezoneOffsetInMilliseconds(originalDate);\n var utcDate = subMilliseconds(originalDate, timezoneOffset);\n var formatterOptions = {\n firstWeekContainsDate: firstWeekContainsDate,\n weekStartsOn: weekStartsOn,\n locale: locale,\n _originalDate: originalDate\n };\n var result = formatStr.match(longFormattingTokensRegExp).map(function (substring) {\n var firstCharacter = substring[0];\n if (firstCharacter === 'p' || firstCharacter === 'P') {\n var longFormatter = longFormatters[firstCharacter];\n return longFormatter(substring, locale.formatLong);\n }\n return substring;\n }).join('').match(formattingTokensRegExp).map(function (substring) {\n // Replace two single quote characters with one single quote character\n if (substring === \"''\") {\n return \"'\";\n }\n var firstCharacter = substring[0];\n if (firstCharacter === \"'\") {\n return cleanEscapedString(substring);\n }\n var formatter = formatters[firstCharacter];\n if (formatter) {\n if (!(options !== null && options !== void 0 && options.useAdditionalWeekYearTokens) && isProtectedWeekYearToken(substring)) {\n throwProtectedError(substring, dirtyFormatStr, String(dirtyDate));\n }\n if (!(options !== null && options !== void 0 && options.useAdditionalDayOfYearTokens) && isProtectedDayOfYearToken(substring)) {\n throwProtectedError(substring, dirtyFormatStr, String(dirtyDate));\n }\n return formatter(utcDate, substring, locale.localize, formatterOptions);\n }\n if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n throw new RangeError('Format string contains an unescaped latin alphabet character `' + firstCharacter + '`');\n }\n return substring;\n }).join('');\n return result;\n}\nfunction cleanEscapedString(input) {\n var matched = input.match(escapedStringRegExp);\n if (!matched) {\n return input;\n }\n return matched[1].replace(doubleQuoteRegExp, \"'\");\n}","import React, { Component, createRef } from 'react';\nimport isEqual from 'react-fast-compare';\nimport PropTypes from 'prop-types';\n\nimport Column from '../../../../layout/Column';\nimport Row from '../../../../layout/Row';\nimport Button from '../../../../components/Button';\n\nexport default class EditableListForm extends Component {\n static propTypes = {\n addValueOnFieldChange: PropTypes.bool,\n noLabels: PropTypes.bool,\n buttonName: PropTypes.string,\n buttonStyle: PropTypes.string,\n components: PropTypes.instanceOf(Array),\n displayType: PropTypes.string,\n disabled: PropTypes.bool,\n getMainFormButtonWidth: PropTypes.func,\n error: PropTypes.string,\n errorPersist: PropTypes.bool,\n onSubmit: PropTypes.func,\n validate: PropTypes.func,\n validationmessage: PropTypes.string,\n };\n\n static getMainFormValue(components) {\n const mainFormValue = new Array(components.length);\n\n components.forEach((component, index) => {\n mainFormValue[index] = component.props.value || undefined;\n });\n\n return mainFormValue;\n }\n\n constructor(props) {\n super(props);\n const {\n components,\n } = props;\n\n this.submitButtonRef = createRef();\n this.handleOnChange = this.handleOnChange.bind(this);\n this.submitForm = this.submitForm.bind(this);\n\n this.state = {\n components,\n errors: {},\n mainError: null,\n mainFormValue: EditableListForm.getMainFormValue(components),\n refs: [],\n };\n }\n\n componentDidMount() {\n const {\n addValueOnFieldChange,\n getMainFormButtonWidth,\n } = this.props;\n this.createRefs();\n\n if (getMainFormButtonWidth) {\n getMainFormButtonWidth(\n !addValueOnFieldChange\n ? this.submitButtonRef.current.clientWidth\n : 0,\n );\n }\n }\n\n static getDerivedStateFromProps(nextProps, prevState) {\n const state = {};\n const {\n components: propsComponents,\n } = nextProps;\n\n const {\n components: stateComponents,\n } = prevState;\n if (\n !isEqual(propsComponents, stateComponents)\n && !isEqual(\n EditableListForm.getMainFormValue(propsComponents),\n EditableListForm.getMainFormValue(stateComponents),\n )\n ) {\n state.mainFormValue = EditableListForm.getMainFormValue(propsComponents);\n state.components = propsComponents;\n }\n\n return state;\n }\n\n getFormCssClasses() {\n const { noLabels } = this.props;\n const cssClasses = ['tyk-editable-list__form'];\n\n if (noLabels) {\n cssClasses.push('no-labels');\n }\n\n return cssClasses.join(' ');\n }\n\n getButtonClassName() {\n const { buttonStyle, displayType } = this.props;\n const cssClasses = [];\n\n if (buttonStyle) {\n cssClasses.push(buttonStyle);\n }\n\n if (displayType) {\n cssClasses.push(displayType);\n }\n\n return cssClasses.join(' ');\n }\n\n getComponentsError(component) {\n const {\n error,\n errors,\n mainError,\n } = this.state;\n\n if (error || mainError) {\n errors[component.props.name] = 'true';\n } else if (!(error || mainError) && errors[component.props.name] === 'true') {\n delete errors[component.props.name];\n }\n\n return errors[component.props.name] ? errors[component.props.name].toString() : undefined;\n }\n\n createRefs() {\n const { components } = this.props;\n const refs = [];\n\n components.forEach(() => {\n refs.push(createRef());\n });\n\n this.setState({\n refs,\n });\n }\n\n validateValue(value, props) {\n const { mainError, errors } = this.state;\n const { error, errorPersist } = this.props;\n\n const validatorsNames = props.validate ? Object.keys(props.validate) : [];\n // if there is a general form error don't take field errors into consideration\n const tempState = {\n errors: (error || mainError) ? {} : Object.assign({}, errors),\n };\n let ok = true;\n\n // if the error should stay after changing fields values don't take actions\n if (errorPersist) {\n return tempState;\n }\n\n // validate each field from the form\n for (let i = 0; i < validatorsNames.length; i += 1) {\n const validator = props.validate[validatorsNames[i]];\n if (validator(value)) {\n tempState.errors[props.name] = props.validationmessages[validatorsNames[i]];\n ok = false;\n break;\n }\n }\n\n // if the field is ok delete its error\n if (ok) {\n delete tempState.errors[props.name];\n }\n\n tempState.mainError = null;\n\n return tempState;\n }\n\n hasMainFormErrors(errors) {\n const { components, errorPersist } = this.props;\n const { mainFormValue } = this.state;\n const tempState = {\n errors: Object.assign({}, errors),\n };\n\n if (errorPersist && mainFormValue.indexOf(undefined) === -1) {\n return false;\n }\n\n if (Object.keys(tempState.errors).length > 0) {\n return true;\n }\n\n components.forEach((component, index) => {\n tempState.errors = Object.assign(\n {},\n tempState.errors,\n this.validateValue(mainFormValue[index], component.props).errors,\n );\n });\n\n return Object.keys(tempState.errors).length > 0;\n }\n\n handleOnChange(component, index, value) {\n const { addValueOnFieldChange } = this.props;\n let tempState = this.state;\n\n tempState = Object.assign({}, tempState, this.validateValue(value, component.props));\n\n if (!tempState.errors[component.props.name]) {\n tempState.mainFormValue[index] = value;\n\n if (component.props.onChange) {\n component.props.onChange(value);\n }\n }\n\n this.setState(previousState => Object.assign({}, previousState, tempState), () => {\n if (addValueOnFieldChange) {\n this.submitForm();\n }\n });\n }\n\n resetForm() {\n const { refs } = this.state;\n const {\n components,\n } = this.props;\n\n refs.forEach((ref) => {\n if (ref.current?.reset) {\n ref.current.reset();\n }\n });\n\n this.setState({\n errors: {},\n mainError: null,\n mainFormValue: EditableListForm.getMainFormValue(components),\n });\n }\n\n showMainError(error) {\n this.setState({\n mainError: error,\n });\n }\n\n submitForm() {\n const { errors, mainFormValue } = this.state;\n const {\n errorPersist, onSubmit, validate, validationmessage,\n } = this.props;\n\n if (errorPersist) {\n onSubmit(mainFormValue);\n this.resetForm();\n }\n\n if (\n Object.keys(errors).length === 0\n && (onSubmit && typeof onSubmit === 'function')\n ) {\n if (validate) {\n if (validate(mainFormValue)) {\n this.showMainError(validationmessage);\n } else {\n onSubmit(mainFormValue);\n this.resetForm();\n }\n } else {\n onSubmit(mainFormValue);\n this.resetForm();\n }\n }\n }\n\n render() {\n const {\n addValueOnFieldChange, components, buttonName, disabled, displayType, error,\n } = this.props;\n const {\n mainError, refs, errors,\n } = this.state;\n\n return (\n
    \n
    \n \n {\n components.map((component, index) => {\n const ComponentName = component.name;\n const {\n onChange, value, ...rest\n } = component.props;\n\n return (\n \n \n \n );\n })\n }\n \n {\n !addValueOnFieldChange\n ? (\n \n \n { buttonName || 'ADD' }\n \n \n )\n : null\n }\n
    \n {\n error || mainError\n ? (\n
    \n

    \n { error || mainError }\n

    \n
    \n )\n : null\n }\n
    \n );\n }\n}\n","import React, { Component, Fragment, createRef } from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport { fromJS } from 'immutable';\n\nimport format from 'date-fns/format';\nimport isDate from 'date-fns/isDate';\n\nimport EditableListForm from './js/EditableListForm';\nimport Column from '../../../layout/Column';\nimport Icon from '../../../components/Icon';\nimport Row from '../../../layout/Row';\n\nexport default class EditableList extends Component {\n static propTypes = {\n addValueOnFieldChange: PropTypes.bool,\n disabled: PropTypes.bool,\n error: PropTypes.string,\n config: PropTypes.instanceOf(Object),\n onChange: PropTypes.func,\n label: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.func,\n PropTypes.string,\n ]),\n value: PropTypes.oneOfType([\n PropTypes.instanceOf(Array),\n PropTypes.instanceOf(Object),\n ]),\n };\n\n static getItemListValue(itemValue) {\n let tempValue = null;\n\n if (typeof itemValue === 'string') {\n tempValue = itemValue;\n }\n\n if (Object.prototype.toString.call(itemValue) === '[object Object]') {\n tempValue = itemValue.name;\n }\n\n if (isDate(itemValue)) {\n tempValue = format(itemValue, 'dd/MM/yyyy');\n }\n\n return tempValue;\n }\n\n static getListItemCssClass(displayType) {\n const cssClasses = [];\n\n if (displayType === 'inline') {\n cssClasses.push('tyk-editable-list-item--inline');\n }\n\n return cssClasses.join(' ');\n }\n\n constructor(props) {\n super(props);\n const {\n value,\n } = this.props;\n\n this.state = {\n initialValue: value || '',\n value: value || [],\n buttonWidth: 0,\n };\n\n this.startIndex = 1;\n\n this.handleFormSubmit = this.handleFormSubmit.bind(this);\n this.getMainFormButtonWidth = this.getMainFormButtonWidth.bind(this);\n this.dropdownListItemRef = createRef();\n }\n\n static getDerivedStateFromProps(nextProps, prevState) {\n const state = {};\n\n if (\n nextProps.value && JSON.stringify(nextProps.value)\n !== JSON.stringify(prevState.initialValue)\n ) {\n state.value = nextProps.value || [];\n state.initialValue = nextProps.value || '';\n }\n\n return state.value ? state : null;\n }\n\n getListItemsCssClass(displayType) {\n const { config } = this.props;\n const cssClasses = ['tyk-editable-list-items'];\n\n cssClasses.push(config.displayType || 'table');\n\n if (displayType === 'inline') {\n cssClasses.push('tyk-editable-list-items--inline');\n }\n\n return cssClasses.join(' ');\n }\n\n getFormInputKey() {\n this.startIndex += 1;\n return this.startIndex;\n }\n\n // generate list item value's based on the display types\n // table, inline, list\n getListItemText(itemData) {\n const { config } = this.props;\n let value = null;\n\n switch (config.displayType) {\n case 'list':\n case 'inline': {\n const itemText = itemData.value.reduce((prevValue, itemValue, index) => {\n const tempValue = EditableList.getItemListValue(itemValue);\n let separator = ', ';\n\n if (index === itemData.value.length - 1) {\n separator = '';\n }\n\n return prevValue + tempValue + separator;\n }, '');\n\n value = itemText;\n\n break;\n }\n default:\n value = (\n \n {\n config.components.map((component, index) => (\n \n { EditableList.getItemListValue(itemData.value[index]) }\n \n ))\n }\n \n );\n\n break;\n }\n\n return value;\n }\n\n getMainFormButtonWidth(value) {\n this.setState({\n buttonWidth: value,\n });\n }\n\n setItemEditMode(index) {\n const newValues = this.closeListItems();\n\n this.setState((previousState) => {\n const tempState = Object.assign({}, previousState);\n tempState.value = newValues;\n tempState.value[index].editMode = !tempState.value[index].editMode;\n\n return tempState;\n });\n }\n\n isInList(index, itemValue) {\n const { value } = this.state;\n let ok = false;\n\n value.forEach((item, itemIndex) => {\n if (JSON.stringify(item.value) === JSON.stringify(itemValue)) {\n if (index >= 0 && itemIndex === index) {\n ok = false;\n } else {\n ok = true;\n }\n }\n });\n\n return ok;\n }\n\n addValues(newValue) {\n const { value } = this.state;\n const { config } = this.props;\n const itemValue = {\n editMode: false,\n value: newValue,\n };\n const tempState = {\n value: value.slice(0),\n };\n\n if (config.children) {\n itemValue.children = [];\n }\n\n tempState.value.push(itemValue);\n\n return tempState;\n }\n\n removeListItem(index) {\n let removedItem;\n this.setState((previousState) => {\n const valueArr = previousState.value.slice(0);\n removedItem = valueArr.splice(index, 1);\n\n return {\n value: valueArr,\n };\n }, () => {\n this.triggerOnChange(index, removedItem, null);\n });\n }\n\n handleFormSubmit(value) {\n const tempState = this.addValues(value);\n this.setState(previousState => Object.assign({}, previousState, tempState), () => {\n this.triggerOnChange(tempState.value.length - 1, null, value);\n });\n }\n\n handleItemUpdate(index, value) {\n let prevValue;\n this.setState((previousState) => {\n const tempState = Object.assign({}, previousState);\n prevValue = fromJS(tempState.value[index].value).toJS();\n tempState.value[index].value = value;\n tempState.value[index].editMode = false;\n\n return tempState;\n }, () => {\n this.triggerOnChange(index, prevValue, value);\n });\n }\n\n handleChildrenOnChange(index, value) {\n let prevValue;\n this.setState((previousState) => {\n const tempState = Object.assign({}, previousState);\n prevValue = fromJS(tempState.value[index].children).toJS();\n tempState.value[index].children = value;\n\n return tempState;\n }, () => {\n this.triggerOnChange(index, prevValue, value);\n });\n }\n\n closeListItems() {\n const { value } = this.state;\n\n const newValues = value.map((itemValue) => {\n const tempItemValue = Object.assign({}, itemValue);\n\n if (tempItemValue.editMode) {\n tempItemValue.editMode = false;\n return tempItemValue;\n }\n\n return tempItemValue;\n });\n\n return newValues;\n }\n\n triggerOnChange(index, prevValue, nextValue) {\n const { onChange } = this.props;\n const { value } = this.state;\n\n if (onChange && typeof onChange === 'function') {\n onChange(((value.length) ? value : null), index, prevValue, nextValue);\n }\n }\n\n genListItem(itemData, index) {\n const { config, disabled } = this.props;\n const { buttonWidth, value } = this.state;\n\n const clonedComponents = fromJS(config.components).toJS();\n\n itemData.value.forEach((itemValue, itemIndex) => {\n clonedComponents[itemIndex].props.value = itemValue;\n });\n\n return (\n \n \n {\n !itemData.editMode\n ? (\n \n { this.getListItemText(itemData, index) }\n \n \n \n \n \n )\n : (\n \n \n \n \n )\n }\n \n {\n config.children\n ? (\n \n )\n : null\n }\n \n );\n }\n\n genList() {\n const { config } = this.props;\n const { buttonWidth, value } = this.state;\n\n if (!value || value.length === 0) {\n return null;\n }\n\n return (\n \n {\n config.displayType === 'table' || !config.displayType\n ? (\n \n \n {\n config.components.map((component, index) => (\n \n { component.props.label }\n \n ))\n }\n \n \n )\n : null\n }\n
      \n {\n value.map((itemData, index) => this.genListItem(itemData, index))\n }\n
    \n
    \n );\n }\n\n render() {\n const {\n addValueOnFieldChange, config, error, disabled, label,\n } = this.props;\n const appendToElement = document.querySelector(config.appendTo) || document.querySelector('body');\n\n return (\n
    \n {\n label\n ? \n : null\n }\n \n {\n config.appendTo\n ? ReactDOM.createPortal(\n this.genList(),\n appendToElement,\n )\n : this.genList()\n }\n
    \n );\n }\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport Button from '../../../components/Button';\n\nconst Header = ({\n label, addButtonName, onAddRow, disabled, readOnly,\n}) => (\n
    \n {\n label\n ? \n : null\n }\n {!disabled && !readOnly && (\n \n {addButtonName || 'Add'}\n \n )}\n
    \n);\n\nHeader.propTypes = {\n disabled: PropTypes.bool,\n readOnly: PropTypes.bool,\n onAddRow: PropTypes.func,\n addButtonName: PropTypes.string,\n label: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.element,\n PropTypes.node,\n ]),\n};\n\nexport default Header;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nconst ListHeader = ({\n fields,\n readOnly,\n}) => (\n
  • \n {\n fields.map(field => (\n
    {field?.props?.label}
    \n ))\n }\n
    Delete
    \n
  • \n);\n\nListHeader.propTypes = {\n fields: PropTypes.instanceOf(Array),\n readOnly: PropTypes.bool,\n};\n\nexport default ListHeader;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Button from '../../../components/Button';\n\nconst FieldsList = ({\n fields,\n disabled,\n readOnly,\n errors,\n components,\n onChange,\n onDelete,\n value,\n rowIndex,\n}) => (\n
  • \n {\n components.map((Component, index) => {\n let field = fields[index];\n let tempField = typeof field === 'function' ? field(rowIndex, index) : field;\n return (\n /* eslint-disable-next-line */\n
    \n \n
    \n );\n })\n }\n
    \n \n
    \n
  • \n);\n\nFieldsList.propTypes = {\n disabled: PropTypes.bool,\n readOnly: PropTypes.bool,\n rowIndex: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number,\n ]),\n fields: PropTypes.instanceOf(Array),\n errors: PropTypes.instanceOf(Array),\n components: PropTypes.instanceOf(Array),\n value: PropTypes.instanceOf(Array),\n onChange: PropTypes.func,\n onDelete: PropTypes.func,\n};\n\nexport default FieldsList;\n","const validateValues = (fields, rowValues) => (rowValues || [[undefined, undefined]])?.map(\n colValue => colValue?.map(\n (value, index) => fields?.[index]?.props?.validate\n && fields[index].props.validate(value),\n ),\n);\n\nexport default validateValues;\n","import React, { useCallback, useState } from 'react';\n\nconst withValidation = Component => ({\n onChange,\n validate,\n error,\n ...rest\n}) => {\n const [internalError, setInternalError] = useState(null);\n const onFieldChange = useCallback((event) => {\n /* eslint-disable-next-line */\n const value = event?.target\n ? ['radio', 'checkbox'].includes(event.target.type)\n ? event.target.checked\n : event?.target.value\n : event;\n\n let isValid = true;\n if (validate && typeof validate === 'function') {\n const errorMsg = validate(value);\n isValid = !errorMsg;\n setInternalError(errorMsg);\n }\n\n onChange(value, isValid);\n }, [validate, onChange]);\n\n return ;\n};\n\nexport default withValidation;\n","import React, { useMemo, useState } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Header from './Header';\nimport ListHeader from './ListHeader';\nimport FieldsList from './FieldsList';\nimport validateValues from './validate-values';\nimport withValidation from './with-validation';\n\nlet id = 1;\n/* eslint-disable-next-line */\nconst getUID = prefix => `${prefix}-${id++}`;\n\n/**\n * Editable list is a component, that lists rows of form elements (can have n elements on a row),\n * and stores the values of all the rows in an Array list\n */\nconst EditableList2 = ({\n addButtonName,\n disabled,\n readOnly,\n fields,\n label,\n error,\n value = [],\n onChange = () => {},\n hideOnEmpty = true,\n wrapperClassName = '',\n}) => {\n const [internalErrors, setInteranlErrors] = useState(null);\n\n const updateRowValue = (rowIndex, fieldIndex, componentValue, isValid) => {\n const tempValueArr = !value ? [] : [...value];\n\n if (!value) {\n tempValueArr[rowIndex] = [...new Array(fields.length)];\n tempValueArr[rowIndex][fieldIndex] = componentValue;\n } else {\n const tempValue = [...tempValueArr[rowIndex]];\n tempValue[fieldIndex] = componentValue;\n tempValueArr[rowIndex] = tempValue;\n tempValueArr[rowIndex].id = value[rowIndex].id;\n }\n\n if (internalErrors?.[rowIndex]?.[fieldIndex] && isValid) {\n const tempErrors = [...internalErrors];\n const tempFieldError = [...tempErrors[rowIndex]];\n tempFieldError[fieldIndex] = null;\n tempErrors[rowIndex] = tempFieldError;\n setInteranlErrors(tempErrors);\n }\n onChange(tempValueArr);\n };\n\n const hasErrors = errors => Boolean(errors?.flat()?.filter(Boolean).length);\n\n const Components = useMemo(\n () => fields.map(field => {\n let tempField = typeof field === 'function' ? field() : field;\n\n return withValidation(tempField?.component || <>)\n }),\n [],\n );\n\n const onAddRow = () => {\n const errors = validateValues(fields, value);\n\n if (hasErrors(errors)) {\n setInteranlErrors(errors);\n return;\n }\n\n const newValue = [...new Array(fields.length)];\n newValue.id = getUID('row');\n\n onChange([\n ...value && value,\n newValue,\n ]);\n };\n\n const deleteRow = (index) => {\n if (!value) {\n return;\n }\n const tempValue = [...value];\n tempValue.splice(index, 1);\n onChange(tempValue);\n };\n\n return (\n
    \n \n {value?.length || !hideOnEmpty ? (\n
      \n {(value || [[]]).map((v, i) => (\n <>\n \n \n ))}\n \n
    \n ) : null}\n {error && error !== 'true' && error !== 'false' ? (\n

    {error}

    \n ) : null}\n
    \n );\n};\n\nEditableList2.propTypes = {\n /** Sets Editable list in edit mode.\n * If enabled all fields are disabled, the add button is hidden and delete button is disabled\n * */\n disabled: PropTypes.bool,\n /** Sets Editable list in read only mode.\n * If enabled all fields are displaying just the value,\n * the add button is hidden and delete button is disabled\n */\n readOnly: PropTypes.bool,\n /** Name of the Add button. By default has 'Add value' */\n addButtonName: PropTypes.string,\n /** Label of Editable list, is displayed above the list and inline with the Add button */\n label: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.element,\n PropTypes.node,\n ]),\n /** Array of form elements that you want the list to have\n * Each field is an object points to the Form element component that you want to use,\n * the props you want to apply on it,\n * and the size (as in width, it's like columns system, between 1 and 12)\n * Example:\n * ...\n * fields={[\n {\n component: Input2,\n styles: {\n width: \"200px\",\n },\n size: 4,\n props: {\n name: 'input',\n label: 'Claim name',\n theme: 'default rounded-corners',\n placeholder: 'Enter claim name',\n validate: formikRequired('This field is required')\n }\n },\n {\n component: Combobox2,\n size: 8,\n props: comboboxProps\n }\n ]}\n */\n fields: PropTypes.instanceOf(Array),\n /** onChange function is called everytime the value of editable list changes */\n onChange: PropTypes.func,\n /** value of editable list, wich is an Array (List of row values)\n * of Arrays (List of column values,\n * each column will have the value format depending on the component type)\n */\n value: PropTypes.oneOfType([\n PropTypes.instanceOf(Object),\n PropTypes.instanceOf(Array),\n ]),\n error: PropTypes.string,\n hideOnEmpty: PropTypes.bool,\n wrapperClassName: PropTypes.string,\n};\n\nexport default EditableList2;\n","import React, { Component, Fragment, createRef } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Icon from '../../../components/Icon';\n\nexport default class FileInput extends Component {\n static propTypes = {\n accept: PropTypes.string,\n disabled: PropTypes.bool,\n id: PropTypes.string,\n error: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.bool,\n ]),\n label: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.func,\n PropTypes.string,\n ]),\n labelwidth: PropTypes.string,\n name: PropTypes.string,\n note: PropTypes.string,\n onChange: PropTypes.func,\n placeholder: PropTypes.string,\n theme: PropTypes.string,\n value: PropTypes.instanceOf(Object),\n wrapperClassName: PropTypes.string,\n }\n\n constructor(props) {\n super(props);\n\n this.handleOnChange = this.handleOnChange.bind(this);\n this.clearValue = this.clearValue.bind(this);\n this.fileInputRef = createRef();\n }\n\n getCssClasses() {\n const {\n error, theme, labelwidth, wrapperClassName = '',\n } = this.props;\n const cssClasses = [wrapperClassName, 'tyk-form-group'];\n const themes = theme ? theme.split(' ') : [];\n\n if (themes.length) {\n themes.forEach((iTheme) => {\n cssClasses.push(`tyk-form-group--${iTheme}`);\n });\n }\n\n if (labelwidth) {\n cssClasses.push('tyk-form-group--label-has-width');\n }\n\n if (error) {\n cssClasses.push('has-error');\n }\n\n return cssClasses.join(' ');\n }\n\n getLabelStyles() {\n const { labelwidth } = this.props;\n const styles = {};\n\n if (labelwidth) {\n styles.flexBasis = labelwidth;\n }\n\n return styles;\n }\n\n getNonLabelWidth() {\n const { labelwidth } = this.props;\n const styles = {};\n\n if (labelwidth) {\n styles.flexBasis = `calc(100% - ${labelwidth} - 20px)`;\n }\n\n return styles;\n }\n\n getFileInputError() {\n const { error } = this.props;\n\n return (error && error !== 'true' && error !== 'false')\n ? (\n \n { error }\n

    \n )\n : null;\n }\n\n getFileInputComponent() {\n const {\n accept, value: omitValue, onChange, ...rest\n } = this.props;\n\n return (\n \n \n {\n this.fileInputRef.current && this.fileInputRef.current.files.length > 0\n ? (\n \n \n \n )\n : null\n }\n \n );\n }\n\n clearValue() {\n const { onChange } = this.props;\n this.fileInputRef.current.value = '';\n onChange('');\n }\n\n handleOnChange(e) {\n const { onChange } = this.props;\n\n onChange(e.target.files);\n }\n\n // eslint-disable-next-line class-methods-use-this\n reset() {}\n\n render() {\n const {\n id,\n label,\n note,\n } = this.props;\n\n return (\n \n
    \n {\n label\n ? \n : null\n }\n
    \n { this.getFileInputComponent() }\n {\n note\n ?

    { note }

    \n : null\n }\n
    \n { this.getFileInputError() }\n
    \n
    \n );\n }\n}\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\nexport default class Input extends Component {\n static propTypes = {\n disabled: PropTypes.bool,\n readOnly: PropTypes.bool,\n id: PropTypes.string,\n isfield: PropTypes.bool,\n error: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.bool,\n ]),\n inputgroupaddonleft: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]),\n inputgroupaddonright: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]),\n label: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.element,\n PropTypes.node,\n ]),\n labelwidth: PropTypes.string,\n name: PropTypes.string,\n note: PropTypes.string,\n onChange: PropTypes.func,\n placeholder: PropTypes.string,\n theme: PropTypes.string,\n value: PropTypes.oneOfType([\n PropTypes.number,\n PropTypes.string,\n ]),\n }\n\n static getAddon(content) {\n return (\n
    \n { content }\n
    \n );\n }\n\n constructor(props) {\n super(props);\n const {\n value,\n } = this.props;\n\n this.state = {\n initValue: value,\n stateValue: value,\n };\n\n this.handleOnChange = this.handleOnChange.bind(this);\n }\n\n componentDidUpdate(prevProps) {\n const {\n isfield,\n value,\n onChange,\n } = this.props;\n\n if (!isfield && prevProps.value !== value) {\n /* eslint-disable react/no-did-update-set-state */\n this.setState({\n stateValue: value,\n }, () => {\n if (onChange) {\n onChange(value);\n }\n });\n }\n }\n\n getLabelStyles() {\n const { labelwidth } = this.props;\n const styles = {};\n\n if (labelwidth) {\n styles.flexBasis = labelwidth;\n }\n\n return styles;\n }\n\n getNonLabelWidth() {\n const { labelwidth } = this.props;\n const styles = {};\n\n if (labelwidth) {\n styles.flexBasis = `calc(100% - ${labelwidth} - 20px)`;\n }\n\n return styles;\n }\n\n getInputError() {\n const { error } = this.props;\n\n return (error && error !== 'true' && error !== 'false')\n ? (\n \n { error }\n

    \n )\n : null;\n }\n\n getCssClasses() {\n const {\n error,\n theme,\n labelwidth,\n inputgroupaddonleft,\n inputgroupaddonright,\n } = this.props;\n const cssClasses = ['tyk-form-group'];\n const themes = theme ? theme.split(' ') : [];\n\n if (themes.length) {\n themes.forEach((iTheme) => {\n cssClasses.push(`tyk-form-group--${iTheme}`);\n });\n }\n\n if (inputgroupaddonleft) {\n cssClasses.push('tyk-form-group--addon-left');\n }\n\n if (inputgroupaddonright) {\n cssClasses.push('tyk-form-group--addon-right');\n }\n\n if (labelwidth) {\n cssClasses.push('tyk-form-group--label-has-width');\n }\n\n if (error) {\n cssClasses.push('has-error');\n }\n\n return cssClasses.join(' ');\n }\n\n getInputGroupAddon() {\n const {\n inputgroupaddonleft,\n inputgroupaddonright,\n } = this.props;\n\n return (\n
    \n {\n inputgroupaddonleft\n ? Input.getAddon(inputgroupaddonleft)\n : null\n }\n { this.getInputComponent() }\n {\n inputgroupaddonright\n ? Input.getAddon(inputgroupaddonright)\n : null\n }\n
    \n );\n }\n\n getInputComponent() {\n const {\n isfield, onChange, value, ...rest\n } = this.props;\n const { stateValue } = this.state;\n return (\n \n );\n }\n\n reset() {\n const { initValue } = this.state;\n\n this.setState({\n stateValue: initValue,\n });\n }\n\n handleOnChange(e) {\n const { onChange, isfield } = this.props;\n const inputValue = e.target.value;\n\n if (!isfield) {\n this.setState({\n stateValue: inputValue,\n }, () => {\n if (onChange) {\n onChange(inputValue);\n }\n });\n } else {\n onChange(inputValue);\n }\n }\n\n render() {\n const {\n label,\n id,\n inputgroupaddonleft,\n inputgroupaddonright,\n note,\n readOnly,\n value,\n } = this.props;\n\n return (\n
    \n {\n label\n ? \n : null\n }\n {!readOnly && (\n \n {\n inputgroupaddonleft || inputgroupaddonright\n ? this.getInputGroupAddon()\n : this.getInputComponent()\n }\n {\n note\n ?

    { note }

    \n : null\n }\n { this.getInputError() }\n
    \n )}\n {\n readOnly &&
    {value || '-'}
    \n }\n \n );\n }\n}\n","import React, { useImperativeHandle, useRef, forwardRef } from 'react';\nimport PropTypes from 'prop-types';\n\nconst Input2 = forwardRef(({\n error,\n onChange,\n readOnly,\n id,\n inputgroupaddonleft,\n inputgroupaddonright,\n label,\n labelwidth,\n note,\n theme,\n value,\n wrapperClassName = '',\n ...rest\n}, ref) => {\n const inputRef = useRef();\n\n useImperativeHandle(ref, () => ({\n focus: () => {\n inputRef.current.focus();\n },\n }));\n\n const getAddon = content => (\n
    \n { content }\n
    \n );\n\n const getLabelStyles = () => ({\n ...labelwidth && {\n flexBasis: labelwidth,\n },\n });\n\n const getNonLabelWidth = () => ({\n ...labelwidth && {\n flexBasis: `calc(100% - ${labelwidth} - 20px)`,\n },\n });\n\n const getInputError = () => (\n (error && error !== 'true' && error !== 'false')\n ? (\n \n { error }\n

    \n )\n : null\n );\n\n const getCssClasses = () => {\n const cssClasses = [wrapperClassName, 'tyk-form-group'];\n const themes = theme ? theme.split(' ') : [];\n\n if (themes.length) {\n themes.forEach((iTheme) => {\n cssClasses.push(`tyk-form-group--${iTheme}`);\n });\n }\n\n if (inputgroupaddonleft) {\n cssClasses.push('tyk-form-group--addon-left');\n }\n\n if (inputgroupaddonright) {\n cssClasses.push('tyk-form-group--addon-right');\n }\n\n if (labelwidth) {\n cssClasses.push('tyk-form-group--label-has-width');\n }\n\n if (error) {\n cssClasses.push('has-error');\n }\n\n return cssClasses.join(' ');\n };\n\n const handleOnChange = (e) => {\n onChange(e, e.target.value);\n };\n\n const getInputElement = () => (\n \n );\n\n const getInputGroupAddon = () => (\n
    \n {\n inputgroupaddonleft\n ? getAddon(inputgroupaddonleft)\n : null\n }\n { getInputElement() }\n {\n inputgroupaddonright\n ? getAddon(inputgroupaddonright)\n : null\n }\n
    \n );\n\n return (\n
    \n {\n label\n ? \n : null\n }\n {!readOnly && (\n \n {\n inputgroupaddonleft || inputgroupaddonright\n ? getInputGroupAddon()\n : getInputElement()\n }\n {\n note\n ?

    { note }

    \n : null\n }\n { getInputError() }\n
    \n )}\n {\n readOnly && (\n
    \n {value || '-'}\n
    \n )\n }\n \n );\n});\n\nInput2.propTypes = {\n disabled: PropTypes.bool,\n readOnly: PropTypes.bool,\n id: PropTypes.string,\n error: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.bool,\n ]),\n inputgroupaddonleft: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]),\n inputgroupaddonright: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]),\n label: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.element,\n PropTypes.node,\n ]),\n labelwidth: PropTypes.string,\n name: PropTypes.string,\n note: PropTypes.string,\n onChange: PropTypes.func,\n placeholder: PropTypes.string,\n theme: PropTypes.string,\n value: PropTypes.oneOfType([\n PropTypes.number,\n PropTypes.string,\n ]),\n wrapperClassName: PropTypes.string,\n};\n\nexport default Input2;\n","import { createContext } from 'react';\n\nconst MultiselectContext = createContext();\n\nexport default MultiselectContext;\n","import React, { Component, Fragment } from 'react';\nimport PropTypes from 'prop-types';\n\nimport MultiselectContext from './MultiselectContext';\nimport Button from '../../../../components/Button';\nimport Collapsible from '../../../../components/Collapsible';\nimport Loader from '../../../../components/Loader';\n\nconst getItemContent = (context, item) => (\n context.detailsDisplayTemplate\n ? context.detailsDisplayTemplate(item)\n : JSON.stringify(item.details)\n);\n\nconst getItemLoader = (context, item) => {\n const { opened } = context;\n\n return opened[item.id]\n ? \n : null;\n};\n\nclass MultiselectItem extends Component {\n static propTypes = {\n item: PropTypes.instanceOf(Object),\n itemType: PropTypes.string,\n searchValue: PropTypes.string,\n onChange: PropTypes.func,\n };\n\n isInSearchValue(fieldsToSearchOn) {\n const { searchValue, item } = this.props;\n\n if (fieldsToSearchOn && fieldsToSearchOn.length > 0) {\n let fields = fieldsToSearchOn.slice(0);\n\n fields = fields.filter(key => item[key] && item[key].search(searchValue) > -1);\n\n return fields.length > 0;\n }\n\n return JSON.stringify(item).search(searchValue) > -1;\n }\n\n render() {\n const {\n item,\n itemType,\n onChange,\n } = this.props;\n\n return (\n \n \n {\n context => (\n this.isInSearchValue(context.fieldsToSearchOn)\n ? (\n
  • \n
    \n \n {\n context.itemDisplayTemplate\n ? context.itemDisplayTemplate(item)\n : JSON.stringify(item)\n }\n \n \n \n \n \n
    \n {\n item.details\n ? (\n \n {getItemContent(context, item)}\n \n )\n : getItemLoader(context, item)\n }\n
  • \n )\n : null\n )\n }\n
    \n
    \n );\n }\n}\n\nexport default MultiselectItem;\n","import React, { Component, createRef } from 'react';\nimport PropTypes from 'prop-types';\nimport { fromJS } from 'immutable';\n\nimport Input from '../../Input';\nimport Icon from '../../../../components/Icon';\nimport Message from '../../../../components/Message';\nimport InfiniteScroller from '../../../../components/InfiniteScroller';\nimport MultiselectItem from './MultiselectItem';\n\nclass MultiselectPanel extends Component {\n static propTypes = {\n customSearch: PropTypes.bool,\n onCustomSearch: PropTypes.func,\n panelType: PropTypes.string,\n onChange: PropTypes.func,\n items: PropTypes.instanceOf(Array),\n itemsPageNumber: PropTypes.number,\n itemsNrPages: PropTypes.number,\n inputPlaceholder: PropTypes.string,\n loadMoreItems: PropTypes.func,\n noItemsMessage: PropTypes.string,\n serverLoad: PropTypes.bool,\n };\n\n state = {\n searchValue: '',\n };\n\n constructor(props) {\n super(props);\n\n this.searchOnChange = this.searchOnChange.bind(this);\n this.itemChanged = this.itemChanged.bind(this);\n this.itemIndex = 0;\n this.itemsListRef = createRef();\n }\n\n getItemIndex() {\n this.itemIndex += 1;\n\n return this.itemIndex;\n }\n\n getItemsList() {\n const {\n itemsPageNumber,\n itemsNrPages,\n loadMoreItems,\n serverLoad,\n } = this.props;\n\n return (\n serverLoad\n ? (\n itemsPageNumber}\n loadMore={loadMoreItems}\n pageNumber={itemsPageNumber}\n >\n { this.renderListItems() }\n \n )\n : this.renderListItems()\n );\n }\n\n searchOnChange(value) {\n const { onCustomSearch } = this.props;\n\n if (!onCustomSearch) {\n this.setState({\n searchValue: value,\n });\n } else {\n onCustomSearch(value);\n }\n }\n\n itemChanged(item) {\n const { items, onChange } = this.props;\n\n let cloneItems = fromJS(items).toJS();\n cloneItems = cloneItems.filter(clonedItem => item.id !== clonedItem.id);\n\n onChange(cloneItems, item);\n }\n\n renderListItems() {\n const {\n customSearch, items, panelType, serverLoad,\n } = this.props;\n const { searchValue } = this.state;\n return (\n \n {\n items.map(item => (\n \n ))\n }\n \n );\n }\n\n render() {\n const {\n inputPlaceholder,\n noItemsMessage,\n items,\n } = this.props;\n const { searchValue } = this.state;\n\n return (\n
    \n \n }\n name=\"search\"\n onChange={this.searchOnChange}\n placeholder={inputPlaceholder}\n value={searchValue}\n />\n {\n items.length\n ? this.getItemsList()\n : (\n \n { noItemsMessage }\n \n )\n }\n
    \n );\n }\n}\n\nexport default MultiselectPanel;\n","import React, { Component, Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport { fromJS } from 'immutable';\n\nimport MultiselectPanel from './js/MultiselectPanel';\nimport MultiselectContext from './js/MultiselectContext';\n\nconst diffObjects = (value, items) => {\n const newItems = items.filter((item) => {\n const isCommon = value.filter(selectedItem => selectedItem.id === item.id).length > 0;\n\n return !isCommon;\n });\n\n return newItems;\n};\n\nclass Multiselect extends Component {\n static propTypes = {\n customSearch: PropTypes.func,\n disabled: PropTypes.bool,\n error: PropTypes.string,\n entityNamePlural: PropTypes.string,\n items: PropTypes.instanceOf(Array),\n itemDisplayTemplate: PropTypes.func,\n detailsDisplayTemplate: PropTypes.func,\n fieldsToSearchOn: PropTypes.instanceOf(Array),\n onChange: PropTypes.func,\n getItemDetails: PropTypes.func,\n itemsPageNumber: PropTypes.number,\n itemsNrPages: PropTypes.number,\n loadMoreItems: PropTypes.func,\n note: PropTypes.string,\n maxSelections: PropTypes.number,\n value: PropTypes.instanceOf(Array),\n wrapperClassName: PropTypes.string,\n };\n\n state = {\n opened: {},\n };\n\n constructor(props) {\n super(props);\n\n this.valueChange = this.valueChange.bind(this);\n this.itemsChange = this.itemsChange.bind(this);\n }\n\n onGetItemDetails(item) {\n const { getItemDetails } = this.props;\n\n this.setState((prevState) => {\n const tempState = Object.assign({}, prevState);\n tempState.opened[item.id] = !tempState.opened[item.id];\n\n return tempState;\n }, () => {\n if (getItemDetails) {\n getItemDetails(item);\n }\n });\n }\n\n getMultiselectError() {\n const { error } = this.props;\n\n return (error && error !== 'true' && error !== 'false')\n ? (\n \n { error }\n

    \n )\n : null;\n }\n\n getCssClasses() {\n const { error, wrapperClassName = '' } = this.props;\n const cssClasses = [wrapperClassName, 'tyk-multiselect'];\n\n if (error) {\n cssClasses.push('has-error');\n }\n\n return cssClasses.join(' ');\n }\n\n itemsChange(allItems, item) {\n const { value, onChange } = this.props;\n const valueClone = fromJS(value).toJS();\n\n valueClone.unshift(item);\n\n onChange(valueClone, item, 'added');\n }\n\n valueChange(value, item) {\n const { items, onChange } = this.props;\n const allItemsClone = fromJS(items).toJS();\n\n allItemsClone.unshift(item);\n\n onChange(value, item, 'removed');\n }\n\n render() {\n const {\n customSearch,\n entityNamePlural,\n disabled,\n itemDisplayTemplate,\n detailsDisplayTemplate,\n fieldsToSearchOn,\n items,\n itemsPageNumber,\n itemsNrPages,\n loadMoreItems,\n maxSelections,\n note,\n value,\n } = this.props;\n const { opened } = this.state;\n\n return (\n \n
    \n \n
    \n
    \n { value.length }\n {' '}\n Selected\n {' '}\n { entityNamePlural }\n
    \n
    \n Select from existing\n { entityNamePlural }\n
    \n
    \n
    \n \n \n
    \n \n
    \n
    \n {\n note\n ?

    { note }

    \n : null\n }\n
    \n { this.getMultiselectError() }\n
    \n );\n }\n}\n\nexport default Multiselect;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\n\n/**\n * Radio can be used when a user needs to select at most one value from a multiple options.\n */\nexport default class Radio extends Component {\n static propTypes = {\n /** Used to disable the element */\n disabled: PropTypes.bool,\n /** Readonly prop behaves the same as disabled on radio elements */\n readOnly: PropTypes.bool,\n /** Align radio with in same line with other elements */\n inline: PropTypes.bool,\n /** Set a theme for radio */\n theme: PropTypes.string,\n input: PropTypes.instanceOf(Object),\n /** Adds label to the radio input */\n label: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.func,\n PropTypes.string,\n ]),\n /** Set name for the radio input */\n name: PropTypes.string,\n /** If set to true removes margin by adding `no-margin` class */\n nospace: PropTypes.bool,\n /** Set initial value for the radio input */\n value: PropTypes.string,\n /** Add note at the bottom of the radio input */\n note: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.element,\n PropTypes.node,\n ]),\n wrapperClassName: PropTypes.string,\n };\n\n getCssClasses() {\n const {\n inline, nospace, theme = '', disabled, readOnly, wrapperClassName = '',\n } = this.props;\n const cssClasses = [wrapperClassName];\n\n if (inline) {\n cssClasses.push('tyk-radio--inline');\n } else {\n cssClasses.push('tyk-radio');\n }\n\n if (nospace) {\n cssClasses.push('no-margin');\n }\n\n if (theme.trim()) {\n cssClasses.push(...theme.split(' ').map(t => `tyk-radio--theme-${t}`));\n }\n\n if (readOnly || disabled) {\n cssClasses.push('tyk-radio--is-disabled');\n }\n\n return cssClasses.join(' ');\n }\n\n render() {\n const {\n input, label, note, disabled, readOnly, ...rest\n } = this.props;\n return (\n \n \n

    {note}

    \n \n );\n }\n}\n","import React, { Component, Fragment } from 'react';\nimport PropTypes from 'prop-types';\n\nexport default class Select extends Component {\n static propTypes = {\n disabled: PropTypes.bool,\n readOnly: PropTypes.bool,\n id: PropTypes.string,\n isfield: PropTypes.bool,\n error: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.bool,\n ]),\n options: PropTypes.instanceOf(Array),\n label: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.func,\n PropTypes.string,\n ]),\n labelwidth: PropTypes.string,\n name: PropTypes.string,\n note: PropTypes.string,\n onBlur: PropTypes.func,\n onChange: PropTypes.func,\n placeholder: PropTypes.string,\n theme: PropTypes.string,\n value: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.object,\n ]),\n wrapperClassName: PropTypes.string,\n }\n\n constructor(props) {\n super(props);\n const {\n value,\n } = this.props;\n\n this.state = {\n initValue: value,\n stateValue: value,\n };\n\n this.handleOnChange = this.handleOnChange.bind(this);\n this.handleOnBlur = this.handleOnBlur.bind(this);\n }\n\n componentDidUpdate(prevProps) {\n const {\n isfield,\n value,\n onChange,\n } = this.props;\n\n if (!isfield && prevProps.value !== value) {\n /* eslint-disable react/no-did-update-set-state */\n this.setState({\n stateValue: value,\n }, () => {\n if (onChange) {\n onChange(value);\n }\n });\n }\n }\n\n getSelectComponent() {\n const {\n isfield, options, onChange, onBlur, value, ...rest\n } = this.props;\n const {\n stateValue,\n } = this.state;\n\n let selectValue = '';\n\n if (isfield && value) {\n selectValue = value;\n } else if (stateValue) {\n selectValue = stateValue;\n }\n\n return (\n \n {\n options.map(option => )\n }\n \n );\n }\n\n getSelectError() {\n const { error } = this.props;\n\n return (error && error !== 'true' && error !== 'false')\n ? (\n \n { error }\n

    \n )\n : null;\n }\n\n getCssClasses() {\n const {\n error, labelwidth, theme, wrapperClassName = '',\n } = this.props;\n const cssClasses = [wrapperClassName, 'tyk-form-group'];\n const themes = theme ? theme.split(' ') : [];\n\n if (themes.length) {\n themes.forEach((iTheme) => {\n cssClasses.push(`tyk-form-group--${iTheme}`);\n });\n }\n\n if (labelwidth) {\n cssClasses.push('tyk-form-group--label-has-width');\n }\n\n if (error) {\n cssClasses.push('has-error');\n }\n\n return cssClasses.join(' ');\n }\n\n getLabelStyles() {\n const { labelwidth } = this.props;\n const styles = {};\n\n if (labelwidth) {\n styles.flexBasis = labelwidth;\n }\n\n return styles;\n }\n\n getNonLabelWidth() {\n const { labelwidth } = this.props;\n const styles = {};\n\n if (labelwidth) {\n styles.flexBasis = `calc(100% - ${labelwidth} - 20px)`;\n }\n\n return styles;\n }\n\n handleOnBlur() {\n const { value, onBlur } = this.props;\n\n if (onBlur) {\n onBlur(value);\n }\n }\n\n handleOnChange(e) {\n const {\n onChange,\n isfield,\n options,\n } = this.props;\n let selectedValue = null;\n\n selectedValue = options.filter(option => option.id === e.target.value);\n [selectedValue] = selectedValue;\n\n if (!isfield) {\n this.setState({\n stateValue: selectedValue,\n }, () => {\n onChange(selectedValue.id ? selectedValue : null);\n });\n } else {\n onChange(selectedValue.id ? selectedValue : null);\n }\n }\n\n reset() {\n const { initValue } = this.state;\n\n this.setState({\n stateValue: initValue,\n });\n }\n\n render() {\n const {\n label,\n id,\n note,\n readOnly,\n value,\n } = this.props;\n\n return (\n \n
    \n {\n label\n ? \n : null\n }\n {!readOnly && (\n \n {\n this.getSelectComponent()\n }\n {\n note\n ?

    { note }

    \n : null\n }\n { this.getSelectError() }\n
    \n )}\n {readOnly &&
    {value || '-'}
    }\n \n
    \n );\n }\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport Message from '../../../components/Message';\nimport List from '../../../components/List';\nimport Icon from '../../../components/Icon';\n\nfunction SelectableList(props) {\n const {\n checkboxalticon,\n items,\n itemTemplate,\n value,\n noItemsMessage = 'No items in the list',\n onChange,\n theme,\n primaryKey,\n wrapperClassName = '',\n } = props;\n\n const handleOnSelect = (event) => {\n const newSelectedItems = structuredClone(value);\n const elemPosition = newSelectedItems.findIndex(\n (id) => JSON.stringify(id) === JSON.stringify(\n Array.isArray(id)\n ? event.target.value.split(',')\n : event.target.value,\n ),\n );\n\n if (event.target.checked && elemPosition === -1) {\n const tempValue = event.target.value.split(',');\n const finalValue = tempValue.length > 1 ? tempValue : event.target.value;\n\n newSelectedItems.push(finalValue);\n } else if (!event.target.checked && elemPosition > -1) {\n newSelectedItems.splice(elemPosition, 1);\n }\n\n if (onChange) {\n onChange(newSelectedItems);\n }\n };\n\n const getListItemCssClassName = (isActive) => {\n const cssClasses = [];\n\n if (checkboxalticon) {\n cssClasses.push('tyk-selectable-list__item--with-icon');\n }\n\n if (isActive) {\n cssClasses.push('tyk-selectable-list__item--active');\n }\n\n return cssClasses.join(' ');\n };\n\n const isChecked = (inputValue, itemValue) => Boolean(\n inputValue.find((tvalue) => JSON.stringify(itemValue) === JSON.stringify(tvalue)),\n );\n\n return (\n \n {\n !items.length\n ? (\n
  • \n \n {noItemsMessage}\n \n
  • \n )\n : items.map((item, index) => (\n \n \n \n ))\n }\n
    \n );\n}\n\nSelectableList.propTypes = {\n items: PropTypes.instanceOf(Array),\n itemTemplate: PropTypes.oneOfType([\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n PropTypes.func,\n ]),\n value: PropTypes.instanceOf(Array),\n onChange: PropTypes.func,\n primaryKey: PropTypes.string,\n noItemsMessage: PropTypes.string,\n checkboxalticon: PropTypes.oneOfType([\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n theme: PropTypes.string,\n wrapperClassName: PropTypes.string,\n};\n\nSelectableList.defaultProps = {\n items: [],\n primaryKey: 'id',\n value: [],\n};\n\nexport default SelectableList;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nfunction Textarea({\n id,\n input,\n label,\n note,\n error,\n theme,\n labelwidth,\n value,\n readOnly,\n wrapperClassName,\n ...rest\n}) {\n const classes = [\n 'tyk-form-group',\n wrapperClassName,\n ...(theme ? theme.split(' ').map((t) => `tyk-form-group--${t}`) : []),\n labelwidth && 'tyk-form-group--label-has-width',\n error && 'has-error',\n ].filter(Boolean).join(' ');\n\n const getLabelStyles = () => {\n if (labelwidth) return { flexBasis: labelwidth };\n return {};\n };\n\n const getNonLabelWidth = () => {\n if (labelwidth) return { flexBasis: `calc(100% - ${labelwidth} - 20px)` };\n return {};\n };\n\n function getTextareaError() {\n return (error && error !== 'true' && error !== 'false')\n ? (\n

    \n { error }\n

    \n )\n : null;\n }\n\n return (\n
    \n {\n label\n ? \n : null\n }\n {!readOnly && (\n \n \n { value }\n \n {\n note\n ?

    { note }

    \n : null\n }\n {getTextareaError()}\n
    \n )}\n {readOnly &&
    {value || '-'}
    }\n \n );\n}\n\nTextarea.propTypes = {\n /** Disable the component */\n disabled: PropTypes.bool,\n /** Displays only the text value of the component, or \"-\" if no value is set */\n readOnly: PropTypes.bool,\n input: PropTypes.instanceOf(Object),\n /** Set an error message for the component and the component is rendered in the error state */\n error: PropTypes.string,\n /** Adds a label to the component */\n label: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.func,\n PropTypes.string,\n ]),\n /** Sets the width of the label */\n labelwidth: PropTypes.string,\n /** Set a name for the component */\n name: PropTypes.string,\n /** Adds additional information under the component */\n note: PropTypes.string,\n /** Callback function executed on value change */\n onChange: PropTypes.func,\n id: PropTypes.string,\n /** Set a theme for the component */\n theme: PropTypes.string,\n /** Set the value of the component */\n value: PropTypes.string,\n /** CSS classes added to the wrapper of the component */\n wrapperClassName: PropTypes.string,\n};\n\nexport default Textarea;\n","import { createContext } from 'react';\n\nconst ToggleContext = createContext();\n\nexport default ToggleContext;\n","import React, { Component, createRef } from 'react';\nimport PropTypes from 'prop-types';\n\nclass ToggleItem extends Component {\n static getNotchCssClasses(context) {\n return ['tyk-toggle__item-notch', `tyk-toggle__item-notch--${context.type}`].join(' ');\n }\n\n constructor(props) {\n super(props);\n\n this.itemRef = createRef();\n }\n\n componentDidMount() {\n const { context, value } = this.props;\n\n if (context.value === value) {\n context.saveSelectedRef(this.itemRef);\n }\n }\n\n componentDidUpdate(prevProps) {\n const { context, value } = this.props;\n\n if (prevProps.context.value !== context.value && context.value === value) {\n context.saveSelectedRef(this.itemRef);\n }\n }\n\n onChange(event) {\n const { context, value } = this.props;\n const { disabled, readOnly } = context;\n\n if (disabled || readOnly) {\n return;\n }\n\n context.onItemSelected(context.type === 'single' ? !context.value : value, event);\n }\n\n render() {\n const {\n context, label, name, value,\n } = this.props;\n return (\n
  • \n \n
  • \n );\n }\n}\n\nToggleItem.propTypes = {\n context: PropTypes.instanceOf(Object),\n label: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.func,\n PropTypes.string,\n ]),\n name: PropTypes.string,\n value: PropTypes.string,\n};\n\nexport default ToggleItem;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport ToggleContext from './ToggleContext';\nimport ToggleItem from './ToggleItem';\n\nconst ToggleItemWrapper = React.forwardRef((props, ref) => (\n \n {(context) => (\n \n {props.children}\n \n )}\n \n));\n\nToggleItemWrapper.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n};\n\nexport default ToggleItemWrapper;\n","import React, {\n useCallback, useMemo, useRef, useState,\n} from 'react';\nimport PropTypes from 'prop-types';\n\nimport ToggleContext from './js/ToggleContext';\nimport ToggleItemWrapper from './js/ToggleItemWrapper';\n\nfunction Toggle({\n className,\n disabled,\n readOnly,\n size,\n theme,\n direction,\n onDark,\n wrapperClassName = '',\n onChange,\n labelwidth,\n label,\n separated,\n children,\n type,\n value,\n error,\n}) {\n const [selectedRef, setSelectedRef] = useState(null);\n const notchRef = useRef();\n const toggleRef = useRef();\n\n const classes = [\n wrapperClassName,\n className,\n 'tyk-toggle',\n `tyk-toggle--disabled-${readOnly || disabled}`,\n `tyk-toggle--${size || 'md'}`,\n `tyk-toggle--${theme}`,\n `tyk-toggle--${direction}`,\n onDark && 'tyk-toggle--on-dark',\n ].filter(Boolean).join(' ');\n\n const onItemSelected = useCallback((itemValue, event) => {\n if (!onChange) return;\n onChange(itemValue, event);\n }, [onChange]);\n\n const getLabelStyles = useCallback(() => {\n if (labelwidth) return { flexBasis: labelwidth };\n return {};\n }, [labelwidth]);\n\n const positionNotch = useCallback(() => {\n if (!selectedRef || separated) {\n return {};\n }\n\n const selectedWidth = selectedRef.current.offsetWidth;\n const selectedOffset = selectedRef.current.getBoundingClientRect().left;\n const toggleOffset = toggleRef.current.getBoundingClientRect().left;\n const left = selectedOffset - toggleOffset;\n\n return {\n left: `${left + 4}px`,\n width: `${selectedWidth - 8}px`,\n };\n }, [selectedRef, separated]);\n\n const contextValue = useMemo(() => ({\n disabled,\n readOnly,\n onItemSelected,\n saveSelectedRef: setSelectedRef,\n separated,\n type,\n value,\n }), [disabled, readOnly, onItemSelected, separated, type, value]);\n\n return (\n <>\n
    \n \n {\n label\n ? \n : null\n }\n
      \n { children }\n {\n type === 'multiple' && !separated\n ?
    • \n : null\n }\n
    \n \n
    \n {\n error && (\n

    \n { error }\n

    \n )\n }\n \n );\n}\n\nToggle.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n className: PropTypes.string,\n disabled: PropTypes.bool,\n readOnly: PropTypes.bool,\n error: PropTypes.string,\n onChange: PropTypes.func,\n label: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.func,\n PropTypes.string,\n ]),\n labelwidth: PropTypes.string,\n theme: PropTypes.string,\n type: PropTypes.string, // single || multiple\n size: PropTypes.string,\n separated: PropTypes.bool,\n direction: PropTypes.string,\n value: PropTypes.oneOfType([\n PropTypes.bool,\n PropTypes.string,\n ]),\n onDark: PropTypes.bool,\n wrapperClassName: PropTypes.string,\n};\n\nToggle.defaultProps = {\n separated: false,\n theme: 'primary',\n type: 'single',\n direction: 'row',\n};\n\nToggle.Item = ToggleItemWrapper;\n\nexport default Toggle;\n","export const stringToTokenString = (value, options) => {\n let tempStr = value;\n options.forEach((option) => {\n tempStr = tempStr.replaceAll(option.id, `__TOKEN__${option.id}__TOKEN__`);\n });\n return tempStr;\n};\n\n\nexport const setCursorPos = (ref, pos) => {\n setTimeout(() => {\n ref.current.setSelectionRange(pos, pos);\n }, 20);\n};\n","import React, { useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { stringToTokenString, setCursorPos } from './service';\n\nfunction StringInput({\n setShowOptions,\n tokenValue,\n disabled,\n placeholder,\n tokens,\n dropdownTriggerKey,\n setStringBuilderHeight,\n stringBuilderHeight,\n setTokenString,\n tokenString,\n showOptions,\n options,\n setTokenValue,\n inputRef,\n setInputInFocus,\n invalidTokenRegex,\n name,\n contextMaxLength,\n}) {\n const [isPasteEvent, setIsPasteEvent] = useState(false);\n\n useEffect(() => {\n // Set height if initial value exists\n if (tokenValue) {\n const tokenLen = tokenValue.length > 50 ? tokenValue.length / 5 : 0;\n setStringBuilderHeight(inputRef.current.scrollHeight + tokenLen);\n }\n }, []);\n\n /**\n *\n * @param {*} e : Event\n * Handle delete event (fn + delete on mac)\n */\n\n const handleDelete = (e) => {\n const { selectionEnd } = e.target;\n if (selectionEnd === tokenValue.length) {\n // - Cursor is at the end of input\n return;\n }\n\n const stringBeforeCursor = tokenValue.substring(0, selectionEnd);\n const stringAfterCursor = tokenValue.slice(selectionEnd);\n\n const tokenStringForStringAfterCursor = stringToTokenString(\n stringAfterCursor,\n options,\n );\n if (tokenStringForStringAfterCursor.startsWith('__TOKEN__')) {\n // If string before delete is a token\n const splitTokens = tokenStringForStringAfterCursor.split(/__TOKEN__(.*?)__TOKEN__/g).filter((t) => t !== '');\n const firstToken = splitTokens[0];\n const newTokenValue = `${stringBeforeCursor}${stringAfterCursor.substr(firstToken.length)}`;\n const newTokenizedString = stringToTokenString(newTokenValue, options);\n setTokenString(newTokenizedString);\n setCursorPos(inputRef, selectionEnd);\n return;\n }\n const newTokenValue = `${stringBeforeCursor}${stringAfterCursor.substr(1)}`;\n const newTokenizedString = stringToTokenString(newTokenValue, options);\n setTokenString(newTokenizedString);\n setCursorPos(inputRef, selectionEnd);\n };\n\n /**\n *\n * @param {*} e : Event\n * Handle backspace event\n * - If the last thing added by user was a token prevent default and\n * remove the entire token instead of single character, else continue with default behaviour\n * - Also handles if the string is manipulated from middle\n */\n const handleBackSpace = (e) => {\n const { selectionEnd } = e.target;\n\n // -- START :: Handle backspacing when cursor is at the end of the string\n if (selectionEnd === tokenValue.length) {\n const lastToken = tokens[tokens?.length - 2];\n const lastCharsInString = tokenValue.slice(-lastToken?.length);\n if (lastToken === lastCharsInString) {\n e.preventDefault();\n setTokenString(\n tokenString.slice(0, -`__TOKEN__${lastCharsInString}__TOKEN__`.length),\n );\n return;\n }\n if (tokenValue.endsWith(' ')) {\n const invalidToken = tokenValue.match(invalidTokenRegex);\n const newTokenValue = tokenValue.slice(0, -` ${invalidToken[invalidToken.length - 1]} `.length);\n const newTokenStr = stringToTokenString(newTokenValue, options);\n setTokenString(newTokenStr);\n return;\n }\n setTokenString(tokenString.slice(0, -1));\n return;\n }\n // -- END :: Handle backspacing when cursor is at the end of the string\n\n // -- START :: Handle backspacing when cursor is in between\n const stringBeforeCursor = tokenValue.substring(0, selectionEnd);\n const stringAfterCursor = tokenValue.slice(selectionEnd);\n\n const tokenStringForStringBeforeCursor = stringToTokenString(stringBeforeCursor, options);\n\n // -- IF the string before cursor is a token\n if (tokenStringForStringBeforeCursor.endsWith('__TOKEN__')) {\n e.preventDefault();\n const splitTokens = tokenStringForStringBeforeCursor.split(/__TOKEN__(.*?)__TOKEN__/g);\n const lastToken = splitTokens[splitTokens.length - 2];\n const newTokenValue = `${stringBeforeCursor.slice(0, -(lastToken.length))}${stringAfterCursor}`;\n const newTokenizedString = stringToTokenString(newTokenValue, options);\n setTokenString(newTokenizedString);\n setCursorPos(inputRef, selectionEnd - lastToken.length);\n return;\n }\n\n const invalidToken = stringBeforeCursor.match(invalidTokenRegex);\n // If Token is Invalid Token\n if (invalidToken?.[0] && invalidToken.length === 1) {\n e.preventDefault();\n const newTokenValue = `${stringBeforeCursor.replaceAll(invalidTokenRegex, '').trim()}${stringAfterCursor}`;\n const newTokenizedString = stringToTokenString(newTokenValue, options);\n setTokenString(newTokenizedString);\n setCursorPos(inputRef, selectionEnd - ` ${invalidToken[0]} `.length);\n return;\n }\n\n const newTokenValue = `${stringBeforeCursor.slice(\n 0,\n -1,\n )}${stringAfterCursor}`;\n const newTokenizedString = stringToTokenString(newTokenValue, options);\n setTokenString(newTokenizedString);\n setCursorPos(inputRef, selectionEnd - 1);\n // -- END :: Handle backspacing when cursor is in between\n };\n\n const addCharacterToTokenString = (text, selectionStart) => {\n // Cursor is at end\n if (selectionStart - 1 === tokenValue.length) {\n setTokenString(`${tokenString}${text}`);\n return;\n }\n\n // Cursor is in middle of string\n const newTokenValue = tokenValue.slice(0, selectionStart - 1)\n + text\n + tokenValue.slice(selectionStart - 1);\n\n const newTokenizedString = stringToTokenString(newTokenValue, options);\n setTokenString(newTokenizedString);\n };\n\n // -- START :: Handle highlighted text deletion / replacement\n const handleTextSelection = (e, selectedText, key) => {\n const allowedKeys = ['Delete', 'Backspace'];\n if (key.length > 1 && allowedKeys.indexOf(key) === -1) {\n return;\n }\n const { selectionEnd, selectionStart } = e.target;\n const substitute = key.length > 1 ? '' : key;\n if (selectedText.length > 1) {\n const newStr = tokenValue.substring(0, selectionStart)\n + substitute\n + tokenValue.substring(selectionEnd);\n const newTokenStr = stringToTokenString(newStr, options);\n setTokenString(newTokenStr);\n setCursorPos(inputRef, substitute.length ? selectionStart + 1 : selectionStart);\n }\n };\n // -- END :: Handle highlighted text deletion / replacement\n\n const handleKeyDown = (e) => {\n const { key } = e;\n const { selectionEnd, selectionStart, value } = e.target;\n const selectedText = value.substring(selectionStart, selectionEnd);\n\n if (key === dropdownTriggerKey && !showOptions) {\n e.preventDefault();\n setShowOptions(true);\n return;\n }\n if (key === 'Enter') {\n e.preventDefault();\n return;\n }\n if (key === 'Backspace') {\n e.preventDefault();\n handleBackSpace(e);\n }\n if (key === 'Delete') {\n e.preventDefault();\n handleDelete(e);\n }\n if (e.metaKey && key === 'x') {\n setTokenString('');\n }\n if (selectedText) {\n e.preventDefault();\n handleTextSelection(e, selectedText, key);\n }\n };\n\n const handleOnChange = (e) => {\n const { target } = e;\n const { selectionStart, value } = target;\n\n if (showOptions) {\n setShowOptions(false);\n }\n setTokenValue(value);\n if (value && !isPasteEvent) {\n const text = value.charAt(selectionStart - 1);\n addCharacterToTokenString(text, selectionStart);\n }\n setIsPasteEvent(false);\n };\n\n const handlePasteEvent = (e) => {\n e.preventDefault();\n const { clipboardData } = e;\n const { selectionStart, selectionEnd } = e.target;\n setIsPasteEvent(true);\n let pasteString = clipboardData.getData('text/plain');\n if (selectionStart !== selectionEnd) {\n pasteString = tokenValue.slice(0, selectionStart)\n + pasteString\n + tokenValue.slice(selectionEnd, tokenValue.length);\n const newTokenString = stringToTokenString(pasteString, options);\n setTokenString(newTokenString);\n return;\n }\n const newTokenString = stringToTokenString(pasteString, options);\n addCharacterToTokenString(newTokenString, selectionStart);\n };\n\n const handleOnFocus = () => {\n setInputInFocus(true);\n };\n\n return (\n handleOnChange(e)}\n onKeyDown={(e) => handleKeyDown(e)}\n placeholder={placeholder}\n name={name}\n ref={inputRef}\n style={{ height: `${stringBuilderHeight}px` }}\n maxLength={contextMaxLength}\n onPaste={handlePasteEvent}\n onFocus={handleOnFocus}\n onBlur={() => setInputInFocus(false)}\n />\n );\n}\n\nStringInput.propTypes = {\n setShowOptions: PropTypes.func,\n tokenValue: PropTypes.string,\n disabled: PropTypes.bool,\n placeholder: PropTypes.string,\n tokenString: PropTypes.string,\n stringBuilderHeight: PropTypes.number,\n dropdownTriggerKey: PropTypes.string,\n setStringBuilderHeight: PropTypes.func,\n setTokenString: PropTypes.func,\n setTokenValue: PropTypes.func,\n setInputInFocus: PropTypes.func,\n showOptions: PropTypes.bool,\n tokens: PropTypes.arrayOf(PropTypes.string),\n options: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.string.isRequired,\n name: PropTypes.string.isRequired,\n className: PropTypes.string,\n desc: PropTypes.string,\n }),\n ),\n inputRef: PropTypes.instanceOf(Object),\n invalidTokenRegex: PropTypes.instanceOf(RegExp),\n name: PropTypes.string,\n contextMaxLength: PropTypes.number,\n};\n\nexport { StringInput };\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Tooltip from '../../../../components/Tooltip';\nimport Icon from '../../../../components/Icon';\n\n\nconst InvalidToken = (props) => {\n const { token, findInvalidTokenSubstitute } = props;\n return (\n findInvalidTokenSubstitute(token)}\n onKeyDown={() => {}}\n >\n \n \n {`${token}`}\n \n \n \n \n );\n};\n\nInvalidToken.propTypes = {\n token: PropTypes.string,\n findInvalidTokenSubstitute: PropTypes.func,\n};\n\nexport default InvalidToken;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport InvalidToken from './invalid-token';\n\nexport const TokenizedString = (props) => {\n const {\n tokens,\n options,\n disabled,\n invalidTokenRegex,\n findInvalidTokenSubstitute,\n } = props;\n\n /**\n * hasDuplicates : used to avoid duplicate keys in map :\n * having duplicate tokens causes invalid unpredictable react renders.\n * eg: http://alpaha.com/{{.agruments.id}}/id={{.arguments.id}}\n * `{{.arguments.id}}` is repeated twice : maybe edge case but quite possible\n */\n\n const hasDuplicates = new Set(tokens).size !== tokens.length;\n\n const allTokens = tokens\n && tokens.map((token) => {\n if (options) {\n const matchedOption = options.find(option => option.id === token);\n // if invalid token\n if (invalidTokenRegex && !matchedOption) {\n const matchedTokens = token.replaceAll(' ', '').split(invalidTokenRegex);\n if (matchedTokens?.length > 1) {\n return (\n \n {matchedTokens.map((tkn) => {\n if (tkn.match(invalidTokenRegex)) {\n return (\n \n );\n }\n return ({`${tkn} `});\n })}\n \n );\n }\n }\n // if token matches option\n\n if (matchedOption) {\n return (\n \n {matchedOption.id}\n \n );\n }\n }\n return (\n {token}\n );\n });\n return (\n \n {allTokens}\n \n );\n};\n\nTokenizedString.propTypes = {\n tokens: PropTypes.arrayOf(PropTypes.string),\n options: PropTypes.arrayOf(PropTypes.instanceOf(Object)),\n disabled: PropTypes.bool,\n invalidTokenRegex: PropTypes.instanceOf(RegExp),\n findInvalidTokenSubstitute: PropTypes.func,\n};\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\n\nimport FloatingContainer from '../../../../components/FloatingContainer';\n\nexport const OptionsList = ({\n options,\n showOptions,\n handleOptionSelection,\n containerRef,\n getThemeClasses,\n setShowOptions,\n allowSearch,\n initialSearchValue,\n}) => {\n const [filterValue, setFilterValue] = useState(initialSearchValue);\n const [filteredOptions, setFilteredOptions] = useState(options);\n\n useEffect(() => {\n setFilterValue(initialSearchValue);\n }, [initialSearchValue]);\n\n useEffect(() => {\n if (filterValue === '') {\n setFilteredOptions(options);\n return;\n }\n const newFilteredOptions = options.filter(\n option => option.name.toLowerCase().includes(filterValue.toLowerCase()),\n );\n setFilteredOptions(newFilteredOptions);\n }, [filterValue]);\n\n useEffect(() => {\n setFilteredOptions(options);\n }, [options]);\n\n if (!showOptions) {\n return null;\n }\n\n return (\n <>\n \n {allowSearch && (\n
    \n {\n setFilterValue(e.target.value);\n }}\n onKeyDown={(e) => {\n if (\n e.key === 'Escape'\n || e.key === 'ArrowUp'\n // || e.key === 'ArrowDown'\n || e.key === 'Enter'\n ) {\n setShowOptions(false);\n }\n }}\n />\n
    \n )}\n
      \n {filteredOptions.map(option => (\n handleOptionSelection(option)}\n >\n \n {option.name}\n \n {option.desc && (\n \n   :  \n {option.desc}\n \n )}\n \n ))}\n
    \n \n \n );\n};\n\nOptionsList.propTypes = {\n options: PropTypes.arrayOf(Object),\n showOptions: PropTypes.bool,\n handleOptionSelection: PropTypes.func,\n getThemeClasses: PropTypes.func,\n setShowOptions: PropTypes.func,\n containerRef: PropTypes.instanceOf(Object),\n allowSearch: PropTypes.bool,\n initialSearchValue: PropTypes.string,\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nexport const StringBuilderFooter = (props) => {\n const {\n note, error, inputInFocus, stringBuilderHeight, dropdownTriggerKey,\n } = props;\n return (\n \n {inputInFocus && !error && (\n

    \n \n Enter\n {dropdownTriggerKey}\n to add any parameter\n \n

    \n )}\n {note &&

    {note}

    }\n {error && error !== 'true' && error !== 'false' && (\n

    {error}

    \n )}\n \n );\n};\n\nStringBuilderFooter.propTypes = {\n note: PropTypes.string,\n error: PropTypes.string,\n dropdownTriggerKey: PropTypes.string,\n inputInFocus: PropTypes.bool,\n stringBuilderHeight: PropTypes.number,\n};\n","import React, { useEffect, useState, useRef } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { usePrevious } from '../../../hooks';\n\nimport { StringInput } from './js/string-input';\nimport { TokenizedString } from './js/tokenized-string';\nimport { OptionsList } from './js/options-list';\nimport { StringBuilderFooter } from './js/string-builder-footer';\nimport { stringToTokenString, setCursorPos } from './js/service';\n\n/**\n * - String builder component used to build one single string using the given options.\n * - This component can be useful from UX perspective,\n * when user needs to build any string which might contain complex values which are error prone.\n * - `` abstracts the complex values by supplying them\n * as selectable options in more user friendly format with description for user.\n * - Wire-frames : https://miro.com/app/board/o9J_kipLWwA=/\n */\n\nfunction StringBuilder(props) {\n const {\n options,\n onChange,\n value,\n theme,\n error,\n disabled,\n readOnly,\n note,\n label,\n labelwidth,\n placeholder,\n allowSearch,\n dropdownTriggerKey,\n invalidTokenRegex,\n name,\n wrapperClassName = '',\n } = props;\n const [tokenValue, setTokenValue] = useState(value);\n const [stringBuilderHeight, setStringBuilderHeight] = useState();\n const [showOptions, setShowOptions] = useState(false);\n const [tokenString, setTokenString] = useState(stringToTokenString(value, options));\n const [contextMaxLength, setContentMaxLength] = useState(\n tokenValue.length + 5,\n );\n const [tokens, setTokens] = useState([]);\n const [prevTokenValue, setPrevTokenValue] = useState();\n const [inputInFocus, setInputInFocus] = useState(false);\n const [initialSearchValue, setInitialSearchValue] = useState('');\n const [selectedInvalidToken, setSelectedInvalidToken] = useState(null);\n\n const prevTokenString = usePrevious(tokenString);\n\n const containerRef = useRef();\n const inputRef = useRef();\n\n // Execute callback on value change\n useEffect(() => {\n if (onChange) {\n onChange(tokenValue.replaceAll(' ', ''));\n }\n }, [tokenValue]);\n\n useEffect(() => {\n const tempVal = invalidTokenRegex ? value.replaceAll(invalidTokenRegex, ' $& ') : value;\n setTokenValue(() => tempVal);\n setTokenString(() => stringToTokenString(tempVal, options));\n }, [value]);\n\n /**\n * Split string into tokens and set string value w/o __TOKEN__\n * Tokens are used to render a styled tokens using ``\n */\n useEffect(() => {\n const splitTokens = tokenString.split(/__TOKEN__(.*?)__TOKEN__/g);\n const splitTokensStr = splitTokens.join('');\n setTokens(() => splitTokens);\n setTokenValue(() => splitTokensStr);\n setPrevTokenValue(() => splitTokensStr);\n }, [tokenString]);\n\n useEffect(() => {\n // Auto Grow Input\n if (contextMaxLength - 3 < tokenValue.length) {\n const newHeight = inputRef.current.scrollHeight + 3;\n setStringBuilderHeight(() => newHeight);\n setContentMaxLength(() => contextMaxLength + 25);\n }\n }, [tokenString, tokenValue]);\n\n /**\n *\n * @param {*} option : Option object for selected option from dropdown\n * When user selects an option append and prepend `__TOKEN__` to detect the token,\n * so they can be styled or manipulated later\n */\n const handleOptionSelection = (option) => {\n let newInput = '';\n const { selectionStart } = inputRef.current;\n if (prevTokenString && prevTokenString !== value && !selectedInvalidToken) {\n /* eslint prefer-destructuring: [\"error\", {VariableDeclarator: {object: true}}] */\n newInput = prevTokenString + tokenValue.split(prevTokenValue)[1];\n }\n let tokenizedString = '';\n // Adding token in Middle\n if (selectionStart !== tokenValue.length && !selectedInvalidToken) {\n const newTokenValue = tokenValue.slice(0, selectionStart)\n + option.id\n + tokenValue.slice(selectionStart);\n tokenizedString = stringToTokenString(newTokenValue, options);\n setCursorPos(inputRef, selectionStart + option.id.length);\n } else {\n tokenizedString = `${newInput || tokenValue}__TOKEN__${\n option.id\n }__TOKEN__`;\n }\n if (selectedInvalidToken) {\n tokenizedString = tokenString.replace(\n ` ${selectedInvalidToken} `,\n `__TOKEN__${option.id}__TOKEN__`,\n );\n setSelectedInvalidToken(() => null);\n setInitialSearchValue(() => '');\n }\n setTokenString(() => tokenizedString);\n setShowOptions(() => false);\n setTimeout(() => {\n inputRef.current.focus();\n }, 20);\n };\n\n const getThemeClasses = () => {\n const themes = theme ? theme.split(' ') : [];\n return themes.map((iTheme) => `tyk-form-group--${iTheme}`);\n };\n\n const getCssClasses = () => [\n 'tyk-form-group',\n ...getThemeClasses(),\n error && 'has-error',\n disabled && 'disabled',\n ]\n .filter(Boolean)\n .join(' ');\n\n const findInvalidTokenSubstitute = (invalidToken) => {\n setSelectedInvalidToken(() => invalidToken);\n setInitialSearchValue(() => invalidToken.replace(/[^a-zA-Z ]/g, ''));\n setShowOptions(() => true);\n };\n\n return (\n
    \n
    \n {label && (\n \n )}\n {!readOnly && (\n
    \n \n \n \n \n \n
    \n
    \n )}\n {\n readOnly &&
    {value || '-'}
    \n }\n
    \n \n );\n}\n\nStringBuilder.propTypes = {\n /** Options to render in the list */\n options: PropTypes.arrayOf(\n PropTypes.shape({\n /** id is the value that will be appended to the string on selection */\n id: PropTypes.string.isRequired,\n /** name of option (view) */\n name: PropTypes.string.isRequired,\n /** to style / highlight the token */\n className: PropTypes.string,\n /** description of option */\n desc: PropTypes.string,\n }),\n ),\n /** Callback executed on change of string value */\n onChange: PropTypes.func,\n /** Initial value */\n value: PropTypes.string,\n /** Disable input */\n disabled: PropTypes.bool,\n /** Read Only prop removes the form element and displays just the value */\n readOnly: PropTypes.bool,\n /** Show error state (w/ or w/o message) */\n error: PropTypes.string,\n /** Component theme */\n theme: PropTypes.string,\n /** Footnote for component */\n note: PropTypes.string,\n /** Label for component */\n label: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.func,\n PropTypes.string,\n ]),\n /** Label Width for component */\n labelwidth: PropTypes.string,\n /** Placeholder for component */\n placeholder: PropTypes.string,\n /** Key To trigger dropdown */\n dropdownTriggerKey: PropTypes.string,\n /** Regex to detect invalid tokens in the value */\n invalidTokenRegex: PropTypes.instanceOf(RegExp),\n /** Allow users to search from options */\n allowSearch: PropTypes.bool,\n name: PropTypes.string,\n wrapperClassName: PropTypes.string,\n};\n\nStringBuilder.defaultProps = {\n onChange: null,\n value: '',\n options: [],\n theme: 'default',\n};\n\nexport default StringBuilder;\n","const config = {\n FORM_DEBOUNCE: 200,\n};\n\nexport function setConfig(key, val) {\n config[key] = val;\n}\n\nexport default config;\n","import React, { useCallback, useEffect, useState } from 'react';\n\nimport config from '../config/config';\n\nfunction getValueFromPath(obj, path) {\n // turn 'aaa.qqq[2].bbb[5][3].mmm' into ['aaa', 'qqq', '2', 'bbb', '5', '3', 'mmm']\n const indexes = path.split(/[\\][.]/).filter(Boolean);\n return indexes.reduce((acc, v) => (acc ? acc[v] : acc), obj);\n}\n\nfunction debounce(f, limit) {\n let timeoutId;\n return (...args) => {\n clearTimeout(timeoutId);\n timeoutId = setTimeout(f, limit, ...args);\n };\n}\n\n/* eslint-disable react/prop-types, react/function-component-definition */\n/**\n * A wrapper function that \"prepares\" a tyk-ui form component to be used with the formik library.\n * It handles things like setting the value of the component, change events, error state,\n * and also has a default debounce time for when the change event is triggered.\n */\nconst wrapper = (Component, options) => ({ field, form, ...properties }) => {\n const DEFAULT_DEBOUNCE_TIME_MS = typeof config.FORM_DEBOUNCE === 'number' ? config.FORM_DEBOUNCE : 200;\n const [myValue, setMyValue] = useState(field.value);\n const opts = {\n getOnChangeProps: () => ({}),\n hasIsFieldProp: false,\n ...options,\n };\n\n const executeDebounced = useCallback((() => {\n const fn = (f) => f();\n if (\n properties.debounce === false\n || (config.FORM_DEBOUNCE === false && !properties.debounce)\n ) {\n return fn;\n }\n const timeout = typeof properties.debounce === 'number'\n ? properties.debounce\n : DEFAULT_DEBOUNCE_TIME_MS;\n return debounce(fn, timeout);\n })(), []);\n\n const getValue = (v) => {\n if (v && v.target) {\n if (v.target.nodeName === 'INPUT' && (v.target.type === 'checkbox' || v.target.type === 'radio')) {\n return v.target.checked;\n }\n return v.target.value;\n }\n return v;\n };\n\n const onChange = (valueOrEvent) => {\n const value = getValue(valueOrEvent);\n const onChangeProps = opts.getOnChangeProps(value, field, form, properties);\n\n const newValue = onChangeProps.value || properties.value || value;\n executeDebounced(() => {\n if (typeof properties.onChange === 'function') {\n properties.onChange(newValue);\n }\n field.onChange({ target: { name: field.name, value: newValue, ...onChangeProps } });\n });\n setMyValue(newValue);\n };\n\n const formError = (getValueFromPath(form.touched, field.name) || Boolean(form.submitCount))\n && getValueFromPath(form.errors, field.name);\n const error = typeof formError === 'string' ? formError : '';\n\n useEffect(() => {\n setMyValue(field.value);\n }, [field.value]);\n\n // eslint-disable-next-line no-param-reassign\n if (form.status?.disabled) properties.disabled = true;\n\n const componentProps = { ...properties };\n delete componentProps.debounce;\n\n return (\n \n );\n};\n\nexport default wrapper;\n","import wrapper from '../../../utils/formik';\nimport Checkbox from '../../components/Checkbox';\n\nexport default wrapper(Checkbox, {\n getOnChangeProps: (value) => ({\n checked: value,\n }),\n});\n","import wrapper from '../../../utils/formik';\nimport CodeEditor from '../../components/CodeEditor';\n\nexport default wrapper(CodeEditor);\n","import wrapper from '../../../utils/formik';\nimport Combobox from '../../components/Combobox';\n\nexport default wrapper(Combobox);\n","import wrapper from '../../../utils/formik';\nimport Combobox2 from '../../components/Combobox2';\n\nexport default wrapper(Combobox2);\n","import wrapper from '../../../utils/formik';\nimport DatePicker from '../../components/DatePicker';\n\nexport default wrapper(DatePicker);\n","import wrapper from '../../../utils/formik';\nimport EditableList from '../../components/EditableList';\n\nexport default wrapper(EditableList, {\n getOnChangeProps: value => ({ value: value || [] }),\n});\n","import wrapper from '../../../utils/formik';\nimport EditableList2 from '../../components/EditableList2';\n\nexport default wrapper(EditableList2);\n","import wrapper from '../../../utils/formik';\nimport FileInput from '../../components/FileInput';\n\nexport default wrapper(FileInput);\n","import wrapper from '../../../utils/formik';\nimport Input from '../../components/Input';\n\nexport default wrapper(Input, { hasIsFieldProp: true });\n","import wrapper from '../../../utils/formik';\nimport Input2 from '../../components/Input2';\n\nexport default wrapper(Input2);\n","import wrapper from '../../../utils/formik';\nimport MultiSelect from '../../components/Multiselect';\n\nexport default wrapper(MultiSelect);\n","import wrapper from '../../../utils/formik';\nimport Radio from '../../components/Radio';\n\nexport default wrapper(Radio, {\n getOnChangeProps: (value, field, form, properties) => ({\n checked: value === properties.value,\n value: properties.value,\n }),\n});\n","import wrapper from '../../../utils/formik';\nimport Select from '../../components/Select';\n\nexport default wrapper(Select, { hasIsFieldProp: true });\n","import wrapper from '../../../utils/formik';\nimport SelectableList from '../../components/SelectableList';\n\nexport default wrapper(SelectableList);\n","import wrapper from '../../../utils/formik';\nimport Textarea from '../../components/Textarea';\n\nexport default wrapper(Textarea);\n","import wrapper from '../../../utils/formik';\nimport Toggle from '../../components/Toggle';\n\nexport default wrapper(Toggle);\n","import wrapper from '../../../utils/formik';\nimport StringBuilder from '../../components/StringBuilder';\n\nexport default wrapper(StringBuilder);\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { fromJS } from 'immutable';\n\nimport CodeEditor from '../../components/CodeEditor';\n\nexport default class FieldCodeEditor extends Component {\n static propTypes = {\n input: PropTypes.instanceOf(Object),\n meta: PropTypes.instanceOf(Object),\n validationmessages: PropTypes.instanceOf(Object),\n };\n\n constructor(props) {\n super(props);\n\n this.handleOnChange = this.handleOnChange.bind(this);\n }\n\n getInputError() {\n const { meta, validationmessages } = this.props;\n const { touched, error, warning } = meta;\n let message = null;\n\n if (touched && error && validationmessages[error]) {\n message = validationmessages[error];\n } else if (touched && warning) {\n message = 'warning';\n }\n\n return message;\n }\n\n handleOnChange(value) {\n const { input } = this.prop;\n const { onChange } = input;\n\n onChange(fromJS(value));\n }\n\n render() {\n const { input, ...rest } = this.props;\n\n return (\n \n );\n }\n}\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { fromJS } from 'immutable';\n\nimport Combobox from '../../components/Combobox';\n\nexport default class FieldCombobox extends Component {\n static propTypes = {\n meta: PropTypes.instanceOf(Object),\n input: PropTypes.instanceOf(Object),\n validationmessages: PropTypes.instanceOf(Object),\n }\n\n constructor(props) {\n super(props);\n\n this.handleOnChange = this.handleOnChange.bind(this);\n }\n\n getComboboxError() {\n const { meta, validationmessages } = this.props;\n const { touched, error, warning } = meta;\n let message = null;\n\n if (touched && error && validationmessages[error]) {\n message = validationmessages[error];\n } else if (touched && warning) {\n message = 'warning';\n }\n\n return message;\n }\n\n handleOnChange(value) {\n const { input } = this.props;\n const { onChange } = input;\n\n onChange(fromJS(value));\n }\n\n render() {\n const { ...props } = this.props;\n\n return (\n \n );\n }\n}\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { fromJS } from 'immutable';\n\nimport Dropdown from '../../components/Dropdown';\n\nexport default class FieldDropdown extends Component {\n static propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n input: PropTypes.instanceOf(Object),\n };\n\n constructor(props) {\n super(props);\n\n this.handleOnChange = this.handleOnChange.bind(this);\n }\n\n handleOnChange(value) {\n const { input } = this.props;\n const { onChange } = input;\n\n onChange(fromJS(value));\n }\n\n render() {\n const {\n children,\n input,\n ...rest\n } = this.props;\n\n return (\n \n {children}\n \n );\n }\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport Pagination from '../../components/Pagination';\n\nconst FieldPagination = (props) => {\n const { input, ...rest } = props;\n\n return (\n \n );\n};\n\nFieldPagination.propTypes = {\n input: PropTypes.instanceOf(Object),\n};\n\nexport default FieldPagination;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { fromJS } from 'immutable';\n\nimport Combobox2 from '../../components/Combobox2';\n\nconst FieldCombobox2 = (props) => {\n const { input, meta, validationmessages } = props;\n\n const getComboboxError = () => {\n const { touched, error, warning } = meta;\n let message = null;\n\n if (touched && error && validationmessages[error]) {\n message = validationmessages[error];\n } else if (touched && warning) {\n message = 'warning';\n }\n return message;\n };\n\n const handleOnChange = (value) => {\n const { onChange } = input;\n onChange(fromJS(value));\n };\n\n return (\n \n );\n};\n\nFieldCombobox2.propTypes = {\n meta: PropTypes.instanceOf(Object),\n input: PropTypes.instanceOf(Object),\n validationmessages: PropTypes.instanceOf(Object),\n};\n\nexport default FieldCombobox2;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { fromJS } from 'immutable';\n\nimport DatePicker from '../../components/DatePicker';\n\nconst FormDatePicker = (props) => {\n const {\n input,\n meta,\n validationmessages,\n ...rest\n } = props;\n\n const getDatePickerError = () => {\n const { touched, error } = meta;\n let message = null;\n\n if (touched && error && validationmessages[error]) {\n message = validationmessages[error];\n }\n\n return message;\n };\n\n const handleOnChange = (value) => {\n const { onChange } = input;\n\n onChange(fromJS(value));\n };\n\n return (\n \n );\n};\n\nFormDatePicker.propTypes = {\n meta: PropTypes.instanceOf(Object),\n input: PropTypes.instanceOf(Object),\n validationmessages: PropTypes.instanceOf(Object),\n};\n\nexport default FormDatePicker;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { fromJS } from 'immutable';\n\nimport EditableList from '../../components/EditableList';\n\nexport default class FieldEditableList extends Component {\n static propTypes = {\n input: PropTypes.instanceOf(Object),\n meta: PropTypes.instanceOf(Object),\n validationmessages: PropTypes.instanceOf(Object),\n };\n\n constructor(props) {\n super(props);\n\n this.handleOnChange = this.handleOnChange.bind(this);\n }\n\n getEditableListError() {\n const { meta, validationmessages } = this.props;\n const { touched, error } = meta;\n let message = null;\n\n if (touched && error && validationmessages[error]) {\n message = validationmessages[error];\n }\n\n return message;\n }\n\n handleOnChange(value) {\n const { input } = this.props;\n const { onChange } = input;\n\n onChange(fromJS(value));\n }\n\n render() {\n const { ...props } = this.props;\n\n return (\n \n );\n }\n}\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\nimport FileInput from '../../components/FileInput';\n\nexport default class FieldFileInput extends Component {\n static propTypes = {\n input: PropTypes.instanceOf(Object),\n meta: PropTypes.instanceOf(Object),\n validationmessages: PropTypes.instanceOf(Object),\n };\n\n getInputError() {\n const { meta, validationmessages } = this.props;\n const { touched, error, warning } = meta;\n let message = null;\n\n if (touched && error && validationmessages[error]) {\n message = validationmessages[error];\n } else if (touched && warning) {\n message = 'warning';\n }\n\n return message;\n }\n\n render() {\n const { input, ...rest } = this.props;\n\n return (\n \n );\n }\n}\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Input from '../../components/Input';\n\nexport default class FieldInput extends Component {\n static propTypes = {\n meta: PropTypes.instanceOf(Object),\n input: PropTypes.instanceOf(Object),\n validationmessages: PropTypes.instanceOf(Object),\n }\n\n getInputError() {\n const { meta, validationmessages } = this.props;\n const { touched, error, warning } = meta;\n let message = null;\n\n if (touched && error && validationmessages[error]) {\n message = validationmessages[error];\n } else if (touched && warning) {\n message = 'warning';\n }\n\n return message;\n }\n\n render() {\n const { input, ...rest } = this.props;\n\n return (\n \n );\n }\n}\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { fromJS } from 'immutable';\n\nimport Multiselect from '../../components/Multiselect';\n\nexport default class FieldMultiselect extends Component {\n static propTypes = {\n input: PropTypes.instanceOf(Object),\n meta: PropTypes.instanceOf(Object),\n validationmessages: PropTypes.instanceOf(Object),\n }\n\n constructor(props) {\n super(props);\n\n this.handleOnChange = this.handleOnChange.bind(this);\n }\n\n getMultiselectError() {\n const { meta, validationmessages } = this.props;\n const { touched, error, warning } = meta;\n let message = null;\n\n if (touched && error && validationmessages[error]) {\n message = validationmessages[error];\n } else if (touched && warning) {\n message = 'warning';\n }\n\n return message;\n }\n\n handleOnChange(value) {\n const { input } = this.props;\n const { onChange } = input;\n\n onChange(fromJS(value));\n }\n\n render() {\n const { ...props } = this.props;\n\n return (\n \n );\n }\n}\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { fromJS } from 'immutable';\n\nimport Select from '../../components/Select';\n\nexport default class FieldSelect extends Component {\n static propTypes = {\n input: PropTypes.instanceOf(Object),\n meta: PropTypes.instanceOf(Object),\n validationmessages: PropTypes.instanceOf(Object),\n };\n\n constructor(props) {\n super(props);\n\n this.handleEvent = this.handleEvent.bind(this);\n }\n\n getSelectError() {\n const { meta, validationmessages } = this.props;\n const { touched, error, warning } = meta;\n let message = null;\n\n if (touched && error && validationmessages[error]) {\n message = validationmessages[error];\n } else if (touched && warning) {\n message = 'warning';\n }\n\n return message;\n }\n\n handleEvent(selectValue) {\n const { input } = this.props;\n const { onChange, value } = input;\n\n onChange(fromJS(selectValue !== undefined ? selectValue : value));\n }\n\n render() {\n const { input, ...rest } = this.props;\n\n return (\n \n );\n }\n}\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { fromJS } from 'immutable';\n\nimport SelectableList from '../../components/SelectableList';\n\nexport default class FieldSelectableList extends Component {\n static propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.node,\n ]),\n onChange: PropTypes.func,\n input: PropTypes.instanceOf(Object),\n };\n\n constructor(props) {\n super(props);\n\n this.handleOnChange = this.handleOnChange.bind(this);\n }\n\n handleOnChange(value) {\n const { input } = this.props;\n\n input.onChange(fromJS(value));\n }\n\n render() {\n const { children, ...props } = this.props;\n\n return (\n \n );\n }\n}\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { fromJS } from 'immutable';\n\nimport Toggle from '../../components/Toggle';\n\nexport default class FieldToggle extends Component {\n static propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.node,\n ]),\n onChange: PropTypes.func,\n input: PropTypes.instanceOf(Object),\n };\n\n constructor(props) {\n super(props);\n\n this.handleOnChange = this.handleOnChange.bind(this);\n }\n\n handleOnChange(value) {\n const { input } = this.props;\n\n input.onChange(fromJS(value));\n }\n\n render() {\n const { children, ...props } = this.props;\n\n return (\n \n {children}\n \n );\n }\n}\n"],"names":["ACE_NAMESPACE","global","define","module","deps","payload","_require","parentId","callback","lookup","params","i","l","dep","require","packagedModule","normalizeModule","moduleName","chunks","base","previous","exports","mod","req","returnValue","exportAce","ns","root","defineProp","obj","name","val","searchString","position","subjectString","lastIndex","count","result","string","str","target","output","index","source","key","o","k","predicate","len","thisArg","kValue","item","value","O","start","relativeStart","end","relativeEnd","final","deepCopy","copy","a","trimBeginRegexp","trimEndRegexp","array","arr","map","props","regExp","matches","fcn","timer","deferred","timeout","defaultTimeout","_self","e","error","_navigator","os","ua","appName","useragent","XHTML_NS","buildDom","parent","refs","txt","els","ch","el","options","childIndex","n","doc","tag","element","textContent","classes","add","node","className","include","id","sheets","strictCSP","cssCache","insertPendingStyles","cache","importCssString","cssText","container","style","uri","inner","outer","body","noScrollbar","withScrollbar","styles","property","div","tx","ty","dom","url","xhr","path","head","s","_","isAbort","ctor","superCtor","mixin","proto","EventEmitter","stopPropagation","preventDefault","eventName","listeners","defaultHandler","newCallback","resolve","handlers","old","disabled","capturing","msg","data","oop","reportError","optionsProvider","optList","optionNames","opt","warn","message","messages","AppConfig","opts","optionHash","translated","lang","net","component","parts","sep","re","subst","loader","cb","customLoader","onLoad","loadedModule","moduleType","load","afterLoad","err","reportErrorIfPathIsNotConfigured","config","ace","init","packaged","scriptOptions","scriptUrl","currentScript","currentDocument","scripts","script","src","attributes","j","attr","deHyphenate","m","m1","comparePoints","p1","p2","Range","startRow","startColumn","endRow","endColumn","range","row","column","cmp","p","firstRow","lastRow","session","screenPosStart","screenPosEnd","Keys","ret","mods","x","keyCode","keyString","keys","pressedKeys","ts","activeListenerOptions","detectListenerOptionsSupport","getListenerOptions","EventListener","elem","type","removeListener","addListener","destroyer","eventHandler","releaseCaptureHandler","ownerDocument","onMouseUp","factor","deltaX","deltaY","linePixels","pagePixels","elements","timeouts","callbackName","clicks","startX","startY","eventNames","onMousedown","isNewClick","getModifierHash","normalizeCommandKeys","hashId","location","dt","lastKeyDownKeyCode","lastDefaultPrevented","resetPressedKeys","postMessageId","win","messageName","listener","handler","delay","$cancelT","event","nls","clipboard","BROKEN_SETDATA","USE_IE_MIME_TYPE","HAS_FOCUS_ARGS","MAX_LINE_LENGTH","KEYS","MODS","isIOS","valueResetRegex","isMobile","TextInput","parentNode","host","text","copied","pasted","inComposition","sendingText","tempStyle","commandMode","ignoreFocusEvents","lastValue","lastSelectionStart","lastSelectionEnd","lastRestoreEnd","rowStart","rowEnd","numberOfExtraLines","isFocused","number","resetSelection","top","isTransformed","ancestors","t","curOp","commandName","isUserAction","onCompositionEnd","positionToSelection","selection","newValue","selectionStart","selectionEnd","afterContextMenu","line","lines","prevLine","nextLine","isAllSelected","onSelect","inputHandler","sendText","fromInput","extendLeft","extendRight","inserted","restoreStart","restoreEnd","endIndex","shouldReset","onInput","onCompositionUpdate","handleClipboardData","forceIEMime","clipboardData","mime","doCopy","isCut","onCut","onCopy","onPaste","onCompositionStart","cancelComposition","syncComposition","onKeyup","readOnly","bringToFront","rect","left","maxTop","move","closeTimeout","onContextMenuClose","onContextMenu","addIosSelectionHandler","typingResetTimeout","typing","detectArrowKeys","modifier","command","_isMobile","_isIOS","DRAG_OFFSET","SCROLL_COOLDOWN_T","DefaultHandlers","mouseHandler","editor","ev","inSelection","pos","button","selectionRange","selectionEmpty","waitForClickSelection","anchor","cursor","orientedRange","calcRangeOrientation","unitName","cmpStart","cmpEnd","distance","calcDistance","time","prevScroll","vx","vy","direction","canScroll","isSlower","ax","ay","bx","by","__extends","extendStatics","d","b","__","__values","CLASSNAME","Tooltip","html","y","theme","PopupManager","popup","e_1","_a","e_2","_b","visiblepopups","_c","_d","shouldDisplay","visiblepopups_1","visiblepopups_1_1","visiblePopup","e_2_1","e_1_1","popupA","popupB","rectA","rectB","popupManager","HoverTooltip","_super","_this","isMousePressed","docPos","screenPos","clippedPos","domNode","startingEvent","renderer","labelHeight","isAbove","GutterHandler","gutter","tooltip","GutterTooltip","gutterRegion","tooltipTimeout","mouseEvent","showTooltip","maxRow","screenRow","hideTooltip","moveTooltip","gutterRow","gutterCell","gutterElement","windowWidth","windowHeight","width","height","annotationsInRow","annotation","fold","annotationsInFold","mostSevereAnnotationInFoldType","annotationType","summaryFoldedAnnotations","annotationMessages","iconClassName","tooltipContent","annotations","summary","annotationTypes","annotationTypes_1","annotationTypes_1_1","label","MouseEvent","domEvent","documentRow","screenTopRow","AUTOSCROLL_DELAY","SCROLL_CURSOR_DELAY","SCROLL_CURSOR_HYSTERESIS","DragdropHandler","dragImage","mouseTarget","dragSelectionMarker","timerId","dragCursor","counter","dragOperation","isInternal","autoScrollStartTime","cursorMovedTime","cursorPointOnCaretMoved","self","dataTransfer","dropEffect","canAccept","addDragMarker","getDropEffect","onMouseMoveTimer","clearDragMarker","dropData","scrollCursorIntoView","prevCursor","now","vMovement","hMovement","autoScroll","lineHeight","characterWidth","editorRect","offsets","nearestXOffset","nearestYOffset","scrollCursor","vScroll","hScroll","onDragInterval","onMouseMove","types","copyAllowed","moveAllowed","copyModifierState","effectAllowed","interval","cursorStyle","clickCount","eventTarget","mode","touchStartT","lastT","longTouchTimer","animationTimer","animationSteps","vX","vY","pressed","contextMenu","createContextMenu","isOpen","updateMenu","selected","hasUndo","handleClick","action","showContextMenu","pagePos","leftOffset","scrollLeft","hideContextMenu","handleLongTap","switchToSelectionMode","textarea","touches","h","w","touchObj","cursorPos","anchorPos","offsetTop","offsetLeft","weightedDistance","diff1","diff2","animate","wheelX","wheelY","oldScrollTop","DefaultGutterHandler","addTouchListeners","MouseHandler","focusEditor","windowBlurred","gutterEl","character","state","mouseMoveHandler","onCaptureEnd","onOperationEnd","onCaptureInterval","stop","FoldHandler","keyUtil","KeyBinding","kb","toExecute","success","commands","ArabicAlefBetIntervalsBegine","ArabicAlefBetIntervalsEnd","dir","hiLevel","lastArabic","hasUBAT_AL","hasUBAT_B","hasUBAT_S","hasBlockSep","hasSegSep","impTab_LTR","impTab_RTL","LTR","RTL","L","R","EN","AN","ON","B","S","AL","WS","CS","ES","ET","NSM","LRE","RLE","PDF","LRO","RLO","BN","UnicodeTBL00","UnicodeTBL20","_computeLevels","chars","levels","charTypes","impTab","prevState","newClass","newLevel","newState","cond","condPos","ix","_getCharacterType","_getCharClass","_invertLevel","lev","_array","lo","hi","tmp","cType","wType","nType","c","rtlCandidate","uc","_isArabicDiacritics","textCharTypes","isRtl","logicalFromVisual","bidiLevels","logIdx","rowMap","bidiUtil","bidiRE","BidiHandler","docRow","splitIndex","delta","rowCache","currentIndex","prevIndex","isLastRow","endOfLine","splits","shift","size","fontMetrics","bidiCharWidth","showInvisibles","eolChar","isRtlDir","col","leftBoundary","logicalIdx","visualIdx","startCol","endCol","level","selections","offset","selColMin","selColMax","isSelected","isSelectedPrev","visIdx","posX","charWidth","Selection","lead","reverse","anchorRow","anchorColumn","cursorRow","cursorColumn","wasEmpty","wasMultiselect","mover","excludeLastChar","foldLine","tabSize","firstColumnPosition","beforeCursor","leadingSpace","lineEnd","textEnd","rightOfCursor","leftOfCursor","whitespaceRe","tokenRe","rows","offsetX","widget","keepDesiredColumn","r","func","r1","MAX_TOKEN_COUNT","Tokenizer","rules","ruleRegExps","matchTotal","mapping","flag","splitterRurles","rule","adjustedregex","matchcount","match","digit","values","tokens","stack","inChClass","lastCapture","esc","parenOpen","parenClose","square","startState","currentState","matchAttempts","token","skipped","TextHighlightRules","prefix","HighlightRules","escapeRules","states","append","embedRules","addRules","pushState","popState","processState","toInsert","next","stateName","includeName","args","defaultToken","ignoreCase","splitChar","keywords","list","word","Behaviour","behaviours","filter","TokenIterator","initialRow","initialColumn","rowCount","rowTokens","tokenIndex","SAFE_INSERT_IN_TOKENS","SAFE_INSERT_BEFORE_TOKENS","context","contextCache","defaultQuotes","initContext","getWrapped","opening","closing","rowDiff","CstyleBehaviour","rightChar","matching","openBracePos","next_indent","indent","quotes","quote","leftChar","rightToken","stringBefore","stringAfter","pair","wordRe","isWordBefore","isWordAfter","pairQuotesAfter","shouldPairQuotes","charBefore","iterator","iterator2","bracket","wordChars","code","unicode","Mode","ignoreBlankLines","shouldRemove","minIndent","insertAtTabStop","regexpStart","lineCommentStart","uncomment","shouldInsertSpace","commentWithSpace","comment","testRemove","before","after","spaces","lineCommentEnd","regexpEnd","iter","fun","minEmptyLength","sel","initialRange","colDiff","startRange","endRange","tab","input","delegations","scope","functionName","method","language","split","param","completionKeywords","ruleItr","aLength","throwDeltaError","errorText","positionInDocument","docLines","validateDelta","numRangeRows","numRangeLastLineChars","doNotValidate","Anchor","point","$getTransformedPoint","noClip","$pointsInOrder","point1","point2","equalPointsInOrder","bColIsAfter","moveIfEqual","deltaIsInsert","deltaRowShift","deltaColShift","deltaStart","deltaEnd","applyDelta","Document","textOrLines","newLineMode","length","deleteFirstNewLine","deleteLastNewLine","deletedLines","deltas","isInsert","docLength","MAX","from","to","chunk","newlineLength","BackgroundTokenizer","tokenizer","workerStart","currentLine","endLine","startLine","processedLines","SearchHighlight","clazz","markerLayer","renderedMarkerRanges","ranges","rangeToAddMarkerTo","rangeAsString","UndoManager","allowMerge","undoStackLength","rev","dontSelect","rearrangeUndoStack","deltaSet","undoSelectionRange","diff","rebaseRedoStack","redoSelectionRange","nextDelta","json","stringifyDelta","swapped","swapGroups","$updateMarkers","rowShift","colShift","cmp2","clonePos","cloneDelta","stringifyRange","swap","d1","d2","i1","i2","ds1","ds2","xform","c1","splitDelta","shiftPos","rowsBefore","otherLines","rest","moveDeltasByOne","redoStack","xformed","deltaSets","FoldLine","foldData","folds","last","lastEnd","isNewRow","foldBefore","newFoldLine","foldLineNext","idx","lastFoldEndColumn","RangeList","excludeEdges","startIndex","removed","clipped","lineDif","Fold","placeholder","subFold","consumeRange","afterStart","firstConsumed","consumedFolds","restoreRange","consumePoint","restorePoint","Folding","side","foldLines","foundFolds","trim","lastFold","startFoldLine","first","added","startFold","endFold","cloneFolds","expandInner","outermostFolds","startFoldRow","textLine","lastColumn","fd","tryToUnfold","bracketPos","depth","test","foldWidgets","foldMode","ignoreCurrent","fw","firstRange","toggleParent","BracketMatch","chr","charBeforeCursor","isBackwards","bracketsRegExp","typeRe","openBracket","valueIndex","closingBracket","valueLength","prevToken","found","backward","currentTag","openTagStart","openTagName","foundOpenTagEnd","openTagEnd","closeTagStart","closeTagName","closeTagEnd","stepCount","tmpToken","TextMode","EditSession","cacheArray","low","mid","removedFolds","undoManager","editSession","navigateWithinSoftTabs","overwrite","inFront","marker","markerId","markers","highlight","inToken","wordRange","useWorker","$isPlaceholder","oldMode","onReloadTokenizer","scrollTop","force","longestScreenLine","foldIndex","foldStart","enable","isUndo","fromRange","toPosition","toRange","collDiff","oldStart","newStart","indentString","rowRange","deleteRange","useWrapMode","min","max","desiredLimit","$printMargin","limits","wrapLimit","limit","foldLineBefore","wrapData","walkTokens","PLACEHOLDER_START","PLACEHOLDER_BODY","displayLength","lastSplit","lastDocSplit","isCode","indentedSoftWrap","maxIndent","getWrapIndent","indentation","SPACE","TAB","TAB_SPACE","addSplit","minSplit","PUNCTUATION","CHAR_EXT","isFullWidth","CHAR","maxScreenColumn","screenColumn","docColumn","rowLength","doCache","wrapIndent","foldStartRow","wrapRow","screenRowOffset","screenRows","fm","Search","sr","sc","er","ec","prevRange","replacement","$disableFakeMultiline","needle","addWordBoundary","backwards","skipCurrent","forEach","forEachInLine","supportsLookbehind","wordBoundary","firstChar","wordRegExp","needleArray","lastChar","KEY_MODS","MultiHashHandler","platform","$singleCommand","keepCommand","ckb","keyId","cmdGroup","keyPart","chain","binding","getPosition","other","otherPos","keyList","HashHandler","CommandManager","bindKey","mac","cutLine","firstLineEndCol","selectedText","selectedCount","insertLine","curLine","newRanges","LineWidgets","lineWidgets","hide","noWidgets","w1","changedWidgets","GutterKeyboardHandler","nearestFoldIndex","nearestAnnotationIndex","GutterKeyboardEvent","rowFoldingWidget","isRowFullyVisible","isIconVisible","cell","foldWidget","desinationLane","annotationIndex","foldWidgetIndex","gutterKeyboardHandler","defaultCommands","Editor","commandEvent","scrollIntoView","prev","mergeableCommands","shouldMerge","keyboardHandler","oldSession","tagNamesRanges","markerType","wrap","wordWithBoundary","nl","copyLine","lineMode","isFullLine","transform","lineState","shouldOutdent","lineIndent","selectedRange","prevLineState","currIndent","composition","applyComposition","speed","dragDelay","shouldHighlight","shouldAnimate","display","showPrintMargin","enabled","show","fade","new_range","originalRange","_numberRx","amount","charRange","nr","fp","decimals","nnr","replaceRange","currWordStart","wordParts","curLength","itLength","that","wordPairs","reg","negate","firstCondition","secondCondition","res","columnPosition","previousPosition","currentPosition","wordParts_1","wordParts_1_1","endPoint","moved","totalDiff","rangeIndex","subRows","compositionState","select","center","expand","tokenCount","matchType","bracketType","brackets","tagsRanges","lineNumber","times","replaced","newRange","shouldScroll","scrollAnchor","onChangeSelection","onBeforeRender","onAfterRender","cursorLayer","relativeNumberRenderer","hasValue","blurCommand","focusOnEnterKeyup","lastLineNumber","Lines","canvasHeight","oldConfig","newConfig","screenTop","screenPage","lineTop","fragment","initElement","Gutter","parentEl","rowInfo","annoText","annoType","onCreateCell","gutterRenderer","firstLineNumber","lastLineText","gutterWidth","padding","cells","oldLastRow","textNode","annotationNode","annotationIconNode","breakpoints","decorations","rowText","foldClass","isClosedFold","foldAnnotationClass","annotationInFold","foldRange","highlightGutterLine","Marker","css","layerConfig","stringBuilder","extraStyle","curr","lineRange","getBorderClass","range1","radiusClass","extraLength","tl","tr","br","bl","textTokens","tokenType","isTextToken","Text","unixMode","EOL_CHAR","measure","tabStr","span","spaceClass","spaceContent","tabClass","tabContent","lineElements","lineElementsIdx","heightChanged","lineElement","lineEl","valueFragment","simpleSpace","controlCharacter","cjkSpace","cjk","cols","initialIndent","elementIndentLevel","bracketHighlight","currentIndent","childNodes","indentLevel","splitChars","overflowEl","lastLineEl","invisibleEl","renderTokens","addTokens","Cursor","cursors","blinking","blinkInterval","smoothBlinking","update","blink","onScreen","cursorLeft","cursorTop","pixelPos","cursorIndex","MAX_SCROLL_H","Scrollbar","classSuffix","isVisible","VScrollBar","HScrollBar","ScrollBar","eType","mousePageY","startTop","onScrollInterval","thumbTop","mousePageX","startLeft","thumbLeft","RenderLoop","onRender","changes","change","CHAR_COUNT","USE_OBSERVER","FontMetrics","isRoot","boldSize","clientPos","elPos","zoom","mul","solve","l1","l2","det","sub","m2","ut","u","f","Decorator","colors","allLineHeight","ctx","compare","priorities","compensateFold","currentY","y1","y2","yCenter","GutterLayer","MarkerLayer","TextLayer","CursorLayer","HScrollBarCustom","VScrollBarCustom","editorCss","VirtualRenderer","textLayer","oldSize","right","availableWidth","containerEl","posTop","posLeft","bottom","sm","alwaysVisible","scrollHeight","scrollerHeight","st","maxHeight","desiredHeight","hideScrollbars","screenLines","longestLine","horizScroll","hScrollChanged","vScrollBefore","minHeight","scrollPastEnd","vScrollChanged","lineCount","firstRowScreen","firstRowHeight","charCount","$viewMargin","newLeft","newTop","topMargin","bottomMargin","currentTop","currentLeft","twoCharsWidth","alignment","fromValue","toValue","steps","x_min","dx","initialScroll","oldSteps","endAnimation","canvasPos","insertPosition","textLines","newToken","$workerBlob","workerUrl","BlobBuilder","blobBuilder","createWorker","blob","URL","blobURL","WorkerClient","worker","topLevelNamespaces","classname","importScripts","normalizePath","tlns","cmd","ex","q","UIWorkerClient","main","emitSync","sender","messageBuffer","workerClient","processNext","callbackId","Main","PlaceHolder","others","mainClass","othersClass","undoStack","lengthDiff","inMainRange","distanceFromStart","newPos","updateMarker","undosRequired","isSamePoint","onMouseDown","alt","ctrl","accel","isMultiSelect","mouseX","mouseY","onMouseSelection","screenAnchor","screenCursor","selectionMode","oldRange","tmpSel","rectSel","blockSelect","newCursor","onMouseSelectionEnd","onSelectionInterval","search","find","$blockChangeEvents","lastRange","includeEmptyLines","xBackwards","startOffsetX","endOffsetX","yBackwards","docEnd","markerList","keepOrder","$byLines","rangeList","cmdResult","anim","buf","additive","skip","screenLead","toRemove","all","words","stopAtFirst","sameRowRanges","fr","lr","guessRange","maxCol","minSpace","spaceOffsets","spaceOffset","forceLeft","isLeftAligned","isRightAligned","startW","textW","endW","alignLeft","alignRight","unAlign","MultiSelect","addAltCursorListeners","altCursor","altDown","reset","FoldMode","foldStyle","startLevel","binarySearch","comparator","findAnnotations","matched","oldWidget","gutterAnno","arrow","Renderer","_id","oldNode","env","is","tabString","singletonTags","blockTags","formatOptions","nextToken","breakBefore","spaceBefore","spaceAfter","tagName","lastDepth","lastIndent","unindent","roundDepth","curlyDepth","curRow","rowsToAdd","abort","indentNextLine","inTag","inCSS","inBlock","parents","caseBody","trimNext","trimLine","trimCode","searchboxCss","MAX_COUNT","SearchBox","showReplaceForm","sb","preventScroll","noMatch","regex","isReplace","$searchBarKb","$closeSearchBarKb","supportType","supportFunction","supportConstant","supportConstantColor","supportConstantFonts","numRe","pseudoElements","pseudoClasses","CssHighlightRules","keywordMapper","MatchingBraceOutdent","propertyMap","CssCompletions","inParens","skipSemicolon","properties","CssBehaviour","BaseFoldMode","commentRegex","forceMultiline","startIndent","subRange","CStyleFoldMode","DocCommentHighlightRules","GolangHighlightRules","builtinTypes","builtinFunctions","builtinConstants","stringEscapeRe","tokenizedLine","endState","JsDocCommentHighlightRules","identifierRe","JavaScriptHighlightRules","kwBeforeRe","escapedRe","comments","JSX","tagRegex","jsxTag","jsxJsRule","results","JsonHighlightRules","JsxHighlightRules","buildinConstants","reserved","PythonHighlightRules","strPre","strRawPre","strFormatPre","strRawFormatPre","decimalInteger","octInteger","hexInteger","binInteger","integer","exponent","fraction","intPart","pointFloat","exponentFloat","floatNumber","stringEscape","PythonFoldMode","outdents","XmlHighlightRules","normalize","XmlBehaviour","rightSpace","tokenEndColumn","tokenRow","tokenColumn","nextIndent","voidElements","optionalEndTags","Tag","tags","XmlFoldMode","___CSS_LOADER_EXPORT___","cssWithMappingToString","content","needLayer","modules","media","dedupe","supports","layer","alreadyImportedModules","_k","cssMapping","base64","sourceMapping","hasElementType","hasMap","hasSet","hasArrayBuffer","equal","it","stylesInDOM","getIndexByIdentifier","identifier","modulesToDom","idCountMap","identifiers","indexByIdentifier","updater","addElementStyle","api","newObj","lastIdentifiers","newList","newLastIdentifiers","_i","_identifier","_index","memo","getTarget","styleTarget","insertBySelector","insert","insertStyleElement","setAttributesWithoutAttributes","styleElement","nonce","apply","sourceMap","removeStyleElement","domAPI","styleTagTransform","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","getter","definition","prop","Icon","family","getCSSClasses","fontFamily","ItemTrigger","collapsed","toggleChange","iconType","trigger","AccordionItem","collapsedProp","children","ref","setCollapsed","contextValue","AccordionItemHeader","usearrowastrigger","savedCallback","tick","useInterval","savedHandler","eventListener","getSize","ComponentSize","setComponentSize","handleResize","resizeObserver","Collapsible","contentContainer","collapseWrapper","refContainerSize","contentContainerStyle","setContentContainerStyle","setHeight","getHeight","onEnter","onExit","onWindowResize","AccordionItemContent","Accordion","Button","customButton","iconFamily","iconPosition","iconOnly","href","onClick","noStyle","getCssClasses","cssClasses","sizeClass","disabledClass","displayClass","themeClass","iconOnlyClass","noStyleClass","getButtonIcon","buttonType","ButtonGroup","wait","immediate","later","callNow","Loader","withbackground","Message","onClose","noMargin","Chart","areaStyleColors","dataLoaded","hasData","option","series","onChange","zoomStart","zoomEnd","title","seriesConfig","noDataComponent","zoomColors","tykChartInstance","setTykChartInstance","chartWrapperRef","onResize","lineBarChart","color","pieChart","geoChart","buildChartOptions","selectedType","selectedOptions","selectedSeries","finalOpts","entry","seriesData","eventCallBack","debouncedMethod","debounce","prevInstance","prevOption","prevType","prevSeries","prevZoomStart","prevZoomEnd","getStyle","chartHasData","ToastMessage","handleClose","itemIndex","ToastContainer","setMessages","notify","updateNotifications","msgID","prevMessages","onMessageClosed","tempMessages","messageToBeRemoved","ToastCreator","fn","CopyToClipboard","txtRef","ModalFooter","ModalBody","Modal","disableCloseCommands","opened","showBackdrop","restProps","modalClasses","backdropClasses","themeIcon","Confirm","description","confirmBtnText","cancelBtnText","open","setOpen","setCallback","cancelCallback","setCancelCallback","callbackFunc","cancelCallbackFunc","beforeCallback","cancel","confirm","FixedWrapper","showShadow","fixedWrapperRef","attachShadow","debouncedAttachShadow","InfiniteScroller","hasMore","initialLoad","loadMore","pageNumber","refChild","showLoader","setShowLoader","containerRef","refChildSize","shouldLoad","clientHeight","loadMoreData","prevPageNumber","scrollHandler","prevRefChildSize","FloatingContainer","forceDisplay","displayAxis","preferredPosition","infiniteScrollerConfig","localRef","floatingContainerRef","contentWrapperRef","determineDisplay","topSpace","bottomSpace","leftSpace","hasTopSpace","hasBottomSpace","hasLeftSpace","hasRightSpace","positionedVerticallyFitsInViewport","positionedHorizontallyFitsInViewport","adjustPosition","targetPosition","topPos","schedulePositionUpdate","InfoNote","ListItem","List","labelwidth","getListStyle","styleCopy","NavBar","align","pre","subtitle","withTabs","subtitleContent","NavigationItem","Navigation","PortalContext","PanelBody","noPadding","portalContext","PanelFooter","PanelHeader","HeaderTag","Panel","collapsable","onToggleCollapse","collapsibleIconPosition","collapsedState","setCollapsedState","panelTheme","collapsbleIconPosition","handleToggle","Pill","RevealPanelService","wrapper","panel","newY","finalHeight","heightVal","reason","useRevealPanelService","RevealPanelHeaderLeft","RevealPanelHeaderRight","mergeClasses","classNames","RevealPanel","onHeightChange","onDragStart","onDragEnd","parentSelector","contentStyle","contentClassName","gutterClassName","wrapperClassName","panelRef","gutterRef","wrapperRef","panelService","bind","headerLeft","headerRight","contents","child","TabsContext","TabContent","addTab","hideTab","updateTab","showTab","selectedPath","tabData","tabsId","tabExists","rendered","hideTabContent","tabs","tempTabData","prevTabData","TabContext","Tab","tabsContext","tabContext","setPath","tempPath","Tabs","onTabChange","setTabs","setSelectedPath","setRendered","initialPath","setInitialPath","updateTabsList","tabsState","tempTabsState","toggleTab","setCurrentSelectedPath","tempRendered","prevTabs","tempTabs","getTabCssClass","tabId","genTabs","currentTabs","render","icon","closable","isOpened","additionalClickParents","isActive","setIsActive","tooltipRef","activeEvents","handleDocumentClick","TextEllipsis","shouldShowPage","currentNr","pageNr","totalNrOfPages","getPagesArr","nrOfPages","selectedPage","pagesArr","Pagination","nextProps","pagesArray","tableContext","HeaderCell","sortable","sortOrder","setSortOrder","sendMessage","Header","selectAll","setSelectAll","columns","selectable","generateHeaders","generateSelectable","Component","v","Checkbox","inline","note","Cell","Row","SelectableCheckbox","Body","Table","noDataMessage","loading","infiniteScrolling","setState","onChangeMsg","setOnChangeMsg","itemsListRef","sortRows","selectAllRows","selectRow","selectedRow","setPagination","getTable","num","Column","colSize","colOffsets","cSize","cOffset","nogutters","cssClass","DropdownContext","DropdownItem","customdropdownitem","eventKey","dropdownItemCLick","dropdownContext","itemProps","Dropdown","dropdownWidth","dropdownHeight","elHeight","selectedItem","prevProps","itemId","closeOnSelect","dropdownEl","offsetPosition","customTop","customLeft","btnGroup","btnGroupSize","btnTheme","hasCustomContent","listclassnames","btnTitle","stopButtonTextChange","selectedItemProps","appendTo","btnClassName","btnSize","customBtnTitle","showDropdownIcon","showTriggerButton","showCheckmark","DropdownWrapperTag","CodeEditor","disableValidation","onBlur","setOptions","finalSetOptions","getCodeEditorError","getLabelStyles","getNonLabelWidth","handleOnChange","handleOnBlur","editorInstance","getStateSelectedValues","multiple","itemValue","inputValue","allowCustomValues","filteredValues","tempState","previousState","stateSelectedValues","themes","iTheme","elWidth","prevValue","tempValue","selectedIndex","selectedValues","tempSelectedValues","tempStateSelectedValues","ok","searchItem","cursorNext","methodName","CustomListComponent","searchText","Combobox","Value","tagSeparators","addTagOnBlur","renderValue","valueOverflow","focus","INPUT_MIN_WIDTH","inputRef","dummyElementRef","setInputValue","inputWidth","setInputWidth","entryFieldOnChange","dummy","entryFieldOnKeyDown","triggerAction","textValue","isPlaceholder","renderCustomValue","renderTag","getTags","listRef","searchValue","activeItem","renderListItem","showSearch","activeElement","renderItem","renderSelectAllOption","isNoneSelected","normalizeValue","existingVal","getValueFromProp","Combobox2","propValue","propValues","maxProp","matchItemFn","renderListProp","onBeforeChange","floatingContainerConfig","expandMode","displayDropdownTrigger","required","validateOnChange","renderList","rootRef","comboboxControlRef","dropdownRef","setValue","setValues","setSearchValue","setActiveItem","setIsOpened","valuesExpanded","setValuesExpanded","localValidationError","setLocalValidationError","getThemeClasses","getFilteredValues","openDropdown","closeDropdown","updateSearchValue","newSearchValue","fv","isValidValue","newValues","localError","updateValue","addTag","listValueIndex","lv","finalValue","removeTag","selectValue","selectAllValues","moveUpActiveItem","visibleItems","activeIndex","moveDownActiveItem","executeTriggerAction","onClickCapture","triggerElement","onTagMessage","onMessage","sv","nv","vals","valuesElement","updateScroll","mobserver","robserver","currentValuesClasses","DatePicker","onOpen","pickerInstance","setPickerInstance","dateRef","hasValueChanged","prevDate","currentDate","diffDates","date","onDateChange","dateValue","instance","openCalendar","getInputError","getInputField","inputStyle","addonStyle","_typeof","requiredArgs","isDate","toDate","argument","argStr","isValid","dirtyDate","toInteger","dirtyNumber","addMilliseconds","dirtyAmount","timestamp","subMilliseconds","MILLISECONDS_IN_DAY","getUTCDayOfYear","startOfYearTimestamp","difference","startOfUTCISOWeek","weekStartsOn","day","getUTCISOWeekYear","year","fourthOfJanuaryOfNextYear","startOfNextYear","fourthOfJanuaryOfThisYear","startOfThisYear","startOfUTCISOWeekYear","fourthOfJanuary","MILLISECONDS_IN_WEEK","getUTCISOWeek","defaultOptions","getDefaultOptions","setDefaultOptions","newOptions","startOfUTCWeek","_ref","_ref2","_ref3","_options$weekStartsOn","_options$locale","_options$locale$optio","_defaultOptions$local","_defaultOptions$local2","getUTCWeekYear","_options$firstWeekCon","firstWeekContainsDate","firstWeekOfNextYear","firstWeekOfThisYear","startOfUTCWeekYear","firstWeek","getUTCWeek","addLeadingZeros","targetLength","sign","formatters","signedYear","month","dayPeriodEnumValue","numberOfDigits","milliseconds","fractionalSeconds","dayPeriodEnum","localize","era","lightFormatters","signedWeekYear","weekYear","twoDigitYear","isoWeekYear","quarter","week","isoWeek","dayOfYear","dayOfWeek","localDayOfWeek","isoDayOfWeek","hours","_localize","originalDate","timezoneOffset","formatTimezoneWithOptionalMinutes","formatTimezone","formatTimezoneShort","dirtyDelimiter","absOffset","minutes","delimiter","dateLongFormatter","pattern","formatLong","timeLongFormatter","dateTimeLongFormatter","matchResult","datePattern","timePattern","dateTimeFormat","longFormatters","getTimezoneOffsetInMilliseconds","utcDate","protectedDayOfYearTokens","protectedWeekYearTokens","isProtectedDayOfYearToken","isProtectedWeekYearToken","throwProtectedError","format","formatDistanceLocale","formatDistance","tokenValue","buildFormatLongFn","dateFormats","timeFormats","dateTimeFormats","formatRelativeLocale","formatRelative","_date","_baseDate","_options","buildLocalizeFn","dirtyIndex","valuesArray","defaultWidth","_defaultWidth","_width","eraValues","quarterValues","monthValues","dayValues","dayPeriodValues","formattingDayPeriodValues","ordinalNumber","rem100","buildMatchFn","matchPattern","matchedString","parsePatterns","findIndex","findKey","object","buildMatchPatternFn","parseResult","matchOrdinalNumberPattern","parseOrdinalNumberPattern","matchEraPatterns","parseEraPatterns","matchQuarterPatterns","parseQuarterPatterns","matchMonthPatterns","parseMonthPatterns","matchDayPatterns","parseDayPatterns","matchDayPeriodPatterns","parseDayPeriodPatterns","locale","formattingTokensRegExp","longFormattingTokensRegExp","escapedStringRegExp","doubleQuoteRegExp","unescapedLatinCharacterRegExp","dirtyFormatStr","_ref4","_options$locale2","_options$locale2$opti","_ref5","_ref6","_ref7","_options$locale3","_options$locale3$opti","_defaultOptions$local3","_defaultOptions$local4","formatStr","defaultLocale","formatterOptions","substring","firstCharacter","longFormatter","cleanEscapedString","formatter","components","mainFormValue","addValueOnFieldChange","getMainFormButtonWidth","propsComponents","stateComponents","noLabels","buttonStyle","displayType","errors","mainError","errorPersist","validatorsNames","validator","onSubmit","validate","validationmessage","buttonName","ComponentName","EditableListForm","itemData","separator","removedItem","valueArr","tempItemValue","nextValue","buttonWidth","clonedComponents","appendToElement","EditableList","addButtonName","onAddRow","ListHeader","fields","field","FieldsList","onDelete","rowIndex","tempField","rowValues","colValue","internalError","setInternalError","onFieldChange","errorMsg","getUID","EditableList2","hideOnEmpty","internalErrors","setInteranlErrors","updateRowValue","fieldIndex","componentValue","tempValueArr","tempErrors","tempFieldError","hasErrors","Components","deleteRow","FileInput","accept","omitValue","isfield","inputgroupaddonleft","inputgroupaddonright","stateValue","initValue","Input","Input2","getAddon","getInputElement","getInputGroupAddon","getItemContent","getItemLoader","MultiselectItem","fieldsToSearchOn","itemType","MultiselectPanel","itemsPageNumber","itemsNrPages","loadMoreItems","serverLoad","onCustomSearch","items","cloneItems","clonedItem","customSearch","panelType","inputPlaceholder","noItemsMessage","diffObjects","Multiselect","getItemDetails","allItems","valueClone","entityNamePlural","itemDisplayTemplate","detailsDisplayTemplate","maxSelections","Radio","nospace","Select","selectedValue","SelectableList","checkboxalticon","itemTemplate","primaryKey","handleOnSelect","newSelectedItems","elemPosition","getListItemCssClassName","isChecked","tvalue","Textarea","getTextareaError","ToggleItem","ToggleItemWrapper","Toggle","onDark","separated","selectedRef","setSelectedRef","notchRef","toggleRef","onItemSelected","positionNotch","selectedWidth","selectedOffset","toggleOffset","stringToTokenString","tempStr","setCursorPos","StringInput","setShowOptions","dropdownTriggerKey","setStringBuilderHeight","stringBuilderHeight","setTokenString","tokenString","showOptions","setTokenValue","setInputInFocus","invalidTokenRegex","contextMaxLength","isPasteEvent","setIsPasteEvent","tokenLen","handleDelete","stringBeforeCursor","stringAfterCursor","tokenStringForStringAfterCursor","firstToken","newTokenValue","newTokenizedString","handleBackSpace","lastToken","lastCharsInString","invalidToken","newTokenStr","tokenStringForStringBeforeCursor","splitTokens","addCharacterToTokenString","handleTextSelection","allowedKeys","substitute","newStr","handleKeyDown","handlePasteEvent","pasteString","newTokenString","handleOnFocus","InvalidToken","findInvalidTokenSubstitute","TokenizedString","hasDuplicates","allTokens","matchedOption","matchedTokens","tkn","OptionsList","handleOptionSelection","allowSearch","initialSearchValue","filterValue","setFilterValue","filteredOptions","setFilteredOptions","newFilteredOptions","StringBuilderFooter","inputInFocus","StringBuilder","setContentMaxLength","setTokens","prevTokenValue","setPrevTokenValue","setInitialSearchValue","selectedInvalidToken","setSelectedInvalidToken","prevTokenString","tempVal","splitTokensStr","newHeight","newInput","tokenizedString","setConfig","getValueFromPath","acc","timeoutId","form","DEFAULT_DEBOUNCE_TIME_MS","myValue","setMyValue","executeDebounced","getValue","valueOrEvent","onChangeProps","formError","componentProps","FieldCodeEditor","meta","validationmessages","touched","warning","FieldCombobox","FieldDropdown","FieldPagination","FieldCombobox2","getComboboxError","FormDatePicker","getDatePickerError","FieldEditableList","FieldFileInput","FieldInput","FieldMultiselect","FieldSelect","FieldSelectableList","FieldToggle"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"index.js","mappings":";;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA,2BAA2B,cAAc;AACzC,8DAA8D;;;AAG9D;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA,2CAA2C,OAAO;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,CAAC;;AAED,iGAAiG;AACjG;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,0BAA0B;AACtD;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,SAAS;AACjC;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,wBAAwB,SAAS;AACjC;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA,CAAC;;AAED,0HAA0H;AAC1H;AACA;;AAEA,CAAC;;AAED,kGAAkG;AAClG;AACA;AACA;AACA;AACA;AACA,0BAA0B,kBAAkB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,iHAAiH;AACjH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,OAAO;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,gBAAgB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,mBAAmB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC;AAClC;AACA;AACA,0CAA0C,uBAAuB,uBAAuB,uBAAuB;AAC/G;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,kGAAkG;AAClG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iEAAiE;AACjE,2DAA2D,qCAAqC;AAChG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,gHAAgH;AAChH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,gBAAgB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,gBAAgB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,8BAA8B;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,0GAA0G;AAC1G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,4FAA4F;AAC5F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,sGAAsG;AACtG;AACA,oCAAoC;AACpC,mCAAmC;AACnC;AACA;AACA,wDAAwD;AACxD,4DAA4D;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,sBAAsB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C;AAC9C;AACA;AACA;AACA,oBAAoB,sBAAsB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,6CAA6C;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,qGAAqG;AACrG;AACA;AACA;AACA;AACA,6BAA6B,UAAU;AACvC;;AAEA,CAAC;;AAED,gKAAgK;AAChK;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iFAAiF;AACjF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;;AAEA,CAAC;;AAED,uGAAuG,uCAAuC,wBAAwB,gBAAgB,GAAG,+BAA+B,eAAe,wBAAwB,GAAG,uBAAuB,gCAAgC,GAAG,aAAa,8BAA8B,iBAAiB,GAAG,yBAAyB,iBAAiB,GAAG,oCAAoC,8BAA8B,GAAG,iDAAiD,gBAAgB,GAAG,2BAA2B,2BAA2B,GAAG,uCAAuC,4BAA4B,GAAG,wCAAwC,4BAA4B,GAAG,uCAAuC,2BAA2B,GAAG,0BAA0B,2CAA2C,eAAe,GAAG,uCAAuC,4BAA4B,GAAG,uCAAuC,2BAA2B,GAAG,oEAAoE,8BAA8B,GAAG,uCAAuC,8BAA8B,GAAG,yBAAyB,0BAA0B,GAAG,0BAA0B,6BAA6B,GAAG,kCAAkC,4BAA4B,GAAG,0CAA0C,8BAA8B,GAAG,uCAAuC,0BAA0B,GAAG,2BAA2B,6BAA6B,GAAG,yBAAyB,6BAA6B,GAAG,+CAA+C,mBAAmB,GAAG,4BAA4B,2BAA2B,GAAG,uBAAuB,2BAA2B,GAAG,+BAA+B,0BAA0B,GAAG,mCAAmC,4BAA4B,8CAA8C,mCAAmC,GAAG,oDAAoD,kCAAkC,GAAG,uCAAuC,iCAAiC,GAAG,0CAA0C,mCAAmC,GAAG,4CAA4C,0BAA0B,yCAAyC,GAAG,gDAAgD,oCAAoC,GAAG,qCAAqC,iCAAiC,GAAG,kDAAkD,mCAAmC,yCAAyC,GAAG,+BAA+B,qCAAqC,kIAAkI,GAAG,sCAAsC,qCAAqC,8NAA8N,GAAG;;AAE9nG,CAAC;;AAED,0IAA0I;AAC1I;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,gLAAgL;AAChL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,kCAAkC;AACjF;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,CAAC;;AAED;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;;AAEA,QAAQ,IAA4B;AACpC,qBAAqB,wBAAM;AAC3B;AACA,WAAW;;AAEX;AACA;AACA;AACA,gGAAgG,wBAAM;;AAEtG;AACA;AACA,8EAA8E;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,kBAAkB;AACpC;;AAEA;AACA;AACA;;AAEA;AACA,2CAA2C,OAAO;AAClD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,kDAAkD,0BAA0B;AAC5E;AACA,CAAC;;AAED,0FAA0F;AAC1F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA,wBAAwB;AACxB;AACA,0BAA0B;AAC1B;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,2GAA2G;AAC3G;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,sDAAsD;AACtD;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,IAAI;AACnD;AACA;AACA,aAAa;AACb;AACA,KAAK;AACL;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,iIAAiI;AACjI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2EAA2E;AAC3E;AACA,0CAA0C;AAC1C;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,eAAe;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,8FAA8F;AAC9F;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA,CAAC;;AAED,oNAAoN;AACpN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,iBAAiB;AAC3C;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,gCAAgC,qBAAqB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,qBAAqB;AAC1C;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,wBAAwB,uDAAuD;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,aAAa;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C;AAC3C,yCAAyC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,2BAA2B;AACrE;AACA;AACA;AACA;AACA;AACA,6DAA6D;AAC7D,6CAA6C;AAC7C,oHAAoH;AACpH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,+HAA+H;AAC/H;AACA,qBAAqB;AACrB,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;;AAEA,CAAC;;AAED,sIAAsI;AACtI;AACA;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,iCAAiC;AAC5E;AACA;AACA,iEAAiE,UAAU;AAC3E;AACA;AACA;AACA,oIAAoI,yBAAyB;AAC7J;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,QAAQ;AACxC;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,QAAQ;AAChC;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;AAEA,CAAC;;AAED,0KAA0K;AAC1K;AACA;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,+CAA+C;AACxE,2BAA2B,mDAAmD;AAC9E,wBAAwB;AACxB;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA,2BAA2B;AAC3B;AACA;AACA,sCAAsC;AACtC;AACA,kCAAkC,mBAAmB;AACrD;AACA;AACA,gCAAgC,wCAAwC;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC;AACnC;AACA,wBAAwB,4BAA4B;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oHAAoH,2BAA2B;AAC/I;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,QAAQ;AAChC;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA,CAAC;AACD;;AAEA,CAAC;;AAED,0IAA0I;AAC1I;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;AAEA,CAAC;;AAED,6JAA6J;AAC7J;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,kBAAkB,mBAAmB;AAC/E;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;;AAEA,CAAC;;AAED,8JAA8J;AAC9J;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,iDAAiD;AACzF,uCAAuC,4CAA4C;AACnF,uCAAuC,2CAA2C;AAClF,wCAAwC,6CAA6C;AACrF,sCAAsC,4CAA4C;AAClF,2BAA2B,4CAA4C;AACvE,2BAA2B,0DAA0D;AACrF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,aAAa;AACb;AACA,uBAAuB,4CAA4C;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA,CAAC;;AAED,wSAAwS;AACxS;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,mBAAmB;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,WAAW,iBAAiB;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA,mBAAmB,iBAAiB;AACpC,iBAAiB,2CAA2C;AAC5D,mBAAmB,oBAAoB;AACvC,oBAAoB,iBAAiB;AACrC,2BAA2B;AAC3B,CAAC;AACD;;AAEA,CAAC;;AAED,qHAAqH;AACrH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D,iCAAiC;AAChG;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,CAAC;AACD;;AAEA,CAAC;;AAED,uIAAuI;AACvI;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,4CAA4C,IAAI;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;AAEA,CAAC;;AAED,iGAAiG;AACjG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,SAAS;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,UAAU;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,QAAQ;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,QAAQ;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,SAAS;AAC7B;AACA;AACA,oCAAoC,QAAQ;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,SAAS;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,8BAA8B;AAClD;AACA;AACA;AACA,oBAAoB,kCAAkC,OAAO;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,8BAA8B;AAClD;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,oBAAoB,iBAAiB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,qCAAqC;AACzD;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,kIAAkI;AAClI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kEAAkE,mBAAmB;AACrF;AACA;AACA;AACA,4CAA4C,qBAAqB;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,eAAe;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,wBAAwB;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,sDAAsD;AACxF;AACA;AACA;AACA;AACA;AACA,8BAA8B,sDAAsD;AACpF;AACA;AACA,4BAA4B,uBAAuB;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;AAEA,CAAC;;AAED,+JAA+J;AAC/J;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,IAAI;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,IAAI;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,qHAAqH;AACrH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD;AACtD;AACA;AACA,4BAA4B,kBAAkB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,yBAAyB;AAC/C;AACA,0CAA0C,OAAO;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,OAAO;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yFAAyF,uBAAuB;AAChH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;AACA,4BAA4B,sBAAsB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B,oCAAoC,iBAAiB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;;AAEA,CAAC;;AAED,kIAAkI;AAClI;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,kBAAkB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,mBAAmB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,mBAAmB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,kBAAkB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kEAAkE,kBAAkB;AACpF;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D,iBAAiB;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,IAAI;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,iCAAiC;AACjC,iCAAiC;AACjC;AACA;AACA;AACA;AACA,CAAC;AACD;;AAEA,CAAC;;AAED,mGAAmG;AACnG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,mBAAmB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;AAEA,CAAC;;AAED,+GAA+G;AAC/G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;AAEA,CAAC;;AAED,iLAAiL;AACjL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA,kDAAkD;AAClD,yDAAyD,KAAK;AAC9D;AACA;AACA,0BAA0B;AAC1B,wEAAwE;AACxE;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA,yEAAyE;AACzE;AACA,gCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA,+BAA+B;AAC/B,6DAA6D,KAAK,4CAA4C;AAC9G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C;AAC9C;AACA;AACA;AACA,gCAAgC;AAChC,iEAAiE,4CAA4C,IAAI;AACjH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,kDAAkD;AAClD;AACA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kEAAkE,4CAA4C;AAC9G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kEAAkE,4CAA4C;AAC9G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC,2CAA2C,GAAG;AAC9C,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,4FAA4F;AAC5F;AACA;AACA;AACA,gBAAgB,sBAAsB;AACtC;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,qPAAqP;AACrP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,6BAA6B;AACpE,uCAAuC,2BAA2B;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,mBAAmB;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,2BAA2B;AACtE;AACA,2CAA2C,2BAA2B;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,aAAa;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,wBAAwB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,yBAAyB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,OAAO;AAC3D;AACA;AACA;AACA;AACA;AACA,2EAA2E,aAAa;AACxF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,CAAC;AACD;;AAEA,CAAC;;AAED,gGAAgG;AAChG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,iIAAiI;AACjI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,oCAAoC;AACtF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2DAA2D;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,8KAA8K;AAC9K;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,mBAAmB;AACxD;AACA;AACA,0BAA0B,mBAAmB;AAC7C;AACA;AACA;AACA;AACA;AACA,sBAAsB,mBAAmB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,0BAA0B;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,wBAAwB;AACnE,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,wBAAwB;AACnE,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,mBAAmB;AAC3C;AACA;AACA;AACA;AACA,wCAAwC,QAAQ;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,UAAU;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,sDAAsD,OAAO;AAC7D;AACA;AACA,yBAAyB;AACzB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,SAAS;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;;AAEA,CAAC;;AAED,+IAA+I;AAC/I;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,YAAY;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;;AAEA,CAAC;;AAED,gIAAgI;AAChI;AACA;AACA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,UAAU;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,wCAAwC,IAAI;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;;AAEA,CAAC;;AAED,4GAA4G;AAC5G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,IAAI;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,IAAI;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,IAAI;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,sBAAsB,IAAI;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,IAAI;AACjC,wBAAwB,gBAAgB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,IAAI;AACvC;AACA,wBAAwB,qBAAqB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,sBAAsB;AAC1C;AACA,wBAAwB,mBAAmB;AAC3C;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,uHAAuH;AACvH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,kBAAkB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,uBAAuB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,kBAAkB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,kBAAkB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,wBAAwB,uBAAuB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;AAEA,CAAC;;AAED,2GAA2G;AAC3G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,iBAAiB;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,IAAI;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,wBAAwB,iBAAiB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,0BAA0B;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,0BAA0B;AACrE;AACA;AACA,yCAAyC,wBAAwB;AACjE;AACA;AACA;AACA,iCAAiC,cAAc;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,OAAO;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,OAAO;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,OAAO;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,OAAO;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;;AAEA,CAAC;;AAED,uHAAuH;AACvH;AACA;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,0BAA0B;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,0BAA0B;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,UAAU;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,uNAAuN;AACvN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,kBAAkB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,sBAAsB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,kBAAkB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,sBAAsB;AAC9C,4BAA4B,+BAA+B;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA,wBAAwB,2BAA2B;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,qBAAqB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,qBAAqB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,qBAAqB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,wBAAwB,qBAAqB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,2BAA2B;AAChE;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,8BAA8B;AACnE;AACA;AACA;AACA,wBAAwB,kBAAkB;AAC1C;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D,4CAA4C;AACzG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;AACA,oBAAoB;AACpB;AACA;AACA,iCAAiC,cAAc;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,mBAAmB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,gJAAgJ;AAChJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,WAAW;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,WAAW;AACzD;AACA;AACA,oBAAoB;AACpB,8CAA8C,WAAW;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,WAAW;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,KAAK;AACf,UAAU,KAAK;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sLAAsL;AACtL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C;AAC7C;AACA,qMAAqM;AACrM;AACA;AACA;AACA;AACA,uMAAuM;AACvM;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uEAAuE;AACvE;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mFAAmF;AACnF;AACA;AACA;AACA;AACA;AACA,2KAA2K;AAC3K;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C;AAC7C;AACA,oMAAoM;AACpM;AACA;AACA,kCAAkC;AAClC,kMAAkM;AAClM;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,eAAe;AACnD;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,gXAAgX;AAChX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,mBAAmB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C;AAC3C;AACA;AACA;AACA,2CAA2C;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,iBAAiB;AACzC;AACA;AACA,2CAA2C;AAC3C;AACA;AACA;AACA,2CAA2C;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C;AAC3C;AACA;AACA;AACA,2CAA2C;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gEAAgE;AAChE,uDAAuD;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,8BAA8B;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,SAAS;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,SAAS;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,mBAAmB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,mBAAmB;AAC3C;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,iCAAiC,eAAe;AAChD,oCAAoC,qBAAqB;AACzD;AACA;AACA;AACA;AACA;AACA,yCAAyC,uBAAuB;AAChE;AACA;AACA;AACA,4BAA4B,UAAU;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,wBAAwB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,wBAAwB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,uBAAuB;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,mBAAmB;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,eAAe;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,wBAAwB;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,uBAAuB;AACnD;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,gBAAgB;AACxC;AACA;AACA;AACA;AACA,gCAAgC,aAAa;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,qBAAqB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,qBAAqB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,qBAAqB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,yBAAyB;AACzB,yBAAyB;AACzB,4BAA4B;AAC5B,4BAA4B;AAC5B,0BAA0B;AAC1B,wBAAwB;AACxB,iCAAiC;AACjC,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA,2BAA2B,mCAAmC;AAC9D;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL,mBAAmB,oBAAoB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL,8BAA8B,qBAAqB;AACnD;AACA,8BAA8B,yBAAyB;AACvD;AACA,KAAK;AACL;AACA,8BAA8B,kCAAkC;AAChE;AACA,KAAK;AACL;AACA,8BAA8B,+BAA+B;AAC7D,2BAA2B,mCAAmC;AAC9D;AACA,KAAK;AACL;AACA,8BAA8B,oBAAoB;AAClD,2BAA2B,sBAAsB;AACjD;AACA;AACA,CAAC;AACD;;AAEA,CAAC;;AAED,oIAAoI;AACpI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,eAAe;AACjE,gCAAgC,SAAS;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,kBAAkB;AAC9C;AACA,gCAAgC,oBAAoB;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,OAAO;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D,IAAI;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,6EAA6E,EAAE;AACjI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,kBAAkB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,iBAAiB;AAC7C;AACA;AACA;AACA;AACA,0DAA0D,iBAAiB;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,gBAAgB;AACpD;AACA;AACA;AACA;AACA,0DAA0D,gBAAgB;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,SAAS;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,QAAQ;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,CAAC;AACD;AACA;AACA;AACA,oCAAoC;AACpC,+FAA+F,EAAE,IAAI,EAAE;AACvG;AACA;AACA;AACA,wCAAwC,EAAE,IAAI,EAAE;AAChD,iCAAiC,EAAE,IAAI,EAAE;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,6IAA6I;AAC7I;AACA;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,wDAAwD;AAC7F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,qBAAqB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,sFAAsF,WAAW;AACjG;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,qBAAqB;AACrB;AACA,mCAAmC,IAAI;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA,2EAA2E;AAC3E;AACA,qCAAqC;AACrC;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,+KAA+K;AAC/K;AACA;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD;AAClD;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,yCAAyC,IAAI;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,CAAC;AACD;AACA;;AAEA,CAAC;;AAED,sJAAsJ;AACtJ;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,qBAAqB;AACvD;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,2BAA2B;AAC7D;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,mBAAmB;AAC/C,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA,kCAAkC,mCAAmC;AACrE;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,kCAAkC,kCAAkC;AACpE;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,oCAAoC;AACtE;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,wCAAwC;AAC1E;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,2BAA2B;AAC7D;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,mCAAmC;AACrE;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,0BAA0B;AAC5D;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,oBAAoB;AACtD;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,wBAAwB;AAC1D;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,kEAAkE,mBAAmB;AACrF,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,2BAA2B;AAC7D;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,0CAA0C;AAC5E;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,6BAA6B;AAC/D;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,mCAAmC;AACrE;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,wCAAwC,gCAAgC;AACxE;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,wCAAwC;AAC1E;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,2BAA2B;AAC7D;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,qCAAqC;AACvE;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,wCAAwC,kCAAkC;AAC1E;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,yCAAyC;AAC3E;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,4BAA4B;AAC9D;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,0CAA0C;AAC5E;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,6BAA6B;AAC/D;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,qCAAqC;AACvE;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,wCAAwC,kCAAkC;AAC1E;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,0CAA0C;AAC5E;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,6BAA6B;AAC/D;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,wCAAwC;AAC1E;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,2BAA2B;AAC7D;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,sCAAsC;AACxE;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,wCAAwC,mCAAmC;AAC3E;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,0BAA0B;AAC5D;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,0BAA0B;AAC5D;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,wBAAwB;AAC1D;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,wBAAwB;AAC1D;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,wBAAwB;AAC1D;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,sBAAsB;AACxD;AACA,KAAK;AACL;AACA;AACA;AACA,6BAA6B,iEAAiE;AAC9F;AACA,KAAK;AACL;AACA;AACA;AACA,6BAA6B,gEAAgE;AAC7F;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,0CAA0C;AAC5E;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,wCAAwC;AAC1E;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,0CAA0C;AAC5E;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,iCAAiC;AACnE;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,0BAA0B;AAC5D;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,8BAA8B;AAChE;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,oCAAoC;AACtE;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,uBAAuB;AACzD;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,8BAA8B;AAChE;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,qBAAqB;AACvD;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,8BAA8B;AAChE;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,8BAA8B;AAChE;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,yBAAyB;AAC3D;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,0BAA0B;AAC5D;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,kEAAkE,yBAAyB;AAC3F;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC;AAClC,KAAK;AACL;AACA;AACA;AACA,kCAAkC;AAClC,KAAK;AACL;AACA;AACA;AACA,kCAAkC,uBAAuB;AACzD;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,uBAAuB;AACzD;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,yBAAyB;AAC3D;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,yBAAyB;AAC3D;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,yBAAyB;AAC3D;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,wBAAwB;AAC1D;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,6BAA6B;AAC/D;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,2BAA2B;AAC7D;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,0BAA0B;AAC5D;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,2BAA2B;AAC7D;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,wBAAwB;AAC1D;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,kBAAkB;AACpD;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,wBAAwB;AAC1D;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,uBAAuB;AACzD;AACA;AACA,KAAK;AACL;AACA;AACA,uCAAuC,qBAAqB;AAC5D;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,qBAAqB;AACvD;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,4BAA4B;AAC9D,+CAA+C,gCAAgC;AAC/E;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,uBAAuB;AACzD;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,uBAAuB;AACzD;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,sBAAsB;AACxD;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,kCAAkC;AAClC,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,2BAA2B;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,mBAAmB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,sBAAsB;AAClD;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,4BAA4B,mBAAmB;AAC/C,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,4BAA4B,mBAAmB;AAC/C,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,4BAA4B,gBAAgB;AAC5C,SAAS;AACT;AACA,KAAK;AACL,gBAAgB,OAAO;AACvB;AACA;AACA;AACA;AACA,kCAAkC,yCAAyC;AAC3E;AACA;AACA,KAAK;AACL;;AAEA,CAAC;;AAED,+GAA+G;AAC/G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,SAAS;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,QAAQ,SAAS,gBAAgB;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,QAAQ,SAAS,gBAAgB;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,2BAA2B;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,QAAQ,SAAS,cAAc;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,WAAW;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D,mBAAmB;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;AAEA,CAAC;;AAED,8JAA8J;AAC9J;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,4BAA4B;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;AAEA,CAAC;;AAED,kgBAAkgB;AAClgB;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA,qEAAqE;AACrE;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,2DAA2D,iBAAiB;AAC5E,qDAAqD,cAAc;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,mBAAmB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,yCAAyC;AAC1E;AACA;AACA;AACA;AACA;AACA,iCAAiC,iCAAiC;AAClE,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,IAAI;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD;AACnD;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,gCAAgC;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,eAAe;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,qBAAqB;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,WAAW,wBAAwB;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,gBAAgB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,iCAAiC,gBAAgB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,wBAAwB,sBAAsB;AAC9C;AACA,4BAA4B,QAAQ;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4FAA4F,qBAAqB;AACjH;AACA;AACA;AACA;AACA,wDAAwD;AACxD;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,QAAQ;AAChC;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,OAAO;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,KAAK;AACnB,cAAc,KAAK;AACnB;AACA;AACA,sCAAsC;AACtC,uBAAuB,kCAAkC;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,0CAA0C;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,QAAQ;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,gBAAgB;AAC/C;AACA;AACA;AACA,+BAA+B,cAAc;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,qCAAqC;AACzD;AACA;AACA,6BAA6B,oCAAoC;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,aAAa;AAChE,SAAS;AACT;AACA,KAAK;AACL;AACA,2BAA2B,oCAAoC;AAC/D;AACA,KAAK;AACL;AACA,0CAA0C,4BAA4B;AACtE;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA,8BAA8B,2BAA2B;AACzD;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL,yBAAyB,oBAAoB;AAC7C,6BAA6B,oBAAoB;AACjD,wBAAwB,oBAAoB;AAC5C;AACA,8BAA8B;AAC9B,KAAK;AACL;AACA,8BAA8B,+BAA+B;AAC7D,2BAA2B,4BAA4B;AACvD;AACA,KAAK;AACL;AACA,8BAA8B,6BAA6B;AAC3D,2BAA2B,yBAAyB;AACpD;AACA;AACA,KAAK;AACL;AACA,8BAA8B,uBAAuB;AACrD,2BAA2B,sBAAsB;AACjD;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,8GAA8G;AAC9G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,iBAAiB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,iBAAiB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;AAEA,CAAC;;AAED,mMAAmM;AACnM;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,wBAAwB;AAChD;AACA;AACA;AACA;AACA,qDAAqD;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,kBAAkB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oGAAoG,SAAS;AAC7G;AACA;AACA,oFAAoF,SAAS;AAC7F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,mBAAmB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,WAAW;AAC/C,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,2HAA2H;AAC3H;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,YAAY;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4EAA4E,aAAa,uBAAuB,oBAAoB;AACpI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mEAAmE;AACnE,uCAAuC;AACvC,mCAAmC;AACnC,wCAAwC;AACxC;AACA;AACA;AACA;AACA;AACA;AACA,gGAAgG;AAChG,qBAAqB;AACrB,+BAA+B;AAC/B,oCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD;AACjD,mCAAmC;AACnC,+BAA+B;AAC/B,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA,qDAAqD;AACrD,wEAAwE;AACxE,mCAAmC;AACnC,2DAA2D;AAC3D,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD;AACjD,+BAA+B;AAC/B,oBAAoB,QAAQ;AAC5B;AACA;AACA;AACA;AACA,iDAAiD;AACjD,+BAA+B;AAC/B,oBAAoB,QAAQ;AAC5B;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,oGAAoG;AACpG;AACA;AACA;AACA;;AAEA,CAAC;;AAED,uNAAuN;AACvN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,iBAAiB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,aAAa;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oGAAoG,SAAS;AAC7G;AACA;AACA,kGAAkG,SAAS;AAC3G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,WAAW;AACvC;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,UAAU;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,mBAAmB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,kBAAkB;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,kBAAkB;AAC1C;AACA;AACA;AACA,gCAAgC,uBAAuB;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,kBAAkB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,QAAQ;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,mBAAmB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,mBAAmB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,+GAA+G;AAC/G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,IAAI;AACzC;AACA;AACA;AACA;AACA,qCAAqC,IAAI;AACzC;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,cAAc;AAC1C;AACA,+CAA+C,OAAO;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;;AAEA,CAAC;;AAED,kKAAkK;AAClK;AACA;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,sBAAsB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,uBAAuB;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,gCAAgC;AAChC,iCAAiC;AACjC,iCAAiC;AACjC;AACA;;AAEA,CAAC;;AAED,yKAAyK;AACzK;AACA;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,0EAA0E,uBAAuB,yCAAyC,gCAAgC,2BAA2B,2BAA2B,uBAAuB,eAAe,GAAG,gDAAgD,uBAAuB,eAAe,qBAAqB,+BAA+B,GAAG,yBAAyB,eAAe,aAAa,WAAW,gBAAgB,GAAG,6BAA6B,eAAe,aAAa,gBAAgB,GAAG,yBAAyB,cAAc,YAAY,iBAAiB,GAAG,6BAA6B,cAAc,iBAAiB,GAAG,+BAA+B,eAAe,qBAAqB,GAAG;AACjwB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,iBAAiB;AACxD;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,uCAAuC;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,sBAAsB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,kBAAkB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,0CAA0C;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,uBAAuB;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,gCAAgC;AAChC,iCAAiC;AACjC,iCAAiC;AACjC;AACA;;AAEA,CAAC;;AAED,+GAA+G;AAC/G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;AAEA,CAAC;;AAED,8MAA8M;AAC9M;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,YAAY;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,gBAAgB,iBAAiB;AAChF,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B,6BAA6B;AAC7B,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,yCAAyC;AACzC;AACA;;AAEA,CAAC;;AAED,mGAAmG;AACnG;AACA,gBAAgB,QAAQ;AACxB,kCAAkC;AAClC;AACA;AACA,0DAA0D;AAC1D,KAAK,gCAAgC;AACrC;AACA;AACA;AACA,8BAA8B,iCAAiC,YAAY,iCAAiC,YAAY,iCAAiC,iCAAiC,YAAY,iCAAiC,YAAY,iCAAiC,iCAAiC,YAAY,iCAAiC,iCAAiC,YAAY,iCAAiC,iCAAiC,iCAAiC,YAAY,iCAAiC,YAAY,iCAAiC,iCAAiC,YAAY,iCAAiC,iCAAiC,YAAY,iCAAiC,iCAAiC,iCAAiC,YAAY,iCAAiC,iCAAiC,YA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B,GAAG,4BAA4B,6BAA6B,gBAAgB,GAAG,6BAA6B,6BAA6B,GAAG,sBAAsB,yBAAyB,4BAA4B,6BAA6B,uBAAuB,mBAAmB,qBAAqB,GAAG,qBAAqB,mBAAmB,yBAAyB,uBAAuB,GAAG,4BAA4B,wBAAwB,oBAAoB,eAAe,gBAAgB,iBAAiB,sBAAsB,GAAG;;AAE15sB,CAAC;;AAED,yJAAyJ;AACzJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,4BAA4B,wBAAwB;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,qBAAqB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;;AAEA,CAAC;;AAED,ubAAub;AACvb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,OAAO;AAC3B;AACA;AACA;AACA;AACA,uDAAuD,sBAAsB;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,mBAAmB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,iCAAiC,cAAc,gCAAgC;AACzH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,cAAc;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,eAAe;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,sBAAsB,qBAAqB;AAC3C;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA,2BAA2B,4BAA4B;AACvD;AACA,KAAK;AACL;AACA,2BAA2B,4BAA4B;AACvD;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA,8BAA8B,qBAAqB;AACnD,2BAA2B,qCAAqC;AAChE;AACA;AACA,KAAK;AACL,wBAAwB;AACxB;AACA;AACA;AACA,CAAC;AACD;;AAEA,CAAC;;AAED;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,qEAAqE;AACrE;AACA,mCAAmC,iCAAiC;AACpE,MAAM,YAAY;AAClB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAiB,0BAA0B;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA,wCAAwC,eAAe;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,kCAAkC,yBAAyB;AAC3D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iCAAiC;AACjC,0DAA0D,qBAAqB,iBAAiB;AAChG;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV,iCAAiC,QAAQ;AACzC;;AAEA,CAAC;;;AAGD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL,+CAA+C;;AAE/C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,gCAAgC,UAAU;AAC1C;AACA;AACA,0BAA0B,yCAAyC;AACnE;AACA;AACA,0BAA0B,sCAAsC;AAChE;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;;;AAGA,CAAC;;AAED,kJAAkJ;AAClJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,wGAAwG;AACxG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,wBAAwB,wBAAwB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,QAAQ;AAC7D;AACA,mCAAmC;AACnC;AACA;AACA;AACA;AACA,qDAAqD,QAAQ;AAC7D;AACA,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,IAAI;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,IAAI;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,mBAAmB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;;AAEA,CAAC;;AAED,mJAAmJ;AACnJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,oBAAoB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,wBAAwB;AACxE;AACA;AACA;AACA;;AAEA,CAAC;;AAED,+IAA+I;AAC/I;AACA;AACA;AACA,kCAAkC,6BAA6B;AAC/D,mBAAmB,wCAAwC;AAC3D;AACA;AACA,KAAK;AACL;AACA;AACA,kCAAkC,4BAA4B;AAC9D,mBAAmB,4CAA4C;AAC/D;AACA;AACA,KAAK;AACL;AACA;AACA,kCAAkC,mCAAmC;AACrE,mBAAmB,oDAAoD;AACvE;AACA;AACA,KAAK;AACL;AACA;AACA,kCAAkC,kCAAkC;AACpE,mBAAmB,wDAAwD;AAC3E;AACA;AACA,KAAK;AACL;AACA;AACA,kCAAkC,wBAAwB;AAC1D,mBAAmB,4CAA4C;AAC/D;AACA;AACA,KAAK;AACL;AACA;AACA,kCAAkC,uBAAuB;AACzD,mBAAmB,8CAA8C;AACjE;AACA;AACA,KAAK;AACL;AACA;AACA,kCAAkC,8BAA8B;AAChE,mBAAmB,wDAAwD;AAC3E;AACA;AACA,KAAK;AACL;AACA;AACA,kCAAkC,6BAA6B;AAC/D,mBAAmB,0DAA0D;AAC7E;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,mBAAmB,sCAAsC;AACzD;AACA,KAAK;AACL;AACA;AACA,kCAAkC,sCAAsC;AACxE;AACA,KAAK;AACL;AACA;AACA,kCAAkC,wBAAwB;AAC1D,mBAAmB,sCAAsC;AACzD;AACA,KAAK;AACL;AACA;AACA,kCAAkC,mBAAmB;AACrD,mBAAmB,sCAAsC;AACzD;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,kCAAkC,+BAA+B;AACjE;AACA;AACA,yCAAyC;AACzC,KAAK;AACL;AACA;;AAEA,CAAC;;AAED,6SAA6S;AAC7S;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,cAAc;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,IAAI;AACzC;AACA;AACA;AACA,sCAAsC,iBAAiB;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,mBAAmB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,IAAI;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,eAAe;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,YAAY;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD;AACtD;AACA;AACA,mEAAmE;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD,wBAAwB;AAC/E;AACA;AACA;AACA;AACA,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gEAAgE,wBAAwB;AACxF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,mBAAmB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,IAAI;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,IAAI;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,IAAI;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,oBAAoB;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,CAAC;;AAED,CAAC;;AAED,uHAAuH;AACvH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED,CAAC;;AAED,+JAA+J;AAC/J;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,sBAAsB;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,2BAA2B;AACjF;AACA,kDAAkD,8BAA8B,yBAAyB,4BAA4B,qBAAqB,gCAAgC,mCAAmC,wBAAwB,6BAA6B,gCAAgC,OAAO,6DAA6D,sCAAsC,iEAAiE,sCAAsC,2DAA2D,sCAAsC,uDAAuD,sCAAsC,2BAA2B,6BAA6B,4BAA4B,kDAAkD,oDAAoD,mDAAmD,oBAAoB,OAAO;;AAEz8B,CAAC;;AAED,gYAAgY;AAChY;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC;AACzC,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC,cAAc;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,kFAAkF;AAClF,8EAA8E;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,KAAuD;AAC/E;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;;;;;;;;ACjipBA,sHAAsH;AACtH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wGAAwG;AACxG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,eAAe;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA,iDAAiD;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD;AACjD;AACA;AACA,8DAA8D;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,uCAAuC;AACzF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8EAA8E;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,eAAe;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,YAAY;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD;AAClD,gCAAgC,kBAAkB;AAClD;AACA,qDAAqD;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;;AAEL,CAAC,kBAAkB;AACnB;AACA,4BAA4B,KAAuD;AACnF;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB;;;;;;;;ACzUA,sGAAsG,wPAAwP,6BAA6B,kBAAkB,gCAAgC,yBAAyB,uBAAuB,gBAAgB,6BAA6B,yBAAyB,aAAa,kBAAkB,0BAA0B,GAAG,oBAAoB,0BAA0B,qCAAqC,cAAc,GAAG,qBAAqB,qCAAqC,2BAA2B,eAAe,GAAG,yCAAyC,2BAA2B,uBAAuB,uBAAuB,GAAG,qBAAqB,sBAAsB,GAAG,gCAAgC,6BAA6B,GAAG,uBAAuB,iCAAiC,8BAA8B,mBAAmB,gCAAgC,2BAA2B,iBAAiB,iBAAiB,yBAAyB,gBAAgB,2BAA2B,qBAAqB,sBAAsB,0BAA0B,wBAAwB,8BAA8B,GAAG,kBAAkB,gCAAgC,2BAA2B,4BAA4B,qBAAqB,uBAAuB,2BAA2B,qCAAqC,sBAAsB,gBAAgB,yBAAyB,kBAAkB,GAAG,6BAA6B,iCAAiC,sCAAsC,GAAG,2BAA2B,uBAAuB,sBAAsB,GAAG,wBAAwB,gCAAgC,GAAG,4CAA4C,4BAA4B,wDAAwD,qBAAqB,8BAA8B,oBAAoB,qBAAqB,kCAAkC,4BAA4B,iCAAiC,GAAG,6BAA6B,kCAAkC,GAAG,wBAAwB,qCAAqC,iPAAiP,yBAAyB,qBAAqB,qBAAqB,sBAAsB,4BAA4B,iBAAiB,mBAAmB,kBAAkB,eAAe,iBAAiB,yBAAyB,GAAG,8BAA8B,gCAAgC,oCAAoC,mBAAmB,GAAG,iBAAiB,uBAAuB,sBAAsB,gCAAgC,6BAA6B,2BAA2B,4BAA4B,wBAAwB,uBAAuB,mBAAmB,+CAA+C,mBAAmB,0CAA0C,mBAAmB,GAAG,uBAAuB,6BAA6B,gBAAgB,GAAG,sBAAsB,6BAA6B,GAAG,yBAAyB,4BAA4B,gBAAgB,GAAG,wBAAwB,yBAAyB,wBAAwB,gCAAgC,6BAA6B,2BAA2B,4BAA4B,wBAAwB,kBAAkB,GAAG,yBAAyB,kBAAkB,yBAAyB,qBAAqB,GAAG;;AAEzzH,CAAC;;AAED,+NAA+N;AAC/N;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,2BAA2B;AAC1D,uBAAuB,8CAA8C;AACrE,sBAAsB,0BAA0B;AAChD,4BAA4B,gFAAgF;AAC5G,2BAA2B,iDAAiD;AAC5E,2BAA2B,iDAAiD;AAC5E,2BAA2B,+DAA+D;AAC1F;AACA,sBAAsB,2BAA2B;AACjD,4BAA4B,kFAAkF;AAC9G,2BAA2B,sDAAsD;AACjF,2BAA2B,8CAA8C;AACzE;AACA,sBAAsB,6BAA6B;AACnD,2BAA2B;AAC3B,2CAA2C,gBAAgB,cAAc,GAAG;AAC5E,2BAA2B,6BAA6B;AACxD,2BAA2B,8EAA8E;AACzG,2BAA2B,wFAAwF;AACnH,2BAA2B,kFAAkF;AAC7G,2BAA2B,qFAAqF;AAChH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,6CAA6C,iBAAiB;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,6CAA6C,iBAAiB;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA,iCAAiC,YAAY;AAC7C,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,CAAC;AACD;AACA;AACA,mBAAmB,kDAAkD;AACrE;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,mBAAmB,kDAAkD;AACrE;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,mBAAmB,kDAAkD;AACrE;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC,kBAAkB;AACnB;AACA,4BAA4B,KAAuD;AACnF;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB;;;;;;;;ACtVA,0KAA0K;AAC1K;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,aAAa;AACb;AACA,2BAA2B;AAC3B;AACA,aAAa;AACb;AACA,2BAA2B;AAC3B,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA,2BAA2B;AAC3B;AACA,aAAa;AACb;AACA,2BAA2B;AAC3B;AACA,aAAa;AACb;AACA,yBAAyB;AACzB;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,qBAAqB;AACrB,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA,2BAA2B;AAC3B,aAAa;AACb;AACA,2BAA2B;AAC3B;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA,kCAAkC,EAAE;AACpC,aAAa;AACb;AACA,kCAAkC,EAAE;AACpC,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,qBAAqB;AACrB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,qBAAqB;AACrB;AACA;AACA;AACA,qBAAqB;AACrB;AACA,qBAAqB;AACrB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,qBAAqB;AACrB;AACA;AACA;AACA,qBAAqB;AACrB;AACA,qBAAqB;AACrB,aAAa;AACb;AACA;AACA,sCAAsC,IAAI;AAC1C,aAAa;AACb;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,4HAA4H;AAC5H;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA,uCAAuC;AACvC;AACA;AACA;AACA,qDAAqD,0BAA0B;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;AAEA,CAAC;;AAED,yGAAyG;AACzG;AACA,oBAAoB,UAAU;AAC9B,0BAA0B,wCAAwC;AAClE,0BAA0B,iBAAiB;AAC3C,2BAA2B,yEAAyE;AACpG,6BAA6B,yEAAyE;AACtG,+BAA+B,yBAAyB;AACxD,yBAAyB,0BAA0B;AACnD,yBAAyB,qDAAqD;AAC9E,2BAA2B,qDAAqD;AAChF,gBAAgB,yDAAyD;AACzE,sBAAsB,UAAU;AAChC,sBAAsB,4IAA4I;AAClK,yBAAyB,8BAA8B;AACvD,gBAAgB,0BAA0B;AAC1C,eAAe,6CAA6C;AAC5D,eAAe,8BAA8B;AAC7C,gBAAgB,mNAAmN;AACnO,iBAAiB,wEAAwE;AACzF,qBAAqB,sBAAsB;AAC3C,eAAe,kCAAkC;AACjD,qBAAqB,iNAAiN;AACtO,mBAAmB,0BAA0B;AAC7C,qBAAqB,wBAAwB;AAC7C,oBAAoB,0BAA0B;AAC9C,sBAAsB,8BAA8B;AACpD,gBAAgB,0BAA0B;AAC1C,cAAc,0BAA0B;AACxC,wBAAwB,aAAa;AACrC,qBAAqB,aAAa;AAClC,yBAAyB,sOAAsO;AAC/P,gBAAgB,0BAA0B;AAC1C,sBAAsB,0BAA0B;AAChD,qBAAqB,0BAA0B;AAC/C,oBAAoB,0BAA0B;AAC9C,uBAAuB,0BAA0B;AACjD,oBAAoB,0BAA0B;AAC9C,mBAAmB,0BAA0B;AAC7C,oBAAoB,0BAA0B;AAC9C,mBAAmB,0BAA0B;AAC7C,kBAAkB,mDAAmD;AACrE,oBAAoB,mDAAmD;AACvE,oBAAoB,mDAAmD;AACvE,iBAAiB,0BAA0B;AAC3C,qBAAqB,0BAA0B;AAC/C,uBAAuB,0BAA0B;AACjD,wBAAwB,0BAA0B;AAClD,sBAAsB,0BAA0B;AAChD,0BAA0B,2DAA2D;AACrF,2BAA2B,2DAA2D;AACtF,kBAAkB,uDAAuD;AACzE,eAAe,0BAA0B;AACzC,sBAAsB,uBAAuB;AAC7C,yBAAyB,0DAA0D;AACnF,oBAAoB,kDAAkD;AACtE,wBAAwB,4DAA4D;AACpF,aAAa,0BAA0B;AACvC,wBAAwB,uBAAuB;AAC/C,oBAAoB,2BAA2B;AAC/C,qBAAqB,kEAAkE;AACvF,eAAe,0BAA0B;AACzC,sBAAsB,aAAa;AACnC,gBAAgB,2BAA2B;AAC3C,qBAAqB,yBAAyB;AAC9C,uBAAuB,8CAA8C;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,wCAAwC;AAC3D,wBAAwB,wCAAwC;AAChE,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAqE;AACrE;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,2DAA2D;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,CAAC;AACD;;AAEA,CAAC;;AAED,2LAA2L;AAC3L;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,uBAAuB;AACvB;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,uBAAuB,EAAE;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA,CAAC;;AAED,+JAA+J;AAC/J;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,UAAU;AAC7C,qCAAqC,QAAQ;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED,CAAC;;AAED,qSAAqS;AACrS;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,CAAC;AACD;;AAEA,CAAC,kBAAkB;AACnB;AACA,4BAA4B,KAAuD;AACnF;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB;;;;;;;;ACpnBA,mKAAmK;AACnK;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,qMAAqM;AACrM;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,uCAAuC,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE;AAC9D;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA,6BAA6B;AAC7B;AACA;AACA,iBAAiB;AACjB;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA,uCAAuC;AACvC,aAAa;AACb;AACA,4BAA4B;AAC5B,aAAa;AACb;AACA,8BAA8B;AAC9B,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,4HAA4H;AAC5H;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA,uCAAuC;AACvC;AACA;AACA;AACA,qDAAqD,0BAA0B;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;AAEA,CAAC;;AAED,+JAA+J;AAC/J;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,UAAU;AAC7C,qCAAqC,QAAQ;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED,CAAC;;AAED,4NAA4N;AAC5N;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C;AAC1C;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;AAEA,CAAC,kBAAkB;AACnB;AACA,4BAA4B,KAAuD;AACnF;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB;;;;;;;;ACpVA,qKAAqK;AACrK;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iGAAiG;AACjG;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA,6BAA6B;AAC7B;AACA,yCAAyC;AACzC;AACA;AACA;AACA,qBAAqB;AACrB;AACA,kCAAkC;AAClC;AACA,qBAAqB;AACrB;AACA,iCAAiC;AACjC;AACA,qBAAqB;AACrB;AACA,qBAAqB;AACrB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,yFAAyF;AACzF;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA,6BAA6B;AAC7B;AACA,yCAAyC;AACzC;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iCAAiC;AACjC;AACA,qBAAqB;AACrB;AACA,qBAAqB;AACrB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,2MAA2M;AAC3M;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,yCAAyC,EAAE;AAC3C,sBAAsB,EAAE;AACxB,WAAW,YAAY,KAAK;AAC5B,oBAAoB,IAAI;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA,mCAAmC,EAAE;AACrC;AACA,aAAa;AACb;AACA,6BAA6B;AAC7B;AACA,aAAa;AACb;AACA,6BAA6B;AAC7B;AACA,aAAa;AACb;AACA,6BAA6B;AAC7B,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,EAAE,cAAc,EAAE;AAC9D,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA,0BAA0B,YAAY,4BAA4B,GAAG;AACrE,aAAa;AACb;AACA,uCAAuC,YAAY;AACnD,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,EAAE,cAAc,EAAE;AAC9D,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB,qCAAqC;AACrC,6BAA6B;AAC7B;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,+BAA+B;AAC/B;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,wBAAwB,EAAE;AAC1B,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,sBAAsB;AAChC,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,gCAAgC;AAC1D,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,kBAAkB,8DAA8D;AAChF,kBAAkB,sBAAsB;AACxC,kBAAkB;AAClB;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,kBAAkB,8DAA8D;AAChF,kBAAkB,sBAAsB;AACxC,kBAAkB;AAClB;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,gCAAgC,qBAAqB,yBAAyB;AAC9E,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,wDAAwD;AAC1E,kBAAkB;AAClB;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,kBAAkB,qDAAqD;AACvE,kBAAkB;AAClB;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,4HAA4H;AAC5H;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA,uCAAuC;AACvC;AACA;AACA;AACA,qDAAqD,0BAA0B;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;AAEA,CAAC;;AAED,+JAA+J;AAC/J;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,UAAU;AAC7C,qCAAqC,QAAQ;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED,CAAC;;AAED,2RAA2R;AAC3R;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,CAAC;AACD;;AAEA,CAAC,kBAAkB;AACnB;AACA,4BAA4B,KAAuD;AACnF;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB;;;;;;;;ACp3BA,4JAA4J;AAC5J;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA,4BAA4B;AAC5B,aAAa;AACb;AACA,8BAA8B;AAC9B,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,EAAE,cAAc,EAAE;AAC5D,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,4HAA4H;AAC5H;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA,uCAAuC;AACvC;AACA;AACA;AACA,qDAAqD,0BAA0B;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;AAEA,CAAC;;AAED,+JAA+J;AAC/J;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,UAAU;AAC7C,qCAAqC,QAAQ;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED,CAAC;;AAED,mPAAmP;AACnP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA,0CAA0C;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,CAAC;AACD;;AAEA,CAAC,kBAAkB;AACnB;AACA,4BAA4B,KAAuD;AACnF;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB;;;;;;;;AClRA,mKAAmK;AACnK;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,iNAAiN;AACjN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,gGAAgG;AAChG,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA,uCAAuC;AACvC,aAAa;AACb;AACA,4BAA4B;AAC5B,aAAa;AACb;AACA,8BAA8B;AAC9B,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,4HAA4H;AAC5H;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA,uCAAuC;AACvC;AACA;AACA;AACA,qDAAqD,0BAA0B;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;AAEA,CAAC;;AAED,+JAA+J;AAC/J;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,UAAU;AAC7C,qCAAqC,QAAQ;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED,CAAC;;AAED,sNAAsN;AACtN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;AAEA,CAAC,kBAAkB;AACnB;AACA,4BAA4B,KAAuD;AACnF;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB;;;;;;;;ACjVA,8JAA8J;AAC9J;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,EAAE,OAAO,EAAE,+BAA+B,EAAE,cAAc,EAAE;AACtG;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,mCAAmC,EAAE;AACrC;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA,mCAAmC,EAAE;AACrC;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA,sCAAsC,EAAE;AACxC;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA,sCAAsC,EAAE;AACxC;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA,yCAAyC,EAAE;AAC3C;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA,yCAAyC,EAAE;AAC3C;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA,4CAA4C,EAAE;AAC9C;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA,4CAA4C,EAAE;AAC9C;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA,6BAA6B;AAC7B,aAAa;AACb;AACA,kCAAkC;AAClC,aAAa;AACb;AACA,kCAAkC;AAClC,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA,0BAA0B,EAAE;AAC5B;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA,0BAA0B,EAAE;AAC5B;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,0BAA0B,EAAE;AAC5B;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,0BAA0B,EAAE;AAC5B;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA,0BAA0B,EAAE;AAC5B;AACA,aAAa;AACb;AACA,yBAAyB;AACzB;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA,0BAA0B,EAAE;AAC5B;AACA,aAAa;AACb;AACA,yBAAyB;AACzB;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA,yBAAyB;AACzB;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA,yBAAyB;AACzB;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,0BAA0B,EAAE;AAC5B;AACA,aAAa;AACb;AACA,yBAAyB;AACzB;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,0BAA0B,EAAE;AAC5B;AACA,aAAa;AACb;AACA,yBAAyB;AACzB;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA,yBAAyB;AACzB;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,yBAAyB;AACzB;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,yBAAyB;AACzB;AACA,aAAa;AACb;AACA,yBAAyB;AACzB;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,qJAAqJ;AACrJ;AACA;AACA;AACA,gDAAgD;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED,CAAC;;AAED,wMAAwM;AACxM;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;AAEA,CAAC,kBAAkB;AACnB;AACA,4BAA4B,KAAuD;AACnF;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB;;;;;;;;AC3dA,2JAA2J;AAC3J;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,oEAAoE;AAClF;AACA;AACA;AACA,aAAa;AACb,cAAc,8DAA8D;AAC5E;AACA;AACA;AACA,aAAa;AACb,cAAc,gBAAgB;AAC9B,cAAc,6CAA6C;AAC3D,cAAc,wCAAwC;AACtD,cAAc,sBAAsB;AACpC,cAAc;AACd;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA,cAAc,uBAAuB;AACrC,cAAc,mBAAmB;AACjC,cAAc,wDAAwD;AACtE,cAAc,+CAA+C;AAC7D,cAAc;AACd;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,qBAAqB;AACrB,sBAAsB,mBAAmB;AACzC,aAAa;AACb;AACA,cAAc,4DAA4D;AAC1E,cAAc,kCAAkC;AAChD,cAAc;AACd;AACA;AACA,cAAc,uDAAuD;AACrE,cAAc;AACd;AACA;AACA;AACA,oCAAoC,qBAAqB,yBAAyB;AAClF,aAAa;AACb;AACA;AACA,oCAAoC,qBAAqB,yBAAyB;AAClF,aAAa;AACb;AACA;AACA;AACA;AACA,sBAAsB,uBAAuB;AAC7C,sBAAsB;AACtB;AACA,aAAa;AACb;AACA,cAAc;AACd;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA,sBAAsB,8CAA8C;AACpE,sBAAsB;AACtB;AACA,aAAa;AACb;AACA;AACA;AACA,sBAAsB,8CAA8C;AACpE,sBAAsB;AACtB;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,sBAAsB,8DAA8D;AACpF,sBAAsB,2BAA2B;AACjD,sBAAsB;AACtB;AACA,aAAa;AACb;AACA;AACA;AACA,sBAAsB,8DAA8D;AACpF,sBAAsB,2BAA2B;AACjD,sBAAsB;AACtB;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,uBAAuB;AACzC,kBAAkB;AAClB;AACA,SAAS;AACT;AACA,cAAc,uBAAuB;AACrC,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA,CAAC;AACD;AACA;;AAEA,CAAC;;AAED,8KAA8K;AAC9K;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA,CAAC;;AAED,4JAA4J;AAC5J;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,mBAAmB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,mBAAmB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA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AAQ,mBAAO,CAAC,GAAW;AAC3B,IAAI,IAAqC;AACzC,EAAE,SAAkB;AACpB,EAAE,yBAAmB;AACrB,EAAE,KAAK,UAkBN;;;;;;;;ACxBD;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,uBAAuB,UAAU;AACjC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,uBAAuB,UAAU;AACjC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,qBAAqB,UAAU;AAC/B;AACA;;AAEA;AACA;AACA;;AAEA;AACA,qBAAqB,UAAU;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC1Ia;;AAEb;AACA;AACA;AACA,kBAAkB,wBAAwB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,iBAAiB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,4BAA4B;AAChD;AACA;AACA;AACA;AACA;AACA,qBAAqB,6BAA6B;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACnFa;;AAEb;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACjCa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACTa;;AAEb;AACA;AACA,cAAc,KAAwC,GAAG,sBAAiB,GAAG,CAAI;AACjF;AACA;AACA;AACA;AACA;;;;;;;;ACTa;;AAEb;AACA;AACA;AACA;AACA,kDAAkD;AAClD;AACA;AACA,0CAA0C;AAC1C;AACA;AACA;AACA,iFAAiF;AACjF;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,yDAAyD;AACzD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC5Da;;AAEb;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACbA;;;;;;UCAA;UACA;;UAEA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;;UAEA;UACA;;UAEA;UACA;;UAEA;UACA;UACA;;;;;WCzBA;WACA;WACA;;;;;WCFA;WACA;WACA;WACA;WACA;WACA,iCAAiC,WAAW;WAC5C;WACA;;;;;WCPA;WACA;WACA;WACA;WACA,yCAAyC,wCAAwC;WACjF;WACA;WACA;;;;;WCPA;;;;;WCAA;WACA;WACA;WACA,uDAAuD,iBAAiB;WACxE;WACA,gDAAgD,aAAa;WAC7D;;;;;WCNA;WACA;WACA;WACA;WACA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A;AACA,kCAAkC,OAAO;AACzC;AACA;AACA,IAAI;AACJ;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnDwC;AACA;AACiB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8DAA8D;AAC9D;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa,SAAS;AACtB,YAAY,WAAW;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe;AACf,EAAE,YAAY;AACd,OAAO,MAAM;AACb;AACA;AACA,aAAa,MAAM;AACnB;AACA;;ACzCe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACTmD;AACX;AACiB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,WAAW,QAAQ;AACnB,aAAa,MAAM;AACnB,YAAY,WAAW;AACvB;AACA;AACA;AACA;AACA;AACA;AACe;AACf,EAAE,YAAY;AACd,kBAAkB,MAAM;AACxB,eAAe,SAAS;AACxB;AACA;;AC1B0D;AACD;AACN;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,WAAW,QAAQ;AACnB,aAAa,MAAM;AACnB,YAAY,WAAW;AACvB;AACA;AACA;AACA;AACA;AACA;AACe;AACf,EAAE,YAAY;AACd,eAAe,SAAS;AACxB,SAAS,eAAe;AACxB;;ACzB2C;AACS;AACpD;AACe;AACf,EAAE,YAAY;AACd,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;;ACZ2C;AACS;AACrC;AACf,EAAE,YAAY;AACd;AACA,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;;ACX2C;AACS;AACU;AAC/C;AACf,EAAE,YAAY;AACd,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA,wBAAwB,iBAAiB;AACzC;AACA;AACA;AACA,wBAAwB,iBAAiB;AACzC;AACA;AACA,IAAI;AACJ;AACA,IAAI;AACJ;AACA;AACA;;ACtB8D;AACA;AACV;AACrC;AACf,EAAE,YAAY;AACd,aAAa,iBAAiB;AAC9B;AACA;AACA;AACA,aAAa,iBAAiB;AAC9B;AACA;;ACX2C;AACmB;AACQ;AAClB;AACpD;AACe;AACf,EAAE,YAAY;AACd,aAAa,MAAM;AACnB,aAAa,iBAAiB,mBAAmB,qBAAqB;;AAEtE;AACA;AACA;AACA;AACA;;ACdA;AACO;AACP;AACA;AACO;AACP;AACA;;ACN2C;AACS;AACN;AACiB;AAChD;AACf;AACA,EAAE,YAAY;AACd,uBAAuB,iBAAiB;AACxC,qBAAqB,SAAS;;AAE9B;AACA;AACA;AACA;AACA,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;;ACpB2C;AACS;AACI;AACV;AACiB;AAChD;AACf;AACA,EAAE,YAAY;AACd,aAAa,MAAM;AACnB;AACA,uBAAuB,iBAAiB;AACxC,8BAA8B,SAAS;;AAEvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,cAAc;AACtC;AACA;AACA;AACA,wBAAwB,cAAc;AACtC;AACA;AACA,IAAI;AACJ;AACA,IAAI;AACJ;AACA;AACA;;AChCwD;AACJ;AACI;AACV;AACiB;AAChD;AACf;AACA,EAAE,YAAY;AACd,uBAAuB,iBAAiB;AACxC,8BAA8B,SAAS;AACvC,aAAa,cAAc;AAC3B;AACA;AACA;AACA,aAAa,cAAc;AAC3B;AACA;;AChB2C;AACa;AACQ;AACZ;AACpD,IAAI,+BAAoB;AACT;AACf,EAAE,YAAY;AACd,aAAa,MAAM;AACnB,aAAa,cAAc,4BAA4B,kBAAkB;;AAEzE;AACA;AACA;AACA,2BAA2B,+BAAoB;AAC/C;;ACde;AACf;AACA;AACA;AACA;AACA;AACA;AACA;;ACP6D;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,eAAe;AAC1B,GAAG;AACH;AACA;AACA;AACA,+CAA+C,eAAe;AAC9D,GAAG;AACH;AACA;AACA,WAAW,eAAe;AAC1B,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,WAAW,eAAe;AAC1B,GAAG;AACH;AACA;AACA,WAAW,eAAe;AAC1B,GAAG;AACH;AACA;AACA,WAAW,eAAe;AAC1B,GAAG;AACH;AACA;AACA,WAAW,eAAe;AAC1B,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,WAAW,eAAe;AAC1B;AACA;AACA,sDAAe,UAAU;;AC/E4C;AACJ;AACQ;AACd;AACQ;AACN;AACH;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,IAAI,qBAAU;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,WAAW,eAAe;AAC1B,GAAG;AACH;AACA;AACA,yBAAyB,cAAc;AACvC;AACA;;AAEA;AACA;AACA;AACA,aAAa,eAAe;AAC5B;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA,WAAW,eAAe;AAC1B,GAAG;AACH;AACA;AACA,sBAAsB,iBAAiB;;AAEvC;AACA,WAAW,eAAe;AAC1B,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,eAAe;AAC1B,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,eAAe;AAC9B;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,qCAAqC;AACrC;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,eAAe;AAC9B;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,qCAAqC;AACrC;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,eAAe;AAC9B;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,eAAe;AAC9B;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,GAAG;AACH;AACA;AACA,eAAe,UAAU;AACzB;AACA;AACA;AACA,OAAO;AACP;AACA,WAAW,eAAe;AAC1B,GAAG;AACH;AACA;AACA,kBAAkB,aAAa;AAC/B;AACA;AACA;AACA,OAAO;AACP;AACA,WAAW,eAAe;AAC1B,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,WAAW,eAAe;AAC1B,GAAG;AACH;AACA;AACA,oBAAoB,eAAe;AACnC;AACA;AACA;AACA,OAAO;AACP;AACA,WAAW,eAAe;AAC1B,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,eAAe;AAC9B;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,eAAe;AAC9B;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,eAAe;AAC9B;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,WAAW,eAAe;AAC1B,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,WAAW,eAAe;AAC1B,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,WAAW,eAAe;AAC1B,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,WAAW,eAAe;AAC1B,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,WAAW,eAAe;AAC1B,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,WAAW,eAAe;AAC1B,GAAG;AACH;AACA;AACA,WAAW,eAAe;AAC1B,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,WAAW,eAAe;AAC1B,GAAG;AACH;AACA;AACA;AACA;AACA,WAAW,eAAe;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,eAAe;AAC3D;AACA;AACA;AACA;AACA,kBAAkB,eAAe;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,eAAe;AAC7B,gBAAgB,eAAe;AAC/B;AACA;AACA,wDAAe,qBAAU;;ACnwBzB;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,mCAAmC,MAAM,0DAA0D,MAAM;AACzG;AACA;AACA;AACA;AACA;AACA,4DAAe,cAAc;;AC/E7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe;AACf;AACA;AACA;AACA;;ACfA;AACA;AACO;AACP;AACA;AACO;AACP;AACA;AACO;AACP;AACA,yIAAyI;AACzI,IAAI;AACJ,qIAAqI;AACrI,IAAI;AACJ,+IAA+I;AAC/I,IAAI;AACJ,iJAAiJ;AACjJ;AACA;;AClBA;AACA;AACA;AACA,wBAAwB,QAAQ;AAChC,GAAG;AACH;AACA;AACA,cAAc,QAAQ;AACtB,GAAG;AACH;AACA;AACA;AACA,wBAAwB,QAAQ;AAChC,GAAG;AACH;AACA;AACA,cAAc,QAAQ;AACtB,GAAG;AACH;AACA;AACA,oBAAoB,QAAQ;AAC5B,GAAG;AACH;AACA;AACA,cAAc,QAAQ;AACtB,GAAG;AACH;AACA;AACA,cAAc,QAAQ;AACtB,GAAG;AACH;AACA;AACA,oBAAoB,QAAQ;AAC5B,GAAG;AACH;AACA;AACA,cAAc,QAAQ;AACtB,GAAG;AACH;AACA;AACA,oBAAoB,QAAQ;AAC5B,GAAG;AACH;AACA;AACA,cAAc,QAAQ;AACtB,GAAG;AACH;AACA;AACA,oBAAoB,QAAQ;AAC5B,GAAG;AACH;AACA;AACA,cAAc,QAAQ;AACtB,GAAG;AACH;AACA;AACA,mBAAmB,QAAQ;AAC3B,GAAG;AACH;AACA;AACA,qBAAqB,QAAQ;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA,IAAI;AACJ,yCAAyC,OAAO;AAChD;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA,0DAAe,cAAc;;AClFd;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACRyE;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO,OAAO,MAAM;AAC/B,WAAW,OAAO,OAAO,MAAM;AAC/B,aAAa,MAAM,IAAI,MAAM;AAC7B,YAAY,MAAM,IAAI,MAAM;AAC5B;AACA;AACA,QAAQ,iBAAiB;AACzB;AACA;AACA,GAAG;AACH,QAAQ,iBAAiB;AACzB;AACA;AACA,GAAG;AACH,YAAY,iBAAiB;AAC7B;AACA;AACA,GAAG;AACH;AACA,sDAAe,UAAU;;ACjCzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAAe,cAAc;;ACXd;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBqE;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,eAAe;AACtB;AACA;AACA,GAAG;AACH,WAAW,eAAe;AAC1B;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,SAAS,eAAe;AACxB;AACA;AACA,GAAG;AACH,OAAO,eAAe;AACtB;AACA;AACA,GAAG;AACH,aAAa,eAAe;AAC5B;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,oDAAe,QAAQ;;AC9IR;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,oBAAoB;AACxC;AACA;AACA;AACA;AACA;AACA;;ACzCe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChB+D;AACc;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,mBAAmB;AACpC;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,OAAO,YAAY;AACnB;AACA;AACA;AACA;AACA,GAAG;AACH,WAAW,YAAY;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,SAAS,YAAY;AACrB;AACA;AACA;AACA;AACA,GAAG;AACH,OAAO,YAAY;AACnB;AACA;AACA;AACA;AACA,GAAG;AACH,aAAa,YAAY;AACzB;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,iDAAe,KAAK;;ACjGwC;AACR;AACQ;AACZ;AACN;AAC1C;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,oCAAoC;AACpC,mCAAmC;AACnC;AACA;AACA;AACA,kBAAkB,mBAAc;AAChC,cAAc,eAAU;AACxB,kBAAkB,mBAAc;AAChC,YAAY,aAAQ;AACpB,SAAS,UAAK;AACd;AACA;AACA;AACA;AACA;AACA,4CAAe,MAAM;;AC1BmC;AACxD,oDAAe,KAAa;;ACDc;AACgB;AAClB;AACoB;AACQ;AAC2B;AAC6B;AACzE;AACM;AACW;AACT,CAAC;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,WAAW;AAC5D;AACA,iDAAiD,WAAW;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oEAAoE;AACpE,wBAAwB,4CAA4C;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,QAAQ,iEAAiE;AACpF,WAAW,eAAe;AAC1B,WAAW,QAAQ;AACnB,WAAW,SAAS;AACpB;AACA,WAAW,SAAS;AACpB;AACA,aAAa,QAAQ;AACrB,YAAY,WAAW;AACvB,YAAY,YAAY;AACxB,YAAY,YAAY;AACxB,YAAY,YAAY;AACxB,YAAY,YAAY;AACxB,YAAY,YAAY;AACxB,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eAAe,OAAO;AACpB,UAAM,EAAE,MAAM,IAAI,KAAK;AAEvB,UAAM,SAAS,6CAAM,CAAC,KAAK,CAAC;AAAA,EAC9B;AAAA,EAEA,SAAS;AACP,UAA+B,UAAK,OAA5B,WA5BZ,IA4BmC,IAAV,4BAAU,IAAV,CAAb;AAER,WACE;AAAA,MAAC,iBAAM;AAAN,2DACK,QADL;AAAA,QAEC,UAAU,KAAK;AAAA,QACf,OAAO,MAAM,MAAM;AAAA;AAAA,MAElB;AAAA,IACH;AAAA,EAEJ;AACF;AAjCE,wBADmB,aACZ,aAAY;AAAA,EACjB,UAAU,uCAAmB,CAAC;AAAA,IAC5B,oCAAc;AAAJ,EACZ,CAAC;AAAA,EACD,UAAU,oCAAc;AAAJ,EACpB,OAAO,wCAAoB,CAAC,MAAM;AACpC;;;ACbK;AAG8B;AACH;AACK;AACA;AACN;AACU;AACR;AACK;AACK;AACb;AACY;AACR;AACJ;AACE;AACC;AACF;AACC;AACI;AACL;AACD;AACO;AACP;AACQ;AACP;AACE;AACF;AAGC;AACH;AAGK;AACA;AACE;AACF;AACC;AACC;AACE;AACC;AACJ;AACJ;AACC;AACK;AACN;AACC;AACQ;AACN;AACF;AACI;AACG;AAIC;AACE;AACF;AACC;AACC;AACE;AACC;AACJ;AACJ;AACC;AACK;AACN;AACC;AACQ;AACN;AACF;AACO;AACN;AAIE;AACF;AACA;AACE;AACD;AACC;AACE;AACH;AACJ;AACM;AACL;AACQ;AACR;AAGA;AACD;AACC;AACK;AACA;AAClB","sources":["webpack://@tyk-technologies/tyk-ui/./node_modules/ace-builds/src-noconflict/ace.js","webpack://@tyk-technologies/tyk-ui/./node_modules/ace-builds/src-noconflict/ext-beautify.js","webpack://@tyk-technologies/tyk-ui/./node_modules/ace-builds/src-noconflict/ext-searchbox.js","webpack://@tyk-technologies/tyk-ui/./node_modules/ace-builds/src-noconflict/mode-css.js","webpack://@tyk-technologies/tyk-ui/./node_modules/ace-builds/src-noconflict/mode-golang.js","webpack://@tyk-technologies/tyk-ui/./node_modules/ace-builds/src-noconflict/mode-javascript.js","webpack://@tyk-technologies/tyk-ui/./node_modules/ace-builds/src-noconflict/mode-json.js","webpack://@tyk-technologies/tyk-ui/./node_modules/ace-builds/src-noconflict/mode-jsx.js","webpack://@tyk-technologies/tyk-ui/./node_modules/ace-builds/src-noconflict/mode-python.js","webpack://@tyk-technologies/tyk-ui/./node_modules/ace-builds/src-noconflict/mode-xml.js","webpack://@tyk-technologies/tyk-ui/./node_modules/ace-builds/src-noconflict/theme-github.js","webpack://@tyk-technologies/tyk-ui/./node_modules/flatpickr/dist/flatpickr.min.css","webpack://@tyk-technologies/tyk-ui/./node_modules/css-loader/dist/runtime/api.js","webpack://@tyk-technologies/tyk-ui/./node_modules/css-loader/dist/runtime/sourceMaps.js","webpack://@tyk-technologies/tyk-ui/./node_modules/react-dom/client.js","webpack://@tyk-technologies/tyk-ui/./node_modules/react-fast-compare/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js","webpack://@tyk-technologies/tyk-ui/./node_modules/style-loader/dist/runtime/insertBySelector.js","webpack://@tyk-technologies/tyk-ui/./node_modules/style-loader/dist/runtime/insertStyleElement.js","webpack://@tyk-technologies/tyk-ui/./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js","webpack://@tyk-technologies/tyk-ui/./node_modules/style-loader/dist/runtime/styleDomAPI.js","webpack://@tyk-technologies/tyk-ui/./node_modules/style-loader/dist/runtime/styleTagTransform.js","webpack://@tyk-technologies/tyk-ui/external commonjs2 \"react-dom\"","webpack://@tyk-technologies/tyk-ui/webpack/bootstrap","webpack://@tyk-technologies/tyk-ui/webpack/runtime/amd define","webpack://@tyk-technologies/tyk-ui/webpack/runtime/compat get default export","webpack://@tyk-technologies/tyk-ui/webpack/runtime/define property getters","webpack://@tyk-technologies/tyk-ui/webpack/runtime/hasOwnProperty shorthand","webpack://@tyk-technologies/tyk-ui/webpack/runtime/make namespace object","webpack://@tyk-technologies/tyk-ui/webpack/runtime/node module decorator","webpack://@tyk-technologies/tyk-ui/webpack/runtime/publicPath","webpack://@tyk-technologies/tyk-ui/webpack/runtime/nonce","webpack://@tyk-technologies/tyk-ui/external commonjs2 \"react\"","webpack://@tyk-technologies/tyk-ui/external commonjs2 \"prop-types\"","webpack://@tyk-technologies/tyk-ui/./src/components/Accordion/js/AccordionContext.js","webpack://@tyk-technologies/tyk-ui/./src/components/Accordion/js/AccordionItemContext.js","webpack://@tyk-technologies/tyk-ui/./src/components/Icon/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Accordion/js/AccordionItemTrigger.js","webpack://@tyk-technologies/tyk-ui/./src/components/Accordion/js/AccordionItem.js","webpack://@tyk-technologies/tyk-ui/./src/components/Accordion/js/AccordionItemHeader.js","webpack://@tyk-technologies/tyk-ui/external commonjs2 \"react-transition-group\"","webpack://@tyk-technologies/tyk-ui/./src/hooks/usePrevious/index.js","webpack://@tyk-technologies/tyk-ui/./src/hooks/useTimeout/index.js","webpack://@tyk-technologies/tyk-ui/./src/hooks/useInterval/index.js","webpack://@tyk-technologies/tyk-ui/./src/hooks/useEventListener/index.js","webpack://@tyk-technologies/tyk-ui/./src/hooks/useComponentSize/index.js","webpack://@tyk-technologies/tyk-ui/./src/hooks/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Collapsible/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Accordion/js/AccordionItemContent.js","webpack://@tyk-technologies/tyk-ui/./src/components/Accordion/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Button/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/ButtonGroup/index.js","webpack://@tyk-technologies/tyk-ui/external commonjs2 \"echarts\"","webpack://@tyk-technologies/tyk-ui/external commonjs2 \"immutable\"","webpack://@tyk-technologies/tyk-ui/./src/utils/debounce/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Loader/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Message/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Chart/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Toast/js/ToastMessage.js","webpack://@tyk-technologies/tyk-ui/./src/components/Toast/js/ToastContainer.js","webpack://@tyk-technologies/tyk-ui/./src/components/Toast/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/CopyToClipboard/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Modal/js/ModalFooter.js","webpack://@tyk-technologies/tyk-ui/./src/components/Modal/js/ModalBody.js","webpack://@tyk-technologies/tyk-ui/./src/components/Modal/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Confirm/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/FixedWrapper/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/InfiniteScroller/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/FloatingContainer/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/InfoNote/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/List/js/ListItem.js","webpack://@tyk-technologies/tyk-ui/./src/components/List/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/NavBar/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Navigation/js/NavigationItem.js","webpack://@tyk-technologies/tyk-ui/./src/components/Navigation/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Panel/panel-context.js","webpack://@tyk-technologies/tyk-ui/./src/components/Panel/js/PanelBody.js","webpack://@tyk-technologies/tyk-ui/./src/components/Panel/js/PanelFooter.js","webpack://@tyk-technologies/tyk-ui/./src/components/Panel/js/PanelHeader.js","webpack://@tyk-technologies/tyk-ui/./src/components/Panel/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Pill/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/RevealPanel/js/RevealPanelService.js","webpack://@tyk-technologies/tyk-ui/./src/components/RevealPanel/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Tabs/tabs-context.js","webpack://@tyk-technologies/tyk-ui/./src/components/Tabs/js/TabContext.js","webpack://@tyk-technologies/tyk-ui/./src/components/Tabs/js/TabContent.js","webpack://@tyk-technologies/tyk-ui/./src/components/Tabs/js/Tab.js","webpack://@tyk-technologies/tyk-ui/./src/components/Tabs/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Tooltip/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/TextEllipsis/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Pagination/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Table/tableContext.js","webpack://@tyk-technologies/tyk-ui/./src/components/Table/js/header-cell.js","webpack://@tyk-technologies/tyk-ui/./src/components/Table/js/header.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Checkbox/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Table/js/cell.js","webpack://@tyk-technologies/tyk-ui/./src/components/Table/js/row.js","webpack://@tyk-technologies/tyk-ui/./src/components/Table/js/body.js","webpack://@tyk-technologies/tyk-ui/./src/components/Table/index.js","webpack://@tyk-technologies/tyk-ui/./src/layout/Column/index.js","webpack://@tyk-technologies/tyk-ui/./src/layout/Row/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Dropdown/dropdown-context.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Dropdown/js/DropdownItem.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Dropdown/index.js","webpack://@tyk-technologies/tyk-ui/external commonjs2 \"react-ace\"","webpack://@tyk-technologies/tyk-ui/./src/form/components/CodeEditor/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Combobox/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Combobox2/js/Value.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Combobox2/js/List.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Combobox2/index.js","webpack://@tyk-technologies/tyk-ui/external commonjs2 \"flatpickr\"","webpack://@tyk-technologies/tyk-ui/./node_modules/flatpickr/dist/flatpickr.min.css?e03b","webpack://@tyk-technologies/tyk-ui/./src/form/components/DatePicker/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/@babel/runtime/helpers/esm/typeof.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/requiredArgs/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/isDate/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/toDate/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/isValid/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/toInteger/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/addMilliseconds/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/subMilliseconds/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/getUTCDayOfYear/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/startOfUTCISOWeek/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/getUTCISOWeekYear/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/startOfUTCISOWeekYear/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/getUTCISOWeek/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/defaultOptions/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/startOfUTCWeek/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/getUTCWeekYear/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/startOfUTCWeekYear/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/getUTCWeek/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/addLeadingZeros/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/format/lightFormatters/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/format/formatters/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/format/longFormatters/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/getTimezoneOffsetInMilliseconds/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/protectedTokens/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/locale/en-US/_lib/formatDistance/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/locale/_lib/buildFormatLongFn/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/locale/en-US/_lib/formatLong/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/locale/en-US/_lib/formatRelative/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/locale/_lib/buildLocalizeFn/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/locale/en-US/_lib/localize/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/locale/_lib/buildMatchFn/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/locale/_lib/buildMatchPatternFn/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/locale/en-US/_lib/match/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/locale/en-US/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/defaultLocale/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/format/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/EditableList/js/EditableListForm.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/EditableList/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/EditableList2/Header.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/EditableList2/ListHeader.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/EditableList2/FieldsList.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/EditableList2/validate-values.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/EditableList2/with-validation.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/EditableList2/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/FileInput/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Input/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Input2/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Multiselect/js/MultiselectContext.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Multiselect/js/MultiselectItem.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Multiselect/js/MultiselectPanel.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Multiselect/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Radio/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Select/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/SelectableList/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Textarea/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Toggle/js/ToggleContext.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Toggle/js/ToggleItem.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Toggle/js/ToggleItemWrapper.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Toggle/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/StringBuilder/js/service.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/StringBuilder/js/string-input.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/StringBuilder/js/invalid-token.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/StringBuilder/js/tokenized-string.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/StringBuilder/js/options-list.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/StringBuilder/js/string-builder-footer.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/StringBuilder/index.js","webpack://@tyk-technologies/tyk-ui/./src/utils/config/config.js","webpack://@tyk-technologies/tyk-ui/./src/utils/formik/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikCheckbox/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikCodeEditor/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikCombobox/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikCombobox2/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikDatePicker/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikEditableList/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikEditableList2/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikFileInput/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikInput/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikInput2/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikMultiselect/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikRadio/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikSelect/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikSelectableList/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikTextarea/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikToggle/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikStringBuilder/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/redux-form/FieldCodeEditor/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/redux-form/FieldCombobox/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/redux-form/FieldDropdown/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/redux-form/FieldPagination/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/redux-form/FieldCombobox2/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/redux-form/FieldDatePicker/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/redux-form/FieldEditableList/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/redux-form/FieldFileInput/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/redux-form/FieldInput/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/redux-form/FieldMultiselect/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/redux-form/FieldSelect/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/redux-form/FieldSelectableList/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/redux-form/FieldToggle/index.js","webpack://@tyk-technologies/tyk-ui/./src/index.js"],"sourcesContent":["/* ***** BEGIN LICENSE BLOCK *****\n * Distributed under the BSD license:\n *\n * Copyright (c) 2010, Ajax.org B.V.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright\n * notice, this list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright\n * notice, this list of conditions and the following disclaimer in the\n * documentation and/or other materials provided with the distribution.\n * * Neither the name of Ajax.org B.V. nor the\n * names of its contributors may be used to endorse or promote products\n * derived from this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\n * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY\n * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\n * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *\n * ***** END LICENSE BLOCK ***** */\n\n/**\n * Define a module along with a payload\n * @param module a name for the payload\n * @param payload a function to call with (require, exports, module) params\n */\n\n(function() {\n\nvar ACE_NAMESPACE = \"ace\";\n\nvar global = (function() { return this; })();\nif (!global && typeof window != \"undefined\") global = window; // strict mode\n\n\nif (!ACE_NAMESPACE && typeof requirejs !== \"undefined\")\n return;\n\n\nvar define = function(module, deps, payload) {\n if (typeof module !== \"string\") {\n if (define.original)\n define.original.apply(this, arguments);\n else {\n console.error(\"dropping module because define wasn\\'t a string.\");\n console.trace();\n }\n return;\n }\n if (arguments.length == 2)\n payload = deps;\n if (!define.modules[module]) {\n define.payloads[module] = payload;\n define.modules[module] = null;\n }\n};\n\ndefine.modules = {};\ndefine.payloads = {};\n\n/**\n * Get at functionality define()ed using the function above\n */\nvar _require = function(parentId, module, callback) {\n if (typeof module === \"string\") {\n var payload = lookup(parentId, module);\n if (payload != undefined) {\n callback && callback();\n return payload;\n }\n } else if (Object.prototype.toString.call(module) === \"[object Array]\") {\n var params = [];\n for (var i = 0, l = module.length; i < l; ++i) {\n var dep = lookup(parentId, module[i]);\n if (dep == undefined && require.original)\n return;\n params.push(dep);\n }\n return callback && callback.apply(null, params) || true;\n }\n};\n\nvar require = function(module, callback) {\n var packagedModule = _require(\"\", module, callback);\n if (packagedModule == undefined && require.original)\n return require.original.apply(this, arguments);\n return packagedModule;\n};\n\nvar normalizeModule = function(parentId, moduleName) {\n // normalize plugin requires\n if (moduleName.indexOf(\"!\") !== -1) {\n var chunks = moduleName.split(\"!\");\n return normalizeModule(parentId, chunks[0]) + \"!\" + normalizeModule(parentId, chunks[1]);\n }\n // normalize relative requires\n if (moduleName.charAt(0) == \".\") {\n var base = parentId.split(\"/\").slice(0, -1).join(\"/\");\n moduleName = base + \"/\" + moduleName;\n\n while(moduleName.indexOf(\".\") !== -1 && previous != moduleName) {\n var previous = moduleName;\n moduleName = moduleName.replace(/\\/\\.\\//, \"/\").replace(/[^\\/]+\\/\\.\\.\\//, \"\");\n }\n }\n return moduleName;\n};\n\n/**\n * Internal function to lookup moduleNames and resolve them by calling the\n * definition function if needed.\n */\nvar lookup = function(parentId, moduleName) {\n moduleName = normalizeModule(parentId, moduleName);\n\n var module = define.modules[moduleName];\n if (!module) {\n module = define.payloads[moduleName];\n if (typeof module === 'function') {\n var exports = {};\n var mod = {\n id: moduleName,\n uri: '',\n exports: exports,\n packaged: true\n };\n\n var req = function(module, callback) {\n return _require(moduleName, module, callback);\n };\n\n var returnValue = module(req, exports, mod);\n exports = returnValue || mod.exports;\n define.modules[moduleName] = exports;\n delete define.payloads[moduleName];\n }\n module = define.modules[moduleName] = exports || module;\n }\n return module;\n};\n\nfunction exportAce(ns) {\n var root = global;\n if (ns) {\n if (!global[ns])\n global[ns] = {};\n root = global[ns];\n }\n\n if (!root.define || !root.define.packaged) {\n define.original = root.define;\n root.define = define;\n root.define.packaged = true;\n }\n\n if (!root.require || !root.require.packaged) {\n require.original = root.require;\n root.require = require;\n root.require.packaged = true;\n }\n}\n\nexportAce(ACE_NAMESPACE);\n\n})();\n\nace.define(\"ace/lib/es6-shim\",[\"require\",\"exports\",\"module\"], function(require, exports, module){function defineProp(obj, name, val) {\n Object.defineProperty(obj, name, {\n value: val,\n enumerable: false,\n writable: true,\n configurable: true\n });\n}\nif (!String.prototype.startsWith) {\n defineProp(String.prototype, \"startsWith\", function (searchString, position) {\n position = position || 0;\n return this.lastIndexOf(searchString, position) === position;\n });\n}\nif (!String.prototype.endsWith) {\n defineProp(String.prototype, \"endsWith\", function (searchString, position) {\n var subjectString = this;\n if (position === undefined || position > subjectString.length) {\n position = subjectString.length;\n }\n position -= searchString.length;\n var lastIndex = subjectString.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n });\n}\nif (!String.prototype.repeat) {\n defineProp(String.prototype, \"repeat\", function (count) {\n var result = \"\";\n var string = this;\n while (count > 0) {\n if (count & 1)\n result += string;\n if ((count >>= 1))\n string += string;\n }\n return result;\n });\n}\nif (!String.prototype.includes) {\n defineProp(String.prototype, \"includes\", function (str, position) {\n return this.indexOf(str, position) != -1;\n });\n}\nif (!Object.assign) {\n Object.assign = function (target) {\n if (target === undefined || target === null) {\n throw new TypeError(\"Cannot convert undefined or null to object\");\n }\n var output = Object(target);\n for (var index = 1; index < arguments.length; index++) {\n var source = arguments[index];\n if (source !== undefined && source !== null) {\n Object.keys(source).forEach(function (key) {\n output[key] = source[key];\n });\n }\n }\n return output;\n };\n}\nif (!Object.values) {\n Object.values = function (o) {\n return Object.keys(o).map(function (k) {\n return o[k];\n });\n };\n}\nif (!Array.prototype.find) {\n defineProp(Array.prototype, \"find\", function (predicate) {\n var len = this.length;\n var thisArg = arguments[1];\n for (var k = 0; k < len; k++) {\n var kValue = this[k];\n if (predicate.call(thisArg, kValue, k, this)) {\n return kValue;\n }\n }\n });\n}\nif (!Array.prototype.findIndex) {\n defineProp(Array.prototype, \"findIndex\", function (predicate) {\n var len = this.length;\n var thisArg = arguments[1];\n for (var k = 0; k < len; k++) {\n var kValue = this[k];\n if (predicate.call(thisArg, kValue, k, this)) {\n return k;\n }\n }\n });\n}\nif (!Array.prototype.includes) {\n defineProp(Array.prototype, \"includes\", function (item, position) {\n return this.indexOf(item, position) != -1;\n });\n}\nif (!Array.prototype.fill) {\n defineProp(Array.prototype, \"fill\", function (value) {\n var O = this;\n var len = O.length >>> 0;\n var start = arguments[1];\n var relativeStart = start >> 0;\n var k = relativeStart < 0\n ? Math.max(len + relativeStart, 0)\n : Math.min(relativeStart, len);\n var end = arguments[2];\n var relativeEnd = end === undefined ? len : end >> 0;\n var final = relativeEnd < 0\n ? Math.max(len + relativeEnd, 0)\n : Math.min(relativeEnd, len);\n while (k < final) {\n O[k] = value;\n k++;\n }\n return O;\n });\n}\nif (!Array.of) {\n defineProp(Array, \"of\", function () {\n return Array.prototype.slice.call(arguments);\n });\n}\n\n});\n\nace.define(\"ace/lib/fixoldbrowsers\",[\"require\",\"exports\",\"module\",\"ace/lib/es6-shim\"], function(require, exports, module){// vim:set ts=4 sts=4 sw=4 st:\n\"use strict\";\nrequire(\"./es6-shim\");\n\n});\n\nace.define(\"ace/lib/deep_copy\",[\"require\",\"exports\",\"module\"], function(require, exports, module){exports.deepCopy = function deepCopy(obj) {\n if (typeof obj !== \"object\" || !obj)\n return obj;\n var copy;\n if (Array.isArray(obj)) {\n copy = [];\n for (var key = 0; key < obj.length; key++) {\n copy[key] = deepCopy(obj[key]);\n }\n return copy;\n }\n if (Object.prototype.toString.call(obj) !== \"[object Object]\")\n return obj;\n copy = {};\n for (var key in obj)\n copy[key] = deepCopy(obj[key]);\n return copy;\n};\n\n});\n\nace.define(\"ace/lib/lang\",[\"require\",\"exports\",\"module\",\"ace/lib/deep_copy\"], function(require, exports, module){\"use strict\";\nexports.last = function (a) {\n return a[a.length - 1];\n};\nexports.stringReverse = function (string) {\n return string.split(\"\").reverse().join(\"\");\n};\nexports.stringRepeat = function (string, count) {\n var result = '';\n while (count > 0) {\n if (count & 1)\n result += string;\n if (count >>= 1)\n string += string;\n }\n return result;\n};\nvar trimBeginRegexp = /^\\s\\s*/;\nvar trimEndRegexp = /\\s\\s*$/;\nexports.stringTrimLeft = function (string) {\n return string.replace(trimBeginRegexp, '');\n};\nexports.stringTrimRight = function (string) {\n return string.replace(trimEndRegexp, '');\n};\nexports.copyObject = function (obj) {\n var copy = {};\n for (var key in obj) {\n copy[key] = obj[key];\n }\n return copy;\n};\nexports.copyArray = function (array) {\n var copy = [];\n for (var i = 0, l = array.length; i < l; i++) {\n if (array[i] && typeof array[i] == \"object\")\n copy[i] = this.copyObject(array[i]);\n else\n copy[i] = array[i];\n }\n return copy;\n};\nexports.deepCopy = require(\"./deep_copy\").deepCopy;\nexports.arrayToMap = function (arr) {\n var map = {};\n for (var i = 0; i < arr.length; i++) {\n map[arr[i]] = 1;\n }\n return map;\n};\nexports.createMap = function (props) {\n var map = Object.create(null);\n for (var i in props) {\n map[i] = props[i];\n }\n return map;\n};\nexports.arrayRemove = function (array, value) {\n for (var i = 0; i <= array.length; i++) {\n if (value === array[i]) {\n array.splice(i, 1);\n }\n }\n};\nexports.escapeRegExp = function (str) {\n return str.replace(/([.*+?^${}()|[\\]\\/\\\\])/g, '\\\\$1');\n};\nexports.escapeHTML = function (str) {\n return (\"\" + str).replace(/&/g, \"&\").replace(/\"/g, \""\").replace(/'/g, \"'\").replace(/ 0xffff ? 2 : 1;\n};\n\n});\n\nace.define(\"ace/lib/useragent\",[\"require\",\"exports\",\"module\"], function(require, exports, module){\"use strict\";\nexports.OS = {\n LINUX: \"LINUX\",\n MAC: \"MAC\",\n WINDOWS: \"WINDOWS\"\n};\nexports.getOS = function () {\n if (exports.isMac) {\n return exports.OS.MAC;\n }\n else if (exports.isLinux) {\n return exports.OS.LINUX;\n }\n else {\n return exports.OS.WINDOWS;\n }\n};\nvar _navigator = typeof navigator == \"object\" ? navigator : {};\nvar os = (/mac|win|linux/i.exec(_navigator.platform) || [\"other\"])[0].toLowerCase();\nvar ua = _navigator.userAgent || \"\";\nvar appName = _navigator.appName || \"\";\nexports.isWin = (os == \"win\");\nexports.isMac = (os == \"mac\");\nexports.isLinux = (os == \"linux\");\nexports.isIE =\n (appName == \"Microsoft Internet Explorer\" || appName.indexOf(\"MSAppHost\") >= 0)\n ? parseFloat((ua.match(/(?:MSIE |Trident\\/[0-9]+[\\.0-9]+;.*rv:)([0-9]+[\\.0-9]+)/) || [])[1])\n : parseFloat((ua.match(/(?:Trident\\/[0-9]+[\\.0-9]+;.*rv:)([0-9]+[\\.0-9]+)/) || [])[1]); // for ie\nexports.isOldIE = exports.isIE && exports.isIE < 9;\nexports.isGecko = exports.isMozilla = ua.match(/ Gecko\\/\\d+/);\nexports.isOpera = typeof opera == \"object\" && Object.prototype.toString.call(window.opera) == \"[object Opera]\";\nexports.isWebKit = parseFloat(ua.split(\"WebKit/\")[1]) || undefined;\nexports.isChrome = parseFloat(ua.split(\" Chrome/\")[1]) || undefined;\nexports.isSafari = parseFloat(ua.split(\" Safari/\")[1]) && !exports.isChrome || undefined;\nexports.isEdge = parseFloat(ua.split(\" Edge/\")[1]) || undefined;\nexports.isAIR = ua.indexOf(\"AdobeAIR\") >= 0;\nexports.isAndroid = ua.indexOf(\"Android\") >= 0;\nexports.isChromeOS = ua.indexOf(\" CrOS \") >= 0;\nexports.isIOS = /iPad|iPhone|iPod/.test(ua) && !window.MSStream;\nif (exports.isIOS)\n exports.isMac = true;\nexports.isMobile = exports.isIOS || exports.isAndroid;\n\n});\n\nace.define(\"ace/lib/dom\",[\"require\",\"exports\",\"module\",\"ace/lib/useragent\"], function(require, exports, module){\"use strict\";\nvar useragent = require(\"./useragent\");\nvar XHTML_NS = \"http://www.w3.org/1999/xhtml\";\nexports.buildDom = function buildDom(arr, parent, refs) {\n if (typeof arr == \"string\" && arr) {\n var txt = document.createTextNode(arr);\n if (parent)\n parent.appendChild(txt);\n return txt;\n }\n if (!Array.isArray(arr)) {\n if (arr && arr.appendChild && parent)\n parent.appendChild(arr);\n return arr;\n }\n if (typeof arr[0] != \"string\" || !arr[0]) {\n var els = [];\n for (var i = 0; i < arr.length; i++) {\n var ch = buildDom(arr[i], parent, refs);\n ch && els.push(ch);\n }\n return els;\n }\n var el = document.createElement(arr[0]);\n var options = arr[1];\n var childIndex = 1;\n if (options && typeof options == \"object\" && !Array.isArray(options))\n childIndex = 2;\n for (var i = childIndex; i < arr.length; i++)\n buildDom(arr[i], el, refs);\n if (childIndex == 2) {\n Object.keys(options).forEach(function (n) {\n var val = options[n];\n if (n === \"class\") {\n el.className = Array.isArray(val) ? val.join(\" \") : val;\n }\n else if (typeof val == \"function\" || n == \"value\" || n[0] == \"$\") {\n el[n] = val;\n }\n else if (n === \"ref\") {\n if (refs)\n refs[val] = el;\n }\n else if (n === \"style\") {\n if (typeof val == \"string\")\n el.style.cssText = val;\n }\n else if (val != null) {\n el.setAttribute(n, val);\n }\n });\n }\n if (parent)\n parent.appendChild(el);\n return el;\n};\nexports.getDocumentHead = function (doc) {\n if (!doc)\n doc = document;\n return doc.head || doc.getElementsByTagName(\"head\")[0] || doc.documentElement;\n};\nexports.createElement = function (tag, ns) {\n return document.createElementNS ?\n document.createElementNS(ns || XHTML_NS, tag) :\n document.createElement(tag);\n};\nexports.removeChildren = function (element) {\n element.innerHTML = \"\";\n};\nexports.createTextNode = function (textContent, element) {\n var doc = element ? element.ownerDocument : document;\n return doc.createTextNode(textContent);\n};\nexports.createFragment = function (element) {\n var doc = element ? element.ownerDocument : document;\n return doc.createDocumentFragment();\n};\nexports.hasCssClass = function (el, name) {\n var classes = (el.className + \"\").split(/\\s+/g);\n return classes.indexOf(name) !== -1;\n};\nexports.addCssClass = function (el, name) {\n if (!exports.hasCssClass(el, name)) {\n el.className += \" \" + name;\n }\n};\nexports.removeCssClass = function (el, name) {\n var classes = el.className.split(/\\s+/g);\n while (true) {\n var index = classes.indexOf(name);\n if (index == -1) {\n break;\n }\n classes.splice(index, 1);\n }\n el.className = classes.join(\" \");\n};\nexports.toggleCssClass = function (el, name) {\n var classes = el.className.split(/\\s+/g), add = true;\n while (true) {\n var index = classes.indexOf(name);\n if (index == -1) {\n break;\n }\n add = false;\n classes.splice(index, 1);\n }\n if (add)\n classes.push(name);\n el.className = classes.join(\" \");\n return add;\n};\nexports.setCssClass = function (node, className, include) {\n if (include) {\n exports.addCssClass(node, className);\n }\n else {\n exports.removeCssClass(node, className);\n }\n};\nexports.hasCssString = function (id, doc) {\n var index = 0, sheets;\n doc = doc || document;\n if ((sheets = doc.querySelectorAll(\"style\"))) {\n while (index < sheets.length) {\n if (sheets[index++].id === id) {\n return true;\n }\n }\n }\n};\nexports.removeElementById = function (id, doc) {\n doc = doc || document;\n if (doc.getElementById(id)) {\n doc.getElementById(id).remove();\n }\n};\nvar strictCSP;\nvar cssCache = [];\nexports.useStrictCSP = function (value) {\n strictCSP = value;\n if (value == false)\n insertPendingStyles();\n else if (!cssCache)\n cssCache = [];\n};\nfunction insertPendingStyles() {\n var cache = cssCache;\n cssCache = null;\n cache && cache.forEach(function (item) {\n importCssString(item[0], item[1]);\n });\n}\nfunction importCssString(cssText, id, target) {\n if (typeof document == \"undefined\")\n return;\n if (cssCache) {\n if (target) {\n insertPendingStyles();\n }\n else if (target === false) {\n return cssCache.push([cssText, id]);\n }\n }\n if (strictCSP)\n return;\n var container = target;\n if (!target || !target.getRootNode) {\n container = document;\n }\n else {\n container = target.getRootNode();\n if (!container || container == target)\n container = document;\n }\n var doc = container.ownerDocument || container;\n if (id && exports.hasCssString(id, container))\n return null;\n if (id)\n cssText += \"\\n/*# sourceURL=ace/css/\" + id + \" */\";\n var style = exports.createElement(\"style\");\n style.appendChild(doc.createTextNode(cssText));\n if (id)\n style.id = id;\n if (container == doc)\n container = exports.getDocumentHead(doc);\n container.insertBefore(style, container.firstChild);\n}\nexports.importCssString = importCssString;\nexports.importCssStylsheet = function (uri, doc) {\n exports.buildDom([\"link\", { rel: \"stylesheet\", href: uri }], exports.getDocumentHead(doc));\n};\nexports.scrollbarWidth = function (doc) {\n var inner = exports.createElement(\"ace_inner\");\n inner.style.width = \"100%\";\n inner.style.minWidth = \"0px\";\n inner.style.height = \"200px\";\n inner.style.display = \"block\";\n var outer = exports.createElement(\"ace_outer\");\n var style = outer.style;\n style.position = \"absolute\";\n style.left = \"-10000px\";\n style.overflow = \"hidden\";\n style.width = \"200px\";\n style.minWidth = \"0px\";\n style.height = \"150px\";\n style.display = \"block\";\n outer.appendChild(inner);\n var body = (doc && doc.documentElement) || (document && document.documentElement);\n if (!body)\n return 0;\n body.appendChild(outer);\n var noScrollbar = inner.offsetWidth;\n style.overflow = \"scroll\";\n var withScrollbar = inner.offsetWidth;\n if (noScrollbar === withScrollbar) {\n withScrollbar = outer.clientWidth;\n }\n body.removeChild(outer);\n return noScrollbar - withScrollbar;\n};\nexports.computedStyle = function (element, style) {\n return window.getComputedStyle(element, \"\") || {};\n};\nexports.setStyle = function (styles, property, value) {\n if (styles[property] !== value) {\n styles[property] = value;\n }\n};\nexports.HAS_CSS_ANIMATION = false;\nexports.HAS_CSS_TRANSFORMS = false;\nexports.HI_DPI = useragent.isWin\n ? typeof window !== \"undefined\" && window.devicePixelRatio >= 1.5\n : true;\nif (useragent.isChromeOS)\n exports.HI_DPI = false;\nif (typeof document !== \"undefined\") {\n var div = document.createElement(\"div\");\n if (exports.HI_DPI && div.style.transform !== undefined)\n exports.HAS_CSS_TRANSFORMS = true;\n if (!useragent.isEdge && typeof div.style.animationName !== \"undefined\")\n exports.HAS_CSS_ANIMATION = true;\n div = null;\n}\nif (exports.HAS_CSS_TRANSFORMS) {\n exports.translate = function (element, tx, ty) {\n element.style.transform = \"translate(\" + Math.round(tx) + \"px, \" + Math.round(ty) + \"px)\";\n };\n}\nelse {\n exports.translate = function (element, tx, ty) {\n element.style.top = Math.round(ty) + \"px\";\n element.style.left = Math.round(tx) + \"px\";\n };\n}\n\n});\n\nace.define(\"ace/lib/net\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"], function(require, exports, module){/*\n * based on code from:\n *\n * @license RequireJS text 0.25.0 Copyright (c) 2010-2011, The Dojo Foundation All Rights Reserved.\n * Available via the MIT or new BSD license.\n * see: http://github.com/jrburke/requirejs for details\n */\n\"use strict\";\nvar dom = require(\"./dom\");\nexports.get = function (url, callback) {\n var xhr = new XMLHttpRequest();\n xhr.open('GET', url, true);\n xhr.onreadystatechange = function () {\n if (xhr.readyState === 4) {\n callback(xhr.responseText);\n }\n };\n xhr.send(null);\n};\nexports.loadScript = function (path, callback) {\n var head = dom.getDocumentHead();\n var s = document.createElement('script');\n s.src = path;\n head.appendChild(s);\n s.onload = s.onreadystatechange = function (_, isAbort) {\n if (isAbort || !s.readyState || s.readyState == \"loaded\" || s.readyState == \"complete\") {\n s = s.onload = s.onreadystatechange = null;\n if (!isAbort)\n callback();\n }\n };\n};\nexports.qualifyURL = function (url) {\n var a = document.createElement('a');\n a.href = url;\n return a.href;\n};\n\n});\n\nace.define(\"ace/lib/oop\",[\"require\",\"exports\",\"module\"], function(require, exports, module){\"use strict\";\nexports.inherits = function (ctor, superCtor) {\n ctor.super_ = superCtor;\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n};\nexports.mixin = function (obj, mixin) {\n for (var key in mixin) {\n obj[key] = mixin[key];\n }\n return obj;\n};\nexports.implement = function (proto, mixin) {\n exports.mixin(proto, mixin);\n};\n\n});\n\nace.define(\"ace/lib/event_emitter\",[\"require\",\"exports\",\"module\"], function(require, exports, module){\"use strict\";\nvar EventEmitter = {};\nvar stopPropagation = function () { this.propagationStopped = true; };\nvar preventDefault = function () { this.defaultPrevented = true; };\nEventEmitter._emit =\n EventEmitter._dispatchEvent = function (eventName, e) {\n this._eventRegistry || (this._eventRegistry = {});\n this._defaultHandlers || (this._defaultHandlers = {});\n var listeners = this._eventRegistry[eventName] || [];\n var defaultHandler = this._defaultHandlers[eventName];\n if (!listeners.length && !defaultHandler)\n return;\n if (typeof e != \"object\" || !e)\n e = {};\n if (!e.type)\n e.type = eventName;\n if (!e.stopPropagation)\n e.stopPropagation = stopPropagation;\n if (!e.preventDefault)\n e.preventDefault = preventDefault;\n listeners = listeners.slice();\n for (var i = 0; i < listeners.length; i++) {\n listeners[i](e, this);\n if (e.propagationStopped)\n break;\n }\n if (defaultHandler && !e.defaultPrevented)\n return defaultHandler(e, this);\n };\nEventEmitter._signal = function (eventName, e) {\n var listeners = (this._eventRegistry || {})[eventName];\n if (!listeners)\n return;\n listeners = listeners.slice();\n for (var i = 0; i < listeners.length; i++)\n listeners[i](e, this);\n};\nEventEmitter.once = function (eventName, callback) {\n var _self = this;\n this.on(eventName, function newCallback() {\n _self.off(eventName, newCallback);\n callback.apply(null, arguments);\n });\n if (!callback) {\n return new Promise(function (resolve) {\n callback = resolve;\n });\n }\n};\nEventEmitter.setDefaultHandler = function (eventName, callback) {\n var handlers = this._defaultHandlers;\n if (!handlers)\n handlers = this._defaultHandlers = { _disabled_: {} };\n if (handlers[eventName]) {\n var old = handlers[eventName];\n var disabled = handlers._disabled_[eventName];\n if (!disabled)\n handlers._disabled_[eventName] = disabled = [];\n disabled.push(old);\n var i = disabled.indexOf(callback);\n if (i != -1)\n disabled.splice(i, 1);\n }\n handlers[eventName] = callback;\n};\nEventEmitter.removeDefaultHandler = function (eventName, callback) {\n var handlers = this._defaultHandlers;\n if (!handlers)\n return;\n var disabled = handlers._disabled_[eventName];\n if (handlers[eventName] == callback) {\n if (disabled)\n this.setDefaultHandler(eventName, disabled.pop());\n }\n else if (disabled) {\n var i = disabled.indexOf(callback);\n if (i != -1)\n disabled.splice(i, 1);\n }\n};\nEventEmitter.on =\n EventEmitter.addEventListener = function (eventName, callback, capturing) {\n this._eventRegistry = this._eventRegistry || {};\n var listeners = this._eventRegistry[eventName];\n if (!listeners)\n listeners = this._eventRegistry[eventName] = [];\n if (listeners.indexOf(callback) == -1)\n listeners[capturing ? \"unshift\" : \"push\"](callback);\n return callback;\n };\nEventEmitter.off =\n EventEmitter.removeListener =\n EventEmitter.removeEventListener = function (eventName, callback) {\n this._eventRegistry = this._eventRegistry || {};\n var listeners = this._eventRegistry[eventName];\n if (!listeners)\n return;\n var index = listeners.indexOf(callback);\n if (index !== -1)\n listeners.splice(index, 1);\n };\nEventEmitter.removeAllListeners = function (eventName) {\n if (!eventName)\n this._eventRegistry = this._defaultHandlers = undefined;\n if (this._eventRegistry)\n this._eventRegistry[eventName] = undefined;\n if (this._defaultHandlers)\n this._defaultHandlers[eventName] = undefined;\n};\nexports.EventEmitter = EventEmitter;\n\n});\n\nace.define(\"ace/lib/report_error\",[\"require\",\"exports\",\"module\"], function(require, exports, module){exports.reportError = function reportError(msg, data) {\n var e = new Error(msg);\n e.data = data;\n if (typeof console == \"object\" && console.error)\n console.error(e);\n setTimeout(function () { throw e; });\n};\n\n});\n\nace.define(\"ace/lib/app_config\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/event_emitter\",\"ace/lib/report_error\"], function(require, exports, module){\"no use strict\";\nvar oop = require(\"./oop\");\nvar EventEmitter = require(\"./event_emitter\").EventEmitter;\nvar reportError = require(\"./report_error\").reportError;\nvar optionsProvider = {\n setOptions: function (optList) {\n Object.keys(optList).forEach(function (key) {\n this.setOption(key, optList[key]);\n }, this);\n },\n getOptions: function (optionNames) {\n var result = {};\n if (!optionNames) {\n var options = this.$options;\n optionNames = Object.keys(options).filter(function (key) {\n return !options[key].hidden;\n });\n }\n else if (!Array.isArray(optionNames)) {\n result = optionNames;\n optionNames = Object.keys(result);\n }\n optionNames.forEach(function (key) {\n result[key] = this.getOption(key);\n }, this);\n return result;\n },\n setOption: function (name, value) {\n if (this[\"$\" + name] === value)\n return;\n var opt = this.$options[name];\n if (!opt) {\n return warn('misspelled option \"' + name + '\"');\n }\n if (opt.forwardTo)\n return this[opt.forwardTo] && this[opt.forwardTo].setOption(name, value);\n if (!opt.handlesSet)\n this[\"$\" + name] = value;\n if (opt && opt.set)\n opt.set.call(this, value);\n },\n getOption: function (name) {\n var opt = this.$options[name];\n if (!opt) {\n return warn('misspelled option \"' + name + '\"');\n }\n if (opt.forwardTo)\n return this[opt.forwardTo] && this[opt.forwardTo].getOption(name);\n return opt && opt.get ? opt.get.call(this) : this[\"$\" + name];\n }\n};\nfunction warn(message) {\n if (typeof console != \"undefined\" && console.warn)\n console.warn.apply(console, arguments);\n}\nvar messages;\nvar AppConfig = /** @class */ (function () {\n function AppConfig() {\n this.$defaultOptions = {};\n }\n AppConfig.prototype.defineOptions = function (obj, path, options) {\n if (!obj.$options)\n this.$defaultOptions[path] = obj.$options = {};\n Object.keys(options).forEach(function (key) {\n var opt = options[key];\n if (typeof opt == \"string\")\n opt = { forwardTo: opt };\n opt.name || (opt.name = key);\n obj.$options[opt.name] = opt;\n if (\"initialValue\" in opt)\n obj[\"$\" + opt.name] = opt.initialValue;\n });\n oop.implement(obj, optionsProvider);\n return this;\n };\n AppConfig.prototype.resetOptions = function (obj) {\n Object.keys(obj.$options).forEach(function (key) {\n var opt = obj.$options[key];\n if (\"value\" in opt)\n obj.setOption(key, opt.value);\n });\n };\n AppConfig.prototype.setDefaultValue = function (path, name, value) {\n if (!path) {\n for (path in this.$defaultOptions)\n if (this.$defaultOptions[path][name])\n break;\n if (!this.$defaultOptions[path][name])\n return false;\n }\n var opts = this.$defaultOptions[path] || (this.$defaultOptions[path] = {});\n if (opts[name]) {\n if (opts.forwardTo)\n this.setDefaultValue(opts.forwardTo, name, value);\n else\n opts[name].value = value;\n }\n };\n AppConfig.prototype.setDefaultValues = function (path, optionHash) {\n Object.keys(optionHash).forEach(function (key) {\n this.setDefaultValue(path, key, optionHash[key]);\n }, this);\n };\n AppConfig.prototype.setMessages = function (value) {\n messages = value;\n };\n AppConfig.prototype.nls = function (string, params) {\n if (messages && !messages[string]) {\n warn(\"No message found for '\" + string + \"' in the provided messages, falling back to default English message.\");\n }\n var translated = messages && messages[string] || string;\n if (params) {\n translated = translated.replace(/\\$(\\$|[\\d]+)/g, function (_, name) {\n if (name == \"$\")\n return \"$\";\n return params[name];\n });\n }\n return translated;\n };\n return AppConfig;\n}());\nAppConfig.prototype.warn = warn;\nAppConfig.prototype.reportError = reportError;\noop.implement(AppConfig.prototype, EventEmitter);\nexports.AppConfig = AppConfig;\n\n});\n\nace.define(\"ace/theme/textmate-css\",[\"require\",\"exports\",\"module\"], function(require, exports, module){module.exports = \".ace-tm .ace_gutter {\\n background: #f0f0f0;\\n color: #333;\\n}\\n\\n.ace-tm .ace_print-margin {\\n width: 1px;\\n background: #e8e8e8;\\n}\\n\\n.ace-tm .ace_fold {\\n background-color: #6B72E6;\\n}\\n\\n.ace-tm {\\n background-color: #FFFFFF;\\n color: black;\\n}\\n\\n.ace-tm .ace_cursor {\\n color: black;\\n}\\n \\n.ace-tm .ace_invisible {\\n color: rgb(191, 191, 191);\\n}\\n\\n.ace-tm .ace_storage,\\n.ace-tm .ace_keyword {\\n color: blue;\\n}\\n\\n.ace-tm .ace_constant {\\n color: rgb(197, 6, 11);\\n}\\n\\n.ace-tm .ace_constant.ace_buildin {\\n color: rgb(88, 72, 246);\\n}\\n\\n.ace-tm .ace_constant.ace_language {\\n color: rgb(88, 92, 246);\\n}\\n\\n.ace-tm .ace_constant.ace_library {\\n color: rgb(6, 150, 14);\\n}\\n\\n.ace-tm .ace_invalid {\\n background-color: rgba(255, 0, 0, 0.1);\\n color: red;\\n}\\n\\n.ace-tm .ace_support.ace_function {\\n color: rgb(60, 76, 114);\\n}\\n\\n.ace-tm .ace_support.ace_constant {\\n color: rgb(6, 150, 14);\\n}\\n\\n.ace-tm .ace_support.ace_type,\\n.ace-tm .ace_support.ace_class {\\n color: rgb(109, 121, 222);\\n}\\n\\n.ace-tm .ace_keyword.ace_operator {\\n color: rgb(104, 118, 135);\\n}\\n\\n.ace-tm .ace_string {\\n color: rgb(3, 106, 7);\\n}\\n\\n.ace-tm .ace_comment {\\n color: rgb(76, 136, 107);\\n}\\n\\n.ace-tm .ace_comment.ace_doc {\\n color: rgb(0, 102, 255);\\n}\\n\\n.ace-tm .ace_comment.ace_doc.ace_tag {\\n color: rgb(128, 159, 191);\\n}\\n\\n.ace-tm .ace_constant.ace_numeric {\\n color: rgb(0, 0, 205);\\n}\\n\\n.ace-tm .ace_variable {\\n color: rgb(49, 132, 149);\\n}\\n\\n.ace-tm .ace_xml-pe {\\n color: rgb(104, 104, 91);\\n}\\n\\n.ace-tm .ace_entity.ace_name.ace_function {\\n color: #0000A2;\\n}\\n\\n\\n.ace-tm .ace_heading {\\n color: rgb(12, 7, 255);\\n}\\n\\n.ace-tm .ace_list {\\n color:rgb(185, 6, 144);\\n}\\n\\n.ace-tm .ace_meta.ace_tag {\\n color:rgb(0, 22, 142);\\n}\\n\\n.ace-tm .ace_string.ace_regex {\\n color: rgb(255, 0, 0)\\n}\\n\\n.ace-tm .ace_marker-layer .ace_selection {\\n background: rgb(181, 213, 255);\\n}\\n.ace-tm.ace_multiselect .ace_selection.ace_start {\\n box-shadow: 0 0 3px 0px white;\\n}\\n.ace-tm .ace_marker-layer .ace_step {\\n background: rgb(252, 255, 0);\\n}\\n\\n.ace-tm .ace_marker-layer .ace_stack {\\n background: rgb(164, 229, 101);\\n}\\n\\n.ace-tm .ace_marker-layer .ace_bracket {\\n margin: -1px 0 0 -1px;\\n border: 1px solid rgb(192, 192, 192);\\n}\\n\\n.ace-tm .ace_marker-layer .ace_active-line {\\n background: rgba(0, 0, 0, 0.07);\\n}\\n\\n.ace-tm .ace_gutter-active-line {\\n background-color : #dcdcdc;\\n}\\n\\n.ace-tm .ace_marker-layer .ace_selected-word {\\n background: rgb(250, 250, 255);\\n border: 1px solid rgb(200, 200, 250);\\n}\\n\\n.ace-tm .ace_indent-guide {\\n background: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==\\\") right repeat-y;\\n}\\n\\n.ace-tm .ace_indent-guide-active {\\n background: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAAZSURBVHjaYvj///9/hivKyv8BAAAA//8DACLqBhbvk+/eAAAAAElFTkSuQmCC\\\") right repeat-y;\\n}\\n\";\n\n});\n\nace.define(\"ace/theme/textmate\",[\"require\",\"exports\",\"module\",\"ace/theme/textmate-css\",\"ace/lib/dom\"], function(require, exports, module){\"use strict\";\nexports.isDark = false;\nexports.cssClass = \"ace-tm\";\nexports.cssText = require(\"./textmate-css\");\nexports.$id = \"ace/theme/textmate\";\nvar dom = require(\"../lib/dom\");\ndom.importCssString(exports.cssText, exports.cssClass, false);\n\n});\n\nace.define(\"ace/config\",[\"require\",\"exports\",\"module\",\"ace/lib/lang\",\"ace/lib/net\",\"ace/lib/dom\",\"ace/lib/app_config\",\"ace/theme/textmate\"], function(require, exports, module){\"no use strict\";\nvar lang = require(\"./lib/lang\");\nvar net = require(\"./lib/net\");\nvar dom = require(\"./lib/dom\");\nvar AppConfig = require(\"./lib/app_config\").AppConfig;\nmodule.exports = exports = new AppConfig();\nvar options = {\n packaged: false,\n workerPath: null,\n modePath: null,\n themePath: null,\n basePath: \"\",\n suffix: \".js\",\n $moduleUrls: {},\n loadWorkerFromBlob: true,\n sharedPopups: false,\n useStrictCSP: null\n};\nexports.get = function (key) {\n if (!options.hasOwnProperty(key))\n throw new Error(\"Unknown config key: \" + key);\n return options[key];\n};\nexports.set = function (key, value) {\n if (options.hasOwnProperty(key))\n options[key] = value;\n else if (this.setDefaultValue(\"\", key, value) == false)\n throw new Error(\"Unknown config key: \" + key);\n if (key == \"useStrictCSP\")\n dom.useStrictCSP(value);\n};\nexports.all = function () {\n return lang.copyObject(options);\n};\nexports.$modes = {};\nexports.moduleUrl = function (name, component) {\n if (options.$moduleUrls[name])\n return options.$moduleUrls[name];\n var parts = name.split(\"/\");\n component = component || parts[parts.length - 2] || \"\";\n var sep = component == \"snippets\" ? \"/\" : \"-\";\n var base = parts[parts.length - 1];\n if (component == \"worker\" && sep == \"-\") {\n var re = new RegExp(\"^\" + component + \"[\\\\-_]|[\\\\-_]\" + component + \"$\", \"g\");\n base = base.replace(re, \"\");\n }\n if ((!base || base == component) && parts.length > 1)\n base = parts[parts.length - 2];\n var path = options[component + \"Path\"];\n if (path == null) {\n path = options.basePath;\n }\n else if (sep == \"/\") {\n component = sep = \"\";\n }\n if (path && path.slice(-1) != \"/\")\n path += \"/\";\n return path + component + sep + base + this.get(\"suffix\");\n};\nexports.setModuleUrl = function (name, subst) {\n return options.$moduleUrls[name] = subst;\n};\nvar loader = function (moduleName, cb) {\n if (moduleName === \"ace/theme/textmate\" || moduleName === \"./theme/textmate\")\n return cb(null, require(\"./theme/textmate\"));\n if (customLoader)\n return customLoader(moduleName, cb);\n console.error(\"loader is not configured\");\n};\nvar customLoader;\nexports.setLoader = function (cb) {\n customLoader = cb;\n};\nexports.dynamicModules = Object.create(null);\nexports.$loading = {};\nexports.$loaded = {};\nexports.loadModule = function (moduleName, onLoad) {\n var loadedModule, moduleType;\n if (Array.isArray(moduleName)) {\n moduleType = moduleName[0];\n moduleName = moduleName[1];\n }\n var load = function (module) {\n if (module && !exports.$loading[moduleName])\n return onLoad && onLoad(module);\n if (!exports.$loading[moduleName])\n exports.$loading[moduleName] = [];\n exports.$loading[moduleName].push(onLoad);\n if (exports.$loading[moduleName].length > 1)\n return;\n var afterLoad = function () {\n loader(moduleName, function (err, module) {\n if (module)\n exports.$loaded[moduleName] = module;\n exports._emit(\"load.module\", { name: moduleName, module: module });\n var listeners = exports.$loading[moduleName];\n exports.$loading[moduleName] = null;\n listeners.forEach(function (onLoad) {\n onLoad && onLoad(module);\n });\n });\n };\n if (!exports.get(\"packaged\"))\n return afterLoad();\n net.loadScript(exports.moduleUrl(moduleName, moduleType), afterLoad);\n reportErrorIfPathIsNotConfigured();\n };\n if (exports.dynamicModules[moduleName]) {\n exports.dynamicModules[moduleName]().then(function (module) {\n if (module.default) {\n load(module.default);\n }\n else {\n load(module);\n }\n });\n }\n else {\n try {\n loadedModule = this.$require(moduleName);\n }\n catch (e) { }\n load(loadedModule || exports.$loaded[moduleName]);\n }\n};\nexports.$require = function (moduleName) {\n if (typeof module.require == \"function\") {\n var req = \"require\";\n return module[req](moduleName);\n }\n};\nexports.setModuleLoader = function (moduleName, onLoad) {\n exports.dynamicModules[moduleName] = onLoad;\n};\nvar reportErrorIfPathIsNotConfigured = function () {\n if (!options.basePath && !options.workerPath\n && !options.modePath && !options.themePath\n && !Object.keys(options.$moduleUrls).length) {\n console.error(\"Unable to infer path to ace from script src,\", \"use ace.config.set('basePath', 'path') to enable dynamic loading of modes and themes\", \"or with webpack use ace/webpack-resolver\");\n reportErrorIfPathIsNotConfigured = function () { };\n }\n};\nexports.version = \"1.32.0\";\n\n});\n\nace.define(\"ace/loader_build\",[\"require\",\"exports\",\"module\",\"ace/lib/fixoldbrowsers\",\"ace/config\"], function(require, exports, module) {\n\"use strict\";\n\nrequire(\"./lib/fixoldbrowsers\");\nvar config = require(\"./config\");\nconfig.setLoader(function(moduleName, cb) {\n require([moduleName], function(module) {\n cb(null, module);\n });\n});\n\nvar global = (function() {\n return this || typeof window != \"undefined\" && window;\n})();\n\nmodule.exports = function(ace) {\n config.init = init;\n config.$require = require;\n ace.require = require;\n\n if (typeof define === \"function\")\n ace.define = define;\n};\ninit(true);function init(packaged) {\n\n if (!global || !global.document)\n return;\n \n config.set(\"packaged\", packaged || require.packaged || module.packaged || (global.define && define.packaged));\n\n var scriptOptions = {};\n var scriptUrl = \"\";\n var currentScript = (document.currentScript || document._currentScript ); // native or polyfill\n var currentDocument = currentScript && currentScript.ownerDocument || document;\n \n if (currentScript && currentScript.src) {\n scriptUrl = currentScript.src.split(/[?#]/)[0].split(\"/\").slice(0, -1).join(\"/\") || \"\";\n }\n \n var scripts = currentDocument.getElementsByTagName(\"script\");\n for (var i=0; i [\" + this.end.row + \"/\" + this.end.column + \"]\");\n };\n Range.prototype.contains = function (row, column) {\n return this.compare(row, column) == 0;\n };\n Range.prototype.compareRange = function (range) {\n var cmp, end = range.end, start = range.start;\n cmp = this.compare(end.row, end.column);\n if (cmp == 1) {\n cmp = this.compare(start.row, start.column);\n if (cmp == 1) {\n return 2;\n }\n else if (cmp == 0) {\n return 1;\n }\n else {\n return 0;\n }\n }\n else if (cmp == -1) {\n return -2;\n }\n else {\n cmp = this.compare(start.row, start.column);\n if (cmp == -1) {\n return -1;\n }\n else if (cmp == 1) {\n return 42;\n }\n else {\n return 0;\n }\n }\n };\n Range.prototype.comparePoint = function (p) {\n return this.compare(p.row, p.column);\n };\n Range.prototype.containsRange = function (range) {\n return this.comparePoint(range.start) == 0 && this.comparePoint(range.end) == 0;\n };\n Range.prototype.intersects = function (range) {\n var cmp = this.compareRange(range);\n return (cmp == -1 || cmp == 0 || cmp == 1);\n };\n Range.prototype.isEnd = function (row, column) {\n return this.end.row == row && this.end.column == column;\n };\n Range.prototype.isStart = function (row, column) {\n return this.start.row == row && this.start.column == column;\n };\n Range.prototype.setStart = function (row, column) {\n if (typeof row == \"object\") {\n this.start.column = row.column;\n this.start.row = row.row;\n }\n else {\n this.start.row = row;\n this.start.column = column;\n }\n };\n Range.prototype.setEnd = function (row, column) {\n if (typeof row == \"object\") {\n this.end.column = row.column;\n this.end.row = row.row;\n }\n else {\n this.end.row = row;\n this.end.column = column;\n }\n };\n Range.prototype.inside = function (row, column) {\n if (this.compare(row, column) == 0) {\n if (this.isEnd(row, column) || this.isStart(row, column)) {\n return false;\n }\n else {\n return true;\n }\n }\n return false;\n };\n Range.prototype.insideStart = function (row, column) {\n if (this.compare(row, column) == 0) {\n if (this.isEnd(row, column)) {\n return false;\n }\n else {\n return true;\n }\n }\n return false;\n };\n Range.prototype.insideEnd = function (row, column) {\n if (this.compare(row, column) == 0) {\n if (this.isStart(row, column)) {\n return false;\n }\n else {\n return true;\n }\n }\n return false;\n };\n Range.prototype.compare = function (row, column) {\n if (!this.isMultiLine()) {\n if (row === this.start.row) {\n return column < this.start.column ? -1 : (column > this.end.column ? 1 : 0);\n }\n }\n if (row < this.start.row)\n return -1;\n if (row > this.end.row)\n return 1;\n if (this.start.row === row)\n return column >= this.start.column ? 0 : -1;\n if (this.end.row === row)\n return column <= this.end.column ? 0 : 1;\n return 0;\n };\n Range.prototype.compareStart = function (row, column) {\n if (this.start.row == row && this.start.column == column) {\n return -1;\n }\n else {\n return this.compare(row, column);\n }\n };\n Range.prototype.compareEnd = function (row, column) {\n if (this.end.row == row && this.end.column == column) {\n return 1;\n }\n else {\n return this.compare(row, column);\n }\n };\n Range.prototype.compareInside = function (row, column) {\n if (this.end.row == row && this.end.column == column) {\n return 1;\n }\n else if (this.start.row == row && this.start.column == column) {\n return -1;\n }\n else {\n return this.compare(row, column);\n }\n };\n Range.prototype.clipRows = function (firstRow, lastRow) {\n if (this.end.row > lastRow)\n var end = { row: lastRow + 1, column: 0 };\n else if (this.end.row < firstRow)\n var end = { row: firstRow, column: 0 };\n if (this.start.row > lastRow)\n var start = { row: lastRow + 1, column: 0 };\n else if (this.start.row < firstRow)\n var start = { row: firstRow, column: 0 };\n return Range.fromPoints(start || this.start, end || this.end);\n };\n Range.prototype.extend = function (row, column) {\n var cmp = this.compare(row, column);\n if (cmp == 0)\n return this;\n else if (cmp == -1)\n var start = { row: row, column: column };\n else\n var end = { row: row, column: column };\n return Range.fromPoints(start || this.start, end || this.end);\n };\n Range.prototype.isEmpty = function () {\n return (this.start.row === this.end.row && this.start.column === this.end.column);\n };\n Range.prototype.isMultiLine = function () {\n return (this.start.row !== this.end.row);\n };\n Range.prototype.clone = function () {\n return Range.fromPoints(this.start, this.end);\n };\n Range.prototype.collapseRows = function () {\n if (this.end.column == 0)\n return new Range(this.start.row, 0, Math.max(this.start.row, this.end.row - 1), 0);\n else\n return new Range(this.start.row, 0, this.end.row, 0);\n };\n Range.prototype.toScreenRange = function (session) {\n var screenPosStart = session.documentToScreenPosition(this.start);\n var screenPosEnd = session.documentToScreenPosition(this.end);\n return new Range(screenPosStart.row, screenPosStart.column, screenPosEnd.row, screenPosEnd.column);\n };\n Range.prototype.moveBy = function (row, column) {\n this.start.row += row;\n this.start.column += column;\n this.end.row += row;\n this.end.column += column;\n };\n return Range;\n}());\nRange.fromPoints = function (start, end) {\n return new Range(start.row, start.column, end.row, end.column);\n};\nRange.comparePoints = comparePoints;\nRange.comparePoints = function (p1, p2) {\n return p1.row - p2.row || p1.column - p2.column;\n};\nexports.Range = Range;\n\n});\n\nace.define(\"ace/lib/keys\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\"], function(require, exports, module){/*! @license\n==========================================================================\nSproutCore -- JavaScript Application Framework\ncopyright 2006-2009, Sprout Systems Inc., Apple Inc. and contributors.\n\nPermission is hereby granted, free of charge, to any person obtaining a\ncopy of this software and associated documentation files (the \"Software\"),\nto deal in the Software without restriction, including without limitation\nthe rights to use, copy, modify, merge, publish, distribute, sublicense,\nand/or sell copies of the Software, and to permit persons to whom the\nSoftware is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\nFROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n\nSproutCore and the SproutCore logo are trademarks of Sprout Systems, Inc.\n\nFor more information about SproutCore, visit http://www.sproutcore.com\n\n\n==========================================================================\n@license */\n\"use strict\";\nvar oop = require(\"./oop\");\nvar Keys = (function () {\n var ret = {\n MODIFIER_KEYS: {\n 16: 'Shift', 17: 'Ctrl', 18: 'Alt', 224: 'Meta',\n 91: 'MetaLeft', 92: 'MetaRight', 93: 'ContextMenu'\n },\n KEY_MODS: {\n \"ctrl\": 1, \"alt\": 2, \"option\": 2, \"shift\": 4,\n \"super\": 8, \"meta\": 8, \"command\": 8, \"cmd\": 8,\n \"control\": 1\n },\n FUNCTION_KEYS: {\n 8: \"Backspace\",\n 9: \"Tab\",\n 13: \"Return\",\n 19: \"Pause\",\n 27: \"Esc\",\n 32: \"Space\",\n 33: \"PageUp\",\n 34: \"PageDown\",\n 35: \"End\",\n 36: \"Home\",\n 37: \"Left\",\n 38: \"Up\",\n 39: \"Right\",\n 40: \"Down\",\n 44: \"Print\",\n 45: \"Insert\",\n 46: \"Delete\",\n 96: \"Numpad0\",\n 97: \"Numpad1\",\n 98: \"Numpad2\",\n 99: \"Numpad3\",\n 100: \"Numpad4\",\n 101: \"Numpad5\",\n 102: \"Numpad6\",\n 103: \"Numpad7\",\n 104: \"Numpad8\",\n 105: \"Numpad9\",\n '-13': \"NumpadEnter\",\n 112: \"F1\",\n 113: \"F2\",\n 114: \"F3\",\n 115: \"F4\",\n 116: \"F5\",\n 117: \"F6\",\n 118: \"F7\",\n 119: \"F8\",\n 120: \"F9\",\n 121: \"F10\",\n 122: \"F11\",\n 123: \"F12\",\n 144: \"Numlock\",\n 145: \"Scrolllock\"\n },\n PRINTABLE_KEYS: {\n 32: ' ', 48: '0', 49: '1', 50: '2', 51: '3', 52: '4', 53: '5',\n 54: '6', 55: '7', 56: '8', 57: '9', 59: ';', 61: '=', 65: 'a',\n 66: 'b', 67: 'c', 68: 'd', 69: 'e', 70: 'f', 71: 'g', 72: 'h',\n 73: 'i', 74: 'j', 75: 'k', 76: 'l', 77: 'm', 78: 'n', 79: 'o',\n 80: 'p', 81: 'q', 82: 'r', 83: 's', 84: 't', 85: 'u', 86: 'v',\n 87: 'w', 88: 'x', 89: 'y', 90: 'z', 107: '+', 109: '-', 110: '.',\n 186: ';', 187: '=', 188: ',', 189: '-', 190: '.', 191: '/', 192: '`',\n 219: '[', 220: '\\\\', 221: ']', 222: \"'\", 111: '/', 106: '*'\n }\n };\n ret.PRINTABLE_KEYS[173] = '-';\n var name, i;\n for (i in ret.FUNCTION_KEYS) {\n name = ret.FUNCTION_KEYS[i].toLowerCase();\n ret[name] = parseInt(i, 10);\n }\n for (i in ret.PRINTABLE_KEYS) {\n name = ret.PRINTABLE_KEYS[i].toLowerCase();\n ret[name] = parseInt(i, 10);\n }\n oop.mixin(ret, ret.MODIFIER_KEYS);\n oop.mixin(ret, ret.PRINTABLE_KEYS);\n oop.mixin(ret, ret.FUNCTION_KEYS);\n ret.enter = ret[\"return\"];\n ret.escape = ret.esc;\n ret.del = ret[\"delete\"];\n (function () {\n var mods = [\"cmd\", \"ctrl\", \"alt\", \"shift\"];\n for (var i = Math.pow(2, mods.length); i--;) {\n ret.KEY_MODS[i] = mods.filter(function (x) {\n return i & ret.KEY_MODS[x];\n }).join(\"-\") + \"-\";\n }\n })();\n ret.KEY_MODS[0] = \"\";\n ret.KEY_MODS[-1] = \"input-\";\n return ret;\n})();\noop.mixin(exports, Keys);\nexports.default = exports;\nexports.keyCodeToString = function (keyCode) {\n var keyString = Keys[keyCode];\n if (typeof keyString != \"string\")\n keyString = String.fromCharCode(keyCode);\n return keyString.toLowerCase();\n};\n\n});\n\nace.define(\"ace/lib/event\",[\"require\",\"exports\",\"module\",\"ace/lib/keys\",\"ace/lib/useragent\"], function(require, exports, module){\"use strict\";\nvar keys = require(\"./keys\");\nvar useragent = require(\"./useragent\");\nvar pressedKeys = null;\nvar ts = 0;\nvar activeListenerOptions;\nfunction detectListenerOptionsSupport() {\n activeListenerOptions = false;\n try {\n document.createComment(\"\").addEventListener(\"test\", function () { }, {\n get passive() {\n activeListenerOptions = { passive: false };\n }\n });\n }\n catch (e) { }\n}\nfunction getListenerOptions() {\n if (activeListenerOptions == undefined)\n detectListenerOptionsSupport();\n return activeListenerOptions;\n}\nfunction EventListener(elem, type, callback) {\n this.elem = elem;\n this.type = type;\n this.callback = callback;\n}\nEventListener.prototype.destroy = function () {\n removeListener(this.elem, this.type, this.callback);\n this.elem = this.type = this.callback = undefined;\n};\nvar addListener = exports.addListener = function (elem, type, callback, destroyer) {\n elem.addEventListener(type, callback, getListenerOptions());\n if (destroyer)\n destroyer.$toDestroy.push(new EventListener(elem, type, callback));\n};\nvar removeListener = exports.removeListener = function (elem, type, callback) {\n elem.removeEventListener(type, callback, getListenerOptions());\n};\nexports.stopEvent = function (e) {\n exports.stopPropagation(e);\n exports.preventDefault(e);\n return false;\n};\nexports.stopPropagation = function (e) {\n if (e.stopPropagation)\n e.stopPropagation();\n};\nexports.preventDefault = function (e) {\n if (e.preventDefault)\n e.preventDefault();\n};\nexports.getButton = function (e) {\n if (e.type == \"dblclick\")\n return 0;\n if (e.type == \"contextmenu\" || (useragent.isMac && (e.ctrlKey && !e.altKey && !e.shiftKey)))\n return 2;\n return e.button;\n};\nexports.capture = function (el, eventHandler, releaseCaptureHandler) {\n var ownerDocument = el && el.ownerDocument || document;\n function onMouseUp(e) {\n eventHandler && eventHandler(e);\n releaseCaptureHandler && releaseCaptureHandler(e);\n removeListener(ownerDocument, \"mousemove\", eventHandler);\n removeListener(ownerDocument, \"mouseup\", onMouseUp);\n removeListener(ownerDocument, \"dragstart\", onMouseUp);\n }\n addListener(ownerDocument, \"mousemove\", eventHandler);\n addListener(ownerDocument, \"mouseup\", onMouseUp);\n addListener(ownerDocument, \"dragstart\", onMouseUp);\n return onMouseUp;\n};\nexports.addMouseWheelListener = function (el, callback, destroyer) {\n addListener(el, \"wheel\", function (e) {\n var factor = 0.15;\n var deltaX = e.deltaX || 0;\n var deltaY = e.deltaY || 0;\n switch (e.deltaMode) {\n case e.DOM_DELTA_PIXEL:\n e.wheelX = deltaX * factor;\n e.wheelY = deltaY * factor;\n break;\n case e.DOM_DELTA_LINE:\n var linePixels = 15;\n e.wheelX = deltaX * linePixels;\n e.wheelY = deltaY * linePixels;\n break;\n case e.DOM_DELTA_PAGE:\n var pagePixels = 150;\n e.wheelX = deltaX * pagePixels;\n e.wheelY = deltaY * pagePixels;\n break;\n }\n callback(e);\n }, destroyer);\n};\nexports.addMultiMouseDownListener = function (elements, timeouts, eventHandler, callbackName, destroyer) {\n var clicks = 0;\n var startX, startY, timer;\n var eventNames = {\n 2: \"dblclick\",\n 3: \"tripleclick\",\n 4: \"quadclick\"\n };\n function onMousedown(e) {\n if (exports.getButton(e) !== 0) {\n clicks = 0;\n }\n else if (e.detail > 1) {\n clicks++;\n if (clicks > 4)\n clicks = 1;\n }\n else {\n clicks = 1;\n }\n if (useragent.isIE) {\n var isNewClick = Math.abs(e.clientX - startX) > 5 || Math.abs(e.clientY - startY) > 5;\n if (!timer || isNewClick)\n clicks = 1;\n if (timer)\n clearTimeout(timer);\n timer = setTimeout(function () { timer = null; }, timeouts[clicks - 1] || 600);\n if (clicks == 1) {\n startX = e.clientX;\n startY = e.clientY;\n }\n }\n e._clicks = clicks;\n eventHandler[callbackName](\"mousedown\", e);\n if (clicks > 4)\n clicks = 0;\n else if (clicks > 1)\n return eventHandler[callbackName](eventNames[clicks], e);\n }\n if (!Array.isArray(elements))\n elements = [elements];\n elements.forEach(function (el) {\n addListener(el, \"mousedown\", onMousedown, destroyer);\n });\n};\nvar getModifierHash = function (e) {\n return 0 | (e.ctrlKey ? 1 : 0) | (e.altKey ? 2 : 0) | (e.shiftKey ? 4 : 0) | (e.metaKey ? 8 : 0);\n};\nexports.getModifierString = function (e) {\n return keys.KEY_MODS[getModifierHash(e)];\n};\nfunction normalizeCommandKeys(callback, e, keyCode) {\n var hashId = getModifierHash(e);\n if (!useragent.isMac && pressedKeys) {\n if (e.getModifierState && (e.getModifierState(\"OS\") || e.getModifierState(\"Win\")))\n hashId |= 8;\n if (pressedKeys.altGr) {\n if ((3 & hashId) != 3)\n pressedKeys.altGr = 0;\n else\n return;\n }\n if (keyCode === 18 || keyCode === 17) {\n var location = \"location\" in e ? e.location : e.keyLocation;\n if (keyCode === 17 && location === 1) {\n if (pressedKeys[keyCode] == 1)\n ts = e.timeStamp;\n }\n else if (keyCode === 18 && hashId === 3 && location === 2) {\n var dt = e.timeStamp - ts;\n if (dt < 50)\n pressedKeys.altGr = true;\n }\n }\n }\n if (keyCode in keys.MODIFIER_KEYS) {\n keyCode = -1;\n }\n if (!hashId && keyCode === 13) {\n var location = \"location\" in e ? e.location : e.keyLocation;\n if (location === 3) {\n callback(e, hashId, -keyCode);\n if (e.defaultPrevented)\n return;\n }\n }\n if (useragent.isChromeOS && hashId & 8) {\n callback(e, hashId, keyCode);\n if (e.defaultPrevented)\n return;\n else\n hashId &= ~8;\n }\n if (!hashId && !(keyCode in keys.FUNCTION_KEYS) && !(keyCode in keys.PRINTABLE_KEYS)) {\n return false;\n }\n return callback(e, hashId, keyCode);\n}\nexports.addCommandKeyListener = function (el, callback, destroyer) {\n if (useragent.isOldGecko || (useragent.isOpera && !(\"KeyboardEvent\" in window))) {\n var lastKeyDownKeyCode = null;\n addListener(el, \"keydown\", function (e) {\n lastKeyDownKeyCode = e.keyCode;\n }, destroyer);\n addListener(el, \"keypress\", function (e) {\n return normalizeCommandKeys(callback, e, lastKeyDownKeyCode);\n }, destroyer);\n }\n else {\n var lastDefaultPrevented = null;\n addListener(el, \"keydown\", function (e) {\n pressedKeys[e.keyCode] = (pressedKeys[e.keyCode] || 0) + 1;\n var result = normalizeCommandKeys(callback, e, e.keyCode);\n lastDefaultPrevented = e.defaultPrevented;\n return result;\n }, destroyer);\n addListener(el, \"keypress\", function (e) {\n if (lastDefaultPrevented && (e.ctrlKey || e.altKey || e.shiftKey || e.metaKey)) {\n exports.stopEvent(e);\n lastDefaultPrevented = null;\n }\n }, destroyer);\n addListener(el, \"keyup\", function (e) {\n pressedKeys[e.keyCode] = null;\n }, destroyer);\n if (!pressedKeys) {\n resetPressedKeys();\n addListener(window, \"focus\", resetPressedKeys);\n }\n }\n};\nfunction resetPressedKeys() {\n pressedKeys = Object.create(null);\n}\nif (typeof window == \"object\" && window.postMessage && !useragent.isOldIE) {\n var postMessageId = 1;\n exports.nextTick = function (callback, win) {\n win = win || window;\n var messageName = \"zero-timeout-message-\" + (postMessageId++);\n var listener = function (e) {\n if (e.data == messageName) {\n exports.stopPropagation(e);\n removeListener(win, \"message\", listener);\n callback();\n }\n };\n addListener(win, \"message\", listener);\n win.postMessage(messageName, \"*\");\n };\n}\nexports.$idleBlocked = false;\nexports.onIdle = function (cb, timeout) {\n return setTimeout(function handler() {\n if (!exports.$idleBlocked) {\n cb();\n }\n else {\n setTimeout(handler, 100);\n }\n }, timeout);\n};\nexports.$idleBlockId = null;\nexports.blockIdle = function (delay) {\n if (exports.$idleBlockId)\n clearTimeout(exports.$idleBlockId);\n exports.$idleBlocked = true;\n exports.$idleBlockId = setTimeout(function () {\n exports.$idleBlocked = false;\n }, delay || 100);\n};\nexports.nextFrame = typeof window == \"object\" && (window.requestAnimationFrame\n || window.mozRequestAnimationFrame\n || window.webkitRequestAnimationFrame\n || window.msRequestAnimationFrame\n || window.oRequestAnimationFrame);\nif (exports.nextFrame)\n exports.nextFrame = exports.nextFrame.bind(window);\nelse\n exports.nextFrame = function (callback) {\n setTimeout(callback, 17);\n };\n\n});\n\nace.define(\"ace/clipboard\",[\"require\",\"exports\",\"module\"], function(require, exports, module){\"use strict\";\nvar $cancelT;\nmodule.exports = {\n lineMode: false,\n pasteCancelled: function () {\n if ($cancelT && $cancelT > Date.now() - 50)\n return true;\n return $cancelT = false;\n },\n cancel: function () {\n $cancelT = Date.now();\n }\n};\n\n});\n\nace.define(\"ace/keyboard/textinput\",[\"require\",\"exports\",\"module\",\"ace/lib/event\",\"ace/config\",\"ace/lib/useragent\",\"ace/lib/dom\",\"ace/lib/lang\",\"ace/clipboard\",\"ace/lib/keys\"], function(require, exports, module){\"use strict\";\nvar event = require(\"../lib/event\");\nvar nls = require(\"../config\").nls;\nvar useragent = require(\"../lib/useragent\");\nvar dom = require(\"../lib/dom\");\nvar lang = require(\"../lib/lang\");\nvar clipboard = require(\"../clipboard\");\nvar BROKEN_SETDATA = useragent.isChrome < 18;\nvar USE_IE_MIME_TYPE = useragent.isIE;\nvar HAS_FOCUS_ARGS = useragent.isChrome > 63;\nvar MAX_LINE_LENGTH = 400;\nvar KEYS = require(\"../lib/keys\");\nvar MODS = KEYS.KEY_MODS;\nvar isIOS = useragent.isIOS;\nvar valueResetRegex = isIOS ? /\\s/ : /\\n/;\nvar isMobile = useragent.isMobile;\nvar TextInput = function (parentNode, host) {\n var text = dom.createElement(\"textarea\");\n text.className = \"ace_text-input\";\n text.setAttribute(\"wrap\", \"off\");\n text.setAttribute(\"autocorrect\", \"off\");\n text.setAttribute(\"autocapitalize\", \"off\");\n text.setAttribute(\"spellcheck\", false);\n text.style.opacity = \"0\";\n parentNode.insertBefore(text, parentNode.firstChild);\n var copied = false;\n var pasted = false;\n var inComposition = false;\n var sendingText = false;\n var tempStyle = '';\n if (!isMobile)\n text.style.fontSize = \"1px\";\n var commandMode = false;\n var ignoreFocusEvents = false;\n var lastValue = \"\";\n var lastSelectionStart = 0;\n var lastSelectionEnd = 0;\n var lastRestoreEnd = 0;\n var rowStart = Number.MAX_SAFE_INTEGER;\n var rowEnd = Number.MIN_SAFE_INTEGER;\n var numberOfExtraLines = 0;\n try {\n var isFocused = document.activeElement === text;\n }\n catch (e) { }\n this.setNumberOfExtraLines = function (number) {\n rowStart = Number.MAX_SAFE_INTEGER;\n rowEnd = Number.MIN_SAFE_INTEGER;\n if (number < 0) {\n numberOfExtraLines = 0;\n return;\n }\n numberOfExtraLines = number;\n };\n this.setAriaOptions = function (options) {\n if (options.activeDescendant) {\n text.setAttribute(\"aria-haspopup\", \"true\");\n text.setAttribute(\"aria-autocomplete\", options.inline ? \"both\" : \"list\");\n text.setAttribute(\"aria-activedescendant\", options.activeDescendant);\n }\n else {\n text.setAttribute(\"aria-haspopup\", \"false\");\n text.setAttribute(\"aria-autocomplete\", \"both\");\n text.removeAttribute(\"aria-activedescendant\");\n }\n if (options.role) {\n text.setAttribute(\"role\", options.role);\n }\n if (options.setLabel) {\n text.setAttribute(\"aria-roledescription\", nls(\"editor\"));\n if (host.session) {\n var row = host.session.selection.cursor.row;\n text.setAttribute(\"aria-label\", nls(\"Cursor at row $0\", [row + 1]));\n }\n }\n };\n this.setAriaOptions({ role: \"textbox\" });\n event.addListener(text, \"blur\", function (e) {\n if (ignoreFocusEvents)\n return;\n host.onBlur(e);\n isFocused = false;\n }, host);\n event.addListener(text, \"focus\", function (e) {\n if (ignoreFocusEvents)\n return;\n isFocused = true;\n if (useragent.isEdge) {\n try {\n if (!document.hasFocus())\n return;\n }\n catch (e) { }\n }\n host.onFocus(e);\n if (useragent.isEdge)\n setTimeout(resetSelection);\n else\n resetSelection();\n }, host);\n this.$focusScroll = false;\n this.focus = function () {\n this.setAriaOptions({\n setLabel: host.renderer.enableKeyboardAccessibility\n });\n if (tempStyle || HAS_FOCUS_ARGS || this.$focusScroll == \"browser\")\n return text.focus({ preventScroll: true });\n var top = text.style.top;\n text.style.position = \"fixed\";\n text.style.top = \"0px\";\n try {\n var isTransformed = text.getBoundingClientRect().top != 0;\n }\n catch (e) {\n return;\n }\n var ancestors = [];\n if (isTransformed) {\n var t = text.parentElement;\n while (t && t.nodeType == 1) {\n ancestors.push(t);\n t.setAttribute(\"ace_nocontext\", true);\n if (!t.parentElement && t.getRootNode)\n t = t.getRootNode().host;\n else\n t = t.parentElement;\n }\n }\n text.focus({ preventScroll: true });\n if (isTransformed) {\n ancestors.forEach(function (p) {\n p.removeAttribute(\"ace_nocontext\");\n });\n }\n setTimeout(function () {\n text.style.position = \"\";\n if (text.style.top == \"0px\")\n text.style.top = top;\n }, 0);\n };\n this.blur = function () {\n text.blur();\n };\n this.isFocused = function () {\n return isFocused;\n };\n host.on(\"beforeEndOperation\", function () {\n var curOp = host.curOp;\n var commandName = curOp && curOp.command && curOp.command.name;\n if (commandName == \"insertstring\")\n return;\n var isUserAction = commandName && (curOp.docChanged || curOp.selectionChanged);\n if (inComposition && isUserAction) {\n lastValue = text.value = \"\";\n onCompositionEnd();\n }\n resetSelection();\n });\n var positionToSelection = function (row, column) {\n var selection = column;\n for (var i = 1; i <= row - rowStart && i < 2 * numberOfExtraLines + 1; i++) {\n selection += host.session.getLine(row - i).length + 1;\n }\n return selection;\n };\n var resetSelection = isIOS\n ? function (value) {\n if (!isFocused || (copied && !value) || sendingText)\n return;\n if (!value)\n value = \"\";\n var newValue = \"\\n ab\" + value + \"cde fg\\n\";\n if (newValue != text.value)\n text.value = lastValue = newValue;\n var selectionStart = 4;\n var selectionEnd = 4 + (value.length || (host.selection.isEmpty() ? 0 : 1));\n if (lastSelectionStart != selectionStart || lastSelectionEnd != selectionEnd) {\n text.setSelectionRange(selectionStart, selectionEnd);\n }\n lastSelectionStart = selectionStart;\n lastSelectionEnd = selectionEnd;\n }\n : function () {\n if (inComposition || sendingText)\n return;\n if (!isFocused && !afterContextMenu)\n return;\n inComposition = true;\n var selectionStart = 0;\n var selectionEnd = 0;\n var line = \"\";\n if (host.session) {\n var selection = host.selection;\n var range = selection.getRange();\n var row = selection.cursor.row;\n if (row === rowEnd + 1) {\n rowStart = rowEnd + 1;\n rowEnd = rowStart + 2 * numberOfExtraLines;\n }\n else if (row === rowStart - 1) {\n rowEnd = rowStart - 1;\n rowStart = rowEnd - 2 * numberOfExtraLines;\n }\n else if (row < rowStart - 1 || row > rowEnd + 1) {\n rowStart = row > numberOfExtraLines ? row - numberOfExtraLines : 0;\n rowEnd = row > numberOfExtraLines ? row + numberOfExtraLines : 2 * numberOfExtraLines;\n }\n var lines = [];\n for (var i = rowStart; i <= rowEnd; i++) {\n lines.push(host.session.getLine(i));\n }\n line = lines.join('\\n');\n selectionStart = positionToSelection(range.start.row, range.start.column);\n selectionEnd = positionToSelection(range.end.row, range.end.column);\n if (range.start.row < rowStart) {\n var prevLine = host.session.getLine(rowStart - 1);\n selectionStart = range.start.row < rowStart - 1 ? 0 : selectionStart;\n selectionEnd += prevLine.length + 1;\n line = prevLine + \"\\n\" + line;\n }\n else if (range.end.row > rowEnd) {\n var nextLine = host.session.getLine(rowEnd + 1);\n selectionEnd = range.end.row > rowEnd + 1 ? nextLine.length : range.end.column;\n selectionEnd += line.length + 1;\n line = line + \"\\n\" + nextLine;\n }\n else if (isMobile && row > 0) {\n line = \"\\n\" + line;\n selectionEnd += 1;\n selectionStart += 1;\n }\n if (line.length > MAX_LINE_LENGTH) {\n if (selectionStart < MAX_LINE_LENGTH && selectionEnd < MAX_LINE_LENGTH) {\n line = line.slice(0, MAX_LINE_LENGTH);\n }\n else {\n line = \"\\n\";\n if (selectionStart == selectionEnd) {\n selectionStart = selectionEnd = 0;\n }\n else {\n selectionStart = 0;\n selectionEnd = 1;\n }\n }\n }\n var newValue = line + \"\\n\\n\";\n if (newValue != lastValue) {\n text.value = lastValue = newValue;\n lastSelectionStart = lastSelectionEnd = newValue.length;\n }\n }\n if (afterContextMenu) {\n lastSelectionStart = text.selectionStart;\n lastSelectionEnd = text.selectionEnd;\n }\n if (lastSelectionEnd != selectionEnd\n || lastSelectionStart != selectionStart\n || text.selectionEnd != lastSelectionEnd // on ie edge selectionEnd changes silently after the initialization\n ) {\n try {\n text.setSelectionRange(selectionStart, selectionEnd);\n lastSelectionStart = selectionStart;\n lastSelectionEnd = selectionEnd;\n }\n catch (e) { }\n }\n inComposition = false;\n };\n this.resetSelection = resetSelection;\n if (isFocused)\n host.onFocus();\n var isAllSelected = function (text) {\n return text.selectionStart === 0 && text.selectionEnd >= lastValue.length\n && text.value === lastValue && lastValue\n && text.selectionEnd !== lastSelectionEnd;\n };\n var onSelect = function (e) {\n if (inComposition)\n return;\n if (copied) {\n copied = false;\n }\n else if (isAllSelected(text)) {\n host.selectAll();\n resetSelection();\n }\n else if (isMobile && text.selectionStart != lastSelectionStart) {\n resetSelection();\n }\n };\n var inputHandler = null;\n this.setInputHandler = function (cb) { inputHandler = cb; };\n this.getInputHandler = function () { return inputHandler; };\n var afterContextMenu = false;\n var sendText = function (value, fromInput) {\n if (afterContextMenu)\n afterContextMenu = false;\n if (pasted) {\n resetSelection();\n if (value)\n host.onPaste(value);\n pasted = false;\n return \"\";\n }\n else {\n var selectionStart = text.selectionStart;\n var selectionEnd = text.selectionEnd;\n var extendLeft = lastSelectionStart;\n var extendRight = lastValue.length - lastSelectionEnd;\n var inserted = value;\n var restoreStart = value.length - selectionStart;\n var restoreEnd = value.length - selectionEnd;\n var i = 0;\n while (extendLeft > 0 && lastValue[i] == value[i]) {\n i++;\n extendLeft--;\n }\n inserted = inserted.slice(i);\n i = 1;\n while (extendRight > 0 && lastValue.length - i > lastSelectionStart - 1 && lastValue[lastValue.length - i] == value[value.length - i]) {\n i++;\n extendRight--;\n }\n restoreStart -= i - 1;\n restoreEnd -= i - 1;\n var endIndex = inserted.length - i + 1;\n if (endIndex < 0) {\n extendLeft = -endIndex;\n endIndex = 0;\n }\n inserted = inserted.slice(0, endIndex);\n if (!fromInput && !inserted && !restoreStart && !extendLeft && !extendRight && !restoreEnd)\n return \"\";\n sendingText = true;\n var shouldReset = false;\n if (useragent.isAndroid && inserted == \". \") {\n inserted = \" \";\n shouldReset = true;\n }\n if (inserted && !extendLeft && !extendRight && !restoreStart && !restoreEnd || commandMode) {\n host.onTextInput(inserted);\n }\n else {\n host.onTextInput(inserted, {\n extendLeft: extendLeft,\n extendRight: extendRight,\n restoreStart: restoreStart,\n restoreEnd: restoreEnd\n });\n }\n sendingText = false;\n lastValue = value;\n lastSelectionStart = selectionStart;\n lastSelectionEnd = selectionEnd;\n lastRestoreEnd = restoreEnd;\n return shouldReset ? \"\\n\" : inserted;\n }\n };\n var onInput = function (e) {\n if (inComposition)\n return onCompositionUpdate();\n if (e && e.inputType) {\n if (e.inputType == \"historyUndo\")\n return host.execCommand(\"undo\");\n if (e.inputType == \"historyRedo\")\n return host.execCommand(\"redo\");\n }\n var data = text.value;\n var inserted = sendText(data, true);\n if (data.length > MAX_LINE_LENGTH + 100\n || valueResetRegex.test(inserted)\n || isMobile && lastSelectionStart < 1 && lastSelectionStart == lastSelectionEnd) {\n resetSelection();\n }\n };\n var handleClipboardData = function (e, data, forceIEMime) {\n var clipboardData = e.clipboardData || window.clipboardData;\n if (!clipboardData || BROKEN_SETDATA)\n return;\n var mime = USE_IE_MIME_TYPE || forceIEMime ? \"Text\" : \"text/plain\";\n try {\n if (data) {\n return clipboardData.setData(mime, data) !== false;\n }\n else {\n return clipboardData.getData(mime);\n }\n }\n catch (e) {\n if (!forceIEMime)\n return handleClipboardData(e, data, true);\n }\n };\n var doCopy = function (e, isCut) {\n var data = host.getCopyText();\n if (!data)\n return event.preventDefault(e);\n if (handleClipboardData(e, data)) {\n if (isIOS) {\n resetSelection(data);\n copied = data;\n setTimeout(function () {\n copied = false;\n }, 10);\n }\n isCut ? host.onCut() : host.onCopy();\n event.preventDefault(e);\n }\n else {\n copied = true;\n text.value = data;\n text.select();\n setTimeout(function () {\n copied = false;\n resetSelection();\n isCut ? host.onCut() : host.onCopy();\n });\n }\n };\n var onCut = function (e) {\n doCopy(e, true);\n };\n var onCopy = function (e) {\n doCopy(e, false);\n };\n var onPaste = function (e) {\n var data = handleClipboardData(e);\n if (clipboard.pasteCancelled())\n return;\n if (typeof data == \"string\") {\n if (data)\n host.onPaste(data, e);\n if (useragent.isIE)\n setTimeout(resetSelection);\n event.preventDefault(e);\n }\n else {\n text.value = \"\";\n pasted = true;\n }\n };\n event.addCommandKeyListener(text, host.onCommandKey.bind(host), host);\n event.addListener(text, \"select\", onSelect, host);\n event.addListener(text, \"input\", onInput, host);\n event.addListener(text, \"cut\", onCut, host);\n event.addListener(text, \"copy\", onCopy, host);\n event.addListener(text, \"paste\", onPaste, host);\n if (!('oncut' in text) || !('oncopy' in text) || !('onpaste' in text)) {\n event.addListener(parentNode, \"keydown\", function (e) {\n if ((useragent.isMac && !e.metaKey) || !e.ctrlKey)\n return;\n switch (e.keyCode) {\n case 67:\n onCopy(e);\n break;\n case 86:\n onPaste(e);\n break;\n case 88:\n onCut(e);\n break;\n }\n }, host);\n }\n var onCompositionStart = function (e) {\n if (inComposition || !host.onCompositionStart || host.$readOnly)\n return;\n inComposition = {};\n if (commandMode)\n return;\n if (e.data)\n inComposition.useTextareaForIME = false;\n setTimeout(onCompositionUpdate, 0);\n host._signal(\"compositionStart\");\n host.on(\"mousedown\", cancelComposition);\n var range = host.getSelectionRange();\n range.end.row = range.start.row;\n range.end.column = range.start.column;\n inComposition.markerRange = range;\n inComposition.selectionStart = lastSelectionStart;\n host.onCompositionStart(inComposition);\n if (inComposition.useTextareaForIME) {\n lastValue = text.value = \"\";\n lastSelectionStart = 0;\n lastSelectionEnd = 0;\n }\n else {\n if (text.msGetInputContext)\n inComposition.context = text.msGetInputContext();\n if (text.getInputContext)\n inComposition.context = text.getInputContext();\n }\n };\n var onCompositionUpdate = function () {\n if (!inComposition || !host.onCompositionUpdate || host.$readOnly)\n return;\n if (commandMode)\n return cancelComposition();\n if (inComposition.useTextareaForIME) {\n host.onCompositionUpdate(text.value);\n }\n else {\n var data = text.value;\n sendText(data);\n if (inComposition.markerRange) {\n if (inComposition.context) {\n inComposition.markerRange.start.column = inComposition.selectionStart\n = inComposition.context.compositionStartOffset;\n }\n inComposition.markerRange.end.column = inComposition.markerRange.start.column\n + lastSelectionEnd - inComposition.selectionStart + lastRestoreEnd;\n }\n }\n };\n var onCompositionEnd = function (e) {\n if (!host.onCompositionEnd || host.$readOnly)\n return;\n inComposition = false;\n host.onCompositionEnd();\n host.off(\"mousedown\", cancelComposition);\n if (e)\n onInput();\n };\n function cancelComposition() {\n ignoreFocusEvents = true;\n text.blur();\n text.focus();\n ignoreFocusEvents = false;\n }\n var syncComposition = lang.delayedCall(onCompositionUpdate, 50).schedule.bind(null, null);\n function onKeyup(e) {\n if (e.keyCode == 27 && text.value.length < text.selectionStart) {\n if (!inComposition)\n lastValue = text.value;\n lastSelectionStart = lastSelectionEnd = -1;\n resetSelection();\n }\n syncComposition();\n }\n event.addListener(text, \"compositionstart\", onCompositionStart, host);\n event.addListener(text, \"compositionupdate\", onCompositionUpdate, host);\n event.addListener(text, \"keyup\", onKeyup, host);\n event.addListener(text, \"keydown\", syncComposition, host);\n event.addListener(text, \"compositionend\", onCompositionEnd, host);\n this.getElement = function () {\n return text;\n };\n this.setCommandMode = function (value) {\n commandMode = value;\n text.readOnly = false;\n };\n this.setReadOnly = function (readOnly) {\n if (!commandMode)\n text.readOnly = readOnly;\n };\n this.setCopyWithEmptySelection = function (value) {\n };\n this.onContextMenu = function (e) {\n afterContextMenu = true;\n resetSelection();\n host._emit(\"nativecontextmenu\", { target: host, domEvent: e });\n this.moveToMouse(e, true);\n };\n this.moveToMouse = function (e, bringToFront) {\n if (!tempStyle)\n tempStyle = text.style.cssText;\n text.style.cssText = (bringToFront ? \"z-index:100000;\" : \"\")\n + (useragent.isIE ? \"opacity:0.1;\" : \"\")\n + \"text-indent: -\" + (lastSelectionStart + lastSelectionEnd) * host.renderer.characterWidth * 0.5 + \"px;\";\n var rect = host.container.getBoundingClientRect();\n var style = dom.computedStyle(host.container);\n var top = rect.top + (parseInt(style.borderTopWidth) || 0);\n var left = rect.left + (parseInt(rect.borderLeftWidth) || 0);\n var maxTop = rect.bottom - top - text.clientHeight - 2;\n var move = function (e) {\n dom.translate(text, e.clientX - left - 2, Math.min(e.clientY - top - 2, maxTop));\n };\n move(e);\n if (e.type != \"mousedown\")\n return;\n host.renderer.$isMousePressed = true;\n clearTimeout(closeTimeout);\n if (useragent.isWin)\n event.capture(host.container, move, onContextMenuClose);\n };\n this.onContextMenuClose = onContextMenuClose;\n var closeTimeout;\n function onContextMenuClose() {\n clearTimeout(closeTimeout);\n closeTimeout = setTimeout(function () {\n if (tempStyle) {\n text.style.cssText = tempStyle;\n tempStyle = '';\n }\n host.renderer.$isMousePressed = false;\n if (host.renderer.$keepTextAreaAtCursor)\n host.renderer.$moveTextAreaToCursor();\n }, 0);\n }\n var onContextMenu = function (e) {\n host.textInput.onContextMenu(e);\n onContextMenuClose();\n };\n event.addListener(text, \"mouseup\", onContextMenu, host);\n event.addListener(text, \"mousedown\", function (e) {\n e.preventDefault();\n onContextMenuClose();\n }, host);\n event.addListener(host.renderer.scroller, \"contextmenu\", onContextMenu, host);\n event.addListener(text, \"contextmenu\", onContextMenu, host);\n if (isIOS)\n addIosSelectionHandler(parentNode, host, text);\n function addIosSelectionHandler(parentNode, host, text) {\n var typingResetTimeout = null;\n var typing = false;\n text.addEventListener(\"keydown\", function (e) {\n if (typingResetTimeout)\n clearTimeout(typingResetTimeout);\n typing = true;\n }, true);\n text.addEventListener(\"keyup\", function (e) {\n typingResetTimeout = setTimeout(function () {\n typing = false;\n }, 100);\n }, true);\n var detectArrowKeys = function (e) {\n if (document.activeElement !== text)\n return;\n if (typing || inComposition || host.$mouseHandler.isMousePressed)\n return;\n if (copied) {\n return;\n }\n var selectionStart = text.selectionStart;\n var selectionEnd = text.selectionEnd;\n var key = null;\n var modifier = 0;\n if (selectionStart == 0) {\n key = KEYS.up;\n }\n else if (selectionStart == 1) {\n key = KEYS.home;\n }\n else if (selectionEnd > lastSelectionEnd && lastValue[selectionEnd] == \"\\n\") {\n key = KEYS.end;\n }\n else if (selectionStart < lastSelectionStart && lastValue[selectionStart - 1] == \" \") {\n key = KEYS.left;\n modifier = MODS.option;\n }\n else if (selectionStart < lastSelectionStart\n || (selectionStart == lastSelectionStart\n && lastSelectionEnd != lastSelectionStart\n && selectionStart == selectionEnd)) {\n key = KEYS.left;\n }\n else if (selectionEnd > lastSelectionEnd && lastValue.slice(0, selectionEnd).split(\"\\n\").length > 2) {\n key = KEYS.down;\n }\n else if (selectionEnd > lastSelectionEnd && lastValue[selectionEnd - 1] == \" \") {\n key = KEYS.right;\n modifier = MODS.option;\n }\n else if (selectionEnd > lastSelectionEnd\n || (selectionEnd == lastSelectionEnd\n && lastSelectionEnd != lastSelectionStart\n && selectionStart == selectionEnd)) {\n key = KEYS.right;\n }\n if (selectionStart !== selectionEnd)\n modifier |= MODS.shift;\n if (key) {\n var result = host.onCommandKey({}, modifier, key);\n if (!result && host.commands) {\n key = KEYS.keyCodeToString(key);\n var command = host.commands.findKeyCommand(modifier, key);\n if (command)\n host.execCommand(command);\n }\n lastSelectionStart = selectionStart;\n lastSelectionEnd = selectionEnd;\n resetSelection(\"\");\n }\n };\n document.addEventListener(\"selectionchange\", detectArrowKeys);\n host.on(\"destroy\", function () {\n document.removeEventListener(\"selectionchange\", detectArrowKeys);\n });\n }\n this.destroy = function () {\n if (text.parentElement)\n text.parentElement.removeChild(text);\n };\n};\nexports.TextInput = TextInput;\nexports.$setUserAgentForTests = function (_isMobile, _isIOS) {\n isMobile = _isMobile;\n isIOS = _isIOS;\n};\n\n});\n\nace.define(\"ace/mouse/default_handlers\",[\"require\",\"exports\",\"module\",\"ace/lib/useragent\"], function(require, exports, module){\"use strict\";\nvar useragent = require(\"../lib/useragent\");\nvar DRAG_OFFSET = 0; // pixels\nvar SCROLL_COOLDOWN_T = 550; // milliseconds\nvar DefaultHandlers = /** @class */ (function () {\n function DefaultHandlers(mouseHandler) {\n mouseHandler.$clickSelection = null;\n var editor = mouseHandler.editor;\n editor.setDefaultHandler(\"mousedown\", this.onMouseDown.bind(mouseHandler));\n editor.setDefaultHandler(\"dblclick\", this.onDoubleClick.bind(mouseHandler));\n editor.setDefaultHandler(\"tripleclick\", this.onTripleClick.bind(mouseHandler));\n editor.setDefaultHandler(\"quadclick\", this.onQuadClick.bind(mouseHandler));\n editor.setDefaultHandler(\"mousewheel\", this.onMouseWheel.bind(mouseHandler));\n var exports = [\"select\", \"startSelect\", \"selectEnd\", \"selectAllEnd\", \"selectByWordsEnd\",\n \"selectByLinesEnd\", \"dragWait\", \"dragWaitEnd\", \"focusWait\"];\n exports.forEach(function (x) {\n mouseHandler[x] = this[x];\n }, this);\n mouseHandler.selectByLines = this.extendSelectionBy.bind(mouseHandler, \"getLineRange\");\n mouseHandler.selectByWords = this.extendSelectionBy.bind(mouseHandler, \"getWordRange\");\n }\n DefaultHandlers.prototype.onMouseDown = function (ev) {\n var inSelection = ev.inSelection();\n var pos = ev.getDocumentPosition();\n this.mousedownEvent = ev;\n var editor = this.editor;\n var button = ev.getButton();\n if (button !== 0) {\n var selectionRange = editor.getSelectionRange();\n var selectionEmpty = selectionRange.isEmpty();\n if (selectionEmpty || button == 1)\n editor.selection.moveToPosition(pos);\n if (button == 2) {\n editor.textInput.onContextMenu(ev.domEvent);\n if (!useragent.isMozilla)\n ev.preventDefault();\n }\n return;\n }\n this.mousedownEvent.time = Date.now();\n if (inSelection && !editor.isFocused()) {\n editor.focus();\n if (this.$focusTimeout && !this.$clickSelection && !editor.inMultiSelectMode) {\n this.setState(\"focusWait\");\n this.captureMouse(ev);\n return;\n }\n }\n this.captureMouse(ev);\n this.startSelect(pos, ev.domEvent._clicks > 1);\n return ev.preventDefault();\n };\n DefaultHandlers.prototype.startSelect = function (pos, waitForClickSelection) {\n pos = pos || this.editor.renderer.screenToTextCoordinates(this.x, this.y);\n var editor = this.editor;\n if (!this.mousedownEvent)\n return;\n if (this.mousedownEvent.getShiftKey())\n editor.selection.selectToPosition(pos);\n else if (!waitForClickSelection)\n editor.selection.moveToPosition(pos);\n if (!waitForClickSelection)\n this.select();\n editor.setStyle(\"ace_selecting\");\n this.setState(\"select\");\n };\n DefaultHandlers.prototype.select = function () {\n var anchor, editor = this.editor;\n var cursor = editor.renderer.screenToTextCoordinates(this.x, this.y);\n if (this.$clickSelection) {\n var cmp = this.$clickSelection.comparePoint(cursor);\n if (cmp == -1) {\n anchor = this.$clickSelection.end;\n }\n else if (cmp == 1) {\n anchor = this.$clickSelection.start;\n }\n else {\n var orientedRange = calcRangeOrientation(this.$clickSelection, cursor);\n cursor = orientedRange.cursor;\n anchor = orientedRange.anchor;\n }\n editor.selection.setSelectionAnchor(anchor.row, anchor.column);\n }\n editor.selection.selectToPosition(cursor);\n editor.renderer.scrollCursorIntoView();\n };\n DefaultHandlers.prototype.extendSelectionBy = function (unitName) {\n var anchor, editor = this.editor;\n var cursor = editor.renderer.screenToTextCoordinates(this.x, this.y);\n var range = editor.selection[unitName](cursor.row, cursor.column);\n if (this.$clickSelection) {\n var cmpStart = this.$clickSelection.comparePoint(range.start);\n var cmpEnd = this.$clickSelection.comparePoint(range.end);\n if (cmpStart == -1 && cmpEnd <= 0) {\n anchor = this.$clickSelection.end;\n if (range.end.row != cursor.row || range.end.column != cursor.column)\n cursor = range.start;\n }\n else if (cmpEnd == 1 && cmpStart >= 0) {\n anchor = this.$clickSelection.start;\n if (range.start.row != cursor.row || range.start.column != cursor.column)\n cursor = range.end;\n }\n else if (cmpStart == -1 && cmpEnd == 1) {\n cursor = range.end;\n anchor = range.start;\n }\n else {\n var orientedRange = calcRangeOrientation(this.$clickSelection, cursor);\n cursor = orientedRange.cursor;\n anchor = orientedRange.anchor;\n }\n editor.selection.setSelectionAnchor(anchor.row, anchor.column);\n }\n editor.selection.selectToPosition(cursor);\n editor.renderer.scrollCursorIntoView();\n };\n DefaultHandlers.prototype.selectByLinesEnd = function () {\n this.$clickSelection = null;\n this.editor.unsetStyle(\"ace_selecting\");\n };\n DefaultHandlers.prototype.focusWait = function () {\n var distance = calcDistance(this.mousedownEvent.x, this.mousedownEvent.y, this.x, this.y);\n var time = Date.now();\n if (distance > DRAG_OFFSET || time - this.mousedownEvent.time > this.$focusTimeout)\n this.startSelect(this.mousedownEvent.getDocumentPosition());\n };\n DefaultHandlers.prototype.onDoubleClick = function (ev) {\n var pos = ev.getDocumentPosition();\n var editor = this.editor;\n var session = editor.session;\n var range = session.getBracketRange(pos);\n if (range) {\n if (range.isEmpty()) {\n range.start.column--;\n range.end.column++;\n }\n this.setState(\"select\");\n }\n else {\n range = editor.selection.getWordRange(pos.row, pos.column);\n this.setState(\"selectByWords\");\n }\n this.$clickSelection = range;\n this.select();\n };\n DefaultHandlers.prototype.onTripleClick = function (ev) {\n var pos = ev.getDocumentPosition();\n var editor = this.editor;\n this.setState(\"selectByLines\");\n var range = editor.getSelectionRange();\n if (range.isMultiLine() && range.contains(pos.row, pos.column)) {\n this.$clickSelection = editor.selection.getLineRange(range.start.row);\n this.$clickSelection.end = editor.selection.getLineRange(range.end.row).end;\n }\n else {\n this.$clickSelection = editor.selection.getLineRange(pos.row);\n }\n this.select();\n };\n DefaultHandlers.prototype.onQuadClick = function (ev) {\n var editor = this.editor;\n editor.selectAll();\n this.$clickSelection = editor.getSelectionRange();\n this.setState(\"selectAll\");\n };\n DefaultHandlers.prototype.onMouseWheel = function (ev) {\n if (ev.getAccelKey())\n return;\n if (ev.getShiftKey() && ev.wheelY && !ev.wheelX) {\n ev.wheelX = ev.wheelY;\n ev.wheelY = 0;\n }\n var editor = this.editor;\n if (!this.$lastScroll)\n this.$lastScroll = { t: 0, vx: 0, vy: 0, allowed: 0 };\n var prevScroll = this.$lastScroll;\n var t = ev.domEvent.timeStamp;\n var dt = t - prevScroll.t;\n var vx = dt ? ev.wheelX / dt : prevScroll.vx;\n var vy = dt ? ev.wheelY / dt : prevScroll.vy;\n if (dt < SCROLL_COOLDOWN_T) {\n vx = (vx + prevScroll.vx) / 2;\n vy = (vy + prevScroll.vy) / 2;\n }\n var direction = Math.abs(vx / vy);\n var canScroll = false;\n if (direction >= 1 && editor.renderer.isScrollableBy(ev.wheelX * ev.speed, 0))\n canScroll = true;\n if (direction <= 1 && editor.renderer.isScrollableBy(0, ev.wheelY * ev.speed))\n canScroll = true;\n if (canScroll) {\n prevScroll.allowed = t;\n }\n else if (t - prevScroll.allowed < SCROLL_COOLDOWN_T) {\n var isSlower = Math.abs(vx) <= 1.5 * Math.abs(prevScroll.vx)\n && Math.abs(vy) <= 1.5 * Math.abs(prevScroll.vy);\n if (isSlower) {\n canScroll = true;\n prevScroll.allowed = t;\n }\n else {\n prevScroll.allowed = 0;\n }\n }\n prevScroll.t = t;\n prevScroll.vx = vx;\n prevScroll.vy = vy;\n if (canScroll) {\n editor.renderer.scrollBy(ev.wheelX * ev.speed, ev.wheelY * ev.speed);\n return ev.stop();\n }\n };\n return DefaultHandlers;\n}());\nDefaultHandlers.prototype.selectEnd = DefaultHandlers.prototype.selectByLinesEnd;\nDefaultHandlers.prototype.selectAllEnd = DefaultHandlers.prototype.selectByLinesEnd;\nDefaultHandlers.prototype.selectByWordsEnd = DefaultHandlers.prototype.selectByLinesEnd;\nexports.DefaultHandlers = DefaultHandlers;\nfunction calcDistance(ax, ay, bx, by) {\n return Math.sqrt(Math.pow(bx - ax, 2) + Math.pow(by - ay, 2));\n}\nfunction calcRangeOrientation(range, cursor) {\n if (range.start.row == range.end.row)\n var cmp = 2 * cursor.column - range.start.column - range.end.column;\n else if (range.start.row == range.end.row - 1 && !range.start.column && !range.end.column)\n var cmp = cursor.column - 4;\n else\n var cmp = 2 * cursor.row - range.start.row - range.end.row;\n if (cmp < 0)\n return { cursor: range.start, anchor: range.end };\n else\n return { cursor: range.end, anchor: range.start };\n}\n\n});\n\nace.define(\"ace/tooltip\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\",\"ace/lib/event\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar dom = require(\"./lib/dom\");\nvar event = require(\"./lib/event\");\nvar Range = require(\"./range\").Range;\nvar CLASSNAME = \"ace_tooltip\";\nvar Tooltip = /** @class */ (function () {\n function Tooltip(parentNode) {\n this.isOpen = false;\n this.$element = null;\n this.$parentNode = parentNode;\n }\n Tooltip.prototype.$init = function () {\n this.$element = dom.createElement(\"div\");\n this.$element.className = CLASSNAME;\n this.$element.style.display = \"none\";\n this.$parentNode.appendChild(this.$element);\n return this.$element;\n };\n Tooltip.prototype.getElement = function () {\n return this.$element || this.$init();\n };\n Tooltip.prototype.setText = function (text) {\n this.getElement().textContent = text;\n };\n Tooltip.prototype.setHtml = function (html) {\n this.getElement().innerHTML = html;\n };\n Tooltip.prototype.setPosition = function (x, y) {\n this.getElement().style.left = x + \"px\";\n this.getElement().style.top = y + \"px\";\n };\n Tooltip.prototype.setClassName = function (className) {\n dom.addCssClass(this.getElement(), className);\n };\n Tooltip.prototype.setTheme = function (theme) {\n this.$element.className = CLASSNAME + \" \" +\n (theme.isDark ? \"ace_dark \" : \"\") + (theme.cssClass || \"\");\n };\n Tooltip.prototype.show = function (text, x, y) {\n if (text != null)\n this.setText(text);\n if (x != null && y != null)\n this.setPosition(x, y);\n if (!this.isOpen) {\n this.getElement().style.display = \"block\";\n this.isOpen = true;\n }\n };\n Tooltip.prototype.hide = function () {\n if (this.isOpen) {\n this.getElement().style.display = \"none\";\n this.getElement().className = CLASSNAME;\n this.isOpen = false;\n }\n };\n Tooltip.prototype.getHeight = function () {\n return this.getElement().offsetHeight;\n };\n Tooltip.prototype.getWidth = function () {\n return this.getElement().offsetWidth;\n };\n Tooltip.prototype.destroy = function () {\n this.isOpen = false;\n if (this.$element && this.$element.parentNode) {\n this.$element.parentNode.removeChild(this.$element);\n }\n };\n return Tooltip;\n}());\nvar PopupManager = /** @class */ (function () {\n function PopupManager() {\n this.popups = [];\n }\n PopupManager.prototype.addPopup = function (popup) {\n this.popups.push(popup);\n this.updatePopups();\n };\n PopupManager.prototype.removePopup = function (popup) {\n var index = this.popups.indexOf(popup);\n if (index !== -1) {\n this.popups.splice(index, 1);\n this.updatePopups();\n }\n };\n PopupManager.prototype.updatePopups = function () {\n var e_1, _a, e_2, _b;\n this.popups.sort(function (a, b) { return b.priority - a.priority; });\n var visiblepopups = [];\n try {\n for (var _c = __values(this.popups), _d = _c.next(); !_d.done; _d = _c.next()) {\n var popup = _d.value;\n var shouldDisplay = true;\n try {\n for (var visiblepopups_1 = (e_2 = void 0, __values(visiblepopups)), visiblepopups_1_1 = visiblepopups_1.next(); !visiblepopups_1_1.done; visiblepopups_1_1 = visiblepopups_1.next()) {\n var visiblePopup = visiblepopups_1_1.value;\n if (this.doPopupsOverlap(visiblePopup, popup)) {\n shouldDisplay = false;\n break;\n }\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (visiblepopups_1_1 && !visiblepopups_1_1.done && (_b = visiblepopups_1.return)) _b.call(visiblepopups_1);\n }\n finally { if (e_2) throw e_2.error; }\n }\n if (shouldDisplay) {\n visiblepopups.push(popup);\n }\n else {\n popup.hide();\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_d && !_d.done && (_a = _c.return)) _a.call(_c);\n }\n finally { if (e_1) throw e_1.error; }\n }\n };\n PopupManager.prototype.doPopupsOverlap = function (popupA, popupB) {\n var rectA = popupA.getElement().getBoundingClientRect();\n var rectB = popupB.getElement().getBoundingClientRect();\n return (rectA.left < rectB.right && rectA.right > rectB.left && rectA.top < rectB.bottom && rectA.bottom\n > rectB.top);\n };\n return PopupManager;\n}());\nvar popupManager = new PopupManager();\nexports.popupManager = popupManager;\nexports.Tooltip = Tooltip;\nvar HoverTooltip = /** @class */ (function (_super) {\n __extends(HoverTooltip, _super);\n function HoverTooltip(parentNode) {\n if (parentNode === void 0) { parentNode = document.body; }\n var _this = _super.call(this, parentNode) || this;\n _this.timeout = undefined;\n _this.lastT = 0;\n _this.idleTime = 350;\n _this.lastEvent = undefined;\n _this.onMouseOut = _this.onMouseOut.bind(_this);\n _this.onMouseMove = _this.onMouseMove.bind(_this);\n _this.waitForHover = _this.waitForHover.bind(_this);\n _this.hide = _this.hide.bind(_this);\n var el = _this.getElement();\n el.style.whiteSpace = \"pre-wrap\";\n el.style.pointerEvents = \"auto\";\n el.addEventListener(\"mouseout\", _this.onMouseOut);\n el.tabIndex = -1;\n el.addEventListener(\"blur\", function () {\n if (!el.contains(document.activeElement))\n this.hide();\n }.bind(_this));\n el.addEventListener(\"wheel\", event.stopPropagation);\n return _this;\n }\n HoverTooltip.prototype.addToEditor = function (editor) {\n editor.on(\"mousemove\", this.onMouseMove);\n editor.on(\"mousedown\", this.hide);\n editor.renderer.getMouseEventTarget().addEventListener(\"mouseout\", this.onMouseOut, true);\n };\n HoverTooltip.prototype.removeFromEditor = function (editor) {\n editor.off(\"mousemove\", this.onMouseMove);\n editor.off(\"mousedown\", this.hide);\n editor.renderer.getMouseEventTarget().removeEventListener(\"mouseout\", this.onMouseOut, true);\n if (this.timeout) {\n clearTimeout(this.timeout);\n this.timeout = null;\n }\n };\n HoverTooltip.prototype.onMouseMove = function (e, editor) {\n this.lastEvent = e;\n this.lastT = Date.now();\n var isMousePressed = editor.$mouseHandler.isMousePressed;\n if (this.isOpen) {\n var pos = this.lastEvent && this.lastEvent.getDocumentPosition();\n if (!this.range\n || !this.range.contains(pos.row, pos.column)\n || isMousePressed\n || this.isOutsideOfText(this.lastEvent)) {\n this.hide();\n }\n }\n if (this.timeout || isMousePressed)\n return;\n this.lastEvent = e;\n this.timeout = setTimeout(this.waitForHover, this.idleTime);\n };\n HoverTooltip.prototype.waitForHover = function () {\n if (this.timeout)\n clearTimeout(this.timeout);\n var dt = Date.now() - this.lastT;\n if (this.idleTime - dt > 10) {\n this.timeout = setTimeout(this.waitForHover, this.idleTime - dt);\n return;\n }\n this.timeout = null;\n if (this.lastEvent && !this.isOutsideOfText(this.lastEvent)) {\n this.$gatherData(this.lastEvent, this.lastEvent.editor);\n }\n };\n HoverTooltip.prototype.isOutsideOfText = function (e) {\n var editor = e.editor;\n var docPos = e.getDocumentPosition();\n var line = editor.session.getLine(docPos.row);\n if (docPos.column == line.length) {\n var screenPos = editor.renderer.pixelToScreenCoordinates(e.clientX, e.clientY);\n var clippedPos = editor.session.documentToScreenPosition(docPos.row, docPos.column);\n if (clippedPos.column != screenPos.column\n || clippedPos.row != screenPos.row) {\n return true;\n }\n }\n return false;\n };\n HoverTooltip.prototype.setDataProvider = function (value) {\n this.$gatherData = value;\n };\n HoverTooltip.prototype.showForRange = function (editor, range, domNode, startingEvent) {\n var MARGIN = 10;\n if (startingEvent && startingEvent != this.lastEvent)\n return;\n if (this.isOpen && document.activeElement == this.getElement())\n return;\n var renderer = editor.renderer;\n if (!this.isOpen) {\n popupManager.addPopup(this);\n this.$registerCloseEvents();\n this.setTheme(renderer.theme);\n }\n this.isOpen = true;\n this.addMarker(range, editor.session);\n this.range = Range.fromPoints(range.start, range.end);\n var position = renderer.textToScreenCoordinates(range.start.row, range.start.column);\n var rect = renderer.scroller.getBoundingClientRect();\n if (position.pageX < rect.left)\n position.pageX = rect.left;\n var element = this.getElement();\n element.innerHTML = \"\";\n element.appendChild(domNode);\n element.style.maxHeight = \"\";\n element.style.display = \"block\";\n var labelHeight = element.clientHeight;\n var labelWidth = element.clientWidth;\n var spaceBelow = window.innerHeight - position.pageY - renderer.lineHeight;\n var isAbove = true;\n if (position.pageY - labelHeight < 0 && position.pageY < spaceBelow) {\n isAbove = false;\n }\n element.style.maxHeight = (isAbove ? position.pageY : spaceBelow) - MARGIN + \"px\";\n element.style.top = isAbove ? \"\" : position.pageY + renderer.lineHeight + \"px\";\n element.style.bottom = isAbove ? window.innerHeight - position.pageY + \"px\" : \"\";\n element.style.left = Math.min(position.pageX, window.innerWidth - labelWidth - MARGIN) + \"px\";\n };\n HoverTooltip.prototype.addMarker = function (range, session) {\n if (this.marker) {\n this.$markerSession.removeMarker(this.marker);\n }\n this.$markerSession = session;\n this.marker = session && session.addMarker(range, \"ace_highlight-marker\", \"text\");\n };\n HoverTooltip.prototype.hide = function (e) {\n if (!e && document.activeElement == this.getElement())\n return;\n if (e && e.target && (e.type != \"keydown\" || e.ctrlKey || e.metaKey) && this.$element.contains(e.target))\n return;\n this.lastEvent = null;\n if (this.timeout)\n clearTimeout(this.timeout);\n this.timeout = null;\n this.addMarker(null);\n if (this.isOpen) {\n this.$removeCloseEvents();\n this.getElement().style.display = \"none\";\n this.isOpen = false;\n popupManager.removePopup(this);\n }\n };\n HoverTooltip.prototype.$registerCloseEvents = function () {\n window.addEventListener(\"keydown\", this.hide, true);\n window.addEventListener(\"wheel\", this.hide, true);\n window.addEventListener(\"mousedown\", this.hide, true);\n };\n HoverTooltip.prototype.$removeCloseEvents = function () {\n window.removeEventListener(\"keydown\", this.hide, true);\n window.removeEventListener(\"wheel\", this.hide, true);\n window.removeEventListener(\"mousedown\", this.hide, true);\n };\n HoverTooltip.prototype.onMouseOut = function (e) {\n if (this.timeout) {\n clearTimeout(this.timeout);\n this.timeout = null;\n }\n this.lastEvent = null;\n if (!this.isOpen)\n return;\n if (!e.relatedTarget || this.getElement().contains(e.relatedTarget))\n return;\n if (e && e.currentTarget.contains(e.relatedTarget))\n return;\n if (!e.relatedTarget.classList.contains(\"ace_content\"))\n this.hide();\n };\n return HoverTooltip;\n}(Tooltip));\nexports.HoverTooltip = HoverTooltip;\n\n});\n\nace.define(\"ace/mouse/default_gutter_handler\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\",\"ace/lib/event\",\"ace/tooltip\",\"ace/config\"], function(require, exports, module){\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar dom = require(\"../lib/dom\");\nvar event = require(\"../lib/event\");\nvar Tooltip = require(\"../tooltip\").Tooltip;\nvar nls = require(\"../config\").nls;\nfunction GutterHandler(mouseHandler) {\n var editor = mouseHandler.editor;\n var gutter = editor.renderer.$gutterLayer;\n var tooltip = new GutterTooltip(editor);\n mouseHandler.editor.setDefaultHandler(\"guttermousedown\", function (e) {\n if (!editor.isFocused() || e.getButton() != 0)\n return;\n var gutterRegion = gutter.getRegion(e);\n if (gutterRegion == \"foldWidgets\")\n return;\n var row = e.getDocumentPosition().row;\n var selection = editor.session.selection;\n if (e.getShiftKey())\n selection.selectTo(row, 0);\n else {\n if (e.domEvent.detail == 2) {\n editor.selectAll();\n return e.preventDefault();\n }\n mouseHandler.$clickSelection = editor.selection.getLineRange(row);\n }\n mouseHandler.setState(\"selectByLines\");\n mouseHandler.captureMouse(e);\n return e.preventDefault();\n });\n var tooltipTimeout, mouseEvent;\n function showTooltip() {\n var row = mouseEvent.getDocumentPosition().row;\n var maxRow = editor.session.getLength();\n if (row == maxRow) {\n var screenRow = editor.renderer.pixelToScreenCoordinates(0, mouseEvent.y).row;\n var pos = mouseEvent.$pos;\n if (screenRow > editor.session.documentToScreenRow(pos.row, pos.column))\n return hideTooltip();\n }\n tooltip.showTooltip(row);\n if (!tooltip.isOpen)\n return;\n editor.on(\"mousewheel\", hideTooltip);\n if (mouseHandler.$tooltipFollowsMouse) {\n moveTooltip(mouseEvent);\n }\n else {\n var gutterRow = mouseEvent.getGutterRow();\n var gutterCell = gutter.$lines.get(gutterRow);\n if (gutterCell) {\n var gutterElement = gutterCell.element.querySelector(\".ace_gutter_annotation\");\n var rect = gutterElement.getBoundingClientRect();\n var style = tooltip.getElement().style;\n style.left = rect.right + \"px\";\n style.top = rect.bottom + \"px\";\n }\n else {\n moveTooltip(mouseEvent);\n }\n }\n }\n function hideTooltip() {\n if (tooltipTimeout)\n tooltipTimeout = clearTimeout(tooltipTimeout);\n if (tooltip.isOpen) {\n tooltip.hideTooltip();\n editor.off(\"mousewheel\", hideTooltip);\n }\n }\n function moveTooltip(e) {\n tooltip.setPosition(e.x, e.y);\n }\n mouseHandler.editor.setDefaultHandler(\"guttermousemove\", function (e) {\n var target = e.domEvent.target || e.domEvent.srcElement;\n if (dom.hasCssClass(target, \"ace_fold-widget\"))\n return hideTooltip();\n if (tooltip.isOpen && mouseHandler.$tooltipFollowsMouse)\n moveTooltip(e);\n mouseEvent = e;\n if (tooltipTimeout)\n return;\n tooltipTimeout = setTimeout(function () {\n tooltipTimeout = null;\n if (mouseEvent && !mouseHandler.isMousePressed)\n showTooltip();\n else\n hideTooltip();\n }, 50);\n });\n event.addListener(editor.renderer.$gutter, \"mouseout\", function (e) {\n mouseEvent = null;\n if (!tooltip.isOpen || tooltipTimeout)\n return;\n tooltipTimeout = setTimeout(function () {\n tooltipTimeout = null;\n hideTooltip();\n }, 50);\n }, editor);\n editor.on(\"changeSession\", hideTooltip);\n editor.on(\"input\", hideTooltip);\n}\nexports.GutterHandler = GutterHandler;\nvar GutterTooltip = /** @class */ (function (_super) {\n __extends(GutterTooltip, _super);\n function GutterTooltip(editor) {\n var _this = _super.call(this, editor.container) || this;\n _this.editor = editor;\n return _this;\n }\n GutterTooltip.prototype.setPosition = function (x, y) {\n var windowWidth = window.innerWidth || document.documentElement.clientWidth;\n var windowHeight = window.innerHeight || document.documentElement.clientHeight;\n var width = this.getWidth();\n var height = this.getHeight();\n x += 15;\n y += 15;\n if (x + width > windowWidth) {\n x -= (x + width) - windowWidth;\n }\n if (y + height > windowHeight) {\n y -= 20 + height;\n }\n Tooltip.prototype.setPosition.call(this, x, y);\n };\n Object.defineProperty(GutterTooltip, \"annotationLabels\", {\n get: function () {\n return {\n error: { singular: nls(\"error\"), plural: nls(\"errors\") },\n warning: { singular: nls(\"warning\"), plural: nls(\"warnings\") },\n info: { singular: nls(\"information message\"), plural: nls(\"information messages\") }\n };\n },\n enumerable: false,\n configurable: true\n });\n GutterTooltip.prototype.showTooltip = function (row) {\n var gutter = this.editor.renderer.$gutterLayer;\n var annotationsInRow = gutter.$annotations[row];\n var annotation;\n if (annotationsInRow)\n annotation = { text: Array.from(annotationsInRow.text), type: Array.from(annotationsInRow.type) };\n else\n annotation = { text: [], type: [] };\n var fold = gutter.session.getFoldLine(row);\n if (fold && gutter.$showFoldedAnnotations) {\n var annotationsInFold = { error: [], warning: [], info: [] };\n var mostSevereAnnotationInFoldType;\n for (var i = row + 1; i <= fold.end.row; i++) {\n if (!gutter.$annotations[i])\n continue;\n for (var j = 0; j < gutter.$annotations[i].text.length; j++) {\n var annotationType = gutter.$annotations[i].type[j];\n annotationsInFold[annotationType].push(gutter.$annotations[i].text[j]);\n if (annotationType === \"error\") {\n mostSevereAnnotationInFoldType = \"error_fold\";\n continue;\n }\n if (annotationType === \"warning\") {\n mostSevereAnnotationInFoldType = \"warning_fold\";\n continue;\n }\n }\n }\n if (mostSevereAnnotationInFoldType === \"error_fold\" || mostSevereAnnotationInFoldType === \"warning_fold\") {\n var summaryFoldedAnnotations = \"\".concat(GutterTooltip.annotationsToSummaryString(annotationsInFold), \" in folded code.\");\n annotation.text.push(summaryFoldedAnnotations);\n annotation.type.push(mostSevereAnnotationInFoldType);\n }\n }\n if (annotation.text.length === 0)\n return this.hide();\n var annotationMessages = { error: [], warning: [], info: [] };\n var iconClassName = gutter.$useSvgGutterIcons ? \"ace_icon_svg\" : \"ace_icon\";\n for (var i = 0; i < annotation.text.length; i++) {\n var line = \" \").concat(annotation.text[i]);\n annotationMessages[annotation.type[i].replace(\"_fold\", \"\")].push(line);\n }\n var tooltipContent = [].concat(annotationMessages.error, annotationMessages.warning, annotationMessages.info).join(\"
    \");\n this.setHtml(tooltipContent);\n this.$element.setAttribute(\"aria-live\", \"polite\");\n if (!this.isOpen) {\n this.setTheme(this.editor.renderer.theme);\n this.setClassName(\"ace_gutter-tooltip\");\n }\n this.show();\n this.editor._signal(\"showGutterTooltip\", this);\n };\n GutterTooltip.prototype.hideTooltip = function () {\n this.$element.removeAttribute(\"aria-live\");\n this.hide();\n this.editor._signal(\"hideGutterTooltip\", this);\n };\n GutterTooltip.annotationsToSummaryString = function (annotations) {\n var e_1, _a;\n var summary = [];\n var annotationTypes = ['error', 'warning', 'info'];\n try {\n for (var annotationTypes_1 = __values(annotationTypes), annotationTypes_1_1 = annotationTypes_1.next(); !annotationTypes_1_1.done; annotationTypes_1_1 = annotationTypes_1.next()) {\n var annotationType = annotationTypes_1_1.value;\n if (!annotations[annotationType].length)\n continue;\n var label = annotations[annotationType].length === 1 ? GutterTooltip.annotationLabels[annotationType].singular : GutterTooltip.annotationLabels[annotationType].plural;\n summary.push(\"\".concat(annotations[annotationType].length, \" \").concat(label));\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (annotationTypes_1_1 && !annotationTypes_1_1.done && (_a = annotationTypes_1.return)) _a.call(annotationTypes_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return summary.join(\", \");\n };\n return GutterTooltip;\n}(Tooltip));\nexports.GutterTooltip = GutterTooltip;\n\n});\n\nace.define(\"ace/mouse/mouse_event\",[\"require\",\"exports\",\"module\",\"ace/lib/event\",\"ace/lib/useragent\"], function(require, exports, module){\"use strict\";\nvar event = require(\"../lib/event\");\nvar useragent = require(\"../lib/useragent\");\nvar MouseEvent = /** @class */ (function () {\n function MouseEvent(domEvent, editor) {\n this.domEvent = domEvent;\n this.editor = editor;\n this.x = this.clientX = domEvent.clientX;\n this.y = this.clientY = domEvent.clientY;\n this.$pos = null;\n this.$inSelection = null;\n this.propagationStopped = false;\n this.defaultPrevented = false;\n }\n MouseEvent.prototype.stopPropagation = function () {\n event.stopPropagation(this.domEvent);\n this.propagationStopped = true;\n };\n MouseEvent.prototype.preventDefault = function () {\n event.preventDefault(this.domEvent);\n this.defaultPrevented = true;\n };\n MouseEvent.prototype.stop = function () {\n this.stopPropagation();\n this.preventDefault();\n };\n MouseEvent.prototype.getDocumentPosition = function () {\n if (this.$pos)\n return this.$pos;\n this.$pos = this.editor.renderer.screenToTextCoordinates(this.clientX, this.clientY);\n return this.$pos;\n };\n MouseEvent.prototype.getGutterRow = function () {\n var documentRow = this.getDocumentPosition().row;\n var screenRow = this.editor.session.documentToScreenRow(documentRow, 0);\n var screenTopRow = this.editor.session.documentToScreenRow(this.editor.renderer.$gutterLayer.$lines.get(0).row, 0);\n return screenRow - screenTopRow;\n };\n MouseEvent.prototype.inSelection = function () {\n if (this.$inSelection !== null)\n return this.$inSelection;\n var editor = this.editor;\n var selectionRange = editor.getSelectionRange();\n if (selectionRange.isEmpty())\n this.$inSelection = false;\n else {\n var pos = this.getDocumentPosition();\n this.$inSelection = selectionRange.contains(pos.row, pos.column);\n }\n return this.$inSelection;\n };\n MouseEvent.prototype.getButton = function () {\n return event.getButton(this.domEvent);\n };\n MouseEvent.prototype.getShiftKey = function () {\n return this.domEvent.shiftKey;\n };\n MouseEvent.prototype.getAccelKey = function () {\n return useragent.isMac ? this.domEvent.metaKey : this.domEvent.ctrlKey;\n };\n return MouseEvent;\n}());\nexports.MouseEvent = MouseEvent;\n\n});\n\nace.define(\"ace/mouse/dragdrop_handler\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\",\"ace/lib/event\",\"ace/lib/useragent\"], function(require, exports, module){\"use strict\";\nvar dom = require(\"../lib/dom\");\nvar event = require(\"../lib/event\");\nvar useragent = require(\"../lib/useragent\");\nvar AUTOSCROLL_DELAY = 200;\nvar SCROLL_CURSOR_DELAY = 200;\nvar SCROLL_CURSOR_HYSTERESIS = 5;\nfunction DragdropHandler(mouseHandler) {\n var editor = mouseHandler.editor;\n var dragImage = dom.createElement(\"div\");\n dragImage.style.cssText = \"top:-100px;position:absolute;z-index:2147483647;opacity:0.5\";\n dragImage.textContent = \"\\xa0\";\n var exports = [\"dragWait\", \"dragWaitEnd\", \"startDrag\", \"dragReadyEnd\", \"onMouseDrag\"];\n exports.forEach(function (x) {\n mouseHandler[x] = this[x];\n }, this);\n editor.on(\"mousedown\", this.onMouseDown.bind(mouseHandler));\n var mouseTarget = editor.container;\n var dragSelectionMarker, x, y;\n var timerId, range;\n var dragCursor, counter = 0;\n var dragOperation;\n var isInternal;\n var autoScrollStartTime;\n var cursorMovedTime;\n var cursorPointOnCaretMoved;\n this.onDragStart = function (e) {\n if (this.cancelDrag || !mouseTarget.draggable) {\n var self = this;\n setTimeout(function () {\n self.startSelect();\n self.captureMouse(e);\n }, 0);\n return e.preventDefault();\n }\n range = editor.getSelectionRange();\n var dataTransfer = e.dataTransfer;\n dataTransfer.effectAllowed = editor.getReadOnly() ? \"copy\" : \"copyMove\";\n editor.container.appendChild(dragImage);\n dataTransfer.setDragImage && dataTransfer.setDragImage(dragImage, 0, 0);\n setTimeout(function () {\n editor.container.removeChild(dragImage);\n });\n dataTransfer.clearData();\n dataTransfer.setData(\"Text\", editor.session.getTextRange());\n isInternal = true;\n this.setState(\"drag\");\n };\n this.onDragEnd = function (e) {\n mouseTarget.draggable = false;\n isInternal = false;\n this.setState(null);\n if (!editor.getReadOnly()) {\n var dropEffect = e.dataTransfer.dropEffect;\n if (!dragOperation && dropEffect == \"move\")\n editor.session.remove(editor.getSelectionRange());\n editor.$resetCursorStyle();\n }\n this.editor.unsetStyle(\"ace_dragging\");\n this.editor.renderer.setCursorStyle(\"\");\n };\n this.onDragEnter = function (e) {\n if (editor.getReadOnly() || !canAccept(e.dataTransfer))\n return;\n x = e.clientX;\n y = e.clientY;\n if (!dragSelectionMarker)\n addDragMarker();\n counter++;\n e.dataTransfer.dropEffect = dragOperation = getDropEffect(e);\n return event.preventDefault(e);\n };\n this.onDragOver = function (e) {\n if (editor.getReadOnly() || !canAccept(e.dataTransfer))\n return;\n x = e.clientX;\n y = e.clientY;\n if (!dragSelectionMarker) {\n addDragMarker();\n counter++;\n }\n if (onMouseMoveTimer !== null)\n onMouseMoveTimer = null;\n e.dataTransfer.dropEffect = dragOperation = getDropEffect(e);\n return event.preventDefault(e);\n };\n this.onDragLeave = function (e) {\n counter--;\n if (counter <= 0 && dragSelectionMarker) {\n clearDragMarker();\n dragOperation = null;\n return event.preventDefault(e);\n }\n };\n this.onDrop = function (e) {\n if (!dragCursor)\n return;\n var dataTransfer = e.dataTransfer;\n if (isInternal) {\n switch (dragOperation) {\n case \"move\":\n if (range.contains(dragCursor.row, dragCursor.column)) {\n range = {\n start: dragCursor,\n end: dragCursor\n };\n }\n else {\n range = editor.moveText(range, dragCursor);\n }\n break;\n case \"copy\":\n range = editor.moveText(range, dragCursor, true);\n break;\n }\n }\n else {\n var dropData = dataTransfer.getData('Text');\n range = {\n start: dragCursor,\n end: editor.session.insert(dragCursor, dropData)\n };\n editor.focus();\n dragOperation = null;\n }\n clearDragMarker();\n return event.preventDefault(e);\n };\n event.addListener(mouseTarget, \"dragstart\", this.onDragStart.bind(mouseHandler), editor);\n event.addListener(mouseTarget, \"dragend\", this.onDragEnd.bind(mouseHandler), editor);\n event.addListener(mouseTarget, \"dragenter\", this.onDragEnter.bind(mouseHandler), editor);\n event.addListener(mouseTarget, \"dragover\", this.onDragOver.bind(mouseHandler), editor);\n event.addListener(mouseTarget, \"dragleave\", this.onDragLeave.bind(mouseHandler), editor);\n event.addListener(mouseTarget, \"drop\", this.onDrop.bind(mouseHandler), editor);\n function scrollCursorIntoView(cursor, prevCursor) {\n var now = Date.now();\n var vMovement = !prevCursor || cursor.row != prevCursor.row;\n var hMovement = !prevCursor || cursor.column != prevCursor.column;\n if (!cursorMovedTime || vMovement || hMovement) {\n editor.moveCursorToPosition(cursor);\n cursorMovedTime = now;\n cursorPointOnCaretMoved = { x: x, y: y };\n }\n else {\n var distance = calcDistance(cursorPointOnCaretMoved.x, cursorPointOnCaretMoved.y, x, y);\n if (distance > SCROLL_CURSOR_HYSTERESIS) {\n cursorMovedTime = null;\n }\n else if (now - cursorMovedTime >= SCROLL_CURSOR_DELAY) {\n editor.renderer.scrollCursorIntoView();\n cursorMovedTime = null;\n }\n }\n }\n function autoScroll(cursor, prevCursor) {\n var now = Date.now();\n var lineHeight = editor.renderer.layerConfig.lineHeight;\n var characterWidth = editor.renderer.layerConfig.characterWidth;\n var editorRect = editor.renderer.scroller.getBoundingClientRect();\n var offsets = {\n x: {\n left: x - editorRect.left,\n right: editorRect.right - x\n },\n y: {\n top: y - editorRect.top,\n bottom: editorRect.bottom - y\n }\n };\n var nearestXOffset = Math.min(offsets.x.left, offsets.x.right);\n var nearestYOffset = Math.min(offsets.y.top, offsets.y.bottom);\n var scrollCursor = { row: cursor.row, column: cursor.column };\n if (nearestXOffset / characterWidth <= 2) {\n scrollCursor.column += (offsets.x.left < offsets.x.right ? -3 : +2);\n }\n if (nearestYOffset / lineHeight <= 1) {\n scrollCursor.row += (offsets.y.top < offsets.y.bottom ? -1 : +1);\n }\n var vScroll = cursor.row != scrollCursor.row;\n var hScroll = cursor.column != scrollCursor.column;\n var vMovement = !prevCursor || cursor.row != prevCursor.row;\n if (vScroll || (hScroll && !vMovement)) {\n if (!autoScrollStartTime)\n autoScrollStartTime = now;\n else if (now - autoScrollStartTime >= AUTOSCROLL_DELAY)\n editor.renderer.scrollCursorIntoView(scrollCursor);\n }\n else {\n autoScrollStartTime = null;\n }\n }\n function onDragInterval() {\n var prevCursor = dragCursor;\n dragCursor = editor.renderer.screenToTextCoordinates(x, y);\n scrollCursorIntoView(dragCursor, prevCursor);\n autoScroll(dragCursor, prevCursor);\n }\n function addDragMarker() {\n range = editor.selection.toOrientedRange();\n dragSelectionMarker = editor.session.addMarker(range, \"ace_selection\", editor.getSelectionStyle());\n editor.clearSelection();\n if (editor.isFocused())\n editor.renderer.$cursorLayer.setBlinking(false);\n clearInterval(timerId);\n onDragInterval();\n timerId = setInterval(onDragInterval, 20);\n counter = 0;\n event.addListener(document, \"mousemove\", onMouseMove);\n }\n function clearDragMarker() {\n clearInterval(timerId);\n editor.session.removeMarker(dragSelectionMarker);\n dragSelectionMarker = null;\n editor.selection.fromOrientedRange(range);\n if (editor.isFocused() && !isInternal)\n editor.$resetCursorStyle();\n range = null;\n dragCursor = null;\n counter = 0;\n autoScrollStartTime = null;\n cursorMovedTime = null;\n event.removeListener(document, \"mousemove\", onMouseMove);\n }\n var onMouseMoveTimer = null;\n function onMouseMove() {\n if (onMouseMoveTimer == null) {\n onMouseMoveTimer = setTimeout(function () {\n if (onMouseMoveTimer != null && dragSelectionMarker)\n clearDragMarker();\n }, 20);\n }\n }\n function canAccept(dataTransfer) {\n var types = dataTransfer.types;\n return !types || Array.prototype.some.call(types, function (type) {\n return type == 'text/plain' || type == 'Text';\n });\n }\n function getDropEffect(e) {\n var copyAllowed = ['copy', 'copymove', 'all', 'uninitialized'];\n var moveAllowed = ['move', 'copymove', 'linkmove', 'all', 'uninitialized'];\n var copyModifierState = useragent.isMac ? e.altKey : e.ctrlKey;\n var effectAllowed = \"uninitialized\";\n try {\n effectAllowed = e.dataTransfer.effectAllowed.toLowerCase();\n }\n catch (e) { }\n var dropEffect = \"none\";\n if (copyModifierState && copyAllowed.indexOf(effectAllowed) >= 0)\n dropEffect = \"copy\";\n else if (moveAllowed.indexOf(effectAllowed) >= 0)\n dropEffect = \"move\";\n else if (copyAllowed.indexOf(effectAllowed) >= 0)\n dropEffect = \"copy\";\n return dropEffect;\n }\n}\n(function () {\n this.dragWait = function () {\n var interval = Date.now() - this.mousedownEvent.time;\n if (interval > this.editor.getDragDelay())\n this.startDrag();\n };\n this.dragWaitEnd = function () {\n var target = this.editor.container;\n target.draggable = false;\n this.startSelect(this.mousedownEvent.getDocumentPosition());\n this.selectEnd();\n };\n this.dragReadyEnd = function (e) {\n this.editor.$resetCursorStyle();\n this.editor.unsetStyle(\"ace_dragging\");\n this.editor.renderer.setCursorStyle(\"\");\n this.dragWaitEnd();\n };\n this.startDrag = function () {\n this.cancelDrag = false;\n var editor = this.editor;\n var target = editor.container;\n target.draggable = true;\n editor.renderer.$cursorLayer.setBlinking(false);\n editor.setStyle(\"ace_dragging\");\n var cursorStyle = useragent.isWin ? \"default\" : \"move\";\n editor.renderer.setCursorStyle(cursorStyle);\n this.setState(\"dragReady\");\n };\n this.onMouseDrag = function (e) {\n var target = this.editor.container;\n if (useragent.isIE && this.state == \"dragReady\") {\n var distance = calcDistance(this.mousedownEvent.x, this.mousedownEvent.y, this.x, this.y);\n if (distance > 3)\n target.dragDrop();\n }\n if (this.state === \"dragWait\") {\n var distance = calcDistance(this.mousedownEvent.x, this.mousedownEvent.y, this.x, this.y);\n if (distance > 0) {\n target.draggable = false;\n this.startSelect(this.mousedownEvent.getDocumentPosition());\n }\n }\n };\n this.onMouseDown = function (e) {\n if (!this.$dragEnabled)\n return;\n this.mousedownEvent = e;\n var editor = this.editor;\n var inSelection = e.inSelection();\n var button = e.getButton();\n var clickCount = e.domEvent.detail || 1;\n if (clickCount === 1 && button === 0 && inSelection) {\n if (e.editor.inMultiSelectMode && (e.getAccelKey() || e.getShiftKey()))\n return;\n this.mousedownEvent.time = Date.now();\n var eventTarget = e.domEvent.target || e.domEvent.srcElement;\n if (\"unselectable\" in eventTarget)\n eventTarget.unselectable = \"on\";\n if (editor.getDragDelay()) {\n if (useragent.isWebKit) {\n this.cancelDrag = true;\n var mouseTarget = editor.container;\n mouseTarget.draggable = true;\n }\n this.setState(\"dragWait\");\n }\n else {\n this.startDrag();\n }\n this.captureMouse(e, this.onMouseDrag.bind(this));\n e.defaultPrevented = true;\n }\n };\n}).call(DragdropHandler.prototype);\nfunction calcDistance(ax, ay, bx, by) {\n return Math.sqrt(Math.pow(bx - ax, 2) + Math.pow(by - ay, 2));\n}\nexports.DragdropHandler = DragdropHandler;\n\n});\n\nace.define(\"ace/mouse/touch_handler\",[\"require\",\"exports\",\"module\",\"ace/mouse/mouse_event\",\"ace/lib/event\",\"ace/lib/dom\"], function(require, exports, module){\"use strict\";\nvar MouseEvent = require(\"./mouse_event\").MouseEvent;\nvar event = require(\"../lib/event\");\nvar dom = require(\"../lib/dom\");\nexports.addTouchListeners = function (el, editor) {\n var mode = \"scroll\";\n var startX;\n var startY;\n var touchStartT;\n var lastT;\n var longTouchTimer;\n var animationTimer;\n var animationSteps = 0;\n var pos;\n var clickCount = 0;\n var vX = 0;\n var vY = 0;\n var pressed;\n var contextMenu;\n function createContextMenu() {\n var clipboard = window.navigator && window.navigator.clipboard;\n var isOpen = false;\n var updateMenu = function () {\n var selected = editor.getCopyText();\n var hasUndo = editor.session.getUndoManager().hasUndo();\n contextMenu.replaceChild(dom.buildDom(isOpen ? [\"span\",\n !selected && [\"span\", { class: \"ace_mobile-button\", action: \"selectall\" }, \"Select All\"],\n selected && [\"span\", { class: \"ace_mobile-button\", action: \"copy\" }, \"Copy\"],\n selected && [\"span\", { class: \"ace_mobile-button\", action: \"cut\" }, \"Cut\"],\n clipboard && [\"span\", { class: \"ace_mobile-button\", action: \"paste\" }, \"Paste\"],\n hasUndo && [\"span\", { class: \"ace_mobile-button\", action: \"undo\" }, \"Undo\"],\n [\"span\", { class: \"ace_mobile-button\", action: \"find\" }, \"Find\"],\n [\"span\", { class: \"ace_mobile-button\", action: \"openCommandPalette\" }, \"Palette\"]\n ] : [\"span\"]), contextMenu.firstChild);\n };\n var handleClick = function (e) {\n var action = e.target.getAttribute(\"action\");\n if (action == \"more\" || !isOpen) {\n isOpen = !isOpen;\n return updateMenu();\n }\n if (action == \"paste\") {\n clipboard.readText().then(function (text) {\n editor.execCommand(action, text);\n });\n }\n else if (action) {\n if (action == \"cut\" || action == \"copy\") {\n if (clipboard)\n clipboard.writeText(editor.getCopyText());\n else\n document.execCommand(\"copy\");\n }\n editor.execCommand(action);\n }\n contextMenu.firstChild.style.display = \"none\";\n isOpen = false;\n if (action != \"openCommandPalette\")\n editor.focus();\n };\n contextMenu = dom.buildDom([\"div\",\n {\n class: \"ace_mobile-menu\",\n ontouchstart: function (e) {\n mode = \"menu\";\n e.stopPropagation();\n e.preventDefault();\n editor.textInput.focus();\n },\n ontouchend: function (e) {\n e.stopPropagation();\n e.preventDefault();\n handleClick(e);\n },\n onclick: handleClick\n },\n [\"span\"],\n [\"span\", { class: \"ace_mobile-button\", action: \"more\" }, \"...\"]\n ], editor.container);\n }\n function showContextMenu() {\n if (!contextMenu)\n createContextMenu();\n var cursor = editor.selection.cursor;\n var pagePos = editor.renderer.textToScreenCoordinates(cursor.row, cursor.column);\n var leftOffset = editor.renderer.textToScreenCoordinates(0, 0).pageX;\n var scrollLeft = editor.renderer.scrollLeft;\n var rect = editor.container.getBoundingClientRect();\n contextMenu.style.top = pagePos.pageY - rect.top - 3 + \"px\";\n if (pagePos.pageX - rect.left < rect.width - 70) {\n contextMenu.style.left = \"\";\n contextMenu.style.right = \"10px\";\n }\n else {\n contextMenu.style.right = \"\";\n contextMenu.style.left = leftOffset + scrollLeft - rect.left + \"px\";\n }\n contextMenu.style.display = \"\";\n contextMenu.firstChild.style.display = \"none\";\n editor.on(\"input\", hideContextMenu);\n }\n function hideContextMenu(e) {\n if (contextMenu)\n contextMenu.style.display = \"none\";\n editor.off(\"input\", hideContextMenu);\n }\n function handleLongTap() {\n longTouchTimer = null;\n clearTimeout(longTouchTimer);\n var range = editor.selection.getRange();\n var inSelection = range.contains(pos.row, pos.column);\n if (range.isEmpty() || !inSelection) {\n editor.selection.moveToPosition(pos);\n editor.selection.selectWord();\n }\n mode = \"wait\";\n showContextMenu();\n }\n function switchToSelectionMode() {\n longTouchTimer = null;\n clearTimeout(longTouchTimer);\n editor.selection.moveToPosition(pos);\n var range = clickCount >= 2\n ? editor.selection.getLineRange(pos.row)\n : editor.session.getBracketRange(pos);\n if (range && !range.isEmpty()) {\n editor.selection.setRange(range);\n }\n else {\n editor.selection.selectWord();\n }\n mode = \"wait\";\n }\n event.addListener(el, \"contextmenu\", function (e) {\n if (!pressed)\n return;\n var textarea = editor.textInput.getElement();\n textarea.focus();\n }, editor);\n event.addListener(el, \"touchstart\", function (e) {\n var touches = e.touches;\n if (longTouchTimer || touches.length > 1) {\n clearTimeout(longTouchTimer);\n longTouchTimer = null;\n touchStartT = -1;\n mode = \"zoom\";\n return;\n }\n pressed = editor.$mouseHandler.isMousePressed = true;\n var h = editor.renderer.layerConfig.lineHeight;\n var w = editor.renderer.layerConfig.lineHeight;\n var t = e.timeStamp;\n lastT = t;\n var touchObj = touches[0];\n var x = touchObj.clientX;\n var y = touchObj.clientY;\n if (Math.abs(startX - x) + Math.abs(startY - y) > h)\n touchStartT = -1;\n startX = e.clientX = x;\n startY = e.clientY = y;\n vX = vY = 0;\n var ev = new MouseEvent(e, editor);\n pos = ev.getDocumentPosition();\n if (t - touchStartT < 500 && touches.length == 1 && !animationSteps) {\n clickCount++;\n e.preventDefault();\n e.button = 0;\n switchToSelectionMode();\n }\n else {\n clickCount = 0;\n var cursor = editor.selection.cursor;\n var anchor = editor.selection.isEmpty() ? cursor : editor.selection.anchor;\n var cursorPos = editor.renderer.$cursorLayer.getPixelPosition(cursor, true);\n var anchorPos = editor.renderer.$cursorLayer.getPixelPosition(anchor, true);\n var rect = editor.renderer.scroller.getBoundingClientRect();\n var offsetTop = editor.renderer.layerConfig.offset;\n var offsetLeft = editor.renderer.scrollLeft;\n var weightedDistance = function (x, y) {\n x = x / w;\n y = y / h - 0.75;\n return x * x + y * y;\n };\n if (e.clientX < rect.left) {\n mode = \"zoom\";\n return;\n }\n var diff1 = weightedDistance(e.clientX - rect.left - cursorPos.left + offsetLeft, e.clientY - rect.top - cursorPos.top + offsetTop);\n var diff2 = weightedDistance(e.clientX - rect.left - anchorPos.left + offsetLeft, e.clientY - rect.top - anchorPos.top + offsetTop);\n if (diff1 < 3.5 && diff2 < 3.5)\n mode = diff1 > diff2 ? \"cursor\" : \"anchor\";\n if (diff2 < 3.5)\n mode = \"anchor\";\n else if (diff1 < 3.5)\n mode = \"cursor\";\n else\n mode = \"scroll\";\n longTouchTimer = setTimeout(handleLongTap, 450);\n }\n touchStartT = t;\n }, editor);\n event.addListener(el, \"touchend\", function (e) {\n pressed = editor.$mouseHandler.isMousePressed = false;\n if (animationTimer)\n clearInterval(animationTimer);\n if (mode == \"zoom\") {\n mode = \"\";\n animationSteps = 0;\n }\n else if (longTouchTimer) {\n editor.selection.moveToPosition(pos);\n animationSteps = 0;\n showContextMenu();\n }\n else if (mode == \"scroll\") {\n animate();\n hideContextMenu();\n }\n else {\n showContextMenu();\n }\n clearTimeout(longTouchTimer);\n longTouchTimer = null;\n }, editor);\n event.addListener(el, \"touchmove\", function (e) {\n if (longTouchTimer) {\n clearTimeout(longTouchTimer);\n longTouchTimer = null;\n }\n var touches = e.touches;\n if (touches.length > 1 || mode == \"zoom\")\n return;\n var touchObj = touches[0];\n var wheelX = startX - touchObj.clientX;\n var wheelY = startY - touchObj.clientY;\n if (mode == \"wait\") {\n if (wheelX * wheelX + wheelY * wheelY > 4)\n mode = \"cursor\";\n else\n return e.preventDefault();\n }\n startX = touchObj.clientX;\n startY = touchObj.clientY;\n e.clientX = touchObj.clientX;\n e.clientY = touchObj.clientY;\n var t = e.timeStamp;\n var dt = t - lastT;\n lastT = t;\n if (mode == \"scroll\") {\n var mouseEvent = new MouseEvent(e, editor);\n mouseEvent.speed = 1;\n mouseEvent.wheelX = wheelX;\n mouseEvent.wheelY = wheelY;\n if (10 * Math.abs(wheelX) < Math.abs(wheelY))\n wheelX = 0;\n if (10 * Math.abs(wheelY) < Math.abs(wheelX))\n wheelY = 0;\n if (dt != 0) {\n vX = wheelX / dt;\n vY = wheelY / dt;\n }\n editor._emit(\"mousewheel\", mouseEvent);\n if (!mouseEvent.propagationStopped) {\n vX = vY = 0;\n }\n }\n else {\n var ev = new MouseEvent(e, editor);\n var pos = ev.getDocumentPosition();\n if (mode == \"cursor\")\n editor.selection.moveCursorToPosition(pos);\n else if (mode == \"anchor\")\n editor.selection.setSelectionAnchor(pos.row, pos.column);\n editor.renderer.scrollCursorIntoView(pos);\n e.preventDefault();\n }\n }, editor);\n function animate() {\n animationSteps += 60;\n animationTimer = setInterval(function () {\n if (animationSteps-- <= 0) {\n clearInterval(animationTimer);\n animationTimer = null;\n }\n if (Math.abs(vX) < 0.01)\n vX = 0;\n if (Math.abs(vY) < 0.01)\n vY = 0;\n if (animationSteps < 20)\n vX = 0.9 * vX;\n if (animationSteps < 20)\n vY = 0.9 * vY;\n var oldScrollTop = editor.session.getScrollTop();\n editor.renderer.scrollBy(10 * vX, 10 * vY);\n if (oldScrollTop == editor.session.getScrollTop())\n animationSteps = 0;\n }, 10);\n }\n};\n\n});\n\nace.define(\"ace/mouse/mouse_handler\",[\"require\",\"exports\",\"module\",\"ace/lib/event\",\"ace/lib/useragent\",\"ace/mouse/default_handlers\",\"ace/mouse/default_gutter_handler\",\"ace/mouse/mouse_event\",\"ace/mouse/dragdrop_handler\",\"ace/mouse/touch_handler\",\"ace/config\"], function(require, exports, module){\"use strict\";\nvar event = require(\"../lib/event\");\nvar useragent = require(\"../lib/useragent\");\nvar DefaultHandlers = require(\"./default_handlers\").DefaultHandlers;\nvar DefaultGutterHandler = require(\"./default_gutter_handler\").GutterHandler;\nvar MouseEvent = require(\"./mouse_event\").MouseEvent;\nvar DragdropHandler = require(\"./dragdrop_handler\").DragdropHandler;\nvar addTouchListeners = require(\"./touch_handler\").addTouchListeners;\nvar config = require(\"../config\");\nvar MouseHandler = /** @class */ (function () {\n function MouseHandler(editor) {\n var _self = this;\n this.editor = editor;\n new DefaultHandlers(this);\n new DefaultGutterHandler(this);\n new DragdropHandler(this);\n var focusEditor = function (e) {\n var windowBlurred = !document.hasFocus || !document.hasFocus()\n || !editor.isFocused() && document.activeElement == (editor.textInput && editor.textInput.getElement());\n if (windowBlurred)\n window.focus();\n editor.focus();\n setTimeout(function () {\n if (!editor.isFocused())\n editor.focus();\n });\n };\n var mouseTarget = editor.renderer.getMouseEventTarget();\n event.addListener(mouseTarget, \"click\", this.onMouseEvent.bind(this, \"click\"), editor);\n event.addListener(mouseTarget, \"mousemove\", this.onMouseMove.bind(this, \"mousemove\"), editor);\n event.addMultiMouseDownListener([\n mouseTarget,\n editor.renderer.scrollBarV && editor.renderer.scrollBarV.inner,\n editor.renderer.scrollBarH && editor.renderer.scrollBarH.inner,\n editor.textInput && editor.textInput.getElement()\n ].filter(Boolean), [400, 300, 250], this, \"onMouseEvent\", editor);\n event.addMouseWheelListener(editor.container, this.onMouseWheel.bind(this, \"mousewheel\"), editor);\n addTouchListeners(editor.container, editor);\n var gutterEl = editor.renderer.$gutter;\n event.addListener(gutterEl, \"mousedown\", this.onMouseEvent.bind(this, \"guttermousedown\"), editor);\n event.addListener(gutterEl, \"click\", this.onMouseEvent.bind(this, \"gutterclick\"), editor);\n event.addListener(gutterEl, \"dblclick\", this.onMouseEvent.bind(this, \"gutterdblclick\"), editor);\n event.addListener(gutterEl, \"mousemove\", this.onMouseEvent.bind(this, \"guttermousemove\"), editor);\n event.addListener(mouseTarget, \"mousedown\", focusEditor, editor);\n event.addListener(gutterEl, \"mousedown\", focusEditor, editor);\n if (useragent.isIE && editor.renderer.scrollBarV) {\n event.addListener(editor.renderer.scrollBarV.element, \"mousedown\", focusEditor, editor);\n event.addListener(editor.renderer.scrollBarH.element, \"mousedown\", focusEditor, editor);\n }\n editor.on(\"mousemove\", function (e) {\n if (_self.state || _self.$dragDelay || !_self.$dragEnabled)\n return;\n var character = editor.renderer.screenToTextCoordinates(e.x, e.y);\n var range = editor.session.selection.getRange();\n var renderer = editor.renderer;\n if (!range.isEmpty() && range.insideStart(character.row, character.column)) {\n renderer.setCursorStyle(\"default\");\n }\n else {\n renderer.setCursorStyle(\"\");\n }\n }, editor);\n }\n MouseHandler.prototype.onMouseEvent = function (name, e) {\n if (!this.editor.session)\n return;\n this.editor._emit(name, new MouseEvent(e, this.editor));\n };\n MouseHandler.prototype.onMouseMove = function (name, e) {\n var listeners = this.editor._eventRegistry && this.editor._eventRegistry.mousemove;\n if (!listeners || !listeners.length)\n return;\n this.editor._emit(name, new MouseEvent(e, this.editor));\n };\n MouseHandler.prototype.onMouseWheel = function (name, e) {\n var mouseEvent = new MouseEvent(e, this.editor);\n mouseEvent.speed = this.$scrollSpeed * 2;\n mouseEvent.wheelX = e.wheelX;\n mouseEvent.wheelY = e.wheelY;\n this.editor._emit(name, mouseEvent);\n };\n MouseHandler.prototype.setState = function (state) {\n this.state = state;\n };\n MouseHandler.prototype.captureMouse = function (ev, mouseMoveHandler) {\n this.x = ev.x;\n this.y = ev.y;\n this.isMousePressed = true;\n var editor = this.editor;\n var renderer = this.editor.renderer;\n renderer.$isMousePressed = true;\n var self = this;\n var onMouseMove = function (e) {\n if (!e)\n return;\n if (useragent.isWebKit && !e.which && self.releaseMouse)\n return self.releaseMouse();\n self.x = e.clientX;\n self.y = e.clientY;\n mouseMoveHandler && mouseMoveHandler(e);\n self.mouseEvent = new MouseEvent(e, self.editor);\n self.$mouseMoved = true;\n };\n var onCaptureEnd = function (e) {\n editor.off(\"beforeEndOperation\", onOperationEnd);\n clearInterval(timerId);\n if (editor.session)\n onCaptureInterval();\n self[self.state + \"End\"] && self[self.state + \"End\"](e);\n self.state = \"\";\n self.isMousePressed = renderer.$isMousePressed = false;\n if (renderer.$keepTextAreaAtCursor)\n renderer.$moveTextAreaToCursor();\n self.$onCaptureMouseMove = self.releaseMouse = null;\n e && self.onMouseEvent(\"mouseup\", e);\n editor.endOperation();\n };\n var onCaptureInterval = function () {\n self[self.state] && self[self.state]();\n self.$mouseMoved = false;\n };\n if (useragent.isOldIE && ev.domEvent.type == \"dblclick\") {\n return setTimeout(function () { onCaptureEnd(ev); });\n }\n var onOperationEnd = function (e) {\n if (!self.releaseMouse)\n return;\n if (editor.curOp.command.name && editor.curOp.selectionChanged) {\n self[self.state + \"End\"] && self[self.state + \"End\"]();\n self.state = \"\";\n self.releaseMouse();\n }\n };\n editor.on(\"beforeEndOperation\", onOperationEnd);\n editor.startOperation({ command: { name: \"mouse\" } });\n self.$onCaptureMouseMove = onMouseMove;\n self.releaseMouse = event.capture(this.editor.container, onMouseMove, onCaptureEnd);\n var timerId = setInterval(onCaptureInterval, 20);\n };\n MouseHandler.prototype.cancelContextMenu = function () {\n var stop = function (e) {\n if (e && e.domEvent && e.domEvent.type != \"contextmenu\")\n return;\n this.editor.off(\"nativecontextmenu\", stop);\n if (e && e.domEvent)\n event.stopEvent(e.domEvent);\n }.bind(this);\n setTimeout(stop, 10);\n this.editor.on(\"nativecontextmenu\", stop);\n };\n MouseHandler.prototype.destroy = function () {\n if (this.releaseMouse)\n this.releaseMouse();\n };\n return MouseHandler;\n}());\nMouseHandler.prototype.releaseMouse = null;\nconfig.defineOptions(MouseHandler.prototype, \"mouseHandler\", {\n scrollSpeed: { initialValue: 2 },\n dragDelay: { initialValue: (useragent.isMac ? 150 : 0) },\n dragEnabled: { initialValue: true },\n focusTimeout: { initialValue: 0 },\n tooltipFollowsMouse: { initialValue: true }\n});\nexports.MouseHandler = MouseHandler;\n\n});\n\nace.define(\"ace/mouse/fold_handler\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"], function(require, exports, module){\"use strict\";\nvar dom = require(\"../lib/dom\");\nvar FoldHandler = /** @class */ (function () {\n function FoldHandler(editor) {\n editor.on(\"click\", function (e) {\n var position = e.getDocumentPosition();\n var session = editor.session;\n var fold = session.getFoldAt(position.row, position.column, 1);\n if (fold) {\n if (e.getAccelKey())\n session.removeFold(fold);\n else\n session.expandFold(fold);\n e.stop();\n }\n var target = e.domEvent && e.domEvent.target;\n if (target && dom.hasCssClass(target, \"ace_inline_button\")) {\n if (dom.hasCssClass(target, \"ace_toggle_wrap\")) {\n session.setOption(\"wrap\", !session.getUseWrapMode());\n editor.renderer.scrollCursorIntoView();\n }\n }\n });\n editor.on(\"gutterclick\", function (e) {\n var gutterRegion = editor.renderer.$gutterLayer.getRegion(e);\n if (gutterRegion == \"foldWidgets\") {\n var row = e.getDocumentPosition().row;\n var session = editor.session;\n if (session.foldWidgets && session.foldWidgets[row])\n editor.session.onFoldWidgetClick(row, e);\n if (!editor.isFocused())\n editor.focus();\n e.stop();\n }\n });\n editor.on(\"gutterdblclick\", function (e) {\n var gutterRegion = editor.renderer.$gutterLayer.getRegion(e);\n if (gutterRegion == \"foldWidgets\") {\n var row = e.getDocumentPosition().row;\n var session = editor.session;\n var data = session.getParentFoldRangeData(row, true);\n var range = data.range || data.firstRange;\n if (range) {\n row = range.start.row;\n var fold = session.getFoldAt(row, session.getLine(row).length, 1);\n if (fold) {\n session.removeFold(fold);\n }\n else {\n session.addFold(\"...\", range);\n editor.renderer.scrollCursorIntoView({ row: range.start.row, column: 0 });\n }\n }\n e.stop();\n }\n });\n }\n return FoldHandler;\n}());\nexports.FoldHandler = FoldHandler;\n\n});\n\nace.define(\"ace/keyboard/keybinding\",[\"require\",\"exports\",\"module\",\"ace/lib/keys\",\"ace/lib/event\"], function(require, exports, module){\"use strict\";\nvar keyUtil = require(\"../lib/keys\");\nvar event = require(\"../lib/event\");\nvar KeyBinding = /** @class */ (function () {\n function KeyBinding(editor) {\n this.$editor = editor;\n this.$data = { editor: editor };\n this.$handlers = [];\n this.setDefaultHandler(editor.commands);\n }\n KeyBinding.prototype.setDefaultHandler = function (kb) {\n this.removeKeyboardHandler(this.$defaultHandler);\n this.$defaultHandler = kb;\n this.addKeyboardHandler(kb, 0);\n };\n KeyBinding.prototype.setKeyboardHandler = function (kb) {\n var h = this.$handlers;\n if (h[h.length - 1] == kb)\n return;\n while (h[h.length - 1] && h[h.length - 1] != this.$defaultHandler)\n this.removeKeyboardHandler(h[h.length - 1]);\n this.addKeyboardHandler(kb, 1);\n };\n KeyBinding.prototype.addKeyboardHandler = function (kb, pos) {\n if (!kb)\n return;\n if (typeof kb == \"function\" && !kb.handleKeyboard)\n kb.handleKeyboard = kb;\n var i = this.$handlers.indexOf(kb);\n if (i != -1)\n this.$handlers.splice(i, 1);\n if (pos == undefined)\n this.$handlers.push(kb);\n else\n this.$handlers.splice(pos, 0, kb);\n if (i == -1 && kb.attach)\n kb.attach(this.$editor);\n };\n KeyBinding.prototype.removeKeyboardHandler = function (kb) {\n var i = this.$handlers.indexOf(kb);\n if (i == -1)\n return false;\n this.$handlers.splice(i, 1);\n kb.detach && kb.detach(this.$editor);\n return true;\n };\n KeyBinding.prototype.getKeyboardHandler = function () {\n return this.$handlers[this.$handlers.length - 1];\n };\n KeyBinding.prototype.getStatusText = function () {\n var data = this.$data;\n var editor = data.editor;\n return this.$handlers.map(function (h) {\n return h.getStatusText && h.getStatusText(editor, data) || \"\";\n }).filter(Boolean).join(\" \");\n };\n KeyBinding.prototype.$callKeyboardHandlers = function (hashId, keyString, keyCode, e) {\n var toExecute;\n var success = false;\n var commands = this.$editor.commands;\n for (var i = this.$handlers.length; i--;) {\n toExecute = this.$handlers[i].handleKeyboard(this.$data, hashId, keyString, keyCode, e);\n if (!toExecute || !toExecute.command)\n continue;\n if (toExecute.command == \"null\") {\n success = true;\n }\n else {\n success = commands.exec(toExecute.command, this.$editor, toExecute.args, e);\n }\n if (success && e && hashId != -1 &&\n toExecute.passEvent != true && toExecute.command.passEvent != true) {\n event.stopEvent(e);\n }\n if (success)\n break;\n }\n if (!success && hashId == -1) {\n toExecute = { command: \"insertstring\" };\n success = commands.exec(\"insertstring\", this.$editor, keyString);\n }\n if (success && this.$editor._signal)\n this.$editor._signal(\"keyboardActivity\", toExecute);\n return success;\n };\n KeyBinding.prototype.onCommandKey = function (e, hashId, keyCode) {\n var keyString = keyUtil.keyCodeToString(keyCode);\n return this.$callKeyboardHandlers(hashId, keyString, keyCode, e);\n };\n KeyBinding.prototype.onTextInput = function (text) {\n return this.$callKeyboardHandlers(-1, text);\n };\n return KeyBinding;\n}());\nexports.KeyBinding = KeyBinding;\n\n});\n\nace.define(\"ace/lib/bidiutil\",[\"require\",\"exports\",\"module\"], function(require, exports, module){\"use strict\";\nvar ArabicAlefBetIntervalsBegine = ['\\u0621', '\\u0641'];\nvar ArabicAlefBetIntervalsEnd = ['\\u063A', '\\u064a'];\nvar dir = 0, hiLevel = 0;\nvar lastArabic = false, hasUBAT_AL = false, hasUBAT_B = false, hasUBAT_S = false, hasBlockSep = false, hasSegSep = false;\nvar impTab_LTR = [ [0, 3, 0, 1, 0, 0, 0], [0, 3, 0, 1, 2, 2, 0], [0, 3, 0, 0x11, 2, 0, 1], [0, 3, 5, 5, 4, 1, 0], [0, 3, 0x15, 0x15, 4, 0, 1], [0, 3, 5, 5, 4, 2, 0]\n];\nvar impTab_RTL = [ [2, 0, 1, 1, 0, 1, 0], [2, 0, 1, 1, 0, 2, 0], [2, 0, 2, 1, 3, 2, 0], [2, 0, 2, 0x21, 3, 1, 1]\n];\nvar LTR = 0, RTL = 1;\nvar L = 0;\nvar R = 1;\nvar EN = 2;\nvar AN = 3;\nvar ON = 4;\nvar B = 5;\nvar S = 6;\nvar AL = 7;\nvar WS = 8;\nvar CS = 9;\nvar ES = 10;\nvar ET = 11;\nvar NSM = 12;\nvar LRE = 13;\nvar RLE = 14;\nvar PDF = 15;\nvar LRO = 16;\nvar RLO = 17;\nvar BN = 18;\nvar UnicodeTBL00 = [\n BN, BN, BN, BN, BN, BN, BN, BN, BN, S, B, S, WS, B, BN, BN,\n BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, B, B, B, S,\n WS, ON, ON, ET, ET, ET, ON, ON, ON, ON, ON, ES, CS, ES, CS, CS,\n EN, EN, EN, EN, EN, EN, EN, EN, EN, EN, CS, ON, ON, ON, ON, ON,\n ON, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L,\n L, L, L, L, L, L, L, L, L, L, L, ON, ON, ON, ON, ON,\n ON, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L,\n L, L, L, L, L, L, L, L, L, L, L, ON, ON, ON, ON, BN,\n BN, BN, BN, BN, BN, B, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN,\n BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN,\n CS, ON, ET, ET, ET, ET, ON, ON, ON, ON, L, ON, ON, BN, ON, ON,\n ET, ET, EN, EN, ON, L, ON, ON, ON, EN, L, ON, ON, ON, ON, ON\n];\nvar UnicodeTBL20 = [\n WS, WS, WS, WS, WS, WS, WS, WS, WS, WS, WS, BN, BN, BN, L, R,\n ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON,\n ON, ON, ON, ON, ON, ON, ON, ON, WS, B, LRE, RLE, PDF, LRO, RLO, CS,\n ET, ET, ET, ET, ET, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON,\n ON, ON, ON, ON, CS, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON,\n ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, WS\n];\nfunction _computeLevels(chars, levels, len, charTypes) {\n var impTab = dir ? impTab_RTL : impTab_LTR, prevState = null, newClass = null, newLevel = null, newState = 0, action = null, cond = null, condPos = -1, i = null, ix = null, classes = [];\n if (!charTypes) {\n for (i = 0, charTypes = []; i < len; i++) {\n charTypes[i] = _getCharacterType(chars[i]);\n }\n }\n hiLevel = dir;\n lastArabic = false;\n hasUBAT_AL = false;\n hasUBAT_B = false;\n hasUBAT_S = false;\n for (ix = 0; ix < len; ix++) {\n prevState = newState;\n classes[ix] = newClass = _getCharClass(chars, charTypes, classes, ix);\n newState = impTab[prevState][newClass];\n action = newState & 0xF0;\n newState &= 0x0F;\n levels[ix] = newLevel = impTab[newState][5];\n if (action > 0) {\n if (action == 0x10) {\n for (i = condPos; i < ix; i++) {\n levels[i] = 1;\n }\n condPos = -1;\n }\n else {\n condPos = -1;\n }\n }\n cond = impTab[newState][6];\n if (cond) {\n if (condPos == -1) {\n condPos = ix;\n }\n }\n else {\n if (condPos > -1) {\n for (i = condPos; i < ix; i++) {\n levels[i] = newLevel;\n }\n condPos = -1;\n }\n }\n if (charTypes[ix] == B) {\n levels[ix] = 0;\n }\n hiLevel |= newLevel;\n }\n if (hasUBAT_S) {\n for (i = 0; i < len; i++) {\n if (charTypes[i] == S) {\n levels[i] = dir;\n for (var j = i - 1; j >= 0; j--) {\n if (charTypes[j] == WS) {\n levels[j] = dir;\n }\n else {\n break;\n }\n }\n }\n }\n }\n}\nfunction _invertLevel(lev, levels, _array) {\n if (hiLevel < lev) {\n return;\n }\n if (lev == 1 && dir == RTL && !hasUBAT_B) {\n _array.reverse();\n return;\n }\n var len = _array.length, start = 0, end, lo, hi, tmp;\n while (start < len) {\n if (levels[start] >= lev) {\n end = start + 1;\n while (end < len && levels[end] >= lev) {\n end++;\n }\n for (lo = start, hi = end - 1; lo < hi; lo++, hi--) {\n tmp = _array[lo];\n _array[lo] = _array[hi];\n _array[hi] = tmp;\n }\n start = end;\n }\n start++;\n }\n}\nfunction _getCharClass(chars, types, classes, ix) {\n var cType = types[ix], wType, nType, len, i;\n switch (cType) {\n case L:\n case R:\n lastArabic = false;\n case ON:\n case AN:\n return cType;\n case EN:\n return lastArabic ? AN : EN;\n case AL:\n lastArabic = true;\n hasUBAT_AL = true;\n return R;\n case WS:\n return ON;\n case CS:\n if (ix < 1 || (ix + 1) >= types.length ||\n ((wType = classes[ix - 1]) != EN && wType != AN) ||\n ((nType = types[ix + 1]) != EN && nType != AN)) {\n return ON;\n }\n if (lastArabic) {\n nType = AN;\n }\n return nType == wType ? nType : ON;\n case ES:\n wType = ix > 0 ? classes[ix - 1] : B;\n if (wType == EN && (ix + 1) < types.length && types[ix + 1] == EN) {\n return EN;\n }\n return ON;\n case ET:\n if (ix > 0 && classes[ix - 1] == EN) {\n return EN;\n }\n if (lastArabic) {\n return ON;\n }\n i = ix + 1;\n len = types.length;\n while (i < len && types[i] == ET) {\n i++;\n }\n if (i < len && types[i] == EN) {\n return EN;\n }\n return ON;\n case NSM:\n len = types.length;\n i = ix + 1;\n while (i < len && types[i] == NSM) {\n i++;\n }\n if (i < len) {\n var c = chars[ix], rtlCandidate = (c >= 0x0591 && c <= 0x08FF) || c == 0xFB1E;\n wType = types[i];\n if (rtlCandidate && (wType == R || wType == AL)) {\n return R;\n }\n }\n if (ix < 1 || (wType = types[ix - 1]) == B) {\n return ON;\n }\n return classes[ix - 1];\n case B:\n lastArabic = false;\n hasUBAT_B = true;\n return dir;\n case S:\n hasUBAT_S = true;\n return ON;\n case LRE:\n case RLE:\n case LRO:\n case RLO:\n case PDF:\n lastArabic = false;\n case BN:\n return ON;\n }\n}\nfunction _getCharacterType(ch) {\n var uc = ch.charCodeAt(0), hi = uc >> 8;\n if (hi == 0) {\n return ((uc > 0x00BF) ? L : UnicodeTBL00[uc]);\n }\n else if (hi == 5) {\n return (/[\\u0591-\\u05f4]/.test(ch) ? R : L);\n }\n else if (hi == 6) {\n if (/[\\u0610-\\u061a\\u064b-\\u065f\\u06d6-\\u06e4\\u06e7-\\u06ed]/.test(ch))\n return NSM;\n else if (/[\\u0660-\\u0669\\u066b-\\u066c]/.test(ch))\n return AN;\n else if (uc == 0x066A)\n return ET;\n else if (/[\\u06f0-\\u06f9]/.test(ch))\n return EN;\n else\n return AL;\n }\n else if (hi == 0x20 && uc <= 0x205F) {\n return UnicodeTBL20[uc & 0xFF];\n }\n else if (hi == 0xFE) {\n return (uc >= 0xFE70 ? AL : ON);\n }\n return ON;\n}\nfunction _isArabicDiacritics(ch) {\n return (ch >= '\\u064b' && ch <= '\\u0655');\n}\nexports.L = L;\nexports.R = R;\nexports.EN = EN;\nexports.ON_R = 3;\nexports.AN = 4;\nexports.R_H = 5;\nexports.B = 6;\nexports.RLE = 7;\nexports.DOT = \"\\xB7\";\nexports.doBidiReorder = function (text, textCharTypes, isRtl) {\n if (text.length < 2)\n return {};\n var chars = text.split(\"\"), logicalFromVisual = new Array(chars.length), bidiLevels = new Array(chars.length), levels = [];\n dir = isRtl ? RTL : LTR;\n _computeLevels(chars, levels, chars.length, textCharTypes);\n for (var i = 0; i < logicalFromVisual.length; logicalFromVisual[i] = i, i++)\n ;\n _invertLevel(2, levels, logicalFromVisual);\n _invertLevel(1, levels, logicalFromVisual);\n for (var i = 0; i < logicalFromVisual.length - 1; i++) { //fix levels to reflect character width\n if (textCharTypes[i] === AN) {\n levels[i] = exports.AN;\n }\n else if (levels[i] === R && ((textCharTypes[i] > AL && textCharTypes[i] < LRE)\n || textCharTypes[i] === ON || textCharTypes[i] === BN)) {\n levels[i] = exports.ON_R;\n }\n else if ((i > 0 && chars[i - 1] === '\\u0644') && /\\u0622|\\u0623|\\u0625|\\u0627/.test(chars[i])) {\n levels[i - 1] = levels[i] = exports.R_H;\n i++;\n }\n }\n if (chars[chars.length - 1] === exports.DOT)\n levels[chars.length - 1] = exports.B;\n if (chars[0] === '\\u202B')\n levels[0] = exports.RLE;\n for (var i = 0; i < logicalFromVisual.length; i++) {\n bidiLevels[i] = levels[logicalFromVisual[i]];\n }\n return { 'logicalFromVisual': logicalFromVisual, 'bidiLevels': bidiLevels };\n};\nexports.hasBidiCharacters = function (text, textCharTypes) {\n var ret = false;\n for (var i = 0; i < text.length; i++) {\n textCharTypes[i] = _getCharacterType(text.charAt(i));\n if (!ret && (textCharTypes[i] == R || textCharTypes[i] == AL || textCharTypes[i] == AN))\n ret = true;\n }\n return ret;\n};\nexports.getVisualFromLogicalIdx = function (logIdx, rowMap) {\n for (var i = 0; i < rowMap.logicalFromVisual.length; i++) {\n if (rowMap.logicalFromVisual[i] == logIdx)\n return i;\n }\n return 0;\n};\n\n});\n\nace.define(\"ace/bidihandler\",[\"require\",\"exports\",\"module\",\"ace/lib/bidiutil\",\"ace/lib/lang\"], function(require, exports, module){\"use strict\";\nvar bidiUtil = require(\"./lib/bidiutil\");\nvar lang = require(\"./lib/lang\");\nvar bidiRE = /[\\u0590-\\u05f4\\u0600-\\u06ff\\u0700-\\u08ac\\u202B]/;\nvar BidiHandler = /** @class */ (function () {\n function BidiHandler(session) {\n this.session = session;\n this.bidiMap = {};\n this.currentRow = null;\n this.bidiUtil = bidiUtil;\n this.charWidths = [];\n this.EOL = \"\\xAC\";\n this.showInvisibles = true;\n this.isRtlDir = false;\n this.$isRtl = false;\n this.line = \"\";\n this.wrapIndent = 0;\n this.EOF = \"\\xB6\";\n this.RLE = \"\\u202B\";\n this.contentWidth = 0;\n this.fontMetrics = null;\n this.rtlLineOffset = 0;\n this.wrapOffset = 0;\n this.isMoveLeftOperation = false;\n this.seenBidi = bidiRE.test(session.getValue());\n }\n BidiHandler.prototype.isBidiRow = function (screenRow, docRow, splitIndex) {\n if (!this.seenBidi)\n return false;\n if (screenRow !== this.currentRow) {\n this.currentRow = screenRow;\n this.updateRowLine(docRow, splitIndex);\n this.updateBidiMap();\n }\n return this.bidiMap.bidiLevels;\n };\n BidiHandler.prototype.onChange = function (delta) {\n if (!this.seenBidi) {\n if (delta.action == \"insert\" && bidiRE.test(delta.lines.join(\"\\n\"))) {\n this.seenBidi = true;\n this.currentRow = null;\n }\n }\n else {\n this.currentRow = null;\n }\n };\n BidiHandler.prototype.getDocumentRow = function () {\n var docRow = 0;\n var rowCache = this.session.$screenRowCache;\n if (rowCache.length) {\n var index = this.session.$getRowCacheIndex(rowCache, this.currentRow);\n if (index >= 0)\n docRow = this.session.$docRowCache[index];\n }\n return docRow;\n };\n BidiHandler.prototype.getSplitIndex = function () {\n var splitIndex = 0;\n var rowCache = this.session.$screenRowCache;\n if (rowCache.length) {\n var currentIndex, prevIndex = this.session.$getRowCacheIndex(rowCache, this.currentRow);\n while (this.currentRow - splitIndex > 0) {\n currentIndex = this.session.$getRowCacheIndex(rowCache, this.currentRow - splitIndex - 1);\n if (currentIndex !== prevIndex)\n break;\n prevIndex = currentIndex;\n splitIndex++;\n }\n }\n else {\n splitIndex = this.currentRow;\n }\n return splitIndex;\n };\n BidiHandler.prototype.updateRowLine = function (docRow, splitIndex) {\n if (docRow === undefined)\n docRow = this.getDocumentRow();\n var isLastRow = (docRow === this.session.getLength() - 1), endOfLine = isLastRow ? this.EOF : this.EOL;\n this.wrapIndent = 0;\n this.line = this.session.getLine(docRow);\n this.isRtlDir = this.$isRtl || this.line.charAt(0) === this.RLE;\n if (this.session.$useWrapMode) {\n var splits = this.session.$wrapData[docRow];\n if (splits) {\n if (splitIndex === undefined)\n splitIndex = this.getSplitIndex();\n if (splitIndex > 0 && splits.length) {\n this.wrapIndent = splits.indent;\n this.wrapOffset = this.wrapIndent * this.charWidths[bidiUtil.L];\n this.line = (splitIndex < splits.length) ?\n this.line.substring(splits[splitIndex - 1], splits[splitIndex]) :\n this.line.substring(splits[splits.length - 1]);\n }\n else {\n this.line = this.line.substring(0, splits[splitIndex]);\n }\n if (splitIndex == splits.length) {\n this.line += (this.showInvisibles) ? endOfLine : bidiUtil.DOT;\n }\n }\n }\n else {\n this.line += this.showInvisibles ? endOfLine : bidiUtil.DOT;\n }\n var session = this.session, shift = 0, size;\n this.line = this.line.replace(/\\t|[\\u1100-\\u2029, \\u202F-\\uFFE6]/g, function (ch, i) {\n if (ch === '\\t' || session.isFullWidth(ch.charCodeAt(0))) {\n size = (ch === '\\t') ? session.getScreenTabSize(i + shift) : 2;\n shift += size - 1;\n return lang.stringRepeat(bidiUtil.DOT, size);\n }\n return ch;\n });\n if (this.isRtlDir) {\n this.fontMetrics.$main.textContent = (this.line.charAt(this.line.length - 1) == bidiUtil.DOT) ? this.line.substr(0, this.line.length - 1) : this.line;\n this.rtlLineOffset = this.contentWidth - this.fontMetrics.$main.getBoundingClientRect().width;\n }\n };\n BidiHandler.prototype.updateBidiMap = function () {\n var textCharTypes = [];\n if (bidiUtil.hasBidiCharacters(this.line, textCharTypes) || this.isRtlDir) {\n this.bidiMap = bidiUtil.doBidiReorder(this.line, textCharTypes, this.isRtlDir);\n }\n else {\n this.bidiMap = {};\n }\n };\n BidiHandler.prototype.markAsDirty = function () {\n this.currentRow = null;\n };\n BidiHandler.prototype.updateCharacterWidths = function (fontMetrics) {\n if (this.characterWidth === fontMetrics.$characterSize.width)\n return;\n this.fontMetrics = fontMetrics;\n var characterWidth = this.characterWidth = fontMetrics.$characterSize.width;\n var bidiCharWidth = fontMetrics.$measureCharWidth(\"\\u05d4\");\n this.charWidths[bidiUtil.L] = this.charWidths[bidiUtil.EN] = this.charWidths[bidiUtil.ON_R] = characterWidth;\n this.charWidths[bidiUtil.R] = this.charWidths[bidiUtil.AN] = bidiCharWidth;\n this.charWidths[bidiUtil.R_H] = bidiCharWidth * 0.45;\n this.charWidths[bidiUtil.B] = this.charWidths[bidiUtil.RLE] = 0;\n this.currentRow = null;\n };\n BidiHandler.prototype.setShowInvisibles = function (showInvisibles) {\n this.showInvisibles = showInvisibles;\n this.currentRow = null;\n };\n BidiHandler.prototype.setEolChar = function (eolChar) {\n this.EOL = eolChar;\n };\n BidiHandler.prototype.setContentWidth = function (width) {\n this.contentWidth = width;\n };\n BidiHandler.prototype.isRtlLine = function (row) {\n if (this.$isRtl)\n return true;\n if (row != undefined)\n return (this.session.getLine(row).charAt(0) == this.RLE);\n else\n return this.isRtlDir;\n };\n BidiHandler.prototype.setRtlDirection = function (editor, isRtlDir) {\n var cursor = editor.getCursorPosition();\n for (var row = editor.selection.getSelectionAnchor().row; row <= cursor.row; row++) {\n if (!isRtlDir && editor.session.getLine(row).charAt(0) === editor.session.$bidiHandler.RLE)\n editor.session.doc.removeInLine(row, 0, 1);\n else if (isRtlDir && editor.session.getLine(row).charAt(0) !== editor.session.$bidiHandler.RLE)\n editor.session.doc.insert({ column: 0, row: row }, editor.session.$bidiHandler.RLE);\n }\n };\n BidiHandler.prototype.getPosLeft = function (col) {\n col -= this.wrapIndent;\n var leftBoundary = (this.line.charAt(0) === this.RLE) ? 1 : 0;\n var logicalIdx = (col > leftBoundary) ? (this.session.getOverwrite() ? col : col - 1) : leftBoundary;\n var visualIdx = bidiUtil.getVisualFromLogicalIdx(logicalIdx, this.bidiMap), levels = this.bidiMap.bidiLevels, left = 0;\n if (!this.session.getOverwrite() && col <= leftBoundary && levels[visualIdx] % 2 !== 0)\n visualIdx++;\n for (var i = 0; i < visualIdx; i++) {\n left += this.charWidths[levels[i]];\n }\n if (!this.session.getOverwrite() && (col > leftBoundary) && (levels[visualIdx] % 2 === 0))\n left += this.charWidths[levels[visualIdx]];\n if (this.wrapIndent)\n left += this.isRtlDir ? (-1 * this.wrapOffset) : this.wrapOffset;\n if (this.isRtlDir)\n left += this.rtlLineOffset;\n return left;\n };\n BidiHandler.prototype.getSelections = function (startCol, endCol) {\n var map = this.bidiMap, levels = map.bidiLevels, level, selections = [], offset = 0, selColMin = Math.min(startCol, endCol) - this.wrapIndent, selColMax = Math.max(startCol, endCol) - this.wrapIndent, isSelected = false, isSelectedPrev = false, selectionStart = 0;\n if (this.wrapIndent)\n offset += this.isRtlDir ? (-1 * this.wrapOffset) : this.wrapOffset;\n for (var logIdx, visIdx = 0; visIdx < levels.length; visIdx++) {\n logIdx = map.logicalFromVisual[visIdx];\n level = levels[visIdx];\n isSelected = (logIdx >= selColMin) && (logIdx < selColMax);\n if (isSelected && !isSelectedPrev) {\n selectionStart = offset;\n }\n else if (!isSelected && isSelectedPrev) {\n selections.push({ left: selectionStart, width: offset - selectionStart });\n }\n offset += this.charWidths[level];\n isSelectedPrev = isSelected;\n }\n if (isSelected && (visIdx === levels.length)) {\n selections.push({ left: selectionStart, width: offset - selectionStart });\n }\n if (this.isRtlDir) {\n for (var i = 0; i < selections.length; i++) {\n selections[i].left += this.rtlLineOffset;\n }\n }\n return selections;\n };\n BidiHandler.prototype.offsetToCol = function (posX) {\n if (this.isRtlDir)\n posX -= this.rtlLineOffset;\n var logicalIdx = 0, posX = Math.max(posX, 0), offset = 0, visualIdx = 0, levels = this.bidiMap.bidiLevels, charWidth = this.charWidths[levels[visualIdx]];\n if (this.wrapIndent)\n posX -= this.isRtlDir ? (-1 * this.wrapOffset) : this.wrapOffset;\n while (posX > offset + charWidth / 2) {\n offset += charWidth;\n if (visualIdx === levels.length - 1) {\n charWidth = 0;\n break;\n }\n charWidth = this.charWidths[levels[++visualIdx]];\n }\n if (visualIdx > 0 && (levels[visualIdx - 1] % 2 !== 0) && (levels[visualIdx] % 2 === 0)) {\n if (posX < offset)\n visualIdx--;\n logicalIdx = this.bidiMap.logicalFromVisual[visualIdx];\n }\n else if (visualIdx > 0 && (levels[visualIdx - 1] % 2 === 0) && (levels[visualIdx] % 2 !== 0)) {\n logicalIdx = 1 + ((posX > offset) ? this.bidiMap.logicalFromVisual[visualIdx]\n : this.bidiMap.logicalFromVisual[visualIdx - 1]);\n }\n else if ((this.isRtlDir && visualIdx === levels.length - 1 && charWidth === 0 && (levels[visualIdx - 1] % 2 === 0))\n || (!this.isRtlDir && visualIdx === 0 && (levels[visualIdx] % 2 !== 0))) {\n logicalIdx = 1 + this.bidiMap.logicalFromVisual[visualIdx];\n }\n else {\n if (visualIdx > 0 && (levels[visualIdx - 1] % 2 !== 0) && charWidth !== 0)\n visualIdx--;\n logicalIdx = this.bidiMap.logicalFromVisual[visualIdx];\n }\n if (logicalIdx === 0 && this.isRtlDir)\n logicalIdx++;\n return (logicalIdx + this.wrapIndent);\n };\n return BidiHandler;\n}());\nexports.BidiHandler = BidiHandler;\n\n});\n\nace.define(\"ace/selection\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/lib/event_emitter\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"./lib/oop\");\nvar lang = require(\"./lib/lang\");\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar Range = require(\"./range\").Range;\nvar Selection = /** @class */ (function () {\n function Selection(session) {\n this.session = session;\n this.doc = session.getDocument();\n this.clearSelection();\n this.cursor = this.lead = this.doc.createAnchor(0, 0);\n this.anchor = this.doc.createAnchor(0, 0);\n this.$silent = false;\n var self = this;\n this.cursor.on(\"change\", function (e) {\n self.$cursorChanged = true;\n if (!self.$silent)\n self._emit(\"changeCursor\");\n if (!self.$isEmpty && !self.$silent)\n self._emit(\"changeSelection\");\n if (!self.$keepDesiredColumnOnChange && e.old.column != e.value.column)\n self.$desiredColumn = null;\n });\n this.anchor.on(\"change\", function () {\n self.$anchorChanged = true;\n if (!self.$isEmpty && !self.$silent)\n self._emit(\"changeSelection\");\n });\n }\n Selection.prototype.isEmpty = function () {\n return this.$isEmpty || (this.anchor.row == this.lead.row &&\n this.anchor.column == this.lead.column);\n };\n Selection.prototype.isMultiLine = function () {\n return !this.$isEmpty && this.anchor.row != this.cursor.row;\n };\n Selection.prototype.getCursor = function () {\n return this.lead.getPosition();\n };\n Selection.prototype.setAnchor = function (row, column) {\n this.$isEmpty = false;\n this.anchor.setPosition(row, column);\n };\n Selection.prototype.getAnchor = function () {\n if (this.$isEmpty)\n return this.getSelectionLead();\n return this.anchor.getPosition();\n };\n Selection.prototype.getSelectionLead = function () {\n return this.lead.getPosition();\n };\n Selection.prototype.isBackwards = function () {\n var anchor = this.anchor;\n var lead = this.lead;\n return (anchor.row > lead.row || (anchor.row == lead.row && anchor.column > lead.column));\n };\n Selection.prototype.getRange = function () {\n var anchor = this.anchor;\n var lead = this.lead;\n if (this.$isEmpty)\n return Range.fromPoints(lead, lead);\n return this.isBackwards()\n ? Range.fromPoints(lead, anchor)\n : Range.fromPoints(anchor, lead);\n };\n Selection.prototype.clearSelection = function () {\n if (!this.$isEmpty) {\n this.$isEmpty = true;\n this._emit(\"changeSelection\");\n }\n };\n Selection.prototype.selectAll = function () {\n this.$setSelection(0, 0, Number.MAX_VALUE, Number.MAX_VALUE);\n };\n Selection.prototype.setRange = function (range, reverse) {\n var start = reverse ? range.end : range.start;\n var end = reverse ? range.start : range.end;\n this.$setSelection(start.row, start.column, end.row, end.column);\n };\n Selection.prototype.$setSelection = function (anchorRow, anchorColumn, cursorRow, cursorColumn) {\n if (this.$silent)\n return;\n var wasEmpty = this.$isEmpty;\n var wasMultiselect = this.inMultiSelectMode;\n this.$silent = true;\n this.$cursorChanged = this.$anchorChanged = false;\n this.anchor.setPosition(anchorRow, anchorColumn);\n this.cursor.setPosition(cursorRow, cursorColumn);\n this.$isEmpty = !Range.comparePoints(this.anchor, this.cursor);\n this.$silent = false;\n if (this.$cursorChanged)\n this._emit(\"changeCursor\");\n if (this.$cursorChanged || this.$anchorChanged || wasEmpty != this.$isEmpty || wasMultiselect)\n this._emit(\"changeSelection\");\n };\n Selection.prototype.$moveSelection = function (mover) {\n var lead = this.lead;\n if (this.$isEmpty)\n this.setSelectionAnchor(lead.row, lead.column);\n mover.call(this);\n };\n Selection.prototype.selectTo = function (row, column) {\n this.$moveSelection(function () {\n this.moveCursorTo(row, column);\n });\n };\n Selection.prototype.selectToPosition = function (pos) {\n this.$moveSelection(function () {\n this.moveCursorToPosition(pos);\n });\n };\n Selection.prototype.moveTo = function (row, column) {\n this.clearSelection();\n this.moveCursorTo(row, column);\n };\n Selection.prototype.moveToPosition = function (pos) {\n this.clearSelection();\n this.moveCursorToPosition(pos);\n };\n Selection.prototype.selectUp = function () {\n this.$moveSelection(this.moveCursorUp);\n };\n Selection.prototype.selectDown = function () {\n this.$moveSelection(this.moveCursorDown);\n };\n Selection.prototype.selectRight = function () {\n this.$moveSelection(this.moveCursorRight);\n };\n Selection.prototype.selectLeft = function () {\n this.$moveSelection(this.moveCursorLeft);\n };\n Selection.prototype.selectLineStart = function () {\n this.$moveSelection(this.moveCursorLineStart);\n };\n Selection.prototype.selectLineEnd = function () {\n this.$moveSelection(this.moveCursorLineEnd);\n };\n Selection.prototype.selectFileEnd = function () {\n this.$moveSelection(this.moveCursorFileEnd);\n };\n Selection.prototype.selectFileStart = function () {\n this.$moveSelection(this.moveCursorFileStart);\n };\n Selection.prototype.selectWordRight = function () {\n this.$moveSelection(this.moveCursorWordRight);\n };\n Selection.prototype.selectWordLeft = function () {\n this.$moveSelection(this.moveCursorWordLeft);\n };\n Selection.prototype.getWordRange = function (row, column) {\n if (typeof column == \"undefined\") {\n var cursor = row || this.lead;\n row = cursor.row;\n column = cursor.column;\n }\n return this.session.getWordRange(row, column);\n };\n Selection.prototype.selectWord = function () {\n this.setSelectionRange(this.getWordRange());\n };\n Selection.prototype.selectAWord = function () {\n var cursor = this.getCursor();\n var range = this.session.getAWordRange(cursor.row, cursor.column);\n this.setSelectionRange(range);\n };\n Selection.prototype.getLineRange = function (row, excludeLastChar) {\n var rowStart = typeof row == \"number\" ? row : this.lead.row;\n var rowEnd;\n var foldLine = this.session.getFoldLine(rowStart);\n if (foldLine) {\n rowStart = foldLine.start.row;\n rowEnd = foldLine.end.row;\n }\n else {\n rowEnd = rowStart;\n }\n if (excludeLastChar === true)\n return new Range(rowStart, 0, rowEnd, this.session.getLine(rowEnd).length);\n else\n return new Range(rowStart, 0, rowEnd + 1, 0);\n };\n Selection.prototype.selectLine = function () {\n this.setSelectionRange(this.getLineRange());\n };\n Selection.prototype.moveCursorUp = function () {\n this.moveCursorBy(-1, 0);\n };\n Selection.prototype.moveCursorDown = function () {\n this.moveCursorBy(1, 0);\n };\n Selection.prototype.wouldMoveIntoSoftTab = function (cursor, tabSize, direction) {\n var start = cursor.column;\n var end = cursor.column + tabSize;\n if (direction < 0) {\n start = cursor.column - tabSize;\n end = cursor.column;\n }\n return this.session.isTabStop(cursor) && this.doc.getLine(cursor.row).slice(start, end).split(\" \").length - 1 == tabSize;\n };\n Selection.prototype.moveCursorLeft = function () {\n var cursor = this.lead.getPosition(), fold;\n if (fold = this.session.getFoldAt(cursor.row, cursor.column, -1)) {\n this.moveCursorTo(fold.start.row, fold.start.column);\n }\n else if (cursor.column === 0) {\n if (cursor.row > 0) {\n this.moveCursorTo(cursor.row - 1, this.doc.getLine(cursor.row - 1).length);\n }\n }\n else {\n var tabSize = this.session.getTabSize();\n if (this.wouldMoveIntoSoftTab(cursor, tabSize, -1) && !this.session.getNavigateWithinSoftTabs()) {\n this.moveCursorBy(0, -tabSize);\n }\n else {\n this.moveCursorBy(0, -1);\n }\n }\n };\n Selection.prototype.moveCursorRight = function () {\n var cursor = this.lead.getPosition(), fold;\n if (fold = this.session.getFoldAt(cursor.row, cursor.column, 1)) {\n this.moveCursorTo(fold.end.row, fold.end.column);\n }\n else if (this.lead.column == this.doc.getLine(this.lead.row).length) {\n if (this.lead.row < this.doc.getLength() - 1) {\n this.moveCursorTo(this.lead.row + 1, 0);\n }\n }\n else {\n var tabSize = this.session.getTabSize();\n var cursor = this.lead;\n if (this.wouldMoveIntoSoftTab(cursor, tabSize, 1) && !this.session.getNavigateWithinSoftTabs()) {\n this.moveCursorBy(0, tabSize);\n }\n else {\n this.moveCursorBy(0, 1);\n }\n }\n };\n Selection.prototype.moveCursorLineStart = function () {\n var row = this.lead.row;\n var column = this.lead.column;\n var screenRow = this.session.documentToScreenRow(row, column);\n var firstColumnPosition = this.session.screenToDocumentPosition(screenRow, 0);\n var beforeCursor = this.session.getDisplayLine(row, null, firstColumnPosition.row, firstColumnPosition.column);\n var leadingSpace = beforeCursor.match(/^\\s*/);\n if (leadingSpace[0].length != column && !this.session.$useEmacsStyleLineStart)\n firstColumnPosition.column += leadingSpace[0].length;\n this.moveCursorToPosition(firstColumnPosition);\n };\n Selection.prototype.moveCursorLineEnd = function () {\n var lead = this.lead;\n var lineEnd = this.session.getDocumentLastRowColumnPosition(lead.row, lead.column);\n if (this.lead.column == lineEnd.column) {\n var line = this.session.getLine(lineEnd.row);\n if (lineEnd.column == line.length) {\n var textEnd = line.search(/\\s+$/);\n if (textEnd > 0)\n lineEnd.column = textEnd;\n }\n }\n this.moveCursorTo(lineEnd.row, lineEnd.column);\n };\n Selection.prototype.moveCursorFileEnd = function () {\n var row = this.doc.getLength() - 1;\n var column = this.doc.getLine(row).length;\n this.moveCursorTo(row, column);\n };\n Selection.prototype.moveCursorFileStart = function () {\n this.moveCursorTo(0, 0);\n };\n Selection.prototype.moveCursorLongWordRight = function () {\n var row = this.lead.row;\n var column = this.lead.column;\n var line = this.doc.getLine(row);\n var rightOfCursor = line.substring(column);\n this.session.nonTokenRe.lastIndex = 0;\n this.session.tokenRe.lastIndex = 0;\n var fold = this.session.getFoldAt(row, column, 1);\n if (fold) {\n this.moveCursorTo(fold.end.row, fold.end.column);\n return;\n }\n if (this.session.nonTokenRe.exec(rightOfCursor)) {\n column += this.session.nonTokenRe.lastIndex;\n this.session.nonTokenRe.lastIndex = 0;\n rightOfCursor = line.substring(column);\n }\n if (column >= line.length) {\n this.moveCursorTo(row, line.length);\n this.moveCursorRight();\n if (row < this.doc.getLength() - 1)\n this.moveCursorWordRight();\n return;\n }\n if (this.session.tokenRe.exec(rightOfCursor)) {\n column += this.session.tokenRe.lastIndex;\n this.session.tokenRe.lastIndex = 0;\n }\n this.moveCursorTo(row, column);\n };\n Selection.prototype.moveCursorLongWordLeft = function () {\n var row = this.lead.row;\n var column = this.lead.column;\n var fold;\n if (fold = this.session.getFoldAt(row, column, -1)) {\n this.moveCursorTo(fold.start.row, fold.start.column);\n return;\n }\n var str = this.session.getFoldStringAt(row, column, -1);\n if (str == null) {\n str = this.doc.getLine(row).substring(0, column);\n }\n var leftOfCursor = lang.stringReverse(str);\n this.session.nonTokenRe.lastIndex = 0;\n this.session.tokenRe.lastIndex = 0;\n if (this.session.nonTokenRe.exec(leftOfCursor)) {\n column -= this.session.nonTokenRe.lastIndex;\n leftOfCursor = leftOfCursor.slice(this.session.nonTokenRe.lastIndex);\n this.session.nonTokenRe.lastIndex = 0;\n }\n if (column <= 0) {\n this.moveCursorTo(row, 0);\n this.moveCursorLeft();\n if (row > 0)\n this.moveCursorWordLeft();\n return;\n }\n if (this.session.tokenRe.exec(leftOfCursor)) {\n column -= this.session.tokenRe.lastIndex;\n this.session.tokenRe.lastIndex = 0;\n }\n this.moveCursorTo(row, column);\n };\n Selection.prototype.$shortWordEndIndex = function (rightOfCursor) {\n var index = 0, ch;\n var whitespaceRe = /\\s/;\n var tokenRe = this.session.tokenRe;\n tokenRe.lastIndex = 0;\n if (this.session.tokenRe.exec(rightOfCursor)) {\n index = this.session.tokenRe.lastIndex;\n }\n else {\n while ((ch = rightOfCursor[index]) && whitespaceRe.test(ch))\n index++;\n if (index < 1) {\n tokenRe.lastIndex = 0;\n while ((ch = rightOfCursor[index]) && !tokenRe.test(ch)) {\n tokenRe.lastIndex = 0;\n index++;\n if (whitespaceRe.test(ch)) {\n if (index > 2) {\n index--;\n break;\n }\n else {\n while ((ch = rightOfCursor[index]) && whitespaceRe.test(ch))\n index++;\n if (index > 2)\n break;\n }\n }\n }\n }\n }\n tokenRe.lastIndex = 0;\n return index;\n };\n Selection.prototype.moveCursorShortWordRight = function () {\n var row = this.lead.row;\n var column = this.lead.column;\n var line = this.doc.getLine(row);\n var rightOfCursor = line.substring(column);\n var fold = this.session.getFoldAt(row, column, 1);\n if (fold)\n return this.moveCursorTo(fold.end.row, fold.end.column);\n if (column == line.length) {\n var l = this.doc.getLength();\n do {\n row++;\n rightOfCursor = this.doc.getLine(row);\n } while (row < l && /^\\s*$/.test(rightOfCursor));\n if (!/^\\s+/.test(rightOfCursor))\n rightOfCursor = \"\";\n column = 0;\n }\n var index = this.$shortWordEndIndex(rightOfCursor);\n this.moveCursorTo(row, column + index);\n };\n Selection.prototype.moveCursorShortWordLeft = function () {\n var row = this.lead.row;\n var column = this.lead.column;\n var fold;\n if (fold = this.session.getFoldAt(row, column, -1))\n return this.moveCursorTo(fold.start.row, fold.start.column);\n var line = this.session.getLine(row).substring(0, column);\n if (column === 0) {\n do {\n row--;\n line = this.doc.getLine(row);\n } while (row > 0 && /^\\s*$/.test(line));\n column = line.length;\n if (!/\\s+$/.test(line))\n line = \"\";\n }\n var leftOfCursor = lang.stringReverse(line);\n var index = this.$shortWordEndIndex(leftOfCursor);\n return this.moveCursorTo(row, column - index);\n };\n Selection.prototype.moveCursorWordRight = function () {\n if (this.session.$selectLongWords)\n this.moveCursorLongWordRight();\n else\n this.moveCursorShortWordRight();\n };\n Selection.prototype.moveCursorWordLeft = function () {\n if (this.session.$selectLongWords)\n this.moveCursorLongWordLeft();\n else\n this.moveCursorShortWordLeft();\n };\n Selection.prototype.moveCursorBy = function (rows, chars) {\n var screenPos = this.session.documentToScreenPosition(this.lead.row, this.lead.column);\n var offsetX;\n if (chars === 0) {\n if (rows !== 0) {\n if (this.session.$bidiHandler.isBidiRow(screenPos.row, this.lead.row)) {\n offsetX = this.session.$bidiHandler.getPosLeft(screenPos.column);\n screenPos.column = Math.round(offsetX / this.session.$bidiHandler.charWidths[0]);\n }\n else {\n offsetX = screenPos.column * this.session.$bidiHandler.charWidths[0];\n }\n }\n if (this.$desiredColumn)\n screenPos.column = this.$desiredColumn;\n else\n this.$desiredColumn = screenPos.column;\n }\n if (rows != 0 && this.session.lineWidgets && this.session.lineWidgets[this.lead.row]) {\n var widget = this.session.lineWidgets[this.lead.row];\n if (rows < 0)\n rows -= widget.rowsAbove || 0;\n else if (rows > 0)\n rows += widget.rowCount - (widget.rowsAbove || 0);\n }\n var docPos = this.session.screenToDocumentPosition(screenPos.row + rows, screenPos.column, offsetX);\n if (rows !== 0 && chars === 0 && docPos.row === this.lead.row && docPos.column === this.lead.column) {\n }\n this.moveCursorTo(docPos.row, docPos.column + chars, chars === 0);\n };\n Selection.prototype.moveCursorToPosition = function (position) {\n this.moveCursorTo(position.row, position.column);\n };\n Selection.prototype.moveCursorTo = function (row, column, keepDesiredColumn) {\n var fold = this.session.getFoldAt(row, column, 1);\n if (fold) {\n row = fold.start.row;\n column = fold.start.column;\n }\n this.$keepDesiredColumnOnChange = true;\n var line = this.session.getLine(row);\n if (/[\\uDC00-\\uDFFF]/.test(line.charAt(column)) && line.charAt(column - 1)) {\n if (this.lead.row == row && this.lead.column == column + 1)\n column = column - 1;\n else\n column = column + 1;\n }\n this.lead.setPosition(row, column);\n this.$keepDesiredColumnOnChange = false;\n if (!keepDesiredColumn)\n this.$desiredColumn = null;\n };\n Selection.prototype.moveCursorToScreen = function (row, column, keepDesiredColumn) {\n var pos = this.session.screenToDocumentPosition(row, column);\n this.moveCursorTo(pos.row, pos.column, keepDesiredColumn);\n };\n Selection.prototype.detach = function () {\n this.lead.detach();\n this.anchor.detach();\n };\n Selection.prototype.fromOrientedRange = function (range) {\n this.setSelectionRange(range, range.cursor == range.start);\n this.$desiredColumn = range.desiredColumn || this.$desiredColumn;\n };\n Selection.prototype.toOrientedRange = function (range) {\n var r = this.getRange();\n if (range) {\n range.start.column = r.start.column;\n range.start.row = r.start.row;\n range.end.column = r.end.column;\n range.end.row = r.end.row;\n }\n else {\n range = r;\n }\n range.cursor = this.isBackwards() ? range.start : range.end;\n range.desiredColumn = this.$desiredColumn;\n return range;\n };\n Selection.prototype.getRangeOfMovements = function (func) {\n var start = this.getCursor();\n try {\n func(this);\n var end = this.getCursor();\n return Range.fromPoints(start, end);\n }\n catch (e) {\n return Range.fromPoints(start, start);\n }\n finally {\n this.moveCursorToPosition(start);\n }\n };\n Selection.prototype.toJSON = function () {\n if (this.rangeCount) {\n var data = this.ranges.map(function (r) {\n var r1 = r.clone();\n r1.isBackwards = r.cursor == r.start;\n return r1;\n });\n }\n else {\n var data = this.getRange();\n data.isBackwards = this.isBackwards();\n }\n return data;\n };\n Selection.prototype.fromJSON = function (data) {\n if (data.start == undefined) {\n if (this.rangeList && data.length > 1) {\n this.toSingleRange(data[0]);\n for (var i = data.length; i--;) {\n var r = Range.fromPoints(data[i].start, data[i].end);\n if (data[i].isBackwards)\n r.cursor = r.start;\n this.addRange(r, true);\n }\n return;\n }\n else {\n data = data[0];\n }\n }\n if (this.rangeList)\n this.toSingleRange(data);\n this.setSelectionRange(data, data.isBackwards);\n };\n Selection.prototype.isEqual = function (data) {\n if ((data.length || this.rangeCount) && data.length != this.rangeCount)\n return false;\n if (!data.length || !this.ranges)\n return this.getRange().isEqual(data);\n for (var i = this.ranges.length; i--;) {\n if (!this.ranges[i].isEqual(data[i]))\n return false;\n }\n return true;\n };\n return Selection;\n}());\nSelection.prototype.setSelectionAnchor = Selection.prototype.setAnchor;\nSelection.prototype.getSelectionAnchor = Selection.prototype.getAnchor;\nSelection.prototype.setSelectionRange = Selection.prototype.setRange;\noop.implement(Selection.prototype, EventEmitter);\nexports.Selection = Selection;\n\n});\n\nace.define(\"ace/tokenizer\",[\"require\",\"exports\",\"module\",\"ace/lib/report_error\"], function(require, exports, module){\"use strict\";\nvar reportError = require(\"./lib/report_error\").reportError;\nvar MAX_TOKEN_COUNT = 2000;\nvar Tokenizer = /** @class */ (function () {\n function Tokenizer(rules) {\n this.states = rules;\n this.regExps = {};\n this.matchMappings = {};\n for (var key in this.states) {\n var state = this.states[key];\n var ruleRegExps = [];\n var matchTotal = 0;\n var mapping = this.matchMappings[key] = { defaultToken: \"text\" };\n var flag = \"g\";\n var splitterRurles = [];\n for (var i = 0; i < state.length; i++) {\n var rule = state[i];\n if (rule.defaultToken)\n mapping.defaultToken = rule.defaultToken;\n if (rule.caseInsensitive && flag.indexOf(\"i\") === -1)\n flag += \"i\";\n if (rule.unicode && flag.indexOf(\"u\") === -1)\n flag += \"u\";\n if (rule.regex == null)\n continue;\n if (rule.regex instanceof RegExp)\n rule.regex = rule.regex.toString().slice(1, -1);\n var adjustedregex = rule.regex;\n var matchcount = new RegExp(\"(?:(\" + adjustedregex + \")|(.))\").exec(\"a\").length - 2;\n if (Array.isArray(rule.token)) {\n if (rule.token.length == 1 || matchcount == 1) {\n rule.token = rule.token[0];\n }\n else if (matchcount - 1 != rule.token.length) {\n this.reportError(\"number of classes and regexp groups doesn't match\", {\n rule: rule,\n groupCount: matchcount - 1\n });\n rule.token = rule.token[0];\n }\n else {\n rule.tokenArray = rule.token;\n rule.token = null;\n rule.onMatch = this.$arrayTokens;\n }\n }\n else if (typeof rule.token == \"function\" && !rule.onMatch) {\n if (matchcount > 1)\n rule.onMatch = this.$applyToken;\n else\n rule.onMatch = rule.token;\n }\n if (matchcount > 1) {\n if (/\\\\\\d/.test(rule.regex)) {\n adjustedregex = rule.regex.replace(/\\\\([0-9]+)/g, function (match, digit) {\n return \"\\\\\" + (parseInt(digit, 10) + matchTotal + 1);\n });\n }\n else {\n matchcount = 1;\n adjustedregex = this.removeCapturingGroups(rule.regex);\n }\n if (!rule.splitRegex && typeof rule.token != \"string\")\n splitterRurles.push(rule); // flag will be known only at the very end\n }\n mapping[matchTotal] = i;\n matchTotal += matchcount;\n ruleRegExps.push(adjustedregex);\n if (!rule.onMatch)\n rule.onMatch = null;\n }\n if (!ruleRegExps.length) {\n mapping[0] = 0;\n ruleRegExps.push(\"$\");\n }\n splitterRurles.forEach(function (rule) {\n rule.splitRegex = this.createSplitterRegexp(rule.regex, flag);\n }, this);\n this.regExps[key] = new RegExp(\"(\" + ruleRegExps.join(\")|(\") + \")|($)\", flag);\n }\n }\n Tokenizer.prototype.$setMaxTokenCount = function (m) {\n MAX_TOKEN_COUNT = m | 0;\n };\n Tokenizer.prototype.$applyToken = function (str) {\n var values = this.splitRegex.exec(str).slice(1);\n var types = this.token.apply(this, values);\n if (typeof types === \"string\")\n return [{ type: types, value: str }];\n var tokens = [];\n for (var i = 0, l = types.length; i < l; i++) {\n if (values[i])\n tokens[tokens.length] = {\n type: types[i],\n value: values[i]\n };\n }\n return tokens;\n };\n Tokenizer.prototype.$arrayTokens = function (str) {\n if (!str)\n return [];\n var values = this.splitRegex.exec(str);\n if (!values)\n return \"text\";\n var tokens = [];\n var types = this.tokenArray;\n for (var i = 0, l = types.length; i < l; i++) {\n if (values[i + 1])\n tokens[tokens.length] = {\n type: types[i],\n value: values[i + 1]\n };\n }\n return tokens;\n };\n Tokenizer.prototype.removeCapturingGroups = function (src) {\n var r = src.replace(/\\\\.|\\[(?:\\\\.|[^\\\\\\]])*|\\(\\?[:=!<]|(\\()/g, function (x, y) { return y ? \"(?:\" : x; });\n return r;\n };\n Tokenizer.prototype.createSplitterRegexp = function (src, flag) {\n if (src.indexOf(\"(?=\") != -1) {\n var stack = 0;\n var inChClass = false;\n var lastCapture = {};\n src.replace(/(\\\\.)|(\\((?:\\?[=!])?)|(\\))|([\\[\\]])/g, function (m, esc, parenOpen, parenClose, square, index) {\n if (inChClass) {\n inChClass = square != \"]\";\n }\n else if (square) {\n inChClass = true;\n }\n else if (parenClose) {\n if (stack == lastCapture.stack) {\n lastCapture.end = index + 1;\n lastCapture.stack = -1;\n }\n stack--;\n }\n else if (parenOpen) {\n stack++;\n if (parenOpen.length != 1) {\n lastCapture.stack = stack;\n lastCapture.start = index;\n }\n }\n return m;\n });\n if (lastCapture.end != null && /^\\)*$/.test(src.substr(lastCapture.end)))\n src = src.substring(0, lastCapture.start) + src.substr(lastCapture.end);\n }\n if (src.charAt(0) != \"^\")\n src = \"^\" + src;\n if (src.charAt(src.length - 1) != \"$\")\n src += \"$\";\n return new RegExp(src, (flag || \"\").replace(\"g\", \"\"));\n };\n Tokenizer.prototype.getLineTokens = function (line, startState) {\n if (startState && typeof startState != \"string\") {\n var stack = startState.slice(0);\n startState = stack[0];\n if (startState === \"#tmp\") {\n stack.shift();\n startState = stack.shift();\n }\n }\n else\n var stack = [];\n var currentState = startState || \"start\";\n var state = this.states[currentState];\n if (!state) {\n currentState = \"start\";\n state = this.states[currentState];\n }\n var mapping = this.matchMappings[currentState];\n var re = this.regExps[currentState];\n re.lastIndex = 0;\n var match, tokens = [];\n var lastIndex = 0;\n var matchAttempts = 0;\n var token = { type: null, value: \"\" };\n while (match = re.exec(line)) {\n var type = mapping.defaultToken;\n var rule = null;\n var value = match[0];\n var index = re.lastIndex;\n if (index - value.length > lastIndex) {\n var skipped = line.substring(lastIndex, index - value.length);\n if (token.type == type) {\n token.value += skipped;\n }\n else {\n if (token.type)\n tokens.push(token);\n token = { type: type, value: skipped };\n }\n }\n for (var i = 0; i < match.length - 2; i++) {\n if (match[i + 1] === undefined)\n continue;\n rule = state[mapping[i]];\n if (rule.onMatch)\n type = rule.onMatch(value, currentState, stack, line);\n else\n type = rule.token;\n if (rule.next) {\n if (typeof rule.next == \"string\") {\n currentState = rule.next;\n }\n else {\n currentState = rule.next(currentState, stack);\n }\n state = this.states[currentState];\n if (!state) {\n this.reportError(\"state doesn't exist\", currentState);\n currentState = \"start\";\n state = this.states[currentState];\n }\n mapping = this.matchMappings[currentState];\n lastIndex = index;\n re = this.regExps[currentState];\n re.lastIndex = index;\n }\n if (rule.consumeLineEnd)\n lastIndex = index;\n break;\n }\n if (value) {\n if (typeof type === \"string\") {\n if ((!rule || rule.merge !== false) && token.type === type) {\n token.value += value;\n }\n else {\n if (token.type)\n tokens.push(token);\n token = { type: type, value: value };\n }\n }\n else if (type) {\n if (token.type)\n tokens.push(token);\n token = { type: null, value: \"\" };\n for (var i = 0; i < type.length; i++)\n tokens.push(type[i]);\n }\n }\n if (lastIndex == line.length)\n break;\n lastIndex = index;\n if (matchAttempts++ > MAX_TOKEN_COUNT) {\n if (matchAttempts > 2 * line.length) {\n this.reportError(\"infinite loop with in ace tokenizer\", {\n startState: startState,\n line: line\n });\n }\n while (lastIndex < line.length) {\n if (token.type)\n tokens.push(token);\n token = {\n value: line.substring(lastIndex, lastIndex += 500),\n type: \"overflow\"\n };\n }\n currentState = \"start\";\n stack = [];\n break;\n }\n }\n if (token.type)\n tokens.push(token);\n if (stack.length > 1) {\n if (stack[0] !== currentState)\n stack.unshift(\"#tmp\", currentState);\n }\n return {\n tokens: tokens,\n state: stack.length ? stack : currentState\n };\n };\n return Tokenizer;\n}());\nTokenizer.prototype.reportError = reportError;\nexports.Tokenizer = Tokenizer;\n\n});\n\nace.define(\"ace/mode/text_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/deep_copy\"], function(require, exports, module){\"use strict\";\nvar deepCopy = require(\"../lib/deep_copy\").deepCopy;\nvar TextHighlightRules = function () {\n this.$rules = {\n \"start\": [{\n token: \"empty_line\",\n regex: '^$'\n }, {\n defaultToken: \"text\"\n }]\n };\n};\n(function () {\n this.addRules = function (rules, prefix) {\n if (!prefix) {\n for (var key in rules)\n this.$rules[key] = rules[key];\n return;\n }\n for (var key in rules) {\n var state = rules[key];\n for (var i = 0; i < state.length; i++) {\n var rule = state[i];\n if (rule.next || rule.onMatch) {\n if (typeof rule.next == \"string\") {\n if (rule.next.indexOf(prefix) !== 0)\n rule.next = prefix + rule.next;\n }\n if (rule.nextState && rule.nextState.indexOf(prefix) !== 0)\n rule.nextState = prefix + rule.nextState;\n }\n }\n this.$rules[prefix + key] = state;\n }\n };\n this.getRules = function () {\n return this.$rules;\n };\n this.embedRules = function (HighlightRules, prefix, escapeRules, states, append) {\n var embedRules = typeof HighlightRules == \"function\"\n ? new HighlightRules().getRules()\n : HighlightRules;\n if (states) {\n for (var i = 0; i < states.length; i++)\n states[i] = prefix + states[i];\n }\n else {\n states = [];\n for (var key in embedRules)\n states.push(prefix + key);\n }\n this.addRules(embedRules, prefix);\n if (escapeRules) {\n var addRules = Array.prototype[append ? \"push\" : \"unshift\"];\n for (var i = 0; i < states.length; i++)\n addRules.apply(this.$rules[states[i]], deepCopy(escapeRules));\n }\n if (!this.$embeds)\n this.$embeds = [];\n this.$embeds.push(prefix);\n };\n this.getEmbeds = function () {\n return this.$embeds;\n };\n var pushState = function (currentState, stack) {\n if (currentState != \"start\" || stack.length)\n stack.unshift(this.nextState, currentState);\n return this.nextState;\n };\n var popState = function (currentState, stack) {\n stack.shift();\n return stack.shift() || \"start\";\n };\n this.normalizeRules = function () {\n var id = 0;\n var rules = this.$rules;\n function processState(key) {\n var state = rules[key];\n state.processed = true;\n for (var i = 0; i < state.length; i++) {\n var rule = state[i];\n var toInsert = null;\n if (Array.isArray(rule)) {\n toInsert = rule;\n rule = {};\n }\n if (!rule.regex && rule.start) {\n rule.regex = rule.start;\n if (!rule.next)\n rule.next = [];\n rule.next.push({\n defaultToken: rule.token\n }, {\n token: rule.token + \".end\",\n regex: rule.end || rule.start,\n next: \"pop\"\n });\n rule.token = rule.token + \".start\";\n rule.push = true;\n }\n var next = rule.next || rule.push;\n if (next && Array.isArray(next)) {\n var stateName = rule.stateName;\n if (!stateName) {\n stateName = rule.token;\n if (typeof stateName != \"string\")\n stateName = stateName[0] || \"\";\n if (rules[stateName])\n stateName += id++;\n }\n rules[stateName] = next;\n rule.next = stateName;\n processState(stateName);\n }\n else if (next == \"pop\") {\n rule.next = popState;\n }\n if (rule.push) {\n rule.nextState = rule.next || rule.push;\n rule.next = pushState;\n delete rule.push;\n }\n if (rule.rules) {\n for (var r in rule.rules) {\n if (rules[r]) {\n if (rules[r].push)\n rules[r].push.apply(rules[r], rule.rules[r]);\n }\n else {\n rules[r] = rule.rules[r];\n }\n }\n }\n var includeName = typeof rule == \"string\" ? rule : rule.include;\n if (includeName) {\n if (includeName === \"$self\")\n includeName = \"start\";\n if (Array.isArray(includeName))\n toInsert = includeName.map(function (x) { return rules[x]; });\n else\n toInsert = rules[includeName];\n }\n if (toInsert) {\n var args = [i, 1].concat(toInsert);\n if (rule.noEscape)\n args = args.filter(function (x) { return !x.next; });\n state.splice.apply(state, args);\n i--;\n }\n if (rule.keywordMap) {\n rule.token = this.createKeywordMapper(rule.keywordMap, rule.defaultToken || \"text\", rule.caseInsensitive);\n delete rule.defaultToken;\n }\n }\n }\n Object.keys(rules).forEach(processState, this);\n };\n this.createKeywordMapper = function (map, defaultToken, ignoreCase, splitChar) {\n var keywords = Object.create(null);\n this.$keywordList = [];\n Object.keys(map).forEach(function (className) {\n var a = map[className];\n var list = a.split(splitChar || \"|\");\n for (var i = list.length; i--;) {\n var word = list[i];\n this.$keywordList.push(word);\n if (ignoreCase)\n word = word.toLowerCase();\n keywords[word] = className;\n }\n }, this);\n map = null;\n return ignoreCase\n ? function (value) { return keywords[value.toLowerCase()] || defaultToken; }\n : function (value) { return keywords[value] || defaultToken; };\n };\n this.getKeywords = function () {\n return this.$keywords;\n };\n}).call(TextHighlightRules.prototype);\nexports.TextHighlightRules = TextHighlightRules;\n\n});\n\nace.define(\"ace/mode/behaviour\",[\"require\",\"exports\",\"module\"], function(require, exports, module){\"use strict\";\nvar Behaviour = function () {\n this.$behaviours = {};\n};\n(function () {\n this.add = function (name, action, callback) {\n switch (undefined) {\n case this.$behaviours:\n this.$behaviours = {};\n case this.$behaviours[name]:\n this.$behaviours[name] = {};\n }\n this.$behaviours[name][action] = callback;\n };\n this.addBehaviours = function (behaviours) {\n for (var key in behaviours) {\n for (var action in behaviours[key]) {\n this.add(key, action, behaviours[key][action]);\n }\n }\n };\n this.remove = function (name) {\n if (this.$behaviours && this.$behaviours[name]) {\n delete this.$behaviours[name];\n }\n };\n this.inherit = function (mode, filter) {\n if (typeof mode === \"function\") {\n var behaviours = new mode().getBehaviours(filter);\n }\n else {\n var behaviours = mode.getBehaviours(filter);\n }\n this.addBehaviours(behaviours);\n };\n this.getBehaviours = function (filter) {\n if (!filter) {\n return this.$behaviours;\n }\n else {\n var ret = {};\n for (var i = 0; i < filter.length; i++) {\n if (this.$behaviours[filter[i]]) {\n ret[filter[i]] = this.$behaviours[filter[i]];\n }\n }\n return ret;\n }\n };\n}).call(Behaviour.prototype);\nexports.Behaviour = Behaviour;\n\n});\n\nace.define(\"ace/token_iterator\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar Range = require(\"./range\").Range;\nvar TokenIterator = /** @class */ (function () {\n function TokenIterator(session, initialRow, initialColumn) {\n this.$session = session;\n this.$row = initialRow;\n this.$rowTokens = session.getTokens(initialRow);\n var token = session.getTokenAt(initialRow, initialColumn);\n this.$tokenIndex = token ? token.index : -1;\n }\n TokenIterator.prototype.stepBackward = function () {\n this.$tokenIndex -= 1;\n while (this.$tokenIndex < 0) {\n this.$row -= 1;\n if (this.$row < 0) {\n this.$row = 0;\n return null;\n }\n this.$rowTokens = this.$session.getTokens(this.$row);\n this.$tokenIndex = this.$rowTokens.length - 1;\n }\n return this.$rowTokens[this.$tokenIndex];\n };\n TokenIterator.prototype.stepForward = function () {\n this.$tokenIndex += 1;\n var rowCount;\n while (this.$tokenIndex >= this.$rowTokens.length) {\n this.$row += 1;\n if (!rowCount)\n rowCount = this.$session.getLength();\n if (this.$row >= rowCount) {\n this.$row = rowCount - 1;\n return null;\n }\n this.$rowTokens = this.$session.getTokens(this.$row);\n this.$tokenIndex = 0;\n }\n return this.$rowTokens[this.$tokenIndex];\n };\n TokenIterator.prototype.getCurrentToken = function () {\n return this.$rowTokens[this.$tokenIndex];\n };\n TokenIterator.prototype.getCurrentTokenRow = function () {\n return this.$row;\n };\n TokenIterator.prototype.getCurrentTokenColumn = function () {\n var rowTokens = this.$rowTokens;\n var tokenIndex = this.$tokenIndex;\n var column = rowTokens[tokenIndex].start;\n if (column !== undefined)\n return column;\n column = 0;\n while (tokenIndex > 0) {\n tokenIndex -= 1;\n column += rowTokens[tokenIndex].value.length;\n }\n return column;\n };\n TokenIterator.prototype.getCurrentTokenPosition = function () {\n return { row: this.$row, column: this.getCurrentTokenColumn() };\n };\n TokenIterator.prototype.getCurrentTokenRange = function () {\n var token = this.$rowTokens[this.$tokenIndex];\n var column = this.getCurrentTokenColumn();\n return new Range(this.$row, column, this.$row, column + token.value.length);\n };\n return TokenIterator;\n}());\nexports.TokenIterator = TokenIterator;\n\n});\n\nace.define(\"ace/mode/behaviour/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/behaviour\",\"ace/token_iterator\",\"ace/lib/lang\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../../lib/oop\");\nvar Behaviour = require(\"../behaviour\").Behaviour;\nvar TokenIterator = require(\"../../token_iterator\").TokenIterator;\nvar lang = require(\"../../lib/lang\");\nvar SAFE_INSERT_IN_TOKENS = [\"text\", \"paren.rparen\", \"rparen\", \"paren\", \"punctuation.operator\"];\nvar SAFE_INSERT_BEFORE_TOKENS = [\"text\", \"paren.rparen\", \"rparen\", \"paren\", \"punctuation.operator\", \"comment\"];\nvar context;\nvar contextCache = {};\nvar defaultQuotes = { '\"': '\"', \"'\": \"'\" };\nvar initContext = function (editor) {\n var id = -1;\n if (editor.multiSelect) {\n id = editor.selection.index;\n if (contextCache.rangeCount != editor.multiSelect.rangeCount)\n contextCache = { rangeCount: editor.multiSelect.rangeCount };\n }\n if (contextCache[id])\n return context = contextCache[id];\n context = contextCache[id] = {\n autoInsertedBrackets: 0,\n autoInsertedRow: -1,\n autoInsertedLineEnd: \"\",\n maybeInsertedBrackets: 0,\n maybeInsertedRow: -1,\n maybeInsertedLineStart: \"\",\n maybeInsertedLineEnd: \"\"\n };\n};\nvar getWrapped = function (selection, selected, opening, closing) {\n var rowDiff = selection.end.row - selection.start.row;\n return {\n text: opening + selected + closing,\n selection: [\n 0,\n selection.start.column + 1,\n rowDiff,\n selection.end.column + (rowDiff ? 0 : 1)\n ]\n };\n};\nvar CstyleBehaviour = function (options) {\n options = options || {};\n this.add(\"braces\", \"insertion\", function (state, action, editor, session, text) {\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n if (text == '{') {\n initContext(editor);\n var selection = editor.getSelectionRange();\n var selected = session.doc.getTextRange(selection);\n if (selected !== \"\" && selected !== \"{\" && editor.getWrapBehavioursEnabled()) {\n return getWrapped(selection, selected, '{', '}');\n }\n else if (CstyleBehaviour.isSaneInsertion(editor, session)) {\n if (/[\\]\\}\\)]/.test(line[cursor.column]) || editor.inMultiSelectMode || options.braces) {\n CstyleBehaviour.recordAutoInsert(editor, session, \"}\");\n return {\n text: '{}',\n selection: [1, 1]\n };\n }\n else {\n CstyleBehaviour.recordMaybeInsert(editor, session, \"{\");\n return {\n text: '{',\n selection: [1, 1]\n };\n }\n }\n }\n else if (text == '}') {\n initContext(editor);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n if (rightChar == '}') {\n var matching = session.$findOpeningBracket('}', { column: cursor.column + 1, row: cursor.row });\n if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) {\n CstyleBehaviour.popAutoInsertedClosing();\n return {\n text: '',\n selection: [1, 1]\n };\n }\n }\n }\n else if (text == \"\\n\" || text == \"\\r\\n\") {\n initContext(editor);\n var closing = \"\";\n if (CstyleBehaviour.isMaybeInsertedClosing(cursor, line)) {\n closing = lang.stringRepeat(\"}\", context.maybeInsertedBrackets);\n CstyleBehaviour.clearMaybeInsertedClosing();\n }\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n if (rightChar === '}') {\n var openBracePos = session.findMatchingBracket({ row: cursor.row, column: cursor.column + 1 }, '}');\n if (!openBracePos)\n return null;\n var next_indent = this.$getIndent(session.getLine(openBracePos.row));\n }\n else if (closing) {\n var next_indent = this.$getIndent(line);\n }\n else {\n CstyleBehaviour.clearMaybeInsertedClosing();\n return;\n }\n var indent = next_indent + session.getTabString();\n return {\n text: '\\n' + indent + '\\n' + next_indent + closing,\n selection: [1, indent.length, 1, indent.length]\n };\n }\n else {\n CstyleBehaviour.clearMaybeInsertedClosing();\n }\n });\n this.add(\"braces\", \"deletion\", function (state, action, editor, session, range) {\n var selected = session.doc.getTextRange(range);\n if (!range.isMultiLine() && selected == '{') {\n initContext(editor);\n var line = session.doc.getLine(range.start.row);\n var rightChar = line.substring(range.end.column, range.end.column + 1);\n if (rightChar == '}') {\n range.end.column++;\n return range;\n }\n else {\n context.maybeInsertedBrackets--;\n }\n }\n });\n this.add(\"parens\", \"insertion\", function (state, action, editor, session, text) {\n if (text == '(') {\n initContext(editor);\n var selection = editor.getSelectionRange();\n var selected = session.doc.getTextRange(selection);\n if (selected !== \"\" && editor.getWrapBehavioursEnabled()) {\n return getWrapped(selection, selected, '(', ')');\n }\n else if (CstyleBehaviour.isSaneInsertion(editor, session)) {\n CstyleBehaviour.recordAutoInsert(editor, session, \")\");\n return {\n text: '()',\n selection: [1, 1]\n };\n }\n }\n else if (text == ')') {\n initContext(editor);\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n if (rightChar == ')') {\n var matching = session.$findOpeningBracket(')', { column: cursor.column + 1, row: cursor.row });\n if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) {\n CstyleBehaviour.popAutoInsertedClosing();\n return {\n text: '',\n selection: [1, 1]\n };\n }\n }\n }\n });\n this.add(\"parens\", \"deletion\", function (state, action, editor, session, range) {\n var selected = session.doc.getTextRange(range);\n if (!range.isMultiLine() && selected == '(') {\n initContext(editor);\n var line = session.doc.getLine(range.start.row);\n var rightChar = line.substring(range.start.column + 1, range.start.column + 2);\n if (rightChar == ')') {\n range.end.column++;\n return range;\n }\n }\n });\n this.add(\"brackets\", \"insertion\", function (state, action, editor, session, text) {\n if (text == '[') {\n initContext(editor);\n var selection = editor.getSelectionRange();\n var selected = session.doc.getTextRange(selection);\n if (selected !== \"\" && editor.getWrapBehavioursEnabled()) {\n return getWrapped(selection, selected, '[', ']');\n }\n else if (CstyleBehaviour.isSaneInsertion(editor, session)) {\n CstyleBehaviour.recordAutoInsert(editor, session, \"]\");\n return {\n text: '[]',\n selection: [1, 1]\n };\n }\n }\n else if (text == ']') {\n initContext(editor);\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n if (rightChar == ']') {\n var matching = session.$findOpeningBracket(']', { column: cursor.column + 1, row: cursor.row });\n if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) {\n CstyleBehaviour.popAutoInsertedClosing();\n return {\n text: '',\n selection: [1, 1]\n };\n }\n }\n }\n });\n this.add(\"brackets\", \"deletion\", function (state, action, editor, session, range) {\n var selected = session.doc.getTextRange(range);\n if (!range.isMultiLine() && selected == '[') {\n initContext(editor);\n var line = session.doc.getLine(range.start.row);\n var rightChar = line.substring(range.start.column + 1, range.start.column + 2);\n if (rightChar == ']') {\n range.end.column++;\n return range;\n }\n }\n });\n this.add(\"string_dquotes\", \"insertion\", function (state, action, editor, session, text) {\n var quotes = session.$mode.$quotes || defaultQuotes;\n if (text.length == 1 && quotes[text]) {\n if (this.lineCommentStart && this.lineCommentStart.indexOf(text) != -1)\n return;\n initContext(editor);\n var quote = text;\n var selection = editor.getSelectionRange();\n var selected = session.doc.getTextRange(selection);\n if (selected !== \"\" && (selected.length != 1 || !quotes[selected]) && editor.getWrapBehavioursEnabled()) {\n return getWrapped(selection, selected, quote, quote);\n }\n else if (!selected) {\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n var leftChar = line.substring(cursor.column - 1, cursor.column);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n var token = session.getTokenAt(cursor.row, cursor.column);\n var rightToken = session.getTokenAt(cursor.row, cursor.column + 1);\n if (leftChar == \"\\\\\" && token && /escape/.test(token.type))\n return null;\n var stringBefore = token && /string|escape/.test(token.type);\n var stringAfter = !rightToken || /string|escape/.test(rightToken.type);\n var pair;\n if (rightChar == quote) {\n pair = stringBefore !== stringAfter;\n if (pair && /string\\.end/.test(rightToken.type))\n pair = false;\n }\n else {\n if (stringBefore && !stringAfter)\n return null; // wrap string with different quote\n if (stringBefore && stringAfter)\n return null; // do not pair quotes inside strings\n var wordRe = session.$mode.tokenRe;\n wordRe.lastIndex = 0;\n var isWordBefore = wordRe.test(leftChar);\n wordRe.lastIndex = 0;\n var isWordAfter = wordRe.test(rightChar);\n var pairQuotesAfter = session.$mode.$pairQuotesAfter;\n var shouldPairQuotes = pairQuotesAfter && pairQuotesAfter[quote] && pairQuotesAfter[quote].test(leftChar);\n if ((!shouldPairQuotes && isWordBefore) || isWordAfter)\n return null; // before or after alphanumeric\n if (rightChar && !/[\\s;,.})\\]\\\\]/.test(rightChar))\n return null; // there is rightChar and it isn't closing\n var charBefore = line[cursor.column - 2];\n if (leftChar == quote && (charBefore == quote || wordRe.test(charBefore)))\n return null;\n pair = true;\n }\n return {\n text: pair ? quote + quote : \"\",\n selection: [1, 1]\n };\n }\n }\n });\n this.add(\"string_dquotes\", \"deletion\", function (state, action, editor, session, range) {\n var quotes = session.$mode.$quotes || defaultQuotes;\n var selected = session.doc.getTextRange(range);\n if (!range.isMultiLine() && quotes.hasOwnProperty(selected)) {\n initContext(editor);\n var line = session.doc.getLine(range.start.row);\n var rightChar = line.substring(range.start.column + 1, range.start.column + 2);\n if (rightChar == selected) {\n range.end.column++;\n return range;\n }\n }\n });\n if (options.closeDocComment !== false) {\n this.add(\"doc comment end\", \"insertion\", function (state, action, editor, session, text) {\n if (state === \"doc-start\" && (text === \"\\n\" || text === \"\\r\\n\") && editor.selection.isEmpty()) {\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n var nextLine = session.doc.getLine(cursor.row + 1);\n var indent = this.$getIndent(line);\n if (/\\s*\\*/.test(nextLine)) {\n if (/^\\s*\\*/.test(line)) {\n return {\n text: text + indent + \"* \",\n selection: [1, 3 + indent.length, 1, 3 + indent.length]\n };\n }\n else {\n return {\n text: text + indent + \" * \",\n selection: [1, 3 + indent.length, 1, 3 + indent.length]\n };\n }\n }\n if (/\\/\\*\\*/.test(line.substring(0, cursor.column))) {\n return {\n text: text + indent + \" * \" + text + \" \" + indent + \"*/\",\n selection: [1, 4 + indent.length, 1, 4 + indent.length]\n };\n }\n }\n });\n }\n};\nCstyleBehaviour.isSaneInsertion = function (editor, session) {\n var cursor = editor.getCursorPosition();\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n if (!this.$matchTokenType(iterator.getCurrentToken() || \"text\", SAFE_INSERT_IN_TOKENS)) {\n if (/[)}\\]]/.test(editor.session.getLine(cursor.row)[cursor.column]))\n return true;\n var iterator2 = new TokenIterator(session, cursor.row, cursor.column + 1);\n if (!this.$matchTokenType(iterator2.getCurrentToken() || \"text\", SAFE_INSERT_IN_TOKENS))\n return false;\n }\n iterator.stepForward();\n return iterator.getCurrentTokenRow() !== cursor.row ||\n this.$matchTokenType(iterator.getCurrentToken() || \"text\", SAFE_INSERT_BEFORE_TOKENS);\n};\nCstyleBehaviour.$matchTokenType = function (token, types) {\n return types.indexOf(token.type || token) > -1;\n};\nCstyleBehaviour.recordAutoInsert = function (editor, session, bracket) {\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n if (!this.isAutoInsertedClosing(cursor, line, context.autoInsertedLineEnd[0]))\n context.autoInsertedBrackets = 0;\n context.autoInsertedRow = cursor.row;\n context.autoInsertedLineEnd = bracket + line.substr(cursor.column);\n context.autoInsertedBrackets++;\n};\nCstyleBehaviour.recordMaybeInsert = function (editor, session, bracket) {\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n if (!this.isMaybeInsertedClosing(cursor, line))\n context.maybeInsertedBrackets = 0;\n context.maybeInsertedRow = cursor.row;\n context.maybeInsertedLineStart = line.substr(0, cursor.column) + bracket;\n context.maybeInsertedLineEnd = line.substr(cursor.column);\n context.maybeInsertedBrackets++;\n};\nCstyleBehaviour.isAutoInsertedClosing = function (cursor, line, bracket) {\n return context.autoInsertedBrackets > 0 &&\n cursor.row === context.autoInsertedRow &&\n bracket === context.autoInsertedLineEnd[0] &&\n line.substr(cursor.column) === context.autoInsertedLineEnd;\n};\nCstyleBehaviour.isMaybeInsertedClosing = function (cursor, line) {\n return context.maybeInsertedBrackets > 0 &&\n cursor.row === context.maybeInsertedRow &&\n line.substr(cursor.column) === context.maybeInsertedLineEnd &&\n line.substr(0, cursor.column) == context.maybeInsertedLineStart;\n};\nCstyleBehaviour.popAutoInsertedClosing = function () {\n context.autoInsertedLineEnd = context.autoInsertedLineEnd.substr(1);\n context.autoInsertedBrackets--;\n};\nCstyleBehaviour.clearMaybeInsertedClosing = function () {\n if (context) {\n context.maybeInsertedBrackets = 0;\n context.maybeInsertedRow = -1;\n }\n};\noop.inherits(CstyleBehaviour, Behaviour);\nexports.CstyleBehaviour = CstyleBehaviour;\n\n});\n\nace.define(\"ace/unicode\",[\"require\",\"exports\",\"module\"], function(require, exports, module){\"use strict\";\nvar wordChars = [48, 9, 8, 25, 5, 0, 2, 25, 48, 0, 11, 0, 5, 0, 6, 22, 2, 30, 2, 457, 5, 11, 15, 4, 8, 0, 2, 0, 18, 116, 2, 1, 3, 3, 9, 0, 2, 2, 2, 0, 2, 19, 2, 82, 2, 138, 2, 4, 3, 155, 12, 37, 3, 0, 8, 38, 10, 44, 2, 0, 2, 1, 2, 1, 2, 0, 9, 26, 6, 2, 30, 10, 7, 61, 2, 9, 5, 101, 2, 7, 3, 9, 2, 18, 3, 0, 17, 58, 3, 100, 15, 53, 5, 0, 6, 45, 211, 57, 3, 18, 2, 5, 3, 11, 3, 9, 2, 1, 7, 6, 2, 2, 2, 7, 3, 1, 3, 21, 2, 6, 2, 0, 4, 3, 3, 8, 3, 1, 3, 3, 9, 0, 5, 1, 2, 4, 3, 11, 16, 2, 2, 5, 5, 1, 3, 21, 2, 6, 2, 1, 2, 1, 2, 1, 3, 0, 2, 4, 5, 1, 3, 2, 4, 0, 8, 3, 2, 0, 8, 15, 12, 2, 2, 8, 2, 2, 2, 21, 2, 6, 2, 1, 2, 4, 3, 9, 2, 2, 2, 2, 3, 0, 16, 3, 3, 9, 18, 2, 2, 7, 3, 1, 3, 21, 2, 6, 2, 1, 2, 4, 3, 8, 3, 1, 3, 2, 9, 1, 5, 1, 2, 4, 3, 9, 2, 0, 17, 1, 2, 5, 4, 2, 2, 3, 4, 1, 2, 0, 2, 1, 4, 1, 4, 2, 4, 11, 5, 4, 4, 2, 2, 3, 3, 0, 7, 0, 15, 9, 18, 2, 2, 7, 2, 2, 2, 22, 2, 9, 2, 4, 4, 7, 2, 2, 2, 3, 8, 1, 2, 1, 7, 3, 3, 9, 19, 1, 2, 7, 2, 2, 2, 22, 2, 9, 2, 4, 3, 8, 2, 2, 2, 3, 8, 1, 8, 0, 2, 3, 3, 9, 19, 1, 2, 7, 2, 2, 2, 22, 2, 15, 4, 7, 2, 2, 2, 3, 10, 0, 9, 3, 3, 9, 11, 5, 3, 1, 2, 17, 4, 23, 2, 8, 2, 0, 3, 6, 4, 0, 5, 5, 2, 0, 2, 7, 19, 1, 14, 57, 6, 14, 2, 9, 40, 1, 2, 0, 3, 1, 2, 0, 3, 0, 7, 3, 2, 6, 2, 2, 2, 0, 2, 0, 3, 1, 2, 12, 2, 2, 3, 4, 2, 0, 2, 5, 3, 9, 3, 1, 35, 0, 24, 1, 7, 9, 12, 0, 2, 0, 2, 0, 5, 9, 2, 35, 5, 19, 2, 5, 5, 7, 2, 35, 10, 0, 58, 73, 7, 77, 3, 37, 11, 42, 2, 0, 4, 328, 2, 3, 3, 6, 2, 0, 2, 3, 3, 40, 2, 3, 3, 32, 2, 3, 3, 6, 2, 0, 2, 3, 3, 14, 2, 56, 2, 3, 3, 66, 5, 0, 33, 15, 17, 84, 13, 619, 3, 16, 2, 25, 6, 74, 22, 12, 2, 6, 12, 20, 12, 19, 13, 12, 2, 2, 2, 1, 13, 51, 3, 29, 4, 0, 5, 1, 3, 9, 34, 2, 3, 9, 7, 87, 9, 42, 6, 69, 11, 28, 4, 11, 5, 11, 11, 39, 3, 4, 12, 43, 5, 25, 7, 10, 38, 27, 5, 62, 2, 28, 3, 10, 7, 9, 14, 0, 89, 75, 5, 9, 18, 8, 13, 42, 4, 11, 71, 55, 9, 9, 4, 48, 83, 2, 2, 30, 14, 230, 23, 280, 3, 5, 3, 37, 3, 5, 3, 7, 2, 0, 2, 0, 2, 0, 2, 30, 3, 52, 2, 6, 2, 0, 4, 2, 2, 6, 4, 3, 3, 5, 5, 12, 6, 2, 2, 6, 67, 1, 20, 0, 29, 0, 14, 0, 17, 4, 60, 12, 5, 0, 4, 11, 18, 0, 5, 0, 3, 9, 2, 0, 4, 4, 7, 0, 2, 0, 2, 0, 2, 3, 2, 10, 3, 3, 6, 4, 5, 0, 53, 1, 2684, 46, 2, 46, 2, 132, 7, 6, 15, 37, 11, 53, 10, 0, 17, 22, 10, 6, 2, 6, 2, 6, 2, 6, 2, 6, 2, 6, 2, 6, 2, 6, 2, 31, 48, 0, 470, 1, 36, 5, 2, 4, 6, 1, 5, 85, 3, 1, 3, 2, 2, 89, 2, 3, 6, 40, 4, 93, 18, 23, 57, 15, 513, 6581, 75, 20939, 53, 1164, 68, 45, 3, 268, 4, 27, 21, 31, 3, 13, 13, 1, 2, 24, 9, 69, 11, 1, 38, 8, 3, 102, 3, 1, 111, 44, 25, 51, 13, 68, 12, 9, 7, 23, 4, 0, 5, 45, 3, 35, 13, 28, 4, 64, 15, 10, 39, 54, 10, 13, 3, 9, 7, 22, 4, 1, 5, 66, 25, 2, 227, 42, 2, 1, 3, 9, 7, 11171, 13, 22, 5, 48, 8453, 301, 3, 61, 3, 105, 39, 6, 13, 4, 6, 11, 2, 12, 2, 4, 2, 0, 2, 1, 2, 1, 2, 107, 34, 362, 19, 63, 3, 53, 41, 11, 5, 15, 17, 6, 13, 1, 25, 2, 33, 4, 2, 134, 20, 9, 8, 25, 5, 0, 2, 25, 12, 88, 4, 5, 3, 5, 3, 5, 3, 2];\nvar code = 0;\nvar str = [];\nfor (var i = 0; i < wordChars.length; i += 2) {\n str.push(code += wordChars[i]);\n if (wordChars[i + 1])\n str.push(45, code += wordChars[i + 1]);\n}\nexports.wordChars = String.fromCharCode.apply(null, str);\n\n});\n\nace.define(\"ace/mode/text\",[\"require\",\"exports\",\"module\",\"ace/config\",\"ace/tokenizer\",\"ace/mode/text_highlight_rules\",\"ace/mode/behaviour/cstyle\",\"ace/unicode\",\"ace/lib/lang\",\"ace/token_iterator\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar config = require(\"../config\");\nvar Tokenizer = require(\"../tokenizer\").Tokenizer;\nvar TextHighlightRules = require(\"./text_highlight_rules\").TextHighlightRules;\nvar CstyleBehaviour = require(\"./behaviour/cstyle\").CstyleBehaviour;\nvar unicode = require(\"../unicode\");\nvar lang = require(\"../lib/lang\");\nvar TokenIterator = require(\"../token_iterator\").TokenIterator;\nvar Range = require(\"../range\").Range;\nvar Mode = function () {\n this.HighlightRules = TextHighlightRules;\n};\n(function () {\n this.$defaultBehaviour = new CstyleBehaviour();\n this.tokenRe = new RegExp(\"^[\" + unicode.wordChars + \"\\\\$_]+\", \"g\");\n this.nonTokenRe = new RegExp(\"^(?:[^\" + unicode.wordChars + \"\\\\$_]|\\\\s])+\", \"g\");\n this.getTokenizer = function () {\n if (!this.$tokenizer) {\n this.$highlightRules = this.$highlightRules || new this.HighlightRules(this.$highlightRuleConfig);\n this.$tokenizer = new Tokenizer(this.$highlightRules.getRules());\n }\n return this.$tokenizer;\n };\n this.lineCommentStart = \"\";\n this.blockComment = \"\";\n this.toggleCommentLines = function (state, session, startRow, endRow) {\n var doc = session.doc;\n var ignoreBlankLines = true;\n var shouldRemove = true;\n var minIndent = Infinity;\n var tabSize = session.getTabSize();\n var insertAtTabStop = false;\n if (!this.lineCommentStart) {\n if (!this.blockComment)\n return false;\n var lineCommentStart = this.blockComment.start;\n var lineCommentEnd = this.blockComment.end;\n var regexpStart = new RegExp(\"^(\\\\s*)(?:\" + lang.escapeRegExp(lineCommentStart) + \")\");\n var regexpEnd = new RegExp(\"(?:\" + lang.escapeRegExp(lineCommentEnd) + \")\\\\s*$\");\n var comment = function (line, i) {\n if (testRemove(line, i))\n return;\n if (!ignoreBlankLines || /\\S/.test(line)) {\n doc.insertInLine({ row: i, column: line.length }, lineCommentEnd);\n doc.insertInLine({ row: i, column: minIndent }, lineCommentStart);\n }\n };\n var uncomment = function (line, i) {\n var m;\n if (m = line.match(regexpEnd))\n doc.removeInLine(i, line.length - m[0].length, line.length);\n if (m = line.match(regexpStart))\n doc.removeInLine(i, m[1].length, m[0].length);\n };\n var testRemove = function (line, row) {\n if (regexpStart.test(line))\n return true;\n var tokens = session.getTokens(row);\n for (var i = 0; i < tokens.length; i++) {\n if (tokens[i].type === \"comment\")\n return true;\n }\n };\n }\n else {\n if (Array.isArray(this.lineCommentStart)) {\n var regexpStart = this.lineCommentStart.map(lang.escapeRegExp).join(\"|\");\n var lineCommentStart = this.lineCommentStart[0];\n }\n else {\n var regexpStart = lang.escapeRegExp(this.lineCommentStart);\n var lineCommentStart = this.lineCommentStart;\n }\n regexpStart = new RegExp(\"^(\\\\s*)(?:\" + regexpStart + \") ?\");\n insertAtTabStop = session.getUseSoftTabs();\n var uncomment = function (line, i) {\n var m = line.match(regexpStart);\n if (!m)\n return;\n var start = m[1].length, end = m[0].length;\n if (!shouldInsertSpace(line, start, end) && m[0][end - 1] == \" \")\n end--;\n doc.removeInLine(i, start, end);\n };\n var commentWithSpace = lineCommentStart + \" \";\n var comment = function (line, i) {\n if (!ignoreBlankLines || /\\S/.test(line)) {\n if (shouldInsertSpace(line, minIndent, minIndent))\n doc.insertInLine({ row: i, column: minIndent }, commentWithSpace);\n else\n doc.insertInLine({ row: i, column: minIndent }, lineCommentStart);\n }\n };\n var testRemove = function (line, i) {\n return regexpStart.test(line);\n };\n var shouldInsertSpace = function (line, before, after) {\n var spaces = 0;\n while (before-- && line.charAt(before) == \" \")\n spaces++;\n if (spaces % tabSize != 0)\n return false;\n var spaces = 0;\n while (line.charAt(after++) == \" \")\n spaces++;\n if (tabSize > 2)\n return spaces % tabSize != tabSize - 1;\n else\n return spaces % tabSize == 0;\n };\n }\n function iter(fun) {\n for (var i = startRow; i <= endRow; i++)\n fun(doc.getLine(i), i);\n }\n var minEmptyLength = Infinity;\n iter(function (line, i) {\n var indent = line.search(/\\S/);\n if (indent !== -1) {\n if (indent < minIndent)\n minIndent = indent;\n if (shouldRemove && !testRemove(line, i))\n shouldRemove = false;\n }\n else if (minEmptyLength > line.length) {\n minEmptyLength = line.length;\n }\n });\n if (minIndent == Infinity) {\n minIndent = minEmptyLength;\n ignoreBlankLines = false;\n shouldRemove = false;\n }\n if (insertAtTabStop && minIndent % tabSize != 0)\n minIndent = Math.floor(minIndent / tabSize) * tabSize;\n iter(shouldRemove ? uncomment : comment);\n };\n this.toggleBlockComment = function (state, session, range, cursor) {\n var comment = this.blockComment;\n if (!comment)\n return;\n if (!comment.start && comment[0])\n comment = comment[0];\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n var token = iterator.getCurrentToken();\n var sel = session.selection;\n var initialRange = session.selection.toOrientedRange();\n var startRow, colDiff;\n if (token && /comment/.test(token.type)) {\n var startRange, endRange;\n while (token && /comment/.test(token.type)) {\n var i = token.value.indexOf(comment.start);\n if (i != -1) {\n var row = iterator.getCurrentTokenRow();\n var column = iterator.getCurrentTokenColumn() + i;\n startRange = new Range(row, column, row, column + comment.start.length);\n break;\n }\n token = iterator.stepBackward();\n }\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n var token = iterator.getCurrentToken();\n while (token && /comment/.test(token.type)) {\n var i = token.value.indexOf(comment.end);\n if (i != -1) {\n var row = iterator.getCurrentTokenRow();\n var column = iterator.getCurrentTokenColumn() + i;\n endRange = new Range(row, column, row, column + comment.end.length);\n break;\n }\n token = iterator.stepForward();\n }\n if (endRange)\n session.remove(endRange);\n if (startRange) {\n session.remove(startRange);\n startRow = startRange.start.row;\n colDiff = -comment.start.length;\n }\n }\n else {\n colDiff = comment.start.length;\n startRow = range.start.row;\n session.insert(range.end, comment.end);\n session.insert(range.start, comment.start);\n }\n if (initialRange.start.row == startRow)\n initialRange.start.column += colDiff;\n if (initialRange.end.row == startRow)\n initialRange.end.column += colDiff;\n session.selection.fromOrientedRange(initialRange);\n };\n this.getNextLineIndent = function (state, line, tab) {\n return this.$getIndent(line);\n };\n this.checkOutdent = function (state, line, input) {\n return false;\n };\n this.autoOutdent = function (state, doc, row) {\n };\n this.$getIndent = function (line) {\n return line.match(/^\\s*/)[0];\n };\n this.createWorker = function (session) {\n return null;\n };\n this.createModeDelegates = function (mapping) {\n this.$embeds = [];\n this.$modes = {};\n for (var i in mapping) {\n if (mapping[i]) {\n var Mode = mapping[i];\n var id = Mode.prototype.$id;\n var mode = config.$modes[id];\n if (!mode)\n config.$modes[id] = mode = new Mode();\n if (!config.$modes[i])\n config.$modes[i] = mode;\n this.$embeds.push(i);\n this.$modes[i] = mode;\n }\n }\n var delegations = [\"toggleBlockComment\", \"toggleCommentLines\", \"getNextLineIndent\",\n \"checkOutdent\", \"autoOutdent\", \"transformAction\", \"getCompletions\"];\n for (var i = 0; i < delegations.length; i++) {\n (function (scope) {\n var functionName = delegations[i];\n var defaultHandler = scope[functionName];\n scope[delegations[i]] = function () {\n return this.$delegator(functionName, arguments, defaultHandler);\n };\n }(this));\n }\n };\n this.$delegator = function (method, args, defaultHandler) {\n var state = args[0] || \"start\";\n if (typeof state != \"string\") {\n if (Array.isArray(state[2])) {\n var language = state[2][state[2].length - 1];\n var mode = this.$modes[language];\n if (mode)\n return mode[method].apply(mode, [state[1]].concat([].slice.call(args, 1)));\n }\n state = state[0] || \"start\";\n }\n for (var i = 0; i < this.$embeds.length; i++) {\n if (!this.$modes[this.$embeds[i]])\n continue;\n var split = state.split(this.$embeds[i]);\n if (!split[0] && split[1]) {\n args[0] = split[1];\n var mode = this.$modes[this.$embeds[i]];\n return mode[method].apply(mode, args);\n }\n }\n var ret = defaultHandler.apply(this, args);\n return defaultHandler ? ret : undefined;\n };\n this.transformAction = function (state, action, editor, session, param) {\n if (this.$behaviour) {\n var behaviours = this.$behaviour.getBehaviours();\n for (var key in behaviours) {\n if (behaviours[key][action]) {\n var ret = behaviours[key][action].apply(this, arguments);\n if (ret) {\n return ret;\n }\n }\n }\n }\n };\n this.getKeywords = function (append) {\n if (!this.completionKeywords) {\n var rules = this.$tokenizer.rules;\n var completionKeywords = [];\n for (var rule in rules) {\n var ruleItr = rules[rule];\n for (var r = 0, l = ruleItr.length; r < l; r++) {\n if (typeof ruleItr[r].token === \"string\") {\n if (/keyword|support|storage/.test(ruleItr[r].token))\n completionKeywords.push(ruleItr[r].regex);\n }\n else if (typeof ruleItr[r].token === \"object\") {\n for (var a = 0, aLength = ruleItr[r].token.length; a < aLength; a++) {\n if (/keyword|support|storage/.test(ruleItr[r].token[a])) {\n var rule = ruleItr[r].regex.match(/\\(.+?\\)/g)[a];\n completionKeywords.push(rule.substr(1, rule.length - 2));\n }\n }\n }\n }\n }\n this.completionKeywords = completionKeywords;\n }\n if (!append)\n return this.$keywordList;\n return completionKeywords.concat(this.$keywordList || []);\n };\n this.$createKeywordList = function () {\n if (!this.$highlightRules)\n this.getTokenizer();\n return this.$keywordList = this.$highlightRules.$keywordList || [];\n };\n this.getCompletions = function (state, session, pos, prefix) {\n var keywords = this.$keywordList || this.$createKeywordList();\n return keywords.map(function (word) {\n return {\n name: word,\n value: word,\n score: 0,\n meta: \"keyword\"\n };\n });\n };\n this.$id = \"ace/mode/text\";\n}).call(Mode.prototype);\nexports.Mode = Mode;\n\n});\n\nace.define(\"ace/apply_delta\",[\"require\",\"exports\",\"module\"], function(require, exports, module){\"use strict\";\nfunction throwDeltaError(delta, errorText) {\n console.log(\"Invalid Delta:\", delta);\n throw \"Invalid Delta: \" + errorText;\n}\nfunction positionInDocument(docLines, position) {\n return position.row >= 0 && position.row < docLines.length &&\n position.column >= 0 && position.column <= docLines[position.row].length;\n}\nfunction validateDelta(docLines, delta) {\n if (delta.action != \"insert\" && delta.action != \"remove\")\n throwDeltaError(delta, \"delta.action must be 'insert' or 'remove'\");\n if (!(delta.lines instanceof Array))\n throwDeltaError(delta, \"delta.lines must be an Array\");\n if (!delta.start || !delta.end)\n throwDeltaError(delta, \"delta.start/end must be an present\");\n var start = delta.start;\n if (!positionInDocument(docLines, delta.start))\n throwDeltaError(delta, \"delta.start must be contained in document\");\n var end = delta.end;\n if (delta.action == \"remove\" && !positionInDocument(docLines, end))\n throwDeltaError(delta, \"delta.end must contained in document for 'remove' actions\");\n var numRangeRows = end.row - start.row;\n var numRangeLastLineChars = (end.column - (numRangeRows == 0 ? start.column : 0));\n if (numRangeRows != delta.lines.length - 1 || delta.lines[numRangeRows].length != numRangeLastLineChars)\n throwDeltaError(delta, \"delta.range must match delta lines\");\n}\nexports.applyDelta = function (docLines, delta, doNotValidate) {\n var row = delta.start.row;\n var startColumn = delta.start.column;\n var line = docLines[row] || \"\";\n switch (delta.action) {\n case \"insert\":\n var lines = delta.lines;\n if (lines.length === 1) {\n docLines[row] = line.substring(0, startColumn) + delta.lines[0] + line.substring(startColumn);\n }\n else {\n var args = [row, 1].concat(delta.lines);\n docLines.splice.apply(docLines, args);\n docLines[row] = line.substring(0, startColumn) + docLines[row];\n docLines[row + delta.lines.length - 1] += line.substring(startColumn);\n }\n break;\n case \"remove\":\n var endColumn = delta.end.column;\n var endRow = delta.end.row;\n if (row === endRow) {\n docLines[row] = line.substring(0, startColumn) + line.substring(endColumn);\n }\n else {\n docLines.splice(row, endRow - row + 1, line.substring(0, startColumn) + docLines[endRow].substring(endColumn));\n }\n break;\n }\n};\n\n});\n\nace.define(\"ace/anchor\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/event_emitter\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"./lib/oop\");\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar Anchor = /** @class */ (function () {\n function Anchor(doc, row, column) {\n this.$onChange = this.onChange.bind(this);\n this.attach(doc);\n if (typeof column == \"undefined\")\n this.setPosition(row.row, row.column);\n else\n this.setPosition(row, column);\n }\n Anchor.prototype.getPosition = function () {\n return this.$clipPositionToDocument(this.row, this.column);\n };\n Anchor.prototype.getDocument = function () {\n return this.document;\n };\n Anchor.prototype.onChange = function (delta) {\n if (delta.start.row == delta.end.row && delta.start.row != this.row)\n return;\n if (delta.start.row > this.row)\n return;\n var point = $getTransformedPoint(delta, { row: this.row, column: this.column }, this.$insertRight);\n this.setPosition(point.row, point.column, true);\n };\n Anchor.prototype.setPosition = function (row, column, noClip) {\n var pos;\n if (noClip) {\n pos = {\n row: row,\n column: column\n };\n }\n else {\n pos = this.$clipPositionToDocument(row, column);\n }\n if (this.row == pos.row && this.column == pos.column)\n return;\n var old = {\n row: this.row,\n column: this.column\n };\n this.row = pos.row;\n this.column = pos.column;\n this._signal(\"change\", {\n old: old,\n value: pos\n });\n };\n Anchor.prototype.detach = function () {\n this.document.off(\"change\", this.$onChange);\n };\n Anchor.prototype.attach = function (doc) {\n this.document = doc || this.document;\n this.document.on(\"change\", this.$onChange);\n };\n Anchor.prototype.$clipPositionToDocument = function (row, column) {\n var pos = {};\n if (row >= this.document.getLength()) {\n pos.row = Math.max(0, this.document.getLength() - 1);\n pos.column = this.document.getLine(pos.row).length;\n }\n else if (row < 0) {\n pos.row = 0;\n pos.column = 0;\n }\n else {\n pos.row = row;\n pos.column = Math.min(this.document.getLine(pos.row).length, Math.max(0, column));\n }\n if (column < 0)\n pos.column = 0;\n return pos;\n };\n return Anchor;\n}());\nAnchor.prototype.$insertRight = false;\noop.implement(Anchor.prototype, EventEmitter);\nfunction $pointsInOrder(point1, point2, equalPointsInOrder) {\n var bColIsAfter = equalPointsInOrder ? point1.column <= point2.column : point1.column < point2.column;\n return (point1.row < point2.row) || (point1.row == point2.row && bColIsAfter);\n}\nfunction $getTransformedPoint(delta, point, moveIfEqual) {\n var deltaIsInsert = delta.action == \"insert\";\n var deltaRowShift = (deltaIsInsert ? 1 : -1) * (delta.end.row - delta.start.row);\n var deltaColShift = (deltaIsInsert ? 1 : -1) * (delta.end.column - delta.start.column);\n var deltaStart = delta.start;\n var deltaEnd = deltaIsInsert ? deltaStart : delta.end; // Collapse insert range.\n if ($pointsInOrder(point, deltaStart, moveIfEqual)) {\n return {\n row: point.row,\n column: point.column\n };\n }\n if ($pointsInOrder(deltaEnd, point, !moveIfEqual)) {\n return {\n row: point.row + deltaRowShift,\n column: point.column + (point.row == deltaEnd.row ? deltaColShift : 0)\n };\n }\n return {\n row: deltaStart.row,\n column: deltaStart.column\n };\n}\nexports.Anchor = Anchor;\n\n});\n\nace.define(\"ace/document\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/apply_delta\",\"ace/lib/event_emitter\",\"ace/range\",\"ace/anchor\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"./lib/oop\");\nvar applyDelta = require(\"./apply_delta\").applyDelta;\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar Range = require(\"./range\").Range;\nvar Anchor = require(\"./anchor\").Anchor;\nvar Document = /** @class */ (function () {\n function Document(textOrLines) {\n this.$lines = [\"\"];\n if (textOrLines.length === 0) {\n this.$lines = [\"\"];\n }\n else if (Array.isArray(textOrLines)) {\n this.insertMergedLines({ row: 0, column: 0 }, textOrLines);\n }\n else {\n this.insert({ row: 0, column: 0 }, textOrLines);\n }\n }\n Document.prototype.setValue = function (text) {\n var len = this.getLength() - 1;\n this.remove(new Range(0, 0, len, this.getLine(len).length));\n this.insert({ row: 0, column: 0 }, text || \"\");\n };\n Document.prototype.getValue = function () {\n return this.getAllLines().join(this.getNewLineCharacter());\n };\n Document.prototype.createAnchor = function (row, column) {\n return new Anchor(this, row, column);\n };\n Document.prototype.$detectNewLine = function (text) {\n var match = text.match(/^.*?(\\r\\n|\\r|\\n)/m);\n this.$autoNewLine = match ? match[1] : \"\\n\";\n this._signal(\"changeNewLineMode\");\n };\n Document.prototype.getNewLineCharacter = function () {\n switch (this.$newLineMode) {\n case \"windows\":\n return \"\\r\\n\";\n case \"unix\":\n return \"\\n\";\n default:\n return this.$autoNewLine || \"\\n\";\n }\n };\n Document.prototype.setNewLineMode = function (newLineMode) {\n if (this.$newLineMode === newLineMode)\n return;\n this.$newLineMode = newLineMode;\n this._signal(\"changeNewLineMode\");\n };\n Document.prototype.getNewLineMode = function () {\n return this.$newLineMode;\n };\n Document.prototype.isNewLine = function (text) {\n return (text == \"\\r\\n\" || text == \"\\r\" || text == \"\\n\");\n };\n Document.prototype.getLine = function (row) {\n return this.$lines[row] || \"\";\n };\n Document.prototype.getLines = function (firstRow, lastRow) {\n return this.$lines.slice(firstRow, lastRow + 1);\n };\n Document.prototype.getAllLines = function () {\n return this.getLines(0, this.getLength());\n };\n Document.prototype.getLength = function () {\n return this.$lines.length;\n };\n Document.prototype.getTextRange = function (range) {\n return this.getLinesForRange(range).join(this.getNewLineCharacter());\n };\n Document.prototype.getLinesForRange = function (range) {\n var lines;\n if (range.start.row === range.end.row) {\n lines = [this.getLine(range.start.row).substring(range.start.column, range.end.column)];\n }\n else {\n lines = this.getLines(range.start.row, range.end.row);\n lines[0] = (lines[0] || \"\").substring(range.start.column);\n var l = lines.length - 1;\n if (range.end.row - range.start.row == l)\n lines[l] = lines[l].substring(0, range.end.column);\n }\n return lines;\n };\n Document.prototype.insertLines = function (row, lines) {\n console.warn(\"Use of document.insertLines is deprecated. Use the insertFullLines method instead.\");\n return this.insertFullLines(row, lines);\n };\n Document.prototype.removeLines = function (firstRow, lastRow) {\n console.warn(\"Use of document.removeLines is deprecated. Use the removeFullLines method instead.\");\n return this.removeFullLines(firstRow, lastRow);\n };\n Document.prototype.insertNewLine = function (position) {\n console.warn(\"Use of document.insertNewLine is deprecated. Use insertMergedLines(position, ['', '']) instead.\");\n return this.insertMergedLines(position, [\"\", \"\"]);\n };\n Document.prototype.insert = function (position, text) {\n if (this.getLength() <= 1)\n this.$detectNewLine(text);\n return this.insertMergedLines(position, this.$split(text));\n };\n Document.prototype.insertInLine = function (position, text) {\n var start = this.clippedPos(position.row, position.column);\n var end = this.pos(position.row, position.column + text.length);\n this.applyDelta({\n start: start,\n end: end,\n action: \"insert\",\n lines: [text]\n }, true);\n return this.clonePos(end);\n };\n Document.prototype.clippedPos = function (row, column) {\n var length = this.getLength();\n if (row === undefined) {\n row = length;\n }\n else if (row < 0) {\n row = 0;\n }\n else if (row >= length) {\n row = length - 1;\n column = undefined;\n }\n var line = this.getLine(row);\n if (column == undefined)\n column = line.length;\n column = Math.min(Math.max(column, 0), line.length);\n return { row: row, column: column };\n };\n Document.prototype.clonePos = function (pos) {\n return { row: pos.row, column: pos.column };\n };\n Document.prototype.pos = function (row, column) {\n return { row: row, column: column };\n };\n Document.prototype.$clipPosition = function (position) {\n var length = this.getLength();\n if (position.row >= length) {\n position.row = Math.max(0, length - 1);\n position.column = this.getLine(length - 1).length;\n }\n else {\n position.row = Math.max(0, position.row);\n position.column = Math.min(Math.max(position.column, 0), this.getLine(position.row).length);\n }\n return position;\n };\n Document.prototype.insertFullLines = function (row, lines) {\n row = Math.min(Math.max(row, 0), this.getLength());\n var column = 0;\n if (row < this.getLength()) {\n lines = lines.concat([\"\"]);\n column = 0;\n }\n else {\n lines = [\"\"].concat(lines);\n row--;\n column = this.$lines[row].length;\n }\n this.insertMergedLines({ row: row, column: column }, lines);\n };\n Document.prototype.insertMergedLines = function (position, lines) {\n var start = this.clippedPos(position.row, position.column);\n var end = {\n row: start.row + lines.length - 1,\n column: (lines.length == 1 ? start.column : 0) + lines[lines.length - 1].length\n };\n this.applyDelta({\n start: start,\n end: end,\n action: \"insert\",\n lines: lines\n });\n return this.clonePos(end);\n };\n Document.prototype.remove = function (range) {\n var start = this.clippedPos(range.start.row, range.start.column);\n var end = this.clippedPos(range.end.row, range.end.column);\n this.applyDelta({\n start: start,\n end: end,\n action: \"remove\",\n lines: this.getLinesForRange({ start: start, end: end })\n });\n return this.clonePos(start);\n };\n Document.prototype.removeInLine = function (row, startColumn, endColumn) {\n var start = this.clippedPos(row, startColumn);\n var end = this.clippedPos(row, endColumn);\n this.applyDelta({\n start: start,\n end: end,\n action: \"remove\",\n lines: this.getLinesForRange({ start: start, end: end })\n }, true);\n return this.clonePos(start);\n };\n Document.prototype.removeFullLines = function (firstRow, lastRow) {\n firstRow = Math.min(Math.max(0, firstRow), this.getLength() - 1);\n lastRow = Math.min(Math.max(0, lastRow), this.getLength() - 1);\n var deleteFirstNewLine = lastRow == this.getLength() - 1 && firstRow > 0;\n var deleteLastNewLine = lastRow < this.getLength() - 1;\n var startRow = (deleteFirstNewLine ? firstRow - 1 : firstRow);\n var startCol = (deleteFirstNewLine ? this.getLine(startRow).length : 0);\n var endRow = (deleteLastNewLine ? lastRow + 1 : lastRow);\n var endCol = (deleteLastNewLine ? 0 : this.getLine(endRow).length);\n var range = new Range(startRow, startCol, endRow, endCol);\n var deletedLines = this.$lines.slice(firstRow, lastRow + 1);\n this.applyDelta({\n start: range.start,\n end: range.end,\n action: \"remove\",\n lines: this.getLinesForRange(range)\n });\n return deletedLines;\n };\n Document.prototype.removeNewLine = function (row) {\n if (row < this.getLength() - 1 && row >= 0) {\n this.applyDelta({\n start: this.pos(row, this.getLine(row).length),\n end: this.pos(row + 1, 0),\n action: \"remove\",\n lines: [\"\", \"\"]\n });\n }\n };\n Document.prototype.replace = function (range, text) {\n if (!(range instanceof Range))\n range = Range.fromPoints(range.start, range.end);\n if (text.length === 0 && range.isEmpty())\n return range.start;\n if (text == this.getTextRange(range))\n return range.end;\n this.remove(range);\n var end;\n if (text) {\n end = this.insert(range.start, text);\n }\n else {\n end = range.start;\n }\n return end;\n };\n Document.prototype.applyDeltas = function (deltas) {\n for (var i = 0; i < deltas.length; i++) {\n this.applyDelta(deltas[i]);\n }\n };\n Document.prototype.revertDeltas = function (deltas) {\n for (var i = deltas.length - 1; i >= 0; i--) {\n this.revertDelta(deltas[i]);\n }\n };\n Document.prototype.applyDelta = function (delta, doNotValidate) {\n var isInsert = delta.action == \"insert\";\n if (isInsert ? delta.lines.length <= 1 && !delta.lines[0]\n : !Range.comparePoints(delta.start, delta.end)) {\n return;\n }\n if (isInsert && delta.lines.length > 20000) {\n this.$splitAndapplyLargeDelta(delta, 20000);\n }\n else {\n applyDelta(this.$lines, delta, doNotValidate);\n this._signal(\"change\", delta);\n }\n };\n Document.prototype.$safeApplyDelta = function (delta) {\n var docLength = this.$lines.length;\n if (delta.action == \"remove\" && delta.start.row < docLength && delta.end.row < docLength\n || delta.action == \"insert\" && delta.start.row <= docLength) {\n this.applyDelta(delta);\n }\n };\n Document.prototype.$splitAndapplyLargeDelta = function (delta, MAX) {\n var lines = delta.lines;\n var l = lines.length - MAX + 1;\n var row = delta.start.row;\n var column = delta.start.column;\n for (var from = 0, to = 0; from < l; from = to) {\n to += MAX - 1;\n var chunk = lines.slice(from, to);\n chunk.push(\"\");\n this.applyDelta({\n start: this.pos(row + from, column),\n end: this.pos(row + to, column = 0),\n action: delta.action,\n lines: chunk\n }, true);\n }\n delta.lines = lines.slice(from);\n delta.start.row = row + from;\n delta.start.column = column;\n this.applyDelta(delta, true);\n };\n Document.prototype.revertDelta = function (delta) {\n this.$safeApplyDelta({\n start: this.clonePos(delta.start),\n end: this.clonePos(delta.end),\n action: (delta.action == \"insert\" ? \"remove\" : \"insert\"),\n lines: delta.lines.slice()\n });\n };\n Document.prototype.indexToPosition = function (index, startRow) {\n var lines = this.$lines || this.getAllLines();\n var newlineLength = this.getNewLineCharacter().length;\n for (var i = startRow || 0, l = lines.length; i < l; i++) {\n index -= lines[i].length + newlineLength;\n if (index < 0)\n return { row: i, column: index + lines[i].length + newlineLength };\n }\n return { row: l - 1, column: index + lines[l - 1].length + newlineLength };\n };\n Document.prototype.positionToIndex = function (pos, startRow) {\n var lines = this.$lines || this.getAllLines();\n var newlineLength = this.getNewLineCharacter().length;\n var index = 0;\n var row = Math.min(pos.row, lines.length);\n for (var i = startRow || 0; i < row; ++i)\n index += lines[i].length + newlineLength;\n return index + pos.column;\n };\n Document.prototype.$split = function (text) {\n return text.split(/\\r\\n|\\r|\\n/);\n };\n return Document;\n}());\nDocument.prototype.$autoNewLine = \"\";\nDocument.prototype.$newLineMode = \"auto\";\noop.implement(Document.prototype, EventEmitter);\nexports.Document = Document;\n\n});\n\nace.define(\"ace/background_tokenizer\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/event_emitter\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"./lib/oop\");\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar BackgroundTokenizer = /** @class */ (function () {\n function BackgroundTokenizer(tokenizer, editor) {\n this.running = false;\n this.lines = [];\n this.states = [];\n this.currentLine = 0;\n this.tokenizer = tokenizer;\n var self = this;\n this.$worker = function () {\n if (!self.running) {\n return;\n }\n var workerStart = new Date();\n var currentLine = self.currentLine;\n var endLine = -1;\n var doc = self.doc;\n var startLine = currentLine;\n while (self.lines[currentLine])\n currentLine++;\n var len = doc.getLength();\n var processedLines = 0;\n self.running = false;\n while (currentLine < len) {\n self.$tokenizeRow(currentLine);\n endLine = currentLine;\n do {\n currentLine++;\n } while (self.lines[currentLine]);\n processedLines++;\n if ((processedLines % 5 === 0) && (new Date() - workerStart) > 20) {\n self.running = setTimeout(self.$worker, 20);\n break;\n }\n }\n self.currentLine = currentLine;\n if (endLine == -1)\n endLine = currentLine;\n if (startLine <= endLine)\n self.fireUpdateEvent(startLine, endLine);\n };\n }\n BackgroundTokenizer.prototype.setTokenizer = function (tokenizer) {\n this.tokenizer = tokenizer;\n this.lines = [];\n this.states = [];\n this.start(0);\n };\n BackgroundTokenizer.prototype.setDocument = function (doc) {\n this.doc = doc;\n this.lines = [];\n this.states = [];\n this.stop();\n };\n BackgroundTokenizer.prototype.fireUpdateEvent = function (firstRow, lastRow) {\n var data = {\n first: firstRow,\n last: lastRow\n };\n this._signal(\"update\", { data: data });\n };\n BackgroundTokenizer.prototype.start = function (startRow) {\n this.currentLine = Math.min(startRow || 0, this.currentLine, this.doc.getLength());\n this.lines.splice(this.currentLine, this.lines.length);\n this.states.splice(this.currentLine, this.states.length);\n this.stop();\n this.running = setTimeout(this.$worker, 700);\n };\n BackgroundTokenizer.prototype.scheduleStart = function () {\n if (!this.running)\n this.running = setTimeout(this.$worker, 700);\n };\n BackgroundTokenizer.prototype.$updateOnChange = function (delta) {\n var startRow = delta.start.row;\n var len = delta.end.row - startRow;\n if (len === 0) {\n this.lines[startRow] = null;\n }\n else if (delta.action == \"remove\") {\n this.lines.splice(startRow, len + 1, null);\n this.states.splice(startRow, len + 1, null);\n }\n else {\n var args = Array(len + 1);\n args.unshift(startRow, 1);\n this.lines.splice.apply(this.lines, args);\n this.states.splice.apply(this.states, args);\n }\n this.currentLine = Math.min(startRow, this.currentLine, this.doc.getLength());\n this.stop();\n };\n BackgroundTokenizer.prototype.stop = function () {\n if (this.running)\n clearTimeout(this.running);\n this.running = false;\n };\n BackgroundTokenizer.prototype.getTokens = function (row) {\n return this.lines[row] || this.$tokenizeRow(row);\n };\n BackgroundTokenizer.prototype.getState = function (row) {\n if (this.currentLine == row)\n this.$tokenizeRow(row);\n return this.states[row] || \"start\";\n };\n BackgroundTokenizer.prototype.$tokenizeRow = function (row) {\n var line = this.doc.getLine(row);\n var state = this.states[row - 1];\n var data = this.tokenizer.getLineTokens(line, state, row);\n if (this.states[row] + \"\" !== data.state + \"\") {\n this.states[row] = data.state;\n this.lines[row + 1] = null;\n if (this.currentLine > row + 1)\n this.currentLine = row + 1;\n }\n else if (this.currentLine == row) {\n this.currentLine = row + 1;\n }\n return this.lines[row] = data.tokens;\n };\n BackgroundTokenizer.prototype.cleanup = function () {\n this.running = false;\n this.lines = [];\n this.states = [];\n this.currentLine = 0;\n this.removeAllListeners();\n };\n return BackgroundTokenizer;\n}());\noop.implement(BackgroundTokenizer.prototype, EventEmitter);\nexports.BackgroundTokenizer = BackgroundTokenizer;\n\n});\n\nace.define(\"ace/search_highlight\",[\"require\",\"exports\",\"module\",\"ace/lib/lang\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar lang = require(\"./lib/lang\");\nvar Range = require(\"./range\").Range;\nvar SearchHighlight = /** @class */ (function () {\n function SearchHighlight(regExp, clazz, type) {\n if (type === void 0) { type = \"text\"; }\n this.setRegexp(regExp);\n this.clazz = clazz;\n this.type = type;\n }\n SearchHighlight.prototype.setRegexp = function (regExp) {\n if (this.regExp + \"\" == regExp + \"\")\n return;\n this.regExp = regExp;\n this.cache = [];\n };\n SearchHighlight.prototype.update = function (html, markerLayer, session, config) {\n if (!this.regExp)\n return;\n var start = config.firstRow, end = config.lastRow;\n var renderedMarkerRanges = {};\n for (var i = start; i <= end; i++) {\n var ranges = this.cache[i];\n if (ranges == null) {\n ranges = lang.getMatchOffsets(session.getLine(i), this.regExp);\n if (ranges.length > this.MAX_RANGES)\n ranges = ranges.slice(0, this.MAX_RANGES);\n ranges = ranges.map(function (match) {\n return new Range(i, match.offset, i, match.offset + match.length);\n });\n this.cache[i] = ranges.length ? ranges : \"\";\n }\n for (var j = ranges.length; j--;) {\n var rangeToAddMarkerTo = ranges[j].toScreenRange(session);\n var rangeAsString = rangeToAddMarkerTo.toString();\n if (renderedMarkerRanges[rangeAsString])\n continue;\n renderedMarkerRanges[rangeAsString] = true;\n markerLayer.drawSingleLineMarker(html, rangeToAddMarkerTo, this.clazz, config);\n }\n }\n };\n return SearchHighlight;\n}());\nSearchHighlight.prototype.MAX_RANGES = 500;\nexports.SearchHighlight = SearchHighlight;\n\n});\n\nace.define(\"ace/undomanager\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar UndoManager = /** @class */ (function () {\n function UndoManager() {\n this.$maxRev = 0;\n this.$fromUndo = false;\n this.$undoDepth = Infinity;\n this.reset();\n }\n UndoManager.prototype.addSession = function (session) {\n this.$session = session;\n };\n UndoManager.prototype.add = function (delta, allowMerge, session) {\n if (this.$fromUndo)\n return;\n if (delta == this.$lastDelta)\n return;\n if (!this.$keepRedoStack)\n this.$redoStack.length = 0;\n if (allowMerge === false || !this.lastDeltas) {\n this.lastDeltas = [];\n var undoStackLength = this.$undoStack.length;\n if (undoStackLength > this.$undoDepth - 1) {\n this.$undoStack.splice(0, undoStackLength - this.$undoDepth + 1);\n }\n this.$undoStack.push(this.lastDeltas);\n delta.id = this.$rev = ++this.$maxRev;\n }\n if (delta.action == \"remove\" || delta.action == \"insert\")\n this.$lastDelta = delta;\n this.lastDeltas.push(delta);\n };\n UndoManager.prototype.addSelection = function (selection, rev) {\n this.selections.push({\n value: selection,\n rev: rev || this.$rev\n });\n };\n UndoManager.prototype.startNewGroup = function () {\n this.lastDeltas = null;\n return this.$rev;\n };\n UndoManager.prototype.markIgnored = function (from, to) {\n if (to == null)\n to = this.$rev + 1;\n var stack = this.$undoStack;\n for (var i = stack.length; i--;) {\n var delta = stack[i][0];\n if (delta.id <= from)\n break;\n if (delta.id < to)\n delta.ignore = true;\n }\n this.lastDeltas = null;\n };\n UndoManager.prototype.getSelection = function (rev, after) {\n var stack = this.selections;\n for (var i = stack.length; i--;) {\n var selection = stack[i];\n if (selection.rev < rev) {\n if (after)\n selection = stack[i + 1];\n return selection;\n }\n }\n };\n UndoManager.prototype.getRevision = function () {\n return this.$rev;\n };\n UndoManager.prototype.getDeltas = function (from, to) {\n if (to == null)\n to = this.$rev + 1;\n var stack = this.$undoStack;\n var end = null, start = 0;\n for (var i = stack.length; i--;) {\n var delta = stack[i][0];\n if (delta.id < to && !end)\n end = i + 1;\n if (delta.id <= from) {\n start = i + 1;\n break;\n }\n }\n return stack.slice(start, end);\n };\n UndoManager.prototype.getChangedRanges = function (from, to) {\n if (to == null)\n to = this.$rev + 1;\n };\n UndoManager.prototype.getChangedLines = function (from, to) {\n if (to == null)\n to = this.$rev + 1;\n };\n UndoManager.prototype.undo = function (session, dontSelect) {\n this.lastDeltas = null;\n var stack = this.$undoStack;\n if (!rearrangeUndoStack(stack, stack.length))\n return;\n if (!session)\n session = this.$session;\n if (this.$redoStackBaseRev !== this.$rev && this.$redoStack.length)\n this.$redoStack = [];\n this.$fromUndo = true;\n var deltaSet = stack.pop();\n var undoSelectionRange = null;\n if (deltaSet) {\n undoSelectionRange = session.undoChanges(deltaSet, dontSelect);\n this.$redoStack.push(deltaSet);\n this.$syncRev();\n }\n this.$fromUndo = false;\n return undoSelectionRange;\n };\n UndoManager.prototype.redo = function (session, dontSelect) {\n this.lastDeltas = null;\n if (!session)\n session = this.$session;\n this.$fromUndo = true;\n if (this.$redoStackBaseRev != this.$rev) {\n var diff = this.getDeltas(this.$redoStackBaseRev, this.$rev + 1);\n rebaseRedoStack(this.$redoStack, diff);\n this.$redoStackBaseRev = this.$rev;\n this.$redoStack.forEach(function (x) {\n x[0].id = ++this.$maxRev;\n }, this);\n }\n var deltaSet = this.$redoStack.pop();\n var redoSelectionRange = null;\n if (deltaSet) {\n redoSelectionRange = session.redoChanges(deltaSet, dontSelect);\n this.$undoStack.push(deltaSet);\n this.$syncRev();\n }\n this.$fromUndo = false;\n return redoSelectionRange;\n };\n UndoManager.prototype.$syncRev = function () {\n var stack = this.$undoStack;\n var nextDelta = stack[stack.length - 1];\n var id = nextDelta && nextDelta[0].id || 0;\n this.$redoStackBaseRev = id;\n this.$rev = id;\n };\n UndoManager.prototype.reset = function () {\n this.lastDeltas = null;\n this.$lastDelta = null;\n this.$undoStack = [];\n this.$redoStack = [];\n this.$rev = 0;\n this.mark = 0;\n this.$redoStackBaseRev = this.$rev;\n this.selections = [];\n };\n UndoManager.prototype.canUndo = function () {\n return this.$undoStack.length > 0;\n };\n UndoManager.prototype.canRedo = function () {\n return this.$redoStack.length > 0;\n };\n UndoManager.prototype.bookmark = function (rev) {\n if (rev == undefined)\n rev = this.$rev;\n this.mark = rev;\n };\n UndoManager.prototype.isAtBookmark = function () {\n return this.$rev === this.mark;\n };\n UndoManager.prototype.toJSON = function () {\n return {\n $redoStack: this.$redoStack,\n $undoStack: this.$undoStack\n };\n };\n UndoManager.prototype.fromJSON = function (json) {\n this.reset();\n this.$undoStack = json.$undoStack;\n this.$redoStack = json.$redoStack;\n };\n UndoManager.prototype.$prettyPrint = function (delta) {\n if (delta)\n return stringifyDelta(delta);\n return stringifyDelta(this.$undoStack) + \"\\n---\\n\" + stringifyDelta(this.$redoStack);\n };\n return UndoManager;\n}());\nUndoManager.prototype.hasUndo = UndoManager.prototype.canUndo;\nUndoManager.prototype.hasRedo = UndoManager.prototype.canRedo;\nUndoManager.prototype.isClean = UndoManager.prototype.isAtBookmark;\nUndoManager.prototype.markClean = UndoManager.prototype.bookmark;\nfunction rearrangeUndoStack(stack, pos) {\n for (var i = pos; i--;) {\n var deltaSet = stack[i];\n if (deltaSet && !deltaSet[0].ignore) {\n while (i < pos - 1) {\n var swapped = swapGroups(stack[i], stack[i + 1]);\n stack[i] = swapped[0];\n stack[i + 1] = swapped[1];\n i++;\n }\n return true;\n }\n }\n}\nvar Range = require(\"./range\").Range;\nvar cmp = Range.comparePoints;\nvar comparePoints = Range.comparePoints;\nfunction $updateMarkers(delta) {\n var isInsert = delta.action == \"insert\";\n var start = delta.start;\n var end = delta.end;\n var rowShift = (end.row - start.row) * (isInsert ? 1 : -1);\n var colShift = (end.column - start.column) * (isInsert ? 1 : -1);\n if (isInsert)\n end = start;\n for (var i in this.marks) {\n var point = this.marks[i];\n var cmp = comparePoints(point, start);\n if (cmp < 0) {\n continue; // delta starts after the range\n }\n if (cmp === 0) {\n if (isInsert) {\n if (point.bias == 1) {\n cmp = 1;\n }\n else {\n point.bias == -1;\n continue;\n }\n }\n }\n var cmp2 = isInsert ? cmp : comparePoints(point, end);\n if (cmp2 > 0) {\n point.row += rowShift;\n point.column += point.row == end.row ? colShift : 0;\n continue;\n }\n if (!isInsert && cmp2 <= 0) {\n point.row = start.row;\n point.column = start.column;\n if (cmp2 === 0)\n point.bias = 1;\n }\n }\n}\nfunction clonePos(pos) {\n return { row: pos.row, column: pos.column };\n}\nfunction cloneDelta(d) {\n return {\n start: clonePos(d.start),\n end: clonePos(d.end),\n action: d.action,\n lines: d.lines.slice()\n };\n}\nfunction stringifyDelta(d) {\n d = d || this;\n if (Array.isArray(d)) {\n return d.map(stringifyDelta).join(\"\\n\");\n }\n var type = \"\";\n if (d.action) {\n type = d.action == \"insert\" ? \"+\" : \"-\";\n type += \"[\" + d.lines + \"]\";\n }\n else if (d.value) {\n if (Array.isArray(d.value)) {\n type = d.value.map(stringifyRange).join(\"\\n\");\n }\n else {\n type = stringifyRange(d.value);\n }\n }\n if (d.start) {\n type += stringifyRange(d);\n }\n if (d.id || d.rev) {\n type += \"\\t(\" + (d.id || d.rev) + \")\";\n }\n return type;\n}\nfunction stringifyRange(r) {\n return r.start.row + \":\" + r.start.column\n + \"=>\" + r.end.row + \":\" + r.end.column;\n}\nfunction swap(d1, d2) {\n var i1 = d1.action == \"insert\";\n var i2 = d2.action == \"insert\";\n if (i1 && i2) {\n if (cmp(d2.start, d1.end) >= 0) {\n shift(d2, d1, -1);\n }\n else if (cmp(d2.start, d1.start) <= 0) {\n shift(d1, d2, +1);\n }\n else {\n return null;\n }\n }\n else if (i1 && !i2) {\n if (cmp(d2.start, d1.end) >= 0) {\n shift(d2, d1, -1);\n }\n else if (cmp(d2.end, d1.start) <= 0) {\n shift(d1, d2, -1);\n }\n else {\n return null;\n }\n }\n else if (!i1 && i2) {\n if (cmp(d2.start, d1.start) >= 0) {\n shift(d2, d1, +1);\n }\n else if (cmp(d2.start, d1.start) <= 0) {\n shift(d1, d2, +1);\n }\n else {\n return null;\n }\n }\n else if (!i1 && !i2) {\n if (cmp(d2.start, d1.start) >= 0) {\n shift(d2, d1, +1);\n }\n else if (cmp(d2.end, d1.start) <= 0) {\n shift(d1, d2, -1);\n }\n else {\n return null;\n }\n }\n return [d2, d1];\n}\nfunction swapGroups(ds1, ds2) {\n for (var i = ds1.length; i--;) {\n for (var j = 0; j < ds2.length; j++) {\n if (!swap(ds1[i], ds2[j])) {\n while (i < ds1.length) {\n while (j--) {\n swap(ds2[j], ds1[i]);\n }\n j = ds2.length;\n i++;\n }\n return [ds1, ds2];\n }\n }\n }\n ds1.selectionBefore = ds2.selectionBefore =\n ds1.selectionAfter = ds2.selectionAfter = null;\n return [ds2, ds1];\n}\nfunction xform(d1, c1) {\n var i1 = d1.action == \"insert\";\n var i2 = c1.action == \"insert\";\n if (i1 && i2) {\n if (cmp(d1.start, c1.start) < 0) {\n shift(c1, d1, 1);\n }\n else {\n shift(d1, c1, 1);\n }\n }\n else if (i1 && !i2) {\n if (cmp(d1.start, c1.end) >= 0) {\n shift(d1, c1, -1);\n }\n else if (cmp(d1.start, c1.start) <= 0) {\n shift(c1, d1, +1);\n }\n else {\n shift(d1, Range.fromPoints(c1.start, d1.start), -1);\n shift(c1, d1, +1);\n }\n }\n else if (!i1 && i2) {\n if (cmp(c1.start, d1.end) >= 0) {\n shift(c1, d1, -1);\n }\n else if (cmp(c1.start, d1.start) <= 0) {\n shift(d1, c1, +1);\n }\n else {\n shift(c1, Range.fromPoints(d1.start, c1.start), -1);\n shift(d1, c1, +1);\n }\n }\n else if (!i1 && !i2) {\n if (cmp(c1.start, d1.end) >= 0) {\n shift(c1, d1, -1);\n }\n else if (cmp(c1.end, d1.start) <= 0) {\n shift(d1, c1, -1);\n }\n else {\n var before, after;\n if (cmp(d1.start, c1.start) < 0) {\n before = d1;\n d1 = splitDelta(d1, c1.start);\n }\n if (cmp(d1.end, c1.end) > 0) {\n after = splitDelta(d1, c1.end);\n }\n shiftPos(c1.end, d1.start, d1.end, -1);\n if (after && !before) {\n d1.lines = after.lines;\n d1.start = after.start;\n d1.end = after.end;\n after = d1;\n }\n return [c1, before, after].filter(Boolean);\n }\n }\n return [c1, d1];\n}\nfunction shift(d1, d2, dir) {\n shiftPos(d1.start, d2.start, d2.end, dir);\n shiftPos(d1.end, d2.start, d2.end, dir);\n}\nfunction shiftPos(pos, start, end, dir) {\n if (pos.row == (dir == 1 ? start : end).row) {\n pos.column += dir * (end.column - start.column);\n }\n pos.row += dir * (end.row - start.row);\n}\nfunction splitDelta(c, pos) {\n var lines = c.lines;\n var end = c.end;\n c.end = clonePos(pos);\n var rowsBefore = c.end.row - c.start.row;\n var otherLines = lines.splice(rowsBefore, lines.length);\n var col = rowsBefore ? pos.column : pos.column - c.start.column;\n lines.push(otherLines[0].substring(0, col));\n otherLines[0] = otherLines[0].substr(col);\n var rest = {\n start: clonePos(pos),\n end: end,\n lines: otherLines,\n action: c.action\n };\n return rest;\n}\nfunction moveDeltasByOne(redoStack, d) {\n d = cloneDelta(d);\n for (var j = redoStack.length; j--;) {\n var deltaSet = redoStack[j];\n for (var i = 0; i < deltaSet.length; i++) {\n var x = deltaSet[i];\n var xformed = xform(x, d);\n d = xformed[0];\n if (xformed.length != 2) {\n if (xformed[2]) {\n deltaSet.splice(i + 1, 1, xformed[1], xformed[2]);\n i++;\n }\n else if (!xformed[1]) {\n deltaSet.splice(i, 1);\n i--;\n }\n }\n }\n if (!deltaSet.length) {\n redoStack.splice(j, 1);\n }\n }\n return redoStack;\n}\nfunction rebaseRedoStack(redoStack, deltaSets) {\n for (var i = 0; i < deltaSets.length; i++) {\n var deltas = deltaSets[i];\n for (var j = 0; j < deltas.length; j++) {\n moveDeltasByOne(redoStack, deltas[j]);\n }\n }\n}\nexports.UndoManager = UndoManager;\n\n});\n\nace.define(\"ace/edit_session/fold_line\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar Range = require(\"../range\").Range;\nvar FoldLine = /** @class */ (function () {\n function FoldLine(foldData, folds) {\n this.foldData = foldData;\n if (Array.isArray(folds)) {\n this.folds = folds;\n }\n else {\n folds = this.folds = [folds];\n }\n var last = folds[folds.length - 1];\n this.range = new Range(folds[0].start.row, folds[0].start.column, last.end.row, last.end.column);\n this.start = this.range.start;\n this.end = this.range.end;\n this.folds.forEach(function (fold) {\n fold.setFoldLine(this);\n }, this);\n }\n FoldLine.prototype.shiftRow = function (shift) {\n this.start.row += shift;\n this.end.row += shift;\n this.folds.forEach(function (fold) {\n fold.start.row += shift;\n fold.end.row += shift;\n });\n };\n FoldLine.prototype.addFold = function (fold) {\n if (fold.sameRow) {\n if (fold.start.row < this.startRow || fold.endRow > this.endRow) {\n throw new Error(\"Can't add a fold to this FoldLine as it has no connection\");\n }\n this.folds.push(fold);\n this.folds.sort(function (a, b) {\n return -a.range.compareEnd(b.start.row, b.start.column);\n });\n if (this.range.compareEnd(fold.start.row, fold.start.column) > 0) {\n this.end.row = fold.end.row;\n this.end.column = fold.end.column;\n }\n else if (this.range.compareStart(fold.end.row, fold.end.column) < 0) {\n this.start.row = fold.start.row;\n this.start.column = fold.start.column;\n }\n }\n else if (fold.start.row == this.end.row) {\n this.folds.push(fold);\n this.end.row = fold.end.row;\n this.end.column = fold.end.column;\n }\n else if (fold.end.row == this.start.row) {\n this.folds.unshift(fold);\n this.start.row = fold.start.row;\n this.start.column = fold.start.column;\n }\n else {\n throw new Error(\"Trying to add fold to FoldRow that doesn't have a matching row\");\n }\n fold.foldLine = this;\n };\n FoldLine.prototype.containsRow = function (row) {\n return row >= this.start.row && row <= this.end.row;\n };\n FoldLine.prototype.walk = function (callback, endRow, endColumn) {\n var lastEnd = 0, folds = this.folds, fold, cmp, stop, isNewRow = true;\n if (endRow == null) {\n endRow = this.end.row;\n endColumn = this.end.column;\n }\n for (var i = 0; i < folds.length; i++) {\n fold = folds[i];\n cmp = fold.range.compareStart(endRow, endColumn);\n if (cmp == -1) {\n callback(null, endRow, endColumn, lastEnd, isNewRow);\n return;\n }\n stop = callback(null, fold.start.row, fold.start.column, lastEnd, isNewRow);\n stop = !stop && callback(fold.placeholder, fold.start.row, fold.start.column, lastEnd);\n if (stop || cmp === 0) {\n return;\n }\n isNewRow = !fold.sameRow;\n lastEnd = fold.end.column;\n }\n callback(null, endRow, endColumn, lastEnd, isNewRow);\n };\n FoldLine.prototype.getNextFoldTo = function (row, column) {\n var fold, cmp;\n for (var i = 0; i < this.folds.length; i++) {\n fold = this.folds[i];\n cmp = fold.range.compareEnd(row, column);\n if (cmp == -1) {\n return {\n fold: fold,\n kind: \"after\"\n };\n }\n else if (cmp === 0) {\n return {\n fold: fold,\n kind: \"inside\"\n };\n }\n }\n return null;\n };\n FoldLine.prototype.addRemoveChars = function (row, column, len) {\n var ret = this.getNextFoldTo(row, column), fold, folds;\n if (ret) {\n fold = ret.fold;\n if (ret.kind == \"inside\"\n && fold.start.column != column\n && fold.start.row != row) {\n window.console && window.console.log(row, column, fold);\n }\n else if (fold.start.row == row) {\n folds = this.folds;\n var i = folds.indexOf(fold);\n if (i === 0) {\n this.start.column += len;\n }\n for (i; i < folds.length; i++) {\n fold = folds[i];\n fold.start.column += len;\n if (!fold.sameRow) {\n return;\n }\n fold.end.column += len;\n }\n this.end.column += len;\n }\n }\n };\n FoldLine.prototype.split = function (row, column) {\n var pos = this.getNextFoldTo(row, column);\n if (!pos || pos.kind == \"inside\")\n return null;\n var fold = pos.fold;\n var folds = this.folds;\n var foldData = this.foldData;\n var i = folds.indexOf(fold);\n var foldBefore = folds[i - 1];\n this.end.row = foldBefore.end.row;\n this.end.column = foldBefore.end.column;\n folds = folds.splice(i, folds.length - i);\n var newFoldLine = new FoldLine(foldData, folds);\n foldData.splice(foldData.indexOf(this) + 1, 0, newFoldLine);\n return newFoldLine;\n };\n FoldLine.prototype.merge = function (foldLineNext) {\n var folds = foldLineNext.folds;\n for (var i = 0; i < folds.length; i++) {\n this.addFold(folds[i]);\n }\n var foldData = this.foldData;\n foldData.splice(foldData.indexOf(foldLineNext), 1);\n };\n FoldLine.prototype.toString = function () {\n var ret = [this.range.toString() + \": [\"];\n this.folds.forEach(function (fold) {\n ret.push(\" \" + fold.toString());\n });\n ret.push(\"]\");\n return ret.join(\"\\n\");\n };\n FoldLine.prototype.idxToPosition = function (idx) {\n var lastFoldEndColumn = 0;\n for (var i = 0; i < this.folds.length; i++) {\n var fold = this.folds[i];\n idx -= fold.start.column - lastFoldEndColumn;\n if (idx < 0) {\n return {\n row: fold.start.row,\n column: fold.start.column + idx\n };\n }\n idx -= fold.placeholder.length;\n if (idx < 0) {\n return fold.start;\n }\n lastFoldEndColumn = fold.end.column;\n }\n return {\n row: this.end.row,\n column: this.end.column + idx\n };\n };\n return FoldLine;\n}());\nexports.FoldLine = FoldLine;\n\n});\n\nace.define(\"ace/range_list\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar Range = require(\"./range\").Range;\nvar comparePoints = Range.comparePoints;\nvar RangeList = /** @class */ (function () {\n function RangeList() {\n this.ranges = [];\n this.$bias = 1;\n }\n RangeList.prototype.pointIndex = function (pos, excludeEdges, startIndex) {\n var list = this.ranges;\n for (var i = startIndex || 0; i < list.length; i++) {\n var range = list[i];\n var cmpEnd = comparePoints(pos, range.end);\n if (cmpEnd > 0)\n continue;\n var cmpStart = comparePoints(pos, range.start);\n if (cmpEnd === 0)\n return excludeEdges && cmpStart !== 0 ? -i - 2 : i;\n if (cmpStart > 0 || (cmpStart === 0 && !excludeEdges))\n return i;\n return -i - 1;\n }\n return -i - 1;\n };\n RangeList.prototype.add = function (range) {\n var excludeEdges = !range.isEmpty();\n var startIndex = this.pointIndex(range.start, excludeEdges);\n if (startIndex < 0)\n startIndex = -startIndex - 1;\n var endIndex = this.pointIndex(range.end, excludeEdges, startIndex);\n if (endIndex < 0)\n endIndex = -endIndex - 1;\n else\n endIndex++;\n return this.ranges.splice(startIndex, endIndex - startIndex, range);\n };\n RangeList.prototype.addList = function (list) {\n var removed = [];\n for (var i = list.length; i--;) {\n removed.push.apply(removed, this.add(list[i]));\n }\n return removed;\n };\n RangeList.prototype.substractPoint = function (pos) {\n var i = this.pointIndex(pos);\n if (i >= 0)\n return this.ranges.splice(i, 1);\n };\n RangeList.prototype.merge = function () {\n var removed = [];\n var list = this.ranges;\n list = list.sort(function (a, b) {\n return comparePoints(a.start, b.start);\n });\n var next = list[0], range;\n for (var i = 1; i < list.length; i++) {\n range = next;\n next = list[i];\n var cmp = comparePoints(range.end, next.start);\n if (cmp < 0)\n continue;\n if (cmp == 0 && !range.isEmpty() && !next.isEmpty())\n continue;\n if (comparePoints(range.end, next.end) < 0) {\n range.end.row = next.end.row;\n range.end.column = next.end.column;\n }\n list.splice(i, 1);\n removed.push(next);\n next = range;\n i--;\n }\n this.ranges = list;\n return removed;\n };\n RangeList.prototype.contains = function (row, column) {\n return this.pointIndex({ row: row, column: column }) >= 0;\n };\n RangeList.prototype.containsPoint = function (pos) {\n return this.pointIndex(pos) >= 0;\n };\n RangeList.prototype.rangeAtPoint = function (pos) {\n var i = this.pointIndex(pos);\n if (i >= 0)\n return this.ranges[i];\n };\n RangeList.prototype.clipRows = function (startRow, endRow) {\n var list = this.ranges;\n if (list[0].start.row > endRow || list[list.length - 1].start.row < startRow)\n return [];\n var startIndex = this.pointIndex({ row: startRow, column: 0 });\n if (startIndex < 0)\n startIndex = -startIndex - 1;\n var endIndex = this.pointIndex({ row: endRow, column: 0 }, startIndex);\n if (endIndex < 0)\n endIndex = -endIndex - 1;\n var clipped = [];\n for (var i = startIndex; i < endIndex; i++) {\n clipped.push(list[i]);\n }\n return clipped;\n };\n RangeList.prototype.removeAll = function () {\n return this.ranges.splice(0, this.ranges.length);\n };\n RangeList.prototype.attach = function (session) {\n if (this.session)\n this.detach();\n this.session = session;\n this.onChange = this.$onChange.bind(this);\n this.session.on('change', this.onChange);\n };\n RangeList.prototype.detach = function () {\n if (!this.session)\n return;\n this.session.removeListener('change', this.onChange);\n this.session = null;\n };\n RangeList.prototype.$onChange = function (delta) {\n var start = delta.start;\n var end = delta.end;\n var startRow = start.row;\n var endRow = end.row;\n var ranges = this.ranges;\n for (var i = 0, n = ranges.length; i < n; i++) {\n var r = ranges[i];\n if (r.end.row >= startRow)\n break;\n }\n if (delta.action == \"insert\") {\n var lineDif = endRow - startRow;\n var colDiff = -start.column + end.column;\n for (; i < n; i++) {\n var r = ranges[i];\n if (r.start.row > startRow)\n break;\n if (r.start.row == startRow && r.start.column >= start.column) {\n if (r.start.column == start.column && this.$bias <= 0) {\n }\n else {\n r.start.column += colDiff;\n r.start.row += lineDif;\n }\n }\n if (r.end.row == startRow && r.end.column >= start.column) {\n if (r.end.column == start.column && this.$bias < 0) {\n continue;\n }\n if (r.end.column == start.column && colDiff > 0 && i < n - 1) {\n if (r.end.column > r.start.column && r.end.column == ranges[i + 1].start.column)\n r.end.column -= colDiff;\n }\n r.end.column += colDiff;\n r.end.row += lineDif;\n }\n }\n }\n else {\n var lineDif = startRow - endRow;\n var colDiff = start.column - end.column;\n for (; i < n; i++) {\n var r = ranges[i];\n if (r.start.row > endRow)\n break;\n if (r.end.row < endRow\n && (startRow < r.end.row\n || startRow == r.end.row && start.column < r.end.column)) {\n r.end.row = startRow;\n r.end.column = start.column;\n }\n else if (r.end.row == endRow) {\n if (r.end.column <= end.column) {\n if (lineDif || r.end.column > start.column) {\n r.end.column = start.column;\n r.end.row = start.row;\n }\n }\n else {\n r.end.column += colDiff;\n r.end.row += lineDif;\n }\n }\n else if (r.end.row > endRow) {\n r.end.row += lineDif;\n }\n if (r.start.row < endRow\n && (startRow < r.start.row\n || startRow == r.start.row && start.column < r.start.column)) {\n r.start.row = startRow;\n r.start.column = start.column;\n }\n else if (r.start.row == endRow) {\n if (r.start.column <= end.column) {\n if (lineDif || r.start.column > start.column) {\n r.start.column = start.column;\n r.start.row = start.row;\n }\n }\n else {\n r.start.column += colDiff;\n r.start.row += lineDif;\n }\n }\n else if (r.start.row > endRow) {\n r.start.row += lineDif;\n }\n }\n }\n if (lineDif != 0 && i < n) {\n for (; i < n; i++) {\n var r = ranges[i];\n r.start.row += lineDif;\n r.end.row += lineDif;\n }\n }\n };\n return RangeList;\n}());\nRangeList.prototype.comparePoints = comparePoints;\nexports.RangeList = RangeList;\n\n});\n\nace.define(\"ace/edit_session/fold\",[\"require\",\"exports\",\"module\",\"ace/range_list\"], function(require, exports, module){\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar RangeList = require(\"../range_list\").RangeList;\nvar Fold = /** @class */ (function (_super) {\n __extends(Fold, _super);\n function Fold(range, placeholder) {\n var _this = _super.call(this) || this;\n _this.foldLine = null;\n _this.placeholder = placeholder;\n _this.range = range;\n _this.start = range.start;\n _this.end = range.end;\n _this.sameRow = range.start.row == range.end.row;\n _this.subFolds = _this.ranges = [];\n return _this;\n }\n Fold.prototype.toString = function () {\n return '\"' + this.placeholder + '\" ' + this.range.toString();\n };\n Fold.prototype.setFoldLine = function (foldLine) {\n this.foldLine = foldLine;\n this.subFolds.forEach(function (fold) {\n fold.setFoldLine(foldLine);\n });\n };\n Fold.prototype.clone = function () {\n var range = this.range.clone();\n var fold = new Fold(range, this.placeholder);\n this.subFolds.forEach(function (subFold) {\n fold.subFolds.push(subFold.clone());\n });\n fold.collapseChildren = this.collapseChildren;\n return fold;\n };\n Fold.prototype.addSubFold = function (fold) {\n if (this.range.isEqual(fold))\n return;\n consumeRange(fold, this.start);\n var row = fold.start.row, column = fold.start.column;\n for (var i = 0, cmp = -1; i < this.subFolds.length; i++) {\n cmp = this.subFolds[i].range.compare(row, column);\n if (cmp != 1)\n break;\n }\n var afterStart = this.subFolds[i];\n var firstConsumed = 0;\n if (cmp == 0) {\n if (afterStart.range.containsRange(fold))\n return afterStart.addSubFold(fold);\n else\n firstConsumed = 1;\n }\n var row = fold.range.end.row, column = fold.range.end.column;\n for (var j = i, cmp = -1; j < this.subFolds.length; j++) {\n cmp = this.subFolds[j].range.compare(row, column);\n if (cmp != 1)\n break;\n }\n if (cmp == 0)\n j++;\n var consumedFolds = this.subFolds.splice(i, j - i, fold);\n var last = cmp == 0 ? consumedFolds.length - 1 : consumedFolds.length;\n for (var k = firstConsumed; k < last; k++) {\n fold.addSubFold(consumedFolds[k]);\n }\n fold.setFoldLine(this.foldLine);\n return fold;\n };\n Fold.prototype.restoreRange = function (range) {\n return restoreRange(range, this.start);\n };\n return Fold;\n}(RangeList));\nfunction consumePoint(point, anchor) {\n point.row -= anchor.row;\n if (point.row == 0)\n point.column -= anchor.column;\n}\nfunction consumeRange(range, anchor) {\n consumePoint(range.start, anchor);\n consumePoint(range.end, anchor);\n}\nfunction restorePoint(point, anchor) {\n if (point.row == 0)\n point.column += anchor.column;\n point.row += anchor.row;\n}\nfunction restoreRange(range, anchor) {\n restorePoint(range.start, anchor);\n restorePoint(range.end, anchor);\n}\nexports.Fold = Fold;\n\n});\n\nace.define(\"ace/edit_session/folding\",[\"require\",\"exports\",\"module\",\"ace/range\",\"ace/edit_session/fold_line\",\"ace/edit_session/fold\",\"ace/token_iterator\",\"ace/mouse/mouse_event\"], function(require, exports, module){\"use strict\";\nvar Range = require(\"../range\").Range;\nvar FoldLine = require(\"./fold_line\").FoldLine;\nvar Fold = require(\"./fold\").Fold;\nvar TokenIterator = require(\"../token_iterator\").TokenIterator;\nvar MouseEvent = require(\"../mouse/mouse_event\").MouseEvent;\nfunction Folding() {\n this.getFoldAt = function (row, column, side) {\n var foldLine = this.getFoldLine(row);\n if (!foldLine)\n return null;\n var folds = foldLine.folds;\n for (var i = 0; i < folds.length; i++) {\n var range = folds[i].range;\n if (range.contains(row, column)) {\n if (side == 1 && range.isEnd(row, column) && !range.isEmpty()) {\n continue;\n }\n else if (side == -1 && range.isStart(row, column) && !range.isEmpty()) {\n continue;\n }\n return folds[i];\n }\n }\n };\n this.getFoldsInRange = function (range) {\n var start = range.start;\n var end = range.end;\n var foldLines = this.$foldData;\n var foundFolds = [];\n start.column += 1;\n end.column -= 1;\n for (var i = 0; i < foldLines.length; i++) {\n var cmp = foldLines[i].range.compareRange(range);\n if (cmp == 2) {\n continue;\n }\n else if (cmp == -2) {\n break;\n }\n var folds = foldLines[i].folds;\n for (var j = 0; j < folds.length; j++) {\n var fold = folds[j];\n cmp = fold.range.compareRange(range);\n if (cmp == -2) {\n break;\n }\n else if (cmp == 2) {\n continue;\n }\n else \n if (cmp == 42) {\n break;\n }\n foundFolds.push(fold);\n }\n }\n start.column -= 1;\n end.column += 1;\n return foundFolds;\n };\n this.getFoldsInRangeList = function (ranges) {\n if (Array.isArray(ranges)) {\n var folds = [];\n ranges.forEach(function (range) {\n folds = folds.concat(this.getFoldsInRange(range));\n }, this);\n }\n else {\n var folds = this.getFoldsInRange(ranges);\n }\n return folds;\n };\n this.getAllFolds = function () {\n var folds = [];\n var foldLines = this.$foldData;\n for (var i = 0; i < foldLines.length; i++)\n for (var j = 0; j < foldLines[i].folds.length; j++)\n folds.push(foldLines[i].folds[j]);\n return folds;\n };\n this.getFoldStringAt = function (row, column, trim, foldLine) {\n foldLine = foldLine || this.getFoldLine(row);\n if (!foldLine)\n return null;\n var lastFold = {\n end: { column: 0 }\n };\n var str, fold;\n for (var i = 0; i < foldLine.folds.length; i++) {\n fold = foldLine.folds[i];\n var cmp = fold.range.compareEnd(row, column);\n if (cmp == -1) {\n str = this\n .getLine(fold.start.row)\n .substring(lastFold.end.column, fold.start.column);\n break;\n }\n else if (cmp === 0) {\n return null;\n }\n lastFold = fold;\n }\n if (!str)\n str = this.getLine(fold.start.row).substring(lastFold.end.column);\n if (trim == -1)\n return str.substring(0, column - lastFold.end.column);\n else if (trim == 1)\n return str.substring(column - lastFold.end.column);\n else\n return str;\n };\n this.getFoldLine = function (docRow, startFoldLine) {\n var foldData = this.$foldData;\n var i = 0;\n if (startFoldLine)\n i = foldData.indexOf(startFoldLine);\n if (i == -1)\n i = 0;\n for (i; i < foldData.length; i++) {\n var foldLine = foldData[i];\n if (foldLine.start.row <= docRow && foldLine.end.row >= docRow) {\n return foldLine;\n }\n else if (foldLine.end.row > docRow) {\n return null;\n }\n }\n return null;\n };\n this.getNextFoldLine = function (docRow, startFoldLine) {\n var foldData = this.$foldData;\n var i = 0;\n if (startFoldLine)\n i = foldData.indexOf(startFoldLine);\n if (i == -1)\n i = 0;\n for (i; i < foldData.length; i++) {\n var foldLine = foldData[i];\n if (foldLine.end.row >= docRow) {\n return foldLine;\n }\n }\n return null;\n };\n this.getFoldedRowCount = function (first, last) {\n var foldData = this.$foldData, rowCount = last - first + 1;\n for (var i = 0; i < foldData.length; i++) {\n var foldLine = foldData[i], end = foldLine.end.row, start = foldLine.start.row;\n if (end >= last) {\n if (start < last) {\n if (start >= first)\n rowCount -= last - start;\n else\n rowCount = 0; // in one fold\n }\n break;\n }\n else if (end >= first) {\n if (start >= first) // fold inside range\n rowCount -= end - start;\n else\n rowCount -= end - first + 1;\n }\n }\n return rowCount;\n };\n this.$addFoldLine = function (foldLine) {\n this.$foldData.push(foldLine);\n this.$foldData.sort(function (a, b) {\n return a.start.row - b.start.row;\n });\n return foldLine;\n };\n this.addFold = function (placeholder, range) {\n var foldData = this.$foldData;\n var added = false;\n var fold;\n if (placeholder instanceof Fold)\n fold = placeholder;\n else {\n fold = new Fold(range, placeholder);\n fold.collapseChildren = range.collapseChildren;\n }\n this.$clipRangeToDocument(fold.range);\n var startRow = fold.start.row;\n var startColumn = fold.start.column;\n var endRow = fold.end.row;\n var endColumn = fold.end.column;\n var startFold = this.getFoldAt(startRow, startColumn, 1);\n var endFold = this.getFoldAt(endRow, endColumn, -1);\n if (startFold && endFold == startFold)\n return startFold.addSubFold(fold);\n if (startFold && !startFold.range.isStart(startRow, startColumn))\n this.removeFold(startFold);\n if (endFold && !endFold.range.isEnd(endRow, endColumn))\n this.removeFold(endFold);\n var folds = this.getFoldsInRange(fold.range);\n if (folds.length > 0) {\n this.removeFolds(folds);\n if (!fold.collapseChildren) {\n folds.forEach(function (subFold) {\n fold.addSubFold(subFold);\n });\n }\n }\n for (var i = 0; i < foldData.length; i++) {\n var foldLine = foldData[i];\n if (endRow == foldLine.start.row) {\n foldLine.addFold(fold);\n added = true;\n break;\n }\n else if (startRow == foldLine.end.row) {\n foldLine.addFold(fold);\n added = true;\n if (!fold.sameRow) {\n var foldLineNext = foldData[i + 1];\n if (foldLineNext && foldLineNext.start.row == endRow) {\n foldLine.merge(foldLineNext);\n break;\n }\n }\n break;\n }\n else if (endRow <= foldLine.start.row) {\n break;\n }\n }\n if (!added)\n foldLine = this.$addFoldLine(new FoldLine(this.$foldData, fold));\n if (this.$useWrapMode)\n this.$updateWrapData(foldLine.start.row, foldLine.start.row);\n else\n this.$updateRowLengthCache(foldLine.start.row, foldLine.start.row);\n this.$modified = true;\n this._signal(\"changeFold\", { data: fold, action: \"add\" });\n return fold;\n };\n this.addFolds = function (folds) {\n folds.forEach(function (fold) {\n this.addFold(fold);\n }, this);\n };\n this.removeFold = function (fold) {\n var foldLine = fold.foldLine;\n var startRow = foldLine.start.row;\n var endRow = foldLine.end.row;\n var foldLines = this.$foldData;\n var folds = foldLine.folds;\n if (folds.length == 1) {\n foldLines.splice(foldLines.indexOf(foldLine), 1);\n }\n else \n if (foldLine.range.isEnd(fold.end.row, fold.end.column)) {\n folds.pop();\n foldLine.end.row = folds[folds.length - 1].end.row;\n foldLine.end.column = folds[folds.length - 1].end.column;\n }\n else \n if (foldLine.range.isStart(fold.start.row, fold.start.column)) {\n folds.shift();\n foldLine.start.row = folds[0].start.row;\n foldLine.start.column = folds[0].start.column;\n }\n else \n if (fold.sameRow) {\n folds.splice(folds.indexOf(fold), 1);\n }\n else \n {\n var newFoldLine = foldLine.split(fold.start.row, fold.start.column);\n folds = newFoldLine.folds;\n folds.shift();\n newFoldLine.start.row = folds[0].start.row;\n newFoldLine.start.column = folds[0].start.column;\n }\n if (!this.$updating) {\n if (this.$useWrapMode)\n this.$updateWrapData(startRow, endRow);\n else\n this.$updateRowLengthCache(startRow, endRow);\n }\n this.$modified = true;\n this._signal(\"changeFold\", { data: fold, action: \"remove\" });\n };\n this.removeFolds = function (folds) {\n var cloneFolds = [];\n for (var i = 0; i < folds.length; i++) {\n cloneFolds.push(folds[i]);\n }\n cloneFolds.forEach(function (fold) {\n this.removeFold(fold);\n }, this);\n this.$modified = true;\n };\n this.expandFold = function (fold) {\n this.removeFold(fold);\n fold.subFolds.forEach(function (subFold) {\n fold.restoreRange(subFold);\n this.addFold(subFold);\n }, this);\n if (fold.collapseChildren > 0) {\n this.foldAll(fold.start.row + 1, fold.end.row, fold.collapseChildren - 1);\n }\n fold.subFolds = [];\n };\n this.expandFolds = function (folds) {\n folds.forEach(function (fold) {\n this.expandFold(fold);\n }, this);\n };\n this.unfold = function (location, expandInner) {\n var range, folds;\n if (location == null) {\n range = new Range(0, 0, this.getLength(), 0);\n if (expandInner == null)\n expandInner = true;\n }\n else if (typeof location == \"number\") {\n range = new Range(location, 0, location, this.getLine(location).length);\n }\n else if (\"row\" in location) {\n range = Range.fromPoints(location, location);\n }\n else if (Array.isArray(location)) {\n folds = [];\n location.forEach(function (range) {\n folds = folds.concat(this.unfold(range));\n }, this);\n return folds;\n }\n else {\n range = location;\n }\n folds = this.getFoldsInRangeList(range);\n var outermostFolds = folds;\n while (folds.length == 1\n && Range.comparePoints(folds[0].start, range.start) < 0\n && Range.comparePoints(folds[0].end, range.end) > 0) {\n this.expandFolds(folds);\n folds = this.getFoldsInRangeList(range);\n }\n if (expandInner != false) {\n this.removeFolds(folds);\n }\n else {\n this.expandFolds(folds);\n }\n if (outermostFolds.length)\n return outermostFolds;\n };\n this.isRowFolded = function (docRow, startFoldRow) {\n return !!this.getFoldLine(docRow, startFoldRow);\n };\n this.getRowFoldEnd = function (docRow, startFoldRow) {\n var foldLine = this.getFoldLine(docRow, startFoldRow);\n return foldLine ? foldLine.end.row : docRow;\n };\n this.getRowFoldStart = function (docRow, startFoldRow) {\n var foldLine = this.getFoldLine(docRow, startFoldRow);\n return foldLine ? foldLine.start.row : docRow;\n };\n this.getFoldDisplayLine = function (foldLine, endRow, endColumn, startRow, startColumn) {\n if (startRow == null)\n startRow = foldLine.start.row;\n if (startColumn == null)\n startColumn = 0;\n if (endRow == null)\n endRow = foldLine.end.row;\n if (endColumn == null)\n endColumn = this.getLine(endRow).length;\n var doc = this.doc;\n var textLine = \"\";\n foldLine.walk(function (placeholder, row, column, lastColumn) {\n if (row < startRow)\n return;\n if (row == startRow) {\n if (column < startColumn)\n return;\n lastColumn = Math.max(startColumn, lastColumn);\n }\n if (placeholder != null) {\n textLine += placeholder;\n }\n else {\n textLine += doc.getLine(row).substring(lastColumn, column);\n }\n }, endRow, endColumn);\n return textLine;\n };\n this.getDisplayLine = function (row, endColumn, startRow, startColumn) {\n var foldLine = this.getFoldLine(row);\n if (!foldLine) {\n var line;\n line = this.doc.getLine(row);\n return line.substring(startColumn || 0, endColumn || line.length);\n }\n else {\n return this.getFoldDisplayLine(foldLine, row, endColumn, startRow, startColumn);\n }\n };\n this.$cloneFoldData = function () {\n var fd = [];\n fd = this.$foldData.map(function (foldLine) {\n var folds = foldLine.folds.map(function (fold) {\n return fold.clone();\n });\n return new FoldLine(fd, folds);\n });\n return fd;\n };\n this.toggleFold = function (tryToUnfold) {\n var selection = this.selection;\n var range = selection.getRange();\n var fold;\n var bracketPos;\n if (range.isEmpty()) {\n var cursor = range.start;\n fold = this.getFoldAt(cursor.row, cursor.column);\n if (fold) {\n this.expandFold(fold);\n return;\n }\n else if (bracketPos = this.findMatchingBracket(cursor)) {\n if (range.comparePoint(bracketPos) == 1) {\n range.end = bracketPos;\n }\n else {\n range.start = bracketPos;\n range.start.column++;\n range.end.column--;\n }\n }\n else if (bracketPos = this.findMatchingBracket({ row: cursor.row, column: cursor.column + 1 })) {\n if (range.comparePoint(bracketPos) == 1)\n range.end = bracketPos;\n else\n range.start = bracketPos;\n range.start.column++;\n }\n else {\n range = this.getCommentFoldRange(cursor.row, cursor.column) || range;\n }\n }\n else {\n var folds = this.getFoldsInRange(range);\n if (tryToUnfold && folds.length) {\n this.expandFolds(folds);\n return;\n }\n else if (folds.length == 1) {\n fold = folds[0];\n }\n }\n if (!fold)\n fold = this.getFoldAt(range.start.row, range.start.column);\n if (fold && fold.range.toString() == range.toString()) {\n this.expandFold(fold);\n return;\n }\n var placeholder = \"...\";\n if (!range.isMultiLine()) {\n placeholder = this.getTextRange(range);\n if (placeholder.length < 4)\n return;\n placeholder = placeholder.trim().substring(0, 2) + \"..\";\n }\n this.addFold(placeholder, range);\n };\n this.getCommentFoldRange = function (row, column, dir) {\n var iterator = new TokenIterator(this, row, column);\n var token = iterator.getCurrentToken();\n var type = token && token.type;\n if (token && /^comment|string/.test(type)) {\n type = type.match(/comment|string/)[0];\n if (type == \"comment\")\n type += \"|doc-start|\\\\.doc\";\n var re = new RegExp(type);\n var range = new Range();\n if (dir != 1) {\n do {\n token = iterator.stepBackward();\n } while (token && re.test(token.type) && !/^comment.end/.test(token.type));\n token = iterator.stepForward();\n }\n range.start.row = iterator.getCurrentTokenRow();\n range.start.column = iterator.getCurrentTokenColumn() + (/^comment.start/.test(token.type) ? token.value.length : 2);\n iterator = new TokenIterator(this, row, column);\n if (dir != -1) {\n var lastRow = -1;\n do {\n token = iterator.stepForward();\n if (lastRow == -1) {\n var state = this.getState(iterator.$row);\n if (!re.test(state))\n lastRow = iterator.$row;\n }\n else if (iterator.$row > lastRow) {\n break;\n }\n } while (token && re.test(token.type) && !/^comment.start/.test(token.type));\n token = iterator.stepBackward();\n }\n else\n token = iterator.getCurrentToken();\n range.end.row = iterator.getCurrentTokenRow();\n range.end.column = iterator.getCurrentTokenColumn();\n if (!/^comment.end/.test(token.type)) {\n range.end.column += token.value.length - 2;\n }\n return range;\n }\n };\n this.foldAll = function (startRow, endRow, depth, test) {\n if (depth == undefined)\n depth = 100000; // JSON.stringify doesn't hanle Infinity\n var foldWidgets = this.foldWidgets;\n if (!foldWidgets)\n return; // mode doesn't support folding\n endRow = endRow || this.getLength();\n startRow = startRow || 0;\n for (var row = startRow; row < endRow; row++) {\n if (foldWidgets[row] == null)\n foldWidgets[row] = this.getFoldWidget(row);\n if (foldWidgets[row] != \"start\")\n continue;\n if (test && !test(row))\n continue;\n var range = this.getFoldWidgetRange(row);\n if (range && range.isMultiLine()\n && range.end.row <= endRow\n && range.start.row >= startRow) {\n row = range.end.row;\n range.collapseChildren = depth;\n this.addFold(\"...\", range);\n }\n }\n };\n this.foldToLevel = function (level) {\n this.foldAll();\n while (level-- > 0)\n this.unfold(null, false);\n };\n this.foldAllComments = function () {\n var session = this;\n this.foldAll(null, null, null, function (row) {\n var tokens = session.getTokens(row);\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n if (token.type == \"text\" && /^\\s+$/.test(token.value))\n continue;\n if (/comment/.test(token.type))\n return true;\n return false;\n }\n });\n };\n this.$foldStyles = {\n \"manual\": 1,\n \"markbegin\": 1,\n \"markbeginend\": 1\n };\n this.$foldStyle = \"markbegin\";\n this.setFoldStyle = function (style) {\n if (!this.$foldStyles[style])\n throw new Error(\"invalid fold style: \" + style + \"[\" + Object.keys(this.$foldStyles).join(\", \") + \"]\");\n if (this.$foldStyle == style)\n return;\n this.$foldStyle = style;\n if (style == \"manual\")\n this.unfold();\n var mode = this.$foldMode;\n this.$setFolding(null);\n this.$setFolding(mode);\n };\n this.$setFolding = function (foldMode) {\n if (this.$foldMode == foldMode)\n return;\n this.$foldMode = foldMode;\n this.off('change', this.$updateFoldWidgets);\n this.off('tokenizerUpdate', this.$tokenizerUpdateFoldWidgets);\n this._signal(\"changeAnnotation\");\n if (!foldMode || this.$foldStyle == \"manual\") {\n this.foldWidgets = null;\n return;\n }\n this.foldWidgets = [];\n this.getFoldWidget = foldMode.getFoldWidget.bind(foldMode, this, this.$foldStyle);\n this.getFoldWidgetRange = foldMode.getFoldWidgetRange.bind(foldMode, this, this.$foldStyle);\n this.$updateFoldWidgets = this.updateFoldWidgets.bind(this);\n this.$tokenizerUpdateFoldWidgets = this.tokenizerUpdateFoldWidgets.bind(this);\n this.on('change', this.$updateFoldWidgets);\n this.on('tokenizerUpdate', this.$tokenizerUpdateFoldWidgets);\n };\n this.getParentFoldRangeData = function (row, ignoreCurrent) {\n var fw = this.foldWidgets;\n if (!fw || (ignoreCurrent && fw[row]))\n return {};\n var i = row - 1, firstRange;\n while (i >= 0) {\n var c = fw[i];\n if (c == null)\n c = fw[i] = this.getFoldWidget(i);\n if (c == \"start\") {\n var range = this.getFoldWidgetRange(i);\n if (!firstRange)\n firstRange = range;\n if (range && range.end.row >= row)\n break;\n }\n i--;\n }\n return {\n range: i !== -1 && range,\n firstRange: firstRange\n };\n };\n this.onFoldWidgetClick = function (row, e) {\n if (e instanceof MouseEvent)\n e = e.domEvent;\n var options = {\n children: e.shiftKey,\n all: e.ctrlKey || e.metaKey,\n siblings: e.altKey\n };\n var range = this.$toggleFoldWidget(row, options);\n if (!range) {\n var el = (e.target || e.srcElement);\n if (el && /ace_fold-widget/.test(el.className))\n el.className += \" ace_invalid\";\n }\n };\n this.$toggleFoldWidget = function (row, options) {\n if (!this.getFoldWidget)\n return;\n var type = this.getFoldWidget(row);\n var line = this.getLine(row);\n var dir = type === \"end\" ? -1 : 1;\n var fold = this.getFoldAt(row, dir === -1 ? 0 : line.length, dir);\n if (fold) {\n if (options.children || options.all)\n this.removeFold(fold);\n else\n this.expandFold(fold);\n return fold;\n }\n var range = this.getFoldWidgetRange(row, true);\n if (range && !range.isMultiLine()) {\n fold = this.getFoldAt(range.start.row, range.start.column, 1);\n if (fold && range.isEqual(fold.range)) {\n this.removeFold(fold);\n return fold;\n }\n }\n if (options.siblings) {\n var data = this.getParentFoldRangeData(row);\n if (data.range) {\n var startRow = data.range.start.row + 1;\n var endRow = data.range.end.row;\n }\n this.foldAll(startRow, endRow, options.all ? 10000 : 0);\n }\n else if (options.children) {\n endRow = range ? range.end.row : this.getLength();\n this.foldAll(row + 1, endRow, options.all ? 10000 : 0);\n }\n else if (range) {\n if (options.all)\n range.collapseChildren = 10000;\n this.addFold(\"...\", range);\n }\n return range;\n };\n this.toggleFoldWidget = function (toggleParent) {\n var row = this.selection.getCursor().row;\n row = this.getRowFoldStart(row);\n var range = this.$toggleFoldWidget(row, {});\n if (range)\n return;\n var data = this.getParentFoldRangeData(row, true);\n range = data.range || data.firstRange;\n if (range) {\n row = range.start.row;\n var fold = this.getFoldAt(row, this.getLine(row).length, 1);\n if (fold) {\n this.removeFold(fold);\n }\n else {\n this.addFold(\"...\", range);\n }\n }\n };\n this.updateFoldWidgets = function (delta) {\n var firstRow = delta.start.row;\n var len = delta.end.row - firstRow;\n if (len === 0) {\n this.foldWidgets[firstRow] = null;\n }\n else if (delta.action == 'remove') {\n this.foldWidgets.splice(firstRow, len + 1, null);\n }\n else {\n var args = Array(len + 1);\n args.unshift(firstRow, 1);\n this.foldWidgets.splice.apply(this.foldWidgets, args);\n }\n };\n this.tokenizerUpdateFoldWidgets = function (e) {\n var rows = e.data;\n if (rows.first != rows.last) {\n if (this.foldWidgets.length > rows.first)\n this.foldWidgets.splice(rows.first, this.foldWidgets.length);\n }\n };\n}\nexports.Folding = Folding;\n\n});\n\nace.define(\"ace/edit_session/bracket_match\",[\"require\",\"exports\",\"module\",\"ace/token_iterator\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar TokenIterator = require(\"../token_iterator\").TokenIterator;\nvar Range = require(\"../range\").Range;\nfunction BracketMatch() {\n this.findMatchingBracket = function (position, chr) {\n if (position.column == 0)\n return null;\n var charBeforeCursor = chr || this.getLine(position.row).charAt(position.column - 1);\n if (charBeforeCursor == \"\")\n return null;\n var match = charBeforeCursor.match(/([\\(\\[\\{])|([\\)\\]\\}])/);\n if (!match)\n return null;\n if (match[1])\n return this.$findClosingBracket(match[1], position);\n else\n return this.$findOpeningBracket(match[2], position);\n };\n this.getBracketRange = function (pos) {\n var line = this.getLine(pos.row);\n var before = true, range;\n var chr = line.charAt(pos.column - 1);\n var match = chr && chr.match(/([\\(\\[\\{])|([\\)\\]\\}])/);\n if (!match) {\n chr = line.charAt(pos.column);\n pos = { row: pos.row, column: pos.column + 1 };\n match = chr && chr.match(/([\\(\\[\\{])|([\\)\\]\\}])/);\n before = false;\n }\n if (!match)\n return null;\n if (match[1]) {\n var bracketPos = this.$findClosingBracket(match[1], pos);\n if (!bracketPos)\n return null;\n range = Range.fromPoints(pos, bracketPos);\n if (!before) {\n range.end.column++;\n range.start.column--;\n }\n range.cursor = range.end;\n }\n else {\n var bracketPos = this.$findOpeningBracket(match[2], pos);\n if (!bracketPos)\n return null;\n range = Range.fromPoints(bracketPos, pos);\n if (!before) {\n range.start.column++;\n range.end.column--;\n }\n range.cursor = range.start;\n }\n return range;\n };\n this.getMatchingBracketRanges = function (pos, isBackwards) {\n var line = this.getLine(pos.row);\n var bracketsRegExp = /([\\(\\[\\{])|([\\)\\]\\}])/;\n var chr = !isBackwards && line.charAt(pos.column - 1);\n var match = chr && chr.match(bracketsRegExp);\n if (!match) {\n chr = (isBackwards === undefined || isBackwards) && line.charAt(pos.column);\n pos = {\n row: pos.row,\n column: pos.column + 1\n };\n match = chr && chr.match(bracketsRegExp);\n }\n if (!match)\n return null;\n var startRange = new Range(pos.row, pos.column - 1, pos.row, pos.column);\n var bracketPos = match[1] ? this.$findClosingBracket(match[1], pos)\n : this.$findOpeningBracket(match[2], pos);\n if (!bracketPos)\n return [startRange];\n var endRange = new Range(bracketPos.row, bracketPos.column, bracketPos.row, bracketPos.column + 1);\n return [startRange, endRange];\n };\n this.$brackets = {\n \")\": \"(\",\n \"(\": \")\",\n \"]\": \"[\",\n \"[\": \"]\",\n \"{\": \"}\",\n \"}\": \"{\",\n \"<\": \">\",\n \">\": \"<\"\n };\n this.$findOpeningBracket = function (bracket, position, typeRe) {\n var openBracket = this.$brackets[bracket];\n var depth = 1;\n var iterator = new TokenIterator(this, position.row, position.column);\n var token = iterator.getCurrentToken();\n if (!token)\n token = iterator.stepForward();\n if (!token)\n return;\n if (!typeRe) {\n typeRe = new RegExp(\"(\\\\.?\" +\n token.type.replace(\".\", \"\\\\.\").replace(\"rparen\", \".paren\")\n .replace(/\\b(?:end)\\b/, \"(?:start|begin|end)\")\n .replace(/-close\\b/, \"-(close|open)\")\n + \")+\");\n }\n var valueIndex = position.column - iterator.getCurrentTokenColumn() - 2;\n var value = token.value;\n while (true) {\n while (valueIndex >= 0) {\n var chr = value.charAt(valueIndex);\n if (chr == openBracket) {\n depth -= 1;\n if (depth == 0) {\n return { row: iterator.getCurrentTokenRow(),\n column: valueIndex + iterator.getCurrentTokenColumn() };\n }\n }\n else if (chr == bracket) {\n depth += 1;\n }\n valueIndex -= 1;\n }\n do {\n token = iterator.stepBackward();\n } while (token && !typeRe.test(token.type));\n if (token == null)\n break;\n value = token.value;\n valueIndex = value.length - 1;\n }\n return null;\n };\n this.$findClosingBracket = function (bracket, position, typeRe) {\n var closingBracket = this.$brackets[bracket];\n var depth = 1;\n var iterator = new TokenIterator(this, position.row, position.column);\n var token = iterator.getCurrentToken();\n if (!token)\n token = iterator.stepForward();\n if (!token)\n return;\n if (!typeRe) {\n typeRe = new RegExp(\"(\\\\.?\" +\n token.type.replace(\".\", \"\\\\.\").replace(\"lparen\", \".paren\")\n .replace(/\\b(?:start|begin)\\b/, \"(?:start|begin|end)\")\n .replace(/-open\\b/, \"-(close|open)\")\n + \")+\");\n }\n var valueIndex = position.column - iterator.getCurrentTokenColumn();\n while (true) {\n var value = token.value;\n var valueLength = value.length;\n while (valueIndex < valueLength) {\n var chr = value.charAt(valueIndex);\n if (chr == closingBracket) {\n depth -= 1;\n if (depth == 0) {\n return { row: iterator.getCurrentTokenRow(),\n column: valueIndex + iterator.getCurrentTokenColumn() };\n }\n }\n else if (chr == bracket) {\n depth += 1;\n }\n valueIndex += 1;\n }\n do {\n token = iterator.stepForward();\n } while (token && !typeRe.test(token.type));\n if (token == null)\n break;\n valueIndex = 0;\n }\n return null;\n };\n this.getMatchingTags = function (pos) {\n var iterator = new TokenIterator(this, pos.row, pos.column);\n var token = this.$findTagName(iterator);\n if (!token)\n return;\n var prevToken = iterator.stepBackward();\n if (prevToken.value === '<') {\n return this.$findClosingTag(iterator, token);\n }\n else {\n return this.$findOpeningTag(iterator, token);\n }\n };\n this.$findTagName = function (iterator) {\n var token = iterator.getCurrentToken();\n var found = false;\n var backward = false;\n if (token && token.type.indexOf('tag-name') === -1) {\n do {\n if (backward)\n token = iterator.stepBackward();\n else\n token = iterator.stepForward();\n if (token) {\n if (token.value === \"/>\") {\n backward = true;\n }\n else if (token.type.indexOf('tag-name') !== -1) {\n found = true;\n }\n }\n } while (token && !found);\n }\n return token;\n };\n this.$findClosingTag = function (iterator, token) {\n var prevToken;\n var currentTag = token.value;\n var tag = token.value;\n var depth = 0;\n var openTagStart = new Range(iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn(), iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() + 1);\n token = iterator.stepForward();\n var openTagName = new Range(iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn(), iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() + token.value.length);\n var foundOpenTagEnd = false;\n do {\n prevToken = token;\n token = iterator.stepForward();\n if (token) {\n if (token.value === '>' && !foundOpenTagEnd) {\n var openTagEnd = new Range(iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn(), iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() + 1); //Range for `>`\n foundOpenTagEnd = true;\n }\n if (token.type.indexOf('tag-name') !== -1) {\n currentTag = token.value;\n if (tag === currentTag) {\n if (prevToken.value === '<') {\n depth++;\n }\n else if (prevToken.value === '') {\n var closeTagEnd = new Range(iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn(), iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() + 1); //Range for >\n }\n else {\n return;\n }\n }\n }\n }\n }\n else if (tag === currentTag && token.value === '/>') { // self-closing tag\n depth--;\n if (depth < 0) { //found self-closing tag end\n var closeTagStart = new Range(iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn(), iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() + 2);\n var closeTagName = closeTagStart;\n var closeTagEnd = closeTagName;\n var openTagEnd = new Range(openTagName.end.row, openTagName.end.column, openTagName.end.row, openTagName.end.column + 1);\n }\n }\n }\n } while (token && depth >= 0);\n if (openTagStart && openTagEnd && closeTagStart && closeTagEnd && openTagName && closeTagName) {\n return {\n openTag: new Range(openTagStart.start.row, openTagStart.start.column, openTagEnd.end.row, openTagEnd.end.column),\n closeTag: new Range(closeTagStart.start.row, closeTagStart.start.column, closeTagEnd.end.row, closeTagEnd.end.column),\n openTagName: openTagName,\n closeTagName: closeTagName\n };\n }\n };\n this.$findOpeningTag = function (iterator, token) {\n var prevToken = iterator.getCurrentToken();\n var tag = token.value;\n var depth = 0;\n var startRow = iterator.getCurrentTokenRow();\n var startColumn = iterator.getCurrentTokenColumn();\n var endColumn = startColumn + 2;\n var closeTagStart = new Range(startRow, startColumn, startRow, endColumn); //Range for \")\n return;\n var closeTagEnd = new Range(iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn(), iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() + 1); //Range for >\n iterator.stepBackward();\n iterator.stepBackward();\n do {\n token = prevToken;\n startRow = iterator.getCurrentTokenRow();\n startColumn = iterator.getCurrentTokenColumn();\n endColumn = startColumn + token.value.length;\n prevToken = iterator.stepBackward();\n if (token) {\n if (token.type.indexOf('tag-name') !== -1) {\n if (tag === token.value) {\n if (prevToken.value === '<') {\n depth++;\n if (depth > 0) { //found opening tag\n var openTagName = new Range(startRow, startColumn, startRow, endColumn);\n var openTagStart = new Range(iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn(), iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() + 1); //Range for <\n do {\n token = iterator.stepForward();\n } while (token && token.value !== '>');\n var openTagEnd = new Range(iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn(), iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() + 1); //Range for >\n }\n }\n else if (prevToken.value === '') { // self-closing tag\n var stepCount = 0;\n var tmpToken = prevToken;\n while (tmpToken) {\n if (tmpToken.type.indexOf('tag-name') !== -1 && tmpToken.value === tag) {\n depth--;\n break;\n }\n else if (tmpToken.value === '<') {\n break;\n }\n tmpToken = iterator.stepBackward();\n stepCount++;\n }\n for (var i = 0; i < stepCount; i++) {\n iterator.stepForward();\n }\n }\n }\n } while (prevToken && depth <= 0);\n if (openTagStart && openTagEnd && closeTagStart && closeTagEnd && openTagName && closeTagName) {\n return {\n openTag: new Range(openTagStart.start.row, openTagStart.start.column, openTagEnd.end.row, openTagEnd.end.column),\n closeTag: new Range(closeTagStart.start.row, closeTagStart.start.column, closeTagEnd.end.row, closeTagEnd.end.column),\n openTagName: openTagName,\n closeTagName: closeTagName\n };\n }\n };\n}\nexports.BracketMatch = BracketMatch;\n\n});\n\nace.define(\"ace/edit_session\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/bidihandler\",\"ace/config\",\"ace/lib/event_emitter\",\"ace/selection\",\"ace/mode/text\",\"ace/range\",\"ace/document\",\"ace/background_tokenizer\",\"ace/search_highlight\",\"ace/undomanager\",\"ace/edit_session/folding\",\"ace/edit_session/bracket_match\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"./lib/oop\");\nvar lang = require(\"./lib/lang\");\nvar BidiHandler = require(\"./bidihandler\").BidiHandler;\nvar config = require(\"./config\");\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar Selection = require(\"./selection\").Selection;\nvar TextMode = require(\"./mode/text\").Mode;\nvar Range = require(\"./range\").Range;\nvar Document = require(\"./document\").Document;\nvar BackgroundTokenizer = require(\"./background_tokenizer\").BackgroundTokenizer;\nvar SearchHighlight = require(\"./search_highlight\").SearchHighlight;\nvar UndoManager = require(\"./undomanager\").UndoManager;\nvar EditSession = /** @class */ (function () {\n function EditSession(text, mode) {\n this.$breakpoints = [];\n this.$decorations = [];\n this.$frontMarkers = {};\n this.$backMarkers = {};\n this.$markerId = 1;\n this.$undoSelect = true;\n this.$foldData = [];\n this.id = \"session\" + (++EditSession.$uid);\n this.$foldData.toString = function () {\n return this.join(\"\\n\");\n };\n this.bgTokenizer = new BackgroundTokenizer((new TextMode()).getTokenizer(), this);\n var _self = this;\n this.bgTokenizer.on(\"update\", function (e) {\n _self._signal(\"tokenizerUpdate\", e);\n });\n this.on(\"changeFold\", this.onChangeFold.bind(this));\n this.$onChange = this.onChange.bind(this);\n if (typeof text != \"object\" || !text.getLine)\n text = new Document(text);\n this.setDocument(text);\n this.selection = new Selection(this);\n this.$bidiHandler = new BidiHandler(this);\n config.resetOptions(this);\n this.setMode(mode);\n config._signal(\"session\", this);\n this.destroyed = false;\n }\n EditSession.prototype.setDocument = function (doc) {\n if (this.doc)\n this.doc.off(\"change\", this.$onChange);\n this.doc = doc;\n doc.on(\"change\", this.$onChange, true);\n this.bgTokenizer.setDocument(this.getDocument());\n this.resetCaches();\n };\n EditSession.prototype.getDocument = function () {\n return this.doc;\n };\n EditSession.prototype.$resetRowCache = function (docRow) {\n if (!docRow) {\n this.$docRowCache = [];\n this.$screenRowCache = [];\n return;\n }\n var l = this.$docRowCache.length;\n var i = this.$getRowCacheIndex(this.$docRowCache, docRow) + 1;\n if (l > i) {\n this.$docRowCache.splice(i, l);\n this.$screenRowCache.splice(i, l);\n }\n };\n EditSession.prototype.$getRowCacheIndex = function (cacheArray, val) {\n var low = 0;\n var hi = cacheArray.length - 1;\n while (low <= hi) {\n var mid = (low + hi) >> 1;\n var c = cacheArray[mid];\n if (val > c)\n low = mid + 1;\n else if (val < c)\n hi = mid - 1;\n else\n return mid;\n }\n return low - 1;\n };\n EditSession.prototype.resetCaches = function () {\n this.$modified = true;\n this.$wrapData = [];\n this.$rowLengthCache = [];\n this.$resetRowCache(0);\n if (!this.destroyed)\n this.bgTokenizer.start(0);\n };\n EditSession.prototype.onChangeFold = function (e) {\n var fold = e.data;\n this.$resetRowCache(fold.start.row);\n };\n EditSession.prototype.onChange = function (delta) {\n this.$modified = true;\n this.$bidiHandler.onChange(delta);\n this.$resetRowCache(delta.start.row);\n var removedFolds = this.$updateInternalDataOnChange(delta);\n if (!this.$fromUndo && this.$undoManager) {\n if (removedFolds && removedFolds.length) {\n this.$undoManager.add({\n action: \"removeFolds\",\n folds: removedFolds\n }, this.mergeUndoDeltas);\n this.mergeUndoDeltas = true;\n }\n this.$undoManager.add(delta, this.mergeUndoDeltas);\n this.mergeUndoDeltas = true;\n this.$informUndoManager.schedule();\n }\n this.bgTokenizer.$updateOnChange(delta);\n this._signal(\"change\", delta);\n };\n EditSession.prototype.setValue = function (text) {\n this.doc.setValue(text);\n this.selection.moveTo(0, 0);\n this.$resetRowCache(0);\n this.setUndoManager(this.$undoManager);\n this.getUndoManager().reset();\n };\n EditSession.fromJSON = function (session) {\n session = JSON.parse(session);\n var undoManager = new UndoManager();\n undoManager.$undoStack = session.history.undo;\n undoManager.$redoStack = session.history.redo;\n undoManager.mark = session.history.mark;\n undoManager.$rev = session.history.rev;\n var editSession = new EditSession(session.value);\n session.folds.forEach(function (fold) {\n editSession.addFold(\"...\", Range.fromPoints(fold.start, fold.end));\n });\n editSession.setAnnotations(session.annotations);\n editSession.setBreakpoints(session.breakpoints);\n editSession.setMode(session.mode);\n editSession.setScrollLeft(session.scrollLeft);\n editSession.setScrollTop(session.scrollTop);\n editSession.setUndoManager(undoManager);\n editSession.selection.fromJSON(session.selection);\n return editSession;\n };\n EditSession.prototype.toJSON = function () {\n return {\n annotations: this.$annotations,\n breakpoints: this.$breakpoints,\n folds: this.getAllFolds().map(function (fold) {\n return fold.range;\n }),\n history: this.getUndoManager(),\n mode: this.$mode.$id,\n scrollLeft: this.$scrollLeft,\n scrollTop: this.$scrollTop,\n selection: this.selection.toJSON(),\n value: this.doc.getValue()\n };\n };\n EditSession.prototype.toString = function () {\n return this.doc.getValue();\n };\n EditSession.prototype.getSelection = function () {\n return this.selection;\n };\n EditSession.prototype.getState = function (row) {\n return this.bgTokenizer.getState(row);\n };\n EditSession.prototype.getTokens = function (row) {\n return this.bgTokenizer.getTokens(row);\n };\n EditSession.prototype.getTokenAt = function (row, column) {\n var tokens = this.bgTokenizer.getTokens(row);\n var token, c = 0;\n if (column == null) {\n var i = tokens.length - 1;\n c = this.getLine(row).length;\n }\n else {\n for (var i = 0; i < tokens.length; i++) {\n c += tokens[i].value.length;\n if (c >= column)\n break;\n }\n }\n token = tokens[i];\n if (!token)\n return null;\n token.index = i;\n token.start = c - token.value.length;\n return token;\n };\n EditSession.prototype.setUndoManager = function (undoManager) {\n this.$undoManager = undoManager;\n if (this.$informUndoManager)\n this.$informUndoManager.cancel();\n if (undoManager) {\n var self = this;\n undoManager.addSession(this);\n this.$syncInformUndoManager = function () {\n self.$informUndoManager.cancel();\n self.mergeUndoDeltas = false;\n };\n this.$informUndoManager = lang.delayedCall(this.$syncInformUndoManager);\n }\n else {\n this.$syncInformUndoManager = function () { };\n }\n };\n EditSession.prototype.markUndoGroup = function () {\n if (this.$syncInformUndoManager)\n this.$syncInformUndoManager();\n };\n EditSession.prototype.getUndoManager = function () {\n return this.$undoManager || this.$defaultUndoManager;\n };\n EditSession.prototype.getTabString = function () {\n if (this.getUseSoftTabs()) {\n return lang.stringRepeat(\" \", this.getTabSize());\n }\n else {\n return \"\\t\";\n }\n };\n EditSession.prototype.setUseSoftTabs = function (val) {\n this.setOption(\"useSoftTabs\", val);\n };\n EditSession.prototype.getUseSoftTabs = function () {\n return this.$useSoftTabs && !this.$mode.$indentWithTabs;\n };\n EditSession.prototype.setTabSize = function (tabSize) {\n this.setOption(\"tabSize\", tabSize);\n };\n EditSession.prototype.getTabSize = function () {\n return this.$tabSize;\n };\n EditSession.prototype.isTabStop = function (position) {\n return this.$useSoftTabs && (position.column % this.$tabSize === 0);\n };\n EditSession.prototype.setNavigateWithinSoftTabs = function (navigateWithinSoftTabs) {\n this.setOption(\"navigateWithinSoftTabs\", navigateWithinSoftTabs);\n };\n EditSession.prototype.getNavigateWithinSoftTabs = function () {\n return this.$navigateWithinSoftTabs;\n };\n EditSession.prototype.setOverwrite = function (overwrite) {\n this.setOption(\"overwrite\", overwrite);\n };\n EditSession.prototype.getOverwrite = function () {\n return this.$overwrite;\n };\n EditSession.prototype.toggleOverwrite = function () {\n this.setOverwrite(!this.$overwrite);\n };\n EditSession.prototype.addGutterDecoration = function (row, className) {\n if (!this.$decorations[row])\n this.$decorations[row] = \"\";\n this.$decorations[row] += \" \" + className;\n this._signal(\"changeBreakpoint\", {});\n };\n EditSession.prototype.removeGutterDecoration = function (row, className) {\n this.$decorations[row] = (this.$decorations[row] || \"\").replace(\" \" + className, \"\");\n this._signal(\"changeBreakpoint\", {});\n };\n EditSession.prototype.getBreakpoints = function () {\n return this.$breakpoints;\n };\n EditSession.prototype.setBreakpoints = function (rows) {\n this.$breakpoints = [];\n for (var i = 0; i < rows.length; i++) {\n this.$breakpoints[rows[i]] = \"ace_breakpoint\";\n }\n this._signal(\"changeBreakpoint\", {});\n };\n EditSession.prototype.clearBreakpoints = function () {\n this.$breakpoints = [];\n this._signal(\"changeBreakpoint\", {});\n };\n EditSession.prototype.setBreakpoint = function (row, className) {\n if (className === undefined)\n className = \"ace_breakpoint\";\n if (className)\n this.$breakpoints[row] = className;\n else\n delete this.$breakpoints[row];\n this._signal(\"changeBreakpoint\", {});\n };\n EditSession.prototype.clearBreakpoint = function (row) {\n delete this.$breakpoints[row];\n this._signal(\"changeBreakpoint\", {});\n };\n EditSession.prototype.addMarker = function (range, clazz, type, inFront) {\n var id = this.$markerId++;\n var marker = {\n range: range,\n type: type || \"line\",\n renderer: typeof type == \"function\" ? type : null,\n clazz: clazz,\n inFront: !!inFront,\n id: id\n };\n if (inFront) {\n this.$frontMarkers[id] = marker;\n this._signal(\"changeFrontMarker\");\n }\n else {\n this.$backMarkers[id] = marker;\n this._signal(\"changeBackMarker\");\n }\n return id;\n };\n EditSession.prototype.addDynamicMarker = function (marker, inFront) {\n if (!marker.update)\n return;\n var id = this.$markerId++;\n marker.id = id;\n marker.inFront = !!inFront;\n if (inFront) {\n this.$frontMarkers[id] = marker;\n this._signal(\"changeFrontMarker\");\n }\n else {\n this.$backMarkers[id] = marker;\n this._signal(\"changeBackMarker\");\n }\n return marker;\n };\n EditSession.prototype.removeMarker = function (markerId) {\n var marker = this.$frontMarkers[markerId] || this.$backMarkers[markerId];\n if (!marker)\n return;\n var markers = marker.inFront ? this.$frontMarkers : this.$backMarkers;\n delete (markers[markerId]);\n this._signal(marker.inFront ? \"changeFrontMarker\" : \"changeBackMarker\");\n };\n EditSession.prototype.getMarkers = function (inFront) {\n return inFront ? this.$frontMarkers : this.$backMarkers;\n };\n EditSession.prototype.highlight = function (re) {\n if (!this.$searchHighlight) {\n var highlight = new SearchHighlight(null, \"ace_selected-word\", \"text\");\n this.$searchHighlight = this.addDynamicMarker(highlight);\n }\n this.$searchHighlight.setRegexp(re);\n };\n EditSession.prototype.highlightLines = function (startRow, endRow, clazz, inFront) {\n if (typeof endRow != \"number\") {\n clazz = endRow;\n endRow = startRow;\n }\n if (!clazz)\n clazz = \"ace_step\";\n var range = new Range(startRow, 0, endRow, Infinity);\n range.id = this.addMarker(range, clazz, \"fullLine\", inFront);\n return range;\n };\n EditSession.prototype.setAnnotations = function (annotations) {\n this.$annotations = annotations;\n this._signal(\"changeAnnotation\", {});\n };\n EditSession.prototype.getAnnotations = function () {\n return this.$annotations || [];\n };\n EditSession.prototype.clearAnnotations = function () {\n this.setAnnotations([]);\n };\n EditSession.prototype.$detectNewLine = function (text) {\n var match = text.match(/^.*?(\\r?\\n)/m);\n if (match) {\n this.$autoNewLine = match[1];\n }\n else {\n this.$autoNewLine = \"\\n\";\n }\n };\n EditSession.prototype.getWordRange = function (row, column) {\n var line = this.getLine(row);\n var inToken = false;\n if (column > 0)\n inToken = !!line.charAt(column - 1).match(this.tokenRe);\n if (!inToken)\n inToken = !!line.charAt(column).match(this.tokenRe);\n if (inToken)\n var re = this.tokenRe;\n else if (/^\\s+$/.test(line.slice(column - 1, column + 1)))\n var re = /\\s/;\n else\n var re = this.nonTokenRe;\n var start = column;\n if (start > 0) {\n do {\n start--;\n } while (start >= 0 && line.charAt(start).match(re));\n start++;\n }\n var end = column;\n while (end < line.length && line.charAt(end).match(re)) {\n end++;\n }\n return new Range(row, start, row, end);\n };\n EditSession.prototype.getAWordRange = function (row, column) {\n var wordRange = this.getWordRange(row, column);\n var line = this.getLine(wordRange.end.row);\n while (line.charAt(wordRange.end.column).match(/[ \\t]/)) {\n wordRange.end.column += 1;\n }\n return wordRange;\n };\n EditSession.prototype.setNewLineMode = function (newLineMode) {\n this.doc.setNewLineMode(newLineMode);\n };\n EditSession.prototype.getNewLineMode = function () {\n return this.doc.getNewLineMode();\n };\n EditSession.prototype.setUseWorker = function (useWorker) { this.setOption(\"useWorker\", useWorker); };\n EditSession.prototype.getUseWorker = function () { return this.$useWorker; };\n EditSession.prototype.onReloadTokenizer = function (e) {\n var rows = e.data;\n this.bgTokenizer.start(rows.first);\n this._signal(\"tokenizerUpdate\", e);\n };\n EditSession.prototype.setMode = function (mode, cb) {\n if (mode && typeof mode === \"object\") {\n if (mode.getTokenizer)\n return this.$onChangeMode(mode);\n var options = mode;\n var path = options.path;\n }\n else {\n path = mode || \"ace/mode/text\";\n }\n if (!this.$modes[\"ace/mode/text\"])\n this.$modes[\"ace/mode/text\"] = new TextMode();\n if (this.$modes[path] && !options) {\n this.$onChangeMode(this.$modes[path]);\n cb && cb();\n return;\n }\n this.$modeId = path;\n config.loadModule([\"mode\", path], function (m) {\n if (this.$modeId !== path)\n return cb && cb();\n if (this.$modes[path] && !options) {\n this.$onChangeMode(this.$modes[path]);\n }\n else if (m && m.Mode) {\n m = new m.Mode(options);\n if (!options) {\n this.$modes[path] = m;\n m.$id = path;\n }\n this.$onChangeMode(m);\n }\n cb && cb();\n }.bind(this));\n if (!this.$mode)\n this.$onChangeMode(this.$modes[\"ace/mode/text\"], true);\n };\n EditSession.prototype.$onChangeMode = function (mode, $isPlaceholder) {\n if (!$isPlaceholder)\n this.$modeId = mode.$id;\n if (this.$mode === mode)\n return;\n var oldMode = this.$mode;\n this.$mode = mode;\n this.$stopWorker();\n if (this.$useWorker)\n this.$startWorker();\n var tokenizer = mode.getTokenizer();\n if (tokenizer.on !== undefined) {\n var onReloadTokenizer = this.onReloadTokenizer.bind(this);\n tokenizer.on(\"update\", onReloadTokenizer);\n }\n this.bgTokenizer.setTokenizer(tokenizer);\n this.bgTokenizer.setDocument(this.getDocument());\n this.tokenRe = mode.tokenRe;\n this.nonTokenRe = mode.nonTokenRe;\n if (!$isPlaceholder) {\n if (mode.attachToSession)\n mode.attachToSession(this);\n this.$options.wrapMethod.set.call(this, this.$wrapMethod);\n this.$setFolding(mode.foldingRules);\n this.bgTokenizer.start(0);\n this._emit(\"changeMode\", { oldMode: oldMode, mode: mode });\n }\n };\n EditSession.prototype.$stopWorker = function () {\n if (this.$worker) {\n this.$worker.terminate();\n this.$worker = null;\n }\n };\n EditSession.prototype.$startWorker = function () {\n try {\n this.$worker = this.$mode.createWorker(this);\n }\n catch (e) {\n config.warn(\"Could not load worker\", e);\n this.$worker = null;\n }\n };\n EditSession.prototype.getMode = function () {\n return this.$mode;\n };\n EditSession.prototype.setScrollTop = function (scrollTop) {\n if (this.$scrollTop === scrollTop || isNaN(scrollTop))\n return;\n this.$scrollTop = scrollTop;\n this._signal(\"changeScrollTop\", scrollTop);\n };\n EditSession.prototype.getScrollTop = function () {\n return this.$scrollTop;\n };\n EditSession.prototype.setScrollLeft = function (scrollLeft) {\n if (this.$scrollLeft === scrollLeft || isNaN(scrollLeft))\n return;\n this.$scrollLeft = scrollLeft;\n this._signal(\"changeScrollLeft\", scrollLeft);\n };\n EditSession.prototype.getScrollLeft = function () {\n return this.$scrollLeft;\n };\n EditSession.prototype.getScreenWidth = function () {\n this.$computeWidth();\n if (this.lineWidgets)\n return Math.max(this.getLineWidgetMaxWidth(), this.screenWidth);\n return this.screenWidth;\n };\n EditSession.prototype.getLineWidgetMaxWidth = function () {\n if (this.lineWidgetsWidth != null)\n return this.lineWidgetsWidth;\n var width = 0;\n this.lineWidgets.forEach(function (w) {\n if (w && w.screenWidth > width)\n width = w.screenWidth;\n });\n return this.lineWidgetWidth = width;\n };\n EditSession.prototype.$computeWidth = function (force) {\n if (this.$modified || force) {\n this.$modified = false;\n if (this.$useWrapMode)\n return this.screenWidth = this.$wrapLimit;\n var lines = this.doc.getAllLines();\n var cache = this.$rowLengthCache;\n var longestScreenLine = 0;\n var foldIndex = 0;\n var foldLine = this.$foldData[foldIndex];\n var foldStart = foldLine ? foldLine.start.row : Infinity;\n var len = lines.length;\n for (var i = 0; i < len; i++) {\n if (i > foldStart) {\n i = foldLine.end.row + 1;\n if (i >= len)\n break;\n foldLine = this.$foldData[foldIndex++];\n foldStart = foldLine ? foldLine.start.row : Infinity;\n }\n if (cache[i] == null)\n cache[i] = this.$getStringScreenWidth(lines[i])[0];\n if (cache[i] > longestScreenLine)\n longestScreenLine = cache[i];\n }\n this.screenWidth = longestScreenLine;\n }\n };\n EditSession.prototype.getLine = function (row) {\n return this.doc.getLine(row);\n };\n EditSession.prototype.getLines = function (firstRow, lastRow) {\n return this.doc.getLines(firstRow, lastRow);\n };\n EditSession.prototype.getLength = function () {\n return this.doc.getLength();\n };\n EditSession.prototype.getTextRange = function (range) {\n return this.doc.getTextRange(range || this.selection.getRange());\n };\n EditSession.prototype.insert = function (position, text) {\n return this.doc.insert(position, text);\n };\n EditSession.prototype.remove = function (range) {\n return this.doc.remove(range);\n };\n EditSession.prototype.removeFullLines = function (firstRow, lastRow) {\n return this.doc.removeFullLines(firstRow, lastRow);\n };\n EditSession.prototype.undoChanges = function (deltas, dontSelect) {\n if (!deltas.length)\n return;\n this.$fromUndo = true;\n for (var i = deltas.length - 1; i != -1; i--) {\n var delta = deltas[i];\n if (delta.action == \"insert\" || delta.action == \"remove\") {\n this.doc.revertDelta(delta);\n }\n else if (delta.folds) {\n this.addFolds(delta.folds);\n }\n }\n if (!dontSelect && this.$undoSelect) {\n if (deltas.selectionBefore)\n this.selection.fromJSON(deltas.selectionBefore);\n else\n this.selection.setRange(this.$getUndoSelection(deltas, true));\n }\n this.$fromUndo = false;\n };\n EditSession.prototype.redoChanges = function (deltas, dontSelect) {\n if (!deltas.length)\n return;\n this.$fromUndo = true;\n for (var i = 0; i < deltas.length; i++) {\n var delta = deltas[i];\n if (delta.action == \"insert\" || delta.action == \"remove\") {\n this.doc.$safeApplyDelta(delta);\n }\n }\n if (!dontSelect && this.$undoSelect) {\n if (deltas.selectionAfter)\n this.selection.fromJSON(deltas.selectionAfter);\n else\n this.selection.setRange(this.$getUndoSelection(deltas, false));\n }\n this.$fromUndo = false;\n };\n EditSession.prototype.setUndoSelect = function (enable) {\n this.$undoSelect = enable;\n };\n EditSession.prototype.$getUndoSelection = function (deltas, isUndo) {\n function isInsert(delta) {\n return isUndo ? delta.action !== \"insert\" : delta.action === \"insert\";\n }\n var range, point;\n for (var i = 0; i < deltas.length; i++) {\n var delta = deltas[i];\n if (!delta.start)\n continue; // skip folds\n if (!range) {\n if (isInsert(delta)) {\n range = Range.fromPoints(delta.start, delta.end);\n }\n else {\n range = Range.fromPoints(delta.start, delta.start);\n }\n continue;\n }\n if (isInsert(delta)) {\n point = delta.start;\n if (range.compare(point.row, point.column) == -1) {\n range.setStart(point);\n }\n point = delta.end;\n if (range.compare(point.row, point.column) == 1) {\n range.setEnd(point);\n }\n }\n else {\n point = delta.start;\n if (range.compare(point.row, point.column) == -1) {\n range = Range.fromPoints(delta.start, delta.start);\n }\n }\n }\n return range;\n };\n EditSession.prototype.replace = function (range, text) {\n return this.doc.replace(range, text);\n };\n EditSession.prototype.moveText = function (fromRange, toPosition, copy) {\n var text = this.getTextRange(fromRange);\n var folds = this.getFoldsInRange(fromRange);\n var toRange = Range.fromPoints(toPosition, toPosition);\n if (!copy) {\n this.remove(fromRange);\n var rowDiff = fromRange.start.row - fromRange.end.row;\n var collDiff = rowDiff ? -fromRange.end.column : fromRange.start.column - fromRange.end.column;\n if (collDiff) {\n if (toRange.start.row == fromRange.end.row && toRange.start.column > fromRange.end.column)\n toRange.start.column += collDiff;\n if (toRange.end.row == fromRange.end.row && toRange.end.column > fromRange.end.column)\n toRange.end.column += collDiff;\n }\n if (rowDiff && toRange.start.row >= fromRange.end.row) {\n toRange.start.row += rowDiff;\n toRange.end.row += rowDiff;\n }\n }\n toRange.end = this.insert(toRange.start, text);\n if (folds.length) {\n var oldStart = fromRange.start;\n var newStart = toRange.start;\n var rowDiff = newStart.row - oldStart.row;\n var collDiff = newStart.column - oldStart.column;\n this.addFolds(folds.map(function (x) {\n x = x.clone();\n if (x.start.row == oldStart.row)\n x.start.column += collDiff;\n if (x.end.row == oldStart.row)\n x.end.column += collDiff;\n x.start.row += rowDiff;\n x.end.row += rowDiff;\n return x;\n }));\n }\n return toRange;\n };\n EditSession.prototype.indentRows = function (startRow, endRow, indentString) {\n indentString = indentString.replace(/\\t/g, this.getTabString());\n for (var row = startRow; row <= endRow; row++)\n this.doc.insertInLine({ row: row, column: 0 }, indentString);\n };\n EditSession.prototype.outdentRows = function (range) {\n var rowRange = range.collapseRows();\n var deleteRange = new Range(0, 0, 0, 0);\n var size = this.getTabSize();\n for (var i = rowRange.start.row; i <= rowRange.end.row; ++i) {\n var line = this.getLine(i);\n deleteRange.start.row = i;\n deleteRange.end.row = i;\n for (var j = 0; j < size; ++j)\n if (line.charAt(j) != ' ')\n break;\n if (j < size && line.charAt(j) == '\\t') {\n deleteRange.start.column = j;\n deleteRange.end.column = j + 1;\n }\n else {\n deleteRange.start.column = 0;\n deleteRange.end.column = j;\n }\n this.remove(deleteRange);\n }\n };\n EditSession.prototype.$moveLines = function (firstRow, lastRow, dir) {\n firstRow = this.getRowFoldStart(firstRow);\n lastRow = this.getRowFoldEnd(lastRow);\n if (dir < 0) {\n var row = this.getRowFoldStart(firstRow + dir);\n if (row < 0)\n return 0;\n var diff = row - firstRow;\n }\n else if (dir > 0) {\n var row = this.getRowFoldEnd(lastRow + dir);\n if (row > this.doc.getLength() - 1)\n return 0;\n var diff = row - lastRow;\n }\n else {\n firstRow = this.$clipRowToDocument(firstRow);\n lastRow = this.$clipRowToDocument(lastRow);\n var diff = lastRow - firstRow + 1;\n }\n var range = new Range(firstRow, 0, lastRow, Number.MAX_VALUE);\n var folds = this.getFoldsInRange(range).map(function (x) {\n x = x.clone();\n x.start.row += diff;\n x.end.row += diff;\n return x;\n });\n var lines = dir == 0\n ? this.doc.getLines(firstRow, lastRow)\n : this.doc.removeFullLines(firstRow, lastRow);\n this.doc.insertFullLines(firstRow + diff, lines);\n folds.length && this.addFolds(folds);\n return diff;\n };\n EditSession.prototype.moveLinesUp = function (firstRow, lastRow) {\n return this.$moveLines(firstRow, lastRow, -1);\n };\n EditSession.prototype.moveLinesDown = function (firstRow, lastRow) {\n return this.$moveLines(firstRow, lastRow, 1);\n };\n EditSession.prototype.duplicateLines = function (firstRow, lastRow) {\n return this.$moveLines(firstRow, lastRow, 0);\n };\n EditSession.prototype.$clipRowToDocument = function (row) {\n return Math.max(0, Math.min(row, this.doc.getLength() - 1));\n };\n EditSession.prototype.$clipColumnToRow = function (row, column) {\n if (column < 0)\n return 0;\n return Math.min(this.doc.getLine(row).length, column);\n };\n EditSession.prototype.$clipPositionToDocument = function (row, column) {\n column = Math.max(0, column);\n if (row < 0) {\n row = 0;\n column = 0;\n }\n else {\n var len = this.doc.getLength();\n if (row >= len) {\n row = len - 1;\n column = this.doc.getLine(len - 1).length;\n }\n else {\n column = Math.min(this.doc.getLine(row).length, column);\n }\n }\n return {\n row: row,\n column: column\n };\n };\n EditSession.prototype.$clipRangeToDocument = function (range) {\n if (range.start.row < 0) {\n range.start.row = 0;\n range.start.column = 0;\n }\n else {\n range.start.column = this.$clipColumnToRow(range.start.row, range.start.column);\n }\n var len = this.doc.getLength() - 1;\n if (range.end.row > len) {\n range.end.row = len;\n range.end.column = this.doc.getLine(len).length;\n }\n else {\n range.end.column = this.$clipColumnToRow(range.end.row, range.end.column);\n }\n return range;\n };\n EditSession.prototype.setUseWrapMode = function (useWrapMode) {\n if (useWrapMode != this.$useWrapMode) {\n this.$useWrapMode = useWrapMode;\n this.$modified = true;\n this.$resetRowCache(0);\n if (useWrapMode) {\n var len = this.getLength();\n this.$wrapData = Array(len);\n this.$updateWrapData(0, len - 1);\n }\n this._signal(\"changeWrapMode\");\n }\n };\n EditSession.prototype.getUseWrapMode = function () {\n return this.$useWrapMode;\n };\n EditSession.prototype.setWrapLimitRange = function (min, max) {\n if (this.$wrapLimitRange.min !== min || this.$wrapLimitRange.max !== max) {\n this.$wrapLimitRange = { min: min, max: max };\n this.$modified = true;\n this.$bidiHandler.markAsDirty();\n if (this.$useWrapMode)\n this._signal(\"changeWrapMode\");\n }\n };\n EditSession.prototype.adjustWrapLimit = function (desiredLimit, $printMargin) {\n var limits = this.$wrapLimitRange;\n if (limits.max < 0)\n limits = { min: $printMargin, max: $printMargin };\n var wrapLimit = this.$constrainWrapLimit(desiredLimit, limits.min, limits.max);\n if (wrapLimit != this.$wrapLimit && wrapLimit > 1) {\n this.$wrapLimit = wrapLimit;\n this.$modified = true;\n if (this.$useWrapMode) {\n this.$updateWrapData(0, this.getLength() - 1);\n this.$resetRowCache(0);\n this._signal(\"changeWrapLimit\");\n }\n return true;\n }\n return false;\n };\n EditSession.prototype.$constrainWrapLimit = function (wrapLimit, min, max) {\n if (min)\n wrapLimit = Math.max(min, wrapLimit);\n if (max)\n wrapLimit = Math.min(max, wrapLimit);\n return wrapLimit;\n };\n EditSession.prototype.getWrapLimit = function () {\n return this.$wrapLimit;\n };\n EditSession.prototype.setWrapLimit = function (limit) {\n this.setWrapLimitRange(limit, limit);\n };\n EditSession.prototype.getWrapLimitRange = function () {\n return {\n min: this.$wrapLimitRange.min,\n max: this.$wrapLimitRange.max\n };\n };\n EditSession.prototype.$updateInternalDataOnChange = function (delta) {\n var useWrapMode = this.$useWrapMode;\n var action = delta.action;\n var start = delta.start;\n var end = delta.end;\n var firstRow = start.row;\n var lastRow = end.row;\n var len = lastRow - firstRow;\n var removedFolds = null;\n this.$updating = true;\n if (len != 0) {\n if (action === \"remove\") {\n this[useWrapMode ? \"$wrapData\" : \"$rowLengthCache\"].splice(firstRow, len);\n var foldLines = this.$foldData;\n removedFolds = this.getFoldsInRange(delta);\n this.removeFolds(removedFolds);\n var foldLine = this.getFoldLine(end.row);\n var idx = 0;\n if (foldLine) {\n foldLine.addRemoveChars(end.row, end.column, start.column - end.column);\n foldLine.shiftRow(-len);\n var foldLineBefore = this.getFoldLine(firstRow);\n if (foldLineBefore && foldLineBefore !== foldLine) {\n foldLineBefore.merge(foldLine);\n foldLine = foldLineBefore;\n }\n idx = foldLines.indexOf(foldLine) + 1;\n }\n for (idx; idx < foldLines.length; idx++) {\n var foldLine = foldLines[idx];\n if (foldLine.start.row >= end.row) {\n foldLine.shiftRow(-len);\n }\n }\n lastRow = firstRow;\n }\n else {\n var args = Array(len);\n args.unshift(firstRow, 0);\n var arr = useWrapMode ? this.$wrapData : this.$rowLengthCache;\n arr.splice.apply(arr, args);\n var foldLines = this.$foldData;\n var foldLine = this.getFoldLine(firstRow);\n var idx = 0;\n if (foldLine) {\n var cmp = foldLine.range.compareInside(start.row, start.column);\n if (cmp == 0) {\n foldLine = foldLine.split(start.row, start.column);\n if (foldLine) {\n foldLine.shiftRow(len);\n foldLine.addRemoveChars(lastRow, 0, end.column - start.column);\n }\n }\n else \n if (cmp == -1) {\n foldLine.addRemoveChars(firstRow, 0, end.column - start.column);\n foldLine.shiftRow(len);\n }\n idx = foldLines.indexOf(foldLine) + 1;\n }\n for (idx; idx < foldLines.length; idx++) {\n var foldLine = foldLines[idx];\n if (foldLine.start.row >= firstRow) {\n foldLine.shiftRow(len);\n }\n }\n }\n }\n else {\n len = Math.abs(delta.start.column - delta.end.column);\n if (action === \"remove\") {\n removedFolds = this.getFoldsInRange(delta);\n this.removeFolds(removedFolds);\n len = -len;\n }\n var foldLine = this.getFoldLine(firstRow);\n if (foldLine) {\n foldLine.addRemoveChars(firstRow, start.column, len);\n }\n }\n if (useWrapMode && this.$wrapData.length != this.doc.getLength()) {\n console.error(\"doc.getLength() and $wrapData.length have to be the same!\");\n }\n this.$updating = false;\n if (useWrapMode)\n this.$updateWrapData(firstRow, lastRow);\n else\n this.$updateRowLengthCache(firstRow, lastRow);\n return removedFolds;\n };\n EditSession.prototype.$updateRowLengthCache = function (firstRow, lastRow, b) {\n this.$rowLengthCache[firstRow] = null;\n this.$rowLengthCache[lastRow] = null;\n };\n EditSession.prototype.$updateWrapData = function (firstRow, lastRow) {\n var lines = this.doc.getAllLines();\n var tabSize = this.getTabSize();\n var wrapData = this.$wrapData;\n var wrapLimit = this.$wrapLimit;\n var tokens;\n var foldLine;\n var row = firstRow;\n lastRow = Math.min(lastRow, lines.length - 1);\n while (row <= lastRow) {\n foldLine = this.getFoldLine(row, foldLine);\n if (!foldLine) {\n tokens = this.$getDisplayTokens(lines[row]);\n wrapData[row] = this.$computeWrapSplits(tokens, wrapLimit, tabSize);\n row++;\n }\n else {\n tokens = [];\n foldLine.walk(function (placeholder, row, column, lastColumn) {\n var walkTokens;\n if (placeholder != null) {\n walkTokens = this.$getDisplayTokens(placeholder, tokens.length);\n walkTokens[0] = PLACEHOLDER_START;\n for (var i = 1; i < walkTokens.length; i++) {\n walkTokens[i] = PLACEHOLDER_BODY;\n }\n }\n else {\n walkTokens = this.$getDisplayTokens(lines[row].substring(lastColumn, column), tokens.length);\n }\n tokens = tokens.concat(walkTokens);\n }.bind(this), foldLine.end.row, lines[foldLine.end.row].length + 1);\n wrapData[foldLine.start.row] = this.$computeWrapSplits(tokens, wrapLimit, tabSize);\n row = foldLine.end.row + 1;\n }\n }\n };\n EditSession.prototype.$computeWrapSplits = function (tokens, wrapLimit, tabSize) {\n if (tokens.length == 0) {\n return [];\n }\n var splits = [];\n var displayLength = tokens.length;\n var lastSplit = 0, lastDocSplit = 0;\n var isCode = this.$wrapAsCode;\n var indentedSoftWrap = this.$indentedSoftWrap;\n var maxIndent = wrapLimit <= Math.max(2 * tabSize, 8)\n || indentedSoftWrap === false ? 0 : Math.floor(wrapLimit / 2);\n function getWrapIndent() {\n var indentation = 0;\n if (maxIndent === 0)\n return indentation;\n if (indentedSoftWrap) {\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n if (token == SPACE)\n indentation += 1;\n else if (token == TAB)\n indentation += tabSize;\n else if (token == TAB_SPACE)\n continue;\n else\n break;\n }\n }\n if (isCode && indentedSoftWrap !== false)\n indentation += tabSize;\n return Math.min(indentation, maxIndent);\n }\n function addSplit(screenPos) {\n var len = screenPos - lastSplit;\n for (var i = lastSplit; i < screenPos; i++) {\n var ch = tokens[i];\n if (ch === 12 || ch === 2)\n len -= 1;\n }\n if (!splits.length) {\n indent = getWrapIndent();\n splits.indent = indent;\n }\n lastDocSplit += len;\n splits.push(lastDocSplit);\n lastSplit = screenPos;\n }\n var indent = 0;\n while (displayLength - lastSplit > wrapLimit - indent) {\n var split = lastSplit + wrapLimit - indent;\n if (tokens[split - 1] >= SPACE && tokens[split] >= SPACE) {\n addSplit(split);\n continue;\n }\n if (tokens[split] == PLACEHOLDER_START || tokens[split] == PLACEHOLDER_BODY) {\n for (split; split != lastSplit - 1; split--) {\n if (tokens[split] == PLACEHOLDER_START) {\n break;\n }\n }\n if (split > lastSplit) {\n addSplit(split);\n continue;\n }\n split = lastSplit + wrapLimit;\n for (split; split < tokens.length; split++) {\n if (tokens[split] != PLACEHOLDER_BODY) {\n break;\n }\n }\n if (split == tokens.length) {\n break; // Breaks the while-loop.\n }\n addSplit(split);\n continue;\n }\n var minSplit = Math.max(split - (wrapLimit - (wrapLimit >> 2)), lastSplit - 1);\n while (split > minSplit && tokens[split] < PLACEHOLDER_START) {\n split--;\n }\n if (isCode) {\n while (split > minSplit && tokens[split] < PLACEHOLDER_START) {\n split--;\n }\n while (split > minSplit && tokens[split] == PUNCTUATION) {\n split--;\n }\n }\n else {\n while (split > minSplit && tokens[split] < SPACE) {\n split--;\n }\n }\n if (split > minSplit) {\n addSplit(++split);\n continue;\n }\n split = lastSplit + wrapLimit;\n if (tokens[split] == CHAR_EXT)\n split--;\n addSplit(split - indent);\n }\n return splits;\n };\n EditSession.prototype.$getDisplayTokens = function (str, offset) {\n var arr = [];\n var tabSize;\n offset = offset || 0;\n for (var i = 0; i < str.length; i++) {\n var c = str.charCodeAt(i);\n if (c == 9) {\n tabSize = this.getScreenTabSize(arr.length + offset);\n arr.push(TAB);\n for (var n = 1; n < tabSize; n++) {\n arr.push(TAB_SPACE);\n }\n }\n else if (c == 32) {\n arr.push(SPACE);\n }\n else if ((c > 39 && c < 48) || (c > 57 && c < 64)) {\n arr.push(PUNCTUATION);\n }\n else if (c >= 0x1100 && isFullWidth(c)) {\n arr.push(CHAR, CHAR_EXT);\n }\n else {\n arr.push(CHAR);\n }\n }\n return arr;\n };\n EditSession.prototype.$getStringScreenWidth = function (str, maxScreenColumn, screenColumn) {\n if (maxScreenColumn == 0)\n return [0, 0];\n if (maxScreenColumn == null)\n maxScreenColumn = Infinity;\n screenColumn = screenColumn || 0;\n var c, column;\n for (column = 0; column < str.length; column++) {\n c = str.charCodeAt(column);\n if (c == 9) {\n screenColumn += this.getScreenTabSize(screenColumn);\n }\n else if (c >= 0x1100 && isFullWidth(c)) {\n screenColumn += 2;\n }\n else {\n screenColumn += 1;\n }\n if (screenColumn > maxScreenColumn) {\n break;\n }\n }\n return [screenColumn, column];\n };\n EditSession.prototype.getRowLength = function (row) {\n var h = 1;\n if (this.lineWidgets)\n h += this.lineWidgets[row] && this.lineWidgets[row].rowCount || 0;\n if (!this.$useWrapMode || !this.$wrapData[row])\n return h;\n else\n return this.$wrapData[row].length + h;\n };\n EditSession.prototype.getRowLineCount = function (row) {\n if (!this.$useWrapMode || !this.$wrapData[row]) {\n return 1;\n }\n else {\n return this.$wrapData[row].length + 1;\n }\n };\n EditSession.prototype.getRowWrapIndent = function (screenRow) {\n if (this.$useWrapMode) {\n var pos = this.screenToDocumentPosition(screenRow, Number.MAX_VALUE);\n var splits = this.$wrapData[pos.row];\n return splits.length && splits[0] < pos.column ? splits.indent : 0;\n }\n else {\n return 0;\n }\n };\n EditSession.prototype.getScreenLastRowColumn = function (screenRow) {\n var pos = this.screenToDocumentPosition(screenRow, Number.MAX_VALUE);\n return this.documentToScreenColumn(pos.row, pos.column);\n };\n EditSession.prototype.getDocumentLastRowColumn = function (docRow, docColumn) {\n var screenRow = this.documentToScreenRow(docRow, docColumn);\n return this.getScreenLastRowColumn(screenRow);\n };\n EditSession.prototype.getDocumentLastRowColumnPosition = function (docRow, docColumn) {\n var screenRow = this.documentToScreenRow(docRow, docColumn);\n return this.screenToDocumentPosition(screenRow, Number.MAX_VALUE / 10);\n };\n EditSession.prototype.getRowSplitData = function (row) {\n if (!this.$useWrapMode) {\n return undefined;\n }\n else {\n return this.$wrapData[row];\n }\n };\n EditSession.prototype.getScreenTabSize = function (screenColumn) {\n return this.$tabSize - (screenColumn % this.$tabSize | 0);\n };\n EditSession.prototype.screenToDocumentRow = function (screenRow, screenColumn) {\n return this.screenToDocumentPosition(screenRow, screenColumn).row;\n };\n EditSession.prototype.screenToDocumentColumn = function (screenRow, screenColumn) {\n return this.screenToDocumentPosition(screenRow, screenColumn).column;\n };\n EditSession.prototype.screenToDocumentPosition = function (screenRow, screenColumn, offsetX) {\n if (screenRow < 0)\n return { row: 0, column: 0 };\n var line;\n var docRow = 0;\n var docColumn = 0;\n var column;\n var row = 0;\n var rowLength = 0;\n var rowCache = this.$screenRowCache;\n var i = this.$getRowCacheIndex(rowCache, screenRow);\n var l = rowCache.length;\n if (l && i >= 0) {\n var row = rowCache[i];\n var docRow = this.$docRowCache[i];\n var doCache = screenRow > rowCache[l - 1];\n }\n else {\n var doCache = !l;\n }\n var maxRow = this.getLength() - 1;\n var foldLine = this.getNextFoldLine(docRow);\n var foldStart = foldLine ? foldLine.start.row : Infinity;\n while (row <= screenRow) {\n rowLength = this.getRowLength(docRow);\n if (row + rowLength > screenRow || docRow >= maxRow) {\n break;\n }\n else {\n row += rowLength;\n docRow++;\n if (docRow > foldStart) {\n docRow = foldLine.end.row + 1;\n foldLine = this.getNextFoldLine(docRow, foldLine);\n foldStart = foldLine ? foldLine.start.row : Infinity;\n }\n }\n if (doCache) {\n this.$docRowCache.push(docRow);\n this.$screenRowCache.push(row);\n }\n }\n if (foldLine && foldLine.start.row <= docRow) {\n line = this.getFoldDisplayLine(foldLine);\n docRow = foldLine.start.row;\n }\n else if (row + rowLength <= screenRow || docRow > maxRow) {\n return {\n row: maxRow,\n column: this.getLine(maxRow).length\n };\n }\n else {\n line = this.getLine(docRow);\n foldLine = null;\n }\n var wrapIndent = 0, splitIndex = Math.floor(screenRow - row);\n if (this.$useWrapMode) {\n var splits = this.$wrapData[docRow];\n if (splits) {\n column = splits[splitIndex];\n if (splitIndex > 0 && splits.length) {\n wrapIndent = splits.indent;\n docColumn = splits[splitIndex - 1] || splits[splits.length - 1];\n line = line.substring(docColumn);\n }\n }\n }\n if (offsetX !== undefined && this.$bidiHandler.isBidiRow(row + splitIndex, docRow, splitIndex))\n screenColumn = this.$bidiHandler.offsetToCol(offsetX);\n docColumn += this.$getStringScreenWidth(line, screenColumn - wrapIndent)[1];\n if (this.$useWrapMode && docColumn >= column)\n docColumn = column - 1;\n if (foldLine)\n return foldLine.idxToPosition(docColumn);\n return { row: docRow, column: docColumn };\n };\n EditSession.prototype.documentToScreenPosition = function (docRow, docColumn) {\n if (typeof docColumn === \"undefined\")\n var pos = this.$clipPositionToDocument(docRow.row, docRow.column);\n else\n pos = this.$clipPositionToDocument(docRow, docColumn);\n docRow = pos.row;\n docColumn = pos.column;\n var screenRow = 0;\n var foldStartRow = null;\n var fold = null;\n fold = this.getFoldAt(docRow, docColumn, 1);\n if (fold) {\n docRow = fold.start.row;\n docColumn = fold.start.column;\n }\n var rowEnd, row = 0;\n var rowCache = this.$docRowCache;\n var i = this.$getRowCacheIndex(rowCache, docRow);\n var l = rowCache.length;\n if (l && i >= 0) {\n var row = rowCache[i];\n var screenRow = this.$screenRowCache[i];\n var doCache = docRow > rowCache[l - 1];\n }\n else {\n var doCache = !l;\n }\n var foldLine = this.getNextFoldLine(row);\n var foldStart = foldLine ? foldLine.start.row : Infinity;\n while (row < docRow) {\n if (row >= foldStart) {\n rowEnd = foldLine.end.row + 1;\n if (rowEnd > docRow)\n break;\n foldLine = this.getNextFoldLine(rowEnd, foldLine);\n foldStart = foldLine ? foldLine.start.row : Infinity;\n }\n else {\n rowEnd = row + 1;\n }\n screenRow += this.getRowLength(row);\n row = rowEnd;\n if (doCache) {\n this.$docRowCache.push(row);\n this.$screenRowCache.push(screenRow);\n }\n }\n var textLine = \"\";\n if (foldLine && row >= foldStart) {\n textLine = this.getFoldDisplayLine(foldLine, docRow, docColumn);\n foldStartRow = foldLine.start.row;\n }\n else {\n textLine = this.getLine(docRow).substring(0, docColumn);\n foldStartRow = docRow;\n }\n var wrapIndent = 0;\n if (this.$useWrapMode) {\n var wrapRow = this.$wrapData[foldStartRow];\n if (wrapRow) {\n var screenRowOffset = 0;\n while (textLine.length >= wrapRow[screenRowOffset]) {\n screenRow++;\n screenRowOffset++;\n }\n textLine = textLine.substring(wrapRow[screenRowOffset - 1] || 0, textLine.length);\n wrapIndent = screenRowOffset > 0 ? wrapRow.indent : 0;\n }\n }\n if (this.lineWidgets && this.lineWidgets[row] && this.lineWidgets[row].rowsAbove)\n screenRow += this.lineWidgets[row].rowsAbove;\n return {\n row: screenRow,\n column: wrapIndent + this.$getStringScreenWidth(textLine)[0]\n };\n };\n EditSession.prototype.documentToScreenColumn = function (row, docColumn) {\n return this.documentToScreenPosition(row, docColumn).column;\n };\n EditSession.prototype.documentToScreenRow = function (docRow, docColumn) {\n return this.documentToScreenPosition(docRow, docColumn).row;\n };\n EditSession.prototype.getScreenLength = function () {\n var screenRows = 0;\n var fold = null;\n if (!this.$useWrapMode) {\n screenRows = this.getLength();\n var foldData = this.$foldData;\n for (var i = 0; i < foldData.length; i++) {\n fold = foldData[i];\n screenRows -= fold.end.row - fold.start.row;\n }\n }\n else {\n var lastRow = this.$wrapData.length;\n var row = 0, i = 0;\n var fold = this.$foldData[i++];\n var foldStart = fold ? fold.start.row : Infinity;\n while (row < lastRow) {\n var splits = this.$wrapData[row];\n screenRows += splits ? splits.length + 1 : 1;\n row++;\n if (row > foldStart) {\n row = fold.end.row + 1;\n fold = this.$foldData[i++];\n foldStart = fold ? fold.start.row : Infinity;\n }\n }\n }\n if (this.lineWidgets)\n screenRows += this.$getWidgetScreenLength();\n return screenRows;\n };\n EditSession.prototype.$setFontMetrics = function (fm) {\n if (!this.$enableVarChar)\n return;\n this.$getStringScreenWidth = function (str, maxScreenColumn, screenColumn) {\n if (maxScreenColumn === 0)\n return [0, 0];\n if (!maxScreenColumn)\n maxScreenColumn = Infinity;\n screenColumn = screenColumn || 0;\n var c, column;\n for (column = 0; column < str.length; column++) {\n c = str.charAt(column);\n if (c === \"\\t\") {\n screenColumn += this.getScreenTabSize(screenColumn);\n }\n else {\n screenColumn += fm.getCharacterWidth(c);\n }\n if (screenColumn > maxScreenColumn) {\n break;\n }\n }\n return [screenColumn, column];\n };\n };\n EditSession.prototype.destroy = function () {\n if (!this.destroyed) {\n this.bgTokenizer.setDocument(null);\n this.bgTokenizer.cleanup();\n this.destroyed = true;\n }\n this.$stopWorker();\n this.removeAllListeners();\n if (this.doc) {\n this.doc.off(\"change\", this.$onChange);\n }\n this.selection.detach();\n };\n return EditSession;\n}());\nEditSession.$uid = 0;\nEditSession.prototype.$modes = config.$modes;\nEditSession.prototype.getValue = EditSession.prototype.toString;\nEditSession.prototype.$defaultUndoManager = {\n undo: function () { },\n redo: function () { },\n hasUndo: function () { },\n hasRedo: function () { },\n reset: function () { },\n add: function () { },\n addSelection: function () { },\n startNewGroup: function () { },\n addSession: function () { }\n};\nEditSession.prototype.$overwrite = false;\nEditSession.prototype.$mode = null;\nEditSession.prototype.$modeId = null;\nEditSession.prototype.$scrollTop = 0;\nEditSession.prototype.$scrollLeft = 0;\nEditSession.prototype.$wrapLimit = 80;\nEditSession.prototype.$useWrapMode = false;\nEditSession.prototype.$wrapLimitRange = {\n min: null,\n max: null\n};\nEditSession.prototype.lineWidgets = null;\nEditSession.prototype.isFullWidth = isFullWidth;\noop.implement(EditSession.prototype, EventEmitter);\nvar CHAR = 1, CHAR_EXT = 2, PLACEHOLDER_START = 3, PLACEHOLDER_BODY = 4, PUNCTUATION = 9, SPACE = 10, TAB = 11, TAB_SPACE = 12;\nfunction isFullWidth(c) {\n if (c < 0x1100)\n return false;\n return c >= 0x1100 && c <= 0x115F ||\n c >= 0x11A3 && c <= 0x11A7 ||\n c >= 0x11FA && c <= 0x11FF ||\n c >= 0x2329 && c <= 0x232A ||\n c >= 0x2E80 && c <= 0x2E99 ||\n c >= 0x2E9B && c <= 0x2EF3 ||\n c >= 0x2F00 && c <= 0x2FD5 ||\n c >= 0x2FF0 && c <= 0x2FFB ||\n c >= 0x3000 && c <= 0x303E ||\n c >= 0x3041 && c <= 0x3096 ||\n c >= 0x3099 && c <= 0x30FF ||\n c >= 0x3105 && c <= 0x312D ||\n c >= 0x3131 && c <= 0x318E ||\n c >= 0x3190 && c <= 0x31BA ||\n c >= 0x31C0 && c <= 0x31E3 ||\n c >= 0x31F0 && c <= 0x321E ||\n c >= 0x3220 && c <= 0x3247 ||\n c >= 0x3250 && c <= 0x32FE ||\n c >= 0x3300 && c <= 0x4DBF ||\n c >= 0x4E00 && c <= 0xA48C ||\n c >= 0xA490 && c <= 0xA4C6 ||\n c >= 0xA960 && c <= 0xA97C ||\n c >= 0xAC00 && c <= 0xD7A3 ||\n c >= 0xD7B0 && c <= 0xD7C6 ||\n c >= 0xD7CB && c <= 0xD7FB ||\n c >= 0xF900 && c <= 0xFAFF ||\n c >= 0xFE10 && c <= 0xFE19 ||\n c >= 0xFE30 && c <= 0xFE52 ||\n c >= 0xFE54 && c <= 0xFE66 ||\n c >= 0xFE68 && c <= 0xFE6B ||\n c >= 0xFF01 && c <= 0xFF60 ||\n c >= 0xFFE0 && c <= 0xFFE6;\n}\nrequire(\"./edit_session/folding\").Folding.call(EditSession.prototype);\nrequire(\"./edit_session/bracket_match\").BracketMatch.call(EditSession.prototype);\nconfig.defineOptions(EditSession.prototype, \"session\", {\n wrap: {\n set: function (value) {\n if (!value || value == \"off\")\n value = false;\n else if (value == \"free\")\n value = true;\n else if (value == \"printMargin\")\n value = -1;\n else if (typeof value == \"string\")\n value = parseInt(value, 10) || false;\n if (this.$wrap == value)\n return;\n this.$wrap = value;\n if (!value) {\n this.setUseWrapMode(false);\n }\n else {\n var col = typeof value == \"number\" ? value : null;\n this.setWrapLimitRange(col, col);\n this.setUseWrapMode(true);\n }\n },\n get: function () {\n if (this.getUseWrapMode()) {\n if (this.$wrap == -1)\n return \"printMargin\";\n if (!this.getWrapLimitRange().min)\n return \"free\";\n return this.$wrap;\n }\n return \"off\";\n },\n handlesSet: true\n },\n wrapMethod: {\n set: function (val) {\n val = val == \"auto\"\n ? this.$mode.type != \"text\"\n : val != \"text\";\n if (val != this.$wrapAsCode) {\n this.$wrapAsCode = val;\n if (this.$useWrapMode) {\n this.$useWrapMode = false;\n this.setUseWrapMode(true);\n }\n }\n },\n initialValue: \"auto\"\n },\n indentedSoftWrap: {\n set: function () {\n if (this.$useWrapMode) {\n this.$useWrapMode = false;\n this.setUseWrapMode(true);\n }\n },\n initialValue: true\n },\n firstLineNumber: {\n set: function () { this._signal(\"changeBreakpoint\"); },\n initialValue: 1\n },\n useWorker: {\n set: function (useWorker) {\n this.$useWorker = useWorker;\n this.$stopWorker();\n if (useWorker)\n this.$startWorker();\n },\n initialValue: true\n },\n useSoftTabs: { initialValue: true },\n tabSize: {\n set: function (tabSize) {\n tabSize = parseInt(tabSize);\n if (tabSize > 0 && this.$tabSize !== tabSize) {\n this.$modified = true;\n this.$rowLengthCache = [];\n this.$tabSize = tabSize;\n this._signal(\"changeTabSize\");\n }\n },\n initialValue: 4,\n handlesSet: true\n },\n navigateWithinSoftTabs: { initialValue: false },\n foldStyle: {\n set: function (val) { this.setFoldStyle(val); },\n handlesSet: true\n },\n overwrite: {\n set: function (val) { this._signal(\"changeOverwrite\"); },\n initialValue: false\n },\n newLineMode: {\n set: function (val) { this.doc.setNewLineMode(val); },\n get: function () { return this.doc.getNewLineMode(); },\n handlesSet: true\n },\n mode: {\n set: function (val) { this.setMode(val); },\n get: function () { return this.$modeId; },\n handlesSet: true\n }\n});\nexports.EditSession = EditSession;\n\n});\n\nace.define(\"ace/search\",[\"require\",\"exports\",\"module\",\"ace/lib/lang\",\"ace/lib/oop\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar lang = require(\"./lib/lang\");\nvar oop = require(\"./lib/oop\");\nvar Range = require(\"./range\").Range;\nvar Search = /** @class */ (function () {\n function Search() {\n this.$options = {};\n }\n Search.prototype.set = function (options) {\n oop.mixin(this.$options, options);\n return this;\n };\n Search.prototype.getOptions = function () {\n return lang.copyObject(this.$options);\n };\n Search.prototype.setOptions = function (options) {\n this.$options = options;\n };\n Search.prototype.find = function (session) {\n var options = this.$options;\n var iterator = this.$matchIterator(session, options);\n if (!iterator)\n return false;\n var firstRange = null;\n iterator.forEach(function (sr, sc, er, ec) {\n firstRange = new Range(sr, sc, er, ec);\n if (sc == ec && options.start && options.start.start\n && options.skipCurrent != false && firstRange.isEqual(options.start)) {\n firstRange = null;\n return false;\n }\n return true;\n });\n return firstRange;\n };\n Search.prototype.findAll = function (session) {\n var options = this.$options;\n if (!options.needle)\n return [];\n this.$assembleRegExp(options);\n var range = options.range;\n var lines = range\n ? session.getLines(range.start.row, range.end.row)\n : session.doc.getAllLines();\n var ranges = [];\n var re = options.re;\n if (options.$isMultiLine) {\n var len = re.length;\n var maxRow = lines.length - len;\n var prevRange;\n outer: for (var row = re.offset || 0; row <= maxRow; row++) {\n for (var j = 0; j < len; j++)\n if (lines[row + j].search(re[j]) == -1)\n continue outer;\n var startLine = lines[row];\n var line = lines[row + len - 1];\n var startIndex = startLine.length - startLine.match(re[0])[0].length;\n var endIndex = line.match(re[len - 1])[0].length;\n if (prevRange && prevRange.end.row === row &&\n prevRange.end.column > startIndex) {\n continue;\n }\n ranges.push(prevRange = new Range(row, startIndex, row + len - 1, endIndex));\n if (len > 2)\n row = row + len - 2;\n }\n }\n else {\n for (var i = 0; i < lines.length; i++) {\n var matches = lang.getMatchOffsets(lines[i], re);\n for (var j = 0; j < matches.length; j++) {\n var match = matches[j];\n ranges.push(new Range(i, match.offset, i, match.offset + match.length));\n }\n }\n }\n if (range) {\n var startColumn = range.start.column;\n var endColumn = range.end.column;\n var i = 0, j = ranges.length - 1;\n while (i < j && ranges[i].start.column < startColumn && ranges[i].start.row == 0)\n i++;\n var endRow = range.end.row - range.start.row;\n while (i < j && ranges[j].end.column > endColumn && ranges[j].end.row == endRow)\n j--;\n ranges = ranges.slice(i, j + 1);\n for (i = 0, j = ranges.length; i < j; i++) {\n ranges[i].start.row += range.start.row;\n ranges[i].end.row += range.start.row;\n }\n }\n return ranges;\n };\n Search.prototype.replace = function (input, replacement) {\n var options = this.$options;\n var re = this.$assembleRegExp(options);\n if (options.$isMultiLine)\n return replacement;\n if (!re)\n return;\n var match = re.exec(input);\n if (!match || match[0].length != input.length)\n return null;\n replacement = input.replace(re, replacement);\n if (options.preserveCase) {\n replacement = replacement.split(\"\");\n for (var i = Math.min(input.length, input.length); i--;) {\n var ch = input[i];\n if (ch && ch.toLowerCase() != ch)\n replacement[i] = replacement[i].toUpperCase();\n else\n replacement[i] = replacement[i].toLowerCase();\n }\n replacement = replacement.join(\"\");\n }\n return replacement;\n };\n Search.prototype.$assembleRegExp = function (options, $disableFakeMultiline) {\n if (options.needle instanceof RegExp)\n return options.re = options.needle;\n var needle = options.needle;\n if (!options.needle)\n return options.re = false;\n if (!options.regExp)\n needle = lang.escapeRegExp(needle);\n var modifier = options.caseSensitive ? \"gm\" : \"gmi\";\n try {\n new RegExp(needle, \"u\");\n options.$supportsUnicodeFlag = true;\n modifier += \"u\";\n }\n catch (e) {\n options.$supportsUnicodeFlag = false; //left for backward compatibility with previous versions for cases like /ab\\{2}/gu\n }\n if (options.wholeWord)\n needle = addWordBoundary(needle, options);\n options.$isMultiLine = !$disableFakeMultiline && /[\\n\\r]/.test(needle);\n if (options.$isMultiLine)\n return options.re = this.$assembleMultilineRegExp(needle, modifier);\n try {\n var re = new RegExp(needle, modifier);\n }\n catch (e) {\n re = false;\n }\n return options.re = re;\n };\n Search.prototype.$assembleMultilineRegExp = function (needle, modifier) {\n var parts = needle.replace(/\\r\\n|\\r|\\n/g, \"$\\n^\").split(\"\\n\");\n var re = [];\n for (var i = 0; i < parts.length; i++)\n try {\n re.push(new RegExp(parts[i], modifier));\n }\n catch (e) {\n return false;\n }\n return re;\n };\n Search.prototype.$matchIterator = function (session, options) {\n var re = this.$assembleRegExp(options);\n if (!re)\n return false;\n var backwards = options.backwards == true;\n var skipCurrent = options.skipCurrent != false;\n var supportsUnicodeFlag = re.unicode;\n var range = options.range;\n var start = options.start;\n if (!start)\n start = range ? range[backwards ? \"end\" : \"start\"] : session.selection.getRange();\n if (start.start)\n start = start[skipCurrent != backwards ? \"end\" : \"start\"];\n var firstRow = range ? range.start.row : 0;\n var lastRow = range ? range.end.row : session.getLength() - 1;\n if (backwards) {\n var forEach = function (callback) {\n var row = start.row;\n if (forEachInLine(row, start.column, callback))\n return;\n for (row--; row >= firstRow; row--)\n if (forEachInLine(row, Number.MAX_VALUE, callback))\n return;\n if (options.wrap == false)\n return;\n for (row = lastRow, firstRow = start.row; row >= firstRow; row--)\n if (forEachInLine(row, Number.MAX_VALUE, callback))\n return;\n };\n }\n else {\n var forEach = function (callback) {\n var row = start.row;\n if (forEachInLine(row, start.column, callback))\n return;\n for (row = row + 1; row <= lastRow; row++)\n if (forEachInLine(row, 0, callback))\n return;\n if (options.wrap == false)\n return;\n for (row = firstRow, lastRow = start.row; row <= lastRow; row++)\n if (forEachInLine(row, 0, callback))\n return;\n };\n }\n if (options.$isMultiLine) {\n var len = re.length;\n var forEachInLine = function (row, offset, callback) {\n var startRow = backwards ? row - len + 1 : row;\n if (startRow < 0 || startRow + len > session.getLength())\n return;\n var line = session.getLine(startRow);\n var startIndex = line.search(re[0]);\n if (!backwards && startIndex < offset || startIndex === -1)\n return;\n for (var i = 1; i < len; i++) {\n line = session.getLine(startRow + i);\n if (line.search(re[i]) == -1)\n return;\n }\n var endIndex = line.match(re[len - 1])[0].length;\n if (backwards && endIndex > offset)\n return;\n if (callback(startRow, startIndex, startRow + len - 1, endIndex))\n return true;\n };\n }\n else if (backwards) {\n var forEachInLine = function (row, endIndex, callback) {\n var line = session.getLine(row);\n var matches = [];\n var m, last = 0;\n re.lastIndex = 0;\n while ((m = re.exec(line))) {\n var length = m[0].length;\n last = m.index;\n if (!length) {\n if (last >= line.length)\n break;\n re.lastIndex = last += lang.skipEmptyMatch(line, last, supportsUnicodeFlag);\n }\n if (m.index + length > endIndex)\n break;\n matches.push(m.index, length);\n }\n for (var i = matches.length - 1; i >= 0; i -= 2) {\n var column = matches[i - 1];\n var length = matches[i];\n if (callback(row, column, row, column + length))\n return true;\n }\n };\n }\n else {\n var forEachInLine = function (row, startIndex, callback) {\n var line = session.getLine(row);\n var last;\n var m;\n re.lastIndex = startIndex;\n while ((m = re.exec(line))) {\n var length = m[0].length;\n last = m.index;\n if (callback(row, last, row, last + length))\n return true;\n if (!length) {\n re.lastIndex = last += lang.skipEmptyMatch(line, last, supportsUnicodeFlag);\n if (last >= line.length)\n return false;\n }\n }\n };\n }\n return { forEach: forEach };\n };\n return Search;\n}());\nfunction addWordBoundary(needle, options) {\n var supportsLookbehind = lang.supportsLookbehind();\n function wordBoundary(c, firstChar) {\n if (firstChar === void 0) { firstChar = true; }\n var wordRegExp = supportsLookbehind && options.$supportsUnicodeFlag ? new RegExp(\"[\\\\p{L}\\\\p{N}_]\", \"u\") : new RegExp(\"\\\\w\");\n if (wordRegExp.test(c) || options.regExp) {\n if (supportsLookbehind && options.$supportsUnicodeFlag) {\n if (firstChar)\n return \"(?<=^|[^\\\\p{L}\\\\p{N}_])\";\n return \"(?=[^\\\\p{L}\\\\p{N}_]|$)\";\n }\n return \"\\\\b\";\n }\n return \"\";\n }\n var needleArray = Array.from(needle);\n var firstChar = needleArray[0];\n var lastChar = needleArray[needleArray.length - 1];\n return wordBoundary(firstChar) + needle + wordBoundary(lastChar, false);\n}\nexports.Search = Search;\n\n});\n\nace.define(\"ace/keyboard/hash_handler\",[\"require\",\"exports\",\"module\",\"ace/lib/keys\",\"ace/lib/useragent\"], function(require, exports, module){\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar keyUtil = require(\"../lib/keys\");\nvar useragent = require(\"../lib/useragent\");\nvar KEY_MODS = keyUtil.KEY_MODS;\nvar MultiHashHandler = /** @class */ (function () {\n function MultiHashHandler(config, platform) {\n this.$init(config, platform, false);\n }\n MultiHashHandler.prototype.$init = function (config, platform, $singleCommand) {\n this.platform = platform || (useragent.isMac ? \"mac\" : \"win\");\n this.commands = {};\n this.commandKeyBinding = {};\n this.addCommands(config);\n this.$singleCommand = $singleCommand;\n };\n MultiHashHandler.prototype.addCommand = function (command) {\n if (this.commands[command.name])\n this.removeCommand(command);\n this.commands[command.name] = command;\n if (command.bindKey)\n this._buildKeyHash(command);\n };\n MultiHashHandler.prototype.removeCommand = function (command, keepCommand) {\n var name = command && (typeof command === 'string' ? command : command.name);\n command = this.commands[name];\n if (!keepCommand)\n delete this.commands[name];\n var ckb = this.commandKeyBinding;\n for (var keyId in ckb) {\n var cmdGroup = ckb[keyId];\n if (cmdGroup == command) {\n delete ckb[keyId];\n }\n else if (Array.isArray(cmdGroup)) {\n var i = cmdGroup.indexOf(command);\n if (i != -1) {\n cmdGroup.splice(i, 1);\n if (cmdGroup.length == 1)\n ckb[keyId] = cmdGroup[0];\n }\n }\n }\n };\n MultiHashHandler.prototype.bindKey = function (key, command, position) {\n if (typeof key == \"object\" && key) {\n if (position == undefined)\n position = key.position;\n key = key[this.platform];\n }\n if (!key)\n return;\n if (typeof command == \"function\")\n return this.addCommand({ exec: command, bindKey: key, name: command.name || key });\n key.split(\"|\").forEach(function (keyPart) {\n var chain = \"\";\n if (keyPart.indexOf(\" \") != -1) {\n var parts = keyPart.split(/\\s+/);\n keyPart = parts.pop();\n parts.forEach(function (keyPart) {\n var binding = this.parseKeys(keyPart);\n var id = KEY_MODS[binding.hashId] + binding.key;\n chain += (chain ? \" \" : \"\") + id;\n this._addCommandToBinding(chain, \"chainKeys\");\n }, this);\n chain += \" \";\n }\n var binding = this.parseKeys(keyPart);\n var id = KEY_MODS[binding.hashId] + binding.key;\n this._addCommandToBinding(chain + id, command, position);\n }, this);\n };\n MultiHashHandler.prototype._addCommandToBinding = function (keyId, command, position) {\n var ckb = this.commandKeyBinding, i;\n if (!command) {\n delete ckb[keyId];\n }\n else if (!ckb[keyId] || this.$singleCommand) {\n ckb[keyId] = command;\n }\n else {\n if (!Array.isArray(ckb[keyId])) {\n ckb[keyId] = [ckb[keyId]];\n }\n else if ((i = ckb[keyId].indexOf(command)) != -1) {\n ckb[keyId].splice(i, 1);\n }\n if (typeof position != \"number\") {\n position = getPosition(command);\n }\n var commands = ckb[keyId];\n for (i = 0; i < commands.length; i++) {\n var other = commands[i];\n var otherPos = getPosition(other);\n if (otherPos > position)\n break;\n }\n commands.splice(i, 0, command);\n }\n };\n MultiHashHandler.prototype.addCommands = function (commands) {\n commands && Object.keys(commands).forEach(function (name) {\n var command = commands[name];\n if (!command)\n return;\n if (typeof command === \"string\")\n return this.bindKey(command, name);\n if (typeof command === \"function\")\n command = { exec: command };\n if (typeof command !== \"object\")\n return;\n if (!command.name)\n command.name = name;\n this.addCommand(command);\n }, this);\n };\n MultiHashHandler.prototype.removeCommands = function (commands) {\n Object.keys(commands).forEach(function (name) {\n this.removeCommand(commands[name]);\n }, this);\n };\n MultiHashHandler.prototype.bindKeys = function (keyList) {\n Object.keys(keyList).forEach(function (key) {\n this.bindKey(key, keyList[key]);\n }, this);\n };\n MultiHashHandler.prototype._buildKeyHash = function (command) {\n this.bindKey(command.bindKey, command);\n };\n MultiHashHandler.prototype.parseKeys = function (keys) {\n var parts = keys.toLowerCase().split(/[\\-\\+]([\\-\\+])?/).filter(function (x) { return x; });\n var key = parts.pop();\n var keyCode = keyUtil[key];\n if (keyUtil.FUNCTION_KEYS[keyCode])\n key = keyUtil.FUNCTION_KEYS[keyCode].toLowerCase();\n else if (!parts.length)\n return { key: key, hashId: -1 };\n else if (parts.length == 1 && parts[0] == \"shift\")\n return { key: key.toUpperCase(), hashId: -1 };\n var hashId = 0;\n for (var i = parts.length; i--;) {\n var modifier = keyUtil.KEY_MODS[parts[i]];\n if (modifier == null) {\n if (typeof console != \"undefined\")\n console.error(\"invalid modifier \" + parts[i] + \" in \" + keys);\n return false;\n }\n hashId |= modifier;\n }\n return { key: key, hashId: hashId };\n };\n MultiHashHandler.prototype.findKeyCommand = function (hashId, keyString) {\n var key = KEY_MODS[hashId] + keyString;\n return this.commandKeyBinding[key];\n };\n MultiHashHandler.prototype.handleKeyboard = function (data, hashId, keyString, keyCode) {\n if (keyCode < 0)\n return;\n var key = KEY_MODS[hashId] + keyString;\n var command = this.commandKeyBinding[key];\n if (data.$keyChain) {\n data.$keyChain += \" \" + key;\n command = this.commandKeyBinding[data.$keyChain] || command;\n }\n if (command) {\n if (command == \"chainKeys\" || command[command.length - 1] == \"chainKeys\") {\n data.$keyChain = data.$keyChain || key;\n return { command: \"null\" };\n }\n }\n if (data.$keyChain) {\n if ((!hashId || hashId == 4) && keyString.length == 1)\n data.$keyChain = data.$keyChain.slice(0, -key.length - 1); // wait for input\n else if (hashId == -1 || keyCode > 0)\n data.$keyChain = \"\"; // reset keyChain\n }\n return { command: command };\n };\n MultiHashHandler.prototype.getStatusText = function (editor, data) {\n return data.$keyChain || \"\";\n };\n return MultiHashHandler;\n}());\nfunction getPosition(command) {\n return typeof command == \"object\" && command.bindKey\n && command.bindKey.position\n || (command.isDefault ? -100 : 0);\n}\nvar HashHandler = /** @class */ (function (_super) {\n __extends(HashHandler, _super);\n function HashHandler(config, platform) {\n var _this = _super.call(this, config, platform) || this;\n _this.$singleCommand = true;\n return _this;\n }\n return HashHandler;\n}(MultiHashHandler));\nHashHandler.call = function (thisArg, config, platform) {\n MultiHashHandler.prototype.$init.call(thisArg, config, platform, true);\n};\nMultiHashHandler.call = function (thisArg, config, platform) {\n MultiHashHandler.prototype.$init.call(thisArg, config, platform, false);\n};\nexports.HashHandler = HashHandler;\nexports.MultiHashHandler = MultiHashHandler;\n\n});\n\nace.define(\"ace/commands/command_manager\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/keyboard/hash_handler\",\"ace/lib/event_emitter\"], function(require, exports, module){\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar oop = require(\"../lib/oop\");\nvar MultiHashHandler = require(\"../keyboard/hash_handler\").MultiHashHandler;\nvar EventEmitter = require(\"../lib/event_emitter\").EventEmitter;\nvar CommandManager = /** @class */ (function (_super) {\n __extends(CommandManager, _super);\n function CommandManager(platform, commands) {\n var _this = _super.call(this, commands, platform) || this;\n _this.byName = _this.commands;\n _this.setDefaultHandler(\"exec\", function (e) {\n if (!e.args) {\n return e.command.exec(e.editor, {}, e.event, true);\n }\n return e.command.exec(e.editor, e.args, e.event, false);\n });\n return _this;\n }\n CommandManager.prototype.exec = function (command, editor, args) {\n if (Array.isArray(command)) {\n for (var i = command.length; i--;) {\n if (this.exec(command[i], editor, args))\n return true;\n }\n return false;\n }\n if (typeof command === \"string\")\n command = this.commands[command];\n if (!command)\n return false;\n if (editor && editor.$readOnly && !command.readOnly)\n return false;\n if (this.$checkCommandState != false && command.isAvailable && !command.isAvailable(editor))\n return false;\n var e = { editor: editor, command: command, args: args };\n e.returnValue = this._emit(\"exec\", e);\n this._signal(\"afterExec\", e);\n return e.returnValue === false ? false : true;\n };\n CommandManager.prototype.toggleRecording = function (editor) {\n if (this.$inReplay)\n return;\n editor && editor._emit(\"changeStatus\");\n if (this.recording) {\n this.macro.pop();\n this.off(\"exec\", this.$addCommandToMacro);\n if (!this.macro.length)\n this.macro = this.oldMacro;\n return this.recording = false;\n }\n if (!this.$addCommandToMacro) {\n this.$addCommandToMacro = function (e) {\n this.macro.push([e.command, e.args]);\n }.bind(this);\n }\n this.oldMacro = this.macro;\n this.macro = [];\n this.on(\"exec\", this.$addCommandToMacro);\n return this.recording = true;\n };\n CommandManager.prototype.replay = function (editor) {\n if (this.$inReplay || !this.macro)\n return;\n if (this.recording)\n return this.toggleRecording(editor);\n try {\n this.$inReplay = true;\n this.macro.forEach(function (x) {\n if (typeof x == \"string\")\n this.exec(x, editor);\n else\n this.exec(x[0], editor, x[1]);\n }, this);\n }\n finally {\n this.$inReplay = false;\n }\n };\n CommandManager.prototype.trimMacro = function (m) {\n return m.map(function (x) {\n if (typeof x[0] != \"string\")\n x[0] = x[0].name;\n if (!x[1])\n x = x[0];\n return x;\n });\n };\n return CommandManager;\n}(MultiHashHandler));\noop.implement(CommandManager.prototype, EventEmitter);\nexports.CommandManager = CommandManager;\n\n});\n\nace.define(\"ace/commands/default_commands\",[\"require\",\"exports\",\"module\",\"ace/lib/lang\",\"ace/config\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar lang = require(\"../lib/lang\");\nvar config = require(\"../config\");\nvar Range = require(\"../range\").Range;\nfunction bindKey(win, mac) {\n return { win: win, mac: mac };\n}\nexports.commands = [{\n name: \"showSettingsMenu\",\n description: \"Show settings menu\",\n bindKey: bindKey(\"Ctrl-,\", \"Command-,\"),\n exec: function (editor) {\n config.loadModule(\"ace/ext/settings_menu\", function (module) {\n module.init(editor);\n editor.showSettingsMenu();\n });\n },\n readOnly: true\n }, {\n name: \"goToNextError\",\n description: \"Go to next error\",\n bindKey: bindKey(\"Alt-E\", \"F4\"),\n exec: function (editor) {\n config.loadModule(\"ace/ext/error_marker\", function (module) {\n module.showErrorMarker(editor, 1);\n });\n },\n scrollIntoView: \"animate\",\n readOnly: true\n }, {\n name: \"goToPreviousError\",\n description: \"Go to previous error\",\n bindKey: bindKey(\"Alt-Shift-E\", \"Shift-F4\"),\n exec: function (editor) {\n config.loadModule(\"ace/ext/error_marker\", function (module) {\n module.showErrorMarker(editor, -1);\n });\n },\n scrollIntoView: \"animate\",\n readOnly: true\n }, {\n name: \"selectall\",\n description: \"Select all\",\n bindKey: bindKey(\"Ctrl-A\", \"Command-A\"),\n exec: function (editor) { editor.selectAll(); },\n readOnly: true\n }, {\n name: \"centerselection\",\n description: \"Center selection\",\n bindKey: bindKey(null, \"Ctrl-L\"),\n exec: function (editor) { editor.centerSelection(); },\n readOnly: true\n }, {\n name: \"gotoline\",\n description: \"Go to line...\",\n bindKey: bindKey(\"Ctrl-L\", \"Command-L\"),\n exec: function (editor, line) {\n if (typeof line === \"number\" && !isNaN(line))\n editor.gotoLine(line);\n editor.prompt({ $type: \"gotoLine\" });\n },\n readOnly: true\n }, {\n name: \"fold\",\n bindKey: bindKey(\"Alt-L|Ctrl-F1\", \"Command-Alt-L|Command-F1\"),\n exec: function (editor) { editor.session.toggleFold(false); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"center\",\n readOnly: true\n }, {\n name: \"unfold\",\n bindKey: bindKey(\"Alt-Shift-L|Ctrl-Shift-F1\", \"Command-Alt-Shift-L|Command-Shift-F1\"),\n exec: function (editor) { editor.session.toggleFold(true); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"center\",\n readOnly: true\n }, {\n name: \"toggleFoldWidget\",\n description: \"Toggle fold widget\",\n bindKey: bindKey(\"F2\", \"F2\"),\n exec: function (editor) { editor.session.toggleFoldWidget(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"center\",\n readOnly: true\n }, {\n name: \"toggleParentFoldWidget\",\n description: \"Toggle parent fold widget\",\n bindKey: bindKey(\"Alt-F2\", \"Alt-F2\"),\n exec: function (editor) { editor.session.toggleFoldWidget(true); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"center\",\n readOnly: true\n }, {\n name: \"foldall\",\n description: \"Fold all\",\n bindKey: bindKey(null, \"Ctrl-Command-Option-0\"),\n exec: function (editor) { editor.session.foldAll(); },\n scrollIntoView: \"center\",\n readOnly: true\n }, {\n name: \"foldAllComments\",\n description: \"Fold all comments\",\n bindKey: bindKey(null, \"Ctrl-Command-Option-0\"),\n exec: function (editor) { editor.session.foldAllComments(); },\n scrollIntoView: \"center\",\n readOnly: true\n }, {\n name: \"foldOther\",\n description: \"Fold other\",\n bindKey: bindKey(\"Alt-0\", \"Command-Option-0\"),\n exec: function (editor) {\n editor.session.foldAll();\n editor.session.unfold(editor.selection.getAllRanges());\n },\n scrollIntoView: \"center\",\n readOnly: true\n }, {\n name: \"unfoldall\",\n description: \"Unfold all\",\n bindKey: bindKey(\"Alt-Shift-0\", \"Command-Option-Shift-0\"),\n exec: function (editor) { editor.session.unfold(); },\n scrollIntoView: \"center\",\n readOnly: true\n }, {\n name: \"findnext\",\n description: \"Find next\",\n bindKey: bindKey(\"Ctrl-K\", \"Command-G\"),\n exec: function (editor) { editor.findNext(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"center\",\n readOnly: true\n }, {\n name: \"findprevious\",\n description: \"Find previous\",\n bindKey: bindKey(\"Ctrl-Shift-K\", \"Command-Shift-G\"),\n exec: function (editor) { editor.findPrevious(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"center\",\n readOnly: true\n }, {\n name: \"selectOrFindNext\",\n description: \"Select or find next\",\n bindKey: bindKey(\"Alt-K\", \"Ctrl-G\"),\n exec: function (editor) {\n if (editor.selection.isEmpty())\n editor.selection.selectWord();\n else\n editor.findNext();\n },\n readOnly: true\n }, {\n name: \"selectOrFindPrevious\",\n description: \"Select or find previous\",\n bindKey: bindKey(\"Alt-Shift-K\", \"Ctrl-Shift-G\"),\n exec: function (editor) {\n if (editor.selection.isEmpty())\n editor.selection.selectWord();\n else\n editor.findPrevious();\n },\n readOnly: true\n }, {\n name: \"find\",\n description: \"Find\",\n bindKey: bindKey(\"Ctrl-F\", \"Command-F\"),\n exec: function (editor) {\n config.loadModule(\"ace/ext/searchbox\", function (e) { e.Search(editor); });\n },\n readOnly: true\n }, {\n name: \"overwrite\",\n description: \"Overwrite\",\n bindKey: \"Insert\",\n exec: function (editor) { editor.toggleOverwrite(); },\n readOnly: true\n }, {\n name: \"selecttostart\",\n description: \"Select to start\",\n bindKey: bindKey(\"Ctrl-Shift-Home\", \"Command-Shift-Home|Command-Shift-Up\"),\n exec: function (editor) { editor.getSelection().selectFileStart(); },\n multiSelectAction: \"forEach\",\n readOnly: true,\n scrollIntoView: \"animate\",\n aceCommandGroup: \"fileJump\"\n }, {\n name: \"gotostart\",\n description: \"Go to start\",\n bindKey: bindKey(\"Ctrl-Home\", \"Command-Home|Command-Up\"),\n exec: function (editor) { editor.navigateFileStart(); },\n multiSelectAction: \"forEach\",\n readOnly: true,\n scrollIntoView: \"animate\",\n aceCommandGroup: \"fileJump\"\n }, {\n name: \"selectup\",\n description: \"Select up\",\n bindKey: bindKey(\"Shift-Up\", \"Shift-Up|Ctrl-Shift-P\"),\n exec: function (editor) { editor.getSelection().selectUp(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"golineup\",\n description: \"Go line up\",\n bindKey: bindKey(\"Up\", \"Up|Ctrl-P\"),\n exec: function (editor, args) { editor.navigateUp(args.times); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"selecttoend\",\n description: \"Select to end\",\n bindKey: bindKey(\"Ctrl-Shift-End\", \"Command-Shift-End|Command-Shift-Down\"),\n exec: function (editor) { editor.getSelection().selectFileEnd(); },\n multiSelectAction: \"forEach\",\n readOnly: true,\n scrollIntoView: \"animate\",\n aceCommandGroup: \"fileJump\"\n }, {\n name: \"gotoend\",\n description: \"Go to end\",\n bindKey: bindKey(\"Ctrl-End\", \"Command-End|Command-Down\"),\n exec: function (editor) { editor.navigateFileEnd(); },\n multiSelectAction: \"forEach\",\n readOnly: true,\n scrollIntoView: \"animate\",\n aceCommandGroup: \"fileJump\"\n }, {\n name: \"selectdown\",\n description: \"Select down\",\n bindKey: bindKey(\"Shift-Down\", \"Shift-Down|Ctrl-Shift-N\"),\n exec: function (editor) { editor.getSelection().selectDown(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"golinedown\",\n description: \"Go line down\",\n bindKey: bindKey(\"Down\", \"Down|Ctrl-N\"),\n exec: function (editor, args) { editor.navigateDown(args.times); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"selectwordleft\",\n description: \"Select word left\",\n bindKey: bindKey(\"Ctrl-Shift-Left\", \"Option-Shift-Left\"),\n exec: function (editor) { editor.getSelection().selectWordLeft(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"gotowordleft\",\n description: \"Go to word left\",\n bindKey: bindKey(\"Ctrl-Left\", \"Option-Left\"),\n exec: function (editor) { editor.navigateWordLeft(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"selecttolinestart\",\n description: \"Select to line start\",\n bindKey: bindKey(\"Alt-Shift-Left\", \"Command-Shift-Left|Ctrl-Shift-A\"),\n exec: function (editor) { editor.getSelection().selectLineStart(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"gotolinestart\",\n description: \"Go to line start\",\n bindKey: bindKey(\"Alt-Left|Home\", \"Command-Left|Home|Ctrl-A\"),\n exec: function (editor) { editor.navigateLineStart(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"selectleft\",\n description: \"Select left\",\n bindKey: bindKey(\"Shift-Left\", \"Shift-Left|Ctrl-Shift-B\"),\n exec: function (editor) { editor.getSelection().selectLeft(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"gotoleft\",\n description: \"Go to left\",\n bindKey: bindKey(\"Left\", \"Left|Ctrl-B\"),\n exec: function (editor, args) { editor.navigateLeft(args.times); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"selectwordright\",\n description: \"Select word right\",\n bindKey: bindKey(\"Ctrl-Shift-Right\", \"Option-Shift-Right\"),\n exec: function (editor) { editor.getSelection().selectWordRight(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"gotowordright\",\n description: \"Go to word right\",\n bindKey: bindKey(\"Ctrl-Right\", \"Option-Right\"),\n exec: function (editor) { editor.navigateWordRight(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"selecttolineend\",\n description: \"Select to line end\",\n bindKey: bindKey(\"Alt-Shift-Right\", \"Command-Shift-Right|Shift-End|Ctrl-Shift-E\"),\n exec: function (editor) { editor.getSelection().selectLineEnd(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"gotolineend\",\n description: \"Go to line end\",\n bindKey: bindKey(\"Alt-Right|End\", \"Command-Right|End|Ctrl-E\"),\n exec: function (editor) { editor.navigateLineEnd(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"selectright\",\n description: \"Select right\",\n bindKey: bindKey(\"Shift-Right\", \"Shift-Right\"),\n exec: function (editor) { editor.getSelection().selectRight(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"gotoright\",\n description: \"Go to right\",\n bindKey: bindKey(\"Right\", \"Right|Ctrl-F\"),\n exec: function (editor, args) { editor.navigateRight(args.times); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"selectpagedown\",\n description: \"Select page down\",\n bindKey: \"Shift-PageDown\",\n exec: function (editor) { editor.selectPageDown(); },\n readOnly: true\n }, {\n name: \"pagedown\",\n description: \"Page down\",\n bindKey: bindKey(null, \"Option-PageDown\"),\n exec: function (editor) { editor.scrollPageDown(); },\n readOnly: true\n }, {\n name: \"gotopagedown\",\n description: \"Go to page down\",\n bindKey: bindKey(\"PageDown\", \"PageDown|Ctrl-V\"),\n exec: function (editor) { editor.gotoPageDown(); },\n readOnly: true\n }, {\n name: \"selectpageup\",\n description: \"Select page up\",\n bindKey: \"Shift-PageUp\",\n exec: function (editor) { editor.selectPageUp(); },\n readOnly: true\n }, {\n name: \"pageup\",\n description: \"Page up\",\n bindKey: bindKey(null, \"Option-PageUp\"),\n exec: function (editor) { editor.scrollPageUp(); },\n readOnly: true\n }, {\n name: \"gotopageup\",\n description: \"Go to page up\",\n bindKey: \"PageUp\",\n exec: function (editor) { editor.gotoPageUp(); },\n readOnly: true\n }, {\n name: \"scrollup\",\n description: \"Scroll up\",\n bindKey: bindKey(\"Ctrl-Up\", null),\n exec: function (e) { e.renderer.scrollBy(0, -2 * e.renderer.layerConfig.lineHeight); },\n readOnly: true\n }, {\n name: \"scrolldown\",\n description: \"Scroll down\",\n bindKey: bindKey(\"Ctrl-Down\", null),\n exec: function (e) { e.renderer.scrollBy(0, 2 * e.renderer.layerConfig.lineHeight); },\n readOnly: true\n }, {\n name: \"selectlinestart\",\n description: \"Select line start\",\n bindKey: \"Shift-Home\",\n exec: function (editor) { editor.getSelection().selectLineStart(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"selectlineend\",\n description: \"Select line end\",\n bindKey: \"Shift-End\",\n exec: function (editor) { editor.getSelection().selectLineEnd(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"togglerecording\",\n description: \"Toggle recording\",\n bindKey: bindKey(\"Ctrl-Alt-E\", \"Command-Option-E\"),\n exec: function (editor) { editor.commands.toggleRecording(editor); },\n readOnly: true\n }, {\n name: \"replaymacro\",\n description: \"Replay macro\",\n bindKey: bindKey(\"Ctrl-Shift-E\", \"Command-Shift-E\"),\n exec: function (editor) { editor.commands.replay(editor); },\n readOnly: true\n }, {\n name: \"jumptomatching\",\n description: \"Jump to matching\",\n bindKey: bindKey(\"Ctrl-\\\\|Ctrl-P\", \"Command-\\\\\"),\n exec: function (editor) { editor.jumpToMatching(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"animate\",\n readOnly: true\n }, {\n name: \"selecttomatching\",\n description: \"Select to matching\",\n bindKey: bindKey(\"Ctrl-Shift-\\\\|Ctrl-Shift-P\", \"Command-Shift-\\\\\"),\n exec: function (editor) { editor.jumpToMatching(true); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"animate\",\n readOnly: true\n }, {\n name: \"expandToMatching\",\n description: \"Expand to matching\",\n bindKey: bindKey(\"Ctrl-Shift-M\", \"Ctrl-Shift-M\"),\n exec: function (editor) { editor.jumpToMatching(true, true); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"animate\",\n readOnly: true\n }, {\n name: \"passKeysToBrowser\",\n description: \"Pass keys to browser\",\n bindKey: bindKey(null, null),\n exec: function () { },\n passEvent: true,\n readOnly: true\n }, {\n name: \"copy\",\n description: \"Copy\",\n exec: function (editor) {\n },\n readOnly: true\n },\n {\n name: \"cut\",\n description: \"Cut\",\n exec: function (editor) {\n var cutLine = editor.$copyWithEmptySelection && editor.selection.isEmpty();\n var range = cutLine ? editor.selection.getLineRange() : editor.selection.getRange();\n editor._emit(\"cut\", range);\n if (!range.isEmpty())\n editor.session.remove(range);\n editor.clearSelection();\n },\n scrollIntoView: \"cursor\",\n multiSelectAction: \"forEach\"\n }, {\n name: \"paste\",\n description: \"Paste\",\n exec: function (editor, args) {\n editor.$handlePaste(args);\n },\n scrollIntoView: \"cursor\"\n }, {\n name: \"removeline\",\n description: \"Remove line\",\n bindKey: bindKey(\"Ctrl-D\", \"Command-D\"),\n exec: function (editor) { editor.removeLines(); },\n scrollIntoView: \"cursor\",\n multiSelectAction: \"forEachLine\"\n }, {\n name: \"duplicateSelection\",\n description: \"Duplicate selection\",\n bindKey: bindKey(\"Ctrl-Shift-D\", \"Command-Shift-D\"),\n exec: function (editor) { editor.duplicateSelection(); },\n scrollIntoView: \"cursor\",\n multiSelectAction: \"forEach\"\n }, {\n name: \"sortlines\",\n description: \"Sort lines\",\n bindKey: bindKey(\"Ctrl-Alt-S\", \"Command-Alt-S\"),\n exec: function (editor) { editor.sortLines(); },\n scrollIntoView: \"selection\",\n multiSelectAction: \"forEachLine\"\n }, {\n name: \"togglecomment\",\n description: \"Toggle comment\",\n bindKey: bindKey(\"Ctrl-/\", \"Command-/\"),\n exec: function (editor) { editor.toggleCommentLines(); },\n multiSelectAction: \"forEachLine\",\n scrollIntoView: \"selectionPart\"\n }, {\n name: \"toggleBlockComment\",\n description: \"Toggle block comment\",\n bindKey: bindKey(\"Ctrl-Shift-/\", \"Command-Shift-/\"),\n exec: function (editor) { editor.toggleBlockComment(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"selectionPart\"\n }, {\n name: \"modifyNumberUp\",\n description: \"Modify number up\",\n bindKey: bindKey(\"Ctrl-Shift-Up\", \"Alt-Shift-Up\"),\n exec: function (editor) { editor.modifyNumber(1); },\n scrollIntoView: \"cursor\",\n multiSelectAction: \"forEach\"\n }, {\n name: \"modifyNumberDown\",\n description: \"Modify number down\",\n bindKey: bindKey(\"Ctrl-Shift-Down\", \"Alt-Shift-Down\"),\n exec: function (editor) { editor.modifyNumber(-1); },\n scrollIntoView: \"cursor\",\n multiSelectAction: \"forEach\"\n }, {\n name: \"replace\",\n description: \"Replace\",\n bindKey: bindKey(\"Ctrl-H\", \"Command-Option-F\"),\n exec: function (editor) {\n config.loadModule(\"ace/ext/searchbox\", function (e) { e.Search(editor, true); });\n }\n }, {\n name: \"undo\",\n description: \"Undo\",\n bindKey: bindKey(\"Ctrl-Z\", \"Command-Z\"),\n exec: function (editor) { editor.undo(); }\n }, {\n name: \"redo\",\n description: \"Redo\",\n bindKey: bindKey(\"Ctrl-Shift-Z|Ctrl-Y\", \"Command-Shift-Z|Command-Y\"),\n exec: function (editor) { editor.redo(); }\n }, {\n name: \"copylinesup\",\n description: \"Copy lines up\",\n bindKey: bindKey(\"Alt-Shift-Up\", \"Command-Option-Up\"),\n exec: function (editor) { editor.copyLinesUp(); },\n scrollIntoView: \"cursor\"\n }, {\n name: \"movelinesup\",\n description: \"Move lines up\",\n bindKey: bindKey(\"Alt-Up\", \"Option-Up\"),\n exec: function (editor) { editor.moveLinesUp(); },\n scrollIntoView: \"cursor\"\n }, {\n name: \"copylinesdown\",\n description: \"Copy lines down\",\n bindKey: bindKey(\"Alt-Shift-Down\", \"Command-Option-Down\"),\n exec: function (editor) { editor.copyLinesDown(); },\n scrollIntoView: \"cursor\"\n }, {\n name: \"movelinesdown\",\n description: \"Move lines down\",\n bindKey: bindKey(\"Alt-Down\", \"Option-Down\"),\n exec: function (editor) { editor.moveLinesDown(); },\n scrollIntoView: \"cursor\"\n }, {\n name: \"del\",\n description: \"Delete\",\n bindKey: bindKey(\"Delete\", \"Delete|Ctrl-D|Shift-Delete\"),\n exec: function (editor) { editor.remove(\"right\"); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"backspace\",\n description: \"Backspace\",\n bindKey: bindKey(\"Shift-Backspace|Backspace\", \"Ctrl-Backspace|Shift-Backspace|Backspace|Ctrl-H\"),\n exec: function (editor) { editor.remove(\"left\"); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"cut_or_delete\",\n description: \"Cut or delete\",\n bindKey: bindKey(\"Shift-Delete\", null),\n exec: function (editor) {\n if (editor.selection.isEmpty()) {\n editor.remove(\"left\");\n }\n else {\n return false;\n }\n },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"removetolinestart\",\n description: \"Remove to line start\",\n bindKey: bindKey(\"Alt-Backspace\", \"Command-Backspace\"),\n exec: function (editor) { editor.removeToLineStart(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"removetolineend\",\n description: \"Remove to line end\",\n bindKey: bindKey(\"Alt-Delete\", \"Ctrl-K|Command-Delete\"),\n exec: function (editor) { editor.removeToLineEnd(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"removetolinestarthard\",\n description: \"Remove to line start hard\",\n bindKey: bindKey(\"Ctrl-Shift-Backspace\", null),\n exec: function (editor) {\n var range = editor.selection.getRange();\n range.start.column = 0;\n editor.session.remove(range);\n },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"removetolineendhard\",\n description: \"Remove to line end hard\",\n bindKey: bindKey(\"Ctrl-Shift-Delete\", null),\n exec: function (editor) {\n var range = editor.selection.getRange();\n range.end.column = Number.MAX_VALUE;\n editor.session.remove(range);\n },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"removewordleft\",\n description: \"Remove word left\",\n bindKey: bindKey(\"Ctrl-Backspace\", \"Alt-Backspace|Ctrl-Alt-Backspace\"),\n exec: function (editor) { editor.removeWordLeft(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"removewordright\",\n description: \"Remove word right\",\n bindKey: bindKey(\"Ctrl-Delete\", \"Alt-Delete\"),\n exec: function (editor) { editor.removeWordRight(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"outdent\",\n description: \"Outdent\",\n bindKey: bindKey(\"Shift-Tab\", \"Shift-Tab\"),\n exec: function (editor) { editor.blockOutdent(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"selectionPart\"\n }, {\n name: \"indent\",\n description: \"Indent\",\n bindKey: bindKey(\"Tab\", \"Tab\"),\n exec: function (editor) { editor.indent(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"selectionPart\"\n }, {\n name: \"blockoutdent\",\n description: \"Block outdent\",\n bindKey: bindKey(\"Ctrl-[\", \"Ctrl-[\"),\n exec: function (editor) { editor.blockOutdent(); },\n multiSelectAction: \"forEachLine\",\n scrollIntoView: \"selectionPart\"\n }, {\n name: \"blockindent\",\n description: \"Block indent\",\n bindKey: bindKey(\"Ctrl-]\", \"Ctrl-]\"),\n exec: function (editor) { editor.blockIndent(); },\n multiSelectAction: \"forEachLine\",\n scrollIntoView: \"selectionPart\"\n }, {\n name: \"insertstring\",\n description: \"Insert string\",\n exec: function (editor, str) { editor.insert(str); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"inserttext\",\n description: \"Insert text\",\n exec: function (editor, args) {\n editor.insert(lang.stringRepeat(args.text || \"\", args.times || 1));\n },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"splitline\",\n description: \"Split line\",\n bindKey: bindKey(null, \"Ctrl-O\"),\n exec: function (editor) { editor.splitLine(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"transposeletters\",\n description: \"Transpose letters\",\n bindKey: bindKey(\"Alt-Shift-X\", \"Ctrl-T\"),\n exec: function (editor) { editor.transposeLetters(); },\n multiSelectAction: function (editor) { editor.transposeSelections(1); },\n scrollIntoView: \"cursor\"\n }, {\n name: \"touppercase\",\n description: \"To uppercase\",\n bindKey: bindKey(\"Ctrl-U\", \"Ctrl-U\"),\n exec: function (editor) { editor.toUpperCase(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"tolowercase\",\n description: \"To lowercase\",\n bindKey: bindKey(\"Ctrl-Shift-U\", \"Ctrl-Shift-U\"),\n exec: function (editor) { editor.toLowerCase(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"autoindent\",\n description: \"Auto Indent\",\n bindKey: bindKey(null, null),\n exec: function (editor) { editor.autoIndent(); },\n multiSelectAction: \"forEachLine\",\n scrollIntoView: \"animate\"\n }, {\n name: \"expandtoline\",\n description: \"Expand to line\",\n bindKey: bindKey(\"Ctrl-Shift-L\", \"Command-Shift-L\"),\n exec: function (editor) {\n var range = editor.selection.getRange();\n range.start.column = range.end.column = 0;\n range.end.row++;\n editor.selection.setRange(range, false);\n },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"openlink\",\n bindKey: bindKey(\"Ctrl+F3\", \"F3\"),\n exec: function (editor) { editor.openLink(); }\n }, {\n name: \"joinlines\",\n description: \"Join lines\",\n bindKey: bindKey(null, null),\n exec: function (editor) {\n var isBackwards = editor.selection.isBackwards();\n var selectionStart = isBackwards ? editor.selection.getSelectionLead() : editor.selection.getSelectionAnchor();\n var selectionEnd = isBackwards ? editor.selection.getSelectionAnchor() : editor.selection.getSelectionLead();\n var firstLineEndCol = editor.session.doc.getLine(selectionStart.row).length;\n var selectedText = editor.session.doc.getTextRange(editor.selection.getRange());\n var selectedCount = selectedText.replace(/\\n\\s*/, \" \").length;\n var insertLine = editor.session.doc.getLine(selectionStart.row);\n for (var i = selectionStart.row + 1; i <= selectionEnd.row + 1; i++) {\n var curLine = lang.stringTrimLeft(lang.stringTrimRight(editor.session.doc.getLine(i)));\n if (curLine.length !== 0) {\n curLine = \" \" + curLine;\n }\n insertLine += curLine;\n }\n if (selectionEnd.row + 1 < (editor.session.doc.getLength() - 1)) {\n insertLine += editor.session.doc.getNewLineCharacter();\n }\n editor.clearSelection();\n editor.session.doc.replace(new Range(selectionStart.row, 0, selectionEnd.row + 2, 0), insertLine);\n if (selectedCount > 0) {\n editor.selection.moveCursorTo(selectionStart.row, selectionStart.column);\n editor.selection.selectTo(selectionStart.row, selectionStart.column + selectedCount);\n }\n else {\n firstLineEndCol = editor.session.doc.getLine(selectionStart.row).length > firstLineEndCol ? (firstLineEndCol + 1) : firstLineEndCol;\n editor.selection.moveCursorTo(selectionStart.row, firstLineEndCol);\n }\n },\n multiSelectAction: \"forEach\",\n readOnly: true\n }, {\n name: \"invertSelection\",\n description: \"Invert selection\",\n bindKey: bindKey(null, null),\n exec: function (editor) {\n var endRow = editor.session.doc.getLength() - 1;\n var endCol = editor.session.doc.getLine(endRow).length;\n var ranges = editor.selection.rangeList.ranges;\n var newRanges = [];\n if (ranges.length < 1) {\n ranges = [editor.selection.getRange()];\n }\n for (var i = 0; i < ranges.length; i++) {\n if (i == (ranges.length - 1)) {\n if (!(ranges[i].end.row === endRow && ranges[i].end.column === endCol)) {\n newRanges.push(new Range(ranges[i].end.row, ranges[i].end.column, endRow, endCol));\n }\n }\n if (i === 0) {\n if (!(ranges[i].start.row === 0 && ranges[i].start.column === 0)) {\n newRanges.push(new Range(0, 0, ranges[i].start.row, ranges[i].start.column));\n }\n }\n else {\n newRanges.push(new Range(ranges[i - 1].end.row, ranges[i - 1].end.column, ranges[i].start.row, ranges[i].start.column));\n }\n }\n editor.exitMultiSelectMode();\n editor.clearSelection();\n for (var i = 0; i < newRanges.length; i++) {\n editor.selection.addRange(newRanges[i], false);\n }\n },\n readOnly: true,\n scrollIntoView: \"none\"\n }, {\n name: \"addLineAfter\",\n description: \"Add new line after the current line\",\n exec: function (editor) {\n editor.selection.clearSelection();\n editor.navigateLineEnd();\n editor.insert(\"\\n\");\n },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"addLineBefore\",\n description: \"Add new line before the current line\",\n exec: function (editor) {\n editor.selection.clearSelection();\n var cursor = editor.getCursorPosition();\n editor.selection.moveTo(cursor.row - 1, Number.MAX_VALUE);\n editor.insert(\"\\n\");\n if (cursor.row === 0)\n editor.navigateUp();\n },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"openCommandPallete\",\n exec: function (editor) {\n console.warn(\"This is an obsolete command. Please use `openCommandPalette` instead.\");\n editor.prompt({ $type: \"commands\" });\n },\n readOnly: true\n }, {\n name: \"openCommandPalette\",\n description: \"Open command palette\",\n bindKey: bindKey(\"F1\", \"F1\"),\n exec: function (editor) {\n editor.prompt({ $type: \"commands\" });\n },\n readOnly: true\n }, {\n name: \"modeSelect\",\n description: \"Change language mode...\",\n bindKey: bindKey(null, null),\n exec: function (editor) {\n editor.prompt({ $type: \"modes\" });\n },\n readOnly: true\n }];\nfor (var i = 1; i < 9; i++) {\n exports.commands.push({\n name: \"foldToLevel\" + i,\n description: \"Fold To Level \" + i,\n level: i,\n exec: function (editor) { editor.session.foldToLevel(this.level); },\n scrollIntoView: \"center\",\n readOnly: true\n });\n}\n\n});\n\nace.define(\"ace/line_widgets\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"], function(require, exports, module){\"use strict\";\nvar dom = require(\"./lib/dom\");\nvar LineWidgets = /** @class */ (function () {\n function LineWidgets(session) {\n this.session = session;\n this.session.widgetManager = this;\n this.session.getRowLength = this.getRowLength;\n this.session.$getWidgetScreenLength = this.$getWidgetScreenLength;\n this.updateOnChange = this.updateOnChange.bind(this);\n this.renderWidgets = this.renderWidgets.bind(this);\n this.measureWidgets = this.measureWidgets.bind(this);\n this.session._changedWidgets = [];\n this.$onChangeEditor = this.$onChangeEditor.bind(this);\n this.session.on(\"change\", this.updateOnChange);\n this.session.on(\"changeFold\", this.updateOnFold);\n this.session.on(\"changeEditor\", this.$onChangeEditor);\n }\n LineWidgets.prototype.getRowLength = function (row) {\n var h;\n if (this.lineWidgets)\n h = this.lineWidgets[row] && this.lineWidgets[row].rowCount || 0;\n else\n h = 0;\n if (!this.$useWrapMode || !this.$wrapData[row]) {\n return 1 + h;\n }\n else {\n return this.$wrapData[row].length + 1 + h;\n }\n };\n LineWidgets.prototype.$getWidgetScreenLength = function () {\n var screenRows = 0;\n this.lineWidgets.forEach(function (w) {\n if (w && w.rowCount && !w.hidden)\n screenRows += w.rowCount;\n });\n return screenRows;\n };\n LineWidgets.prototype.$onChangeEditor = function (e) {\n this.attach(e.editor);\n };\n LineWidgets.prototype.attach = function (editor) {\n if (editor && editor.widgetManager && editor.widgetManager != this)\n editor.widgetManager.detach();\n if (this.editor == editor)\n return;\n this.detach();\n this.editor = editor;\n if (editor) {\n editor.widgetManager = this;\n editor.renderer.on(\"beforeRender\", this.measureWidgets);\n editor.renderer.on(\"afterRender\", this.renderWidgets);\n }\n };\n LineWidgets.prototype.detach = function (e) {\n var editor = this.editor;\n if (!editor)\n return;\n this.editor = null;\n editor.widgetManager = null;\n editor.renderer.off(\"beforeRender\", this.measureWidgets);\n editor.renderer.off(\"afterRender\", this.renderWidgets);\n var lineWidgets = this.session.lineWidgets;\n lineWidgets && lineWidgets.forEach(function (w) {\n if (w && w.el && w.el.parentNode) {\n w._inDocument = false;\n w.el.parentNode.removeChild(w.el);\n }\n });\n };\n LineWidgets.prototype.updateOnFold = function (e, session) {\n var lineWidgets = session.lineWidgets;\n if (!lineWidgets || !e.action)\n return;\n var fold = e.data;\n var start = fold.start.row;\n var end = fold.end.row;\n var hide = e.action == \"add\";\n for (var i = start + 1; i < end; i++) {\n if (lineWidgets[i])\n lineWidgets[i].hidden = hide;\n }\n if (lineWidgets[end]) {\n if (hide) {\n if (!lineWidgets[start])\n lineWidgets[start] = lineWidgets[end];\n else\n lineWidgets[end].hidden = hide;\n }\n else {\n if (lineWidgets[start] == lineWidgets[end])\n lineWidgets[start] = undefined;\n lineWidgets[end].hidden = hide;\n }\n }\n };\n LineWidgets.prototype.updateOnChange = function (delta) {\n var lineWidgets = this.session.lineWidgets;\n if (!lineWidgets)\n return;\n var startRow = delta.start.row;\n var len = delta.end.row - startRow;\n if (len === 0) {\n }\n else if (delta.action == \"remove\") {\n var removed = lineWidgets.splice(startRow + 1, len);\n if (!lineWidgets[startRow] && removed[removed.length - 1]) {\n lineWidgets[startRow] = removed.pop();\n }\n removed.forEach(function (w) {\n w && this.removeLineWidget(w);\n }, this);\n this.$updateRows();\n }\n else {\n var args = new Array(len);\n if (lineWidgets[startRow] && lineWidgets[startRow].column != null) {\n if (delta.start.column > lineWidgets[startRow].column)\n startRow++;\n }\n args.unshift(startRow, 0);\n lineWidgets.splice.apply(lineWidgets, args);\n this.$updateRows();\n }\n };\n LineWidgets.prototype.$updateRows = function () {\n var lineWidgets = this.session.lineWidgets;\n if (!lineWidgets)\n return;\n var noWidgets = true;\n lineWidgets.forEach(function (w, i) {\n if (w) {\n noWidgets = false;\n w.row = i;\n while (w.$oldWidget) {\n w.$oldWidget.row = i;\n w = w.$oldWidget;\n }\n }\n });\n if (noWidgets)\n this.session.lineWidgets = null;\n };\n LineWidgets.prototype.$registerLineWidget = function (w) {\n if (!this.session.lineWidgets)\n this.session.lineWidgets = new Array(this.session.getLength());\n var old = this.session.lineWidgets[w.row];\n if (old) {\n w.$oldWidget = old;\n if (old.el && old.el.parentNode) {\n old.el.parentNode.removeChild(old.el);\n old._inDocument = false;\n }\n }\n this.session.lineWidgets[w.row] = w;\n return w;\n };\n LineWidgets.prototype.addLineWidget = function (w) {\n this.$registerLineWidget(w);\n w.session = this.session;\n if (!this.editor)\n return w;\n var renderer = this.editor.renderer;\n if (w.html && !w.el) {\n w.el = dom.createElement(\"div\");\n w.el.innerHTML = w.html;\n }\n if (w.text && !w.el) {\n w.el = dom.createElement(\"div\");\n w.el.textContent = w.text;\n }\n if (w.el) {\n dom.addCssClass(w.el, \"ace_lineWidgetContainer\");\n if (w.className) {\n dom.addCssClass(w.el, w.className);\n }\n w.el.style.position = \"absolute\";\n w.el.style.zIndex = 5;\n renderer.container.appendChild(w.el);\n w._inDocument = true;\n if (!w.coverGutter) {\n w.el.style.zIndex = 3;\n }\n if (w.pixelHeight == null) {\n w.pixelHeight = w.el.offsetHeight;\n }\n }\n if (w.rowCount == null) {\n w.rowCount = w.pixelHeight / renderer.layerConfig.lineHeight;\n }\n var fold = this.session.getFoldAt(w.row, 0);\n w.$fold = fold;\n if (fold) {\n var lineWidgets = this.session.lineWidgets;\n if (w.row == fold.end.row && !lineWidgets[fold.start.row])\n lineWidgets[fold.start.row] = w;\n else\n w.hidden = true;\n }\n this.session._emit(\"changeFold\", { data: { start: { row: w.row } } });\n this.$updateRows();\n this.renderWidgets(null, renderer);\n this.onWidgetChanged(w);\n return w;\n };\n LineWidgets.prototype.removeLineWidget = function (w) {\n w._inDocument = false;\n w.session = null;\n if (w.el && w.el.parentNode)\n w.el.parentNode.removeChild(w.el);\n if (w.editor && w.editor.destroy)\n try {\n w.editor.destroy();\n }\n catch (e) { }\n if (this.session.lineWidgets) {\n var w1 = this.session.lineWidgets[w.row];\n if (w1 == w) {\n this.session.lineWidgets[w.row] = w.$oldWidget;\n if (w.$oldWidget)\n this.onWidgetChanged(w.$oldWidget);\n }\n else {\n while (w1) {\n if (w1.$oldWidget == w) {\n w1.$oldWidget = w.$oldWidget;\n break;\n }\n w1 = w1.$oldWidget;\n }\n }\n }\n this.session._emit(\"changeFold\", { data: { start: { row: w.row } } });\n this.$updateRows();\n };\n LineWidgets.prototype.getWidgetsAtRow = function (row) {\n var lineWidgets = this.session.lineWidgets;\n var w = lineWidgets && lineWidgets[row];\n var list = [];\n while (w) {\n list.push(w);\n w = w.$oldWidget;\n }\n return list;\n };\n LineWidgets.prototype.onWidgetChanged = function (w) {\n this.session._changedWidgets.push(w);\n this.editor && this.editor.renderer.updateFull();\n };\n LineWidgets.prototype.measureWidgets = function (e, renderer) {\n var changedWidgets = this.session._changedWidgets;\n var config = renderer.layerConfig;\n if (!changedWidgets || !changedWidgets.length)\n return;\n var min = Infinity;\n for (var i = 0; i < changedWidgets.length; i++) {\n var w = changedWidgets[i];\n if (!w || !w.el)\n continue;\n if (w.session != this.session)\n continue;\n if (!w._inDocument) {\n if (this.session.lineWidgets[w.row] != w)\n continue;\n w._inDocument = true;\n renderer.container.appendChild(w.el);\n }\n w.h = w.el.offsetHeight;\n if (!w.fixedWidth) {\n w.w = w.el.offsetWidth;\n w.screenWidth = Math.ceil(w.w / config.characterWidth);\n }\n var rowCount = w.h / config.lineHeight;\n if (w.coverLine) {\n rowCount -= this.session.getRowLineCount(w.row);\n if (rowCount < 0)\n rowCount = 0;\n }\n if (w.rowCount != rowCount) {\n w.rowCount = rowCount;\n if (w.row < min)\n min = w.row;\n }\n }\n if (min != Infinity) {\n this.session._emit(\"changeFold\", { data: { start: { row: min } } });\n this.session.lineWidgetWidth = null;\n }\n this.session._changedWidgets = [];\n };\n LineWidgets.prototype.renderWidgets = function (e, renderer) {\n var config = renderer.layerConfig;\n var lineWidgets = this.session.lineWidgets;\n if (!lineWidgets)\n return;\n var first = Math.min(this.firstRow, config.firstRow);\n var last = Math.max(this.lastRow, config.lastRow, lineWidgets.length);\n while (first > 0 && !lineWidgets[first])\n first--;\n this.firstRow = config.firstRow;\n this.lastRow = config.lastRow;\n renderer.$cursorLayer.config = config;\n for (var i = first; i <= last; i++) {\n var w = lineWidgets[i];\n if (!w || !w.el)\n continue;\n if (w.hidden) {\n w.el.style.top = -100 - (w.pixelHeight || 0) + \"px\";\n continue;\n }\n if (!w._inDocument) {\n w._inDocument = true;\n renderer.container.appendChild(w.el);\n }\n var top = renderer.$cursorLayer.getPixelPosition({ row: i, column: 0 }, true).top;\n if (!w.coverLine)\n top += config.lineHeight * this.session.getRowLineCount(w.row);\n w.el.style.top = top - config.offset + \"px\";\n var left = w.coverGutter ? 0 : renderer.gutterWidth;\n if (!w.fixedWidth)\n left -= renderer.scrollLeft;\n w.el.style.left = left + \"px\";\n if (w.fullWidth && w.screenWidth) {\n w.el.style.minWidth = config.width + 2 * config.padding + \"px\";\n }\n if (w.fixedWidth) {\n w.el.style.right = renderer.scrollBar.getWidth() + \"px\";\n }\n else {\n w.el.style.right = \"\";\n }\n }\n };\n return LineWidgets;\n}());\nexports.LineWidgets = LineWidgets;\n\n});\n\nace.define(\"ace/keyboard/gutter_handler\",[\"require\",\"exports\",\"module\",\"ace/lib/keys\",\"ace/mouse/default_gutter_handler\"], function(require, exports, module){\"use strict\";\nvar keys = require('../lib/keys');\nvar GutterTooltip = require(\"../mouse/default_gutter_handler\").GutterTooltip;\nvar GutterKeyboardHandler = /** @class */ (function () {\n function GutterKeyboardHandler(editor) {\n this.editor = editor;\n this.gutterLayer = editor.renderer.$gutterLayer;\n this.element = editor.renderer.$gutter;\n this.lines = editor.renderer.$gutterLayer.$lines;\n this.activeRowIndex = null;\n this.activeLane = null;\n this.annotationTooltip = new GutterTooltip(this.editor);\n }\n GutterKeyboardHandler.prototype.addListener = function () {\n this.element.addEventListener(\"keydown\", this.$onGutterKeyDown.bind(this));\n this.element.addEventListener(\"focusout\", this.$blurGutter.bind(this));\n this.editor.on(\"mousewheel\", this.$blurGutter.bind(this));\n };\n GutterKeyboardHandler.prototype.removeListener = function () {\n this.element.removeEventListener(\"keydown\", this.$onGutterKeyDown.bind(this));\n this.element.removeEventListener(\"focusout\", this.$blurGutter.bind(this));\n this.editor.off(\"mousewheel\", this.$blurGutter.bind(this));\n };\n GutterKeyboardHandler.prototype.$onGutterKeyDown = function (e) {\n if (this.annotationTooltip.isOpen) {\n e.preventDefault();\n if (e.keyCode === keys[\"escape\"])\n this.annotationTooltip.hideTooltip();\n return;\n }\n if (e.target === this.element) {\n if (e.keyCode != keys[\"enter\"]) {\n return;\n }\n e.preventDefault();\n var row = this.editor.getCursorPosition().row;\n if (!this.editor.isRowVisible(row))\n this.editor.scrollToLine(row, true, true);\n setTimeout(function () {\n var index = this.$rowToRowIndex(this.gutterLayer.$cursorCell.row);\n var nearestFoldIndex = this.$findNearestFoldWidget(index);\n var nearestAnnotationIndex = this.$findNearestAnnotation(index);\n if (nearestFoldIndex === null && nearestAnnotationIndex === null)\n return;\n if (nearestFoldIndex === null && nearestAnnotationIndex !== null) {\n this.activeRowIndex = nearestAnnotationIndex;\n this.activeLane = \"annotation\";\n this.$focusAnnotation(this.activeRowIndex);\n return;\n }\n if (nearestFoldIndex !== null && nearestAnnotationIndex === null) {\n this.activeRowIndex = nearestFoldIndex;\n this.activeLane = \"fold\";\n this.$focusFoldWidget(this.activeRowIndex);\n return;\n }\n if (Math.abs(nearestAnnotationIndex - index) < Math.abs(nearestFoldIndex - index)) {\n this.activeRowIndex = nearestAnnotationIndex;\n this.activeLane = \"annotation\";\n this.$focusAnnotation(this.activeRowIndex);\n return;\n }\n else {\n this.activeRowIndex = nearestFoldIndex;\n this.activeLane = \"fold\";\n this.$focusFoldWidget(this.activeRowIndex);\n return;\n }\n }.bind(this), 10);\n return;\n }\n this.$handleGutterKeyboardInteraction(e);\n setTimeout(function () {\n this.editor._signal(\"gutterkeydown\", new GutterKeyboardEvent(e, this));\n }.bind(this), 10);\n };\n GutterKeyboardHandler.prototype.$handleGutterKeyboardInteraction = function (e) {\n if (e.keyCode === keys[\"tab\"]) {\n e.preventDefault();\n return;\n }\n if (e.keyCode === keys[\"escape\"]) {\n e.preventDefault();\n this.$blurGutter();\n this.element.focus();\n this.lane = null;\n return;\n }\n if (e.keyCode === keys[\"up\"]) {\n e.preventDefault();\n switch (this.activeLane) {\n case \"fold\":\n this.$moveFoldWidgetUp();\n break;\n case \"annotation\":\n this.$moveAnnotationUp();\n break;\n }\n return;\n }\n if (e.keyCode === keys[\"down\"]) {\n e.preventDefault();\n switch (this.activeLane) {\n case \"fold\":\n this.$moveFoldWidgetDown();\n break;\n case \"annotation\":\n this.$moveAnnotationDown();\n break;\n }\n return;\n }\n if (e.keyCode === keys[\"left\"]) {\n e.preventDefault();\n this.$switchLane(\"annotation\");\n return;\n }\n if (e.keyCode === keys[\"right\"]) {\n e.preventDefault();\n this.$switchLane(\"fold\");\n return;\n }\n if (e.keyCode === keys[\"enter\"] || e.keyCode === keys[\"space\"]) {\n e.preventDefault();\n switch (this.activeLane) {\n case \"fold\":\n if (this.gutterLayer.session.foldWidgets[this.$rowIndexToRow(this.activeRowIndex)] === 'start') {\n var rowFoldingWidget = this.$rowIndexToRow(this.activeRowIndex);\n this.editor.session.onFoldWidgetClick(this.$rowIndexToRow(this.activeRowIndex), e);\n setTimeout(function () {\n if (this.$rowIndexToRow(this.activeRowIndex) !== rowFoldingWidget) {\n this.$blurFoldWidget(this.activeRowIndex);\n this.activeRowIndex = this.$rowToRowIndex(rowFoldingWidget);\n this.$focusFoldWidget(this.activeRowIndex);\n }\n }.bind(this), 10);\n break;\n }\n else if (this.gutterLayer.session.foldWidgets[this.$rowIndexToRow(this.activeRowIndex)] === 'end') {\n break;\n }\n return;\n case \"annotation\":\n var gutterElement = this.lines.cells[this.activeRowIndex].element.childNodes[2];\n var rect = gutterElement.getBoundingClientRect();\n var style = this.annotationTooltip.getElement().style;\n style.left = rect.right + \"px\";\n style.top = rect.bottom + \"px\";\n this.annotationTooltip.showTooltip(this.$rowIndexToRow(this.activeRowIndex));\n break;\n }\n return;\n }\n };\n GutterKeyboardHandler.prototype.$blurGutter = function () {\n if (this.activeRowIndex !== null) {\n switch (this.activeLane) {\n case \"fold\":\n this.$blurFoldWidget(this.activeRowIndex);\n break;\n case \"annotation\":\n this.$blurAnnotation(this.activeRowIndex);\n break;\n }\n }\n if (this.annotationTooltip.isOpen)\n this.annotationTooltip.hideTooltip();\n return;\n };\n GutterKeyboardHandler.prototype.$isFoldWidgetVisible = function (index) {\n var isRowFullyVisible = this.editor.isRowFullyVisible(this.$rowIndexToRow(index));\n var isIconVisible = this.$getFoldWidget(index).style.display !== \"none\";\n return isRowFullyVisible && isIconVisible;\n };\n GutterKeyboardHandler.prototype.$isAnnotationVisible = function (index) {\n var isRowFullyVisible = this.editor.isRowFullyVisible(this.$rowIndexToRow(index));\n var isIconVisible = this.$getAnnotation(index).style.display !== \"none\";\n return isRowFullyVisible && isIconVisible;\n };\n GutterKeyboardHandler.prototype.$getFoldWidget = function (index) {\n var cell = this.lines.get(index);\n var element = cell.element;\n return element.childNodes[1];\n };\n GutterKeyboardHandler.prototype.$getAnnotation = function (index) {\n var cell = this.lines.get(index);\n var element = cell.element;\n return element.childNodes[2];\n };\n GutterKeyboardHandler.prototype.$findNearestFoldWidget = function (index) {\n if (this.$isFoldWidgetVisible(index))\n return index;\n var i = 0;\n while (index - i > 0 || index + i < this.lines.getLength() - 1) {\n i++;\n if (index - i >= 0 && this.$isFoldWidgetVisible(index - i))\n return index - i;\n if (index + i <= this.lines.getLength() - 1 && this.$isFoldWidgetVisible(index + i))\n return index + i;\n }\n return null;\n };\n GutterKeyboardHandler.prototype.$findNearestAnnotation = function (index) {\n if (this.$isAnnotationVisible(index))\n return index;\n var i = 0;\n while (index - i > 0 || index + i < this.lines.getLength() - 1) {\n i++;\n if (index - i >= 0 && this.$isAnnotationVisible(index - i))\n return index - i;\n if (index + i <= this.lines.getLength() - 1 && this.$isAnnotationVisible(index + i))\n return index + i;\n }\n return null;\n };\n GutterKeyboardHandler.prototype.$focusFoldWidget = function (index) {\n if (index == null)\n return;\n var foldWidget = this.$getFoldWidget(index);\n foldWidget.classList.add(this.editor.renderer.keyboardFocusClassName);\n foldWidget.focus();\n };\n GutterKeyboardHandler.prototype.$focusAnnotation = function (index) {\n if (index == null)\n return;\n var annotation = this.$getAnnotation(index);\n annotation.classList.add(this.editor.renderer.keyboardFocusClassName);\n annotation.focus();\n };\n GutterKeyboardHandler.prototype.$blurFoldWidget = function (index) {\n var foldWidget = this.$getFoldWidget(index);\n foldWidget.classList.remove(this.editor.renderer.keyboardFocusClassName);\n foldWidget.blur();\n };\n GutterKeyboardHandler.prototype.$blurAnnotation = function (index) {\n var annotation = this.$getAnnotation(index);\n annotation.classList.remove(this.editor.renderer.keyboardFocusClassName);\n annotation.blur();\n };\n GutterKeyboardHandler.prototype.$moveFoldWidgetUp = function () {\n var index = this.activeRowIndex;\n while (index > 0) {\n index--;\n if (this.$isFoldWidgetVisible(index)) {\n this.$blurFoldWidget(this.activeRowIndex);\n this.activeRowIndex = index;\n this.$focusFoldWidget(this.activeRowIndex);\n return;\n }\n }\n return;\n };\n GutterKeyboardHandler.prototype.$moveFoldWidgetDown = function () {\n var index = this.activeRowIndex;\n while (index < this.lines.getLength() - 1) {\n index++;\n if (this.$isFoldWidgetVisible(index)) {\n this.$blurFoldWidget(this.activeRowIndex);\n this.activeRowIndex = index;\n this.$focusFoldWidget(this.activeRowIndex);\n return;\n }\n }\n return;\n };\n GutterKeyboardHandler.prototype.$moveAnnotationUp = function () {\n var index = this.activeRowIndex;\n while (index > 0) {\n index--;\n if (this.$isAnnotationVisible(index)) {\n this.$blurAnnotation(this.activeRowIndex);\n this.activeRowIndex = index;\n this.$focusAnnotation(this.activeRowIndex);\n return;\n }\n }\n return;\n };\n GutterKeyboardHandler.prototype.$moveAnnotationDown = function () {\n var index = this.activeRowIndex;\n while (index < this.lines.getLength() - 1) {\n index++;\n if (this.$isAnnotationVisible(index)) {\n this.$blurAnnotation(this.activeRowIndex);\n this.activeRowIndex = index;\n this.$focusAnnotation(this.activeRowIndex);\n return;\n }\n }\n return;\n };\n GutterKeyboardHandler.prototype.$switchLane = function (desinationLane) {\n switch (desinationLane) {\n case \"annotation\":\n if (this.activeLane === \"annotation\") {\n break;\n }\n var annotationIndex = this.$findNearestAnnotation(this.activeRowIndex);\n if (annotationIndex == null) {\n break;\n }\n this.activeLane = \"annotation\";\n this.$blurFoldWidget(this.activeRowIndex);\n this.activeRowIndex = annotationIndex;\n this.$focusAnnotation(this.activeRowIndex);\n break;\n case \"fold\":\n if (this.activeLane === \"fold\") {\n break;\n }\n var foldWidgetIndex = this.$findNearestFoldWidget(this.activeRowIndex);\n if (foldWidgetIndex == null) {\n break;\n }\n this.activeLane = \"fold\";\n this.$blurAnnotation(this.activeRowIndex);\n this.activeRowIndex = foldWidgetIndex;\n this.$focusFoldWidget(this.activeRowIndex);\n break;\n }\n return;\n };\n GutterKeyboardHandler.prototype.$rowIndexToRow = function (index) {\n var cell = this.lines.get(index);\n if (cell)\n return cell.row;\n return null;\n };\n GutterKeyboardHandler.prototype.$rowToRowIndex = function (row) {\n for (var i = 0; i < this.lines.getLength(); i++) {\n var cell = this.lines.get(i);\n if (cell.row == row)\n return i;\n }\n return null;\n };\n return GutterKeyboardHandler;\n}());\nexports.GutterKeyboardHandler = GutterKeyboardHandler;\nvar GutterKeyboardEvent = /** @class */ (function () {\n function GutterKeyboardEvent(domEvent, gutterKeyboardHandler) {\n this.gutterKeyboardHandler = gutterKeyboardHandler;\n this.domEvent = domEvent;\n }\n GutterKeyboardEvent.prototype.getKey = function () {\n return keys.keyCodeToString(this.domEvent.keyCode);\n };\n GutterKeyboardEvent.prototype.getRow = function () {\n return this.gutterKeyboardHandler.$rowIndexToRow(this.gutterKeyboardHandler.activeRowIndex);\n };\n GutterKeyboardEvent.prototype.isInAnnotationLane = function () {\n return this.gutterKeyboardHandler.activeLane === \"annotation\";\n };\n GutterKeyboardEvent.prototype.isInFoldLane = function () {\n return this.gutterKeyboardHandler.activeLane === \"fold\";\n };\n return GutterKeyboardEvent;\n}());\nexports.GutterKeyboardEvent = GutterKeyboardEvent;\n\n});\n\nace.define(\"ace/editor\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/dom\",\"ace/lib/lang\",\"ace/lib/useragent\",\"ace/keyboard/textinput\",\"ace/mouse/mouse_handler\",\"ace/mouse/fold_handler\",\"ace/keyboard/keybinding\",\"ace/edit_session\",\"ace/search\",\"ace/range\",\"ace/lib/event_emitter\",\"ace/commands/command_manager\",\"ace/commands/default_commands\",\"ace/config\",\"ace/token_iterator\",\"ace/line_widgets\",\"ace/keyboard/gutter_handler\",\"ace/config\",\"ace/clipboard\",\"ace/lib/keys\"], function(require, exports, module){\"use strict\";\nvar __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar oop = require(\"./lib/oop\");\nvar dom = require(\"./lib/dom\");\nvar lang = require(\"./lib/lang\");\nvar useragent = require(\"./lib/useragent\");\nvar TextInput = require(\"./keyboard/textinput\").TextInput;\nvar MouseHandler = require(\"./mouse/mouse_handler\").MouseHandler;\nvar FoldHandler = require(\"./mouse/fold_handler\").FoldHandler;\nvar KeyBinding = require(\"./keyboard/keybinding\").KeyBinding;\nvar EditSession = require(\"./edit_session\").EditSession;\nvar Search = require(\"./search\").Search;\nvar Range = require(\"./range\").Range;\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar CommandManager = require(\"./commands/command_manager\").CommandManager;\nvar defaultCommands = require(\"./commands/default_commands\").commands;\nvar config = require(\"./config\");\nvar TokenIterator = require(\"./token_iterator\").TokenIterator;\nvar LineWidgets = require(\"./line_widgets\").LineWidgets;\nvar GutterKeyboardHandler = require(\"./keyboard/gutter_handler\").GutterKeyboardHandler;\nvar nls = require(\"./config\").nls;\nvar clipboard = require(\"./clipboard\");\nvar keys = require('./lib/keys');\nvar Editor = /** @class */ (function () {\n function Editor(renderer, session, options) {\n this.$toDestroy = [];\n var container = renderer.getContainerElement();\n this.container = container;\n this.renderer = renderer;\n this.id = \"editor\" + (++Editor.$uid);\n this.commands = new CommandManager(useragent.isMac ? \"mac\" : \"win\", defaultCommands);\n if (typeof document == \"object\") {\n this.textInput = new TextInput(renderer.getTextAreaContainer(), this);\n this.renderer.textarea = this.textInput.getElement();\n this.$mouseHandler = new MouseHandler(this);\n new FoldHandler(this);\n }\n this.keyBinding = new KeyBinding(this);\n this.$search = new Search().set({\n wrap: true\n });\n this.$historyTracker = this.$historyTracker.bind(this);\n this.commands.on(\"exec\", this.$historyTracker);\n this.$initOperationListeners();\n this._$emitInputEvent = lang.delayedCall(function () {\n this._signal(\"input\", {});\n if (this.session && !this.session.destroyed)\n this.session.bgTokenizer.scheduleStart();\n }.bind(this));\n this.on(\"change\", function (_, _self) {\n _self._$emitInputEvent.schedule(31);\n });\n this.setSession(session || options && options.session || new EditSession(\"\"));\n config.resetOptions(this);\n if (options)\n this.setOptions(options);\n config._signal(\"editor\", this);\n }\n Editor.prototype.$initOperationListeners = function () {\n this.commands.on(\"exec\", this.startOperation.bind(this), true);\n this.commands.on(\"afterExec\", this.endOperation.bind(this), true);\n this.$opResetTimer = lang.delayedCall(this.endOperation.bind(this, true));\n this.on(\"change\", function () {\n if (!this.curOp) {\n this.startOperation();\n this.curOp.selectionBefore = this.$lastSel;\n }\n this.curOp.docChanged = true;\n }.bind(this), true);\n this.on(\"changeSelection\", function () {\n if (!this.curOp) {\n this.startOperation();\n this.curOp.selectionBefore = this.$lastSel;\n }\n this.curOp.selectionChanged = true;\n }.bind(this), true);\n };\n Editor.prototype.startOperation = function (commandEvent) {\n if (this.curOp) {\n if (!commandEvent || this.curOp.command)\n return;\n this.prevOp = this.curOp;\n }\n if (!commandEvent) {\n this.previousCommand = null;\n commandEvent = {};\n }\n this.$opResetTimer.schedule();\n this.curOp = this.session.curOp = {\n command: commandEvent.command || {},\n args: commandEvent.args,\n scrollTop: this.renderer.scrollTop\n };\n this.curOp.selectionBefore = this.selection.toJSON();\n };\n Editor.prototype.endOperation = function (e) {\n if (this.curOp && this.session) {\n if (e && e.returnValue === false || !this.session)\n return (this.curOp = null);\n if (e == true && this.curOp.command && this.curOp.command.name == \"mouse\")\n return;\n this._signal(\"beforeEndOperation\");\n if (!this.curOp)\n return;\n var command = this.curOp.command;\n var scrollIntoView = command && command.scrollIntoView;\n if (scrollIntoView) {\n switch (scrollIntoView) {\n case \"center-animate\":\n scrollIntoView = \"animate\";\n case \"center\":\n this.renderer.scrollCursorIntoView(null, 0.5);\n break;\n case \"animate\":\n case \"cursor\":\n this.renderer.scrollCursorIntoView();\n break;\n case \"selectionPart\":\n var range = this.selection.getRange();\n var config = this.renderer.layerConfig;\n if (range.start.row >= config.lastRow || range.end.row <= config.firstRow) {\n this.renderer.scrollSelectionIntoView(this.selection.anchor, this.selection.lead);\n }\n break;\n default:\n break;\n }\n if (scrollIntoView == \"animate\")\n this.renderer.animateScrolling(this.curOp.scrollTop);\n }\n var sel = this.selection.toJSON();\n this.curOp.selectionAfter = sel;\n this.$lastSel = this.selection.toJSON();\n this.session.getUndoManager().addSelection(sel);\n this.prevOp = this.curOp;\n this.curOp = null;\n }\n };\n Editor.prototype.$historyTracker = function (e) {\n if (!this.$mergeUndoDeltas)\n return;\n var prev = this.prevOp;\n var mergeableCommands = this.$mergeableCommands;\n var shouldMerge = prev.command && (e.command.name == prev.command.name);\n if (e.command.name == \"insertstring\") {\n var text = e.args;\n if (this.mergeNextCommand === undefined)\n this.mergeNextCommand = true;\n shouldMerge = shouldMerge\n && this.mergeNextCommand // previous command allows to coalesce with\n && (!/\\s/.test(text) || /\\s/.test(prev.args)); // previous insertion was of same type\n this.mergeNextCommand = true;\n }\n else {\n shouldMerge = shouldMerge\n && mergeableCommands.indexOf(e.command.name) !== -1; // the command is mergeable\n }\n if (this.$mergeUndoDeltas != \"always\"\n && Date.now() - this.sequenceStartTime > 2000) {\n shouldMerge = false; // the sequence is too long\n }\n if (shouldMerge)\n this.session.mergeUndoDeltas = true;\n else if (mergeableCommands.indexOf(e.command.name) !== -1)\n this.sequenceStartTime = Date.now();\n };\n Editor.prototype.setKeyboardHandler = function (keyboardHandler, cb) {\n if (keyboardHandler && typeof keyboardHandler === \"string\" && keyboardHandler != \"ace\") {\n this.$keybindingId = keyboardHandler;\n var _self = this;\n config.loadModule([\"keybinding\", keyboardHandler], function (module) {\n if (_self.$keybindingId == keyboardHandler)\n _self.keyBinding.setKeyboardHandler(module && module.handler);\n cb && cb();\n });\n }\n else {\n this.$keybindingId = null;\n this.keyBinding.setKeyboardHandler(keyboardHandler);\n cb && cb();\n }\n };\n Editor.prototype.getKeyboardHandler = function () {\n return this.keyBinding.getKeyboardHandler();\n };\n Editor.prototype.setSession = function (session) {\n if (this.session == session)\n return;\n if (this.curOp)\n this.endOperation();\n this.curOp = {};\n var oldSession = this.session;\n if (oldSession) {\n this.session.off(\"change\", this.$onDocumentChange);\n this.session.off(\"changeMode\", this.$onChangeMode);\n this.session.off(\"tokenizerUpdate\", this.$onTokenizerUpdate);\n this.session.off(\"changeTabSize\", this.$onChangeTabSize);\n this.session.off(\"changeWrapLimit\", this.$onChangeWrapLimit);\n this.session.off(\"changeWrapMode\", this.$onChangeWrapMode);\n this.session.off(\"changeFold\", this.$onChangeFold);\n this.session.off(\"changeFrontMarker\", this.$onChangeFrontMarker);\n this.session.off(\"changeBackMarker\", this.$onChangeBackMarker);\n this.session.off(\"changeBreakpoint\", this.$onChangeBreakpoint);\n this.session.off(\"changeAnnotation\", this.$onChangeAnnotation);\n this.session.off(\"changeOverwrite\", this.$onCursorChange);\n this.session.off(\"changeScrollTop\", this.$onScrollTopChange);\n this.session.off(\"changeScrollLeft\", this.$onScrollLeftChange);\n var selection = this.session.getSelection();\n selection.off(\"changeCursor\", this.$onCursorChange);\n selection.off(\"changeSelection\", this.$onSelectionChange);\n }\n this.session = session;\n if (session) {\n this.$onDocumentChange = this.onDocumentChange.bind(this);\n session.on(\"change\", this.$onDocumentChange);\n this.renderer.setSession(session);\n this.$onChangeMode = this.onChangeMode.bind(this);\n session.on(\"changeMode\", this.$onChangeMode);\n this.$onTokenizerUpdate = this.onTokenizerUpdate.bind(this);\n session.on(\"tokenizerUpdate\", this.$onTokenizerUpdate);\n this.$onChangeTabSize = this.renderer.onChangeTabSize.bind(this.renderer);\n session.on(\"changeTabSize\", this.$onChangeTabSize);\n this.$onChangeWrapLimit = this.onChangeWrapLimit.bind(this);\n session.on(\"changeWrapLimit\", this.$onChangeWrapLimit);\n this.$onChangeWrapMode = this.onChangeWrapMode.bind(this);\n session.on(\"changeWrapMode\", this.$onChangeWrapMode);\n this.$onChangeFold = this.onChangeFold.bind(this);\n session.on(\"changeFold\", this.$onChangeFold);\n this.$onChangeFrontMarker = this.onChangeFrontMarker.bind(this);\n this.session.on(\"changeFrontMarker\", this.$onChangeFrontMarker);\n this.$onChangeBackMarker = this.onChangeBackMarker.bind(this);\n this.session.on(\"changeBackMarker\", this.$onChangeBackMarker);\n this.$onChangeBreakpoint = this.onChangeBreakpoint.bind(this);\n this.session.on(\"changeBreakpoint\", this.$onChangeBreakpoint);\n this.$onChangeAnnotation = this.onChangeAnnotation.bind(this);\n this.session.on(\"changeAnnotation\", this.$onChangeAnnotation);\n this.$onCursorChange = this.onCursorChange.bind(this);\n this.session.on(\"changeOverwrite\", this.$onCursorChange);\n this.$onScrollTopChange = this.onScrollTopChange.bind(this);\n this.session.on(\"changeScrollTop\", this.$onScrollTopChange);\n this.$onScrollLeftChange = this.onScrollLeftChange.bind(this);\n this.session.on(\"changeScrollLeft\", this.$onScrollLeftChange);\n this.selection = session.getSelection();\n this.selection.on(\"changeCursor\", this.$onCursorChange);\n this.$onSelectionChange = this.onSelectionChange.bind(this);\n this.selection.on(\"changeSelection\", this.$onSelectionChange);\n this.onChangeMode();\n this.onCursorChange();\n this.onScrollTopChange();\n this.onScrollLeftChange();\n this.onSelectionChange();\n this.onChangeFrontMarker();\n this.onChangeBackMarker();\n this.onChangeBreakpoint();\n this.onChangeAnnotation();\n this.session.getUseWrapMode() && this.renderer.adjustWrapLimit();\n this.renderer.updateFull();\n }\n else {\n this.selection = null;\n this.renderer.setSession(session);\n }\n this._signal(\"changeSession\", {\n session: session,\n oldSession: oldSession\n });\n this.curOp = null;\n oldSession && oldSession._signal(\"changeEditor\", { oldEditor: this });\n session && session._signal(\"changeEditor\", { editor: this });\n if (session && !session.destroyed)\n session.bgTokenizer.scheduleStart();\n };\n Editor.prototype.getSession = function () {\n return this.session;\n };\n Editor.prototype.setValue = function (val, cursorPos) {\n this.session.doc.setValue(val);\n if (!cursorPos)\n this.selectAll();\n else if (cursorPos == 1)\n this.navigateFileEnd();\n else if (cursorPos == -1)\n this.navigateFileStart();\n return val;\n };\n Editor.prototype.getValue = function () {\n return this.session.getValue();\n };\n Editor.prototype.getSelection = function () {\n return this.selection;\n };\n Editor.prototype.resize = function (force) {\n this.renderer.onResize(force);\n };\n Editor.prototype.setTheme = function (theme, cb) {\n this.renderer.setTheme(theme, cb);\n };\n Editor.prototype.getTheme = function () {\n return this.renderer.getTheme();\n };\n Editor.prototype.setStyle = function (style) {\n this.renderer.setStyle(style);\n };\n Editor.prototype.unsetStyle = function (style) {\n this.renderer.unsetStyle(style);\n };\n Editor.prototype.getFontSize = function () {\n return this.getOption(\"fontSize\") ||\n dom.computedStyle(this.container).fontSize;\n };\n Editor.prototype.setFontSize = function (size) {\n this.setOption(\"fontSize\", size);\n };\n Editor.prototype.$highlightBrackets = function () {\n if (this.$highlightPending) {\n return;\n }\n var self = this;\n this.$highlightPending = true;\n setTimeout(function () {\n self.$highlightPending = false;\n var session = self.session;\n if (!session || session.destroyed)\n return;\n if (session.$bracketHighlight) {\n session.$bracketHighlight.markerIds.forEach(function (id) {\n session.removeMarker(id);\n });\n session.$bracketHighlight = null;\n }\n var pos = self.getCursorPosition();\n var handler = self.getKeyboardHandler();\n var isBackwards = handler && handler.$getDirectionForHighlight && handler.$getDirectionForHighlight(self);\n var ranges = session.getMatchingBracketRanges(pos, isBackwards);\n if (!ranges) {\n var iterator = new TokenIterator(session, pos.row, pos.column);\n var token = iterator.getCurrentToken();\n if (token && /\\b(?:tag-open|tag-name)/.test(token.type)) {\n var tagNamesRanges = session.getMatchingTags(pos);\n if (tagNamesRanges)\n ranges = [tagNamesRanges.openTagName, tagNamesRanges.closeTagName];\n }\n }\n if (!ranges && session.$mode.getMatching)\n ranges = session.$mode.getMatching(self.session);\n if (!ranges) {\n if (self.getHighlightIndentGuides())\n self.renderer.$textLayer.$highlightIndentGuide();\n return;\n }\n var markerType = \"ace_bracket\";\n if (!Array.isArray(ranges)) {\n ranges = [ranges];\n }\n else if (ranges.length == 1) {\n markerType = \"ace_error_bracket\";\n }\n if (ranges.length == 2) {\n if (Range.comparePoints(ranges[0].end, ranges[1].start) == 0)\n ranges = [Range.fromPoints(ranges[0].start, ranges[1].end)];\n else if (Range.comparePoints(ranges[0].start, ranges[1].end) == 0)\n ranges = [Range.fromPoints(ranges[1].start, ranges[0].end)];\n }\n session.$bracketHighlight = {\n ranges: ranges,\n markerIds: ranges.map(function (range) {\n return session.addMarker(range, markerType, \"text\");\n })\n };\n if (self.getHighlightIndentGuides())\n self.renderer.$textLayer.$highlightIndentGuide();\n }, 50);\n };\n Editor.prototype.focus = function () {\n this.textInput.focus();\n };\n Editor.prototype.isFocused = function () {\n return this.textInput.isFocused();\n };\n Editor.prototype.blur = function () {\n this.textInput.blur();\n };\n Editor.prototype.onFocus = function (e) {\n if (this.$isFocused)\n return;\n this.$isFocused = true;\n this.renderer.showCursor();\n this.renderer.visualizeFocus();\n this._emit(\"focus\", e);\n };\n Editor.prototype.onBlur = function (e) {\n if (!this.$isFocused)\n return;\n this.$isFocused = false;\n this.renderer.hideCursor();\n this.renderer.visualizeBlur();\n this._emit(\"blur\", e);\n };\n Editor.prototype.$cursorChange = function () {\n this.renderer.updateCursor();\n this.$highlightBrackets();\n this.$updateHighlightActiveLine();\n };\n Editor.prototype.onDocumentChange = function (delta) {\n var wrap = this.session.$useWrapMode;\n var lastRow = (delta.start.row == delta.end.row ? delta.end.row : Infinity);\n this.renderer.updateLines(delta.start.row, lastRow, wrap);\n this._signal(\"change\", delta);\n this.$cursorChange();\n };\n Editor.prototype.onTokenizerUpdate = function (e) {\n var rows = e.data;\n this.renderer.updateLines(rows.first, rows.last);\n };\n Editor.prototype.onScrollTopChange = function () {\n this.renderer.scrollToY(this.session.getScrollTop());\n };\n Editor.prototype.onScrollLeftChange = function () {\n this.renderer.scrollToX(this.session.getScrollLeft());\n };\n Editor.prototype.onCursorChange = function () {\n this.$cursorChange();\n this._signal(\"changeSelection\");\n };\n Editor.prototype.$updateHighlightActiveLine = function () {\n var session = this.getSession();\n var highlight;\n if (this.$highlightActiveLine) {\n if (this.$selectionStyle != \"line\" || !this.selection.isMultiLine())\n highlight = this.getCursorPosition();\n if (this.renderer.theme && this.renderer.theme.$selectionColorConflict && !this.selection.isEmpty())\n highlight = false;\n if (this.renderer.$maxLines && this.session.getLength() === 1 && !(this.renderer.$minLines > 1))\n highlight = false;\n }\n if (session.$highlightLineMarker && !highlight) {\n session.removeMarker(session.$highlightLineMarker.id);\n session.$highlightLineMarker = null;\n }\n else if (!session.$highlightLineMarker && highlight) {\n var range = new Range(highlight.row, highlight.column, highlight.row, Infinity);\n range.id = session.addMarker(range, \"ace_active-line\", \"screenLine\");\n session.$highlightLineMarker = range;\n }\n else if (highlight) {\n session.$highlightLineMarker.start.row = highlight.row;\n session.$highlightLineMarker.end.row = highlight.row;\n session.$highlightLineMarker.start.column = highlight.column;\n session._signal(\"changeBackMarker\");\n }\n };\n Editor.prototype.onSelectionChange = function (e) {\n var session = this.session;\n if (session.$selectionMarker) {\n session.removeMarker(session.$selectionMarker);\n }\n session.$selectionMarker = null;\n if (!this.selection.isEmpty()) {\n var range = this.selection.getRange();\n var style = this.getSelectionStyle();\n session.$selectionMarker = session.addMarker(range, \"ace_selection\", style);\n }\n else {\n this.$updateHighlightActiveLine();\n }\n var re = this.$highlightSelectedWord && this.$getSelectionHighLightRegexp();\n this.session.highlight(re);\n this._signal(\"changeSelection\");\n };\n Editor.prototype.$getSelectionHighLightRegexp = function () {\n var session = this.session;\n var selection = this.getSelectionRange();\n if (selection.isEmpty() || selection.isMultiLine())\n return;\n var startColumn = selection.start.column;\n var endColumn = selection.end.column;\n var line = session.getLine(selection.start.row);\n var needle = line.substring(startColumn, endColumn);\n if (needle.length > 5000 || !/[\\w\\d]/.test(needle))\n return;\n var re = this.$search.$assembleRegExp({\n wholeWord: true,\n caseSensitive: true,\n needle: needle\n });\n var wordWithBoundary = line.substring(startColumn - 1, endColumn + 1);\n if (!re.test(wordWithBoundary))\n return;\n return re;\n };\n Editor.prototype.onChangeFrontMarker = function () {\n this.renderer.updateFrontMarkers();\n };\n Editor.prototype.onChangeBackMarker = function () {\n this.renderer.updateBackMarkers();\n };\n Editor.prototype.onChangeBreakpoint = function () {\n this.renderer.updateBreakpoints();\n };\n Editor.prototype.onChangeAnnotation = function () {\n this.renderer.setAnnotations(this.session.getAnnotations());\n };\n Editor.prototype.onChangeMode = function (e) {\n this.renderer.updateText();\n this._emit(\"changeMode\", e);\n };\n Editor.prototype.onChangeWrapLimit = function () {\n this.renderer.updateFull();\n };\n Editor.prototype.onChangeWrapMode = function () {\n this.renderer.onResize(true);\n };\n Editor.prototype.onChangeFold = function () {\n this.$updateHighlightActiveLine();\n this.renderer.updateFull();\n };\n Editor.prototype.getSelectedText = function () {\n return this.session.getTextRange(this.getSelectionRange());\n };\n Editor.prototype.getCopyText = function () {\n var text = this.getSelectedText();\n var nl = this.session.doc.getNewLineCharacter();\n var copyLine = false;\n if (!text && this.$copyWithEmptySelection) {\n copyLine = true;\n var ranges = this.selection.getAllRanges();\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i];\n if (i && ranges[i - 1].start.row == range.start.row)\n continue;\n text += this.session.getLine(range.start.row) + nl;\n }\n }\n var e = { text: text };\n this._signal(\"copy\", e);\n clipboard.lineMode = copyLine ? e.text : false;\n return e.text;\n };\n Editor.prototype.onCopy = function () {\n this.commands.exec(\"copy\", this);\n };\n Editor.prototype.onCut = function () {\n this.commands.exec(\"cut\", this);\n };\n Editor.prototype.onPaste = function (text, event) {\n var e = { text: text, event: event };\n this.commands.exec(\"paste\", this, e);\n };\n Editor.prototype.$handlePaste = function (e) {\n if (typeof e == \"string\")\n e = { text: e };\n this._signal(\"paste\", e);\n var text = e.text;\n var lineMode = text === clipboard.lineMode;\n var session = this.session;\n if (!this.inMultiSelectMode || this.inVirtualSelectionMode) {\n if (lineMode)\n session.insert({ row: this.selection.lead.row, column: 0 }, text);\n else\n this.insert(text);\n }\n else if (lineMode) {\n this.selection.rangeList.ranges.forEach(function (range) {\n session.insert({ row: range.start.row, column: 0 }, text);\n });\n }\n else {\n var lines = text.split(/\\r\\n|\\r|\\n/);\n var ranges = this.selection.rangeList.ranges;\n var isFullLine = lines.length == 2 && (!lines[0] || !lines[1]);\n if (lines.length != ranges.length || isFullLine)\n return this.commands.exec(\"insertstring\", this, text);\n for (var i = ranges.length; i--;) {\n var range = ranges[i];\n if (!range.isEmpty())\n session.remove(range);\n session.insert(range.start, lines[i]);\n }\n }\n };\n Editor.prototype.execCommand = function (command, args) {\n return this.commands.exec(command, this, args);\n };\n Editor.prototype.insert = function (text, pasted) {\n var session = this.session;\n var mode = session.getMode();\n var cursor = this.getCursorPosition();\n if (this.getBehavioursEnabled() && !pasted) {\n var transform = mode.transformAction(session.getState(cursor.row), 'insertion', this, session, text);\n if (transform) {\n if (text !== transform.text) {\n if (!this.inVirtualSelectionMode) {\n this.session.mergeUndoDeltas = false;\n this.mergeNextCommand = false;\n }\n }\n text = transform.text;\n }\n }\n if (text == \"\\t\")\n text = this.session.getTabString();\n if (!this.selection.isEmpty()) {\n var range = this.getSelectionRange();\n cursor = this.session.remove(range);\n this.clearSelection();\n }\n else if (this.session.getOverwrite() && text.indexOf(\"\\n\") == -1) {\n var range = new Range.fromPoints(cursor, cursor);\n range.end.column += text.length;\n this.session.remove(range);\n }\n if (text == \"\\n\" || text == \"\\r\\n\") {\n var line = session.getLine(cursor.row);\n if (cursor.column > line.search(/\\S|$/)) {\n var d = line.substr(cursor.column).search(/\\S|$/);\n session.doc.removeInLine(cursor.row, cursor.column, cursor.column + d);\n }\n }\n this.clearSelection();\n var start = cursor.column;\n var lineState = session.getState(cursor.row);\n var line = session.getLine(cursor.row);\n var shouldOutdent = mode.checkOutdent(lineState, line, text);\n session.insert(cursor, text);\n if (transform && transform.selection) {\n if (transform.selection.length == 2) { // Transform relative to the current column\n this.selection.setSelectionRange(new Range(cursor.row, start + transform.selection[0], cursor.row, start + transform.selection[1]));\n }\n else { // Transform relative to the current row.\n this.selection.setSelectionRange(new Range(cursor.row + transform.selection[0], transform.selection[1], cursor.row + transform.selection[2], transform.selection[3]));\n }\n }\n if (this.$enableAutoIndent) {\n if (session.getDocument().isNewLine(text)) {\n var lineIndent = mode.getNextLineIndent(lineState, line.slice(0, cursor.column), session.getTabString());\n session.insert({ row: cursor.row + 1, column: 0 }, lineIndent);\n }\n if (shouldOutdent)\n mode.autoOutdent(lineState, session, cursor.row);\n }\n };\n Editor.prototype.autoIndent = function () {\n var session = this.session;\n var mode = session.getMode();\n var startRow, endRow;\n if (this.selection.isEmpty()) {\n startRow = 0;\n endRow = session.doc.getLength() - 1;\n }\n else {\n var selectedRange = this.getSelectionRange();\n startRow = selectedRange.start.row;\n endRow = selectedRange.end.row;\n }\n var prevLineState = \"\";\n var prevLine = \"\";\n var lineIndent = \"\";\n var line, currIndent, range;\n var tab = session.getTabString();\n for (var row = startRow; row <= endRow; row++) {\n if (row > 0) {\n prevLineState = session.getState(row - 1);\n prevLine = session.getLine(row - 1);\n lineIndent = mode.getNextLineIndent(prevLineState, prevLine, tab);\n }\n line = session.getLine(row);\n currIndent = mode.$getIndent(line);\n if (lineIndent !== currIndent) {\n if (currIndent.length > 0) {\n range = new Range(row, 0, row, currIndent.length);\n session.remove(range);\n }\n if (lineIndent.length > 0) {\n session.insert({ row: row, column: 0 }, lineIndent);\n }\n }\n mode.autoOutdent(prevLineState, session, row);\n }\n };\n Editor.prototype.onTextInput = function (text, composition) {\n if (!composition)\n return this.keyBinding.onTextInput(text);\n this.startOperation({ command: { name: \"insertstring\" } });\n var applyComposition = this.applyComposition.bind(this, text, composition);\n if (this.selection.rangeCount)\n this.forEachSelection(applyComposition);\n else\n applyComposition();\n this.endOperation();\n };\n Editor.prototype.applyComposition = function (text, composition) {\n if (composition.extendLeft || composition.extendRight) {\n var r = this.selection.getRange();\n r.start.column -= composition.extendLeft;\n r.end.column += composition.extendRight;\n if (r.start.column < 0) {\n r.start.row--;\n r.start.column += this.session.getLine(r.start.row).length + 1;\n }\n this.selection.setRange(r);\n if (!text && !r.isEmpty())\n this.remove();\n }\n if (text || !this.selection.isEmpty())\n this.insert(text, true);\n if (composition.restoreStart || composition.restoreEnd) {\n var r = this.selection.getRange();\n r.start.column -= composition.restoreStart;\n r.end.column -= composition.restoreEnd;\n this.selection.setRange(r);\n }\n };\n Editor.prototype.onCommandKey = function (e, hashId, keyCode) {\n return this.keyBinding.onCommandKey(e, hashId, keyCode);\n };\n Editor.prototype.setOverwrite = function (overwrite) {\n this.session.setOverwrite(overwrite);\n };\n Editor.prototype.getOverwrite = function () {\n return this.session.getOverwrite();\n };\n Editor.prototype.toggleOverwrite = function () {\n this.session.toggleOverwrite();\n };\n Editor.prototype.setScrollSpeed = function (speed) {\n this.setOption(\"scrollSpeed\", speed);\n };\n Editor.prototype.getScrollSpeed = function () {\n return this.getOption(\"scrollSpeed\");\n };\n Editor.prototype.setDragDelay = function (dragDelay) {\n this.setOption(\"dragDelay\", dragDelay);\n };\n Editor.prototype.getDragDelay = function () {\n return this.getOption(\"dragDelay\");\n };\n Editor.prototype.setSelectionStyle = function (val) {\n this.setOption(\"selectionStyle\", val);\n };\n Editor.prototype.getSelectionStyle = function () {\n return this.getOption(\"selectionStyle\");\n };\n Editor.prototype.setHighlightActiveLine = function (shouldHighlight) {\n this.setOption(\"highlightActiveLine\", shouldHighlight);\n };\n Editor.prototype.getHighlightActiveLine = function () {\n return this.getOption(\"highlightActiveLine\");\n };\n Editor.prototype.setHighlightGutterLine = function (shouldHighlight) {\n this.setOption(\"highlightGutterLine\", shouldHighlight);\n };\n Editor.prototype.getHighlightGutterLine = function () {\n return this.getOption(\"highlightGutterLine\");\n };\n Editor.prototype.setHighlightSelectedWord = function (shouldHighlight) {\n this.setOption(\"highlightSelectedWord\", shouldHighlight);\n };\n Editor.prototype.getHighlightSelectedWord = function () {\n return this.$highlightSelectedWord;\n };\n Editor.prototype.setAnimatedScroll = function (shouldAnimate) {\n this.renderer.setAnimatedScroll(shouldAnimate);\n };\n Editor.prototype.getAnimatedScroll = function () {\n return this.renderer.getAnimatedScroll();\n };\n Editor.prototype.setShowInvisibles = function (showInvisibles) {\n this.renderer.setShowInvisibles(showInvisibles);\n };\n Editor.prototype.getShowInvisibles = function () {\n return this.renderer.getShowInvisibles();\n };\n Editor.prototype.setDisplayIndentGuides = function (display) {\n this.renderer.setDisplayIndentGuides(display);\n };\n Editor.prototype.getDisplayIndentGuides = function () {\n return this.renderer.getDisplayIndentGuides();\n };\n Editor.prototype.setHighlightIndentGuides = function (highlight) {\n this.renderer.setHighlightIndentGuides(highlight);\n };\n Editor.prototype.getHighlightIndentGuides = function () {\n return this.renderer.getHighlightIndentGuides();\n };\n Editor.prototype.setShowPrintMargin = function (showPrintMargin) {\n this.renderer.setShowPrintMargin(showPrintMargin);\n };\n Editor.prototype.getShowPrintMargin = function () {\n return this.renderer.getShowPrintMargin();\n };\n Editor.prototype.setPrintMarginColumn = function (showPrintMargin) {\n this.renderer.setPrintMarginColumn(showPrintMargin);\n };\n Editor.prototype.getPrintMarginColumn = function () {\n return this.renderer.getPrintMarginColumn();\n };\n Editor.prototype.setReadOnly = function (readOnly) {\n this.setOption(\"readOnly\", readOnly);\n };\n Editor.prototype.getReadOnly = function () {\n return this.getOption(\"readOnly\");\n };\n Editor.prototype.setBehavioursEnabled = function (enabled) {\n this.setOption(\"behavioursEnabled\", enabled);\n };\n Editor.prototype.getBehavioursEnabled = function () {\n return this.getOption(\"behavioursEnabled\");\n };\n Editor.prototype.setWrapBehavioursEnabled = function (enabled) {\n this.setOption(\"wrapBehavioursEnabled\", enabled);\n };\n Editor.prototype.getWrapBehavioursEnabled = function () {\n return this.getOption(\"wrapBehavioursEnabled\");\n };\n Editor.prototype.setShowFoldWidgets = function (show) {\n this.setOption(\"showFoldWidgets\", show);\n };\n Editor.prototype.getShowFoldWidgets = function () {\n return this.getOption(\"showFoldWidgets\");\n };\n Editor.prototype.setFadeFoldWidgets = function (fade) {\n this.setOption(\"fadeFoldWidgets\", fade);\n };\n Editor.prototype.getFadeFoldWidgets = function () {\n return this.getOption(\"fadeFoldWidgets\");\n };\n Editor.prototype.remove = function (dir) {\n if (this.selection.isEmpty()) {\n if (dir == \"left\")\n this.selection.selectLeft();\n else\n this.selection.selectRight();\n }\n var range = this.getSelectionRange();\n if (this.getBehavioursEnabled()) {\n var session = this.session;\n var state = session.getState(range.start.row);\n var new_range = session.getMode().transformAction(state, 'deletion', this, session, range);\n if (range.end.column === 0) {\n var text = session.getTextRange(range);\n if (text[text.length - 1] == \"\\n\") {\n var line = session.getLine(range.end.row);\n if (/^\\s+$/.test(line)) {\n range.end.column = line.length;\n }\n }\n }\n if (new_range)\n range = new_range;\n }\n this.session.remove(range);\n this.clearSelection();\n };\n Editor.prototype.removeWordRight = function () {\n if (this.selection.isEmpty())\n this.selection.selectWordRight();\n this.session.remove(this.getSelectionRange());\n this.clearSelection();\n };\n Editor.prototype.removeWordLeft = function () {\n if (this.selection.isEmpty())\n this.selection.selectWordLeft();\n this.session.remove(this.getSelectionRange());\n this.clearSelection();\n };\n Editor.prototype.removeToLineStart = function () {\n if (this.selection.isEmpty())\n this.selection.selectLineStart();\n if (this.selection.isEmpty())\n this.selection.selectLeft();\n this.session.remove(this.getSelectionRange());\n this.clearSelection();\n };\n Editor.prototype.removeToLineEnd = function () {\n if (this.selection.isEmpty())\n this.selection.selectLineEnd();\n var range = this.getSelectionRange();\n if (range.start.column == range.end.column && range.start.row == range.end.row) {\n range.end.column = 0;\n range.end.row++;\n }\n this.session.remove(range);\n this.clearSelection();\n };\n Editor.prototype.splitLine = function () {\n if (!this.selection.isEmpty()) {\n this.session.remove(this.getSelectionRange());\n this.clearSelection();\n }\n var cursor = this.getCursorPosition();\n this.insert(\"\\n\");\n this.moveCursorToPosition(cursor);\n };\n Editor.prototype.setGhostText = function (text, position) {\n if (!this.session.widgetManager) {\n this.session.widgetManager = new LineWidgets(this.session);\n this.session.widgetManager.attach(this);\n }\n this.renderer.setGhostText(text, position);\n };\n Editor.prototype.removeGhostText = function () {\n if (!this.session.widgetManager)\n return;\n this.renderer.removeGhostText();\n };\n Editor.prototype.transposeLetters = function () {\n if (!this.selection.isEmpty()) {\n return;\n }\n var cursor = this.getCursorPosition();\n var column = cursor.column;\n if (column === 0)\n return;\n var line = this.session.getLine(cursor.row);\n var swap, range;\n if (column < line.length) {\n swap = line.charAt(column) + line.charAt(column - 1);\n range = new Range(cursor.row, column - 1, cursor.row, column + 1);\n }\n else {\n swap = line.charAt(column - 1) + line.charAt(column - 2);\n range = new Range(cursor.row, column - 2, cursor.row, column);\n }\n this.session.replace(range, swap);\n this.session.selection.moveToPosition(range.end);\n };\n Editor.prototype.toLowerCase = function () {\n var originalRange = this.getSelectionRange();\n if (this.selection.isEmpty()) {\n this.selection.selectWord();\n }\n var range = this.getSelectionRange();\n var text = this.session.getTextRange(range);\n this.session.replace(range, text.toLowerCase());\n this.selection.setSelectionRange(originalRange);\n };\n Editor.prototype.toUpperCase = function () {\n var originalRange = this.getSelectionRange();\n if (this.selection.isEmpty()) {\n this.selection.selectWord();\n }\n var range = this.getSelectionRange();\n var text = this.session.getTextRange(range);\n this.session.replace(range, text.toUpperCase());\n this.selection.setSelectionRange(originalRange);\n };\n Editor.prototype.indent = function () {\n var session = this.session;\n var range = this.getSelectionRange();\n if (range.start.row < range.end.row) {\n var rows = this.$getSelectedRows();\n session.indentRows(rows.first, rows.last, \"\\t\");\n return;\n }\n else if (range.start.column < range.end.column) {\n var text = session.getTextRange(range);\n if (!/^\\s+$/.test(text)) {\n var rows = this.$getSelectedRows();\n session.indentRows(rows.first, rows.last, \"\\t\");\n return;\n }\n }\n var line = session.getLine(range.start.row);\n var position = range.start;\n var size = session.getTabSize();\n var column = session.documentToScreenColumn(position.row, position.column);\n if (this.session.getUseSoftTabs()) {\n var count = (size - column % size);\n var indentString = lang.stringRepeat(\" \", count);\n }\n else {\n var count = column % size;\n while (line[range.start.column - 1] == \" \" && count) {\n range.start.column--;\n count--;\n }\n this.selection.setSelectionRange(range);\n indentString = \"\\t\";\n }\n return this.insert(indentString);\n };\n Editor.prototype.blockIndent = function () {\n var rows = this.$getSelectedRows();\n this.session.indentRows(rows.first, rows.last, \"\\t\");\n };\n Editor.prototype.blockOutdent = function () {\n var selection = this.session.getSelection();\n this.session.outdentRows(selection.getRange());\n };\n Editor.prototype.sortLines = function () {\n var rows = this.$getSelectedRows();\n var session = this.session;\n var lines = [];\n for (var i = rows.first; i <= rows.last; i++)\n lines.push(session.getLine(i));\n lines.sort(function (a, b) {\n if (a.toLowerCase() < b.toLowerCase())\n return -1;\n if (a.toLowerCase() > b.toLowerCase())\n return 1;\n return 0;\n });\n var deleteRange = new Range(0, 0, 0, 0);\n for (var i = rows.first; i <= rows.last; i++) {\n var line = session.getLine(i);\n deleteRange.start.row = i;\n deleteRange.end.row = i;\n deleteRange.end.column = line.length;\n session.replace(deleteRange, lines[i - rows.first]);\n }\n };\n Editor.prototype.toggleCommentLines = function () {\n var state = this.session.getState(this.getCursorPosition().row);\n var rows = this.$getSelectedRows();\n this.session.getMode().toggleCommentLines(state, this.session, rows.first, rows.last);\n };\n Editor.prototype.toggleBlockComment = function () {\n var cursor = this.getCursorPosition();\n var state = this.session.getState(cursor.row);\n var range = this.getSelectionRange();\n this.session.getMode().toggleBlockComment(state, this.session, range, cursor);\n };\n Editor.prototype.getNumberAt = function (row, column) {\n var _numberRx = /[\\-]?[0-9]+(?:\\.[0-9]+)?/g;\n _numberRx.lastIndex = 0;\n var s = this.session.getLine(row);\n while (_numberRx.lastIndex < column) {\n var m = _numberRx.exec(s);\n if (m.index <= column && m.index + m[0].length >= column) {\n var number = {\n value: m[0],\n start: m.index,\n end: m.index + m[0].length\n };\n return number;\n }\n }\n return null;\n };\n Editor.prototype.modifyNumber = function (amount) {\n var row = this.selection.getCursor().row;\n var column = this.selection.getCursor().column;\n var charRange = new Range(row, column - 1, row, column);\n var c = this.session.getTextRange(charRange);\n if (!isNaN(parseFloat(c)) && isFinite(c)) {\n var nr = this.getNumberAt(row, column);\n if (nr) {\n var fp = nr.value.indexOf(\".\") >= 0 ? nr.start + nr.value.indexOf(\".\") + 1 : nr.end;\n var decimals = nr.start + nr.value.length - fp;\n var t = parseFloat(nr.value);\n t *= Math.pow(10, decimals);\n if (fp !== nr.end && column < fp) {\n amount *= Math.pow(10, nr.end - column - 1);\n }\n else {\n amount *= Math.pow(10, nr.end - column);\n }\n t += amount;\n t /= Math.pow(10, decimals);\n var nnr = t.toFixed(decimals);\n var replaceRange = new Range(row, nr.start, row, nr.end);\n this.session.replace(replaceRange, nnr);\n this.moveCursorTo(row, Math.max(nr.start + 1, column + nnr.length - nr.value.length));\n }\n }\n else {\n this.toggleWord();\n }\n };\n Editor.prototype.toggleWord = function () {\n var row = this.selection.getCursor().row;\n var column = this.selection.getCursor().column;\n this.selection.selectWord();\n var currentState = this.getSelectedText();\n var currWordStart = this.selection.getWordRange().start.column;\n var wordParts = currentState.replace(/([a-z]+|[A-Z]+)(?=[A-Z_]|$)/g, '$1 ').split(/\\s/);\n var delta = column - currWordStart - 1;\n if (delta < 0)\n delta = 0;\n var curLength = 0, itLength = 0;\n var that = this;\n if (currentState.match(/[A-Za-z0-9_]+/)) {\n wordParts.forEach(function (item, i) {\n itLength = curLength + item.length;\n if (delta >= curLength && delta <= itLength) {\n currentState = item;\n that.selection.clearSelection();\n that.moveCursorTo(row, curLength + currWordStart);\n that.selection.selectTo(row, itLength + currWordStart);\n }\n curLength = itLength;\n });\n }\n var wordPairs = this.$toggleWordPairs;\n var reg;\n for (var i = 0; i < wordPairs.length; i++) {\n var item = wordPairs[i];\n for (var j = 0; j <= 1; j++) {\n var negate = +!j;\n var firstCondition = currentState.match(new RegExp('^\\\\s?_?(' + lang.escapeRegExp(item[j]) + ')\\\\s?$', 'i'));\n if (firstCondition) {\n var secondCondition = currentState.match(new RegExp('([_]|^|\\\\s)(' + lang.escapeRegExp(firstCondition[1]) + ')($|\\\\s)', 'g'));\n if (secondCondition) {\n reg = currentState.replace(new RegExp(lang.escapeRegExp(item[j]), 'i'), function (result) {\n var res = item[negate];\n if (result.toUpperCase() == result) {\n res = res.toUpperCase();\n }\n else if (result.charAt(0).toUpperCase() == result.charAt(0)) {\n res = res.substr(0, 0) + item[negate].charAt(0).toUpperCase() + res.substr(1);\n }\n return res;\n });\n this.insert(reg);\n reg = \"\";\n }\n }\n }\n }\n };\n Editor.prototype.findLinkAt = function (row, column) {\n var e_1, _a;\n var line = this.session.getLine(row);\n var wordParts = line.split(/((?:https?|ftp):\\/\\/[\\S]+)/);\n var columnPosition = column;\n if (columnPosition < 0)\n columnPosition = 0;\n var previousPosition = 0, currentPosition = 0, match;\n try {\n for (var wordParts_1 = __values(wordParts), wordParts_1_1 = wordParts_1.next(); !wordParts_1_1.done; wordParts_1_1 = wordParts_1.next()) {\n var item = wordParts_1_1.value;\n currentPosition = previousPosition + item.length;\n if (columnPosition >= previousPosition && columnPosition <= currentPosition) {\n if (item.match(/((?:https?|ftp):\\/\\/[\\S]+)/)) {\n match = item.replace(/[\\s:.,'\";}\\]]+$/, \"\");\n break;\n }\n }\n previousPosition = currentPosition;\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (wordParts_1_1 && !wordParts_1_1.done && (_a = wordParts_1.return)) _a.call(wordParts_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return match;\n };\n Editor.prototype.openLink = function () {\n var cursor = this.selection.getCursor();\n var url = this.findLinkAt(cursor.row, cursor.column);\n if (url)\n window.open(url, '_blank');\n return url != null;\n };\n Editor.prototype.removeLines = function () {\n var rows = this.$getSelectedRows();\n this.session.removeFullLines(rows.first, rows.last);\n this.clearSelection();\n };\n Editor.prototype.duplicateSelection = function () {\n var sel = this.selection;\n var doc = this.session;\n var range = sel.getRange();\n var reverse = sel.isBackwards();\n if (range.isEmpty()) {\n var row = range.start.row;\n doc.duplicateLines(row, row);\n }\n else {\n var point = reverse ? range.start : range.end;\n var endPoint = doc.insert(point, doc.getTextRange(range), false);\n range.start = point;\n range.end = endPoint;\n sel.setSelectionRange(range, reverse);\n }\n };\n Editor.prototype.moveLinesDown = function () {\n this.$moveLines(1, false);\n };\n Editor.prototype.moveLinesUp = function () {\n this.$moveLines(-1, false);\n };\n Editor.prototype.moveText = function (range, toPosition, copy) {\n return this.session.moveText(range, toPosition, copy);\n };\n Editor.prototype.copyLinesUp = function () {\n this.$moveLines(-1, true);\n };\n Editor.prototype.copyLinesDown = function () {\n this.$moveLines(1, true);\n };\n Editor.prototype.$moveLines = function (dir, copy) {\n var rows, moved;\n var selection = this.selection;\n if (!selection.inMultiSelectMode || this.inVirtualSelectionMode) {\n var range = selection.toOrientedRange();\n rows = this.$getSelectedRows(range);\n moved = this.session.$moveLines(rows.first, rows.last, copy ? 0 : dir);\n if (copy && dir == -1)\n moved = 0;\n range.moveBy(moved, 0);\n selection.fromOrientedRange(range);\n }\n else {\n var ranges = selection.rangeList.ranges;\n selection.rangeList.detach(this.session);\n this.inVirtualSelectionMode = true;\n var diff = 0;\n var totalDiff = 0;\n var l = ranges.length;\n for (var i = 0; i < l; i++) {\n var rangeIndex = i;\n ranges[i].moveBy(diff, 0);\n rows = this.$getSelectedRows(ranges[i]);\n var first = rows.first;\n var last = rows.last;\n while (++i < l) {\n if (totalDiff)\n ranges[i].moveBy(totalDiff, 0);\n var subRows = this.$getSelectedRows(ranges[i]);\n if (copy && subRows.first != last)\n break;\n else if (!copy && subRows.first > last + 1)\n break;\n last = subRows.last;\n }\n i--;\n diff = this.session.$moveLines(first, last, copy ? 0 : dir);\n if (copy && dir == -1)\n rangeIndex = i + 1;\n while (rangeIndex <= i) {\n ranges[rangeIndex].moveBy(diff, 0);\n rangeIndex++;\n }\n if (!copy)\n diff = 0;\n totalDiff += diff;\n }\n selection.fromOrientedRange(selection.ranges[0]);\n selection.rangeList.attach(this.session);\n this.inVirtualSelectionMode = false;\n }\n };\n Editor.prototype.$getSelectedRows = function (range) {\n range = (range || this.getSelectionRange()).collapseRows();\n return {\n first: this.session.getRowFoldStart(range.start.row),\n last: this.session.getRowFoldEnd(range.end.row)\n };\n };\n Editor.prototype.onCompositionStart = function (compositionState) {\n this.renderer.showComposition(compositionState);\n };\n Editor.prototype.onCompositionUpdate = function (text) {\n this.renderer.setCompositionText(text);\n };\n Editor.prototype.onCompositionEnd = function () {\n this.renderer.hideComposition();\n };\n Editor.prototype.getFirstVisibleRow = function () {\n return this.renderer.getFirstVisibleRow();\n };\n Editor.prototype.getLastVisibleRow = function () {\n return this.renderer.getLastVisibleRow();\n };\n Editor.prototype.isRowVisible = function (row) {\n return (row >= this.getFirstVisibleRow() && row <= this.getLastVisibleRow());\n };\n Editor.prototype.isRowFullyVisible = function (row) {\n return (row >= this.renderer.getFirstFullyVisibleRow() && row <= this.renderer.getLastFullyVisibleRow());\n };\n Editor.prototype.$getVisibleRowCount = function () {\n return this.renderer.getScrollBottomRow() - this.renderer.getScrollTopRow() + 1;\n };\n Editor.prototype.$moveByPage = function (dir, select) {\n var renderer = this.renderer;\n var config = this.renderer.layerConfig;\n var rows = dir * Math.floor(config.height / config.lineHeight);\n if (select === true) {\n this.selection.$moveSelection(function () {\n this.moveCursorBy(rows, 0);\n });\n }\n else if (select === false) {\n this.selection.moveCursorBy(rows, 0);\n this.selection.clearSelection();\n }\n var scrollTop = renderer.scrollTop;\n renderer.scrollBy(0, rows * config.lineHeight);\n if (select != null)\n renderer.scrollCursorIntoView(null, 0.5);\n renderer.animateScrolling(scrollTop);\n };\n Editor.prototype.selectPageDown = function () {\n this.$moveByPage(1, true);\n };\n Editor.prototype.selectPageUp = function () {\n this.$moveByPage(-1, true);\n };\n Editor.prototype.gotoPageDown = function () {\n this.$moveByPage(1, false);\n };\n Editor.prototype.gotoPageUp = function () {\n this.$moveByPage(-1, false);\n };\n Editor.prototype.scrollPageDown = function () {\n this.$moveByPage(1);\n };\n Editor.prototype.scrollPageUp = function () {\n this.$moveByPage(-1);\n };\n Editor.prototype.scrollToRow = function (row) {\n this.renderer.scrollToRow(row);\n };\n Editor.prototype.scrollToLine = function (line, center, animate, callback) {\n this.renderer.scrollToLine(line, center, animate, callback);\n };\n Editor.prototype.centerSelection = function () {\n var range = this.getSelectionRange();\n var pos = {\n row: Math.floor(range.start.row + (range.end.row - range.start.row) / 2),\n column: Math.floor(range.start.column + (range.end.column - range.start.column) / 2)\n };\n this.renderer.alignCursor(pos, 0.5);\n };\n Editor.prototype.getCursorPosition = function () {\n return this.selection.getCursor();\n };\n Editor.prototype.getCursorPositionScreen = function () {\n return this.session.documentToScreenPosition(this.getCursorPosition());\n };\n Editor.prototype.getSelectionRange = function () {\n return this.selection.getRange();\n };\n Editor.prototype.selectAll = function () {\n this.selection.selectAll();\n };\n Editor.prototype.clearSelection = function () {\n this.selection.clearSelection();\n };\n Editor.prototype.moveCursorTo = function (row, column) {\n this.selection.moveCursorTo(row, column);\n };\n Editor.prototype.moveCursorToPosition = function (pos) {\n this.selection.moveCursorToPosition(pos);\n };\n Editor.prototype.jumpToMatching = function (select, expand) {\n var cursor = this.getCursorPosition();\n var iterator = new TokenIterator(this.session, cursor.row, cursor.column);\n var prevToken = iterator.getCurrentToken();\n var tokenCount = 0;\n if (prevToken && prevToken.type.indexOf('tag-name') !== -1) {\n prevToken = iterator.stepBackward();\n }\n var token = prevToken || iterator.stepForward();\n if (!token)\n return;\n var matchType;\n var found = false;\n var depth = {};\n var i = cursor.column - token.start;\n var bracketType;\n var brackets = {\n \")\": \"(\",\n \"(\": \"(\",\n \"]\": \"[\",\n \"[\": \"[\",\n \"{\": \"{\",\n \"}\": \"{\"\n };\n do {\n if (token.value.match(/[{}()\\[\\]]/g)) {\n for (; i < token.value.length && !found; i++) {\n if (!brackets[token.value[i]]) {\n continue;\n }\n bracketType = brackets[token.value[i]] + '.' + token.type.replace(\"rparen\", \"lparen\");\n if (isNaN(depth[bracketType])) {\n depth[bracketType] = 0;\n }\n switch (token.value[i]) {\n case '(':\n case '[':\n case '{':\n depth[bracketType]++;\n break;\n case ')':\n case ']':\n case '}':\n depth[bracketType]--;\n if (depth[bracketType] === -1) {\n matchType = 'bracket';\n found = true;\n }\n break;\n }\n }\n }\n else if (token.type.indexOf('tag-name') !== -1) {\n if (isNaN(depth[token.value])) {\n depth[token.value] = 0;\n }\n if (prevToken.value === '<' && tokenCount > 1) {\n depth[token.value]++;\n }\n else if (prevToken.value === '= 0; --i) {\n if (this.$tryReplace(ranges[i], replacement)) {\n replaced++;\n }\n }\n this.selection.setSelectionRange(selection);\n return replaced;\n };\n Editor.prototype.$tryReplace = function (range, replacement) {\n var input = this.session.getTextRange(range);\n replacement = this.$search.replace(input, replacement);\n if (replacement !== null) {\n range.end = this.session.replace(range, replacement);\n return range;\n }\n else {\n return null;\n }\n };\n Editor.prototype.getLastSearchOptions = function () {\n return this.$search.getOptions();\n };\n Editor.prototype.find = function (needle, options, animate) {\n if (!options)\n options = {};\n if (typeof needle == \"string\" || needle instanceof RegExp)\n options.needle = needle;\n else if (typeof needle == \"object\")\n oop.mixin(options, needle);\n var range = this.selection.getRange();\n if (options.needle == null) {\n needle = this.session.getTextRange(range)\n || this.$search.$options.needle;\n if (!needle) {\n range = this.session.getWordRange(range.start.row, range.start.column);\n needle = this.session.getTextRange(range);\n }\n this.$search.set({ needle: needle });\n }\n this.$search.set(options);\n if (!options.start)\n this.$search.set({ start: range });\n var newRange = this.$search.find(this.session);\n if (options.preventScroll)\n return newRange;\n if (newRange) {\n this.revealRange(newRange, animate);\n return newRange;\n }\n if (options.backwards)\n range.start = range.end;\n else\n range.end = range.start;\n this.selection.setRange(range);\n };\n Editor.prototype.findNext = function (options, animate) {\n this.find({ skipCurrent: true, backwards: false }, options, animate);\n };\n Editor.prototype.findPrevious = function (options, animate) {\n this.find(options, { skipCurrent: true, backwards: true }, animate);\n };\n Editor.prototype.revealRange = function (range, animate) {\n this.session.unfold(range);\n this.selection.setSelectionRange(range);\n var scrollTop = this.renderer.scrollTop;\n this.renderer.scrollSelectionIntoView(range.start, range.end, 0.5);\n if (animate !== false)\n this.renderer.animateScrolling(scrollTop);\n };\n Editor.prototype.undo = function () {\n this.session.getUndoManager().undo(this.session);\n this.renderer.scrollCursorIntoView(null, 0.5);\n };\n Editor.prototype.redo = function () {\n this.session.getUndoManager().redo(this.session);\n this.renderer.scrollCursorIntoView(null, 0.5);\n };\n Editor.prototype.destroy = function () {\n if (this.$toDestroy) {\n this.$toDestroy.forEach(function (el) {\n el.destroy();\n });\n this.$toDestroy = null;\n }\n if (this.$mouseHandler)\n this.$mouseHandler.destroy();\n this.renderer.destroy();\n this._signal(\"destroy\", this);\n if (this.session)\n this.session.destroy();\n if (this._$emitInputEvent)\n this._$emitInputEvent.cancel();\n this.removeAllListeners();\n };\n Editor.prototype.setAutoScrollEditorIntoView = function (enable) {\n if (!enable)\n return;\n var rect;\n var self = this;\n var shouldScroll = false;\n if (!this.$scrollAnchor)\n this.$scrollAnchor = document.createElement(\"div\");\n var scrollAnchor = this.$scrollAnchor;\n scrollAnchor.style.cssText = \"position:absolute\";\n this.container.insertBefore(scrollAnchor, this.container.firstChild);\n var onChangeSelection = this.on(\"changeSelection\", function () {\n shouldScroll = true;\n });\n var onBeforeRender = this.renderer.on(\"beforeRender\", function () {\n if (shouldScroll)\n rect = self.renderer.container.getBoundingClientRect();\n });\n var onAfterRender = this.renderer.on(\"afterRender\", function () {\n if (shouldScroll && rect && (self.isFocused()\n || self.searchBox && self.searchBox.isFocused())) {\n var renderer = self.renderer;\n var pos = renderer.$cursorLayer.$pixelPos;\n var config = renderer.layerConfig;\n var top = pos.top - config.offset;\n if (pos.top >= 0 && top + rect.top < 0) {\n shouldScroll = true;\n }\n else if (pos.top < config.height &&\n pos.top + rect.top + config.lineHeight > window.innerHeight) {\n shouldScroll = false;\n }\n else {\n shouldScroll = null;\n }\n if (shouldScroll != null) {\n scrollAnchor.style.top = top + \"px\";\n scrollAnchor.style.left = pos.left + \"px\";\n scrollAnchor.style.height = config.lineHeight + \"px\";\n scrollAnchor.scrollIntoView(shouldScroll);\n }\n shouldScroll = rect = null;\n }\n });\n this.setAutoScrollEditorIntoView = function (enable) {\n if (enable)\n return;\n delete this.setAutoScrollEditorIntoView;\n this.off(\"changeSelection\", onChangeSelection);\n this.renderer.off(\"afterRender\", onAfterRender);\n this.renderer.off(\"beforeRender\", onBeforeRender);\n };\n };\n Editor.prototype.$resetCursorStyle = function () {\n var style = this.$cursorStyle || \"ace\";\n var cursorLayer = this.renderer.$cursorLayer;\n if (!cursorLayer)\n return;\n cursorLayer.setSmoothBlinking(/smooth/.test(style));\n cursorLayer.isBlinking = !this.$readOnly && style != \"wide\";\n dom.setCssClass(cursorLayer.element, \"ace_slim-cursors\", /slim/.test(style));\n };\n Editor.prototype.prompt = function (message, options, callback) {\n var editor = this;\n config.loadModule(\"ace/ext/prompt\", function (module) {\n module.prompt(editor, message, options, callback);\n });\n };\n return Editor;\n}());\nEditor.$uid = 0;\nEditor.prototype.curOp = null;\nEditor.prototype.prevOp = {};\nEditor.prototype.$mergeableCommands = [\"backspace\", \"del\", \"insertstring\"];\nEditor.prototype.$toggleWordPairs = [\n [\"first\", \"last\"],\n [\"true\", \"false\"],\n [\"yes\", \"no\"],\n [\"width\", \"height\"],\n [\"top\", \"bottom\"],\n [\"right\", \"left\"],\n [\"on\", \"off\"],\n [\"x\", \"y\"],\n [\"get\", \"set\"],\n [\"max\", \"min\"],\n [\"horizontal\", \"vertical\"],\n [\"show\", \"hide\"],\n [\"add\", \"remove\"],\n [\"up\", \"down\"],\n [\"before\", \"after\"],\n [\"even\", \"odd\"],\n [\"in\", \"out\"],\n [\"inside\", \"outside\"],\n [\"next\", \"previous\"],\n [\"increase\", \"decrease\"],\n [\"attach\", \"detach\"],\n [\"&&\", \"||\"],\n [\"==\", \"!=\"]\n];\noop.implement(Editor.prototype, EventEmitter);\nconfig.defineOptions(Editor.prototype, \"editor\", {\n selectionStyle: {\n set: function (style) {\n this.onSelectionChange();\n this._signal(\"changeSelectionStyle\", { data: style });\n },\n initialValue: \"line\"\n },\n highlightActiveLine: {\n set: function () { this.$updateHighlightActiveLine(); },\n initialValue: true\n },\n highlightSelectedWord: {\n set: function (shouldHighlight) { this.$onSelectionChange(); },\n initialValue: true\n },\n readOnly: {\n set: function (readOnly) {\n this.textInput.setReadOnly(readOnly);\n this.$resetCursorStyle();\n },\n initialValue: false\n },\n copyWithEmptySelection: {\n set: function (value) {\n this.textInput.setCopyWithEmptySelection(value);\n },\n initialValue: false\n },\n cursorStyle: {\n set: function (val) { this.$resetCursorStyle(); },\n values: [\"ace\", \"slim\", \"smooth\", \"wide\"],\n initialValue: \"ace\"\n },\n mergeUndoDeltas: {\n values: [false, true, \"always\"],\n initialValue: true\n },\n behavioursEnabled: { initialValue: true },\n wrapBehavioursEnabled: { initialValue: true },\n enableAutoIndent: { initialValue: true },\n autoScrollEditorIntoView: {\n set: function (val) { this.setAutoScrollEditorIntoView(val); }\n },\n keyboardHandler: {\n set: function (val) { this.setKeyboardHandler(val); },\n get: function () { return this.$keybindingId; },\n handlesSet: true\n },\n value: {\n set: function (val) { this.session.setValue(val); },\n get: function () { return this.getValue(); },\n handlesSet: true,\n hidden: true\n },\n session: {\n set: function (val) { this.setSession(val); },\n get: function () { return this.session; },\n handlesSet: true,\n hidden: true\n },\n showLineNumbers: {\n set: function (show) {\n this.renderer.$gutterLayer.setShowLineNumbers(show);\n this.renderer.$loop.schedule(this.renderer.CHANGE_GUTTER);\n if (show && this.$relativeLineNumbers)\n relativeNumberRenderer.attach(this);\n else\n relativeNumberRenderer.detach(this);\n },\n initialValue: true\n },\n relativeLineNumbers: {\n set: function (value) {\n if (this.$showLineNumbers && value)\n relativeNumberRenderer.attach(this);\n else\n relativeNumberRenderer.detach(this);\n }\n },\n placeholder: {\n set: function (message) {\n if (!this.$updatePlaceholder) {\n this.$updatePlaceholder = function () {\n var hasValue = this.session && (this.renderer.$composition ||\n this.session.getLength() > 1 || this.session.getLine(0).length > 0);\n if (hasValue && this.renderer.placeholderNode) {\n this.renderer.off(\"afterRender\", this.$updatePlaceholder);\n dom.removeCssClass(this.container, \"ace_hasPlaceholder\");\n this.renderer.placeholderNode.remove();\n this.renderer.placeholderNode = null;\n }\n else if (!hasValue && !this.renderer.placeholderNode) {\n this.renderer.on(\"afterRender\", this.$updatePlaceholder);\n dom.addCssClass(this.container, \"ace_hasPlaceholder\");\n var el = dom.createElement(\"div\");\n el.className = \"ace_placeholder\";\n el.textContent = this.$placeholder || \"\";\n this.renderer.placeholderNode = el;\n this.renderer.content.appendChild(this.renderer.placeholderNode);\n }\n else if (!hasValue && this.renderer.placeholderNode) {\n this.renderer.placeholderNode.textContent = this.$placeholder || \"\";\n }\n }.bind(this);\n this.on(\"input\", this.$updatePlaceholder);\n }\n this.$updatePlaceholder();\n }\n },\n enableKeyboardAccessibility: {\n set: function (value) {\n var blurCommand = {\n name: \"blurTextInput\",\n description: \"Set focus to the editor content div to allow tabbing through the page\",\n bindKey: \"Esc\",\n exec: function (editor) {\n editor.blur();\n editor.renderer.scroller.focus();\n },\n readOnly: true\n };\n var focusOnEnterKeyup = function (e) {\n if (e.target == this.renderer.scroller && e.keyCode === keys['enter']) {\n e.preventDefault();\n var row = this.getCursorPosition().row;\n if (!this.isRowVisible(row))\n this.scrollToLine(row, true, true);\n this.focus();\n }\n };\n var gutterKeyboardHandler;\n if (value) {\n this.renderer.enableKeyboardAccessibility = true;\n this.renderer.keyboardFocusClassName = \"ace_keyboard-focus\";\n this.textInput.getElement().setAttribute(\"tabindex\", -1);\n this.textInput.setNumberOfExtraLines(useragent.isWin ? 3 : 0);\n this.renderer.scroller.setAttribute(\"tabindex\", 0);\n this.renderer.scroller.setAttribute(\"role\", \"group\");\n this.renderer.scroller.setAttribute(\"aria-roledescription\", nls(\"editor\"));\n this.renderer.scroller.classList.add(this.renderer.keyboardFocusClassName);\n this.renderer.scroller.setAttribute(\"aria-label\", nls(\"Editor content, press Enter to start editing, press Escape to exit\"));\n this.renderer.scroller.addEventListener(\"keyup\", focusOnEnterKeyup.bind(this));\n this.commands.addCommand(blurCommand);\n this.renderer.$gutter.setAttribute(\"tabindex\", 0);\n this.renderer.$gutter.setAttribute(\"aria-hidden\", false);\n this.renderer.$gutter.setAttribute(\"role\", \"group\");\n this.renderer.$gutter.setAttribute(\"aria-roledescription\", nls(\"editor\"));\n this.renderer.$gutter.setAttribute(\"aria-label\", nls(\"Editor gutter, press Enter to interact with controls using arrow keys, press Escape to exit\"));\n this.renderer.$gutter.classList.add(this.renderer.keyboardFocusClassName);\n this.renderer.content.setAttribute(\"aria-hidden\", true);\n if (!gutterKeyboardHandler)\n gutterKeyboardHandler = new GutterKeyboardHandler(this);\n gutterKeyboardHandler.addListener();\n }\n else {\n this.renderer.enableKeyboardAccessibility = false;\n this.textInput.getElement().setAttribute(\"tabindex\", 0);\n this.textInput.setNumberOfExtraLines(0);\n this.renderer.scroller.setAttribute(\"tabindex\", -1);\n this.renderer.scroller.removeAttribute(\"role\");\n this.renderer.scroller.removeAttribute(\"aria-roledescription\");\n this.renderer.scroller.classList.remove(this.renderer.keyboardFocusClassName);\n this.renderer.scroller.removeAttribute(\"aria-label\");\n this.renderer.scroller.removeEventListener(\"keyup\", focusOnEnterKeyup.bind(this));\n this.commands.removeCommand(blurCommand);\n this.renderer.content.removeAttribute(\"aria-hidden\");\n this.renderer.$gutter.setAttribute(\"tabindex\", -1);\n this.renderer.$gutter.setAttribute(\"aria-hidden\", true);\n this.renderer.$gutter.removeAttribute(\"role\");\n this.renderer.$gutter.removeAttribute(\"aria-roledescription\");\n this.renderer.$gutter.removeAttribute(\"aria-label\");\n this.renderer.$gutter.classList.remove(this.renderer.keyboardFocusClassName);\n if (gutterKeyboardHandler)\n gutterKeyboardHandler.removeListener();\n }\n },\n initialValue: false\n },\n customScrollbar: \"renderer\",\n hScrollBarAlwaysVisible: \"renderer\",\n vScrollBarAlwaysVisible: \"renderer\",\n highlightGutterLine: \"renderer\",\n animatedScroll: \"renderer\",\n showInvisibles: \"renderer\",\n showPrintMargin: \"renderer\",\n printMarginColumn: \"renderer\",\n printMargin: \"renderer\",\n fadeFoldWidgets: \"renderer\",\n showFoldWidgets: \"renderer\",\n displayIndentGuides: \"renderer\",\n highlightIndentGuides: \"renderer\",\n showGutter: \"renderer\",\n fontSize: \"renderer\",\n fontFamily: \"renderer\",\n maxLines: \"renderer\",\n minLines: \"renderer\",\n scrollPastEnd: \"renderer\",\n fixedWidthGutter: \"renderer\",\n theme: \"renderer\",\n hasCssTransforms: \"renderer\",\n maxPixelHeight: \"renderer\",\n useTextareaForIME: \"renderer\",\n useResizeObserver: \"renderer\",\n useSvgGutterIcons: \"renderer\",\n showFoldedAnnotations: \"renderer\",\n scrollSpeed: \"$mouseHandler\",\n dragDelay: \"$mouseHandler\",\n dragEnabled: \"$mouseHandler\",\n focusTimeout: \"$mouseHandler\",\n tooltipFollowsMouse: \"$mouseHandler\",\n firstLineNumber: \"session\",\n overwrite: \"session\",\n newLineMode: \"session\",\n useWorker: \"session\",\n useSoftTabs: \"session\",\n navigateWithinSoftTabs: \"session\",\n tabSize: \"session\",\n wrap: \"session\",\n indentedSoftWrap: \"session\",\n foldStyle: \"session\",\n mode: \"session\"\n});\nvar relativeNumberRenderer = {\n getText: function (session, row) {\n return (Math.abs(session.selection.lead.row - row) || (row + 1 + (row < 9 ? \"\\xb7\" : \"\"))) + \"\";\n },\n getWidth: function (session, lastLineNumber, config) {\n return Math.max(lastLineNumber.toString().length, (config.lastRow + 1).toString().length, 2) * config.characterWidth;\n },\n update: function (e, editor) {\n editor.renderer.$loop.schedule(editor.renderer.CHANGE_GUTTER);\n },\n attach: function (editor) {\n editor.renderer.$gutterLayer.$renderer = this;\n editor.on(\"changeSelection\", this.update);\n this.update(null, editor);\n },\n detach: function (editor) {\n if (editor.renderer.$gutterLayer.$renderer == this)\n editor.renderer.$gutterLayer.$renderer = null;\n editor.off(\"changeSelection\", this.update);\n this.update(null, editor);\n }\n};\nexports.Editor = Editor;\n\n});\n\nace.define(\"ace/layer/lines\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"], function(require, exports, module){\"use strict\";\nvar dom = require(\"../lib/dom\");\nvar Lines = /** @class */ (function () {\n function Lines(element, canvasHeight) {\n this.element = element;\n this.canvasHeight = canvasHeight || 500000;\n this.element.style.height = (this.canvasHeight * 2) + \"px\";\n this.cells = [];\n this.cellCache = [];\n this.$offsetCoefficient = 0;\n }\n Lines.prototype.moveContainer = function (config) {\n dom.translate(this.element, 0, -((config.firstRowScreen * config.lineHeight) % this.canvasHeight) - config.offset * this.$offsetCoefficient);\n };\n Lines.prototype.pageChanged = function (oldConfig, newConfig) {\n return (Math.floor((oldConfig.firstRowScreen * oldConfig.lineHeight) / this.canvasHeight) !==\n Math.floor((newConfig.firstRowScreen * newConfig.lineHeight) / this.canvasHeight));\n };\n Lines.prototype.computeLineTop = function (row, config, session) {\n var screenTop = config.firstRowScreen * config.lineHeight;\n var screenPage = Math.floor(screenTop / this.canvasHeight);\n var lineTop = session.documentToScreenRow(row, 0) * config.lineHeight;\n return lineTop - (screenPage * this.canvasHeight);\n };\n Lines.prototype.computeLineHeight = function (row, config, session) {\n return config.lineHeight * session.getRowLineCount(row);\n };\n Lines.prototype.getLength = function () {\n return this.cells.length;\n };\n Lines.prototype.get = function (index) {\n return this.cells[index];\n };\n Lines.prototype.shift = function () {\n this.$cacheCell(this.cells.shift());\n };\n Lines.prototype.pop = function () {\n this.$cacheCell(this.cells.pop());\n };\n Lines.prototype.push = function (cell) {\n if (Array.isArray(cell)) {\n this.cells.push.apply(this.cells, cell);\n var fragment = dom.createFragment(this.element);\n for (var i = 0; i < cell.length; i++) {\n fragment.appendChild(cell[i].element);\n }\n this.element.appendChild(fragment);\n }\n else {\n this.cells.push(cell);\n this.element.appendChild(cell.element);\n }\n };\n Lines.prototype.unshift = function (cell) {\n if (Array.isArray(cell)) {\n this.cells.unshift.apply(this.cells, cell);\n var fragment = dom.createFragment(this.element);\n for (var i = 0; i < cell.length; i++) {\n fragment.appendChild(cell[i].element);\n }\n if (this.element.firstChild)\n this.element.insertBefore(fragment, this.element.firstChild);\n else\n this.element.appendChild(fragment);\n }\n else {\n this.cells.unshift(cell);\n this.element.insertAdjacentElement(\"afterbegin\", cell.element);\n }\n };\n Lines.prototype.last = function () {\n if (this.cells.length)\n return this.cells[this.cells.length - 1];\n else\n return null;\n };\n Lines.prototype.$cacheCell = function (cell) {\n if (!cell)\n return;\n cell.element.remove();\n this.cellCache.push(cell);\n };\n Lines.prototype.createCell = function (row, config, session, initElement) {\n var cell = this.cellCache.pop();\n if (!cell) {\n var element = dom.createElement(\"div\");\n if (initElement)\n initElement(element);\n this.element.appendChild(element);\n cell = {\n element: element,\n text: \"\",\n row: row\n };\n }\n cell.row = row;\n return cell;\n };\n return Lines;\n}());\nexports.Lines = Lines;\n\n});\n\nace.define(\"ace/layer/gutter\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/lib/event_emitter\",\"ace/layer/lines\",\"ace/config\"], function(require, exports, module){\"use strict\";\nvar dom = require(\"../lib/dom\");\nvar oop = require(\"../lib/oop\");\nvar lang = require(\"../lib/lang\");\nvar EventEmitter = require(\"../lib/event_emitter\").EventEmitter;\nvar Lines = require(\"./lines\").Lines;\nvar nls = require(\"../config\").nls;\nvar Gutter = /** @class */ (function () {\n function Gutter(parentEl) {\n this.element = dom.createElement(\"div\");\n this.element.className = \"ace_layer ace_gutter-layer\";\n parentEl.appendChild(this.element);\n this.setShowFoldWidgets(this.$showFoldWidgets);\n this.gutterWidth = 0;\n this.$annotations = [];\n this.$updateAnnotations = this.$updateAnnotations.bind(this);\n this.$lines = new Lines(this.element);\n this.$lines.$offsetCoefficient = 1;\n }\n Gutter.prototype.setSession = function (session) {\n if (this.session)\n this.session.off(\"change\", this.$updateAnnotations);\n this.session = session;\n if (session)\n session.on(\"change\", this.$updateAnnotations);\n };\n Gutter.prototype.addGutterDecoration = function (row, className) {\n if (window.console)\n console.warn && console.warn(\"deprecated use session.addGutterDecoration\");\n this.session.addGutterDecoration(row, className);\n };\n Gutter.prototype.removeGutterDecoration = function (row, className) {\n if (window.console)\n console.warn && console.warn(\"deprecated use session.removeGutterDecoration\");\n this.session.removeGutterDecoration(row, className);\n };\n Gutter.prototype.setAnnotations = function (annotations) {\n this.$annotations = [];\n for (var i = 0; i < annotations.length; i++) {\n var annotation = annotations[i];\n var row = annotation.row;\n var rowInfo = this.$annotations[row];\n if (!rowInfo)\n rowInfo = this.$annotations[row] = { text: [], type: [] };\n var annoText = annotation.text;\n var annoType = annotation.type;\n annoText = annoText ? lang.escapeHTML(annoText) : annotation.html || \"\";\n if (rowInfo.text.indexOf(annoText) === -1) {\n rowInfo.text.push(annoText);\n rowInfo.type.push(annoType);\n }\n var className = annotation.className;\n if (className)\n rowInfo.className = className;\n else if (annoType == \"error\")\n rowInfo.className = \" ace_error\";\n else if (annoType == \"warning\" && rowInfo.className != \" ace_error\")\n rowInfo.className = \" ace_warning\";\n else if (annoType == \"info\" && (!rowInfo.className))\n rowInfo.className = \" ace_info\";\n }\n };\n Gutter.prototype.$updateAnnotations = function (delta) {\n if (!this.$annotations.length)\n return;\n var firstRow = delta.start.row;\n var len = delta.end.row - firstRow;\n if (len === 0) {\n }\n else if (delta.action == 'remove') {\n this.$annotations.splice(firstRow, len + 1, null);\n }\n else {\n var args = new Array(len + 1);\n args.unshift(firstRow, 1);\n this.$annotations.splice.apply(this.$annotations, args);\n }\n };\n Gutter.prototype.update = function (config) {\n this.config = config;\n var session = this.session;\n var firstRow = config.firstRow;\n var lastRow = Math.min(config.lastRow + config.gutterOffset, // needed to compensate for hor scollbar\n session.getLength() - 1);\n this.oldLastRow = lastRow;\n this.config = config;\n this.$lines.moveContainer(config);\n this.$updateCursorRow();\n var fold = session.getNextFoldLine(firstRow);\n var foldStart = fold ? fold.start.row : Infinity;\n var cell = null;\n var index = -1;\n var row = firstRow;\n while (true) {\n if (row > foldStart) {\n row = fold.end.row + 1;\n fold = session.getNextFoldLine(row, fold);\n foldStart = fold ? fold.start.row : Infinity;\n }\n if (row > lastRow) {\n while (this.$lines.getLength() > index + 1)\n this.$lines.pop();\n break;\n }\n cell = this.$lines.get(++index);\n if (cell) {\n cell.row = row;\n }\n else {\n cell = this.$lines.createCell(row, config, this.session, onCreateCell);\n this.$lines.push(cell);\n }\n this.$renderCell(cell, config, fold, row);\n row++;\n }\n this._signal(\"afterRender\");\n this.$updateGutterWidth(config);\n };\n Gutter.prototype.$updateGutterWidth = function (config) {\n var session = this.session;\n var gutterRenderer = session.gutterRenderer || this.$renderer;\n var firstLineNumber = session.$firstLineNumber;\n var lastLineText = this.$lines.last() ? this.$lines.last().text : \"\";\n if (this.$fixedWidth || session.$useWrapMode)\n lastLineText = session.getLength() + firstLineNumber - 1;\n var gutterWidth = gutterRenderer\n ? gutterRenderer.getWidth(session, lastLineText, config)\n : lastLineText.toString().length * config.characterWidth;\n var padding = this.$padding || this.$computePadding();\n gutterWidth += padding.left + padding.right;\n if (gutterWidth !== this.gutterWidth && !isNaN(gutterWidth)) {\n this.gutterWidth = gutterWidth;\n this.element.parentNode.style.width =\n this.element.style.width = Math.ceil(this.gutterWidth) + \"px\";\n this._signal(\"changeGutterWidth\", gutterWidth);\n }\n };\n Gutter.prototype.$updateCursorRow = function () {\n if (!this.$highlightGutterLine)\n return;\n var position = this.session.selection.getCursor();\n if (this.$cursorRow === position.row)\n return;\n this.$cursorRow = position.row;\n };\n Gutter.prototype.updateLineHighlight = function () {\n if (!this.$highlightGutterLine)\n return;\n var row = this.session.selection.cursor.row;\n this.$cursorRow = row;\n if (this.$cursorCell && this.$cursorCell.row == row)\n return;\n if (this.$cursorCell)\n this.$cursorCell.element.className = this.$cursorCell.element.className.replace(\"ace_gutter-active-line \", \"\");\n var cells = this.$lines.cells;\n this.$cursorCell = null;\n for (var i = 0; i < cells.length; i++) {\n var cell = cells[i];\n if (cell.row >= this.$cursorRow) {\n if (cell.row > this.$cursorRow) {\n var fold = this.session.getFoldLine(this.$cursorRow);\n if (i > 0 && fold && fold.start.row == cells[i - 1].row)\n cell = cells[i - 1];\n else\n break;\n }\n cell.element.className = \"ace_gutter-active-line \" + cell.element.className;\n this.$cursorCell = cell;\n break;\n }\n }\n };\n Gutter.prototype.scrollLines = function (config) {\n var oldConfig = this.config;\n this.config = config;\n this.$updateCursorRow();\n if (this.$lines.pageChanged(oldConfig, config))\n return this.update(config);\n this.$lines.moveContainer(config);\n var lastRow = Math.min(config.lastRow + config.gutterOffset, // needed to compensate for hor scollbar\n this.session.getLength() - 1);\n var oldLastRow = this.oldLastRow;\n this.oldLastRow = lastRow;\n if (!oldConfig || oldLastRow < config.firstRow)\n return this.update(config);\n if (lastRow < oldConfig.firstRow)\n return this.update(config);\n if (oldConfig.firstRow < config.firstRow)\n for (var row = this.session.getFoldedRowCount(oldConfig.firstRow, config.firstRow - 1); row > 0; row--)\n this.$lines.shift();\n if (oldLastRow > lastRow)\n for (var row = this.session.getFoldedRowCount(lastRow + 1, oldLastRow); row > 0; row--)\n this.$lines.pop();\n if (config.firstRow < oldConfig.firstRow) {\n this.$lines.unshift(this.$renderLines(config, config.firstRow, oldConfig.firstRow - 1));\n }\n if (lastRow > oldLastRow) {\n this.$lines.push(this.$renderLines(config, oldLastRow + 1, lastRow));\n }\n this.updateLineHighlight();\n this._signal(\"afterRender\");\n this.$updateGutterWidth(config);\n };\n Gutter.prototype.$renderLines = function (config, firstRow, lastRow) {\n var fragment = [];\n var row = firstRow;\n var foldLine = this.session.getNextFoldLine(row);\n var foldStart = foldLine ? foldLine.start.row : Infinity;\n while (true) {\n if (row > foldStart) {\n row = foldLine.end.row + 1;\n foldLine = this.session.getNextFoldLine(row, foldLine);\n foldStart = foldLine ? foldLine.start.row : Infinity;\n }\n if (row > lastRow)\n break;\n var cell = this.$lines.createCell(row, config, this.session, onCreateCell);\n this.$renderCell(cell, config, foldLine, row);\n fragment.push(cell);\n row++;\n }\n return fragment;\n };\n Gutter.prototype.$renderCell = function (cell, config, fold, row) {\n var element = cell.element;\n var session = this.session;\n var textNode = element.childNodes[0];\n var foldWidget = element.childNodes[1];\n var annotationNode = element.childNodes[2];\n var annotationIconNode = annotationNode.firstChild;\n var firstLineNumber = session.$firstLineNumber;\n var breakpoints = session.$breakpoints;\n var decorations = session.$decorations;\n var gutterRenderer = session.gutterRenderer || this.$renderer;\n var foldWidgets = this.$showFoldWidgets && session.foldWidgets;\n var foldStart = fold ? fold.start.row : Number.MAX_VALUE;\n var lineHeight = config.lineHeight + \"px\";\n var className = this.$useSvgGutterIcons ? \"ace_gutter-cell_svg-icons \" : \"ace_gutter-cell \";\n var iconClassName = this.$useSvgGutterIcons ? \"ace_icon_svg\" : \"ace_icon\";\n var rowText = (gutterRenderer\n ? gutterRenderer.getText(session, row)\n : row + firstLineNumber).toString();\n if (this.$highlightGutterLine) {\n if (row == this.$cursorRow || (fold && row < this.$cursorRow && row >= foldStart && this.$cursorRow <= fold.end.row)) {\n className += \"ace_gutter-active-line \";\n if (this.$cursorCell != cell) {\n if (this.$cursorCell)\n this.$cursorCell.element.className = this.$cursorCell.element.className.replace(\"ace_gutter-active-line \", \"\");\n this.$cursorCell = cell;\n }\n }\n }\n if (breakpoints[row])\n className += breakpoints[row];\n if (decorations[row])\n className += decorations[row];\n if (this.$annotations[row] && row !== foldStart)\n className += this.$annotations[row].className;\n if (foldWidgets) {\n var c = foldWidgets[row];\n if (c == null)\n c = foldWidgets[row] = session.getFoldWidget(row);\n }\n if (c) {\n var foldClass = \"ace_fold-widget ace_\" + c;\n var isClosedFold = c == \"start\" && row == foldStart && row < fold.end.row;\n if (isClosedFold) {\n foldClass += \" ace_closed\";\n var foldAnnotationClass = '';\n var annotationInFold = false;\n for (var i = row + 1; i <= fold.end.row; i++) {\n if (!this.$annotations[i])\n continue;\n if (this.$annotations[i].className === \" ace_error\") {\n annotationInFold = true;\n foldAnnotationClass = \" ace_error_fold\";\n break;\n }\n if (this.$annotations[i].className === \" ace_warning\") {\n annotationInFold = true;\n foldAnnotationClass = \" ace_warning_fold\";\n continue;\n }\n }\n className += foldAnnotationClass;\n }\n else\n foldClass += \" ace_open\";\n if (foldWidget.className != foldClass)\n foldWidget.className = foldClass;\n dom.setStyle(foldWidget.style, \"height\", lineHeight);\n dom.setStyle(foldWidget.style, \"display\", \"inline-block\");\n foldWidget.setAttribute(\"role\", \"button\");\n foldWidget.setAttribute(\"tabindex\", \"-1\");\n var foldRange = session.getFoldWidgetRange(row);\n if (foldRange)\n foldWidget.setAttribute(\"aria-label\", nls(\"Toggle code folding, rows $0 through $1\", [foldRange.start.row + 1, foldRange.end.row + 1]));\n else {\n if (fold)\n foldWidget.setAttribute(\"aria-label\", nls(\"Toggle code folding, rows $0 through $1\", [fold.start.row + 1, fold.end.row + 1]));\n else\n foldWidget.setAttribute(\"aria-label\", nls(\"Toggle code folding, row $0\", [row + 1]));\n }\n if (isClosedFold) {\n foldWidget.setAttribute(\"aria-expanded\", \"false\");\n foldWidget.setAttribute(\"title\", nls(\"Unfold code\"));\n }\n else {\n foldWidget.setAttribute(\"aria-expanded\", \"true\");\n foldWidget.setAttribute(\"title\", nls(\"Fold code\"));\n }\n }\n else {\n if (foldWidget) {\n dom.setStyle(foldWidget.style, \"display\", \"none\");\n foldWidget.setAttribute(\"tabindex\", \"0\");\n foldWidget.removeAttribute(\"role\");\n foldWidget.removeAttribute(\"aria-label\");\n }\n }\n if (annotationInFold && this.$showFoldedAnnotations) {\n annotationNode.className = \"ace_gutter_annotation\";\n annotationIconNode.className = iconClassName;\n annotationIconNode.className += foldAnnotationClass;\n dom.setStyle(annotationIconNode.style, \"height\", lineHeight);\n dom.setStyle(annotationNode.style, \"display\", \"block\");\n dom.setStyle(annotationNode.style, \"height\", lineHeight);\n annotationNode.setAttribute(\"aria-label\", nls(\"Read annotations row $0\", [rowText]));\n annotationNode.setAttribute(\"tabindex\", \"-1\");\n annotationNode.setAttribute(\"role\", \"button\");\n }\n else if (this.$annotations[row]) {\n annotationNode.className = \"ace_gutter_annotation\";\n annotationIconNode.className = iconClassName;\n if (this.$useSvgGutterIcons)\n annotationIconNode.className += this.$annotations[row].className;\n else\n element.classList.add(this.$annotations[row].className.replace(\" \", \"\"));\n dom.setStyle(annotationIconNode.style, \"height\", lineHeight);\n dom.setStyle(annotationNode.style, \"display\", \"block\");\n dom.setStyle(annotationNode.style, \"height\", lineHeight);\n annotationNode.setAttribute(\"aria-label\", nls(\"Read annotations row $0\", [rowText]));\n annotationNode.setAttribute(\"tabindex\", \"-1\");\n annotationNode.setAttribute(\"role\", \"button\");\n }\n else {\n dom.setStyle(annotationNode.style, \"display\", \"none\");\n annotationNode.removeAttribute(\"aria-label\");\n annotationNode.removeAttribute(\"role\");\n annotationNode.setAttribute(\"tabindex\", \"0\");\n }\n if (rowText !== textNode.data) {\n textNode.data = rowText;\n }\n if (element.className != className)\n element.className = className;\n dom.setStyle(cell.element.style, \"height\", this.$lines.computeLineHeight(row, config, session) + \"px\");\n dom.setStyle(cell.element.style, \"top\", this.$lines.computeLineTop(row, config, session) + \"px\");\n cell.text = rowText;\n if (annotationNode.style.display === \"none\" && foldWidget.style.display === \"none\")\n cell.element.setAttribute(\"aria-hidden\", true);\n else\n cell.element.setAttribute(\"aria-hidden\", false);\n return cell;\n };\n Gutter.prototype.setHighlightGutterLine = function (highlightGutterLine) {\n this.$highlightGutterLine = highlightGutterLine;\n };\n Gutter.prototype.setShowLineNumbers = function (show) {\n this.$renderer = !show && {\n getWidth: function () { return 0; },\n getText: function () { return \"\"; }\n };\n };\n Gutter.prototype.getShowLineNumbers = function () {\n return this.$showLineNumbers;\n };\n Gutter.prototype.setShowFoldWidgets = function (show) {\n if (show)\n dom.addCssClass(this.element, \"ace_folding-enabled\");\n else\n dom.removeCssClass(this.element, \"ace_folding-enabled\");\n this.$showFoldWidgets = show;\n this.$padding = null;\n };\n Gutter.prototype.getShowFoldWidgets = function () {\n return this.$showFoldWidgets;\n };\n Gutter.prototype.$computePadding = function () {\n if (!this.element.firstChild)\n return { left: 0, right: 0 };\n var style = dom.computedStyle(this.element.firstChild);\n this.$padding = {};\n this.$padding.left = (parseInt(style.borderLeftWidth) || 0)\n + (parseInt(style.paddingLeft) || 0) + 1;\n this.$padding.right = (parseInt(style.borderRightWidth) || 0)\n + (parseInt(style.paddingRight) || 0);\n return this.$padding;\n };\n Gutter.prototype.getRegion = function (point) {\n var padding = this.$padding || this.$computePadding();\n var rect = this.element.getBoundingClientRect();\n if (point.x < padding.left + rect.left)\n return \"markers\";\n if (this.$showFoldWidgets && point.x > rect.right - padding.right)\n return \"foldWidgets\";\n };\n return Gutter;\n}());\nGutter.prototype.$fixedWidth = false;\nGutter.prototype.$highlightGutterLine = true;\nGutter.prototype.$renderer = \"\";\nGutter.prototype.$showLineNumbers = true;\nGutter.prototype.$showFoldWidgets = true;\noop.implement(Gutter.prototype, EventEmitter);\nfunction onCreateCell(element) {\n var textNode = document.createTextNode('');\n element.appendChild(textNode);\n var foldWidget = dom.createElement(\"span\");\n element.appendChild(foldWidget);\n var annotationNode = dom.createElement(\"span\");\n element.appendChild(annotationNode);\n var annotationIconNode = dom.createElement(\"span\");\n annotationNode.appendChild(annotationIconNode);\n return element;\n}\nexports.Gutter = Gutter;\n\n});\n\nace.define(\"ace/layer/marker\",[\"require\",\"exports\",\"module\",\"ace/range\",\"ace/lib/dom\"], function(require, exports, module){\"use strict\";\nvar Range = require(\"../range\").Range;\nvar dom = require(\"../lib/dom\");\nvar Marker = /** @class */ (function () {\n function Marker(parentEl) {\n this.element = dom.createElement(\"div\");\n this.element.className = \"ace_layer ace_marker-layer\";\n parentEl.appendChild(this.element);\n }\n Marker.prototype.setPadding = function (padding) {\n this.$padding = padding;\n };\n Marker.prototype.setSession = function (session) {\n this.session = session;\n };\n Marker.prototype.setMarkers = function (markers) {\n this.markers = markers;\n };\n Marker.prototype.elt = function (className, css) {\n var x = this.i != -1 && this.element.childNodes[this.i];\n if (!x) {\n x = document.createElement(\"div\");\n this.element.appendChild(x);\n this.i = -1;\n }\n else {\n this.i++;\n }\n x.style.cssText = css;\n x.className = className;\n };\n Marker.prototype.update = function (config) {\n if (!config)\n return;\n this.config = config;\n this.i = 0;\n var html;\n for (var key in this.markers) {\n var marker = this.markers[key];\n if (!marker.range) {\n marker.update(html, this, this.session, config);\n continue;\n }\n var range = marker.range.clipRows(config.firstRow, config.lastRow);\n if (range.isEmpty())\n continue;\n range = range.toScreenRange(this.session);\n if (marker.renderer) {\n var top = this.$getTop(range.start.row, config);\n var left = this.$padding + range.start.column * config.characterWidth;\n marker.renderer(html, range, left, top, config);\n }\n else if (marker.type == \"fullLine\") {\n this.drawFullLineMarker(html, range, marker.clazz, config);\n }\n else if (marker.type == \"screenLine\") {\n this.drawScreenLineMarker(html, range, marker.clazz, config);\n }\n else if (range.isMultiLine()) {\n if (marker.type == \"text\")\n this.drawTextMarker(html, range, marker.clazz, config);\n else\n this.drawMultiLineMarker(html, range, marker.clazz, config);\n }\n else {\n this.drawSingleLineMarker(html, range, marker.clazz + \" ace_start\" + \" ace_br15\", config);\n }\n }\n if (this.i != -1) {\n while (this.i < this.element.childElementCount)\n this.element.removeChild(this.element.lastChild);\n }\n };\n Marker.prototype.$getTop = function (row, layerConfig) {\n return (row - layerConfig.firstRowScreen) * layerConfig.lineHeight;\n };\n Marker.prototype.drawTextMarker = function (stringBuilder, range, clazz, layerConfig, extraStyle) {\n var session = this.session;\n var start = range.start.row;\n var end = range.end.row;\n var row = start;\n var prev = 0;\n var curr = 0;\n var next = session.getScreenLastRowColumn(row);\n var lineRange = new Range(row, range.start.column, row, curr);\n for (; row <= end; row++) {\n lineRange.start.row = lineRange.end.row = row;\n lineRange.start.column = row == start ? range.start.column : session.getRowWrapIndent(row);\n lineRange.end.column = next;\n prev = curr;\n curr = next;\n next = row + 1 < end ? session.getScreenLastRowColumn(row + 1) : row == end ? 0 : range.end.column;\n this.drawSingleLineMarker(stringBuilder, lineRange, clazz + (row == start ? \" ace_start\" : \"\") + \" ace_br\"\n + getBorderClass(row == start || row == start + 1 && range.start.column, prev < curr, curr > next, row == end), layerConfig, row == end ? 0 : 1, extraStyle);\n }\n };\n Marker.prototype.drawMultiLineMarker = function (stringBuilder, range, clazz, config, extraStyle) {\n var padding = this.$padding;\n var height = config.lineHeight;\n var top = this.$getTop(range.start.row, config);\n var left = padding + range.start.column * config.characterWidth;\n extraStyle = extraStyle || \"\";\n if (this.session.$bidiHandler.isBidiRow(range.start.row)) {\n var range1 = range.clone();\n range1.end.row = range1.start.row;\n range1.end.column = this.session.getLine(range1.start.row).length;\n this.drawBidiSingleLineMarker(stringBuilder, range1, clazz + \" ace_br1 ace_start\", config, null, extraStyle);\n }\n else {\n this.elt(clazz + \" ace_br1 ace_start\", \"height:\" + height + \"px;\" + \"right:0;\" + \"top:\" + top + \"px;left:\" + left + \"px;\" + (extraStyle || \"\"));\n }\n if (this.session.$bidiHandler.isBidiRow(range.end.row)) {\n var range1 = range.clone();\n range1.start.row = range1.end.row;\n range1.start.column = 0;\n this.drawBidiSingleLineMarker(stringBuilder, range1, clazz + \" ace_br12\", config, null, extraStyle);\n }\n else {\n top = this.$getTop(range.end.row, config);\n var width = range.end.column * config.characterWidth;\n this.elt(clazz + \" ace_br12\", \"height:\" + height + \"px;\" +\n \"width:\" + width + \"px;\" +\n \"top:\" + top + \"px;\" +\n \"left:\" + padding + \"px;\" + (extraStyle || \"\"));\n }\n height = (range.end.row - range.start.row - 1) * config.lineHeight;\n if (height <= 0)\n return;\n top = this.$getTop(range.start.row + 1, config);\n var radiusClass = (range.start.column ? 1 : 0) | (range.end.column ? 0 : 8);\n this.elt(clazz + (radiusClass ? \" ace_br\" + radiusClass : \"\"), \"height:\" + height + \"px;\" +\n \"right:0;\" +\n \"top:\" + top + \"px;\" +\n \"left:\" + padding + \"px;\" + (extraStyle || \"\"));\n };\n Marker.prototype.drawSingleLineMarker = function (stringBuilder, range, clazz, config, extraLength, extraStyle) {\n if (this.session.$bidiHandler.isBidiRow(range.start.row))\n return this.drawBidiSingleLineMarker(stringBuilder, range, clazz, config, extraLength, extraStyle);\n var height = config.lineHeight;\n var width = (range.end.column + (extraLength || 0) - range.start.column) * config.characterWidth;\n var top = this.$getTop(range.start.row, config);\n var left = this.$padding + range.start.column * config.characterWidth;\n this.elt(clazz, \"height:\" + height + \"px;\" +\n \"width:\" + width + \"px;\" +\n \"top:\" + top + \"px;\" +\n \"left:\" + left + \"px;\" + (extraStyle || \"\"));\n };\n Marker.prototype.drawBidiSingleLineMarker = function (stringBuilder, range, clazz, config, extraLength, extraStyle) {\n var height = config.lineHeight, top = this.$getTop(range.start.row, config), padding = this.$padding;\n var selections = this.session.$bidiHandler.getSelections(range.start.column, range.end.column);\n selections.forEach(function (selection) {\n this.elt(clazz, \"height:\" + height + \"px;\" +\n \"width:\" + (selection.width + (extraLength || 0)) + \"px;\" +\n \"top:\" + top + \"px;\" +\n \"left:\" + (padding + selection.left) + \"px;\" + (extraStyle || \"\"));\n }, this);\n };\n Marker.prototype.drawFullLineMarker = function (stringBuilder, range, clazz, config, extraStyle) {\n var top = this.$getTop(range.start.row, config);\n var height = config.lineHeight;\n if (range.start.row != range.end.row)\n height += this.$getTop(range.end.row, config) - top;\n this.elt(clazz, \"height:\" + height + \"px;\" +\n \"top:\" + top + \"px;\" +\n \"left:0;right:0;\" + (extraStyle || \"\"));\n };\n Marker.prototype.drawScreenLineMarker = function (stringBuilder, range, clazz, config, extraStyle) {\n var top = this.$getTop(range.start.row, config);\n var height = config.lineHeight;\n this.elt(clazz, \"height:\" + height + \"px;\" +\n \"top:\" + top + \"px;\" +\n \"left:0;right:0;\" + (extraStyle || \"\"));\n };\n return Marker;\n}());\nMarker.prototype.$padding = 0;\nfunction getBorderClass(tl, tr, br, bl) {\n return (tl ? 1 : 0) | (tr ? 2 : 0) | (br ? 4 : 0) | (bl ? 8 : 0);\n}\nexports.Marker = Marker;\n\n});\n\nace.define(\"ace/layer/text_util\",[\"require\",\"exports\",\"module\"], function(require, exports, module){// Tokens for which Ace just uses a simple TextNode and does not add any special className.\nvar textTokens = new Set([\"text\", \"rparen\", \"lparen\"]);\nexports.isTextToken = function (tokenType) {\n return textTokens.has(tokenType);\n};\n\n});\n\nace.define(\"ace/layer/text\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/dom\",\"ace/lib/lang\",\"ace/layer/lines\",\"ace/lib/event_emitter\",\"ace/config\",\"ace/layer/text_util\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar dom = require(\"../lib/dom\");\nvar lang = require(\"../lib/lang\");\nvar Lines = require(\"./lines\").Lines;\nvar EventEmitter = require(\"../lib/event_emitter\").EventEmitter;\nvar nls = require(\"../config\").nls;\nvar isTextToken = require(\"./text_util\").isTextToken;\nvar Text = /** @class */ (function () {\n function Text(parentEl) {\n this.dom = dom;\n this.element = this.dom.createElement(\"div\");\n this.element.className = \"ace_layer ace_text-layer\";\n parentEl.appendChild(this.element);\n this.$updateEolChar = this.$updateEolChar.bind(this);\n this.$lines = new Lines(this.element);\n }\n Text.prototype.$updateEolChar = function () {\n var doc = this.session.doc;\n var unixMode = doc.getNewLineCharacter() == \"\\n\" && doc.getNewLineMode() != \"windows\";\n var EOL_CHAR = unixMode ? this.EOL_CHAR_LF : this.EOL_CHAR_CRLF;\n if (this.EOL_CHAR != EOL_CHAR) {\n this.EOL_CHAR = EOL_CHAR;\n return true;\n }\n };\n Text.prototype.setPadding = function (padding) {\n this.$padding = padding;\n this.element.style.margin = \"0 \" + padding + \"px\";\n };\n Text.prototype.getLineHeight = function () {\n return this.$fontMetrics.$characterSize.height || 0;\n };\n Text.prototype.getCharacterWidth = function () {\n return this.$fontMetrics.$characterSize.width || 0;\n };\n Text.prototype.$setFontMetrics = function (measure) {\n this.$fontMetrics = measure;\n this.$fontMetrics.on(\"changeCharacterSize\", function (e) {\n this._signal(\"changeCharacterSize\", e);\n }.bind(this));\n this.$pollSizeChanges();\n };\n Text.prototype.checkForSizeChanges = function () {\n this.$fontMetrics.checkForSizeChanges();\n };\n Text.prototype.$pollSizeChanges = function () {\n return this.$pollSizeChangesTimer = this.$fontMetrics.$pollSizeChanges();\n };\n Text.prototype.setSession = function (session) {\n this.session = session;\n if (session)\n this.$computeTabString();\n };\n Text.prototype.setShowInvisibles = function (showInvisibles) {\n if (this.showInvisibles == showInvisibles)\n return false;\n this.showInvisibles = showInvisibles;\n if (typeof showInvisibles == \"string\") {\n this.showSpaces = /tab/i.test(showInvisibles);\n this.showTabs = /space/i.test(showInvisibles);\n this.showEOL = /eol/i.test(showInvisibles);\n }\n else {\n this.showSpaces = this.showTabs = this.showEOL = showInvisibles;\n }\n this.$computeTabString();\n return true;\n };\n Text.prototype.setDisplayIndentGuides = function (display) {\n if (this.displayIndentGuides == display)\n return false;\n this.displayIndentGuides = display;\n this.$computeTabString();\n return true;\n };\n Text.prototype.setHighlightIndentGuides = function (highlight) {\n if (this.$highlightIndentGuides === highlight)\n return false;\n this.$highlightIndentGuides = highlight;\n return highlight;\n };\n Text.prototype.$computeTabString = function () {\n var tabSize = this.session.getTabSize();\n this.tabSize = tabSize;\n var tabStr = this.$tabStrings = [0];\n for (var i = 1; i < tabSize + 1; i++) {\n if (this.showTabs) {\n var span = this.dom.createElement(\"span\");\n span.className = \"ace_invisible ace_invisible_tab\";\n span.textContent = lang.stringRepeat(this.TAB_CHAR, i);\n tabStr.push(span);\n }\n else {\n tabStr.push(this.dom.createTextNode(lang.stringRepeat(\" \", i), this.element));\n }\n }\n if (this.displayIndentGuides) {\n this.$indentGuideRe = /\\s\\S| \\t|\\t |\\s$/;\n var className = \"ace_indent-guide\";\n var spaceClass = this.showSpaces ? \" ace_invisible ace_invisible_space\" : \"\";\n var spaceContent = this.showSpaces\n ? lang.stringRepeat(this.SPACE_CHAR, this.tabSize)\n : lang.stringRepeat(\" \", this.tabSize);\n var tabClass = this.showTabs ? \" ace_invisible ace_invisible_tab\" : \"\";\n var tabContent = this.showTabs\n ? lang.stringRepeat(this.TAB_CHAR, this.tabSize)\n : spaceContent;\n var span = this.dom.createElement(\"span\");\n span.className = className + spaceClass;\n span.textContent = spaceContent;\n this.$tabStrings[\" \"] = span;\n var span = this.dom.createElement(\"span\");\n span.className = className + tabClass;\n span.textContent = tabContent;\n this.$tabStrings[\"\\t\"] = span;\n }\n };\n Text.prototype.updateLines = function (config, firstRow, lastRow) {\n if (this.config.lastRow != config.lastRow ||\n this.config.firstRow != config.firstRow) {\n return this.update(config);\n }\n this.config = config;\n var first = Math.max(firstRow, config.firstRow);\n var last = Math.min(lastRow, config.lastRow);\n var lineElements = this.element.childNodes;\n var lineElementsIdx = 0;\n for (var row = config.firstRow; row < first; row++) {\n var foldLine = this.session.getFoldLine(row);\n if (foldLine) {\n if (foldLine.containsRow(first)) {\n first = foldLine.start.row;\n break;\n }\n else {\n row = foldLine.end.row;\n }\n }\n lineElementsIdx++;\n }\n var heightChanged = false;\n var row = first;\n var foldLine = this.session.getNextFoldLine(row);\n var foldStart = foldLine ? foldLine.start.row : Infinity;\n while (true) {\n if (row > foldStart) {\n row = foldLine.end.row + 1;\n foldLine = this.session.getNextFoldLine(row, foldLine);\n foldStart = foldLine ? foldLine.start.row : Infinity;\n }\n if (row > last)\n break;\n var lineElement = lineElements[lineElementsIdx++];\n if (lineElement) {\n this.dom.removeChildren(lineElement);\n this.$renderLine(lineElement, row, row == foldStart ? foldLine : false);\n if (heightChanged)\n lineElement.style.top = this.$lines.computeLineTop(row, config, this.session) + \"px\";\n var height = (config.lineHeight * this.session.getRowLength(row)) + \"px\";\n if (lineElement.style.height != height) {\n heightChanged = true;\n lineElement.style.height = height;\n }\n }\n row++;\n }\n if (heightChanged) {\n while (lineElementsIdx < this.$lines.cells.length) {\n var cell = this.$lines.cells[lineElementsIdx++];\n cell.element.style.top = this.$lines.computeLineTop(cell.row, config, this.session) + \"px\";\n }\n }\n };\n Text.prototype.scrollLines = function (config) {\n var oldConfig = this.config;\n this.config = config;\n if (this.$lines.pageChanged(oldConfig, config))\n return this.update(config);\n this.$lines.moveContainer(config);\n var lastRow = config.lastRow;\n var oldLastRow = oldConfig ? oldConfig.lastRow : -1;\n if (!oldConfig || oldLastRow < config.firstRow)\n return this.update(config);\n if (lastRow < oldConfig.firstRow)\n return this.update(config);\n if (!oldConfig || oldConfig.lastRow < config.firstRow)\n return this.update(config);\n if (config.lastRow < oldConfig.firstRow)\n return this.update(config);\n if (oldConfig.firstRow < config.firstRow)\n for (var row = this.session.getFoldedRowCount(oldConfig.firstRow, config.firstRow - 1); row > 0; row--)\n this.$lines.shift();\n if (oldConfig.lastRow > config.lastRow)\n for (var row = this.session.getFoldedRowCount(config.lastRow + 1, oldConfig.lastRow); row > 0; row--)\n this.$lines.pop();\n if (config.firstRow < oldConfig.firstRow) {\n this.$lines.unshift(this.$renderLinesFragment(config, config.firstRow, oldConfig.firstRow - 1));\n }\n if (config.lastRow > oldConfig.lastRow) {\n this.$lines.push(this.$renderLinesFragment(config, oldConfig.lastRow + 1, config.lastRow));\n }\n this.$highlightIndentGuide();\n };\n Text.prototype.$renderLinesFragment = function (config, firstRow, lastRow) {\n var fragment = [];\n var row = firstRow;\n var foldLine = this.session.getNextFoldLine(row);\n var foldStart = foldLine ? foldLine.start.row : Infinity;\n while (true) {\n if (row > foldStart) {\n row = foldLine.end.row + 1;\n foldLine = this.session.getNextFoldLine(row, foldLine);\n foldStart = foldLine ? foldLine.start.row : Infinity;\n }\n if (row > lastRow)\n break;\n var line = this.$lines.createCell(row, config, this.session);\n var lineEl = line.element;\n this.dom.removeChildren(lineEl);\n dom.setStyle(lineEl.style, \"height\", this.$lines.computeLineHeight(row, config, this.session) + \"px\");\n dom.setStyle(lineEl.style, \"top\", this.$lines.computeLineTop(row, config, this.session) + \"px\");\n this.$renderLine(lineEl, row, row == foldStart ? foldLine : false);\n if (this.$useLineGroups()) {\n lineEl.className = \"ace_line_group\";\n }\n else {\n lineEl.className = \"ace_line\";\n }\n fragment.push(line);\n row++;\n }\n return fragment;\n };\n Text.prototype.update = function (config) {\n this.$lines.moveContainer(config);\n this.config = config;\n var firstRow = config.firstRow;\n var lastRow = config.lastRow;\n var lines = this.$lines;\n while (lines.getLength())\n lines.pop();\n lines.push(this.$renderLinesFragment(config, firstRow, lastRow));\n };\n Text.prototype.$renderToken = function (parent, screenColumn, token, value) {\n var self = this;\n var re = /(\\t)|( +)|([\\x00-\\x1f\\x80-\\xa0\\xad\\u1680\\u180E\\u2000-\\u200f\\u2028\\u2029\\u202F\\u205F\\uFEFF\\uFFF9-\\uFFFC\\u2066\\u2067\\u2068\\u202A\\u202B\\u202D\\u202E\\u202C\\u2069]+)|(\\u3000)|([\\u1100-\\u115F\\u11A3-\\u11A7\\u11FA-\\u11FF\\u2329-\\u232A\\u2E80-\\u2E99\\u2E9B-\\u2EF3\\u2F00-\\u2FD5\\u2FF0-\\u2FFB\\u3001-\\u303E\\u3041-\\u3096\\u3099-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u3190-\\u31BA\\u31C0-\\u31E3\\u31F0-\\u321E\\u3220-\\u3247\\u3250-\\u32FE\\u3300-\\u4DBF\\u4E00-\\uA48C\\uA490-\\uA4C6\\uA960-\\uA97C\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFAFF\\uFE10-\\uFE19\\uFE30-\\uFE52\\uFE54-\\uFE66\\uFE68-\\uFE6B\\uFF01-\\uFF60\\uFFE0-\\uFFE6]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF])/g;\n var valueFragment = this.dom.createFragment(this.element);\n var m;\n var i = 0;\n while (m = re.exec(value)) {\n var tab = m[1];\n var simpleSpace = m[2];\n var controlCharacter = m[3];\n var cjkSpace = m[4];\n var cjk = m[5];\n if (!self.showSpaces && simpleSpace)\n continue;\n var before = i != m.index ? value.slice(i, m.index) : \"\";\n i = m.index + m[0].length;\n if (before) {\n valueFragment.appendChild(this.dom.createTextNode(before, this.element));\n }\n if (tab) {\n var tabSize = self.session.getScreenTabSize(screenColumn + m.index);\n valueFragment.appendChild(self.$tabStrings[tabSize].cloneNode(true));\n screenColumn += tabSize - 1;\n }\n else if (simpleSpace) {\n if (self.showSpaces) {\n var span = this.dom.createElement(\"span\");\n span.className = \"ace_invisible ace_invisible_space\";\n span.textContent = lang.stringRepeat(self.SPACE_CHAR, simpleSpace.length);\n valueFragment.appendChild(span);\n }\n else {\n valueFragment.appendChild(this.dom.createTextNode(simpleSpace, this.element));\n }\n }\n else if (controlCharacter) {\n var span = this.dom.createElement(\"span\");\n span.className = \"ace_invisible ace_invisible_space ace_invalid\";\n span.textContent = lang.stringRepeat(self.SPACE_CHAR, controlCharacter.length);\n valueFragment.appendChild(span);\n }\n else if (cjkSpace) {\n screenColumn += 1;\n var span = this.dom.createElement(\"span\");\n span.style.width = (self.config.characterWidth * 2) + \"px\";\n span.className = self.showSpaces ? \"ace_cjk ace_invisible ace_invisible_space\" : \"ace_cjk\";\n span.textContent = self.showSpaces ? self.SPACE_CHAR : cjkSpace;\n valueFragment.appendChild(span);\n }\n else if (cjk) {\n screenColumn += 1;\n var span = this.dom.createElement(\"span\");\n span.style.width = (self.config.characterWidth * 2) + \"px\";\n span.className = \"ace_cjk\";\n span.textContent = cjk;\n valueFragment.appendChild(span);\n }\n }\n valueFragment.appendChild(this.dom.createTextNode(i ? value.slice(i) : value, this.element));\n if (!isTextToken(token.type)) {\n var classes = \"ace_\" + token.type.replace(/\\./g, \" ace_\");\n var span = this.dom.createElement(\"span\");\n if (token.type == \"fold\") {\n span.style.width = (token.value.length * this.config.characterWidth) + \"px\";\n span.setAttribute(\"title\", nls(\"Unfold code\"));\n }\n span.className = classes;\n span.appendChild(valueFragment);\n parent.appendChild(span);\n }\n else {\n parent.appendChild(valueFragment);\n }\n return screenColumn + value.length;\n };\n Text.prototype.renderIndentGuide = function (parent, value, max) {\n var cols = value.search(this.$indentGuideRe);\n if (cols <= 0 || cols >= max)\n return value;\n if (value[0] == \" \") {\n cols -= cols % this.tabSize;\n var count = cols / this.tabSize;\n for (var i = 0; i < count; i++) {\n parent.appendChild(this.$tabStrings[\" \"].cloneNode(true));\n }\n this.$highlightIndentGuide();\n return value.substr(cols);\n }\n else if (value[0] == \"\\t\") {\n for (var i = 0; i < cols; i++) {\n parent.appendChild(this.$tabStrings[\"\\t\"].cloneNode(true));\n }\n this.$highlightIndentGuide();\n return value.substr(cols);\n }\n this.$highlightIndentGuide();\n return value;\n };\n Text.prototype.$highlightIndentGuide = function () {\n if (!this.$highlightIndentGuides || !this.displayIndentGuides)\n return;\n this.$highlightIndentGuideMarker = {\n indentLevel: undefined,\n start: undefined,\n end: undefined,\n dir: undefined\n };\n var lines = this.session.doc.$lines;\n if (!lines)\n return;\n var cursor = this.session.selection.getCursor();\n var initialIndent = /^\\s*/.exec(this.session.doc.getLine(cursor.row))[0].length;\n var elementIndentLevel = Math.floor(initialIndent / this.tabSize);\n this.$highlightIndentGuideMarker = {\n indentLevel: elementIndentLevel,\n start: cursor.row\n };\n var bracketHighlight = this.session.$bracketHighlight;\n if (bracketHighlight) {\n var ranges = this.session.$bracketHighlight.ranges;\n for (var i = 0; i < ranges.length; i++) {\n if (cursor.row !== ranges[i].start.row) {\n this.$highlightIndentGuideMarker.end = ranges[i].start.row;\n if (cursor.row > ranges[i].start.row) {\n this.$highlightIndentGuideMarker.dir = -1;\n }\n else {\n this.$highlightIndentGuideMarker.dir = 1;\n }\n break;\n }\n }\n }\n if (!this.$highlightIndentGuideMarker.end) {\n if (lines[cursor.row] !== '' && cursor.column === lines[cursor.row].length) {\n this.$highlightIndentGuideMarker.dir = 1;\n for (var i = cursor.row + 1; i < lines.length; i++) {\n var line = lines[i];\n var currentIndent = /^\\s*/.exec(line)[0].length;\n if (line !== '') {\n this.$highlightIndentGuideMarker.end = i;\n if (currentIndent <= initialIndent)\n break;\n }\n }\n }\n }\n this.$renderHighlightIndentGuide();\n };\n Text.prototype.$clearActiveIndentGuide = function () {\n var cells = this.$lines.cells;\n for (var i = 0; i < cells.length; i++) {\n var cell = cells[i];\n var childNodes = cell.element.childNodes;\n if (childNodes.length > 0) {\n for (var j = 0; j < childNodes.length; j++) {\n if (childNodes[j].classList && childNodes[j].classList.contains(\"ace_indent-guide-active\")) {\n childNodes[j].classList.remove(\"ace_indent-guide-active\");\n break;\n }\n }\n }\n }\n };\n Text.prototype.$setIndentGuideActive = function (cell, indentLevel) {\n var line = this.session.doc.getLine(cell.row);\n if (line !== \"\") {\n var childNodes = cell.element.childNodes;\n if (childNodes) {\n var node = childNodes[indentLevel - 1];\n if (node && node.classList && node.classList.contains(\"ace_indent-guide\"))\n node.classList.add(\"ace_indent-guide-active\");\n }\n }\n };\n Text.prototype.$renderHighlightIndentGuide = function () {\n if (!this.$lines)\n return;\n var cells = this.$lines.cells;\n this.$clearActiveIndentGuide();\n var indentLevel = this.$highlightIndentGuideMarker.indentLevel;\n if (indentLevel !== 0) {\n if (this.$highlightIndentGuideMarker.dir === 1) {\n for (var i = 0; i < cells.length; i++) {\n var cell = cells[i];\n if (this.$highlightIndentGuideMarker.end && cell.row >= this.$highlightIndentGuideMarker.start\n + 1) {\n if (cell.row >= this.$highlightIndentGuideMarker.end)\n break;\n this.$setIndentGuideActive(cell, indentLevel);\n }\n }\n }\n else {\n for (var i = cells.length - 1; i >= 0; i--) {\n var cell = cells[i];\n if (this.$highlightIndentGuideMarker.end && cell.row < this.$highlightIndentGuideMarker.start) {\n if (cell.row <= this.$highlightIndentGuideMarker.end)\n break;\n this.$setIndentGuideActive(cell, indentLevel);\n }\n }\n }\n }\n };\n Text.prototype.$createLineElement = function (parent) {\n var lineEl = this.dom.createElement(\"div\");\n lineEl.className = \"ace_line\";\n lineEl.style.height = this.config.lineHeight + \"px\";\n return lineEl;\n };\n Text.prototype.$renderWrappedLine = function (parent, tokens, splits) {\n var chars = 0;\n var split = 0;\n var splitChars = splits[0];\n var screenColumn = 0;\n var lineEl = this.$createLineElement();\n parent.appendChild(lineEl);\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n var value = token.value;\n if (i == 0 && this.displayIndentGuides) {\n chars = value.length;\n value = this.renderIndentGuide(lineEl, value, splitChars);\n if (!value)\n continue;\n chars -= value.length;\n }\n if (chars + value.length < splitChars) {\n screenColumn = this.$renderToken(lineEl, screenColumn, token, value);\n chars += value.length;\n }\n else {\n while (chars + value.length >= splitChars) {\n screenColumn = this.$renderToken(lineEl, screenColumn, token, value.substring(0, splitChars - chars));\n value = value.substring(splitChars - chars);\n chars = splitChars;\n lineEl = this.$createLineElement();\n parent.appendChild(lineEl);\n lineEl.appendChild(this.dom.createTextNode(lang.stringRepeat(\"\\xa0\", splits.indent), this.element));\n split++;\n screenColumn = 0;\n splitChars = splits[split] || Number.MAX_VALUE;\n }\n if (value.length != 0) {\n chars += value.length;\n screenColumn = this.$renderToken(lineEl, screenColumn, token, value);\n }\n }\n }\n if (splits[splits.length - 1] > this.MAX_LINE_LENGTH)\n this.$renderOverflowMessage(lineEl, screenColumn, null, \"\", true);\n };\n Text.prototype.$renderSimpleLine = function (parent, tokens) {\n var screenColumn = 0;\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n var value = token.value;\n if (i == 0 && this.displayIndentGuides) {\n value = this.renderIndentGuide(parent, value);\n if (!value)\n continue;\n }\n if (screenColumn + value.length > this.MAX_LINE_LENGTH)\n return this.$renderOverflowMessage(parent, screenColumn, token, value);\n screenColumn = this.$renderToken(parent, screenColumn, token, value);\n }\n };\n Text.prototype.$renderOverflowMessage = function (parent, screenColumn, token, value, hide) {\n token && this.$renderToken(parent, screenColumn, token, value.slice(0, this.MAX_LINE_LENGTH - screenColumn));\n var overflowEl = this.dom.createElement(\"span\");\n overflowEl.className = \"ace_inline_button ace_keyword ace_toggle_wrap\";\n overflowEl.textContent = hide ? \"\" : \"\";\n parent.appendChild(overflowEl);\n };\n Text.prototype.$renderLine = function (parent, row, foldLine) {\n if (!foldLine && foldLine != false)\n foldLine = this.session.getFoldLine(row);\n if (foldLine)\n var tokens = this.$getFoldLineTokens(row, foldLine);\n else\n var tokens = this.session.getTokens(row);\n var lastLineEl = parent;\n if (tokens.length) {\n var splits = this.session.getRowSplitData(row);\n if (splits && splits.length) {\n this.$renderWrappedLine(parent, tokens, splits);\n var lastLineEl = parent.lastChild;\n }\n else {\n var lastLineEl = parent;\n if (this.$useLineGroups()) {\n lastLineEl = this.$createLineElement();\n parent.appendChild(lastLineEl);\n }\n this.$renderSimpleLine(lastLineEl, tokens);\n }\n }\n else if (this.$useLineGroups()) {\n lastLineEl = this.$createLineElement();\n parent.appendChild(lastLineEl);\n }\n if (this.showEOL && lastLineEl) {\n if (foldLine)\n row = foldLine.end.row;\n var invisibleEl = this.dom.createElement(\"span\");\n invisibleEl.className = \"ace_invisible ace_invisible_eol\";\n invisibleEl.textContent = row == this.session.getLength() - 1 ? this.EOF_CHAR : this.EOL_CHAR;\n lastLineEl.appendChild(invisibleEl);\n }\n };\n Text.prototype.$getFoldLineTokens = function (row, foldLine) {\n var session = this.session;\n var renderTokens = [];\n function addTokens(tokens, from, to) {\n var idx = 0, col = 0;\n while ((col + tokens[idx].value.length) < from) {\n col += tokens[idx].value.length;\n idx++;\n if (idx == tokens.length)\n return;\n }\n if (col != from) {\n var value = tokens[idx].value.substring(from - col);\n if (value.length > (to - from))\n value = value.substring(0, to - from);\n renderTokens.push({\n type: tokens[idx].type,\n value: value\n });\n col = from + value.length;\n idx += 1;\n }\n while (col < to && idx < tokens.length) {\n var value = tokens[idx].value;\n if (value.length + col > to) {\n renderTokens.push({\n type: tokens[idx].type,\n value: value.substring(0, to - col)\n });\n }\n else\n renderTokens.push(tokens[idx]);\n col += value.length;\n idx += 1;\n }\n }\n var tokens = session.getTokens(row);\n foldLine.walk(function (placeholder, row, column, lastColumn, isNewRow) {\n if (placeholder != null) {\n renderTokens.push({\n type: \"fold\",\n value: placeholder\n });\n }\n else {\n if (isNewRow)\n tokens = session.getTokens(row);\n if (tokens.length)\n addTokens(tokens, lastColumn, column);\n }\n }, foldLine.end.row, this.session.getLine(foldLine.end.row).length);\n return renderTokens;\n };\n Text.prototype.$useLineGroups = function () {\n return this.session.getUseWrapMode();\n };\n return Text;\n}());\nText.prototype.EOF_CHAR = \"\\xB6\";\nText.prototype.EOL_CHAR_LF = \"\\xAC\";\nText.prototype.EOL_CHAR_CRLF = \"\\xa4\";\nText.prototype.EOL_CHAR = Text.prototype.EOL_CHAR_LF;\nText.prototype.TAB_CHAR = \"\\u2014\"; //\"\\u21E5\";\nText.prototype.SPACE_CHAR = \"\\xB7\";\nText.prototype.$padding = 0;\nText.prototype.MAX_LINE_LENGTH = 10000;\nText.prototype.showInvisibles = false;\nText.prototype.showSpaces = false;\nText.prototype.showTabs = false;\nText.prototype.showEOL = false;\nText.prototype.displayIndentGuides = true;\nText.prototype.$highlightIndentGuides = true;\nText.prototype.$tabStrings = [];\nText.prototype.destroy = {};\nText.prototype.onChangeTabSize = Text.prototype.$computeTabString;\noop.implement(Text.prototype, EventEmitter);\nexports.Text = Text;\n\n});\n\nace.define(\"ace/layer/cursor\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"], function(require, exports, module){\"use strict\";\nvar dom = require(\"../lib/dom\");\nvar Cursor = /** @class */ (function () {\n function Cursor(parentEl) {\n this.element = dom.createElement(\"div\");\n this.element.className = \"ace_layer ace_cursor-layer\";\n parentEl.appendChild(this.element);\n this.isVisible = false;\n this.isBlinking = true;\n this.blinkInterval = 1000;\n this.smoothBlinking = false;\n this.cursors = [];\n this.cursor = this.addCursor();\n dom.addCssClass(this.element, \"ace_hidden-cursors\");\n this.$updateCursors = this.$updateOpacity.bind(this);\n }\n Cursor.prototype.$updateOpacity = function (val) {\n var cursors = this.cursors;\n for (var i = cursors.length; i--;)\n dom.setStyle(cursors[i].style, \"opacity\", val ? \"\" : \"0\");\n };\n Cursor.prototype.$startCssAnimation = function () {\n var cursors = this.cursors;\n for (var i = cursors.length; i--;)\n cursors[i].style.animationDuration = this.blinkInterval + \"ms\";\n this.$isAnimating = true;\n setTimeout(function () {\n if (this.$isAnimating) {\n dom.addCssClass(this.element, \"ace_animate-blinking\");\n }\n }.bind(this));\n };\n Cursor.prototype.$stopCssAnimation = function () {\n this.$isAnimating = false;\n dom.removeCssClass(this.element, \"ace_animate-blinking\");\n };\n Cursor.prototype.setPadding = function (padding) {\n this.$padding = padding;\n };\n Cursor.prototype.setSession = function (session) {\n this.session = session;\n };\n Cursor.prototype.setBlinking = function (blinking) {\n if (blinking != this.isBlinking) {\n this.isBlinking = blinking;\n this.restartTimer();\n }\n };\n Cursor.prototype.setBlinkInterval = function (blinkInterval) {\n if (blinkInterval != this.blinkInterval) {\n this.blinkInterval = blinkInterval;\n this.restartTimer();\n }\n };\n Cursor.prototype.setSmoothBlinking = function (smoothBlinking) {\n if (smoothBlinking != this.smoothBlinking) {\n this.smoothBlinking = smoothBlinking;\n dom.setCssClass(this.element, \"ace_smooth-blinking\", smoothBlinking);\n this.$updateCursors(true);\n this.restartTimer();\n }\n };\n Cursor.prototype.addCursor = function () {\n var el = dom.createElement(\"div\");\n el.className = \"ace_cursor\";\n this.element.appendChild(el);\n this.cursors.push(el);\n return el;\n };\n Cursor.prototype.removeCursor = function () {\n if (this.cursors.length > 1) {\n var el = this.cursors.pop();\n el.parentNode.removeChild(el);\n return el;\n }\n };\n Cursor.prototype.hideCursor = function () {\n this.isVisible = false;\n dom.addCssClass(this.element, \"ace_hidden-cursors\");\n this.restartTimer();\n };\n Cursor.prototype.showCursor = function () {\n this.isVisible = true;\n dom.removeCssClass(this.element, \"ace_hidden-cursors\");\n this.restartTimer();\n };\n Cursor.prototype.restartTimer = function () {\n var update = this.$updateCursors;\n clearInterval(this.intervalId);\n clearTimeout(this.timeoutId);\n this.$stopCssAnimation();\n if (this.smoothBlinking) {\n this.$isSmoothBlinking = false;\n dom.removeCssClass(this.element, \"ace_smooth-blinking\");\n }\n update(true);\n if (!this.isBlinking || !this.blinkInterval || !this.isVisible) {\n this.$stopCssAnimation();\n return;\n }\n if (this.smoothBlinking) {\n this.$isSmoothBlinking = true;\n setTimeout(function () {\n if (this.$isSmoothBlinking) {\n dom.addCssClass(this.element, \"ace_smooth-blinking\");\n }\n }.bind(this));\n }\n if (dom.HAS_CSS_ANIMATION) {\n this.$startCssAnimation();\n }\n else {\n var blink = function () {\n this.timeoutId = setTimeout(function () {\n update(false);\n }, 0.6 * this.blinkInterval);\n }.bind(this);\n this.intervalId = setInterval(function () {\n update(true);\n blink();\n }, this.blinkInterval);\n blink();\n }\n };\n Cursor.prototype.getPixelPosition = function (position, onScreen) {\n if (!this.config || !this.session)\n return { left: 0, top: 0 };\n if (!position)\n position = this.session.selection.getCursor();\n var pos = this.session.documentToScreenPosition(position);\n var cursorLeft = this.$padding + (this.session.$bidiHandler.isBidiRow(pos.row, position.row)\n ? this.session.$bidiHandler.getPosLeft(pos.column)\n : pos.column * this.config.characterWidth);\n var cursorTop = (pos.row - (onScreen ? this.config.firstRowScreen : 0)) *\n this.config.lineHeight;\n return { left: cursorLeft, top: cursorTop };\n };\n Cursor.prototype.isCursorInView = function (pixelPos, config) {\n return pixelPos.top >= 0 && pixelPos.top < config.maxHeight;\n };\n Cursor.prototype.update = function (config) {\n this.config = config;\n var selections = this.session.$selectionMarkers;\n var i = 0, cursorIndex = 0;\n if (selections === undefined || selections.length === 0) {\n selections = [{ cursor: null }];\n }\n for (var i = 0, n = selections.length; i < n; i++) {\n var pixelPos = this.getPixelPosition(selections[i].cursor, true);\n if ((pixelPos.top > config.height + config.offset ||\n pixelPos.top < 0) && i > 1) {\n continue;\n }\n var element = this.cursors[cursorIndex++] || this.addCursor();\n var style = element.style;\n if (!this.drawCursor) {\n if (!this.isCursorInView(pixelPos, config)) {\n dom.setStyle(style, \"display\", \"none\");\n }\n else {\n dom.setStyle(style, \"display\", \"block\");\n dom.translate(element, pixelPos.left, pixelPos.top);\n dom.setStyle(style, \"width\", Math.round(config.characterWidth) + \"px\");\n dom.setStyle(style, \"height\", config.lineHeight + \"px\");\n }\n }\n else {\n this.drawCursor(element, pixelPos, config, selections[i], this.session);\n }\n }\n while (this.cursors.length > cursorIndex)\n this.removeCursor();\n var overwrite = this.session.getOverwrite();\n this.$setOverwrite(overwrite);\n this.$pixelPos = pixelPos;\n this.restartTimer();\n };\n Cursor.prototype.$setOverwrite = function (overwrite) {\n if (overwrite != this.overwrite) {\n this.overwrite = overwrite;\n if (overwrite)\n dom.addCssClass(this.element, \"ace_overwrite-cursors\");\n else\n dom.removeCssClass(this.element, \"ace_overwrite-cursors\");\n }\n };\n Cursor.prototype.destroy = function () {\n clearInterval(this.intervalId);\n clearTimeout(this.timeoutId);\n };\n return Cursor;\n}());\nCursor.prototype.$padding = 0;\nCursor.prototype.drawCursor = null;\nexports.Cursor = Cursor;\n\n});\n\nace.define(\"ace/scrollbar\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/dom\",\"ace/lib/event\",\"ace/lib/event_emitter\"], function(require, exports, module){\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar oop = require(\"./lib/oop\");\nvar dom = require(\"./lib/dom\");\nvar event = require(\"./lib/event\");\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar MAX_SCROLL_H = 0x8000;\nvar Scrollbar = /** @class */ (function () {\n function Scrollbar(parent, classSuffix) {\n this.element = dom.createElement(\"div\");\n this.element.className = \"ace_scrollbar ace_scrollbar\" + classSuffix;\n this.inner = dom.createElement(\"div\");\n this.inner.className = \"ace_scrollbar-inner\";\n this.inner.textContent = \"\\xa0\";\n this.element.appendChild(this.inner);\n parent.appendChild(this.element);\n this.setVisible(false);\n this.skipEvent = false;\n event.addListener(this.element, \"scroll\", this.onScroll.bind(this));\n event.addListener(this.element, \"mousedown\", event.preventDefault);\n }\n Scrollbar.prototype.setVisible = function (isVisible) {\n this.element.style.display = isVisible ? \"\" : \"none\";\n this.isVisible = isVisible;\n this.coeff = 1;\n };\n return Scrollbar;\n}());\noop.implement(Scrollbar.prototype, EventEmitter);\nvar VScrollBar = /** @class */ (function (_super) {\n __extends(VScrollBar, _super);\n function VScrollBar(parent, renderer) {\n var _this = _super.call(this, parent, '-v') || this;\n _this.scrollTop = 0;\n _this.scrollHeight = 0;\n renderer.$scrollbarWidth =\n _this.width = dom.scrollbarWidth(parent.ownerDocument);\n _this.inner.style.width =\n _this.element.style.width = (_this.width || 15) + 5 + \"px\";\n _this.$minWidth = 0;\n return _this;\n }\n VScrollBar.prototype.onScroll = function () {\n if (!this.skipEvent) {\n this.scrollTop = this.element.scrollTop;\n if (this.coeff != 1) {\n var h = this.element.clientHeight / this.scrollHeight;\n this.scrollTop = this.scrollTop * (1 - h) / (this.coeff - h);\n }\n this._emit(\"scroll\", { data: this.scrollTop });\n }\n this.skipEvent = false;\n };\n VScrollBar.prototype.getWidth = function () {\n return Math.max(this.isVisible ? this.width : 0, this.$minWidth || 0);\n };\n VScrollBar.prototype.setHeight = function (height) {\n this.element.style.height = height + \"px\";\n };\n VScrollBar.prototype.setScrollHeight = function (height) {\n this.scrollHeight = height;\n if (height > MAX_SCROLL_H) {\n this.coeff = MAX_SCROLL_H / height;\n height = MAX_SCROLL_H;\n }\n else if (this.coeff != 1) {\n this.coeff = 1;\n }\n this.inner.style.height = height + \"px\";\n };\n VScrollBar.prototype.setScrollTop = function (scrollTop) {\n if (this.scrollTop != scrollTop) {\n this.skipEvent = true;\n this.scrollTop = scrollTop;\n this.element.scrollTop = scrollTop * this.coeff;\n }\n };\n return VScrollBar;\n}(Scrollbar));\nVScrollBar.prototype.setInnerHeight = VScrollBar.prototype.setScrollHeight;\nvar HScrollBar = /** @class */ (function (_super) {\n __extends(HScrollBar, _super);\n function HScrollBar(parent, renderer) {\n var _this = _super.call(this, parent, '-h') || this;\n _this.scrollLeft = 0;\n _this.height = renderer.$scrollbarWidth;\n _this.inner.style.height =\n _this.element.style.height = (_this.height || 15) + 5 + \"px\";\n return _this;\n }\n HScrollBar.prototype.onScroll = function () {\n if (!this.skipEvent) {\n this.scrollLeft = this.element.scrollLeft;\n this._emit(\"scroll\", { data: this.scrollLeft });\n }\n this.skipEvent = false;\n };\n HScrollBar.prototype.getHeight = function () {\n return this.isVisible ? this.height : 0;\n };\n HScrollBar.prototype.setWidth = function (width) {\n this.element.style.width = width + \"px\";\n };\n HScrollBar.prototype.setInnerWidth = function (width) {\n this.inner.style.width = width + \"px\";\n };\n HScrollBar.prototype.setScrollWidth = function (width) {\n this.inner.style.width = width + \"px\";\n };\n HScrollBar.prototype.setScrollLeft = function (scrollLeft) {\n if (this.scrollLeft != scrollLeft) {\n this.skipEvent = true;\n this.scrollLeft = this.element.scrollLeft = scrollLeft;\n }\n };\n return HScrollBar;\n}(Scrollbar));\nexports.ScrollBar = VScrollBar; // backward compatibility\nexports.ScrollBarV = VScrollBar; // backward compatibility\nexports.ScrollBarH = HScrollBar; // backward compatibility\nexports.VScrollBar = VScrollBar;\nexports.HScrollBar = HScrollBar;\n\n});\n\nace.define(\"ace/scrollbar_custom\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/dom\",\"ace/lib/event\",\"ace/lib/event_emitter\"], function(require, exports, module){\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar oop = require(\"./lib/oop\");\nvar dom = require(\"./lib/dom\");\nvar event = require(\"./lib/event\");\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\ndom.importCssString(\".ace_editor>.ace_sb-v div, .ace_editor>.ace_sb-h div{\\n position: absolute;\\n background: rgba(128, 128, 128, 0.6);\\n -moz-box-sizing: border-box;\\n box-sizing: border-box;\\n border: 1px solid #bbb;\\n border-radius: 2px;\\n z-index: 8;\\n}\\n.ace_editor>.ace_sb-v, .ace_editor>.ace_sb-h {\\n position: absolute;\\n z-index: 6;\\n background: none;\\n overflow: hidden!important;\\n}\\n.ace_editor>.ace_sb-v {\\n z-index: 6;\\n right: 0;\\n top: 0;\\n width: 12px;\\n}\\n.ace_editor>.ace_sb-v div {\\n z-index: 8;\\n right: 0;\\n width: 100%;\\n}\\n.ace_editor>.ace_sb-h {\\n bottom: 0;\\n left: 0;\\n height: 12px;\\n}\\n.ace_editor>.ace_sb-h div {\\n bottom: 0;\\n height: 100%;\\n}\\n.ace_editor>.ace_sb_grabbed {\\n z-index: 8;\\n background: #000;\\n}\", \"ace_scrollbar.css\", false);\nvar ScrollBar = /** @class */ (function () {\n function ScrollBar(parent, classSuffix) {\n this.element = dom.createElement(\"div\");\n this.element.className = \"ace_sb\" + classSuffix;\n this.inner = dom.createElement(\"div\");\n this.inner.className = \"\";\n this.element.appendChild(this.inner);\n this.VScrollWidth = 12;\n this.HScrollHeight = 12;\n parent.appendChild(this.element);\n this.setVisible(false);\n this.skipEvent = false;\n event.addMultiMouseDownListener(this.element, [500, 300, 300], this, \"onMouseDown\");\n }\n ScrollBar.prototype.setVisible = function (isVisible) {\n this.element.style.display = isVisible ? \"\" : \"none\";\n this.isVisible = isVisible;\n this.coeff = 1;\n };\n return ScrollBar;\n}());\noop.implement(ScrollBar.prototype, EventEmitter);\nvar VScrollBar = /** @class */ (function (_super) {\n __extends(VScrollBar, _super);\n function VScrollBar(parent, renderer) {\n var _this = _super.call(this, parent, '-v') || this;\n _this.scrollTop = 0;\n _this.scrollHeight = 0;\n _this.parent = parent;\n _this.width = _this.VScrollWidth;\n _this.renderer = renderer;\n _this.inner.style.width = _this.element.style.width = (_this.width || 15) + \"px\";\n _this.$minWidth = 0;\n return _this;\n }\n VScrollBar.prototype.onMouseDown = function (eType, e) {\n if (eType !== \"mousedown\")\n return;\n if (event.getButton(e) !== 0 || e.detail === 2) {\n return;\n }\n if (e.target === this.inner) {\n var self = this;\n var mousePageY = e.clientY;\n var onMouseMove = function (e) {\n mousePageY = e.clientY;\n };\n var onMouseUp = function () {\n clearInterval(timerId);\n };\n var startY = e.clientY;\n var startTop = this.thumbTop;\n var onScrollInterval = function () {\n if (mousePageY === undefined)\n return;\n var scrollTop = self.scrollTopFromThumbTop(startTop + mousePageY - startY);\n if (scrollTop === self.scrollTop)\n return;\n self._emit(\"scroll\", { data: scrollTop });\n };\n event.capture(this.inner, onMouseMove, onMouseUp);\n var timerId = setInterval(onScrollInterval, 20);\n return event.preventDefault(e);\n }\n var top = e.clientY - this.element.getBoundingClientRect().top - this.thumbHeight / 2;\n this._emit(\"scroll\", { data: this.scrollTopFromThumbTop(top) });\n return event.preventDefault(e);\n };\n VScrollBar.prototype.getHeight = function () {\n return this.height;\n };\n VScrollBar.prototype.scrollTopFromThumbTop = function (thumbTop) {\n var scrollTop = thumbTop * (this.pageHeight - this.viewHeight) / (this.slideHeight - this.thumbHeight);\n scrollTop = scrollTop >> 0;\n if (scrollTop < 0) {\n scrollTop = 0;\n }\n else if (scrollTop > this.pageHeight - this.viewHeight) {\n scrollTop = this.pageHeight - this.viewHeight;\n }\n return scrollTop;\n };\n VScrollBar.prototype.getWidth = function () {\n return Math.max(this.isVisible ? this.width : 0, this.$minWidth || 0);\n };\n VScrollBar.prototype.setHeight = function (height) {\n this.height = Math.max(0, height);\n this.slideHeight = this.height;\n this.viewHeight = this.height;\n this.setScrollHeight(this.pageHeight, true);\n };\n VScrollBar.prototype.setScrollHeight = function (height, force) {\n if (this.pageHeight === height && !force)\n return;\n this.pageHeight = height;\n this.thumbHeight = this.slideHeight * this.viewHeight / this.pageHeight;\n if (this.thumbHeight > this.slideHeight)\n this.thumbHeight = this.slideHeight;\n if (this.thumbHeight < 15)\n this.thumbHeight = 15;\n this.inner.style.height = this.thumbHeight + \"px\";\n if (this.scrollTop > (this.pageHeight - this.viewHeight)) {\n this.scrollTop = (this.pageHeight - this.viewHeight);\n if (this.scrollTop < 0)\n this.scrollTop = 0;\n this._emit(\"scroll\", { data: this.scrollTop });\n }\n };\n VScrollBar.prototype.setScrollTop = function (scrollTop) {\n this.scrollTop = scrollTop;\n if (scrollTop < 0)\n scrollTop = 0;\n this.thumbTop = scrollTop * (this.slideHeight - this.thumbHeight) / (this.pageHeight - this.viewHeight);\n this.inner.style.top = this.thumbTop + \"px\";\n };\n return VScrollBar;\n}(ScrollBar));\nVScrollBar.prototype.setInnerHeight = VScrollBar.prototype.setScrollHeight;\nvar HScrollBar = /** @class */ (function (_super) {\n __extends(HScrollBar, _super);\n function HScrollBar(parent, renderer) {\n var _this = _super.call(this, parent, '-h') || this;\n _this.scrollLeft = 0;\n _this.scrollWidth = 0;\n _this.height = _this.HScrollHeight;\n _this.inner.style.height = _this.element.style.height = (_this.height || 12) + \"px\";\n _this.renderer = renderer;\n return _this;\n }\n HScrollBar.prototype.onMouseDown = function (eType, e) {\n if (eType !== \"mousedown\")\n return;\n if (event.getButton(e) !== 0 || e.detail === 2) {\n return;\n }\n if (e.target === this.inner) {\n var self = this;\n var mousePageX = e.clientX;\n var onMouseMove = function (e) {\n mousePageX = e.clientX;\n };\n var onMouseUp = function () {\n clearInterval(timerId);\n };\n var startX = e.clientX;\n var startLeft = this.thumbLeft;\n var onScrollInterval = function () {\n if (mousePageX === undefined)\n return;\n var scrollLeft = self.scrollLeftFromThumbLeft(startLeft + mousePageX - startX);\n if (scrollLeft === self.scrollLeft)\n return;\n self._emit(\"scroll\", { data: scrollLeft });\n };\n event.capture(this.inner, onMouseMove, onMouseUp);\n var timerId = setInterval(onScrollInterval, 20);\n return event.preventDefault(e);\n }\n var left = e.clientX - this.element.getBoundingClientRect().left - this.thumbWidth / 2;\n this._emit(\"scroll\", { data: this.scrollLeftFromThumbLeft(left) });\n return event.preventDefault(e);\n };\n HScrollBar.prototype.getHeight = function () {\n return this.isVisible ? this.height : 0;\n };\n HScrollBar.prototype.scrollLeftFromThumbLeft = function (thumbLeft) {\n var scrollLeft = thumbLeft * (this.pageWidth - this.viewWidth) / (this.slideWidth - this.thumbWidth);\n scrollLeft = scrollLeft >> 0;\n if (scrollLeft < 0) {\n scrollLeft = 0;\n }\n else if (scrollLeft > this.pageWidth - this.viewWidth) {\n scrollLeft = this.pageWidth - this.viewWidth;\n }\n return scrollLeft;\n };\n HScrollBar.prototype.setWidth = function (width) {\n this.width = Math.max(0, width);\n this.element.style.width = this.width + \"px\";\n this.slideWidth = this.width;\n this.viewWidth = this.width;\n this.setScrollWidth(this.pageWidth, true);\n };\n HScrollBar.prototype.setScrollWidth = function (width, force) {\n if (this.pageWidth === width && !force)\n return;\n this.pageWidth = width;\n this.thumbWidth = this.slideWidth * this.viewWidth / this.pageWidth;\n if (this.thumbWidth > this.slideWidth)\n this.thumbWidth = this.slideWidth;\n if (this.thumbWidth < 15)\n this.thumbWidth = 15;\n this.inner.style.width = this.thumbWidth + \"px\";\n if (this.scrollLeft > (this.pageWidth - this.viewWidth)) {\n this.scrollLeft = (this.pageWidth - this.viewWidth);\n if (this.scrollLeft < 0)\n this.scrollLeft = 0;\n this._emit(\"scroll\", { data: this.scrollLeft });\n }\n };\n HScrollBar.prototype.setScrollLeft = function (scrollLeft) {\n this.scrollLeft = scrollLeft;\n if (scrollLeft < 0)\n scrollLeft = 0;\n this.thumbLeft = scrollLeft * (this.slideWidth - this.thumbWidth) / (this.pageWidth - this.viewWidth);\n this.inner.style.left = (this.thumbLeft) + \"px\";\n };\n return HScrollBar;\n}(ScrollBar));\nHScrollBar.prototype.setInnerWidth = HScrollBar.prototype.setScrollWidth;\nexports.ScrollBar = VScrollBar; // backward compatibility\nexports.ScrollBarV = VScrollBar; // backward compatibility\nexports.ScrollBarH = HScrollBar; // backward compatibility\nexports.VScrollBar = VScrollBar;\nexports.HScrollBar = HScrollBar;\n\n});\n\nace.define(\"ace/renderloop\",[\"require\",\"exports\",\"module\",\"ace/lib/event\"], function(require, exports, module){\"use strict\";\nvar event = require(\"./lib/event\");\nvar RenderLoop = /** @class */ (function () {\n function RenderLoop(onRender, win) {\n this.onRender = onRender;\n this.pending = false;\n this.changes = 0;\n this.$recursionLimit = 2;\n this.window = win || window;\n var _self = this;\n this._flush = function (ts) {\n _self.pending = false;\n var changes = _self.changes;\n if (changes) {\n event.blockIdle(100);\n _self.changes = 0;\n _self.onRender(changes);\n }\n if (_self.changes) {\n if (_self.$recursionLimit-- < 0)\n return;\n _self.schedule();\n }\n else {\n _self.$recursionLimit = 2;\n }\n };\n }\n RenderLoop.prototype.schedule = function (change) {\n this.changes = this.changes | change;\n if (this.changes && !this.pending) {\n event.nextFrame(this._flush);\n this.pending = true;\n }\n };\n RenderLoop.prototype.clear = function (change) {\n var changes = this.changes;\n this.changes = 0;\n return changes;\n };\n return RenderLoop;\n}());\nexports.RenderLoop = RenderLoop;\n\n});\n\nace.define(\"ace/layer/font_metrics\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/dom\",\"ace/lib/lang\",\"ace/lib/event\",\"ace/lib/useragent\",\"ace/lib/event_emitter\"], function(require, exports, module){var oop = require(\"../lib/oop\");\nvar dom = require(\"../lib/dom\");\nvar lang = require(\"../lib/lang\");\nvar event = require(\"../lib/event\");\nvar useragent = require(\"../lib/useragent\");\nvar EventEmitter = require(\"../lib/event_emitter\").EventEmitter;\nvar CHAR_COUNT = 512;\nvar USE_OBSERVER = typeof ResizeObserver == \"function\";\nvar L = 200;\nvar FontMetrics = /** @class */ (function () {\n function FontMetrics(parentEl) {\n this.el = dom.createElement(\"div\");\n this.$setMeasureNodeStyles(this.el.style, true);\n this.$main = dom.createElement(\"div\");\n this.$setMeasureNodeStyles(this.$main.style);\n this.$measureNode = dom.createElement(\"div\");\n this.$setMeasureNodeStyles(this.$measureNode.style);\n this.el.appendChild(this.$main);\n this.el.appendChild(this.$measureNode);\n parentEl.appendChild(this.el);\n this.$measureNode.textContent = lang.stringRepeat(\"X\", CHAR_COUNT);\n this.$characterSize = { width: 0, height: 0 };\n if (USE_OBSERVER)\n this.$addObserver();\n else\n this.checkForSizeChanges();\n }\n FontMetrics.prototype.$setMeasureNodeStyles = function (style, isRoot) {\n style.width = style.height = \"auto\";\n style.left = style.top = \"0px\";\n style.visibility = \"hidden\";\n style.position = \"absolute\";\n style.whiteSpace = \"pre\";\n if (useragent.isIE < 8) {\n style[\"font-family\"] = \"inherit\";\n }\n else {\n style.font = \"inherit\";\n }\n style.overflow = isRoot ? \"hidden\" : \"visible\";\n };\n FontMetrics.prototype.checkForSizeChanges = function (size) {\n if (size === undefined)\n size = this.$measureSizes();\n if (size && (this.$characterSize.width !== size.width || this.$characterSize.height !== size.height)) {\n this.$measureNode.style.fontWeight = \"bold\";\n var boldSize = this.$measureSizes();\n this.$measureNode.style.fontWeight = \"\";\n this.$characterSize = size;\n this.charSizes = Object.create(null);\n this.allowBoldFonts = boldSize && boldSize.width === size.width && boldSize.height === size.height;\n this._emit(\"changeCharacterSize\", { data: size });\n }\n };\n FontMetrics.prototype.$addObserver = function () {\n var self = this;\n this.$observer = new window.ResizeObserver(function (e) {\n self.checkForSizeChanges();\n });\n this.$observer.observe(this.$measureNode);\n };\n FontMetrics.prototype.$pollSizeChanges = function () {\n if (this.$pollSizeChangesTimer || this.$observer)\n return this.$pollSizeChangesTimer;\n var self = this;\n return this.$pollSizeChangesTimer = event.onIdle(function cb() {\n self.checkForSizeChanges();\n event.onIdle(cb, 500);\n }, 500);\n };\n FontMetrics.prototype.setPolling = function (val) {\n if (val) {\n this.$pollSizeChanges();\n }\n else if (this.$pollSizeChangesTimer) {\n clearInterval(this.$pollSizeChangesTimer);\n this.$pollSizeChangesTimer = 0;\n }\n };\n FontMetrics.prototype.$measureSizes = function (node) {\n var size = {\n height: (node || this.$measureNode).clientHeight,\n width: (node || this.$measureNode).clientWidth / CHAR_COUNT\n };\n if (size.width === 0 || size.height === 0)\n return null;\n return size;\n };\n FontMetrics.prototype.$measureCharWidth = function (ch) {\n this.$main.textContent = lang.stringRepeat(ch, CHAR_COUNT);\n var rect = this.$main.getBoundingClientRect();\n return rect.width / CHAR_COUNT;\n };\n FontMetrics.prototype.getCharacterWidth = function (ch) {\n var w = this.charSizes[ch];\n if (w === undefined) {\n w = this.charSizes[ch] = this.$measureCharWidth(ch) / this.$characterSize.width;\n }\n return w;\n };\n FontMetrics.prototype.destroy = function () {\n clearInterval(this.$pollSizeChangesTimer);\n if (this.$observer)\n this.$observer.disconnect();\n if (this.el && this.el.parentNode)\n this.el.parentNode.removeChild(this.el);\n };\n FontMetrics.prototype.$getZoom = function (element) {\n if (!element || !element.parentElement)\n return 1;\n return (window.getComputedStyle(element).zoom || 1) * this.$getZoom(element.parentElement);\n };\n FontMetrics.prototype.$initTransformMeasureNodes = function () {\n var t = function (t, l) {\n return [\"div\", {\n style: \"position: absolute;top:\" + t + \"px;left:\" + l + \"px;\"\n }];\n };\n this.els = dom.buildDom([t(0, 0), t(L, 0), t(0, L), t(L, L)], this.el);\n };\n FontMetrics.prototype.transformCoordinates = function (clientPos, elPos) {\n if (clientPos) {\n var zoom = this.$getZoom(this.el);\n clientPos = mul(1 / zoom, clientPos);\n }\n function solve(l1, l2, r) {\n var det = l1[1] * l2[0] - l1[0] * l2[1];\n return [\n (-l2[1] * r[0] + l2[0] * r[1]) / det,\n (+l1[1] * r[0] - l1[0] * r[1]) / det\n ];\n }\n function sub(a, b) { return [a[0] - b[0], a[1] - b[1]]; }\n function add(a, b) { return [a[0] + b[0], a[1] + b[1]]; }\n function mul(a, b) { return [a * b[0], a * b[1]]; }\n if (!this.els)\n this.$initTransformMeasureNodes();\n function p(el) {\n var r = el.getBoundingClientRect();\n return [r.left, r.top];\n }\n var a = p(this.els[0]);\n var b = p(this.els[1]);\n var c = p(this.els[2]);\n var d = p(this.els[3]);\n var h = solve(sub(d, b), sub(d, c), sub(add(b, c), add(d, a)));\n var m1 = mul(1 + h[0], sub(b, a));\n var m2 = mul(1 + h[1], sub(c, a));\n if (elPos) {\n var x = elPos;\n var k = h[0] * x[0] / L + h[1] * x[1] / L + 1;\n var ut = add(mul(x[0], m1), mul(x[1], m2));\n return add(mul(1 / k / L, ut), a);\n }\n var u = sub(clientPos, a);\n var f = solve(sub(m1, mul(h[0], u)), sub(m2, mul(h[1], u)), u);\n return mul(L, f);\n };\n return FontMetrics;\n}());\nFontMetrics.prototype.$characterSize = { width: 0, height: 0 };\noop.implement(FontMetrics.prototype, EventEmitter);\nexports.FontMetrics = FontMetrics;\n\n});\n\nace.define(\"ace/css/editor-css\",[\"require\",\"exports\",\"module\"], function(require, exports, module){/*\nstyles = []\nfor (var i = 1; i < 16; i++) {\n styles.push(\".ace_br\" + i + \"{\" + (\n [\"top-left\", \"top-right\", \"bottom-right\", \"bottom-left\"]\n ).map(function(x, j) {\n return i & (1< .ace_line, .ace_text-layer > .ace_line_group {\\n contain: style size layout;\\n position: absolute;\\n top: 0;\\n left: 0;\\n right: 0;\\n}\\n\\n.ace_hidpi .ace_text-layer,\\n.ace_hidpi .ace_gutter-layer,\\n.ace_hidpi .ace_content,\\n.ace_hidpi .ace_gutter {\\n contain: strict;\\n}\\n.ace_hidpi .ace_text-layer > .ace_line, \\n.ace_hidpi .ace_text-layer > .ace_line_group {\\n contain: strict;\\n}\\n\\n.ace_cjk {\\n display: inline-block;\\n text-align: center;\\n}\\n\\n.ace_cursor-layer {\\n z-index: 4;\\n}\\n\\n.ace_cursor {\\n z-index: 4;\\n position: absolute;\\n box-sizing: border-box;\\n border-left: 2px solid;\\n /* workaround for smooth cursor repaintng whole screen in chrome */\\n transform: translatez(0);\\n}\\n\\n.ace_multiselect .ace_cursor {\\n border-left-width: 1px;\\n}\\n\\n.ace_slim-cursors .ace_cursor {\\n border-left-width: 1px;\\n}\\n\\n.ace_overwrite-cursors .ace_cursor {\\n border-left-width: 0;\\n border-bottom: 1px solid;\\n}\\n\\n.ace_hidden-cursors .ace_cursor {\\n opacity: 0.2;\\n}\\n\\n.ace_hasPlaceholder .ace_hidden-cursors .ace_cursor {\\n opacity: 0;\\n}\\n\\n.ace_smooth-blinking .ace_cursor {\\n transition: opacity 0.18s;\\n}\\n\\n.ace_animate-blinking .ace_cursor {\\n animation-duration: 1000ms;\\n animation-timing-function: step-end;\\n animation-name: blink-ace-animate;\\n animation-iteration-count: infinite;\\n}\\n\\n.ace_animate-blinking.ace_smooth-blinking .ace_cursor {\\n animation-duration: 1000ms;\\n animation-timing-function: ease-in-out;\\n animation-name: blink-ace-animate-smooth;\\n}\\n \\n@keyframes blink-ace-animate {\\n from, to { opacity: 1; }\\n 60% { opacity: 0; }\\n}\\n\\n@keyframes blink-ace-animate-smooth {\\n from, to { opacity: 1; }\\n 45% { opacity: 1; }\\n 60% { opacity: 0; }\\n 85% { opacity: 0; }\\n}\\n\\n.ace_marker-layer .ace_step, .ace_marker-layer .ace_stack {\\n position: absolute;\\n z-index: 3;\\n}\\n\\n.ace_marker-layer .ace_selection {\\n position: absolute;\\n z-index: 5;\\n}\\n\\n.ace_marker-layer .ace_bracket {\\n position: absolute;\\n z-index: 6;\\n}\\n\\n.ace_marker-layer .ace_error_bracket {\\n position: absolute;\\n border-bottom: 1px solid #DE5555;\\n border-radius: 0;\\n}\\n\\n.ace_marker-layer .ace_active-line {\\n position: absolute;\\n z-index: 2;\\n}\\n\\n.ace_marker-layer .ace_selected-word {\\n position: absolute;\\n z-index: 4;\\n box-sizing: border-box;\\n}\\n\\n.ace_line .ace_fold {\\n box-sizing: border-box;\\n\\n display: inline-block;\\n height: 11px;\\n margin-top: -2px;\\n vertical-align: middle;\\n\\n background-image:\\n url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII=\\\"),\\n url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACJJREFUeNpi+P//fxgTAwPDBxDxD078RSX+YeEyDFMCIMAAI3INmXiwf2YAAAAASUVORK5CYII=\\\");\\n background-repeat: no-repeat, repeat-x;\\n background-position: center center, top left;\\n color: transparent;\\n\\n border: 1px solid black;\\n border-radius: 2px;\\n\\n cursor: pointer;\\n pointer-events: auto;\\n}\\n\\n.ace_dark .ace_fold {\\n}\\n\\n.ace_fold:hover{\\n background-image:\\n url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII=\\\"),\\n url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACBJREFUeNpi+P//fz4TAwPDZxDxD5X4i5fLMEwJgAADAEPVDbjNw87ZAAAAAElFTkSuQmCC\\\");\\n}\\n\\n.ace_tooltip {\\n background-color: #f5f5f5;\\n border: 1px solid gray;\\n border-radius: 1px;\\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);\\n color: black;\\n max-width: 100%;\\n padding: 3px 4px;\\n position: fixed;\\n z-index: 999999;\\n box-sizing: border-box;\\n cursor: default;\\n white-space: pre-wrap;\\n word-wrap: break-word;\\n line-height: normal;\\n font-style: normal;\\n font-weight: normal;\\n letter-spacing: normal;\\n pointer-events: none;\\n overflow: auto;\\n max-width: min(60em, 66vw);\\n}\\n.ace_tooltip pre {\\n white-space: pre-wrap;\\n}\\n\\n.ace_tooltip.ace_dark {\\n background-color: #636363;\\n color: #fff;\\n}\\n\\n.ace_tooltip:focus {\\n outline: 1px solid #5E9ED6;\\n}\\n\\n.ace_icon {\\n display: inline-block;\\n width: 18px;\\n vertical-align: top;\\n}\\n\\n.ace_icon_svg {\\n display: inline-block;\\n width: 12px;\\n vertical-align: top;\\n -webkit-mask-repeat: no-repeat;\\n -webkit-mask-size: 12px;\\n -webkit-mask-position: center;\\n}\\n\\n.ace_folding-enabled > .ace_gutter-cell, .ace_folding-enabled > .ace_gutter-cell_svg-icons {\\n padding-right: 13px;\\n}\\n\\n.ace_fold-widget {\\n box-sizing: border-box;\\n\\n margin: 0 -12px 0 1px;\\n display: none;\\n width: 11px;\\n vertical-align: top;\\n\\n background-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42mWKsQ0AMAzC8ixLlrzQjzmBiEjp0A6WwBCSPgKAXoLkqSot7nN3yMwR7pZ32NzpKkVoDBUxKAAAAABJRU5ErkJggg==\\\");\\n background-repeat: no-repeat;\\n background-position: center;\\n\\n border-radius: 3px;\\n \\n border: 1px solid transparent;\\n cursor: pointer;\\n}\\n\\n.ace_folding-enabled .ace_fold-widget {\\n display: inline-block; \\n}\\n\\n.ace_fold-widget.ace_end {\\n background-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42m3HwQkAMAhD0YzsRchFKI7sAikeWkrxwScEB0nh5e7KTPWimZki4tYfVbX+MNl4pyZXejUO1QAAAABJRU5ErkJggg==\\\");\\n}\\n\\n.ace_fold-widget.ace_closed {\\n background-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAGCAYAAAAG5SQMAAAAOUlEQVR42jXKwQkAMAgDwKwqKD4EwQ26sSOkVWjgIIHAzPiCgaqiqnJHZnKICBERHN194O5b9vbLuAVRL+l0YWnZAAAAAElFTkSuQmCCXA==\\\");\\n}\\n\\n.ace_fold-widget:hover {\\n border: 1px solid rgba(0, 0, 0, 0.3);\\n background-color: rgba(255, 255, 255, 0.2);\\n box-shadow: 0 1px 1px rgba(255, 255, 255, 0.7);\\n}\\n\\n.ace_fold-widget:active {\\n border: 1px solid rgba(0, 0, 0, 0.4);\\n background-color: rgba(0, 0, 0, 0.05);\\n box-shadow: 0 1px 1px rgba(255, 255, 255, 0.8);\\n}\\n/**\\n * Dark version for fold widgets\\n */\\n.ace_dark .ace_fold-widget {\\n background-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHklEQVQIW2P4//8/AzoGEQ7oGCaLLAhWiSwB146BAQCSTPYocqT0AAAAAElFTkSuQmCC\\\");\\n}\\n.ace_dark .ace_fold-widget.ace_end {\\n background-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAH0lEQVQIW2P4//8/AxQ7wNjIAjDMgC4AxjCVKBirIAAF0kz2rlhxpAAAAABJRU5ErkJggg==\\\");\\n}\\n.ace_dark .ace_fold-widget.ace_closed {\\n background-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAFCAYAAACAcVaiAAAAHElEQVQIW2P4//+/AxAzgDADlOOAznHAKgPWAwARji8UIDTfQQAAAABJRU5ErkJggg==\\\");\\n}\\n.ace_dark .ace_fold-widget:hover {\\n box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);\\n background-color: rgba(255, 255, 255, 0.1);\\n}\\n.ace_dark .ace_fold-widget:active {\\n box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);\\n}\\n\\n.ace_inline_button {\\n border: 1px solid lightgray;\\n display: inline-block;\\n margin: -1px 8px;\\n padding: 0 5px;\\n pointer-events: auto;\\n cursor: pointer;\\n}\\n.ace_inline_button:hover {\\n border-color: gray;\\n background: rgba(200,200,200,0.2);\\n display: inline-block;\\n pointer-events: auto;\\n}\\n\\n.ace_fold-widget.ace_invalid {\\n background-color: #FFB4B4;\\n border-color: #DE5555;\\n}\\n\\n.ace_fade-fold-widgets .ace_fold-widget {\\n transition: opacity 0.4s ease 0.05s;\\n opacity: 0;\\n}\\n\\n.ace_fade-fold-widgets:hover .ace_fold-widget {\\n transition: opacity 0.05s ease 0.05s;\\n opacity:1;\\n}\\n\\n.ace_underline {\\n text-decoration: underline;\\n}\\n\\n.ace_bold {\\n font-weight: bold;\\n}\\n\\n.ace_nobold .ace_bold {\\n font-weight: normal;\\n}\\n\\n.ace_italic {\\n font-style: italic;\\n}\\n\\n\\n.ace_error-marker {\\n background-color: rgba(255, 0, 0,0.2);\\n position: absolute;\\n z-index: 9;\\n}\\n\\n.ace_highlight-marker {\\n background-color: rgba(255, 255, 0,0.2);\\n position: absolute;\\n z-index: 8;\\n}\\n\\n.ace_mobile-menu {\\n position: absolute;\\n line-height: 1.5;\\n border-radius: 4px;\\n -ms-user-select: none;\\n -moz-user-select: none;\\n -webkit-user-select: none;\\n user-select: none;\\n background: white;\\n box-shadow: 1px 3px 2px grey;\\n border: 1px solid #dcdcdc;\\n color: black;\\n}\\n.ace_dark > .ace_mobile-menu {\\n background: #333;\\n color: #ccc;\\n box-shadow: 1px 3px 2px grey;\\n border: 1px solid #444;\\n\\n}\\n.ace_mobile-button {\\n padding: 2px;\\n cursor: pointer;\\n overflow: hidden;\\n}\\n.ace_mobile-button:hover {\\n background-color: #eee;\\n opacity:1;\\n}\\n.ace_mobile-button:active {\\n background-color: #ddd;\\n}\\n\\n.ace_placeholder {\\n font-family: arial;\\n transform: scale(0.9);\\n transform-origin: left;\\n white-space: pre;\\n opacity: 0.7;\\n margin: 0 10px;\\n}\\n\\n.ace_ghost_text {\\n opacity: 0.5;\\n font-style: italic;\\n white-space: pre;\\n}\\n\\n.ace_screenreader-only {\\n position:absolute;\\n left:-10000px;\\n top:auto;\\n width:1px;\\n height:1px;\\n overflow:hidden;\\n}\";\n\n});\n\nace.define(\"ace/layer/decorators\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\",\"ace/lib/oop\",\"ace/lib/event_emitter\"], function(require, exports, module){\"use strict\";\nvar dom = require(\"../lib/dom\");\nvar oop = require(\"../lib/oop\");\nvar EventEmitter = require(\"../lib/event_emitter\").EventEmitter;\nvar Decorator = /** @class */ (function () {\n function Decorator(parent, renderer) {\n this.canvas = dom.createElement(\"canvas\");\n this.renderer = renderer;\n this.pixelRatio = 1;\n this.maxHeight = renderer.layerConfig.maxHeight;\n this.lineHeight = renderer.layerConfig.lineHeight;\n this.canvasHeight = parent.parent.scrollHeight;\n this.heightRatio = this.canvasHeight / this.maxHeight;\n this.canvasWidth = parent.width;\n this.minDecorationHeight = (2 * this.pixelRatio) | 0;\n this.halfMinDecorationHeight = (this.minDecorationHeight / 2) | 0;\n this.canvas.width = this.canvasWidth;\n this.canvas.height = this.canvasHeight;\n this.canvas.style.top = 0 + \"px\";\n this.canvas.style.right = 0 + \"px\";\n this.canvas.style.zIndex = 7 + \"px\";\n this.canvas.style.position = \"absolute\";\n this.colors = {};\n this.colors.dark = {\n \"error\": \"rgba(255, 18, 18, 1)\",\n \"warning\": \"rgba(18, 136, 18, 1)\",\n \"info\": \"rgba(18, 18, 136, 1)\"\n };\n this.colors.light = {\n \"error\": \"rgb(255,51,51)\",\n \"warning\": \"rgb(32,133,72)\",\n \"info\": \"rgb(35,68,138)\"\n };\n parent.element.appendChild(this.canvas);\n }\n Decorator.prototype.$updateDecorators = function (config) {\n var colors = (this.renderer.theme.isDark === true) ? this.colors.dark : this.colors.light;\n if (config) {\n this.maxHeight = config.maxHeight;\n this.lineHeight = config.lineHeight;\n this.canvasHeight = config.height;\n var allLineHeight = (config.lastRow + 1) * this.lineHeight;\n if (allLineHeight < this.canvasHeight) {\n this.heightRatio = 1;\n }\n else {\n this.heightRatio = this.canvasHeight / this.maxHeight;\n }\n }\n var ctx = this.canvas.getContext(\"2d\");\n function compare(a, b) {\n if (a.priority < b.priority)\n return -1;\n if (a.priority > b.priority)\n return 1;\n return 0;\n }\n var annotations = this.renderer.session.$annotations;\n ctx.clearRect(0, 0, this.canvas.width, this.canvas.height);\n if (annotations) {\n var priorities = {\n \"info\": 1,\n \"warning\": 2,\n \"error\": 3\n };\n annotations.forEach(function (item) {\n item.priority = priorities[item.type] || null;\n });\n annotations = annotations.sort(compare);\n var foldData = this.renderer.session.$foldData;\n for (var i = 0; i < annotations.length; i++) {\n var row = annotations[i].row;\n var compensateFold = this.compensateFoldRows(row, foldData);\n var currentY = Math.round((row - compensateFold) * this.lineHeight * this.heightRatio);\n var y1 = Math.round(((row - compensateFold) * this.lineHeight * this.heightRatio));\n var y2 = Math.round((((row - compensateFold) * this.lineHeight + this.lineHeight) * this.heightRatio));\n var height = y2 - y1;\n if (height < this.minDecorationHeight) {\n var yCenter = ((y1 + y2) / 2) | 0;\n if (yCenter < this.halfMinDecorationHeight) {\n yCenter = this.halfMinDecorationHeight;\n }\n else if (yCenter + this.halfMinDecorationHeight > this.canvasHeight) {\n yCenter = this.canvasHeight - this.halfMinDecorationHeight;\n }\n y1 = Math.round(yCenter - this.halfMinDecorationHeight);\n y2 = Math.round(yCenter + this.halfMinDecorationHeight);\n }\n ctx.fillStyle = colors[annotations[i].type] || null;\n ctx.fillRect(0, currentY, this.canvasWidth, y2 - y1);\n }\n }\n var cursor = this.renderer.session.selection.getCursor();\n if (cursor) {\n var compensateFold = this.compensateFoldRows(cursor.row, foldData);\n var currentY = Math.round((cursor.row - compensateFold) * this.lineHeight * this.heightRatio);\n ctx.fillStyle = \"rgba(0, 0, 0, 0.5)\";\n ctx.fillRect(0, currentY, this.canvasWidth, 2);\n }\n };\n Decorator.prototype.compensateFoldRows = function (row, foldData) {\n var compensateFold = 0;\n if (foldData && foldData.length > 0) {\n for (var j = 0; j < foldData.length; j++) {\n if (row > foldData[j].start.row && row < foldData[j].end.row) {\n compensateFold += row - foldData[j].start.row;\n }\n else if (row >= foldData[j].end.row) {\n compensateFold += foldData[j].end.row - foldData[j].start.row;\n }\n }\n }\n return compensateFold;\n };\n return Decorator;\n}());\noop.implement(Decorator.prototype, EventEmitter);\nexports.Decorator = Decorator;\n\n});\n\nace.define(\"ace/virtual_renderer\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/dom\",\"ace/lib/lang\",\"ace/config\",\"ace/layer/gutter\",\"ace/layer/marker\",\"ace/layer/text\",\"ace/layer/cursor\",\"ace/scrollbar\",\"ace/scrollbar\",\"ace/scrollbar_custom\",\"ace/scrollbar_custom\",\"ace/renderloop\",\"ace/layer/font_metrics\",\"ace/lib/event_emitter\",\"ace/css/editor-css\",\"ace/layer/decorators\",\"ace/lib/useragent\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"./lib/oop\");\nvar dom = require(\"./lib/dom\");\nvar lang = require(\"./lib/lang\");\nvar config = require(\"./config\");\nvar GutterLayer = require(\"./layer/gutter\").Gutter;\nvar MarkerLayer = require(\"./layer/marker\").Marker;\nvar TextLayer = require(\"./layer/text\").Text;\nvar CursorLayer = require(\"./layer/cursor\").Cursor;\nvar HScrollBar = require(\"./scrollbar\").HScrollBar;\nvar VScrollBar = require(\"./scrollbar\").VScrollBar;\nvar HScrollBarCustom = require(\"./scrollbar_custom\").HScrollBar;\nvar VScrollBarCustom = require(\"./scrollbar_custom\").VScrollBar;\nvar RenderLoop = require(\"./renderloop\").RenderLoop;\nvar FontMetrics = require(\"./layer/font_metrics\").FontMetrics;\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar editorCss = require(\"./css/editor-css\");\nvar Decorator = require(\"./layer/decorators\").Decorator;\nvar useragent = require(\"./lib/useragent\");\ndom.importCssString(editorCss, \"ace_editor.css\", false);\nvar VirtualRenderer = /** @class */ (function () {\n function VirtualRenderer(container, theme) {\n var _self = this;\n this.container = container || dom.createElement(\"div\");\n dom.addCssClass(this.container, \"ace_editor\");\n if (dom.HI_DPI)\n dom.addCssClass(this.container, \"ace_hidpi\");\n this.setTheme(theme);\n if (config.get(\"useStrictCSP\") == null)\n config.set(\"useStrictCSP\", false);\n this.$gutter = dom.createElement(\"div\");\n this.$gutter.className = \"ace_gutter\";\n this.container.appendChild(this.$gutter);\n this.$gutter.setAttribute(\"aria-hidden\", true);\n this.scroller = dom.createElement(\"div\");\n this.scroller.className = \"ace_scroller\";\n this.container.appendChild(this.scroller);\n this.content = dom.createElement(\"div\");\n this.content.className = \"ace_content\";\n this.scroller.appendChild(this.content);\n this.$gutterLayer = new GutterLayer(this.$gutter);\n this.$gutterLayer.on(\"changeGutterWidth\", this.onGutterResize.bind(this));\n this.$markerBack = new MarkerLayer(this.content);\n var textLayer = this.$textLayer = new TextLayer(this.content);\n this.canvas = textLayer.element;\n this.$markerFront = new MarkerLayer(this.content);\n this.$cursorLayer = new CursorLayer(this.content);\n this.$horizScroll = false;\n this.$vScroll = false;\n this.scrollBar =\n this.scrollBarV = new VScrollBar(this.container, this);\n this.scrollBarH = new HScrollBar(this.container, this);\n this.scrollBarV.on(\"scroll\", function (e) {\n if (!_self.$scrollAnimation)\n _self.session.setScrollTop(e.data - _self.scrollMargin.top);\n });\n this.scrollBarH.on(\"scroll\", function (e) {\n if (!_self.$scrollAnimation)\n _self.session.setScrollLeft(e.data - _self.scrollMargin.left);\n });\n this.scrollTop = 0;\n this.scrollLeft = 0;\n this.cursorPos = {\n row: 0,\n column: 0\n };\n this.$fontMetrics = new FontMetrics(this.container);\n this.$textLayer.$setFontMetrics(this.$fontMetrics);\n this.$textLayer.on(\"changeCharacterSize\", function (e) {\n _self.updateCharacterSize();\n _self.onResize(true, _self.gutterWidth, _self.$size.width, _self.$size.height);\n _self._signal(\"changeCharacterSize\", e);\n });\n this.$size = {\n width: 0,\n height: 0,\n scrollerHeight: 0,\n scrollerWidth: 0,\n $dirty: true\n };\n this.layerConfig = {\n width: 1,\n padding: 0,\n firstRow: 0,\n firstRowScreen: 0,\n lastRow: 0,\n lineHeight: 0,\n characterWidth: 0,\n minHeight: 1,\n maxHeight: 1,\n offset: 0,\n height: 1,\n gutterOffset: 1\n };\n this.scrollMargin = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0,\n v: 0,\n h: 0\n };\n this.margin = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0,\n v: 0,\n h: 0\n };\n this.$keepTextAreaAtCursor = !useragent.isIOS;\n this.$loop = new RenderLoop(this.$renderChanges.bind(this), this.container.ownerDocument.defaultView);\n this.$loop.schedule(this.CHANGE_FULL);\n this.updateCharacterSize();\n this.setPadding(4);\n this.$addResizeObserver();\n config.resetOptions(this);\n config._signal(\"renderer\", this);\n }\n VirtualRenderer.prototype.updateCharacterSize = function () {\n if (this.$textLayer.allowBoldFonts != this.$allowBoldFonts) {\n this.$allowBoldFonts = this.$textLayer.allowBoldFonts;\n this.setStyle(\"ace_nobold\", !this.$allowBoldFonts);\n }\n this.layerConfig.characterWidth =\n this.characterWidth = this.$textLayer.getCharacterWidth();\n this.layerConfig.lineHeight =\n this.lineHeight = this.$textLayer.getLineHeight();\n this.$updatePrintMargin();\n dom.setStyle(this.scroller.style, \"line-height\", this.lineHeight + \"px\");\n };\n VirtualRenderer.prototype.setSession = function (session) {\n if (this.session)\n this.session.doc.off(\"changeNewLineMode\", this.onChangeNewLineMode);\n this.session = session;\n if (session && this.scrollMargin.top && session.getScrollTop() <= 0)\n session.setScrollTop(-this.scrollMargin.top);\n this.$cursorLayer.setSession(session);\n this.$markerBack.setSession(session);\n this.$markerFront.setSession(session);\n this.$gutterLayer.setSession(session);\n this.$textLayer.setSession(session);\n if (!session)\n return;\n this.$loop.schedule(this.CHANGE_FULL);\n this.session.$setFontMetrics(this.$fontMetrics);\n this.scrollBarH.scrollLeft = this.scrollBarV.scrollTop = null;\n this.onChangeNewLineMode = this.onChangeNewLineMode.bind(this);\n this.onChangeNewLineMode();\n this.session.doc.on(\"changeNewLineMode\", this.onChangeNewLineMode);\n };\n VirtualRenderer.prototype.updateLines = function (firstRow, lastRow, force) {\n if (lastRow === undefined)\n lastRow = Infinity;\n if (!this.$changedLines) {\n this.$changedLines = {\n firstRow: firstRow,\n lastRow: lastRow\n };\n }\n else {\n if (this.$changedLines.firstRow > firstRow)\n this.$changedLines.firstRow = firstRow;\n if (this.$changedLines.lastRow < lastRow)\n this.$changedLines.lastRow = lastRow;\n }\n if (this.$changedLines.lastRow < this.layerConfig.firstRow) {\n if (force)\n this.$changedLines.lastRow = this.layerConfig.lastRow;\n else\n return;\n }\n if (this.$changedLines.firstRow > this.layerConfig.lastRow)\n return;\n this.$loop.schedule(this.CHANGE_LINES);\n };\n VirtualRenderer.prototype.onChangeNewLineMode = function () {\n this.$loop.schedule(this.CHANGE_TEXT);\n this.$textLayer.$updateEolChar();\n this.session.$bidiHandler.setEolChar(this.$textLayer.EOL_CHAR);\n };\n VirtualRenderer.prototype.onChangeTabSize = function () {\n this.$loop.schedule(this.CHANGE_TEXT | this.CHANGE_MARKER);\n this.$textLayer.onChangeTabSize();\n };\n VirtualRenderer.prototype.updateText = function () {\n this.$loop.schedule(this.CHANGE_TEXT);\n };\n VirtualRenderer.prototype.updateFull = function (force) {\n if (force)\n this.$renderChanges(this.CHANGE_FULL, true);\n else\n this.$loop.schedule(this.CHANGE_FULL);\n };\n VirtualRenderer.prototype.updateFontSize = function () {\n this.$textLayer.checkForSizeChanges();\n };\n VirtualRenderer.prototype.$updateSizeAsync = function () {\n if (this.$loop.pending)\n this.$size.$dirty = true;\n else\n this.onResize();\n };\n VirtualRenderer.prototype.onResize = function (force, gutterWidth, width, height) {\n if (this.resizing > 2)\n return;\n else if (this.resizing > 0)\n this.resizing++;\n else\n this.resizing = force ? 1 : 0;\n var el = this.container;\n if (!height)\n height = el.clientHeight || el.scrollHeight;\n if (!width)\n width = el.clientWidth || el.scrollWidth;\n var changes = this.$updateCachedSize(force, gutterWidth, width, height);\n if (this.$resizeTimer)\n this.$resizeTimer.cancel();\n if (!this.$size.scrollerHeight || (!width && !height))\n return this.resizing = 0;\n if (force)\n this.$gutterLayer.$padding = null;\n if (force)\n this.$renderChanges(changes | this.$changes, true);\n else\n this.$loop.schedule(changes | this.$changes);\n if (this.resizing)\n this.resizing = 0;\n this.scrollBarH.scrollLeft = this.scrollBarV.scrollTop = null;\n if (this.$customScrollbar) {\n this.$updateCustomScrollbar(true);\n }\n };\n VirtualRenderer.prototype.$updateCachedSize = function (force, gutterWidth, width, height) {\n height -= (this.$extraHeight || 0);\n var changes = 0;\n var size = this.$size;\n var oldSize = {\n width: size.width,\n height: size.height,\n scrollerHeight: size.scrollerHeight,\n scrollerWidth: size.scrollerWidth\n };\n if (height && (force || size.height != height)) {\n size.height = height;\n changes |= this.CHANGE_SIZE;\n size.scrollerHeight = size.height;\n if (this.$horizScroll)\n size.scrollerHeight -= this.scrollBarH.getHeight();\n this.scrollBarV.setHeight(size.scrollerHeight);\n this.scrollBarV.element.style.bottom = this.scrollBarH.getHeight() + \"px\";\n changes = changes | this.CHANGE_SCROLL;\n }\n if (width && (force || size.width != width)) {\n changes |= this.CHANGE_SIZE;\n size.width = width;\n if (gutterWidth == null)\n gutterWidth = this.$showGutter ? this.$gutter.offsetWidth : 0;\n this.gutterWidth = gutterWidth;\n dom.setStyle(this.scrollBarH.element.style, \"left\", gutterWidth + \"px\");\n dom.setStyle(this.scroller.style, \"left\", gutterWidth + this.margin.left + \"px\");\n size.scrollerWidth = Math.max(0, width - gutterWidth - this.scrollBarV.getWidth() - this.margin.h);\n dom.setStyle(this.$gutter.style, \"left\", this.margin.left + \"px\");\n var right = this.scrollBarV.getWidth() + \"px\";\n dom.setStyle(this.scrollBarH.element.style, \"right\", right);\n dom.setStyle(this.scroller.style, \"right\", right);\n dom.setStyle(this.scroller.style, \"bottom\", this.scrollBarH.getHeight());\n this.scrollBarH.setWidth(size.scrollerWidth);\n if (this.session && this.session.getUseWrapMode() && this.adjustWrapLimit() || force) {\n changes |= this.CHANGE_FULL;\n }\n }\n size.$dirty = !width || !height;\n if (changes)\n this._signal(\"resize\", oldSize);\n return changes;\n };\n VirtualRenderer.prototype.onGutterResize = function (width) {\n var gutterWidth = this.$showGutter ? width : 0;\n if (gutterWidth != this.gutterWidth)\n this.$changes |= this.$updateCachedSize(true, gutterWidth, this.$size.width, this.$size.height);\n if (this.session.getUseWrapMode() && this.adjustWrapLimit()) {\n this.$loop.schedule(this.CHANGE_FULL);\n }\n else if (this.$size.$dirty) {\n this.$loop.schedule(this.CHANGE_FULL);\n }\n else {\n this.$computeLayerConfig();\n }\n };\n VirtualRenderer.prototype.adjustWrapLimit = function () {\n var availableWidth = this.$size.scrollerWidth - this.$padding * 2;\n var limit = Math.floor(availableWidth / this.characterWidth);\n return this.session.adjustWrapLimit(limit, this.$showPrintMargin && this.$printMarginColumn);\n };\n VirtualRenderer.prototype.setAnimatedScroll = function (shouldAnimate) {\n this.setOption(\"animatedScroll\", shouldAnimate);\n };\n VirtualRenderer.prototype.getAnimatedScroll = function () {\n return this.$animatedScroll;\n };\n VirtualRenderer.prototype.setShowInvisibles = function (showInvisibles) {\n this.setOption(\"showInvisibles\", showInvisibles);\n this.session.$bidiHandler.setShowInvisibles(showInvisibles);\n };\n VirtualRenderer.prototype.getShowInvisibles = function () {\n return this.getOption(\"showInvisibles\");\n };\n VirtualRenderer.prototype.getDisplayIndentGuides = function () {\n return this.getOption(\"displayIndentGuides\");\n };\n VirtualRenderer.prototype.setDisplayIndentGuides = function (display) {\n this.setOption(\"displayIndentGuides\", display);\n };\n VirtualRenderer.prototype.getHighlightIndentGuides = function () {\n return this.getOption(\"highlightIndentGuides\");\n };\n VirtualRenderer.prototype.setHighlightIndentGuides = function (highlight) {\n this.setOption(\"highlightIndentGuides\", highlight);\n };\n VirtualRenderer.prototype.setShowPrintMargin = function (showPrintMargin) {\n this.setOption(\"showPrintMargin\", showPrintMargin);\n };\n VirtualRenderer.prototype.getShowPrintMargin = function () {\n return this.getOption(\"showPrintMargin\");\n };\n VirtualRenderer.prototype.setPrintMarginColumn = function (showPrintMargin) {\n this.setOption(\"printMarginColumn\", showPrintMargin);\n };\n VirtualRenderer.prototype.getPrintMarginColumn = function () {\n return this.getOption(\"printMarginColumn\");\n };\n VirtualRenderer.prototype.getShowGutter = function () {\n return this.getOption(\"showGutter\");\n };\n VirtualRenderer.prototype.setShowGutter = function (show) {\n return this.setOption(\"showGutter\", show);\n };\n VirtualRenderer.prototype.getFadeFoldWidgets = function () {\n return this.getOption(\"fadeFoldWidgets\");\n };\n VirtualRenderer.prototype.setFadeFoldWidgets = function (show) {\n this.setOption(\"fadeFoldWidgets\", show);\n };\n VirtualRenderer.prototype.setHighlightGutterLine = function (shouldHighlight) {\n this.setOption(\"highlightGutterLine\", shouldHighlight);\n };\n VirtualRenderer.prototype.getHighlightGutterLine = function () {\n return this.getOption(\"highlightGutterLine\");\n };\n VirtualRenderer.prototype.$updatePrintMargin = function () {\n if (!this.$showPrintMargin && !this.$printMarginEl)\n return;\n if (!this.$printMarginEl) {\n var containerEl = dom.createElement(\"div\");\n containerEl.className = \"ace_layer ace_print-margin-layer\";\n this.$printMarginEl = dom.createElement(\"div\");\n this.$printMarginEl.className = \"ace_print-margin\";\n containerEl.appendChild(this.$printMarginEl);\n this.content.insertBefore(containerEl, this.content.firstChild);\n }\n var style = this.$printMarginEl.style;\n style.left = Math.round(this.characterWidth * this.$printMarginColumn + this.$padding) + \"px\";\n style.visibility = this.$showPrintMargin ? \"visible\" : \"hidden\";\n if (this.session && this.session.$wrap == -1)\n this.adjustWrapLimit();\n };\n VirtualRenderer.prototype.getContainerElement = function () {\n return this.container;\n };\n VirtualRenderer.prototype.getMouseEventTarget = function () {\n return this.scroller;\n };\n VirtualRenderer.prototype.getTextAreaContainer = function () {\n return this.container;\n };\n VirtualRenderer.prototype.$moveTextAreaToCursor = function () {\n if (this.$isMousePressed)\n return;\n var style = this.textarea.style;\n var composition = this.$composition;\n if (!this.$keepTextAreaAtCursor && !composition) {\n dom.translate(this.textarea, -100, 0);\n return;\n }\n var pixelPos = this.$cursorLayer.$pixelPos;\n if (!pixelPos)\n return;\n if (composition && composition.markerRange)\n pixelPos = this.$cursorLayer.getPixelPosition(composition.markerRange.start, true);\n var config = this.layerConfig;\n var posTop = pixelPos.top;\n var posLeft = pixelPos.left;\n posTop -= config.offset;\n var h = composition && composition.useTextareaForIME || useragent.isMobile ? this.lineHeight : 1;\n if (posTop < 0 || posTop > config.height - h) {\n dom.translate(this.textarea, 0, 0);\n return;\n }\n var w = 1;\n var maxTop = this.$size.height - h;\n if (!composition) {\n posTop += this.lineHeight;\n }\n else {\n if (composition.useTextareaForIME) {\n var val = this.textarea.value;\n w = this.characterWidth * (this.session.$getStringScreenWidth(val)[0]);\n }\n else {\n posTop += this.lineHeight + 2;\n }\n }\n posLeft -= this.scrollLeft;\n if (posLeft > this.$size.scrollerWidth - w)\n posLeft = this.$size.scrollerWidth - w;\n posLeft += this.gutterWidth + this.margin.left;\n dom.setStyle(style, \"height\", h + \"px\");\n dom.setStyle(style, \"width\", w + \"px\");\n dom.translate(this.textarea, Math.min(posLeft, this.$size.scrollerWidth - w), Math.min(posTop, maxTop));\n };\n VirtualRenderer.prototype.getFirstVisibleRow = function () {\n return this.layerConfig.firstRow;\n };\n VirtualRenderer.prototype.getFirstFullyVisibleRow = function () {\n return this.layerConfig.firstRow + (this.layerConfig.offset === 0 ? 0 : 1);\n };\n VirtualRenderer.prototype.getLastFullyVisibleRow = function () {\n var config = this.layerConfig;\n var lastRow = config.lastRow;\n var top = this.session.documentToScreenRow(lastRow, 0) * config.lineHeight;\n if (top - this.session.getScrollTop() > config.height - config.lineHeight)\n return lastRow - 1;\n return lastRow;\n };\n VirtualRenderer.prototype.getLastVisibleRow = function () {\n return this.layerConfig.lastRow;\n };\n VirtualRenderer.prototype.setPadding = function (padding) {\n this.$padding = padding;\n this.$textLayer.setPadding(padding);\n this.$cursorLayer.setPadding(padding);\n this.$markerFront.setPadding(padding);\n this.$markerBack.setPadding(padding);\n this.$loop.schedule(this.CHANGE_FULL);\n this.$updatePrintMargin();\n };\n VirtualRenderer.prototype.setScrollMargin = function (top, bottom, left, right) {\n var sm = this.scrollMargin;\n sm.top = top | 0;\n sm.bottom = bottom | 0;\n sm.right = right | 0;\n sm.left = left | 0;\n sm.v = sm.top + sm.bottom;\n sm.h = sm.left + sm.right;\n if (sm.top && this.scrollTop <= 0 && this.session)\n this.session.setScrollTop(-sm.top);\n this.updateFull();\n };\n VirtualRenderer.prototype.setMargin = function (top, bottom, left, right) {\n var sm = this.margin;\n sm.top = top | 0;\n sm.bottom = bottom | 0;\n sm.right = right | 0;\n sm.left = left | 0;\n sm.v = sm.top + sm.bottom;\n sm.h = sm.left + sm.right;\n this.$updateCachedSize(true, this.gutterWidth, this.$size.width, this.$size.height);\n this.updateFull();\n };\n VirtualRenderer.prototype.getHScrollBarAlwaysVisible = function () {\n return this.$hScrollBarAlwaysVisible;\n };\n VirtualRenderer.prototype.setHScrollBarAlwaysVisible = function (alwaysVisible) {\n this.setOption(\"hScrollBarAlwaysVisible\", alwaysVisible);\n };\n VirtualRenderer.prototype.getVScrollBarAlwaysVisible = function () {\n return this.$vScrollBarAlwaysVisible;\n };\n VirtualRenderer.prototype.setVScrollBarAlwaysVisible = function (alwaysVisible) {\n this.setOption(\"vScrollBarAlwaysVisible\", alwaysVisible);\n };\n VirtualRenderer.prototype.$updateScrollBarV = function () {\n var scrollHeight = this.layerConfig.maxHeight;\n var scrollerHeight = this.$size.scrollerHeight;\n if (!this.$maxLines && this.$scrollPastEnd) {\n scrollHeight -= (scrollerHeight - this.lineHeight) * this.$scrollPastEnd;\n if (this.scrollTop > scrollHeight - scrollerHeight) {\n scrollHeight = this.scrollTop + scrollerHeight;\n this.scrollBarV.scrollTop = null;\n }\n }\n this.scrollBarV.setScrollHeight(scrollHeight + this.scrollMargin.v);\n this.scrollBarV.setScrollTop(this.scrollTop + this.scrollMargin.top);\n };\n VirtualRenderer.prototype.$updateScrollBarH = function () {\n this.scrollBarH.setScrollWidth(this.layerConfig.width + 2 * this.$padding + this.scrollMargin.h);\n this.scrollBarH.setScrollLeft(this.scrollLeft + this.scrollMargin.left);\n };\n VirtualRenderer.prototype.freeze = function () {\n this.$frozen = true;\n };\n VirtualRenderer.prototype.unfreeze = function () {\n this.$frozen = false;\n };\n VirtualRenderer.prototype.$renderChanges = function (changes, force) {\n if (this.$changes) {\n changes |= this.$changes;\n this.$changes = 0;\n }\n if ((!this.session || !this.container.offsetWidth || this.$frozen) || (!changes && !force)) {\n this.$changes |= changes;\n return;\n }\n if (this.$size.$dirty) {\n this.$changes |= changes;\n return this.onResize(true);\n }\n if (!this.lineHeight) {\n this.$textLayer.checkForSizeChanges();\n }\n this._signal(\"beforeRender\", changes);\n if (this.session && this.session.$bidiHandler)\n this.session.$bidiHandler.updateCharacterWidths(this.$fontMetrics);\n var config = this.layerConfig;\n if (changes & this.CHANGE_FULL ||\n changes & this.CHANGE_SIZE ||\n changes & this.CHANGE_TEXT ||\n changes & this.CHANGE_LINES ||\n changes & this.CHANGE_SCROLL ||\n changes & this.CHANGE_H_SCROLL) {\n changes |= this.$computeLayerConfig() | this.$loop.clear();\n if (config.firstRow != this.layerConfig.firstRow && config.firstRowScreen == this.layerConfig.firstRowScreen) {\n var st = this.scrollTop + (config.firstRow - Math.max(this.layerConfig.firstRow, 0)) * this.lineHeight;\n if (st > 0) {\n this.scrollTop = st;\n changes = changes | this.CHANGE_SCROLL;\n changes |= this.$computeLayerConfig() | this.$loop.clear();\n }\n }\n config = this.layerConfig;\n this.$updateScrollBarV();\n if (changes & this.CHANGE_H_SCROLL)\n this.$updateScrollBarH();\n dom.translate(this.content, -this.scrollLeft, -config.offset);\n var width = config.width + 2 * this.$padding + \"px\";\n var height = config.minHeight + \"px\";\n dom.setStyle(this.content.style, \"width\", width);\n dom.setStyle(this.content.style, \"height\", height);\n }\n if (changes & this.CHANGE_H_SCROLL) {\n dom.translate(this.content, -this.scrollLeft, -config.offset);\n this.scroller.className = this.scrollLeft <= 0 ? \"ace_scroller \" : \"ace_scroller ace_scroll-left \";\n if (this.enableKeyboardAccessibility)\n this.scroller.className += this.keyboardFocusClassName;\n }\n if (changes & this.CHANGE_FULL) {\n this.$changedLines = null;\n this.$textLayer.update(config);\n if (this.$showGutter)\n this.$gutterLayer.update(config);\n if (this.$customScrollbar) {\n this.$scrollDecorator.$updateDecorators(config);\n }\n this.$markerBack.update(config);\n this.$markerFront.update(config);\n this.$cursorLayer.update(config);\n this.$moveTextAreaToCursor();\n this._signal(\"afterRender\", changes);\n return;\n }\n if (changes & this.CHANGE_SCROLL) {\n this.$changedLines = null;\n if (changes & this.CHANGE_TEXT || changes & this.CHANGE_LINES)\n this.$textLayer.update(config);\n else\n this.$textLayer.scrollLines(config);\n if (this.$showGutter) {\n if (changes & this.CHANGE_GUTTER || changes & this.CHANGE_LINES)\n this.$gutterLayer.update(config);\n else\n this.$gutterLayer.scrollLines(config);\n }\n if (this.$customScrollbar) {\n this.$scrollDecorator.$updateDecorators(config);\n }\n this.$markerBack.update(config);\n this.$markerFront.update(config);\n this.$cursorLayer.update(config);\n this.$moveTextAreaToCursor();\n this._signal(\"afterRender\", changes);\n return;\n }\n if (changes & this.CHANGE_TEXT) {\n this.$changedLines = null;\n this.$textLayer.update(config);\n if (this.$showGutter)\n this.$gutterLayer.update(config);\n if (this.$customScrollbar) {\n this.$scrollDecorator.$updateDecorators(config);\n }\n }\n else if (changes & this.CHANGE_LINES) {\n if (this.$updateLines() || (changes & this.CHANGE_GUTTER) && this.$showGutter)\n this.$gutterLayer.update(config);\n if (this.$customScrollbar) {\n this.$scrollDecorator.$updateDecorators(config);\n }\n }\n else if (changes & this.CHANGE_TEXT || changes & this.CHANGE_GUTTER) {\n if (this.$showGutter)\n this.$gutterLayer.update(config);\n if (this.$customScrollbar) {\n this.$scrollDecorator.$updateDecorators(config);\n }\n }\n else if (changes & this.CHANGE_CURSOR) {\n if (this.$highlightGutterLine)\n this.$gutterLayer.updateLineHighlight(config);\n if (this.$customScrollbar) {\n this.$scrollDecorator.$updateDecorators(config);\n }\n }\n if (changes & this.CHANGE_CURSOR) {\n this.$cursorLayer.update(config);\n this.$moveTextAreaToCursor();\n }\n if (changes & (this.CHANGE_MARKER | this.CHANGE_MARKER_FRONT)) {\n this.$markerFront.update(config);\n }\n if (changes & (this.CHANGE_MARKER | this.CHANGE_MARKER_BACK)) {\n this.$markerBack.update(config);\n }\n this._signal(\"afterRender\", changes);\n };\n VirtualRenderer.prototype.$autosize = function () {\n var height = this.session.getScreenLength() * this.lineHeight;\n var maxHeight = this.$maxLines * this.lineHeight;\n var desiredHeight = Math.min(maxHeight, Math.max((this.$minLines || 1) * this.lineHeight, height)) + this.scrollMargin.v + (this.$extraHeight || 0);\n if (this.$horizScroll)\n desiredHeight += this.scrollBarH.getHeight();\n if (this.$maxPixelHeight && desiredHeight > this.$maxPixelHeight)\n desiredHeight = this.$maxPixelHeight;\n var hideScrollbars = desiredHeight <= 2 * this.lineHeight;\n var vScroll = !hideScrollbars && height > maxHeight;\n if (desiredHeight != this.desiredHeight ||\n this.$size.height != this.desiredHeight || vScroll != this.$vScroll) {\n if (vScroll != this.$vScroll) {\n this.$vScroll = vScroll;\n this.scrollBarV.setVisible(vScroll);\n }\n var w = this.container.clientWidth;\n this.container.style.height = desiredHeight + \"px\";\n this.$updateCachedSize(true, this.$gutterWidth, w, desiredHeight);\n this.desiredHeight = desiredHeight;\n this._signal(\"autosize\");\n }\n };\n VirtualRenderer.prototype.$computeLayerConfig = function () {\n var session = this.session;\n var size = this.$size;\n var hideScrollbars = size.height <= 2 * this.lineHeight;\n var screenLines = this.session.getScreenLength();\n var maxHeight = screenLines * this.lineHeight;\n var longestLine = this.$getLongestLine();\n var horizScroll = !hideScrollbars && (this.$hScrollBarAlwaysVisible ||\n size.scrollerWidth - longestLine - 2 * this.$padding < 0);\n var hScrollChanged = this.$horizScroll !== horizScroll;\n if (hScrollChanged) {\n this.$horizScroll = horizScroll;\n this.scrollBarH.setVisible(horizScroll);\n }\n var vScrollBefore = this.$vScroll; // autosize can change vscroll value in which case we need to update longestLine\n if (this.$maxLines && this.lineHeight > 1)\n this.$autosize();\n var minHeight = size.scrollerHeight + this.lineHeight;\n var scrollPastEnd = !this.$maxLines && this.$scrollPastEnd\n ? (size.scrollerHeight - this.lineHeight) * this.$scrollPastEnd\n : 0;\n maxHeight += scrollPastEnd;\n var sm = this.scrollMargin;\n this.session.setScrollTop(Math.max(-sm.top, Math.min(this.scrollTop, maxHeight - size.scrollerHeight + sm.bottom)));\n this.session.setScrollLeft(Math.max(-sm.left, Math.min(this.scrollLeft, longestLine + 2 * this.$padding - size.scrollerWidth + sm.right)));\n var vScroll = !hideScrollbars && (this.$vScrollBarAlwaysVisible ||\n size.scrollerHeight - maxHeight + scrollPastEnd < 0 || this.scrollTop > sm.top);\n var vScrollChanged = vScrollBefore !== vScroll;\n if (vScrollChanged) {\n this.$vScroll = vScroll;\n this.scrollBarV.setVisible(vScroll);\n }\n var offset = this.scrollTop % this.lineHeight;\n var lineCount = Math.ceil(minHeight / this.lineHeight) - 1;\n var firstRow = Math.max(0, Math.round((this.scrollTop - offset) / this.lineHeight));\n var lastRow = firstRow + lineCount;\n var firstRowScreen, firstRowHeight;\n var lineHeight = this.lineHeight;\n firstRow = session.screenToDocumentRow(firstRow, 0);\n var foldLine = session.getFoldLine(firstRow);\n if (foldLine) {\n firstRow = foldLine.start.row;\n }\n firstRowScreen = session.documentToScreenRow(firstRow, 0);\n firstRowHeight = session.getRowLength(firstRow) * lineHeight;\n lastRow = Math.min(session.screenToDocumentRow(lastRow, 0), session.getLength() - 1);\n minHeight = size.scrollerHeight + session.getRowLength(lastRow) * lineHeight +\n firstRowHeight;\n offset = this.scrollTop - firstRowScreen * lineHeight;\n var changes = 0;\n if (this.layerConfig.width != longestLine || hScrollChanged)\n changes = this.CHANGE_H_SCROLL;\n if (hScrollChanged || vScrollChanged) {\n changes |= this.$updateCachedSize(true, this.gutterWidth, size.width, size.height);\n this._signal(\"scrollbarVisibilityChanged\");\n if (vScrollChanged)\n longestLine = this.$getLongestLine();\n }\n this.layerConfig = {\n width: longestLine,\n padding: this.$padding,\n firstRow: firstRow,\n firstRowScreen: firstRowScreen,\n lastRow: lastRow,\n lineHeight: lineHeight,\n characterWidth: this.characterWidth,\n minHeight: minHeight,\n maxHeight: maxHeight,\n offset: offset,\n gutterOffset: lineHeight ? Math.max(0, Math.ceil((offset + size.height - size.scrollerHeight) / lineHeight)) : 0,\n height: this.$size.scrollerHeight\n };\n if (this.session.$bidiHandler)\n this.session.$bidiHandler.setContentWidth(longestLine - this.$padding);\n return changes;\n };\n VirtualRenderer.prototype.$updateLines = function () {\n if (!this.$changedLines)\n return;\n var firstRow = this.$changedLines.firstRow;\n var lastRow = this.$changedLines.lastRow;\n this.$changedLines = null;\n var layerConfig = this.layerConfig;\n if (firstRow > layerConfig.lastRow + 1) {\n return;\n }\n if (lastRow < layerConfig.firstRow) {\n return;\n }\n if (lastRow === Infinity) {\n if (this.$showGutter)\n this.$gutterLayer.update(layerConfig);\n this.$textLayer.update(layerConfig);\n return;\n }\n this.$textLayer.updateLines(layerConfig, firstRow, lastRow);\n return true;\n };\n VirtualRenderer.prototype.$getLongestLine = function () {\n var charCount = this.session.getScreenWidth();\n if (this.showInvisibles && !this.session.$useWrapMode)\n charCount += 1;\n if (this.$textLayer && charCount > this.$textLayer.MAX_LINE_LENGTH)\n charCount = this.$textLayer.MAX_LINE_LENGTH + 30;\n return Math.max(this.$size.scrollerWidth - 2 * this.$padding, Math.round(charCount * this.characterWidth));\n };\n VirtualRenderer.prototype.updateFrontMarkers = function () {\n this.$markerFront.setMarkers(this.session.getMarkers(true));\n this.$loop.schedule(this.CHANGE_MARKER_FRONT);\n };\n VirtualRenderer.prototype.updateBackMarkers = function () {\n this.$markerBack.setMarkers(this.session.getMarkers());\n this.$loop.schedule(this.CHANGE_MARKER_BACK);\n };\n VirtualRenderer.prototype.addGutterDecoration = function (row, className) {\n this.$gutterLayer.addGutterDecoration(row, className);\n };\n VirtualRenderer.prototype.removeGutterDecoration = function (row, className) {\n this.$gutterLayer.removeGutterDecoration(row, className);\n };\n VirtualRenderer.prototype.updateBreakpoints = function (rows) {\n this.$loop.schedule(this.CHANGE_GUTTER);\n };\n VirtualRenderer.prototype.setAnnotations = function (annotations) {\n this.$gutterLayer.setAnnotations(annotations);\n this.$loop.schedule(this.CHANGE_GUTTER);\n };\n VirtualRenderer.prototype.updateCursor = function () {\n this.$loop.schedule(this.CHANGE_CURSOR);\n };\n VirtualRenderer.prototype.hideCursor = function () {\n this.$cursorLayer.hideCursor();\n };\n VirtualRenderer.prototype.showCursor = function () {\n this.$cursorLayer.showCursor();\n };\n VirtualRenderer.prototype.scrollSelectionIntoView = function (anchor, lead, offset) {\n this.scrollCursorIntoView(anchor, offset);\n this.scrollCursorIntoView(lead, offset);\n };\n VirtualRenderer.prototype.scrollCursorIntoView = function (cursor, offset, $viewMargin) {\n if (this.$size.scrollerHeight === 0)\n return;\n var pos = this.$cursorLayer.getPixelPosition(cursor);\n var newLeft = pos.left;\n var newTop = pos.top;\n var topMargin = $viewMargin && $viewMargin.top || 0;\n var bottomMargin = $viewMargin && $viewMargin.bottom || 0;\n if (this.$scrollAnimation) {\n this.$stopAnimation = true;\n }\n var currentTop = this.$scrollAnimation ? this.session.getScrollTop() : this.scrollTop;\n if (currentTop + topMargin > newTop) {\n if (offset && currentTop + topMargin > newTop + this.lineHeight)\n newTop -= offset * this.$size.scrollerHeight;\n if (newTop === 0)\n newTop = -this.scrollMargin.top;\n this.session.setScrollTop(newTop);\n }\n else if (currentTop + this.$size.scrollerHeight - bottomMargin < newTop + this.lineHeight) {\n if (offset && currentTop + this.$size.scrollerHeight - bottomMargin < newTop - this.lineHeight)\n newTop += offset * this.$size.scrollerHeight;\n this.session.setScrollTop(newTop + this.lineHeight + bottomMargin - this.$size.scrollerHeight);\n }\n var currentLeft = this.scrollLeft;\n var twoCharsWidth = 2 * this.layerConfig.characterWidth;\n if (newLeft - twoCharsWidth < currentLeft) {\n newLeft -= twoCharsWidth;\n if (newLeft < this.$padding + twoCharsWidth) {\n newLeft = -this.scrollMargin.left;\n }\n this.session.setScrollLeft(newLeft);\n }\n else {\n newLeft += twoCharsWidth;\n if (currentLeft + this.$size.scrollerWidth < newLeft + this.characterWidth) {\n this.session.setScrollLeft(Math.round(newLeft + this.characterWidth - this.$size.scrollerWidth));\n }\n else if (currentLeft <= this.$padding && newLeft - currentLeft < this.characterWidth) {\n this.session.setScrollLeft(0);\n }\n }\n };\n VirtualRenderer.prototype.getScrollTop = function () {\n return this.session.getScrollTop();\n };\n VirtualRenderer.prototype.getScrollLeft = function () {\n return this.session.getScrollLeft();\n };\n VirtualRenderer.prototype.getScrollTopRow = function () {\n return this.scrollTop / this.lineHeight;\n };\n VirtualRenderer.prototype.getScrollBottomRow = function () {\n return Math.max(0, Math.floor((this.scrollTop + this.$size.scrollerHeight) / this.lineHeight) - 1);\n };\n VirtualRenderer.prototype.scrollToRow = function (row) {\n this.session.setScrollTop(row * this.lineHeight);\n };\n VirtualRenderer.prototype.alignCursor = function (cursor, alignment) {\n if (typeof cursor == \"number\")\n cursor = { row: cursor, column: 0 };\n var pos = this.$cursorLayer.getPixelPosition(cursor);\n var h = this.$size.scrollerHeight - this.lineHeight;\n var offset = pos.top - h * (alignment || 0);\n this.session.setScrollTop(offset);\n return offset;\n };\n VirtualRenderer.prototype.$calcSteps = function (fromValue, toValue) {\n var i = 0;\n var l = this.STEPS;\n var steps = [];\n var func = function (t, x_min, dx) {\n return dx * (Math.pow(t - 1, 3) + 1) + x_min;\n };\n for (i = 0; i < l; ++i)\n steps.push(func(i / this.STEPS, fromValue, toValue - fromValue));\n return steps;\n };\n VirtualRenderer.prototype.scrollToLine = function (line, center, animate, callback) {\n var pos = this.$cursorLayer.getPixelPosition({ row: line, column: 0 });\n var offset = pos.top;\n if (center)\n offset -= this.$size.scrollerHeight / 2;\n var initialScroll = this.scrollTop;\n this.session.setScrollTop(offset);\n if (animate !== false)\n this.animateScrolling(initialScroll, callback);\n };\n VirtualRenderer.prototype.animateScrolling = function (fromValue, callback) {\n var toValue = this.scrollTop;\n if (!this.$animatedScroll)\n return;\n var _self = this;\n if (fromValue == toValue)\n return;\n if (this.$scrollAnimation) {\n var oldSteps = this.$scrollAnimation.steps;\n if (oldSteps.length) {\n fromValue = oldSteps[0];\n if (fromValue == toValue)\n return;\n }\n }\n var steps = _self.$calcSteps(fromValue, toValue);\n this.$scrollAnimation = { from: fromValue, to: toValue, steps: steps };\n clearInterval(this.$timer);\n _self.session.setScrollTop(steps.shift());\n _self.session.$scrollTop = toValue;\n function endAnimation() {\n _self.$timer = clearInterval(_self.$timer);\n _self.$scrollAnimation = null;\n _self.$stopAnimation = false;\n callback && callback();\n }\n this.$timer = setInterval(function () {\n if (_self.$stopAnimation) {\n endAnimation();\n return;\n }\n if (!_self.session)\n return clearInterval(_self.$timer);\n if (steps.length) {\n _self.session.setScrollTop(steps.shift());\n _self.session.$scrollTop = toValue;\n }\n else if (toValue != null) {\n _self.session.$scrollTop = -1;\n _self.session.setScrollTop(toValue);\n toValue = null;\n }\n else {\n endAnimation();\n }\n }, 10);\n };\n VirtualRenderer.prototype.scrollToY = function (scrollTop) {\n if (this.scrollTop !== scrollTop) {\n this.$loop.schedule(this.CHANGE_SCROLL);\n this.scrollTop = scrollTop;\n }\n };\n VirtualRenderer.prototype.scrollToX = function (scrollLeft) {\n if (this.scrollLeft !== scrollLeft)\n this.scrollLeft = scrollLeft;\n this.$loop.schedule(this.CHANGE_H_SCROLL);\n };\n VirtualRenderer.prototype.scrollTo = function (x, y) {\n this.session.setScrollTop(y);\n this.session.setScrollLeft(x);\n };\n VirtualRenderer.prototype.scrollBy = function (deltaX, deltaY) {\n deltaY && this.session.setScrollTop(this.session.getScrollTop() + deltaY);\n deltaX && this.session.setScrollLeft(this.session.getScrollLeft() + deltaX);\n };\n VirtualRenderer.prototype.isScrollableBy = function (deltaX, deltaY) {\n if (deltaY < 0 && this.session.getScrollTop() >= 1 - this.scrollMargin.top)\n return true;\n if (deltaY > 0 && this.session.getScrollTop() + this.$size.scrollerHeight\n - this.layerConfig.maxHeight < -1 + this.scrollMargin.bottom)\n return true;\n if (deltaX < 0 && this.session.getScrollLeft() >= 1 - this.scrollMargin.left)\n return true;\n if (deltaX > 0 && this.session.getScrollLeft() + this.$size.scrollerWidth\n - this.layerConfig.width < -1 + this.scrollMargin.right)\n return true;\n };\n VirtualRenderer.prototype.pixelToScreenCoordinates = function (x, y) {\n var canvasPos;\n if (this.$hasCssTransforms) {\n canvasPos = { top: 0, left: 0 };\n var p = this.$fontMetrics.transformCoordinates([x, y]);\n x = p[1] - this.gutterWidth - this.margin.left;\n y = p[0];\n }\n else {\n canvasPos = this.scroller.getBoundingClientRect();\n }\n var offsetX = x + this.scrollLeft - canvasPos.left - this.$padding;\n var offset = offsetX / this.characterWidth;\n var row = Math.floor((y + this.scrollTop - canvasPos.top) / this.lineHeight);\n var col = this.$blockCursor ? Math.floor(offset) : Math.round(offset);\n return { row: row, column: col, side: offset - col > 0 ? 1 : -1, offsetX: offsetX };\n };\n VirtualRenderer.prototype.screenToTextCoordinates = function (x, y) {\n var canvasPos;\n if (this.$hasCssTransforms) {\n canvasPos = { top: 0, left: 0 };\n var p = this.$fontMetrics.transformCoordinates([x, y]);\n x = p[1] - this.gutterWidth - this.margin.left;\n y = p[0];\n }\n else {\n canvasPos = this.scroller.getBoundingClientRect();\n }\n var offsetX = x + this.scrollLeft - canvasPos.left - this.$padding;\n var offset = offsetX / this.characterWidth;\n var col = this.$blockCursor ? Math.floor(offset) : Math.round(offset);\n var row = Math.floor((y + this.scrollTop - canvasPos.top) / this.lineHeight);\n return this.session.screenToDocumentPosition(row, Math.max(col, 0), offsetX);\n };\n VirtualRenderer.prototype.textToScreenCoordinates = function (row, column) {\n var canvasPos = this.scroller.getBoundingClientRect();\n var pos = this.session.documentToScreenPosition(row, column);\n var x = this.$padding + (this.session.$bidiHandler.isBidiRow(pos.row, row)\n ? this.session.$bidiHandler.getPosLeft(pos.column)\n : Math.round(pos.column * this.characterWidth));\n var y = pos.row * this.lineHeight;\n return {\n pageX: canvasPos.left + x - this.scrollLeft,\n pageY: canvasPos.top + y - this.scrollTop\n };\n };\n VirtualRenderer.prototype.visualizeFocus = function () {\n dom.addCssClass(this.container, \"ace_focus\");\n };\n VirtualRenderer.prototype.visualizeBlur = function () {\n dom.removeCssClass(this.container, \"ace_focus\");\n };\n VirtualRenderer.prototype.showComposition = function (composition) {\n this.$composition = composition;\n if (!composition.cssText) {\n composition.cssText = this.textarea.style.cssText;\n }\n if (composition.useTextareaForIME == undefined)\n composition.useTextareaForIME = this.$useTextareaForIME;\n if (this.$useTextareaForIME) {\n dom.addCssClass(this.textarea, \"ace_composition\");\n this.textarea.style.cssText = \"\";\n this.$moveTextAreaToCursor();\n this.$cursorLayer.element.style.display = \"none\";\n }\n else {\n composition.markerId = this.session.addMarker(composition.markerRange, \"ace_composition_marker\", \"text\");\n }\n };\n VirtualRenderer.prototype.setCompositionText = function (text) {\n var cursor = this.session.selection.cursor;\n this.addToken(text, \"composition_placeholder\", cursor.row, cursor.column);\n this.$moveTextAreaToCursor();\n };\n VirtualRenderer.prototype.hideComposition = function () {\n if (!this.$composition)\n return;\n if (this.$composition.markerId)\n this.session.removeMarker(this.$composition.markerId);\n dom.removeCssClass(this.textarea, \"ace_composition\");\n this.textarea.style.cssText = this.$composition.cssText;\n var cursor = this.session.selection.cursor;\n this.removeExtraToken(cursor.row, cursor.column);\n this.$composition = null;\n this.$cursorLayer.element.style.display = \"\";\n };\n VirtualRenderer.prototype.setGhostText = function (text, position) {\n var cursor = this.session.selection.cursor;\n var insertPosition = position || { row: cursor.row, column: cursor.column };\n this.removeGhostText();\n var textLines = text.split(\"\\n\");\n this.addToken(textLines[0], \"ghost_text\", insertPosition.row, insertPosition.column);\n this.$ghostText = {\n text: text,\n position: {\n row: insertPosition.row,\n column: insertPosition.column\n }\n };\n if (textLines.length > 1) {\n this.$ghostTextWidget = {\n text: textLines.slice(1).join(\"\\n\"),\n row: insertPosition.row,\n column: insertPosition.column,\n className: \"ace_ghost_text\"\n };\n this.session.widgetManager.addLineWidget(this.$ghostTextWidget);\n var pixelPosition = this.$cursorLayer.getPixelPosition(insertPosition, true);\n var el = this.container;\n var height = el.getBoundingClientRect().height;\n var ghostTextHeight = textLines.length * this.lineHeight;\n var fitsY = ghostTextHeight < height - pixelPosition.top;\n if (fitsY)\n return;\n if (ghostTextHeight < height) {\n this.scrollBy(0, (textLines.length - 1) * this.lineHeight);\n }\n else {\n this.scrollBy(0, pixelPosition.top);\n }\n }\n };\n VirtualRenderer.prototype.removeGhostText = function () {\n if (!this.$ghostText)\n return;\n var position = this.$ghostText.position;\n this.removeExtraToken(position.row, position.column);\n if (this.$ghostTextWidget) {\n this.session.widgetManager.removeLineWidget(this.$ghostTextWidget);\n this.$ghostTextWidget = null;\n }\n this.$ghostText = null;\n };\n VirtualRenderer.prototype.addToken = function (text, type, row, column) {\n var session = this.session;\n session.bgTokenizer.lines[row] = null;\n var newToken = { type: type, value: text };\n var tokens = session.getTokens(row);\n if (column == null || !tokens.length) {\n tokens.push(newToken);\n }\n else {\n var l = 0;\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n l += token.value.length;\n if (column <= l) {\n var diff = token.value.length - (l - column);\n var before = token.value.slice(0, diff);\n var after = token.value.slice(diff);\n tokens.splice(i, 1, { type: token.type, value: before }, newToken, { type: token.type, value: after });\n break;\n }\n }\n }\n this.updateLines(row, row);\n };\n VirtualRenderer.prototype.removeExtraToken = function (row, column) {\n this.session.bgTokenizer.lines[row] = null;\n this.updateLines(row, row);\n };\n VirtualRenderer.prototype.setTheme = function (theme, cb) {\n var _self = this;\n this.$themeId = theme;\n _self._dispatchEvent('themeChange', { theme: theme });\n if (!theme || typeof theme == \"string\") {\n var moduleName = theme || this.$options.theme.initialValue;\n config.loadModule([\"theme\", moduleName], afterLoad);\n }\n else {\n afterLoad(theme);\n }\n function afterLoad(module) {\n if (_self.$themeId != theme)\n return cb && cb();\n if (!module || !module.cssClass)\n throw new Error(\"couldn't load module \" + theme + \" or it didn't call define\");\n if (module.$id)\n _self.$themeId = module.$id;\n dom.importCssString(module.cssText, module.cssClass, _self.container);\n if (_self.theme)\n dom.removeCssClass(_self.container, _self.theme.cssClass);\n var padding = \"padding\" in module ? module.padding\n : \"padding\" in (_self.theme || {}) ? 4 : _self.$padding;\n if (_self.$padding && padding != _self.$padding)\n _self.setPadding(padding);\n _self.$theme = module.cssClass;\n _self.theme = module;\n dom.addCssClass(_self.container, module.cssClass);\n dom.setCssClass(_self.container, \"ace_dark\", module.isDark);\n if (_self.$size) {\n _self.$size.width = 0;\n _self.$updateSizeAsync();\n }\n _self._dispatchEvent('themeLoaded', { theme: module });\n cb && cb();\n }\n };\n VirtualRenderer.prototype.getTheme = function () {\n return this.$themeId;\n };\n VirtualRenderer.prototype.setStyle = function (style, include) {\n dom.setCssClass(this.container, style, include !== false);\n };\n VirtualRenderer.prototype.unsetStyle = function (style) {\n dom.removeCssClass(this.container, style);\n };\n VirtualRenderer.prototype.setCursorStyle = function (style) {\n dom.setStyle(this.scroller.style, \"cursor\", style);\n };\n VirtualRenderer.prototype.setMouseCursor = function (cursorStyle) {\n dom.setStyle(this.scroller.style, \"cursor\", cursorStyle);\n };\n VirtualRenderer.prototype.attachToShadowRoot = function () {\n dom.importCssString(editorCss, \"ace_editor.css\", this.container);\n };\n VirtualRenderer.prototype.destroy = function () {\n this.freeze();\n this.$fontMetrics.destroy();\n this.$cursorLayer.destroy();\n this.removeAllListeners();\n this.container.textContent = \"\";\n this.setOption(\"useResizeObserver\", false);\n };\n VirtualRenderer.prototype.$updateCustomScrollbar = function (val) {\n var _self = this;\n this.$horizScroll = this.$vScroll = null;\n this.scrollBarV.element.remove();\n this.scrollBarH.element.remove();\n if (this.$scrollDecorator) {\n delete this.$scrollDecorator;\n }\n if (val === true) {\n this.scrollBarV = new VScrollBarCustom(this.container, this);\n this.scrollBarH = new HScrollBarCustom(this.container, this);\n this.scrollBarV.setHeight(this.$size.scrollerHeight);\n this.scrollBarH.setWidth(this.$size.scrollerWidth);\n this.scrollBarV.addEventListener(\"scroll\", function (e) {\n if (!_self.$scrollAnimation)\n _self.session.setScrollTop(e.data - _self.scrollMargin.top);\n });\n this.scrollBarH.addEventListener(\"scroll\", function (e) {\n if (!_self.$scrollAnimation)\n _self.session.setScrollLeft(e.data - _self.scrollMargin.left);\n });\n this.$scrollDecorator = new Decorator(this.scrollBarV, this);\n this.$scrollDecorator.$updateDecorators();\n }\n else {\n this.scrollBarV = new VScrollBar(this.container, this);\n this.scrollBarH = new HScrollBar(this.container, this);\n this.scrollBarV.addEventListener(\"scroll\", function (e) {\n if (!_self.$scrollAnimation)\n _self.session.setScrollTop(e.data - _self.scrollMargin.top);\n });\n this.scrollBarH.addEventListener(\"scroll\", function (e) {\n if (!_self.$scrollAnimation)\n _self.session.setScrollLeft(e.data - _self.scrollMargin.left);\n });\n }\n };\n VirtualRenderer.prototype.$addResizeObserver = function () {\n if (!window.ResizeObserver || this.$resizeObserver)\n return;\n var self = this;\n this.$resizeTimer = lang.delayedCall(function () {\n if (!self.destroyed)\n self.onResize();\n }, 50);\n this.$resizeObserver = new window.ResizeObserver(function (e) {\n var w = e[0].contentRect.width;\n var h = e[0].contentRect.height;\n if (Math.abs(self.$size.width - w) > 1\n || Math.abs(self.$size.height - h) > 1) {\n self.$resizeTimer.delay();\n }\n else {\n self.$resizeTimer.cancel();\n }\n });\n this.$resizeObserver.observe(this.container);\n };\n return VirtualRenderer;\n}());\nVirtualRenderer.prototype.CHANGE_CURSOR = 1;\nVirtualRenderer.prototype.CHANGE_MARKER = 2;\nVirtualRenderer.prototype.CHANGE_GUTTER = 4;\nVirtualRenderer.prototype.CHANGE_SCROLL = 8;\nVirtualRenderer.prototype.CHANGE_LINES = 16;\nVirtualRenderer.prototype.CHANGE_TEXT = 32;\nVirtualRenderer.prototype.CHANGE_SIZE = 64;\nVirtualRenderer.prototype.CHANGE_MARKER_BACK = 128;\nVirtualRenderer.prototype.CHANGE_MARKER_FRONT = 256;\nVirtualRenderer.prototype.CHANGE_FULL = 512;\nVirtualRenderer.prototype.CHANGE_H_SCROLL = 1024;\nVirtualRenderer.prototype.$changes = 0;\nVirtualRenderer.prototype.$padding = null;\nVirtualRenderer.prototype.$frozen = false;\nVirtualRenderer.prototype.STEPS = 8;\noop.implement(VirtualRenderer.prototype, EventEmitter);\nconfig.defineOptions(VirtualRenderer.prototype, \"renderer\", {\n useResizeObserver: {\n set: function (value) {\n if (!value && this.$resizeObserver) {\n this.$resizeObserver.disconnect();\n this.$resizeTimer.cancel();\n this.$resizeTimer = this.$resizeObserver = null;\n }\n else if (value && !this.$resizeObserver) {\n this.$addResizeObserver();\n }\n }\n },\n animatedScroll: { initialValue: false },\n showInvisibles: {\n set: function (value) {\n if (this.$textLayer.setShowInvisibles(value))\n this.$loop.schedule(this.CHANGE_TEXT);\n },\n initialValue: false\n },\n showPrintMargin: {\n set: function () { this.$updatePrintMargin(); },\n initialValue: true\n },\n printMarginColumn: {\n set: function () { this.$updatePrintMargin(); },\n initialValue: 80\n },\n printMargin: {\n set: function (val) {\n if (typeof val == \"number\")\n this.$printMarginColumn = val;\n this.$showPrintMargin = !!val;\n this.$updatePrintMargin();\n },\n get: function () {\n return this.$showPrintMargin && this.$printMarginColumn;\n }\n },\n showGutter: {\n set: function (show) {\n this.$gutter.style.display = show ? \"block\" : \"none\";\n this.$loop.schedule(this.CHANGE_FULL);\n this.onGutterResize();\n },\n initialValue: true\n },\n useSvgGutterIcons: {\n set: function (value) {\n this.$gutterLayer.$useSvgGutterIcons = value;\n },\n initialValue: false\n },\n showFoldedAnnotations: {\n set: function (value) {\n this.$gutterLayer.$showFoldedAnnotations = value;\n },\n initialValue: false\n },\n fadeFoldWidgets: {\n set: function (show) {\n dom.setCssClass(this.$gutter, \"ace_fade-fold-widgets\", show);\n },\n initialValue: false\n },\n showFoldWidgets: {\n set: function (show) {\n this.$gutterLayer.setShowFoldWidgets(show);\n this.$loop.schedule(this.CHANGE_GUTTER);\n },\n initialValue: true\n },\n displayIndentGuides: {\n set: function (show) {\n if (this.$textLayer.setDisplayIndentGuides(show))\n this.$loop.schedule(this.CHANGE_TEXT);\n },\n initialValue: true\n },\n highlightIndentGuides: {\n set: function (show) {\n if (this.$textLayer.setHighlightIndentGuides(show) == true) {\n this.$textLayer.$highlightIndentGuide();\n }\n else {\n this.$textLayer.$clearActiveIndentGuide(this.$textLayer.$lines.cells);\n }\n },\n initialValue: true\n },\n highlightGutterLine: {\n set: function (shouldHighlight) {\n this.$gutterLayer.setHighlightGutterLine(shouldHighlight);\n this.$loop.schedule(this.CHANGE_GUTTER);\n },\n initialValue: true\n },\n hScrollBarAlwaysVisible: {\n set: function (val) {\n if (!this.$hScrollBarAlwaysVisible || !this.$horizScroll)\n this.$loop.schedule(this.CHANGE_SCROLL);\n },\n initialValue: false\n },\n vScrollBarAlwaysVisible: {\n set: function (val) {\n if (!this.$vScrollBarAlwaysVisible || !this.$vScroll)\n this.$loop.schedule(this.CHANGE_SCROLL);\n },\n initialValue: false\n },\n fontSize: {\n set: function (size) {\n if (typeof size == \"number\")\n size = size + \"px\";\n this.container.style.fontSize = size;\n this.updateFontSize();\n },\n initialValue: 12\n },\n fontFamily: {\n set: function (name) {\n this.container.style.fontFamily = name;\n this.updateFontSize();\n }\n },\n maxLines: {\n set: function (val) {\n this.updateFull();\n }\n },\n minLines: {\n set: function (val) {\n if (!(this.$minLines < 0x1ffffffffffff))\n this.$minLines = 0;\n this.updateFull();\n }\n },\n maxPixelHeight: {\n set: function (val) {\n this.updateFull();\n },\n initialValue: 0\n },\n scrollPastEnd: {\n set: function (val) {\n val = +val || 0;\n if (this.$scrollPastEnd == val)\n return;\n this.$scrollPastEnd = val;\n this.$loop.schedule(this.CHANGE_SCROLL);\n },\n initialValue: 0,\n handlesSet: true\n },\n fixedWidthGutter: {\n set: function (val) {\n this.$gutterLayer.$fixedWidth = !!val;\n this.$loop.schedule(this.CHANGE_GUTTER);\n }\n },\n customScrollbar: {\n set: function (val) {\n this.$updateCustomScrollbar(val);\n },\n initialValue: false\n },\n theme: {\n set: function (val) { this.setTheme(val); },\n get: function () { return this.$themeId || this.theme; },\n initialValue: \"./theme/textmate\",\n handlesSet: true\n },\n hasCssTransforms: {},\n useTextareaForIME: {\n initialValue: !useragent.isMobile && !useragent.isIE\n }\n});\nexports.VirtualRenderer = VirtualRenderer;\n\n});\n\nace.define(\"ace/worker/worker_client\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/net\",\"ace/lib/event_emitter\",\"ace/config\"], function(require, exports, module) {\n\"use strict\";\n\nvar oop = require(\"../lib/oop\");\nvar net = require(\"../lib/net\");\nvar EventEmitter = require(\"../lib/event_emitter\").EventEmitter;\nvar config = require(\"../config\");\n\nfunction $workerBlob(workerUrl) {\n var script = \"importScripts('\" + net.qualifyURL(workerUrl) + \"');\";\n try {\n return new Blob([script], {\"type\": \"application/javascript\"});\n } catch (e) { // Backwards-compatibility\n var BlobBuilder = window.BlobBuilder || window.WebKitBlobBuilder || window.MozBlobBuilder;\n var blobBuilder = new BlobBuilder();\n blobBuilder.append(script);\n return blobBuilder.getBlob(\"application/javascript\");\n }\n}\n\nfunction createWorker(workerUrl) {\n if (typeof Worker == \"undefined\")\n return { postMessage: function() {}, terminate: function() {} };\n if (config.get(\"loadWorkerFromBlob\")) {\n var blob = $workerBlob(workerUrl);\n var URL = window.URL || window.webkitURL;\n var blobURL = URL.createObjectURL(blob);\n return new Worker(blobURL);\n }\n return new Worker(workerUrl);\n}\n\nvar WorkerClient = function(worker) {\n if (!worker.postMessage)\n worker = this.$createWorkerFromOldConfig.apply(this, arguments);\n\n this.$worker = worker;\n this.$sendDeltaQueue = this.$sendDeltaQueue.bind(this);\n this.changeListener = this.changeListener.bind(this);\n this.onMessage = this.onMessage.bind(this);\n\n this.callbackId = 1;\n this.callbacks = {};\n\n this.$worker.onmessage = this.onMessage;\n};\n\n(function(){\n\n oop.implement(this, EventEmitter);\n\n this.$createWorkerFromOldConfig = function(topLevelNamespaces, mod, classname, workerUrl, importScripts) {\n if (require.nameToUrl && !require.toUrl)\n require.toUrl = require.nameToUrl;\n\n if (config.get(\"packaged\") || !require.toUrl) {\n workerUrl = workerUrl || config.moduleUrl(mod, \"worker\");\n } else {\n var normalizePath = this.$normalizePath;\n workerUrl = workerUrl || normalizePath(require.toUrl(\"ace/worker/worker.js\", null, \"_\"));\n\n var tlns = {};\n topLevelNamespaces.forEach(function(ns) {\n tlns[ns] = normalizePath(require.toUrl(ns, null, \"_\").replace(/(\\.js)?(\\?.*)?$/, \"\"));\n });\n }\n\n this.$worker = createWorker(workerUrl);\n if (importScripts) {\n this.send(\"importScripts\", importScripts);\n }\n this.$worker.postMessage({\n init : true,\n tlns : tlns,\n module : mod,\n classname : classname\n });\n return this.$worker;\n };\n\n this.onMessage = function(e) {\n var msg = e.data;\n switch (msg.type) {\n case \"event\":\n this._signal(msg.name, {data: msg.data});\n break;\n case \"call\":\n var callback = this.callbacks[msg.id];\n if (callback) {\n callback(msg.data);\n delete this.callbacks[msg.id];\n }\n break;\n case \"error\":\n this.reportError(msg.data);\n break;\n case \"log\":\n window.console && console.log && console.log.apply(console, msg.data);\n break;\n }\n };\n \n this.reportError = function(err) {\n window.console && console.error && console.error(err);\n };\n\n this.$normalizePath = function(path) {\n return net.qualifyURL(path);\n };\n\n this.terminate = function() {\n this._signal(\"terminate\", {});\n this.deltaQueue = null;\n this.$worker.terminate();\n this.$worker.onerror = function(e) {\n e.preventDefault();\n };\n this.$worker = null;\n if (this.$doc)\n this.$doc.off(\"change\", this.changeListener);\n this.$doc = null;\n };\n\n this.send = function(cmd, args) {\n this.$worker.postMessage({command: cmd, args: args});\n };\n\n this.call = function(cmd, args, callback) {\n if (callback) {\n var id = this.callbackId++;\n this.callbacks[id] = callback;\n args.push(id);\n }\n this.send(cmd, args);\n };\n\n this.emit = function(event, data) {\n try {\n if (data.data && data.data.err)\n data.data.err = {message: data.data.err.message, stack: data.data.err.stack, code: data.data.err.code};\n this.$worker && this.$worker.postMessage({event: event, data: {data: data.data}});\n }\n catch(ex) {\n console.error(ex.stack);\n }\n };\n\n this.attachToDocument = function(doc) {\n if (this.$doc)\n this.terminate();\n\n this.$doc = doc;\n this.call(\"setValue\", [doc.getValue()]);\n doc.on(\"change\", this.changeListener, true);\n };\n\n this.changeListener = function(delta) {\n if (!this.deltaQueue) {\n this.deltaQueue = [];\n setTimeout(this.$sendDeltaQueue, 0);\n }\n if (delta.action == \"insert\")\n this.deltaQueue.push(delta.start, delta.lines);\n else\n this.deltaQueue.push(delta.start, delta.end);\n };\n\n this.$sendDeltaQueue = function() {\n var q = this.deltaQueue;\n if (!q) return;\n this.deltaQueue = null;\n if (q.length > 50 && q.length > this.$doc.getLength() >> 1) {\n this.call(\"setValue\", [this.$doc.getValue()]);\n } else\n this.emit(\"change\", {data: q});\n };\n\n}).call(WorkerClient.prototype);\n\n\nvar UIWorkerClient = function(topLevelNamespaces, mod, classname) {\n var main = null;\n var emitSync = false;\n var sender = Object.create(EventEmitter);\n\n var messageBuffer = [];\n var workerClient = new WorkerClient({\n messageBuffer: messageBuffer,\n terminate: function() {},\n postMessage: function(e) {\n messageBuffer.push(e);\n if (!main) return;\n if (emitSync)\n setTimeout(processNext);\n else\n processNext();\n }\n });\n\n workerClient.setEmitSync = function(val) { emitSync = val; };\n\n var processNext = function() {\n var msg = messageBuffer.shift();\n if (msg.command)\n main[msg.command].apply(main, msg.args);\n else if (msg.event)\n sender._signal(msg.event, msg.data);\n };\n\n sender.postMessage = function(msg) {\n workerClient.onMessage({data: msg});\n };\n sender.callback = function(data, callbackId) {\n this.postMessage({type: \"call\", id: callbackId, data: data});\n };\n sender.emit = function(name, data) {\n this.postMessage({type: \"event\", name: name, data: data});\n };\n\n config.loadModule([\"worker\", mod], function(Main) {\n main = new Main[classname](sender);\n while (messageBuffer.length)\n processNext();\n });\n\n return workerClient;\n};\n\nexports.UIWorkerClient = UIWorkerClient;\nexports.WorkerClient = WorkerClient;\nexports.createWorker = createWorker;\n\n\n});\n\nace.define(\"ace/placeholder\",[\"require\",\"exports\",\"module\",\"ace/range\",\"ace/lib/event_emitter\",\"ace/lib/oop\"], function(require, exports, module){\"use strict\";\nvar Range = require(\"./range\").Range;\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar oop = require(\"./lib/oop\");\nvar PlaceHolder = /** @class */ (function () {\n function PlaceHolder(session, length, pos, others, mainClass, othersClass) {\n var _self = this;\n this.length = length;\n this.session = session;\n this.doc = session.getDocument();\n this.mainClass = mainClass;\n this.othersClass = othersClass;\n this.$onUpdate = this.onUpdate.bind(this);\n this.doc.on(\"change\", this.$onUpdate, true);\n this.$others = others;\n this.$onCursorChange = function () {\n setTimeout(function () {\n _self.onCursorChange();\n });\n };\n this.$pos = pos;\n var undoStack = session.getUndoManager().$undoStack || session.getUndoManager().$undostack || { length: -1 };\n this.$undoStackDepth = undoStack.length;\n this.setup();\n session.selection.on(\"changeCursor\", this.$onCursorChange);\n }\n PlaceHolder.prototype.setup = function () {\n var _self = this;\n var doc = this.doc;\n var session = this.session;\n this.selectionBefore = session.selection.toJSON();\n if (session.selection.inMultiSelectMode)\n session.selection.toSingleRange();\n this.pos = doc.createAnchor(this.$pos.row, this.$pos.column);\n var pos = this.pos;\n pos.$insertRight = true;\n pos.detach();\n pos.markerId = session.addMarker(new Range(pos.row, pos.column, pos.row, pos.column + this.length), this.mainClass, null, false);\n this.others = [];\n this.$others.forEach(function (other) {\n var anchor = doc.createAnchor(other.row, other.column);\n anchor.$insertRight = true;\n anchor.detach();\n _self.others.push(anchor);\n });\n session.setUndoSelect(false);\n };\n PlaceHolder.prototype.showOtherMarkers = function () {\n if (this.othersActive)\n return;\n var session = this.session;\n var _self = this;\n this.othersActive = true;\n this.others.forEach(function (anchor) {\n anchor.markerId = session.addMarker(new Range(anchor.row, anchor.column, anchor.row, anchor.column + _self.length), _self.othersClass, null, false);\n });\n };\n PlaceHolder.prototype.hideOtherMarkers = function () {\n if (!this.othersActive)\n return;\n this.othersActive = false;\n for (var i = 0; i < this.others.length; i++) {\n this.session.removeMarker(this.others[i].markerId);\n }\n };\n PlaceHolder.prototype.onUpdate = function (delta) {\n if (this.$updating)\n return this.updateAnchors(delta);\n var range = delta;\n if (range.start.row !== range.end.row)\n return;\n if (range.start.row !== this.pos.row)\n return;\n this.$updating = true;\n var lengthDiff = delta.action === \"insert\" ? range.end.column - range.start.column : range.start.column - range.end.column;\n var inMainRange = range.start.column >= this.pos.column && range.start.column <= this.pos.column + this.length + 1;\n var distanceFromStart = range.start.column - this.pos.column;\n this.updateAnchors(delta);\n if (inMainRange)\n this.length += lengthDiff;\n if (inMainRange && !this.session.$fromUndo) {\n if (delta.action === 'insert') {\n for (var i = this.others.length - 1; i >= 0; i--) {\n var otherPos = this.others[i];\n var newPos = { row: otherPos.row, column: otherPos.column + distanceFromStart };\n this.doc.insertMergedLines(newPos, delta.lines);\n }\n }\n else if (delta.action === 'remove') {\n for (var i = this.others.length - 1; i >= 0; i--) {\n var otherPos = this.others[i];\n var newPos = { row: otherPos.row, column: otherPos.column + distanceFromStart };\n this.doc.remove(new Range(newPos.row, newPos.column, newPos.row, newPos.column - lengthDiff));\n }\n }\n }\n this.$updating = false;\n this.updateMarkers();\n };\n PlaceHolder.prototype.updateAnchors = function (delta) {\n this.pos.onChange(delta);\n for (var i = this.others.length; i--;)\n this.others[i].onChange(delta);\n this.updateMarkers();\n };\n PlaceHolder.prototype.updateMarkers = function () {\n if (this.$updating)\n return;\n var _self = this;\n var session = this.session;\n var updateMarker = function (pos, className) {\n session.removeMarker(pos.markerId);\n pos.markerId = session.addMarker(new Range(pos.row, pos.column, pos.row, pos.column + _self.length), className, null, false);\n };\n updateMarker(this.pos, this.mainClass);\n for (var i = this.others.length; i--;)\n updateMarker(this.others[i], this.othersClass);\n };\n PlaceHolder.prototype.onCursorChange = function (event) {\n if (this.$updating || !this.session)\n return;\n var pos = this.session.selection.getCursor();\n if (pos.row === this.pos.row && pos.column >= this.pos.column && pos.column <= this.pos.column + this.length) {\n this.showOtherMarkers();\n this._emit(\"cursorEnter\", event);\n }\n else {\n this.hideOtherMarkers();\n this._emit(\"cursorLeave\", event);\n }\n };\n PlaceHolder.prototype.detach = function () {\n this.session.removeMarker(this.pos && this.pos.markerId);\n this.hideOtherMarkers();\n this.doc.off(\"change\", this.$onUpdate);\n this.session.selection.off(\"changeCursor\", this.$onCursorChange);\n this.session.setUndoSelect(true);\n this.session = null;\n };\n PlaceHolder.prototype.cancel = function () {\n if (this.$undoStackDepth === -1)\n return;\n var undoManager = this.session.getUndoManager();\n var undosRequired = (undoManager.$undoStack || undoManager.$undostack).length - this.$undoStackDepth;\n for (var i = 0; i < undosRequired; i++) {\n undoManager.undo(this.session, true);\n }\n if (this.selectionBefore)\n this.session.selection.fromJSON(this.selectionBefore);\n };\n return PlaceHolder;\n}());\noop.implement(PlaceHolder.prototype, EventEmitter);\nexports.PlaceHolder = PlaceHolder;\n\n});\n\nace.define(\"ace/mouse/multi_select_handler\",[\"require\",\"exports\",\"module\",\"ace/lib/event\",\"ace/lib/useragent\"], function(require, exports, module){var event = require(\"../lib/event\");\nvar useragent = require(\"../lib/useragent\");\nfunction isSamePoint(p1, p2) {\n return p1.row == p2.row && p1.column == p2.column;\n}\nfunction onMouseDown(e) {\n var ev = e.domEvent;\n var alt = ev.altKey;\n var shift = ev.shiftKey;\n var ctrl = ev.ctrlKey;\n var accel = e.getAccelKey();\n var button = e.getButton();\n if (ctrl && useragent.isMac)\n button = ev.button;\n if (e.editor.inMultiSelectMode && button == 2) {\n e.editor.textInput.onContextMenu(e.domEvent);\n return;\n }\n if (!ctrl && !alt && !accel) {\n if (button === 0 && e.editor.inMultiSelectMode)\n e.editor.exitMultiSelectMode();\n return;\n }\n if (button !== 0)\n return;\n var editor = e.editor;\n var selection = editor.selection;\n var isMultiSelect = editor.inMultiSelectMode;\n var pos = e.getDocumentPosition();\n var cursor = selection.getCursor();\n var inSelection = e.inSelection() || (selection.isEmpty() && isSamePoint(pos, cursor));\n var mouseX = e.x, mouseY = e.y;\n var onMouseSelection = function (e) {\n mouseX = e.clientX;\n mouseY = e.clientY;\n };\n var session = editor.session;\n var screenAnchor = editor.renderer.pixelToScreenCoordinates(mouseX, mouseY);\n var screenCursor = screenAnchor;\n var selectionMode;\n if (editor.$mouseHandler.$enableJumpToDef) {\n if (ctrl && alt || accel && alt)\n selectionMode = shift ? \"block\" : \"add\";\n else if (alt && editor.$blockSelectEnabled)\n selectionMode = \"block\";\n }\n else {\n if (accel && !alt) {\n selectionMode = \"add\";\n if (!isMultiSelect && shift)\n return;\n }\n else if (alt && editor.$blockSelectEnabled) {\n selectionMode = \"block\";\n }\n }\n if (selectionMode && useragent.isMac && ev.ctrlKey) {\n editor.$mouseHandler.cancelContextMenu();\n }\n if (selectionMode == \"add\") {\n if (!isMultiSelect && inSelection)\n return; // dragging\n if (!isMultiSelect) {\n var range = selection.toOrientedRange();\n editor.addSelectionMarker(range);\n }\n var oldRange = selection.rangeList.rangeAtPoint(pos);\n editor.inVirtualSelectionMode = true;\n if (shift) {\n oldRange = null;\n range = selection.ranges[0] || range;\n editor.removeSelectionMarker(range);\n }\n editor.once(\"mouseup\", function () {\n var tmpSel = selection.toOrientedRange();\n if (oldRange && tmpSel.isEmpty() && isSamePoint(oldRange.cursor, tmpSel.cursor))\n selection.substractPoint(tmpSel.cursor);\n else {\n if (shift) {\n selection.substractPoint(range.cursor);\n }\n else if (range) {\n editor.removeSelectionMarker(range);\n selection.addRange(range);\n }\n selection.addRange(tmpSel);\n }\n editor.inVirtualSelectionMode = false;\n });\n }\n else if (selectionMode == \"block\") {\n e.stop();\n editor.inVirtualSelectionMode = true;\n var initialRange;\n var rectSel = [];\n var blockSelect = function () {\n var newCursor = editor.renderer.pixelToScreenCoordinates(mouseX, mouseY);\n var cursor = session.screenToDocumentPosition(newCursor.row, newCursor.column, newCursor.offsetX);\n if (isSamePoint(screenCursor, newCursor) && isSamePoint(cursor, selection.lead))\n return;\n screenCursor = newCursor;\n editor.selection.moveToPosition(cursor);\n editor.renderer.scrollCursorIntoView();\n editor.removeSelectionMarkers(rectSel);\n rectSel = selection.rectangularRangeBlock(screenCursor, screenAnchor);\n if (editor.$mouseHandler.$clickSelection && rectSel.length == 1 && rectSel[0].isEmpty())\n rectSel[0] = editor.$mouseHandler.$clickSelection.clone();\n rectSel.forEach(editor.addSelectionMarker, editor);\n editor.updateSelectionMarkers();\n };\n if (isMultiSelect && !accel) {\n selection.toSingleRange();\n }\n else if (!isMultiSelect && accel) {\n initialRange = selection.toOrientedRange();\n editor.addSelectionMarker(initialRange);\n }\n if (shift)\n screenAnchor = session.documentToScreenPosition(selection.lead);\n else\n selection.moveToPosition(pos);\n screenCursor = { row: -1, column: -1 };\n var onMouseSelectionEnd = function (e) {\n blockSelect();\n clearInterval(timerId);\n editor.removeSelectionMarkers(rectSel);\n if (!rectSel.length)\n rectSel = [selection.toOrientedRange()];\n if (initialRange) {\n editor.removeSelectionMarker(initialRange);\n selection.toSingleRange(initialRange);\n }\n for (var i = 0; i < rectSel.length; i++)\n selection.addRange(rectSel[i]);\n editor.inVirtualSelectionMode = false;\n editor.$mouseHandler.$clickSelection = null;\n };\n var onSelectionInterval = blockSelect;\n event.capture(editor.container, onMouseSelection, onMouseSelectionEnd);\n var timerId = setInterval(function () { onSelectionInterval(); }, 20);\n return e.preventDefault();\n }\n}\nexports.onMouseDown = onMouseDown;\n\n});\n\nace.define(\"ace/commands/multi_select_commands\",[\"require\",\"exports\",\"module\",\"ace/keyboard/hash_handler\"], function(require, exports, module){// commands to enter multiselect mode\nexports.defaultCommands = [{\n name: \"addCursorAbove\",\n description: \"Add cursor above\",\n exec: function (editor) { editor.selectMoreLines(-1); },\n bindKey: { win: \"Ctrl-Alt-Up\", mac: \"Ctrl-Alt-Up\" },\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"addCursorBelow\",\n description: \"Add cursor below\",\n exec: function (editor) { editor.selectMoreLines(1); },\n bindKey: { win: \"Ctrl-Alt-Down\", mac: \"Ctrl-Alt-Down\" },\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"addCursorAboveSkipCurrent\",\n description: \"Add cursor above (skip current)\",\n exec: function (editor) { editor.selectMoreLines(-1, true); },\n bindKey: { win: \"Ctrl-Alt-Shift-Up\", mac: \"Ctrl-Alt-Shift-Up\" },\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"addCursorBelowSkipCurrent\",\n description: \"Add cursor below (skip current)\",\n exec: function (editor) { editor.selectMoreLines(1, true); },\n bindKey: { win: \"Ctrl-Alt-Shift-Down\", mac: \"Ctrl-Alt-Shift-Down\" },\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"selectMoreBefore\",\n description: \"Select more before\",\n exec: function (editor) { editor.selectMore(-1); },\n bindKey: { win: \"Ctrl-Alt-Left\", mac: \"Ctrl-Alt-Left\" },\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"selectMoreAfter\",\n description: \"Select more after\",\n exec: function (editor) { editor.selectMore(1); },\n bindKey: { win: \"Ctrl-Alt-Right\", mac: \"Ctrl-Alt-Right\" },\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"selectNextBefore\",\n description: \"Select next before\",\n exec: function (editor) { editor.selectMore(-1, true); },\n bindKey: { win: \"Ctrl-Alt-Shift-Left\", mac: \"Ctrl-Alt-Shift-Left\" },\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"selectNextAfter\",\n description: \"Select next after\",\n exec: function (editor) { editor.selectMore(1, true); },\n bindKey: { win: \"Ctrl-Alt-Shift-Right\", mac: \"Ctrl-Alt-Shift-Right\" },\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"toggleSplitSelectionIntoLines\",\n description: \"Split selection into lines\",\n exec: function (editor) {\n if (editor.multiSelect.rangeCount > 1)\n editor.multiSelect.joinSelections();\n else\n editor.multiSelect.splitIntoLines();\n },\n bindKey: { win: \"Ctrl-Alt-L\", mac: \"Ctrl-Alt-L\" },\n readOnly: true\n }, {\n name: \"splitSelectionIntoLines\",\n description: \"Split into lines\",\n exec: function (editor) { editor.multiSelect.splitIntoLines(); },\n readOnly: true\n }, {\n name: \"alignCursors\",\n description: \"Align cursors\",\n exec: function (editor) { editor.alignCursors(); },\n bindKey: { win: \"Ctrl-Alt-A\", mac: \"Ctrl-Alt-A\" },\n scrollIntoView: \"cursor\"\n }, {\n name: \"findAll\",\n description: \"Find all\",\n exec: function (editor) { editor.findAll(); },\n bindKey: { win: \"Ctrl-Alt-K\", mac: \"Ctrl-Alt-G\" },\n scrollIntoView: \"cursor\",\n readOnly: true\n }];\nexports.multiSelectCommands = [{\n name: \"singleSelection\",\n description: \"Single selection\",\n bindKey: \"esc\",\n exec: function (editor) { editor.exitMultiSelectMode(); },\n scrollIntoView: \"cursor\",\n readOnly: true,\n isAvailable: function (editor) { return editor && editor.inMultiSelectMode; }\n }];\nvar HashHandler = require(\"../keyboard/hash_handler\").HashHandler;\nexports.keyboardHandler = new HashHandler(exports.multiSelectCommands);\n\n});\n\nace.define(\"ace/multi_select\",[\"require\",\"exports\",\"module\",\"ace/range_list\",\"ace/range\",\"ace/selection\",\"ace/mouse/multi_select_handler\",\"ace/lib/event\",\"ace/lib/lang\",\"ace/commands/multi_select_commands\",\"ace/search\",\"ace/edit_session\",\"ace/editor\",\"ace/config\"], function(require, exports, module){var RangeList = require(\"./range_list\").RangeList;\nvar Range = require(\"./range\").Range;\nvar Selection = require(\"./selection\").Selection;\nvar onMouseDown = require(\"./mouse/multi_select_handler\").onMouseDown;\nvar event = require(\"./lib/event\");\nvar lang = require(\"./lib/lang\");\nvar commands = require(\"./commands/multi_select_commands\");\nexports.commands = commands.defaultCommands.concat(commands.multiSelectCommands);\nvar Search = require(\"./search\").Search;\nvar search = new Search();\nfunction find(session, needle, dir) {\n search.$options.wrap = true;\n search.$options.needle = needle;\n search.$options.backwards = dir == -1;\n return search.find(session);\n}\nvar EditSession = require(\"./edit_session\").EditSession;\n(function () {\n this.getSelectionMarkers = function () {\n return this.$selectionMarkers;\n };\n}).call(EditSession.prototype);\n(function () {\n this.ranges = null;\n this.rangeList = null;\n this.addRange = function (range, $blockChangeEvents) {\n if (!range)\n return;\n if (!this.inMultiSelectMode && this.rangeCount === 0) {\n var oldRange = this.toOrientedRange();\n this.rangeList.add(oldRange);\n this.rangeList.add(range);\n if (this.rangeList.ranges.length != 2) {\n this.rangeList.removeAll();\n return $blockChangeEvents || this.fromOrientedRange(range);\n }\n this.rangeList.removeAll();\n this.rangeList.add(oldRange);\n this.$onAddRange(oldRange);\n }\n if (!range.cursor)\n range.cursor = range.end;\n var removed = this.rangeList.add(range);\n this.$onAddRange(range);\n if (removed.length)\n this.$onRemoveRange(removed);\n if (this.rangeCount > 1 && !this.inMultiSelectMode) {\n this._signal(\"multiSelect\");\n this.inMultiSelectMode = true;\n this.session.$undoSelect = false;\n this.rangeList.attach(this.session);\n }\n return $blockChangeEvents || this.fromOrientedRange(range);\n };\n this.toSingleRange = function (range) {\n range = range || this.ranges[0];\n var removed = this.rangeList.removeAll();\n if (removed.length)\n this.$onRemoveRange(removed);\n range && this.fromOrientedRange(range);\n };\n this.substractPoint = function (pos) {\n var removed = this.rangeList.substractPoint(pos);\n if (removed) {\n this.$onRemoveRange(removed);\n return removed[0];\n }\n };\n this.mergeOverlappingRanges = function () {\n var removed = this.rangeList.merge();\n if (removed.length)\n this.$onRemoveRange(removed);\n };\n this.$onAddRange = function (range) {\n this.rangeCount = this.rangeList.ranges.length;\n this.ranges.unshift(range);\n this._signal(\"addRange\", { range: range });\n };\n this.$onRemoveRange = function (removed) {\n this.rangeCount = this.rangeList.ranges.length;\n if (this.rangeCount == 1 && this.inMultiSelectMode) {\n var lastRange = this.rangeList.ranges.pop();\n removed.push(lastRange);\n this.rangeCount = 0;\n }\n for (var i = removed.length; i--;) {\n var index = this.ranges.indexOf(removed[i]);\n this.ranges.splice(index, 1);\n }\n this._signal(\"removeRange\", { ranges: removed });\n if (this.rangeCount === 0 && this.inMultiSelectMode) {\n this.inMultiSelectMode = false;\n this._signal(\"singleSelect\");\n this.session.$undoSelect = true;\n this.rangeList.detach(this.session);\n }\n lastRange = lastRange || this.ranges[0];\n if (lastRange && !lastRange.isEqual(this.getRange()))\n this.fromOrientedRange(lastRange);\n };\n this.$initRangeList = function () {\n if (this.rangeList)\n return;\n this.rangeList = new RangeList();\n this.ranges = [];\n this.rangeCount = 0;\n };\n this.getAllRanges = function () {\n return this.rangeCount ? this.rangeList.ranges.concat() : [this.getRange()];\n };\n this.splitIntoLines = function () {\n var ranges = this.ranges.length ? this.ranges : [this.getRange()];\n var newRanges = [];\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i];\n var row = range.start.row;\n var endRow = range.end.row;\n if (row === endRow) {\n newRanges.push(range.clone());\n }\n else {\n newRanges.push(new Range(row, range.start.column, row, this.session.getLine(row).length));\n while (++row < endRow)\n newRanges.push(this.getLineRange(row, true));\n newRanges.push(new Range(endRow, 0, endRow, range.end.column));\n }\n if (i == 0 && !this.isBackwards())\n newRanges = newRanges.reverse();\n }\n this.toSingleRange();\n for (var i = newRanges.length; i--;)\n this.addRange(newRanges[i]);\n };\n this.joinSelections = function () {\n var ranges = this.rangeList.ranges;\n var lastRange = ranges[ranges.length - 1];\n var range = Range.fromPoints(ranges[0].start, lastRange.end);\n this.toSingleRange();\n this.setSelectionRange(range, lastRange.cursor == lastRange.start);\n };\n this.toggleBlockSelection = function () {\n if (this.rangeCount > 1) {\n var ranges = this.rangeList.ranges;\n var lastRange = ranges[ranges.length - 1];\n var range = Range.fromPoints(ranges[0].start, lastRange.end);\n this.toSingleRange();\n this.setSelectionRange(range, lastRange.cursor == lastRange.start);\n }\n else {\n var cursor = this.session.documentToScreenPosition(this.cursor);\n var anchor = this.session.documentToScreenPosition(this.anchor);\n var rectSel = this.rectangularRangeBlock(cursor, anchor);\n rectSel.forEach(this.addRange, this);\n }\n };\n this.rectangularRangeBlock = function (screenCursor, screenAnchor, includeEmptyLines) {\n var rectSel = [];\n var xBackwards = screenCursor.column < screenAnchor.column;\n if (xBackwards) {\n var startColumn = screenCursor.column;\n var endColumn = screenAnchor.column;\n var startOffsetX = screenCursor.offsetX;\n var endOffsetX = screenAnchor.offsetX;\n }\n else {\n var startColumn = screenAnchor.column;\n var endColumn = screenCursor.column;\n var startOffsetX = screenAnchor.offsetX;\n var endOffsetX = screenCursor.offsetX;\n }\n var yBackwards = screenCursor.row < screenAnchor.row;\n if (yBackwards) {\n var startRow = screenCursor.row;\n var endRow = screenAnchor.row;\n }\n else {\n var startRow = screenAnchor.row;\n var endRow = screenCursor.row;\n }\n if (startColumn < 0)\n startColumn = 0;\n if (startRow < 0)\n startRow = 0;\n if (startRow == endRow)\n includeEmptyLines = true;\n var docEnd;\n for (var row = startRow; row <= endRow; row++) {\n var range = Range.fromPoints(this.session.screenToDocumentPosition(row, startColumn, startOffsetX), this.session.screenToDocumentPosition(row, endColumn, endOffsetX));\n if (range.isEmpty()) {\n if (docEnd && isSamePoint(range.end, docEnd))\n break;\n docEnd = range.end;\n }\n range.cursor = xBackwards ? range.start : range.end;\n rectSel.push(range);\n }\n if (yBackwards)\n rectSel.reverse();\n if (!includeEmptyLines) {\n var end = rectSel.length - 1;\n while (rectSel[end].isEmpty() && end > 0)\n end--;\n if (end > 0) {\n var start = 0;\n while (rectSel[start].isEmpty())\n start++;\n }\n for (var i = end; i >= start; i--) {\n if (rectSel[i].isEmpty())\n rectSel.splice(i, 1);\n }\n }\n return rectSel;\n };\n}).call(Selection.prototype);\nvar Editor = require(\"./editor\").Editor;\n(function () {\n this.updateSelectionMarkers = function () {\n this.renderer.updateCursor();\n this.renderer.updateBackMarkers();\n };\n this.addSelectionMarker = function (orientedRange) {\n if (!orientedRange.cursor)\n orientedRange.cursor = orientedRange.end;\n var style = this.getSelectionStyle();\n orientedRange.marker = this.session.addMarker(orientedRange, \"ace_selection\", style);\n this.session.$selectionMarkers.push(orientedRange);\n this.session.selectionMarkerCount = this.session.$selectionMarkers.length;\n return orientedRange;\n };\n this.removeSelectionMarker = function (range) {\n if (!range.marker)\n return;\n this.session.removeMarker(range.marker);\n var index = this.session.$selectionMarkers.indexOf(range);\n if (index != -1)\n this.session.$selectionMarkers.splice(index, 1);\n this.session.selectionMarkerCount = this.session.$selectionMarkers.length;\n };\n this.removeSelectionMarkers = function (ranges) {\n var markerList = this.session.$selectionMarkers;\n for (var i = ranges.length; i--;) {\n var range = ranges[i];\n if (!range.marker)\n continue;\n this.session.removeMarker(range.marker);\n var index = markerList.indexOf(range);\n if (index != -1)\n markerList.splice(index, 1);\n }\n this.session.selectionMarkerCount = markerList.length;\n };\n this.$onAddRange = function (e) {\n this.addSelectionMarker(e.range);\n this.renderer.updateCursor();\n this.renderer.updateBackMarkers();\n };\n this.$onRemoveRange = function (e) {\n this.removeSelectionMarkers(e.ranges);\n this.renderer.updateCursor();\n this.renderer.updateBackMarkers();\n };\n this.$onMultiSelect = function (e) {\n if (this.inMultiSelectMode)\n return;\n this.inMultiSelectMode = true;\n this.setStyle(\"ace_multiselect\");\n this.keyBinding.addKeyboardHandler(commands.keyboardHandler);\n this.commands.setDefaultHandler(\"exec\", this.$onMultiSelectExec);\n this.renderer.updateCursor();\n this.renderer.updateBackMarkers();\n };\n this.$onSingleSelect = function (e) {\n if (this.session.multiSelect.inVirtualMode)\n return;\n this.inMultiSelectMode = false;\n this.unsetStyle(\"ace_multiselect\");\n this.keyBinding.removeKeyboardHandler(commands.keyboardHandler);\n this.commands.removeDefaultHandler(\"exec\", this.$onMultiSelectExec);\n this.renderer.updateCursor();\n this.renderer.updateBackMarkers();\n this._emit(\"changeSelection\");\n };\n this.$onMultiSelectExec = function (e) {\n var command = e.command;\n var editor = e.editor;\n if (!editor.multiSelect)\n return;\n if (!command.multiSelectAction) {\n var result = command.exec(editor, e.args || {});\n editor.multiSelect.addRange(editor.multiSelect.toOrientedRange());\n editor.multiSelect.mergeOverlappingRanges();\n }\n else if (command.multiSelectAction == \"forEach\") {\n result = editor.forEachSelection(command, e.args);\n }\n else if (command.multiSelectAction == \"forEachLine\") {\n result = editor.forEachSelection(command, e.args, true);\n }\n else if (command.multiSelectAction == \"single\") {\n editor.exitMultiSelectMode();\n result = command.exec(editor, e.args || {});\n }\n else {\n result = command.multiSelectAction(editor, e.args || {});\n }\n return result;\n };\n this.forEachSelection = function (cmd, args, options) {\n if (this.inVirtualSelectionMode)\n return;\n var keepOrder = options && options.keepOrder;\n var $byLines = options == true || options && options.$byLines;\n var session = this.session;\n var selection = this.selection;\n var rangeList = selection.rangeList;\n var ranges = (keepOrder ? selection : rangeList).ranges;\n var result;\n if (!ranges.length)\n return cmd.exec ? cmd.exec(this, args || {}) : cmd(this, args || {});\n var reg = selection._eventRegistry;\n selection._eventRegistry = {};\n var tmpSel = new Selection(session);\n this.inVirtualSelectionMode = true;\n for (var i = ranges.length; i--;) {\n if ($byLines) {\n while (i > 0 && ranges[i].start.row == ranges[i - 1].end.row)\n i--;\n }\n tmpSel.fromOrientedRange(ranges[i]);\n tmpSel.index = i;\n this.selection = session.selection = tmpSel;\n var cmdResult = cmd.exec ? cmd.exec(this, args || {}) : cmd(this, args || {});\n if (!result && cmdResult !== undefined)\n result = cmdResult;\n tmpSel.toOrientedRange(ranges[i]);\n }\n tmpSel.detach();\n this.selection = session.selection = selection;\n this.inVirtualSelectionMode = false;\n selection._eventRegistry = reg;\n selection.mergeOverlappingRanges();\n if (selection.ranges[0])\n selection.fromOrientedRange(selection.ranges[0]);\n var anim = this.renderer.$scrollAnimation;\n this.onCursorChange();\n this.onSelectionChange();\n if (anim && anim.from == anim.to)\n this.renderer.animateScrolling(anim.from);\n return result;\n };\n this.exitMultiSelectMode = function () {\n if (!this.inMultiSelectMode || this.inVirtualSelectionMode)\n return;\n this.multiSelect.toSingleRange();\n };\n this.getSelectedText = function () {\n var text = \"\";\n if (this.inMultiSelectMode && !this.inVirtualSelectionMode) {\n var ranges = this.multiSelect.rangeList.ranges;\n var buf = [];\n for (var i = 0; i < ranges.length; i++) {\n buf.push(this.session.getTextRange(ranges[i]));\n }\n var nl = this.session.getDocument().getNewLineCharacter();\n text = buf.join(nl);\n if (text.length == (buf.length - 1) * nl.length)\n text = \"\";\n }\n else if (!this.selection.isEmpty()) {\n text = this.session.getTextRange(this.getSelectionRange());\n }\n return text;\n };\n this.$checkMultiselectChange = function (e, anchor) {\n if (this.inMultiSelectMode && !this.inVirtualSelectionMode) {\n var range = this.multiSelect.ranges[0];\n if (this.multiSelect.isEmpty() && anchor == this.multiSelect.anchor)\n return;\n var pos = anchor == this.multiSelect.anchor\n ? range.cursor == range.start ? range.end : range.start\n : range.cursor;\n if (pos.row != anchor.row\n || this.session.$clipPositionToDocument(pos.row, pos.column).column != anchor.column)\n this.multiSelect.toSingleRange(this.multiSelect.toOrientedRange());\n else\n this.multiSelect.mergeOverlappingRanges();\n }\n };\n this.findAll = function (needle, options, additive) {\n options = options || {};\n options.needle = needle || options.needle;\n if (options.needle == undefined) {\n var range = this.selection.isEmpty()\n ? this.selection.getWordRange()\n : this.selection.getRange();\n options.needle = this.session.getTextRange(range);\n }\n this.$search.set(options);\n var ranges = this.$search.findAll(this.session);\n if (!ranges.length)\n return 0;\n var selection = this.multiSelect;\n if (!additive)\n selection.toSingleRange(ranges[0]);\n for (var i = ranges.length; i--;)\n selection.addRange(ranges[i], true);\n if (range && selection.rangeList.rangeAtPoint(range.start))\n selection.addRange(range, true);\n return ranges.length;\n };\n this.selectMoreLines = function (dir, skip) {\n var range = this.selection.toOrientedRange();\n var isBackwards = range.cursor == range.end;\n var screenLead = this.session.documentToScreenPosition(range.cursor);\n if (this.selection.$desiredColumn)\n screenLead.column = this.selection.$desiredColumn;\n var lead = this.session.screenToDocumentPosition(screenLead.row + dir, screenLead.column);\n if (!range.isEmpty()) {\n var screenAnchor = this.session.documentToScreenPosition(isBackwards ? range.end : range.start);\n var anchor = this.session.screenToDocumentPosition(screenAnchor.row + dir, screenAnchor.column);\n }\n else {\n var anchor = lead;\n }\n if (isBackwards) {\n var newRange = Range.fromPoints(lead, anchor);\n newRange.cursor = newRange.start;\n }\n else {\n var newRange = Range.fromPoints(anchor, lead);\n newRange.cursor = newRange.end;\n }\n newRange.desiredColumn = screenLead.column;\n if (!this.selection.inMultiSelectMode) {\n this.selection.addRange(range);\n }\n else {\n if (skip)\n var toRemove = range.cursor;\n }\n this.selection.addRange(newRange);\n if (toRemove)\n this.selection.substractPoint(toRemove);\n };\n this.transposeSelections = function (dir) {\n var session = this.session;\n var sel = session.multiSelect;\n var all = sel.ranges;\n for (var i = all.length; i--;) {\n var range = all[i];\n if (range.isEmpty()) {\n var tmp = session.getWordRange(range.start.row, range.start.column);\n range.start.row = tmp.start.row;\n range.start.column = tmp.start.column;\n range.end.row = tmp.end.row;\n range.end.column = tmp.end.column;\n }\n }\n sel.mergeOverlappingRanges();\n var words = [];\n for (var i = all.length; i--;) {\n var range = all[i];\n words.unshift(session.getTextRange(range));\n }\n if (dir < 0)\n words.unshift(words.pop());\n else\n words.push(words.shift());\n for (var i = all.length; i--;) {\n var range = all[i];\n var tmp = range.clone();\n session.replace(range, words[i]);\n range.start.row = tmp.start.row;\n range.start.column = tmp.start.column;\n }\n sel.fromOrientedRange(sel.ranges[0]);\n };\n this.selectMore = function (dir, skip, stopAtFirst) {\n var session = this.session;\n var sel = session.multiSelect;\n var range = sel.toOrientedRange();\n if (range.isEmpty()) {\n range = session.getWordRange(range.start.row, range.start.column);\n range.cursor = dir == -1 ? range.start : range.end;\n this.multiSelect.addRange(range);\n if (stopAtFirst)\n return;\n }\n var needle = session.getTextRange(range);\n var newRange = find(session, needle, dir);\n if (newRange) {\n newRange.cursor = dir == -1 ? newRange.start : newRange.end;\n this.session.unfold(newRange);\n this.multiSelect.addRange(newRange);\n this.renderer.scrollCursorIntoView(null, 0.5);\n }\n if (skip)\n this.multiSelect.substractPoint(range.cursor);\n };\n this.alignCursors = function () {\n var session = this.session;\n var sel = session.multiSelect;\n var ranges = sel.ranges;\n var row = -1;\n var sameRowRanges = ranges.filter(function (r) {\n if (r.cursor.row == row)\n return true;\n row = r.cursor.row;\n });\n if (!ranges.length || sameRowRanges.length == ranges.length - 1) {\n var range = this.selection.getRange();\n var fr = range.start.row, lr = range.end.row;\n var guessRange = fr == lr;\n if (guessRange) {\n var max = this.session.getLength();\n var line;\n do {\n line = this.session.getLine(lr);\n } while (/[=:]/.test(line) && ++lr < max);\n do {\n line = this.session.getLine(fr);\n } while (/[=:]/.test(line) && --fr > 0);\n if (fr < 0)\n fr = 0;\n if (lr >= max)\n lr = max - 1;\n }\n var lines = this.session.removeFullLines(fr, lr);\n lines = this.$reAlignText(lines, guessRange);\n this.session.insert({ row: fr, column: 0 }, lines.join(\"\\n\") + \"\\n\");\n if (!guessRange) {\n range.start.column = 0;\n range.end.column = lines[lines.length - 1].length;\n }\n this.selection.setRange(range);\n }\n else {\n sameRowRanges.forEach(function (r) {\n sel.substractPoint(r.cursor);\n });\n var maxCol = 0;\n var minSpace = Infinity;\n var spaceOffsets = ranges.map(function (r) {\n var p = r.cursor;\n var line = session.getLine(p.row);\n var spaceOffset = line.substr(p.column).search(/\\S/g);\n if (spaceOffset == -1)\n spaceOffset = 0;\n if (p.column > maxCol)\n maxCol = p.column;\n if (spaceOffset < minSpace)\n minSpace = spaceOffset;\n return spaceOffset;\n });\n ranges.forEach(function (r, i) {\n var p = r.cursor;\n var l = maxCol - p.column;\n var d = spaceOffsets[i] - minSpace;\n if (l > d)\n session.insert(p, lang.stringRepeat(\" \", l - d));\n else\n session.remove(new Range(p.row, p.column, p.row, p.column - l + d));\n r.start.column = r.end.column = maxCol;\n r.start.row = r.end.row = p.row;\n r.cursor = r.end;\n });\n sel.fromOrientedRange(ranges[0]);\n this.renderer.updateCursor();\n this.renderer.updateBackMarkers();\n }\n };\n this.$reAlignText = function (lines, forceLeft) {\n var isLeftAligned = true, isRightAligned = true;\n var startW, textW, endW;\n return lines.map(function (line) {\n var m = line.match(/(\\s*)(.*?)(\\s*)([=:].*)/);\n if (!m)\n return [line];\n if (startW == null) {\n startW = m[1].length;\n textW = m[2].length;\n endW = m[3].length;\n return m;\n }\n if (startW + textW + endW != m[1].length + m[2].length + m[3].length)\n isRightAligned = false;\n if (startW != m[1].length)\n isLeftAligned = false;\n if (startW > m[1].length)\n startW = m[1].length;\n if (textW < m[2].length)\n textW = m[2].length;\n if (endW > m[3].length)\n endW = m[3].length;\n return m;\n }).map(forceLeft ? alignLeft :\n isLeftAligned ? isRightAligned ? alignRight : alignLeft : unAlign);\n function spaces(n) {\n return lang.stringRepeat(\" \", n);\n }\n function alignLeft(m) {\n return !m[2] ? m[0] : spaces(startW) + m[2]\n + spaces(textW - m[2].length + endW)\n + m[4].replace(/^([=:])\\s+/, \"$1 \");\n }\n function alignRight(m) {\n return !m[2] ? m[0] : spaces(startW + textW - m[2].length) + m[2]\n + spaces(endW)\n + m[4].replace(/^([=:])\\s+/, \"$1 \");\n }\n function unAlign(m) {\n return !m[2] ? m[0] : spaces(startW) + m[2]\n + spaces(endW)\n + m[4].replace(/^([=:])\\s+/, \"$1 \");\n }\n };\n}).call(Editor.prototype);\nfunction isSamePoint(p1, p2) {\n return p1.row == p2.row && p1.column == p2.column;\n}\nexports.onSessionChange = function (e) {\n var session = e.session;\n if (session && !session.multiSelect) {\n session.$selectionMarkers = [];\n session.selection.$initRangeList();\n session.multiSelect = session.selection;\n }\n this.multiSelect = session && session.multiSelect;\n var oldSession = e.oldSession;\n if (oldSession) {\n oldSession.multiSelect.off(\"addRange\", this.$onAddRange);\n oldSession.multiSelect.off(\"removeRange\", this.$onRemoveRange);\n oldSession.multiSelect.off(\"multiSelect\", this.$onMultiSelect);\n oldSession.multiSelect.off(\"singleSelect\", this.$onSingleSelect);\n oldSession.multiSelect.lead.off(\"change\", this.$checkMultiselectChange);\n oldSession.multiSelect.anchor.off(\"change\", this.$checkMultiselectChange);\n }\n if (session) {\n session.multiSelect.on(\"addRange\", this.$onAddRange);\n session.multiSelect.on(\"removeRange\", this.$onRemoveRange);\n session.multiSelect.on(\"multiSelect\", this.$onMultiSelect);\n session.multiSelect.on(\"singleSelect\", this.$onSingleSelect);\n session.multiSelect.lead.on(\"change\", this.$checkMultiselectChange);\n session.multiSelect.anchor.on(\"change\", this.$checkMultiselectChange);\n }\n if (session && this.inMultiSelectMode != session.selection.inMultiSelectMode) {\n if (session.selection.inMultiSelectMode)\n this.$onMultiSelect();\n else\n this.$onSingleSelect();\n }\n};\nfunction MultiSelect(editor) {\n if (editor.$multiselectOnSessionChange)\n return;\n editor.$onAddRange = editor.$onAddRange.bind(editor);\n editor.$onRemoveRange = editor.$onRemoveRange.bind(editor);\n editor.$onMultiSelect = editor.$onMultiSelect.bind(editor);\n editor.$onSingleSelect = editor.$onSingleSelect.bind(editor);\n editor.$multiselectOnSessionChange = exports.onSessionChange.bind(editor);\n editor.$checkMultiselectChange = editor.$checkMultiselectChange.bind(editor);\n editor.$multiselectOnSessionChange(editor);\n editor.on(\"changeSession\", editor.$multiselectOnSessionChange);\n editor.on(\"mousedown\", onMouseDown);\n editor.commands.addCommands(commands.defaultCommands);\n addAltCursorListeners(editor);\n}\nfunction addAltCursorListeners(editor) {\n if (!editor.textInput)\n return;\n var el = editor.textInput.getElement();\n var altCursor = false;\n event.addListener(el, \"keydown\", function (e) {\n var altDown = e.keyCode == 18 && !(e.ctrlKey || e.shiftKey || e.metaKey);\n if (editor.$blockSelectEnabled && altDown) {\n if (!altCursor) {\n editor.renderer.setMouseCursor(\"crosshair\");\n altCursor = true;\n }\n }\n else if (altCursor) {\n reset();\n }\n }, editor);\n event.addListener(el, \"keyup\", reset, editor);\n event.addListener(el, \"blur\", reset, editor);\n function reset(e) {\n if (altCursor) {\n editor.renderer.setMouseCursor(\"\");\n altCursor = false;\n }\n }\n}\nexports.MultiSelect = MultiSelect;\nrequire(\"./config\").defineOptions(Editor.prototype, \"editor\", {\n enableMultiselect: {\n set: function (val) {\n MultiSelect(this);\n if (val) {\n this.on(\"mousedown\", onMouseDown);\n }\n else {\n this.off(\"mousedown\", onMouseDown);\n }\n },\n value: true\n },\n enableBlockSelect: {\n set: function (val) {\n this.$blockSelectEnabled = val;\n },\n value: true\n }\n});\n\n});\n\nace.define(\"ace/mode/folding/fold_mode\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar Range = require(\"../../range\").Range;\nvar FoldMode = exports.FoldMode = function () { };\n(function () {\n this.foldingStartMarker = null;\n this.foldingStopMarker = null;\n this.getFoldWidget = function (session, foldStyle, row) {\n var line = session.getLine(row);\n if (this.foldingStartMarker.test(line))\n return \"start\";\n if (foldStyle == \"markbeginend\"\n && this.foldingStopMarker\n && this.foldingStopMarker.test(line))\n return \"end\";\n return \"\";\n };\n this.getFoldWidgetRange = function (session, foldStyle, row) {\n return null;\n };\n this.indentationBlock = function (session, row, column) {\n var re = /\\S/;\n var line = session.getLine(row);\n var startLevel = line.search(re);\n if (startLevel == -1)\n return;\n var startColumn = column || line.length;\n var maxRow = session.getLength();\n var startRow = row;\n var endRow = row;\n while (++row < maxRow) {\n var level = session.getLine(row).search(re);\n if (level == -1)\n continue;\n if (level <= startLevel) {\n var token = session.getTokenAt(row, 0);\n if (!token || token.type !== \"string\")\n break;\n }\n endRow = row;\n }\n if (endRow > startRow) {\n var endColumn = session.getLine(endRow).length;\n return new Range(startRow, startColumn, endRow, endColumn);\n }\n };\n this.openingBracketBlock = function (session, bracket, row, column, typeRe) {\n var start = { row: row, column: column + 1 };\n var end = session.$findClosingBracket(bracket, start, typeRe);\n if (!end)\n return;\n var fw = session.foldWidgets[end.row];\n if (fw == null)\n fw = session.getFoldWidget(end.row);\n if (fw == \"start\" && end.row > start.row) {\n end.row--;\n end.column = session.getLine(end.row).length;\n }\n return Range.fromPoints(start, end);\n };\n this.closingBracketBlock = function (session, bracket, row, column, typeRe) {\n var end = { row: row, column: column };\n var start = session.$findOpeningBracket(bracket, end);\n if (!start)\n return;\n start.column++;\n end.column--;\n return Range.fromPoints(start, end);\n };\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/ext/error_marker\",[\"require\",\"exports\",\"module\",\"ace/line_widgets\",\"ace/lib/dom\",\"ace/range\",\"ace/config\"], function(require, exports, module){\"use strict\";\nvar LineWidgets = require(\"../line_widgets\").LineWidgets;\nvar dom = require(\"../lib/dom\");\nvar Range = require(\"../range\").Range;\nvar nls = require(\"../config\").nls;\nfunction binarySearch(array, needle, comparator) {\n var first = 0;\n var last = array.length - 1;\n while (first <= last) {\n var mid = (first + last) >> 1;\n var c = comparator(needle, array[mid]);\n if (c > 0)\n first = mid + 1;\n else if (c < 0)\n last = mid - 1;\n else\n return mid;\n }\n return -(first + 1);\n}\nfunction findAnnotations(session, row, dir) {\n var annotations = session.getAnnotations().sort(Range.comparePoints);\n if (!annotations.length)\n return;\n var i = binarySearch(annotations, { row: row, column: -1 }, Range.comparePoints);\n if (i < 0)\n i = -i - 1;\n if (i >= annotations.length)\n i = dir > 0 ? 0 : annotations.length - 1;\n else if (i === 0 && dir < 0)\n i = annotations.length - 1;\n var annotation = annotations[i];\n if (!annotation || !dir)\n return;\n if (annotation.row === row) {\n do {\n annotation = annotations[i += dir];\n } while (annotation && annotation.row === row);\n if (!annotation)\n return annotations.slice();\n }\n var matched = [];\n row = annotation.row;\n do {\n matched[dir < 0 ? \"unshift\" : \"push\"](annotation);\n annotation = annotations[i += dir];\n } while (annotation && annotation.row == row);\n return matched.length && matched;\n}\nexports.showErrorMarker = function (editor, dir) {\n var session = editor.session;\n if (!session.widgetManager) {\n session.widgetManager = new LineWidgets(session);\n session.widgetManager.attach(editor);\n }\n var pos = editor.getCursorPosition();\n var row = pos.row;\n var oldWidget = session.widgetManager.getWidgetsAtRow(row).filter(function (w) {\n return w.type == \"errorMarker\";\n })[0];\n if (oldWidget) {\n oldWidget.destroy();\n }\n else {\n row -= dir;\n }\n var annotations = findAnnotations(session, row, dir);\n var gutterAnno;\n if (annotations) {\n var annotation = annotations[0];\n pos.column = (annotation.pos && typeof annotation.column != \"number\"\n ? annotation.pos.sc\n : annotation.column) || 0;\n pos.row = annotation.row;\n gutterAnno = editor.renderer.$gutterLayer.$annotations[pos.row];\n }\n else if (oldWidget) {\n return;\n }\n else {\n gutterAnno = {\n text: [nls(\"Looks good!\")],\n className: \"ace_ok\"\n };\n }\n editor.session.unfold(pos.row);\n editor.selection.moveToPosition(pos);\n var w = {\n row: pos.row,\n fixedWidth: true,\n coverGutter: true,\n el: dom.createElement(\"div\"),\n type: \"errorMarker\"\n };\n var el = w.el.appendChild(dom.createElement(\"div\"));\n var arrow = w.el.appendChild(dom.createElement(\"div\"));\n arrow.className = \"error_widget_arrow \" + gutterAnno.className;\n var left = editor.renderer.$cursorLayer\n .getPixelPosition(pos).left;\n arrow.style.left = left + editor.renderer.gutterWidth - 5 + \"px\";\n w.el.className = \"error_widget_wrapper\";\n el.className = \"error_widget \" + gutterAnno.className;\n el.innerHTML = gutterAnno.text.join(\"
    \");\n el.appendChild(dom.createElement(\"div\"));\n var kb = function (_, hashId, keyString) {\n if (hashId === 0 && (keyString === \"esc\" || keyString === \"return\")) {\n w.destroy();\n return { command: \"null\" };\n }\n };\n w.destroy = function () {\n if (editor.$mouseHandler.isMousePressed)\n return;\n editor.keyBinding.removeKeyboardHandler(kb);\n session.widgetManager.removeLineWidget(w);\n editor.off(\"changeSelection\", w.destroy);\n editor.off(\"changeSession\", w.destroy);\n editor.off(\"mouseup\", w.destroy);\n editor.off(\"change\", w.destroy);\n };\n editor.keyBinding.addKeyboardHandler(kb);\n editor.on(\"changeSelection\", w.destroy);\n editor.on(\"changeSession\", w.destroy);\n editor.on(\"mouseup\", w.destroy);\n editor.on(\"change\", w.destroy);\n editor.session.widgetManager.addLineWidget(w);\n w.el.onmousedown = editor.focus.bind(editor);\n editor.renderer.scrollCursorIntoView(null, 0.5, { bottom: w.el.offsetHeight });\n};\ndom.importCssString(\"\\n .error_widget_wrapper {\\n background: inherit;\\n color: inherit;\\n border:none\\n }\\n .error_widget {\\n border-top: solid 2px;\\n border-bottom: solid 2px;\\n margin: 5px 0;\\n padding: 10px 40px;\\n white-space: pre-wrap;\\n }\\n .error_widget.ace_error, .error_widget_arrow.ace_error{\\n border-color: #ff5a5a\\n }\\n .error_widget.ace_warning, .error_widget_arrow.ace_warning{\\n border-color: #F1D817\\n }\\n .error_widget.ace_info, .error_widget_arrow.ace_info{\\n border-color: #5a5a5a\\n }\\n .error_widget.ace_ok, .error_widget_arrow.ace_ok{\\n border-color: #5aaa5a\\n }\\n .error_widget_arrow {\\n position: absolute;\\n border: solid 5px;\\n border-top-color: transparent!important;\\n border-right-color: transparent!important;\\n border-left-color: transparent!important;\\n top: -5px;\\n }\\n\", \"error_marker.css\", false);\n\n});\n\nace.define(\"ace/ace\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\",\"ace/range\",\"ace/editor\",\"ace/edit_session\",\"ace/undomanager\",\"ace/virtual_renderer\",\"ace/worker/worker_client\",\"ace/keyboard/hash_handler\",\"ace/placeholder\",\"ace/multi_select\",\"ace/mode/folding/fold_mode\",\"ace/theme/textmate\",\"ace/ext/error_marker\",\"ace/config\",\"ace/loader_build\"], function(require, exports, module){/**\n * The main class required to set up an Ace instance in the browser.\n *\n * @class Ace\n **/\n\"use strict\";\nrequire(\"./loader_build\")(exports)\nvar dom = require(\"./lib/dom\");\nvar Range = require(\"./range\").Range;\nvar Editor = require(\"./editor\").Editor;\nvar EditSession = require(\"./edit_session\").EditSession;\nvar UndoManager = require(\"./undomanager\").UndoManager;\nvar Renderer = require(\"./virtual_renderer\").VirtualRenderer;\nrequire(\"./worker/worker_client\");\nrequire(\"./keyboard/hash_handler\");\nrequire(\"./placeholder\");\nrequire(\"./multi_select\");\nrequire(\"./mode/folding/fold_mode\");\nrequire(\"./theme/textmate\");\nrequire(\"./ext/error_marker\");\nexports.config = require(\"./config\");\nexports.edit = function (el, options) {\n if (typeof el == \"string\") {\n var _id = el;\n el = document.getElementById(_id);\n if (!el)\n throw new Error(\"ace.edit can't find div #\" + _id);\n }\n if (el && el.env && el.env.editor instanceof Editor)\n return el.env.editor;\n var value = \"\";\n if (el && /input|textarea/i.test(el.tagName)) {\n var oldNode = el;\n value = oldNode.value;\n el = dom.createElement(\"pre\");\n oldNode.parentNode.replaceChild(el, oldNode);\n }\n else if (el) {\n value = el.textContent;\n el.innerHTML = \"\";\n }\n var doc = exports.createEditSession(value);\n var editor = new Editor(new Renderer(el), doc, options);\n var env = {\n document: doc,\n editor: editor,\n onResize: editor.resize.bind(editor, null)\n };\n if (oldNode)\n env.textarea = oldNode;\n editor.on(\"destroy\", function () {\n env.editor.container.env = null; // prevent memory leak on old ie\n });\n editor.container.env = editor.env = env;\n return editor;\n};\nexports.createEditSession = function (text, mode) {\n var doc = new EditSession(text, mode);\n doc.setUndoManager(new UndoManager());\n return doc;\n};\nexports.Range = Range;\nexports.Editor = Editor;\nexports.EditSession = EditSession;\nexports.UndoManager = UndoManager;\nexports.VirtualRenderer = Renderer;\nexports.version = exports.config.version;\n\n}); (function() {\n ace.require([\"ace/ace\"], function(a) {\n if (a) {\n a.config.init(true);\n a.define = ace.define;\n }\n var global = (function () {\n return this;\n })();\n if (!global && typeof window != \"undefined\") global = window; // can happen in strict mode\n if (!global && typeof self != \"undefined\") global = self; // can happen in webworker\n \n if (!global.ace)\n global.ace = a;\n for (var key in a) if (a.hasOwnProperty(key))\n global.ace[key] = a[key];\n global.ace[\"default\"] = global.ace;\n if (typeof module == \"object\" && typeof exports == \"object\" && module) {\n module.exports = global.ace;\n }\n });\n })();\n ","ace.define(\"ace/ext/beautify\",[\"require\",\"exports\",\"module\",\"ace/token_iterator\"], function(require, exports, module){// [WIP]\n\"use strict\";\nvar TokenIterator = require(\"../token_iterator\").TokenIterator;\nfunction is(token, type) {\n return token.type.lastIndexOf(type + \".xml\") > -1;\n}\nexports.singletonTags = [\"area\", \"base\", \"br\", \"col\", \"command\", \"embed\", \"hr\", \"html\", \"img\", \"input\", \"keygen\", \"link\", \"meta\", \"param\", \"source\", \"track\", \"wbr\"];\nexports.blockTags = [\"article\", \"aside\", \"blockquote\", \"body\", \"div\", \"dl\", \"fieldset\", \"footer\", \"form\", \"head\", \"header\", \"html\", \"nav\", \"ol\", \"p\", \"script\", \"section\", \"style\", \"table\", \"tbody\", \"tfoot\", \"thead\", \"ul\"];\nexports.formatOptions = {\n lineBreaksAfterCommasInCurlyBlock: true\n};\nexports.beautify = function (session) {\n var iterator = new TokenIterator(session, 0, 0);\n var token = iterator.getCurrentToken();\n var tabString = session.getTabString();\n var singletonTags = exports.singletonTags;\n var blockTags = exports.blockTags;\n var formatOptions = exports.formatOptions || {};\n var nextToken;\n var breakBefore = false;\n var spaceBefore = false;\n var spaceAfter = false;\n var code = \"\";\n var value = \"\";\n var tagName = \"\";\n var depth = 0;\n var lastDepth = 0;\n var lastIndent = 0;\n var indent = 0;\n var unindent = 0;\n var roundDepth = 0;\n var curlyDepth = 0;\n var row;\n var curRow = 0;\n var rowsToAdd = 0;\n var rowTokens = [];\n var abort = false;\n var i;\n var indentNextLine = false;\n var inTag = false;\n var inCSS = false;\n var inBlock = false;\n var levels = { 0: 0 };\n var parents = [];\n var caseBody = false;\n var trimNext = function () {\n if (nextToken && nextToken.value && nextToken.type !== 'string.regexp')\n nextToken.value = nextToken.value.replace(/^\\s*/, \"\");\n };\n var trimLine = function () {\n var end = code.length - 1;\n while (true) {\n if (end == 0)\n break;\n if (code[end] !== \" \")\n break;\n end = end - 1;\n }\n code = code.slice(0, end + 1);\n };\n var trimCode = function () {\n code = code.trimRight();\n breakBefore = false;\n };\n while (token !== null) {\n curRow = iterator.getCurrentTokenRow();\n rowTokens = iterator.$rowTokens;\n nextToken = iterator.stepForward();\n if (typeof token !== \"undefined\") {\n value = token.value;\n unindent = 0;\n inCSS = (tagName === \"style\" || session.$modeId === \"ace/mode/css\");\n if (is(token, \"tag-open\")) {\n inTag = true;\n if (nextToken)\n inBlock = (blockTags.indexOf(nextToken.value) !== -1);\n if (value === \" 0; rowsToAdd--)\n code += \"\\n\";\n breakBefore = true;\n if (!is(token, \"comment\") && !token.type.match(/^(comment|string)$/))\n value = value.trimLeft();\n }\n if (value) {\n if (token.type === \"keyword\" && value.match(/^(if|else|elseif|for|foreach|while|switch)$/)) {\n parents[depth] = value;\n trimNext();\n spaceAfter = true;\n if (value.match(/^(else|elseif)$/)) {\n if (code.match(/\\}[\\s]*$/)) {\n trimCode();\n spaceBefore = true;\n }\n }\n }\n else if (token.type === \"paren.lparen\") {\n trimNext();\n if (value.substr(-1) === \"{\") {\n spaceAfter = true;\n indentNextLine = false;\n if (!inTag)\n rowsToAdd = 1;\n }\n if (value.substr(0, 1) === \"{\") {\n spaceBefore = true;\n if (code.substr(-1) !== '[' && code.trimRight().substr(-1) === '[') {\n trimCode();\n spaceBefore = false;\n }\n else if (code.trimRight().substr(-1) === ')') {\n trimCode();\n }\n else {\n trimLine();\n }\n }\n }\n else if (token.type === \"paren.rparen\") {\n unindent = 1;\n if (value.substr(0, 1) === \"}\") {\n if (parents[depth - 1] === 'case')\n unindent++;\n if (code.trimRight().substr(-1) === '{') {\n trimCode();\n }\n else {\n spaceBefore = true;\n if (inCSS)\n rowsToAdd += 2;\n }\n }\n if (value.substr(0, 1) === \"]\") {\n if (code.substr(-1) !== '}' && code.trimRight().substr(-1) === '}') {\n spaceBefore = false;\n indent++;\n trimCode();\n }\n }\n if (value.substr(0, 1) === \")\") {\n if (code.substr(-1) !== '(' && code.trimRight().substr(-1) === '(') {\n spaceBefore = false;\n indent++;\n trimCode();\n }\n }\n trimLine();\n }\n else if ((token.type === \"keyword.operator\" || token.type === \"keyword\") && value.match(/^(=|==|===|!=|!==|&&|\\|\\||and|or|xor|\\+=|.=|>|>=|<|<=|=>)$/)) {\n trimCode();\n trimNext();\n spaceBefore = true;\n spaceAfter = true;\n }\n else if (token.type === \"punctuation.operator\" && value === ';') {\n trimCode();\n trimNext();\n spaceAfter = true;\n if (inCSS)\n rowsToAdd++;\n }\n else if (token.type === \"punctuation.operator\" && value.match(/^(:|,)$/)) {\n trimCode();\n trimNext();\n if (value.match(/^(,)$/) && curlyDepth > 0 && roundDepth === 0 && formatOptions.lineBreaksAfterCommasInCurlyBlock) {\n rowsToAdd++;\n }\n else {\n spaceAfter = true;\n breakBefore = false;\n }\n }\n else if (token.type === \"support.php_tag\" && value === \"?>\" && !breakBefore) {\n trimCode();\n spaceBefore = true;\n }\n else if (is(token, \"attribute-name\") && code.substr(-1).match(/^\\s$/)) {\n spaceBefore = true;\n }\n else if (is(token, \"attribute-equals\")) {\n trimLine();\n trimNext();\n }\n else if (is(token, \"tag-close\")) {\n trimLine();\n if (value === \"/>\")\n spaceBefore = true;\n }\n else if (token.type === \"keyword\" && value.match(/^(case|default)$/)) {\n if (caseBody)\n unindent = 1;\n }\n if (breakBefore && !(token.type.match(/^(comment)$/) && !value.substr(0, 1).match(/^[/#]$/)) && !(token.type.match(/^(string)$/) && !value.substr(0, 1).match(/^['\"@]$/))) {\n indent = lastIndent;\n if (depth > lastDepth) {\n indent++;\n for (i = depth; i > lastDepth; i--)\n levels[i] = indent;\n }\n else if (depth < lastDepth)\n indent = levels[depth];\n lastDepth = depth;\n lastIndent = indent;\n if (unindent)\n indent -= unindent;\n if (indentNextLine && !roundDepth) {\n indent++;\n indentNextLine = false;\n }\n for (i = 0; i < indent; i++)\n code += tabString;\n }\n if (token.type === \"keyword\" && value.match(/^(case|default)$/)) {\n if (caseBody === false) {\n parents[depth] = value;\n depth++;\n caseBody = true;\n }\n }\n else if (token.type === \"keyword\" && value.match(/^(break)$/)) {\n if (parents[depth - 1] && parents[depth - 1].match(/^(case|default)$/)) {\n depth--;\n caseBody = false;\n }\n }\n if (token.type === \"paren.lparen\") {\n roundDepth += (value.match(/\\(/g) || []).length;\n curlyDepth += (value.match(/\\{/g) || []).length;\n depth += value.length;\n }\n if (token.type === \"keyword\" && value.match(/^(if|else|elseif|for|while)$/)) {\n indentNextLine = true;\n roundDepth = 0;\n }\n else if (!roundDepth && value.trim() && token.type !== \"comment\")\n indentNextLine = false;\n if (token.type === \"paren.rparen\") {\n roundDepth -= (value.match(/\\)/g) || []).length;\n curlyDepth -= (value.match(/\\}/g) || []).length;\n for (i = 0; i < value.length; i++) {\n depth--;\n if (value.substr(i, 1) === '}' && parents[depth] === 'case') {\n depth--;\n }\n }\n }\n if (token.type == \"text\")\n value = value.replace(/\\s+$/, \" \");\n if (spaceBefore && !breakBefore) {\n trimLine();\n if (code.substr(-1) !== \"\\n\")\n code += \" \";\n }\n code += value;\n if (spaceAfter)\n code += \" \";\n breakBefore = false;\n spaceBefore = false;\n spaceAfter = false;\n if ((is(token, \"tag-close\") && (inBlock || blockTags.indexOf(tagName) !== -1)) || (is(token, \"doctype\") && value === \">\")) {\n if (inBlock && nextToken && nextToken.value === \"\") {\n depth--;\n }\n }\n if (is(token, \"tag-name\")) {\n tagName = value;\n }\n row = curRow;\n }\n }\n token = nextToken;\n }\n code = code.trim();\n session.doc.setValue(code);\n};\nexports.commands = [{\n name: \"beautify\",\n description: \"Format selection (Beautify)\",\n exec: function (editor) {\n exports.beautify(editor.session);\n },\n bindKey: \"Ctrl-Shift-B\"\n }];\n\n}); (function() {\n ace.require([\"ace/ext/beautify\"], function(m) {\n if (typeof module == \"object\" && typeof exports == \"object\" && module) {\n module.exports = m;\n }\n });\n })();\n ","ace.define(\"ace/ext/searchbox-css\",[\"require\",\"exports\",\"module\"], function(require, exports, module){module.exports = \"\\n\\n/* ------------------------------------------------------------------------------------------\\n * Editor Search Form\\n * --------------------------------------------------------------------------------------- */\\n.ace_search {\\n background-color: #ddd;\\n color: #666;\\n border: 1px solid #cbcbcb;\\n border-top: 0 none;\\n overflow: hidden;\\n margin: 0;\\n padding: 4px 6px 0 4px;\\n position: absolute;\\n top: 0;\\n z-index: 99;\\n white-space: normal;\\n}\\n.ace_search.left {\\n border-left: 0 none;\\n border-radius: 0px 0px 5px 0px;\\n left: 0;\\n}\\n.ace_search.right {\\n border-radius: 0px 0px 0px 5px;\\n border-right: 0 none;\\n right: 0;\\n}\\n\\n.ace_search_form, .ace_replace_form {\\n margin: 0 20px 4px 0;\\n overflow: hidden;\\n line-height: 1.9;\\n}\\n.ace_replace_form {\\n margin-right: 0;\\n}\\n.ace_search_form.ace_nomatch {\\n outline: 1px solid red;\\n}\\n\\n.ace_search_field {\\n border-radius: 3px 0 0 3px;\\n background-color: white;\\n color: black;\\n border: 1px solid #cbcbcb;\\n border-right: 0 none;\\n outline: 0;\\n padding: 0;\\n font-size: inherit;\\n margin: 0;\\n line-height: inherit;\\n padding: 0 6px;\\n min-width: 17em;\\n vertical-align: top;\\n min-height: 1.8em;\\n box-sizing: content-box;\\n}\\n.ace_searchbtn {\\n border: 1px solid #cbcbcb;\\n line-height: inherit;\\n display: inline-block;\\n padding: 0 6px;\\n background: #fff;\\n border-right: 0 none;\\n border-left: 1px solid #dcdcdc;\\n cursor: pointer;\\n margin: 0;\\n position: relative;\\n color: #666;\\n}\\n.ace_searchbtn:last-child {\\n border-radius: 0 3px 3px 0;\\n border-right: 1px solid #cbcbcb;\\n}\\n.ace_searchbtn:disabled {\\n background: none;\\n cursor: default;\\n}\\n.ace_searchbtn:hover {\\n background-color: #eef1f6;\\n}\\n.ace_searchbtn.prev, .ace_searchbtn.next {\\n padding: 0px 0.7em\\n}\\n.ace_searchbtn.prev:after, .ace_searchbtn.next:after {\\n content: \\\"\\\";\\n border: solid 2px #888;\\n width: 0.5em;\\n height: 0.5em;\\n border-width: 2px 0 0 2px;\\n display:inline-block;\\n transform: rotate(-45deg);\\n}\\n.ace_searchbtn.next:after {\\n border-width: 0 2px 2px 0 ;\\n}\\n.ace_searchbtn_close {\\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAcCAYAAABRVo5BAAAAZ0lEQVR42u2SUQrAMAhDvazn8OjZBilCkYVVxiis8H4CT0VrAJb4WHT3C5xU2a2IQZXJjiQIRMdkEoJ5Q2yMqpfDIo+XY4k6h+YXOyKqTIj5REaxloNAd0xiKmAtsTHqW8sR2W5f7gCu5nWFUpVjZwAAAABJRU5ErkJggg==) no-repeat 50% 0;\\n border-radius: 50%;\\n border: 0 none;\\n color: #656565;\\n cursor: pointer;\\n font: 16px/16px Arial;\\n padding: 0;\\n height: 14px;\\n width: 14px;\\n top: 9px;\\n right: 7px;\\n position: absolute;\\n}\\n.ace_searchbtn_close:hover {\\n background-color: #656565;\\n background-position: 50% 100%;\\n color: white;\\n}\\n\\n.ace_button {\\n margin-left: 2px;\\n cursor: pointer;\\n -webkit-user-select: none;\\n -moz-user-select: none;\\n -o-user-select: none;\\n -ms-user-select: none;\\n user-select: none;\\n overflow: hidden;\\n opacity: 0.7;\\n border: 1px solid rgba(100,100,100,0.23);\\n padding: 1px;\\n box-sizing: border-box!important;\\n color: black;\\n}\\n\\n.ace_button:hover {\\n background-color: #eee;\\n opacity:1;\\n}\\n.ace_button:active {\\n background-color: #ddd;\\n}\\n\\n.ace_button.checked {\\n border-color: #3399ff;\\n opacity:1;\\n}\\n\\n.ace_search_options{\\n margin-bottom: 3px;\\n text-align: right;\\n -webkit-user-select: none;\\n -moz-user-select: none;\\n -o-user-select: none;\\n -ms-user-select: none;\\n user-select: none;\\n clear: both;\\n}\\n\\n.ace_search_counter {\\n float: left;\\n font-family: arial;\\n padding: 0 8px;\\n}\";\n\n});\n\nace.define(\"ace/ext/searchbox\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\",\"ace/lib/lang\",\"ace/lib/event\",\"ace/ext/searchbox-css\",\"ace/keyboard/hash_handler\",\"ace/lib/keys\",\"ace/config\"], function(require, exports, module){\"use strict\";\nvar dom = require(\"../lib/dom\");\nvar lang = require(\"../lib/lang\");\nvar event = require(\"../lib/event\");\nvar searchboxCss = require(\"./searchbox-css\");\nvar HashHandler = require(\"../keyboard/hash_handler\").HashHandler;\nvar keyUtil = require(\"../lib/keys\");\nvar nls = require(\"../config\").nls;\nvar MAX_COUNT = 999;\ndom.importCssString(searchboxCss, \"ace_searchbox\", false);\nvar SearchBox = /** @class */ (function () {\n function SearchBox(editor, range, showReplaceForm) {\n var div = dom.createElement(\"div\");\n dom.buildDom([\"div\", { class: \"ace_search right\" },\n [\"span\", { action: \"hide\", class: \"ace_searchbtn_close\" }],\n [\"div\", { class: \"ace_search_form\" },\n [\"input\", { class: \"ace_search_field\", placeholder: nls(\"Search for\"), spellcheck: \"false\" }],\n [\"span\", { action: \"findPrev\", class: \"ace_searchbtn prev\" }, \"\\u200b\"],\n [\"span\", { action: \"findNext\", class: \"ace_searchbtn next\" }, \"\\u200b\"],\n [\"span\", { action: \"findAll\", class: \"ace_searchbtn\", title: \"Alt-Enter\" }, nls(\"All\")]\n ],\n [\"div\", { class: \"ace_replace_form\" },\n [\"input\", { class: \"ace_search_field\", placeholder: nls(\"Replace with\"), spellcheck: \"false\" }],\n [\"span\", { action: \"replaceAndFindNext\", class: \"ace_searchbtn\" }, nls(\"Replace\")],\n [\"span\", { action: \"replaceAll\", class: \"ace_searchbtn\" }, nls(\"All\")]\n ],\n [\"div\", { class: \"ace_search_options\" },\n [\"span\", { action: \"toggleReplace\", class: \"ace_button\", title: nls(\"Toggle Replace mode\"),\n style: \"float:left;margin-top:-2px;padding:0 5px;\" }, \"+\"],\n [\"span\", { class: \"ace_search_counter\" }],\n [\"span\", { action: \"toggleRegexpMode\", class: \"ace_button\", title: nls(\"RegExp Search\") }, \".*\"],\n [\"span\", { action: \"toggleCaseSensitive\", class: \"ace_button\", title: nls(\"CaseSensitive Search\") }, \"Aa\"],\n [\"span\", { action: \"toggleWholeWords\", class: \"ace_button\", title: nls(\"Whole Word Search\") }, \"\\\\b\"],\n [\"span\", { action: \"searchInSelection\", class: \"ace_button\", title: nls(\"Search In Selection\") }, \"S\"]\n ]\n ], div);\n this.element = div.firstChild;\n this.setSession = this.setSession.bind(this);\n this.$init();\n this.setEditor(editor);\n dom.importCssString(searchboxCss, \"ace_searchbox\", editor.container);\n }\n SearchBox.prototype.setEditor = function (editor) {\n editor.searchBox = this;\n editor.renderer.scroller.appendChild(this.element);\n this.editor = editor;\n };\n SearchBox.prototype.setSession = function (e) {\n this.searchRange = null;\n this.$syncOptions(true);\n };\n SearchBox.prototype.$initElements = function (sb) {\n this.searchBox = sb.querySelector(\".ace_search_form\");\n this.replaceBox = sb.querySelector(\".ace_replace_form\");\n this.searchOption = sb.querySelector(\"[action=searchInSelection]\");\n this.replaceOption = sb.querySelector(\"[action=toggleReplace]\");\n this.regExpOption = sb.querySelector(\"[action=toggleRegexpMode]\");\n this.caseSensitiveOption = sb.querySelector(\"[action=toggleCaseSensitive]\");\n this.wholeWordOption = sb.querySelector(\"[action=toggleWholeWords]\");\n this.searchInput = this.searchBox.querySelector(\".ace_search_field\");\n this.replaceInput = this.replaceBox.querySelector(\".ace_search_field\");\n this.searchCounter = sb.querySelector(\".ace_search_counter\");\n };\n SearchBox.prototype.$init = function () {\n var sb = this.element;\n this.$initElements(sb);\n var _this = this;\n event.addListener(sb, \"mousedown\", function (e) {\n setTimeout(function () {\n _this.activeInput.focus();\n }, 0);\n event.stopPropagation(e);\n });\n event.addListener(sb, \"click\", function (e) {\n var t = e.target || e.srcElement;\n var action = t.getAttribute(\"action\");\n if (action && _this[action])\n _this[action]();\n else if (_this.$searchBarKb.commands[action])\n _this.$searchBarKb.commands[action].exec(_this);\n event.stopPropagation(e);\n });\n event.addCommandKeyListener(sb, function (e, hashId, keyCode) {\n var keyString = keyUtil.keyCodeToString(keyCode);\n var command = _this.$searchBarKb.findKeyCommand(hashId, keyString);\n if (command && command.exec) {\n command.exec(_this);\n event.stopEvent(e);\n }\n });\n this.$onChange = lang.delayedCall(function () {\n _this.find(false, false);\n });\n event.addListener(this.searchInput, \"input\", function () {\n _this.$onChange.schedule(20);\n });\n event.addListener(this.searchInput, \"focus\", function () {\n _this.activeInput = _this.searchInput;\n _this.searchInput.value && _this.highlight();\n });\n event.addListener(this.replaceInput, \"focus\", function () {\n _this.activeInput = _this.replaceInput;\n _this.searchInput.value && _this.highlight();\n });\n };\n SearchBox.prototype.setSearchRange = function (range) {\n this.searchRange = range;\n if (range) {\n this.searchRangeMarker = this.editor.session.addMarker(range, \"ace_active-line\");\n }\n else if (this.searchRangeMarker) {\n this.editor.session.removeMarker(this.searchRangeMarker);\n this.searchRangeMarker = null;\n }\n };\n SearchBox.prototype.$syncOptions = function (preventScroll) {\n dom.setCssClass(this.replaceOption, \"checked\", this.searchRange);\n dom.setCssClass(this.searchOption, \"checked\", this.searchOption.checked);\n this.replaceOption.textContent = this.replaceOption.checked ? \"-\" : \"+\";\n dom.setCssClass(this.regExpOption, \"checked\", this.regExpOption.checked);\n dom.setCssClass(this.wholeWordOption, \"checked\", this.wholeWordOption.checked);\n dom.setCssClass(this.caseSensitiveOption, \"checked\", this.caseSensitiveOption.checked);\n var readOnly = this.editor.getReadOnly();\n this.replaceOption.style.display = readOnly ? \"none\" : \"\";\n this.replaceBox.style.display = this.replaceOption.checked && !readOnly ? \"\" : \"none\";\n this.find(false, false, preventScroll);\n };\n SearchBox.prototype.highlight = function (re) {\n this.editor.session.highlight(re || this.editor.$search.$options.re);\n this.editor.renderer.updateBackMarkers();\n };\n SearchBox.prototype.find = function (skipCurrent, backwards, preventScroll) {\n var range = this.editor.find(this.searchInput.value, {\n skipCurrent: skipCurrent,\n backwards: backwards,\n wrap: true,\n regExp: this.regExpOption.checked,\n caseSensitive: this.caseSensitiveOption.checked,\n wholeWord: this.wholeWordOption.checked,\n preventScroll: preventScroll,\n range: this.searchRange\n });\n var noMatch = !range && this.searchInput.value;\n dom.setCssClass(this.searchBox, \"ace_nomatch\", noMatch);\n this.editor._emit(\"findSearchBox\", { match: !noMatch });\n this.highlight();\n this.updateCounter();\n };\n SearchBox.prototype.updateCounter = function () {\n var editor = this.editor;\n var regex = editor.$search.$options.re;\n var supportsUnicodeFlag = regex.unicode;\n var all = 0;\n var before = 0;\n if (regex) {\n var value = this.searchRange\n ? editor.session.getTextRange(this.searchRange)\n : editor.getValue();\n var offset = editor.session.doc.positionToIndex(editor.selection.anchor);\n if (this.searchRange)\n offset -= editor.session.doc.positionToIndex(this.searchRange.start);\n var last = regex.lastIndex = 0;\n var m;\n while ((m = regex.exec(value))) {\n all++;\n last = m.index;\n if (last <= offset)\n before++;\n if (all > MAX_COUNT)\n break;\n if (!m[0]) {\n regex.lastIndex = last += lang.skipEmptyMatch(value, last, supportsUnicodeFlag);\n if (last >= value.length)\n break;\n }\n }\n }\n this.searchCounter.textContent = nls(\"$0 of $1\", [before, (all > MAX_COUNT ? MAX_COUNT + \"+\" : all)]);\n };\n SearchBox.prototype.findNext = function () {\n this.find(true, false);\n };\n SearchBox.prototype.findPrev = function () {\n this.find(true, true);\n };\n SearchBox.prototype.findAll = function () {\n var range = this.editor.findAll(this.searchInput.value, {\n regExp: this.regExpOption.checked,\n caseSensitive: this.caseSensitiveOption.checked,\n wholeWord: this.wholeWordOption.checked\n });\n var noMatch = !range && this.searchInput.value;\n dom.setCssClass(this.searchBox, \"ace_nomatch\", noMatch);\n this.editor._emit(\"findSearchBox\", { match: !noMatch });\n this.highlight();\n this.hide();\n };\n SearchBox.prototype.replace = function () {\n if (!this.editor.getReadOnly())\n this.editor.replace(this.replaceInput.value);\n };\n SearchBox.prototype.replaceAndFindNext = function () {\n if (!this.editor.getReadOnly()) {\n this.editor.replace(this.replaceInput.value);\n this.findNext();\n }\n };\n SearchBox.prototype.replaceAll = function () {\n if (!this.editor.getReadOnly())\n this.editor.replaceAll(this.replaceInput.value);\n };\n SearchBox.prototype.hide = function () {\n this.active = false;\n this.setSearchRange(null);\n this.editor.off(\"changeSession\", this.setSession);\n this.element.style.display = \"none\";\n this.editor.keyBinding.removeKeyboardHandler(this.$closeSearchBarKb);\n this.editor.focus();\n };\n SearchBox.prototype.show = function (value, isReplace) {\n this.active = true;\n this.editor.on(\"changeSession\", this.setSession);\n this.element.style.display = \"\";\n this.replaceOption.checked = isReplace;\n if (value)\n this.searchInput.value = value;\n this.searchInput.focus();\n this.searchInput.select();\n this.editor.keyBinding.addKeyboardHandler(this.$closeSearchBarKb);\n this.$syncOptions(true);\n };\n SearchBox.prototype.isFocused = function () {\n var el = document.activeElement;\n return el == this.searchInput || el == this.replaceInput;\n };\n return SearchBox;\n}());\nvar $searchBarKb = new HashHandler();\n$searchBarKb.bindKeys({\n \"Ctrl-f|Command-f\": function (sb) {\n var isReplace = sb.isReplace = !sb.isReplace;\n sb.replaceBox.style.display = isReplace ? \"\" : \"none\";\n sb.replaceOption.checked = false;\n sb.$syncOptions();\n sb.searchInput.focus();\n },\n \"Ctrl-H|Command-Option-F\": function (sb) {\n if (sb.editor.getReadOnly())\n return;\n sb.replaceOption.checked = true;\n sb.$syncOptions();\n sb.replaceInput.focus();\n },\n \"Ctrl-G|Command-G\": function (sb) {\n sb.findNext();\n },\n \"Ctrl-Shift-G|Command-Shift-G\": function (sb) {\n sb.findPrev();\n },\n \"esc\": function (sb) {\n setTimeout(function () { sb.hide(); });\n },\n \"Return\": function (sb) {\n if (sb.activeInput == sb.replaceInput)\n sb.replace();\n sb.findNext();\n },\n \"Shift-Return\": function (sb) {\n if (sb.activeInput == sb.replaceInput)\n sb.replace();\n sb.findPrev();\n },\n \"Alt-Return\": function (sb) {\n if (sb.activeInput == sb.replaceInput)\n sb.replaceAll();\n sb.findAll();\n },\n \"Tab\": function (sb) {\n (sb.activeInput == sb.replaceInput ? sb.searchInput : sb.replaceInput).focus();\n }\n});\n$searchBarKb.addCommands([{\n name: \"toggleRegexpMode\",\n bindKey: { win: \"Alt-R|Alt-/\", mac: \"Ctrl-Alt-R|Ctrl-Alt-/\" },\n exec: function (sb) {\n sb.regExpOption.checked = !sb.regExpOption.checked;\n sb.$syncOptions();\n }\n }, {\n name: \"toggleCaseSensitive\",\n bindKey: { win: \"Alt-C|Alt-I\", mac: \"Ctrl-Alt-R|Ctrl-Alt-I\" },\n exec: function (sb) {\n sb.caseSensitiveOption.checked = !sb.caseSensitiveOption.checked;\n sb.$syncOptions();\n }\n }, {\n name: \"toggleWholeWords\",\n bindKey: { win: \"Alt-B|Alt-W\", mac: \"Ctrl-Alt-B|Ctrl-Alt-W\" },\n exec: function (sb) {\n sb.wholeWordOption.checked = !sb.wholeWordOption.checked;\n sb.$syncOptions();\n }\n }, {\n name: \"toggleReplace\",\n exec: function (sb) {\n sb.replaceOption.checked = !sb.replaceOption.checked;\n sb.$syncOptions();\n }\n }, {\n name: \"searchInSelection\",\n exec: function (sb) {\n sb.searchOption.checked = !sb.searchRange;\n sb.setSearchRange(sb.searchOption.checked && sb.editor.getSelectionRange());\n sb.$syncOptions();\n }\n }]);\nvar $closeSearchBarKb = new HashHandler([{\n bindKey: \"Esc\",\n name: \"closeSearchBar\",\n exec: function (editor) {\n editor.searchBox.hide();\n }\n }]);\nSearchBox.prototype.$searchBarKb = $searchBarKb;\nSearchBox.prototype.$closeSearchBarKb = $closeSearchBarKb;\nexports.SearchBox = SearchBox;\nexports.Search = function (editor, isReplace) {\n var sb = editor.searchBox || new SearchBox(editor);\n sb.show(editor.session.getTextRange(), isReplace);\n};\n\n}); (function() {\n ace.require([\"ace/ext/searchbox\"], function(m) {\n if (typeof module == \"object\" && typeof exports == \"object\" && module) {\n module.exports = m;\n }\n });\n })();\n ","ace.define(\"ace/mode/css_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/mode/text_highlight_rules\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar lang = require(\"../lib/lang\");\nvar TextHighlightRules = require(\"./text_highlight_rules\").TextHighlightRules;\nvar supportType = exports.supportType = \"align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index\";\nvar supportFunction = exports.supportFunction = \"rgb|rgba|url|attr|counter|counters\";\nvar supportConstant = exports.supportConstant = \"absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|flex-end|flex-start|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom\";\nvar supportConstantColor = exports.supportConstantColor = \"aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|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|green|greenyellow|grey|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|magenta|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|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen\";\nvar supportConstantFonts = exports.supportConstantFonts = \"arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace\";\nvar numRe = exports.numRe = \"\\\\-?(?:(?:[0-9]+(?:\\\\.[0-9]+)?)|(?:\\\\.[0-9]+))\";\nvar pseudoElements = exports.pseudoElements = \"(\\\\:+)\\\\b(after|before|first-letter|first-line|moz-selection|selection)\\\\b\";\nvar pseudoClasses = exports.pseudoClasses = \"(:)\\\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\\\b\";\nvar CssHighlightRules = function () {\n var keywordMapper = this.createKeywordMapper({\n \"support.function\": supportFunction,\n \"support.constant\": supportConstant,\n \"support.type\": supportType,\n \"support.constant.color\": supportConstantColor,\n \"support.constant.fonts\": supportConstantFonts\n }, \"text\", true);\n this.$rules = {\n \"start\": [{\n include: [\"strings\", \"url\", \"comments\"]\n }, {\n token: \"paren.lparen\",\n regex: \"\\\\{\",\n next: \"ruleset\"\n }, {\n token: \"paren.rparen\",\n regex: \"\\\\}\"\n }, {\n token: \"string\",\n regex: \"@(?!viewport)\",\n next: \"media\"\n }, {\n token: \"keyword\",\n regex: \"#[a-z0-9-_]+\"\n }, {\n token: \"keyword\",\n regex: \"%\"\n }, {\n token: \"variable\",\n regex: \"\\\\.[a-z0-9-_]+\"\n }, {\n token: \"string\",\n regex: \":[a-z0-9-_]+\"\n }, {\n token: \"constant.numeric\",\n regex: numRe\n }, {\n token: \"constant\",\n regex: \"[a-z0-9-_]+\"\n }, {\n caseInsensitive: true\n }],\n \"media\": [{\n include: [\"strings\", \"url\", \"comments\"]\n }, {\n token: \"paren.lparen\",\n regex: \"\\\\{\",\n next: \"start\"\n }, {\n token: \"paren.rparen\",\n regex: \"\\\\}\",\n next: \"start\"\n }, {\n token: \"string\",\n regex: \";\",\n next: \"start\"\n }, {\n token: \"keyword\",\n regex: \"(?:media|supports|document|charset|import|namespace|media|supports|document\"\n + \"|page|font|keyframes|viewport|counter-style|font-feature-values\"\n + \"|swash|ornaments|annotation|stylistic|styleset|character-variant)\"\n }],\n \"comments\": [{\n token: \"comment\",\n regex: \"\\\\/\\\\*\",\n push: [{\n token: \"comment\",\n regex: \"\\\\*\\\\/\",\n next: \"pop\"\n }, {\n defaultToken: \"comment\"\n }]\n }],\n \"ruleset\": [{\n regex: \"-(webkit|ms|moz|o)-\",\n token: \"text\"\n }, {\n token: \"punctuation.operator\",\n regex: \"[:;]\"\n }, {\n token: \"paren.rparen\",\n regex: \"\\\\}\",\n next: \"start\"\n }, {\n include: [\"strings\", \"url\", \"comments\"]\n }, {\n token: [\"constant.numeric\", \"keyword\"],\n regex: \"(\" + numRe + \")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)\"\n }, {\n token: \"constant.numeric\",\n regex: numRe\n }, {\n token: \"constant.numeric\",\n regex: \"#[a-f0-9]{6}\"\n }, {\n token: \"constant.numeric\",\n regex: \"#[a-f0-9]{3}\"\n }, {\n token: [\"punctuation\", \"entity.other.attribute-name.pseudo-element.css\"],\n regex: pseudoElements\n }, {\n token: [\"punctuation\", \"entity.other.attribute-name.pseudo-class.css\"],\n regex: pseudoClasses\n }, {\n include: \"url\"\n }, {\n token: keywordMapper,\n regex: \"\\\\-?[a-zA-Z_][a-zA-Z0-9_\\\\-]*\"\n }, {\n caseInsensitive: true\n }],\n url: [{\n token: \"support.function\",\n regex: \"(?:url(:?-prefix)?|domain|regexp)\\\\(\",\n push: [{\n token: \"support.function\",\n regex: \"\\\\)\",\n next: \"pop\"\n }, {\n defaultToken: \"string\"\n }]\n }],\n strings: [{\n token: \"string.start\",\n regex: \"'\",\n push: [{\n token: \"string.end\",\n regex: \"'|$\",\n next: \"pop\"\n }, {\n include: \"escapes\"\n }, {\n token: \"constant.language.escape\",\n regex: /\\\\$/,\n consumeLineEnd: true\n }, {\n defaultToken: \"string\"\n }]\n }, {\n token: \"string.start\",\n regex: '\"',\n push: [{\n token: \"string.end\",\n regex: '\"|$',\n next: \"pop\"\n }, {\n include: \"escapes\"\n }, {\n token: \"constant.language.escape\",\n regex: /\\\\$/,\n consumeLineEnd: true\n }, {\n defaultToken: \"string\"\n }]\n }],\n escapes: [{\n token: \"constant.language.escape\",\n regex: /\\\\([a-fA-F\\d]{1,6}|[^a-fA-F\\d])/\n }]\n };\n this.normalizeRules();\n};\noop.inherits(CssHighlightRules, TextHighlightRules);\nexports.CssHighlightRules = CssHighlightRules;\n\n});\n\nace.define(\"ace/mode/matching_brace_outdent\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar Range = require(\"../range\").Range;\nvar MatchingBraceOutdent = function () { };\n(function () {\n this.checkOutdent = function (line, input) {\n if (!/^\\s+$/.test(line))\n return false;\n return /^\\s*\\}/.test(input);\n };\n this.autoOutdent = function (doc, row) {\n var line = doc.getLine(row);\n var match = line.match(/^(\\s*\\})/);\n if (!match)\n return 0;\n var column = match[1].length;\n var openBracePos = doc.findMatchingBracket({ row: row, column: column });\n if (!openBracePos || openBracePos.row == row)\n return 0;\n var indent = this.$getIndent(doc.getLine(openBracePos.row));\n doc.replace(new Range(row, 0, row, column - 1), indent);\n };\n this.$getIndent = function (line) {\n return line.match(/^\\s*/)[0];\n };\n}).call(MatchingBraceOutdent.prototype);\nexports.MatchingBraceOutdent = MatchingBraceOutdent;\n\n});\n\nace.define(\"ace/mode/css_completions\",[\"require\",\"exports\",\"module\"], function(require, exports, module){\"use strict\";\nvar propertyMap = {\n \"background\": { \"#$0\": 1 },\n \"background-color\": { \"#$0\": 1, \"transparent\": 1, \"fixed\": 1 },\n \"background-image\": { \"url('/$0')\": 1 },\n \"background-repeat\": { \"repeat\": 1, \"repeat-x\": 1, \"repeat-y\": 1, \"no-repeat\": 1, \"inherit\": 1 },\n \"background-position\": { \"bottom\": 2, \"center\": 2, \"left\": 2, \"right\": 2, \"top\": 2, \"inherit\": 2 },\n \"background-attachment\": { \"scroll\": 1, \"fixed\": 1 },\n \"background-size\": { \"cover\": 1, \"contain\": 1 },\n \"background-clip\": { \"border-box\": 1, \"padding-box\": 1, \"content-box\": 1 },\n \"background-origin\": { \"border-box\": 1, \"padding-box\": 1, \"content-box\": 1 },\n \"border\": { \"solid $0\": 1, \"dashed $0\": 1, \"dotted $0\": 1, \"#$0\": 1 },\n \"border-color\": { \"#$0\": 1 },\n \"border-style\": { \"solid\": 2, \"dashed\": 2, \"dotted\": 2, \"double\": 2, \"groove\": 2, \"hidden\": 2, \"inherit\": 2, \"inset\": 2, \"none\": 2, \"outset\": 2, \"ridged\": 2 },\n \"border-collapse\": { \"collapse\": 1, \"separate\": 1 },\n \"bottom\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"clear\": { \"left\": 1, \"right\": 1, \"both\": 1, \"none\": 1 },\n \"color\": { \"#$0\": 1, \"rgb(#$00,0,0)\": 1 },\n \"cursor\": { \"default\": 1, \"pointer\": 1, \"move\": 1, \"text\": 1, \"wait\": 1, \"help\": 1, \"progress\": 1, \"n-resize\": 1, \"ne-resize\": 1, \"e-resize\": 1, \"se-resize\": 1, \"s-resize\": 1, \"sw-resize\": 1, \"w-resize\": 1, \"nw-resize\": 1 },\n \"display\": { \"none\": 1, \"block\": 1, \"inline\": 1, \"inline-block\": 1, \"table-cell\": 1 },\n \"empty-cells\": { \"show\": 1, \"hide\": 1 },\n \"float\": { \"left\": 1, \"right\": 1, \"none\": 1 },\n \"font-family\": { \"Arial\": 2, \"Comic Sans MS\": 2, \"Consolas\": 2, \"Courier New\": 2, \"Courier\": 2, \"Georgia\": 2, \"Monospace\": 2, \"Sans-Serif\": 2, \"Segoe UI\": 2, \"Tahoma\": 2, \"Times New Roman\": 2, \"Trebuchet MS\": 2, \"Verdana\": 1 },\n \"font-size\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"font-weight\": { \"bold\": 1, \"normal\": 1 },\n \"font-style\": { \"italic\": 1, \"normal\": 1 },\n \"font-variant\": { \"normal\": 1, \"small-caps\": 1 },\n \"height\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"left\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"letter-spacing\": { \"normal\": 1 },\n \"line-height\": { \"normal\": 1 },\n \"list-style-type\": { \"none\": 1, \"disc\": 1, \"circle\": 1, \"square\": 1, \"decimal\": 1, \"decimal-leading-zero\": 1, \"lower-roman\": 1, \"upper-roman\": 1, \"lower-greek\": 1, \"lower-latin\": 1, \"upper-latin\": 1, \"georgian\": 1, \"lower-alpha\": 1, \"upper-alpha\": 1 },\n \"margin\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"margin-right\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"margin-left\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"margin-top\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"margin-bottom\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"max-height\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"max-width\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"min-height\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"min-width\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"overflow\": { \"hidden\": 1, \"visible\": 1, \"auto\": 1, \"scroll\": 1 },\n \"overflow-x\": { \"hidden\": 1, \"visible\": 1, \"auto\": 1, \"scroll\": 1 },\n \"overflow-y\": { \"hidden\": 1, \"visible\": 1, \"auto\": 1, \"scroll\": 1 },\n \"padding\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"padding-top\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"padding-right\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"padding-bottom\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"padding-left\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"page-break-after\": { \"auto\": 1, \"always\": 1, \"avoid\": 1, \"left\": 1, \"right\": 1 },\n \"page-break-before\": { \"auto\": 1, \"always\": 1, \"avoid\": 1, \"left\": 1, \"right\": 1 },\n \"position\": { \"absolute\": 1, \"relative\": 1, \"fixed\": 1, \"static\": 1 },\n \"right\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"table-layout\": { \"fixed\": 1, \"auto\": 1 },\n \"text-decoration\": { \"none\": 1, \"underline\": 1, \"line-through\": 1, \"blink\": 1 },\n \"text-align\": { \"left\": 1, \"right\": 1, \"center\": 1, \"justify\": 1 },\n \"text-transform\": { \"capitalize\": 1, \"uppercase\": 1, \"lowercase\": 1, \"none\": 1 },\n \"top\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"vertical-align\": { \"top\": 1, \"bottom\": 1 },\n \"visibility\": { \"hidden\": 1, \"visible\": 1 },\n \"white-space\": { \"nowrap\": 1, \"normal\": 1, \"pre\": 1, \"pre-line\": 1, \"pre-wrap\": 1 },\n \"width\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"word-spacing\": { \"normal\": 1 },\n \"filter\": { \"alpha(opacity=$0100)\": 1 },\n \"text-shadow\": { \"$02px 2px 2px #777\": 1 },\n \"text-overflow\": { \"ellipsis-word\": 1, \"clip\": 1, \"ellipsis\": 1 },\n \"-moz-border-radius\": 1,\n \"-moz-border-radius-topright\": 1,\n \"-moz-border-radius-bottomright\": 1,\n \"-moz-border-radius-topleft\": 1,\n \"-moz-border-radius-bottomleft\": 1,\n \"-webkit-border-radius\": 1,\n \"-webkit-border-top-right-radius\": 1,\n \"-webkit-border-top-left-radius\": 1,\n \"-webkit-border-bottom-right-radius\": 1,\n \"-webkit-border-bottom-left-radius\": 1,\n \"-moz-box-shadow\": 1,\n \"-webkit-box-shadow\": 1,\n \"transform\": { \"rotate($00deg)\": 1, \"skew($00deg)\": 1 },\n \"-moz-transform\": { \"rotate($00deg)\": 1, \"skew($00deg)\": 1 },\n \"-webkit-transform\": { \"rotate($00deg)\": 1, \"skew($00deg)\": 1 }\n};\nvar CssCompletions = function () {\n};\n(function () {\n this.completionsDefined = false;\n this.defineCompletions = function () {\n if (document) {\n var style = document.createElement('c').style;\n for (var i in style) {\n if (typeof style[i] !== 'string')\n continue;\n var name = i.replace(/[A-Z]/g, function (x) {\n return '-' + x.toLowerCase();\n });\n if (!propertyMap.hasOwnProperty(name))\n propertyMap[name] = 1;\n }\n }\n this.completionsDefined = true;\n };\n this.getCompletions = function (state, session, pos, prefix) {\n if (!this.completionsDefined) {\n this.defineCompletions();\n }\n if (state === 'ruleset' || session.$mode.$id == \"ace/mode/scss\") {\n var line = session.getLine(pos.row).substr(0, pos.column);\n var inParens = /\\([^)]*$/.test(line);\n if (inParens) {\n line = line.substr(line.lastIndexOf('(') + 1);\n }\n if (/:[^;]+$/.test(line)) {\n /([\\w\\-]+):[^:]*$/.test(line);\n return this.getPropertyValueCompletions(state, session, pos, prefix);\n }\n else {\n return this.getPropertyCompletions(state, session, pos, prefix, inParens);\n }\n }\n return [];\n };\n this.getPropertyCompletions = function (state, session, pos, prefix, skipSemicolon) {\n skipSemicolon = skipSemicolon || false;\n var properties = Object.keys(propertyMap);\n return properties.map(function (property) {\n return {\n caption: property,\n snippet: property + ': $0' + (skipSemicolon ? '' : ';'),\n meta: \"property\",\n score: 1000000\n };\n });\n };\n this.getPropertyValueCompletions = function (state, session, pos, prefix) {\n var line = session.getLine(pos.row).substr(0, pos.column);\n var property = (/([\\w\\-]+):[^:]*$/.exec(line) || {})[1];\n if (!property)\n return [];\n var values = [];\n if (property in propertyMap && typeof propertyMap[property] === \"object\") {\n values = Object.keys(propertyMap[property]);\n }\n return values.map(function (value) {\n return {\n caption: value,\n snippet: value,\n meta: \"property value\",\n score: 1000000\n };\n });\n };\n}).call(CssCompletions.prototype);\nexports.CssCompletions = CssCompletions;\n\n});\n\nace.define(\"ace/mode/behaviour/css\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/behaviour\",\"ace/mode/behaviour/cstyle\",\"ace/token_iterator\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../../lib/oop\");\nvar Behaviour = require(\"../behaviour\").Behaviour;\nvar CstyleBehaviour = require(\"./cstyle\").CstyleBehaviour;\nvar TokenIterator = require(\"../../token_iterator\").TokenIterator;\nvar CssBehaviour = function () {\n this.inherit(CstyleBehaviour);\n this.add(\"colon\", \"insertion\", function (state, action, editor, session, text) {\n if (text === ':' && editor.selection.isEmpty()) {\n var cursor = editor.getCursorPosition();\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n var token = iterator.getCurrentToken();\n if (token && token.value.match(/\\s+/)) {\n token = iterator.stepBackward();\n }\n if (token && token.type === 'support.type') {\n var line = session.doc.getLine(cursor.row);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n if (rightChar === ':') {\n return {\n text: '',\n selection: [1, 1]\n };\n }\n if (/^(\\s+[^;]|\\s*$)/.test(line.substring(cursor.column))) {\n return {\n text: ':;',\n selection: [1, 1]\n };\n }\n }\n }\n });\n this.add(\"colon\", \"deletion\", function (state, action, editor, session, range) {\n var selected = session.doc.getTextRange(range);\n if (!range.isMultiLine() && selected === ':') {\n var cursor = editor.getCursorPosition();\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n var token = iterator.getCurrentToken();\n if (token && token.value.match(/\\s+/)) {\n token = iterator.stepBackward();\n }\n if (token && token.type === 'support.type') {\n var line = session.doc.getLine(range.start.row);\n var rightChar = line.substring(range.end.column, range.end.column + 1);\n if (rightChar === ';') {\n range.end.column++;\n return range;\n }\n }\n }\n });\n this.add(\"semicolon\", \"insertion\", function (state, action, editor, session, text) {\n if (text === ';' && editor.selection.isEmpty()) {\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n if (rightChar === ';') {\n return {\n text: '',\n selection: [1, 1]\n };\n }\n }\n });\n this.add(\"!important\", \"insertion\", function (state, action, editor, session, text) {\n if (text === '!' && editor.selection.isEmpty()) {\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n if (/^\\s*(;|}|$)/.test(line.substring(cursor.column))) {\n return {\n text: '!important',\n selection: [10, 10]\n };\n }\n }\n });\n};\noop.inherits(CssBehaviour, CstyleBehaviour);\nexports.CssBehaviour = CssBehaviour;\n\n});\n\nace.define(\"ace/mode/folding/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/range\",\"ace/mode/folding/fold_mode\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../../lib/oop\");\nvar Range = require(\"../../range\").Range;\nvar BaseFoldMode = require(\"./fold_mode\").FoldMode;\nvar FoldMode = exports.FoldMode = function (commentRegex) {\n if (commentRegex) {\n this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.start));\n this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.end));\n }\n};\noop.inherits(FoldMode, BaseFoldMode);\n(function () {\n this.foldingStartMarker = /([\\{\\[\\(])[^\\}\\]\\)]*$|^\\s*(\\/\\*)/;\n this.foldingStopMarker = /^[^\\[\\{\\(]*([\\}\\]\\)])|^[\\s\\*]*(\\*\\/)/;\n this.singleLineBlockCommentRe = /^\\s*(\\/\\*).*\\*\\/\\s*$/;\n this.tripleStarBlockCommentRe = /^\\s*(\\/\\*\\*\\*).*\\*\\/\\s*$/;\n this.startRegionRe = /^\\s*(\\/\\*|\\/\\/)#?region\\b/;\n this._getFoldWidgetBase = this.getFoldWidget;\n this.getFoldWidget = function (session, foldStyle, row) {\n var line = session.getLine(row);\n if (this.singleLineBlockCommentRe.test(line)) {\n if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line))\n return \"\";\n }\n var fw = this._getFoldWidgetBase(session, foldStyle, row);\n if (!fw && this.startRegionRe.test(line))\n return \"start\"; // lineCommentRegionStart\n return fw;\n };\n this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) {\n var line = session.getLine(row);\n if (this.startRegionRe.test(line))\n return this.getCommentRegionBlock(session, line, row);\n var match = line.match(this.foldingStartMarker);\n if (match) {\n var i = match.index;\n if (match[1])\n return this.openingBracketBlock(session, match[1], row, i);\n var range = session.getCommentFoldRange(row, i + match[0].length, 1);\n if (range && !range.isMultiLine()) {\n if (forceMultiline) {\n range = this.getSectionRange(session, row);\n }\n else if (foldStyle != \"all\")\n range = null;\n }\n return range;\n }\n if (foldStyle === \"markbegin\")\n return;\n var match = line.match(this.foldingStopMarker);\n if (match) {\n var i = match.index + match[0].length;\n if (match[1])\n return this.closingBracketBlock(session, match[1], row, i);\n return session.getCommentFoldRange(row, i, -1);\n }\n };\n this.getSectionRange = function (session, row) {\n var line = session.getLine(row);\n var startIndent = line.search(/\\S/);\n var startRow = row;\n var startColumn = line.length;\n row = row + 1;\n var endRow = row;\n var maxRow = session.getLength();\n while (++row < maxRow) {\n line = session.getLine(row);\n var indent = line.search(/\\S/);\n if (indent === -1)\n continue;\n if (startIndent > indent)\n break;\n var subRange = this.getFoldWidgetRange(session, \"all\", row);\n if (subRange) {\n if (subRange.start.row <= startRow) {\n break;\n }\n else if (subRange.isMultiLine()) {\n row = subRange.end.row;\n }\n else if (startIndent == indent) {\n break;\n }\n }\n endRow = row;\n }\n return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);\n };\n this.getCommentRegionBlock = function (session, line, row) {\n var startColumn = line.search(/\\s*$/);\n var maxRow = session.getLength();\n var startRow = row;\n var re = /^\\s*(?:\\/\\*|\\/\\/|--)#?(end)?region\\b/;\n var depth = 1;\n while (++row < maxRow) {\n line = session.getLine(row);\n var m = re.exec(line);\n if (!m)\n continue;\n if (m[1])\n depth--;\n else\n depth++;\n if (!depth)\n break;\n }\n var endRow = row;\n if (endRow > startRow) {\n return new Range(startRow, startColumn, endRow, line.length);\n }\n };\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/css\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/css_highlight_rules\",\"ace/mode/matching_brace_outdent\",\"ace/worker/worker_client\",\"ace/mode/css_completions\",\"ace/mode/behaviour/css\",\"ace/mode/folding/cstyle\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar TextMode = require(\"./text\").Mode;\nvar CssHighlightRules = require(\"./css_highlight_rules\").CssHighlightRules;\nvar MatchingBraceOutdent = require(\"./matching_brace_outdent\").MatchingBraceOutdent;\nvar WorkerClient = require(\"../worker/worker_client\").WorkerClient;\nvar CssCompletions = require(\"./css_completions\").CssCompletions;\nvar CssBehaviour = require(\"./behaviour/css\").CssBehaviour;\nvar CStyleFoldMode = require(\"./folding/cstyle\").FoldMode;\nvar Mode = function () {\n this.HighlightRules = CssHighlightRules;\n this.$outdent = new MatchingBraceOutdent();\n this.$behaviour = new CssBehaviour();\n this.$completer = new CssCompletions();\n this.foldingRules = new CStyleFoldMode();\n};\noop.inherits(Mode, TextMode);\n(function () {\n this.foldingRules = \"cStyle\";\n this.blockComment = { start: \"/*\", end: \"*/\" };\n this.getNextLineIndent = function (state, line, tab) {\n var indent = this.$getIndent(line);\n var tokens = this.getTokenizer().getLineTokens(line, state).tokens;\n if (tokens.length && tokens[tokens.length - 1].type == \"comment\") {\n return indent;\n }\n var match = line.match(/^.*\\{\\s*$/);\n if (match) {\n indent += tab;\n }\n return indent;\n };\n this.checkOutdent = function (state, line, input) {\n return this.$outdent.checkOutdent(line, input);\n };\n this.autoOutdent = function (state, doc, row) {\n this.$outdent.autoOutdent(doc, row);\n };\n this.getCompletions = function (state, session, pos, prefix) {\n return this.$completer.getCompletions(state, session, pos, prefix);\n };\n this.createWorker = function (session) {\n var worker = new WorkerClient([\"ace\"], \"ace/mode/css_worker\", \"Worker\");\n worker.attachToDocument(session.getDocument());\n worker.on(\"annotate\", function (e) {\n session.setAnnotations(e.data);\n });\n worker.on(\"terminate\", function () {\n session.clearAnnotations();\n });\n return worker;\n };\n this.$id = \"ace/mode/css\";\n this.snippetFileId = \"ace/snippets/css\";\n}).call(Mode.prototype);\nexports.Mode = Mode;\n\n}); (function() {\n ace.require([\"ace/mode/css\"], function(m) {\n if (typeof module == \"object\" && typeof exports == \"object\" && module) {\n module.exports = m;\n }\n });\n })();\n ","ace.define(\"ace/mode/doc_comment_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar TextHighlightRules = require(\"./text_highlight_rules\").TextHighlightRules;\nvar DocCommentHighlightRules = function () {\n this.$rules = {\n \"start\": [\n {\n token: \"comment.doc.tag\",\n regex: \"@\\\\w+(?=\\\\s|$)\"\n }, DocCommentHighlightRules.getTagRule(), {\n defaultToken: \"comment.doc\",\n caseInsensitive: true\n }\n ]\n };\n};\noop.inherits(DocCommentHighlightRules, TextHighlightRules);\nDocCommentHighlightRules.getTagRule = function (start) {\n return {\n token: \"comment.doc.tag.storage.type\",\n regex: \"\\\\b(?:TODO|FIXME|XXX|HACK)\\\\b\"\n };\n};\nDocCommentHighlightRules.getStartRule = function (start) {\n return {\n token: \"comment.doc\",\n regex: \"\\\\/\\\\*(?=\\\\*)\",\n next: start\n };\n};\nDocCommentHighlightRules.getEndRule = function (start) {\n return {\n token: \"comment.doc\",\n regex: \"\\\\*\\\\/\",\n next: start\n };\n};\nexports.DocCommentHighlightRules = DocCommentHighlightRules;\n\n});\n\nace.define(\"ace/mode/golang_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/doc_comment_highlight_rules\",\"ace/mode/text_highlight_rules\"], function(require, exports, module){var oop = require(\"../lib/oop\");\nvar DocCommentHighlightRules = require(\"./doc_comment_highlight_rules\").DocCommentHighlightRules;\nvar TextHighlightRules = require(\"./text_highlight_rules\").TextHighlightRules;\nvar GolangHighlightRules = function () {\n var keywords = (\"else|break|case|return|goto|if|const|select|\" +\n \"continue|struct|default|switch|for|range|\" +\n \"func|import|package|chan|defer|fallthrough|go|interface|map|range|\" +\n \"select|type|var\");\n var builtinTypes = (\"string|uint8|uint16|uint32|uint64|int8|int16|int32|int64|float32|\" +\n \"float64|complex64|complex128|byte|rune|uint|int|uintptr|bool|error\");\n var builtinFunctions = (\"new|close|cap|copy|panic|panicln|print|println|len|make|delete|real|recover|imag|append\");\n var builtinConstants = (\"nil|true|false|iota\");\n var keywordMapper = this.createKeywordMapper({\n \"keyword\": keywords,\n \"constant.language\": builtinConstants,\n \"support.function\": builtinFunctions,\n \"support.type\": builtinTypes\n }, \"\");\n var stringEscapeRe = \"\\\\\\\\(?:[0-7]{3}|x\\\\h{2}|u{4}|U\\\\h{6}|[abfnrtv'\\\"\\\\\\\\])\".replace(/\\\\h/g, \"[a-fA-F\\\\d]\");\n this.$rules = {\n \"start\": [\n {\n token: \"comment\",\n regex: \"\\\\/\\\\/.*$\"\n },\n DocCommentHighlightRules.getStartRule(\"doc-start\"),\n {\n token: \"comment.start\",\n regex: \"\\\\/\\\\*\",\n next: \"comment\"\n }, {\n token: \"string\",\n regex: /\"(?:[^\"\\\\]|\\\\.)*?\"/\n }, {\n token: \"string\",\n regex: '`',\n next: \"bqstring\"\n }, {\n token: \"constant.numeric\",\n regex: \"'(?:[^\\\\'\\uD800-\\uDBFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|\" + stringEscapeRe.replace('\"', '') + \")'\"\n }, {\n token: \"constant.numeric\",\n regex: \"0[xX][0-9a-fA-F]+\\\\b\"\n }, {\n token: \"constant.numeric\",\n regex: \"[+-]?\\\\d+(?:(?:\\\\.\\\\d*)?(?:[eE][+-]?\\\\d+)?)?\\\\b\"\n }, {\n token: [\"keyword\", \"text\", \"entity.name.function\"],\n regex: \"(func)(\\\\s+)([a-zA-Z_$][a-zA-Z0-9_$]*)\\\\b\"\n }, {\n token: function (val) {\n if (val[val.length - 1] == \"(\") {\n return [{\n type: keywordMapper(val.slice(0, -1)) || \"support.function\",\n value: val.slice(0, -1)\n }, {\n type: \"paren.lparen\",\n value: val.slice(-1)\n }];\n }\n return keywordMapper(val) || \"identifier\";\n },\n regex: \"[a-zA-Z_$][a-zA-Z0-9_$]*\\\\b\\\\(?\"\n }, {\n token: \"keyword.operator\",\n regex: \"!|\\\\$|%|&|\\\\*|\\\\-\\\\-|\\\\-|\\\\+\\\\+|\\\\+|~|==|=|!=|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\\\|\\\\||\\\\?\\\\:|\\\\*=|%=|\\\\+=|\\\\-=|&=|\\\\^=\"\n }, {\n token: \"punctuation.operator\",\n regex: \"\\\\?|\\\\:|\\\\,|\\\\;|\\\\.\"\n }, {\n token: \"paren.lparen\",\n regex: \"[[({]\"\n }, {\n token: \"paren.rparen\",\n regex: \"[\\\\])}]\"\n }, {\n token: \"text\",\n regex: \"\\\\s+\"\n }\n ],\n \"comment\": [\n {\n token: \"comment.end\",\n regex: \"\\\\*\\\\/\",\n next: \"start\"\n }, {\n defaultToken: \"comment\"\n }\n ],\n \"bqstring\": [\n {\n token: \"string\",\n regex: '`',\n next: \"start\"\n }, {\n defaultToken: \"string\"\n }\n ]\n };\n this.embedRules(DocCommentHighlightRules, \"doc-\", [DocCommentHighlightRules.getEndRule(\"start\")]);\n};\noop.inherits(GolangHighlightRules, TextHighlightRules);\nexports.GolangHighlightRules = GolangHighlightRules;\n\n});\n\nace.define(\"ace/mode/matching_brace_outdent\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar Range = require(\"../range\").Range;\nvar MatchingBraceOutdent = function () { };\n(function () {\n this.checkOutdent = function (line, input) {\n if (!/^\\s+$/.test(line))\n return false;\n return /^\\s*\\}/.test(input);\n };\n this.autoOutdent = function (doc, row) {\n var line = doc.getLine(row);\n var match = line.match(/^(\\s*\\})/);\n if (!match)\n return 0;\n var column = match[1].length;\n var openBracePos = doc.findMatchingBracket({ row: row, column: column });\n if (!openBracePos || openBracePos.row == row)\n return 0;\n var indent = this.$getIndent(doc.getLine(openBracePos.row));\n doc.replace(new Range(row, 0, row, column - 1), indent);\n };\n this.$getIndent = function (line) {\n return line.match(/^\\s*/)[0];\n };\n}).call(MatchingBraceOutdent.prototype);\nexports.MatchingBraceOutdent = MatchingBraceOutdent;\n\n});\n\nace.define(\"ace/mode/folding/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/range\",\"ace/mode/folding/fold_mode\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../../lib/oop\");\nvar Range = require(\"../../range\").Range;\nvar BaseFoldMode = require(\"./fold_mode\").FoldMode;\nvar FoldMode = exports.FoldMode = function (commentRegex) {\n if (commentRegex) {\n this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.start));\n this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.end));\n }\n};\noop.inherits(FoldMode, BaseFoldMode);\n(function () {\n this.foldingStartMarker = /([\\{\\[\\(])[^\\}\\]\\)]*$|^\\s*(\\/\\*)/;\n this.foldingStopMarker = /^[^\\[\\{\\(]*([\\}\\]\\)])|^[\\s\\*]*(\\*\\/)/;\n this.singleLineBlockCommentRe = /^\\s*(\\/\\*).*\\*\\/\\s*$/;\n this.tripleStarBlockCommentRe = /^\\s*(\\/\\*\\*\\*).*\\*\\/\\s*$/;\n this.startRegionRe = /^\\s*(\\/\\*|\\/\\/)#?region\\b/;\n this._getFoldWidgetBase = this.getFoldWidget;\n this.getFoldWidget = function (session, foldStyle, row) {\n var line = session.getLine(row);\n if (this.singleLineBlockCommentRe.test(line)) {\n if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line))\n return \"\";\n }\n var fw = this._getFoldWidgetBase(session, foldStyle, row);\n if (!fw && this.startRegionRe.test(line))\n return \"start\"; // lineCommentRegionStart\n return fw;\n };\n this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) {\n var line = session.getLine(row);\n if (this.startRegionRe.test(line))\n return this.getCommentRegionBlock(session, line, row);\n var match = line.match(this.foldingStartMarker);\n if (match) {\n var i = match.index;\n if (match[1])\n return this.openingBracketBlock(session, match[1], row, i);\n var range = session.getCommentFoldRange(row, i + match[0].length, 1);\n if (range && !range.isMultiLine()) {\n if (forceMultiline) {\n range = this.getSectionRange(session, row);\n }\n else if (foldStyle != \"all\")\n range = null;\n }\n return range;\n }\n if (foldStyle === \"markbegin\")\n return;\n var match = line.match(this.foldingStopMarker);\n if (match) {\n var i = match.index + match[0].length;\n if (match[1])\n return this.closingBracketBlock(session, match[1], row, i);\n return session.getCommentFoldRange(row, i, -1);\n }\n };\n this.getSectionRange = function (session, row) {\n var line = session.getLine(row);\n var startIndent = line.search(/\\S/);\n var startRow = row;\n var startColumn = line.length;\n row = row + 1;\n var endRow = row;\n var maxRow = session.getLength();\n while (++row < maxRow) {\n line = session.getLine(row);\n var indent = line.search(/\\S/);\n if (indent === -1)\n continue;\n if (startIndent > indent)\n break;\n var subRange = this.getFoldWidgetRange(session, \"all\", row);\n if (subRange) {\n if (subRange.start.row <= startRow) {\n break;\n }\n else if (subRange.isMultiLine()) {\n row = subRange.end.row;\n }\n else if (startIndent == indent) {\n break;\n }\n }\n endRow = row;\n }\n return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);\n };\n this.getCommentRegionBlock = function (session, line, row) {\n var startColumn = line.search(/\\s*$/);\n var maxRow = session.getLength();\n var startRow = row;\n var re = /^\\s*(?:\\/\\*|\\/\\/|--)#?(end)?region\\b/;\n var depth = 1;\n while (++row < maxRow) {\n line = session.getLine(row);\n var m = re.exec(line);\n if (!m)\n continue;\n if (m[1])\n depth--;\n else\n depth++;\n if (!depth)\n break;\n }\n var endRow = row;\n if (endRow > startRow) {\n return new Range(startRow, startColumn, endRow, line.length);\n }\n };\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/golang\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/golang_highlight_rules\",\"ace/mode/matching_brace_outdent\",\"ace/mode/folding/cstyle\"], function(require, exports, module){var oop = require(\"../lib/oop\");\nvar TextMode = require(\"./text\").Mode;\nvar GolangHighlightRules = require(\"./golang_highlight_rules\").GolangHighlightRules;\nvar MatchingBraceOutdent = require(\"./matching_brace_outdent\").MatchingBraceOutdent;\nvar CStyleFoldMode = require(\"./folding/cstyle\").FoldMode;\nvar Mode = function () {\n this.HighlightRules = GolangHighlightRules;\n this.$outdent = new MatchingBraceOutdent();\n this.foldingRules = new CStyleFoldMode();\n this.$behaviour = this.$defaultBehaviour;\n};\noop.inherits(Mode, TextMode);\n(function () {\n this.lineCommentStart = \"//\";\n this.blockComment = { start: \"/*\", end: \"*/\" };\n this.getNextLineIndent = function (state, line, tab) {\n var indent = this.$getIndent(line);\n var tokenizedLine = this.getTokenizer().getLineTokens(line, state);\n var tokens = tokenizedLine.tokens;\n var endState = tokenizedLine.state;\n if (tokens.length && tokens[tokens.length - 1].type == \"comment\") {\n return indent;\n }\n if (state == \"start\") {\n var match = line.match(/^.*[\\{\\(\\[]\\s*$/);\n if (match) {\n indent += tab;\n }\n }\n return indent;\n }; //end getNextLineIndent\n this.checkOutdent = function (state, line, input) {\n return this.$outdent.checkOutdent(line, input);\n };\n this.autoOutdent = function (state, doc, row) {\n this.$outdent.autoOutdent(doc, row);\n };\n this.$id = \"ace/mode/golang\";\n}).call(Mode.prototype);\nexports.Mode = Mode;\n\n}); (function() {\n ace.require([\"ace/mode/golang\"], function(m) {\n if (typeof module == \"object\" && typeof exports == \"object\" && module) {\n module.exports = m;\n }\n });\n })();\n ","ace.define(\"ace/mode/jsdoc_comment_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar TextHighlightRules = require(\"./text_highlight_rules\").TextHighlightRules;\nvar JsDocCommentHighlightRules = function () {\n this.$rules = {\n \"start\": [\n {\n token: [\"comment.doc.tag\", \"comment.doc.text\", \"lparen.doc\"],\n regex: \"(@(?:param|member|typedef|property|namespace|var|const|callback))(\\\\s*)({)\",\n push: [\n {\n token: \"lparen.doc\",\n regex: \"{\",\n push: [\n {\n include: \"doc-syntax\"\n }, {\n token: \"rparen.doc\",\n regex: \"}|(?=$)\",\n next: \"pop\"\n }\n ]\n }, {\n token: [\"rparen.doc\", \"text.doc\", \"variable.parameter.doc\", \"lparen.doc\", \"variable.parameter.doc\", \"rparen.doc\"],\n regex: /(})(\\s*)(?:([\\w=:\\/\\.]+)|(?:(\\[)([\\w=:\\/\\.]+)(\\])))/,\n next: \"pop\"\n }, {\n token: \"rparen.doc\",\n regex: \"}|(?=$)\",\n next: \"pop\"\n }, {\n include: \"doc-syntax\"\n }, {\n defaultToken: \"text.doc\"\n }\n ]\n }, {\n token: [\"comment.doc.tag\", \"text.doc\", \"lparen.doc\"],\n regex: \"(@(?:returns?|yields|type|this|suppress|public|protected|private|package|modifies|\"\n + \"implements|external|exception|throws|enum|define|extends))(\\\\s*)({)\",\n push: [\n {\n token: \"lparen.doc\",\n regex: \"{\",\n push: [\n {\n include: \"doc-syntax\"\n }, {\n token: \"rparen.doc\",\n regex: \"}|(?=$)\",\n next: \"pop\"\n }\n ]\n }, {\n token: \"rparen.doc\",\n regex: \"}|(?=$)\",\n next: \"pop\"\n }, {\n include: \"doc-syntax\"\n }, {\n defaultToken: \"text.doc\"\n }\n ]\n }, {\n token: [\"comment.doc.tag\", \"text.doc\", \"variable.parameter.doc\"],\n regex: \"(@(?:alias|memberof|instance|module|name|lends|namespace|external|this|template|\"\n + \"requires|param|implements|function|extends|typedef|mixes|constructor|var|\"\n + \"memberof\\\\!|event|listens|exports|class|constructs|interface|emits|fires|\"\n + \"throws|const|callback|borrows|augments))(\\\\s+)(\\\\w[\\\\w#\\.:\\/~\\\"\\\\-]*)?\"\n }, {\n token: [\"comment.doc.tag\", \"text.doc\", \"variable.parameter.doc\"],\n regex: \"(@method)(\\\\s+)(\\\\w[\\\\w\\.\\\\(\\\\)]*)\"\n }, {\n token: \"comment.doc.tag\",\n regex: \"@access\\\\s+(?:private|public|protected)\"\n }, {\n token: \"comment.doc.tag\",\n regex: \"@kind\\\\s+(?:class|constant|event|external|file|function|member|mixin|module|namespace|typedef)\"\n }, {\n token: \"comment.doc.tag\",\n regex: \"@\\\\w+(?=\\\\s|$)\"\n },\n JsDocCommentHighlightRules.getTagRule(),\n {\n defaultToken: \"comment.doc\",\n caseInsensitive: true\n }\n ],\n \"doc-syntax\": [{\n token: \"operator.doc\",\n regex: /[|:]/\n }, {\n token: \"paren.doc\",\n regex: /[\\[\\]]/\n }]\n };\n this.normalizeRules();\n};\noop.inherits(JsDocCommentHighlightRules, TextHighlightRules);\nJsDocCommentHighlightRules.getTagRule = function (start) {\n return {\n token: \"comment.doc.tag.storage.type\",\n regex: \"\\\\b(?:TODO|FIXME|XXX|HACK)\\\\b\"\n };\n};\nJsDocCommentHighlightRules.getStartRule = function (start) {\n return {\n token: \"comment.doc\",\n regex: \"\\\\/\\\\*(?=\\\\*)\",\n next: start\n };\n};\nJsDocCommentHighlightRules.getEndRule = function (start) {\n return {\n token: \"comment.doc\",\n regex: \"\\\\*\\\\/\",\n next: start\n };\n};\nexports.JsDocCommentHighlightRules = JsDocCommentHighlightRules;\n\n});\n\nace.define(\"ace/mode/javascript_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/jsdoc_comment_highlight_rules\",\"ace/mode/text_highlight_rules\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar DocCommentHighlightRules = require(\"./jsdoc_comment_highlight_rules\").JsDocCommentHighlightRules;\nvar TextHighlightRules = require(\"./text_highlight_rules\").TextHighlightRules;\nvar identifierRe = \"[a-zA-Z\\\\$_\\u00a1-\\uffff][a-zA-Z\\\\d\\\\$_\\u00a1-\\uffff]*\";\nvar JavaScriptHighlightRules = function (options) {\n var keywordMapper = this.createKeywordMapper({\n \"variable.language\": \"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Symbol|\" + // Constructors\n \"Namespace|QName|XML|XMLList|\" + // E4X\n \"ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|\" +\n \"Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|\" +\n \"Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|\" + // Errors\n \"SyntaxError|TypeError|URIError|\" +\n \"decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|\" + // Non-constructor functions\n \"isNaN|parseFloat|parseInt|\" +\n \"JSON|Math|\" + // Other\n \"this|arguments|prototype|window|document\",\n \"keyword\": \"const|yield|import|get|set|async|await|\" +\n \"break|case|catch|continue|default|delete|do|else|finally|for|function|\" +\n \"if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|\" +\n \"__parent__|__count__|escape|unescape|with|__proto__|\" +\n \"class|enum|extends|super|export|implements|private|public|interface|package|protected|static|constructor\",\n \"storage.type\": \"const|let|var|function\",\n \"constant.language\": \"null|Infinity|NaN|undefined\",\n \"support.function\": \"alert\",\n \"constant.language.boolean\": \"true|false\"\n }, \"identifier\");\n var kwBeforeRe = \"case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void\";\n var escapedRe = \"\\\\\\\\(?:x[0-9a-fA-F]{2}|\" + // hex\n \"u[0-9a-fA-F]{4}|\" + // unicode\n \"u{[0-9a-fA-F]{1,6}}|\" + // es6 unicode\n \"[0-2][0-7]{0,2}|\" + // oct\n \"3[0-7][0-7]?|\" + // oct\n \"[4-7][0-7]?|\" + //oct\n \".)\";\n this.$rules = {\n \"no_regex\": [\n DocCommentHighlightRules.getStartRule(\"doc-start\"),\n comments(\"no_regex\"),\n {\n token: \"string\",\n regex: \"'(?=.)\",\n next: \"qstring\"\n }, {\n token: \"string\",\n regex: '\"(?=.)',\n next: \"qqstring\"\n }, {\n token: \"constant.numeric\",\n regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\\b/\n }, {\n token: \"constant.numeric\",\n regex: /(?:\\d\\d*(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+\\b)?/\n }, {\n token: [\n \"storage.type\", \"punctuation.operator\", \"support.function\",\n \"punctuation.operator\", \"entity.name.function\", \"text\", \"keyword.operator\"\n ],\n regex: \"(\" + identifierRe + \")(\\\\.)(prototype)(\\\\.)(\" + identifierRe + \")(\\\\s*)(=)\",\n next: \"function_arguments\"\n }, {\n token: [\n \"storage.type\", \"punctuation.operator\", \"entity.name.function\", \"text\",\n \"keyword.operator\", \"text\", \"storage.type\", \"text\", \"paren.lparen\"\n ],\n regex: \"(\" + identifierRe + \")(\\\\.)(\" + identifierRe + \")(\\\\s*)(=)(\\\\s*)(function\\\\*?)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token: [\n \"entity.name.function\", \"text\", \"keyword.operator\", \"text\", \"storage.type\",\n \"text\", \"paren.lparen\"\n ],\n regex: \"(\" + identifierRe + \")(\\\\s*)(=)(\\\\s*)(function\\\\*?)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token: [\n \"storage.type\", \"punctuation.operator\", \"entity.name.function\", \"text\",\n \"keyword.operator\", \"text\",\n \"storage.type\", \"text\", \"entity.name.function\", \"text\", \"paren.lparen\"\n ],\n regex: \"(\" + identifierRe + \")(\\\\.)(\" + identifierRe + \")(\\\\s*)(=)(\\\\s*)(function\\\\*?)(\\\\s+)(\\\\w+)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token: [\n \"storage.type\", \"text\", \"entity.name.function\", \"text\", \"paren.lparen\"\n ],\n regex: \"(function\\\\*?)(\\\\s+)(\" + identifierRe + \")(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token: [\n \"entity.name.function\", \"text\", \"punctuation.operator\",\n \"text\", \"storage.type\", \"text\", \"paren.lparen\"\n ],\n regex: \"(\" + identifierRe + \")(\\\\s*)(:)(\\\\s*)(function\\\\*?)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token: [\n \"text\", \"text\", \"storage.type\", \"text\", \"paren.lparen\"\n ],\n regex: \"(:)(\\\\s*)(function\\\\*?)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token: \"keyword\",\n regex: \"from(?=\\\\s*('|\\\"))\"\n }, {\n token: \"keyword\",\n regex: \"(?:\" + kwBeforeRe + \")\\\\b\",\n next: \"start\"\n }, {\n token: \"support.constant\",\n regex: /that\\b/\n }, {\n token: [\"storage.type\", \"punctuation.operator\", \"support.function.firebug\"],\n regex: /(console)(\\.)(warn|info|log|error|time|trace|timeEnd|assert)\\b/\n }, {\n token: keywordMapper,\n regex: identifierRe\n }, {\n token: \"punctuation.operator\",\n regex: /[.](?![.])/,\n next: \"property\"\n }, {\n token: \"storage.type\",\n regex: /=>/,\n next: \"start\"\n }, {\n token: \"keyword.operator\",\n regex: /--|\\+\\+|\\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\\|\\||\\?:|[!$%&*+\\-~\\/^]=?/,\n next: \"start\"\n }, {\n token: \"punctuation.operator\",\n regex: /[?:,;.]/,\n next: \"start\"\n }, {\n token: \"paren.lparen\",\n regex: /[\\[({]/,\n next: \"start\"\n }, {\n token: \"paren.rparen\",\n regex: /[\\])}]/\n }, {\n token: \"comment\",\n regex: /^#!.*$/\n }\n ],\n property: [{\n token: \"text\",\n regex: \"\\\\s+\"\n }, {\n token: [\n \"storage.type\", \"punctuation.operator\", \"entity.name.function\", \"text\",\n \"keyword.operator\", \"text\",\n \"storage.type\", \"text\", \"entity.name.function\", \"text\", \"paren.lparen\"\n ],\n regex: \"(\" + identifierRe + \")(\\\\.)(\" + identifierRe + \")(\\\\s*)(=)(\\\\s*)(function\\\\*?)(?:(\\\\s+)(\\\\w+))?(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token: \"punctuation.operator\",\n regex: /[.](?![.])/\n }, {\n token: \"support.function\",\n regex: /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|lter|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward|rEach)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\\b(?=\\()/\n }, {\n token: \"support.function.dom\",\n regex: /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\\b(?=\\()/\n }, {\n token: \"support.constant\",\n regex: /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\\b/\n }, {\n token: \"identifier\",\n regex: identifierRe\n }, {\n regex: \"\",\n token: \"empty\",\n next: \"no_regex\"\n }\n ],\n \"start\": [\n DocCommentHighlightRules.getStartRule(\"doc-start\"),\n comments(\"start\"),\n {\n token: \"string.regexp\",\n regex: \"\\\\/\",\n next: \"regex\"\n }, {\n token: \"text\",\n regex: \"\\\\s+|^$\",\n next: \"start\"\n }, {\n token: \"empty\",\n regex: \"\",\n next: \"no_regex\"\n }\n ],\n \"regex\": [\n {\n token: \"regexp.keyword.operator\",\n regex: \"\\\\\\\\(?:u[\\\\da-fA-F]{4}|x[\\\\da-fA-F]{2}|.)\"\n }, {\n token: \"string.regexp\",\n regex: \"/[sxngimy]*\",\n next: \"no_regex\"\n }, {\n token: \"invalid\",\n regex: /\\{\\d+\\b,?\\d*\\}[+*]|[+*$^?][+*]|[$^][?]|\\?{3,}/\n }, {\n token: \"constant.language.escape\",\n regex: /\\(\\?[:=!]|\\)|\\{\\d+\\b,?\\d*\\}|[+*]\\?|[()$^+*?.]/\n }, {\n token: \"constant.language.delimiter\",\n regex: /\\|/\n }, {\n token: \"constant.language.escape\",\n regex: /\\[\\^?/,\n next: \"regex_character_class\"\n }, {\n token: \"empty\",\n regex: \"$\",\n next: \"no_regex\"\n }, {\n defaultToken: \"string.regexp\"\n }\n ],\n \"regex_character_class\": [\n {\n token: \"regexp.charclass.keyword.operator\",\n regex: \"\\\\\\\\(?:u[\\\\da-fA-F]{4}|x[\\\\da-fA-F]{2}|.)\"\n }, {\n token: \"constant.language.escape\",\n regex: \"]\",\n next: \"regex\"\n }, {\n token: \"constant.language.escape\",\n regex: \"-\"\n }, {\n token: \"empty\",\n regex: \"$\",\n next: \"no_regex\"\n }, {\n defaultToken: \"string.regexp.charachterclass\"\n }\n ],\n \"default_parameter\": [\n {\n token: \"string\",\n regex: \"'(?=.)\",\n push: [\n {\n token: \"string\",\n regex: \"'|$\",\n next: \"pop\"\n }, {\n include: \"qstring\"\n }\n ]\n }, {\n token: \"string\",\n regex: '\"(?=.)',\n push: [\n {\n token: \"string\",\n regex: '\"|$',\n next: \"pop\"\n }, {\n include: \"qqstring\"\n }\n ]\n }, {\n token: \"constant.language\",\n regex: \"null|Infinity|NaN|undefined\"\n }, {\n token: \"constant.numeric\",\n regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\\b/\n }, {\n token: \"constant.numeric\",\n regex: /(?:\\d\\d*(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+\\b)?/\n }, {\n token: \"punctuation.operator\",\n regex: \",\",\n next: \"function_arguments\"\n }, {\n token: \"text\",\n regex: \"\\\\s+\"\n }, {\n token: \"punctuation.operator\",\n regex: \"$\"\n }, {\n token: \"empty\",\n regex: \"\",\n next: \"no_regex\"\n }\n ],\n \"function_arguments\": [\n comments(\"function_arguments\"),\n {\n token: \"variable.parameter\",\n regex: identifierRe\n }, {\n token: \"punctuation.operator\",\n regex: \",\"\n }, {\n token: \"text\",\n regex: \"\\\\s+\"\n }, {\n token: \"punctuation.operator\",\n regex: \"$\"\n }, {\n token: \"empty\",\n regex: \"\",\n next: \"no_regex\"\n }\n ],\n \"qqstring\": [\n {\n token: \"constant.language.escape\",\n regex: escapedRe\n }, {\n token: \"string\",\n regex: \"\\\\\\\\$\",\n consumeLineEnd: true\n }, {\n token: \"string\",\n regex: '\"|$',\n next: \"no_regex\"\n }, {\n defaultToken: \"string\"\n }\n ],\n \"qstring\": [\n {\n token: \"constant.language.escape\",\n regex: escapedRe\n }, {\n token: \"string\",\n regex: \"\\\\\\\\$\",\n consumeLineEnd: true\n }, {\n token: \"string\",\n regex: \"'|$\",\n next: \"no_regex\"\n }, {\n defaultToken: \"string\"\n }\n ]\n };\n if (!options || !options.noES6) {\n this.$rules.no_regex.unshift({\n regex: \"[{}]\", onMatch: function (val, state, stack) {\n this.next = val == \"{\" ? this.nextState : \"\";\n if (val == \"{\" && stack.length) {\n stack.unshift(\"start\", state);\n }\n else if (val == \"}\" && stack.length) {\n stack.shift();\n this.next = stack.shift();\n if (this.next.indexOf(\"string\") != -1 || this.next.indexOf(\"jsx\") != -1)\n return \"paren.quasi.end\";\n }\n return val == \"{\" ? \"paren.lparen\" : \"paren.rparen\";\n },\n nextState: \"start\"\n }, {\n token: \"string.quasi.start\",\n regex: /`/,\n push: [{\n token: \"constant.language.escape\",\n regex: escapedRe\n }, {\n token: \"paren.quasi.start\",\n regex: /\\${/,\n push: \"start\"\n }, {\n token: \"string.quasi.end\",\n regex: /`/,\n next: \"pop\"\n }, {\n defaultToken: \"string.quasi\"\n }]\n }, {\n token: [\"variable.parameter\", \"text\"],\n regex: \"(\" + identifierRe + \")(\\\\s*)(?=\\\\=>)\"\n }, {\n token: \"paren.lparen\",\n regex: \"(\\\\()(?=.+\\\\s*=>)\",\n next: \"function_arguments\"\n }, {\n token: \"variable.language\",\n regex: \"(?:(?:(?:Weak)?(?:Set|Map))|Promise)\\\\b\"\n });\n this.$rules[\"function_arguments\"].unshift({\n token: \"keyword.operator\",\n regex: \"=\",\n next: \"default_parameter\"\n }, {\n token: \"keyword.operator\",\n regex: \"\\\\.{3}\"\n });\n this.$rules[\"property\"].unshift({\n token: \"support.function\",\n regex: \"(findIndex|repeat|startsWith|endsWith|includes|isSafeInteger|trunc|cbrt|log2|log10|sign|then|catch|\"\n + \"finally|resolve|reject|race|any|all|allSettled|keys|entries|isInteger)\\\\b(?=\\\\()\"\n }, {\n token: \"constant.language\",\n regex: \"(?:MAX_SAFE_INTEGER|MIN_SAFE_INTEGER|EPSILON)\\\\b\"\n });\n if (!options || options.jsx != false)\n JSX.call(this);\n }\n this.embedRules(DocCommentHighlightRules, \"doc-\", [DocCommentHighlightRules.getEndRule(\"no_regex\")]);\n this.normalizeRules();\n};\noop.inherits(JavaScriptHighlightRules, TextHighlightRules);\nfunction JSX() {\n var tagRegex = identifierRe.replace(\"\\\\d\", \"\\\\d\\\\-\");\n var jsxTag = {\n onMatch: function (val, state, stack) {\n var offset = val.charAt(1) == \"/\" ? 2 : 1;\n if (offset == 1) {\n if (state != this.nextState)\n stack.unshift(this.next, this.nextState, 0);\n else\n stack.unshift(this.next);\n stack[2]++;\n }\n else if (offset == 2) {\n if (state == this.nextState) {\n stack[1]--;\n if (!stack[1] || stack[1] < 0) {\n stack.shift();\n stack.shift();\n }\n }\n }\n return [{\n type: \"meta.tag.punctuation.\" + (offset == 1 ? \"\" : \"end-\") + \"tag-open.xml\",\n value: val.slice(0, offset)\n }, {\n type: \"meta.tag.tag-name.xml\",\n value: val.substr(offset)\n }];\n },\n regex: \"\",\n onMatch: function (value, currentState, stack) {\n if (currentState == stack[0])\n stack.shift();\n if (value.length == 2) {\n if (stack[0] == this.nextState)\n stack[1]--;\n if (!stack[1] || stack[1] < 0) {\n stack.splice(0, 2);\n }\n }\n this.next = stack[0] || \"start\";\n return [{ type: this.token, value: value }];\n },\n nextState: \"jsx\"\n },\n jsxJsRule,\n comments(\"jsxAttributes\"),\n {\n token: \"entity.other.attribute-name.xml\",\n regex: tagRegex\n }, {\n token: \"keyword.operator.attribute-equals.xml\",\n regex: \"=\"\n }, {\n token: \"text.tag-whitespace.xml\",\n regex: \"\\\\s+\"\n }, {\n token: \"string.attribute-value.xml\",\n regex: \"'\",\n stateName: \"jsx_attr_q\",\n push: [\n { token: \"string.attribute-value.xml\", regex: \"'\", next: \"pop\" },\n { include: \"reference\" },\n { defaultToken: \"string.attribute-value.xml\" }\n ]\n }, {\n token: \"string.attribute-value.xml\",\n regex: '\"',\n stateName: \"jsx_attr_qq\",\n push: [\n { token: \"string.attribute-value.xml\", regex: '\"', next: \"pop\" },\n { include: \"reference\" },\n { defaultToken: \"string.attribute-value.xml\" }\n ]\n },\n jsxTag\n ];\n this.$rules.reference = [{\n token: \"constant.language.escape.reference.xml\",\n regex: \"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\\\.-]+;)\"\n }];\n}\nfunction comments(next) {\n return [\n {\n token: \"comment\",\n regex: /\\/\\*/,\n next: [\n DocCommentHighlightRules.getTagRule(),\n { token: \"comment\", regex: \"\\\\*\\\\/\", next: next || \"pop\" },\n { defaultToken: \"comment\", caseInsensitive: true }\n ]\n }, {\n token: \"comment\",\n regex: \"\\\\/\\\\/\",\n next: [\n DocCommentHighlightRules.getTagRule(),\n { token: \"comment\", regex: \"$|^\", next: next || \"pop\" },\n { defaultToken: \"comment\", caseInsensitive: true }\n ]\n }\n ];\n}\nexports.JavaScriptHighlightRules = JavaScriptHighlightRules;\n\n});\n\nace.define(\"ace/mode/matching_brace_outdent\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar Range = require(\"../range\").Range;\nvar MatchingBraceOutdent = function () { };\n(function () {\n this.checkOutdent = function (line, input) {\n if (!/^\\s+$/.test(line))\n return false;\n return /^\\s*\\}/.test(input);\n };\n this.autoOutdent = function (doc, row) {\n var line = doc.getLine(row);\n var match = line.match(/^(\\s*\\})/);\n if (!match)\n return 0;\n var column = match[1].length;\n var openBracePos = doc.findMatchingBracket({ row: row, column: column });\n if (!openBracePos || openBracePos.row == row)\n return 0;\n var indent = this.$getIndent(doc.getLine(openBracePos.row));\n doc.replace(new Range(row, 0, row, column - 1), indent);\n };\n this.$getIndent = function (line) {\n return line.match(/^\\s*/)[0];\n };\n}).call(MatchingBraceOutdent.prototype);\nexports.MatchingBraceOutdent = MatchingBraceOutdent;\n\n});\n\nace.define(\"ace/mode/folding/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/range\",\"ace/mode/folding/fold_mode\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../../lib/oop\");\nvar Range = require(\"../../range\").Range;\nvar BaseFoldMode = require(\"./fold_mode\").FoldMode;\nvar FoldMode = exports.FoldMode = function (commentRegex) {\n if (commentRegex) {\n this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.start));\n this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.end));\n }\n};\noop.inherits(FoldMode, BaseFoldMode);\n(function () {\n this.foldingStartMarker = /([\\{\\[\\(])[^\\}\\]\\)]*$|^\\s*(\\/\\*)/;\n this.foldingStopMarker = /^[^\\[\\{\\(]*([\\}\\]\\)])|^[\\s\\*]*(\\*\\/)/;\n this.singleLineBlockCommentRe = /^\\s*(\\/\\*).*\\*\\/\\s*$/;\n this.tripleStarBlockCommentRe = /^\\s*(\\/\\*\\*\\*).*\\*\\/\\s*$/;\n this.startRegionRe = /^\\s*(\\/\\*|\\/\\/)#?region\\b/;\n this._getFoldWidgetBase = this.getFoldWidget;\n this.getFoldWidget = function (session, foldStyle, row) {\n var line = session.getLine(row);\n if (this.singleLineBlockCommentRe.test(line)) {\n if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line))\n return \"\";\n }\n var fw = this._getFoldWidgetBase(session, foldStyle, row);\n if (!fw && this.startRegionRe.test(line))\n return \"start\"; // lineCommentRegionStart\n return fw;\n };\n this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) {\n var line = session.getLine(row);\n if (this.startRegionRe.test(line))\n return this.getCommentRegionBlock(session, line, row);\n var match = line.match(this.foldingStartMarker);\n if (match) {\n var i = match.index;\n if (match[1])\n return this.openingBracketBlock(session, match[1], row, i);\n var range = session.getCommentFoldRange(row, i + match[0].length, 1);\n if (range && !range.isMultiLine()) {\n if (forceMultiline) {\n range = this.getSectionRange(session, row);\n }\n else if (foldStyle != \"all\")\n range = null;\n }\n return range;\n }\n if (foldStyle === \"markbegin\")\n return;\n var match = line.match(this.foldingStopMarker);\n if (match) {\n var i = match.index + match[0].length;\n if (match[1])\n return this.closingBracketBlock(session, match[1], row, i);\n return session.getCommentFoldRange(row, i, -1);\n }\n };\n this.getSectionRange = function (session, row) {\n var line = session.getLine(row);\n var startIndent = line.search(/\\S/);\n var startRow = row;\n var startColumn = line.length;\n row = row + 1;\n var endRow = row;\n var maxRow = session.getLength();\n while (++row < maxRow) {\n line = session.getLine(row);\n var indent = line.search(/\\S/);\n if (indent === -1)\n continue;\n if (startIndent > indent)\n break;\n var subRange = this.getFoldWidgetRange(session, \"all\", row);\n if (subRange) {\n if (subRange.start.row <= startRow) {\n break;\n }\n else if (subRange.isMultiLine()) {\n row = subRange.end.row;\n }\n else if (startIndent == indent) {\n break;\n }\n }\n endRow = row;\n }\n return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);\n };\n this.getCommentRegionBlock = function (session, line, row) {\n var startColumn = line.search(/\\s*$/);\n var maxRow = session.getLength();\n var startRow = row;\n var re = /^\\s*(?:\\/\\*|\\/\\/|--)#?(end)?region\\b/;\n var depth = 1;\n while (++row < maxRow) {\n line = session.getLine(row);\n var m = re.exec(line);\n if (!m)\n continue;\n if (m[1])\n depth--;\n else\n depth++;\n if (!depth)\n break;\n }\n var endRow = row;\n if (endRow > startRow) {\n return new Range(startRow, startColumn, endRow, line.length);\n }\n };\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/javascript\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/javascript_highlight_rules\",\"ace/mode/matching_brace_outdent\",\"ace/worker/worker_client\",\"ace/mode/behaviour/cstyle\",\"ace/mode/folding/cstyle\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar TextMode = require(\"./text\").Mode;\nvar JavaScriptHighlightRules = require(\"./javascript_highlight_rules\").JavaScriptHighlightRules;\nvar MatchingBraceOutdent = require(\"./matching_brace_outdent\").MatchingBraceOutdent;\nvar WorkerClient = require(\"../worker/worker_client\").WorkerClient;\nvar CstyleBehaviour = require(\"./behaviour/cstyle\").CstyleBehaviour;\nvar CStyleFoldMode = require(\"./folding/cstyle\").FoldMode;\nvar Mode = function () {\n this.HighlightRules = JavaScriptHighlightRules;\n this.$outdent = new MatchingBraceOutdent();\n this.$behaviour = new CstyleBehaviour();\n this.foldingRules = new CStyleFoldMode();\n};\noop.inherits(Mode, TextMode);\n(function () {\n this.lineCommentStart = \"//\";\n this.blockComment = { start: \"/*\", end: \"*/\" };\n this.$quotes = { '\"': '\"', \"'\": \"'\", \"`\": \"`\" };\n this.$pairQuotesAfter = {\n \"`\": /\\w/\n };\n this.getNextLineIndent = function (state, line, tab) {\n var indent = this.$getIndent(line);\n var tokenizedLine = this.getTokenizer().getLineTokens(line, state);\n var tokens = tokenizedLine.tokens;\n var endState = tokenizedLine.state;\n if (tokens.length && tokens[tokens.length - 1].type == \"comment\") {\n return indent;\n }\n if (state == \"start\" || state == \"no_regex\") {\n var match = line.match(/^.*(?:\\bcase\\b.*:|[\\{\\(\\[])\\s*$/);\n if (match) {\n indent += tab;\n }\n }\n else if (state == \"doc-start\") {\n if (endState == \"start\" || endState == \"no_regex\") {\n return \"\";\n }\n var match = line.match(/^\\s*(\\/?)\\*/);\n if (match) {\n if (match[1]) {\n indent += \" \";\n }\n indent += \"* \";\n }\n }\n return indent;\n };\n this.checkOutdent = function (state, line, input) {\n return this.$outdent.checkOutdent(line, input);\n };\n this.autoOutdent = function (state, doc, row) {\n this.$outdent.autoOutdent(doc, row);\n };\n this.createWorker = function (session) {\n var worker = new WorkerClient([\"ace\"], \"ace/mode/javascript_worker\", \"JavaScriptWorker\");\n worker.attachToDocument(session.getDocument());\n worker.on(\"annotate\", function (results) {\n session.setAnnotations(results.data);\n });\n worker.on(\"terminate\", function () {\n session.clearAnnotations();\n });\n return worker;\n };\n this.$id = \"ace/mode/javascript\";\n this.snippetFileId = \"ace/snippets/javascript\";\n}).call(Mode.prototype);\nexports.Mode = Mode;\n\n}); (function() {\n ace.require([\"ace/mode/javascript\"], function(m) {\n if (typeof module == \"object\" && typeof exports == \"object\" && module) {\n module.exports = m;\n }\n });\n })();\n ","ace.define(\"ace/mode/json_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar TextHighlightRules = require(\"./text_highlight_rules\").TextHighlightRules;\nvar JsonHighlightRules = function () {\n this.$rules = {\n \"start\": [\n {\n token: \"variable\",\n regex: '[\"](?:(?:\\\\\\\\.)|(?:[^\"\\\\\\\\]))*?[\"]\\\\s*(?=:)'\n }, {\n token: \"string\",\n regex: '\"',\n next: \"string\"\n }, {\n token: \"constant.numeric\",\n regex: \"0[xX][0-9a-fA-F]+\\\\b\"\n }, {\n token: \"constant.numeric\",\n regex: \"[+-]?\\\\d+(?:(?:\\\\.\\\\d*)?(?:[eE][+-]?\\\\d+)?)?\\\\b\"\n }, {\n token: \"constant.language.boolean\",\n regex: \"(?:true|false)\\\\b\"\n }, {\n token: \"text\",\n regex: \"['](?:(?:\\\\\\\\.)|(?:[^'\\\\\\\\]))*?[']\"\n }, {\n token: \"comment\",\n regex: \"\\\\/\\\\/.*$\"\n }, {\n token: \"comment.start\",\n regex: \"\\\\/\\\\*\",\n next: \"comment\"\n }, {\n token: \"paren.lparen\",\n regex: \"[[({]\"\n }, {\n token: \"paren.rparen\",\n regex: \"[\\\\])}]\"\n }, {\n token: \"punctuation.operator\",\n regex: /[,]/\n }, {\n token: \"text\",\n regex: \"\\\\s+\"\n }\n ],\n \"string\": [\n {\n token: \"constant.language.escape\",\n regex: /\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|[\"\\\\\\/bfnrt])/\n }, {\n token: \"string\",\n regex: '\"|$',\n next: \"start\"\n }, {\n defaultToken: \"string\"\n }\n ],\n \"comment\": [\n {\n token: \"comment.end\",\n regex: \"\\\\*\\\\/\",\n next: \"start\"\n }, {\n defaultToken: \"comment\"\n }\n ]\n };\n};\noop.inherits(JsonHighlightRules, TextHighlightRules);\nexports.JsonHighlightRules = JsonHighlightRules;\n\n});\n\nace.define(\"ace/mode/matching_brace_outdent\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar Range = require(\"../range\").Range;\nvar MatchingBraceOutdent = function () { };\n(function () {\n this.checkOutdent = function (line, input) {\n if (!/^\\s+$/.test(line))\n return false;\n return /^\\s*\\}/.test(input);\n };\n this.autoOutdent = function (doc, row) {\n var line = doc.getLine(row);\n var match = line.match(/^(\\s*\\})/);\n if (!match)\n return 0;\n var column = match[1].length;\n var openBracePos = doc.findMatchingBracket({ row: row, column: column });\n if (!openBracePos || openBracePos.row == row)\n return 0;\n var indent = this.$getIndent(doc.getLine(openBracePos.row));\n doc.replace(new Range(row, 0, row, column - 1), indent);\n };\n this.$getIndent = function (line) {\n return line.match(/^\\s*/)[0];\n };\n}).call(MatchingBraceOutdent.prototype);\nexports.MatchingBraceOutdent = MatchingBraceOutdent;\n\n});\n\nace.define(\"ace/mode/folding/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/range\",\"ace/mode/folding/fold_mode\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../../lib/oop\");\nvar Range = require(\"../../range\").Range;\nvar BaseFoldMode = require(\"./fold_mode\").FoldMode;\nvar FoldMode = exports.FoldMode = function (commentRegex) {\n if (commentRegex) {\n this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.start));\n this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.end));\n }\n};\noop.inherits(FoldMode, BaseFoldMode);\n(function () {\n this.foldingStartMarker = /([\\{\\[\\(])[^\\}\\]\\)]*$|^\\s*(\\/\\*)/;\n this.foldingStopMarker = /^[^\\[\\{\\(]*([\\}\\]\\)])|^[\\s\\*]*(\\*\\/)/;\n this.singleLineBlockCommentRe = /^\\s*(\\/\\*).*\\*\\/\\s*$/;\n this.tripleStarBlockCommentRe = /^\\s*(\\/\\*\\*\\*).*\\*\\/\\s*$/;\n this.startRegionRe = /^\\s*(\\/\\*|\\/\\/)#?region\\b/;\n this._getFoldWidgetBase = this.getFoldWidget;\n this.getFoldWidget = function (session, foldStyle, row) {\n var line = session.getLine(row);\n if (this.singleLineBlockCommentRe.test(line)) {\n if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line))\n return \"\";\n }\n var fw = this._getFoldWidgetBase(session, foldStyle, row);\n if (!fw && this.startRegionRe.test(line))\n return \"start\"; // lineCommentRegionStart\n return fw;\n };\n this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) {\n var line = session.getLine(row);\n if (this.startRegionRe.test(line))\n return this.getCommentRegionBlock(session, line, row);\n var match = line.match(this.foldingStartMarker);\n if (match) {\n var i = match.index;\n if (match[1])\n return this.openingBracketBlock(session, match[1], row, i);\n var range = session.getCommentFoldRange(row, i + match[0].length, 1);\n if (range && !range.isMultiLine()) {\n if (forceMultiline) {\n range = this.getSectionRange(session, row);\n }\n else if (foldStyle != \"all\")\n range = null;\n }\n return range;\n }\n if (foldStyle === \"markbegin\")\n return;\n var match = line.match(this.foldingStopMarker);\n if (match) {\n var i = match.index + match[0].length;\n if (match[1])\n return this.closingBracketBlock(session, match[1], row, i);\n return session.getCommentFoldRange(row, i, -1);\n }\n };\n this.getSectionRange = function (session, row) {\n var line = session.getLine(row);\n var startIndent = line.search(/\\S/);\n var startRow = row;\n var startColumn = line.length;\n row = row + 1;\n var endRow = row;\n var maxRow = session.getLength();\n while (++row < maxRow) {\n line = session.getLine(row);\n var indent = line.search(/\\S/);\n if (indent === -1)\n continue;\n if (startIndent > indent)\n break;\n var subRange = this.getFoldWidgetRange(session, \"all\", row);\n if (subRange) {\n if (subRange.start.row <= startRow) {\n break;\n }\n else if (subRange.isMultiLine()) {\n row = subRange.end.row;\n }\n else if (startIndent == indent) {\n break;\n }\n }\n endRow = row;\n }\n return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);\n };\n this.getCommentRegionBlock = function (session, line, row) {\n var startColumn = line.search(/\\s*$/);\n var maxRow = session.getLength();\n var startRow = row;\n var re = /^\\s*(?:\\/\\*|\\/\\/|--)#?(end)?region\\b/;\n var depth = 1;\n while (++row < maxRow) {\n line = session.getLine(row);\n var m = re.exec(line);\n if (!m)\n continue;\n if (m[1])\n depth--;\n else\n depth++;\n if (!depth)\n break;\n }\n var endRow = row;\n if (endRow > startRow) {\n return new Range(startRow, startColumn, endRow, line.length);\n }\n };\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/json\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/json_highlight_rules\",\"ace/mode/matching_brace_outdent\",\"ace/mode/folding/cstyle\",\"ace/worker/worker_client\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar TextMode = require(\"./text\").Mode;\nvar HighlightRules = require(\"./json_highlight_rules\").JsonHighlightRules;\nvar MatchingBraceOutdent = require(\"./matching_brace_outdent\").MatchingBraceOutdent;\nvar CStyleFoldMode = require(\"./folding/cstyle\").FoldMode;\nvar WorkerClient = require(\"../worker/worker_client\").WorkerClient;\nvar Mode = function () {\n this.HighlightRules = HighlightRules;\n this.$outdent = new MatchingBraceOutdent();\n this.$behaviour = this.$defaultBehaviour;\n this.foldingRules = new CStyleFoldMode();\n};\noop.inherits(Mode, TextMode);\n(function () {\n this.lineCommentStart = \"//\";\n this.blockComment = { start: \"/*\", end: \"*/\" };\n this.getNextLineIndent = function (state, line, tab) {\n var indent = this.$getIndent(line);\n if (state == \"start\") {\n var match = line.match(/^.*[\\{\\(\\[]\\s*$/);\n if (match) {\n indent += tab;\n }\n }\n return indent;\n };\n this.checkOutdent = function (state, line, input) {\n return this.$outdent.checkOutdent(line, input);\n };\n this.autoOutdent = function (state, doc, row) {\n this.$outdent.autoOutdent(doc, row);\n };\n this.createWorker = function (session) {\n var worker = new WorkerClient([\"ace\"], \"ace/mode/json_worker\", \"JsonWorker\");\n worker.attachToDocument(session.getDocument());\n worker.on(\"annotate\", function (e) {\n session.setAnnotations(e.data);\n });\n worker.on(\"terminate\", function () {\n session.clearAnnotations();\n });\n return worker;\n };\n this.$id = \"ace/mode/json\";\n}).call(Mode.prototype);\nexports.Mode = Mode;\n\n}); (function() {\n ace.require([\"ace/mode/json\"], function(m) {\n if (typeof module == \"object\" && typeof exports == \"object\" && module) {\n module.exports = m;\n }\n });\n })();\n ","ace.define(\"ace/mode/doc_comment_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar TextHighlightRules = require(\"./text_highlight_rules\").TextHighlightRules;\nvar DocCommentHighlightRules = function () {\n this.$rules = {\n \"start\": [\n {\n token: \"comment.doc.tag\",\n regex: \"@\\\\w+(?=\\\\s|$)\"\n }, DocCommentHighlightRules.getTagRule(), {\n defaultToken: \"comment.doc\",\n caseInsensitive: true\n }\n ]\n };\n};\noop.inherits(DocCommentHighlightRules, TextHighlightRules);\nDocCommentHighlightRules.getTagRule = function (start) {\n return {\n token: \"comment.doc.tag.storage.type\",\n regex: \"\\\\b(?:TODO|FIXME|XXX|HACK)\\\\b\"\n };\n};\nDocCommentHighlightRules.getStartRule = function (start) {\n return {\n token: \"comment.doc\",\n regex: \"\\\\/\\\\*(?=\\\\*)\",\n next: start\n };\n};\nDocCommentHighlightRules.getEndRule = function (start) {\n return {\n token: \"comment.doc\",\n regex: \"\\\\*\\\\/\",\n next: start\n };\n};\nexports.DocCommentHighlightRules = DocCommentHighlightRules;\n\n});\n\nace.define(\"ace/mode/jsx_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/mode/doc_comment_highlight_rules\",\"ace/mode/text_highlight_rules\"], function(require, exports, module){var oop = require(\"../lib/oop\");\nvar lang = require(\"../lib/lang\");\nvar DocCommentHighlightRules = require(\"./doc_comment_highlight_rules\").DocCommentHighlightRules;\nvar TextHighlightRules = require(\"./text_highlight_rules\").TextHighlightRules;\nvar JsxHighlightRules = function () {\n var keywords = lang.arrayToMap((\"break|do|instanceof|typeof|case|else|new|var|catch|finally|return|void|continue|for|switch|default|while|function|this|\" +\n \"if|throw|\" +\n \"delete|in|try|\" +\n \"class|extends|super|import|from|into|implements|interface|static|mixin|override|abstract|final|\" +\n \"number|int|string|boolean|variant|\" +\n \"log|assert\").split(\"|\"));\n var buildinConstants = lang.arrayToMap((\"null|true|false|NaN|Infinity|__FILE__|__LINE__|undefined\").split(\"|\"));\n var reserved = lang.arrayToMap((\"debugger|with|\" +\n \"const|export|\" +\n \"let|private|public|yield|protected|\" +\n \"extern|native|as|operator|__fake__|__readonly__\").split(\"|\"));\n var identifierRe = \"[a-zA-Z_][a-zA-Z0-9_]*\\\\b\";\n this.$rules = {\n \"start\": [\n {\n token: \"comment\",\n regex: \"\\\\/\\\\/.*$\"\n },\n DocCommentHighlightRules.getStartRule(\"doc-start\"),\n {\n token: \"comment\",\n regex: \"\\\\/\\\\*\",\n next: \"comment\"\n }, {\n token: \"string.regexp\",\n regex: \"[/](?:(?:\\\\[(?:\\\\\\\\]|[^\\\\]])+\\\\])|(?:\\\\\\\\/|[^\\\\]/]))*[/]\\\\w*\\\\s*(?=[).,;]|$)\"\n }, {\n token: \"string\",\n regex: '[\"](?:(?:\\\\\\\\.)|(?:[^\"\\\\\\\\]))*?[\"]'\n }, {\n token: \"string\",\n regex: \"['](?:(?:\\\\\\\\.)|(?:[^'\\\\\\\\]))*?[']\"\n }, {\n token: \"constant.numeric\",\n regex: \"0[xX][0-9a-fA-F]+\\\\b\"\n }, {\n token: \"constant.numeric\",\n regex: \"[+-]?\\\\d+(?:(?:\\\\.\\\\d*)?(?:[eE][+-]?\\\\d+)?)?\\\\b\"\n }, {\n token: \"constant.language.boolean\",\n regex: \"(?:true|false)\\\\b\"\n }, {\n token: [\n \"storage.type\",\n \"text\",\n \"entity.name.function\"\n ],\n regex: \"(function)(\\\\s+)(\" + identifierRe + \")\"\n }, {\n token: function (value) {\n if (value == \"this\")\n return \"variable.language\";\n else if (value == \"function\")\n return \"storage.type\";\n else if (keywords.hasOwnProperty(value) || reserved.hasOwnProperty(value))\n return \"keyword\";\n else if (buildinConstants.hasOwnProperty(value))\n return \"constant.language\";\n else if (/^_?[A-Z][a-zA-Z0-9_]*$/.test(value))\n return \"language.support.class\";\n else\n return \"identifier\";\n },\n regex: identifierRe\n }, {\n token: \"keyword.operator\",\n regex: \"!|%|&|\\\\*|\\\\-\\\\-|\\\\-|\\\\+\\\\+|\\\\+|~|==|=|!=|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\\\|\\\\||\\\\?\\\\:|\\\\*=|%=|\\\\+=|\\\\-=|&=|\\\\^=|\\\\b(?:in|instanceof|new|delete|typeof|void)\"\n }, {\n token: \"punctuation.operator\",\n regex: \"\\\\?|\\\\:|\\\\,|\\\\;|\\\\.\"\n }, {\n token: \"paren.lparen\",\n regex: \"[[({<]\"\n }, {\n token: \"paren.rparen\",\n regex: \"[\\\\])}>]\"\n }, {\n token: \"text\",\n regex: \"\\\\s+\"\n }\n ],\n \"comment\": [\n {\n token: \"comment\",\n regex: \"\\\\*\\\\/\",\n next: \"start\"\n }, {\n defaultToken: \"comment\"\n }\n ]\n };\n this.embedRules(DocCommentHighlightRules, \"doc-\", [DocCommentHighlightRules.getEndRule(\"start\")]);\n};\noop.inherits(JsxHighlightRules, TextHighlightRules);\nexports.JsxHighlightRules = JsxHighlightRules;\n\n});\n\nace.define(\"ace/mode/matching_brace_outdent\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar Range = require(\"../range\").Range;\nvar MatchingBraceOutdent = function () { };\n(function () {\n this.checkOutdent = function (line, input) {\n if (!/^\\s+$/.test(line))\n return false;\n return /^\\s*\\}/.test(input);\n };\n this.autoOutdent = function (doc, row) {\n var line = doc.getLine(row);\n var match = line.match(/^(\\s*\\})/);\n if (!match)\n return 0;\n var column = match[1].length;\n var openBracePos = doc.findMatchingBracket({ row: row, column: column });\n if (!openBracePos || openBracePos.row == row)\n return 0;\n var indent = this.$getIndent(doc.getLine(openBracePos.row));\n doc.replace(new Range(row, 0, row, column - 1), indent);\n };\n this.$getIndent = function (line) {\n return line.match(/^\\s*/)[0];\n };\n}).call(MatchingBraceOutdent.prototype);\nexports.MatchingBraceOutdent = MatchingBraceOutdent;\n\n});\n\nace.define(\"ace/mode/folding/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/range\",\"ace/mode/folding/fold_mode\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../../lib/oop\");\nvar Range = require(\"../../range\").Range;\nvar BaseFoldMode = require(\"./fold_mode\").FoldMode;\nvar FoldMode = exports.FoldMode = function (commentRegex) {\n if (commentRegex) {\n this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.start));\n this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.end));\n }\n};\noop.inherits(FoldMode, BaseFoldMode);\n(function () {\n this.foldingStartMarker = /([\\{\\[\\(])[^\\}\\]\\)]*$|^\\s*(\\/\\*)/;\n this.foldingStopMarker = /^[^\\[\\{\\(]*([\\}\\]\\)])|^[\\s\\*]*(\\*\\/)/;\n this.singleLineBlockCommentRe = /^\\s*(\\/\\*).*\\*\\/\\s*$/;\n this.tripleStarBlockCommentRe = /^\\s*(\\/\\*\\*\\*).*\\*\\/\\s*$/;\n this.startRegionRe = /^\\s*(\\/\\*|\\/\\/)#?region\\b/;\n this._getFoldWidgetBase = this.getFoldWidget;\n this.getFoldWidget = function (session, foldStyle, row) {\n var line = session.getLine(row);\n if (this.singleLineBlockCommentRe.test(line)) {\n if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line))\n return \"\";\n }\n var fw = this._getFoldWidgetBase(session, foldStyle, row);\n if (!fw && this.startRegionRe.test(line))\n return \"start\"; // lineCommentRegionStart\n return fw;\n };\n this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) {\n var line = session.getLine(row);\n if (this.startRegionRe.test(line))\n return this.getCommentRegionBlock(session, line, row);\n var match = line.match(this.foldingStartMarker);\n if (match) {\n var i = match.index;\n if (match[1])\n return this.openingBracketBlock(session, match[1], row, i);\n var range = session.getCommentFoldRange(row, i + match[0].length, 1);\n if (range && !range.isMultiLine()) {\n if (forceMultiline) {\n range = this.getSectionRange(session, row);\n }\n else if (foldStyle != \"all\")\n range = null;\n }\n return range;\n }\n if (foldStyle === \"markbegin\")\n return;\n var match = line.match(this.foldingStopMarker);\n if (match) {\n var i = match.index + match[0].length;\n if (match[1])\n return this.closingBracketBlock(session, match[1], row, i);\n return session.getCommentFoldRange(row, i, -1);\n }\n };\n this.getSectionRange = function (session, row) {\n var line = session.getLine(row);\n var startIndent = line.search(/\\S/);\n var startRow = row;\n var startColumn = line.length;\n row = row + 1;\n var endRow = row;\n var maxRow = session.getLength();\n while (++row < maxRow) {\n line = session.getLine(row);\n var indent = line.search(/\\S/);\n if (indent === -1)\n continue;\n if (startIndent > indent)\n break;\n var subRange = this.getFoldWidgetRange(session, \"all\", row);\n if (subRange) {\n if (subRange.start.row <= startRow) {\n break;\n }\n else if (subRange.isMultiLine()) {\n row = subRange.end.row;\n }\n else if (startIndent == indent) {\n break;\n }\n }\n endRow = row;\n }\n return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);\n };\n this.getCommentRegionBlock = function (session, line, row) {\n var startColumn = line.search(/\\s*$/);\n var maxRow = session.getLength();\n var startRow = row;\n var re = /^\\s*(?:\\/\\*|\\/\\/|--)#?(end)?region\\b/;\n var depth = 1;\n while (++row < maxRow) {\n line = session.getLine(row);\n var m = re.exec(line);\n if (!m)\n continue;\n if (m[1])\n depth--;\n else\n depth++;\n if (!depth)\n break;\n }\n var endRow = row;\n if (endRow > startRow) {\n return new Range(startRow, startColumn, endRow, line.length);\n }\n };\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/jsx\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/jsx_highlight_rules\",\"ace/mode/matching_brace_outdent\",\"ace/mode/folding/cstyle\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar TextMode = require(\"./text\").Mode;\nvar JsxHighlightRules = require(\"./jsx_highlight_rules\").JsxHighlightRules;\nvar MatchingBraceOutdent = require(\"./matching_brace_outdent\").MatchingBraceOutdent;\nvar CStyleFoldMode = require(\"./folding/cstyle\").FoldMode;\nfunction Mode() {\n this.HighlightRules = JsxHighlightRules;\n this.$outdent = new MatchingBraceOutdent();\n this.$behaviour = this.$defaultBehaviour;\n this.foldingRules = new CStyleFoldMode();\n}\noop.inherits(Mode, TextMode);\n(function () {\n this.lineCommentStart = \"//\";\n this.blockComment = { start: \"/*\", end: \"*/\" };\n this.getNextLineIndent = function (state, line, tab) {\n var indent = this.$getIndent(line);\n var tokenizedLine = this.getTokenizer().getLineTokens(line, state);\n var tokens = tokenizedLine.tokens;\n if (tokens.length && tokens[tokens.length - 1].type == \"comment\") {\n return indent;\n }\n if (state == \"start\") {\n var match = line.match(/^.*[\\{\\(\\[]\\s*$/);\n if (match) {\n indent += tab;\n }\n }\n return indent;\n };\n this.checkOutdent = function (state, line, input) {\n return this.$outdent.checkOutdent(line, input);\n };\n this.autoOutdent = function (state, doc, row) {\n this.$outdent.autoOutdent(doc, row);\n };\n this.$id = \"ace/mode/jsx\";\n}).call(Mode.prototype);\nexports.Mode = Mode;\n\n}); (function() {\n ace.require([\"ace/mode/jsx\"], function(m) {\n if (typeof module == \"object\" && typeof exports == \"object\" && module) {\n module.exports = m;\n }\n });\n })();\n ","ace.define(\"ace/mode/python_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(require, exports, module){/*\n * TODO: python delimiters\n */\n\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar TextHighlightRules = require(\"./text_highlight_rules\").TextHighlightRules;\nvar PythonHighlightRules = function () {\n var keywords = (\"and|as|assert|break|class|continue|def|del|elif|else|except|exec|\" +\n \"finally|for|from|global|if|import|in|is|lambda|not|or|pass|print|\" +\n \"raise|return|try|while|with|yield|async|await|nonlocal\");\n var builtinConstants = (\"True|False|None|NotImplemented|Ellipsis|__debug__\");\n var builtinFunctions = (\"abs|divmod|input|open|staticmethod|all|enumerate|int|ord|str|any|\" +\n \"eval|isinstance|pow|sum|basestring|execfile|issubclass|print|super|\" +\n \"binfile|bin|iter|property|tuple|bool|filter|len|range|type|bytearray|\" +\n \"float|list|raw_input|unichr|callable|format|locals|reduce|unicode|\" +\n \"chr|frozenset|long|reload|vars|classmethod|getattr|map|repr|xrange|\" +\n \"cmp|globals|max|reversed|zip|compile|hasattr|memoryview|round|\" +\n \"__import__|complex|hash|min|apply|delattr|help|next|setattr|set|\" +\n \"buffer|dict|hex|object|slice|coerce|dir|id|oct|sorted|intern|\" +\n \"ascii|breakpoint|bytes\");\n var keywordMapper = this.createKeywordMapper({\n \"invalid.deprecated\": \"debugger\",\n \"support.function\": builtinFunctions,\n \"variable.language\": \"self|cls\",\n \"constant.language\": builtinConstants,\n \"keyword\": keywords\n }, \"identifier\");\n var strPre = \"[uU]?\";\n var strRawPre = \"[rR]\";\n var strFormatPre = \"[fF]\";\n var strRawFormatPre = \"(?:[rR][fF]|[fF][rR])\";\n var decimalInteger = \"(?:(?:[1-9]\\\\d*)|(?:0))\";\n var octInteger = \"(?:0[oO]?[0-7]+)\";\n var hexInteger = \"(?:0[xX][\\\\dA-Fa-f]+)\";\n var binInteger = \"(?:0[bB][01]+)\";\n var integer = \"(?:\" + decimalInteger + \"|\" + octInteger + \"|\" + hexInteger + \"|\" + binInteger + \")\";\n var exponent = \"(?:[eE][+-]?\\\\d+)\";\n var fraction = \"(?:\\\\.\\\\d+)\";\n var intPart = \"(?:\\\\d+)\";\n var pointFloat = \"(?:(?:\" + intPart + \"?\" + fraction + \")|(?:\" + intPart + \"\\\\.))\";\n var exponentFloat = \"(?:(?:\" + pointFloat + \"|\" + intPart + \")\" + exponent + \")\";\n var floatNumber = \"(?:\" + exponentFloat + \"|\" + pointFloat + \")\";\n var stringEscape = \"\\\\\\\\(x[0-9A-Fa-f]{2}|[0-7]{3}|[\\\\\\\\abfnrtv'\\\"]|U[0-9A-Fa-f]{8}|u[0-9A-Fa-f]{4})\";\n this.$rules = {\n \"start\": [{\n token: \"comment\",\n regex: \"#.*$\"\n }, {\n token: \"string\",\n regex: strPre + '\"{3}',\n next: \"qqstring3\"\n }, {\n token: \"string\",\n regex: strPre + '\"(?=.)',\n next: \"qqstring\"\n }, {\n token: \"string\",\n regex: strPre + \"'{3}\",\n next: \"qstring3\"\n }, {\n token: \"string\",\n regex: strPre + \"'(?=.)\",\n next: \"qstring\"\n }, {\n token: \"string\",\n regex: strRawPre + '\"{3}',\n next: \"rawqqstring3\"\n }, {\n token: \"string\",\n regex: strRawPre + '\"(?=.)',\n next: \"rawqqstring\"\n }, {\n token: \"string\",\n regex: strRawPre + \"'{3}\",\n next: \"rawqstring3\"\n }, {\n token: \"string\",\n regex: strRawPre + \"'(?=.)\",\n next: \"rawqstring\"\n }, {\n token: \"string\",\n regex: strFormatPre + '\"{3}',\n next: \"fqqstring3\"\n }, {\n token: \"string\",\n regex: strFormatPre + '\"(?=.)',\n next: \"fqqstring\"\n }, {\n token: \"string\",\n regex: strFormatPre + \"'{3}\",\n next: \"fqstring3\"\n }, {\n token: \"string\",\n regex: strFormatPre + \"'(?=.)\",\n next: \"fqstring\"\n }, {\n token: \"string\",\n regex: strRawFormatPre + '\"{3}',\n next: \"rfqqstring3\"\n }, {\n token: \"string\",\n regex: strRawFormatPre + '\"(?=.)',\n next: \"rfqqstring\"\n }, {\n token: \"string\",\n regex: strRawFormatPre + \"'{3}\",\n next: \"rfqstring3\"\n }, {\n token: \"string\",\n regex: strRawFormatPre + \"'(?=.)\",\n next: \"rfqstring\"\n }, {\n token: \"keyword.operator\",\n regex: \"\\\\+|\\\\-|\\\\*|\\\\*\\\\*|\\\\/|\\\\/\\\\/|%|@|<<|>>|&|\\\\||\\\\^|~|<|>|<=|=>|==|!=|<>|=\"\n }, {\n token: \"punctuation\",\n regex: \",|:|;|\\\\->|\\\\+=|\\\\-=|\\\\*=|\\\\/=|\\\\/\\\\/=|%=|@=|&=|\\\\|=|^=|>>=|<<=|\\\\*\\\\*=\"\n }, {\n token: \"paren.lparen\",\n regex: \"[\\\\[\\\\(\\\\{]\"\n }, {\n token: \"paren.rparen\",\n regex: \"[\\\\]\\\\)\\\\}]\"\n }, {\n token: [\"keyword\", \"text\", \"entity.name.function\"],\n regex: \"(def|class)(\\\\s+)([\\\\u00BF-\\\\u1FFF\\\\u2C00-\\\\uD7FF\\\\w]+)\"\n }, {\n token: \"text\",\n regex: \"\\\\s+\"\n }, {\n include: \"constants\"\n }],\n \"qqstring3\": [{\n token: \"constant.language.escape\",\n regex: stringEscape\n }, {\n token: \"string\",\n regex: '\"{3}',\n next: \"start\"\n }, {\n defaultToken: \"string\"\n }],\n \"qstring3\": [{\n token: \"constant.language.escape\",\n regex: stringEscape\n }, {\n token: \"string\",\n regex: \"'{3}\",\n next: \"start\"\n }, {\n defaultToken: \"string\"\n }],\n \"qqstring\": [{\n token: \"constant.language.escape\",\n regex: stringEscape\n }, {\n token: \"string\",\n regex: \"\\\\\\\\$\",\n next: \"qqstring\"\n }, {\n token: \"string\",\n regex: '\"|$',\n next: \"start\"\n }, {\n defaultToken: \"string\"\n }],\n \"qstring\": [{\n token: \"constant.language.escape\",\n regex: stringEscape\n }, {\n token: \"string\",\n regex: \"\\\\\\\\$\",\n next: \"qstring\"\n }, {\n token: \"string\",\n regex: \"'|$\",\n next: \"start\"\n }, {\n defaultToken: \"string\"\n }],\n \"rawqqstring3\": [{\n token: \"string\",\n regex: '\"{3}',\n next: \"start\"\n }, {\n defaultToken: \"string\"\n }],\n \"rawqstring3\": [{\n token: \"string\",\n regex: \"'{3}\",\n next: \"start\"\n }, {\n defaultToken: \"string\"\n }],\n \"rawqqstring\": [{\n token: \"string\",\n regex: \"\\\\\\\\$\",\n next: \"rawqqstring\"\n }, {\n token: \"string\",\n regex: '\"|$',\n next: \"start\"\n }, {\n defaultToken: \"string\"\n }],\n \"rawqstring\": [{\n token: \"string\",\n regex: \"\\\\\\\\$\",\n next: \"rawqstring\"\n }, {\n token: \"string\",\n regex: \"'|$\",\n next: \"start\"\n }, {\n defaultToken: \"string\"\n }],\n \"fqqstring3\": [{\n token: \"constant.language.escape\",\n regex: stringEscape\n }, {\n token: \"string\",\n regex: '\"{3}',\n next: \"start\"\n }, {\n token: \"paren.lparen\",\n regex: \"{\",\n push: \"fqstringParRules\"\n }, {\n defaultToken: \"string\"\n }],\n \"fqstring3\": [{\n token: \"constant.language.escape\",\n regex: stringEscape\n }, {\n token: \"string\",\n regex: \"'{3}\",\n next: \"start\"\n }, {\n token: \"paren.lparen\",\n regex: \"{\",\n push: \"fqstringParRules\"\n }, {\n defaultToken: \"string\"\n }],\n \"fqqstring\": [{\n token: \"constant.language.escape\",\n regex: stringEscape\n }, {\n token: \"string\",\n regex: \"\\\\\\\\$\",\n next: \"fqqstring\"\n }, {\n token: \"string\",\n regex: '\"|$',\n next: \"start\"\n }, {\n token: \"paren.lparen\",\n regex: \"{\",\n push: \"fqstringParRules\"\n }, {\n defaultToken: \"string\"\n }],\n \"fqstring\": [{\n token: \"constant.language.escape\",\n regex: stringEscape\n }, {\n token: \"string\",\n regex: \"'|$\",\n next: \"start\"\n }, {\n token: \"paren.lparen\",\n regex: \"{\",\n push: \"fqstringParRules\"\n }, {\n defaultToken: \"string\"\n }],\n \"rfqqstring3\": [{\n token: \"string\",\n regex: '\"{3}',\n next: \"start\"\n }, {\n token: \"paren.lparen\",\n regex: \"{\",\n push: \"fqstringParRules\"\n }, {\n defaultToken: \"string\"\n }],\n \"rfqstring3\": [{\n token: \"string\",\n regex: \"'{3}\",\n next: \"start\"\n }, {\n token: \"paren.lparen\",\n regex: \"{\",\n push: \"fqstringParRules\"\n }, {\n defaultToken: \"string\"\n }],\n \"rfqqstring\": [{\n token: \"string\",\n regex: \"\\\\\\\\$\",\n next: \"rfqqstring\"\n }, {\n token: \"string\",\n regex: '\"|$',\n next: \"start\"\n }, {\n token: \"paren.lparen\",\n regex: \"{\",\n push: \"fqstringParRules\"\n }, {\n defaultToken: \"string\"\n }],\n \"rfqstring\": [{\n token: \"string\",\n regex: \"'|$\",\n next: \"start\"\n }, {\n token: \"paren.lparen\",\n regex: \"{\",\n push: \"fqstringParRules\"\n }, {\n defaultToken: \"string\"\n }],\n \"fqstringParRules\": [{\n token: \"paren.lparen\",\n regex: \"[\\\\[\\\\(]\"\n }, {\n token: \"paren.rparen\",\n regex: \"[\\\\]\\\\)]\"\n }, {\n token: \"string\",\n regex: \"\\\\s+\"\n }, {\n token: \"string\",\n regex: \"'[^']*'\"\n }, {\n token: \"string\",\n regex: '\"[^\"]*\"'\n }, {\n token: \"function.support\",\n regex: \"(!s|!r|!a)\"\n }, {\n include: \"constants\"\n }, {\n token: 'paren.rparen',\n regex: \"}\",\n next: 'pop'\n }, {\n token: 'paren.lparen',\n regex: \"{\",\n push: \"fqstringParRules\"\n }],\n \"constants\": [{\n token: \"constant.numeric\",\n regex: \"(?:\" + floatNumber + \"|\\\\d+)[jJ]\\\\b\"\n }, {\n token: \"constant.numeric\",\n regex: floatNumber\n }, {\n token: \"constant.numeric\",\n regex: integer + \"[lL]\\\\b\"\n }, {\n token: \"constant.numeric\",\n regex: integer + \"\\\\b\"\n }, {\n token: [\"punctuation\", \"function.support\"],\n regex: \"(\\\\.)([a-zA-Z_]+)\\\\b\"\n }, {\n token: keywordMapper,\n regex: \"[a-zA-Z_$][a-zA-Z0-9_$]*\\\\b\"\n }]\n };\n this.normalizeRules();\n};\noop.inherits(PythonHighlightRules, TextHighlightRules);\nexports.PythonHighlightRules = PythonHighlightRules;\n\n});\n\nace.define(\"ace/mode/folding/pythonic\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/folding/fold_mode\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../../lib/oop\");\nvar BaseFoldMode = require(\"./fold_mode\").FoldMode;\nvar FoldMode = exports.FoldMode = function (markers) {\n this.foldingStartMarker = new RegExp(\"([\\\\[{])(?:\\\\s*)$|(\" + markers + \")(?:\\\\s*)(?:#.*)?$\");\n};\noop.inherits(FoldMode, BaseFoldMode);\n(function () {\n this.getFoldWidgetRange = function (session, foldStyle, row) {\n var line = session.getLine(row);\n var match = line.match(this.foldingStartMarker);\n if (match) {\n if (match[1])\n return this.openingBracketBlock(session, match[1], row, match.index);\n if (match[2])\n return this.indentationBlock(session, row, match.index + match[2].length);\n return this.indentationBlock(session, row);\n }\n };\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/python\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/python_highlight_rules\",\"ace/mode/folding/pythonic\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar TextMode = require(\"./text\").Mode;\nvar PythonHighlightRules = require(\"./python_highlight_rules\").PythonHighlightRules;\nvar PythonFoldMode = require(\"./folding/pythonic\").FoldMode;\nvar Range = require(\"../range\").Range;\nvar Mode = function () {\n this.HighlightRules = PythonHighlightRules;\n this.foldingRules = new PythonFoldMode(\"\\\\:\");\n this.$behaviour = this.$defaultBehaviour;\n};\noop.inherits(Mode, TextMode);\n(function () {\n this.lineCommentStart = \"#\";\n this.$pairQuotesAfter = {\n \"'\": /[ruf]/i,\n '\"': /[ruf]/i\n };\n this.getNextLineIndent = function (state, line, tab) {\n var indent = this.$getIndent(line);\n var tokenizedLine = this.getTokenizer().getLineTokens(line, state);\n var tokens = tokenizedLine.tokens;\n if (tokens.length && tokens[tokens.length - 1].type == \"comment\") {\n return indent;\n }\n if (state == \"start\") {\n var match = line.match(/^.*[\\{\\(\\[:]\\s*$/);\n if (match) {\n indent += tab;\n }\n }\n return indent;\n };\n var outdents = {\n \"pass\": 1,\n \"return\": 1,\n \"raise\": 1,\n \"break\": 1,\n \"continue\": 1\n };\n this.checkOutdent = function (state, line, input) {\n if (input !== \"\\r\\n\" && input !== \"\\r\" && input !== \"\\n\")\n return false;\n var tokens = this.getTokenizer().getLineTokens(line.trim(), state).tokens;\n if (!tokens)\n return false;\n do {\n var last = tokens.pop();\n } while (last && (last.type == \"comment\" || (last.type == \"text\" && last.value.match(/^\\s+$/))));\n if (!last)\n return false;\n return (last.type == \"keyword\" && outdents[last.value]);\n };\n this.autoOutdent = function (state, doc, row) {\n row += 1;\n var indent = this.$getIndent(doc.getLine(row));\n var tab = doc.getTabString();\n if (indent.slice(-tab.length) == tab)\n doc.remove(new Range(row, indent.length - tab.length, row, indent.length));\n };\n this.$id = \"ace/mode/python\";\n this.snippetFileId = \"ace/snippets/python\";\n}).call(Mode.prototype);\nexports.Mode = Mode;\n\n}); (function() {\n ace.require([\"ace/mode/python\"], function(m) {\n if (typeof module == \"object\" && typeof exports == \"object\" && module) {\n module.exports = m;\n }\n });\n })();\n ","ace.define(\"ace/mode/xml_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar TextHighlightRules = require(\"./text_highlight_rules\").TextHighlightRules;\nvar XmlHighlightRules = function (normalize) {\n var tagRegex = \"[_:a-zA-Z\\xc0-\\uffff][-_:.a-zA-Z0-9\\xc0-\\uffff]*\";\n this.$rules = {\n start: [\n { token: \"string.cdata.xml\", regex: \"<\\\\!\\\\[CDATA\\\\[\", next: \"cdata\" },\n {\n token: [\"punctuation.instruction.xml\", \"keyword.instruction.xml\"],\n regex: \"(<\\\\?)(\" + tagRegex + \")\", next: \"processing_instruction\"\n },\n { token: \"comment.start.xml\", regex: \"<\\\\!--\", next: \"comment\" },\n {\n token: [\"xml-pe.doctype.xml\", \"xml-pe.doctype.xml\"],\n regex: \"(<\\\\!)(DOCTYPE)(?=[\\\\s])\", next: \"doctype\", caseInsensitive: true\n },\n { include: \"tag\" },\n { token: \"text.end-tag-open.xml\", regex: \"\",\n next: \"start\"\n }],\n doctype: [\n { include: \"whitespace\" },\n { include: \"string\" },\n { token: \"xml-pe.doctype.xml\", regex: \">\", next: \"start\" },\n { token: \"xml-pe.xml\", regex: \"[-_a-zA-Z0-9:]+\" },\n { token: \"punctuation.int-subset\", regex: \"\\\\[\", push: \"int_subset\" }\n ],\n int_subset: [{\n token: \"text.xml\",\n regex: \"\\\\s+\"\n }, {\n token: \"punctuation.int-subset.xml\",\n regex: \"]\",\n next: \"pop\"\n }, {\n token: [\"punctuation.markup-decl.xml\", \"keyword.markup-decl.xml\"],\n regex: \"(<\\\\!)(\" + tagRegex + \")\",\n push: [{\n token: \"text\",\n regex: \"\\\\s+\"\n },\n {\n token: \"punctuation.markup-decl.xml\",\n regex: \">\",\n next: \"pop\"\n },\n { include: \"string\" }]\n }],\n cdata: [\n { token: \"string.cdata.xml\", regex: \"\\\\]\\\\]>\", next: \"start\" },\n { token: \"text.xml\", regex: \"\\\\s+\" },\n { token: \"text.xml\", regex: \"(?:[^\\\\]]|\\\\](?!\\\\]>))+\" }\n ],\n comment: [\n { token: \"comment.end.xml\", regex: \"-->\", next: \"start\" },\n { defaultToken: \"comment.xml\" }\n ],\n reference: [{\n token: \"constant.language.escape.reference.xml\",\n regex: \"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\\\.-]+;)\"\n }],\n attr_reference: [{\n token: \"constant.language.escape.reference.attribute-value.xml\",\n regex: \"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\\\.-]+;)\"\n }],\n tag: [{\n token: [\"meta.tag.punctuation.tag-open.xml\", \"meta.tag.punctuation.end-tag-open.xml\", \"meta.tag.tag-name.xml\"],\n regex: \"(?:(<)|(\", next: \"start\" }\n ]\n }],\n tag_whitespace: [\n { token: \"text.tag-whitespace.xml\", regex: \"\\\\s+\" }\n ],\n whitespace: [\n { token: \"text.whitespace.xml\", regex: \"\\\\s+\" }\n ],\n string: [{\n token: \"string.xml\",\n regex: \"'\",\n push: [\n { token: \"string.xml\", regex: \"'\", next: \"pop\" },\n { defaultToken: \"string.xml\" }\n ]\n }, {\n token: \"string.xml\",\n regex: '\"',\n push: [\n { token: \"string.xml\", regex: '\"', next: \"pop\" },\n { defaultToken: \"string.xml\" }\n ]\n }],\n attributes: [{\n token: \"entity.other.attribute-name.xml\",\n regex: tagRegex\n }, {\n token: \"keyword.operator.attribute-equals.xml\",\n regex: \"=\"\n }, {\n include: \"tag_whitespace\"\n }, {\n include: \"attribute_value\"\n }],\n attribute_value: [{\n token: \"string.attribute-value.xml\",\n regex: \"'\",\n push: [\n { token: \"string.attribute-value.xml\", regex: \"'\", next: \"pop\" },\n { include: \"attr_reference\" },\n { defaultToken: \"string.attribute-value.xml\" }\n ]\n }, {\n token: \"string.attribute-value.xml\",\n regex: '\"',\n push: [\n { token: \"string.attribute-value.xml\", regex: '\"', next: \"pop\" },\n { include: \"attr_reference\" },\n { defaultToken: \"string.attribute-value.xml\" }\n ]\n }]\n };\n if (this.constructor === XmlHighlightRules)\n this.normalizeRules();\n};\n(function () {\n this.embedTagRules = function (HighlightRules, prefix, tag) {\n this.$rules.tag.unshift({\n token: [\"meta.tag.punctuation.tag-open.xml\", \"meta.tag.\" + tag + \".tag-name.xml\"],\n regex: \"(<)(\" + tag + \"(?=\\\\s|>|$))\",\n next: [\n { include: \"attributes\" },\n { token: \"meta.tag.punctuation.tag-close.xml\", regex: \"/?>\", next: prefix + \"start\" }\n ]\n });\n this.$rules[tag + \"-end\"] = [\n { include: \"attributes\" },\n { token: \"meta.tag.punctuation.tag-close.xml\", regex: \"/?>\", next: \"start\",\n onMatch: function (value, currentState, stack) {\n stack.splice(0);\n return this.token;\n } }\n ];\n this.embedRules(HighlightRules, prefix, [{\n token: [\"meta.tag.punctuation.end-tag-open.xml\", \"meta.tag.\" + tag + \".tag-name.xml\"],\n regex: \"(|$))\",\n next: tag + \"-end\"\n }, {\n token: \"string.cdata.xml\",\n regex: \"<\\\\!\\\\[CDATA\\\\[\"\n }, {\n token: \"string.cdata.xml\",\n regex: \"\\\\]\\\\]>\"\n }]);\n };\n}).call(TextHighlightRules.prototype);\noop.inherits(XmlHighlightRules, TextHighlightRules);\nexports.XmlHighlightRules = XmlHighlightRules;\n\n});\n\nace.define(\"ace/mode/behaviour/xml\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/behaviour\",\"ace/token_iterator\",\"ace/lib/lang\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../../lib/oop\");\nvar Behaviour = require(\"../behaviour\").Behaviour;\nvar TokenIterator = require(\"../../token_iterator\").TokenIterator;\nvar lang = require(\"../../lib/lang\");\nfunction is(token, type) {\n return token && token.type.lastIndexOf(type + \".xml\") > -1;\n}\nvar XmlBehaviour = function () {\n this.add(\"string_dquotes\", \"insertion\", function (state, action, editor, session, text) {\n if (text == '\"' || text == \"'\") {\n var quote = text;\n var selected = session.doc.getTextRange(editor.getSelectionRange());\n if (selected !== \"\" && selected !== \"'\" && selected != '\"' && editor.getWrapBehavioursEnabled()) {\n return {\n text: quote + selected + quote,\n selection: false\n };\n }\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n var token = iterator.getCurrentToken();\n if (rightChar == quote && (is(token, \"attribute-value\") || is(token, \"string\"))) {\n return {\n text: \"\",\n selection: [1, 1]\n };\n }\n if (!token)\n token = iterator.stepBackward();\n if (!token)\n return;\n while (is(token, \"tag-whitespace\") || is(token, \"whitespace\")) {\n token = iterator.stepBackward();\n }\n var rightSpace = !rightChar || rightChar.match(/\\s/);\n if (is(token, \"attribute-equals\") && (rightSpace || rightChar == '>') || (is(token, \"decl-attribute-equals\") && (rightSpace || rightChar == '?'))) {\n return {\n text: quote + quote,\n selection: [1, 1]\n };\n }\n }\n });\n this.add(\"string_dquotes\", \"deletion\", function (state, action, editor, session, range) {\n var selected = session.doc.getTextRange(range);\n if (!range.isMultiLine() && (selected == '\"' || selected == \"'\")) {\n var line = session.doc.getLine(range.start.row);\n var rightChar = line.substring(range.start.column + 1, range.start.column + 2);\n if (rightChar == selected) {\n range.end.column++;\n return range;\n }\n }\n });\n this.add(\"autoclosing\", \"insertion\", function (state, action, editor, session, text) {\n if (text == '>') {\n var position = editor.getSelectionRange().start;\n var iterator = new TokenIterator(session, position.row, position.column);\n var token = iterator.getCurrentToken() || iterator.stepBackward();\n if (!token || !(is(token, \"tag-name\") || is(token, \"tag-whitespace\") || is(token, \"attribute-name\") || is(token, \"attribute-equals\") || is(token, \"attribute-value\")))\n return;\n if (is(token, \"reference.attribute-value\"))\n return;\n if (is(token, \"attribute-value\")) {\n var tokenEndColumn = iterator.getCurrentTokenColumn() + token.value.length;\n if (position.column < tokenEndColumn)\n return;\n if (position.column == tokenEndColumn) {\n var nextToken = iterator.stepForward();\n if (nextToken && is(nextToken, \"attribute-value\"))\n return;\n iterator.stepBackward();\n }\n }\n if (/^\\s*>/.test(session.getLine(position.row).slice(position.column)))\n return;\n while (!is(token, \"tag-name\")) {\n token = iterator.stepBackward();\n if (token.value == \"<\") {\n token = iterator.stepForward();\n break;\n }\n }\n var tokenRow = iterator.getCurrentTokenRow();\n var tokenColumn = iterator.getCurrentTokenColumn();\n if (is(iterator.stepBackward(), \"end-tag-open\"))\n return;\n var element = token.value;\n if (tokenRow == position.row)\n element = element.substring(0, position.column - tokenColumn);\n if (this.voidElements.hasOwnProperty(element.toLowerCase()))\n return;\n return {\n text: \">\" + \"\",\n selection: [1, 1]\n };\n }\n });\n this.add(\"autoindent\", \"insertion\", function (state, action, editor, session, text) {\n if (text == \"\\n\") {\n var cursor = editor.getCursorPosition();\n var line = session.getLine(cursor.row);\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n var token = iterator.getCurrentToken();\n if (token && token.type.indexOf(\"tag-close\") !== -1) {\n if (token.value == \"/>\")\n return;\n while (token && token.type.indexOf(\"tag-name\") === -1) {\n token = iterator.stepBackward();\n }\n if (!token) {\n return;\n }\n var tag = token.value;\n var row = iterator.getCurrentTokenRow();\n token = iterator.stepBackward();\n if (!token || token.type.indexOf(\"end-tag\") !== -1) {\n return;\n }\n if (this.voidElements && !this.voidElements[tag]) {\n var nextToken = session.getTokenAt(cursor.row, cursor.column + 1);\n var line = session.getLine(row);\n var nextIndent = this.$getIndent(line);\n var indent = nextIndent + session.getTabString();\n if (nextToken && nextToken.value === \" -1;\n}\n(function () {\n this.getFoldWidget = function (session, foldStyle, row) {\n var tag = this._getFirstTagInLine(session, row);\n if (!tag)\n return this.getCommentFoldWidget(session, row);\n if (tag.closing || (!tag.tagName && tag.selfClosing))\n return foldStyle === \"markbeginend\" ? \"end\" : \"\";\n if (!tag.tagName || tag.selfClosing || this.voidElements.hasOwnProperty(tag.tagName.toLowerCase()))\n return \"\";\n if (this._findEndTagInLine(session, row, tag.tagName, tag.end.column))\n return \"\";\n return \"start\";\n };\n this.getCommentFoldWidget = function (session, row) {\n if (/comment/.test(session.getState(row)) && /';\n break;\n }\n }\n return tag;\n }\n else if (is(token, \"tag-close\")) {\n tag.selfClosing = token.value == '/>';\n return tag;\n }\n tag.start.column += token.value.length;\n }\n return null;\n };\n this._findEndTagInLine = function (session, row, tagName, startColumn) {\n var tokens = session.getTokens(row);\n var column = 0;\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n column += token.value.length;\n if (column < startColumn)\n continue;\n if (is(token, \"end-tag-open\")) {\n token = tokens[i + 1];\n if (token && token.value == tagName)\n return true;\n }\n }\n return false;\n };\n this.getFoldWidgetRange = function (session, foldStyle, row) {\n var tags = session.getMatchingTags({ row: row, column: 0 });\n if (tags) {\n return new Range(tags.openTag.end.row, tags.openTag.end.column, tags.closeTag.start.row, tags.closeTag.start.column);\n }\n else {\n return this.getCommentFoldWidget(session, row)\n && session.getCommentFoldRange(row, session.getLine(row).length);\n }\n };\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/xml\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/mode/text\",\"ace/mode/xml_highlight_rules\",\"ace/mode/behaviour/xml\",\"ace/mode/folding/xml\",\"ace/worker/worker_client\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar lang = require(\"../lib/lang\");\nvar TextMode = require(\"./text\").Mode;\nvar XmlHighlightRules = require(\"./xml_highlight_rules\").XmlHighlightRules;\nvar XmlBehaviour = require(\"./behaviour/xml\").XmlBehaviour;\nvar XmlFoldMode = require(\"./folding/xml\").FoldMode;\nvar WorkerClient = require(\"../worker/worker_client\").WorkerClient;\nvar Mode = function () {\n this.HighlightRules = XmlHighlightRules;\n this.$behaviour = new XmlBehaviour();\n this.foldingRules = new XmlFoldMode();\n};\noop.inherits(Mode, TextMode);\n(function () {\n this.voidElements = lang.arrayToMap([]);\n this.blockComment = { start: \"\" };\n this.createWorker = function (session) {\n var worker = new WorkerClient([\"ace\"], \"ace/mode/xml_worker\", \"Worker\");\n worker.attachToDocument(session.getDocument());\n worker.on(\"error\", function (e) {\n session.setAnnotations(e.data);\n });\n worker.on(\"terminate\", function () {\n session.clearAnnotations();\n });\n return worker;\n };\n this.$id = \"ace/mode/xml\";\n}).call(Mode.prototype);\nexports.Mode = Mode;\n\n}); (function() {\n ace.require([\"ace/mode/xml\"], function(m) {\n if (typeof module == \"object\" && typeof exports == \"object\" && module) {\n module.exports = m;\n }\n });\n })();\n ","ace.define(\"ace/theme/github-css\",[\"require\",\"exports\",\"module\"], function(require, exports, module){module.exports = \"/* CSS style content from github's default pygments highlighter template.\\n Cursor and selection styles from textmate.css. */\\n.ace-github .ace_gutter {\\n background: #e8e8e8;\\n color: #AAA;\\n}\\n\\n.ace-github {\\n background: #fff;\\n color: #000;\\n}\\n\\n.ace-github .ace_keyword {\\n font-weight: bold;\\n}\\n\\n.ace-github .ace_string {\\n color: #D14;\\n}\\n\\n.ace-github .ace_variable.ace_class {\\n color: teal;\\n}\\n\\n.ace-github .ace_constant.ace_numeric {\\n color: #099;\\n}\\n\\n.ace-github .ace_constant.ace_buildin {\\n color: #0086B3;\\n}\\n\\n.ace-github .ace_support.ace_function {\\n color: #0086B3;\\n}\\n\\n.ace-github .ace_comment {\\n color: #998;\\n font-style: italic;\\n}\\n\\n.ace-github .ace_variable.ace_language {\\n color: #0086B3;\\n}\\n\\n.ace-github .ace_paren {\\n font-weight: bold;\\n}\\n\\n.ace-github .ace_boolean {\\n font-weight: bold;\\n}\\n\\n.ace-github .ace_string.ace_regexp {\\n color: #009926;\\n font-weight: normal;\\n}\\n\\n.ace-github .ace_variable.ace_instance {\\n color: teal;\\n}\\n\\n.ace-github .ace_constant.ace_language {\\n font-weight: bold;\\n}\\n\\n.ace-github .ace_cursor {\\n color: black;\\n}\\n\\n.ace-github.ace_focus .ace_marker-layer .ace_active-line {\\n background: rgb(255, 255, 204);\\n}\\n.ace-github .ace_marker-layer .ace_active-line {\\n background: rgb(245, 245, 245);\\n}\\n\\n.ace-github .ace_marker-layer .ace_selection {\\n background: rgb(181, 213, 255);\\n}\\n\\n.ace-github.ace_multiselect .ace_selection.ace_start {\\n box-shadow: 0 0 3px 0px white;\\n}\\n/* bold keywords cause cursor issues for some fonts */\\n/* this disables bold style for editor and keeps for static highlighter */\\n.ace-github.ace_nobold .ace_line > span {\\n font-weight: normal !important;\\n}\\n\\n.ace-github .ace_marker-layer .ace_step {\\n background: rgb(252, 255, 0);\\n}\\n\\n.ace-github .ace_marker-layer .ace_stack {\\n background: rgb(164, 229, 101);\\n}\\n\\n.ace-github .ace_marker-layer .ace_bracket {\\n margin: -1px 0 0 -1px;\\n border: 1px solid rgb(192, 192, 192);\\n}\\n\\n.ace-github .ace_gutter-active-line {\\n background-color : rgba(0, 0, 0, 0.07);\\n}\\n\\n.ace-github .ace_marker-layer .ace_selected-word {\\n background: rgb(250, 250, 255);\\n border: 1px solid rgb(200, 200, 250);\\n}\\n\\n.ace-github .ace_invisible {\\n color: #BFBFBF\\n}\\n\\n.ace-github .ace_print-margin {\\n width: 1px;\\n background: #e8e8e8;\\n}\\n\\n.ace-github .ace_indent-guide {\\n background: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==\\\") right repeat-y;\\n}\\n\\n.ace-github .ace_indent-guide-active {\\n background: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAAZSURBVHjaYvj///9/hivKyv8BAAAA//8DACLqBhbvk+/eAAAAAElFTkSuQmCC\\\") right repeat-y;\\n}\\n\";\n\n});\n\nace.define(\"ace/theme/github\",[\"require\",\"exports\",\"module\",\"ace/theme/github-css\",\"ace/lib/dom\"], function(require, exports, module){exports.isDark = false;\nexports.cssClass = \"ace-github\";\nexports.cssText = require(\"./github-css\");\nvar dom = require(\"../lib/dom\");\ndom.importCssString(exports.cssText, exports.cssClass, false);\n\n}); (function() {\n ace.require([\"ace/theme/github\"], function(m) {\n if (typeof module == \"object\" && typeof exports == \"object\" && module) {\n module.exports = m;\n }\n });\n })();\n ","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.flatpickr-calendar{background:transparent;opacity:0;display:none;text-align:center;visibility:hidden;padding:0;-webkit-animation:none;animation:none;direction:ltr;border:0;font-size:14px;line-height:24px;border-radius:5px;position:absolute;width:307.875px;-webkit-box-sizing:border-box;box-sizing:border-box;-ms-touch-action:manipulation;touch-action:manipulation;background:#fff;-webkit-box-shadow:1px 0 0 #e6e6e6,-1px 0 0 #e6e6e6,0 1px 0 #e6e6e6,0 -1px 0 #e6e6e6,0 3px 13px rgba(0,0,0,0.08);box-shadow:1px 0 0 #e6e6e6,-1px 0 0 #e6e6e6,0 1px 0 #e6e6e6,0 -1px 0 #e6e6e6,0 3px 13px rgba(0,0,0,0.08)}.flatpickr-calendar.open,.flatpickr-calendar.inline{opacity:1;max-height:640px;visibility:visible}.flatpickr-calendar.open{display:inline-block;z-index:99999}.flatpickr-calendar.animate.open{-webkit-animation:fpFadeInDown 300ms cubic-bezier(.23,1,.32,1);animation:fpFadeInDown 300ms cubic-bezier(.23,1,.32,1)}.flatpickr-calendar.inline{display:block;position:relative;top:2px}.flatpickr-calendar.static{position:absolute;top:calc(100% + 2px)}.flatpickr-calendar.static.open{z-index:999;display:block}.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+1) .flatpickr-day.inRange:nth-child(7n+7){-webkit-box-shadow:none !important;box-shadow:none !important}.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+2) .flatpickr-day.inRange:nth-child(7n+1){-webkit-box-shadow:-2px 0 0 #e6e6e6,5px 0 0 #e6e6e6;box-shadow:-2px 0 0 #e6e6e6,5px 0 0 #e6e6e6}.flatpickr-calendar .hasWeeks .dayContainer,.flatpickr-calendar .hasTime .dayContainer{border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.flatpickr-calendar .hasWeeks .dayContainer{border-left:0}.flatpickr-calendar.hasTime .flatpickr-time{height:40px;border-top:1px solid #e6e6e6}.flatpickr-calendar.noCalendar.hasTime .flatpickr-time{height:auto}.flatpickr-calendar:before,.flatpickr-calendar:after{position:absolute;display:block;pointer-events:none;border:solid transparent;content:'';height:0;width:0;left:22px}.flatpickr-calendar.rightMost:before,.flatpickr-calendar.arrowRight:before,.flatpickr-calendar.rightMost:after,.flatpickr-calendar.arrowRight:after{left:auto;right:22px}.flatpickr-calendar.arrowCenter:before,.flatpickr-calendar.arrowCenter:after{left:50%;right:50%}.flatpickr-calendar:before{border-width:5px;margin:0 -5px}.flatpickr-calendar:after{border-width:4px;margin:0 -4px}.flatpickr-calendar.arrowTop:before,.flatpickr-calendar.arrowTop:after{bottom:100%}.flatpickr-calendar.arrowTop:before{border-bottom-color:#e6e6e6}.flatpickr-calendar.arrowTop:after{border-bottom-color:#fff}.flatpickr-calendar.arrowBottom:before,.flatpickr-calendar.arrowBottom:after{top:100%}.flatpickr-calendar.arrowBottom:before{border-top-color:#e6e6e6}.flatpickr-calendar.arrowBottom:after{border-top-color:#fff}.flatpickr-calendar:focus{outline:0}.flatpickr-wrapper{position:relative;display:inline-block}.flatpickr-months{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.flatpickr-months .flatpickr-month{background:transparent;color:rgba(0,0,0,0.9);fill:rgba(0,0,0,0.9);height:34px;line-height:1;text-align:center;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:hidden;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}.flatpickr-months .flatpickr-prev-month,.flatpickr-months .flatpickr-next-month{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;text-decoration:none;cursor:pointer;position:absolute;top:0;height:34px;padding:10px;z-index:3;color:rgba(0,0,0,0.9);fill:rgba(0,0,0,0.9)}.flatpickr-months .flatpickr-prev-month.flatpickr-disabled,.flatpickr-months .flatpickr-next-month.flatpickr-disabled{display:none}.flatpickr-months .flatpickr-prev-month i,.flatpickr-months .flatpickr-next-month i{position:relative}.flatpickr-months .flatpickr-prev-month.flatpickr-prev-month,.flatpickr-months .flatpickr-next-month.flatpickr-prev-month{/*\n /*rtl:begin:ignore*/left:0/*\n /*rtl:end:ignore*/}/*\n /*rtl:begin:ignore*/\n/*\n /*rtl:end:ignore*/\n.flatpickr-months .flatpickr-prev-month.flatpickr-next-month,.flatpickr-months .flatpickr-next-month.flatpickr-next-month{/*\n /*rtl:begin:ignore*/right:0/*\n /*rtl:end:ignore*/}/*\n /*rtl:begin:ignore*/\n/*\n /*rtl:end:ignore*/\n.flatpickr-months .flatpickr-prev-month:hover,.flatpickr-months .flatpickr-next-month:hover{color:#959ea9}.flatpickr-months .flatpickr-prev-month:hover svg,.flatpickr-months .flatpickr-next-month:hover svg{fill:#f64747}.flatpickr-months .flatpickr-prev-month svg,.flatpickr-months .flatpickr-next-month svg{width:14px;height:14px}.flatpickr-months .flatpickr-prev-month svg path,.flatpickr-months .flatpickr-next-month svg path{-webkit-transition:fill .1s;transition:fill .1s;fill:inherit}.numInputWrapper{position:relative;height:auto}.numInputWrapper input,.numInputWrapper span{display:inline-block}.numInputWrapper input{width:100%}.numInputWrapper input::-ms-clear{display:none}.numInputWrapper input::-webkit-outer-spin-button,.numInputWrapper input::-webkit-inner-spin-button{margin:0;-webkit-appearance:none}.numInputWrapper span{position:absolute;right:0;width:14px;padding:0 4px 0 2px;height:50%;line-height:50%;opacity:0;cursor:pointer;border:1px solid rgba(57,57,57,0.15);-webkit-box-sizing:border-box;box-sizing:border-box}.numInputWrapper span:hover{background:rgba(0,0,0,0.1)}.numInputWrapper span:active{background:rgba(0,0,0,0.2)}.numInputWrapper span:after{display:block;content:\"\";position:absolute}.numInputWrapper span.arrowUp{top:0;border-bottom:0}.numInputWrapper span.arrowUp:after{border-left:4px solid transparent;border-right:4px solid transparent;border-bottom:4px solid rgba(57,57,57,0.6);top:26%}.numInputWrapper span.arrowDown{top:50%}.numInputWrapper span.arrowDown:after{border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px solid rgba(57,57,57,0.6);top:40%}.numInputWrapper span svg{width:inherit;height:auto}.numInputWrapper span svg path{fill:rgba(0,0,0,0.5)}.numInputWrapper:hover{background:rgba(0,0,0,0.05)}.numInputWrapper:hover span{opacity:1}.flatpickr-current-month{font-size:135%;line-height:inherit;font-weight:300;color:inherit;position:absolute;width:75%;left:12.5%;padding:7.48px 0 0 0;line-height:1;height:34px;display:inline-block;text-align:center;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.flatpickr-current-month span.cur-month{font-family:inherit;font-weight:700;color:inherit;display:inline-block;margin-left:.5ch;padding:0}.flatpickr-current-month span.cur-month:hover{background:rgba(0,0,0,0.05)}.flatpickr-current-month .numInputWrapper{width:6ch;width:7ch\\\\0;display:inline-block}.flatpickr-current-month .numInputWrapper span.arrowUp:after{border-bottom-color:rgba(0,0,0,0.9)}.flatpickr-current-month .numInputWrapper span.arrowDown:after{border-top-color:rgba(0,0,0,0.9)}.flatpickr-current-month input.cur-year{background:transparent;-webkit-box-sizing:border-box;box-sizing:border-box;color:inherit;cursor:text;padding:0 0 0 .5ch;margin:0;display:inline-block;font-size:inherit;font-family:inherit;font-weight:300;line-height:inherit;height:auto;border:0;border-radius:0;vertical-align:initial;-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.flatpickr-current-month input.cur-year:focus{outline:0}.flatpickr-current-month input.cur-year[disabled],.flatpickr-current-month input.cur-year[disabled]:hover{font-size:100%;color:rgba(0,0,0,0.5);background:transparent;pointer-events:none}.flatpickr-current-month .flatpickr-monthDropdown-months{appearance:menulist;background:transparent;border:none;border-radius:0;box-sizing:border-box;color:inherit;cursor:pointer;font-size:inherit;font-family:inherit;font-weight:300;height:auto;line-height:inherit;margin:-1px 0 0 0;outline:none;padding:0 0 0 .5ch;position:relative;vertical-align:initial;-webkit-box-sizing:border-box;-webkit-appearance:menulist;-moz-appearance:menulist;width:auto}.flatpickr-current-month .flatpickr-monthDropdown-months:focus,.flatpickr-current-month .flatpickr-monthDropdown-months:active{outline:none}.flatpickr-current-month .flatpickr-monthDropdown-months:hover{background:rgba(0,0,0,0.05)}.flatpickr-current-month .flatpickr-monthDropdown-months .flatpickr-monthDropdown-month{background-color:transparent;outline:none;padding:0}.flatpickr-weekdays{background:transparent;text-align:center;overflow:hidden;width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;height:28px}.flatpickr-weekdays .flatpickr-weekdaycontainer{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}span.flatpickr-weekday{cursor:default;font-size:90%;background:transparent;color:rgba(0,0,0,0.54);line-height:1;margin:0;text-align:center;display:block;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;font-weight:bolder}.dayContainer,.flatpickr-weeks{padding:1px 0 0 0}.flatpickr-days{position:relative;overflow:hidden;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:flex-start;width:307.875px}.flatpickr-days:focus{outline:0}.dayContainer{padding:0;outline:0;text-align:left;width:307.875px;min-width:307.875px;max-width:307.875px;-webkit-box-sizing:border-box;box-sizing:border-box;display:inline-block;display:-ms-flexbox;display:-webkit-box;display:-webkit-flex;display:flex;-webkit-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-wrap:wrap;-ms-flex-pack:justify;-webkit-justify-content:space-around;justify-content:space-around;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}.dayContainer + .dayContainer{-webkit-box-shadow:-1px 0 0 #e6e6e6;box-shadow:-1px 0 0 #e6e6e6}.flatpickr-day{background:none;border:1px solid transparent;border-radius:150px;-webkit-box-sizing:border-box;box-sizing:border-box;color:#393939;cursor:pointer;font-weight:400;width:14.2857143%;-webkit-flex-basis:14.2857143%;-ms-flex-preferred-size:14.2857143%;flex-basis:14.2857143%;max-width:39px;height:39px;line-height:39px;margin:0;display:inline-block;position:relative;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;text-align:center}.flatpickr-day.inRange,.flatpickr-day.prevMonthDay.inRange,.flatpickr-day.nextMonthDay.inRange,.flatpickr-day.today.inRange,.flatpickr-day.prevMonthDay.today.inRange,.flatpickr-day.nextMonthDay.today.inRange,.flatpickr-day:hover,.flatpickr-day.prevMonthDay:hover,.flatpickr-day.nextMonthDay:hover,.flatpickr-day:focus,.flatpickr-day.prevMonthDay:focus,.flatpickr-day.nextMonthDay:focus{cursor:pointer;outline:0;background:#e6e6e6;border-color:#e6e6e6}.flatpickr-day.today{border-color:#959ea9}.flatpickr-day.today:hover,.flatpickr-day.today:focus{border-color:#959ea9;background:#959ea9;color:#fff}.flatpickr-day.selected,.flatpickr-day.startRange,.flatpickr-day.endRange,.flatpickr-day.selected.inRange,.flatpickr-day.startRange.inRange,.flatpickr-day.endRange.inRange,.flatpickr-day.selected:focus,.flatpickr-day.startRange:focus,.flatpickr-day.endRange:focus,.flatpickr-day.selected:hover,.flatpickr-day.startRange:hover,.flatpickr-day.endRange:hover,.flatpickr-day.selected.prevMonthDay,.flatpickr-day.startRange.prevMonthDay,.flatpickr-day.endRange.prevMonthDay,.flatpickr-day.selected.nextMonthDay,.flatpickr-day.startRange.nextMonthDay,.flatpickr-day.endRange.nextMonthDay{background:#569ff7;-webkit-box-shadow:none;box-shadow:none;color:#fff;border-color:#569ff7}.flatpickr-day.selected.startRange,.flatpickr-day.startRange.startRange,.flatpickr-day.endRange.startRange{border-radius:50px 0 0 50px}.flatpickr-day.selected.endRange,.flatpickr-day.startRange.endRange,.flatpickr-day.endRange.endRange{border-radius:0 50px 50px 0}.flatpickr-day.selected.startRange + .endRange:not(:nth-child(7n+1)),.flatpickr-day.startRange.startRange + .endRange:not(:nth-child(7n+1)),.flatpickr-day.endRange.startRange + .endRange:not(:nth-child(7n+1)){-webkit-box-shadow:-10px 0 0 #569ff7;box-shadow:-10px 0 0 #569ff7}.flatpickr-day.selected.startRange.endRange,.flatpickr-day.startRange.startRange.endRange,.flatpickr-day.endRange.startRange.endRange{border-radius:50px}.flatpickr-day.inRange{border-radius:0;-webkit-box-shadow:-5px 0 0 #e6e6e6,5px 0 0 #e6e6e6;box-shadow:-5px 0 0 #e6e6e6,5px 0 0 #e6e6e6}.flatpickr-day.flatpickr-disabled,.flatpickr-day.flatpickr-disabled:hover,.flatpickr-day.prevMonthDay,.flatpickr-day.nextMonthDay,.flatpickr-day.notAllowed,.flatpickr-day.notAllowed.prevMonthDay,.flatpickr-day.notAllowed.nextMonthDay{color:rgba(57,57,57,0.3);background:transparent;border-color:transparent;cursor:default}.flatpickr-day.flatpickr-disabled,.flatpickr-day.flatpickr-disabled:hover{cursor:not-allowed;color:rgba(57,57,57,0.1)}.flatpickr-day.week.selected{border-radius:0;-webkit-box-shadow:-5px 0 0 #569ff7,5px 0 0 #569ff7;box-shadow:-5px 0 0 #569ff7,5px 0 0 #569ff7}.flatpickr-day.hidden{visibility:hidden}.rangeMode .flatpickr-day{margin-top:1px}.flatpickr-weekwrapper{float:left}.flatpickr-weekwrapper .flatpickr-weeks{padding:0 12px;-webkit-box-shadow:1px 0 0 #e6e6e6;box-shadow:1px 0 0 #e6e6e6}.flatpickr-weekwrapper .flatpickr-weekday{float:none;width:100%;line-height:28px}.flatpickr-weekwrapper span.flatpickr-day,.flatpickr-weekwrapper span.flatpickr-day:hover{display:block;width:100%;max-width:none;color:rgba(57,57,57,0.3);background:transparent;cursor:default;border:none}.flatpickr-innerContainer{display:block;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden}.flatpickr-rContainer{display:inline-block;padding:0;-webkit-box-sizing:border-box;box-sizing:border-box}.flatpickr-time{text-align:center;outline:0;display:block;height:0;line-height:40px;max-height:40px;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.flatpickr-time:after{content:\"\";display:table;clear:both}.flatpickr-time .numInputWrapper{-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;width:40%;height:40px;float:left}.flatpickr-time .numInputWrapper span.arrowUp:after{border-bottom-color:#393939}.flatpickr-time .numInputWrapper span.arrowDown:after{border-top-color:#393939}.flatpickr-time.hasSeconds .numInputWrapper{width:26%}.flatpickr-time.time24hr .numInputWrapper{width:49%}.flatpickr-time input{background:transparent;-webkit-box-shadow:none;box-shadow:none;border:0;border-radius:0;text-align:center;margin:0;padding:0;height:inherit;line-height:inherit;color:#393939;font-size:14px;position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.flatpickr-time input.flatpickr-hour{font-weight:bold}.flatpickr-time input.flatpickr-minute,.flatpickr-time input.flatpickr-second{font-weight:400}.flatpickr-time input:focus{outline:0;border:0}.flatpickr-time .flatpickr-time-separator,.flatpickr-time .flatpickr-am-pm{height:inherit;float:left;line-height:inherit;color:#393939;font-weight:bold;width:2%;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-align-self:center;-ms-flex-item-align:center;align-self:center}.flatpickr-time .flatpickr-am-pm{outline:0;width:18%;cursor:pointer;text-align:center;font-weight:400}.flatpickr-time input:hover,.flatpickr-time .flatpickr-am-pm:hover,.flatpickr-time input:focus,.flatpickr-time .flatpickr-am-pm:focus{background:#eee}.flatpickr-input[readonly]{cursor:pointer}@-webkit-keyframes fpFadeInDown{from{opacity:0;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@keyframes fpFadeInDown{from{opacity:0;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/flatpickr/dist/flatpickr.min.css\"],\"names\":[],\"mappings\":\"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\",\"sourcesContent\":[\".flatpickr-calendar{background:transparent;opacity:0;display:none;text-align:center;visibility:hidden;padding:0;-webkit-animation:none;animation:none;direction:ltr;border:0;font-size:14px;line-height:24px;border-radius:5px;position:absolute;width:307.875px;-webkit-box-sizing:border-box;box-sizing:border-box;-ms-touch-action:manipulation;touch-action:manipulation;background:#fff;-webkit-box-shadow:1px 0 0 #e6e6e6,-1px 0 0 #e6e6e6,0 1px 0 #e6e6e6,0 -1px 0 #e6e6e6,0 3px 13px rgba(0,0,0,0.08);box-shadow:1px 0 0 #e6e6e6,-1px 0 0 #e6e6e6,0 1px 0 #e6e6e6,0 -1px 0 #e6e6e6,0 3px 13px rgba(0,0,0,0.08)}.flatpickr-calendar.open,.flatpickr-calendar.inline{opacity:1;max-height:640px;visibility:visible}.flatpickr-calendar.open{display:inline-block;z-index:99999}.flatpickr-calendar.animate.open{-webkit-animation:fpFadeInDown 300ms cubic-bezier(.23,1,.32,1);animation:fpFadeInDown 300ms cubic-bezier(.23,1,.32,1)}.flatpickr-calendar.inline{display:block;position:relative;top:2px}.flatpickr-calendar.static{position:absolute;top:calc(100% + 2px)}.flatpickr-calendar.static.open{z-index:999;display:block}.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+1) .flatpickr-day.inRange:nth-child(7n+7){-webkit-box-shadow:none !important;box-shadow:none !important}.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+2) .flatpickr-day.inRange:nth-child(7n+1){-webkit-box-shadow:-2px 0 0 #e6e6e6,5px 0 0 #e6e6e6;box-shadow:-2px 0 0 #e6e6e6,5px 0 0 #e6e6e6}.flatpickr-calendar .hasWeeks .dayContainer,.flatpickr-calendar .hasTime .dayContainer{border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.flatpickr-calendar .hasWeeks .dayContainer{border-left:0}.flatpickr-calendar.hasTime .flatpickr-time{height:40px;border-top:1px solid #e6e6e6}.flatpickr-calendar.noCalendar.hasTime .flatpickr-time{height:auto}.flatpickr-calendar:before,.flatpickr-calendar:after{position:absolute;display:block;pointer-events:none;border:solid transparent;content:'';height:0;width:0;left:22px}.flatpickr-calendar.rightMost:before,.flatpickr-calendar.arrowRight:before,.flatpickr-calendar.rightMost:after,.flatpickr-calendar.arrowRight:after{left:auto;right:22px}.flatpickr-calendar.arrowCenter:before,.flatpickr-calendar.arrowCenter:after{left:50%;right:50%}.flatpickr-calendar:before{border-width:5px;margin:0 -5px}.flatpickr-calendar:after{border-width:4px;margin:0 -4px}.flatpickr-calendar.arrowTop:before,.flatpickr-calendar.arrowTop:after{bottom:100%}.flatpickr-calendar.arrowTop:before{border-bottom-color:#e6e6e6}.flatpickr-calendar.arrowTop:after{border-bottom-color:#fff}.flatpickr-calendar.arrowBottom:before,.flatpickr-calendar.arrowBottom:after{top:100%}.flatpickr-calendar.arrowBottom:before{border-top-color:#e6e6e6}.flatpickr-calendar.arrowBottom:after{border-top-color:#fff}.flatpickr-calendar:focus{outline:0}.flatpickr-wrapper{position:relative;display:inline-block}.flatpickr-months{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.flatpickr-months .flatpickr-month{background:transparent;color:rgba(0,0,0,0.9);fill:rgba(0,0,0,0.9);height:34px;line-height:1;text-align:center;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:hidden;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}.flatpickr-months .flatpickr-prev-month,.flatpickr-months .flatpickr-next-month{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;text-decoration:none;cursor:pointer;position:absolute;top:0;height:34px;padding:10px;z-index:3;color:rgba(0,0,0,0.9);fill:rgba(0,0,0,0.9)}.flatpickr-months .flatpickr-prev-month.flatpickr-disabled,.flatpickr-months .flatpickr-next-month.flatpickr-disabled{display:none}.flatpickr-months .flatpickr-prev-month i,.flatpickr-months .flatpickr-next-month i{position:relative}.flatpickr-months .flatpickr-prev-month.flatpickr-prev-month,.flatpickr-months .flatpickr-next-month.flatpickr-prev-month{/*\\n /*rtl:begin:ignore*/left:0/*\\n /*rtl:end:ignore*/}/*\\n /*rtl:begin:ignore*/\\n/*\\n /*rtl:end:ignore*/\\n.flatpickr-months .flatpickr-prev-month.flatpickr-next-month,.flatpickr-months .flatpickr-next-month.flatpickr-next-month{/*\\n /*rtl:begin:ignore*/right:0/*\\n /*rtl:end:ignore*/}/*\\n /*rtl:begin:ignore*/\\n/*\\n /*rtl:end:ignore*/\\n.flatpickr-months .flatpickr-prev-month:hover,.flatpickr-months .flatpickr-next-month:hover{color:#959ea9}.flatpickr-months .flatpickr-prev-month:hover svg,.flatpickr-months .flatpickr-next-month:hover svg{fill:#f64747}.flatpickr-months .flatpickr-prev-month svg,.flatpickr-months .flatpickr-next-month svg{width:14px;height:14px}.flatpickr-months .flatpickr-prev-month svg path,.flatpickr-months .flatpickr-next-month svg path{-webkit-transition:fill .1s;transition:fill .1s;fill:inherit}.numInputWrapper{position:relative;height:auto}.numInputWrapper input,.numInputWrapper span{display:inline-block}.numInputWrapper input{width:100%}.numInputWrapper input::-ms-clear{display:none}.numInputWrapper input::-webkit-outer-spin-button,.numInputWrapper input::-webkit-inner-spin-button{margin:0;-webkit-appearance:none}.numInputWrapper span{position:absolute;right:0;width:14px;padding:0 4px 0 2px;height:50%;line-height:50%;opacity:0;cursor:pointer;border:1px solid rgba(57,57,57,0.15);-webkit-box-sizing:border-box;box-sizing:border-box}.numInputWrapper span:hover{background:rgba(0,0,0,0.1)}.numInputWrapper span:active{background:rgba(0,0,0,0.2)}.numInputWrapper span:after{display:block;content:\\\"\\\";position:absolute}.numInputWrapper span.arrowUp{top:0;border-bottom:0}.numInputWrapper span.arrowUp:after{border-left:4px solid transparent;border-right:4px solid transparent;border-bottom:4px solid rgba(57,57,57,0.6);top:26%}.numInputWrapper span.arrowDown{top:50%}.numInputWrapper span.arrowDown:after{border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px solid rgba(57,57,57,0.6);top:40%}.numInputWrapper span svg{width:inherit;height:auto}.numInputWrapper span svg path{fill:rgba(0,0,0,0.5)}.numInputWrapper:hover{background:rgba(0,0,0,0.05)}.numInputWrapper:hover span{opacity:1}.flatpickr-current-month{font-size:135%;line-height:inherit;font-weight:300;color:inherit;position:absolute;width:75%;left:12.5%;padding:7.48px 0 0 0;line-height:1;height:34px;display:inline-block;text-align:center;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.flatpickr-current-month span.cur-month{font-family:inherit;font-weight:700;color:inherit;display:inline-block;margin-left:.5ch;padding:0}.flatpickr-current-month span.cur-month:hover{background:rgba(0,0,0,0.05)}.flatpickr-current-month .numInputWrapper{width:6ch;width:7ch\\\\0;display:inline-block}.flatpickr-current-month .numInputWrapper span.arrowUp:after{border-bottom-color:rgba(0,0,0,0.9)}.flatpickr-current-month .numInputWrapper span.arrowDown:after{border-top-color:rgba(0,0,0,0.9)}.flatpickr-current-month input.cur-year{background:transparent;-webkit-box-sizing:border-box;box-sizing:border-box;color:inherit;cursor:text;padding:0 0 0 .5ch;margin:0;display:inline-block;font-size:inherit;font-family:inherit;font-weight:300;line-height:inherit;height:auto;border:0;border-radius:0;vertical-align:initial;-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.flatpickr-current-month input.cur-year:focus{outline:0}.flatpickr-current-month input.cur-year[disabled],.flatpickr-current-month input.cur-year[disabled]:hover{font-size:100%;color:rgba(0,0,0,0.5);background:transparent;pointer-events:none}.flatpickr-current-month .flatpickr-monthDropdown-months{appearance:menulist;background:transparent;border:none;border-radius:0;box-sizing:border-box;color:inherit;cursor:pointer;font-size:inherit;font-family:inherit;font-weight:300;height:auto;line-height:inherit;margin:-1px 0 0 0;outline:none;padding:0 0 0 .5ch;position:relative;vertical-align:initial;-webkit-box-sizing:border-box;-webkit-appearance:menulist;-moz-appearance:menulist;width:auto}.flatpickr-current-month .flatpickr-monthDropdown-months:focus,.flatpickr-current-month .flatpickr-monthDropdown-months:active{outline:none}.flatpickr-current-month .flatpickr-monthDropdown-months:hover{background:rgba(0,0,0,0.05)}.flatpickr-current-month .flatpickr-monthDropdown-months .flatpickr-monthDropdown-month{background-color:transparent;outline:none;padding:0}.flatpickr-weekdays{background:transparent;text-align:center;overflow:hidden;width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;height:28px}.flatpickr-weekdays .flatpickr-weekdaycontainer{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}span.flatpickr-weekday{cursor:default;font-size:90%;background:transparent;color:rgba(0,0,0,0.54);line-height:1;margin:0;text-align:center;display:block;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;font-weight:bolder}.dayContainer,.flatpickr-weeks{padding:1px 0 0 0}.flatpickr-days{position:relative;overflow:hidden;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:flex-start;width:307.875px}.flatpickr-days:focus{outline:0}.dayContainer{padding:0;outline:0;text-align:left;width:307.875px;min-width:307.875px;max-width:307.875px;-webkit-box-sizing:border-box;box-sizing:border-box;display:inline-block;display:-ms-flexbox;display:-webkit-box;display:-webkit-flex;display:flex;-webkit-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-wrap:wrap;-ms-flex-pack:justify;-webkit-justify-content:space-around;justify-content:space-around;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}.dayContainer + .dayContainer{-webkit-box-shadow:-1px 0 0 #e6e6e6;box-shadow:-1px 0 0 #e6e6e6}.flatpickr-day{background:none;border:1px solid transparent;border-radius:150px;-webkit-box-sizing:border-box;box-sizing:border-box;color:#393939;cursor:pointer;font-weight:400;width:14.2857143%;-webkit-flex-basis:14.2857143%;-ms-flex-preferred-size:14.2857143%;flex-basis:14.2857143%;max-width:39px;height:39px;line-height:39px;margin:0;display:inline-block;position:relative;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;text-align:center}.flatpickr-day.inRange,.flatpickr-day.prevMonthDay.inRange,.flatpickr-day.nextMonthDay.inRange,.flatpickr-day.today.inRange,.flatpickr-day.prevMonthDay.today.inRange,.flatpickr-day.nextMonthDay.today.inRange,.flatpickr-day:hover,.flatpickr-day.prevMonthDay:hover,.flatpickr-day.nextMonthDay:hover,.flatpickr-day:focus,.flatpickr-day.prevMonthDay:focus,.flatpickr-day.nextMonthDay:focus{cursor:pointer;outline:0;background:#e6e6e6;border-color:#e6e6e6}.flatpickr-day.today{border-color:#959ea9}.flatpickr-day.today:hover,.flatpickr-day.today:focus{border-color:#959ea9;background:#959ea9;color:#fff}.flatpickr-day.selected,.flatpickr-day.startRange,.flatpickr-day.endRange,.flatpickr-day.selected.inRange,.flatpickr-day.startRange.inRange,.flatpickr-day.endRange.inRange,.flatpickr-day.selected:focus,.flatpickr-day.startRange:focus,.flatpickr-day.endRange:focus,.flatpickr-day.selected:hover,.flatpickr-day.startRange:hover,.flatpickr-day.endRange:hover,.flatpickr-day.selected.prevMonthDay,.flatpickr-day.startRange.prevMonthDay,.flatpickr-day.endRange.prevMonthDay,.flatpickr-day.selected.nextMonthDay,.flatpickr-day.startRange.nextMonthDay,.flatpickr-day.endRange.nextMonthDay{background:#569ff7;-webkit-box-shadow:none;box-shadow:none;color:#fff;border-color:#569ff7}.flatpickr-day.selected.startRange,.flatpickr-day.startRange.startRange,.flatpickr-day.endRange.startRange{border-radius:50px 0 0 50px}.flatpickr-day.selected.endRange,.flatpickr-day.startRange.endRange,.flatpickr-day.endRange.endRange{border-radius:0 50px 50px 0}.flatpickr-day.selected.startRange + .endRange:not(:nth-child(7n+1)),.flatpickr-day.startRange.startRange + .endRange:not(:nth-child(7n+1)),.flatpickr-day.endRange.startRange + .endRange:not(:nth-child(7n+1)){-webkit-box-shadow:-10px 0 0 #569ff7;box-shadow:-10px 0 0 #569ff7}.flatpickr-day.selected.startRange.endRange,.flatpickr-day.startRange.startRange.endRange,.flatpickr-day.endRange.startRange.endRange{border-radius:50px}.flatpickr-day.inRange{border-radius:0;-webkit-box-shadow:-5px 0 0 #e6e6e6,5px 0 0 #e6e6e6;box-shadow:-5px 0 0 #e6e6e6,5px 0 0 #e6e6e6}.flatpickr-day.flatpickr-disabled,.flatpickr-day.flatpickr-disabled:hover,.flatpickr-day.prevMonthDay,.flatpickr-day.nextMonthDay,.flatpickr-day.notAllowed,.flatpickr-day.notAllowed.prevMonthDay,.flatpickr-day.notAllowed.nextMonthDay{color:rgba(57,57,57,0.3);background:transparent;border-color:transparent;cursor:default}.flatpickr-day.flatpickr-disabled,.flatpickr-day.flatpickr-disabled:hover{cursor:not-allowed;color:rgba(57,57,57,0.1)}.flatpickr-day.week.selected{border-radius:0;-webkit-box-shadow:-5px 0 0 #569ff7,5px 0 0 #569ff7;box-shadow:-5px 0 0 #569ff7,5px 0 0 #569ff7}.flatpickr-day.hidden{visibility:hidden}.rangeMode .flatpickr-day{margin-top:1px}.flatpickr-weekwrapper{float:left}.flatpickr-weekwrapper .flatpickr-weeks{padding:0 12px;-webkit-box-shadow:1px 0 0 #e6e6e6;box-shadow:1px 0 0 #e6e6e6}.flatpickr-weekwrapper .flatpickr-weekday{float:none;width:100%;line-height:28px}.flatpickr-weekwrapper span.flatpickr-day,.flatpickr-weekwrapper span.flatpickr-day:hover{display:block;width:100%;max-width:none;color:rgba(57,57,57,0.3);background:transparent;cursor:default;border:none}.flatpickr-innerContainer{display:block;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden}.flatpickr-rContainer{display:inline-block;padding:0;-webkit-box-sizing:border-box;box-sizing:border-box}.flatpickr-time{text-align:center;outline:0;display:block;height:0;line-height:40px;max-height:40px;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.flatpickr-time:after{content:\\\"\\\";display:table;clear:both}.flatpickr-time .numInputWrapper{-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;width:40%;height:40px;float:left}.flatpickr-time .numInputWrapper span.arrowUp:after{border-bottom-color:#393939}.flatpickr-time .numInputWrapper span.arrowDown:after{border-top-color:#393939}.flatpickr-time.hasSeconds .numInputWrapper{width:26%}.flatpickr-time.time24hr .numInputWrapper{width:49%}.flatpickr-time input{background:transparent;-webkit-box-shadow:none;box-shadow:none;border:0;border-radius:0;text-align:center;margin:0;padding:0;height:inherit;line-height:inherit;color:#393939;font-size:14px;position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.flatpickr-time input.flatpickr-hour{font-weight:bold}.flatpickr-time input.flatpickr-minute,.flatpickr-time input.flatpickr-second{font-weight:400}.flatpickr-time input:focus{outline:0;border:0}.flatpickr-time .flatpickr-time-separator,.flatpickr-time .flatpickr-am-pm{height:inherit;float:left;line-height:inherit;color:#393939;font-weight:bold;width:2%;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-align-self:center;-ms-flex-item-align:center;align-self:center}.flatpickr-time .flatpickr-am-pm{outline:0;width:18%;cursor:pointer;text-align:center;font-weight:400}.flatpickr-time input:hover,.flatpickr-time .flatpickr-am-pm:hover,.flatpickr-time input:focus,.flatpickr-time .flatpickr-am-pm:focus{background:#eee}.flatpickr-input[readonly]{cursor:pointer}@-webkit-keyframes fpFadeInDown{from{opacity:0;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@keyframes fpFadeInDown{from{opacity:0;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","\"use strict\";\n\n/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n*/\nmodule.exports = function (cssWithMappingToString) {\n var list = [];\n\n // return the list of modules as css string\n list.toString = function toString() {\n return this.map(function (item) {\n var content = \"\";\n var needLayer = typeof item[5] !== \"undefined\";\n if (item[4]) {\n content += \"@supports (\".concat(item[4], \") {\");\n }\n if (item[2]) {\n content += \"@media \".concat(item[2], \" {\");\n }\n if (needLayer) {\n content += \"@layer\".concat(item[5].length > 0 ? \" \".concat(item[5]) : \"\", \" {\");\n }\n content += cssWithMappingToString(item);\n if (needLayer) {\n content += \"}\";\n }\n if (item[2]) {\n content += \"}\";\n }\n if (item[4]) {\n content += \"}\";\n }\n return content;\n }).join(\"\");\n };\n\n // import a list of modules into the list\n list.i = function i(modules, media, dedupe, supports, layer) {\n if (typeof modules === \"string\") {\n modules = [[null, modules, undefined]];\n }\n var alreadyImportedModules = {};\n if (dedupe) {\n for (var k = 0; k < this.length; k++) {\n var id = this[k][0];\n if (id != null) {\n alreadyImportedModules[id] = true;\n }\n }\n }\n for (var _k = 0; _k < modules.length; _k++) {\n var item = [].concat(modules[_k]);\n if (dedupe && alreadyImportedModules[item[0]]) {\n continue;\n }\n if (typeof layer !== \"undefined\") {\n if (typeof item[5] === \"undefined\") {\n item[5] = layer;\n } else {\n item[1] = \"@layer\".concat(item[5].length > 0 ? \" \".concat(item[5]) : \"\", \" {\").concat(item[1], \"}\");\n item[5] = layer;\n }\n }\n if (media) {\n if (!item[2]) {\n item[2] = media;\n } else {\n item[1] = \"@media \".concat(item[2], \" {\").concat(item[1], \"}\");\n item[2] = media;\n }\n }\n if (supports) {\n if (!item[4]) {\n item[4] = \"\".concat(supports);\n } else {\n item[1] = \"@supports (\".concat(item[4], \") {\").concat(item[1], \"}\");\n item[4] = supports;\n }\n }\n list.push(item);\n }\n };\n return list;\n};","\"use strict\";\n\nmodule.exports = function (item) {\n var content = item[1];\n var cssMapping = item[3];\n if (!cssMapping) {\n return content;\n }\n if (typeof btoa === \"function\") {\n var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(cssMapping))));\n var data = \"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(base64);\n var sourceMapping = \"/*# \".concat(data, \" */\");\n return [content].concat([sourceMapping]).join(\"\\n\");\n }\n return [content].join(\"\\n\");\n};","'use strict';\n\nvar m = require('react-dom');\nif (process.env.NODE_ENV === 'production') {\n exports.createRoot = m.createRoot;\n exports.hydrateRoot = m.hydrateRoot;\n} else {\n var i = m.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\n exports.createRoot = function(c, o) {\n i.usingClientEntryPoint = true;\n try {\n return m.createRoot(c, o);\n } finally {\n i.usingClientEntryPoint = false;\n }\n };\n exports.hydrateRoot = function(c, h, o) {\n i.usingClientEntryPoint = true;\n try {\n return m.hydrateRoot(c, h, o);\n } finally {\n i.usingClientEntryPoint = false;\n }\n };\n}\n","/* global Map:readonly, Set:readonly, ArrayBuffer:readonly */\n\nvar hasElementType = typeof Element !== 'undefined';\nvar hasMap = typeof Map === 'function';\nvar hasSet = typeof Set === 'function';\nvar hasArrayBuffer = typeof ArrayBuffer === 'function' && !!ArrayBuffer.isView;\n\n// Note: We **don't** need `envHasBigInt64Array` in fde es6/index.js\n\nfunction equal(a, b) {\n // START: fast-deep-equal es6/index.js 3.1.3\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n // START: Modifications:\n // 1. Extra `has &&` helpers in initial condition allow es6 code\n // to co-exist with es5.\n // 2. Replace `for of` with es5 compliant iteration using `for`.\n // Basically, take:\n //\n // ```js\n // for (i of a.entries())\n // if (!b.has(i[0])) return false;\n // ```\n //\n // ... and convert to:\n //\n // ```js\n // it = a.entries();\n // while (!(i = it.next()).done)\n // if (!b.has(i.value[0])) return false;\n // ```\n //\n // **Note**: `i` access switches to `i.value`.\n var it;\n if (hasMap && (a instanceof Map) && (b instanceof Map)) {\n if (a.size !== b.size) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!b.has(i.value[0])) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!equal(i.value[1], b.get(i.value[0]))) return false;\n return true;\n }\n\n if (hasSet && (a instanceof Set) && (b instanceof Set)) {\n if (a.size !== b.size) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!b.has(i.value[0])) return false;\n return true;\n }\n // END: Modifications\n\n if (hasArrayBuffer && ArrayBuffer.isView(a) && ArrayBuffer.isView(b)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (a[i] !== b[i]) return false;\n return true;\n }\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n // START: Modifications:\n // Apply guards for `Object.create(null)` handling. See:\n // - https://github.com/FormidableLabs/react-fast-compare/issues/64\n // - https://github.com/epoberezkin/fast-deep-equal/issues/49\n if (a.valueOf !== Object.prototype.valueOf && typeof a.valueOf === 'function' && typeof b.valueOf === 'function') return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString && typeof a.toString === 'function' && typeof b.toString === 'function') return a.toString() === b.toString();\n // END: Modifications\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n // END: fast-deep-equal\n\n // START: react-fast-compare\n // custom handling for DOM elements\n if (hasElementType && a instanceof Element) return false;\n\n // custom handling for React/Preact\n for (i = length; i-- !== 0;) {\n if ((keys[i] === '_owner' || keys[i] === '__v' || keys[i] === '__o') && a.$$typeof) {\n // React-specific: avoid traversing React elements' _owner\n // Preact-specific: avoid traversing Preact elements' __v and __o\n // __v = $_original / $_vnode\n // __o = $_owner\n // These properties contain circular references and are not needed when\n // comparing the actual elements (and not their owners)\n // .$$typeof and ._store on just reasonable markers of elements\n\n continue;\n }\n\n // all other properties should be traversed as usual\n if (!equal(a[keys[i]], b[keys[i]])) return false;\n }\n // END: react-fast-compare\n\n // START: fast-deep-equal\n return true;\n }\n\n return a !== a && b !== b;\n}\n// end fast-deep-equal\n\nmodule.exports = function isEqual(a, b) {\n try {\n return equal(a, b);\n } catch (error) {\n if (((error.message || '').match(/stack|recursion/i))) {\n // warn on circular references, don't crash\n // browsers give this different errors name and messages:\n // chrome/safari: \"RangeError\", \"Maximum call stack size exceeded\"\n // firefox: \"InternalError\", too much recursion\"\n // edge: \"Error\", \"Out of stack space\"\n console.warn('react-fast-compare cannot handle circular refs');\n return false;\n }\n // some other error. we should definitely know about these\n throw error;\n }\n};\n","\"use strict\";\n\nvar stylesInDOM = [];\nfunction getIndexByIdentifier(identifier) {\n var result = -1;\n for (var i = 0; i < stylesInDOM.length; i++) {\n if (stylesInDOM[i].identifier === identifier) {\n result = i;\n break;\n }\n }\n return result;\n}\nfunction modulesToDom(list, options) {\n var idCountMap = {};\n var identifiers = [];\n for (var i = 0; i < list.length; i++) {\n var item = list[i];\n var id = options.base ? item[0] + options.base : item[0];\n var count = idCountMap[id] || 0;\n var identifier = \"\".concat(id, \" \").concat(count);\n idCountMap[id] = count + 1;\n var indexByIdentifier = getIndexByIdentifier(identifier);\n var obj = {\n css: item[1],\n media: item[2],\n sourceMap: item[3],\n supports: item[4],\n layer: item[5]\n };\n if (indexByIdentifier !== -1) {\n stylesInDOM[indexByIdentifier].references++;\n stylesInDOM[indexByIdentifier].updater(obj);\n } else {\n var updater = addElementStyle(obj, options);\n options.byIndex = i;\n stylesInDOM.splice(i, 0, {\n identifier: identifier,\n updater: updater,\n references: 1\n });\n }\n identifiers.push(identifier);\n }\n return identifiers;\n}\nfunction addElementStyle(obj, options) {\n var api = options.domAPI(options);\n api.update(obj);\n var updater = function updater(newObj) {\n if (newObj) {\n if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap && newObj.supports === obj.supports && newObj.layer === obj.layer) {\n return;\n }\n api.update(obj = newObj);\n } else {\n api.remove();\n }\n };\n return updater;\n}\nmodule.exports = function (list, options) {\n options = options || {};\n list = list || [];\n var lastIdentifiers = modulesToDom(list, options);\n return function update(newList) {\n newList = newList || [];\n for (var i = 0; i < lastIdentifiers.length; i++) {\n var identifier = lastIdentifiers[i];\n var index = getIndexByIdentifier(identifier);\n stylesInDOM[index].references--;\n }\n var newLastIdentifiers = modulesToDom(newList, options);\n for (var _i = 0; _i < lastIdentifiers.length; _i++) {\n var _identifier = lastIdentifiers[_i];\n var _index = getIndexByIdentifier(_identifier);\n if (stylesInDOM[_index].references === 0) {\n stylesInDOM[_index].updater();\n stylesInDOM.splice(_index, 1);\n }\n }\n lastIdentifiers = newLastIdentifiers;\n };\n};","\"use strict\";\n\nvar memo = {};\n\n/* istanbul ignore next */\nfunction getTarget(target) {\n if (typeof memo[target] === \"undefined\") {\n var styleTarget = document.querySelector(target);\n\n // Special case to return head of iframe instead of iframe itself\n if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {\n try {\n // This will throw an exception if access to iframe is blocked\n // due to cross-origin restrictions\n styleTarget = styleTarget.contentDocument.head;\n } catch (e) {\n // istanbul ignore next\n styleTarget = null;\n }\n }\n memo[target] = styleTarget;\n }\n return memo[target];\n}\n\n/* istanbul ignore next */\nfunction insertBySelector(insert, style) {\n var target = getTarget(insert);\n if (!target) {\n throw new Error(\"Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.\");\n }\n target.appendChild(style);\n}\nmodule.exports = insertBySelector;","\"use strict\";\n\n/* istanbul ignore next */\nfunction insertStyleElement(options) {\n var element = document.createElement(\"style\");\n options.setAttributes(element, options.attributes);\n options.insert(element, options.options);\n return element;\n}\nmodule.exports = insertStyleElement;","\"use strict\";\n\n/* istanbul ignore next */\nfunction setAttributesWithoutAttributes(styleElement) {\n var nonce = typeof __webpack_nonce__ !== \"undefined\" ? __webpack_nonce__ : null;\n if (nonce) {\n styleElement.setAttribute(\"nonce\", nonce);\n }\n}\nmodule.exports = setAttributesWithoutAttributes;","\"use strict\";\n\n/* istanbul ignore next */\nfunction apply(styleElement, options, obj) {\n var css = \"\";\n if (obj.supports) {\n css += \"@supports (\".concat(obj.supports, \") {\");\n }\n if (obj.media) {\n css += \"@media \".concat(obj.media, \" {\");\n }\n var needLayer = typeof obj.layer !== \"undefined\";\n if (needLayer) {\n css += \"@layer\".concat(obj.layer.length > 0 ? \" \".concat(obj.layer) : \"\", \" {\");\n }\n css += obj.css;\n if (needLayer) {\n css += \"}\";\n }\n if (obj.media) {\n css += \"}\";\n }\n if (obj.supports) {\n css += \"}\";\n }\n var sourceMap = obj.sourceMap;\n if (sourceMap && typeof btoa !== \"undefined\") {\n css += \"\\n/*# sourceMappingURL=data:application/json;base64,\".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), \" */\");\n }\n\n // For old IE\n /* istanbul ignore if */\n options.styleTagTransform(css, styleElement, options.options);\n}\nfunction removeStyleElement(styleElement) {\n // istanbul ignore if\n if (styleElement.parentNode === null) {\n return false;\n }\n styleElement.parentNode.removeChild(styleElement);\n}\n\n/* istanbul ignore next */\nfunction domAPI(options) {\n if (typeof document === \"undefined\") {\n return {\n update: function update() {},\n remove: function remove() {}\n };\n }\n var styleElement = options.insertStyleElement(options);\n return {\n update: function update(obj) {\n apply(styleElement, options, obj);\n },\n remove: function remove() {\n removeStyleElement(styleElement);\n }\n };\n}\nmodule.exports = domAPI;","\"use strict\";\n\n/* istanbul ignore next */\nfunction styleTagTransform(css, styleElement) {\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}\nmodule.exports = styleTagTransform;","module.exports = require(\"react-dom\");","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","__webpack_require__.amdD = function () {\n\tthrow new Error('define cannot be used indirect');\n};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.p = \"\";","__webpack_require__.nc = undefined;","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"react\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"prop-types\");","import { createContext } from 'react';\n\nconst AccordionContext = createContext();\n\nexport default AccordionContext;\n","import { createContext } from 'react';\n\nconst AccordionItemContext = createContext();\n\nexport default AccordionItemContext;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nfunction Icon({\n className,\n family,\n type,\n ...rest\n}) {\n function getCSSClasses() {\n const fontFamily = family || 'fa';\n\n return [\n 'tyk-icon',\n fontFamily,\n `${fontFamily}-${type}`,\n className,\n ].filter(Boolean).join(' ');\n }\n\n return ;\n}\n\nIcon.propTypes = {\n className: PropTypes.string,\n family: PropTypes.string,\n type: PropTypes.string.isRequired,\n};\n\nexport default Icon;\n","import React, { useContext } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Icon from '../../Icon';\nimport AccordionItemContext from './AccordionItemContext';\n\nfunction ItemTrigger({ wrap }) {\n const { collapsed, disabled, toggleChange } = useContext(AccordionItemContext);\n\n const iconType = collapsed ? 'chevron-down' : 'chevron-up';\n const classes = [\n 'tyk-accordion__trigger',\n disabled && 'tyk-accordion__trigger--disabled',\n ].filter(Boolean).join(' ');\n const trigger = (\n \n \n \n );\n\n return wrap\n ?
    {trigger}
    \n : trigger;\n}\n\nItemTrigger.propTypes = {\n wrap: PropTypes.bool,\n};\n\nexport default ItemTrigger;\n","import React, {\n useMemo, useState, useContext, forwardRef,\n} from 'react';\nimport PropTypes from 'prop-types';\n\nimport AccordionContext from './AccordionContext';\nimport AccordionItemContext from './AccordionItemContext';\nimport ItemTrigger from './AccordionItemTrigger';\n\nfunction AccordionItem({\n collapsed: collapsedProp,\n children,\n className,\n disabled,\n}, ref) {\n const { arrow } = useContext(AccordionContext);\n const [collapsed, setCollapsed] = useState(collapsedProp);\n\n const toggleChange = () => {\n if (disabled) {\n return;\n }\n\n setCollapsed(!collapsed);\n };\n\n const classes = useMemo(() => [\n 'tyk-accordion__item',\n arrow.expandToContent\n ? `tyk-accordion__item--trigger-position-${arrow.position}`\n : 'tyk-accordion__item--trigger-in-header',\n className,\n collapsed === false && 'tyk-accordion__item--active',\n ].filter(Boolean).join(' '), [arrow, className, collapsed]);\n\n const contextValue = useMemo(() => ({\n collapsed,\n disabled,\n toggleChange,\n }), [collapsed, disabled, toggleChange]);\n\n return (\n
    \n \n {arrow.expandToContent && (\n \n )}\n {children}\n \n
    \n );\n}\n\nAccordionItem.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n collapsed: PropTypes.bool,\n className: PropTypes.string,\n disabled: PropTypes.bool,\n};\n\nAccordionItem.defaultProps = {\n collapsed: false,\n};\n\nexport default forwardRef(AccordionItem);\n","import React, { useContext } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Icon from '../../Icon';\nimport AccordionContext from './AccordionContext';\nimport AccordionItemContext from './AccordionItemContext';\nimport ItemTrigger from './AccordionItemTrigger';\n\nfunction AccordionItemHeader({ className, children }) {\n const { collapsed, disabled, toggleChange } = useContext(AccordionItemContext);\n const { usearrowastrigger, arrow } = useContext(AccordionContext);\n const iconType = collapsed ? 'chevron-down' : 'chevron-up';\n const classes = [\n 'tyk-accordion__item-header',\n usearrowastrigger && 'tyk-accordion__arrow-trigger',\n className,\n ].filter(Boolean).join(' ');\n\n return (\n
    \n {\n !usearrowastrigger\n ? (\n \n {children}\n \n \n )\n : (\n <>\n {!arrow.expandToContent && arrow.position === 'left' && (\n \n )}\n
    {children}
    \n {!arrow.expandToContent && arrow.position === 'right' && (\n \n )}\n \n )\n }\n
    \n );\n}\n\nAccordionItemHeader.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n className: PropTypes.string,\n};\n\nexport default AccordionItemHeader;\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"react-transition-group\");","import { useEffect, useRef } from 'react';\n\nconst usePrevious = (value) => {\n const ref = useRef();\n useEffect(() => {\n ref.current = value;\n }, [value]);\n return ref.current;\n};\n\n/** @component */\nexport default usePrevious;\n","import { useEffect, useRef } from 'react';\n\nconst useTimeout = (callback, delay) => {\n const savedCallback = useRef();\n\n useEffect(() => {\n savedCallback.current = callback;\n },\n [callback]);\n\n useEffect(() => {\n function tick() {\n savedCallback.current();\n }\n if (delay !== null) {\n const id = setTimeout(tick, delay);\n return () => clearTimeout(id);\n }\n\n return () => {};\n },\n [delay]);\n};\n\n/** @component */\nexport default useTimeout;\n","import { useEffect, useRef } from 'react';\n\n/** @component */\nexport default function useInterval(callback, delay, ...args) {\n const savedCallback = useRef();\n\n useEffect(() => {\n savedCallback.current = callback;\n }, [callback]);\n\n /* eslint-disable consistent-return */\n useEffect(() => {\n function tick() {\n savedCallback.current(...args);\n }\n if (delay !== null && delay !== undefined) {\n const id = setInterval(tick, delay);\n return () => clearInterval(id);\n }\n }, [delay]);\n /* eslint-disable consistent-return */\n}\n","import { useEffect, useRef } from 'react';\n\nconst useEventListener = (eventName, handler, element) => {\n const savedHandler = useRef();\n useEffect(() => {\n savedHandler.current = handler;\n }, [handler]);\n\n useEffect(() => {\n const isSupported = element?.addEventListener;\n if (!isSupported) {\n // eslint-disable-next-line consistent-return\n return;\n }\n\n const eventListener = (event) => savedHandler.current(event);\n element.addEventListener(eventName, eventListener);\n\n // eslint-disable-next-line consistent-return\n return () => {\n element.removeEventListener(eventName, eventListener);\n };\n }, [eventName, element]);\n};\n\n/** @component */\nexport default useEventListener;\n","import { useCallback, useState, useLayoutEffect } from 'react';\n\nconst getSize = (el) => {\n if (!el) {\n return {\n width: 0,\n height: 0,\n };\n }\n\n return {\n width: el.offsetWidth,\n height: el.offsetHeight,\n };\n};\n\nconst useComponentSize = (ref) => {\n const [ComponentSize, setComponentSize] = useState(getSize(ref ? ref.current : {}));\n const handleResize = useCallback(() => {\n if (ref.current) {\n setComponentSize(getSize(ref.current));\n }\n }, [ref]);\n\n useLayoutEffect(() => {\n handleResize();\n\n let resizeObserver = new ResizeObserver(() => {\n handleResize();\n });\n resizeObserver.observe(ref.current);\n\n return () => {\n resizeObserver.disconnect(ref.current);\n resizeObserver = null;\n };\n }, [ref.current]);\n\n return ComponentSize;\n};\n\n/** @component */\nexport default useComponentSize;\n","export { default as usePrevious } from './usePrevious';\nexport { default as useTimeout } from './useTimeout';\nexport { default as useInterval } from './useInterval';\nexport { default as useEventListener } from './useEventListener';\nexport { default as useComponentSize } from './useComponentSize';\n","import React, {\n useRef, useState, useCallback, useEffect,\n} from 'react';\nimport PropTypes from 'prop-types';\nimport { CSSTransition } from 'react-transition-group';\nimport { useEventListener, useComponentSize } from '../../hooks';\n\n/**\n * Collapsible is a component that helps you to collapse/expand any type of content\n */\nfunction Collapsible({\n className,\n collapsed,\n children,\n ...rest\n}) {\n const contentContainer = useRef(null);\n const collapseWrapper = useRef(null);\n const refContainerSize = useComponentSize(contentContainer);\n const [contentContainerStyle, setContentContainerStyle] = useState({\n // eslint-disable-next-line\n height: (collapsed) ? 0 : 'auto',\n });\n\n const setHeight = (height) => {\n setContentContainerStyle({\n height: `${height}px`,\n });\n };\n\n const getHeight = () => (contentContainer.current ? contentContainer.current.clientHeight : 0);\n\n const onEnter = () => {\n setHeight(getHeight());\n };\n\n const onExit = () => {\n setHeight(0);\n };\n\n useEffect(() => {\n if (!collapsed\n && refContainerSize?.height\n && contentContainerStyle.height !== refContainerSize?.height\n ) {\n setHeight(refContainerSize.height);\n }\n }, [refContainerSize.height]);\n\n const onWindowResize = useCallback(() => {\n if (!collapsed && contentContainer.current) {\n setHeight(getHeight());\n collapseWrapper.current.style.height = `${getHeight()}px`;\n }\n }, [collapsed, contentContainer.current]);\n\n useEventListener('resize', onWindowResize, window);\n\n return (\n \n \n \n { children }\n \n \n \n );\n}\n\nCollapsible.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]),\n /** Describes if the content of Collapsible should be hidden or not */\n collapsed: PropTypes.bool,\n /** CSS classes that can be passed to the Collapsible element */\n className: PropTypes.string,\n};\n\nexport default Collapsible;\n","import React, { useContext } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Collapsible from '../../Collapsible';\nimport AccordionItemContext from './AccordionItemContext';\n\nfunction AccordionItemContent({ children, className }) {\n const { collapsed } = useContext(AccordionItemContext);\n\n const classes = [\n 'tyk-accordion__item-content',\n className,\n ].filter(Boolean).join(' ');\n\n return (\n
    \n \n { children }\n \n
    \n );\n}\n\nAccordionItemContent.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n className: PropTypes.string,\n};\n\nexport default AccordionItemContent;\n","import React, { useMemo } from 'react';\nimport PropTypes from 'prop-types';\nimport AccordionItem from './js/AccordionItem';\nimport AccordionItemHeader from './js/AccordionItemHeader';\nimport AccordionItemContent from './js/AccordionItemContent';\nimport AccordionContext from './js/AccordionContext';\n\nfunction Accordion({\n className,\n children,\n usearrowastrigger,\n arrow = { position: 'right', expandToContent: false },\n}) {\n const classes = [\n 'tyk-accordion',\n className,\n ].filter(Boolean).join(' ');\n\n const contextValue = useMemo(() => ({\n usearrowastrigger,\n arrow,\n }), [usearrowastrigger, arrow]);\n\n return (\n
    \n \n {children}\n \n
    \n );\n}\n\nAccordion.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n className: PropTypes.string,\n usearrowastrigger: PropTypes.bool,\n arrow: PropTypes.shape({\n position: PropTypes.oneOf(['left', 'right']),\n expandToContent: PropTypes.bool,\n }),\n};\n\nAccordion.defaultProps = {\n usearrowastrigger: false,\n};\n\n// For Readme.md : Start\nAccordion.Item = AccordionItem;\nAccordion.Item.Header = AccordionItemHeader;\nAccordion.Item.Content = AccordionItemContent;\n// For Readme.md : End\n\nexport default Accordion;\n","import React, { Fragment, cloneElement } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Icon from '../Icon';\n\n/**\n * Button component.\n */\nconst Button = React.forwardRef((props, ref) => {\n const {\n customButton,\n children,\n iconType,\n iconFamily,\n iconPosition,\n iconOnly,\n id,\n className,\n disabled,\n display,\n href,\n onClick,\n noStyle,\n size,\n theme,\n type,\n ...rest\n } = props;\n\n const getCssClasses = () => {\n const cssClasses = ['tyk-button'].concat(className ? className.split(' ') : []);\n const sizeClass = (size) ? `tyk-button--${size}` : 'tyk-button--md';\n const disabledClass = (disabled) ? 'disabled' : '';\n const displayClass = display || '';\n const themeClass = theme ? `tyk-button--${theme}` : '';\n const iconOnlyClass = iconOnly ? 'tyk-button--icon-only' : '';\n const noStyleClass = noStyle ? 'tyk-button--no-style' : '';\n\n cssClasses.push(iconOnlyClass);\n cssClasses.push(themeClass);\n cssClasses.push(sizeClass);\n cssClasses.push(disabledClass);\n cssClasses.push(displayClass);\n cssClasses.push(noStyleClass);\n\n if (iconType) {\n cssClasses.push(`icon-${iconPosition || 'left'}`);\n }\n\n return cssClasses.join(' ');\n };\n\n const getButtonIcon = (position) => {\n const iPos = iconPosition || 'left';\n\n return (\n (iconType && iPos === position)\n ? \n : null\n );\n };\n\n const getButtonType = () => {\n let buttonType;\n\n if (customButton) {\n return (\n \n { cloneElement(customButton, {\n className: getCssClasses(),\n disabled,\n })\n }\n \n );\n }\n\n if (href) {\n buttonType = (\n \n { getButtonIcon('left') }\n { children }\n { getButtonIcon('right') }\n \n );\n } else {\n buttonType = (\n // eslint-disable-next-line react/button-has-type\n \n { getButtonIcon('left') }\n { children && {children} }\n { getButtonIcon('right') }\n \n );\n }\n\n return buttonType;\n };\n\n\n return (\n getButtonType()\n );\n});\n\nButton.propTypes = {\n /**\n * Content of a button. Can be a DOM element or a React component\n */\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n customButton: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n ]),\n className: PropTypes.string,\n /**\n * Display type: inline/block. Default is inline\n */\n display: PropTypes.string,\n /**\n * Sets the button disabled state\n */\n disabled: PropTypes.bool,\n /**\n * Having this property set the button will become a link\n */\n id: PropTypes.string,\n href: PropTypes.string,\n iconPosition: PropTypes.string, // left or right\n iconFamily: PropTypes.string,\n iconOnly: PropTypes.bool,\n iconType: PropTypes.string,\n noStyle: PropTypes.bool,\n /**\n * Callback function, called when the button si clicked\n */\n onClick: PropTypes.func,\n /**\n * Describes the appearence of the button (ex: primary, danger, primary-outline etc.)\n */\n theme: PropTypes.string,\n /**\n * Type of the button (ex: button, submit etc.)\n */\n type: PropTypes.string,\n /**\n * Describes the size of the button (sm, md, lg). Default one is md\n */\n size: PropTypes.string,\n};\n\nButton.defaultProps = {\n theme: '',\n type: 'button',\n};\n\nexport default Button;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\n/**\n * Tyk button component.\n */\nfunction ButtonGroup({\n className,\n children,\n label,\n}) {\n return (\n
    \n {Boolean(label) && (\n \n )}\n
    \n {children}\n
    \n
    \n );\n}\n\nButtonGroup.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n className: PropTypes.string,\n /**\n * Label that will sit above the button group\n */\n label: PropTypes.string,\n};\n\nexport default ButtonGroup;\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"echarts\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"immutable\");","export default (func, wait, immediate) => {\n let timeout;\n return function debouncer(...args) {\n const context = this;\n const later = () => {\n timeout = null;\n if (!immediate) {\n func.apply(context, args);\n }\n };\n const callNow = immediate && !timeout;\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n if (callNow) {\n func.apply(context, args);\n }\n };\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nfunction Loader({ className, position = 'relative', withbackground = false }) {\n const classes = [\n 'loading',\n position,\n className,\n ].filter(Boolean).join(' ');\n\n const loader = (\n
    \n
    \n
    \n
    \n
    \n
    \n );\n\n return withbackground\n ?
    {loader}
    \n : loader;\n}\n\nLoader.propTypes = {\n /** add a class to loader */\n className: PropTypes.string,\n /** position of loader (absolute / relative) */\n position: PropTypes.string,\n /** defines weather loader should be renders with or without background */\n withbackground: PropTypes.bool,\n};\n\nexport default Loader;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport Icon from '../Icon';\n\n/**\n * The Message component is used to highlight important content to the users.\n *\n * If the content you are displaying needs immediate attention or is a feedback,\n * consider using `toast` instead\n */\nfunction Message({\n children, theme, onClose, noMargin, className,\n}) {\n function getCssClasses() {\n return [\n 'tyk-message',\n `tyk-message--${theme || 'info'}`,\n noMargin && 'no-margin',\n className,\n ].filter(Boolean).join(' ');\n }\n\n const iconType = theme === 'success' ? 'check' : 'warning';\n\n return (\n
    \n \n
    \n { children }\n
    \n {onClose && (\n \n )}\n
    \n );\n}\n\nMessage.propTypes = {\n /** Set theme for message (eg. default, success, danger, etc) */\n theme: PropTypes.string,\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]),\n /** add a class to loader */\n className: PropTypes.string,\n /** Removes margins by adding `no-margin` class */\n noMargin: PropTypes.bool,\n /** Callback for clicking on the \"x\" */\n onClose: PropTypes.func,\n};\n\nexport default Message;\n","import React, {\n useState, useEffect, useRef, memo,\n} from 'react';\nimport PropTypes from 'prop-types';\nimport * as echarts from 'echarts';\nimport { fromJS } from 'immutable';\n\nimport debounce from '../../utils/debounce';\nimport { usePrevious } from '../../hooks';\nimport Loader from '../Loader';\nimport Message from '../Message';\nimport worldMap from './maps/world.json';\n\necharts.registerMap('world', worldMap);\n\nconst Chart = (props) => {\n const {\n areaStyleColors,\n dataLoaded,\n hasData,\n highlight,\n type,\n option,\n series,\n onChange,\n zoomStart,\n zoomEnd,\n title,\n seriesConfig = [],\n noDataComponent = null,\n zoomColors,\n } = props;\n const [tykChartInstance, setTykChartInstance] = useState(null);\n const chartWrapperRef = useRef(null);\n const onResize = () => {\n if (tykChartInstance) {\n tykChartInstance.resize();\n }\n };\n\n const lineBarChart = {\n defaultOpts: fromJS({\n title: {\n show: true,\n text: title,\n left: 0,\n },\n color: [],\n toolbox: {\n right: '0',\n orient: 'horizontal',\n itemSize: 15,\n showTitle: true,\n feature: null,\n },\n dataZoom: [{\n show: true,\n start: 0,\n end: 100,\n orient: 'horizontal',\n dataBackground: {\n lineStyle: {\n color: zoomColors?.lineStyle || '#368493',\n },\n areaStyle: {\n color: zoomColors?.areaStyle || '#368493',\n },\n },\n handleStyle: {\n color: zoomColors?.handleStyle || '#368493',\n },\n textStyle: {\n color: zoomColors?.textStyle || '#368493',\n },\n borderColor: 'transparent',\n fillerColor: zoomColors?.fillerColor || 'rgba(54, 132, 147, 0.1)',\n }],\n legend: {\n show: false,\n // data: [],\n // right: '1%',\n },\n tooltip: {\n trigger: 'axis',\n axisPointer: {\n type: 'cross',\n },\n },\n grid: {\n left: '1%',\n right: '1%',\n bottom: '50px',\n top: '40px',\n containLabel: true,\n },\n xAxis: {\n boundaryGap: false,\n type: 'category',\n splitLine: {\n show: true,\n lineStyle: {\n type: 'dotted',\n color: '#F0F0F0',\n },\n },\n axisLine: {\n show: false,\n },\n axisTick: {\n show: false,\n },\n data: [],\n },\n yAxis: {\n min: 'dataMin',\n boundaryGap: true,\n axisPointer: {\n show: true,\n },\n splitLine: {\n lineStyle: {\n type: 'dotted',\n color: '#F0F0F0',\n },\n show: true,\n },\n axisLabel: {\n show: true,\n },\n axisLine: {\n show: true,\n },\n axisTick: {\n show: false,\n },\n type: 'value',\n },\n textStyle: {\n color: '#5a5a68',\n },\n series: [],\n animationEasing: 'elasticOut',\n }),\n seriesDefault: fromJS({\n data: [],\n type: 'line',\n areaStyle: {\n opacity: 1,\n color: areaStyleColors ? new echarts.graphic.LinearGradient(0, 0, 1, 1,\n areaStyleColors.map((color, index) => ({\n offset: index,\n color,\n }))) : [],\n },\n smooth: false,\n symbolSize: 7,\n name: '',\n }),\n };\n\n const pieChart = {\n defaultOpts: fromJS({\n tooltip: {\n trigger: 'axis',\n formatter: '{b}: {c} ({d}%)',\n },\n legend: {\n orient: 'horizontal',\n x: 'left',\n y: 'top',\n data: [],\n },\n color: [],\n series: [],\n }),\n seriesDefault: fromJS({\n type: 'pie',\n center: [\n '50%',\n '55%',\n ],\n radius: [\n '50%',\n '75%',\n ],\n avoidLabelOverlap: false,\n animationType: 'scale',\n animationEasing: 'elasticOut',\n labelLine: {\n normal: {\n show: true,\n smooth: 0.2,\n length: 6,\n length2: 6,\n },\n },\n data: [],\n }),\n };\n\n const geoChart = {\n defaultOpts: fromJS({\n series: [],\n }),\n seriesDefault: fromJS({\n type: 'map',\n data: [],\n }),\n };\n\n const buildChartOptions = (selectedType, selectedOptions, selectedSeries) => {\n let finalOpts = {};\n switch (selectedType) {\n case 'pie': {\n finalOpts = pieChart.defaultOpts.mergeDeep(fromJS(selectedOptions)).toJS();\n\n selectedSeries.forEach((entry) => {\n finalOpts.series.push(pieChart.seriesDefault.mergeDeep(fromJS(entry)).toJS());\n });\n\n break;\n }\n\n case 'geo': {\n finalOpts = geoChart.defaultOpts.mergeDeep(fromJS(selectedOptions)).toJS();\n\n selectedSeries.forEach((entry) => {\n finalOpts.series.push(geoChart.seriesDefault.mergeDeep(fromJS(entry)).toJS());\n });\n\n break;\n }\n\n default: {\n finalOpts = lineBarChart.defaultOpts.mergeDeep(fromJS(selectedOptions)).toJS();\n if (Array.isArray(selectedOptions.yAxis)) {\n finalOpts.yAxis = selectedOptions.yAxis;\n }\n\n selectedSeries.forEach((entry, index) => {\n const seriesData = Object.assign(\n {},\n lineBarChart.seriesDefault.toJS(),\n seriesConfig[index], entry,\n );\n finalOpts.series.push(seriesData);\n });\n break;\n }\n }\n return finalOpts;\n };\n\n useEffect(() => {\n window.addEventListener('resize', onResize);\n\n return () => {\n window.removeEventListener('resize', onResize);\n };\n }, [tykChartInstance]);\n\n useEffect(() => {\n\n if (!chartWrapperRef?.current) {\n return;\n }\n\n setTykChartInstance(echarts.init(chartWrapperRef.current));\n return () => {\n if (tykChartInstance) {\n tykChartInstance.dispose();\n }\n };\n }, [chartWrapperRef.current]);\n\n const eventCallBack = (e) => {\n if (onChange) {\n onChange(e);\n }\n };\n\n useEffect(() => {\n let debouncedMethod;\n if (tykChartInstance) {\n debouncedMethod = debounce(eventCallBack, 500);\n tykChartInstance.on('dataZoom', debouncedMethod);\n tykChartInstance.on('restore', debouncedMethod);\n tykChartInstance.on('click', debouncedMethod);\n\n tykChartInstance.on('mousemove', (params) => {\n if (params.data) {\n tykChartInstance.getZr().setCursorStyle('pointer');\n }\n });\n }\n\n return () => {\n if (tykChartInstance) {\n tykChartInstance.off('dataZoom', debouncedMethod);\n tykChartInstance.off('restore', debouncedMethod);\n tykChartInstance.off('click', debouncedMethod);\n }\n };\n }, [tykChartInstance, onChange]);\n\n const prevInstance = usePrevious(tykChartInstance);\n const prevOption = usePrevious(option);\n const prevType = usePrevious(type);\n const prevSeries = usePrevious(series);\n useEffect(() => {\n if (\n tykChartInstance\n && (\n !fromJS(prevInstance)?.equals?.(fromJS(tykChartInstance))\n || !fromJS(prevOption)?.equals?.(fromJS(option))\n || (prevType !== type)\n || !fromJS(prevSeries).equals?.(fromJS(series))\n )\n ) {\n tykChartInstance.clear();\n tykChartInstance.setOption(buildChartOptions(type, option, series));\n tykChartInstance.dispatchAction({\n type: 'takeGlobalCursor',\n key: 'dataZoomSelect',\n dataZoomSelectActive: true,\n });\n }\n }, [tykChartInstance, option, series, type]);\n\n useEffect(() => {\n if (tykChartInstance && highlight) {\n tykChartInstance.dispatchAction({\n type: 'highlight',\n seriesIndex: highlight.seriesIndex,\n dataIndex: highlight.dataIndex,\n });\n tykChartInstance.dispatchAction({\n type: 'showTip',\n seriesIndex: highlight.seriesIndex,\n dataIndex: highlight.dataIndex,\n });\n }\n }, [highlight]);\n\n\n const prevZoomStart = usePrevious(zoomStart);\n const prevZoomEnd = usePrevious(zoomEnd);\n useEffect(() => {\n if (\n tykChartInstance\n && zoomStart !== -1\n && zoomEnd !== -1\n && (\n prevZoomStart !== zoomStart\n || prevZoomEnd !== zoomEnd\n )\n ) {\n tykChartInstance.dispatchAction({\n type: 'dataZoom',\n startValue: zoomStart,\n endValue: zoomEnd,\n });\n }\n }, [zoomStart, zoomEnd]);\n\n const getStyle = () => {\n const { style } = props;\n const tempStyle = style || {};\n\n if (!tempStyle.height) {\n tempStyle.height = '300px';\n }\n if (!tempStyle.width) {\n tempStyle.width = '100%';\n }\n return tempStyle;\n };\n\n const chartHasData = () => (\n (dataLoaded && (hasData === false || hasData === true)) ? hasData : true\n );\n\n const getCssClasses = () => {\n const cssClasses = ['tyk-chart'];\n\n if (!dataLoaded) {\n cssClasses.push('tyk-chart--loading-chart');\n }\n\n if (!chartHasData()) {\n cssClasses.push('tyk-chart--no-data');\n }\n\n return cssClasses.join(' ');\n };\n\n return (\n
    \n {\n !dataLoaded\n ? \n : null\n }\n \n {\n /* eslint-disable-next-line no-nested-ternary */\n chartHasData()\n ? null\n : noDataComponent\n ? noDataComponent()\n : (\n \n No data to display\n \n )\n }\n
    \n );\n};\n\nChart.propTypes = {\n areaStyleColors: PropTypes.instanceOf(Array),\n dataLoaded: PropTypes.bool,\n hasData: PropTypes.bool,\n highlight: PropTypes.oneOfType([\n PropTypes.number,\n PropTypes.string,\n PropTypes.instanceOf(Array),\n ]),\n noDataComponent: PropTypes.func,\n zoomStart: PropTypes.number,\n zoomEnd: PropTypes.number,\n zoomColors: PropTypes.instanceOf(Object),\n option: PropTypes.instanceOf(Object),\n onChange: PropTypes.func,\n style: PropTypes.instanceOf(Object),\n type: PropTypes.string,\n title: PropTypes.string,\n series: PropTypes.instanceOf(Array),\n seriesConfig: PropTypes.instanceOf(Object),\n};\n\nexport default memo(Chart);\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport Message from '../../Message';\nimport { useTimeout } from '../../../hooks';\n\nconst ToastMessage = (props) => {\n const {\n children,\n options,\n onClose,\n index,\n } = props;\n const opts = Object.assign({\n theme: 'success',\n delay: 3000,\n }, options);\n let timer;\n\n const handleClose = (itemIndex) => {\n onClose(itemIndex);\n clearTimeout(timer);\n };\n\n useTimeout(() => handleClose(index), opts.delay);\n\n return (\n handleClose(index)}\n >\n {children}\n \n );\n};\n\nToastMessage.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]),\n options: PropTypes.instanceOf(Object),\n onClose: PropTypes.func,\n index: PropTypes.number,\n};\n\nexport default ToastMessage;\n","import React, {\n useEffect, useState,\n} from 'react';\nimport PropTypes from 'prop-types';\n\nimport ToastMessage from './ToastMessage';\n\nconst ToastContainer = (props) => {\n const [messages, setMessages] = useState({});\n const {\n notify,\n } = props;\n\n const updateNotifications = (message, options) => {\n const msgID = Math.floor(Math.random() * 1000000);\n \n setMessages((prevMessages) => ({\n ...prevMessages,\n [msgID]: {\n message,\n options,\n }\n }));\n };\n\n useEffect(() => {\n notify(updateNotifications);\n }, [messages]);\n\n const onMessageClosed = (index) => {\n const tempMessages = {...messages};\n delete tempMessages[index];\n setMessages((prevMessages) => {\n const { [index]: messageToBeRemoved, ...restMessages } = prevMessages;\n return restMessages;\n });\n };\n\n return (\n
    \n {\n Object.keys(messages).map((msgID) => (\n messages[msgID]\n ? (\n \n {messages[msgID].message}\n \n )\n : null\n ))\n }\n
    \n );\n};\n\nToastContainer.propTypes = {\n notify: PropTypes.func,\n};\n\nexport default ToastContainer;\n","import React from 'react';\nimport { createRoot } from 'react-dom/client';\nimport ToastContainer from './js/ToastContainer';\n/**\n * Toast is a service that displays dialogs\n * on the bottom right part of the screen.\n *\n * The dialogs can have one of the Tyk UI themes, so that\n * it would match it's purpose (i.e success message, error message)\n *\n */\nclass ToastCreator {\n constructor() {\n const el = document.createElement('div');\n el.className = 'tyk-toast';\n document.body.appendChild(el);\n const root = createRoot(el);\n root.render();\n }\n\n bindNotify = (fn) => {\n this.createNotification = fn;\n };\n\n notify(message, options) {\n if (this.createNotification) {\n this.createNotification(message, options);\n }\n }\n\n danger(message, options) {\n this.notify(message, { ...options, theme: 'danger' });\n }\n\n success(message, options) {\n this.notify(message, { ...options, theme: 'success' });\n }\n\n warning(message, options) {\n this.notify(message, { ...options, theme: 'warning' });\n }\n\n info(message, options) {\n this.notify(message, { ...options, theme: 'info' });\n }\n}\n\nconst toast = new ToastCreator();\n\nexport default toast;\n","import React, { Fragment, createRef, useCallback } from 'react';\nimport PropTypes from 'prop-types';\n\nimport toast from '../Toast';\n\n/**\n * - CopyToClipboard is used to copy string for a user.\n * - Can be used normally with a text or a custom components (Eg. Button, Icon, etc)\n */\n\nconst CopyToClipboard = (props) => {\n const {\n display, copy, children, onCopy,\n } = props;\n const txtRef = createRef();\n const handleClick = useCallback(() => {\n if (onCopy) {\n onCopy();\n }\n\n if (!window.navigator.clipboard) {\n txtRef.current.select();\n document.execCommand('copy');\n toast.notify('copied', { theme: 'success' });\n return;\n }\n window.navigator.clipboard.writeText(copy);\n toast.notify('copied', { theme: 'success' });\n }, [onCopy, txtRef]);\n\n return (\n \n \n {children || display}\n \n {!window.navigator.clipboard ? (\n \n ) : null}\n \n );\n};\n\nCopyToClipboard.propTypes = {\n /** Callback function executed after text is copied */\n onCopy: PropTypes.func,\n /** Text to be copied */\n copy: PropTypes.string.isRequired,\n /** Text to be displayed */\n display: PropTypes.string,\n /** Children of custom element if you are using any custom element */\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.string,\n PropTypes.object,\n PropTypes.node,\n ]),\n};\n\nexport default CopyToClipboard;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nfunction ModalFooter({ children }) {\n return (\n
    \n { children }\n
    \n );\n}\n\nModalFooter.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]),\n};\n\nexport default ModalFooter;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nfunction ModalBody({ children }) {\n return (\n
    \n { children }\n
    \n );\n}\n\nModalBody.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]),\n};\n\nexport default ModalBody;\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport { CSSTransition } from 'react-transition-group';\n\nimport Icon from '../Icon';\nimport ModalFooter from './js/ModalFooter';\nimport ModalBody from './js/ModalBody';\n\n/**\n * Modals add dialogs confirmation boxes, notifications, or completely custom content\n * - only one Modal can be opened at a time\n * - are unmounted when Modal is closed\n */\nfunction Modal({\n children,\n theme = 'none',\n disableCloseCommands = false,\n opened = false,\n onClose = () => {},\n size = 'md',\n className = '',\n showBackdrop = true,\n ...restProps\n}) {\n const modalClasses = [\n 'tyk-modal',\n `tyk-modal--theme-${theme}`,\n opened && 'opened',\n ].concat(className.split(' ')).filter(Boolean).join(' ');\n\n const backdropClasses = [\n 'tyk-modal__backdrop',\n opened && 'opened',\n ].filter(Boolean).join(' ');\n\n const themeIcon = {\n success: 'check',\n warning: 'warning',\n danger: 'delete',\n }[theme];\n\n return (\n <>\n {\n ReactDOM.createPortal(\n \n
    \n
    \n
    \n {theme !== 'none' && (\n
    \n \n
    \n )}\n { children }\n
    \n
    \n
    \n ,\n document.querySelector('body'),\n )\n }\n {showBackdrop && ReactDOM.createPortal(\n \n !disableCloseCommands && onClose()}\n onKeyDown={() => {}}\n type=\"button\"\n aria-label=\"Close\"\n />\n ,\n document.querySelector('body'),\n )}\n \n );\n}\n\nModal.Body = ModalBody;\nModal.Footer = ModalFooter;\n/* eslint-disable-next-line */\nModal.Header = ({ children }) => {\n console.warn('%cModal.Header%c is deprecated.', 'font-weight: bold', '');\n return (\n
    \n { children }\n
    \n );\n};\n/* eslint-disable-next-line */\nModal.Title = ({ children }) => {\n console.warn('%cModal.Title%c is deprecated.', 'font-weight: bold', '');\n return (\n

    \n { children }\n

    \n );\n};\n\nModal.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]),\n className: PropTypes.string,\n /** one of \"success\", \"warning\", \"danger\", \"none\"; default is \"none\" */\n theme: PropTypes.string,\n /** If set on true, the Modal won't close when clicking on the overlay or by pressing ESC key */\n disableCloseCommands: PropTypes.bool,\n /** If true the Modal will be by default opened */\n opened: PropTypes.bool,\n /** Callback method when the Modal is closed */\n onClose: PropTypes.func,\n /** Width of the Moda: md or lg */\n size: PropTypes.string,\n showBackdrop: PropTypes.bool,\n};\n\nexport default Modal;\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Button from '../Button';\nimport Modal from '../Modal';\n\n/**\n * Confirm component can be used to open a dialog () before a specific action\n */\nfunction Confirm(props) {\n const {\n children,\n title,\n description,\n confirmBtnText = 'Confirm',\n cancelBtnText = 'Cancel',\n } = props;\n const [open, setOpen] = useState(false);\n const [callback, setCallback] = useState(null);\n const [cancelCallback, setCancelCallback] = useState(null);\n\n const show = (callbackFunc, cancelCallbackFunc, beforeCallback) => (...args) => {\n if (beforeCallback) {\n beforeCallback(...args);\n }\n setOpen(true);\n setCallback(() => () => callbackFunc(...args));\n if (cancelCallbackFunc) {\n setCancelCallback(() => () => cancelCallbackFunc(...args));\n }\n };\n\n const hide = () => {\n setOpen(false);\n setCallback(null);\n setCancelCallback(null);\n };\n\n const cancel = () => {\n if (cancelCallback) {\n cancelCallback();\n }\n hide();\n };\n\n const confirm = () => {\n callback();\n hide();\n };\n\n return (\n <>\n {children(show)}\n \n \n

    {title}

    \n {description}\n
    \n \n \n {cancelBtnText}\n \n \n {confirmBtnText}\n \n \n
    \n \n );\n}\n\nConfirm.propTypes = {\n /** Sets the text for primary / confirmation button on opened modal */\n confirmBtnText: PropTypes.string,\n /** Sets the text for danger / abort button on opened modal */\n cancelBtnText: PropTypes.string,\n /** Sets the title for the opened modal */\n title: PropTypes.string,\n /** Sets the description for the opened modal */\n description: PropTypes.string,\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.string,\n PropTypes.object,\n PropTypes.node,\n PropTypes.func,\n ]),\n};\n\nexport default Confirm;\n","import React, { useCallback, useEffect, useRef } from 'react';\nimport PropTypes from 'prop-types';\n\nimport debounce from '../../utils/debounce';\n/**\n * FixedWrapper component, keeps all its children in a fix position on the page,\n * even if the scroll position changes\n * i.e: The top navigation bar of a page sits within FixedWrapper component\n */\nfunction FixedWrapper({ children, className, showShadow }) {\n const fixedWrapperRef = useRef(null);\n\n const attachShadow = useCallback(() => {\n const element = fixedWrapperRef.current;\n\n if (!element) {\n return;\n }\n\n if (window.scrollY) {\n element.classList.add('tyk-fixed-wrapper--scrolled');\n } else {\n element.classList.remove('tyk-fixed-wrapper--scrolled');\n }\n }, [fixedWrapperRef.current]);\n\n const debouncedAttachShadow = useCallback(debounce(attachShadow, 100), [attachShadow]);\n\n useEffect(() => {\n if (showShadow) {\n window.addEventListener('scroll', debouncedAttachShadow);\n }\n\n return () => {\n window.removeEventListener('scroll', debouncedAttachShadow);\n };\n }, [debouncedAttachShadow, showShadow]);\n\n return (\n
    \n { children }\n
    \n );\n}\n\nFixedWrapper.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]),\n /** Css classes that can be passed to the FixedWraper element */\n className: PropTypes.string,\n /** If true, bottom shadow on the FixedWrapper component\n * is being displayed when scroll happens\n */\n showShadow: PropTypes.bool,\n};\n\nFixedWrapper.defaultProps = {\n className: '',\n};\n\nexport default FixedWrapper;\n","import React, {\n useEffect, useState, useRef, useCallback,\n} from 'react';\nimport { PropTypes } from 'prop-types';\n\nimport debounce from '../../utils/debounce';\nimport { usePrevious, useComponentSize } from '../../hooks';\nimport Loader from '../Loader';\n\nfunction InfiniteScroller({\n children,\n hasMore,\n initialLoad,\n loadMore,\n pageNumber,\n refChild,\n}) {\n const [showLoader, setShowLoader] = useState(false);\n const containerRef = useRef(null);\n const refChildSize = useComponentSize(refChild);\n\n useEffect(() => {\n if (initialLoad && typeof loadMore === 'function') {\n setShowLoader(false);\n loadMore(pageNumber);\n }\n }, [initialLoad]);\n\n const shouldLoad = useCallback(() => {\n if (!containerRef.current) return false;\n const { clientHeight, scrollTop } = containerRef.current;\n\n return (\n hasMore\n && (\n (clientHeight + Math.round(scrollTop) === refChildSize.height)\n || (clientHeight >= refChildSize.height)\n )\n );\n }, [containerRef, refChildSize.height]);\n\n const loadMoreData = useCallback(() => {\n if (hasMore && typeof loadMore === 'function') {\n loadMore(pageNumber + 1);\n setShowLoader(true);\n } else {\n setShowLoader(false);\n }\n }, [hasMore, pageNumber]);\n\n const prevPageNumber = usePrevious(pageNumber);\n const scrollHandler = useCallback(debounce(() => {\n if (shouldLoad() && prevPageNumber <= pageNumber) {\n loadMoreData();\n }\n }, 200), [loadMoreData, shouldLoad]);\n\n useEffect(() => {\n containerRef.current?.addEventListener('scroll', scrollHandler);\n return () => containerRef.current?.removeEventListener('scroll', scrollHandler);\n }, [containerRef, scrollHandler]);\n\n // if content resets (page number resets) scroll to top\n useEffect(() => {\n if (prevPageNumber > 0 && pageNumber === 0) {\n containerRef.current.scrollTop = 0;\n }\n }, [containerRef, pageNumber]);\n\n const prevRefChildSize = usePrevious(refChildSize);\n useEffect(() => {\n if (\n refChildSize && prevRefChildSize\n && refChildSize.height !== prevRefChildSize.height\n && showLoader === true\n ) {\n setShowLoader(false);\n }\n }, [showLoader, refChildSize.height]);\n\n useEffect(() => {\n if (\n refChild && refChildSize.height < containerRef.current.clientHeight\n && refChildSize.height\n && hasMore\n ) {\n loadMoreData();\n }\n }, [containerRef, refChildSize, refChild, hasMore]);\n\n return (\n
    \n \n { children }\n
    \n {showLoader && (\n \n )}\n
    \n );\n}\n\nInfiniteScroller.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n hasMore: PropTypes.bool,\n initialLoad: PropTypes.bool,\n pageNumber: PropTypes.number,\n loadMore: PropTypes.func,\n refChild: PropTypes.instanceOf(Object),\n};\n\nInfiniteScroller.defaultProps = {\n hasMore: true,\n};\n\nexport default InfiniteScroller;\n","import React, {\n useEffect, useRef, forwardRef,\n} from 'react';\nimport { createPortal } from 'react-dom';\nimport PropTypes from 'prop-types';\nimport InfiniteScroller from '../InfiniteScroller';\n\n/**\n * It displays a container relative to another element.\n * Meant to be used for dropdowns, tooltips, and other similar components.\n */\nfunction FloatingContainer({\n element,\n size = 'auto',\n forceDisplay = 'auto',\n displayAxis = 'auto',\n preferredPosition,\n offset = 0,\n className,\n children,\n infiniteScrollerConfig,\n}, ref) {\n const localRef = useRef(null);\n const floatingContainerRef = ref || localRef;\n const contentWrapperRef = useRef(null);\n\n function determineDisplay() {\n const target = element.current;\n const container = floatingContainerRef.current;\n if (!container) return preferredPosition ?? displayAxis === 'vertical' ? 'bottom' : 'right';\n\n const { left, top } = target.getBoundingClientRect();\n const topSpace = top;\n const bottomSpace = window.innerHeight - top - target.offsetHeight;\n const leftSpace = left;\n const rightSpace = window.innerWidth - left - target.offsetWidth;\n const hasTopSpace = topSpace > container.scrollHeight;\n const hasBottomSpace = bottomSpace > container.scrollHeight;\n const hasLeftSpace = leftSpace > container.offsetWidth;\n const hasRightSpace = rightSpace > container.offsetWidth;\n const positionedVerticallyFitsInViewport = left + target.offsetWidth / 2 - container.offsetWidth / 2 > 0; // eslint-disable-line max-len\n const positionedHorizontallyFitsInViewport = top + target.offsetHeight / 2 - container.scrollHeight / 2 > 0; // eslint-disable-line max-len\n\n if (\n displayAxis === 'vertical'\n || (\n displayAxis === 'auto'\n && (hasTopSpace || hasBottomSpace)\n && positionedVerticallyFitsInViewport\n )\n ) {\n if (preferredPosition === 'top' && hasTopSpace) return 'top';\n if (preferredPosition === 'bottom' && hasBottomSpace) return 'bottom';\n return hasBottomSpace || bottomSpace > topSpace ? 'bottom' : 'top';\n }\n\n if (displayAxis === 'horizontal') {\n if (preferredPosition === 'left' && hasLeftSpace) return 'left';\n if (preferredPosition === 'right' && hasLeftSpace) return 'right';\n return hasRightSpace || rightSpace > leftSpace ? 'right' : 'left';\n }\n\n if (hasTopSpace && positionedVerticallyFitsInViewport) return 'top';\n if (hasBottomSpace && positionedVerticallyFitsInViewport) return 'bottom';\n if (hasRightSpace && positionedHorizontallyFitsInViewport) return 'right';\n if (hasLeftSpace && positionedHorizontallyFitsInViewport) return 'left';\n return preferredPosition ?? 'bottom';\n }\n\n function adjustPosition() {\n const display = forceDisplay !== 'auto' ? forceDisplay : determineDisplay();\n const target = element.current;\n const container = floatingContainerRef.current;\n\n if (!target || !container) return;\n\n const targetPosition = target.getBoundingClientRect();\n\n if (display === 'top') {\n const topPos = targetPosition.top - container.offsetHeight - offset;\n container.style.top = `${topPos}px`;\n container.style.left = (size === 'auto'\n ? `${targetPosition.left + target.offsetWidth / 2 - container.offsetWidth / 2}px`\n : `${targetPosition.left}px`);\n\n if (size === 'matchElement') {\n container.style.width = `${target.offsetWidth}px`;\n } else if (typeof size === 'function') {\n container.style.width = `${size(target.offsetWidth)}px`;\n }\n container.style.maxHeight = `${targetPosition.top - offset}px`;\n }\n\n if (display === 'bottom') {\n container.style.top = `${targetPosition.bottom + offset}px`;\n container.style.left = size === 'auto'\n ? `${targetPosition.left + target.offsetWidth / 2 - container.offsetWidth / 2}px`\n : `${targetPosition.left}px`;\n if (size === 'matchElement') {\n container.style.width = `${target.offsetWidth}px`;\n } else if (typeof size === 'function') {\n container.style.width = `${size(target.offsetWidth)}px`;\n }\n container.style.maxHeight = `${window.innerHeight - targetPosition.bottom - offset}px`;\n }\n\n if (display === 'left') {\n const topPos = targetPosition.top + target.offsetHeight / 2 - container.offsetHeight / 2;\n container.style.top = size === 'auto'\n ? `${topPos}px`\n : `${targetPosition.top}px`;\n container.style.left = `${targetPosition.left - container.offsetWidth - offset}px`;\n if (size === 'matchElement') {\n container.style.height = `${target.offsetHeight}px`;\n } else if (typeof size === 'function') {\n container.style.height = `${size(target.offsetHeight)}px`;\n }\n container.style.maxWidth = `${targetPosition.left - offset}px`;\n }\n\n if (display === 'right') {\n const topPos = targetPosition.top + target.offsetHeight / 2 - container.offsetHeight / 2;\n container.style.top = size === 'auto'\n ? `${topPos}px`\n : `${targetPosition.top}px`;\n container.style.left = `${targetPosition.left + target.offsetWidth + offset}px`;\n if (size === 'matchElement') {\n container.style.height = `${target.offsetHeight}px`;\n } else if (typeof size === 'function') {\n container.style.height = `${size(target.offsetHeight)}px`;\n }\n container.style.maxWidth = `${window.innerWidth - targetPosition.left - target.offsetWidth - offset}px`;\n }\n }\n\n useEffect(() => {\n window.requestAnimationFrame(function schedulePositionUpdate() {\n adjustPosition();\n window.requestAnimationFrame(schedulePositionUpdate);\n });\n }, []);\n\n return createPortal(\n \n \n \n {children}\n
    \n \n
    ,\n document.querySelector('body'),\n );\n}\n\nFloatingContainer.propTypes = {\n /** A DOM element that the floating container will be displayed relative to. */\n element: PropTypes.instanceOf(Object),\n className: PropTypes.string,\n /** The size of the container.\n * If `auto` the size will be determined by its contents.\n * If `matchElement` it will take the width or the height of the element depending\n * on the `displayAxis` prop.\n * It can also be a function that returns a number representing the width\n * or the height in pixels.\n */\n size: PropTypes.oneOfType([\n PropTypes.oneOf(['auto', 'matchElement']),\n PropTypes.func,\n ]),\n /**\n * The distance between the element and the floating container.\n * It can be positive or negative.\n */\n offset: PropTypes.number,\n /**\n * If `auto` the component will try to determine where to display the container relative to the\n * element (top, bottom, left, right).\n * It can also be one of top, bottom, left, right, to force the floating container to always be\n * displayed in that position.\n */\n forceDisplay: PropTypes.oneOf(['auto', 'top', 'bottom', 'left', 'right']),\n /**\n * It can be `auto`, `vertical` or `horizontal`. It specifies the axis where\n * it will be displayed when `forceDisplay` is `auto`.\n */\n displayAxis: PropTypes.oneOf(['auto', 'vertical', 'horizontal']),\n /**\n * If there is space on both sides of the axis preffer this side.\n */\n preferredPosition: PropTypes.oneOf(['top', 'bottom', 'left', 'right']),\n /**\n * Configuration object that will be passed to the infinite scroller component.\n */\n infiniteScrollerConfig: PropTypes.instanceOf(Object),\n};\n\nexport default forwardRef(FloatingContainer);\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport Message from '../Message';\n\nfunction InfoNote({ children }) {\n return (\n
    \n \n { children }\n \n
    \n );\n}\n\nInfoNote.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]),\n};\n\nexport default InfoNote;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nconst ListItem = (props) => {\n const {\n className,\n children,\n } = props;\n\n return (\n
  • \n {children}\n
  • \n );\n};\n\nListItem.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n className: PropTypes.string,\n};\n\nListItem.defaultProps = {\n className: '',\n};\n\nexport default ListItem;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { fromJS } from 'immutable';\nimport ListItem from './js/ListItem';\n\nconst List = (props) => {\n const {\n className,\n children,\n label,\n labelwidth,\n theme,\n style,\n } = props;\n\n const getCssClasses = () => {\n let cssClasses = ['tyk-list'];\n\n if (theme) {\n cssClasses.push(`tyk-list--${theme}`);\n }\n\n if (className) {\n cssClasses = cssClasses.concat(className.split(' '));\n }\n\n return cssClasses.join(' ');\n };\n\n const getListStyle = () => {\n const styleCopy = fromJS(style).toJS();\n if (labelwidth) {\n styleCopy.flexBasis = `calc(100% - ${labelwidth} - 20px)`;\n }\n\n return styleCopy;\n };\n\n return (\n
    \n {\n label !== undefined\n ? (\n \n )\n : null\n }\n
      \n {children}\n
    \n
    \n );\n};\n\nList.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n className: PropTypes.string,\n label: PropTypes.string,\n labelwidth: PropTypes.string,\n theme: PropTypes.string,\n style: PropTypes.instanceOf(Object),\n};\n\nList.defaultProps = {\n theme: 'default',\n style: {},\n};\n\n\nList.Item = ListItem;\n\n\nexport default List;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nfunction NavBar({\n align = 'center',\n children,\n left,\n right,\n title,\n pre,\n subtitle,\n withTabs,\n}) {\n const subtitleContent = subtitle ?

    { subtitle }

    : null;\n return (\n
    \n
    \n {pre && (\n
    {pre}
    \n )}\n {\n title\n ? (\n
    \n

    { title }

    \n { subtitleContent }\n
    \n )\n : subtitleContent\n }\n
    \n {left && (\n
    { left }
    \n )}\n {right && (\n
    { right }
    \n )}\n
    \n
    \n { children }\n
    \n );\n}\n\nNavBar.propTypes = {\n align: PropTypes.string,\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n title: PropTypes.string,\n subtitle: PropTypes.string,\n pre: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n ]),\n left: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n ]),\n right: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n ]),\n withTabs: PropTypes.bool,\n};\n\nexport default NavBar;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nfunction NavigationItem({ children }) {\n return (\n
  • \n {children}\n
  • \n );\n}\n\nNavigationItem.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n};\n\nexport default NavigationItem;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport NavigationItem from './js/NavigationItem';\n\nfunction Navigation({ children }) {\n return (\n
      \n {children}\n
    \n );\n}\n\nNavigation.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n};\n\nNavigation.Item = NavigationItem;\n\nexport default Navigation;\n","import { createContext } from 'react';\n\nexport const PortalContext = createContext();\n","import React, { useCallback } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Collapsible from '../../Collapsible';\nimport { PortalContext } from '../panel-context';\n\nfunction PanelBody({\n children,\n noPadding,\n className,\n ...rest\n}) {\n const getCssClasses = useCallback(\n () => [\n 'tyk-panel__body',\n className,\n noPadding && 'no-padding',\n ].filter(Boolean).join(' '),\n [className, noPadding],\n );\n\n return (\n \n {\n (portalContext) => (\n portalContext.collapsable\n ? (\n \n { children }\n \n )\n : (\n \n { children }\n
    \n )\n )\n }\n \n );\n}\n\nPanelBody.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]),\n noPadding: PropTypes.bool,\n className: PropTypes.string,\n};\n\nexport default PanelBody;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nconst PanelFooter = (props) => {\n const { children } = props;\n return (\n
    \n { children }\n
    \n );\n};\n\nPanelFooter.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]),\n};\n\nexport default PanelFooter;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Icon from '../../Icon';\nimport { PortalContext } from '../panel-context';\n\nexport default class PanelHeader extends Component {\n static propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]).isRequired,\n className: PropTypes.string,\n }\n\n getCssClasses(props) {\n const { className } = this.props;\n let cssClasses = ['tyk-panel__header'];\n\n if (props.collapsable) {\n cssClasses.push('collapsable');\n }\n\n if (className) {\n cssClasses = cssClasses.concat(className.split(' '));\n }\n\n return cssClasses.join(' ');\n }\n\n render() {\n const {\n children,\n } = this.props;\n\n return (\n \n {\n (portalContext) => {\n const HeaderTag = portalContext.theme === 'blank' ? 'h3' : 'div';\n const iconType = portalContext.collapsed ? 'chevron-down' : 'chevron-up';\n\n return (\n \n { children }\n {\n portalContext.collapsable\n ?
    \n : null\n }\n \n );\n }\n }\n
    \n );\n }\n}\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport PanelBody from './js/PanelBody';\nimport PanelFooter from './js/PanelFooter';\nimport PanelHeader from './js/PanelHeader';\n\n\nimport { PortalContext } from './panel-context';\n\n\nconst Panel = (props) => {\n const {\n children,\n className,\n collapsed,\n collapsable,\n theme,\n onToggleCollapse,\n collapsibleIconPosition = 'right',\n } = props;\n const [collapsedState, setCollapsedState] = useState(collapsed || false);\n\n useEffect(() => {\n if (collapsed !== collapsedState) {\n setCollapsedState(collapsed);\n }\n }, [collapsed]);\n\n const getCssClasses = () => {\n let cssClasses = ['tyk-panel'];\n const panelTheme = `tyk-panel--${theme || 'default'}`;\n const collapsbleIconPosition = `tyk-panel__icon-collapse--${collapsibleIconPosition}`;\n\n cssClasses.push(panelTheme);\n cssClasses.push(collapsbleIconPosition);\n\n if (className) {\n cssClasses = cssClasses.concat(className.split(' '));\n }\n\n if (collapsedState) {\n cssClasses.push('tyk-panel--collapsed');\n }\n\n return cssClasses.join(' ');\n };\n\n const handleToggle = () => {\n setCollapsedState(!collapsedState);\n\n if (onToggleCollapse) {\n onToggleCollapse(!collapsedState);\n }\n };\n\n return (\n
    \n \n {\n (typeof children === 'function')\n ? children({\n toggleCollapse: handleToggle,\n })\n : children\n }\n \n
    \n );\n};\n\nPanel.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.func,\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]),\n className: PropTypes.string,\n collapsable: PropTypes.bool,\n collapsibleIconPosition: PropTypes.string,\n collapsed: PropTypes.bool,\n theme: PropTypes.string,\n onToggleCollapse: PropTypes.func,\n};\n\n\nPanel.Body = PanelBody;\nPanel.Footer = PanelFooter;\nPanel.Header = PanelHeader;\n\nexport default Panel;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n/**\n * Pill\n *\n */\nconst Pill = (props) => {\n const {\n children,\n className,\n theme,\n } = props;\n\n const getCssClasses = () => {\n let cssClasses = ['tyk-pill', ...theme.split(' ').map(t => `tyk-pill--${t}`)];\n\n if (className) {\n cssClasses = cssClasses.concat(className);\n }\n\n return cssClasses.join(' ');\n };\n\n return (\n
    \n {children}\n
    \n );\n};\n\nPill.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n /** Css classes that can be passed to the Pill element */\n className: PropTypes.string,\n /** Theme that can be applied to a Pill */\n theme: PropTypes.string,\n};\n\nPill.defaultProps = {\n theme: 'default',\n};\n\nexport default Pill;\n","import { useRef } from 'react';\n\n/**\n * RevealPanelService is a class that manages the resizing of a panel element.\n * It provides methods to set the panel's height, hide and show it, and attach\n * event listeners for resizing.\n */\nclass RevealPanelService {\n #state = null; // Private state for mouse interactions.\n\n #panel = null; // The panel element to be resized.\n\n #gutter = null; // The gutter element used for resizing.\n\n #wrapper = null; // The wrapper element that contains the panel and gutter.\n\n #onHeightChangeCallbacks = []; // Callback function to be executed when the panel is resized.\n\n #onDragStartCallbacks = []; // Callback function to be executed when the panel is resized.\n\n #onDragEndCallbacks = []; // Callback function to be executed when the panel is resized.\n\n #dragStarted = false;\n /**\n * Sets a callback function to be executed when the panel is resized.\n * @param {function} callback - The callback function to be called on panel resize.\n */\n\n on(eventName, listener) {\n let list = null;\n if (eventName === 'onHeightChange') {\n list = this.#onHeightChangeCallbacks;\n } else if (eventName === 'onDragStart') {\n list = this.#onDragStartCallbacks;\n } else if (eventName === 'onDragEnd') {\n list = this.#onDragEndCallbacks;\n }\n\n if (list) {\n this.addListener(list, listener);\n }\n }\n\n off(eventName, listener) {\n let list = null;\n if (eventName === 'onHeightChange') {\n list = this.#onHeightChangeCallbacks;\n } else if (eventName === 'onDragStart') {\n list = this.#onDragStartCallbacks;\n } else if (eventName === 'onDragEnd') {\n list = this.#onDragEndCallbacks;\n }\n\n if (list) {\n this.removeListener(list, listener);\n }\n }\n\n /**\n * Sets the panel, gutter, and wrapper elements to be controlled by this class.\n * @param {HTMLElement} wrapper - The wrapper element containing the panel and gutter.\n * @param {HTMLElement} panel - The panel element to be resized.\n * @param {HTMLElement} gutter - The gutter element used for resizing.\n */\n setRefs(wrapper, panel, gutter) {\n if (this.#panel || this.#gutter || this.#wrapper) {\n this.unbindEvents();\n }\n this.#wrapper = wrapper;\n this.#panel = panel;\n this.#gutter = gutter;\n this.#state = null;\n this.bindEvents();\n }\n\n /**\n * Attaches event listeners for panel resizing.\n */\n bindEvents() {\n this.ensureRefs('bindEvents');\n this.#gutter.addEventListener('mousedown', this.onMouseDown.bind(this));\n document.addEventListener('mousemove', this.onMouseMove.bind(this));\n document.addEventListener('mouseup', this.onMouseUp.bind(this));\n }\n\n /**\n * Gets the current height of the panel.\n * @returns {number} - The height of the panel in pixels.\n */\n getHeight() {\n this.ensureRefs('getHeight');\n const size = this.#panel.getBoundingClientRect();\n return size.height;\n }\n\n /**\n * Handles the mouse down event, initiating the resizing process.\n * @param {MouseEvent} e - The mouse event object.\n */\n onMouseDown(e) {\n this.ensureRefs('onMouseDown');\n this.#state = {\n mouseDown: true,\n initialRect: this.#panel.getBoundingClientRect(),\n initialEvent: e,\n };\n }\n\n /**\n * Handles the mouse move event, adjusting the panel's height during resizing.\n * @param {MouseEvent} e - The mouse event object.\n */\n onMouseMove(e) {\n this.ensureRefs('onMouseMove');\n\n if (!this.#state) {\n return;\n }\n\n const isButtonDown = this.isPrimaryMouseButtonDown(e);\n if (!isButtonDown) {\n this.onMouseUp();\n return;\n }\n\n if (!this.#dragStarted) {\n this.#dragStarted = true;\n this.onDragStart.bind(this)();\n }\n\n const newY = this.#state.initialEvent.y - e.y;\n const finalHeight = Math.ceil(this.#state.initialRect.height + newY);\n this.setHeight(`${finalHeight}px`, 'mousemove');\n }\n\n // eslint-disable-next-line class-methods-use-this\n notifyListeners(list, value) {\n if (list && Array.isArray(list) && list.length) {\n list.forEach((fn) => {\n if (typeof fn === 'function') {\n fn(value);\n }\n });\n }\n }\n\n // eslint-disable-next-line class-methods-use-this\n addListener(list, listener) {\n if (list && Array.isArray(list) && typeof listener === 'function') {\n list.push(listener);\n }\n }\n\n // eslint-disable-next-line class-methods-use-this\n removeListener(list, listener) {\n if (list && Array.isArray(list) && typeof listener === 'function' && list.length) {\n const index = list.indexOf(listener);\n\n if (index > -1) {\n list.splice(index, 1);\n }\n }\n }\n\n onDragEnd() {\n if (this.#dragStarted) {\n this.notifyListeners(this.#onDragEndCallbacks, this.getHeight());\n }\n }\n\n onDragStart() {\n this.notifyListeners(this.#onDragStartCallbacks, this.getHeight());\n }\n\n // eslint-disable-next-line class-methods-use-this\n isPrimaryMouseButtonDown(e) {\n const flags = e.buttons !== undefined ? e.buttons : e.which;\n // eslint-disable-next-line no-bitwise\n const isDown = flags === 1;\n return isDown;\n }\n\n /**\n * Resets the state after the mouse up event, ending the resizing process.\n */\n onMouseUp() {\n this.#state = null;\n this.onDragEnd.bind(this)();\n this.#dragStarted = false;\n }\n\n /**\n * Sets the height of the panel.\n * @param {string} height - The new height value as a CSS string (e.g., \"100px\").\n */\n setHeight(height) {\n let heightVal = height;\n this.ensureRefs('setHeight');\n\n if (typeof heightVal === 'number') {\n heightVal += 'px';\n }\n\n this.#panel.style.height = heightVal;\n\n this.notifyListeners(this.#onHeightChangeCallbacks, this.getHeight());\n }\n\n /**\n * Ensures that the required elements (wrapper, panel, and gutter) are set.\n * Throws an error if they are missing.\n */\n ensureRefs(reason) {\n if (!this.#panel || !this.#gutter || !this.#wrapper) {\n throw new Error(\n `${reason}: Wrapper, panel, and gutter elements are required. Use setRefs method first.`,\n );\n }\n }\n\n /**\n * Checks if the panel is hidden.\n * @returns {boolean} - True if the panel is hidden; false otherwise.\n */\n isHidden() {\n this.ensureRefs('isHidden');\n return this.#wrapper.style.visibility === 'hidden';\n }\n\n /**\n * Hides the panel by setting its visibility to \"hidden\".\n */\n hide() {\n this.ensureRefs('hide');\n this.#wrapper.style.visibility = 'hidden';\n }\n\n /**\n * Shows the panel by setting its visibility to \"visible\".\n */\n show() {\n this.ensureRefs('show');\n this.#wrapper.style.visibility = 'visible';\n }\n\n /**\n * Unbinds the event listeners added for resizing.\n */\n unbindEvents() {\n this.#onHeightChangeCallbacks = [];\n this.#onDragStartCallbacks = [];\n this.#onDragEndCallbacks = [];\n this.#gutter.removeEventListener('mousedown', this.onMouseDown.bind(this));\n document.removeEventListener('mousemove', this.onMouseMove.bind(this));\n document.removeEventListener('mouseup', this.onMouseUp.bind(this));\n }\n\n deinit() {\n this.unbindEvents();\n }\n}\n\nexport const useRevealPanelService = () => {\n const revealPanelServiceRef = useRef(new RevealPanelService());\n return revealPanelServiceRef.current;\n};\n","import React, {\n useEffect,\n useRef,\n useImperativeHandle,\n forwardRef,\n} from 'react';\nimport PropTypes from 'prop-types';\nimport { createPortal } from 'react-dom';\nimport { useRevealPanelService } from './js/RevealPanelService';\n\nfunction RevealPanelHeaderLeft({ children }) {\n // eslint-disable-next-line react/jsx-no-useless-fragment\n return <>{children};\n}\n\nRevealPanelHeaderLeft.propTypes = {\n children: PropTypes.instanceOf({}),\n};\n\nfunction RevealPanelHeaderRight({ children }) {\n // eslint-disable-next-line react/jsx-no-useless-fragment\n return <>{children};\n}\n\nRevealPanelHeaderRight.propTypes = {\n children: PropTypes.instanceOf({}),\n};\n\nconst mergeClasses = (...classNames) => classNames.map((it) => (it || '').trim()).filter(Boolean).join(' ');\n\nconst RevealPanel = forwardRef(({\n children,\n height,\n onHeightChange = null,\n onDragStart = null,\n onDragEnd = null,\n style = null,\n parentSelector = null,\n contentStyle,\n contentClassName,\n gutterClassName,\n wrapperClassName,\n// eslint-disable-next-line consistent-return\n}, ref) => {\n const panelRef = useRef(null);\n const gutterRef = useRef(null);\n const wrapperRef = useRef(null);\n\n const panelService = useRevealPanelService();\n\n useEffect(() => {\n if (!panelRef.current || !gutterRef.current || !wrapperRef.current) {\n return;\n }\n\n if (!panelService) {\n return;\n }\n\n panelService.setRefs(wrapperRef.current, panelRef.current, gutterRef.current);\n panelService.on('onHeightChange', onHeightChange);\n panelService.on('onDragStart', onDragStart);\n panelService.on('onDragEnd', onDragEnd);\n panelService.setHeight(height, 'initialize');\n\n // eslint-disable-next-line consistent-return\n return () => {\n panelService.unbindEvents();\n };\n }, []);\n\n useImperativeHandle(\n ref,\n () => {\n // bind this context\n const bind = (func) => func.bind(panelService);\n\n return {\n getHeight: bind(panelService.getHeight),\n setHeight: bind(panelService.setHeight),\n hide: bind(panelService.hide),\n show: bind(panelService.show),\n isHidden: bind(panelService.isHidden),\n deinit: bind(panelService.deinit),\n on: bind(panelService.on),\n off: bind(panelService.off),\n };\n },\n [],\n );\n\n let headerLeft = null;\n let headerRight = null;\n const contents = [];\n\n React.Children.forEach(children, (child) => {\n if (child && React.isValidElement(child)) {\n if (child.type === RevealPanelHeaderLeft) {\n headerLeft = child;\n } else if (child.type === RevealPanelHeaderRight) {\n headerRight = child;\n } else {\n contents.push(child);\n }\n }\n });\n\n const element = (\n
    \n
    \n
    \n\n
    {headerLeft}
    \n
    \n
    {headerRight}
    \n\n
    \n
    \n {contents}\n
    \n
    \n );\n\n if (parentSelector) {\n return createPortal(element, document.querySelector(parentSelector));\n }\n});\n\nRevealPanel.propTypes = {\n children: PropTypes.instanceOf({}),\n height: PropTypes.string,\n onHeightChange: PropTypes.func,\n onDragStart: PropTypes.func,\n onDragEnd: PropTypes.func,\n parentSelector: PropTypes.string,\n style: PropTypes.instanceOf({}),\n contentStyle: PropTypes.instanceOf({}),\n contentClassName: PropTypes.string,\n gutterClassName: PropTypes.string,\n wrapperClassName: PropTypes.string,\n};\n\nRevealPanel.HeaderLeft = RevealPanelHeaderLeft;\nRevealPanel.HeaderRight = RevealPanelHeaderRight;\n\nexport default RevealPanel;\n","import { createContext } from 'react';\n\nexport const TabsContext = createContext();\n","import { createContext } from 'react';\n\nexport default createContext();\n","import React, { useEffect, useMemo } from 'react';\nimport PropTypes from 'prop-types';\n\nimport TabContext from './TabContext';\nimport { usePrevious } from '../../../hooks';\n\nconst TabContent = (props) => {\n const {\n addTab,\n hideTab,\n updateTab,\n showTab,\n children,\n selectedPath,\n tabData,\n tabsId,\n tabExists,\n path,\n rendered,\n hideTabContent,\n tabs,\n } = props;\n\n useEffect(() => {\n const tempTabData = { ...tabData };\n\n if (!tabExists(path)) {\n addTab(tempTabData, path);\n }\n }, [tabData, path]);\n\n const prevTabData = usePrevious(tabData);\n useEffect(() => {\n if (\n tabExists(path) && tabData?.title\n && (prevTabData?.title !== tabData?.title || prevTabData.selected !== tabData.selected)\n ) {\n const tempTabData = { ...tabData };\n updateTab(tempTabData, path);\n }\n }, [tabData, path, prevTabData, tabs]);\n\n useEffect(() => {\n showTab(path);\n return () => hideTab(path);\n }, []);\n\n const shouldRender = useMemo(() => {\n if (!Object.keys(tabs).length) {\n return false;\n }\n\n if (hideTabContent || tabs[tabData.id].show === false) {\n return false;\n }\n\n if (!rendered) {\n return tabExists(path);\n }\n return selectedPath && selectedPath.indexOf(tabData.id) > -1;\n }, [hideTabContent, rendered, selectedPath, tabData, tabs]);\n\n return (\n (\n shouldRender\n ? (\n
    -1 ? 'block' : 'none' }}>\n \n {children}\n \n
    \n )\n : null\n )\n );\n};\n\nTabContent.propTypes = {\n addTab: PropTypes.func,\n updateTab: PropTypes.func,\n hideTab: PropTypes.func,\n showTab: PropTypes.func,\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n path: PropTypes.instanceOf(Array),\n hideTabContent: PropTypes.bool,\n rendered: PropTypes.bool,\n selectedPath: PropTypes.instanceOf(Array),\n tabExists: PropTypes.func,\n tabsId: PropTypes.string,\n tabData: PropTypes.instanceOf(Object),\n tabs: PropTypes.instanceOf(Object),\n};\n\nexport default TabContent;\n","import React, {\n Fragment, useContext, useEffect, useState,\n} from 'react';\nimport PropTypes from 'prop-types';\nimport { TabsContext } from '../tabs-context';\nimport TabContext from './TabContext';\nimport TabContent from './TabContent';\n\nconst Tab = (props) => {\n const { id } = props;\n const tabsContext = useContext(TabsContext);\n const tabContext = useContext(TabContext);\n const {\n tabExists,\n selectedPath,\n addTab,\n updateTab,\n hideTab,\n showTab,\n rendered,\n hideTabContent,\n tabs,\n } = tabsContext;\n const {\n children,\n } = props;\n const [path, setPath] = useState('');\n\n useEffect(() => {\n let tempPath;\n if (tabContext && path) {\n if (tabContext.tabsId === tabsContext.id) {\n tempPath = tabContext.path.concat([id]);\n } else {\n tempPath = [id];\n }\n } else {\n tempPath = [id];\n }\n setPath(tempPath);\n }, [tabContext]);\n\n if (!path) {\n return null;\n }\n\n return (\n \n \n {children}\n \n \n );\n};\n\nTab.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n id: PropTypes.string,\n};\n\nTab.defaultProps = {};\n\nexport default Tab;\n","\nimport React, {\n useEffect, useState,\n} from 'react';\nimport PropTypes from 'prop-types';\nimport Tab from './js/Tab';\n\nimport Collapsible from '../Collapsible';\nimport Icon from '../Icon';\nimport { TabsContext } from './tabs-context';\n\nconst Tabs = (props) => {\n const {\n children,\n className,\n id,\n onTabChange,\n type,\n hideTabContent,\n } = props;\n const [tabs, setTabs] = useState({});\n const [selectedPath, setSelectedPath] = useState([]);\n const [rendered, setRendered] = useState(false);\n const [initialPath, setInitialPath] = useState(null);\n\n useEffect(() => {\n setSelectedPath(initialPath);\n }, [initialPath]);\n\n const updateTabsList = (tabsState, path, tabData) => {\n let tempTabsState = Object.assign({}, tabsState);\n const tempTabData = Object.assign({}, tabData);\n const tempPath = path.slice(0);\n\n while (tempPath.length > 1) {\n tempTabsState = tempTabsState[tempPath.shift()];\n\n if (!tempTabsState) {\n tempTabsState = {};\n }\n }\n\n tempTabData.tempPath = tempPath;\n tempTabsState[tempPath.shift()] = tempTabData;\n\n return tempTabsState;\n };\n\n const toggleTab = (tabsState, path) => {\n let tempTabsState = Object.assign({}, tabsState);\n const tempPath = path.slice(0);\n\n while (tempPath.length > 1) {\n tempTabsState = tempTabsState[tempPath.shift()];\n }\n\n const key = tempPath.shift();\n if (tempTabsState[key].collapsed === undefined) {\n tempTabsState[key].collapsed = true;\n } else {\n tempTabsState[key].collapsed = !tempTabsState[key].collapsed;\n }\n\n return tempTabsState;\n };\n\n const getCssClasses = () => {\n let cssClasses = ['tyk-tabs'];\n\n cssClasses.push(`tyk-tabs--${type || 'default'}`);\n\n if (className) {\n cssClasses = cssClasses.concat(className.split(' '));\n }\n\n return cssClasses.join(' ');\n };\n\n const setCurrentSelectedPath = (path, tabData) => {\n const tempPath = path.slice(0);\n let tempRendered = true;\n\n if (tabData.collapsible) {\n tempPath.push(Object.keys(tabData.tabs)[0]);\n tempRendered = false;\n }\n\n setTabs((prevTabs) => {\n let tempTabs = Object.assign({}, prevTabs);\n\n tempTabs = toggleTab(tempTabs, path);\n\n return tempTabs;\n });\n setSelectedPath(tempPath);\n setRendered(tempRendered);\n\n if (onTabChange) {\n onTabChange(tabData);\n }\n };\n\n const getTabCssClass = (tabId) => {\n const cssClasses = [];\n\n if (selectedPath && selectedPath.indexOf(tabId) > -1) {\n cssClasses.push('active');\n }\n\n return cssClasses.join(' ');\n };\n\n const genTabs = (currentTabs, path) => {\n if (!currentTabs) {\n return null;\n }\n\n return (\n
      \n {\n Object.keys(currentTabs).map((tabId, index) => {\n const tempPath = path ? path.concat([currentTabs[tabId].id]) : [currentTabs[tabId].id];\n const iconType = currentTabs[tabId].collapsed ? 'chevron-up' : 'chevron-down';\n\n if (currentTabs[tabId].show === false) {\n return null;\n }\n\n return (\n
    • \n \n { currentTabs[tabId].title }\n {\n currentTabs[tabId].collapsible\n ? \n : null\n }\n \n {\n currentTabs[tabId].collapsible\n ? (\n \n {genTabs(currentTabs[tabId].tabs, tempPath)}\n \n )\n : genTabs(currentTabs[tabId].tabs, tempPath)\n }\n
    • \n );\n })\n }\n
    \n );\n };\n\n const addTab = (tabData, path) => {\n setTabs(prevTabs => updateTabsList({ ...prevTabs }, path, tabData));\n\n if (tabData.selected) {\n setInitialPath(path);\n }\n };\n\n const updateTab = (tabData, path) => {\n setTabs((prevTabs) => {\n const tempTabs = { ...prevTabs };\n tempTabs[tabData.id] = tabData;\n return tempTabs;\n });\n\n if (tabData.selected) {\n setCurrentSelectedPath(path, tabData);\n }\n };\n\n const hideTab = (path) => {\n setTabs((prevTabs) => {\n const tempTabs = { ...prevTabs };\n tempTabs[path].show = false;\n\n return tempTabs;\n });\n };\n\n const showTab = (path) => {\n setTabs((prevTabs) => {\n const tempTabs = { ...prevTabs };\n\n tempTabs[path].show = true;\n\n return tempTabs;\n });\n };\n\n const tabExists = (path) => {\n let tempTabs = { ...tabs };\n const tempPath = path.slice(0);\n while (tempPath.length > 1) {\n tempTabs = tempTabs[tempPath.shift()];\n }\n\n const key = tempPath.shift();\n\n return !!(tempTabs && tempTabs[key]);\n };\n\n return (\n
    \n {genTabs(tabs)}\n \n {\n (typeof children === 'function')\n ? children({\n hideTab,\n showTab,\n })\n : children\n }\n \n
    \n );\n};\n\nTabs.propTypes = {\n className: PropTypes.string,\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n hideTabContent: PropTypes.bool,\n id: PropTypes.string,\n onTabChange: PropTypes.func,\n type: PropTypes.string,\n};\n\n\nTabs.Tab = Tab;\n\nexport default Tabs;\n","import React, {\n useCallback, useEffect, useRef, useState,\n} from 'react';\nimport PropTypes from 'prop-types';\n\nimport FloatingContainer from '../FloatingContainer';\nimport Icon from '../Icon';\n\nfunction Tooltip({\n render,\n className,\n children,\n position = 'auto',\n style,\n icon = false,\n closable,\n isOpened = false,\n additionalClickParents = [],\n ...props\n}) {\n const [isActive, setIsActive] = useState(false);\n const wrapperRef = useRef(null);\n const tooltipRef = useRef(null);\n const activeEvents = closable\n ? {\n onClick: () => setIsActive(true),\n }\n : {\n onMouseEnter: () => setIsActive(true),\n onMouseLeave: () => setIsActive(false),\n onFocus: () => setIsActive(true),\n onBlur: () => setIsActive(false),\n };\n\n const handleDocumentClick = useCallback((e) => {\n if ([...additionalClickParents, tooltipRef.current].some((p) => p?.contains?.(e.target))) {\n return;\n }\n setIsActive(false);\n }, [additionalClickParents]);\n\n useEffect(() => {\n document.addEventListener('click', handleDocumentClick, true);\n return () => document.removeEventListener('click', handleDocumentClick, true);\n }, [handleDocumentClick]);\n\n useEffect(() => {\n setIsActive(isOpened);\n }, [isOpened]);\n\n const classes = ['tyk-tooltip', className].filter(Boolean).join(' ');\n return (\n \n {children}\n {isActive && (\n \n
    \n {icon && (\n icon === true ? (\n \n ) : (\n icon\n )\n )}\n
    \n {render}\n
    \n {closable && (\n {\n e.stopPropagation();\n setIsActive(false);\n }}\n />\n )}\n
    \n \n )}\n
    \n );\n}\n\nTooltip.propTypes = {\n children: PropTypes.node.isRequired,\n /** custom styles to apply on hovered element */\n style: PropTypes.instanceOf(Object),\n /** describes where the tooltip should be displayed in relation\n * whith the hovered element: top, bottom, left, right\n */\n position: PropTypes.string,\n /** content of the tooltip, can be a string or a React node element */\n render: PropTypes.oneOfType([\n PropTypes.node,\n PropTypes.string,\n ]),\n /** additional tooltip classes */\n className: PropTypes.string,\n /** if `true` displays the \"question mark\" icon;\n * optionally you can pass a different icon\n */\n icon: PropTypes.oneOfType([\n PropTypes.bool,\n PropTypes.node,\n ]),\n /** if `true` the tooltip is activated on click and an \"x\" is displayed to close it;\n * if `false` the tooltip is activated on hover and it closes when no longer hovering\n */\n closable: PropTypes.bool,\n /** handles the `isActive` state of the tooltip from outside */\n isOpened: PropTypes.bool,\n /** Additional dom elements to check if the document click was inside of them.\n * Useful when you want to open the tooltip after an interaction\n * with an element not inside the tooltip root.\n */\n additionalClickParents: PropTypes.instanceOf(Array),\n};\n\nexport default Tooltip;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Tooltip from '../Tooltip';\n/**\n * TextEllipsis component helps you to hide a part of a text,\n * but displaying it when it's being hovered.\n * The entire text is displayed with the help of Tooltip component\n */\n\nfunction TextEllipsis({ text, limit, position }) {\n return (\n text.length > limit\n ? (\n \n {text.substring(0, limit)}\n ...\n \n )\n : text\n );\n}\n\nTextEllipsis.propTypes = {\n /** Text to be shrinked by TextEllipsis */\n text: PropTypes.string,\n /** Number of characters that TextEllipsis would leave visible */\n limit: PropTypes.number,\n /** tooltip position */\n position: PropTypes.string,\n};\n\nexport default TextEllipsis;\n","import React, { Component, Fragment } from 'react';\nimport PropTypes from 'prop-types';\n\nconst shouldShowPage = (currentNr, pageNr, totalNrOfPages) => {\n const basePageNr = 5;\n const minimumNrOfPages = 10;\n\n if (totalNrOfPages < minimumNrOfPages) {\n return true;\n }\n\n if (\n pageNr < basePageNr\n && currentNr < basePageNr\n ) {\n return true;\n }\n\n if (\n pageNr > totalNrOfPages - basePageNr\n && currentNr > totalNrOfPages - basePageNr\n ) {\n return true;\n }\n\n if (\n currentNr >= pageNr - 2\n && currentNr <= pageNr + 2\n ) {\n return true;\n }\n\n if ([0, 1, totalNrOfPages - 1, totalNrOfPages].indexOf(currentNr) > -1) {\n return true;\n }\n\n return false;\n};\n\nconst getPagesArr = (nrOfPages, selectedPage) => {\n let i; const\n pagesArr = [];\n\n for (i = 0; i <= nrOfPages; i += 1) {\n if (shouldShowPage(i, selectedPage, nrOfPages)) {\n if (i > pagesArr[pagesArr.length - 1]) {\n pagesArr.push('...');\n }\n pagesArr.push(i + 1);\n }\n }\n\n return pagesArr;\n};\n\nexport default class Pagination extends Component {\n static propTypes = {\n value: PropTypes.number,\n totalNrOfPages: PropTypes.number,\n onChange: PropTypes.func,\n };\n\n constructor(props) {\n super(props);\n const {\n value,\n totalNrOfPages,\n } = this.props;\n\n this.state = {\n prevProps: this.props,\n selectedPage: value || 0,\n pagesArray: getPagesArr(totalNrOfPages, value),\n };\n\n this.pageKey = 0;\n }\n\n static getDerivedStateFromProps(nextProps, prevState) {\n if (\n nextProps.value !== prevState.prevProps.value\n || nextProps.totalNrOfPages !== prevState.prevProps.totalNrOfPages\n ) {\n return {\n selectedPage: nextProps.value,\n pagesArray: getPagesArr(nextProps.totalNrOfPages, nextProps.value),\n };\n }\n\n return null;\n }\n\n getPageCssClass(pageNr) {\n const { selectedPage } = this.state;\n const cssClasses = [];\n\n if (selectedPage === pageNr) {\n cssClasses.push('active');\n }\n\n return cssClasses.join(' ');\n }\n\n getPageKey() {\n this.pageKey += 1;\n\n return this.pageKey;\n }\n\n goToPage(pageNr) {\n const { onChange, totalNrOfPages } = this.props;\n this.setState({\n selectedPage: pageNr,\n pagesArray: getPagesArr(totalNrOfPages, pageNr),\n }, () => {\n if (onChange) {\n onChange(pageNr);\n }\n });\n }\n\n render() {\n const { totalNrOfPages } = this.props;\n const { pagesArray, selectedPage } = this.state;\n\n return (\n \n {\n totalNrOfPages\n ? (\n
      \n {\n selectedPage > 0 && totalNrOfPages > 5\n ? (\n
    • \n \n
    • \n )\n : null\n }\n {\n pagesArray.map(pageNr => (\n
    • \n {\n pageNr !== '...'\n ? \n : { pageNr }\n }\n
    • \n ))\n }\n {\n selectedPage < totalNrOfPages && totalNrOfPages > 5\n ? (\n
    • \n \n
    • \n )\n : null\n }\n
    \n )\n : null\n }\n
    \n );\n }\n}\n","import { createContext } from 'react';\n\nexport const tableContext = createContext();\n","import React, { useState, useContext } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { tableContext } from '../tableContext';\nimport Icon from '../../Icon';\n\nexport const HeaderCell = ({ column }) => {\n const { sortable } = column;\n const [sortOrder, setSortOrder] = useState(sortable?.default || 'ASC');\n const { state, sendMessage } = useContext(tableContext);\n return (\n {\n sendMessage('sort', { column, sortOrder });\n setSortOrder(sortOrder === 'ASC' ? 'DESC' : 'ASC');\n } : null}\n className={state.maxHeight ? 'fixed-header' : ''}\n >\n {column.name}\n {column.sortable && (\n \n \n \n )}\n \n );\n};\n\nHeaderCell.propTypes = {\n column: PropTypes.instanceOf(Object),\n};\n","import React, { useContext, useState } from 'react';\nimport { HeaderCell } from './header-cell';\nimport { tableContext } from '../tableContext';\n\nexport const Header = () => {\n const [selectAll, setSelectAll] = useState(false);\n const { state, sendMessage } = useContext(tableContext);\n const { columns, selectable } = state;\n\n const generateHeaders = () => columns.map(column => (\n \n ));\n\n const generateSelectable = () => {\n if (!selectable) {\n return;\n }\n const Component = selectable.type;\n // eslint-disable-next-line consistent-return\n return (\n \n {selectable?.allowSelectAll ? (\n
    \n {\n setSelectAll(!selectAll);\n sendMessage('header.selectAll.click', selectAll);\n }}\n onChange={(v) => {\n sendMessage('header.selectAll.change', v);\n }}\n >\n {selectable.values?.value}\n \n
    \n ) : (\n selectable.name || 'Select'\n )}\n \n );\n };\n\n return (\n \n \n {selectable && selectable.position === 'LEFT' && generateSelectable()}\n {generateHeaders()}\n {selectable && selectable.position === 'RIGHT' && generateSelectable()}\n \n \n );\n};\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\n\n/**\n * - Checkboxes are used when a user needs to select one or more values from a series of options.\n * - They can be also be used as a binary toggle but consider radio instead.\n * - Can be used with Formik respectively (FormikCheckbox)\n */\nexport default class Checkbox extends Component {\n static propTypes = {\n /** Disable a checkbox */\n disabled: PropTypes.bool,\n /** Readonly prop behaves the same as disable on checkboxes */\n readOnly: PropTypes.bool,\n /** Align checkbox with in same line with other elements */\n inline: PropTypes.bool,\n /** Set a theme for checkbox */\n theme: PropTypes.string,\n /** Set an error state for checkbox if boolean will show just icon without message */\n error: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.bool,\n ]),\n /** Adds additional information under the checkbox element */\n note: PropTypes.string,\n input: PropTypes.instanceOf(Object),\n /** Adds a label to checkbox */\n label: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.func,\n PropTypes.string,\n ]),\n /** Set a name for checkbox */\n name: PropTypes.string,\n /** Set initial value for checkbox */\n value: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.bool,\n ]),\n /** Make checkbox checked by default */\n checked: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.bool,\n ]),\n /** Callback function executed on change of checkbox */\n onChange: PropTypes.func,\n /** CSS classes added to the wrapper of the component */\n wrapperClassName: PropTypes.string,\n };\n\n getCssClasses() {\n const {\n inline, disabled, readOnly, theme = '', wrapperClassName = '',\n } = this.props;\n\n const cssClasses = [wrapperClassName];\n\n cssClasses.push('tyk-checkbox');\n\n if (inline) {\n cssClasses.push('tyk-checkbox--inline');\n }\n\n if (theme.trim()) {\n cssClasses.push(...theme.split(' ').map(t => `tyk-checkbox--theme-${t}`));\n }\n\n if (disabled || readOnly) {\n cssClasses.push('tyk-checkbox--is-disabled');\n }\n\n return cssClasses.join(' ');\n }\n\n displayError() {\n const { error } = this.props;\n if (!error) return null;\n\n return (\n

    \n {error}\n

    \n );\n }\n\n displayNote() {\n const { note } = this.props;\n if (!note) return null;\n\n return (\n

    \n {note}\n

    \n );\n }\n\n render() {\n const {\n input, value, label, ...rest\n } = this.props;\n return (\n \n
    \n \n {this.displayNote()}\n {this.displayError()}\n
    \n \n );\n }\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nexport const Cell = ({ col, row }) => {\n if (!row.values[col.id]) {\n return ;\n }\n\n if (col.type === 'string') {\n return (\n // eslint-disable-next-line jsx-a11y/click-events-have-key-events\n \n {row.values[col.id]?.value}\n \n );\n }\n const Component = col.type;\n return (\n \n \n {row.values[col.id].children ? row.values[col.id].children : null}\n
    \n \n );\n};\n\nCell.propTypes = {\n col: PropTypes.instanceOf(Object),\n row: PropTypes.instanceOf(Object),\n index: PropTypes.number,\n};\n","import React, { useContext } from 'react';\nimport PropTypes from 'prop-types';\nimport Checkbox from '../../../form/components/Checkbox';\nimport { Cell } from './cell';\nimport { tableContext } from '../tableContext';\n\nexport const Row = ({ row, index }) => {\n const { state, sendMessage } = useContext(tableContext);\n const { columns, selectable } = state;\n\n const SelectableCheckbox = () => (\n \n sendMessage('row.selected', { index, selected: v })}\n />\n \n );\n\n return (\n \n {selectable && selectable.position === 'LEFT' && SelectableCheckbox()}\n {columns.map(col => (\n \n ))}\n {selectable && selectable.position === 'RIGHT' && SelectableCheckbox()}\n \n );\n};\n\nRow.propTypes = {\n row: PropTypes.instanceOf(Object),\n index: PropTypes.number,\n};\n","import React, { useContext } from 'react';\nimport { tableContext } from '../tableContext';\nimport { Row } from './row';\n\n\nexport const Body = () => {\n const { state } = useContext(tableContext);\n const { rows } = state;\n\n return (\n \n {\n // eslint-disable-next-line react/no-array-index-key\n rows.map((row, i) => )\n }\n \n );\n};\n","import React, { useState, useEffect, useRef } from 'react';\nimport PropTypes from 'prop-types';\nimport Message from '../Message';\nimport Pagination from '../../form/components/Pagination';\nimport Loader from '../Loader';\nimport InfiniteScroller from '../InfiniteScroller';\nimport { Header } from './js/header';\nimport { Body } from './js/body';\nimport { tableContext } from './tableContext';\n\n/**\n * This is tyk's table component used to render a data in a tabular view.\n * See the example configuration object below to understand how to hydrate the table component\n */\n\nfunction Table({\n value, onChange, noDataMessage, loading, infiniteScrolling,\n}) {\n const [state, setState] = useState(null);\n const [onChangeMsg, setOnChangeMsg] = useState('api');\n const itemsListRef = useRef(null);\n const sortRows = (col, sortOrder) => {\n setState({\n ...state,\n sort: {\n order: sortOrder,\n col,\n },\n });\n };\n\n const selectAllRows = (data) => {\n setState({\n ...state,\n rows: state.rows.map((row) => ({ ...row, selected: data })),\n });\n };\n\n const selectRow = (data) => {\n const { index, selected } = data;\n const selectedRow = state.rows[index];\n \n setState({\n ...state,\n rows: [\n ...state.rows.slice(0, index),\n { ...selectedRow, selected },\n ...state.rows.slice(index + 1),\n ],\n });\n };\n\n const setPagination = (data) => {\n setState({\n ...state,\n pagination: {\n ...state.pagination,\n current: data + 1,\n },\n });\n };\n\n const api = {\n getState: () => state,\n setState: (newState) => setState(newState),\n };\n\n const sendMessage = (message, data) => {\n setOnChangeMsg(message);\n if (message === 'sort') {\n sortRows(data.column.id, data.sortOrder);\n }\n\n if (message === 'header.selectAll.click') {\n selectAllRows(data);\n }\n\n if (message === 'header.selectAll.change') {\n selectAllRows(data);\n }\n\n if (message === 'row.selected') {\n selectRow(data);\n }\n\n if (message === 'pagination.change') {\n setPagination(data);\n }\n };\n\n useEffect(() => setState(value), [value]);\n useEffect(() => {\n if (onChange) {\n onChange(onChangeMsg, state, api);\n }\n setOnChangeMsg('api');\n }, [state]);\n\n if (!state) {\n return ;\n }\n\n if (state.rows <= 0) {\n return {noDataMessage || 'No Data Available'};\n }\n\n const getTable = () => (\n \n
    \n \n
    \n );\n\n\n return (\n \n
    \n {\n loading && \n }\n {\n infiniteScrolling && state.pagination\n ? (\n state.pagination.current}\n loadMore={(num) => sendMessage('pagination.change', num)}\n pageNumber={state.pagination.current - 1}\n initialLoad={false}\n >\n { getTable() }\n \n )\n : getTable()\n }\n
    \n {state.pagination && !infiniteScrolling && (\n
    \n sendMessage('pagination.change', num)}\n />\n
    \n )}\n
    \n );\n}\n\nTable.propTypes = {\n /** Configuration object used to render the component */\n value: PropTypes.shape({\n /** Configuration for table columns */\n columns: PropTypes.arrayOf(PropTypes.shape({\n /** Unique id of the column */\n id: PropTypes.string.isRequired,\n /** Name of the column */\n name: PropTypes.string,\n /** Type of column, String by default */\n type: PropTypes.oneOfType([\n /** Just renders cell data of type strings */\n PropTypes.string,\n /** Render cell of elements (eg. Input / Button) */\n PropTypes.element,\n /** Render a custom function/component */\n PropTypes.func,\n ]),\n sortable: PropTypes.oneOfType([\n /** Make Column sortable */\n PropTypes.bool,\n /** Configure sorting behaviour */\n PropTypes.shape({\n /** Set default sorting direction ASC / DESC */\n default: PropTypes.string,\n }),\n ]),\n })),\n /** Configuration for table rows */\n rows: PropTypes.arrayOf(PropTypes.shape({})),\n /** Configuration to make table rows selectable */\n selectable: PropTypes.shape({}),\n /** Renders pagination for table if the object is missing / empty no pagination is rendered. */\n pagination: PropTypes.shape({}),\n /** Sets maximum height for table container. */\n maxHeight: PropTypes.string,\n /** Styling for the table container. */\n styling: PropTypes.shape({\n /** It's recommended to add styles to a class and pass the class in this object */\n className: PropTypes.string,\n }),\n }).isRequired,\n /** Callback executed with message and value when there are changes on table */\n onChange: PropTypes.func,\n /** Renders a component with the given message when `config.rows` is empty */\n noDataMessage: PropTypes.string,\n /** Show placeholder loader */\n loading: PropTypes.bool,\n /** Adds infinite scroller on page and calls `onChange` with `pagination.change` message */\n infiniteScrolling: PropTypes.bool,\n};\n\nTable.defaultProps = {\n loading: false,\n infiniteScrolling: false,\n noDataMessage: 'No Data Available',\n onChange: null,\n};\n\nexport default Table;\n","import React, { PureComponent } from 'react';\nimport PropTypes from 'prop-types';\n\n/**\n * Column component.\n */\nclass Column extends PureComponent {\n static propTypes = {\n /**\n * This property describes how the column element will be aligned vertically\n * within a Row: bottom, center, top\n */\n align: PropTypes.string,\n /** Css classes that can be passed to the column element */\n className: PropTypes.string,\n /**\n * ID that can be passed to the column element\n */\n id: PropTypes.string,\n /**\n * Specifies the size of the column within a Row (values must be between 1 - 12)\n */\n size: PropTypes.string.isRequired,\n /**\n * Specifies the left gap a column can have within a Row (values must be between 1 - 12)\n */\n offset: PropTypes.string,\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.string,\n PropTypes.object,\n PropTypes.node,\n ]),\n };\n\n getCssClasses() {\n const {\n align, className, offset, size,\n } = this.props;\n const colSize = size.split(' ');\n const colOffsets = offset ? offset.split(' ') : [];\n\n let cssClasses = colSize.map(cSize => `tyk-col--${cSize}`);\n const offsets = colOffsets.map(cOffset => `tyk-col--offset-${cOffset}`);\n\n if (align) {\n cssClasses.push(`tyk-col--align-${align}`);\n }\n\n if (className) {\n cssClasses = cssClasses.concat(className.split(' '));\n }\n\n cssClasses.push('tyk-col');\n cssClasses = cssClasses.concat(offsets || []);\n\n return cssClasses.join(' ');\n }\n\n render() {\n const { children, id, ...props } = this.props;\n\n return (\n
    \n { children }\n
    \n );\n }\n}\n\nexport default Column;\n","import React, { PureComponent } from 'react';\nimport PropTypes from 'prop-types';\n\n\n/** Row component which must be always present as a wrapper for Columns */\nexport default class Row extends PureComponent {\n static propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n ]),\n /** Css classes that can be passed to the Row element */\n className: PropTypes.string,\n /** Removes all the spaces between column */\n nogutters: PropTypes.bool,\n }\n\n getCssClasses() {\n const { className, nogutters } = this.props;\n let cssClass = ['tyk-row'];\n\n if (nogutters) {\n cssClass.push('no-gutters');\n cssClass.push('tyk-row--gutterless');\n }\n\n if (className) {\n cssClass = cssClass.concat(className.split(' '));\n }\n\n return cssClass.join(' ');\n }\n\n render() {\n const {\n children,\n nogutters,\n ...rest\n } = this.props;\n\n return (\n
    \n { children }\n
    \n );\n }\n}\n","import { createContext } from 'react';\n\nexport const DropdownContext = createContext();\n","import React, { cloneElement, useCallback } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { DropdownContext } from '../dropdown-context';\nimport Icon from '../../../../components/Icon';\n\nfunction DropdownItem(props) {\n const {\n customdropdownitem,\n children,\n eventKey,\n href,\n target,\n title,\n onClick,\n } = props;\n const dropdownItemCLick = useCallback((dropdownContext, itemProps) => {\n dropdownContext.onSelectItem(eventKey, itemProps);\n\n if (onClick) onClick(eventKey);\n }, []);\n\n return (\n \n {\n (dropdownContext) => (\n dropdownItemCLick(dropdownContext, props)}\n onKeyUp={() => {}}\n >\n {\n customdropdownitem\n ? cloneElement(customdropdownitem, {})\n : (\n \n {\n eventKey\n && dropdownContext.selectedItem === eventKey\n && dropdownContext.showCheckmark\n ? \n : null\n }\n \n {title || children}\n \n \n )\n }\n \n )\n }\n \n );\n}\n\nDropdownItem.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]),\n customdropdownitem: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n ]),\n eventKey: PropTypes.string,\n href: PropTypes.string,\n target: PropTypes.string,\n onClick: PropTypes.func,\n title: PropTypes.string,\n};\n\nexport default DropdownItem;\n","import React, {\n Component, createRef,\n} from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport DropdownItem from './js/DropdownItem';\nimport Button from '../../../components/Button';\nimport { DropdownContext } from './dropdown-context';\n\nclass Dropdown extends Component {\n static isElemInRightView(el, dropdownWidth) {\n const windowWidth = window.innerWidth;\n const offset = el.getBoundingClientRect();\n const elemRight = offset.left + dropdownWidth;\n\n return elemRight <= windowWidth;\n }\n\n static isElemInBottomView(el, dropdownHeight) {\n const windowHeight = window.innerHeight;\n const offset = el.getBoundingClientRect();\n const elHeight = el.clientHeight;\n const elemBottom = offset.top + elHeight + dropdownHeight;\n\n return elemBottom <= windowHeight;\n }\n\n constructor(props) {\n super(props);\n\n const {\n selectedItem,\n open,\n } = this.props;\n\n this.state = {\n opened: open,\n selectedItem: selectedItem || null,\n };\n\n this.dropdownRef = createRef();\n this.dropdownListRef = createRef();\n this.dropdownButtonRef = createRef();\n this.onSelectItem = this.onSelectItem.bind(this);\n this.toggleDropdown = this.toggleDropdown.bind(this);\n this.handleClickOutside = this.handleClickOutside.bind(this);\n }\n\n componentDidMount() {\n document.addEventListener('mousedown', this.handleClickOutside);\n\n if (this.dropdownListRef.current) {\n this.getStyles();\n }\n }\n\n componentDidUpdate(prevProps) {\n const {\n open,\n } = this.props;\n const {\n opened,\n } = this.state;\n\n if (this.dropdownListRef.current) {\n this.getStyles();\n }\n\n if (\n !prevProps.open\n && open === true\n && !opened\n ) {\n this.toggleDropdown();\n }\n\n if (\n prevProps.open\n && open === false\n && opened\n ) {\n this.closeDropdown();\n }\n }\n\n componentWillUnmount() {\n document.removeEventListener('mousedown', this.handleClickOutside);\n }\n\n handleClickOutside(event) {\n if (\n this.dropdownListRef.current && !this.dropdownListRef.current.contains(event.target)\n && this.dropdownRef.current && !this.dropdownRef.current.contains(event.target)\n ) {\n this.closeDropdown();\n }\n }\n\n onSelectItem(itemId, itemProps) {\n const { closeOnSelect, onSelect } = this.props;\n const changes = {\n selectedItem: itemId,\n selectedItemProps: itemProps,\n };\n\n if (closeOnSelect) {\n changes.opened = false;\n }\n\n this.setState(changes);\n\n if (onSelect && typeof onSelect === 'function') {\n onSelect(itemId);\n }\n }\n\n getStyles() {\n const {\n display,\n position,\n offset,\n } = this.props;\n\n const dropdownEl = this.dropdownListRef.current;\n\n if (offset) {\n dropdownEl.style.top = `${offset.top}`;\n dropdownEl.style.left = `${offset.left}`;\n return;\n }\n\n const scrollTop = Math.max(\n document.documentElement.scrollTop,\n document.body.scrollTop,\n window.scrollY,\n );\n const el = this.dropdownRef.current;\n const elHeight = el.clientHeight;\n const dropdownHeight = dropdownEl ? dropdownEl.clientHeight : 0;\n const dropdownWidth = dropdownEl ? dropdownEl.clientWidth : 0;\n const offsetPosition = el.getBoundingClientRect();\n const { left, top } = offsetPosition;\n let customTop = 0;\n let customLeft = left;\n\n // calculate top position, depending on the element position on the page\n if (Dropdown.isElemInBottomView(el, dropdownHeight)) {\n customTop = top + scrollTop + elHeight;\n } else {\n customTop = top + scrollTop - dropdownHeight - 5;\n }\n\n if (Dropdown.isElemInRightView(el, dropdownWidth)) {\n customLeft = left;\n } else {\n customLeft = left + el.clientWidth - dropdownWidth;\n }\n\n if (position !== 'relative') {\n dropdownEl.style.top = `${customTop}px`;\n if (display !== 'block') {\n dropdownEl.style.left = `${customLeft}px`;\n }\n }\n if (display !== 'block') {\n dropdownEl.style.minWidth = `${this.dropdownButtonRef.current.clientWidth}px`;\n }\n }\n\n getWrapperCssClasses() {\n const {\n btnGroup,\n btnGroupSize,\n className,\n btnTheme,\n wrapperClassName = '',\n } = this.props;\n let cssClasses = [wrapperClassName, 'tyk-dropdown'];\n\n cssClasses.push(`theme-${btnTheme || 'default'}`);\n\n if (className) {\n cssClasses = cssClasses.concat(className.split(' '));\n }\n\n if (btnGroup) {\n cssClasses.push('tyk-button-group');\n cssClasses.push(btnGroupSize ? `tyk-button-group--${btnGroupSize}` : 'tyk-button-group--md');\n }\n\n return cssClasses.join(' ');\n }\n\n getCssClasses() {\n const {\n opened,\n } = this.state;\n const {\n hasCustomContent,\n display,\n listclassnames,\n position,\n maxHeight,\n } = this.props;\n let cssClasses = ['tyk-dropdown-menu', 'tyk-dropdown'];\n\n if (maxHeight) {\n cssClasses.push('tyk-dropdown--scrollable');\n }\n\n if (opened) {\n cssClasses.push('opened');\n }\n\n if (listclassnames) {\n cssClasses = cssClasses.concat(listclassnames.split(' '));\n }\n\n if (display) {\n cssClasses.push('tyk-dropdown--block');\n }\n\n if (hasCustomContent) {\n cssClasses.push('tyk-dropdown--custom');\n }\n\n if (position === 'relative') {\n cssClasses.push('tyk-dropdown--relative');\n }\n\n return cssClasses.join(' ');\n }\n\n getBtnTitle() {\n const { btnTitle, stopButtonTextChange } = this.props;\n const { selectedItemProps } = this.state;\n\n if (!stopButtonTextChange && selectedItemProps && selectedItemProps.title) {\n return selectedItemProps.title;\n }\n\n return btnTitle;\n }\n\n closeDropdown() {\n const { onClose } = this.props;\n\n this.setState({\n opened: false,\n }, () => {\n if (onClose) {\n onClose();\n }\n });\n }\n\n toggleDropdown() {\n const {\n opened,\n } = this.state;\n if (opened) {\n this.closeDropdown();\n\n return;\n }\n\n this.setState({\n opened: true,\n });\n }\n\n render() {\n const {\n appendTo,\n btnClassName,\n btnSize,\n customBtnTitle,\n hasCustomContent,\n btnTheme,\n children,\n label,\n showDropdownIcon,\n showTriggerButton,\n showCheckmark,\n disabled = false,\n maxHeight,\n } = this.props;\n const {\n selectedItem,\n opened,\n } = this.state;\n const DropdownWrapperTag = hasCustomContent ? 'div' : 'ul';\n return (\n \n {\n label\n ? (\n \n )\n : null\n }\n {\n showTriggerButton\n ? (\n \n { customBtnTitle || this.getBtnTitle() }\n \n )\n : null\n }\n {\n opened\n ? ReactDOM.createPortal(\n \n {\n opened\n ? (\n \n {\n (typeof children === 'function')\n ? children({\n closeDropdown: this.closeDropdown.bind(this),\n })\n : children\n }\n \n )\n : null\n }\n ,\n document.querySelector(appendTo || 'body'),\n )\n : null\n }\n \n );\n }\n}\n\nDropdown.propTypes = {\n appendTo: PropTypes.string,\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n PropTypes.func,\n ]),\n closeOnSelect: PropTypes.bool,\n btnClassName: PropTypes.string,\n btnSize: PropTypes.string,\n btnGroupSize: PropTypes.string,\n btnTheme: PropTypes.string,\n btnTitle: PropTypes.oneOfType([\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n customBtnTitle: PropTypes.oneOfType([\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n btnGroup: PropTypes.bool,\n className: PropTypes.string,\n display: PropTypes.string,\n disabled: PropTypes.bool,\n hasCustomContent: PropTypes.bool,\n label: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.func,\n PropTypes.string,\n ]),\n listclassnames: PropTypes.string,\n onClose: PropTypes.func,\n onSelect: PropTypes.func,\n open: PropTypes.bool,\n offset: PropTypes.instanceOf(Object),\n position: PropTypes.string,\n selectedItem: PropTypes.string,\n showDropdownIcon: PropTypes.bool,\n stopButtonTextChange: PropTypes.bool,\n showTriggerButton: PropTypes.bool,\n showCheckmark: PropTypes.bool,\n maxHeight: PropTypes.string,\n wrapperClassName: PropTypes.string,\n};\n\nDropdown.defaultProps = {\n closeOnSelect: false,\n showDropdownIcon: true,\n showTriggerButton: true,\n showCheckmark: true,\n open: false,\n};\n\nDropdown.Item = DropdownItem;\n\nexport default Dropdown;\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"react-ace\");","import React, { useCallback } from 'react';\nimport PropTypes from 'prop-types';\n\nimport ace from 'ace-builds/src-noconflict/ace';\nimport AceEditor from 'react-ace';\nimport 'ace-builds/src-noconflict/mode-javascript';\nimport 'ace-builds/src-noconflict/mode-golang';\nimport 'ace-builds/src-noconflict/mode-python';\nimport 'ace-builds/src-noconflict/mode-css';\nimport 'ace-builds/src-noconflict/mode-json';\nimport 'ace-builds/src-noconflict/mode-xml';\nimport 'ace-builds/src-noconflict/mode-jsx';\nimport 'ace-builds/src-noconflict/ext-searchbox';\nimport 'ace-builds/src-noconflict/ext-beautify';\nimport 'ace-builds/src-noconflict/theme-github';\nimport jsonWorker from 'ace-builds/src-noconflict/worker-json';\n\nace.config.setModuleUrl('ace/mode/json_worker', jsonWorker);\n\nfunction CodeEditor(props) {\n const {\n disabled,\n readOnly,\n disableValidation,\n id,\n error,\n label,\n labelwidth,\n note,\n onBlur,\n onChange,\n theme,\n value,\n setOptions,\n wrapperClassName,\n } = props;\n const classes = [\n 'tyk-form-group',\n wrapperClassName,\n ...(theme ? theme.split(' ').map((t) => `tyk-form-group--${t}`) : []),\n labelwidth && 'tyk-form-group--label-has-width',\n error && 'has-error',\n ].filter(Boolean).join(' ');\n\n const finalSetOptions = {\n ...setOptions,\n ...disableValidation && { useWorker: false },\n };\n\n const getCodeEditorError = useCallback(() => (\n error && error !== 'true' && error !== 'false'\n ? (\n

    \n {error}\n

    \n )\n : null\n ), [error]);\n\n const getLabelStyles = useCallback(() => {\n if (labelwidth) return { flexBasis: labelwidth };\n return {};\n }, [labelwidth]);\n\n const getNonLabelWidth = useCallback(() => {\n if (labelwidth) return { flexBasis: `calc(100% - ${labelwidth} - 20px)` };\n return {};\n }, [labelwidth]);\n\n const handleOnChange = useCallback((newValue) => {\n if (onChange) onChange(newValue);\n }, [onChange]);\n\n const handleOnBlur = useCallback(() => {\n if (onBlur) onBlur(value);\n }, [onBlur, value]);\n\n return (\n
    \n {\n label\n ? \n : null\n }\n
    \n {\n // eslint-disable-next-line\n editorInstance.container.style.resize = 'both';\n // mouseup = css resize end\n document.addEventListener('mouseup', () => (\n editorInstance.resize()\n ));\n }}\n setOptions={finalSetOptions}\n />\n {\n note\n ?

    { note }

    \n : null\n }\n { getCodeEditorError() }\n
    \n
    \n );\n}\n\nCodeEditor.propTypes = {\n disabled: PropTypes.bool,\n readOnly: PropTypes.bool,\n disableValidation: PropTypes.bool,\n id: PropTypes.string,\n error: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.bool,\n ]),\n label: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.func,\n PropTypes.string,\n ]),\n labelwidth: PropTypes.string,\n mode: PropTypes.string,\n name: PropTypes.string,\n note: PropTypes.string,\n onBlur: PropTypes.func,\n onChange: PropTypes.func,\n theme: PropTypes.string,\n value: PropTypes.string,\n setOptions: PropTypes.instanceOf(Object),\n wrapperClassName: PropTypes.string,\n};\n\nexport default CodeEditor;\n","import React, { Component, Fragment, createRef } from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\n\nimport Icon from '../../../components/Icon';\nimport Button from '../../../components/Button';\n\nconst getStateSelectedValues = (multiple, tags, value) => {\n if (!value) {\n return (multiple || tags) ? [] : null;\n }\n\n return value;\n};\n\nexport default class Combobox extends Component {\n static closeList() {\n return {\n cursor: -1,\n opened: false,\n };\n }\n\n static openList() {\n return {\n opened: true,\n };\n }\n\n static filterByName(itemValue, inputValue) {\n return itemValue.name.toLowerCase().indexOf(inputValue) > -1;\n }\n\n static propTypes = {\n allowCustomValues: PropTypes.bool,\n CustomListComponent: PropTypes.elementType,\n searchItem: PropTypes.func,\n disabled: PropTypes.bool,\n error: PropTypes.string,\n id: PropTypes.string,\n label: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.func,\n PropTypes.string,\n ]),\n labelwidth: PropTypes.string,\n multiple: PropTypes.bool,\n max: PropTypes.number,\n note: PropTypes.oneOfType([\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n onChange: PropTypes.func,\n placeholder: PropTypes.string,\n tags: PropTypes.bool,\n theme: PropTypes.string,\n value: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.instanceOf(Object),\n PropTypes.instanceOf(Array),\n ]),\n values: PropTypes.instanceOf(Array),\n };\n\n static defaultProps = {\n allowCustomValues: true,\n };\n\n constructor(props) {\n super(props);\n const {\n multiple,\n tags,\n value,\n } = props;\n\n this.state = {\n cursor: -1,\n opened: false,\n width: 50,\n initialValue: value,\n stateSelectedValues: getStateSelectedValues(multiple, tags, value),\n searchText: '',\n tags,\n };\n\n this.comboboxRef = createRef();\n this.valuesListRef = createRef();\n this.inputRef = createRef();\n this.textRef = createRef();\n\n this.focusInput = this.focusInput.bind(this);\n this.onKeyUp = this.onKeyUp.bind(this);\n Combobox.openList = Combobox.openList.bind(this);\n this.handleClickOutside = this.handleClickOutside.bind(this);\n this.handleItemsNavigation = this.handleItemsNavigation.bind(this);\n this.handleComboboxDropdownClick = this.handleComboboxDropdownClick.bind(this);\n this.handleListItemClick = this.handleListItemClick.bind(this);\n this.handlePillRemoveClick = this.handlePillRemoveClick.bind(this);\n this.manageSelectedTags = this.manageSelectedTags.bind(this);\n }\n\n componentDidMount() {\n const { tags } = this.props;\n\n if (tags) {\n this.setInputWidth();\n }\n\n this.bindEvents();\n }\n\n componentWillUnmount() {\n this.unBindEvents();\n }\n\n static getDerivedStateFromProps(nextProps, prevState) {\n if (\n JSON.stringify(nextProps.value) !== JSON.stringify(prevState.initialValue)\n || nextProps.tags !== prevState.tags\n ) {\n return {\n initialValue: nextProps.value,\n stateSelectedValues: getStateSelectedValues(\n nextProps.multiple,\n nextProps.tags,\n nextProps.value,\n ),\n tags: nextProps.tags,\n };\n }\n\n return null;\n }\n\n onKeyUp(e) {\n const { tags, allowCustomValues } = this.props;\n const { cursor, opened } = this.state;\n const filteredValues = this.filterValues();\n let tempState = Object.assign({}, this.getSearchText());\n\n if (tags && e.key !== 'Escape') {\n tempState = Object.assign({}, tempState, this.setInputWidth());\n }\n\n if (e.key === 'Enter') {\n const methodName = (tags) ? 'manageSelectedTags' : 'manageSelectedValues';\n tempState = Object.assign({}, tempState, this[methodName](cursor));\n }\n\n if (allowCustomValues && !e.key === ' ' && tags) {\n tempState = Object.assign({}, tempState, this.manageSelectedTags());\n }\n\n if (\n !opened\n && this.inputRef.current.value\n && filteredValues\n && filteredValues.length\n && e.key !== 'Escape'\n ) {\n tempState = Object.assign({}, tempState, Combobox.openList());\n }\n\n if (e.key === 'Escape' && opened) {\n tempState = Object.assign({}, tempState, Combobox.closeList());\n }\n\n if (opened && filteredValues && !filteredValues.length) {\n tempState = Object.assign({}, tempState, Combobox.closeList());\n }\n\n this.setState(previousState => Object.assign({}, previousState, tempState));\n }\n\n getLabelStyles() {\n const { labelwidth } = this.props;\n const styles = {};\n\n if (labelwidth) {\n styles.flexBasis = labelwidth;\n }\n\n return styles;\n }\n\n getNonLabelWidth() {\n const { labelwidth } = this.props;\n const styles = {};\n\n if (labelwidth) {\n styles.flexBasis = `calc(100% - ${labelwidth} - 20px)`;\n }\n\n return styles;\n }\n\n setInputWidth() {\n return {\n width: 50 + this.textRef.current.offsetWidth,\n };\n }\n\n getSelectedIndex(value) {\n const { stateSelectedValues } = this.state;\n let position = -1;\n\n if (Array.isArray(stateSelectedValues)) {\n stateSelectedValues.forEach((item, index) => {\n if (item.id === value.id) {\n position = index;\n }\n });\n } else if (stateSelectedValues) {\n if (stateSelectedValues.id === value.id) {\n position = 0;\n }\n }\n\n return position;\n }\n\n getSearchText() {\n return {\n searchText: this.inputRef.current.value,\n };\n }\n\n getListItemCssClasses(value, index) {\n const cssClasses = [];\n const {\n cursor,\n } = this.state;\n\n if (cursor === index) {\n cssClasses.push('active');\n }\n\n if (value.disabled) {\n cssClasses.push('disabled');\n }\n\n return cssClasses.join(' ');\n }\n\n getComboboxListCssClass() {\n const { opened } = this.state;\n const { tags, theme } = this.props;\n const themes = theme ? theme.split(' ') : [];\n\n const cssClasses = ['tyk-combobox__list'];\n\n if (opened) {\n cssClasses.push('tyk-combobox__list--opened');\n }\n\n if (tags) {\n cssClasses.push('tyk-combobox__list--has-tags');\n }\n\n if (themes.length) {\n themes.forEach((iTheme) => {\n cssClasses.push(`tyk-form-group--${iTheme}`);\n });\n }\n\n return cssClasses.join(' ');\n }\n\n getCssClasses() {\n const {\n error, disabled, theme, labelwidth,\n } = this.props;\n const cssClasses = ['tyk-form-group', 'tyk-combobox'];\n const themes = theme ? theme.split(' ') : [];\n\n if (error) {\n cssClasses.push('has-error');\n }\n\n if (labelwidth) {\n cssClasses.push('tyk-form-group--label-has-width');\n }\n\n if (themes.length) {\n themes.forEach((iTheme) => {\n cssClasses.push(`tyk-form-group--${iTheme}`);\n });\n }\n\n if (disabled) {\n cssClasses.push('disabled');\n }\n\n return cssClasses.join(' ');\n }\n\n getInputError() {\n const { error } = this.props;\n\n return (error && error !== 'true' && error !== 'false')\n ? (\n \n { error }\n

    \n )\n : null;\n }\n\n getStyles() {\n const { scrollTop } = document.documentElement;\n const el = this.comboboxRef.current;\n const elHeight = el.offsetHeight;\n const elWidth = el.offsetWidth;\n\n const offset = el.getBoundingClientRect();\n const { left } = offset;\n let top = 0;\n\n top = offset.top + scrollTop + elHeight;\n\n return {\n top: `${top - 1}px`,\n left: `${left}px`,\n width: `${elWidth}px`,\n };\n }\n\n getComboboxDisplayData() {\n const { stateSelectedValues } = this.state;\n const { multiple, placeholder, values } = this.props;\n\n if (!stateSelectedValues) {\n return placeholder;\n }\n\n if (stateSelectedValues && Array.isArray(stateSelectedValues) && !stateSelectedValues.length) {\n return placeholder;\n }\n\n if (stateSelectedValues && !Array.isArray(stateSelectedValues) && !stateSelectedValues.id) {\n return placeholder;\n }\n\n if (Array.isArray(stateSelectedValues) && multiple) {\n return stateSelectedValues.reduce((prevValue, value, index) => prevValue + value.name + ((index !== stateSelectedValues.length - 1) ? ', ' : ''), '');\n }\n\n if (\n values\n && values.length\n && !Array.isArray(stateSelectedValues) && !stateSelectedValues.name\n ) {\n return values.filter(value => value.id === stateSelectedValues.id)[0].name;\n }\n\n return stateSelectedValues.name;\n }\n\n manageSelectedTags(index) {\n const { max, allowCustomValues } = this.props;\n const { stateSelectedValues } = this.state;\n const filteredValues = this.filterValues();\n const value = { id: this.inputRef.current.value, name: this.inputRef.current.value };\n\n if (allowCustomValues === false && index === -1) {\n return null;\n }\n\n const tempValue = filteredValues[index] || value;\n const selectedIndex = this.getSelectedIndex(tempValue);\n let selectedValues = {};\n\n this.inputRef.current.value = '';\n\n if (selectedIndex > -1 && this.isInInitialValues(tempValue)) {\n selectedValues = this.removeSelectedValue(selectedIndex);\n } else if (selectedIndex === -1) {\n if (max && stateSelectedValues.length >= max) {\n return selectedValues;\n }\n selectedValues = this.addSelectedValue(tempValue);\n }\n\n return selectedValues;\n }\n\n manageSelectedValues(index) {\n const { stateSelectedValues } = this.state;\n const {\n multiple, onChange, max,\n } = this.props;\n const filteredValues = this.filterValues();\n const tempSelectedValues = filteredValues[index];\n let selectedValues;\n const selectedIndex = this.getSelectedIndex(tempSelectedValues);\n\n if (tempSelectedValues && multiple) {\n if (selectedIndex > -1) {\n selectedValues = this.removeSelectedValue(selectedIndex);\n } else {\n if (max && stateSelectedValues.length >= max) {\n return selectedValues;\n }\n selectedValues = this.addSelectedValue(filteredValues[index]);\n }\n\n // tempSelectedValues = stateSelectedValues;\n } else {\n selectedValues = {\n stateSelectedValues: (selectedIndex === -1) ? tempSelectedValues : { id: null },\n };\n\n if (onChange && typeof onChange === 'function') {\n onChange((selectedIndex === -1) ? tempSelectedValues : null);\n }\n }\n\n return selectedValues;\n }\n\n removeSelectedValue(index) {\n const { stateSelectedValues } = this.state;\n const { onChange } = this.props;\n const tempStateSelectedValues = JSON.parse(JSON.stringify(stateSelectedValues));\n\n tempStateSelectedValues.splice(index, 1);\n\n if (onChange && typeof onChange === 'function') {\n onChange(tempStateSelectedValues.length ? tempStateSelectedValues : null);\n }\n\n return {\n stateSelectedValues: tempStateSelectedValues,\n searchText: '',\n };\n }\n\n addSelectedValue(value) {\n const { stateSelectedValues } = this.state;\n const { onChange } = this.props;\n const tempStateSelectedValues = JSON.parse(JSON.stringify(stateSelectedValues));\n\n tempStateSelectedValues.push(value);\n\n if (onChange && typeof onChange === 'function') {\n onChange(tempStateSelectedValues.length ? tempStateSelectedValues : null);\n }\n\n return {\n stateSelectedValues: tempStateSelectedValues,\n searchText: '',\n };\n }\n\n isInInitialValues(value) {\n const { values } = this.props;\n let ok = false;\n\n values.forEach((item) => {\n if (value.id === item.id) {\n ok = true;\n }\n });\n\n return ok;\n }\n\n filterValues() {\n const { values, searchItem } = this.props;\n\n if (!this.inputRef.current) {\n return values;\n }\n\n const arr = values\n .filter(\n value => (searchItem\n ? searchItem(value, this.inputRef.current.value.toLowerCase())\n : Combobox.filterByName(value, this.inputRef.current.value.toLowerCase())),\n );\n\n return arr;\n }\n\n bindEvents() {\n document.addEventListener('mousedown', this.handleClickOutside);\n }\n\n unBindEvents() {\n document.removeEventListener('mousedown', this.handleClickOutside);\n }\n\n handleItemsNavigation(e) {\n const { tags } = this.props;\n if (['ArrowDown', 'ArrowUp'].indexOf(e.key) === -1) {\n return;\n }\n\n const { cursor } = this.state;\n const filteredValues = this.filterValues();\n let cursorNext;\n\n e.preventDefault();\n\n if (e.key === 'ArrowDown') {\n if (cursor === -1 || cursor === filteredValues.length - 1) {\n cursorNext = 0;\n } else if (cursor < filteredValues.length - 1) {\n cursorNext = cursor + 1;\n }\n }\n\n if (e.key === 'ArrowUp') {\n if (cursor > 0) {\n cursorNext = cursor - 1;\n } else {\n cursorNext = filteredValues.length - 1;\n }\n }\n\n if (this.valuesListRef.current && cursorNext > 4) {\n const scrollTop = (cursorNext - 4) * 38;\n\n this.valuesListRef.current.scrollTop = (!tags) ? 60 + scrollTop : scrollTop;\n } else if (this.valuesListRef.current) {\n this.valuesListRef.current.scrollTop = 0;\n }\n\n this.setState(previousState => ({\n ...previousState,\n opened: true,\n cursor: cursorNext,\n }));\n }\n\n handleListItemClick(index) {\n // eslint-disable-next-line react/destructuring-assignment\n const clickedValue = this.props.values[index];\n if (clickedValue.disabled) return;\n\n const { multiple, tags } = this.props;\n\n const methodName = (tags) ? 'manageSelectedTags' : 'manageSelectedValues';\n const tempState = Object.assign({}, this.state, this[methodName](index));\n\n this.setState((previousState) => {\n if (!multiple && !tags) {\n tempState.opened = false;\n }\n\n return Object.assign({}, previousState, tempState);\n });\n }\n\n handlePillRemoveClick(index) {\n const { disabled } = this.props;\n\n if (disabled) {\n return;\n }\n\n const tempState = this.removeSelectedValue(index);\n\n this.setState(previousState => Object.assign({}, previousState, tempState));\n }\n\n handleClickOutside(event) {\n if (\n this.valuesListRef.current && !this.valuesListRef.current.contains(event.target)\n && this.comboboxRef.current && !this.comboboxRef.current.contains(event.target)\n ) {\n this.setState(previousState => Object.assign({}, previousState, Combobox.closeList()));\n }\n }\n\n handleComboboxDropdownClick() {\n const { disabled } = this.props;\n\n if (disabled) {\n return;\n }\n\n this.setState(previousState => Object.assign({}, previousState, Combobox.openList()));\n }\n\n reset() {\n const { multiple, tags, value } = this.props;\n\n this.setState({\n stateSelectedValues: getStateSelectedValues(multiple, tags, value),\n });\n }\n\n focusInput() {\n if (this.inputRef.current) {\n this.inputRef.current.focus();\n }\n }\n\n render() {\n const {\n CustomListComponent,\n disabled,\n id,\n label,\n note,\n tags,\n max,\n placeholder,\n } = this.props;\n const {\n width, opened, searchText, stateSelectedValues,\n } = this.state;\n\n const filteredValues = this.filterValues();\n\n return (\n \n
    \n {\n label\n ? \n : null\n }\n \n {}}\n ref={this.comboboxRef}\n >\n {\n tags\n ? (\n \n {\n (stateSelectedValues || []).map((value, index) => (\n
  • \n \n { value.name }\n
  • \n ))\n }\n \n {(max === undefined || stateSelectedValues?.length < max) && (\n <>\n {\n if (e.key === 'Enter') {\n e.preventDefault();\n }\n }}\n onKeyUp={this.onKeyUp}\n onKeyDown={this.handleItemsNavigation}\n placeholder={(!stateSelectedValues || !stateSelectedValues.length) ? placeholder : ''}\n ref={this.inputRef}\n style={{\n width: (!stateSelectedValues || !stateSelectedValues.length) ? '100%' : `${width}px`,\n }}\n />\n \n { searchText }\n \n \n )}\n {\n filteredValues.length\n ? (\n \n )\n : null\n }\n \n
    \n )\n : (\n {}}\n >\n { this.getComboboxDisplayData() }\n \n \n )\n }\n \n {\n note\n ?

    { note }

    \n : null\n }\n { this.getInputError() }\n
    \n \n {\n // eslint-disable-next-line no-nested-ternary\n !CustomListComponent\n ? opened && filteredValues.length\n ? ReactDOM.createPortal(\n \n {\n !tags\n ? (\n
  • \n \n
  • \n )\n : null\n }\n {\n filteredValues\n .map((value, index) => (\n {}}\n key={value.id}\n >\n {\n (this.getSelectedIndex(value) > -1)\n ? \n : null\n }\n \n {' '}\n { value.name }\n \n \n ))\n }\n ,\n document.querySelector('body'),\n )\n : null\n : (\n \n )\n }\n
    \n );\n }\n}\n","import React, { useState, useRef, useEffect } from 'react';\nimport Icon from '../../../../components/Icon';\nimport Pill from '../../../../components/Pill';\n\nfunction Value(props) {\n const {\n value,\n max,\n tags,\n tagSeparators,\n addTagOnBlur,\n placeholder,\n disabled,\n renderValue,\n valueOverflow,\n focus,\n onMessage: sendMessage,\n readOnly,\n } = props;\n const INPUT_MIN_WIDTH = 60;\n const inputRef = useRef(null);\n const dummyElementRef = useRef(null);\n const [inputValue, setInputValue] = useState('');\n const [inputWidth, setInputWidth] = useState(`${INPUT_MIN_WIDTH + 10}px`);\n\n function entryFieldOnChange(val) {\n if (tagSeparators.some(ts => val.slice(-1) === ts)) return;\n const dummy = dummyElementRef.current;\n dummy.innerHTML = val;\n setInputWidth(`${Math.max(dummy.clientWidth, INPUT_MIN_WIDTH) + 10}px`);\n setInputValue(val);\n sendMessage('tag.input.change', val);\n }\n\n function entryFieldOnKeyDown(key, val) {\n if (!tags) return;\n if (val === '' && key === 'Backspace' && value.length) {\n sendMessage('tag.remove', value[value.length - 1].id);\n return;\n }\n if (key === 'Enter') {\n sendMessage('tag.input.enter', val);\n entryFieldOnChange('');\n return;\n }\n if (key === 'ArrowUp') {\n sendMessage('tag.input.arrowUp');\n return;\n }\n if (key === 'ArrowDown') {\n sendMessage('tag.input.arrowDown');\n return;\n }\n if (key === 'Escape') {\n sendMessage('tag.input.escape');\n return;\n }\n if (tagSeparators.includes(key)) {\n sendMessage('tag.add', val);\n entryFieldOnChange('');\n }\n }\n\n function triggerAction() {\n sendMessage('text-value.click');\n }\n\n function textValue(val, isPlaceholder = false) {\n if (readOnly) return val || '-';\n\n const classes = [\n 'tyk-combobox2__text-value',\n `overflow-${valueOverflow}`,\n isPlaceholder && 'is-placeholder',\n ].filter(Boolean).join(' ');\n return (\n \n {val}\n \n );\n }\n\n function renderCustomValue(v) {\n const config = {\n tags,\n tagSeparators,\n placeholder,\n disabled,\n renderValue,\n sendMessage,\n };\n return renderValue(v, config);\n }\n\n function renderTag(v) {\n if (renderValue) return renderCustomValue(v);\n\n return (\n \n {\n e.stopPropagation();\n sendMessage('tag.remove', v.id);\n }}\n >\n \n \n { v.name }\n \n );\n }\n\n function getTags() {\n return (\n <>\n {value.map(renderTag)}\n {value.length < max && (\n <>\n entryFieldOnChange(e.target.value)}\n onKeyDown={(e) => {\n if (e.key === 'Enter') e.preventDefault();\n entryFieldOnKeyDown(e.key, e.target.value);\n }}\n onFocus={() => sendMessage('tag.input.focus')}\n onBlur={(e) => {\n sendMessage('tag.input.blur', e.target.value);\n if (addTagOnBlur) entryFieldOnChange('');\n }}\n />\n \n \n )}\n \n );\n }\n\n useEffect(() => {\n if (focus && inputRef.current) inputRef.current.focus();\n }, [focus]);\n\n if (readOnly) {\n return
    {textValue(value.map(v => v.name).join(', '))}
    ;\n }\n\n if (tags) return getTags();\n if (renderValue) {\n return value.length === 0 ? textValue(placeholder, true) : value.map(renderCustomValue);\n }\n return value.length === 0\n ? textValue(placeholder, true)\n : textValue(value.map(v => v.name).join(', '));\n}\n\nexport default Value;\n","import React, { useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport Icon from '../../../../components/Icon';\n\nfunction List(props) {\n const {\n listRef,\n tags,\n values,\n searchValue,\n activeItem,\n onMessage: sendMessage,\n renderListItem,\n selectAll,\n showSearch,\n } = props;\n\n useEffect(() => {\n if (!listRef.current) return;\n const activeElement = listRef.current.querySelector('.active');\n if (activeElement) activeElement.scrollIntoView({ block: 'end' });\n }, [activeItem]);\n\n function renderItem(item) {\n if (renderListItem) {\n return renderListItem(item, {\n tags, searchValue, sendMessage, activeItem,\n });\n }\n\n return (\n !item.disabled && sendMessage('value.select', { item })}\n onKeyPress={() => {}}\n >\n {item.selected && }\n {item.name}\n \n );\n }\n\n function renderSelectAllOption() {\n const isAllSelected = values.every(v => v.selected);\n const isNoneSelected = values.every(v => !v.selected);\n const label = selectAll?.label ?? 'Select All';\n const mode = selectAll?.mode ?? 'select';\n const show = selectAll?.show ?? 'always';\n const render = selectAll?.render;\n\n const shouldRenderOption = show === 'always' || (mode === 'select' ? !isAllSelected : !isNoneSelected);\n if (!shouldRenderOption) return null;\n\n if (render) {\n return render({\n label,\n mode,\n show,\n isAllSelected,\n isNoneSelected,\n }, sendMessage);\n }\n return (\n sendMessage('value.select-all', mode === 'select' ? !isAllSelected : isNoneSelected)}\n onKeyDown={() => {}}\n >\n {(mode === 'select' ? isAllSelected : isNoneSelected) && }\n {label}\n \n );\n }\n\n return (\n <>\n {!tags && showSearch && (\n
    \n sendMessage('search.change', e.target.value)}\n onKeyDown={(e) => {\n if (e.key === 'Escape') sendMessage('search.escape');\n if (e.key === 'ArrowUp') sendMessage('search.arrowUp');\n if (e.key === 'ArrowDown') sendMessage('search.arrowDown');\n if (e.key === 'Enter') sendMessage('search.enter');\n }}\n />\n
    \n )}\n {values.length > 0 && (\n
      \n {Boolean(selectAll) && (\n renderSelectAllOption()\n )}\n {values.map(renderItem)}\n
    \n )}\n \n );\n}\n\nList.propTypes = {\n listRef: PropTypes.instanceOf(Object),\n tags: PropTypes.bool,\n values: PropTypes.instanceOf(Array),\n searchValue: PropTypes.string,\n activeItem: PropTypes.instanceOf(Object),\n onMessage: PropTypes.func,\n renderListItem: PropTypes.func,\n selectAll: PropTypes.oneOfType([\n PropTypes.bool,\n PropTypes.shape({\n label: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.func,\n PropTypes.string,\n ]),\n mode: PropTypes.oneOf(['select', 'unselect']),\n show: PropTypes.oneOf(['always', 'notSameState']),\n render: PropTypes.func,\n }),\n ]),\n showSearch: PropTypes.bool,\n};\n\nexport default List;\n","import React, { useState, useRef, useEffect } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Icon from '../../../components/Icon';\nimport FloatingContainer from '../../../components/FloatingContainer';\n\nimport Value from './js/Value';\nimport List from './js/List';\n\nfunction normalizeValue(value, values) {\n let v = value;\n if (typeof value === 'string') v = { id: value, name: value };\n else if (!value.hasOwnProperty('name')) v = { ...value, name: value.id }; // eslint-disable-line no-prototype-builtins\n if (!values) return v;\n const existingVal = values.find((ev) => ev.id === v.id);\n return existingVal ? { ...v, ...existingVal } : v;\n}\n\nfunction getValueFromProp(value, values) {\n if (!value) return [];\n if (Array.isArray(value)) return value.map((v) => normalizeValue(v, values));\n return [normalizeValue(value, values)];\n}\n\n/**\n * Dropdown-like component that can display selected values as regular text,\n * tags, or in a custom way.\n * You can select values from a list or type in new ones.\n */\nfunction Combobox2({\n value: propValue,\n values: propValues = [],\n valueOverflow = 'single',\n label = '',\n labelwidth,\n tags = false,\n tagSeparators = [' ', 'Enter'],\n addTagOnBlur = false,\n max: maxProp,\n multiple = false,\n placeholder = '',\n theme,\n note = '',\n error = '',\n disabled = false,\n readOnly = false,\n allowCustomValues = true,\n searchItem: matchItemFn,\n renderValue,\n renderListItem,\n renderList: renderListProp,\n CustomListComponent,\n onBeforeChange = () => true,\n onChange = () => {},\n floatingContainerConfig,\n expandMode,\n infiniteScrollerConfig,\n displayDropdownTrigger = true,\n selectAll,\n closeOnSelect,\n showSearch = false,\n required = false,\n validateOnChange = () => {},\n wrapperClassName = '',\n ...restProps\n}) {\n const max = multiple ? Infinity : maxProp || (tags ? Infinity : 1);\n const renderList = CustomListComponent\n ? (values, { sendMessage }) => (\n sendMessage('value.select', { item: values[index] })}\n getListItemCssClasses={() => {}}\n />\n )\n : renderListProp;\n\n const rootRef = useRef(null);\n const comboboxControlRef = useRef(null);\n const dropdownRef = useRef(null);\n const listRef = useRef(null);\n\n const [value, setValue] = useState(getValueFromProp(propValue, propValues));\n const [values, setValues] = useState(propValues.map((v) => normalizeValue(v)));\n const [searchValue, setSearchValue] = useState('');\n const [activeItem, setActiveItem] = useState(null);\n const [isOpened, setIsOpened] = useState(false);\n const [valuesExpanded, setValuesExpanded] = useState(false);\n const [localValidationError, setLocalValidationError] = useState('');\n\n function getThemeClasses() {\n const themes = theme ? theme.split(' ') : [];\n return themes.map((iTheme) => `tyk-form-group--${iTheme}`);\n }\n\n function getCssClasses() {\n return [\n wrapperClassName,\n 'tyk-form-group',\n 'tyk-combobox2',\n ...getThemeClasses(),\n (error || localValidationError) && 'has-error',\n labelwidth && 'tyk-form-group--label-has-width',\n disabled && 'disabled',\n expandMode && 'is-expand-mode',\n ].filter(Boolean).join(' ');\n }\n\n function getFilteredValues() {\n const defaultFn = (v, s) => v?.name?.toLowerCase()?.includes(s);\n const fn = matchItemFn || defaultFn;\n const filteredValues = values.filter((v) => fn(v, searchValue.toLowerCase()));\n return filteredValues;\n }\n\n function openDropdown() {\n setIsOpened(true);\n }\n\n function closeDropdown() {\n setIsOpened(false);\n if (!tags) updateSearchValue('');\n setActiveItem(null);\n }\n\n function updateSearchValue(newSearchValue) {\n setSearchValue(newSearchValue);\n if (activeItem && getFilteredValues().every((fv) => fv.id !== activeItem.id)) {\n setActiveItem(null);\n }\n if (newSearchValue && !isOpened) openDropdown();\n }\n\n function isValidValue(newValues, lastValue) {\n const localError = validateOnChange(newValues, lastValue);\n setLocalValidationError(localError);\n return localError === undefined;\n }\n\n function updateValue(newValues) {\n setValue(newValues);\n onChange(max === 1 && !tags ? (newValues[0] || null) : newValues);\n }\n\n function addTag(val) {\n if (!val) return;\n if (value.length >= max) return;\n if (value.some(({ name }) => name === val)) return;\n\n const listValueIndex = values.findIndex((lv) => lv.name === val);\n let newValue;\n let finalValue = [...value];\n let selectedValues;\n\n if (listValueIndex === -1) {\n if (allowCustomValues) {\n newValue = { id: val, name: val };\n finalValue = [...value, newValue];\n }\n } else {\n selectedValues = [\n ...values.slice(0, listValueIndex),\n { ...values[listValueIndex], selected: true },\n ...values.slice(listValueIndex + 1),\n ];\n newValue = values[listValueIndex];\n finalValue = [...value, values[listValueIndex]];\n }\n\n if (isValidValue(finalValue, newValue) && onBeforeChange(value, finalValue)) {\n if (selectedValues) {\n setValues(selectedValues);\n }\n updateValue(finalValue);\n }\n }\n\n function removeTag(id) {\n if (required && max === 1) return;\n\n const listValueIndex = values.findIndex((lv) => lv.id === id);\n const newValue = value.filter((v) => v.id !== id);\n\n if (!onBeforeChange(value, newValue)) return;\n\n if (listValueIndex !== -1) {\n setValues([\n ...values.slice(0, listValueIndex),\n { ...values[listValueIndex], selected: false },\n ...values.slice(listValueIndex + 1),\n ]);\n }\n updateValue(newValue);\n }\n\n function selectValue({ id }) {\n const val = values.find((v) => v.id === id);\n let finalValue = value;\n let selectedValues = values;\n\n if (val.selected) {\n if (!required || max !== 1) {\n finalValue = value.filter((v) => v.id !== val.id);\n selectedValues = values.map((v) => (v.id === val.id ? { ...v, selected: false } : v));\n }\n } else if (value.length < max) {\n finalValue = [...value, val];\n selectedValues = values.map((v) => (v.id === val.id ? { ...v, selected: true } : v));\n } else if (max === 1) {\n finalValue = [val];\n selectedValues = values.map((v) => ({ ...v, selected: v.id === val.id }));\n }\n\n if (isValidValue(finalValue, val) && onBeforeChange(value, finalValue)) {\n updateValue(finalValue);\n setValues(selectedValues);\n }\n\n if (max === 1 || closeOnSelect) {\n closeDropdown();\n }\n }\n\n function selectAllValues(selected) {\n if (values.length > max) return;\n const newValue = selected ? [...values] : [];\n\n if (!onBeforeChange(value, newValue)) return;\n\n updateValue(newValue);\n setValues(values.map((v) => ({ ...v, selected })));\n if (closeOnSelect) closeDropdown();\n }\n\n function moveUpActiveItem() {\n const visibleItems = getFilteredValues().filter((v) => !v.disabled);\n if (visibleItems.length === 0) return;\n if (activeItem === null || visibleItems.length === 1) {\n setActiveItem(visibleItems[visibleItems.length - 1]);\n return;\n }\n const activeIndex = visibleItems.findIndex((v) => v.id === activeItem.id);\n setActiveItem(visibleItems[activeIndex > 0 ? activeIndex - 1 : visibleItems.length - 1]);\n }\n\n function moveDownActiveItem() {\n const visibleItems = getFilteredValues().filter((v) => !v.disabled);\n if (visibleItems.length === 0) return;\n if (activeItem === null || visibleItems.length === 1) {\n setActiveItem(visibleItems[0]);\n return;\n }\n const activeIndex = visibleItems.findIndex((v) => v.id === activeItem.id);\n setActiveItem(visibleItems[activeIndex < visibleItems.length - 1 ? activeIndex + 1 : 0]);\n }\n\n function executeTriggerAction() {\n if (expandMode) {\n setValuesExpanded(!valuesExpanded);\n } else {\n openDropdown();\n }\n }\n\n function handleDocumentClick(e) {\n const isClickInside = (rootRef.current && rootRef.current.contains(e.target))\n || (dropdownRef.current && dropdownRef.current.contains(e.target));\n if (!isClickInside) {\n closeDropdown();\n }\n }\n\n function onClickCapture(e) {\n if (!disabled) return;\n if (!expandMode) {\n e.stopPropagation();\n return;\n }\n\n const triggerElement = rootRef.current.querySelector('.tyk-combobox2__values-container-trigger');\n if (!triggerElement) return;\n\n const isClickOnTrigger = triggerElement === e.target || triggerElement.contains(e.target);\n if (!isClickOnTrigger) e.stopPropagation();\n }\n\n function onTagMessage(message, data) {\n if (message === 'add') {\n addTag(data);\n updateSearchValue('');\n }\n\n if (message === 'remove') removeTag(data);\n\n if (message === 'input.change') updateSearchValue(data);\n\n if (message === 'input.enter') {\n if (activeItem) {\n selectValue(activeItem);\n } else if (tagSeparators.includes('Enter')) {\n addTag(data);\n updateSearchValue('');\n }\n }\n\n if (message === 'input.arrowUp') {\n openDropdown();\n moveUpActiveItem();\n }\n\n if (message === 'input.arrowDown') {\n openDropdown();\n moveDownActiveItem();\n }\n\n if (message === 'input.escape') closeDropdown();\n\n if (message === 'input.blur' && addTagOnBlur) {\n addTag(data);\n updateSearchValue('');\n }\n\n if (message === 'input.focus') {\n openDropdown();\n }\n }\n\n function onMessage(message, data) {\n if (message.startsWith('tag.')) onTagMessage(message.slice(4), data);\n\n if (message === 'value.select') selectValue(data.item);\n\n if (message === 'value.select-all') selectAllValues(data);\n\n if (message === 'text-value.click') openDropdown();\n\n if (message === 'search.change') updateSearchValue(data);\n\n if (message === 'search.escape') closeDropdown();\n\n if (message === 'search.arrowUp') moveUpActiveItem();\n\n if (message === 'search.arrowDown') moveDownActiveItem();\n\n if (message === 'search.enter') {\n if (activeItem) selectValue(activeItem);\n }\n }\n\n useEffect(() => {\n window.addEventListener('click', handleDocumentClick, true);\n return () => window.removeEventListener('click', handleDocumentClick, true);\n }, []);\n\n useEffect(() => {\n if (propValues.length) {\n const newValues = propValues.map((v) => ({\n ...normalizeValue(v),\n selected: value.some((sv) => sv.id === v.id),\n }));\n setValues(newValues);\n setValue((val) => val.map((v) => newValues.find((nv) => nv.id === v.id) || v));\n } else if (values.length) {\n setValues([]);\n }\n }, [propValues]);\n\n useEffect(() => {\n const newValue = getValueFromProp(propValue, values);\n setValue(newValue);\n setValues((vals) => vals.map((v) => ({\n ...normalizeValue(v),\n selected: newValue.some((nv) => nv.id === v.id),\n })));\n }, [propValue]);\n\n useEffect(() => {\n if (!expandMode) return () => {};\n\n const valuesElement = comboboxControlRef.current.querySelector('.tyk-combobox2__current-values');\n const updateScroll = () => {\n valuesElement.scrollTop = valuesElement.scrollHeight;\n };\n /* eslint-disable-next-line no-undef */\n const mobserver = new MutationObserver(updateScroll);\n const robserver = new ResizeObserver(updateScroll);\n\n mobserver.observe(valuesElement, { attributes: true, childList: true, subtree: true });\n robserver.observe(valuesElement);\n\n return () => {\n mobserver.disconnect();\n robserver.disconnect();\n };\n });\n\n const filteredValues = getFilteredValues();\n const currentValuesClasses = [\n 'tyk-combobox2__current-values',\n expandMode && 'expand-mode',\n `tyk-combobox2__current-values--${valuesExpanded ? 'expanded' : 'collapsed'}`,\n ].join(' ');\n return (\n \n {label && (\n \n )}\n {!readOnly && (\n \n
    \n \n \n
    \n {displayDropdownTrigger && (\n \n {expandMode\n ? (\n \n )\n : (\n \n )}\n \n )}\n \n {isOpened && (!tags || filteredValues.length > 0) && (\n \n {renderList ? (\n renderList(filteredValues, {\n tags,\n searchValue,\n activeItem,\n listRef,\n sendMessage: onMessage,\n })\n ) : (\n \n )}\n \n )}\n {note && (\n

    {note}

    \n )}\n {((error && error !== 'true' && error !== 'false') || Boolean(localValidationError)) && (\n

    {error || localValidationError}

    \n )}\n \n )}\n {readOnly && (\n
    \n \n
    \n )}\n \n );\n}\n\nCombobox2.propTypes = {\n /** If `true` it allows entering values that are not in the list. */\n allowCustomValues: PropTypes.bool,\n /** Alias for `renderList`\n * used for backwards compatibility with the old Combobox component. */\n CustomListComponent: PropTypes.elementType,\n /** A function used for filtering elements displayed in the list when typing in. */\n searchItem: PropTypes.func,\n /** A custom component that will be used to display a value. */\n renderValue: PropTypes.func,\n /** A custom component that will be used to display an item in the dropdown list. */\n renderListItem: PropTypes.func,\n /** A custom component that will be used to display the entire content of the dropdown. */\n renderList: PropTypes.func,\n disabled: PropTypes.bool,\n /** hides the UI form element and displayes just the value as text */\n readOnly: PropTypes.bool,\n error: PropTypes.string,\n label: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.func,\n PropTypes.string,\n ]),\n labelwidth: PropTypes.string,\n /** The maximum number of values that can be selected/added. */\n max: PropTypes.number,\n /** Shorthand for max=Infinity */\n multiple: PropTypes.bool,\n note: PropTypes.oneOfType([\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n /**\n * Callback called before changing the value of the component.\n * The value change will succeed only if the callback's return value is truthy.\n * The callback is called with two arguments: 1) the previous value, 2) the next value */\n onBeforeChange: PropTypes.func,\n onChange: PropTypes.func,\n placeholder: PropTypes.string,\n /** Enables the display of values as `Pill` components that can be\n * removed without opening the dropdown. */\n tags: PropTypes.bool,\n /** A list of characters that will trigger the creation of a tag when typed. */\n tagSeparators: PropTypes.arrayOf(PropTypes.string),\n /** If set to true a tag will be created whenever the component loses focus\n * and there is something typed in. */\n addTagOnBlur: PropTypes.bool,\n theme: PropTypes.string,\n /** The value of the component. It can be a string, an array,\n * or an object with an `id` property. */\n value: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.instanceOf(Array),\n PropTypes.instanceOf(Object),\n ]),\n /** An array of selectable values. */\n values: PropTypes.instanceOf(Array),\n /** Config object passed to the internal floating container component. */\n floatingContainerConfig: PropTypes.instanceOf(Object),\n /** If set to `single` it will display the values on a single line\n * with an ellipsis at the end. */\n valueOverflow: PropTypes.oneOf(['single', 'multiple']),\n /**\n * If set to `true` whenever the user clicks on the dropdown trigger\n * the selected values container\n * will expand to show all selected values instead of opening the dropdown.\n */\n expandMode: PropTypes.bool,\n /** Config object passed to the internal infinite scroller component. */\n infiniteScrollerConfig: PropTypes.instanceOf(Object),\n /** Toggles the display of the dropdown trigger. */\n displayDropdownTrigger: PropTypes.bool,\n /**\n * If a boolean it will toggle the select all functionality from the dropdown.\n * It can also be an object with the shape `{ label, show, mode, render }`.\n * label - A string displayed as the select all option\n * show - It can be one of `['always', 'notSameState']`.\n * `always` means the option will always be displayed.\n * `notSameState` means it will be displayed only if the list items are\n * not all with the same state (depending on the `mode` value)\n * mode - It can be one of `['select', 'unselect']` and makes sense only\n * when the `show` property is `notSameState`\n * `select` means the select all option will only be displayed if not all\n * items are selected\n * `unselect` means the option will be displayed if no items are selected\n */\n selectAll: PropTypes.oneOfType([\n PropTypes.bool,\n PropTypes.shape({\n label: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.func,\n PropTypes.string,\n ]),\n mode: PropTypes.oneOf(['select', 'unselect']),\n show: PropTypes.oneOf(['always', 'notSameState']),\n render: PropTypes.func,\n }),\n ]),\n /** It `true` the dropdown will close after selecting a value. */\n closeOnSelect: PropTypes.bool,\n /** Toggles the display of the search input from the dropdown. */\n showSearch: PropTypes.bool,\n /** If it is required and can only select one value once you have something\n * selected you will not be able to deselect */\n required: PropTypes.bool,\n /** Validates newly added value before adding it to the selected values.\n * Returns an error string in case of error otherwise it returns undefined\n */\n validateOnChange: PropTypes.func,\n wrapperClassName: PropTypes.string,\n};\n\nexport default Combobox2;\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"flatpickr\");","\n import API from \"!../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../css-loader/dist/cjs.js!./flatpickr.min.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../css-loader/dist/cjs.js!./flatpickr.min.css\";\n export default content && content.locals ? content.locals : undefined;\n","import React, {\n useEffect, useState, useRef, useCallback,\n} from 'react';\nimport PropTypes from 'prop-types';\nimport flatpickr from 'flatpickr';\nimport 'flatpickr/dist/flatpickr.min.css';\n\nimport Icon from '../../../components/Icon';\nimport { usePrevious } from '../../../hooks';\n\nfunction DatePicker({\n children,\n disabled,\n readOnly = false,\n error,\n id,\n label,\n labelwidth,\n note,\n onClose,\n onChange,\n onOpen,\n theme,\n config = {},\n value,\n wrapperClassName = '',\n}) {\n const [pickerInstance, setPickerInstance] = useState(null);\n const dateRef = useRef(null);\n\n const prevValue = usePrevious(value);\n\n const hasValueChanged = useCallback((prevDate, currentDate) => {\n if (!prevDate) return true;\n if (!Array.isArray(currentDate)) return prevDate.getTime() !== currentDate.getTime();\n\n let diffDates = currentDate;\n\n if (prevDate && currentDate.length && prevDate.length) {\n diffDates = currentDate.filter((date, index) => date.getTime() !== prevDate[index].getTime());\n\n return diffDates.length > 0;\n }\n\n return currentDate.length > 0;\n }, []);\n\n const onDateChange = useCallback((dateValue) => {\n const finalValue = config.mode === 'range' ? dateValue : dateValue[0] || null;\n\n if (!onChange) return;\n\n if (config.mode === 'range') {\n if (finalValue.length === 2 && hasValueChanged(prevValue, finalValue)) {\n onChange(finalValue);\n }\n } else {\n onChange(finalValue);\n }\n }, [prevValue, onChange, hasValueChanged]);\n\n useEffect(() => {\n if (dateRef && dateRef.current && !pickerInstance) {\n const instance = flatpickr(dateRef.current, {\n ...config, defaultDate: value, onChange: onDateChange, onClose, onOpen,\n });\n setPickerInstance(instance);\n }\n\n return () => {\n if (pickerInstance) {\n pickerInstance.destroy();\n }\n };\n }, [dateRef.current, pickerInstance]);\n\n useEffect(() => {\n if (pickerInstance) {\n let tempValue = value;\n\n if (typeof value === 'string') {\n tempValue = new Date(value);\n } else if (Array.isArray(value)) {\n tempValue = value.map((date) => (typeof date === 'string' ? new Date(date) : date));\n }\n\n if (hasValueChanged(prevValue, tempValue)) {\n pickerInstance.set('onChange', onDateChange);\n if (config.mode === 'range') {\n if (tempValue && tempValue.length === 2) {\n pickerInstance.setDate(tempValue, true);\n }\n } else {\n pickerInstance.setDate(tempValue, true);\n }\n }\n }\n }, [prevValue, value, pickerInstance]);\n\n const classes = [\n 'tyk-form-group',\n 'tyk-form-group--addon-right',\n wrapperClassName,\n ...(theme ? theme.split(' ').map((t) => `tyk-form-group--${t}`) : []),\n labelwidth && 'tyk-form-group--label-has-width',\n error && 'has-error',\n ].filter(Boolean).join(' ');\n\n const getLabelStyles = () => {\n if (labelwidth) return { flexBasis: labelwidth };\n return {};\n };\n\n const getNonLabelWidth = () => {\n if (labelwidth) return { flexBasis: `calc(100% - ${labelwidth} - 20px)` };\n return {};\n };\n\n const openCalendar = useCallback(() => {\n if (!pickerInstance) return;\n\n pickerInstance.open();\n }, [pickerInstance]);\n\n const getInputError = () => (\n (error && error !== 'true' && error !== 'false')\n ? (\n

    \n { error }\n

    \n )\n : null\n );\n\n const getInputField = () => {\n let inputStyle = {};\n let addonStyle = {};\n\n if (config && config.inline) {\n inputStyle = {\n height: 0,\n padding: 0,\n width: 0,\n visibility: 'hidden',\n };\n\n addonStyle = {\n display: 'none',\n };\n }\n return (\n <>\n \n {}}\n tabIndex={0}\n style={addonStyle}\n >\n \n \n \n );\n };\n\n return (\n <>\n {\n children && children.length\n ? children({ openCalendar, ref: dateRef })\n : (\n
    \n {\n label\n ? \n : null\n }\n {!readOnly && (\n \n
    \n {getInputField()}\n
    \n {\n note\n ?

    { note }

    \n : null\n }\n { getInputError() }\n
    \n )}\n \n )\n }\n
    \n {readOnly && !value && '-'}\n {readOnly && value && flatpickr.formatDate(value, config.dateFormat || 'd/m/Y')}\n
    \n \n );\n}\n\nDatePicker.propTypes = {\n config: PropTypes.instanceOf(Object),\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n PropTypes.func,\n ]),\n disabled: PropTypes.bool,\n readOnly: PropTypes.bool,\n id: PropTypes.string,\n label: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.func,\n PropTypes.string,\n ]),\n labelwidth: PropTypes.string,\n note: PropTypes.string,\n onChange: PropTypes.oneOfType([\n PropTypes.func,\n PropTypes.instanceOf(Array),\n ]),\n onClose: PropTypes.oneOfType([\n PropTypes.func,\n PropTypes.instanceOf(Array),\n ]),\n onOpen: PropTypes.oneOfType([\n PropTypes.func,\n PropTypes.instanceOf(Array),\n ]),\n theme: PropTypes.string,\n error: PropTypes.string,\n value: PropTypes.oneOfType([\n PropTypes.instanceOf(Array),\n PropTypes.instanceOf(Object),\n PropTypes.string,\n ]),\n wrapperClassName: PropTypes.string,\n};\n\nexport default DatePicker;\n","export default function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}","export default function requiredArgs(required, args) {\n if (args.length < required) {\n throw new TypeError(required + ' argument' + (required > 1 ? 's' : '') + ' required, but only ' + args.length + ' present');\n }\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isDate\n * @category Common Helpers\n * @summary Is the given value a date?\n *\n * @description\n * Returns true if the given value is an instance of Date. The function works for dates transferred across iframes.\n *\n * @param {*} value - the value to check\n * @returns {boolean} true if the given value is a date\n * @throws {TypeError} 1 arguments required\n *\n * @example\n * // For a valid date:\n * const result = isDate(new Date())\n * //=> true\n *\n * @example\n * // For an invalid date:\n * const result = isDate(new Date(NaN))\n * //=> true\n *\n * @example\n * // For some value:\n * const result = isDate('2014-02-31')\n * //=> false\n *\n * @example\n * // For an object:\n * const result = isDate({})\n * //=> false\n */\nexport default function isDate(value) {\n requiredArgs(1, arguments);\n return value instanceof Date || _typeof(value) === 'object' && Object.prototype.toString.call(value) === '[object Date]';\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n *\n * @param {Date|Number} argument - the value to convert\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Clone the date:\n * const result = toDate(new Date(2014, 1, 11, 11, 30, 30))\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert the timestamp to date:\n * const result = toDate(1392098430000)\n * //=> Tue Feb 11 2014 11:30:30\n */\nexport default function toDate(argument) {\n requiredArgs(1, arguments);\n var argStr = Object.prototype.toString.call(argument);\n\n // Clone the date\n if (argument instanceof Date || _typeof(argument) === 'object' && argStr === '[object Date]') {\n // Prevent the date to lose the milliseconds when passed to new Date() in IE10\n return new Date(argument.getTime());\n } else if (typeof argument === 'number' || argStr === '[object Number]') {\n return new Date(argument);\n } else {\n if ((typeof argument === 'string' || argStr === '[object String]') && typeof console !== 'undefined') {\n // eslint-disable-next-line no-console\n console.warn(\"Starting with v2.0.0-beta.1 date-fns doesn't accept strings as date arguments. Please use `parseISO` to parse strings. See: https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#string-arguments\");\n // eslint-disable-next-line no-console\n console.warn(new Error().stack);\n }\n return new Date(NaN);\n }\n}","import isDate from \"../isDate/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isValid\n * @category Common Helpers\n * @summary Is the given date valid?\n *\n * @description\n * Returns false if argument is Invalid Date and true otherwise.\n * Argument is converted to Date using `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * Invalid Date is a Date, whose time value is NaN.\n *\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @param {*} date - the date to check\n * @returns {Boolean} the date is valid\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // For the valid date:\n * const result = isValid(new Date(2014, 1, 31))\n * //=> true\n *\n * @example\n * // For the value, convertable into a date:\n * const result = isValid(1393804800000)\n * //=> true\n *\n * @example\n * // For the invalid date:\n * const result = isValid(new Date(''))\n * //=> false\n */\nexport default function isValid(dirtyDate) {\n requiredArgs(1, arguments);\n if (!isDate(dirtyDate) && typeof dirtyDate !== 'number') {\n return false;\n }\n var date = toDate(dirtyDate);\n return !isNaN(Number(date));\n}","export default function toInteger(dirtyNumber) {\n if (dirtyNumber === null || dirtyNumber === true || dirtyNumber === false) {\n return NaN;\n }\n var number = Number(dirtyNumber);\n if (isNaN(number)) {\n return number;\n }\n return number < 0 ? Math.ceil(number) : Math.floor(number);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addMilliseconds\n * @category Millisecond Helpers\n * @summary Add the specified number of milliseconds to the given date.\n *\n * @description\n * Add the specified number of milliseconds to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the milliseconds added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 750 milliseconds to 10 July 2014 12:45:30.000:\n * const result = addMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:30.750\n */\nexport default function addMilliseconds(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var timestamp = toDate(dirtyDate).getTime();\n var amount = toInteger(dirtyAmount);\n return new Date(timestamp + amount);\n}","import addMilliseconds from \"../addMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\n/**\n * @name subMilliseconds\n * @category Millisecond Helpers\n * @summary Subtract the specified number of milliseconds from the given date.\n *\n * @description\n * Subtract the specified number of milliseconds from the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the milliseconds subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 750 milliseconds from 10 July 2014 12:45:30.000:\n * const result = subMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:29.250\n */\nexport default function subMilliseconds(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMilliseconds(dirtyDate, -amount);\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_DAY = 86400000;\nexport default function getUTCDayOfYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var timestamp = date.getTime();\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n var startOfYearTimestamp = date.getTime();\n var difference = timestamp - startOfYearTimestamp;\n return Math.floor(difference / MILLISECONDS_IN_DAY) + 1;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nexport default function startOfUTCISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n var weekStartsOn = 1;\n var date = toDate(dirtyDate);\n var day = date.getUTCDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setUTCDate(date.getUTCDate() - diff);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nexport default function getUTCISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getUTCFullYear();\n var fourthOfJanuaryOfNextYear = new Date(0);\n fourthOfJanuaryOfNextYear.setUTCFullYear(year + 1, 0, 4);\n fourthOfJanuaryOfNextYear.setUTCHours(0, 0, 0, 0);\n var startOfNextYear = startOfUTCISOWeek(fourthOfJanuaryOfNextYear);\n var fourthOfJanuaryOfThisYear = new Date(0);\n fourthOfJanuaryOfThisYear.setUTCFullYear(year, 0, 4);\n fourthOfJanuaryOfThisYear.setUTCHours(0, 0, 0, 0);\n var startOfThisYear = startOfUTCISOWeek(fourthOfJanuaryOfThisYear);\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}","import getUTCISOWeekYear from \"../getUTCISOWeekYear/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nexport default function startOfUTCISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var year = getUTCISOWeekYear(dirtyDate);\n var fourthOfJanuary = new Date(0);\n fourthOfJanuary.setUTCFullYear(year, 0, 4);\n fourthOfJanuary.setUTCHours(0, 0, 0, 0);\n var date = startOfUTCISOWeek(fourthOfJanuary);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nimport startOfUTCISOWeekYear from \"../startOfUTCISOWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000;\nexport default function getUTCISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var diff = startOfUTCISOWeek(date).getTime() - startOfUTCISOWeekYear(date).getTime();\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","var defaultOptions = {};\nexport function getDefaultOptions() {\n return defaultOptions;\n}\nexport function setDefaultOptions(newOptions) {\n defaultOptions = newOptions;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nimport { getDefaultOptions } from \"../defaultOptions/index.js\";\nexport default function startOfUTCWeek(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$weekStartsOn, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(1, arguments);\n var defaultOptions = getDefaultOptions();\n var weekStartsOn = toInteger((_ref = (_ref2 = (_ref3 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.weekStartsOn) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.weekStartsOn) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.weekStartsOn) !== null && _ref !== void 0 ? _ref : 0);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n var date = toDate(dirtyDate);\n var day = date.getUTCDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setUTCDate(date.getUTCDate() - diff);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nimport { getDefaultOptions } from \"../defaultOptions/index.js\";\nexport default function getUTCWeekYear(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$firstWeekCon, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getUTCFullYear();\n var defaultOptions = getDefaultOptions();\n var firstWeekContainsDate = toInteger((_ref = (_ref2 = (_ref3 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref !== void 0 ? _ref : 1);\n\n // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n var firstWeekOfNextYear = new Date(0);\n firstWeekOfNextYear.setUTCFullYear(year + 1, 0, firstWeekContainsDate);\n firstWeekOfNextYear.setUTCHours(0, 0, 0, 0);\n var startOfNextYear = startOfUTCWeek(firstWeekOfNextYear, options);\n var firstWeekOfThisYear = new Date(0);\n firstWeekOfThisYear.setUTCFullYear(year, 0, firstWeekContainsDate);\n firstWeekOfThisYear.setUTCHours(0, 0, 0, 0);\n var startOfThisYear = startOfUTCWeek(firstWeekOfThisYear, options);\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}","import getUTCWeekYear from \"../getUTCWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nimport { getDefaultOptions } from \"../defaultOptions/index.js\";\nexport default function startOfUTCWeekYear(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$firstWeekCon, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(1, arguments);\n var defaultOptions = getDefaultOptions();\n var firstWeekContainsDate = toInteger((_ref = (_ref2 = (_ref3 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref !== void 0 ? _ref : 1);\n var year = getUTCWeekYear(dirtyDate, options);\n var firstWeek = new Date(0);\n firstWeek.setUTCFullYear(year, 0, firstWeekContainsDate);\n firstWeek.setUTCHours(0, 0, 0, 0);\n var date = startOfUTCWeek(firstWeek, options);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport startOfUTCWeekYear from \"../startOfUTCWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000;\nexport default function getUTCWeek(dirtyDate, options) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var diff = startOfUTCWeek(date, options).getTime() - startOfUTCWeekYear(date, options).getTime();\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","export default function addLeadingZeros(number, targetLength) {\n var sign = number < 0 ? '-' : '';\n var output = Math.abs(number).toString();\n while (output.length < targetLength) {\n output = '0' + output;\n }\n return sign + output;\n}","import addLeadingZeros from \"../../addLeadingZeros/index.js\";\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | |\n * | d | Day of month | D | |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | m | Minute | M | Month |\n * | s | Second | S | Fraction of second |\n * | y | Year (abs) | Y | |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n */\nvar formatters = {\n // Year\n y: function y(date, token) {\n // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_tokens\n // | Year | y | yy | yyy | yyyy | yyyyy |\n // |----------|-------|----|-------|-------|-------|\n // | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n // | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n // | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n // | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n\n var signedYear = date.getUTCFullYear();\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n var year = signedYear > 0 ? signedYear : 1 - signedYear;\n return addLeadingZeros(token === 'yy' ? year % 100 : year, token.length);\n },\n // Month\n M: function M(date, token) {\n var month = date.getUTCMonth();\n return token === 'M' ? String(month + 1) : addLeadingZeros(month + 1, 2);\n },\n // Day of the month\n d: function d(date, token) {\n return addLeadingZeros(date.getUTCDate(), token.length);\n },\n // AM or PM\n a: function a(date, token) {\n var dayPeriodEnumValue = date.getUTCHours() / 12 >= 1 ? 'pm' : 'am';\n switch (token) {\n case 'a':\n case 'aa':\n return dayPeriodEnumValue.toUpperCase();\n case 'aaa':\n return dayPeriodEnumValue;\n case 'aaaaa':\n return dayPeriodEnumValue[0];\n case 'aaaa':\n default:\n return dayPeriodEnumValue === 'am' ? 'a.m.' : 'p.m.';\n }\n },\n // Hour [1-12]\n h: function h(date, token) {\n return addLeadingZeros(date.getUTCHours() % 12 || 12, token.length);\n },\n // Hour [0-23]\n H: function H(date, token) {\n return addLeadingZeros(date.getUTCHours(), token.length);\n },\n // Minute\n m: function m(date, token) {\n return addLeadingZeros(date.getUTCMinutes(), token.length);\n },\n // Second\n s: function s(date, token) {\n return addLeadingZeros(date.getUTCSeconds(), token.length);\n },\n // Fraction of second\n S: function S(date, token) {\n var numberOfDigits = token.length;\n var milliseconds = date.getUTCMilliseconds();\n var fractionalSeconds = Math.floor(milliseconds * Math.pow(10, numberOfDigits - 3));\n return addLeadingZeros(fractionalSeconds, token.length);\n }\n};\nexport default formatters;","import getUTCDayOfYear from \"../../../_lib/getUTCDayOfYear/index.js\";\nimport getUTCISOWeek from \"../../../_lib/getUTCISOWeek/index.js\";\nimport getUTCISOWeekYear from \"../../../_lib/getUTCISOWeekYear/index.js\";\nimport getUTCWeek from \"../../../_lib/getUTCWeek/index.js\";\nimport getUTCWeekYear from \"../../../_lib/getUTCWeekYear/index.js\";\nimport addLeadingZeros from \"../../addLeadingZeros/index.js\";\nimport lightFormatters from \"../lightFormatters/index.js\";\nvar dayPeriodEnum = {\n am: 'am',\n pm: 'pm',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n};\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O | Timezone (GMT) |\n * | p! | Long localized time | P! | Long localized date |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `format` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n * - `P` is long localized date format\n * - `p` is long localized time format\n */\n\nvar formatters = {\n // Era\n G: function G(date, token, localize) {\n var era = date.getUTCFullYear() > 0 ? 1 : 0;\n switch (token) {\n // AD, BC\n case 'G':\n case 'GG':\n case 'GGG':\n return localize.era(era, {\n width: 'abbreviated'\n });\n // A, B\n case 'GGGGG':\n return localize.era(era, {\n width: 'narrow'\n });\n // Anno Domini, Before Christ\n case 'GGGG':\n default:\n return localize.era(era, {\n width: 'wide'\n });\n }\n },\n // Year\n y: function y(date, token, localize) {\n // Ordinal number\n if (token === 'yo') {\n var signedYear = date.getUTCFullYear();\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n var year = signedYear > 0 ? signedYear : 1 - signedYear;\n return localize.ordinalNumber(year, {\n unit: 'year'\n });\n }\n return lightFormatters.y(date, token);\n },\n // Local week-numbering year\n Y: function Y(date, token, localize, options) {\n var signedWeekYear = getUTCWeekYear(date, options);\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n var weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear;\n\n // Two digit year\n if (token === 'YY') {\n var twoDigitYear = weekYear % 100;\n return addLeadingZeros(twoDigitYear, 2);\n }\n\n // Ordinal number\n if (token === 'Yo') {\n return localize.ordinalNumber(weekYear, {\n unit: 'year'\n });\n }\n\n // Padding\n return addLeadingZeros(weekYear, token.length);\n },\n // ISO week-numbering year\n R: function R(date, token) {\n var isoWeekYear = getUTCISOWeekYear(date);\n\n // Padding\n return addLeadingZeros(isoWeekYear, token.length);\n },\n // Extended year. This is a single number designating the year of this calendar system.\n // The main difference between `y` and `u` localizers are B.C. years:\n // | Year | `y` | `u` |\n // |------|-----|-----|\n // | AC 1 | 1 | 1 |\n // | BC 1 | 1 | 0 |\n // | BC 2 | 2 | -1 |\n // Also `yy` always returns the last two digits of a year,\n // while `uu` pads single digit years to 2 characters and returns other years unchanged.\n u: function u(date, token) {\n var year = date.getUTCFullYear();\n return addLeadingZeros(year, token.length);\n },\n // Quarter\n Q: function Q(date, token, localize) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case 'Q':\n return String(quarter);\n // 01, 02, 03, 04\n case 'QQ':\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n case 'Qo':\n return localize.ordinalNumber(quarter, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n case 'QQQ':\n return localize.quarter(quarter, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case 'QQQQQ':\n return localize.quarter(quarter, {\n width: 'narrow',\n context: 'formatting'\n });\n // 1st quarter, 2nd quarter, ...\n case 'QQQQ':\n default:\n return localize.quarter(quarter, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone quarter\n q: function q(date, token, localize) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case 'q':\n return String(quarter);\n // 01, 02, 03, 04\n case 'qq':\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n case 'qo':\n return localize.ordinalNumber(quarter, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n case 'qqq':\n return localize.quarter(quarter, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case 'qqqqq':\n return localize.quarter(quarter, {\n width: 'narrow',\n context: 'standalone'\n });\n // 1st quarter, 2nd quarter, ...\n case 'qqqq':\n default:\n return localize.quarter(quarter, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // Month\n M: function M(date, token, localize) {\n var month = date.getUTCMonth();\n switch (token) {\n case 'M':\n case 'MM':\n return lightFormatters.M(date, token);\n // 1st, 2nd, ..., 12th\n case 'Mo':\n return localize.ordinalNumber(month + 1, {\n unit: 'month'\n });\n // Jan, Feb, ..., Dec\n case 'MMM':\n return localize.month(month, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // J, F, ..., D\n case 'MMMMM':\n return localize.month(month, {\n width: 'narrow',\n context: 'formatting'\n });\n // January, February, ..., December\n case 'MMMM':\n default:\n return localize.month(month, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone month\n L: function L(date, token, localize) {\n var month = date.getUTCMonth();\n switch (token) {\n // 1, 2, ..., 12\n case 'L':\n return String(month + 1);\n // 01, 02, ..., 12\n case 'LL':\n return addLeadingZeros(month + 1, 2);\n // 1st, 2nd, ..., 12th\n case 'Lo':\n return localize.ordinalNumber(month + 1, {\n unit: 'month'\n });\n // Jan, Feb, ..., Dec\n case 'LLL':\n return localize.month(month, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // J, F, ..., D\n case 'LLLLL':\n return localize.month(month, {\n width: 'narrow',\n context: 'standalone'\n });\n // January, February, ..., December\n case 'LLLL':\n default:\n return localize.month(month, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // Local week of year\n w: function w(date, token, localize, options) {\n var week = getUTCWeek(date, options);\n if (token === 'wo') {\n return localize.ordinalNumber(week, {\n unit: 'week'\n });\n }\n return addLeadingZeros(week, token.length);\n },\n // ISO week of year\n I: function I(date, token, localize) {\n var isoWeek = getUTCISOWeek(date);\n if (token === 'Io') {\n return localize.ordinalNumber(isoWeek, {\n unit: 'week'\n });\n }\n return addLeadingZeros(isoWeek, token.length);\n },\n // Day of the month\n d: function d(date, token, localize) {\n if (token === 'do') {\n return localize.ordinalNumber(date.getUTCDate(), {\n unit: 'date'\n });\n }\n return lightFormatters.d(date, token);\n },\n // Day of year\n D: function D(date, token, localize) {\n var dayOfYear = getUTCDayOfYear(date);\n if (token === 'Do') {\n return localize.ordinalNumber(dayOfYear, {\n unit: 'dayOfYear'\n });\n }\n return addLeadingZeros(dayOfYear, token.length);\n },\n // Day of week\n E: function E(date, token, localize) {\n var dayOfWeek = date.getUTCDay();\n switch (token) {\n // Tue\n case 'E':\n case 'EE':\n case 'EEE':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n case 'EEEEE':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n case 'EEEEEE':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n case 'EEEE':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Local day of week\n e: function e(date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n switch (token) {\n // Numerical value (Nth day of week with current locale or weekStartsOn)\n case 'e':\n return String(localDayOfWeek);\n // Padded numerical value\n case 'ee':\n return addLeadingZeros(localDayOfWeek, 2);\n // 1st, 2nd, ..., 7th\n case 'eo':\n return localize.ordinalNumber(localDayOfWeek, {\n unit: 'day'\n });\n case 'eee':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n case 'eeeee':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n case 'eeeeee':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n case 'eeee':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone local day of week\n c: function c(date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n switch (token) {\n // Numerical value (same as in `e`)\n case 'c':\n return String(localDayOfWeek);\n // Padded numerical value\n case 'cc':\n return addLeadingZeros(localDayOfWeek, token.length);\n // 1st, 2nd, ..., 7th\n case 'co':\n return localize.ordinalNumber(localDayOfWeek, {\n unit: 'day'\n });\n case 'ccc':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // T\n case 'ccccc':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'standalone'\n });\n // Tu\n case 'cccccc':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'standalone'\n });\n // Tuesday\n case 'cccc':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // ISO day of week\n i: function i(date, token, localize) {\n var dayOfWeek = date.getUTCDay();\n var isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek;\n switch (token) {\n // 2\n case 'i':\n return String(isoDayOfWeek);\n // 02\n case 'ii':\n return addLeadingZeros(isoDayOfWeek, token.length);\n // 2nd\n case 'io':\n return localize.ordinalNumber(isoDayOfWeek, {\n unit: 'day'\n });\n // Tue\n case 'iii':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n case 'iiiii':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n case 'iiiiii':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n case 'iiii':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // AM or PM\n a: function a(date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n switch (token) {\n case 'a':\n case 'aa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n case 'aaa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n }).toLowerCase();\n case 'aaaaa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'aaaa':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // AM, PM, midnight, noon\n b: function b(date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue;\n if (hours === 12) {\n dayPeriodEnumValue = dayPeriodEnum.noon;\n } else if (hours === 0) {\n dayPeriodEnumValue = dayPeriodEnum.midnight;\n } else {\n dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n }\n switch (token) {\n case 'b':\n case 'bb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n case 'bbb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n }).toLowerCase();\n case 'bbbbb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'bbbb':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // in the morning, in the afternoon, in the evening, at night\n B: function B(date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue;\n if (hours >= 17) {\n dayPeriodEnumValue = dayPeriodEnum.evening;\n } else if (hours >= 12) {\n dayPeriodEnumValue = dayPeriodEnum.afternoon;\n } else if (hours >= 4) {\n dayPeriodEnumValue = dayPeriodEnum.morning;\n } else {\n dayPeriodEnumValue = dayPeriodEnum.night;\n }\n switch (token) {\n case 'B':\n case 'BB':\n case 'BBB':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n case 'BBBBB':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'BBBB':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Hour [1-12]\n h: function h(date, token, localize) {\n if (token === 'ho') {\n var hours = date.getUTCHours() % 12;\n if (hours === 0) hours = 12;\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n return lightFormatters.h(date, token);\n },\n // Hour [0-23]\n H: function H(date, token, localize) {\n if (token === 'Ho') {\n return localize.ordinalNumber(date.getUTCHours(), {\n unit: 'hour'\n });\n }\n return lightFormatters.H(date, token);\n },\n // Hour [0-11]\n K: function K(date, token, localize) {\n var hours = date.getUTCHours() % 12;\n if (token === 'Ko') {\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n return addLeadingZeros(hours, token.length);\n },\n // Hour [1-24]\n k: function k(date, token, localize) {\n var hours = date.getUTCHours();\n if (hours === 0) hours = 24;\n if (token === 'ko') {\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n return addLeadingZeros(hours, token.length);\n },\n // Minute\n m: function m(date, token, localize) {\n if (token === 'mo') {\n return localize.ordinalNumber(date.getUTCMinutes(), {\n unit: 'minute'\n });\n }\n return lightFormatters.m(date, token);\n },\n // Second\n s: function s(date, token, localize) {\n if (token === 'so') {\n return localize.ordinalNumber(date.getUTCSeconds(), {\n unit: 'second'\n });\n }\n return lightFormatters.s(date, token);\n },\n // Fraction of second\n S: function S(date, token) {\n return lightFormatters.S(date, token);\n },\n // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)\n X: function X(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n if (timezoneOffset === 0) {\n return 'Z';\n }\n switch (token) {\n // Hours and optional minutes\n case 'X':\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XX`\n case 'XXXX':\n case 'XX':\n // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XXX`\n case 'XXXXX':\n case 'XXX': // Hours and minutes with `:` delimiter\n default:\n return formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)\n x: function x(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n switch (token) {\n // Hours and optional minutes\n case 'x':\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xx`\n case 'xxxx':\n case 'xx':\n // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xxx`\n case 'xxxxx':\n case 'xxx': // Hours and minutes with `:` delimiter\n default:\n return formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (GMT)\n O: function O(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n switch (token) {\n // Short\n case 'O':\n case 'OO':\n case 'OOO':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n // Long\n case 'OOOO':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (specific non-location)\n z: function z(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n switch (token) {\n // Short\n case 'z':\n case 'zz':\n case 'zzz':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n // Long\n case 'zzzz':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':');\n }\n },\n // Seconds timestamp\n t: function t(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timestamp = Math.floor(originalDate.getTime() / 1000);\n return addLeadingZeros(timestamp, token.length);\n },\n // Milliseconds timestamp\n T: function T(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timestamp = originalDate.getTime();\n return addLeadingZeros(timestamp, token.length);\n }\n};\nfunction formatTimezoneShort(offset, dirtyDelimiter) {\n var sign = offset > 0 ? '-' : '+';\n var absOffset = Math.abs(offset);\n var hours = Math.floor(absOffset / 60);\n var minutes = absOffset % 60;\n if (minutes === 0) {\n return sign + String(hours);\n }\n var delimiter = dirtyDelimiter || '';\n return sign + String(hours) + delimiter + addLeadingZeros(minutes, 2);\n}\nfunction formatTimezoneWithOptionalMinutes(offset, dirtyDelimiter) {\n if (offset % 60 === 0) {\n var sign = offset > 0 ? '-' : '+';\n return sign + addLeadingZeros(Math.abs(offset) / 60, 2);\n }\n return formatTimezone(offset, dirtyDelimiter);\n}\nfunction formatTimezone(offset, dirtyDelimiter) {\n var delimiter = dirtyDelimiter || '';\n var sign = offset > 0 ? '-' : '+';\n var absOffset = Math.abs(offset);\n var hours = addLeadingZeros(Math.floor(absOffset / 60), 2);\n var minutes = addLeadingZeros(absOffset % 60, 2);\n return sign + hours + delimiter + minutes;\n}\nexport default formatters;","var dateLongFormatter = function dateLongFormatter(pattern, formatLong) {\n switch (pattern) {\n case 'P':\n return formatLong.date({\n width: 'short'\n });\n case 'PP':\n return formatLong.date({\n width: 'medium'\n });\n case 'PPP':\n return formatLong.date({\n width: 'long'\n });\n case 'PPPP':\n default:\n return formatLong.date({\n width: 'full'\n });\n }\n};\nvar timeLongFormatter = function timeLongFormatter(pattern, formatLong) {\n switch (pattern) {\n case 'p':\n return formatLong.time({\n width: 'short'\n });\n case 'pp':\n return formatLong.time({\n width: 'medium'\n });\n case 'ppp':\n return formatLong.time({\n width: 'long'\n });\n case 'pppp':\n default:\n return formatLong.time({\n width: 'full'\n });\n }\n};\nvar dateTimeLongFormatter = function dateTimeLongFormatter(pattern, formatLong) {\n var matchResult = pattern.match(/(P+)(p+)?/) || [];\n var datePattern = matchResult[1];\n var timePattern = matchResult[2];\n if (!timePattern) {\n return dateLongFormatter(pattern, formatLong);\n }\n var dateTimeFormat;\n switch (datePattern) {\n case 'P':\n dateTimeFormat = formatLong.dateTime({\n width: 'short'\n });\n break;\n case 'PP':\n dateTimeFormat = formatLong.dateTime({\n width: 'medium'\n });\n break;\n case 'PPP':\n dateTimeFormat = formatLong.dateTime({\n width: 'long'\n });\n break;\n case 'PPPP':\n default:\n dateTimeFormat = formatLong.dateTime({\n width: 'full'\n });\n break;\n }\n return dateTimeFormat.replace('{{date}}', dateLongFormatter(datePattern, formatLong)).replace('{{time}}', timeLongFormatter(timePattern, formatLong));\n};\nvar longFormatters = {\n p: timeLongFormatter,\n P: dateTimeLongFormatter\n};\nexport default longFormatters;","/**\n * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds.\n * They usually appear for dates that denote time before the timezones were introduced\n * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891\n * and GMT+01:00:00 after that date)\n *\n * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above,\n * which would lead to incorrect calculations.\n *\n * This function returns the timezone offset in milliseconds that takes seconds in account.\n */\nexport default function getTimezoneOffsetInMilliseconds(date) {\n var utcDate = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds()));\n utcDate.setUTCFullYear(date.getFullYear());\n return date.getTime() - utcDate.getTime();\n}","var protectedDayOfYearTokens = ['D', 'DD'];\nvar protectedWeekYearTokens = ['YY', 'YYYY'];\nexport function isProtectedDayOfYearToken(token) {\n return protectedDayOfYearTokens.indexOf(token) !== -1;\n}\nexport function isProtectedWeekYearToken(token) {\n return protectedWeekYearTokens.indexOf(token) !== -1;\n}\nexport function throwProtectedError(token, format, input) {\n if (token === 'YYYY') {\n throw new RangeError(\"Use `yyyy` instead of `YYYY` (in `\".concat(format, \"`) for formatting years to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n } else if (token === 'YY') {\n throw new RangeError(\"Use `yy` instead of `YY` (in `\".concat(format, \"`) for formatting years to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n } else if (token === 'D') {\n throw new RangeError(\"Use `d` instead of `D` (in `\".concat(format, \"`) for formatting days of the month to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n } else if (token === 'DD') {\n throw new RangeError(\"Use `dd` instead of `DD` (in `\".concat(format, \"`) for formatting days of the month to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n }\n}","var formatDistanceLocale = {\n lessThanXSeconds: {\n one: 'less than a second',\n other: 'less than {{count}} seconds'\n },\n xSeconds: {\n one: '1 second',\n other: '{{count}} seconds'\n },\n halfAMinute: 'half a minute',\n lessThanXMinutes: {\n one: 'less than a minute',\n other: 'less than {{count}} minutes'\n },\n xMinutes: {\n one: '1 minute',\n other: '{{count}} minutes'\n },\n aboutXHours: {\n one: 'about 1 hour',\n other: 'about {{count}} hours'\n },\n xHours: {\n one: '1 hour',\n other: '{{count}} hours'\n },\n xDays: {\n one: '1 day',\n other: '{{count}} days'\n },\n aboutXWeeks: {\n one: 'about 1 week',\n other: 'about {{count}} weeks'\n },\n xWeeks: {\n one: '1 week',\n other: '{{count}} weeks'\n },\n aboutXMonths: {\n one: 'about 1 month',\n other: 'about {{count}} months'\n },\n xMonths: {\n one: '1 month',\n other: '{{count}} months'\n },\n aboutXYears: {\n one: 'about 1 year',\n other: 'about {{count}} years'\n },\n xYears: {\n one: '1 year',\n other: '{{count}} years'\n },\n overXYears: {\n one: 'over 1 year',\n other: 'over {{count}} years'\n },\n almostXYears: {\n one: 'almost 1 year',\n other: 'almost {{count}} years'\n }\n};\nvar formatDistance = function formatDistance(token, count, options) {\n var result;\n var tokenValue = formatDistanceLocale[token];\n if (typeof tokenValue === 'string') {\n result = tokenValue;\n } else if (count === 1) {\n result = tokenValue.one;\n } else {\n result = tokenValue.other.replace('{{count}}', count.toString());\n }\n if (options !== null && options !== void 0 && options.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return 'in ' + result;\n } else {\n return result + ' ago';\n }\n }\n return result;\n};\nexport default formatDistance;","export default function buildFormatLongFn(args) {\n return function () {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n // TODO: Remove String()\n var width = options.width ? String(options.width) : args.defaultWidth;\n var format = args.formats[width] || args.formats[args.defaultWidth];\n return format;\n };\n}","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\nvar dateFormats = {\n full: 'EEEE, MMMM do, y',\n long: 'MMMM do, y',\n medium: 'MMM d, y',\n short: 'MM/dd/yyyy'\n};\nvar timeFormats = {\n full: 'h:mm:ss a zzzz',\n long: 'h:mm:ss a z',\n medium: 'h:mm:ss a',\n short: 'h:mm a'\n};\nvar dateTimeFormats = {\n full: \"{{date}} 'at' {{time}}\",\n long: \"{{date}} 'at' {{time}}\",\n medium: '{{date}}, {{time}}',\n short: '{{date}}, {{time}}'\n};\nvar formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: 'full'\n }),\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: 'full'\n }),\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: 'full'\n })\n};\nexport default formatLong;","var formatRelativeLocale = {\n lastWeek: \"'last' eeee 'at' p\",\n yesterday: \"'yesterday at' p\",\n today: \"'today at' p\",\n tomorrow: \"'tomorrow at' p\",\n nextWeek: \"eeee 'at' p\",\n other: 'P'\n};\nvar formatRelative = function formatRelative(token, _date, _baseDate, _options) {\n return formatRelativeLocale[token];\n};\nexport default formatRelative;","export default function buildLocalizeFn(args) {\n return function (dirtyIndex, options) {\n var context = options !== null && options !== void 0 && options.context ? String(options.context) : 'standalone';\n var valuesArray;\n if (context === 'formatting' && args.formattingValues) {\n var defaultWidth = args.defaultFormattingWidth || args.defaultWidth;\n var width = options !== null && options !== void 0 && options.width ? String(options.width) : defaultWidth;\n valuesArray = args.formattingValues[width] || args.formattingValues[defaultWidth];\n } else {\n var _defaultWidth = args.defaultWidth;\n var _width = options !== null && options !== void 0 && options.width ? String(options.width) : args.defaultWidth;\n valuesArray = args.values[_width] || args.values[_defaultWidth];\n }\n var index = args.argumentCallback ? args.argumentCallback(dirtyIndex) : dirtyIndex;\n // @ts-ignore: For some reason TypeScript just don't want to match it, no matter how hard we try. I challenge you to try to remove it!\n return valuesArray[index];\n };\n}","import buildLocalizeFn from \"../../../_lib/buildLocalizeFn/index.js\";\nvar eraValues = {\n narrow: ['B', 'A'],\n abbreviated: ['BC', 'AD'],\n wide: ['Before Christ', 'Anno Domini']\n};\nvar quarterValues = {\n narrow: ['1', '2', '3', '4'],\n abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'],\n wide: ['1st quarter', '2nd quarter', '3rd quarter', '4th quarter']\n};\n\n// Note: in English, the names of days of the week and months are capitalized.\n// If you are making a new locale based on this one, check if the same is true for the language you're working on.\n// Generally, formatted dates should look like they are in the middle of a sentence,\n// e.g. in Spanish language the weekdays and months should be in the lowercase.\nvar monthValues = {\n narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],\n abbreviated: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n wide: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']\n};\nvar dayValues = {\n narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],\n short: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n abbreviated: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n wide: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']\n};\nvar dayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n }\n};\nvar formattingDayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n }\n};\nvar ordinalNumber = function ordinalNumber(dirtyNumber, _options) {\n var number = Number(dirtyNumber);\n\n // If ordinal numbers depend on context, for example,\n // if they are different for different grammatical genders,\n // use `options.unit`.\n //\n // `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',\n // 'day', 'hour', 'minute', 'second'.\n\n var rem100 = number % 100;\n if (rem100 > 20 || rem100 < 10) {\n switch (rem100 % 10) {\n case 1:\n return number + 'st';\n case 2:\n return number + 'nd';\n case 3:\n return number + 'rd';\n }\n }\n return number + 'th';\n};\nvar localize = {\n ordinalNumber: ordinalNumber,\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: 'wide'\n }),\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: 'wide',\n argumentCallback: function argumentCallback(quarter) {\n return quarter - 1;\n }\n }),\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: 'wide'\n }),\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: 'wide'\n }),\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: 'wide',\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: 'wide'\n })\n};\nexport default localize;","export default function buildMatchFn(args) {\n return function (string) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var width = options.width;\n var matchPattern = width && args.matchPatterns[width] || args.matchPatterns[args.defaultMatchWidth];\n var matchResult = string.match(matchPattern);\n if (!matchResult) {\n return null;\n }\n var matchedString = matchResult[0];\n var parsePatterns = width && args.parsePatterns[width] || args.parsePatterns[args.defaultParseWidth];\n var key = Array.isArray(parsePatterns) ? findIndex(parsePatterns, function (pattern) {\n return pattern.test(matchedString);\n }) : findKey(parsePatterns, function (pattern) {\n return pattern.test(matchedString);\n });\n var value;\n value = args.valueCallback ? args.valueCallback(key) : key;\n value = options.valueCallback ? options.valueCallback(value) : value;\n var rest = string.slice(matchedString.length);\n return {\n value: value,\n rest: rest\n };\n };\n}\nfunction findKey(object, predicate) {\n for (var key in object) {\n if (object.hasOwnProperty(key) && predicate(object[key])) {\n return key;\n }\n }\n return undefined;\n}\nfunction findIndex(array, predicate) {\n for (var key = 0; key < array.length; key++) {\n if (predicate(array[key])) {\n return key;\n }\n }\n return undefined;\n}","export default function buildMatchPatternFn(args) {\n return function (string) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var matchResult = string.match(args.matchPattern);\n if (!matchResult) return null;\n var matchedString = matchResult[0];\n var parseResult = string.match(args.parsePattern);\n if (!parseResult) return null;\n var value = args.valueCallback ? args.valueCallback(parseResult[0]) : parseResult[0];\n value = options.valueCallback ? options.valueCallback(value) : value;\n var rest = string.slice(matchedString.length);\n return {\n value: value,\n rest: rest\n };\n };\n}","import buildMatchFn from \"../../../_lib/buildMatchFn/index.js\";\nimport buildMatchPatternFn from \"../../../_lib/buildMatchPatternFn/index.js\";\nvar matchOrdinalNumberPattern = /^(\\d+)(th|st|nd|rd)?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n narrow: /^(b|a)/i,\n abbreviated: /^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)/i,\n wide: /^(before christ|before common era|anno domini|common era)/i\n};\nvar parseEraPatterns = {\n any: [/^b/i, /^(a|c)/i]\n};\nvar matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^q[1234]/i,\n wide: /^[1234](th|st|nd|rd)? quarter/i\n};\nvar parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i]\n};\nvar matchMonthPatterns = {\n narrow: /^[jfmasond]/i,\n abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,\n wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i\n};\nvar parseMonthPatterns = {\n narrow: [/^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],\n any: [/^ja/i, /^f/i, /^mar/i, /^ap/i, /^may/i, /^jun/i, /^jul/i, /^au/i, /^s/i, /^o/i, /^n/i, /^d/i]\n};\nvar matchDayPatterns = {\n narrow: /^[smtwf]/i,\n short: /^(su|mo|tu|we|th|fr|sa)/i,\n abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,\n wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i\n};\nvar parseDayPatterns = {\n narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],\n any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i]\n};\nvar matchDayPeriodPatterns = {\n narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,\n any: /^([ap]\\.?\\s?m\\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i\n};\nvar parseDayPeriodPatterns = {\n any: {\n am: /^a/i,\n pm: /^p/i,\n midnight: /^mi/i,\n noon: /^no/i,\n morning: /morning/i,\n afternoon: /afternoon/i,\n evening: /evening/i,\n night: /night/i\n }\n};\nvar match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: function valueCallback(value) {\n return parseInt(value, 10);\n }\n }),\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseEraPatterns,\n defaultParseWidth: 'any'\n }),\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: 'any',\n valueCallback: function valueCallback(index) {\n return index + 1;\n }\n }),\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: 'any'\n }),\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseDayPatterns,\n defaultParseWidth: 'any'\n }),\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: 'any',\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: 'any'\n })\n};\nexport default match;","import formatDistance from \"./_lib/formatDistance/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\nimport formatRelative from \"./_lib/formatRelative/index.js\";\nimport localize from \"./_lib/localize/index.js\";\nimport match from \"./_lib/match/index.js\";\n/**\n * @type {Locale}\n * @category Locales\n * @summary English locale (United States).\n * @language English\n * @iso-639-2 eng\n * @author Sasha Koss [@kossnocorp]{@link https://github.com/kossnocorp}\n * @author Lesha Koss [@leshakoss]{@link https://github.com/leshakoss}\n */\nvar locale = {\n code: 'en-US',\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 0 /* Sunday */,\n firstWeekContainsDate: 1\n }\n};\nexport default locale;","import defaultLocale from \"../../locale/en-US/index.js\";\nexport default defaultLocale;","import isValid from \"../isValid/index.js\";\nimport subMilliseconds from \"../subMilliseconds/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport formatters from \"../_lib/format/formatters/index.js\";\nimport longFormatters from \"../_lib/format/longFormatters/index.js\";\nimport getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport { isProtectedDayOfYearToken, isProtectedWeekYearToken, throwProtectedError } from \"../_lib/protectedTokens/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getDefaultOptions } from \"../_lib/defaultOptions/index.js\";\nimport defaultLocale from \"../_lib/defaultLocale/index.js\"; // This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\nvar formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g;\n\n// This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\nvar longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\nvar escapedStringRegExp = /^'([^]*?)'?$/;\nvar doubleQuoteRegExp = /''/g;\nvar unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n\n/**\n * @name format\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format. The result may vary by locale.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * The characters wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n * (see the last example)\n *\n * Format of the string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 7 below the table).\n *\n * Accepted patterns:\n * | Unit | Pattern | Result examples | Notes |\n * |---------------------------------|---------|-----------------------------------|-------|\n * | Era | G..GGG | AD, BC | |\n * | | GGGG | Anno Domini, Before Christ | 2 |\n * | | GGGGG | A, B | |\n * | Calendar year | y | 44, 1, 1900, 2017 | 5 |\n * | | yo | 44th, 1st, 0th, 17th | 5,7 |\n * | | yy | 44, 01, 00, 17 | 5 |\n * | | yyy | 044, 001, 1900, 2017 | 5 |\n * | | yyyy | 0044, 0001, 1900, 2017 | 5 |\n * | | yyyyy | ... | 3,5 |\n * | Local week-numbering year | Y | 44, 1, 1900, 2017 | 5 |\n * | | Yo | 44th, 1st, 1900th, 2017th | 5,7 |\n * | | YY | 44, 01, 00, 17 | 5,8 |\n * | | YYY | 044, 001, 1900, 2017 | 5 |\n * | | YYYY | 0044, 0001, 1900, 2017 | 5,8 |\n * | | YYYYY | ... | 3,5 |\n * | ISO week-numbering year | R | -43, 0, 1, 1900, 2017 | 5,7 |\n * | | RR | -43, 00, 01, 1900, 2017 | 5,7 |\n * | | RRR | -043, 000, 001, 1900, 2017 | 5,7 |\n * | | RRRR | -0043, 0000, 0001, 1900, 2017 | 5,7 |\n * | | RRRRR | ... | 3,5,7 |\n * | Extended year | u | -43, 0, 1, 1900, 2017 | 5 |\n * | | uu | -43, 01, 1900, 2017 | 5 |\n * | | uuu | -043, 001, 1900, 2017 | 5 |\n * | | uuuu | -0043, 0001, 1900, 2017 | 5 |\n * | | uuuuu | ... | 3,5 |\n * | Quarter (formatting) | Q | 1, 2, 3, 4 | |\n * | | Qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | QQ | 01, 02, 03, 04 | |\n * | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | q | 1, 2, 3, 4 | |\n * | | qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | qq | 01, 02, 03, 04 | |\n * | | qqq | Q1, Q2, Q3, Q4 | |\n * | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | qqqqq | 1, 2, 3, 4 | 4 |\n * | Month (formatting) | M | 1, 2, ..., 12 | |\n * | | Mo | 1st, 2nd, ..., 12th | 7 |\n * | | MM | 01, 02, ..., 12 | |\n * | | MMM | Jan, Feb, ..., Dec | |\n * | | MMMM | January, February, ..., December | 2 |\n * | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | L | 1, 2, ..., 12 | |\n * | | Lo | 1st, 2nd, ..., 12th | 7 |\n * | | LL | 01, 02, ..., 12 | |\n * | | LLL | Jan, Feb, ..., Dec | |\n * | | LLLL | January, February, ..., December | 2 |\n * | | LLLLL | J, F, ..., D | |\n * | Local week of year | w | 1, 2, ..., 53 | |\n * | | wo | 1st, 2nd, ..., 53th | 7 |\n * | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | I | 1, 2, ..., 53 | 7 |\n * | | Io | 1st, 2nd, ..., 53th | 7 |\n * | | II | 01, 02, ..., 53 | 7 |\n * | Day of month | d | 1, 2, ..., 31 | |\n * | | do | 1st, 2nd, ..., 31st | 7 |\n * | | dd | 01, 02, ..., 31 | |\n * | Day of year | D | 1, 2, ..., 365, 366 | 9 |\n * | | Do | 1st, 2nd, ..., 365th, 366th | 7 |\n * | | DD | 01, 02, ..., 365, 366 | 9 |\n * | | DDD | 001, 002, ..., 365, 366 | |\n * | | DDDD | ... | 3 |\n * | Day of week (formatting) | E..EEE | Mon, Tue, Wed, ..., Sun | |\n * | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | EEEEE | M, T, W, T, F, S, S | |\n * | | EEEEEE | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | ISO day of week (formatting) | i | 1, 2, 3, ..., 7 | 7 |\n * | | io | 1st, 2nd, ..., 7th | 7 |\n * | | ii | 01, 02, ..., 07 | 7 |\n * | | iii | Mon, Tue, Wed, ..., Sun | 7 |\n * | | iiii | Monday, Tuesday, ..., Sunday | 2,7 |\n * | | iiiii | M, T, W, T, F, S, S | 7 |\n * | | iiiiii | Mo, Tu, We, Th, Fr, Sa, Su | 7 |\n * | Local day of week (formatting) | e | 2, 3, 4, ..., 1 | |\n * | | eo | 2nd, 3rd, ..., 1st | 7 |\n * | | ee | 02, 03, ..., 01 | |\n * | | eee | Mon, Tue, Wed, ..., Sun | |\n * | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | eeeee | M, T, W, T, F, S, S | |\n * | | eeeeee | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | Local day of week (stand-alone) | c | 2, 3, 4, ..., 1 | |\n * | | co | 2nd, 3rd, ..., 1st | 7 |\n * | | cc | 02, 03, ..., 01 | |\n * | | ccc | Mon, Tue, Wed, ..., Sun | |\n * | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | ccccc | M, T, W, T, F, S, S | |\n * | | cccccc | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | AM, PM | a..aa | AM, PM | |\n * | | aaa | am, pm | |\n * | | aaaa | a.m., p.m. | 2 |\n * | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | b..bb | AM, PM, noon, midnight | |\n * | | bbb | am, pm, noon, midnight | |\n * | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | bbbbb | a, p, n, mi | |\n * | Flexible day period | B..BBB | at night, in the morning, ... | |\n * | | BBBB | at night, in the morning, ... | 2 |\n * | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | h | 1, 2, ..., 11, 12 | |\n * | | ho | 1st, 2nd, ..., 11th, 12th | 7 |\n * | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | H | 0, 1, 2, ..., 23 | |\n * | | Ho | 0th, 1st, 2nd, ..., 23rd | 7 |\n * | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | K | 1, 2, ..., 11, 0 | |\n * | | Ko | 1st, 2nd, ..., 11th, 0th | 7 |\n * | | KK | 01, 02, ..., 11, 00 | |\n * | Hour [1-24] | k | 24, 1, 2, ..., 23 | |\n * | | ko | 24th, 1st, 2nd, ..., 23rd | 7 |\n * | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | m | 0, 1, ..., 59 | |\n * | | mo | 0th, 1st, ..., 59th | 7 |\n * | | mm | 00, 01, ..., 59 | |\n * | Second | s | 0, 1, ..., 59 | |\n * | | so | 0th, 1st, ..., 59th | 7 |\n * | | ss | 00, 01, ..., 59 | |\n * | Fraction of second | S | 0, 1, ..., 9 | |\n * | | SS | 00, 01, ..., 99 | |\n * | | SSS | 000, 001, ..., 999 | |\n * | | SSSS | ... | 3 |\n * | Timezone (ISO-8601 w/ Z) | X | -08, +0530, Z | |\n * | | XX | -0800, +0530, Z | |\n * | | XXX | -08:00, +05:30, Z | |\n * | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | x | -08, +0530, +00 | |\n * | | xx | -0800, +0530, +0000 | |\n * | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Timezone (GMT) | O...OOO | GMT-8, GMT+5:30, GMT+0 | |\n * | | OOOO | GMT-08:00, GMT+05:30, GMT+00:00 | 2 |\n * | Timezone (specific non-locat.) | z...zzz | GMT-8, GMT+5:30, GMT+0 | 6 |\n * | | zzzz | GMT-08:00, GMT+05:30, GMT+00:00 | 2,6 |\n * | Seconds timestamp | t | 512969520 | 7 |\n * | | tt | ... | 3,7 |\n * | Milliseconds timestamp | T | 512969520900 | 7 |\n * | | TT | ... | 3,7 |\n * | Long localized date | P | 04/29/1453 | 7 |\n * | | PP | Apr 29, 1453 | 7 |\n * | | PPP | April 29th, 1453 | 7 |\n * | | PPPP | Friday, April 29th, 1453 | 2,7 |\n * | Long localized time | p | 12:00 AM | 7 |\n * | | pp | 12:00:00 AM | 7 |\n * | | ppp | 12:00:00 AM GMT+2 | 7 |\n * | | pppp | 12:00:00 AM GMT+02:00 | 2,7 |\n * | Combination of date and time | Pp | 04/29/1453, 12:00 AM | 7 |\n * | | PPpp | Apr 29, 1453, 12:00:00 AM | 7 |\n * | | PPPppp | April 29th, 1453 at ... | 7 |\n * | | PPPPpppp| Friday, April 29th, 1453 at ... | 2,7 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table (e.g. `EEEEEEEEEEE`)\n * the output will be the same as default pattern for this unit, usually\n * the longest one (in case of ISO weekdays, `EEEE`). Default patterns for units\n * are marked with \"2\" in the last column of the table.\n *\n * `format(new Date(2017, 10, 6), 'MMM') //=> 'Nov'`\n *\n * `format(new Date(2017, 10, 6), 'MMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMM') //=> 'N'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMMM') //=> 'November'`\n *\n * 3. Some patterns could be unlimited length (such as `yyyyyyyy`).\n * The output will be padded with zeros to match the length of the pattern.\n *\n * `format(new Date(2017, 10, 6), 'yyyyyyyy') //=> '00002017'`\n *\n * 4. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 5. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` always returns the last two digits of a year,\n * while `uu` pads single digit years to 2 characters and returns other years unchanged:\n *\n * | Year | `yy` | `uu` |\n * |------|------|------|\n * | 1 | 01 | 01 |\n * | 14 | 14 | 14 |\n * | 376 | 76 | 376 |\n * | 1453 | 53 | 1453 |\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [getISOWeekYear]{@link https://date-fns.org/docs/getISOWeekYear}\n * and [getWeekYear]{@link https://date-fns.org/docs/getWeekYear}).\n *\n * 6. Specific non-location timezones are currently unavailable in `date-fns`,\n * so right now these tokens fall back to GMT timezones.\n *\n * 7. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `t`: seconds timestamp\n * - `T`: milliseconds timestamp\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 8. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n * You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 9. `D` and `DD` tokens represent days of the year but they are often confused with days of the month.\n * You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * @param {Date|Number} date - the original date\n * @param {String} format - the string of tokens\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {Number} [options.firstWeekContainsDate=1] - the day of January, which is\n * @param {Boolean} [options.useAdditionalWeekYearTokens=false] - if true, allows usage of the week-numbering year tokens `YY` and `YYYY`;\n * see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @param {Boolean} [options.useAdditionalDayOfYearTokens=false] - if true, allows usage of the day of year tokens `D` and `DD`;\n * see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @returns {String} the formatted date string\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `options.locale` must contain `localize` property\n * @throws {RangeError} `options.locale` must contain `formatLong` property\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} format string contains an unescaped latin alphabet character\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * const result = format(new Date(2014, 1, 11), 'MM/dd/yyyy')\n * //=> '02/11/2014'\n *\n * @example\n * // Represent 2 July 2014 in Esperanto:\n * import { eoLocale } from 'date-fns/locale/eo'\n * const result = format(new Date(2014, 6, 2), \"do 'de' MMMM yyyy\", {\n * locale: eoLocale\n * })\n * //=> '2-a de julio 2014'\n *\n * @example\n * // Escape string by single quote characters:\n * const result = format(new Date(2014, 6, 2, 15), \"h 'o''clock'\")\n * //=> \"3 o'clock\"\n */\n\nexport default function format(dirtyDate, dirtyFormatStr, options) {\n var _ref, _options$locale, _ref2, _ref3, _ref4, _options$firstWeekCon, _options$locale2, _options$locale2$opti, _defaultOptions$local, _defaultOptions$local2, _ref5, _ref6, _ref7, _options$weekStartsOn, _options$locale3, _options$locale3$opti, _defaultOptions$local3, _defaultOptions$local4;\n requiredArgs(2, arguments);\n var formatStr = String(dirtyFormatStr);\n var defaultOptions = getDefaultOptions();\n var locale = (_ref = (_options$locale = options === null || options === void 0 ? void 0 : options.locale) !== null && _options$locale !== void 0 ? _options$locale : defaultOptions.locale) !== null && _ref !== void 0 ? _ref : defaultLocale;\n var firstWeekContainsDate = toInteger((_ref2 = (_ref3 = (_ref4 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale2 = options.locale) === null || _options$locale2 === void 0 ? void 0 : (_options$locale2$opti = _options$locale2.options) === null || _options$locale2$opti === void 0 ? void 0 : _options$locale2$opti.firstWeekContainsDate) !== null && _ref4 !== void 0 ? _ref4 : defaultOptions.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : 1);\n\n // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n var weekStartsOn = toInteger((_ref5 = (_ref6 = (_ref7 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale3 = options.locale) === null || _options$locale3 === void 0 ? void 0 : (_options$locale3$opti = _options$locale3.options) === null || _options$locale3$opti === void 0 ? void 0 : _options$locale3$opti.weekStartsOn) !== null && _ref7 !== void 0 ? _ref7 : defaultOptions.weekStartsOn) !== null && _ref6 !== void 0 ? _ref6 : (_defaultOptions$local3 = defaultOptions.locale) === null || _defaultOptions$local3 === void 0 ? void 0 : (_defaultOptions$local4 = _defaultOptions$local3.options) === null || _defaultOptions$local4 === void 0 ? void 0 : _defaultOptions$local4.weekStartsOn) !== null && _ref5 !== void 0 ? _ref5 : 0);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n if (!locale.localize) {\n throw new RangeError('locale must contain localize property');\n }\n if (!locale.formatLong) {\n throw new RangeError('locale must contain formatLong property');\n }\n var originalDate = toDate(dirtyDate);\n if (!isValid(originalDate)) {\n throw new RangeError('Invalid time value');\n }\n\n // Convert the date in system timezone to the same date in UTC+00:00 timezone.\n // This ensures that when UTC functions will be implemented, locales will be compatible with them.\n // See an issue about UTC functions: https://github.com/date-fns/date-fns/issues/376\n var timezoneOffset = getTimezoneOffsetInMilliseconds(originalDate);\n var utcDate = subMilliseconds(originalDate, timezoneOffset);\n var formatterOptions = {\n firstWeekContainsDate: firstWeekContainsDate,\n weekStartsOn: weekStartsOn,\n locale: locale,\n _originalDate: originalDate\n };\n var result = formatStr.match(longFormattingTokensRegExp).map(function (substring) {\n var firstCharacter = substring[0];\n if (firstCharacter === 'p' || firstCharacter === 'P') {\n var longFormatter = longFormatters[firstCharacter];\n return longFormatter(substring, locale.formatLong);\n }\n return substring;\n }).join('').match(formattingTokensRegExp).map(function (substring) {\n // Replace two single quote characters with one single quote character\n if (substring === \"''\") {\n return \"'\";\n }\n var firstCharacter = substring[0];\n if (firstCharacter === \"'\") {\n return cleanEscapedString(substring);\n }\n var formatter = formatters[firstCharacter];\n if (formatter) {\n if (!(options !== null && options !== void 0 && options.useAdditionalWeekYearTokens) && isProtectedWeekYearToken(substring)) {\n throwProtectedError(substring, dirtyFormatStr, String(dirtyDate));\n }\n if (!(options !== null && options !== void 0 && options.useAdditionalDayOfYearTokens) && isProtectedDayOfYearToken(substring)) {\n throwProtectedError(substring, dirtyFormatStr, String(dirtyDate));\n }\n return formatter(utcDate, substring, locale.localize, formatterOptions);\n }\n if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n throw new RangeError('Format string contains an unescaped latin alphabet character `' + firstCharacter + '`');\n }\n return substring;\n }).join('');\n return result;\n}\nfunction cleanEscapedString(input) {\n var matched = input.match(escapedStringRegExp);\n if (!matched) {\n return input;\n }\n return matched[1].replace(doubleQuoteRegExp, \"'\");\n}","import React, { Component, createRef } from 'react';\nimport isEqual from 'react-fast-compare';\nimport PropTypes from 'prop-types';\n\nimport Column from '../../../../layout/Column';\nimport Row from '../../../../layout/Row';\nimport Button from '../../../../components/Button';\n\nexport default class EditableListForm extends Component {\n static propTypes = {\n addValueOnFieldChange: PropTypes.bool,\n noLabels: PropTypes.bool,\n buttonName: PropTypes.string,\n buttonStyle: PropTypes.string,\n components: PropTypes.instanceOf(Array),\n displayType: PropTypes.string,\n disabled: PropTypes.bool,\n getMainFormButtonWidth: PropTypes.func,\n error: PropTypes.string,\n errorPersist: PropTypes.bool,\n onSubmit: PropTypes.func,\n validate: PropTypes.func,\n validationmessage: PropTypes.string,\n };\n\n static getMainFormValue(components) {\n const mainFormValue = new Array(components.length);\n\n components.forEach((component, index) => {\n mainFormValue[index] = component.props.value || undefined;\n });\n\n return mainFormValue;\n }\n\n constructor(props) {\n super(props);\n const {\n components,\n } = props;\n\n this.submitButtonRef = createRef();\n this.handleOnChange = this.handleOnChange.bind(this);\n this.submitForm = this.submitForm.bind(this);\n\n this.state = {\n components,\n errors: {},\n mainError: null,\n mainFormValue: EditableListForm.getMainFormValue(components),\n refs: [],\n };\n }\n\n componentDidMount() {\n const {\n addValueOnFieldChange,\n getMainFormButtonWidth,\n } = this.props;\n this.createRefs();\n\n if (getMainFormButtonWidth) {\n getMainFormButtonWidth(\n !addValueOnFieldChange\n ? this.submitButtonRef.current.clientWidth\n : 0,\n );\n }\n }\n\n static getDerivedStateFromProps(nextProps, prevState) {\n const state = {};\n const {\n components: propsComponents,\n } = nextProps;\n\n const {\n components: stateComponents,\n } = prevState;\n if (\n !isEqual(propsComponents, stateComponents)\n && !isEqual(\n EditableListForm.getMainFormValue(propsComponents),\n EditableListForm.getMainFormValue(stateComponents),\n )\n ) {\n state.mainFormValue = EditableListForm.getMainFormValue(propsComponents);\n state.components = propsComponents;\n }\n\n return state;\n }\n\n getFormCssClasses() {\n const { noLabels } = this.props;\n const cssClasses = ['tyk-editable-list__form'];\n\n if (noLabels) {\n cssClasses.push('no-labels');\n }\n\n return cssClasses.join(' ');\n }\n\n getButtonClassName() {\n const { buttonStyle, displayType } = this.props;\n const cssClasses = [];\n\n if (buttonStyle) {\n cssClasses.push(buttonStyle);\n }\n\n if (displayType) {\n cssClasses.push(displayType);\n }\n\n return cssClasses.join(' ');\n }\n\n getComponentsError(component) {\n const {\n error,\n errors,\n mainError,\n } = this.state;\n\n if (error || mainError) {\n errors[component.props.name] = 'true';\n } else if (!(error || mainError) && errors[component.props.name] === 'true') {\n delete errors[component.props.name];\n }\n\n return errors[component.props.name] ? errors[component.props.name].toString() : undefined;\n }\n\n createRefs() {\n const { components } = this.props;\n const refs = [];\n\n components.forEach(() => {\n refs.push(createRef());\n });\n\n this.setState({\n refs,\n });\n }\n\n validateValue(value, props) {\n const { mainError, errors } = this.state;\n const { error, errorPersist } = this.props;\n\n const validatorsNames = props.validate ? Object.keys(props.validate) : [];\n // if there is a general form error don't take field errors into consideration\n const tempState = {\n errors: (error || mainError) ? {} : Object.assign({}, errors),\n };\n let ok = true;\n\n // if the error should stay after changing fields values don't take actions\n if (errorPersist) {\n return tempState;\n }\n\n // validate each field from the form\n for (let i = 0; i < validatorsNames.length; i += 1) {\n const validator = props.validate[validatorsNames[i]];\n if (validator(value)) {\n tempState.errors[props.name] = props.validationmessages[validatorsNames[i]];\n ok = false;\n break;\n }\n }\n\n // if the field is ok delete its error\n if (ok) {\n delete tempState.errors[props.name];\n }\n\n tempState.mainError = null;\n\n return tempState;\n }\n\n hasMainFormErrors(errors) {\n const { components, errorPersist } = this.props;\n const { mainFormValue } = this.state;\n const tempState = {\n errors: Object.assign({}, errors),\n };\n\n if (errorPersist && mainFormValue.indexOf(undefined) === -1) {\n return false;\n }\n\n if (Object.keys(tempState.errors).length > 0) {\n return true;\n }\n\n components.forEach((component, index) => {\n tempState.errors = Object.assign(\n {},\n tempState.errors,\n this.validateValue(mainFormValue[index], component.props).errors,\n );\n });\n\n return Object.keys(tempState.errors).length > 0;\n }\n\n handleOnChange(component, index, value) {\n const { addValueOnFieldChange } = this.props;\n let tempState = this.state;\n\n tempState = Object.assign({}, tempState, this.validateValue(value, component.props));\n\n if (!tempState.errors[component.props.name]) {\n tempState.mainFormValue[index] = value;\n\n if (component.props.onChange) {\n component.props.onChange(value);\n }\n }\n\n this.setState(previousState => Object.assign({}, previousState, tempState), () => {\n if (addValueOnFieldChange) {\n this.submitForm();\n }\n });\n }\n\n resetForm() {\n const { refs } = this.state;\n const {\n components,\n } = this.props;\n\n refs.forEach((ref) => {\n if (ref.current?.reset) {\n ref.current.reset();\n }\n });\n\n this.setState({\n errors: {},\n mainError: null,\n mainFormValue: EditableListForm.getMainFormValue(components),\n });\n }\n\n showMainError(error) {\n this.setState({\n mainError: error,\n });\n }\n\n submitForm() {\n const { errors, mainFormValue } = this.state;\n const {\n errorPersist, onSubmit, validate, validationmessage,\n } = this.props;\n\n if (errorPersist) {\n onSubmit(mainFormValue);\n this.resetForm();\n }\n\n if (\n Object.keys(errors).length === 0\n && (onSubmit && typeof onSubmit === 'function')\n ) {\n if (validate) {\n if (validate(mainFormValue)) {\n this.showMainError(validationmessage);\n } else {\n onSubmit(mainFormValue);\n this.resetForm();\n }\n } else {\n onSubmit(mainFormValue);\n this.resetForm();\n }\n }\n }\n\n render() {\n const {\n addValueOnFieldChange, components, buttonName, disabled, displayType, error,\n } = this.props;\n const {\n mainError, refs, errors,\n } = this.state;\n\n return (\n
    \n
    \n \n {\n components.map((component, index) => {\n const ComponentName = component.name;\n const {\n onChange, value, ...rest\n } = component.props;\n\n return (\n \n \n \n );\n })\n }\n \n {\n !addValueOnFieldChange\n ? (\n \n \n { buttonName || 'ADD' }\n \n \n )\n : null\n }\n
    \n {\n error || mainError\n ? (\n
    \n

    \n { error || mainError }\n

    \n
    \n )\n : null\n }\n
    \n );\n }\n}\n","import React, { Component, Fragment, createRef } from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport { fromJS } from 'immutable';\n\nimport format from 'date-fns/format';\nimport isDate from 'date-fns/isDate';\n\nimport EditableListForm from './js/EditableListForm';\nimport Column from '../../../layout/Column';\nimport Icon from '../../../components/Icon';\nimport Row from '../../../layout/Row';\n\nexport default class EditableList extends Component {\n static propTypes = {\n addValueOnFieldChange: PropTypes.bool,\n disabled: PropTypes.bool,\n error: PropTypes.string,\n config: PropTypes.instanceOf(Object),\n onChange: PropTypes.func,\n label: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.func,\n PropTypes.string,\n ]),\n value: PropTypes.oneOfType([\n PropTypes.instanceOf(Array),\n PropTypes.instanceOf(Object),\n ]),\n };\n\n static getItemListValue(itemValue) {\n let tempValue = null;\n\n if (typeof itemValue === 'string') {\n tempValue = itemValue;\n }\n\n if (Object.prototype.toString.call(itemValue) === '[object Object]') {\n tempValue = itemValue.name;\n }\n\n if (isDate(itemValue)) {\n tempValue = format(itemValue, 'dd/MM/yyyy');\n }\n\n return tempValue;\n }\n\n static getListItemCssClass(displayType) {\n const cssClasses = [];\n\n if (displayType === 'inline') {\n cssClasses.push('tyk-editable-list-item--inline');\n }\n\n return cssClasses.join(' ');\n }\n\n constructor(props) {\n super(props);\n const {\n value,\n } = this.props;\n\n this.state = {\n initialValue: value || '',\n value: value || [],\n buttonWidth: 0,\n };\n\n this.startIndex = 1;\n\n this.handleFormSubmit = this.handleFormSubmit.bind(this);\n this.getMainFormButtonWidth = this.getMainFormButtonWidth.bind(this);\n this.dropdownListItemRef = createRef();\n }\n\n static getDerivedStateFromProps(nextProps, prevState) {\n const state = {};\n\n if (\n nextProps.value && JSON.stringify(nextProps.value)\n !== JSON.stringify(prevState.initialValue)\n ) {\n state.value = nextProps.value || [];\n state.initialValue = nextProps.value || '';\n }\n\n return state.value ? state : null;\n }\n\n getListItemsCssClass(displayType) {\n const { config } = this.props;\n const cssClasses = ['tyk-editable-list-items'];\n\n cssClasses.push(config.displayType || 'table');\n\n if (displayType === 'inline') {\n cssClasses.push('tyk-editable-list-items--inline');\n }\n\n return cssClasses.join(' ');\n }\n\n getFormInputKey() {\n this.startIndex += 1;\n return this.startIndex;\n }\n\n // generate list item value's based on the display types\n // table, inline, list\n getListItemText(itemData) {\n const { config } = this.props;\n let value = null;\n\n switch (config.displayType) {\n case 'list':\n case 'inline': {\n const itemText = itemData.value.reduce((prevValue, itemValue, index) => {\n const tempValue = EditableList.getItemListValue(itemValue);\n let separator = ', ';\n\n if (index === itemData.value.length - 1) {\n separator = '';\n }\n\n return prevValue + tempValue + separator;\n }, '');\n\n value = itemText;\n\n break;\n }\n default:\n value = (\n \n {\n config.components.map((component, index) => (\n \n { EditableList.getItemListValue(itemData.value[index]) }\n \n ))\n }\n \n );\n\n break;\n }\n\n return value;\n }\n\n getMainFormButtonWidth(value) {\n this.setState({\n buttonWidth: value,\n });\n }\n\n setItemEditMode(index) {\n const newValues = this.closeListItems();\n\n this.setState((previousState) => {\n const tempState = Object.assign({}, previousState);\n tempState.value = newValues;\n tempState.value[index].editMode = !tempState.value[index].editMode;\n\n return tempState;\n });\n }\n\n isInList(index, itemValue) {\n const { value } = this.state;\n let ok = false;\n\n value.forEach((item, itemIndex) => {\n if (JSON.stringify(item.value) === JSON.stringify(itemValue)) {\n if (index >= 0 && itemIndex === index) {\n ok = false;\n } else {\n ok = true;\n }\n }\n });\n\n return ok;\n }\n\n addValues(newValue) {\n const { value } = this.state;\n const { config } = this.props;\n const itemValue = {\n editMode: false,\n value: newValue,\n };\n const tempState = {\n value: value.slice(0),\n };\n\n if (config.children) {\n itemValue.children = [];\n }\n\n tempState.value.push(itemValue);\n\n return tempState;\n }\n\n removeListItem(index) {\n let removedItem;\n this.setState((previousState) => {\n const valueArr = previousState.value.slice(0);\n removedItem = valueArr.splice(index, 1);\n\n return {\n value: valueArr,\n };\n }, () => {\n this.triggerOnChange(index, removedItem, null);\n });\n }\n\n handleFormSubmit(value) {\n const tempState = this.addValues(value);\n this.setState(previousState => Object.assign({}, previousState, tempState), () => {\n this.triggerOnChange(tempState.value.length - 1, null, value);\n });\n }\n\n handleItemUpdate(index, value) {\n let prevValue;\n this.setState((previousState) => {\n const tempState = Object.assign({}, previousState);\n prevValue = fromJS(tempState.value[index].value).toJS();\n tempState.value[index].value = value;\n tempState.value[index].editMode = false;\n\n return tempState;\n }, () => {\n this.triggerOnChange(index, prevValue, value);\n });\n }\n\n handleChildrenOnChange(index, value) {\n let prevValue;\n this.setState((previousState) => {\n const tempState = Object.assign({}, previousState);\n prevValue = fromJS(tempState.value[index].children).toJS();\n tempState.value[index].children = value;\n\n return tempState;\n }, () => {\n this.triggerOnChange(index, prevValue, value);\n });\n }\n\n closeListItems() {\n const { value } = this.state;\n\n const newValues = value.map((itemValue) => {\n const tempItemValue = Object.assign({}, itemValue);\n\n if (tempItemValue.editMode) {\n tempItemValue.editMode = false;\n return tempItemValue;\n }\n\n return tempItemValue;\n });\n\n return newValues;\n }\n\n triggerOnChange(index, prevValue, nextValue) {\n const { onChange } = this.props;\n const { value } = this.state;\n\n if (onChange && typeof onChange === 'function') {\n onChange(((value.length) ? value : null), index, prevValue, nextValue);\n }\n }\n\n genListItem(itemData, index) {\n const { config, disabled } = this.props;\n const { buttonWidth, value } = this.state;\n\n const clonedComponents = fromJS(config.components).toJS();\n\n itemData.value.forEach((itemValue, itemIndex) => {\n clonedComponents[itemIndex].props.value = itemValue;\n });\n\n return (\n \n \n {\n !itemData.editMode\n ? (\n \n { this.getListItemText(itemData, index) }\n \n \n \n \n \n )\n : (\n \n \n \n \n )\n }\n \n {\n config.children\n ? (\n \n )\n : null\n }\n \n );\n }\n\n genList() {\n const { config } = this.props;\n const { buttonWidth, value } = this.state;\n\n if (!value || value.length === 0) {\n return null;\n }\n\n return (\n \n {\n config.displayType === 'table' || !config.displayType\n ? (\n \n \n {\n config.components.map((component, index) => (\n \n { component.props.label }\n \n ))\n }\n \n \n )\n : null\n }\n
      \n {\n value.map((itemData, index) => this.genListItem(itemData, index))\n }\n
    \n
    \n );\n }\n\n render() {\n const {\n addValueOnFieldChange, config, error, disabled, label,\n } = this.props;\n const appendToElement = document.querySelector(config.appendTo) || document.querySelector('body');\n\n return (\n
    \n {\n label\n ? \n : null\n }\n \n {\n config.appendTo\n ? ReactDOM.createPortal(\n this.genList(),\n appendToElement,\n )\n : this.genList()\n }\n
    \n );\n }\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport Button from '../../../components/Button';\n\nconst Header = ({\n label, addButtonName, onAddRow, disabled, readOnly,\n}) => (\n
    \n {\n label\n ? \n : null\n }\n {!disabled && !readOnly && (\n \n {addButtonName || 'Add'}\n \n )}\n
    \n);\n\nHeader.propTypes = {\n disabled: PropTypes.bool,\n readOnly: PropTypes.bool,\n onAddRow: PropTypes.func,\n addButtonName: PropTypes.string,\n label: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.element,\n PropTypes.node,\n ]),\n};\n\nexport default Header;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nconst ListHeader = ({\n fields,\n readOnly,\n}) => (\n
  • \n {\n fields.map(field => (\n
    {field?.props?.label}
    \n ))\n }\n
    Delete
    \n
  • \n);\n\nListHeader.propTypes = {\n fields: PropTypes.instanceOf(Array),\n readOnly: PropTypes.bool,\n};\n\nexport default ListHeader;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Button from '../../../components/Button';\n\nconst FieldsList = ({\n fields,\n disabled,\n readOnly,\n errors,\n components,\n onChange,\n onDelete,\n value,\n rowIndex,\n}) => (\n
  • \n {\n components.map((Component, index) => {\n let field = fields[index];\n let tempField = typeof field === 'function' ? field(rowIndex, index) : field;\n return (\n /* eslint-disable-next-line */\n
    \n \n
    \n );\n })\n }\n
    \n \n
    \n
  • \n);\n\nFieldsList.propTypes = {\n disabled: PropTypes.bool,\n readOnly: PropTypes.bool,\n rowIndex: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number,\n ]),\n fields: PropTypes.instanceOf(Array),\n errors: PropTypes.instanceOf(Array),\n components: PropTypes.instanceOf(Array),\n value: PropTypes.instanceOf(Array),\n onChange: PropTypes.func,\n onDelete: PropTypes.func,\n};\n\nexport default FieldsList;\n","const validateValues = (fields, rowValues) => (rowValues || [[undefined, undefined]])?.map(\n colValue => colValue?.map(\n (value, index) => fields?.[index]?.props?.validate\n && fields[index].props.validate(value),\n ),\n);\n\nexport default validateValues;\n","import React, { useCallback, useState } from 'react';\n\nconst withValidation = Component => ({\n onChange,\n validate,\n error,\n ...rest\n}) => {\n const [internalError, setInternalError] = useState(null);\n const onFieldChange = useCallback((event) => {\n /* eslint-disable-next-line */\n const value = event?.target\n ? ['radio', 'checkbox'].includes(event.target.type)\n ? event.target.checked\n : event?.target.value\n : event;\n\n let isValid = true;\n if (validate && typeof validate === 'function') {\n const errorMsg = validate(value);\n isValid = !errorMsg;\n setInternalError(errorMsg);\n }\n\n onChange(value, isValid);\n }, [validate, onChange]);\n\n return ;\n};\n\nexport default withValidation;\n","import React, { useMemo, useState } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Header from './Header';\nimport ListHeader from './ListHeader';\nimport FieldsList from './FieldsList';\nimport validateValues from './validate-values';\nimport withValidation from './with-validation';\n\nlet id = 1;\n/* eslint-disable-next-line */\nconst getUID = prefix => `${prefix}-${id++}`;\n\n/**\n * Editable list is a component, that lists rows of form elements (can have n elements on a row),\n * and stores the values of all the rows in an Array list\n */\nconst EditableList2 = ({\n addButtonName,\n disabled,\n readOnly,\n fields,\n label,\n error,\n value = [],\n onChange = () => {},\n hideOnEmpty = true,\n wrapperClassName = '',\n}) => {\n const [internalErrors, setInteranlErrors] = useState(null);\n\n const updateRowValue = (rowIndex, fieldIndex, componentValue, isValid) => {\n const tempValueArr = !value ? [] : [...value];\n\n if (!value) {\n tempValueArr[rowIndex] = [...new Array(fields.length)];\n tempValueArr[rowIndex][fieldIndex] = componentValue;\n } else {\n const tempValue = [...tempValueArr[rowIndex]];\n tempValue[fieldIndex] = componentValue;\n tempValueArr[rowIndex] = tempValue;\n tempValueArr[rowIndex].id = value[rowIndex].id;\n }\n\n if (internalErrors?.[rowIndex]?.[fieldIndex] && isValid) {\n const tempErrors = [...internalErrors];\n const tempFieldError = [...tempErrors[rowIndex]];\n tempFieldError[fieldIndex] = null;\n tempErrors[rowIndex] = tempFieldError;\n setInteranlErrors(tempErrors);\n }\n onChange(tempValueArr);\n };\n\n const hasErrors = errors => Boolean(errors?.flat()?.filter(Boolean).length);\n\n const Components = useMemo(\n () => fields.map(field => {\n let tempField = typeof field === 'function' ? field() : field;\n\n return withValidation(tempField?.component || <>)\n }),\n [],\n );\n\n const onAddRow = () => {\n const errors = validateValues(fields, value);\n\n if (hasErrors(errors)) {\n setInteranlErrors(errors);\n return;\n }\n\n const newValue = [...new Array(fields.length)];\n newValue.id = getUID('row');\n\n onChange([\n ...value && value,\n newValue,\n ]);\n };\n\n const deleteRow = (index) => {\n if (!value) {\n return;\n }\n const tempValue = [...value];\n tempValue.splice(index, 1);\n onChange(tempValue);\n };\n\n return (\n
    \n \n {value?.length || !hideOnEmpty ? (\n
      \n {(value || [[]]).map((v, i) => (\n <>\n \n \n ))}\n \n
    \n ) : null}\n {error && error !== 'true' && error !== 'false' ? (\n

    {error}

    \n ) : null}\n
    \n );\n};\n\nEditableList2.propTypes = {\n /** Sets Editable list in edit mode.\n * If enabled all fields are disabled, the add button is hidden and delete button is disabled\n * */\n disabled: PropTypes.bool,\n /** Sets Editable list in read only mode.\n * If enabled all fields are displaying just the value,\n * the add button is hidden and delete button is disabled\n */\n readOnly: PropTypes.bool,\n /** Name of the Add button. By default has 'Add value' */\n addButtonName: PropTypes.string,\n /** Label of Editable list, is displayed above the list and inline with the Add button */\n label: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.element,\n PropTypes.node,\n ]),\n /** Array of form elements that you want the list to have\n * Each field is an object points to the Form element component that you want to use,\n * the props you want to apply on it,\n * and the size (as in width, it's like columns system, between 1 and 12)\n * Example:\n * ...\n * fields={[\n {\n component: Input2,\n styles: {\n width: \"200px\",\n },\n size: 4,\n props: {\n name: 'input',\n label: 'Claim name',\n theme: 'default rounded-corners',\n placeholder: 'Enter claim name',\n validate: formikRequired('This field is required')\n }\n },\n {\n component: Combobox2,\n size: 8,\n props: comboboxProps\n }\n ]}\n */\n fields: PropTypes.instanceOf(Array),\n /** onChange function is called everytime the value of editable list changes */\n onChange: PropTypes.func,\n /** value of editable list, wich is an Array (List of row values)\n * of Arrays (List of column values,\n * each column will have the value format depending on the component type)\n */\n value: PropTypes.oneOfType([\n PropTypes.instanceOf(Object),\n PropTypes.instanceOf(Array),\n ]),\n error: PropTypes.string,\n hideOnEmpty: PropTypes.bool,\n wrapperClassName: PropTypes.string,\n};\n\nexport default EditableList2;\n","import React, { Component, Fragment, createRef } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Icon from '../../../components/Icon';\n\nexport default class FileInput extends Component {\n static propTypes = {\n accept: PropTypes.string,\n disabled: PropTypes.bool,\n id: PropTypes.string,\n error: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.bool,\n ]),\n label: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.func,\n PropTypes.string,\n ]),\n labelwidth: PropTypes.string,\n name: PropTypes.string,\n note: PropTypes.string,\n onChange: PropTypes.func,\n placeholder: PropTypes.string,\n theme: PropTypes.string,\n value: PropTypes.instanceOf(Object),\n wrapperClassName: PropTypes.string,\n }\n\n constructor(props) {\n super(props);\n\n this.handleOnChange = this.handleOnChange.bind(this);\n this.clearValue = this.clearValue.bind(this);\n this.fileInputRef = createRef();\n }\n\n getCssClasses() {\n const {\n error, theme, labelwidth, wrapperClassName = '',\n } = this.props;\n const cssClasses = [wrapperClassName, 'tyk-form-group'];\n const themes = theme ? theme.split(' ') : [];\n\n if (themes.length) {\n themes.forEach((iTheme) => {\n cssClasses.push(`tyk-form-group--${iTheme}`);\n });\n }\n\n if (labelwidth) {\n cssClasses.push('tyk-form-group--label-has-width');\n }\n\n if (error) {\n cssClasses.push('has-error');\n }\n\n return cssClasses.join(' ');\n }\n\n getLabelStyles() {\n const { labelwidth } = this.props;\n const styles = {};\n\n if (labelwidth) {\n styles.flexBasis = labelwidth;\n }\n\n return styles;\n }\n\n getNonLabelWidth() {\n const { labelwidth } = this.props;\n const styles = {};\n\n if (labelwidth) {\n styles.flexBasis = `calc(100% - ${labelwidth} - 20px)`;\n }\n\n return styles;\n }\n\n getFileInputError() {\n const { error } = this.props;\n\n return (error && error !== 'true' && error !== 'false')\n ? (\n \n { error }\n

    \n )\n : null;\n }\n\n getFileInputComponent() {\n const {\n accept, value: omitValue, onChange, ...rest\n } = this.props;\n\n return (\n \n \n {\n this.fileInputRef.current && this.fileInputRef.current.files.length > 0\n ? (\n \n \n \n )\n : null\n }\n \n );\n }\n\n clearValue() {\n const { onChange } = this.props;\n this.fileInputRef.current.value = '';\n onChange('');\n }\n\n handleOnChange(e) {\n const { onChange } = this.props;\n\n onChange(e.target.files);\n }\n\n // eslint-disable-next-line class-methods-use-this\n reset() {}\n\n render() {\n const {\n id,\n label,\n note,\n } = this.props;\n\n return (\n \n
    \n {\n label\n ? \n : null\n }\n
    \n { this.getFileInputComponent() }\n {\n note\n ?

    { note }

    \n : null\n }\n
    \n { this.getFileInputError() }\n
    \n
    \n );\n }\n}\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\nexport default class Input extends Component {\n static propTypes = {\n disabled: PropTypes.bool,\n readOnly: PropTypes.bool,\n id: PropTypes.string,\n isfield: PropTypes.bool,\n error: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.bool,\n ]),\n inputgroupaddonleft: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]),\n inputgroupaddonright: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]),\n label: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.element,\n PropTypes.node,\n ]),\n labelwidth: PropTypes.string,\n name: PropTypes.string,\n note: PropTypes.string,\n onChange: PropTypes.func,\n placeholder: PropTypes.string,\n theme: PropTypes.string,\n value: PropTypes.oneOfType([\n PropTypes.number,\n PropTypes.string,\n ]),\n }\n\n static getAddon(content) {\n return (\n
    \n { content }\n
    \n );\n }\n\n constructor(props) {\n super(props);\n const {\n value,\n } = this.props;\n\n this.state = {\n initValue: value,\n stateValue: value,\n };\n\n this.handleOnChange = this.handleOnChange.bind(this);\n }\n\n componentDidUpdate(prevProps) {\n const {\n isfield,\n value,\n onChange,\n } = this.props;\n\n if (!isfield && prevProps.value !== value) {\n /* eslint-disable react/no-did-update-set-state */\n this.setState({\n stateValue: value,\n }, () => {\n if (onChange) {\n onChange(value);\n }\n });\n }\n }\n\n getLabelStyles() {\n const { labelwidth } = this.props;\n const styles = {};\n\n if (labelwidth) {\n styles.flexBasis = labelwidth;\n }\n\n return styles;\n }\n\n getNonLabelWidth() {\n const { labelwidth } = this.props;\n const styles = {};\n\n if (labelwidth) {\n styles.flexBasis = `calc(100% - ${labelwidth} - 20px)`;\n }\n\n return styles;\n }\n\n getInputError() {\n const { error } = this.props;\n\n return (error && error !== 'true' && error !== 'false')\n ? (\n \n { error }\n

    \n )\n : null;\n }\n\n getCssClasses() {\n const {\n error,\n theme,\n labelwidth,\n inputgroupaddonleft,\n inputgroupaddonright,\n } = this.props;\n const cssClasses = ['tyk-form-group'];\n const themes = theme ? theme.split(' ') : [];\n\n if (themes.length) {\n themes.forEach((iTheme) => {\n cssClasses.push(`tyk-form-group--${iTheme}`);\n });\n }\n\n if (inputgroupaddonleft) {\n cssClasses.push('tyk-form-group--addon-left');\n }\n\n if (inputgroupaddonright) {\n cssClasses.push('tyk-form-group--addon-right');\n }\n\n if (labelwidth) {\n cssClasses.push('tyk-form-group--label-has-width');\n }\n\n if (error) {\n cssClasses.push('has-error');\n }\n\n return cssClasses.join(' ');\n }\n\n getInputGroupAddon() {\n const {\n inputgroupaddonleft,\n inputgroupaddonright,\n } = this.props;\n\n return (\n
    \n {\n inputgroupaddonleft\n ? Input.getAddon(inputgroupaddonleft)\n : null\n }\n { this.getInputComponent() }\n {\n inputgroupaddonright\n ? Input.getAddon(inputgroupaddonright)\n : null\n }\n
    \n );\n }\n\n getInputComponent() {\n const {\n isfield, onChange, value, ...rest\n } = this.props;\n const { stateValue } = this.state;\n return (\n \n );\n }\n\n reset() {\n const { initValue } = this.state;\n\n this.setState({\n stateValue: initValue,\n });\n }\n\n handleOnChange(e) {\n const { onChange, isfield } = this.props;\n const inputValue = e.target.value;\n\n if (!isfield) {\n this.setState({\n stateValue: inputValue,\n }, () => {\n if (onChange) {\n onChange(inputValue);\n }\n });\n } else {\n onChange(inputValue);\n }\n }\n\n render() {\n const {\n label,\n id,\n inputgroupaddonleft,\n inputgroupaddonright,\n note,\n readOnly,\n value,\n } = this.props;\n\n return (\n
    \n {\n label\n ? \n : null\n }\n {!readOnly && (\n \n {\n inputgroupaddonleft || inputgroupaddonright\n ? this.getInputGroupAddon()\n : this.getInputComponent()\n }\n {\n note\n ?

    { note }

    \n : null\n }\n { this.getInputError() }\n
    \n )}\n {\n readOnly &&
    {value || '-'}
    \n }\n \n );\n }\n}\n","import React, { useImperativeHandle, useRef, forwardRef } from 'react';\nimport PropTypes from 'prop-types';\n\nconst Input2 = forwardRef(({\n error,\n onChange,\n readOnly,\n id,\n inputgroupaddonleft,\n inputgroupaddonright,\n label,\n labelwidth,\n note,\n theme,\n value,\n wrapperClassName = '',\n ...rest\n}, ref) => {\n const inputRef = useRef();\n\n useImperativeHandle(ref, () => ({\n focus: () => {\n inputRef.current.focus();\n },\n }));\n\n const getAddon = content => (\n
    \n { content }\n
    \n );\n\n const getLabelStyles = () => ({\n ...labelwidth && {\n flexBasis: labelwidth,\n },\n });\n\n const getNonLabelWidth = () => ({\n ...labelwidth && {\n flexBasis: `calc(100% - ${labelwidth} - 20px)`,\n },\n });\n\n const getInputError = () => (\n (error && error !== 'true' && error !== 'false')\n ? (\n \n { error }\n

    \n )\n : null\n );\n\n const getCssClasses = () => {\n const cssClasses = [wrapperClassName, 'tyk-form-group'];\n const themes = theme ? theme.split(' ') : [];\n\n if (themes.length) {\n themes.forEach((iTheme) => {\n cssClasses.push(`tyk-form-group--${iTheme}`);\n });\n }\n\n if (inputgroupaddonleft) {\n cssClasses.push('tyk-form-group--addon-left');\n }\n\n if (inputgroupaddonright) {\n cssClasses.push('tyk-form-group--addon-right');\n }\n\n if (labelwidth) {\n cssClasses.push('tyk-form-group--label-has-width');\n }\n\n if (error) {\n cssClasses.push('has-error');\n }\n\n return cssClasses.join(' ');\n };\n\n const handleOnChange = (e) => {\n onChange(e, e.target.value);\n };\n\n const getInputElement = () => (\n \n );\n\n const getInputGroupAddon = () => (\n
    \n {\n inputgroupaddonleft\n ? getAddon(inputgroupaddonleft)\n : null\n }\n { getInputElement() }\n {\n inputgroupaddonright\n ? getAddon(inputgroupaddonright)\n : null\n }\n
    \n );\n\n return (\n
    \n {\n label\n ? \n : null\n }\n {!readOnly && (\n \n {\n inputgroupaddonleft || inputgroupaddonright\n ? getInputGroupAddon()\n : getInputElement()\n }\n {\n note\n ?

    { note }

    \n : null\n }\n { getInputError() }\n
    \n )}\n {\n readOnly && (\n
    \n {value || '-'}\n
    \n )\n }\n \n );\n});\n\nInput2.propTypes = {\n disabled: PropTypes.bool,\n readOnly: PropTypes.bool,\n id: PropTypes.string,\n error: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.bool,\n ]),\n inputgroupaddonleft: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]),\n inputgroupaddonright: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]),\n label: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.element,\n PropTypes.node,\n ]),\n labelwidth: PropTypes.string,\n name: PropTypes.string,\n note: PropTypes.string,\n onChange: PropTypes.func,\n placeholder: PropTypes.string,\n theme: PropTypes.string,\n value: PropTypes.oneOfType([\n PropTypes.number,\n PropTypes.string,\n ]),\n wrapperClassName: PropTypes.string,\n};\n\nexport default Input2;\n","import { createContext } from 'react';\n\nconst MultiselectContext = createContext();\n\nexport default MultiselectContext;\n","import React, { Component, Fragment } from 'react';\nimport PropTypes from 'prop-types';\n\nimport MultiselectContext from './MultiselectContext';\nimport Button from '../../../../components/Button';\nimport Collapsible from '../../../../components/Collapsible';\nimport Loader from '../../../../components/Loader';\n\nconst getItemContent = (context, item) => (\n context.detailsDisplayTemplate\n ? context.detailsDisplayTemplate(item)\n : JSON.stringify(item.details)\n);\n\nconst getItemLoader = (context, item) => {\n const { opened } = context;\n\n return opened[item.id]\n ? \n : null;\n};\n\nclass MultiselectItem extends Component {\n static propTypes = {\n item: PropTypes.instanceOf(Object),\n itemType: PropTypes.string,\n searchValue: PropTypes.string,\n onChange: PropTypes.func,\n };\n\n isInSearchValue(fieldsToSearchOn) {\n const { searchValue, item } = this.props;\n\n if (fieldsToSearchOn && fieldsToSearchOn.length > 0) {\n let fields = fieldsToSearchOn.slice(0);\n\n fields = fields.filter(key => item[key] && item[key].search(searchValue) > -1);\n\n return fields.length > 0;\n }\n\n return JSON.stringify(item).search(searchValue) > -1;\n }\n\n render() {\n const {\n item,\n itemType,\n onChange,\n } = this.props;\n\n return (\n \n \n {\n context => (\n this.isInSearchValue(context.fieldsToSearchOn)\n ? (\n
  • \n
    \n \n {\n context.itemDisplayTemplate\n ? context.itemDisplayTemplate(item)\n : JSON.stringify(item)\n }\n \n \n \n \n \n
    \n {\n item.details\n ? (\n \n {getItemContent(context, item)}\n \n )\n : getItemLoader(context, item)\n }\n
  • \n )\n : null\n )\n }\n
    \n
    \n );\n }\n}\n\nexport default MultiselectItem;\n","import React, { Component, createRef } from 'react';\nimport PropTypes from 'prop-types';\nimport { fromJS } from 'immutable';\n\nimport Input from '../../Input';\nimport Icon from '../../../../components/Icon';\nimport Message from '../../../../components/Message';\nimport InfiniteScroller from '../../../../components/InfiniteScroller';\nimport MultiselectItem from './MultiselectItem';\n\nclass MultiselectPanel extends Component {\n static propTypes = {\n customSearch: PropTypes.bool,\n onCustomSearch: PropTypes.func,\n panelType: PropTypes.string,\n onChange: PropTypes.func,\n items: PropTypes.instanceOf(Array),\n itemsPageNumber: PropTypes.number,\n itemsNrPages: PropTypes.number,\n inputPlaceholder: PropTypes.string,\n loadMoreItems: PropTypes.func,\n noItemsMessage: PropTypes.string,\n serverLoad: PropTypes.bool,\n };\n\n state = {\n searchValue: '',\n };\n\n constructor(props) {\n super(props);\n\n this.searchOnChange = this.searchOnChange.bind(this);\n this.itemChanged = this.itemChanged.bind(this);\n this.itemIndex = 0;\n this.itemsListRef = createRef();\n }\n\n getItemIndex() {\n this.itemIndex += 1;\n\n return this.itemIndex;\n }\n\n getItemsList() {\n const {\n itemsPageNumber,\n itemsNrPages,\n loadMoreItems,\n serverLoad,\n } = this.props;\n\n return (\n serverLoad\n ? (\n itemsPageNumber}\n loadMore={loadMoreItems}\n pageNumber={itemsPageNumber}\n >\n { this.renderListItems() }\n \n )\n : this.renderListItems()\n );\n }\n\n searchOnChange(value) {\n const { onCustomSearch } = this.props;\n\n if (!onCustomSearch) {\n this.setState({\n searchValue: value,\n });\n } else {\n onCustomSearch(value);\n }\n }\n\n itemChanged(item) {\n const { items, onChange } = this.props;\n\n let cloneItems = fromJS(items).toJS();\n cloneItems = cloneItems.filter(clonedItem => item.id !== clonedItem.id);\n\n onChange(cloneItems, item);\n }\n\n renderListItems() {\n const {\n customSearch, items, panelType, serverLoad,\n } = this.props;\n const { searchValue } = this.state;\n return (\n \n {\n items.map(item => (\n \n ))\n }\n \n );\n }\n\n render() {\n const {\n inputPlaceholder,\n noItemsMessage,\n items,\n } = this.props;\n const { searchValue } = this.state;\n\n return (\n
    \n \n }\n name=\"search\"\n onChange={this.searchOnChange}\n placeholder={inputPlaceholder}\n value={searchValue}\n />\n {\n items.length\n ? this.getItemsList()\n : (\n \n { noItemsMessage }\n \n )\n }\n
    \n );\n }\n}\n\nexport default MultiselectPanel;\n","import React, { Component, Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport { fromJS } from 'immutable';\n\nimport MultiselectPanel from './js/MultiselectPanel';\nimport MultiselectContext from './js/MultiselectContext';\n\nconst diffObjects = (value, items) => {\n const newItems = items.filter((item) => {\n const isCommon = value.filter(selectedItem => selectedItem.id === item.id).length > 0;\n\n return !isCommon;\n });\n\n return newItems;\n};\n\nclass Multiselect extends Component {\n static propTypes = {\n customSearch: PropTypes.func,\n disabled: PropTypes.bool,\n error: PropTypes.string,\n entityNamePlural: PropTypes.string,\n items: PropTypes.instanceOf(Array),\n itemDisplayTemplate: PropTypes.func,\n detailsDisplayTemplate: PropTypes.func,\n fieldsToSearchOn: PropTypes.instanceOf(Array),\n onChange: PropTypes.func,\n getItemDetails: PropTypes.func,\n itemsPageNumber: PropTypes.number,\n itemsNrPages: PropTypes.number,\n loadMoreItems: PropTypes.func,\n note: PropTypes.string,\n maxSelections: PropTypes.number,\n value: PropTypes.instanceOf(Array),\n wrapperClassName: PropTypes.string,\n };\n\n state = {\n opened: {},\n };\n\n constructor(props) {\n super(props);\n\n this.valueChange = this.valueChange.bind(this);\n this.itemsChange = this.itemsChange.bind(this);\n }\n\n onGetItemDetails(item) {\n const { getItemDetails } = this.props;\n\n this.setState((prevState) => {\n const tempState = Object.assign({}, prevState);\n tempState.opened[item.id] = !tempState.opened[item.id];\n\n return tempState;\n }, () => {\n if (getItemDetails) {\n getItemDetails(item);\n }\n });\n }\n\n getMultiselectError() {\n const { error } = this.props;\n\n return (error && error !== 'true' && error !== 'false')\n ? (\n \n { error }\n

    \n )\n : null;\n }\n\n getCssClasses() {\n const { error, wrapperClassName = '' } = this.props;\n const cssClasses = [wrapperClassName, 'tyk-multiselect'];\n\n if (error) {\n cssClasses.push('has-error');\n }\n\n return cssClasses.join(' ');\n }\n\n itemsChange(allItems, item) {\n const { value, onChange } = this.props;\n const valueClone = fromJS(value).toJS();\n\n valueClone.unshift(item);\n\n onChange(valueClone, item, 'added');\n }\n\n valueChange(value, item) {\n const { items, onChange } = this.props;\n const allItemsClone = fromJS(items).toJS();\n\n allItemsClone.unshift(item);\n\n onChange(value, item, 'removed');\n }\n\n render() {\n const {\n customSearch,\n entityNamePlural,\n disabled,\n itemDisplayTemplate,\n detailsDisplayTemplate,\n fieldsToSearchOn,\n items,\n itemsPageNumber,\n itemsNrPages,\n loadMoreItems,\n maxSelections,\n note,\n value,\n } = this.props;\n const { opened } = this.state;\n\n return (\n \n
    \n \n
    \n
    \n { value.length }\n {' '}\n Selected\n {' '}\n { entityNamePlural }\n
    \n
    \n Select from existing\n { entityNamePlural }\n
    \n
    \n
    \n \n \n
    \n \n
    \n
    \n {\n note\n ?

    { note }

    \n : null\n }\n
    \n { this.getMultiselectError() }\n
    \n );\n }\n}\n\nexport default Multiselect;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\n\n/**\n * Radio can be used when a user needs to select at most one value from a multiple options.\n */\nexport default class Radio extends Component {\n static propTypes = {\n /** Used to disable the element */\n disabled: PropTypes.bool,\n /** Readonly prop behaves the same as disabled on radio elements */\n readOnly: PropTypes.bool,\n /** Align radio with in same line with other elements */\n inline: PropTypes.bool,\n /** Set a theme for radio */\n theme: PropTypes.string,\n input: PropTypes.instanceOf(Object),\n /** Adds label to the radio input */\n label: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.func,\n PropTypes.string,\n ]),\n /** Set name for the radio input */\n name: PropTypes.string,\n /** If set to true removes margin by adding `no-margin` class */\n nospace: PropTypes.bool,\n /** Set initial value for the radio input */\n value: PropTypes.string,\n /** Add note at the bottom of the radio input */\n note: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.element,\n PropTypes.node,\n ]),\n wrapperClassName: PropTypes.string,\n };\n\n getCssClasses() {\n const {\n inline, nospace, theme = '', disabled, readOnly, wrapperClassName = '',\n } = this.props;\n const cssClasses = [wrapperClassName];\n\n if (inline) {\n cssClasses.push('tyk-radio--inline');\n } else {\n cssClasses.push('tyk-radio');\n }\n\n if (nospace) {\n cssClasses.push('no-margin');\n }\n\n if (theme.trim()) {\n cssClasses.push(...theme.split(' ').map(t => `tyk-radio--theme-${t}`));\n }\n\n if (readOnly || disabled) {\n cssClasses.push('tyk-radio--is-disabled');\n }\n\n return cssClasses.join(' ');\n }\n\n render() {\n const {\n input, label, note, disabled, readOnly, ...rest\n } = this.props;\n return (\n \n \n

    {note}

    \n \n );\n }\n}\n","import React, { Component, Fragment } from 'react';\nimport PropTypes from 'prop-types';\n\nexport default class Select extends Component {\n static propTypes = {\n disabled: PropTypes.bool,\n readOnly: PropTypes.bool,\n id: PropTypes.string,\n isfield: PropTypes.bool,\n error: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.bool,\n ]),\n options: PropTypes.instanceOf(Array),\n label: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.func,\n PropTypes.string,\n ]),\n labelwidth: PropTypes.string,\n name: PropTypes.string,\n note: PropTypes.string,\n onBlur: PropTypes.func,\n onChange: PropTypes.func,\n placeholder: PropTypes.string,\n theme: PropTypes.string,\n value: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.object,\n ]),\n wrapperClassName: PropTypes.string,\n }\n\n constructor(props) {\n super(props);\n const {\n value,\n } = this.props;\n\n this.state = {\n initValue: value,\n stateValue: value,\n };\n\n this.handleOnChange = this.handleOnChange.bind(this);\n this.handleOnBlur = this.handleOnBlur.bind(this);\n }\n\n componentDidUpdate(prevProps) {\n const {\n isfield,\n value,\n onChange,\n } = this.props;\n\n if (!isfield && prevProps.value !== value) {\n /* eslint-disable react/no-did-update-set-state */\n this.setState({\n stateValue: value,\n }, () => {\n if (onChange) {\n onChange(value);\n }\n });\n }\n }\n\n getSelectComponent() {\n const {\n isfield, options, onChange, onBlur, value, ...rest\n } = this.props;\n const {\n stateValue,\n } = this.state;\n\n let selectValue = '';\n\n if (isfield && value) {\n selectValue = value;\n } else if (stateValue) {\n selectValue = stateValue;\n }\n\n return (\n \n {\n options.map(option => )\n }\n \n );\n }\n\n getSelectError() {\n const { error } = this.props;\n\n return (error && error !== 'true' && error !== 'false')\n ? (\n \n { error }\n

    \n )\n : null;\n }\n\n getCssClasses() {\n const {\n error, labelwidth, theme, wrapperClassName = '',\n } = this.props;\n const cssClasses = [wrapperClassName, 'tyk-form-group'];\n const themes = theme ? theme.split(' ') : [];\n\n if (themes.length) {\n themes.forEach((iTheme) => {\n cssClasses.push(`tyk-form-group--${iTheme}`);\n });\n }\n\n if (labelwidth) {\n cssClasses.push('tyk-form-group--label-has-width');\n }\n\n if (error) {\n cssClasses.push('has-error');\n }\n\n return cssClasses.join(' ');\n }\n\n getLabelStyles() {\n const { labelwidth } = this.props;\n const styles = {};\n\n if (labelwidth) {\n styles.flexBasis = labelwidth;\n }\n\n return styles;\n }\n\n getNonLabelWidth() {\n const { labelwidth } = this.props;\n const styles = {};\n\n if (labelwidth) {\n styles.flexBasis = `calc(100% - ${labelwidth} - 20px)`;\n }\n\n return styles;\n }\n\n handleOnBlur() {\n const { value, onBlur } = this.props;\n\n if (onBlur) {\n onBlur(value);\n }\n }\n\n handleOnChange(e) {\n const {\n onChange,\n isfield,\n options,\n } = this.props;\n let selectedValue = null;\n\n selectedValue = options.filter(option => option.id === e.target.value);\n [selectedValue] = selectedValue;\n\n if (!isfield) {\n this.setState({\n stateValue: selectedValue,\n }, () => {\n onChange(selectedValue.id ? selectedValue : null);\n });\n } else {\n onChange(selectedValue.id ? selectedValue : null);\n }\n }\n\n reset() {\n const { initValue } = this.state;\n\n this.setState({\n stateValue: initValue,\n });\n }\n\n render() {\n const {\n label,\n id,\n note,\n readOnly,\n value,\n } = this.props;\n\n return (\n \n
    \n {\n label\n ? \n : null\n }\n {!readOnly && (\n \n {\n this.getSelectComponent()\n }\n {\n note\n ?

    { note }

    \n : null\n }\n { this.getSelectError() }\n
    \n )}\n {readOnly &&
    {value || '-'}
    }\n \n
    \n );\n }\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport Message from '../../../components/Message';\nimport List from '../../../components/List';\nimport Icon from '../../../components/Icon';\n\nfunction SelectableList(props) {\n const {\n checkboxalticon,\n items,\n itemTemplate,\n value,\n noItemsMessage = 'No items in the list',\n onChange,\n theme,\n primaryKey,\n wrapperClassName = '',\n } = props;\n\n const handleOnSelect = (event) => {\n const newSelectedItems = structuredClone(value);\n const elemPosition = newSelectedItems.findIndex(\n (id) => JSON.stringify(id) === JSON.stringify(\n Array.isArray(id)\n ? event.target.value.split(',')\n : event.target.value,\n ),\n );\n\n if (event.target.checked && elemPosition === -1) {\n const tempValue = event.target.value.split(',');\n const finalValue = tempValue.length > 1 ? tempValue : event.target.value;\n\n newSelectedItems.push(finalValue);\n } else if (!event.target.checked && elemPosition > -1) {\n newSelectedItems.splice(elemPosition, 1);\n }\n\n if (onChange) {\n onChange(newSelectedItems);\n }\n };\n\n const getListItemCssClassName = (isActive) => {\n const cssClasses = [];\n\n if (checkboxalticon) {\n cssClasses.push('tyk-selectable-list__item--with-icon');\n }\n\n if (isActive) {\n cssClasses.push('tyk-selectable-list__item--active');\n }\n\n return cssClasses.join(' ');\n };\n\n const isChecked = (inputValue, itemValue) => Boolean(\n inputValue.find((tvalue) => JSON.stringify(itemValue) === JSON.stringify(tvalue)),\n );\n\n return (\n \n {\n !items.length\n ? (\n
  • \n \n {noItemsMessage}\n \n
  • \n )\n : items.map((item, index) => (\n \n \n \n ))\n }\n
    \n );\n}\n\nSelectableList.propTypes = {\n items: PropTypes.instanceOf(Array),\n itemTemplate: PropTypes.oneOfType([\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n PropTypes.func,\n ]),\n value: PropTypes.instanceOf(Array),\n onChange: PropTypes.func,\n primaryKey: PropTypes.string,\n noItemsMessage: PropTypes.string,\n checkboxalticon: PropTypes.oneOfType([\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n theme: PropTypes.string,\n wrapperClassName: PropTypes.string,\n};\n\nSelectableList.defaultProps = {\n items: [],\n primaryKey: 'id',\n value: [],\n};\n\nexport default SelectableList;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nfunction Textarea({\n id,\n input,\n label,\n note,\n error,\n theme,\n labelwidth,\n value,\n readOnly,\n wrapperClassName,\n ...rest\n}) {\n const classes = [\n 'tyk-form-group',\n wrapperClassName,\n ...(theme ? theme.split(' ').map((t) => `tyk-form-group--${t}`) : []),\n labelwidth && 'tyk-form-group--label-has-width',\n error && 'has-error',\n ].filter(Boolean).join(' ');\n\n const getLabelStyles = () => {\n if (labelwidth) return { flexBasis: labelwidth };\n return {};\n };\n\n const getNonLabelWidth = () => {\n if (labelwidth) return { flexBasis: `calc(100% - ${labelwidth} - 20px)` };\n return {};\n };\n\n function getTextareaError() {\n return (error && error !== 'true' && error !== 'false')\n ? (\n

    \n { error }\n

    \n )\n : null;\n }\n\n return (\n
    \n {\n label\n ? \n : null\n }\n {!readOnly && (\n \n \n { value }\n \n {\n note\n ?

    { note }

    \n : null\n }\n {getTextareaError()}\n
    \n )}\n {readOnly &&
    {value || '-'}
    }\n \n );\n}\n\nTextarea.propTypes = {\n /** Disable the component */\n disabled: PropTypes.bool,\n /** Displays only the text value of the component, or \"-\" if no value is set */\n readOnly: PropTypes.bool,\n input: PropTypes.instanceOf(Object),\n /** Set an error message for the component and the component is rendered in the error state */\n error: PropTypes.string,\n /** Adds a label to the component */\n label: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.func,\n PropTypes.string,\n ]),\n /** Sets the width of the label */\n labelwidth: PropTypes.string,\n /** Set a name for the component */\n name: PropTypes.string,\n /** Adds additional information under the component */\n note: PropTypes.string,\n /** Callback function executed on value change */\n onChange: PropTypes.func,\n id: PropTypes.string,\n /** Set a theme for the component */\n theme: PropTypes.string,\n /** Set the value of the component */\n value: PropTypes.string,\n /** CSS classes added to the wrapper of the component */\n wrapperClassName: PropTypes.string,\n};\n\nexport default Textarea;\n","import { createContext } from 'react';\n\nconst ToggleContext = createContext();\n\nexport default ToggleContext;\n","import React, { Component, createRef } from 'react';\nimport PropTypes from 'prop-types';\n\nclass ToggleItem extends Component {\n static getNotchCssClasses(context) {\n return ['tyk-toggle__item-notch', `tyk-toggle__item-notch--${context.type}`].join(' ');\n }\n\n constructor(props) {\n super(props);\n\n this.itemRef = createRef();\n }\n\n componentDidMount() {\n const { context, value } = this.props;\n\n if (context.value === value) {\n context.saveSelectedRef(this.itemRef);\n }\n }\n\n componentDidUpdate(prevProps) {\n const { context, value } = this.props;\n\n if (prevProps.context.value !== context.value && context.value === value) {\n context.saveSelectedRef(this.itemRef);\n }\n }\n\n onChange(event) {\n const { context, value } = this.props;\n const { disabled, readOnly } = context;\n\n if (disabled || readOnly) {\n return;\n }\n\n context.onItemSelected(context.type === 'single' ? !context.value : value, event);\n }\n\n render() {\n const {\n context, label, name, value,\n } = this.props;\n return (\n
  • \n \n
  • \n );\n }\n}\n\nToggleItem.propTypes = {\n context: PropTypes.instanceOf(Object),\n label: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.func,\n PropTypes.string,\n ]),\n name: PropTypes.string,\n value: PropTypes.string,\n};\n\nexport default ToggleItem;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport ToggleContext from './ToggleContext';\nimport ToggleItem from './ToggleItem';\n\nconst ToggleItemWrapper = React.forwardRef((props, ref) => (\n \n {(context) => (\n \n {props.children}\n \n )}\n \n));\n\nToggleItemWrapper.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n};\n\nexport default ToggleItemWrapper;\n","import React, {\n useCallback, useMemo, useRef, useState,\n} from 'react';\nimport PropTypes from 'prop-types';\n\nimport ToggleContext from './js/ToggleContext';\nimport ToggleItemWrapper from './js/ToggleItemWrapper';\n\nfunction Toggle({\n className,\n disabled,\n readOnly,\n size,\n theme,\n direction,\n onDark,\n wrapperClassName = '',\n onChange,\n labelwidth,\n label,\n separated,\n children,\n type,\n value,\n error,\n}) {\n const [selectedRef, setSelectedRef] = useState(null);\n const notchRef = useRef();\n const toggleRef = useRef();\n\n const classes = [\n wrapperClassName,\n className,\n 'tyk-toggle',\n `tyk-toggle--disabled-${readOnly || disabled}`,\n `tyk-toggle--${size || 'md'}`,\n `tyk-toggle--${theme}`,\n `tyk-toggle--${direction}`,\n onDark && 'tyk-toggle--on-dark',\n ].filter(Boolean).join(' ');\n\n const onItemSelected = useCallback((itemValue, event) => {\n if (!onChange) return;\n onChange(itemValue, event);\n }, [onChange]);\n\n const getLabelStyles = useCallback(() => {\n if (labelwidth) return { flexBasis: labelwidth };\n return {};\n }, [labelwidth]);\n\n const positionNotch = useCallback(() => {\n if (!selectedRef || separated) {\n return {};\n }\n\n const selectedWidth = selectedRef.current.offsetWidth;\n const selectedOffset = selectedRef.current.getBoundingClientRect().left;\n const toggleOffset = toggleRef.current.getBoundingClientRect().left;\n const left = selectedOffset - toggleOffset;\n\n return {\n left: `${left + 4}px`,\n width: `${selectedWidth - 8}px`,\n };\n }, [selectedRef, separated]);\n\n const contextValue = useMemo(() => ({\n disabled,\n readOnly,\n onItemSelected,\n saveSelectedRef: setSelectedRef,\n separated,\n type,\n value,\n }), [disabled, readOnly, onItemSelected, separated, type, value]);\n\n return (\n <>\n
    \n \n {\n label\n ? \n : null\n }\n
      \n { children }\n {\n type === 'multiple' && !separated\n ?
    • \n : null\n }\n
    \n \n
    \n {\n error && (\n

    \n { error }\n

    \n )\n }\n \n );\n}\n\nToggle.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n className: PropTypes.string,\n disabled: PropTypes.bool,\n readOnly: PropTypes.bool,\n error: PropTypes.string,\n onChange: PropTypes.func,\n label: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.func,\n PropTypes.string,\n ]),\n labelwidth: PropTypes.string,\n theme: PropTypes.string,\n type: PropTypes.string, // single || multiple\n size: PropTypes.string,\n separated: PropTypes.bool,\n direction: PropTypes.string,\n value: PropTypes.oneOfType([\n PropTypes.bool,\n PropTypes.string,\n ]),\n onDark: PropTypes.bool,\n wrapperClassName: PropTypes.string,\n};\n\nToggle.defaultProps = {\n separated: false,\n theme: 'primary',\n type: 'single',\n direction: 'row',\n};\n\nToggle.Item = ToggleItemWrapper;\n\nexport default Toggle;\n","export const stringToTokenString = (value, options) => {\n let tempStr = value;\n options.forEach((option) => {\n tempStr = tempStr.replaceAll(option.id, `__TOKEN__${option.id}__TOKEN__`);\n });\n return tempStr;\n};\n\n\nexport const setCursorPos = (ref, pos) => {\n setTimeout(() => {\n ref.current.setSelectionRange(pos, pos);\n }, 20);\n};\n","import React, { useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { stringToTokenString, setCursorPos } from './service';\n\nfunction StringInput({\n setShowOptions,\n tokenValue,\n disabled,\n placeholder,\n tokens,\n dropdownTriggerKey,\n setStringBuilderHeight,\n stringBuilderHeight,\n setTokenString,\n tokenString,\n showOptions,\n options,\n setTokenValue,\n inputRef,\n setInputInFocus,\n invalidTokenRegex,\n name,\n contextMaxLength,\n}) {\n const [isPasteEvent, setIsPasteEvent] = useState(false);\n\n useEffect(() => {\n // Set height if initial value exists\n if (tokenValue) {\n const tokenLen = tokenValue.length > 50 ? tokenValue.length / 5 : 0;\n setStringBuilderHeight(inputRef.current.scrollHeight + tokenLen);\n }\n }, []);\n\n /**\n *\n * @param {*} e : Event\n * Handle delete event (fn + delete on mac)\n */\n\n const handleDelete = (e) => {\n const { selectionEnd } = e.target;\n if (selectionEnd === tokenValue.length) {\n // - Cursor is at the end of input\n return;\n }\n\n const stringBeforeCursor = tokenValue.substring(0, selectionEnd);\n const stringAfterCursor = tokenValue.slice(selectionEnd);\n\n const tokenStringForStringAfterCursor = stringToTokenString(\n stringAfterCursor,\n options,\n );\n if (tokenStringForStringAfterCursor.startsWith('__TOKEN__')) {\n // If string before delete is a token\n const splitTokens = tokenStringForStringAfterCursor.split(/__TOKEN__(.*?)__TOKEN__/g).filter((t) => t !== '');\n const firstToken = splitTokens[0];\n const newTokenValue = `${stringBeforeCursor}${stringAfterCursor.substr(firstToken.length)}`;\n const newTokenizedString = stringToTokenString(newTokenValue, options);\n setTokenString(newTokenizedString);\n setCursorPos(inputRef, selectionEnd);\n return;\n }\n const newTokenValue = `${stringBeforeCursor}${stringAfterCursor.substr(1)}`;\n const newTokenizedString = stringToTokenString(newTokenValue, options);\n setTokenString(newTokenizedString);\n setCursorPos(inputRef, selectionEnd);\n };\n\n /**\n *\n * @param {*} e : Event\n * Handle backspace event\n * - If the last thing added by user was a token prevent default and\n * remove the entire token instead of single character, else continue with default behaviour\n * - Also handles if the string is manipulated from middle\n */\n const handleBackSpace = (e) => {\n const { selectionEnd } = e.target;\n\n // -- START :: Handle backspacing when cursor is at the end of the string\n if (selectionEnd === tokenValue.length) {\n const lastToken = tokens[tokens?.length - 2];\n const lastCharsInString = tokenValue.slice(-lastToken?.length);\n if (lastToken === lastCharsInString) {\n e.preventDefault();\n setTokenString(\n tokenString.slice(0, -`__TOKEN__${lastCharsInString}__TOKEN__`.length),\n );\n return;\n }\n if (tokenValue.endsWith(' ')) {\n const invalidToken = tokenValue.match(invalidTokenRegex);\n const newTokenValue = tokenValue.slice(0, -` ${invalidToken[invalidToken.length - 1]} `.length);\n const newTokenStr = stringToTokenString(newTokenValue, options);\n setTokenString(newTokenStr);\n return;\n }\n setTokenString(tokenString.slice(0, -1));\n return;\n }\n // -- END :: Handle backspacing when cursor is at the end of the string\n\n // -- START :: Handle backspacing when cursor is in between\n const stringBeforeCursor = tokenValue.substring(0, selectionEnd);\n const stringAfterCursor = tokenValue.slice(selectionEnd);\n\n const tokenStringForStringBeforeCursor = stringToTokenString(stringBeforeCursor, options);\n\n // -- IF the string before cursor is a token\n if (tokenStringForStringBeforeCursor.endsWith('__TOKEN__')) {\n e.preventDefault();\n const splitTokens = tokenStringForStringBeforeCursor.split(/__TOKEN__(.*?)__TOKEN__/g);\n const lastToken = splitTokens[splitTokens.length - 2];\n const newTokenValue = `${stringBeforeCursor.slice(0, -(lastToken.length))}${stringAfterCursor}`;\n const newTokenizedString = stringToTokenString(newTokenValue, options);\n setTokenString(newTokenizedString);\n setCursorPos(inputRef, selectionEnd - lastToken.length);\n return;\n }\n\n const invalidToken = stringBeforeCursor.match(invalidTokenRegex);\n // If Token is Invalid Token\n if (invalidToken?.[0] && invalidToken.length === 1) {\n e.preventDefault();\n const newTokenValue = `${stringBeforeCursor.replaceAll(invalidTokenRegex, '').trim()}${stringAfterCursor}`;\n const newTokenizedString = stringToTokenString(newTokenValue, options);\n setTokenString(newTokenizedString);\n setCursorPos(inputRef, selectionEnd - ` ${invalidToken[0]} `.length);\n return;\n }\n\n const newTokenValue = `${stringBeforeCursor.slice(\n 0,\n -1,\n )}${stringAfterCursor}`;\n const newTokenizedString = stringToTokenString(newTokenValue, options);\n setTokenString(newTokenizedString);\n setCursorPos(inputRef, selectionEnd - 1);\n // -- END :: Handle backspacing when cursor is in between\n };\n\n const addCharacterToTokenString = (text, selectionStart) => {\n // Cursor is at end\n if (selectionStart - 1 === tokenValue.length) {\n setTokenString(`${tokenString}${text}`);\n return;\n }\n\n // Cursor is in middle of string\n const newTokenValue = tokenValue.slice(0, selectionStart - 1)\n + text\n + tokenValue.slice(selectionStart - 1);\n\n const newTokenizedString = stringToTokenString(newTokenValue, options);\n setTokenString(newTokenizedString);\n };\n\n // -- START :: Handle highlighted text deletion / replacement\n const handleTextSelection = (e, selectedText, key) => {\n const allowedKeys = ['Delete', 'Backspace'];\n if (key.length > 1 && allowedKeys.indexOf(key) === -1) {\n return;\n }\n const { selectionEnd, selectionStart } = e.target;\n const substitute = key.length > 1 ? '' : key;\n if (selectedText.length > 1) {\n const newStr = tokenValue.substring(0, selectionStart)\n + substitute\n + tokenValue.substring(selectionEnd);\n const newTokenStr = stringToTokenString(newStr, options);\n setTokenString(newTokenStr);\n setCursorPos(inputRef, substitute.length ? selectionStart + 1 : selectionStart);\n }\n };\n // -- END :: Handle highlighted text deletion / replacement\n\n const handleKeyDown = (e) => {\n const { key } = e;\n const { selectionEnd, selectionStart, value } = e.target;\n const selectedText = value.substring(selectionStart, selectionEnd);\n\n if (key === dropdownTriggerKey && !showOptions) {\n e.preventDefault();\n setShowOptions(true);\n return;\n }\n if (key === 'Enter') {\n e.preventDefault();\n return;\n }\n if (key === 'Backspace') {\n e.preventDefault();\n handleBackSpace(e);\n }\n if (key === 'Delete') {\n e.preventDefault();\n handleDelete(e);\n }\n if (e.metaKey && key === 'x') {\n setTokenString('');\n }\n if (selectedText) {\n e.preventDefault();\n handleTextSelection(e, selectedText, key);\n }\n };\n\n const handleOnChange = (e) => {\n const { target } = e;\n const { selectionStart, value } = target;\n\n if (showOptions) {\n setShowOptions(false);\n }\n setTokenValue(value);\n if (value && !isPasteEvent) {\n const text = value.charAt(selectionStart - 1);\n addCharacterToTokenString(text, selectionStart);\n }\n setIsPasteEvent(false);\n };\n\n const handlePasteEvent = (e) => {\n e.preventDefault();\n const { clipboardData } = e;\n const { selectionStart, selectionEnd } = e.target;\n setIsPasteEvent(true);\n let pasteString = clipboardData.getData('text/plain');\n if (selectionStart !== selectionEnd) {\n pasteString = tokenValue.slice(0, selectionStart)\n + pasteString\n + tokenValue.slice(selectionEnd, tokenValue.length);\n const newTokenString = stringToTokenString(pasteString, options);\n setTokenString(newTokenString);\n return;\n }\n const newTokenString = stringToTokenString(pasteString, options);\n addCharacterToTokenString(newTokenString, selectionStart);\n };\n\n const handleOnFocus = () => {\n setInputInFocus(true);\n };\n\n return (\n handleOnChange(e)}\n onKeyDown={(e) => handleKeyDown(e)}\n placeholder={placeholder}\n name={name}\n ref={inputRef}\n style={{ height: `${stringBuilderHeight}px` }}\n maxLength={contextMaxLength}\n onPaste={handlePasteEvent}\n onFocus={handleOnFocus}\n onBlur={() => setInputInFocus(false)}\n />\n );\n}\n\nStringInput.propTypes = {\n setShowOptions: PropTypes.func,\n tokenValue: PropTypes.string,\n disabled: PropTypes.bool,\n placeholder: PropTypes.string,\n tokenString: PropTypes.string,\n stringBuilderHeight: PropTypes.number,\n dropdownTriggerKey: PropTypes.string,\n setStringBuilderHeight: PropTypes.func,\n setTokenString: PropTypes.func,\n setTokenValue: PropTypes.func,\n setInputInFocus: PropTypes.func,\n showOptions: PropTypes.bool,\n tokens: PropTypes.arrayOf(PropTypes.string),\n options: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.string.isRequired,\n name: PropTypes.string.isRequired,\n className: PropTypes.string,\n desc: PropTypes.string,\n }),\n ),\n inputRef: PropTypes.instanceOf(Object),\n invalidTokenRegex: PropTypes.instanceOf(RegExp),\n name: PropTypes.string,\n contextMaxLength: PropTypes.number,\n};\n\nexport { StringInput };\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Tooltip from '../../../../components/Tooltip';\nimport Icon from '../../../../components/Icon';\n\n\nconst InvalidToken = (props) => {\n const { token, findInvalidTokenSubstitute } = props;\n return (\n findInvalidTokenSubstitute(token)}\n onKeyDown={() => {}}\n >\n \n \n {`${token}`}\n \n \n \n \n );\n};\n\nInvalidToken.propTypes = {\n token: PropTypes.string,\n findInvalidTokenSubstitute: PropTypes.func,\n};\n\nexport default InvalidToken;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport InvalidToken from './invalid-token';\n\nexport const TokenizedString = (props) => {\n const {\n tokens,\n options,\n disabled,\n invalidTokenRegex,\n findInvalidTokenSubstitute,\n } = props;\n\n /**\n * hasDuplicates : used to avoid duplicate keys in map :\n * having duplicate tokens causes invalid unpredictable react renders.\n * eg: http://alpaha.com/{{.agruments.id}}/id={{.arguments.id}}\n * `{{.arguments.id}}` is repeated twice : maybe edge case but quite possible\n */\n\n const hasDuplicates = new Set(tokens).size !== tokens.length;\n\n const allTokens = tokens\n && tokens.map((token) => {\n if (options) {\n const matchedOption = options.find(option => option.id === token);\n // if invalid token\n if (invalidTokenRegex && !matchedOption) {\n const matchedTokens = token.replaceAll(' ', '').split(invalidTokenRegex);\n if (matchedTokens?.length > 1) {\n return (\n \n {matchedTokens.map((tkn) => {\n if (tkn.match(invalidTokenRegex)) {\n return (\n \n );\n }\n return ({`${tkn} `});\n })}\n \n );\n }\n }\n // if token matches option\n\n if (matchedOption) {\n return (\n \n {matchedOption.id}\n \n );\n }\n }\n return (\n {token}\n );\n });\n return (\n \n {allTokens}\n \n );\n};\n\nTokenizedString.propTypes = {\n tokens: PropTypes.arrayOf(PropTypes.string),\n options: PropTypes.arrayOf(PropTypes.instanceOf(Object)),\n disabled: PropTypes.bool,\n invalidTokenRegex: PropTypes.instanceOf(RegExp),\n findInvalidTokenSubstitute: PropTypes.func,\n};\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\n\nimport FloatingContainer from '../../../../components/FloatingContainer';\n\nexport const OptionsList = ({\n options,\n showOptions,\n handleOptionSelection,\n containerRef,\n getThemeClasses,\n setShowOptions,\n allowSearch,\n initialSearchValue,\n}) => {\n const [filterValue, setFilterValue] = useState(initialSearchValue);\n const [filteredOptions, setFilteredOptions] = useState(options);\n\n useEffect(() => {\n setFilterValue(initialSearchValue);\n }, [initialSearchValue]);\n\n useEffect(() => {\n if (filterValue === '') {\n setFilteredOptions(options);\n return;\n }\n const newFilteredOptions = options.filter(\n option => option.name.toLowerCase().includes(filterValue.toLowerCase()),\n );\n setFilteredOptions(newFilteredOptions);\n }, [filterValue]);\n\n useEffect(() => {\n setFilteredOptions(options);\n }, [options]);\n\n if (!showOptions) {\n return null;\n }\n\n return (\n <>\n \n {allowSearch && (\n
    \n {\n setFilterValue(e.target.value);\n }}\n onKeyDown={(e) => {\n if (\n e.key === 'Escape'\n || e.key === 'ArrowUp'\n // || e.key === 'ArrowDown'\n || e.key === 'Enter'\n ) {\n setShowOptions(false);\n }\n }}\n />\n
    \n )}\n
      \n {filteredOptions.map(option => (\n handleOptionSelection(option)}\n >\n \n {option.name}\n \n {option.desc && (\n \n   :  \n {option.desc}\n \n )}\n \n ))}\n
    \n \n \n );\n};\n\nOptionsList.propTypes = {\n options: PropTypes.arrayOf(Object),\n showOptions: PropTypes.bool,\n handleOptionSelection: PropTypes.func,\n getThemeClasses: PropTypes.func,\n setShowOptions: PropTypes.func,\n containerRef: PropTypes.instanceOf(Object),\n allowSearch: PropTypes.bool,\n initialSearchValue: PropTypes.string,\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nexport const StringBuilderFooter = (props) => {\n const {\n note, error, inputInFocus, stringBuilderHeight, dropdownTriggerKey,\n } = props;\n return (\n \n {inputInFocus && !error && (\n

    \n \n Enter\n {dropdownTriggerKey}\n to add any parameter\n \n

    \n )}\n {note &&

    {note}

    }\n {error && error !== 'true' && error !== 'false' && (\n

    {error}

    \n )}\n \n );\n};\n\nStringBuilderFooter.propTypes = {\n note: PropTypes.string,\n error: PropTypes.string,\n dropdownTriggerKey: PropTypes.string,\n inputInFocus: PropTypes.bool,\n stringBuilderHeight: PropTypes.number,\n};\n","import React, { useEffect, useState, useRef } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { usePrevious } from '../../../hooks';\n\nimport { StringInput } from './js/string-input';\nimport { TokenizedString } from './js/tokenized-string';\nimport { OptionsList } from './js/options-list';\nimport { StringBuilderFooter } from './js/string-builder-footer';\nimport { stringToTokenString, setCursorPos } from './js/service';\n\n/**\n * - String builder component used to build one single string using the given options.\n * - This component can be useful from UX perspective,\n * when user needs to build any string which might contain complex values which are error prone.\n * - `` abstracts the complex values by supplying them\n * as selectable options in more user friendly format with description for user.\n * - Wire-frames : https://miro.com/app/board/o9J_kipLWwA=/\n */\n\nfunction StringBuilder(props) {\n const {\n options,\n onChange,\n value,\n theme,\n error,\n disabled,\n readOnly,\n note,\n label,\n labelwidth,\n placeholder,\n allowSearch,\n dropdownTriggerKey,\n invalidTokenRegex,\n name,\n wrapperClassName = '',\n } = props;\n const [tokenValue, setTokenValue] = useState(value);\n const [stringBuilderHeight, setStringBuilderHeight] = useState();\n const [showOptions, setShowOptions] = useState(false);\n const [tokenString, setTokenString] = useState(stringToTokenString(value, options));\n const [contextMaxLength, setContentMaxLength] = useState(\n tokenValue.length + 5,\n );\n const [tokens, setTokens] = useState([]);\n const [prevTokenValue, setPrevTokenValue] = useState();\n const [inputInFocus, setInputInFocus] = useState(false);\n const [initialSearchValue, setInitialSearchValue] = useState('');\n const [selectedInvalidToken, setSelectedInvalidToken] = useState(null);\n\n const prevTokenString = usePrevious(tokenString);\n\n const containerRef = useRef();\n const inputRef = useRef();\n\n // Execute callback on value change\n useEffect(() => {\n if (onChange) {\n onChange(tokenValue.replaceAll(' ', ''));\n }\n }, [tokenValue]);\n\n useEffect(() => {\n const tempVal = invalidTokenRegex ? value.replaceAll(invalidTokenRegex, ' $& ') : value;\n setTokenValue(() => tempVal);\n setTokenString(() => stringToTokenString(tempVal, options));\n }, [value]);\n\n /**\n * Split string into tokens and set string value w/o __TOKEN__\n * Tokens are used to render a styled tokens using ``\n */\n useEffect(() => {\n const splitTokens = tokenString.split(/__TOKEN__(.*?)__TOKEN__/g);\n const splitTokensStr = splitTokens.join('');\n setTokens(() => splitTokens);\n setTokenValue(() => splitTokensStr);\n setPrevTokenValue(() => splitTokensStr);\n }, [tokenString]);\n\n useEffect(() => {\n // Auto Grow Input\n if (contextMaxLength - 3 < tokenValue.length) {\n const newHeight = inputRef.current.scrollHeight + 3;\n setStringBuilderHeight(() => newHeight);\n setContentMaxLength(() => contextMaxLength + 25);\n }\n }, [tokenString, tokenValue]);\n\n /**\n *\n * @param {*} option : Option object for selected option from dropdown\n * When user selects an option append and prepend `__TOKEN__` to detect the token,\n * so they can be styled or manipulated later\n */\n const handleOptionSelection = (option) => {\n let newInput = '';\n const { selectionStart } = inputRef.current;\n if (prevTokenString && prevTokenString !== value && !selectedInvalidToken) {\n /* eslint prefer-destructuring: [\"error\", {VariableDeclarator: {object: true}}] */\n newInput = prevTokenString + tokenValue.split(prevTokenValue)[1];\n }\n let tokenizedString = '';\n // Adding token in Middle\n if (selectionStart !== tokenValue.length && !selectedInvalidToken) {\n const newTokenValue = tokenValue.slice(0, selectionStart)\n + option.id\n + tokenValue.slice(selectionStart);\n tokenizedString = stringToTokenString(newTokenValue, options);\n setCursorPos(inputRef, selectionStart + option.id.length);\n } else {\n tokenizedString = `${newInput || tokenValue}__TOKEN__${\n option.id\n }__TOKEN__`;\n }\n if (selectedInvalidToken) {\n tokenizedString = tokenString.replace(\n ` ${selectedInvalidToken} `,\n `__TOKEN__${option.id}__TOKEN__`,\n );\n setSelectedInvalidToken(() => null);\n setInitialSearchValue(() => '');\n }\n setTokenString(() => tokenizedString);\n setShowOptions(() => false);\n setTimeout(() => {\n inputRef.current.focus();\n }, 20);\n };\n\n const getThemeClasses = () => {\n const themes = theme ? theme.split(' ') : [];\n return themes.map((iTheme) => `tyk-form-group--${iTheme}`);\n };\n\n const getCssClasses = () => [\n 'tyk-form-group',\n ...getThemeClasses(),\n error && 'has-error',\n disabled && 'disabled',\n ]\n .filter(Boolean)\n .join(' ');\n\n const findInvalidTokenSubstitute = (invalidToken) => {\n setSelectedInvalidToken(() => invalidToken);\n setInitialSearchValue(() => invalidToken.replace(/[^a-zA-Z ]/g, ''));\n setShowOptions(() => true);\n };\n\n return (\n
    \n
    \n {label && (\n \n )}\n {!readOnly && (\n
    \n \n \n \n \n \n
    \n
    \n )}\n {\n readOnly &&
    {value || '-'}
    \n }\n
    \n \n );\n}\n\nStringBuilder.propTypes = {\n /** Options to render in the list */\n options: PropTypes.arrayOf(\n PropTypes.shape({\n /** id is the value that will be appended to the string on selection */\n id: PropTypes.string.isRequired,\n /** name of option (view) */\n name: PropTypes.string.isRequired,\n /** to style / highlight the token */\n className: PropTypes.string,\n /** description of option */\n desc: PropTypes.string,\n }),\n ),\n /** Callback executed on change of string value */\n onChange: PropTypes.func,\n /** Initial value */\n value: PropTypes.string,\n /** Disable input */\n disabled: PropTypes.bool,\n /** Read Only prop removes the form element and displays just the value */\n readOnly: PropTypes.bool,\n /** Show error state (w/ or w/o message) */\n error: PropTypes.string,\n /** Component theme */\n theme: PropTypes.string,\n /** Footnote for component */\n note: PropTypes.string,\n /** Label for component */\n label: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.func,\n PropTypes.string,\n ]),\n /** Label Width for component */\n labelwidth: PropTypes.string,\n /** Placeholder for component */\n placeholder: PropTypes.string,\n /** Key To trigger dropdown */\n dropdownTriggerKey: PropTypes.string,\n /** Regex to detect invalid tokens in the value */\n invalidTokenRegex: PropTypes.instanceOf(RegExp),\n /** Allow users to search from options */\n allowSearch: PropTypes.bool,\n name: PropTypes.string,\n wrapperClassName: PropTypes.string,\n};\n\nStringBuilder.defaultProps = {\n onChange: null,\n value: '',\n options: [],\n theme: 'default',\n};\n\nexport default StringBuilder;\n","const config = {\n FORM_DEBOUNCE: 200,\n};\n\nexport function setConfig(key, val) {\n config[key] = val;\n}\n\nexport default config;\n","import React, { useCallback, useEffect, useState } from 'react';\n\nimport config from '../config/config';\n\nfunction getValueFromPath(obj, path) {\n // turn 'aaa.qqq[2].bbb[5][3].mmm' into ['aaa', 'qqq', '2', 'bbb', '5', '3', 'mmm']\n const indexes = path.split(/[\\][.]/).filter(Boolean);\n return indexes.reduce((acc, v) => (acc ? acc[v] : acc), obj);\n}\n\nfunction debounce(f, limit) {\n let timeoutId;\n return (...args) => {\n clearTimeout(timeoutId);\n timeoutId = setTimeout(f, limit, ...args);\n };\n}\n\n/* eslint-disable react/prop-types, react/function-component-definition */\n/**\n * A wrapper function that \"prepares\" a tyk-ui form component to be used with the formik library.\n * It handles things like setting the value of the component, change events, error state,\n * and also has a default debounce time for when the change event is triggered.\n */\nconst wrapper = (Component, options) => ({ field, form, ...properties }) => {\n const DEFAULT_DEBOUNCE_TIME_MS = typeof config.FORM_DEBOUNCE === 'number' ? config.FORM_DEBOUNCE : 200;\n const [myValue, setMyValue] = useState(field.value);\n const opts = {\n getOnChangeProps: () => ({}),\n hasIsFieldProp: false,\n ...options,\n };\n\n const executeDebounced = useCallback((() => {\n const fn = (f) => f();\n if (\n properties.debounce === false\n || (config.FORM_DEBOUNCE === false && !properties.debounce)\n ) {\n return fn;\n }\n const timeout = typeof properties.debounce === 'number'\n ? properties.debounce\n : DEFAULT_DEBOUNCE_TIME_MS;\n return debounce(fn, timeout);\n })(), []);\n\n const getValue = (v) => {\n if (v && v.target) {\n if (v.target.nodeName === 'INPUT' && (v.target.type === 'checkbox' || v.target.type === 'radio')) {\n return v.target.checked;\n }\n return v.target.value;\n }\n return v;\n };\n\n const onChange = (valueOrEvent) => {\n const value = getValue(valueOrEvent);\n const onChangeProps = opts.getOnChangeProps(value, field, form, properties);\n\n const newValue = onChangeProps.value || properties.value || value;\n executeDebounced(() => {\n if (typeof properties.onChange === 'function') {\n properties.onChange(newValue);\n }\n field.onChange({ target: { name: field.name, value: newValue, ...onChangeProps } });\n });\n setMyValue(newValue);\n };\n\n const formError = (getValueFromPath(form.touched, field.name) || Boolean(form.submitCount))\n && getValueFromPath(form.errors, field.name);\n const error = typeof formError === 'string' ? formError : '';\n\n useEffect(() => {\n setMyValue(field.value);\n }, [field.value]);\n\n // eslint-disable-next-line no-param-reassign\n if (form.status?.disabled) properties.disabled = true;\n\n const componentProps = { ...properties };\n delete componentProps.debounce;\n\n return (\n \n );\n};\n\nexport default wrapper;\n","import wrapper from '../../../utils/formik';\nimport Checkbox from '../../components/Checkbox';\n\nexport default wrapper(Checkbox, {\n getOnChangeProps: (value) => ({\n checked: value,\n }),\n});\n","import wrapper from '../../../utils/formik';\nimport CodeEditor from '../../components/CodeEditor';\n\nexport default wrapper(CodeEditor);\n","import wrapper from '../../../utils/formik';\nimport Combobox from '../../components/Combobox';\n\nexport default wrapper(Combobox);\n","import wrapper from '../../../utils/formik';\nimport Combobox2 from '../../components/Combobox2';\n\nexport default wrapper(Combobox2);\n","import wrapper from '../../../utils/formik';\nimport DatePicker from '../../components/DatePicker';\n\nexport default wrapper(DatePicker);\n","import wrapper from '../../../utils/formik';\nimport EditableList from '../../components/EditableList';\n\nexport default wrapper(EditableList, {\n getOnChangeProps: value => ({ value: value || [] }),\n});\n","import wrapper from '../../../utils/formik';\nimport EditableList2 from '../../components/EditableList2';\n\nexport default wrapper(EditableList2);\n","import wrapper from '../../../utils/formik';\nimport FileInput from '../../components/FileInput';\n\nexport default wrapper(FileInput);\n","import wrapper from '../../../utils/formik';\nimport Input from '../../components/Input';\n\nexport default wrapper(Input, { hasIsFieldProp: true });\n","import wrapper from '../../../utils/formik';\nimport Input2 from '../../components/Input2';\n\nexport default wrapper(Input2);\n","import wrapper from '../../../utils/formik';\nimport MultiSelect from '../../components/Multiselect';\n\nexport default wrapper(MultiSelect);\n","import wrapper from '../../../utils/formik';\nimport Radio from '../../components/Radio';\n\nexport default wrapper(Radio, {\n getOnChangeProps: (value, field, form, properties) => ({\n checked: value === properties.value,\n value: properties.value,\n }),\n});\n","import wrapper from '../../../utils/formik';\nimport Select from '../../components/Select';\n\nexport default wrapper(Select, { hasIsFieldProp: true });\n","import wrapper from '../../../utils/formik';\nimport SelectableList from '../../components/SelectableList';\n\nexport default wrapper(SelectableList);\n","import wrapper from '../../../utils/formik';\nimport Textarea from '../../components/Textarea';\n\nexport default wrapper(Textarea);\n","import wrapper from '../../../utils/formik';\nimport Toggle from '../../components/Toggle';\n\nexport default wrapper(Toggle);\n","import wrapper from '../../../utils/formik';\nimport StringBuilder from '../../components/StringBuilder';\n\nexport default wrapper(StringBuilder);\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { fromJS } from 'immutable';\n\nimport CodeEditor from '../../components/CodeEditor';\n\nexport default class FieldCodeEditor extends Component {\n static propTypes = {\n input: PropTypes.instanceOf(Object),\n meta: PropTypes.instanceOf(Object),\n validationmessages: PropTypes.instanceOf(Object),\n };\n\n constructor(props) {\n super(props);\n\n this.handleOnChange = this.handleOnChange.bind(this);\n }\n\n getInputError() {\n const { meta, validationmessages } = this.props;\n const { touched, error, warning } = meta;\n let message = null;\n\n if (touched && error && validationmessages[error]) {\n message = validationmessages[error];\n } else if (touched && warning) {\n message = 'warning';\n }\n\n return message;\n }\n\n handleOnChange(value) {\n const { input } = this.prop;\n const { onChange } = input;\n\n onChange(fromJS(value));\n }\n\n render() {\n const { input, ...rest } = this.props;\n\n return (\n \n );\n }\n}\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { fromJS } from 'immutable';\n\nimport Combobox from '../../components/Combobox';\n\nexport default class FieldCombobox extends Component {\n static propTypes = {\n meta: PropTypes.instanceOf(Object),\n input: PropTypes.instanceOf(Object),\n validationmessages: PropTypes.instanceOf(Object),\n }\n\n constructor(props) {\n super(props);\n\n this.handleOnChange = this.handleOnChange.bind(this);\n }\n\n getComboboxError() {\n const { meta, validationmessages } = this.props;\n const { touched, error, warning } = meta;\n let message = null;\n\n if (touched && error && validationmessages[error]) {\n message = validationmessages[error];\n } else if (touched && warning) {\n message = 'warning';\n }\n\n return message;\n }\n\n handleOnChange(value) {\n const { input } = this.props;\n const { onChange } = input;\n\n onChange(fromJS(value));\n }\n\n render() {\n const { ...props } = this.props;\n\n return (\n \n );\n }\n}\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { fromJS } from 'immutable';\n\nimport Dropdown from '../../components/Dropdown';\n\nexport default class FieldDropdown extends Component {\n static propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n input: PropTypes.instanceOf(Object),\n };\n\n constructor(props) {\n super(props);\n\n this.handleOnChange = this.handleOnChange.bind(this);\n }\n\n handleOnChange(value) {\n const { input } = this.props;\n const { onChange } = input;\n\n onChange(fromJS(value));\n }\n\n render() {\n const {\n children,\n input,\n ...rest\n } = this.props;\n\n return (\n \n {children}\n \n );\n }\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport Pagination from '../../components/Pagination';\n\nconst FieldPagination = (props) => {\n const { input, ...rest } = props;\n\n return (\n \n );\n};\n\nFieldPagination.propTypes = {\n input: PropTypes.instanceOf(Object),\n};\n\nexport default FieldPagination;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { fromJS } from 'immutable';\n\nimport Combobox2 from '../../components/Combobox2';\n\nconst FieldCombobox2 = (props) => {\n const { input, meta, validationmessages } = props;\n\n const getComboboxError = () => {\n const { touched, error, warning } = meta;\n let message = null;\n\n if (touched && error && validationmessages[error]) {\n message = validationmessages[error];\n } else if (touched && warning) {\n message = 'warning';\n }\n return message;\n };\n\n const handleOnChange = (value) => {\n const { onChange } = input;\n onChange(fromJS(value));\n };\n\n return (\n \n );\n};\n\nFieldCombobox2.propTypes = {\n meta: PropTypes.instanceOf(Object),\n input: PropTypes.instanceOf(Object),\n validationmessages: PropTypes.instanceOf(Object),\n};\n\nexport default FieldCombobox2;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { fromJS } from 'immutable';\n\nimport DatePicker from '../../components/DatePicker';\n\nconst FormDatePicker = (props) => {\n const {\n input,\n meta,\n validationmessages,\n ...rest\n } = props;\n\n const getDatePickerError = () => {\n const { touched, error } = meta;\n let message = null;\n\n if (touched && error && validationmessages[error]) {\n message = validationmessages[error];\n }\n\n return message;\n };\n\n const handleOnChange = (value) => {\n const { onChange } = input;\n\n onChange(fromJS(value));\n };\n\n return (\n \n );\n};\n\nFormDatePicker.propTypes = {\n meta: PropTypes.instanceOf(Object),\n input: PropTypes.instanceOf(Object),\n validationmessages: PropTypes.instanceOf(Object),\n};\n\nexport default FormDatePicker;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { fromJS } from 'immutable';\n\nimport EditableList from '../../components/EditableList';\n\nexport default class FieldEditableList extends Component {\n static propTypes = {\n input: PropTypes.instanceOf(Object),\n meta: PropTypes.instanceOf(Object),\n validationmessages: PropTypes.instanceOf(Object),\n };\n\n constructor(props) {\n super(props);\n\n this.handleOnChange = this.handleOnChange.bind(this);\n }\n\n getEditableListError() {\n const { meta, validationmessages } = this.props;\n const { touched, error } = meta;\n let message = null;\n\n if (touched && error && validationmessages[error]) {\n message = validationmessages[error];\n }\n\n return message;\n }\n\n handleOnChange(value) {\n const { input } = this.props;\n const { onChange } = input;\n\n onChange(fromJS(value));\n }\n\n render() {\n const { ...props } = this.props;\n\n return (\n \n );\n }\n}\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\nimport FileInput from '../../components/FileInput';\n\nexport default class FieldFileInput extends Component {\n static propTypes = {\n input: PropTypes.instanceOf(Object),\n meta: PropTypes.instanceOf(Object),\n validationmessages: PropTypes.instanceOf(Object),\n };\n\n getInputError() {\n const { meta, validationmessages } = this.props;\n const { touched, error, warning } = meta;\n let message = null;\n\n if (touched && error && validationmessages[error]) {\n message = validationmessages[error];\n } else if (touched && warning) {\n message = 'warning';\n }\n\n return message;\n }\n\n render() {\n const { input, ...rest } = this.props;\n\n return (\n \n );\n }\n}\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Input from '../../components/Input';\n\nexport default class FieldInput extends Component {\n static propTypes = {\n meta: PropTypes.instanceOf(Object),\n input: PropTypes.instanceOf(Object),\n validationmessages: PropTypes.instanceOf(Object),\n }\n\n getInputError() {\n const { meta, validationmessages } = this.props;\n const { touched, error, warning } = meta;\n let message = null;\n\n if (touched && error && validationmessages[error]) {\n message = validationmessages[error];\n } else if (touched && warning) {\n message = 'warning';\n }\n\n return message;\n }\n\n render() {\n const { input, ...rest } = this.props;\n\n return (\n \n );\n }\n}\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { fromJS } from 'immutable';\n\nimport Multiselect from '../../components/Multiselect';\n\nexport default class FieldMultiselect extends Component {\n static propTypes = {\n input: PropTypes.instanceOf(Object),\n meta: PropTypes.instanceOf(Object),\n validationmessages: PropTypes.instanceOf(Object),\n }\n\n constructor(props) {\n super(props);\n\n this.handleOnChange = this.handleOnChange.bind(this);\n }\n\n getMultiselectError() {\n const { meta, validationmessages } = this.props;\n const { touched, error, warning } = meta;\n let message = null;\n\n if (touched && error && validationmessages[error]) {\n message = validationmessages[error];\n } else if (touched && warning) {\n message = 'warning';\n }\n\n return message;\n }\n\n handleOnChange(value) {\n const { input } = this.props;\n const { onChange } = input;\n\n onChange(fromJS(value));\n }\n\n render() {\n const { ...props } = this.props;\n\n return (\n \n );\n }\n}\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { fromJS } from 'immutable';\n\nimport Select from '../../components/Select';\n\nexport default class FieldSelect extends Component {\n static propTypes = {\n input: PropTypes.instanceOf(Object),\n meta: PropTypes.instanceOf(Object),\n validationmessages: PropTypes.instanceOf(Object),\n };\n\n constructor(props) {\n super(props);\n\n this.handleEvent = this.handleEvent.bind(this);\n }\n\n getSelectError() {\n const { meta, validationmessages } = this.props;\n const { touched, error, warning } = meta;\n let message = null;\n\n if (touched && error && validationmessages[error]) {\n message = validationmessages[error];\n } else if (touched && warning) {\n message = 'warning';\n }\n\n return message;\n }\n\n handleEvent(selectValue) {\n const { input } = this.props;\n const { onChange, value } = input;\n\n onChange(fromJS(selectValue !== undefined ? selectValue : value));\n }\n\n render() {\n const { input, ...rest } = this.props;\n\n return (\n \n );\n }\n}\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { fromJS } from 'immutable';\n\nimport SelectableList from '../../components/SelectableList';\n\nexport default class FieldSelectableList extends Component {\n static propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.node,\n ]),\n onChange: PropTypes.func,\n input: PropTypes.instanceOf(Object),\n };\n\n constructor(props) {\n super(props);\n\n this.handleOnChange = this.handleOnChange.bind(this);\n }\n\n handleOnChange(value) {\n const { input } = this.props;\n\n input.onChange(fromJS(value));\n }\n\n render() {\n const { children, ...props } = this.props;\n\n return (\n \n );\n }\n}\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { fromJS } from 'immutable';\n\nimport Toggle from '../../components/Toggle';\n\nexport default class FieldToggle extends Component {\n static propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.node,\n ]),\n onChange: PropTypes.func,\n input: PropTypes.instanceOf(Object),\n };\n\n constructor(props) {\n super(props);\n\n this.handleOnChange = this.handleOnChange.bind(this);\n }\n\n handleOnChange(value) {\n const { input } = this.props;\n\n input.onChange(fromJS(value));\n }\n\n render() {\n const { children, ...props } = this.props;\n\n return (\n \n {children}\n \n );\n }\n}\n","import './index.scss';\n\n// -- Components\nexport { default as Accordion } from './components/Accordion';\nexport { default as Button } from './components/Button';\nexport { default as ButtonGroup } from './components/ButtonGroup';\nexport { default as Collapsible } from './components/Collapsible';\nexport { default as Chart } from './components/Chart';\nexport { default as CopyToClipboard } from './components/CopyToClipboard';\nexport { default as Confirm } from './components/Confirm';\nexport { default as FixedWrapper } from './components/FixedWrapper';\nexport { default as FloatingContainer } from './components/FloatingContainer';\nexport { default as Icon } from './components/Icon';\nexport { default as InfiniteScroller } from './components/InfiniteScroller';\nexport { default as InfoNote } from './components/InfoNote';\nexport { default as List } from './components/List';\nexport { default as Loader } from './components/Loader';\nexport { default as Message } from './components/Message';\nexport { default as Modal } from './components/Modal';\nexport { default as NavBar } from './components/NavBar';\nexport { default as Navigation } from './components/Navigation';\nexport { default as Panel } from './components/Panel';\nexport { default as Pill } from './components/Pill';\nexport { default as RevealPanel } from './components/RevealPanel';\nexport { default as Tabs } from './components/Tabs';\nexport { default as TextEllipsis } from './components/TextEllipsis';\nexport { default as toast } from './components/Toast';\nexport { default as Tooltip } from './components/Tooltip';\nexport { default as Table } from './components/Table';\n\n// -- Layout\nexport { default as Column } from './layout/Column';\nexport { default as Row } from './layout/Row';\n\n// -- Form Components\nexport { default as Checkbox } from './form/components/Checkbox';\nexport { default as Dropdown } from './form/components/Dropdown';\nexport { default as CodeEditor } from './form/components/CodeEditor';\nexport { default as Combobox } from './form/components/Combobox';\nexport { default as Combobox2 } from './form/components/Combobox2';\nexport { default as DatePicker } from './form/components/DatePicker';\nexport { default as EditableList } from './form/components/EditableList';\nexport { default as EditableList2 } from './form/components/EditableList2';\nexport { default as FileInput } from './form/components/FileInput';\nexport { default as Input } from './form/components/Input';\nexport { default as Input2 } from './form/components/Input2';\nexport { default as Multiselect } from './form/components/Multiselect';\nexport { default as Radio } from './form/components/Radio';\nexport { default as Select } from './form/components/Select';\nexport { default as SelectableList } from './form/components/SelectableList';\nexport { default as Textarea } from './form/components/Textarea';\nexport { default as Toggle } from './form/components/Toggle';\nexport { default as Pagination } from './form/components/Pagination';\nexport { default as StringBuilder } from './form/components/StringBuilder';\n\n// -- Formik\n\nexport { default as FormikCheckbox } from './form/formik/FormikCheckbox';\nexport { default as FormikCodeEditor } from './form/formik/FormikCodeEditor';\nexport { default as FormikCombobox } from './form/formik/FormikCombobox';\nexport { default as FormikCombobox2 } from './form/formik/FormikCombobox2';\nexport { default as FormikDatePicker } from './form/formik/FormikDatePicker';\nexport { default as FormikEditableList } from './form/formik/FormikEditableList';\nexport { default as FormikEditableList2 } from './form/formik/FormikEditableList2';\nexport { default as FormikFileInput } from './form/formik/FormikFileInput';\nexport { default as FormikInput } from './form/formik/FormikInput';\nexport { default as FormikInput2 } from './form/formik/FormikInput2';\nexport { default as FormikMultiselect } from './form/formik/FormikMultiselect';\nexport { default as FormikRadio } from './form/formik/FormikRadio';\nexport { default as FormikSelect } from './form/formik/FormikSelect';\nexport { default as FormikSelectableList } from './form/formik/FormikSelectableList';\nexport { default as FormikTextarea } from './form/formik/FormikTextarea';\nexport { default as FormikToggle } from './form/formik/FormikToggle';\nexport { default as FormikStringBuilder } from './form/formik/FormikStringBuilder';\nexport { default as FormikWrapper } from './utils/formik';\n\n// Redux - Form\n\nexport { default as FieldCodeEditor } from './form/redux-form/FieldCodeEditor';\nexport { default as FieldCombobox } from './form/redux-form/FieldCombobox';\nexport { default as FieldDropdown } from './form/redux-form/FieldDropdown';\nexport { default as FieldPagination } from './form/redux-form/FieldPagination';\nexport { default as FieldCombobox2 } from './form/redux-form/FieldCombobox2';\nexport { default as FieldDatePicker } from './form/redux-form/FieldDatePicker';\nexport { default as FieldEditableList } from './form/redux-form/FieldEditableList';\nexport { default as FieldFileInput } from './form/redux-form/FieldFileInput';\nexport { default as FieldInput } from './form/redux-form/FieldInput';\nexport { default as FieldMultiselect } from './form/redux-form/FieldMultiselect';\nexport { default as FieldSelect } from './form/redux-form/FieldSelect';\nexport { default as FieldSelectableList } from './form/redux-form/FieldSelectableList';\nexport { default as FieldToggle } from './form/redux-form/FieldToggle';\n\n// -- Utils\nexport { default as usePrevious } from './hooks/usePrevious';\nexport { default as useTimeout } from './hooks/useTimeout';\nexport { default as useInterval } from './hooks/useInterval';\nexport { default as useEventListener } from './hooks/useEventListener';\nexport { default as useComponentSize } from './hooks/useComponentSize';\nexport { setConfig } from './utils/config/config';\n"],"names":["_a","values","_b","filteredValues","newTokenValue","newTokenizedString","invalidToken","newTokenString"],"sourceRoot":""} \ No newline at end of file diff --git a/lib/tyk-ui.css b/lib/tyk-ui.css index 284d3cfd..12bd0249 100644 --- a/lib/tyk-ui.css +++ b/lib/tyk-ui.css @@ -1,6 +1,6 @@ -html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video{margin:0;padding:0;border:0;font-size:100%;font:inherit;vertical-align:baseline}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}body{line-height:1}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:before,blockquote:after{content:"";content:none}q:before,q:after{content:"";content:none}table{border-collapse:collapse;border-spacing:0}.container{max-width:1240px;margin:0 auto}.container,.container-fluid{padding:0 20px}.tyk-row{display:flex;box-sizing:border-box;list-style:none;flex:0 1 auto;flex-direction:row;flex-wrap:wrap;margin-left:-20px;width:calc(100% + 20px)}.tyk-row.no-gutters{margin:0}.tyk-row.tyk-row--gutterless{margin:0;width:100%}.tyk-row.tyk-row--reverse{flex-direction:row-reverse}.tyk-col{max-width:calc(100% - 20px);box-sizing:border-box;flex:0 0 auto;flex-grow:1;flex-basis:calc(100% - 20px);margin-left:20px;width:calc(100% - 20px)}.tyk-col:last-child{margin-right:0}.tyk-row--gutterless .tyk-col{margin:0}.tyk-col.tyk-col--reverse{flex-direction:column-reverse}.tyk-col.tyk-col--align-bottom{align-self:flex-end}.tyk-col.tyk-col--align-top{align-self:flex-start}.tyk-col.tyk-col--align-center{align-self:center}.tyk-col.tyk-col--align-baseline{align-self:baseline}.tyk-col.tyk-col--align-stretch{align-self:stretch}@media screen and (min-width: 1248px){.tyk-col--lg-0{flex-basis:calc(0% - 20px);max-width:calc(0% - 20px)}.tyk-col--offset-lg-0{margin-left:0%}.tyk-col--lg-1{flex-basis:calc(8.3333333333% - 20px);max-width:calc(8.3333333333% - 20px)}.tyk-col--offset-lg-1{margin-left:8.3333333333%}.tyk-col--lg-2{flex-basis:calc(16.6666666667% - 20px);max-width:calc(16.6666666667% - 20px)}.tyk-col--offset-lg-2{margin-left:16.6666666667%}.tyk-col--lg-3{flex-basis:calc(25% - 20px);max-width:calc(25% - 20px)}.tyk-col--offset-lg-3{margin-left:25%}.tyk-col--lg-4{flex-basis:calc(33.3333333333% - 20px);max-width:calc(33.3333333333% - 20px)}.tyk-col--offset-lg-4{margin-left:33.3333333333%}.tyk-col--lg-5{flex-basis:calc(41.6666666667% - 20px);max-width:calc(41.6666666667% - 20px)}.tyk-col--offset-lg-5{margin-left:41.6666666667%}.tyk-col--lg-6{flex-basis:calc(50% - 20px);max-width:calc(50% - 20px)}.tyk-col--offset-lg-6{margin-left:50%}.tyk-col--lg-7{flex-basis:calc(58.3333333333% - 20px);max-width:calc(58.3333333333% - 20px)}.tyk-col--offset-lg-7{margin-left:58.3333333333%}.tyk-col--lg-8{flex-basis:calc(66.6666666667% - 20px);max-width:calc(66.6666666667% - 20px)}.tyk-col--offset-lg-8{margin-left:66.6666666667%}.tyk-col--lg-9{flex-basis:calc(75% - 20px);max-width:calc(75% - 20px)}.tyk-col--offset-lg-9{margin-left:75%}.tyk-col--lg-10{flex-basis:calc(83.3333333333% - 20px);max-width:calc(83.3333333333% - 20px)}.tyk-col--offset-lg-10{margin-left:83.3333333333%}.tyk-col--lg-11{flex-basis:calc(91.6666666667% - 20px);max-width:calc(91.6666666667% - 20px)}.tyk-col--offset-lg-11{margin-left:91.6666666667%}.tyk-col--lg-12{flex-basis:calc(100% - 20px);max-width:calc(100% - 20px)}.tyk-col--offset-lg-12{margin-left:100%}}@media screen and (min-width: 1024px)and (max-width: 1247px){.tyk-col--md-0{flex-basis:calc(0% - 20px);max-width:calc(0% - 20px)}.tyk-col--offset-md-0{margin-left:0%}.tyk-col--md-1{flex-basis:calc(8.3333333333% - 20px);max-width:calc(8.3333333333% - 20px)}.tyk-col--offset-md-1{margin-left:8.3333333333%}.tyk-col--md-2{flex-basis:calc(16.6666666667% - 20px);max-width:calc(16.6666666667% - 20px)}.tyk-col--offset-md-2{margin-left:16.6666666667%}.tyk-col--md-3{flex-basis:calc(25% - 20px);max-width:calc(25% - 20px)}.tyk-col--offset-md-3{margin-left:25%}.tyk-col--md-4{flex-basis:calc(33.3333333333% - 20px);max-width:calc(33.3333333333% - 20px)}.tyk-col--offset-md-4{margin-left:33.3333333333%}.tyk-col--md-5{flex-basis:calc(41.6666666667% - 20px);max-width:calc(41.6666666667% - 20px)}.tyk-col--offset-md-5{margin-left:41.6666666667%}.tyk-col--md-6{flex-basis:calc(50% - 20px);max-width:calc(50% - 20px)}.tyk-col--offset-md-6{margin-left:50%}.tyk-col--md-7{flex-basis:calc(58.3333333333% - 20px);max-width:calc(58.3333333333% - 20px)}.tyk-col--offset-md-7{margin-left:58.3333333333%}.tyk-col--md-8{flex-basis:calc(66.6666666667% - 20px);max-width:calc(66.6666666667% - 20px)}.tyk-col--offset-md-8{margin-left:66.6666666667%}.tyk-col--md-9{flex-basis:calc(75% - 20px);max-width:calc(75% - 20px)}.tyk-col--offset-md-9{margin-left:75%}.tyk-col--md-10{flex-basis:calc(83.3333333333% - 20px);max-width:calc(83.3333333333% - 20px)}.tyk-col--offset-md-10{margin-left:83.3333333333%}.tyk-col--md-11{flex-basis:calc(91.6666666667% - 20px);max-width:calc(91.6666666667% - 20px)}.tyk-col--offset-md-11{margin-left:91.6666666667%}.tyk-col--md-12{flex-basis:calc(100% - 20px);max-width:calc(100% - 20px)}.tyk-col--offset-md-12{margin-left:100%}}@media screen and (min-width: 769px)and (max-width:1023px){.tyk-col--sm-0{flex-basis:calc(0% - 20px);max-width:calc(0% - 20px)}.tyk-col--offset-sm-0{margin-left:0%}.tyk-col--sm-1{flex-basis:calc(8.3333333333% - 20px);max-width:calc(8.3333333333% - 20px)}.tyk-col--offset-sm-1{margin-left:8.3333333333%}.tyk-col--sm-2{flex-basis:calc(16.6666666667% - 20px);max-width:calc(16.6666666667% - 20px)}.tyk-col--offset-sm-2{margin-left:16.6666666667%}.tyk-col--sm-3{flex-basis:calc(25% - 20px);max-width:calc(25% - 20px)}.tyk-col--offset-sm-3{margin-left:25%}.tyk-col--sm-4{flex-basis:calc(33.3333333333% - 20px);max-width:calc(33.3333333333% - 20px)}.tyk-col--offset-sm-4{margin-left:33.3333333333%}.tyk-col--sm-5{flex-basis:calc(41.6666666667% - 20px);max-width:calc(41.6666666667% - 20px)}.tyk-col--offset-sm-5{margin-left:41.6666666667%}.tyk-col--sm-6{flex-basis:calc(50% - 20px);max-width:calc(50% - 20px)}.tyk-col--offset-sm-6{margin-left:50%}.tyk-col--sm-7{flex-basis:calc(58.3333333333% - 20px);max-width:calc(58.3333333333% - 20px)}.tyk-col--offset-sm-7{margin-left:58.3333333333%}.tyk-col--sm-8{flex-basis:calc(66.6666666667% - 20px);max-width:calc(66.6666666667% - 20px)}.tyk-col--offset-sm-8{margin-left:66.6666666667%}.tyk-col--sm-9{flex-basis:calc(75% - 20px);max-width:calc(75% - 20px)}.tyk-col--offset-sm-9{margin-left:75%}.tyk-col--sm-10{flex-basis:calc(83.3333333333% - 20px);max-width:calc(83.3333333333% - 20px)}.tyk-col--offset-sm-10{margin-left:83.3333333333%}.tyk-col--sm-11{flex-basis:calc(91.6666666667% - 20px);max-width:calc(91.6666666667% - 20px)}.tyk-col--offset-sm-11{margin-left:91.6666666667%}.tyk-col--sm-12{flex-basis:calc(100% - 20px);max-width:calc(100% - 20px)}.tyk-col--offset-sm-12{margin-left:100%}}@media screen and (max-width: 768px){.tyk-col--xs-0{flex-basis:calc(0% - 20px);max-width:calc(0% - 20px)}.tyk-col--offset-xs-0{margin-left:0%}.tyk-col--xs-1{flex-basis:calc(8.3333333333% - 20px);max-width:calc(8.3333333333% - 20px)}.tyk-col--offset-xs-1{margin-left:8.3333333333%}.tyk-col--xs-2{flex-basis:calc(16.6666666667% - 20px);max-width:calc(16.6666666667% - 20px)}.tyk-col--offset-xs-2{margin-left:16.6666666667%}.tyk-col--xs-3{flex-basis:calc(25% - 20px);max-width:calc(25% - 20px)}.tyk-col--offset-xs-3{margin-left:25%}.tyk-col--xs-4{flex-basis:calc(33.3333333333% - 20px);max-width:calc(33.3333333333% - 20px)}.tyk-col--offset-xs-4{margin-left:33.3333333333%}.tyk-col--xs-5{flex-basis:calc(41.6666666667% - 20px);max-width:calc(41.6666666667% - 20px)}.tyk-col--offset-xs-5{margin-left:41.6666666667%}.tyk-col--xs-6{flex-basis:calc(50% - 20px);max-width:calc(50% - 20px)}.tyk-col--offset-xs-6{margin-left:50%}.tyk-col--xs-7{flex-basis:calc(58.3333333333% - 20px);max-width:calc(58.3333333333% - 20px)}.tyk-col--offset-xs-7{margin-left:58.3333333333%}.tyk-col--xs-8{flex-basis:calc(66.6666666667% - 20px);max-width:calc(66.6666666667% - 20px)}.tyk-col--offset-xs-8{margin-left:66.6666666667%}.tyk-col--xs-9{flex-basis:calc(75% - 20px);max-width:calc(75% - 20px)}.tyk-col--offset-xs-9{margin-left:75%}.tyk-col--xs-10{flex-basis:calc(83.3333333333% - 20px);max-width:calc(83.3333333333% - 20px)}.tyk-col--offset-xs-10{margin-left:83.3333333333%}.tyk-col--xs-11{flex-basis:calc(91.6666666667% - 20px);max-width:calc(91.6666666667% - 20px)}.tyk-col--offset-xs-11{margin-left:91.6666666667%}.tyk-col--xs-12{flex-basis:calc(100% - 20px);max-width:calc(100% - 20px)}.tyk-col--offset-xs-12{margin-left:100%}}@font-face{font-family:OpenSans-Bold;src:url(fonts/OpenSans-Bold.woff2) format("woff2"),url(fonts/OpenSans-Bold.woff) format("woff");font-weight:400;font-style:normal}@font-face{font-family:OpenSans-SemiBold;src:url(fonts/OpenSans-SemiBold.woff2) format("woff2"),url(fonts/OpenSans-SemiBold.woff) format("woff");font-weight:400;font-style:normal}@font-face{font-family:OpenSans-Regular;src:url(fonts/OpenSans-Regular.woff2) format("woff2"),url(fonts/OpenSans-Regular.woff) format("woff");font-weight:400;font-style:normal}@font-face{font-family:smoolthan_bold;src:url(fonts/smoolthan_bold-webfont.woff2) format("woff2"),url(fonts/smoolthan_bold-webfont.woff) format("woff");font-weight:400;font-style:normal}@font-face{font-family:smoolthan_medium;src:url(fonts/smoolthan_medium-webfont.woff2) format("woff2"),url(fonts/smoolthan_medium-webfont.woff) format("woff");font-weight:400;font-style:normal}@font-face{font-family:smoolthan_regular;src:url(fonts/smoolthan_regular-webfont.woff2) format("woff2"),url(fonts/smoolthan_regular-webfont.woff) format("woff");font-weight:400;font-style:normal}@font-face{font-family:tykon;src:url(fonts/tykon.woff2) format("woff2"),url(fonts/tykon.woff) format("woff");font-weight:400;font-style:normal}/*! -* Font Awesome Free 5.5.0 by @fontawesome - https://fontawesome.com -* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) -*/.fa,.fas,.far,.fal,.fab{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-.0667em}.fa-xs{font-size:.75em}.fa-sm{font-size:.875em}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:2.5em;padding-left:0}.fa-ul>li{position:relative}.fa-li{left:-2em;position:absolute;text-align:center;width:2em;line-height:inherit}.fa-border{border:solid .08em #eee;border-radius:.1em;padding:.2em .25em .15em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left,.fas.fa-pull-left,.far.fa-pull-left,.fal.fa-pull-left,.fab.fa-pull-left{margin-right:.3em}.fa.fa-pull-right,.fas.fa-pull-right,.far.fa-pull-right,.fal.fa-pull-right,.fab.fa-pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scale(-1,1);transform:scaleX(-1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scale(1,-1);transform:scaleY(-1)}.fa-flip-horizontal.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scale(-1,-1);transform:scale(-1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{-webkit-filter:none;filter:none}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-500px:before{content:"\f26e"}.fa-accessible-icon:before{content:"\f368"}.fa-accusoft:before{content:"\f369"}.fa-acquisitions-incorporated:before{content:"\f6af"}.fa-ad:before{content:"\f641"}.fa-address-book:before{content:"\f2b9"}.fa-address-card:before{content:"\f2bb"}.fa-adjust:before{content:"\f042"}.fa-adn:before{content:"\f170"}.fa-adversal:before{content:"\f36a"}.fa-affiliatetheme:before{content:"\f36b"}.fa-air-freshener:before{content:"\f5d0"}.fa-algolia:before{content:"\f36c"}.fa-align-center:before{content:"\f037"}.fa-align-justify:before{content:"\f039"}.fa-align-left:before{content:"\f036"}.fa-align-right:before{content:"\f038"}.fa-alipay:before{content:"\f642"}.fa-allergies:before{content:"\f461"}.fa-amazon:before{content:"\f270"}.fa-amazon-pay:before{content:"\f42c"}.fa-ambulance:before{content:"\f0f9"}.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-amilia:before{content:"\f36d"}.fa-anchor:before{content:"\f13d"}.fa-android:before{content:"\f17b"}.fa-angellist:before{content:"\f209"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-down:before{content:"\f107"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angry:before{content:"\f556"}.fa-angrycreative:before{content:"\f36e"}.fa-angular:before{content:"\f420"}.fa-ankh:before{content:"\f644"}.fa-app-store:before{content:"\f36f"}.fa-app-store-ios:before{content:"\f370"}.fa-apper:before{content:"\f371"}.fa-apple:before{content:"\f179"}.fa-apple-alt:before{content:"\f5d1"}.fa-apple-pay:before{content:"\f415"}.fa-archive:before{content:"\f187"}.fa-archway:before{content:"\f557"}.fa-arrow-alt-circle-down:before{content:"\f358"}.fa-arrow-alt-circle-left:before{content:"\f359"}.fa-arrow-alt-circle-right:before{content:"\f35a"}.fa-arrow-alt-circle-up:before{content:"\f35b"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-down:before{content:"\f063"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrows-alt:before{content:"\f0b2"}.fa-arrows-alt-h:before{content:"\f337"}.fa-arrows-alt-v:before{content:"\f338"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-asterisk:before{content:"\f069"}.fa-asymmetrik:before{content:"\f372"}.fa-at:before{content:"\f1fa"}.fa-atlas:before{content:"\f558"}.fa-atom:before{content:"\f5d2"}.fa-audible:before{content:"\f373"}.fa-audio-description:before{content:"\f29e"}.fa-autoprefixer:before{content:"\f41c"}.fa-avianex:before{content:"\f374"}.fa-aviato:before{content:"\f421"}.fa-award:before{content:"\f559"}.fa-aws:before{content:"\f375"}.fa-backspace:before{content:"\f55a"}.fa-backward:before{content:"\f04a"}.fa-balance-scale:before{content:"\f24e"}.fa-ban:before{content:"\f05e"}.fa-band-aid:before{content:"\f462"}.fa-bandcamp:before{content:"\f2d5"}.fa-barcode:before{content:"\f02a"}.fa-bars:before{content:"\f0c9"}.fa-baseball-ball:before{content:"\f433"}.fa-basketball-ball:before{content:"\f434"}.fa-bath:before{content:"\f2cd"}.fa-battery-empty:before{content:"\f244"}.fa-battery-full:before{content:"\f240"}.fa-battery-half:before{content:"\f242"}.fa-battery-quarter:before{content:"\f243"}.fa-battery-three-quarters:before{content:"\f241"}.fa-bed:before{content:"\f236"}.fa-beer:before{content:"\f0fc"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-bell:before{content:"\f0f3"}.fa-bell-slash:before{content:"\f1f6"}.fa-bezier-curve:before{content:"\f55b"}.fa-bible:before{content:"\f647"}.fa-bicycle:before{content:"\f206"}.fa-bimobject:before{content:"\f378"}.fa-binoculars:before{content:"\f1e5"}.fa-birthday-cake:before{content:"\f1fd"}.fa-bitbucket:before{content:"\f171"}.fa-bitcoin:before{content:"\f379"}.fa-bity:before{content:"\f37a"}.fa-black-tie:before{content:"\f27e"}.fa-blackberry:before{content:"\f37b"}.fa-blender:before{content:"\f517"}.fa-blender-phone:before{content:"\f6b6"}.fa-blind:before{content:"\f29d"}.fa-blogger:before{content:"\f37c"}.fa-blogger-b:before{content:"\f37d"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-bold:before{content:"\f032"}.fa-bolt:before{content:"\f0e7"}.fa-bomb:before{content:"\f1e2"}.fa-bone:before{content:"\f5d7"}.fa-bong:before{content:"\f55c"}.fa-book:before{content:"\f02d"}.fa-book-dead:before{content:"\f6b7"}.fa-book-open:before{content:"\f518"}.fa-book-reader:before{content:"\f5da"}.fa-bookmark:before{content:"\f02e"}.fa-bowling-ball:before{content:"\f436"}.fa-box:before{content:"\f466"}.fa-box-open:before{content:"\f49e"}.fa-boxes:before{content:"\f468"}.fa-braille:before{content:"\f2a1"}.fa-brain:before{content:"\f5dc"}.fa-briefcase:before{content:"\f0b1"}.fa-briefcase-medical:before{content:"\f469"}.fa-broadcast-tower:before{content:"\f519"}.fa-broom:before{content:"\f51a"}.fa-brush:before{content:"\f55d"}.fa-btc:before{content:"\f15a"}.fa-bug:before{content:"\f188"}.fa-building:before{content:"\f1ad"}.fa-bullhorn:before{content:"\f0a1"}.fa-bullseye:before{content:"\f140"}.fa-burn:before{content:"\f46a"}.fa-buromobelexperte:before{content:"\f37f"}.fa-bus:before{content:"\f207"}.fa-bus-alt:before{content:"\f55e"}.fa-business-time:before{content:"\f64a"}.fa-buysellads:before{content:"\f20d"}.fa-calculator:before{content:"\f1ec"}.fa-calendar:before{content:"\f133"}.fa-calendar-alt:before{content:"\f073"}.fa-calendar-check:before{content:"\f274"}.fa-calendar-minus:before{content:"\f272"}.fa-calendar-plus:before{content:"\f271"}.fa-calendar-times:before{content:"\f273"}.fa-camera:before{content:"\f030"}.fa-camera-retro:before{content:"\f083"}.fa-campground:before{content:"\f6bb"}.fa-cannabis:before{content:"\f55f"}.fa-capsules:before{content:"\f46b"}.fa-car:before{content:"\f1b9"}.fa-car-alt:before{content:"\f5de"}.fa-car-battery:before{content:"\f5df"}.fa-car-crash:before{content:"\f5e1"}.fa-car-side:before{content:"\f5e4"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-caret-square-down:before{content:"\f150"}.fa-caret-square-left:before{content:"\f191"}.fa-caret-square-right:before{content:"\f152"}.fa-caret-square-up:before{content:"\f151"}.fa-caret-up:before{content:"\f0d8"}.fa-cart-arrow-down:before{content:"\f218"}.fa-cart-plus:before{content:"\f217"}.fa-cat:before{content:"\f6be"}.fa-cc-amazon-pay:before{content:"\f42d"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-apple-pay:before{content:"\f416"}.fa-cc-diners-club:before{content:"\f24c"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-cc-visa:before{content:"\f1f0"}.fa-centercode:before{content:"\f380"}.fa-certificate:before{content:"\f0a3"}.fa-chair:before{content:"\f6c0"}.fa-chalkboard:before{content:"\f51b"}.fa-chalkboard-teacher:before{content:"\f51c"}.fa-charging-station:before{content:"\f5e7"}.fa-chart-area:before{content:"\f1fe"}.fa-chart-bar:before{content:"\f080"}.fa-chart-line:before{content:"\f201"}.fa-chart-pie:before{content:"\f200"}.fa-check:before{content:"\f00c"}.fa-check-circle:before{content:"\f058"}.fa-check-double:before{content:"\f560"}.fa-check-square:before{content:"\f14a"}.fa-chess:before{content:"\f439"}.fa-chess-bishop:before{content:"\f43a"}.fa-chess-board:before{content:"\f43c"}.fa-chess-king:before{content:"\f43f"}.fa-chess-knight:before{content:"\f441"}.fa-chess-pawn:before{content:"\f443"}.fa-chess-queen:before{content:"\f445"}.fa-chess-rook:before{content:"\f447"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-down:before{content:"\f078"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-chevron-up:before{content:"\f077"}.fa-child:before{content:"\f1ae"}.fa-chrome:before{content:"\f268"}.fa-church:before{content:"\f51d"}.fa-circle:before{content:"\f111"}.fa-circle-notch:before{content:"\f1ce"}.fa-city:before{content:"\f64f"}.fa-clipboard:before{content:"\f328"}.fa-clipboard-check:before{content:"\f46c"}.fa-clipboard-list:before{content:"\f46d"}.fa-clock:before{content:"\f017"}.fa-clone:before{content:"\f24d"}.fa-closed-captioning:before{content:"\f20a"}.fa-cloud:before{content:"\f0c2"}.fa-cloud-download-alt:before{content:"\f381"}.fa-cloud-meatball:before{content:"\f73b"}.fa-cloud-moon:before{content:"\f6c3"}.fa-cloud-moon-rain:before{content:"\f73c"}.fa-cloud-rain:before{content:"\f73d"}.fa-cloud-showers-heavy:before{content:"\f740"}.fa-cloud-sun:before{content:"\f6c4"}.fa-cloud-sun-rain:before{content:"\f743"}.fa-cloud-upload-alt:before{content:"\f382"}.fa-cloudscale:before{content:"\f383"}.fa-cloudsmith:before{content:"\f384"}.fa-cloudversify:before{content:"\f385"}.fa-cocktail:before{content:"\f561"}.fa-code:before{content:"\f121"}.fa-code-branch:before{content:"\f126"}.fa-codepen:before{content:"\f1cb"}.fa-codiepie:before{content:"\f284"}.fa-coffee:before{content:"\f0f4"}.fa-cog:before{content:"\f013"}.fa-cogs:before{content:"\f085"}.fa-coins:before{content:"\f51e"}.fa-columns:before{content:"\f0db"}.fa-comment:before{content:"\f075"}.fa-comment-alt:before{content:"\f27a"}.fa-comment-dollar:before{content:"\f651"}.fa-comment-dots:before{content:"\f4ad"}.fa-comment-slash:before{content:"\f4b3"}.fa-comments:before{content:"\f086"}.fa-comments-dollar:before{content:"\f653"}.fa-compact-disc:before{content:"\f51f"}.fa-compass:before{content:"\f14e"}.fa-compress:before{content:"\f066"}.fa-compress-arrows-alt:before{content:"\f78c"}.fa-concierge-bell:before{content:"\f562"}.fa-connectdevelop:before{content:"\f20e"}.fa-contao:before{content:"\f26d"}.fa-cookie:before{content:"\f563"}.fa-cookie-bite:before{content:"\f564"}.fa-copy:before{content:"\f0c5"}.fa-copyright:before{content:"\f1f9"}.fa-couch:before{content:"\f4b8"}.fa-cpanel:before{content:"\f388"}.fa-creative-commons:before{content:"\f25e"}.fa-creative-commons-by:before{content:"\f4e7"}.fa-creative-commons-nc:before{content:"\f4e8"}.fa-creative-commons-nc-eu:before{content:"\f4e9"}.fa-creative-commons-nc-jp:before{content:"\f4ea"}.fa-creative-commons-nd:before{content:"\f4eb"}.fa-creative-commons-pd:before{content:"\f4ec"}.fa-creative-commons-pd-alt:before{content:"\f4ed"}.fa-creative-commons-remix:before{content:"\f4ee"}.fa-creative-commons-sa:before{content:"\f4ef"}.fa-creative-commons-sampling:before{content:"\f4f0"}.fa-creative-commons-sampling-plus:before{content:"\f4f1"}.fa-creative-commons-share:before{content:"\f4f2"}.fa-creative-commons-zero:before{content:"\f4f3"}.fa-credit-card:before{content:"\f09d"}.fa-critical-role:before{content:"\f6c9"}.fa-crop:before{content:"\f125"}.fa-crop-alt:before{content:"\f565"}.fa-cross:before{content:"\f654"}.fa-crosshairs:before{content:"\f05b"}.fa-crow:before{content:"\f520"}.fa-crown:before{content:"\f521"}.fa-css3:before{content:"\f13c"}.fa-css3-alt:before{content:"\f38b"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-cut:before{content:"\f0c4"}.fa-cuttlefish:before{content:"\f38c"}.fa-d-and-d:before{content:"\f38d"}.fa-d-and-d-beyond:before{content:"\f6ca"}.fa-dashcube:before{content:"\f210"}.fa-database:before{content:"\f1c0"}.fa-deaf:before{content:"\f2a4"}.fa-delicious:before{content:"\f1a5"}.fa-democrat:before{content:"\f747"}.fa-deploydog:before{content:"\f38e"}.fa-deskpro:before{content:"\f38f"}.fa-desktop:before{content:"\f108"}.fa-dev:before{content:"\f6cc"}.fa-deviantart:before{content:"\f1bd"}.fa-dharmachakra:before{content:"\f655"}.fa-diagnoses:before{content:"\f470"}.fa-dice:before{content:"\f522"}.fa-dice-d20:before{content:"\f6cf"}.fa-dice-d6:before{content:"\f6d1"}.fa-dice-five:before{content:"\f523"}.fa-dice-four:before{content:"\f524"}.fa-dice-one:before{content:"\f525"}.fa-dice-six:before{content:"\f526"}.fa-dice-three:before{content:"\f527"}.fa-dice-two:before{content:"\f528"}.fa-digg:before{content:"\f1a6"}.fa-digital-ocean:before{content:"\f391"}.fa-digital-tachograph:before{content:"\f566"}.fa-directions:before{content:"\f5eb"}.fa-discord:before{content:"\f392"}.fa-discourse:before{content:"\f393"}.fa-divide:before{content:"\f529"}.fa-dizzy:before{content:"\f567"}.fa-dna:before{content:"\f471"}.fa-dochub:before{content:"\f394"}.fa-docker:before{content:"\f395"}.fa-dog:before{content:"\f6d3"}.fa-dollar-sign:before{content:"\f155"}.fa-dolly:before{content:"\f472"}.fa-dolly-flatbed:before{content:"\f474"}.fa-donate:before{content:"\f4b9"}.fa-door-closed:before{content:"\f52a"}.fa-door-open:before{content:"\f52b"}.fa-dot-circle:before{content:"\f192"}.fa-dove:before{content:"\f4ba"}.fa-download:before{content:"\f019"}.fa-draft2digital:before{content:"\f396"}.fa-drafting-compass:before{content:"\f568"}.fa-dragon:before{content:"\f6d5"}.fa-draw-polygon:before{content:"\f5ee"}.fa-dribbble:before{content:"\f17d"}.fa-dribbble-square:before{content:"\f397"}.fa-dropbox:before{content:"\f16b"}.fa-drum:before{content:"\f569"}.fa-drum-steelpan:before{content:"\f56a"}.fa-drumstick-bite:before{content:"\f6d7"}.fa-drupal:before{content:"\f1a9"}.fa-dumbbell:before{content:"\f44b"}.fa-dungeon:before{content:"\f6d9"}.fa-dyalog:before{content:"\f399"}.fa-earlybirds:before{content:"\f39a"}.fa-ebay:before{content:"\f4f4"}.fa-edge:before{content:"\f282"}.fa-edit:before{content:"\f044"}.fa-eject:before{content:"\f052"}.fa-elementor:before{content:"\f430"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-ello:before{content:"\f5f1"}.fa-ember:before{content:"\f423"}.fa-empire:before{content:"\f1d1"}.fa-envelope:before{content:"\f0e0"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-open-text:before{content:"\f658"}.fa-envelope-square:before{content:"\f199"}.fa-envira:before{content:"\f299"}.fa-equals:before{content:"\f52c"}.fa-eraser:before{content:"\f12d"}.fa-erlang:before{content:"\f39d"}.fa-ethereum:before{content:"\f42e"}.fa-etsy:before{content:"\f2d7"}.fa-euro-sign:before{content:"\f153"}.fa-exchange-alt:before{content:"\f362"}.fa-exclamation:before{content:"\f12a"}.fa-exclamation-circle:before{content:"\f06a"}.fa-exclamation-triangle:before{content:"\f071"}.fa-expand:before{content:"\f065"}.fa-expand-arrows-alt:before{content:"\f31e"}.fa-expeditedssl:before{content:"\f23e"}.fa-external-link-alt:before{content:"\f35d"}.fa-external-link-square-alt:before{content:"\f360"}.fa-eye:before{content:"\f06e"}.fa-eye-dropper:before{content:"\f1fb"}.fa-eye-slash:before{content:"\f070"}.fa-facebook:before{content:"\f09a"}.fa-facebook-f:before{content:"\f39e"}.fa-facebook-messenger:before{content:"\f39f"}.fa-facebook-square:before{content:"\f082"}.fa-fantasy-flight-games:before{content:"\f6dc"}.fa-fast-backward:before{content:"\f049"}.fa-fast-forward:before{content:"\f050"}.fa-fax:before{content:"\f1ac"}.fa-feather:before{content:"\f52d"}.fa-feather-alt:before{content:"\f56b"}.fa-female:before{content:"\f182"}.fa-fighter-jet:before{content:"\f0fb"}.fa-file:before{content:"\f15b"}.fa-file-alt:before{content:"\f15c"}.fa-file-archive:before{content:"\f1c6"}.fa-file-audio:before{content:"\f1c7"}.fa-file-code:before{content:"\f1c9"}.fa-file-contract:before{content:"\f56c"}.fa-file-csv:before{content:"\f6dd"}.fa-file-download:before{content:"\f56d"}.fa-file-excel:before{content:"\f1c3"}.fa-file-export:before{content:"\f56e"}.fa-file-image:before{content:"\f1c5"}.fa-file-import:before{content:"\f56f"}.fa-file-invoice:before{content:"\f570"}.fa-file-invoice-dollar:before{content:"\f571"}.fa-file-medical:before{content:"\f477"}.fa-file-medical-alt:before{content:"\f478"}.fa-file-pdf:before{content:"\f1c1"}.fa-file-powerpoint:before{content:"\f1c4"}.fa-file-prescription:before{content:"\f572"}.fa-file-signature:before{content:"\f573"}.fa-file-upload:before{content:"\f574"}.fa-file-video:before{content:"\f1c8"}.fa-file-word:before{content:"\f1c2"}.fa-fill:before{content:"\f575"}.fa-fill-drip:before{content:"\f576"}.fa-film:before{content:"\f008"}.fa-filter:before{content:"\f0b0"}.fa-fingerprint:before{content:"\f577"}.fa-fire:before{content:"\f06d"}.fa-fire-extinguisher:before{content:"\f134"}.fa-firefox:before{content:"\f269"}.fa-first-aid:before{content:"\f479"}.fa-first-order:before{content:"\f2b0"}.fa-first-order-alt:before{content:"\f50a"}.fa-firstdraft:before{content:"\f3a1"}.fa-fish:before{content:"\f578"}.fa-fist-raised:before{content:"\f6de"}.fa-flag:before{content:"\f024"}.fa-flag-checkered:before{content:"\f11e"}.fa-flag-usa:before{content:"\f74d"}.fa-flask:before{content:"\f0c3"}.fa-flickr:before{content:"\f16e"}.fa-flipboard:before{content:"\f44d"}.fa-flushed:before{content:"\f579"}.fa-fly:before{content:"\f417"}.fa-folder:before{content:"\f07b"}.fa-folder-minus:before{content:"\f65d"}.fa-folder-open:before{content:"\f07c"}.fa-folder-plus:before{content:"\f65e"}.fa-font:before{content:"\f031"}.fa-font-awesome:before{content:"\f2b4"}.fa-font-awesome-alt:before{content:"\f35c"}.fa-font-awesome-flag:before{content:"\f425"}.fa-font-awesome-logo-full:before{content:"\f4e6"}.fa-fonticons:before{content:"\f280"}.fa-fonticons-fi:before{content:"\f3a2"}.fa-football-ball:before{content:"\f44e"}.fa-fort-awesome:before{content:"\f286"}.fa-fort-awesome-alt:before{content:"\f3a3"}.fa-forumbee:before{content:"\f211"}.fa-forward:before{content:"\f04e"}.fa-foursquare:before{content:"\f180"}.fa-free-code-camp:before{content:"\f2c5"}.fa-freebsd:before{content:"\f3a4"}.fa-frog:before{content:"\f52e"}.fa-frown:before{content:"\f119"}.fa-frown-open:before{content:"\f57a"}.fa-fulcrum:before{content:"\f50b"}.fa-funnel-dollar:before{content:"\f662"}.fa-futbol:before{content:"\f1e3"}.fa-galactic-republic:before{content:"\f50c"}.fa-galactic-senate:before{content:"\f50d"}.fa-gamepad:before{content:"\f11b"}.fa-gas-pump:before{content:"\f52f"}.fa-gavel:before{content:"\f0e3"}.fa-gem:before{content:"\f3a5"}.fa-genderless:before{content:"\f22d"}.fa-get-pocket:before{content:"\f265"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-ghost:before{content:"\f6e2"}.fa-gift:before{content:"\f06b"}.fa-git:before{content:"\f1d3"}.fa-git-square:before{content:"\f1d2"}.fa-github:before{content:"\f09b"}.fa-github-alt:before{content:"\f113"}.fa-github-square:before{content:"\f092"}.fa-gitkraken:before{content:"\f3a6"}.fa-gitlab:before{content:"\f296"}.fa-gitter:before{content:"\f426"}.fa-glass-martini:before{content:"\f000"}.fa-glass-martini-alt:before{content:"\f57b"}.fa-glasses:before{content:"\f530"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-globe:before{content:"\f0ac"}.fa-globe-africa:before{content:"\f57c"}.fa-globe-americas:before{content:"\f57d"}.fa-globe-asia:before{content:"\f57e"}.fa-gofore:before{content:"\f3a7"}.fa-golf-ball:before{content:"\f450"}.fa-goodreads:before{content:"\f3a8"}.fa-goodreads-g:before{content:"\f3a9"}.fa-google:before{content:"\f1a0"}.fa-google-drive:before{content:"\f3aa"}.fa-google-play:before{content:"\f3ab"}.fa-google-plus:before{content:"\f2b3"}.fa-google-plus-g:before{content:"\f0d5"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-wallet:before{content:"\f1ee"}.fa-gopuram:before{content:"\f664"}.fa-graduation-cap:before{content:"\f19d"}.fa-gratipay:before{content:"\f184"}.fa-grav:before{content:"\f2d6"}.fa-greater-than:before{content:"\f531"}.fa-greater-than-equal:before{content:"\f532"}.fa-grimace:before{content:"\f57f"}.fa-grin:before{content:"\f580"}.fa-grin-alt:before{content:"\f581"}.fa-grin-beam:before{content:"\f582"}.fa-grin-beam-sweat:before{content:"\f583"}.fa-grin-hearts:before{content:"\f584"}.fa-grin-squint:before{content:"\f585"}.fa-grin-squint-tears:before{content:"\f586"}.fa-grin-stars:before{content:"\f587"}.fa-grin-tears:before{content:"\f588"}.fa-grin-tongue:before{content:"\f589"}.fa-grin-tongue-squint:before{content:"\f58a"}.fa-grin-tongue-wink:before{content:"\f58b"}.fa-grin-wink:before{content:"\f58c"}.fa-grip-horizontal:before{content:"\f58d"}.fa-grip-vertical:before{content:"\f58e"}.fa-gripfire:before{content:"\f3ac"}.fa-grunt:before{content:"\f3ad"}.fa-gulp:before{content:"\f3ae"}.fa-h-square:before{content:"\f0fd"}.fa-hacker-news:before{content:"\f1d4"}.fa-hacker-news-square:before{content:"\f3af"}.fa-hackerrank:before{content:"\f5f7"}.fa-hammer:before{content:"\f6e3"}.fa-hamsa:before{content:"\f665"}.fa-hand-holding:before{content:"\f4bd"}.fa-hand-holding-heart:before{content:"\f4be"}.fa-hand-holding-usd:before{content:"\f4c0"}.fa-hand-lizard:before{content:"\f258"}.fa-hand-paper:before{content:"\f256"}.fa-hand-peace:before{content:"\f25b"}.fa-hand-point-down:before{content:"\f0a7"}.fa-hand-point-left:before{content:"\f0a5"}.fa-hand-point-right:before{content:"\f0a4"}.fa-hand-point-up:before{content:"\f0a6"}.fa-hand-pointer:before{content:"\f25a"}.fa-hand-rock:before{content:"\f255"}.fa-hand-scissors:before{content:"\f257"}.fa-hand-spock:before{content:"\f259"}.fa-hands:before{content:"\f4c2"}.fa-hands-helping:before{content:"\f4c4"}.fa-handshake:before{content:"\f2b5"}.fa-hanukiah:before{content:"\f6e6"}.fa-hashtag:before{content:"\f292"}.fa-hat-wizard:before{content:"\f6e8"}.fa-haykal:before{content:"\f666"}.fa-hdd:before{content:"\f0a0"}.fa-heading:before{content:"\f1dc"}.fa-headphones:before{content:"\f025"}.fa-headphones-alt:before{content:"\f58f"}.fa-headset:before{content:"\f590"}.fa-heart:before{content:"\f004"}.fa-heartbeat:before{content:"\f21e"}.fa-helicopter:before{content:"\f533"}.fa-highlighter:before{content:"\f591"}.fa-hiking:before{content:"\f6ec"}.fa-hippo:before{content:"\f6ed"}.fa-hips:before{content:"\f452"}.fa-hire-a-helper:before{content:"\f3b0"}.fa-history:before{content:"\f1da"}.fa-hockey-puck:before{content:"\f453"}.fa-home:before{content:"\f015"}.fa-hooli:before{content:"\f427"}.fa-hornbill:before{content:"\f592"}.fa-horse:before{content:"\f6f0"}.fa-hospital:before{content:"\f0f8"}.fa-hospital-alt:before{content:"\f47d"}.fa-hospital-symbol:before{content:"\f47e"}.fa-hot-tub:before{content:"\f593"}.fa-hotel:before{content:"\f594"}.fa-hotjar:before{content:"\f3b1"}.fa-hourglass:before{content:"\f254"}.fa-hourglass-end:before{content:"\f253"}.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-start:before{content:"\f251"}.fa-house-damage:before{content:"\f6f1"}.fa-houzz:before{content:"\f27c"}.fa-hryvnia:before{content:"\f6f2"}.fa-html5:before{content:"\f13b"}.fa-hubspot:before{content:"\f3b2"}.fa-i-cursor:before{content:"\f246"}.fa-id-badge:before{content:"\f2c1"}.fa-id-card:before{content:"\f2c2"}.fa-id-card-alt:before{content:"\f47f"}.fa-image:before{content:"\f03e"}.fa-images:before{content:"\f302"}.fa-imdb:before{content:"\f2d8"}.fa-inbox:before{content:"\f01c"}.fa-indent:before{content:"\f03c"}.fa-industry:before{content:"\f275"}.fa-infinity:before{content:"\f534"}.fa-info:before{content:"\f129"}.fa-info-circle:before{content:"\f05a"}.fa-instagram:before{content:"\f16d"}.fa-internet-explorer:before{content:"\f26b"}.fa-ioxhost:before{content:"\f208"}.fa-italic:before{content:"\f033"}.fa-itunes:before{content:"\f3b4"}.fa-itunes-note:before{content:"\f3b5"}.fa-java:before{content:"\f4e4"}.fa-jedi:before{content:"\f669"}.fa-jedi-order:before{content:"\f50e"}.fa-jenkins:before{content:"\f3b6"}.fa-joget:before{content:"\f3b7"}.fa-joint:before{content:"\f595"}.fa-joomla:before{content:"\f1aa"}.fa-journal-whills:before{content:"\f66a"}.fa-js:before{content:"\f3b8"}.fa-js-square:before{content:"\f3b9"}.fa-jsfiddle:before{content:"\f1cc"}.fa-kaaba:before{content:"\f66b"}.fa-kaggle:before{content:"\f5fa"}.fa-key:before{content:"\f084"}.fa-keybase:before{content:"\f4f5"}.fa-keyboard:before{content:"\f11c"}.fa-keycdn:before{content:"\f3ba"}.fa-khanda:before{content:"\f66d"}.fa-kickstarter:before{content:"\f3bb"}.fa-kickstarter-k:before{content:"\f3bc"}.fa-kiss:before{content:"\f596"}.fa-kiss-beam:before{content:"\f597"}.fa-kiss-wink-heart:before{content:"\f598"}.fa-kiwi-bird:before{content:"\f535"}.fa-korvue:before{content:"\f42f"}.fa-landmark:before{content:"\f66f"}.fa-language:before{content:"\f1ab"}.fa-laptop:before{content:"\f109"}.fa-laptop-code:before{content:"\f5fc"}.fa-laravel:before{content:"\f3bd"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-laugh:before{content:"\f599"}.fa-laugh-beam:before{content:"\f59a"}.fa-laugh-squint:before{content:"\f59b"}.fa-laugh-wink:before{content:"\f59c"}.fa-layer-group:before{content:"\f5fd"}.fa-leaf:before{content:"\f06c"}.fa-leanpub:before{content:"\f212"}.fa-lemon:before{content:"\f094"}.fa-less:before{content:"\f41d"}.fa-less-than:before{content:"\f536"}.fa-less-than-equal:before{content:"\f537"}.fa-level-down-alt:before{content:"\f3be"}.fa-level-up-alt:before{content:"\f3bf"}.fa-life-ring:before{content:"\f1cd"}.fa-lightbulb:before{content:"\f0eb"}.fa-line:before{content:"\f3c0"}.fa-link:before{content:"\f0c1"}.fa-linkedin:before{content:"\f08c"}.fa-linkedin-in:before{content:"\f0e1"}.fa-linode:before{content:"\f2b8"}.fa-linux:before{content:"\f17c"}.fa-lira-sign:before{content:"\f195"}.fa-list:before{content:"\f03a"}.fa-list-alt:before{content:"\f022"}.fa-list-ol:before{content:"\f0cb"}.fa-list-ul:before{content:"\f0ca"}.fa-location-arrow:before{content:"\f124"}.fa-lock:before{content:"\f023"}.fa-lock-open:before{content:"\f3c1"}.fa-long-arrow-alt-down:before{content:"\f309"}.fa-long-arrow-alt-left:before{content:"\f30a"}.fa-long-arrow-alt-right:before{content:"\f30b"}.fa-long-arrow-alt-up:before{content:"\f30c"}.fa-low-vision:before{content:"\f2a8"}.fa-luggage-cart:before{content:"\f59d"}.fa-lyft:before{content:"\f3c3"}.fa-magento:before{content:"\f3c4"}.fa-magic:before{content:"\f0d0"}.fa-magnet:before{content:"\f076"}.fa-mail-bulk:before{content:"\f674"}.fa-mailchimp:before{content:"\f59e"}.fa-male:before{content:"\f183"}.fa-mandalorian:before{content:"\f50f"}.fa-map:before{content:"\f279"}.fa-map-marked:before{content:"\f59f"}.fa-map-marked-alt:before{content:"\f5a0"}.fa-map-marker:before{content:"\f041"}.fa-map-marker-alt:before{content:"\f3c5"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-markdown:before{content:"\f60f"}.fa-marker:before{content:"\f5a1"}.fa-mars:before{content:"\f222"}.fa-mars-double:before{content:"\f227"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mask:before{content:"\f6fa"}.fa-mastodon:before{content:"\f4f6"}.fa-maxcdn:before{content:"\f136"}.fa-medal:before{content:"\f5a2"}.fa-medapps:before{content:"\f3c6"}.fa-medium:before{content:"\f23a"}.fa-medium-m:before{content:"\f3c7"}.fa-medkit:before{content:"\f0fa"}.fa-medrt:before{content:"\f3c8"}.fa-meetup:before{content:"\f2e0"}.fa-megaport:before{content:"\f5a3"}.fa-meh:before{content:"\f11a"}.fa-meh-blank:before{content:"\f5a4"}.fa-meh-rolling-eyes:before{content:"\f5a5"}.fa-memory:before{content:"\f538"}.fa-menorah:before{content:"\f676"}.fa-mercury:before{content:"\f223"}.fa-meteor:before{content:"\f753"}.fa-microchip:before{content:"\f2db"}.fa-microphone:before{content:"\f130"}.fa-microphone-alt:before{content:"\f3c9"}.fa-microphone-alt-slash:before{content:"\f539"}.fa-microphone-slash:before{content:"\f131"}.fa-microscope:before{content:"\f610"}.fa-microsoft:before{content:"\f3ca"}.fa-minus:before{content:"\f068"}.fa-minus-circle:before{content:"\f056"}.fa-minus-square:before{content:"\f146"}.fa-mix:before{content:"\f3cb"}.fa-mixcloud:before{content:"\f289"}.fa-mizuni:before{content:"\f3cc"}.fa-mobile:before{content:"\f10b"}.fa-mobile-alt:before{content:"\f3cd"}.fa-modx:before{content:"\f285"}.fa-monero:before{content:"\f3d0"}.fa-money-bill:before{content:"\f0d6"}.fa-money-bill-alt:before{content:"\f3d1"}.fa-money-bill-wave:before{content:"\f53a"}.fa-money-bill-wave-alt:before{content:"\f53b"}.fa-money-check:before{content:"\f53c"}.fa-money-check-alt:before{content:"\f53d"}.fa-monument:before{content:"\f5a6"}.fa-moon:before{content:"\f186"}.fa-mortar-pestle:before{content:"\f5a7"}.fa-mosque:before{content:"\f678"}.fa-motorcycle:before{content:"\f21c"}.fa-mountain:before{content:"\f6fc"}.fa-mouse-pointer:before{content:"\f245"}.fa-music:before{content:"\f001"}.fa-napster:before{content:"\f3d2"}.fa-neos:before{content:"\f612"}.fa-network-wired:before{content:"\f6ff"}.fa-neuter:before{content:"\f22c"}.fa-newspaper:before{content:"\f1ea"}.fa-nimblr:before{content:"\f5a8"}.fa-nintendo-switch:before{content:"\f418"}.fa-node:before{content:"\f419"}.fa-node-js:before{content:"\f3d3"}.fa-not-equal:before{content:"\f53e"}.fa-notes-medical:before{content:"\f481"}.fa-npm:before{content:"\f3d4"}.fa-ns8:before{content:"\f3d5"}.fa-nutritionix:before{content:"\f3d6"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-oil-can:before{content:"\f613"}.fa-old-republic:before{content:"\f510"}.fa-om:before{content:"\f679"}.fa-opencart:before{content:"\f23d"}.fa-openid:before{content:"\f19b"}.fa-opera:before{content:"\f26a"}.fa-optin-monster:before{content:"\f23c"}.fa-osi:before{content:"\f41a"}.fa-otter:before{content:"\f700"}.fa-outdent:before{content:"\f03b"}.fa-page4:before{content:"\f3d7"}.fa-pagelines:before{content:"\f18c"}.fa-paint-brush:before{content:"\f1fc"}.fa-paint-roller:before{content:"\f5aa"}.fa-palette:before{content:"\f53f"}.fa-palfed:before{content:"\f3d8"}.fa-pallet:before{content:"\f482"}.fa-paper-plane:before{content:"\f1d8"}.fa-paperclip:before{content:"\f0c6"}.fa-parachute-box:before{content:"\f4cd"}.fa-paragraph:before{content:"\f1dd"}.fa-parking:before{content:"\f540"}.fa-passport:before{content:"\f5ab"}.fa-pastafarianism:before{content:"\f67b"}.fa-paste:before{content:"\f0ea"}.fa-patreon:before{content:"\f3d9"}.fa-pause:before{content:"\f04c"}.fa-pause-circle:before{content:"\f28b"}.fa-paw:before{content:"\f1b0"}.fa-paypal:before{content:"\f1ed"}.fa-peace:before{content:"\f67c"}.fa-pen:before{content:"\f304"}.fa-pen-alt:before{content:"\f305"}.fa-pen-fancy:before{content:"\f5ac"}.fa-pen-nib:before{content:"\f5ad"}.fa-pen-square:before{content:"\f14b"}.fa-pencil-alt:before{content:"\f303"}.fa-pencil-ruler:before{content:"\f5ae"}.fa-penny-arcade:before{content:"\f704"}.fa-people-carry:before{content:"\f4ce"}.fa-percent:before{content:"\f295"}.fa-percentage:before{content:"\f541"}.fa-periscope:before{content:"\f3da"}.fa-person-booth:before{content:"\f756"}.fa-phabricator:before{content:"\f3db"}.fa-phoenix-framework:before{content:"\f3dc"}.fa-phoenix-squadron:before{content:"\f511"}.fa-phone:before{content:"\f095"}.fa-phone-slash:before{content:"\f3dd"}.fa-phone-square:before{content:"\f098"}.fa-phone-volume:before{content:"\f2a0"}.fa-php:before{content:"\f457"}.fa-pied-piper:before{content:"\f2ae"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-pied-piper-hat:before{content:"\f4e5"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-piggy-bank:before{content:"\f4d3"}.fa-pills:before{content:"\f484"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-p:before{content:"\f231"}.fa-pinterest-square:before{content:"\f0d3"}.fa-place-of-worship:before{content:"\f67f"}.fa-plane:before{content:"\f072"}.fa-plane-arrival:before{content:"\f5af"}.fa-plane-departure:before{content:"\f5b0"}.fa-play:before{content:"\f04b"}.fa-play-circle:before{content:"\f144"}.fa-playstation:before{content:"\f3df"}.fa-plug:before{content:"\f1e6"}.fa-plus:before{content:"\f067"}.fa-plus-circle:before{content:"\f055"}.fa-plus-square:before{content:"\f0fe"}.fa-podcast:before{content:"\f2ce"}.fa-poll:before{content:"\f681"}.fa-poll-h:before{content:"\f682"}.fa-poo:before{content:"\f2fe"}.fa-poo-storm:before{content:"\f75a"}.fa-poop:before{content:"\f619"}.fa-portrait:before{content:"\f3e0"}.fa-pound-sign:before{content:"\f154"}.fa-power-off:before{content:"\f011"}.fa-pray:before{content:"\f683"}.fa-praying-hands:before{content:"\f684"}.fa-prescription:before{content:"\f5b1"}.fa-prescription-bottle:before{content:"\f485"}.fa-prescription-bottle-alt:before{content:"\f486"}.fa-print:before{content:"\f02f"}.fa-procedures:before{content:"\f487"}.fa-product-hunt:before{content:"\f288"}.fa-project-diagram:before{content:"\f542"}.fa-pushed:before{content:"\f3e1"}.fa-puzzle-piece:before{content:"\f12e"}.fa-python:before{content:"\f3e2"}.fa-qq:before{content:"\f1d6"}.fa-qrcode:before{content:"\f029"}.fa-question:before{content:"\f128"}.fa-question-circle:before{content:"\f059"}.fa-quidditch:before{content:"\f458"}.fa-quinscape:before{content:"\f459"}.fa-quora:before{content:"\f2c4"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-quran:before{content:"\f687"}.fa-r-project:before{content:"\f4f7"}.fa-rainbow:before{content:"\f75b"}.fa-random:before{content:"\f074"}.fa-ravelry:before{content:"\f2d9"}.fa-react:before{content:"\f41b"}.fa-reacteurope:before{content:"\f75d"}.fa-readme:before{content:"\f4d5"}.fa-rebel:before{content:"\f1d0"}.fa-receipt:before{content:"\f543"}.fa-recycle:before{content:"\f1b8"}.fa-red-river:before{content:"\f3e3"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-alien:before{content:"\f281"}.fa-reddit-square:before{content:"\f1a2"}.fa-redo:before{content:"\f01e"}.fa-redo-alt:before{content:"\f2f9"}.fa-registered:before{content:"\f25d"}.fa-renren:before{content:"\f18b"}.fa-reply:before{content:"\f3e5"}.fa-reply-all:before{content:"\f122"}.fa-replyd:before{content:"\f3e6"}.fa-republican:before{content:"\f75e"}.fa-researchgate:before{content:"\f4f8"}.fa-resolving:before{content:"\f3e7"}.fa-retweet:before{content:"\f079"}.fa-rev:before{content:"\f5b2"}.fa-ribbon:before{content:"\f4d6"}.fa-ring:before{content:"\f70b"}.fa-road:before{content:"\f018"}.fa-robot:before{content:"\f544"}.fa-rocket:before{content:"\f135"}.fa-rocketchat:before{content:"\f3e8"}.fa-rockrms:before{content:"\f3e9"}.fa-route:before{content:"\f4d7"}.fa-rss:before{content:"\f09e"}.fa-rss-square:before{content:"\f143"}.fa-ruble-sign:before{content:"\f158"}.fa-ruler:before{content:"\f545"}.fa-ruler-combined:before{content:"\f546"}.fa-ruler-horizontal:before{content:"\f547"}.fa-ruler-vertical:before{content:"\f548"}.fa-running:before{content:"\f70c"}.fa-rupee-sign:before{content:"\f156"}.fa-sad-cry:before{content:"\f5b3"}.fa-sad-tear:before{content:"\f5b4"}.fa-safari:before{content:"\f267"}.fa-sass:before{content:"\f41e"}.fa-save:before{content:"\f0c7"}.fa-schlix:before{content:"\f3ea"}.fa-school:before{content:"\f549"}.fa-screwdriver:before{content:"\f54a"}.fa-scribd:before{content:"\f28a"}.fa-scroll:before{content:"\f70e"}.fa-search:before{content:"\f002"}.fa-search-dollar:before{content:"\f688"}.fa-search-location:before{content:"\f689"}.fa-search-minus:before{content:"\f010"}.fa-search-plus:before{content:"\f00e"}.fa-searchengin:before{content:"\f3eb"}.fa-seedling:before{content:"\f4d8"}.fa-sellcast:before{content:"\f2da"}.fa-sellsy:before{content:"\f213"}.fa-server:before{content:"\f233"}.fa-servicestack:before{content:"\f3ec"}.fa-shapes:before{content:"\f61f"}.fa-share:before{content:"\f064"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-share-square:before{content:"\f14d"}.fa-shekel-sign:before{content:"\f20b"}.fa-shield-alt:before{content:"\f3ed"}.fa-ship:before{content:"\f21a"}.fa-shipping-fast:before{content:"\f48b"}.fa-shirtsinbulk:before{content:"\f214"}.fa-shoe-prints:before{content:"\f54b"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-shopping-cart:before{content:"\f07a"}.fa-shopware:before{content:"\f5b5"}.fa-shower:before{content:"\f2cc"}.fa-shuttle-van:before{content:"\f5b6"}.fa-sign:before{content:"\f4d9"}.fa-sign-in-alt:before{content:"\f2f6"}.fa-sign-language:before{content:"\f2a7"}.fa-sign-out-alt:before{content:"\f2f5"}.fa-signal:before{content:"\f012"}.fa-signature:before{content:"\f5b7"}.fa-simplybuilt:before{content:"\f215"}.fa-sistrix:before{content:"\f3ee"}.fa-sitemap:before{content:"\f0e8"}.fa-sith:before{content:"\f512"}.fa-skull:before{content:"\f54c"}.fa-skull-crossbones:before{content:"\f714"}.fa-skyatlas:before{content:"\f216"}.fa-skype:before{content:"\f17e"}.fa-slack:before{content:"\f198"}.fa-slack-hash:before{content:"\f3ef"}.fa-slash:before{content:"\f715"}.fa-sliders-h:before{content:"\f1de"}.fa-slideshare:before{content:"\f1e7"}.fa-smile:before{content:"\f118"}.fa-smile-beam:before{content:"\f5b8"}.fa-smile-wink:before{content:"\f4da"}.fa-smog:before{content:"\f75f"}.fa-smoking:before{content:"\f48d"}.fa-smoking-ban:before{content:"\f54d"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-snowflake:before{content:"\f2dc"}.fa-socks:before{content:"\f696"}.fa-solar-panel:before{content:"\f5ba"}.fa-sort:before{content:"\f0dc"}.fa-sort-alpha-down:before{content:"\f15d"}.fa-sort-alpha-up:before{content:"\f15e"}.fa-sort-amount-down:before{content:"\f160"}.fa-sort-amount-up:before{content:"\f161"}.fa-sort-down:before{content:"\f0dd"}.fa-sort-numeric-down:before{content:"\f162"}.fa-sort-numeric-up:before{content:"\f163"}.fa-sort-up:before{content:"\f0de"}.fa-soundcloud:before{content:"\f1be"}.fa-spa:before{content:"\f5bb"}.fa-space-shuttle:before{content:"\f197"}.fa-speakap:before{content:"\f3f3"}.fa-spider:before{content:"\f717"}.fa-spinner:before{content:"\f110"}.fa-splotch:before{content:"\f5bc"}.fa-spotify:before{content:"\f1bc"}.fa-spray-can:before{content:"\f5bd"}.fa-square:before{content:"\f0c8"}.fa-square-full:before{content:"\f45c"}.fa-square-root-alt:before{content:"\f698"}.fa-squarespace:before{content:"\f5be"}.fa-stack-exchange:before{content:"\f18d"}.fa-stack-overflow:before{content:"\f16c"}.fa-stamp:before{content:"\f5bf"}.fa-star:before{content:"\f005"}.fa-star-and-crescent:before{content:"\f699"}.fa-star-half:before{content:"\f089"}.fa-star-half-alt:before{content:"\f5c0"}.fa-star-of-david:before{content:"\f69a"}.fa-star-of-life:before{content:"\f621"}.fa-staylinked:before{content:"\f3f5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-steam-symbol:before{content:"\f3f6"}.fa-step-backward:before{content:"\f048"}.fa-step-forward:before{content:"\f051"}.fa-stethoscope:before{content:"\f0f1"}.fa-sticker-mule:before{content:"\f3f7"}.fa-sticky-note:before{content:"\f249"}.fa-stop:before{content:"\f04d"}.fa-stop-circle:before{content:"\f28d"}.fa-stopwatch:before{content:"\f2f2"}.fa-store:before{content:"\f54e"}.fa-store-alt:before{content:"\f54f"}.fa-strava:before{content:"\f428"}.fa-stream:before{content:"\f550"}.fa-street-view:before{content:"\f21d"}.fa-strikethrough:before{content:"\f0cc"}.fa-stripe:before{content:"\f429"}.fa-stripe-s:before{content:"\f42a"}.fa-stroopwafel:before{content:"\f551"}.fa-studiovinari:before{content:"\f3f8"}.fa-stumbleupon:before{content:"\f1a4"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-subscript:before{content:"\f12c"}.fa-subway:before{content:"\f239"}.fa-suitcase:before{content:"\f0f2"}.fa-suitcase-rolling:before{content:"\f5c1"}.fa-sun:before{content:"\f185"}.fa-superpowers:before{content:"\f2dd"}.fa-superscript:before{content:"\f12b"}.fa-supple:before{content:"\f3f9"}.fa-surprise:before{content:"\f5c2"}.fa-swatchbook:before{content:"\f5c3"}.fa-swimmer:before{content:"\f5c4"}.fa-swimming-pool:before{content:"\f5c5"}.fa-synagogue:before{content:"\f69b"}.fa-sync:before{content:"\f021"}.fa-sync-alt:before{content:"\f2f1"}.fa-syringe:before{content:"\f48e"}.fa-table:before{content:"\f0ce"}.fa-table-tennis:before{content:"\f45d"}.fa-tablet:before{content:"\f10a"}.fa-tablet-alt:before{content:"\f3fa"}.fa-tablets:before{content:"\f490"}.fa-tachometer-alt:before{content:"\f3fd"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-tape:before{content:"\f4db"}.fa-tasks:before{content:"\f0ae"}.fa-taxi:before{content:"\f1ba"}.fa-teamspeak:before{content:"\f4f9"}.fa-teeth:before{content:"\f62e"}.fa-teeth-open:before{content:"\f62f"}.fa-telegram:before{content:"\f2c6"}.fa-telegram-plane:before{content:"\f3fe"}.fa-temperature-high:before{content:"\f769"}.fa-temperature-low:before{content:"\f76b"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-terminal:before{content:"\f120"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-th:before{content:"\f00a"}.fa-th-large:before{content:"\f009"}.fa-th-list:before{content:"\f00b"}.fa-the-red-yeti:before{content:"\f69d"}.fa-theater-masks:before{content:"\f630"}.fa-themeco:before{content:"\f5c6"}.fa-themeisle:before{content:"\f2b2"}.fa-thermometer:before{content:"\f491"}.fa-thermometer-empty:before{content:"\f2cb"}.fa-thermometer-full:before{content:"\f2c7"}.fa-thermometer-half:before{content:"\f2c9"}.fa-thermometer-quarter:before{content:"\f2ca"}.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-think-peaks:before{content:"\f731"}.fa-thumbs-down:before{content:"\f165"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbtack:before{content:"\f08d"}.fa-ticket-alt:before{content:"\f3ff"}.fa-times:before{content:"\f00d"}.fa-times-circle:before{content:"\f057"}.fa-tint:before{content:"\f043"}.fa-tint-slash:before{content:"\f5c7"}.fa-tired:before{content:"\f5c8"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-toilet-paper:before{content:"\f71e"}.fa-toolbox:before{content:"\f552"}.fa-tooth:before{content:"\f5c9"}.fa-torah:before{content:"\f6a0"}.fa-torii-gate:before{content:"\f6a1"}.fa-tractor:before{content:"\f722"}.fa-trade-federation:before{content:"\f513"}.fa-trademark:before{content:"\f25c"}.fa-traffic-light:before{content:"\f637"}.fa-train:before{content:"\f238"}.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-trash:before{content:"\f1f8"}.fa-trash-alt:before{content:"\f2ed"}.fa-tree:before{content:"\f1bb"}.fa-trello:before{content:"\f181"}.fa-tripadvisor:before{content:"\f262"}.fa-trophy:before{content:"\f091"}.fa-truck:before{content:"\f0d1"}.fa-truck-loading:before{content:"\f4de"}.fa-truck-monster:before{content:"\f63b"}.fa-truck-moving:before{content:"\f4df"}.fa-truck-pickup:before{content:"\f63c"}.fa-tshirt:before{content:"\f553"}.fa-tty:before{content:"\f1e4"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-tv:before{content:"\f26c"}.fa-twitch:before{content:"\f1e8"}.fa-twitter:before{content:"\f099"}.fa-twitter-square:before{content:"\f081"}.fa-typo3:before{content:"\f42b"}.fa-uber:before{content:"\f402"}.fa-uikit:before{content:"\f403"}.fa-umbrella:before{content:"\f0e9"}.fa-umbrella-beach:before{content:"\f5ca"}.fa-underline:before{content:"\f0cd"}.fa-undo:before{content:"\f0e2"}.fa-undo-alt:before{content:"\f2ea"}.fa-uniregistry:before{content:"\f404"}.fa-universal-access:before{content:"\f29a"}.fa-university:before{content:"\f19c"}.fa-unlink:before{content:"\f127"}.fa-unlock:before{content:"\f09c"}.fa-unlock-alt:before{content:"\f13e"}.fa-untappd:before{content:"\f405"}.fa-upload:before{content:"\f093"}.fa-usb:before{content:"\f287"}.fa-user:before{content:"\f007"}.fa-user-alt:before{content:"\f406"}.fa-user-alt-slash:before{content:"\f4fa"}.fa-user-astronaut:before{content:"\f4fb"}.fa-user-check:before{content:"\f4fc"}.fa-user-circle:before{content:"\f2bd"}.fa-user-clock:before{content:"\f4fd"}.fa-user-cog:before{content:"\f4fe"}.fa-user-edit:before{content:"\f4ff"}.fa-user-friends:before{content:"\f500"}.fa-user-graduate:before{content:"\f501"}.fa-user-injured:before{content:"\f728"}.fa-user-lock:before{content:"\f502"}.fa-user-md:before{content:"\f0f0"}.fa-user-minus:before{content:"\f503"}.fa-user-ninja:before{content:"\f504"}.fa-user-plus:before{content:"\f234"}.fa-user-secret:before{content:"\f21b"}.fa-user-shield:before{content:"\f505"}.fa-user-slash:before{content:"\f506"}.fa-user-tag:before{content:"\f507"}.fa-user-tie:before{content:"\f508"}.fa-user-times:before{content:"\f235"}.fa-users:before{content:"\f0c0"}.fa-users-cog:before{content:"\f509"}.fa-ussunnah:before{content:"\f407"}.fa-utensil-spoon:before{content:"\f2e5"}.fa-utensils:before{content:"\f2e7"}.fa-vaadin:before{content:"\f408"}.fa-vector-square:before{content:"\f5cb"}.fa-venus:before{content:"\f221"}.fa-venus-double:before{content:"\f226"}.fa-venus-mars:before{content:"\f228"}.fa-viacoin:before{content:"\f237"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-vial:before{content:"\f492"}.fa-vials:before{content:"\f493"}.fa-viber:before{content:"\f409"}.fa-video:before{content:"\f03d"}.fa-video-slash:before{content:"\f4e2"}.fa-vihara:before{content:"\f6a7"}.fa-vimeo:before{content:"\f40a"}.fa-vimeo-square:before{content:"\f194"}.fa-vimeo-v:before{content:"\f27d"}.fa-vine:before{content:"\f1ca"}.fa-vk:before{content:"\f189"}.fa-vnv:before{content:"\f40b"}.fa-volleyball-ball:before{content:"\f45f"}.fa-volume-down:before{content:"\f027"}.fa-volume-mute:before{content:"\f6a9"}.fa-volume-off:before{content:"\f026"}.fa-volume-up:before{content:"\f028"}.fa-vote-yea:before{content:"\f772"}.fa-vr-cardboard:before{content:"\f729"}.fa-vuejs:before{content:"\f41f"}.fa-walking:before{content:"\f554"}.fa-wallet:before{content:"\f555"}.fa-warehouse:before{content:"\f494"}.fa-water:before{content:"\f773"}.fa-weebly:before{content:"\f5cc"}.fa-weibo:before{content:"\f18a"}.fa-weight:before{content:"\f496"}.fa-weight-hanging:before{content:"\f5cd"}.fa-weixin:before{content:"\f1d7"}.fa-whatsapp:before{content:"\f232"}.fa-whatsapp-square:before{content:"\f40c"}.fa-wheelchair:before{content:"\f193"}.fa-whmcs:before{content:"\f40d"}.fa-wifi:before{content:"\f1eb"}.fa-wikipedia-w:before{content:"\f266"}.fa-wind:before{content:"\f72e"}.fa-window-close:before{content:"\f410"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-windows:before{content:"\f17a"}.fa-wine-bottle:before{content:"\f72f"}.fa-wine-glass:before{content:"\f4e3"}.fa-wine-glass-alt:before{content:"\f5ce"}.fa-wix:before{content:"\f5cf"}.fa-wizards-of-the-coast:before{content:"\f730"}.fa-wolf-pack-battalion:before{content:"\f514"}.fa-won-sign:before{content:"\f159"}.fa-wordpress:before{content:"\f19a"}.fa-wordpress-simple:before{content:"\f411"}.fa-wpbeginner:before{content:"\f297"}.fa-wpexplorer:before{content:"\f2de"}.fa-wpforms:before{content:"\f298"}.fa-wpressr:before{content:"\f3e4"}.fa-wrench:before{content:"\f0ad"}.fa-x-ray:before{content:"\f497"}.fa-xbox:before{content:"\f412"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-y-combinator:before{content:"\f23b"}.fa-yahoo:before{content:"\f19e"}.fa-yandex:before{content:"\f413"}.fa-yandex-international:before{content:"\f414"}.fa-yelp:before{content:"\f1e9"}.fa-yen-sign:before{content:"\f157"}.fa-yin-yang:before{content:"\f6ad"}.fa-yoast:before{content:"\f2b1"}.fa-youtube:before{content:"\f167"}.fa-youtube-square:before{content:"\f431"}.fa-zhihu:before{content:"\f63f"}.sr-only{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.sr-only-focusable:active,.sr-only-focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}@font-face{font-family:"Font Awesome 5 Brands";font-style:normal;font-weight:400;src:url(fonts/fa-brands-400.eot);src:url(fonts/fa-brands-400.eot?#iefix) format("embedded-opentype"),url(fonts/fa-brands-400.woff2) format("woff2"),url(fonts/fa-brands-400.woff) format("woff"),url(fonts/fa-brands-400.ttf) format("truetype"),url(fonts/fa-brands-400.svg#fontawesome) format("svg")}.fab{font-family:"Font Awesome 5 Brands"}@font-face{font-family:"Font Awesome 5 Free";font-style:normal;font-weight:400;src:url(fonts/fa-regular-400.eot);src:url(fonts/fa-regular-400.eot?#iefix) format("embedded-opentype"),url(fonts/fa-regular-400.woff2) format("woff2"),url(fonts/fa-regular-400.woff) format("woff"),url(fonts/fa-regular-400.ttf) format("truetype"),url(fonts/fa-regular-400.svg#fontawesome) format("svg")}.far{font-family:"Font Awesome 5 Free";font-weight:400}@font-face{font-family:"Font Awesome 5 Free";font-style:normal;font-weight:900;src:url(fonts/fa-solid-900.eot);src:url(fonts/fa-solid-900.eot?#iefix) format("embedded-opentype"),url(fonts/fa-solid-900.woff2) format("woff2"),url(fonts/fa-solid-900.woff) format("woff"),url(fonts/fa-solid-900.ttf) format("truetype"),url(fonts/fa-solid-900.svg#fontawesome) format("svg")}.fa,.fas{font-family:"Font Awesome 5 Free";font-weight:900}.tykon:before{font-family:tykon!important;font-style:normal!important;font-weight:400!important;font-variant:normal!important;text-transform:none!important;speak:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.tykon-arrowdown:before{content:"a"}.tykon-arrowleft:before{content:"b"}.tykon-arrowright:before{content:"c"}.tykon-arrowup:before{content:"d"}.tykon-graph1:before{content:"g"}.tykon-graph2:before{content:"h"}.tykon-deployment:before{content:"n"}.tykon-team:before{content:"o"}.tykon-overview:before{content:"p"}.tykon-loadout:before{content:"q"}.tykon-entitlement:before{content:"r"}.tykon-users:before{content:"s"}.tykon-doublearrowdown:before{content:"e"}.tykon-arrowsort:before{content:"W"}.tykon-check:before{content:"V"}.tykon-copy:before{content:"C"}.tykon-delete:before{content:"U"}.tykon-download:before{content:"L"}.tykon-draft:before{content:"D"}.tykon-edit:before{content:"E"}.tykon-filter:before{content:"f"}.tykon-graphq2:before{content:"h"}.tykon-help:before{content:"?"}.tykon-label:before{content:"i"}.tykon-link:before{content:"R"}.tykon-lock1:before{content:"Y"}.tykon-lock2:before{content:"Z"}.tykon-notifications:before{content:"N"}.tykon-plus:before{content:"+"}.tykon-profile:before{content:"P"}.tykon-reload:before{content:"j"}.tykon-search:before{content:"O"}.tykon-select:before{content:"k"}.tykon-settings:before{content:"S"}.tykon-target:before{content:"l"}.tykon-undo:before{content:"m"}.tykon-warning:before{content:"!"}.tykon-x:before{content:"X"}.tykon-waiting:before{content:"T"}.tykon-fullscreen:before{content:"\e000"}.tykon-fullscreen-exit:before{content:"\e001"}.tykon-time:before{content:"t"}h1,h2,h3,h4,h5,h6{margin-bottom:15px;font-family:smoolthan_medium;font-weight:500;color:#36364c}label{display:inline-block;max-width:100%;margin-bottom:5px;color:#36364c}h1{font-size:25px;line-height:30px}h2{font-size:20px;line-height:24px}h3{font-size:17px;line-height:23px}h4{font-size:16px;line-height:22px}h5{font-size:14px;line-height:19px}h6{font-size:12px;line-height:16px}p,label{font-size:14px;line-height:19px;font-family:OpenSans-regular}strong{font-family:OpenSans-Bold}a:not(.tyk-button){cursor:pointer;color:#505071;font-family:OpenSans-regular}a:not(.tyk-button).link--bold{font-family:OpenSans-Bold}a:not(.tyk-button)+a{margin-left:5px}a:not(.tyk-button) i{font-size:9px}p a,label a{font-size:14px;text-decoration:underline}.font-family-regular{font-family:OpenSans-regular}.font-family-medium{font-family:OpenSans-SemiBold}.font-family-bold{font-family:OpenSans-Bold}.heading-font-family-regular{font-family:smoolthan_regular}.heading-font-family-medium{font-family:smoolthan_medium}.heading-font-family-bold{font-family:smoolthan_bold}.text--primary{color:#a2a2cc}.text--danger{color:#ff6c7d}.text--info{color:#82bbc6}.text-warning{color:#d6b218}.text--medium{font-family:OpenSans-SemiBold}.text--bold{font-family:OpenSans-Bold}.text--uppercase{text-transform:uppercase}.text--ellipsis{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.text--underline{text-decoration:underline}td.text-ellipsis{max-width:250px}.section-title{font-family:smoolthan_bold;margin-bottom:5px}.section-title .tyk-icon{margin-left:5px}.sub-section-title{margin-bottom:5px;font-family:OpenSans-SemiBold;font-size:16px;line-height:22px}.sub-section-title .tyk-icon{margin-left:5px}.section-group-title{margin-bottom:5px;font-family:OpenSans-Bold;font-size:14px;line-height:19px;text-transform:uppercase}.section-group-title .tyk-icon{margin-left:5px}.text--default-light{color:#c3c3e5!important}.text--default{color:#36364c!important}.text--primary{color:#a2a2cc!important}.text--danger{color:#ff6c7d!important}.text--success{color:#00d9ba!important}.text--warning{color:#d6b218!important}.tyk-form-section__title{font-size:16px;margin:5px 0 15px}.tyk-form-section__title--light{color:#43435b}.tyk-form-group{margin-bottom:15px}.tyk-form-group.has-error>.tyk-form-control__wrapper>.tyk-form-control,.tyk-form-group.has-error>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control,.tyk-form-group.has-error .tyk-file-input__wrapper>.tyk-form-control{border:2px solid #ff6c7d;border-left:2px solid #ea4766;outline:none}.tyk-form-group.has-error>.tyk-form-control__wrapper>.tyk-form-control:focus,.tyk-form-group.has-error>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control:focus,.tyk-form-group.has-error .tyk-file-input__wrapper>.tyk-form-control:focus{border-left:2px solid #ea4766;border-color:#ea4766;outline:none}.tyk-form-group label{font-family:OpenSans-SemiBold}.tyk-form-group--inline{align-items:stretch;display:flex;flex-wrap:nowrap}.tyk-form-group--inline .tyk-form-control__wrapper{flex:1}.tyk-form-group--inline label{display:flex;white-space:nowrap;margin-right:20px;margin-top:14px}.tyk-form-group--inline input,.tyk-form-group--inline select{display:flex}.tyk-form-group--inline .tyk-form-control__help-block{display:flex;margin-left:auto}.tyk-form-group--default{color:#505071}.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-form-control,.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control,.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control{border:2px solid #c3c3e5;color:#505071}.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-form-control[disabled],.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control[disabled],.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control[disabled]{border:2px solid #c3c3e5;background-color:#ededf9;color:#505071;cursor:not-allowed}.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-form-control[disabled]+.tyk-input-group__addon,.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control[disabled]+.tyk-input-group__addon,.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control[disabled]+.tyk-input-group__addon{background-color:#ededf9}.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-form-control::placeholder,.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control::placeholder,.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control::placeholder{opacity:.8}.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-form-control:-ms-input-placeholder,.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control:-ms-input-placeholder,.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control:-ms-input-placeholder{opacity:.8}.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-form-control::-ms-input-placeholder,.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control::-ms-input-placeholder,.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control::-ms-input-placeholder{opacity:.8}.tyk-form-group--default.tyk-form-group--addon-left .tyk-input-group__addon{border-bottom:2px solid #c3c3e5;border-left:2px solid #c3c3e5;border-top:2px solid #c3c3e5;color:#505071}.tyk-form-group--default.tyk-form-group--addon-right .tyk-input-group__addon{border-bottom:2px solid #c3c3e5;border-right:2px solid #c3c3e5;border-top:2px solid #c3c3e5;color:#505071}.tyk-form-group--primary{color:#505071}.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-form-control,.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control,.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control{border:2px solid #a2a2cc;color:#505071}.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-form-control[disabled],.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control[disabled],.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control[disabled]{border:2px solid #a2a2cc;background-color:#ededf9;color:#505071;cursor:not-allowed}.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-form-control[disabled]+.tyk-input-group__addon,.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control[disabled]+.tyk-input-group__addon,.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control[disabled]+.tyk-input-group__addon{background-color:#ededf9}.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-form-control::placeholder,.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control::placeholder,.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control::placeholder{opacity:.8}.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-form-control:-ms-input-placeholder,.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control:-ms-input-placeholder,.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control:-ms-input-placeholder{opacity:.8}.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-form-control::-ms-input-placeholder,.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control::-ms-input-placeholder,.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control::-ms-input-placeholder{opacity:.8}.tyk-form-group--primary.tyk-form-group--addon-left .tyk-input-group__addon{border-bottom:2px solid #a2a2cc;border-left:2px solid #a2a2cc;border-top:2px solid #a2a2cc;color:#a2a2cc}.tyk-form-group--primary.tyk-form-group--addon-right .tyk-input-group__addon{border-bottom:2px solid #a2a2cc;border-right:2px solid #a2a2cc;border-top:2px solid #a2a2cc;color:#a2a2cc}.tyk-form-group--success{color:#505071}.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-form-control,.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control,.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control{border:2px solid #00d9ba;color:#505071}.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-form-control[disabled],.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control[disabled],.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control[disabled]{border:2px solid #00d9ba;background-color:#ededf9;color:#505071;cursor:not-allowed}.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-form-control[disabled]+.tyk-input-group__addon,.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control[disabled]+.tyk-input-group__addon,.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control[disabled]+.tyk-input-group__addon{background-color:#ededf9}.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-form-control::placeholder,.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control::placeholder,.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control::placeholder{opacity:.8}.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-form-control:-ms-input-placeholder,.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control:-ms-input-placeholder,.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control:-ms-input-placeholder{opacity:.8}.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-form-control::-ms-input-placeholder,.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control::-ms-input-placeholder,.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control::-ms-input-placeholder{opacity:.8}.tyk-form-group--success.tyk-form-group--addon-left .tyk-input-group__addon{border-bottom:2px solid #00d9ba;border-left:2px solid #00d9ba;border-top:2px solid #00d9ba;color:#00d9ba}.tyk-form-group--success.tyk-form-group--addon-right .tyk-input-group__addon{border-bottom:2px solid #00d9ba;border-right:2px solid #00d9ba;border-top:2px solid #00d9ba;color:#00d9ba}.tyk-form-group--rounded-corners.has-error>.tyk-form-control__wrapper>.tyk-form-control{border-left:2px solid #ff6c7d}.tyk-form-group--rounded-corners.has-error>.tyk-form-control__wrapper>.tyk-form-control:focus{border-left:2px solid #ff6c7d;outline:none}.tyk-form-group--rounded-corners .tyk-form-control{border-radius:18px}.tyk-form-group--addon-right input{border-right:0!important;padding-right:0}.tyk-form-group--addon-left input{border-left:0!important;padding-left:0}.tyk-form-group--rounded-corners.tyk-form-group--addon-right input{border-top-right-radius:0;border-bottom-right-radius:0}.tyk-form-group--rounded-corners.tyk-form-group--addon-right .tyk-input-group__addon{background:#fff;border-top-right-radius:18px;border-bottom-right-radius:18px;color:#505071}.tyk-form-group--rounded-corners.tyk-form-group--addon-left input{border-top-left-radius:0;border-bottom-left-radius:0;border-left:0!important}.tyk-form-group--rounded-corners.tyk-form-group--addon-left .tyk-input-group__addon{background:#fff;border-top-left-radius:18px;border-bottom-left-radius:18px;color:#505071}.tyk-form-control__error-message{font-family:OpenSans-regular;font-size:12px;line-height:16px;margin-top:5px;padding:0 0 0 20px;position:relative}.tyk-form-control__error-message:before{content:"!";background:#ff6c7d;color:#fff;font-family:OpenSans-Bold;border-radius:8px;display:inline-block;margin-right:5px;padding:0 7px}.tyk-input-group{align-items:center;display:flex;outline:none}.tyk-input-group__addon{align-items:center;background-color:#fff;border:2px solid #c3c3e5;display:flex;height:39px;padding:10px}.tyk-input-group__addon:first-child{border-right:0}.tyk-input-group__addon:last-child{border-left:0}.tyk-form-control{font-family:OpenSans-SemiBold;font-size:14px;line-height:19px;border:2px solid #c3c3e5;background-color:#fff;color:#505071;display:block;height:39px;padding:10px 20px;transition:all .2s linear;width:100%}.tyk-form-control[disabled]{background-color:#ededf9;cursor:not-allowed}.tyk-form-control[disabled] .tyk-input-group__addon{background-color:#ededf9}.tyk-form-control::placeholder{font-family:OpenSans-SemiBold;color:#a2a2cc}.tyk-form-control:focus,.tyk-form-control:active{outline:none;border:2px solid #00d9ba!important}.tyk-form-control:focus+.tyk-input-group__addon,.tyk-form-control:active+.tyk-input-group__addon{border:2px solid #00d9ba!important;border-left:none!important}.tyk-form-control__help-block{color:#36364c;font-style:normal;font-family:OpenSans-regular;font-size:12px;line-height:16px;padding:0 0 0 20px;margin:5px 0 0}select{border-radius:0;-webkit-appearance:none}.inline-form-wrapper{align-items:center;display:flex;width:100%}.inline-form-wrapper .inline-form{width:100%}.inline-form-wrapper>button{margin-left:10px;margin-bottom:15px}.tyk-checkbox,.tyk-radio{margin:10px 0}.tyk-checkbox label,.tyk-radio label{font-family:OpenSans-SemiBold}.tyk-checkbox input,.tyk-radio input{margin:0 5px 0 0}.tyk-checkbox--inline,.tyk-radio--inline{display:inline-flex;margin-left:15px}.tyk-checkbox--inline:first-child,.tyk-radio--inline:first-child{margin-left:0}.tyk-inline-form{align-items:center;display:flex;flex-wrap:wrap}.tyk-inline-form .tyk-form-group{flex:1;margin-left:20px;min-width:200px}.tyk-inline-form .tyk-form-group:first-child{margin-left:0}.tyk-inline-form>.tyk-button{margin-left:20px;margin-bottom:15px}.tyk-accordion__item-header>button,.tyk-accordion__trigger{background:none;border:none;cursor:pointer;display:flex;font-size:14px;outline:none;padding:15px;width:100%}.tyk-accordion__item-header>button .tyk-icon,.tyk-accordion__trigger .tyk-icon{margin-left:auto}.tyk-accordion__item{display:grid}.tyk-accordion__item--trigger-position-left{grid-template-columns:40px auto;grid-template-areas:"trigger header" "trigger content"}.tyk-accordion__item--trigger-position-right{grid-template-columns:auto 40px;grid-template-areas:"header trigger" "content trigger"}.tyk-accordion__item--trigger-in-header{grid-template-columns:auto;grid-template-areas:"header" "content"}.tyk-accordion__trigger-wrapper{grid-area:trigger;display:flex;align-items:flex-start;justify-content:center}.tyk-accordion__trigger-wrapper .tyk-icon{margin-left:auto;margin-right:auto}.tyk-accordion__item-header{grid-area:header}.tyk-accordion__trigger--disabled{color:#e1e1e1}.tyk-accordion__item-header.tyk-accordion__arrow-trigger{align-items:center;display:flex}.tyk-accordion__item-header.tyk-accordion__arrow-trigger>div{flex:1}.tyk-accordion__item-header.tyk-accordion__arrow-trigger>button{margin-left:auto;width:auto}.tyk-accordion__item-content{grid-area:content}:root{--tooltip-max-width: 450px}.tyk-tooltip{display:flex;align-items:center;background-color:#ededf9;border:2px solid #a2a2cc;border-radius:18px;max-width:var(--tooltip-max-width);padding:20px}.tyk-tooltip>.tyk-icon:first-child{width:32px;height:32px;border-radius:50%;color:#fff;background-color:#7a79a1}.tyk-tooltip>.tyk-icon:first-child:before{display:flex;width:100%;height:100%;align-items:center;justify-content:center}.tyk-tooltip>.tyk-icon+.tyk-tooltip__content{margin-left:20px}.tyk-tooltip__content{color:#505071;word-break:break-word;word-wrap:break-word}.tyk-tooltip__content+.tyk-icon{margin-left:20px}.tyk-tooltip>.tyk-icon:last-child{cursor:pointer}.tyk-button{background-color:#0000;border:none;color:#fff;cursor:pointer;display:inline-block;font-family:OpenSans-Bold;text-align:center;text-transform:uppercase;text-decoration:none;transition:all .2s linear;user-select:none;vertical-align:middle;white-space:nowrap;padding:8px 23px;font-size:14px;line-height:22px;border-radius:20px}.tyk-button+.tyk-button,.tyk-button+.tyk-dropdown,.tyk-button+.tyk-toggle{margin-left:10px}.tyk-button span+i{margin-left:10px}.tyk-button i+span{margin-left:10px}.tyk-button.disabled{cursor:not-allowed;opacity:.7}.tyk-button:hover{color:#fff;text-decoration:none}.tyk-button:focus{outline:none}.tyk-button--white{background-color:#fff;color:#36364c;border:2px solid rgba(0,0,0,0)}.tyk-button--white:hover{background-color:#43435b;color:#fff}.tyk-button--primary{background-color:#7a79a1;color:#fff;border:2px solid #7a79a1}.tyk-button--primary:hover{background-color:#505071;color:#fff}.tyk-button--primary-link{background-color:#0000;border:2px solid rgba(0,0,0,0);color:#7a79a1}.tyk-button--primary-link:hover{background-color:#0000;color:#7a79a1;border-color:#7a79a1;text-decoration:underline}.tyk-button--primary-outline{border:2px solid #7a79a1;background-color:#0000;color:#7a79a1}.tyk-button--primary-outline:hover{background-color:#7a79a1;color:#fff}.tyk-button--primary-outline.disabled{color:#7a79a1}.tyk-button--primary-outline.disabled:hover{background-color:#0000;color:#7a79a1}.tyk-button--primary-gradient{border-image:linear-gradient(to right,#A2A2CC,#505071,#A2A2CC) 0 round;background:rgba(0,0,0,0) linear-gradient(to right,#A2A2CC,#505071,#A2A2CC);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-button--primary-gradient:hover,.tyk-button--primary-gradient:active,.tyk-button--primary-gradient:active:focus{border-image:linear-gradient(to right,#A2A2CC,#505071,#A2A2CC) 0 round;background:rgba(0,0,0,0) linear-gradient(to right,#A2A2CC,#505071,#A2A2CC);background-position:100% 0;background-size:200% auto;background-clip:border-box}.tyk-button--primary-gradient:hover.disabled,.tyk-button--primary-gradient:active.disabled,.tyk-button--primary-gradient:active:focus.disabled{border-image:linear-gradient(to right,#A2A2CC,#505071,#A2A2CC) 0 round;background:rgba(0,0,0,0) linear-gradient(to right,#A2A2CC,#505071,#A2A2CC);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-button--success{background-color:#00d9ba;color:#fff;border:2px solid #00d9ba}.tyk-button--success:hover{background-color:#00b798;color:#fff}.tyk-button--success-link{background-color:#0000;border:2px solid rgba(0,0,0,0);color:#00d9ba}.tyk-button--success-link:hover{background-color:#0000;color:#00d9ba;border-color:#00d9ba;text-decoration:underline}.tyk-button--success-outline{border:2px solid #00d9ba;background-color:#0000;color:#00d9ba}.tyk-button--success-outline:hover{background-color:#00d9ba;color:#fff}.tyk-button--success-outline.disabled{color:#00d9ba}.tyk-button--success-outline.disabled:hover{background-color:#0000;color:#00d9ba}.tyk-button--success-gradient{border-image:linear-gradient(to right,#00d9ba,#00B798,#00d9ba) 0 round;background:rgba(0,0,0,0) linear-gradient(to right,#00d9ba,#00B798,#00d9ba);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-button--success-gradient:hover,.tyk-button--success-gradient:active,.tyk-button--success-gradient:active:focus{border-image:linear-gradient(to right,#00d9ba,#00B798,#00d9ba) 0 round;background:rgba(0,0,0,0) linear-gradient(to right,#00d9ba,#00B798,#00d9ba);background-position:100% 0;background-size:200% auto;background-clip:border-box}.tyk-button--success-gradient:hover.disabled,.tyk-button--success-gradient:active.disabled,.tyk-button--success-gradient:active:focus.disabled{border-image:linear-gradient(to right,#00d9ba,#00B798,#00d9ba) 0 round;background:rgba(0,0,0,0) linear-gradient(to right,#00d9ba,#00B798,#00d9ba);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-button--danger{background-color:#ff6c7d;color:#fff;border:2px solid #ff6c7d}.tyk-button--danger:hover{background-color:#ea4766;color:#fff}.tyk-button--danger-link{background-color:#0000;border:2px solid rgba(0,0,0,0);color:#ff6c7d}.tyk-button--danger-link:hover{background-color:#0000;color:#ff6c7d;border-color:#ff6c7d;text-decoration:underline}.tyk-button--danger-outline{border:2px solid #ff6c7d;background-color:#0000;color:#ff6c7d}.tyk-button--danger-outline:hover{background-color:#ff6c7d;color:#fff}.tyk-button--danger-outline.disabled{color:#ff6c7d}.tyk-button--danger-outline.disabled:hover{background-color:#0000;color:#ff6c7d}.tyk-button--danger-gradient{border-image:linear-gradient(to right,#FF6C7D,#EA4766,#FF6C7D) 0 round;background:rgba(0,0,0,0) linear-gradient(to right,#FF6C7D,#EA4766,#FF6C7D);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-button--danger-gradient:hover,.tyk-button--danger-gradient:active,.tyk-button--danger-gradient:active:focus{border-image:linear-gradient(to right,#FF6C7D,#EA4766,#FF6C7D) 0 round;background:rgba(0,0,0,0) linear-gradient(to right,#FF6C7D,#EA4766,#FF6C7D);background-position:100% 0;background-size:200% auto;background-clip:border-box}.tyk-button--danger-gradient:hover.disabled,.tyk-button--danger-gradient:active.disabled,.tyk-button--danger-gradient:active:focus.disabled{border-image:linear-gradient(to right,#FF6C7D,#EA4766,#FF6C7D) 0 round;background:rgba(0,0,0,0) linear-gradient(to right,#FF6C7D,#EA4766,#FF6C7D);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-button--warning{background-color:#d6b218;color:#fff;border:2px solid rgba(0,0,0,0)}.tyk-button--warning:hover{background-color:#b49514;color:#fff}.tyk-button--warning-link{background-color:#0000;border:2px solid rgba(0,0,0,0);color:#d6b218}.tyk-button--warning-link:hover{background-color:#0000;color:#d6b218;border-color:#d6b218;text-decoration:underline}.tyk-button--warning-outline{border:2px solid #d6b218;background-color:#0000;color:#d6b218}.tyk-button--warning-outline:hover{background-color:#d6b218;color:#fff}.tyk-button--warning-outline.disabled{color:#d6b218}.tyk-button--warning-outline.disabled:hover{background-color:#0000;color:#d6b218}.tyk-button--warning-gradient{border-image:linear-gradient(to right,#D6B218,#FFE885,#D6B218) 0 round;background:rgba(0,0,0,0) linear-gradient(to right,#D6B218,#FFE885,#D6B218);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-button--warning-gradient:hover,.tyk-button--warning-gradient:active,.tyk-button--warning-gradient:active:focus{border-image:linear-gradient(to right,#D6B218,#FFE885,#D6B218) 0 round;background:rgba(0,0,0,0) linear-gradient(to right,#D6B218,#FFE885,#D6B218);background-position:100% 0;background-size:200% auto;background-clip:border-box}.tyk-button--warning-gradient:hover.disabled,.tyk-button--warning-gradient:active.disabled,.tyk-button--warning-gradient:active:focus.disabled{border-image:linear-gradient(to right,#D6B218,#FFE885,#D6B218) 0 round;background:rgba(0,0,0,0) linear-gradient(to right,#D6B218,#FFE885,#D6B218);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-button--info{background-color:#82bbc6;color:#fff;border:2px solid #82bbc6}.tyk-button--info:hover{background-color:#68adba;color:#fff}.tyk-button--info-link{background-color:#0000;border:2px solid rgba(0,0,0,0);color:#82bbc6}.tyk-button--info-link:hover{background-color:#0000;color:#82bbc6;border-color:#82bbc6;text-decoration:underline}.tyk-button--info-outline{border:2px solid #82bbc6;background-color:#0000;color:#82bbc6}.tyk-button--info-outline:hover{background-color:#82bbc6;color:#fff}.tyk-button--info-outline.disabled{color:#82bbc6}.tyk-button--info-outline.disabled:hover{background-color:#0000;color:#82bbc6}.tyk-button--info-gradient{border-image:linear-gradient(to right,#82BBC6,#D3EBEF,#82BBC6) 0 round;background:rgba(0,0,0,0) linear-gradient(to right,#82BBC6,#D3EBEF,#82BBC6);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#505071}.tyk-button--info-gradient:hover,.tyk-button--info-gradient:active,.tyk-button--info-gradient:active:focus{border-image:linear-gradient(to right,#82BBC6,#D3EBEF,#82BBC6) 0 round;background:rgba(0,0,0,0) linear-gradient(to right,#82BBC6,#D3EBEF,#82BBC6);background-position:100% 0;background-size:200% auto;background-clip:border-box}.tyk-button--info-gradient:hover.disabled,.tyk-button--info-gradient:active.disabled,.tyk-button--info-gradient:active:focus.disabled{border-image:linear-gradient(to right,#82BBC6,#D3EBEF,#82BBC6) 0 round;background:rgba(0,0,0,0) linear-gradient(to right,#82BBC6,#D3EBEF,#82BBC6);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#505071}.tyk-button--default{background-color:#36364c;color:#fff;border:2px solid #36364c}.tyk-button--default:hover{background-color:#505071;color:#fff}.tyk-button--default-link{background-color:#0000;border:2px solid rgba(0,0,0,0);color:#505071}.tyk-button--default-link:hover{background-color:#0000;color:#505071;border-color:#505071;text-decoration:underline}.tyk-button--default-outline{border:2px solid #36364c;background-color:#0000;color:#36364c}.tyk-button--default-outline:hover{background-color:#36364c;color:#fff}.tyk-button--default-outline.disabled{color:#36364c}.tyk-button--default-outline.disabled:hover{background-color:#0000;color:#36364c}.tyk-button--default-gradient{border-image:linear-gradient(to right,#36364C,#505071,#36364C) 0 round;background:rgba(0,0,0,0) linear-gradient(to right,#36364C,#505071,#36364C);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-button--default-gradient:hover,.tyk-button--default-gradient:active,.tyk-button--default-gradient:active:focus{border-image:linear-gradient(to right,#36364C,#505071,#36364C) 0 round;background:rgba(0,0,0,0) linear-gradient(to right,#36364C,#505071,#36364C);background-position:100% 0;background-size:200% auto;background-clip:border-box}.tyk-button--default-gradient:hover.disabled,.tyk-button--default-gradient:active.disabled,.tyk-button--default-gradient:active:focus.disabled{border-image:linear-gradient(to right,#36364C,#505071,#36364C) 0 round;background:rgba(0,0,0,0) linear-gradient(to right,#36364C,#505071,#36364C);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-button--sm{padding:3px 15px;font-size:12px;line-height:16px;border-radius:20px}.tyk-button--md{padding:8px 23px;font-size:14px;line-height:19px;border-radius:20px}.tyk-button--lg{padding:13px 23px;font-size:16px;line-height:22px;border-radius:20px}.tyk-button--icon-only{border-radius:18px;padding:0;line-height:20px;width:24px}.tyk-button--icon-only:hover{border-radius:18px}.tyk-button--fit{height:auto;width:auto;line-height:normal}.tyk-button--no-style,.tyk-button--no-style:hover{background:rgba(0,0,0,0);border:none;color:#505071}.tyk-button-group__wrapper{display:inline-block;position:relative;vertical-align:middle}.tyk-button-group__wrapper label{font-family:OpenSans-SemiBold}.tyk-button-group__wrapper .tyk-button-group{display:flex}.tyk-button-group__wrapper .tyk-button-group>.tyk-button-group:not(:first-child)>.tyk-button{border-top-left-radius:0;border-bottom-left-radius:0}.tyk-button-group__wrapper .tyk-button-group>.tyk-button-group:not(:last-child)>.tyk-button{border-top-right-radius:0;border-bottom-right-radius:0}.tyk-button-group__wrapper .tyk-button-group .tyk-button{border-radius:0}.tyk-button-group__wrapper .tyk-button-group .tyk-button+.tyk-button{margin-left:0}.tyk-button-group__wrapper .tyk-button-group .tyk-button+.tyk-dropdown{margin-left:0}.tyk-button-group__wrapper .tyk-button-group .tyk-button:first-child{border-top-left-radius:20px;border-bottom-left-radius:20px}.tyk-button-group__wrapper .tyk-button-group .tyk-button:last-child{border-top-right-radius:20px;border-bottom-right-radius:20px}.tyk-chart__wrapper{position:relative}.tyk-chart--no-data,.tyk-chart--loading-chart{filter:blur(10px);-webkit-filter:blur(10px)}.collapse-exit,.collapse-exit-active,.collapse-exit-done{height:0px}.collapse-wrapper{overflow:hidden;transition:all .2s}.collapse-horizontal-exit,.collapse-horizontal-exit-active,.collapse-horizontal-exit-done{width:0px}.collapse-horizontal-enter,.collapse-horizontal-enter-active,.collapse-horizontal-enter-done{width:100%}.tyk-copy-to-clipboard{position:absolute;left:-1000px;top:-1000px}.tyk-fixed-wrapper{left:0;position:sticky;right:0;top:0;z-index:8}.tyk-fixed-wrapper--scrolled{box-shadow:2px 2px 5px #0000001a}.tyk-icon+.tyk-icon{margin-left:10px}.tyk-infinite-scroller{height:100%;overflow:hidden;position:relative}.tyk-infinite-scroller .loading{background:linear-gradient(180deg,rgba(255,255,255,0),rgb(255,255,255));justify-content:center;display:flex;inset:auto 0 0;padding:15px 0;width:100%}.tyk-infinite-scroller__wrapper{height:100%;overflow-y:auto}.tyk-info-note{border-radius:0;position:relative}.tyk-info-note p+p{margin-top:15px}.tyk-info-note:after{content:"";border-style:solid;border-width:0 20px 20px 0;border-color:rgba(0,0,0,0) #82bbc6 rgba(0,0,0,0) rgba(0,0,0,0);height:0;position:absolute;right:0;top:0;width:0}.tyk-info-note .tyk-message{border-radius:0;padding-top:40px;padding-bottom:40px}.tyk-loading__wrapper{background:rgba(255,255,255,.6);position:absolute;inset:0;z-index:99}.loader-wrapper{min-height:100px;position:relative}.loading{position:absolute;top:calc(50% - 10px);left:50%}.loading.relative{left:auto;padding:25px;position:relative;text-align:center;top:auto;width:100%}.loading-bar{display:inline-block;width:4px;height:20px;border-radius:4px;animation:loading 1s ease-in-out infinite;margin-left:2px}.loading-bar:nth-child(1){animation-delay:0;background-color:#00d9ba;opacity:1}.loading-bar:nth-child(2){animation-delay:.09s;background-color:#00d9ba;opacity:.8}.loading-bar:nth-child(3){animation-delay:.18s;background-color:#00d9ba;opacity:.6}.loading-bar:nth-child(4){animation-delay:.27s;background-color:#00d9ba;opacity:.4}@keyframes loading{0%{transform:scale(1)}20%{transform:scaleY(2.2)}40%{transform:scale(1)}}.tyk-list{border:2px solid #c3c3e5;border-radius:18px;font-size:14px;list-style-type:none;margin:0;max-height:191px;padding:0;overflow:auto}.tyk-list--with-inline-label{display:flex}.tyk-list--with-inline-label>label{margin-right:20px}.tyk-list li{border-bottom:1px solid #c3c3e5;padding:10px 20px;font-family:OpenSans-SemiBold}.tyk-list li:last-child{border:none}.tyk-list--default{border-color:#c3c3e5}.tyk-list--primary{border-color:#a2a2cc}.tyk-list--primary li{border-color:#ededf9;color:#505071}.tyk-list--primary-light{border-color:#ededf9}.tyk-list--primary-light li{border-color:#ededf9;color:#505071}.tyk-list--success{border-color:#00d9ba;color:#00d9ba}.tyk-list--success li{border-color:#00d9ba}.tyk-list--danger{border-color:#ff6c7d;color:#505071}.tyk-list--danger li{border-color:#ffbbc5}ul.tyk-list--inline{align-items:center;display:flex}ul.tyk-list--inline li{padding:0 10px}ul.tyk-list--inline.tyk-list--with-separator li:not(:first-child){border-left:1px solid #36364c}.tyk-message{display:flex;align-items:center;border-radius:18px;margin-bottom:20px;padding:20px}.tyk-message__content{flex-grow:1;margin-left:20px;margin-right:20px}.tyk-message>.tyk-icon:first-child{width:32px;height:32px;flex-shrink:0;border-radius:50%;color:#fff}.tyk-message>.tyk-icon:first-child:before{display:flex;width:100%;height:100%;align-items:center;justify-content:center}.tyk-message>.tyk-icon:last-child{cursor:pointer}.tyk-message--default{background-color:#ededf9;border:2px solid #505071;color:#505071}.tyk-message--default>.tyk-icon:first-child{background-color:#505071}.tyk-message--default>.tyk-icon:first-child{transform:rotate(180deg)}.tyk-message--info{background-color:#d3ebef;border:2px solid #82bbc6;color:#82bbc6}.tyk-message--info>.tyk-icon:first-child{background-color:#82bbc6}.tyk-message--success{background-color:#c2f2e9;border:2px solid #00b798;color:#00b798}.tyk-message--success>.tyk-icon:first-child{background-color:#00b798}.tyk-message--warning{background-color:#ffe885;border:2px solid #d6b218;color:#c58c11}.tyk-message--warning>.tyk-icon:first-child{background-color:#d6b218}.tyk-message--danger{background-color:#f5ccd1;border:2px solid #ff6c7d;color:#ea4766}.tyk-message--danger>.tyk-icon:first-child{background-color:#ff6c7d}.tyk-modal{--theme-header-height: 15px;--theme-header-icon-size: 65px;align-items:center;inset:0;pointer-events:none;position:fixed;z-index:-1}.tyk-modal .tyk-panel{border:2px solid #43435b;box-shadow:none;-webkit-box-shadow:none}.tyk-modal .tyk-modal__dialog{opacity:0;transition:all .2s ease}.tyk-modal.opened{display:flex;z-index:1080}.tyk-modal.opened .tyk-modal__dialog{display:flex;max-height:92vh;opacity:1;pointer-events:all}.tyk-modal.appear-enter-done .tyk-modal__dialog{opacity:1;margin-top:0}.tyk-modal__theme-header{position:absolute;top:-1px;left:0;right:0;height:var(--theme-header-height);border-top-left-radius:18px;border-top-right-radius:18px}.tyk-modal__theme-header .tyk-icon{position:absolute;left:calc(50% - var(--theme-header-icon-size)/2);top:calc((var(--theme-header-icon-size) - var(--theme-header-height))/-2);width:var(--theme-header-icon-size);height:var(--theme-header-icon-size);border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:25px;color:#fff}.tyk-modal--theme-success .tyk-modal__theme-header,.tyk-modal--theme-success .tyk-modal__theme-header .tyk-icon{background-color:#00d9ba}.tyk-modal--theme-warning .tyk-modal__theme-header,.tyk-modal--theme-warning .tyk-modal__theme-header .tyk-icon{background-color:#d6b218}.tyk-modal--theme-danger .tyk-modal__theme-header,.tyk-modal--theme-danger .tyk-modal__theme-header .tyk-icon{background-color:#ff6c7d}.tyk-modal__dialog{opacity:0;margin:-5% auto 0;pointer-events:all;transition:all .2s linear;width:85%}@media only screen and (min-width: 768px){.tyk-modal__dialog{width:600px}}@media only screen and (min-width: 768px){.tyk-modal__dialog.tyk-modal--lg{width:800px}}.tyk-modal__content{background:#fff;border-radius:18px;display:flex;flex-direction:column;position:relative;width:100%}.tyk-modal__body{flex:1;overflow:auto;--padding-top: calc(25px + (var(--theme-header-icon-size) - var(--theme-header-height)) / 2);padding:var(--padding-top) 25px 25px}.tyk-modal__body.no-padding{padding:0}.tyk-modal__footer{align-items:center;display:flex;justify-content:flex-end;padding:25px}.tyk-modal__footer>:not(:first-child){margin-left:5px}.tyk-modal__backdrop{background-color:#505071;border:none;display:none;inset:0;position:fixed;width:100%;z-index:1079}.tyk-modal__backdrop.opened{display:block;opacity:.5;transition:opacity .2s ease}.tyk-modal__backdrop.fade-enter-done{opacity:.5}.tyk-modal__header{--padding-top: calc(25px + (var(--theme-header-icon-size) - var(--theme-header-height)) / 2);padding:var(--padding-top) 25px 25px;align-items:center;border-bottom:1px solid #ededf9;display:flex;width:100%}.tyk-modal--theme-none .tyk-modal__header{padding-top:25px}.tyk-modal__header button{margin-left:auto;padding:0 5px}.tyk-modal__header+.tyk-modal__body{padding-top:25px}.tyk-modal__title{font-family:OpenSans-SemiBold;font-weight:500;margin:0;width:100%}.tyk-navigation{background-color:#fff;height:100%;overflow:auto;padding:0;width:100%}.tyk-navigation .tyk-navigation-item{width:100%}.tyk-navigation .tyk-navigation-item a{color:#505071;display:flex;padding:10px 20px;text-decoration:none;transition:all .2s ease}.tyk-navigation .tyk-navigation-item a:hover{background-color:#a2a2cc;color:#fff}.tyk-navigation .tyk-navigation-item a.active{background-color:#505071;color:#fff}.tyk-nav-bar{align-items:center;border:none;background-color:#fff;font-family:OpenSans-regular;color:#36364c;margin:0;padding:0 20px;width:100%;z-index:8;transition:all .2s linear}.tyk-nav-bar__pre{align-self:flex-end;color:#505071;flex-basis:100%}.tyk-nav-bar__pre a{font-family:OpenSans-Bold;font-size:12px;line-height:16px;color:#505071}.tyk-nav-bar.tyk-nav-bar__with-tabs .tyk-tabs--default>ul li button{padding-top:0}@media screen and (max-width: 1024px){.tyk-nav-bar{padding-left:20px}.menu-opened .tyk-nav-bar{transform:translate(245px)}}.tyk-nav-bar h1{color:#36364c}.tyk-nav-bar h4{margin:0}.tyk-nav-bar .tyk-nav-bar__wrapper{align-items:center;padding-bottom:0;display:flex;flex-wrap:wrap;height:92px}.tyk-nav-bar .tyk-nav-bar__wrapper.tyk-nav-bar--align-top{align-items:flex-start}@media screen and (max-width: 1024px){.tyk-nav-bar .tyk-nav-bar__wrapper{padding-left:0}}.tyk-nav-bar .tyk-nav-bar__wrapper h1{font-size:25px;font-family:smoolthan_bold;line-height:30px;margin:0;padding-right:10px}.tyk-nav-bar .tyk-nav-bar__wrapper h4{padding-right:10px}.tyk-nav-bar .tyk-nav-bar__wrapper .tyk-nav-bar__container{align-items:center;display:flex;flex-grow:1;justify-content:space-between}.tyk-nav-bar .tyk-nav-bar__wrapper .tyk-nav-bar__left{flex-grow:1}.tyk-nav-bar .tyk-nav-bar__wrapper .tyk-nav-bar__right{margin-left:auto}.tyk-panel{background:#fff;border-radius:0;margin-bottom:20px;font-family:OpenSans-SemiBold;position:relative}.tyk-panel.has-error,.tyk-panel .tyk-panel.has-error{border:2px solid #ff6c7d}.tyk-panel__header{align-items:center;border-bottom:1px solid #e1e1e1;display:flex;font-family:OpenSans-regular}.tyk-panel__header>.tyk-icon,.tyk-panel__header>.tyk-tooltip__wrapper{margin-left:5px}.tyk-panel .tyk-panel{border:2px solid #c3c3e5;box-shadow:none;-webkit-box-shadow:none}.tyk-panel--blank.tyk-panel--collapsed{margin-bottom:20px}.tyk-panel--blank.tyk-panel--collapsed .tyk-panel__header{margin-bottom:0}.tyk-panel--blank .tyk-panel__header{margin-bottom:-20px;padding:20px 25px;background-color:#fff;border:none;color:#36364c;font-size:17px;line-height:23px}.tyk-panel--primary{background-color:#0000}.tyk-panel--primary .tyk-panel__header{background-color:#a2a2cc;border:none;color:#fff;font-size:17px;line-height:23px}.tyk-panel--primary .tyk-panel__body{background-color:#fff;border:none;color:#505071;font-size:17px;line-height:23px}.tyk-panel--primary .tyk-panel__header{border:none}.tyk-panel--primary .tyk-form-group label,.tyk-panel--primary .tyk-toggle .tyk-toggle__label{color:#505071}.tyk-panel--success .tyk-panel__header{background-color:#00d9ba;border:none;color:#fff;font-size:17px;line-height:23px}.tyk-panel--danger .tyk-panel__header{background-color:#ff6c7d;border:none;color:#fff;font-size:17px;line-height:23px}.tyk-panel--warning .tyk-panel__header{background-color:#d6b218;border:none;color:#fff;font-size:17px;line-height:23px}.tyk-panel__body{background-color:#fff;border-radius:0;font-family:OpenSans-regular;padding:25px;position:relative;transition:height .2s}.tyk-panel__body~.tyk-panel__header{border-bottom-left-radius:0;border-bottom-right-radius:0}.tyk-panel__body.no-padding{padding:0}.tyk-panel__header{border-radius:0;font-family:OpenSans-SemiBold;overflow:hidden;padding:10px 25px;position:relative}.tyk-panel--collapsed .tyk-panel__header{border-bottom-left-radius:0;border-bottom-right-radius:0}.tyk-panel__header~.tyk-panel__body{border-top-left-radius:0;border-top-right-radius:0}.tyk-panel__headerh3{margin:0}.tyk-panel__header ng-transclude{vertical-align:middle}.tyk-panel__header.collapsable{cursor:pointer}.tyk-panel__icon-collapse--right .tyk-panel__header.collapsable{padding-right:48px}.tyk-panel__icon-collapse--left .tyk-panel__header.collapsable{padding-left:48px}.tyk-panel__header .collapsable__arrow-right{font-size:14px;position:absolute;padding:10px;right:10px;top:calc(50% - 21px)}.tyk-panel__header .collapsable__arrow-left{font-size:14px;position:absolute;padding:8px 0 10px 20px;left:0;top:calc(50% - 21px)}.tyk-panel__footer{align-items:center;border-top:1px solid #ededf9;display:flex;justify-content:flex-end;padding:25px}.tyk-panel__footer>:not(:first-child){margin-left:5px}.tyk-pill{align-items:center;border-radius:18px;display:inline-flex;font-size:12px;line-height:19px;margin:0 0 10px;padding:6px 15px;font-family:OpenSans-SemiBold}.tyk-pill--square{border-radius:8px}.tyk-pill i{font-size:12px}.tyk-pill+.tyk-pill{margin-right:10px}.tyk-pill button+span{margin-left:10px}.tyk-pill span+button{margin-left:10px}.tyk-pill:first-child{margin-right:10px}.tyk-pill:last-child{margin-right:0}.tyk-pill--default{background-color:#36364c;color:#fff}.tyk-pill--default i{color:#fff}.tyk-pill--default-outline{box-shadow:inset 0 0 0 2px #36364c;color:#505071}.tyk-pill--default-outline i{color:#505071}.tyk-pill--primary{background-color:#a2a2cc;color:#fff}.tyk-pill--primary i{color:#fff}.tyk-pill--primary-outline{box-shadow:inset 0 0 0 2px #a2a2cc;color:#505071}.tyk-pill--primary-outline i{color:#505071}.tyk-pill--success{background-color:#00d9ba;color:#fff}.tyk-pill--success i{color:#fff}.tyk-pill--success-outline{box-shadow:inset 0 0 0 2px #00d9ba;color:#505071}.tyk-pill--success-outline i{color:#505071}.tyk-pill--danger{background-color:#ff6c7d;color:#fff}.tyk-pill--danger i{color:#fff}.tyk-pill--danger-outline{box-shadow:inset 0 0 0 2px #ff6c7d;color:#505071}.tyk-pill--danger-outline i{color:#505071}.tyk-pill--warning{background-color:#d6b218;color:#fff}.tyk-pill--warning i{color:#fff}.tyk-pill--warning-outline{box-shadow:inset 0 0 0 2px #d6b218;color:#505071}.tyk-pill--warning-outline i{color:#505071}.tyk-pill--info{background-color:#82bbc6;color:#fff}.tyk-pill--info i{color:#fff}.tyk-pill--info-outline{box-shadow:inset 0 0 0 2px #82bbc6;color:#505071}.tyk-pill--info-outline i{color:#505071}.tyk-ui-reveal-wrapper{display:flex;flex-direction:column;justify-content:flex-end;align-items:stretch;width:100%;height:100%;z-index:1000;position:absolute;bottom:0;left:0;pointer-events:none}.tyk-ui-reveal-wrapper__panel{max-height:calc(100% - 2rem);background-color:#fff;padding:0;margin:0;overflow-y:auto;display:flex;flex-direction:column;pointer-events:all;flex-shrink:0;overflow:auto}.tyk-ui-reveal-wrapper__hole{flex-grow:1;opacity:0;width:100%;background-color:green;-webkit-user-select:none;user-select:none;pointer-events:none;z-index:-1}.tyk-ui-reveal-wrapper__gutter{height:2rem;width:100%;cursor:row-resize;display:flex;background-color:#a2a2cc;z-index:2;pointer-events:all;justify-content:space-between;align-items:stretch;position:relative;box-shadow:0 5px 10px #0000004d}.tyk-ui-reveal-wrapper__gutter__headerleft,.tyk-ui-reveal-wrapper__gutter__headerright{display:flex;align-items:center;flex:1}.tyk-ui-reveal-wrapper__gutter__headerleft{justify-content:flex-start}.tyk-ui-reveal-wrapper__gutter__headerright{justify-content:flex-end}.tyk-ui-reveal-wrapper__gutter__logo{width:1rem;height:1rem;-webkit-user-select:none;user-select:none;pointer-events:none;padding:.2rem;z-index:2;background-image:url(images/drag.svg);align-self:center}.tyk-ui-reveal-wrapper__gutter__logo:hover{border:dashed}.tyk-sidebar{background-color:#fff;height:calc(100vh - 58px);flex:0 0 280px;padding:0;position:-webkit-sticky;position:sticky;overflow:auto;top:58px}.tyk-table{border-collapse:collapse;border-spacing:0;background-color:#fff;border-radius:18px;width:100%}.tyk-table__wrapper{border:2px solid #c3c3e5;border-radius:18px;overflow:auto}.tyk-table__wrapper--no-border{border:none}.tyk-table__wrapper.no-innner-horizontal-borders .tyk-table>thead th,.tyk-table__wrapper.no-innner-horizontal-borders .tyk-table>tbody td{border-right:none}.tyk-table>thead th{border-right:1px solid #c3c3e5;color:#505071;font-size:14px;line-height:19px;font-family:OpenSans-Bold;text-transform:uppercase}.tyk-table>thead th:last-child{border-right:none}.tyk-table>thead th i{font-size:12px}.tyk-table>thead th .tyk-button{background:none;color:#36364c;padding:0}.tyk-table>thead th{padding:15px 10px}.tyk-table>tbody tr:hover{background:rgba(237,237,249,.4)}.tyk-table>tbody td{border-right:1px solid #c3c3e5;font-size:14px;line-height:19px;font-family:OpenSans-regular;padding:5px 10px;vertical-align:middle}.tyk-table>tbody td:last-child{border-right:none}.tyk-table>tbody td.fit{white-space:nowrap;width:1%}.tyk-table>tbody td input:not([type=checkbox]):not([type=radio]){margin-top:15px}.tyk-table>tbody td a{color:#505071;font-family:OpenSans-SemiBold}.tyk-table>tbody td label{margin:0}.tyk-table>tbody td input[type=checkbox]{margin:0}.tyk-table tbody>tr{border-top:1px solid #c3c3e5;transition:all .4s linear;border-radius:18px}.tyk-table tbody>tr.clickable{cursor:pointer}.tyk-table>tbody tr td:first-child,.tyk-table>thead tr th:first-child{padding-left:20px}.tyk-table>tbody tr td:first-child.with-icon,.tyk-table>thead tr th:first-child.with-icon{padding-left:15px}.tyk-table>tbody tr td:last-child,.tyk-table>thead tr th:last-child{padding-right:20px}.tyk-table>tbody tr td:last-child.with-icon,.tyk-table>thead tr th:last-child.with-icon{padding-right:15px}.tyk-table .tyk-pagination{padding:20px 25px}.tyk-table .tyk-pagination li:first-child{margin-left:auto}.tyk-table .nowrap{white-space:nowrap}.tyk-table .wrap{word-break:break-all}.tyk-table-search{padding:10px 25px 0}.tyk-table-search label{font-size:14px;text-transform:uppercase}.header-sort{padding-left:3px;padding-top:5px;vertical-align:middle}.new-table-pagination{float:right}.selectable>div{margin-left:20px}.scrollable{display:block;overflow:auto}.fixed-header{background:#fff;position:sticky;top:0}.tyk-table.has-error,.tyk-table__wrapper.has-error{border:2px solid #ff6c7d!important}.tyk-tabs--default>ul{display:flex;list-style-type:none;margin:0;padding:0;overflow:auto}.tyk-tabs--default>ul li{display:flex;white-space:nowrap;margin-right:0}.tyk-tabs--default>ul li:last-child{margin-right:0}.tyk-tabs--default>ul li.active button,.tyk-tabs--default>ul li button:hover{border-bottom-color:#00d9ba;color:#505071;opacity:1}.tyk-tabs--default>ul li button{background:none;border:none;border-bottom:4px solid rgba(0,0,0,0);color:#505071;cursor:pointer;font-size:14px;font-family:OpenSans-SemiBold;padding:10px 2px 3px;margin-right:20px;transition:all .2s linear;opacity:.7}.tyk-tabs--default>ul li button:focus{outline:none}.tyk-tab__content{padding:25px}.tyk-toast__container{bottom:0;min-width:300px;position:fixed;right:20px;z-index:11}.tyk-toast__message{position:relative}.tyk-toast-message__button{color:#505071;height:20px;line-height:1;padding:5px;position:absolute;right:5px;top:5px;width:20px}.tyk-toast-message__button:hover{background:rgba(255,255,255,.3);color:#505071}.floating-container{position:fixed;top:-9999px;overflow:auto;z-index:1080}.tyk-combobox2{outline:none}.tyk-combobox2.disabled .tyk-form-control{border:2px solid #c3c3e5!important;background-color:#ededf9;color:#505071;cursor:not-allowed}.tyk-combobox2.disabled .tyk-combobox2__current-values .tyk-pill--combobox button{cursor:not-allowed}.tyk-combobox2.disabled:not(.is-expand-mode) .tyk-combobox2__values-container-trigger{cursor:not-allowed}.tyk-combobox2.disabled .tyk-combobox2__entry-field{background-color:#0000;cursor:not-allowed}.tyk-combobox2 .tyk-form-control{display:flex;flex-direction:row;position:relative;min-height:40px;height:auto;padding:0}.tyk-combobox2 .tyk-form-control:focus-within{outline:none;border:2px solid #00d9ba}.tyk-combobox2__current-values{display:flex;flex-grow:1;flex-wrap:wrap;padding-top:2px;padding-bottom:2px;padding-left:10px;max-width:calc(100% - 40px)}.tyk-combobox2__current-values.expand-mode{max-height:1000px;overflow:hidden;transition:max-height 1s ease}.tyk-combobox2__current-values--collapsed.expand-mode{max-height:38px;transition:max-height .2s ease}.tyk-combobox2__current-values .tyk-pill--combobox{margin-top:3px;margin-bottom:3px;background-color:#f0f0f0;border-radius:10px;color:#505071;padding:5px 10px;max-width:100%;max-height:26px}.tyk-combobox2__current-values .tyk-pill--combobox button{background:none;border:none;cursor:pointer;width:23px;outline:none}.tyk-combobox2__current-values .tyk-pill--combobox button+span{margin-left:0}.tyk-combobox2__current-values .tyk-pill--combobox span{overflow:hidden;text-overflow:ellipsis}.tyk-combobox2__current-values .tyk-pill--combobox i{margin-right:5px}.tyk-combobox2__entry-field{border:none;line-height:30px}.tyk-combobox2__entry-field:focus,.tyk-combobox2__entry-field:active{border:none;outline:none}.tyk-combobox2__entry-field::placeholder{color:#a2a2cc;font-family:OpenSans-SemiBold}.tyk-combobox2__text-value{font-family:OpenSans-SemiBold;font-size:14px;line-height:19px;padding:9px 5px;width:100%;overflow:hidden;text-overflow:ellipsis;line-height:1;outline:none}.tyk-combobox2__text-value.overflow-single{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tyk-combobox2__text-value.is-placeholder{color:#a2a2cc;font-family:OpenSans-SemiBold}.tyk-combobox2__values-container-trigger{position:relative;flex-basis:40px;display:flex;justify-content:center;align-items:center;cursor:pointer;outline:none;transition:all .2s}.tyk-combobox2__values-container-trigger--expanded{transform:rotate(180deg)}.tyk-combobox2__values-container-trigger .tyk-icon{height:14px}.tyk-form-group--rounded-corners .tyk-combobox2-disabled-overlay{border-radius:16px}.tyk-combobox2__combobox-dropdown{display:flex;flex-direction:column;border:2px solid #c3c3e5;background-color:#fff}.tyk-combobox2__combobox-dropdown.tyk-form-group--rounded-corners{border-radius:18px}.tyk-combobox2__combobox-dropdown .tyk-combobox2__combobox-search{background-color:#fff;position:sticky;top:0;padding:10px 20px}.tyk-combobox2__combobox-dropdown .tyk-combobox2__combobox-search+.combobox-list{border-top:1px solid #c3c3e5}.tyk-combobox2__combobox-dropdown .tyk-combobox2__combobox-list{max-height:255px}.tyk-combobox2__combobox-dropdown .tyk-combobox2__combobox-list li{display:flex;cursor:pointer;padding:9px 20px;transition:all .2s;font-family:OpenSans-SemiBold}.tyk-combobox2__combobox-dropdown .tyk-combobox2__combobox-list li:hover,.tyk-combobox2__combobox-dropdown .tyk-combobox2__combobox-list li.active{background-color:#ededf9}.tyk-combobox2__combobox-dropdown .tyk-combobox2__combobox-list li.disabled{color:#c3c3e5;background-color:initial}.tyk-combobox2__combobox-dropdown .tyk-combobox2__combobox-list li+li{border-top:1px solid #c3c3e5}.tyk-combobox2__combobox-dropdown .tyk-combobox2__combobox-list li i{margin-right:5px}.tyk-combobox2__combobox-dropdown .tyk-combobox2__combobox-list li .item-name{overflow:hidden;text-overflow:ellipsis;line-height:16px}.tyk-combobox2__values-container-trigger{color:#505071}.tyk-combobox2__combobox-dropdown.tyk-form-group--rounded-corners{z-index:1081}.tyk-checkbox label{display:flex;align-items:flex-start;padding-left:20px}.tyk-checkbox label input{margin-left:-20px;margin-top:5px}.tyk-checkbox--theme-light label,.tyk-checkbox--theme-light.tyk-checkbox--is-disabled label{color:#fff}.tyk-checkbox--is-disabled label,.tyk-checkbox--is-disabled p{cursor:not-allowed;opacity:.5}.flatpickr-day.selected,.flatpickr-day.startRange,.flatpickr-day.endRange,.flatpickr-day.selected.inRange,.flatpickr-day.startRange.inRange,.flatpickr-day.endRange.inRange,.flatpickr-day.selected:focus,.flatpickr-day.startRange:focus,.flatpickr-day.endRange:focus,.flatpickr-day.selected:hover,.flatpickr-day.startRange:hover,.flatpickr-day.endRange:hover,.flatpickr-day.selected.prevMonthDay,.flatpickr-day.startRange.prevMonthDay,.flatpickr-day.endRange.prevMonthDay,.flatpickr-day.selected.nextMonthDay,.flatpickr-day.startRange.nextMonthDay,.flatpickr-day.endRange.nextMonthDay{background:#00d9ba!important;border-color:#00d9ba!important}.tyk-dropdown{display:inline-block}.tyk-dropdown+.tyk-button,.tyk-dropdown+.tyk-dropdown,.tyk-dropdown+.tyk-toggle{margin-left:10px}.tyk-dropdown--block{left:20px;right:20px}.tyk-dropdown--relative{left:auto;right:auto}.tyk-dropdown--custom{padding:20px 25px}.tyk-dropdown label{display:block}.tyk-dropdown__trigger{position:relative}.tyk-dropdown.theme-list .tyk-button{background:#fff;border:2px solid #36364c;border-radius:18px;color:#505071}.tyk-dropdown.theme-list .tyk-button:hover,.tyk-dropdown.theme-list .tyk-button:active,.tyk-dropdown.theme-list .tyk-button:active:focus,.tyk-dropdown.theme-list .tyk-button:focus{background:#fff;border-color:#43435b;color:#505071}.tyk-dropdown-menu{background:#fff;border:2px solid #c3c3e5;border-radius:18px;-webkit-filter:drop-shadow(1px 2px 1px rgba(0,0,0,.1));filter:drop-shadow(1px 2px 1px rgba(0,0,0,.1));list-style-type:none;margin:3px 0 0;overflow:hidden;padding:0;z-index:1081}.tyk-dropdown-menu.tyk-dropdown--scrollable{overflow:auto}.tyk-dropdown-menu .tyk-panel{margin:0}.tyk-dropdown-menu.opened{display:flex;flex-direction:column;position:absolute}.tyk-dropdown-menu>li{background:#fff;border-bottom:1px solid #fff;display:flex;position:relative;z-index:7}.tyk-dropdown-menu>li:last-child{border:none}.tyk-dropdown-menu>li i{left:7px;position:absolute;top:9px}.tyk-dropdown-menu>li>a{cursor:pointer;color:#505071;display:flex;font-size:12px;padding:7px 24px;text-transform:uppercase;text-decoration:none;width:100%}.tyk-dropdown-menu>li>a:hover{color:#505071}.tyk-dropdown-menu>li>a .badge{background:#505071;color:#fff;font-size:10px;margin-top:-4px;margin-left:6px}.tyk-dropdown-menu>li>a:hover{background-color:#ededf9;text-decoration:none}.tyk-dropdown--relative.opened{position:relative}.tyk-editable-list__submit-btn{white-space:nowrap}.tyk-editable-list__form{align-items:center;display:flex}.tyk-editable-list__form .tyk-form-group{margin-bottom:0}.tyk-editable-list__form--sticked{margin-left:0}.tyk-editable-list__form--sticked button{border-radius:0 3px 3px 0/0px 3px 3px 0px;padding:10px 15px 11px}.tyk-editable-list__form span.inline{margin-top:0}.tyk-editable-list__form>span{margin-left:15px}.tyk-editable-list__form>span.inline-with-label{align-self:flex-end}.tyk-editable-list__header{padding-top:15px;border-bottom:1px solid #43435b;color:#505071;font-size:11px;padding-bottom:15px;text-transform:uppercase}.tyk-editable-list__header .tyk-row{margin:0}.tyk-editable-list-items{overflow:hidden;list-style:none;padding:20px 0 0}.tyk-editable-list-items .edit-mode-wrapper.table button{margin-top:23px}.tyk-editable-list-items .tyk-row{margin:0}.tyk-editable-list-items button[disabled]{cursor:not-allowed}.tyk-editable-list-items.tyk-editable-list-items--inline{align-items:center;color:#505071;display:flex;flex-wrap:wrap}.tyk-editable-list-items li{border-top:1px solid #c3c3e5;transition:all .2s linear}.tyk-editable-list-items li.tyk-editable-list-item--inline{background-color:#c3c3e5;border-radius:25px;border:none;color:#fff;float:left;font-family:OpenSans-SemiBold;margin-bottom:10px;margin-right:15px;padding:0 15px;white-space:nowrap}.tyk-editable-list-items li.tyk-editable-list-item--inline .tyk-editable-list-item__text{color:#505071;padding:5px 0}.tyk-editable-list-items li.tyk-editable-list-item--inline .tyk-editable-list-action__button.on-edit{margin-top:0}.tyk-editable-list-items li:first-child{border-top:none}.tyk-editable-list-items li .tyk-editable-list-item__text{display:flex;padding:10px 0}.tyk-editable-list-items li .tyk-editable-list-item__text>span{flex-grow:1}.tyk-editable-list-items li .tyk-editable-list-item__text>div:first-child{flex-grow:1}.tyk-editable-list-items li .tyk-editable-list-item__text>div:first-child .error-message{margin:0}.tyk-editable-list-items li .tyk-editable-list-items{overflow:hidden;padding-bottom:10px}.tyk-editable-list-items li .tyk-editable-list{border-top:5px solid #43435b;background:#ededf9;padding:10px 15px}.tyk-editable-list-items .tyk-editable-list-item__text{display:block;word-wrap:break-word;word-break:break-all}.tyk-editable-list-items .tyk-editable-list-action__button{border:none;background:rgba(0,0,0,0)}.tyk-editable-list-items .tyk-editable-list-action__button.on-edit{margin-left:10px}.tyk-editable-list-items .tyk-editable-list-item-controls{flex-grow:0;text-align:right}.tyk-editable-list-item__controls{text-align:right}.tyk-editable-list-items.table{background-color:#fff;border-radius:18px;border:2px solid #c3c3e5;padding:0!important}.tyk-editable-list-items.table li{border-color:#c3c3e5}.tyk-editable-list-items.table li:hover{background:#ededf9}.tyk-editable-list-items.table .tyk-editable-list-item__text{background:rgba(0,0,0,0)}.tyk-editable-list-items.table .tyk-editable-list-action__button{border-radius:6px;cursor:pointer;margin-right:10px}.tyk-editable-list__header{background-color:#fff;border-top-left-radius:18px;border-top-right-radius:18px;border:2px solid #c3c3e5;border-bottom:1px solid #c3c3e5!important;color:#505071!important;font-family:OpenSans-Bold;margin-top:10px}.tyk-editable-list__header+.tyk-editable-list-items.table{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.editable-list__header{align-items:center;display:flex;margin-bottom:10px}.editable-list__header .tyk-button{margin-left:auto}.editable-list__wrapper.has-error .editable-list__list{border:2px solid #ff6c7d}.editable-list__list{border:2px solid #c3c3e5;border-radius:18px;display:flex;flex-direction:column-reverse}.editable-list__item{border-bottom:1px solid #c3c3e5;display:flex;flex-wrap:nowrap;width:100%}.editable-list__item:first-child{border-bottom:none}.editable-list__item-header{border-bottom:1px solid #c3c3e5;color:#505071;font-size:14px;line-height:19px;font-family:OpenSans-Bold;text-transform:uppercase}.editable-list__item-header .editable-list__item-cell{padding:10px}.editable-list__item-cell{border-left:1px solid #c3c3e5;overflow:hidden;padding:0 10px}.editable-list__item-cell .tyk-form-control--readonly{overflow:hidden;text-overflow:ellipsis;word-break:break-all}.editable-list__item-cell:first-child{border-left:none;padding-left:15px}.editable-list__item-cell:last-child{padding-right:15px}.editable-list__item-cell .tyk-form-group{margin:10px 0;width:100%}.editable-list__item--size-1{display:flex;flex-grow:2;width:8.3333333333%}.editable-list__item--size-2{display:flex;flex-grow:3;width:16.6666666667%}.editable-list__item--size-3{display:flex;flex-grow:4;width:25%}.editable-list__item--size-4{display:flex;flex-grow:5;width:33.3333333333%}.editable-list__item--size-5{display:flex;flex-grow:6;width:41.6666666667%}.editable-list__item--size-6{display:flex;flex-grow:7;width:50%}.editable-list__item--size-7{display:flex;flex-grow:8;width:58.3333333333%}.editable-list__item--size-8{display:flex;flex-grow:9;width:66.6666666667%}.editable-list__item--size-9{display:flex;flex-grow:10;width:75%}.editable-list__item--size-10{display:flex;flex-grow:11;width:83.3333333333%}.editable-list__item--size-11{display:flex;flex-grow:12;width:91.6666666667%}.editable-list__item--size-12{display:flex;flex-grow:13;width:100%}.editable-list__item--size-fit{width:fit-content}.editable-list__item-action{align-items:flex-start;display:flex;justify-content:center;width:100px}.editable-list__item-action .tyk-button{margin-top:20px}.editable-list__item-action--read-only{color:#c3c3e5;align-items:center}.editable-list__item-action--read-only .tyk-button{margin-top:0}.tyk-file-input__wrapper{position:relative}.tyk-file-input__wrapper>input{padding:6px 20px}.tyk-file-input__wrapper>button{background:none;border:none;cursor:pointer;position:absolute;right:15px;top:9px}.tyk-multiselect{align-items:flex-start;border-radius:18px;flex-wrap:wrap;display:flex;margin-bottom:20px;width:100%}.tyk-multiselect .input-group .input-group-addon+.form-control{border-width:1px!important;border-left:none!important;border-radius:0!important}.tyk-multiselect .input-group .input-group-addon{background:rgba(0,0,0,0)!important;border-width:1px!important;border-right:0!important;border-radius:0!important}.tyk-multiselect.has-error{border:2px solid #ff6c7d}.tyk-multiselect__header{background-color:#36364c;border-top-left-radius:18px;border-top-right-radius:18px;color:#fff;display:flex;width:100%}.tyk-multiselect__header>div{padding:10px 15px;width:50%}.tyk-multiselect__panel-wrapper{border:2px solid #c3c3e5;border-top:none;border-bottom-left-radius:18px;border-bottom-right-radius:18px;display:flex;flex:1;height:265px;width:100%}.tyk-multiselect__panel{display:flex;flex-direction:column;margin:0 0 0 -1px;position:relative;width:calc(50% + 1px)}.tyk-multiselect__panel:last-child{border-left:2px solid #c3c3e5}.tyk-multiselect__panel:last-child .tyk-form-group{margin-left:-1px;width:calc(100% + 2px)}.tyk-multiselect__panel .tyk-message{margin:20px 20px 0}.tyk-multiselect__list{list-style-type:none;margin:0;padding:0}.tyk-multiselect__list--scroll{height:100%;overflow-y:auto}.tyk-multiselect__list>li{border-bottom:2px solid #c3c3e5;display:flex;flex-direction:column;padding:10px 15px}.tyk-multiselect__list>li>div{align-items:start;display:flex;width:100%}.tyk-multiselect__list>li .loading{justify-content:center}.tyk-multiselect__list>li:last-child{border-bottom:none}.tyk-multiselect-item__name{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tyk-multiselect .tyk-form-group{margin:0}.tyk-multiselect .tyk-multiselect-item__controls{display:flex;margin-left:auto;flex-wrap:nowrap}.tyk-multiselect .tyk-multiselect-item__controls .tyk-button{color:#505071;margin-left:5px}.tyk-multiselect .tyk-multiselect-item__controls .tyk-button:last-child{margin-left:0}.tyk-pagination{display:flex;list-style-type:none;margin:10px 0;padding:0}.tyk-pagination li{align-items:center;display:flex}.tyk-pagination li:first-child button{border-top-left-radius:18px;border-bottom-left-radius:18px}.tyk-pagination li:last-child button{border-top-right-radius:18px;border-bottom-right-radius:18px}.tyk-pagination span{margin:0 10px}.tyk-pagination button{background:#fff;border:none;font-size:14px;font-family:OpenSans-Bold;cursor:pointer;color:#36364c;margin-left:-1px;padding:10px 15px}.tyk-pagination button:hover{background-color:#c2f2e9}.tyk-pagination .active button{background-color:#00d9ba;color:#fff}.tyk-radio label{align-items:center;display:flex}.tyk-radio--is-disabled label,.tyk-radio--is-disabled p{cursor:not-allowed;opacity:.5}.tyk-radio__description-text{padding:0 0 0 20px}.tyk-select{background:rgba(0,0,0,0) url(images/arrow_down.svg) no-repeat calc(100% - 15px) center;background-size:15px 15px}.tyk-selectable-list{margin-bottom:20px;width:100%}.tyk-selectable-list li:not(.tyk-selectable-list__no-items-message){font-family:OpenSans-SemiBold;padding:0}.tyk-selectable-list li:not(.tyk-selectable-list__no-items-message) .tyk-message{margin-bottom:0}.tyk-selectable-list li:not(.tyk-selectable-list__no-items-message) label{font-family:OpenSans-SemiBold;margin:0}.tyk-selectable-list li:not(.tyk-selectable-list__no-items-message)>label{align-items:center;cursor:pointer;display:flex;padding:10px 20px}.tyk-selectable-list li:not(.tyk-selectable-list__no-items-message)>label input[type=checkbox]{margin-left:auto}.tyk-selectable-list__item--with-icon input[type=checkbox]{visibility:hidden}textarea.tyk-form-control{height:auto}.tyk-toggle{display:inline-flex;flex-wrap:wrap;font-family:OpenSans-Bold;font-size:14px;line-height:19px;white-space:nowrap}.tyk-toggle.block{margin-bottom:20px;width:100%}.tyk-toggle.block+.tyk-toggle{margin-left:0}.tyk-toggle.inline-label{align-items:center;flex-wrap:nowrap}.tyk-toggle__list--has-error{border:2px solid #ff6c7d}.tyk-toggle .tyk-toggle__label{display:block;font-family:OpenSans-SemiBold;font-size:14px;padding:0;width:100%;color:#36364c}.tyk-toggle.inline-label .tyk-toggle__label{margin-right:10px;width:auto}.tyk-toggle+.tyk-button,.tyk-toggle+.tyk-dropdown,.tyk-toggle+.tyk-toggle{margin-left:10px}.tyk-toggle--disabled-true{cursor:not-allowed;opacity:.7}.tyk-toggle--column .tyk-toggle__list--separated{display:flex;flex-direction:column;margin-right:20px}.tyk-toggle--column .tyk-toggle__list--separated .tyk-toggle__item{background-color:#ededf9;margin-right:auto}.tyk-toggle__list{background:#ededf9;border-radius:25px;display:flex;list-style-type:none;margin:0;padding:0;position:relative}.tyk-toggle__list--separated{background:rgba(0,0,0,0);flex-wrap:wrap}.tyk-toggle--on-dark .tyk-toggle__list{background:#fff}.tyk-toggle--default .tyk-toggle__item--active span{color:#fff}.tyk-toggle--default .tyk-toggle__list--single .tyk-toggle__item--active,.tyk-toggle--default .tyk-toggle__list--separated .tyk-toggle__item--active{background-color:#36364c;color:#fff;border:2px solid rgba(0,0,0,0)}.tyk-toggle--default .tyk-toggle__list--single .tyk-toggle__item--active span,.tyk-toggle--default .tyk-toggle__list--separated .tyk-toggle__item--active span{color:#fff}.tyk-toggle--default .tyk-toggle__list--single .tyk-toggle__item--active:hover,.tyk-toggle--default .tyk-toggle__list--separated .tyk-toggle__item--active:hover{background-color:#36364c;color:#fff}.tyk-toggle--primary .tyk-toggle__item--active span{color:#fff}.tyk-toggle--primary .tyk-toggle__list--single .tyk-toggle__item--active,.tyk-toggle--primary .tyk-toggle__list--separated .tyk-toggle__item--active{background-color:#a2a2cc;color:#fff;border:2px solid rgba(0,0,0,0)}.tyk-toggle--primary .tyk-toggle__list--single .tyk-toggle__item--active span,.tyk-toggle--primary .tyk-toggle__list--separated .tyk-toggle__item--active span{color:#fff}.tyk-toggle--primary .tyk-toggle__list--single .tyk-toggle__item--active:hover,.tyk-toggle--primary .tyk-toggle__list--separated .tyk-toggle__item--active:hover{background-color:#a2a2cc;color:#fff}.tyk-toggle--success .tyk-toggle__item--active span{color:#fff}.tyk-toggle--success .tyk-toggle__list--single .tyk-toggle__item--active,.tyk-toggle--success .tyk-toggle__list--separated .tyk-toggle__item--active{background-color:#00b798;color:#fff;border:2px solid rgba(0,0,0,0)}.tyk-toggle--success .tyk-toggle__list--single .tyk-toggle__item--active span,.tyk-toggle--success .tyk-toggle__list--separated .tyk-toggle__item--active span{color:#fff}.tyk-toggle--success .tyk-toggle__list--single .tyk-toggle__item--active:hover,.tyk-toggle--success .tyk-toggle__list--separated .tyk-toggle__item--active:hover{background-color:#00b798;color:#fff}.tyk-toggle--danger .tyk-toggle__item--active span{color:#fff}.tyk-toggle--danger .tyk-toggle__list--single .tyk-toggle__item--active,.tyk-toggle--danger .tyk-toggle__list--separated .tyk-toggle__item--active{background-color:#ff6c7d;color:#fff;border:2px solid rgba(0,0,0,0)}.tyk-toggle--danger .tyk-toggle__list--single .tyk-toggle__item--active:hover,.tyk-toggle--danger .tyk-toggle__list--separated .tyk-toggle__item--active:hover{background-color:#ff6c7d;color:#fff}.tyk-toggle--warning .tyk-toggle__item--active span{color:#505071}.tyk-toggle--warning .tyk-toggle__list--single .tyk-toggle__item--active,.tyk-toggle--warning .tyk-toggle__list--separated .tyk-toggle__item--active{background-color:#d6b218;color:#505071;border:2px solid rgba(0,0,0,0)}.tyk-toggle--warning .tyk-toggle__list--single .tyk-toggle__item--active:hover,.tyk-toggle--warning .tyk-toggle__list--separated .tyk-toggle__item--active:hover{background-color:#d6b218;color:#505071}.tyk-toggle--primary-gradient .tyk-toggle__item--active span{color:#fff}.tyk-toggle--primary-gradient .tyk-toggle__list--single .tyk-toggle__item--active,.tyk-toggle--primary-gradient .tyk-toggle__list--separated .tyk-toggle__item--active{border-image:linear-gradient(to right,#A2A2CC,#505071,#A2A2CC) 0 round;background:rgba(0,0,0,0) linear-gradient(to right,#A2A2CC,#505071,#A2A2CC);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-toggle--primary-gradient .tyk-toggle__list--single .tyk-toggle__item--active span,.tyk-toggle--primary-gradient .tyk-toggle__list--separated .tyk-toggle__item--active span,.tyk-toggle--success-gradient .tyk-toggle__item--active span{color:#fff}.tyk-toggle--success-gradient .tyk-toggle__list--single .tyk-toggle__item--active,.tyk-toggle--success-gradient .tyk-toggle__list--separated .tyk-toggle__item--active{border-image:linear-gradient(to right,#00d9ba,#00B798,#00d9ba) 0 round;background:rgba(0,0,0,0) linear-gradient(to right,#00d9ba,#00B798,#00d9ba);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-toggle--success-gradient .tyk-toggle__list--single .tyk-toggle__item--active span,.tyk-toggle--success-gradient .tyk-toggle__list--separated .tyk-toggle__item--active span,.tyk-toggle--danger-gradient .tyk-toggle__item--active span{color:#fff}.tyk-toggle--danger-gradient .tyk-toggle__list--single .tyk-toggle__item--active,.tyk-toggle--danger-gradient .tyk-toggle__list--separated .tyk-toggle__item--active{border-image:linear-gradient(to right,#FF6C7D,#EA4766,#FF6C7D) 0 round;background:rgba(0,0,0,0) linear-gradient(to right,#FF6C7D,#EA4766,#FF6C7D);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-toggle--danger-gradient .tyk-toggle__list--single .tyk-toggle__item--active span,.tyk-toggle--danger-gradient .tyk-toggle__list--separated .tyk-toggle__item--active span,.tyk-toggle--warning-gradient .tyk-toggle__item--active span{color:#fff}.tyk-toggle--warning-gradient .tyk-toggle__list--single .tyk-toggle__item--active,.tyk-toggle--warning-gradient .tyk-toggle__list--separated .tyk-toggle__item--active{border-image:linear-gradient(to right,#FFE885,#D6B218,#FFE885) 0 round;background:rgba(0,0,0,0) linear-gradient(to right,#FFE885,#D6B218,#FFE885);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#505071}.tyk-toggle--warning-gradient .tyk-toggle__list--single .tyk-toggle__item--active span,.tyk-toggle--warning-gradient .tyk-toggle__list--separated .tyk-toggle__item--active span{color:#fff}.tyk-toggle__item{color:#fff;text-transform:uppercase;z-index:2;border:2px solid rgba(0,0,0,0)}.tyk-toggle__item:first-child{border-top-left-radius:25px;border-bottom-left-radius:25px}.tyk-toggle__item:last-child{border-top-right-radius:25px;border-bottom-right-radius:25px}.tyk-toggle__list--separated .tyk-toggle__item{background:tyk-toggle__list--separated;border-radius:25px;margin-bottom:5px;margin-top:5px;margin-right:10px}.tyk-toggle__list--separated .tyk-toggle__item:last-child{margin-right:0}.tyk-toggle__item input{display:none}.tyk-toggle__item label{cursor:pointer;font-family:OpenSans-Bold;position:relative;margin:0;transition:all .2s ease}.tyk-toggle__list--single .tyk-toggle__item label{padding-left:45px}.tyk-toggle__list--single .tyk-toggle__item--active label{padding-left:25px;padding-right:45px}.tyk-toggle__list--single .tyk-toggle__item--active label .tyk-toggle__item-notch{left:calc(100% - 35px)}.tyk-toggle--on-dark .tyk-toggle__item:not(.tyk-toggle__item--active){color:#505071}.tyk-toggle--on-dark .tyk-toggle__item-notch--single{background:#ededf9}.tyk-toggle--sm label{padding:5px 17px;font-size:12px;line-height:16px;border-radius:20px}.tyk-toggle--sm .tyk-toggle__list--single label{padding-left:35px}.tyk-toggle--sm .tyk-toggle__list--single .tyk-toggle__item--active label{padding-left:17px;padding-right:35px}.tyk-toggle--sm .tyk-toggle__list--single .tyk-toggle__item--active label .tyk-toggle__item-notch{left:calc(100% - 27px)}.tyk-toggle--md label{padding:10px 25px;font-size:14px;line-height:16px;border-radius:20px}.tyk-toggle--lg label{padding:15px 25px;font-size:14px;line-height:16px;border-radius:20px}.tyk-toggle--lg .tyk-toggle__list--single label{padding-left:45px}.tyk-toggle--lg .tyk-toggle__list--single .tyk-toggle__item--active label{padding-left:25px;padding-right:45px}.tyk-toggle--lg .tyk-toggle__list--single .tyk-toggle__item--active label .tyk-toggle__item-notch{left:calc(100% - 43px)}.tyk-toggle__item-notch{border-radius:25px;bottom:2px;position:absolute;transition:all .2s ease;top:2px}.tyk-toggle__item-notch--single{background:#fff;left:2px;width:32px}.tyk-toggle--sm .tyk-toggle__item-notch--single{width:24px}.tyk-toggle--lg .tyk-toggle__item-notch--single{width:40px}.tyk-toggle__notch{border-radius:25px;left:0;position:absolute;bottom:4px;top:4px;transition:all .2s ease;width:100px;z-index:1}.tyk-toggle--default .tyk-toggle__notch{background-color:#36364c;color:#fff;border:2px solid rgba(0,0,0,0)}.tyk-toggle--default .tyk-toggle__notch:hover{background-color:#36364c;color:#fff}.tyk-toggle--primary .tyk-toggle__notch{background-color:#a2a2cc;color:#fff;border:2px solid rgba(0,0,0,0)}.tyk-toggle--primary .tyk-toggle__notch:hover{background-color:#a2a2cc;color:#fff}.tyk-toggle--success .tyk-toggle__notch{background-color:#00d9ba;color:#fff;border:2px solid rgba(0,0,0,0)}.tyk-toggle--success .tyk-toggle__notch:hover{background-color:#00d9ba;color:#fff}.tyk-toggle--danger .tyk-toggle__notch{background-color:#ff6c7d;color:#fff;border:2px solid rgba(0,0,0,0)}.tyk-toggle--danger .tyk-toggle__notch:hover{background-color:#ff6c7d;color:#fff}.tyk-toggle--warning .tyk-toggle__notch{background-color:#d6b218;color:#505071;border:2px solid rgba(0,0,0,0)}.tyk-toggle--warning .tyk-toggle__notch:hover{background-color:#d6b218;color:#505071}.tyk-toggle--primary-gradient .tyk-toggle__notch{border-image:linear-gradient(to right,#A2A2CC,#505071,#A2A2CC) 0 round;background:rgba(0,0,0,0) linear-gradient(to right,#A2A2CC,#505071,#A2A2CC);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-toggle--success-gradient .tyk-toggle__notch{border-image:linear-gradient(to right,#00d9ba,#00B798,#00d9ba) 0 round;background:rgba(0,0,0,0) linear-gradient(to right,#00d9ba,#00B798,#00d9ba);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-toggle--danger-gradient .tyk-toggle__notch{border-image:linear-gradient(to right,#FF6C7D,#EA4766,#FF6C7D) 0 round;background:rgba(0,0,0,0) linear-gradient(to right,#FF6C7D,#EA4766,#FF6C7D);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-toggle--warning-gradient .tyk-toggle__notch{border-image:linear-gradient(to right,#FFE885,#D6B218,#FFE885) 0 round;background:rgba(0,0,0,0) linear-gradient(to right,#FFE885,#D6B218,#FFE885);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#505071}.empty-toggle{padding:1px}.string-builder{position:relative;display:block}.string-builder__input{word-break:break-all;resize:none;overflow:hidden;background:rgba(0,0,0,0);position:absolute;border:none;font:inherit;display:block;z-index:1;width:100%;padding:0;width:calc(100% - 35px)}.string-builder__input:focus,.string-builder__input:active{border:none;outline:none}.string-builder__styled{font:inherit;position:absolute;pointer-events:none;width:calc(100% - 35px);color:#0000;z-index:2;border:none;word-wrap:break-word;word-break:break-all}.string-builder__disabled{background-color:#ededf9!important;color:#505071;cursor:not-allowed}.url-builder__options_name{font-weight:10px}.url-builder__options_description{color:gray}.string-builder-dropdown{display:flex;flex-direction:column;border:2px solid #c3c3e5;background-color:#fff}.string-builder-dropdown.tyk-form-group--rounded-corners{border-radius:18px}.string-builder-dropdown .string-builder-search{background-color:#fff;position:sticky;top:0;padding:10px 20px}.string-builder-dropdown .string-builder-search+.string-builder-list{border-top:1px solid #c3c3e5}.string-builder-dropdown .string-builder-list{max-height:255px}.string-builder-dropdown .string-builder-list li{cursor:pointer;padding:9px 20px;transition:all .2s;font-family:OpenSans-SemiBold}.string-builder-dropdown .string-builder-list li:hover,.string-builder-dropdown .string-builder-list li.active{background-color:#c3c3e5}.string-builder-dropdown .string-builder-list li+li{border-top:1px solid #c3c3e5}.string-builder-dropdown .string-builder-list li i{margin-right:5px}.string-builder-dropdown .string-builder-list li .item-name{overflow:hidden;text-overflow:ellipsis;line-height:16px}.invalid_token{box-shadow:0 0 0 1px #ea4766 inset;border-radius:5px;background:#ffbbc5;color:#ea4766;padding:4px;pointer-events:all}.invalid_token .invalid_token--icon{margin-left:2px;color:#ea4766}.string_builder_trigger{background-color:#fff;border-radius:5px;padding:1px 6px;margin:0 4px}.string-builder-footer>.tyk-form-control__error-message{padding:0!important}.string-builder-footer>.tyk-form-control__help-block{padding:0!important}.string-builder-search{padding-right:10px}.default-option-name{color:green}.data_source_argument{color:pink}.data_source_object{color:#8a2be2}*{box-sizing:border-box}body{background-color:#e1e1e1;color:#505071;font-size:14px;line-height:19px;font-family:OpenSans-regular}.tyk-main-wrapper{display:flex;flex-wrap:nowrap}.tyk-main-content-wrapper{flex:1}.well{background:rgba(0,0,0,0);border:2px solid #c3c3e5;border-radius:18px;box-shadow:none}.well.has-error{border-color:#ff6c7d}.title-medium{font-family:OpenSans-SemiBold;color:#36364c;font-size:16px}.right-align{text-align:right!important}.left-align{text-align:left!important}.center-align{text-align:center!important}.left{float:left!important}.right{float:right!important}.hide{display:none!important}.no-margin{margin:0!important}.no-margin-bottom{margin-bottom:0!important}.no-margin-top{margin-top:0!important}.no-margin-right,.no-margin-left{margin-right:0!important}.disabled-section{color:#c3c3e5}.top-buffer-large{margin-top:20px!important}.top-buffer-small{margin-top:5px!important}.top-buffer-medium{margin-top:10px!important}.bottom-buffer-large{margin-bottom:20px!important}.bottom-buffer-small{margin-bottom:5px!important}.bottom-buffer-medium{margin-bottom:10px!important}.right-buffer-large{margin-right:20px!important}.right-buffer-small{margin-right:5px!important}.right-buffer-medium{margin-right:10px!important}.left-buffer-large{margin-left:20px!important}.left-buffer-small{margin-left:5px!important}.left-buffer-medium{margin-left:10px!important}.word-wrap{word-wrap:break-word;word-break:break-all}.clear-left{clear:left}.flex-container{display:flex}.vertical-center-align{align-items:center}.right-align-controls{align-items:center;display:flex;margin-left:auto}.inline-label{margin-right:15px}.nowrap{white-space:nowrap} +html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video{margin:0;padding:0;border:0;font-size:100%;font:inherit;vertical-align:baseline}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}body{line-height:1}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:before,blockquote:after{content:"";content:none}q:before,q:after{content:"";content:none}table{border-collapse:collapse;border-spacing:0}.container{max-width:1240px;margin:0 auto}.container,.container-fluid{padding:0 20px}.tyk-row{display:flex;box-sizing:border-box;list-style:none;flex:0 1 auto;flex-direction:row;flex-wrap:wrap;margin-left:-20px;width:calc(100% + 20px)}.tyk-row.no-gutters{margin:0}.tyk-row.tyk-row--gutterless{margin:0;width:100%}.tyk-row.tyk-row--reverse{flex-direction:row-reverse}.tyk-col{max-width:calc(100% - 20px);box-sizing:border-box;flex:0 0 auto;flex-grow:1;flex-basis:calc(100% - 20px);margin-left:20px;width:calc(100% - 20px)}.tyk-col:last-child{margin-right:0}.tyk-row--gutterless .tyk-col{margin:0}.tyk-col.tyk-col--reverse{flex-direction:column-reverse}.tyk-col.tyk-col--align-bottom{align-self:flex-end}.tyk-col.tyk-col--align-top{align-self:flex-start}.tyk-col.tyk-col--align-center{align-self:center}.tyk-col.tyk-col--align-baseline{align-self:baseline}.tyk-col.tyk-col--align-stretch{align-self:stretch}@media screen and (min-width: 1248px){.tyk-col--lg-0{flex-basis:calc(0% - 20px);max-width:calc(0% - 20px)}.tyk-col--offset-lg-0{margin-left:0%}.tyk-col--lg-1{flex-basis:calc(8.3333333333% - 20px);max-width:calc(8.3333333333% - 20px)}.tyk-col--offset-lg-1{margin-left:8.3333333333%}.tyk-col--lg-2{flex-basis:calc(16.6666666667% - 20px);max-width:calc(16.6666666667% - 20px)}.tyk-col--offset-lg-2{margin-left:16.6666666667%}.tyk-col--lg-3{flex-basis:calc(25% - 20px);max-width:calc(25% - 20px)}.tyk-col--offset-lg-3{margin-left:25%}.tyk-col--lg-4{flex-basis:calc(33.3333333333% - 20px);max-width:calc(33.3333333333% - 20px)}.tyk-col--offset-lg-4{margin-left:33.3333333333%}.tyk-col--lg-5{flex-basis:calc(41.6666666667% - 20px);max-width:calc(41.6666666667% - 20px)}.tyk-col--offset-lg-5{margin-left:41.6666666667%}.tyk-col--lg-6{flex-basis:calc(50% - 20px);max-width:calc(50% - 20px)}.tyk-col--offset-lg-6{margin-left:50%}.tyk-col--lg-7{flex-basis:calc(58.3333333333% - 20px);max-width:calc(58.3333333333% - 20px)}.tyk-col--offset-lg-7{margin-left:58.3333333333%}.tyk-col--lg-8{flex-basis:calc(66.6666666667% - 20px);max-width:calc(66.6666666667% - 20px)}.tyk-col--offset-lg-8{margin-left:66.6666666667%}.tyk-col--lg-9{flex-basis:calc(75% - 20px);max-width:calc(75% - 20px)}.tyk-col--offset-lg-9{margin-left:75%}.tyk-col--lg-10{flex-basis:calc(83.3333333333% - 20px);max-width:calc(83.3333333333% - 20px)}.tyk-col--offset-lg-10{margin-left:83.3333333333%}.tyk-col--lg-11{flex-basis:calc(91.6666666667% - 20px);max-width:calc(91.6666666667% - 20px)}.tyk-col--offset-lg-11{margin-left:91.6666666667%}.tyk-col--lg-12{flex-basis:calc(100% - 20px);max-width:calc(100% - 20px)}.tyk-col--offset-lg-12{margin-left:100%}}@media screen and (min-width: 1024px)and (max-width: 1247px){.tyk-col--md-0{flex-basis:calc(0% - 20px);max-width:calc(0% - 20px)}.tyk-col--offset-md-0{margin-left:0%}.tyk-col--md-1{flex-basis:calc(8.3333333333% - 20px);max-width:calc(8.3333333333% - 20px)}.tyk-col--offset-md-1{margin-left:8.3333333333%}.tyk-col--md-2{flex-basis:calc(16.6666666667% - 20px);max-width:calc(16.6666666667% - 20px)}.tyk-col--offset-md-2{margin-left:16.6666666667%}.tyk-col--md-3{flex-basis:calc(25% - 20px);max-width:calc(25% - 20px)}.tyk-col--offset-md-3{margin-left:25%}.tyk-col--md-4{flex-basis:calc(33.3333333333% - 20px);max-width:calc(33.3333333333% - 20px)}.tyk-col--offset-md-4{margin-left:33.3333333333%}.tyk-col--md-5{flex-basis:calc(41.6666666667% - 20px);max-width:calc(41.6666666667% - 20px)}.tyk-col--offset-md-5{margin-left:41.6666666667%}.tyk-col--md-6{flex-basis:calc(50% - 20px);max-width:calc(50% - 20px)}.tyk-col--offset-md-6{margin-left:50%}.tyk-col--md-7{flex-basis:calc(58.3333333333% - 20px);max-width:calc(58.3333333333% - 20px)}.tyk-col--offset-md-7{margin-left:58.3333333333%}.tyk-col--md-8{flex-basis:calc(66.6666666667% - 20px);max-width:calc(66.6666666667% - 20px)}.tyk-col--offset-md-8{margin-left:66.6666666667%}.tyk-col--md-9{flex-basis:calc(75% - 20px);max-width:calc(75% - 20px)}.tyk-col--offset-md-9{margin-left:75%}.tyk-col--md-10{flex-basis:calc(83.3333333333% - 20px);max-width:calc(83.3333333333% - 20px)}.tyk-col--offset-md-10{margin-left:83.3333333333%}.tyk-col--md-11{flex-basis:calc(91.6666666667% - 20px);max-width:calc(91.6666666667% - 20px)}.tyk-col--offset-md-11{margin-left:91.6666666667%}.tyk-col--md-12{flex-basis:calc(100% - 20px);max-width:calc(100% - 20px)}.tyk-col--offset-md-12{margin-left:100%}}@media screen and (min-width: 769px)and (max-width:1023px){.tyk-col--sm-0{flex-basis:calc(0% - 20px);max-width:calc(0% - 20px)}.tyk-col--offset-sm-0{margin-left:0%}.tyk-col--sm-1{flex-basis:calc(8.3333333333% - 20px);max-width:calc(8.3333333333% - 20px)}.tyk-col--offset-sm-1{margin-left:8.3333333333%}.tyk-col--sm-2{flex-basis:calc(16.6666666667% - 20px);max-width:calc(16.6666666667% - 20px)}.tyk-col--offset-sm-2{margin-left:16.6666666667%}.tyk-col--sm-3{flex-basis:calc(25% - 20px);max-width:calc(25% - 20px)}.tyk-col--offset-sm-3{margin-left:25%}.tyk-col--sm-4{flex-basis:calc(33.3333333333% - 20px);max-width:calc(33.3333333333% - 20px)}.tyk-col--offset-sm-4{margin-left:33.3333333333%}.tyk-col--sm-5{flex-basis:calc(41.6666666667% - 20px);max-width:calc(41.6666666667% - 20px)}.tyk-col--offset-sm-5{margin-left:41.6666666667%}.tyk-col--sm-6{flex-basis:calc(50% - 20px);max-width:calc(50% - 20px)}.tyk-col--offset-sm-6{margin-left:50%}.tyk-col--sm-7{flex-basis:calc(58.3333333333% - 20px);max-width:calc(58.3333333333% - 20px)}.tyk-col--offset-sm-7{margin-left:58.3333333333%}.tyk-col--sm-8{flex-basis:calc(66.6666666667% - 20px);max-width:calc(66.6666666667% - 20px)}.tyk-col--offset-sm-8{margin-left:66.6666666667%}.tyk-col--sm-9{flex-basis:calc(75% - 20px);max-width:calc(75% - 20px)}.tyk-col--offset-sm-9{margin-left:75%}.tyk-col--sm-10{flex-basis:calc(83.3333333333% - 20px);max-width:calc(83.3333333333% - 20px)}.tyk-col--offset-sm-10{margin-left:83.3333333333%}.tyk-col--sm-11{flex-basis:calc(91.6666666667% - 20px);max-width:calc(91.6666666667% - 20px)}.tyk-col--offset-sm-11{margin-left:91.6666666667%}.tyk-col--sm-12{flex-basis:calc(100% - 20px);max-width:calc(100% - 20px)}.tyk-col--offset-sm-12{margin-left:100%}}@media screen and (max-width: 768px){.tyk-col--xs-0{flex-basis:calc(0% - 20px);max-width:calc(0% - 20px)}.tyk-col--offset-xs-0{margin-left:0%}.tyk-col--xs-1{flex-basis:calc(8.3333333333% - 20px);max-width:calc(8.3333333333% - 20px)}.tyk-col--offset-xs-1{margin-left:8.3333333333%}.tyk-col--xs-2{flex-basis:calc(16.6666666667% - 20px);max-width:calc(16.6666666667% - 20px)}.tyk-col--offset-xs-2{margin-left:16.6666666667%}.tyk-col--xs-3{flex-basis:calc(25% - 20px);max-width:calc(25% - 20px)}.tyk-col--offset-xs-3{margin-left:25%}.tyk-col--xs-4{flex-basis:calc(33.3333333333% - 20px);max-width:calc(33.3333333333% - 20px)}.tyk-col--offset-xs-4{margin-left:33.3333333333%}.tyk-col--xs-5{flex-basis:calc(41.6666666667% - 20px);max-width:calc(41.6666666667% - 20px)}.tyk-col--offset-xs-5{margin-left:41.6666666667%}.tyk-col--xs-6{flex-basis:calc(50% - 20px);max-width:calc(50% - 20px)}.tyk-col--offset-xs-6{margin-left:50%}.tyk-col--xs-7{flex-basis:calc(58.3333333333% - 20px);max-width:calc(58.3333333333% - 20px)}.tyk-col--offset-xs-7{margin-left:58.3333333333%}.tyk-col--xs-8{flex-basis:calc(66.6666666667% - 20px);max-width:calc(66.6666666667% - 20px)}.tyk-col--offset-xs-8{margin-left:66.6666666667%}.tyk-col--xs-9{flex-basis:calc(75% - 20px);max-width:calc(75% - 20px)}.tyk-col--offset-xs-9{margin-left:75%}.tyk-col--xs-10{flex-basis:calc(83.3333333333% - 20px);max-width:calc(83.3333333333% - 20px)}.tyk-col--offset-xs-10{margin-left:83.3333333333%}.tyk-col--xs-11{flex-basis:calc(91.6666666667% - 20px);max-width:calc(91.6666666667% - 20px)}.tyk-col--offset-xs-11{margin-left:91.6666666667%}.tyk-col--xs-12{flex-basis:calc(100% - 20px);max-width:calc(100% - 20px)}.tyk-col--offset-xs-12{margin-left:100%}}@font-face{font-family:"OpenSans-Bold";src:url(fonts/OpenSans-Bold.woff2) format("woff2"),url(fonts/OpenSans-Bold.woff) format("woff");font-weight:normal;font-style:normal}@font-face{font-family:"OpenSans-SemiBold";src:url(fonts/OpenSans-SemiBold.woff2) format("woff2"),url(fonts/OpenSans-SemiBold.woff) format("woff");font-weight:normal;font-style:normal}@font-face{font-family:"OpenSans-Regular";src:url(fonts/OpenSans-Regular.woff2) format("woff2"),url(fonts/OpenSans-Regular.woff) format("woff");font-weight:normal;font-style:normal}@font-face{font-family:"smoolthan_bold";src:url(fonts/smoolthan_bold-webfont.woff2) format("woff2"),url(fonts/smoolthan_bold-webfont.woff) format("woff");font-weight:normal;font-style:normal}@font-face{font-family:"smoolthan_medium";src:url(fonts/smoolthan_medium-webfont.woff2) format("woff2"),url(fonts/smoolthan_medium-webfont.woff) format("woff");font-weight:normal;font-style:normal}@font-face{font-family:"smoolthan_regular";src:url(fonts/smoolthan_regular-webfont.woff2) format("woff2"),url(fonts/smoolthan_regular-webfont.woff) format("woff");font-weight:normal;font-style:normal}@font-face{font-family:"tykon";src:url(fonts/tykon.woff2) format("woff2"),url(fonts/tykon.woff) format("woff");font-weight:normal;font-style:normal}/*! + * Font Awesome Free 5.5.0 by @fontawesome - https://fontawesome.com + * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) + */.fa,.fas,.far,.fal,.fab{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-0.0667em}.fa-xs{font-size:.75em}.fa-sm{font-size:.875em}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:2.5em;padding-left:0}.fa-ul>li{position:relative}.fa-li{left:-2em;position:absolute;text-align:center;width:2em;line-height:inherit}.fa-border{border:solid .08em #eee;border-radius:.1em;padding:.2em .25em .15em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left,.fas.fa-pull-left,.far.fa-pull-left,.fal.fa-pull-left,.fab.fa-pull-left{margin-right:.3em}.fa.fa-pull-right,.fas.fa-pull-right,.far.fa-pull-right,.fal.fa-pull-right,.fab.fa-pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scale(-1, 1);transform:scale(-1, 1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scale(1, -1);transform:scale(1, -1)}.fa-flip-horizontal.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scale(-1, -1);transform:scale(-1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{-webkit-filter:none;filter:none}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-500px:before{content:""}.fa-accessible-icon:before{content:""}.fa-accusoft:before{content:""}.fa-acquisitions-incorporated:before{content:""}.fa-ad:before{content:""}.fa-address-book:before{content:""}.fa-address-card:before{content:""}.fa-adjust:before{content:""}.fa-adn:before{content:""}.fa-adversal:before{content:""}.fa-affiliatetheme:before{content:""}.fa-air-freshener:before{content:""}.fa-algolia:before{content:""}.fa-align-center:before{content:""}.fa-align-justify:before{content:""}.fa-align-left:before{content:""}.fa-align-right:before{content:""}.fa-alipay:before{content:""}.fa-allergies:before{content:""}.fa-amazon:before{content:""}.fa-amazon-pay:before{content:""}.fa-ambulance:before{content:""}.fa-american-sign-language-interpreting:before{content:""}.fa-amilia:before{content:""}.fa-anchor:before{content:""}.fa-android:before{content:""}.fa-angellist:before{content:""}.fa-angle-double-down:before{content:""}.fa-angle-double-left:before{content:""}.fa-angle-double-right:before{content:""}.fa-angle-double-up:before{content:""}.fa-angle-down:before{content:""}.fa-angle-left:before{content:""}.fa-angle-right:before{content:""}.fa-angle-up:before{content:""}.fa-angry:before{content:""}.fa-angrycreative:before{content:""}.fa-angular:before{content:""}.fa-ankh:before{content:""}.fa-app-store:before{content:""}.fa-app-store-ios:before{content:""}.fa-apper:before{content:""}.fa-apple:before{content:""}.fa-apple-alt:before{content:""}.fa-apple-pay:before{content:""}.fa-archive:before{content:""}.fa-archway:before{content:""}.fa-arrow-alt-circle-down:before{content:""}.fa-arrow-alt-circle-left:before{content:""}.fa-arrow-alt-circle-right:before{content:""}.fa-arrow-alt-circle-up:before{content:""}.fa-arrow-circle-down:before{content:""}.fa-arrow-circle-left:before{content:""}.fa-arrow-circle-right:before{content:""}.fa-arrow-circle-up:before{content:""}.fa-arrow-down:before{content:""}.fa-arrow-left:before{content:""}.fa-arrow-right:before{content:""}.fa-arrow-up:before{content:""}.fa-arrows-alt:before{content:""}.fa-arrows-alt-h:before{content:""}.fa-arrows-alt-v:before{content:""}.fa-assistive-listening-systems:before{content:""}.fa-asterisk:before{content:""}.fa-asymmetrik:before{content:""}.fa-at:before{content:""}.fa-atlas:before{content:""}.fa-atom:before{content:""}.fa-audible:before{content:""}.fa-audio-description:before{content:""}.fa-autoprefixer:before{content:""}.fa-avianex:before{content:""}.fa-aviato:before{content:""}.fa-award:before{content:""}.fa-aws:before{content:""}.fa-backspace:before{content:""}.fa-backward:before{content:""}.fa-balance-scale:before{content:""}.fa-ban:before{content:""}.fa-band-aid:before{content:""}.fa-bandcamp:before{content:""}.fa-barcode:before{content:""}.fa-bars:before{content:""}.fa-baseball-ball:before{content:""}.fa-basketball-ball:before{content:""}.fa-bath:before{content:""}.fa-battery-empty:before{content:""}.fa-battery-full:before{content:""}.fa-battery-half:before{content:""}.fa-battery-quarter:before{content:""}.fa-battery-three-quarters:before{content:""}.fa-bed:before{content:""}.fa-beer:before{content:""}.fa-behance:before{content:""}.fa-behance-square:before{content:""}.fa-bell:before{content:""}.fa-bell-slash:before{content:""}.fa-bezier-curve:before{content:""}.fa-bible:before{content:""}.fa-bicycle:before{content:""}.fa-bimobject:before{content:""}.fa-binoculars:before{content:""}.fa-birthday-cake:before{content:""}.fa-bitbucket:before{content:""}.fa-bitcoin:before{content:""}.fa-bity:before{content:""}.fa-black-tie:before{content:""}.fa-blackberry:before{content:""}.fa-blender:before{content:""}.fa-blender-phone:before{content:""}.fa-blind:before{content:""}.fa-blogger:before{content:""}.fa-blogger-b:before{content:""}.fa-bluetooth:before{content:""}.fa-bluetooth-b:before{content:""}.fa-bold:before{content:""}.fa-bolt:before{content:""}.fa-bomb:before{content:""}.fa-bone:before{content:""}.fa-bong:before{content:""}.fa-book:before{content:""}.fa-book-dead:before{content:""}.fa-book-open:before{content:""}.fa-book-reader:before{content:""}.fa-bookmark:before{content:""}.fa-bowling-ball:before{content:""}.fa-box:before{content:""}.fa-box-open:before{content:""}.fa-boxes:before{content:""}.fa-braille:before{content:""}.fa-brain:before{content:""}.fa-briefcase:before{content:""}.fa-briefcase-medical:before{content:""}.fa-broadcast-tower:before{content:""}.fa-broom:before{content:""}.fa-brush:before{content:""}.fa-btc:before{content:""}.fa-bug:before{content:""}.fa-building:before{content:""}.fa-bullhorn:before{content:""}.fa-bullseye:before{content:""}.fa-burn:before{content:""}.fa-buromobelexperte:before{content:""}.fa-bus:before{content:""}.fa-bus-alt:before{content:""}.fa-business-time:before{content:""}.fa-buysellads:before{content:""}.fa-calculator:before{content:""}.fa-calendar:before{content:""}.fa-calendar-alt:before{content:""}.fa-calendar-check:before{content:""}.fa-calendar-minus:before{content:""}.fa-calendar-plus:before{content:""}.fa-calendar-times:before{content:""}.fa-camera:before{content:""}.fa-camera-retro:before{content:""}.fa-campground:before{content:""}.fa-cannabis:before{content:""}.fa-capsules:before{content:""}.fa-car:before{content:""}.fa-car-alt:before{content:""}.fa-car-battery:before{content:""}.fa-car-crash:before{content:""}.fa-car-side:before{content:""}.fa-caret-down:before{content:""}.fa-caret-left:before{content:""}.fa-caret-right:before{content:""}.fa-caret-square-down:before{content:""}.fa-caret-square-left:before{content:""}.fa-caret-square-right:before{content:""}.fa-caret-square-up:before{content:""}.fa-caret-up:before{content:""}.fa-cart-arrow-down:before{content:""}.fa-cart-plus:before{content:""}.fa-cat:before{content:""}.fa-cc-amazon-pay:before{content:""}.fa-cc-amex:before{content:""}.fa-cc-apple-pay:before{content:""}.fa-cc-diners-club:before{content:""}.fa-cc-discover:before{content:""}.fa-cc-jcb:before{content:""}.fa-cc-mastercard:before{content:""}.fa-cc-paypal:before{content:""}.fa-cc-stripe:before{content:""}.fa-cc-visa:before{content:""}.fa-centercode:before{content:""}.fa-certificate:before{content:""}.fa-chair:before{content:""}.fa-chalkboard:before{content:""}.fa-chalkboard-teacher:before{content:""}.fa-charging-station:before{content:""}.fa-chart-area:before{content:""}.fa-chart-bar:before{content:""}.fa-chart-line:before{content:""}.fa-chart-pie:before{content:""}.fa-check:before{content:""}.fa-check-circle:before{content:""}.fa-check-double:before{content:""}.fa-check-square:before{content:""}.fa-chess:before{content:""}.fa-chess-bishop:before{content:""}.fa-chess-board:before{content:""}.fa-chess-king:before{content:""}.fa-chess-knight:before{content:""}.fa-chess-pawn:before{content:""}.fa-chess-queen:before{content:""}.fa-chess-rook:before{content:""}.fa-chevron-circle-down:before{content:""}.fa-chevron-circle-left:before{content:""}.fa-chevron-circle-right:before{content:""}.fa-chevron-circle-up:before{content:""}.fa-chevron-down:before{content:""}.fa-chevron-left:before{content:""}.fa-chevron-right:before{content:""}.fa-chevron-up:before{content:""}.fa-child:before{content:""}.fa-chrome:before{content:""}.fa-church:before{content:""}.fa-circle:before{content:""}.fa-circle-notch:before{content:""}.fa-city:before{content:""}.fa-clipboard:before{content:""}.fa-clipboard-check:before{content:""}.fa-clipboard-list:before{content:""}.fa-clock:before{content:""}.fa-clone:before{content:""}.fa-closed-captioning:before{content:""}.fa-cloud:before{content:""}.fa-cloud-download-alt:before{content:""}.fa-cloud-meatball:before{content:""}.fa-cloud-moon:before{content:""}.fa-cloud-moon-rain:before{content:""}.fa-cloud-rain:before{content:""}.fa-cloud-showers-heavy:before{content:""}.fa-cloud-sun:before{content:""}.fa-cloud-sun-rain:before{content:""}.fa-cloud-upload-alt:before{content:""}.fa-cloudscale:before{content:""}.fa-cloudsmith:before{content:""}.fa-cloudversify:before{content:""}.fa-cocktail:before{content:""}.fa-code:before{content:""}.fa-code-branch:before{content:""}.fa-codepen:before{content:""}.fa-codiepie:before{content:""}.fa-coffee:before{content:""}.fa-cog:before{content:""}.fa-cogs:before{content:""}.fa-coins:before{content:""}.fa-columns:before{content:""}.fa-comment:before{content:""}.fa-comment-alt:before{content:""}.fa-comment-dollar:before{content:""}.fa-comment-dots:before{content:""}.fa-comment-slash:before{content:""}.fa-comments:before{content:""}.fa-comments-dollar:before{content:""}.fa-compact-disc:before{content:""}.fa-compass:before{content:""}.fa-compress:before{content:""}.fa-compress-arrows-alt:before{content:""}.fa-concierge-bell:before{content:""}.fa-connectdevelop:before{content:""}.fa-contao:before{content:""}.fa-cookie:before{content:""}.fa-cookie-bite:before{content:""}.fa-copy:before{content:""}.fa-copyright:before{content:""}.fa-couch:before{content:""}.fa-cpanel:before{content:""}.fa-creative-commons:before{content:""}.fa-creative-commons-by:before{content:""}.fa-creative-commons-nc:before{content:""}.fa-creative-commons-nc-eu:before{content:""}.fa-creative-commons-nc-jp:before{content:""}.fa-creative-commons-nd:before{content:""}.fa-creative-commons-pd:before{content:""}.fa-creative-commons-pd-alt:before{content:""}.fa-creative-commons-remix:before{content:""}.fa-creative-commons-sa:before{content:""}.fa-creative-commons-sampling:before{content:""}.fa-creative-commons-sampling-plus:before{content:""}.fa-creative-commons-share:before{content:""}.fa-creative-commons-zero:before{content:""}.fa-credit-card:before{content:""}.fa-critical-role:before{content:""}.fa-crop:before{content:""}.fa-crop-alt:before{content:""}.fa-cross:before{content:""}.fa-crosshairs:before{content:""}.fa-crow:before{content:""}.fa-crown:before{content:""}.fa-css3:before{content:""}.fa-css3-alt:before{content:""}.fa-cube:before{content:""}.fa-cubes:before{content:""}.fa-cut:before{content:""}.fa-cuttlefish:before{content:""}.fa-d-and-d:before{content:""}.fa-d-and-d-beyond:before{content:""}.fa-dashcube:before{content:""}.fa-database:before{content:""}.fa-deaf:before{content:""}.fa-delicious:before{content:""}.fa-democrat:before{content:""}.fa-deploydog:before{content:""}.fa-deskpro:before{content:""}.fa-desktop:before{content:""}.fa-dev:before{content:""}.fa-deviantart:before{content:""}.fa-dharmachakra:before{content:""}.fa-diagnoses:before{content:""}.fa-dice:before{content:""}.fa-dice-d20:before{content:""}.fa-dice-d6:before{content:""}.fa-dice-five:before{content:""}.fa-dice-four:before{content:""}.fa-dice-one:before{content:""}.fa-dice-six:before{content:""}.fa-dice-three:before{content:""}.fa-dice-two:before{content:""}.fa-digg:before{content:""}.fa-digital-ocean:before{content:""}.fa-digital-tachograph:before{content:""}.fa-directions:before{content:""}.fa-discord:before{content:""}.fa-discourse:before{content:""}.fa-divide:before{content:""}.fa-dizzy:before{content:""}.fa-dna:before{content:""}.fa-dochub:before{content:""}.fa-docker:before{content:""}.fa-dog:before{content:""}.fa-dollar-sign:before{content:""}.fa-dolly:before{content:""}.fa-dolly-flatbed:before{content:""}.fa-donate:before{content:""}.fa-door-closed:before{content:""}.fa-door-open:before{content:""}.fa-dot-circle:before{content:""}.fa-dove:before{content:""}.fa-download:before{content:""}.fa-draft2digital:before{content:""}.fa-drafting-compass:before{content:""}.fa-dragon:before{content:""}.fa-draw-polygon:before{content:""}.fa-dribbble:before{content:""}.fa-dribbble-square:before{content:""}.fa-dropbox:before{content:""}.fa-drum:before{content:""}.fa-drum-steelpan:before{content:""}.fa-drumstick-bite:before{content:""}.fa-drupal:before{content:""}.fa-dumbbell:before{content:""}.fa-dungeon:before{content:""}.fa-dyalog:before{content:""}.fa-earlybirds:before{content:""}.fa-ebay:before{content:""}.fa-edge:before{content:""}.fa-edit:before{content:""}.fa-eject:before{content:""}.fa-elementor:before{content:""}.fa-ellipsis-h:before{content:""}.fa-ellipsis-v:before{content:""}.fa-ello:before{content:""}.fa-ember:before{content:""}.fa-empire:before{content:""}.fa-envelope:before{content:""}.fa-envelope-open:before{content:""}.fa-envelope-open-text:before{content:""}.fa-envelope-square:before{content:""}.fa-envira:before{content:""}.fa-equals:before{content:""}.fa-eraser:before{content:""}.fa-erlang:before{content:""}.fa-ethereum:before{content:""}.fa-etsy:before{content:""}.fa-euro-sign:before{content:""}.fa-exchange-alt:before{content:""}.fa-exclamation:before{content:""}.fa-exclamation-circle:before{content:""}.fa-exclamation-triangle:before{content:""}.fa-expand:before{content:""}.fa-expand-arrows-alt:before{content:""}.fa-expeditedssl:before{content:""}.fa-external-link-alt:before{content:""}.fa-external-link-square-alt:before{content:""}.fa-eye:before{content:""}.fa-eye-dropper:before{content:""}.fa-eye-slash:before{content:""}.fa-facebook:before{content:""}.fa-facebook-f:before{content:""}.fa-facebook-messenger:before{content:""}.fa-facebook-square:before{content:""}.fa-fantasy-flight-games:before{content:""}.fa-fast-backward:before{content:""}.fa-fast-forward:before{content:""}.fa-fax:before{content:""}.fa-feather:before{content:""}.fa-feather-alt:before{content:""}.fa-female:before{content:""}.fa-fighter-jet:before{content:""}.fa-file:before{content:""}.fa-file-alt:before{content:""}.fa-file-archive:before{content:""}.fa-file-audio:before{content:""}.fa-file-code:before{content:""}.fa-file-contract:before{content:""}.fa-file-csv:before{content:""}.fa-file-download:before{content:""}.fa-file-excel:before{content:""}.fa-file-export:before{content:""}.fa-file-image:before{content:""}.fa-file-import:before{content:""}.fa-file-invoice:before{content:""}.fa-file-invoice-dollar:before{content:""}.fa-file-medical:before{content:""}.fa-file-medical-alt:before{content:""}.fa-file-pdf:before{content:""}.fa-file-powerpoint:before{content:""}.fa-file-prescription:before{content:""}.fa-file-signature:before{content:""}.fa-file-upload:before{content:""}.fa-file-video:before{content:""}.fa-file-word:before{content:""}.fa-fill:before{content:""}.fa-fill-drip:before{content:""}.fa-film:before{content:""}.fa-filter:before{content:""}.fa-fingerprint:before{content:""}.fa-fire:before{content:""}.fa-fire-extinguisher:before{content:""}.fa-firefox:before{content:""}.fa-first-aid:before{content:""}.fa-first-order:before{content:""}.fa-first-order-alt:before{content:""}.fa-firstdraft:before{content:""}.fa-fish:before{content:""}.fa-fist-raised:before{content:""}.fa-flag:before{content:""}.fa-flag-checkered:before{content:""}.fa-flag-usa:before{content:""}.fa-flask:before{content:""}.fa-flickr:before{content:""}.fa-flipboard:before{content:""}.fa-flushed:before{content:""}.fa-fly:before{content:""}.fa-folder:before{content:""}.fa-folder-minus:before{content:""}.fa-folder-open:before{content:""}.fa-folder-plus:before{content:""}.fa-font:before{content:""}.fa-font-awesome:before{content:""}.fa-font-awesome-alt:before{content:""}.fa-font-awesome-flag:before{content:""}.fa-font-awesome-logo-full:before{content:""}.fa-fonticons:before{content:""}.fa-fonticons-fi:before{content:""}.fa-football-ball:before{content:""}.fa-fort-awesome:before{content:""}.fa-fort-awesome-alt:before{content:""}.fa-forumbee:before{content:""}.fa-forward:before{content:""}.fa-foursquare:before{content:""}.fa-free-code-camp:before{content:""}.fa-freebsd:before{content:""}.fa-frog:before{content:""}.fa-frown:before{content:""}.fa-frown-open:before{content:""}.fa-fulcrum:before{content:""}.fa-funnel-dollar:before{content:""}.fa-futbol:before{content:""}.fa-galactic-republic:before{content:""}.fa-galactic-senate:before{content:""}.fa-gamepad:before{content:""}.fa-gas-pump:before{content:""}.fa-gavel:before{content:""}.fa-gem:before{content:""}.fa-genderless:before{content:""}.fa-get-pocket:before{content:""}.fa-gg:before{content:""}.fa-gg-circle:before{content:""}.fa-ghost:before{content:""}.fa-gift:before{content:""}.fa-git:before{content:""}.fa-git-square:before{content:""}.fa-github:before{content:""}.fa-github-alt:before{content:""}.fa-github-square:before{content:""}.fa-gitkraken:before{content:""}.fa-gitlab:before{content:""}.fa-gitter:before{content:""}.fa-glass-martini:before{content:""}.fa-glass-martini-alt:before{content:""}.fa-glasses:before{content:""}.fa-glide:before{content:""}.fa-glide-g:before{content:""}.fa-globe:before{content:""}.fa-globe-africa:before{content:""}.fa-globe-americas:before{content:""}.fa-globe-asia:before{content:""}.fa-gofore:before{content:""}.fa-golf-ball:before{content:""}.fa-goodreads:before{content:""}.fa-goodreads-g:before{content:""}.fa-google:before{content:""}.fa-google-drive:before{content:""}.fa-google-play:before{content:""}.fa-google-plus:before{content:""}.fa-google-plus-g:before{content:""}.fa-google-plus-square:before{content:""}.fa-google-wallet:before{content:""}.fa-gopuram:before{content:""}.fa-graduation-cap:before{content:""}.fa-gratipay:before{content:""}.fa-grav:before{content:""}.fa-greater-than:before{content:""}.fa-greater-than-equal:before{content:""}.fa-grimace:before{content:""}.fa-grin:before{content:""}.fa-grin-alt:before{content:""}.fa-grin-beam:before{content:""}.fa-grin-beam-sweat:before{content:""}.fa-grin-hearts:before{content:""}.fa-grin-squint:before{content:""}.fa-grin-squint-tears:before{content:""}.fa-grin-stars:before{content:""}.fa-grin-tears:before{content:""}.fa-grin-tongue:before{content:""}.fa-grin-tongue-squint:before{content:""}.fa-grin-tongue-wink:before{content:""}.fa-grin-wink:before{content:""}.fa-grip-horizontal:before{content:""}.fa-grip-vertical:before{content:""}.fa-gripfire:before{content:""}.fa-grunt:before{content:""}.fa-gulp:before{content:""}.fa-h-square:before{content:""}.fa-hacker-news:before{content:""}.fa-hacker-news-square:before{content:""}.fa-hackerrank:before{content:""}.fa-hammer:before{content:""}.fa-hamsa:before{content:""}.fa-hand-holding:before{content:""}.fa-hand-holding-heart:before{content:""}.fa-hand-holding-usd:before{content:""}.fa-hand-lizard:before{content:""}.fa-hand-paper:before{content:""}.fa-hand-peace:before{content:""}.fa-hand-point-down:before{content:""}.fa-hand-point-left:before{content:""}.fa-hand-point-right:before{content:""}.fa-hand-point-up:before{content:""}.fa-hand-pointer:before{content:""}.fa-hand-rock:before{content:""}.fa-hand-scissors:before{content:""}.fa-hand-spock:before{content:""}.fa-hands:before{content:""}.fa-hands-helping:before{content:""}.fa-handshake:before{content:""}.fa-hanukiah:before{content:""}.fa-hashtag:before{content:""}.fa-hat-wizard:before{content:""}.fa-haykal:before{content:""}.fa-hdd:before{content:""}.fa-heading:before{content:""}.fa-headphones:before{content:""}.fa-headphones-alt:before{content:""}.fa-headset:before{content:""}.fa-heart:before{content:""}.fa-heartbeat:before{content:""}.fa-helicopter:before{content:""}.fa-highlighter:before{content:""}.fa-hiking:before{content:""}.fa-hippo:before{content:""}.fa-hips:before{content:""}.fa-hire-a-helper:before{content:""}.fa-history:before{content:""}.fa-hockey-puck:before{content:""}.fa-home:before{content:""}.fa-hooli:before{content:""}.fa-hornbill:before{content:""}.fa-horse:before{content:""}.fa-hospital:before{content:""}.fa-hospital-alt:before{content:""}.fa-hospital-symbol:before{content:""}.fa-hot-tub:before{content:""}.fa-hotel:before{content:""}.fa-hotjar:before{content:""}.fa-hourglass:before{content:""}.fa-hourglass-end:before{content:""}.fa-hourglass-half:before{content:""}.fa-hourglass-start:before{content:""}.fa-house-damage:before{content:""}.fa-houzz:before{content:""}.fa-hryvnia:before{content:""}.fa-html5:before{content:""}.fa-hubspot:before{content:""}.fa-i-cursor:before{content:""}.fa-id-badge:before{content:""}.fa-id-card:before{content:""}.fa-id-card-alt:before{content:""}.fa-image:before{content:""}.fa-images:before{content:""}.fa-imdb:before{content:""}.fa-inbox:before{content:""}.fa-indent:before{content:""}.fa-industry:before{content:""}.fa-infinity:before{content:""}.fa-info:before{content:""}.fa-info-circle:before{content:""}.fa-instagram:before{content:""}.fa-internet-explorer:before{content:""}.fa-ioxhost:before{content:""}.fa-italic:before{content:""}.fa-itunes:before{content:""}.fa-itunes-note:before{content:""}.fa-java:before{content:""}.fa-jedi:before{content:""}.fa-jedi-order:before{content:""}.fa-jenkins:before{content:""}.fa-joget:before{content:""}.fa-joint:before{content:""}.fa-joomla:before{content:""}.fa-journal-whills:before{content:""}.fa-js:before{content:""}.fa-js-square:before{content:""}.fa-jsfiddle:before{content:""}.fa-kaaba:before{content:""}.fa-kaggle:before{content:""}.fa-key:before{content:""}.fa-keybase:before{content:""}.fa-keyboard:before{content:""}.fa-keycdn:before{content:""}.fa-khanda:before{content:""}.fa-kickstarter:before{content:""}.fa-kickstarter-k:before{content:""}.fa-kiss:before{content:""}.fa-kiss-beam:before{content:""}.fa-kiss-wink-heart:before{content:""}.fa-kiwi-bird:before{content:""}.fa-korvue:before{content:""}.fa-landmark:before{content:""}.fa-language:before{content:""}.fa-laptop:before{content:""}.fa-laptop-code:before{content:""}.fa-laravel:before{content:""}.fa-lastfm:before{content:""}.fa-lastfm-square:before{content:""}.fa-laugh:before{content:""}.fa-laugh-beam:before{content:""}.fa-laugh-squint:before{content:""}.fa-laugh-wink:before{content:""}.fa-layer-group:before{content:""}.fa-leaf:before{content:""}.fa-leanpub:before{content:""}.fa-lemon:before{content:""}.fa-less:before{content:""}.fa-less-than:before{content:""}.fa-less-than-equal:before{content:""}.fa-level-down-alt:before{content:""}.fa-level-up-alt:before{content:""}.fa-life-ring:before{content:""}.fa-lightbulb:before{content:""}.fa-line:before{content:""}.fa-link:before{content:""}.fa-linkedin:before{content:""}.fa-linkedin-in:before{content:""}.fa-linode:before{content:""}.fa-linux:before{content:""}.fa-lira-sign:before{content:""}.fa-list:before{content:""}.fa-list-alt:before{content:""}.fa-list-ol:before{content:""}.fa-list-ul:before{content:""}.fa-location-arrow:before{content:""}.fa-lock:before{content:""}.fa-lock-open:before{content:""}.fa-long-arrow-alt-down:before{content:""}.fa-long-arrow-alt-left:before{content:""}.fa-long-arrow-alt-right:before{content:""}.fa-long-arrow-alt-up:before{content:""}.fa-low-vision:before{content:""}.fa-luggage-cart:before{content:""}.fa-lyft:before{content:""}.fa-magento:before{content:""}.fa-magic:before{content:""}.fa-magnet:before{content:""}.fa-mail-bulk:before{content:""}.fa-mailchimp:before{content:""}.fa-male:before{content:""}.fa-mandalorian:before{content:""}.fa-map:before{content:""}.fa-map-marked:before{content:""}.fa-map-marked-alt:before{content:""}.fa-map-marker:before{content:""}.fa-map-marker-alt:before{content:""}.fa-map-pin:before{content:""}.fa-map-signs:before{content:""}.fa-markdown:before{content:""}.fa-marker:before{content:""}.fa-mars:before{content:""}.fa-mars-double:before{content:""}.fa-mars-stroke:before{content:""}.fa-mars-stroke-h:before{content:""}.fa-mars-stroke-v:before{content:""}.fa-mask:before{content:""}.fa-mastodon:before{content:""}.fa-maxcdn:before{content:""}.fa-medal:before{content:""}.fa-medapps:before{content:""}.fa-medium:before{content:""}.fa-medium-m:before{content:""}.fa-medkit:before{content:""}.fa-medrt:before{content:""}.fa-meetup:before{content:""}.fa-megaport:before{content:""}.fa-meh:before{content:""}.fa-meh-blank:before{content:""}.fa-meh-rolling-eyes:before{content:""}.fa-memory:before{content:""}.fa-menorah:before{content:""}.fa-mercury:before{content:""}.fa-meteor:before{content:""}.fa-microchip:before{content:""}.fa-microphone:before{content:""}.fa-microphone-alt:before{content:""}.fa-microphone-alt-slash:before{content:""}.fa-microphone-slash:before{content:""}.fa-microscope:before{content:""}.fa-microsoft:before{content:""}.fa-minus:before{content:""}.fa-minus-circle:before{content:""}.fa-minus-square:before{content:""}.fa-mix:before{content:""}.fa-mixcloud:before{content:""}.fa-mizuni:before{content:""}.fa-mobile:before{content:""}.fa-mobile-alt:before{content:""}.fa-modx:before{content:""}.fa-monero:before{content:""}.fa-money-bill:before{content:""}.fa-money-bill-alt:before{content:""}.fa-money-bill-wave:before{content:""}.fa-money-bill-wave-alt:before{content:""}.fa-money-check:before{content:""}.fa-money-check-alt:before{content:""}.fa-monument:before{content:""}.fa-moon:before{content:""}.fa-mortar-pestle:before{content:""}.fa-mosque:before{content:""}.fa-motorcycle:before{content:""}.fa-mountain:before{content:""}.fa-mouse-pointer:before{content:""}.fa-music:before{content:""}.fa-napster:before{content:""}.fa-neos:before{content:""}.fa-network-wired:before{content:""}.fa-neuter:before{content:""}.fa-newspaper:before{content:""}.fa-nimblr:before{content:""}.fa-nintendo-switch:before{content:""}.fa-node:before{content:""}.fa-node-js:before{content:""}.fa-not-equal:before{content:""}.fa-notes-medical:before{content:""}.fa-npm:before{content:""}.fa-ns8:before{content:""}.fa-nutritionix:before{content:""}.fa-object-group:before{content:""}.fa-object-ungroup:before{content:""}.fa-odnoklassniki:before{content:""}.fa-odnoklassniki-square:before{content:""}.fa-oil-can:before{content:""}.fa-old-republic:before{content:""}.fa-om:before{content:""}.fa-opencart:before{content:""}.fa-openid:before{content:""}.fa-opera:before{content:""}.fa-optin-monster:before{content:""}.fa-osi:before{content:""}.fa-otter:before{content:""}.fa-outdent:before{content:""}.fa-page4:before{content:""}.fa-pagelines:before{content:""}.fa-paint-brush:before{content:""}.fa-paint-roller:before{content:""}.fa-palette:before{content:""}.fa-palfed:before{content:""}.fa-pallet:before{content:""}.fa-paper-plane:before{content:""}.fa-paperclip:before{content:""}.fa-parachute-box:before{content:""}.fa-paragraph:before{content:""}.fa-parking:before{content:""}.fa-passport:before{content:""}.fa-pastafarianism:before{content:""}.fa-paste:before{content:""}.fa-patreon:before{content:""}.fa-pause:before{content:""}.fa-pause-circle:before{content:""}.fa-paw:before{content:""}.fa-paypal:before{content:""}.fa-peace:before{content:""}.fa-pen:before{content:""}.fa-pen-alt:before{content:""}.fa-pen-fancy:before{content:""}.fa-pen-nib:before{content:""}.fa-pen-square:before{content:""}.fa-pencil-alt:before{content:""}.fa-pencil-ruler:before{content:""}.fa-penny-arcade:before{content:""}.fa-people-carry:before{content:""}.fa-percent:before{content:""}.fa-percentage:before{content:""}.fa-periscope:before{content:""}.fa-person-booth:before{content:""}.fa-phabricator:before{content:""}.fa-phoenix-framework:before{content:""}.fa-phoenix-squadron:before{content:""}.fa-phone:before{content:""}.fa-phone-slash:before{content:""}.fa-phone-square:before{content:""}.fa-phone-volume:before{content:""}.fa-php:before{content:""}.fa-pied-piper:before{content:""}.fa-pied-piper-alt:before{content:""}.fa-pied-piper-hat:before{content:""}.fa-pied-piper-pp:before{content:""}.fa-piggy-bank:before{content:""}.fa-pills:before{content:""}.fa-pinterest:before{content:""}.fa-pinterest-p:before{content:""}.fa-pinterest-square:before{content:""}.fa-place-of-worship:before{content:""}.fa-plane:before{content:""}.fa-plane-arrival:before{content:""}.fa-plane-departure:before{content:""}.fa-play:before{content:""}.fa-play-circle:before{content:""}.fa-playstation:before{content:""}.fa-plug:before{content:""}.fa-plus:before{content:""}.fa-plus-circle:before{content:""}.fa-plus-square:before{content:""}.fa-podcast:before{content:""}.fa-poll:before{content:""}.fa-poll-h:before{content:""}.fa-poo:before{content:""}.fa-poo-storm:before{content:""}.fa-poop:before{content:""}.fa-portrait:before{content:""}.fa-pound-sign:before{content:""}.fa-power-off:before{content:""}.fa-pray:before{content:""}.fa-praying-hands:before{content:""}.fa-prescription:before{content:""}.fa-prescription-bottle:before{content:""}.fa-prescription-bottle-alt:before{content:""}.fa-print:before{content:""}.fa-procedures:before{content:""}.fa-product-hunt:before{content:""}.fa-project-diagram:before{content:""}.fa-pushed:before{content:""}.fa-puzzle-piece:before{content:""}.fa-python:before{content:""}.fa-qq:before{content:""}.fa-qrcode:before{content:""}.fa-question:before{content:""}.fa-question-circle:before{content:""}.fa-quidditch:before{content:""}.fa-quinscape:before{content:""}.fa-quora:before{content:""}.fa-quote-left:before{content:""}.fa-quote-right:before{content:""}.fa-quran:before{content:""}.fa-r-project:before{content:""}.fa-rainbow:before{content:""}.fa-random:before{content:""}.fa-ravelry:before{content:""}.fa-react:before{content:""}.fa-reacteurope:before{content:""}.fa-readme:before{content:""}.fa-rebel:before{content:""}.fa-receipt:before{content:""}.fa-recycle:before{content:""}.fa-red-river:before{content:""}.fa-reddit:before{content:""}.fa-reddit-alien:before{content:""}.fa-reddit-square:before{content:""}.fa-redo:before{content:""}.fa-redo-alt:before{content:""}.fa-registered:before{content:""}.fa-renren:before{content:""}.fa-reply:before{content:""}.fa-reply-all:before{content:""}.fa-replyd:before{content:""}.fa-republican:before{content:""}.fa-researchgate:before{content:""}.fa-resolving:before{content:""}.fa-retweet:before{content:""}.fa-rev:before{content:""}.fa-ribbon:before{content:""}.fa-ring:before{content:""}.fa-road:before{content:""}.fa-robot:before{content:""}.fa-rocket:before{content:""}.fa-rocketchat:before{content:""}.fa-rockrms:before{content:""}.fa-route:before{content:""}.fa-rss:before{content:""}.fa-rss-square:before{content:""}.fa-ruble-sign:before{content:""}.fa-ruler:before{content:""}.fa-ruler-combined:before{content:""}.fa-ruler-horizontal:before{content:""}.fa-ruler-vertical:before{content:""}.fa-running:before{content:""}.fa-rupee-sign:before{content:""}.fa-sad-cry:before{content:""}.fa-sad-tear:before{content:""}.fa-safari:before{content:""}.fa-sass:before{content:""}.fa-save:before{content:""}.fa-schlix:before{content:""}.fa-school:before{content:""}.fa-screwdriver:before{content:""}.fa-scribd:before{content:""}.fa-scroll:before{content:""}.fa-search:before{content:""}.fa-search-dollar:before{content:""}.fa-search-location:before{content:""}.fa-search-minus:before{content:""}.fa-search-plus:before{content:""}.fa-searchengin:before{content:""}.fa-seedling:before{content:""}.fa-sellcast:before{content:""}.fa-sellsy:before{content:""}.fa-server:before{content:""}.fa-servicestack:before{content:""}.fa-shapes:before{content:""}.fa-share:before{content:""}.fa-share-alt:before{content:""}.fa-share-alt-square:before{content:""}.fa-share-square:before{content:""}.fa-shekel-sign:before{content:""}.fa-shield-alt:before{content:""}.fa-ship:before{content:""}.fa-shipping-fast:before{content:""}.fa-shirtsinbulk:before{content:""}.fa-shoe-prints:before{content:""}.fa-shopping-bag:before{content:""}.fa-shopping-basket:before{content:""}.fa-shopping-cart:before{content:""}.fa-shopware:before{content:""}.fa-shower:before{content:""}.fa-shuttle-van:before{content:""}.fa-sign:before{content:""}.fa-sign-in-alt:before{content:""}.fa-sign-language:before{content:""}.fa-sign-out-alt:before{content:""}.fa-signal:before{content:""}.fa-signature:before{content:""}.fa-simplybuilt:before{content:""}.fa-sistrix:before{content:""}.fa-sitemap:before{content:""}.fa-sith:before{content:""}.fa-skull:before{content:""}.fa-skull-crossbones:before{content:""}.fa-skyatlas:before{content:""}.fa-skype:before{content:""}.fa-slack:before{content:""}.fa-slack-hash:before{content:""}.fa-slash:before{content:""}.fa-sliders-h:before{content:""}.fa-slideshare:before{content:""}.fa-smile:before{content:""}.fa-smile-beam:before{content:""}.fa-smile-wink:before{content:""}.fa-smog:before{content:""}.fa-smoking:before{content:""}.fa-smoking-ban:before{content:""}.fa-snapchat:before{content:""}.fa-snapchat-ghost:before{content:""}.fa-snapchat-square:before{content:""}.fa-snowflake:before{content:""}.fa-socks:before{content:""}.fa-solar-panel:before{content:""}.fa-sort:before{content:""}.fa-sort-alpha-down:before{content:""}.fa-sort-alpha-up:before{content:""}.fa-sort-amount-down:before{content:""}.fa-sort-amount-up:before{content:""}.fa-sort-down:before{content:""}.fa-sort-numeric-down:before{content:""}.fa-sort-numeric-up:before{content:""}.fa-sort-up:before{content:""}.fa-soundcloud:before{content:""}.fa-spa:before{content:""}.fa-space-shuttle:before{content:""}.fa-speakap:before{content:""}.fa-spider:before{content:""}.fa-spinner:before{content:""}.fa-splotch:before{content:""}.fa-spotify:before{content:""}.fa-spray-can:before{content:""}.fa-square:before{content:""}.fa-square-full:before{content:""}.fa-square-root-alt:before{content:""}.fa-squarespace:before{content:""}.fa-stack-exchange:before{content:""}.fa-stack-overflow:before{content:""}.fa-stamp:before{content:""}.fa-star:before{content:""}.fa-star-and-crescent:before{content:""}.fa-star-half:before{content:""}.fa-star-half-alt:before{content:""}.fa-star-of-david:before{content:""}.fa-star-of-life:before{content:""}.fa-staylinked:before{content:""}.fa-steam:before{content:""}.fa-steam-square:before{content:""}.fa-steam-symbol:before{content:""}.fa-step-backward:before{content:""}.fa-step-forward:before{content:""}.fa-stethoscope:before{content:""}.fa-sticker-mule:before{content:""}.fa-sticky-note:before{content:""}.fa-stop:before{content:""}.fa-stop-circle:before{content:""}.fa-stopwatch:before{content:""}.fa-store:before{content:""}.fa-store-alt:before{content:""}.fa-strava:before{content:""}.fa-stream:before{content:""}.fa-street-view:before{content:""}.fa-strikethrough:before{content:""}.fa-stripe:before{content:""}.fa-stripe-s:before{content:""}.fa-stroopwafel:before{content:""}.fa-studiovinari:before{content:""}.fa-stumbleupon:before{content:""}.fa-stumbleupon-circle:before{content:""}.fa-subscript:before{content:""}.fa-subway:before{content:""}.fa-suitcase:before{content:""}.fa-suitcase-rolling:before{content:""}.fa-sun:before{content:""}.fa-superpowers:before{content:""}.fa-superscript:before{content:""}.fa-supple:before{content:""}.fa-surprise:before{content:""}.fa-swatchbook:before{content:""}.fa-swimmer:before{content:""}.fa-swimming-pool:before{content:""}.fa-synagogue:before{content:""}.fa-sync:before{content:""}.fa-sync-alt:before{content:""}.fa-syringe:before{content:""}.fa-table:before{content:""}.fa-table-tennis:before{content:""}.fa-tablet:before{content:""}.fa-tablet-alt:before{content:""}.fa-tablets:before{content:""}.fa-tachometer-alt:before{content:""}.fa-tag:before{content:""}.fa-tags:before{content:""}.fa-tape:before{content:""}.fa-tasks:before{content:""}.fa-taxi:before{content:""}.fa-teamspeak:before{content:""}.fa-teeth:before{content:""}.fa-teeth-open:before{content:""}.fa-telegram:before{content:""}.fa-telegram-plane:before{content:""}.fa-temperature-high:before{content:""}.fa-temperature-low:before{content:""}.fa-tencent-weibo:before{content:""}.fa-terminal:before{content:""}.fa-text-height:before{content:""}.fa-text-width:before{content:""}.fa-th:before{content:""}.fa-th-large:before{content:""}.fa-th-list:before{content:""}.fa-the-red-yeti:before{content:""}.fa-theater-masks:before{content:""}.fa-themeco:before{content:""}.fa-themeisle:before{content:""}.fa-thermometer:before{content:""}.fa-thermometer-empty:before{content:""}.fa-thermometer-full:before{content:""}.fa-thermometer-half:before{content:""}.fa-thermometer-quarter:before{content:""}.fa-thermometer-three-quarters:before{content:""}.fa-think-peaks:before{content:""}.fa-thumbs-down:before{content:""}.fa-thumbs-up:before{content:""}.fa-thumbtack:before{content:""}.fa-ticket-alt:before{content:""}.fa-times:before{content:""}.fa-times-circle:before{content:""}.fa-tint:before{content:""}.fa-tint-slash:before{content:""}.fa-tired:before{content:""}.fa-toggle-off:before{content:""}.fa-toggle-on:before{content:""}.fa-toilet-paper:before{content:""}.fa-toolbox:before{content:""}.fa-tooth:before{content:""}.fa-torah:before{content:""}.fa-torii-gate:before{content:""}.fa-tractor:before{content:""}.fa-trade-federation:before{content:""}.fa-trademark:before{content:""}.fa-traffic-light:before{content:""}.fa-train:before{content:""}.fa-transgender:before{content:""}.fa-transgender-alt:before{content:""}.fa-trash:before{content:""}.fa-trash-alt:before{content:""}.fa-tree:before{content:""}.fa-trello:before{content:""}.fa-tripadvisor:before{content:""}.fa-trophy:before{content:""}.fa-truck:before{content:""}.fa-truck-loading:before{content:""}.fa-truck-monster:before{content:""}.fa-truck-moving:before{content:""}.fa-truck-pickup:before{content:""}.fa-tshirt:before{content:""}.fa-tty:before{content:""}.fa-tumblr:before{content:""}.fa-tumblr-square:before{content:""}.fa-tv:before{content:""}.fa-twitch:before{content:""}.fa-twitter:before{content:""}.fa-twitter-square:before{content:""}.fa-typo3:before{content:""}.fa-uber:before{content:""}.fa-uikit:before{content:""}.fa-umbrella:before{content:""}.fa-umbrella-beach:before{content:""}.fa-underline:before{content:""}.fa-undo:before{content:""}.fa-undo-alt:before{content:""}.fa-uniregistry:before{content:""}.fa-universal-access:before{content:""}.fa-university:before{content:""}.fa-unlink:before{content:""}.fa-unlock:before{content:""}.fa-unlock-alt:before{content:""}.fa-untappd:before{content:""}.fa-upload:before{content:""}.fa-usb:before{content:""}.fa-user:before{content:""}.fa-user-alt:before{content:""}.fa-user-alt-slash:before{content:""}.fa-user-astronaut:before{content:""}.fa-user-check:before{content:""}.fa-user-circle:before{content:""}.fa-user-clock:before{content:""}.fa-user-cog:before{content:""}.fa-user-edit:before{content:""}.fa-user-friends:before{content:""}.fa-user-graduate:before{content:""}.fa-user-injured:before{content:""}.fa-user-lock:before{content:""}.fa-user-md:before{content:""}.fa-user-minus:before{content:""}.fa-user-ninja:before{content:""}.fa-user-plus:before{content:""}.fa-user-secret:before{content:""}.fa-user-shield:before{content:""}.fa-user-slash:before{content:""}.fa-user-tag:before{content:""}.fa-user-tie:before{content:""}.fa-user-times:before{content:""}.fa-users:before{content:""}.fa-users-cog:before{content:""}.fa-ussunnah:before{content:""}.fa-utensil-spoon:before{content:""}.fa-utensils:before{content:""}.fa-vaadin:before{content:""}.fa-vector-square:before{content:""}.fa-venus:before{content:""}.fa-venus-double:before{content:""}.fa-venus-mars:before{content:""}.fa-viacoin:before{content:""}.fa-viadeo:before{content:""}.fa-viadeo-square:before{content:""}.fa-vial:before{content:""}.fa-vials:before{content:""}.fa-viber:before{content:""}.fa-video:before{content:""}.fa-video-slash:before{content:""}.fa-vihara:before{content:""}.fa-vimeo:before{content:""}.fa-vimeo-square:before{content:""}.fa-vimeo-v:before{content:""}.fa-vine:before{content:""}.fa-vk:before{content:""}.fa-vnv:before{content:""}.fa-volleyball-ball:before{content:""}.fa-volume-down:before{content:""}.fa-volume-mute:before{content:""}.fa-volume-off:before{content:""}.fa-volume-up:before{content:""}.fa-vote-yea:before{content:""}.fa-vr-cardboard:before{content:""}.fa-vuejs:before{content:""}.fa-walking:before{content:""}.fa-wallet:before{content:""}.fa-warehouse:before{content:""}.fa-water:before{content:""}.fa-weebly:before{content:""}.fa-weibo:before{content:""}.fa-weight:before{content:""}.fa-weight-hanging:before{content:""}.fa-weixin:before{content:""}.fa-whatsapp:before{content:""}.fa-whatsapp-square:before{content:""}.fa-wheelchair:before{content:""}.fa-whmcs:before{content:""}.fa-wifi:before{content:""}.fa-wikipedia-w:before{content:""}.fa-wind:before{content:""}.fa-window-close:before{content:""}.fa-window-maximize:before{content:""}.fa-window-minimize:before{content:""}.fa-window-restore:before{content:""}.fa-windows:before{content:""}.fa-wine-bottle:before{content:""}.fa-wine-glass:before{content:""}.fa-wine-glass-alt:before{content:""}.fa-wix:before{content:""}.fa-wizards-of-the-coast:before{content:""}.fa-wolf-pack-battalion:before{content:""}.fa-won-sign:before{content:""}.fa-wordpress:before{content:""}.fa-wordpress-simple:before{content:""}.fa-wpbeginner:before{content:""}.fa-wpexplorer:before{content:""}.fa-wpforms:before{content:""}.fa-wpressr:before{content:""}.fa-wrench:before{content:""}.fa-x-ray:before{content:""}.fa-xbox:before{content:""}.fa-xing:before{content:""}.fa-xing-square:before{content:""}.fa-y-combinator:before{content:""}.fa-yahoo:before{content:""}.fa-yandex:before{content:""}.fa-yandex-international:before{content:""}.fa-yelp:before{content:""}.fa-yen-sign:before{content:""}.fa-yin-yang:before{content:""}.fa-yoast:before{content:""}.fa-youtube:before{content:""}.fa-youtube-square:before{content:""}.fa-zhihu:before{content:""}.sr-only{border:0;clip:rect(0, 0, 0, 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.sr-only-focusable:active,.sr-only-focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}@font-face{font-family:"Font Awesome 5 Brands";font-style:normal;font-weight:normal;src:url(fonts/fa-brands-400.eot);src:url(fonts/fa-brands-400.eot?#iefix) format("embedded-opentype"),url(fonts/fa-brands-400.woff2) format("woff2"),url(fonts/fa-brands-400.woff) format("woff"),url(fonts/fa-brands-400.ttf) format("truetype"),url(fonts/fa-brands-400.svg#fontawesome) format("svg")}.fab{font-family:"Font Awesome 5 Brands"}@font-face{font-family:"Font Awesome 5 Free";font-style:normal;font-weight:400;src:url(fonts/fa-regular-400.eot);src:url(fonts/fa-regular-400.eot?#iefix) format("embedded-opentype"),url(fonts/fa-regular-400.woff2) format("woff2"),url(fonts/fa-regular-400.woff) format("woff"),url(fonts/fa-regular-400.ttf) format("truetype"),url(fonts/fa-regular-400.svg#fontawesome) format("svg")}.far{font-family:"Font Awesome 5 Free";font-weight:400}@font-face{font-family:"Font Awesome 5 Free";font-style:normal;font-weight:900;src:url(fonts/fa-solid-900.eot);src:url(fonts/fa-solid-900.eot?#iefix) format("embedded-opentype"),url(fonts/fa-solid-900.woff2) format("woff2"),url(fonts/fa-solid-900.woff) format("woff"),url(fonts/fa-solid-900.ttf) format("truetype"),url(fonts/fa-solid-900.svg#fontawesome) format("svg")}.fa,.fas{font-family:"Font Awesome 5 Free";font-weight:900}.tykon:before{font-family:"tykon" !important;font-style:normal !important;font-weight:normal !important;font-variant:normal !important;text-transform:none !important;speak:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.tykon-arrowdown:before{content:"a"}.tykon-arrowleft:before{content:"b"}.tykon-arrowright:before{content:"c"}.tykon-arrowup:before{content:"d"}.tykon-doublearrowdown:before{content:"e"}.tykon-filter:before{content:"f"}.tykon-graph1:before{content:"g"}.tykon-graph2:before{content:"h"}.tykon-label:before{content:"i"}.tykon-reload:before{content:"j"}.tykon-select:before{content:"k"}.tykon-target:before{content:"l"}.tykon-undo:before{content:"m"}.tykon-deployment:before{content:"n"}.tykon-team:before{content:"o"}.tykon-overview:before{content:"p"}.tykon-loadout:before{content:"q"}.tykon-entitlement:before{content:"r"}.tykon-users:before{content:"s"}.tykon-doublearrowdown:before{content:"e"}.tykon-arrowsort:before{content:"W"}.tykon-check:before{content:"V"}.tykon-copy:before{content:"C"}.tykon-delete:before{content:"U"}.tykon-download:before{content:"L"}.tykon-draft:before{content:"D"}.tykon-edit:before{content:"E"}.tykon-filter:before{content:"f"}.tykon-graphq2:before{content:"h"}.tykon-help:before{content:"?"}.tykon-label:before{content:"i"}.tykon-link:before{content:"R"}.tykon-lock1:before{content:"Y"}.tykon-lock2:before{content:"Z"}.tykon-notifications:before{content:"N"}.tykon-plus:before{content:"+"}.tykon-profile:before{content:"P"}.tykon-reload:before{content:"j"}.tykon-search:before{content:"O"}.tykon-select:before{content:"k"}.tykon-settings:before{content:"S"}.tykon-target:before{content:"l"}.tykon-undo:before{content:"m"}.tykon-warning:before{content:"!"}.tykon-x:before{content:"X"}.tykon-waiting:before{content:"T"}.tykon-fullscreen:before{content:""}.tykon-fullscreen-exit:before{content:""}.tykon-time:before{content:"t"}h1,h2,h3,h4,h5,h6{margin-bottom:15px;font-family:"smoolthan_medium";font-weight:500;color:#36364c}label{display:inline-block;max-width:100%;margin-bottom:5px;color:#36364c}h1{font-size:25px;line-height:30px}h2{font-size:20px;line-height:24px}h3{font-size:17px;line-height:23px}h4{font-size:16px;line-height:22px}h5{font-size:14px;line-height:19px}h6{font-size:12px;line-height:16px}p,label{font-size:14px;line-height:19px;font-family:"OpenSans-regular"}strong{font-family:"OpenSans-Bold"}a:not(.tyk-button){cursor:pointer;color:#505071;font-family:"OpenSans-regular"}a:not(.tyk-button).link--bold{font-family:"OpenSans-Bold"}a:not(.tyk-button)+a{margin-left:5px}a:not(.tyk-button) i{font-size:9px}p a,label a{font-size:14px;text-decoration:underline}.font-family-regular{font-family:"OpenSans-regular"}.font-family-medium{font-family:"OpenSans-SemiBold"}.font-family-bold{font-family:"OpenSans-Bold"}.heading-font-family-regular{font-family:"smoolthan_regular"}.heading-font-family-medium{font-family:"smoolthan_medium"}.heading-font-family-bold{font-family:"smoolthan_bold"}.text--primary{color:#a2a2cc}.text--danger{color:#ff6c7d}.text--info{color:#82bbc6}.text-warning{color:#d6b218}.text--medium{font-family:"OpenSans-SemiBold"}.text--bold{font-family:"OpenSans-Bold"}.text--uppercase{text-transform:uppercase}.text--ellipsis{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.text--underline{text-decoration:underline}td.text-ellipsis{max-width:250px}.section-title{font-family:"smoolthan_bold";margin-bottom:5px}.section-title .tyk-icon{margin-left:5px}.sub-section-title{margin-bottom:5px;font-family:"OpenSans-SemiBold";font-size:16px;line-height:22px}.sub-section-title .tyk-icon{margin-left:5px}.section-group-title{margin-bottom:5px;font-family:"OpenSans-Bold";font-size:14px;line-height:19px;text-transform:uppercase}.section-group-title .tyk-icon{margin-left:5px}.text--default-light{color:#c3c3e5 !important}.text--default{color:#36364c !important}.text--primary{color:#a2a2cc !important}.text--danger{color:#ff6c7d !important}.text--success{color:#00d9ba !important}.text--warning{color:#d6b218 !important}.tyk-form-section__title{font-size:16px;margin:5px 0 15px 0}.tyk-form-section__title--light{color:#43435b}.tyk-form-group{margin-bottom:15px}.tyk-form-group.has-error>.tyk-form-control__wrapper>.tyk-form-control,.tyk-form-group.has-error>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control,.tyk-form-group.has-error .tyk-file-input__wrapper>.tyk-form-control{border:2px solid #ff6c7d;border-left:2px solid #ea4766;outline:none}.tyk-form-group.has-error>.tyk-form-control__wrapper>.tyk-form-control:focus,.tyk-form-group.has-error>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control:focus,.tyk-form-group.has-error .tyk-file-input__wrapper>.tyk-form-control:focus{border-left:2px solid #ea4766;border-color:#ea4766;outline:none}.tyk-form-group label{font-family:"OpenSans-SemiBold"}.tyk-form-group--inline{align-items:stretch;display:flex;flex-wrap:nowrap}.tyk-form-group--inline .tyk-form-control__wrapper{flex:1}.tyk-form-group--inline label{display:flex;white-space:nowrap;margin-right:20px;margin-top:14px}.tyk-form-group--inline input,.tyk-form-group--inline select{display:flex}.tyk-form-group--inline .tyk-form-control__help-block{display:flex;margin-left:auto}.tyk-form-group--default{color:#505071}.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-form-control,.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control,.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control{border:2px solid #c3c3e5;color:#505071}.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-form-control[disabled],.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control[disabled],.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control[disabled]{border:2px solid #c3c3e5;background-color:#ededf9;color:#505071;cursor:not-allowed}.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-form-control[disabled]+.tyk-input-group__addon,.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control[disabled]+.tyk-input-group__addon,.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control[disabled]+.tyk-input-group__addon{background-color:#ededf9}.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-form-control::placeholder,.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control::placeholder,.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control::placeholder{opacity:.8}.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-form-control:-ms-input-placeholder,.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control:-ms-input-placeholder,.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control:-ms-input-placeholder{opacity:.8}.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-form-control::-ms-input-placeholder,.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control::-ms-input-placeholder,.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control::-ms-input-placeholder{opacity:.8}.tyk-form-group--default.tyk-form-group--addon-left .tyk-input-group__addon{border-bottom:2px solid #c3c3e5;border-left:2px solid #c3c3e5;border-top:2px solid #c3c3e5;color:#505071}.tyk-form-group--default.tyk-form-group--addon-right .tyk-input-group__addon{border-bottom:2px solid #c3c3e5;border-right:2px solid #c3c3e5;border-top:2px solid #c3c3e5;color:#505071}.tyk-form-group--primary{color:#505071}.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-form-control,.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control,.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control{border:2px solid #a2a2cc;color:#505071}.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-form-control[disabled],.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control[disabled],.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control[disabled]{border:2px solid #a2a2cc;background-color:#ededf9;color:#505071;cursor:not-allowed}.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-form-control[disabled]+.tyk-input-group__addon,.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control[disabled]+.tyk-input-group__addon,.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control[disabled]+.tyk-input-group__addon{background-color:#ededf9}.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-form-control::placeholder,.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control::placeholder,.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control::placeholder{opacity:.8}.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-form-control:-ms-input-placeholder,.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control:-ms-input-placeholder,.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control:-ms-input-placeholder{opacity:.8}.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-form-control::-ms-input-placeholder,.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control::-ms-input-placeholder,.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control::-ms-input-placeholder{opacity:.8}.tyk-form-group--primary.tyk-form-group--addon-left .tyk-input-group__addon{border-bottom:2px solid #a2a2cc;border-left:2px solid #a2a2cc;border-top:2px solid #a2a2cc;color:#a2a2cc}.tyk-form-group--primary.tyk-form-group--addon-right .tyk-input-group__addon{border-bottom:2px solid #a2a2cc;border-right:2px solid #a2a2cc;border-top:2px solid #a2a2cc;color:#a2a2cc}.tyk-form-group--success{color:#505071}.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-form-control,.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control,.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control{border:2px solid #00d9ba;color:#505071}.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-form-control[disabled],.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control[disabled],.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control[disabled]{border:2px solid #00d9ba;background-color:#ededf9;color:#505071;cursor:not-allowed}.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-form-control[disabled]+.tyk-input-group__addon,.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control[disabled]+.tyk-input-group__addon,.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control[disabled]+.tyk-input-group__addon{background-color:#ededf9}.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-form-control::placeholder,.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control::placeholder,.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control::placeholder{opacity:.8}.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-form-control:-ms-input-placeholder,.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control:-ms-input-placeholder,.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control:-ms-input-placeholder{opacity:.8}.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-form-control::-ms-input-placeholder,.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control::-ms-input-placeholder,.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control::-ms-input-placeholder{opacity:.8}.tyk-form-group--success.tyk-form-group--addon-left .tyk-input-group__addon{border-bottom:2px solid #00d9ba;border-left:2px solid #00d9ba;border-top:2px solid #00d9ba;color:#00d9ba}.tyk-form-group--success.tyk-form-group--addon-right .tyk-input-group__addon{border-bottom:2px solid #00d9ba;border-right:2px solid #00d9ba;border-top:2px solid #00d9ba;color:#00d9ba}.tyk-form-group--rounded-corners.has-error>.tyk-form-control__wrapper>.tyk-form-control{border-left:2px solid #ff6c7d}.tyk-form-group--rounded-corners.has-error>.tyk-form-control__wrapper>.tyk-form-control:focus{border-left:2px solid #ff6c7d;outline:none}.tyk-form-group--rounded-corners .tyk-form-control{border-radius:18px}.tyk-form-group--addon-right input{border-right:0 !important;padding-right:0}.tyk-form-group--addon-left input{border-left:0 !important;padding-left:0}.tyk-form-group--rounded-corners.tyk-form-group--addon-right input{border-top-right-radius:0;border-bottom-right-radius:0}.tyk-form-group--rounded-corners.tyk-form-group--addon-right .tyk-input-group__addon{background:#fff;border-top-right-radius:18px;border-bottom-right-radius:18px;color:#505071}.tyk-form-group--rounded-corners.tyk-form-group--addon-left input{border-top-left-radius:0;border-bottom-left-radius:0;border-left:0 !important}.tyk-form-group--rounded-corners.tyk-form-group--addon-left .tyk-input-group__addon{background:#fff;border-top-left-radius:18px;border-bottom-left-radius:18px;color:#505071}.tyk-form-control__error-message{font-family:"OpenSans-regular";font-size:12px;line-height:16px;margin-top:5px;padding:0 0 0 20px;position:relative}.tyk-form-control__error-message:before{content:"!";background:#ff6c7d;color:#fff;font-family:"OpenSans-Bold";border-radius:8px;display:inline-block;margin-right:5px;padding:0px 7px}.tyk-input-group{align-items:center;display:flex;outline:none}.tyk-input-group__addon{align-items:center;background-color:#fff;border:2px solid #c3c3e5;display:flex;height:39px;padding:10px 10px 10px 10px}.tyk-input-group__addon:first-child{border-right:0}.tyk-input-group__addon:last-child{border-left:0}.tyk-form-control{font-family:"OpenSans-SemiBold";font-size:14px;line-height:19px;border:2px solid #c3c3e5;background-color:#fff;color:#505071;display:block;height:39px;padding:10px 20px 10px 20px;transition:all .2s linear;width:100%}.tyk-form-control[disabled]{background-color:#ededf9;cursor:not-allowed}.tyk-form-control[disabled] .tyk-input-group__addon{background-color:#ededf9}.tyk-form-control::placeholder{font-family:"OpenSans-SemiBold";color:#a2a2cc}.tyk-form-control:focus,.tyk-form-control:active{outline:none;border:2px solid #00d9ba !important}.tyk-form-control:focus+.tyk-input-group__addon,.tyk-form-control:active+.tyk-input-group__addon{border:2px solid #00d9ba !important;border-left:none !important}.tyk-form-control__help-block{color:#36364c;font-style:normal;font-family:"OpenSans-regular";font-size:12px;line-height:16px;padding:0 0 0 20px;margin:5px 0 0 0}select{border-radius:0;-webkit-appearance:none}.inline-form-wrapper{align-items:center;display:flex;width:100%}.inline-form-wrapper .inline-form{width:100%}.inline-form-wrapper>button{margin-left:10px;margin-bottom:15px}.tyk-checkbox,.tyk-radio{margin:10px 0}.tyk-checkbox label,.tyk-radio label{font-family:"OpenSans-SemiBold"}.tyk-checkbox input,.tyk-radio input{margin:0 5px 0 0}.tyk-checkbox--inline,.tyk-radio--inline{display:inline-flex;margin-left:15px}.tyk-checkbox--inline:first-child,.tyk-radio--inline:first-child{margin-left:0}.tyk-inline-form{align-items:center;display:flex;flex-wrap:wrap}.tyk-inline-form .tyk-form-group{flex:1;margin-left:20px;min-width:200px}.tyk-inline-form .tyk-form-group:first-child{margin-left:0}.tyk-inline-form>.tyk-button{margin-left:20px;margin-bottom:15px}.tyk-accordion__item-header>button,.tyk-accordion__trigger{background:none;border:none;cursor:pointer;display:flex;font-size:14px;outline:none;padding:15px 15px;width:100%}.tyk-accordion__item-header>button .tyk-icon,.tyk-accordion__trigger .tyk-icon{margin-left:auto}.tyk-accordion__item{display:grid}.tyk-accordion__item--trigger-position-left{grid-template-columns:40px auto;grid-template-areas:"trigger header" "trigger content"}.tyk-accordion__item--trigger-position-right{grid-template-columns:auto 40px;grid-template-areas:"header trigger" "content trigger"}.tyk-accordion__item--trigger-in-header{grid-template-columns:auto;grid-template-areas:"header" "content"}.tyk-accordion__trigger-wrapper{grid-area:trigger;display:flex;align-items:flex-start;justify-content:center}.tyk-accordion__trigger-wrapper .tyk-icon{margin-left:auto;margin-right:auto}.tyk-accordion__item-header{grid-area:header}.tyk-accordion__trigger--disabled{color:#e1e1e1}.tyk-accordion__item-header.tyk-accordion__arrow-trigger{align-items:center;display:flex}.tyk-accordion__item-header.tyk-accordion__arrow-trigger>div{flex:1}.tyk-accordion__item-header.tyk-accordion__arrow-trigger>button{margin-left:auto;width:auto}.tyk-accordion__item-content{grid-area:content}:root{--tooltip-max-width: 450px}.tyk-tooltip{display:flex;align-items:center;background-color:#ededf9;border:2px solid #a2a2cc;border-radius:18px;max-width:var(--tooltip-max-width);padding:20px}.tyk-tooltip>.tyk-icon:first-child{width:32px;height:32px;border-radius:50%;color:#fff;background-color:#7a79a1}.tyk-tooltip>.tyk-icon:first-child:before{display:flex;width:100%;height:100%;align-items:center;justify-content:center}.tyk-tooltip>.tyk-icon+.tyk-tooltip__content{margin-left:20px}.tyk-tooltip__content{color:#505071;word-break:break-word;word-wrap:break-word}.tyk-tooltip__content+.tyk-icon{margin-left:20px}.tyk-tooltip>.tyk-icon:last-child{cursor:pointer}.tyk-button{background-color:rgba(0,0,0,0);border:none;color:#fff;cursor:pointer;display:inline-block;font-family:"OpenSans-Bold";text-align:center;text-transform:uppercase;text-decoration:none;transition:all .2s linear;user-select:none;vertical-align:middle;white-space:nowrap;padding:8px 23px;font-size:14px;line-height:22px;border-radius:20px}.tyk-button+.tyk-button,.tyk-button+.tyk-dropdown,.tyk-button+.tyk-toggle{margin-left:10px}.tyk-button span+i{margin-left:10px}.tyk-button i+span{margin-left:10px}.tyk-button.disabled{cursor:not-allowed;opacity:.7}.tyk-button:hover{color:#fff;text-decoration:none}.tyk-button:focus{outline:none}.tyk-button--white{background-color:#fff;color:#36364c;border:2px solid rgba(0,0,0,0)}.tyk-button--white:hover{background-color:#43435b;color:#fff}.tyk-button--primary{background-color:#7a79a1;color:#fff;border:2px solid #7a79a1}.tyk-button--primary:hover{background-color:#505071;color:#fff}.tyk-button--primary-link{background-color:rgba(0,0,0,0);border:2px solid rgba(0,0,0,0);color:#7a79a1}.tyk-button--primary-link:hover{background-color:rgba(0,0,0,0);color:#7a79a1;border-color:#7a79a1;text-decoration:underline}.tyk-button--primary-outline{border:2px solid #7a79a1;background-color:rgba(0,0,0,0);color:#7a79a1}.tyk-button--primary-outline:hover{background-color:#7a79a1;color:#fff}.tyk-button--primary-outline.disabled{color:#7a79a1}.tyk-button--primary-outline.disabled:hover{background-color:rgba(0,0,0,0);color:#7a79a1}.tyk-button--primary-gradient{border-image:linear-gradient(to right, #A2A2CC, #505071, #A2A2CC) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #A2A2CC, #505071, #A2A2CC);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-button--primary-gradient:hover,.tyk-button--primary-gradient:active,.tyk-button--primary-gradient:active:focus{border-image:linear-gradient(to right, #A2A2CC, #505071, #A2A2CC) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #A2A2CC, #505071, #A2A2CC);background-position:100% 0;background-size:200% auto;background-clip:border-box}.tyk-button--primary-gradient:hover.disabled,.tyk-button--primary-gradient:active.disabled,.tyk-button--primary-gradient:active:focus.disabled{border-image:linear-gradient(to right, #A2A2CC, #505071, #A2A2CC) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #A2A2CC, #505071, #A2A2CC);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-button--success{background-color:#00d9ba;color:#fff;border:2px solid #00d9ba}.tyk-button--success:hover{background-color:#00b798;color:#fff}.tyk-button--success-link{background-color:rgba(0,0,0,0);border:2px solid rgba(0,0,0,0);color:#00d9ba}.tyk-button--success-link:hover{background-color:rgba(0,0,0,0);color:#00d9ba;border-color:#00d9ba;text-decoration:underline}.tyk-button--success-outline{border:2px solid #00d9ba;background-color:rgba(0,0,0,0);color:#00d9ba}.tyk-button--success-outline:hover{background-color:#00d9ba;color:#fff}.tyk-button--success-outline.disabled{color:#00d9ba}.tyk-button--success-outline.disabled:hover{background-color:rgba(0,0,0,0);color:#00d9ba}.tyk-button--success-gradient{border-image:linear-gradient(to right, #00d9ba, #00B798, #00d9ba) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #00d9ba, #00B798, #00d9ba);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-button--success-gradient:hover,.tyk-button--success-gradient:active,.tyk-button--success-gradient:active:focus{border-image:linear-gradient(to right, #00d9ba, #00B798, #00d9ba) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #00d9ba, #00B798, #00d9ba);background-position:100% 0;background-size:200% auto;background-clip:border-box}.tyk-button--success-gradient:hover.disabled,.tyk-button--success-gradient:active.disabled,.tyk-button--success-gradient:active:focus.disabled{border-image:linear-gradient(to right, #00d9ba, #00B798, #00d9ba) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #00d9ba, #00B798, #00d9ba);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-button--danger{background-color:#ff6c7d;color:#fff;border:2px solid #ff6c7d}.tyk-button--danger:hover{background-color:#ea4766;color:#fff}.tyk-button--danger-link{background-color:rgba(0,0,0,0);border:2px solid rgba(0,0,0,0);color:#ff6c7d}.tyk-button--danger-link:hover{background-color:rgba(0,0,0,0);color:#ff6c7d;border-color:#ff6c7d;text-decoration:underline}.tyk-button--danger-outline{border:2px solid #ff6c7d;background-color:rgba(0,0,0,0);color:#ff6c7d}.tyk-button--danger-outline:hover{background-color:#ff6c7d;color:#fff}.tyk-button--danger-outline.disabled{color:#ff6c7d}.tyk-button--danger-outline.disabled:hover{background-color:rgba(0,0,0,0);color:#ff6c7d}.tyk-button--danger-gradient{border-image:linear-gradient(to right, #FF6C7D, #EA4766, #FF6C7D) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #FF6C7D, #EA4766, #FF6C7D);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-button--danger-gradient:hover,.tyk-button--danger-gradient:active,.tyk-button--danger-gradient:active:focus{border-image:linear-gradient(to right, #FF6C7D, #EA4766, #FF6C7D) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #FF6C7D, #EA4766, #FF6C7D);background-position:100% 0;background-size:200% auto;background-clip:border-box}.tyk-button--danger-gradient:hover.disabled,.tyk-button--danger-gradient:active.disabled,.tyk-button--danger-gradient:active:focus.disabled{border-image:linear-gradient(to right, #FF6C7D, #EA4766, #FF6C7D) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #FF6C7D, #EA4766, #FF6C7D);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-button--warning{background-color:#d6b218;color:#fff;border:2px solid rgba(0,0,0,0)}.tyk-button--warning:hover{background-color:#b49514;color:#fff}.tyk-button--warning-link{background-color:rgba(0,0,0,0);border:2px solid rgba(0,0,0,0);color:#d6b218}.tyk-button--warning-link:hover{background-color:rgba(0,0,0,0);color:#d6b218;border-color:#d6b218;text-decoration:underline}.tyk-button--warning-outline{border:2px solid #d6b218;background-color:rgba(0,0,0,0);color:#d6b218}.tyk-button--warning-outline:hover{background-color:#d6b218;color:#fff}.tyk-button--warning-outline.disabled{color:#d6b218}.tyk-button--warning-outline.disabled:hover{background-color:rgba(0,0,0,0);color:#d6b218}.tyk-button--warning-gradient{border-image:linear-gradient(to right, #D6B218, #FFE885, #D6B218) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #D6B218, #FFE885, #D6B218);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-button--warning-gradient:hover,.tyk-button--warning-gradient:active,.tyk-button--warning-gradient:active:focus{border-image:linear-gradient(to right, #D6B218, #FFE885, #D6B218) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #D6B218, #FFE885, #D6B218);background-position:100% 0;background-size:200% auto;background-clip:border-box}.tyk-button--warning-gradient:hover.disabled,.tyk-button--warning-gradient:active.disabled,.tyk-button--warning-gradient:active:focus.disabled{border-image:linear-gradient(to right, #D6B218, #FFE885, #D6B218) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #D6B218, #FFE885, #D6B218);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-button--info{background-color:#82bbc6;color:#fff;border:2px solid #82bbc6}.tyk-button--info:hover{background-color:#68adba;color:#fff}.tyk-button--info-link{background-color:rgba(0,0,0,0);border:2px solid rgba(0,0,0,0);color:#82bbc6}.tyk-button--info-link:hover{background-color:rgba(0,0,0,0);color:#82bbc6;border-color:#82bbc6;text-decoration:underline}.tyk-button--info-outline{border:2px solid #82bbc6;background-color:rgba(0,0,0,0);color:#82bbc6}.tyk-button--info-outline:hover{background-color:#82bbc6;color:#fff}.tyk-button--info-outline.disabled{color:#82bbc6}.tyk-button--info-outline.disabled:hover{background-color:rgba(0,0,0,0);color:#82bbc6}.tyk-button--info-gradient{border-image:linear-gradient(to right, #82BBC6, #D3EBEF, #82BBC6) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #82BBC6, #D3EBEF, #82BBC6);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#505071}.tyk-button--info-gradient:hover,.tyk-button--info-gradient:active,.tyk-button--info-gradient:active:focus{border-image:linear-gradient(to right, #82BBC6, #D3EBEF, #82BBC6) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #82BBC6, #D3EBEF, #82BBC6);background-position:100% 0;background-size:200% auto;background-clip:border-box}.tyk-button--info-gradient:hover.disabled,.tyk-button--info-gradient:active.disabled,.tyk-button--info-gradient:active:focus.disabled{border-image:linear-gradient(to right, #82BBC6, #D3EBEF, #82BBC6) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #82BBC6, #D3EBEF, #82BBC6);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#505071}.tyk-button--default{background-color:#36364c;color:#fff;border:2px solid #36364c}.tyk-button--default:hover{background-color:#505071;color:#fff}.tyk-button--default-link{background-color:rgba(0,0,0,0);border:2px solid rgba(0,0,0,0);color:#505071}.tyk-button--default-link:hover{background-color:rgba(0,0,0,0);color:#505071;border-color:#505071;text-decoration:underline}.tyk-button--default-outline{border:2px solid #36364c;background-color:rgba(0,0,0,0);color:#36364c}.tyk-button--default-outline:hover{background-color:#36364c;color:#fff}.tyk-button--default-outline.disabled{color:#36364c}.tyk-button--default-outline.disabled:hover{background-color:rgba(0,0,0,0);color:#36364c}.tyk-button--default-gradient{border-image:linear-gradient(to right, #36364C, #505071, #36364C) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #36364C, #505071, #36364C);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-button--default-gradient:hover,.tyk-button--default-gradient:active,.tyk-button--default-gradient:active:focus{border-image:linear-gradient(to right, #36364C, #505071, #36364C) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #36364C, #505071, #36364C);background-position:100% 0;background-size:200% auto;background-clip:border-box}.tyk-button--default-gradient:hover.disabled,.tyk-button--default-gradient:active.disabled,.tyk-button--default-gradient:active:focus.disabled{border-image:linear-gradient(to right, #36364C, #505071, #36364C) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #36364C, #505071, #36364C);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-button--sm{padding:3px 15px;font-size:12px;line-height:16px;border-radius:20px}.tyk-button--md{padding:8px 23px;font-size:14px;line-height:19px;border-radius:20px}.tyk-button--lg{padding:13px 23px;font-size:16px;line-height:22px;border-radius:20px}.tyk-button--icon-only{border-radius:18px;padding:0;line-height:20px;width:24px}.tyk-button--icon-only:hover{border-radius:18px}.tyk-button--fit{height:auto;width:auto;line-height:normal}.tyk-button--no-style{background:rgba(0,0,0,0);border:none;color:#505071}.tyk-button--no-style:hover{background:rgba(0,0,0,0);border:none;color:#505071}.tyk-button-group__wrapper{display:inline-block;position:relative;vertical-align:middle}.tyk-button-group__wrapper label{font-family:"OpenSans-SemiBold"}.tyk-button-group__wrapper .tyk-button-group{display:flex}.tyk-button-group__wrapper .tyk-button-group>.tyk-button-group:not(:first-child)>.tyk-button{border-top-left-radius:0;border-bottom-left-radius:0}.tyk-button-group__wrapper .tyk-button-group>.tyk-button-group:not(:last-child)>.tyk-button{border-top-right-radius:0;border-bottom-right-radius:0}.tyk-button-group__wrapper .tyk-button-group .tyk-button{border-radius:0}.tyk-button-group__wrapper .tyk-button-group .tyk-button+.tyk-button{margin-left:0}.tyk-button-group__wrapper .tyk-button-group .tyk-button+.tyk-dropdown{margin-left:0}.tyk-button-group__wrapper .tyk-button-group .tyk-button:first-child{border-top-left-radius:20px;border-bottom-left-radius:20px}.tyk-button-group__wrapper .tyk-button-group .tyk-button:last-child{border-top-right-radius:20px;border-bottom-right-radius:20px}.tyk-chart__wrapper{position:relative}.tyk-chart--no-data,.tyk-chart--loading-chart{filter:blur(10px);-webkit-filter:blur(10px)}.collapse-exit,.collapse-exit-active,.collapse-exit-done{height:0px}.collapse-wrapper{overflow:hidden;transition:all .2s}.collapse-horizontal-exit,.collapse-horizontal-exit-active,.collapse-horizontal-exit-done{width:0px}.collapse-horizontal-enter,.collapse-horizontal-enter-active,.collapse-horizontal-enter-done{width:100%}.tyk-copy-to-clipboard{position:absolute;left:-1000px;top:-1000px}.tyk-fixed-wrapper{left:0;position:sticky;right:0;top:0;z-index:8}.tyk-fixed-wrapper--scrolled{box-shadow:2px 2px 5px rgba(0,0,0,.1)}.floating-container{position:fixed;top:-9999px;overflow:auto;z-index:1080}.tyk-icon+.tyk-icon{margin-left:10px}.tyk-infinite-scroller{height:100%;overflow:hidden;position:relative}.tyk-infinite-scroller .loading{background:linear-gradient(180deg, rgba(255, 255, 255, 0), rgb(255, 255, 255));justify-content:center;bottom:0;display:flex;left:0;padding:15px 0;right:0;top:auto;width:100%}.tyk-infinite-scroller__wrapper{height:100%;overflow-y:auto}.tyk-info-note{border-radius:0;position:relative}.tyk-info-note p+p{margin-top:15px}.tyk-info-note:after{content:"";border-style:solid;border-width:0 20px 20px 0;border-color:rgba(0,0,0,0) #82bbc6 rgba(0,0,0,0) rgba(0,0,0,0);height:0;position:absolute;right:0;top:0;width:0}.tyk-info-note .tyk-message{border-radius:0;padding-top:40px;padding-bottom:40px}.tyk-loading__wrapper{background:rgba(255,255,255,.6);bottom:0;position:absolute;left:0;right:0;top:0;z-index:99}.loader-wrapper{min-height:100px;position:relative}.loading{position:absolute;top:calc(50% - 10px);left:50%}.loading.relative{left:auto;padding:25px;position:relative;text-align:center;top:auto;width:100%}.loading-bar{display:inline-block;width:4px;height:20px;border-radius:4px;animation:loading 1s ease-in-out infinite;margin-left:2px}.loading-bar:nth-child(1){animation-delay:0;background-color:#00d9ba;opacity:1}.loading-bar:nth-child(2){animation-delay:.09s;background-color:#00d9ba;opacity:.8}.loading-bar:nth-child(3){animation-delay:.18s;background-color:#00d9ba;opacity:.6}.loading-bar:nth-child(4){animation-delay:.27s;background-color:#00d9ba;opacity:.4}@keyframes loading{0%{transform:scale(1)}20%{transform:scale(1, 2.2)}40%{transform:scale(1)}}.tyk-list{border:2px solid #c3c3e5;border-radius:18px;font-size:14px;list-style-type:none;margin:0;max-height:191px;padding:0;overflow:auto}.tyk-list--with-inline-label{display:flex}.tyk-list--with-inline-label>label{margin-right:20px}.tyk-list li{border-bottom:1px solid #c3c3e5;padding:10px 20px;font-family:"OpenSans-SemiBold"}.tyk-list li:last-child{border:none}.tyk-list--default{border-color:#c3c3e5}.tyk-list--primary{border-color:#a2a2cc}.tyk-list--primary li{border-color:#ededf9;color:#505071}.tyk-list--primary-light{border-color:#ededf9}.tyk-list--primary-light li{border-color:#ededf9;color:#505071}.tyk-list--success{border-color:#00d9ba;color:#00d9ba}.tyk-list--success li{border-color:#00d9ba}.tyk-list--danger{border-color:#ff6c7d;color:#505071}.tyk-list--danger li{border-color:#ffbbc5}ul.tyk-list--inline{align-items:center;display:flex}ul.tyk-list--inline li{padding:0 10px}ul.tyk-list--inline.tyk-list--with-separator li:not(:first-child){border-left:1px solid #36364c}.tyk-message{display:flex;align-items:center;border-radius:18px;margin-bottom:20px;padding:20px 20px 20px 20px}.tyk-message__content{flex-grow:1;margin-left:20px;margin-right:20px}.tyk-message>.tyk-icon:first-child{width:32px;height:32px;flex-shrink:0;border-radius:50%;color:#fff}.tyk-message>.tyk-icon:first-child:before{display:flex;width:100%;height:100%;align-items:center;justify-content:center}.tyk-message>.tyk-icon:last-child{cursor:pointer}.tyk-message--default{background-color:#ededf9;border:2px solid #505071;color:#505071}.tyk-message--default>.tyk-icon:first-child{background-color:#505071}.tyk-message--default>.tyk-icon:first-child{transform:rotate(180deg)}.tyk-message--info{background-color:#d3ebef;border:2px solid #82bbc6;color:#82bbc6}.tyk-message--info>.tyk-icon:first-child{background-color:#82bbc6}.tyk-message--success{background-color:#c2f2e9;border:2px solid #00b798;color:#00b798}.tyk-message--success>.tyk-icon:first-child{background-color:#00b798}.tyk-message--warning{background-color:#ffe885;border:2px solid #d6b218;color:#c58c11}.tyk-message--warning>.tyk-icon:first-child{background-color:#d6b218}.tyk-message--danger{background-color:#f5ccd1;border:2px solid #ff6c7d;color:#ea4766}.tyk-message--danger>.tyk-icon:first-child{background-color:#ff6c7d}.tyk-modal{--theme-header-height: 15px;--theme-header-icon-size: 65px;align-items:center;bottom:0;left:0;pointer-events:none;position:fixed;right:0;top:0;z-index:-1}.tyk-modal .tyk-panel{border:2px solid #43435b;box-shadow:none;-webkit-box-shadow:none}.tyk-modal .tyk-modal__dialog{opacity:0;transition:all .2s ease}.tyk-modal.opened{display:flex;z-index:1080}.tyk-modal.opened .tyk-modal__dialog{display:flex;max-height:92vh;opacity:1;pointer-events:all}.tyk-modal.appear-enter-done .tyk-modal__dialog{opacity:1;margin-top:0}.tyk-modal__theme-header{position:absolute;top:-1px;left:0;right:0;height:var(--theme-header-height);border-top-left-radius:18px;border-top-right-radius:18px}.tyk-modal__theme-header .tyk-icon{position:absolute;left:calc(50% - var(--theme-header-icon-size)/2);top:calc((var(--theme-header-icon-size) - var(--theme-header-height))/-2);width:var(--theme-header-icon-size);height:var(--theme-header-icon-size);border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:25px;color:#fff}.tyk-modal--theme-success .tyk-modal__theme-header{background-color:#00d9ba}.tyk-modal--theme-success .tyk-modal__theme-header .tyk-icon{background-color:#00d9ba}.tyk-modal--theme-warning .tyk-modal__theme-header{background-color:#d6b218}.tyk-modal--theme-warning .tyk-modal__theme-header .tyk-icon{background-color:#d6b218}.tyk-modal--theme-danger .tyk-modal__theme-header{background-color:#ff6c7d}.tyk-modal--theme-danger .tyk-modal__theme-header .tyk-icon{background-color:#ff6c7d}.tyk-modal__dialog{opacity:0;margin:0 auto;margin-top:-5%;pointer-events:all;transition:all .2s linear;width:85%}@media only screen and (min-width: 768px){.tyk-modal__dialog{width:600px}}@media only screen and (min-width: 768px){.tyk-modal__dialog.tyk-modal--lg{width:800px}}.tyk-modal__content{background:#fff;border-radius:18px;display:flex;flex-direction:column;position:relative;width:100%}.tyk-modal__body{flex:1;overflow:auto;--padding-top: calc(25px + (var(--theme-header-icon-size) - var(--theme-header-height)) / 2);padding:var(--padding-top) 25px 25px}.tyk-modal__body.no-padding{padding:0}.tyk-modal__footer{align-items:center;display:flex;justify-content:flex-end;padding:25px}.tyk-modal__footer>:not(:first-child){margin-left:5px}.tyk-modal__backdrop{background-color:#505071;border:none;bottom:0;display:none;left:0;position:fixed;right:0;top:0;width:100%;z-index:1079}.tyk-modal__backdrop.opened{display:block;opacity:.5;transition:opacity .2s ease}.tyk-modal__backdrop.fade-enter-done{opacity:.5}.tyk-modal__header{--padding-top: calc(25px + (var(--theme-header-icon-size) - var(--theme-header-height)) / 2);padding:var(--padding-top) 25px 25px;align-items:center;border-bottom:1px solid #ededf9;display:flex;width:100%}.tyk-modal--theme-none .tyk-modal__header{padding-top:25px}.tyk-modal__header button{margin-left:auto;padding:0 5px}.tyk-modal__header+.tyk-modal__body{padding-top:25px}.tyk-modal__title{font-family:"OpenSans-SemiBold";font-weight:500;margin:0;width:100%}.tyk-navigation{background-color:#fff;height:100%;overflow:auto;padding:0;width:100%}.tyk-navigation .tyk-navigation-item{width:100%}.tyk-navigation .tyk-navigation-item a{color:#505071;display:flex;padding:10px 20px;text-decoration:none;transition:all .2s ease}.tyk-navigation .tyk-navigation-item a:hover{background-color:#a2a2cc;color:#fff}.tyk-navigation .tyk-navigation-item a.active{background-color:#505071;color:#fff}.tyk-nav-bar{align-items:center;border:none;background-color:#fff;font-family:"OpenSans-regular";color:#36364c;margin:0;padding:0 20px 0 20px;width:100%;z-index:8;transition:all .2s linear}.tyk-nav-bar__pre{align-self:flex-end;color:#505071;flex-basis:100%}.tyk-nav-bar__pre a{font-family:"OpenSans-Bold";font-size:12px;line-height:16px;color:#505071}.tyk-nav-bar.tyk-nav-bar__with-tabs .tyk-tabs--default>ul li button{padding-top:0}@media screen and (max-width: 1024px){.tyk-nav-bar{padding-left:20px}.menu-opened .tyk-nav-bar{transform:translate(245px)}}.tyk-nav-bar h1{color:#36364c}.tyk-nav-bar h4{margin:0}.tyk-nav-bar .tyk-nav-bar__wrapper{align-items:center;padding-bottom:0;display:flex;flex-wrap:wrap;height:92px}.tyk-nav-bar .tyk-nav-bar__wrapper.tyk-nav-bar--align-top{align-items:flex-start}@media screen and (max-width: 1024px){.tyk-nav-bar .tyk-nav-bar__wrapper{padding-left:0}}.tyk-nav-bar .tyk-nav-bar__wrapper h1{font-size:25px;font-family:"smoolthan_bold";line-height:30px;margin:0;padding-right:10px}.tyk-nav-bar .tyk-nav-bar__wrapper h4{padding-right:10px}.tyk-nav-bar .tyk-nav-bar__wrapper .tyk-nav-bar__container{align-items:center;display:flex;flex-grow:1;justify-content:space-between}.tyk-nav-bar .tyk-nav-bar__wrapper .tyk-nav-bar__left{flex-grow:1}.tyk-nav-bar .tyk-nav-bar__wrapper .tyk-nav-bar__right{margin-left:auto}.tyk-panel{background:#fff;border-radius:0;margin-bottom:20px;font-family:"OpenSans-SemiBold";position:relative}.tyk-panel.has-error,.tyk-panel .tyk-panel.has-error{border:2px solid #ff6c7d}.tyk-panel__header{align-items:center;border-bottom:1px solid #e1e1e1;display:flex;font-family:"OpenSans-regular"}.tyk-panel__header>.tyk-icon,.tyk-panel__header>.tyk-tooltip__wrapper{margin-left:5px}.tyk-panel .tyk-panel{border:2px solid #c3c3e5;box-shadow:none;-webkit-box-shadow:none}.tyk-panel--blank.tyk-panel--collapsed{margin-bottom:20px}.tyk-panel--blank.tyk-panel--collapsed .tyk-panel__header{margin-bottom:0}.tyk-panel--blank .tyk-panel__header{margin-bottom:-20px;padding:20px 25px;background-color:#fff;border:none;color:#36364c;font-size:17px;line-height:23px}.tyk-panel--primary{background-color:rgba(0,0,0,0)}.tyk-panel--primary .tyk-panel__header{background-color:#a2a2cc;border:none;color:#fff;font-size:17px;line-height:23px}.tyk-panel--primary .tyk-panel__body{background-color:#fff;border:none;color:#505071;font-size:17px;line-height:23px}.tyk-panel--primary .tyk-panel__header{border:none}.tyk-panel--primary .tyk-form-group label{color:#505071}.tyk-panel--primary .tyk-toggle .tyk-toggle__label{color:#505071}.tyk-panel--success .tyk-panel__header{background-color:#00d9ba;border:none;color:#fff;font-size:17px;line-height:23px}.tyk-panel--danger .tyk-panel__header{background-color:#ff6c7d;border:none;color:#fff;font-size:17px;line-height:23px}.tyk-panel--warning .tyk-panel__header{background-color:#d6b218;border:none;color:#fff;font-size:17px;line-height:23px}.tyk-panel__body{background-color:#fff;border-radius:0;font-family:"OpenSans-regular";padding:25px;position:relative;transition:height .2s}.tyk-panel__body~.tyk-panel__header{border-bottom-left-radius:0;border-bottom-right-radius:0}.tyk-panel__body.no-padding{padding:0}.tyk-panel__header{border-radius:0;border-bottom-left-radius:0;border-bottom-right-radius:0;font-family:"OpenSans-SemiBold";overflow:hidden;padding:10px 25px;position:relative}.tyk-panel--collapsed .tyk-panel__header{border-bottom-left-radius:0;border-bottom-right-radius:0}.tyk-panel__header~.tyk-panel__body{border-top-left-radius:0;border-top-right-radius:0}.tyk-panel__headerh3{margin:0}.tyk-panel__header ng-transclude{vertical-align:middle}.tyk-panel__header.collapsable{cursor:pointer}.tyk-panel__icon-collapse--right .tyk-panel__header.collapsable{padding-right:48px}.tyk-panel__icon-collapse--left .tyk-panel__header.collapsable{padding-left:48px}.tyk-panel__header .collapsable__arrow-right{font-size:14px;position:absolute;padding:10px;right:10px;top:calc(50% - 21px)}.tyk-panel__header .collapsable__arrow-left{font-size:14px;position:absolute;padding:8px 0px 10px 20px;left:0px;top:calc(50% - 21px)}.tyk-panel__footer{align-items:center;border-top:1px solid #ededf9;display:flex;justify-content:flex-end;padding:25px}.tyk-panel__footer>:not(:first-child){margin-left:5px}.tyk-pill{align-items:center;border-radius:18px;display:inline-flex;font-size:12px;line-height:19px;margin:0 0 10px 0;padding:6px 15px;font-family:"OpenSans-SemiBold"}.tyk-pill--square{border-radius:8px}.tyk-pill i{font-size:12px}.tyk-pill+.tyk-pill{margin-right:10px}.tyk-pill button+span{margin-left:10px}.tyk-pill span+button{margin-left:10px}.tyk-pill:first-child{margin-right:10px}.tyk-pill:last-child{margin-right:0}.tyk-pill--default{background-color:#36364c;color:#fff}.tyk-pill--default i{color:#fff}.tyk-pill--default-outline{box-shadow:inset 0px 0px 0px 2px #36364c;color:#505071}.tyk-pill--default-outline i{color:#505071}.tyk-pill--primary{background-color:#a2a2cc;color:#fff}.tyk-pill--primary i{color:#fff}.tyk-pill--primary-outline{box-shadow:inset 0px 0px 0px 2px #a2a2cc;color:#505071}.tyk-pill--primary-outline i{color:#505071}.tyk-pill--success{background-color:#00d9ba;color:#fff}.tyk-pill--success i{color:#fff}.tyk-pill--success-outline{box-shadow:inset 0px 0px 0px 2px #00d9ba;color:#505071}.tyk-pill--success-outline i{color:#505071}.tyk-pill--danger{background-color:#ff6c7d;color:#fff}.tyk-pill--danger i{color:#fff}.tyk-pill--danger-outline{box-shadow:inset 0px 0px 0px 2px #ff6c7d;color:#505071}.tyk-pill--danger-outline i{color:#505071}.tyk-pill--warning{background-color:#d6b218;color:#fff}.tyk-pill--warning i{color:#fff}.tyk-pill--warning-outline{box-shadow:inset 0px 0px 0px 2px #d6b218;color:#505071}.tyk-pill--warning-outline i{color:#505071}.tyk-pill--info{background-color:#82bbc6;color:#fff}.tyk-pill--info i{color:#fff}.tyk-pill--info-outline{box-shadow:inset 0px 0px 0px 2px #82bbc6;color:#505071}.tyk-pill--info-outline i{color:#505071}.tyk-ui-reveal-wrapper{display:flex;flex-direction:column;justify-content:flex-end;align-items:stretch;width:100%;height:100%;z-index:1000;position:absolute;bottom:0;left:0;pointer-events:none}.tyk-ui-reveal-wrapper__panel{max-height:calc(100% - 2rem);background-color:#fff;padding:0;margin:0;overflow-y:auto;display:flex;flex-direction:column;pointer-events:all;flex-shrink:0;overflow:auto}.tyk-ui-reveal-wrapper__hole{flex-grow:1;opacity:0;width:100%;background-color:green;-webkit-user-select:none;user-select:none;pointer-events:none;z-index:-1}.tyk-ui-reveal-wrapper__gutter{height:2rem;width:100%;cursor:row-resize;display:flex;background-color:#a2a2cc;z-index:2;pointer-events:all;justify-content:space-between;align-items:stretch;position:relative;box-shadow:0 5px 10px rgba(0,0,0,.3)}.tyk-ui-reveal-wrapper__gutter__headerleft,.tyk-ui-reveal-wrapper__gutter__headerright{display:flex;align-items:center;flex:1}.tyk-ui-reveal-wrapper__gutter__headerleft{justify-content:flex-start}.tyk-ui-reveal-wrapper__gutter__headerright{justify-content:flex-end}.tyk-ui-reveal-wrapper__gutter__logo{width:1rem;height:1rem;-webkit-user-select:none;user-select:none;pointer-events:none;padding:.2rem;z-index:2;background-image:url(images/drag.svg);align-self:center}.tyk-ui-reveal-wrapper__gutter__logo:hover{border:dashed}.tyk-sidebar{background-color:#fff;height:calc(100vh - 58px);flex:0 0 280px;padding:0;position:-webkit-sticky;position:sticky;overflow:auto;top:58px}.tyk-table{border-collapse:collapse;border-spacing:0;background-color:#fff;border-radius:18px;width:100%}.tyk-table__wrapper{border:2px solid #c3c3e5;border-radius:18px;overflow:auto}.tyk-table__wrapper--no-border{border:none}.tyk-table__wrapper.no-innner-horizontal-borders .tyk-table>thead th,.tyk-table__wrapper.no-innner-horizontal-borders .tyk-table>tbody td{border-right:none}.tyk-table>thead th{border-right:1px solid #c3c3e5;color:#505071;font-size:14px;line-height:19px;font-family:"OpenSans-Bold";text-transform:uppercase}.tyk-table>thead th:last-child{border-right:none}.tyk-table>thead th i{font-size:12px}.tyk-table>thead th .tyk-button{background:none;color:#36364c;padding:0}.tyk-table>thead th{padding:15px 10px}.tyk-table>tbody tr:hover{background:rgba(237,237,249,.4)}.tyk-table>tbody td{border-right:1px solid #c3c3e5;font-size:14px;line-height:19px;font-family:"OpenSans-regular";padding:5px 10px;vertical-align:middle}.tyk-table>tbody td:last-child{border-right:none}.tyk-table>tbody td.fit{white-space:nowrap;width:1%}.tyk-table>tbody td input:not([type=checkbox]):not([type=radio]){margin-top:15px}.tyk-table>tbody td a{color:#505071;font-family:"OpenSans-SemiBold"}.tyk-table>tbody td label{margin:0}.tyk-table>tbody td input[type=checkbox]{margin:0}.tyk-table tbody>tr{border-top:1px solid #c3c3e5;transition:all .4s linear;border-radius:18px}.tyk-table tbody>tr.clickable{cursor:pointer}.tyk-table>tbody tr td:first-child,.tyk-table>thead tr th:first-child{padding-left:20px}.tyk-table>tbody tr td:first-child.with-icon,.tyk-table>thead tr th:first-child.with-icon{padding-left:15px}.tyk-table>tbody tr td:last-child,.tyk-table>thead tr th:last-child{padding-right:20px}.tyk-table>tbody tr td:last-child.with-icon,.tyk-table>thead tr th:last-child.with-icon{padding-right:15px}.tyk-table .tyk-pagination{padding:20px 25px}.tyk-table .tyk-pagination li:first-child{margin-left:auto}.tyk-table .nowrap{white-space:nowrap}.tyk-table .wrap{word-break:break-all}.tyk-table-search{padding:10px 25px 0 25px}.tyk-table-search label{font-size:14px;text-transform:uppercase}.header-sort{padding-left:3px;padding-top:5px;vertical-align:middle}.new-table-pagination{float:right}.selectable>div{margin-left:20px}.scrollable{display:block;overflow:auto}.fixed-header{background:#fff;position:sticky;top:0}.tyk-table.has-error,.tyk-table__wrapper.has-error{border:2px solid #ff6c7d !important}.tyk-tabs--default>ul{display:flex;list-style-type:none;margin:0;padding:0;overflow:auto}.tyk-tabs--default>ul li{display:flex;white-space:nowrap;margin-right:0px}.tyk-tabs--default>ul li:last-child{margin-right:0}.tyk-tabs--default>ul li.active button,.tyk-tabs--default>ul li button:hover{border-bottom-color:#00d9ba;color:#505071;opacity:1}.tyk-tabs--default>ul li button{background:none;border:none;border-bottom:4px solid rgba(0,0,0,0);color:#505071;cursor:pointer;font-size:14px;font-family:"OpenSans-SemiBold";padding:10px 2px 3px 2px;margin-right:20px;transition:all .2s linear;opacity:.7}.tyk-tabs--default>ul li button:focus{outline:none}.tyk-tab__content{padding:25px}.tyk-toast__container{bottom:0;min-width:300px;position:fixed;right:20px;z-index:11}.tyk-toast__message{position:relative}.tyk-toast-message__button{color:#505071;height:20px;line-height:1;padding:5px;position:absolute;right:5px;top:5px;width:20px}.tyk-toast-message__button:hover{background:rgba(255,255,255,.3);color:#505071}.floating-container{position:fixed;top:-9999px;overflow:auto;z-index:1080}.tyk-combobox2{outline:none}.tyk-combobox2.disabled .tyk-form-control{border:2px solid #c3c3e5 !important;background-color:#ededf9;color:#505071;cursor:not-allowed}.tyk-combobox2.disabled .tyk-combobox2__current-values .tyk-pill--combobox button{cursor:not-allowed}.tyk-combobox2.disabled:not(.is-expand-mode) .tyk-combobox2__values-container-trigger{cursor:not-allowed}.tyk-combobox2.disabled .tyk-combobox2__entry-field{background-color:rgba(0,0,0,0);cursor:not-allowed}.tyk-combobox2 .tyk-form-control{display:flex;flex-direction:row;position:relative;min-height:40px;height:auto;padding:0}.tyk-combobox2 .tyk-form-control:focus-within{outline:none;border:2px solid #00d9ba}.tyk-combobox2__current-values{display:flex;flex-grow:1;flex-wrap:wrap;padding-top:2px;padding-bottom:2px;padding-left:10px;max-width:calc(100% - 40px)}.tyk-combobox2__current-values.expand-mode{max-height:1000px;overflow:hidden;transition:max-height 1s ease}.tyk-combobox2__current-values--collapsed.expand-mode{max-height:38px;transition:max-height .2s ease}.tyk-combobox2__current-values .tyk-pill--combobox{margin-top:3px;margin-bottom:3px;background-color:#f0f0f0;border-radius:10px;color:#505071;padding:5px 10px;max-width:100%;max-height:26px}.tyk-combobox2__current-values .tyk-pill--combobox button{background:none;border:none;cursor:pointer;width:23px;outline:none}.tyk-combobox2__current-values .tyk-pill--combobox button+span{margin-left:0}.tyk-combobox2__current-values .tyk-pill--combobox span{overflow:hidden;text-overflow:ellipsis}.tyk-combobox2__current-values .tyk-pill--combobox i{margin-right:5px}.tyk-combobox2__entry-field{border:none;line-height:30px}.tyk-combobox2__entry-field:focus,.tyk-combobox2__entry-field:active{border:none;outline:none}.tyk-combobox2__entry-field::placeholder{color:#a2a2cc;font-family:"OpenSans-SemiBold"}.tyk-combobox2__text-value{font-family:"OpenSans-SemiBold";font-size:14px;line-height:19px;padding:9px 5px;width:100%;overflow:hidden;text-overflow:ellipsis;line-height:1;outline:none}.tyk-combobox2__text-value.overflow-single{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tyk-combobox2__text-value.is-placeholder{color:#a2a2cc;font-family:"OpenSans-SemiBold"}.tyk-combobox2__values-container-trigger{position:relative;flex-basis:40px;display:flex;justify-content:center;align-items:center;cursor:pointer;outline:none;transition:all .2s}.tyk-combobox2__values-container-trigger--expanded{transform:rotate(180deg)}.tyk-combobox2__values-container-trigger .tyk-icon{height:14px}.tyk-form-group--rounded-corners .tyk-combobox2-disabled-overlay{border-radius:calc(18px - 2px)}.tyk-combobox2__combobox-dropdown{display:flex;flex-direction:column;border:2px solid #c3c3e5;background-color:#fff}.tyk-combobox2__combobox-dropdown.tyk-form-group--rounded-corners{border-radius:18px}.tyk-combobox2__combobox-dropdown .tyk-combobox2__combobox-search{background-color:#fff;position:sticky;top:0;padding:10px 20px}.tyk-combobox2__combobox-dropdown .tyk-combobox2__combobox-search+.combobox-list{border-top:1px solid #c3c3e5}.tyk-combobox2__combobox-dropdown .tyk-combobox2__combobox-list{max-height:255px}.tyk-combobox2__combobox-dropdown .tyk-combobox2__combobox-list li{display:flex;cursor:pointer;padding:9px 20px;transition:all .2s;font-family:"OpenSans-SemiBold"}.tyk-combobox2__combobox-dropdown .tyk-combobox2__combobox-list li:hover,.tyk-combobox2__combobox-dropdown .tyk-combobox2__combobox-list li.active{background-color:#ededf9}.tyk-combobox2__combobox-dropdown .tyk-combobox2__combobox-list li.disabled{color:#c3c3e5;background-color:initial}.tyk-combobox2__combobox-dropdown .tyk-combobox2__combobox-list li+li{border-top:1px solid #c3c3e5}.tyk-combobox2__combobox-dropdown .tyk-combobox2__combobox-list li i{margin-right:5px}.tyk-combobox2__combobox-dropdown .tyk-combobox2__combobox-list li .item-name{overflow:hidden;text-overflow:ellipsis;line-height:16px}.tyk-combobox2__values-container-trigger{color:#505071}.tyk-combobox2__combobox-dropdown.tyk-form-group--rounded-corners{z-index:1081}.tyk-checkbox label{display:flex;align-items:flex-start;padding-left:20px}.tyk-checkbox label input{margin-left:-20px;margin-top:5px}.tyk-checkbox--theme-light label{color:#fff}.tyk-checkbox--theme-light.tyk-checkbox--is-disabled label{color:#fff}.tyk-checkbox--is-disabled label,.tyk-checkbox--is-disabled p{cursor:not-allowed;opacity:.5}.flatpickr-day.selected,.flatpickr-day.startRange,.flatpickr-day.endRange,.flatpickr-day.selected.inRange,.flatpickr-day.startRange.inRange,.flatpickr-day.endRange.inRange,.flatpickr-day.selected:focus,.flatpickr-day.startRange:focus,.flatpickr-day.endRange:focus,.flatpickr-day.selected:hover,.flatpickr-day.startRange:hover,.flatpickr-day.endRange:hover,.flatpickr-day.selected.prevMonthDay,.flatpickr-day.startRange.prevMonthDay,.flatpickr-day.endRange.prevMonthDay,.flatpickr-day.selected.nextMonthDay,.flatpickr-day.startRange.nextMonthDay,.flatpickr-day.endRange.nextMonthDay{background:#00d9ba !important;border-color:#00d9ba !important}.tyk-dropdown{display:inline-block}.tyk-dropdown+.tyk-button,.tyk-dropdown+.tyk-dropdown,.tyk-dropdown+.tyk-toggle{margin-left:10px}.tyk-dropdown--block{left:20px;right:20px}.tyk-dropdown--relative{left:auto;right:auto}.tyk-dropdown--custom{padding:20px 25px}.tyk-dropdown label{display:block}.tyk-dropdown__trigger{position:relative}.tyk-dropdown.theme-list .tyk-button{background:#fff;border:2px solid #36364c;border-radius:18px;color:#505071}.tyk-dropdown.theme-list .tyk-button:hover,.tyk-dropdown.theme-list .tyk-button:active,.tyk-dropdown.theme-list .tyk-button:active:focus,.tyk-dropdown.theme-list .tyk-button:focus{background:#fff;border-color:#43435b;color:#505071}.tyk-dropdown-menu{background:#fff;border:2px solid #c3c3e5;border-radius:18px;-webkit-filter:drop-shadow(1px 2px 1px rgba(0, 0, 0, 0.1));filter:drop-shadow(1px 2px 1px rgba(0, 0, 0, 0.1));list-style-type:none;margin:0;margin-top:3px;overflow:hidden;padding:0;z-index:1081}.tyk-dropdown-menu.tyk-dropdown--scrollable{overflow:auto}.tyk-dropdown-menu .tyk-panel{margin:0}.tyk-dropdown-menu.opened{display:flex;flex-direction:column;position:absolute}.tyk-dropdown-menu>li{background:#fff;border-bottom:1px solid #fff;display:flex;position:relative;z-index:7}.tyk-dropdown-menu>li:last-child{border:none}.tyk-dropdown-menu>li i{left:7px;position:absolute;top:9px}.tyk-dropdown-menu>li>a{cursor:pointer;color:#505071;display:flex;font-size:12px;padding:7px 24px;text-transform:uppercase;text-decoration:none;width:100%}.tyk-dropdown-menu>li>a:hover{color:#505071}.tyk-dropdown-menu>li>a .badge{background:#505071;color:#fff;font-size:10px;margin-top:-4px;margin-left:6px}.tyk-dropdown-menu>li>a:hover{background-color:#ededf9;text-decoration:none}.tyk-dropdown--relative.opened{position:relative}.tyk-editable-list__submit-btn{white-space:nowrap}.tyk-editable-list__form{align-items:center;display:flex}.tyk-editable-list__form .tyk-form-group{margin-bottom:0}.tyk-editable-list__form--sticked{margin-left:0}.tyk-editable-list__form--sticked button{border-top-left-radius:0px;border-bottom-left-radius:0px;border-top-right-radius:3px;border-bottom-right-radius:3px;padding-bottom:11px;padding:10px 15px 11px 15px}.tyk-editable-list__form span.inline{margin-top:0}.tyk-editable-list__form>span{margin-left:15px}.tyk-editable-list__form>span.inline-with-label{align-self:flex-end}.tyk-editable-list__header{padding-top:15px;border-bottom:1px solid #43435b;color:#505071;font-size:11px;padding-bottom:15px;text-transform:uppercase}.tyk-editable-list__header .tyk-row{margin:0}.tyk-editable-list-items{overflow:hidden;list-style:none;padding:20px 0 0 0}.tyk-editable-list-items .edit-mode-wrapper.table button{margin-top:23px}.tyk-editable-list-items .tyk-row{margin:0}.tyk-editable-list-items button[disabled]{cursor:not-allowed}.tyk-editable-list-items.tyk-editable-list-items--inline{align-items:center;color:#505071;display:flex;flex-wrap:wrap}.tyk-editable-list-items li{border-top:1px solid #c3c3e5;transition:all .2s linear}.tyk-editable-list-items li.tyk-editable-list-item--inline{background-color:#c3c3e5;border-radius:25px;border:none;color:#fff;float:left;font-family:"OpenSans-SemiBold";margin-bottom:10px;margin-right:15px;padding:0 15px;white-space:nowrap}.tyk-editable-list-items li.tyk-editable-list-item--inline .tyk-editable-list-item__text{color:#505071;padding:5px 0}.tyk-editable-list-items li.tyk-editable-list-item--inline .tyk-editable-list-action__button.on-edit{margin-top:0}.tyk-editable-list-items li:first-child{border-top:none}.tyk-editable-list-items li .tyk-editable-list-item__text{display:flex;padding:10px 0}.tyk-editable-list-items li .tyk-editable-list-item__text>span{flex-grow:1}.tyk-editable-list-items li .tyk-editable-list-item__text>div:first-child{flex-grow:1}.tyk-editable-list-items li .tyk-editable-list-item__text>div:first-child .error-message{margin:0}.tyk-editable-list-items li .tyk-editable-list-items{overflow:hidden;padding-bottom:10px}.tyk-editable-list-items li .tyk-editable-list{border-top:5px solid #43435b;background:#ededf9;padding:10px 15px}.tyk-editable-list-items .tyk-editable-list-item__text{display:block;word-wrap:break-word;word-break:break-all}.tyk-editable-list-items .tyk-editable-list-action__button{border:none;background:rgba(0,0,0,0)}.tyk-editable-list-items .tyk-editable-list-action__button.on-edit{margin-left:10px}.tyk-editable-list-items .tyk-editable-list-item-controls{flex-grow:0;text-align:right}.tyk-editable-list-item__controls{text-align:right}.tyk-editable-list-items.table{background-color:#fff;border-radius:18px;border:2px solid #c3c3e5;padding:0 !important}.tyk-editable-list-items.table li{border-color:#c3c3e5}.tyk-editable-list-items.table li:hover{background:#ededf9}.tyk-editable-list-items.table .tyk-editable-list-item__text{background:rgba(0,0,0,0)}.tyk-editable-list-items.table .tyk-editable-list-action__button{border-radius:6px;cursor:pointer;margin-right:10px}.tyk-editable-list__header{background-color:#fff;border-top-left-radius:18px;border-top-right-radius:18px;border:2px solid #c3c3e5;border-bottom:1px solid #c3c3e5 !important;color:#505071 !important;font-family:"OpenSans-Bold";margin-top:10px}.tyk-editable-list__header+.tyk-editable-list-items.table{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.editable-list__header{align-items:center;display:flex;margin-bottom:10px}.editable-list__header .tyk-button{margin-left:auto}.editable-list__wrapper.has-error .editable-list__list{border:2px solid #ff6c7d}.editable-list__list{border:2px solid #c3c3e5;border-radius:18px;display:flex;flex-direction:column-reverse}.editable-list__item{border-bottom:1px solid #c3c3e5;display:flex;flex-wrap:nowrap;width:100%}.editable-list__item:first-child{border-bottom:none}.editable-list__item-header{border-bottom:1px solid #c3c3e5;color:#505071;font-size:14px;line-height:19px;font-family:"OpenSans-Bold";text-transform:uppercase}.editable-list__item-header .editable-list__item-cell{padding:10px}.editable-list__item-cell{border-left:1px solid #c3c3e5;overflow:hidden;padding:0 10px}.editable-list__item-cell .tyk-form-control--readonly{overflow:hidden;text-overflow:ellipsis;word-break:break-all}.editable-list__item-cell:first-child{border-left:none;padding-left:15px}.editable-list__item-cell:last-child{padding-right:15px}.editable-list__item-cell .tyk-form-group{margin:10px 0;width:100%}.editable-list__item--size-1{display:flex;flex-grow:2;width:8.3333333333%}.editable-list__item--size-2{display:flex;flex-grow:3;width:16.6666666667%}.editable-list__item--size-3{display:flex;flex-grow:4;width:25%}.editable-list__item--size-4{display:flex;flex-grow:5;width:33.3333333333%}.editable-list__item--size-5{display:flex;flex-grow:6;width:41.6666666667%}.editable-list__item--size-6{display:flex;flex-grow:7;width:50%}.editable-list__item--size-7{display:flex;flex-grow:8;width:58.3333333333%}.editable-list__item--size-8{display:flex;flex-grow:9;width:66.6666666667%}.editable-list__item--size-9{display:flex;flex-grow:10;width:75%}.editable-list__item--size-10{display:flex;flex-grow:11;width:83.3333333333%}.editable-list__item--size-11{display:flex;flex-grow:12;width:91.6666666667%}.editable-list__item--size-12{display:flex;flex-grow:13;width:100%}.editable-list__item--size-fit{width:fit-content}.editable-list__item-action{align-items:flex-start;display:flex;justify-content:center;width:100px}.editable-list__item-action .tyk-button{margin-top:20px}.editable-list__item-action--read-only{color:#c3c3e5;align-items:center}.editable-list__item-action--read-only .tyk-button{margin-top:0}.tyk-file-input__wrapper{position:relative}.tyk-file-input__wrapper>input{padding:6px 20px}.tyk-file-input__wrapper>button{background:none;border:none;cursor:pointer;position:absolute;right:15px;top:9px}.tyk-multiselect{align-items:flex-start;border-radius:18px;flex-wrap:wrap;display:flex;margin-bottom:20px;width:100%}.tyk-multiselect .input-group .input-group-addon+.form-control{border-width:1px !important;border-left:none !important;border-top-left-radius:0 !important;border-top-right-radius:0 !important;border-bottom-left-radius:0 !important;border-bottom-right-radius:0 !important}.tyk-multiselect .input-group .input-group-addon{background:rgba(0,0,0,0) !important;border-width:1px !important;border-right:0 !important;border-top-left-radius:0 !important;border-top-right-radius:0 !important;border-bottom-left-radius:0 !important;border-bottom-right-radius:0 !important}.tyk-multiselect.has-error{border:2px solid #ff6c7d}.tyk-multiselect__header{background-color:#36364c;border-top-left-radius:18px;border-top-right-radius:18px;color:#fff;display:flex;width:100%}.tyk-multiselect__header>div{padding:10px 15px;width:50%}.tyk-multiselect__panel-wrapper{border:2px solid #c3c3e5;border-top:none;border-bottom-left-radius:18px;border-bottom-right-radius:18px;display:flex;flex:1;height:265px;width:100%}.tyk-multiselect__panel{display:flex;flex-direction:column;margin:0 0 0 -1px;position:relative;width:calc(50% + 1px)}.tyk-multiselect__panel:last-child{border-left:2px solid #c3c3e5}.tyk-multiselect__panel:last-child .tyk-form-group{margin-left:-1px;width:calc(100% + 2px)}.tyk-multiselect__panel .tyk-message{margin:20px 20px 0 20px}.tyk-multiselect__list{list-style-type:none;margin:0;padding:0}.tyk-multiselect__list--scroll{height:100%;overflow-y:auto}.tyk-multiselect__list>li{border-bottom:2px solid #c3c3e5;display:flex;flex-direction:column;padding:10px 15px}.tyk-multiselect__list>li>div{align-items:start;display:flex;width:100%}.tyk-multiselect__list>li .loading{justify-content:center}.tyk-multiselect__list>li:last-child{border-bottom:none}.tyk-multiselect-item__name{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tyk-multiselect .tyk-form-group{margin:0}.tyk-multiselect .tyk-multiselect-item__controls{display:flex;margin-left:auto;flex-wrap:nowrap}.tyk-multiselect .tyk-multiselect-item__controls .tyk-button{color:#505071;margin-left:5px}.tyk-multiselect .tyk-multiselect-item__controls .tyk-button:last-child{margin-left:0}.tyk-pagination{display:flex;list-style-type:none;margin:10px 0;padding:0}.tyk-pagination li{align-items:center;display:flex}.tyk-pagination li:first-child button{border-top-left-radius:18px;border-bottom-left-radius:18px}.tyk-pagination li:last-child button{border-top-right-radius:18px;border-bottom-right-radius:18px}.tyk-pagination span{margin:0 10px}.tyk-pagination button{background:#fff;border:none;font-size:14px;font-family:"OpenSans-Bold";cursor:pointer;color:#36364c;margin-left:-1px;padding:10px 15px}.tyk-pagination button:hover{background-color:#c2f2e9}.tyk-pagination .active button{background-color:#00d9ba;color:#fff}.tyk-radio label{align-items:center;display:flex}.tyk-radio--is-disabled label,.tyk-radio--is-disabled p{cursor:not-allowed;opacity:.5}.tyk-radio__description-text{padding:0 0 0 20px}.tyk-select{background:rgba(0,0,0,0) url(images/arrow_down.svg) no-repeat calc(100% - 15px) center;background-size:15px 15px}.tyk-selectable-list{margin-bottom:20px;width:100%}.tyk-selectable-list li:not(.tyk-selectable-list__no-items-message){font-family:"OpenSans-SemiBold";padding:0}.tyk-selectable-list li:not(.tyk-selectable-list__no-items-message) .tyk-message{margin-bottom:0}.tyk-selectable-list li:not(.tyk-selectable-list__no-items-message) label{font-family:"OpenSans-SemiBold";margin:0}.tyk-selectable-list li:not(.tyk-selectable-list__no-items-message)>label{align-items:center;cursor:pointer;display:flex;padding:10px 20px}.tyk-selectable-list li:not(.tyk-selectable-list__no-items-message)>label input[type=checkbox]{margin-left:auto}.tyk-selectable-list__item--with-icon input[type=checkbox]{visibility:hidden}textarea.tyk-form-control{height:auto}.tyk-toggle{display:inline-flex;flex-wrap:wrap;font-family:"OpenSans-Bold";font-size:14px;line-height:19px;white-space:nowrap}.tyk-toggle.block{margin-bottom:20px;width:100%}.tyk-toggle.block+.tyk-toggle{margin-left:0}.tyk-toggle.inline-label{align-items:center;flex-wrap:nowrap}.tyk-toggle__list--has-error{border:2px solid #ff6c7d}.tyk-toggle .tyk-toggle__label{display:block;font-family:"OpenSans-SemiBold";font-size:14px;padding:0;width:100%;color:#36364c}.tyk-toggle.inline-label .tyk-toggle__label{margin-right:10px;width:auto}.tyk-toggle+.tyk-button,.tyk-toggle+.tyk-dropdown,.tyk-toggle+.tyk-toggle{margin-left:10px}.tyk-toggle--disabled-true{cursor:not-allowed;opacity:.7}.tyk-toggle--column .tyk-toggle__list--separated{display:flex;flex-direction:column;margin-right:20px}.tyk-toggle--column .tyk-toggle__list--separated .tyk-toggle__item{background-color:#ededf9;margin-right:auto}.tyk-toggle__list{background:#ededf9;border-radius:25px;display:flex;list-style-type:none;margin:0;padding:0;position:relative}.tyk-toggle__list--separated{background:rgba(0,0,0,0);flex-wrap:wrap}.tyk-toggle--on-dark .tyk-toggle__list{background:#fff}.tyk-toggle--default .tyk-toggle__item--active span{color:#fff}.tyk-toggle--default .tyk-toggle__list--single .tyk-toggle__item--active,.tyk-toggle--default .tyk-toggle__list--separated .tyk-toggle__item--active{background-color:#36364c;color:#fff;border:2px solid rgba(0,0,0,0)}.tyk-toggle--default .tyk-toggle__list--single .tyk-toggle__item--active span,.tyk-toggle--default .tyk-toggle__list--separated .tyk-toggle__item--active span{color:#fff}.tyk-toggle--default .tyk-toggle__list--single .tyk-toggle__item--active:hover,.tyk-toggle--default .tyk-toggle__list--separated .tyk-toggle__item--active:hover{background-color:#36364c;color:#fff}.tyk-toggle--primary .tyk-toggle__item--active span{color:#fff}.tyk-toggle--primary .tyk-toggle__list--single .tyk-toggle__item--active,.tyk-toggle--primary .tyk-toggle__list--separated .tyk-toggle__item--active{background-color:#a2a2cc;color:#fff;border:2px solid rgba(0,0,0,0)}.tyk-toggle--primary .tyk-toggle__list--single .tyk-toggle__item--active span,.tyk-toggle--primary .tyk-toggle__list--separated .tyk-toggle__item--active span{color:#fff}.tyk-toggle--primary .tyk-toggle__list--single .tyk-toggle__item--active:hover,.tyk-toggle--primary .tyk-toggle__list--separated .tyk-toggle__item--active:hover{background-color:#a2a2cc;color:#fff}.tyk-toggle--success .tyk-toggle__item--active span{color:#fff}.tyk-toggle--success .tyk-toggle__list--single .tyk-toggle__item--active,.tyk-toggle--success .tyk-toggle__list--separated .tyk-toggle__item--active{background-color:#00b798;color:#fff;border:2px solid rgba(0,0,0,0)}.tyk-toggle--success .tyk-toggle__list--single .tyk-toggle__item--active span,.tyk-toggle--success .tyk-toggle__list--separated .tyk-toggle__item--active span{color:#fff}.tyk-toggle--success .tyk-toggle__list--single .tyk-toggle__item--active:hover,.tyk-toggle--success .tyk-toggle__list--separated .tyk-toggle__item--active:hover{background-color:#00b798;color:#fff}.tyk-toggle--danger .tyk-toggle__item--active span{color:#fff}.tyk-toggle--danger .tyk-toggle__list--single .tyk-toggle__item--active,.tyk-toggle--danger .tyk-toggle__list--separated .tyk-toggle__item--active{background-color:#ff6c7d;color:#fff;border:2px solid rgba(0,0,0,0)}.tyk-toggle--danger .tyk-toggle__list--single .tyk-toggle__item--active:hover,.tyk-toggle--danger .tyk-toggle__list--separated .tyk-toggle__item--active:hover{background-color:#ff6c7d;color:#fff}.tyk-toggle--warning .tyk-toggle__item--active span{color:#505071}.tyk-toggle--warning .tyk-toggle__list--single .tyk-toggle__item--active,.tyk-toggle--warning .tyk-toggle__list--separated .tyk-toggle__item--active{background-color:#d6b218;color:#505071;border:2px solid rgba(0,0,0,0)}.tyk-toggle--warning .tyk-toggle__list--single .tyk-toggle__item--active:hover,.tyk-toggle--warning .tyk-toggle__list--separated .tyk-toggle__item--active:hover{background-color:#d6b218;color:#505071}.tyk-toggle--primary-gradient .tyk-toggle__item--active span{color:#fff}.tyk-toggle--primary-gradient .tyk-toggle__list--single .tyk-toggle__item--active,.tyk-toggle--primary-gradient .tyk-toggle__list--separated .tyk-toggle__item--active{border-image:linear-gradient(to right, #A2A2CC, #505071, #A2A2CC) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #A2A2CC, #505071, #A2A2CC);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-toggle--primary-gradient .tyk-toggle__list--single .tyk-toggle__item--active span,.tyk-toggle--primary-gradient .tyk-toggle__list--separated .tyk-toggle__item--active span{color:#fff}.tyk-toggle--success-gradient .tyk-toggle__item--active span{color:#fff}.tyk-toggle--success-gradient .tyk-toggle__list--single .tyk-toggle__item--active,.tyk-toggle--success-gradient .tyk-toggle__list--separated .tyk-toggle__item--active{border-image:linear-gradient(to right, #00d9ba, #00B798, #00d9ba) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #00d9ba, #00B798, #00d9ba);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-toggle--success-gradient .tyk-toggle__list--single .tyk-toggle__item--active span,.tyk-toggle--success-gradient .tyk-toggle__list--separated .tyk-toggle__item--active span{color:#fff}.tyk-toggle--danger-gradient .tyk-toggle__item--active span{color:#fff}.tyk-toggle--danger-gradient .tyk-toggle__list--single .tyk-toggle__item--active,.tyk-toggle--danger-gradient .tyk-toggle__list--separated .tyk-toggle__item--active{border-image:linear-gradient(to right, #FF6C7D, #EA4766, #FF6C7D) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #FF6C7D, #EA4766, #FF6C7D);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-toggle--danger-gradient .tyk-toggle__list--single .tyk-toggle__item--active span,.tyk-toggle--danger-gradient .tyk-toggle__list--separated .tyk-toggle__item--active span{color:#fff}.tyk-toggle--warning-gradient .tyk-toggle__item--active span{color:#fff}.tyk-toggle--warning-gradient .tyk-toggle__list--single .tyk-toggle__item--active,.tyk-toggle--warning-gradient .tyk-toggle__list--separated .tyk-toggle__item--active{border-image:linear-gradient(to right, #FFE885, #D6B218, #FFE885) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #FFE885, #D6B218, #FFE885);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#505071}.tyk-toggle--warning-gradient .tyk-toggle__list--single .tyk-toggle__item--active span,.tyk-toggle--warning-gradient .tyk-toggle__list--separated .tyk-toggle__item--active span{color:#fff}.tyk-toggle__item{color:#fff;text-transform:uppercase;z-index:2;border:2px solid rgba(0,0,0,0)}.tyk-toggle__item:first-child{border-top-left-radius:25px;border-bottom-left-radius:25px}.tyk-toggle__item:last-child{border-top-right-radius:25px;border-bottom-right-radius:25px}.tyk-toggle__list--separated .tyk-toggle__item{background:tyk-toggle__list--separated;border-radius:25px;margin-bottom:5px;margin-top:5px;margin-right:10px}.tyk-toggle__list--separated .tyk-toggle__item:last-child{margin-right:0}.tyk-toggle__item input{display:none}.tyk-toggle__item label{cursor:pointer;font-family:"OpenSans-Bold";position:relative;margin:0;transition:all .2s ease}.tyk-toggle__list--single .tyk-toggle__item label{padding-left:45px}.tyk-toggle__list--single .tyk-toggle__item--active label{padding-left:25px;padding-right:45px}.tyk-toggle__list--single .tyk-toggle__item--active label .tyk-toggle__item-notch{left:calc(100% - 35px)}.tyk-toggle--on-dark .tyk-toggle__item:not(.tyk-toggle__item--active){color:#505071}.tyk-toggle--on-dark .tyk-toggle__item-notch--single{background:#ededf9}.tyk-toggle--sm label{padding:calc(3px + 2px) calc(15px + 2px);font-size:12px;line-height:16px;border-radius:20px}.tyk-toggle--sm .tyk-toggle__list--single label{padding-left:35px}.tyk-toggle--sm .tyk-toggle__list--single .tyk-toggle__item--active label{padding-left:17px;padding-right:35px}.tyk-toggle--sm .tyk-toggle__list--single .tyk-toggle__item--active label .tyk-toggle__item-notch{left:calc(100% - 27px)}.tyk-toggle--md label{padding:calc(8px + 2px) calc(23px + 2px);font-size:14px;line-height:16px;border-radius:20px}.tyk-toggle--lg label{padding:calc(13px + 2px) calc(23px + 2px);font-size:14px;line-height:16px;border-radius:20px}.tyk-toggle--lg .tyk-toggle__list--single label{padding-left:45px}.tyk-toggle--lg .tyk-toggle__list--single .tyk-toggle__item--active label{padding-left:25px;padding-right:45px}.tyk-toggle--lg .tyk-toggle__list--single .tyk-toggle__item--active label .tyk-toggle__item-notch{left:calc(100% - 43px)}.tyk-toggle__item-notch{border-radius:25px;bottom:2px;position:absolute;transition:all .2s ease;top:2px}.tyk-toggle__item-notch--single{background:#fff;left:2px;width:32px}.tyk-toggle--sm .tyk-toggle__item-notch--single{width:24px}.tyk-toggle--lg .tyk-toggle__item-notch--single{width:40px}.tyk-toggle__notch{border-radius:25px;left:0;position:absolute;bottom:4px;top:4px;transition:all .2s ease;width:100px;z-index:1}.tyk-toggle--default .tyk-toggle__notch{background-color:#36364c;color:#fff;border:2px solid rgba(0,0,0,0)}.tyk-toggle--default .tyk-toggle__notch:hover{background-color:#36364c;color:#fff}.tyk-toggle--primary .tyk-toggle__notch{background-color:#a2a2cc;color:#fff;border:2px solid rgba(0,0,0,0)}.tyk-toggle--primary .tyk-toggle__notch:hover{background-color:#a2a2cc;color:#fff}.tyk-toggle--success .tyk-toggle__notch{background-color:#00d9ba;color:#fff;border:2px solid rgba(0,0,0,0)}.tyk-toggle--success .tyk-toggle__notch:hover{background-color:#00d9ba;color:#fff}.tyk-toggle--danger .tyk-toggle__notch{background-color:#ff6c7d;color:#fff;border:2px solid rgba(0,0,0,0)}.tyk-toggle--danger .tyk-toggle__notch:hover{background-color:#ff6c7d;color:#fff}.tyk-toggle--warning .tyk-toggle__notch{background-color:#d6b218;color:#505071;border:2px solid rgba(0,0,0,0)}.tyk-toggle--warning .tyk-toggle__notch:hover{background-color:#d6b218;color:#505071}.tyk-toggle--primary-gradient .tyk-toggle__notch{border-image:linear-gradient(to right, #A2A2CC, #505071, #A2A2CC) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #A2A2CC, #505071, #A2A2CC);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-toggle--success-gradient .tyk-toggle__notch{border-image:linear-gradient(to right, #00d9ba, #00B798, #00d9ba) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #00d9ba, #00B798, #00d9ba);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-toggle--danger-gradient .tyk-toggle__notch{border-image:linear-gradient(to right, #FF6C7D, #EA4766, #FF6C7D) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #FF6C7D, #EA4766, #FF6C7D);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-toggle--warning-gradient .tyk-toggle__notch{border-image:linear-gradient(to right, #FFE885, #D6B218, #FFE885) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #FFE885, #D6B218, #FFE885);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#505071}.empty-toggle{padding:1px}.string-builder{position:relative;display:block}.string-builder__input{word-break:break-all;resize:none;overflow:hidden;background:rgba(0,0,0,0);position:absolute;border:none;font:inherit;display:block;z-index:1;width:100%;padding:0px;width:calc(100% - 35px)}.string-builder__input:focus,.string-builder__input:active{border:none;outline:none}.string-builder__styled{font:inherit;position:absolute;pointer-events:none;width:calc(100% - 35px);color:rgba(0,0,0,0);z-index:2;border:none;word-wrap:break-word;word-break:break-all}.string-builder__disabled{background-color:#ededf9 !important;color:#505071;cursor:not-allowed}.url-builder__options_name{font-weight:10px}.url-builder__options_description{color:gray}.string-builder-dropdown{display:flex;flex-direction:column;border:2px solid #c3c3e5;background-color:#fff}.string-builder-dropdown.tyk-form-group--rounded-corners{border-radius:18px}.string-builder-dropdown .string-builder-search{background-color:#fff;position:sticky;top:0;padding:10px 20px}.string-builder-dropdown .string-builder-search+.string-builder-list{border-top:1px solid #c3c3e5}.string-builder-dropdown .string-builder-list{max-height:255px}.string-builder-dropdown .string-builder-list li{cursor:pointer;padding:9px 20px;transition:all .2s;font-family:"OpenSans-SemiBold"}.string-builder-dropdown .string-builder-list li:hover,.string-builder-dropdown .string-builder-list li.active{background-color:#c3c3e5}.string-builder-dropdown .string-builder-list li+li{border-top:1px solid #c3c3e5}.string-builder-dropdown .string-builder-list li i{margin-right:5px}.string-builder-dropdown .string-builder-list li .item-name{overflow:hidden;text-overflow:ellipsis;line-height:16px}.invalid_token{box-shadow:0px 0px 0px 1px #ea4766 inset;border-radius:5px;background:#ffbbc5;color:#ea4766;padding:4px;pointer-events:all}.invalid_token .invalid_token--icon{margin-left:2px;color:#ea4766}.string_builder_trigger{background-color:#fff;border-radius:5px;padding:1px 6px;margin:0px 4px}.string-builder-footer>.tyk-form-control__error-message{padding:0px !important}.string-builder-footer>.tyk-form-control__help-block{padding:0px !important}.string-builder-search{padding-right:10px}.default-option-name{color:green}.data_source_argument{color:pink}.data_source_object{color:#8a2be2}*{box-sizing:border-box}body{background-color:#e1e1e1;color:#505071;font-size:14px;line-height:19px;font-family:"OpenSans-regular"}.tyk-main-wrapper{display:flex;flex-wrap:nowrap}.tyk-main-content-wrapper{flex:1}.well{background:rgba(0,0,0,0);border:2px solid #c3c3e5;border-radius:18px;box-shadow:none}.well.has-error{border-color:#ff6c7d}.title-medium{font-family:"OpenSans-SemiBold";color:#36364c;font-size:16px}.right-align{text-align:right !important}.left-align{text-align:left !important}.center-align{text-align:center !important}.left{float:left !important}.right{float:right !important}.hide{display:none !important}.no-margin{margin:0 !important}.no-margin-bottom{margin-bottom:0 !important}.no-margin-top{margin-top:0 !important}.no-margin-right{margin-right:0 !important}.no-margin-left{margin-right:0 !important}.disabled-section{color:#c3c3e5}.top-buffer-large{margin-top:20px !important}.top-buffer-small{margin-top:5px !important}.top-buffer-medium{margin-top:10px !important}.bottom-buffer-large{margin-bottom:20px !important}.bottom-buffer-small{margin-bottom:5px !important}.bottom-buffer-medium{margin-bottom:10px !important}.right-buffer-large{margin-right:20px !important}.right-buffer-small{margin-right:5px !important}.right-buffer-medium{margin-right:10px !important}.left-buffer-large{margin-left:20px !important}.left-buffer-small{margin-left:5px !important}.left-buffer-medium{margin-left:10px !important}.word-wrap{word-wrap:break-word;word-break:break-all}.clear-left{clear:left}.flex-container{display:flex}.vertical-center-align{align-items:center}.right-align-controls{align-items:center;display:flex;margin-left:auto}.inline-label{margin-right:15px}.nowrap{white-space:nowrap} /*# sourceMappingURL=tyk-ui.css.map*/ \ No newline at end of file diff --git a/lib/tyk-ui.css.map b/lib/tyk-ui.css.map index c534b113..5cc5b4a2 100644 --- a/lib/tyk-ui.css.map +++ b/lib/tyk-ui.css.map @@ -1 +1 @@ -{"version":3,"file":"tyk-ui.css","mappings":"AAAA,KAAK,KAAK,IAAI,KAAK,OAAO,OAAO,OAAO,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,WAAW,IAAI,EAAE,KAAK,QAAQ,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,EAAE,EAAE,KAAK,MAAM,OAAO,OAAO,IAAI,IAAI,GAAG,IAAI,EAAE,EAAE,EAAE,OAAO,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,SAAS,KAAK,MAAM,OAAO,MAAM,QAAQ,MAAM,MAAM,MAAM,GAAG,GAAG,GAAG,QAAQ,MAAM,OAAO,QAAQ,MAAM,OAAO,WAAW,OAAO,OAAO,OAAO,KAAK,IAAI,OAAO,KAAK,QAAQ,QAAQ,KAAK,KAAK,MAAM,MAArZ,OCAA,EDAA,QCCE,EACA,SACA,eACA,aACA,uBACA,+EAKF,aACE,MAEF,aACE,OAEF,eACE,cAEF,WACE,oCAGA,WACE,YACA,kBAGF,WACE,YACA,OAEJ,yBACE,gBACA,YChCF,iBFHA,OGiIiB,MD5Hf,ED8BA,UC9BA,iBFLF,QEQA,MAEE,UAGF,aACE,sBACA,gBACA,cACA,mBACA,eACA,kBACA,uBACA,EAXA,OAWA,YFrBF,OEuBE,CACE,EAdF,OAcE,qBFxBJ,OE2BE,EACE,UACA,EAnBF,OAmBE,kBAGF,0BACE,UAIJ,4BACE,sBACA,cACA,YACA,6BACA,iBCsFY,uBDpFZ,EAXE,OAWF,YAEA,cACE,EAvBA,oBAuBA,CAdA,QFjCJ,OEkDE,CACE,EAlBA,OAkBA,kBAGF,6BACE,EAtBA,OAsBA,uBAGF,mBACE,EA1BA,OA0BA,oBAGF,qBACE,EA9BA,OA8BA,uBAGF,iBACE,EAlCA,OAkCA,yBAGF,mBACE,EAtCA,OAsCA,wBAGF,kBACE,uCAQF,eE9BE,2BACE,yBACA,uBAGF,cACE,gBANF,sCACE,oCACA,uBAGF,yBACE,gBANF,uCACE,qCACA,uBAGF,0BACE,gBANF,4BACE,0BACA,uBAGF,eACE,gBANF,uCACE,qCACA,uBAGF,0BACE,gBANF,uCACE,qCACA,uBAGF,0BACE,gBANF,4BACE,0BACA,uBAGF,eACE,gBANF,uCACE,qCACA,uBAGF,0BACE,gBANF,uCACE,qCACA,uBAGF,0BACE,gBANF,4BACE,0BACA,uBAGF,eACE,iBANF,uCACE,qCACA,wBAGF,0BACE,iBANF,uCACE,qCACA,wBAGF,0BACE,iBANF,6BACE,2BACA,wBAGF,gBACE,+DFwBJ,eE9BE,2BACE,yBACA,uBAGF,cACE,gBANF,sCACE,oCACA,uBAGF,yBACE,gBANF,uCACE,qCACA,uBAGF,0BACE,gBANF,4BACE,0BACA,uBAGF,eACE,gBANF,uCACE,qCACA,uBAGF,0BACE,gBANF,uCACE,qCACA,uBAGF,0BACE,gBANF,4BACE,0BACA,uBAGF,eACE,gBANF,uCACE,qCACA,uBAGF,0BACE,gBANF,uCACE,qCACA,uBAGF,0BACE,gBANF,4BACE,0BACA,uBAGF,eACE,iBANF,uCACE,qCACA,wBAGF,0BACE,iBANF,uCACE,qCACA,wBAGF,0BACE,iBANF,6BACE,2BACA,wBAGF,gBACE,6DFwBJ,eE9BE,2BACE,yBACA,uBAGF,cACE,gBANF,sCACE,oCACA,uBAGF,yBACE,gBANF,uCACE,qCACA,uBAGF,0BACE,gBANF,4BACE,0BACA,uBAGF,eACE,gBANF,uCACE,qCACA,uBAGF,0BACE,gBANF,uCACE,qCACA,uBAGF,0BACE,gBANF,4BACE,0BACA,uBAGF,eACE,gBANF,uCACE,qCACA,uBAGF,0BACE,gBANF,uCACE,qCACA,uBAGF,0BACE,gBANF,4BACE,0BACA,uBAGF,eACE,iBANF,uCACE,qCACA,wBAGF,0BACE,iBANF,uCACE,qCACA,wBAGF,0BACE,iBANF,6BACE,2BACA,wBAGF,gBACE,uCFwBJ,eE9BE,2BACE,yBACA,uBAGF,cACE,gBANF,sCACE,oCACA,uBAGF,yBACE,gBANF,uCACE,qCACA,uBAGF,0BACE,gBANF,4BACE,0BACA,uBAGF,eACE,gBANF,uCACE,qCACA,uBAGF,0BACE,gBANF,uCACE,qCACA,uBAGF,0BACE,gBANF,4BACE,0BACA,uBAGF,eACE,gBANF,uCACE,qCACA,uBAGF,0BACE,gBA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,yBJ+EM,EInEJ,uBJmEI,EI7EJ,gBJ6EI,YALA,uBAKA,CIjCF,uBJiCE,EI/EN,yBJ+EM,EItEN,eJsEM,EI7EJ,gBJ6EI,YALA,uBAKA,0BIjCF,uBJiCE,EI/EN,yBJ+EM,EI7EJ,gBJ6EI,eIjCF,uBJiCE,EI/EN,yBJgFQ,EIpEN,uBJwEE,EIlFF,gBJkFE,eItCA,uBJsCA,EIpFJ,yBJoFI,EI3EJ,eJ2EI,EIlFF,gBJkFE,0BItCA,uBJsCA,EIpFJ,yBJoFI,EIlFF,gBJkFE,wBItCA,uBJsCA,EIpFJ,yBJqFM,EIzEJ,uBJ4EE,EItFF,gBJsFE,wBI1CA,uBJ0CA,EIxFJ,yBJwFI,EI/EJ,eJ+EI,EItFF,gBJsFE,mCI1CA,uBJ0CA,EIxFJ,yBJwFI,EItFF,gBJsFE,yBI1CA,uBJ0CA,EIxFJ,yBJyFM,EI7EJ,uBJgFE,EI1FF,gBJ0FE,yBI9CA,uBJ8CA,EI5FJ,yBJ4FI,EInFJ,eJmFI,EI1FF,gBJ0FE,oCI9CA,uBJ8CA,6BAlBE,uBAkBF,yEACE,IAKF,6BIpDA,uBJoDA,6BACE,CAzBA,uBA0BA,gCACA,+BACA,WAKF,+FACE,EI5GN,yBJ6GM,EI3GJ,iBJ4GI,CAHF,uBAGE,EI9GN,yBAgEE,EApDA,uBJqDA,EI/DA,iBJiEA,CAwCE,uBAxCF,EInEF,yBJmEE,EI1DF,eJ0DE,EIjEA,iBJiEA,wCAwCE,uBAxCF,EInEF,yBJmEE,EIjEA,gBJiEA,YAwCE,uBAxCF,EInEF,yBJsEI,EI1DF,uBJ6DE,EIvEF,gBJuEE,YAkCA,uBAlCA,EIzEJ,yBJyEI,EIhEJ,eJgEI,EIvEF,gBJuEE,+FAkCA,uBAlCA,EIzEJ,yBJyEI,EIvEF,gBJwEI,mCACA,CAgCF,uBA/BE,EI5EN,yBJ+EM,EInEJ,uBJmEI,EI7EJ,gBJ6EI,YALA,uBAKA,CA4BF,uBA5BE,EI/EN,yBJ+EM,EItEN,eJsEM,EI7EJ,gBJ6EI,YALA,uBAKA,0BA4BF,uBA5BE,EI/EN,yBJ+EM,EI7EJ,gBJ6EI,eA4BF,uBA5BE,EI/EN,yBJgFQ,EIpEN,uBJwEE,EIlFF,gBJkFE,eAuBA,uBAvBA,EIpFJ,yBJoFI,EI3EJ,eJ2EI,EIlFF,gBJkFE,0BAuBA,uBAvBA,EIpFJ,yBJoFI,EIlFF,gBJkFE,wBAuBA,uBAvBA,EIpFJ,yBJqFM,EIzEJ,uBJ4EE,EItFF,gBJsFE,wBAmBA,uBAnBA,EIxFJ,yBJwFI,EI/EJ,eJ+EI,EItFF,gBJsFE,mCAmBA,uBAnBA,EIxFJ,yBJwFI,EItFF,gBJsFE,yBAmBA,uBAnBA,EIxFJ,yBJyFM,EI7EJ,uBJgFE,EI1FF,gBJ0FE,yBAeA,uBAfA,EI5FJ,yBJ4FI,EInFJ,eJmFI,EI1FF,gBJ0FE,oCAeA,uBAfA,6BAlBE,uBAkBF,yEACE,IAKF,6BASA,uBATA,6BACE,CAzBA,uBA0BA,gCACA,+BACA,WAKF,+FACE,EI5GN,yBJ6GM,EI3GJ,iBJ4GI,CAHF,uBAGE,EI9GN,yBAsEE,EA1DA,uBJqDA,EI/DA,iBJiEA,CAwCE,uBAxCF,EInEF,yBJmEE,EI1DF,eJ0DE,EIjEA,iBJiEA,wCAwCE,uBAxCF,EInEF,yBJmEE,EIjEA,gBJiEA,YAwCE,uBAxCF,EInEF,yBJsEI,EI1DF,uBJ6DE,EIvEF,gBJuEE,YAkCA,uBAlCA,EIzEJ,yBJyEI,EIhEJ,eJgEI,EIvEF,gBJuEE,+FAkCA,uBAlCA,EIzEJ,yBJyEI,EIvEF,gBJwEI,mCACA,CAgCF,uBA/BE,EI5EN,yBJ+EM,EInEJ,uBJmEI,EI7EJ,gBJ6EI,YALA,uBAKA,CA4BF,uBA5BE,EI/EN,yBJ+EM,EItEN,eJsEM,EI7EJ,gBJ6EI,YALA,uBAKA,0BA4BF,uBA5BE,EI/EN,yBJ+EM,EI7EJ,gBJ6EI,eA4BF,uBA5BE,EI/EN,yBJgFQ,EIpEN,uBJwEE,EIlFF,gBJkFE,eAuBA,uBAvBA,EIpFJ,yBJoFI,EI3EJ,eJ2EI,EIlFF,gBJkFE,0BAuBA,uBAvBA,EIpFJ,yBJoFI,EIlFF,gBJkFE,wBAuBA,uBAvBA,EIpFJ,yBJqFM,EIzEJ,uBJ4EE,EItFF,gBJsFE,wBAmBA,uBAnBA,EIxFJ,yBJwFI,EI/EJ,eJ+EI,EItFF,gBJsFE,mCAmBA,uBAnBA,EIxFJ,yBJwFI,EItFF,gBJsFE,yBAmBA,uBAnBA,EIxFJ,yBJyFM,EI7EJ,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,aCnBN,CDuBM,UCvBN,QDmBM,aCnBN,CDuBM,QCvBN,QDmBM,aCnBN,CDuBM,QCvBN,eDmBM,aCnBN,CDuBM,UCvBN,eDmBM,aCnBN,CDuBM,QCvBN,eDmBM,aCnBN,CDuBM,QCvBN,eDmBM,aCnBN,CDuBM,UCvBN,eDmBM,aCnBN,CDuBM,QCvBN,2EhCgBE,agChBF,sBhCgBE,YgChBF,ErCgCE,WqChCF,ChCgBE,YgChBF,EhCgBE,agChBF,ChCgBE,YgChBF,EhCkBE,WgCjBA,sCACA,oBCEF,yBACE,UAEA,iC7CPF,Q6COE,WjCSA,aiCTA,cAGE,6BAGF,SACE,QACA,EjCCF,YiCEA,atCcA,WsCbE,WACA,YAGF,kB7CvBF,c6CwBI,KAGF,ejCXA,YiCYE,CAVF,WAaA,CtCCA,UsCDA,OACE,CjChBF,YiCgBE,CAdF,WAiBA,CtCHA,UsCGA,SjCnBA,YiCoBE,CAlBF,WAmBE,CtCLF,UsCKE,cACA,CjCtBF,YiCsBE,CApBF,WAqBE,CtCPF,UsCSE,sH7CzCJ,c6CyCI,iDAIE,WACA,mBACA,Y1CKO,gB0CCX,gBACA,K7CtDF,O6CuDE,IADA,IACA,gB7CvDF,Q6CwDE,gBAfE,iBAeF,0BACA,eAhBE,kBAgBF,CjBpDA,U5BLF,O6C0DE,GAjBE,iBAkBF,CjB3CA,OiB4CA,QACA,oBACA,OACA,iBAEA,EAxBE,iBAwBF,oBACE,cAGF,qCACE,SAGF,WAhCE,iBAiCA,eACA,WACA,EAnCA,iBAsCF,wBACE,aACA,KAxCA,iBAwCA,aACA,QACA,sBACA,KAEA,e7CtFJ,Q6CsFI,wBAIA,0BACE,KACA,YAnDF,iBAyDJ,yBACE,EA1DE,iBA2DF,MACA,kBACA,cACA,eACA,iCACA,KAhEE,iBAmEF,qCACE,gBAGF,MA5GF,sBA6GI,CjBjGF,OiBiGE,SACA,QACA,gCAEA,kBAGF,0BACE,2BACA,MAFF,wBAMF,CtCmDI,esCnDJ,cACE,oCC3HA,YACE,GD0HF,iCCrHA,qBACA,EAMA,QAJA,EAFA,IAMA,QAJA,I9CbF,Q8CoBI,gBDoGF,wBCnGI,YACA,cDkGJ,uBCjGI,kBACA,MDgGJ,uBChGI,C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E,MACA,aAGF,YAtBE,qBAuBA,K7BtFJ,Q6BsFI,gBACA,OACA,CAzBA,qBA0BA,6BAEA,iCACE,QACA,eACA,OAGF,mCACE,QDpGN,gBCuGI,C1CyEF,ePjLJ,OiDwGM,GDvGJ,gBCwGM,gCAKN,QACE,iBACA,eACA,QDhHF,gBCiHE,CATI,+BAYN,C1CrFA,W0CqFA,MACE,QAGF,iBDxHA,gBCwHA,CAhBM,+BAkBJ,C1C3FF,U0C2FE,YACA,YAEA,GVZA,eUYA,kCjD9HJ,OiD+HM,OjD/HN,QiDgIM,GVdF,eUgBE,oCVhBF,eUgBE,eACE,8BC9HN,+BACA,IACA,EX2GE,eW1GF,cAEA,+BAEE,gCAGF,MXmGE,eWlGA,KlDhBJ,OkDgBI,QXkGA,eWjGA,uBAGF,uCACE,6BACA,0BAGF,KlDzBF,QkDyBE,SACE,EXwFA,eWrFF,8BACE,OACA,EXmFA,eWlFA,CrBhBE,OqBiBF,gCACA,WACA,C1CoMF,U0CpME,MACA,mBACA,YCpCwB,CDsCxB,8BACE,CADF,uBAKF,+BACE,8BlD7CJ,QoDIE,uBACE,WACA,cAIA,uDACE,uBACA,SAIJ,oCACE,WCjBJ,MDgBE,oBCfA,6ErDDF,QqDEE,GDcA,oBCdA,ECFF,MDCE,uCCCA,C/BYE,Y+BVF,iBFYA,oBEZA,QDHA,uCCIE,kBACA,kBtDNJ,OsDQI,GFQF,oBERE,QDPF,sCCQI,OAGF,+CtDZJ,QsDYI,WFIF,oBEHI,QDZJ,sCCgBE,mFAEE,KACA,gBACA,iBAEA,U9ClBJ,iB8CkBI,a1CLJ,W0CKI,+CACE,cAMJ,oD1CZF,U0CaI,qBC/BN,eACE,E3CiBA,U4ChBF,CF6BM,KE7BN,E5CgBE,W4CfA,YACA,G5CcA,U4CdA,cACA,mBACA,gBACA,8BACA,OAEA,iBACE,E5COF,W4CPE,CvBNF,kBuBSE,0BACE,kBAIJ,exDnBF,QwDoBI,aACA,e5CHF,U4CMA,CApBA,aAoBA,CvBnBA,kBuBoBE,aAGF,iB5CVA,U4CUA,EjDIA,WiDHE,C5CXF,U4CYE,E5CdF,a4CcE,C5CZF,U4CaE,E5CbF,W4CaE,YAEA,gCAIF,kDACE,6BAIF,sDALA,mBAQE,CAPA,4B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","sources":["webpack://@tyk-technologies/tyk-ui/./src/index.scss","webpack://@tyk-technologies/tyk-ui/./src/common/sass/reset.scss","webpack://@tyk-technologies/tyk-ui/./src/common/sass/grid.scss","webpack://@tyk-technologies/tyk-ui/./src/common/sass/variables.scss","webpack://@tyk-technologies/tyk-ui/./src/common/sass/mixins.scss","webpack://@tyk-technologies/tyk-ui/./src/common/sass/fontawesome.scss","webpack://@tyk-technologies/tyk-ui/./src/common/sass/tykon.scss","webpack://@tyk-technologies/tyk-ui/./src/common/sass/typography.scss","webpack://@tyk-technologies/tyk-ui/./src/common/sass/form.scss","webpack://@tyk-technologies/tyk-ui/./src/components/Accordion/sass/Accordion.scss","webpack://@tyk-technologies/tyk-ui/./src/components/Tooltip/sass/variables.scss","webpack://@tyk-technologies/tyk-ui/./src/components/Tooltip/sass/Tooltip.scss","webpack://@tyk-technologies/tyk-ui/./src/components/Button/sass/Button.scss","webpack://@tyk-technologies/tyk-ui/./src/components/Button/sass/mixins.scss","webpack://@tyk-technologies/tyk-ui/./src/components/Button/sass/variables.scss","webpack://@tyk-technologies/tyk-ui/./src/components/ButtonGroup/sass/ButtonGroup.scss","webpack://@tyk-technologies/tyk-ui/./src/components/Chart/sass/Chart.scss","webpack://@tyk-technologies/tyk-ui/./src/components/Collapsible/sass/Collapsible.scss","webpack://@tyk-technologies/tyk-ui/./src/components/CopyToClipboard/sass/CopyToClipboard.scss","webpack://@tyk-technologies/tyk-ui/./src/components/FixedWrapper/sass/FixedWrapper.scss","webpack://@tyk-technologies/tyk-ui/./src/components/FloatingContainer/sass/FloatingContainer.scss","webpack://@tyk-technologies/tyk-ui/./src/components/Icon/sass/Icon.scss","webpack://@tyk-technologies/tyk-ui/./src/components/InfiniteScroller/sass/InfiniteScroller.scss","webpack://@tyk-technologies/tyk-ui/./src/components/InfoNote/sass/InfoNote.scss","webpack://@tyk-technologies/tyk-ui/./src/components/Loader/sass/Loader.scss","webpack://@tyk-technologies/tyk-ui/./src/components/List/sass/List.scss","webpack://@tyk-technologies/tyk-ui/./src/components/Message/sass/Message.scss","webpack://@tyk-technologies/tyk-ui/./src/components/Message/sass/mixins.scss","webpack://@tyk-technologies/tyk-ui/./src/components/Modal/sass/Modal.scss","webpack://@tyk-technologies/tyk-ui/./src/components/Navigation/sass/Navigation.scss","webpack://@tyk-technologies/tyk-ui/./src/components/NavBar/sass/NavBar.scss","webpack://@tyk-technologies/tyk-ui/./src/components/NavBar/sass/variables.scss","webpack://@tyk-technologies/tyk-ui/./src/components/Panel/sass/Panel.scss","webpack://@tyk-technologies/tyk-ui/./src/components/Panel/sass/mixins.scss","webpack://@tyk-technologies/tyk-ui/./src/components/Panel/sass/variables.scss","webpack://@tyk-technologies/tyk-ui/./src/components/Pill/sass/Pill.scss","webpack://@tyk-technologies/tyk-ui/./src/components/RevealPanel/sass/RevealPanel.scss","webpack://@tyk-technologies/tyk-ui/./src/components/Sidebar/sass/Sidebar.scss","webpack://@tyk-technologies/tyk-ui/./src/components/Sidebar/sass/variables.scss","webpack://@tyk-technologies/tyk-ui/./src/components/Table/sass/Table.scss","webpack://@tyk-technologies/tyk-ui/./src/components/Tabs/sass/Tabs.scss","webpack://@tyk-technologies/tyk-ui/./src/components/Toast/sass/Toast.scss","webpack://@tyk-technologies/tyk-ui/./src/form/components/Combobox2/sass/Combobox.scss","webpack://@tyk-technologies/tyk-ui/./src/form/components/Checkbox/sass/Checkbox.scss","webpack://@tyk-technologies/tyk-ui/./src/form/components/DatePicker/sass/DatePicker.scss","webpack://@tyk-technologies/tyk-ui/./src/form/components/Dropdown/sass/Dropdown.scss","webpack://@tyk-technologies/tyk-ui/./src/form/components/EditableList/sass/EditableList.scss","webpack://@tyk-technologies/tyk-ui/./src/form/components/EditableList2/sass/EditableList2.scss","webpack://@tyk-technologies/tyk-ui/./src/form/components/FileInput/sass/FileInput.scss","webpack://@tyk-technologies/tyk-ui/./src/form/components/Multiselect/sass/Multiselect.scss","webpack://@tyk-technologies/tyk-ui/./src/form/components/Pagination/sass/Pagination.scss","webpack://@tyk-technologies/tyk-ui/./src/form/components/Pagination/sass/variables.scss","webpack://@tyk-technologies/tyk-ui/./src/form/components/Radio/sass/Radio.scss","webpack://@tyk-technologies/tyk-ui/./src/form/components/Select/sass/Select.scss","webpack://@tyk-technologies/tyk-ui/./src/form/components/SelectableList/sass/SelectableList.scss","webpack://@tyk-technologies/tyk-ui/./src/form/components/Textarea/sass/Textarea.scss","webpack://@tyk-technologies/tyk-ui/./src/form/components/Toggle/sass/Toggle.scss","webpack://@tyk-technologies/tyk-ui/./src/form/components/StringBuilder/sass/Stringbuilder.scss","webpack://@tyk-technologies/tyk-ui/./src/common/sass/layout.scss","webpack://@tyk-technologies/tyk-ui/./src/common/sass/texts.scss","webpack://@tyk-technologies/tyk-ui/./src/utils/css-helpers/helpers.scss"],"sourcesContent":["html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video{margin:0;padding:0;border:0;font-size:100%;font:inherit;vertical-align:baseline}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}body{line-height:1}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:before,blockquote:after{content:\"\";content:none}q:before,q:after{content:\"\";content:none}table{border-collapse:collapse;border-spacing:0}.container{max-width:1240px;margin:0 auto}.container,.container-fluid{padding:0 20px}.tyk-row{display:flex;box-sizing:border-box;list-style:none;flex:0 1 auto;flex-direction:row;flex-wrap:wrap;margin-left:-20px;width:calc(100% + 20px)}.tyk-row.no-gutters{margin:0}.tyk-row.tyk-row--gutterless{margin:0;width:100%}.tyk-row.tyk-row--reverse{flex-direction:row-reverse}.tyk-col{max-width:calc(100% - 20px);box-sizing:border-box;flex:0 0 auto;flex-grow:1;flex-basis:calc(100% - 20px);margin-left:20px;width:calc(100% - 20px)}.tyk-col:last-child{margin-right:0}.tyk-row--gutterless .tyk-col{margin:0}.tyk-col.tyk-col--reverse{flex-direction:column-reverse}.tyk-col.tyk-col--align-bottom{align-self:flex-end}.tyk-col.tyk-col--align-top{align-self:flex-start}.tyk-col.tyk-col--align-center{align-self:center}.tyk-col.tyk-col--align-baseline{align-self:baseline}.tyk-col.tyk-col--align-stretch{align-self:stretch}@media screen and (min-width: 1248px){.tyk-col--lg-0{flex-basis:calc(0% - 20px);max-width:calc(0% - 20px)}.tyk-col--offset-lg-0{margin-left:0%}.tyk-col--lg-1{flex-basis:calc(8.3333333333% - 20px);max-width:calc(8.3333333333% - 20px)}.tyk-col--offset-lg-1{margin-left:8.3333333333%}.tyk-col--lg-2{flex-basis:calc(16.6666666667% - 20px);max-width:calc(16.6666666667% - 20px)}.tyk-col--offset-lg-2{margin-left:16.6666666667%}.tyk-col--lg-3{flex-basis:calc(25% - 20px);max-width:calc(25% - 20px)}.tyk-col--offset-lg-3{margin-left:25%}.tyk-col--lg-4{flex-basis:calc(33.3333333333% - 20px);max-width:calc(33.3333333333% - 20px)}.tyk-col--offset-lg-4{margin-left:33.3333333333%}.tyk-col--lg-5{flex-basis:calc(41.6666666667% - 20px);max-width:calc(41.6666666667% - 20px)}.tyk-col--offset-lg-5{margin-left:41.6666666667%}.tyk-col--lg-6{flex-basis:calc(50% - 20px);max-width:calc(50% - 20px)}.tyk-col--offset-lg-6{margin-left:50%}.tyk-col--lg-7{flex-basis:calc(58.3333333333% - 20px);max-width:calc(58.3333333333% - 20px)}.tyk-col--offset-lg-7{margin-left:58.3333333333%}.tyk-col--lg-8{flex-basis:calc(66.6666666667% - 20px);max-width:calc(66.6666666667% - 20px)}.tyk-col--offset-lg-8{margin-left:66.6666666667%}.tyk-col--lg-9{flex-basis:calc(75% - 20px);max-width:calc(75% - 20px)}.tyk-col--offset-lg-9{margin-left:75%}.tyk-col--lg-10{flex-basis:calc(83.3333333333% - 20px);max-width:calc(83.3333333333% - 20px)}.tyk-col--offset-lg-10{margin-left:83.3333333333%}.tyk-col--lg-11{flex-basis:calc(91.6666666667% - 20px);max-width:calc(91.6666666667% - 20px)}.tyk-col--offset-lg-11{margin-left:91.6666666667%}.tyk-col--lg-12{flex-basis:calc(100% - 20px);max-width:calc(100% - 20px)}.tyk-col--offset-lg-12{margin-left:100%}}@media screen and (min-width: 1024px)and (max-width: 1247px){.tyk-col--md-0{flex-basis:calc(0% - 20px);max-width:calc(0% - 20px)}.tyk-col--offset-md-0{margin-left:0%}.tyk-col--md-1{flex-basis:calc(8.3333333333% - 20px);max-width:calc(8.3333333333% - 20px)}.tyk-col--offset-md-1{margin-left:8.3333333333%}.tyk-col--md-2{flex-basis:calc(16.6666666667% - 20px);max-width:calc(16.6666666667% - 20px)}.tyk-col--offset-md-2{margin-left:16.6666666667%}.tyk-col--md-3{flex-basis:calc(25% - 20px);max-width:calc(25% - 20px)}.tyk-col--offset-md-3{margin-left:25%}.tyk-col--md-4{flex-basis:calc(33.3333333333% - 20px);max-width:calc(33.3333333333% - 20px)}.tyk-col--offset-md-4{margin-left:33.3333333333%}.tyk-col--md-5{flex-basis:calc(41.6666666667% - 20px);max-width:calc(41.6666666667% - 20px)}.tyk-col--offset-md-5{margin-left:41.6666666667%}.tyk-col--md-6{flex-basis:calc(50% - 20px);max-width:calc(50% - 20px)}.tyk-col--offset-md-6{margin-left:50%}.tyk-col--md-7{flex-basis:calc(58.3333333333% - 20px);max-width:calc(58.3333333333% - 20px)}.tyk-col--offset-md-7{margin-left:58.3333333333%}.tyk-col--md-8{flex-basis:calc(66.6666666667% - 20px);max-width:calc(66.6666666667% - 20px)}.tyk-col--offset-md-8{margin-left:66.6666666667%}.tyk-col--md-9{flex-basis:calc(75% - 20px);max-width:calc(75% - 20px)}.tyk-col--offset-md-9{margin-left:75%}.tyk-col--md-10{flex-basis:calc(83.3333333333% - 20px);max-width:calc(83.3333333333% - 20px)}.tyk-col--offset-md-10{margin-left:83.3333333333%}.tyk-col--md-11{flex-basis:calc(91.6666666667% - 20px);max-width:calc(91.6666666667% - 20px)}.tyk-col--offset-md-11{margin-left:91.6666666667%}.tyk-col--md-12{flex-basis:calc(100% - 20px);max-width:calc(100% - 20px)}.tyk-col--offset-md-12{margin-left:100%}}@media screen and (min-width: 769px)and (max-width:1023px){.tyk-col--sm-0{flex-basis:calc(0% - 20px);max-width:calc(0% - 20px)}.tyk-col--offset-sm-0{margin-left:0%}.tyk-col--sm-1{flex-basis:calc(8.3333333333% - 20px);max-width:calc(8.3333333333% - 20px)}.tyk-col--offset-sm-1{margin-left:8.3333333333%}.tyk-col--sm-2{flex-basis:calc(16.6666666667% - 20px);max-width:calc(16.6666666667% - 20px)}.tyk-col--offset-sm-2{margin-left:16.6666666667%}.tyk-col--sm-3{flex-basis:calc(25% - 20px);max-width:calc(25% - 20px)}.tyk-col--offset-sm-3{margin-left:25%}.tyk-col--sm-4{flex-basis:calc(33.3333333333% - 20px);max-width:calc(33.3333333333% - 20px)}.tyk-col--offset-sm-4{margin-left:33.3333333333%}.tyk-col--sm-5{flex-basis:calc(41.6666666667% - 20px);max-width:calc(41.6666666667% - 20px)}.tyk-col--offset-sm-5{margin-left:41.6666666667%}.tyk-col--sm-6{flex-basis:calc(50% - 20px);max-width:calc(50% - 20px)}.tyk-col--offset-sm-6{margin-left:50%}.tyk-col--sm-7{flex-basis:calc(58.3333333333% - 20px);max-width:calc(58.3333333333% - 20px)}.tyk-col--offset-sm-7{margin-left:58.3333333333%}.tyk-col--sm-8{flex-basis:calc(66.6666666667% - 20px);max-width:calc(66.6666666667% - 20px)}.tyk-col--offset-sm-8{margin-left:66.6666666667%}.tyk-col--sm-9{flex-basis:calc(75% - 20px);max-width:calc(75% - 20px)}.tyk-col--offset-sm-9{margin-left:75%}.tyk-col--sm-10{flex-basis:calc(83.3333333333% - 20px);max-width:calc(83.3333333333% - 20px)}.tyk-col--offset-sm-10{margin-left:83.3333333333%}.tyk-col--sm-11{flex-basis:calc(91.6666666667% - 20px);max-width:calc(91.6666666667% - 20px)}.tyk-col--offset-sm-11{margin-left:91.6666666667%}.tyk-col--sm-12{flex-basis:calc(100% - 20px);max-width:calc(100% - 20px)}.tyk-col--offset-sm-12{margin-left:100%}}@media screen and (max-width: 768px){.tyk-col--xs-0{flex-basis:calc(0% - 20px);max-width:calc(0% - 20px)}.tyk-col--offset-xs-0{margin-left:0%}.tyk-col--xs-1{flex-basis:calc(8.3333333333% - 20px);max-width:calc(8.3333333333% - 20px)}.tyk-col--offset-xs-1{margin-left:8.3333333333%}.tyk-col--xs-2{flex-basis:calc(16.6666666667% - 20px);max-width:calc(16.6666666667% - 20px)}.tyk-col--offset-xs-2{margin-left:16.6666666667%}.tyk-col--xs-3{flex-basis:calc(25% - 20px);max-width:calc(25% - 20px)}.tyk-col--offset-xs-3{margin-left:25%}.tyk-col--xs-4{flex-basis:calc(33.3333333333% - 20px);max-width:calc(33.3333333333% - 20px)}.tyk-col--offset-xs-4{margin-left:33.3333333333%}.tyk-col--xs-5{flex-basis:calc(41.6666666667% - 20px);max-width:calc(41.6666666667% - 20px)}.tyk-col--offset-xs-5{margin-left:41.6666666667%}.tyk-col--xs-6{flex-basis:calc(50% - 20px);max-width:calc(50% - 20px)}.tyk-col--offset-xs-6{margin-left:50%}.tyk-col--xs-7{flex-basis:calc(58.3333333333% - 20px);max-width:calc(58.3333333333% - 20px)}.tyk-col--offset-xs-7{margin-left:58.3333333333%}.tyk-col--xs-8{flex-basis:calc(66.6666666667% - 20px);max-width:calc(66.6666666667% - 20px)}.tyk-col--offset-xs-8{margin-left:66.6666666667%}.tyk-col--xs-9{flex-basis:calc(75% - 20px);max-width:calc(75% - 20px)}.tyk-col--offset-xs-9{margin-left:75%}.tyk-col--xs-10{flex-basis:calc(83.3333333333% - 20px);max-width:calc(83.3333333333% - 20px)}.tyk-col--offset-xs-10{margin-left:83.3333333333%}.tyk-col--xs-11{flex-basis:calc(91.6666666667% - 20px);max-width:calc(91.6666666667% - 20px)}.tyk-col--offset-xs-11{margin-left:91.6666666667%}.tyk-col--xs-12{flex-basis:calc(100% - 20px);max-width:calc(100% - 20px)}.tyk-col--offset-xs-12{margin-left:100%}}@font-face{font-family:\"OpenSans-Bold\";src:url(\"../fonts/OpenSans-Bold.woff2\") format(\"woff2\"),url(\"../fonts/OpenSans-Bold.woff\") format(\"woff\");font-weight:normal;font-style:normal}@font-face{font-family:\"OpenSans-SemiBold\";src:url(\"../fonts/OpenSans-SemiBold.woff2\") format(\"woff2\"),url(\"../fonts/OpenSans-SemiBold.woff\") format(\"woff\");font-weight:normal;font-style:normal}@font-face{font-family:\"OpenSans-Regular\";src:url(\"../fonts/OpenSans-Regular.woff2\") format(\"woff2\"),url(\"../fonts/OpenSans-Regular.woff\") format(\"woff\");font-weight:normal;font-style:normal}@font-face{font-family:\"smoolthan_bold\";src:url(\"../fonts/smoolthan_bold-webfont.woff2\") format(\"woff2\"),url(\"../fonts/smoolthan_bold-webfont.woff\") format(\"woff\");font-weight:normal;font-style:normal}@font-face{font-family:\"smoolthan_medium\";src:url(\"../fonts/smoolthan_medium-webfont.woff2\") format(\"woff2\"),url(\"../fonts/smoolthan_medium-webfont.woff\") format(\"woff\");font-weight:normal;font-style:normal}@font-face{font-family:\"smoolthan_regular\";src:url(\"../fonts/smoolthan_regular-webfont.woff2\") format(\"woff2\"),url(\"../fonts/smoolthan_regular-webfont.woff\") format(\"woff\");font-weight:normal;font-style:normal}@font-face{font-family:\"tykon\";src:url(\"../fonts/tykon.woff2\") format(\"woff2\"),url(\"../fonts/tykon.woff\") format(\"woff\");font-weight:normal;font-style:normal}/*!\n * Font Awesome Free 5.5.0 by @fontawesome - https://fontawesome.com\n * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)\n */.fa,.fas,.far,.fal,.fab{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-0.0667em}.fa-xs{font-size:.75em}.fa-sm{font-size:.875em}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:2.5em;padding-left:0}.fa-ul>li{position:relative}.fa-li{left:-2em;position:absolute;text-align:center;width:2em;line-height:inherit}.fa-border{border:solid .08em #eee;border-radius:.1em;padding:.2em .25em .15em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left,.fas.fa-pull-left,.far.fa-pull-left,.fal.fa-pull-left,.fab.fa-pull-left{margin-right:.3em}.fa.fa-pull-right,.fas.fa-pull-right,.far.fa-pull-right,.fal.fa-pull-right,.fab.fa-pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.fa-rotate-90{-ms-filter:\"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)\";-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:\"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)\";-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:\"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)\";-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:\"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)\";-webkit-transform:scale(-1, 1);transform:scale(-1, 1)}.fa-flip-vertical{-ms-filter:\"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)\";-webkit-transform:scale(1, -1);transform:scale(1, -1)}.fa-flip-horizontal.fa-flip-vertical{-ms-filter:\"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)\";-webkit-transform:scale(-1, -1);transform:scale(-1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{-webkit-filter:none;filter:none}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-500px:before{content:\"\"}.fa-accessible-icon:before{content:\"\"}.fa-accusoft:before{content:\"\"}.fa-acquisitions-incorporated:before{content:\"\"}.fa-ad:before{content:\"\"}.fa-address-book:before{content:\"\"}.fa-address-card:before{content:\"\"}.fa-adjust:before{content:\"\"}.fa-adn:before{content:\"\"}.fa-adversal:before{content:\"\"}.fa-affiliatetheme:before{content:\"\"}.fa-air-freshener:before{content:\"\"}.fa-algolia:before{content:\"\"}.fa-align-center:before{content:\"\"}.fa-align-justify:before{content:\"\"}.fa-align-left:before{content:\"\"}.fa-align-right:before{content:\"\"}.fa-alipay:before{content:\"\"}.fa-allergies:before{content:\"\"}.fa-amazon:before{content:\"\"}.fa-amazon-pay:before{content:\"\"}.fa-ambulance:before{content:\"\"}.fa-american-sign-language-interpreting:before{content:\"\"}.fa-amilia:before{content:\"\"}.fa-anchor:before{content:\"\"}.fa-android:before{content:\"\"}.fa-angellist:before{content:\"\"}.fa-angle-double-down:before{content:\"\"}.fa-angle-double-left:before{content:\"\"}.fa-angle-double-right:before{content:\"\"}.fa-angle-double-up:before{content:\"\"}.fa-angle-down:before{content:\"\"}.fa-angle-left:before{content:\"\"}.fa-angle-right:before{content:\"\"}.fa-angle-up:before{content:\"\"}.fa-angry:before{content:\"\"}.fa-angrycreative:before{content:\"\"}.fa-angular:before{content:\"\"}.fa-ankh:before{content:\"\"}.fa-app-store:before{content:\"\"}.fa-app-store-ios:before{content:\"\"}.fa-apper:before{content:\"\"}.fa-apple:before{content:\"\"}.fa-apple-alt:before{content:\"\"}.fa-apple-pay:before{content:\"\"}.fa-archive:before{content:\"\"}.fa-archway:before{content:\"\"}.fa-arrow-alt-circle-down:before{content:\"\"}.fa-arrow-alt-circle-left:before{content:\"\"}.fa-arrow-alt-circle-right:before{content:\"\"}.fa-arrow-alt-circle-up:before{content:\"\"}.fa-arrow-circle-down:before{content:\"\"}.fa-arrow-circle-left:before{content:\"\"}.fa-arrow-circle-right:before{content:\"\"}.fa-arrow-circle-up:before{content:\"\"}.fa-arrow-down:before{content:\"\"}.fa-arrow-left:before{content:\"\"}.fa-arrow-right:before{content:\"\"}.fa-arrow-up:before{content:\"\"}.fa-arrows-alt:before{content:\"\"}.fa-arrows-alt-h:before{content:\"\"}.fa-arrows-alt-v:before{content:\"\"}.fa-assistive-listening-systems:before{content:\"\"}.fa-asterisk:before{content:\"\"}.fa-asymmetrik:before{content:\"\"}.fa-at:before{content:\"\"}.fa-atlas:before{content:\"\"}.fa-atom:before{content:\"\"}.fa-audible:before{content:\"\"}.fa-audio-description:before{content:\"\"}.fa-autoprefixer:before{content:\"\"}.fa-avianex:before{content:\"\"}.fa-aviato:before{content:\"\"}.fa-award:before{content:\"\"}.fa-aws:before{content:\"\"}.fa-backspace:before{content:\"\"}.fa-backward:before{content:\"\"}.fa-balance-scale:before{content:\"\"}.fa-ban:before{content:\"\"}.fa-band-aid:before{content:\"\"}.fa-bandcamp:before{content:\"\"}.fa-barcode:before{content:\"\"}.fa-bars:before{content:\"\"}.fa-baseball-ball:before{content:\"\"}.fa-basketball-ball:before{content:\"\"}.fa-bath:before{content:\"\"}.fa-battery-empty:before{content:\"\"}.fa-battery-full:before{content:\"\"}.fa-battery-half:before{content:\"\"}.fa-battery-quarter:before{content:\"\"}.fa-battery-three-quarters:before{content:\"\"}.fa-bed:before{content:\"\"}.fa-beer:before{content:\"\"}.fa-behance:before{content:\"\"}.fa-behance-square:before{content:\"\"}.fa-bell:before{content:\"\"}.fa-bell-slash:before{content:\"\"}.fa-bezier-curve:before{content:\"\"}.fa-bible:before{content:\"\"}.fa-bicycle:before{content:\"\"}.fa-bimobject:before{content:\"\"}.fa-binoculars:before{content:\"\"}.fa-birthday-cake:before{content:\"\"}.fa-bitbucket:before{content:\"\"}.fa-bitcoin:before{content:\"\"}.fa-bity:before{content:\"\"}.fa-black-tie:before{content:\"\"}.fa-blackberry:before{content:\"\"}.fa-blender:before{content:\"\"}.fa-blender-phone:before{content:\"\"}.fa-blind:before{content:\"\"}.fa-blogger:before{content:\"\"}.fa-blogger-b:before{content:\"\"}.fa-bluetooth:before{content:\"\"}.fa-bluetooth-b:before{content:\"\"}.fa-bold:before{content:\"\"}.fa-bolt:before{content:\"\"}.fa-bomb:before{content:\"\"}.fa-bone:before{content:\"\"}.fa-bong:before{content:\"\"}.fa-book:before{content:\"\"}.fa-book-dead:before{content:\"\"}.fa-book-open:before{content:\"\"}.fa-book-reader:before{content:\"\"}.fa-bookmark:before{content:\"\"}.fa-bowling-ball:before{content:\"\"}.fa-box:before{content:\"\"}.fa-box-open:before{content:\"\"}.fa-boxes:before{content:\"\"}.fa-braille:before{content:\"\"}.fa-brain:before{content:\"\"}.fa-briefcase:before{content:\"\"}.fa-briefcase-medical:before{content:\"\"}.fa-broadcast-tower:before{content:\"\"}.fa-broom:before{content:\"\"}.fa-brush:before{content:\"\"}.fa-btc:before{content:\"\"}.fa-bug:before{content:\"\"}.fa-building:before{content:\"\"}.fa-bullhorn:before{content:\"\"}.fa-bullseye:before{content:\"\"}.fa-burn:before{content:\"\"}.fa-buromobelexperte:before{content:\"\"}.fa-bus:before{content:\"\"}.fa-bus-alt:before{content:\"\"}.fa-business-time:before{content:\"\"}.fa-buysellads:before{content:\"\"}.fa-calculator:before{content:\"\"}.fa-calendar:before{content:\"\"}.fa-calendar-alt:before{content:\"\"}.fa-calendar-check:before{content:\"\"}.fa-calendar-minus:before{content:\"\"}.fa-calendar-plus:before{content:\"\"}.fa-calendar-times:before{content:\"\"}.fa-camera:before{content:\"\"}.fa-camera-retro:before{content:\"\"}.fa-campground:before{content:\"\"}.fa-cannabis:before{content:\"\"}.fa-capsules:before{content:\"\"}.fa-car:before{content:\"\"}.fa-car-alt:before{content:\"\"}.fa-car-battery:before{content:\"\"}.fa-car-crash:before{content:\"\"}.fa-car-side:before{content:\"\"}.fa-caret-down:before{content:\"\"}.fa-caret-left:before{content:\"\"}.fa-caret-right:before{content:\"\"}.fa-caret-square-down:before{content:\"\"}.fa-caret-square-left:before{content:\"\"}.fa-caret-square-right:before{content:\"\"}.fa-caret-square-up:before{content:\"\"}.fa-caret-up:before{content:\"\"}.fa-cart-arrow-down:before{content:\"\"}.fa-cart-plus:before{content:\"\"}.fa-cat:before{content:\"\"}.fa-cc-amazon-pay:before{content:\"\"}.fa-cc-amex:before{content:\"\"}.fa-cc-apple-pay:before{content:\"\"}.fa-cc-diners-club:before{content:\"\"}.fa-cc-discover:before{content:\"\"}.fa-cc-jcb:before{content:\"\"}.fa-cc-mastercard:before{content:\"\"}.fa-cc-paypal:before{content:\"\"}.fa-cc-stripe:before{content:\"\"}.fa-cc-visa:before{content:\"\"}.fa-centercode:before{content:\"\"}.fa-certificate:before{content:\"\"}.fa-chair:before{content:\"\"}.fa-chalkboard:before{content:\"\"}.fa-chalkboard-teacher:before{content:\"\"}.fa-charging-station:before{content:\"\"}.fa-chart-area:before{content:\"\"}.fa-chart-bar:before{content:\"\"}.fa-chart-line:before{content:\"\"}.fa-chart-pie:before{content:\"\"}.fa-check:before{content:\"\"}.fa-check-circle:before{content:\"\"}.fa-check-double:before{content:\"\"}.fa-check-square:before{content:\"\"}.fa-chess:before{content:\"\"}.fa-chess-bishop:before{content:\"\"}.fa-chess-board:before{content:\"\"}.fa-chess-king:before{content:\"\"}.fa-chess-knight:before{content:\"\"}.fa-chess-pawn:before{content:\"\"}.fa-chess-queen:before{content:\"\"}.fa-chess-rook:before{content:\"\"}.fa-chevron-circle-down:before{content:\"\"}.fa-chevron-circle-left:before{content:\"\"}.fa-chevron-circle-right:before{content:\"\"}.fa-chevron-circle-up:before{content:\"\"}.fa-chevron-down:before{content:\"\"}.fa-chevron-left:before{content:\"\"}.fa-chevron-right:before{content:\"\"}.fa-chevron-up:before{content:\"\"}.fa-child:before{content:\"\"}.fa-chrome:before{content:\"\"}.fa-church:before{content:\"\"}.fa-circle:before{content:\"\"}.fa-circle-notch:before{content:\"\"}.fa-city:before{content:\"\"}.fa-clipboard:before{content:\"\"}.fa-clipboard-check:before{content:\"\"}.fa-clipboard-list:before{content:\"\"}.fa-clock:before{content:\"\"}.fa-clone:before{content:\"\"}.fa-closed-captioning:before{content:\"\"}.fa-cloud:before{content:\"\"}.fa-cloud-download-alt:before{content:\"\"}.fa-cloud-meatball:before{content:\"\"}.fa-cloud-moon:before{content:\"\"}.fa-cloud-moon-rain:before{content:\"\"}.fa-cloud-rain:before{content:\"\"}.fa-cloud-showers-heavy:before{content:\"\"}.fa-cloud-sun:before{content:\"\"}.fa-cloud-sun-rain:before{content:\"\"}.fa-cloud-upload-alt:before{content:\"\"}.fa-cloudscale:before{content:\"\"}.fa-cloudsmith:before{content:\"\"}.fa-cloudversify:before{content:\"\"}.fa-cocktail:before{content:\"\"}.fa-code:before{content:\"\"}.fa-code-branch:before{content:\"\"}.fa-codepen:before{content:\"\"}.fa-codiepie:before{content:\"\"}.fa-coffee:before{content:\"\"}.fa-cog:before{content:\"\"}.fa-cogs:before{content:\"\"}.fa-coins:before{content:\"\"}.fa-columns:before{content:\"\"}.fa-comment:before{content:\"\"}.fa-comment-alt:before{content:\"\"}.fa-comment-dollar:before{content:\"\"}.fa-comment-dots:before{content:\"\"}.fa-comment-slash:before{content:\"\"}.fa-comments:before{content:\"\"}.fa-comments-dollar:before{content:\"\"}.fa-compact-disc:before{content:\"\"}.fa-compass:before{content:\"\"}.fa-compress:before{content:\"\"}.fa-compress-arrows-alt:before{content:\"\"}.fa-concierge-bell:before{content:\"\"}.fa-connectdevelop:before{content:\"\"}.fa-contao:before{content:\"\"}.fa-cookie:before{content:\"\"}.fa-cookie-bite:before{content:\"\"}.fa-copy:before{content:\"\"}.fa-copyright:before{content:\"\"}.fa-couch:before{content:\"\"}.fa-cpanel:before{content:\"\"}.fa-creative-commons:before{content:\"\"}.fa-creative-commons-by:before{content:\"\"}.fa-creative-commons-nc:before{content:\"\"}.fa-creative-commons-nc-eu:before{content:\"\"}.fa-creative-commons-nc-jp:before{content:\"\"}.fa-creative-commons-nd:before{content:\"\"}.fa-creative-commons-pd:before{content:\"\"}.fa-creative-commons-pd-alt:before{content:\"\"}.fa-creative-commons-remix:before{content:\"\"}.fa-creative-commons-sa:before{content:\"\"}.fa-creative-commons-sampling:before{content:\"\"}.fa-creative-commons-sampling-plus:before{content:\"\"}.fa-creative-commons-share:before{content:\"\"}.fa-creative-commons-zero:before{content:\"\"}.fa-credit-card:before{content:\"\"}.fa-critical-role:before{content:\"\"}.fa-crop:before{content:\"\"}.fa-crop-alt:before{content:\"\"}.fa-cross:before{content:\"\"}.fa-crosshairs:before{content:\"\"}.fa-crow:before{content:\"\"}.fa-crown:before{content:\"\"}.fa-css3:before{content:\"\"}.fa-css3-alt:before{content:\"\"}.fa-cube:before{content:\"\"}.fa-cubes:before{content:\"\"}.fa-cut:before{content:\"\"}.fa-cuttlefish:before{content:\"\"}.fa-d-and-d:before{content:\"\"}.fa-d-and-d-beyond:before{content:\"\"}.fa-dashcube:before{content:\"\"}.fa-database:before{content:\"\"}.fa-deaf:before{content:\"\"}.fa-delicious:before{content:\"\"}.fa-democrat:before{content:\"\"}.fa-deploydog:before{content:\"\"}.fa-deskpro:before{content:\"\"}.fa-desktop:before{content:\"\"}.fa-dev:before{content:\"\"}.fa-deviantart:before{content:\"\"}.fa-dharmachakra:before{content:\"\"}.fa-diagnoses:before{content:\"\"}.fa-dice:before{content:\"\"}.fa-dice-d20:before{content:\"\"}.fa-dice-d6:before{content:\"\"}.fa-dice-five:before{content:\"\"}.fa-dice-four:before{content:\"\"}.fa-dice-one:before{content:\"\"}.fa-dice-six:before{content:\"\"}.fa-dice-three:before{content:\"\"}.fa-dice-two:before{content:\"\"}.fa-digg:before{content:\"\"}.fa-digital-ocean:before{content:\"\"}.fa-digital-tachograph:before{content:\"\"}.fa-directions:before{content:\"\"}.fa-discord:before{content:\"\"}.fa-discourse:before{content:\"\"}.fa-divide:before{content:\"\"}.fa-dizzy:before{content:\"\"}.fa-dna:before{content:\"\"}.fa-dochub:before{content:\"\"}.fa-docker:before{content:\"\"}.fa-dog:before{content:\"\"}.fa-dollar-sign:before{content:\"\"}.fa-dolly:before{content:\"\"}.fa-dolly-flatbed:before{content:\"\"}.fa-donate:before{content:\"\"}.fa-door-closed:before{content:\"\"}.fa-door-open:before{content:\"\"}.fa-dot-circle:before{content:\"\"}.fa-dove:before{content:\"\"}.fa-download:before{content:\"\"}.fa-draft2digital:before{content:\"\"}.fa-drafting-compass:before{content:\"\"}.fa-dragon:before{content:\"\"}.fa-draw-polygon:before{content:\"\"}.fa-dribbble:before{content:\"\"}.fa-dribbble-square:before{content:\"\"}.fa-dropbox:before{content:\"\"}.fa-drum:before{content:\"\"}.fa-drum-steelpan:before{content:\"\"}.fa-drumstick-bite:before{content:\"\"}.fa-drupal:before{content:\"\"}.fa-dumbbell:before{content:\"\"}.fa-dungeon:before{content:\"\"}.fa-dyalog:before{content:\"\"}.fa-earlybirds:before{content:\"\"}.fa-ebay:before{content:\"\"}.fa-edge:before{content:\"\"}.fa-edit:before{content:\"\"}.fa-eject:before{content:\"\"}.fa-elementor:before{content:\"\"}.fa-ellipsis-h:before{content:\"\"}.fa-ellipsis-v:before{content:\"\"}.fa-ello:before{content:\"\"}.fa-ember:before{content:\"\"}.fa-empire:before{content:\"\"}.fa-envelope:before{content:\"\"}.fa-envelope-open:before{content:\"\"}.fa-envelope-open-text:before{content:\"\"}.fa-envelope-square:before{content:\"\"}.fa-envira:before{content:\"\"}.fa-equals:before{content:\"\"}.fa-eraser:before{content:\"\"}.fa-erlang:before{content:\"\"}.fa-ethereum:before{content:\"\"}.fa-etsy:before{content:\"\"}.fa-euro-sign:before{content:\"\"}.fa-exchange-alt:before{content:\"\"}.fa-exclamation:before{content:\"\"}.fa-exclamation-circle:before{content:\"\"}.fa-exclamation-triangle:before{content:\"\"}.fa-expand:before{content:\"\"}.fa-expand-arrows-alt:before{content:\"\"}.fa-expeditedssl:before{content:\"\"}.fa-external-link-alt:before{content:\"\"}.fa-external-link-square-alt:before{content:\"\"}.fa-eye:before{content:\"\"}.fa-eye-dropper:before{content:\"\"}.fa-eye-slash:before{content:\"\"}.fa-facebook:before{content:\"\"}.fa-facebook-f:before{content:\"\"}.fa-facebook-messenger:before{content:\"\"}.fa-facebook-square:before{content:\"\"}.fa-fantasy-flight-games:before{content:\"\"}.fa-fast-backward:before{content:\"\"}.fa-fast-forward:before{content:\"\"}.fa-fax:before{content:\"\"}.fa-feather:before{content:\"\"}.fa-feather-alt:before{content:\"\"}.fa-female:before{content:\"\"}.fa-fighter-jet:before{content:\"\"}.fa-file:before{content:\"\"}.fa-file-alt:before{content:\"\"}.fa-file-archive:before{content:\"\"}.fa-file-audio:before{content:\"\"}.fa-file-code:before{content:\"\"}.fa-file-contract:before{content:\"\"}.fa-file-csv:before{content:\"\"}.fa-file-download:before{content:\"\"}.fa-file-excel:before{content:\"\"}.fa-file-export:before{content:\"\"}.fa-file-image:before{content:\"\"}.fa-file-import:before{content:\"\"}.fa-file-invoice:before{content:\"\"}.fa-file-invoice-dollar:before{content:\"\"}.fa-file-medical:before{content:\"\"}.fa-file-medical-alt:before{content:\"\"}.fa-file-pdf:before{content:\"\"}.fa-file-powerpoint:before{content:\"\"}.fa-file-prescription:before{content:\"\"}.fa-file-signature:before{content:\"\"}.fa-file-upload:before{content:\"\"}.fa-file-video:before{content:\"\"}.fa-file-word:before{content:\"\"}.fa-fill:before{content:\"\"}.fa-fill-drip:before{content:\"\"}.fa-film:before{content:\"\"}.fa-filter:before{content:\"\"}.fa-fingerprint:before{content:\"\"}.fa-fire:before{content:\"\"}.fa-fire-extinguisher:before{content:\"\"}.fa-firefox:before{content:\"\"}.fa-first-aid:before{content:\"\"}.fa-first-order:before{content:\"\"}.fa-first-order-alt:before{content:\"\"}.fa-firstdraft:before{content:\"\"}.fa-fish:before{content:\"\"}.fa-fist-raised:before{content:\"\"}.fa-flag:before{content:\"\"}.fa-flag-checkered:before{content:\"\"}.fa-flag-usa:before{content:\"\"}.fa-flask:before{content:\"\"}.fa-flickr:before{content:\"\"}.fa-flipboard:before{content:\"\"}.fa-flushed:before{content:\"\"}.fa-fly:before{content:\"\"}.fa-folder:before{content:\"\"}.fa-folder-minus:before{content:\"\"}.fa-folder-open:before{content:\"\"}.fa-folder-plus:before{content:\"\"}.fa-font:before{content:\"\"}.fa-font-awesome:before{content:\"\"}.fa-font-awesome-alt:before{content:\"\"}.fa-font-awesome-flag:before{content:\"\"}.fa-font-awesome-logo-full:before{content:\"\"}.fa-fonticons:before{content:\"\"}.fa-fonticons-fi:before{content:\"\"}.fa-football-ball:before{content:\"\"}.fa-fort-awesome:before{content:\"\"}.fa-fort-awesome-alt:before{content:\"\"}.fa-forumbee:before{content:\"\"}.fa-forward:before{content:\"\"}.fa-foursquare:before{content:\"\"}.fa-free-code-camp:before{content:\"\"}.fa-freebsd:before{content:\"\"}.fa-frog:before{content:\"\"}.fa-frown:before{content:\"\"}.fa-frown-open:before{content:\"\"}.fa-fulcrum:before{content:\"\"}.fa-funnel-dollar:before{content:\"\"}.fa-futbol:before{content:\"\"}.fa-galactic-republic:before{content:\"\"}.fa-galactic-senate:before{content:\"\"}.fa-gamepad:before{content:\"\"}.fa-gas-pump:before{content:\"\"}.fa-gavel:before{content:\"\"}.fa-gem:before{content:\"\"}.fa-genderless:before{content:\"\"}.fa-get-pocket:before{content:\"\"}.fa-gg:before{content:\"\"}.fa-gg-circle:before{content:\"\"}.fa-ghost:before{content:\"\"}.fa-gift:before{content:\"\"}.fa-git:before{content:\"\"}.fa-git-square:before{content:\"\"}.fa-github:before{content:\"\"}.fa-github-alt:before{content:\"\"}.fa-github-square:before{content:\"\"}.fa-gitkraken:before{content:\"\"}.fa-gitlab:before{content:\"\"}.fa-gitter:before{content:\"\"}.fa-glass-martini:before{content:\"\"}.fa-glass-martini-alt:before{content:\"\"}.fa-glasses:before{content:\"\"}.fa-glide:before{content:\"\"}.fa-glide-g:before{content:\"\"}.fa-globe:before{content:\"\"}.fa-globe-africa:before{content:\"\"}.fa-globe-americas:before{content:\"\"}.fa-globe-asia:before{content:\"\"}.fa-gofore:before{content:\"\"}.fa-golf-ball:before{content:\"\"}.fa-goodreads:before{content:\"\"}.fa-goodreads-g:before{content:\"\"}.fa-google:before{content:\"\"}.fa-google-drive:before{content:\"\"}.fa-google-play:before{content:\"\"}.fa-google-plus:before{content:\"\"}.fa-google-plus-g:before{content:\"\"}.fa-google-plus-square:before{content:\"\"}.fa-google-wallet:before{content:\"\"}.fa-gopuram:before{content:\"\"}.fa-graduation-cap:before{content:\"\"}.fa-gratipay:before{content:\"\"}.fa-grav:before{content:\"\"}.fa-greater-than:before{content:\"\"}.fa-greater-than-equal:before{content:\"\"}.fa-grimace:before{content:\"\"}.fa-grin:before{content:\"\"}.fa-grin-alt:before{content:\"\"}.fa-grin-beam:before{content:\"\"}.fa-grin-beam-sweat:before{content:\"\"}.fa-grin-hearts:before{content:\"\"}.fa-grin-squint:before{content:\"\"}.fa-grin-squint-tears:before{content:\"\"}.fa-grin-stars:before{content:\"\"}.fa-grin-tears:before{content:\"\"}.fa-grin-tongue:before{content:\"\"}.fa-grin-tongue-squint:before{content:\"\"}.fa-grin-tongue-wink:before{content:\"\"}.fa-grin-wink:before{content:\"\"}.fa-grip-horizontal:before{content:\"\"}.fa-grip-vertical:before{content:\"\"}.fa-gripfire:before{content:\"\"}.fa-grunt:before{content:\"\"}.fa-gulp:before{content:\"\"}.fa-h-square:before{content:\"\"}.fa-hacker-news:before{content:\"\"}.fa-hacker-news-square:before{content:\"\"}.fa-hackerrank:before{content:\"\"}.fa-hammer:before{content:\"\"}.fa-hamsa:before{content:\"\"}.fa-hand-holding:before{content:\"\"}.fa-hand-holding-heart:before{content:\"\"}.fa-hand-holding-usd:before{content:\"\"}.fa-hand-lizard:before{content:\"\"}.fa-hand-paper:before{content:\"\"}.fa-hand-peace:before{content:\"\"}.fa-hand-point-down:before{content:\"\"}.fa-hand-point-left:before{content:\"\"}.fa-hand-point-right:before{content:\"\"}.fa-hand-point-up:before{content:\"\"}.fa-hand-pointer:before{content:\"\"}.fa-hand-rock:before{content:\"\"}.fa-hand-scissors:before{content:\"\"}.fa-hand-spock:before{content:\"\"}.fa-hands:before{content:\"\"}.fa-hands-helping:before{content:\"\"}.fa-handshake:before{content:\"\"}.fa-hanukiah:before{content:\"\"}.fa-hashtag:before{content:\"\"}.fa-hat-wizard:before{content:\"\"}.fa-haykal:before{content:\"\"}.fa-hdd:before{content:\"\"}.fa-heading:before{content:\"\"}.fa-headphones:before{content:\"\"}.fa-headphones-alt:before{content:\"\"}.fa-headset:before{content:\"\"}.fa-heart:before{content:\"\"}.fa-heartbeat:before{content:\"\"}.fa-helicopter:before{content:\"\"}.fa-highlighter:before{content:\"\"}.fa-hiking:before{content:\"\"}.fa-hippo:before{content:\"\"}.fa-hips:before{content:\"\"}.fa-hire-a-helper:before{content:\"\"}.fa-history:before{content:\"\"}.fa-hockey-puck:before{content:\"\"}.fa-home:before{content:\"\"}.fa-hooli:before{content:\"\"}.fa-hornbill:before{content:\"\"}.fa-horse:before{content:\"\"}.fa-hospital:before{content:\"\"}.fa-hospital-alt:before{content:\"\"}.fa-hospital-symbol:before{content:\"\"}.fa-hot-tub:before{content:\"\"}.fa-hotel:before{content:\"\"}.fa-hotjar:before{content:\"\"}.fa-hourglass:before{content:\"\"}.fa-hourglass-end:before{content:\"\"}.fa-hourglass-half:before{content:\"\"}.fa-hourglass-start:before{content:\"\"}.fa-house-damage:before{content:\"\"}.fa-houzz:before{content:\"\"}.fa-hryvnia:before{content:\"\"}.fa-html5:before{content:\"\"}.fa-hubspot:before{content:\"\"}.fa-i-cursor:before{content:\"\"}.fa-id-badge:before{content:\"\"}.fa-id-card:before{content:\"\"}.fa-id-card-alt:before{content:\"\"}.fa-image:before{content:\"\"}.fa-images:before{content:\"\"}.fa-imdb:before{content:\"\"}.fa-inbox:before{content:\"\"}.fa-indent:before{content:\"\"}.fa-industry:before{content:\"\"}.fa-infinity:before{content:\"\"}.fa-info:before{content:\"\"}.fa-info-circle:before{content:\"\"}.fa-instagram:before{content:\"\"}.fa-internet-explorer:before{content:\"\"}.fa-ioxhost:before{content:\"\"}.fa-italic:before{content:\"\"}.fa-itunes:before{content:\"\"}.fa-itunes-note:before{content:\"\"}.fa-java:before{content:\"\"}.fa-jedi:before{content:\"\"}.fa-jedi-order:before{content:\"\"}.fa-jenkins:before{content:\"\"}.fa-joget:before{content:\"\"}.fa-joint:before{content:\"\"}.fa-joomla:before{content:\"\"}.fa-journal-whills:before{content:\"\"}.fa-js:before{content:\"\"}.fa-js-square:before{content:\"\"}.fa-jsfiddle:before{content:\"\"}.fa-kaaba:before{content:\"\"}.fa-kaggle:before{content:\"\"}.fa-key:before{content:\"\"}.fa-keybase:before{content:\"\"}.fa-keyboard:before{content:\"\"}.fa-keycdn:before{content:\"\"}.fa-khanda:before{content:\"\"}.fa-kickstarter:before{content:\"\"}.fa-kickstarter-k:before{content:\"\"}.fa-kiss:before{content:\"\"}.fa-kiss-beam:before{content:\"\"}.fa-kiss-wink-heart:before{content:\"\"}.fa-kiwi-bird:before{content:\"\"}.fa-korvue:before{content:\"\"}.fa-landmark:before{content:\"\"}.fa-language:before{content:\"\"}.fa-laptop:before{content:\"\"}.fa-laptop-code:before{content:\"\"}.fa-laravel:before{content:\"\"}.fa-lastfm:before{content:\"\"}.fa-lastfm-square:before{content:\"\"}.fa-laugh:before{content:\"\"}.fa-laugh-beam:before{content:\"\"}.fa-laugh-squint:before{content:\"\"}.fa-laugh-wink:before{content:\"\"}.fa-layer-group:before{content:\"\"}.fa-leaf:before{content:\"\"}.fa-leanpub:before{content:\"\"}.fa-lemon:before{content:\"\"}.fa-less:before{content:\"\"}.fa-less-than:before{content:\"\"}.fa-less-than-equal:before{content:\"\"}.fa-level-down-alt:before{content:\"\"}.fa-level-up-alt:before{content:\"\"}.fa-life-ring:before{content:\"\"}.fa-lightbulb:before{content:\"\"}.fa-line:before{content:\"\"}.fa-link:before{content:\"\"}.fa-linkedin:before{content:\"\"}.fa-linkedin-in:before{content:\"\"}.fa-linode:before{content:\"\"}.fa-linux:before{content:\"\"}.fa-lira-sign:before{content:\"\"}.fa-list:before{content:\"\"}.fa-list-alt:before{content:\"\"}.fa-list-ol:before{content:\"\"}.fa-list-ul:before{content:\"\"}.fa-location-arrow:before{content:\"\"}.fa-lock:before{content:\"\"}.fa-lock-open:before{content:\"\"}.fa-long-arrow-alt-down:before{content:\"\"}.fa-long-arrow-alt-left:before{content:\"\"}.fa-long-arrow-alt-right:before{content:\"\"}.fa-long-arrow-alt-up:before{content:\"\"}.fa-low-vision:before{content:\"\"}.fa-luggage-cart:before{content:\"\"}.fa-lyft:before{content:\"\"}.fa-magento:before{content:\"\"}.fa-magic:before{content:\"\"}.fa-magnet:before{content:\"\"}.fa-mail-bulk:before{content:\"\"}.fa-mailchimp:before{content:\"\"}.fa-male:before{content:\"\"}.fa-mandalorian:before{content:\"\"}.fa-map:before{content:\"\"}.fa-map-marked:before{content:\"\"}.fa-map-marked-alt:before{content:\"\"}.fa-map-marker:before{content:\"\"}.fa-map-marker-alt:before{content:\"\"}.fa-map-pin:before{content:\"\"}.fa-map-signs:before{content:\"\"}.fa-markdown:before{content:\"\"}.fa-marker:before{content:\"\"}.fa-mars:before{content:\"\"}.fa-mars-double:before{content:\"\"}.fa-mars-stroke:before{content:\"\"}.fa-mars-stroke-h:before{content:\"\"}.fa-mars-stroke-v:before{content:\"\"}.fa-mask:before{content:\"\"}.fa-mastodon:before{content:\"\"}.fa-maxcdn:before{content:\"\"}.fa-medal:before{content:\"\"}.fa-medapps:before{content:\"\"}.fa-medium:before{content:\"\"}.fa-medium-m:before{content:\"\"}.fa-medkit:before{content:\"\"}.fa-medrt:before{content:\"\"}.fa-meetup:before{content:\"\"}.fa-megaport:before{content:\"\"}.fa-meh:before{content:\"\"}.fa-meh-blank:before{content:\"\"}.fa-meh-rolling-eyes:before{content:\"\"}.fa-memory:before{content:\"\"}.fa-menorah:before{content:\"\"}.fa-mercury:before{content:\"\"}.fa-meteor:before{content:\"\"}.fa-microchip:before{content:\"\"}.fa-microphone:before{content:\"\"}.fa-microphone-alt:before{content:\"\"}.fa-microphone-alt-slash:before{content:\"\"}.fa-microphone-slash:before{content:\"\"}.fa-microscope:before{content:\"\"}.fa-microsoft:before{content:\"\"}.fa-minus:before{content:\"\"}.fa-minus-circle:before{content:\"\"}.fa-minus-square:before{content:\"\"}.fa-mix:before{content:\"\"}.fa-mixcloud:before{content:\"\"}.fa-mizuni:before{content:\"\"}.fa-mobile:before{content:\"\"}.fa-mobile-alt:before{content:\"\"}.fa-modx:before{content:\"\"}.fa-monero:before{content:\"\"}.fa-money-bill:before{content:\"\"}.fa-money-bill-alt:before{content:\"\"}.fa-money-bill-wave:before{content:\"\"}.fa-money-bill-wave-alt:before{content:\"\"}.fa-money-check:before{content:\"\"}.fa-money-check-alt:before{content:\"\"}.fa-monument:before{content:\"\"}.fa-moon:before{content:\"\"}.fa-mortar-pestle:before{content:\"\"}.fa-mosque:before{content:\"\"}.fa-motorcycle:before{content:\"\"}.fa-mountain:before{content:\"\"}.fa-mouse-pointer:before{content:\"\"}.fa-music:before{content:\"\"}.fa-napster:before{content:\"\"}.fa-neos:before{content:\"\"}.fa-network-wired:before{content:\"\"}.fa-neuter:before{content:\"\"}.fa-newspaper:before{content:\"\"}.fa-nimblr:before{content:\"\"}.fa-nintendo-switch:before{content:\"\"}.fa-node:before{content:\"\"}.fa-node-js:before{content:\"\"}.fa-not-equal:before{content:\"\"}.fa-notes-medical:before{content:\"\"}.fa-npm:before{content:\"\"}.fa-ns8:before{content:\"\"}.fa-nutritionix:before{content:\"\"}.fa-object-group:before{content:\"\"}.fa-object-ungroup:before{content:\"\"}.fa-odnoklassniki:before{content:\"\"}.fa-odnoklassniki-square:before{content:\"\"}.fa-oil-can:before{content:\"\"}.fa-old-republic:before{content:\"\"}.fa-om:before{content:\"\"}.fa-opencart:before{content:\"\"}.fa-openid:before{content:\"\"}.fa-opera:before{content:\"\"}.fa-optin-monster:before{content:\"\"}.fa-osi:before{content:\"\"}.fa-otter:before{content:\"\"}.fa-outdent:before{content:\"\"}.fa-page4:before{content:\"\"}.fa-pagelines:before{content:\"\"}.fa-paint-brush:before{content:\"\"}.fa-paint-roller:before{content:\"\"}.fa-palette:before{content:\"\"}.fa-palfed:before{content:\"\"}.fa-pallet:before{content:\"\"}.fa-paper-plane:before{content:\"\"}.fa-paperclip:before{content:\"\"}.fa-parachute-box:before{content:\"\"}.fa-paragraph:before{content:\"\"}.fa-parking:before{content:\"\"}.fa-passport:before{content:\"\"}.fa-pastafarianism:before{content:\"\"}.fa-paste:before{content:\"\"}.fa-patreon:before{content:\"\"}.fa-pause:before{content:\"\"}.fa-pause-circle:before{content:\"\"}.fa-paw:before{content:\"\"}.fa-paypal:before{content:\"\"}.fa-peace:before{content:\"\"}.fa-pen:before{content:\"\"}.fa-pen-alt:before{content:\"\"}.fa-pen-fancy:before{content:\"\"}.fa-pen-nib:before{content:\"\"}.fa-pen-square:before{content:\"\"}.fa-pencil-alt:before{content:\"\"}.fa-pencil-ruler:before{content:\"\"}.fa-penny-arcade:before{content:\"\"}.fa-people-carry:before{content:\"\"}.fa-percent:before{content:\"\"}.fa-percentage:before{content:\"\"}.fa-periscope:before{content:\"\"}.fa-person-booth:before{content:\"\"}.fa-phabricator:before{content:\"\"}.fa-phoenix-framework:before{content:\"\"}.fa-phoenix-squadron:before{content:\"\"}.fa-phone:before{content:\"\"}.fa-phone-slash:before{content:\"\"}.fa-phone-square:before{content:\"\"}.fa-phone-volume:before{content:\"\"}.fa-php:before{content:\"\"}.fa-pied-piper:before{content:\"\"}.fa-pied-piper-alt:before{content:\"\"}.fa-pied-piper-hat:before{content:\"\"}.fa-pied-piper-pp:before{content:\"\"}.fa-piggy-bank:before{content:\"\"}.fa-pills:before{content:\"\"}.fa-pinterest:before{content:\"\"}.fa-pinterest-p:before{content:\"\"}.fa-pinterest-square:before{content:\"\"}.fa-place-of-worship:before{content:\"\"}.fa-plane:before{content:\"\"}.fa-plane-arrival:before{content:\"\"}.fa-plane-departure:before{content:\"\"}.fa-play:before{content:\"\"}.fa-play-circle:before{content:\"\"}.fa-playstation:before{content:\"\"}.fa-plug:before{content:\"\"}.fa-plus:before{content:\"\"}.fa-plus-circle:before{content:\"\"}.fa-plus-square:before{content:\"\"}.fa-podcast:before{content:\"\"}.fa-poll:before{content:\"\"}.fa-poll-h:before{content:\"\"}.fa-poo:before{content:\"\"}.fa-poo-storm:before{content:\"\"}.fa-poop:before{content:\"\"}.fa-portrait:before{content:\"\"}.fa-pound-sign:before{content:\"\"}.fa-power-off:before{content:\"\"}.fa-pray:before{content:\"\"}.fa-praying-hands:before{content:\"\"}.fa-prescription:before{content:\"\"}.fa-prescription-bottle:before{content:\"\"}.fa-prescription-bottle-alt:before{content:\"\"}.fa-print:before{content:\"\"}.fa-procedures:before{content:\"\"}.fa-product-hunt:before{content:\"\"}.fa-project-diagram:before{content:\"\"}.fa-pushed:before{content:\"\"}.fa-puzzle-piece:before{content:\"\"}.fa-python:before{content:\"\"}.fa-qq:before{content:\"\"}.fa-qrcode:before{content:\"\"}.fa-question:before{content:\"\"}.fa-question-circle:before{content:\"\"}.fa-quidditch:before{content:\"\"}.fa-quinscape:before{content:\"\"}.fa-quora:before{content:\"\"}.fa-quote-left:before{content:\"\"}.fa-quote-right:before{content:\"\"}.fa-quran:before{content:\"\"}.fa-r-project:before{content:\"\"}.fa-rainbow:before{content:\"\"}.fa-random:before{content:\"\"}.fa-ravelry:before{content:\"\"}.fa-react:before{content:\"\"}.fa-reacteurope:before{content:\"\"}.fa-readme:before{content:\"\"}.fa-rebel:before{content:\"\"}.fa-receipt:before{content:\"\"}.fa-recycle:before{content:\"\"}.fa-red-river:before{content:\"\"}.fa-reddit:before{content:\"\"}.fa-reddit-alien:before{content:\"\"}.fa-reddit-square:before{content:\"\"}.fa-redo:before{content:\"\"}.fa-redo-alt:before{content:\"\"}.fa-registered:before{content:\"\"}.fa-renren:before{content:\"\"}.fa-reply:before{content:\"\"}.fa-reply-all:before{content:\"\"}.fa-replyd:before{content:\"\"}.fa-republican:before{content:\"\"}.fa-researchgate:before{content:\"\"}.fa-resolving:before{content:\"\"}.fa-retweet:before{content:\"\"}.fa-rev:before{content:\"\"}.fa-ribbon:before{content:\"\"}.fa-ring:before{content:\"\"}.fa-road:before{content:\"\"}.fa-robot:before{content:\"\"}.fa-rocket:before{content:\"\"}.fa-rocketchat:before{content:\"\"}.fa-rockrms:before{content:\"\"}.fa-route:before{content:\"\"}.fa-rss:before{content:\"\"}.fa-rss-square:before{content:\"\"}.fa-ruble-sign:before{content:\"\"}.fa-ruler:before{content:\"\"}.fa-ruler-combined:before{content:\"\"}.fa-ruler-horizontal:before{content:\"\"}.fa-ruler-vertical:before{content:\"\"}.fa-running:before{content:\"\"}.fa-rupee-sign:before{content:\"\"}.fa-sad-cry:before{content:\"\"}.fa-sad-tear:before{content:\"\"}.fa-safari:before{content:\"\"}.fa-sass:before{content:\"\"}.fa-save:before{content:\"\"}.fa-schlix:before{content:\"\"}.fa-school:before{content:\"\"}.fa-screwdriver:before{content:\"\"}.fa-scribd:before{content:\"\"}.fa-scroll:before{content:\"\"}.fa-search:before{content:\"\"}.fa-search-dollar:before{content:\"\"}.fa-search-location:before{content:\"\"}.fa-search-minus:before{content:\"\"}.fa-search-plus:before{content:\"\"}.fa-searchengin:before{content:\"\"}.fa-seedling:before{content:\"\"}.fa-sellcast:before{content:\"\"}.fa-sellsy:before{content:\"\"}.fa-server:before{content:\"\"}.fa-servicestack:before{content:\"\"}.fa-shapes:before{content:\"\"}.fa-share:before{content:\"\"}.fa-share-alt:before{content:\"\"}.fa-share-alt-square:before{content:\"\"}.fa-share-square:before{content:\"\"}.fa-shekel-sign:before{content:\"\"}.fa-shield-alt:before{content:\"\"}.fa-ship:before{content:\"\"}.fa-shipping-fast:before{content:\"\"}.fa-shirtsinbulk:before{content:\"\"}.fa-shoe-prints:before{content:\"\"}.fa-shopping-bag:before{content:\"\"}.fa-shopping-basket:before{content:\"\"}.fa-shopping-cart:before{content:\"\"}.fa-shopware:before{content:\"\"}.fa-shower:before{content:\"\"}.fa-shuttle-van:before{content:\"\"}.fa-sign:before{content:\"\"}.fa-sign-in-alt:before{content:\"\"}.fa-sign-language:before{content:\"\"}.fa-sign-out-alt:before{content:\"\"}.fa-signal:before{content:\"\"}.fa-signature:before{content:\"\"}.fa-simplybuilt:before{content:\"\"}.fa-sistrix:before{content:\"\"}.fa-sitemap:before{content:\"\"}.fa-sith:before{content:\"\"}.fa-skull:before{content:\"\"}.fa-skull-crossbones:before{content:\"\"}.fa-skyatlas:before{content:\"\"}.fa-skype:before{content:\"\"}.fa-slack:before{content:\"\"}.fa-slack-hash:before{content:\"\"}.fa-slash:before{content:\"\"}.fa-sliders-h:before{content:\"\"}.fa-slideshare:before{content:\"\"}.fa-smile:before{content:\"\"}.fa-smile-beam:before{content:\"\"}.fa-smile-wink:before{content:\"\"}.fa-smog:before{content:\"\"}.fa-smoking:before{content:\"\"}.fa-smoking-ban:before{content:\"\"}.fa-snapchat:before{content:\"\"}.fa-snapchat-ghost:before{content:\"\"}.fa-snapchat-square:before{content:\"\"}.fa-snowflake:before{content:\"\"}.fa-socks:before{content:\"\"}.fa-solar-panel:before{content:\"\"}.fa-sort:before{content:\"\"}.fa-sort-alpha-down:before{content:\"\"}.fa-sort-alpha-up:before{content:\"\"}.fa-sort-amount-down:before{content:\"\"}.fa-sort-amount-up:before{content:\"\"}.fa-sort-down:before{content:\"\"}.fa-sort-numeric-down:before{content:\"\"}.fa-sort-numeric-up:before{content:\"\"}.fa-sort-up:before{content:\"\"}.fa-soundcloud:before{content:\"\"}.fa-spa:before{content:\"\"}.fa-space-shuttle:before{content:\"\"}.fa-speakap:before{content:\"\"}.fa-spider:before{content:\"\"}.fa-spinner:before{content:\"\"}.fa-splotch:before{content:\"\"}.fa-spotify:before{content:\"\"}.fa-spray-can:before{content:\"\"}.fa-square:before{content:\"\"}.fa-square-full:before{content:\"\"}.fa-square-root-alt:before{content:\"\"}.fa-squarespace:before{content:\"\"}.fa-stack-exchange:before{content:\"\"}.fa-stack-overflow:before{content:\"\"}.fa-stamp:before{content:\"\"}.fa-star:before{content:\"\"}.fa-star-and-crescent:before{content:\"\"}.fa-star-half:before{content:\"\"}.fa-star-half-alt:before{content:\"\"}.fa-star-of-david:before{content:\"\"}.fa-star-of-life:before{content:\"\"}.fa-staylinked:before{content:\"\"}.fa-steam:before{content:\"\"}.fa-steam-square:before{content:\"\"}.fa-steam-symbol:before{content:\"\"}.fa-step-backward:before{content:\"\"}.fa-step-forward:before{content:\"\"}.fa-stethoscope:before{content:\"\"}.fa-sticker-mule:before{content:\"\"}.fa-sticky-note:before{content:\"\"}.fa-stop:before{content:\"\"}.fa-stop-circle:before{content:\"\"}.fa-stopwatch:before{content:\"\"}.fa-store:before{content:\"\"}.fa-store-alt:before{content:\"\"}.fa-strava:before{content:\"\"}.fa-stream:before{content:\"\"}.fa-street-view:before{content:\"\"}.fa-strikethrough:before{content:\"\"}.fa-stripe:before{content:\"\"}.fa-stripe-s:before{content:\"\"}.fa-stroopwafel:before{content:\"\"}.fa-studiovinari:before{content:\"\"}.fa-stumbleupon:before{content:\"\"}.fa-stumbleupon-circle:before{content:\"\"}.fa-subscript:before{content:\"\"}.fa-subway:before{content:\"\"}.fa-suitcase:before{content:\"\"}.fa-suitcase-rolling:before{content:\"\"}.fa-sun:before{content:\"\"}.fa-superpowers:before{content:\"\"}.fa-superscript:before{content:\"\"}.fa-supple:before{content:\"\"}.fa-surprise:before{content:\"\"}.fa-swatchbook:before{content:\"\"}.fa-swimmer:before{content:\"\"}.fa-swimming-pool:before{content:\"\"}.fa-synagogue:before{content:\"\"}.fa-sync:before{content:\"\"}.fa-sync-alt:before{content:\"\"}.fa-syringe:before{content:\"\"}.fa-table:before{content:\"\"}.fa-table-tennis:before{content:\"\"}.fa-tablet:before{content:\"\"}.fa-tablet-alt:before{content:\"\"}.fa-tablets:before{content:\"\"}.fa-tachometer-alt:before{content:\"\"}.fa-tag:before{content:\"\"}.fa-tags:before{content:\"\"}.fa-tape:before{content:\"\"}.fa-tasks:before{content:\"\"}.fa-taxi:before{content:\"\"}.fa-teamspeak:before{content:\"\"}.fa-teeth:before{content:\"\"}.fa-teeth-open:before{content:\"\"}.fa-telegram:before{content:\"\"}.fa-telegram-plane:before{content:\"\"}.fa-temperature-high:before{content:\"\"}.fa-temperature-low:before{content:\"\"}.fa-tencent-weibo:before{content:\"\"}.fa-terminal:before{content:\"\"}.fa-text-height:before{content:\"\"}.fa-text-width:before{content:\"\"}.fa-th:before{content:\"\"}.fa-th-large:before{content:\"\"}.fa-th-list:before{content:\"\"}.fa-the-red-yeti:before{content:\"\"}.fa-theater-masks:before{content:\"\"}.fa-themeco:before{content:\"\"}.fa-themeisle:before{content:\"\"}.fa-thermometer:before{content:\"\"}.fa-thermometer-empty:before{content:\"\"}.fa-thermometer-full:before{content:\"\"}.fa-thermometer-half:before{content:\"\"}.fa-thermometer-quarter:before{content:\"\"}.fa-thermometer-three-quarters:before{content:\"\"}.fa-think-peaks:before{content:\"\"}.fa-thumbs-down:before{content:\"\"}.fa-thumbs-up:before{content:\"\"}.fa-thumbtack:before{content:\"\"}.fa-ticket-alt:before{content:\"\"}.fa-times:before{content:\"\"}.fa-times-circle:before{content:\"\"}.fa-tint:before{content:\"\"}.fa-tint-slash:before{content:\"\"}.fa-tired:before{content:\"\"}.fa-toggle-off:before{content:\"\"}.fa-toggle-on:before{content:\"\"}.fa-toilet-paper:before{content:\"\"}.fa-toolbox:before{content:\"\"}.fa-tooth:before{content:\"\"}.fa-torah:before{content:\"\"}.fa-torii-gate:before{content:\"\"}.fa-tractor:before{content:\"\"}.fa-trade-federation:before{content:\"\"}.fa-trademark:before{content:\"\"}.fa-traffic-light:before{content:\"\"}.fa-train:before{content:\"\"}.fa-transgender:before{content:\"\"}.fa-transgender-alt:before{content:\"\"}.fa-trash:before{content:\"\"}.fa-trash-alt:before{content:\"\"}.fa-tree:before{content:\"\"}.fa-trello:before{content:\"\"}.fa-tripadvisor:before{content:\"\"}.fa-trophy:before{content:\"\"}.fa-truck:before{content:\"\"}.fa-truck-loading:before{content:\"\"}.fa-truck-monster:before{content:\"\"}.fa-truck-moving:before{content:\"\"}.fa-truck-pickup:before{content:\"\"}.fa-tshirt:before{content:\"\"}.fa-tty:before{content:\"\"}.fa-tumblr:before{content:\"\"}.fa-tumblr-square:before{content:\"\"}.fa-tv:before{content:\"\"}.fa-twitch:before{content:\"\"}.fa-twitter:before{content:\"\"}.fa-twitter-square:before{content:\"\"}.fa-typo3:before{content:\"\"}.fa-uber:before{content:\"\"}.fa-uikit:before{content:\"\"}.fa-umbrella:before{content:\"\"}.fa-umbrella-beach:before{content:\"\"}.fa-underline:before{content:\"\"}.fa-undo:before{content:\"\"}.fa-undo-alt:before{content:\"\"}.fa-uniregistry:before{content:\"\"}.fa-universal-access:before{content:\"\"}.fa-university:before{content:\"\"}.fa-unlink:before{content:\"\"}.fa-unlock:before{content:\"\"}.fa-unlock-alt:before{content:\"\"}.fa-untappd:before{content:\"\"}.fa-upload:before{content:\"\"}.fa-usb:before{content:\"\"}.fa-user:before{content:\"\"}.fa-user-alt:before{content:\"\"}.fa-user-alt-slash:before{content:\"\"}.fa-user-astronaut:before{content:\"\"}.fa-user-check:before{content:\"\"}.fa-user-circle:before{content:\"\"}.fa-user-clock:before{content:\"\"}.fa-user-cog:before{content:\"\"}.fa-user-edit:before{content:\"\"}.fa-user-friends:before{content:\"\"}.fa-user-graduate:before{content:\"\"}.fa-user-injured:before{content:\"\"}.fa-user-lock:before{content:\"\"}.fa-user-md:before{content:\"\"}.fa-user-minus:before{content:\"\"}.fa-user-ninja:before{content:\"\"}.fa-user-plus:before{content:\"\"}.fa-user-secret:before{content:\"\"}.fa-user-shield:before{content:\"\"}.fa-user-slash:before{content:\"\"}.fa-user-tag:before{content:\"\"}.fa-user-tie:before{content:\"\"}.fa-user-times:before{content:\"\"}.fa-users:before{content:\"\"}.fa-users-cog:before{content:\"\"}.fa-ussunnah:before{content:\"\"}.fa-utensil-spoon:before{content:\"\"}.fa-utensils:before{content:\"\"}.fa-vaadin:before{content:\"\"}.fa-vector-square:before{content:\"\"}.fa-venus:before{content:\"\"}.fa-venus-double:before{content:\"\"}.fa-venus-mars:before{content:\"\"}.fa-viacoin:before{content:\"\"}.fa-viadeo:before{content:\"\"}.fa-viadeo-square:before{content:\"\"}.fa-vial:before{content:\"\"}.fa-vials:before{content:\"\"}.fa-viber:before{content:\"\"}.fa-video:before{content:\"\"}.fa-video-slash:before{content:\"\"}.fa-vihara:before{content:\"\"}.fa-vimeo:before{content:\"\"}.fa-vimeo-square:before{content:\"\"}.fa-vimeo-v:before{content:\"\"}.fa-vine:before{content:\"\"}.fa-vk:before{content:\"\"}.fa-vnv:before{content:\"\"}.fa-volleyball-ball:before{content:\"\"}.fa-volume-down:before{content:\"\"}.fa-volume-mute:before{content:\"\"}.fa-volume-off:before{content:\"\"}.fa-volume-up:before{content:\"\"}.fa-vote-yea:before{content:\"\"}.fa-vr-cardboard:before{content:\"\"}.fa-vuejs:before{content:\"\"}.fa-walking:before{content:\"\"}.fa-wallet:before{content:\"\"}.fa-warehouse:before{content:\"\"}.fa-water:before{content:\"\"}.fa-weebly:before{content:\"\"}.fa-weibo:before{content:\"\"}.fa-weight:before{content:\"\"}.fa-weight-hanging:before{content:\"\"}.fa-weixin:before{content:\"\"}.fa-whatsapp:before{content:\"\"}.fa-whatsapp-square:before{content:\"\"}.fa-wheelchair:before{content:\"\"}.fa-whmcs:before{content:\"\"}.fa-wifi:before{content:\"\"}.fa-wikipedia-w:before{content:\"\"}.fa-wind:before{content:\"\"}.fa-window-close:before{content:\"\"}.fa-window-maximize:before{content:\"\"}.fa-window-minimize:before{content:\"\"}.fa-window-restore:before{content:\"\"}.fa-windows:before{content:\"\"}.fa-wine-bottle:before{content:\"\"}.fa-wine-glass:before{content:\"\"}.fa-wine-glass-alt:before{content:\"\"}.fa-wix:before{content:\"\"}.fa-wizards-of-the-coast:before{content:\"\"}.fa-wolf-pack-battalion:before{content:\"\"}.fa-won-sign:before{content:\"\"}.fa-wordpress:before{content:\"\"}.fa-wordpress-simple:before{content:\"\"}.fa-wpbeginner:before{content:\"\"}.fa-wpexplorer:before{content:\"\"}.fa-wpforms:before{content:\"\"}.fa-wpressr:before{content:\"\"}.fa-wrench:before{content:\"\"}.fa-x-ray:before{content:\"\"}.fa-xbox:before{content:\"\"}.fa-xing:before{content:\"\"}.fa-xing-square:before{content:\"\"}.fa-y-combinator:before{content:\"\"}.fa-yahoo:before{content:\"\"}.fa-yandex:before{content:\"\"}.fa-yandex-international:before{content:\"\"}.fa-yelp:before{content:\"\"}.fa-yen-sign:before{content:\"\"}.fa-yin-yang:before{content:\"\"}.fa-yoast:before{content:\"\"}.fa-youtube:before{content:\"\"}.fa-youtube-square:before{content:\"\"}.fa-zhihu:before{content:\"\"}.sr-only{border:0;clip:rect(0, 0, 0, 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.sr-only-focusable:active,.sr-only-focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}@font-face{font-family:\"Font Awesome 5 Brands\";font-style:normal;font-weight:normal;src:url(\"../fonts/fa-brands-400.eot\");src:url(\"../fonts/fa-brands-400.eot?#iefix\") format(\"embedded-opentype\"),url(\"../fonts/fa-brands-400.woff2\") format(\"woff2\"),url(\"../fonts/fa-brands-400.woff\") format(\"woff\"),url(\"../fonts/fa-brands-400.ttf\") format(\"truetype\"),url(\"../fonts/fa-brands-400.svg#fontawesome\") format(\"svg\")}.fab{font-family:\"Font Awesome 5 Brands\"}@font-face{font-family:\"Font Awesome 5 Free\";font-style:normal;font-weight:400;src:url(\"../fonts/fa-regular-400.eot\");src:url(\"../fonts/fa-regular-400.eot?#iefix\") format(\"embedded-opentype\"),url(\"../fonts/fa-regular-400.woff2\") format(\"woff2\"),url(\"../fonts/fa-regular-400.woff\") format(\"woff\"),url(\"../fonts/fa-regular-400.ttf\") format(\"truetype\"),url(\"../fonts/fa-regular-400.svg#fontawesome\") format(\"svg\")}.far{font-family:\"Font Awesome 5 Free\";font-weight:400}@font-face{font-family:\"Font Awesome 5 Free\";font-style:normal;font-weight:900;src:url(\"../fonts/fa-solid-900.eot\");src:url(\"../fonts/fa-solid-900.eot?#iefix\") format(\"embedded-opentype\"),url(\"../fonts/fa-solid-900.woff2\") format(\"woff2\"),url(\"../fonts/fa-solid-900.woff\") format(\"woff\"),url(\"../fonts/fa-solid-900.ttf\") format(\"truetype\"),url(\"../fonts/fa-solid-900.svg#fontawesome\") format(\"svg\")}.fa,.fas{font-family:\"Font Awesome 5 Free\";font-weight:900}.tykon:before{font-family:\"tykon\" !important;font-style:normal !important;font-weight:normal !important;font-variant:normal !important;text-transform:none !important;speak:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.tykon-arrowdown:before{content:\"a\"}.tykon-arrowleft:before{content:\"b\"}.tykon-arrowright:before{content:\"c\"}.tykon-arrowup:before{content:\"d\"}.tykon-doublearrowdown:before{content:\"e\"}.tykon-filter:before{content:\"f\"}.tykon-graph1:before{content:\"g\"}.tykon-graph2:before{content:\"h\"}.tykon-label:before{content:\"i\"}.tykon-reload:before{content:\"j\"}.tykon-select:before{content:\"k\"}.tykon-target:before{content:\"l\"}.tykon-undo:before{content:\"m\"}.tykon-deployment:before{content:\"n\"}.tykon-team:before{content:\"o\"}.tykon-overview:before{content:\"p\"}.tykon-loadout:before{content:\"q\"}.tykon-entitlement:before{content:\"r\"}.tykon-users:before{content:\"s\"}.tykon-doublearrowdown:before{content:\"e\"}.tykon-arrowsort:before{content:\"W\"}.tykon-check:before{content:\"V\"}.tykon-copy:before{content:\"C\"}.tykon-delete:before{content:\"U\"}.tykon-download:before{content:\"L\"}.tykon-draft:before{content:\"D\"}.tykon-edit:before{content:\"E\"}.tykon-filter:before{content:\"f\"}.tykon-graphq2:before{content:\"h\"}.tykon-help:before{content:\"?\"}.tykon-label:before{content:\"i\"}.tykon-link:before{content:\"R\"}.tykon-lock1:before{content:\"Y\"}.tykon-lock2:before{content:\"Z\"}.tykon-notifications:before{content:\"N\"}.tykon-plus:before{content:\"+\"}.tykon-profile:before{content:\"P\"}.tykon-reload:before{content:\"j\"}.tykon-search:before{content:\"O\"}.tykon-select:before{content:\"k\"}.tykon-settings:before{content:\"S\"}.tykon-target:before{content:\"l\"}.tykon-undo:before{content:\"m\"}.tykon-warning:before{content:\"!\"}.tykon-x:before{content:\"X\"}.tykon-waiting:before{content:\"T\"}.tykon-fullscreen:before{content:\"\"}.tykon-fullscreen-exit:before{content:\"\"}.tykon-time:before{content:\"t\"}h1,h2,h3,h4,h5,h6{margin-bottom:15px;font-family:\"smoolthan_medium\";font-weight:500;color:#36364c}label{display:inline-block;max-width:100%;margin-bottom:5px;color:#36364c}h1{font-size:25px;line-height:30px}h2{font-size:20px;line-height:24px}h3{font-size:17px;line-height:23px}h4{font-size:16px;line-height:22px}h5{font-size:14px;line-height:19px}h6{font-size:12px;line-height:16px}p,label{font-size:14px;line-height:19px;font-family:\"OpenSans-regular\"}strong{font-family:\"OpenSans-Bold\"}a:not(.tyk-button){cursor:pointer;color:#505071;font-family:\"OpenSans-regular\"}a:not(.tyk-button).link--bold{font-family:\"OpenSans-Bold\"}a:not(.tyk-button)+a{margin-left:5px}a:not(.tyk-button) i{font-size:9px}p a,label a{font-size:14px;text-decoration:underline}.font-family-regular{font-family:\"OpenSans-regular\"}.font-family-medium{font-family:\"OpenSans-SemiBold\"}.font-family-bold{font-family:\"OpenSans-Bold\"}.heading-font-family-regular{font-family:\"smoolthan_regular\"}.heading-font-family-medium{font-family:\"smoolthan_medium\"}.heading-font-family-bold{font-family:\"smoolthan_bold\"}.text--primary{color:#a2a2cc}.text--danger{color:#ff6c7d}.text--info{color:#82bbc6}.text-warning{color:#d6b218}.text--medium{font-family:\"OpenSans-SemiBold\"}.text--bold{font-family:\"OpenSans-Bold\"}.text--uppercase{text-transform:uppercase}.text--ellipsis{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.text--underline{text-decoration:underline}td.text-ellipsis{max-width:250px}.section-title{font-family:\"smoolthan_bold\";margin-bottom:5px}.section-title .tyk-icon{margin-left:5px}.sub-section-title{margin-bottom:5px;font-family:\"OpenSans-SemiBold\";font-size:16px;line-height:22px}.sub-section-title .tyk-icon{margin-left:5px}.section-group-title{margin-bottom:5px;font-family:\"OpenSans-Bold\";font-size:14px;line-height:19px;text-transform:uppercase}.section-group-title .tyk-icon{margin-left:5px}.text--default-light{color:#c3c3e5 !important}.text--default{color:#36364c !important}.text--primary{color:#a2a2cc !important}.text--danger{color:#ff6c7d !important}.text--success{color:#00d9ba !important}.text--warning{color:#d6b218 !important}.tyk-form-section__title{font-size:16px;margin:5px 0 15px 0}.tyk-form-section__title--light{color:#43435b}.tyk-form-group{margin-bottom:15px}.tyk-form-group.has-error>.tyk-form-control__wrapper>.tyk-form-control,.tyk-form-group.has-error>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control,.tyk-form-group.has-error .tyk-file-input__wrapper>.tyk-form-control{border:2px solid #ff6c7d;border-left:2px solid #ea4766;outline:none}.tyk-form-group.has-error>.tyk-form-control__wrapper>.tyk-form-control:focus,.tyk-form-group.has-error>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control:focus,.tyk-form-group.has-error .tyk-file-input__wrapper>.tyk-form-control:focus{border-left:2px solid #ea4766;border-color:#ea4766;outline:none}.tyk-form-group label{font-family:\"OpenSans-SemiBold\"}.tyk-form-group--inline{align-items:stretch;display:flex;flex-wrap:nowrap}.tyk-form-group--inline .tyk-form-control__wrapper{flex:1}.tyk-form-group--inline label{display:flex;white-space:nowrap;margin-right:20px;margin-top:14px}.tyk-form-group--inline input,.tyk-form-group--inline select{display:flex}.tyk-form-group--inline .tyk-form-control__help-block{display:flex;margin-left:auto}.tyk-form-group--default{color:#505071}.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-form-control,.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control,.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control{border:2px solid #c3c3e5;color:#505071}.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-form-control[disabled],.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control[disabled],.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control[disabled]{border:2px solid #c3c3e5;background-color:#ededf9;color:#505071;cursor:not-allowed}.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-form-control[disabled]+.tyk-input-group__addon,.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control[disabled]+.tyk-input-group__addon,.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control[disabled]+.tyk-input-group__addon{background-color:#ededf9}.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-form-control::placeholder,.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control::placeholder,.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control::placeholder{opacity:.8}.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-form-control:-ms-input-placeholder,.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control:-ms-input-placeholder,.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control:-ms-input-placeholder{opacity:.8}.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-form-control::-ms-input-placeholder,.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control::-ms-input-placeholder,.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control::-ms-input-placeholder{opacity:.8}.tyk-form-group--default.tyk-form-group--addon-left .tyk-input-group__addon{border-bottom:2px solid #c3c3e5;border-left:2px solid #c3c3e5;border-top:2px solid #c3c3e5;color:#505071}.tyk-form-group--default.tyk-form-group--addon-right .tyk-input-group__addon{border-bottom:2px solid #c3c3e5;border-right:2px solid #c3c3e5;border-top:2px solid #c3c3e5;color:#505071}.tyk-form-group--primary{color:#505071}.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-form-control,.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control,.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control{border:2px solid #a2a2cc;color:#505071}.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-form-control[disabled],.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control[disabled],.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control[disabled]{border:2px solid #a2a2cc;background-color:#ededf9;color:#505071;cursor:not-allowed}.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-form-control[disabled]+.tyk-input-group__addon,.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control[disabled]+.tyk-input-group__addon,.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control[disabled]+.tyk-input-group__addon{background-color:#ededf9}.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-form-control::placeholder,.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control::placeholder,.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control::placeholder{opacity:.8}.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-form-control:-ms-input-placeholder,.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control:-ms-input-placeholder,.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control:-ms-input-placeholder{opacity:.8}.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-form-control::-ms-input-placeholder,.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control::-ms-input-placeholder,.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control::-ms-input-placeholder{opacity:.8}.tyk-form-group--primary.tyk-form-group--addon-left .tyk-input-group__addon{border-bottom:2px solid #a2a2cc;border-left:2px solid #a2a2cc;border-top:2px solid #a2a2cc;color:#a2a2cc}.tyk-form-group--primary.tyk-form-group--addon-right .tyk-input-group__addon{border-bottom:2px solid #a2a2cc;border-right:2px solid #a2a2cc;border-top:2px solid #a2a2cc;color:#a2a2cc}.tyk-form-group--success{color:#505071}.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-form-control,.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control,.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control{border:2px solid #00d9ba;color:#505071}.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-form-control[disabled],.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control[disabled],.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control[disabled]{border:2px solid #00d9ba;background-color:#ededf9;color:#505071;cursor:not-allowed}.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-form-control[disabled]+.tyk-input-group__addon,.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control[disabled]+.tyk-input-group__addon,.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control[disabled]+.tyk-input-group__addon{background-color:#ededf9}.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-form-control::placeholder,.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control::placeholder,.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control::placeholder{opacity:.8}.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-form-control:-ms-input-placeholder,.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control:-ms-input-placeholder,.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control:-ms-input-placeholder{opacity:.8}.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-form-control::-ms-input-placeholder,.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control::-ms-input-placeholder,.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control::-ms-input-placeholder{opacity:.8}.tyk-form-group--success.tyk-form-group--addon-left .tyk-input-group__addon{border-bottom:2px solid #00d9ba;border-left:2px solid #00d9ba;border-top:2px solid #00d9ba;color:#00d9ba}.tyk-form-group--success.tyk-form-group--addon-right .tyk-input-group__addon{border-bottom:2px solid #00d9ba;border-right:2px solid #00d9ba;border-top:2px solid #00d9ba;color:#00d9ba}.tyk-form-group--rounded-corners.has-error>.tyk-form-control__wrapper>.tyk-form-control{border-left:2px solid #ff6c7d}.tyk-form-group--rounded-corners.has-error>.tyk-form-control__wrapper>.tyk-form-control:focus{border-left:2px solid #ff6c7d;outline:none}.tyk-form-group--rounded-corners .tyk-form-control{border-radius:18px}.tyk-form-group--addon-right input{border-right:0 !important;padding-right:0}.tyk-form-group--addon-left input{border-left:0 !important;padding-left:0}.tyk-form-group--rounded-corners.tyk-form-group--addon-right input{border-top-right-radius:0;border-bottom-right-radius:0}.tyk-form-group--rounded-corners.tyk-form-group--addon-right .tyk-input-group__addon{background:#fff;border-top-right-radius:18px;border-bottom-right-radius:18px;color:#505071}.tyk-form-group--rounded-corners.tyk-form-group--addon-left input{border-top-left-radius:0;border-bottom-left-radius:0;border-left:0 !important}.tyk-form-group--rounded-corners.tyk-form-group--addon-left .tyk-input-group__addon{background:#fff;border-top-left-radius:18px;border-bottom-left-radius:18px;color:#505071}.tyk-form-control__error-message{font-family:\"OpenSans-regular\";font-size:12px;line-height:16px;margin-top:5px;padding:0 0 0 20px;position:relative}.tyk-form-control__error-message:before{content:\"!\";background:#ff6c7d;color:#fff;font-family:\"OpenSans-Bold\";border-radius:8px;display:inline-block;margin-right:5px;padding:0px 7px}.tyk-input-group{align-items:center;display:flex;outline:none}.tyk-input-group__addon{align-items:center;background-color:#fff;border:2px solid #c3c3e5;display:flex;height:39px;padding:10px 10px 10px 10px}.tyk-input-group__addon:first-child{border-right:0}.tyk-input-group__addon:last-child{border-left:0}.tyk-form-control{font-family:\"OpenSans-SemiBold\";font-size:14px;line-height:19px;border:2px solid #c3c3e5;background-color:#fff;color:#505071;display:block;height:39px;padding:10px 20px 10px 20px;transition:all .2s linear;width:100%}.tyk-form-control[disabled]{background-color:#ededf9;cursor:not-allowed}.tyk-form-control[disabled] .tyk-input-group__addon{background-color:#ededf9}.tyk-form-control::placeholder{font-family:\"OpenSans-SemiBold\";color:#a2a2cc}.tyk-form-control:focus,.tyk-form-control:active{outline:none;border:2px solid #00d9ba !important}.tyk-form-control:focus+.tyk-input-group__addon,.tyk-form-control:active+.tyk-input-group__addon{border:2px solid #00d9ba !important;border-left:none !important}.tyk-form-control__help-block{color:#36364c;font-style:normal;font-family:\"OpenSans-regular\";font-size:12px;line-height:16px;padding:0 0 0 20px;margin:5px 0 0 0}select{border-radius:0;-webkit-appearance:none}.inline-form-wrapper{align-items:center;display:flex;width:100%}.inline-form-wrapper .inline-form{width:100%}.inline-form-wrapper>button{margin-left:10px;margin-bottom:15px}.tyk-checkbox,.tyk-radio{margin:10px 0}.tyk-checkbox label,.tyk-radio label{font-family:\"OpenSans-SemiBold\"}.tyk-checkbox input,.tyk-radio input{margin:0 5px 0 0}.tyk-checkbox--inline,.tyk-radio--inline{display:inline-flex;margin-left:15px}.tyk-checkbox--inline:first-child,.tyk-radio--inline:first-child{margin-left:0}.tyk-inline-form{align-items:center;display:flex;flex-wrap:wrap}.tyk-inline-form .tyk-form-group{flex:1;margin-left:20px;min-width:200px}.tyk-inline-form .tyk-form-group:first-child{margin-left:0}.tyk-inline-form>.tyk-button{margin-left:20px;margin-bottom:15px}.tyk-accordion__item-header>button,.tyk-accordion__trigger{background:none;border:none;cursor:pointer;display:flex;font-size:14px;outline:none;padding:15px 15px;width:100%}.tyk-accordion__item-header>button .tyk-icon,.tyk-accordion__trigger .tyk-icon{margin-left:auto}.tyk-accordion__item{display:grid}.tyk-accordion__item--trigger-position-left{grid-template-columns:40px auto;grid-template-areas:\"trigger header\" \"trigger content\"}.tyk-accordion__item--trigger-position-right{grid-template-columns:auto 40px;grid-template-areas:\"header trigger\" \"content trigger\"}.tyk-accordion__item--trigger-in-header{grid-template-columns:auto;grid-template-areas:\"header\" \"content\"}.tyk-accordion__trigger-wrapper{grid-area:trigger;display:flex;align-items:flex-start;justify-content:center}.tyk-accordion__trigger-wrapper .tyk-icon{margin-left:auto;margin-right:auto}.tyk-accordion__item-header{grid-area:header}.tyk-accordion__trigger--disabled{color:#e1e1e1}.tyk-accordion__item-header.tyk-accordion__arrow-trigger{align-items:center;display:flex}.tyk-accordion__item-header.tyk-accordion__arrow-trigger>div{flex:1}.tyk-accordion__item-header.tyk-accordion__arrow-trigger>button{margin-left:auto;width:auto}.tyk-accordion__item-content{grid-area:content}:root{--tooltip-max-width: 450px}.tyk-tooltip{display:flex;align-items:center;background-color:#ededf9;border:2px solid #a2a2cc;border-radius:18px;max-width:var(--tooltip-max-width);padding:20px}.tyk-tooltip>.tyk-icon:first-child{width:32px;height:32px;border-radius:50%;color:#fff;background-color:#7a79a1}.tyk-tooltip>.tyk-icon:first-child:before{display:flex;width:100%;height:100%;align-items:center;justify-content:center}.tyk-tooltip>.tyk-icon+.tyk-tooltip__content{margin-left:20px}.tyk-tooltip__content{color:#505071;word-break:break-word;word-wrap:break-word}.tyk-tooltip__content+.tyk-icon{margin-left:20px}.tyk-tooltip>.tyk-icon:last-child{cursor:pointer}.tyk-button{background-color:rgba(0,0,0,0);border:none;color:#fff;cursor:pointer;display:inline-block;font-family:\"OpenSans-Bold\";text-align:center;text-transform:uppercase;text-decoration:none;transition:all .2s linear;user-select:none;vertical-align:middle;white-space:nowrap;padding:8px 23px;font-size:14px;line-height:22px;border-radius:20px}.tyk-button+.tyk-button,.tyk-button+.tyk-dropdown,.tyk-button+.tyk-toggle{margin-left:10px}.tyk-button span+i{margin-left:10px}.tyk-button i+span{margin-left:10px}.tyk-button.disabled{cursor:not-allowed;opacity:.7}.tyk-button:hover{color:#fff;text-decoration:none}.tyk-button:focus{outline:none}.tyk-button--white{background-color:#fff;color:#36364c;border:2px solid rgba(0,0,0,0)}.tyk-button--white:hover{background-color:#43435b;color:#fff}.tyk-button--primary{background-color:#7a79a1;color:#fff;border:2px solid #7a79a1}.tyk-button--primary:hover{background-color:#505071;color:#fff}.tyk-button--primary-link{background-color:rgba(0,0,0,0);border:2px solid rgba(0,0,0,0);color:#7a79a1}.tyk-button--primary-link:hover{background-color:rgba(0,0,0,0);color:#7a79a1;border-color:#7a79a1;text-decoration:underline}.tyk-button--primary-outline{border:2px solid #7a79a1;background-color:rgba(0,0,0,0);color:#7a79a1}.tyk-button--primary-outline:hover{background-color:#7a79a1;color:#fff}.tyk-button--primary-outline.disabled{color:#7a79a1}.tyk-button--primary-outline.disabled:hover{background-color:rgba(0,0,0,0);color:#7a79a1}.tyk-button--primary-gradient{border-image:linear-gradient(to right, #A2A2CC, #505071, #A2A2CC) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #A2A2CC, #505071, #A2A2CC);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-button--primary-gradient:hover,.tyk-button--primary-gradient:active,.tyk-button--primary-gradient:active:focus{border-image:linear-gradient(to right, #A2A2CC, #505071, #A2A2CC) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #A2A2CC, #505071, #A2A2CC);background-position:100% 0;background-size:200% auto;background-clip:border-box}.tyk-button--primary-gradient:hover.disabled,.tyk-button--primary-gradient:active.disabled,.tyk-button--primary-gradient:active:focus.disabled{border-image:linear-gradient(to right, #A2A2CC, #505071, #A2A2CC) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #A2A2CC, #505071, #A2A2CC);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-button--success{background-color:#00d9ba;color:#fff;border:2px solid #00d9ba}.tyk-button--success:hover{background-color:#00b798;color:#fff}.tyk-button--success-link{background-color:rgba(0,0,0,0);border:2px solid rgba(0,0,0,0);color:#00d9ba}.tyk-button--success-link:hover{background-color:rgba(0,0,0,0);color:#00d9ba;border-color:#00d9ba;text-decoration:underline}.tyk-button--success-outline{border:2px solid #00d9ba;background-color:rgba(0,0,0,0);color:#00d9ba}.tyk-button--success-outline:hover{background-color:#00d9ba;color:#fff}.tyk-button--success-outline.disabled{color:#00d9ba}.tyk-button--success-outline.disabled:hover{background-color:rgba(0,0,0,0);color:#00d9ba}.tyk-button--success-gradient{border-image:linear-gradient(to right, #00d9ba, #00B798, #00d9ba) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #00d9ba, #00B798, #00d9ba);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-button--success-gradient:hover,.tyk-button--success-gradient:active,.tyk-button--success-gradient:active:focus{border-image:linear-gradient(to right, #00d9ba, #00B798, #00d9ba) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #00d9ba, #00B798, #00d9ba);background-position:100% 0;background-size:200% auto;background-clip:border-box}.tyk-button--success-gradient:hover.disabled,.tyk-button--success-gradient:active.disabled,.tyk-button--success-gradient:active:focus.disabled{border-image:linear-gradient(to right, #00d9ba, #00B798, #00d9ba) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #00d9ba, #00B798, #00d9ba);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-button--danger{background-color:#ff6c7d;color:#fff;border:2px solid #ff6c7d}.tyk-button--danger:hover{background-color:#ea4766;color:#fff}.tyk-button--danger-link{background-color:rgba(0,0,0,0);border:2px solid rgba(0,0,0,0);color:#ff6c7d}.tyk-button--danger-link:hover{background-color:rgba(0,0,0,0);color:#ff6c7d;border-color:#ff6c7d;text-decoration:underline}.tyk-button--danger-outline{border:2px solid #ff6c7d;background-color:rgba(0,0,0,0);color:#ff6c7d}.tyk-button--danger-outline:hover{background-color:#ff6c7d;color:#fff}.tyk-button--danger-outline.disabled{color:#ff6c7d}.tyk-button--danger-outline.disabled:hover{background-color:rgba(0,0,0,0);color:#ff6c7d}.tyk-button--danger-gradient{border-image:linear-gradient(to right, #FF6C7D, #EA4766, #FF6C7D) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #FF6C7D, #EA4766, #FF6C7D);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-button--danger-gradient:hover,.tyk-button--danger-gradient:active,.tyk-button--danger-gradient:active:focus{border-image:linear-gradient(to right, #FF6C7D, #EA4766, #FF6C7D) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #FF6C7D, #EA4766, #FF6C7D);background-position:100% 0;background-size:200% auto;background-clip:border-box}.tyk-button--danger-gradient:hover.disabled,.tyk-button--danger-gradient:active.disabled,.tyk-button--danger-gradient:active:focus.disabled{border-image:linear-gradient(to right, #FF6C7D, #EA4766, #FF6C7D) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #FF6C7D, #EA4766, #FF6C7D);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-button--warning{background-color:#d6b218;color:#fff;border:2px solid rgba(0,0,0,0)}.tyk-button--warning:hover{background-color:#b49514;color:#fff}.tyk-button--warning-link{background-color:rgba(0,0,0,0);border:2px solid rgba(0,0,0,0);color:#d6b218}.tyk-button--warning-link:hover{background-color:rgba(0,0,0,0);color:#d6b218;border-color:#d6b218;text-decoration:underline}.tyk-button--warning-outline{border:2px solid #d6b218;background-color:rgba(0,0,0,0);color:#d6b218}.tyk-button--warning-outline:hover{background-color:#d6b218;color:#fff}.tyk-button--warning-outline.disabled{color:#d6b218}.tyk-button--warning-outline.disabled:hover{background-color:rgba(0,0,0,0);color:#d6b218}.tyk-button--warning-gradient{border-image:linear-gradient(to right, #D6B218, #FFE885, #D6B218) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #D6B218, #FFE885, #D6B218);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-button--warning-gradient:hover,.tyk-button--warning-gradient:active,.tyk-button--warning-gradient:active:focus{border-image:linear-gradient(to right, #D6B218, #FFE885, #D6B218) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #D6B218, #FFE885, #D6B218);background-position:100% 0;background-size:200% auto;background-clip:border-box}.tyk-button--warning-gradient:hover.disabled,.tyk-button--warning-gradient:active.disabled,.tyk-button--warning-gradient:active:focus.disabled{border-image:linear-gradient(to right, #D6B218, #FFE885, #D6B218) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #D6B218, #FFE885, #D6B218);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-button--info{background-color:#82bbc6;color:#fff;border:2px solid #82bbc6}.tyk-button--info:hover{background-color:#68adba;color:#fff}.tyk-button--info-link{background-color:rgba(0,0,0,0);border:2px solid rgba(0,0,0,0);color:#82bbc6}.tyk-button--info-link:hover{background-color:rgba(0,0,0,0);color:#82bbc6;border-color:#82bbc6;text-decoration:underline}.tyk-button--info-outline{border:2px solid #82bbc6;background-color:rgba(0,0,0,0);color:#82bbc6}.tyk-button--info-outline:hover{background-color:#82bbc6;color:#fff}.tyk-button--info-outline.disabled{color:#82bbc6}.tyk-button--info-outline.disabled:hover{background-color:rgba(0,0,0,0);color:#82bbc6}.tyk-button--info-gradient{border-image:linear-gradient(to right, #82BBC6, #D3EBEF, #82BBC6) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #82BBC6, #D3EBEF, #82BBC6);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#505071}.tyk-button--info-gradient:hover,.tyk-button--info-gradient:active,.tyk-button--info-gradient:active:focus{border-image:linear-gradient(to right, #82BBC6, #D3EBEF, #82BBC6) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #82BBC6, #D3EBEF, #82BBC6);background-position:100% 0;background-size:200% auto;background-clip:border-box}.tyk-button--info-gradient:hover.disabled,.tyk-button--info-gradient:active.disabled,.tyk-button--info-gradient:active:focus.disabled{border-image:linear-gradient(to right, #82BBC6, #D3EBEF, #82BBC6) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #82BBC6, #D3EBEF, #82BBC6);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#505071}.tyk-button--default{background-color:#36364c;color:#fff;border:2px solid #36364c}.tyk-button--default:hover{background-color:#505071;color:#fff}.tyk-button--default-link{background-color:rgba(0,0,0,0);border:2px solid rgba(0,0,0,0);color:#505071}.tyk-button--default-link:hover{background-color:rgba(0,0,0,0);color:#505071;border-color:#505071;text-decoration:underline}.tyk-button--default-outline{border:2px solid #36364c;background-color:rgba(0,0,0,0);color:#36364c}.tyk-button--default-outline:hover{background-color:#36364c;color:#fff}.tyk-button--default-outline.disabled{color:#36364c}.tyk-button--default-outline.disabled:hover{background-color:rgba(0,0,0,0);color:#36364c}.tyk-button--default-gradient{border-image:linear-gradient(to right, #36364C, #505071, #36364C) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #36364C, #505071, #36364C);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-button--default-gradient:hover,.tyk-button--default-gradient:active,.tyk-button--default-gradient:active:focus{border-image:linear-gradient(to right, #36364C, #505071, #36364C) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #36364C, #505071, #36364C);background-position:100% 0;background-size:200% auto;background-clip:border-box}.tyk-button--default-gradient:hover.disabled,.tyk-button--default-gradient:active.disabled,.tyk-button--default-gradient:active:focus.disabled{border-image:linear-gradient(to right, #36364C, #505071, #36364C) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #36364C, #505071, #36364C);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-button--sm{padding:3px 15px;font-size:12px;line-height:16px;border-radius:20px}.tyk-button--md{padding:8px 23px;font-size:14px;line-height:19px;border-radius:20px}.tyk-button--lg{padding:13px 23px;font-size:16px;line-height:22px;border-radius:20px}.tyk-button--icon-only{border-radius:18px;padding:0;line-height:20px;width:24px}.tyk-button--icon-only:hover{border-radius:18px}.tyk-button--fit{height:auto;width:auto;line-height:normal}.tyk-button--no-style{background:rgba(0,0,0,0);border:none;color:#505071}.tyk-button--no-style:hover{background:rgba(0,0,0,0);border:none;color:#505071}.tyk-button-group__wrapper{display:inline-block;position:relative;vertical-align:middle}.tyk-button-group__wrapper label{font-family:\"OpenSans-SemiBold\"}.tyk-button-group__wrapper .tyk-button-group{display:flex}.tyk-button-group__wrapper .tyk-button-group>.tyk-button-group:not(:first-child)>.tyk-button{border-top-left-radius:0;border-bottom-left-radius:0}.tyk-button-group__wrapper .tyk-button-group>.tyk-button-group:not(:last-child)>.tyk-button{border-top-right-radius:0;border-bottom-right-radius:0}.tyk-button-group__wrapper .tyk-button-group .tyk-button{border-radius:0}.tyk-button-group__wrapper .tyk-button-group .tyk-button+.tyk-button{margin-left:0}.tyk-button-group__wrapper .tyk-button-group .tyk-button+.tyk-dropdown{margin-left:0}.tyk-button-group__wrapper .tyk-button-group .tyk-button:first-child{border-top-left-radius:20px;border-bottom-left-radius:20px}.tyk-button-group__wrapper .tyk-button-group .tyk-button:last-child{border-top-right-radius:20px;border-bottom-right-radius:20px}.tyk-chart__wrapper{position:relative}.tyk-chart--no-data,.tyk-chart--loading-chart{filter:blur(10px);-webkit-filter:blur(10px)}.collapse-exit,.collapse-exit-active,.collapse-exit-done{height:0px}.collapse-wrapper{overflow:hidden;transition:all .2s}.collapse-horizontal-exit,.collapse-horizontal-exit-active,.collapse-horizontal-exit-done{width:0px}.collapse-horizontal-enter,.collapse-horizontal-enter-active,.collapse-horizontal-enter-done{width:100%}.tyk-copy-to-clipboard{position:absolute;left:-1000px;top:-1000px}.tyk-fixed-wrapper{left:0;position:sticky;right:0;top:0;z-index:8}.tyk-fixed-wrapper--scrolled{box-shadow:2px 2px 5px rgba(0,0,0,.1)}.floating-container{position:fixed;top:-9999px;overflow:auto;z-index:1080}.tyk-icon+.tyk-icon{margin-left:10px}.tyk-infinite-scroller{height:100%;overflow:hidden;position:relative}.tyk-infinite-scroller .loading{background:linear-gradient(180deg, rgba(255, 255, 255, 0), rgb(255, 255, 255));justify-content:center;bottom:0;display:flex;left:0;padding:15px 0;right:0;top:auto;width:100%}.tyk-infinite-scroller__wrapper{height:100%;overflow-y:auto}.tyk-info-note{border-radius:0;position:relative}.tyk-info-note p+p{margin-top:15px}.tyk-info-note:after{content:\"\";border-style:solid;border-width:0 20px 20px 0;border-color:rgba(0,0,0,0) #82bbc6 rgba(0,0,0,0) rgba(0,0,0,0);height:0;position:absolute;right:0;top:0;width:0}.tyk-info-note .tyk-message{border-radius:0;padding-top:40px;padding-bottom:40px}.tyk-loading__wrapper{background:rgba(255,255,255,.6);bottom:0;position:absolute;left:0;right:0;top:0;z-index:99}.loader-wrapper{min-height:100px;position:relative}.loading{position:absolute;top:calc(50% - 10px);left:50%}.loading.relative{left:auto;padding:25px;position:relative;text-align:center;top:auto;width:100%}.loading-bar{display:inline-block;width:4px;height:20px;border-radius:4px;animation:loading 1s ease-in-out infinite;margin-left:2px}.loading-bar:nth-child(1){animation-delay:0;background-color:#00d9ba;opacity:1}.loading-bar:nth-child(2){animation-delay:.09s;background-color:#00d9ba;opacity:.8}.loading-bar:nth-child(3){animation-delay:.18s;background-color:#00d9ba;opacity:.6}.loading-bar:nth-child(4){animation-delay:.27s;background-color:#00d9ba;opacity:.4}@keyframes loading{0%{transform:scale(1)}20%{transform:scale(1, 2.2)}40%{transform:scale(1)}}.tyk-list{border:2px solid #c3c3e5;border-radius:18px;font-size:14px;list-style-type:none;margin:0;max-height:191px;padding:0;overflow:auto}.tyk-list--with-inline-label{display:flex}.tyk-list--with-inline-label>label{margin-right:20px}.tyk-list li{border-bottom:1px solid #c3c3e5;padding:10px 20px;font-family:\"OpenSans-SemiBold\"}.tyk-list li:last-child{border:none}.tyk-list--default{border-color:#c3c3e5}.tyk-list--primary{border-color:#a2a2cc}.tyk-list--primary li{border-color:#ededf9;color:#505071}.tyk-list--primary-light{border-color:#ededf9}.tyk-list--primary-light li{border-color:#ededf9;color:#505071}.tyk-list--success{border-color:#00d9ba;color:#00d9ba}.tyk-list--success li{border-color:#00d9ba}.tyk-list--danger{border-color:#ff6c7d;color:#505071}.tyk-list--danger li{border-color:#ffbbc5}ul.tyk-list--inline{align-items:center;display:flex}ul.tyk-list--inline li{padding:0 10px}ul.tyk-list--inline.tyk-list--with-separator li:not(:first-child){border-left:1px solid #36364c}.tyk-message{display:flex;align-items:center;border-radius:18px;margin-bottom:20px;padding:20px 20px 20px 20px}.tyk-message__content{flex-grow:1;margin-left:20px;margin-right:20px}.tyk-message>.tyk-icon:first-child{width:32px;height:32px;flex-shrink:0;border-radius:50%;color:#fff}.tyk-message>.tyk-icon:first-child:before{display:flex;width:100%;height:100%;align-items:center;justify-content:center}.tyk-message>.tyk-icon:last-child{cursor:pointer}.tyk-message--default{background-color:#ededf9;border:2px solid #505071;color:#505071}.tyk-message--default>.tyk-icon:first-child{background-color:#505071}.tyk-message--default>.tyk-icon:first-child{transform:rotate(180deg)}.tyk-message--info{background-color:#d3ebef;border:2px solid #82bbc6;color:#82bbc6}.tyk-message--info>.tyk-icon:first-child{background-color:#82bbc6}.tyk-message--success{background-color:#c2f2e9;border:2px solid #00b798;color:#00b798}.tyk-message--success>.tyk-icon:first-child{background-color:#00b798}.tyk-message--warning{background-color:#ffe885;border:2px solid #d6b218;color:#c58c11}.tyk-message--warning>.tyk-icon:first-child{background-color:#d6b218}.tyk-message--danger{background-color:#f5ccd1;border:2px solid #ff6c7d;color:#ea4766}.tyk-message--danger>.tyk-icon:first-child{background-color:#ff6c7d}.tyk-modal{--theme-header-height: 15px;--theme-header-icon-size: 65px;align-items:center;bottom:0;left:0;pointer-events:none;position:fixed;right:0;top:0;z-index:-1}.tyk-modal .tyk-panel{border:2px solid #43435b;box-shadow:none;-webkit-box-shadow:none}.tyk-modal .tyk-modal__dialog{opacity:0;transition:all .2s ease}.tyk-modal.opened{display:flex;z-index:1080}.tyk-modal.opened .tyk-modal__dialog{display:flex;max-height:92vh;opacity:1;pointer-events:all}.tyk-modal.appear-enter-done .tyk-modal__dialog{opacity:1;margin-top:0}.tyk-modal__theme-header{position:absolute;top:-1px;left:0;right:0;height:var(--theme-header-height);border-top-left-radius:18px;border-top-right-radius:18px}.tyk-modal__theme-header .tyk-icon{position:absolute;left:calc(50% - var(--theme-header-icon-size)/2);top:calc((var(--theme-header-icon-size) - var(--theme-header-height))/-2);width:var(--theme-header-icon-size);height:var(--theme-header-icon-size);border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:25px;color:#fff}.tyk-modal--theme-success .tyk-modal__theme-header{background-color:#00d9ba}.tyk-modal--theme-success .tyk-modal__theme-header .tyk-icon{background-color:#00d9ba}.tyk-modal--theme-warning .tyk-modal__theme-header{background-color:#d6b218}.tyk-modal--theme-warning .tyk-modal__theme-header .tyk-icon{background-color:#d6b218}.tyk-modal--theme-danger .tyk-modal__theme-header{background-color:#ff6c7d}.tyk-modal--theme-danger .tyk-modal__theme-header .tyk-icon{background-color:#ff6c7d}.tyk-modal__dialog{opacity:0;margin:0 auto;margin-top:-5%;pointer-events:all;transition:all .2s linear;width:85%}@media only screen and (min-width: 768px){.tyk-modal__dialog{width:600px}}@media only screen and (min-width: 768px){.tyk-modal__dialog.tyk-modal--lg{width:800px}}.tyk-modal__content{background:#fff;border-radius:18px;display:flex;flex-direction:column;position:relative;width:100%}.tyk-modal__body{flex:1;overflow:auto;--padding-top: calc(25px + (var(--theme-header-icon-size) - var(--theme-header-height)) / 2);padding:var(--padding-top) 25px 25px}.tyk-modal__body.no-padding{padding:0}.tyk-modal__footer{align-items:center;display:flex;justify-content:flex-end;padding:25px}.tyk-modal__footer>:not(:first-child){margin-left:5px}.tyk-modal__backdrop{background-color:#505071;border:none;bottom:0;display:none;left:0;position:fixed;right:0;top:0;width:100%;z-index:1079}.tyk-modal__backdrop.opened{display:block;opacity:.5;transition:opacity .2s ease}.tyk-modal__backdrop.fade-enter-done{opacity:.5}.tyk-modal__header{--padding-top: calc(25px + (var(--theme-header-icon-size) - var(--theme-header-height)) / 2);padding:var(--padding-top) 25px 25px;align-items:center;border-bottom:1px solid #ededf9;display:flex;width:100%}.tyk-modal--theme-none .tyk-modal__header{padding-top:25px}.tyk-modal__header button{margin-left:auto;padding:0 5px}.tyk-modal__header+.tyk-modal__body{padding-top:25px}.tyk-modal__title{font-family:\"OpenSans-SemiBold\";font-weight:500;margin:0;width:100%}.tyk-navigation{background-color:#fff;height:100%;overflow:auto;padding:0;width:100%}.tyk-navigation .tyk-navigation-item{width:100%}.tyk-navigation .tyk-navigation-item a{color:#505071;display:flex;padding:10px 20px;text-decoration:none;transition:all .2s ease}.tyk-navigation .tyk-navigation-item a:hover{background-color:#a2a2cc;color:#fff}.tyk-navigation .tyk-navigation-item a.active{background-color:#505071;color:#fff}.tyk-nav-bar{align-items:center;border:none;background-color:#fff;font-family:\"OpenSans-regular\";color:#36364c;margin:0;padding:0 20px 0 20px;width:100%;z-index:8;transition:all .2s linear}.tyk-nav-bar__pre{align-self:flex-end;color:#505071;flex-basis:100%}.tyk-nav-bar__pre a{font-family:\"OpenSans-Bold\";font-size:12px;line-height:16px;color:#505071}.tyk-nav-bar.tyk-nav-bar__with-tabs .tyk-tabs--default>ul li button{padding-top:0}@media screen and (max-width: 1024px){.tyk-nav-bar{padding-left:20px}.menu-opened .tyk-nav-bar{transform:translate(245px)}}.tyk-nav-bar h1{color:#36364c}.tyk-nav-bar h4{margin:0}.tyk-nav-bar .tyk-nav-bar__wrapper{align-items:center;padding-bottom:0;display:flex;flex-wrap:wrap;height:92px}.tyk-nav-bar .tyk-nav-bar__wrapper.tyk-nav-bar--align-top{align-items:flex-start}@media screen and (max-width: 1024px){.tyk-nav-bar .tyk-nav-bar__wrapper{padding-left:0}}.tyk-nav-bar .tyk-nav-bar__wrapper h1{font-size:25px;font-family:\"smoolthan_bold\";line-height:30px;margin:0;padding-right:10px}.tyk-nav-bar .tyk-nav-bar__wrapper h4{padding-right:10px}.tyk-nav-bar .tyk-nav-bar__wrapper .tyk-nav-bar__container{align-items:center;display:flex;flex-grow:1;justify-content:space-between}.tyk-nav-bar .tyk-nav-bar__wrapper .tyk-nav-bar__left{flex-grow:1}.tyk-nav-bar .tyk-nav-bar__wrapper .tyk-nav-bar__right{margin-left:auto}.tyk-panel{background:#fff;border-radius:0;margin-bottom:20px;font-family:\"OpenSans-SemiBold\";position:relative}.tyk-panel.has-error,.tyk-panel .tyk-panel.has-error{border:2px solid #ff6c7d}.tyk-panel__header{align-items:center;border-bottom:1px solid #e1e1e1;display:flex;font-family:\"OpenSans-regular\"}.tyk-panel__header>.tyk-icon,.tyk-panel__header>.tyk-tooltip__wrapper{margin-left:5px}.tyk-panel .tyk-panel{border:2px solid #c3c3e5;box-shadow:none;-webkit-box-shadow:none}.tyk-panel--blank.tyk-panel--collapsed{margin-bottom:20px}.tyk-panel--blank.tyk-panel--collapsed .tyk-panel__header{margin-bottom:0}.tyk-panel--blank .tyk-panel__header{margin-bottom:-20px;padding:20px 25px;background-color:#fff;border:none;color:#36364c;font-size:17px;line-height:23px}.tyk-panel--primary{background-color:rgba(0,0,0,0)}.tyk-panel--primary .tyk-panel__header{background-color:#a2a2cc;border:none;color:#fff;font-size:17px;line-height:23px}.tyk-panel--primary .tyk-panel__body{background-color:#fff;border:none;color:#505071;font-size:17px;line-height:23px}.tyk-panel--primary .tyk-panel__header{border:none}.tyk-panel--primary .tyk-form-group label{color:#505071}.tyk-panel--primary .tyk-toggle .tyk-toggle__label{color:#505071}.tyk-panel--success .tyk-panel__header{background-color:#00d9ba;border:none;color:#fff;font-size:17px;line-height:23px}.tyk-panel--danger .tyk-panel__header{background-color:#ff6c7d;border:none;color:#fff;font-size:17px;line-height:23px}.tyk-panel--warning .tyk-panel__header{background-color:#d6b218;border:none;color:#fff;font-size:17px;line-height:23px}.tyk-panel__body{background-color:#fff;border-radius:0;font-family:\"OpenSans-regular\";padding:25px;position:relative;transition:height .2s}.tyk-panel__body~.tyk-panel__header{border-bottom-left-radius:0;border-bottom-right-radius:0}.tyk-panel__body.no-padding{padding:0}.tyk-panel__header{border-radius:0;border-bottom-left-radius:0;border-bottom-right-radius:0;font-family:\"OpenSans-SemiBold\";overflow:hidden;padding:10px 25px;position:relative}.tyk-panel--collapsed .tyk-panel__header{border-bottom-left-radius:0;border-bottom-right-radius:0}.tyk-panel__header~.tyk-panel__body{border-top-left-radius:0;border-top-right-radius:0}.tyk-panel__headerh3{margin:0}.tyk-panel__header ng-transclude{vertical-align:middle}.tyk-panel__header.collapsable{cursor:pointer}.tyk-panel__icon-collapse--right .tyk-panel__header.collapsable{padding-right:48px}.tyk-panel__icon-collapse--left .tyk-panel__header.collapsable{padding-left:48px}.tyk-panel__header .collapsable__arrow-right{font-size:14px;position:absolute;padding:10px;right:10px;top:calc(50% - 21px)}.tyk-panel__header .collapsable__arrow-left{font-size:14px;position:absolute;padding:8px 0px 10px 20px;left:0px;top:calc(50% - 21px)}.tyk-panel__footer{align-items:center;border-top:1px solid #ededf9;display:flex;justify-content:flex-end;padding:25px}.tyk-panel__footer>:not(:first-child){margin-left:5px}.tyk-pill{align-items:center;border-radius:18px;display:inline-flex;font-size:12px;line-height:19px;margin:0 0 10px 0;padding:6px 15px;font-family:\"OpenSans-SemiBold\"}.tyk-pill--square{border-radius:8px}.tyk-pill i{font-size:12px}.tyk-pill+.tyk-pill{margin-right:10px}.tyk-pill button+span{margin-left:10px}.tyk-pill span+button{margin-left:10px}.tyk-pill:first-child{margin-right:10px}.tyk-pill:last-child{margin-right:0}.tyk-pill--default{background-color:#36364c;color:#fff}.tyk-pill--default i{color:#fff}.tyk-pill--default-outline{box-shadow:inset 0px 0px 0px 2px #36364c;color:#505071}.tyk-pill--default-outline i{color:#505071}.tyk-pill--primary{background-color:#a2a2cc;color:#fff}.tyk-pill--primary i{color:#fff}.tyk-pill--primary-outline{box-shadow:inset 0px 0px 0px 2px #a2a2cc;color:#505071}.tyk-pill--primary-outline i{color:#505071}.tyk-pill--success{background-color:#00d9ba;color:#fff}.tyk-pill--success i{color:#fff}.tyk-pill--success-outline{box-shadow:inset 0px 0px 0px 2px #00d9ba;color:#505071}.tyk-pill--success-outline i{color:#505071}.tyk-pill--danger{background-color:#ff6c7d;color:#fff}.tyk-pill--danger i{color:#fff}.tyk-pill--danger-outline{box-shadow:inset 0px 0px 0px 2px #ff6c7d;color:#505071}.tyk-pill--danger-outline i{color:#505071}.tyk-pill--warning{background-color:#d6b218;color:#fff}.tyk-pill--warning i{color:#fff}.tyk-pill--warning-outline{box-shadow:inset 0px 0px 0px 2px #d6b218;color:#505071}.tyk-pill--warning-outline i{color:#505071}.tyk-pill--info{background-color:#82bbc6;color:#fff}.tyk-pill--info i{color:#fff}.tyk-pill--info-outline{box-shadow:inset 0px 0px 0px 2px #82bbc6;color:#505071}.tyk-pill--info-outline i{color:#505071}.tyk-ui-reveal-wrapper{display:flex;flex-direction:column;justify-content:flex-end;align-items:stretch;width:100%;height:100%;z-index:1000;position:absolute;bottom:0;left:0;pointer-events:none}.tyk-ui-reveal-wrapper__panel{max-height:calc(100% - 2rem);background-color:#fff;padding:0;margin:0;overflow-y:auto;display:flex;flex-direction:column;pointer-events:all;flex-shrink:0;overflow:auto}.tyk-ui-reveal-wrapper__hole{flex-grow:1;opacity:0;width:100%;background-color:green;-webkit-user-select:none;user-select:none;pointer-events:none;z-index:-1}.tyk-ui-reveal-wrapper__gutter{height:2rem;width:100%;cursor:row-resize;display:flex;background-color:#a2a2cc;z-index:2;pointer-events:all;justify-content:space-between;align-items:stretch;position:relative;box-shadow:0 5px 10px rgba(0,0,0,.3)}.tyk-ui-reveal-wrapper__gutter__headerleft,.tyk-ui-reveal-wrapper__gutter__headerright{display:flex;align-items:center;flex:1}.tyk-ui-reveal-wrapper__gutter__headerleft{justify-content:flex-start}.tyk-ui-reveal-wrapper__gutter__headerright{justify-content:flex-end}.tyk-ui-reveal-wrapper__gutter__logo{width:1rem;height:1rem;-webkit-user-select:none;user-select:none;pointer-events:none;padding:.2rem;z-index:2;background-image:url(\"../images/drag.svg\");align-self:center}.tyk-ui-reveal-wrapper__gutter__logo:hover{border:dashed}.tyk-sidebar{background-color:#fff;height:calc(100vh - 58px);flex:0 0 280px;padding:0;position:-webkit-sticky;position:sticky;overflow:auto;top:58px}.tyk-table{border-collapse:collapse;border-spacing:0;background-color:#fff;border-radius:18px;width:100%}.tyk-table__wrapper{border:2px solid #c3c3e5;border-radius:18px;overflow:auto}.tyk-table__wrapper--no-border{border:none}.tyk-table__wrapper.no-innner-horizontal-borders .tyk-table>thead th,.tyk-table__wrapper.no-innner-horizontal-borders .tyk-table>tbody td{border-right:none}.tyk-table>thead th{border-right:1px solid #c3c3e5;color:#505071;font-size:14px;line-height:19px;font-family:\"OpenSans-Bold\";text-transform:uppercase}.tyk-table>thead th:last-child{border-right:none}.tyk-table>thead th i{font-size:12px}.tyk-table>thead th .tyk-button{background:none;color:#36364c;padding:0}.tyk-table>thead th{padding:15px 10px}.tyk-table>tbody tr:hover{background:rgba(237,237,249,.4)}.tyk-table>tbody td{border-right:1px solid #c3c3e5;font-size:14px;line-height:19px;font-family:\"OpenSans-regular\";padding:5px 10px;vertical-align:middle}.tyk-table>tbody td:last-child{border-right:none}.tyk-table>tbody td.fit{white-space:nowrap;width:1%}.tyk-table>tbody td input:not([type=checkbox]):not([type=radio]){margin-top:15px}.tyk-table>tbody td a{color:#505071;font-family:\"OpenSans-SemiBold\"}.tyk-table>tbody td label{margin:0}.tyk-table>tbody td input[type=checkbox]{margin:0}.tyk-table tbody>tr{border-top:1px solid #c3c3e5;transition:all .4s linear;border-radius:18px}.tyk-table tbody>tr.clickable{cursor:pointer}.tyk-table>tbody tr td:first-child,.tyk-table>thead tr th:first-child{padding-left:20px}.tyk-table>tbody tr td:first-child.with-icon,.tyk-table>thead tr th:first-child.with-icon{padding-left:15px}.tyk-table>tbody tr td:last-child,.tyk-table>thead tr th:last-child{padding-right:20px}.tyk-table>tbody tr td:last-child.with-icon,.tyk-table>thead tr th:last-child.with-icon{padding-right:15px}.tyk-table .tyk-pagination{padding:20px 25px}.tyk-table .tyk-pagination li:first-child{margin-left:auto}.tyk-table .nowrap{white-space:nowrap}.tyk-table .wrap{word-break:break-all}.tyk-table-search{padding:10px 25px 0 25px}.tyk-table-search label{font-size:14px;text-transform:uppercase}.header-sort{padding-left:3px;padding-top:5px;vertical-align:middle}.new-table-pagination{float:right}.selectable>div{margin-left:20px}.scrollable{display:block;overflow:auto}.fixed-header{background:#fff;position:sticky;top:0}.tyk-table.has-error,.tyk-table__wrapper.has-error{border:2px solid #ff6c7d !important}.tyk-tabs--default>ul{display:flex;list-style-type:none;margin:0;padding:0;overflow:auto}.tyk-tabs--default>ul li{display:flex;white-space:nowrap;margin-right:0px}.tyk-tabs--default>ul li:last-child{margin-right:0}.tyk-tabs--default>ul li.active button,.tyk-tabs--default>ul li button:hover{border-bottom-color:#00d9ba;color:#505071;opacity:1}.tyk-tabs--default>ul li button{background:none;border:none;border-bottom:4px solid rgba(0,0,0,0);color:#505071;cursor:pointer;font-size:14px;font-family:\"OpenSans-SemiBold\";padding:10px 2px 3px 2px;margin-right:20px;transition:all .2s linear;opacity:.7}.tyk-tabs--default>ul li button:focus{outline:none}.tyk-tab__content{padding:25px}.tyk-toast__container{bottom:0;min-width:300px;position:fixed;right:20px;z-index:11}.tyk-toast__message{position:relative}.tyk-toast-message__button{color:#505071;height:20px;line-height:1;padding:5px;position:absolute;right:5px;top:5px;width:20px}.tyk-toast-message__button:hover{background:rgba(255,255,255,.3);color:#505071}.floating-container{position:fixed;top:-9999px;overflow:auto;z-index:1080}.tyk-combobox2{outline:none}.tyk-combobox2.disabled .tyk-form-control{border:2px solid #c3c3e5 !important;background-color:#ededf9;color:#505071;cursor:not-allowed}.tyk-combobox2.disabled .tyk-combobox2__current-values .tyk-pill--combobox button{cursor:not-allowed}.tyk-combobox2.disabled:not(.is-expand-mode) .tyk-combobox2__values-container-trigger{cursor:not-allowed}.tyk-combobox2.disabled .tyk-combobox2__entry-field{background-color:rgba(0,0,0,0);cursor:not-allowed}.tyk-combobox2 .tyk-form-control{display:flex;flex-direction:row;position:relative;min-height:40px;height:auto;padding:0}.tyk-combobox2 .tyk-form-control:focus-within{outline:none;border:2px solid #00d9ba}.tyk-combobox2__current-values{display:flex;flex-grow:1;flex-wrap:wrap;padding-top:2px;padding-bottom:2px;padding-left:10px;max-width:calc(100% - 40px)}.tyk-combobox2__current-values.expand-mode{max-height:1000px;overflow:hidden;transition:max-height 1s ease}.tyk-combobox2__current-values--collapsed.expand-mode{max-height:38px;transition:max-height .2s ease}.tyk-combobox2__current-values .tyk-pill--combobox{margin-top:3px;margin-bottom:3px;background-color:#f0f0f0;border-radius:10px;color:#505071;padding:5px 10px;max-width:100%;max-height:26px}.tyk-combobox2__current-values .tyk-pill--combobox button{background:none;border:none;cursor:pointer;width:23px;outline:none}.tyk-combobox2__current-values .tyk-pill--combobox button+span{margin-left:0}.tyk-combobox2__current-values .tyk-pill--combobox span{overflow:hidden;text-overflow:ellipsis}.tyk-combobox2__current-values .tyk-pill--combobox i{margin-right:5px}.tyk-combobox2__entry-field{border:none;line-height:30px}.tyk-combobox2__entry-field:focus,.tyk-combobox2__entry-field:active{border:none;outline:none}.tyk-combobox2__entry-field::placeholder{color:#a2a2cc;font-family:\"OpenSans-SemiBold\"}.tyk-combobox2__text-value{font-family:\"OpenSans-SemiBold\";font-size:14px;line-height:19px;padding:9px 5px;width:100%;overflow:hidden;text-overflow:ellipsis;line-height:1;outline:none}.tyk-combobox2__text-value.overflow-single{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tyk-combobox2__text-value.is-placeholder{color:#a2a2cc;font-family:\"OpenSans-SemiBold\"}.tyk-combobox2__values-container-trigger{position:relative;flex-basis:40px;display:flex;justify-content:center;align-items:center;cursor:pointer;outline:none;transition:all .2s}.tyk-combobox2__values-container-trigger--expanded{transform:rotate(180deg)}.tyk-combobox2__values-container-trigger .tyk-icon{height:14px}.tyk-form-group--rounded-corners .tyk-combobox2-disabled-overlay{border-radius:calc(18px - 2px)}.tyk-combobox2__combobox-dropdown{display:flex;flex-direction:column;border:2px solid #c3c3e5;background-color:#fff}.tyk-combobox2__combobox-dropdown.tyk-form-group--rounded-corners{border-radius:18px}.tyk-combobox2__combobox-dropdown .tyk-combobox2__combobox-search{background-color:#fff;position:sticky;top:0;padding:10px 20px}.tyk-combobox2__combobox-dropdown .tyk-combobox2__combobox-search+.combobox-list{border-top:1px solid #c3c3e5}.tyk-combobox2__combobox-dropdown .tyk-combobox2__combobox-list{max-height:255px}.tyk-combobox2__combobox-dropdown .tyk-combobox2__combobox-list li{display:flex;cursor:pointer;padding:9px 20px;transition:all .2s;font-family:\"OpenSans-SemiBold\"}.tyk-combobox2__combobox-dropdown .tyk-combobox2__combobox-list li:hover,.tyk-combobox2__combobox-dropdown .tyk-combobox2__combobox-list li.active{background-color:#ededf9}.tyk-combobox2__combobox-dropdown .tyk-combobox2__combobox-list li.disabled{color:#c3c3e5;background-color:initial}.tyk-combobox2__combobox-dropdown .tyk-combobox2__combobox-list li+li{border-top:1px solid #c3c3e5}.tyk-combobox2__combobox-dropdown .tyk-combobox2__combobox-list li i{margin-right:5px}.tyk-combobox2__combobox-dropdown .tyk-combobox2__combobox-list li .item-name{overflow:hidden;text-overflow:ellipsis;line-height:16px}.tyk-combobox2__values-container-trigger{color:#505071}.tyk-combobox2__combobox-dropdown.tyk-form-group--rounded-corners{z-index:1081}.tyk-checkbox label{display:flex;align-items:flex-start;padding-left:20px}.tyk-checkbox label input{margin-left:-20px;margin-top:5px}.tyk-checkbox--theme-light label{color:#fff}.tyk-checkbox--theme-light.tyk-checkbox--is-disabled label{color:#fff}.tyk-checkbox--is-disabled label,.tyk-checkbox--is-disabled p{cursor:not-allowed;opacity:.5}.flatpickr-day.selected,.flatpickr-day.startRange,.flatpickr-day.endRange,.flatpickr-day.selected.inRange,.flatpickr-day.startRange.inRange,.flatpickr-day.endRange.inRange,.flatpickr-day.selected:focus,.flatpickr-day.startRange:focus,.flatpickr-day.endRange:focus,.flatpickr-day.selected:hover,.flatpickr-day.startRange:hover,.flatpickr-day.endRange:hover,.flatpickr-day.selected.prevMonthDay,.flatpickr-day.startRange.prevMonthDay,.flatpickr-day.endRange.prevMonthDay,.flatpickr-day.selected.nextMonthDay,.flatpickr-day.startRange.nextMonthDay,.flatpickr-day.endRange.nextMonthDay{background:#00d9ba !important;border-color:#00d9ba !important}.tyk-dropdown{display:inline-block}.tyk-dropdown+.tyk-button,.tyk-dropdown+.tyk-dropdown,.tyk-dropdown+.tyk-toggle{margin-left:10px}.tyk-dropdown--block{left:20px;right:20px}.tyk-dropdown--relative{left:auto;right:auto}.tyk-dropdown--custom{padding:20px 25px}.tyk-dropdown label{display:block}.tyk-dropdown__trigger{position:relative}.tyk-dropdown.theme-list .tyk-button{background:#fff;border:2px solid #36364c;border-radius:18px;color:#505071}.tyk-dropdown.theme-list .tyk-button:hover,.tyk-dropdown.theme-list .tyk-button:active,.tyk-dropdown.theme-list .tyk-button:active:focus,.tyk-dropdown.theme-list .tyk-button:focus{background:#fff;border-color:#43435b;color:#505071}.tyk-dropdown-menu{background:#fff;border:2px solid #c3c3e5;border-radius:18px;-webkit-filter:drop-shadow(1px 2px 1px rgba(0, 0, 0, 0.1));filter:drop-shadow(1px 2px 1px rgba(0, 0, 0, 0.1));list-style-type:none;margin:0;margin-top:3px;overflow:hidden;padding:0;z-index:1081}.tyk-dropdown-menu.tyk-dropdown--scrollable{overflow:auto}.tyk-dropdown-menu .tyk-panel{margin:0}.tyk-dropdown-menu.opened{display:flex;flex-direction:column;position:absolute}.tyk-dropdown-menu>li{background:#fff;border-bottom:1px solid #fff;display:flex;position:relative;z-index:7}.tyk-dropdown-menu>li:last-child{border:none}.tyk-dropdown-menu>li i{left:7px;position:absolute;top:9px}.tyk-dropdown-menu>li>a{cursor:pointer;color:#505071;display:flex;font-size:12px;padding:7px 24px;text-transform:uppercase;text-decoration:none;width:100%}.tyk-dropdown-menu>li>a:hover{color:#505071}.tyk-dropdown-menu>li>a .badge{background:#505071;color:#fff;font-size:10px;margin-top:-4px;margin-left:6px}.tyk-dropdown-menu>li>a:hover{background-color:#ededf9;text-decoration:none}.tyk-dropdown--relative.opened{position:relative}.tyk-editable-list__submit-btn{white-space:nowrap}.tyk-editable-list__form{align-items:center;display:flex}.tyk-editable-list__form .tyk-form-group{margin-bottom:0}.tyk-editable-list__form--sticked{margin-left:0}.tyk-editable-list__form--sticked button{border-top-left-radius:0px;border-bottom-left-radius:0px;border-top-right-radius:3px;border-bottom-right-radius:3px;padding-bottom:11px;padding:10px 15px 11px 15px}.tyk-editable-list__form span.inline{margin-top:0}.tyk-editable-list__form>span{margin-left:15px}.tyk-editable-list__form>span.inline-with-label{align-self:flex-end}.tyk-editable-list__header{padding-top:15px;border-bottom:1px solid #43435b;color:#505071;font-size:11px;padding-bottom:15px;text-transform:uppercase}.tyk-editable-list__header .tyk-row{margin:0}.tyk-editable-list-items{overflow:hidden;list-style:none;padding:20px 0 0 0}.tyk-editable-list-items .edit-mode-wrapper.table button{margin-top:23px}.tyk-editable-list-items .tyk-row{margin:0}.tyk-editable-list-items button[disabled]{cursor:not-allowed}.tyk-editable-list-items.tyk-editable-list-items--inline{align-items:center;color:#505071;display:flex;flex-wrap:wrap}.tyk-editable-list-items li{border-top:1px solid #c3c3e5;transition:all .2s linear}.tyk-editable-list-items li.tyk-editable-list-item--inline{background-color:#c3c3e5;border-radius:25px;border:none;color:#fff;float:left;font-family:\"OpenSans-SemiBold\";margin-bottom:10px;margin-right:15px;padding:0 15px;white-space:nowrap}.tyk-editable-list-items li.tyk-editable-list-item--inline .tyk-editable-list-item__text{color:#505071;padding:5px 0}.tyk-editable-list-items li.tyk-editable-list-item--inline .tyk-editable-list-action__button.on-edit{margin-top:0}.tyk-editable-list-items li:first-child{border-top:none}.tyk-editable-list-items li .tyk-editable-list-item__text{display:flex;padding:10px 0}.tyk-editable-list-items li .tyk-editable-list-item__text>span{flex-grow:1}.tyk-editable-list-items li .tyk-editable-list-item__text>div:first-child{flex-grow:1}.tyk-editable-list-items li .tyk-editable-list-item__text>div:first-child .error-message{margin:0}.tyk-editable-list-items li .tyk-editable-list-items{overflow:hidden;padding-bottom:10px}.tyk-editable-list-items li .tyk-editable-list{border-top:5px solid #43435b;background:#ededf9;padding:10px 15px}.tyk-editable-list-items .tyk-editable-list-item__text{display:block;word-wrap:break-word;word-break:break-all}.tyk-editable-list-items .tyk-editable-list-action__button{border:none;background:rgba(0,0,0,0)}.tyk-editable-list-items .tyk-editable-list-action__button.on-edit{margin-left:10px}.tyk-editable-list-items .tyk-editable-list-item-controls{flex-grow:0;text-align:right}.tyk-editable-list-item__controls{text-align:right}.tyk-editable-list-items.table{background-color:#fff;border-radius:18px;border:2px solid #c3c3e5;padding:0 !important}.tyk-editable-list-items.table li{border-color:#c3c3e5}.tyk-editable-list-items.table li:hover{background:#ededf9}.tyk-editable-list-items.table .tyk-editable-list-item__text{background:rgba(0,0,0,0)}.tyk-editable-list-items.table .tyk-editable-list-action__button{border-radius:6px;cursor:pointer;margin-right:10px}.tyk-editable-list__header{background-color:#fff;border-top-left-radius:18px;border-top-right-radius:18px;border:2px solid #c3c3e5;border-bottom:1px solid #c3c3e5 !important;color:#505071 !important;font-family:\"OpenSans-Bold\";margin-top:10px}.tyk-editable-list__header+.tyk-editable-list-items.table{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.editable-list__header{align-items:center;display:flex;margin-bottom:10px}.editable-list__header .tyk-button{margin-left:auto}.editable-list__wrapper.has-error .editable-list__list{border:2px solid #ff6c7d}.editable-list__list{border:2px solid #c3c3e5;border-radius:18px;display:flex;flex-direction:column-reverse}.editable-list__item{border-bottom:1px solid #c3c3e5;display:flex;flex-wrap:nowrap;width:100%}.editable-list__item:first-child{border-bottom:none}.editable-list__item-header{border-bottom:1px solid #c3c3e5;color:#505071;font-size:14px;line-height:19px;font-family:\"OpenSans-Bold\";text-transform:uppercase}.editable-list__item-header .editable-list__item-cell{padding:10px}.editable-list__item-cell{border-left:1px solid #c3c3e5;overflow:hidden;padding:0 10px}.editable-list__item-cell .tyk-form-control--readonly{overflow:hidden;text-overflow:ellipsis;word-break:break-all}.editable-list__item-cell:first-child{border-left:none;padding-left:15px}.editable-list__item-cell:last-child{padding-right:15px}.editable-list__item-cell .tyk-form-group{margin:10px 0;width:100%}.editable-list__item--size-1{display:flex;flex-grow:2;width:8.3333333333%}.editable-list__item--size-2{display:flex;flex-grow:3;width:16.6666666667%}.editable-list__item--size-3{display:flex;flex-grow:4;width:25%}.editable-list__item--size-4{display:flex;flex-grow:5;width:33.3333333333%}.editable-list__item--size-5{display:flex;flex-grow:6;width:41.6666666667%}.editable-list__item--size-6{display:flex;flex-grow:7;width:50%}.editable-list__item--size-7{display:flex;flex-grow:8;width:58.3333333333%}.editable-list__item--size-8{display:flex;flex-grow:9;width:66.6666666667%}.editable-list__item--size-9{display:flex;flex-grow:10;width:75%}.editable-list__item--size-10{display:flex;flex-grow:11;width:83.3333333333%}.editable-list__item--size-11{display:flex;flex-grow:12;width:91.6666666667%}.editable-list__item--size-12{display:flex;flex-grow:13;width:100%}.editable-list__item--size-fit{width:fit-content}.editable-list__item-action{align-items:flex-start;display:flex;justify-content:center;width:100px}.editable-list__item-action .tyk-button{margin-top:20px}.editable-list__item-action--read-only{color:#c3c3e5;align-items:center}.editable-list__item-action--read-only .tyk-button{margin-top:0}.tyk-file-input__wrapper{position:relative}.tyk-file-input__wrapper>input{padding:6px 20px}.tyk-file-input__wrapper>button{background:none;border:none;cursor:pointer;position:absolute;right:15px;top:9px}.tyk-multiselect{align-items:flex-start;border-radius:18px;flex-wrap:wrap;display:flex;margin-bottom:20px;width:100%}.tyk-multiselect .input-group .input-group-addon+.form-control{border-width:1px !important;border-left:none !important;border-top-left-radius:0 !important;border-top-right-radius:0 !important;border-bottom-left-radius:0 !important;border-bottom-right-radius:0 !important}.tyk-multiselect .input-group .input-group-addon{background:rgba(0,0,0,0) !important;border-width:1px !important;border-right:0 !important;border-top-left-radius:0 !important;border-top-right-radius:0 !important;border-bottom-left-radius:0 !important;border-bottom-right-radius:0 !important}.tyk-multiselect.has-error{border:2px solid #ff6c7d}.tyk-multiselect__header{background-color:#36364c;border-top-left-radius:18px;border-top-right-radius:18px;color:#fff;display:flex;width:100%}.tyk-multiselect__header>div{padding:10px 15px;width:50%}.tyk-multiselect__panel-wrapper{border:2px solid #c3c3e5;border-top:none;border-bottom-left-radius:18px;border-bottom-right-radius:18px;display:flex;flex:1;height:265px;width:100%}.tyk-multiselect__panel{display:flex;flex-direction:column;margin:0 0 0 -1px;position:relative;width:calc(50% + 1px)}.tyk-multiselect__panel:last-child{border-left:2px solid #c3c3e5}.tyk-multiselect__panel:last-child .tyk-form-group{margin-left:-1px;width:calc(100% + 2px)}.tyk-multiselect__panel .tyk-message{margin:20px 20px 0 20px}.tyk-multiselect__list{list-style-type:none;margin:0;padding:0}.tyk-multiselect__list--scroll{height:100%;overflow-y:auto}.tyk-multiselect__list>li{border-bottom:2px solid #c3c3e5;display:flex;flex-direction:column;padding:10px 15px}.tyk-multiselect__list>li>div{align-items:start;display:flex;width:100%}.tyk-multiselect__list>li .loading{justify-content:center}.tyk-multiselect__list>li:last-child{border-bottom:none}.tyk-multiselect-item__name{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tyk-multiselect .tyk-form-group{margin:0}.tyk-multiselect .tyk-multiselect-item__controls{display:flex;margin-left:auto;flex-wrap:nowrap}.tyk-multiselect .tyk-multiselect-item__controls .tyk-button{color:#505071;margin-left:5px}.tyk-multiselect .tyk-multiselect-item__controls .tyk-button:last-child{margin-left:0}.tyk-pagination{display:flex;list-style-type:none;margin:10px 0;padding:0}.tyk-pagination li{align-items:center;display:flex}.tyk-pagination li:first-child button{border-top-left-radius:18px;border-bottom-left-radius:18px}.tyk-pagination li:last-child button{border-top-right-radius:18px;border-bottom-right-radius:18px}.tyk-pagination span{margin:0 10px}.tyk-pagination button{background:#fff;border:none;font-size:14px;font-family:\"OpenSans-Bold\";cursor:pointer;color:#36364c;margin-left:-1px;padding:10px 15px}.tyk-pagination button:hover{background-color:#c2f2e9}.tyk-pagination .active button{background-color:#00d9ba;color:#fff}.tyk-radio label{align-items:center;display:flex}.tyk-radio--is-disabled label,.tyk-radio--is-disabled p{cursor:not-allowed;opacity:.5}.tyk-radio__description-text{padding:0 0 0 20px}.tyk-select{background:rgba(0,0,0,0) url(\"../images/arrow_down.svg\") no-repeat calc(100% - 15px) center;background-size:15px 15px}.tyk-selectable-list{margin-bottom:20px;width:100%}.tyk-selectable-list li:not(.tyk-selectable-list__no-items-message){font-family:\"OpenSans-SemiBold\";padding:0}.tyk-selectable-list li:not(.tyk-selectable-list__no-items-message) .tyk-message{margin-bottom:0}.tyk-selectable-list li:not(.tyk-selectable-list__no-items-message) label{font-family:\"OpenSans-SemiBold\";margin:0}.tyk-selectable-list li:not(.tyk-selectable-list__no-items-message)>label{align-items:center;cursor:pointer;display:flex;padding:10px 20px}.tyk-selectable-list li:not(.tyk-selectable-list__no-items-message)>label input[type=checkbox]{margin-left:auto}.tyk-selectable-list__item--with-icon input[type=checkbox]{visibility:hidden}textarea.tyk-form-control{height:auto}.tyk-toggle{display:inline-flex;flex-wrap:wrap;font-family:\"OpenSans-Bold\";font-size:14px;line-height:19px;white-space:nowrap}.tyk-toggle.block{margin-bottom:20px;width:100%}.tyk-toggle.block+.tyk-toggle{margin-left:0}.tyk-toggle.inline-label{align-items:center;flex-wrap:nowrap}.tyk-toggle__list--has-error{border:2px solid #ff6c7d}.tyk-toggle .tyk-toggle__label{display:block;font-family:\"OpenSans-SemiBold\";font-size:14px;padding:0;width:100%;color:#36364c}.tyk-toggle.inline-label .tyk-toggle__label{margin-right:10px;width:auto}.tyk-toggle+.tyk-button,.tyk-toggle+.tyk-dropdown,.tyk-toggle+.tyk-toggle{margin-left:10px}.tyk-toggle--disabled-true{cursor:not-allowed;opacity:.7}.tyk-toggle--column .tyk-toggle__list--separated{display:flex;flex-direction:column;margin-right:20px}.tyk-toggle--column .tyk-toggle__list--separated .tyk-toggle__item{background-color:#ededf9;margin-right:auto}.tyk-toggle__list{background:#ededf9;border-radius:25px;display:flex;list-style-type:none;margin:0;padding:0;position:relative}.tyk-toggle__list--separated{background:rgba(0,0,0,0);flex-wrap:wrap}.tyk-toggle--on-dark .tyk-toggle__list{background:#fff}.tyk-toggle--default .tyk-toggle__item--active span{color:#fff}.tyk-toggle--default .tyk-toggle__list--single .tyk-toggle__item--active,.tyk-toggle--default .tyk-toggle__list--separated .tyk-toggle__item--active{background-color:#36364c;color:#fff;border:2px solid rgba(0,0,0,0)}.tyk-toggle--default .tyk-toggle__list--single .tyk-toggle__item--active span,.tyk-toggle--default .tyk-toggle__list--separated .tyk-toggle__item--active span{color:#fff}.tyk-toggle--default .tyk-toggle__list--single .tyk-toggle__item--active:hover,.tyk-toggle--default .tyk-toggle__list--separated .tyk-toggle__item--active:hover{background-color:#36364c;color:#fff}.tyk-toggle--primary .tyk-toggle__item--active span{color:#fff}.tyk-toggle--primary .tyk-toggle__list--single .tyk-toggle__item--active,.tyk-toggle--primary .tyk-toggle__list--separated .tyk-toggle__item--active{background-color:#a2a2cc;color:#fff;border:2px solid rgba(0,0,0,0)}.tyk-toggle--primary .tyk-toggle__list--single .tyk-toggle__item--active span,.tyk-toggle--primary .tyk-toggle__list--separated .tyk-toggle__item--active span{color:#fff}.tyk-toggle--primary .tyk-toggle__list--single .tyk-toggle__item--active:hover,.tyk-toggle--primary .tyk-toggle__list--separated .tyk-toggle__item--active:hover{background-color:#a2a2cc;color:#fff}.tyk-toggle--success .tyk-toggle__item--active span{color:#fff}.tyk-toggle--success .tyk-toggle__list--single .tyk-toggle__item--active,.tyk-toggle--success .tyk-toggle__list--separated .tyk-toggle__item--active{background-color:#00b798;color:#fff;border:2px solid rgba(0,0,0,0)}.tyk-toggle--success .tyk-toggle__list--single .tyk-toggle__item--active span,.tyk-toggle--success .tyk-toggle__list--separated .tyk-toggle__item--active span{color:#fff}.tyk-toggle--success .tyk-toggle__list--single .tyk-toggle__item--active:hover,.tyk-toggle--success .tyk-toggle__list--separated .tyk-toggle__item--active:hover{background-color:#00b798;color:#fff}.tyk-toggle--danger .tyk-toggle__item--active span{color:#fff}.tyk-toggle--danger .tyk-toggle__list--single .tyk-toggle__item--active,.tyk-toggle--danger .tyk-toggle__list--separated .tyk-toggle__item--active{background-color:#ff6c7d;color:#fff;border:2px solid rgba(0,0,0,0)}.tyk-toggle--danger .tyk-toggle__list--single .tyk-toggle__item--active:hover,.tyk-toggle--danger .tyk-toggle__list--separated .tyk-toggle__item--active:hover{background-color:#ff6c7d;color:#fff}.tyk-toggle--warning .tyk-toggle__item--active span{color:#505071}.tyk-toggle--warning .tyk-toggle__list--single .tyk-toggle__item--active,.tyk-toggle--warning .tyk-toggle__list--separated .tyk-toggle__item--active{background-color:#d6b218;color:#505071;border:2px solid rgba(0,0,0,0)}.tyk-toggle--warning .tyk-toggle__list--single .tyk-toggle__item--active:hover,.tyk-toggle--warning .tyk-toggle__list--separated .tyk-toggle__item--active:hover{background-color:#d6b218;color:#505071}.tyk-toggle--primary-gradient .tyk-toggle__item--active span{color:#fff}.tyk-toggle--primary-gradient .tyk-toggle__list--single .tyk-toggle__item--active,.tyk-toggle--primary-gradient .tyk-toggle__list--separated .tyk-toggle__item--active{border-image:linear-gradient(to right, #A2A2CC, #505071, #A2A2CC) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #A2A2CC, #505071, #A2A2CC);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-toggle--primary-gradient .tyk-toggle__list--single .tyk-toggle__item--active span,.tyk-toggle--primary-gradient .tyk-toggle__list--separated .tyk-toggle__item--active span{color:#fff}.tyk-toggle--success-gradient .tyk-toggle__item--active span{color:#fff}.tyk-toggle--success-gradient .tyk-toggle__list--single .tyk-toggle__item--active,.tyk-toggle--success-gradient .tyk-toggle__list--separated .tyk-toggle__item--active{border-image:linear-gradient(to right, #00d9ba, #00B798, #00d9ba) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #00d9ba, #00B798, #00d9ba);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-toggle--success-gradient .tyk-toggle__list--single .tyk-toggle__item--active span,.tyk-toggle--success-gradient .tyk-toggle__list--separated .tyk-toggle__item--active span{color:#fff}.tyk-toggle--danger-gradient .tyk-toggle__item--active span{color:#fff}.tyk-toggle--danger-gradient .tyk-toggle__list--single .tyk-toggle__item--active,.tyk-toggle--danger-gradient .tyk-toggle__list--separated .tyk-toggle__item--active{border-image:linear-gradient(to right, #FF6C7D, #EA4766, #FF6C7D) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #FF6C7D, #EA4766, #FF6C7D);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-toggle--danger-gradient .tyk-toggle__list--single .tyk-toggle__item--active span,.tyk-toggle--danger-gradient .tyk-toggle__list--separated .tyk-toggle__item--active span{color:#fff}.tyk-toggle--warning-gradient .tyk-toggle__item--active span{color:#fff}.tyk-toggle--warning-gradient .tyk-toggle__list--single .tyk-toggle__item--active,.tyk-toggle--warning-gradient .tyk-toggle__list--separated .tyk-toggle__item--active{border-image:linear-gradient(to right, #FFE885, #D6B218, #FFE885) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #FFE885, #D6B218, #FFE885);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#505071}.tyk-toggle--warning-gradient .tyk-toggle__list--single .tyk-toggle__item--active span,.tyk-toggle--warning-gradient .tyk-toggle__list--separated .tyk-toggle__item--active span{color:#fff}.tyk-toggle__item{color:#fff;text-transform:uppercase;z-index:2;border:2px solid rgba(0,0,0,0)}.tyk-toggle__item:first-child{border-top-left-radius:25px;border-bottom-left-radius:25px}.tyk-toggle__item:last-child{border-top-right-radius:25px;border-bottom-right-radius:25px}.tyk-toggle__list--separated .tyk-toggle__item{background:tyk-toggle__list--separated;border-radius:25px;margin-bottom:5px;margin-top:5px;margin-right:10px}.tyk-toggle__list--separated .tyk-toggle__item:last-child{margin-right:0}.tyk-toggle__item input{display:none}.tyk-toggle__item label{cursor:pointer;font-family:\"OpenSans-Bold\";position:relative;margin:0;transition:all .2s ease}.tyk-toggle__list--single .tyk-toggle__item label{padding-left:45px}.tyk-toggle__list--single .tyk-toggle__item--active label{padding-left:25px;padding-right:45px}.tyk-toggle__list--single .tyk-toggle__item--active label .tyk-toggle__item-notch{left:calc(100% - 35px)}.tyk-toggle--on-dark .tyk-toggle__item:not(.tyk-toggle__item--active){color:#505071}.tyk-toggle--on-dark .tyk-toggle__item-notch--single{background:#ededf9}.tyk-toggle--sm label{padding:calc(3px + 2px) calc(15px + 2px);font-size:12px;line-height:16px;border-radius:20px}.tyk-toggle--sm .tyk-toggle__list--single label{padding-left:35px}.tyk-toggle--sm .tyk-toggle__list--single .tyk-toggle__item--active label{padding-left:17px;padding-right:35px}.tyk-toggle--sm .tyk-toggle__list--single .tyk-toggle__item--active label .tyk-toggle__item-notch{left:calc(100% - 27px)}.tyk-toggle--md label{padding:calc(8px + 2px) calc(23px + 2px);font-size:14px;line-height:16px;border-radius:20px}.tyk-toggle--lg label{padding:calc(13px + 2px) calc(23px + 2px);font-size:14px;line-height:16px;border-radius:20px}.tyk-toggle--lg .tyk-toggle__list--single label{padding-left:45px}.tyk-toggle--lg .tyk-toggle__list--single .tyk-toggle__item--active label{padding-left:25px;padding-right:45px}.tyk-toggle--lg .tyk-toggle__list--single .tyk-toggle__item--active label .tyk-toggle__item-notch{left:calc(100% - 43px)}.tyk-toggle__item-notch{border-radius:25px;bottom:2px;position:absolute;transition:all .2s ease;top:2px}.tyk-toggle__item-notch--single{background:#fff;left:2px;width:32px}.tyk-toggle--sm .tyk-toggle__item-notch--single{width:24px}.tyk-toggle--lg .tyk-toggle__item-notch--single{width:40px}.tyk-toggle__notch{border-radius:25px;left:0;position:absolute;bottom:4px;top:4px;transition:all .2s ease;width:100px;z-index:1}.tyk-toggle--default .tyk-toggle__notch{background-color:#36364c;color:#fff;border:2px solid rgba(0,0,0,0)}.tyk-toggle--default .tyk-toggle__notch:hover{background-color:#36364c;color:#fff}.tyk-toggle--primary .tyk-toggle__notch{background-color:#a2a2cc;color:#fff;border:2px solid rgba(0,0,0,0)}.tyk-toggle--primary .tyk-toggle__notch:hover{background-color:#a2a2cc;color:#fff}.tyk-toggle--success .tyk-toggle__notch{background-color:#00d9ba;color:#fff;border:2px solid rgba(0,0,0,0)}.tyk-toggle--success .tyk-toggle__notch:hover{background-color:#00d9ba;color:#fff}.tyk-toggle--danger .tyk-toggle__notch{background-color:#ff6c7d;color:#fff;border:2px solid rgba(0,0,0,0)}.tyk-toggle--danger .tyk-toggle__notch:hover{background-color:#ff6c7d;color:#fff}.tyk-toggle--warning .tyk-toggle__notch{background-color:#d6b218;color:#505071;border:2px solid rgba(0,0,0,0)}.tyk-toggle--warning .tyk-toggle__notch:hover{background-color:#d6b218;color:#505071}.tyk-toggle--primary-gradient .tyk-toggle__notch{border-image:linear-gradient(to right, #A2A2CC, #505071, #A2A2CC) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #A2A2CC, #505071, #A2A2CC);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-toggle--success-gradient .tyk-toggle__notch{border-image:linear-gradient(to right, #00d9ba, #00B798, #00d9ba) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #00d9ba, #00B798, #00d9ba);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-toggle--danger-gradient .tyk-toggle__notch{border-image:linear-gradient(to right, #FF6C7D, #EA4766, #FF6C7D) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #FF6C7D, #EA4766, #FF6C7D);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-toggle--warning-gradient .tyk-toggle__notch{border-image:linear-gradient(to right, #FFE885, #D6B218, #FFE885) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #FFE885, #D6B218, #FFE885);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#505071}.empty-toggle{padding:1px}.string-builder{position:relative;display:block}.string-builder__input{word-break:break-all;resize:none;overflow:hidden;background:rgba(0,0,0,0);position:absolute;border:none;font:inherit;display:block;z-index:1;width:100%;padding:0px;width:calc(100% - 35px)}.string-builder__input:focus,.string-builder__input:active{border:none;outline:none}.string-builder__styled{font:inherit;position:absolute;pointer-events:none;width:calc(100% - 35px);color:rgba(0,0,0,0);z-index:2;border:none;word-wrap:break-word;word-break:break-all}.string-builder__disabled{background-color:#ededf9 !important;color:#505071;cursor:not-allowed}.url-builder__options_name{font-weight:10px}.url-builder__options_description{color:gray}.string-builder-dropdown{display:flex;flex-direction:column;border:2px solid #c3c3e5;background-color:#fff}.string-builder-dropdown.tyk-form-group--rounded-corners{border-radius:18px}.string-builder-dropdown .string-builder-search{background-color:#fff;position:sticky;top:0;padding:10px 20px}.string-builder-dropdown .string-builder-search+.string-builder-list{border-top:1px solid #c3c3e5}.string-builder-dropdown .string-builder-list{max-height:255px}.string-builder-dropdown .string-builder-list li{cursor:pointer;padding:9px 20px;transition:all .2s;font-family:\"OpenSans-SemiBold\"}.string-builder-dropdown .string-builder-list li:hover,.string-builder-dropdown .string-builder-list li.active{background-color:#c3c3e5}.string-builder-dropdown .string-builder-list li+li{border-top:1px solid #c3c3e5}.string-builder-dropdown .string-builder-list li i{margin-right:5px}.string-builder-dropdown .string-builder-list li .item-name{overflow:hidden;text-overflow:ellipsis;line-height:16px}.invalid_token{box-shadow:0px 0px 0px 1px #ea4766 inset;border-radius:5px;background:#ffbbc5;color:#ea4766;padding:4px;pointer-events:all}.invalid_token .invalid_token--icon{margin-left:2px;color:#ea4766}.string_builder_trigger{background-color:#fff;border-radius:5px;padding:1px 6px;margin:0px 4px}.string-builder-footer>.tyk-form-control__error-message{padding:0px !important}.string-builder-footer>.tyk-form-control__help-block{padding:0px !important}.string-builder-search{padding-right:10px}.default-option-name{color:green}.data_source_argument{color:pink}.data_source_object{color:#8a2be2}*{box-sizing:border-box}body{background-color:#e1e1e1;color:#505071;font-size:14px;line-height:19px;font-family:\"OpenSans-regular\"}.tyk-main-wrapper{display:flex;flex-wrap:nowrap}.tyk-main-content-wrapper{flex:1}.well{background:rgba(0,0,0,0);border:2px solid #c3c3e5;border-radius:18px;box-shadow:none}.well.has-error{border-color:#ff6c7d}.title-medium{font-family:\"OpenSans-SemiBold\";color:#36364c;font-size:16px}.right-align{text-align:right !important}.left-align{text-align:left !important}.center-align{text-align:center !important}.left{float:left !important}.right{float:right !important}.hide{display:none !important}.no-margin{margin:0 !important}.no-margin-bottom{margin-bottom:0 !important}.no-margin-top{margin-top:0 !important}.no-margin-right{margin-right:0 !important}.no-margin-left{margin-right:0 !important}.disabled-section{color:#c3c3e5}.top-buffer-large{margin-top:20px !important}.top-buffer-small{margin-top:5px !important}.top-buffer-medium{margin-top:10px !important}.bottom-buffer-large{margin-bottom:20px !important}.bottom-buffer-small{margin-bottom:5px !important}.bottom-buffer-medium{margin-bottom:10px !important}.right-buffer-large{margin-right:20px !important}.right-buffer-small{margin-right:5px !important}.right-buffer-medium{margin-right:10px !important}.left-buffer-large{margin-left:20px !important}.left-buffer-small{margin-left:5px !important}.left-buffer-medium{margin-left:10px !important}.word-wrap{word-wrap:break-word;word-break:break-all}.clear-left{clear:left}.flex-container{display:flex}.vertical-center-align{align-items:center}.right-align-controls{align-items:center;display:flex;margin-left:auto}.inline-label{margin-right:15px}.nowrap{white-space:nowrap}","html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, article, aside, canvas, details, embed, figure, figcaption, footer, header, hgroup, menu, nav, output, ruby, section, summary, time, mark, audio, video {\n margin: 0;\n padding: 0;\n border: 0;\n font-size: 100%;\n font: inherit;\n vertical-align: baseline;\n}\n\n/* HTML5 display-role reset for older browsers */\n\narticle, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section {\n display: block; }\n\nbody {\n line-height: 1; }\n\nol, ul {\n list-style: none; }\n\nblockquote, q {\n quotes: none; }\n\nblockquote {\n &:before, &:after {\n content: '';\n content: none; } }\n\nq {\n &:before, &:after {\n content: '';\n content: none; } }\n\ntable {\n border-collapse: collapse;\n border-spacing: 0; }\n","@import 'variables';\r\n@import 'mixins';\r\n\r\n.container {\r\n max-width: $grid-max-width;\r\n margin: 0 auto;\r\n}\r\n\r\n.container,\r\n.container-fluid {\r\n padding: 0 $grid-gutter;\r\n}\r\n\r\n.tyk-row {\r\n display: flex;\r\n box-sizing: border-box;\r\n list-style: none;\r\n flex: 0 1 auto;\r\n flex-direction: row;\r\n flex-wrap: wrap;\r\n margin-left: -$grid-gutter;\r\n width: calc(100% + #{$grid-gutter});\r\n\r\n &.no-gutters {\r\n margin: 0;\r\n }\r\n\r\n &.tyk-row--gutterless {\r\n margin: 0;\r\n width: 100%;\r\n }\r\n\r\n &.tyk-row--reverse {\r\n flex-direction: row-reverse;\r\n }\r\n}\r\n\r\n.tyk-col {\r\n max-width: calc(100% - #{$grid-gutter});\r\n box-sizing: border-box;\r\n flex: 0 0 auto;\r\n flex-grow: 1;\r\n flex-basis: calc(100% - #{$grid-gutter});\r\n margin-left: $grid-gutter;\r\n width: calc(100% - #{$grid-gutter});\r\n\r\n &:last-child {\r\n margin-right: 0;\r\n }\r\n\r\n .tyk-row--gutterless & {\r\n margin: 0;\r\n }\r\n\r\n &.tyk-col--reverse {\r\n flex-direction: column-reverse;\r\n }\r\n\r\n &.tyk-col--align-bottom {\r\n align-self: flex-end;\r\n }\r\n\r\n &.tyk-col--align-top {\r\n align-self: flex-start;\r\n }\r\n\r\n &.tyk-col--align-center {\r\n align-self: center;\r\n }\r\n\r\n &.tyk-col--align-baseline {\r\n align-self: baseline;\r\n }\r\n\r\n &.tyk-col--align-stretch {\r\n align-self: stretch;\r\n }\r\n}\r\n\r\n@each $breakpoint in $grid-breakpoints {\r\n $name: nth($breakpoint, 1);\r\n $declaration: nth($breakpoint, 2);\r\n\r\n @media screen and #{$declaration} {\r\n @include grid-loop($name);\r\n }\r\n}\r\n","$font-path: '../fonts/' !default;\n$component-images-path: '../images' !default;\n$general-border-radius: 18px !default;\n$general-border-width: 2px !default;\n\n$theme-colors: (\n 'default': (\n 'base': #36364C,\n 'base-light': #7A79A1,\n 'light': #C3C3E5,\n 'dark': #505071\n ),\n 'primary': (\n 'base': #A2A2CC,\n 'light': #EDEDF9,\n 'dark': #505071\n ),\n 'success': (\n 'base': #00d9ba,\n 'light': #C2F2E9,\n 'dark': #00B798\n ),\n 'info': (\n 'base': #82BBC6,\n 'light': #D3EBEF\n ),\n 'danger': (\n 'base': #FF6C7D,\n 'extra-light': #F5CCD1,\n 'light': #FFBBC5,\n 'dark': #EA4766\n ),\n 'warning': (\n 'base': #D6B218,\n 'light': #FFE885,\n 'dark': #C58C11\n ),\n 'foreground': (\n 'base': #393939,\n 'base-dark': #22272B,\n 'light': #5a5a68,\n 'dark': #161B20,\n 'extra-dark': #0A0D10\n ),\n 'background': (\n 'base': #E1E1E1,\n 'light': #EDEDF9,\n 'dark': #43435B,\n 'extra-dark': #0A0D10\n )\n) !default;\n\n$text-color: #505071 !default;\n$label-color: theme-color('default', 'base') !default;\n\n$contrast-colors: (\n 'dark': (\n 'primary': rgb(255, 255, 255),\n 'secondary': rgba(255, 255, 255, .70),\n 'disabled': rgba(255, 255, 255, .5),\n 'hint': rgba(255, 255, 255, .12)\n ),\n 'light': (\n 'primary': rgba(0, 0, 0, .87),\n 'secondary': rgba(0, 0, 0, .54),\n 'disabled': rgba(0, 0, 0, .38),\n 'hint': rgba(0, 0, 0, .12)\n ),\n) !default;\n\n$xs-line-height: 16px;\n$sm-line-height: 19px;\n$md-line-height: 22px;\n$lg-line-height: 23px;\n$xl-line-height: 24px;\n$xxl-line-height: 30px;\n\n$xs-font-size: 12px;\n$sm-font-size: 14px;\n$md-font-size: 16px;\n$lg-font-size: 17px;\n$xl-font-size: 20px;\n$xxl-font-size: 25px;\n\n$base-font-size: $sm-font-size !default;\n$base-line-height: $sm-line-height !default;\n\n$text-settings: (\n 'xs': (\n font-size: $xs-font-size,\n line-height: $xs-line-height\n ),\n 'sm': (\n font-size: $sm-font-size,\n line-height: $sm-line-height\n ),\n 'base': (\n font-size: $md-font-size,\n line-height: $md-line-height\n ),\n 'md': (\n font-size: $md-font-size,\n line-height: $md-line-height\n ),\n 'lg': (\n font-size: $lg-font-size,\n line-height: $lg-line-height\n ),\n 'xl': (\n font-size: $xl-font-size,\n line-height: $xl-line-height\n ),\n 'xxl': (\n font-size: $xxl-font-size,\n line-height: $xxl-line-height\n )\n) !default;\n\n$spacing: (\n 'xs': 5px,\n 'sm': 10px,\n 'base': 15px,\n 'md': 20px,\n 'lg': 25px,\n 'xl': 30px,\n 'xxl': 40px\n) !default;\n\n$grid-gutter: map-get($spacing, 'md') !default;\n$grid-max-width: 1200px + ($grid-gutter * 2) !default;\n$grid-columns: 12 !default;\n\n$breakpoint-xs: 420px !default;\n$breakpoint-sm: 768px !default;\n$breakpoint-md: 1024px !default;\n$breakpoint-lg: 1248px !default;\n\n$breakpoints: (\n \"xs\": $breakpoint-xs,\n \"sm\": $breakpoint-sm,\n \"md\": $breakpoint-md,\n \"lg\": $breakpoint-lg\n);\n\n$grid-breakpoints: (\n 'lg' '(min-width: ' + $breakpoint-lg + ')',\n 'md' '(min-width: ' + $breakpoint-md + ') and (max-width: ' + ($breakpoint-lg - 1) + ')',\n 'sm' '(min-width: ' + ($breakpoint-sm + 1) + ') and (max-width:' + ($breakpoint-md - 1) + ')',\n 'xs' '(max-width: ' + $breakpoint-sm + ')'\n) !default;\n\n$font-family-regular: 'OpenSans-regular' !default;\n$font-family-medium: 'OpenSans-SemiBold' !default;\n$font-family-bold: 'OpenSans-Bold' !default;\n\n$headings-color: #36364C !default;\n$headings-font-family-regular: 'smoolthan_regular' !default;\n$headings-font-family-medium: 'smoolthan_medium' !default;\n$headings-font-family-bold: 'smoolthan_bold' !default;\n\n$headings-margin-bottom: 15px !default;\n$headings-font-family: $headings-font-family-medium !default;\n$headings-font-weight: 500 !default;\n$headings-line-height: $base-line-height !default;\n\n$form-group-margin-bottom: 15px !default;\n$form-control-height: 39px !default;\n$form-control-padding-left: map-get($spacing, 'md') !default;\n$form-control-padding-right: map-get($spacing, 'md') !default;\n$form-control-padding-top: 10px !default;\n$form-control-padding-bottom: 10px !default;\n$form-control-addon-background-color: white !default;\n$form-control-addon-padding-top: 10px !default;\n$form-control-addon-padding-bottom: 10px !default;\n$form-control-addon-padding-left: 10px !default;\n$form-control-addon-padding-right: 10px !default;\n$form-control-disabled-background-color: theme-color('background', 'light') !default;\n$form-control-border: $general-border-width solid theme-color('default', 'light') !default;\n$form-control-disabled-border: $general-border-width solid theme-color('default', 'light') !default;\n$form-control-placeholder-color: #A2A2CC !default;\n$form-control-disabled-background-color: theme-color('default', 'light') !default;\n$form-control-disabled-color: $text-color !default;\n$form-control-border-focus: 2px solid theme-color('success', 'base') !default;\n$form-control-placeholder-font-family: $font-family-medium !default;\n$form-control-error-colour: theme-color('danger', 'dark') !default;\n$form-default-color: theme-color('default', 'light') !default;\n$form-primary-color: theme-color('primary', 'base') !default;\n$form-success-color: theme-color('success', 'base') !default;\n\n$error-border: $general-border-width solid theme-color('danger', 'base') !default;\n$error-border-left: 2px solid theme-color('danger', 'dark') !default;\n$help-block-color: theme-color('default', 'base') !default;\n$help-block-font-style: normal !default;\n$help-block-padding: 0 0 0 $form-control-padding-left !default;\n$error-message-padding: 0 0 0 $form-control-padding-left !default;\n$default-pill-background-color: theme-color('default', 'base') !default;\n$default-pill-color: white !default;\n$pill-margin: 0 0 10px 0 !default;\n$default-outline-pill-box-shadow: inset 0px 0px 0px 2px theme-color('default', 'base');\n$default-outline-pill-color: $text-color;\n\n$title-medium-font-size: 16px;\n\n//Buffers\n$bottom-buffer-large: map-get($spacing, 'md');\n$bottom-buffer-medium: 10px;\n$bottom-buffer-small: 5px;\n$top-buffer-large: map-get($spacing, 'md');\n$top-buffer-medium: 10px;\n$top-buffer-small: 5px;\n$right-buffer-large: map-get($spacing, 'md');\n$right-buffer-medium: 10px;\n$right-buffer-small: 5px;\n$left-buffer-large: map-get($spacing, 'md');\n$left-buffer-medium: 10px;\n$left-buffer-small: 5px;\n\n$modal-z-index: 1080;\n","@use \"sass:math\";\n\n@function theme-color($key: 'primary', $variant: 'base') {\n $map: map-get($theme-colors, $key);\n @return map-get($map, $variant);\n}\n\n@function contrast($background: 'light', $type: 'primary') {\n $map: map-get($contrast-colors, $background);\n @return map-get($map, $type);\n}\n\n@mixin contrast($background: 'light', $type: 'primary') {\n color: contrast($background, $type)\n}\n\n@function text-scale($level) {\n @return map-get(map-get($text-settings, $level), 'font-size');\n}\n\n@function line-height($level) {\n @return map-get(map-get($text-settings, $level), 'line-height');\n}\n\n@mixin text-setting($level) {\n font-size: text-scale($level);\n line-height: line-height($level);\n}\n\n@mixin font-face($font-family, $url) {\n\t@font-face {\n\t\tfont-family: '#{$font-family}';\n\t\tsrc: url('#{$url}.woff2') format('woff2'),\n\t\t url('#{$url}.woff') format('woff');\n\t\tfont-weight: normal;\n\t\tfont-style: normal;\n\t}\n}\n\n@mixin mq($width, $type: min) {\n @if map_has_key($breakpoints, $width) {\n $width: map_get($breakpoints, $width);\n @if $type == max {\n $width: $width - 1px;\n }\n @media only screen and (#{$type}-width: $width) {\n @content;\n }\n }\n}\n\n@mixin grid-loop($name) {\n @for $i from 0 through $grid-columns {\n .tyk-col--#{$name}-#{$i} {\n flex-basis: calc(#{percentage(math.div($i, $grid-columns))} - #{$grid-gutter});\n max-width: calc(#{percentage(math.div($i, $grid-columns))} - #{$grid-gutter});\n }\n\n .tyk-col--offset-#{$name}-#{$i} {\n margin-left: percentage(math.div($i, $grid-columns));\n }\n }\n}\n\n@mixin form-group-variant(\n $border-color,\n $color: $border-color,\n) {\n color: $text-color;\n\n > .tyk-form-control__wrapper > .tyk-form-control,\n > .tyk-form-control__wrapper > .tyk-file-input__wrapper > .tyk-form-control,\n > .tyk-form-control__wrapper > .tyk-input-group > .tyk-form-control {\n border: $general-border-width solid $border-color;\n color: $text-color;\n\n &[disabled] {\n border: $general-border-width solid $border-color;\n background-color: $form-control-disabled-background-color;\n color: $form-control-disabled-color;\n cursor: not-allowed;\n\n + .tyk-input-group__addon {\n background-color: $form-control-disabled-background-color;\n }\n }\n\n &::placeholder {\n opacity: 0.8;\n }\n\n &:-ms-input-placeholder {\n opacity: 0.8;\n }\n\n &::-ms-input-placeholder {\n opacity: 0.8;\n }\n }\n\n &.tyk-form-group--addon-left {\n .tyk-input-group__addon {\n border-bottom: 2px solid $border-color;\n border-left: 2px solid $border-color;\n border-top: 2px solid $border-color;\n color: $color;\n }\n }\n\n &.tyk-form-group--addon-right {\n .tyk-input-group__addon {\n border-bottom: 2px solid $border-color;\n border-right: 2px solid $border-color;\n border-top: 2px solid $border-color;\n color: $color;\n }\n }\n}\n","/*!\n * Font Awesome Free 5.5.0 by @fontawesome - https://fontawesome.com\n * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)\n */\n.fa,\n.fas,\n.far,\n.fal,\n.fab {\n -moz-osx-font-smoothing: grayscale;\n -webkit-font-smoothing: antialiased;\n display: inline-block;\n font-style: normal;\n font-variant: normal;\n text-rendering: auto;\n line-height: 1; }\n\n.fa-lg {\n font-size: 1.33333em;\n line-height: 0.75em;\n vertical-align: -.0667em; }\n\n.fa-xs {\n font-size: .75em; }\n\n.fa-sm {\n font-size: .875em; }\n\n.fa-1x {\n font-size: 1em; }\n\n.fa-2x {\n font-size: 2em; }\n\n.fa-3x {\n font-size: 3em; }\n\n.fa-4x {\n font-size: 4em; }\n\n.fa-5x {\n font-size: 5em; }\n\n.fa-6x {\n font-size: 6em; }\n\n.fa-7x {\n font-size: 7em; }\n\n.fa-8x {\n font-size: 8em; }\n\n.fa-9x {\n font-size: 9em; }\n\n.fa-10x {\n font-size: 10em; }\n\n.fa-fw {\n text-align: center;\n width: 1.25em; }\n\n.fa-ul {\n list-style-type: none;\n margin-left: 2.5em;\n padding-left: 0; }\n .fa-ul > li {\n position: relative; }\n\n.fa-li {\n left: -2em;\n position: absolute;\n text-align: center;\n width: 2em;\n line-height: inherit; }\n\n.fa-border {\n border: solid 0.08em #eee;\n border-radius: .1em;\n padding: .2em .25em .15em; }\n\n.fa-pull-left {\n float: left; }\n\n.fa-pull-right {\n float: right; }\n\n.fa.fa-pull-left,\n.fas.fa-pull-left,\n.far.fa-pull-left,\n.fal.fa-pull-left,\n.fab.fa-pull-left {\n margin-right: .3em; }\n\n.fa.fa-pull-right,\n.fas.fa-pull-right,\n.far.fa-pull-right,\n.fal.fa-pull-right,\n.fab.fa-pull-right {\n margin-left: .3em; }\n\n.fa-spin {\n -webkit-animation: fa-spin 2s infinite linear;\n animation: fa-spin 2s infinite linear; }\n\n.fa-pulse {\n -webkit-animation: fa-spin 1s infinite steps(8);\n animation: fa-spin 1s infinite steps(8); }\n\n@-webkit-keyframes fa-spin {\n 0% {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg); }\n 100% {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg); } }\n\n@keyframes fa-spin {\n 0% {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg); }\n 100% {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg); } }\n\n.fa-rotate-90 {\n -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)\";\n -webkit-transform: rotate(90deg);\n transform: rotate(90deg); }\n\n.fa-rotate-180 {\n -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)\";\n -webkit-transform: rotate(180deg);\n transform: rotate(180deg); }\n\n.fa-rotate-270 {\n -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)\";\n -webkit-transform: rotate(270deg);\n transform: rotate(270deg); }\n\n.fa-flip-horizontal {\n -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)\";\n -webkit-transform: scale(-1, 1);\n transform: scale(-1, 1); }\n\n.fa-flip-vertical {\n -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)\";\n -webkit-transform: scale(1, -1);\n transform: scale(1, -1); }\n\n.fa-flip-horizontal.fa-flip-vertical {\n -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)\";\n -webkit-transform: scale(-1, -1);\n transform: scale(-1, -1); }\n\n:root .fa-rotate-90,\n:root .fa-rotate-180,\n:root .fa-rotate-270,\n:root .fa-flip-horizontal,\n:root .fa-flip-vertical {\n -webkit-filter: none;\n filter: none; }\n\n.fa-stack {\n display: inline-block;\n height: 2em;\n line-height: 2em;\n position: relative;\n vertical-align: middle;\n width: 2.5em; }\n\n.fa-stack-1x,\n.fa-stack-2x {\n left: 0;\n position: absolute;\n text-align: center;\n width: 100%; }\n\n.fa-stack-1x {\n line-height: inherit; }\n\n.fa-stack-2x {\n font-size: 2em; }\n\n.fa-inverse {\n color: #fff; }\n\n/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen\nreaders do not read off random characters that represent icons */\n.fa-500px:before {\n content: \"\\f26e\"; }\n\n.fa-accessible-icon:before {\n content: \"\\f368\"; }\n\n.fa-accusoft:before {\n content: \"\\f369\"; }\n\n.fa-acquisitions-incorporated:before {\n content: \"\\f6af\"; }\n\n.fa-ad:before {\n content: \"\\f641\"; }\n\n.fa-address-book:before {\n content: \"\\f2b9\"; }\n\n.fa-address-card:before {\n content: \"\\f2bb\"; }\n\n.fa-adjust:before {\n content: \"\\f042\"; }\n\n.fa-adn:before {\n content: \"\\f170\"; }\n\n.fa-adversal:before {\n content: \"\\f36a\"; }\n\n.fa-affiliatetheme:before {\n content: \"\\f36b\"; }\n\n.fa-air-freshener:before {\n content: \"\\f5d0\"; }\n\n.fa-algolia:before {\n content: \"\\f36c\"; }\n\n.fa-align-center:before {\n content: \"\\f037\"; }\n\n.fa-align-justify:before {\n content: \"\\f039\"; }\n\n.fa-align-left:before {\n content: \"\\f036\"; }\n\n.fa-align-right:before {\n content: \"\\f038\"; }\n\n.fa-alipay:before {\n content: \"\\f642\"; }\n\n.fa-allergies:before {\n content: \"\\f461\"; }\n\n.fa-amazon:before {\n content: \"\\f270\"; }\n\n.fa-amazon-pay:before {\n content: \"\\f42c\"; }\n\n.fa-ambulance:before {\n content: \"\\f0f9\"; }\n\n.fa-american-sign-language-interpreting:before {\n content: \"\\f2a3\"; }\n\n.fa-amilia:before {\n content: \"\\f36d\"; }\n\n.fa-anchor:before {\n content: \"\\f13d\"; }\n\n.fa-android:before {\n content: \"\\f17b\"; }\n\n.fa-angellist:before {\n content: \"\\f209\"; }\n\n.fa-angle-double-down:before {\n content: \"\\f103\"; }\n\n.fa-angle-double-left:before {\n content: \"\\f100\"; }\n\n.fa-angle-double-right:before {\n content: \"\\f101\"; }\n\n.fa-angle-double-up:before {\n content: \"\\f102\"; }\n\n.fa-angle-down:before {\n content: \"\\f107\"; }\n\n.fa-angle-left:before {\n content: \"\\f104\"; }\n\n.fa-angle-right:before {\n content: \"\\f105\"; }\n\n.fa-angle-up:before {\n content: \"\\f106\"; }\n\n.fa-angry:before {\n content: \"\\f556\"; }\n\n.fa-angrycreative:before {\n content: \"\\f36e\"; }\n\n.fa-angular:before {\n content: \"\\f420\"; }\n\n.fa-ankh:before {\n content: \"\\f644\"; }\n\n.fa-app-store:before {\n content: \"\\f36f\"; }\n\n.fa-app-store-ios:before {\n content: \"\\f370\"; }\n\n.fa-apper:before {\n content: \"\\f371\"; }\n\n.fa-apple:before {\n content: \"\\f179\"; }\n\n.fa-apple-alt:before {\n content: \"\\f5d1\"; }\n\n.fa-apple-pay:before {\n content: \"\\f415\"; }\n\n.fa-archive:before {\n content: \"\\f187\"; }\n\n.fa-archway:before {\n content: \"\\f557\"; }\n\n.fa-arrow-alt-circle-down:before {\n content: \"\\f358\"; }\n\n.fa-arrow-alt-circle-left:before {\n content: \"\\f359\"; }\n\n.fa-arrow-alt-circle-right:before {\n content: \"\\f35a\"; }\n\n.fa-arrow-alt-circle-up:before {\n content: \"\\f35b\"; }\n\n.fa-arrow-circle-down:before {\n content: \"\\f0ab\"; }\n\n.fa-arrow-circle-left:before {\n content: \"\\f0a8\"; }\n\n.fa-arrow-circle-right:before {\n content: \"\\f0a9\"; }\n\n.fa-arrow-circle-up:before {\n content: \"\\f0aa\"; }\n\n.fa-arrow-down:before {\n content: \"\\f063\"; }\n\n.fa-arrow-left:before {\n content: \"\\f060\"; }\n\n.fa-arrow-right:before {\n content: \"\\f061\"; }\n\n.fa-arrow-up:before {\n content: \"\\f062\"; }\n\n.fa-arrows-alt:before {\n content: \"\\f0b2\"; }\n\n.fa-arrows-alt-h:before {\n content: \"\\f337\"; }\n\n.fa-arrows-alt-v:before {\n content: \"\\f338\"; }\n\n.fa-assistive-listening-systems:before {\n content: \"\\f2a2\"; }\n\n.fa-asterisk:before {\n content: \"\\f069\"; }\n\n.fa-asymmetrik:before {\n content: \"\\f372\"; }\n\n.fa-at:before {\n content: \"\\f1fa\"; }\n\n.fa-atlas:before {\n content: \"\\f558\"; }\n\n.fa-atom:before {\n content: \"\\f5d2\"; }\n\n.fa-audible:before {\n content: \"\\f373\"; }\n\n.fa-audio-description:before {\n content: \"\\f29e\"; }\n\n.fa-autoprefixer:before {\n content: \"\\f41c\"; }\n\n.fa-avianex:before {\n content: \"\\f374\"; }\n\n.fa-aviato:before {\n content: \"\\f421\"; }\n\n.fa-award:before {\n content: \"\\f559\"; }\n\n.fa-aws:before {\n content: \"\\f375\"; }\n\n.fa-backspace:before {\n content: \"\\f55a\"; }\n\n.fa-backward:before {\n content: \"\\f04a\"; }\n\n.fa-balance-scale:before {\n content: \"\\f24e\"; }\n\n.fa-ban:before {\n content: \"\\f05e\"; }\n\n.fa-band-aid:before {\n content: \"\\f462\"; }\n\n.fa-bandcamp:before {\n content: \"\\f2d5\"; }\n\n.fa-barcode:before {\n content: \"\\f02a\"; }\n\n.fa-bars:before {\n content: \"\\f0c9\"; }\n\n.fa-baseball-ball:before {\n content: \"\\f433\"; }\n\n.fa-basketball-ball:before {\n content: \"\\f434\"; }\n\n.fa-bath:before {\n content: \"\\f2cd\"; }\n\n.fa-battery-empty:before {\n content: \"\\f244\"; }\n\n.fa-battery-full:before {\n content: \"\\f240\"; }\n\n.fa-battery-half:before {\n content: \"\\f242\"; }\n\n.fa-battery-quarter:before {\n content: \"\\f243\"; }\n\n.fa-battery-three-quarters:before {\n content: \"\\f241\"; }\n\n.fa-bed:before {\n content: \"\\f236\"; }\n\n.fa-beer:before {\n content: \"\\f0fc\"; }\n\n.fa-behance:before {\n content: \"\\f1b4\"; }\n\n.fa-behance-square:before {\n content: \"\\f1b5\"; }\n\n.fa-bell:before {\n content: \"\\f0f3\"; }\n\n.fa-bell-slash:before {\n content: \"\\f1f6\"; }\n\n.fa-bezier-curve:before {\n content: \"\\f55b\"; }\n\n.fa-bible:before {\n content: \"\\f647\"; }\n\n.fa-bicycle:before {\n content: \"\\f206\"; }\n\n.fa-bimobject:before {\n content: \"\\f378\"; }\n\n.fa-binoculars:before {\n content: \"\\f1e5\"; }\n\n.fa-birthday-cake:before {\n content: \"\\f1fd\"; }\n\n.fa-bitbucket:before {\n content: \"\\f171\"; }\n\n.fa-bitcoin:before {\n content: \"\\f379\"; }\n\n.fa-bity:before {\n content: \"\\f37a\"; }\n\n.fa-black-tie:before {\n content: \"\\f27e\"; }\n\n.fa-blackberry:before {\n content: \"\\f37b\"; }\n\n.fa-blender:before {\n content: \"\\f517\"; }\n\n.fa-blender-phone:before {\n content: \"\\f6b6\"; }\n\n.fa-blind:before {\n content: \"\\f29d\"; }\n\n.fa-blogger:before {\n content: \"\\f37c\"; }\n\n.fa-blogger-b:before {\n content: \"\\f37d\"; }\n\n.fa-bluetooth:before {\n content: \"\\f293\"; }\n\n.fa-bluetooth-b:before {\n content: \"\\f294\"; }\n\n.fa-bold:before {\n content: \"\\f032\"; }\n\n.fa-bolt:before {\n content: \"\\f0e7\"; }\n\n.fa-bomb:before {\n content: \"\\f1e2\"; }\n\n.fa-bone:before {\n content: \"\\f5d7\"; }\n\n.fa-bong:before {\n content: \"\\f55c\"; }\n\n.fa-book:before {\n content: \"\\f02d\"; }\n\n.fa-book-dead:before {\n content: \"\\f6b7\"; }\n\n.fa-book-open:before {\n content: \"\\f518\"; }\n\n.fa-book-reader:before {\n content: \"\\f5da\"; }\n\n.fa-bookmark:before {\n content: \"\\f02e\"; }\n\n.fa-bowling-ball:before {\n content: \"\\f436\"; }\n\n.fa-box:before {\n content: \"\\f466\"; }\n\n.fa-box-open:before {\n content: \"\\f49e\"; }\n\n.fa-boxes:before {\n content: \"\\f468\"; }\n\n.fa-braille:before {\n content: \"\\f2a1\"; }\n\n.fa-brain:before {\n content: \"\\f5dc\"; }\n\n.fa-briefcase:before {\n content: \"\\f0b1\"; }\n\n.fa-briefcase-medical:before {\n content: \"\\f469\"; }\n\n.fa-broadcast-tower:before {\n content: \"\\f519\"; }\n\n.fa-broom:before {\n content: \"\\f51a\"; }\n\n.fa-brush:before {\n content: \"\\f55d\"; }\n\n.fa-btc:before {\n content: \"\\f15a\"; }\n\n.fa-bug:before {\n content: \"\\f188\"; }\n\n.fa-building:before {\n content: \"\\f1ad\"; }\n\n.fa-bullhorn:before {\n content: \"\\f0a1\"; }\n\n.fa-bullseye:before {\n content: \"\\f140\"; }\n\n.fa-burn:before {\n content: \"\\f46a\"; }\n\n.fa-buromobelexperte:before {\n content: \"\\f37f\"; }\n\n.fa-bus:before {\n content: \"\\f207\"; }\n\n.fa-bus-alt:before {\n content: \"\\f55e\"; }\n\n.fa-business-time:before {\n content: \"\\f64a\"; }\n\n.fa-buysellads:before {\n content: \"\\f20d\"; }\n\n.fa-calculator:before {\n content: \"\\f1ec\"; }\n\n.fa-calendar:before {\n content: \"\\f133\"; }\n\n.fa-calendar-alt:before {\n content: \"\\f073\"; }\n\n.fa-calendar-check:before {\n content: \"\\f274\"; }\n\n.fa-calendar-minus:before {\n content: \"\\f272\"; }\n\n.fa-calendar-plus:before {\n content: \"\\f271\"; }\n\n.fa-calendar-times:before {\n content: \"\\f273\"; }\n\n.fa-camera:before {\n content: \"\\f030\"; }\n\n.fa-camera-retro:before {\n content: \"\\f083\"; }\n\n.fa-campground:before {\n content: \"\\f6bb\"; }\n\n.fa-cannabis:before {\n content: \"\\f55f\"; }\n\n.fa-capsules:before {\n content: \"\\f46b\"; }\n\n.fa-car:before {\n content: \"\\f1b9\"; }\n\n.fa-car-alt:before {\n content: \"\\f5de\"; }\n\n.fa-car-battery:before {\n content: \"\\f5df\"; }\n\n.fa-car-crash:before {\n content: \"\\f5e1\"; }\n\n.fa-car-side:before {\n content: \"\\f5e4\"; }\n\n.fa-caret-down:before {\n content: \"\\f0d7\"; }\n\n.fa-caret-left:before {\n content: \"\\f0d9\"; }\n\n.fa-caret-right:before {\n content: \"\\f0da\"; }\n\n.fa-caret-square-down:before {\n content: \"\\f150\"; }\n\n.fa-caret-square-left:before {\n content: \"\\f191\"; }\n\n.fa-caret-square-right:before {\n content: \"\\f152\"; }\n\n.fa-caret-square-up:before {\n content: \"\\f151\"; }\n\n.fa-caret-up:before {\n content: \"\\f0d8\"; }\n\n.fa-cart-arrow-down:before {\n content: \"\\f218\"; }\n\n.fa-cart-plus:before {\n content: \"\\f217\"; }\n\n.fa-cat:before {\n content: \"\\f6be\"; }\n\n.fa-cc-amazon-pay:before {\n content: \"\\f42d\"; }\n\n.fa-cc-amex:before {\n content: \"\\f1f3\"; }\n\n.fa-cc-apple-pay:before {\n content: \"\\f416\"; }\n\n.fa-cc-diners-club:before {\n content: \"\\f24c\"; }\n\n.fa-cc-discover:before {\n content: \"\\f1f2\"; }\n\n.fa-cc-jcb:before {\n content: \"\\f24b\"; }\n\n.fa-cc-mastercard:before {\n content: \"\\f1f1\"; }\n\n.fa-cc-paypal:before {\n content: \"\\f1f4\"; }\n\n.fa-cc-stripe:before {\n content: \"\\f1f5\"; }\n\n.fa-cc-visa:before {\n content: \"\\f1f0\"; }\n\n.fa-centercode:before {\n content: \"\\f380\"; }\n\n.fa-certificate:before {\n content: \"\\f0a3\"; }\n\n.fa-chair:before {\n content: \"\\f6c0\"; }\n\n.fa-chalkboard:before {\n content: \"\\f51b\"; }\n\n.fa-chalkboard-teacher:before {\n content: \"\\f51c\"; }\n\n.fa-charging-station:before {\n content: \"\\f5e7\"; }\n\n.fa-chart-area:before {\n content: \"\\f1fe\"; }\n\n.fa-chart-bar:before {\n content: \"\\f080\"; }\n\n.fa-chart-line:before {\n content: \"\\f201\"; }\n\n.fa-chart-pie:before {\n content: \"\\f200\"; }\n\n.fa-check:before {\n content: \"\\f00c\"; }\n\n.fa-check-circle:before {\n content: \"\\f058\"; }\n\n.fa-check-double:before {\n content: \"\\f560\"; }\n\n.fa-check-square:before {\n content: \"\\f14a\"; }\n\n.fa-chess:before {\n content: \"\\f439\"; }\n\n.fa-chess-bishop:before {\n content: \"\\f43a\"; }\n\n.fa-chess-board:before {\n content: \"\\f43c\"; }\n\n.fa-chess-king:before {\n content: \"\\f43f\"; }\n\n.fa-chess-knight:before {\n content: \"\\f441\"; }\n\n.fa-chess-pawn:before {\n content: \"\\f443\"; }\n\n.fa-chess-queen:before {\n content: \"\\f445\"; }\n\n.fa-chess-rook:before {\n content: \"\\f447\"; }\n\n.fa-chevron-circle-down:before {\n content: \"\\f13a\"; }\n\n.fa-chevron-circle-left:before {\n content: \"\\f137\"; }\n\n.fa-chevron-circle-right:before {\n content: \"\\f138\"; }\n\n.fa-chevron-circle-up:before {\n content: \"\\f139\"; }\n\n.fa-chevron-down:before {\n content: \"\\f078\"; }\n\n.fa-chevron-left:before {\n content: \"\\f053\"; }\n\n.fa-chevron-right:before {\n content: \"\\f054\"; }\n\n.fa-chevron-up:before {\n content: \"\\f077\"; }\n\n.fa-child:before {\n content: \"\\f1ae\"; }\n\n.fa-chrome:before {\n content: \"\\f268\"; }\n\n.fa-church:before {\n content: \"\\f51d\"; }\n\n.fa-circle:before {\n content: \"\\f111\"; }\n\n.fa-circle-notch:before {\n content: \"\\f1ce\"; }\n\n.fa-city:before {\n content: \"\\f64f\"; }\n\n.fa-clipboard:before {\n content: \"\\f328\"; }\n\n.fa-clipboard-check:before {\n content: \"\\f46c\"; }\n\n.fa-clipboard-list:before {\n content: \"\\f46d\"; }\n\n.fa-clock:before {\n content: \"\\f017\"; }\n\n.fa-clone:before {\n content: \"\\f24d\"; }\n\n.fa-closed-captioning:before {\n content: \"\\f20a\"; }\n\n.fa-cloud:before {\n content: \"\\f0c2\"; }\n\n.fa-cloud-download-alt:before {\n content: \"\\f381\"; }\n\n.fa-cloud-meatball:before {\n content: \"\\f73b\"; }\n\n.fa-cloud-moon:before {\n content: \"\\f6c3\"; }\n\n.fa-cloud-moon-rain:before {\n content: \"\\f73c\"; }\n\n.fa-cloud-rain:before {\n content: \"\\f73d\"; }\n\n.fa-cloud-showers-heavy:before {\n content: \"\\f740\"; }\n\n.fa-cloud-sun:before {\n content: \"\\f6c4\"; }\n\n.fa-cloud-sun-rain:before {\n content: \"\\f743\"; }\n\n.fa-cloud-upload-alt:before {\n content: \"\\f382\"; }\n\n.fa-cloudscale:before {\n content: \"\\f383\"; }\n\n.fa-cloudsmith:before {\n content: \"\\f384\"; }\n\n.fa-cloudversify:before {\n content: \"\\f385\"; }\n\n.fa-cocktail:before {\n content: \"\\f561\"; }\n\n.fa-code:before {\n content: \"\\f121\"; }\n\n.fa-code-branch:before {\n content: \"\\f126\"; }\n\n.fa-codepen:before {\n content: \"\\f1cb\"; }\n\n.fa-codiepie:before {\n content: \"\\f284\"; }\n\n.fa-coffee:before {\n content: \"\\f0f4\"; }\n\n.fa-cog:before {\n content: \"\\f013\"; }\n\n.fa-cogs:before {\n content: \"\\f085\"; }\n\n.fa-coins:before {\n content: \"\\f51e\"; }\n\n.fa-columns:before {\n content: \"\\f0db\"; }\n\n.fa-comment:before {\n content: \"\\f075\"; }\n\n.fa-comment-alt:before {\n content: \"\\f27a\"; }\n\n.fa-comment-dollar:before {\n content: \"\\f651\"; }\n\n.fa-comment-dots:before {\n content: \"\\f4ad\"; }\n\n.fa-comment-slash:before {\n content: \"\\f4b3\"; }\n\n.fa-comments:before {\n content: \"\\f086\"; }\n\n.fa-comments-dollar:before {\n content: \"\\f653\"; }\n\n.fa-compact-disc:before {\n content: \"\\f51f\"; }\n\n.fa-compass:before {\n content: \"\\f14e\"; }\n\n.fa-compress:before {\n content: \"\\f066\"; }\n\n.fa-compress-arrows-alt:before {\n content: \"\\f78c\"; }\n\n.fa-concierge-bell:before {\n content: \"\\f562\"; }\n\n.fa-connectdevelop:before {\n content: \"\\f20e\"; }\n\n.fa-contao:before {\n content: \"\\f26d\"; }\n\n.fa-cookie:before {\n content: \"\\f563\"; }\n\n.fa-cookie-bite:before {\n content: \"\\f564\"; }\n\n.fa-copy:before {\n content: \"\\f0c5\"; }\n\n.fa-copyright:before {\n content: \"\\f1f9\"; }\n\n.fa-couch:before {\n content: \"\\f4b8\"; }\n\n.fa-cpanel:before {\n content: \"\\f388\"; }\n\n.fa-creative-commons:before {\n content: \"\\f25e\"; }\n\n.fa-creative-commons-by:before {\n content: \"\\f4e7\"; }\n\n.fa-creative-commons-nc:before {\n content: \"\\f4e8\"; }\n\n.fa-creative-commons-nc-eu:before {\n content: \"\\f4e9\"; }\n\n.fa-creative-commons-nc-jp:before {\n content: \"\\f4ea\"; }\n\n.fa-creative-commons-nd:before {\n content: \"\\f4eb\"; }\n\n.fa-creative-commons-pd:before {\n content: \"\\f4ec\"; }\n\n.fa-creative-commons-pd-alt:before {\n content: \"\\f4ed\"; }\n\n.fa-creative-commons-remix:before {\n content: \"\\f4ee\"; }\n\n.fa-creative-commons-sa:before {\n content: \"\\f4ef\"; }\n\n.fa-creative-commons-sampling:before {\n content: \"\\f4f0\"; }\n\n.fa-creative-commons-sampling-plus:before {\n content: \"\\f4f1\"; }\n\n.fa-creative-commons-share:before {\n content: \"\\f4f2\"; }\n\n.fa-creative-commons-zero:before {\n content: \"\\f4f3\"; }\n\n.fa-credit-card:before {\n content: \"\\f09d\"; }\n\n.fa-critical-role:before {\n content: \"\\f6c9\"; }\n\n.fa-crop:before {\n content: \"\\f125\"; }\n\n.fa-crop-alt:before {\n content: \"\\f565\"; }\n\n.fa-cross:before {\n content: \"\\f654\"; }\n\n.fa-crosshairs:before {\n content: \"\\f05b\"; }\n\n.fa-crow:before {\n content: \"\\f520\"; }\n\n.fa-crown:before {\n content: \"\\f521\"; }\n\n.fa-css3:before {\n content: \"\\f13c\"; }\n\n.fa-css3-alt:before {\n content: \"\\f38b\"; }\n\n.fa-cube:before {\n content: \"\\f1b2\"; }\n\n.fa-cubes:before {\n content: \"\\f1b3\"; }\n\n.fa-cut:before {\n content: \"\\f0c4\"; }\n\n.fa-cuttlefish:before {\n content: \"\\f38c\"; }\n\n.fa-d-and-d:before {\n content: \"\\f38d\"; }\n\n.fa-d-and-d-beyond:before {\n content: \"\\f6ca\"; }\n\n.fa-dashcube:before {\n content: \"\\f210\"; }\n\n.fa-database:before {\n content: \"\\f1c0\"; }\n\n.fa-deaf:before {\n content: \"\\f2a4\"; }\n\n.fa-delicious:before {\n content: \"\\f1a5\"; }\n\n.fa-democrat:before {\n content: \"\\f747\"; }\n\n.fa-deploydog:before {\n content: \"\\f38e\"; }\n\n.fa-deskpro:before {\n content: \"\\f38f\"; }\n\n.fa-desktop:before {\n content: \"\\f108\"; }\n\n.fa-dev:before {\n content: \"\\f6cc\"; }\n\n.fa-deviantart:before {\n content: \"\\f1bd\"; }\n\n.fa-dharmachakra:before {\n content: \"\\f655\"; }\n\n.fa-diagnoses:before {\n content: \"\\f470\"; }\n\n.fa-dice:before {\n content: \"\\f522\"; }\n\n.fa-dice-d20:before {\n content: \"\\f6cf\"; }\n\n.fa-dice-d6:before {\n content: \"\\f6d1\"; }\n\n.fa-dice-five:before {\n content: \"\\f523\"; }\n\n.fa-dice-four:before {\n content: \"\\f524\"; }\n\n.fa-dice-one:before {\n content: \"\\f525\"; }\n\n.fa-dice-six:before {\n content: \"\\f526\"; }\n\n.fa-dice-three:before {\n content: \"\\f527\"; }\n\n.fa-dice-two:before {\n content: \"\\f528\"; }\n\n.fa-digg:before {\n content: \"\\f1a6\"; }\n\n.fa-digital-ocean:before {\n content: \"\\f391\"; }\n\n.fa-digital-tachograph:before {\n content: \"\\f566\"; }\n\n.fa-directions:before {\n content: \"\\f5eb\"; }\n\n.fa-discord:before {\n content: \"\\f392\"; }\n\n.fa-discourse:before {\n content: \"\\f393\"; }\n\n.fa-divide:before {\n content: \"\\f529\"; }\n\n.fa-dizzy:before {\n content: \"\\f567\"; }\n\n.fa-dna:before {\n content: \"\\f471\"; }\n\n.fa-dochub:before {\n content: \"\\f394\"; }\n\n.fa-docker:before {\n content: \"\\f395\"; }\n\n.fa-dog:before {\n content: \"\\f6d3\"; }\n\n.fa-dollar-sign:before {\n content: \"\\f155\"; }\n\n.fa-dolly:before {\n content: \"\\f472\"; }\n\n.fa-dolly-flatbed:before {\n content: \"\\f474\"; }\n\n.fa-donate:before {\n content: \"\\f4b9\"; }\n\n.fa-door-closed:before {\n content: \"\\f52a\"; }\n\n.fa-door-open:before {\n content: \"\\f52b\"; }\n\n.fa-dot-circle:before {\n content: \"\\f192\"; }\n\n.fa-dove:before {\n content: \"\\f4ba\"; }\n\n.fa-download:before {\n content: \"\\f019\"; }\n\n.fa-draft2digital:before {\n content: \"\\f396\"; }\n\n.fa-drafting-compass:before {\n content: \"\\f568\"; }\n\n.fa-dragon:before {\n content: \"\\f6d5\"; }\n\n.fa-draw-polygon:before {\n content: \"\\f5ee\"; }\n\n.fa-dribbble:before {\n content: \"\\f17d\"; }\n\n.fa-dribbble-square:before {\n content: \"\\f397\"; }\n\n.fa-dropbox:before {\n content: \"\\f16b\"; }\n\n.fa-drum:before {\n content: \"\\f569\"; }\n\n.fa-drum-steelpan:before {\n content: \"\\f56a\"; }\n\n.fa-drumstick-bite:before {\n content: \"\\f6d7\"; }\n\n.fa-drupal:before {\n content: \"\\f1a9\"; }\n\n.fa-dumbbell:before {\n content: \"\\f44b\"; }\n\n.fa-dungeon:before {\n content: \"\\f6d9\"; }\n\n.fa-dyalog:before {\n content: \"\\f399\"; }\n\n.fa-earlybirds:before {\n content: \"\\f39a\"; }\n\n.fa-ebay:before {\n content: \"\\f4f4\"; }\n\n.fa-edge:before {\n content: \"\\f282\"; }\n\n.fa-edit:before {\n content: \"\\f044\"; }\n\n.fa-eject:before {\n content: \"\\f052\"; }\n\n.fa-elementor:before {\n content: \"\\f430\"; }\n\n.fa-ellipsis-h:before {\n content: \"\\f141\"; }\n\n.fa-ellipsis-v:before {\n content: \"\\f142\"; }\n\n.fa-ello:before {\n content: \"\\f5f1\"; }\n\n.fa-ember:before {\n content: \"\\f423\"; }\n\n.fa-empire:before {\n content: \"\\f1d1\"; }\n\n.fa-envelope:before {\n content: \"\\f0e0\"; }\n\n.fa-envelope-open:before {\n content: \"\\f2b6\"; }\n\n.fa-envelope-open-text:before {\n content: \"\\f658\"; }\n\n.fa-envelope-square:before {\n content: \"\\f199\"; }\n\n.fa-envira:before {\n content: \"\\f299\"; }\n\n.fa-equals:before {\n content: \"\\f52c\"; }\n\n.fa-eraser:before {\n content: \"\\f12d\"; }\n\n.fa-erlang:before {\n content: \"\\f39d\"; }\n\n.fa-ethereum:before {\n content: \"\\f42e\"; }\n\n.fa-etsy:before {\n content: \"\\f2d7\"; }\n\n.fa-euro-sign:before {\n content: \"\\f153\"; }\n\n.fa-exchange-alt:before {\n content: \"\\f362\"; }\n\n.fa-exclamation:before {\n content: \"\\f12a\"; }\n\n.fa-exclamation-circle:before {\n content: \"\\f06a\"; }\n\n.fa-exclamation-triangle:before {\n content: \"\\f071\"; }\n\n.fa-expand:before {\n content: \"\\f065\"; }\n\n.fa-expand-arrows-alt:before {\n content: \"\\f31e\"; }\n\n.fa-expeditedssl:before {\n content: \"\\f23e\"; }\n\n.fa-external-link-alt:before {\n content: \"\\f35d\"; }\n\n.fa-external-link-square-alt:before {\n content: \"\\f360\"; }\n\n.fa-eye:before {\n content: \"\\f06e\"; }\n\n.fa-eye-dropper:before {\n content: \"\\f1fb\"; }\n\n.fa-eye-slash:before {\n content: \"\\f070\"; }\n\n.fa-facebook:before {\n content: \"\\f09a\"; }\n\n.fa-facebook-f:before {\n content: \"\\f39e\"; }\n\n.fa-facebook-messenger:before {\n content: \"\\f39f\"; }\n\n.fa-facebook-square:before {\n content: \"\\f082\"; }\n\n.fa-fantasy-flight-games:before {\n content: \"\\f6dc\"; }\n\n.fa-fast-backward:before {\n content: \"\\f049\"; }\n\n.fa-fast-forward:before {\n content: \"\\f050\"; }\n\n.fa-fax:before {\n content: \"\\f1ac\"; }\n\n.fa-feather:before {\n content: \"\\f52d\"; }\n\n.fa-feather-alt:before {\n content: \"\\f56b\"; }\n\n.fa-female:before {\n content: \"\\f182\"; }\n\n.fa-fighter-jet:before {\n content: \"\\f0fb\"; }\n\n.fa-file:before {\n content: \"\\f15b\"; }\n\n.fa-file-alt:before {\n content: \"\\f15c\"; }\n\n.fa-file-archive:before {\n content: \"\\f1c6\"; }\n\n.fa-file-audio:before {\n content: \"\\f1c7\"; }\n\n.fa-file-code:before {\n content: \"\\f1c9\"; }\n\n.fa-file-contract:before {\n content: \"\\f56c\"; }\n\n.fa-file-csv:before {\n content: \"\\f6dd\"; }\n\n.fa-file-download:before {\n content: \"\\f56d\"; }\n\n.fa-file-excel:before {\n content: \"\\f1c3\"; }\n\n.fa-file-export:before {\n content: \"\\f56e\"; }\n\n.fa-file-image:before {\n content: \"\\f1c5\"; }\n\n.fa-file-import:before {\n content: \"\\f56f\"; }\n\n.fa-file-invoice:before {\n content: \"\\f570\"; }\n\n.fa-file-invoice-dollar:before {\n content: \"\\f571\"; }\n\n.fa-file-medical:before {\n content: \"\\f477\"; }\n\n.fa-file-medical-alt:before {\n content: \"\\f478\"; }\n\n.fa-file-pdf:before {\n content: \"\\f1c1\"; }\n\n.fa-file-powerpoint:before {\n content: \"\\f1c4\"; }\n\n.fa-file-prescription:before {\n content: \"\\f572\"; }\n\n.fa-file-signature:before {\n content: \"\\f573\"; }\n\n.fa-file-upload:before {\n content: \"\\f574\"; }\n\n.fa-file-video:before {\n content: \"\\f1c8\"; }\n\n.fa-file-word:before {\n content: \"\\f1c2\"; }\n\n.fa-fill:before {\n content: \"\\f575\"; }\n\n.fa-fill-drip:before {\n content: \"\\f576\"; }\n\n.fa-film:before {\n content: \"\\f008\"; }\n\n.fa-filter:before {\n content: \"\\f0b0\"; }\n\n.fa-fingerprint:before {\n content: \"\\f577\"; }\n\n.fa-fire:before {\n content: \"\\f06d\"; }\n\n.fa-fire-extinguisher:before {\n content: \"\\f134\"; }\n\n.fa-firefox:before {\n content: \"\\f269\"; }\n\n.fa-first-aid:before {\n content: \"\\f479\"; }\n\n.fa-first-order:before {\n content: \"\\f2b0\"; }\n\n.fa-first-order-alt:before {\n content: \"\\f50a\"; }\n\n.fa-firstdraft:before {\n content: \"\\f3a1\"; }\n\n.fa-fish:before {\n content: \"\\f578\"; }\n\n.fa-fist-raised:before {\n content: \"\\f6de\"; }\n\n.fa-flag:before {\n content: \"\\f024\"; }\n\n.fa-flag-checkered:before {\n content: \"\\f11e\"; }\n\n.fa-flag-usa:before {\n content: \"\\f74d\"; }\n\n.fa-flask:before {\n content: \"\\f0c3\"; }\n\n.fa-flickr:before {\n content: \"\\f16e\"; }\n\n.fa-flipboard:before {\n content: \"\\f44d\"; }\n\n.fa-flushed:before {\n content: \"\\f579\"; }\n\n.fa-fly:before {\n content: \"\\f417\"; }\n\n.fa-folder:before {\n content: \"\\f07b\"; }\n\n.fa-folder-minus:before {\n content: \"\\f65d\"; }\n\n.fa-folder-open:before {\n content: \"\\f07c\"; }\n\n.fa-folder-plus:before {\n content: \"\\f65e\"; }\n\n.fa-font:before {\n content: \"\\f031\"; }\n\n.fa-font-awesome:before {\n content: \"\\f2b4\"; }\n\n.fa-font-awesome-alt:before {\n content: \"\\f35c\"; }\n\n.fa-font-awesome-flag:before {\n content: \"\\f425\"; }\n\n.fa-font-awesome-logo-full:before {\n content: \"\\f4e6\"; }\n\n.fa-fonticons:before {\n content: \"\\f280\"; }\n\n.fa-fonticons-fi:before {\n content: \"\\f3a2\"; }\n\n.fa-football-ball:before {\n content: \"\\f44e\"; }\n\n.fa-fort-awesome:before {\n content: \"\\f286\"; }\n\n.fa-fort-awesome-alt:before {\n content: \"\\f3a3\"; }\n\n.fa-forumbee:before {\n content: \"\\f211\"; }\n\n.fa-forward:before {\n content: \"\\f04e\"; }\n\n.fa-foursquare:before {\n content: \"\\f180\"; }\n\n.fa-free-code-camp:before {\n content: \"\\f2c5\"; }\n\n.fa-freebsd:before {\n content: \"\\f3a4\"; }\n\n.fa-frog:before {\n content: \"\\f52e\"; }\n\n.fa-frown:before {\n content: \"\\f119\"; }\n\n.fa-frown-open:before {\n content: \"\\f57a\"; }\n\n.fa-fulcrum:before {\n content: \"\\f50b\"; }\n\n.fa-funnel-dollar:before {\n content: \"\\f662\"; }\n\n.fa-futbol:before {\n content: \"\\f1e3\"; }\n\n.fa-galactic-republic:before {\n content: \"\\f50c\"; }\n\n.fa-galactic-senate:before {\n content: \"\\f50d\"; }\n\n.fa-gamepad:before {\n content: \"\\f11b\"; }\n\n.fa-gas-pump:before {\n content: \"\\f52f\"; }\n\n.fa-gavel:before {\n content: \"\\f0e3\"; }\n\n.fa-gem:before {\n content: \"\\f3a5\"; }\n\n.fa-genderless:before {\n content: \"\\f22d\"; }\n\n.fa-get-pocket:before {\n content: \"\\f265\"; }\n\n.fa-gg:before {\n content: \"\\f260\"; }\n\n.fa-gg-circle:before {\n content: \"\\f261\"; }\n\n.fa-ghost:before {\n content: \"\\f6e2\"; }\n\n.fa-gift:before {\n content: \"\\f06b\"; }\n\n.fa-git:before {\n content: \"\\f1d3\"; }\n\n.fa-git-square:before {\n content: \"\\f1d2\"; }\n\n.fa-github:before {\n content: \"\\f09b\"; }\n\n.fa-github-alt:before {\n content: \"\\f113\"; }\n\n.fa-github-square:before {\n content: \"\\f092\"; }\n\n.fa-gitkraken:before {\n content: \"\\f3a6\"; }\n\n.fa-gitlab:before {\n content: \"\\f296\"; }\n\n.fa-gitter:before {\n content: \"\\f426\"; }\n\n.fa-glass-martini:before {\n content: \"\\f000\"; }\n\n.fa-glass-martini-alt:before {\n content: \"\\f57b\"; }\n\n.fa-glasses:before {\n content: \"\\f530\"; }\n\n.fa-glide:before {\n content: \"\\f2a5\"; }\n\n.fa-glide-g:before {\n content: \"\\f2a6\"; }\n\n.fa-globe:before {\n content: \"\\f0ac\"; }\n\n.fa-globe-africa:before {\n content: \"\\f57c\"; }\n\n.fa-globe-americas:before {\n content: \"\\f57d\"; }\n\n.fa-globe-asia:before {\n content: \"\\f57e\"; }\n\n.fa-gofore:before {\n content: \"\\f3a7\"; }\n\n.fa-golf-ball:before {\n content: \"\\f450\"; }\n\n.fa-goodreads:before {\n content: \"\\f3a8\"; }\n\n.fa-goodreads-g:before {\n content: \"\\f3a9\"; }\n\n.fa-google:before {\n content: \"\\f1a0\"; }\n\n.fa-google-drive:before {\n content: \"\\f3aa\"; }\n\n.fa-google-play:before {\n content: \"\\f3ab\"; }\n\n.fa-google-plus:before {\n content: \"\\f2b3\"; }\n\n.fa-google-plus-g:before {\n content: \"\\f0d5\"; }\n\n.fa-google-plus-square:before {\n content: \"\\f0d4\"; }\n\n.fa-google-wallet:before {\n content: \"\\f1ee\"; }\n\n.fa-gopuram:before {\n content: \"\\f664\"; }\n\n.fa-graduation-cap:before {\n content: \"\\f19d\"; }\n\n.fa-gratipay:before {\n content: \"\\f184\"; }\n\n.fa-grav:before {\n content: \"\\f2d6\"; }\n\n.fa-greater-than:before {\n content: \"\\f531\"; }\n\n.fa-greater-than-equal:before {\n content: \"\\f532\"; }\n\n.fa-grimace:before {\n content: \"\\f57f\"; }\n\n.fa-grin:before {\n content: \"\\f580\"; }\n\n.fa-grin-alt:before {\n content: \"\\f581\"; }\n\n.fa-grin-beam:before {\n content: \"\\f582\"; }\n\n.fa-grin-beam-sweat:before {\n content: \"\\f583\"; }\n\n.fa-grin-hearts:before {\n content: \"\\f584\"; }\n\n.fa-grin-squint:before {\n content: \"\\f585\"; }\n\n.fa-grin-squint-tears:before {\n content: \"\\f586\"; }\n\n.fa-grin-stars:before {\n content: \"\\f587\"; }\n\n.fa-grin-tears:before {\n content: \"\\f588\"; }\n\n.fa-grin-tongue:before {\n content: \"\\f589\"; }\n\n.fa-grin-tongue-squint:before {\n content: \"\\f58a\"; }\n\n.fa-grin-tongue-wink:before {\n content: \"\\f58b\"; }\n\n.fa-grin-wink:before {\n content: \"\\f58c\"; }\n\n.fa-grip-horizontal:before {\n content: \"\\f58d\"; }\n\n.fa-grip-vertical:before {\n content: \"\\f58e\"; }\n\n.fa-gripfire:before {\n content: \"\\f3ac\"; }\n\n.fa-grunt:before {\n content: \"\\f3ad\"; }\n\n.fa-gulp:before {\n content: \"\\f3ae\"; }\n\n.fa-h-square:before {\n content: \"\\f0fd\"; }\n\n.fa-hacker-news:before {\n content: \"\\f1d4\"; }\n\n.fa-hacker-news-square:before {\n content: \"\\f3af\"; }\n\n.fa-hackerrank:before {\n content: \"\\f5f7\"; }\n\n.fa-hammer:before {\n content: \"\\f6e3\"; }\n\n.fa-hamsa:before {\n content: \"\\f665\"; }\n\n.fa-hand-holding:before {\n content: \"\\f4bd\"; }\n\n.fa-hand-holding-heart:before {\n content: \"\\f4be\"; }\n\n.fa-hand-holding-usd:before {\n content: \"\\f4c0\"; }\n\n.fa-hand-lizard:before {\n content: \"\\f258\"; }\n\n.fa-hand-paper:before {\n content: \"\\f256\"; }\n\n.fa-hand-peace:before {\n content: \"\\f25b\"; }\n\n.fa-hand-point-down:before {\n content: \"\\f0a7\"; }\n\n.fa-hand-point-left:before {\n content: \"\\f0a5\"; }\n\n.fa-hand-point-right:before {\n content: \"\\f0a4\"; }\n\n.fa-hand-point-up:before {\n content: \"\\f0a6\"; }\n\n.fa-hand-pointer:before {\n content: \"\\f25a\"; }\n\n.fa-hand-rock:before {\n content: \"\\f255\"; }\n\n.fa-hand-scissors:before {\n content: \"\\f257\"; }\n\n.fa-hand-spock:before {\n content: \"\\f259\"; }\n\n.fa-hands:before {\n content: \"\\f4c2\"; }\n\n.fa-hands-helping:before {\n content: \"\\f4c4\"; }\n\n.fa-handshake:before {\n content: \"\\f2b5\"; }\n\n.fa-hanukiah:before {\n content: \"\\f6e6\"; }\n\n.fa-hashtag:before {\n content: \"\\f292\"; }\n\n.fa-hat-wizard:before {\n content: \"\\f6e8\"; }\n\n.fa-haykal:before {\n content: \"\\f666\"; }\n\n.fa-hdd:before {\n content: \"\\f0a0\"; }\n\n.fa-heading:before {\n content: \"\\f1dc\"; }\n\n.fa-headphones:before {\n content: \"\\f025\"; }\n\n.fa-headphones-alt:before {\n content: \"\\f58f\"; }\n\n.fa-headset:before {\n content: \"\\f590\"; }\n\n.fa-heart:before {\n content: \"\\f004\"; }\n\n.fa-heartbeat:before {\n content: \"\\f21e\"; }\n\n.fa-helicopter:before {\n content: \"\\f533\"; }\n\n.fa-highlighter:before {\n content: \"\\f591\"; }\n\n.fa-hiking:before {\n content: \"\\f6ec\"; }\n\n.fa-hippo:before {\n content: \"\\f6ed\"; }\n\n.fa-hips:before {\n content: \"\\f452\"; }\n\n.fa-hire-a-helper:before {\n content: \"\\f3b0\"; }\n\n.fa-history:before {\n content: \"\\f1da\"; }\n\n.fa-hockey-puck:before {\n content: \"\\f453\"; }\n\n.fa-home:before {\n content: \"\\f015\"; }\n\n.fa-hooli:before {\n content: \"\\f427\"; }\n\n.fa-hornbill:before {\n content: \"\\f592\"; }\n\n.fa-horse:before {\n content: \"\\f6f0\"; }\n\n.fa-hospital:before {\n content: \"\\f0f8\"; }\n\n.fa-hospital-alt:before {\n content: \"\\f47d\"; }\n\n.fa-hospital-symbol:before {\n content: \"\\f47e\"; }\n\n.fa-hot-tub:before {\n content: \"\\f593\"; }\n\n.fa-hotel:before {\n content: \"\\f594\"; }\n\n.fa-hotjar:before {\n content: \"\\f3b1\"; }\n\n.fa-hourglass:before {\n content: \"\\f254\"; }\n\n.fa-hourglass-end:before {\n content: \"\\f253\"; }\n\n.fa-hourglass-half:before {\n content: \"\\f252\"; }\n\n.fa-hourglass-start:before {\n content: \"\\f251\"; }\n\n.fa-house-damage:before {\n content: \"\\f6f1\"; }\n\n.fa-houzz:before {\n content: \"\\f27c\"; }\n\n.fa-hryvnia:before {\n content: \"\\f6f2\"; }\n\n.fa-html5:before {\n content: \"\\f13b\"; }\n\n.fa-hubspot:before {\n content: \"\\f3b2\"; }\n\n.fa-i-cursor:before {\n content: \"\\f246\"; }\n\n.fa-id-badge:before {\n content: \"\\f2c1\"; }\n\n.fa-id-card:before {\n content: \"\\f2c2\"; }\n\n.fa-id-card-alt:before {\n content: \"\\f47f\"; }\n\n.fa-image:before {\n content: \"\\f03e\"; }\n\n.fa-images:before {\n content: \"\\f302\"; }\n\n.fa-imdb:before {\n content: \"\\f2d8\"; }\n\n.fa-inbox:before {\n content: \"\\f01c\"; }\n\n.fa-indent:before {\n content: \"\\f03c\"; }\n\n.fa-industry:before {\n content: \"\\f275\"; }\n\n.fa-infinity:before {\n content: \"\\f534\"; }\n\n.fa-info:before {\n content: \"\\f129\"; }\n\n.fa-info-circle:before {\n content: \"\\f05a\"; }\n\n.fa-instagram:before {\n content: \"\\f16d\"; }\n\n.fa-internet-explorer:before {\n content: \"\\f26b\"; }\n\n.fa-ioxhost:before {\n content: \"\\f208\"; }\n\n.fa-italic:before {\n content: \"\\f033\"; }\n\n.fa-itunes:before {\n content: \"\\f3b4\"; }\n\n.fa-itunes-note:before {\n content: \"\\f3b5\"; }\n\n.fa-java:before {\n content: \"\\f4e4\"; }\n\n.fa-jedi:before {\n content: \"\\f669\"; }\n\n.fa-jedi-order:before {\n content: \"\\f50e\"; }\n\n.fa-jenkins:before {\n content: \"\\f3b6\"; }\n\n.fa-joget:before {\n content: \"\\f3b7\"; }\n\n.fa-joint:before {\n content: \"\\f595\"; }\n\n.fa-joomla:before {\n content: \"\\f1aa\"; }\n\n.fa-journal-whills:before {\n content: \"\\f66a\"; }\n\n.fa-js:before {\n content: \"\\f3b8\"; }\n\n.fa-js-square:before {\n content: \"\\f3b9\"; }\n\n.fa-jsfiddle:before {\n content: \"\\f1cc\"; }\n\n.fa-kaaba:before {\n content: \"\\f66b\"; }\n\n.fa-kaggle:before {\n content: \"\\f5fa\"; }\n\n.fa-key:before {\n content: \"\\f084\"; }\n\n.fa-keybase:before {\n content: \"\\f4f5\"; }\n\n.fa-keyboard:before {\n content: \"\\f11c\"; }\n\n.fa-keycdn:before {\n content: \"\\f3ba\"; }\n\n.fa-khanda:before {\n content: \"\\f66d\"; }\n\n.fa-kickstarter:before {\n content: \"\\f3bb\"; }\n\n.fa-kickstarter-k:before {\n content: \"\\f3bc\"; }\n\n.fa-kiss:before {\n content: \"\\f596\"; }\n\n.fa-kiss-beam:before {\n content: \"\\f597\"; }\n\n.fa-kiss-wink-heart:before {\n content: \"\\f598\"; }\n\n.fa-kiwi-bird:before {\n content: \"\\f535\"; }\n\n.fa-korvue:before {\n content: \"\\f42f\"; }\n\n.fa-landmark:before {\n content: \"\\f66f\"; }\n\n.fa-language:before {\n content: \"\\f1ab\"; }\n\n.fa-laptop:before {\n content: \"\\f109\"; }\n\n.fa-laptop-code:before {\n content: \"\\f5fc\"; }\n\n.fa-laravel:before {\n content: \"\\f3bd\"; }\n\n.fa-lastfm:before {\n content: \"\\f202\"; }\n\n.fa-lastfm-square:before {\n content: \"\\f203\"; }\n\n.fa-laugh:before {\n content: \"\\f599\"; }\n\n.fa-laugh-beam:before {\n content: \"\\f59a\"; }\n\n.fa-laugh-squint:before {\n content: \"\\f59b\"; }\n\n.fa-laugh-wink:before {\n content: \"\\f59c\"; }\n\n.fa-layer-group:before {\n content: \"\\f5fd\"; }\n\n.fa-leaf:before {\n content: \"\\f06c\"; }\n\n.fa-leanpub:before {\n content: \"\\f212\"; }\n\n.fa-lemon:before {\n content: \"\\f094\"; }\n\n.fa-less:before {\n content: \"\\f41d\"; }\n\n.fa-less-than:before {\n content: \"\\f536\"; }\n\n.fa-less-than-equal:before {\n content: \"\\f537\"; }\n\n.fa-level-down-alt:before {\n content: \"\\f3be\"; }\n\n.fa-level-up-alt:before {\n content: \"\\f3bf\"; }\n\n.fa-life-ring:before {\n content: \"\\f1cd\"; }\n\n.fa-lightbulb:before {\n content: \"\\f0eb\"; }\n\n.fa-line:before {\n content: \"\\f3c0\"; }\n\n.fa-link:before {\n content: \"\\f0c1\"; }\n\n.fa-linkedin:before {\n content: \"\\f08c\"; }\n\n.fa-linkedin-in:before {\n content: \"\\f0e1\"; }\n\n.fa-linode:before {\n content: \"\\f2b8\"; }\n\n.fa-linux:before {\n content: \"\\f17c\"; }\n\n.fa-lira-sign:before {\n content: \"\\f195\"; }\n\n.fa-list:before {\n content: \"\\f03a\"; }\n\n.fa-list-alt:before {\n content: \"\\f022\"; }\n\n.fa-list-ol:before {\n content: \"\\f0cb\"; }\n\n.fa-list-ul:before {\n content: \"\\f0ca\"; }\n\n.fa-location-arrow:before {\n content: \"\\f124\"; }\n\n.fa-lock:before {\n content: \"\\f023\"; }\n\n.fa-lock-open:before {\n content: \"\\f3c1\"; }\n\n.fa-long-arrow-alt-down:before {\n content: \"\\f309\"; }\n\n.fa-long-arrow-alt-left:before {\n content: \"\\f30a\"; }\n\n.fa-long-arrow-alt-right:before {\n content: \"\\f30b\"; }\n\n.fa-long-arrow-alt-up:before {\n content: \"\\f30c\"; }\n\n.fa-low-vision:before {\n content: \"\\f2a8\"; }\n\n.fa-luggage-cart:before {\n content: \"\\f59d\"; }\n\n.fa-lyft:before {\n content: \"\\f3c3\"; }\n\n.fa-magento:before {\n content: \"\\f3c4\"; }\n\n.fa-magic:before {\n content: \"\\f0d0\"; }\n\n.fa-magnet:before {\n content: \"\\f076\"; }\n\n.fa-mail-bulk:before {\n content: \"\\f674\"; }\n\n.fa-mailchimp:before {\n content: \"\\f59e\"; }\n\n.fa-male:before {\n content: \"\\f183\"; }\n\n.fa-mandalorian:before {\n content: \"\\f50f\"; }\n\n.fa-map:before {\n content: \"\\f279\"; }\n\n.fa-map-marked:before {\n content: \"\\f59f\"; }\n\n.fa-map-marked-alt:before {\n content: \"\\f5a0\"; }\n\n.fa-map-marker:before {\n content: \"\\f041\"; }\n\n.fa-map-marker-alt:before {\n content: \"\\f3c5\"; }\n\n.fa-map-pin:before {\n content: \"\\f276\"; }\n\n.fa-map-signs:before {\n content: \"\\f277\"; }\n\n.fa-markdown:before {\n content: \"\\f60f\"; }\n\n.fa-marker:before {\n content: \"\\f5a1\"; }\n\n.fa-mars:before {\n content: \"\\f222\"; }\n\n.fa-mars-double:before {\n content: \"\\f227\"; }\n\n.fa-mars-stroke:before {\n content: \"\\f229\"; }\n\n.fa-mars-stroke-h:before {\n content: \"\\f22b\"; }\n\n.fa-mars-stroke-v:before {\n content: \"\\f22a\"; }\n\n.fa-mask:before {\n content: \"\\f6fa\"; }\n\n.fa-mastodon:before {\n content: \"\\f4f6\"; }\n\n.fa-maxcdn:before {\n content: \"\\f136\"; }\n\n.fa-medal:before {\n content: \"\\f5a2\"; }\n\n.fa-medapps:before {\n content: \"\\f3c6\"; }\n\n.fa-medium:before {\n content: \"\\f23a\"; }\n\n.fa-medium-m:before {\n content: \"\\f3c7\"; }\n\n.fa-medkit:before {\n content: \"\\f0fa\"; }\n\n.fa-medrt:before {\n content: \"\\f3c8\"; }\n\n.fa-meetup:before {\n content: \"\\f2e0\"; }\n\n.fa-megaport:before {\n content: \"\\f5a3\"; }\n\n.fa-meh:before {\n content: \"\\f11a\"; }\n\n.fa-meh-blank:before {\n content: \"\\f5a4\"; }\n\n.fa-meh-rolling-eyes:before {\n content: \"\\f5a5\"; }\n\n.fa-memory:before {\n content: \"\\f538\"; }\n\n.fa-menorah:before {\n content: \"\\f676\"; }\n\n.fa-mercury:before {\n content: \"\\f223\"; }\n\n.fa-meteor:before {\n content: \"\\f753\"; }\n\n.fa-microchip:before {\n content: \"\\f2db\"; }\n\n.fa-microphone:before {\n content: \"\\f130\"; }\n\n.fa-microphone-alt:before {\n content: \"\\f3c9\"; }\n\n.fa-microphone-alt-slash:before {\n content: \"\\f539\"; }\n\n.fa-microphone-slash:before {\n content: \"\\f131\"; }\n\n.fa-microscope:before {\n content: \"\\f610\"; }\n\n.fa-microsoft:before {\n content: \"\\f3ca\"; }\n\n.fa-minus:before {\n content: \"\\f068\"; }\n\n.fa-minus-circle:before {\n content: \"\\f056\"; }\n\n.fa-minus-square:before {\n content: \"\\f146\"; }\n\n.fa-mix:before {\n content: \"\\f3cb\"; }\n\n.fa-mixcloud:before {\n content: \"\\f289\"; }\n\n.fa-mizuni:before {\n content: \"\\f3cc\"; }\n\n.fa-mobile:before {\n content: \"\\f10b\"; }\n\n.fa-mobile-alt:before {\n content: \"\\f3cd\"; }\n\n.fa-modx:before {\n content: \"\\f285\"; }\n\n.fa-monero:before {\n content: \"\\f3d0\"; }\n\n.fa-money-bill:before {\n content: \"\\f0d6\"; }\n\n.fa-money-bill-alt:before {\n content: \"\\f3d1\"; }\n\n.fa-money-bill-wave:before {\n content: \"\\f53a\"; }\n\n.fa-money-bill-wave-alt:before {\n content: \"\\f53b\"; }\n\n.fa-money-check:before {\n content: \"\\f53c\"; }\n\n.fa-money-check-alt:before {\n content: \"\\f53d\"; }\n\n.fa-monument:before {\n content: \"\\f5a6\"; }\n\n.fa-moon:before {\n content: \"\\f186\"; }\n\n.fa-mortar-pestle:before {\n content: \"\\f5a7\"; }\n\n.fa-mosque:before {\n content: \"\\f678\"; }\n\n.fa-motorcycle:before {\n content: \"\\f21c\"; }\n\n.fa-mountain:before {\n content: \"\\f6fc\"; }\n\n.fa-mouse-pointer:before {\n content: \"\\f245\"; }\n\n.fa-music:before {\n content: \"\\f001\"; }\n\n.fa-napster:before {\n content: \"\\f3d2\"; }\n\n.fa-neos:before {\n content: \"\\f612\"; }\n\n.fa-network-wired:before {\n content: \"\\f6ff\"; }\n\n.fa-neuter:before {\n content: \"\\f22c\"; }\n\n.fa-newspaper:before {\n content: \"\\f1ea\"; }\n\n.fa-nimblr:before {\n content: \"\\f5a8\"; }\n\n.fa-nintendo-switch:before {\n content: \"\\f418\"; }\n\n.fa-node:before {\n content: \"\\f419\"; }\n\n.fa-node-js:before {\n content: \"\\f3d3\"; }\n\n.fa-not-equal:before {\n content: \"\\f53e\"; }\n\n.fa-notes-medical:before {\n content: \"\\f481\"; }\n\n.fa-npm:before {\n content: \"\\f3d4\"; }\n\n.fa-ns8:before {\n content: \"\\f3d5\"; }\n\n.fa-nutritionix:before {\n content: \"\\f3d6\"; }\n\n.fa-object-group:before {\n content: \"\\f247\"; }\n\n.fa-object-ungroup:before {\n content: \"\\f248\"; }\n\n.fa-odnoklassniki:before {\n content: \"\\f263\"; }\n\n.fa-odnoklassniki-square:before {\n content: \"\\f264\"; }\n\n.fa-oil-can:before {\n content: \"\\f613\"; }\n\n.fa-old-republic:before {\n content: \"\\f510\"; }\n\n.fa-om:before {\n content: \"\\f679\"; }\n\n.fa-opencart:before {\n content: \"\\f23d\"; }\n\n.fa-openid:before {\n content: \"\\f19b\"; }\n\n.fa-opera:before {\n content: \"\\f26a\"; }\n\n.fa-optin-monster:before {\n content: \"\\f23c\"; }\n\n.fa-osi:before {\n content: \"\\f41a\"; }\n\n.fa-otter:before {\n content: \"\\f700\"; }\n\n.fa-outdent:before {\n content: \"\\f03b\"; }\n\n.fa-page4:before {\n content: \"\\f3d7\"; }\n\n.fa-pagelines:before {\n content: \"\\f18c\"; }\n\n.fa-paint-brush:before {\n content: \"\\f1fc\"; }\n\n.fa-paint-roller:before {\n content: \"\\f5aa\"; }\n\n.fa-palette:before {\n content: \"\\f53f\"; }\n\n.fa-palfed:before {\n content: \"\\f3d8\"; }\n\n.fa-pallet:before {\n content: \"\\f482\"; }\n\n.fa-paper-plane:before {\n content: \"\\f1d8\"; }\n\n.fa-paperclip:before {\n content: \"\\f0c6\"; }\n\n.fa-parachute-box:before {\n content: \"\\f4cd\"; }\n\n.fa-paragraph:before {\n content: \"\\f1dd\"; }\n\n.fa-parking:before {\n content: \"\\f540\"; }\n\n.fa-passport:before {\n content: \"\\f5ab\"; }\n\n.fa-pastafarianism:before {\n content: \"\\f67b\"; }\n\n.fa-paste:before {\n content: \"\\f0ea\"; }\n\n.fa-patreon:before {\n content: \"\\f3d9\"; }\n\n.fa-pause:before {\n content: \"\\f04c\"; }\n\n.fa-pause-circle:before {\n content: \"\\f28b\"; }\n\n.fa-paw:before {\n content: \"\\f1b0\"; }\n\n.fa-paypal:before {\n content: \"\\f1ed\"; }\n\n.fa-peace:before {\n content: \"\\f67c\"; }\n\n.fa-pen:before {\n content: \"\\f304\"; }\n\n.fa-pen-alt:before {\n content: \"\\f305\"; }\n\n.fa-pen-fancy:before {\n content: \"\\f5ac\"; }\n\n.fa-pen-nib:before {\n content: \"\\f5ad\"; }\n\n.fa-pen-square:before {\n content: \"\\f14b\"; }\n\n.fa-pencil-alt:before {\n content: \"\\f303\"; }\n\n.fa-pencil-ruler:before {\n content: \"\\f5ae\"; }\n\n.fa-penny-arcade:before {\n content: \"\\f704\"; }\n\n.fa-people-carry:before {\n content: \"\\f4ce\"; }\n\n.fa-percent:before {\n content: \"\\f295\"; }\n\n.fa-percentage:before {\n content: \"\\f541\"; }\n\n.fa-periscope:before {\n content: \"\\f3da\"; }\n\n.fa-person-booth:before {\n content: \"\\f756\"; }\n\n.fa-phabricator:before {\n content: \"\\f3db\"; }\n\n.fa-phoenix-framework:before {\n content: \"\\f3dc\"; }\n\n.fa-phoenix-squadron:before {\n content: \"\\f511\"; }\n\n.fa-phone:before {\n content: \"\\f095\"; }\n\n.fa-phone-slash:before {\n content: \"\\f3dd\"; }\n\n.fa-phone-square:before {\n content: \"\\f098\"; }\n\n.fa-phone-volume:before {\n content: \"\\f2a0\"; }\n\n.fa-php:before {\n content: \"\\f457\"; }\n\n.fa-pied-piper:before {\n content: \"\\f2ae\"; }\n\n.fa-pied-piper-alt:before {\n content: \"\\f1a8\"; }\n\n.fa-pied-piper-hat:before {\n content: \"\\f4e5\"; }\n\n.fa-pied-piper-pp:before {\n content: \"\\f1a7\"; }\n\n.fa-piggy-bank:before {\n content: \"\\f4d3\"; }\n\n.fa-pills:before {\n content: \"\\f484\"; }\n\n.fa-pinterest:before {\n content: \"\\f0d2\"; }\n\n.fa-pinterest-p:before {\n content: \"\\f231\"; }\n\n.fa-pinterest-square:before {\n content: \"\\f0d3\"; }\n\n.fa-place-of-worship:before {\n content: \"\\f67f\"; }\n\n.fa-plane:before {\n content: \"\\f072\"; }\n\n.fa-plane-arrival:before {\n content: \"\\f5af\"; }\n\n.fa-plane-departure:before {\n content: \"\\f5b0\"; }\n\n.fa-play:before {\n content: \"\\f04b\"; }\n\n.fa-play-circle:before {\n content: \"\\f144\"; }\n\n.fa-playstation:before {\n content: \"\\f3df\"; }\n\n.fa-plug:before {\n content: \"\\f1e6\"; }\n\n.fa-plus:before {\n content: \"\\f067\"; }\n\n.fa-plus-circle:before {\n content: \"\\f055\"; }\n\n.fa-plus-square:before {\n content: \"\\f0fe\"; }\n\n.fa-podcast:before {\n content: \"\\f2ce\"; }\n\n.fa-poll:before {\n content: \"\\f681\"; }\n\n.fa-poll-h:before {\n content: \"\\f682\"; }\n\n.fa-poo:before {\n content: \"\\f2fe\"; }\n\n.fa-poo-storm:before {\n content: \"\\f75a\"; }\n\n.fa-poop:before {\n content: \"\\f619\"; }\n\n.fa-portrait:before {\n content: \"\\f3e0\"; }\n\n.fa-pound-sign:before {\n content: \"\\f154\"; }\n\n.fa-power-off:before {\n content: \"\\f011\"; }\n\n.fa-pray:before {\n content: \"\\f683\"; }\n\n.fa-praying-hands:before {\n content: \"\\f684\"; }\n\n.fa-prescription:before {\n content: \"\\f5b1\"; }\n\n.fa-prescription-bottle:before {\n content: \"\\f485\"; }\n\n.fa-prescription-bottle-alt:before {\n content: \"\\f486\"; }\n\n.fa-print:before {\n content: \"\\f02f\"; }\n\n.fa-procedures:before {\n content: \"\\f487\"; }\n\n.fa-product-hunt:before {\n content: \"\\f288\"; }\n\n.fa-project-diagram:before {\n content: \"\\f542\"; }\n\n.fa-pushed:before {\n content: \"\\f3e1\"; }\n\n.fa-puzzle-piece:before {\n content: \"\\f12e\"; }\n\n.fa-python:before {\n content: \"\\f3e2\"; }\n\n.fa-qq:before {\n content: \"\\f1d6\"; }\n\n.fa-qrcode:before {\n content: \"\\f029\"; }\n\n.fa-question:before {\n content: \"\\f128\"; }\n\n.fa-question-circle:before {\n content: \"\\f059\"; }\n\n.fa-quidditch:before {\n content: \"\\f458\"; }\n\n.fa-quinscape:before {\n content: \"\\f459\"; }\n\n.fa-quora:before {\n content: \"\\f2c4\"; }\n\n.fa-quote-left:before {\n content: \"\\f10d\"; }\n\n.fa-quote-right:before {\n content: \"\\f10e\"; }\n\n.fa-quran:before {\n content: \"\\f687\"; }\n\n.fa-r-project:before {\n content: \"\\f4f7\"; }\n\n.fa-rainbow:before {\n content: \"\\f75b\"; }\n\n.fa-random:before {\n content: \"\\f074\"; }\n\n.fa-ravelry:before {\n content: \"\\f2d9\"; }\n\n.fa-react:before {\n content: \"\\f41b\"; }\n\n.fa-reacteurope:before {\n content: \"\\f75d\"; }\n\n.fa-readme:before {\n content: \"\\f4d5\"; }\n\n.fa-rebel:before {\n content: \"\\f1d0\"; }\n\n.fa-receipt:before {\n content: \"\\f543\"; }\n\n.fa-recycle:before {\n content: \"\\f1b8\"; }\n\n.fa-red-river:before {\n content: \"\\f3e3\"; }\n\n.fa-reddit:before {\n content: \"\\f1a1\"; }\n\n.fa-reddit-alien:before {\n content: \"\\f281\"; }\n\n.fa-reddit-square:before {\n content: \"\\f1a2\"; }\n\n.fa-redo:before {\n content: \"\\f01e\"; }\n\n.fa-redo-alt:before {\n content: \"\\f2f9\"; }\n\n.fa-registered:before {\n content: \"\\f25d\"; }\n\n.fa-renren:before {\n content: \"\\f18b\"; }\n\n.fa-reply:before {\n content: \"\\f3e5\"; }\n\n.fa-reply-all:before {\n content: \"\\f122\"; }\n\n.fa-replyd:before {\n content: \"\\f3e6\"; }\n\n.fa-republican:before {\n content: \"\\f75e\"; }\n\n.fa-researchgate:before {\n content: \"\\f4f8\"; }\n\n.fa-resolving:before {\n content: \"\\f3e7\"; }\n\n.fa-retweet:before {\n content: \"\\f079\"; }\n\n.fa-rev:before {\n content: \"\\f5b2\"; }\n\n.fa-ribbon:before {\n content: \"\\f4d6\"; }\n\n.fa-ring:before {\n content: \"\\f70b\"; }\n\n.fa-road:before {\n content: \"\\f018\"; }\n\n.fa-robot:before {\n content: \"\\f544\"; }\n\n.fa-rocket:before {\n content: \"\\f135\"; }\n\n.fa-rocketchat:before {\n content: \"\\f3e8\"; }\n\n.fa-rockrms:before {\n content: \"\\f3e9\"; }\n\n.fa-route:before {\n content: \"\\f4d7\"; }\n\n.fa-rss:before {\n content: \"\\f09e\"; }\n\n.fa-rss-square:before {\n content: \"\\f143\"; }\n\n.fa-ruble-sign:before {\n content: \"\\f158\"; }\n\n.fa-ruler:before {\n content: \"\\f545\"; }\n\n.fa-ruler-combined:before {\n content: \"\\f546\"; }\n\n.fa-ruler-horizontal:before {\n content: \"\\f547\"; }\n\n.fa-ruler-vertical:before {\n content: \"\\f548\"; }\n\n.fa-running:before {\n content: \"\\f70c\"; }\n\n.fa-rupee-sign:before {\n content: \"\\f156\"; }\n\n.fa-sad-cry:before {\n content: \"\\f5b3\"; }\n\n.fa-sad-tear:before {\n content: \"\\f5b4\"; }\n\n.fa-safari:before {\n content: \"\\f267\"; }\n\n.fa-sass:before {\n content: \"\\f41e\"; }\n\n.fa-save:before {\n content: \"\\f0c7\"; }\n\n.fa-schlix:before {\n content: \"\\f3ea\"; }\n\n.fa-school:before {\n content: \"\\f549\"; }\n\n.fa-screwdriver:before {\n content: \"\\f54a\"; }\n\n.fa-scribd:before {\n content: \"\\f28a\"; }\n\n.fa-scroll:before {\n content: \"\\f70e\"; }\n\n.fa-search:before {\n content: \"\\f002\"; }\n\n.fa-search-dollar:before {\n content: \"\\f688\"; }\n\n.fa-search-location:before {\n content: \"\\f689\"; }\n\n.fa-search-minus:before {\n content: \"\\f010\"; }\n\n.fa-search-plus:before {\n content: \"\\f00e\"; }\n\n.fa-searchengin:before {\n content: \"\\f3eb\"; }\n\n.fa-seedling:before {\n content: \"\\f4d8\"; }\n\n.fa-sellcast:before {\n content: \"\\f2da\"; }\n\n.fa-sellsy:before {\n content: \"\\f213\"; }\n\n.fa-server:before {\n content: \"\\f233\"; }\n\n.fa-servicestack:before {\n content: \"\\f3ec\"; }\n\n.fa-shapes:before {\n content: \"\\f61f\"; }\n\n.fa-share:before {\n content: \"\\f064\"; }\n\n.fa-share-alt:before {\n content: \"\\f1e0\"; }\n\n.fa-share-alt-square:before {\n content: \"\\f1e1\"; }\n\n.fa-share-square:before {\n content: \"\\f14d\"; }\n\n.fa-shekel-sign:before {\n content: \"\\f20b\"; }\n\n.fa-shield-alt:before {\n content: \"\\f3ed\"; }\n\n.fa-ship:before {\n content: \"\\f21a\"; }\n\n.fa-shipping-fast:before {\n content: \"\\f48b\"; }\n\n.fa-shirtsinbulk:before {\n content: \"\\f214\"; }\n\n.fa-shoe-prints:before {\n content: \"\\f54b\"; }\n\n.fa-shopping-bag:before {\n content: \"\\f290\"; }\n\n.fa-shopping-basket:before {\n content: \"\\f291\"; }\n\n.fa-shopping-cart:before {\n content: \"\\f07a\"; }\n\n.fa-shopware:before {\n content: \"\\f5b5\"; }\n\n.fa-shower:before {\n content: \"\\f2cc\"; }\n\n.fa-shuttle-van:before {\n content: \"\\f5b6\"; }\n\n.fa-sign:before {\n content: \"\\f4d9\"; }\n\n.fa-sign-in-alt:before {\n content: \"\\f2f6\"; }\n\n.fa-sign-language:before {\n content: \"\\f2a7\"; }\n\n.fa-sign-out-alt:before {\n content: \"\\f2f5\"; }\n\n.fa-signal:before {\n content: \"\\f012\"; }\n\n.fa-signature:before {\n content: \"\\f5b7\"; }\n\n.fa-simplybuilt:before {\n content: \"\\f215\"; }\n\n.fa-sistrix:before {\n content: \"\\f3ee\"; }\n\n.fa-sitemap:before {\n content: \"\\f0e8\"; }\n\n.fa-sith:before {\n content: \"\\f512\"; }\n\n.fa-skull:before {\n content: \"\\f54c\"; }\n\n.fa-skull-crossbones:before {\n content: \"\\f714\"; }\n\n.fa-skyatlas:before {\n content: \"\\f216\"; }\n\n.fa-skype:before {\n content: \"\\f17e\"; }\n\n.fa-slack:before {\n content: \"\\f198\"; }\n\n.fa-slack-hash:before {\n content: \"\\f3ef\"; }\n\n.fa-slash:before {\n content: \"\\f715\"; }\n\n.fa-sliders-h:before {\n content: \"\\f1de\"; }\n\n.fa-slideshare:before {\n content: \"\\f1e7\"; }\n\n.fa-smile:before {\n content: \"\\f118\"; }\n\n.fa-smile-beam:before {\n content: \"\\f5b8\"; }\n\n.fa-smile-wink:before {\n content: \"\\f4da\"; }\n\n.fa-smog:before {\n content: \"\\f75f\"; }\n\n.fa-smoking:before {\n content: \"\\f48d\"; }\n\n.fa-smoking-ban:before {\n content: \"\\f54d\"; }\n\n.fa-snapchat:before {\n content: \"\\f2ab\"; }\n\n.fa-snapchat-ghost:before {\n content: \"\\f2ac\"; }\n\n.fa-snapchat-square:before {\n content: \"\\f2ad\"; }\n\n.fa-snowflake:before {\n content: \"\\f2dc\"; }\n\n.fa-socks:before {\n content: \"\\f696\"; }\n\n.fa-solar-panel:before {\n content: \"\\f5ba\"; }\n\n.fa-sort:before {\n content: \"\\f0dc\"; }\n\n.fa-sort-alpha-down:before {\n content: \"\\f15d\"; }\n\n.fa-sort-alpha-up:before {\n content: \"\\f15e\"; }\n\n.fa-sort-amount-down:before {\n content: \"\\f160\"; }\n\n.fa-sort-amount-up:before {\n content: \"\\f161\"; }\n\n.fa-sort-down:before {\n content: \"\\f0dd\"; }\n\n.fa-sort-numeric-down:before {\n content: \"\\f162\"; }\n\n.fa-sort-numeric-up:before {\n content: \"\\f163\"; }\n\n.fa-sort-up:before {\n content: \"\\f0de\"; }\n\n.fa-soundcloud:before {\n content: \"\\f1be\"; }\n\n.fa-spa:before {\n content: \"\\f5bb\"; }\n\n.fa-space-shuttle:before {\n content: \"\\f197\"; }\n\n.fa-speakap:before {\n content: \"\\f3f3\"; }\n\n.fa-spider:before {\n content: \"\\f717\"; }\n\n.fa-spinner:before {\n content: \"\\f110\"; }\n\n.fa-splotch:before {\n content: \"\\f5bc\"; }\n\n.fa-spotify:before {\n content: \"\\f1bc\"; }\n\n.fa-spray-can:before {\n content: \"\\f5bd\"; }\n\n.fa-square:before {\n content: \"\\f0c8\"; }\n\n.fa-square-full:before {\n content: \"\\f45c\"; }\n\n.fa-square-root-alt:before {\n content: \"\\f698\"; }\n\n.fa-squarespace:before {\n content: \"\\f5be\"; }\n\n.fa-stack-exchange:before {\n content: \"\\f18d\"; }\n\n.fa-stack-overflow:before {\n content: \"\\f16c\"; }\n\n.fa-stamp:before {\n content: \"\\f5bf\"; }\n\n.fa-star:before {\n content: \"\\f005\"; }\n\n.fa-star-and-crescent:before {\n content: \"\\f699\"; }\n\n.fa-star-half:before {\n content: \"\\f089\"; }\n\n.fa-star-half-alt:before {\n content: \"\\f5c0\"; }\n\n.fa-star-of-david:before {\n content: \"\\f69a\"; }\n\n.fa-star-of-life:before {\n content: \"\\f621\"; }\n\n.fa-staylinked:before {\n content: \"\\f3f5\"; }\n\n.fa-steam:before {\n content: \"\\f1b6\"; }\n\n.fa-steam-square:before {\n content: \"\\f1b7\"; }\n\n.fa-steam-symbol:before {\n content: \"\\f3f6\"; }\n\n.fa-step-backward:before {\n content: \"\\f048\"; }\n\n.fa-step-forward:before {\n content: \"\\f051\"; }\n\n.fa-stethoscope:before {\n content: \"\\f0f1\"; }\n\n.fa-sticker-mule:before {\n content: \"\\f3f7\"; }\n\n.fa-sticky-note:before {\n content: \"\\f249\"; }\n\n.fa-stop:before {\n content: \"\\f04d\"; }\n\n.fa-stop-circle:before {\n content: \"\\f28d\"; }\n\n.fa-stopwatch:before {\n content: \"\\f2f2\"; }\n\n.fa-store:before {\n content: \"\\f54e\"; }\n\n.fa-store-alt:before {\n content: \"\\f54f\"; }\n\n.fa-strava:before {\n content: \"\\f428\"; }\n\n.fa-stream:before {\n content: \"\\f550\"; }\n\n.fa-street-view:before {\n content: \"\\f21d\"; }\n\n.fa-strikethrough:before {\n content: \"\\f0cc\"; }\n\n.fa-stripe:before {\n content: \"\\f429\"; }\n\n.fa-stripe-s:before {\n content: \"\\f42a\"; }\n\n.fa-stroopwafel:before {\n content: \"\\f551\"; }\n\n.fa-studiovinari:before {\n content: \"\\f3f8\"; }\n\n.fa-stumbleupon:before {\n content: \"\\f1a4\"; }\n\n.fa-stumbleupon-circle:before {\n content: \"\\f1a3\"; }\n\n.fa-subscript:before {\n content: \"\\f12c\"; }\n\n.fa-subway:before {\n content: \"\\f239\"; }\n\n.fa-suitcase:before {\n content: \"\\f0f2\"; }\n\n.fa-suitcase-rolling:before {\n content: \"\\f5c1\"; }\n\n.fa-sun:before {\n content: \"\\f185\"; }\n\n.fa-superpowers:before {\n content: \"\\f2dd\"; }\n\n.fa-superscript:before {\n content: \"\\f12b\"; }\n\n.fa-supple:before {\n content: \"\\f3f9\"; }\n\n.fa-surprise:before {\n content: \"\\f5c2\"; }\n\n.fa-swatchbook:before {\n content: \"\\f5c3\"; }\n\n.fa-swimmer:before {\n content: \"\\f5c4\"; }\n\n.fa-swimming-pool:before {\n content: \"\\f5c5\"; }\n\n.fa-synagogue:before {\n content: \"\\f69b\"; }\n\n.fa-sync:before {\n content: \"\\f021\"; }\n\n.fa-sync-alt:before {\n content: \"\\f2f1\"; }\n\n.fa-syringe:before {\n content: \"\\f48e\"; }\n\n.fa-table:before {\n content: \"\\f0ce\"; }\n\n.fa-table-tennis:before {\n content: \"\\f45d\"; }\n\n.fa-tablet:before {\n content: \"\\f10a\"; }\n\n.fa-tablet-alt:before {\n content: \"\\f3fa\"; }\n\n.fa-tablets:before {\n content: \"\\f490\"; }\n\n.fa-tachometer-alt:before {\n content: \"\\f3fd\"; }\n\n.fa-tag:before {\n content: \"\\f02b\"; }\n\n.fa-tags:before {\n content: \"\\f02c\"; }\n\n.fa-tape:before {\n content: \"\\f4db\"; }\n\n.fa-tasks:before {\n content: \"\\f0ae\"; }\n\n.fa-taxi:before {\n content: \"\\f1ba\"; }\n\n.fa-teamspeak:before {\n content: \"\\f4f9\"; }\n\n.fa-teeth:before {\n content: \"\\f62e\"; }\n\n.fa-teeth-open:before {\n content: \"\\f62f\"; }\n\n.fa-telegram:before {\n content: \"\\f2c6\"; }\n\n.fa-telegram-plane:before {\n content: \"\\f3fe\"; }\n\n.fa-temperature-high:before {\n content: \"\\f769\"; }\n\n.fa-temperature-low:before {\n content: \"\\f76b\"; }\n\n.fa-tencent-weibo:before {\n content: \"\\f1d5\"; }\n\n.fa-terminal:before {\n content: \"\\f120\"; }\n\n.fa-text-height:before {\n content: \"\\f034\"; }\n\n.fa-text-width:before {\n content: \"\\f035\"; }\n\n.fa-th:before {\n content: \"\\f00a\"; }\n\n.fa-th-large:before {\n content: \"\\f009\"; }\n\n.fa-th-list:before {\n content: \"\\f00b\"; }\n\n.fa-the-red-yeti:before {\n content: \"\\f69d\"; }\n\n.fa-theater-masks:before {\n content: \"\\f630\"; }\n\n.fa-themeco:before {\n content: \"\\f5c6\"; }\n\n.fa-themeisle:before {\n content: \"\\f2b2\"; }\n\n.fa-thermometer:before {\n content: \"\\f491\"; }\n\n.fa-thermometer-empty:before {\n content: \"\\f2cb\"; }\n\n.fa-thermometer-full:before {\n content: \"\\f2c7\"; }\n\n.fa-thermometer-half:before {\n content: \"\\f2c9\"; }\n\n.fa-thermometer-quarter:before {\n content: \"\\f2ca\"; }\n\n.fa-thermometer-three-quarters:before {\n content: \"\\f2c8\"; }\n\n.fa-think-peaks:before {\n content: \"\\f731\"; }\n\n.fa-thumbs-down:before {\n content: \"\\f165\"; }\n\n.fa-thumbs-up:before {\n content: \"\\f164\"; }\n\n.fa-thumbtack:before {\n content: \"\\f08d\"; }\n\n.fa-ticket-alt:before {\n content: \"\\f3ff\"; }\n\n.fa-times:before {\n content: \"\\f00d\"; }\n\n.fa-times-circle:before {\n content: \"\\f057\"; }\n\n.fa-tint:before {\n content: \"\\f043\"; }\n\n.fa-tint-slash:before {\n content: \"\\f5c7\"; }\n\n.fa-tired:before {\n content: \"\\f5c8\"; }\n\n.fa-toggle-off:before {\n content: \"\\f204\"; }\n\n.fa-toggle-on:before {\n content: \"\\f205\"; }\n\n.fa-toilet-paper:before {\n content: \"\\f71e\"; }\n\n.fa-toolbox:before {\n content: \"\\f552\"; }\n\n.fa-tooth:before {\n content: \"\\f5c9\"; }\n\n.fa-torah:before {\n content: \"\\f6a0\"; }\n\n.fa-torii-gate:before {\n content: \"\\f6a1\"; }\n\n.fa-tractor:before {\n content: \"\\f722\"; }\n\n.fa-trade-federation:before {\n content: \"\\f513\"; }\n\n.fa-trademark:before {\n content: \"\\f25c\"; }\n\n.fa-traffic-light:before {\n content: \"\\f637\"; }\n\n.fa-train:before {\n content: \"\\f238\"; }\n\n.fa-transgender:before {\n content: \"\\f224\"; }\n\n.fa-transgender-alt:before {\n content: \"\\f225\"; }\n\n.fa-trash:before {\n content: \"\\f1f8\"; }\n\n.fa-trash-alt:before {\n content: \"\\f2ed\"; }\n\n.fa-tree:before {\n content: \"\\f1bb\"; }\n\n.fa-trello:before {\n content: \"\\f181\"; }\n\n.fa-tripadvisor:before {\n content: \"\\f262\"; }\n\n.fa-trophy:before {\n content: \"\\f091\"; }\n\n.fa-truck:before {\n content: \"\\f0d1\"; }\n\n.fa-truck-loading:before {\n content: \"\\f4de\"; }\n\n.fa-truck-monster:before {\n content: \"\\f63b\"; }\n\n.fa-truck-moving:before {\n content: \"\\f4df\"; }\n\n.fa-truck-pickup:before {\n content: \"\\f63c\"; }\n\n.fa-tshirt:before {\n content: \"\\f553\"; }\n\n.fa-tty:before {\n content: \"\\f1e4\"; }\n\n.fa-tumblr:before {\n content: \"\\f173\"; }\n\n.fa-tumblr-square:before {\n content: \"\\f174\"; }\n\n.fa-tv:before {\n content: \"\\f26c\"; }\n\n.fa-twitch:before {\n content: \"\\f1e8\"; }\n\n.fa-twitter:before {\n content: \"\\f099\"; }\n\n.fa-twitter-square:before {\n content: \"\\f081\"; }\n\n.fa-typo3:before {\n content: \"\\f42b\"; }\n\n.fa-uber:before {\n content: \"\\f402\"; }\n\n.fa-uikit:before {\n content: \"\\f403\"; }\n\n.fa-umbrella:before {\n content: \"\\f0e9\"; }\n\n.fa-umbrella-beach:before {\n content: \"\\f5ca\"; }\n\n.fa-underline:before {\n content: \"\\f0cd\"; }\n\n.fa-undo:before {\n content: \"\\f0e2\"; }\n\n.fa-undo-alt:before {\n content: \"\\f2ea\"; }\n\n.fa-uniregistry:before {\n content: \"\\f404\"; }\n\n.fa-universal-access:before {\n content: \"\\f29a\"; }\n\n.fa-university:before {\n content: \"\\f19c\"; }\n\n.fa-unlink:before {\n content: \"\\f127\"; }\n\n.fa-unlock:before {\n content: \"\\f09c\"; }\n\n.fa-unlock-alt:before {\n content: \"\\f13e\"; }\n\n.fa-untappd:before {\n content: \"\\f405\"; }\n\n.fa-upload:before {\n content: \"\\f093\"; }\n\n.fa-usb:before {\n content: \"\\f287\"; }\n\n.fa-user:before {\n content: \"\\f007\"; }\n\n.fa-user-alt:before {\n content: \"\\f406\"; }\n\n.fa-user-alt-slash:before {\n content: \"\\f4fa\"; }\n\n.fa-user-astronaut:before {\n content: \"\\f4fb\"; }\n\n.fa-user-check:before {\n content: \"\\f4fc\"; }\n\n.fa-user-circle:before {\n content: \"\\f2bd\"; }\n\n.fa-user-clock:before {\n content: \"\\f4fd\"; }\n\n.fa-user-cog:before {\n content: \"\\f4fe\"; }\n\n.fa-user-edit:before {\n content: \"\\f4ff\"; }\n\n.fa-user-friends:before {\n content: \"\\f500\"; }\n\n.fa-user-graduate:before {\n content: \"\\f501\"; }\n\n.fa-user-injured:before {\n content: \"\\f728\"; }\n\n.fa-user-lock:before {\n content: \"\\f502\"; }\n\n.fa-user-md:before {\n content: \"\\f0f0\"; }\n\n.fa-user-minus:before {\n content: \"\\f503\"; }\n\n.fa-user-ninja:before {\n content: \"\\f504\"; }\n\n.fa-user-plus:before {\n content: \"\\f234\"; }\n\n.fa-user-secret:before {\n content: \"\\f21b\"; }\n\n.fa-user-shield:before {\n content: \"\\f505\"; }\n\n.fa-user-slash:before {\n content: \"\\f506\"; }\n\n.fa-user-tag:before {\n content: \"\\f507\"; }\n\n.fa-user-tie:before {\n content: \"\\f508\"; }\n\n.fa-user-times:before {\n content: \"\\f235\"; }\n\n.fa-users:before {\n content: \"\\f0c0\"; }\n\n.fa-users-cog:before {\n content: \"\\f509\"; }\n\n.fa-ussunnah:before {\n content: \"\\f407\"; }\n\n.fa-utensil-spoon:before {\n content: \"\\f2e5\"; }\n\n.fa-utensils:before {\n content: \"\\f2e7\"; }\n\n.fa-vaadin:before {\n content: \"\\f408\"; }\n\n.fa-vector-square:before {\n content: \"\\f5cb\"; }\n\n.fa-venus:before {\n content: \"\\f221\"; }\n\n.fa-venus-double:before {\n content: \"\\f226\"; }\n\n.fa-venus-mars:before {\n content: \"\\f228\"; }\n\n.fa-viacoin:before {\n content: \"\\f237\"; }\n\n.fa-viadeo:before {\n content: \"\\f2a9\"; }\n\n.fa-viadeo-square:before {\n content: \"\\f2aa\"; }\n\n.fa-vial:before {\n content: \"\\f492\"; }\n\n.fa-vials:before {\n content: \"\\f493\"; }\n\n.fa-viber:before {\n content: \"\\f409\"; }\n\n.fa-video:before {\n content: \"\\f03d\"; }\n\n.fa-video-slash:before {\n content: \"\\f4e2\"; }\n\n.fa-vihara:before {\n content: \"\\f6a7\"; }\n\n.fa-vimeo:before {\n content: \"\\f40a\"; }\n\n.fa-vimeo-square:before {\n content: \"\\f194\"; }\n\n.fa-vimeo-v:before {\n content: \"\\f27d\"; }\n\n.fa-vine:before {\n content: \"\\f1ca\"; }\n\n.fa-vk:before {\n content: \"\\f189\"; }\n\n.fa-vnv:before {\n content: \"\\f40b\"; }\n\n.fa-volleyball-ball:before {\n content: \"\\f45f\"; }\n\n.fa-volume-down:before {\n content: \"\\f027\"; }\n\n.fa-volume-mute:before {\n content: \"\\f6a9\"; }\n\n.fa-volume-off:before {\n content: \"\\f026\"; }\n\n.fa-volume-up:before {\n content: \"\\f028\"; }\n\n.fa-vote-yea:before {\n content: \"\\f772\"; }\n\n.fa-vr-cardboard:before {\n content: \"\\f729\"; }\n\n.fa-vuejs:before {\n content: \"\\f41f\"; }\n\n.fa-walking:before {\n content: \"\\f554\"; }\n\n.fa-wallet:before {\n content: \"\\f555\"; }\n\n.fa-warehouse:before {\n content: \"\\f494\"; }\n\n.fa-water:before {\n content: \"\\f773\"; }\n\n.fa-weebly:before {\n content: \"\\f5cc\"; }\n\n.fa-weibo:before {\n content: \"\\f18a\"; }\n\n.fa-weight:before {\n content: \"\\f496\"; }\n\n.fa-weight-hanging:before {\n content: \"\\f5cd\"; }\n\n.fa-weixin:before {\n content: \"\\f1d7\"; }\n\n.fa-whatsapp:before {\n content: \"\\f232\"; }\n\n.fa-whatsapp-square:before {\n content: \"\\f40c\"; }\n\n.fa-wheelchair:before {\n content: \"\\f193\"; }\n\n.fa-whmcs:before {\n content: \"\\f40d\"; }\n\n.fa-wifi:before {\n content: \"\\f1eb\"; }\n\n.fa-wikipedia-w:before {\n content: \"\\f266\"; }\n\n.fa-wind:before {\n content: \"\\f72e\"; }\n\n.fa-window-close:before {\n content: \"\\f410\"; }\n\n.fa-window-maximize:before {\n content: \"\\f2d0\"; }\n\n.fa-window-minimize:before {\n content: \"\\f2d1\"; }\n\n.fa-window-restore:before {\n content: \"\\f2d2\"; }\n\n.fa-windows:before {\n content: \"\\f17a\"; }\n\n.fa-wine-bottle:before {\n content: \"\\f72f\"; }\n\n.fa-wine-glass:before {\n content: \"\\f4e3\"; }\n\n.fa-wine-glass-alt:before {\n content: \"\\f5ce\"; }\n\n.fa-wix:before {\n content: \"\\f5cf\"; }\n\n.fa-wizards-of-the-coast:before {\n content: \"\\f730\"; }\n\n.fa-wolf-pack-battalion:before {\n content: \"\\f514\"; }\n\n.fa-won-sign:before {\n content: \"\\f159\"; }\n\n.fa-wordpress:before {\n content: \"\\f19a\"; }\n\n.fa-wordpress-simple:before {\n content: \"\\f411\"; }\n\n.fa-wpbeginner:before {\n content: \"\\f297\"; }\n\n.fa-wpexplorer:before {\n content: \"\\f2de\"; }\n\n.fa-wpforms:before {\n content: \"\\f298\"; }\n\n.fa-wpressr:before {\n content: \"\\f3e4\"; }\n\n.fa-wrench:before {\n content: \"\\f0ad\"; }\n\n.fa-x-ray:before {\n content: \"\\f497\"; }\n\n.fa-xbox:before {\n content: \"\\f412\"; }\n\n.fa-xing:before {\n content: \"\\f168\"; }\n\n.fa-xing-square:before {\n content: \"\\f169\"; }\n\n.fa-y-combinator:before {\n content: \"\\f23b\"; }\n\n.fa-yahoo:before {\n content: \"\\f19e\"; }\n\n.fa-yandex:before {\n content: \"\\f413\"; }\n\n.fa-yandex-international:before {\n content: \"\\f414\"; }\n\n.fa-yelp:before {\n content: \"\\f1e9\"; }\n\n.fa-yen-sign:before {\n content: \"\\f157\"; }\n\n.fa-yin-yang:before {\n content: \"\\f6ad\"; }\n\n.fa-yoast:before {\n content: \"\\f2b1\"; }\n\n.fa-youtube:before {\n content: \"\\f167\"; }\n\n.fa-youtube-square:before {\n content: \"\\f431\"; }\n\n.fa-zhihu:before {\n content: \"\\f63f\"; }\n\n.sr-only {\n border: 0;\n clip: rect(0, 0, 0, 0);\n height: 1px;\n margin: -1px;\n overflow: hidden;\n padding: 0;\n position: absolute;\n width: 1px; }\n\n.sr-only-focusable:active, .sr-only-focusable:focus {\n clip: auto;\n height: auto;\n margin: 0;\n overflow: visible;\n position: static;\n width: auto; }\n@font-face {\n font-family: 'Font Awesome 5 Brands';\n font-style: normal;\n font-weight: normal;\n src: url($font-path + \"fa-brands-400.eot\");\n src: url($font-path + \"fa-brands-400.eot?#iefix\") format(\"embedded-opentype\"), url($font-path + \"fa-brands-400.woff2\") format(\"woff2\"), url($font-path + \"fa-brands-400.woff\") format(\"woff\"), url($font-path + \"fa-brands-400.ttf\") format(\"truetype\"), url($font-path + \"fa-brands-400.svg#fontawesome\") format(\"svg\"); }\n\n.fab {\n font-family: 'Font Awesome 5 Brands'; }\n@font-face {\n font-family: 'Font Awesome 5 Free';\n font-style: normal;\n font-weight: 400;\n src: url($font-path + \"fa-regular-400.eot\");\n src: url($font-path + \"fa-regular-400.eot?#iefix\") format(\"embedded-opentype\"), url($font-path + \"fa-regular-400.woff2\") format(\"woff2\"), url($font-path + \"fa-regular-400.woff\") format(\"woff\"), url($font-path + \"fa-regular-400.ttf\") format(\"truetype\"), url($font-path + \"fa-regular-400.svg#fontawesome\") format(\"svg\"); }\n\n.far {\n font-family: 'Font Awesome 5 Free';\n font-weight: 400; }\n@font-face {\n font-family: 'Font Awesome 5 Free';\n font-style: normal;\n font-weight: 900;\n src: url($font-path + \"fa-solid-900.eot\");\n src: url($font-path + \"fa-solid-900.eot?#iefix\") format(\"embedded-opentype\"), url($font-path + \"fa-solid-900.woff2\") format(\"woff2\"), url($font-path + \"fa-solid-900.woff\") format(\"woff\"), url($font-path + \"fa-solid-900.ttf\") format(\"truetype\"), url($font-path + \"fa-solid-900.svg#fontawesome\") format(\"svg\"); }\n\n.fa,\n.fas {\n font-family: 'Font Awesome 5 Free';\n font-weight: 900; }\n",".tykon:before {\n font-family: \"tykon\" !important;\n font-style: normal !important;\n font-weight: normal !important;\n font-variant: normal !important;\n text-transform: none !important;\n speak: none;\n line-height: 1;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\n.tykon-arrowdown:before {\n content: \"\\61\";\n}\n.tykon-arrowleft:before {\n content: \"\\62\";\n}\n.tykon-arrowright:before {\n content: \"\\63\";\n}\n.tykon-arrowup:before {\n content: \"\\64\";\n}\n.tykon-doublearrowdown:before {\n content: \"\\65\";\n}\n.tykon-filter:before {\n content: \"\\66\";\n}\n.tykon-graph1:before {\n content: \"\\67\";\n}\n.tykon-graph2:before {\n content: \"\\68\";\n}\n.tykon-label:before {\n content: \"\\69\";\n}\n.tykon-reload:before {\n content: \"\\6a\";\n}\n.tykon-select:before {\n content: \"\\6b\";\n}\n.tykon-target:before {\n content: \"\\6c\";\n}\n.tykon-undo:before {\n content: \"\\6d\";\n}\n.tykon-deployment:before {\n content: \"\\6e\";\n}\n.tykon-team:before {\n content: \"\\6f\";\n}\n.tykon-overview:before {\n content: \"\\70\";\n}\n.tykon-loadout:before {\n content: \"\\71\";\n}\n.tykon-entitlement:before {\n content: \"\\72\";\n}\n.tykon-users:before {\n content: \"\\73\";\n}\n.tykon-doublearrowdown:before {\n content: \"\\65\";\n}\n.tykon-arrowsort:before {\n content: \"\\57\";\n}\n.tykon-check:before {\n content: \"\\56\";\n}\n.tykon-copy:before {\n content: \"\\43\";\n}\n.tykon-delete:before {\n content: \"\\55\";\n}\n.tykon-download:before {\n content: \"\\4c\";\n}\n.tykon-draft:before {\n content: \"\\44\";\n}\n.tykon-edit:before {\n content: \"\\45\";\n}\n.tykon-filter:before {\n content: \"\\66\";\n}\n.tykon-graphq2:before {\n content: \"\\68\";\n}\n.tykon-help:before {\n content: \"\\3f\";\n}\n.tykon-label:before {\n content: \"\\69\";\n}\n.tykon-link:before {\n content: \"\\52\";\n}\n.tykon-lock1:before {\n content: \"\\59\";\n}\n.tykon-lock2:before {\n content: \"\\5A\";\n}\n.tykon-notifications:before {\n content: \"\\4E\";\n}\n.tykon-plus:before {\n content: \"\\2B\";\n}\n.tykon-profile:before {\n content: \"\\50\";\n}\n.tykon-reload:before {\n content: \"\\6A\";\n}\n.tykon-search:before {\n content: \"\\4F\";\n}\n.tykon-select:before {\n content: \"\\6B\";\n}\n.tykon-settings:before {\n content: \"\\53\";\n}\n.tykon-target:before {\n content: \"\\6C\";\n}\n.tykon-undo:before {\n content: \"\\6D\";\n}\n.tykon-warning:before {\n content: \"\\21\";\n}\n.tykon-x:before {\n content: \"\\58\";\n}\n.tykon-waiting:before {\n content: \"\\54\";\n}\n.tykon-fullscreen:before {\n content: \"\\e000\";\n}\n.tykon-fullscreen-exit:before {\n content: \"\\e001\";\n}\n.tykon-time:before {\n content: \"\\74\";\n}\n","h1, h2, h3, h4, h5, h6 {\n margin-bottom: $headings-margin-bottom;\n font-family: $headings-font-family;\n font-weight: $headings-font-weight;\n color: $headings-color;\n}\n\nlabel {\n display: inline-block;\n max-width: 100%;\n margin-bottom: 5px;\n color: $label-color;\n}\n\nh1 {\n font-size: text-scale('xxl');\n line-height: line-height('xxl');\n}\nh2 {\n font-size: text-scale('xl');\n line-height: line-height('xl');\n}\nh3 {\n font-size: text-scale('lg');\n line-height: line-height('lg');\n}\nh4 {\n font-size: text-scale('md');\n line-height: line-height('md');\n}\nh5 {\n font-size: text-scale('sm');\n line-height: line-height('sm');\n}\nh6 {\n font-size: text-scale('xs');\n line-height: line-height('xs');\n}\n\np,\nlabel {\n font-size: text-scale('sm');\n line-height: line-height('sm');\n font-family: $font-family-regular;\n}\n\nstrong {\n font-family: $font-family-bold;\n}\n\na:not(.tyk-button) {\n cursor: pointer;\n color: $text-color;\n font-family: $font-family-regular;\n \n &.link--bold {\n font-family: $font-family-bold;\n }\n\n + a {\n margin-left: 5px;\n }\n\n i {\n font-size: 9px\n }\n}\n\np,\nlabel {\n a {\n font-size: text-scale('sm');\n text-decoration: underline;\n }\n}\n\n.font-family-regular {\n font-family: $font-family-regular;\n}\n.font-family-medium {\n font-family: $font-family-medium;\n}\n.font-family-bold {\n font-family: $font-family-bold;\n}\n.heading-font-family-regular {\n font-family: $headings-font-family-regular;\n}\n.heading-font-family-medium {\n font-family: $headings-font-family-medium;\n}\n.heading-font-family-bold {\n font-family: $headings-font-family-bold;\n}\n\n.text {\n &--primary {\n color: theme-color('primary', 'base');\n }\n &--danger {\n color: theme-color('danger', 'base');\n }\n &--info {\n color: theme-color('info', 'base');\n }\n &-warning {\n color: theme-color('warning', 'base');\n }\n &--medium {\n font-family: $font-family-medium;\n }\n &--bold {\n font-family: $font-family-bold;\n }\n &--uppercase {\n text-transform: uppercase;\n }\n &--ellipsis {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n &--underline {\n text-decoration: underline;\n }\n}\n\ntd.text-ellipsis {\n max-width: 250px;\n}\n\n.section-title {\n font-family: $headings-font-family-bold;\n margin-bottom: 5px;\n\n .tyk-icon {\n margin-left: 5px;\n }\n}\n\n.sub-section-title {\n margin-bottom: 5px;\n font-family: $font-family-medium;\n font-size: text-scale('md');\n line-height: line-height('md');\n\n .tyk-icon {\n margin-left: 5px;\n }\n}\n\n.section-group-title {\n margin-bottom: 5px;\n font-family: $font-family-bold;\n font-size: text-scale('sm');\n line-height: line-height('sm');\n text-transform: uppercase;\n\n .tyk-icon {\n margin-left: 5px;\n }\n}\n\n.text {\n &--default-light {\n color: theme-color('default', 'light') !important;\n }\n &--default {\n color: theme-color('default', 'base') !important;\n }\n &--primary {\n color: theme-color('primary', 'base') !important;\n }\n &--danger {\n color: theme-color('danger', 'base') !important;\n }\n &--success {\n color: theme-color('success', 'base') !important;\n }\n &--warning {\n color: theme-color('warning', 'base') !important;\n }\n}","@import 'mixins';\n@import 'variables';\n\n.tyk-form-section__title {\n font-size: text-scale('base');\n margin: map-get($spacing, 'xs') 0 map-get($spacing, 'base') 0;\n\n &--light {\n color: theme-color('background', 'dark');\n }\n}\n\n.tyk-form-group {\n margin-bottom: $form-group-margin-bottom;\n\n &.has-error > .tyk-form-control__wrapper > .tyk-form-control,\n &.has-error > .tyk-form-control__wrapper > .tyk-input-group > .tyk-form-control,\n &.has-error .tyk-file-input__wrapper > .tyk-form-control {\n border: $error-border;\n border-left: $error-border-left;\n outline: none;\n\n &:focus {\n border-left: 2px solid theme-color('danger', 'dark');\n border-color: theme-color('danger', 'dark');\n outline: none;\n }\n }\n\n label {\n font-family: $font-family-medium;\n }\n\n &--inline {\n align-items: stretch;\n display: flex;\n flex-wrap: nowrap;\n\n .tyk-form-control__wrapper {\n flex: 1;\n }\n\n label {\n display: flex;\n white-space: nowrap;\n margin-right: map-get($spacing, 'md');\n margin-top: 14px;\n }\n\n input,\n select {\n display: flex;\n }\n\n .tyk-form-control__help-block {\n display: flex;\n margin-left: auto;\n }\n }\n\n &--default {\n @include form-group-variant(\n $form-default-color,\n $text-color\n );\n }\n\n &--primary {\n @include form-group-variant(\n $form-primary-color\n );\n }\n\n &--success {\n @include form-group-variant(\n $form-success-color\n );\n }\n\n &--rounded-corners {\n &.has-error > .tyk-form-control__wrapper > .tyk-form-control {\n border-left: $error-border;\n\n &:focus {\n border-left: $error-border;\n outline: none;\n }\n }\n\n .tyk-form-control {\n border-radius: $general-border-radius;\n }\n }\n}\n\n.tyk-form-group--addon-right input {\n border-right: 0 !important;\n padding-right: 0;\n}\n\n.tyk-form-group--addon-left input {\n border-left: 0 !important;\n padding-left: 0;\n}\n\n.tyk-form-group--rounded-corners.tyk-form-group--addon-right {\n input {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n }\n .tyk-input-group__addon {\n background: $form-control-addon-background-color;\n border-top-right-radius: $general-border-radius;\n border-bottom-right-radius: $general-border-radius;\n color: $text-color;\n }\n}\n\n.tyk-form-group--rounded-corners.tyk-form-group--addon-left {\n input {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n border-left: 0 !important;\n }\n .tyk-input-group__addon {\n background: $form-control-addon-background-color;\n border-top-left-radius: $general-border-radius;\n border-bottom-left-radius: $general-border-radius;\n color: $text-color;\n }\n}\n\n.tyk-form-control__error-message {\n font-family: $font-family-regular;\n font-size: text-scale('xs');\n line-height: line-height('xs');\n margin-top: 5px;\n padding: $error-message-padding;\n position: relative;\n\n &:before {\n content: '!';\n background: theme-color('danger', 'base');\n color: white;\n font-family: $font-family-bold;\n border-radius: 8px;\n display: inline-block;\n margin-right: 5px;\n padding: 0px 7px;\n }\n}\n\n.tyk-input-group {\n align-items: center;\n display: flex;\n outline: none;\n\n &__addon {\n align-items: center;\n background-color: $form-control-addon-background-color;\n border: $form-control-border;\n display: flex;\n height: $form-control-height;\n padding: $form-control-addon-padding-top $form-control-addon-padding-right $form-control-addon-padding-bottom $form-control-addon-padding-left;\n\n &:first-child {\n border-right: 0;\n }\n\n &:last-child {\n border-left: 0;\n }\n }\n}\n\n.tyk-form-control {\n font-family: $font-family-medium;\n font-size: text-scale('sm');\n line-height: line-height('sm');\n border: $form-control-border;\n background-color: white;\n color: $text-color;\n display: block;\n height: $form-control-height;\n padding: $form-control-padding-top $form-control-padding-right $form-control-padding-bottom $form-control-padding-left;\n transition: all .2s linear;\n width: 100%;\n\n &[disabled] {\n background-color: $form-control-disabled-background-color;\n\n .tyk-input-group__addon {\n background-color: $form-control-disabled-background-color;\n }\n\n cursor: not-allowed;\n }\n\n &::placeholder {\n font-family: $form-control-placeholder-font-family;\n color: $form-control-placeholder-color;\n }\n\n &:focus,\n &:active {\n outline: none;\n border: $form-control-border-focus !important;\n\n + .tyk-input-group__addon {\n border: $form-control-border-focus !important;\n border-left: none !important;\n }\n }\n\n &__help-block {\n color: $help-block-color;\n font-style: $help-block-font-style;\n font-family: $font-family-regular;\n font-size: text-scale('xs');\n line-height: line-height('xs');\n padding: $help-block-padding;\n margin: 5px 0 0 0;\n }\n}\n\nselect {\n border-radius: 0;\n -webkit-appearance: none;\n}\n\n.inline-form-wrapper {\n align-items: center;\n display: flex;\n width: 100%;\n\n .inline-form {\n width: 100%;\n }\n\n > button {\n margin-left: 10px;\n margin-bottom: map-get($spacing, 'base');\n }\n}\n\n.tyk-checkbox,\n.tyk-radio {\n margin: 10px 0;\n\n label {\n font-family: $font-family-medium;\n }\n\n input {\n margin: 0 5px 0 0;\n }\n\n &--inline {\n display: inline-flex;\n margin-left: map-get($spacing, 'base');\n\n &:first-child {\n margin-left: 0;\n }\n }\n}\n\n.tyk-inline-form {\n align-items: center;\n display: flex;\n flex-wrap: wrap;\n\n .tyk-form-group {\n flex: 1;\n margin-left: map-get($spacing, 'md');\n min-width: 200px;\n\n &:first-child {\n margin-left:0\n }\n }\n\n > .tyk-button {\n margin-left: map-get($spacing, 'md');\n margin-bottom: map-get($spacing, 'base');\n }\n}\n","@import './variables';\n\n%tyk-accordion__trigger {\n background: none;\n border: none;\n cursor: pointer;\n display: flex;\n font-size: $accordion-item-header-font-size;\n outline: none;\n padding: $accordion-item-header-padding-y $accordion-item-header-padding-x;\n width: 100%;\n\n .tyk-icon {\n margin-left: auto;\n }\n}\n\n.tyk-accordion {\n &__item {\n display: grid;\n\n &--trigger-position-left {\n grid-template-columns: $accordion-item-outside-trigger-width auto;\n grid-template-areas:\n \"trigger header\"\n \"trigger content\";\n }\n\n &--trigger-position-right {\n grid-template-columns: auto $accordion-item-outside-trigger-width;\n grid-template-areas:\n \"header trigger\"\n \"content trigger\";\n }\n\n &--trigger-in-header {\n grid-template-columns: auto;\n grid-template-areas:\n \"header\"\n \"content\";\n }\n }\n\n &__trigger-wrapper {\n grid-area: trigger;\n display: flex;\n align-items: flex-start;\n justify-content: center;\n\n .tyk-icon {\n margin-left: auto;\n margin-right: auto;\n }\n }\n\n &__trigger {\n @extend %tyk-accordion__trigger;\n }\n\n &__item-header {\n grid-area: header;\n\n > button {\n @extend %tyk-accordion__trigger;\n }\n }\n\n &__trigger--disabled {\n color: theme-color('background', 'base');\n }\n\n &__item-header.tyk-accordion__arrow-trigger {\n align-items: center;\n display: flex;\n\n > div {\n flex: 1;\n }\n\n > button {\n margin-left: auto;\n width: auto;\n }\n }\n\n &__item-content {\n grid-area: content;\n }\n}\n",":root {\n --tooltip-max-width: 450px;\n}","@import './variables';\n\n.tyk-tooltip {\n display: flex;\n align-items: center;\n background-color: theme-color('primary', 'light');\n border: 2px solid theme-color('primary', 'base');\n border-radius: $general-border-radius;\n max-width: var(--tooltip-max-width);\n padding: map-get($spacing, 'md');\n\n > .tyk-icon:first-child {\n width: 32px;\n height: 32px;\n border-radius: 50%;\n color: white;\n background-color: theme-color('default', 'base-light');\n\n &:before {\n display: flex;\n width: 100%;\n height: 100%;\n align-items: center;\n justify-content: center;\n }\n }\n\n > .tyk-icon + .tyk-tooltip__content {\n margin-left: map-get($spacing, 'md');\n }\n\n &__content {\n color: theme-color('default', 'dark');\n word-break: break-word;\n word-wrap: break-word;\n\n + .tyk-icon {\n margin-left: map-get($spacing, 'md');\n }\n }\n\n > .tyk-icon:last-child {\n cursor: pointer;\n }\n}\n","@import '../../../common/sass/variables';\n@import '../../../common/sass/mixins';\n@import './variables';\n@import './mixins';\n\n.tyk-button {\n background-color: transparent;\n border: none;\n color: white;\n cursor: pointer;\n display: inline-block;\n font-family: $button-font-family;\n text-align: center;\n text-transform: uppercase;\n text-decoration: none;\n transition: all .2s linear;\n user-select: none;\n vertical-align: middle;\n white-space: nowrap;\n\n + .tyk-button,\n + .tyk-dropdown,\n + .tyk-toggle {\n margin-left: map-get($spacing, 'sm');\n }\n\n span + i {\n margin-left: map-get($spacing, 'sm');\n }\n\n i + span {\n margin-left: map-get($spacing, 'sm');\n }\n\n &.disabled {\n cursor: not-allowed;\n opacity: 0.7;\n }\n\n &:hover {\n color: white;\n text-decoration: none;\n }\n\n &:focus {\n outline: none;\n }\n\n @include button-size(\n $padding-y-button-md,\n $padding-x-button-md,\n text-scale('sm'),\n $line-height-button-md,\n $button-border-radius\n );\n\n &--white {\n @include button-variant(\n white,\n transparent,\n theme-color('default', 'base'),\n theme-color('background', 'dark'),\n theme-color('background', 'dark'),\n theme-color('background', 'dark'),\n theme-color('background', 'dark'),\n white\n );\n }\n\n &--primary {\n @include button-variant(\n $button-primary-color,\n $button-primary-color,\n $button-primary-text-color,\n $button-primary-hover-color\n );\n\n &-link {\n @include button-variant-link(\n $button-primary-color\n );\n }\n\n &-outline {\n @include button-variant-outline(\n $button-primary-color,\n );\n }\n\n &-gradient {\n @include button-variant-gradient(\n $button-primary-gradient-start-color,\n $button-primary-gradient-end-color\n );\n }\n }\n &--success {\n @include button-variant(\n $button-success-color,\n $button-success-color,\n white,\n $button-success-hover-color,\n );\n\n &-link {\n @include button-variant-link(\n $button-success-color\n );\n }\n\n &-outline {\n @include button-variant-outline(\n $button-success-color\n );\n }\n\n &-gradient {\n @include button-variant-gradient(\n $button-success-gradient-start-color,\n $button-success-gradient-end-color\n );\n }\n }\n &--danger {\n @include button-variant(\n $button-danger-color,\n $button-danger-color,\n white,\n $button-danger-hover-color\n );\n\n &-link {\n @include button-variant-link(\n $button-danger-color\n );\n }\n\n &-outline {\n @include button-variant-outline(\n $button-danger-color\n );\n }\n\n &-gradient {\n @include button-variant-gradient(\n $button-danger-gradient-start-color,\n $button-danger-gradient-end-color\n );\n }\n }\n\n &--warning {\n @include button-variant(\n $button-warning-color,\n transparent,\n $button-warning-font-color\n );\n\n &-link {\n @include button-variant-link(\n $button-warning-color\n );\n }\n\n &-outline {\n @include button-variant-outline(\n $button-warning-color\n );\n }\n\n &-gradient {\n @include button-variant-gradient(\n $button-warning-gradient-start-color,\n $button-warning-gradient-end-color,\n $button-warning-font-color\n );\n }\n }\n &--info {\n @include button-variant(\n $button-info-color\n );\n\n &-link {\n @include button-variant-link(\n $button-info-color\n );\n }\n\n &-outline {\n @include button-variant-outline(\n $button-info-color\n );\n }\n\n &-gradient {\n @include button-variant-gradient(\n $button-info-gradient-start-color,\n $button-info-gradient-end-color,\n $button-info-font-color\n );\n }\n }\n\n &--default {\n @include button-variant(\n $button-default-color,\n $button-default-color,\n white,\n $button-default-hover-color\n );\n\n &-link {\n @include button-variant-link(\n $text-color\n );\n }\n\n &-outline {\n @include button-variant-outline(\n $button-default-color\n );\n }\n\n &-gradient {\n @include button-variant-gradient(\n $button-default-gradient-start-color,\n $button-default-gradient-end-color\n );\n }\n }\n\n &--sm {\n @include button-size(\n $padding-y-button-sm,\n $padding-x-button-sm,\n text-scale('xs'),\n line-height('xs'),\n $button-border-radius\n );\n }\n\n &--md {\n @include button-size(\n $padding-y-button-md,\n $padding-x-button-md,\n text-scale('sm'),\n line-height('sm'),\n $button-border-radius\n );\n }\n &--lg {\n @include button-size(\n $padding-y-button-lg,\n $padding-x-button-lg,\n text-scale('md'),\n line-height('md'),\n $button-border-radius\n );\n }\n\n &--icon-only {\n border-radius: $general-border-radius;\n padding: 0;\n line-height: map-get($spacing, 'md');\n width: 24px;\n\n &:hover {\n border-radius: $general-border-radius;\n }\n }\n\n &--fit {\n height: auto;\n width: auto;\n line-height: normal;\n }\n\n &--no-style {\n background: transparent;\n border: none;\n color: $text-color;\n\n &:hover {\n background: transparent;\n border: none;\n color: $text-color;\n }\n }\n}\n","@mixin button-size($padding-y, $padding-x, $font-size, $line-height, $border-radius) {\n padding: $padding-y $padding-x;\n font-size: $font-size;\n line-height: $line-height;\n border-radius: $border-radius;\n}\n\n@mixin button-variant(\n $background,\n $border: $background,\n $color: white,\n $hover-background: darken($background, 7.5%),\n $hover-border: darken($border, 10%),\n $active-background: darken($background, 10%),\n $active-border: darken($border, 12.5%),\n $hover-color: $color\n) {\n background-color: $background;\n color: $color;\n border: $general-border-width solid $border;\n\n &:hover {\n background-color: $hover-background;\n color: $hover-color;\n }\n}\n\n@mixin button-variant-link(\n $color: white\n) {\n background-color: transparent;\n border: $general-border-width solid transparent;\n color: $color;\n\n &:hover {\n background-color: transparent;\n color: $color;\n border-color: $color;\n text-decoration: underline;\n }\n}\n\n@mixin button-variant-outline(\n $border,\n $color: $border,\n $hover-color: white,\n $hover-background: $border,\n $hover-border: $border,\n $active-background: darken($border, 10%),\n $active-border: darken($border, 12.5%)\n) {\n border: $general-border-width solid $border;\n background-color: transparent;\n color: $color;\n\n &:hover {\n background-color: $border;\n color: $hover-color;\n }\n\n &.disabled {\n color: $border;\n\n &:hover {\n background-color: transparent;\n color: $border;\n }\n }\n}\n\n@mixin button-variant-gradient ($left-color, $right-color, $color: white, $hover-enabled: true) {\n border-image: linear-gradient(to right, $left-color, $right-color, $left-color) 0 round;\n background: transparent linear-gradient(to right, $left-color, $right-color, $left-color);\n background-origin: border-box;\n background-clip: border-box;\n background-size: 200% auto;\n background-position: 0 0;\n color: $color;\n\n @if $hover-enabled {\n &:hover,\n &:active,\n &:active:focus {\n border-image: linear-gradient(to right, $left-color, $right-color, $left-color) 0 round;\n background: transparent linear-gradient(to right, $left-color, $right-color, $left-color);\n background-position: 100% 0;\n background-size: 200% auto;\n background-clip: border-box;\n\n &.disabled {\n border-image: linear-gradient(to right, $left-color, $right-color, $left-color) 0 round;\n background: transparent linear-gradient(to right, $left-color, $right-color, $left-color);\n background-origin: border-box;\n background-clip: border-box;\n background-size: 200% auto;\n background-position: 0 0;\n color: $color;\n }\n }\n }\n}\n","$button-font-family: $font-family-bold !default;\n$button-border-radius: map-get($spacing, 'md') !default;\n\n$padding-y-button-sm: 3px !default;\n$padding-x-button-sm: map-get($spacing, 'base') !default;\n$padding-y-button-md: 8px !default;\n$padding-x-button-md: 23px !default;\n$padding-y-button-lg: 13px !default;\n$padding-x-button-lg: 23px !default;\n\n$line-height-button-sm: line-height('xs') !default;\n$line-height-button-md: line-height('md') !default;\n$line-height-button-lg: line-height('lg') !default;\n\n$button-default-color: theme-color('default', 'base') !default;\n$button-default-hover-color: theme-color('default', 'dark') !default;\n$button-default-gradient-start-color: theme-color('default', 'base') !default;\n$button-default-gradient-end-color: theme-color('default', 'dark') !default;\n\n$button-primary-color: theme-color('default', 'base-light') !default;\n$button-primary-hover-color: theme-color('default', 'dark') !default;\n$button-primary-text-color: white !default;\n$button-primary-gradient-start-color: theme-color('primary', 'base') !default;\n$button-primary-gradient-end-color: theme-color('primary', 'dark') !default;\n\n$button-success-color: theme-color('success', 'base') !default;\n$button-success-hover-color: theme-color('success', 'dark') !default;\n$button-success-gradient-start-color: theme-color('success', 'base') !default;\n$button-success-gradient-end-color: theme-color('success', 'dark') !default;\n\n$button-danger-color: theme-color('danger', 'base') !default;\n$button-danger-hover-color: theme-color('danger', 'dark') !default;\n$button-danger-gradient-start-color: theme-color('danger', 'base') !default;\n$button-danger-gradient-end-color: theme-color('danger', 'dark') !default;\n\n$button-warning-color: theme-color('warning', 'base') !default;\n$button-warning-font-color: white !default;\n$button-warning-gradient-start-color: theme-color('warning', 'base') !default;\n$button-warning-gradient-end-color: theme-color('warning', 'light') !default;\n\n$button-info-color: theme-color('info', 'base') !default;\n$button-info-font-color: $text-color;\n$button-info-gradient-start-color: theme-color('info', 'base') !default;\n$button-info-gradient-end-color: theme-color('info', 'light') !default;\n\n$button-icon-only-background-hover: theme-color('background', 'light') !default;\n",".tyk-button-group__wrapper {\n display: inline-block;\n position: relative;\n vertical-align: middle;\n\n label {\n font-family: $font-family-medium;\n }\n\n .tyk-button-group {\n display: flex;\n\n > .tyk-button-group:not(:first-child) {\n > .tyk-button {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n }\n }\n\n > .tyk-button-group:not(:last-child) {\n > .tyk-button {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n }\n }\n\n .tyk-button {\n border-radius: 0;\n\n + .tyk-button {\n margin-left: 0;\n }\n\n + .tyk-dropdown {\n margin-left: 0;\n }\n\n &:first-child {\n border-top-left-radius: map-get($spacing, 'md');\n border-bottom-left-radius: map-get($spacing, 'md');\n }\n\n &:last-child {\n border-top-right-radius: map-get($spacing, 'md');\n border-bottom-right-radius: map-get($spacing, 'md');\n }\n }\n }\n}\n",".tyk-chart__wrapper {\n position: relative;\n}\n\n.tyk-chart--no-data,\n.tyk-chart--loading-chart {\n filter: blur(map-get($spacing, 'sm'));\n -webkit-filter: blur(map-get($spacing, 'sm'));\n}\n",".collapse-exit,\n.collapse-exit-active,\n.collapse-exit-done {\n height: 0px;\n}\n\n.collapse-wrapper {\n overflow: hidden;\n transition: all .2s;\n}\n\n.collapse-horizontal-exit,\n.collapse-horizontal-exit-active,\n.collapse-horizontal-exit-done {\n width: 0px;\n}\n\n.collapse-horizontal-enter,\n.collapse-horizontal-enter-active,\n.collapse-horizontal-enter-done {\n width: 100%;\n}\n",".tyk-copy-to-clipboard {\n position: absolute;\n left: -1000px;\n top: -1000px;\n}","@import './variables';\n\n.tyk-fixed-wrapper {\n left: $fixed-wrapper-left;\n position: sticky;\n right: $fixed-wrapper-right;\n top: $fixed-wrapper-top;\n z-index: 8;\n\n &--scrolled {\n box-shadow: 2px 2px 5px rgba(0, 0, 0, 0.1);\n }\n}\n",".floating-container {\n position: fixed;\n top: -9999px;\n overflow: auto;\n z-index: $modal-z-index;\n}",".tyk-icon {\n + .tyk-icon {\n margin-left: map-get($spacing, 'sm');\n }\n}\n",".tyk-infinite-scroller {\n height: 100%;\n overflow: hidden;\n position: relative;\n\n .loading {\n background: linear-gradient(180deg, rgba(255,255,255,0), rgba(255,255,255,1));\n justify-content: center;\n bottom: 0;\n display: flex;\n left: 0;\n padding: map-get($spacing, 'base') 0;\n right: 0;\n top: auto;\n width: 100%;\n }\n\n &__wrapper {\n height: 100%;\n overflow-y: auto;\n }\n}\n","@import '../../../common/sass/variables';\n@import '../../../common/sass/mixins';\n\n.tyk-info-note {\n border-radius: 0;\n position: relative;\n\n p + p {\n margin-top: map-get($spacing, 'base');\n }\n\n &:after {\n content: '';\n border-style: solid;\n border-width: 0 map-get($spacing, 'md') map-get($spacing, 'md') 0;\n border-color: transparent theme-color(\"info\", \"base\") transparent transparent;\n height: 0;\n position: absolute;\n right: 0;\n top: 0;\n width: 0;\n }\n\n .tyk-message {\n border-radius: 0;\n padding-top: 40px;\n padding-bottom: 40px;\n }\n}\n","@import '../../../common/sass/variables';\n@import '../../../common/sass/mixins';\n\n.tyk-loading__wrapper {\n background: rgba(255, 255, 255, 0.6);\n bottom: 0;\n position: absolute;\n left: 0;\n right: 0;\n top: 0;\n z-index: 99;\n}\n\n.loader-wrapper {\n min-height: 100px;\n position: relative;\n}\n\n.loading {\n position: absolute;\n top: calc(50% - map-get($spacing, 'sm'));\n left: 50%;\n\n &.relative {\n left: auto;\n padding: 25px;\n position: relative;\n text-align: center;\n top: auto;\n width: 100%;\n }\n}\n\n.loading-bar {\n display: inline-block;\n width: 4px;\n height: map-get($spacing, 'md');\n border-radius: 4px;\n animation: loading 1s ease-in-out infinite;\n margin-left: 2px;\n}\n.loading-bar:nth-child(1) {\n animation-delay: 0;\n background-color: theme-color('success', 'base');\n opacity: 1;\n}\n.loading-bar:nth-child(2) {\n animation-delay: 0.09s;\n background-color: theme-color('success', 'base');\n opacity: 0.80;\n}\n.loading-bar:nth-child(3) {\n animation-delay: .18s;\n background-color: theme-color('success', 'base');\n opacity: 0.60;\n}\n.loading-bar:nth-child(4) {\n animation-delay: .27s;\n background-color: theme-color('success', 'base');\n opacity: 0.40;\n}\n\n@keyframes loading {\n 0% {\n transform: scale(1);\n }\n 20% {\n transform: scale(1, 2.2);\n }\n 40% {\n transform: scale(1);\n }\n}\n",".tyk-list {\n border: $general-border-width solid theme-color('default', 'light');\n border-radius: $general-border-radius;\n font-size: text-scale('sm');\n list-style-type: none;\n margin: 0;\n max-height: 191px;\n padding: 0;\n overflow: auto;\n\n &--with-inline-label {\n display: flex;\n\n > label {\n margin-right: map-get($spacing, 'md');\n }\n }\n\n li {\n border-bottom: 1px solid theme-color('default', 'light');\n padding: map-get($spacing, 'sm') map-get($spacing, 'md');\n font-family: $font-family-medium;\n\n &:last-child {\n border: none;\n }\n }\n\n &--default {\n border-color: theme-color('default', 'light');\n }\n\n &--primary {\n border-color: theme-color('primary', 'base');\n\n li {\n border-color: theme-color('primary', 'light');\n color: $text-color;\n }\n }\n\n &--primary-light {\n border-color: theme-color('primary', 'light');\n\n li {\n border-color: theme-color('primary', 'light');\n color: $text-color;\n }\n }\n\n &--success {\n border-color: theme-color('success', 'base');\n color: theme-color('success', 'base');\n\n li {\n border-color: theme-color('success', 'base');\n }\n }\n\n &--danger {\n border-color: theme-color('danger', 'base');\n color: $text-color;\n\n li {\n border-color: theme-color('danger', 'light');\n }\n }\n}\n\nul.tyk-list--inline {\n align-items: center;\n display: flex;\n\n li {\n padding: 0 map-get($spacing, 'sm');\n }\n\n &.tyk-list--with-separator {\n\n li:not(:first-child) {\n border-left: 1px solid theme-color('default', 'base');\n }\n }\n}\n","@import '../../../common/sass/variables';\n@import '../../../common/sass/mixins';\n@import './mixins';\n@import './variables';\n\n.tyk-message {\n display: flex;\n align-items: center;\n border-radius: $tyk-message-border-radius;\n margin-bottom: map-get($spacing, 'md');\n padding: $tyk-message-padding-top $tyk-message-padding-right $tyk-message-padding-bottom $tyk-message-padding-left;\n\n &__content {\n flex-grow: 1;\n margin-left: map-get($spacing, 'md');\n margin-right: map-get($spacing, 'md');\n }\n\n > .tyk-icon:first-child {\n width: 32px;\n height: 32px;\n flex-shrink: 0;\n border-radius: 50%;\n color: white;\n\n &:before {\n display: flex;\n width: 100%;\n height: 100%;\n align-items: center;\n justify-content: center;\n }\n }\n\n > .tyk-icon:last-child {\n cursor: pointer;\n }\n\n &--default {\n @include message-variant(\n $tyk-message-default-background,\n $tyk-message-default-border,\n $tyk-message-default-text-color\n );\n\n > .tyk-icon:first-child {\n transform: rotate(180deg);\n }\n }\n\n &--info {\n @include message-variant(\n $tyk-message-info-background,\n $tyk-message-info-border,\n $tyk-message-info-text-color\n );\n }\n\n &--success {\n @include message-variant(\n $tyk-message-success-background,\n $tyk-message-success-border,\n $tyk-message-success-text-color\n );\n }\n\n &--warning {\n @include message-variant(\n $tyk-message-warning-background,\n $tyk-message-warning-border,\n $tyk-message-warning-text-color\n );\n }\n\n &--danger {\n @include message-variant(\n $tyk-message-danger-background,\n $tyk-message-danger-border,\n $tyk-message-danger-text-color\n );\n }\n}\n","@mixin message-variant(\n $background,\n $border: transparent,\n $color: $text-color\n) {\n background-color: $background;\n border: $general-border-width solid $border;\n color: $color;\n\n & > .tyk-icon:first-child {\n background-color: $border;\n }\n}\n","@import '../../../common/sass/variables';\n@import '../../../common/sass/mixins';\n@import './variables';\n\n.tyk-modal {\n --theme-header-height: 15px;\n --theme-header-icon-size: 65px;\n align-items: center;\n bottom: 0;\n left: 0;\n pointer-events: none;\n position: fixed;\n right: 0;\n top: 0;\n z-index: -1;\n\n .tyk-panel {\n border: $general-border-width solid theme-color('background', 'dark');\n box-shadow: none;\n -webkit-box-shadow: none;\n }\n\n .tyk-modal__dialog {\n opacity: 0;\n transition: all .2s ease;\n }\n\n &.opened {\n display: flex;\n z-index: $modal-z-index;\n\n .tyk-modal__dialog {\n display: flex;\n max-height: 92vh;\n opacity: 1;\n pointer-events: all;\n }\n }\n\n &.appear-enter-done {\n .tyk-modal__dialog {\n opacity: 1;\n margin-top: 0;\n }\n }\n\n &__theme-header {\n position: absolute;\n top: -1px;\n left: 0;\n right: 0;\n height: var(--theme-header-height);\n border-top-left-radius: $general-border-radius;\n border-top-right-radius: $general-border-radius;\n\n .tyk-icon {\n position: absolute;\n left: calc(50% - var(--theme-header-icon-size) / 2);\n top: calc((var(--theme-header-icon-size) - var(--theme-header-height)) / -2);\n width: var(--theme-header-icon-size);\n height: var(--theme-header-icon-size);\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: text-scale('xxl');\n color: white;\n }\n }\n\n &--theme-success {\n .tyk-modal__theme-header {\n background-color: theme-color('success', 'base');\n\n .tyk-icon {\n background-color: theme-color('success', 'base');\n }\n }\n }\n\n &--theme-warning {\n .tyk-modal__theme-header {\n background-color: theme-color('warning', 'base');\n\n .tyk-icon {\n background-color: theme-color('warning', 'base');\n }\n }\n }\n\n &--theme-danger {\n .tyk-modal__theme-header {\n background-color: theme-color('danger', 'base');\n\n .tyk-icon {\n background-color: theme-color('danger', 'base');\n }\n }\n }\n}\n\n.tyk-modal__dialog {\n opacity: 0;\n margin: 0 auto;\n margin-top: -5%;\n pointer-events: all;\n transition: all .2s linear;\n width: 85%;\n\n @include mq('sm') {\n width: 600px;\n }\n\n &.tyk-modal--lg {\n @include mq('sm') {\n width: 800px;\n }\n }\n}\n\n.tyk-modal__content {\n background: white;\n border-radius: $general-border-radius;\n display: flex;\n flex-direction: column;\n position: relative;\n width: 100%;\n}\n\n.tyk-modal__body {\n flex: 1;\n overflow: auto;\n --padding-top: calc(#{$tyk-modal-body-padding} + (var(--theme-header-icon-size) - var(--theme-header-height)) / 2);\n padding: var(--padding-top) $tyk-modal-body-padding $tyk-modal-body-padding;\n\n &.no-padding {\n padding: 0;\n }\n}\n\n.tyk-modal__footer {\n align-items: center;\n display: flex;\n justify-content: flex-end;\n padding: $tyk-modal-footer-padding;\n\n >:not(:first-child) {\n margin-left: map-get($spacing, 'xs');\n }\n}\n\n.tyk-modal__backdrop {\n background-color: theme-color('default', 'dark');\n border: none;\n bottom: 0;\n display: none;\n left: 0;\n position: fixed;\n right: 0;\n top: 0;\n width: 100%;\n z-index: $modal-z-index - 1;\n\n &.opened {\n display: block;\n opacity: 0.5;\n transition: opacity .2s ease;\n }\n\n &.fade-enter-done {\n opacity: 0.5;\n }\n}\n\n/* Deprecated Modal.Header and Modal.Title */\n.tyk-modal__header {\n --padding-top: calc(#{$tyk-modal-header-padding} + (var(--theme-header-icon-size) - var(--theme-header-height)) / 2);\n padding: var(--padding-top) $tyk-modal-header-padding $tyk-modal-header-padding;\n align-items: center;\n border-bottom: 1px solid $tyk-modal-borders-color;\n display: flex;\n width: 100%;\n\n .tyk-modal--theme-none & {\n padding-top: $tyk-modal-header-padding;\n }\n\n button {\n margin-left: auto;\n padding: 0 5px;\n }\n\n + .tyk-modal__body {\n padding-top: $tyk-modal-body-padding;\n }\n}\n\n.tyk-modal__title {\n font-family: $font-family-medium;\n font-weight: 500;\n margin: 0;\n width: 100%;\n}\n/* End of deprecated styles */\n","@import './variables';\n\n.tyk-navigation {\n background-color: $navigation-background-color;\n height: 100%;\n overflow: auto;\n padding: $navigation-padding;\n width: 100%;\n\n .tyk-navigation-item {\n width: 100%;\n\n a {\n color: $navigation-item-color;\n display: flex;\n padding: $navigation-item-padding-y $navigation-item-padding-x;\n text-decoration: none;\n transition: all .2s ease;\n\n &:hover {\n background-color: $navigation-item-hover-background-color;\n color: $navigation-item-hover-color;\n }\n\n &.active {\n background-color: $navigation-item-active-background-color;\n color: $navigation-item-active-color;\n }\n }\n }\n}\n","@import './variables';\n\n.tyk-nav-bar {\n align-items: center;\n border: none;\n background-color: $nav-bar-background-color;\n font-family: $nav-bar-font-family;\n color: $nav-bar-text-color;\n margin: 0;\n padding: $nav-bar-padding;\n width: 100%;\n z-index: 8;\n transition: all .2s linear;\n\n &__pre {\n align-self: flex-end;\n color: $text-color;\n flex-basis: 100%;\n\n a {\n font-family: $font-family-bold;\n font-size: text-scale('xs');\n line-height: line-height('xs');\n color: $text-color;\n }\n }\n\n &.tyk-nav-bar__with-tabs .tyk-tabs--default > ul li button {\n padding-top: 0;\n }\n\n @media screen and (max-width: 1024px) {\n padding-left: map-get($spacing, 'md');\n\n .menu-opened & {\n transform: translate($nav-bar-animate-left);\n }\n }\n\n h1 {\n color: $nav-bar-text-color;\n }\n\n h4 {\n margin: 0;\n }\n\n .tyk-nav-bar__wrapper {\n align-items: center;\n padding-bottom: $nav-bar-bottom-padding;\n display: flex;\n flex-wrap: wrap;\n height: $nav-bar-height;\n\n &.tyk-nav-bar--align-top {\n align-items: flex-start;\n }\n\n @media screen and (max-width: 1024px) {\n padding-left: 0;\n }\n\n h1 {\n font-size: $nav-bar-header-font-size;\n font-family: $nav-bar-header-font-family;\n line-height: $nav-bar-header-line-height;\n margin: 0;\n padding-right: map-get($spacing, 'sm');\n }\n\n h4 {\n padding-right: map-get($spacing, 'sm');\n }\n\n .tyk-nav-bar__container {\n align-items: center;\n display: flex;\n flex-grow: 1;\n justify-content: space-between;\n }\n\n .tyk-nav-bar__left {\n flex-grow: 1;\n }\n\n .tyk-nav-bar__right {\n margin-left: auto;\n }\n }\n}\n","$nav-bar-background-color: white !default;\n$nav-bar-text-color: theme-color('default', 'base') !default;\n$nav-bar-padding-left: 265px !default;\n$nav-bar-animate-left: 245px !default;\n$nav-bar-top-padding: map-get($spacing, 'sm') !default;\n$nav-bar-bottom-padding: 0 !default;\n$nav-bar-left-padding: map-get($spacing, 'md') !default;\n$nav-bar-right-padding: map-get($spacing, 'md') !default;\n$nav-bar-padding: 0 $nav-bar-right-padding 0 $nav-bar-left-padding !default;\n$nav-bar-top: 51px !default;\n$nav-bar-header-font-size: text-scale('xxl') !default;\n$nav-bar-header-font-family: $headings-font-family-bold !default;\n$nav-bar-header-line-height: line-height('xxl') !default;\n$nav-bar-height: 92px !default;\n$nav-bar-font-family: $font-family-regular !default;\n","@import '../../../common/sass/variables';\n@import '../../../common/sass/mixins';\n@import './variables';\n@import './mixins';\n\n.tyk-panel {\n background: white;\n border-radius: $panel-border-radius;\n margin-bottom: 20px;\n font-family: $font-family-medium;\n position: relative;\n\n &.has-error,\n & &.has-error {\n border: $general-border-width solid theme-color('danger', 'base');\n }\n\n &__header {\n align-items: center;\n border-bottom: 1px solid $panel-default-border-bottom-color;\n display: flex;\n font-family: $font-family-regular;\n\n > .tyk-icon,\n > .tyk-tooltip__wrapper {\n margin-left: 5px;\n }\n }\n\n .tyk-panel {\n border: $general-border-width solid theme-color('default', 'light');\n box-shadow: none;\n -webkit-box-shadow: none;\n }\n\n &--blank {\n &.tyk-panel--collapsed {\n margin-bottom: 20px;\n\n .tyk-panel__header {\n margin-bottom: 0;\n }\n }\n\n .tyk-panel__header {\n margin-bottom: -20px;\n padding: $padding-y-blank-panel-header $padding-x-panel-header;\n @include panel-variant(\n white,\n theme-color('default', 'base')\n );\n }\n }\n\n &--primary {\n background-color: transparent;\n\n .tyk-panel__header {\n @include panel-variant($panel-primary-header-color, $panel-primary-header-text-color);\n }\n\n .tyk-panel__body {\n @include panel-variant($panel-primary-body-color, $panel-primary-body-text-color);\n }\n .tyk-panel__header {\n border: $panel-primary-border-color;\n }\n\n & .tyk-form-group {\n label {\n color: $panel-primary-label-color;\n }\n }\n\n .tyk-toggle {\n .tyk-toggle__label {\n color: $panel-primary-label-color;\n }\n }\n }\n\n &--success {\n .tyk-panel__header {\n @include panel-variant(\n theme-color('success', 'base')\n );\n }\n }\n &--danger {\n .tyk-panel__header {\n @include panel-variant(\n theme-color('danger', 'base')\n );\n }\n }\n &--warning {\n .tyk-panel__header {\n @include panel-variant(\n theme-color('warning', 'base')\n );\n }\n }\n}\n\n.tyk-panel__body {\n background-color: white;\n border-radius: $panel-border-radius;\n font-family: $font-family-regular;\n padding: $padding-panel-body;\n position: relative;\n transition: height .2s;\n\n & ~ .tyk-panel__header {\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0;\n }\n\n &.no-padding {\n padding: 0;\n }\n}\n\n.tyk-panel__header {\n border-radius: $panel-border-radius;\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0;\n font-family: $panel-header-font-family;\n overflow: hidden;\n padding: $padding-y-panel-header $padding-x-panel-header;\n position: relative;\n\n .tyk-panel--collapsed & {\n border-bottom-left-radius: $panel-border-radius;\n border-bottom-right-radius: $panel-border-radius;\n }\n\n & ~ .tyk-panel__body {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n }\n\n &h3 {\n margin: 0;\n }\n\n ng-transclude {\n vertical-align: middle;\n }\n\n &.collapsable {\n cursor: pointer;\n\n .tyk-panel__icon-collapse--right & {\n padding-right: $padding-x-right-panel-collapsable;\n }\n\n .tyk-panel__icon-collapse--left & {\n padding-left: $padding-x-left-panel-collapsable;\n }\n }\n\n .collapsable__arrow-right {\n font-size: text-scale('sm');\n position: absolute;\n padding: map-get($spacing, 'sm');\n right: map-get($spacing, 'sm');\n top: calc(50% - 21px);\n }\n .collapsable__arrow-left {\n font-size: text-scale('sm');\n position: absolute;\n padding: 8px 0px map-get($spacing, 'sm') 20px;\n left: 0px;\n top: calc(50% - 21px);\n }\n}\n\n.tyk-panel__footer {\n align-items: center;\n border-top: 1px solid theme-color('background', 'light');\n display: flex;\n justify-content: flex-end;\n padding: map-get($spacing, 'lg');\n\n >:not(:first-child) {\n margin-left: 5px;\n }\n}\n","@mixin panel-variant($background: white, $color: white) {\n background-color: $background;\n border: none;\n color: $color;\n font-size: text-scale('lg');\n line-height: line-height('lg');\n}\n","$padding-y-panel-header: map-get($spacing, 'sm') !default;\n$padding-x-panel-header: 25px !default;\n$padding-y-blank-panel-header: map-get($spacing, 'md') !default;\n$padding-panel-body: 25px !default;\n$padding-x-right-panel-collapsable: 48px !default;\n$padding-x-left-panel-collapsable: $padding-x-right-panel-collapsable !default;\n$panel-border-radius: 0 !default;\n$panel-default-border-bottom-color: theme-color('background', 'base') !default;\n$panel-header-font-size: text-scale('base') !default;\n$panel-header-font-family: $font-family-medium !default;\n$panel-primary-header-color: theme-color('primary', 'base') !default;\n$panel-primary-body-color: white !default;\n$panel-primary-header-text-color: white !default;\n$panel-primary-body-text-color: $text-color !default;\n$panel-primary-label-color: $text-color !default;\n$panel-primary-border-color: none !default;\n",".tyk-pill {\n align-items: center;\n border-radius: $general-border-radius;\n display: inline-flex;\n font-size: text-scale('xs');\n line-height: 19px;\n margin: $pill-margin;\n padding: 6px map-get($spacing, 'base');\n font-family: $font-family-medium;\n\n &--square {\n border-radius: 8px;\n }\n\n i {\n font-size: text-scale('xs');\n }\n\n + .tyk-pill {\n margin-right: map-get($spacing, 'sm');\n }\n\n button + span {\n margin-left: map-get($spacing, 'sm');\n }\n\n span + button {\n margin-left: map-get($spacing, 'sm');\n }\n\n &:first-child {\n margin-right: map-get($spacing, 'sm');\n }\n\n &:last-child {\n margin-right: 0;\n }\n\n &--default {\n background-color: $default-pill-background-color;\n color: $default-pill-color;\n\n i {\n color: $default-pill-color;\n }\n }\n\n &--default-outline {\n box-shadow: $default-outline-pill-box-shadow;\n color: $text-color;\n\n i {\n color: $text-color;\n }\n }\n\n &--primary {\n background-color: theme-color('primary', 'base');\n color: white;\n\n i {\n color: $default-pill-color;\n }\n }\n\n &--primary-outline {\n box-shadow: inset 0px 0px 0px 2px theme-color('primary', 'base');\n color: $text-color;\n\n i {\n color: $text-color;\n }\n }\n\n &--success {\n background-color: theme-color('success', 'base');\n color: white;\n\n i {\n color: white;\n }\n }\n\n &--success-outline {\n box-shadow: inset 0px 0px 0px 2px theme-color('success', 'base');\n color: $text-color;\n\n i {\n color: $text-color;\n }\n }\n\n &--danger {\n background-color: theme-color('danger', 'base');\n color: white;\n\n i {\n color: white;\n }\n }\n\n &--danger-outline {\n box-shadow: inset 0px 0px 0px 2px theme-color('danger', 'base');\n color: $text-color;\n\n i {\n color: $text-color;\n }\n }\n\n &--warning {\n background-color: theme-color('warning', 'base');\n color: white;\n\n i {\n color: white;\n }\n }\n\n &--warning-outline {\n box-shadow: inset 0px 0px 0px 2px theme-color('warning', 'base');\n color: $text-color;\n\n i {\n color: $text-color;\n }\n }\n\n &--info {\n background-color: theme-color('info', 'base');\n color: white;\n\n i {\n color: white;\n }\n }\n\n &--info-outline {\n box-shadow: inset 0px 0px 0px 2px theme-color('info', 'base');\n color: $text-color;\n\n i {\n color: $text-color;\n }\n }\n}\n","\n.tyk-ui-reveal-wrapper {\n display: flex;\n flex-direction: column;\n justify-content: flex-end;\n align-items: stretch;\n width: 100%;\n height: 100%;\n z-index: 1000;\n position: absolute;\n bottom: 0;\n left: 0;\n pointer-events: none;\n\n &__panel {\n max-height: calc(100% - 2rem);\n background-color: white;\n padding: 0;\n margin: 0;\n overflow-y: auto;\n display: flex;\n flex-direction: column;\n pointer-events: all;\n flex-shrink: 0;\n overflow: auto;\n }\n\n &__hole {\n flex-grow: 1;\n opacity: 0;\n width: 100%;\n background-color: green;\n -webkit-user-select: none;\n user-select: none;\n pointer-events: none;\n z-index: -1;\n }\n\n &__gutter {\n height: 2rem;\n width: 100%;\n cursor: row-resize;\n display: flex;\n background-color: theme-color('primary', 'base');\n z-index: 2;\n pointer-events: all;\n justify-content: space-between;\n align-items: stretch;\n position: relative;\n box-shadow: 0 5px 10px rgba(0, 0, 0, 0.3);\n\n &__headerleft, &__headerright\n {\n display: flex;\n align-items: center;\n flex: 1;\n }\n\n &__headerleft {\n justify-content: flex-start;\n }\n\n &__headerright {\n justify-content: flex-end;\n }\n\n &__logo {\n width: 1rem;\n height: 1rem;\n -webkit-user-select: none;\n user-select: none;\n pointer-events: none;\n padding: 0.2rem;\n z-index: 2;\n background-image: url('#{$component-images-path}/drag.svg');\n align-self: center;\n }\n }\n\n\n &__gutter__logo:hover {\n border: dashed;\n }\n\n}","@import './variables';\n\n.tyk-sidebar {\n background-color: $sidebar-background-color;\n height: $sidebar-height;\n flex: 0 0 $sidebar-width;\n padding: $sidebar-padding;\n position: -webkit-sticky;\n position: sticky;\n overflow: auto;\n top: $sidebar-top;\n}\n","$sidebar-background-color: white !default;\n$sidebar-top: 58px !default;\n$sidebar-height: calc(100vh - 58px) !default;\n$sidebar-width: 280px !default;\n$sidebar-padding: 0 !default;\n","@import '../../../common/sass/variables';\n@import '../../../common/sass/mixins';\n@import './variables';\n\n.tyk-table {\n border-collapse: collapse;\n border-spacing: 0;\n background-color: white;\n border-radius: $general-border-radius;\n width: 100%;\n\n &__wrapper {\n border: $general-border-width solid theme-color('default', 'light');\n border-radius: $general-border-radius;\n overflow: auto;\n\n &--no-border {\n border: none\n }\n\n &.no-innner-horizontal-borders {\n & .tyk-table > thead th,\n & .tyk-table > tbody td {\n border-right: none;\n }\n }\n }\n\n > thead th {\n border-right: 1px solid theme-color('default', 'light');\n color: $text-color;\n font-size: text-scale('sm');\n line-height: line-height('sm');\n font-family: $font-family-bold;\n text-transform: uppercase;\n\n &:last-child {\n border-right: none;\n }\n\n i {\n font-size: text-scale('xs');\n }\n\n .tyk-button {\n background: none;\n color: theme-color('default', 'base');\n padding: 0;\n }\n }\n\n > thead th {\n padding: $table-th-padding;\n }\n\n > tbody tr:hover {\n background: rgba(theme-color('background', 'light'), 0.4);\n }\n\n > tbody td {\n border-right: 1px solid theme-color('default', 'light');\n font-size: text-scale('sm');\n line-height: line-height('sm');\n font-family: $font-family-regular;\n padding: $table-td-padding-y $table-td-padding-x;\n\n &:last-child {\n border-right: none;\n }\n \n vertical-align: middle;\n\n &.fit {\n white-space: nowrap;\n width: 1%;\n }\n\n input:not([type='checkbox']):not([type='radio']) {\n margin-top: map-get($spacing, 'base');\n }\n\n a {\n color: $text-color;\n font-family: $font-family-medium;\n }\n\n label {\n margin: 0;\n }\n\n input[type='checkbox'] {\n margin: 0;\n }\n }\n\n tbody > tr {\n border-top: 1px solid theme-color('default', 'light');\n transition: all .4s linear;\n border-radius: $general-border-radius;\n \n &.clickable {\n cursor: pointer;\n }\n }\n\n > tbody tr td:first-child,\n > thead tr th:first-child {\n padding-left: $table-first-last-padding;\n\n &.with-icon {\n padding-left: map-get($spacing, 'base');\n }\n }\n\n > tbody tr td:last-child,\n > thead tr th:last-child {\n padding-right: $table-first-last-padding;\n\n &.with-icon {\n padding-right: map-get($spacing, 'base');\n }\n }\n\n .tyk-pagination {\n padding: $table-pagination-padding;\n\n li:first-child {\n margin-left: auto;\n }\n }\n\n .nowrap {\n white-space: nowrap;\n }\n\n .wrap {\n word-break: break-all;\n }\n}\n\n.tyk-table-search {\n padding: map-get($spacing, 'sm') 25px 0 25px;\n\n label {\n font-size: text-scale('sm');\n text-transform: uppercase;\n }\n}\n\n.header-sort {\n padding-left: 3px;\n padding-top: map-get($spacing, 'xs');\n vertical-align: middle;\n}\n\n.new-table-pagination {\n float: right;\n}\n\n.selectable > div {\n margin-left: map-get($spacing, 'md');\n}\n\n.scrollable {\n display: block;\n overflow: auto;\n}\n\n.fixed-header {\n background: white;\n position: sticky;\n top: 0;\n}\n\n.tyk-table.has-error,\n.tyk-table__wrapper.has-error {\n border: $general-border-width solid theme-color('danger', 'base') !important;\n}","@import '../../../common/sass/variables';\n@import '../../../common/sass/mixins';\n@import './variables';\n\n.tyk-tabs {\n &--default {\n > ul {\n display: flex;\n list-style-type: none;\n margin: 0;\n padding: 0;\n overflow: auto;\n\n li {\n display: flex;\n white-space: nowrap;\n margin-right: $tab-button-margin;\n\n &:last-child {\n margin-right: 0;\n }\n\n &.active button,\n button:hover {\n border-bottom-color: $tab-border-color;\n color: $tab-active-button-color;\n opacity: 1;\n }\n\n button {\n background: none;\n border: none;\n border-bottom: 4px solid transparent;\n color: $tab-button-color;\n cursor: pointer;\n font-size: text-scale('sm');\n font-family: $tabs-font-familly;\n padding: $tab-button-padding;\n margin-right: map-get($spacing, 'md');\n transition: all .2s linear;\n opacity: 0.7;\n\n &:focus {\n outline: none;\n }\n }\n }\n }\n }\n}\n\n.tyk-tab {\n &__content {\n padding: $tabs-default-content-padding;\n }\n}\n",".tyk-toast {\n &__container {\n bottom: 0;\n min-width: 300px;\n position: fixed;\n right: map-get($spacing, 'md');\n z-index: 11;\n }\n\n &__message {\n position: relative;\n }\n\n &-message__button {\n color: $text-color;\n height: map-get($spacing, 'md');\n line-height: 1;\n padding: map-get($spacing, 'xs');\n position: absolute;\n right: map-get($spacing, 'xs');\n top: map-get($spacing, 'xs');\n width: map-get($spacing, 'md');\n\n &:hover {\n background: rgba(255, 255, 255, 0.3);\n color: $text-color;\n }\n }\n}\n","@import '../../../../common/sass/variables';\n@import '../../../../common/sass/mixins';\n@import './variables';\n@import '../../../../components/FloatingContainer/sass/FloatingContainer';\n\n.tyk-combobox2 {\n $container-trigger-width: 40px;\n $values-default-height: 38px;\n outline: none;\n\n &.disabled {\n .tyk-form-control {\n border: $form-control-disabled-border !important;\n background-color: $form-control-disabled-background-color;\n color: $form-control-disabled-color;\n cursor: not-allowed;\n }\n\n .tyk-combobox2__current-values .tyk-pill--combobox button {\n cursor: not-allowed;\n }\n\n &:not(.is-expand-mode) .tyk-combobox2__values-container-trigger {\n cursor: not-allowed;\n }\n\n .tyk-combobox2__entry-field {\n background-color: transparent;\n cursor: not-allowed;\n }\n }\n\n .tyk-form-control {\n display: flex;\n flex-direction: row;\n position: relative;\n min-height: 40px;\n height: auto;\n padding: 0;\n\n &:focus-within {\n outline: none;\n border: $form-control-border-focus;\n }\n }\n\n &__current-values {\n display: flex;\n flex-grow: 1;\n flex-wrap: wrap;\n padding-top: 2px;\n padding-bottom: 2px;\n padding-left: map-get($spacing, 'sm');\n max-width: calc(100% - #{$container-trigger-width});\n\n &.expand-mode {\n max-height: 1000px;\n overflow: hidden;\n transition: max-height 1s ease;\n }\n\n &--collapsed.expand-mode {\n max-height: $values-default-height;\n transition: max-height .2s ease;\n }\n\n .tyk-pill--combobox {\n margin-top: 3px;\n margin-bottom: 3px;\n background-color: $tyk-combobox-pill-background;\n border-radius: map-get($spacing, 'sm');\n color: $tyk-combobox-pill-color;\n padding: map-get($spacing, 'xs') map-get($spacing, 'sm');\n max-width: 100%;\n max-height: 26px;\n\n button {\n background: none;\n border: none;\n cursor: pointer;\n width: 23px;\n outline: none;\n\n + span {\n margin-left: 0;\n }\n }\n\n span {\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n i {\n margin-right: map-get($spacing, 'xs');\n }\n }\n }\n\n &__entry-field {\n border: none;\n line-height: 30px;\n\n &:focus,\n &:active {\n border: none;\n outline: none;\n }\n\n &::placeholder {\n color: $form-control-placeholder-color;\n font-family: $form-control-placeholder-font-family;\n }\n }\n\n &__text-value {\n font-family: $font-family-medium;\n font-size: text-scale('sm');\n line-height: line-height('sm');\n padding: 9px 5px;\n width: 100%;\n overflow: hidden;\n text-overflow: ellipsis;\n line-height: 1;\n outline: none;\n\n &.overflow-single {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n &.is-placeholder {\n color: $form-control-placeholder-color;\n font-family: $form-control-placeholder-font-family;\n }\n }\n\n &__values-container-trigger {\n position: relative;\n flex-basis: $container-trigger-width;\n display: flex;\n justify-content: center;\n align-items: center;\n cursor: pointer;\n outline: none;\n transition: all .2s;\n\n &--expanded {\n transform: rotate(180deg);\n }\n\n .tyk-icon {\n height: 14px;\n }\n }\n}\n\n.tyk-form-group--rounded-corners .tyk-combobox2-disabled-overlay {\n border-radius: calc(#{$general-border-radius} - 2px);\n}\n\n.tyk-combobox2__combobox-dropdown {\n display: flex;\n flex-direction: column;\n border: $general-border-width solid $form-default-color;\n background-color: white;\n\n &.tyk-form-group--rounded-corners {\n border-radius: $general-border-radius;\n }\n\n .tyk-combobox2__combobox-search {\n background-color: white;\n position: sticky;\n top: 0;\n padding: map-get($spacing, 'sm') map-get($spacing, 'md');\n\n + .combobox-list {\n border-top: 1px solid $form-default-color;\n }\n }\n\n .tyk-combobox2__combobox-list {\n max-height: 255px;\n\n li {\n display: flex;\n cursor: pointer;\n padding: 9px map-get($spacing, 'md');\n transition: all .2s;\n font-family: $font-family-medium;\n\n &:hover,\n &.active {\n background-color: $tyk-combobox-list-item-hover-color;\n }\n\n &.disabled {\n color: $tyk-combobox-list-item-disabled-color;\n background-color: initial;\n }\n\n + li {\n border-top: 1px solid $form-default-color;\n }\n\n i {\n margin-right: map-get($spacing, 'xs');\n }\n\n .item-name {\n overflow: hidden;\n text-overflow: ellipsis;\n line-height: 16px;\n }\n }\n }\n}\n.tyk-combobox2__values-container-trigger {\n color: $text-color;\n}\n\n.tyk-combobox2__combobox-dropdown.tyk-form-group--rounded-corners {\n z-index: 1081;\n}","@import '../../../../common/sass/variables';\n@import '../../../../common/sass/mixins';\n@import './variables';\n\n.tyk-checkbox {\n label {\n $label-indent: 20px;\n display: flex;\n align-items: flex-start;\n padding-left: $label-indent;\n\n input {\n margin-left: -1 * $label-indent;\n margin-top: 5px;\n }\n }\n\n &--theme-light {\n label {\n color: $tyk-checkbox-theme-light-label-color;\n }\n\n &.tyk-checkbox--is-disabled {\n label {\n color: $tyk-checkbox-theme-light-label-disabled-color;\n }\n }\n }\n\n &--is-disabled {\n label, p {\n cursor: not-allowed;\n opacity: 0.5;\n }\n }\n}",".flatpickr-day.selected, .flatpickr-day.startRange, .flatpickr-day.endRange, .flatpickr-day.selected.inRange, .flatpickr-day.startRange.inRange, .flatpickr-day.endRange.inRange, .flatpickr-day.selected:focus, .flatpickr-day.startRange:focus, .flatpickr-day.endRange:focus, .flatpickr-day.selected:hover, .flatpickr-day.startRange:hover, .flatpickr-day.endRange:hover, .flatpickr-day.selected.prevMonthDay, .flatpickr-day.startRange.prevMonthDay, .flatpickr-day.endRange.prevMonthDay, .flatpickr-day.selected.nextMonthDay, .flatpickr-day.startRange.nextMonthDay, .flatpickr-day.endRange.nextMonthDay {\n background: theme-color('success', 'base') !important;\n border-color: theme-color('success', 'base') !important;\n}","@import '../../../../common/sass/variables';\n@import '../../../../common/sass/mixins';\n@import './variables';\n\n.tyk-dropdown {\n display: inline-block;\n\n + .tyk-button,\n + .tyk-dropdown,\n + .tyk-toggle {\n margin-left: map-get($spacing, 'sm')\n }\n\n &--block {\n left: map-get($spacing, 'md');\n right: map-get($spacing, 'md');\n }\n\n &--relative {\n left: auto;\n right: auto;\n }\n\n &--custom {\n padding: map-get($spacing, 'md') 25px;\n }\n\n label {\n display: block;\n }\n\n &__trigger {\n position: relative;\n }\n\n &.theme-list .tyk-button {\n background: white;\n border: $general-border-width solid theme-color('default', 'base');\n border-radius: $general-border-radius;\n color: $text-color;\n\n &:hover,\n &:active,\n &:active:focus,\n &:focus {\n background: white;\n border-color: theme-color('background', 'dark');\n color: $text-color;\n }\n }\n}\n\n.tyk-dropdown-menu {\n background: $tyk-dropdown-item-background;\n border: $general-border-width solid theme-color('default', 'light');\n border-radius: $general-border-radius;\n -webkit-filter: drop-shadow(1px 2px 1px rgba(0, 0, 0, 0.1));\n filter: drop-shadow(1px 2px 1px rgba(0, 0, 0, 0.1));\n list-style-type: none;\n margin: 0;\n margin-top: 3px;\n overflow: hidden;\n padding: 0;\n z-index: 1081;\n\n &.tyk-dropdown--scrollable {\n overflow: auto;\n }\n\n .tyk-panel {\n margin: 0;\n }\n\n &.opened {\n display: flex;\n flex-direction: column;\n position: absolute;\n }\n\n > li {\n background: $tyk-dropdown-item-background;\n border-bottom: 1px solid $tyk-dropdown-item-border-color;\n display: flex;\n position: relative;\n z-index: 7;\n\n &:last-child {\n border: none;\n }\n\n i {\n left: 7px;\n position: absolute;\n top: 9px;\n }\n }\n}\n\n.tyk-dropdown-menu > li > a {\n cursor: pointer;\n color: $tyk-dropdown-item-text-color;\n display: flex;\n font-size: 12px;\n padding: 7px 24px;\n text-transform: uppercase;\n text-decoration: none;\n width: 100%;\n\n &:hover {\n color: $tyk-dropdown-item-hover-text-color;\n }\n\n .badge {\n background: $text-color;\n color: white;\n font-size: map-get($spacing, 'sm');\n margin-top: -4px;\n margin-left: 6px;\n }\n\n &:hover {\n background-color: $tyk-dropdown-item-background-hover;\n text-decoration: none;\n }\n}\n\n.tyk-dropdown--relative.opened {\n position: relative;\n}\n","@import '../../../../common/sass/variables';\n@import '../../../../common/sass/mixins';\n\n.tyk-editable-list {\n &__submit-btn {\n white-space: nowrap;\n }\n}\n\n.tyk-editable-list__form {\n align-items: center;\n display: flex;\n\n .tyk-form-group {\n margin-bottom: 0;\n }\n\n &--sticked {\n margin-left: 0;\n\n button {\n border-top-left-radius: 0px;\n border-bottom-left-radius: 0px;\n border-top-right-radius: 3px;\n border-bottom-right-radius: 3px;\n padding-bottom: 11px;\n padding: map-get($spacing, 'sm') map-get($spacing, 'base') 11px map-get($spacing, 'base');\n }\n }\n\n span.inline {\n margin-top: 0;\n }\n\n > span {\n margin-left: map-get($spacing, 'base');\n\n &.inline-with-label {\n align-self: flex-end;\n }\n }\n}\n\n.tyk-editable-list__header {\n padding-top: map-get($spacing, 'base');\n border-bottom: 1px solid theme-color('background', 'dark');\n color: $text-color;\n font-size: 11px;\n padding-bottom: map-get($spacing, 'base');\n text-transform: uppercase;\n\n .tyk-row {\n margin: 0;\n }\n}\n\n.tyk-editable-list-items {\n overflow: hidden;\n list-style: none;\n padding: map-get($spacing, 'md') 0 0 0;\n\n .edit-mode-wrapper.table button {\n margin-top: 23px;\n }\n\n .tyk-row {\n margin: 0;\n }\n\n button[disabled] {\n cursor: not-allowed;\n }\n\n &.tyk-editable-list-items--inline {\n align-items: center;\n color: $text-color;\n display: flex;\n flex-wrap: wrap;\n }\n\n li {\n border-top: 1px solid theme-color('default', 'light');\n transition: all .2s linear;\n\n &.tyk-editable-list-item--inline {\n background-color: theme-color('default', 'light');\n border-radius: 25px;\n border: none;\n color: white;\n float: left;\n font-family: $font-family-medium;\n margin-bottom: map-get($spacing, 'sm');\n margin-right: map-get($spacing, 'base');\n padding: 0 map-get($spacing, 'base');\n white-space: nowrap;\n\n .tyk-editable-list-item__text {\n color: $text-color;\n padding: map-get($spacing, 'xs') 0;\n }\n\n .tyk-editable-list-action__button.on-edit {\n margin-top: 0;\n }\n }\n\n &:first-child {\n border-top: none;\n }\n\n .tyk-editable-list-item__text {\n display: flex;\n padding: map-get($spacing, 'sm') 0;\n\n > span {\n flex-grow: 1;\n }\n\n > div:first-child {\n flex-grow: 1;\n\n .error-message {\n margin: 0;\n }\n }\n }\n\n .tyk-editable-list-items {\n overflow: hidden;\n padding-bottom: map-get($spacing, 'sm');\n }\n\n .tyk-editable-list {\n border-top: map-get($spacing, 'xs') solid theme-color('background', 'dark');\n background: theme-color('background', 'light');\n padding: map-get($spacing, 'sm') map-get($spacing, 'base');\n }\n }\n\n .tyk-editable-list-item__text {\n display: block;\n word-wrap: break-word;\n word-break:break-all;\n }\n\n .tyk-editable-list-action__button {\n border: none;\n background: transparent;\n\n &.on-edit {\n margin-left: map-get($spacing, 'sm');\n }\n }\n\n .tyk-editable-list-item-controls {\n flex-grow: 0;\n text-align: right;\n }\n}\n\n.tyk-editable-list-item__controls {\n text-align: right;\n}\n\n.tyk-editable-list-items.table {\n background-color: white;\n border-radius: $general-border-radius;\n border: $general-border-width solid theme-color('default', 'light');\n padding: 0 !important;\n\n li {\n border-color: theme-color('default', 'light');\n\n &:hover {\n background: theme-color('background', 'light');\n }\n }\n\n .tyk-editable-list-item__text {\n background: transparent;\n }\n\n .tyk-editable-list-action__button {\n border-radius: 6px;\n cursor: pointer;\n margin-right: map-get($spacing, 'sm');\n }\n}\n\n.tyk-editable-list__header {\n background-color: white;\n border-top-left-radius: $general-border-radius;\n border-top-right-radius: $general-border-radius;\n border: $general-border-width solid theme-color('default', 'light');\n border-bottom: 1px solid theme-color('default', 'light') !important;\n color: $text-color !important;\n font-family: $font-family-bold;\n margin-top: map-get($spacing, 'sm');\n\n & + .tyk-editable-list-items.table {\n border-top: none;\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n }\n}\n","@use \"sass:math\";\n\n.editable-list {\n &__header {\n align-items: center;\n display: flex;\n margin-bottom: 10px;\n\n .tyk-button {\n margin-left: auto;\n }\n }\n\n &__wrapper.has-error &__list{\n border: $general-border-width solid theme-color('danger', 'base');\n }\n\n &__list {\n border: $general-border-width solid theme-color('default', 'light');\n border-radius: $general-border-radius;\n display: flex;\n flex-direction: column-reverse;\n }\n\n &__item {\n border-bottom: 1px solid theme-color('default', 'light');\n display: flex;\n flex-wrap: nowrap;\n width: 100%;\n\n &:first-child {\n border-bottom: none;\n }\n\n &-header {\n border-bottom: 1px solid theme-color('default', 'light');\n color: $text-color;\n font-size: text-scale('sm');\n line-height: line-height('sm');\n font-family: $font-family-bold;\n text-transform: uppercase;\n\n .editable-list__item-cell {\n padding: 10px;\n }\n }\n\n &-cell {\n border-left: 1px solid theme-color('default', 'light');\n overflow: hidden;\n padding: 0 10px;\n\n .tyk-form-control--readonly {\n overflow: hidden;\n text-overflow: ellipsis;\n word-break: break-all;\n }\n\n &:first-child {\n border-left: none;\n padding-left: 15px;\n }\n &:last-child {\n padding-right: 15px;\n }\n\n .tyk-form-group {\n margin: 10px 0;\n width: 100%;\n }\n }\n\n $start: 1;\n $end: 12;\n\n @for $i from $start through $end {\n &--size-#{$i} {\n display: flex;\n flex-grow: #{$i + 1};\n $my_width: #{math.div($i, 12) * 100%};\n width: $my_width;\n }\n }\n\n &--size-fit {\n width: fit-content;\n }\n\n &-action {\n align-items: flex-start;\n display: flex;\n justify-content: center;\n width: 100px;\n\n .tyk-button {\n margin-top: 20px;\n }\n\n &--read-only {\n color: theme-color(\"default\", \"light\");\n align-items: center;\n\n .tyk-button {\n margin-top: 0;\n }\n }\n\n }\n }\n}",".tyk-file-input__wrapper {\n position: relative;\n\n > input {\n padding: 6px map-get($spacing, 'md');\n }\n\n > button {\n background: none;\n border: none;\n cursor: pointer;\n position: absolute;\n right: map-get($spacing, 'base');\n top: 9px;\n }\n}\n",".tyk-multiselect {\n align-items: flex-start;\n border-radius: $general-border-radius;\n flex-wrap: wrap;\n display: flex;\n margin-bottom: map-get($spacing, 'md');\n width: 100%;\n\n /*FALLBACK FOR ANGULAR COMPONENTS*/\n .input-group .input-group-addon + .form-control {\n border-width: 1px !important;\n border-left: none !important;\n border-top-left-radius: 0 !important;\n border-top-right-radius: 0 !important;\n border-bottom-left-radius: 0 !important;\n border-bottom-right-radius: 0 !important;\n }\n\n .input-group .input-group-addon {\n background: transparent !important;\n border-width: 1px !important;\n border-right: 0 !important;\n border-top-left-radius: 0 !important;\n border-top-right-radius: 0 !important;\n border-bottom-left-radius: 0 !important;\n border-bottom-right-radius: 0 !important;\n }\n /*END FALLBACK FOR ANGULAR COMPONENTS*/\n\n &.has-error {\n border: $general-border-width solid theme-color('danger', 'base');\n }\n\n &__header {\n background-color: theme-color('default', 'base');\n border-top-left-radius: $general-border-radius;\n border-top-right-radius: $general-border-radius;\n color: white;\n display: flex;\n width: 100%;\n\n > div {\n padding: map-get($spacing, 'sm') map-get($spacing, 'base');\n width: 50%;\n }\n }\n\n &__panel-wrapper {\n border: $form-control-border;\n border-top: none;\n border-bottom-left-radius: $general-border-radius;\n border-bottom-right-radius: $general-border-radius;\n display: flex;\n flex: 1;\n height: 265px;\n width: 100%;\n }\n\n &__panel {\n display: flex;\n flex-direction: column;\n margin: 0 0 0 -1px;\n position: relative;\n width: calc(50% + 1px);\n\n &:last-child {\n border-left: $form-control-border;\n .tyk-form-group {\n margin-left: -1px;\n width: calc(100% + 2px);\n }\n }\n\n .tyk-message {\n margin: map-get($spacing, 'md') map-get($spacing, 'md') 0 map-get($spacing, 'md');\n }\n }\n\n &__list {\n list-style-type: none;\n margin: 0;\n padding: 0;\n\n &--scroll {\n height: 100%;\n overflow-y: auto;\n }\n\n > li {\n border-bottom: $form-control-border;\n display: flex;\n flex-direction: column;\n padding: map-get($spacing, 'sm') map-get($spacing, 'base');\n\n > div {\n align-items: start;\n display: flex;\n width: 100%;\n }\n\n .loading {\n justify-content: center;\n }\n\n &:last-child {\n border-bottom: none;\n }\n }\n }\n\n &-item__name {\n display: block;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .tyk-form-group {\n margin: 0;\n }\n\n .tyk-multiselect-item__controls {\n display: flex;\n margin-left: auto;\n flex-wrap: nowrap;\n\n .tyk-button {\n color: $text-color;\n margin-left: map-get($spacing, 'xs');\n\n &:last-child {\n margin-left: 0;\n }\n }\n }\n}\n","@import '../../../../common/sass/variables';\n@import '../../../../common/sass/mixins';\n@import './variables';\n\n.tyk-pagination {\n display: flex;\n list-style-type: none;\n margin: map-get($spacing, 'sm') 0;\n padding: 0;\n\n li {\n align-items: center;\n display: flex;\n }\n\n li:first-child button {\n border-top-left-radius: $pagination-border-radius;\n border-bottom-left-radius: $pagination-border-radius;\n }\n\n li:last-child button {\n border-top-right-radius: $pagination-border-radius;\n border-bottom-right-radius: $pagination-border-radius;\n }\n\n span {\n margin: 0 map-get($spacing, 'sm');\n }\n\n button {\n background: white;\n border: none;\n font-size: text-scale('sm');\n font-family: $font-family-bold;\n cursor: pointer;\n color: theme-color('default', 'base');\n margin-left: -1px;\n padding: $pagination-button-padding;\n\n &:hover {\n background-color: theme-color('success', 'light');\n }\n }\n\n .active button {\n background-color: theme-color('success', 'base');\n color: white;\n }\n}\n","$pagination-border-radius: $general-border-radius !default;\n$pagination-button-padding: map-get($spacing, 'sm') map-get($spacing, 'base') !default;\n","@import '../../../../common/sass/variables';\n@import '../../../../common/sass/mixins';\n@import './variables';\n.tyk-radio{\n label {\n align-items: center;\n display: flex;\n }\n\n &--is-disabled {\n label, p {\n cursor: not-allowed;\n opacity: 0.5;\n }\n }\n\n &__description-text {\n padding: $radio-description-text-padding;\n }\n}",".tyk-select {\n background: transparent url('#{$component-images-path}/arrow_down.svg') no-repeat calc(100% - 15px) center;\n background-size: map-get($spacing, 'base') map-get($spacing, 'base');\n}",".tyk-selectable-list {\n margin-bottom: map-get($spacing, 'md');\n width: 100%;\n\n li:not(.tyk-selectable-list__no-items-message) {\n font-family: $font-family-medium;\n padding: 0;\n\n .tyk-message {\n margin-bottom: 0;\n }\n\n label {\n font-family: $font-family-medium;\n margin: 0;\n }\n\n > label {\n align-items: center;\n cursor: pointer;\n display: flex;\n padding: map-get($spacing, 'sm') map-get($spacing, 'md');\n\n input[type=\"checkbox\"] {\n margin-left: auto;\n }\n }\n }\n\n &__item--with-icon {\n input[type=\"checkbox\"] {\n visibility: hidden;\n }\n }\n}\n","textarea.tyk-form-control {\n height: auto;\n}\n","@import './variables';\n\n.tyk-toggle {\n display: inline-flex;\n flex-wrap: wrap;\n font-family: $toggle-font-family;\n font-size: text-scale('sm');\n line-height: line-height('sm');\n white-space: nowrap;\n\n &.block {\n margin-bottom: map-get($spacing, 'md');\n width: 100%;\n\n + .tyk-toggle {\n margin-left: 0;\n }\n }\n\n &.inline-label {\n align-items: center;\n flex-wrap: nowrap;\n }\n\n &__list--has-error {\n border: $error-border;\n }\n\n & &__label {\n display: block;\n font-family: $toggle-label-font-family;\n font-size: $toggle-label-font-size;\n padding: $toggle-padding;\n width: 100%;\n color: $toggle-label-color;\n }\n\n &.inline-label &__label {\n margin-right: map-get($spacing, 'sm');\n width: auto;\n }\n\n + .tyk-button,\n + .tyk-dropdown,\n + .tyk-toggle {\n margin-left: map-get($spacing, 'sm')\n }\n\n &--disabled-true {\n cursor: not-allowed;\n opacity: 0.7;\n }\n\n &--column {\n .tyk-toggle__list--separated {\n display: flex;\n flex-direction: column;\n margin-right: map-get($spacing, 'md');\n\n .tyk-toggle__item {\n background-color: $toggle-list-background-color;\n margin-right: auto;\n }\n }\n }\n\n &__list {\n background: $toggle-list-background-color;\n border-radius: 25px;\n display: flex;\n list-style-type: none;\n margin: 0;\n padding: 0;\n position: relative;\n\n &--separated {\n background: transparent;\n flex-wrap: wrap;\n }\n }\n\n &--on-dark &__list {\n background: $toggle-list-background-color-on-dark;\n }\n\n &--default &__item--active span {\n color: white;\n }\n\n &--default &__list--single &__item--active,\n &--default &__list--separated &__item--active {\n span {\n color: white;\n }\n\n @include button-variant(\n $button-default-color,\n transparent,\n white,\n $button-default-color,\n transparent,\n $button-default-color\n );\n }\n\n &--primary &__item--active span {\n color: white;\n }\n\n &--primary &__list--single &__item--active,\n &--primary &__list--separated &__item--active {\n span {\n color: white;\n }\n @include button-variant(\n theme-color('primary', 'base'),\n transparent,\n white,\n theme-color('primary', 'base'),\n transparent,\n theme-color('primary', 'base')\n );\n }\n\n &--success &__item--active span {\n color: white;\n }\n\n &--success &__list--single &__item--active,\n &--success &__list--separated &__item--active {\n span {\n color: white;\n }\n @include button-variant(\n theme-color('success', 'dark'),\n transparent,\n white,\n theme-color('success', 'dark'),\n transparent,\n theme-color('success', 'dark')\n );\n }\n\n &--danger &__item--active span {\n color: white;\n }\n\n &--danger &__list--single &__item--active,\n &--danger &__list--separated &__item--active {\n @include button-variant(\n theme-color('danger', 'base'),\n transparent,\n white,\n theme-color('danger', 'base'),\n transparent,\n theme-color('danger', 'base')\n );\n }\n\n &--warning &__item--active span {\n color: $text-color;\n }\n\n &--warning &__list--single &__item--active,\n &--warning &__list--separated &__item--active {\n @include button-variant(\n theme-color('warning', 'base'),\n transparent,\n $text-color,\n theme-color('warning', 'base'),\n transparent,\n theme-color('warning', 'base')\n );\n }\n\n\n &--primary-gradient &__item--active span {\n color: white;\n }\n &--primary-gradient &__list--single &__item--active,\n &--primary-gradient &__list--separated &__item--active {\n span {\n color: white;\n }\n @include button-variant-gradient(\n theme-color('primary', 'base'),\n theme-color('primary', 'dark'),\n white,\n false\n );\n }\n\n &--success-gradient &__item--active span {\n color: white;\n }\n &--success-gradient &__list--single &__item--active,\n &--success-gradient &__list--separated &__item--active {\n span {\n color: white;\n }\n @include button-variant-gradient(\n theme-color('success', 'base'),\n theme-color('success', 'dark'),\n white,\n false\n );\n }\n\n\n &--danger-gradient &__item--active span {\n color: white;\n }\n &--danger-gradient &__list--single &__item--active,\n &--danger-gradient &__list--separated &__item--active {\n span {\n color: white;\n }\n @include button-variant-gradient(\n theme-color('danger', 'base'),\n theme-color('danger', 'dark'),\n white,\n false\n );\n }\n\n\n &--warning-gradient &__item--active span {\n color: white;\n }\n &--warning-gradient &__list--single &__item--active,\n &--warning-gradient &__list--separated &__item--active {\n span {\n color: white;\n }\n @include button-variant-gradient(\n theme-color('warning', 'light'),\n theme-color('warning', 'base'),\n $text-color,\n false\n );\n }\n\n &__item {\n color: $toggle-list-text-color;\n text-transform: uppercase;\n z-index: 2;\n border: 2px solid transparent;\n\n &:first-child {\n border-top-left-radius: 25px;\n border-bottom-left-radius: 25px;\n }\n &:last-child {\n border-top-right-radius: 25px;\n border-bottom-right-radius: 25px;\n }\n\n .tyk-toggle__list--separated & {\n background: tyk-toggle__list--separated;\n border-radius: 25px;\n margin-bottom: map-get($spacing, 'xs');\n margin-top: map-get($spacing, 'xs');\n margin-right: map-get($spacing, 'sm');\n\n &:last-child {\n margin-right: 0;\n }\n }\n\n input {\n display: none;\n }\n\n label {\n cursor: pointer;\n font-family: $toggle-font-family;\n position: relative;\n margin: 0;\n transition: all .2s ease;\n\n .tyk-toggle__list--single & {\n padding-left: 45px;\n }\n }\n\n .tyk-toggle__list--single &--active {\n label {\n padding-left: 25px;\n padding-right: 45px;\n\n .tyk-toggle__item-notch {\n left: calc(100% - 35px);\n }\n }\n }\n }\n\n &--on-dark &__item:not(.tyk-toggle__item--active) {\n color: $toggle-list-text-color-on-dark;\n }\n\n &--on-dark &__item-notch--single {\n background: theme-color('background', 'light');\n }\n\n &--sm label {\n @include button-size(\n calc(#{$padding-y-button-sm} + 2px),\n calc(#{$padding-x-button-sm} + 2px),\n text-scale('xs'),\n line-height('xs'),\n $button-border-radius\n );\n }\n\n &--sm &__list--single label {\n padding-left: 35px;\n }\n\n &--sm .tyk-toggle__list--single .tyk-toggle__item--active label {\n padding-left: 17px;\n padding-right: 35px;\n\n .tyk-toggle__item-notch {\n left: calc(100% - 27px);\n }\n }\n\n &--md label {\n @include button-size(\n calc(#{$padding-y-button-md} + 2px),\n calc(#{$padding-x-button-md} + 2px),\n text-scale('sm'),\n $line-height-button-sm,\n $button-border-radius\n );\n }\n\n &--lg label {\n @include button-size(\n calc(#{$padding-y-button-lg} + 2px),\n calc(#{$padding-x-button-lg} + 2px),\n text-scale('sm'),\n $line-height-button-sm,\n $button-border-radius\n );\n }\n\n &--lg &__list--single label {\n padding-left: 45px;\n }\n\n &--lg .tyk-toggle__list--single .tyk-toggle__item--active label {\n padding-left: 25px;\n padding-right: 45px;\n\n .tyk-toggle__item-notch {\n left: calc(100% - 43px);\n }\n }\n\n &__item-notch {\n border-radius: 25px;\n bottom: 2px;\n position: absolute;\n transition: all .2s ease;\n top: 2px;\n\n &--single {\n background: white;\n left: 2px;\n width: 32px;\n }\n }\n\n &--sm &__item-notch--single {\n width: 24px;\n }\n\n &--lg &__item-notch--single {\n width: 40px;\n }\n\n &__notch {\n border-radius: 25px;\n left: 0;\n position: absolute;\n bottom: $toggle-bottom;\n top: $toggle-top;\n transition: all .2s ease;\n width: 100px;\n z-index: 1;\n }\n\n &--default &__notch {\n @include button-variant(\n $button-default-color,\n transparent,\n white,\n $button-default-color,\n transparent,\n $button-default-color\n );\n }\n\n &--primary &__notch {\n @include button-variant(\n theme-color('primary', 'base'),\n transparent,\n white,\n theme-color('primary', 'base'),\n transparent,\n theme-color('primary', 'base')\n );\n }\n\n &--success &__notch {\n @include button-variant(\n theme-color('success', 'base'),\n transparent,\n white,\n theme-color('success', 'base'),\n transparent,\n theme-color('success', 'base')\n );\n }\n\n &--danger &__notch {\n @include button-variant(\n theme-color('danger', 'base'),\n transparent,\n white,\n theme-color('danger', 'base'),\n transparent,\n theme-color('danger', 'base')\n );\n }\n\n &--warning &__notch {\n @include button-variant(\n theme-color('warning', 'base'),\n transparent,\n $text-color,\n theme-color('warning', 'base'),\n transparent,\n theme-color('warning', 'base')\n );\n }\n\n &--primary-gradient &__notch {\n @include button-variant-gradient(\n theme-color('primary', 'base'),\n theme-color('primary', 'dark'),\n white,\n false\n );\n }\n\n &--success-gradient &__notch {\n @include button-variant-gradient(\n theme-color('success', 'base'),\n theme-color('success', 'dark'),\n white,\n false\n );\n }\n\n &--danger-gradient &__notch {\n @include button-variant-gradient(\n theme-color('danger', 'base'),\n theme-color('danger', 'dark'),\n white,\n false\n );\n }\n\n &--warning-gradient &__notch {\n @include button-variant-gradient(\n theme-color('warning', 'light'),\n theme-color('warning', 'base'),\n $text-color,\n false\n );\n }\n}\n\n.empty-toggle {\n padding: 1px;\n}","@import '../../../../common/sass/variables';\n\n.string-builder{\n position: relative;\n display: block;\n}\n\n.string-builder__input {\n word-break: break-all;\n resize: none;\n overflow: hidden;\n background:transparent;\n position: absolute;\n border: none;\n font: inherit;\n display: block;\n z-index: 1;\n width: 100%;\n padding: 0px;\n width: calc(100% - 35px);\n &:focus,\n &:active {\n border: none;\n outline: none;\n }\n}\n.string-builder__styled {\n font: inherit;\n position: absolute;\n pointer-events: none;\n width: calc(100% - 35px);\n color: transparent;\n z-index: 2;\n border: none;\n word-wrap: break-word;\n word-break: break-all;\n \n}\n\n.string-builder__disabled{\n background-color: $form-control-disabled-background-color !important;\n color: $form-control-disabled-color;\n cursor: not-allowed;\n}\n\n\n.url-builder__options_name {\n font-weight: 10px;\n}\n\n.url-builder__options_description{\n color: gray;\n}\n\n.string-builder-dropdown {\n display: flex;\n flex-direction: column;\n border: $general-border-width solid $form-default-color;\n background-color: #ffffff;\n\n &.tyk-form-group--rounded-corners {\n border-radius: $general-border-radius;\n }\n\n .string-builder-search {\n background-color: #ffffff;\n position: sticky;\n top: 0;\n padding: map-get($spacing, 'sm') map-get($spacing, 'md');\n\n + .string-builder-list {\n border-top: 1px solid $form-default-color;\n }\n }\n\n .string-builder-list {\n max-height: 255px;\n\n li {\n cursor: pointer;\n padding: 9px map-get($spacing, 'md');\n transition: all .2s;\n font-family: $font-family-medium;\n\n &:hover,\n &.active {\n background-color: $form-default-color;\n }\n\n + li {\n border-top: 1px solid $form-default-color;\n }\n\n i {\n margin-right: map-get($spacing, 'xs');\n }\n\n .item-name {\n overflow: hidden;\n text-overflow: ellipsis;\n line-height: 16px;\n }\n }\n }\n}\n\n.invalid_token {\n box-shadow: 0px 0px 0px 1px theme-color('danger', 'dark') inset;\n border-radius: 5px;\n background: theme-color('danger', 'light');\n color: theme-color('danger', 'dark');\n padding: 4px;\n pointer-events: all;\n .invalid_token--icon {\n margin-left: 2px;\n color: theme-color('danger', 'dark');\n }\n}\n\n.string_builder_trigger {\n background-color: #ffffff;\n border-radius: 5px;\n padding: 1px 6px;\n margin: 0px 4px;\n}\n\n.string-builder-footer {\n > .tyk-form-control__error-message {\n padding: 0px !important;\n }\n > .tyk-form-control__help-block{\n padding: 0px !important;\n }\n}\n\n.string-builder-search {\n padding-right: 10px;\n}\n\n.default-option-name {\n color: green;\n}\n\n\n// NOTE :: FOR DEMO ONLY\n.data_source_argument {\n color: pink;\n}\n.data_source_object {\n color: blueviolet;\n}\n","\n* {\n box-sizing: border-box;\n}\n\nbody {\n background-color: theme-color('background', 'base');\n color: $text-color;\n font-size: text-scale('sm');\n line-height: line-height('sm');\n font-family: $font-family-regular;\n}\n\n.tyk-main-wrapper {\n display: flex;\n flex-wrap: nowrap;\n}\n\n.tyk-main-content-wrapper {\n flex: 1;\n}\n\n.well {\n background: transparent;\n border: $general-border-width solid theme-color('default', 'light');\n border-radius: $general-border-radius;\n box-shadow: none;\n\n &.has-error {\n border-color: theme-color('danger', 'base');\n }\n}\n",".title-medium {\n font-family: $font-family-medium;\n color: $label-color;\n font-size: $title-medium-font-size;\n}",".right-align {\n text-align: right !important;\n}\n\n.left-align {\n text-align: left !important;\n}\n\n.center-align {\n text-align: center !important;\n}\n\n.left {\n float: left !important;\n}\n\n.right {\n float: right !important;\n}\n\n.hide {\n display: none !important;\n}\n\n.no-margin {\n margin: 0 !important;\n}\n\n.no-margin-bottom {\n margin-bottom: 0 !important;\n}\n\n.no-margin-top {\n margin-top: 0 !important;\n}\n\n.no-margin-right {\n margin-right: 0 !important;\n}\n\n.no-margin-left {\n margin-right: 0 !important;\n}\n\n.disabled-section {\n color: theme-color('default', 'light');\n}\n\n.top-buffer-large {\n margin-top: $top-buffer-large !important; \n}\n\n.top-buffer-small {\n margin-top: $top-buffer-small !important; \n}\n\n.top-buffer-medium {\n margin-top: $top-buffer-medium !important; \n}\n\n.bottom-buffer-large {\n margin-bottom: $bottom-buffer-large !important; \n}\n\n.bottom-buffer-small {\n margin-bottom: $bottom-buffer-small !important; \n}\n\n.bottom-buffer-medium {\n margin-bottom: $bottom-buffer-medium !important; \n}\n\n.right-buffer-large {\n margin-right: $right-buffer-large !important; \n}\n\n.right-buffer-small {\n margin-right: $right-buffer-small !important; \n}\n\n.right-buffer-medium {\n margin-right: $right-buffer-medium !important; \n}\n\n.left-buffer-large {\n margin-left: $left-buffer-large !important; \n}\n\n.left-buffer-small {\n margin-left: $left-buffer-small !important; \n}\n\n.left-buffer-medium {\n margin-left: $left-buffer-medium !important; \n}\n\n.word-wrap {\n word-wrap: break-word;\n word-break: break-all;\n}\n\n.clear-left {\n clear: left;\n}\n\n.flex-container {\n display: flex;\n}\n\n.vertical-center-align {\n align-items: center;\n}\n\n\n.right-align-controls {\n align-items: center;\n display: flex;\n margin-left: auto;\n}\n\n.inline-label {\n margin-right: 15px;\n}\n\n.nowrap { \n white-space: nowrap;\n}\n"],"names":[],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"tyk-ui.css","mappings":"AAAA,2ZCAA,QACE,UACA,SACA,eACA,aACA,wBACA,+EAKF,aACE,MAEF,aACE,OAEF,eACE,cAEF,WACE,oCAGA,UACE,aACA,kBAGF,UACE,aACA,OAEJ,wBACE,iBACA,YChCF,gBC8HiB,cD5Hf,6BAGF,cAEE,UAGF,YACE,sBACA,gBACA,cACA,mBACA,eACA,kBACA,wBACA,qBAEA,QACE,8BAGF,QACE,WACA,2BAGF,0BACE,UAIJ,2BACE,sBACA,cACA,YACA,6BACA,iBCsFY,wBDpFZ,qBAEA,cACE,+BAGF,QACE,2BAGF,6BACE,gCAGF,mBACE,6BAGF,qBACE,gCAGF,iBACE,kCAGF,mBACE,iCAGF,kBACE,uCAQF,eE9BE,0BACE,0BACA,uBAGF,cACE,gBANF,qCACE,qCACA,uBAGF,yBACE,gBANF,sCACE,sCACA,uBAGF,0BACE,gBANF,2BACE,2BACA,uBAGF,eACE,gBANF,sCACE,sCACA,uBAGF,0BACE,gBANF,sCACE,sCACA,uBAGF,0BACE,gBANF,2BACE,2BACA,uBAGF,eACE,gBANF,sCACE,sCACA,uBAGF,0BACE,gBANF,sCACE,sCACA,uBAGF,0BACE,gBANF,2BACE,2BACA,uBAGF,eACE,iBANF,sCACE,sCACA,wBAGF,0BACE,iBANF,sCACE,sCACA,wBAGF,0BACE,iBANF,4BACE,4BACA,wBAGF,gBACE,+DFwBJ,eE9BE,0BACE,0BACA,uBAGF,cACE,gBANF,qCACE,qCACA,uBAGF,yBACE,gBANF,sCACE,sCACA,uBAGF,0BACE,gBANF,2BACE,2BACA,uBAGF,eACE,gBANF,sCACE,sCACA,uBAGF,0BACE,gBANF,sCACE,sCACA,uBAGF,0BACE,gBANF,2BACE,2BACA,uBAGF,eACE,gBANF,sCACE,sCACA,uBAGF,0BACE,gBANF,sCACE,sCACA,uBAGF,0BACE,gBANF,2BACE,2BACA,uBAGF,eACE,iBANF,sCACE,sCACA,wBAGF,0BACE,iBANF,sCACE,sCACA,wBAGF,0BACE,iBANF,4BACE,4BACA,wBAGF,gBACE,6DFwBJ,eE9BE,0BACE,0BACA,uBAGF,cACE,gBANF,qCACE,qCACA,uBAGF,yBACE,gBANF,sCACE,sCACA,uBAGF,0BACE,gBANF,2BACE,2BACA,uBAGF,eACE,gBANF,sCACE,sCACA,uBAGF,0BACE,gBANF,sCACE,sCACA,uBAGF,0BACE,gBANF,2BACE,2BACA,uBAGF,eACE,gBANF,sCACE,sCACA,uBAGF,0BACE,gBANF,sCACE,sCACA,uBAGF,0BACE,gBANF,2BACE,2BACA,uBAGF,eACE,iBANF,sCACE,sCACA,wBAGF,0BACE,iBANF,sCACE,sCACA,wBAGF,0BACE,iBANF,4BACE,4BACA,wBAGF,gBACE,uCFwBJ,eE9BE,0BACE,0BACA,uBAGF,cACE,gBANF,qCACE,qCACA,uBAGF,yBACE,gBANF,sCACE,sCACA,uBAGF,0BACE,gBANF,2BACE,2BACA,uBAGF,eACE,gBANF,sCACE,sCACA,uBAGF,0BACE,gBANF,sCACE,sCACA,uBAGF,0BACE,gBANF,2BACE,2BACA,uBAGF,eACE,gBANF,sCACE,sCACA,uBAGF,0BACE,gBANF,sCACE,sCACA,uBAGF,0BACE,gBANF,2BACE,2BACA,uBAGF,eACE,iBANF,sCACE,sCACA,wBAGF,0BACE,iBANF,sCACE,sCACA,wBAGF,0BACE,iBANF,4BACE,4BACA,wBAGF,gBACE,aA7BL,2BACC,mHACA,mBAEA,kBACA,YALD,+BACC,mHACA,mBAEA,kBACA,YALD,8BACC,mHACA,mBAEA,kBACA,YALD,4BACC,mHACA,mBAEA,kBACA,YALD,8BACC,mHACA,mBAEA,kBACA,YALD,+BACC,qHACA,mBAEA,kBACA,YALD,mBACC,qHACA,mBAEA,kBACA;;;ECnCF,CAIA,wBAKE,kCACA,mCACA,qBACA,kBACA,oBACA,oBACA,cAEF,OACE,oBACA,kBACA,yBAEF,OACE,gBAEF,OACE,iBAEF,OACE,cAEF,OACE,cAEF,OACE,cAEF,OACE,cAEF,OACE,cAEF,OACE,cAEF,OACE,cAEF,OACE,cAEF,OACE,cAEF,QACE,eAEF,OACE,kBACA,aAEF,OACE,qBACA,kBACA,eACA,UACE,kBAEJ,OACE,UACA,kBACA,kBACA,UACA,oBAEF,WACE,wBACA,mBACA,yBAEF,cACE,WAEF,eACE,YAEF,yFAKE,kBAEF,8FAKE,iBAEF,SACE,6CACQ,qCAEV,UACE,+CACQ,uCAEV,2BACE,GACE,+BACQ,uBACV,KACE,iCACQ,0BAEZ,mBACE,GACE,+BACQ,uBACV,KACE,iCACQ,0BAEZ,cACE,sEACA,gCACQ,wBAEV,eACE,sEACA,iCACQ,yBAEV,eACE,sEACA,iCACQ,yBAEV,oBACE,gFACA,+BACQ,uBAEV,kBACE,gFACA,+BACQ,uBAEV,qCACE,gFACA,gCACQ,wBAEV,gHAKE,oBACQ,YAEV,UACE,qBACA,WACA,gBACA,kBACA,sBACA,YAEF,0BAEE,OACA,kBACA,kBACA,WAEF,aACE,oBAEF,aACE,cAEF,YACE,WAIF,iBACE,YAEF,2BACE,YAEF,oBACE,YAEF,qCACE,YAEF,cACE,YAEF,wBACE,YAEF,wBACE,YAEF,kBACE,YAEF,eACE,YAEF,oBACE,YAEF,0BACE,YAEF,yBACE,YAEF,mBACE,YAEF,wBACE,YAEF,yBACE,YAEF,sBACE,YAEF,uBACE,YAEF,kBACE,YAEF,qBACE,YAEF,kBACE,YAEF,sBACE,YAEF,qBACE,YAEF,+CACE,YAEF,kBACE,YAEF,kBACE,YAEF,mBACE,YAEF,qBACE,YAEF,6BACE,YAEF,6BACE,YAEF,8BACE,YAEF,2BACE,YAEF,sBACE,YAEF,sBACE,YAEF,uBACE,YAEF,oBACE,YAEF,iBACE,YAEF,yBACE,YAEF,mBACE,YAEF,gBACE,YAEF,qBACE,YAEF,yBACE,YAEF,iBACE,YAEF,iBACE,YAEF,qBACE,YAEF,qBACE,YAEF,mBACE,YAEF,mBACE,YAEF,iCACE,YAEF,iCACE,YAEF,kCACE,YAEF,+BACE,YAEF,6BACE,YAEF,6BACE,YAEF,8BACE,YAEF,2BACE,YAEF,sBACE,YAEF,sBACE,YAEF,uBACE,YAEF,oBACE,YAEF,sBACE,YAEF,wBACE,YAEF,wBACE,YAEF,uCACE,YAEF,oBACE,YAEF,sBACE,YAEF,cACE,YAEF,iBACE,YAEF,gBACE,YAEF,mBACE,YAEF,6BACE,YAEF,wBACE,YAEF,mBACE,YAEF,kBACE,YAEF,iBACE,YAEF,eACE,YAEF,qBACE,YAEF,oBACE,YAEF,yBACE,YAEF,eACE,YAEF,oBACE,YAEF,oBACE,YAEF,mBACE,YAEF,gBACE,YAEF,yBACE,YAEF,2BACE,YAEF,gBACE,YAEF,yBACE,YAEF,wBACE,YAEF,wBACE,YAEF,2BACE,YAEF,kCACE,YAEF,eACE,YAEF,gBACE,YAEF,mBACE,YAEF,0BACE,YAEF,gBACE,YAEF,sBACE,YAEF,wBACE,YAEF,iBACE,YAEF,mBACE,YAEF,qBACE,YAEF,sBACE,YAEF,yBACE,YAEF,qBACE,YAEF,mBACE,YAEF,gBACE,YAEF,qBACE,YAEF,sBACE,YAEF,mBACE,YAEF,yBACE,YAEF,iBACE,YAEF,mBACE,YAEF,qBACE,YAEF,qBACE,YAEF,uBACE,YAEF,gBACE,YAEF,gBACE,YAEF,gBACE,YAEF,gBACE,YAEF,gBACE,YAEF,gBACE,YAEF,qBACE,YAEF,qBACE,YAEF,uBACE,YAEF,oBACE,YAEF,wBACE,YAEF,eACE,YAEF,oBACE,YAEF,iBACE,YAEF,mBACE,YAEF,iBACE,YAEF,qBACE,YAEF,6BACE,YAEF,2BACE,YAEF,iBACE,YAEF,iBACE,YAEF,eACE,YAEF,eACE,YAEF,oBACE,YAEF,oBACE,YAEF,oBACE,YAEF,gBACE,YAEF,4BACE,YAEF,eACE,YAEF,mBACE,YAEF,yBACE,YAEF,sBACE,YAEF,sBACE,YAEF,oBACE,YAEF,wBACE,YAEF,0BACE,YAEF,0BACE,YAEF,yBACE,YAEF,0BACE,YAEF,kBACE,YAEF,wBACE,YAEF,sBACE,YAEF,oBACE,YAEF,oBACE,YAEF,eACE,YAEF,mBACE,YAEF,uBACE,YAEF,qBACE,YAEF,oBACE,YAEF,sBACE,YAEF,sBACE,YAEF,uBACE,YAEF,6BACE,YAEF,6BACE,YAEF,8BACE,YAEF,2BACE,YAEF,oBACE,YAEF,2BACE,YAEF,qBACE,YAEF,eACE,YAEF,yBACE,YAEF,mBACE,YAEF,wBACE,YAEF,0BACE,YAEF,uBACE,YAEF,kBACE,YAEF,yBACE,YAEF,qBACE,YAEF,qBACE,YAEF,mBACE,YAEF,sBACE,YAEF,uBACE,YAEF,iBACE,YAEF,sBACE,YAEF,8BACE,YAEF,4BACE,YAEF,sBACE,YAEF,qBACE,YAEF,sBACE,YAEF,qBACE,YAEF,iBACE,YAEF,wBACE,YAEF,wBACE,YAEF,wBACE,YAEF,iBACE,YAEF,wBACE,YAEF,uBACE,YAEF,sBACE,YAEF,wBACE,YAEF,sBACE,YAEF,uBACE,YAEF,sBACE,YAEF,+BACE,YAEF,+BACE,YAEF,gCACE,YAEF,6BACE,YAEF,wBACE,YAEF,wBACE,YAEF,yBACE,YAEF,sBACE,YAEF,iBACE,YAEF,kBACE,YAEF,kBACE,YAEF,kBACE,YAEF,wBACE,YAEF,gBACE,YAEF,qBACE,YAEF,2BACE,YAEF,0BACE,YAEF,iBACE,YAEF,iBACE,YAEF,6BACE,YAEF,iBACE,YAEF,8BACE,YAEF,0BACE,YAEF,sBACE,YAEF,2BACE,YAEF,sBACE,YAEF,+BACE,YAEF,qBACE,YAEF,0BACE,YAEF,4BACE,YAEF,sBACE,YAEF,sBACE,YAEF,wBACE,YAEF,oBACE,YAEF,gBACE,YAEF,uBACE,YAEF,mBACE,YAEF,oBACE,YAEF,kBACE,YAEF,eACE,YAEF,gBACE,YAEF,iBACE,YAEF,mBACE,YAEF,mBACE,YAEF,uBACE,YAEF,0BACE,YAEF,wBACE,YAEF,yBACE,YAEF,oBACE,YAEF,2BACE,YAEF,wBACE,YAEF,mBACE,YAEF,oBACE,YAEF,+BACE,YAEF,0BACE,YAEF,0BACE,YAEF,kBACE,YAEF,kBACE,YAEF,uBACE,YAEF,gBACE,YAEF,qBACE,YAEF,iBACE,YAEF,kBACE,YAEF,4BACE,YAEF,+BACE,YAEF,+BACE,YAEF,kCACE,YAEF,kCACE,YAEF,+BACE,YAEF,+BACE,YAEF,mCACE,YAEF,kCACE,YAEF,+BACE,YAEF,qCACE,YAEF,0CACE,YAEF,kCACE,YAEF,iCACE,YAEF,uBACE,YAEF,yBACE,YAEF,gBACE,YAEF,oBACE,YAEF,iBACE,YAEF,sBACE,YAEF,gBACE,YAEF,iBACE,YAEF,gBACE,YAEF,oBACE,YAEF,gBACE,YAEF,iBACE,YAEF,eACE,YAEF,sBACE,YAEF,mBACE,YAEF,0BACE,YAEF,oBACE,YAEF,oBACE,YAEF,gBACE,YAEF,qBACE,YAEF,oBACE,YAEF,qBACE,YAEF,mBACE,YAEF,mBACE,YAEF,eACE,YAEF,sBACE,YAEF,wBACE,YAEF,qBACE,YAEF,gBACE,YAEF,oBACE,YAEF,mBACE,YAEF,qBACE,YAEF,qBACE,YAEF,oBACE,YAEF,oBACE,YAEF,sBACE,YAEF,oBACE,YAEF,gBACE,YAEF,yBACE,YAEF,8BACE,YAEF,sBACE,YAEF,mBACE,YAEF,qBACE,YAEF,kBACE,YAEF,iBACE,YAEF,eACE,YAEF,kBACE,YAEF,kBACE,YAEF,eACE,YAEF,uBACE,YAEF,iBACE,YAEF,yBACE,YAEF,kBACE,YAEF,uBACE,YAEF,qBACE,YAEF,sBACE,YAEF,gBACE,YAEF,oBACE,YAEF,yBACE,YAEF,4BACE,YAEF,kBACE,YAEF,wBACE,YAEF,oBACE,YAEF,2BACE,YAEF,mBACE,YAEF,gBACE,YAEF,yBACE,YAEF,0BACE,YAEF,kBACE,YAEF,oBACE,YAEF,mBACE,YAEF,kBACE,YAEF,sBACE,YAEF,gBACE,YAEF,gBACE,YAEF,gBACE,YAEF,iBACE,YAEF,qBACE,YAEF,sBACE,YAEF,sBACE,YAEF,gBACE,YAEF,iBACE,YAEF,kBACE,YAEF,oBACE,YAEF,yBACE,YAEF,8BACE,YAEF,2BACE,YAEF,kBACE,YAEF,kBACE,YAEF,kBACE,YAEF,kBACE,YAEF,oBACE,YAEF,gBACE,YAEF,qBACE,YAEF,wBACE,YAEF,uBACE,YAEF,8BACE,YAEF,gCACE,YAEF,kBACE,YAEF,6BACE,YAEF,wBACE,YAEF,6BACE,YAEF,oCACE,YAEF,eACE,YAEF,uBACE,YAEF,qBACE,YAEF,oBACE,YAEF,sBACE,YAEF,8BACE,YAEF,2BACE,YAEF,gCACE,YAEF,yBACE,YAEF,wBACE,YAEF,eACE,YAEF,mBACE,YAEF,uBACE,YAEF,kBACE,YAEF,uBACE,YAEF,gBACE,YAEF,oBACE,YAEF,wBACE,YAEF,sBACE,YAEF,qBACE,YAEF,yBACE,YAEF,oBACE,YAEF,yBACE,YAEF,sBACE,YAEF,uBACE,YAEF,sBACE,YAEF,uBACE,YAEF,wBACE,YAEF,+BACE,YAEF,wBACE,YAEF,4BACE,YAEF,oBACE,YAEF,2BACE,YAEF,6BACE,YAEF,0BACE,YAEF,uBACE,YAEF,sBACE,YAEF,qBACE,YAEF,gBACE,YAEF,qBACE,YAEF,gBACE,YAEF,kBACE,YAEF,uBACE,YAEF,gBACE,YAEF,6BACE,YAEF,mBACE,YAEF,qBACE,YAEF,uBACE,YAEF,2BACE,YAEF,sBACE,YAEF,gBACE,YAEF,uBACE,YAEF,gBACE,YAEF,0BACE,YAEF,oBACE,YAEF,iBACE,YAEF,kBACE,YAEF,qBACE,YAEF,mBACE,YAEF,eACE,YAEF,kBACE,YAEF,wBACE,YAEF,uBACE,YAEF,uBACE,YAEF,gBACE,YAEF,wBACE,YAEF,4BACE,YAEF,6BACE,YAEF,kCACE,YAEF,qBACE,YAEF,wBACE,YAEF,yBACE,YAEF,wBACE,YAEF,4BACE,YAEF,oBACE,YAEF,mBACE,YAEF,sBACE,YAEF,0BACE,YAEF,mBACE,YAEF,gBACE,YAEF,iBACE,YAEF,sBACE,YAEF,mBACE,YAEF,yBACE,YAEF,kBACE,YAEF,6BACE,YAEF,2BACE,YAEF,mBACE,YAEF,oBACE,YAEF,iBACE,YAEF,eACE,YAEF,sBACE,YAEF,sBACE,YAEF,cACE,YAEF,qBACE,YAEF,iBACE,YAEF,gBACE,YAEF,eACE,YAEF,sBACE,YAEF,kBACE,YAEF,sBACE,YAEF,yBACE,YAEF,qBACE,YAEF,kBACE,YAEF,kBACE,YAEF,yBACE,YAEF,6BACE,YAEF,mBACE,YAEF,iBACE,YAEF,mBACE,YAEF,iBACE,YAEF,wBACE,YAEF,0BACE,YAEF,sBACE,YAEF,kBACE,YAEF,qBACE,YAEF,qBACE,YAEF,uBACE,YAEF,kBACE,YAEF,wBACE,YAEF,uBACE,YAEF,uBACE,YAEF,yBACE,YAEF,8BACE,YAEF,yBACE,YAEF,mBACE,YAEF,0BACE,YAEF,oBACE,YAEF,gBACE,YAEF,wBACE,YAEF,8BACE,YAEF,mBACE,YAEF,gBACE,YAEF,oBACE,YAEF,qBACE,YAEF,2BACE,YAEF,uBACE,YAEF,uBACE,YAEF,6BACE,YAEF,sBACE,YAEF,sBACE,YAEF,uBACE,YAEF,8BACE,YAEF,4BACE,YAEF,qBACE,YAEF,2BACE,YAEF,yBACE,YAEF,oBACE,YAEF,iBACE,YAEF,gBACE,YAEF,oBACE,YAEF,uBACE,YAEF,8BACE,YAEF,sBACE,YAEF,kBACE,YAEF,iBACE,YAEF,wBACE,YAEF,8BACE,YAEF,4BACE,YAEF,uBACE,YAEF,sBACE,YAEF,sBACE,YAEF,2BACE,YAEF,2BACE,YAEF,4BACE,YAEF,yBACE,YAEF,wBACE,YAEF,qBACE,YAEF,yBACE,YAEF,sBACE,YAEF,iBACE,YAEF,yBACE,YAEF,qBACE,YAEF,oBACE,YAEF,mBACE,YAEF,sBACE,YAEF,kBACE,YAEF,eACE,YAEF,mBACE,YAEF,sBACE,YAEF,0BACE,YAEF,mBACE,YAEF,iBACE,YAEF,qBACE,YAEF,sBACE,YAEF,uBACE,YAEF,kBACE,YAEF,iBACE,YAEF,gBACE,YAEF,yBACE,YAEF,mBACE,YAEF,uBACE,YAEF,gBACE,YAEF,iBACE,YAEF,oBACE,YAEF,iBACE,YAEF,oBACE,YAEF,wBACE,YAEF,2BACE,YAEF,mBACE,YAEF,iBACE,YAEF,kBACE,YAEF,qBACE,YAEF,yBACE,YAEF,0BACE,YAEF,2BACE,YAEF,wBACE,YAEF,iBACE,YAEF,mBACE,YAEF,iBACE,YAEF,mBACE,YAEF,oBACE,YAEF,oBACE,YAEF,mBACE,YAEF,uBACE,YAEF,iBACE,YAEF,kBACE,YAEF,gBACE,YAEF,iBACE,YAEF,kBACE,YAEF,oBACE,YAEF,oBACE,YAEF,gBACE,YAEF,uBACE,YAEF,qBACE,YAEF,6BACE,YAEF,mBACE,YAEF,kBACE,YAEF,kBACE,YAEF,uBACE,YAEF,gBACE,YAEF,gBACE,YAEF,sBACE,YAEF,mBACE,YAEF,iBACE,YAEF,iBACE,YAEF,kBACE,YAEF,0BACE,YAEF,cACE,YAEF,qBACE,YAEF,oBACE,YAEF,iBACE,YAEF,kBACE,YAEF,eACE,YAEF,mBACE,YAEF,oBACE,YAEF,kBACE,YAEF,kBACE,YAEF,uBACE,YAEF,yBACE,YAEF,gBACE,YAEF,qBACE,YAEF,2BACE,YAEF,qBACE,YAEF,kBACE,YAEF,oBACE,YAEF,oBACE,YAEF,kBACE,YAEF,uBACE,YAEF,mBACE,YAEF,kBACE,YAEF,yBACE,YAEF,iBACE,YAEF,sBACE,YAEF,wBACE,YAEF,sBACE,YAEF,uBACE,YAEF,gBACE,YAEF,mBACE,YAEF,iBACE,YAEF,gBACE,YAEF,qBACE,YAEF,2BACE,YAEF,0BACE,YAEF,wBACE,YAEF,qBACE,YAEF,qBACE,YAEF,gBACE,YAEF,gBACE,YAEF,oBACE,YAEF,uBACE,YAEF,kBACE,YAEF,iBACE,YAEF,qBACE,YAEF,gBACE,YAEF,oBACE,YAEF,mBACE,YAEF,mBACE,YAEF,0BACE,YAEF,gBACE,YAEF,qBACE,YAEF,+BACE,YAEF,+BACE,YAEF,gCACE,YAEF,6BACE,YAEF,sBACE,YAEF,wBACE,YAEF,gBACE,YAEF,mBACE,YAEF,iBACE,YAEF,kBACE,YAEF,qBACE,YAEF,qBACE,YAEF,gBACE,YAEF,uBACE,YAEF,eACE,YAEF,sBACE,YAEF,0BACE,YAEF,sBACE,YAEF,0BACE,YAEF,mBACE,YAEF,qBACE,YAEF,oBACE,YAEF,kBACE,YAEF,gBACE,YAEF,uBACE,YAEF,uBACE,YAEF,yBACE,YAEF,yBACE,YAEF,gBACE,YAEF,oBACE,YAEF,kBACE,YAEF,iBACE,YAEF,mBACE,YAEF,kBACE,YAEF,oBACE,YAEF,kBACE,YAEF,iBACE,YAEF,kBACE,YAEF,oBACE,YAEF,eACE,YAEF,qBACE,YAEF,4BACE,YAEF,kBACE,YAEF,mBACE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kBACE,YAEF,oBACE,YAEF,sBACE,YAEF,mBACE,YAEF,yBACE,YAEF,qBACE,YAEF,gBACE,YAEF,oBACE,YAEF,mBACE,YAEF,iBACE,YAEF,wBACE,YAEF,kBACE,YAEF,sBACE,YAEF,mBACE,YAEF,0BACE,YAEF,eACE,YAEF,gBACE,YAEF,gBACE,YAEF,iBACE,YAEF,gBACE,YAEF,qBACE,YAEF,iBACE,YAEF,sBACE,YAEF,oBACE,YAEF,0BACE,YAEF,4BACE,YAEF,2BACE,YAEF,yBACE,YAEF,oBACE,YAEF,uBACE,YAEF,sBACE,YAEF,cACE,YAEF,oBACE,YAEF,mBACE,YAEF,wBACE,YAEF,yBACE,YAEF,mBACE,YAEF,qBACE,YAEF,uBACE,YAEF,6BACE,YAEF,4BACE,YAEF,4BACE,YAEF,+BACE,YAEF,sCACE,YAEF,uBACE,YAEF,uBACE,YAEF,qBACE,YAEF,qBACE,YAEF,sBACE,YAEF,iBACE,YAEF,wBACE,YAEF,gBACE,YAEF,sBACE,YAEF,iBACE,YAEF,sBACE,YAEF,qBACE,YAEF,wBACE,YAEF,mBACE,YAEF,iBACE,YAEF,iBACE,YAEF,sBACE,YAEF,mBACE,YAEF,4BACE,YAEF,qBACE,YAEF,yBACE,YAEF,iBACE,YAEF,uBACE,YAEF,2BACE,YAEF,iBACE,YAEF,qBACE,YAEF,gBACE,YAEF,kBACE,YAEF,uBACE,YAEF,kBACE,YAEF,iBACE,YAEF,yBACE,YAEF,yBACE,YAEF,wBACE,YAEF,wBACE,YAEF,kBACE,YAEF,eACE,YAEF,kBACE,YAEF,yBACE,YAEF,cACE,YAEF,kBACE,YAEF,mBACE,YAEF,0BACE,YAEF,iBACE,YAEF,gBACE,YAEF,iBACE,YAEF,oBACE,YAEF,0BACE,YAEF,qBACE,YAEF,gBACE,YAEF,oBACE,YAEF,uBACE,YAEF,4BACE,YAEF,sBACE,YAEF,kBACE,YAEF,kBACE,YAEF,sBACE,YAEF,mBACE,YAEF,kBACE,YAEF,eACE,YAEF,gBACE,YAEF,oBACE,YAEF,0BACE,YAEF,0BACE,YAEF,sBACE,YAEF,uBACE,YAEF,sBACE,YAEF,oBACE,YAEF,qBACE,YAEF,wBACE,YAEF,yBACE,YAEF,wBACE,YAEF,qBACE,YAEF,mBACE,YAEF,sBACE,YAEF,sBACE,YAEF,qBACE,YAEF,uBACE,YAEF,uBACE,YAEF,sBACE,YAEF,oBACE,YAEF,oBACE,YAEF,sBACE,YAEF,iBACE,YAEF,qBACE,YAEF,oBACE,YAEF,yBACE,YAEF,oBACE,YAEF,kBACE,YAEF,yBACE,YAEF,iBACE,YAEF,wBACE,YAEF,sBACE,YAEF,mBACE,YAEF,kBACE,YAEF,yBACE,YAEF,gBACE,YAEF,iBACE,YAEF,iBACE,YAEF,iBACE,YAEF,uBACE,YAEF,kBACE,YAEF,iBACE,YAEF,wBACE,YAEF,mBACE,YAEF,gBACE,YAEF,cACE,YAEF,eACE,YAEF,2BACE,YAEF,uBACE,YAEF,uBACE,YAEF,sBACE,YAEF,qBACE,YAEF,oBACE,YAEF,wBACE,YAEF,iBACE,YAEF,mBACE,YAEF,kBACE,YAEF,qBACE,YAEF,iBACE,YAEF,kBACE,YAEF,iBACE,YAEF,kBACE,YAEF,0BACE,YAEF,kBACE,YAEF,oBACE,YAEF,2BACE,YAEF,sBACE,YAEF,iBACE,YAEF,gBACE,YAEF,uBACE,YAEF,gBACE,YAEF,wBACE,YAEF,2BACE,YAEF,2BACE,YAEF,0BACE,YAEF,mBACE,YAEF,uBACE,YAEF,sBACE,YAEF,0BACE,YAEF,eACE,YAEF,gCACE,YAEF,+BACE,YAEF,oBACE,YAEF,qBACE,YAEF,4BACE,YAEF,sBACE,YAEF,sBACE,YAEF,mBACE,YAEF,mBACE,YAEF,kBACE,YAEF,iBACE,YAEF,gBACE,YAEF,gBACE,YAEF,uBACE,YAEF,wBACE,YAEF,iBACE,YAEF,kBACE,YAEF,gCACE,YAEF,gBACE,YAEF,oBACE,YAEF,oBACE,YAEF,iBACE,YAEF,mBACE,YAEF,0BACE,YAEF,iBACE,YAEF,SACE,SACA,sBACA,WACA,YACA,gBACA,UACA,kBACA,UAEF,mDACE,UACA,YACA,SACA,iBACA,gBACA,WACF,WACE,oCACA,k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,YlBqNc,CmBxNd,oBACE,iBCFJ,uBACE,YACA,gBACA,kBAEA,gCACE,+EACA,uBACA,SACA,aACA,OACA,eACA,QACA,SACA,WAGF,gCACE,YACA,gBChBJ,eACE,gBACA,kBAEA,mBACE,gBAGF,qBACE,WACA,mBACA,2BACA,+DACA,SACA,kBACA,QACA,MACA,QAGF,4BACE,gBACA,iBACA,oBCvBJ,sBACE,gCACA,SACA,kBACA,OACA,QACA,MACA,WAGF,gBACE,iBACA,kBAGF,SACE,kBACA,qBACA,SAEA,kBACE,UACA,aACA,kBACA,kBACA,SACA,WAIJ,aACE,qBACA,UACA,YACA,kBACA,0CACA,gBAEF,0BACE,kBACA,yBACA,UAEF,0BACE,qBACA,yBACA,WAEF,0BACE,qBACA,yBACA,WAEF,0BACE,qBACA,yBACA,WAGF,mBACE,GACE,mBAEF,IACE,wBAEF,IACE,oBCtEJ,UACE,yBACA,mBACA,eACA,qBACA,SACA,iBACA,UACA,cAEA,6BACE,aAEA,mCACE,kBAIJ,aACE,gCACA,kBACA,+BvBmIiB,CuBjIjB,wBACE,YAIJ,mBACE,qBAGF,mBACE,qBAEA,sBACE,qBACA,avBeO,CuBXX,yBACE,qBAEA,4BACE,qBACA,avBMO,CuBFX,mBACE,qBACA,cAEA,sBACE,qBAIJ,kBACE,qBACA,avBTS,CuBWT,qBACE,qBAKN,oBACE,mBACA,aAEA,uBACE,eAKA,kEACE,8BC3EN,aACE,aACA,mBACA,kBxBNsB,CwBOtB,mBACA,4BAEA,sBACE,YACA,iBACA,kBAGF,mCACE,WACA,YACA,cACA,kBACA,WAEA,0CACE,aACA,WACA,YACA,mBACA,uBAIJ,kCACE,eAGF,sBCjCA,yBACA,yBACA,cAEA,4CACE,wBCJyB,CFuCzB,4CACE,yBAIJ,mBC7CA,wBCG4B,CDF5B,yBACA,aCG4B,CDD5B,yCACE,wBCDsB,CFiDxB,sBCrDA,wBCM+B,CDL/B,yBACA,aCM+B,CDJ/B,4CACE,wBCEyB,CFsD3B,sBC7DA,wBCS+B,CDR/B,yBACA,aCS+B,CDP/B,4CACE,wBCKyB,CF2D3B,qBCrEA,wBCY8B,CDX9B,yBACA,aCY8B,CDV9B,2CACE,wBCQwB,CCd5B,WACE,4BACA,+BACA,mBACA,SACA,OACA,oBACA,eACA,QACA,MACA,WAEA,sBACE,yBACA,gBACA,wBAGF,8BACE,UACA,wBAGF,kBACE,aACA,Y3B4LY,C2B1LZ,qCACE,aACA,gBACA,UACA,mBAKF,gDACE,UACA,aAIJ,yBACE,kBACA,SACA,OACA,QACA,kCACA,2B3BlDoB,C2BmDpB,4B3BnDoB,C2BqDpB,mCACE,kBACA,iDACA,0EACA,oCACA,qCACA,kBACA,aACA,mBACA,uBACA,eACA,WAKF,mDACE,yBAEA,6DACE,yBAMJ,mDACE,yBAEA,6DACE,yBAMJ,kDACE,yBAEA,4DACE,yBAMR,mBACE,UACA,cACA,eACA,mBACA,0BACA,U1B9DM,0C0BwDR,mBASI,a1BjEI,0C0BoEN,iCAEI,aAKN,oBACE,gBACA,kB3BxHsB,C2ByHtB,aACA,sBACA,kBACA,WAGF,iBACE,OACA,cACA,6FACA,qCAEA,4BACE,UAIJ,mBACE,mBACA,aACA,yBACA,YC/IyB,CDiJzB,sCACE,gBAIJ,qBACE,yBACA,YACA,SACA,aACA,OACA,eACA,QACA,MACA,WACA,aAEA,4BACE,cACA,WACA,4BAGF,qCACE,WAKJ,mBACE,6FACA,qCACA,mBACA,gCACA,aACA,WAEA,0CACE,gBCrLuB,CDwLzB,0BACE,iBACA,cAGF,oCACE,gBCjMqB,CDqMzB,kBACE,+B3B9CmB,C2B+CnB,gBACA,SACA,WEvMF,gBACE,qBCH4B,CDI5B,YACA,cACA,SCGmB,CDFnB,WAEA,qCACE,WAEA,uCACE,a7BuCO,C6BtCP,aACA,kBACA,qBACA,wBAEA,6CACE,wBCfiC,CDgBjC,UCfsB,CDkBxB,8CACE,wBClBkC,CDmBlC,UClBuB,CCN/B,aACE,mBACA,YACA,qBCLyB,CDMzB,8B/BiJoB,C+BhJpB,aCNmB,CDOnB,SACA,qBCDgB,CDEhB,WACA,UACA,0BAEA,kBACE,oBACA,a/BoCS,C+BnCT,gBAEA,oBACE,2B/BqIa,C+BpIb,eACA,iBACA,a/B6BO,C+BzBX,oEACE,cAGF,sCA7BF,aA8BI,kBAEA,0BACE,4BAIJ,gBACE,aCvCiB,CD0CnB,gBACE,SAGF,mCACE,mBACA,gBC5CqB,CD6CrB,aACA,eACA,WCvCa,CDyCb,0DACE,uBAGF,sCAXF,mCAYI,gBAGF,sCACE,cCrDqB,CDsDrB,4B/B8FsB,C+B7FtB,gBCrDuB,CDsDvB,SACA,mBAGF,sCACE,mBAGF,2DACE,mBACA,aACA,YACA,8BAGF,sDACE,YAGF,uDACE,iBEjFN,WACE,gBACA,eCDoB,CDEpB,mBACA,+BjC+ImB,CiC9InB,kBAEA,qDAEE,yBAGF,mBACE,mBACA,gCACA,aACA,8BjCkIkB,CiChIlB,sEAEE,gBAIJ,sBACE,yBACA,gBACA,wBAIA,uCACE,mBAEA,0DACE,gBAIJ,qCACE,oBACA,kBE7CJ,qBF+CM,CE9CN,YACA,aF8CM,CE7CN,eACA,iBFiDA,oBACE,+BAEA,uCExDF,wBDS2B,CCR3B,YACA,UDSgC,CCRhC,eACA,iBFwDE,qCE5DF,qBDUyB,CCTzB,YACA,anCiDW,CmChDX,eACA,iBF2DE,uCACE,WClDuB,CDsDvB,0CACE,ajClBK,CiCuBP,mDACE,ajCxBK,CiC8BT,uCEjFF,wBFmFM,CElFN,YACA,UAH+C,CAI/C,eACA,iBFoFE,sCExFF,wBF0FM,CEzFN,YACA,UAH+C,CAI/C,eACA,iBF2FE,uCE/FF,wBFiGM,CEhGN,YACA,UAH+C,CAI/C,eACA,iBFmGF,iBACE,sBACA,eCpGoB,CDqGpB,8BjC4CoB,CiC3CpB,YCzGmB,CD0GnB,kBACA,sBAEA,oCACE,4BACA,6BAGF,4BACE,UAIJ,mBACE,eCrHoB,CDsHpB,4BACA,6BACA,+BjC0BmB,CiCzBnB,gBACA,kBACA,kBAEA,yCACE,2BC9HkB,CD+HlB,4BC/HkB,CDkIpB,oCACE,yBACA,0BAGF,qBACE,SAGF,iCACE,sBAGF,+BACE,eAEA,gEACE,kBCrJ8B,CDwJhC,+DACE,iBCzJ8B,CD6JlC,6CACE,eACA,kBACA,aACA,WACA,qBAEF,4CACE,eACA,kBACA,0BACA,SACA,qBAIJ,mBACE,mBACA,6BACA,aACA,yBACA,aAEA,sCACE,gBGzLJ,UACE,mBACA,mBACA,oBACA,eACA,iBACA,iBpC+LY,CoC9LZ,iBACA,+BpCgJmB,CoC9InB,kBACE,kBAGF,YACE,eAGF,oBACE,kBAGF,sBACE,iBAGF,sBACE,iBAGF,sBACE,kBAGF,qBACE,eAGF,mBACE,wBpC4J4B,CoC3J5B,UpC4JiB,CoC1JjB,qBACE,UpCyJe,CoCrJnB,2BACE,wCpCsJ8B,CoCrJ9B,apCGS,CoCDT,6BACE,cAIJ,mBACE,yBACA,WAEA,qBACE,UpCuIe,CoCnInB,2BACE,yCACA,apCfS,CoCiBT,6BACE,apClBO,CoCsBX,mBACE,yBACA,WAEA,qBACE,WAIJ,2BACE,yCACA,apCjCS,CoCmCT,6BACE,apCpCO,CoCwCX,kBACE,yBACA,WAEA,oBACE,WAIJ,0BACE,yCACA,apCnDS,CoCqDT,4BACE,apCtDO,CoC0DX,mBACE,yBACA,WAEA,qBACE,WAIJ,2BACE,yCACA,apCrES,CoCuET,6BACE,apCxEO,CoC4EX,gBACE,yBACA,WAEA,kBACE,WAIJ,wBACE,yCACA,apCvFS,CoCyFT,0BACE,apC1FO,CqCnDb,uBACI,aACA,sBACA,yBACA,oBACA,WACA,YACA,aACA,kBACA,SACA,OACA,oBAEA,8BACI,6BACA,sBACA,UACA,SACA,gBACA,aACA,sBACA,mBACA,cACA,cAGJ,6BACI,YACA,UACA,WACA,uBACA,yBACA,iBACA,oBACA,WAGJ,+BACI,YACA,WACA,kBACA,aACA,yBACA,UACA,mBACA,8BACA,oBACA,kBACA,qCAEA,uFAEI,aACA,mBACA,OAGJ,2CACI,2BAGJ,4CACI,yBAGJ,qCACI,WACA,YACA,yBACA,iBACA,oBACA,cACA,UACA,0DACA,kBAKR,2CACI,cC/ER,aACE,qBCHyB,CDIzB,yBCFe,CDGf,eACA,SCFgB,CDGhB,wBACA,gBACA,cACA,QCTY,CCGd,WACE,yBACA,iBACA,sBACA,kBxCNsB,CwCOtB,WAEE,oBACE,yBACA,kBxCXkB,CwCYlB,cAEA,+BA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BACA,aACA,kBACA,UAEA,iCACE,YAGF,wBACE,SACA,kBACA,QAKN,wBACE,eACA,alDhDW,CkDiDX,aACA,eACA,iBACA,yBACA,qBACA,WAEA,8BACE,alDzDS,CkD4DX,+BACE,kBlD7DS,CkD8DT,WACA,eACA,gBACA,gBAGF,8BACE,wBCxHiC,CDyHjC,qBAIJ,+BACE,kBE3HA,+BACE,mBAIJ,yBACE,mBACA,aAEA,yCACE,gBAGF,kCACE,cAEA,yCACE,2BACA,8BACA,4BACA,+BACA,oBACA,4BAIJ,qCACE,aAGF,8BACE,iBAEA,gDACE,oBAKN,2BACE,iBACA,gCACA,apDMW,CoDLX,eACA,oBACA,yBAEA,oCACE,SAIJ,yBACE,gBACA,gBACA,mBAEA,yDACE,gBAGF,kCACE,SAGF,0CACE,mBAGF,yDACE,mBACA,apDvBS,CoDwBT,aACA,eAGF,4BACE,6BACA,0BAEA,2DACE,yBACA,mBACA,YACA,WACA,WACA,+BpD8De,CoD7Df,mBACA,kBACA,eACA,mBAEA,yFACE,apD7CK,CoD8CL,cAGF,qGACE,aAIJ,wCACE,gBAGF,0DACE,aACA,eAEA,+DACE,YAGF,0EACE,YAEA,yFACE,SAKN,qDACE,gBACA,oBAGF,+CACE,6BACA,mBACA,kBAIJ,uDACE,cACA,qBACA,qBAGF,2DACE,YACA,yBAEA,mEACE,iBAIJ,0DACE,YACA,iBAIJ,kCACE,iBAGF,+BACE,sBACA,kBpDpKsB,CoDqKtB,yBACA,qBAEA,kCACE,qBAEA,wCACE,mBAIJ,6DACE,yBAGF,iEACI,kBACA,eACA,kBAIN,2BACI,sBACA,2BpD7LoB,CoD8LpB,4BpD9LoB,CoD+LpB,yBACA,2CACA,yBACA,2BpD3Ce,CoD4Cf,gBAEA,0DACI,gBACA,yBACA,0BCvMN,uBACE,mBACA,aACA,mBAEA,mCACE,iBAIJ,uDACE,yBAGF,qBACE,yBACA,kBrDjBoB,CqDkBpB,aACA,8BAGF,qBACE,gCACA,aACA,iBACA,WAEA,iCACE,mBAGF,4BACE,gCACA,arDgBO,CqDfP,eACA,iBACA,2BrDkHa,CqDjHb,yBAEA,sDACE,aAIJ,0BACE,8BACA,gBACA,eAEA,sDACE,gBACA,uBACA,qBAGF,sCACE,iBACA,kBAEF,qCACE,mBAGF,0CACE,cACA,WAQF,6BACE,aACA,YAEA,mBADW,CAHb,6BACE,aACA,YAEA,oBADW,CAHb,6BACE,aACA,YAEA,SADW,CAHb,6BACE,aACA,YAEA,oBADW,CAHb,6BACE,aACA,YAEA,oBADW,CAHb,6BACE,aACA,YAEA,SADW,CAHb,6BACE,aACA,YAEA,oBADW,CAHb,6BACE,aACA,YAEA,oBADW,CAHb,6BACE,aACA,aAEA,SADW,CAHb,8BACE,aACA,aAEA,oBADW,CAHb,8BACE,aACA,aAEA,oBADW,CAHb,8BACE,aACA,aAEA,UADW,CAKf,+BACE,kBAGF,4BACE,uBACA,aACA,uBACA,YAEA,wCACE,gBAGF,uCACE,cACA,mBAEA,mDACE,aCvGV,yBACE,kBAEA,+BACE,iBAGF,gCACE,gBACA,YACA,eACA,kBACA,WACA,QCbJ,iBACE,uBACA,mBACA,eACA,aACA,mBACA,WAGA,+DACE,4BACA,4BACA,oCACA,qCACA,uCACA,wCAGF,iDACE,oCACA,4BACA,0BACA,oCACA,qCACA,uCACA,wCAIF,2BACE,yBAGF,yBACE,yBACA,2BvDjCoB,CuDkCpB,4BvDlCoB,CuDmCpB,WACA,aACA,WAEA,6BACE,kBACA,UAIJ,gCACE,wBvDiIkB,CuDhIlB,gBACA,8BvDhDoB,CuDiDpB,+BvDjDoB,CuDkDpB,aACA,OACA,aACA,WAGF,wBACE,aACA,sBACA,kBACA,kBACA,sBAEA,mCACE,6BvD+GgB,CuD9GhB,mDACE,iBACA,uBAIJ,qCACE,wBAIJ,uBACE,qBACA,SACA,UAEA,+BACE,YACA,gBAGF,0BACE,+BvDwFgB,CuDvFhB,aACA,sBACA,kBAEA,8BACE,kBACA,aACA,WAGF,mCACE,uBAGF,qCACE,mBAKN,4BACE,cACA,gBACA,uBACA,mBAGF,iCACE,SAGF,iDACE,aACA,iBACA,iBAEA,6DACE,avD3EO,CuD4EP,gBAEA,wEACE,cC/HR,gBACE,aACA,qBACA,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","sources":["webpack://@tyk-technologies/tyk-ui/./src/index.scss","webpack://@tyk-technologies/tyk-ui/./src/common/sass/reset.scss","webpack://@tyk-technologies/tyk-ui/./src/common/sass/grid.scss","webpack://@tyk-technologies/tyk-ui/./src/common/sass/variables.scss","webpack://@tyk-technologies/tyk-ui/./src/common/sass/mixins.scss","webpack://@tyk-technologies/tyk-ui/./src/common/sass/fontawesome.scss","webpack://@tyk-technologies/tyk-ui/./src/common/sass/tykon.scss","webpack://@tyk-technologies/tyk-ui/./src/common/sass/typography.scss","webpack://@tyk-technologies/tyk-ui/./src/common/sass/form.scss","webpack://@tyk-technologies/tyk-ui/./src/components/Accordion/sass/Accordion.scss","webpack://@tyk-technologies/tyk-ui/./src/components/Tooltip/sass/variables.scss","webpack://@tyk-technologies/tyk-ui/./src/components/Tooltip/sass/Tooltip.scss","webpack://@tyk-technologies/tyk-ui/./src/components/Button/sass/Button.scss","webpack://@tyk-technologies/tyk-ui/./src/components/Button/sass/mixins.scss","webpack://@tyk-technologies/tyk-ui/./src/components/Button/sass/variables.scss","webpack://@tyk-technologies/tyk-ui/./src/components/ButtonGroup/sass/ButtonGroup.scss","webpack://@tyk-technologies/tyk-ui/./src/components/Chart/sass/Chart.scss","webpack://@tyk-technologies/tyk-ui/./src/components/Collapsible/sass/Collapsible.scss","webpack://@tyk-technologies/tyk-ui/./src/components/CopyToClipboard/sass/CopyToClipboard.scss","webpack://@tyk-technologies/tyk-ui/./src/components/FixedWrapper/sass/FixedWrapper.scss","webpack://@tyk-technologies/tyk-ui/./src/components/FixedWrapper/sass/variables.scss","webpack://@tyk-technologies/tyk-ui/./src/components/FloatingContainer/sass/FloatingContainer.scss","webpack://@tyk-technologies/tyk-ui/./src/components/Icon/sass/Icon.scss","webpack://@tyk-technologies/tyk-ui/./src/components/InfiniteScroller/sass/InfiniteScroller.scss","webpack://@tyk-technologies/tyk-ui/./src/components/InfoNote/sass/InfoNote.scss","webpack://@tyk-technologies/tyk-ui/./src/components/Loader/sass/Loader.scss","webpack://@tyk-technologies/tyk-ui/./src/components/List/sass/List.scss","webpack://@tyk-technologies/tyk-ui/./src/components/Message/sass/Message.scss","webpack://@tyk-technologies/tyk-ui/./src/components/Message/sass/mixins.scss","webpack://@tyk-technologies/tyk-ui/./src/components/Message/sass/variables.scss","webpack://@tyk-technologies/tyk-ui/./src/components/Modal/sass/Modal.scss","webpack://@tyk-technologies/tyk-ui/./src/components/Modal/sass/variables.scss","webpack://@tyk-technologies/tyk-ui/./src/components/Navigation/sass/Navigation.scss","webpack://@tyk-technologies/tyk-ui/./src/components/Navigation/sass/variables.scss","webpack://@tyk-technologies/tyk-ui/./src/components/NavBar/sass/NavBar.scss","webpack://@tyk-technologies/tyk-ui/./src/components/NavBar/sass/variables.scss","webpack://@tyk-technologies/tyk-ui/./src/components/Panel/sass/Panel.scss","webpack://@tyk-technologies/tyk-ui/./src/components/Panel/sass/variables.scss","webpack://@tyk-technologies/tyk-ui/./src/components/Panel/sass/mixins.scss","webpack://@tyk-technologies/tyk-ui/./src/components/Pill/sass/Pill.scss","webpack://@tyk-technologies/tyk-ui/./src/components/RevealPanel/sass/RevealPanel.scss","webpack://@tyk-technologies/tyk-ui/./src/components/Sidebar/sass/Sidebar.scss","webpack://@tyk-technologies/tyk-ui/./src/components/Sidebar/sass/variables.scss","webpack://@tyk-technologies/tyk-ui/./src/components/Table/sass/Table.scss","webpack://@tyk-technologies/tyk-ui/./src/components/Table/sass/variables.scss","webpack://@tyk-technologies/tyk-ui/./src/components/Tabs/sass/Tabs.scss","webpack://@tyk-technologies/tyk-ui/./src/components/Tabs/sass/variables.scss","webpack://@tyk-technologies/tyk-ui/./src/components/Toast/sass/Toast.scss","webpack://@tyk-technologies/tyk-ui/./src/form/components/Combobox2/sass/Combobox.scss","webpack://@tyk-technologies/tyk-ui/./src/form/components/Combobox2/sass/variables.scss","webpack://@tyk-technologies/tyk-ui/./src/form/components/Checkbox/sass/Checkbox.scss","webpack://@tyk-technologies/tyk-ui/./src/form/components/Checkbox/sass/variables.scss","webpack://@tyk-technologies/tyk-ui/./src/form/components/DatePicker/sass/DatePicker.scss","webpack://@tyk-technologies/tyk-ui/./src/form/components/Dropdown/sass/Dropdown.scss","webpack://@tyk-technologies/tyk-ui/./src/form/components/Dropdown/sass/variables.scss","webpack://@tyk-technologies/tyk-ui/./src/form/components/EditableList/sass/EditableList.scss","webpack://@tyk-technologies/tyk-ui/./src/form/components/EditableList2/sass/EditableList2.scss","webpack://@tyk-technologies/tyk-ui/./src/form/components/FileInput/sass/FileInput.scss","webpack://@tyk-technologies/tyk-ui/./src/form/components/Multiselect/sass/Multiselect.scss","webpack://@tyk-technologies/tyk-ui/./src/form/components/Pagination/sass/Pagination.scss","webpack://@tyk-technologies/tyk-ui/./src/form/components/Pagination/sass/variables.scss","webpack://@tyk-technologies/tyk-ui/./src/form/components/Radio/sass/Radio.scss","webpack://@tyk-technologies/tyk-ui/./src/form/components/Radio/sass/variables.scss","webpack://@tyk-technologies/tyk-ui/./src/form/components/Select/sass/Select.scss","webpack://@tyk-technologies/tyk-ui/./src/form/components/SelectableList/sass/SelectableList.scss","webpack://@tyk-technologies/tyk-ui/./src/form/components/Textarea/sass/Textarea.scss","webpack://@tyk-technologies/tyk-ui/./src/form/components/Toggle/sass/Toggle.scss","webpack://@tyk-technologies/tyk-ui/./src/form/components/Toggle/sass/variables.scss","webpack://@tyk-technologies/tyk-ui/./src/form/components/StringBuilder/sass/Stringbuilder.scss","webpack://@tyk-technologies/tyk-ui/./src/common/sass/layout.scss","webpack://@tyk-technologies/tyk-ui/./src/common/sass/texts.scss","webpack://@tyk-technologies/tyk-ui/./src/utils/css-helpers/helpers.scss"],"sourcesContent":["html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video{margin:0;padding:0;border:0;font-size:100%;font:inherit;vertical-align:baseline}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}body{line-height:1}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:before,blockquote:after{content:\"\";content:none}q:before,q:after{content:\"\";content:none}table{border-collapse:collapse;border-spacing:0}.container{max-width:1240px;margin:0 auto}.container,.container-fluid{padding:0 20px}.tyk-row{display:flex;box-sizing:border-box;list-style:none;flex:0 1 auto;flex-direction:row;flex-wrap:wrap;margin-left:-20px;width:calc(100% + 20px)}.tyk-row.no-gutters{margin:0}.tyk-row.tyk-row--gutterless{margin:0;width:100%}.tyk-row.tyk-row--reverse{flex-direction:row-reverse}.tyk-col{max-width:calc(100% - 20px);box-sizing:border-box;flex:0 0 auto;flex-grow:1;flex-basis:calc(100% - 20px);margin-left:20px;width:calc(100% - 20px)}.tyk-col:last-child{margin-right:0}.tyk-row--gutterless .tyk-col{margin:0}.tyk-col.tyk-col--reverse{flex-direction:column-reverse}.tyk-col.tyk-col--align-bottom{align-self:flex-end}.tyk-col.tyk-col--align-top{align-self:flex-start}.tyk-col.tyk-col--align-center{align-self:center}.tyk-col.tyk-col--align-baseline{align-self:baseline}.tyk-col.tyk-col--align-stretch{align-self:stretch}@media screen and (min-width: 1248px){.tyk-col--lg-0{flex-basis:calc(0% - 20px);max-width:calc(0% - 20px)}.tyk-col--offset-lg-0{margin-left:0%}.tyk-col--lg-1{flex-basis:calc(8.3333333333% - 20px);max-width:calc(8.3333333333% - 20px)}.tyk-col--offset-lg-1{margin-left:8.3333333333%}.tyk-col--lg-2{flex-basis:calc(16.6666666667% - 20px);max-width:calc(16.6666666667% - 20px)}.tyk-col--offset-lg-2{margin-left:16.6666666667%}.tyk-col--lg-3{flex-basis:calc(25% - 20px);max-width:calc(25% - 20px)}.tyk-col--offset-lg-3{margin-left:25%}.tyk-col--lg-4{flex-basis:calc(33.3333333333% - 20px);max-width:calc(33.3333333333% - 20px)}.tyk-col--offset-lg-4{margin-left:33.3333333333%}.tyk-col--lg-5{flex-basis:calc(41.6666666667% - 20px);max-width:calc(41.6666666667% - 20px)}.tyk-col--offset-lg-5{margin-left:41.6666666667%}.tyk-col--lg-6{flex-basis:calc(50% - 20px);max-width:calc(50% - 20px)}.tyk-col--offset-lg-6{margin-left:50%}.tyk-col--lg-7{flex-basis:calc(58.3333333333% - 20px);max-width:calc(58.3333333333% - 20px)}.tyk-col--offset-lg-7{margin-left:58.3333333333%}.tyk-col--lg-8{flex-basis:calc(66.6666666667% - 20px);max-width:calc(66.6666666667% - 20px)}.tyk-col--offset-lg-8{margin-left:66.6666666667%}.tyk-col--lg-9{flex-basis:calc(75% - 20px);max-width:calc(75% - 20px)}.tyk-col--offset-lg-9{margin-left:75%}.tyk-col--lg-10{flex-basis:calc(83.3333333333% - 20px);max-width:calc(83.3333333333% - 20px)}.tyk-col--offset-lg-10{margin-left:83.3333333333%}.tyk-col--lg-11{flex-basis:calc(91.6666666667% - 20px);max-width:calc(91.6666666667% - 20px)}.tyk-col--offset-lg-11{margin-left:91.6666666667%}.tyk-col--lg-12{flex-basis:calc(100% - 20px);max-width:calc(100% - 20px)}.tyk-col--offset-lg-12{margin-left:100%}}@media screen and (min-width: 1024px)and (max-width: 1247px){.tyk-col--md-0{flex-basis:calc(0% - 20px);max-width:calc(0% - 20px)}.tyk-col--offset-md-0{margin-left:0%}.tyk-col--md-1{flex-basis:calc(8.3333333333% - 20px);max-width:calc(8.3333333333% - 20px)}.tyk-col--offset-md-1{margin-left:8.3333333333%}.tyk-col--md-2{flex-basis:calc(16.6666666667% - 20px);max-width:calc(16.6666666667% - 20px)}.tyk-col--offset-md-2{margin-left:16.6666666667%}.tyk-col--md-3{flex-basis:calc(25% - 20px);max-width:calc(25% - 20px)}.tyk-col--offset-md-3{margin-left:25%}.tyk-col--md-4{flex-basis:calc(33.3333333333% - 20px);max-width:calc(33.3333333333% - 20px)}.tyk-col--offset-md-4{margin-left:33.3333333333%}.tyk-col--md-5{flex-basis:calc(41.6666666667% - 20px);max-width:calc(41.6666666667% - 20px)}.tyk-col--offset-md-5{margin-left:41.6666666667%}.tyk-col--md-6{flex-basis:calc(50% - 20px);max-width:calc(50% - 20px)}.tyk-col--offset-md-6{margin-left:50%}.tyk-col--md-7{flex-basis:calc(58.3333333333% - 20px);max-width:calc(58.3333333333% - 20px)}.tyk-col--offset-md-7{margin-left:58.3333333333%}.tyk-col--md-8{flex-basis:calc(66.6666666667% - 20px);max-width:calc(66.6666666667% - 20px)}.tyk-col--offset-md-8{margin-left:66.6666666667%}.tyk-col--md-9{flex-basis:calc(75% - 20px);max-width:calc(75% - 20px)}.tyk-col--offset-md-9{margin-left:75%}.tyk-col--md-10{flex-basis:calc(83.3333333333% - 20px);max-width:calc(83.3333333333% - 20px)}.tyk-col--offset-md-10{margin-left:83.3333333333%}.tyk-col--md-11{flex-basis:calc(91.6666666667% - 20px);max-width:calc(91.6666666667% - 20px)}.tyk-col--offset-md-11{margin-left:91.6666666667%}.tyk-col--md-12{flex-basis:calc(100% - 20px);max-width:calc(100% - 20px)}.tyk-col--offset-md-12{margin-left:100%}}@media screen and (min-width: 769px)and (max-width:1023px){.tyk-col--sm-0{flex-basis:calc(0% - 20px);max-width:calc(0% - 20px)}.tyk-col--offset-sm-0{margin-left:0%}.tyk-col--sm-1{flex-basis:calc(8.3333333333% - 20px);max-width:calc(8.3333333333% - 20px)}.tyk-col--offset-sm-1{margin-left:8.3333333333%}.tyk-col--sm-2{flex-basis:calc(16.6666666667% - 20px);max-width:calc(16.6666666667% - 20px)}.tyk-col--offset-sm-2{margin-left:16.6666666667%}.tyk-col--sm-3{flex-basis:calc(25% - 20px);max-width:calc(25% - 20px)}.tyk-col--offset-sm-3{margin-left:25%}.tyk-col--sm-4{flex-basis:calc(33.3333333333% - 20px);max-width:calc(33.3333333333% - 20px)}.tyk-col--offset-sm-4{margin-left:33.3333333333%}.tyk-col--sm-5{flex-basis:calc(41.6666666667% - 20px);max-width:calc(41.6666666667% - 20px)}.tyk-col--offset-sm-5{margin-left:41.6666666667%}.tyk-col--sm-6{flex-basis:calc(50% - 20px);max-width:calc(50% - 20px)}.tyk-col--offset-sm-6{margin-left:50%}.tyk-col--sm-7{flex-basis:calc(58.3333333333% - 20px);max-width:calc(58.3333333333% - 20px)}.tyk-col--offset-sm-7{margin-left:58.3333333333%}.tyk-col--sm-8{flex-basis:calc(66.6666666667% - 20px);max-width:calc(66.6666666667% - 20px)}.tyk-col--offset-sm-8{margin-left:66.6666666667%}.tyk-col--sm-9{flex-basis:calc(75% - 20px);max-width:calc(75% - 20px)}.tyk-col--offset-sm-9{margin-left:75%}.tyk-col--sm-10{flex-basis:calc(83.3333333333% - 20px);max-width:calc(83.3333333333% - 20px)}.tyk-col--offset-sm-10{margin-left:83.3333333333%}.tyk-col--sm-11{flex-basis:calc(91.6666666667% - 20px);max-width:calc(91.6666666667% - 20px)}.tyk-col--offset-sm-11{margin-left:91.6666666667%}.tyk-col--sm-12{flex-basis:calc(100% - 20px);max-width:calc(100% - 20px)}.tyk-col--offset-sm-12{margin-left:100%}}@media screen and (max-width: 768px){.tyk-col--xs-0{flex-basis:calc(0% - 20px);max-width:calc(0% - 20px)}.tyk-col--offset-xs-0{margin-left:0%}.tyk-col--xs-1{flex-basis:calc(8.3333333333% - 20px);max-width:calc(8.3333333333% - 20px)}.tyk-col--offset-xs-1{margin-left:8.3333333333%}.tyk-col--xs-2{flex-basis:calc(16.6666666667% - 20px);max-width:calc(16.6666666667% - 20px)}.tyk-col--offset-xs-2{margin-left:16.6666666667%}.tyk-col--xs-3{flex-basis:calc(25% - 20px);max-width:calc(25% - 20px)}.tyk-col--offset-xs-3{margin-left:25%}.tyk-col--xs-4{flex-basis:calc(33.3333333333% - 20px);max-width:calc(33.3333333333% - 20px)}.tyk-col--offset-xs-4{margin-left:33.3333333333%}.tyk-col--xs-5{flex-basis:calc(41.6666666667% - 20px);max-width:calc(41.6666666667% - 20px)}.tyk-col--offset-xs-5{margin-left:41.6666666667%}.tyk-col--xs-6{flex-basis:calc(50% - 20px);max-width:calc(50% - 20px)}.tyk-col--offset-xs-6{margin-left:50%}.tyk-col--xs-7{flex-basis:calc(58.3333333333% - 20px);max-width:calc(58.3333333333% - 20px)}.tyk-col--offset-xs-7{margin-left:58.3333333333%}.tyk-col--xs-8{flex-basis:calc(66.6666666667% - 20px);max-width:calc(66.6666666667% - 20px)}.tyk-col--offset-xs-8{margin-left:66.6666666667%}.tyk-col--xs-9{flex-basis:calc(75% - 20px);max-width:calc(75% - 20px)}.tyk-col--offset-xs-9{margin-left:75%}.tyk-col--xs-10{flex-basis:calc(83.3333333333% - 20px);max-width:calc(83.3333333333% - 20px)}.tyk-col--offset-xs-10{margin-left:83.3333333333%}.tyk-col--xs-11{flex-basis:calc(91.6666666667% - 20px);max-width:calc(91.6666666667% - 20px)}.tyk-col--offset-xs-11{margin-left:91.6666666667%}.tyk-col--xs-12{flex-basis:calc(100% - 20px);max-width:calc(100% - 20px)}.tyk-col--offset-xs-12{margin-left:100%}}@font-face{font-family:\"OpenSans-Bold\";src:url(\"../fonts/OpenSans-Bold.woff2\") format(\"woff2\"),url(\"../fonts/OpenSans-Bold.woff\") format(\"woff\");font-weight:normal;font-style:normal}@font-face{font-family:\"OpenSans-SemiBold\";src:url(\"../fonts/OpenSans-SemiBold.woff2\") format(\"woff2\"),url(\"../fonts/OpenSans-SemiBold.woff\") format(\"woff\");font-weight:normal;font-style:normal}@font-face{font-family:\"OpenSans-Regular\";src:url(\"../fonts/OpenSans-Regular.woff2\") format(\"woff2\"),url(\"../fonts/OpenSans-Regular.woff\") format(\"woff\");font-weight:normal;font-style:normal}@font-face{font-family:\"smoolthan_bold\";src:url(\"../fonts/smoolthan_bold-webfont.woff2\") format(\"woff2\"),url(\"../fonts/smoolthan_bold-webfont.woff\") format(\"woff\");font-weight:normal;font-style:normal}@font-face{font-family:\"smoolthan_medium\";src:url(\"../fonts/smoolthan_medium-webfont.woff2\") format(\"woff2\"),url(\"../fonts/smoolthan_medium-webfont.woff\") format(\"woff\");font-weight:normal;font-style:normal}@font-face{font-family:\"smoolthan_regular\";src:url(\"../fonts/smoolthan_regular-webfont.woff2\") format(\"woff2\"),url(\"../fonts/smoolthan_regular-webfont.woff\") format(\"woff\");font-weight:normal;font-style:normal}@font-face{font-family:\"tykon\";src:url(\"../fonts/tykon.woff2\") format(\"woff2\"),url(\"../fonts/tykon.woff\") format(\"woff\");font-weight:normal;font-style:normal}/*!\n * Font Awesome Free 5.5.0 by @fontawesome - https://fontawesome.com\n * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)\n */.fa,.fas,.far,.fal,.fab{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-0.0667em}.fa-xs{font-size:.75em}.fa-sm{font-size:.875em}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:2.5em;padding-left:0}.fa-ul>li{position:relative}.fa-li{left:-2em;position:absolute;text-align:center;width:2em;line-height:inherit}.fa-border{border:solid .08em #eee;border-radius:.1em;padding:.2em .25em .15em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left,.fas.fa-pull-left,.far.fa-pull-left,.fal.fa-pull-left,.fab.fa-pull-left{margin-right:.3em}.fa.fa-pull-right,.fas.fa-pull-right,.far.fa-pull-right,.fal.fa-pull-right,.fab.fa-pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.fa-rotate-90{-ms-filter:\"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)\";-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:\"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)\";-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:\"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)\";-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:\"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)\";-webkit-transform:scale(-1, 1);transform:scale(-1, 1)}.fa-flip-vertical{-ms-filter:\"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)\";-webkit-transform:scale(1, -1);transform:scale(1, -1)}.fa-flip-horizontal.fa-flip-vertical{-ms-filter:\"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)\";-webkit-transform:scale(-1, -1);transform:scale(-1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{-webkit-filter:none;filter:none}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-500px:before{content:\"\"}.fa-accessible-icon:before{content:\"\"}.fa-accusoft:before{content:\"\"}.fa-acquisitions-incorporated:before{content:\"\"}.fa-ad:before{content:\"\"}.fa-address-book:before{content:\"\"}.fa-address-card:before{content:\"\"}.fa-adjust:before{content:\"\"}.fa-adn:before{content:\"\"}.fa-adversal:before{content:\"\"}.fa-affiliatetheme:before{content:\"\"}.fa-air-freshener:before{content:\"\"}.fa-algolia:before{content:\"\"}.fa-align-center:before{content:\"\"}.fa-align-justify:before{content:\"\"}.fa-align-left:before{content:\"\"}.fa-align-right:before{content:\"\"}.fa-alipay:before{content:\"\"}.fa-allergies:before{content:\"\"}.fa-amazon:before{content:\"\"}.fa-amazon-pay:before{content:\"\"}.fa-ambulance:before{content:\"\"}.fa-american-sign-language-interpreting:before{content:\"\"}.fa-amilia:before{content:\"\"}.fa-anchor:before{content:\"\"}.fa-android:before{content:\"\"}.fa-angellist:before{content:\"\"}.fa-angle-double-down:before{content:\"\"}.fa-angle-double-left:before{content:\"\"}.fa-angle-double-right:before{content:\"\"}.fa-angle-double-up:before{content:\"\"}.fa-angle-down:before{content:\"\"}.fa-angle-left:before{content:\"\"}.fa-angle-right:before{content:\"\"}.fa-angle-up:before{content:\"\"}.fa-angry:before{content:\"\"}.fa-angrycreative:before{content:\"\"}.fa-angular:before{content:\"\"}.fa-ankh:before{content:\"\"}.fa-app-store:before{content:\"\"}.fa-app-store-ios:before{content:\"\"}.fa-apper:before{content:\"\"}.fa-apple:before{content:\"\"}.fa-apple-alt:before{content:\"\"}.fa-apple-pay:before{content:\"\"}.fa-archive:before{content:\"\"}.fa-archway:before{content:\"\"}.fa-arrow-alt-circle-down:before{content:\"\"}.fa-arrow-alt-circle-left:before{content:\"\"}.fa-arrow-alt-circle-right:before{content:\"\"}.fa-arrow-alt-circle-up:before{content:\"\"}.fa-arrow-circle-down:before{content:\"\"}.fa-arrow-circle-left:before{content:\"\"}.fa-arrow-circle-right:before{content:\"\"}.fa-arrow-circle-up:before{content:\"\"}.fa-arrow-down:before{content:\"\"}.fa-arrow-left:before{content:\"\"}.fa-arrow-right:before{content:\"\"}.fa-arrow-up:before{content:\"\"}.fa-arrows-alt:before{content:\"\"}.fa-arrows-alt-h:before{content:\"\"}.fa-arrows-alt-v:before{content:\"\"}.fa-assistive-listening-systems:before{content:\"\"}.fa-asterisk:before{content:\"\"}.fa-asymmetrik:before{content:\"\"}.fa-at:before{content:\"\"}.fa-atlas:before{content:\"\"}.fa-atom:before{content:\"\"}.fa-audible:before{content:\"\"}.fa-audio-description:before{content:\"\"}.fa-autoprefixer:before{content:\"\"}.fa-avianex:before{content:\"\"}.fa-aviato:before{content:\"\"}.fa-award:before{content:\"\"}.fa-aws:before{content:\"\"}.fa-backspace:before{content:\"\"}.fa-backward:before{content:\"\"}.fa-balance-scale:before{content:\"\"}.fa-ban:before{content:\"\"}.fa-band-aid:before{content:\"\"}.fa-bandcamp:before{content:\"\"}.fa-barcode:before{content:\"\"}.fa-bars:before{content:\"\"}.fa-baseball-ball:before{content:\"\"}.fa-basketball-ball:before{content:\"\"}.fa-bath:before{content:\"\"}.fa-battery-empty:before{content:\"\"}.fa-battery-full:before{content:\"\"}.fa-battery-half:before{content:\"\"}.fa-battery-quarter:before{content:\"\"}.fa-battery-three-quarters:before{content:\"\"}.fa-bed:before{content:\"\"}.fa-beer:before{content:\"\"}.fa-behance:before{content:\"\"}.fa-behance-square:before{content:\"\"}.fa-bell:before{content:\"\"}.fa-bell-slash:before{content:\"\"}.fa-bezier-curve:before{content:\"\"}.fa-bible:before{content:\"\"}.fa-bicycle:before{content:\"\"}.fa-bimobject:before{content:\"\"}.fa-binoculars:before{content:\"\"}.fa-birthday-cake:before{content:\"\"}.fa-bitbucket:before{content:\"\"}.fa-bitcoin:before{content:\"\"}.fa-bity:before{content:\"\"}.fa-black-tie:before{content:\"\"}.fa-blackberry:before{content:\"\"}.fa-blender:before{content:\"\"}.fa-blender-phone:before{content:\"\"}.fa-blind:before{content:\"\"}.fa-blogger:before{content:\"\"}.fa-blogger-b:before{content:\"\"}.fa-bluetooth:before{content:\"\"}.fa-bluetooth-b:before{content:\"\"}.fa-bold:before{content:\"\"}.fa-bolt:before{content:\"\"}.fa-bomb:before{content:\"\"}.fa-bone:before{content:\"\"}.fa-bong:before{content:\"\"}.fa-book:before{content:\"\"}.fa-book-dead:before{content:\"\"}.fa-book-open:before{content:\"\"}.fa-book-reader:before{content:\"\"}.fa-bookmark:before{content:\"\"}.fa-bowling-ball:before{content:\"\"}.fa-box:before{content:\"\"}.fa-box-open:before{content:\"\"}.fa-boxes:before{content:\"\"}.fa-braille:before{content:\"\"}.fa-brain:before{content:\"\"}.fa-briefcase:before{content:\"\"}.fa-briefcase-medical:before{content:\"\"}.fa-broadcast-tower:before{content:\"\"}.fa-broom:before{content:\"\"}.fa-brush:before{content:\"\"}.fa-btc:before{content:\"\"}.fa-bug:before{content:\"\"}.fa-building:before{content:\"\"}.fa-bullhorn:before{content:\"\"}.fa-bullseye:before{content:\"\"}.fa-burn:before{content:\"\"}.fa-buromobelexperte:before{content:\"\"}.fa-bus:before{content:\"\"}.fa-bus-alt:before{content:\"\"}.fa-business-time:before{content:\"\"}.fa-buysellads:before{content:\"\"}.fa-calculator:before{content:\"\"}.fa-calendar:before{content:\"\"}.fa-calendar-alt:before{content:\"\"}.fa-calendar-check:before{content:\"\"}.fa-calendar-minus:before{content:\"\"}.fa-calendar-plus:before{content:\"\"}.fa-calendar-times:before{content:\"\"}.fa-camera:before{content:\"\"}.fa-camera-retro:before{content:\"\"}.fa-campground:before{content:\"\"}.fa-cannabis:before{content:\"\"}.fa-capsules:before{content:\"\"}.fa-car:before{content:\"\"}.fa-car-alt:before{content:\"\"}.fa-car-battery:before{content:\"\"}.fa-car-crash:before{content:\"\"}.fa-car-side:before{content:\"\"}.fa-caret-down:before{content:\"\"}.fa-caret-left:before{content:\"\"}.fa-caret-right:before{content:\"\"}.fa-caret-square-down:before{content:\"\"}.fa-caret-square-left:before{content:\"\"}.fa-caret-square-right:before{content:\"\"}.fa-caret-square-up:before{content:\"\"}.fa-caret-up:before{content:\"\"}.fa-cart-arrow-down:before{content:\"\"}.fa-cart-plus:before{content:\"\"}.fa-cat:before{content:\"\"}.fa-cc-amazon-pay:before{content:\"\"}.fa-cc-amex:before{content:\"\"}.fa-cc-apple-pay:before{content:\"\"}.fa-cc-diners-club:before{content:\"\"}.fa-cc-discover:before{content:\"\"}.fa-cc-jcb:before{content:\"\"}.fa-cc-mastercard:before{content:\"\"}.fa-cc-paypal:before{content:\"\"}.fa-cc-stripe:before{content:\"\"}.fa-cc-visa:before{content:\"\"}.fa-centercode:before{content:\"\"}.fa-certificate:before{content:\"\"}.fa-chair:before{content:\"\"}.fa-chalkboard:before{content:\"\"}.fa-chalkboard-teacher:before{content:\"\"}.fa-charging-station:before{content:\"\"}.fa-chart-area:before{content:\"\"}.fa-chart-bar:before{content:\"\"}.fa-chart-line:before{content:\"\"}.fa-chart-pie:before{content:\"\"}.fa-check:before{content:\"\"}.fa-check-circle:before{content:\"\"}.fa-check-double:before{content:\"\"}.fa-check-square:before{content:\"\"}.fa-chess:before{content:\"\"}.fa-chess-bishop:before{content:\"\"}.fa-chess-board:before{content:\"\"}.fa-chess-king:before{content:\"\"}.fa-chess-knight:before{content:\"\"}.fa-chess-pawn:before{content:\"\"}.fa-chess-queen:before{content:\"\"}.fa-chess-rook:before{content:\"\"}.fa-chevron-circle-down:before{content:\"\"}.fa-chevron-circle-left:before{content:\"\"}.fa-chevron-circle-right:before{content:\"\"}.fa-chevron-circle-up:before{content:\"\"}.fa-chevron-down:before{content:\"\"}.fa-chevron-left:before{content:\"\"}.fa-chevron-right:before{content:\"\"}.fa-chevron-up:before{content:\"\"}.fa-child:before{content:\"\"}.fa-chrome:before{content:\"\"}.fa-church:before{content:\"\"}.fa-circle:before{content:\"\"}.fa-circle-notch:before{content:\"\"}.fa-city:before{content:\"\"}.fa-clipboard:before{content:\"\"}.fa-clipboard-check:before{content:\"\"}.fa-clipboard-list:before{content:\"\"}.fa-clock:before{content:\"\"}.fa-clone:before{content:\"\"}.fa-closed-captioning:before{content:\"\"}.fa-cloud:before{content:\"\"}.fa-cloud-download-alt:before{content:\"\"}.fa-cloud-meatball:before{content:\"\"}.fa-cloud-moon:before{content:\"\"}.fa-cloud-moon-rain:before{content:\"\"}.fa-cloud-rain:before{content:\"\"}.fa-cloud-showers-heavy:before{content:\"\"}.fa-cloud-sun:before{content:\"\"}.fa-cloud-sun-rain:before{content:\"\"}.fa-cloud-upload-alt:before{content:\"\"}.fa-cloudscale:before{content:\"\"}.fa-cloudsmith:before{content:\"\"}.fa-cloudversify:before{content:\"\"}.fa-cocktail:before{content:\"\"}.fa-code:before{content:\"\"}.fa-code-branch:before{content:\"\"}.fa-codepen:before{content:\"\"}.fa-codiepie:before{content:\"\"}.fa-coffee:before{content:\"\"}.fa-cog:before{content:\"\"}.fa-cogs:before{content:\"\"}.fa-coins:before{content:\"\"}.fa-columns:before{content:\"\"}.fa-comment:before{content:\"\"}.fa-comment-alt:before{content:\"\"}.fa-comment-dollar:before{content:\"\"}.fa-comment-dots:before{content:\"\"}.fa-comment-slash:before{content:\"\"}.fa-comments:before{content:\"\"}.fa-comments-dollar:before{content:\"\"}.fa-compact-disc:before{content:\"\"}.fa-compass:before{content:\"\"}.fa-compress:before{content:\"\"}.fa-compress-arrows-alt:before{content:\"\"}.fa-concierge-bell:before{content:\"\"}.fa-connectdevelop:before{content:\"\"}.fa-contao:before{content:\"\"}.fa-cookie:before{content:\"\"}.fa-cookie-bite:before{content:\"\"}.fa-copy:before{content:\"\"}.fa-copyright:before{content:\"\"}.fa-couch:before{content:\"\"}.fa-cpanel:before{content:\"\"}.fa-creative-commons:before{content:\"\"}.fa-creative-commons-by:before{content:\"\"}.fa-creative-commons-nc:before{content:\"\"}.fa-creative-commons-nc-eu:before{content:\"\"}.fa-creative-commons-nc-jp:before{content:\"\"}.fa-creative-commons-nd:before{content:\"\"}.fa-creative-commons-pd:before{content:\"\"}.fa-creative-commons-pd-alt:before{content:\"\"}.fa-creative-commons-remix:before{content:\"\"}.fa-creative-commons-sa:before{content:\"\"}.fa-creative-commons-sampling:before{content:\"\"}.fa-creative-commons-sampling-plus:before{content:\"\"}.fa-creative-commons-share:before{content:\"\"}.fa-creative-commons-zero:before{content:\"\"}.fa-credit-card:before{content:\"\"}.fa-critical-role:before{content:\"\"}.fa-crop:before{content:\"\"}.fa-crop-alt:before{content:\"\"}.fa-cross:before{content:\"\"}.fa-crosshairs:before{content:\"\"}.fa-crow:before{content:\"\"}.fa-crown:before{content:\"\"}.fa-css3:before{content:\"\"}.fa-css3-alt:before{content:\"\"}.fa-cube:before{content:\"\"}.fa-cubes:before{content:\"\"}.fa-cut:before{content:\"\"}.fa-cuttlefish:before{content:\"\"}.fa-d-and-d:before{content:\"\"}.fa-d-and-d-beyond:before{content:\"\"}.fa-dashcube:before{content:\"\"}.fa-database:before{content:\"\"}.fa-deaf:before{content:\"\"}.fa-delicious:before{content:\"\"}.fa-democrat:before{content:\"\"}.fa-deploydog:before{content:\"\"}.fa-deskpro:before{content:\"\"}.fa-desktop:before{content:\"\"}.fa-dev:before{content:\"\"}.fa-deviantart:before{content:\"\"}.fa-dharmachakra:before{content:\"\"}.fa-diagnoses:before{content:\"\"}.fa-dice:before{content:\"\"}.fa-dice-d20:before{content:\"\"}.fa-dice-d6:before{content:\"\"}.fa-dice-five:before{content:\"\"}.fa-dice-four:before{content:\"\"}.fa-dice-one:before{content:\"\"}.fa-dice-six:before{content:\"\"}.fa-dice-three:before{content:\"\"}.fa-dice-two:before{content:\"\"}.fa-digg:before{content:\"\"}.fa-digital-ocean:before{content:\"\"}.fa-digital-tachograph:before{content:\"\"}.fa-directions:before{content:\"\"}.fa-discord:before{content:\"\"}.fa-discourse:before{content:\"\"}.fa-divide:before{content:\"\"}.fa-dizzy:before{content:\"\"}.fa-dna:before{content:\"\"}.fa-dochub:before{content:\"\"}.fa-docker:before{content:\"\"}.fa-dog:before{content:\"\"}.fa-dollar-sign:before{content:\"\"}.fa-dolly:before{content:\"\"}.fa-dolly-flatbed:before{content:\"\"}.fa-donate:before{content:\"\"}.fa-door-closed:before{content:\"\"}.fa-door-open:before{content:\"\"}.fa-dot-circle:before{content:\"\"}.fa-dove:before{content:\"\"}.fa-download:before{content:\"\"}.fa-draft2digital:before{content:\"\"}.fa-drafting-compass:before{content:\"\"}.fa-dragon:before{content:\"\"}.fa-draw-polygon:before{content:\"\"}.fa-dribbble:before{content:\"\"}.fa-dribbble-square:before{content:\"\"}.fa-dropbox:before{content:\"\"}.fa-drum:before{content:\"\"}.fa-drum-steelpan:before{content:\"\"}.fa-drumstick-bite:before{content:\"\"}.fa-drupal:before{content:\"\"}.fa-dumbbell:before{content:\"\"}.fa-dungeon:before{content:\"\"}.fa-dyalog:before{content:\"\"}.fa-earlybirds:before{content:\"\"}.fa-ebay:before{content:\"\"}.fa-edge:before{content:\"\"}.fa-edit:before{content:\"\"}.fa-eject:before{content:\"\"}.fa-elementor:before{content:\"\"}.fa-ellipsis-h:before{content:\"\"}.fa-ellipsis-v:before{content:\"\"}.fa-ello:before{content:\"\"}.fa-ember:before{content:\"\"}.fa-empire:before{content:\"\"}.fa-envelope:before{content:\"\"}.fa-envelope-open:before{content:\"\"}.fa-envelope-open-text:before{content:\"\"}.fa-envelope-square:before{content:\"\"}.fa-envira:before{content:\"\"}.fa-equals:before{content:\"\"}.fa-eraser:before{content:\"\"}.fa-erlang:before{content:\"\"}.fa-ethereum:before{content:\"\"}.fa-etsy:before{content:\"\"}.fa-euro-sign:before{content:\"\"}.fa-exchange-alt:before{content:\"\"}.fa-exclamation:before{content:\"\"}.fa-exclamation-circle:before{content:\"\"}.fa-exclamation-triangle:before{content:\"\"}.fa-expand:before{content:\"\"}.fa-expand-arrows-alt:before{content:\"\"}.fa-expeditedssl:before{content:\"\"}.fa-external-link-alt:before{content:\"\"}.fa-external-link-square-alt:before{content:\"\"}.fa-eye:before{content:\"\"}.fa-eye-dropper:before{content:\"\"}.fa-eye-slash:before{content:\"\"}.fa-facebook:before{content:\"\"}.fa-facebook-f:before{content:\"\"}.fa-facebook-messenger:before{content:\"\"}.fa-facebook-square:before{content:\"\"}.fa-fantasy-flight-games:before{content:\"\"}.fa-fast-backward:before{content:\"\"}.fa-fast-forward:before{content:\"\"}.fa-fax:before{content:\"\"}.fa-feather:before{content:\"\"}.fa-feather-alt:before{content:\"\"}.fa-female:before{content:\"\"}.fa-fighter-jet:before{content:\"\"}.fa-file:before{content:\"\"}.fa-file-alt:before{content:\"\"}.fa-file-archive:before{content:\"\"}.fa-file-audio:before{content:\"\"}.fa-file-code:before{content:\"\"}.fa-file-contract:before{content:\"\"}.fa-file-csv:before{content:\"\"}.fa-file-download:before{content:\"\"}.fa-file-excel:before{content:\"\"}.fa-file-export:before{content:\"\"}.fa-file-image:before{content:\"\"}.fa-file-import:before{content:\"\"}.fa-file-invoice:before{content:\"\"}.fa-file-invoice-dollar:before{content:\"\"}.fa-file-medical:before{content:\"\"}.fa-file-medical-alt:before{content:\"\"}.fa-file-pdf:before{content:\"\"}.fa-file-powerpoint:before{content:\"\"}.fa-file-prescription:before{content:\"\"}.fa-file-signature:before{content:\"\"}.fa-file-upload:before{content:\"\"}.fa-file-video:before{content:\"\"}.fa-file-word:before{content:\"\"}.fa-fill:before{content:\"\"}.fa-fill-drip:before{content:\"\"}.fa-film:before{content:\"\"}.fa-filter:before{content:\"\"}.fa-fingerprint:before{content:\"\"}.fa-fire:before{content:\"\"}.fa-fire-extinguisher:before{content:\"\"}.fa-firefox:before{content:\"\"}.fa-first-aid:before{content:\"\"}.fa-first-order:before{content:\"\"}.fa-first-order-alt:before{content:\"\"}.fa-firstdraft:before{content:\"\"}.fa-fish:before{content:\"\"}.fa-fist-raised:before{content:\"\"}.fa-flag:before{content:\"\"}.fa-flag-checkered:before{content:\"\"}.fa-flag-usa:before{content:\"\"}.fa-flask:before{content:\"\"}.fa-flickr:before{content:\"\"}.fa-flipboard:before{content:\"\"}.fa-flushed:before{content:\"\"}.fa-fly:before{content:\"\"}.fa-folder:before{content:\"\"}.fa-folder-minus:before{content:\"\"}.fa-folder-open:before{content:\"\"}.fa-folder-plus:before{content:\"\"}.fa-font:before{content:\"\"}.fa-font-awesome:before{content:\"\"}.fa-font-awesome-alt:before{content:\"\"}.fa-font-awesome-flag:before{content:\"\"}.fa-font-awesome-logo-full:before{content:\"\"}.fa-fonticons:before{content:\"\"}.fa-fonticons-fi:before{content:\"\"}.fa-football-ball:before{content:\"\"}.fa-fort-awesome:before{content:\"\"}.fa-fort-awesome-alt:before{content:\"\"}.fa-forumbee:before{content:\"\"}.fa-forward:before{content:\"\"}.fa-foursquare:before{content:\"\"}.fa-free-code-camp:before{content:\"\"}.fa-freebsd:before{content:\"\"}.fa-frog:before{content:\"\"}.fa-frown:before{content:\"\"}.fa-frown-open:before{content:\"\"}.fa-fulcrum:before{content:\"\"}.fa-funnel-dollar:before{content:\"\"}.fa-futbol:before{content:\"\"}.fa-galactic-republic:before{content:\"\"}.fa-galactic-senate:before{content:\"\"}.fa-gamepad:before{content:\"\"}.fa-gas-pump:before{content:\"\"}.fa-gavel:before{content:\"\"}.fa-gem:before{content:\"\"}.fa-genderless:before{content:\"\"}.fa-get-pocket:before{content:\"\"}.fa-gg:before{content:\"\"}.fa-gg-circle:before{content:\"\"}.fa-ghost:before{content:\"\"}.fa-gift:before{content:\"\"}.fa-git:before{content:\"\"}.fa-git-square:before{content:\"\"}.fa-github:before{content:\"\"}.fa-github-alt:before{content:\"\"}.fa-github-square:before{content:\"\"}.fa-gitkraken:before{content:\"\"}.fa-gitlab:before{content:\"\"}.fa-gitter:before{content:\"\"}.fa-glass-martini:before{content:\"\"}.fa-glass-martini-alt:before{content:\"\"}.fa-glasses:before{content:\"\"}.fa-glide:before{content:\"\"}.fa-glide-g:before{content:\"\"}.fa-globe:before{content:\"\"}.fa-globe-africa:before{content:\"\"}.fa-globe-americas:before{content:\"\"}.fa-globe-asia:before{content:\"\"}.fa-gofore:before{content:\"\"}.fa-golf-ball:before{content:\"\"}.fa-goodreads:before{content:\"\"}.fa-goodreads-g:before{content:\"\"}.fa-google:before{content:\"\"}.fa-google-drive:before{content:\"\"}.fa-google-play:before{content:\"\"}.fa-google-plus:before{content:\"\"}.fa-google-plus-g:before{content:\"\"}.fa-google-plus-square:before{content:\"\"}.fa-google-wallet:before{content:\"\"}.fa-gopuram:before{content:\"\"}.fa-graduation-cap:before{content:\"\"}.fa-gratipay:before{content:\"\"}.fa-grav:before{content:\"\"}.fa-greater-than:before{content:\"\"}.fa-greater-than-equal:before{content:\"\"}.fa-grimace:before{content:\"\"}.fa-grin:before{content:\"\"}.fa-grin-alt:before{content:\"\"}.fa-grin-beam:before{content:\"\"}.fa-grin-beam-sweat:before{content:\"\"}.fa-grin-hearts:before{content:\"\"}.fa-grin-squint:before{content:\"\"}.fa-grin-squint-tears:before{content:\"\"}.fa-grin-stars:before{content:\"\"}.fa-grin-tears:before{content:\"\"}.fa-grin-tongue:before{content:\"\"}.fa-grin-tongue-squint:before{content:\"\"}.fa-grin-tongue-wink:before{content:\"\"}.fa-grin-wink:before{content:\"\"}.fa-grip-horizontal:before{content:\"\"}.fa-grip-vertical:before{content:\"\"}.fa-gripfire:before{content:\"\"}.fa-grunt:before{content:\"\"}.fa-gulp:before{content:\"\"}.fa-h-square:before{content:\"\"}.fa-hacker-news:before{content:\"\"}.fa-hacker-news-square:before{content:\"\"}.fa-hackerrank:before{content:\"\"}.fa-hammer:before{content:\"\"}.fa-hamsa:before{content:\"\"}.fa-hand-holding:before{content:\"\"}.fa-hand-holding-heart:before{content:\"\"}.fa-hand-holding-usd:before{content:\"\"}.fa-hand-lizard:before{content:\"\"}.fa-hand-paper:before{content:\"\"}.fa-hand-peace:before{content:\"\"}.fa-hand-point-down:before{content:\"\"}.fa-hand-point-left:before{content:\"\"}.fa-hand-point-right:before{content:\"\"}.fa-hand-point-up:before{content:\"\"}.fa-hand-pointer:before{content:\"\"}.fa-hand-rock:before{content:\"\"}.fa-hand-scissors:before{content:\"\"}.fa-hand-spock:before{content:\"\"}.fa-hands:before{content:\"\"}.fa-hands-helping:before{content:\"\"}.fa-handshake:before{content:\"\"}.fa-hanukiah:before{content:\"\"}.fa-hashtag:before{content:\"\"}.fa-hat-wizard:before{content:\"\"}.fa-haykal:before{content:\"\"}.fa-hdd:before{content:\"\"}.fa-heading:before{content:\"\"}.fa-headphones:before{content:\"\"}.fa-headphones-alt:before{content:\"\"}.fa-headset:before{content:\"\"}.fa-heart:before{content:\"\"}.fa-heartbeat:before{content:\"\"}.fa-helicopter:before{content:\"\"}.fa-highlighter:before{content:\"\"}.fa-hiking:before{content:\"\"}.fa-hippo:before{content:\"\"}.fa-hips:before{content:\"\"}.fa-hire-a-helper:before{content:\"\"}.fa-history:before{content:\"\"}.fa-hockey-puck:before{content:\"\"}.fa-home:before{content:\"\"}.fa-hooli:before{content:\"\"}.fa-hornbill:before{content:\"\"}.fa-horse:before{content:\"\"}.fa-hospital:before{content:\"\"}.fa-hospital-alt:before{content:\"\"}.fa-hospital-symbol:before{content:\"\"}.fa-hot-tub:before{content:\"\"}.fa-hotel:before{content:\"\"}.fa-hotjar:before{content:\"\"}.fa-hourglass:before{content:\"\"}.fa-hourglass-end:before{content:\"\"}.fa-hourglass-half:before{content:\"\"}.fa-hourglass-start:before{content:\"\"}.fa-house-damage:before{content:\"\"}.fa-houzz:before{content:\"\"}.fa-hryvnia:before{content:\"\"}.fa-html5:before{content:\"\"}.fa-hubspot:before{content:\"\"}.fa-i-cursor:before{content:\"\"}.fa-id-badge:before{content:\"\"}.fa-id-card:before{content:\"\"}.fa-id-card-alt:before{content:\"\"}.fa-image:before{content:\"\"}.fa-images:before{content:\"\"}.fa-imdb:before{content:\"\"}.fa-inbox:before{content:\"\"}.fa-indent:before{content:\"\"}.fa-industry:before{content:\"\"}.fa-infinity:before{content:\"\"}.fa-info:before{content:\"\"}.fa-info-circle:before{content:\"\"}.fa-instagram:before{content:\"\"}.fa-internet-explorer:before{content:\"\"}.fa-ioxhost:before{content:\"\"}.fa-italic:before{content:\"\"}.fa-itunes:before{content:\"\"}.fa-itunes-note:before{content:\"\"}.fa-java:before{content:\"\"}.fa-jedi:before{content:\"\"}.fa-jedi-order:before{content:\"\"}.fa-jenkins:before{content:\"\"}.fa-joget:before{content:\"\"}.fa-joint:before{content:\"\"}.fa-joomla:before{content:\"\"}.fa-journal-whills:before{content:\"\"}.fa-js:before{content:\"\"}.fa-js-square:before{content:\"\"}.fa-jsfiddle:before{content:\"\"}.fa-kaaba:before{content:\"\"}.fa-kaggle:before{content:\"\"}.fa-key:before{content:\"\"}.fa-keybase:before{content:\"\"}.fa-keyboard:before{content:\"\"}.fa-keycdn:before{content:\"\"}.fa-khanda:before{content:\"\"}.fa-kickstarter:before{content:\"\"}.fa-kickstarter-k:before{content:\"\"}.fa-kiss:before{content:\"\"}.fa-kiss-beam:before{content:\"\"}.fa-kiss-wink-heart:before{content:\"\"}.fa-kiwi-bird:before{content:\"\"}.fa-korvue:before{content:\"\"}.fa-landmark:before{content:\"\"}.fa-language:before{content:\"\"}.fa-laptop:before{content:\"\"}.fa-laptop-code:before{content:\"\"}.fa-laravel:before{content:\"\"}.fa-lastfm:before{content:\"\"}.fa-lastfm-square:before{content:\"\"}.fa-laugh:before{content:\"\"}.fa-laugh-beam:before{content:\"\"}.fa-laugh-squint:before{content:\"\"}.fa-laugh-wink:before{content:\"\"}.fa-layer-group:before{content:\"\"}.fa-leaf:before{content:\"\"}.fa-leanpub:before{content:\"\"}.fa-lemon:before{content:\"\"}.fa-less:before{content:\"\"}.fa-less-than:before{content:\"\"}.fa-less-than-equal:before{content:\"\"}.fa-level-down-alt:before{content:\"\"}.fa-level-up-alt:before{content:\"\"}.fa-life-ring:before{content:\"\"}.fa-lightbulb:before{content:\"\"}.fa-line:before{content:\"\"}.fa-link:before{content:\"\"}.fa-linkedin:before{content:\"\"}.fa-linkedin-in:before{content:\"\"}.fa-linode:before{content:\"\"}.fa-linux:before{content:\"\"}.fa-lira-sign:before{content:\"\"}.fa-list:before{content:\"\"}.fa-list-alt:before{content:\"\"}.fa-list-ol:before{content:\"\"}.fa-list-ul:before{content:\"\"}.fa-location-arrow:before{content:\"\"}.fa-lock:before{content:\"\"}.fa-lock-open:before{content:\"\"}.fa-long-arrow-alt-down:before{content:\"\"}.fa-long-arrow-alt-left:before{content:\"\"}.fa-long-arrow-alt-right:before{content:\"\"}.fa-long-arrow-alt-up:before{content:\"\"}.fa-low-vision:before{content:\"\"}.fa-luggage-cart:before{content:\"\"}.fa-lyft:before{content:\"\"}.fa-magento:before{content:\"\"}.fa-magic:before{content:\"\"}.fa-magnet:before{content:\"\"}.fa-mail-bulk:before{content:\"\"}.fa-mailchimp:before{content:\"\"}.fa-male:before{content:\"\"}.fa-mandalorian:before{content:\"\"}.fa-map:before{content:\"\"}.fa-map-marked:before{content:\"\"}.fa-map-marked-alt:before{content:\"\"}.fa-map-marker:before{content:\"\"}.fa-map-marker-alt:before{content:\"\"}.fa-map-pin:before{content:\"\"}.fa-map-signs:before{content:\"\"}.fa-markdown:before{content:\"\"}.fa-marker:before{content:\"\"}.fa-mars:before{content:\"\"}.fa-mars-double:before{content:\"\"}.fa-mars-stroke:before{content:\"\"}.fa-mars-stroke-h:before{content:\"\"}.fa-mars-stroke-v:before{content:\"\"}.fa-mask:before{content:\"\"}.fa-mastodon:before{content:\"\"}.fa-maxcdn:before{content:\"\"}.fa-medal:before{content:\"\"}.fa-medapps:before{content:\"\"}.fa-medium:before{content:\"\"}.fa-medium-m:before{content:\"\"}.fa-medkit:before{content:\"\"}.fa-medrt:before{content:\"\"}.fa-meetup:before{content:\"\"}.fa-megaport:before{content:\"\"}.fa-meh:before{content:\"\"}.fa-meh-blank:before{content:\"\"}.fa-meh-rolling-eyes:before{content:\"\"}.fa-memory:before{content:\"\"}.fa-menorah:before{content:\"\"}.fa-mercury:before{content:\"\"}.fa-meteor:before{content:\"\"}.fa-microchip:before{content:\"\"}.fa-microphone:before{content:\"\"}.fa-microphone-alt:before{content:\"\"}.fa-microphone-alt-slash:before{content:\"\"}.fa-microphone-slash:before{content:\"\"}.fa-microscope:before{content:\"\"}.fa-microsoft:before{content:\"\"}.fa-minus:before{content:\"\"}.fa-minus-circle:before{content:\"\"}.fa-minus-square:before{content:\"\"}.fa-mix:before{content:\"\"}.fa-mixcloud:before{content:\"\"}.fa-mizuni:before{content:\"\"}.fa-mobile:before{content:\"\"}.fa-mobile-alt:before{content:\"\"}.fa-modx:before{content:\"\"}.fa-monero:before{content:\"\"}.fa-money-bill:before{content:\"\"}.fa-money-bill-alt:before{content:\"\"}.fa-money-bill-wave:before{content:\"\"}.fa-money-bill-wave-alt:before{content:\"\"}.fa-money-check:before{content:\"\"}.fa-money-check-alt:before{content:\"\"}.fa-monument:before{content:\"\"}.fa-moon:before{content:\"\"}.fa-mortar-pestle:before{content:\"\"}.fa-mosque:before{content:\"\"}.fa-motorcycle:before{content:\"\"}.fa-mountain:before{content:\"\"}.fa-mouse-pointer:before{content:\"\"}.fa-music:before{content:\"\"}.fa-napster:before{content:\"\"}.fa-neos:before{content:\"\"}.fa-network-wired:before{content:\"\"}.fa-neuter:before{content:\"\"}.fa-newspaper:before{content:\"\"}.fa-nimblr:before{content:\"\"}.fa-nintendo-switch:before{content:\"\"}.fa-node:before{content:\"\"}.fa-node-js:before{content:\"\"}.fa-not-equal:before{content:\"\"}.fa-notes-medical:before{content:\"\"}.fa-npm:before{content:\"\"}.fa-ns8:before{content:\"\"}.fa-nutritionix:before{content:\"\"}.fa-object-group:before{content:\"\"}.fa-object-ungroup:before{content:\"\"}.fa-odnoklassniki:before{content:\"\"}.fa-odnoklassniki-square:before{content:\"\"}.fa-oil-can:before{content:\"\"}.fa-old-republic:before{content:\"\"}.fa-om:before{content:\"\"}.fa-opencart:before{content:\"\"}.fa-openid:before{content:\"\"}.fa-opera:before{content:\"\"}.fa-optin-monster:before{content:\"\"}.fa-osi:before{content:\"\"}.fa-otter:before{content:\"\"}.fa-outdent:before{content:\"\"}.fa-page4:before{content:\"\"}.fa-pagelines:before{content:\"\"}.fa-paint-brush:before{content:\"\"}.fa-paint-roller:before{content:\"\"}.fa-palette:before{content:\"\"}.fa-palfed:before{content:\"\"}.fa-pallet:before{content:\"\"}.fa-paper-plane:before{content:\"\"}.fa-paperclip:before{content:\"\"}.fa-parachute-box:before{content:\"\"}.fa-paragraph:before{content:\"\"}.fa-parking:before{content:\"\"}.fa-passport:before{content:\"\"}.fa-pastafarianism:before{content:\"\"}.fa-paste:before{content:\"\"}.fa-patreon:before{content:\"\"}.fa-pause:before{content:\"\"}.fa-pause-circle:before{content:\"\"}.fa-paw:before{content:\"\"}.fa-paypal:before{content:\"\"}.fa-peace:before{content:\"\"}.fa-pen:before{content:\"\"}.fa-pen-alt:before{content:\"\"}.fa-pen-fancy:before{content:\"\"}.fa-pen-nib:before{content:\"\"}.fa-pen-square:before{content:\"\"}.fa-pencil-alt:before{content:\"\"}.fa-pencil-ruler:before{content:\"\"}.fa-penny-arcade:before{content:\"\"}.fa-people-carry:before{content:\"\"}.fa-percent:before{content:\"\"}.fa-percentage:before{content:\"\"}.fa-periscope:before{content:\"\"}.fa-person-booth:before{content:\"\"}.fa-phabricator:before{content:\"\"}.fa-phoenix-framework:before{content:\"\"}.fa-phoenix-squadron:before{content:\"\"}.fa-phone:before{content:\"\"}.fa-phone-slash:before{content:\"\"}.fa-phone-square:before{content:\"\"}.fa-phone-volume:before{content:\"\"}.fa-php:before{content:\"\"}.fa-pied-piper:before{content:\"\"}.fa-pied-piper-alt:before{content:\"\"}.fa-pied-piper-hat:before{content:\"\"}.fa-pied-piper-pp:before{content:\"\"}.fa-piggy-bank:before{content:\"\"}.fa-pills:before{content:\"\"}.fa-pinterest:before{content:\"\"}.fa-pinterest-p:before{content:\"\"}.fa-pinterest-square:before{content:\"\"}.fa-place-of-worship:before{content:\"\"}.fa-plane:before{content:\"\"}.fa-plane-arrival:before{content:\"\"}.fa-plane-departure:before{content:\"\"}.fa-play:before{content:\"\"}.fa-play-circle:before{content:\"\"}.fa-playstation:before{content:\"\"}.fa-plug:before{content:\"\"}.fa-plus:before{content:\"\"}.fa-plus-circle:before{content:\"\"}.fa-plus-square:before{content:\"\"}.fa-podcast:before{content:\"\"}.fa-poll:before{content:\"\"}.fa-poll-h:before{content:\"\"}.fa-poo:before{content:\"\"}.fa-poo-storm:before{content:\"\"}.fa-poop:before{content:\"\"}.fa-portrait:before{content:\"\"}.fa-pound-sign:before{content:\"\"}.fa-power-off:before{content:\"\"}.fa-pray:before{content:\"\"}.fa-praying-hands:before{content:\"\"}.fa-prescription:before{content:\"\"}.fa-prescription-bottle:before{content:\"\"}.fa-prescription-bottle-alt:before{content:\"\"}.fa-print:before{content:\"\"}.fa-procedures:before{content:\"\"}.fa-product-hunt:before{content:\"\"}.fa-project-diagram:before{content:\"\"}.fa-pushed:before{content:\"\"}.fa-puzzle-piece:before{content:\"\"}.fa-python:before{content:\"\"}.fa-qq:before{content:\"\"}.fa-qrcode:before{content:\"\"}.fa-question:before{content:\"\"}.fa-question-circle:before{content:\"\"}.fa-quidditch:before{content:\"\"}.fa-quinscape:before{content:\"\"}.fa-quora:before{content:\"\"}.fa-quote-left:before{content:\"\"}.fa-quote-right:before{content:\"\"}.fa-quran:before{content:\"\"}.fa-r-project:before{content:\"\"}.fa-rainbow:before{content:\"\"}.fa-random:before{content:\"\"}.fa-ravelry:before{content:\"\"}.fa-react:before{content:\"\"}.fa-reacteurope:before{content:\"\"}.fa-readme:before{content:\"\"}.fa-rebel:before{content:\"\"}.fa-receipt:before{content:\"\"}.fa-recycle:before{content:\"\"}.fa-red-river:before{content:\"\"}.fa-reddit:before{content:\"\"}.fa-reddit-alien:before{content:\"\"}.fa-reddit-square:before{content:\"\"}.fa-redo:before{content:\"\"}.fa-redo-alt:before{content:\"\"}.fa-registered:before{content:\"\"}.fa-renren:before{content:\"\"}.fa-reply:before{content:\"\"}.fa-reply-all:before{content:\"\"}.fa-replyd:before{content:\"\"}.fa-republican:before{content:\"\"}.fa-researchgate:before{content:\"\"}.fa-resolving:before{content:\"\"}.fa-retweet:before{content:\"\"}.fa-rev:before{content:\"\"}.fa-ribbon:before{content:\"\"}.fa-ring:before{content:\"\"}.fa-road:before{content:\"\"}.fa-robot:before{content:\"\"}.fa-rocket:before{content:\"\"}.fa-rocketchat:before{content:\"\"}.fa-rockrms:before{content:\"\"}.fa-route:before{content:\"\"}.fa-rss:before{content:\"\"}.fa-rss-square:before{content:\"\"}.fa-ruble-sign:before{content:\"\"}.fa-ruler:before{content:\"\"}.fa-ruler-combined:before{content:\"\"}.fa-ruler-horizontal:before{content:\"\"}.fa-ruler-vertical:before{content:\"\"}.fa-running:before{content:\"\"}.fa-rupee-sign:before{content:\"\"}.fa-sad-cry:before{content:\"\"}.fa-sad-tear:before{content:\"\"}.fa-safari:before{content:\"\"}.fa-sass:before{content:\"\"}.fa-save:before{content:\"\"}.fa-schlix:before{content:\"\"}.fa-school:before{content:\"\"}.fa-screwdriver:before{content:\"\"}.fa-scribd:before{content:\"\"}.fa-scroll:before{content:\"\"}.fa-search:before{content:\"\"}.fa-search-dollar:before{content:\"\"}.fa-search-location:before{content:\"\"}.fa-search-minus:before{content:\"\"}.fa-search-plus:before{content:\"\"}.fa-searchengin:before{content:\"\"}.fa-seedling:before{content:\"\"}.fa-sellcast:before{content:\"\"}.fa-sellsy:before{content:\"\"}.fa-server:before{content:\"\"}.fa-servicestack:before{content:\"\"}.fa-shapes:before{content:\"\"}.fa-share:before{content:\"\"}.fa-share-alt:before{content:\"\"}.fa-share-alt-square:before{content:\"\"}.fa-share-square:before{content:\"\"}.fa-shekel-sign:before{content:\"\"}.fa-shield-alt:before{content:\"\"}.fa-ship:before{content:\"\"}.fa-shipping-fast:before{content:\"\"}.fa-shirtsinbulk:before{content:\"\"}.fa-shoe-prints:before{content:\"\"}.fa-shopping-bag:before{content:\"\"}.fa-shopping-basket:before{content:\"\"}.fa-shopping-cart:before{content:\"\"}.fa-shopware:before{content:\"\"}.fa-shower:before{content:\"\"}.fa-shuttle-van:before{content:\"\"}.fa-sign:before{content:\"\"}.fa-sign-in-alt:before{content:\"\"}.fa-sign-language:before{content:\"\"}.fa-sign-out-alt:before{content:\"\"}.fa-signal:before{content:\"\"}.fa-signature:before{content:\"\"}.fa-simplybuilt:before{content:\"\"}.fa-sistrix:before{content:\"\"}.fa-sitemap:before{content:\"\"}.fa-sith:before{content:\"\"}.fa-skull:before{content:\"\"}.fa-skull-crossbones:before{content:\"\"}.fa-skyatlas:before{content:\"\"}.fa-skype:before{content:\"\"}.fa-slack:before{content:\"\"}.fa-slack-hash:before{content:\"\"}.fa-slash:before{content:\"\"}.fa-sliders-h:before{content:\"\"}.fa-slideshare:before{content:\"\"}.fa-smile:before{content:\"\"}.fa-smile-beam:before{content:\"\"}.fa-smile-wink:before{content:\"\"}.fa-smog:before{content:\"\"}.fa-smoking:before{content:\"\"}.fa-smoking-ban:before{content:\"\"}.fa-snapchat:before{content:\"\"}.fa-snapchat-ghost:before{content:\"\"}.fa-snapchat-square:before{content:\"\"}.fa-snowflake:before{content:\"\"}.fa-socks:before{content:\"\"}.fa-solar-panel:before{content:\"\"}.fa-sort:before{content:\"\"}.fa-sort-alpha-down:before{content:\"\"}.fa-sort-alpha-up:before{content:\"\"}.fa-sort-amount-down:before{content:\"\"}.fa-sort-amount-up:before{content:\"\"}.fa-sort-down:before{content:\"\"}.fa-sort-numeric-down:before{content:\"\"}.fa-sort-numeric-up:before{content:\"\"}.fa-sort-up:before{content:\"\"}.fa-soundcloud:before{content:\"\"}.fa-spa:before{content:\"\"}.fa-space-shuttle:before{content:\"\"}.fa-speakap:before{content:\"\"}.fa-spider:before{content:\"\"}.fa-spinner:before{content:\"\"}.fa-splotch:before{content:\"\"}.fa-spotify:before{content:\"\"}.fa-spray-can:before{content:\"\"}.fa-square:before{content:\"\"}.fa-square-full:before{content:\"\"}.fa-square-root-alt:before{content:\"\"}.fa-squarespace:before{content:\"\"}.fa-stack-exchange:before{content:\"\"}.fa-stack-overflow:before{content:\"\"}.fa-stamp:before{content:\"\"}.fa-star:before{content:\"\"}.fa-star-and-crescent:before{content:\"\"}.fa-star-half:before{content:\"\"}.fa-star-half-alt:before{content:\"\"}.fa-star-of-david:before{content:\"\"}.fa-star-of-life:before{content:\"\"}.fa-staylinked:before{content:\"\"}.fa-steam:before{content:\"\"}.fa-steam-square:before{content:\"\"}.fa-steam-symbol:before{content:\"\"}.fa-step-backward:before{content:\"\"}.fa-step-forward:before{content:\"\"}.fa-stethoscope:before{content:\"\"}.fa-sticker-mule:before{content:\"\"}.fa-sticky-note:before{content:\"\"}.fa-stop:before{content:\"\"}.fa-stop-circle:before{content:\"\"}.fa-stopwatch:before{content:\"\"}.fa-store:before{content:\"\"}.fa-store-alt:before{content:\"\"}.fa-strava:before{content:\"\"}.fa-stream:before{content:\"\"}.fa-street-view:before{content:\"\"}.fa-strikethrough:before{content:\"\"}.fa-stripe:before{content:\"\"}.fa-stripe-s:before{content:\"\"}.fa-stroopwafel:before{content:\"\"}.fa-studiovinari:before{content:\"\"}.fa-stumbleupon:before{content:\"\"}.fa-stumbleupon-circle:before{content:\"\"}.fa-subscript:before{content:\"\"}.fa-subway:before{content:\"\"}.fa-suitcase:before{content:\"\"}.fa-suitcase-rolling:before{content:\"\"}.fa-sun:before{content:\"\"}.fa-superpowers:before{content:\"\"}.fa-superscript:before{content:\"\"}.fa-supple:before{content:\"\"}.fa-surprise:before{content:\"\"}.fa-swatchbook:before{content:\"\"}.fa-swimmer:before{content:\"\"}.fa-swimming-pool:before{content:\"\"}.fa-synagogue:before{content:\"\"}.fa-sync:before{content:\"\"}.fa-sync-alt:before{content:\"\"}.fa-syringe:before{content:\"\"}.fa-table:before{content:\"\"}.fa-table-tennis:before{content:\"\"}.fa-tablet:before{content:\"\"}.fa-tablet-alt:before{content:\"\"}.fa-tablets:before{content:\"\"}.fa-tachometer-alt:before{content:\"\"}.fa-tag:before{content:\"\"}.fa-tags:before{content:\"\"}.fa-tape:before{content:\"\"}.fa-tasks:before{content:\"\"}.fa-taxi:before{content:\"\"}.fa-teamspeak:before{content:\"\"}.fa-teeth:before{content:\"\"}.fa-teeth-open:before{content:\"\"}.fa-telegram:before{content:\"\"}.fa-telegram-plane:before{content:\"\"}.fa-temperature-high:before{content:\"\"}.fa-temperature-low:before{content:\"\"}.fa-tencent-weibo:before{content:\"\"}.fa-terminal:before{content:\"\"}.fa-text-height:before{content:\"\"}.fa-text-width:before{content:\"\"}.fa-th:before{content:\"\"}.fa-th-large:before{content:\"\"}.fa-th-list:before{content:\"\"}.fa-the-red-yeti:before{content:\"\"}.fa-theater-masks:before{content:\"\"}.fa-themeco:before{content:\"\"}.fa-themeisle:before{content:\"\"}.fa-thermometer:before{content:\"\"}.fa-thermometer-empty:before{content:\"\"}.fa-thermometer-full:before{content:\"\"}.fa-thermometer-half:before{content:\"\"}.fa-thermometer-quarter:before{content:\"\"}.fa-thermometer-three-quarters:before{content:\"\"}.fa-think-peaks:before{content:\"\"}.fa-thumbs-down:before{content:\"\"}.fa-thumbs-up:before{content:\"\"}.fa-thumbtack:before{content:\"\"}.fa-ticket-alt:before{content:\"\"}.fa-times:before{content:\"\"}.fa-times-circle:before{content:\"\"}.fa-tint:before{content:\"\"}.fa-tint-slash:before{content:\"\"}.fa-tired:before{content:\"\"}.fa-toggle-off:before{content:\"\"}.fa-toggle-on:before{content:\"\"}.fa-toilet-paper:before{content:\"\"}.fa-toolbox:before{content:\"\"}.fa-tooth:before{content:\"\"}.fa-torah:before{content:\"\"}.fa-torii-gate:before{content:\"\"}.fa-tractor:before{content:\"\"}.fa-trade-federation:before{content:\"\"}.fa-trademark:before{content:\"\"}.fa-traffic-light:before{content:\"\"}.fa-train:before{content:\"\"}.fa-transgender:before{content:\"\"}.fa-transgender-alt:before{content:\"\"}.fa-trash:before{content:\"\"}.fa-trash-alt:before{content:\"\"}.fa-tree:before{content:\"\"}.fa-trello:before{content:\"\"}.fa-tripadvisor:before{content:\"\"}.fa-trophy:before{content:\"\"}.fa-truck:before{content:\"\"}.fa-truck-loading:before{content:\"\"}.fa-truck-monster:before{content:\"\"}.fa-truck-moving:before{content:\"\"}.fa-truck-pickup:before{content:\"\"}.fa-tshirt:before{content:\"\"}.fa-tty:before{content:\"\"}.fa-tumblr:before{content:\"\"}.fa-tumblr-square:before{content:\"\"}.fa-tv:before{content:\"\"}.fa-twitch:before{content:\"\"}.fa-twitter:before{content:\"\"}.fa-twitter-square:before{content:\"\"}.fa-typo3:before{content:\"\"}.fa-uber:before{content:\"\"}.fa-uikit:before{content:\"\"}.fa-umbrella:before{content:\"\"}.fa-umbrella-beach:before{content:\"\"}.fa-underline:before{content:\"\"}.fa-undo:before{content:\"\"}.fa-undo-alt:before{content:\"\"}.fa-uniregistry:before{content:\"\"}.fa-universal-access:before{content:\"\"}.fa-university:before{content:\"\"}.fa-unlink:before{content:\"\"}.fa-unlock:before{content:\"\"}.fa-unlock-alt:before{content:\"\"}.fa-untappd:before{content:\"\"}.fa-upload:before{content:\"\"}.fa-usb:before{content:\"\"}.fa-user:before{content:\"\"}.fa-user-alt:before{content:\"\"}.fa-user-alt-slash:before{content:\"\"}.fa-user-astronaut:before{content:\"\"}.fa-user-check:before{content:\"\"}.fa-user-circle:before{content:\"\"}.fa-user-clock:before{content:\"\"}.fa-user-cog:before{content:\"\"}.fa-user-edit:before{content:\"\"}.fa-user-friends:before{content:\"\"}.fa-user-graduate:before{content:\"\"}.fa-user-injured:before{content:\"\"}.fa-user-lock:before{content:\"\"}.fa-user-md:before{content:\"\"}.fa-user-minus:before{content:\"\"}.fa-user-ninja:before{content:\"\"}.fa-user-plus:before{content:\"\"}.fa-user-secret:before{content:\"\"}.fa-user-shield:before{content:\"\"}.fa-user-slash:before{content:\"\"}.fa-user-tag:before{content:\"\"}.fa-user-tie:before{content:\"\"}.fa-user-times:before{content:\"\"}.fa-users:before{content:\"\"}.fa-users-cog:before{content:\"\"}.fa-ussunnah:before{content:\"\"}.fa-utensil-spoon:before{content:\"\"}.fa-utensils:before{content:\"\"}.fa-vaadin:before{content:\"\"}.fa-vector-square:before{content:\"\"}.fa-venus:before{content:\"\"}.fa-venus-double:before{content:\"\"}.fa-venus-mars:before{content:\"\"}.fa-viacoin:before{content:\"\"}.fa-viadeo:before{content:\"\"}.fa-viadeo-square:before{content:\"\"}.fa-vial:before{content:\"\"}.fa-vials:before{content:\"\"}.fa-viber:before{content:\"\"}.fa-video:before{content:\"\"}.fa-video-slash:before{content:\"\"}.fa-vihara:before{content:\"\"}.fa-vimeo:before{content:\"\"}.fa-vimeo-square:before{content:\"\"}.fa-vimeo-v:before{content:\"\"}.fa-vine:before{content:\"\"}.fa-vk:before{content:\"\"}.fa-vnv:before{content:\"\"}.fa-volleyball-ball:before{content:\"\"}.fa-volume-down:before{content:\"\"}.fa-volume-mute:before{content:\"\"}.fa-volume-off:before{content:\"\"}.fa-volume-up:before{content:\"\"}.fa-vote-yea:before{content:\"\"}.fa-vr-cardboard:before{content:\"\"}.fa-vuejs:before{content:\"\"}.fa-walking:before{content:\"\"}.fa-wallet:before{content:\"\"}.fa-warehouse:before{content:\"\"}.fa-water:before{content:\"\"}.fa-weebly:before{content:\"\"}.fa-weibo:before{content:\"\"}.fa-weight:before{content:\"\"}.fa-weight-hanging:before{content:\"\"}.fa-weixin:before{content:\"\"}.fa-whatsapp:before{content:\"\"}.fa-whatsapp-square:before{content:\"\"}.fa-wheelchair:before{content:\"\"}.fa-whmcs:before{content:\"\"}.fa-wifi:before{content:\"\"}.fa-wikipedia-w:before{content:\"\"}.fa-wind:before{content:\"\"}.fa-window-close:before{content:\"\"}.fa-window-maximize:before{content:\"\"}.fa-window-minimize:before{content:\"\"}.fa-window-restore:before{content:\"\"}.fa-windows:before{content:\"\"}.fa-wine-bottle:before{content:\"\"}.fa-wine-glass:before{content:\"\"}.fa-wine-glass-alt:before{content:\"\"}.fa-wix:before{content:\"\"}.fa-wizards-of-the-coast:before{content:\"\"}.fa-wolf-pack-battalion:before{content:\"\"}.fa-won-sign:before{content:\"\"}.fa-wordpress:before{content:\"\"}.fa-wordpress-simple:before{content:\"\"}.fa-wpbeginner:before{content:\"\"}.fa-wpexplorer:before{content:\"\"}.fa-wpforms:before{content:\"\"}.fa-wpressr:before{content:\"\"}.fa-wrench:before{content:\"\"}.fa-x-ray:before{content:\"\"}.fa-xbox:before{content:\"\"}.fa-xing:before{content:\"\"}.fa-xing-square:before{content:\"\"}.fa-y-combinator:before{content:\"\"}.fa-yahoo:before{content:\"\"}.fa-yandex:before{content:\"\"}.fa-yandex-international:before{content:\"\"}.fa-yelp:before{content:\"\"}.fa-yen-sign:before{content:\"\"}.fa-yin-yang:before{content:\"\"}.fa-yoast:before{content:\"\"}.fa-youtube:before{content:\"\"}.fa-youtube-square:before{content:\"\"}.fa-zhihu:before{content:\"\"}.sr-only{border:0;clip:rect(0, 0, 0, 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.sr-only-focusable:active,.sr-only-focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}@font-face{font-family:\"Font Awesome 5 Brands\";font-style:normal;font-weight:normal;src:url(\"../fonts/fa-brands-400.eot\");src:url(\"../fonts/fa-brands-400.eot?#iefix\") format(\"embedded-opentype\"),url(\"../fonts/fa-brands-400.woff2\") format(\"woff2\"),url(\"../fonts/fa-brands-400.woff\") format(\"woff\"),url(\"../fonts/fa-brands-400.ttf\") format(\"truetype\"),url(\"../fonts/fa-brands-400.svg#fontawesome\") format(\"svg\")}.fab{font-family:\"Font Awesome 5 Brands\"}@font-face{font-family:\"Font Awesome 5 Free\";font-style:normal;font-weight:400;src:url(\"../fonts/fa-regular-400.eot\");src:url(\"../fonts/fa-regular-400.eot?#iefix\") format(\"embedded-opentype\"),url(\"../fonts/fa-regular-400.woff2\") format(\"woff2\"),url(\"../fonts/fa-regular-400.woff\") format(\"woff\"),url(\"../fonts/fa-regular-400.ttf\") format(\"truetype\"),url(\"../fonts/fa-regular-400.svg#fontawesome\") format(\"svg\")}.far{font-family:\"Font Awesome 5 Free\";font-weight:400}@font-face{font-family:\"Font Awesome 5 Free\";font-style:normal;font-weight:900;src:url(\"../fonts/fa-solid-900.eot\");src:url(\"../fonts/fa-solid-900.eot?#iefix\") format(\"embedded-opentype\"),url(\"../fonts/fa-solid-900.woff2\") format(\"woff2\"),url(\"../fonts/fa-solid-900.woff\") format(\"woff\"),url(\"../fonts/fa-solid-900.ttf\") format(\"truetype\"),url(\"../fonts/fa-solid-900.svg#fontawesome\") format(\"svg\")}.fa,.fas{font-family:\"Font Awesome 5 Free\";font-weight:900}.tykon:before{font-family:\"tykon\" !important;font-style:normal !important;font-weight:normal !important;font-variant:normal !important;text-transform:none !important;speak:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.tykon-arrowdown:before{content:\"a\"}.tykon-arrowleft:before{content:\"b\"}.tykon-arrowright:before{content:\"c\"}.tykon-arrowup:before{content:\"d\"}.tykon-doublearrowdown:before{content:\"e\"}.tykon-filter:before{content:\"f\"}.tykon-graph1:before{content:\"g\"}.tykon-graph2:before{content:\"h\"}.tykon-label:before{content:\"i\"}.tykon-reload:before{content:\"j\"}.tykon-select:before{content:\"k\"}.tykon-target:before{content:\"l\"}.tykon-undo:before{content:\"m\"}.tykon-deployment:before{content:\"n\"}.tykon-team:before{content:\"o\"}.tykon-overview:before{content:\"p\"}.tykon-loadout:before{content:\"q\"}.tykon-entitlement:before{content:\"r\"}.tykon-users:before{content:\"s\"}.tykon-doublearrowdown:before{content:\"e\"}.tykon-arrowsort:before{content:\"W\"}.tykon-check:before{content:\"V\"}.tykon-copy:before{content:\"C\"}.tykon-delete:before{content:\"U\"}.tykon-download:before{content:\"L\"}.tykon-draft:before{content:\"D\"}.tykon-edit:before{content:\"E\"}.tykon-filter:before{content:\"f\"}.tykon-graphq2:before{content:\"h\"}.tykon-help:before{content:\"?\"}.tykon-label:before{content:\"i\"}.tykon-link:before{content:\"R\"}.tykon-lock1:before{content:\"Y\"}.tykon-lock2:before{content:\"Z\"}.tykon-notifications:before{content:\"N\"}.tykon-plus:before{content:\"+\"}.tykon-profile:before{content:\"P\"}.tykon-reload:before{content:\"j\"}.tykon-search:before{content:\"O\"}.tykon-select:before{content:\"k\"}.tykon-settings:before{content:\"S\"}.tykon-target:before{content:\"l\"}.tykon-undo:before{content:\"m\"}.tykon-warning:before{content:\"!\"}.tykon-x:before{content:\"X\"}.tykon-waiting:before{content:\"T\"}.tykon-fullscreen:before{content:\"\"}.tykon-fullscreen-exit:before{content:\"\"}.tykon-time:before{content:\"t\"}h1,h2,h3,h4,h5,h6{margin-bottom:15px;font-family:\"smoolthan_medium\";font-weight:500;color:#36364c}label{display:inline-block;max-width:100%;margin-bottom:5px;color:#36364c}h1{font-size:25px;line-height:30px}h2{font-size:20px;line-height:24px}h3{font-size:17px;line-height:23px}h4{font-size:16px;line-height:22px}h5{font-size:14px;line-height:19px}h6{font-size:12px;line-height:16px}p,label{font-size:14px;line-height:19px;font-family:\"OpenSans-regular\"}strong{font-family:\"OpenSans-Bold\"}a:not(.tyk-button){cursor:pointer;color:#505071;font-family:\"OpenSans-regular\"}a:not(.tyk-button).link--bold{font-family:\"OpenSans-Bold\"}a:not(.tyk-button)+a{margin-left:5px}a:not(.tyk-button) i{font-size:9px}p a,label a{font-size:14px;text-decoration:underline}.font-family-regular{font-family:\"OpenSans-regular\"}.font-family-medium{font-family:\"OpenSans-SemiBold\"}.font-family-bold{font-family:\"OpenSans-Bold\"}.heading-font-family-regular{font-family:\"smoolthan_regular\"}.heading-font-family-medium{font-family:\"smoolthan_medium\"}.heading-font-family-bold{font-family:\"smoolthan_bold\"}.text--primary{color:#a2a2cc}.text--danger{color:#ff6c7d}.text--info{color:#82bbc6}.text-warning{color:#d6b218}.text--medium{font-family:\"OpenSans-SemiBold\"}.text--bold{font-family:\"OpenSans-Bold\"}.text--uppercase{text-transform:uppercase}.text--ellipsis{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.text--underline{text-decoration:underline}td.text-ellipsis{max-width:250px}.section-title{font-family:\"smoolthan_bold\";margin-bottom:5px}.section-title .tyk-icon{margin-left:5px}.sub-section-title{margin-bottom:5px;font-family:\"OpenSans-SemiBold\";font-size:16px;line-height:22px}.sub-section-title .tyk-icon{margin-left:5px}.section-group-title{margin-bottom:5px;font-family:\"OpenSans-Bold\";font-size:14px;line-height:19px;text-transform:uppercase}.section-group-title .tyk-icon{margin-left:5px}.text--default-light{color:#c3c3e5 !important}.text--default{color:#36364c !important}.text--primary{color:#a2a2cc !important}.text--danger{color:#ff6c7d !important}.text--success{color:#00d9ba !important}.text--warning{color:#d6b218 !important}.tyk-form-section__title{font-size:16px;margin:5px 0 15px 0}.tyk-form-section__title--light{color:#43435b}.tyk-form-group{margin-bottom:15px}.tyk-form-group.has-error>.tyk-form-control__wrapper>.tyk-form-control,.tyk-form-group.has-error>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control,.tyk-form-group.has-error .tyk-file-input__wrapper>.tyk-form-control{border:2px solid #ff6c7d;border-left:2px solid #ea4766;outline:none}.tyk-form-group.has-error>.tyk-form-control__wrapper>.tyk-form-control:focus,.tyk-form-group.has-error>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control:focus,.tyk-form-group.has-error .tyk-file-input__wrapper>.tyk-form-control:focus{border-left:2px solid #ea4766;border-color:#ea4766;outline:none}.tyk-form-group label{font-family:\"OpenSans-SemiBold\"}.tyk-form-group--inline{align-items:stretch;display:flex;flex-wrap:nowrap}.tyk-form-group--inline .tyk-form-control__wrapper{flex:1}.tyk-form-group--inline label{display:flex;white-space:nowrap;margin-right:20px;margin-top:14px}.tyk-form-group--inline input,.tyk-form-group--inline select{display:flex}.tyk-form-group--inline .tyk-form-control__help-block{display:flex;margin-left:auto}.tyk-form-group--default{color:#505071}.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-form-control,.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control,.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control{border:2px solid #c3c3e5;color:#505071}.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-form-control[disabled],.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control[disabled],.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control[disabled]{border:2px solid #c3c3e5;background-color:#ededf9;color:#505071;cursor:not-allowed}.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-form-control[disabled]+.tyk-input-group__addon,.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control[disabled]+.tyk-input-group__addon,.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control[disabled]+.tyk-input-group__addon{background-color:#ededf9}.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-form-control::placeholder,.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control::placeholder,.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control::placeholder{opacity:.8}.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-form-control:-ms-input-placeholder,.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control:-ms-input-placeholder,.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control:-ms-input-placeholder{opacity:.8}.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-form-control::-ms-input-placeholder,.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control::-ms-input-placeholder,.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control::-ms-input-placeholder{opacity:.8}.tyk-form-group--default.tyk-form-group--addon-left .tyk-input-group__addon{border-bottom:2px solid #c3c3e5;border-left:2px solid #c3c3e5;border-top:2px solid #c3c3e5;color:#505071}.tyk-form-group--default.tyk-form-group--addon-right .tyk-input-group__addon{border-bottom:2px solid #c3c3e5;border-right:2px solid #c3c3e5;border-top:2px solid #c3c3e5;color:#505071}.tyk-form-group--primary{color:#505071}.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-form-control,.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control,.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control{border:2px solid #a2a2cc;color:#505071}.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-form-control[disabled],.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control[disabled],.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control[disabled]{border:2px solid #a2a2cc;background-color:#ededf9;color:#505071;cursor:not-allowed}.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-form-control[disabled]+.tyk-input-group__addon,.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control[disabled]+.tyk-input-group__addon,.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control[disabled]+.tyk-input-group__addon{background-color:#ededf9}.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-form-control::placeholder,.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control::placeholder,.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control::placeholder{opacity:.8}.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-form-control:-ms-input-placeholder,.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control:-ms-input-placeholder,.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control:-ms-input-placeholder{opacity:.8}.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-form-control::-ms-input-placeholder,.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control::-ms-input-placeholder,.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control::-ms-input-placeholder{opacity:.8}.tyk-form-group--primary.tyk-form-group--addon-left .tyk-input-group__addon{border-bottom:2px solid #a2a2cc;border-left:2px solid #a2a2cc;border-top:2px solid #a2a2cc;color:#a2a2cc}.tyk-form-group--primary.tyk-form-group--addon-right .tyk-input-group__addon{border-bottom:2px solid #a2a2cc;border-right:2px solid #a2a2cc;border-top:2px solid #a2a2cc;color:#a2a2cc}.tyk-form-group--success{color:#505071}.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-form-control,.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control,.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control{border:2px solid #00d9ba;color:#505071}.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-form-control[disabled],.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control[disabled],.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control[disabled]{border:2px solid #00d9ba;background-color:#ededf9;color:#505071;cursor:not-allowed}.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-form-control[disabled]+.tyk-input-group__addon,.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control[disabled]+.tyk-input-group__addon,.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control[disabled]+.tyk-input-group__addon{background-color:#ededf9}.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-form-control::placeholder,.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control::placeholder,.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control::placeholder{opacity:.8}.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-form-control:-ms-input-placeholder,.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control:-ms-input-placeholder,.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control:-ms-input-placeholder{opacity:.8}.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-form-control::-ms-input-placeholder,.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control::-ms-input-placeholder,.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control::-ms-input-placeholder{opacity:.8}.tyk-form-group--success.tyk-form-group--addon-left .tyk-input-group__addon{border-bottom:2px solid #00d9ba;border-left:2px solid #00d9ba;border-top:2px solid #00d9ba;color:#00d9ba}.tyk-form-group--success.tyk-form-group--addon-right .tyk-input-group__addon{border-bottom:2px solid #00d9ba;border-right:2px solid #00d9ba;border-top:2px solid #00d9ba;color:#00d9ba}.tyk-form-group--rounded-corners.has-error>.tyk-form-control__wrapper>.tyk-form-control{border-left:2px solid #ff6c7d}.tyk-form-group--rounded-corners.has-error>.tyk-form-control__wrapper>.tyk-form-control:focus{border-left:2px solid #ff6c7d;outline:none}.tyk-form-group--rounded-corners .tyk-form-control{border-radius:18px}.tyk-form-group--addon-right input{border-right:0 !important;padding-right:0}.tyk-form-group--addon-left input{border-left:0 !important;padding-left:0}.tyk-form-group--rounded-corners.tyk-form-group--addon-right input{border-top-right-radius:0;border-bottom-right-radius:0}.tyk-form-group--rounded-corners.tyk-form-group--addon-right .tyk-input-group__addon{background:#fff;border-top-right-radius:18px;border-bottom-right-radius:18px;color:#505071}.tyk-form-group--rounded-corners.tyk-form-group--addon-left input{border-top-left-radius:0;border-bottom-left-radius:0;border-left:0 !important}.tyk-form-group--rounded-corners.tyk-form-group--addon-left .tyk-input-group__addon{background:#fff;border-top-left-radius:18px;border-bottom-left-radius:18px;color:#505071}.tyk-form-control__error-message{font-family:\"OpenSans-regular\";font-size:12px;line-height:16px;margin-top:5px;padding:0 0 0 20px;position:relative}.tyk-form-control__error-message:before{content:\"!\";background:#ff6c7d;color:#fff;font-family:\"OpenSans-Bold\";border-radius:8px;display:inline-block;margin-right:5px;padding:0px 7px}.tyk-input-group{align-items:center;display:flex;outline:none}.tyk-input-group__addon{align-items:center;background-color:#fff;border:2px solid #c3c3e5;display:flex;height:39px;padding:10px 10px 10px 10px}.tyk-input-group__addon:first-child{border-right:0}.tyk-input-group__addon:last-child{border-left:0}.tyk-form-control{font-family:\"OpenSans-SemiBold\";font-size:14px;line-height:19px;border:2px solid #c3c3e5;background-color:#fff;color:#505071;display:block;height:39px;padding:10px 20px 10px 20px;transition:all .2s linear;width:100%}.tyk-form-control[disabled]{background-color:#ededf9;cursor:not-allowed}.tyk-form-control[disabled] .tyk-input-group__addon{background-color:#ededf9}.tyk-form-control::placeholder{font-family:\"OpenSans-SemiBold\";color:#a2a2cc}.tyk-form-control:focus,.tyk-form-control:active{outline:none;border:2px solid #00d9ba !important}.tyk-form-control:focus+.tyk-input-group__addon,.tyk-form-control:active+.tyk-input-group__addon{border:2px solid #00d9ba !important;border-left:none !important}.tyk-form-control__help-block{color:#36364c;font-style:normal;font-family:\"OpenSans-regular\";font-size:12px;line-height:16px;padding:0 0 0 20px;margin:5px 0 0 0}select{border-radius:0;-webkit-appearance:none}.inline-form-wrapper{align-items:center;display:flex;width:100%}.inline-form-wrapper .inline-form{width:100%}.inline-form-wrapper>button{margin-left:10px;margin-bottom:15px}.tyk-checkbox,.tyk-radio{margin:10px 0}.tyk-checkbox label,.tyk-radio label{font-family:\"OpenSans-SemiBold\"}.tyk-checkbox input,.tyk-radio input{margin:0 5px 0 0}.tyk-checkbox--inline,.tyk-radio--inline{display:inline-flex;margin-left:15px}.tyk-checkbox--inline:first-child,.tyk-radio--inline:first-child{margin-left:0}.tyk-inline-form{align-items:center;display:flex;flex-wrap:wrap}.tyk-inline-form .tyk-form-group{flex:1;margin-left:20px;min-width:200px}.tyk-inline-form .tyk-form-group:first-child{margin-left:0}.tyk-inline-form>.tyk-button{margin-left:20px;margin-bottom:15px}.tyk-accordion__item-header>button,.tyk-accordion__trigger{background:none;border:none;cursor:pointer;display:flex;font-size:14px;outline:none;padding:15px 15px;width:100%}.tyk-accordion__item-header>button .tyk-icon,.tyk-accordion__trigger .tyk-icon{margin-left:auto}.tyk-accordion__item{display:grid}.tyk-accordion__item--trigger-position-left{grid-template-columns:40px auto;grid-template-areas:\"trigger header\" \"trigger content\"}.tyk-accordion__item--trigger-position-right{grid-template-columns:auto 40px;grid-template-areas:\"header trigger\" \"content trigger\"}.tyk-accordion__item--trigger-in-header{grid-template-columns:auto;grid-template-areas:\"header\" \"content\"}.tyk-accordion__trigger-wrapper{grid-area:trigger;display:flex;align-items:flex-start;justify-content:center}.tyk-accordion__trigger-wrapper .tyk-icon{margin-left:auto;margin-right:auto}.tyk-accordion__item-header{grid-area:header}.tyk-accordion__trigger--disabled{color:#e1e1e1}.tyk-accordion__item-header.tyk-accordion__arrow-trigger{align-items:center;display:flex}.tyk-accordion__item-header.tyk-accordion__arrow-trigger>div{flex:1}.tyk-accordion__item-header.tyk-accordion__arrow-trigger>button{margin-left:auto;width:auto}.tyk-accordion__item-content{grid-area:content}:root{--tooltip-max-width: 450px}.tyk-tooltip{display:flex;align-items:center;background-color:#ededf9;border:2px solid #a2a2cc;border-radius:18px;max-width:var(--tooltip-max-width);padding:20px}.tyk-tooltip>.tyk-icon:first-child{width:32px;height:32px;border-radius:50%;color:#fff;background-color:#7a79a1}.tyk-tooltip>.tyk-icon:first-child:before{display:flex;width:100%;height:100%;align-items:center;justify-content:center}.tyk-tooltip>.tyk-icon+.tyk-tooltip__content{margin-left:20px}.tyk-tooltip__content{color:#505071;word-break:break-word;word-wrap:break-word}.tyk-tooltip__content+.tyk-icon{margin-left:20px}.tyk-tooltip>.tyk-icon:last-child{cursor:pointer}.tyk-button{background-color:rgba(0,0,0,0);border:none;color:#fff;cursor:pointer;display:inline-block;font-family:\"OpenSans-Bold\";text-align:center;text-transform:uppercase;text-decoration:none;transition:all .2s linear;user-select:none;vertical-align:middle;white-space:nowrap;padding:8px 23px;font-size:14px;line-height:22px;border-radius:20px}.tyk-button+.tyk-button,.tyk-button+.tyk-dropdown,.tyk-button+.tyk-toggle{margin-left:10px}.tyk-button span+i{margin-left:10px}.tyk-button i+span{margin-left:10px}.tyk-button.disabled{cursor:not-allowed;opacity:.7}.tyk-button:hover{color:#fff;text-decoration:none}.tyk-button:focus{outline:none}.tyk-button--white{background-color:#fff;color:#36364c;border:2px solid rgba(0,0,0,0)}.tyk-button--white:hover{background-color:#43435b;color:#fff}.tyk-button--primary{background-color:#7a79a1;color:#fff;border:2px solid #7a79a1}.tyk-button--primary:hover{background-color:#505071;color:#fff}.tyk-button--primary-link{background-color:rgba(0,0,0,0);border:2px solid rgba(0,0,0,0);color:#7a79a1}.tyk-button--primary-link:hover{background-color:rgba(0,0,0,0);color:#7a79a1;border-color:#7a79a1;text-decoration:underline}.tyk-button--primary-outline{border:2px solid #7a79a1;background-color:rgba(0,0,0,0);color:#7a79a1}.tyk-button--primary-outline:hover{background-color:#7a79a1;color:#fff}.tyk-button--primary-outline.disabled{color:#7a79a1}.tyk-button--primary-outline.disabled:hover{background-color:rgba(0,0,0,0);color:#7a79a1}.tyk-button--primary-gradient{border-image:linear-gradient(to right, #A2A2CC, #505071, #A2A2CC) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #A2A2CC, #505071, #A2A2CC);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-button--primary-gradient:hover,.tyk-button--primary-gradient:active,.tyk-button--primary-gradient:active:focus{border-image:linear-gradient(to right, #A2A2CC, #505071, #A2A2CC) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #A2A2CC, #505071, #A2A2CC);background-position:100% 0;background-size:200% auto;background-clip:border-box}.tyk-button--primary-gradient:hover.disabled,.tyk-button--primary-gradient:active.disabled,.tyk-button--primary-gradient:active:focus.disabled{border-image:linear-gradient(to right, #A2A2CC, #505071, #A2A2CC) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #A2A2CC, #505071, #A2A2CC);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-button--success{background-color:#00d9ba;color:#fff;border:2px solid #00d9ba}.tyk-button--success:hover{background-color:#00b798;color:#fff}.tyk-button--success-link{background-color:rgba(0,0,0,0);border:2px solid rgba(0,0,0,0);color:#00d9ba}.tyk-button--success-link:hover{background-color:rgba(0,0,0,0);color:#00d9ba;border-color:#00d9ba;text-decoration:underline}.tyk-button--success-outline{border:2px solid #00d9ba;background-color:rgba(0,0,0,0);color:#00d9ba}.tyk-button--success-outline:hover{background-color:#00d9ba;color:#fff}.tyk-button--success-outline.disabled{color:#00d9ba}.tyk-button--success-outline.disabled:hover{background-color:rgba(0,0,0,0);color:#00d9ba}.tyk-button--success-gradient{border-image:linear-gradient(to right, #00d9ba, #00B798, #00d9ba) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #00d9ba, #00B798, #00d9ba);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-button--success-gradient:hover,.tyk-button--success-gradient:active,.tyk-button--success-gradient:active:focus{border-image:linear-gradient(to right, #00d9ba, #00B798, #00d9ba) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #00d9ba, #00B798, #00d9ba);background-position:100% 0;background-size:200% auto;background-clip:border-box}.tyk-button--success-gradient:hover.disabled,.tyk-button--success-gradient:active.disabled,.tyk-button--success-gradient:active:focus.disabled{border-image:linear-gradient(to right, #00d9ba, #00B798, #00d9ba) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #00d9ba, #00B798, #00d9ba);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-button--danger{background-color:#ff6c7d;color:#fff;border:2px solid #ff6c7d}.tyk-button--danger:hover{background-color:#ea4766;color:#fff}.tyk-button--danger-link{background-color:rgba(0,0,0,0);border:2px solid rgba(0,0,0,0);color:#ff6c7d}.tyk-button--danger-link:hover{background-color:rgba(0,0,0,0);color:#ff6c7d;border-color:#ff6c7d;text-decoration:underline}.tyk-button--danger-outline{border:2px solid #ff6c7d;background-color:rgba(0,0,0,0);color:#ff6c7d}.tyk-button--danger-outline:hover{background-color:#ff6c7d;color:#fff}.tyk-button--danger-outline.disabled{color:#ff6c7d}.tyk-button--danger-outline.disabled:hover{background-color:rgba(0,0,0,0);color:#ff6c7d}.tyk-button--danger-gradient{border-image:linear-gradient(to right, #FF6C7D, #EA4766, #FF6C7D) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #FF6C7D, #EA4766, #FF6C7D);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-button--danger-gradient:hover,.tyk-button--danger-gradient:active,.tyk-button--danger-gradient:active:focus{border-image:linear-gradient(to right, #FF6C7D, #EA4766, #FF6C7D) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #FF6C7D, #EA4766, #FF6C7D);background-position:100% 0;background-size:200% auto;background-clip:border-box}.tyk-button--danger-gradient:hover.disabled,.tyk-button--danger-gradient:active.disabled,.tyk-button--danger-gradient:active:focus.disabled{border-image:linear-gradient(to right, #FF6C7D, #EA4766, #FF6C7D) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #FF6C7D, #EA4766, #FF6C7D);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-button--warning{background-color:#d6b218;color:#fff;border:2px solid rgba(0,0,0,0)}.tyk-button--warning:hover{background-color:#b49514;color:#fff}.tyk-button--warning-link{background-color:rgba(0,0,0,0);border:2px solid rgba(0,0,0,0);color:#d6b218}.tyk-button--warning-link:hover{background-color:rgba(0,0,0,0);color:#d6b218;border-color:#d6b218;text-decoration:underline}.tyk-button--warning-outline{border:2px solid #d6b218;background-color:rgba(0,0,0,0);color:#d6b218}.tyk-button--warning-outline:hover{background-color:#d6b218;color:#fff}.tyk-button--warning-outline.disabled{color:#d6b218}.tyk-button--warning-outline.disabled:hover{background-color:rgba(0,0,0,0);color:#d6b218}.tyk-button--warning-gradient{border-image:linear-gradient(to right, #D6B218, #FFE885, #D6B218) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #D6B218, #FFE885, #D6B218);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-button--warning-gradient:hover,.tyk-button--warning-gradient:active,.tyk-button--warning-gradient:active:focus{border-image:linear-gradient(to right, #D6B218, #FFE885, #D6B218) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #D6B218, #FFE885, #D6B218);background-position:100% 0;background-size:200% auto;background-clip:border-box}.tyk-button--warning-gradient:hover.disabled,.tyk-button--warning-gradient:active.disabled,.tyk-button--warning-gradient:active:focus.disabled{border-image:linear-gradient(to right, #D6B218, #FFE885, #D6B218) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #D6B218, #FFE885, #D6B218);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-button--info{background-color:#82bbc6;color:#fff;border:2px solid #82bbc6}.tyk-button--info:hover{background-color:#68adba;color:#fff}.tyk-button--info-link{background-color:rgba(0,0,0,0);border:2px solid rgba(0,0,0,0);color:#82bbc6}.tyk-button--info-link:hover{background-color:rgba(0,0,0,0);color:#82bbc6;border-color:#82bbc6;text-decoration:underline}.tyk-button--info-outline{border:2px solid #82bbc6;background-color:rgba(0,0,0,0);color:#82bbc6}.tyk-button--info-outline:hover{background-color:#82bbc6;color:#fff}.tyk-button--info-outline.disabled{color:#82bbc6}.tyk-button--info-outline.disabled:hover{background-color:rgba(0,0,0,0);color:#82bbc6}.tyk-button--info-gradient{border-image:linear-gradient(to right, #82BBC6, #D3EBEF, #82BBC6) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #82BBC6, #D3EBEF, #82BBC6);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#505071}.tyk-button--info-gradient:hover,.tyk-button--info-gradient:active,.tyk-button--info-gradient:active:focus{border-image:linear-gradient(to right, #82BBC6, #D3EBEF, #82BBC6) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #82BBC6, #D3EBEF, #82BBC6);background-position:100% 0;background-size:200% auto;background-clip:border-box}.tyk-button--info-gradient:hover.disabled,.tyk-button--info-gradient:active.disabled,.tyk-button--info-gradient:active:focus.disabled{border-image:linear-gradient(to right, #82BBC6, #D3EBEF, #82BBC6) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #82BBC6, #D3EBEF, #82BBC6);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#505071}.tyk-button--default{background-color:#36364c;color:#fff;border:2px solid #36364c}.tyk-button--default:hover{background-color:#505071;color:#fff}.tyk-button--default-link{background-color:rgba(0,0,0,0);border:2px solid rgba(0,0,0,0);color:#505071}.tyk-button--default-link:hover{background-color:rgba(0,0,0,0);color:#505071;border-color:#505071;text-decoration:underline}.tyk-button--default-outline{border:2px solid #36364c;background-color:rgba(0,0,0,0);color:#36364c}.tyk-button--default-outline:hover{background-color:#36364c;color:#fff}.tyk-button--default-outline.disabled{color:#36364c}.tyk-button--default-outline.disabled:hover{background-color:rgba(0,0,0,0);color:#36364c}.tyk-button--default-gradient{border-image:linear-gradient(to right, #36364C, #505071, #36364C) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #36364C, #505071, #36364C);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-button--default-gradient:hover,.tyk-button--default-gradient:active,.tyk-button--default-gradient:active:focus{border-image:linear-gradient(to right, #36364C, #505071, #36364C) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #36364C, #505071, #36364C);background-position:100% 0;background-size:200% auto;background-clip:border-box}.tyk-button--default-gradient:hover.disabled,.tyk-button--default-gradient:active.disabled,.tyk-button--default-gradient:active:focus.disabled{border-image:linear-gradient(to right, #36364C, #505071, #36364C) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #36364C, #505071, #36364C);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-button--sm{padding:3px 15px;font-size:12px;line-height:16px;border-radius:20px}.tyk-button--md{padding:8px 23px;font-size:14px;line-height:19px;border-radius:20px}.tyk-button--lg{padding:13px 23px;font-size:16px;line-height:22px;border-radius:20px}.tyk-button--icon-only{border-radius:18px;padding:0;line-height:20px;width:24px}.tyk-button--icon-only:hover{border-radius:18px}.tyk-button--fit{height:auto;width:auto;line-height:normal}.tyk-button--no-style{background:rgba(0,0,0,0);border:none;color:#505071}.tyk-button--no-style:hover{background:rgba(0,0,0,0);border:none;color:#505071}.tyk-button-group__wrapper{display:inline-block;position:relative;vertical-align:middle}.tyk-button-group__wrapper label{font-family:\"OpenSans-SemiBold\"}.tyk-button-group__wrapper .tyk-button-group{display:flex}.tyk-button-group__wrapper .tyk-button-group>.tyk-button-group:not(:first-child)>.tyk-button{border-top-left-radius:0;border-bottom-left-radius:0}.tyk-button-group__wrapper .tyk-button-group>.tyk-button-group:not(:last-child)>.tyk-button{border-top-right-radius:0;border-bottom-right-radius:0}.tyk-button-group__wrapper .tyk-button-group .tyk-button{border-radius:0}.tyk-button-group__wrapper .tyk-button-group .tyk-button+.tyk-button{margin-left:0}.tyk-button-group__wrapper .tyk-button-group .tyk-button+.tyk-dropdown{margin-left:0}.tyk-button-group__wrapper .tyk-button-group .tyk-button:first-child{border-top-left-radius:20px;border-bottom-left-radius:20px}.tyk-button-group__wrapper .tyk-button-group .tyk-button:last-child{border-top-right-radius:20px;border-bottom-right-radius:20px}.tyk-chart__wrapper{position:relative}.tyk-chart--no-data,.tyk-chart--loading-chart{filter:blur(10px);-webkit-filter:blur(10px)}.collapse-exit,.collapse-exit-active,.collapse-exit-done{height:0px}.collapse-wrapper{overflow:hidden;transition:all .2s}.collapse-horizontal-exit,.collapse-horizontal-exit-active,.collapse-horizontal-exit-done{width:0px}.collapse-horizontal-enter,.collapse-horizontal-enter-active,.collapse-horizontal-enter-done{width:100%}.tyk-copy-to-clipboard{position:absolute;left:-1000px;top:-1000px}.tyk-fixed-wrapper{left:0;position:sticky;right:0;top:0;z-index:8}.tyk-fixed-wrapper--scrolled{box-shadow:2px 2px 5px rgba(0,0,0,.1)}.floating-container{position:fixed;top:-9999px;overflow:auto;z-index:1080}.tyk-icon+.tyk-icon{margin-left:10px}.tyk-infinite-scroller{height:100%;overflow:hidden;position:relative}.tyk-infinite-scroller .loading{background:linear-gradient(180deg, rgba(255, 255, 255, 0), rgb(255, 255, 255));justify-content:center;bottom:0;display:flex;left:0;padding:15px 0;right:0;top:auto;width:100%}.tyk-infinite-scroller__wrapper{height:100%;overflow-y:auto}.tyk-info-note{border-radius:0;position:relative}.tyk-info-note p+p{margin-top:15px}.tyk-info-note:after{content:\"\";border-style:solid;border-width:0 20px 20px 0;border-color:rgba(0,0,0,0) #82bbc6 rgba(0,0,0,0) rgba(0,0,0,0);height:0;position:absolute;right:0;top:0;width:0}.tyk-info-note .tyk-message{border-radius:0;padding-top:40px;padding-bottom:40px}.tyk-loading__wrapper{background:rgba(255,255,255,.6);bottom:0;position:absolute;left:0;right:0;top:0;z-index:99}.loader-wrapper{min-height:100px;position:relative}.loading{position:absolute;top:calc(50% - 10px);left:50%}.loading.relative{left:auto;padding:25px;position:relative;text-align:center;top:auto;width:100%}.loading-bar{display:inline-block;width:4px;height:20px;border-radius:4px;animation:loading 1s ease-in-out infinite;margin-left:2px}.loading-bar:nth-child(1){animation-delay:0;background-color:#00d9ba;opacity:1}.loading-bar:nth-child(2){animation-delay:.09s;background-color:#00d9ba;opacity:.8}.loading-bar:nth-child(3){animation-delay:.18s;background-color:#00d9ba;opacity:.6}.loading-bar:nth-child(4){animation-delay:.27s;background-color:#00d9ba;opacity:.4}@keyframes loading{0%{transform:scale(1)}20%{transform:scale(1, 2.2)}40%{transform:scale(1)}}.tyk-list{border:2px solid #c3c3e5;border-radius:18px;font-size:14px;list-style-type:none;margin:0;max-height:191px;padding:0;overflow:auto}.tyk-list--with-inline-label{display:flex}.tyk-list--with-inline-label>label{margin-right:20px}.tyk-list li{border-bottom:1px solid #c3c3e5;padding:10px 20px;font-family:\"OpenSans-SemiBold\"}.tyk-list li:last-child{border:none}.tyk-list--default{border-color:#c3c3e5}.tyk-list--primary{border-color:#a2a2cc}.tyk-list--primary li{border-color:#ededf9;color:#505071}.tyk-list--primary-light{border-color:#ededf9}.tyk-list--primary-light li{border-color:#ededf9;color:#505071}.tyk-list--success{border-color:#00d9ba;color:#00d9ba}.tyk-list--success li{border-color:#00d9ba}.tyk-list--danger{border-color:#ff6c7d;color:#505071}.tyk-list--danger li{border-color:#ffbbc5}ul.tyk-list--inline{align-items:center;display:flex}ul.tyk-list--inline li{padding:0 10px}ul.tyk-list--inline.tyk-list--with-separator li:not(:first-child){border-left:1px solid #36364c}.tyk-message{display:flex;align-items:center;border-radius:18px;margin-bottom:20px;padding:20px 20px 20px 20px}.tyk-message__content{flex-grow:1;margin-left:20px;margin-right:20px}.tyk-message>.tyk-icon:first-child{width:32px;height:32px;flex-shrink:0;border-radius:50%;color:#fff}.tyk-message>.tyk-icon:first-child:before{display:flex;width:100%;height:100%;align-items:center;justify-content:center}.tyk-message>.tyk-icon:last-child{cursor:pointer}.tyk-message--default{background-color:#ededf9;border:2px solid #505071;color:#505071}.tyk-message--default>.tyk-icon:first-child{background-color:#505071}.tyk-message--default>.tyk-icon:first-child{transform:rotate(180deg)}.tyk-message--info{background-color:#d3ebef;border:2px solid #82bbc6;color:#82bbc6}.tyk-message--info>.tyk-icon:first-child{background-color:#82bbc6}.tyk-message--success{background-color:#c2f2e9;border:2px solid #00b798;color:#00b798}.tyk-message--success>.tyk-icon:first-child{background-color:#00b798}.tyk-message--warning{background-color:#ffe885;border:2px solid #d6b218;color:#c58c11}.tyk-message--warning>.tyk-icon:first-child{background-color:#d6b218}.tyk-message--danger{background-color:#f5ccd1;border:2px solid #ff6c7d;color:#ea4766}.tyk-message--danger>.tyk-icon:first-child{background-color:#ff6c7d}.tyk-modal{--theme-header-height: 15px;--theme-header-icon-size: 65px;align-items:center;bottom:0;left:0;pointer-events:none;position:fixed;right:0;top:0;z-index:-1}.tyk-modal .tyk-panel{border:2px solid #43435b;box-shadow:none;-webkit-box-shadow:none}.tyk-modal .tyk-modal__dialog{opacity:0;transition:all .2s ease}.tyk-modal.opened{display:flex;z-index:1080}.tyk-modal.opened .tyk-modal__dialog{display:flex;max-height:92vh;opacity:1;pointer-events:all}.tyk-modal.appear-enter-done .tyk-modal__dialog{opacity:1;margin-top:0}.tyk-modal__theme-header{position:absolute;top:-1px;left:0;right:0;height:var(--theme-header-height);border-top-left-radius:18px;border-top-right-radius:18px}.tyk-modal__theme-header .tyk-icon{position:absolute;left:calc(50% - var(--theme-header-icon-size)/2);top:calc((var(--theme-header-icon-size) - var(--theme-header-height))/-2);width:var(--theme-header-icon-size);height:var(--theme-header-icon-size);border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:25px;color:#fff}.tyk-modal--theme-success .tyk-modal__theme-header{background-color:#00d9ba}.tyk-modal--theme-success .tyk-modal__theme-header .tyk-icon{background-color:#00d9ba}.tyk-modal--theme-warning .tyk-modal__theme-header{background-color:#d6b218}.tyk-modal--theme-warning .tyk-modal__theme-header .tyk-icon{background-color:#d6b218}.tyk-modal--theme-danger .tyk-modal__theme-header{background-color:#ff6c7d}.tyk-modal--theme-danger .tyk-modal__theme-header .tyk-icon{background-color:#ff6c7d}.tyk-modal__dialog{opacity:0;margin:0 auto;margin-top:-5%;pointer-events:all;transition:all .2s linear;width:85%}@media only screen and (min-width: 768px){.tyk-modal__dialog{width:600px}}@media only screen and (min-width: 768px){.tyk-modal__dialog.tyk-modal--lg{width:800px}}.tyk-modal__content{background:#fff;border-radius:18px;display:flex;flex-direction:column;position:relative;width:100%}.tyk-modal__body{flex:1;overflow:auto;--padding-top: calc(25px + (var(--theme-header-icon-size) - var(--theme-header-height)) / 2);padding:var(--padding-top) 25px 25px}.tyk-modal__body.no-padding{padding:0}.tyk-modal__footer{align-items:center;display:flex;justify-content:flex-end;padding:25px}.tyk-modal__footer>:not(:first-child){margin-left:5px}.tyk-modal__backdrop{background-color:#505071;border:none;bottom:0;display:none;left:0;position:fixed;right:0;top:0;width:100%;z-index:1079}.tyk-modal__backdrop.opened{display:block;opacity:.5;transition:opacity .2s ease}.tyk-modal__backdrop.fade-enter-done{opacity:.5}.tyk-modal__header{--padding-top: calc(25px + (var(--theme-header-icon-size) - var(--theme-header-height)) / 2);padding:var(--padding-top) 25px 25px;align-items:center;border-bottom:1px solid #ededf9;display:flex;width:100%}.tyk-modal--theme-none .tyk-modal__header{padding-top:25px}.tyk-modal__header button{margin-left:auto;padding:0 5px}.tyk-modal__header+.tyk-modal__body{padding-top:25px}.tyk-modal__title{font-family:\"OpenSans-SemiBold\";font-weight:500;margin:0;width:100%}.tyk-navigation{background-color:#fff;height:100%;overflow:auto;padding:0;width:100%}.tyk-navigation .tyk-navigation-item{width:100%}.tyk-navigation .tyk-navigation-item a{color:#505071;display:flex;padding:10px 20px;text-decoration:none;transition:all .2s ease}.tyk-navigation .tyk-navigation-item a:hover{background-color:#a2a2cc;color:#fff}.tyk-navigation .tyk-navigation-item a.active{background-color:#505071;color:#fff}.tyk-nav-bar{align-items:center;border:none;background-color:#fff;font-family:\"OpenSans-regular\";color:#36364c;margin:0;padding:0 20px 0 20px;width:100%;z-index:8;transition:all .2s linear}.tyk-nav-bar__pre{align-self:flex-end;color:#505071;flex-basis:100%}.tyk-nav-bar__pre a{font-family:\"OpenSans-Bold\";font-size:12px;line-height:16px;color:#505071}.tyk-nav-bar.tyk-nav-bar__with-tabs .tyk-tabs--default>ul li button{padding-top:0}@media screen and (max-width: 1024px){.tyk-nav-bar{padding-left:20px}.menu-opened .tyk-nav-bar{transform:translate(245px)}}.tyk-nav-bar h1{color:#36364c}.tyk-nav-bar h4{margin:0}.tyk-nav-bar .tyk-nav-bar__wrapper{align-items:center;padding-bottom:0;display:flex;flex-wrap:wrap;height:92px}.tyk-nav-bar .tyk-nav-bar__wrapper.tyk-nav-bar--align-top{align-items:flex-start}@media screen and (max-width: 1024px){.tyk-nav-bar .tyk-nav-bar__wrapper{padding-left:0}}.tyk-nav-bar .tyk-nav-bar__wrapper h1{font-size:25px;font-family:\"smoolthan_bold\";line-height:30px;margin:0;padding-right:10px}.tyk-nav-bar .tyk-nav-bar__wrapper h4{padding-right:10px}.tyk-nav-bar .tyk-nav-bar__wrapper .tyk-nav-bar__container{align-items:center;display:flex;flex-grow:1;justify-content:space-between}.tyk-nav-bar .tyk-nav-bar__wrapper .tyk-nav-bar__left{flex-grow:1}.tyk-nav-bar .tyk-nav-bar__wrapper .tyk-nav-bar__right{margin-left:auto}.tyk-panel{background:#fff;border-radius:0;margin-bottom:20px;font-family:\"OpenSans-SemiBold\";position:relative}.tyk-panel.has-error,.tyk-panel .tyk-panel.has-error{border:2px solid #ff6c7d}.tyk-panel__header{align-items:center;border-bottom:1px solid #e1e1e1;display:flex;font-family:\"OpenSans-regular\"}.tyk-panel__header>.tyk-icon,.tyk-panel__header>.tyk-tooltip__wrapper{margin-left:5px}.tyk-panel .tyk-panel{border:2px solid #c3c3e5;box-shadow:none;-webkit-box-shadow:none}.tyk-panel--blank.tyk-panel--collapsed{margin-bottom:20px}.tyk-panel--blank.tyk-panel--collapsed .tyk-panel__header{margin-bottom:0}.tyk-panel--blank .tyk-panel__header{margin-bottom:-20px;padding:20px 25px;background-color:#fff;border:none;color:#36364c;font-size:17px;line-height:23px}.tyk-panel--primary{background-color:rgba(0,0,0,0)}.tyk-panel--primary .tyk-panel__header{background-color:#a2a2cc;border:none;color:#fff;font-size:17px;line-height:23px}.tyk-panel--primary .tyk-panel__body{background-color:#fff;border:none;color:#505071;font-size:17px;line-height:23px}.tyk-panel--primary .tyk-panel__header{border:none}.tyk-panel--primary .tyk-form-group label{color:#505071}.tyk-panel--primary .tyk-toggle .tyk-toggle__label{color:#505071}.tyk-panel--success .tyk-panel__header{background-color:#00d9ba;border:none;color:#fff;font-size:17px;line-height:23px}.tyk-panel--danger .tyk-panel__header{background-color:#ff6c7d;border:none;color:#fff;font-size:17px;line-height:23px}.tyk-panel--warning .tyk-panel__header{background-color:#d6b218;border:none;color:#fff;font-size:17px;line-height:23px}.tyk-panel__body{background-color:#fff;border-radius:0;font-family:\"OpenSans-regular\";padding:25px;position:relative;transition:height .2s}.tyk-panel__body~.tyk-panel__header{border-bottom-left-radius:0;border-bottom-right-radius:0}.tyk-panel__body.no-padding{padding:0}.tyk-panel__header{border-radius:0;border-bottom-left-radius:0;border-bottom-right-radius:0;font-family:\"OpenSans-SemiBold\";overflow:hidden;padding:10px 25px;position:relative}.tyk-panel--collapsed .tyk-panel__header{border-bottom-left-radius:0;border-bottom-right-radius:0}.tyk-panel__header~.tyk-panel__body{border-top-left-radius:0;border-top-right-radius:0}.tyk-panel__headerh3{margin:0}.tyk-panel__header ng-transclude{vertical-align:middle}.tyk-panel__header.collapsable{cursor:pointer}.tyk-panel__icon-collapse--right .tyk-panel__header.collapsable{padding-right:48px}.tyk-panel__icon-collapse--left .tyk-panel__header.collapsable{padding-left:48px}.tyk-panel__header .collapsable__arrow-right{font-size:14px;position:absolute;padding:10px;right:10px;top:calc(50% - 21px)}.tyk-panel__header .collapsable__arrow-left{font-size:14px;position:absolute;padding:8px 0px 10px 20px;left:0px;top:calc(50% - 21px)}.tyk-panel__footer{align-items:center;border-top:1px solid #ededf9;display:flex;justify-content:flex-end;padding:25px}.tyk-panel__footer>:not(:first-child){margin-left:5px}.tyk-pill{align-items:center;border-radius:18px;display:inline-flex;font-size:12px;line-height:19px;margin:0 0 10px 0;padding:6px 15px;font-family:\"OpenSans-SemiBold\"}.tyk-pill--square{border-radius:8px}.tyk-pill i{font-size:12px}.tyk-pill+.tyk-pill{margin-right:10px}.tyk-pill button+span{margin-left:10px}.tyk-pill span+button{margin-left:10px}.tyk-pill:first-child{margin-right:10px}.tyk-pill:last-child{margin-right:0}.tyk-pill--default{background-color:#36364c;color:#fff}.tyk-pill--default i{color:#fff}.tyk-pill--default-outline{box-shadow:inset 0px 0px 0px 2px #36364c;color:#505071}.tyk-pill--default-outline i{color:#505071}.tyk-pill--primary{background-color:#a2a2cc;color:#fff}.tyk-pill--primary i{color:#fff}.tyk-pill--primary-outline{box-shadow:inset 0px 0px 0px 2px #a2a2cc;color:#505071}.tyk-pill--primary-outline i{color:#505071}.tyk-pill--success{background-color:#00d9ba;color:#fff}.tyk-pill--success i{color:#fff}.tyk-pill--success-outline{box-shadow:inset 0px 0px 0px 2px #00d9ba;color:#505071}.tyk-pill--success-outline i{color:#505071}.tyk-pill--danger{background-color:#ff6c7d;color:#fff}.tyk-pill--danger i{color:#fff}.tyk-pill--danger-outline{box-shadow:inset 0px 0px 0px 2px #ff6c7d;color:#505071}.tyk-pill--danger-outline i{color:#505071}.tyk-pill--warning{background-color:#d6b218;color:#fff}.tyk-pill--warning i{color:#fff}.tyk-pill--warning-outline{box-shadow:inset 0px 0px 0px 2px #d6b218;color:#505071}.tyk-pill--warning-outline i{color:#505071}.tyk-pill--info{background-color:#82bbc6;color:#fff}.tyk-pill--info i{color:#fff}.tyk-pill--info-outline{box-shadow:inset 0px 0px 0px 2px #82bbc6;color:#505071}.tyk-pill--info-outline i{color:#505071}.tyk-ui-reveal-wrapper{display:flex;flex-direction:column;justify-content:flex-end;align-items:stretch;width:100%;height:100%;z-index:1000;position:absolute;bottom:0;left:0;pointer-events:none}.tyk-ui-reveal-wrapper__panel{max-height:calc(100% - 2rem);background-color:#fff;padding:0;margin:0;overflow-y:auto;display:flex;flex-direction:column;pointer-events:all;flex-shrink:0;overflow:auto}.tyk-ui-reveal-wrapper__hole{flex-grow:1;opacity:0;width:100%;background-color:green;-webkit-user-select:none;user-select:none;pointer-events:none;z-index:-1}.tyk-ui-reveal-wrapper__gutter{height:2rem;width:100%;cursor:row-resize;display:flex;background-color:#a2a2cc;z-index:2;pointer-events:all;justify-content:space-between;align-items:stretch;position:relative;box-shadow:0 5px 10px rgba(0,0,0,.3)}.tyk-ui-reveal-wrapper__gutter__headerleft,.tyk-ui-reveal-wrapper__gutter__headerright{display:flex;align-items:center;flex:1}.tyk-ui-reveal-wrapper__gutter__headerleft{justify-content:flex-start}.tyk-ui-reveal-wrapper__gutter__headerright{justify-content:flex-end}.tyk-ui-reveal-wrapper__gutter__logo{width:1rem;height:1rem;-webkit-user-select:none;user-select:none;pointer-events:none;padding:.2rem;z-index:2;background-image:url(\"../images/drag.svg\");align-self:center}.tyk-ui-reveal-wrapper__gutter__logo:hover{border:dashed}.tyk-sidebar{background-color:#fff;height:calc(100vh - 58px);flex:0 0 280px;padding:0;position:-webkit-sticky;position:sticky;overflow:auto;top:58px}.tyk-table{border-collapse:collapse;border-spacing:0;background-color:#fff;border-radius:18px;width:100%}.tyk-table__wrapper{border:2px solid #c3c3e5;border-radius:18px;overflow:auto}.tyk-table__wrapper--no-border{border:none}.tyk-table__wrapper.no-innner-horizontal-borders .tyk-table>thead th,.tyk-table__wrapper.no-innner-horizontal-borders .tyk-table>tbody td{border-right:none}.tyk-table>thead th{border-right:1px solid #c3c3e5;color:#505071;font-size:14px;line-height:19px;font-family:\"OpenSans-Bold\";text-transform:uppercase}.tyk-table>thead th:last-child{border-right:none}.tyk-table>thead th i{font-size:12px}.tyk-table>thead th .tyk-button{background:none;color:#36364c;padding:0}.tyk-table>thead th{padding:15px 10px}.tyk-table>tbody tr:hover{background:rgba(237,237,249,.4)}.tyk-table>tbody td{border-right:1px solid #c3c3e5;font-size:14px;line-height:19px;font-family:\"OpenSans-regular\";padding:5px 10px;vertical-align:middle}.tyk-table>tbody td:last-child{border-right:none}.tyk-table>tbody td.fit{white-space:nowrap;width:1%}.tyk-table>tbody td input:not([type=checkbox]):not([type=radio]){margin-top:15px}.tyk-table>tbody td a{color:#505071;font-family:\"OpenSans-SemiBold\"}.tyk-table>tbody td label{margin:0}.tyk-table>tbody td input[type=checkbox]{margin:0}.tyk-table tbody>tr{border-top:1px solid #c3c3e5;transition:all .4s linear;border-radius:18px}.tyk-table tbody>tr.clickable{cursor:pointer}.tyk-table>tbody tr td:first-child,.tyk-table>thead tr th:first-child{padding-left:20px}.tyk-table>tbody tr td:first-child.with-icon,.tyk-table>thead tr th:first-child.with-icon{padding-left:15px}.tyk-table>tbody tr td:last-child,.tyk-table>thead tr th:last-child{padding-right:20px}.tyk-table>tbody tr td:last-child.with-icon,.tyk-table>thead tr th:last-child.with-icon{padding-right:15px}.tyk-table .tyk-pagination{padding:20px 25px}.tyk-table .tyk-pagination li:first-child{margin-left:auto}.tyk-table .nowrap{white-space:nowrap}.tyk-table .wrap{word-break:break-all}.tyk-table-search{padding:10px 25px 0 25px}.tyk-table-search label{font-size:14px;text-transform:uppercase}.header-sort{padding-left:3px;padding-top:5px;vertical-align:middle}.new-table-pagination{float:right}.selectable>div{margin-left:20px}.scrollable{display:block;overflow:auto}.fixed-header{background:#fff;position:sticky;top:0}.tyk-table.has-error,.tyk-table__wrapper.has-error{border:2px solid #ff6c7d !important}.tyk-tabs--default>ul{display:flex;list-style-type:none;margin:0;padding:0;overflow:auto}.tyk-tabs--default>ul li{display:flex;white-space:nowrap;margin-right:0px}.tyk-tabs--default>ul li:last-child{margin-right:0}.tyk-tabs--default>ul li.active button,.tyk-tabs--default>ul li button:hover{border-bottom-color:#00d9ba;color:#505071;opacity:1}.tyk-tabs--default>ul li button{background:none;border:none;border-bottom:4px solid rgba(0,0,0,0);color:#505071;cursor:pointer;font-size:14px;font-family:\"OpenSans-SemiBold\";padding:10px 2px 3px 2px;margin-right:20px;transition:all .2s linear;opacity:.7}.tyk-tabs--default>ul li button:focus{outline:none}.tyk-tab__content{padding:25px}.tyk-toast__container{bottom:0;min-width:300px;position:fixed;right:20px;z-index:11}.tyk-toast__message{position:relative}.tyk-toast-message__button{color:#505071;height:20px;line-height:1;padding:5px;position:absolute;right:5px;top:5px;width:20px}.tyk-toast-message__button:hover{background:rgba(255,255,255,.3);color:#505071}.floating-container{position:fixed;top:-9999px;overflow:auto;z-index:1080}.tyk-combobox2{outline:none}.tyk-combobox2.disabled .tyk-form-control{border:2px solid #c3c3e5 !important;background-color:#ededf9;color:#505071;cursor:not-allowed}.tyk-combobox2.disabled .tyk-combobox2__current-values .tyk-pill--combobox button{cursor:not-allowed}.tyk-combobox2.disabled:not(.is-expand-mode) .tyk-combobox2__values-container-trigger{cursor:not-allowed}.tyk-combobox2.disabled .tyk-combobox2__entry-field{background-color:rgba(0,0,0,0);cursor:not-allowed}.tyk-combobox2 .tyk-form-control{display:flex;flex-direction:row;position:relative;min-height:40px;height:auto;padding:0}.tyk-combobox2 .tyk-form-control:focus-within{outline:none;border:2px solid #00d9ba}.tyk-combobox2__current-values{display:flex;flex-grow:1;flex-wrap:wrap;padding-top:2px;padding-bottom:2px;padding-left:10px;max-width:calc(100% - 40px)}.tyk-combobox2__current-values.expand-mode{max-height:1000px;overflow:hidden;transition:max-height 1s ease}.tyk-combobox2__current-values--collapsed.expand-mode{max-height:38px;transition:max-height .2s ease}.tyk-combobox2__current-values .tyk-pill--combobox{margin-top:3px;margin-bottom:3px;background-color:#f0f0f0;border-radius:10px;color:#505071;padding:5px 10px;max-width:100%;max-height:26px}.tyk-combobox2__current-values .tyk-pill--combobox button{background:none;border:none;cursor:pointer;width:23px;outline:none}.tyk-combobox2__current-values .tyk-pill--combobox button+span{margin-left:0}.tyk-combobox2__current-values .tyk-pill--combobox span{overflow:hidden;text-overflow:ellipsis}.tyk-combobox2__current-values .tyk-pill--combobox i{margin-right:5px}.tyk-combobox2__entry-field{border:none;line-height:30px}.tyk-combobox2__entry-field:focus,.tyk-combobox2__entry-field:active{border:none;outline:none}.tyk-combobox2__entry-field::placeholder{color:#a2a2cc;font-family:\"OpenSans-SemiBold\"}.tyk-combobox2__text-value{font-family:\"OpenSans-SemiBold\";font-size:14px;line-height:19px;padding:9px 5px;width:100%;overflow:hidden;text-overflow:ellipsis;line-height:1;outline:none}.tyk-combobox2__text-value.overflow-single{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tyk-combobox2__text-value.is-placeholder{color:#a2a2cc;font-family:\"OpenSans-SemiBold\"}.tyk-combobox2__values-container-trigger{position:relative;flex-basis:40px;display:flex;justify-content:center;align-items:center;cursor:pointer;outline:none;transition:all .2s}.tyk-combobox2__values-container-trigger--expanded{transform:rotate(180deg)}.tyk-combobox2__values-container-trigger .tyk-icon{height:14px}.tyk-form-group--rounded-corners .tyk-combobox2-disabled-overlay{border-radius:calc(18px - 2px)}.tyk-combobox2__combobox-dropdown{display:flex;flex-direction:column;border:2px solid #c3c3e5;background-color:#fff}.tyk-combobox2__combobox-dropdown.tyk-form-group--rounded-corners{border-radius:18px}.tyk-combobox2__combobox-dropdown .tyk-combobox2__combobox-search{background-color:#fff;position:sticky;top:0;padding:10px 20px}.tyk-combobox2__combobox-dropdown .tyk-combobox2__combobox-search+.combobox-list{border-top:1px solid #c3c3e5}.tyk-combobox2__combobox-dropdown .tyk-combobox2__combobox-list{max-height:255px}.tyk-combobox2__combobox-dropdown .tyk-combobox2__combobox-list li{display:flex;cursor:pointer;padding:9px 20px;transition:all .2s;font-family:\"OpenSans-SemiBold\"}.tyk-combobox2__combobox-dropdown .tyk-combobox2__combobox-list li:hover,.tyk-combobox2__combobox-dropdown .tyk-combobox2__combobox-list li.active{background-color:#ededf9}.tyk-combobox2__combobox-dropdown .tyk-combobox2__combobox-list li.disabled{color:#c3c3e5;background-color:initial}.tyk-combobox2__combobox-dropdown .tyk-combobox2__combobox-list li+li{border-top:1px solid #c3c3e5}.tyk-combobox2__combobox-dropdown .tyk-combobox2__combobox-list li i{margin-right:5px}.tyk-combobox2__combobox-dropdown .tyk-combobox2__combobox-list li .item-name{overflow:hidden;text-overflow:ellipsis;line-height:16px}.tyk-combobox2__values-container-trigger{color:#505071}.tyk-combobox2__combobox-dropdown.tyk-form-group--rounded-corners{z-index:1081}.tyk-checkbox label{display:flex;align-items:flex-start;padding-left:20px}.tyk-checkbox label input{margin-left:-20px;margin-top:5px}.tyk-checkbox--theme-light label{color:#fff}.tyk-checkbox--theme-light.tyk-checkbox--is-disabled label{color:#fff}.tyk-checkbox--is-disabled label,.tyk-checkbox--is-disabled p{cursor:not-allowed;opacity:.5}.flatpickr-day.selected,.flatpickr-day.startRange,.flatpickr-day.endRange,.flatpickr-day.selected.inRange,.flatpickr-day.startRange.inRange,.flatpickr-day.endRange.inRange,.flatpickr-day.selected:focus,.flatpickr-day.startRange:focus,.flatpickr-day.endRange:focus,.flatpickr-day.selected:hover,.flatpickr-day.startRange:hover,.flatpickr-day.endRange:hover,.flatpickr-day.selected.prevMonthDay,.flatpickr-day.startRange.prevMonthDay,.flatpickr-day.endRange.prevMonthDay,.flatpickr-day.selected.nextMonthDay,.flatpickr-day.startRange.nextMonthDay,.flatpickr-day.endRange.nextMonthDay{background:#00d9ba !important;border-color:#00d9ba !important}.tyk-dropdown{display:inline-block}.tyk-dropdown+.tyk-button,.tyk-dropdown+.tyk-dropdown,.tyk-dropdown+.tyk-toggle{margin-left:10px}.tyk-dropdown--block{left:20px;right:20px}.tyk-dropdown--relative{left:auto;right:auto}.tyk-dropdown--custom{padding:20px 25px}.tyk-dropdown label{display:block}.tyk-dropdown__trigger{position:relative}.tyk-dropdown.theme-list .tyk-button{background:#fff;border:2px solid #36364c;border-radius:18px;color:#505071}.tyk-dropdown.theme-list .tyk-button:hover,.tyk-dropdown.theme-list .tyk-button:active,.tyk-dropdown.theme-list .tyk-button:active:focus,.tyk-dropdown.theme-list .tyk-button:focus{background:#fff;border-color:#43435b;color:#505071}.tyk-dropdown-menu{background:#fff;border:2px solid #c3c3e5;border-radius:18px;-webkit-filter:drop-shadow(1px 2px 1px rgba(0, 0, 0, 0.1));filter:drop-shadow(1px 2px 1px rgba(0, 0, 0, 0.1));list-style-type:none;margin:0;margin-top:3px;overflow:hidden;padding:0;z-index:1081}.tyk-dropdown-menu.tyk-dropdown--scrollable{overflow:auto}.tyk-dropdown-menu .tyk-panel{margin:0}.tyk-dropdown-menu.opened{display:flex;flex-direction:column;position:absolute}.tyk-dropdown-menu>li{background:#fff;border-bottom:1px solid #fff;display:flex;position:relative;z-index:7}.tyk-dropdown-menu>li:last-child{border:none}.tyk-dropdown-menu>li i{left:7px;position:absolute;top:9px}.tyk-dropdown-menu>li>a{cursor:pointer;color:#505071;display:flex;font-size:12px;padding:7px 24px;text-transform:uppercase;text-decoration:none;width:100%}.tyk-dropdown-menu>li>a:hover{color:#505071}.tyk-dropdown-menu>li>a .badge{background:#505071;color:#fff;font-size:10px;margin-top:-4px;margin-left:6px}.tyk-dropdown-menu>li>a:hover{background-color:#ededf9;text-decoration:none}.tyk-dropdown--relative.opened{position:relative}.tyk-editable-list__submit-btn{white-space:nowrap}.tyk-editable-list__form{align-items:center;display:flex}.tyk-editable-list__form .tyk-form-group{margin-bottom:0}.tyk-editable-list__form--sticked{margin-left:0}.tyk-editable-list__form--sticked button{border-top-left-radius:0px;border-bottom-left-radius:0px;border-top-right-radius:3px;border-bottom-right-radius:3px;padding-bottom:11px;padding:10px 15px 11px 15px}.tyk-editable-list__form span.inline{margin-top:0}.tyk-editable-list__form>span{margin-left:15px}.tyk-editable-list__form>span.inline-with-label{align-self:flex-end}.tyk-editable-list__header{padding-top:15px;border-bottom:1px solid #43435b;color:#505071;font-size:11px;padding-bottom:15px;text-transform:uppercase}.tyk-editable-list__header .tyk-row{margin:0}.tyk-editable-list-items{overflow:hidden;list-style:none;padding:20px 0 0 0}.tyk-editable-list-items .edit-mode-wrapper.table button{margin-top:23px}.tyk-editable-list-items .tyk-row{margin:0}.tyk-editable-list-items button[disabled]{cursor:not-allowed}.tyk-editable-list-items.tyk-editable-list-items--inline{align-items:center;color:#505071;display:flex;flex-wrap:wrap}.tyk-editable-list-items li{border-top:1px solid #c3c3e5;transition:all .2s linear}.tyk-editable-list-items li.tyk-editable-list-item--inline{background-color:#c3c3e5;border-radius:25px;border:none;color:#fff;float:left;font-family:\"OpenSans-SemiBold\";margin-bottom:10px;margin-right:15px;padding:0 15px;white-space:nowrap}.tyk-editable-list-items li.tyk-editable-list-item--inline .tyk-editable-list-item__text{color:#505071;padding:5px 0}.tyk-editable-list-items li.tyk-editable-list-item--inline .tyk-editable-list-action__button.on-edit{margin-top:0}.tyk-editable-list-items li:first-child{border-top:none}.tyk-editable-list-items li .tyk-editable-list-item__text{display:flex;padding:10px 0}.tyk-editable-list-items li .tyk-editable-list-item__text>span{flex-grow:1}.tyk-editable-list-items li .tyk-editable-list-item__text>div:first-child{flex-grow:1}.tyk-editable-list-items li .tyk-editable-list-item__text>div:first-child .error-message{margin:0}.tyk-editable-list-items li .tyk-editable-list-items{overflow:hidden;padding-bottom:10px}.tyk-editable-list-items li .tyk-editable-list{border-top:5px solid #43435b;background:#ededf9;padding:10px 15px}.tyk-editable-list-items .tyk-editable-list-item__text{display:block;word-wrap:break-word;word-break:break-all}.tyk-editable-list-items .tyk-editable-list-action__button{border:none;background:rgba(0,0,0,0)}.tyk-editable-list-items .tyk-editable-list-action__button.on-edit{margin-left:10px}.tyk-editable-list-items .tyk-editable-list-item-controls{flex-grow:0;text-align:right}.tyk-editable-list-item__controls{text-align:right}.tyk-editable-list-items.table{background-color:#fff;border-radius:18px;border:2px solid #c3c3e5;padding:0 !important}.tyk-editable-list-items.table li{border-color:#c3c3e5}.tyk-editable-list-items.table li:hover{background:#ededf9}.tyk-editable-list-items.table .tyk-editable-list-item__text{background:rgba(0,0,0,0)}.tyk-editable-list-items.table .tyk-editable-list-action__button{border-radius:6px;cursor:pointer;margin-right:10px}.tyk-editable-list__header{background-color:#fff;border-top-left-radius:18px;border-top-right-radius:18px;border:2px solid #c3c3e5;border-bottom:1px solid #c3c3e5 !important;color:#505071 !important;font-family:\"OpenSans-Bold\";margin-top:10px}.tyk-editable-list__header+.tyk-editable-list-items.table{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.editable-list__header{align-items:center;display:flex;margin-bottom:10px}.editable-list__header .tyk-button{margin-left:auto}.editable-list__wrapper.has-error .editable-list__list{border:2px solid #ff6c7d}.editable-list__list{border:2px solid #c3c3e5;border-radius:18px;display:flex;flex-direction:column-reverse}.editable-list__item{border-bottom:1px solid #c3c3e5;display:flex;flex-wrap:nowrap;width:100%}.editable-list__item:first-child{border-bottom:none}.editable-list__item-header{border-bottom:1px solid #c3c3e5;color:#505071;font-size:14px;line-height:19px;font-family:\"OpenSans-Bold\";text-transform:uppercase}.editable-list__item-header .editable-list__item-cell{padding:10px}.editable-list__item-cell{border-left:1px solid #c3c3e5;overflow:hidden;padding:0 10px}.editable-list__item-cell .tyk-form-control--readonly{overflow:hidden;text-overflow:ellipsis;word-break:break-all}.editable-list__item-cell:first-child{border-left:none;padding-left:15px}.editable-list__item-cell:last-child{padding-right:15px}.editable-list__item-cell .tyk-form-group{margin:10px 0;width:100%}.editable-list__item--size-1{display:flex;flex-grow:2;width:8.3333333333%}.editable-list__item--size-2{display:flex;flex-grow:3;width:16.6666666667%}.editable-list__item--size-3{display:flex;flex-grow:4;width:25%}.editable-list__item--size-4{display:flex;flex-grow:5;width:33.3333333333%}.editable-list__item--size-5{display:flex;flex-grow:6;width:41.6666666667%}.editable-list__item--size-6{display:flex;flex-grow:7;width:50%}.editable-list__item--size-7{display:flex;flex-grow:8;width:58.3333333333%}.editable-list__item--size-8{display:flex;flex-grow:9;width:66.6666666667%}.editable-list__item--size-9{display:flex;flex-grow:10;width:75%}.editable-list__item--size-10{display:flex;flex-grow:11;width:83.3333333333%}.editable-list__item--size-11{display:flex;flex-grow:12;width:91.6666666667%}.editable-list__item--size-12{display:flex;flex-grow:13;width:100%}.editable-list__item--size-fit{width:fit-content}.editable-list__item-action{align-items:flex-start;display:flex;justify-content:center;width:100px}.editable-list__item-action .tyk-button{margin-top:20px}.editable-list__item-action--read-only{color:#c3c3e5;align-items:center}.editable-list__item-action--read-only .tyk-button{margin-top:0}.tyk-file-input__wrapper{position:relative}.tyk-file-input__wrapper>input{padding:6px 20px}.tyk-file-input__wrapper>button{background:none;border:none;cursor:pointer;position:absolute;right:15px;top:9px}.tyk-multiselect{align-items:flex-start;border-radius:18px;flex-wrap:wrap;display:flex;margin-bottom:20px;width:100%}.tyk-multiselect .input-group .input-group-addon+.form-control{border-width:1px !important;border-left:none !important;border-top-left-radius:0 !important;border-top-right-radius:0 !important;border-bottom-left-radius:0 !important;border-bottom-right-radius:0 !important}.tyk-multiselect .input-group .input-group-addon{background:rgba(0,0,0,0) !important;border-width:1px !important;border-right:0 !important;border-top-left-radius:0 !important;border-top-right-radius:0 !important;border-bottom-left-radius:0 !important;border-bottom-right-radius:0 !important}.tyk-multiselect.has-error{border:2px solid #ff6c7d}.tyk-multiselect__header{background-color:#36364c;border-top-left-radius:18px;border-top-right-radius:18px;color:#fff;display:flex;width:100%}.tyk-multiselect__header>div{padding:10px 15px;width:50%}.tyk-multiselect__panel-wrapper{border:2px solid #c3c3e5;border-top:none;border-bottom-left-radius:18px;border-bottom-right-radius:18px;display:flex;flex:1;height:265px;width:100%}.tyk-multiselect__panel{display:flex;flex-direction:column;margin:0 0 0 -1px;position:relative;width:calc(50% + 1px)}.tyk-multiselect__panel:last-child{border-left:2px solid #c3c3e5}.tyk-multiselect__panel:last-child .tyk-form-group{margin-left:-1px;width:calc(100% + 2px)}.tyk-multiselect__panel .tyk-message{margin:20px 20px 0 20px}.tyk-multiselect__list{list-style-type:none;margin:0;padding:0}.tyk-multiselect__list--scroll{height:100%;overflow-y:auto}.tyk-multiselect__list>li{border-bottom:2px solid #c3c3e5;display:flex;flex-direction:column;padding:10px 15px}.tyk-multiselect__list>li>div{align-items:start;display:flex;width:100%}.tyk-multiselect__list>li .loading{justify-content:center}.tyk-multiselect__list>li:last-child{border-bottom:none}.tyk-multiselect-item__name{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tyk-multiselect .tyk-form-group{margin:0}.tyk-multiselect .tyk-multiselect-item__controls{display:flex;margin-left:auto;flex-wrap:nowrap}.tyk-multiselect .tyk-multiselect-item__controls .tyk-button{color:#505071;margin-left:5px}.tyk-multiselect .tyk-multiselect-item__controls .tyk-button:last-child{margin-left:0}.tyk-pagination{display:flex;list-style-type:none;margin:10px 0;padding:0}.tyk-pagination li{align-items:center;display:flex}.tyk-pagination li:first-child button{border-top-left-radius:18px;border-bottom-left-radius:18px}.tyk-pagination li:last-child button{border-top-right-radius:18px;border-bottom-right-radius:18px}.tyk-pagination span{margin:0 10px}.tyk-pagination button{background:#fff;border:none;font-size:14px;font-family:\"OpenSans-Bold\";cursor:pointer;color:#36364c;margin-left:-1px;padding:10px 15px}.tyk-pagination button:hover{background-color:#c2f2e9}.tyk-pagination .active button{background-color:#00d9ba;color:#fff}.tyk-radio label{align-items:center;display:flex}.tyk-radio--is-disabled label,.tyk-radio--is-disabled p{cursor:not-allowed;opacity:.5}.tyk-radio__description-text{padding:0 0 0 20px}.tyk-select{background:rgba(0,0,0,0) url(\"../images/arrow_down.svg\") no-repeat calc(100% - 15px) center;background-size:15px 15px}.tyk-selectable-list{margin-bottom:20px;width:100%}.tyk-selectable-list li:not(.tyk-selectable-list__no-items-message){font-family:\"OpenSans-SemiBold\";padding:0}.tyk-selectable-list li:not(.tyk-selectable-list__no-items-message) .tyk-message{margin-bottom:0}.tyk-selectable-list li:not(.tyk-selectable-list__no-items-message) label{font-family:\"OpenSans-SemiBold\";margin:0}.tyk-selectable-list li:not(.tyk-selectable-list__no-items-message)>label{align-items:center;cursor:pointer;display:flex;padding:10px 20px}.tyk-selectable-list li:not(.tyk-selectable-list__no-items-message)>label input[type=checkbox]{margin-left:auto}.tyk-selectable-list__item--with-icon input[type=checkbox]{visibility:hidden}textarea.tyk-form-control{height:auto}.tyk-toggle{display:inline-flex;flex-wrap:wrap;font-family:\"OpenSans-Bold\";font-size:14px;line-height:19px;white-space:nowrap}.tyk-toggle.block{margin-bottom:20px;width:100%}.tyk-toggle.block+.tyk-toggle{margin-left:0}.tyk-toggle.inline-label{align-items:center;flex-wrap:nowrap}.tyk-toggle__list--has-error{border:2px solid #ff6c7d}.tyk-toggle .tyk-toggle__label{display:block;font-family:\"OpenSans-SemiBold\";font-size:14px;padding:0;width:100%;color:#36364c}.tyk-toggle.inline-label .tyk-toggle__label{margin-right:10px;width:auto}.tyk-toggle+.tyk-button,.tyk-toggle+.tyk-dropdown,.tyk-toggle+.tyk-toggle{margin-left:10px}.tyk-toggle--disabled-true{cursor:not-allowed;opacity:.7}.tyk-toggle--column .tyk-toggle__list--separated{display:flex;flex-direction:column;margin-right:20px}.tyk-toggle--column .tyk-toggle__list--separated .tyk-toggle__item{background-color:#ededf9;margin-right:auto}.tyk-toggle__list{background:#ededf9;border-radius:25px;display:flex;list-style-type:none;margin:0;padding:0;position:relative}.tyk-toggle__list--separated{background:rgba(0,0,0,0);flex-wrap:wrap}.tyk-toggle--on-dark .tyk-toggle__list{background:#fff}.tyk-toggle--default .tyk-toggle__item--active span{color:#fff}.tyk-toggle--default .tyk-toggle__list--single .tyk-toggle__item--active,.tyk-toggle--default .tyk-toggle__list--separated .tyk-toggle__item--active{background-color:#36364c;color:#fff;border:2px solid rgba(0,0,0,0)}.tyk-toggle--default .tyk-toggle__list--single .tyk-toggle__item--active span,.tyk-toggle--default .tyk-toggle__list--separated .tyk-toggle__item--active span{color:#fff}.tyk-toggle--default .tyk-toggle__list--single .tyk-toggle__item--active:hover,.tyk-toggle--default .tyk-toggle__list--separated .tyk-toggle__item--active:hover{background-color:#36364c;color:#fff}.tyk-toggle--primary .tyk-toggle__item--active span{color:#fff}.tyk-toggle--primary .tyk-toggle__list--single .tyk-toggle__item--active,.tyk-toggle--primary .tyk-toggle__list--separated .tyk-toggle__item--active{background-color:#a2a2cc;color:#fff;border:2px solid rgba(0,0,0,0)}.tyk-toggle--primary .tyk-toggle__list--single .tyk-toggle__item--active span,.tyk-toggle--primary .tyk-toggle__list--separated .tyk-toggle__item--active span{color:#fff}.tyk-toggle--primary .tyk-toggle__list--single .tyk-toggle__item--active:hover,.tyk-toggle--primary .tyk-toggle__list--separated .tyk-toggle__item--active:hover{background-color:#a2a2cc;color:#fff}.tyk-toggle--success .tyk-toggle__item--active span{color:#fff}.tyk-toggle--success .tyk-toggle__list--single .tyk-toggle__item--active,.tyk-toggle--success .tyk-toggle__list--separated .tyk-toggle__item--active{background-color:#00b798;color:#fff;border:2px solid rgba(0,0,0,0)}.tyk-toggle--success .tyk-toggle__list--single .tyk-toggle__item--active span,.tyk-toggle--success .tyk-toggle__list--separated .tyk-toggle__item--active span{color:#fff}.tyk-toggle--success .tyk-toggle__list--single .tyk-toggle__item--active:hover,.tyk-toggle--success .tyk-toggle__list--separated .tyk-toggle__item--active:hover{background-color:#00b798;color:#fff}.tyk-toggle--danger .tyk-toggle__item--active span{color:#fff}.tyk-toggle--danger .tyk-toggle__list--single .tyk-toggle__item--active,.tyk-toggle--danger .tyk-toggle__list--separated .tyk-toggle__item--active{background-color:#ff6c7d;color:#fff;border:2px solid rgba(0,0,0,0)}.tyk-toggle--danger .tyk-toggle__list--single .tyk-toggle__item--active:hover,.tyk-toggle--danger .tyk-toggle__list--separated .tyk-toggle__item--active:hover{background-color:#ff6c7d;color:#fff}.tyk-toggle--warning .tyk-toggle__item--active span{color:#505071}.tyk-toggle--warning .tyk-toggle__list--single .tyk-toggle__item--active,.tyk-toggle--warning .tyk-toggle__list--separated .tyk-toggle__item--active{background-color:#d6b218;color:#505071;border:2px solid rgba(0,0,0,0)}.tyk-toggle--warning .tyk-toggle__list--single .tyk-toggle__item--active:hover,.tyk-toggle--warning .tyk-toggle__list--separated .tyk-toggle__item--active:hover{background-color:#d6b218;color:#505071}.tyk-toggle--primary-gradient .tyk-toggle__item--active span{color:#fff}.tyk-toggle--primary-gradient .tyk-toggle__list--single .tyk-toggle__item--active,.tyk-toggle--primary-gradient .tyk-toggle__list--separated .tyk-toggle__item--active{border-image:linear-gradient(to right, #A2A2CC, #505071, #A2A2CC) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #A2A2CC, #505071, #A2A2CC);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-toggle--primary-gradient .tyk-toggle__list--single .tyk-toggle__item--active span,.tyk-toggle--primary-gradient .tyk-toggle__list--separated .tyk-toggle__item--active span{color:#fff}.tyk-toggle--success-gradient .tyk-toggle__item--active span{color:#fff}.tyk-toggle--success-gradient .tyk-toggle__list--single .tyk-toggle__item--active,.tyk-toggle--success-gradient .tyk-toggle__list--separated .tyk-toggle__item--active{border-image:linear-gradient(to right, #00d9ba, #00B798, #00d9ba) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #00d9ba, #00B798, #00d9ba);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-toggle--success-gradient .tyk-toggle__list--single .tyk-toggle__item--active span,.tyk-toggle--success-gradient .tyk-toggle__list--separated .tyk-toggle__item--active span{color:#fff}.tyk-toggle--danger-gradient .tyk-toggle__item--active span{color:#fff}.tyk-toggle--danger-gradient .tyk-toggle__list--single .tyk-toggle__item--active,.tyk-toggle--danger-gradient .tyk-toggle__list--separated .tyk-toggle__item--active{border-image:linear-gradient(to right, #FF6C7D, #EA4766, #FF6C7D) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #FF6C7D, #EA4766, #FF6C7D);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-toggle--danger-gradient .tyk-toggle__list--single .tyk-toggle__item--active span,.tyk-toggle--danger-gradient .tyk-toggle__list--separated .tyk-toggle__item--active span{color:#fff}.tyk-toggle--warning-gradient .tyk-toggle__item--active span{color:#fff}.tyk-toggle--warning-gradient .tyk-toggle__list--single .tyk-toggle__item--active,.tyk-toggle--warning-gradient .tyk-toggle__list--separated .tyk-toggle__item--active{border-image:linear-gradient(to right, #FFE885, #D6B218, #FFE885) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #FFE885, #D6B218, #FFE885);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#505071}.tyk-toggle--warning-gradient .tyk-toggle__list--single .tyk-toggle__item--active span,.tyk-toggle--warning-gradient .tyk-toggle__list--separated .tyk-toggle__item--active span{color:#fff}.tyk-toggle__item{color:#fff;text-transform:uppercase;z-index:2;border:2px solid rgba(0,0,0,0)}.tyk-toggle__item:first-child{border-top-left-radius:25px;border-bottom-left-radius:25px}.tyk-toggle__item:last-child{border-top-right-radius:25px;border-bottom-right-radius:25px}.tyk-toggle__list--separated .tyk-toggle__item{background:tyk-toggle__list--separated;border-radius:25px;margin-bottom:5px;margin-top:5px;margin-right:10px}.tyk-toggle__list--separated .tyk-toggle__item:last-child{margin-right:0}.tyk-toggle__item input{display:none}.tyk-toggle__item label{cursor:pointer;font-family:\"OpenSans-Bold\";position:relative;margin:0;transition:all .2s ease}.tyk-toggle__list--single .tyk-toggle__item label{padding-left:45px}.tyk-toggle__list--single .tyk-toggle__item--active label{padding-left:25px;padding-right:45px}.tyk-toggle__list--single .tyk-toggle__item--active label .tyk-toggle__item-notch{left:calc(100% - 35px)}.tyk-toggle--on-dark .tyk-toggle__item:not(.tyk-toggle__item--active){color:#505071}.tyk-toggle--on-dark .tyk-toggle__item-notch--single{background:#ededf9}.tyk-toggle--sm label{padding:calc(3px + 2px) calc(15px + 2px);font-size:12px;line-height:16px;border-radius:20px}.tyk-toggle--sm .tyk-toggle__list--single label{padding-left:35px}.tyk-toggle--sm .tyk-toggle__list--single .tyk-toggle__item--active label{padding-left:17px;padding-right:35px}.tyk-toggle--sm .tyk-toggle__list--single .tyk-toggle__item--active label .tyk-toggle__item-notch{left:calc(100% - 27px)}.tyk-toggle--md label{padding:calc(8px + 2px) calc(23px + 2px);font-size:14px;line-height:16px;border-radius:20px}.tyk-toggle--lg label{padding:calc(13px + 2px) calc(23px + 2px);font-size:14px;line-height:16px;border-radius:20px}.tyk-toggle--lg .tyk-toggle__list--single label{padding-left:45px}.tyk-toggle--lg .tyk-toggle__list--single .tyk-toggle__item--active label{padding-left:25px;padding-right:45px}.tyk-toggle--lg .tyk-toggle__list--single .tyk-toggle__item--active label .tyk-toggle__item-notch{left:calc(100% - 43px)}.tyk-toggle__item-notch{border-radius:25px;bottom:2px;position:absolute;transition:all .2s ease;top:2px}.tyk-toggle__item-notch--single{background:#fff;left:2px;width:32px}.tyk-toggle--sm .tyk-toggle__item-notch--single{width:24px}.tyk-toggle--lg .tyk-toggle__item-notch--single{width:40px}.tyk-toggle__notch{border-radius:25px;left:0;position:absolute;bottom:4px;top:4px;transition:all .2s ease;width:100px;z-index:1}.tyk-toggle--default .tyk-toggle__notch{background-color:#36364c;color:#fff;border:2px solid rgba(0,0,0,0)}.tyk-toggle--default .tyk-toggle__notch:hover{background-color:#36364c;color:#fff}.tyk-toggle--primary .tyk-toggle__notch{background-color:#a2a2cc;color:#fff;border:2px solid rgba(0,0,0,0)}.tyk-toggle--primary .tyk-toggle__notch:hover{background-color:#a2a2cc;color:#fff}.tyk-toggle--success .tyk-toggle__notch{background-color:#00d9ba;color:#fff;border:2px solid rgba(0,0,0,0)}.tyk-toggle--success .tyk-toggle__notch:hover{background-color:#00d9ba;color:#fff}.tyk-toggle--danger .tyk-toggle__notch{background-color:#ff6c7d;color:#fff;border:2px solid rgba(0,0,0,0)}.tyk-toggle--danger .tyk-toggle__notch:hover{background-color:#ff6c7d;color:#fff}.tyk-toggle--warning .tyk-toggle__notch{background-color:#d6b218;color:#505071;border:2px solid rgba(0,0,0,0)}.tyk-toggle--warning .tyk-toggle__notch:hover{background-color:#d6b218;color:#505071}.tyk-toggle--primary-gradient .tyk-toggle__notch{border-image:linear-gradient(to right, #A2A2CC, #505071, #A2A2CC) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #A2A2CC, #505071, #A2A2CC);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-toggle--success-gradient .tyk-toggle__notch{border-image:linear-gradient(to right, #00d9ba, #00B798, #00d9ba) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #00d9ba, #00B798, #00d9ba);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-toggle--danger-gradient .tyk-toggle__notch{border-image:linear-gradient(to right, #FF6C7D, #EA4766, #FF6C7D) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #FF6C7D, #EA4766, #FF6C7D);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-toggle--warning-gradient .tyk-toggle__notch{border-image:linear-gradient(to right, #FFE885, #D6B218, #FFE885) 0 round;background:rgba(0,0,0,0) linear-gradient(to right, #FFE885, #D6B218, #FFE885);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#505071}.empty-toggle{padding:1px}.string-builder{position:relative;display:block}.string-builder__input{word-break:break-all;resize:none;overflow:hidden;background:rgba(0,0,0,0);position:absolute;border:none;font:inherit;display:block;z-index:1;width:100%;padding:0px;width:calc(100% - 35px)}.string-builder__input:focus,.string-builder__input:active{border:none;outline:none}.string-builder__styled{font:inherit;position:absolute;pointer-events:none;width:calc(100% - 35px);color:rgba(0,0,0,0);z-index:2;border:none;word-wrap:break-word;word-break:break-all}.string-builder__disabled{background-color:#ededf9 !important;color:#505071;cursor:not-allowed}.url-builder__options_name{font-weight:10px}.url-builder__options_description{color:gray}.string-builder-dropdown{display:flex;flex-direction:column;border:2px solid #c3c3e5;background-color:#fff}.string-builder-dropdown.tyk-form-group--rounded-corners{border-radius:18px}.string-builder-dropdown .string-builder-search{background-color:#fff;position:sticky;top:0;padding:10px 20px}.string-builder-dropdown .string-builder-search+.string-builder-list{border-top:1px solid #c3c3e5}.string-builder-dropdown .string-builder-list{max-height:255px}.string-builder-dropdown .string-builder-list li{cursor:pointer;padding:9px 20px;transition:all .2s;font-family:\"OpenSans-SemiBold\"}.string-builder-dropdown .string-builder-list li:hover,.string-builder-dropdown .string-builder-list li.active{background-color:#c3c3e5}.string-builder-dropdown .string-builder-list li+li{border-top:1px solid #c3c3e5}.string-builder-dropdown .string-builder-list li i{margin-right:5px}.string-builder-dropdown .string-builder-list li .item-name{overflow:hidden;text-overflow:ellipsis;line-height:16px}.invalid_token{box-shadow:0px 0px 0px 1px #ea4766 inset;border-radius:5px;background:#ffbbc5;color:#ea4766;padding:4px;pointer-events:all}.invalid_token .invalid_token--icon{margin-left:2px;color:#ea4766}.string_builder_trigger{background-color:#fff;border-radius:5px;padding:1px 6px;margin:0px 4px}.string-builder-footer>.tyk-form-control__error-message{padding:0px !important}.string-builder-footer>.tyk-form-control__help-block{padding:0px !important}.string-builder-search{padding-right:10px}.default-option-name{color:green}.data_source_argument{color:pink}.data_source_object{color:#8a2be2}*{box-sizing:border-box}body{background-color:#e1e1e1;color:#505071;font-size:14px;line-height:19px;font-family:\"OpenSans-regular\"}.tyk-main-wrapper{display:flex;flex-wrap:nowrap}.tyk-main-content-wrapper{flex:1}.well{background:rgba(0,0,0,0);border:2px solid #c3c3e5;border-radius:18px;box-shadow:none}.well.has-error{border-color:#ff6c7d}.title-medium{font-family:\"OpenSans-SemiBold\";color:#36364c;font-size:16px}.right-align{text-align:right !important}.left-align{text-align:left !important}.center-align{text-align:center !important}.left{float:left !important}.right{float:right !important}.hide{display:none !important}.no-margin{margin:0 !important}.no-margin-bottom{margin-bottom:0 !important}.no-margin-top{margin-top:0 !important}.no-margin-right{margin-right:0 !important}.no-margin-left{margin-right:0 !important}.disabled-section{color:#c3c3e5}.top-buffer-large{margin-top:20px !important}.top-buffer-small{margin-top:5px !important}.top-buffer-medium{margin-top:10px !important}.bottom-buffer-large{margin-bottom:20px !important}.bottom-buffer-small{margin-bottom:5px !important}.bottom-buffer-medium{margin-bottom:10px !important}.right-buffer-large{margin-right:20px !important}.right-buffer-small{margin-right:5px !important}.right-buffer-medium{margin-right:10px !important}.left-buffer-large{margin-left:20px !important}.left-buffer-small{margin-left:5px !important}.left-buffer-medium{margin-left:10px !important}.word-wrap{word-wrap:break-word;word-break:break-all}.clear-left{clear:left}.flex-container{display:flex}.vertical-center-align{align-items:center}.right-align-controls{align-items:center;display:flex;margin-left:auto}.inline-label{margin-right:15px}.nowrap{white-space:nowrap}","html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, article, aside, canvas, details, embed, figure, figcaption, footer, header, hgroup, menu, nav, output, ruby, section, summary, time, mark, audio, video {\n margin: 0;\n padding: 0;\n border: 0;\n font-size: 100%;\n font: inherit;\n vertical-align: baseline;\n}\n\n/* HTML5 display-role reset for older browsers */\n\narticle, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section {\n display: block; }\n\nbody {\n line-height: 1; }\n\nol, ul {\n list-style: none; }\n\nblockquote, q {\n quotes: none; }\n\nblockquote {\n &:before, &:after {\n content: '';\n content: none; } }\n\nq {\n &:before, &:after {\n content: '';\n content: none; } }\n\ntable {\n border-collapse: collapse;\n border-spacing: 0; }\n","@import 'variables';\r\n@import 'mixins';\r\n\r\n.container {\r\n max-width: $grid-max-width;\r\n margin: 0 auto;\r\n}\r\n\r\n.container,\r\n.container-fluid {\r\n padding: 0 $grid-gutter;\r\n}\r\n\r\n.tyk-row {\r\n display: flex;\r\n box-sizing: border-box;\r\n list-style: none;\r\n flex: 0 1 auto;\r\n flex-direction: row;\r\n flex-wrap: wrap;\r\n margin-left: -$grid-gutter;\r\n width: calc(100% + #{$grid-gutter});\r\n\r\n &.no-gutters {\r\n margin: 0;\r\n }\r\n\r\n &.tyk-row--gutterless {\r\n margin: 0;\r\n width: 100%;\r\n }\r\n\r\n &.tyk-row--reverse {\r\n flex-direction: row-reverse;\r\n }\r\n}\r\n\r\n.tyk-col {\r\n max-width: calc(100% - #{$grid-gutter});\r\n box-sizing: border-box;\r\n flex: 0 0 auto;\r\n flex-grow: 1;\r\n flex-basis: calc(100% - #{$grid-gutter});\r\n margin-left: $grid-gutter;\r\n width: calc(100% - #{$grid-gutter});\r\n\r\n &:last-child {\r\n margin-right: 0;\r\n }\r\n\r\n .tyk-row--gutterless & {\r\n margin: 0;\r\n }\r\n\r\n &.tyk-col--reverse {\r\n flex-direction: column-reverse;\r\n }\r\n\r\n &.tyk-col--align-bottom {\r\n align-self: flex-end;\r\n }\r\n\r\n &.tyk-col--align-top {\r\n align-self: flex-start;\r\n }\r\n\r\n &.tyk-col--align-center {\r\n align-self: center;\r\n }\r\n\r\n &.tyk-col--align-baseline {\r\n align-self: baseline;\r\n }\r\n\r\n &.tyk-col--align-stretch {\r\n align-self: stretch;\r\n }\r\n}\r\n\r\n@each $breakpoint in $grid-breakpoints {\r\n $name: nth($breakpoint, 1);\r\n $declaration: nth($breakpoint, 2);\r\n\r\n @media screen and #{$declaration} {\r\n @include grid-loop($name);\r\n }\r\n}\r\n","$font-path: '../fonts/' !default;\n$component-images-path: '../images' !default;\n$general-border-radius: 18px !default;\n$general-border-width: 2px !default;\n\n$theme-colors: (\n 'default': (\n 'base': #36364C,\n 'base-light': #7A79A1,\n 'light': #C3C3E5,\n 'dark': #505071\n ),\n 'primary': (\n 'base': #A2A2CC,\n 'light': #EDEDF9,\n 'dark': #505071\n ),\n 'success': (\n 'base': #00d9ba,\n 'light': #C2F2E9,\n 'dark': #00B798\n ),\n 'info': (\n 'base': #82BBC6,\n 'light': #D3EBEF\n ),\n 'danger': (\n 'base': #FF6C7D,\n 'extra-light': #F5CCD1,\n 'light': #FFBBC5,\n 'dark': #EA4766\n ),\n 'warning': (\n 'base': #D6B218,\n 'light': #FFE885,\n 'dark': #C58C11\n ),\n 'foreground': (\n 'base': #393939,\n 'base-dark': #22272B,\n 'light': #5a5a68,\n 'dark': #161B20,\n 'extra-dark': #0A0D10\n ),\n 'background': (\n 'base': #E1E1E1,\n 'light': #EDEDF9,\n 'dark': #43435B,\n 'extra-dark': #0A0D10\n )\n) !default;\n\n$text-color: #505071 !default;\n$label-color: theme-color('default', 'base') !default;\n\n$contrast-colors: (\n 'dark': (\n 'primary': rgb(255, 255, 255),\n 'secondary': rgba(255, 255, 255, .70),\n 'disabled': rgba(255, 255, 255, .5),\n 'hint': rgba(255, 255, 255, .12)\n ),\n 'light': (\n 'primary': rgba(0, 0, 0, .87),\n 'secondary': rgba(0, 0, 0, .54),\n 'disabled': rgba(0, 0, 0, .38),\n 'hint': rgba(0, 0, 0, .12)\n ),\n) !default;\n\n$xs-line-height: 16px;\n$sm-line-height: 19px;\n$md-line-height: 22px;\n$lg-line-height: 23px;\n$xl-line-height: 24px;\n$xxl-line-height: 30px;\n\n$xs-font-size: 12px;\n$sm-font-size: 14px;\n$md-font-size: 16px;\n$lg-font-size: 17px;\n$xl-font-size: 20px;\n$xxl-font-size: 25px;\n\n$base-font-size: $sm-font-size !default;\n$base-line-height: $sm-line-height !default;\n\n$text-settings: (\n 'xs': (\n font-size: $xs-font-size,\n line-height: $xs-line-height\n ),\n 'sm': (\n font-size: $sm-font-size,\n line-height: $sm-line-height\n ),\n 'base': (\n font-size: $md-font-size,\n line-height: $md-line-height\n ),\n 'md': (\n font-size: $md-font-size,\n line-height: $md-line-height\n ),\n 'lg': (\n font-size: $lg-font-size,\n line-height: $lg-line-height\n ),\n 'xl': (\n font-size: $xl-font-size,\n line-height: $xl-line-height\n ),\n 'xxl': (\n font-size: $xxl-font-size,\n line-height: $xxl-line-height\n )\n) !default;\n\n$spacing: (\n 'xs': 5px,\n 'sm': 10px,\n 'base': 15px,\n 'md': 20px,\n 'lg': 25px,\n 'xl': 30px,\n 'xxl': 40px\n) !default;\n\n$grid-gutter: map-get($spacing, 'md') !default;\n$grid-max-width: 1200px + ($grid-gutter * 2) !default;\n$grid-columns: 12 !default;\n\n$breakpoint-xs: 420px !default;\n$breakpoint-sm: 768px !default;\n$breakpoint-md: 1024px !default;\n$breakpoint-lg: 1248px !default;\n\n$breakpoints: (\n \"xs\": $breakpoint-xs,\n \"sm\": $breakpoint-sm,\n \"md\": $breakpoint-md,\n \"lg\": $breakpoint-lg\n);\n\n$grid-breakpoints: (\n 'lg' '(min-width: ' + $breakpoint-lg + ')',\n 'md' '(min-width: ' + $breakpoint-md + ') and (max-width: ' + ($breakpoint-lg - 1) + ')',\n 'sm' '(min-width: ' + ($breakpoint-sm + 1) + ') and (max-width:' + ($breakpoint-md - 1) + ')',\n 'xs' '(max-width: ' + $breakpoint-sm + ')'\n) !default;\n\n$font-family-regular: 'OpenSans-regular' !default;\n$font-family-medium: 'OpenSans-SemiBold' !default;\n$font-family-bold: 'OpenSans-Bold' !default;\n\n$headings-color: #36364C !default;\n$headings-font-family-regular: 'smoolthan_regular' !default;\n$headings-font-family-medium: 'smoolthan_medium' !default;\n$headings-font-family-bold: 'smoolthan_bold' !default;\n\n$headings-margin-bottom: 15px !default;\n$headings-font-family: $headings-font-family-medium !default;\n$headings-font-weight: 500 !default;\n$headings-line-height: $base-line-height !default;\n\n$form-group-margin-bottom: 15px !default;\n$form-control-height: 39px !default;\n$form-control-padding-left: map-get($spacing, 'md') !default;\n$form-control-padding-right: map-get($spacing, 'md') !default;\n$form-control-padding-top: 10px !default;\n$form-control-padding-bottom: 10px !default;\n$form-control-addon-background-color: white !default;\n$form-control-addon-padding-top: 10px !default;\n$form-control-addon-padding-bottom: 10px !default;\n$form-control-addon-padding-left: 10px !default;\n$form-control-addon-padding-right: 10px !default;\n$form-control-disabled-background-color: theme-color('background', 'light') !default;\n$form-control-border: $general-border-width solid theme-color('default', 'light') !default;\n$form-control-disabled-border: $general-border-width solid theme-color('default', 'light') !default;\n$form-control-placeholder-color: #A2A2CC !default;\n$form-control-disabled-background-color: theme-color('default', 'light') !default;\n$form-control-disabled-color: $text-color !default;\n$form-control-border-focus: 2px solid theme-color('success', 'base') !default;\n$form-control-placeholder-font-family: $font-family-medium !default;\n$form-control-error-colour: theme-color('danger', 'dark') !default;\n$form-default-color: theme-color('default', 'light') !default;\n$form-primary-color: theme-color('primary', 'base') !default;\n$form-success-color: theme-color('success', 'base') !default;\n\n$error-border: $general-border-width solid theme-color('danger', 'base') !default;\n$error-border-left: 2px solid theme-color('danger', 'dark') !default;\n$help-block-color: theme-color('default', 'base') !default;\n$help-block-font-style: normal !default;\n$help-block-padding: 0 0 0 $form-control-padding-left !default;\n$error-message-padding: 0 0 0 $form-control-padding-left !default;\n$default-pill-background-color: theme-color('default', 'base') !default;\n$default-pill-color: white !default;\n$pill-margin: 0 0 10px 0 !default;\n$default-outline-pill-box-shadow: inset 0px 0px 0px 2px theme-color('default', 'base');\n$default-outline-pill-color: $text-color;\n\n$title-medium-font-size: 16px;\n\n//Buffers\n$bottom-buffer-large: map-get($spacing, 'md');\n$bottom-buffer-medium: 10px;\n$bottom-buffer-small: 5px;\n$top-buffer-large: map-get($spacing, 'md');\n$top-buffer-medium: 10px;\n$top-buffer-small: 5px;\n$right-buffer-large: map-get($spacing, 'md');\n$right-buffer-medium: 10px;\n$right-buffer-small: 5px;\n$left-buffer-large: map-get($spacing, 'md');\n$left-buffer-medium: 10px;\n$left-buffer-small: 5px;\n\n$modal-z-index: 1080;\n","@use \"sass:math\";\n\n@function theme-color($key: 'primary', $variant: 'base') {\n $map: map-get($theme-colors, $key);\n @return map-get($map, $variant);\n}\n\n@function contrast($background: 'light', $type: 'primary') {\n $map: map-get($contrast-colors, $background);\n @return map-get($map, $type);\n}\n\n@mixin contrast($background: 'light', $type: 'primary') {\n color: contrast($background, $type)\n}\n\n@function text-scale($level) {\n @return map-get(map-get($text-settings, $level), 'font-size');\n}\n\n@function line-height($level) {\n @return map-get(map-get($text-settings, $level), 'line-height');\n}\n\n@mixin text-setting($level) {\n font-size: text-scale($level);\n line-height: line-height($level);\n}\n\n@mixin font-face($font-family, $url) {\n\t@font-face {\n\t\tfont-family: '#{$font-family}';\n\t\tsrc: url('#{$url}.woff2') format('woff2'),\n\t\t url('#{$url}.woff') format('woff');\n\t\tfont-weight: normal;\n\t\tfont-style: normal;\n\t}\n}\n\n@mixin mq($width, $type: min) {\n @if map_has_key($breakpoints, $width) {\n $width: map_get($breakpoints, $width);\n @if $type == max {\n $width: $width - 1px;\n }\n @media only screen and (#{$type}-width: $width) {\n @content;\n }\n }\n}\n\n@mixin grid-loop($name) {\n @for $i from 0 through $grid-columns {\n .tyk-col--#{$name}-#{$i} {\n flex-basis: calc(#{percentage(math.div($i, $grid-columns))} - #{$grid-gutter});\n max-width: calc(#{percentage(math.div($i, $grid-columns))} - #{$grid-gutter});\n }\n\n .tyk-col--offset-#{$name}-#{$i} {\n margin-left: percentage(math.div($i, $grid-columns));\n }\n }\n}\n\n@mixin form-group-variant(\n $border-color,\n $color: $border-color,\n) {\n color: $text-color;\n\n > .tyk-form-control__wrapper > .tyk-form-control,\n > .tyk-form-control__wrapper > .tyk-file-input__wrapper > .tyk-form-control,\n > .tyk-form-control__wrapper > .tyk-input-group > .tyk-form-control {\n border: $general-border-width solid $border-color;\n color: $text-color;\n\n &[disabled] {\n border: $general-border-width solid $border-color;\n background-color: $form-control-disabled-background-color;\n color: $form-control-disabled-color;\n cursor: not-allowed;\n\n + .tyk-input-group__addon {\n background-color: $form-control-disabled-background-color;\n }\n }\n\n &::placeholder {\n opacity: 0.8;\n }\n\n &:-ms-input-placeholder {\n opacity: 0.8;\n }\n\n &::-ms-input-placeholder {\n opacity: 0.8;\n }\n }\n\n &.tyk-form-group--addon-left {\n .tyk-input-group__addon {\n border-bottom: 2px solid $border-color;\n border-left: 2px solid $border-color;\n border-top: 2px solid $border-color;\n color: $color;\n }\n }\n\n &.tyk-form-group--addon-right {\n .tyk-input-group__addon {\n border-bottom: 2px solid $border-color;\n border-right: 2px solid $border-color;\n border-top: 2px solid $border-color;\n color: $color;\n }\n }\n}\n","/*!\n * Font Awesome Free 5.5.0 by @fontawesome - https://fontawesome.com\n * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)\n */\n.fa,\n.fas,\n.far,\n.fal,\n.fab {\n -moz-osx-font-smoothing: grayscale;\n -webkit-font-smoothing: antialiased;\n display: inline-block;\n font-style: normal;\n font-variant: normal;\n text-rendering: auto;\n line-height: 1; }\n\n.fa-lg {\n font-size: 1.33333em;\n line-height: 0.75em;\n vertical-align: -.0667em; }\n\n.fa-xs {\n font-size: .75em; }\n\n.fa-sm {\n font-size: .875em; }\n\n.fa-1x {\n font-size: 1em; }\n\n.fa-2x {\n font-size: 2em; }\n\n.fa-3x {\n font-size: 3em; }\n\n.fa-4x {\n font-size: 4em; }\n\n.fa-5x {\n font-size: 5em; }\n\n.fa-6x {\n font-size: 6em; }\n\n.fa-7x {\n font-size: 7em; }\n\n.fa-8x {\n font-size: 8em; }\n\n.fa-9x {\n font-size: 9em; }\n\n.fa-10x {\n font-size: 10em; }\n\n.fa-fw {\n text-align: center;\n width: 1.25em; }\n\n.fa-ul {\n list-style-type: none;\n margin-left: 2.5em;\n padding-left: 0; }\n .fa-ul > li {\n position: relative; }\n\n.fa-li {\n left: -2em;\n position: absolute;\n text-align: center;\n width: 2em;\n line-height: inherit; }\n\n.fa-border {\n border: solid 0.08em #eee;\n border-radius: .1em;\n padding: .2em .25em .15em; }\n\n.fa-pull-left {\n float: left; }\n\n.fa-pull-right {\n float: right; }\n\n.fa.fa-pull-left,\n.fas.fa-pull-left,\n.far.fa-pull-left,\n.fal.fa-pull-left,\n.fab.fa-pull-left {\n margin-right: .3em; }\n\n.fa.fa-pull-right,\n.fas.fa-pull-right,\n.far.fa-pull-right,\n.fal.fa-pull-right,\n.fab.fa-pull-right {\n margin-left: .3em; }\n\n.fa-spin {\n -webkit-animation: fa-spin 2s infinite linear;\n animation: fa-spin 2s infinite linear; }\n\n.fa-pulse {\n -webkit-animation: fa-spin 1s infinite steps(8);\n animation: fa-spin 1s infinite steps(8); }\n\n@-webkit-keyframes fa-spin {\n 0% {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg); }\n 100% {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg); } }\n\n@keyframes fa-spin {\n 0% {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg); }\n 100% {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg); } }\n\n.fa-rotate-90 {\n -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)\";\n -webkit-transform: rotate(90deg);\n transform: rotate(90deg); }\n\n.fa-rotate-180 {\n -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)\";\n -webkit-transform: rotate(180deg);\n transform: rotate(180deg); }\n\n.fa-rotate-270 {\n -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)\";\n -webkit-transform: rotate(270deg);\n transform: rotate(270deg); }\n\n.fa-flip-horizontal {\n -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)\";\n -webkit-transform: scale(-1, 1);\n transform: scale(-1, 1); }\n\n.fa-flip-vertical {\n -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)\";\n -webkit-transform: scale(1, -1);\n transform: scale(1, -1); }\n\n.fa-flip-horizontal.fa-flip-vertical {\n -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)\";\n -webkit-transform: scale(-1, -1);\n transform: scale(-1, -1); }\n\n:root .fa-rotate-90,\n:root .fa-rotate-180,\n:root .fa-rotate-270,\n:root .fa-flip-horizontal,\n:root .fa-flip-vertical {\n -webkit-filter: none;\n filter: none; }\n\n.fa-stack {\n display: inline-block;\n height: 2em;\n line-height: 2em;\n position: relative;\n vertical-align: middle;\n width: 2.5em; }\n\n.fa-stack-1x,\n.fa-stack-2x {\n left: 0;\n position: absolute;\n text-align: center;\n width: 100%; }\n\n.fa-stack-1x {\n line-height: inherit; }\n\n.fa-stack-2x {\n font-size: 2em; }\n\n.fa-inverse {\n color: #fff; }\n\n/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen\nreaders do not read off random characters that represent icons */\n.fa-500px:before {\n content: \"\\f26e\"; }\n\n.fa-accessible-icon:before {\n content: \"\\f368\"; }\n\n.fa-accusoft:before {\n content: \"\\f369\"; }\n\n.fa-acquisitions-incorporated:before {\n content: \"\\f6af\"; }\n\n.fa-ad:before {\n content: \"\\f641\"; }\n\n.fa-address-book:before {\n content: \"\\f2b9\"; }\n\n.fa-address-card:before {\n content: \"\\f2bb\"; }\n\n.fa-adjust:before {\n content: \"\\f042\"; }\n\n.fa-adn:before {\n content: \"\\f170\"; }\n\n.fa-adversal:before {\n content: \"\\f36a\"; }\n\n.fa-affiliatetheme:before {\n content: \"\\f36b\"; }\n\n.fa-air-freshener:before {\n content: \"\\f5d0\"; }\n\n.fa-algolia:before {\n content: \"\\f36c\"; }\n\n.fa-align-center:before {\n content: \"\\f037\"; }\n\n.fa-align-justify:before {\n content: \"\\f039\"; }\n\n.fa-align-left:before {\n content: \"\\f036\"; }\n\n.fa-align-right:before {\n content: \"\\f038\"; }\n\n.fa-alipay:before {\n content: \"\\f642\"; }\n\n.fa-allergies:before {\n content: \"\\f461\"; }\n\n.fa-amazon:before {\n content: \"\\f270\"; }\n\n.fa-amazon-pay:before {\n content: \"\\f42c\"; }\n\n.fa-ambulance:before {\n content: \"\\f0f9\"; }\n\n.fa-american-sign-language-interpreting:before {\n content: \"\\f2a3\"; }\n\n.fa-amilia:before {\n content: \"\\f36d\"; }\n\n.fa-anchor:before {\n content: \"\\f13d\"; }\n\n.fa-android:before {\n content: \"\\f17b\"; }\n\n.fa-angellist:before {\n content: \"\\f209\"; }\n\n.fa-angle-double-down:before {\n content: \"\\f103\"; }\n\n.fa-angle-double-left:before {\n content: \"\\f100\"; }\n\n.fa-angle-double-right:before {\n content: \"\\f101\"; }\n\n.fa-angle-double-up:before {\n content: \"\\f102\"; }\n\n.fa-angle-down:before {\n content: \"\\f107\"; }\n\n.fa-angle-left:before {\n content: \"\\f104\"; }\n\n.fa-angle-right:before {\n content: \"\\f105\"; }\n\n.fa-angle-up:before {\n content: \"\\f106\"; }\n\n.fa-angry:before {\n content: \"\\f556\"; }\n\n.fa-angrycreative:before {\n content: \"\\f36e\"; }\n\n.fa-angular:before {\n content: \"\\f420\"; }\n\n.fa-ankh:before {\n content: \"\\f644\"; }\n\n.fa-app-store:before {\n content: \"\\f36f\"; }\n\n.fa-app-store-ios:before {\n content: \"\\f370\"; }\n\n.fa-apper:before {\n content: \"\\f371\"; }\n\n.fa-apple:before {\n content: \"\\f179\"; }\n\n.fa-apple-alt:before {\n content: \"\\f5d1\"; }\n\n.fa-apple-pay:before {\n content: \"\\f415\"; }\n\n.fa-archive:before {\n content: \"\\f187\"; }\n\n.fa-archway:before {\n content: \"\\f557\"; }\n\n.fa-arrow-alt-circle-down:before {\n content: \"\\f358\"; }\n\n.fa-arrow-alt-circle-left:before {\n content: \"\\f359\"; }\n\n.fa-arrow-alt-circle-right:before {\n content: \"\\f35a\"; }\n\n.fa-arrow-alt-circle-up:before {\n content: \"\\f35b\"; }\n\n.fa-arrow-circle-down:before {\n content: \"\\f0ab\"; }\n\n.fa-arrow-circle-left:before {\n content: \"\\f0a8\"; }\n\n.fa-arrow-circle-right:before {\n content: \"\\f0a9\"; }\n\n.fa-arrow-circle-up:before {\n content: \"\\f0aa\"; }\n\n.fa-arrow-down:before {\n content: \"\\f063\"; }\n\n.fa-arrow-left:before {\n content: \"\\f060\"; }\n\n.fa-arrow-right:before {\n content: \"\\f061\"; }\n\n.fa-arrow-up:before {\n content: \"\\f062\"; }\n\n.fa-arrows-alt:before {\n content: \"\\f0b2\"; }\n\n.fa-arrows-alt-h:before {\n content: \"\\f337\"; }\n\n.fa-arrows-alt-v:before {\n content: \"\\f338\"; }\n\n.fa-assistive-listening-systems:before {\n content: \"\\f2a2\"; }\n\n.fa-asterisk:before {\n content: \"\\f069\"; }\n\n.fa-asymmetrik:before {\n content: \"\\f372\"; }\n\n.fa-at:before {\n content: \"\\f1fa\"; }\n\n.fa-atlas:before {\n content: \"\\f558\"; }\n\n.fa-atom:before {\n content: \"\\f5d2\"; }\n\n.fa-audible:before {\n content: \"\\f373\"; }\n\n.fa-audio-description:before {\n content: \"\\f29e\"; }\n\n.fa-autoprefixer:before {\n content: \"\\f41c\"; }\n\n.fa-avianex:before {\n content: \"\\f374\"; }\n\n.fa-aviato:before {\n content: \"\\f421\"; }\n\n.fa-award:before {\n content: \"\\f559\"; }\n\n.fa-aws:before {\n content: \"\\f375\"; }\n\n.fa-backspace:before {\n content: \"\\f55a\"; }\n\n.fa-backward:before {\n content: \"\\f04a\"; }\n\n.fa-balance-scale:before {\n content: \"\\f24e\"; }\n\n.fa-ban:before {\n content: \"\\f05e\"; }\n\n.fa-band-aid:before {\n content: \"\\f462\"; }\n\n.fa-bandcamp:before {\n content: \"\\f2d5\"; }\n\n.fa-barcode:before {\n content: \"\\f02a\"; }\n\n.fa-bars:before {\n content: \"\\f0c9\"; }\n\n.fa-baseball-ball:before {\n content: \"\\f433\"; }\n\n.fa-basketball-ball:before {\n content: \"\\f434\"; }\n\n.fa-bath:before {\n content: \"\\f2cd\"; }\n\n.fa-battery-empty:before {\n content: \"\\f244\"; }\n\n.fa-battery-full:before {\n content: \"\\f240\"; }\n\n.fa-battery-half:before {\n content: \"\\f242\"; }\n\n.fa-battery-quarter:before {\n content: \"\\f243\"; }\n\n.fa-battery-three-quarters:before {\n content: \"\\f241\"; }\n\n.fa-bed:before {\n content: \"\\f236\"; }\n\n.fa-beer:before {\n content: \"\\f0fc\"; }\n\n.fa-behance:before {\n content: \"\\f1b4\"; }\n\n.fa-behance-square:before {\n content: \"\\f1b5\"; }\n\n.fa-bell:before {\n content: \"\\f0f3\"; }\n\n.fa-bell-slash:before {\n content: \"\\f1f6\"; }\n\n.fa-bezier-curve:before {\n content: \"\\f55b\"; }\n\n.fa-bible:before {\n content: \"\\f647\"; }\n\n.fa-bicycle:before {\n content: \"\\f206\"; }\n\n.fa-bimobject:before {\n content: \"\\f378\"; }\n\n.fa-binoculars:before {\n content: \"\\f1e5\"; }\n\n.fa-birthday-cake:before {\n content: \"\\f1fd\"; }\n\n.fa-bitbucket:before {\n content: \"\\f171\"; }\n\n.fa-bitcoin:before {\n content: \"\\f379\"; }\n\n.fa-bity:before {\n content: \"\\f37a\"; }\n\n.fa-black-tie:before {\n content: \"\\f27e\"; }\n\n.fa-blackberry:before {\n content: \"\\f37b\"; }\n\n.fa-blender:before {\n content: \"\\f517\"; }\n\n.fa-blender-phone:before {\n content: \"\\f6b6\"; }\n\n.fa-blind:before {\n content: \"\\f29d\"; }\n\n.fa-blogger:before {\n content: \"\\f37c\"; }\n\n.fa-blogger-b:before {\n content: \"\\f37d\"; }\n\n.fa-bluetooth:before {\n content: \"\\f293\"; }\n\n.fa-bluetooth-b:before {\n content: \"\\f294\"; }\n\n.fa-bold:before {\n content: \"\\f032\"; }\n\n.fa-bolt:before {\n content: \"\\f0e7\"; }\n\n.fa-bomb:before {\n content: \"\\f1e2\"; }\n\n.fa-bone:before {\n content: \"\\f5d7\"; }\n\n.fa-bong:before {\n content: \"\\f55c\"; }\n\n.fa-book:before {\n content: \"\\f02d\"; }\n\n.fa-book-dead:before {\n content: \"\\f6b7\"; }\n\n.fa-book-open:before {\n content: \"\\f518\"; }\n\n.fa-book-reader:before {\n content: \"\\f5da\"; }\n\n.fa-bookmark:before {\n content: \"\\f02e\"; }\n\n.fa-bowling-ball:before {\n content: \"\\f436\"; }\n\n.fa-box:before {\n content: \"\\f466\"; }\n\n.fa-box-open:before {\n content: \"\\f49e\"; }\n\n.fa-boxes:before {\n content: \"\\f468\"; }\n\n.fa-braille:before {\n content: \"\\f2a1\"; }\n\n.fa-brain:before {\n content: \"\\f5dc\"; }\n\n.fa-briefcase:before {\n content: \"\\f0b1\"; }\n\n.fa-briefcase-medical:before {\n content: \"\\f469\"; }\n\n.fa-broadcast-tower:before {\n content: \"\\f519\"; }\n\n.fa-broom:before {\n content: \"\\f51a\"; }\n\n.fa-brush:before {\n content: \"\\f55d\"; }\n\n.fa-btc:before {\n content: \"\\f15a\"; }\n\n.fa-bug:before {\n content: \"\\f188\"; }\n\n.fa-building:before {\n content: \"\\f1ad\"; }\n\n.fa-bullhorn:before {\n content: \"\\f0a1\"; }\n\n.fa-bullseye:before {\n content: \"\\f140\"; }\n\n.fa-burn:before {\n content: \"\\f46a\"; }\n\n.fa-buromobelexperte:before {\n content: \"\\f37f\"; }\n\n.fa-bus:before {\n content: \"\\f207\"; }\n\n.fa-bus-alt:before {\n content: \"\\f55e\"; }\n\n.fa-business-time:before {\n content: \"\\f64a\"; }\n\n.fa-buysellads:before {\n content: \"\\f20d\"; }\n\n.fa-calculator:before {\n content: \"\\f1ec\"; }\n\n.fa-calendar:before {\n content: \"\\f133\"; }\n\n.fa-calendar-alt:before {\n content: \"\\f073\"; }\n\n.fa-calendar-check:before {\n content: \"\\f274\"; }\n\n.fa-calendar-minus:before {\n content: \"\\f272\"; }\n\n.fa-calendar-plus:before {\n content: \"\\f271\"; }\n\n.fa-calendar-times:before {\n content: \"\\f273\"; }\n\n.fa-camera:before {\n content: \"\\f030\"; }\n\n.fa-camera-retro:before {\n content: \"\\f083\"; }\n\n.fa-campground:before {\n content: \"\\f6bb\"; }\n\n.fa-cannabis:before {\n content: \"\\f55f\"; }\n\n.fa-capsules:before {\n content: \"\\f46b\"; }\n\n.fa-car:before {\n content: \"\\f1b9\"; }\n\n.fa-car-alt:before {\n content: \"\\f5de\"; }\n\n.fa-car-battery:before {\n content: \"\\f5df\"; }\n\n.fa-car-crash:before {\n content: \"\\f5e1\"; }\n\n.fa-car-side:before {\n content: \"\\f5e4\"; }\n\n.fa-caret-down:before {\n content: \"\\f0d7\"; }\n\n.fa-caret-left:before {\n content: \"\\f0d9\"; }\n\n.fa-caret-right:before {\n content: \"\\f0da\"; }\n\n.fa-caret-square-down:before {\n content: \"\\f150\"; }\n\n.fa-caret-square-left:before {\n content: \"\\f191\"; }\n\n.fa-caret-square-right:before {\n content: \"\\f152\"; }\n\n.fa-caret-square-up:before {\n content: \"\\f151\"; }\n\n.fa-caret-up:before {\n content: \"\\f0d8\"; }\n\n.fa-cart-arrow-down:before {\n content: \"\\f218\"; }\n\n.fa-cart-plus:before {\n content: \"\\f217\"; }\n\n.fa-cat:before {\n content: \"\\f6be\"; }\n\n.fa-cc-amazon-pay:before {\n content: \"\\f42d\"; }\n\n.fa-cc-amex:before {\n content: \"\\f1f3\"; }\n\n.fa-cc-apple-pay:before {\n content: \"\\f416\"; }\n\n.fa-cc-diners-club:before {\n content: \"\\f24c\"; }\n\n.fa-cc-discover:before {\n content: \"\\f1f2\"; }\n\n.fa-cc-jcb:before {\n content: \"\\f24b\"; }\n\n.fa-cc-mastercard:before {\n content: \"\\f1f1\"; }\n\n.fa-cc-paypal:before {\n content: \"\\f1f4\"; }\n\n.fa-cc-stripe:before {\n content: \"\\f1f5\"; }\n\n.fa-cc-visa:before {\n content: \"\\f1f0\"; }\n\n.fa-centercode:before {\n content: \"\\f380\"; }\n\n.fa-certificate:before {\n content: \"\\f0a3\"; }\n\n.fa-chair:before {\n content: \"\\f6c0\"; }\n\n.fa-chalkboard:before {\n content: \"\\f51b\"; }\n\n.fa-chalkboard-teacher:before {\n content: \"\\f51c\"; }\n\n.fa-charging-station:before {\n content: \"\\f5e7\"; }\n\n.fa-chart-area:before {\n content: \"\\f1fe\"; }\n\n.fa-chart-bar:before {\n content: \"\\f080\"; }\n\n.fa-chart-line:before {\n content: \"\\f201\"; }\n\n.fa-chart-pie:before {\n content: \"\\f200\"; }\n\n.fa-check:before {\n content: \"\\f00c\"; }\n\n.fa-check-circle:before {\n content: \"\\f058\"; }\n\n.fa-check-double:before {\n content: \"\\f560\"; }\n\n.fa-check-square:before {\n content: \"\\f14a\"; }\n\n.fa-chess:before {\n content: \"\\f439\"; }\n\n.fa-chess-bishop:before {\n content: \"\\f43a\"; }\n\n.fa-chess-board:before {\n content: \"\\f43c\"; }\n\n.fa-chess-king:before {\n content: \"\\f43f\"; }\n\n.fa-chess-knight:before {\n content: \"\\f441\"; }\n\n.fa-chess-pawn:before {\n content: \"\\f443\"; }\n\n.fa-chess-queen:before {\n content: \"\\f445\"; }\n\n.fa-chess-rook:before {\n content: \"\\f447\"; }\n\n.fa-chevron-circle-down:before {\n content: \"\\f13a\"; }\n\n.fa-chevron-circle-left:before {\n content: \"\\f137\"; }\n\n.fa-chevron-circle-right:before {\n content: \"\\f138\"; }\n\n.fa-chevron-circle-up:before {\n content: \"\\f139\"; }\n\n.fa-chevron-down:before {\n content: \"\\f078\"; }\n\n.fa-chevron-left:before {\n content: \"\\f053\"; }\n\n.fa-chevron-right:before {\n content: \"\\f054\"; }\n\n.fa-chevron-up:before {\n content: \"\\f077\"; }\n\n.fa-child:before {\n content: \"\\f1ae\"; }\n\n.fa-chrome:before {\n content: \"\\f268\"; }\n\n.fa-church:before {\n content: \"\\f51d\"; }\n\n.fa-circle:before {\n content: \"\\f111\"; }\n\n.fa-circle-notch:before {\n content: \"\\f1ce\"; }\n\n.fa-city:before {\n content: \"\\f64f\"; }\n\n.fa-clipboard:before {\n content: \"\\f328\"; }\n\n.fa-clipboard-check:before {\n content: \"\\f46c\"; }\n\n.fa-clipboard-list:before {\n content: \"\\f46d\"; }\n\n.fa-clock:before {\n content: \"\\f017\"; }\n\n.fa-clone:before {\n content: \"\\f24d\"; }\n\n.fa-closed-captioning:before {\n content: \"\\f20a\"; }\n\n.fa-cloud:before {\n content: \"\\f0c2\"; }\n\n.fa-cloud-download-alt:before {\n content: \"\\f381\"; }\n\n.fa-cloud-meatball:before {\n content: \"\\f73b\"; }\n\n.fa-cloud-moon:before {\n content: \"\\f6c3\"; }\n\n.fa-cloud-moon-rain:before {\n content: \"\\f73c\"; }\n\n.fa-cloud-rain:before {\n content: \"\\f73d\"; }\n\n.fa-cloud-showers-heavy:before {\n content: \"\\f740\"; }\n\n.fa-cloud-sun:before {\n content: \"\\f6c4\"; }\n\n.fa-cloud-sun-rain:before {\n content: \"\\f743\"; }\n\n.fa-cloud-upload-alt:before {\n content: \"\\f382\"; }\n\n.fa-cloudscale:before {\n content: \"\\f383\"; }\n\n.fa-cloudsmith:before {\n content: \"\\f384\"; }\n\n.fa-cloudversify:before {\n content: \"\\f385\"; }\n\n.fa-cocktail:before {\n content: \"\\f561\"; }\n\n.fa-code:before {\n content: \"\\f121\"; }\n\n.fa-code-branch:before {\n content: \"\\f126\"; }\n\n.fa-codepen:before {\n content: \"\\f1cb\"; }\n\n.fa-codiepie:before {\n content: \"\\f284\"; }\n\n.fa-coffee:before {\n content: \"\\f0f4\"; }\n\n.fa-cog:before {\n content: \"\\f013\"; }\n\n.fa-cogs:before {\n content: \"\\f085\"; }\n\n.fa-coins:before {\n content: \"\\f51e\"; }\n\n.fa-columns:before {\n content: \"\\f0db\"; }\n\n.fa-comment:before {\n content: \"\\f075\"; }\n\n.fa-comment-alt:before {\n content: \"\\f27a\"; }\n\n.fa-comment-dollar:before {\n content: \"\\f651\"; }\n\n.fa-comment-dots:before {\n content: \"\\f4ad\"; }\n\n.fa-comment-slash:before {\n content: \"\\f4b3\"; }\n\n.fa-comments:before {\n content: \"\\f086\"; }\n\n.fa-comments-dollar:before {\n content: \"\\f653\"; }\n\n.fa-compact-disc:before {\n content: \"\\f51f\"; }\n\n.fa-compass:before {\n content: \"\\f14e\"; }\n\n.fa-compress:before {\n content: \"\\f066\"; }\n\n.fa-compress-arrows-alt:before {\n content: \"\\f78c\"; }\n\n.fa-concierge-bell:before {\n content: \"\\f562\"; }\n\n.fa-connectdevelop:before {\n content: \"\\f20e\"; }\n\n.fa-contao:before {\n content: \"\\f26d\"; }\n\n.fa-cookie:before {\n content: \"\\f563\"; }\n\n.fa-cookie-bite:before {\n content: \"\\f564\"; }\n\n.fa-copy:before {\n content: \"\\f0c5\"; }\n\n.fa-copyright:before {\n content: \"\\f1f9\"; }\n\n.fa-couch:before {\n content: \"\\f4b8\"; }\n\n.fa-cpanel:before {\n content: \"\\f388\"; }\n\n.fa-creative-commons:before {\n content: \"\\f25e\"; }\n\n.fa-creative-commons-by:before {\n content: \"\\f4e7\"; }\n\n.fa-creative-commons-nc:before {\n content: \"\\f4e8\"; }\n\n.fa-creative-commons-nc-eu:before {\n content: \"\\f4e9\"; }\n\n.fa-creative-commons-nc-jp:before {\n content: \"\\f4ea\"; }\n\n.fa-creative-commons-nd:before {\n content: \"\\f4eb\"; }\n\n.fa-creative-commons-pd:before {\n content: \"\\f4ec\"; }\n\n.fa-creative-commons-pd-alt:before {\n content: \"\\f4ed\"; }\n\n.fa-creative-commons-remix:before {\n content: \"\\f4ee\"; }\n\n.fa-creative-commons-sa:before {\n content: \"\\f4ef\"; }\n\n.fa-creative-commons-sampling:before {\n content: \"\\f4f0\"; }\n\n.fa-creative-commons-sampling-plus:before {\n content: \"\\f4f1\"; }\n\n.fa-creative-commons-share:before {\n content: \"\\f4f2\"; }\n\n.fa-creative-commons-zero:before {\n content: \"\\f4f3\"; }\n\n.fa-credit-card:before {\n content: \"\\f09d\"; }\n\n.fa-critical-role:before {\n content: \"\\f6c9\"; }\n\n.fa-crop:before {\n content: \"\\f125\"; }\n\n.fa-crop-alt:before {\n content: \"\\f565\"; }\n\n.fa-cross:before {\n content: \"\\f654\"; }\n\n.fa-crosshairs:before {\n content: \"\\f05b\"; }\n\n.fa-crow:before {\n content: \"\\f520\"; }\n\n.fa-crown:before {\n content: \"\\f521\"; }\n\n.fa-css3:before {\n content: \"\\f13c\"; }\n\n.fa-css3-alt:before {\n content: \"\\f38b\"; }\n\n.fa-cube:before {\n content: \"\\f1b2\"; }\n\n.fa-cubes:before {\n content: \"\\f1b3\"; }\n\n.fa-cut:before {\n content: \"\\f0c4\"; }\n\n.fa-cuttlefish:before {\n content: \"\\f38c\"; }\n\n.fa-d-and-d:before {\n content: \"\\f38d\"; }\n\n.fa-d-and-d-beyond:before {\n content: \"\\f6ca\"; }\n\n.fa-dashcube:before {\n content: \"\\f210\"; }\n\n.fa-database:before {\n content: \"\\f1c0\"; }\n\n.fa-deaf:before {\n content: \"\\f2a4\"; }\n\n.fa-delicious:before {\n content: \"\\f1a5\"; }\n\n.fa-democrat:before {\n content: \"\\f747\"; }\n\n.fa-deploydog:before {\n content: \"\\f38e\"; }\n\n.fa-deskpro:before {\n content: \"\\f38f\"; }\n\n.fa-desktop:before {\n content: \"\\f108\"; }\n\n.fa-dev:before {\n content: \"\\f6cc\"; }\n\n.fa-deviantart:before {\n content: \"\\f1bd\"; }\n\n.fa-dharmachakra:before {\n content: \"\\f655\"; }\n\n.fa-diagnoses:before {\n content: \"\\f470\"; }\n\n.fa-dice:before {\n content: \"\\f522\"; }\n\n.fa-dice-d20:before {\n content: \"\\f6cf\"; }\n\n.fa-dice-d6:before {\n content: \"\\f6d1\"; }\n\n.fa-dice-five:before {\n content: \"\\f523\"; }\n\n.fa-dice-four:before {\n content: \"\\f524\"; }\n\n.fa-dice-one:before {\n content: \"\\f525\"; }\n\n.fa-dice-six:before {\n content: \"\\f526\"; }\n\n.fa-dice-three:before {\n content: \"\\f527\"; }\n\n.fa-dice-two:before {\n content: \"\\f528\"; }\n\n.fa-digg:before {\n content: \"\\f1a6\"; }\n\n.fa-digital-ocean:before {\n content: \"\\f391\"; }\n\n.fa-digital-tachograph:before {\n content: \"\\f566\"; }\n\n.fa-directions:before {\n content: \"\\f5eb\"; }\n\n.fa-discord:before {\n content: \"\\f392\"; }\n\n.fa-discourse:before {\n content: \"\\f393\"; }\n\n.fa-divide:before {\n content: \"\\f529\"; }\n\n.fa-dizzy:before {\n content: \"\\f567\"; }\n\n.fa-dna:before {\n content: \"\\f471\"; }\n\n.fa-dochub:before {\n content: \"\\f394\"; }\n\n.fa-docker:before {\n content: \"\\f395\"; }\n\n.fa-dog:before {\n content: \"\\f6d3\"; }\n\n.fa-dollar-sign:before {\n content: \"\\f155\"; }\n\n.fa-dolly:before {\n content: \"\\f472\"; }\n\n.fa-dolly-flatbed:before {\n content: \"\\f474\"; }\n\n.fa-donate:before {\n content: \"\\f4b9\"; }\n\n.fa-door-closed:before {\n content: \"\\f52a\"; }\n\n.fa-door-open:before {\n content: \"\\f52b\"; }\n\n.fa-dot-circle:before {\n content: \"\\f192\"; }\n\n.fa-dove:before {\n content: \"\\f4ba\"; }\n\n.fa-download:before {\n content: \"\\f019\"; }\n\n.fa-draft2digital:before {\n content: \"\\f396\"; }\n\n.fa-drafting-compass:before {\n content: \"\\f568\"; }\n\n.fa-dragon:before {\n content: \"\\f6d5\"; }\n\n.fa-draw-polygon:before {\n content: \"\\f5ee\"; }\n\n.fa-dribbble:before {\n content: \"\\f17d\"; }\n\n.fa-dribbble-square:before {\n content: \"\\f397\"; }\n\n.fa-dropbox:before {\n content: \"\\f16b\"; }\n\n.fa-drum:before {\n content: \"\\f569\"; }\n\n.fa-drum-steelpan:before {\n content: \"\\f56a\"; }\n\n.fa-drumstick-bite:before {\n content: \"\\f6d7\"; }\n\n.fa-drupal:before {\n content: \"\\f1a9\"; }\n\n.fa-dumbbell:before {\n content: \"\\f44b\"; }\n\n.fa-dungeon:before {\n content: \"\\f6d9\"; }\n\n.fa-dyalog:before {\n content: \"\\f399\"; }\n\n.fa-earlybirds:before {\n content: \"\\f39a\"; }\n\n.fa-ebay:before {\n content: \"\\f4f4\"; }\n\n.fa-edge:before {\n content: \"\\f282\"; }\n\n.fa-edit:before {\n content: \"\\f044\"; }\n\n.fa-eject:before {\n content: \"\\f052\"; }\n\n.fa-elementor:before {\n content: \"\\f430\"; }\n\n.fa-ellipsis-h:before {\n content: \"\\f141\"; }\n\n.fa-ellipsis-v:before {\n content: \"\\f142\"; }\n\n.fa-ello:before {\n content: \"\\f5f1\"; }\n\n.fa-ember:before {\n content: \"\\f423\"; }\n\n.fa-empire:before {\n content: \"\\f1d1\"; }\n\n.fa-envelope:before {\n content: \"\\f0e0\"; }\n\n.fa-envelope-open:before {\n content: \"\\f2b6\"; }\n\n.fa-envelope-open-text:before {\n content: \"\\f658\"; }\n\n.fa-envelope-square:before {\n content: \"\\f199\"; }\n\n.fa-envira:before {\n content: \"\\f299\"; }\n\n.fa-equals:before {\n content: \"\\f52c\"; }\n\n.fa-eraser:before {\n content: \"\\f12d\"; }\n\n.fa-erlang:before {\n content: \"\\f39d\"; }\n\n.fa-ethereum:before {\n content: \"\\f42e\"; }\n\n.fa-etsy:before {\n content: \"\\f2d7\"; }\n\n.fa-euro-sign:before {\n content: \"\\f153\"; }\n\n.fa-exchange-alt:before {\n content: \"\\f362\"; }\n\n.fa-exclamation:before {\n content: \"\\f12a\"; }\n\n.fa-exclamation-circle:before {\n content: \"\\f06a\"; }\n\n.fa-exclamation-triangle:before {\n content: \"\\f071\"; }\n\n.fa-expand:before {\n content: \"\\f065\"; }\n\n.fa-expand-arrows-alt:before {\n content: \"\\f31e\"; }\n\n.fa-expeditedssl:before {\n content: \"\\f23e\"; }\n\n.fa-external-link-alt:before {\n content: \"\\f35d\"; }\n\n.fa-external-link-square-alt:before {\n content: \"\\f360\"; }\n\n.fa-eye:before {\n content: \"\\f06e\"; }\n\n.fa-eye-dropper:before {\n content: \"\\f1fb\"; }\n\n.fa-eye-slash:before {\n content: \"\\f070\"; }\n\n.fa-facebook:before {\n content: \"\\f09a\"; }\n\n.fa-facebook-f:before {\n content: \"\\f39e\"; }\n\n.fa-facebook-messenger:before {\n content: \"\\f39f\"; }\n\n.fa-facebook-square:before {\n content: \"\\f082\"; }\n\n.fa-fantasy-flight-games:before {\n content: \"\\f6dc\"; }\n\n.fa-fast-backward:before {\n content: \"\\f049\"; }\n\n.fa-fast-forward:before {\n content: \"\\f050\"; }\n\n.fa-fax:before {\n content: \"\\f1ac\"; }\n\n.fa-feather:before {\n content: \"\\f52d\"; }\n\n.fa-feather-alt:before {\n content: \"\\f56b\"; }\n\n.fa-female:before {\n content: \"\\f182\"; }\n\n.fa-fighter-jet:before {\n content: \"\\f0fb\"; }\n\n.fa-file:before {\n content: \"\\f15b\"; }\n\n.fa-file-alt:before {\n content: \"\\f15c\"; }\n\n.fa-file-archive:before {\n content: \"\\f1c6\"; }\n\n.fa-file-audio:before {\n content: \"\\f1c7\"; }\n\n.fa-file-code:before {\n content: \"\\f1c9\"; }\n\n.fa-file-contract:before {\n content: \"\\f56c\"; }\n\n.fa-file-csv:before {\n content: \"\\f6dd\"; }\n\n.fa-file-download:before {\n content: \"\\f56d\"; }\n\n.fa-file-excel:before {\n content: \"\\f1c3\"; }\n\n.fa-file-export:before {\n content: \"\\f56e\"; }\n\n.fa-file-image:before {\n content: \"\\f1c5\"; }\n\n.fa-file-import:before {\n content: \"\\f56f\"; }\n\n.fa-file-invoice:before {\n content: \"\\f570\"; }\n\n.fa-file-invoice-dollar:before {\n content: \"\\f571\"; }\n\n.fa-file-medical:before {\n content: \"\\f477\"; }\n\n.fa-file-medical-alt:before {\n content: \"\\f478\"; }\n\n.fa-file-pdf:before {\n content: \"\\f1c1\"; }\n\n.fa-file-powerpoint:before {\n content: \"\\f1c4\"; }\n\n.fa-file-prescription:before {\n content: \"\\f572\"; }\n\n.fa-file-signature:before {\n content: \"\\f573\"; }\n\n.fa-file-upload:before {\n content: \"\\f574\"; }\n\n.fa-file-video:before {\n content: \"\\f1c8\"; }\n\n.fa-file-word:before {\n content: \"\\f1c2\"; }\n\n.fa-fill:before {\n content: \"\\f575\"; }\n\n.fa-fill-drip:before {\n content: \"\\f576\"; }\n\n.fa-film:before {\n content: \"\\f008\"; }\n\n.fa-filter:before {\n content: \"\\f0b0\"; }\n\n.fa-fingerprint:before {\n content: \"\\f577\"; }\n\n.fa-fire:before {\n content: \"\\f06d\"; }\n\n.fa-fire-extinguisher:before {\n content: \"\\f134\"; }\n\n.fa-firefox:before {\n content: \"\\f269\"; }\n\n.fa-first-aid:before {\n content: \"\\f479\"; }\n\n.fa-first-order:before {\n content: \"\\f2b0\"; }\n\n.fa-first-order-alt:before {\n content: \"\\f50a\"; }\n\n.fa-firstdraft:before {\n content: \"\\f3a1\"; }\n\n.fa-fish:before {\n content: \"\\f578\"; }\n\n.fa-fist-raised:before {\n content: \"\\f6de\"; }\n\n.fa-flag:before {\n content: \"\\f024\"; }\n\n.fa-flag-checkered:before {\n content: \"\\f11e\"; }\n\n.fa-flag-usa:before {\n content: \"\\f74d\"; }\n\n.fa-flask:before {\n content: \"\\f0c3\"; }\n\n.fa-flickr:before {\n content: \"\\f16e\"; }\n\n.fa-flipboard:before {\n content: \"\\f44d\"; }\n\n.fa-flushed:before {\n content: \"\\f579\"; }\n\n.fa-fly:before {\n content: \"\\f417\"; }\n\n.fa-folder:before {\n content: \"\\f07b\"; }\n\n.fa-folder-minus:before {\n content: \"\\f65d\"; }\n\n.fa-folder-open:before {\n content: \"\\f07c\"; }\n\n.fa-folder-plus:before {\n content: \"\\f65e\"; }\n\n.fa-font:before {\n content: \"\\f031\"; }\n\n.fa-font-awesome:before {\n content: \"\\f2b4\"; }\n\n.fa-font-awesome-alt:before {\n content: \"\\f35c\"; }\n\n.fa-font-awesome-flag:before {\n content: \"\\f425\"; }\n\n.fa-font-awesome-logo-full:before {\n content: \"\\f4e6\"; }\n\n.fa-fonticons:before {\n content: \"\\f280\"; }\n\n.fa-fonticons-fi:before {\n content: \"\\f3a2\"; }\n\n.fa-football-ball:before {\n content: \"\\f44e\"; }\n\n.fa-fort-awesome:before {\n content: \"\\f286\"; }\n\n.fa-fort-awesome-alt:before {\n content: \"\\f3a3\"; }\n\n.fa-forumbee:before {\n content: \"\\f211\"; }\n\n.fa-forward:before {\n content: \"\\f04e\"; }\n\n.fa-foursquare:before {\n content: \"\\f180\"; }\n\n.fa-free-code-camp:before {\n content: \"\\f2c5\"; }\n\n.fa-freebsd:before {\n content: \"\\f3a4\"; }\n\n.fa-frog:before {\n content: \"\\f52e\"; }\n\n.fa-frown:before {\n content: \"\\f119\"; }\n\n.fa-frown-open:before {\n content: \"\\f57a\"; }\n\n.fa-fulcrum:before {\n content: \"\\f50b\"; }\n\n.fa-funnel-dollar:before {\n content: \"\\f662\"; }\n\n.fa-futbol:before {\n content: \"\\f1e3\"; }\n\n.fa-galactic-republic:before {\n content: \"\\f50c\"; }\n\n.fa-galactic-senate:before {\n content: \"\\f50d\"; }\n\n.fa-gamepad:before {\n content: \"\\f11b\"; }\n\n.fa-gas-pump:before {\n content: \"\\f52f\"; }\n\n.fa-gavel:before {\n content: \"\\f0e3\"; }\n\n.fa-gem:before {\n content: \"\\f3a5\"; }\n\n.fa-genderless:before {\n content: \"\\f22d\"; }\n\n.fa-get-pocket:before {\n content: \"\\f265\"; }\n\n.fa-gg:before {\n content: \"\\f260\"; }\n\n.fa-gg-circle:before {\n content: \"\\f261\"; }\n\n.fa-ghost:before {\n content: \"\\f6e2\"; }\n\n.fa-gift:before {\n content: \"\\f06b\"; }\n\n.fa-git:before {\n content: \"\\f1d3\"; }\n\n.fa-git-square:before {\n content: \"\\f1d2\"; }\n\n.fa-github:before {\n content: \"\\f09b\"; }\n\n.fa-github-alt:before {\n content: \"\\f113\"; }\n\n.fa-github-square:before {\n content: \"\\f092\"; }\n\n.fa-gitkraken:before {\n content: \"\\f3a6\"; }\n\n.fa-gitlab:before {\n content: \"\\f296\"; }\n\n.fa-gitter:before {\n content: \"\\f426\"; }\n\n.fa-glass-martini:before {\n content: \"\\f000\"; }\n\n.fa-glass-martini-alt:before {\n content: \"\\f57b\"; }\n\n.fa-glasses:before {\n content: \"\\f530\"; }\n\n.fa-glide:before {\n content: \"\\f2a5\"; }\n\n.fa-glide-g:before {\n content: \"\\f2a6\"; }\n\n.fa-globe:before {\n content: \"\\f0ac\"; }\n\n.fa-globe-africa:before {\n content: \"\\f57c\"; }\n\n.fa-globe-americas:before {\n content: \"\\f57d\"; }\n\n.fa-globe-asia:before {\n content: \"\\f57e\"; }\n\n.fa-gofore:before {\n content: \"\\f3a7\"; }\n\n.fa-golf-ball:before {\n content: \"\\f450\"; }\n\n.fa-goodreads:before {\n content: \"\\f3a8\"; }\n\n.fa-goodreads-g:before {\n content: \"\\f3a9\"; }\n\n.fa-google:before {\n content: \"\\f1a0\"; }\n\n.fa-google-drive:before {\n content: \"\\f3aa\"; }\n\n.fa-google-play:before {\n content: \"\\f3ab\"; }\n\n.fa-google-plus:before {\n content: \"\\f2b3\"; }\n\n.fa-google-plus-g:before {\n content: \"\\f0d5\"; }\n\n.fa-google-plus-square:before {\n content: \"\\f0d4\"; }\n\n.fa-google-wallet:before {\n content: \"\\f1ee\"; }\n\n.fa-gopuram:before {\n content: \"\\f664\"; }\n\n.fa-graduation-cap:before {\n content: \"\\f19d\"; }\n\n.fa-gratipay:before {\n content: \"\\f184\"; }\n\n.fa-grav:before {\n content: \"\\f2d6\"; }\n\n.fa-greater-than:before {\n content: \"\\f531\"; }\n\n.fa-greater-than-equal:before {\n content: \"\\f532\"; }\n\n.fa-grimace:before {\n content: \"\\f57f\"; }\n\n.fa-grin:before {\n content: \"\\f580\"; }\n\n.fa-grin-alt:before {\n content: \"\\f581\"; }\n\n.fa-grin-beam:before {\n content: \"\\f582\"; }\n\n.fa-grin-beam-sweat:before {\n content: \"\\f583\"; }\n\n.fa-grin-hearts:before {\n content: \"\\f584\"; }\n\n.fa-grin-squint:before {\n content: \"\\f585\"; }\n\n.fa-grin-squint-tears:before {\n content: \"\\f586\"; }\n\n.fa-grin-stars:before {\n content: \"\\f587\"; }\n\n.fa-grin-tears:before {\n content: \"\\f588\"; }\n\n.fa-grin-tongue:before {\n content: \"\\f589\"; }\n\n.fa-grin-tongue-squint:before {\n content: \"\\f58a\"; }\n\n.fa-grin-tongue-wink:before {\n content: \"\\f58b\"; }\n\n.fa-grin-wink:before {\n content: \"\\f58c\"; }\n\n.fa-grip-horizontal:before {\n content: \"\\f58d\"; }\n\n.fa-grip-vertical:before {\n content: \"\\f58e\"; }\n\n.fa-gripfire:before {\n content: \"\\f3ac\"; }\n\n.fa-grunt:before {\n content: \"\\f3ad\"; }\n\n.fa-gulp:before {\n content: \"\\f3ae\"; }\n\n.fa-h-square:before {\n content: \"\\f0fd\"; }\n\n.fa-hacker-news:before {\n content: \"\\f1d4\"; }\n\n.fa-hacker-news-square:before {\n content: \"\\f3af\"; }\n\n.fa-hackerrank:before {\n content: \"\\f5f7\"; }\n\n.fa-hammer:before {\n content: \"\\f6e3\"; }\n\n.fa-hamsa:before {\n content: \"\\f665\"; }\n\n.fa-hand-holding:before {\n content: \"\\f4bd\"; }\n\n.fa-hand-holding-heart:before {\n content: \"\\f4be\"; }\n\n.fa-hand-holding-usd:before {\n content: \"\\f4c0\"; }\n\n.fa-hand-lizard:before {\n content: \"\\f258\"; }\n\n.fa-hand-paper:before {\n content: \"\\f256\"; }\n\n.fa-hand-peace:before {\n content: \"\\f25b\"; }\n\n.fa-hand-point-down:before {\n content: \"\\f0a7\"; }\n\n.fa-hand-point-left:before {\n content: \"\\f0a5\"; }\n\n.fa-hand-point-right:before {\n content: \"\\f0a4\"; }\n\n.fa-hand-point-up:before {\n content: \"\\f0a6\"; }\n\n.fa-hand-pointer:before {\n content: \"\\f25a\"; }\n\n.fa-hand-rock:before {\n content: \"\\f255\"; }\n\n.fa-hand-scissors:before {\n content: \"\\f257\"; }\n\n.fa-hand-spock:before {\n content: \"\\f259\"; }\n\n.fa-hands:before {\n content: \"\\f4c2\"; }\n\n.fa-hands-helping:before {\n content: \"\\f4c4\"; }\n\n.fa-handshake:before {\n content: \"\\f2b5\"; }\n\n.fa-hanukiah:before {\n content: \"\\f6e6\"; }\n\n.fa-hashtag:before {\n content: \"\\f292\"; }\n\n.fa-hat-wizard:before {\n content: \"\\f6e8\"; }\n\n.fa-haykal:before {\n content: \"\\f666\"; }\n\n.fa-hdd:before {\n content: \"\\f0a0\"; }\n\n.fa-heading:before {\n content: \"\\f1dc\"; }\n\n.fa-headphones:before {\n content: \"\\f025\"; }\n\n.fa-headphones-alt:before {\n content: \"\\f58f\"; }\n\n.fa-headset:before {\n content: \"\\f590\"; }\n\n.fa-heart:before {\n content: \"\\f004\"; }\n\n.fa-heartbeat:before {\n content: \"\\f21e\"; }\n\n.fa-helicopter:before {\n content: \"\\f533\"; }\n\n.fa-highlighter:before {\n content: \"\\f591\"; }\n\n.fa-hiking:before {\n content: \"\\f6ec\"; }\n\n.fa-hippo:before {\n content: \"\\f6ed\"; }\n\n.fa-hips:before {\n content: \"\\f452\"; }\n\n.fa-hire-a-helper:before {\n content: \"\\f3b0\"; }\n\n.fa-history:before {\n content: \"\\f1da\"; }\n\n.fa-hockey-puck:before {\n content: \"\\f453\"; }\n\n.fa-home:before {\n content: \"\\f015\"; }\n\n.fa-hooli:before {\n content: \"\\f427\"; }\n\n.fa-hornbill:before {\n content: \"\\f592\"; }\n\n.fa-horse:before {\n content: \"\\f6f0\"; }\n\n.fa-hospital:before {\n content: \"\\f0f8\"; }\n\n.fa-hospital-alt:before {\n content: \"\\f47d\"; }\n\n.fa-hospital-symbol:before {\n content: \"\\f47e\"; }\n\n.fa-hot-tub:before {\n content: \"\\f593\"; }\n\n.fa-hotel:before {\n content: \"\\f594\"; }\n\n.fa-hotjar:before {\n content: \"\\f3b1\"; }\n\n.fa-hourglass:before {\n content: \"\\f254\"; }\n\n.fa-hourglass-end:before {\n content: \"\\f253\"; }\n\n.fa-hourglass-half:before {\n content: \"\\f252\"; }\n\n.fa-hourglass-start:before {\n content: \"\\f251\"; }\n\n.fa-house-damage:before {\n content: \"\\f6f1\"; }\n\n.fa-houzz:before {\n content: \"\\f27c\"; }\n\n.fa-hryvnia:before {\n content: \"\\f6f2\"; }\n\n.fa-html5:before {\n content: \"\\f13b\"; }\n\n.fa-hubspot:before {\n content: \"\\f3b2\"; }\n\n.fa-i-cursor:before {\n content: \"\\f246\"; }\n\n.fa-id-badge:before {\n content: \"\\f2c1\"; }\n\n.fa-id-card:before {\n content: \"\\f2c2\"; }\n\n.fa-id-card-alt:before {\n content: \"\\f47f\"; }\n\n.fa-image:before {\n content: \"\\f03e\"; }\n\n.fa-images:before {\n content: \"\\f302\"; }\n\n.fa-imdb:before {\n content: \"\\f2d8\"; }\n\n.fa-inbox:before {\n content: \"\\f01c\"; }\n\n.fa-indent:before {\n content: \"\\f03c\"; }\n\n.fa-industry:before {\n content: \"\\f275\"; }\n\n.fa-infinity:before {\n content: \"\\f534\"; }\n\n.fa-info:before {\n content: \"\\f129\"; }\n\n.fa-info-circle:before {\n content: \"\\f05a\"; }\n\n.fa-instagram:before {\n content: \"\\f16d\"; }\n\n.fa-internet-explorer:before {\n content: \"\\f26b\"; }\n\n.fa-ioxhost:before {\n content: \"\\f208\"; }\n\n.fa-italic:before {\n content: \"\\f033\"; }\n\n.fa-itunes:before {\n content: \"\\f3b4\"; }\n\n.fa-itunes-note:before {\n content: \"\\f3b5\"; }\n\n.fa-java:before {\n content: \"\\f4e4\"; }\n\n.fa-jedi:before {\n content: \"\\f669\"; }\n\n.fa-jedi-order:before {\n content: \"\\f50e\"; }\n\n.fa-jenkins:before {\n content: \"\\f3b6\"; }\n\n.fa-joget:before {\n content: \"\\f3b7\"; }\n\n.fa-joint:before {\n content: \"\\f595\"; }\n\n.fa-joomla:before {\n content: \"\\f1aa\"; }\n\n.fa-journal-whills:before {\n content: \"\\f66a\"; }\n\n.fa-js:before {\n content: \"\\f3b8\"; }\n\n.fa-js-square:before {\n content: \"\\f3b9\"; }\n\n.fa-jsfiddle:before {\n content: \"\\f1cc\"; }\n\n.fa-kaaba:before {\n content: \"\\f66b\"; }\n\n.fa-kaggle:before {\n content: \"\\f5fa\"; }\n\n.fa-key:before {\n content: \"\\f084\"; }\n\n.fa-keybase:before {\n content: \"\\f4f5\"; }\n\n.fa-keyboard:before {\n content: \"\\f11c\"; }\n\n.fa-keycdn:before {\n content: \"\\f3ba\"; }\n\n.fa-khanda:before {\n content: \"\\f66d\"; }\n\n.fa-kickstarter:before {\n content: \"\\f3bb\"; }\n\n.fa-kickstarter-k:before {\n content: \"\\f3bc\"; }\n\n.fa-kiss:before {\n content: \"\\f596\"; }\n\n.fa-kiss-beam:before {\n content: \"\\f597\"; }\n\n.fa-kiss-wink-heart:before {\n content: \"\\f598\"; }\n\n.fa-kiwi-bird:before {\n content: \"\\f535\"; }\n\n.fa-korvue:before {\n content: \"\\f42f\"; }\n\n.fa-landmark:before {\n content: \"\\f66f\"; }\n\n.fa-language:before {\n content: \"\\f1ab\"; }\n\n.fa-laptop:before {\n content: \"\\f109\"; }\n\n.fa-laptop-code:before {\n content: \"\\f5fc\"; }\n\n.fa-laravel:before {\n content: \"\\f3bd\"; }\n\n.fa-lastfm:before {\n content: \"\\f202\"; }\n\n.fa-lastfm-square:before {\n content: \"\\f203\"; }\n\n.fa-laugh:before {\n content: \"\\f599\"; }\n\n.fa-laugh-beam:before {\n content: \"\\f59a\"; }\n\n.fa-laugh-squint:before {\n content: \"\\f59b\"; }\n\n.fa-laugh-wink:before {\n content: \"\\f59c\"; }\n\n.fa-layer-group:before {\n content: \"\\f5fd\"; }\n\n.fa-leaf:before {\n content: \"\\f06c\"; }\n\n.fa-leanpub:before {\n content: \"\\f212\"; }\n\n.fa-lemon:before {\n content: \"\\f094\"; }\n\n.fa-less:before {\n content: \"\\f41d\"; }\n\n.fa-less-than:before {\n content: \"\\f536\"; }\n\n.fa-less-than-equal:before {\n content: \"\\f537\"; }\n\n.fa-level-down-alt:before {\n content: \"\\f3be\"; }\n\n.fa-level-up-alt:before {\n content: \"\\f3bf\"; }\n\n.fa-life-ring:before {\n content: \"\\f1cd\"; }\n\n.fa-lightbulb:before {\n content: \"\\f0eb\"; }\n\n.fa-line:before {\n content: \"\\f3c0\"; }\n\n.fa-link:before {\n content: \"\\f0c1\"; }\n\n.fa-linkedin:before {\n content: \"\\f08c\"; }\n\n.fa-linkedin-in:before {\n content: \"\\f0e1\"; }\n\n.fa-linode:before {\n content: \"\\f2b8\"; }\n\n.fa-linux:before {\n content: \"\\f17c\"; }\n\n.fa-lira-sign:before {\n content: \"\\f195\"; }\n\n.fa-list:before {\n content: \"\\f03a\"; }\n\n.fa-list-alt:before {\n content: \"\\f022\"; }\n\n.fa-list-ol:before {\n content: \"\\f0cb\"; }\n\n.fa-list-ul:before {\n content: \"\\f0ca\"; }\n\n.fa-location-arrow:before {\n content: \"\\f124\"; }\n\n.fa-lock:before {\n content: \"\\f023\"; }\n\n.fa-lock-open:before {\n content: \"\\f3c1\"; }\n\n.fa-long-arrow-alt-down:before {\n content: \"\\f309\"; }\n\n.fa-long-arrow-alt-left:before {\n content: \"\\f30a\"; }\n\n.fa-long-arrow-alt-right:before {\n content: \"\\f30b\"; }\n\n.fa-long-arrow-alt-up:before {\n content: \"\\f30c\"; }\n\n.fa-low-vision:before {\n content: \"\\f2a8\"; }\n\n.fa-luggage-cart:before {\n content: \"\\f59d\"; }\n\n.fa-lyft:before {\n content: \"\\f3c3\"; }\n\n.fa-magento:before {\n content: \"\\f3c4\"; }\n\n.fa-magic:before {\n content: \"\\f0d0\"; }\n\n.fa-magnet:before {\n content: \"\\f076\"; }\n\n.fa-mail-bulk:before {\n content: \"\\f674\"; }\n\n.fa-mailchimp:before {\n content: \"\\f59e\"; }\n\n.fa-male:before {\n content: \"\\f183\"; }\n\n.fa-mandalorian:before {\n content: \"\\f50f\"; }\n\n.fa-map:before {\n content: \"\\f279\"; }\n\n.fa-map-marked:before {\n content: \"\\f59f\"; }\n\n.fa-map-marked-alt:before {\n content: \"\\f5a0\"; }\n\n.fa-map-marker:before {\n content: \"\\f041\"; }\n\n.fa-map-marker-alt:before {\n content: \"\\f3c5\"; }\n\n.fa-map-pin:before {\n content: \"\\f276\"; }\n\n.fa-map-signs:before {\n content: \"\\f277\"; }\n\n.fa-markdown:before {\n content: \"\\f60f\"; }\n\n.fa-marker:before {\n content: \"\\f5a1\"; }\n\n.fa-mars:before {\n content: \"\\f222\"; }\n\n.fa-mars-double:before {\n content: \"\\f227\"; }\n\n.fa-mars-stroke:before {\n content: \"\\f229\"; }\n\n.fa-mars-stroke-h:before {\n content: \"\\f22b\"; }\n\n.fa-mars-stroke-v:before {\n content: \"\\f22a\"; }\n\n.fa-mask:before {\n content: \"\\f6fa\"; }\n\n.fa-mastodon:before {\n content: \"\\f4f6\"; }\n\n.fa-maxcdn:before {\n content: \"\\f136\"; }\n\n.fa-medal:before {\n content: \"\\f5a2\"; }\n\n.fa-medapps:before {\n content: \"\\f3c6\"; }\n\n.fa-medium:before {\n content: \"\\f23a\"; }\n\n.fa-medium-m:before {\n content: \"\\f3c7\"; }\n\n.fa-medkit:before {\n content: \"\\f0fa\"; }\n\n.fa-medrt:before {\n content: \"\\f3c8\"; }\n\n.fa-meetup:before {\n content: \"\\f2e0\"; }\n\n.fa-megaport:before {\n content: \"\\f5a3\"; }\n\n.fa-meh:before {\n content: \"\\f11a\"; }\n\n.fa-meh-blank:before {\n content: \"\\f5a4\"; }\n\n.fa-meh-rolling-eyes:before {\n content: \"\\f5a5\"; }\n\n.fa-memory:before {\n content: \"\\f538\"; }\n\n.fa-menorah:before {\n content: \"\\f676\"; }\n\n.fa-mercury:before {\n content: \"\\f223\"; }\n\n.fa-meteor:before {\n content: \"\\f753\"; }\n\n.fa-microchip:before {\n content: \"\\f2db\"; }\n\n.fa-microphone:before {\n content: \"\\f130\"; }\n\n.fa-microphone-alt:before {\n content: \"\\f3c9\"; }\n\n.fa-microphone-alt-slash:before {\n content: \"\\f539\"; }\n\n.fa-microphone-slash:before {\n content: \"\\f131\"; }\n\n.fa-microscope:before {\n content: \"\\f610\"; }\n\n.fa-microsoft:before {\n content: \"\\f3ca\"; }\n\n.fa-minus:before {\n content: \"\\f068\"; }\n\n.fa-minus-circle:before {\n content: \"\\f056\"; }\n\n.fa-minus-square:before {\n content: \"\\f146\"; }\n\n.fa-mix:before {\n content: \"\\f3cb\"; }\n\n.fa-mixcloud:before {\n content: \"\\f289\"; }\n\n.fa-mizuni:before {\n content: \"\\f3cc\"; }\n\n.fa-mobile:before {\n content: \"\\f10b\"; }\n\n.fa-mobile-alt:before {\n content: \"\\f3cd\"; }\n\n.fa-modx:before {\n content: \"\\f285\"; }\n\n.fa-monero:before {\n content: \"\\f3d0\"; }\n\n.fa-money-bill:before {\n content: \"\\f0d6\"; }\n\n.fa-money-bill-alt:before {\n content: \"\\f3d1\"; }\n\n.fa-money-bill-wave:before {\n content: \"\\f53a\"; }\n\n.fa-money-bill-wave-alt:before {\n content: \"\\f53b\"; }\n\n.fa-money-check:before {\n content: \"\\f53c\"; }\n\n.fa-money-check-alt:before {\n content: \"\\f53d\"; }\n\n.fa-monument:before {\n content: \"\\f5a6\"; }\n\n.fa-moon:before {\n content: \"\\f186\"; }\n\n.fa-mortar-pestle:before {\n content: \"\\f5a7\"; }\n\n.fa-mosque:before {\n content: \"\\f678\"; }\n\n.fa-motorcycle:before {\n content: \"\\f21c\"; }\n\n.fa-mountain:before {\n content: \"\\f6fc\"; }\n\n.fa-mouse-pointer:before {\n content: \"\\f245\"; }\n\n.fa-music:before {\n content: \"\\f001\"; }\n\n.fa-napster:before {\n content: \"\\f3d2\"; }\n\n.fa-neos:before {\n content: \"\\f612\"; }\n\n.fa-network-wired:before {\n content: \"\\f6ff\"; }\n\n.fa-neuter:before {\n content: \"\\f22c\"; }\n\n.fa-newspaper:before {\n content: \"\\f1ea\"; }\n\n.fa-nimblr:before {\n content: \"\\f5a8\"; }\n\n.fa-nintendo-switch:before {\n content: \"\\f418\"; }\n\n.fa-node:before {\n content: \"\\f419\"; }\n\n.fa-node-js:before {\n content: \"\\f3d3\"; }\n\n.fa-not-equal:before {\n content: \"\\f53e\"; }\n\n.fa-notes-medical:before {\n content: \"\\f481\"; }\n\n.fa-npm:before {\n content: \"\\f3d4\"; }\n\n.fa-ns8:before {\n content: \"\\f3d5\"; }\n\n.fa-nutritionix:before {\n content: \"\\f3d6\"; }\n\n.fa-object-group:before {\n content: \"\\f247\"; }\n\n.fa-object-ungroup:before {\n content: \"\\f248\"; }\n\n.fa-odnoklassniki:before {\n content: \"\\f263\"; }\n\n.fa-odnoklassniki-square:before {\n content: \"\\f264\"; }\n\n.fa-oil-can:before {\n content: \"\\f613\"; }\n\n.fa-old-republic:before {\n content: \"\\f510\"; }\n\n.fa-om:before {\n content: \"\\f679\"; }\n\n.fa-opencart:before {\n content: \"\\f23d\"; }\n\n.fa-openid:before {\n content: \"\\f19b\"; }\n\n.fa-opera:before {\n content: \"\\f26a\"; }\n\n.fa-optin-monster:before {\n content: \"\\f23c\"; }\n\n.fa-osi:before {\n content: \"\\f41a\"; }\n\n.fa-otter:before {\n content: \"\\f700\"; }\n\n.fa-outdent:before {\n content: \"\\f03b\"; }\n\n.fa-page4:before {\n content: \"\\f3d7\"; }\n\n.fa-pagelines:before {\n content: \"\\f18c\"; }\n\n.fa-paint-brush:before {\n content: \"\\f1fc\"; }\n\n.fa-paint-roller:before {\n content: \"\\f5aa\"; }\n\n.fa-palette:before {\n content: \"\\f53f\"; }\n\n.fa-palfed:before {\n content: \"\\f3d8\"; }\n\n.fa-pallet:before {\n content: \"\\f482\"; }\n\n.fa-paper-plane:before {\n content: \"\\f1d8\"; }\n\n.fa-paperclip:before {\n content: \"\\f0c6\"; }\n\n.fa-parachute-box:before {\n content: \"\\f4cd\"; }\n\n.fa-paragraph:before {\n content: \"\\f1dd\"; }\n\n.fa-parking:before {\n content: \"\\f540\"; }\n\n.fa-passport:before {\n content: \"\\f5ab\"; }\n\n.fa-pastafarianism:before {\n content: \"\\f67b\"; }\n\n.fa-paste:before {\n content: \"\\f0ea\"; }\n\n.fa-patreon:before {\n content: \"\\f3d9\"; }\n\n.fa-pause:before {\n content: \"\\f04c\"; }\n\n.fa-pause-circle:before {\n content: \"\\f28b\"; }\n\n.fa-paw:before {\n content: \"\\f1b0\"; }\n\n.fa-paypal:before {\n content: \"\\f1ed\"; }\n\n.fa-peace:before {\n content: \"\\f67c\"; }\n\n.fa-pen:before {\n content: \"\\f304\"; }\n\n.fa-pen-alt:before {\n content: \"\\f305\"; }\n\n.fa-pen-fancy:before {\n content: \"\\f5ac\"; }\n\n.fa-pen-nib:before {\n content: \"\\f5ad\"; }\n\n.fa-pen-square:before {\n content: \"\\f14b\"; }\n\n.fa-pencil-alt:before {\n content: \"\\f303\"; }\n\n.fa-pencil-ruler:before {\n content: \"\\f5ae\"; }\n\n.fa-penny-arcade:before {\n content: \"\\f704\"; }\n\n.fa-people-carry:before {\n content: \"\\f4ce\"; }\n\n.fa-percent:before {\n content: \"\\f295\"; }\n\n.fa-percentage:before {\n content: \"\\f541\"; }\n\n.fa-periscope:before {\n content: \"\\f3da\"; }\n\n.fa-person-booth:before {\n content: \"\\f756\"; }\n\n.fa-phabricator:before {\n content: \"\\f3db\"; }\n\n.fa-phoenix-framework:before {\n content: \"\\f3dc\"; }\n\n.fa-phoenix-squadron:before {\n content: \"\\f511\"; }\n\n.fa-phone:before {\n content: \"\\f095\"; }\n\n.fa-phone-slash:before {\n content: \"\\f3dd\"; }\n\n.fa-phone-square:before {\n content: \"\\f098\"; }\n\n.fa-phone-volume:before {\n content: \"\\f2a0\"; }\n\n.fa-php:before {\n content: \"\\f457\"; }\n\n.fa-pied-piper:before {\n content: \"\\f2ae\"; }\n\n.fa-pied-piper-alt:before {\n content: \"\\f1a8\"; }\n\n.fa-pied-piper-hat:before {\n content: \"\\f4e5\"; }\n\n.fa-pied-piper-pp:before {\n content: \"\\f1a7\"; }\n\n.fa-piggy-bank:before {\n content: \"\\f4d3\"; }\n\n.fa-pills:before {\n content: \"\\f484\"; }\n\n.fa-pinterest:before {\n content: \"\\f0d2\"; }\n\n.fa-pinterest-p:before {\n content: \"\\f231\"; }\n\n.fa-pinterest-square:before {\n content: \"\\f0d3\"; }\n\n.fa-place-of-worship:before {\n content: \"\\f67f\"; }\n\n.fa-plane:before {\n content: \"\\f072\"; }\n\n.fa-plane-arrival:before {\n content: \"\\f5af\"; }\n\n.fa-plane-departure:before {\n content: \"\\f5b0\"; }\n\n.fa-play:before {\n content: \"\\f04b\"; }\n\n.fa-play-circle:before {\n content: \"\\f144\"; }\n\n.fa-playstation:before {\n content: \"\\f3df\"; }\n\n.fa-plug:before {\n content: \"\\f1e6\"; }\n\n.fa-plus:before {\n content: \"\\f067\"; }\n\n.fa-plus-circle:before {\n content: \"\\f055\"; }\n\n.fa-plus-square:before {\n content: \"\\f0fe\"; }\n\n.fa-podcast:before {\n content: \"\\f2ce\"; }\n\n.fa-poll:before {\n content: \"\\f681\"; }\n\n.fa-poll-h:before {\n content: \"\\f682\"; }\n\n.fa-poo:before {\n content: \"\\f2fe\"; }\n\n.fa-poo-storm:before {\n content: \"\\f75a\"; }\n\n.fa-poop:before {\n content: \"\\f619\"; }\n\n.fa-portrait:before {\n content: \"\\f3e0\"; }\n\n.fa-pound-sign:before {\n content: \"\\f154\"; }\n\n.fa-power-off:before {\n content: \"\\f011\"; }\n\n.fa-pray:before {\n content: \"\\f683\"; }\n\n.fa-praying-hands:before {\n content: \"\\f684\"; }\n\n.fa-prescription:before {\n content: \"\\f5b1\"; }\n\n.fa-prescription-bottle:before {\n content: \"\\f485\"; }\n\n.fa-prescription-bottle-alt:before {\n content: \"\\f486\"; }\n\n.fa-print:before {\n content: \"\\f02f\"; }\n\n.fa-procedures:before {\n content: \"\\f487\"; }\n\n.fa-product-hunt:before {\n content: \"\\f288\"; }\n\n.fa-project-diagram:before {\n content: \"\\f542\"; }\n\n.fa-pushed:before {\n content: \"\\f3e1\"; }\n\n.fa-puzzle-piece:before {\n content: \"\\f12e\"; }\n\n.fa-python:before {\n content: \"\\f3e2\"; }\n\n.fa-qq:before {\n content: \"\\f1d6\"; }\n\n.fa-qrcode:before {\n content: \"\\f029\"; }\n\n.fa-question:before {\n content: \"\\f128\"; }\n\n.fa-question-circle:before {\n content: \"\\f059\"; }\n\n.fa-quidditch:before {\n content: \"\\f458\"; }\n\n.fa-quinscape:before {\n content: \"\\f459\"; }\n\n.fa-quora:before {\n content: \"\\f2c4\"; }\n\n.fa-quote-left:before {\n content: \"\\f10d\"; }\n\n.fa-quote-right:before {\n content: \"\\f10e\"; }\n\n.fa-quran:before {\n content: \"\\f687\"; }\n\n.fa-r-project:before {\n content: \"\\f4f7\"; }\n\n.fa-rainbow:before {\n content: \"\\f75b\"; }\n\n.fa-random:before {\n content: \"\\f074\"; }\n\n.fa-ravelry:before {\n content: \"\\f2d9\"; }\n\n.fa-react:before {\n content: \"\\f41b\"; }\n\n.fa-reacteurope:before {\n content: \"\\f75d\"; }\n\n.fa-readme:before {\n content: \"\\f4d5\"; }\n\n.fa-rebel:before {\n content: \"\\f1d0\"; }\n\n.fa-receipt:before {\n content: \"\\f543\"; }\n\n.fa-recycle:before {\n content: \"\\f1b8\"; }\n\n.fa-red-river:before {\n content: \"\\f3e3\"; }\n\n.fa-reddit:before {\n content: \"\\f1a1\"; }\n\n.fa-reddit-alien:before {\n content: \"\\f281\"; }\n\n.fa-reddit-square:before {\n content: \"\\f1a2\"; }\n\n.fa-redo:before {\n content: \"\\f01e\"; }\n\n.fa-redo-alt:before {\n content: \"\\f2f9\"; }\n\n.fa-registered:before {\n content: \"\\f25d\"; }\n\n.fa-renren:before {\n content: \"\\f18b\"; }\n\n.fa-reply:before {\n content: \"\\f3e5\"; }\n\n.fa-reply-all:before {\n content: \"\\f122\"; }\n\n.fa-replyd:before {\n content: \"\\f3e6\"; }\n\n.fa-republican:before {\n content: \"\\f75e\"; }\n\n.fa-researchgate:before {\n content: \"\\f4f8\"; }\n\n.fa-resolving:before {\n content: \"\\f3e7\"; }\n\n.fa-retweet:before {\n content: \"\\f079\"; }\n\n.fa-rev:before {\n content: \"\\f5b2\"; }\n\n.fa-ribbon:before {\n content: \"\\f4d6\"; }\n\n.fa-ring:before {\n content: \"\\f70b\"; }\n\n.fa-road:before {\n content: \"\\f018\"; }\n\n.fa-robot:before {\n content: \"\\f544\"; }\n\n.fa-rocket:before {\n content: \"\\f135\"; }\n\n.fa-rocketchat:before {\n content: \"\\f3e8\"; }\n\n.fa-rockrms:before {\n content: \"\\f3e9\"; }\n\n.fa-route:before {\n content: \"\\f4d7\"; }\n\n.fa-rss:before {\n content: \"\\f09e\"; }\n\n.fa-rss-square:before {\n content: \"\\f143\"; }\n\n.fa-ruble-sign:before {\n content: \"\\f158\"; }\n\n.fa-ruler:before {\n content: \"\\f545\"; }\n\n.fa-ruler-combined:before {\n content: \"\\f546\"; }\n\n.fa-ruler-horizontal:before {\n content: \"\\f547\"; }\n\n.fa-ruler-vertical:before {\n content: \"\\f548\"; }\n\n.fa-running:before {\n content: \"\\f70c\"; }\n\n.fa-rupee-sign:before {\n content: \"\\f156\"; }\n\n.fa-sad-cry:before {\n content: \"\\f5b3\"; }\n\n.fa-sad-tear:before {\n content: \"\\f5b4\"; }\n\n.fa-safari:before {\n content: \"\\f267\"; }\n\n.fa-sass:before {\n content: \"\\f41e\"; }\n\n.fa-save:before {\n content: \"\\f0c7\"; }\n\n.fa-schlix:before {\n content: \"\\f3ea\"; }\n\n.fa-school:before {\n content: \"\\f549\"; }\n\n.fa-screwdriver:before {\n content: \"\\f54a\"; }\n\n.fa-scribd:before {\n content: \"\\f28a\"; }\n\n.fa-scroll:before {\n content: \"\\f70e\"; }\n\n.fa-search:before {\n content: \"\\f002\"; }\n\n.fa-search-dollar:before {\n content: \"\\f688\"; }\n\n.fa-search-location:before {\n content: \"\\f689\"; }\n\n.fa-search-minus:before {\n content: \"\\f010\"; }\n\n.fa-search-plus:before {\n content: \"\\f00e\"; }\n\n.fa-searchengin:before {\n content: \"\\f3eb\"; }\n\n.fa-seedling:before {\n content: \"\\f4d8\"; }\n\n.fa-sellcast:before {\n content: \"\\f2da\"; }\n\n.fa-sellsy:before {\n content: \"\\f213\"; }\n\n.fa-server:before {\n content: \"\\f233\"; }\n\n.fa-servicestack:before {\n content: \"\\f3ec\"; }\n\n.fa-shapes:before {\n content: \"\\f61f\"; }\n\n.fa-share:before {\n content: \"\\f064\"; }\n\n.fa-share-alt:before {\n content: \"\\f1e0\"; }\n\n.fa-share-alt-square:before {\n content: \"\\f1e1\"; }\n\n.fa-share-square:before {\n content: \"\\f14d\"; }\n\n.fa-shekel-sign:before {\n content: \"\\f20b\"; }\n\n.fa-shield-alt:before {\n content: \"\\f3ed\"; }\n\n.fa-ship:before {\n content: \"\\f21a\"; }\n\n.fa-shipping-fast:before {\n content: \"\\f48b\"; }\n\n.fa-shirtsinbulk:before {\n content: \"\\f214\"; }\n\n.fa-shoe-prints:before {\n content: \"\\f54b\"; }\n\n.fa-shopping-bag:before {\n content: \"\\f290\"; }\n\n.fa-shopping-basket:before {\n content: \"\\f291\"; }\n\n.fa-shopping-cart:before {\n content: \"\\f07a\"; }\n\n.fa-shopware:before {\n content: \"\\f5b5\"; }\n\n.fa-shower:before {\n content: \"\\f2cc\"; }\n\n.fa-shuttle-van:before {\n content: \"\\f5b6\"; }\n\n.fa-sign:before {\n content: \"\\f4d9\"; }\n\n.fa-sign-in-alt:before {\n content: \"\\f2f6\"; }\n\n.fa-sign-language:before {\n content: \"\\f2a7\"; }\n\n.fa-sign-out-alt:before {\n content: \"\\f2f5\"; }\n\n.fa-signal:before {\n content: \"\\f012\"; }\n\n.fa-signature:before {\n content: \"\\f5b7\"; }\n\n.fa-simplybuilt:before {\n content: \"\\f215\"; }\n\n.fa-sistrix:before {\n content: \"\\f3ee\"; }\n\n.fa-sitemap:before {\n content: \"\\f0e8\"; }\n\n.fa-sith:before {\n content: \"\\f512\"; }\n\n.fa-skull:before {\n content: \"\\f54c\"; }\n\n.fa-skull-crossbones:before {\n content: \"\\f714\"; }\n\n.fa-skyatlas:before {\n content: \"\\f216\"; }\n\n.fa-skype:before {\n content: \"\\f17e\"; }\n\n.fa-slack:before {\n content: \"\\f198\"; }\n\n.fa-slack-hash:before {\n content: \"\\f3ef\"; }\n\n.fa-slash:before {\n content: \"\\f715\"; }\n\n.fa-sliders-h:before {\n content: \"\\f1de\"; }\n\n.fa-slideshare:before {\n content: \"\\f1e7\"; }\n\n.fa-smile:before {\n content: \"\\f118\"; }\n\n.fa-smile-beam:before {\n content: \"\\f5b8\"; }\n\n.fa-smile-wink:before {\n content: \"\\f4da\"; }\n\n.fa-smog:before {\n content: \"\\f75f\"; }\n\n.fa-smoking:before {\n content: \"\\f48d\"; }\n\n.fa-smoking-ban:before {\n content: \"\\f54d\"; }\n\n.fa-snapchat:before {\n content: \"\\f2ab\"; }\n\n.fa-snapchat-ghost:before {\n content: \"\\f2ac\"; }\n\n.fa-snapchat-square:before {\n content: \"\\f2ad\"; }\n\n.fa-snowflake:before {\n content: \"\\f2dc\"; }\n\n.fa-socks:before {\n content: \"\\f696\"; }\n\n.fa-solar-panel:before {\n content: \"\\f5ba\"; }\n\n.fa-sort:before {\n content: \"\\f0dc\"; }\n\n.fa-sort-alpha-down:before {\n content: \"\\f15d\"; }\n\n.fa-sort-alpha-up:before {\n content: \"\\f15e\"; }\n\n.fa-sort-amount-down:before {\n content: \"\\f160\"; }\n\n.fa-sort-amount-up:before {\n content: \"\\f161\"; }\n\n.fa-sort-down:before {\n content: \"\\f0dd\"; }\n\n.fa-sort-numeric-down:before {\n content: \"\\f162\"; }\n\n.fa-sort-numeric-up:before {\n content: \"\\f163\"; }\n\n.fa-sort-up:before {\n content: \"\\f0de\"; }\n\n.fa-soundcloud:before {\n content: \"\\f1be\"; }\n\n.fa-spa:before {\n content: \"\\f5bb\"; }\n\n.fa-space-shuttle:before {\n content: \"\\f197\"; }\n\n.fa-speakap:before {\n content: \"\\f3f3\"; }\n\n.fa-spider:before {\n content: \"\\f717\"; }\n\n.fa-spinner:before {\n content: \"\\f110\"; }\n\n.fa-splotch:before {\n content: \"\\f5bc\"; }\n\n.fa-spotify:before {\n content: \"\\f1bc\"; }\n\n.fa-spray-can:before {\n content: \"\\f5bd\"; }\n\n.fa-square:before {\n content: \"\\f0c8\"; }\n\n.fa-square-full:before {\n content: \"\\f45c\"; }\n\n.fa-square-root-alt:before {\n content: \"\\f698\"; }\n\n.fa-squarespace:before {\n content: \"\\f5be\"; }\n\n.fa-stack-exchange:before {\n content: \"\\f18d\"; }\n\n.fa-stack-overflow:before {\n content: \"\\f16c\"; }\n\n.fa-stamp:before {\n content: \"\\f5bf\"; }\n\n.fa-star:before {\n content: \"\\f005\"; }\n\n.fa-star-and-crescent:before {\n content: \"\\f699\"; }\n\n.fa-star-half:before {\n content: \"\\f089\"; }\n\n.fa-star-half-alt:before {\n content: \"\\f5c0\"; }\n\n.fa-star-of-david:before {\n content: \"\\f69a\"; }\n\n.fa-star-of-life:before {\n content: \"\\f621\"; }\n\n.fa-staylinked:before {\n content: \"\\f3f5\"; }\n\n.fa-steam:before {\n content: \"\\f1b6\"; }\n\n.fa-steam-square:before {\n content: \"\\f1b7\"; }\n\n.fa-steam-symbol:before {\n content: \"\\f3f6\"; }\n\n.fa-step-backward:before {\n content: \"\\f048\"; }\n\n.fa-step-forward:before {\n content: \"\\f051\"; }\n\n.fa-stethoscope:before {\n content: \"\\f0f1\"; }\n\n.fa-sticker-mule:before {\n content: \"\\f3f7\"; }\n\n.fa-sticky-note:before {\n content: \"\\f249\"; }\n\n.fa-stop:before {\n content: \"\\f04d\"; }\n\n.fa-stop-circle:before {\n content: \"\\f28d\"; }\n\n.fa-stopwatch:before {\n content: \"\\f2f2\"; }\n\n.fa-store:before {\n content: \"\\f54e\"; }\n\n.fa-store-alt:before {\n content: \"\\f54f\"; }\n\n.fa-strava:before {\n content: \"\\f428\"; }\n\n.fa-stream:before {\n content: \"\\f550\"; }\n\n.fa-street-view:before {\n content: \"\\f21d\"; }\n\n.fa-strikethrough:before {\n content: \"\\f0cc\"; }\n\n.fa-stripe:before {\n content: \"\\f429\"; }\n\n.fa-stripe-s:before {\n content: \"\\f42a\"; }\n\n.fa-stroopwafel:before {\n content: \"\\f551\"; }\n\n.fa-studiovinari:before {\n content: \"\\f3f8\"; }\n\n.fa-stumbleupon:before {\n content: \"\\f1a4\"; }\n\n.fa-stumbleupon-circle:before {\n content: \"\\f1a3\"; }\n\n.fa-subscript:before {\n content: \"\\f12c\"; }\n\n.fa-subway:before {\n content: \"\\f239\"; }\n\n.fa-suitcase:before {\n content: \"\\f0f2\"; }\n\n.fa-suitcase-rolling:before {\n content: \"\\f5c1\"; }\n\n.fa-sun:before {\n content: \"\\f185\"; }\n\n.fa-superpowers:before {\n content: \"\\f2dd\"; }\n\n.fa-superscript:before {\n content: \"\\f12b\"; }\n\n.fa-supple:before {\n content: \"\\f3f9\"; }\n\n.fa-surprise:before {\n content: \"\\f5c2\"; }\n\n.fa-swatchbook:before {\n content: \"\\f5c3\"; }\n\n.fa-swimmer:before {\n content: \"\\f5c4\"; }\n\n.fa-swimming-pool:before {\n content: \"\\f5c5\"; }\n\n.fa-synagogue:before {\n content: \"\\f69b\"; }\n\n.fa-sync:before {\n content: \"\\f021\"; }\n\n.fa-sync-alt:before {\n content: \"\\f2f1\"; }\n\n.fa-syringe:before {\n content: \"\\f48e\"; }\n\n.fa-table:before {\n content: \"\\f0ce\"; }\n\n.fa-table-tennis:before {\n content: \"\\f45d\"; }\n\n.fa-tablet:before {\n content: \"\\f10a\"; }\n\n.fa-tablet-alt:before {\n content: \"\\f3fa\"; }\n\n.fa-tablets:before {\n content: \"\\f490\"; }\n\n.fa-tachometer-alt:before {\n content: \"\\f3fd\"; }\n\n.fa-tag:before {\n content: \"\\f02b\"; }\n\n.fa-tags:before {\n content: \"\\f02c\"; }\n\n.fa-tape:before {\n content: \"\\f4db\"; }\n\n.fa-tasks:before {\n content: \"\\f0ae\"; }\n\n.fa-taxi:before {\n content: \"\\f1ba\"; }\n\n.fa-teamspeak:before {\n content: \"\\f4f9\"; }\n\n.fa-teeth:before {\n content: \"\\f62e\"; }\n\n.fa-teeth-open:before {\n content: \"\\f62f\"; }\n\n.fa-telegram:before {\n content: \"\\f2c6\"; }\n\n.fa-telegram-plane:before {\n content: \"\\f3fe\"; }\n\n.fa-temperature-high:before {\n content: \"\\f769\"; }\n\n.fa-temperature-low:before {\n content: \"\\f76b\"; }\n\n.fa-tencent-weibo:before {\n content: \"\\f1d5\"; }\n\n.fa-terminal:before {\n content: \"\\f120\"; }\n\n.fa-text-height:before {\n content: \"\\f034\"; }\n\n.fa-text-width:before {\n content: \"\\f035\"; }\n\n.fa-th:before {\n content: \"\\f00a\"; }\n\n.fa-th-large:before {\n content: \"\\f009\"; }\n\n.fa-th-list:before {\n content: \"\\f00b\"; }\n\n.fa-the-red-yeti:before {\n content: \"\\f69d\"; }\n\n.fa-theater-masks:before {\n content: \"\\f630\"; }\n\n.fa-themeco:before {\n content: \"\\f5c6\"; }\n\n.fa-themeisle:before {\n content: \"\\f2b2\"; }\n\n.fa-thermometer:before {\n content: \"\\f491\"; }\n\n.fa-thermometer-empty:before {\n content: \"\\f2cb\"; }\n\n.fa-thermometer-full:before {\n content: \"\\f2c7\"; }\n\n.fa-thermometer-half:before {\n content: \"\\f2c9\"; }\n\n.fa-thermometer-quarter:before {\n content: \"\\f2ca\"; }\n\n.fa-thermometer-three-quarters:before {\n content: \"\\f2c8\"; }\n\n.fa-think-peaks:before {\n content: \"\\f731\"; }\n\n.fa-thumbs-down:before {\n content: \"\\f165\"; }\n\n.fa-thumbs-up:before {\n content: \"\\f164\"; }\n\n.fa-thumbtack:before {\n content: \"\\f08d\"; }\n\n.fa-ticket-alt:before {\n content: \"\\f3ff\"; }\n\n.fa-times:before {\n content: \"\\f00d\"; }\n\n.fa-times-circle:before {\n content: \"\\f057\"; }\n\n.fa-tint:before {\n content: \"\\f043\"; }\n\n.fa-tint-slash:before {\n content: \"\\f5c7\"; }\n\n.fa-tired:before {\n content: \"\\f5c8\"; }\n\n.fa-toggle-off:before {\n content: \"\\f204\"; }\n\n.fa-toggle-on:before {\n content: \"\\f205\"; }\n\n.fa-toilet-paper:before {\n content: \"\\f71e\"; }\n\n.fa-toolbox:before {\n content: \"\\f552\"; }\n\n.fa-tooth:before {\n content: \"\\f5c9\"; }\n\n.fa-torah:before {\n content: \"\\f6a0\"; }\n\n.fa-torii-gate:before {\n content: \"\\f6a1\"; }\n\n.fa-tractor:before {\n content: \"\\f722\"; }\n\n.fa-trade-federation:before {\n content: \"\\f513\"; }\n\n.fa-trademark:before {\n content: \"\\f25c\"; }\n\n.fa-traffic-light:before {\n content: \"\\f637\"; }\n\n.fa-train:before {\n content: \"\\f238\"; }\n\n.fa-transgender:before {\n content: \"\\f224\"; }\n\n.fa-transgender-alt:before {\n content: \"\\f225\"; }\n\n.fa-trash:before {\n content: \"\\f1f8\"; }\n\n.fa-trash-alt:before {\n content: \"\\f2ed\"; }\n\n.fa-tree:before {\n content: \"\\f1bb\"; }\n\n.fa-trello:before {\n content: \"\\f181\"; }\n\n.fa-tripadvisor:before {\n content: \"\\f262\"; }\n\n.fa-trophy:before {\n content: \"\\f091\"; }\n\n.fa-truck:before {\n content: \"\\f0d1\"; }\n\n.fa-truck-loading:before {\n content: \"\\f4de\"; }\n\n.fa-truck-monster:before {\n content: \"\\f63b\"; }\n\n.fa-truck-moving:before {\n content: \"\\f4df\"; }\n\n.fa-truck-pickup:before {\n content: \"\\f63c\"; }\n\n.fa-tshirt:before {\n content: \"\\f553\"; }\n\n.fa-tty:before {\n content: \"\\f1e4\"; }\n\n.fa-tumblr:before {\n content: \"\\f173\"; }\n\n.fa-tumblr-square:before {\n content: \"\\f174\"; }\n\n.fa-tv:before {\n content: \"\\f26c\"; }\n\n.fa-twitch:before {\n content: \"\\f1e8\"; }\n\n.fa-twitter:before {\n content: \"\\f099\"; }\n\n.fa-twitter-square:before {\n content: \"\\f081\"; }\n\n.fa-typo3:before {\n content: \"\\f42b\"; }\n\n.fa-uber:before {\n content: \"\\f402\"; }\n\n.fa-uikit:before {\n content: \"\\f403\"; }\n\n.fa-umbrella:before {\n content: \"\\f0e9\"; }\n\n.fa-umbrella-beach:before {\n content: \"\\f5ca\"; }\n\n.fa-underline:before {\n content: \"\\f0cd\"; }\n\n.fa-undo:before {\n content: \"\\f0e2\"; }\n\n.fa-undo-alt:before {\n content: \"\\f2ea\"; }\n\n.fa-uniregistry:before {\n content: \"\\f404\"; }\n\n.fa-universal-access:before {\n content: \"\\f29a\"; }\n\n.fa-university:before {\n content: \"\\f19c\"; }\n\n.fa-unlink:before {\n content: \"\\f127\"; }\n\n.fa-unlock:before {\n content: \"\\f09c\"; }\n\n.fa-unlock-alt:before {\n content: \"\\f13e\"; }\n\n.fa-untappd:before {\n content: \"\\f405\"; }\n\n.fa-upload:before {\n content: \"\\f093\"; }\n\n.fa-usb:before {\n content: \"\\f287\"; }\n\n.fa-user:before {\n content: \"\\f007\"; }\n\n.fa-user-alt:before {\n content: \"\\f406\"; }\n\n.fa-user-alt-slash:before {\n content: \"\\f4fa\"; }\n\n.fa-user-astronaut:before {\n content: \"\\f4fb\"; }\n\n.fa-user-check:before {\n content: \"\\f4fc\"; }\n\n.fa-user-circle:before {\n content: \"\\f2bd\"; }\n\n.fa-user-clock:before {\n content: \"\\f4fd\"; }\n\n.fa-user-cog:before {\n content: \"\\f4fe\"; }\n\n.fa-user-edit:before {\n content: \"\\f4ff\"; }\n\n.fa-user-friends:before {\n content: \"\\f500\"; }\n\n.fa-user-graduate:before {\n content: \"\\f501\"; }\n\n.fa-user-injured:before {\n content: \"\\f728\"; }\n\n.fa-user-lock:before {\n content: \"\\f502\"; }\n\n.fa-user-md:before {\n content: \"\\f0f0\"; }\n\n.fa-user-minus:before {\n content: \"\\f503\"; }\n\n.fa-user-ninja:before {\n content: \"\\f504\"; }\n\n.fa-user-plus:before {\n content: \"\\f234\"; }\n\n.fa-user-secret:before {\n content: \"\\f21b\"; }\n\n.fa-user-shield:before {\n content: \"\\f505\"; }\n\n.fa-user-slash:before {\n content: \"\\f506\"; }\n\n.fa-user-tag:before {\n content: \"\\f507\"; }\n\n.fa-user-tie:before {\n content: \"\\f508\"; }\n\n.fa-user-times:before {\n content: \"\\f235\"; }\n\n.fa-users:before {\n content: \"\\f0c0\"; }\n\n.fa-users-cog:before {\n content: \"\\f509\"; }\n\n.fa-ussunnah:before {\n content: \"\\f407\"; }\n\n.fa-utensil-spoon:before {\n content: \"\\f2e5\"; }\n\n.fa-utensils:before {\n content: \"\\f2e7\"; }\n\n.fa-vaadin:before {\n content: \"\\f408\"; }\n\n.fa-vector-square:before {\n content: \"\\f5cb\"; }\n\n.fa-venus:before {\n content: \"\\f221\"; }\n\n.fa-venus-double:before {\n content: \"\\f226\"; }\n\n.fa-venus-mars:before {\n content: \"\\f228\"; }\n\n.fa-viacoin:before {\n content: \"\\f237\"; }\n\n.fa-viadeo:before {\n content: \"\\f2a9\"; }\n\n.fa-viadeo-square:before {\n content: \"\\f2aa\"; }\n\n.fa-vial:before {\n content: \"\\f492\"; }\n\n.fa-vials:before {\n content: \"\\f493\"; }\n\n.fa-viber:before {\n content: \"\\f409\"; }\n\n.fa-video:before {\n content: \"\\f03d\"; }\n\n.fa-video-slash:before {\n content: \"\\f4e2\"; }\n\n.fa-vihara:before {\n content: \"\\f6a7\"; }\n\n.fa-vimeo:before {\n content: \"\\f40a\"; }\n\n.fa-vimeo-square:before {\n content: \"\\f194\"; }\n\n.fa-vimeo-v:before {\n content: \"\\f27d\"; }\n\n.fa-vine:before {\n content: \"\\f1ca\"; }\n\n.fa-vk:before {\n content: \"\\f189\"; }\n\n.fa-vnv:before {\n content: \"\\f40b\"; }\n\n.fa-volleyball-ball:before {\n content: \"\\f45f\"; }\n\n.fa-volume-down:before {\n content: \"\\f027\"; }\n\n.fa-volume-mute:before {\n content: \"\\f6a9\"; }\n\n.fa-volume-off:before {\n content: \"\\f026\"; }\n\n.fa-volume-up:before {\n content: \"\\f028\"; }\n\n.fa-vote-yea:before {\n content: \"\\f772\"; }\n\n.fa-vr-cardboard:before {\n content: \"\\f729\"; }\n\n.fa-vuejs:before {\n content: \"\\f41f\"; }\n\n.fa-walking:before {\n content: \"\\f554\"; }\n\n.fa-wallet:before {\n content: \"\\f555\"; }\n\n.fa-warehouse:before {\n content: \"\\f494\"; }\n\n.fa-water:before {\n content: \"\\f773\"; }\n\n.fa-weebly:before {\n content: \"\\f5cc\"; }\n\n.fa-weibo:before {\n content: \"\\f18a\"; }\n\n.fa-weight:before {\n content: \"\\f496\"; }\n\n.fa-weight-hanging:before {\n content: \"\\f5cd\"; }\n\n.fa-weixin:before {\n content: \"\\f1d7\"; }\n\n.fa-whatsapp:before {\n content: \"\\f232\"; }\n\n.fa-whatsapp-square:before {\n content: \"\\f40c\"; }\n\n.fa-wheelchair:before {\n content: \"\\f193\"; }\n\n.fa-whmcs:before {\n content: \"\\f40d\"; }\n\n.fa-wifi:before {\n content: \"\\f1eb\"; }\n\n.fa-wikipedia-w:before {\n content: \"\\f266\"; }\n\n.fa-wind:before {\n content: \"\\f72e\"; }\n\n.fa-window-close:before {\n content: \"\\f410\"; }\n\n.fa-window-maximize:before {\n content: \"\\f2d0\"; }\n\n.fa-window-minimize:before {\n content: \"\\f2d1\"; }\n\n.fa-window-restore:before {\n content: \"\\f2d2\"; }\n\n.fa-windows:before {\n content: \"\\f17a\"; }\n\n.fa-wine-bottle:before {\n content: \"\\f72f\"; }\n\n.fa-wine-glass:before {\n content: \"\\f4e3\"; }\n\n.fa-wine-glass-alt:before {\n content: \"\\f5ce\"; }\n\n.fa-wix:before {\n content: \"\\f5cf\"; }\n\n.fa-wizards-of-the-coast:before {\n content: \"\\f730\"; }\n\n.fa-wolf-pack-battalion:before {\n content: \"\\f514\"; }\n\n.fa-won-sign:before {\n content: \"\\f159\"; }\n\n.fa-wordpress:before {\n content: \"\\f19a\"; }\n\n.fa-wordpress-simple:before {\n content: \"\\f411\"; }\n\n.fa-wpbeginner:before {\n content: \"\\f297\"; }\n\n.fa-wpexplorer:before {\n content: \"\\f2de\"; }\n\n.fa-wpforms:before {\n content: \"\\f298\"; }\n\n.fa-wpressr:before {\n content: \"\\f3e4\"; }\n\n.fa-wrench:before {\n content: \"\\f0ad\"; }\n\n.fa-x-ray:before {\n content: \"\\f497\"; }\n\n.fa-xbox:before {\n content: \"\\f412\"; }\n\n.fa-xing:before {\n content: \"\\f168\"; }\n\n.fa-xing-square:before {\n content: \"\\f169\"; }\n\n.fa-y-combinator:before {\n content: \"\\f23b\"; }\n\n.fa-yahoo:before {\n content: \"\\f19e\"; }\n\n.fa-yandex:before {\n content: \"\\f413\"; }\n\n.fa-yandex-international:before {\n content: \"\\f414\"; }\n\n.fa-yelp:before {\n content: \"\\f1e9\"; }\n\n.fa-yen-sign:before {\n content: \"\\f157\"; }\n\n.fa-yin-yang:before {\n content: \"\\f6ad\"; }\n\n.fa-yoast:before {\n content: \"\\f2b1\"; }\n\n.fa-youtube:before {\n content: \"\\f167\"; }\n\n.fa-youtube-square:before {\n content: \"\\f431\"; }\n\n.fa-zhihu:before {\n content: \"\\f63f\"; }\n\n.sr-only {\n border: 0;\n clip: rect(0, 0, 0, 0);\n height: 1px;\n margin: -1px;\n overflow: hidden;\n padding: 0;\n position: absolute;\n width: 1px; }\n\n.sr-only-focusable:active, .sr-only-focusable:focus {\n clip: auto;\n height: auto;\n margin: 0;\n overflow: visible;\n position: static;\n width: auto; }\n@font-face {\n font-family: 'Font Awesome 5 Brands';\n font-style: normal;\n font-weight: normal;\n src: url($font-path + \"fa-brands-400.eot\");\n src: url($font-path + \"fa-brands-400.eot?#iefix\") format(\"embedded-opentype\"), url($font-path + \"fa-brands-400.woff2\") format(\"woff2\"), url($font-path + \"fa-brands-400.woff\") format(\"woff\"), url($font-path + \"fa-brands-400.ttf\") format(\"truetype\"), url($font-path + \"fa-brands-400.svg#fontawesome\") format(\"svg\"); }\n\n.fab {\n font-family: 'Font Awesome 5 Brands'; }\n@font-face {\n font-family: 'Font Awesome 5 Free';\n font-style: normal;\n font-weight: 400;\n src: url($font-path + \"fa-regular-400.eot\");\n src: url($font-path + \"fa-regular-400.eot?#iefix\") format(\"embedded-opentype\"), url($font-path + \"fa-regular-400.woff2\") format(\"woff2\"), url($font-path + \"fa-regular-400.woff\") format(\"woff\"), url($font-path + \"fa-regular-400.ttf\") format(\"truetype\"), url($font-path + \"fa-regular-400.svg#fontawesome\") format(\"svg\"); }\n\n.far {\n font-family: 'Font Awesome 5 Free';\n font-weight: 400; }\n@font-face {\n font-family: 'Font Awesome 5 Free';\n font-style: normal;\n font-weight: 900;\n src: url($font-path + \"fa-solid-900.eot\");\n src: url($font-path + \"fa-solid-900.eot?#iefix\") format(\"embedded-opentype\"), url($font-path + \"fa-solid-900.woff2\") format(\"woff2\"), url($font-path + \"fa-solid-900.woff\") format(\"woff\"), url($font-path + \"fa-solid-900.ttf\") format(\"truetype\"), url($font-path + \"fa-solid-900.svg#fontawesome\") format(\"svg\"); }\n\n.fa,\n.fas {\n font-family: 'Font Awesome 5 Free';\n font-weight: 900; }\n",".tykon:before {\n font-family: \"tykon\" !important;\n font-style: normal !important;\n font-weight: normal !important;\n font-variant: normal !important;\n text-transform: none !important;\n speak: none;\n line-height: 1;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\n.tykon-arrowdown:before {\n content: \"\\61\";\n}\n.tykon-arrowleft:before {\n content: \"\\62\";\n}\n.tykon-arrowright:before {\n content: \"\\63\";\n}\n.tykon-arrowup:before {\n content: \"\\64\";\n}\n.tykon-doublearrowdown:before {\n content: \"\\65\";\n}\n.tykon-filter:before {\n content: \"\\66\";\n}\n.tykon-graph1:before {\n content: \"\\67\";\n}\n.tykon-graph2:before {\n content: \"\\68\";\n}\n.tykon-label:before {\n content: \"\\69\";\n}\n.tykon-reload:before {\n content: \"\\6a\";\n}\n.tykon-select:before {\n content: \"\\6b\";\n}\n.tykon-target:before {\n content: \"\\6c\";\n}\n.tykon-undo:before {\n content: \"\\6d\";\n}\n.tykon-deployment:before {\n content: \"\\6e\";\n}\n.tykon-team:before {\n content: \"\\6f\";\n}\n.tykon-overview:before {\n content: \"\\70\";\n}\n.tykon-loadout:before {\n content: \"\\71\";\n}\n.tykon-entitlement:before {\n content: \"\\72\";\n}\n.tykon-users:before {\n content: \"\\73\";\n}\n.tykon-doublearrowdown:before {\n content: \"\\65\";\n}\n.tykon-arrowsort:before {\n content: \"\\57\";\n}\n.tykon-check:before {\n content: \"\\56\";\n}\n.tykon-copy:before {\n content: \"\\43\";\n}\n.tykon-delete:before {\n content: \"\\55\";\n}\n.tykon-download:before {\n content: \"\\4c\";\n}\n.tykon-draft:before {\n content: \"\\44\";\n}\n.tykon-edit:before {\n content: \"\\45\";\n}\n.tykon-filter:before {\n content: \"\\66\";\n}\n.tykon-graphq2:before {\n content: \"\\68\";\n}\n.tykon-help:before {\n content: \"\\3f\";\n}\n.tykon-label:before {\n content: \"\\69\";\n}\n.tykon-link:before {\n content: \"\\52\";\n}\n.tykon-lock1:before {\n content: \"\\59\";\n}\n.tykon-lock2:before {\n content: \"\\5A\";\n}\n.tykon-notifications:before {\n content: \"\\4E\";\n}\n.tykon-plus:before {\n content: \"\\2B\";\n}\n.tykon-profile:before {\n content: \"\\50\";\n}\n.tykon-reload:before {\n content: \"\\6A\";\n}\n.tykon-search:before {\n content: \"\\4F\";\n}\n.tykon-select:before {\n content: \"\\6B\";\n}\n.tykon-settings:before {\n content: \"\\53\";\n}\n.tykon-target:before {\n content: \"\\6C\";\n}\n.tykon-undo:before {\n content: \"\\6D\";\n}\n.tykon-warning:before {\n content: \"\\21\";\n}\n.tykon-x:before {\n content: \"\\58\";\n}\n.tykon-waiting:before {\n content: \"\\54\";\n}\n.tykon-fullscreen:before {\n content: \"\\e000\";\n}\n.tykon-fullscreen-exit:before {\n content: \"\\e001\";\n}\n.tykon-time:before {\n content: \"\\74\";\n}\n","h1, h2, h3, h4, h5, h6 {\n margin-bottom: $headings-margin-bottom;\n font-family: $headings-font-family;\n font-weight: $headings-font-weight;\n color: $headings-color;\n}\n\nlabel {\n display: inline-block;\n max-width: 100%;\n margin-bottom: 5px;\n color: $label-color;\n}\n\nh1 {\n font-size: text-scale('xxl');\n line-height: line-height('xxl');\n}\nh2 {\n font-size: text-scale('xl');\n line-height: line-height('xl');\n}\nh3 {\n font-size: text-scale('lg');\n line-height: line-height('lg');\n}\nh4 {\n font-size: text-scale('md');\n line-height: line-height('md');\n}\nh5 {\n font-size: text-scale('sm');\n line-height: line-height('sm');\n}\nh6 {\n font-size: text-scale('xs');\n line-height: line-height('xs');\n}\n\np,\nlabel {\n font-size: text-scale('sm');\n line-height: line-height('sm');\n font-family: $font-family-regular;\n}\n\nstrong {\n font-family: $font-family-bold;\n}\n\na:not(.tyk-button) {\n cursor: pointer;\n color: $text-color;\n font-family: $font-family-regular;\n \n &.link--bold {\n font-family: $font-family-bold;\n }\n\n + a {\n margin-left: 5px;\n }\n\n i {\n font-size: 9px\n }\n}\n\np,\nlabel {\n a {\n font-size: text-scale('sm');\n text-decoration: underline;\n }\n}\n\n.font-family-regular {\n font-family: $font-family-regular;\n}\n.font-family-medium {\n font-family: $font-family-medium;\n}\n.font-family-bold {\n font-family: $font-family-bold;\n}\n.heading-font-family-regular {\n font-family: $headings-font-family-regular;\n}\n.heading-font-family-medium {\n font-family: $headings-font-family-medium;\n}\n.heading-font-family-bold {\n font-family: $headings-font-family-bold;\n}\n\n.text {\n &--primary {\n color: theme-color('primary', 'base');\n }\n &--danger {\n color: theme-color('danger', 'base');\n }\n &--info {\n color: theme-color('info', 'base');\n }\n &-warning {\n color: theme-color('warning', 'base');\n }\n &--medium {\n font-family: $font-family-medium;\n }\n &--bold {\n font-family: $font-family-bold;\n }\n &--uppercase {\n text-transform: uppercase;\n }\n &--ellipsis {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n &--underline {\n text-decoration: underline;\n }\n}\n\ntd.text-ellipsis {\n max-width: 250px;\n}\n\n.section-title {\n font-family: $headings-font-family-bold;\n margin-bottom: 5px;\n\n .tyk-icon {\n margin-left: 5px;\n }\n}\n\n.sub-section-title {\n margin-bottom: 5px;\n font-family: $font-family-medium;\n font-size: text-scale('md');\n line-height: line-height('md');\n\n .tyk-icon {\n margin-left: 5px;\n }\n}\n\n.section-group-title {\n margin-bottom: 5px;\n font-family: $font-family-bold;\n font-size: text-scale('sm');\n line-height: line-height('sm');\n text-transform: uppercase;\n\n .tyk-icon {\n margin-left: 5px;\n }\n}\n\n.text {\n &--default-light {\n color: theme-color('default', 'light') !important;\n }\n &--default {\n color: theme-color('default', 'base') !important;\n }\n &--primary {\n color: theme-color('primary', 'base') !important;\n }\n &--danger {\n color: theme-color('danger', 'base') !important;\n }\n &--success {\n color: theme-color('success', 'base') !important;\n }\n &--warning {\n color: theme-color('warning', 'base') !important;\n }\n}","@import 'mixins';\n@import 'variables';\n\n.tyk-form-section__title {\n font-size: text-scale('base');\n margin: map-get($spacing, 'xs') 0 map-get($spacing, 'base') 0;\n\n &--light {\n color: theme-color('background', 'dark');\n }\n}\n\n.tyk-form-group {\n margin-bottom: $form-group-margin-bottom;\n\n &.has-error > .tyk-form-control__wrapper > .tyk-form-control,\n &.has-error > .tyk-form-control__wrapper > .tyk-input-group > .tyk-form-control,\n &.has-error .tyk-file-input__wrapper > .tyk-form-control {\n border: $error-border;\n border-left: $error-border-left;\n outline: none;\n\n &:focus {\n border-left: 2px solid theme-color('danger', 'dark');\n border-color: theme-color('danger', 'dark');\n outline: none;\n }\n }\n\n label {\n font-family: $font-family-medium;\n }\n\n &--inline {\n align-items: stretch;\n display: flex;\n flex-wrap: nowrap;\n\n .tyk-form-control__wrapper {\n flex: 1;\n }\n\n label {\n display: flex;\n white-space: nowrap;\n margin-right: map-get($spacing, 'md');\n margin-top: 14px;\n }\n\n input,\n select {\n display: flex;\n }\n\n .tyk-form-control__help-block {\n display: flex;\n margin-left: auto;\n }\n }\n\n &--default {\n @include form-group-variant(\n $form-default-color,\n $text-color\n );\n }\n\n &--primary {\n @include form-group-variant(\n $form-primary-color\n );\n }\n\n &--success {\n @include form-group-variant(\n $form-success-color\n );\n }\n\n &--rounded-corners {\n &.has-error > .tyk-form-control__wrapper > .tyk-form-control {\n border-left: $error-border;\n\n &:focus {\n border-left: $error-border;\n outline: none;\n }\n }\n\n .tyk-form-control {\n border-radius: $general-border-radius;\n }\n }\n}\n\n.tyk-form-group--addon-right input {\n border-right: 0 !important;\n padding-right: 0;\n}\n\n.tyk-form-group--addon-left input {\n border-left: 0 !important;\n padding-left: 0;\n}\n\n.tyk-form-group--rounded-corners.tyk-form-group--addon-right {\n input {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n }\n .tyk-input-group__addon {\n background: $form-control-addon-background-color;\n border-top-right-radius: $general-border-radius;\n border-bottom-right-radius: $general-border-radius;\n color: $text-color;\n }\n}\n\n.tyk-form-group--rounded-corners.tyk-form-group--addon-left {\n input {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n border-left: 0 !important;\n }\n .tyk-input-group__addon {\n background: $form-control-addon-background-color;\n border-top-left-radius: $general-border-radius;\n border-bottom-left-radius: $general-border-radius;\n color: $text-color;\n }\n}\n\n.tyk-form-control__error-message {\n font-family: $font-family-regular;\n font-size: text-scale('xs');\n line-height: line-height('xs');\n margin-top: 5px;\n padding: $error-message-padding;\n position: relative;\n\n &:before {\n content: '!';\n background: theme-color('danger', 'base');\n color: white;\n font-family: $font-family-bold;\n border-radius: 8px;\n display: inline-block;\n margin-right: 5px;\n padding: 0px 7px;\n }\n}\n\n.tyk-input-group {\n align-items: center;\n display: flex;\n outline: none;\n\n &__addon {\n align-items: center;\n background-color: $form-control-addon-background-color;\n border: $form-control-border;\n display: flex;\n height: $form-control-height;\n padding: $form-control-addon-padding-top $form-control-addon-padding-right $form-control-addon-padding-bottom $form-control-addon-padding-left;\n\n &:first-child {\n border-right: 0;\n }\n\n &:last-child {\n border-left: 0;\n }\n }\n}\n\n.tyk-form-control {\n font-family: $font-family-medium;\n font-size: text-scale('sm');\n line-height: line-height('sm');\n border: $form-control-border;\n background-color: white;\n color: $text-color;\n display: block;\n height: $form-control-height;\n padding: $form-control-padding-top $form-control-padding-right $form-control-padding-bottom $form-control-padding-left;\n transition: all .2s linear;\n width: 100%;\n\n &[disabled] {\n background-color: $form-control-disabled-background-color;\n\n .tyk-input-group__addon {\n background-color: $form-control-disabled-background-color;\n }\n\n cursor: not-allowed;\n }\n\n &::placeholder {\n font-family: $form-control-placeholder-font-family;\n color: $form-control-placeholder-color;\n }\n\n &:focus,\n &:active {\n outline: none;\n border: $form-control-border-focus !important;\n\n + .tyk-input-group__addon {\n border: $form-control-border-focus !important;\n border-left: none !important;\n }\n }\n\n &__help-block {\n color: $help-block-color;\n font-style: $help-block-font-style;\n font-family: $font-family-regular;\n font-size: text-scale('xs');\n line-height: line-height('xs');\n padding: $help-block-padding;\n margin: 5px 0 0 0;\n }\n}\n\nselect {\n border-radius: 0;\n -webkit-appearance: none;\n}\n\n.inline-form-wrapper {\n align-items: center;\n display: flex;\n width: 100%;\n\n .inline-form {\n width: 100%;\n }\n\n > button {\n margin-left: 10px;\n margin-bottom: map-get($spacing, 'base');\n }\n}\n\n.tyk-checkbox,\n.tyk-radio {\n margin: 10px 0;\n\n label {\n font-family: $font-family-medium;\n }\n\n input {\n margin: 0 5px 0 0;\n }\n\n &--inline {\n display: inline-flex;\n margin-left: map-get($spacing, 'base');\n\n &:first-child {\n margin-left: 0;\n }\n }\n}\n\n.tyk-inline-form {\n align-items: center;\n display: flex;\n flex-wrap: wrap;\n\n .tyk-form-group {\n flex: 1;\n margin-left: map-get($spacing, 'md');\n min-width: 200px;\n\n &:first-child {\n margin-left:0\n }\n }\n\n > .tyk-button {\n margin-left: map-get($spacing, 'md');\n margin-bottom: map-get($spacing, 'base');\n }\n}\n","@import './variables';\n\n%tyk-accordion__trigger {\n background: none;\n border: none;\n cursor: pointer;\n display: flex;\n font-size: $accordion-item-header-font-size;\n outline: none;\n padding: $accordion-item-header-padding-y $accordion-item-header-padding-x;\n width: 100%;\n\n .tyk-icon {\n margin-left: auto;\n }\n}\n\n.tyk-accordion {\n &__item {\n display: grid;\n\n &--trigger-position-left {\n grid-template-columns: $accordion-item-outside-trigger-width auto;\n grid-template-areas:\n \"trigger header\"\n \"trigger content\";\n }\n\n &--trigger-position-right {\n grid-template-columns: auto $accordion-item-outside-trigger-width;\n grid-template-areas:\n \"header trigger\"\n \"content trigger\";\n }\n\n &--trigger-in-header {\n grid-template-columns: auto;\n grid-template-areas:\n \"header\"\n \"content\";\n }\n }\n\n &__trigger-wrapper {\n grid-area: trigger;\n display: flex;\n align-items: flex-start;\n justify-content: center;\n\n .tyk-icon {\n margin-left: auto;\n margin-right: auto;\n }\n }\n\n &__trigger {\n @extend %tyk-accordion__trigger;\n }\n\n &__item-header {\n grid-area: header;\n\n > button {\n @extend %tyk-accordion__trigger;\n }\n }\n\n &__trigger--disabled {\n color: theme-color('background', 'base');\n }\n\n &__item-header.tyk-accordion__arrow-trigger {\n align-items: center;\n display: flex;\n\n > div {\n flex: 1;\n }\n\n > button {\n margin-left: auto;\n width: auto;\n }\n }\n\n &__item-content {\n grid-area: content;\n }\n}\n",":root {\n --tooltip-max-width: 450px;\n}","@import './variables';\n\n.tyk-tooltip {\n display: flex;\n align-items: center;\n background-color: theme-color('primary', 'light');\n border: 2px solid theme-color('primary', 'base');\n border-radius: $general-border-radius;\n max-width: var(--tooltip-max-width);\n padding: map-get($spacing, 'md');\n\n > .tyk-icon:first-child {\n width: 32px;\n height: 32px;\n border-radius: 50%;\n color: white;\n background-color: theme-color('default', 'base-light');\n\n &:before {\n display: flex;\n width: 100%;\n height: 100%;\n align-items: center;\n justify-content: center;\n }\n }\n\n > .tyk-icon + .tyk-tooltip__content {\n margin-left: map-get($spacing, 'md');\n }\n\n &__content {\n color: theme-color('default', 'dark');\n word-break: break-word;\n word-wrap: break-word;\n\n + .tyk-icon {\n margin-left: map-get($spacing, 'md');\n }\n }\n\n > .tyk-icon:last-child {\n cursor: pointer;\n }\n}\n","@import '../../../common/sass/variables';\n@import '../../../common/sass/mixins';\n@import './variables';\n@import './mixins';\n\n.tyk-button {\n background-color: transparent;\n border: none;\n color: white;\n cursor: pointer;\n display: inline-block;\n font-family: $button-font-family;\n text-align: center;\n text-transform: uppercase;\n text-decoration: none;\n transition: all .2s linear;\n user-select: none;\n vertical-align: middle;\n white-space: nowrap;\n\n + .tyk-button,\n + .tyk-dropdown,\n + .tyk-toggle {\n margin-left: map-get($spacing, 'sm');\n }\n\n span + i {\n margin-left: map-get($spacing, 'sm');\n }\n\n i + span {\n margin-left: map-get($spacing, 'sm');\n }\n\n &.disabled {\n cursor: not-allowed;\n opacity: 0.7;\n }\n\n &:hover {\n color: white;\n text-decoration: none;\n }\n\n &:focus {\n outline: none;\n }\n\n @include button-size(\n $padding-y-button-md,\n $padding-x-button-md,\n text-scale('sm'),\n $line-height-button-md,\n $button-border-radius\n );\n\n &--white {\n @include button-variant(\n white,\n transparent,\n theme-color('default', 'base'),\n theme-color('background', 'dark'),\n theme-color('background', 'dark'),\n theme-color('background', 'dark'),\n theme-color('background', 'dark'),\n white\n );\n }\n\n &--primary {\n @include button-variant(\n $button-primary-color,\n $button-primary-color,\n $button-primary-text-color,\n $button-primary-hover-color\n );\n\n &-link {\n @include button-variant-link(\n $button-primary-color\n );\n }\n\n &-outline {\n @include button-variant-outline(\n $button-primary-color,\n );\n }\n\n &-gradient {\n @include button-variant-gradient(\n $button-primary-gradient-start-color,\n $button-primary-gradient-end-color\n );\n }\n }\n &--success {\n @include button-variant(\n $button-success-color,\n $button-success-color,\n white,\n $button-success-hover-color,\n );\n\n &-link {\n @include button-variant-link(\n $button-success-color\n );\n }\n\n &-outline {\n @include button-variant-outline(\n $button-success-color\n );\n }\n\n &-gradient {\n @include button-variant-gradient(\n $button-success-gradient-start-color,\n $button-success-gradient-end-color\n );\n }\n }\n &--danger {\n @include button-variant(\n $button-danger-color,\n $button-danger-color,\n white,\n $button-danger-hover-color\n );\n\n &-link {\n @include button-variant-link(\n $button-danger-color\n );\n }\n\n &-outline {\n @include button-variant-outline(\n $button-danger-color\n );\n }\n\n &-gradient {\n @include button-variant-gradient(\n $button-danger-gradient-start-color,\n $button-danger-gradient-end-color\n );\n }\n }\n\n &--warning {\n @include button-variant(\n $button-warning-color,\n transparent,\n $button-warning-font-color\n );\n\n &-link {\n @include button-variant-link(\n $button-warning-color\n );\n }\n\n &-outline {\n @include button-variant-outline(\n $button-warning-color\n );\n }\n\n &-gradient {\n @include button-variant-gradient(\n $button-warning-gradient-start-color,\n $button-warning-gradient-end-color,\n $button-warning-font-color\n );\n }\n }\n &--info {\n @include button-variant(\n $button-info-color\n );\n\n &-link {\n @include button-variant-link(\n $button-info-color\n );\n }\n\n &-outline {\n @include button-variant-outline(\n $button-info-color\n );\n }\n\n &-gradient {\n @include button-variant-gradient(\n $button-info-gradient-start-color,\n $button-info-gradient-end-color,\n $button-info-font-color\n );\n }\n }\n\n &--default {\n @include button-variant(\n $button-default-color,\n $button-default-color,\n white,\n $button-default-hover-color\n );\n\n &-link {\n @include button-variant-link(\n $text-color\n );\n }\n\n &-outline {\n @include button-variant-outline(\n $button-default-color\n );\n }\n\n &-gradient {\n @include button-variant-gradient(\n $button-default-gradient-start-color,\n $button-default-gradient-end-color\n );\n }\n }\n\n &--sm {\n @include button-size(\n $padding-y-button-sm,\n $padding-x-button-sm,\n text-scale('xs'),\n line-height('xs'),\n $button-border-radius\n );\n }\n\n &--md {\n @include button-size(\n $padding-y-button-md,\n $padding-x-button-md,\n text-scale('sm'),\n line-height('sm'),\n $button-border-radius\n );\n }\n &--lg {\n @include button-size(\n $padding-y-button-lg,\n $padding-x-button-lg,\n text-scale('md'),\n line-height('md'),\n $button-border-radius\n );\n }\n\n &--icon-only {\n border-radius: $general-border-radius;\n padding: 0;\n line-height: map-get($spacing, 'md');\n width: 24px;\n\n &:hover {\n border-radius: $general-border-radius;\n }\n }\n\n &--fit {\n height: auto;\n width: auto;\n line-height: normal;\n }\n\n &--no-style {\n background: transparent;\n border: none;\n color: $text-color;\n\n &:hover {\n background: transparent;\n border: none;\n color: $text-color;\n }\n }\n}\n","@mixin button-size($padding-y, $padding-x, $font-size, $line-height, $border-radius) {\n padding: $padding-y $padding-x;\n font-size: $font-size;\n line-height: $line-height;\n border-radius: $border-radius;\n}\n\n@mixin button-variant(\n $background,\n $border: $background,\n $color: white,\n $hover-background: darken($background, 7.5%),\n $hover-border: darken($border, 10%),\n $active-background: darken($background, 10%),\n $active-border: darken($border, 12.5%),\n $hover-color: $color\n) {\n background-color: $background;\n color: $color;\n border: $general-border-width solid $border;\n\n &:hover {\n background-color: $hover-background;\n color: $hover-color;\n }\n}\n\n@mixin button-variant-link(\n $color: white\n) {\n background-color: transparent;\n border: $general-border-width solid transparent;\n color: $color;\n\n &:hover {\n background-color: transparent;\n color: $color;\n border-color: $color;\n text-decoration: underline;\n }\n}\n\n@mixin button-variant-outline(\n $border,\n $color: $border,\n $hover-color: white,\n $hover-background: $border,\n $hover-border: $border,\n $active-background: darken($border, 10%),\n $active-border: darken($border, 12.5%)\n) {\n border: $general-border-width solid $border;\n background-color: transparent;\n color: $color;\n\n &:hover {\n background-color: $border;\n color: $hover-color;\n }\n\n &.disabled {\n color: $border;\n\n &:hover {\n background-color: transparent;\n color: $border;\n }\n }\n}\n\n@mixin button-variant-gradient ($left-color, $right-color, $color: white, $hover-enabled: true) {\n border-image: linear-gradient(to right, $left-color, $right-color, $left-color) 0 round;\n background: transparent linear-gradient(to right, $left-color, $right-color, $left-color);\n background-origin: border-box;\n background-clip: border-box;\n background-size: 200% auto;\n background-position: 0 0;\n color: $color;\n\n @if $hover-enabled {\n &:hover,\n &:active,\n &:active:focus {\n border-image: linear-gradient(to right, $left-color, $right-color, $left-color) 0 round;\n background: transparent linear-gradient(to right, $left-color, $right-color, $left-color);\n background-position: 100% 0;\n background-size: 200% auto;\n background-clip: border-box;\n\n &.disabled {\n border-image: linear-gradient(to right, $left-color, $right-color, $left-color) 0 round;\n background: transparent linear-gradient(to right, $left-color, $right-color, $left-color);\n background-origin: border-box;\n background-clip: border-box;\n background-size: 200% auto;\n background-position: 0 0;\n color: $color;\n }\n }\n }\n}\n","$button-font-family: $font-family-bold !default;\n$button-border-radius: map-get($spacing, 'md') !default;\n\n$padding-y-button-sm: 3px !default;\n$padding-x-button-sm: map-get($spacing, 'base') !default;\n$padding-y-button-md: 8px !default;\n$padding-x-button-md: 23px !default;\n$padding-y-button-lg: 13px !default;\n$padding-x-button-lg: 23px !default;\n\n$line-height-button-sm: line-height('xs') !default;\n$line-height-button-md: line-height('md') !default;\n$line-height-button-lg: line-height('lg') !default;\n\n$button-default-color: theme-color('default', 'base') !default;\n$button-default-hover-color: theme-color('default', 'dark') !default;\n$button-default-gradient-start-color: theme-color('default', 'base') !default;\n$button-default-gradient-end-color: theme-color('default', 'dark') !default;\n\n$button-primary-color: theme-color('default', 'base-light') !default;\n$button-primary-hover-color: theme-color('default', 'dark') !default;\n$button-primary-text-color: white !default;\n$button-primary-gradient-start-color: theme-color('primary', 'base') !default;\n$button-primary-gradient-end-color: theme-color('primary', 'dark') !default;\n\n$button-success-color: theme-color('success', 'base') !default;\n$button-success-hover-color: theme-color('success', 'dark') !default;\n$button-success-gradient-start-color: theme-color('success', 'base') !default;\n$button-success-gradient-end-color: theme-color('success', 'dark') !default;\n\n$button-danger-color: theme-color('danger', 'base') !default;\n$button-danger-hover-color: theme-color('danger', 'dark') !default;\n$button-danger-gradient-start-color: theme-color('danger', 'base') !default;\n$button-danger-gradient-end-color: theme-color('danger', 'dark') !default;\n\n$button-warning-color: theme-color('warning', 'base') !default;\n$button-warning-font-color: white !default;\n$button-warning-gradient-start-color: theme-color('warning', 'base') !default;\n$button-warning-gradient-end-color: theme-color('warning', 'light') !default;\n\n$button-info-color: theme-color('info', 'base') !default;\n$button-info-font-color: $text-color;\n$button-info-gradient-start-color: theme-color('info', 'base') !default;\n$button-info-gradient-end-color: theme-color('info', 'light') !default;\n\n$button-icon-only-background-hover: theme-color('background', 'light') !default;\n",".tyk-button-group__wrapper {\n display: inline-block;\n position: relative;\n vertical-align: middle;\n\n label {\n font-family: $font-family-medium;\n }\n\n .tyk-button-group {\n display: flex;\n\n > .tyk-button-group:not(:first-child) {\n > .tyk-button {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n }\n }\n\n > .tyk-button-group:not(:last-child) {\n > .tyk-button {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n }\n }\n\n .tyk-button {\n border-radius: 0;\n\n + .tyk-button {\n margin-left: 0;\n }\n\n + .tyk-dropdown {\n margin-left: 0;\n }\n\n &:first-child {\n border-top-left-radius: map-get($spacing, 'md');\n border-bottom-left-radius: map-get($spacing, 'md');\n }\n\n &:last-child {\n border-top-right-radius: map-get($spacing, 'md');\n border-bottom-right-radius: map-get($spacing, 'md');\n }\n }\n }\n}\n",".tyk-chart__wrapper {\n position: relative;\n}\n\n.tyk-chart--no-data,\n.tyk-chart--loading-chart {\n filter: blur(map-get($spacing, 'sm'));\n -webkit-filter: blur(map-get($spacing, 'sm'));\n}\n",".collapse-exit,\n.collapse-exit-active,\n.collapse-exit-done {\n height: 0px;\n}\n\n.collapse-wrapper {\n overflow: hidden;\n transition: all .2s;\n}\n\n.collapse-horizontal-exit,\n.collapse-horizontal-exit-active,\n.collapse-horizontal-exit-done {\n width: 0px;\n}\n\n.collapse-horizontal-enter,\n.collapse-horizontal-enter-active,\n.collapse-horizontal-enter-done {\n width: 100%;\n}\n",".tyk-copy-to-clipboard {\n position: absolute;\n left: -1000px;\n top: -1000px;\n}","@import './variables';\n\n.tyk-fixed-wrapper {\n left: $fixed-wrapper-left;\n position: sticky;\n right: $fixed-wrapper-right;\n top: $fixed-wrapper-top;\n z-index: 8;\n\n &--scrolled {\n box-shadow: 2px 2px 5px rgba(0, 0, 0, 0.1);\n }\n}\n","$fixed-wrapper-top: 0 !default;\n$fixed-wrapper-left: 0 !default;\n$fixed-wrapper-right: 0 !default;\n",".floating-container {\n position: fixed;\n top: -9999px;\n overflow: auto;\n z-index: $modal-z-index;\n}",".tyk-icon {\n + .tyk-icon {\n margin-left: map-get($spacing, 'sm');\n }\n}\n",".tyk-infinite-scroller {\n height: 100%;\n overflow: hidden;\n position: relative;\n\n .loading {\n background: linear-gradient(180deg, rgba(255,255,255,0), rgba(255,255,255,1));\n justify-content: center;\n bottom: 0;\n display: flex;\n left: 0;\n padding: map-get($spacing, 'base') 0;\n right: 0;\n top: auto;\n width: 100%;\n }\n\n &__wrapper {\n height: 100%;\n overflow-y: auto;\n }\n}\n","@import '../../../common/sass/variables';\n@import '../../../common/sass/mixins';\n\n.tyk-info-note {\n border-radius: 0;\n position: relative;\n\n p + p {\n margin-top: map-get($spacing, 'base');\n }\n\n &:after {\n content: '';\n border-style: solid;\n border-width: 0 map-get($spacing, 'md') map-get($spacing, 'md') 0;\n border-color: transparent theme-color(\"info\", \"base\") transparent transparent;\n height: 0;\n position: absolute;\n right: 0;\n top: 0;\n width: 0;\n }\n\n .tyk-message {\n border-radius: 0;\n padding-top: 40px;\n padding-bottom: 40px;\n }\n}\n","@import '../../../common/sass/variables';\n@import '../../../common/sass/mixins';\n\n.tyk-loading__wrapper {\n background: rgba(255, 255, 255, 0.6);\n bottom: 0;\n position: absolute;\n left: 0;\n right: 0;\n top: 0;\n z-index: 99;\n}\n\n.loader-wrapper {\n min-height: 100px;\n position: relative;\n}\n\n.loading {\n position: absolute;\n top: calc(50% - map-get($spacing, 'sm'));\n left: 50%;\n\n &.relative {\n left: auto;\n padding: 25px;\n position: relative;\n text-align: center;\n top: auto;\n width: 100%;\n }\n}\n\n.loading-bar {\n display: inline-block;\n width: 4px;\n height: map-get($spacing, 'md');\n border-radius: 4px;\n animation: loading 1s ease-in-out infinite;\n margin-left: 2px;\n}\n.loading-bar:nth-child(1) {\n animation-delay: 0;\n background-color: theme-color('success', 'base');\n opacity: 1;\n}\n.loading-bar:nth-child(2) {\n animation-delay: 0.09s;\n background-color: theme-color('success', 'base');\n opacity: 0.80;\n}\n.loading-bar:nth-child(3) {\n animation-delay: .18s;\n background-color: theme-color('success', 'base');\n opacity: 0.60;\n}\n.loading-bar:nth-child(4) {\n animation-delay: .27s;\n background-color: theme-color('success', 'base');\n opacity: 0.40;\n}\n\n@keyframes loading {\n 0% {\n transform: scale(1);\n }\n 20% {\n transform: scale(1, 2.2);\n }\n 40% {\n transform: scale(1);\n }\n}\n",".tyk-list {\n border: $general-border-width solid theme-color('default', 'light');\n border-radius: $general-border-radius;\n font-size: text-scale('sm');\n list-style-type: none;\n margin: 0;\n max-height: 191px;\n padding: 0;\n overflow: auto;\n\n &--with-inline-label {\n display: flex;\n\n > label {\n margin-right: map-get($spacing, 'md');\n }\n }\n\n li {\n border-bottom: 1px solid theme-color('default', 'light');\n padding: map-get($spacing, 'sm') map-get($spacing, 'md');\n font-family: $font-family-medium;\n\n &:last-child {\n border: none;\n }\n }\n\n &--default {\n border-color: theme-color('default', 'light');\n }\n\n &--primary {\n border-color: theme-color('primary', 'base');\n\n li {\n border-color: theme-color('primary', 'light');\n color: $text-color;\n }\n }\n\n &--primary-light {\n border-color: theme-color('primary', 'light');\n\n li {\n border-color: theme-color('primary', 'light');\n color: $text-color;\n }\n }\n\n &--success {\n border-color: theme-color('success', 'base');\n color: theme-color('success', 'base');\n\n li {\n border-color: theme-color('success', 'base');\n }\n }\n\n &--danger {\n border-color: theme-color('danger', 'base');\n color: $text-color;\n\n li {\n border-color: theme-color('danger', 'light');\n }\n }\n}\n\nul.tyk-list--inline {\n align-items: center;\n display: flex;\n\n li {\n padding: 0 map-get($spacing, 'sm');\n }\n\n &.tyk-list--with-separator {\n\n li:not(:first-child) {\n border-left: 1px solid theme-color('default', 'base');\n }\n }\n}\n","@import '../../../common/sass/variables';\n@import '../../../common/sass/mixins';\n@import './mixins';\n@import './variables';\n\n.tyk-message {\n display: flex;\n align-items: center;\n border-radius: $tyk-message-border-radius;\n margin-bottom: map-get($spacing, 'md');\n padding: $tyk-message-padding-top $tyk-message-padding-right $tyk-message-padding-bottom $tyk-message-padding-left;\n\n &__content {\n flex-grow: 1;\n margin-left: map-get($spacing, 'md');\n margin-right: map-get($spacing, 'md');\n }\n\n > .tyk-icon:first-child {\n width: 32px;\n height: 32px;\n flex-shrink: 0;\n border-radius: 50%;\n color: white;\n\n &:before {\n display: flex;\n width: 100%;\n height: 100%;\n align-items: center;\n justify-content: center;\n }\n }\n\n > .tyk-icon:last-child {\n cursor: pointer;\n }\n\n &--default {\n @include message-variant(\n $tyk-message-default-background,\n $tyk-message-default-border,\n $tyk-message-default-text-color\n );\n\n > .tyk-icon:first-child {\n transform: rotate(180deg);\n }\n }\n\n &--info {\n @include message-variant(\n $tyk-message-info-background,\n $tyk-message-info-border,\n $tyk-message-info-text-color\n );\n }\n\n &--success {\n @include message-variant(\n $tyk-message-success-background,\n $tyk-message-success-border,\n $tyk-message-success-text-color\n );\n }\n\n &--warning {\n @include message-variant(\n $tyk-message-warning-background,\n $tyk-message-warning-border,\n $tyk-message-warning-text-color\n );\n }\n\n &--danger {\n @include message-variant(\n $tyk-message-danger-background,\n $tyk-message-danger-border,\n $tyk-message-danger-text-color\n );\n }\n}\n","@mixin message-variant(\n $background,\n $border: transparent,\n $color: $text-color\n) {\n background-color: $background;\n border: $general-border-width solid $border;\n color: $color;\n\n & > .tyk-icon:first-child {\n background-color: $border;\n }\n}\n","$tyk-message-padding-top: map-get($spacing, 'md') !default;\n$tyk-message-padding-right: map-get($spacing, 'md') !default;\n$tyk-message-padding-bottom: map-get($spacing, 'md') !default;\n$tyk-message-padding-left: map-get($spacing, 'md') !default;\n$tyk-message-border-radius: $general-border-radius !default;\n$tyk-message-default-background: theme-color('primary', 'light') !default;\n$tyk-message-default-border: theme-color('default', 'dark') !default;\n$tyk-message-default-text-color: theme-color('default', 'dark') !default;\n$tyk-message-info-background: theme-color('info', 'light') !default;\n$tyk-message-info-border: theme-color('info', 'base') !default;\n$tyk-message-info-text-color: theme-color('info', 'base') !default;\n$tyk-message-success-background: theme-color('success', 'light') !default;\n$tyk-message-success-border: theme-color('success', 'dark') !default;\n$tyk-message-success-text-color: theme-color('success', 'dark') !default;\n$tyk-message-warning-background: theme-color('warning', 'light') !default;\n$tyk-message-warning-border: theme-color('warning', 'base') !default;\n$tyk-message-warning-text-color: theme-color('warning', 'dark') !default;\n$tyk-message-danger-background: theme-color('danger', 'extra-light') !default;\n$tyk-message-danger-border: theme-color('danger', 'base') !default;\n$tyk-message-danger-text-color: theme-color('danger', 'dark') !default;\n","@import '../../../common/sass/variables';\n@import '../../../common/sass/mixins';\n@import './variables';\n\n.tyk-modal {\n --theme-header-height: 15px;\n --theme-header-icon-size: 65px;\n align-items: center;\n bottom: 0;\n left: 0;\n pointer-events: none;\n position: fixed;\n right: 0;\n top: 0;\n z-index: -1;\n\n .tyk-panel {\n border: $general-border-width solid theme-color('background', 'dark');\n box-shadow: none;\n -webkit-box-shadow: none;\n }\n\n .tyk-modal__dialog {\n opacity: 0;\n transition: all .2s ease;\n }\n\n &.opened {\n display: flex;\n z-index: $modal-z-index;\n\n .tyk-modal__dialog {\n display: flex;\n max-height: 92vh;\n opacity: 1;\n pointer-events: all;\n }\n }\n\n &.appear-enter-done {\n .tyk-modal__dialog {\n opacity: 1;\n margin-top: 0;\n }\n }\n\n &__theme-header {\n position: absolute;\n top: -1px;\n left: 0;\n right: 0;\n height: var(--theme-header-height);\n border-top-left-radius: $general-border-radius;\n border-top-right-radius: $general-border-radius;\n\n .tyk-icon {\n position: absolute;\n left: calc(50% - var(--theme-header-icon-size) / 2);\n top: calc((var(--theme-header-icon-size) - var(--theme-header-height)) / -2);\n width: var(--theme-header-icon-size);\n height: var(--theme-header-icon-size);\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: text-scale('xxl');\n color: white;\n }\n }\n\n &--theme-success {\n .tyk-modal__theme-header {\n background-color: theme-color('success', 'base');\n\n .tyk-icon {\n background-color: theme-color('success', 'base');\n }\n }\n }\n\n &--theme-warning {\n .tyk-modal__theme-header {\n background-color: theme-color('warning', 'base');\n\n .tyk-icon {\n background-color: theme-color('warning', 'base');\n }\n }\n }\n\n &--theme-danger {\n .tyk-modal__theme-header {\n background-color: theme-color('danger', 'base');\n\n .tyk-icon {\n background-color: theme-color('danger', 'base');\n }\n }\n }\n}\n\n.tyk-modal__dialog {\n opacity: 0;\n margin: 0 auto;\n margin-top: -5%;\n pointer-events: all;\n transition: all .2s linear;\n width: 85%;\n\n @include mq('sm') {\n width: 600px;\n }\n\n &.tyk-modal--lg {\n @include mq('sm') {\n width: 800px;\n }\n }\n}\n\n.tyk-modal__content {\n background: white;\n border-radius: $general-border-radius;\n display: flex;\n flex-direction: column;\n position: relative;\n width: 100%;\n}\n\n.tyk-modal__body {\n flex: 1;\n overflow: auto;\n --padding-top: calc(#{$tyk-modal-body-padding} + (var(--theme-header-icon-size) - var(--theme-header-height)) / 2);\n padding: var(--padding-top) $tyk-modal-body-padding $tyk-modal-body-padding;\n\n &.no-padding {\n padding: 0;\n }\n}\n\n.tyk-modal__footer {\n align-items: center;\n display: flex;\n justify-content: flex-end;\n padding: $tyk-modal-footer-padding;\n\n >:not(:first-child) {\n margin-left: map-get($spacing, 'xs');\n }\n}\n\n.tyk-modal__backdrop {\n background-color: theme-color('default', 'dark');\n border: none;\n bottom: 0;\n display: none;\n left: 0;\n position: fixed;\n right: 0;\n top: 0;\n width: 100%;\n z-index: $modal-z-index - 1;\n\n &.opened {\n display: block;\n opacity: 0.5;\n transition: opacity .2s ease;\n }\n\n &.fade-enter-done {\n opacity: 0.5;\n }\n}\n\n/* Deprecated Modal.Header and Modal.Title */\n.tyk-modal__header {\n --padding-top: calc(#{$tyk-modal-header-padding} + (var(--theme-header-icon-size) - var(--theme-header-height)) / 2);\n padding: var(--padding-top) $tyk-modal-header-padding $tyk-modal-header-padding;\n align-items: center;\n border-bottom: 1px solid $tyk-modal-borders-color;\n display: flex;\n width: 100%;\n\n .tyk-modal--theme-none & {\n padding-top: $tyk-modal-header-padding;\n }\n\n button {\n margin-left: auto;\n padding: 0 5px;\n }\n\n + .tyk-modal__body {\n padding-top: $tyk-modal-body-padding;\n }\n}\n\n.tyk-modal__title {\n font-family: $font-family-medium;\n font-weight: 500;\n margin: 0;\n width: 100%;\n}\n/* End of deprecated styles */\n","$tyk-modal-body-padding: map-get($spacing, 'lg') !default;\n$tyk-modal-footer-padding: map-get($spacing, 'lg') !default;\n// Deprecated Modal.Header and Modal.Title\n$tyk-modal-header-padding: map-get($spacing, 'lg') !default;\n$tyk-modal-borders-color: theme-color('background', 'light') !default;\n// End of deprecated styles","@import './variables';\n\n.tyk-navigation {\n background-color: $navigation-background-color;\n height: 100%;\n overflow: auto;\n padding: $navigation-padding;\n width: 100%;\n\n .tyk-navigation-item {\n width: 100%;\n\n a {\n color: $navigation-item-color;\n display: flex;\n padding: $navigation-item-padding-y $navigation-item-padding-x;\n text-decoration: none;\n transition: all .2s ease;\n\n &:hover {\n background-color: $navigation-item-hover-background-color;\n color: $navigation-item-hover-color;\n }\n\n &.active {\n background-color: $navigation-item-active-background-color;\n color: $navigation-item-active-color;\n }\n }\n }\n}\n","$navigation-background-color: white !default;\n$navigation-item-padding-y: map-get($spacing, 'sm') !default;\n$navigation-item-padding-x: map-get($spacing, 'md') !default;\n$navigation-item-background-color: white !default;\n$navigation-item-color: $text-color !default;\n$navigation-item-hover-background-color: theme-color('primary', 'base') !default;\n$navigation-item-hover-color: white !default;\n$navigation-item-active-background-color: theme-color('primary', 'dark') !default;\n$navigation-item-active-color: white !default;\n$navigation-padding: 0 !default;\n","@import './variables';\n\n.tyk-nav-bar {\n align-items: center;\n border: none;\n background-color: $nav-bar-background-color;\n font-family: $nav-bar-font-family;\n color: $nav-bar-text-color;\n margin: 0;\n padding: $nav-bar-padding;\n width: 100%;\n z-index: 8;\n transition: all .2s linear;\n\n &__pre {\n align-self: flex-end;\n color: $text-color;\n flex-basis: 100%;\n\n a {\n font-family: $font-family-bold;\n font-size: text-scale('xs');\n line-height: line-height('xs');\n color: $text-color;\n }\n }\n\n &.tyk-nav-bar__with-tabs .tyk-tabs--default > ul li button {\n padding-top: 0;\n }\n\n @media screen and (max-width: 1024px) {\n padding-left: map-get($spacing, 'md');\n\n .menu-opened & {\n transform: translate($nav-bar-animate-left);\n }\n }\n\n h1 {\n color: $nav-bar-text-color;\n }\n\n h4 {\n margin: 0;\n }\n\n .tyk-nav-bar__wrapper {\n align-items: center;\n padding-bottom: $nav-bar-bottom-padding;\n display: flex;\n flex-wrap: wrap;\n height: $nav-bar-height;\n\n &.tyk-nav-bar--align-top {\n align-items: flex-start;\n }\n\n @media screen and (max-width: 1024px) {\n padding-left: 0;\n }\n\n h1 {\n font-size: $nav-bar-header-font-size;\n font-family: $nav-bar-header-font-family;\n line-height: $nav-bar-header-line-height;\n margin: 0;\n padding-right: map-get($spacing, 'sm');\n }\n\n h4 {\n padding-right: map-get($spacing, 'sm');\n }\n\n .tyk-nav-bar__container {\n align-items: center;\n display: flex;\n flex-grow: 1;\n justify-content: space-between;\n }\n\n .tyk-nav-bar__left {\n flex-grow: 1;\n }\n\n .tyk-nav-bar__right {\n margin-left: auto;\n }\n }\n}\n","$nav-bar-background-color: white !default;\n$nav-bar-text-color: theme-color('default', 'base') !default;\n$nav-bar-padding-left: 265px !default;\n$nav-bar-animate-left: 245px !default;\n$nav-bar-top-padding: map-get($spacing, 'sm') !default;\n$nav-bar-bottom-padding: 0 !default;\n$nav-bar-left-padding: map-get($spacing, 'md') !default;\n$nav-bar-right-padding: map-get($spacing, 'md') !default;\n$nav-bar-padding: 0 $nav-bar-right-padding 0 $nav-bar-left-padding !default;\n$nav-bar-top: 51px !default;\n$nav-bar-header-font-size: text-scale('xxl') !default;\n$nav-bar-header-font-family: $headings-font-family-bold !default;\n$nav-bar-header-line-height: line-height('xxl') !default;\n$nav-bar-height: 92px !default;\n$nav-bar-font-family: $font-family-regular !default;\n","@import '../../../common/sass/variables';\n@import '../../../common/sass/mixins';\n@import './variables';\n@import './mixins';\n\n.tyk-panel {\n background: white;\n border-radius: $panel-border-radius;\n margin-bottom: 20px;\n font-family: $font-family-medium;\n position: relative;\n\n &.has-error,\n & &.has-error {\n border: $general-border-width solid theme-color('danger', 'base');\n }\n\n &__header {\n align-items: center;\n border-bottom: 1px solid $panel-default-border-bottom-color;\n display: flex;\n font-family: $font-family-regular;\n\n > .tyk-icon,\n > .tyk-tooltip__wrapper {\n margin-left: 5px;\n }\n }\n\n .tyk-panel {\n border: $general-border-width solid theme-color('default', 'light');\n box-shadow: none;\n -webkit-box-shadow: none;\n }\n\n &--blank {\n &.tyk-panel--collapsed {\n margin-bottom: 20px;\n\n .tyk-panel__header {\n margin-bottom: 0;\n }\n }\n\n .tyk-panel__header {\n margin-bottom: -20px;\n padding: $padding-y-blank-panel-header $padding-x-panel-header;\n @include panel-variant(\n white,\n theme-color('default', 'base')\n );\n }\n }\n\n &--primary {\n background-color: transparent;\n\n .tyk-panel__header {\n @include panel-variant($panel-primary-header-color, $panel-primary-header-text-color);\n }\n\n .tyk-panel__body {\n @include panel-variant($panel-primary-body-color, $panel-primary-body-text-color);\n }\n .tyk-panel__header {\n border: $panel-primary-border-color;\n }\n\n & .tyk-form-group {\n label {\n color: $panel-primary-label-color;\n }\n }\n\n .tyk-toggle {\n .tyk-toggle__label {\n color: $panel-primary-label-color;\n }\n }\n }\n\n &--success {\n .tyk-panel__header {\n @include panel-variant(\n theme-color('success', 'base')\n );\n }\n }\n &--danger {\n .tyk-panel__header {\n @include panel-variant(\n theme-color('danger', 'base')\n );\n }\n }\n &--warning {\n .tyk-panel__header {\n @include panel-variant(\n theme-color('warning', 'base')\n );\n }\n }\n}\n\n.tyk-panel__body {\n background-color: white;\n border-radius: $panel-border-radius;\n font-family: $font-family-regular;\n padding: $padding-panel-body;\n position: relative;\n transition: height .2s;\n\n & ~ .tyk-panel__header {\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0;\n }\n\n &.no-padding {\n padding: 0;\n }\n}\n\n.tyk-panel__header {\n border-radius: $panel-border-radius;\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0;\n font-family: $panel-header-font-family;\n overflow: hidden;\n padding: $padding-y-panel-header $padding-x-panel-header;\n position: relative;\n\n .tyk-panel--collapsed & {\n border-bottom-left-radius: $panel-border-radius;\n border-bottom-right-radius: $panel-border-radius;\n }\n\n & ~ .tyk-panel__body {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n }\n\n &h3 {\n margin: 0;\n }\n\n ng-transclude {\n vertical-align: middle;\n }\n\n &.collapsable {\n cursor: pointer;\n\n .tyk-panel__icon-collapse--right & {\n padding-right: $padding-x-right-panel-collapsable;\n }\n\n .tyk-panel__icon-collapse--left & {\n padding-left: $padding-x-left-panel-collapsable;\n }\n }\n\n .collapsable__arrow-right {\n font-size: text-scale('sm');\n position: absolute;\n padding: map-get($spacing, 'sm');\n right: map-get($spacing, 'sm');\n top: calc(50% - 21px);\n }\n .collapsable__arrow-left {\n font-size: text-scale('sm');\n position: absolute;\n padding: 8px 0px map-get($spacing, 'sm') 20px;\n left: 0px;\n top: calc(50% - 21px);\n }\n}\n\n.tyk-panel__footer {\n align-items: center;\n border-top: 1px solid theme-color('background', 'light');\n display: flex;\n justify-content: flex-end;\n padding: map-get($spacing, 'lg');\n\n >:not(:first-child) {\n margin-left: 5px;\n }\n}\n","$padding-y-panel-header: map-get($spacing, 'sm') !default;\n$padding-x-panel-header: 25px !default;\n$padding-y-blank-panel-header: map-get($spacing, 'md') !default;\n$padding-panel-body: 25px !default;\n$padding-x-right-panel-collapsable: 48px !default;\n$padding-x-left-panel-collapsable: $padding-x-right-panel-collapsable !default;\n$panel-border-radius: 0 !default;\n$panel-default-border-bottom-color: theme-color('background', 'base') !default;\n$panel-header-font-size: text-scale('base') !default;\n$panel-header-font-family: $font-family-medium !default;\n$panel-primary-header-color: theme-color('primary', 'base') !default;\n$panel-primary-body-color: white !default;\n$panel-primary-header-text-color: white !default;\n$panel-primary-body-text-color: $text-color !default;\n$panel-primary-label-color: $text-color !default;\n$panel-primary-border-color: none !default;\n","@mixin panel-variant($background: white, $color: white) {\n background-color: $background;\n border: none;\n color: $color;\n font-size: text-scale('lg');\n line-height: line-height('lg');\n}\n",".tyk-pill {\n align-items: center;\n border-radius: $general-border-radius;\n display: inline-flex;\n font-size: text-scale('xs');\n line-height: 19px;\n margin: $pill-margin;\n padding: 6px map-get($spacing, 'base');\n font-family: $font-family-medium;\n\n &--square {\n border-radius: 8px;\n }\n\n i {\n font-size: text-scale('xs');\n }\n\n + .tyk-pill {\n margin-right: map-get($spacing, 'sm');\n }\n\n button + span {\n margin-left: map-get($spacing, 'sm');\n }\n\n span + button {\n margin-left: map-get($spacing, 'sm');\n }\n\n &:first-child {\n margin-right: map-get($spacing, 'sm');\n }\n\n &:last-child {\n margin-right: 0;\n }\n\n &--default {\n background-color: $default-pill-background-color;\n color: $default-pill-color;\n\n i {\n color: $default-pill-color;\n }\n }\n\n &--default-outline {\n box-shadow: $default-outline-pill-box-shadow;\n color: $text-color;\n\n i {\n color: $text-color;\n }\n }\n\n &--primary {\n background-color: theme-color('primary', 'base');\n color: white;\n\n i {\n color: $default-pill-color;\n }\n }\n\n &--primary-outline {\n box-shadow: inset 0px 0px 0px 2px theme-color('primary', 'base');\n color: $text-color;\n\n i {\n color: $text-color;\n }\n }\n\n &--success {\n background-color: theme-color('success', 'base');\n color: white;\n\n i {\n color: white;\n }\n }\n\n &--success-outline {\n box-shadow: inset 0px 0px 0px 2px theme-color('success', 'base');\n color: $text-color;\n\n i {\n color: $text-color;\n }\n }\n\n &--danger {\n background-color: theme-color('danger', 'base');\n color: white;\n\n i {\n color: white;\n }\n }\n\n &--danger-outline {\n box-shadow: inset 0px 0px 0px 2px theme-color('danger', 'base');\n color: $text-color;\n\n i {\n color: $text-color;\n }\n }\n\n &--warning {\n background-color: theme-color('warning', 'base');\n color: white;\n\n i {\n color: white;\n }\n }\n\n &--warning-outline {\n box-shadow: inset 0px 0px 0px 2px theme-color('warning', 'base');\n color: $text-color;\n\n i {\n color: $text-color;\n }\n }\n\n &--info {\n background-color: theme-color('info', 'base');\n color: white;\n\n i {\n color: white;\n }\n }\n\n &--info-outline {\n box-shadow: inset 0px 0px 0px 2px theme-color('info', 'base');\n color: $text-color;\n\n i {\n color: $text-color;\n }\n }\n}\n","\n.tyk-ui-reveal-wrapper {\n display: flex;\n flex-direction: column;\n justify-content: flex-end;\n align-items: stretch;\n width: 100%;\n height: 100%;\n z-index: 1000;\n position: absolute;\n bottom: 0;\n left: 0;\n pointer-events: none;\n\n &__panel {\n max-height: calc(100% - 2rem);\n background-color: white;\n padding: 0;\n margin: 0;\n overflow-y: auto;\n display: flex;\n flex-direction: column;\n pointer-events: all;\n flex-shrink: 0;\n overflow: auto;\n }\n\n &__hole {\n flex-grow: 1;\n opacity: 0;\n width: 100%;\n background-color: green;\n -webkit-user-select: none;\n user-select: none;\n pointer-events: none;\n z-index: -1;\n }\n\n &__gutter {\n height: 2rem;\n width: 100%;\n cursor: row-resize;\n display: flex;\n background-color: theme-color('primary', 'base');\n z-index: 2;\n pointer-events: all;\n justify-content: space-between;\n align-items: stretch;\n position: relative;\n box-shadow: 0 5px 10px rgba(0, 0, 0, 0.3);\n\n &__headerleft, &__headerright\n {\n display: flex;\n align-items: center;\n flex: 1;\n }\n\n &__headerleft {\n justify-content: flex-start;\n }\n\n &__headerright {\n justify-content: flex-end;\n }\n\n &__logo {\n width: 1rem;\n height: 1rem;\n -webkit-user-select: none;\n user-select: none;\n pointer-events: none;\n padding: 0.2rem;\n z-index: 2;\n background-image: url('#{$component-images-path}/drag.svg');\n align-self: center;\n }\n }\n\n\n &__gutter__logo:hover {\n border: dashed;\n }\n\n}","@import './variables';\n\n.tyk-sidebar {\n background-color: $sidebar-background-color;\n height: $sidebar-height;\n flex: 0 0 $sidebar-width;\n padding: $sidebar-padding;\n position: -webkit-sticky;\n position: sticky;\n overflow: auto;\n top: $sidebar-top;\n}\n","$sidebar-background-color: white !default;\n$sidebar-top: 58px !default;\n$sidebar-height: calc(100vh - 58px) !default;\n$sidebar-width: 280px !default;\n$sidebar-padding: 0 !default;\n","@import '../../../common/sass/variables';\n@import '../../../common/sass/mixins';\n@import './variables';\n\n.tyk-table {\n border-collapse: collapse;\n border-spacing: 0;\n background-color: white;\n border-radius: $general-border-radius;\n width: 100%;\n\n &__wrapper {\n border: $general-border-width solid theme-color('default', 'light');\n border-radius: $general-border-radius;\n overflow: auto;\n\n &--no-border {\n border: none\n }\n\n &.no-innner-horizontal-borders {\n & .tyk-table > thead th,\n & .tyk-table > tbody td {\n border-right: none;\n }\n }\n }\n\n > thead th {\n border-right: 1px solid theme-color('default', 'light');\n color: $text-color;\n font-size: text-scale('sm');\n line-height: line-height('sm');\n font-family: $font-family-bold;\n text-transform: uppercase;\n\n &:last-child {\n border-right: none;\n }\n\n i {\n font-size: text-scale('xs');\n }\n\n .tyk-button {\n background: none;\n color: theme-color('default', 'base');\n padding: 0;\n }\n }\n\n > thead th {\n padding: $table-th-padding;\n }\n\n > tbody tr:hover {\n background: rgba(theme-color('background', 'light'), 0.4);\n }\n\n > tbody td {\n border-right: 1px solid theme-color('default', 'light');\n font-size: text-scale('sm');\n line-height: line-height('sm');\n font-family: $font-family-regular;\n padding: $table-td-padding-y $table-td-padding-x;\n\n &:last-child {\n border-right: none;\n }\n \n vertical-align: middle;\n\n &.fit {\n white-space: nowrap;\n width: 1%;\n }\n\n input:not([type='checkbox']):not([type='radio']) {\n margin-top: map-get($spacing, 'base');\n }\n\n a {\n color: $text-color;\n font-family: $font-family-medium;\n }\n\n label {\n margin: 0;\n }\n\n input[type='checkbox'] {\n margin: 0;\n }\n }\n\n tbody > tr {\n border-top: 1px solid theme-color('default', 'light');\n transition: all .4s linear;\n border-radius: $general-border-radius;\n \n &.clickable {\n cursor: pointer;\n }\n }\n\n > tbody tr td:first-child,\n > thead tr th:first-child {\n padding-left: $table-first-last-padding;\n\n &.with-icon {\n padding-left: map-get($spacing, 'base');\n }\n }\n\n > tbody tr td:last-child,\n > thead tr th:last-child {\n padding-right: $table-first-last-padding;\n\n &.with-icon {\n padding-right: map-get($spacing, 'base');\n }\n }\n\n .tyk-pagination {\n padding: $table-pagination-padding;\n\n li:first-child {\n margin-left: auto;\n }\n }\n\n .nowrap {\n white-space: nowrap;\n }\n\n .wrap {\n word-break: break-all;\n }\n}\n\n.tyk-table-search {\n padding: map-get($spacing, 'sm') 25px 0 25px;\n\n label {\n font-size: text-scale('sm');\n text-transform: uppercase;\n }\n}\n\n.header-sort {\n padding-left: 3px;\n padding-top: map-get($spacing, 'xs');\n vertical-align: middle;\n}\n\n.new-table-pagination {\n float: right;\n}\n\n.selectable > div {\n margin-left: map-get($spacing, 'md');\n}\n\n.scrollable {\n display: block;\n overflow: auto;\n}\n\n.fixed-header {\n background: white;\n position: sticky;\n top: 0;\n}\n\n.tyk-table.has-error,\n.tyk-table__wrapper.has-error {\n border: $general-border-width solid theme-color('danger', 'base') !important;\n}","$table-th-padding: map-get($spacing, 'base') map-get($spacing, 'sm') !default;\n$table-td-padding-y: map-get($spacing, 'xs') !default;\n$table-td-padding-x: map-get($spacing, 'sm') !default;\n$table-first-last-padding: 20px !default;\n$table-pagination-padding: map-get($spacing, 'md') 25px !default;\n","@import '../../../common/sass/variables';\n@import '../../../common/sass/mixins';\n@import './variables';\n\n.tyk-tabs {\n &--default {\n > ul {\n display: flex;\n list-style-type: none;\n margin: 0;\n padding: 0;\n overflow: auto;\n\n li {\n display: flex;\n white-space: nowrap;\n margin-right: $tab-button-margin;\n\n &:last-child {\n margin-right: 0;\n }\n\n &.active button,\n button:hover {\n border-bottom-color: $tab-border-color;\n color: $tab-active-button-color;\n opacity: 1;\n }\n\n button {\n background: none;\n border: none;\n border-bottom: 4px solid transparent;\n color: $tab-button-color;\n cursor: pointer;\n font-size: text-scale('sm');\n font-family: $tabs-font-familly;\n padding: $tab-button-padding;\n margin-right: map-get($spacing, 'md');\n transition: all .2s linear;\n opacity: 0.7;\n\n &:focus {\n outline: none;\n }\n }\n }\n }\n }\n}\n\n.tyk-tab {\n &__content {\n padding: $tabs-default-content-padding;\n }\n}\n","$tabs-default-content-padding: 25px !default;\n$tab-button-padding: map-get($spacing, 'sm') 2px 3px 2px !default;\n$tab-button-margin: 0px !default;\n$tabs-font-familly: $font-family-medium !default;\n$tab-button-color: $text-color !default;\n$tab-active-button-color: $text-color !default;\n$tab-border-color: theme-color('success', 'base') !default;\n",".tyk-toast {\n &__container {\n bottom: 0;\n min-width: 300px;\n position: fixed;\n right: map-get($spacing, 'md');\n z-index: 11;\n }\n\n &__message {\n position: relative;\n }\n\n &-message__button {\n color: $text-color;\n height: map-get($spacing, 'md');\n line-height: 1;\n padding: map-get($spacing, 'xs');\n position: absolute;\n right: map-get($spacing, 'xs');\n top: map-get($spacing, 'xs');\n width: map-get($spacing, 'md');\n\n &:hover {\n background: rgba(255, 255, 255, 0.3);\n color: $text-color;\n }\n }\n}\n","@import '../../../../common/sass/variables';\n@import '../../../../common/sass/mixins';\n@import './variables';\n@import '../../../../components/FloatingContainer/sass/FloatingContainer';\n\n.tyk-combobox2 {\n $container-trigger-width: 40px;\n $values-default-height: 38px;\n outline: none;\n\n &.disabled {\n .tyk-form-control {\n border: $form-control-disabled-border !important;\n background-color: $form-control-disabled-background-color;\n color: $form-control-disabled-color;\n cursor: not-allowed;\n }\n\n .tyk-combobox2__current-values .tyk-pill--combobox button {\n cursor: not-allowed;\n }\n\n &:not(.is-expand-mode) .tyk-combobox2__values-container-trigger {\n cursor: not-allowed;\n }\n\n .tyk-combobox2__entry-field {\n background-color: transparent;\n cursor: not-allowed;\n }\n }\n\n .tyk-form-control {\n display: flex;\n flex-direction: row;\n position: relative;\n min-height: 40px;\n height: auto;\n padding: 0;\n\n &:focus-within {\n outline: none;\n border: $form-control-border-focus;\n }\n }\n\n &__current-values {\n display: flex;\n flex-grow: 1;\n flex-wrap: wrap;\n padding-top: 2px;\n padding-bottom: 2px;\n padding-left: map-get($spacing, 'sm');\n max-width: calc(100% - #{$container-trigger-width});\n\n &.expand-mode {\n max-height: 1000px;\n overflow: hidden;\n transition: max-height 1s ease;\n }\n\n &--collapsed.expand-mode {\n max-height: $values-default-height;\n transition: max-height .2s ease;\n }\n\n .tyk-pill--combobox {\n margin-top: 3px;\n margin-bottom: 3px;\n background-color: $tyk-combobox-pill-background;\n border-radius: map-get($spacing, 'sm');\n color: $tyk-combobox-pill-color;\n padding: map-get($spacing, 'xs') map-get($spacing, 'sm');\n max-width: 100%;\n max-height: 26px;\n\n button {\n background: none;\n border: none;\n cursor: pointer;\n width: 23px;\n outline: none;\n\n + span {\n margin-left: 0;\n }\n }\n\n span {\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n i {\n margin-right: map-get($spacing, 'xs');\n }\n }\n }\n\n &__entry-field {\n border: none;\n line-height: 30px;\n\n &:focus,\n &:active {\n border: none;\n outline: none;\n }\n\n &::placeholder {\n color: $form-control-placeholder-color;\n font-family: $form-control-placeholder-font-family;\n }\n }\n\n &__text-value {\n font-family: $font-family-medium;\n font-size: text-scale('sm');\n line-height: line-height('sm');\n padding: 9px 5px;\n width: 100%;\n overflow: hidden;\n text-overflow: ellipsis;\n line-height: 1;\n outline: none;\n\n &.overflow-single {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n &.is-placeholder {\n color: $form-control-placeholder-color;\n font-family: $form-control-placeholder-font-family;\n }\n }\n\n &__values-container-trigger {\n position: relative;\n flex-basis: $container-trigger-width;\n display: flex;\n justify-content: center;\n align-items: center;\n cursor: pointer;\n outline: none;\n transition: all .2s;\n\n &--expanded {\n transform: rotate(180deg);\n }\n\n .tyk-icon {\n height: 14px;\n }\n }\n}\n\n.tyk-form-group--rounded-corners .tyk-combobox2-disabled-overlay {\n border-radius: calc(#{$general-border-radius} - 2px);\n}\n\n.tyk-combobox2__combobox-dropdown {\n display: flex;\n flex-direction: column;\n border: $general-border-width solid $form-default-color;\n background-color: white;\n\n &.tyk-form-group--rounded-corners {\n border-radius: $general-border-radius;\n }\n\n .tyk-combobox2__combobox-search {\n background-color: white;\n position: sticky;\n top: 0;\n padding: map-get($spacing, 'sm') map-get($spacing, 'md');\n\n + .combobox-list {\n border-top: 1px solid $form-default-color;\n }\n }\n\n .tyk-combobox2__combobox-list {\n max-height: 255px;\n\n li {\n display: flex;\n cursor: pointer;\n padding: 9px map-get($spacing, 'md');\n transition: all .2s;\n font-family: $font-family-medium;\n\n &:hover,\n &.active {\n background-color: $tyk-combobox-list-item-hover-color;\n }\n\n &.disabled {\n color: $tyk-combobox-list-item-disabled-color;\n background-color: initial;\n }\n\n + li {\n border-top: 1px solid $form-default-color;\n }\n\n i {\n margin-right: map-get($spacing, 'xs');\n }\n\n .item-name {\n overflow: hidden;\n text-overflow: ellipsis;\n line-height: 16px;\n }\n }\n }\n}\n.tyk-combobox2__values-container-trigger {\n color: $text-color;\n}\n\n.tyk-combobox2__combobox-dropdown.tyk-form-group--rounded-corners {\n z-index: 1081;\n}","$tyk-combobox-pill-background: #F0F0F0 !default;\n$tyk-combobox-pill-color: $text-color !default;\n$tyk-combobox-list-item-hover-color: theme-color('background', 'light') !default;\n$tyk-combobox-list-item-hover-color: $form-default-color !default;\n$tyk-combobox-list-item-disabled-color: $form-default-color !default;\n","@import '../../../../common/sass/variables';\n@import '../../../../common/sass/mixins';\n@import './variables';\n\n.tyk-checkbox {\n label {\n $label-indent: 20px;\n display: flex;\n align-items: flex-start;\n padding-left: $label-indent;\n\n input {\n margin-left: -1 * $label-indent;\n margin-top: 5px;\n }\n }\n\n &--theme-light {\n label {\n color: $tyk-checkbox-theme-light-label-color;\n }\n\n &.tyk-checkbox--is-disabled {\n label {\n color: $tyk-checkbox-theme-light-label-disabled-color;\n }\n }\n }\n\n &--is-disabled {\n label, p {\n cursor: not-allowed;\n opacity: 0.5;\n }\n }\n}","$tyk-checkbox-theme-light-label-color: white !default;\n$tyk-checkbox-theme-light-label-disabled-color: white !default;\n$tyk-checkbox-theme-dark-label-color: $text-color !default;\n$tyk-checkbox-theme-dark-label-disabled-color: $text-color !default;",".flatpickr-day.selected, .flatpickr-day.startRange, .flatpickr-day.endRange, .flatpickr-day.selected.inRange, .flatpickr-day.startRange.inRange, .flatpickr-day.endRange.inRange, .flatpickr-day.selected:focus, .flatpickr-day.startRange:focus, .flatpickr-day.endRange:focus, .flatpickr-day.selected:hover, .flatpickr-day.startRange:hover, .flatpickr-day.endRange:hover, .flatpickr-day.selected.prevMonthDay, .flatpickr-day.startRange.prevMonthDay, .flatpickr-day.endRange.prevMonthDay, .flatpickr-day.selected.nextMonthDay, .flatpickr-day.startRange.nextMonthDay, .flatpickr-day.endRange.nextMonthDay {\n background: theme-color('success', 'base') !important;\n border-color: theme-color('success', 'base') !important;\n}","@import '../../../../common/sass/variables';\n@import '../../../../common/sass/mixins';\n@import './variables';\n\n.tyk-dropdown {\n display: inline-block;\n\n + .tyk-button,\n + .tyk-dropdown,\n + .tyk-toggle {\n margin-left: map-get($spacing, 'sm')\n }\n\n &--block {\n left: map-get($spacing, 'md');\n right: map-get($spacing, 'md');\n }\n\n &--relative {\n left: auto;\n right: auto;\n }\n\n &--custom {\n padding: map-get($spacing, 'md') 25px;\n }\n\n label {\n display: block;\n }\n\n &__trigger {\n position: relative;\n }\n\n &.theme-list .tyk-button {\n background: white;\n border: $general-border-width solid theme-color('default', 'base');\n border-radius: $general-border-radius;\n color: $text-color;\n\n &:hover,\n &:active,\n &:active:focus,\n &:focus {\n background: white;\n border-color: theme-color('background', 'dark');\n color: $text-color;\n }\n }\n}\n\n.tyk-dropdown-menu {\n background: $tyk-dropdown-item-background;\n border: $general-border-width solid theme-color('default', 'light');\n border-radius: $general-border-radius;\n -webkit-filter: drop-shadow(1px 2px 1px rgba(0, 0, 0, 0.1));\n filter: drop-shadow(1px 2px 1px rgba(0, 0, 0, 0.1));\n list-style-type: none;\n margin: 0;\n margin-top: 3px;\n overflow: hidden;\n padding: 0;\n z-index: 1081;\n\n &.tyk-dropdown--scrollable {\n overflow: auto;\n }\n\n .tyk-panel {\n margin: 0;\n }\n\n &.opened {\n display: flex;\n flex-direction: column;\n position: absolute;\n }\n\n > li {\n background: $tyk-dropdown-item-background;\n border-bottom: 1px solid $tyk-dropdown-item-border-color;\n display: flex;\n position: relative;\n z-index: 7;\n\n &:last-child {\n border: none;\n }\n\n i {\n left: 7px;\n position: absolute;\n top: 9px;\n }\n }\n}\n\n.tyk-dropdown-menu > li > a {\n cursor: pointer;\n color: $tyk-dropdown-item-text-color;\n display: flex;\n font-size: 12px;\n padding: 7px 24px;\n text-transform: uppercase;\n text-decoration: none;\n width: 100%;\n\n &:hover {\n color: $tyk-dropdown-item-hover-text-color;\n }\n\n .badge {\n background: $text-color;\n color: white;\n font-size: map-get($spacing, 'sm');\n margin-top: -4px;\n margin-left: 6px;\n }\n\n &:hover {\n background-color: $tyk-dropdown-item-background-hover;\n text-decoration: none;\n }\n}\n\n.tyk-dropdown--relative.opened {\n position: relative;\n}\n","$tyk-dropdown-item-background: white !default;\n$tyk-dropdown-item-background-hover: theme-color('background', 'light') !default;\n$tyk-dropdown-item-border-color: white !default;\n$tyk-dropdown-item-text-color: $text-color !default;\n$tyk-dropdown-item-hover-text-color: $text-color !default;\n","@import '../../../../common/sass/variables';\n@import '../../../../common/sass/mixins';\n\n.tyk-editable-list {\n &__submit-btn {\n white-space: nowrap;\n }\n}\n\n.tyk-editable-list__form {\n align-items: center;\n display: flex;\n\n .tyk-form-group {\n margin-bottom: 0;\n }\n\n &--sticked {\n margin-left: 0;\n\n button {\n border-top-left-radius: 0px;\n border-bottom-left-radius: 0px;\n border-top-right-radius: 3px;\n border-bottom-right-radius: 3px;\n padding-bottom: 11px;\n padding: map-get($spacing, 'sm') map-get($spacing, 'base') 11px map-get($spacing, 'base');\n }\n }\n\n span.inline {\n margin-top: 0;\n }\n\n > span {\n margin-left: map-get($spacing, 'base');\n\n &.inline-with-label {\n align-self: flex-end;\n }\n }\n}\n\n.tyk-editable-list__header {\n padding-top: map-get($spacing, 'base');\n border-bottom: 1px solid theme-color('background', 'dark');\n color: $text-color;\n font-size: 11px;\n padding-bottom: map-get($spacing, 'base');\n text-transform: uppercase;\n\n .tyk-row {\n margin: 0;\n }\n}\n\n.tyk-editable-list-items {\n overflow: hidden;\n list-style: none;\n padding: map-get($spacing, 'md') 0 0 0;\n\n .edit-mode-wrapper.table button {\n margin-top: 23px;\n }\n\n .tyk-row {\n margin: 0;\n }\n\n button[disabled] {\n cursor: not-allowed;\n }\n\n &.tyk-editable-list-items--inline {\n align-items: center;\n color: $text-color;\n display: flex;\n flex-wrap: wrap;\n }\n\n li {\n border-top: 1px solid theme-color('default', 'light');\n transition: all .2s linear;\n\n &.tyk-editable-list-item--inline {\n background-color: theme-color('default', 'light');\n border-radius: 25px;\n border: none;\n color: white;\n float: left;\n font-family: $font-family-medium;\n margin-bottom: map-get($spacing, 'sm');\n margin-right: map-get($spacing, 'base');\n padding: 0 map-get($spacing, 'base');\n white-space: nowrap;\n\n .tyk-editable-list-item__text {\n color: $text-color;\n padding: map-get($spacing, 'xs') 0;\n }\n\n .tyk-editable-list-action__button.on-edit {\n margin-top: 0;\n }\n }\n\n &:first-child {\n border-top: none;\n }\n\n .tyk-editable-list-item__text {\n display: flex;\n padding: map-get($spacing, 'sm') 0;\n\n > span {\n flex-grow: 1;\n }\n\n > div:first-child {\n flex-grow: 1;\n\n .error-message {\n margin: 0;\n }\n }\n }\n\n .tyk-editable-list-items {\n overflow: hidden;\n padding-bottom: map-get($spacing, 'sm');\n }\n\n .tyk-editable-list {\n border-top: map-get($spacing, 'xs') solid theme-color('background', 'dark');\n background: theme-color('background', 'light');\n padding: map-get($spacing, 'sm') map-get($spacing, 'base');\n }\n }\n\n .tyk-editable-list-item__text {\n display: block;\n word-wrap: break-word;\n word-break:break-all;\n }\n\n .tyk-editable-list-action__button {\n border: none;\n background: transparent;\n\n &.on-edit {\n margin-left: map-get($spacing, 'sm');\n }\n }\n\n .tyk-editable-list-item-controls {\n flex-grow: 0;\n text-align: right;\n }\n}\n\n.tyk-editable-list-item__controls {\n text-align: right;\n}\n\n.tyk-editable-list-items.table {\n background-color: white;\n border-radius: $general-border-radius;\n border: $general-border-width solid theme-color('default', 'light');\n padding: 0 !important;\n\n li {\n border-color: theme-color('default', 'light');\n\n &:hover {\n background: theme-color('background', 'light');\n }\n }\n\n .tyk-editable-list-item__text {\n background: transparent;\n }\n\n .tyk-editable-list-action__button {\n border-radius: 6px;\n cursor: pointer;\n margin-right: map-get($spacing, 'sm');\n }\n}\n\n.tyk-editable-list__header {\n background-color: white;\n border-top-left-radius: $general-border-radius;\n border-top-right-radius: $general-border-radius;\n border: $general-border-width solid theme-color('default', 'light');\n border-bottom: 1px solid theme-color('default', 'light') !important;\n color: $text-color !important;\n font-family: $font-family-bold;\n margin-top: map-get($spacing, 'sm');\n\n & + .tyk-editable-list-items.table {\n border-top: none;\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n }\n}\n","@use \"sass:math\";\n\n.editable-list {\n &__header {\n align-items: center;\n display: flex;\n margin-bottom: 10px;\n\n .tyk-button {\n margin-left: auto;\n }\n }\n\n &__wrapper.has-error &__list{\n border: $general-border-width solid theme-color('danger', 'base');\n }\n\n &__list {\n border: $general-border-width solid theme-color('default', 'light');\n border-radius: $general-border-radius;\n display: flex;\n flex-direction: column-reverse;\n }\n\n &__item {\n border-bottom: 1px solid theme-color('default', 'light');\n display: flex;\n flex-wrap: nowrap;\n width: 100%;\n\n &:first-child {\n border-bottom: none;\n }\n\n &-header {\n border-bottom: 1px solid theme-color('default', 'light');\n color: $text-color;\n font-size: text-scale('sm');\n line-height: line-height('sm');\n font-family: $font-family-bold;\n text-transform: uppercase;\n\n .editable-list__item-cell {\n padding: 10px;\n }\n }\n\n &-cell {\n border-left: 1px solid theme-color('default', 'light');\n overflow: hidden;\n padding: 0 10px;\n\n .tyk-form-control--readonly {\n overflow: hidden;\n text-overflow: ellipsis;\n word-break: break-all;\n }\n\n &:first-child {\n border-left: none;\n padding-left: 15px;\n }\n &:last-child {\n padding-right: 15px;\n }\n\n .tyk-form-group {\n margin: 10px 0;\n width: 100%;\n }\n }\n\n $start: 1;\n $end: 12;\n\n @for $i from $start through $end {\n &--size-#{$i} {\n display: flex;\n flex-grow: #{$i + 1};\n $my_width: #{math.div($i, 12) * 100%};\n width: $my_width;\n }\n }\n\n &--size-fit {\n width: fit-content;\n }\n\n &-action {\n align-items: flex-start;\n display: flex;\n justify-content: center;\n width: 100px;\n\n .tyk-button {\n margin-top: 20px;\n }\n\n &--read-only {\n color: theme-color(\"default\", \"light\");\n align-items: center;\n\n .tyk-button {\n margin-top: 0;\n }\n }\n\n }\n }\n}",".tyk-file-input__wrapper {\n position: relative;\n\n > input {\n padding: 6px map-get($spacing, 'md');\n }\n\n > button {\n background: none;\n border: none;\n cursor: pointer;\n position: absolute;\n right: map-get($spacing, 'base');\n top: 9px;\n }\n}\n",".tyk-multiselect {\n align-items: flex-start;\n border-radius: $general-border-radius;\n flex-wrap: wrap;\n display: flex;\n margin-bottom: map-get($spacing, 'md');\n width: 100%;\n\n /*FALLBACK FOR ANGULAR COMPONENTS*/\n .input-group .input-group-addon + .form-control {\n border-width: 1px !important;\n border-left: none !important;\n border-top-left-radius: 0 !important;\n border-top-right-radius: 0 !important;\n border-bottom-left-radius: 0 !important;\n border-bottom-right-radius: 0 !important;\n }\n\n .input-group .input-group-addon {\n background: transparent !important;\n border-width: 1px !important;\n border-right: 0 !important;\n border-top-left-radius: 0 !important;\n border-top-right-radius: 0 !important;\n border-bottom-left-radius: 0 !important;\n border-bottom-right-radius: 0 !important;\n }\n /*END FALLBACK FOR ANGULAR COMPONENTS*/\n\n &.has-error {\n border: $general-border-width solid theme-color('danger', 'base');\n }\n\n &__header {\n background-color: theme-color('default', 'base');\n border-top-left-radius: $general-border-radius;\n border-top-right-radius: $general-border-radius;\n color: white;\n display: flex;\n width: 100%;\n\n > div {\n padding: map-get($spacing, 'sm') map-get($spacing, 'base');\n width: 50%;\n }\n }\n\n &__panel-wrapper {\n border: $form-control-border;\n border-top: none;\n border-bottom-left-radius: $general-border-radius;\n border-bottom-right-radius: $general-border-radius;\n display: flex;\n flex: 1;\n height: 265px;\n width: 100%;\n }\n\n &__panel {\n display: flex;\n flex-direction: column;\n margin: 0 0 0 -1px;\n position: relative;\n width: calc(50% + 1px);\n\n &:last-child {\n border-left: $form-control-border;\n .tyk-form-group {\n margin-left: -1px;\n width: calc(100% + 2px);\n }\n }\n\n .tyk-message {\n margin: map-get($spacing, 'md') map-get($spacing, 'md') 0 map-get($spacing, 'md');\n }\n }\n\n &__list {\n list-style-type: none;\n margin: 0;\n padding: 0;\n\n &--scroll {\n height: 100%;\n overflow-y: auto;\n }\n\n > li {\n border-bottom: $form-control-border;\n display: flex;\n flex-direction: column;\n padding: map-get($spacing, 'sm') map-get($spacing, 'base');\n\n > div {\n align-items: start;\n display: flex;\n width: 100%;\n }\n\n .loading {\n justify-content: center;\n }\n\n &:last-child {\n border-bottom: none;\n }\n }\n }\n\n &-item__name {\n display: block;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .tyk-form-group {\n margin: 0;\n }\n\n .tyk-multiselect-item__controls {\n display: flex;\n margin-left: auto;\n flex-wrap: nowrap;\n\n .tyk-button {\n color: $text-color;\n margin-left: map-get($spacing, 'xs');\n\n &:last-child {\n margin-left: 0;\n }\n }\n }\n}\n","@import '../../../../common/sass/variables';\n@import '../../../../common/sass/mixins';\n@import './variables';\n\n.tyk-pagination {\n display: flex;\n list-style-type: none;\n margin: map-get($spacing, 'sm') 0;\n padding: 0;\n\n li {\n align-items: center;\n display: flex;\n }\n\n li:first-child button {\n border-top-left-radius: $pagination-border-radius;\n border-bottom-left-radius: $pagination-border-radius;\n }\n\n li:last-child button {\n border-top-right-radius: $pagination-border-radius;\n border-bottom-right-radius: $pagination-border-radius;\n }\n\n span {\n margin: 0 map-get($spacing, 'sm');\n }\n\n button {\n background: white;\n border: none;\n font-size: text-scale('sm');\n font-family: $font-family-bold;\n cursor: pointer;\n color: theme-color('default', 'base');\n margin-left: -1px;\n padding: $pagination-button-padding;\n\n &:hover {\n background-color: theme-color('success', 'light');\n }\n }\n\n .active button {\n background-color: theme-color('success', 'base');\n color: white;\n }\n}\n","$pagination-border-radius: $general-border-radius !default;\n$pagination-button-padding: map-get($spacing, 'sm') map-get($spacing, 'base') !default;\n","@import '../../../../common/sass/variables';\n@import '../../../../common/sass/mixins';\n@import './variables';\n.tyk-radio{\n label {\n align-items: center;\n display: flex;\n }\n\n &--is-disabled {\n label, p {\n cursor: not-allowed;\n opacity: 0.5;\n }\n }\n\n &__description-text {\n padding: $radio-description-text-padding;\n }\n}","$tyk-radio-theme-light-label-color: white !default;\n$tyk-radio-theme-light-label-disabled-color: white !default;\n$tyk-radio-theme-dark-label-color: $text-color !default;\n$tyk-radio-theme-dark-label-disabled-color: $text-color !default;\n$radio-description-text-padding: 0 0 0 20px !default;",".tyk-select {\n background: transparent url('#{$component-images-path}/arrow_down.svg') no-repeat calc(100% - 15px) center;\n background-size: map-get($spacing, 'base') map-get($spacing, 'base');\n}",".tyk-selectable-list {\n margin-bottom: map-get($spacing, 'md');\n width: 100%;\n\n li:not(.tyk-selectable-list__no-items-message) {\n font-family: $font-family-medium;\n padding: 0;\n\n .tyk-message {\n margin-bottom: 0;\n }\n\n label {\n font-family: $font-family-medium;\n margin: 0;\n }\n\n > label {\n align-items: center;\n cursor: pointer;\n display: flex;\n padding: map-get($spacing, 'sm') map-get($spacing, 'md');\n\n input[type=\"checkbox\"] {\n margin-left: auto;\n }\n }\n }\n\n &__item--with-icon {\n input[type=\"checkbox\"] {\n visibility: hidden;\n }\n }\n}\n","textarea.tyk-form-control {\n height: auto;\n}\n","@import './variables';\n\n.tyk-toggle {\n display: inline-flex;\n flex-wrap: wrap;\n font-family: $toggle-font-family;\n font-size: text-scale('sm');\n line-height: line-height('sm');\n white-space: nowrap;\n\n &.block {\n margin-bottom: map-get($spacing, 'md');\n width: 100%;\n\n + .tyk-toggle {\n margin-left: 0;\n }\n }\n\n &.inline-label {\n align-items: center;\n flex-wrap: nowrap;\n }\n\n &__list--has-error {\n border: $error-border;\n }\n\n & &__label {\n display: block;\n font-family: $toggle-label-font-family;\n font-size: $toggle-label-font-size;\n padding: $toggle-padding;\n width: 100%;\n color: $toggle-label-color;\n }\n\n &.inline-label &__label {\n margin-right: map-get($spacing, 'sm');\n width: auto;\n }\n\n + .tyk-button,\n + .tyk-dropdown,\n + .tyk-toggle {\n margin-left: map-get($spacing, 'sm')\n }\n\n &--disabled-true {\n cursor: not-allowed;\n opacity: 0.7;\n }\n\n &--column {\n .tyk-toggle__list--separated {\n display: flex;\n flex-direction: column;\n margin-right: map-get($spacing, 'md');\n\n .tyk-toggle__item {\n background-color: $toggle-list-background-color;\n margin-right: auto;\n }\n }\n }\n\n &__list {\n background: $toggle-list-background-color;\n border-radius: 25px;\n display: flex;\n list-style-type: none;\n margin: 0;\n padding: 0;\n position: relative;\n\n &--separated {\n background: transparent;\n flex-wrap: wrap;\n }\n }\n\n &--on-dark &__list {\n background: $toggle-list-background-color-on-dark;\n }\n\n &--default &__item--active span {\n color: white;\n }\n\n &--default &__list--single &__item--active,\n &--default &__list--separated &__item--active {\n span {\n color: white;\n }\n\n @include button-variant(\n $button-default-color,\n transparent,\n white,\n $button-default-color,\n transparent,\n $button-default-color\n );\n }\n\n &--primary &__item--active span {\n color: white;\n }\n\n &--primary &__list--single &__item--active,\n &--primary &__list--separated &__item--active {\n span {\n color: white;\n }\n @include button-variant(\n theme-color('primary', 'base'),\n transparent,\n white,\n theme-color('primary', 'base'),\n transparent,\n theme-color('primary', 'base')\n );\n }\n\n &--success &__item--active span {\n color: white;\n }\n\n &--success &__list--single &__item--active,\n &--success &__list--separated &__item--active {\n span {\n color: white;\n }\n @include button-variant(\n theme-color('success', 'dark'),\n transparent,\n white,\n theme-color('success', 'dark'),\n transparent,\n theme-color('success', 'dark')\n );\n }\n\n &--danger &__item--active span {\n color: white;\n }\n\n &--danger &__list--single &__item--active,\n &--danger &__list--separated &__item--active {\n @include button-variant(\n theme-color('danger', 'base'),\n transparent,\n white,\n theme-color('danger', 'base'),\n transparent,\n theme-color('danger', 'base')\n );\n }\n\n &--warning &__item--active span {\n color: $text-color;\n }\n\n &--warning &__list--single &__item--active,\n &--warning &__list--separated &__item--active {\n @include button-variant(\n theme-color('warning', 'base'),\n transparent,\n $text-color,\n theme-color('warning', 'base'),\n transparent,\n theme-color('warning', 'base')\n );\n }\n\n\n &--primary-gradient &__item--active span {\n color: white;\n }\n &--primary-gradient &__list--single &__item--active,\n &--primary-gradient &__list--separated &__item--active {\n span {\n color: white;\n }\n @include button-variant-gradient(\n theme-color('primary', 'base'),\n theme-color('primary', 'dark'),\n white,\n false\n );\n }\n\n &--success-gradient &__item--active span {\n color: white;\n }\n &--success-gradient &__list--single &__item--active,\n &--success-gradient &__list--separated &__item--active {\n span {\n color: white;\n }\n @include button-variant-gradient(\n theme-color('success', 'base'),\n theme-color('success', 'dark'),\n white,\n false\n );\n }\n\n\n &--danger-gradient &__item--active span {\n color: white;\n }\n &--danger-gradient &__list--single &__item--active,\n &--danger-gradient &__list--separated &__item--active {\n span {\n color: white;\n }\n @include button-variant-gradient(\n theme-color('danger', 'base'),\n theme-color('danger', 'dark'),\n white,\n false\n );\n }\n\n\n &--warning-gradient &__item--active span {\n color: white;\n }\n &--warning-gradient &__list--single &__item--active,\n &--warning-gradient &__list--separated &__item--active {\n span {\n color: white;\n }\n @include button-variant-gradient(\n theme-color('warning', 'light'),\n theme-color('warning', 'base'),\n $text-color,\n false\n );\n }\n\n &__item {\n color: $toggle-list-text-color;\n text-transform: uppercase;\n z-index: 2;\n border: 2px solid transparent;\n\n &:first-child {\n border-top-left-radius: 25px;\n border-bottom-left-radius: 25px;\n }\n &:last-child {\n border-top-right-radius: 25px;\n border-bottom-right-radius: 25px;\n }\n\n .tyk-toggle__list--separated & {\n background: tyk-toggle__list--separated;\n border-radius: 25px;\n margin-bottom: map-get($spacing, 'xs');\n margin-top: map-get($spacing, 'xs');\n margin-right: map-get($spacing, 'sm');\n\n &:last-child {\n margin-right: 0;\n }\n }\n\n input {\n display: none;\n }\n\n label {\n cursor: pointer;\n font-family: $toggle-font-family;\n position: relative;\n margin: 0;\n transition: all .2s ease;\n\n .tyk-toggle__list--single & {\n padding-left: 45px;\n }\n }\n\n .tyk-toggle__list--single &--active {\n label {\n padding-left: 25px;\n padding-right: 45px;\n\n .tyk-toggle__item-notch {\n left: calc(100% - 35px);\n }\n }\n }\n }\n\n &--on-dark &__item:not(.tyk-toggle__item--active) {\n color: $toggle-list-text-color-on-dark;\n }\n\n &--on-dark &__item-notch--single {\n background: theme-color('background', 'light');\n }\n\n &--sm label {\n @include button-size(\n calc(#{$padding-y-button-sm} + 2px),\n calc(#{$padding-x-button-sm} + 2px),\n text-scale('xs'),\n line-height('xs'),\n $button-border-radius\n );\n }\n\n &--sm &__list--single label {\n padding-left: 35px;\n }\n\n &--sm .tyk-toggle__list--single .tyk-toggle__item--active label {\n padding-left: 17px;\n padding-right: 35px;\n\n .tyk-toggle__item-notch {\n left: calc(100% - 27px);\n }\n }\n\n &--md label {\n @include button-size(\n calc(#{$padding-y-button-md} + 2px),\n calc(#{$padding-x-button-md} + 2px),\n text-scale('sm'),\n $line-height-button-sm,\n $button-border-radius\n );\n }\n\n &--lg label {\n @include button-size(\n calc(#{$padding-y-button-lg} + 2px),\n calc(#{$padding-x-button-lg} + 2px),\n text-scale('sm'),\n $line-height-button-sm,\n $button-border-radius\n );\n }\n\n &--lg &__list--single label {\n padding-left: 45px;\n }\n\n &--lg .tyk-toggle__list--single .tyk-toggle__item--active label {\n padding-left: 25px;\n padding-right: 45px;\n\n .tyk-toggle__item-notch {\n left: calc(100% - 43px);\n }\n }\n\n &__item-notch {\n border-radius: 25px;\n bottom: 2px;\n position: absolute;\n transition: all .2s ease;\n top: 2px;\n\n &--single {\n background: white;\n left: 2px;\n width: 32px;\n }\n }\n\n &--sm &__item-notch--single {\n width: 24px;\n }\n\n &--lg &__item-notch--single {\n width: 40px;\n }\n\n &__notch {\n border-radius: 25px;\n left: 0;\n position: absolute;\n bottom: $toggle-bottom;\n top: $toggle-top;\n transition: all .2s ease;\n width: 100px;\n z-index: 1;\n }\n\n &--default &__notch {\n @include button-variant(\n $button-default-color,\n transparent,\n white,\n $button-default-color,\n transparent,\n $button-default-color\n );\n }\n\n &--primary &__notch {\n @include button-variant(\n theme-color('primary', 'base'),\n transparent,\n white,\n theme-color('primary', 'base'),\n transparent,\n theme-color('primary', 'base')\n );\n }\n\n &--success &__notch {\n @include button-variant(\n theme-color('success', 'base'),\n transparent,\n white,\n theme-color('success', 'base'),\n transparent,\n theme-color('success', 'base')\n );\n }\n\n &--danger &__notch {\n @include button-variant(\n theme-color('danger', 'base'),\n transparent,\n white,\n theme-color('danger', 'base'),\n transparent,\n theme-color('danger', 'base')\n );\n }\n\n &--warning &__notch {\n @include button-variant(\n theme-color('warning', 'base'),\n transparent,\n $text-color,\n theme-color('warning', 'base'),\n transparent,\n theme-color('warning', 'base')\n );\n }\n\n &--primary-gradient &__notch {\n @include button-variant-gradient(\n theme-color('primary', 'base'),\n theme-color('primary', 'dark'),\n white,\n false\n );\n }\n\n &--success-gradient &__notch {\n @include button-variant-gradient(\n theme-color('success', 'base'),\n theme-color('success', 'dark'),\n white,\n false\n );\n }\n\n &--danger-gradient &__notch {\n @include button-variant-gradient(\n theme-color('danger', 'base'),\n theme-color('danger', 'dark'),\n white,\n false\n );\n }\n\n &--warning-gradient &__notch {\n @include button-variant-gradient(\n theme-color('warning', 'light'),\n theme-color('warning', 'base'),\n $text-color,\n false\n );\n }\n}\n\n.empty-toggle {\n padding: 1px;\n}","$toggle-font-family: $font-family-bold !default;\n$toggle-list-background-color: theme-color('background', 'light') !default;\n$toggle-list-text-color: white !default;\n$toggle-list-background-color-on-dark: white !default;\n$toggle-list-text-color-on-dark: $text-color !default;\n$toggle-top: 4px !default;\n$toggle-bottom: 4px !default;\n$toggle-label-font-size: text-scale('sm') !default;\n$toggle-label-font-family: $font-family-medium;\n$toggle-label-color: $label-color !default;\n$toggle-padding: 0 !default;","@import '../../../../common/sass/variables';\n\n.string-builder{\n position: relative;\n display: block;\n}\n\n.string-builder__input {\n word-break: break-all;\n resize: none;\n overflow: hidden;\n background:transparent;\n position: absolute;\n border: none;\n font: inherit;\n display: block;\n z-index: 1;\n width: 100%;\n padding: 0px;\n width: calc(100% - 35px);\n &:focus,\n &:active {\n border: none;\n outline: none;\n }\n}\n.string-builder__styled {\n font: inherit;\n position: absolute;\n pointer-events: none;\n width: calc(100% - 35px);\n color: transparent;\n z-index: 2;\n border: none;\n word-wrap: break-word;\n word-break: break-all;\n \n}\n\n.string-builder__disabled{\n background-color: $form-control-disabled-background-color !important;\n color: $form-control-disabled-color;\n cursor: not-allowed;\n}\n\n\n.url-builder__options_name {\n font-weight: 10px;\n}\n\n.url-builder__options_description{\n color: gray;\n}\n\n.string-builder-dropdown {\n display: flex;\n flex-direction: column;\n border: $general-border-width solid $form-default-color;\n background-color: #ffffff;\n\n &.tyk-form-group--rounded-corners {\n border-radius: $general-border-radius;\n }\n\n .string-builder-search {\n background-color: #ffffff;\n position: sticky;\n top: 0;\n padding: map-get($spacing, 'sm') map-get($spacing, 'md');\n\n + .string-builder-list {\n border-top: 1px solid $form-default-color;\n }\n }\n\n .string-builder-list {\n max-height: 255px;\n\n li {\n cursor: pointer;\n padding: 9px map-get($spacing, 'md');\n transition: all .2s;\n font-family: $font-family-medium;\n\n &:hover,\n &.active {\n background-color: $form-default-color;\n }\n\n + li {\n border-top: 1px solid $form-default-color;\n }\n\n i {\n margin-right: map-get($spacing, 'xs');\n }\n\n .item-name {\n overflow: hidden;\n text-overflow: ellipsis;\n line-height: 16px;\n }\n }\n }\n}\n\n.invalid_token {\n box-shadow: 0px 0px 0px 1px theme-color('danger', 'dark') inset;\n border-radius: 5px;\n background: theme-color('danger', 'light');\n color: theme-color('danger', 'dark');\n padding: 4px;\n pointer-events: all;\n .invalid_token--icon {\n margin-left: 2px;\n color: theme-color('danger', 'dark');\n }\n}\n\n.string_builder_trigger {\n background-color: #ffffff;\n border-radius: 5px;\n padding: 1px 6px;\n margin: 0px 4px;\n}\n\n.string-builder-footer {\n > .tyk-form-control__error-message {\n padding: 0px !important;\n }\n > .tyk-form-control__help-block{\n padding: 0px !important;\n }\n}\n\n.string-builder-search {\n padding-right: 10px;\n}\n\n.default-option-name {\n color: green;\n}\n\n\n// NOTE :: FOR DEMO ONLY\n.data_source_argument {\n color: pink;\n}\n.data_source_object {\n color: blueviolet;\n}\n","\n* {\n box-sizing: border-box;\n}\n\nbody {\n background-color: theme-color('background', 'base');\n color: $text-color;\n font-size: text-scale('sm');\n line-height: line-height('sm');\n font-family: $font-family-regular;\n}\n\n.tyk-main-wrapper {\n display: flex;\n flex-wrap: nowrap;\n}\n\n.tyk-main-content-wrapper {\n flex: 1;\n}\n\n.well {\n background: transparent;\n border: $general-border-width solid theme-color('default', 'light');\n border-radius: $general-border-radius;\n box-shadow: none;\n\n &.has-error {\n border-color: theme-color('danger', 'base');\n }\n}\n",".title-medium {\n font-family: $font-family-medium;\n color: $label-color;\n font-size: $title-medium-font-size;\n}",".right-align {\n text-align: right !important;\n}\n\n.left-align {\n text-align: left !important;\n}\n\n.center-align {\n text-align: center !important;\n}\n\n.left {\n float: left !important;\n}\n\n.right {\n float: right !important;\n}\n\n.hide {\n display: none !important;\n}\n\n.no-margin {\n margin: 0 !important;\n}\n\n.no-margin-bottom {\n margin-bottom: 0 !important;\n}\n\n.no-margin-top {\n margin-top: 0 !important;\n}\n\n.no-margin-right {\n margin-right: 0 !important;\n}\n\n.no-margin-left {\n margin-right: 0 !important;\n}\n\n.disabled-section {\n color: theme-color('default', 'light');\n}\n\n.top-buffer-large {\n margin-top: $top-buffer-large !important; \n}\n\n.top-buffer-small {\n margin-top: $top-buffer-small !important; \n}\n\n.top-buffer-medium {\n margin-top: $top-buffer-medium !important; \n}\n\n.bottom-buffer-large {\n margin-bottom: $bottom-buffer-large !important; \n}\n\n.bottom-buffer-small {\n margin-bottom: $bottom-buffer-small !important; \n}\n\n.bottom-buffer-medium {\n margin-bottom: $bottom-buffer-medium !important; \n}\n\n.right-buffer-large {\n margin-right: $right-buffer-large !important; \n}\n\n.right-buffer-small {\n margin-right: $right-buffer-small !important; \n}\n\n.right-buffer-medium {\n margin-right: $right-buffer-medium !important; \n}\n\n.left-buffer-large {\n margin-left: $left-buffer-large !important; \n}\n\n.left-buffer-small {\n margin-left: $left-buffer-small !important; \n}\n\n.left-buffer-medium {\n margin-left: $left-buffer-medium !important; \n}\n\n.word-wrap {\n word-wrap: break-word;\n word-break: break-all;\n}\n\n.clear-left {\n clear: left;\n}\n\n.flex-container {\n display: flex;\n}\n\n.vertical-center-align {\n align-items: center;\n}\n\n\n.right-align-controls {\n align-items: center;\n display: flex;\n margin-left: auto;\n}\n\n.inline-label {\n margin-right: 15px;\n}\n\n.nowrap { \n white-space: nowrap;\n}\n"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/lib/tyk-ui.js b/lib/tyk-ui.js index 2d753e8b..2271dc2b 100644 --- a/lib/tyk-ui.js +++ b/lib/tyk-ui.js @@ -1,1289 +1,39542 @@ -(()=>{var ps=(f2,L5)=>()=>(L5||f2((L5={exports:{}}).exports,L5),L5.exports);var gs=ps((Ns,m6)=>{(()=>{var f2={239:(D,R,f0)=>{D=f0.nmd(D),function(){var n="ace",M=function(){return this}();if(!M&&typeof window!="undefined"&&(M=window),!n&&typeof requirejs!="undefined")return;var G=function(l,o,s){if(typeof l!="string"){G.original?G.original.apply(this,arguments):(console.error("dropping module because define wasn't a string."),console.trace());return}arguments.length==2&&(s=o),G.modules[l]||(G.payloads[l]=s,G.modules[l]=null)};G.modules={},G.payloads={};var L=function(l,o,s){if(typeof o=="string"){var i=d(l,o);if(i!=null)return s&&s(),i}else if(Object.prototype.toString.call(o)==="[object Array]"){for(var r=[],a=0,c=o.length;ad.length)&&(C=d.length),C-=T.length;var h=d.indexOf(T,C);return h!==-1&&h===C}),String.prototype.repeat||L(String.prototype,"repeat",function(T){for(var C="",d=this;T>0;)T&1&&(C+=d),(T>>=1)&&(d+=d);return C}),String.prototype.includes||L(String.prototype,"includes",function(T,C){return this.indexOf(T,C)!=-1}),Object.assign||(Object.assign=function(T){if(T==null)throw new TypeError("Cannot convert undefined or null to object");for(var C=Object(T),d=1;d>>0,h=arguments[1],l=h>>0,o=l<0?Math.max(d+l,0):Math.min(l,d),s=arguments[2],i=s===void 0?d:s>>0,r=i<0?Math.max(d+i,0):Math.min(i,d);o0;)d&1&&(h+=C),(d>>=1)&&(C+=C);return h};var L=/^\s\s*/,T=/\s\s*$/;M.stringTrimLeft=function(C){return C.replace(L,"")},M.stringTrimRight=function(C){return C.replace(T,"")},M.copyObject=function(C){var d={};for(var h in C)d[h]=C[h];return d},M.copyArray=function(C){for(var d=[],h=0,l=C.length;h=0?parseFloat((C.match(/(?:MSIE |Trident\/[0-9]+[\.0-9]+;.*rv:)([0-9]+[\.0-9]+)/)||[])[1]):parseFloat((C.match(/(?:Trident\/[0-9]+[\.0-9]+;.*rv:)([0-9]+[\.0-9]+)/)||[])[1]),M.isOldIE=M.isIE&&M.isIE<9,M.isGecko=M.isMozilla=C.match(/ Gecko\/\d+/),M.isOpera=typeof opera=="object"&&Object.prototype.toString.call(window.opera)=="[object Opera]",M.isWebKit=parseFloat(C.split("WebKit/")[1])||void 0,M.isChrome=parseFloat(C.split(" Chrome/")[1])||void 0,M.isEdge=parseFloat(C.split(" Edge/")[1])||void 0,M.isAIR=C.indexOf("AdobeAIR")>=0,M.isAndroid=C.indexOf("Android")>=0,M.isChromeOS=C.indexOf(" CrOS ")>=0,M.isIOS=/iPad|iPhone|iPod/.test(C)&&!window.MSStream,M.isIOS&&(M.isMac=!0),M.isMobile=M.isIOS||M.isAndroid}),ace.define("ace/lib/dom",["require","exports","module","ace/lib/useragent"],function(n,M,G){"use strict";var L=n("./useragent"),T="http://www.w3.org/1999/xhtml";M.buildDom=function s(i,r,a){if(typeof i=="string"&&i){var c=document.createTextNode(i);return r&&r.appendChild(c),c}if(!Array.isArray(i))return i&&i.appendChild&&r&&r.appendChild(i),i;if(typeof i[0]!="string"||!i[0]){for(var p=[],g=0;g=1.5:!0,L.isChromeOS&&(M.HI_DPI=!1),typeof document!="undefined"){var o=document.createElement("div");M.HI_DPI&&o.style.transform!==void 0&&(M.HAS_CSS_TRANSFORMS=!0),!L.isEdge&&typeof o.style.animationName!="undefined"&&(M.HAS_CSS_ANIMATION=!0),o=null}M.HAS_CSS_TRANSFORMS?M.translate=function(s,i,r){s.style.transform="translate("+Math.round(i)+"px, "+Math.round(r)+"px)"}:M.translate=function(s,i,r){s.style.top=Math.round(r)+"px",s.style.left=Math.round(i)+"px"}}),ace.define("ace/lib/net",["require","exports","module","ace/lib/dom"],function(n,M,G){/* -* based on code from: -* -* @license RequireJS text 0.25.0 Copyright (c) 2010-2011, The Dojo Foundation All Rights Reserved. -* Available via the MIT or new BSD license. -* see: http://github.com/jrburke/requirejs for details -*/"use strict";var L=n("./dom");M.get=function(T,C){var d=new XMLHttpRequest;d.open("GET",T,!0),d.onreadystatechange=function(){d.readyState===4&&C(d.responseText)},d.send(null)},M.loadScript=function(T,C){var d=L.getDocumentHead(),h=document.createElement("script");h.src=T,d.appendChild(h),h.onload=h.onreadystatechange=function(l,o){(o||!h.readyState||h.readyState=="loaded"||h.readyState=="complete")&&(h=h.onload=h.onreadystatechange=null,o||C())}},M.qualifyURL=function(T){var C=document.createElement("a");return C.href=T,C.href}}),ace.define("ace/lib/oop",["require","exports","module"],function(n,M,G){"use strict";M.inherits=function(L,T){L.super_=T,L.prototype=Object.create(T.prototype,{constructor:{value:L,enumerable:!1,writable:!0,configurable:!0}})},M.mixin=function(L,T){for(var C in T)L[C]=T[C];return L},M.implement=function(L,T){M.mixin(L,T)}}),ace.define("ace/lib/event_emitter",["require","exports","module"],function(n,M,G){"use strict";var L={},T=function(){this.propagationStopped=!0},C=function(){this.defaultPrevented=!0};L._emit=L._dispatchEvent=function(d,h){this._eventRegistry||(this._eventRegistry={}),this._defaultHandlers||(this._defaultHandlers={});var l=this._eventRegistry[d]||[],o=this._defaultHandlers[d];if(!(!l.length&&!o)){(typeof h!="object"||!h)&&(h={}),h.type||(h.type=d),h.stopPropagation||(h.stopPropagation=T),h.preventDefault||(h.preventDefault=C),l=l.slice();for(var s=0;s { // webpackBootstrap +/******/ var __webpack_modules__ = ({ + +/***/ 239: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +/* module decorator */ module = __webpack_require__.nmd(module); +/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + +/** + * Define a module along with a payload + * @param module a name for the payload + * @param payload a function to call with (require, exports, module) params + */ + +(function() { + +var ACE_NAMESPACE = "ace"; + +var global = (function() { return this; })(); +if (!global && typeof window != "undefined") global = window; // strict mode + + +if (!ACE_NAMESPACE && typeof requirejs !== "undefined") + return; + + +var define = function(module, deps, payload) { + if (typeof module !== "string") { + if (define.original) + define.original.apply(this, arguments); + else { + console.error("dropping module because define wasn\'t a string."); + console.trace(); + } + return; + } + if (arguments.length == 2) + payload = deps; + if (!define.modules[module]) { + define.payloads[module] = payload; + define.modules[module] = null; + } +}; + +define.modules = {}; +define.payloads = {}; + +/** + * Get at functionality define()ed using the function above + */ +var _require = function(parentId, module, callback) { + if (typeof module === "string") { + var payload = lookup(parentId, module); + if (payload != undefined) { + callback && callback(); + return payload; + } + } else if (Object.prototype.toString.call(module) === "[object Array]") { + var params = []; + for (var i = 0, l = module.length; i < l; ++i) { + var dep = lookup(parentId, module[i]); + if (dep == undefined && require.original) + return; + params.push(dep); + } + return callback && callback.apply(null, params) || true; + } +}; + +var require = function(module, callback) { + var packagedModule = _require("", module, callback); + if (packagedModule == undefined && require.original) + return require.original.apply(this, arguments); + return packagedModule; +}; + +var normalizeModule = function(parentId, moduleName) { + // normalize plugin requires + if (moduleName.indexOf("!") !== -1) { + var chunks = moduleName.split("!"); + return normalizeModule(parentId, chunks[0]) + "!" + normalizeModule(parentId, chunks[1]); + } + // normalize relative requires + if (moduleName.charAt(0) == ".") { + var base = parentId.split("/").slice(0, -1).join("/"); + moduleName = base + "/" + moduleName; + + while(moduleName.indexOf(".") !== -1 && previous != moduleName) { + var previous = moduleName; + moduleName = moduleName.replace(/\/\.\//, "/").replace(/[^\/]+\/\.\.\//, ""); + } + } + return moduleName; +}; + +/** + * Internal function to lookup moduleNames and resolve them by calling the + * definition function if needed. + */ +var lookup = function(parentId, moduleName) { + moduleName = normalizeModule(parentId, moduleName); + + var module = define.modules[moduleName]; + if (!module) { + module = define.payloads[moduleName]; + if (typeof module === 'function') { + var exports = {}; + var mod = { + id: moduleName, + uri: '', + exports: exports, + packaged: true + }; + + var req = function(module, callback) { + return _require(moduleName, module, callback); + }; + + var returnValue = module(req, exports, mod); + exports = returnValue || mod.exports; + define.modules[moduleName] = exports; + delete define.payloads[moduleName]; + } + module = define.modules[moduleName] = exports || module; + } + return module; +}; + +function exportAce(ns) { + var root = global; + if (ns) { + if (!global[ns]) + global[ns] = {}; + root = global[ns]; + } + + if (!root.define || !root.define.packaged) { + define.original = root.define; + root.define = define; + root.define.packaged = true; + } + + if (!root.require || !root.require.packaged) { + require.original = root.require; + root.require = require; + root.require.packaged = true; + } +} + +exportAce(ACE_NAMESPACE); + +})(); + +ace.define("ace/lib/es6-shim",["require","exports","module"], function(require, exports, module){function defineProp(obj, name, val) { + Object.defineProperty(obj, name, { + value: val, + enumerable: false, + writable: true, + configurable: true + }); +} +if (!String.prototype.startsWith) { + defineProp(String.prototype, "startsWith", function (searchString, position) { + position = position || 0; + return this.lastIndexOf(searchString, position) === position; + }); +} +if (!String.prototype.endsWith) { + defineProp(String.prototype, "endsWith", function (searchString, position) { + var subjectString = this; + if (position === undefined || position > subjectString.length) { + position = subjectString.length; + } + position -= searchString.length; + var lastIndex = subjectString.indexOf(searchString, position); + return lastIndex !== -1 && lastIndex === position; + }); +} +if (!String.prototype.repeat) { + defineProp(String.prototype, "repeat", function (count) { + var result = ""; + var string = this; + while (count > 0) { + if (count & 1) + result += string; + if ((count >>= 1)) + string += string; + } + return result; + }); +} +if (!String.prototype.includes) { + defineProp(String.prototype, "includes", function (str, position) { + return this.indexOf(str, position) != -1; + }); +} +if (!Object.assign) { + Object.assign = function (target) { + if (target === undefined || target === null) { + throw new TypeError("Cannot convert undefined or null to object"); + } + var output = Object(target); + for (var index = 1; index < arguments.length; index++) { + var source = arguments[index]; + if (source !== undefined && source !== null) { + Object.keys(source).forEach(function (key) { + output[key] = source[key]; + }); + } + } + return output; + }; +} +if (!Object.values) { + Object.values = function (o) { + return Object.keys(o).map(function (k) { + return o[k]; + }); + }; +} +if (!Array.prototype.find) { + defineProp(Array.prototype, "find", function (predicate) { + var len = this.length; + var thisArg = arguments[1]; + for (var k = 0; k < len; k++) { + var kValue = this[k]; + if (predicate.call(thisArg, kValue, k, this)) { + return kValue; + } + } + }); +} +if (!Array.prototype.findIndex) { + defineProp(Array.prototype, "findIndex", function (predicate) { + var len = this.length; + var thisArg = arguments[1]; + for (var k = 0; k < len; k++) { + var kValue = this[k]; + if (predicate.call(thisArg, kValue, k, this)) { + return k; + } + } + }); +} +if (!Array.prototype.includes) { + defineProp(Array.prototype, "includes", function (item, position) { + return this.indexOf(item, position) != -1; + }); +} +if (!Array.prototype.fill) { + defineProp(Array.prototype, "fill", function (value) { + var O = this; + var len = O.length >>> 0; + var start = arguments[1]; + var relativeStart = start >> 0; + var k = relativeStart < 0 + ? Math.max(len + relativeStart, 0) + : Math.min(relativeStart, len); + var end = arguments[2]; + var relativeEnd = end === undefined ? len : end >> 0; + var final = relativeEnd < 0 + ? Math.max(len + relativeEnd, 0) + : Math.min(relativeEnd, len); + while (k < final) { + O[k] = value; + k++; + } + return O; + }); +} +if (!Array.of) { + defineProp(Array, "of", function () { + return Array.prototype.slice.call(arguments); + }); +} + +}); + +ace.define("ace/lib/fixoldbrowsers",["require","exports","module","ace/lib/es6-shim"], function(require, exports, module){// vim:set ts=4 sts=4 sw=4 st: +"use strict"; +require("./es6-shim"); + +}); + +ace.define("ace/lib/deep_copy",["require","exports","module"], function(require, exports, module){exports.deepCopy = function deepCopy(obj) { + if (typeof obj !== "object" || !obj) + return obj; + var copy; + if (Array.isArray(obj)) { + copy = []; + for (var key = 0; key < obj.length; key++) { + copy[key] = deepCopy(obj[key]); + } + return copy; + } + if (Object.prototype.toString.call(obj) !== "[object Object]") + return obj; + copy = {}; + for (var key in obj) + copy[key] = deepCopy(obj[key]); + return copy; +}; + +}); + +ace.define("ace/lib/lang",["require","exports","module","ace/lib/deep_copy"], function(require, exports, module){"use strict"; +exports.last = function (a) { + return a[a.length - 1]; +}; +exports.stringReverse = function (string) { + return string.split("").reverse().join(""); +}; +exports.stringRepeat = function (string, count) { + var result = ''; + while (count > 0) { + if (count & 1) + result += string; + if (count >>= 1) + string += string; + } + return result; +}; +var trimBeginRegexp = /^\s\s*/; +var trimEndRegexp = /\s\s*$/; +exports.stringTrimLeft = function (string) { + return string.replace(trimBeginRegexp, ''); +}; +exports.stringTrimRight = function (string) { + return string.replace(trimEndRegexp, ''); +}; +exports.copyObject = function (obj) { + var copy = {}; + for (var key in obj) { + copy[key] = obj[key]; + } + return copy; +}; +exports.copyArray = function (array) { + var copy = []; + for (var i = 0, l = array.length; i < l; i++) { + if (array[i] && typeof array[i] == "object") + copy[i] = this.copyObject(array[i]); + else + copy[i] = array[i]; + } + return copy; +}; +exports.deepCopy = require("./deep_copy").deepCopy; +exports.arrayToMap = function (arr) { + var map = {}; + for (var i = 0; i < arr.length; i++) { + map[arr[i]] = 1; + } + return map; +}; +exports.createMap = function (props) { + var map = Object.create(null); + for (var i in props) { + map[i] = props[i]; + } + return map; +}; +exports.arrayRemove = function (array, value) { + for (var i = 0; i <= array.length; i++) { + if (value === array[i]) { + array.splice(i, 1); + } + } +}; +exports.escapeRegExp = function (str) { + return str.replace(/([.*+?^${}()|[\]\/\\])/g, '\\$1'); +}; +exports.escapeHTML = function (str) { + return ("" + str).replace(/&/g, "&").replace(/"/g, """).replace(/'/g, "'").replace(/ 0xffff ? 2 : 1; +}; + +}); + +ace.define("ace/lib/useragent",["require","exports","module"], function(require, exports, module){"use strict"; +exports.OS = { + LINUX: "LINUX", + MAC: "MAC", + WINDOWS: "WINDOWS" +}; +exports.getOS = function () { + if (exports.isMac) { + return exports.OS.MAC; + } + else if (exports.isLinux) { + return exports.OS.LINUX; + } + else { + return exports.OS.WINDOWS; + } +}; +var _navigator = typeof navigator == "object" ? navigator : {}; +var os = (/mac|win|linux/i.exec(_navigator.platform) || ["other"])[0].toLowerCase(); +var ua = _navigator.userAgent || ""; +var appName = _navigator.appName || ""; +exports.isWin = (os == "win"); +exports.isMac = (os == "mac"); +exports.isLinux = (os == "linux"); +exports.isIE = + (appName == "Microsoft Internet Explorer" || appName.indexOf("MSAppHost") >= 0) + ? parseFloat((ua.match(/(?:MSIE |Trident\/[0-9]+[\.0-9]+;.*rv:)([0-9]+[\.0-9]+)/) || [])[1]) + : parseFloat((ua.match(/(?:Trident\/[0-9]+[\.0-9]+;.*rv:)([0-9]+[\.0-9]+)/) || [])[1]); // for ie +exports.isOldIE = exports.isIE && exports.isIE < 9; +exports.isGecko = exports.isMozilla = ua.match(/ Gecko\/\d+/); +exports.isOpera = typeof opera == "object" && Object.prototype.toString.call(window.opera) == "[object Opera]"; +exports.isWebKit = parseFloat(ua.split("WebKit/")[1]) || undefined; +exports.isChrome = parseFloat(ua.split(" Chrome/")[1]) || undefined; +exports.isSafari = parseFloat(ua.split(" Safari/")[1]) && !exports.isChrome || undefined; +exports.isEdge = parseFloat(ua.split(" Edge/")[1]) || undefined; +exports.isAIR = ua.indexOf("AdobeAIR") >= 0; +exports.isAndroid = ua.indexOf("Android") >= 0; +exports.isChromeOS = ua.indexOf(" CrOS ") >= 0; +exports.isIOS = /iPad|iPhone|iPod/.test(ua) && !window.MSStream; +if (exports.isIOS) + exports.isMac = true; +exports.isMobile = exports.isIOS || exports.isAndroid; + +}); + +ace.define("ace/lib/dom",["require","exports","module","ace/lib/useragent"], function(require, exports, module){"use strict"; +var useragent = require("./useragent"); +var XHTML_NS = "http://www.w3.org/1999/xhtml"; +exports.buildDom = function buildDom(arr, parent, refs) { + if (typeof arr == "string" && arr) { + var txt = document.createTextNode(arr); + if (parent) + parent.appendChild(txt); + return txt; + } + if (!Array.isArray(arr)) { + if (arr && arr.appendChild && parent) + parent.appendChild(arr); + return arr; + } + if (typeof arr[0] != "string" || !arr[0]) { + var els = []; + for (var i = 0; i < arr.length; i++) { + var ch = buildDom(arr[i], parent, refs); + ch && els.push(ch); + } + return els; + } + var el = document.createElement(arr[0]); + var options = arr[1]; + var childIndex = 1; + if (options && typeof options == "object" && !Array.isArray(options)) + childIndex = 2; + for (var i = childIndex; i < arr.length; i++) + buildDom(arr[i], el, refs); + if (childIndex == 2) { + Object.keys(options).forEach(function (n) { + var val = options[n]; + if (n === "class") { + el.className = Array.isArray(val) ? val.join(" ") : val; + } + else if (typeof val == "function" || n == "value" || n[0] == "$") { + el[n] = val; + } + else if (n === "ref") { + if (refs) + refs[val] = el; + } + else if (n === "style") { + if (typeof val == "string") + el.style.cssText = val; + } + else if (val != null) { + el.setAttribute(n, val); + } + }); + } + if (parent) + parent.appendChild(el); + return el; +}; +exports.getDocumentHead = function (doc) { + if (!doc) + doc = document; + return doc.head || doc.getElementsByTagName("head")[0] || doc.documentElement; +}; +exports.createElement = function (tag, ns) { + return document.createElementNS ? + document.createElementNS(ns || XHTML_NS, tag) : + document.createElement(tag); +}; +exports.removeChildren = function (element) { + element.innerHTML = ""; +}; +exports.createTextNode = function (textContent, element) { + var doc = element ? element.ownerDocument : document; + return doc.createTextNode(textContent); +}; +exports.createFragment = function (element) { + var doc = element ? element.ownerDocument : document; + return doc.createDocumentFragment(); +}; +exports.hasCssClass = function (el, name) { + var classes = (el.className + "").split(/\s+/g); + return classes.indexOf(name) !== -1; +}; +exports.addCssClass = function (el, name) { + if (!exports.hasCssClass(el, name)) { + el.className += " " + name; + } +}; +exports.removeCssClass = function (el, name) { + var classes = el.className.split(/\s+/g); + while (true) { + var index = classes.indexOf(name); + if (index == -1) { + break; + } + classes.splice(index, 1); + } + el.className = classes.join(" "); +}; +exports.toggleCssClass = function (el, name) { + var classes = el.className.split(/\s+/g), add = true; + while (true) { + var index = classes.indexOf(name); + if (index == -1) { + break; + } + add = false; + classes.splice(index, 1); + } + if (add) + classes.push(name); + el.className = classes.join(" "); + return add; +}; +exports.setCssClass = function (node, className, include) { + if (include) { + exports.addCssClass(node, className); + } + else { + exports.removeCssClass(node, className); + } +}; +exports.hasCssString = function (id, doc) { + var index = 0, sheets; + doc = doc || document; + if ((sheets = doc.querySelectorAll("style"))) { + while (index < sheets.length) { + if (sheets[index++].id === id) { + return true; + } + } + } +}; +exports.removeElementById = function (id, doc) { + doc = doc || document; + if (doc.getElementById(id)) { + doc.getElementById(id).remove(); + } +}; +var strictCSP; +var cssCache = []; +exports.useStrictCSP = function (value) { + strictCSP = value; + if (value == false) + insertPendingStyles(); + else if (!cssCache) + cssCache = []; +}; +function insertPendingStyles() { + var cache = cssCache; + cssCache = null; + cache && cache.forEach(function (item) { + importCssString(item[0], item[1]); + }); +} +function importCssString(cssText, id, target) { + if (typeof document == "undefined") + return; + if (cssCache) { + if (target) { + insertPendingStyles(); + } + else if (target === false) { + return cssCache.push([cssText, id]); + } + } + if (strictCSP) + return; + var container = target; + if (!target || !target.getRootNode) { + container = document; + } + else { + container = target.getRootNode(); + if (!container || container == target) + container = document; + } + var doc = container.ownerDocument || container; + if (id && exports.hasCssString(id, container)) + return null; + if (id) + cssText += "\n/*# sourceURL=ace/css/" + id + " */"; + var style = exports.createElement("style"); + style.appendChild(doc.createTextNode(cssText)); + if (id) + style.id = id; + if (container == doc) + container = exports.getDocumentHead(doc); + container.insertBefore(style, container.firstChild); +} +exports.importCssString = importCssString; +exports.importCssStylsheet = function (uri, doc) { + exports.buildDom(["link", { rel: "stylesheet", href: uri }], exports.getDocumentHead(doc)); +}; +exports.scrollbarWidth = function (doc) { + var inner = exports.createElement("ace_inner"); + inner.style.width = "100%"; + inner.style.minWidth = "0px"; + inner.style.height = "200px"; + inner.style.display = "block"; + var outer = exports.createElement("ace_outer"); + var style = outer.style; + style.position = "absolute"; + style.left = "-10000px"; + style.overflow = "hidden"; + style.width = "200px"; + style.minWidth = "0px"; + style.height = "150px"; + style.display = "block"; + outer.appendChild(inner); + var body = (doc && doc.documentElement) || (document && document.documentElement); + if (!body) + return 0; + body.appendChild(outer); + var noScrollbar = inner.offsetWidth; + style.overflow = "scroll"; + var withScrollbar = inner.offsetWidth; + if (noScrollbar === withScrollbar) { + withScrollbar = outer.clientWidth; + } + body.removeChild(outer); + return noScrollbar - withScrollbar; +}; +exports.computedStyle = function (element, style) { + return window.getComputedStyle(element, "") || {}; +}; +exports.setStyle = function (styles, property, value) { + if (styles[property] !== value) { + styles[property] = value; + } +}; +exports.HAS_CSS_ANIMATION = false; +exports.HAS_CSS_TRANSFORMS = false; +exports.HI_DPI = useragent.isWin + ? typeof window !== "undefined" && window.devicePixelRatio >= 1.5 + : true; +if (useragent.isChromeOS) + exports.HI_DPI = false; +if (typeof document !== "undefined") { + var div = document.createElement("div"); + if (exports.HI_DPI && div.style.transform !== undefined) + exports.HAS_CSS_TRANSFORMS = true; + if (!useragent.isEdge && typeof div.style.animationName !== "undefined") + exports.HAS_CSS_ANIMATION = true; + div = null; +} +if (exports.HAS_CSS_TRANSFORMS) { + exports.translate = function (element, tx, ty) { + element.style.transform = "translate(" + Math.round(tx) + "px, " + Math.round(ty) + "px)"; + }; +} +else { + exports.translate = function (element, tx, ty) { + element.style.top = Math.round(ty) + "px"; + element.style.left = Math.round(tx) + "px"; + }; +} + +}); + +ace.define("ace/lib/net",["require","exports","module","ace/lib/dom"], function(require, exports, module){/* + * based on code from: + * + * @license RequireJS text 0.25.0 Copyright (c) 2010-2011, The Dojo Foundation All Rights Reserved. + * Available via the MIT or new BSD license. + * see: http://github.com/jrburke/requirejs for details + */ +"use strict"; +var dom = require("./dom"); +exports.get = function (url, callback) { + var xhr = new XMLHttpRequest(); + xhr.open('GET', url, true); + xhr.onreadystatechange = function () { + if (xhr.readyState === 4) { + callback(xhr.responseText); + } + }; + xhr.send(null); +}; +exports.loadScript = function (path, callback) { + var head = dom.getDocumentHead(); + var s = document.createElement('script'); + s.src = path; + head.appendChild(s); + s.onload = s.onreadystatechange = function (_, isAbort) { + if (isAbort || !s.readyState || s.readyState == "loaded" || s.readyState == "complete") { + s = s.onload = s.onreadystatechange = null; + if (!isAbort) + callback(); + } + }; +}; +exports.qualifyURL = function (url) { + var a = document.createElement('a'); + a.href = url; + return a.href; +}; + +}); + +ace.define("ace/lib/oop",["require","exports","module"], function(require, exports, module){"use strict"; +exports.inherits = function (ctor, superCtor) { + ctor.super_ = superCtor; + ctor.prototype = Object.create(superCtor.prototype, { + constructor: { + value: ctor, + enumerable: false, + writable: true, + configurable: true + } + }); +}; +exports.mixin = function (obj, mixin) { + for (var key in mixin) { + obj[key] = mixin[key]; + } + return obj; +}; +exports.implement = function (proto, mixin) { + exports.mixin(proto, mixin); +}; + +}); + +ace.define("ace/lib/event_emitter",["require","exports","module"], function(require, exports, module){"use strict"; +var EventEmitter = {}; +var stopPropagation = function () { this.propagationStopped = true; }; +var preventDefault = function () { this.defaultPrevented = true; }; +EventEmitter._emit = + EventEmitter._dispatchEvent = function (eventName, e) { + this._eventRegistry || (this._eventRegistry = {}); + this._defaultHandlers || (this._defaultHandlers = {}); + var listeners = this._eventRegistry[eventName] || []; + var defaultHandler = this._defaultHandlers[eventName]; + if (!listeners.length && !defaultHandler) + return; + if (typeof e != "object" || !e) + e = {}; + if (!e.type) + e.type = eventName; + if (!e.stopPropagation) + e.stopPropagation = stopPropagation; + if (!e.preventDefault) + e.preventDefault = preventDefault; + listeners = listeners.slice(); + for (var i = 0; i < listeners.length; i++) { + listeners[i](e, this); + if (e.propagationStopped) + break; + } + if (defaultHandler && !e.defaultPrevented) + return defaultHandler(e, this); + }; +EventEmitter._signal = function (eventName, e) { + var listeners = (this._eventRegistry || {})[eventName]; + if (!listeners) + return; + listeners = listeners.slice(); + for (var i = 0; i < listeners.length; i++) + listeners[i](e, this); +}; +EventEmitter.once = function (eventName, callback) { + var _self = this; + this.on(eventName, function newCallback() { + _self.off(eventName, newCallback); + callback.apply(null, arguments); + }); + if (!callback) { + return new Promise(function (resolve) { + callback = resolve; + }); + } +}; +EventEmitter.setDefaultHandler = function (eventName, callback) { + var handlers = this._defaultHandlers; + if (!handlers) + handlers = this._defaultHandlers = { _disabled_: {} }; + if (handlers[eventName]) { + var old = handlers[eventName]; + var disabled = handlers._disabled_[eventName]; + if (!disabled) + handlers._disabled_[eventName] = disabled = []; + disabled.push(old); + var i = disabled.indexOf(callback); + if (i != -1) + disabled.splice(i, 1); + } + handlers[eventName] = callback; +}; +EventEmitter.removeDefaultHandler = function (eventName, callback) { + var handlers = this._defaultHandlers; + if (!handlers) + return; + var disabled = handlers._disabled_[eventName]; + if (handlers[eventName] == callback) { + if (disabled) + this.setDefaultHandler(eventName, disabled.pop()); + } + else if (disabled) { + var i = disabled.indexOf(callback); + if (i != -1) + disabled.splice(i, 1); + } +}; +EventEmitter.on = + EventEmitter.addEventListener = function (eventName, callback, capturing) { + this._eventRegistry = this._eventRegistry || {}; + var listeners = this._eventRegistry[eventName]; + if (!listeners) + listeners = this._eventRegistry[eventName] = []; + if (listeners.indexOf(callback) == -1) + listeners[capturing ? "unshift" : "push"](callback); + return callback; + }; +EventEmitter.off = + EventEmitter.removeListener = + EventEmitter.removeEventListener = function (eventName, callback) { + this._eventRegistry = this._eventRegistry || {}; + var listeners = this._eventRegistry[eventName]; + if (!listeners) + return; + var index = listeners.indexOf(callback); + if (index !== -1) + listeners.splice(index, 1); + }; +EventEmitter.removeAllListeners = function (eventName) { + if (!eventName) + this._eventRegistry = this._defaultHandlers = undefined; + if (this._eventRegistry) + this._eventRegistry[eventName] = undefined; + if (this._defaultHandlers) + this._defaultHandlers[eventName] = undefined; +}; +exports.EventEmitter = EventEmitter; + +}); + +ace.define("ace/lib/report_error",["require","exports","module"], function(require, exports, module){exports.reportError = function reportError(msg, data) { + var e = new Error(msg); + e.data = data; + if (typeof console == "object" && console.error) + console.error(e); + setTimeout(function () { throw e; }); +}; + +}); + +ace.define("ace/lib/app_config",["require","exports","module","ace/lib/oop","ace/lib/event_emitter","ace/lib/report_error"], function(require, exports, module){"no use strict"; +var oop = require("./oop"); +var EventEmitter = require("./event_emitter").EventEmitter; +var reportError = require("./report_error").reportError; +var optionsProvider = { + setOptions: function (optList) { + Object.keys(optList).forEach(function (key) { + this.setOption(key, optList[key]); + }, this); + }, + getOptions: function (optionNames) { + var result = {}; + if (!optionNames) { + var options = this.$options; + optionNames = Object.keys(options).filter(function (key) { + return !options[key].hidden; + }); + } + else if (!Array.isArray(optionNames)) { + result = optionNames; + optionNames = Object.keys(result); + } + optionNames.forEach(function (key) { + result[key] = this.getOption(key); + }, this); + return result; + }, + setOption: function (name, value) { + if (this["$" + name] === value) + return; + var opt = this.$options[name]; + if (!opt) { + return warn('misspelled option "' + name + '"'); + } + if (opt.forwardTo) + return this[opt.forwardTo] && this[opt.forwardTo].setOption(name, value); + if (!opt.handlesSet) + this["$" + name] = value; + if (opt && opt.set) + opt.set.call(this, value); + }, + getOption: function (name) { + var opt = this.$options[name]; + if (!opt) { + return warn('misspelled option "' + name + '"'); + } + if (opt.forwardTo) + return this[opt.forwardTo] && this[opt.forwardTo].getOption(name); + return opt && opt.get ? opt.get.call(this) : this["$" + name]; + } +}; +function warn(message) { + if (typeof console != "undefined" && console.warn) + console.warn.apply(console, arguments); +} +var messages; +var AppConfig = /** @class */ (function () { + function AppConfig() { + this.$defaultOptions = {}; + } + AppConfig.prototype.defineOptions = function (obj, path, options) { + if (!obj.$options) + this.$defaultOptions[path] = obj.$options = {}; + Object.keys(options).forEach(function (key) { + var opt = options[key]; + if (typeof opt == "string") + opt = { forwardTo: opt }; + opt.name || (opt.name = key); + obj.$options[opt.name] = opt; + if ("initialValue" in opt) + obj["$" + opt.name] = opt.initialValue; + }); + oop.implement(obj, optionsProvider); + return this; + }; + AppConfig.prototype.resetOptions = function (obj) { + Object.keys(obj.$options).forEach(function (key) { + var opt = obj.$options[key]; + if ("value" in opt) + obj.setOption(key, opt.value); + }); + }; + AppConfig.prototype.setDefaultValue = function (path, name, value) { + if (!path) { + for (path in this.$defaultOptions) + if (this.$defaultOptions[path][name]) + break; + if (!this.$defaultOptions[path][name]) + return false; + } + var opts = this.$defaultOptions[path] || (this.$defaultOptions[path] = {}); + if (opts[name]) { + if (opts.forwardTo) + this.setDefaultValue(opts.forwardTo, name, value); + else + opts[name].value = value; + } + }; + AppConfig.prototype.setDefaultValues = function (path, optionHash) { + Object.keys(optionHash).forEach(function (key) { + this.setDefaultValue(path, key, optionHash[key]); + }, this); + }; + AppConfig.prototype.setMessages = function (value) { + messages = value; + }; + AppConfig.prototype.nls = function (string, params) { + if (messages && !messages[string]) { + warn("No message found for '" + string + "' in the provided messages, falling back to default English message."); + } + var translated = messages && messages[string] || string; + if (params) { + translated = translated.replace(/\$(\$|[\d]+)/g, function (_, name) { + if (name == "$") + return "$"; + return params[name]; + }); + } + return translated; + }; + return AppConfig; +}()); +AppConfig.prototype.warn = warn; +AppConfig.prototype.reportError = reportError; +oop.implement(AppConfig.prototype, EventEmitter); +exports.AppConfig = AppConfig; + +}); + +ace.define("ace/theme/textmate-css",["require","exports","module"], function(require, exports, module){module.exports = ".ace-tm .ace_gutter {\n background: #f0f0f0;\n color: #333;\n}\n\n.ace-tm .ace_print-margin {\n width: 1px;\n background: #e8e8e8;\n}\n\n.ace-tm .ace_fold {\n background-color: #6B72E6;\n}\n\n.ace-tm {\n background-color: #FFFFFF;\n color: black;\n}\n\n.ace-tm .ace_cursor {\n color: black;\n}\n \n.ace-tm .ace_invisible {\n color: rgb(191, 191, 191);\n}\n\n.ace-tm .ace_storage,\n.ace-tm .ace_keyword {\n color: blue;\n}\n\n.ace-tm .ace_constant {\n color: rgb(197, 6, 11);\n}\n\n.ace-tm .ace_constant.ace_buildin {\n color: rgb(88, 72, 246);\n}\n\n.ace-tm .ace_constant.ace_language {\n color: rgb(88, 92, 246);\n}\n\n.ace-tm .ace_constant.ace_library {\n color: rgb(6, 150, 14);\n}\n\n.ace-tm .ace_invalid {\n background-color: rgba(255, 0, 0, 0.1);\n color: red;\n}\n\n.ace-tm .ace_support.ace_function {\n color: rgb(60, 76, 114);\n}\n\n.ace-tm .ace_support.ace_constant {\n color: rgb(6, 150, 14);\n}\n\n.ace-tm .ace_support.ace_type,\n.ace-tm .ace_support.ace_class {\n color: rgb(109, 121, 222);\n}\n\n.ace-tm .ace_keyword.ace_operator {\n color: rgb(104, 118, 135);\n}\n\n.ace-tm .ace_string {\n color: rgb(3, 106, 7);\n}\n\n.ace-tm .ace_comment {\n color: rgb(76, 136, 107);\n}\n\n.ace-tm .ace_comment.ace_doc {\n color: rgb(0, 102, 255);\n}\n\n.ace-tm .ace_comment.ace_doc.ace_tag {\n color: rgb(128, 159, 191);\n}\n\n.ace-tm .ace_constant.ace_numeric {\n color: rgb(0, 0, 205);\n}\n\n.ace-tm .ace_variable {\n color: rgb(49, 132, 149);\n}\n\n.ace-tm .ace_xml-pe {\n color: rgb(104, 104, 91);\n}\n\n.ace-tm .ace_entity.ace_name.ace_function {\n color: #0000A2;\n}\n\n\n.ace-tm .ace_heading {\n color: rgb(12, 7, 255);\n}\n\n.ace-tm .ace_list {\n color:rgb(185, 6, 144);\n}\n\n.ace-tm .ace_meta.ace_tag {\n color:rgb(0, 22, 142);\n}\n\n.ace-tm .ace_string.ace_regex {\n color: rgb(255, 0, 0)\n}\n\n.ace-tm .ace_marker-layer .ace_selection {\n background: rgb(181, 213, 255);\n}\n.ace-tm.ace_multiselect .ace_selection.ace_start {\n box-shadow: 0 0 3px 0px white;\n}\n.ace-tm .ace_marker-layer .ace_step {\n background: rgb(252, 255, 0);\n}\n\n.ace-tm .ace_marker-layer .ace_stack {\n background: rgb(164, 229, 101);\n}\n\n.ace-tm .ace_marker-layer .ace_bracket {\n margin: -1px 0 0 -1px;\n border: 1px solid rgb(192, 192, 192);\n}\n\n.ace-tm .ace_marker-layer .ace_active-line {\n background: rgba(0, 0, 0, 0.07);\n}\n\n.ace-tm .ace_gutter-active-line {\n background-color : #dcdcdc;\n}\n\n.ace-tm .ace_marker-layer .ace_selected-word {\n background: rgb(250, 250, 255);\n border: 1px solid rgb(200, 200, 250);\n}\n\n.ace-tm .ace_indent-guide {\n background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==\") right repeat-y;\n}\n\n.ace-tm .ace_indent-guide-active {\n background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAAZSURBVHjaYvj///9/hivKyv8BAAAA//8DACLqBhbvk+/eAAAAAElFTkSuQmCC\") right repeat-y;\n}\n"; + +}); + +ace.define("ace/theme/textmate",["require","exports","module","ace/theme/textmate-css","ace/lib/dom"], function(require, exports, module){"use strict"; +exports.isDark = false; +exports.cssClass = "ace-tm"; +exports.cssText = require("./textmate-css"); +exports.$id = "ace/theme/textmate"; +var dom = require("../lib/dom"); +dom.importCssString(exports.cssText, exports.cssClass, false); + +}); + +ace.define("ace/config",["require","exports","module","ace/lib/lang","ace/lib/net","ace/lib/dom","ace/lib/app_config","ace/theme/textmate"], function(require, exports, module){"no use strict"; +var lang = require("./lib/lang"); +var net = require("./lib/net"); +var dom = require("./lib/dom"); +var AppConfig = require("./lib/app_config").AppConfig; +module.exports = exports = new AppConfig(); +var options = { + packaged: false, + workerPath: null, + modePath: null, + themePath: null, + basePath: "", + suffix: ".js", + $moduleUrls: {}, + loadWorkerFromBlob: true, + sharedPopups: false, + useStrictCSP: null +}; +exports.get = function (key) { + if (!options.hasOwnProperty(key)) + throw new Error("Unknown config key: " + key); + return options[key]; +}; +exports.set = function (key, value) { + if (options.hasOwnProperty(key)) + options[key] = value; + else if (this.setDefaultValue("", key, value) == false) + throw new Error("Unknown config key: " + key); + if (key == "useStrictCSP") + dom.useStrictCSP(value); +}; +exports.all = function () { + return lang.copyObject(options); +}; +exports.$modes = {}; +exports.moduleUrl = function (name, component) { + if (options.$moduleUrls[name]) + return options.$moduleUrls[name]; + var parts = name.split("/"); + component = component || parts[parts.length - 2] || ""; + var sep = component == "snippets" ? "/" : "-"; + var base = parts[parts.length - 1]; + if (component == "worker" && sep == "-") { + var re = new RegExp("^" + component + "[\\-_]|[\\-_]" + component + "$", "g"); + base = base.replace(re, ""); + } + if ((!base || base == component) && parts.length > 1) + base = parts[parts.length - 2]; + var path = options[component + "Path"]; + if (path == null) { + path = options.basePath; + } + else if (sep == "/") { + component = sep = ""; + } + if (path && path.slice(-1) != "/") + path += "/"; + return path + component + sep + base + this.get("suffix"); +}; +exports.setModuleUrl = function (name, subst) { + return options.$moduleUrls[name] = subst; +}; +var loader = function (moduleName, cb) { + if (moduleName === "ace/theme/textmate" || moduleName === "./theme/textmate") + return cb(null, require("./theme/textmate")); + if (customLoader) + return customLoader(moduleName, cb); + console.error("loader is not configured"); +}; +var customLoader; +exports.setLoader = function (cb) { + customLoader = cb; +}; +exports.dynamicModules = Object.create(null); +exports.$loading = {}; +exports.$loaded = {}; +exports.loadModule = function (moduleName, onLoad) { + var loadedModule, moduleType; + if (Array.isArray(moduleName)) { + moduleType = moduleName[0]; + moduleName = moduleName[1]; + } + var load = function (module) { + if (module && !exports.$loading[moduleName]) + return onLoad && onLoad(module); + if (!exports.$loading[moduleName]) + exports.$loading[moduleName] = []; + exports.$loading[moduleName].push(onLoad); + if (exports.$loading[moduleName].length > 1) + return; + var afterLoad = function () { + loader(moduleName, function (err, module) { + if (module) + exports.$loaded[moduleName] = module; + exports._emit("load.module", { name: moduleName, module: module }); + var listeners = exports.$loading[moduleName]; + exports.$loading[moduleName] = null; + listeners.forEach(function (onLoad) { + onLoad && onLoad(module); + }); + }); + }; + if (!exports.get("packaged")) + return afterLoad(); + net.loadScript(exports.moduleUrl(moduleName, moduleType), afterLoad); + reportErrorIfPathIsNotConfigured(); + }; + if (exports.dynamicModules[moduleName]) { + exports.dynamicModules[moduleName]().then(function (module) { + if (module.default) { + load(module.default); + } + else { + load(module); + } + }); + } + else { + try { + loadedModule = this.$require(moduleName); + } + catch (e) { } + load(loadedModule || exports.$loaded[moduleName]); + } +}; +exports.$require = function (moduleName) { + if (typeof module.require == "function") { + var req = "require"; + return module[req](moduleName); + } +}; +exports.setModuleLoader = function (moduleName, onLoad) { + exports.dynamicModules[moduleName] = onLoad; +}; +var reportErrorIfPathIsNotConfigured = function () { + if (!options.basePath && !options.workerPath + && !options.modePath && !options.themePath + && !Object.keys(options.$moduleUrls).length) { + console.error("Unable to infer path to ace from script src,", "use ace.config.set('basePath', 'path') to enable dynamic loading of modes and themes", "or with webpack use ace/webpack-resolver"); + reportErrorIfPathIsNotConfigured = function () { }; + } +}; +exports.version = "1.32.0"; + +}); + +ace.define("ace/loader_build",["require","exports","module","ace/lib/fixoldbrowsers","ace/config"], function(require, exports, module) { +"use strict"; + +require("./lib/fixoldbrowsers"); +var config = require("./config"); +config.setLoader(function(moduleName, cb) { + require([moduleName], function(module) { + cb(null, module); + }); +}); + +var global = (function() { + return this || typeof window != "undefined" && window; +})(); + +module.exports = function(ace) { + config.init = init; + config.$require = require; + ace.require = require; + + if (true) + ace.define = __webpack_require__.amdD; +}; +init(true);function init(packaged) { + + if (!global || !global.document) + return; + + config.set("packaged", packaged || require.packaged || module.packaged || (global.define && __webpack_require__.amdD.packaged)); + + var scriptOptions = {}; + var scriptUrl = ""; + var currentScript = (document.currentScript || document._currentScript ); // native or polyfill + var currentDocument = currentScript && currentScript.ownerDocument || document; + + if (currentScript && currentScript.src) { + scriptUrl = currentScript.src.split(/[?#]/)[0].split("/").slice(0, -1).join("/") || ""; + } + + var scripts = currentDocument.getElementsByTagName("script"); + for (var i=0; i [" + this.end.row + "/" + this.end.column + "]"); + }; + Range.prototype.contains = function (row, column) { + return this.compare(row, column) == 0; + }; + Range.prototype.compareRange = function (range) { + var cmp, end = range.end, start = range.start; + cmp = this.compare(end.row, end.column); + if (cmp == 1) { + cmp = this.compare(start.row, start.column); + if (cmp == 1) { + return 2; + } + else if (cmp == 0) { + return 1; + } + else { + return 0; + } + } + else if (cmp == -1) { + return -2; + } + else { + cmp = this.compare(start.row, start.column); + if (cmp == -1) { + return -1; + } + else if (cmp == 1) { + return 42; + } + else { + return 0; + } + } + }; + Range.prototype.comparePoint = function (p) { + return this.compare(p.row, p.column); + }; + Range.prototype.containsRange = function (range) { + return this.comparePoint(range.start) == 0 && this.comparePoint(range.end) == 0; + }; + Range.prototype.intersects = function (range) { + var cmp = this.compareRange(range); + return (cmp == -1 || cmp == 0 || cmp == 1); + }; + Range.prototype.isEnd = function (row, column) { + return this.end.row == row && this.end.column == column; + }; + Range.prototype.isStart = function (row, column) { + return this.start.row == row && this.start.column == column; + }; + Range.prototype.setStart = function (row, column) { + if (typeof row == "object") { + this.start.column = row.column; + this.start.row = row.row; + } + else { + this.start.row = row; + this.start.column = column; + } + }; + Range.prototype.setEnd = function (row, column) { + if (typeof row == "object") { + this.end.column = row.column; + this.end.row = row.row; + } + else { + this.end.row = row; + this.end.column = column; + } + }; + Range.prototype.inside = function (row, column) { + if (this.compare(row, column) == 0) { + if (this.isEnd(row, column) || this.isStart(row, column)) { + return false; + } + else { + return true; + } + } + return false; + }; + Range.prototype.insideStart = function (row, column) { + if (this.compare(row, column) == 0) { + if (this.isEnd(row, column)) { + return false; + } + else { + return true; + } + } + return false; + }; + Range.prototype.insideEnd = function (row, column) { + if (this.compare(row, column) == 0) { + if (this.isStart(row, column)) { + return false; + } + else { + return true; + } + } + return false; + }; + Range.prototype.compare = function (row, column) { + if (!this.isMultiLine()) { + if (row === this.start.row) { + return column < this.start.column ? -1 : (column > this.end.column ? 1 : 0); + } + } + if (row < this.start.row) + return -1; + if (row > this.end.row) + return 1; + if (this.start.row === row) + return column >= this.start.column ? 0 : -1; + if (this.end.row === row) + return column <= this.end.column ? 0 : 1; + return 0; + }; + Range.prototype.compareStart = function (row, column) { + if (this.start.row == row && this.start.column == column) { + return -1; + } + else { + return this.compare(row, column); + } + }; + Range.prototype.compareEnd = function (row, column) { + if (this.end.row == row && this.end.column == column) { + return 1; + } + else { + return this.compare(row, column); + } + }; + Range.prototype.compareInside = function (row, column) { + if (this.end.row == row && this.end.column == column) { + return 1; + } + else if (this.start.row == row && this.start.column == column) { + return -1; + } + else { + return this.compare(row, column); + } + }; + Range.prototype.clipRows = function (firstRow, lastRow) { + if (this.end.row > lastRow) + var end = { row: lastRow + 1, column: 0 }; + else if (this.end.row < firstRow) + var end = { row: firstRow, column: 0 }; + if (this.start.row > lastRow) + var start = { row: lastRow + 1, column: 0 }; + else if (this.start.row < firstRow) + var start = { row: firstRow, column: 0 }; + return Range.fromPoints(start || this.start, end || this.end); + }; + Range.prototype.extend = function (row, column) { + var cmp = this.compare(row, column); + if (cmp == 0) + return this; + else if (cmp == -1) + var start = { row: row, column: column }; + else + var end = { row: row, column: column }; + return Range.fromPoints(start || this.start, end || this.end); + }; + Range.prototype.isEmpty = function () { + return (this.start.row === this.end.row && this.start.column === this.end.column); + }; + Range.prototype.isMultiLine = function () { + return (this.start.row !== this.end.row); + }; + Range.prototype.clone = function () { + return Range.fromPoints(this.start, this.end); + }; + Range.prototype.collapseRows = function () { + if (this.end.column == 0) + return new Range(this.start.row, 0, Math.max(this.start.row, this.end.row - 1), 0); + else + return new Range(this.start.row, 0, this.end.row, 0); + }; + Range.prototype.toScreenRange = function (session) { + var screenPosStart = session.documentToScreenPosition(this.start); + var screenPosEnd = session.documentToScreenPosition(this.end); + return new Range(screenPosStart.row, screenPosStart.column, screenPosEnd.row, screenPosEnd.column); + }; + Range.prototype.moveBy = function (row, column) { + this.start.row += row; + this.start.column += column; + this.end.row += row; + this.end.column += column; + }; + return Range; +}()); +Range.fromPoints = function (start, end) { + return new Range(start.row, start.column, end.row, end.column); +}; +Range.comparePoints = comparePoints; +Range.comparePoints = function (p1, p2) { + return p1.row - p2.row || p1.column - p2.column; +}; +exports.Range = Range; + +}); + +ace.define("ace/lib/keys",["require","exports","module","ace/lib/oop"], function(require, exports, module){/*! @license +========================================================================== +SproutCore -- JavaScript Application Framework +copyright 2006-2009, Sprout Systems Inc., Apple Inc. and contributors. + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the "Software"), +to deal in the Software without restriction, including without limitation +the rights to use, copy, modify, merge, publish, distribute, sublicense, +and/or sell copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. + +SproutCore and the SproutCore logo are trademarks of Sprout Systems, Inc. + +For more information about SproutCore, visit http://www.sproutcore.com + + +========================================================================== +@license */ +"use strict"; +var oop = require("./oop"); +var Keys = (function () { + var ret = { + MODIFIER_KEYS: { + 16: 'Shift', 17: 'Ctrl', 18: 'Alt', 224: 'Meta', + 91: 'MetaLeft', 92: 'MetaRight', 93: 'ContextMenu' + }, + KEY_MODS: { + "ctrl": 1, "alt": 2, "option": 2, "shift": 4, + "super": 8, "meta": 8, "command": 8, "cmd": 8, + "control": 1 + }, + FUNCTION_KEYS: { + 8: "Backspace", + 9: "Tab", + 13: "Return", + 19: "Pause", + 27: "Esc", + 32: "Space", + 33: "PageUp", + 34: "PageDown", + 35: "End", + 36: "Home", + 37: "Left", + 38: "Up", + 39: "Right", + 40: "Down", + 44: "Print", + 45: "Insert", + 46: "Delete", + 96: "Numpad0", + 97: "Numpad1", + 98: "Numpad2", + 99: "Numpad3", + 100: "Numpad4", + 101: "Numpad5", + 102: "Numpad6", + 103: "Numpad7", + 104: "Numpad8", + 105: "Numpad9", + '-13': "NumpadEnter", + 112: "F1", + 113: "F2", + 114: "F3", + 115: "F4", + 116: "F5", + 117: "F6", + 118: "F7", + 119: "F8", + 120: "F9", + 121: "F10", + 122: "F11", + 123: "F12", + 144: "Numlock", + 145: "Scrolllock" + }, + PRINTABLE_KEYS: { + 32: ' ', 48: '0', 49: '1', 50: '2', 51: '3', 52: '4', 53: '5', + 54: '6', 55: '7', 56: '8', 57: '9', 59: ';', 61: '=', 65: 'a', + 66: 'b', 67: 'c', 68: 'd', 69: 'e', 70: 'f', 71: 'g', 72: 'h', + 73: 'i', 74: 'j', 75: 'k', 76: 'l', 77: 'm', 78: 'n', 79: 'o', + 80: 'p', 81: 'q', 82: 'r', 83: 's', 84: 't', 85: 'u', 86: 'v', + 87: 'w', 88: 'x', 89: 'y', 90: 'z', 107: '+', 109: '-', 110: '.', + 186: ';', 187: '=', 188: ',', 189: '-', 190: '.', 191: '/', 192: '`', + 219: '[', 220: '\\', 221: ']', 222: "'", 111: '/', 106: '*' + } + }; + ret.PRINTABLE_KEYS[173] = '-'; + var name, i; + for (i in ret.FUNCTION_KEYS) { + name = ret.FUNCTION_KEYS[i].toLowerCase(); + ret[name] = parseInt(i, 10); + } + for (i in ret.PRINTABLE_KEYS) { + name = ret.PRINTABLE_KEYS[i].toLowerCase(); + ret[name] = parseInt(i, 10); + } + oop.mixin(ret, ret.MODIFIER_KEYS); + oop.mixin(ret, ret.PRINTABLE_KEYS); + oop.mixin(ret, ret.FUNCTION_KEYS); + ret.enter = ret["return"]; + ret.escape = ret.esc; + ret.del = ret["delete"]; + (function () { + var mods = ["cmd", "ctrl", "alt", "shift"]; + for (var i = Math.pow(2, mods.length); i--;) { + ret.KEY_MODS[i] = mods.filter(function (x) { + return i & ret.KEY_MODS[x]; + }).join("-") + "-"; + } + })(); + ret.KEY_MODS[0] = ""; + ret.KEY_MODS[-1] = "input-"; + return ret; +})(); +oop.mixin(exports, Keys); +exports.default = exports; +exports.keyCodeToString = function (keyCode) { + var keyString = Keys[keyCode]; + if (typeof keyString != "string") + keyString = String.fromCharCode(keyCode); + return keyString.toLowerCase(); +}; + +}); + +ace.define("ace/lib/event",["require","exports","module","ace/lib/keys","ace/lib/useragent"], function(require, exports, module){"use strict"; +var keys = require("./keys"); +var useragent = require("./useragent"); +var pressedKeys = null; +var ts = 0; +var activeListenerOptions; +function detectListenerOptionsSupport() { + activeListenerOptions = false; + try { + document.createComment("").addEventListener("test", function () { }, { + get passive() { + activeListenerOptions = { passive: false }; + } + }); + } + catch (e) { } +} +function getListenerOptions() { + if (activeListenerOptions == undefined) + detectListenerOptionsSupport(); + return activeListenerOptions; +} +function EventListener(elem, type, callback) { + this.elem = elem; + this.type = type; + this.callback = callback; +} +EventListener.prototype.destroy = function () { + removeListener(this.elem, this.type, this.callback); + this.elem = this.type = this.callback = undefined; +}; +var addListener = exports.addListener = function (elem, type, callback, destroyer) { + elem.addEventListener(type, callback, getListenerOptions()); + if (destroyer) + destroyer.$toDestroy.push(new EventListener(elem, type, callback)); +}; +var removeListener = exports.removeListener = function (elem, type, callback) { + elem.removeEventListener(type, callback, getListenerOptions()); +}; +exports.stopEvent = function (e) { + exports.stopPropagation(e); + exports.preventDefault(e); + return false; +}; +exports.stopPropagation = function (e) { + if (e.stopPropagation) + e.stopPropagation(); +}; +exports.preventDefault = function (e) { + if (e.preventDefault) + e.preventDefault(); +}; +exports.getButton = function (e) { + if (e.type == "dblclick") + return 0; + if (e.type == "contextmenu" || (useragent.isMac && (e.ctrlKey && !e.altKey && !e.shiftKey))) + return 2; + return e.button; +}; +exports.capture = function (el, eventHandler, releaseCaptureHandler) { + var ownerDocument = el && el.ownerDocument || document; + function onMouseUp(e) { + eventHandler && eventHandler(e); + releaseCaptureHandler && releaseCaptureHandler(e); + removeListener(ownerDocument, "mousemove", eventHandler); + removeListener(ownerDocument, "mouseup", onMouseUp); + removeListener(ownerDocument, "dragstart", onMouseUp); + } + addListener(ownerDocument, "mousemove", eventHandler); + addListener(ownerDocument, "mouseup", onMouseUp); + addListener(ownerDocument, "dragstart", onMouseUp); + return onMouseUp; +}; +exports.addMouseWheelListener = function (el, callback, destroyer) { + addListener(el, "wheel", function (e) { + var factor = 0.15; + var deltaX = e.deltaX || 0; + var deltaY = e.deltaY || 0; + switch (e.deltaMode) { + case e.DOM_DELTA_PIXEL: + e.wheelX = deltaX * factor; + e.wheelY = deltaY * factor; + break; + case e.DOM_DELTA_LINE: + var linePixels = 15; + e.wheelX = deltaX * linePixels; + e.wheelY = deltaY * linePixels; + break; + case e.DOM_DELTA_PAGE: + var pagePixels = 150; + e.wheelX = deltaX * pagePixels; + e.wheelY = deltaY * pagePixels; + break; + } + callback(e); + }, destroyer); +}; +exports.addMultiMouseDownListener = function (elements, timeouts, eventHandler, callbackName, destroyer) { + var clicks = 0; + var startX, startY, timer; + var eventNames = { + 2: "dblclick", + 3: "tripleclick", + 4: "quadclick" + }; + function onMousedown(e) { + if (exports.getButton(e) !== 0) { + clicks = 0; + } + else if (e.detail > 1) { + clicks++; + if (clicks > 4) + clicks = 1; + } + else { + clicks = 1; + } + if (useragent.isIE) { + var isNewClick = Math.abs(e.clientX - startX) > 5 || Math.abs(e.clientY - startY) > 5; + if (!timer || isNewClick) + clicks = 1; + if (timer) + clearTimeout(timer); + timer = setTimeout(function () { timer = null; }, timeouts[clicks - 1] || 600); + if (clicks == 1) { + startX = e.clientX; + startY = e.clientY; + } + } + e._clicks = clicks; + eventHandler[callbackName]("mousedown", e); + if (clicks > 4) + clicks = 0; + else if (clicks > 1) + return eventHandler[callbackName](eventNames[clicks], e); + } + if (!Array.isArray(elements)) + elements = [elements]; + elements.forEach(function (el) { + addListener(el, "mousedown", onMousedown, destroyer); + }); +}; +var getModifierHash = function (e) { + return 0 | (e.ctrlKey ? 1 : 0) | (e.altKey ? 2 : 0) | (e.shiftKey ? 4 : 0) | (e.metaKey ? 8 : 0); +}; +exports.getModifierString = function (e) { + return keys.KEY_MODS[getModifierHash(e)]; +}; +function normalizeCommandKeys(callback, e, keyCode) { + var hashId = getModifierHash(e); + if (!useragent.isMac && pressedKeys) { + if (e.getModifierState && (e.getModifierState("OS") || e.getModifierState("Win"))) + hashId |= 8; + if (pressedKeys.altGr) { + if ((3 & hashId) != 3) + pressedKeys.altGr = 0; + else + return; + } + if (keyCode === 18 || keyCode === 17) { + var location = "location" in e ? e.location : e.keyLocation; + if (keyCode === 17 && location === 1) { + if (pressedKeys[keyCode] == 1) + ts = e.timeStamp; + } + else if (keyCode === 18 && hashId === 3 && location === 2) { + var dt = e.timeStamp - ts; + if (dt < 50) + pressedKeys.altGr = true; + } + } + } + if (keyCode in keys.MODIFIER_KEYS) { + keyCode = -1; + } + if (!hashId && keyCode === 13) { + var location = "location" in e ? e.location : e.keyLocation; + if (location === 3) { + callback(e, hashId, -keyCode); + if (e.defaultPrevented) + return; + } + } + if (useragent.isChromeOS && hashId & 8) { + callback(e, hashId, keyCode); + if (e.defaultPrevented) + return; + else + hashId &= ~8; + } + if (!hashId && !(keyCode in keys.FUNCTION_KEYS) && !(keyCode in keys.PRINTABLE_KEYS)) { + return false; + } + return callback(e, hashId, keyCode); +} +exports.addCommandKeyListener = function (el, callback, destroyer) { + if (useragent.isOldGecko || (useragent.isOpera && !("KeyboardEvent" in window))) { + var lastKeyDownKeyCode = null; + addListener(el, "keydown", function (e) { + lastKeyDownKeyCode = e.keyCode; + }, destroyer); + addListener(el, "keypress", function (e) { + return normalizeCommandKeys(callback, e, lastKeyDownKeyCode); + }, destroyer); + } + else { + var lastDefaultPrevented = null; + addListener(el, "keydown", function (e) { + pressedKeys[e.keyCode] = (pressedKeys[e.keyCode] || 0) + 1; + var result = normalizeCommandKeys(callback, e, e.keyCode); + lastDefaultPrevented = e.defaultPrevented; + return result; + }, destroyer); + addListener(el, "keypress", function (e) { + if (lastDefaultPrevented && (e.ctrlKey || e.altKey || e.shiftKey || e.metaKey)) { + exports.stopEvent(e); + lastDefaultPrevented = null; + } + }, destroyer); + addListener(el, "keyup", function (e) { + pressedKeys[e.keyCode] = null; + }, destroyer); + if (!pressedKeys) { + resetPressedKeys(); + addListener(window, "focus", resetPressedKeys); + } + } +}; +function resetPressedKeys() { + pressedKeys = Object.create(null); +} +if (typeof window == "object" && window.postMessage && !useragent.isOldIE) { + var postMessageId = 1; + exports.nextTick = function (callback, win) { + win = win || window; + var messageName = "zero-timeout-message-" + (postMessageId++); + var listener = function (e) { + if (e.data == messageName) { + exports.stopPropagation(e); + removeListener(win, "message", listener); + callback(); + } + }; + addListener(win, "message", listener); + win.postMessage(messageName, "*"); + }; +} +exports.$idleBlocked = false; +exports.onIdle = function (cb, timeout) { + return setTimeout(function handler() { + if (!exports.$idleBlocked) { + cb(); + } + else { + setTimeout(handler, 100); + } + }, timeout); +}; +exports.$idleBlockId = null; +exports.blockIdle = function (delay) { + if (exports.$idleBlockId) + clearTimeout(exports.$idleBlockId); + exports.$idleBlocked = true; + exports.$idleBlockId = setTimeout(function () { + exports.$idleBlocked = false; + }, delay || 100); +}; +exports.nextFrame = typeof window == "object" && (window.requestAnimationFrame + || window.mozRequestAnimationFrame + || window.webkitRequestAnimationFrame + || window.msRequestAnimationFrame + || window.oRequestAnimationFrame); +if (exports.nextFrame) + exports.nextFrame = exports.nextFrame.bind(window); +else + exports.nextFrame = function (callback) { + setTimeout(callback, 17); + }; + +}); + +ace.define("ace/clipboard",["require","exports","module"], function(require, exports, module){"use strict"; +var $cancelT; +module.exports = { + lineMode: false, + pasteCancelled: function () { + if ($cancelT && $cancelT > Date.now() - 50) + return true; + return $cancelT = false; + }, + cancel: function () { + $cancelT = Date.now(); + } +}; + +}); + +ace.define("ace/keyboard/textinput",["require","exports","module","ace/lib/event","ace/config","ace/lib/useragent","ace/lib/dom","ace/lib/lang","ace/clipboard","ace/lib/keys"], function(require, exports, module){"use strict"; +var event = require("../lib/event"); +var nls = require("../config").nls; +var useragent = require("../lib/useragent"); +var dom = require("../lib/dom"); +var lang = require("../lib/lang"); +var clipboard = require("../clipboard"); +var BROKEN_SETDATA = useragent.isChrome < 18; +var USE_IE_MIME_TYPE = useragent.isIE; +var HAS_FOCUS_ARGS = useragent.isChrome > 63; +var MAX_LINE_LENGTH = 400; +var KEYS = require("../lib/keys"); +var MODS = KEYS.KEY_MODS; +var isIOS = useragent.isIOS; +var valueResetRegex = isIOS ? /\s/ : /\n/; +var isMobile = useragent.isMobile; +var TextInput = function (parentNode, host) { + var text = dom.createElement("textarea"); + text.className = "ace_text-input"; + text.setAttribute("wrap", "off"); + text.setAttribute("autocorrect", "off"); + text.setAttribute("autocapitalize", "off"); + text.setAttribute("spellcheck", false); + text.style.opacity = "0"; + parentNode.insertBefore(text, parentNode.firstChild); + var copied = false; + var pasted = false; + var inComposition = false; + var sendingText = false; + var tempStyle = ''; + if (!isMobile) + text.style.fontSize = "1px"; + var commandMode = false; + var ignoreFocusEvents = false; + var lastValue = ""; + var lastSelectionStart = 0; + var lastSelectionEnd = 0; + var lastRestoreEnd = 0; + var rowStart = Number.MAX_SAFE_INTEGER; + var rowEnd = Number.MIN_SAFE_INTEGER; + var numberOfExtraLines = 0; + try { + var isFocused = document.activeElement === text; + } + catch (e) { } + this.setNumberOfExtraLines = function (number) { + rowStart = Number.MAX_SAFE_INTEGER; + rowEnd = Number.MIN_SAFE_INTEGER; + if (number < 0) { + numberOfExtraLines = 0; + return; + } + numberOfExtraLines = number; + }; + this.setAriaOptions = function (options) { + if (options.activeDescendant) { + text.setAttribute("aria-haspopup", "true"); + text.setAttribute("aria-autocomplete", options.inline ? "both" : "list"); + text.setAttribute("aria-activedescendant", options.activeDescendant); + } + else { + text.setAttribute("aria-haspopup", "false"); + text.setAttribute("aria-autocomplete", "both"); + text.removeAttribute("aria-activedescendant"); + } + if (options.role) { + text.setAttribute("role", options.role); + } + if (options.setLabel) { + text.setAttribute("aria-roledescription", nls("editor")); + if (host.session) { + var row = host.session.selection.cursor.row; + text.setAttribute("aria-label", nls("Cursor at row $0", [row + 1])); + } + } + }; + this.setAriaOptions({ role: "textbox" }); + event.addListener(text, "blur", function (e) { + if (ignoreFocusEvents) + return; + host.onBlur(e); + isFocused = false; + }, host); + event.addListener(text, "focus", function (e) { + if (ignoreFocusEvents) + return; + isFocused = true; + if (useragent.isEdge) { + try { + if (!document.hasFocus()) + return; + } + catch (e) { } + } + host.onFocus(e); + if (useragent.isEdge) + setTimeout(resetSelection); + else + resetSelection(); + }, host); + this.$focusScroll = false; + this.focus = function () { + this.setAriaOptions({ + setLabel: host.renderer.enableKeyboardAccessibility + }); + if (tempStyle || HAS_FOCUS_ARGS || this.$focusScroll == "browser") + return text.focus({ preventScroll: true }); + var top = text.style.top; + text.style.position = "fixed"; + text.style.top = "0px"; + try { + var isTransformed = text.getBoundingClientRect().top != 0; + } + catch (e) { + return; + } + var ancestors = []; + if (isTransformed) { + var t = text.parentElement; + while (t && t.nodeType == 1) { + ancestors.push(t); + t.setAttribute("ace_nocontext", true); + if (!t.parentElement && t.getRootNode) + t = t.getRootNode().host; + else + t = t.parentElement; + } + } + text.focus({ preventScroll: true }); + if (isTransformed) { + ancestors.forEach(function (p) { + p.removeAttribute("ace_nocontext"); + }); + } + setTimeout(function () { + text.style.position = ""; + if (text.style.top == "0px") + text.style.top = top; + }, 0); + }; + this.blur = function () { + text.blur(); + }; + this.isFocused = function () { + return isFocused; + }; + host.on("beforeEndOperation", function () { + var curOp = host.curOp; + var commandName = curOp && curOp.command && curOp.command.name; + if (commandName == "insertstring") + return; + var isUserAction = commandName && (curOp.docChanged || curOp.selectionChanged); + if (inComposition && isUserAction) { + lastValue = text.value = ""; + onCompositionEnd(); + } + resetSelection(); + }); + var positionToSelection = function (row, column) { + var selection = column; + for (var i = 1; i <= row - rowStart && i < 2 * numberOfExtraLines + 1; i++) { + selection += host.session.getLine(row - i).length + 1; + } + return selection; + }; + var resetSelection = isIOS + ? function (value) { + if (!isFocused || (copied && !value) || sendingText) + return; + if (!value) + value = ""; + var newValue = "\n ab" + value + "cde fg\n"; + if (newValue != text.value) + text.value = lastValue = newValue; + var selectionStart = 4; + var selectionEnd = 4 + (value.length || (host.selection.isEmpty() ? 0 : 1)); + if (lastSelectionStart != selectionStart || lastSelectionEnd != selectionEnd) { + text.setSelectionRange(selectionStart, selectionEnd); + } + lastSelectionStart = selectionStart; + lastSelectionEnd = selectionEnd; + } + : function () { + if (inComposition || sendingText) + return; + if (!isFocused && !afterContextMenu) + return; + inComposition = true; + var selectionStart = 0; + var selectionEnd = 0; + var line = ""; + if (host.session) { + var selection = host.selection; + var range = selection.getRange(); + var row = selection.cursor.row; + if (row === rowEnd + 1) { + rowStart = rowEnd + 1; + rowEnd = rowStart + 2 * numberOfExtraLines; + } + else if (row === rowStart - 1) { + rowEnd = rowStart - 1; + rowStart = rowEnd - 2 * numberOfExtraLines; + } + else if (row < rowStart - 1 || row > rowEnd + 1) { + rowStart = row > numberOfExtraLines ? row - numberOfExtraLines : 0; + rowEnd = row > numberOfExtraLines ? row + numberOfExtraLines : 2 * numberOfExtraLines; + } + var lines = []; + for (var i = rowStart; i <= rowEnd; i++) { + lines.push(host.session.getLine(i)); + } + line = lines.join('\n'); + selectionStart = positionToSelection(range.start.row, range.start.column); + selectionEnd = positionToSelection(range.end.row, range.end.column); + if (range.start.row < rowStart) { + var prevLine = host.session.getLine(rowStart - 1); + selectionStart = range.start.row < rowStart - 1 ? 0 : selectionStart; + selectionEnd += prevLine.length + 1; + line = prevLine + "\n" + line; + } + else if (range.end.row > rowEnd) { + var nextLine = host.session.getLine(rowEnd + 1); + selectionEnd = range.end.row > rowEnd + 1 ? nextLine.length : range.end.column; + selectionEnd += line.length + 1; + line = line + "\n" + nextLine; + } + else if (isMobile && row > 0) { + line = "\n" + line; + selectionEnd += 1; + selectionStart += 1; + } + if (line.length > MAX_LINE_LENGTH) { + if (selectionStart < MAX_LINE_LENGTH && selectionEnd < MAX_LINE_LENGTH) { + line = line.slice(0, MAX_LINE_LENGTH); + } + else { + line = "\n"; + if (selectionStart == selectionEnd) { + selectionStart = selectionEnd = 0; + } + else { + selectionStart = 0; + selectionEnd = 1; + } + } + } + var newValue = line + "\n\n"; + if (newValue != lastValue) { + text.value = lastValue = newValue; + lastSelectionStart = lastSelectionEnd = newValue.length; + } + } + if (afterContextMenu) { + lastSelectionStart = text.selectionStart; + lastSelectionEnd = text.selectionEnd; + } + if (lastSelectionEnd != selectionEnd + || lastSelectionStart != selectionStart + || text.selectionEnd != lastSelectionEnd // on ie edge selectionEnd changes silently after the initialization + ) { + try { + text.setSelectionRange(selectionStart, selectionEnd); + lastSelectionStart = selectionStart; + lastSelectionEnd = selectionEnd; + } + catch (e) { } + } + inComposition = false; + }; + this.resetSelection = resetSelection; + if (isFocused) + host.onFocus(); + var isAllSelected = function (text) { + return text.selectionStart === 0 && text.selectionEnd >= lastValue.length + && text.value === lastValue && lastValue + && text.selectionEnd !== lastSelectionEnd; + }; + var onSelect = function (e) { + if (inComposition) + return; + if (copied) { + copied = false; + } + else if (isAllSelected(text)) { + host.selectAll(); + resetSelection(); + } + else if (isMobile && text.selectionStart != lastSelectionStart) { + resetSelection(); + } + }; + var inputHandler = null; + this.setInputHandler = function (cb) { inputHandler = cb; }; + this.getInputHandler = function () { return inputHandler; }; + var afterContextMenu = false; + var sendText = function (value, fromInput) { + if (afterContextMenu) + afterContextMenu = false; + if (pasted) { + resetSelection(); + if (value) + host.onPaste(value); + pasted = false; + return ""; + } + else { + var selectionStart = text.selectionStart; + var selectionEnd = text.selectionEnd; + var extendLeft = lastSelectionStart; + var extendRight = lastValue.length - lastSelectionEnd; + var inserted = value; + var restoreStart = value.length - selectionStart; + var restoreEnd = value.length - selectionEnd; + var i = 0; + while (extendLeft > 0 && lastValue[i] == value[i]) { + i++; + extendLeft--; + } + inserted = inserted.slice(i); + i = 1; + while (extendRight > 0 && lastValue.length - i > lastSelectionStart - 1 && lastValue[lastValue.length - i] == value[value.length - i]) { + i++; + extendRight--; + } + restoreStart -= i - 1; + restoreEnd -= i - 1; + var endIndex = inserted.length - i + 1; + if (endIndex < 0) { + extendLeft = -endIndex; + endIndex = 0; + } + inserted = inserted.slice(0, endIndex); + if (!fromInput && !inserted && !restoreStart && !extendLeft && !extendRight && !restoreEnd) + return ""; + sendingText = true; + var shouldReset = false; + if (useragent.isAndroid && inserted == ". ") { + inserted = " "; + shouldReset = true; + } + if (inserted && !extendLeft && !extendRight && !restoreStart && !restoreEnd || commandMode) { + host.onTextInput(inserted); + } + else { + host.onTextInput(inserted, { + extendLeft: extendLeft, + extendRight: extendRight, + restoreStart: restoreStart, + restoreEnd: restoreEnd + }); + } + sendingText = false; + lastValue = value; + lastSelectionStart = selectionStart; + lastSelectionEnd = selectionEnd; + lastRestoreEnd = restoreEnd; + return shouldReset ? "\n" : inserted; + } + }; + var onInput = function (e) { + if (inComposition) + return onCompositionUpdate(); + if (e && e.inputType) { + if (e.inputType == "historyUndo") + return host.execCommand("undo"); + if (e.inputType == "historyRedo") + return host.execCommand("redo"); + } + var data = text.value; + var inserted = sendText(data, true); + if (data.length > MAX_LINE_LENGTH + 100 + || valueResetRegex.test(inserted) + || isMobile && lastSelectionStart < 1 && lastSelectionStart == lastSelectionEnd) { + resetSelection(); + } + }; + var handleClipboardData = function (e, data, forceIEMime) { + var clipboardData = e.clipboardData || window.clipboardData; + if (!clipboardData || BROKEN_SETDATA) + return; + var mime = USE_IE_MIME_TYPE || forceIEMime ? "Text" : "text/plain"; + try { + if (data) { + return clipboardData.setData(mime, data) !== false; + } + else { + return clipboardData.getData(mime); + } + } + catch (e) { + if (!forceIEMime) + return handleClipboardData(e, data, true); + } + }; + var doCopy = function (e, isCut) { + var data = host.getCopyText(); + if (!data) + return event.preventDefault(e); + if (handleClipboardData(e, data)) { + if (isIOS) { + resetSelection(data); + copied = data; + setTimeout(function () { + copied = false; + }, 10); + } + isCut ? host.onCut() : host.onCopy(); + event.preventDefault(e); + } + else { + copied = true; + text.value = data; + text.select(); + setTimeout(function () { + copied = false; + resetSelection(); + isCut ? host.onCut() : host.onCopy(); + }); + } + }; + var onCut = function (e) { + doCopy(e, true); + }; + var onCopy = function (e) { + doCopy(e, false); + }; + var onPaste = function (e) { + var data = handleClipboardData(e); + if (clipboard.pasteCancelled()) + return; + if (typeof data == "string") { + if (data) + host.onPaste(data, e); + if (useragent.isIE) + setTimeout(resetSelection); + event.preventDefault(e); + } + else { + text.value = ""; + pasted = true; + } + }; + event.addCommandKeyListener(text, host.onCommandKey.bind(host), host); + event.addListener(text, "select", onSelect, host); + event.addListener(text, "input", onInput, host); + event.addListener(text, "cut", onCut, host); + event.addListener(text, "copy", onCopy, host); + event.addListener(text, "paste", onPaste, host); + if (!('oncut' in text) || !('oncopy' in text) || !('onpaste' in text)) { + event.addListener(parentNode, "keydown", function (e) { + if ((useragent.isMac && !e.metaKey) || !e.ctrlKey) + return; + switch (e.keyCode) { + case 67: + onCopy(e); + break; + case 86: + onPaste(e); + break; + case 88: + onCut(e); + break; + } + }, host); + } + var onCompositionStart = function (e) { + if (inComposition || !host.onCompositionStart || host.$readOnly) + return; + inComposition = {}; + if (commandMode) + return; + if (e.data) + inComposition.useTextareaForIME = false; + setTimeout(onCompositionUpdate, 0); + host._signal("compositionStart"); + host.on("mousedown", cancelComposition); + var range = host.getSelectionRange(); + range.end.row = range.start.row; + range.end.column = range.start.column; + inComposition.markerRange = range; + inComposition.selectionStart = lastSelectionStart; + host.onCompositionStart(inComposition); + if (inComposition.useTextareaForIME) { + lastValue = text.value = ""; + lastSelectionStart = 0; + lastSelectionEnd = 0; + } + else { + if (text.msGetInputContext) + inComposition.context = text.msGetInputContext(); + if (text.getInputContext) + inComposition.context = text.getInputContext(); + } + }; + var onCompositionUpdate = function () { + if (!inComposition || !host.onCompositionUpdate || host.$readOnly) + return; + if (commandMode) + return cancelComposition(); + if (inComposition.useTextareaForIME) { + host.onCompositionUpdate(text.value); + } + else { + var data = text.value; + sendText(data); + if (inComposition.markerRange) { + if (inComposition.context) { + inComposition.markerRange.start.column = inComposition.selectionStart + = inComposition.context.compositionStartOffset; + } + inComposition.markerRange.end.column = inComposition.markerRange.start.column + + lastSelectionEnd - inComposition.selectionStart + lastRestoreEnd; + } + } + }; + var onCompositionEnd = function (e) { + if (!host.onCompositionEnd || host.$readOnly) + return; + inComposition = false; + host.onCompositionEnd(); + host.off("mousedown", cancelComposition); + if (e) + onInput(); + }; + function cancelComposition() { + ignoreFocusEvents = true; + text.blur(); + text.focus(); + ignoreFocusEvents = false; + } + var syncComposition = lang.delayedCall(onCompositionUpdate, 50).schedule.bind(null, null); + function onKeyup(e) { + if (e.keyCode == 27 && text.value.length < text.selectionStart) { + if (!inComposition) + lastValue = text.value; + lastSelectionStart = lastSelectionEnd = -1; + resetSelection(); + } + syncComposition(); + } + event.addListener(text, "compositionstart", onCompositionStart, host); + event.addListener(text, "compositionupdate", onCompositionUpdate, host); + event.addListener(text, "keyup", onKeyup, host); + event.addListener(text, "keydown", syncComposition, host); + event.addListener(text, "compositionend", onCompositionEnd, host); + this.getElement = function () { + return text; + }; + this.setCommandMode = function (value) { + commandMode = value; + text.readOnly = false; + }; + this.setReadOnly = function (readOnly) { + if (!commandMode) + text.readOnly = readOnly; + }; + this.setCopyWithEmptySelection = function (value) { + }; + this.onContextMenu = function (e) { + afterContextMenu = true; + resetSelection(); + host._emit("nativecontextmenu", { target: host, domEvent: e }); + this.moveToMouse(e, true); + }; + this.moveToMouse = function (e, bringToFront) { + if (!tempStyle) + tempStyle = text.style.cssText; + text.style.cssText = (bringToFront ? "z-index:100000;" : "") + + (useragent.isIE ? "opacity:0.1;" : "") + + "text-indent: -" + (lastSelectionStart + lastSelectionEnd) * host.renderer.characterWidth * 0.5 + "px;"; + var rect = host.container.getBoundingClientRect(); + var style = dom.computedStyle(host.container); + var top = rect.top + (parseInt(style.borderTopWidth) || 0); + var left = rect.left + (parseInt(rect.borderLeftWidth) || 0); + var maxTop = rect.bottom - top - text.clientHeight - 2; + var move = function (e) { + dom.translate(text, e.clientX - left - 2, Math.min(e.clientY - top - 2, maxTop)); + }; + move(e); + if (e.type != "mousedown") + return; + host.renderer.$isMousePressed = true; + clearTimeout(closeTimeout); + if (useragent.isWin) + event.capture(host.container, move, onContextMenuClose); + }; + this.onContextMenuClose = onContextMenuClose; + var closeTimeout; + function onContextMenuClose() { + clearTimeout(closeTimeout); + closeTimeout = setTimeout(function () { + if (tempStyle) { + text.style.cssText = tempStyle; + tempStyle = ''; + } + host.renderer.$isMousePressed = false; + if (host.renderer.$keepTextAreaAtCursor) + host.renderer.$moveTextAreaToCursor(); + }, 0); + } + var onContextMenu = function (e) { + host.textInput.onContextMenu(e); + onContextMenuClose(); + }; + event.addListener(text, "mouseup", onContextMenu, host); + event.addListener(text, "mousedown", function (e) { + e.preventDefault(); + onContextMenuClose(); + }, host); + event.addListener(host.renderer.scroller, "contextmenu", onContextMenu, host); + event.addListener(text, "contextmenu", onContextMenu, host); + if (isIOS) + addIosSelectionHandler(parentNode, host, text); + function addIosSelectionHandler(parentNode, host, text) { + var typingResetTimeout = null; + var typing = false; + text.addEventListener("keydown", function (e) { + if (typingResetTimeout) + clearTimeout(typingResetTimeout); + typing = true; + }, true); + text.addEventListener("keyup", function (e) { + typingResetTimeout = setTimeout(function () { + typing = false; + }, 100); + }, true); + var detectArrowKeys = function (e) { + if (document.activeElement !== text) + return; + if (typing || inComposition || host.$mouseHandler.isMousePressed) + return; + if (copied) { + return; + } + var selectionStart = text.selectionStart; + var selectionEnd = text.selectionEnd; + var key = null; + var modifier = 0; + if (selectionStart == 0) { + key = KEYS.up; + } + else if (selectionStart == 1) { + key = KEYS.home; + } + else if (selectionEnd > lastSelectionEnd && lastValue[selectionEnd] == "\n") { + key = KEYS.end; + } + else if (selectionStart < lastSelectionStart && lastValue[selectionStart - 1] == " ") { + key = KEYS.left; + modifier = MODS.option; + } + else if (selectionStart < lastSelectionStart + || (selectionStart == lastSelectionStart + && lastSelectionEnd != lastSelectionStart + && selectionStart == selectionEnd)) { + key = KEYS.left; + } + else if (selectionEnd > lastSelectionEnd && lastValue.slice(0, selectionEnd).split("\n").length > 2) { + key = KEYS.down; + } + else if (selectionEnd > lastSelectionEnd && lastValue[selectionEnd - 1] == " ") { + key = KEYS.right; + modifier = MODS.option; + } + else if (selectionEnd > lastSelectionEnd + || (selectionEnd == lastSelectionEnd + && lastSelectionEnd != lastSelectionStart + && selectionStart == selectionEnd)) { + key = KEYS.right; + } + if (selectionStart !== selectionEnd) + modifier |= MODS.shift; + if (key) { + var result = host.onCommandKey({}, modifier, key); + if (!result && host.commands) { + key = KEYS.keyCodeToString(key); + var command = host.commands.findKeyCommand(modifier, key); + if (command) + host.execCommand(command); + } + lastSelectionStart = selectionStart; + lastSelectionEnd = selectionEnd; + resetSelection(""); + } + }; + document.addEventListener("selectionchange", detectArrowKeys); + host.on("destroy", function () { + document.removeEventListener("selectionchange", detectArrowKeys); + }); + } + this.destroy = function () { + if (text.parentElement) + text.parentElement.removeChild(text); + }; +}; +exports.TextInput = TextInput; +exports.$setUserAgentForTests = function (_isMobile, _isIOS) { + isMobile = _isMobile; + isIOS = _isIOS; +}; + +}); + +ace.define("ace/mouse/default_handlers",["require","exports","module","ace/lib/useragent"], function(require, exports, module){"use strict"; +var useragent = require("../lib/useragent"); +var DRAG_OFFSET = 0; // pixels +var SCROLL_COOLDOWN_T = 550; // milliseconds +var DefaultHandlers = /** @class */ (function () { + function DefaultHandlers(mouseHandler) { + mouseHandler.$clickSelection = null; + var editor = mouseHandler.editor; + editor.setDefaultHandler("mousedown", this.onMouseDown.bind(mouseHandler)); + editor.setDefaultHandler("dblclick", this.onDoubleClick.bind(mouseHandler)); + editor.setDefaultHandler("tripleclick", this.onTripleClick.bind(mouseHandler)); + editor.setDefaultHandler("quadclick", this.onQuadClick.bind(mouseHandler)); + editor.setDefaultHandler("mousewheel", this.onMouseWheel.bind(mouseHandler)); + var exports = ["select", "startSelect", "selectEnd", "selectAllEnd", "selectByWordsEnd", + "selectByLinesEnd", "dragWait", "dragWaitEnd", "focusWait"]; + exports.forEach(function (x) { + mouseHandler[x] = this[x]; + }, this); + mouseHandler.selectByLines = this.extendSelectionBy.bind(mouseHandler, "getLineRange"); + mouseHandler.selectByWords = this.extendSelectionBy.bind(mouseHandler, "getWordRange"); + } + DefaultHandlers.prototype.onMouseDown = function (ev) { + var inSelection = ev.inSelection(); + var pos = ev.getDocumentPosition(); + this.mousedownEvent = ev; + var editor = this.editor; + var button = ev.getButton(); + if (button !== 0) { + var selectionRange = editor.getSelectionRange(); + var selectionEmpty = selectionRange.isEmpty(); + if (selectionEmpty || button == 1) + editor.selection.moveToPosition(pos); + if (button == 2) { + editor.textInput.onContextMenu(ev.domEvent); + if (!useragent.isMozilla) + ev.preventDefault(); + } + return; + } + this.mousedownEvent.time = Date.now(); + if (inSelection && !editor.isFocused()) { + editor.focus(); + if (this.$focusTimeout && !this.$clickSelection && !editor.inMultiSelectMode) { + this.setState("focusWait"); + this.captureMouse(ev); + return; + } + } + this.captureMouse(ev); + this.startSelect(pos, ev.domEvent._clicks > 1); + return ev.preventDefault(); + }; + DefaultHandlers.prototype.startSelect = function (pos, waitForClickSelection) { + pos = pos || this.editor.renderer.screenToTextCoordinates(this.x, this.y); + var editor = this.editor; + if (!this.mousedownEvent) + return; + if (this.mousedownEvent.getShiftKey()) + editor.selection.selectToPosition(pos); + else if (!waitForClickSelection) + editor.selection.moveToPosition(pos); + if (!waitForClickSelection) + this.select(); + editor.setStyle("ace_selecting"); + this.setState("select"); + }; + DefaultHandlers.prototype.select = function () { + var anchor, editor = this.editor; + var cursor = editor.renderer.screenToTextCoordinates(this.x, this.y); + if (this.$clickSelection) { + var cmp = this.$clickSelection.comparePoint(cursor); + if (cmp == -1) { + anchor = this.$clickSelection.end; + } + else if (cmp == 1) { + anchor = this.$clickSelection.start; + } + else { + var orientedRange = calcRangeOrientation(this.$clickSelection, cursor); + cursor = orientedRange.cursor; + anchor = orientedRange.anchor; + } + editor.selection.setSelectionAnchor(anchor.row, anchor.column); + } + editor.selection.selectToPosition(cursor); + editor.renderer.scrollCursorIntoView(); + }; + DefaultHandlers.prototype.extendSelectionBy = function (unitName) { + var anchor, editor = this.editor; + var cursor = editor.renderer.screenToTextCoordinates(this.x, this.y); + var range = editor.selection[unitName](cursor.row, cursor.column); + if (this.$clickSelection) { + var cmpStart = this.$clickSelection.comparePoint(range.start); + var cmpEnd = this.$clickSelection.comparePoint(range.end); + if (cmpStart == -1 && cmpEnd <= 0) { + anchor = this.$clickSelection.end; + if (range.end.row != cursor.row || range.end.column != cursor.column) + cursor = range.start; + } + else if (cmpEnd == 1 && cmpStart >= 0) { + anchor = this.$clickSelection.start; + if (range.start.row != cursor.row || range.start.column != cursor.column) + cursor = range.end; + } + else if (cmpStart == -1 && cmpEnd == 1) { + cursor = range.end; + anchor = range.start; + } + else { + var orientedRange = calcRangeOrientation(this.$clickSelection, cursor); + cursor = orientedRange.cursor; + anchor = orientedRange.anchor; + } + editor.selection.setSelectionAnchor(anchor.row, anchor.column); + } + editor.selection.selectToPosition(cursor); + editor.renderer.scrollCursorIntoView(); + }; + DefaultHandlers.prototype.selectByLinesEnd = function () { + this.$clickSelection = null; + this.editor.unsetStyle("ace_selecting"); + }; + DefaultHandlers.prototype.focusWait = function () { + var distance = calcDistance(this.mousedownEvent.x, this.mousedownEvent.y, this.x, this.y); + var time = Date.now(); + if (distance > DRAG_OFFSET || time - this.mousedownEvent.time > this.$focusTimeout) + this.startSelect(this.mousedownEvent.getDocumentPosition()); + }; + DefaultHandlers.prototype.onDoubleClick = function (ev) { + var pos = ev.getDocumentPosition(); + var editor = this.editor; + var session = editor.session; + var range = session.getBracketRange(pos); + if (range) { + if (range.isEmpty()) { + range.start.column--; + range.end.column++; + } + this.setState("select"); + } + else { + range = editor.selection.getWordRange(pos.row, pos.column); + this.setState("selectByWords"); + } + this.$clickSelection = range; + this.select(); + }; + DefaultHandlers.prototype.onTripleClick = function (ev) { + var pos = ev.getDocumentPosition(); + var editor = this.editor; + this.setState("selectByLines"); + var range = editor.getSelectionRange(); + if (range.isMultiLine() && range.contains(pos.row, pos.column)) { + this.$clickSelection = editor.selection.getLineRange(range.start.row); + this.$clickSelection.end = editor.selection.getLineRange(range.end.row).end; + } + else { + this.$clickSelection = editor.selection.getLineRange(pos.row); + } + this.select(); + }; + DefaultHandlers.prototype.onQuadClick = function (ev) { + var editor = this.editor; + editor.selectAll(); + this.$clickSelection = editor.getSelectionRange(); + this.setState("selectAll"); + }; + DefaultHandlers.prototype.onMouseWheel = function (ev) { + if (ev.getAccelKey()) + return; + if (ev.getShiftKey() && ev.wheelY && !ev.wheelX) { + ev.wheelX = ev.wheelY; + ev.wheelY = 0; + } + var editor = this.editor; + if (!this.$lastScroll) + this.$lastScroll = { t: 0, vx: 0, vy: 0, allowed: 0 }; + var prevScroll = this.$lastScroll; + var t = ev.domEvent.timeStamp; + var dt = t - prevScroll.t; + var vx = dt ? ev.wheelX / dt : prevScroll.vx; + var vy = dt ? ev.wheelY / dt : prevScroll.vy; + if (dt < SCROLL_COOLDOWN_T) { + vx = (vx + prevScroll.vx) / 2; + vy = (vy + prevScroll.vy) / 2; + } + var direction = Math.abs(vx / vy); + var canScroll = false; + if (direction >= 1 && editor.renderer.isScrollableBy(ev.wheelX * ev.speed, 0)) + canScroll = true; + if (direction <= 1 && editor.renderer.isScrollableBy(0, ev.wheelY * ev.speed)) + canScroll = true; + if (canScroll) { + prevScroll.allowed = t; + } + else if (t - prevScroll.allowed < SCROLL_COOLDOWN_T) { + var isSlower = Math.abs(vx) <= 1.5 * Math.abs(prevScroll.vx) + && Math.abs(vy) <= 1.5 * Math.abs(prevScroll.vy); + if (isSlower) { + canScroll = true; + prevScroll.allowed = t; + } + else { + prevScroll.allowed = 0; + } + } + prevScroll.t = t; + prevScroll.vx = vx; + prevScroll.vy = vy; + if (canScroll) { + editor.renderer.scrollBy(ev.wheelX * ev.speed, ev.wheelY * ev.speed); + return ev.stop(); + } + }; + return DefaultHandlers; +}()); +DefaultHandlers.prototype.selectEnd = DefaultHandlers.prototype.selectByLinesEnd; +DefaultHandlers.prototype.selectAllEnd = DefaultHandlers.prototype.selectByLinesEnd; +DefaultHandlers.prototype.selectByWordsEnd = DefaultHandlers.prototype.selectByLinesEnd; +exports.DefaultHandlers = DefaultHandlers; +function calcDistance(ax, ay, bx, by) { + return Math.sqrt(Math.pow(bx - ax, 2) + Math.pow(by - ay, 2)); +} +function calcRangeOrientation(range, cursor) { + if (range.start.row == range.end.row) + var cmp = 2 * cursor.column - range.start.column - range.end.column; + else if (range.start.row == range.end.row - 1 && !range.start.column && !range.end.column) + var cmp = cursor.column - 4; + else + var cmp = 2 * cursor.row - range.start.row - range.end.row; + if (cmp < 0) + return { cursor: range.start, anchor: range.end }; + else + return { cursor: range.end, anchor: range.start }; +} + +}); + +ace.define("ace/tooltip",["require","exports","module","ace/lib/dom","ace/lib/event","ace/range"], function(require, exports, module){"use strict"; +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + if (typeof b !== "function" && b !== null) + throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +var __values = (this && this.__values) || function(o) { + var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0; + if (m) return m.call(o); + if (o && typeof o.length === "number") return { + next: function () { + if (o && i >= o.length) o = void 0; + return { value: o && o[i++], done: !o }; + } + }; + throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined."); +}; +var dom = require("./lib/dom"); +var event = require("./lib/event"); +var Range = require("./range").Range; +var CLASSNAME = "ace_tooltip"; +var Tooltip = /** @class */ (function () { + function Tooltip(parentNode) { + this.isOpen = false; + this.$element = null; + this.$parentNode = parentNode; + } + Tooltip.prototype.$init = function () { + this.$element = dom.createElement("div"); + this.$element.className = CLASSNAME; + this.$element.style.display = "none"; + this.$parentNode.appendChild(this.$element); + return this.$element; + }; + Tooltip.prototype.getElement = function () { + return this.$element || this.$init(); + }; + Tooltip.prototype.setText = function (text) { + this.getElement().textContent = text; + }; + Tooltip.prototype.setHtml = function (html) { + this.getElement().innerHTML = html; + }; + Tooltip.prototype.setPosition = function (x, y) { + this.getElement().style.left = x + "px"; + this.getElement().style.top = y + "px"; + }; + Tooltip.prototype.setClassName = function (className) { + dom.addCssClass(this.getElement(), className); + }; + Tooltip.prototype.setTheme = function (theme) { + this.$element.className = CLASSNAME + " " + + (theme.isDark ? "ace_dark " : "") + (theme.cssClass || ""); + }; + Tooltip.prototype.show = function (text, x, y) { + if (text != null) + this.setText(text); + if (x != null && y != null) + this.setPosition(x, y); + if (!this.isOpen) { + this.getElement().style.display = "block"; + this.isOpen = true; + } + }; + Tooltip.prototype.hide = function () { + if (this.isOpen) { + this.getElement().style.display = "none"; + this.getElement().className = CLASSNAME; + this.isOpen = false; + } + }; + Tooltip.prototype.getHeight = function () { + return this.getElement().offsetHeight; + }; + Tooltip.prototype.getWidth = function () { + return this.getElement().offsetWidth; + }; + Tooltip.prototype.destroy = function () { + this.isOpen = false; + if (this.$element && this.$element.parentNode) { + this.$element.parentNode.removeChild(this.$element); + } + }; + return Tooltip; +}()); +var PopupManager = /** @class */ (function () { + function PopupManager() { + this.popups = []; + } + PopupManager.prototype.addPopup = function (popup) { + this.popups.push(popup); + this.updatePopups(); + }; + PopupManager.prototype.removePopup = function (popup) { + var index = this.popups.indexOf(popup); + if (index !== -1) { + this.popups.splice(index, 1); + this.updatePopups(); + } + }; + PopupManager.prototype.updatePopups = function () { + var e_1, _a, e_2, _b; + this.popups.sort(function (a, b) { return b.priority - a.priority; }); + var visiblepopups = []; + try { + for (var _c = __values(this.popups), _d = _c.next(); !_d.done; _d = _c.next()) { + var popup = _d.value; + var shouldDisplay = true; + try { + for (var visiblepopups_1 = (e_2 = void 0, __values(visiblepopups)), visiblepopups_1_1 = visiblepopups_1.next(); !visiblepopups_1_1.done; visiblepopups_1_1 = visiblepopups_1.next()) { + var visiblePopup = visiblepopups_1_1.value; + if (this.doPopupsOverlap(visiblePopup, popup)) { + shouldDisplay = false; + break; + } + } + } + catch (e_2_1) { e_2 = { error: e_2_1 }; } + finally { + try { + if (visiblepopups_1_1 && !visiblepopups_1_1.done && (_b = visiblepopups_1.return)) _b.call(visiblepopups_1); + } + finally { if (e_2) throw e_2.error; } + } + if (shouldDisplay) { + visiblepopups.push(popup); + } + else { + popup.hide(); + } + } + } + catch (e_1_1) { e_1 = { error: e_1_1 }; } + finally { + try { + if (_d && !_d.done && (_a = _c.return)) _a.call(_c); + } + finally { if (e_1) throw e_1.error; } + } + }; + PopupManager.prototype.doPopupsOverlap = function (popupA, popupB) { + var rectA = popupA.getElement().getBoundingClientRect(); + var rectB = popupB.getElement().getBoundingClientRect(); + return (rectA.left < rectB.right && rectA.right > rectB.left && rectA.top < rectB.bottom && rectA.bottom + > rectB.top); + }; + return PopupManager; +}()); +var popupManager = new PopupManager(); +exports.popupManager = popupManager; +exports.Tooltip = Tooltip; +var HoverTooltip = /** @class */ (function (_super) { + __extends(HoverTooltip, _super); + function HoverTooltip(parentNode) { + if (parentNode === void 0) { parentNode = document.body; } + var _this = _super.call(this, parentNode) || this; + _this.timeout = undefined; + _this.lastT = 0; + _this.idleTime = 350; + _this.lastEvent = undefined; + _this.onMouseOut = _this.onMouseOut.bind(_this); + _this.onMouseMove = _this.onMouseMove.bind(_this); + _this.waitForHover = _this.waitForHover.bind(_this); + _this.hide = _this.hide.bind(_this); + var el = _this.getElement(); + el.style.whiteSpace = "pre-wrap"; + el.style.pointerEvents = "auto"; + el.addEventListener("mouseout", _this.onMouseOut); + el.tabIndex = -1; + el.addEventListener("blur", function () { + if (!el.contains(document.activeElement)) + this.hide(); + }.bind(_this)); + el.addEventListener("wheel", event.stopPropagation); + return _this; + } + HoverTooltip.prototype.addToEditor = function (editor) { + editor.on("mousemove", this.onMouseMove); + editor.on("mousedown", this.hide); + editor.renderer.getMouseEventTarget().addEventListener("mouseout", this.onMouseOut, true); + }; + HoverTooltip.prototype.removeFromEditor = function (editor) { + editor.off("mousemove", this.onMouseMove); + editor.off("mousedown", this.hide); + editor.renderer.getMouseEventTarget().removeEventListener("mouseout", this.onMouseOut, true); + if (this.timeout) { + clearTimeout(this.timeout); + this.timeout = null; + } + }; + HoverTooltip.prototype.onMouseMove = function (e, editor) { + this.lastEvent = e; + this.lastT = Date.now(); + var isMousePressed = editor.$mouseHandler.isMousePressed; + if (this.isOpen) { + var pos = this.lastEvent && this.lastEvent.getDocumentPosition(); + if (!this.range + || !this.range.contains(pos.row, pos.column) + || isMousePressed + || this.isOutsideOfText(this.lastEvent)) { + this.hide(); + } + } + if (this.timeout || isMousePressed) + return; + this.lastEvent = e; + this.timeout = setTimeout(this.waitForHover, this.idleTime); + }; + HoverTooltip.prototype.waitForHover = function () { + if (this.timeout) + clearTimeout(this.timeout); + var dt = Date.now() - this.lastT; + if (this.idleTime - dt > 10) { + this.timeout = setTimeout(this.waitForHover, this.idleTime - dt); + return; + } + this.timeout = null; + if (this.lastEvent && !this.isOutsideOfText(this.lastEvent)) { + this.$gatherData(this.lastEvent, this.lastEvent.editor); + } + }; + HoverTooltip.prototype.isOutsideOfText = function (e) { + var editor = e.editor; + var docPos = e.getDocumentPosition(); + var line = editor.session.getLine(docPos.row); + if (docPos.column == line.length) { + var screenPos = editor.renderer.pixelToScreenCoordinates(e.clientX, e.clientY); + var clippedPos = editor.session.documentToScreenPosition(docPos.row, docPos.column); + if (clippedPos.column != screenPos.column + || clippedPos.row != screenPos.row) { + return true; + } + } + return false; + }; + HoverTooltip.prototype.setDataProvider = function (value) { + this.$gatherData = value; + }; + HoverTooltip.prototype.showForRange = function (editor, range, domNode, startingEvent) { + var MARGIN = 10; + if (startingEvent && startingEvent != this.lastEvent) + return; + if (this.isOpen && document.activeElement == this.getElement()) + return; + var renderer = editor.renderer; + if (!this.isOpen) { + popupManager.addPopup(this); + this.$registerCloseEvents(); + this.setTheme(renderer.theme); + } + this.isOpen = true; + this.addMarker(range, editor.session); + this.range = Range.fromPoints(range.start, range.end); + var position = renderer.textToScreenCoordinates(range.start.row, range.start.column); + var rect = renderer.scroller.getBoundingClientRect(); + if (position.pageX < rect.left) + position.pageX = rect.left; + var element = this.getElement(); + element.innerHTML = ""; + element.appendChild(domNode); + element.style.maxHeight = ""; + element.style.display = "block"; + var labelHeight = element.clientHeight; + var labelWidth = element.clientWidth; + var spaceBelow = window.innerHeight - position.pageY - renderer.lineHeight; + var isAbove = true; + if (position.pageY - labelHeight < 0 && position.pageY < spaceBelow) { + isAbove = false; + } + element.style.maxHeight = (isAbove ? position.pageY : spaceBelow) - MARGIN + "px"; + element.style.top = isAbove ? "" : position.pageY + renderer.lineHeight + "px"; + element.style.bottom = isAbove ? window.innerHeight - position.pageY + "px" : ""; + element.style.left = Math.min(position.pageX, window.innerWidth - labelWidth - MARGIN) + "px"; + }; + HoverTooltip.prototype.addMarker = function (range, session) { + if (this.marker) { + this.$markerSession.removeMarker(this.marker); + } + this.$markerSession = session; + this.marker = session && session.addMarker(range, "ace_highlight-marker", "text"); + }; + HoverTooltip.prototype.hide = function (e) { + if (!e && document.activeElement == this.getElement()) + return; + if (e && e.target && (e.type != "keydown" || e.ctrlKey || e.metaKey) && this.$element.contains(e.target)) + return; + this.lastEvent = null; + if (this.timeout) + clearTimeout(this.timeout); + this.timeout = null; + this.addMarker(null); + if (this.isOpen) { + this.$removeCloseEvents(); + this.getElement().style.display = "none"; + this.isOpen = false; + popupManager.removePopup(this); + } + }; + HoverTooltip.prototype.$registerCloseEvents = function () { + window.addEventListener("keydown", this.hide, true); + window.addEventListener("wheel", this.hide, true); + window.addEventListener("mousedown", this.hide, true); + }; + HoverTooltip.prototype.$removeCloseEvents = function () { + window.removeEventListener("keydown", this.hide, true); + window.removeEventListener("wheel", this.hide, true); + window.removeEventListener("mousedown", this.hide, true); + }; + HoverTooltip.prototype.onMouseOut = function (e) { + if (this.timeout) { + clearTimeout(this.timeout); + this.timeout = null; + } + this.lastEvent = null; + if (!this.isOpen) + return; + if (!e.relatedTarget || this.getElement().contains(e.relatedTarget)) + return; + if (e && e.currentTarget.contains(e.relatedTarget)) + return; + if (!e.relatedTarget.classList.contains("ace_content")) + this.hide(); + }; + return HoverTooltip; +}(Tooltip)); +exports.HoverTooltip = HoverTooltip; + +}); + +ace.define("ace/mouse/default_gutter_handler",["require","exports","module","ace/lib/dom","ace/lib/event","ace/tooltip","ace/config"], function(require, exports, module){"use strict"; +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + if (typeof b !== "function" && b !== null) + throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +var __values = (this && this.__values) || function(o) { + var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0; + if (m) return m.call(o); + if (o && typeof o.length === "number") return { + next: function () { + if (o && i >= o.length) o = void 0; + return { value: o && o[i++], done: !o }; + } + }; + throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined."); +}; +var dom = require("../lib/dom"); +var event = require("../lib/event"); +var Tooltip = require("../tooltip").Tooltip; +var nls = require("../config").nls; +function GutterHandler(mouseHandler) { + var editor = mouseHandler.editor; + var gutter = editor.renderer.$gutterLayer; + var tooltip = new GutterTooltip(editor); + mouseHandler.editor.setDefaultHandler("guttermousedown", function (e) { + if (!editor.isFocused() || e.getButton() != 0) + return; + var gutterRegion = gutter.getRegion(e); + if (gutterRegion == "foldWidgets") + return; + var row = e.getDocumentPosition().row; + var selection = editor.session.selection; + if (e.getShiftKey()) + selection.selectTo(row, 0); + else { + if (e.domEvent.detail == 2) { + editor.selectAll(); + return e.preventDefault(); + } + mouseHandler.$clickSelection = editor.selection.getLineRange(row); + } + mouseHandler.setState("selectByLines"); + mouseHandler.captureMouse(e); + return e.preventDefault(); + }); + var tooltipTimeout, mouseEvent; + function showTooltip() { + var row = mouseEvent.getDocumentPosition().row; + var maxRow = editor.session.getLength(); + if (row == maxRow) { + var screenRow = editor.renderer.pixelToScreenCoordinates(0, mouseEvent.y).row; + var pos = mouseEvent.$pos; + if (screenRow > editor.session.documentToScreenRow(pos.row, pos.column)) + return hideTooltip(); + } + tooltip.showTooltip(row); + if (!tooltip.isOpen) + return; + editor.on("mousewheel", hideTooltip); + if (mouseHandler.$tooltipFollowsMouse) { + moveTooltip(mouseEvent); + } + else { + var gutterRow = mouseEvent.getGutterRow(); + var gutterCell = gutter.$lines.get(gutterRow); + if (gutterCell) { + var gutterElement = gutterCell.element.querySelector(".ace_gutter_annotation"); + var rect = gutterElement.getBoundingClientRect(); + var style = tooltip.getElement().style; + style.left = rect.right + "px"; + style.top = rect.bottom + "px"; + } + else { + moveTooltip(mouseEvent); + } + } + } + function hideTooltip() { + if (tooltipTimeout) + tooltipTimeout = clearTimeout(tooltipTimeout); + if (tooltip.isOpen) { + tooltip.hideTooltip(); + editor.off("mousewheel", hideTooltip); + } + } + function moveTooltip(e) { + tooltip.setPosition(e.x, e.y); + } + mouseHandler.editor.setDefaultHandler("guttermousemove", function (e) { + var target = e.domEvent.target || e.domEvent.srcElement; + if (dom.hasCssClass(target, "ace_fold-widget")) + return hideTooltip(); + if (tooltip.isOpen && mouseHandler.$tooltipFollowsMouse) + moveTooltip(e); + mouseEvent = e; + if (tooltipTimeout) + return; + tooltipTimeout = setTimeout(function () { + tooltipTimeout = null; + if (mouseEvent && !mouseHandler.isMousePressed) + showTooltip(); + else + hideTooltip(); + }, 50); + }); + event.addListener(editor.renderer.$gutter, "mouseout", function (e) { + mouseEvent = null; + if (!tooltip.isOpen || tooltipTimeout) + return; + tooltipTimeout = setTimeout(function () { + tooltipTimeout = null; + hideTooltip(); + }, 50); + }, editor); + editor.on("changeSession", hideTooltip); + editor.on("input", hideTooltip); +} +exports.GutterHandler = GutterHandler; +var GutterTooltip = /** @class */ (function (_super) { + __extends(GutterTooltip, _super); + function GutterTooltip(editor) { + var _this = _super.call(this, editor.container) || this; + _this.editor = editor; + return _this; + } + GutterTooltip.prototype.setPosition = function (x, y) { + var windowWidth = window.innerWidth || document.documentElement.clientWidth; + var windowHeight = window.innerHeight || document.documentElement.clientHeight; + var width = this.getWidth(); + var height = this.getHeight(); + x += 15; + y += 15; + if (x + width > windowWidth) { + x -= (x + width) - windowWidth; + } + if (y + height > windowHeight) { + y -= 20 + height; + } + Tooltip.prototype.setPosition.call(this, x, y); + }; + Object.defineProperty(GutterTooltip, "annotationLabels", { + get: function () { + return { + error: { singular: nls("error"), plural: nls("errors") }, + warning: { singular: nls("warning"), plural: nls("warnings") }, + info: { singular: nls("information message"), plural: nls("information messages") } + }; + }, + enumerable: false, + configurable: true + }); + GutterTooltip.prototype.showTooltip = function (row) { + var gutter = this.editor.renderer.$gutterLayer; + var annotationsInRow = gutter.$annotations[row]; + var annotation; + if (annotationsInRow) + annotation = { text: Array.from(annotationsInRow.text), type: Array.from(annotationsInRow.type) }; + else + annotation = { text: [], type: [] }; + var fold = gutter.session.getFoldLine(row); + if (fold && gutter.$showFoldedAnnotations) { + var annotationsInFold = { error: [], warning: [], info: [] }; + var mostSevereAnnotationInFoldType; + for (var i = row + 1; i <= fold.end.row; i++) { + if (!gutter.$annotations[i]) + continue; + for (var j = 0; j < gutter.$annotations[i].text.length; j++) { + var annotationType = gutter.$annotations[i].type[j]; + annotationsInFold[annotationType].push(gutter.$annotations[i].text[j]); + if (annotationType === "error") { + mostSevereAnnotationInFoldType = "error_fold"; + continue; + } + if (annotationType === "warning") { + mostSevereAnnotationInFoldType = "warning_fold"; + continue; + } + } + } + if (mostSevereAnnotationInFoldType === "error_fold" || mostSevereAnnotationInFoldType === "warning_fold") { + var summaryFoldedAnnotations = "".concat(GutterTooltip.annotationsToSummaryString(annotationsInFold), " in folded code."); + annotation.text.push(summaryFoldedAnnotations); + annotation.type.push(mostSevereAnnotationInFoldType); + } + } + if (annotation.text.length === 0) + return this.hide(); + var annotationMessages = { error: [], warning: [], info: [] }; + var iconClassName = gutter.$useSvgGutterIcons ? "ace_icon_svg" : "ace_icon"; + for (var i = 0; i < annotation.text.length; i++) { + var line = " ").concat(annotation.text[i]); + annotationMessages[annotation.type[i].replace("_fold", "")].push(line); + } + var tooltipContent = [].concat(annotationMessages.error, annotationMessages.warning, annotationMessages.info).join("
    "); + this.setHtml(tooltipContent); + this.$element.setAttribute("aria-live", "polite"); + if (!this.isOpen) { + this.setTheme(this.editor.renderer.theme); + this.setClassName("ace_gutter-tooltip"); + } + this.show(); + this.editor._signal("showGutterTooltip", this); + }; + GutterTooltip.prototype.hideTooltip = function () { + this.$element.removeAttribute("aria-live"); + this.hide(); + this.editor._signal("hideGutterTooltip", this); + }; + GutterTooltip.annotationsToSummaryString = function (annotations) { + var e_1, _a; + var summary = []; + var annotationTypes = ['error', 'warning', 'info']; + try { + for (var annotationTypes_1 = __values(annotationTypes), annotationTypes_1_1 = annotationTypes_1.next(); !annotationTypes_1_1.done; annotationTypes_1_1 = annotationTypes_1.next()) { + var annotationType = annotationTypes_1_1.value; + if (!annotations[annotationType].length) + continue; + var label = annotations[annotationType].length === 1 ? GutterTooltip.annotationLabels[annotationType].singular : GutterTooltip.annotationLabels[annotationType].plural; + summary.push("".concat(annotations[annotationType].length, " ").concat(label)); + } + } + catch (e_1_1) { e_1 = { error: e_1_1 }; } + finally { + try { + if (annotationTypes_1_1 && !annotationTypes_1_1.done && (_a = annotationTypes_1.return)) _a.call(annotationTypes_1); + } + finally { if (e_1) throw e_1.error; } + } + return summary.join(", "); + }; + return GutterTooltip; +}(Tooltip)); +exports.GutterTooltip = GutterTooltip; + +}); + +ace.define("ace/mouse/mouse_event",["require","exports","module","ace/lib/event","ace/lib/useragent"], function(require, exports, module){"use strict"; +var event = require("../lib/event"); +var useragent = require("../lib/useragent"); +var MouseEvent = /** @class */ (function () { + function MouseEvent(domEvent, editor) { + this.domEvent = domEvent; + this.editor = editor; + this.x = this.clientX = domEvent.clientX; + this.y = this.clientY = domEvent.clientY; + this.$pos = null; + this.$inSelection = null; + this.propagationStopped = false; + this.defaultPrevented = false; + } + MouseEvent.prototype.stopPropagation = function () { + event.stopPropagation(this.domEvent); + this.propagationStopped = true; + }; + MouseEvent.prototype.preventDefault = function () { + event.preventDefault(this.domEvent); + this.defaultPrevented = true; + }; + MouseEvent.prototype.stop = function () { + this.stopPropagation(); + this.preventDefault(); + }; + MouseEvent.prototype.getDocumentPosition = function () { + if (this.$pos) + return this.$pos; + this.$pos = this.editor.renderer.screenToTextCoordinates(this.clientX, this.clientY); + return this.$pos; + }; + MouseEvent.prototype.getGutterRow = function () { + var documentRow = this.getDocumentPosition().row; + var screenRow = this.editor.session.documentToScreenRow(documentRow, 0); + var screenTopRow = this.editor.session.documentToScreenRow(this.editor.renderer.$gutterLayer.$lines.get(0).row, 0); + return screenRow - screenTopRow; + }; + MouseEvent.prototype.inSelection = function () { + if (this.$inSelection !== null) + return this.$inSelection; + var editor = this.editor; + var selectionRange = editor.getSelectionRange(); + if (selectionRange.isEmpty()) + this.$inSelection = false; + else { + var pos = this.getDocumentPosition(); + this.$inSelection = selectionRange.contains(pos.row, pos.column); + } + return this.$inSelection; + }; + MouseEvent.prototype.getButton = function () { + return event.getButton(this.domEvent); + }; + MouseEvent.prototype.getShiftKey = function () { + return this.domEvent.shiftKey; + }; + MouseEvent.prototype.getAccelKey = function () { + return useragent.isMac ? this.domEvent.metaKey : this.domEvent.ctrlKey; + }; + return MouseEvent; +}()); +exports.MouseEvent = MouseEvent; + +}); + +ace.define("ace/mouse/dragdrop_handler",["require","exports","module","ace/lib/dom","ace/lib/event","ace/lib/useragent"], function(require, exports, module){"use strict"; +var dom = require("../lib/dom"); +var event = require("../lib/event"); +var useragent = require("../lib/useragent"); +var AUTOSCROLL_DELAY = 200; +var SCROLL_CURSOR_DELAY = 200; +var SCROLL_CURSOR_HYSTERESIS = 5; +function DragdropHandler(mouseHandler) { + var editor = mouseHandler.editor; + var dragImage = dom.createElement("div"); + dragImage.style.cssText = "top:-100px;position:absolute;z-index:2147483647;opacity:0.5"; + dragImage.textContent = "\xa0"; + var exports = ["dragWait", "dragWaitEnd", "startDrag", "dragReadyEnd", "onMouseDrag"]; + exports.forEach(function (x) { + mouseHandler[x] = this[x]; + }, this); + editor.on("mousedown", this.onMouseDown.bind(mouseHandler)); + var mouseTarget = editor.container; + var dragSelectionMarker, x, y; + var timerId, range; + var dragCursor, counter = 0; + var dragOperation; + var isInternal; + var autoScrollStartTime; + var cursorMovedTime; + var cursorPointOnCaretMoved; + this.onDragStart = function (e) { + if (this.cancelDrag || !mouseTarget.draggable) { + var self = this; + setTimeout(function () { + self.startSelect(); + self.captureMouse(e); + }, 0); + return e.preventDefault(); + } + range = editor.getSelectionRange(); + var dataTransfer = e.dataTransfer; + dataTransfer.effectAllowed = editor.getReadOnly() ? "copy" : "copyMove"; + editor.container.appendChild(dragImage); + dataTransfer.setDragImage && dataTransfer.setDragImage(dragImage, 0, 0); + setTimeout(function () { + editor.container.removeChild(dragImage); + }); + dataTransfer.clearData(); + dataTransfer.setData("Text", editor.session.getTextRange()); + isInternal = true; + this.setState("drag"); + }; + this.onDragEnd = function (e) { + mouseTarget.draggable = false; + isInternal = false; + this.setState(null); + if (!editor.getReadOnly()) { + var dropEffect = e.dataTransfer.dropEffect; + if (!dragOperation && dropEffect == "move") + editor.session.remove(editor.getSelectionRange()); + editor.$resetCursorStyle(); + } + this.editor.unsetStyle("ace_dragging"); + this.editor.renderer.setCursorStyle(""); + }; + this.onDragEnter = function (e) { + if (editor.getReadOnly() || !canAccept(e.dataTransfer)) + return; + x = e.clientX; + y = e.clientY; + if (!dragSelectionMarker) + addDragMarker(); + counter++; + e.dataTransfer.dropEffect = dragOperation = getDropEffect(e); + return event.preventDefault(e); + }; + this.onDragOver = function (e) { + if (editor.getReadOnly() || !canAccept(e.dataTransfer)) + return; + x = e.clientX; + y = e.clientY; + if (!dragSelectionMarker) { + addDragMarker(); + counter++; + } + if (onMouseMoveTimer !== null) + onMouseMoveTimer = null; + e.dataTransfer.dropEffect = dragOperation = getDropEffect(e); + return event.preventDefault(e); + }; + this.onDragLeave = function (e) { + counter--; + if (counter <= 0 && dragSelectionMarker) { + clearDragMarker(); + dragOperation = null; + return event.preventDefault(e); + } + }; + this.onDrop = function (e) { + if (!dragCursor) + return; + var dataTransfer = e.dataTransfer; + if (isInternal) { + switch (dragOperation) { + case "move": + if (range.contains(dragCursor.row, dragCursor.column)) { + range = { + start: dragCursor, + end: dragCursor + }; + } + else { + range = editor.moveText(range, dragCursor); + } + break; + case "copy": + range = editor.moveText(range, dragCursor, true); + break; + } + } + else { + var dropData = dataTransfer.getData('Text'); + range = { + start: dragCursor, + end: editor.session.insert(dragCursor, dropData) + }; + editor.focus(); + dragOperation = null; + } + clearDragMarker(); + return event.preventDefault(e); + }; + event.addListener(mouseTarget, "dragstart", this.onDragStart.bind(mouseHandler), editor); + event.addListener(mouseTarget, "dragend", this.onDragEnd.bind(mouseHandler), editor); + event.addListener(mouseTarget, "dragenter", this.onDragEnter.bind(mouseHandler), editor); + event.addListener(mouseTarget, "dragover", this.onDragOver.bind(mouseHandler), editor); + event.addListener(mouseTarget, "dragleave", this.onDragLeave.bind(mouseHandler), editor); + event.addListener(mouseTarget, "drop", this.onDrop.bind(mouseHandler), editor); + function scrollCursorIntoView(cursor, prevCursor) { + var now = Date.now(); + var vMovement = !prevCursor || cursor.row != prevCursor.row; + var hMovement = !prevCursor || cursor.column != prevCursor.column; + if (!cursorMovedTime || vMovement || hMovement) { + editor.moveCursorToPosition(cursor); + cursorMovedTime = now; + cursorPointOnCaretMoved = { x: x, y: y }; + } + else { + var distance = calcDistance(cursorPointOnCaretMoved.x, cursorPointOnCaretMoved.y, x, y); + if (distance > SCROLL_CURSOR_HYSTERESIS) { + cursorMovedTime = null; + } + else if (now - cursorMovedTime >= SCROLL_CURSOR_DELAY) { + editor.renderer.scrollCursorIntoView(); + cursorMovedTime = null; + } + } + } + function autoScroll(cursor, prevCursor) { + var now = Date.now(); + var lineHeight = editor.renderer.layerConfig.lineHeight; + var characterWidth = editor.renderer.layerConfig.characterWidth; + var editorRect = editor.renderer.scroller.getBoundingClientRect(); + var offsets = { + x: { + left: x - editorRect.left, + right: editorRect.right - x + }, + y: { + top: y - editorRect.top, + bottom: editorRect.bottom - y + } + }; + var nearestXOffset = Math.min(offsets.x.left, offsets.x.right); + var nearestYOffset = Math.min(offsets.y.top, offsets.y.bottom); + var scrollCursor = { row: cursor.row, column: cursor.column }; + if (nearestXOffset / characterWidth <= 2) { + scrollCursor.column += (offsets.x.left < offsets.x.right ? -3 : +2); + } + if (nearestYOffset / lineHeight <= 1) { + scrollCursor.row += (offsets.y.top < offsets.y.bottom ? -1 : +1); + } + var vScroll = cursor.row != scrollCursor.row; + var hScroll = cursor.column != scrollCursor.column; + var vMovement = !prevCursor || cursor.row != prevCursor.row; + if (vScroll || (hScroll && !vMovement)) { + if (!autoScrollStartTime) + autoScrollStartTime = now; + else if (now - autoScrollStartTime >= AUTOSCROLL_DELAY) + editor.renderer.scrollCursorIntoView(scrollCursor); + } + else { + autoScrollStartTime = null; + } + } + function onDragInterval() { + var prevCursor = dragCursor; + dragCursor = editor.renderer.screenToTextCoordinates(x, y); + scrollCursorIntoView(dragCursor, prevCursor); + autoScroll(dragCursor, prevCursor); + } + function addDragMarker() { + range = editor.selection.toOrientedRange(); + dragSelectionMarker = editor.session.addMarker(range, "ace_selection", editor.getSelectionStyle()); + editor.clearSelection(); + if (editor.isFocused()) + editor.renderer.$cursorLayer.setBlinking(false); + clearInterval(timerId); + onDragInterval(); + timerId = setInterval(onDragInterval, 20); + counter = 0; + event.addListener(document, "mousemove", onMouseMove); + } + function clearDragMarker() { + clearInterval(timerId); + editor.session.removeMarker(dragSelectionMarker); + dragSelectionMarker = null; + editor.selection.fromOrientedRange(range); + if (editor.isFocused() && !isInternal) + editor.$resetCursorStyle(); + range = null; + dragCursor = null; + counter = 0; + autoScrollStartTime = null; + cursorMovedTime = null; + event.removeListener(document, "mousemove", onMouseMove); + } + var onMouseMoveTimer = null; + function onMouseMove() { + if (onMouseMoveTimer == null) { + onMouseMoveTimer = setTimeout(function () { + if (onMouseMoveTimer != null && dragSelectionMarker) + clearDragMarker(); + }, 20); + } + } + function canAccept(dataTransfer) { + var types = dataTransfer.types; + return !types || Array.prototype.some.call(types, function (type) { + return type == 'text/plain' || type == 'Text'; + }); + } + function getDropEffect(e) { + var copyAllowed = ['copy', 'copymove', 'all', 'uninitialized']; + var moveAllowed = ['move', 'copymove', 'linkmove', 'all', 'uninitialized']; + var copyModifierState = useragent.isMac ? e.altKey : e.ctrlKey; + var effectAllowed = "uninitialized"; + try { + effectAllowed = e.dataTransfer.effectAllowed.toLowerCase(); + } + catch (e) { } + var dropEffect = "none"; + if (copyModifierState && copyAllowed.indexOf(effectAllowed) >= 0) + dropEffect = "copy"; + else if (moveAllowed.indexOf(effectAllowed) >= 0) + dropEffect = "move"; + else if (copyAllowed.indexOf(effectAllowed) >= 0) + dropEffect = "copy"; + return dropEffect; + } +} +(function () { + this.dragWait = function () { + var interval = Date.now() - this.mousedownEvent.time; + if (interval > this.editor.getDragDelay()) + this.startDrag(); + }; + this.dragWaitEnd = function () { + var target = this.editor.container; + target.draggable = false; + this.startSelect(this.mousedownEvent.getDocumentPosition()); + this.selectEnd(); + }; + this.dragReadyEnd = function (e) { + this.editor.$resetCursorStyle(); + this.editor.unsetStyle("ace_dragging"); + this.editor.renderer.setCursorStyle(""); + this.dragWaitEnd(); + }; + this.startDrag = function () { + this.cancelDrag = false; + var editor = this.editor; + var target = editor.container; + target.draggable = true; + editor.renderer.$cursorLayer.setBlinking(false); + editor.setStyle("ace_dragging"); + var cursorStyle = useragent.isWin ? "default" : "move"; + editor.renderer.setCursorStyle(cursorStyle); + this.setState("dragReady"); + }; + this.onMouseDrag = function (e) { + var target = this.editor.container; + if (useragent.isIE && this.state == "dragReady") { + var distance = calcDistance(this.mousedownEvent.x, this.mousedownEvent.y, this.x, this.y); + if (distance > 3) + target.dragDrop(); + } + if (this.state === "dragWait") { + var distance = calcDistance(this.mousedownEvent.x, this.mousedownEvent.y, this.x, this.y); + if (distance > 0) { + target.draggable = false; + this.startSelect(this.mousedownEvent.getDocumentPosition()); + } + } + }; + this.onMouseDown = function (e) { + if (!this.$dragEnabled) + return; + this.mousedownEvent = e; + var editor = this.editor; + var inSelection = e.inSelection(); + var button = e.getButton(); + var clickCount = e.domEvent.detail || 1; + if (clickCount === 1 && button === 0 && inSelection) { + if (e.editor.inMultiSelectMode && (e.getAccelKey() || e.getShiftKey())) + return; + this.mousedownEvent.time = Date.now(); + var eventTarget = e.domEvent.target || e.domEvent.srcElement; + if ("unselectable" in eventTarget) + eventTarget.unselectable = "on"; + if (editor.getDragDelay()) { + if (useragent.isWebKit) { + this.cancelDrag = true; + var mouseTarget = editor.container; + mouseTarget.draggable = true; + } + this.setState("dragWait"); + } + else { + this.startDrag(); + } + this.captureMouse(e, this.onMouseDrag.bind(this)); + e.defaultPrevented = true; + } + }; +}).call(DragdropHandler.prototype); +function calcDistance(ax, ay, bx, by) { + return Math.sqrt(Math.pow(bx - ax, 2) + Math.pow(by - ay, 2)); +} +exports.DragdropHandler = DragdropHandler; + +}); + +ace.define("ace/mouse/touch_handler",["require","exports","module","ace/mouse/mouse_event","ace/lib/event","ace/lib/dom"], function(require, exports, module){"use strict"; +var MouseEvent = require("./mouse_event").MouseEvent; +var event = require("../lib/event"); +var dom = require("../lib/dom"); +exports.addTouchListeners = function (el, editor) { + var mode = "scroll"; + var startX; + var startY; + var touchStartT; + var lastT; + var longTouchTimer; + var animationTimer; + var animationSteps = 0; + var pos; + var clickCount = 0; + var vX = 0; + var vY = 0; + var pressed; + var contextMenu; + function createContextMenu() { + var clipboard = window.navigator && window.navigator.clipboard; + var isOpen = false; + var updateMenu = function () { + var selected = editor.getCopyText(); + var hasUndo = editor.session.getUndoManager().hasUndo(); + contextMenu.replaceChild(dom.buildDom(isOpen ? ["span", + !selected && ["span", { class: "ace_mobile-button", action: "selectall" }, "Select All"], + selected && ["span", { class: "ace_mobile-button", action: "copy" }, "Copy"], + selected && ["span", { class: "ace_mobile-button", action: "cut" }, "Cut"], + clipboard && ["span", { class: "ace_mobile-button", action: "paste" }, "Paste"], + hasUndo && ["span", { class: "ace_mobile-button", action: "undo" }, "Undo"], + ["span", { class: "ace_mobile-button", action: "find" }, "Find"], + ["span", { class: "ace_mobile-button", action: "openCommandPalette" }, "Palette"] + ] : ["span"]), contextMenu.firstChild); + }; + var handleClick = function (e) { + var action = e.target.getAttribute("action"); + if (action == "more" || !isOpen) { + isOpen = !isOpen; + return updateMenu(); + } + if (action == "paste") { + clipboard.readText().then(function (text) { + editor.execCommand(action, text); + }); + } + else if (action) { + if (action == "cut" || action == "copy") { + if (clipboard) + clipboard.writeText(editor.getCopyText()); + else + document.execCommand("copy"); + } + editor.execCommand(action); + } + contextMenu.firstChild.style.display = "none"; + isOpen = false; + if (action != "openCommandPalette") + editor.focus(); + }; + contextMenu = dom.buildDom(["div", + { + class: "ace_mobile-menu", + ontouchstart: function (e) { + mode = "menu"; + e.stopPropagation(); + e.preventDefault(); + editor.textInput.focus(); + }, + ontouchend: function (e) { + e.stopPropagation(); + e.preventDefault(); + handleClick(e); + }, + onclick: handleClick + }, + ["span"], + ["span", { class: "ace_mobile-button", action: "more" }, "..."] + ], editor.container); + } + function showContextMenu() { + if (!contextMenu) + createContextMenu(); + var cursor = editor.selection.cursor; + var pagePos = editor.renderer.textToScreenCoordinates(cursor.row, cursor.column); + var leftOffset = editor.renderer.textToScreenCoordinates(0, 0).pageX; + var scrollLeft = editor.renderer.scrollLeft; + var rect = editor.container.getBoundingClientRect(); + contextMenu.style.top = pagePos.pageY - rect.top - 3 + "px"; + if (pagePos.pageX - rect.left < rect.width - 70) { + contextMenu.style.left = ""; + contextMenu.style.right = "10px"; + } + else { + contextMenu.style.right = ""; + contextMenu.style.left = leftOffset + scrollLeft - rect.left + "px"; + } + contextMenu.style.display = ""; + contextMenu.firstChild.style.display = "none"; + editor.on("input", hideContextMenu); + } + function hideContextMenu(e) { + if (contextMenu) + contextMenu.style.display = "none"; + editor.off("input", hideContextMenu); + } + function handleLongTap() { + longTouchTimer = null; + clearTimeout(longTouchTimer); + var range = editor.selection.getRange(); + var inSelection = range.contains(pos.row, pos.column); + if (range.isEmpty() || !inSelection) { + editor.selection.moveToPosition(pos); + editor.selection.selectWord(); + } + mode = "wait"; + showContextMenu(); + } + function switchToSelectionMode() { + longTouchTimer = null; + clearTimeout(longTouchTimer); + editor.selection.moveToPosition(pos); + var range = clickCount >= 2 + ? editor.selection.getLineRange(pos.row) + : editor.session.getBracketRange(pos); + if (range && !range.isEmpty()) { + editor.selection.setRange(range); + } + else { + editor.selection.selectWord(); + } + mode = "wait"; + } + event.addListener(el, "contextmenu", function (e) { + if (!pressed) + return; + var textarea = editor.textInput.getElement(); + textarea.focus(); + }, editor); + event.addListener(el, "touchstart", function (e) { + var touches = e.touches; + if (longTouchTimer || touches.length > 1) { + clearTimeout(longTouchTimer); + longTouchTimer = null; + touchStartT = -1; + mode = "zoom"; + return; + } + pressed = editor.$mouseHandler.isMousePressed = true; + var h = editor.renderer.layerConfig.lineHeight; + var w = editor.renderer.layerConfig.lineHeight; + var t = e.timeStamp; + lastT = t; + var touchObj = touches[0]; + var x = touchObj.clientX; + var y = touchObj.clientY; + if (Math.abs(startX - x) + Math.abs(startY - y) > h) + touchStartT = -1; + startX = e.clientX = x; + startY = e.clientY = y; + vX = vY = 0; + var ev = new MouseEvent(e, editor); + pos = ev.getDocumentPosition(); + if (t - touchStartT < 500 && touches.length == 1 && !animationSteps) { + clickCount++; + e.preventDefault(); + e.button = 0; + switchToSelectionMode(); + } + else { + clickCount = 0; + var cursor = editor.selection.cursor; + var anchor = editor.selection.isEmpty() ? cursor : editor.selection.anchor; + var cursorPos = editor.renderer.$cursorLayer.getPixelPosition(cursor, true); + var anchorPos = editor.renderer.$cursorLayer.getPixelPosition(anchor, true); + var rect = editor.renderer.scroller.getBoundingClientRect(); + var offsetTop = editor.renderer.layerConfig.offset; + var offsetLeft = editor.renderer.scrollLeft; + var weightedDistance = function (x, y) { + x = x / w; + y = y / h - 0.75; + return x * x + y * y; + }; + if (e.clientX < rect.left) { + mode = "zoom"; + return; + } + var diff1 = weightedDistance(e.clientX - rect.left - cursorPos.left + offsetLeft, e.clientY - rect.top - cursorPos.top + offsetTop); + var diff2 = weightedDistance(e.clientX - rect.left - anchorPos.left + offsetLeft, e.clientY - rect.top - anchorPos.top + offsetTop); + if (diff1 < 3.5 && diff2 < 3.5) + mode = diff1 > diff2 ? "cursor" : "anchor"; + if (diff2 < 3.5) + mode = "anchor"; + else if (diff1 < 3.5) + mode = "cursor"; + else + mode = "scroll"; + longTouchTimer = setTimeout(handleLongTap, 450); + } + touchStartT = t; + }, editor); + event.addListener(el, "touchend", function (e) { + pressed = editor.$mouseHandler.isMousePressed = false; + if (animationTimer) + clearInterval(animationTimer); + if (mode == "zoom") { + mode = ""; + animationSteps = 0; + } + else if (longTouchTimer) { + editor.selection.moveToPosition(pos); + animationSteps = 0; + showContextMenu(); + } + else if (mode == "scroll") { + animate(); + hideContextMenu(); + } + else { + showContextMenu(); + } + clearTimeout(longTouchTimer); + longTouchTimer = null; + }, editor); + event.addListener(el, "touchmove", function (e) { + if (longTouchTimer) { + clearTimeout(longTouchTimer); + longTouchTimer = null; + } + var touches = e.touches; + if (touches.length > 1 || mode == "zoom") + return; + var touchObj = touches[0]; + var wheelX = startX - touchObj.clientX; + var wheelY = startY - touchObj.clientY; + if (mode == "wait") { + if (wheelX * wheelX + wheelY * wheelY > 4) + mode = "cursor"; + else + return e.preventDefault(); + } + startX = touchObj.clientX; + startY = touchObj.clientY; + e.clientX = touchObj.clientX; + e.clientY = touchObj.clientY; + var t = e.timeStamp; + var dt = t - lastT; + lastT = t; + if (mode == "scroll") { + var mouseEvent = new MouseEvent(e, editor); + mouseEvent.speed = 1; + mouseEvent.wheelX = wheelX; + mouseEvent.wheelY = wheelY; + if (10 * Math.abs(wheelX) < Math.abs(wheelY)) + wheelX = 0; + if (10 * Math.abs(wheelY) < Math.abs(wheelX)) + wheelY = 0; + if (dt != 0) { + vX = wheelX / dt; + vY = wheelY / dt; + } + editor._emit("mousewheel", mouseEvent); + if (!mouseEvent.propagationStopped) { + vX = vY = 0; + } + } + else { + var ev = new MouseEvent(e, editor); + var pos = ev.getDocumentPosition(); + if (mode == "cursor") + editor.selection.moveCursorToPosition(pos); + else if (mode == "anchor") + editor.selection.setSelectionAnchor(pos.row, pos.column); + editor.renderer.scrollCursorIntoView(pos); + e.preventDefault(); + } + }, editor); + function animate() { + animationSteps += 60; + animationTimer = setInterval(function () { + if (animationSteps-- <= 0) { + clearInterval(animationTimer); + animationTimer = null; + } + if (Math.abs(vX) < 0.01) + vX = 0; + if (Math.abs(vY) < 0.01) + vY = 0; + if (animationSteps < 20) + vX = 0.9 * vX; + if (animationSteps < 20) + vY = 0.9 * vY; + var oldScrollTop = editor.session.getScrollTop(); + editor.renderer.scrollBy(10 * vX, 10 * vY); + if (oldScrollTop == editor.session.getScrollTop()) + animationSteps = 0; + }, 10); + } +}; + +}); + +ace.define("ace/mouse/mouse_handler",["require","exports","module","ace/lib/event","ace/lib/useragent","ace/mouse/default_handlers","ace/mouse/default_gutter_handler","ace/mouse/mouse_event","ace/mouse/dragdrop_handler","ace/mouse/touch_handler","ace/config"], function(require, exports, module){"use strict"; +var event = require("../lib/event"); +var useragent = require("../lib/useragent"); +var DefaultHandlers = require("./default_handlers").DefaultHandlers; +var DefaultGutterHandler = require("./default_gutter_handler").GutterHandler; +var MouseEvent = require("./mouse_event").MouseEvent; +var DragdropHandler = require("./dragdrop_handler").DragdropHandler; +var addTouchListeners = require("./touch_handler").addTouchListeners; +var config = require("../config"); +var MouseHandler = /** @class */ (function () { + function MouseHandler(editor) { + var _self = this; + this.editor = editor; + new DefaultHandlers(this); + new DefaultGutterHandler(this); + new DragdropHandler(this); + var focusEditor = function (e) { + var windowBlurred = !document.hasFocus || !document.hasFocus() + || !editor.isFocused() && document.activeElement == (editor.textInput && editor.textInput.getElement()); + if (windowBlurred) + window.focus(); + editor.focus(); + setTimeout(function () { + if (!editor.isFocused()) + editor.focus(); + }); + }; + var mouseTarget = editor.renderer.getMouseEventTarget(); + event.addListener(mouseTarget, "click", this.onMouseEvent.bind(this, "click"), editor); + event.addListener(mouseTarget, "mousemove", this.onMouseMove.bind(this, "mousemove"), editor); + event.addMultiMouseDownListener([ + mouseTarget, + editor.renderer.scrollBarV && editor.renderer.scrollBarV.inner, + editor.renderer.scrollBarH && editor.renderer.scrollBarH.inner, + editor.textInput && editor.textInput.getElement() + ].filter(Boolean), [400, 300, 250], this, "onMouseEvent", editor); + event.addMouseWheelListener(editor.container, this.onMouseWheel.bind(this, "mousewheel"), editor); + addTouchListeners(editor.container, editor); + var gutterEl = editor.renderer.$gutter; + event.addListener(gutterEl, "mousedown", this.onMouseEvent.bind(this, "guttermousedown"), editor); + event.addListener(gutterEl, "click", this.onMouseEvent.bind(this, "gutterclick"), editor); + event.addListener(gutterEl, "dblclick", this.onMouseEvent.bind(this, "gutterdblclick"), editor); + event.addListener(gutterEl, "mousemove", this.onMouseEvent.bind(this, "guttermousemove"), editor); + event.addListener(mouseTarget, "mousedown", focusEditor, editor); + event.addListener(gutterEl, "mousedown", focusEditor, editor); + if (useragent.isIE && editor.renderer.scrollBarV) { + event.addListener(editor.renderer.scrollBarV.element, "mousedown", focusEditor, editor); + event.addListener(editor.renderer.scrollBarH.element, "mousedown", focusEditor, editor); + } + editor.on("mousemove", function (e) { + if (_self.state || _self.$dragDelay || !_self.$dragEnabled) + return; + var character = editor.renderer.screenToTextCoordinates(e.x, e.y); + var range = editor.session.selection.getRange(); + var renderer = editor.renderer; + if (!range.isEmpty() && range.insideStart(character.row, character.column)) { + renderer.setCursorStyle("default"); + } + else { + renderer.setCursorStyle(""); + } + }, editor); + } + MouseHandler.prototype.onMouseEvent = function (name, e) { + if (!this.editor.session) + return; + this.editor._emit(name, new MouseEvent(e, this.editor)); + }; + MouseHandler.prototype.onMouseMove = function (name, e) { + var listeners = this.editor._eventRegistry && this.editor._eventRegistry.mousemove; + if (!listeners || !listeners.length) + return; + this.editor._emit(name, new MouseEvent(e, this.editor)); + }; + MouseHandler.prototype.onMouseWheel = function (name, e) { + var mouseEvent = new MouseEvent(e, this.editor); + mouseEvent.speed = this.$scrollSpeed * 2; + mouseEvent.wheelX = e.wheelX; + mouseEvent.wheelY = e.wheelY; + this.editor._emit(name, mouseEvent); + }; + MouseHandler.prototype.setState = function (state) { + this.state = state; + }; + MouseHandler.prototype.captureMouse = function (ev, mouseMoveHandler) { + this.x = ev.x; + this.y = ev.y; + this.isMousePressed = true; + var editor = this.editor; + var renderer = this.editor.renderer; + renderer.$isMousePressed = true; + var self = this; + var onMouseMove = function (e) { + if (!e) + return; + if (useragent.isWebKit && !e.which && self.releaseMouse) + return self.releaseMouse(); + self.x = e.clientX; + self.y = e.clientY; + mouseMoveHandler && mouseMoveHandler(e); + self.mouseEvent = new MouseEvent(e, self.editor); + self.$mouseMoved = true; + }; + var onCaptureEnd = function (e) { + editor.off("beforeEndOperation", onOperationEnd); + clearInterval(timerId); + if (editor.session) + onCaptureInterval(); + self[self.state + "End"] && self[self.state + "End"](e); + self.state = ""; + self.isMousePressed = renderer.$isMousePressed = false; + if (renderer.$keepTextAreaAtCursor) + renderer.$moveTextAreaToCursor(); + self.$onCaptureMouseMove = self.releaseMouse = null; + e && self.onMouseEvent("mouseup", e); + editor.endOperation(); + }; + var onCaptureInterval = function () { + self[self.state] && self[self.state](); + self.$mouseMoved = false; + }; + if (useragent.isOldIE && ev.domEvent.type == "dblclick") { + return setTimeout(function () { onCaptureEnd(ev); }); + } + var onOperationEnd = function (e) { + if (!self.releaseMouse) + return; + if (editor.curOp.command.name && editor.curOp.selectionChanged) { + self[self.state + "End"] && self[self.state + "End"](); + self.state = ""; + self.releaseMouse(); + } + }; + editor.on("beforeEndOperation", onOperationEnd); + editor.startOperation({ command: { name: "mouse" } }); + self.$onCaptureMouseMove = onMouseMove; + self.releaseMouse = event.capture(this.editor.container, onMouseMove, onCaptureEnd); + var timerId = setInterval(onCaptureInterval, 20); + }; + MouseHandler.prototype.cancelContextMenu = function () { + var stop = function (e) { + if (e && e.domEvent && e.domEvent.type != "contextmenu") + return; + this.editor.off("nativecontextmenu", stop); + if (e && e.domEvent) + event.stopEvent(e.domEvent); + }.bind(this); + setTimeout(stop, 10); + this.editor.on("nativecontextmenu", stop); + }; + MouseHandler.prototype.destroy = function () { + if (this.releaseMouse) + this.releaseMouse(); + }; + return MouseHandler; +}()); +MouseHandler.prototype.releaseMouse = null; +config.defineOptions(MouseHandler.prototype, "mouseHandler", { + scrollSpeed: { initialValue: 2 }, + dragDelay: { initialValue: (useragent.isMac ? 150 : 0) }, + dragEnabled: { initialValue: true }, + focusTimeout: { initialValue: 0 }, + tooltipFollowsMouse: { initialValue: true } +}); +exports.MouseHandler = MouseHandler; + +}); + +ace.define("ace/mouse/fold_handler",["require","exports","module","ace/lib/dom"], function(require, exports, module){"use strict"; +var dom = require("../lib/dom"); +var FoldHandler = /** @class */ (function () { + function FoldHandler(editor) { + editor.on("click", function (e) { + var position = e.getDocumentPosition(); + var session = editor.session; + var fold = session.getFoldAt(position.row, position.column, 1); + if (fold) { + if (e.getAccelKey()) + session.removeFold(fold); + else + session.expandFold(fold); + e.stop(); + } + var target = e.domEvent && e.domEvent.target; + if (target && dom.hasCssClass(target, "ace_inline_button")) { + if (dom.hasCssClass(target, "ace_toggle_wrap")) { + session.setOption("wrap", !session.getUseWrapMode()); + editor.renderer.scrollCursorIntoView(); + } + } + }); + editor.on("gutterclick", function (e) { + var gutterRegion = editor.renderer.$gutterLayer.getRegion(e); + if (gutterRegion == "foldWidgets") { + var row = e.getDocumentPosition().row; + var session = editor.session; + if (session.foldWidgets && session.foldWidgets[row]) + editor.session.onFoldWidgetClick(row, e); + if (!editor.isFocused()) + editor.focus(); + e.stop(); + } + }); + editor.on("gutterdblclick", function (e) { + var gutterRegion = editor.renderer.$gutterLayer.getRegion(e); + if (gutterRegion == "foldWidgets") { + var row = e.getDocumentPosition().row; + var session = editor.session; + var data = session.getParentFoldRangeData(row, true); + var range = data.range || data.firstRange; + if (range) { + row = range.start.row; + var fold = session.getFoldAt(row, session.getLine(row).length, 1); + if (fold) { + session.removeFold(fold); + } + else { + session.addFold("...", range); + editor.renderer.scrollCursorIntoView({ row: range.start.row, column: 0 }); + } + } + e.stop(); + } + }); + } + return FoldHandler; +}()); +exports.FoldHandler = FoldHandler; + +}); + +ace.define("ace/keyboard/keybinding",["require","exports","module","ace/lib/keys","ace/lib/event"], function(require, exports, module){"use strict"; +var keyUtil = require("../lib/keys"); +var event = require("../lib/event"); +var KeyBinding = /** @class */ (function () { + function KeyBinding(editor) { + this.$editor = editor; + this.$data = { editor: editor }; + this.$handlers = []; + this.setDefaultHandler(editor.commands); + } + KeyBinding.prototype.setDefaultHandler = function (kb) { + this.removeKeyboardHandler(this.$defaultHandler); + this.$defaultHandler = kb; + this.addKeyboardHandler(kb, 0); + }; + KeyBinding.prototype.setKeyboardHandler = function (kb) { + var h = this.$handlers; + if (h[h.length - 1] == kb) + return; + while (h[h.length - 1] && h[h.length - 1] != this.$defaultHandler) + this.removeKeyboardHandler(h[h.length - 1]); + this.addKeyboardHandler(kb, 1); + }; + KeyBinding.prototype.addKeyboardHandler = function (kb, pos) { + if (!kb) + return; + if (typeof kb == "function" && !kb.handleKeyboard) + kb.handleKeyboard = kb; + var i = this.$handlers.indexOf(kb); + if (i != -1) + this.$handlers.splice(i, 1); + if (pos == undefined) + this.$handlers.push(kb); + else + this.$handlers.splice(pos, 0, kb); + if (i == -1 && kb.attach) + kb.attach(this.$editor); + }; + KeyBinding.prototype.removeKeyboardHandler = function (kb) { + var i = this.$handlers.indexOf(kb); + if (i == -1) + return false; + this.$handlers.splice(i, 1); + kb.detach && kb.detach(this.$editor); + return true; + }; + KeyBinding.prototype.getKeyboardHandler = function () { + return this.$handlers[this.$handlers.length - 1]; + }; + KeyBinding.prototype.getStatusText = function () { + var data = this.$data; + var editor = data.editor; + return this.$handlers.map(function (h) { + return h.getStatusText && h.getStatusText(editor, data) || ""; + }).filter(Boolean).join(" "); + }; + KeyBinding.prototype.$callKeyboardHandlers = function (hashId, keyString, keyCode, e) { + var toExecute; + var success = false; + var commands = this.$editor.commands; + for (var i = this.$handlers.length; i--;) { + toExecute = this.$handlers[i].handleKeyboard(this.$data, hashId, keyString, keyCode, e); + if (!toExecute || !toExecute.command) + continue; + if (toExecute.command == "null") { + success = true; + } + else { + success = commands.exec(toExecute.command, this.$editor, toExecute.args, e); + } + if (success && e && hashId != -1 && + toExecute.passEvent != true && toExecute.command.passEvent != true) { + event.stopEvent(e); + } + if (success) + break; + } + if (!success && hashId == -1) { + toExecute = { command: "insertstring" }; + success = commands.exec("insertstring", this.$editor, keyString); + } + if (success && this.$editor._signal) + this.$editor._signal("keyboardActivity", toExecute); + return success; + }; + KeyBinding.prototype.onCommandKey = function (e, hashId, keyCode) { + var keyString = keyUtil.keyCodeToString(keyCode); + return this.$callKeyboardHandlers(hashId, keyString, keyCode, e); + }; + KeyBinding.prototype.onTextInput = function (text) { + return this.$callKeyboardHandlers(-1, text); + }; + return KeyBinding; +}()); +exports.KeyBinding = KeyBinding; + +}); + +ace.define("ace/lib/bidiutil",["require","exports","module"], function(require, exports, module){"use strict"; +var ArabicAlefBetIntervalsBegine = ['\u0621', '\u0641']; +var ArabicAlefBetIntervalsEnd = ['\u063A', '\u064a']; +var dir = 0, hiLevel = 0; +var lastArabic = false, hasUBAT_AL = false, hasUBAT_B = false, hasUBAT_S = false, hasBlockSep = false, hasSegSep = false; +var impTab_LTR = [ [0, 3, 0, 1, 0, 0, 0], [0, 3, 0, 1, 2, 2, 0], [0, 3, 0, 0x11, 2, 0, 1], [0, 3, 5, 5, 4, 1, 0], [0, 3, 0x15, 0x15, 4, 0, 1], [0, 3, 5, 5, 4, 2, 0] +]; +var impTab_RTL = [ [2, 0, 1, 1, 0, 1, 0], [2, 0, 1, 1, 0, 2, 0], [2, 0, 2, 1, 3, 2, 0], [2, 0, 2, 0x21, 3, 1, 1] +]; +var LTR = 0, RTL = 1; +var L = 0; +var R = 1; +var EN = 2; +var AN = 3; +var ON = 4; +var B = 5; +var S = 6; +var AL = 7; +var WS = 8; +var CS = 9; +var ES = 10; +var ET = 11; +var NSM = 12; +var LRE = 13; +var RLE = 14; +var PDF = 15; +var LRO = 16; +var RLO = 17; +var BN = 18; +var UnicodeTBL00 = [ + BN, BN, BN, BN, BN, BN, BN, BN, BN, S, B, S, WS, B, BN, BN, + BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, B, B, B, S, + WS, ON, ON, ET, ET, ET, ON, ON, ON, ON, ON, ES, CS, ES, CS, CS, + EN, EN, EN, EN, EN, EN, EN, EN, EN, EN, CS, ON, ON, ON, ON, ON, + ON, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, + L, L, L, L, L, L, L, L, L, L, L, ON, ON, ON, ON, ON, + ON, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, + L, L, L, L, L, L, L, L, L, L, L, ON, ON, ON, ON, BN, + BN, BN, BN, BN, BN, B, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, + BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, + CS, ON, ET, ET, ET, ET, ON, ON, ON, ON, L, ON, ON, BN, ON, ON, + ET, ET, EN, EN, ON, L, ON, ON, ON, EN, L, ON, ON, ON, ON, ON +]; +var UnicodeTBL20 = [ + WS, WS, WS, WS, WS, WS, WS, WS, WS, WS, WS, BN, BN, BN, L, R, + ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, + ON, ON, ON, ON, ON, ON, ON, ON, WS, B, LRE, RLE, PDF, LRO, RLO, CS, + ET, ET, ET, ET, ET, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, + ON, ON, ON, ON, CS, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, + ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, WS +]; +function _computeLevels(chars, levels, len, charTypes) { + var impTab = dir ? impTab_RTL : impTab_LTR, prevState = null, newClass = null, newLevel = null, newState = 0, action = null, cond = null, condPos = -1, i = null, ix = null, classes = []; + if (!charTypes) { + for (i = 0, charTypes = []; i < len; i++) { + charTypes[i] = _getCharacterType(chars[i]); + } + } + hiLevel = dir; + lastArabic = false; + hasUBAT_AL = false; + hasUBAT_B = false; + hasUBAT_S = false; + for (ix = 0; ix < len; ix++) { + prevState = newState; + classes[ix] = newClass = _getCharClass(chars, charTypes, classes, ix); + newState = impTab[prevState][newClass]; + action = newState & 0xF0; + newState &= 0x0F; + levels[ix] = newLevel = impTab[newState][5]; + if (action > 0) { + if (action == 0x10) { + for (i = condPos; i < ix; i++) { + levels[i] = 1; + } + condPos = -1; + } + else { + condPos = -1; + } + } + cond = impTab[newState][6]; + if (cond) { + if (condPos == -1) { + condPos = ix; + } + } + else { + if (condPos > -1) { + for (i = condPos; i < ix; i++) { + levels[i] = newLevel; + } + condPos = -1; + } + } + if (charTypes[ix] == B) { + levels[ix] = 0; + } + hiLevel |= newLevel; + } + if (hasUBAT_S) { + for (i = 0; i < len; i++) { + if (charTypes[i] == S) { + levels[i] = dir; + for (var j = i - 1; j >= 0; j--) { + if (charTypes[j] == WS) { + levels[j] = dir; + } + else { + break; + } + } + } + } + } +} +function _invertLevel(lev, levels, _array) { + if (hiLevel < lev) { + return; + } + if (lev == 1 && dir == RTL && !hasUBAT_B) { + _array.reverse(); + return; + } + var len = _array.length, start = 0, end, lo, hi, tmp; + while (start < len) { + if (levels[start] >= lev) { + end = start + 1; + while (end < len && levels[end] >= lev) { + end++; + } + for (lo = start, hi = end - 1; lo < hi; lo++, hi--) { + tmp = _array[lo]; + _array[lo] = _array[hi]; + _array[hi] = tmp; + } + start = end; + } + start++; + } +} +function _getCharClass(chars, types, classes, ix) { + var cType = types[ix], wType, nType, len, i; + switch (cType) { + case L: + case R: + lastArabic = false; + case ON: + case AN: + return cType; + case EN: + return lastArabic ? AN : EN; + case AL: + lastArabic = true; + hasUBAT_AL = true; + return R; + case WS: + return ON; + case CS: + if (ix < 1 || (ix + 1) >= types.length || + ((wType = classes[ix - 1]) != EN && wType != AN) || + ((nType = types[ix + 1]) != EN && nType != AN)) { + return ON; + } + if (lastArabic) { + nType = AN; + } + return nType == wType ? nType : ON; + case ES: + wType = ix > 0 ? classes[ix - 1] : B; + if (wType == EN && (ix + 1) < types.length && types[ix + 1] == EN) { + return EN; + } + return ON; + case ET: + if (ix > 0 && classes[ix - 1] == EN) { + return EN; + } + if (lastArabic) { + return ON; + } + i = ix + 1; + len = types.length; + while (i < len && types[i] == ET) { + i++; + } + if (i < len && types[i] == EN) { + return EN; + } + return ON; + case NSM: + len = types.length; + i = ix + 1; + while (i < len && types[i] == NSM) { + i++; + } + if (i < len) { + var c = chars[ix], rtlCandidate = (c >= 0x0591 && c <= 0x08FF) || c == 0xFB1E; + wType = types[i]; + if (rtlCandidate && (wType == R || wType == AL)) { + return R; + } + } + if (ix < 1 || (wType = types[ix - 1]) == B) { + return ON; + } + return classes[ix - 1]; + case B: + lastArabic = false; + hasUBAT_B = true; + return dir; + case S: + hasUBAT_S = true; + return ON; + case LRE: + case RLE: + case LRO: + case RLO: + case PDF: + lastArabic = false; + case BN: + return ON; + } +} +function _getCharacterType(ch) { + var uc = ch.charCodeAt(0), hi = uc >> 8; + if (hi == 0) { + return ((uc > 0x00BF) ? L : UnicodeTBL00[uc]); + } + else if (hi == 5) { + return (/[\u0591-\u05f4]/.test(ch) ? R : L); + } + else if (hi == 6) { + if (/[\u0610-\u061a\u064b-\u065f\u06d6-\u06e4\u06e7-\u06ed]/.test(ch)) + return NSM; + else if (/[\u0660-\u0669\u066b-\u066c]/.test(ch)) + return AN; + else if (uc == 0x066A) + return ET; + else if (/[\u06f0-\u06f9]/.test(ch)) + return EN; + else + return AL; + } + else if (hi == 0x20 && uc <= 0x205F) { + return UnicodeTBL20[uc & 0xFF]; + } + else if (hi == 0xFE) { + return (uc >= 0xFE70 ? AL : ON); + } + return ON; +} +function _isArabicDiacritics(ch) { + return (ch >= '\u064b' && ch <= '\u0655'); +} +exports.L = L; +exports.R = R; +exports.EN = EN; +exports.ON_R = 3; +exports.AN = 4; +exports.R_H = 5; +exports.B = 6; +exports.RLE = 7; +exports.DOT = "\xB7"; +exports.doBidiReorder = function (text, textCharTypes, isRtl) { + if (text.length < 2) + return {}; + var chars = text.split(""), logicalFromVisual = new Array(chars.length), bidiLevels = new Array(chars.length), levels = []; + dir = isRtl ? RTL : LTR; + _computeLevels(chars, levels, chars.length, textCharTypes); + for (var i = 0; i < logicalFromVisual.length; logicalFromVisual[i] = i, i++) + ; + _invertLevel(2, levels, logicalFromVisual); + _invertLevel(1, levels, logicalFromVisual); + for (var i = 0; i < logicalFromVisual.length - 1; i++) { //fix levels to reflect character width + if (textCharTypes[i] === AN) { + levels[i] = exports.AN; + } + else if (levels[i] === R && ((textCharTypes[i] > AL && textCharTypes[i] < LRE) + || textCharTypes[i] === ON || textCharTypes[i] === BN)) { + levels[i] = exports.ON_R; + } + else if ((i > 0 && chars[i - 1] === '\u0644') && /\u0622|\u0623|\u0625|\u0627/.test(chars[i])) { + levels[i - 1] = levels[i] = exports.R_H; + i++; + } + } + if (chars[chars.length - 1] === exports.DOT) + levels[chars.length - 1] = exports.B; + if (chars[0] === '\u202B') + levels[0] = exports.RLE; + for (var i = 0; i < logicalFromVisual.length; i++) { + bidiLevels[i] = levels[logicalFromVisual[i]]; + } + return { 'logicalFromVisual': logicalFromVisual, 'bidiLevels': bidiLevels }; +}; +exports.hasBidiCharacters = function (text, textCharTypes) { + var ret = false; + for (var i = 0; i < text.length; i++) { + textCharTypes[i] = _getCharacterType(text.charAt(i)); + if (!ret && (textCharTypes[i] == R || textCharTypes[i] == AL || textCharTypes[i] == AN)) + ret = true; + } + return ret; +}; +exports.getVisualFromLogicalIdx = function (logIdx, rowMap) { + for (var i = 0; i < rowMap.logicalFromVisual.length; i++) { + if (rowMap.logicalFromVisual[i] == logIdx) + return i; + } + return 0; +}; + +}); + +ace.define("ace/bidihandler",["require","exports","module","ace/lib/bidiutil","ace/lib/lang"], function(require, exports, module){"use strict"; +var bidiUtil = require("./lib/bidiutil"); +var lang = require("./lib/lang"); +var bidiRE = /[\u0590-\u05f4\u0600-\u06ff\u0700-\u08ac\u202B]/; +var BidiHandler = /** @class */ (function () { + function BidiHandler(session) { + this.session = session; + this.bidiMap = {}; + this.currentRow = null; + this.bidiUtil = bidiUtil; + this.charWidths = []; + this.EOL = "\xAC"; + this.showInvisibles = true; + this.isRtlDir = false; + this.$isRtl = false; + this.line = ""; + this.wrapIndent = 0; + this.EOF = "\xB6"; + this.RLE = "\u202B"; + this.contentWidth = 0; + this.fontMetrics = null; + this.rtlLineOffset = 0; + this.wrapOffset = 0; + this.isMoveLeftOperation = false; + this.seenBidi = bidiRE.test(session.getValue()); + } + BidiHandler.prototype.isBidiRow = function (screenRow, docRow, splitIndex) { + if (!this.seenBidi) + return false; + if (screenRow !== this.currentRow) { + this.currentRow = screenRow; + this.updateRowLine(docRow, splitIndex); + this.updateBidiMap(); + } + return this.bidiMap.bidiLevels; + }; + BidiHandler.prototype.onChange = function (delta) { + if (!this.seenBidi) { + if (delta.action == "insert" && bidiRE.test(delta.lines.join("\n"))) { + this.seenBidi = true; + this.currentRow = null; + } + } + else { + this.currentRow = null; + } + }; + BidiHandler.prototype.getDocumentRow = function () { + var docRow = 0; + var rowCache = this.session.$screenRowCache; + if (rowCache.length) { + var index = this.session.$getRowCacheIndex(rowCache, this.currentRow); + if (index >= 0) + docRow = this.session.$docRowCache[index]; + } + return docRow; + }; + BidiHandler.prototype.getSplitIndex = function () { + var splitIndex = 0; + var rowCache = this.session.$screenRowCache; + if (rowCache.length) { + var currentIndex, prevIndex = this.session.$getRowCacheIndex(rowCache, this.currentRow); + while (this.currentRow - splitIndex > 0) { + currentIndex = this.session.$getRowCacheIndex(rowCache, this.currentRow - splitIndex - 1); + if (currentIndex !== prevIndex) + break; + prevIndex = currentIndex; + splitIndex++; + } + } + else { + splitIndex = this.currentRow; + } + return splitIndex; + }; + BidiHandler.prototype.updateRowLine = function (docRow, splitIndex) { + if (docRow === undefined) + docRow = this.getDocumentRow(); + var isLastRow = (docRow === this.session.getLength() - 1), endOfLine = isLastRow ? this.EOF : this.EOL; + this.wrapIndent = 0; + this.line = this.session.getLine(docRow); + this.isRtlDir = this.$isRtl || this.line.charAt(0) === this.RLE; + if (this.session.$useWrapMode) { + var splits = this.session.$wrapData[docRow]; + if (splits) { + if (splitIndex === undefined) + splitIndex = this.getSplitIndex(); + if (splitIndex > 0 && splits.length) { + this.wrapIndent = splits.indent; + this.wrapOffset = this.wrapIndent * this.charWidths[bidiUtil.L]; + this.line = (splitIndex < splits.length) ? + this.line.substring(splits[splitIndex - 1], splits[splitIndex]) : + this.line.substring(splits[splits.length - 1]); + } + else { + this.line = this.line.substring(0, splits[splitIndex]); + } + if (splitIndex == splits.length) { + this.line += (this.showInvisibles) ? endOfLine : bidiUtil.DOT; + } + } + } + else { + this.line += this.showInvisibles ? endOfLine : bidiUtil.DOT; + } + var session = this.session, shift = 0, size; + this.line = this.line.replace(/\t|[\u1100-\u2029, \u202F-\uFFE6]/g, function (ch, i) { + if (ch === '\t' || session.isFullWidth(ch.charCodeAt(0))) { + size = (ch === '\t') ? session.getScreenTabSize(i + shift) : 2; + shift += size - 1; + return lang.stringRepeat(bidiUtil.DOT, size); + } + return ch; + }); + if (this.isRtlDir) { + this.fontMetrics.$main.textContent = (this.line.charAt(this.line.length - 1) == bidiUtil.DOT) ? this.line.substr(0, this.line.length - 1) : this.line; + this.rtlLineOffset = this.contentWidth - this.fontMetrics.$main.getBoundingClientRect().width; + } + }; + BidiHandler.prototype.updateBidiMap = function () { + var textCharTypes = []; + if (bidiUtil.hasBidiCharacters(this.line, textCharTypes) || this.isRtlDir) { + this.bidiMap = bidiUtil.doBidiReorder(this.line, textCharTypes, this.isRtlDir); + } + else { + this.bidiMap = {}; + } + }; + BidiHandler.prototype.markAsDirty = function () { + this.currentRow = null; + }; + BidiHandler.prototype.updateCharacterWidths = function (fontMetrics) { + if (this.characterWidth === fontMetrics.$characterSize.width) + return; + this.fontMetrics = fontMetrics; + var characterWidth = this.characterWidth = fontMetrics.$characterSize.width; + var bidiCharWidth = fontMetrics.$measureCharWidth("\u05d4"); + this.charWidths[bidiUtil.L] = this.charWidths[bidiUtil.EN] = this.charWidths[bidiUtil.ON_R] = characterWidth; + this.charWidths[bidiUtil.R] = this.charWidths[bidiUtil.AN] = bidiCharWidth; + this.charWidths[bidiUtil.R_H] = bidiCharWidth * 0.45; + this.charWidths[bidiUtil.B] = this.charWidths[bidiUtil.RLE] = 0; + this.currentRow = null; + }; + BidiHandler.prototype.setShowInvisibles = function (showInvisibles) { + this.showInvisibles = showInvisibles; + this.currentRow = null; + }; + BidiHandler.prototype.setEolChar = function (eolChar) { + this.EOL = eolChar; + }; + BidiHandler.prototype.setContentWidth = function (width) { + this.contentWidth = width; + }; + BidiHandler.prototype.isRtlLine = function (row) { + if (this.$isRtl) + return true; + if (row != undefined) + return (this.session.getLine(row).charAt(0) == this.RLE); + else + return this.isRtlDir; + }; + BidiHandler.prototype.setRtlDirection = function (editor, isRtlDir) { + var cursor = editor.getCursorPosition(); + for (var row = editor.selection.getSelectionAnchor().row; row <= cursor.row; row++) { + if (!isRtlDir && editor.session.getLine(row).charAt(0) === editor.session.$bidiHandler.RLE) + editor.session.doc.removeInLine(row, 0, 1); + else if (isRtlDir && editor.session.getLine(row).charAt(0) !== editor.session.$bidiHandler.RLE) + editor.session.doc.insert({ column: 0, row: row }, editor.session.$bidiHandler.RLE); + } + }; + BidiHandler.prototype.getPosLeft = function (col) { + col -= this.wrapIndent; + var leftBoundary = (this.line.charAt(0) === this.RLE) ? 1 : 0; + var logicalIdx = (col > leftBoundary) ? (this.session.getOverwrite() ? col : col - 1) : leftBoundary; + var visualIdx = bidiUtil.getVisualFromLogicalIdx(logicalIdx, this.bidiMap), levels = this.bidiMap.bidiLevels, left = 0; + if (!this.session.getOverwrite() && col <= leftBoundary && levels[visualIdx] % 2 !== 0) + visualIdx++; + for (var i = 0; i < visualIdx; i++) { + left += this.charWidths[levels[i]]; + } + if (!this.session.getOverwrite() && (col > leftBoundary) && (levels[visualIdx] % 2 === 0)) + left += this.charWidths[levels[visualIdx]]; + if (this.wrapIndent) + left += this.isRtlDir ? (-1 * this.wrapOffset) : this.wrapOffset; + if (this.isRtlDir) + left += this.rtlLineOffset; + return left; + }; + BidiHandler.prototype.getSelections = function (startCol, endCol) { + var map = this.bidiMap, levels = map.bidiLevels, level, selections = [], offset = 0, selColMin = Math.min(startCol, endCol) - this.wrapIndent, selColMax = Math.max(startCol, endCol) - this.wrapIndent, isSelected = false, isSelectedPrev = false, selectionStart = 0; + if (this.wrapIndent) + offset += this.isRtlDir ? (-1 * this.wrapOffset) : this.wrapOffset; + for (var logIdx, visIdx = 0; visIdx < levels.length; visIdx++) { + logIdx = map.logicalFromVisual[visIdx]; + level = levels[visIdx]; + isSelected = (logIdx >= selColMin) && (logIdx < selColMax); + if (isSelected && !isSelectedPrev) { + selectionStart = offset; + } + else if (!isSelected && isSelectedPrev) { + selections.push({ left: selectionStart, width: offset - selectionStart }); + } + offset += this.charWidths[level]; + isSelectedPrev = isSelected; + } + if (isSelected && (visIdx === levels.length)) { + selections.push({ left: selectionStart, width: offset - selectionStart }); + } + if (this.isRtlDir) { + for (var i = 0; i < selections.length; i++) { + selections[i].left += this.rtlLineOffset; + } + } + return selections; + }; + BidiHandler.prototype.offsetToCol = function (posX) { + if (this.isRtlDir) + posX -= this.rtlLineOffset; + var logicalIdx = 0, posX = Math.max(posX, 0), offset = 0, visualIdx = 0, levels = this.bidiMap.bidiLevels, charWidth = this.charWidths[levels[visualIdx]]; + if (this.wrapIndent) + posX -= this.isRtlDir ? (-1 * this.wrapOffset) : this.wrapOffset; + while (posX > offset + charWidth / 2) { + offset += charWidth; + if (visualIdx === levels.length - 1) { + charWidth = 0; + break; + } + charWidth = this.charWidths[levels[++visualIdx]]; + } + if (visualIdx > 0 && (levels[visualIdx - 1] % 2 !== 0) && (levels[visualIdx] % 2 === 0)) { + if (posX < offset) + visualIdx--; + logicalIdx = this.bidiMap.logicalFromVisual[visualIdx]; + } + else if (visualIdx > 0 && (levels[visualIdx - 1] % 2 === 0) && (levels[visualIdx] % 2 !== 0)) { + logicalIdx = 1 + ((posX > offset) ? this.bidiMap.logicalFromVisual[visualIdx] + : this.bidiMap.logicalFromVisual[visualIdx - 1]); + } + else if ((this.isRtlDir && visualIdx === levels.length - 1 && charWidth === 0 && (levels[visualIdx - 1] % 2 === 0)) + || (!this.isRtlDir && visualIdx === 0 && (levels[visualIdx] % 2 !== 0))) { + logicalIdx = 1 + this.bidiMap.logicalFromVisual[visualIdx]; + } + else { + if (visualIdx > 0 && (levels[visualIdx - 1] % 2 !== 0) && charWidth !== 0) + visualIdx--; + logicalIdx = this.bidiMap.logicalFromVisual[visualIdx]; + } + if (logicalIdx === 0 && this.isRtlDir) + logicalIdx++; + return (logicalIdx + this.wrapIndent); + }; + return BidiHandler; +}()); +exports.BidiHandler = BidiHandler; + +}); + +ace.define("ace/selection",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/lib/event_emitter","ace/range"], function(require, exports, module){"use strict"; +var oop = require("./lib/oop"); +var lang = require("./lib/lang"); +var EventEmitter = require("./lib/event_emitter").EventEmitter; +var Range = require("./range").Range; +var Selection = /** @class */ (function () { + function Selection(session) { + this.session = session; + this.doc = session.getDocument(); + this.clearSelection(); + this.cursor = this.lead = this.doc.createAnchor(0, 0); + this.anchor = this.doc.createAnchor(0, 0); + this.$silent = false; + var self = this; + this.cursor.on("change", function (e) { + self.$cursorChanged = true; + if (!self.$silent) + self._emit("changeCursor"); + if (!self.$isEmpty && !self.$silent) + self._emit("changeSelection"); + if (!self.$keepDesiredColumnOnChange && e.old.column != e.value.column) + self.$desiredColumn = null; + }); + this.anchor.on("change", function () { + self.$anchorChanged = true; + if (!self.$isEmpty && !self.$silent) + self._emit("changeSelection"); + }); + } + Selection.prototype.isEmpty = function () { + return this.$isEmpty || (this.anchor.row == this.lead.row && + this.anchor.column == this.lead.column); + }; + Selection.prototype.isMultiLine = function () { + return !this.$isEmpty && this.anchor.row != this.cursor.row; + }; + Selection.prototype.getCursor = function () { + return this.lead.getPosition(); + }; + Selection.prototype.setAnchor = function (row, column) { + this.$isEmpty = false; + this.anchor.setPosition(row, column); + }; + Selection.prototype.getAnchor = function () { + if (this.$isEmpty) + return this.getSelectionLead(); + return this.anchor.getPosition(); + }; + Selection.prototype.getSelectionLead = function () { + return this.lead.getPosition(); + }; + Selection.prototype.isBackwards = function () { + var anchor = this.anchor; + var lead = this.lead; + return (anchor.row > lead.row || (anchor.row == lead.row && anchor.column > lead.column)); + }; + Selection.prototype.getRange = function () { + var anchor = this.anchor; + var lead = this.lead; + if (this.$isEmpty) + return Range.fromPoints(lead, lead); + return this.isBackwards() + ? Range.fromPoints(lead, anchor) + : Range.fromPoints(anchor, lead); + }; + Selection.prototype.clearSelection = function () { + if (!this.$isEmpty) { + this.$isEmpty = true; + this._emit("changeSelection"); + } + }; + Selection.prototype.selectAll = function () { + this.$setSelection(0, 0, Number.MAX_VALUE, Number.MAX_VALUE); + }; + Selection.prototype.setRange = function (range, reverse) { + var start = reverse ? range.end : range.start; + var end = reverse ? range.start : range.end; + this.$setSelection(start.row, start.column, end.row, end.column); + }; + Selection.prototype.$setSelection = function (anchorRow, anchorColumn, cursorRow, cursorColumn) { + if (this.$silent) + return; + var wasEmpty = this.$isEmpty; + var wasMultiselect = this.inMultiSelectMode; + this.$silent = true; + this.$cursorChanged = this.$anchorChanged = false; + this.anchor.setPosition(anchorRow, anchorColumn); + this.cursor.setPosition(cursorRow, cursorColumn); + this.$isEmpty = !Range.comparePoints(this.anchor, this.cursor); + this.$silent = false; + if (this.$cursorChanged) + this._emit("changeCursor"); + if (this.$cursorChanged || this.$anchorChanged || wasEmpty != this.$isEmpty || wasMultiselect) + this._emit("changeSelection"); + }; + Selection.prototype.$moveSelection = function (mover) { + var lead = this.lead; + if (this.$isEmpty) + this.setSelectionAnchor(lead.row, lead.column); + mover.call(this); + }; + Selection.prototype.selectTo = function (row, column) { + this.$moveSelection(function () { + this.moveCursorTo(row, column); + }); + }; + Selection.prototype.selectToPosition = function (pos) { + this.$moveSelection(function () { + this.moveCursorToPosition(pos); + }); + }; + Selection.prototype.moveTo = function (row, column) { + this.clearSelection(); + this.moveCursorTo(row, column); + }; + Selection.prototype.moveToPosition = function (pos) { + this.clearSelection(); + this.moveCursorToPosition(pos); + }; + Selection.prototype.selectUp = function () { + this.$moveSelection(this.moveCursorUp); + }; + Selection.prototype.selectDown = function () { + this.$moveSelection(this.moveCursorDown); + }; + Selection.prototype.selectRight = function () { + this.$moveSelection(this.moveCursorRight); + }; + Selection.prototype.selectLeft = function () { + this.$moveSelection(this.moveCursorLeft); + }; + Selection.prototype.selectLineStart = function () { + this.$moveSelection(this.moveCursorLineStart); + }; + Selection.prototype.selectLineEnd = function () { + this.$moveSelection(this.moveCursorLineEnd); + }; + Selection.prototype.selectFileEnd = function () { + this.$moveSelection(this.moveCursorFileEnd); + }; + Selection.prototype.selectFileStart = function () { + this.$moveSelection(this.moveCursorFileStart); + }; + Selection.prototype.selectWordRight = function () { + this.$moveSelection(this.moveCursorWordRight); + }; + Selection.prototype.selectWordLeft = function () { + this.$moveSelection(this.moveCursorWordLeft); + }; + Selection.prototype.getWordRange = function (row, column) { + if (typeof column == "undefined") { + var cursor = row || this.lead; + row = cursor.row; + column = cursor.column; + } + return this.session.getWordRange(row, column); + }; + Selection.prototype.selectWord = function () { + this.setSelectionRange(this.getWordRange()); + }; + Selection.prototype.selectAWord = function () { + var cursor = this.getCursor(); + var range = this.session.getAWordRange(cursor.row, cursor.column); + this.setSelectionRange(range); + }; + Selection.prototype.getLineRange = function (row, excludeLastChar) { + var rowStart = typeof row == "number" ? row : this.lead.row; + var rowEnd; + var foldLine = this.session.getFoldLine(rowStart); + if (foldLine) { + rowStart = foldLine.start.row; + rowEnd = foldLine.end.row; + } + else { + rowEnd = rowStart; + } + if (excludeLastChar === true) + return new Range(rowStart, 0, rowEnd, this.session.getLine(rowEnd).length); + else + return new Range(rowStart, 0, rowEnd + 1, 0); + }; + Selection.prototype.selectLine = function () { + this.setSelectionRange(this.getLineRange()); + }; + Selection.prototype.moveCursorUp = function () { + this.moveCursorBy(-1, 0); + }; + Selection.prototype.moveCursorDown = function () { + this.moveCursorBy(1, 0); + }; + Selection.prototype.wouldMoveIntoSoftTab = function (cursor, tabSize, direction) { + var start = cursor.column; + var end = cursor.column + tabSize; + if (direction < 0) { + start = cursor.column - tabSize; + end = cursor.column; + } + return this.session.isTabStop(cursor) && this.doc.getLine(cursor.row).slice(start, end).split(" ").length - 1 == tabSize; + }; + Selection.prototype.moveCursorLeft = function () { + var cursor = this.lead.getPosition(), fold; + if (fold = this.session.getFoldAt(cursor.row, cursor.column, -1)) { + this.moveCursorTo(fold.start.row, fold.start.column); + } + else if (cursor.column === 0) { + if (cursor.row > 0) { + this.moveCursorTo(cursor.row - 1, this.doc.getLine(cursor.row - 1).length); + } + } + else { + var tabSize = this.session.getTabSize(); + if (this.wouldMoveIntoSoftTab(cursor, tabSize, -1) && !this.session.getNavigateWithinSoftTabs()) { + this.moveCursorBy(0, -tabSize); + } + else { + this.moveCursorBy(0, -1); + } + } + }; + Selection.prototype.moveCursorRight = function () { + var cursor = this.lead.getPosition(), fold; + if (fold = this.session.getFoldAt(cursor.row, cursor.column, 1)) { + this.moveCursorTo(fold.end.row, fold.end.column); + } + else if (this.lead.column == this.doc.getLine(this.lead.row).length) { + if (this.lead.row < this.doc.getLength() - 1) { + this.moveCursorTo(this.lead.row + 1, 0); + } + } + else { + var tabSize = this.session.getTabSize(); + var cursor = this.lead; + if (this.wouldMoveIntoSoftTab(cursor, tabSize, 1) && !this.session.getNavigateWithinSoftTabs()) { + this.moveCursorBy(0, tabSize); + } + else { + this.moveCursorBy(0, 1); + } + } + }; + Selection.prototype.moveCursorLineStart = function () { + var row = this.lead.row; + var column = this.lead.column; + var screenRow = this.session.documentToScreenRow(row, column); + var firstColumnPosition = this.session.screenToDocumentPosition(screenRow, 0); + var beforeCursor = this.session.getDisplayLine(row, null, firstColumnPosition.row, firstColumnPosition.column); + var leadingSpace = beforeCursor.match(/^\s*/); + if (leadingSpace[0].length != column && !this.session.$useEmacsStyleLineStart) + firstColumnPosition.column += leadingSpace[0].length; + this.moveCursorToPosition(firstColumnPosition); + }; + Selection.prototype.moveCursorLineEnd = function () { + var lead = this.lead; + var lineEnd = this.session.getDocumentLastRowColumnPosition(lead.row, lead.column); + if (this.lead.column == lineEnd.column) { + var line = this.session.getLine(lineEnd.row); + if (lineEnd.column == line.length) { + var textEnd = line.search(/\s+$/); + if (textEnd > 0) + lineEnd.column = textEnd; + } + } + this.moveCursorTo(lineEnd.row, lineEnd.column); + }; + Selection.prototype.moveCursorFileEnd = function () { + var row = this.doc.getLength() - 1; + var column = this.doc.getLine(row).length; + this.moveCursorTo(row, column); + }; + Selection.prototype.moveCursorFileStart = function () { + this.moveCursorTo(0, 0); + }; + Selection.prototype.moveCursorLongWordRight = function () { + var row = this.lead.row; + var column = this.lead.column; + var line = this.doc.getLine(row); + var rightOfCursor = line.substring(column); + this.session.nonTokenRe.lastIndex = 0; + this.session.tokenRe.lastIndex = 0; + var fold = this.session.getFoldAt(row, column, 1); + if (fold) { + this.moveCursorTo(fold.end.row, fold.end.column); + return; + } + if (this.session.nonTokenRe.exec(rightOfCursor)) { + column += this.session.nonTokenRe.lastIndex; + this.session.nonTokenRe.lastIndex = 0; + rightOfCursor = line.substring(column); + } + if (column >= line.length) { + this.moveCursorTo(row, line.length); + this.moveCursorRight(); + if (row < this.doc.getLength() - 1) + this.moveCursorWordRight(); + return; + } + if (this.session.tokenRe.exec(rightOfCursor)) { + column += this.session.tokenRe.lastIndex; + this.session.tokenRe.lastIndex = 0; + } + this.moveCursorTo(row, column); + }; + Selection.prototype.moveCursorLongWordLeft = function () { + var row = this.lead.row; + var column = this.lead.column; + var fold; + if (fold = this.session.getFoldAt(row, column, -1)) { + this.moveCursorTo(fold.start.row, fold.start.column); + return; + } + var str = this.session.getFoldStringAt(row, column, -1); + if (str == null) { + str = this.doc.getLine(row).substring(0, column); + } + var leftOfCursor = lang.stringReverse(str); + this.session.nonTokenRe.lastIndex = 0; + this.session.tokenRe.lastIndex = 0; + if (this.session.nonTokenRe.exec(leftOfCursor)) { + column -= this.session.nonTokenRe.lastIndex; + leftOfCursor = leftOfCursor.slice(this.session.nonTokenRe.lastIndex); + this.session.nonTokenRe.lastIndex = 0; + } + if (column <= 0) { + this.moveCursorTo(row, 0); + this.moveCursorLeft(); + if (row > 0) + this.moveCursorWordLeft(); + return; + } + if (this.session.tokenRe.exec(leftOfCursor)) { + column -= this.session.tokenRe.lastIndex; + this.session.tokenRe.lastIndex = 0; + } + this.moveCursorTo(row, column); + }; + Selection.prototype.$shortWordEndIndex = function (rightOfCursor) { + var index = 0, ch; + var whitespaceRe = /\s/; + var tokenRe = this.session.tokenRe; + tokenRe.lastIndex = 0; + if (this.session.tokenRe.exec(rightOfCursor)) { + index = this.session.tokenRe.lastIndex; + } + else { + while ((ch = rightOfCursor[index]) && whitespaceRe.test(ch)) + index++; + if (index < 1) { + tokenRe.lastIndex = 0; + while ((ch = rightOfCursor[index]) && !tokenRe.test(ch)) { + tokenRe.lastIndex = 0; + index++; + if (whitespaceRe.test(ch)) { + if (index > 2) { + index--; + break; + } + else { + while ((ch = rightOfCursor[index]) && whitespaceRe.test(ch)) + index++; + if (index > 2) + break; + } + } + } + } + } + tokenRe.lastIndex = 0; + return index; + }; + Selection.prototype.moveCursorShortWordRight = function () { + var row = this.lead.row; + var column = this.lead.column; + var line = this.doc.getLine(row); + var rightOfCursor = line.substring(column); + var fold = this.session.getFoldAt(row, column, 1); + if (fold) + return this.moveCursorTo(fold.end.row, fold.end.column); + if (column == line.length) { + var l = this.doc.getLength(); + do { + row++; + rightOfCursor = this.doc.getLine(row); + } while (row < l && /^\s*$/.test(rightOfCursor)); + if (!/^\s+/.test(rightOfCursor)) + rightOfCursor = ""; + column = 0; + } + var index = this.$shortWordEndIndex(rightOfCursor); + this.moveCursorTo(row, column + index); + }; + Selection.prototype.moveCursorShortWordLeft = function () { + var row = this.lead.row; + var column = this.lead.column; + var fold; + if (fold = this.session.getFoldAt(row, column, -1)) + return this.moveCursorTo(fold.start.row, fold.start.column); + var line = this.session.getLine(row).substring(0, column); + if (column === 0) { + do { + row--; + line = this.doc.getLine(row); + } while (row > 0 && /^\s*$/.test(line)); + column = line.length; + if (!/\s+$/.test(line)) + line = ""; + } + var leftOfCursor = lang.stringReverse(line); + var index = this.$shortWordEndIndex(leftOfCursor); + return this.moveCursorTo(row, column - index); + }; + Selection.prototype.moveCursorWordRight = function () { + if (this.session.$selectLongWords) + this.moveCursorLongWordRight(); + else + this.moveCursorShortWordRight(); + }; + Selection.prototype.moveCursorWordLeft = function () { + if (this.session.$selectLongWords) + this.moveCursorLongWordLeft(); + else + this.moveCursorShortWordLeft(); + }; + Selection.prototype.moveCursorBy = function (rows, chars) { + var screenPos = this.session.documentToScreenPosition(this.lead.row, this.lead.column); + var offsetX; + if (chars === 0) { + if (rows !== 0) { + if (this.session.$bidiHandler.isBidiRow(screenPos.row, this.lead.row)) { + offsetX = this.session.$bidiHandler.getPosLeft(screenPos.column); + screenPos.column = Math.round(offsetX / this.session.$bidiHandler.charWidths[0]); + } + else { + offsetX = screenPos.column * this.session.$bidiHandler.charWidths[0]; + } + } + if (this.$desiredColumn) + screenPos.column = this.$desiredColumn; + else + this.$desiredColumn = screenPos.column; + } + if (rows != 0 && this.session.lineWidgets && this.session.lineWidgets[this.lead.row]) { + var widget = this.session.lineWidgets[this.lead.row]; + if (rows < 0) + rows -= widget.rowsAbove || 0; + else if (rows > 0) + rows += widget.rowCount - (widget.rowsAbove || 0); + } + var docPos = this.session.screenToDocumentPosition(screenPos.row + rows, screenPos.column, offsetX); + if (rows !== 0 && chars === 0 && docPos.row === this.lead.row && docPos.column === this.lead.column) { + } + this.moveCursorTo(docPos.row, docPos.column + chars, chars === 0); + }; + Selection.prototype.moveCursorToPosition = function (position) { + this.moveCursorTo(position.row, position.column); + }; + Selection.prototype.moveCursorTo = function (row, column, keepDesiredColumn) { + var fold = this.session.getFoldAt(row, column, 1); + if (fold) { + row = fold.start.row; + column = fold.start.column; + } + this.$keepDesiredColumnOnChange = true; + var line = this.session.getLine(row); + if (/[\uDC00-\uDFFF]/.test(line.charAt(column)) && line.charAt(column - 1)) { + if (this.lead.row == row && this.lead.column == column + 1) + column = column - 1; + else + column = column + 1; + } + this.lead.setPosition(row, column); + this.$keepDesiredColumnOnChange = false; + if (!keepDesiredColumn) + this.$desiredColumn = null; + }; + Selection.prototype.moveCursorToScreen = function (row, column, keepDesiredColumn) { + var pos = this.session.screenToDocumentPosition(row, column); + this.moveCursorTo(pos.row, pos.column, keepDesiredColumn); + }; + Selection.prototype.detach = function () { + this.lead.detach(); + this.anchor.detach(); + }; + Selection.prototype.fromOrientedRange = function (range) { + this.setSelectionRange(range, range.cursor == range.start); + this.$desiredColumn = range.desiredColumn || this.$desiredColumn; + }; + Selection.prototype.toOrientedRange = function (range) { + var r = this.getRange(); + if (range) { + range.start.column = r.start.column; + range.start.row = r.start.row; + range.end.column = r.end.column; + range.end.row = r.end.row; + } + else { + range = r; + } + range.cursor = this.isBackwards() ? range.start : range.end; + range.desiredColumn = this.$desiredColumn; + return range; + }; + Selection.prototype.getRangeOfMovements = function (func) { + var start = this.getCursor(); + try { + func(this); + var end = this.getCursor(); + return Range.fromPoints(start, end); + } + catch (e) { + return Range.fromPoints(start, start); + } + finally { + this.moveCursorToPosition(start); + } + }; + Selection.prototype.toJSON = function () { + if (this.rangeCount) { + var data = this.ranges.map(function (r) { + var r1 = r.clone(); + r1.isBackwards = r.cursor == r.start; + return r1; + }); + } + else { + var data = this.getRange(); + data.isBackwards = this.isBackwards(); + } + return data; + }; + Selection.prototype.fromJSON = function (data) { + if (data.start == undefined) { + if (this.rangeList && data.length > 1) { + this.toSingleRange(data[0]); + for (var i = data.length; i--;) { + var r = Range.fromPoints(data[i].start, data[i].end); + if (data[i].isBackwards) + r.cursor = r.start; + this.addRange(r, true); + } + return; + } + else { + data = data[0]; + } + } + if (this.rangeList) + this.toSingleRange(data); + this.setSelectionRange(data, data.isBackwards); + }; + Selection.prototype.isEqual = function (data) { + if ((data.length || this.rangeCount) && data.length != this.rangeCount) + return false; + if (!data.length || !this.ranges) + return this.getRange().isEqual(data); + for (var i = this.ranges.length; i--;) { + if (!this.ranges[i].isEqual(data[i])) + return false; + } + return true; + }; + return Selection; +}()); +Selection.prototype.setSelectionAnchor = Selection.prototype.setAnchor; +Selection.prototype.getSelectionAnchor = Selection.prototype.getAnchor; +Selection.prototype.setSelectionRange = Selection.prototype.setRange; +oop.implement(Selection.prototype, EventEmitter); +exports.Selection = Selection; + +}); + +ace.define("ace/tokenizer",["require","exports","module","ace/lib/report_error"], function(require, exports, module){"use strict"; +var reportError = require("./lib/report_error").reportError; +var MAX_TOKEN_COUNT = 2000; +var Tokenizer = /** @class */ (function () { + function Tokenizer(rules) { + this.states = rules; + this.regExps = {}; + this.matchMappings = {}; + for (var key in this.states) { + var state = this.states[key]; + var ruleRegExps = []; + var matchTotal = 0; + var mapping = this.matchMappings[key] = { defaultToken: "text" }; + var flag = "g"; + var splitterRurles = []; + for (var i = 0; i < state.length; i++) { + var rule = state[i]; + if (rule.defaultToken) + mapping.defaultToken = rule.defaultToken; + if (rule.caseInsensitive && flag.indexOf("i") === -1) + flag += "i"; + if (rule.unicode && flag.indexOf("u") === -1) + flag += "u"; + if (rule.regex == null) + continue; + if (rule.regex instanceof RegExp) + rule.regex = rule.regex.toString().slice(1, -1); + var adjustedregex = rule.regex; + var matchcount = new RegExp("(?:(" + adjustedregex + ")|(.))").exec("a").length - 2; + if (Array.isArray(rule.token)) { + if (rule.token.length == 1 || matchcount == 1) { + rule.token = rule.token[0]; + } + else if (matchcount - 1 != rule.token.length) { + this.reportError("number of classes and regexp groups doesn't match", { + rule: rule, + groupCount: matchcount - 1 + }); + rule.token = rule.token[0]; + } + else { + rule.tokenArray = rule.token; + rule.token = null; + rule.onMatch = this.$arrayTokens; + } + } + else if (typeof rule.token == "function" && !rule.onMatch) { + if (matchcount > 1) + rule.onMatch = this.$applyToken; + else + rule.onMatch = rule.token; + } + if (matchcount > 1) { + if (/\\\d/.test(rule.regex)) { + adjustedregex = rule.regex.replace(/\\([0-9]+)/g, function (match, digit) { + return "\\" + (parseInt(digit, 10) + matchTotal + 1); + }); + } + else { + matchcount = 1; + adjustedregex = this.removeCapturingGroups(rule.regex); + } + if (!rule.splitRegex && typeof rule.token != "string") + splitterRurles.push(rule); // flag will be known only at the very end + } + mapping[matchTotal] = i; + matchTotal += matchcount; + ruleRegExps.push(adjustedregex); + if (!rule.onMatch) + rule.onMatch = null; + } + if (!ruleRegExps.length) { + mapping[0] = 0; + ruleRegExps.push("$"); + } + splitterRurles.forEach(function (rule) { + rule.splitRegex = this.createSplitterRegexp(rule.regex, flag); + }, this); + this.regExps[key] = new RegExp("(" + ruleRegExps.join(")|(") + ")|($)", flag); + } + } + Tokenizer.prototype.$setMaxTokenCount = function (m) { + MAX_TOKEN_COUNT = m | 0; + }; + Tokenizer.prototype.$applyToken = function (str) { + var values = this.splitRegex.exec(str).slice(1); + var types = this.token.apply(this, values); + if (typeof types === "string") + return [{ type: types, value: str }]; + var tokens = []; + for (var i = 0, l = types.length; i < l; i++) { + if (values[i]) + tokens[tokens.length] = { + type: types[i], + value: values[i] + }; + } + return tokens; + }; + Tokenizer.prototype.$arrayTokens = function (str) { + if (!str) + return []; + var values = this.splitRegex.exec(str); + if (!values) + return "text"; + var tokens = []; + var types = this.tokenArray; + for (var i = 0, l = types.length; i < l; i++) { + if (values[i + 1]) + tokens[tokens.length] = { + type: types[i], + value: values[i + 1] + }; + } + return tokens; + }; + Tokenizer.prototype.removeCapturingGroups = function (src) { + var r = src.replace(/\\.|\[(?:\\.|[^\\\]])*|\(\?[:=!<]|(\()/g, function (x, y) { return y ? "(?:" : x; }); + return r; + }; + Tokenizer.prototype.createSplitterRegexp = function (src, flag) { + if (src.indexOf("(?=") != -1) { + var stack = 0; + var inChClass = false; + var lastCapture = {}; + src.replace(/(\\.)|(\((?:\?[=!])?)|(\))|([\[\]])/g, function (m, esc, parenOpen, parenClose, square, index) { + if (inChClass) { + inChClass = square != "]"; + } + else if (square) { + inChClass = true; + } + else if (parenClose) { + if (stack == lastCapture.stack) { + lastCapture.end = index + 1; + lastCapture.stack = -1; + } + stack--; + } + else if (parenOpen) { + stack++; + if (parenOpen.length != 1) { + lastCapture.stack = stack; + lastCapture.start = index; + } + } + return m; + }); + if (lastCapture.end != null && /^\)*$/.test(src.substr(lastCapture.end))) + src = src.substring(0, lastCapture.start) + src.substr(lastCapture.end); + } + if (src.charAt(0) != "^") + src = "^" + src; + if (src.charAt(src.length - 1) != "$") + src += "$"; + return new RegExp(src, (flag || "").replace("g", "")); + }; + Tokenizer.prototype.getLineTokens = function (line, startState) { + if (startState && typeof startState != "string") { + var stack = startState.slice(0); + startState = stack[0]; + if (startState === "#tmp") { + stack.shift(); + startState = stack.shift(); + } + } + else + var stack = []; + var currentState = startState || "start"; + var state = this.states[currentState]; + if (!state) { + currentState = "start"; + state = this.states[currentState]; + } + var mapping = this.matchMappings[currentState]; + var re = this.regExps[currentState]; + re.lastIndex = 0; + var match, tokens = []; + var lastIndex = 0; + var matchAttempts = 0; + var token = { type: null, value: "" }; + while (match = re.exec(line)) { + var type = mapping.defaultToken; + var rule = null; + var value = match[0]; + var index = re.lastIndex; + if (index - value.length > lastIndex) { + var skipped = line.substring(lastIndex, index - value.length); + if (token.type == type) { + token.value += skipped; + } + else { + if (token.type) + tokens.push(token); + token = { type: type, value: skipped }; + } + } + for (var i = 0; i < match.length - 2; i++) { + if (match[i + 1] === undefined) + continue; + rule = state[mapping[i]]; + if (rule.onMatch) + type = rule.onMatch(value, currentState, stack, line); + else + type = rule.token; + if (rule.next) { + if (typeof rule.next == "string") { + currentState = rule.next; + } + else { + currentState = rule.next(currentState, stack); + } + state = this.states[currentState]; + if (!state) { + this.reportError("state doesn't exist", currentState); + currentState = "start"; + state = this.states[currentState]; + } + mapping = this.matchMappings[currentState]; + lastIndex = index; + re = this.regExps[currentState]; + re.lastIndex = index; + } + if (rule.consumeLineEnd) + lastIndex = index; + break; + } + if (value) { + if (typeof type === "string") { + if ((!rule || rule.merge !== false) && token.type === type) { + token.value += value; + } + else { + if (token.type) + tokens.push(token); + token = { type: type, value: value }; + } + } + else if (type) { + if (token.type) + tokens.push(token); + token = { type: null, value: "" }; + for (var i = 0; i < type.length; i++) + tokens.push(type[i]); + } + } + if (lastIndex == line.length) + break; + lastIndex = index; + if (matchAttempts++ > MAX_TOKEN_COUNT) { + if (matchAttempts > 2 * line.length) { + this.reportError("infinite loop with in ace tokenizer", { + startState: startState, + line: line + }); + } + while (lastIndex < line.length) { + if (token.type) + tokens.push(token); + token = { + value: line.substring(lastIndex, lastIndex += 500), + type: "overflow" + }; + } + currentState = "start"; + stack = []; + break; + } + } + if (token.type) + tokens.push(token); + if (stack.length > 1) { + if (stack[0] !== currentState) + stack.unshift("#tmp", currentState); + } + return { + tokens: tokens, + state: stack.length ? stack : currentState + }; + }; + return Tokenizer; +}()); +Tokenizer.prototype.reportError = reportError; +exports.Tokenizer = Tokenizer; + +}); + +ace.define("ace/mode/text_highlight_rules",["require","exports","module","ace/lib/deep_copy"], function(require, exports, module){"use strict"; +var deepCopy = require("../lib/deep_copy").deepCopy; +var TextHighlightRules = function () { + this.$rules = { + "start": [{ + token: "empty_line", + regex: '^$' + }, { + defaultToken: "text" + }] + }; +}; +(function () { + this.addRules = function (rules, prefix) { + if (!prefix) { + for (var key in rules) + this.$rules[key] = rules[key]; + return; + } + for (var key in rules) { + var state = rules[key]; + for (var i = 0; i < state.length; i++) { + var rule = state[i]; + if (rule.next || rule.onMatch) { + if (typeof rule.next == "string") { + if (rule.next.indexOf(prefix) !== 0) + rule.next = prefix + rule.next; + } + if (rule.nextState && rule.nextState.indexOf(prefix) !== 0) + rule.nextState = prefix + rule.nextState; + } + } + this.$rules[prefix + key] = state; + } + }; + this.getRules = function () { + return this.$rules; + }; + this.embedRules = function (HighlightRules, prefix, escapeRules, states, append) { + var embedRules = typeof HighlightRules == "function" + ? new HighlightRules().getRules() + : HighlightRules; + if (states) { + for (var i = 0; i < states.length; i++) + states[i] = prefix + states[i]; + } + else { + states = []; + for (var key in embedRules) + states.push(prefix + key); + } + this.addRules(embedRules, prefix); + if (escapeRules) { + var addRules = Array.prototype[append ? "push" : "unshift"]; + for (var i = 0; i < states.length; i++) + addRules.apply(this.$rules[states[i]], deepCopy(escapeRules)); + } + if (!this.$embeds) + this.$embeds = []; + this.$embeds.push(prefix); + }; + this.getEmbeds = function () { + return this.$embeds; + }; + var pushState = function (currentState, stack) { + if (currentState != "start" || stack.length) + stack.unshift(this.nextState, currentState); + return this.nextState; + }; + var popState = function (currentState, stack) { + stack.shift(); + return stack.shift() || "start"; + }; + this.normalizeRules = function () { + var id = 0; + var rules = this.$rules; + function processState(key) { + var state = rules[key]; + state.processed = true; + for (var i = 0; i < state.length; i++) { + var rule = state[i]; + var toInsert = null; + if (Array.isArray(rule)) { + toInsert = rule; + rule = {}; + } + if (!rule.regex && rule.start) { + rule.regex = rule.start; + if (!rule.next) + rule.next = []; + rule.next.push({ + defaultToken: rule.token + }, { + token: rule.token + ".end", + regex: rule.end || rule.start, + next: "pop" + }); + rule.token = rule.token + ".start"; + rule.push = true; + } + var next = rule.next || rule.push; + if (next && Array.isArray(next)) { + var stateName = rule.stateName; + if (!stateName) { + stateName = rule.token; + if (typeof stateName != "string") + stateName = stateName[0] || ""; + if (rules[stateName]) + stateName += id++; + } + rules[stateName] = next; + rule.next = stateName; + processState(stateName); + } + else if (next == "pop") { + rule.next = popState; + } + if (rule.push) { + rule.nextState = rule.next || rule.push; + rule.next = pushState; + delete rule.push; + } + if (rule.rules) { + for (var r in rule.rules) { + if (rules[r]) { + if (rules[r].push) + rules[r].push.apply(rules[r], rule.rules[r]); + } + else { + rules[r] = rule.rules[r]; + } + } + } + var includeName = typeof rule == "string" ? rule : rule.include; + if (includeName) { + if (includeName === "$self") + includeName = "start"; + if (Array.isArray(includeName)) + toInsert = includeName.map(function (x) { return rules[x]; }); + else + toInsert = rules[includeName]; + } + if (toInsert) { + var args = [i, 1].concat(toInsert); + if (rule.noEscape) + args = args.filter(function (x) { return !x.next; }); + state.splice.apply(state, args); + i--; + } + if (rule.keywordMap) { + rule.token = this.createKeywordMapper(rule.keywordMap, rule.defaultToken || "text", rule.caseInsensitive); + delete rule.defaultToken; + } + } + } + Object.keys(rules).forEach(processState, this); + }; + this.createKeywordMapper = function (map, defaultToken, ignoreCase, splitChar) { + var keywords = Object.create(null); + this.$keywordList = []; + Object.keys(map).forEach(function (className) { + var a = map[className]; + var list = a.split(splitChar || "|"); + for (var i = list.length; i--;) { + var word = list[i]; + this.$keywordList.push(word); + if (ignoreCase) + word = word.toLowerCase(); + keywords[word] = className; + } + }, this); + map = null; + return ignoreCase + ? function (value) { return keywords[value.toLowerCase()] || defaultToken; } + : function (value) { return keywords[value] || defaultToken; }; + }; + this.getKeywords = function () { + return this.$keywords; + }; +}).call(TextHighlightRules.prototype); +exports.TextHighlightRules = TextHighlightRules; + +}); + +ace.define("ace/mode/behaviour",["require","exports","module"], function(require, exports, module){"use strict"; +var Behaviour = function () { + this.$behaviours = {}; +}; +(function () { + this.add = function (name, action, callback) { + switch (undefined) { + case this.$behaviours: + this.$behaviours = {}; + case this.$behaviours[name]: + this.$behaviours[name] = {}; + } + this.$behaviours[name][action] = callback; + }; + this.addBehaviours = function (behaviours) { + for (var key in behaviours) { + for (var action in behaviours[key]) { + this.add(key, action, behaviours[key][action]); + } + } + }; + this.remove = function (name) { + if (this.$behaviours && this.$behaviours[name]) { + delete this.$behaviours[name]; + } + }; + this.inherit = function (mode, filter) { + if (typeof mode === "function") { + var behaviours = new mode().getBehaviours(filter); + } + else { + var behaviours = mode.getBehaviours(filter); + } + this.addBehaviours(behaviours); + }; + this.getBehaviours = function (filter) { + if (!filter) { + return this.$behaviours; + } + else { + var ret = {}; + for (var i = 0; i < filter.length; i++) { + if (this.$behaviours[filter[i]]) { + ret[filter[i]] = this.$behaviours[filter[i]]; + } + } + return ret; + } + }; +}).call(Behaviour.prototype); +exports.Behaviour = Behaviour; + +}); + +ace.define("ace/token_iterator",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; +var Range = require("./range").Range; +var TokenIterator = /** @class */ (function () { + function TokenIterator(session, initialRow, initialColumn) { + this.$session = session; + this.$row = initialRow; + this.$rowTokens = session.getTokens(initialRow); + var token = session.getTokenAt(initialRow, initialColumn); + this.$tokenIndex = token ? token.index : -1; + } + TokenIterator.prototype.stepBackward = function () { + this.$tokenIndex -= 1; + while (this.$tokenIndex < 0) { + this.$row -= 1; + if (this.$row < 0) { + this.$row = 0; + return null; + } + this.$rowTokens = this.$session.getTokens(this.$row); + this.$tokenIndex = this.$rowTokens.length - 1; + } + return this.$rowTokens[this.$tokenIndex]; + }; + TokenIterator.prototype.stepForward = function () { + this.$tokenIndex += 1; + var rowCount; + while (this.$tokenIndex >= this.$rowTokens.length) { + this.$row += 1; + if (!rowCount) + rowCount = this.$session.getLength(); + if (this.$row >= rowCount) { + this.$row = rowCount - 1; + return null; + } + this.$rowTokens = this.$session.getTokens(this.$row); + this.$tokenIndex = 0; + } + return this.$rowTokens[this.$tokenIndex]; + }; + TokenIterator.prototype.getCurrentToken = function () { + return this.$rowTokens[this.$tokenIndex]; + }; + TokenIterator.prototype.getCurrentTokenRow = function () { + return this.$row; + }; + TokenIterator.prototype.getCurrentTokenColumn = function () { + var rowTokens = this.$rowTokens; + var tokenIndex = this.$tokenIndex; + var column = rowTokens[tokenIndex].start; + if (column !== undefined) + return column; + column = 0; + while (tokenIndex > 0) { + tokenIndex -= 1; + column += rowTokens[tokenIndex].value.length; + } + return column; + }; + TokenIterator.prototype.getCurrentTokenPosition = function () { + return { row: this.$row, column: this.getCurrentTokenColumn() }; + }; + TokenIterator.prototype.getCurrentTokenRange = function () { + var token = this.$rowTokens[this.$tokenIndex]; + var column = this.getCurrentTokenColumn(); + return new Range(this.$row, column, this.$row, column + token.value.length); + }; + return TokenIterator; +}()); +exports.TokenIterator = TokenIterator; + +}); + +ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var Behaviour = require("../behaviour").Behaviour; +var TokenIterator = require("../../token_iterator").TokenIterator; +var lang = require("../../lib/lang"); +var SAFE_INSERT_IN_TOKENS = ["text", "paren.rparen", "rparen", "paren", "punctuation.operator"]; +var SAFE_INSERT_BEFORE_TOKENS = ["text", "paren.rparen", "rparen", "paren", "punctuation.operator", "comment"]; +var context; +var contextCache = {}; +var defaultQuotes = { '"': '"', "'": "'" }; +var initContext = function (editor) { + var id = -1; + if (editor.multiSelect) { + id = editor.selection.index; + if (contextCache.rangeCount != editor.multiSelect.rangeCount) + contextCache = { rangeCount: editor.multiSelect.rangeCount }; + } + if (contextCache[id]) + return context = contextCache[id]; + context = contextCache[id] = { + autoInsertedBrackets: 0, + autoInsertedRow: -1, + autoInsertedLineEnd: "", + maybeInsertedBrackets: 0, + maybeInsertedRow: -1, + maybeInsertedLineStart: "", + maybeInsertedLineEnd: "" + }; +}; +var getWrapped = function (selection, selected, opening, closing) { + var rowDiff = selection.end.row - selection.start.row; + return { + text: opening + selected + closing, + selection: [ + 0, + selection.start.column + 1, + rowDiff, + selection.end.column + (rowDiff ? 0 : 1) + ] + }; +}; +var CstyleBehaviour = function (options) { + options = options || {}; + this.add("braces", "insertion", function (state, action, editor, session, text) { + var cursor = editor.getCursorPosition(); + var line = session.doc.getLine(cursor.row); + if (text == '{') { + initContext(editor); + var selection = editor.getSelectionRange(); + var selected = session.doc.getTextRange(selection); + if (selected !== "" && selected !== "{" && editor.getWrapBehavioursEnabled()) { + return getWrapped(selection, selected, '{', '}'); + } + else if (CstyleBehaviour.isSaneInsertion(editor, session)) { + if (/[\]\}\)]/.test(line[cursor.column]) || editor.inMultiSelectMode || options.braces) { + CstyleBehaviour.recordAutoInsert(editor, session, "}"); + return { + text: '{}', + selection: [1, 1] + }; + } + else { + CstyleBehaviour.recordMaybeInsert(editor, session, "{"); + return { + text: '{', + selection: [1, 1] + }; + } + } + } + else if (text == '}') { + initContext(editor); + var rightChar = line.substring(cursor.column, cursor.column + 1); + if (rightChar == '}') { + var matching = session.$findOpeningBracket('}', { column: cursor.column + 1, row: cursor.row }); + if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { + CstyleBehaviour.popAutoInsertedClosing(); + return { + text: '', + selection: [1, 1] + }; + } + } + } + else if (text == "\n" || text == "\r\n") { + initContext(editor); + var closing = ""; + if (CstyleBehaviour.isMaybeInsertedClosing(cursor, line)) { + closing = lang.stringRepeat("}", context.maybeInsertedBrackets); + CstyleBehaviour.clearMaybeInsertedClosing(); + } + var rightChar = line.substring(cursor.column, cursor.column + 1); + if (rightChar === '}') { + var openBracePos = session.findMatchingBracket({ row: cursor.row, column: cursor.column + 1 }, '}'); + if (!openBracePos) + return null; + var next_indent = this.$getIndent(session.getLine(openBracePos.row)); + } + else if (closing) { + var next_indent = this.$getIndent(line); + } + else { + CstyleBehaviour.clearMaybeInsertedClosing(); + return; + } + var indent = next_indent + session.getTabString(); + return { + text: '\n' + indent + '\n' + next_indent + closing, + selection: [1, indent.length, 1, indent.length] + }; + } + else { + CstyleBehaviour.clearMaybeInsertedClosing(); + } + }); + this.add("braces", "deletion", function (state, action, editor, session, range) { + var selected = session.doc.getTextRange(range); + if (!range.isMultiLine() && selected == '{') { + initContext(editor); + var line = session.doc.getLine(range.start.row); + var rightChar = line.substring(range.end.column, range.end.column + 1); + if (rightChar == '}') { + range.end.column++; + return range; + } + else { + context.maybeInsertedBrackets--; + } + } + }); + this.add("parens", "insertion", function (state, action, editor, session, text) { + if (text == '(') { + initContext(editor); + var selection = editor.getSelectionRange(); + var selected = session.doc.getTextRange(selection); + if (selected !== "" && editor.getWrapBehavioursEnabled()) { + return getWrapped(selection, selected, '(', ')'); + } + else if (CstyleBehaviour.isSaneInsertion(editor, session)) { + CstyleBehaviour.recordAutoInsert(editor, session, ")"); + return { + text: '()', + selection: [1, 1] + }; + } + } + else if (text == ')') { + initContext(editor); + var cursor = editor.getCursorPosition(); + var line = session.doc.getLine(cursor.row); + var rightChar = line.substring(cursor.column, cursor.column + 1); + if (rightChar == ')') { + var matching = session.$findOpeningBracket(')', { column: cursor.column + 1, row: cursor.row }); + if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { + CstyleBehaviour.popAutoInsertedClosing(); + return { + text: '', + selection: [1, 1] + }; + } + } + } + }); + this.add("parens", "deletion", function (state, action, editor, session, range) { + var selected = session.doc.getTextRange(range); + if (!range.isMultiLine() && selected == '(') { + initContext(editor); + var line = session.doc.getLine(range.start.row); + var rightChar = line.substring(range.start.column + 1, range.start.column + 2); + if (rightChar == ')') { + range.end.column++; + return range; + } + } + }); + this.add("brackets", "insertion", function (state, action, editor, session, text) { + if (text == '[') { + initContext(editor); + var selection = editor.getSelectionRange(); + var selected = session.doc.getTextRange(selection); + if (selected !== "" && editor.getWrapBehavioursEnabled()) { + return getWrapped(selection, selected, '[', ']'); + } + else if (CstyleBehaviour.isSaneInsertion(editor, session)) { + CstyleBehaviour.recordAutoInsert(editor, session, "]"); + return { + text: '[]', + selection: [1, 1] + }; + } + } + else if (text == ']') { + initContext(editor); + var cursor = editor.getCursorPosition(); + var line = session.doc.getLine(cursor.row); + var rightChar = line.substring(cursor.column, cursor.column + 1); + if (rightChar == ']') { + var matching = session.$findOpeningBracket(']', { column: cursor.column + 1, row: cursor.row }); + if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { + CstyleBehaviour.popAutoInsertedClosing(); + return { + text: '', + selection: [1, 1] + }; + } + } + } + }); + this.add("brackets", "deletion", function (state, action, editor, session, range) { + var selected = session.doc.getTextRange(range); + if (!range.isMultiLine() && selected == '[') { + initContext(editor); + var line = session.doc.getLine(range.start.row); + var rightChar = line.substring(range.start.column + 1, range.start.column + 2); + if (rightChar == ']') { + range.end.column++; + return range; + } + } + }); + this.add("string_dquotes", "insertion", function (state, action, editor, session, text) { + var quotes = session.$mode.$quotes || defaultQuotes; + if (text.length == 1 && quotes[text]) { + if (this.lineCommentStart && this.lineCommentStart.indexOf(text) != -1) + return; + initContext(editor); + var quote = text; + var selection = editor.getSelectionRange(); + var selected = session.doc.getTextRange(selection); + if (selected !== "" && (selected.length != 1 || !quotes[selected]) && editor.getWrapBehavioursEnabled()) { + return getWrapped(selection, selected, quote, quote); + } + else if (!selected) { + var cursor = editor.getCursorPosition(); + var line = session.doc.getLine(cursor.row); + var leftChar = line.substring(cursor.column - 1, cursor.column); + var rightChar = line.substring(cursor.column, cursor.column + 1); + var token = session.getTokenAt(cursor.row, cursor.column); + var rightToken = session.getTokenAt(cursor.row, cursor.column + 1); + if (leftChar == "\\" && token && /escape/.test(token.type)) + return null; + var stringBefore = token && /string|escape/.test(token.type); + var stringAfter = !rightToken || /string|escape/.test(rightToken.type); + var pair; + if (rightChar == quote) { + pair = stringBefore !== stringAfter; + if (pair && /string\.end/.test(rightToken.type)) + pair = false; + } + else { + if (stringBefore && !stringAfter) + return null; // wrap string with different quote + if (stringBefore && stringAfter) + return null; // do not pair quotes inside strings + var wordRe = session.$mode.tokenRe; + wordRe.lastIndex = 0; + var isWordBefore = wordRe.test(leftChar); + wordRe.lastIndex = 0; + var isWordAfter = wordRe.test(rightChar); + var pairQuotesAfter = session.$mode.$pairQuotesAfter; + var shouldPairQuotes = pairQuotesAfter && pairQuotesAfter[quote] && pairQuotesAfter[quote].test(leftChar); + if ((!shouldPairQuotes && isWordBefore) || isWordAfter) + return null; // before or after alphanumeric + if (rightChar && !/[\s;,.})\]\\]/.test(rightChar)) + return null; // there is rightChar and it isn't closing + var charBefore = line[cursor.column - 2]; + if (leftChar == quote && (charBefore == quote || wordRe.test(charBefore))) + return null; + pair = true; + } + return { + text: pair ? quote + quote : "", + selection: [1, 1] + }; + } + } + }); + this.add("string_dquotes", "deletion", function (state, action, editor, session, range) { + var quotes = session.$mode.$quotes || defaultQuotes; + var selected = session.doc.getTextRange(range); + if (!range.isMultiLine() && quotes.hasOwnProperty(selected)) { + initContext(editor); + var line = session.doc.getLine(range.start.row); + var rightChar = line.substring(range.start.column + 1, range.start.column + 2); + if (rightChar == selected) { + range.end.column++; + return range; + } + } + }); + if (options.closeDocComment !== false) { + this.add("doc comment end", "insertion", function (state, action, editor, session, text) { + if (state === "doc-start" && (text === "\n" || text === "\r\n") && editor.selection.isEmpty()) { + var cursor = editor.getCursorPosition(); + var line = session.doc.getLine(cursor.row); + var nextLine = session.doc.getLine(cursor.row + 1); + var indent = this.$getIndent(line); + if (/\s*\*/.test(nextLine)) { + if (/^\s*\*/.test(line)) { + return { + text: text + indent + "* ", + selection: [1, 3 + indent.length, 1, 3 + indent.length] + }; + } + else { + return { + text: text + indent + " * ", + selection: [1, 3 + indent.length, 1, 3 + indent.length] + }; + } + } + if (/\/\*\*/.test(line.substring(0, cursor.column))) { + return { + text: text + indent + " * " + text + " " + indent + "*/", + selection: [1, 4 + indent.length, 1, 4 + indent.length] + }; + } + } + }); + } +}; +CstyleBehaviour.isSaneInsertion = function (editor, session) { + var cursor = editor.getCursorPosition(); + var iterator = new TokenIterator(session, cursor.row, cursor.column); + if (!this.$matchTokenType(iterator.getCurrentToken() || "text", SAFE_INSERT_IN_TOKENS)) { + if (/[)}\]]/.test(editor.session.getLine(cursor.row)[cursor.column])) + return true; + var iterator2 = new TokenIterator(session, cursor.row, cursor.column + 1); + if (!this.$matchTokenType(iterator2.getCurrentToken() || "text", SAFE_INSERT_IN_TOKENS)) + return false; + } + iterator.stepForward(); + return iterator.getCurrentTokenRow() !== cursor.row || + this.$matchTokenType(iterator.getCurrentToken() || "text", SAFE_INSERT_BEFORE_TOKENS); +}; +CstyleBehaviour.$matchTokenType = function (token, types) { + return types.indexOf(token.type || token) > -1; +}; +CstyleBehaviour.recordAutoInsert = function (editor, session, bracket) { + var cursor = editor.getCursorPosition(); + var line = session.doc.getLine(cursor.row); + if (!this.isAutoInsertedClosing(cursor, line, context.autoInsertedLineEnd[0])) + context.autoInsertedBrackets = 0; + context.autoInsertedRow = cursor.row; + context.autoInsertedLineEnd = bracket + line.substr(cursor.column); + context.autoInsertedBrackets++; +}; +CstyleBehaviour.recordMaybeInsert = function (editor, session, bracket) { + var cursor = editor.getCursorPosition(); + var line = session.doc.getLine(cursor.row); + if (!this.isMaybeInsertedClosing(cursor, line)) + context.maybeInsertedBrackets = 0; + context.maybeInsertedRow = cursor.row; + context.maybeInsertedLineStart = line.substr(0, cursor.column) + bracket; + context.maybeInsertedLineEnd = line.substr(cursor.column); + context.maybeInsertedBrackets++; +}; +CstyleBehaviour.isAutoInsertedClosing = function (cursor, line, bracket) { + return context.autoInsertedBrackets > 0 && + cursor.row === context.autoInsertedRow && + bracket === context.autoInsertedLineEnd[0] && + line.substr(cursor.column) === context.autoInsertedLineEnd; +}; +CstyleBehaviour.isMaybeInsertedClosing = function (cursor, line) { + return context.maybeInsertedBrackets > 0 && + cursor.row === context.maybeInsertedRow && + line.substr(cursor.column) === context.maybeInsertedLineEnd && + line.substr(0, cursor.column) == context.maybeInsertedLineStart; +}; +CstyleBehaviour.popAutoInsertedClosing = function () { + context.autoInsertedLineEnd = context.autoInsertedLineEnd.substr(1); + context.autoInsertedBrackets--; +}; +CstyleBehaviour.clearMaybeInsertedClosing = function () { + if (context) { + context.maybeInsertedBrackets = 0; + context.maybeInsertedRow = -1; + } +}; +oop.inherits(CstyleBehaviour, Behaviour); +exports.CstyleBehaviour = CstyleBehaviour; + +}); + +ace.define("ace/unicode",["require","exports","module"], function(require, exports, module){"use strict"; +var wordChars = [48, 9, 8, 25, 5, 0, 2, 25, 48, 0, 11, 0, 5, 0, 6, 22, 2, 30, 2, 457, 5, 11, 15, 4, 8, 0, 2, 0, 18, 116, 2, 1, 3, 3, 9, 0, 2, 2, 2, 0, 2, 19, 2, 82, 2, 138, 2, 4, 3, 155, 12, 37, 3, 0, 8, 38, 10, 44, 2, 0, 2, 1, 2, 1, 2, 0, 9, 26, 6, 2, 30, 10, 7, 61, 2, 9, 5, 101, 2, 7, 3, 9, 2, 18, 3, 0, 17, 58, 3, 100, 15, 53, 5, 0, 6, 45, 211, 57, 3, 18, 2, 5, 3, 11, 3, 9, 2, 1, 7, 6, 2, 2, 2, 7, 3, 1, 3, 21, 2, 6, 2, 0, 4, 3, 3, 8, 3, 1, 3, 3, 9, 0, 5, 1, 2, 4, 3, 11, 16, 2, 2, 5, 5, 1, 3, 21, 2, 6, 2, 1, 2, 1, 2, 1, 3, 0, 2, 4, 5, 1, 3, 2, 4, 0, 8, 3, 2, 0, 8, 15, 12, 2, 2, 8, 2, 2, 2, 21, 2, 6, 2, 1, 2, 4, 3, 9, 2, 2, 2, 2, 3, 0, 16, 3, 3, 9, 18, 2, 2, 7, 3, 1, 3, 21, 2, 6, 2, 1, 2, 4, 3, 8, 3, 1, 3, 2, 9, 1, 5, 1, 2, 4, 3, 9, 2, 0, 17, 1, 2, 5, 4, 2, 2, 3, 4, 1, 2, 0, 2, 1, 4, 1, 4, 2, 4, 11, 5, 4, 4, 2, 2, 3, 3, 0, 7, 0, 15, 9, 18, 2, 2, 7, 2, 2, 2, 22, 2, 9, 2, 4, 4, 7, 2, 2, 2, 3, 8, 1, 2, 1, 7, 3, 3, 9, 19, 1, 2, 7, 2, 2, 2, 22, 2, 9, 2, 4, 3, 8, 2, 2, 2, 3, 8, 1, 8, 0, 2, 3, 3, 9, 19, 1, 2, 7, 2, 2, 2, 22, 2, 15, 4, 7, 2, 2, 2, 3, 10, 0, 9, 3, 3, 9, 11, 5, 3, 1, 2, 17, 4, 23, 2, 8, 2, 0, 3, 6, 4, 0, 5, 5, 2, 0, 2, 7, 19, 1, 14, 57, 6, 14, 2, 9, 40, 1, 2, 0, 3, 1, 2, 0, 3, 0, 7, 3, 2, 6, 2, 2, 2, 0, 2, 0, 3, 1, 2, 12, 2, 2, 3, 4, 2, 0, 2, 5, 3, 9, 3, 1, 35, 0, 24, 1, 7, 9, 12, 0, 2, 0, 2, 0, 5, 9, 2, 35, 5, 19, 2, 5, 5, 7, 2, 35, 10, 0, 58, 73, 7, 77, 3, 37, 11, 42, 2, 0, 4, 328, 2, 3, 3, 6, 2, 0, 2, 3, 3, 40, 2, 3, 3, 32, 2, 3, 3, 6, 2, 0, 2, 3, 3, 14, 2, 56, 2, 3, 3, 66, 5, 0, 33, 15, 17, 84, 13, 619, 3, 16, 2, 25, 6, 74, 22, 12, 2, 6, 12, 20, 12, 19, 13, 12, 2, 2, 2, 1, 13, 51, 3, 29, 4, 0, 5, 1, 3, 9, 34, 2, 3, 9, 7, 87, 9, 42, 6, 69, 11, 28, 4, 11, 5, 11, 11, 39, 3, 4, 12, 43, 5, 25, 7, 10, 38, 27, 5, 62, 2, 28, 3, 10, 7, 9, 14, 0, 89, 75, 5, 9, 18, 8, 13, 42, 4, 11, 71, 55, 9, 9, 4, 48, 83, 2, 2, 30, 14, 230, 23, 280, 3, 5, 3, 37, 3, 5, 3, 7, 2, 0, 2, 0, 2, 0, 2, 30, 3, 52, 2, 6, 2, 0, 4, 2, 2, 6, 4, 3, 3, 5, 5, 12, 6, 2, 2, 6, 67, 1, 20, 0, 29, 0, 14, 0, 17, 4, 60, 12, 5, 0, 4, 11, 18, 0, 5, 0, 3, 9, 2, 0, 4, 4, 7, 0, 2, 0, 2, 0, 2, 3, 2, 10, 3, 3, 6, 4, 5, 0, 53, 1, 2684, 46, 2, 46, 2, 132, 7, 6, 15, 37, 11, 53, 10, 0, 17, 22, 10, 6, 2, 6, 2, 6, 2, 6, 2, 6, 2, 6, 2, 6, 2, 6, 2, 31, 48, 0, 470, 1, 36, 5, 2, 4, 6, 1, 5, 85, 3, 1, 3, 2, 2, 89, 2, 3, 6, 40, 4, 93, 18, 23, 57, 15, 513, 6581, 75, 20939, 53, 1164, 68, 45, 3, 268, 4, 27, 21, 31, 3, 13, 13, 1, 2, 24, 9, 69, 11, 1, 38, 8, 3, 102, 3, 1, 111, 44, 25, 51, 13, 68, 12, 9, 7, 23, 4, 0, 5, 45, 3, 35, 13, 28, 4, 64, 15, 10, 39, 54, 10, 13, 3, 9, 7, 22, 4, 1, 5, 66, 25, 2, 227, 42, 2, 1, 3, 9, 7, 11171, 13, 22, 5, 48, 8453, 301, 3, 61, 3, 105, 39, 6, 13, 4, 6, 11, 2, 12, 2, 4, 2, 0, 2, 1, 2, 1, 2, 107, 34, 362, 19, 63, 3, 53, 41, 11, 5, 15, 17, 6, 13, 1, 25, 2, 33, 4, 2, 134, 20, 9, 8, 25, 5, 0, 2, 25, 12, 88, 4, 5, 3, 5, 3, 5, 3, 2]; +var code = 0; +var str = []; +for (var i = 0; i < wordChars.length; i += 2) { + str.push(code += wordChars[i]); + if (wordChars[i + 1]) + str.push(45, code += wordChars[i + 1]); +} +exports.wordChars = String.fromCharCode.apply(null, str); + +}); + +ace.define("ace/mode/text",["require","exports","module","ace/config","ace/tokenizer","ace/mode/text_highlight_rules","ace/mode/behaviour/cstyle","ace/unicode","ace/lib/lang","ace/token_iterator","ace/range"], function(require, exports, module){"use strict"; +var config = require("../config"); +var Tokenizer = require("../tokenizer").Tokenizer; +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; +var unicode = require("../unicode"); +var lang = require("../lib/lang"); +var TokenIterator = require("../token_iterator").TokenIterator; +var Range = require("../range").Range; +var Mode = function () { + this.HighlightRules = TextHighlightRules; +}; +(function () { + this.$defaultBehaviour = new CstyleBehaviour(); + this.tokenRe = new RegExp("^[" + unicode.wordChars + "\\$_]+", "g"); + this.nonTokenRe = new RegExp("^(?:[^" + unicode.wordChars + "\\$_]|\\s])+", "g"); + this.getTokenizer = function () { + if (!this.$tokenizer) { + this.$highlightRules = this.$highlightRules || new this.HighlightRules(this.$highlightRuleConfig); + this.$tokenizer = new Tokenizer(this.$highlightRules.getRules()); + } + return this.$tokenizer; + }; + this.lineCommentStart = ""; + this.blockComment = ""; + this.toggleCommentLines = function (state, session, startRow, endRow) { + var doc = session.doc; + var ignoreBlankLines = true; + var shouldRemove = true; + var minIndent = Infinity; + var tabSize = session.getTabSize(); + var insertAtTabStop = false; + if (!this.lineCommentStart) { + if (!this.blockComment) + return false; + var lineCommentStart = this.blockComment.start; + var lineCommentEnd = this.blockComment.end; + var regexpStart = new RegExp("^(\\s*)(?:" + lang.escapeRegExp(lineCommentStart) + ")"); + var regexpEnd = new RegExp("(?:" + lang.escapeRegExp(lineCommentEnd) + ")\\s*$"); + var comment = function (line, i) { + if (testRemove(line, i)) + return; + if (!ignoreBlankLines || /\S/.test(line)) { + doc.insertInLine({ row: i, column: line.length }, lineCommentEnd); + doc.insertInLine({ row: i, column: minIndent }, lineCommentStart); + } + }; + var uncomment = function (line, i) { + var m; + if (m = line.match(regexpEnd)) + doc.removeInLine(i, line.length - m[0].length, line.length); + if (m = line.match(regexpStart)) + doc.removeInLine(i, m[1].length, m[0].length); + }; + var testRemove = function (line, row) { + if (regexpStart.test(line)) + return true; + var tokens = session.getTokens(row); + for (var i = 0; i < tokens.length; i++) { + if (tokens[i].type === "comment") + return true; + } + }; + } + else { + if (Array.isArray(this.lineCommentStart)) { + var regexpStart = this.lineCommentStart.map(lang.escapeRegExp).join("|"); + var lineCommentStart = this.lineCommentStart[0]; + } + else { + var regexpStart = lang.escapeRegExp(this.lineCommentStart); + var lineCommentStart = this.lineCommentStart; + } + regexpStart = new RegExp("^(\\s*)(?:" + regexpStart + ") ?"); + insertAtTabStop = session.getUseSoftTabs(); + var uncomment = function (line, i) { + var m = line.match(regexpStart); + if (!m) + return; + var start = m[1].length, end = m[0].length; + if (!shouldInsertSpace(line, start, end) && m[0][end - 1] == " ") + end--; + doc.removeInLine(i, start, end); + }; + var commentWithSpace = lineCommentStart + " "; + var comment = function (line, i) { + if (!ignoreBlankLines || /\S/.test(line)) { + if (shouldInsertSpace(line, minIndent, minIndent)) + doc.insertInLine({ row: i, column: minIndent }, commentWithSpace); + else + doc.insertInLine({ row: i, column: minIndent }, lineCommentStart); + } + }; + var testRemove = function (line, i) { + return regexpStart.test(line); + }; + var shouldInsertSpace = function (line, before, after) { + var spaces = 0; + while (before-- && line.charAt(before) == " ") + spaces++; + if (spaces % tabSize != 0) + return false; + var spaces = 0; + while (line.charAt(after++) == " ") + spaces++; + if (tabSize > 2) + return spaces % tabSize != tabSize - 1; + else + return spaces % tabSize == 0; + }; + } + function iter(fun) { + for (var i = startRow; i <= endRow; i++) + fun(doc.getLine(i), i); + } + var minEmptyLength = Infinity; + iter(function (line, i) { + var indent = line.search(/\S/); + if (indent !== -1) { + if (indent < minIndent) + minIndent = indent; + if (shouldRemove && !testRemove(line, i)) + shouldRemove = false; + } + else if (minEmptyLength > line.length) { + minEmptyLength = line.length; + } + }); + if (minIndent == Infinity) { + minIndent = minEmptyLength; + ignoreBlankLines = false; + shouldRemove = false; + } + if (insertAtTabStop && minIndent % tabSize != 0) + minIndent = Math.floor(minIndent / tabSize) * tabSize; + iter(shouldRemove ? uncomment : comment); + }; + this.toggleBlockComment = function (state, session, range, cursor) { + var comment = this.blockComment; + if (!comment) + return; + if (!comment.start && comment[0]) + comment = comment[0]; + var iterator = new TokenIterator(session, cursor.row, cursor.column); + var token = iterator.getCurrentToken(); + var sel = session.selection; + var initialRange = session.selection.toOrientedRange(); + var startRow, colDiff; + if (token && /comment/.test(token.type)) { + var startRange, endRange; + while (token && /comment/.test(token.type)) { + var i = token.value.indexOf(comment.start); + if (i != -1) { + var row = iterator.getCurrentTokenRow(); + var column = iterator.getCurrentTokenColumn() + i; + startRange = new Range(row, column, row, column + comment.start.length); + break; + } + token = iterator.stepBackward(); + } + var iterator = new TokenIterator(session, cursor.row, cursor.column); + var token = iterator.getCurrentToken(); + while (token && /comment/.test(token.type)) { + var i = token.value.indexOf(comment.end); + if (i != -1) { + var row = iterator.getCurrentTokenRow(); + var column = iterator.getCurrentTokenColumn() + i; + endRange = new Range(row, column, row, column + comment.end.length); + break; + } + token = iterator.stepForward(); + } + if (endRange) + session.remove(endRange); + if (startRange) { + session.remove(startRange); + startRow = startRange.start.row; + colDiff = -comment.start.length; + } + } + else { + colDiff = comment.start.length; + startRow = range.start.row; + session.insert(range.end, comment.end); + session.insert(range.start, comment.start); + } + if (initialRange.start.row == startRow) + initialRange.start.column += colDiff; + if (initialRange.end.row == startRow) + initialRange.end.column += colDiff; + session.selection.fromOrientedRange(initialRange); + }; + this.getNextLineIndent = function (state, line, tab) { + return this.$getIndent(line); + }; + this.checkOutdent = function (state, line, input) { + return false; + }; + this.autoOutdent = function (state, doc, row) { + }; + this.$getIndent = function (line) { + return line.match(/^\s*/)[0]; + }; + this.createWorker = function (session) { + return null; + }; + this.createModeDelegates = function (mapping) { + this.$embeds = []; + this.$modes = {}; + for (var i in mapping) { + if (mapping[i]) { + var Mode = mapping[i]; + var id = Mode.prototype.$id; + var mode = config.$modes[id]; + if (!mode) + config.$modes[id] = mode = new Mode(); + if (!config.$modes[i]) + config.$modes[i] = mode; + this.$embeds.push(i); + this.$modes[i] = mode; + } + } + var delegations = ["toggleBlockComment", "toggleCommentLines", "getNextLineIndent", + "checkOutdent", "autoOutdent", "transformAction", "getCompletions"]; + for (var i = 0; i < delegations.length; i++) { + (function (scope) { + var functionName = delegations[i]; + var defaultHandler = scope[functionName]; + scope[delegations[i]] = function () { + return this.$delegator(functionName, arguments, defaultHandler); + }; + }(this)); + } + }; + this.$delegator = function (method, args, defaultHandler) { + var state = args[0] || "start"; + if (typeof state != "string") { + if (Array.isArray(state[2])) { + var language = state[2][state[2].length - 1]; + var mode = this.$modes[language]; + if (mode) + return mode[method].apply(mode, [state[1]].concat([].slice.call(args, 1))); + } + state = state[0] || "start"; + } + for (var i = 0; i < this.$embeds.length; i++) { + if (!this.$modes[this.$embeds[i]]) + continue; + var split = state.split(this.$embeds[i]); + if (!split[0] && split[1]) { + args[0] = split[1]; + var mode = this.$modes[this.$embeds[i]]; + return mode[method].apply(mode, args); + } + } + var ret = defaultHandler.apply(this, args); + return defaultHandler ? ret : undefined; + }; + this.transformAction = function (state, action, editor, session, param) { + if (this.$behaviour) { + var behaviours = this.$behaviour.getBehaviours(); + for (var key in behaviours) { + if (behaviours[key][action]) { + var ret = behaviours[key][action].apply(this, arguments); + if (ret) { + return ret; + } + } + } + } + }; + this.getKeywords = function (append) { + if (!this.completionKeywords) { + var rules = this.$tokenizer.rules; + var completionKeywords = []; + for (var rule in rules) { + var ruleItr = rules[rule]; + for (var r = 0, l = ruleItr.length; r < l; r++) { + if (typeof ruleItr[r].token === "string") { + if (/keyword|support|storage/.test(ruleItr[r].token)) + completionKeywords.push(ruleItr[r].regex); + } + else if (typeof ruleItr[r].token === "object") { + for (var a = 0, aLength = ruleItr[r].token.length; a < aLength; a++) { + if (/keyword|support|storage/.test(ruleItr[r].token[a])) { + var rule = ruleItr[r].regex.match(/\(.+?\)/g)[a]; + completionKeywords.push(rule.substr(1, rule.length - 2)); + } + } + } + } + } + this.completionKeywords = completionKeywords; + } + if (!append) + return this.$keywordList; + return completionKeywords.concat(this.$keywordList || []); + }; + this.$createKeywordList = function () { + if (!this.$highlightRules) + this.getTokenizer(); + return this.$keywordList = this.$highlightRules.$keywordList || []; + }; + this.getCompletions = function (state, session, pos, prefix) { + var keywords = this.$keywordList || this.$createKeywordList(); + return keywords.map(function (word) { + return { + name: word, + value: word, + score: 0, + meta: "keyword" + }; + }); + }; + this.$id = "ace/mode/text"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); + +ace.define("ace/apply_delta",["require","exports","module"], function(require, exports, module){"use strict"; +function throwDeltaError(delta, errorText) { + console.log("Invalid Delta:", delta); + throw "Invalid Delta: " + errorText; +} +function positionInDocument(docLines, position) { + return position.row >= 0 && position.row < docLines.length && + position.column >= 0 && position.column <= docLines[position.row].length; +} +function validateDelta(docLines, delta) { + if (delta.action != "insert" && delta.action != "remove") + throwDeltaError(delta, "delta.action must be 'insert' or 'remove'"); + if (!(delta.lines instanceof Array)) + throwDeltaError(delta, "delta.lines must be an Array"); + if (!delta.start || !delta.end) + throwDeltaError(delta, "delta.start/end must be an present"); + var start = delta.start; + if (!positionInDocument(docLines, delta.start)) + throwDeltaError(delta, "delta.start must be contained in document"); + var end = delta.end; + if (delta.action == "remove" && !positionInDocument(docLines, end)) + throwDeltaError(delta, "delta.end must contained in document for 'remove' actions"); + var numRangeRows = end.row - start.row; + var numRangeLastLineChars = (end.column - (numRangeRows == 0 ? start.column : 0)); + if (numRangeRows != delta.lines.length - 1 || delta.lines[numRangeRows].length != numRangeLastLineChars) + throwDeltaError(delta, "delta.range must match delta lines"); +} +exports.applyDelta = function (docLines, delta, doNotValidate) { + var row = delta.start.row; + var startColumn = delta.start.column; + var line = docLines[row] || ""; + switch (delta.action) { + case "insert": + var lines = delta.lines; + if (lines.length === 1) { + docLines[row] = line.substring(0, startColumn) + delta.lines[0] + line.substring(startColumn); + } + else { + var args = [row, 1].concat(delta.lines); + docLines.splice.apply(docLines, args); + docLines[row] = line.substring(0, startColumn) + docLines[row]; + docLines[row + delta.lines.length - 1] += line.substring(startColumn); + } + break; + case "remove": + var endColumn = delta.end.column; + var endRow = delta.end.row; + if (row === endRow) { + docLines[row] = line.substring(0, startColumn) + line.substring(endColumn); + } + else { + docLines.splice(row, endRow - row + 1, line.substring(0, startColumn) + docLines[endRow].substring(endColumn)); + } + break; + } +}; + +}); + +ace.define("ace/anchor",["require","exports","module","ace/lib/oop","ace/lib/event_emitter"], function(require, exports, module){"use strict"; +var oop = require("./lib/oop"); +var EventEmitter = require("./lib/event_emitter").EventEmitter; +var Anchor = /** @class */ (function () { + function Anchor(doc, row, column) { + this.$onChange = this.onChange.bind(this); + this.attach(doc); + if (typeof column == "undefined") + this.setPosition(row.row, row.column); + else + this.setPosition(row, column); + } + Anchor.prototype.getPosition = function () { + return this.$clipPositionToDocument(this.row, this.column); + }; + Anchor.prototype.getDocument = function () { + return this.document; + }; + Anchor.prototype.onChange = function (delta) { + if (delta.start.row == delta.end.row && delta.start.row != this.row) + return; + if (delta.start.row > this.row) + return; + var point = $getTransformedPoint(delta, { row: this.row, column: this.column }, this.$insertRight); + this.setPosition(point.row, point.column, true); + }; + Anchor.prototype.setPosition = function (row, column, noClip) { + var pos; + if (noClip) { + pos = { + row: row, + column: column + }; + } + else { + pos = this.$clipPositionToDocument(row, column); + } + if (this.row == pos.row && this.column == pos.column) + return; + var old = { + row: this.row, + column: this.column + }; + this.row = pos.row; + this.column = pos.column; + this._signal("change", { + old: old, + value: pos + }); + }; + Anchor.prototype.detach = function () { + this.document.off("change", this.$onChange); + }; + Anchor.prototype.attach = function (doc) { + this.document = doc || this.document; + this.document.on("change", this.$onChange); + }; + Anchor.prototype.$clipPositionToDocument = function (row, column) { + var pos = {}; + if (row >= this.document.getLength()) { + pos.row = Math.max(0, this.document.getLength() - 1); + pos.column = this.document.getLine(pos.row).length; + } + else if (row < 0) { + pos.row = 0; + pos.column = 0; + } + else { + pos.row = row; + pos.column = Math.min(this.document.getLine(pos.row).length, Math.max(0, column)); + } + if (column < 0) + pos.column = 0; + return pos; + }; + return Anchor; +}()); +Anchor.prototype.$insertRight = false; +oop.implement(Anchor.prototype, EventEmitter); +function $pointsInOrder(point1, point2, equalPointsInOrder) { + var bColIsAfter = equalPointsInOrder ? point1.column <= point2.column : point1.column < point2.column; + return (point1.row < point2.row) || (point1.row == point2.row && bColIsAfter); +} +function $getTransformedPoint(delta, point, moveIfEqual) { + var deltaIsInsert = delta.action == "insert"; + var deltaRowShift = (deltaIsInsert ? 1 : -1) * (delta.end.row - delta.start.row); + var deltaColShift = (deltaIsInsert ? 1 : -1) * (delta.end.column - delta.start.column); + var deltaStart = delta.start; + var deltaEnd = deltaIsInsert ? deltaStart : delta.end; // Collapse insert range. + if ($pointsInOrder(point, deltaStart, moveIfEqual)) { + return { + row: point.row, + column: point.column + }; + } + if ($pointsInOrder(deltaEnd, point, !moveIfEqual)) { + return { + row: point.row + deltaRowShift, + column: point.column + (point.row == deltaEnd.row ? deltaColShift : 0) + }; + } + return { + row: deltaStart.row, + column: deltaStart.column + }; +} +exports.Anchor = Anchor; + +}); + +ace.define("ace/document",["require","exports","module","ace/lib/oop","ace/apply_delta","ace/lib/event_emitter","ace/range","ace/anchor"], function(require, exports, module){"use strict"; +var oop = require("./lib/oop"); +var applyDelta = require("./apply_delta").applyDelta; +var EventEmitter = require("./lib/event_emitter").EventEmitter; +var Range = require("./range").Range; +var Anchor = require("./anchor").Anchor; +var Document = /** @class */ (function () { + function Document(textOrLines) { + this.$lines = [""]; + if (textOrLines.length === 0) { + this.$lines = [""]; + } + else if (Array.isArray(textOrLines)) { + this.insertMergedLines({ row: 0, column: 0 }, textOrLines); + } + else { + this.insert({ row: 0, column: 0 }, textOrLines); + } + } + Document.prototype.setValue = function (text) { + var len = this.getLength() - 1; + this.remove(new Range(0, 0, len, this.getLine(len).length)); + this.insert({ row: 0, column: 0 }, text || ""); + }; + Document.prototype.getValue = function () { + return this.getAllLines().join(this.getNewLineCharacter()); + }; + Document.prototype.createAnchor = function (row, column) { + return new Anchor(this, row, column); + }; + Document.prototype.$detectNewLine = function (text) { + var match = text.match(/^.*?(\r\n|\r|\n)/m); + this.$autoNewLine = match ? match[1] : "\n"; + this._signal("changeNewLineMode"); + }; + Document.prototype.getNewLineCharacter = function () { + switch (this.$newLineMode) { + case "windows": + return "\r\n"; + case "unix": + return "\n"; + default: + return this.$autoNewLine || "\n"; + } + }; + Document.prototype.setNewLineMode = function (newLineMode) { + if (this.$newLineMode === newLineMode) + return; + this.$newLineMode = newLineMode; + this._signal("changeNewLineMode"); + }; + Document.prototype.getNewLineMode = function () { + return this.$newLineMode; + }; + Document.prototype.isNewLine = function (text) { + return (text == "\r\n" || text == "\r" || text == "\n"); + }; + Document.prototype.getLine = function (row) { + return this.$lines[row] || ""; + }; + Document.prototype.getLines = function (firstRow, lastRow) { + return this.$lines.slice(firstRow, lastRow + 1); + }; + Document.prototype.getAllLines = function () { + return this.getLines(0, this.getLength()); + }; + Document.prototype.getLength = function () { + return this.$lines.length; + }; + Document.prototype.getTextRange = function (range) { + return this.getLinesForRange(range).join(this.getNewLineCharacter()); + }; + Document.prototype.getLinesForRange = function (range) { + var lines; + if (range.start.row === range.end.row) { + lines = [this.getLine(range.start.row).substring(range.start.column, range.end.column)]; + } + else { + lines = this.getLines(range.start.row, range.end.row); + lines[0] = (lines[0] || "").substring(range.start.column); + var l = lines.length - 1; + if (range.end.row - range.start.row == l) + lines[l] = lines[l].substring(0, range.end.column); + } + return lines; + }; + Document.prototype.insertLines = function (row, lines) { + console.warn("Use of document.insertLines is deprecated. Use the insertFullLines method instead."); + return this.insertFullLines(row, lines); + }; + Document.prototype.removeLines = function (firstRow, lastRow) { + console.warn("Use of document.removeLines is deprecated. Use the removeFullLines method instead."); + return this.removeFullLines(firstRow, lastRow); + }; + Document.prototype.insertNewLine = function (position) { + console.warn("Use of document.insertNewLine is deprecated. Use insertMergedLines(position, ['', '']) instead."); + return this.insertMergedLines(position, ["", ""]); + }; + Document.prototype.insert = function (position, text) { + if (this.getLength() <= 1) + this.$detectNewLine(text); + return this.insertMergedLines(position, this.$split(text)); + }; + Document.prototype.insertInLine = function (position, text) { + var start = this.clippedPos(position.row, position.column); + var end = this.pos(position.row, position.column + text.length); + this.applyDelta({ + start: start, + end: end, + action: "insert", + lines: [text] + }, true); + return this.clonePos(end); + }; + Document.prototype.clippedPos = function (row, column) { + var length = this.getLength(); + if (row === undefined) { + row = length; + } + else if (row < 0) { + row = 0; + } + else if (row >= length) { + row = length - 1; + column = undefined; + } + var line = this.getLine(row); + if (column == undefined) + column = line.length; + column = Math.min(Math.max(column, 0), line.length); + return { row: row, column: column }; + }; + Document.prototype.clonePos = function (pos) { + return { row: pos.row, column: pos.column }; + }; + Document.prototype.pos = function (row, column) { + return { row: row, column: column }; + }; + Document.prototype.$clipPosition = function (position) { + var length = this.getLength(); + if (position.row >= length) { + position.row = Math.max(0, length - 1); + position.column = this.getLine(length - 1).length; + } + else { + position.row = Math.max(0, position.row); + position.column = Math.min(Math.max(position.column, 0), this.getLine(position.row).length); + } + return position; + }; + Document.prototype.insertFullLines = function (row, lines) { + row = Math.min(Math.max(row, 0), this.getLength()); + var column = 0; + if (row < this.getLength()) { + lines = lines.concat([""]); + column = 0; + } + else { + lines = [""].concat(lines); + row--; + column = this.$lines[row].length; + } + this.insertMergedLines({ row: row, column: column }, lines); + }; + Document.prototype.insertMergedLines = function (position, lines) { + var start = this.clippedPos(position.row, position.column); + var end = { + row: start.row + lines.length - 1, + column: (lines.length == 1 ? start.column : 0) + lines[lines.length - 1].length + }; + this.applyDelta({ + start: start, + end: end, + action: "insert", + lines: lines + }); + return this.clonePos(end); + }; + Document.prototype.remove = function (range) { + var start = this.clippedPos(range.start.row, range.start.column); + var end = this.clippedPos(range.end.row, range.end.column); + this.applyDelta({ + start: start, + end: end, + action: "remove", + lines: this.getLinesForRange({ start: start, end: end }) + }); + return this.clonePos(start); + }; + Document.prototype.removeInLine = function (row, startColumn, endColumn) { + var start = this.clippedPos(row, startColumn); + var end = this.clippedPos(row, endColumn); + this.applyDelta({ + start: start, + end: end, + action: "remove", + lines: this.getLinesForRange({ start: start, end: end }) + }, true); + return this.clonePos(start); + }; + Document.prototype.removeFullLines = function (firstRow, lastRow) { + firstRow = Math.min(Math.max(0, firstRow), this.getLength() - 1); + lastRow = Math.min(Math.max(0, lastRow), this.getLength() - 1); + var deleteFirstNewLine = lastRow == this.getLength() - 1 && firstRow > 0; + var deleteLastNewLine = lastRow < this.getLength() - 1; + var startRow = (deleteFirstNewLine ? firstRow - 1 : firstRow); + var startCol = (deleteFirstNewLine ? this.getLine(startRow).length : 0); + var endRow = (deleteLastNewLine ? lastRow + 1 : lastRow); + var endCol = (deleteLastNewLine ? 0 : this.getLine(endRow).length); + var range = new Range(startRow, startCol, endRow, endCol); + var deletedLines = this.$lines.slice(firstRow, lastRow + 1); + this.applyDelta({ + start: range.start, + end: range.end, + action: "remove", + lines: this.getLinesForRange(range) + }); + return deletedLines; + }; + Document.prototype.removeNewLine = function (row) { + if (row < this.getLength() - 1 && row >= 0) { + this.applyDelta({ + start: this.pos(row, this.getLine(row).length), + end: this.pos(row + 1, 0), + action: "remove", + lines: ["", ""] + }); + } + }; + Document.prototype.replace = function (range, text) { + if (!(range instanceof Range)) + range = Range.fromPoints(range.start, range.end); + if (text.length === 0 && range.isEmpty()) + return range.start; + if (text == this.getTextRange(range)) + return range.end; + this.remove(range); + var end; + if (text) { + end = this.insert(range.start, text); + } + else { + end = range.start; + } + return end; + }; + Document.prototype.applyDeltas = function (deltas) { + for (var i = 0; i < deltas.length; i++) { + this.applyDelta(deltas[i]); + } + }; + Document.prototype.revertDeltas = function (deltas) { + for (var i = deltas.length - 1; i >= 0; i--) { + this.revertDelta(deltas[i]); + } + }; + Document.prototype.applyDelta = function (delta, doNotValidate) { + var isInsert = delta.action == "insert"; + if (isInsert ? delta.lines.length <= 1 && !delta.lines[0] + : !Range.comparePoints(delta.start, delta.end)) { + return; + } + if (isInsert && delta.lines.length > 20000) { + this.$splitAndapplyLargeDelta(delta, 20000); + } + else { + applyDelta(this.$lines, delta, doNotValidate); + this._signal("change", delta); + } + }; + Document.prototype.$safeApplyDelta = function (delta) { + var docLength = this.$lines.length; + if (delta.action == "remove" && delta.start.row < docLength && delta.end.row < docLength + || delta.action == "insert" && delta.start.row <= docLength) { + this.applyDelta(delta); + } + }; + Document.prototype.$splitAndapplyLargeDelta = function (delta, MAX) { + var lines = delta.lines; + var l = lines.length - MAX + 1; + var row = delta.start.row; + var column = delta.start.column; + for (var from = 0, to = 0; from < l; from = to) { + to += MAX - 1; + var chunk = lines.slice(from, to); + chunk.push(""); + this.applyDelta({ + start: this.pos(row + from, column), + end: this.pos(row + to, column = 0), + action: delta.action, + lines: chunk + }, true); + } + delta.lines = lines.slice(from); + delta.start.row = row + from; + delta.start.column = column; + this.applyDelta(delta, true); + }; + Document.prototype.revertDelta = function (delta) { + this.$safeApplyDelta({ + start: this.clonePos(delta.start), + end: this.clonePos(delta.end), + action: (delta.action == "insert" ? "remove" : "insert"), + lines: delta.lines.slice() + }); + }; + Document.prototype.indexToPosition = function (index, startRow) { + var lines = this.$lines || this.getAllLines(); + var newlineLength = this.getNewLineCharacter().length; + for (var i = startRow || 0, l = lines.length; i < l; i++) { + index -= lines[i].length + newlineLength; + if (index < 0) + return { row: i, column: index + lines[i].length + newlineLength }; + } + return { row: l - 1, column: index + lines[l - 1].length + newlineLength }; + }; + Document.prototype.positionToIndex = function (pos, startRow) { + var lines = this.$lines || this.getAllLines(); + var newlineLength = this.getNewLineCharacter().length; + var index = 0; + var row = Math.min(pos.row, lines.length); + for (var i = startRow || 0; i < row; ++i) + index += lines[i].length + newlineLength; + return index + pos.column; + }; + Document.prototype.$split = function (text) { + return text.split(/\r\n|\r|\n/); + }; + return Document; +}()); +Document.prototype.$autoNewLine = ""; +Document.prototype.$newLineMode = "auto"; +oop.implement(Document.prototype, EventEmitter); +exports.Document = Document; + +}); + +ace.define("ace/background_tokenizer",["require","exports","module","ace/lib/oop","ace/lib/event_emitter"], function(require, exports, module){"use strict"; +var oop = require("./lib/oop"); +var EventEmitter = require("./lib/event_emitter").EventEmitter; +var BackgroundTokenizer = /** @class */ (function () { + function BackgroundTokenizer(tokenizer, editor) { + this.running = false; + this.lines = []; + this.states = []; + this.currentLine = 0; + this.tokenizer = tokenizer; + var self = this; + this.$worker = function () { + if (!self.running) { + return; + } + var workerStart = new Date(); + var currentLine = self.currentLine; + var endLine = -1; + var doc = self.doc; + var startLine = currentLine; + while (self.lines[currentLine]) + currentLine++; + var len = doc.getLength(); + var processedLines = 0; + self.running = false; + while (currentLine < len) { + self.$tokenizeRow(currentLine); + endLine = currentLine; + do { + currentLine++; + } while (self.lines[currentLine]); + processedLines++; + if ((processedLines % 5 === 0) && (new Date() - workerStart) > 20) { + self.running = setTimeout(self.$worker, 20); + break; + } + } + self.currentLine = currentLine; + if (endLine == -1) + endLine = currentLine; + if (startLine <= endLine) + self.fireUpdateEvent(startLine, endLine); + }; + } + BackgroundTokenizer.prototype.setTokenizer = function (tokenizer) { + this.tokenizer = tokenizer; + this.lines = []; + this.states = []; + this.start(0); + }; + BackgroundTokenizer.prototype.setDocument = function (doc) { + this.doc = doc; + this.lines = []; + this.states = []; + this.stop(); + }; + BackgroundTokenizer.prototype.fireUpdateEvent = function (firstRow, lastRow) { + var data = { + first: firstRow, + last: lastRow + }; + this._signal("update", { data: data }); + }; + BackgroundTokenizer.prototype.start = function (startRow) { + this.currentLine = Math.min(startRow || 0, this.currentLine, this.doc.getLength()); + this.lines.splice(this.currentLine, this.lines.length); + this.states.splice(this.currentLine, this.states.length); + this.stop(); + this.running = setTimeout(this.$worker, 700); + }; + BackgroundTokenizer.prototype.scheduleStart = function () { + if (!this.running) + this.running = setTimeout(this.$worker, 700); + }; + BackgroundTokenizer.prototype.$updateOnChange = function (delta) { + var startRow = delta.start.row; + var len = delta.end.row - startRow; + if (len === 0) { + this.lines[startRow] = null; + } + else if (delta.action == "remove") { + this.lines.splice(startRow, len + 1, null); + this.states.splice(startRow, len + 1, null); + } + else { + var args = Array(len + 1); + args.unshift(startRow, 1); + this.lines.splice.apply(this.lines, args); + this.states.splice.apply(this.states, args); + } + this.currentLine = Math.min(startRow, this.currentLine, this.doc.getLength()); + this.stop(); + }; + BackgroundTokenizer.prototype.stop = function () { + if (this.running) + clearTimeout(this.running); + this.running = false; + }; + BackgroundTokenizer.prototype.getTokens = function (row) { + return this.lines[row] || this.$tokenizeRow(row); + }; + BackgroundTokenizer.prototype.getState = function (row) { + if (this.currentLine == row) + this.$tokenizeRow(row); + return this.states[row] || "start"; + }; + BackgroundTokenizer.prototype.$tokenizeRow = function (row) { + var line = this.doc.getLine(row); + var state = this.states[row - 1]; + var data = this.tokenizer.getLineTokens(line, state, row); + if (this.states[row] + "" !== data.state + "") { + this.states[row] = data.state; + this.lines[row + 1] = null; + if (this.currentLine > row + 1) + this.currentLine = row + 1; + } + else if (this.currentLine == row) { + this.currentLine = row + 1; + } + return this.lines[row] = data.tokens; + }; + BackgroundTokenizer.prototype.cleanup = function () { + this.running = false; + this.lines = []; + this.states = []; + this.currentLine = 0; + this.removeAllListeners(); + }; + return BackgroundTokenizer; +}()); +oop.implement(BackgroundTokenizer.prototype, EventEmitter); +exports.BackgroundTokenizer = BackgroundTokenizer; + +}); + +ace.define("ace/search_highlight",["require","exports","module","ace/lib/lang","ace/range"], function(require, exports, module){"use strict"; +var lang = require("./lib/lang"); +var Range = require("./range").Range; +var SearchHighlight = /** @class */ (function () { + function SearchHighlight(regExp, clazz, type) { + if (type === void 0) { type = "text"; } + this.setRegexp(regExp); + this.clazz = clazz; + this.type = type; + } + SearchHighlight.prototype.setRegexp = function (regExp) { + if (this.regExp + "" == regExp + "") + return; + this.regExp = regExp; + this.cache = []; + }; + SearchHighlight.prototype.update = function (html, markerLayer, session, config) { + if (!this.regExp) + return; + var start = config.firstRow, end = config.lastRow; + var renderedMarkerRanges = {}; + for (var i = start; i <= end; i++) { + var ranges = this.cache[i]; + if (ranges == null) { + ranges = lang.getMatchOffsets(session.getLine(i), this.regExp); + if (ranges.length > this.MAX_RANGES) + ranges = ranges.slice(0, this.MAX_RANGES); + ranges = ranges.map(function (match) { + return new Range(i, match.offset, i, match.offset + match.length); + }); + this.cache[i] = ranges.length ? ranges : ""; + } + for (var j = ranges.length; j--;) { + var rangeToAddMarkerTo = ranges[j].toScreenRange(session); + var rangeAsString = rangeToAddMarkerTo.toString(); + if (renderedMarkerRanges[rangeAsString]) + continue; + renderedMarkerRanges[rangeAsString] = true; + markerLayer.drawSingleLineMarker(html, rangeToAddMarkerTo, this.clazz, config); + } + } + }; + return SearchHighlight; +}()); +SearchHighlight.prototype.MAX_RANGES = 500; +exports.SearchHighlight = SearchHighlight; + +}); + +ace.define("ace/undomanager",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; +var UndoManager = /** @class */ (function () { + function UndoManager() { + this.$maxRev = 0; + this.$fromUndo = false; + this.$undoDepth = Infinity; + this.reset(); + } + UndoManager.prototype.addSession = function (session) { + this.$session = session; + }; + UndoManager.prototype.add = function (delta, allowMerge, session) { + if (this.$fromUndo) + return; + if (delta == this.$lastDelta) + return; + if (!this.$keepRedoStack) + this.$redoStack.length = 0; + if (allowMerge === false || !this.lastDeltas) { + this.lastDeltas = []; + var undoStackLength = this.$undoStack.length; + if (undoStackLength > this.$undoDepth - 1) { + this.$undoStack.splice(0, undoStackLength - this.$undoDepth + 1); + } + this.$undoStack.push(this.lastDeltas); + delta.id = this.$rev = ++this.$maxRev; + } + if (delta.action == "remove" || delta.action == "insert") + this.$lastDelta = delta; + this.lastDeltas.push(delta); + }; + UndoManager.prototype.addSelection = function (selection, rev) { + this.selections.push({ + value: selection, + rev: rev || this.$rev + }); + }; + UndoManager.prototype.startNewGroup = function () { + this.lastDeltas = null; + return this.$rev; + }; + UndoManager.prototype.markIgnored = function (from, to) { + if (to == null) + to = this.$rev + 1; + var stack = this.$undoStack; + for (var i = stack.length; i--;) { + var delta = stack[i][0]; + if (delta.id <= from) + break; + if (delta.id < to) + delta.ignore = true; + } + this.lastDeltas = null; + }; + UndoManager.prototype.getSelection = function (rev, after) { + var stack = this.selections; + for (var i = stack.length; i--;) { + var selection = stack[i]; + if (selection.rev < rev) { + if (after) + selection = stack[i + 1]; + return selection; + } + } + }; + UndoManager.prototype.getRevision = function () { + return this.$rev; + }; + UndoManager.prototype.getDeltas = function (from, to) { + if (to == null) + to = this.$rev + 1; + var stack = this.$undoStack; + var end = null, start = 0; + for (var i = stack.length; i--;) { + var delta = stack[i][0]; + if (delta.id < to && !end) + end = i + 1; + if (delta.id <= from) { + start = i + 1; + break; + } + } + return stack.slice(start, end); + }; + UndoManager.prototype.getChangedRanges = function (from, to) { + if (to == null) + to = this.$rev + 1; + }; + UndoManager.prototype.getChangedLines = function (from, to) { + if (to == null) + to = this.$rev + 1; + }; + UndoManager.prototype.undo = function (session, dontSelect) { + this.lastDeltas = null; + var stack = this.$undoStack; + if (!rearrangeUndoStack(stack, stack.length)) + return; + if (!session) + session = this.$session; + if (this.$redoStackBaseRev !== this.$rev && this.$redoStack.length) + this.$redoStack = []; + this.$fromUndo = true; + var deltaSet = stack.pop(); + var undoSelectionRange = null; + if (deltaSet) { + undoSelectionRange = session.undoChanges(deltaSet, dontSelect); + this.$redoStack.push(deltaSet); + this.$syncRev(); + } + this.$fromUndo = false; + return undoSelectionRange; + }; + UndoManager.prototype.redo = function (session, dontSelect) { + this.lastDeltas = null; + if (!session) + session = this.$session; + this.$fromUndo = true; + if (this.$redoStackBaseRev != this.$rev) { + var diff = this.getDeltas(this.$redoStackBaseRev, this.$rev + 1); + rebaseRedoStack(this.$redoStack, diff); + this.$redoStackBaseRev = this.$rev; + this.$redoStack.forEach(function (x) { + x[0].id = ++this.$maxRev; + }, this); + } + var deltaSet = this.$redoStack.pop(); + var redoSelectionRange = null; + if (deltaSet) { + redoSelectionRange = session.redoChanges(deltaSet, dontSelect); + this.$undoStack.push(deltaSet); + this.$syncRev(); + } + this.$fromUndo = false; + return redoSelectionRange; + }; + UndoManager.prototype.$syncRev = function () { + var stack = this.$undoStack; + var nextDelta = stack[stack.length - 1]; + var id = nextDelta && nextDelta[0].id || 0; + this.$redoStackBaseRev = id; + this.$rev = id; + }; + UndoManager.prototype.reset = function () { + this.lastDeltas = null; + this.$lastDelta = null; + this.$undoStack = []; + this.$redoStack = []; + this.$rev = 0; + this.mark = 0; + this.$redoStackBaseRev = this.$rev; + this.selections = []; + }; + UndoManager.prototype.canUndo = function () { + return this.$undoStack.length > 0; + }; + UndoManager.prototype.canRedo = function () { + return this.$redoStack.length > 0; + }; + UndoManager.prototype.bookmark = function (rev) { + if (rev == undefined) + rev = this.$rev; + this.mark = rev; + }; + UndoManager.prototype.isAtBookmark = function () { + return this.$rev === this.mark; + }; + UndoManager.prototype.toJSON = function () { + return { + $redoStack: this.$redoStack, + $undoStack: this.$undoStack + }; + }; + UndoManager.prototype.fromJSON = function (json) { + this.reset(); + this.$undoStack = json.$undoStack; + this.$redoStack = json.$redoStack; + }; + UndoManager.prototype.$prettyPrint = function (delta) { + if (delta) + return stringifyDelta(delta); + return stringifyDelta(this.$undoStack) + "\n---\n" + stringifyDelta(this.$redoStack); + }; + return UndoManager; +}()); +UndoManager.prototype.hasUndo = UndoManager.prototype.canUndo; +UndoManager.prototype.hasRedo = UndoManager.prototype.canRedo; +UndoManager.prototype.isClean = UndoManager.prototype.isAtBookmark; +UndoManager.prototype.markClean = UndoManager.prototype.bookmark; +function rearrangeUndoStack(stack, pos) { + for (var i = pos; i--;) { + var deltaSet = stack[i]; + if (deltaSet && !deltaSet[0].ignore) { + while (i < pos - 1) { + var swapped = swapGroups(stack[i], stack[i + 1]); + stack[i] = swapped[0]; + stack[i + 1] = swapped[1]; + i++; + } + return true; + } + } +} +var Range = require("./range").Range; +var cmp = Range.comparePoints; +var comparePoints = Range.comparePoints; +function $updateMarkers(delta) { + var isInsert = delta.action == "insert"; + var start = delta.start; + var end = delta.end; + var rowShift = (end.row - start.row) * (isInsert ? 1 : -1); + var colShift = (end.column - start.column) * (isInsert ? 1 : -1); + if (isInsert) + end = start; + for (var i in this.marks) { + var point = this.marks[i]; + var cmp = comparePoints(point, start); + if (cmp < 0) { + continue; // delta starts after the range + } + if (cmp === 0) { + if (isInsert) { + if (point.bias == 1) { + cmp = 1; + } + else { + point.bias == -1; + continue; + } + } + } + var cmp2 = isInsert ? cmp : comparePoints(point, end); + if (cmp2 > 0) { + point.row += rowShift; + point.column += point.row == end.row ? colShift : 0; + continue; + } + if (!isInsert && cmp2 <= 0) { + point.row = start.row; + point.column = start.column; + if (cmp2 === 0) + point.bias = 1; + } + } +} +function clonePos(pos) { + return { row: pos.row, column: pos.column }; +} +function cloneDelta(d) { + return { + start: clonePos(d.start), + end: clonePos(d.end), + action: d.action, + lines: d.lines.slice() + }; +} +function stringifyDelta(d) { + d = d || this; + if (Array.isArray(d)) { + return d.map(stringifyDelta).join("\n"); + } + var type = ""; + if (d.action) { + type = d.action == "insert" ? "+" : "-"; + type += "[" + d.lines + "]"; + } + else if (d.value) { + if (Array.isArray(d.value)) { + type = d.value.map(stringifyRange).join("\n"); + } + else { + type = stringifyRange(d.value); + } + } + if (d.start) { + type += stringifyRange(d); + } + if (d.id || d.rev) { + type += "\t(" + (d.id || d.rev) + ")"; + } + return type; +} +function stringifyRange(r) { + return r.start.row + ":" + r.start.column + + "=>" + r.end.row + ":" + r.end.column; +} +function swap(d1, d2) { + var i1 = d1.action == "insert"; + var i2 = d2.action == "insert"; + if (i1 && i2) { + if (cmp(d2.start, d1.end) >= 0) { + shift(d2, d1, -1); + } + else if (cmp(d2.start, d1.start) <= 0) { + shift(d1, d2, +1); + } + else { + return null; + } + } + else if (i1 && !i2) { + if (cmp(d2.start, d1.end) >= 0) { + shift(d2, d1, -1); + } + else if (cmp(d2.end, d1.start) <= 0) { + shift(d1, d2, -1); + } + else { + return null; + } + } + else if (!i1 && i2) { + if (cmp(d2.start, d1.start) >= 0) { + shift(d2, d1, +1); + } + else if (cmp(d2.start, d1.start) <= 0) { + shift(d1, d2, +1); + } + else { + return null; + } + } + else if (!i1 && !i2) { + if (cmp(d2.start, d1.start) >= 0) { + shift(d2, d1, +1); + } + else if (cmp(d2.end, d1.start) <= 0) { + shift(d1, d2, -1); + } + else { + return null; + } + } + return [d2, d1]; +} +function swapGroups(ds1, ds2) { + for (var i = ds1.length; i--;) { + for (var j = 0; j < ds2.length; j++) { + if (!swap(ds1[i], ds2[j])) { + while (i < ds1.length) { + while (j--) { + swap(ds2[j], ds1[i]); + } + j = ds2.length; + i++; + } + return [ds1, ds2]; + } + } + } + ds1.selectionBefore = ds2.selectionBefore = + ds1.selectionAfter = ds2.selectionAfter = null; + return [ds2, ds1]; +} +function xform(d1, c1) { + var i1 = d1.action == "insert"; + var i2 = c1.action == "insert"; + if (i1 && i2) { + if (cmp(d1.start, c1.start) < 0) { + shift(c1, d1, 1); + } + else { + shift(d1, c1, 1); + } + } + else if (i1 && !i2) { + if (cmp(d1.start, c1.end) >= 0) { + shift(d1, c1, -1); + } + else if (cmp(d1.start, c1.start) <= 0) { + shift(c1, d1, +1); + } + else { + shift(d1, Range.fromPoints(c1.start, d1.start), -1); + shift(c1, d1, +1); + } + } + else if (!i1 && i2) { + if (cmp(c1.start, d1.end) >= 0) { + shift(c1, d1, -1); + } + else if (cmp(c1.start, d1.start) <= 0) { + shift(d1, c1, +1); + } + else { + shift(c1, Range.fromPoints(d1.start, c1.start), -1); + shift(d1, c1, +1); + } + } + else if (!i1 && !i2) { + if (cmp(c1.start, d1.end) >= 0) { + shift(c1, d1, -1); + } + else if (cmp(c1.end, d1.start) <= 0) { + shift(d1, c1, -1); + } + else { + var before, after; + if (cmp(d1.start, c1.start) < 0) { + before = d1; + d1 = splitDelta(d1, c1.start); + } + if (cmp(d1.end, c1.end) > 0) { + after = splitDelta(d1, c1.end); + } + shiftPos(c1.end, d1.start, d1.end, -1); + if (after && !before) { + d1.lines = after.lines; + d1.start = after.start; + d1.end = after.end; + after = d1; + } + return [c1, before, after].filter(Boolean); + } + } + return [c1, d1]; +} +function shift(d1, d2, dir) { + shiftPos(d1.start, d2.start, d2.end, dir); + shiftPos(d1.end, d2.start, d2.end, dir); +} +function shiftPos(pos, start, end, dir) { + if (pos.row == (dir == 1 ? start : end).row) { + pos.column += dir * (end.column - start.column); + } + pos.row += dir * (end.row - start.row); +} +function splitDelta(c, pos) { + var lines = c.lines; + var end = c.end; + c.end = clonePos(pos); + var rowsBefore = c.end.row - c.start.row; + var otherLines = lines.splice(rowsBefore, lines.length); + var col = rowsBefore ? pos.column : pos.column - c.start.column; + lines.push(otherLines[0].substring(0, col)); + otherLines[0] = otherLines[0].substr(col); + var rest = { + start: clonePos(pos), + end: end, + lines: otherLines, + action: c.action + }; + return rest; +} +function moveDeltasByOne(redoStack, d) { + d = cloneDelta(d); + for (var j = redoStack.length; j--;) { + var deltaSet = redoStack[j]; + for (var i = 0; i < deltaSet.length; i++) { + var x = deltaSet[i]; + var xformed = xform(x, d); + d = xformed[0]; + if (xformed.length != 2) { + if (xformed[2]) { + deltaSet.splice(i + 1, 1, xformed[1], xformed[2]); + i++; + } + else if (!xformed[1]) { + deltaSet.splice(i, 1); + i--; + } + } + } + if (!deltaSet.length) { + redoStack.splice(j, 1); + } + } + return redoStack; +} +function rebaseRedoStack(redoStack, deltaSets) { + for (var i = 0; i < deltaSets.length; i++) { + var deltas = deltaSets[i]; + for (var j = 0; j < deltas.length; j++) { + moveDeltasByOne(redoStack, deltas[j]); + } + } +} +exports.UndoManager = UndoManager; + +}); + +ace.define("ace/edit_session/fold_line",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; +var Range = require("../range").Range; +var FoldLine = /** @class */ (function () { + function FoldLine(foldData, folds) { + this.foldData = foldData; + if (Array.isArray(folds)) { + this.folds = folds; + } + else { + folds = this.folds = [folds]; + } + var last = folds[folds.length - 1]; + this.range = new Range(folds[0].start.row, folds[0].start.column, last.end.row, last.end.column); + this.start = this.range.start; + this.end = this.range.end; + this.folds.forEach(function (fold) { + fold.setFoldLine(this); + }, this); + } + FoldLine.prototype.shiftRow = function (shift) { + this.start.row += shift; + this.end.row += shift; + this.folds.forEach(function (fold) { + fold.start.row += shift; + fold.end.row += shift; + }); + }; + FoldLine.prototype.addFold = function (fold) { + if (fold.sameRow) { + if (fold.start.row < this.startRow || fold.endRow > this.endRow) { + throw new Error("Can't add a fold to this FoldLine as it has no connection"); + } + this.folds.push(fold); + this.folds.sort(function (a, b) { + return -a.range.compareEnd(b.start.row, b.start.column); + }); + if (this.range.compareEnd(fold.start.row, fold.start.column) > 0) { + this.end.row = fold.end.row; + this.end.column = fold.end.column; + } + else if (this.range.compareStart(fold.end.row, fold.end.column) < 0) { + this.start.row = fold.start.row; + this.start.column = fold.start.column; + } + } + else if (fold.start.row == this.end.row) { + this.folds.push(fold); + this.end.row = fold.end.row; + this.end.column = fold.end.column; + } + else if (fold.end.row == this.start.row) { + this.folds.unshift(fold); + this.start.row = fold.start.row; + this.start.column = fold.start.column; + } + else { + throw new Error("Trying to add fold to FoldRow that doesn't have a matching row"); + } + fold.foldLine = this; + }; + FoldLine.prototype.containsRow = function (row) { + return row >= this.start.row && row <= this.end.row; + }; + FoldLine.prototype.walk = function (callback, endRow, endColumn) { + var lastEnd = 0, folds = this.folds, fold, cmp, stop, isNewRow = true; + if (endRow == null) { + endRow = this.end.row; + endColumn = this.end.column; + } + for (var i = 0; i < folds.length; i++) { + fold = folds[i]; + cmp = fold.range.compareStart(endRow, endColumn); + if (cmp == -1) { + callback(null, endRow, endColumn, lastEnd, isNewRow); + return; + } + stop = callback(null, fold.start.row, fold.start.column, lastEnd, isNewRow); + stop = !stop && callback(fold.placeholder, fold.start.row, fold.start.column, lastEnd); + if (stop || cmp === 0) { + return; + } + isNewRow = !fold.sameRow; + lastEnd = fold.end.column; + } + callback(null, endRow, endColumn, lastEnd, isNewRow); + }; + FoldLine.prototype.getNextFoldTo = function (row, column) { + var fold, cmp; + for (var i = 0; i < this.folds.length; i++) { + fold = this.folds[i]; + cmp = fold.range.compareEnd(row, column); + if (cmp == -1) { + return { + fold: fold, + kind: "after" + }; + } + else if (cmp === 0) { + return { + fold: fold, + kind: "inside" + }; + } + } + return null; + }; + FoldLine.prototype.addRemoveChars = function (row, column, len) { + var ret = this.getNextFoldTo(row, column), fold, folds; + if (ret) { + fold = ret.fold; + if (ret.kind == "inside" + && fold.start.column != column + && fold.start.row != row) { + window.console && window.console.log(row, column, fold); + } + else if (fold.start.row == row) { + folds = this.folds; + var i = folds.indexOf(fold); + if (i === 0) { + this.start.column += len; + } + for (i; i < folds.length; i++) { + fold = folds[i]; + fold.start.column += len; + if (!fold.sameRow) { + return; + } + fold.end.column += len; + } + this.end.column += len; + } + } + }; + FoldLine.prototype.split = function (row, column) { + var pos = this.getNextFoldTo(row, column); + if (!pos || pos.kind == "inside") + return null; + var fold = pos.fold; + var folds = this.folds; + var foldData = this.foldData; + var i = folds.indexOf(fold); + var foldBefore = folds[i - 1]; + this.end.row = foldBefore.end.row; + this.end.column = foldBefore.end.column; + folds = folds.splice(i, folds.length - i); + var newFoldLine = new FoldLine(foldData, folds); + foldData.splice(foldData.indexOf(this) + 1, 0, newFoldLine); + return newFoldLine; + }; + FoldLine.prototype.merge = function (foldLineNext) { + var folds = foldLineNext.folds; + for (var i = 0; i < folds.length; i++) { + this.addFold(folds[i]); + } + var foldData = this.foldData; + foldData.splice(foldData.indexOf(foldLineNext), 1); + }; + FoldLine.prototype.toString = function () { + var ret = [this.range.toString() + ": ["]; + this.folds.forEach(function (fold) { + ret.push(" " + fold.toString()); + }); + ret.push("]"); + return ret.join("\n"); + }; + FoldLine.prototype.idxToPosition = function (idx) { + var lastFoldEndColumn = 0; + for (var i = 0; i < this.folds.length; i++) { + var fold = this.folds[i]; + idx -= fold.start.column - lastFoldEndColumn; + if (idx < 0) { + return { + row: fold.start.row, + column: fold.start.column + idx + }; + } + idx -= fold.placeholder.length; + if (idx < 0) { + return fold.start; + } + lastFoldEndColumn = fold.end.column; + } + return { + row: this.end.row, + column: this.end.column + idx + }; + }; + return FoldLine; +}()); +exports.FoldLine = FoldLine; + +}); + +ace.define("ace/range_list",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; +var Range = require("./range").Range; +var comparePoints = Range.comparePoints; +var RangeList = /** @class */ (function () { + function RangeList() { + this.ranges = []; + this.$bias = 1; + } + RangeList.prototype.pointIndex = function (pos, excludeEdges, startIndex) { + var list = this.ranges; + for (var i = startIndex || 0; i < list.length; i++) { + var range = list[i]; + var cmpEnd = comparePoints(pos, range.end); + if (cmpEnd > 0) + continue; + var cmpStart = comparePoints(pos, range.start); + if (cmpEnd === 0) + return excludeEdges && cmpStart !== 0 ? -i - 2 : i; + if (cmpStart > 0 || (cmpStart === 0 && !excludeEdges)) + return i; + return -i - 1; + } + return -i - 1; + }; + RangeList.prototype.add = function (range) { + var excludeEdges = !range.isEmpty(); + var startIndex = this.pointIndex(range.start, excludeEdges); + if (startIndex < 0) + startIndex = -startIndex - 1; + var endIndex = this.pointIndex(range.end, excludeEdges, startIndex); + if (endIndex < 0) + endIndex = -endIndex - 1; + else + endIndex++; + return this.ranges.splice(startIndex, endIndex - startIndex, range); + }; + RangeList.prototype.addList = function (list) { + var removed = []; + for (var i = list.length; i--;) { + removed.push.apply(removed, this.add(list[i])); + } + return removed; + }; + RangeList.prototype.substractPoint = function (pos) { + var i = this.pointIndex(pos); + if (i >= 0) + return this.ranges.splice(i, 1); + }; + RangeList.prototype.merge = function () { + var removed = []; + var list = this.ranges; + list = list.sort(function (a, b) { + return comparePoints(a.start, b.start); + }); + var next = list[0], range; + for (var i = 1; i < list.length; i++) { + range = next; + next = list[i]; + var cmp = comparePoints(range.end, next.start); + if (cmp < 0) + continue; + if (cmp == 0 && !range.isEmpty() && !next.isEmpty()) + continue; + if (comparePoints(range.end, next.end) < 0) { + range.end.row = next.end.row; + range.end.column = next.end.column; + } + list.splice(i, 1); + removed.push(next); + next = range; + i--; + } + this.ranges = list; + return removed; + }; + RangeList.prototype.contains = function (row, column) { + return this.pointIndex({ row: row, column: column }) >= 0; + }; + RangeList.prototype.containsPoint = function (pos) { + return this.pointIndex(pos) >= 0; + }; + RangeList.prototype.rangeAtPoint = function (pos) { + var i = this.pointIndex(pos); + if (i >= 0) + return this.ranges[i]; + }; + RangeList.prototype.clipRows = function (startRow, endRow) { + var list = this.ranges; + if (list[0].start.row > endRow || list[list.length - 1].start.row < startRow) + return []; + var startIndex = this.pointIndex({ row: startRow, column: 0 }); + if (startIndex < 0) + startIndex = -startIndex - 1; + var endIndex = this.pointIndex({ row: endRow, column: 0 }, startIndex); + if (endIndex < 0) + endIndex = -endIndex - 1; + var clipped = []; + for (var i = startIndex; i < endIndex; i++) { + clipped.push(list[i]); + } + return clipped; + }; + RangeList.prototype.removeAll = function () { + return this.ranges.splice(0, this.ranges.length); + }; + RangeList.prototype.attach = function (session) { + if (this.session) + this.detach(); + this.session = session; + this.onChange = this.$onChange.bind(this); + this.session.on('change', this.onChange); + }; + RangeList.prototype.detach = function () { + if (!this.session) + return; + this.session.removeListener('change', this.onChange); + this.session = null; + }; + RangeList.prototype.$onChange = function (delta) { + var start = delta.start; + var end = delta.end; + var startRow = start.row; + var endRow = end.row; + var ranges = this.ranges; + for (var i = 0, n = ranges.length; i < n; i++) { + var r = ranges[i]; + if (r.end.row >= startRow) + break; + } + if (delta.action == "insert") { + var lineDif = endRow - startRow; + var colDiff = -start.column + end.column; + for (; i < n; i++) { + var r = ranges[i]; + if (r.start.row > startRow) + break; + if (r.start.row == startRow && r.start.column >= start.column) { + if (r.start.column == start.column && this.$bias <= 0) { + } + else { + r.start.column += colDiff; + r.start.row += lineDif; + } + } + if (r.end.row == startRow && r.end.column >= start.column) { + if (r.end.column == start.column && this.$bias < 0) { + continue; + } + if (r.end.column == start.column && colDiff > 0 && i < n - 1) { + if (r.end.column > r.start.column && r.end.column == ranges[i + 1].start.column) + r.end.column -= colDiff; + } + r.end.column += colDiff; + r.end.row += lineDif; + } + } + } + else { + var lineDif = startRow - endRow; + var colDiff = start.column - end.column; + for (; i < n; i++) { + var r = ranges[i]; + if (r.start.row > endRow) + break; + if (r.end.row < endRow + && (startRow < r.end.row + || startRow == r.end.row && start.column < r.end.column)) { + r.end.row = startRow; + r.end.column = start.column; + } + else if (r.end.row == endRow) { + if (r.end.column <= end.column) { + if (lineDif || r.end.column > start.column) { + r.end.column = start.column; + r.end.row = start.row; + } + } + else { + r.end.column += colDiff; + r.end.row += lineDif; + } + } + else if (r.end.row > endRow) { + r.end.row += lineDif; + } + if (r.start.row < endRow + && (startRow < r.start.row + || startRow == r.start.row && start.column < r.start.column)) { + r.start.row = startRow; + r.start.column = start.column; + } + else if (r.start.row == endRow) { + if (r.start.column <= end.column) { + if (lineDif || r.start.column > start.column) { + r.start.column = start.column; + r.start.row = start.row; + } + } + else { + r.start.column += colDiff; + r.start.row += lineDif; + } + } + else if (r.start.row > endRow) { + r.start.row += lineDif; + } + } + } + if (lineDif != 0 && i < n) { + for (; i < n; i++) { + var r = ranges[i]; + r.start.row += lineDif; + r.end.row += lineDif; + } + } + }; + return RangeList; +}()); +RangeList.prototype.comparePoints = comparePoints; +exports.RangeList = RangeList; + +}); + +ace.define("ace/edit_session/fold",["require","exports","module","ace/range_list"], function(require, exports, module){"use strict"; +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + if (typeof b !== "function" && b !== null) + throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +var RangeList = require("../range_list").RangeList; +var Fold = /** @class */ (function (_super) { + __extends(Fold, _super); + function Fold(range, placeholder) { + var _this = _super.call(this) || this; + _this.foldLine = null; + _this.placeholder = placeholder; + _this.range = range; + _this.start = range.start; + _this.end = range.end; + _this.sameRow = range.start.row == range.end.row; + _this.subFolds = _this.ranges = []; + return _this; + } + Fold.prototype.toString = function () { + return '"' + this.placeholder + '" ' + this.range.toString(); + }; + Fold.prototype.setFoldLine = function (foldLine) { + this.foldLine = foldLine; + this.subFolds.forEach(function (fold) { + fold.setFoldLine(foldLine); + }); + }; + Fold.prototype.clone = function () { + var range = this.range.clone(); + var fold = new Fold(range, this.placeholder); + this.subFolds.forEach(function (subFold) { + fold.subFolds.push(subFold.clone()); + }); + fold.collapseChildren = this.collapseChildren; + return fold; + }; + Fold.prototype.addSubFold = function (fold) { + if (this.range.isEqual(fold)) + return; + consumeRange(fold, this.start); + var row = fold.start.row, column = fold.start.column; + for (var i = 0, cmp = -1; i < this.subFolds.length; i++) { + cmp = this.subFolds[i].range.compare(row, column); + if (cmp != 1) + break; + } + var afterStart = this.subFolds[i]; + var firstConsumed = 0; + if (cmp == 0) { + if (afterStart.range.containsRange(fold)) + return afterStart.addSubFold(fold); + else + firstConsumed = 1; + } + var row = fold.range.end.row, column = fold.range.end.column; + for (var j = i, cmp = -1; j < this.subFolds.length; j++) { + cmp = this.subFolds[j].range.compare(row, column); + if (cmp != 1) + break; + } + if (cmp == 0) + j++; + var consumedFolds = this.subFolds.splice(i, j - i, fold); + var last = cmp == 0 ? consumedFolds.length - 1 : consumedFolds.length; + for (var k = firstConsumed; k < last; k++) { + fold.addSubFold(consumedFolds[k]); + } + fold.setFoldLine(this.foldLine); + return fold; + }; + Fold.prototype.restoreRange = function (range) { + return restoreRange(range, this.start); + }; + return Fold; +}(RangeList)); +function consumePoint(point, anchor) { + point.row -= anchor.row; + if (point.row == 0) + point.column -= anchor.column; +} +function consumeRange(range, anchor) { + consumePoint(range.start, anchor); + consumePoint(range.end, anchor); +} +function restorePoint(point, anchor) { + if (point.row == 0) + point.column += anchor.column; + point.row += anchor.row; +} +function restoreRange(range, anchor) { + restorePoint(range.start, anchor); + restorePoint(range.end, anchor); +} +exports.Fold = Fold; + +}); + +ace.define("ace/edit_session/folding",["require","exports","module","ace/range","ace/edit_session/fold_line","ace/edit_session/fold","ace/token_iterator","ace/mouse/mouse_event"], function(require, exports, module){"use strict"; +var Range = require("../range").Range; +var FoldLine = require("./fold_line").FoldLine; +var Fold = require("./fold").Fold; +var TokenIterator = require("../token_iterator").TokenIterator; +var MouseEvent = require("../mouse/mouse_event").MouseEvent; +function Folding() { + this.getFoldAt = function (row, column, side) { + var foldLine = this.getFoldLine(row); + if (!foldLine) + return null; + var folds = foldLine.folds; + for (var i = 0; i < folds.length; i++) { + var range = folds[i].range; + if (range.contains(row, column)) { + if (side == 1 && range.isEnd(row, column) && !range.isEmpty()) { + continue; + } + else if (side == -1 && range.isStart(row, column) && !range.isEmpty()) { + continue; + } + return folds[i]; + } + } + }; + this.getFoldsInRange = function (range) { + var start = range.start; + var end = range.end; + var foldLines = this.$foldData; + var foundFolds = []; + start.column += 1; + end.column -= 1; + for (var i = 0; i < foldLines.length; i++) { + var cmp = foldLines[i].range.compareRange(range); + if (cmp == 2) { + continue; + } + else if (cmp == -2) { + break; + } + var folds = foldLines[i].folds; + for (var j = 0; j < folds.length; j++) { + var fold = folds[j]; + cmp = fold.range.compareRange(range); + if (cmp == -2) { + break; + } + else if (cmp == 2) { + continue; + } + else + if (cmp == 42) { + break; + } + foundFolds.push(fold); + } + } + start.column -= 1; + end.column += 1; + return foundFolds; + }; + this.getFoldsInRangeList = function (ranges) { + if (Array.isArray(ranges)) { + var folds = []; + ranges.forEach(function (range) { + folds = folds.concat(this.getFoldsInRange(range)); + }, this); + } + else { + var folds = this.getFoldsInRange(ranges); + } + return folds; + }; + this.getAllFolds = function () { + var folds = []; + var foldLines = this.$foldData; + for (var i = 0; i < foldLines.length; i++) + for (var j = 0; j < foldLines[i].folds.length; j++) + folds.push(foldLines[i].folds[j]); + return folds; + }; + this.getFoldStringAt = function (row, column, trim, foldLine) { + foldLine = foldLine || this.getFoldLine(row); + if (!foldLine) + return null; + var lastFold = { + end: { column: 0 } + }; + var str, fold; + for (var i = 0; i < foldLine.folds.length; i++) { + fold = foldLine.folds[i]; + var cmp = fold.range.compareEnd(row, column); + if (cmp == -1) { + str = this + .getLine(fold.start.row) + .substring(lastFold.end.column, fold.start.column); + break; + } + else if (cmp === 0) { + return null; + } + lastFold = fold; + } + if (!str) + str = this.getLine(fold.start.row).substring(lastFold.end.column); + if (trim == -1) + return str.substring(0, column - lastFold.end.column); + else if (trim == 1) + return str.substring(column - lastFold.end.column); + else + return str; + }; + this.getFoldLine = function (docRow, startFoldLine) { + var foldData = this.$foldData; + var i = 0; + if (startFoldLine) + i = foldData.indexOf(startFoldLine); + if (i == -1) + i = 0; + for (i; i < foldData.length; i++) { + var foldLine = foldData[i]; + if (foldLine.start.row <= docRow && foldLine.end.row >= docRow) { + return foldLine; + } + else if (foldLine.end.row > docRow) { + return null; + } + } + return null; + }; + this.getNextFoldLine = function (docRow, startFoldLine) { + var foldData = this.$foldData; + var i = 0; + if (startFoldLine) + i = foldData.indexOf(startFoldLine); + if (i == -1) + i = 0; + for (i; i < foldData.length; i++) { + var foldLine = foldData[i]; + if (foldLine.end.row >= docRow) { + return foldLine; + } + } + return null; + }; + this.getFoldedRowCount = function (first, last) { + var foldData = this.$foldData, rowCount = last - first + 1; + for (var i = 0; i < foldData.length; i++) { + var foldLine = foldData[i], end = foldLine.end.row, start = foldLine.start.row; + if (end >= last) { + if (start < last) { + if (start >= first) + rowCount -= last - start; + else + rowCount = 0; // in one fold + } + break; + } + else if (end >= first) { + if (start >= first) // fold inside range + rowCount -= end - start; + else + rowCount -= end - first + 1; + } + } + return rowCount; + }; + this.$addFoldLine = function (foldLine) { + this.$foldData.push(foldLine); + this.$foldData.sort(function (a, b) { + return a.start.row - b.start.row; + }); + return foldLine; + }; + this.addFold = function (placeholder, range) { + var foldData = this.$foldData; + var added = false; + var fold; + if (placeholder instanceof Fold) + fold = placeholder; + else { + fold = new Fold(range, placeholder); + fold.collapseChildren = range.collapseChildren; + } + this.$clipRangeToDocument(fold.range); + var startRow = fold.start.row; + var startColumn = fold.start.column; + var endRow = fold.end.row; + var endColumn = fold.end.column; + var startFold = this.getFoldAt(startRow, startColumn, 1); + var endFold = this.getFoldAt(endRow, endColumn, -1); + if (startFold && endFold == startFold) + return startFold.addSubFold(fold); + if (startFold && !startFold.range.isStart(startRow, startColumn)) + this.removeFold(startFold); + if (endFold && !endFold.range.isEnd(endRow, endColumn)) + this.removeFold(endFold); + var folds = this.getFoldsInRange(fold.range); + if (folds.length > 0) { + this.removeFolds(folds); + if (!fold.collapseChildren) { + folds.forEach(function (subFold) { + fold.addSubFold(subFold); + }); + } + } + for (var i = 0; i < foldData.length; i++) { + var foldLine = foldData[i]; + if (endRow == foldLine.start.row) { + foldLine.addFold(fold); + added = true; + break; + } + else if (startRow == foldLine.end.row) { + foldLine.addFold(fold); + added = true; + if (!fold.sameRow) { + var foldLineNext = foldData[i + 1]; + if (foldLineNext && foldLineNext.start.row == endRow) { + foldLine.merge(foldLineNext); + break; + } + } + break; + } + else if (endRow <= foldLine.start.row) { + break; + } + } + if (!added) + foldLine = this.$addFoldLine(new FoldLine(this.$foldData, fold)); + if (this.$useWrapMode) + this.$updateWrapData(foldLine.start.row, foldLine.start.row); + else + this.$updateRowLengthCache(foldLine.start.row, foldLine.start.row); + this.$modified = true; + this._signal("changeFold", { data: fold, action: "add" }); + return fold; + }; + this.addFolds = function (folds) { + folds.forEach(function (fold) { + this.addFold(fold); + }, this); + }; + this.removeFold = function (fold) { + var foldLine = fold.foldLine; + var startRow = foldLine.start.row; + var endRow = foldLine.end.row; + var foldLines = this.$foldData; + var folds = foldLine.folds; + if (folds.length == 1) { + foldLines.splice(foldLines.indexOf(foldLine), 1); + } + else + if (foldLine.range.isEnd(fold.end.row, fold.end.column)) { + folds.pop(); + foldLine.end.row = folds[folds.length - 1].end.row; + foldLine.end.column = folds[folds.length - 1].end.column; + } + else + if (foldLine.range.isStart(fold.start.row, fold.start.column)) { + folds.shift(); + foldLine.start.row = folds[0].start.row; + foldLine.start.column = folds[0].start.column; + } + else + if (fold.sameRow) { + folds.splice(folds.indexOf(fold), 1); + } + else + { + var newFoldLine = foldLine.split(fold.start.row, fold.start.column); + folds = newFoldLine.folds; + folds.shift(); + newFoldLine.start.row = folds[0].start.row; + newFoldLine.start.column = folds[0].start.column; + } + if (!this.$updating) { + if (this.$useWrapMode) + this.$updateWrapData(startRow, endRow); + else + this.$updateRowLengthCache(startRow, endRow); + } + this.$modified = true; + this._signal("changeFold", { data: fold, action: "remove" }); + }; + this.removeFolds = function (folds) { + var cloneFolds = []; + for (var i = 0; i < folds.length; i++) { + cloneFolds.push(folds[i]); + } + cloneFolds.forEach(function (fold) { + this.removeFold(fold); + }, this); + this.$modified = true; + }; + this.expandFold = function (fold) { + this.removeFold(fold); + fold.subFolds.forEach(function (subFold) { + fold.restoreRange(subFold); + this.addFold(subFold); + }, this); + if (fold.collapseChildren > 0) { + this.foldAll(fold.start.row + 1, fold.end.row, fold.collapseChildren - 1); + } + fold.subFolds = []; + }; + this.expandFolds = function (folds) { + folds.forEach(function (fold) { + this.expandFold(fold); + }, this); + }; + this.unfold = function (location, expandInner) { + var range, folds; + if (location == null) { + range = new Range(0, 0, this.getLength(), 0); + if (expandInner == null) + expandInner = true; + } + else if (typeof location == "number") { + range = new Range(location, 0, location, this.getLine(location).length); + } + else if ("row" in location) { + range = Range.fromPoints(location, location); + } + else if (Array.isArray(location)) { + folds = []; + location.forEach(function (range) { + folds = folds.concat(this.unfold(range)); + }, this); + return folds; + } + else { + range = location; + } + folds = this.getFoldsInRangeList(range); + var outermostFolds = folds; + while (folds.length == 1 + && Range.comparePoints(folds[0].start, range.start) < 0 + && Range.comparePoints(folds[0].end, range.end) > 0) { + this.expandFolds(folds); + folds = this.getFoldsInRangeList(range); + } + if (expandInner != false) { + this.removeFolds(folds); + } + else { + this.expandFolds(folds); + } + if (outermostFolds.length) + return outermostFolds; + }; + this.isRowFolded = function (docRow, startFoldRow) { + return !!this.getFoldLine(docRow, startFoldRow); + }; + this.getRowFoldEnd = function (docRow, startFoldRow) { + var foldLine = this.getFoldLine(docRow, startFoldRow); + return foldLine ? foldLine.end.row : docRow; + }; + this.getRowFoldStart = function (docRow, startFoldRow) { + var foldLine = this.getFoldLine(docRow, startFoldRow); + return foldLine ? foldLine.start.row : docRow; + }; + this.getFoldDisplayLine = function (foldLine, endRow, endColumn, startRow, startColumn) { + if (startRow == null) + startRow = foldLine.start.row; + if (startColumn == null) + startColumn = 0; + if (endRow == null) + endRow = foldLine.end.row; + if (endColumn == null) + endColumn = this.getLine(endRow).length; + var doc = this.doc; + var textLine = ""; + foldLine.walk(function (placeholder, row, column, lastColumn) { + if (row < startRow) + return; + if (row == startRow) { + if (column < startColumn) + return; + lastColumn = Math.max(startColumn, lastColumn); + } + if (placeholder != null) { + textLine += placeholder; + } + else { + textLine += doc.getLine(row).substring(lastColumn, column); + } + }, endRow, endColumn); + return textLine; + }; + this.getDisplayLine = function (row, endColumn, startRow, startColumn) { + var foldLine = this.getFoldLine(row); + if (!foldLine) { + var line; + line = this.doc.getLine(row); + return line.substring(startColumn || 0, endColumn || line.length); + } + else { + return this.getFoldDisplayLine(foldLine, row, endColumn, startRow, startColumn); + } + }; + this.$cloneFoldData = function () { + var fd = []; + fd = this.$foldData.map(function (foldLine) { + var folds = foldLine.folds.map(function (fold) { + return fold.clone(); + }); + return new FoldLine(fd, folds); + }); + return fd; + }; + this.toggleFold = function (tryToUnfold) { + var selection = this.selection; + var range = selection.getRange(); + var fold; + var bracketPos; + if (range.isEmpty()) { + var cursor = range.start; + fold = this.getFoldAt(cursor.row, cursor.column); + if (fold) { + this.expandFold(fold); + return; + } + else if (bracketPos = this.findMatchingBracket(cursor)) { + if (range.comparePoint(bracketPos) == 1) { + range.end = bracketPos; + } + else { + range.start = bracketPos; + range.start.column++; + range.end.column--; + } + } + else if (bracketPos = this.findMatchingBracket({ row: cursor.row, column: cursor.column + 1 })) { + if (range.comparePoint(bracketPos) == 1) + range.end = bracketPos; + else + range.start = bracketPos; + range.start.column++; + } + else { + range = this.getCommentFoldRange(cursor.row, cursor.column) || range; + } + } + else { + var folds = this.getFoldsInRange(range); + if (tryToUnfold && folds.length) { + this.expandFolds(folds); + return; + } + else if (folds.length == 1) { + fold = folds[0]; + } + } + if (!fold) + fold = this.getFoldAt(range.start.row, range.start.column); + if (fold && fold.range.toString() == range.toString()) { + this.expandFold(fold); + return; + } + var placeholder = "..."; + if (!range.isMultiLine()) { + placeholder = this.getTextRange(range); + if (placeholder.length < 4) + return; + placeholder = placeholder.trim().substring(0, 2) + ".."; + } + this.addFold(placeholder, range); + }; + this.getCommentFoldRange = function (row, column, dir) { + var iterator = new TokenIterator(this, row, column); + var token = iterator.getCurrentToken(); + var type = token && token.type; + if (token && /^comment|string/.test(type)) { + type = type.match(/comment|string/)[0]; + if (type == "comment") + type += "|doc-start|\\.doc"; + var re = new RegExp(type); + var range = new Range(); + if (dir != 1) { + do { + token = iterator.stepBackward(); + } while (token && re.test(token.type) && !/^comment.end/.test(token.type)); + token = iterator.stepForward(); + } + range.start.row = iterator.getCurrentTokenRow(); + range.start.column = iterator.getCurrentTokenColumn() + (/^comment.start/.test(token.type) ? token.value.length : 2); + iterator = new TokenIterator(this, row, column); + if (dir != -1) { + var lastRow = -1; + do { + token = iterator.stepForward(); + if (lastRow == -1) { + var state = this.getState(iterator.$row); + if (!re.test(state)) + lastRow = iterator.$row; + } + else if (iterator.$row > lastRow) { + break; + } + } while (token && re.test(token.type) && !/^comment.start/.test(token.type)); + token = iterator.stepBackward(); + } + else + token = iterator.getCurrentToken(); + range.end.row = iterator.getCurrentTokenRow(); + range.end.column = iterator.getCurrentTokenColumn(); + if (!/^comment.end/.test(token.type)) { + range.end.column += token.value.length - 2; + } + return range; + } + }; + this.foldAll = function (startRow, endRow, depth, test) { + if (depth == undefined) + depth = 100000; // JSON.stringify doesn't hanle Infinity + var foldWidgets = this.foldWidgets; + if (!foldWidgets) + return; // mode doesn't support folding + endRow = endRow || this.getLength(); + startRow = startRow || 0; + for (var row = startRow; row < endRow; row++) { + if (foldWidgets[row] == null) + foldWidgets[row] = this.getFoldWidget(row); + if (foldWidgets[row] != "start") + continue; + if (test && !test(row)) + continue; + var range = this.getFoldWidgetRange(row); + if (range && range.isMultiLine() + && range.end.row <= endRow + && range.start.row >= startRow) { + row = range.end.row; + range.collapseChildren = depth; + this.addFold("...", range); + } + } + }; + this.foldToLevel = function (level) { + this.foldAll(); + while (level-- > 0) + this.unfold(null, false); + }; + this.foldAllComments = function () { + var session = this; + this.foldAll(null, null, null, function (row) { + var tokens = session.getTokens(row); + for (var i = 0; i < tokens.length; i++) { + var token = tokens[i]; + if (token.type == "text" && /^\s+$/.test(token.value)) + continue; + if (/comment/.test(token.type)) + return true; + return false; + } + }); + }; + this.$foldStyles = { + "manual": 1, + "markbegin": 1, + "markbeginend": 1 + }; + this.$foldStyle = "markbegin"; + this.setFoldStyle = function (style) { + if (!this.$foldStyles[style]) + throw new Error("invalid fold style: " + style + "[" + Object.keys(this.$foldStyles).join(", ") + "]"); + if (this.$foldStyle == style) + return; + this.$foldStyle = style; + if (style == "manual") + this.unfold(); + var mode = this.$foldMode; + this.$setFolding(null); + this.$setFolding(mode); + }; + this.$setFolding = function (foldMode) { + if (this.$foldMode == foldMode) + return; + this.$foldMode = foldMode; + this.off('change', this.$updateFoldWidgets); + this.off('tokenizerUpdate', this.$tokenizerUpdateFoldWidgets); + this._signal("changeAnnotation"); + if (!foldMode || this.$foldStyle == "manual") { + this.foldWidgets = null; + return; + } + this.foldWidgets = []; + this.getFoldWidget = foldMode.getFoldWidget.bind(foldMode, this, this.$foldStyle); + this.getFoldWidgetRange = foldMode.getFoldWidgetRange.bind(foldMode, this, this.$foldStyle); + this.$updateFoldWidgets = this.updateFoldWidgets.bind(this); + this.$tokenizerUpdateFoldWidgets = this.tokenizerUpdateFoldWidgets.bind(this); + this.on('change', this.$updateFoldWidgets); + this.on('tokenizerUpdate', this.$tokenizerUpdateFoldWidgets); + }; + this.getParentFoldRangeData = function (row, ignoreCurrent) { + var fw = this.foldWidgets; + if (!fw || (ignoreCurrent && fw[row])) + return {}; + var i = row - 1, firstRange; + while (i >= 0) { + var c = fw[i]; + if (c == null) + c = fw[i] = this.getFoldWidget(i); + if (c == "start") { + var range = this.getFoldWidgetRange(i); + if (!firstRange) + firstRange = range; + if (range && range.end.row >= row) + break; + } + i--; + } + return { + range: i !== -1 && range, + firstRange: firstRange + }; + }; + this.onFoldWidgetClick = function (row, e) { + if (e instanceof MouseEvent) + e = e.domEvent; + var options = { + children: e.shiftKey, + all: e.ctrlKey || e.metaKey, + siblings: e.altKey + }; + var range = this.$toggleFoldWidget(row, options); + if (!range) { + var el = (e.target || e.srcElement); + if (el && /ace_fold-widget/.test(el.className)) + el.className += " ace_invalid"; + } + }; + this.$toggleFoldWidget = function (row, options) { + if (!this.getFoldWidget) + return; + var type = this.getFoldWidget(row); + var line = this.getLine(row); + var dir = type === "end" ? -1 : 1; + var fold = this.getFoldAt(row, dir === -1 ? 0 : line.length, dir); + if (fold) { + if (options.children || options.all) + this.removeFold(fold); + else + this.expandFold(fold); + return fold; + } + var range = this.getFoldWidgetRange(row, true); + if (range && !range.isMultiLine()) { + fold = this.getFoldAt(range.start.row, range.start.column, 1); + if (fold && range.isEqual(fold.range)) { + this.removeFold(fold); + return fold; + } + } + if (options.siblings) { + var data = this.getParentFoldRangeData(row); + if (data.range) { + var startRow = data.range.start.row + 1; + var endRow = data.range.end.row; + } + this.foldAll(startRow, endRow, options.all ? 10000 : 0); + } + else if (options.children) { + endRow = range ? range.end.row : this.getLength(); + this.foldAll(row + 1, endRow, options.all ? 10000 : 0); + } + else if (range) { + if (options.all) + range.collapseChildren = 10000; + this.addFold("...", range); + } + return range; + }; + this.toggleFoldWidget = function (toggleParent) { + var row = this.selection.getCursor().row; + row = this.getRowFoldStart(row); + var range = this.$toggleFoldWidget(row, {}); + if (range) + return; + var data = this.getParentFoldRangeData(row, true); + range = data.range || data.firstRange; + if (range) { + row = range.start.row; + var fold = this.getFoldAt(row, this.getLine(row).length, 1); + if (fold) { + this.removeFold(fold); + } + else { + this.addFold("...", range); + } + } + }; + this.updateFoldWidgets = function (delta) { + var firstRow = delta.start.row; + var len = delta.end.row - firstRow; + if (len === 0) { + this.foldWidgets[firstRow] = null; + } + else if (delta.action == 'remove') { + this.foldWidgets.splice(firstRow, len + 1, null); + } + else { + var args = Array(len + 1); + args.unshift(firstRow, 1); + this.foldWidgets.splice.apply(this.foldWidgets, args); + } + }; + this.tokenizerUpdateFoldWidgets = function (e) { + var rows = e.data; + if (rows.first != rows.last) { + if (this.foldWidgets.length > rows.first) + this.foldWidgets.splice(rows.first, this.foldWidgets.length); + } + }; +} +exports.Folding = Folding; + +}); + +ace.define("ace/edit_session/bracket_match",["require","exports","module","ace/token_iterator","ace/range"], function(require, exports, module){"use strict"; +var TokenIterator = require("../token_iterator").TokenIterator; +var Range = require("../range").Range; +function BracketMatch() { + this.findMatchingBracket = function (position, chr) { + if (position.column == 0) + return null; + var charBeforeCursor = chr || this.getLine(position.row).charAt(position.column - 1); + if (charBeforeCursor == "") + return null; + var match = charBeforeCursor.match(/([\(\[\{])|([\)\]\}])/); + if (!match) + return null; + if (match[1]) + return this.$findClosingBracket(match[1], position); + else + return this.$findOpeningBracket(match[2], position); + }; + this.getBracketRange = function (pos) { + var line = this.getLine(pos.row); + var before = true, range; + var chr = line.charAt(pos.column - 1); + var match = chr && chr.match(/([\(\[\{])|([\)\]\}])/); + if (!match) { + chr = line.charAt(pos.column); + pos = { row: pos.row, column: pos.column + 1 }; + match = chr && chr.match(/([\(\[\{])|([\)\]\}])/); + before = false; + } + if (!match) + return null; + if (match[1]) { + var bracketPos = this.$findClosingBracket(match[1], pos); + if (!bracketPos) + return null; + range = Range.fromPoints(pos, bracketPos); + if (!before) { + range.end.column++; + range.start.column--; + } + range.cursor = range.end; + } + else { + var bracketPos = this.$findOpeningBracket(match[2], pos); + if (!bracketPos) + return null; + range = Range.fromPoints(bracketPos, pos); + if (!before) { + range.start.column++; + range.end.column--; + } + range.cursor = range.start; + } + return range; + }; + this.getMatchingBracketRanges = function (pos, isBackwards) { + var line = this.getLine(pos.row); + var bracketsRegExp = /([\(\[\{])|([\)\]\}])/; + var chr = !isBackwards && line.charAt(pos.column - 1); + var match = chr && chr.match(bracketsRegExp); + if (!match) { + chr = (isBackwards === undefined || isBackwards) && line.charAt(pos.column); + pos = { + row: pos.row, + column: pos.column + 1 + }; + match = chr && chr.match(bracketsRegExp); + } + if (!match) + return null; + var startRange = new Range(pos.row, pos.column - 1, pos.row, pos.column); + var bracketPos = match[1] ? this.$findClosingBracket(match[1], pos) + : this.$findOpeningBracket(match[2], pos); + if (!bracketPos) + return [startRange]; + var endRange = new Range(bracketPos.row, bracketPos.column, bracketPos.row, bracketPos.column + 1); + return [startRange, endRange]; + }; + this.$brackets = { + ")": "(", + "(": ")", + "]": "[", + "[": "]", + "{": "}", + "}": "{", + "<": ">", + ">": "<" + }; + this.$findOpeningBracket = function (bracket, position, typeRe) { + var openBracket = this.$brackets[bracket]; + var depth = 1; + var iterator = new TokenIterator(this, position.row, position.column); + var token = iterator.getCurrentToken(); + if (!token) + token = iterator.stepForward(); + if (!token) + return; + if (!typeRe) { + typeRe = new RegExp("(\\.?" + + token.type.replace(".", "\\.").replace("rparen", ".paren") + .replace(/\b(?:end)\b/, "(?:start|begin|end)") + .replace(/-close\b/, "-(close|open)") + + ")+"); + } + var valueIndex = position.column - iterator.getCurrentTokenColumn() - 2; + var value = token.value; + while (true) { + while (valueIndex >= 0) { + var chr = value.charAt(valueIndex); + if (chr == openBracket) { + depth -= 1; + if (depth == 0) { + return { row: iterator.getCurrentTokenRow(), + column: valueIndex + iterator.getCurrentTokenColumn() }; + } + } + else if (chr == bracket) { + depth += 1; + } + valueIndex -= 1; + } + do { + token = iterator.stepBackward(); + } while (token && !typeRe.test(token.type)); + if (token == null) + break; + value = token.value; + valueIndex = value.length - 1; + } + return null; + }; + this.$findClosingBracket = function (bracket, position, typeRe) { + var closingBracket = this.$brackets[bracket]; + var depth = 1; + var iterator = new TokenIterator(this, position.row, position.column); + var token = iterator.getCurrentToken(); + if (!token) + token = iterator.stepForward(); + if (!token) + return; + if (!typeRe) { + typeRe = new RegExp("(\\.?" + + token.type.replace(".", "\\.").replace("lparen", ".paren") + .replace(/\b(?:start|begin)\b/, "(?:start|begin|end)") + .replace(/-open\b/, "-(close|open)") + + ")+"); + } + var valueIndex = position.column - iterator.getCurrentTokenColumn(); + while (true) { + var value = token.value; + var valueLength = value.length; + while (valueIndex < valueLength) { + var chr = value.charAt(valueIndex); + if (chr == closingBracket) { + depth -= 1; + if (depth == 0) { + return { row: iterator.getCurrentTokenRow(), + column: valueIndex + iterator.getCurrentTokenColumn() }; + } + } + else if (chr == bracket) { + depth += 1; + } + valueIndex += 1; + } + do { + token = iterator.stepForward(); + } while (token && !typeRe.test(token.type)); + if (token == null) + break; + valueIndex = 0; + } + return null; + }; + this.getMatchingTags = function (pos) { + var iterator = new TokenIterator(this, pos.row, pos.column); + var token = this.$findTagName(iterator); + if (!token) + return; + var prevToken = iterator.stepBackward(); + if (prevToken.value === '<') { + return this.$findClosingTag(iterator, token); + } + else { + return this.$findOpeningTag(iterator, token); + } + }; + this.$findTagName = function (iterator) { + var token = iterator.getCurrentToken(); + var found = false; + var backward = false; + if (token && token.type.indexOf('tag-name') === -1) { + do { + if (backward) + token = iterator.stepBackward(); + else + token = iterator.stepForward(); + if (token) { + if (token.value === "/>") { + backward = true; + } + else if (token.type.indexOf('tag-name') !== -1) { + found = true; + } + } + } while (token && !found); + } + return token; + }; + this.$findClosingTag = function (iterator, token) { + var prevToken; + var currentTag = token.value; + var tag = token.value; + var depth = 0; + var openTagStart = new Range(iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn(), iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() + 1); + token = iterator.stepForward(); + var openTagName = new Range(iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn(), iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() + token.value.length); + var foundOpenTagEnd = false; + do { + prevToken = token; + token = iterator.stepForward(); + if (token) { + if (token.value === '>' && !foundOpenTagEnd) { + var openTagEnd = new Range(iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn(), iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() + 1); //Range for `>` + foundOpenTagEnd = true; + } + if (token.type.indexOf('tag-name') !== -1) { + currentTag = token.value; + if (tag === currentTag) { + if (prevToken.value === '<') { + depth++; + } + else if (prevToken.value === '') { + var closeTagEnd = new Range(iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn(), iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() + 1); //Range for > + } + else { + return; + } + } + } + } + } + else if (tag === currentTag && token.value === '/>') { // self-closing tag + depth--; + if (depth < 0) { //found self-closing tag end + var closeTagStart = new Range(iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn(), iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() + 2); + var closeTagName = closeTagStart; + var closeTagEnd = closeTagName; + var openTagEnd = new Range(openTagName.end.row, openTagName.end.column, openTagName.end.row, openTagName.end.column + 1); + } + } + } + } while (token && depth >= 0); + if (openTagStart && openTagEnd && closeTagStart && closeTagEnd && openTagName && closeTagName) { + return { + openTag: new Range(openTagStart.start.row, openTagStart.start.column, openTagEnd.end.row, openTagEnd.end.column), + closeTag: new Range(closeTagStart.start.row, closeTagStart.start.column, closeTagEnd.end.row, closeTagEnd.end.column), + openTagName: openTagName, + closeTagName: closeTagName + }; + } + }; + this.$findOpeningTag = function (iterator, token) { + var prevToken = iterator.getCurrentToken(); + var tag = token.value; + var depth = 0; + var startRow = iterator.getCurrentTokenRow(); + var startColumn = iterator.getCurrentTokenColumn(); + var endColumn = startColumn + 2; + var closeTagStart = new Range(startRow, startColumn, startRow, endColumn); //Range for ") + return; + var closeTagEnd = new Range(iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn(), iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() + 1); //Range for > + iterator.stepBackward(); + iterator.stepBackward(); + do { + token = prevToken; + startRow = iterator.getCurrentTokenRow(); + startColumn = iterator.getCurrentTokenColumn(); + endColumn = startColumn + token.value.length; + prevToken = iterator.stepBackward(); + if (token) { + if (token.type.indexOf('tag-name') !== -1) { + if (tag === token.value) { + if (prevToken.value === '<') { + depth++; + if (depth > 0) { //found opening tag + var openTagName = new Range(startRow, startColumn, startRow, endColumn); + var openTagStart = new Range(iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn(), iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() + 1); //Range for < + do { + token = iterator.stepForward(); + } while (token && token.value !== '>'); + var openTagEnd = new Range(iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn(), iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() + 1); //Range for > + } + } + else if (prevToken.value === '') { // self-closing tag + var stepCount = 0; + var tmpToken = prevToken; + while (tmpToken) { + if (tmpToken.type.indexOf('tag-name') !== -1 && tmpToken.value === tag) { + depth--; + break; + } + else if (tmpToken.value === '<') { + break; + } + tmpToken = iterator.stepBackward(); + stepCount++; + } + for (var i = 0; i < stepCount; i++) { + iterator.stepForward(); + } + } + } + } while (prevToken && depth <= 0); + if (openTagStart && openTagEnd && closeTagStart && closeTagEnd && openTagName && closeTagName) { + return { + openTag: new Range(openTagStart.start.row, openTagStart.start.column, openTagEnd.end.row, openTagEnd.end.column), + closeTag: new Range(closeTagStart.start.row, closeTagStart.start.column, closeTagEnd.end.row, closeTagEnd.end.column), + openTagName: openTagName, + closeTagName: closeTagName + }; + } + }; +} +exports.BracketMatch = BracketMatch; + +}); + +ace.define("ace/edit_session",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/bidihandler","ace/config","ace/lib/event_emitter","ace/selection","ace/mode/text","ace/range","ace/document","ace/background_tokenizer","ace/search_highlight","ace/undomanager","ace/edit_session/folding","ace/edit_session/bracket_match"], function(require, exports, module){"use strict"; +var oop = require("./lib/oop"); +var lang = require("./lib/lang"); +var BidiHandler = require("./bidihandler").BidiHandler; +var config = require("./config"); +var EventEmitter = require("./lib/event_emitter").EventEmitter; +var Selection = require("./selection").Selection; +var TextMode = require("./mode/text").Mode; +var Range = require("./range").Range; +var Document = require("./document").Document; +var BackgroundTokenizer = require("./background_tokenizer").BackgroundTokenizer; +var SearchHighlight = require("./search_highlight").SearchHighlight; +var UndoManager = require("./undomanager").UndoManager; +var EditSession = /** @class */ (function () { + function EditSession(text, mode) { + this.$breakpoints = []; + this.$decorations = []; + this.$frontMarkers = {}; + this.$backMarkers = {}; + this.$markerId = 1; + this.$undoSelect = true; + this.$foldData = []; + this.id = "session" + (++EditSession.$uid); + this.$foldData.toString = function () { + return this.join("\n"); + }; + this.bgTokenizer = new BackgroundTokenizer((new TextMode()).getTokenizer(), this); + var _self = this; + this.bgTokenizer.on("update", function (e) { + _self._signal("tokenizerUpdate", e); + }); + this.on("changeFold", this.onChangeFold.bind(this)); + this.$onChange = this.onChange.bind(this); + if (typeof text != "object" || !text.getLine) + text = new Document(text); + this.setDocument(text); + this.selection = new Selection(this); + this.$bidiHandler = new BidiHandler(this); + config.resetOptions(this); + this.setMode(mode); + config._signal("session", this); + this.destroyed = false; + } + EditSession.prototype.setDocument = function (doc) { + if (this.doc) + this.doc.off("change", this.$onChange); + this.doc = doc; + doc.on("change", this.$onChange, true); + this.bgTokenizer.setDocument(this.getDocument()); + this.resetCaches(); + }; + EditSession.prototype.getDocument = function () { + return this.doc; + }; + EditSession.prototype.$resetRowCache = function (docRow) { + if (!docRow) { + this.$docRowCache = []; + this.$screenRowCache = []; + return; + } + var l = this.$docRowCache.length; + var i = this.$getRowCacheIndex(this.$docRowCache, docRow) + 1; + if (l > i) { + this.$docRowCache.splice(i, l); + this.$screenRowCache.splice(i, l); + } + }; + EditSession.prototype.$getRowCacheIndex = function (cacheArray, val) { + var low = 0; + var hi = cacheArray.length - 1; + while (low <= hi) { + var mid = (low + hi) >> 1; + var c = cacheArray[mid]; + if (val > c) + low = mid + 1; + else if (val < c) + hi = mid - 1; + else + return mid; + } + return low - 1; + }; + EditSession.prototype.resetCaches = function () { + this.$modified = true; + this.$wrapData = []; + this.$rowLengthCache = []; + this.$resetRowCache(0); + if (!this.destroyed) + this.bgTokenizer.start(0); + }; + EditSession.prototype.onChangeFold = function (e) { + var fold = e.data; + this.$resetRowCache(fold.start.row); + }; + EditSession.prototype.onChange = function (delta) { + this.$modified = true; + this.$bidiHandler.onChange(delta); + this.$resetRowCache(delta.start.row); + var removedFolds = this.$updateInternalDataOnChange(delta); + if (!this.$fromUndo && this.$undoManager) { + if (removedFolds && removedFolds.length) { + this.$undoManager.add({ + action: "removeFolds", + folds: removedFolds + }, this.mergeUndoDeltas); + this.mergeUndoDeltas = true; + } + this.$undoManager.add(delta, this.mergeUndoDeltas); + this.mergeUndoDeltas = true; + this.$informUndoManager.schedule(); + } + this.bgTokenizer.$updateOnChange(delta); + this._signal("change", delta); + }; + EditSession.prototype.setValue = function (text) { + this.doc.setValue(text); + this.selection.moveTo(0, 0); + this.$resetRowCache(0); + this.setUndoManager(this.$undoManager); + this.getUndoManager().reset(); + }; + EditSession.fromJSON = function (session) { + session = JSON.parse(session); + var undoManager = new UndoManager(); + undoManager.$undoStack = session.history.undo; + undoManager.$redoStack = session.history.redo; + undoManager.mark = session.history.mark; + undoManager.$rev = session.history.rev; + var editSession = new EditSession(session.value); + session.folds.forEach(function (fold) { + editSession.addFold("...", Range.fromPoints(fold.start, fold.end)); + }); + editSession.setAnnotations(session.annotations); + editSession.setBreakpoints(session.breakpoints); + editSession.setMode(session.mode); + editSession.setScrollLeft(session.scrollLeft); + editSession.setScrollTop(session.scrollTop); + editSession.setUndoManager(undoManager); + editSession.selection.fromJSON(session.selection); + return editSession; + }; + EditSession.prototype.toJSON = function () { + return { + annotations: this.$annotations, + breakpoints: this.$breakpoints, + folds: this.getAllFolds().map(function (fold) { + return fold.range; + }), + history: this.getUndoManager(), + mode: this.$mode.$id, + scrollLeft: this.$scrollLeft, + scrollTop: this.$scrollTop, + selection: this.selection.toJSON(), + value: this.doc.getValue() + }; + }; + EditSession.prototype.toString = function () { + return this.doc.getValue(); + }; + EditSession.prototype.getSelection = function () { + return this.selection; + }; + EditSession.prototype.getState = function (row) { + return this.bgTokenizer.getState(row); + }; + EditSession.prototype.getTokens = function (row) { + return this.bgTokenizer.getTokens(row); + }; + EditSession.prototype.getTokenAt = function (row, column) { + var tokens = this.bgTokenizer.getTokens(row); + var token, c = 0; + if (column == null) { + var i = tokens.length - 1; + c = this.getLine(row).length; + } + else { + for (var i = 0; i < tokens.length; i++) { + c += tokens[i].value.length; + if (c >= column) + break; + } + } + token = tokens[i]; + if (!token) + return null; + token.index = i; + token.start = c - token.value.length; + return token; + }; + EditSession.prototype.setUndoManager = function (undoManager) { + this.$undoManager = undoManager; + if (this.$informUndoManager) + this.$informUndoManager.cancel(); + if (undoManager) { + var self = this; + undoManager.addSession(this); + this.$syncInformUndoManager = function () { + self.$informUndoManager.cancel(); + self.mergeUndoDeltas = false; + }; + this.$informUndoManager = lang.delayedCall(this.$syncInformUndoManager); + } + else { + this.$syncInformUndoManager = function () { }; + } + }; + EditSession.prototype.markUndoGroup = function () { + if (this.$syncInformUndoManager) + this.$syncInformUndoManager(); + }; + EditSession.prototype.getUndoManager = function () { + return this.$undoManager || this.$defaultUndoManager; + }; + EditSession.prototype.getTabString = function () { + if (this.getUseSoftTabs()) { + return lang.stringRepeat(" ", this.getTabSize()); + } + else { + return "\t"; + } + }; + EditSession.prototype.setUseSoftTabs = function (val) { + this.setOption("useSoftTabs", val); + }; + EditSession.prototype.getUseSoftTabs = function () { + return this.$useSoftTabs && !this.$mode.$indentWithTabs; + }; + EditSession.prototype.setTabSize = function (tabSize) { + this.setOption("tabSize", tabSize); + }; + EditSession.prototype.getTabSize = function () { + return this.$tabSize; + }; + EditSession.prototype.isTabStop = function (position) { + return this.$useSoftTabs && (position.column % this.$tabSize === 0); + }; + EditSession.prototype.setNavigateWithinSoftTabs = function (navigateWithinSoftTabs) { + this.setOption("navigateWithinSoftTabs", navigateWithinSoftTabs); + }; + EditSession.prototype.getNavigateWithinSoftTabs = function () { + return this.$navigateWithinSoftTabs; + }; + EditSession.prototype.setOverwrite = function (overwrite) { + this.setOption("overwrite", overwrite); + }; + EditSession.prototype.getOverwrite = function () { + return this.$overwrite; + }; + EditSession.prototype.toggleOverwrite = function () { + this.setOverwrite(!this.$overwrite); + }; + EditSession.prototype.addGutterDecoration = function (row, className) { + if (!this.$decorations[row]) + this.$decorations[row] = ""; + this.$decorations[row] += " " + className; + this._signal("changeBreakpoint", {}); + }; + EditSession.prototype.removeGutterDecoration = function (row, className) { + this.$decorations[row] = (this.$decorations[row] || "").replace(" " + className, ""); + this._signal("changeBreakpoint", {}); + }; + EditSession.prototype.getBreakpoints = function () { + return this.$breakpoints; + }; + EditSession.prototype.setBreakpoints = function (rows) { + this.$breakpoints = []; + for (var i = 0; i < rows.length; i++) { + this.$breakpoints[rows[i]] = "ace_breakpoint"; + } + this._signal("changeBreakpoint", {}); + }; + EditSession.prototype.clearBreakpoints = function () { + this.$breakpoints = []; + this._signal("changeBreakpoint", {}); + }; + EditSession.prototype.setBreakpoint = function (row, className) { + if (className === undefined) + className = "ace_breakpoint"; + if (className) + this.$breakpoints[row] = className; + else + delete this.$breakpoints[row]; + this._signal("changeBreakpoint", {}); + }; + EditSession.prototype.clearBreakpoint = function (row) { + delete this.$breakpoints[row]; + this._signal("changeBreakpoint", {}); + }; + EditSession.prototype.addMarker = function (range, clazz, type, inFront) { + var id = this.$markerId++; + var marker = { + range: range, + type: type || "line", + renderer: typeof type == "function" ? type : null, + clazz: clazz, + inFront: !!inFront, + id: id + }; + if (inFront) { + this.$frontMarkers[id] = marker; + this._signal("changeFrontMarker"); + } + else { + this.$backMarkers[id] = marker; + this._signal("changeBackMarker"); + } + return id; + }; + EditSession.prototype.addDynamicMarker = function (marker, inFront) { + if (!marker.update) + return; + var id = this.$markerId++; + marker.id = id; + marker.inFront = !!inFront; + if (inFront) { + this.$frontMarkers[id] = marker; + this._signal("changeFrontMarker"); + } + else { + this.$backMarkers[id] = marker; + this._signal("changeBackMarker"); + } + return marker; + }; + EditSession.prototype.removeMarker = function (markerId) { + var marker = this.$frontMarkers[markerId] || this.$backMarkers[markerId]; + if (!marker) + return; + var markers = marker.inFront ? this.$frontMarkers : this.$backMarkers; + delete (markers[markerId]); + this._signal(marker.inFront ? "changeFrontMarker" : "changeBackMarker"); + }; + EditSession.prototype.getMarkers = function (inFront) { + return inFront ? this.$frontMarkers : this.$backMarkers; + }; + EditSession.prototype.highlight = function (re) { + if (!this.$searchHighlight) { + var highlight = new SearchHighlight(null, "ace_selected-word", "text"); + this.$searchHighlight = this.addDynamicMarker(highlight); + } + this.$searchHighlight.setRegexp(re); + }; + EditSession.prototype.highlightLines = function (startRow, endRow, clazz, inFront) { + if (typeof endRow != "number") { + clazz = endRow; + endRow = startRow; + } + if (!clazz) + clazz = "ace_step"; + var range = new Range(startRow, 0, endRow, Infinity); + range.id = this.addMarker(range, clazz, "fullLine", inFront); + return range; + }; + EditSession.prototype.setAnnotations = function (annotations) { + this.$annotations = annotations; + this._signal("changeAnnotation", {}); + }; + EditSession.prototype.getAnnotations = function () { + return this.$annotations || []; + }; + EditSession.prototype.clearAnnotations = function () { + this.setAnnotations([]); + }; + EditSession.prototype.$detectNewLine = function (text) { + var match = text.match(/^.*?(\r?\n)/m); + if (match) { + this.$autoNewLine = match[1]; + } + else { + this.$autoNewLine = "\n"; + } + }; + EditSession.prototype.getWordRange = function (row, column) { + var line = this.getLine(row); + var inToken = false; + if (column > 0) + inToken = !!line.charAt(column - 1).match(this.tokenRe); + if (!inToken) + inToken = !!line.charAt(column).match(this.tokenRe); + if (inToken) + var re = this.tokenRe; + else if (/^\s+$/.test(line.slice(column - 1, column + 1))) + var re = /\s/; + else + var re = this.nonTokenRe; + var start = column; + if (start > 0) { + do { + start--; + } while (start >= 0 && line.charAt(start).match(re)); + start++; + } + var end = column; + while (end < line.length && line.charAt(end).match(re)) { + end++; + } + return new Range(row, start, row, end); + }; + EditSession.prototype.getAWordRange = function (row, column) { + var wordRange = this.getWordRange(row, column); + var line = this.getLine(wordRange.end.row); + while (line.charAt(wordRange.end.column).match(/[ \t]/)) { + wordRange.end.column += 1; + } + return wordRange; + }; + EditSession.prototype.setNewLineMode = function (newLineMode) { + this.doc.setNewLineMode(newLineMode); + }; + EditSession.prototype.getNewLineMode = function () { + return this.doc.getNewLineMode(); + }; + EditSession.prototype.setUseWorker = function (useWorker) { this.setOption("useWorker", useWorker); }; + EditSession.prototype.getUseWorker = function () { return this.$useWorker; }; + EditSession.prototype.onReloadTokenizer = function (e) { + var rows = e.data; + this.bgTokenizer.start(rows.first); + this._signal("tokenizerUpdate", e); + }; + EditSession.prototype.setMode = function (mode, cb) { + if (mode && typeof mode === "object") { + if (mode.getTokenizer) + return this.$onChangeMode(mode); + var options = mode; + var path = options.path; + } + else { + path = mode || "ace/mode/text"; + } + if (!this.$modes["ace/mode/text"]) + this.$modes["ace/mode/text"] = new TextMode(); + if (this.$modes[path] && !options) { + this.$onChangeMode(this.$modes[path]); + cb && cb(); + return; + } + this.$modeId = path; + config.loadModule(["mode", path], function (m) { + if (this.$modeId !== path) + return cb && cb(); + if (this.$modes[path] && !options) { + this.$onChangeMode(this.$modes[path]); + } + else if (m && m.Mode) { + m = new m.Mode(options); + if (!options) { + this.$modes[path] = m; + m.$id = path; + } + this.$onChangeMode(m); + } + cb && cb(); + }.bind(this)); + if (!this.$mode) + this.$onChangeMode(this.$modes["ace/mode/text"], true); + }; + EditSession.prototype.$onChangeMode = function (mode, $isPlaceholder) { + if (!$isPlaceholder) + this.$modeId = mode.$id; + if (this.$mode === mode) + return; + var oldMode = this.$mode; + this.$mode = mode; + this.$stopWorker(); + if (this.$useWorker) + this.$startWorker(); + var tokenizer = mode.getTokenizer(); + if (tokenizer.on !== undefined) { + var onReloadTokenizer = this.onReloadTokenizer.bind(this); + tokenizer.on("update", onReloadTokenizer); + } + this.bgTokenizer.setTokenizer(tokenizer); + this.bgTokenizer.setDocument(this.getDocument()); + this.tokenRe = mode.tokenRe; + this.nonTokenRe = mode.nonTokenRe; + if (!$isPlaceholder) { + if (mode.attachToSession) + mode.attachToSession(this); + this.$options.wrapMethod.set.call(this, this.$wrapMethod); + this.$setFolding(mode.foldingRules); + this.bgTokenizer.start(0); + this._emit("changeMode", { oldMode: oldMode, mode: mode }); + } + }; + EditSession.prototype.$stopWorker = function () { + if (this.$worker) { + this.$worker.terminate(); + this.$worker = null; + } + }; + EditSession.prototype.$startWorker = function () { + try { + this.$worker = this.$mode.createWorker(this); + } + catch (e) { + config.warn("Could not load worker", e); + this.$worker = null; + } + }; + EditSession.prototype.getMode = function () { + return this.$mode; + }; + EditSession.prototype.setScrollTop = function (scrollTop) { + if (this.$scrollTop === scrollTop || isNaN(scrollTop)) + return; + this.$scrollTop = scrollTop; + this._signal("changeScrollTop", scrollTop); + }; + EditSession.prototype.getScrollTop = function () { + return this.$scrollTop; + }; + EditSession.prototype.setScrollLeft = function (scrollLeft) { + if (this.$scrollLeft === scrollLeft || isNaN(scrollLeft)) + return; + this.$scrollLeft = scrollLeft; + this._signal("changeScrollLeft", scrollLeft); + }; + EditSession.prototype.getScrollLeft = function () { + return this.$scrollLeft; + }; + EditSession.prototype.getScreenWidth = function () { + this.$computeWidth(); + if (this.lineWidgets) + return Math.max(this.getLineWidgetMaxWidth(), this.screenWidth); + return this.screenWidth; + }; + EditSession.prototype.getLineWidgetMaxWidth = function () { + if (this.lineWidgetsWidth != null) + return this.lineWidgetsWidth; + var width = 0; + this.lineWidgets.forEach(function (w) { + if (w && w.screenWidth > width) + width = w.screenWidth; + }); + return this.lineWidgetWidth = width; + }; + EditSession.prototype.$computeWidth = function (force) { + if (this.$modified || force) { + this.$modified = false; + if (this.$useWrapMode) + return this.screenWidth = this.$wrapLimit; + var lines = this.doc.getAllLines(); + var cache = this.$rowLengthCache; + var longestScreenLine = 0; + var foldIndex = 0; + var foldLine = this.$foldData[foldIndex]; + var foldStart = foldLine ? foldLine.start.row : Infinity; + var len = lines.length; + for (var i = 0; i < len; i++) { + if (i > foldStart) { + i = foldLine.end.row + 1; + if (i >= len) + break; + foldLine = this.$foldData[foldIndex++]; + foldStart = foldLine ? foldLine.start.row : Infinity; + } + if (cache[i] == null) + cache[i] = this.$getStringScreenWidth(lines[i])[0]; + if (cache[i] > longestScreenLine) + longestScreenLine = cache[i]; + } + this.screenWidth = longestScreenLine; + } + }; + EditSession.prototype.getLine = function (row) { + return this.doc.getLine(row); + }; + EditSession.prototype.getLines = function (firstRow, lastRow) { + return this.doc.getLines(firstRow, lastRow); + }; + EditSession.prototype.getLength = function () { + return this.doc.getLength(); + }; + EditSession.prototype.getTextRange = function (range) { + return this.doc.getTextRange(range || this.selection.getRange()); + }; + EditSession.prototype.insert = function (position, text) { + return this.doc.insert(position, text); + }; + EditSession.prototype.remove = function (range) { + return this.doc.remove(range); + }; + EditSession.prototype.removeFullLines = function (firstRow, lastRow) { + return this.doc.removeFullLines(firstRow, lastRow); + }; + EditSession.prototype.undoChanges = function (deltas, dontSelect) { + if (!deltas.length) + return; + this.$fromUndo = true; + for (var i = deltas.length - 1; i != -1; i--) { + var delta = deltas[i]; + if (delta.action == "insert" || delta.action == "remove") { + this.doc.revertDelta(delta); + } + else if (delta.folds) { + this.addFolds(delta.folds); + } + } + if (!dontSelect && this.$undoSelect) { + if (deltas.selectionBefore) + this.selection.fromJSON(deltas.selectionBefore); + else + this.selection.setRange(this.$getUndoSelection(deltas, true)); + } + this.$fromUndo = false; + }; + EditSession.prototype.redoChanges = function (deltas, dontSelect) { + if (!deltas.length) + return; + this.$fromUndo = true; + for (var i = 0; i < deltas.length; i++) { + var delta = deltas[i]; + if (delta.action == "insert" || delta.action == "remove") { + this.doc.$safeApplyDelta(delta); + } + } + if (!dontSelect && this.$undoSelect) { + if (deltas.selectionAfter) + this.selection.fromJSON(deltas.selectionAfter); + else + this.selection.setRange(this.$getUndoSelection(deltas, false)); + } + this.$fromUndo = false; + }; + EditSession.prototype.setUndoSelect = function (enable) { + this.$undoSelect = enable; + }; + EditSession.prototype.$getUndoSelection = function (deltas, isUndo) { + function isInsert(delta) { + return isUndo ? delta.action !== "insert" : delta.action === "insert"; + } + var range, point; + for (var i = 0; i < deltas.length; i++) { + var delta = deltas[i]; + if (!delta.start) + continue; // skip folds + if (!range) { + if (isInsert(delta)) { + range = Range.fromPoints(delta.start, delta.end); + } + else { + range = Range.fromPoints(delta.start, delta.start); + } + continue; + } + if (isInsert(delta)) { + point = delta.start; + if (range.compare(point.row, point.column) == -1) { + range.setStart(point); + } + point = delta.end; + if (range.compare(point.row, point.column) == 1) { + range.setEnd(point); + } + } + else { + point = delta.start; + if (range.compare(point.row, point.column) == -1) { + range = Range.fromPoints(delta.start, delta.start); + } + } + } + return range; + }; + EditSession.prototype.replace = function (range, text) { + return this.doc.replace(range, text); + }; + EditSession.prototype.moveText = function (fromRange, toPosition, copy) { + var text = this.getTextRange(fromRange); + var folds = this.getFoldsInRange(fromRange); + var toRange = Range.fromPoints(toPosition, toPosition); + if (!copy) { + this.remove(fromRange); + var rowDiff = fromRange.start.row - fromRange.end.row; + var collDiff = rowDiff ? -fromRange.end.column : fromRange.start.column - fromRange.end.column; + if (collDiff) { + if (toRange.start.row == fromRange.end.row && toRange.start.column > fromRange.end.column) + toRange.start.column += collDiff; + if (toRange.end.row == fromRange.end.row && toRange.end.column > fromRange.end.column) + toRange.end.column += collDiff; + } + if (rowDiff && toRange.start.row >= fromRange.end.row) { + toRange.start.row += rowDiff; + toRange.end.row += rowDiff; + } + } + toRange.end = this.insert(toRange.start, text); + if (folds.length) { + var oldStart = fromRange.start; + var newStart = toRange.start; + var rowDiff = newStart.row - oldStart.row; + var collDiff = newStart.column - oldStart.column; + this.addFolds(folds.map(function (x) { + x = x.clone(); + if (x.start.row == oldStart.row) + x.start.column += collDiff; + if (x.end.row == oldStart.row) + x.end.column += collDiff; + x.start.row += rowDiff; + x.end.row += rowDiff; + return x; + })); + } + return toRange; + }; + EditSession.prototype.indentRows = function (startRow, endRow, indentString) { + indentString = indentString.replace(/\t/g, this.getTabString()); + for (var row = startRow; row <= endRow; row++) + this.doc.insertInLine({ row: row, column: 0 }, indentString); + }; + EditSession.prototype.outdentRows = function (range) { + var rowRange = range.collapseRows(); + var deleteRange = new Range(0, 0, 0, 0); + var size = this.getTabSize(); + for (var i = rowRange.start.row; i <= rowRange.end.row; ++i) { + var line = this.getLine(i); + deleteRange.start.row = i; + deleteRange.end.row = i; + for (var j = 0; j < size; ++j) + if (line.charAt(j) != ' ') + break; + if (j < size && line.charAt(j) == '\t') { + deleteRange.start.column = j; + deleteRange.end.column = j + 1; + } + else { + deleteRange.start.column = 0; + deleteRange.end.column = j; + } + this.remove(deleteRange); + } + }; + EditSession.prototype.$moveLines = function (firstRow, lastRow, dir) { + firstRow = this.getRowFoldStart(firstRow); + lastRow = this.getRowFoldEnd(lastRow); + if (dir < 0) { + var row = this.getRowFoldStart(firstRow + dir); + if (row < 0) + return 0; + var diff = row - firstRow; + } + else if (dir > 0) { + var row = this.getRowFoldEnd(lastRow + dir); + if (row > this.doc.getLength() - 1) + return 0; + var diff = row - lastRow; + } + else { + firstRow = this.$clipRowToDocument(firstRow); + lastRow = this.$clipRowToDocument(lastRow); + var diff = lastRow - firstRow + 1; + } + var range = new Range(firstRow, 0, lastRow, Number.MAX_VALUE); + var folds = this.getFoldsInRange(range).map(function (x) { + x = x.clone(); + x.start.row += diff; + x.end.row += diff; + return x; + }); + var lines = dir == 0 + ? this.doc.getLines(firstRow, lastRow) + : this.doc.removeFullLines(firstRow, lastRow); + this.doc.insertFullLines(firstRow + diff, lines); + folds.length && this.addFolds(folds); + return diff; + }; + EditSession.prototype.moveLinesUp = function (firstRow, lastRow) { + return this.$moveLines(firstRow, lastRow, -1); + }; + EditSession.prototype.moveLinesDown = function (firstRow, lastRow) { + return this.$moveLines(firstRow, lastRow, 1); + }; + EditSession.prototype.duplicateLines = function (firstRow, lastRow) { + return this.$moveLines(firstRow, lastRow, 0); + }; + EditSession.prototype.$clipRowToDocument = function (row) { + return Math.max(0, Math.min(row, this.doc.getLength() - 1)); + }; + EditSession.prototype.$clipColumnToRow = function (row, column) { + if (column < 0) + return 0; + return Math.min(this.doc.getLine(row).length, column); + }; + EditSession.prototype.$clipPositionToDocument = function (row, column) { + column = Math.max(0, column); + if (row < 0) { + row = 0; + column = 0; + } + else { + var len = this.doc.getLength(); + if (row >= len) { + row = len - 1; + column = this.doc.getLine(len - 1).length; + } + else { + column = Math.min(this.doc.getLine(row).length, column); + } + } + return { + row: row, + column: column + }; + }; + EditSession.prototype.$clipRangeToDocument = function (range) { + if (range.start.row < 0) { + range.start.row = 0; + range.start.column = 0; + } + else { + range.start.column = this.$clipColumnToRow(range.start.row, range.start.column); + } + var len = this.doc.getLength() - 1; + if (range.end.row > len) { + range.end.row = len; + range.end.column = this.doc.getLine(len).length; + } + else { + range.end.column = this.$clipColumnToRow(range.end.row, range.end.column); + } + return range; + }; + EditSession.prototype.setUseWrapMode = function (useWrapMode) { + if (useWrapMode != this.$useWrapMode) { + this.$useWrapMode = useWrapMode; + this.$modified = true; + this.$resetRowCache(0); + if (useWrapMode) { + var len = this.getLength(); + this.$wrapData = Array(len); + this.$updateWrapData(0, len - 1); + } + this._signal("changeWrapMode"); + } + }; + EditSession.prototype.getUseWrapMode = function () { + return this.$useWrapMode; + }; + EditSession.prototype.setWrapLimitRange = function (min, max) { + if (this.$wrapLimitRange.min !== min || this.$wrapLimitRange.max !== max) { + this.$wrapLimitRange = { min: min, max: max }; + this.$modified = true; + this.$bidiHandler.markAsDirty(); + if (this.$useWrapMode) + this._signal("changeWrapMode"); + } + }; + EditSession.prototype.adjustWrapLimit = function (desiredLimit, $printMargin) { + var limits = this.$wrapLimitRange; + if (limits.max < 0) + limits = { min: $printMargin, max: $printMargin }; + var wrapLimit = this.$constrainWrapLimit(desiredLimit, limits.min, limits.max); + if (wrapLimit != this.$wrapLimit && wrapLimit > 1) { + this.$wrapLimit = wrapLimit; + this.$modified = true; + if (this.$useWrapMode) { + this.$updateWrapData(0, this.getLength() - 1); + this.$resetRowCache(0); + this._signal("changeWrapLimit"); + } + return true; + } + return false; + }; + EditSession.prototype.$constrainWrapLimit = function (wrapLimit, min, max) { + if (min) + wrapLimit = Math.max(min, wrapLimit); + if (max) + wrapLimit = Math.min(max, wrapLimit); + return wrapLimit; + }; + EditSession.prototype.getWrapLimit = function () { + return this.$wrapLimit; + }; + EditSession.prototype.setWrapLimit = function (limit) { + this.setWrapLimitRange(limit, limit); + }; + EditSession.prototype.getWrapLimitRange = function () { + return { + min: this.$wrapLimitRange.min, + max: this.$wrapLimitRange.max + }; + }; + EditSession.prototype.$updateInternalDataOnChange = function (delta) { + var useWrapMode = this.$useWrapMode; + var action = delta.action; + var start = delta.start; + var end = delta.end; + var firstRow = start.row; + var lastRow = end.row; + var len = lastRow - firstRow; + var removedFolds = null; + this.$updating = true; + if (len != 0) { + if (action === "remove") { + this[useWrapMode ? "$wrapData" : "$rowLengthCache"].splice(firstRow, len); + var foldLines = this.$foldData; + removedFolds = this.getFoldsInRange(delta); + this.removeFolds(removedFolds); + var foldLine = this.getFoldLine(end.row); + var idx = 0; + if (foldLine) { + foldLine.addRemoveChars(end.row, end.column, start.column - end.column); + foldLine.shiftRow(-len); + var foldLineBefore = this.getFoldLine(firstRow); + if (foldLineBefore && foldLineBefore !== foldLine) { + foldLineBefore.merge(foldLine); + foldLine = foldLineBefore; + } + idx = foldLines.indexOf(foldLine) + 1; + } + for (idx; idx < foldLines.length; idx++) { + var foldLine = foldLines[idx]; + if (foldLine.start.row >= end.row) { + foldLine.shiftRow(-len); + } + } + lastRow = firstRow; + } + else { + var args = Array(len); + args.unshift(firstRow, 0); + var arr = useWrapMode ? this.$wrapData : this.$rowLengthCache; + arr.splice.apply(arr, args); + var foldLines = this.$foldData; + var foldLine = this.getFoldLine(firstRow); + var idx = 0; + if (foldLine) { + var cmp = foldLine.range.compareInside(start.row, start.column); + if (cmp == 0) { + foldLine = foldLine.split(start.row, start.column); + if (foldLine) { + foldLine.shiftRow(len); + foldLine.addRemoveChars(lastRow, 0, end.column - start.column); + } + } + else + if (cmp == -1) { + foldLine.addRemoveChars(firstRow, 0, end.column - start.column); + foldLine.shiftRow(len); + } + idx = foldLines.indexOf(foldLine) + 1; + } + for (idx; idx < foldLines.length; idx++) { + var foldLine = foldLines[idx]; + if (foldLine.start.row >= firstRow) { + foldLine.shiftRow(len); + } + } + } + } + else { + len = Math.abs(delta.start.column - delta.end.column); + if (action === "remove") { + removedFolds = this.getFoldsInRange(delta); + this.removeFolds(removedFolds); + len = -len; + } + var foldLine = this.getFoldLine(firstRow); + if (foldLine) { + foldLine.addRemoveChars(firstRow, start.column, len); + } + } + if (useWrapMode && this.$wrapData.length != this.doc.getLength()) { + console.error("doc.getLength() and $wrapData.length have to be the same!"); + } + this.$updating = false; + if (useWrapMode) + this.$updateWrapData(firstRow, lastRow); + else + this.$updateRowLengthCache(firstRow, lastRow); + return removedFolds; + }; + EditSession.prototype.$updateRowLengthCache = function (firstRow, lastRow, b) { + this.$rowLengthCache[firstRow] = null; + this.$rowLengthCache[lastRow] = null; + }; + EditSession.prototype.$updateWrapData = function (firstRow, lastRow) { + var lines = this.doc.getAllLines(); + var tabSize = this.getTabSize(); + var wrapData = this.$wrapData; + var wrapLimit = this.$wrapLimit; + var tokens; + var foldLine; + var row = firstRow; + lastRow = Math.min(lastRow, lines.length - 1); + while (row <= lastRow) { + foldLine = this.getFoldLine(row, foldLine); + if (!foldLine) { + tokens = this.$getDisplayTokens(lines[row]); + wrapData[row] = this.$computeWrapSplits(tokens, wrapLimit, tabSize); + row++; + } + else { + tokens = []; + foldLine.walk(function (placeholder, row, column, lastColumn) { + var walkTokens; + if (placeholder != null) { + walkTokens = this.$getDisplayTokens(placeholder, tokens.length); + walkTokens[0] = PLACEHOLDER_START; + for (var i = 1; i < walkTokens.length; i++) { + walkTokens[i] = PLACEHOLDER_BODY; + } + } + else { + walkTokens = this.$getDisplayTokens(lines[row].substring(lastColumn, column), tokens.length); + } + tokens = tokens.concat(walkTokens); + }.bind(this), foldLine.end.row, lines[foldLine.end.row].length + 1); + wrapData[foldLine.start.row] = this.$computeWrapSplits(tokens, wrapLimit, tabSize); + row = foldLine.end.row + 1; + } + } + }; + EditSession.prototype.$computeWrapSplits = function (tokens, wrapLimit, tabSize) { + if (tokens.length == 0) { + return []; + } + var splits = []; + var displayLength = tokens.length; + var lastSplit = 0, lastDocSplit = 0; + var isCode = this.$wrapAsCode; + var indentedSoftWrap = this.$indentedSoftWrap; + var maxIndent = wrapLimit <= Math.max(2 * tabSize, 8) + || indentedSoftWrap === false ? 0 : Math.floor(wrapLimit / 2); + function getWrapIndent() { + var indentation = 0; + if (maxIndent === 0) + return indentation; + if (indentedSoftWrap) { + for (var i = 0; i < tokens.length; i++) { + var token = tokens[i]; + if (token == SPACE) + indentation += 1; + else if (token == TAB) + indentation += tabSize; + else if (token == TAB_SPACE) + continue; + else + break; + } + } + if (isCode && indentedSoftWrap !== false) + indentation += tabSize; + return Math.min(indentation, maxIndent); + } + function addSplit(screenPos) { + var len = screenPos - lastSplit; + for (var i = lastSplit; i < screenPos; i++) { + var ch = tokens[i]; + if (ch === 12 || ch === 2) + len -= 1; + } + if (!splits.length) { + indent = getWrapIndent(); + splits.indent = indent; + } + lastDocSplit += len; + splits.push(lastDocSplit); + lastSplit = screenPos; + } + var indent = 0; + while (displayLength - lastSplit > wrapLimit - indent) { + var split = lastSplit + wrapLimit - indent; + if (tokens[split - 1] >= SPACE && tokens[split] >= SPACE) { + addSplit(split); + continue; + } + if (tokens[split] == PLACEHOLDER_START || tokens[split] == PLACEHOLDER_BODY) { + for (split; split != lastSplit - 1; split--) { + if (tokens[split] == PLACEHOLDER_START) { + break; + } + } + if (split > lastSplit) { + addSplit(split); + continue; + } + split = lastSplit + wrapLimit; + for (split; split < tokens.length; split++) { + if (tokens[split] != PLACEHOLDER_BODY) { + break; + } + } + if (split == tokens.length) { + break; // Breaks the while-loop. + } + addSplit(split); + continue; + } + var minSplit = Math.max(split - (wrapLimit - (wrapLimit >> 2)), lastSplit - 1); + while (split > minSplit && tokens[split] < PLACEHOLDER_START) { + split--; + } + if (isCode) { + while (split > minSplit && tokens[split] < PLACEHOLDER_START) { + split--; + } + while (split > minSplit && tokens[split] == PUNCTUATION) { + split--; + } + } + else { + while (split > minSplit && tokens[split] < SPACE) { + split--; + } + } + if (split > minSplit) { + addSplit(++split); + continue; + } + split = lastSplit + wrapLimit; + if (tokens[split] == CHAR_EXT) + split--; + addSplit(split - indent); + } + return splits; + }; + EditSession.prototype.$getDisplayTokens = function (str, offset) { + var arr = []; + var tabSize; + offset = offset || 0; + for (var i = 0; i < str.length; i++) { + var c = str.charCodeAt(i); + if (c == 9) { + tabSize = this.getScreenTabSize(arr.length + offset); + arr.push(TAB); + for (var n = 1; n < tabSize; n++) { + arr.push(TAB_SPACE); + } + } + else if (c == 32) { + arr.push(SPACE); + } + else if ((c > 39 && c < 48) || (c > 57 && c < 64)) { + arr.push(PUNCTUATION); + } + else if (c >= 0x1100 && isFullWidth(c)) { + arr.push(CHAR, CHAR_EXT); + } + else { + arr.push(CHAR); + } + } + return arr; + }; + EditSession.prototype.$getStringScreenWidth = function (str, maxScreenColumn, screenColumn) { + if (maxScreenColumn == 0) + return [0, 0]; + if (maxScreenColumn == null) + maxScreenColumn = Infinity; + screenColumn = screenColumn || 0; + var c, column; + for (column = 0; column < str.length; column++) { + c = str.charCodeAt(column); + if (c == 9) { + screenColumn += this.getScreenTabSize(screenColumn); + } + else if (c >= 0x1100 && isFullWidth(c)) { + screenColumn += 2; + } + else { + screenColumn += 1; + } + if (screenColumn > maxScreenColumn) { + break; + } + } + return [screenColumn, column]; + }; + EditSession.prototype.getRowLength = function (row) { + var h = 1; + if (this.lineWidgets) + h += this.lineWidgets[row] && this.lineWidgets[row].rowCount || 0; + if (!this.$useWrapMode || !this.$wrapData[row]) + return h; + else + return this.$wrapData[row].length + h; + }; + EditSession.prototype.getRowLineCount = function (row) { + if (!this.$useWrapMode || !this.$wrapData[row]) { + return 1; + } + else { + return this.$wrapData[row].length + 1; + } + }; + EditSession.prototype.getRowWrapIndent = function (screenRow) { + if (this.$useWrapMode) { + var pos = this.screenToDocumentPosition(screenRow, Number.MAX_VALUE); + var splits = this.$wrapData[pos.row]; + return splits.length && splits[0] < pos.column ? splits.indent : 0; + } + else { + return 0; + } + }; + EditSession.prototype.getScreenLastRowColumn = function (screenRow) { + var pos = this.screenToDocumentPosition(screenRow, Number.MAX_VALUE); + return this.documentToScreenColumn(pos.row, pos.column); + }; + EditSession.prototype.getDocumentLastRowColumn = function (docRow, docColumn) { + var screenRow = this.documentToScreenRow(docRow, docColumn); + return this.getScreenLastRowColumn(screenRow); + }; + EditSession.prototype.getDocumentLastRowColumnPosition = function (docRow, docColumn) { + var screenRow = this.documentToScreenRow(docRow, docColumn); + return this.screenToDocumentPosition(screenRow, Number.MAX_VALUE / 10); + }; + EditSession.prototype.getRowSplitData = function (row) { + if (!this.$useWrapMode) { + return undefined; + } + else { + return this.$wrapData[row]; + } + }; + EditSession.prototype.getScreenTabSize = function (screenColumn) { + return this.$tabSize - (screenColumn % this.$tabSize | 0); + }; + EditSession.prototype.screenToDocumentRow = function (screenRow, screenColumn) { + return this.screenToDocumentPosition(screenRow, screenColumn).row; + }; + EditSession.prototype.screenToDocumentColumn = function (screenRow, screenColumn) { + return this.screenToDocumentPosition(screenRow, screenColumn).column; + }; + EditSession.prototype.screenToDocumentPosition = function (screenRow, screenColumn, offsetX) { + if (screenRow < 0) + return { row: 0, column: 0 }; + var line; + var docRow = 0; + var docColumn = 0; + var column; + var row = 0; + var rowLength = 0; + var rowCache = this.$screenRowCache; + var i = this.$getRowCacheIndex(rowCache, screenRow); + var l = rowCache.length; + if (l && i >= 0) { + var row = rowCache[i]; + var docRow = this.$docRowCache[i]; + var doCache = screenRow > rowCache[l - 1]; + } + else { + var doCache = !l; + } + var maxRow = this.getLength() - 1; + var foldLine = this.getNextFoldLine(docRow); + var foldStart = foldLine ? foldLine.start.row : Infinity; + while (row <= screenRow) { + rowLength = this.getRowLength(docRow); + if (row + rowLength > screenRow || docRow >= maxRow) { + break; + } + else { + row += rowLength; + docRow++; + if (docRow > foldStart) { + docRow = foldLine.end.row + 1; + foldLine = this.getNextFoldLine(docRow, foldLine); + foldStart = foldLine ? foldLine.start.row : Infinity; + } + } + if (doCache) { + this.$docRowCache.push(docRow); + this.$screenRowCache.push(row); + } + } + if (foldLine && foldLine.start.row <= docRow) { + line = this.getFoldDisplayLine(foldLine); + docRow = foldLine.start.row; + } + else if (row + rowLength <= screenRow || docRow > maxRow) { + return { + row: maxRow, + column: this.getLine(maxRow).length + }; + } + else { + line = this.getLine(docRow); + foldLine = null; + } + var wrapIndent = 0, splitIndex = Math.floor(screenRow - row); + if (this.$useWrapMode) { + var splits = this.$wrapData[docRow]; + if (splits) { + column = splits[splitIndex]; + if (splitIndex > 0 && splits.length) { + wrapIndent = splits.indent; + docColumn = splits[splitIndex - 1] || splits[splits.length - 1]; + line = line.substring(docColumn); + } + } + } + if (offsetX !== undefined && this.$bidiHandler.isBidiRow(row + splitIndex, docRow, splitIndex)) + screenColumn = this.$bidiHandler.offsetToCol(offsetX); + docColumn += this.$getStringScreenWidth(line, screenColumn - wrapIndent)[1]; + if (this.$useWrapMode && docColumn >= column) + docColumn = column - 1; + if (foldLine) + return foldLine.idxToPosition(docColumn); + return { row: docRow, column: docColumn }; + }; + EditSession.prototype.documentToScreenPosition = function (docRow, docColumn) { + if (typeof docColumn === "undefined") + var pos = this.$clipPositionToDocument(docRow.row, docRow.column); + else + pos = this.$clipPositionToDocument(docRow, docColumn); + docRow = pos.row; + docColumn = pos.column; + var screenRow = 0; + var foldStartRow = null; + var fold = null; + fold = this.getFoldAt(docRow, docColumn, 1); + if (fold) { + docRow = fold.start.row; + docColumn = fold.start.column; + } + var rowEnd, row = 0; + var rowCache = this.$docRowCache; + var i = this.$getRowCacheIndex(rowCache, docRow); + var l = rowCache.length; + if (l && i >= 0) { + var row = rowCache[i]; + var screenRow = this.$screenRowCache[i]; + var doCache = docRow > rowCache[l - 1]; + } + else { + var doCache = !l; + } + var foldLine = this.getNextFoldLine(row); + var foldStart = foldLine ? foldLine.start.row : Infinity; + while (row < docRow) { + if (row >= foldStart) { + rowEnd = foldLine.end.row + 1; + if (rowEnd > docRow) + break; + foldLine = this.getNextFoldLine(rowEnd, foldLine); + foldStart = foldLine ? foldLine.start.row : Infinity; + } + else { + rowEnd = row + 1; + } + screenRow += this.getRowLength(row); + row = rowEnd; + if (doCache) { + this.$docRowCache.push(row); + this.$screenRowCache.push(screenRow); + } + } + var textLine = ""; + if (foldLine && row >= foldStart) { + textLine = this.getFoldDisplayLine(foldLine, docRow, docColumn); + foldStartRow = foldLine.start.row; + } + else { + textLine = this.getLine(docRow).substring(0, docColumn); + foldStartRow = docRow; + } + var wrapIndent = 0; + if (this.$useWrapMode) { + var wrapRow = this.$wrapData[foldStartRow]; + if (wrapRow) { + var screenRowOffset = 0; + while (textLine.length >= wrapRow[screenRowOffset]) { + screenRow++; + screenRowOffset++; + } + textLine = textLine.substring(wrapRow[screenRowOffset - 1] || 0, textLine.length); + wrapIndent = screenRowOffset > 0 ? wrapRow.indent : 0; + } + } + if (this.lineWidgets && this.lineWidgets[row] && this.lineWidgets[row].rowsAbove) + screenRow += this.lineWidgets[row].rowsAbove; + return { + row: screenRow, + column: wrapIndent + this.$getStringScreenWidth(textLine)[0] + }; + }; + EditSession.prototype.documentToScreenColumn = function (row, docColumn) { + return this.documentToScreenPosition(row, docColumn).column; + }; + EditSession.prototype.documentToScreenRow = function (docRow, docColumn) { + return this.documentToScreenPosition(docRow, docColumn).row; + }; + EditSession.prototype.getScreenLength = function () { + var screenRows = 0; + var fold = null; + if (!this.$useWrapMode) { + screenRows = this.getLength(); + var foldData = this.$foldData; + for (var i = 0; i < foldData.length; i++) { + fold = foldData[i]; + screenRows -= fold.end.row - fold.start.row; + } + } + else { + var lastRow = this.$wrapData.length; + var row = 0, i = 0; + var fold = this.$foldData[i++]; + var foldStart = fold ? fold.start.row : Infinity; + while (row < lastRow) { + var splits = this.$wrapData[row]; + screenRows += splits ? splits.length + 1 : 1; + row++; + if (row > foldStart) { + row = fold.end.row + 1; + fold = this.$foldData[i++]; + foldStart = fold ? fold.start.row : Infinity; + } + } + } + if (this.lineWidgets) + screenRows += this.$getWidgetScreenLength(); + return screenRows; + }; + EditSession.prototype.$setFontMetrics = function (fm) { + if (!this.$enableVarChar) + return; + this.$getStringScreenWidth = function (str, maxScreenColumn, screenColumn) { + if (maxScreenColumn === 0) + return [0, 0]; + if (!maxScreenColumn) + maxScreenColumn = Infinity; + screenColumn = screenColumn || 0; + var c, column; + for (column = 0; column < str.length; column++) { + c = str.charAt(column); + if (c === "\t") { + screenColumn += this.getScreenTabSize(screenColumn); + } + else { + screenColumn += fm.getCharacterWidth(c); + } + if (screenColumn > maxScreenColumn) { + break; + } + } + return [screenColumn, column]; + }; + }; + EditSession.prototype.destroy = function () { + if (!this.destroyed) { + this.bgTokenizer.setDocument(null); + this.bgTokenizer.cleanup(); + this.destroyed = true; + } + this.$stopWorker(); + this.removeAllListeners(); + if (this.doc) { + this.doc.off("change", this.$onChange); + } + this.selection.detach(); + }; + return EditSession; +}()); +EditSession.$uid = 0; +EditSession.prototype.$modes = config.$modes; +EditSession.prototype.getValue = EditSession.prototype.toString; +EditSession.prototype.$defaultUndoManager = { + undo: function () { }, + redo: function () { }, + hasUndo: function () { }, + hasRedo: function () { }, + reset: function () { }, + add: function () { }, + addSelection: function () { }, + startNewGroup: function () { }, + addSession: function () { } +}; +EditSession.prototype.$overwrite = false; +EditSession.prototype.$mode = null; +EditSession.prototype.$modeId = null; +EditSession.prototype.$scrollTop = 0; +EditSession.prototype.$scrollLeft = 0; +EditSession.prototype.$wrapLimit = 80; +EditSession.prototype.$useWrapMode = false; +EditSession.prototype.$wrapLimitRange = { + min: null, + max: null +}; +EditSession.prototype.lineWidgets = null; +EditSession.prototype.isFullWidth = isFullWidth; +oop.implement(EditSession.prototype, EventEmitter); +var CHAR = 1, CHAR_EXT = 2, PLACEHOLDER_START = 3, PLACEHOLDER_BODY = 4, PUNCTUATION = 9, SPACE = 10, TAB = 11, TAB_SPACE = 12; +function isFullWidth(c) { + if (c < 0x1100) + return false; + return c >= 0x1100 && c <= 0x115F || + c >= 0x11A3 && c <= 0x11A7 || + c >= 0x11FA && c <= 0x11FF || + c >= 0x2329 && c <= 0x232A || + c >= 0x2E80 && c <= 0x2E99 || + c >= 0x2E9B && c <= 0x2EF3 || + c >= 0x2F00 && c <= 0x2FD5 || + c >= 0x2FF0 && c <= 0x2FFB || + c >= 0x3000 && c <= 0x303E || + c >= 0x3041 && c <= 0x3096 || + c >= 0x3099 && c <= 0x30FF || + c >= 0x3105 && c <= 0x312D || + c >= 0x3131 && c <= 0x318E || + c >= 0x3190 && c <= 0x31BA || + c >= 0x31C0 && c <= 0x31E3 || + c >= 0x31F0 && c <= 0x321E || + c >= 0x3220 && c <= 0x3247 || + c >= 0x3250 && c <= 0x32FE || + c >= 0x3300 && c <= 0x4DBF || + c >= 0x4E00 && c <= 0xA48C || + c >= 0xA490 && c <= 0xA4C6 || + c >= 0xA960 && c <= 0xA97C || + c >= 0xAC00 && c <= 0xD7A3 || + c >= 0xD7B0 && c <= 0xD7C6 || + c >= 0xD7CB && c <= 0xD7FB || + c >= 0xF900 && c <= 0xFAFF || + c >= 0xFE10 && c <= 0xFE19 || + c >= 0xFE30 && c <= 0xFE52 || + c >= 0xFE54 && c <= 0xFE66 || + c >= 0xFE68 && c <= 0xFE6B || + c >= 0xFF01 && c <= 0xFF60 || + c >= 0xFFE0 && c <= 0xFFE6; +} +require("./edit_session/folding").Folding.call(EditSession.prototype); +require("./edit_session/bracket_match").BracketMatch.call(EditSession.prototype); +config.defineOptions(EditSession.prototype, "session", { + wrap: { + set: function (value) { + if (!value || value == "off") + value = false; + else if (value == "free") + value = true; + else if (value == "printMargin") + value = -1; + else if (typeof value == "string") + value = parseInt(value, 10) || false; + if (this.$wrap == value) + return; + this.$wrap = value; + if (!value) { + this.setUseWrapMode(false); + } + else { + var col = typeof value == "number" ? value : null; + this.setWrapLimitRange(col, col); + this.setUseWrapMode(true); + } + }, + get: function () { + if (this.getUseWrapMode()) { + if (this.$wrap == -1) + return "printMargin"; + if (!this.getWrapLimitRange().min) + return "free"; + return this.$wrap; + } + return "off"; + }, + handlesSet: true + }, + wrapMethod: { + set: function (val) { + val = val == "auto" + ? this.$mode.type != "text" + : val != "text"; + if (val != this.$wrapAsCode) { + this.$wrapAsCode = val; + if (this.$useWrapMode) { + this.$useWrapMode = false; + this.setUseWrapMode(true); + } + } + }, + initialValue: "auto" + }, + indentedSoftWrap: { + set: function () { + if (this.$useWrapMode) { + this.$useWrapMode = false; + this.setUseWrapMode(true); + } + }, + initialValue: true + }, + firstLineNumber: { + set: function () { this._signal("changeBreakpoint"); }, + initialValue: 1 + }, + useWorker: { + set: function (useWorker) { + this.$useWorker = useWorker; + this.$stopWorker(); + if (useWorker) + this.$startWorker(); + }, + initialValue: true + }, + useSoftTabs: { initialValue: true }, + tabSize: { + set: function (tabSize) { + tabSize = parseInt(tabSize); + if (tabSize > 0 && this.$tabSize !== tabSize) { + this.$modified = true; + this.$rowLengthCache = []; + this.$tabSize = tabSize; + this._signal("changeTabSize"); + } + }, + initialValue: 4, + handlesSet: true + }, + navigateWithinSoftTabs: { initialValue: false }, + foldStyle: { + set: function (val) { this.setFoldStyle(val); }, + handlesSet: true + }, + overwrite: { + set: function (val) { this._signal("changeOverwrite"); }, + initialValue: false + }, + newLineMode: { + set: function (val) { this.doc.setNewLineMode(val); }, + get: function () { return this.doc.getNewLineMode(); }, + handlesSet: true + }, + mode: { + set: function (val) { this.setMode(val); }, + get: function () { return this.$modeId; }, + handlesSet: true + } +}); +exports.EditSession = EditSession; + +}); + +ace.define("ace/search",["require","exports","module","ace/lib/lang","ace/lib/oop","ace/range"], function(require, exports, module){"use strict"; +var lang = require("./lib/lang"); +var oop = require("./lib/oop"); +var Range = require("./range").Range; +var Search = /** @class */ (function () { + function Search() { + this.$options = {}; + } + Search.prototype.set = function (options) { + oop.mixin(this.$options, options); + return this; + }; + Search.prototype.getOptions = function () { + return lang.copyObject(this.$options); + }; + Search.prototype.setOptions = function (options) { + this.$options = options; + }; + Search.prototype.find = function (session) { + var options = this.$options; + var iterator = this.$matchIterator(session, options); + if (!iterator) + return false; + var firstRange = null; + iterator.forEach(function (sr, sc, er, ec) { + firstRange = new Range(sr, sc, er, ec); + if (sc == ec && options.start && options.start.start + && options.skipCurrent != false && firstRange.isEqual(options.start)) { + firstRange = null; + return false; + } + return true; + }); + return firstRange; + }; + Search.prototype.findAll = function (session) { + var options = this.$options; + if (!options.needle) + return []; + this.$assembleRegExp(options); + var range = options.range; + var lines = range + ? session.getLines(range.start.row, range.end.row) + : session.doc.getAllLines(); + var ranges = []; + var re = options.re; + if (options.$isMultiLine) { + var len = re.length; + var maxRow = lines.length - len; + var prevRange; + outer: for (var row = re.offset || 0; row <= maxRow; row++) { + for (var j = 0; j < len; j++) + if (lines[row + j].search(re[j]) == -1) + continue outer; + var startLine = lines[row]; + var line = lines[row + len - 1]; + var startIndex = startLine.length - startLine.match(re[0])[0].length; + var endIndex = line.match(re[len - 1])[0].length; + if (prevRange && prevRange.end.row === row && + prevRange.end.column > startIndex) { + continue; + } + ranges.push(prevRange = new Range(row, startIndex, row + len - 1, endIndex)); + if (len > 2) + row = row + len - 2; + } + } + else { + for (var i = 0; i < lines.length; i++) { + var matches = lang.getMatchOffsets(lines[i], re); + for (var j = 0; j < matches.length; j++) { + var match = matches[j]; + ranges.push(new Range(i, match.offset, i, match.offset + match.length)); + } + } + } + if (range) { + var startColumn = range.start.column; + var endColumn = range.end.column; + var i = 0, j = ranges.length - 1; + while (i < j && ranges[i].start.column < startColumn && ranges[i].start.row == 0) + i++; + var endRow = range.end.row - range.start.row; + while (i < j && ranges[j].end.column > endColumn && ranges[j].end.row == endRow) + j--; + ranges = ranges.slice(i, j + 1); + for (i = 0, j = ranges.length; i < j; i++) { + ranges[i].start.row += range.start.row; + ranges[i].end.row += range.start.row; + } + } + return ranges; + }; + Search.prototype.replace = function (input, replacement) { + var options = this.$options; + var re = this.$assembleRegExp(options); + if (options.$isMultiLine) + return replacement; + if (!re) + return; + var match = re.exec(input); + if (!match || match[0].length != input.length) + return null; + replacement = input.replace(re, replacement); + if (options.preserveCase) { + replacement = replacement.split(""); + for (var i = Math.min(input.length, input.length); i--;) { + var ch = input[i]; + if (ch && ch.toLowerCase() != ch) + replacement[i] = replacement[i].toUpperCase(); + else + replacement[i] = replacement[i].toLowerCase(); + } + replacement = replacement.join(""); + } + return replacement; + }; + Search.prototype.$assembleRegExp = function (options, $disableFakeMultiline) { + if (options.needle instanceof RegExp) + return options.re = options.needle; + var needle = options.needle; + if (!options.needle) + return options.re = false; + if (!options.regExp) + needle = lang.escapeRegExp(needle); + var modifier = options.caseSensitive ? "gm" : "gmi"; + try { + new RegExp(needle, "u"); + options.$supportsUnicodeFlag = true; + modifier += "u"; + } + catch (e) { + options.$supportsUnicodeFlag = false; //left for backward compatibility with previous versions for cases like /ab\{2}/gu + } + if (options.wholeWord) + needle = addWordBoundary(needle, options); + options.$isMultiLine = !$disableFakeMultiline && /[\n\r]/.test(needle); + if (options.$isMultiLine) + return options.re = this.$assembleMultilineRegExp(needle, modifier); + try { + var re = new RegExp(needle, modifier); + } + catch (e) { + re = false; + } + return options.re = re; + }; + Search.prototype.$assembleMultilineRegExp = function (needle, modifier) { + var parts = needle.replace(/\r\n|\r|\n/g, "$\n^").split("\n"); + var re = []; + for (var i = 0; i < parts.length; i++) + try { + re.push(new RegExp(parts[i], modifier)); + } + catch (e) { + return false; + } + return re; + }; + Search.prototype.$matchIterator = function (session, options) { + var re = this.$assembleRegExp(options); + if (!re) + return false; + var backwards = options.backwards == true; + var skipCurrent = options.skipCurrent != false; + var supportsUnicodeFlag = re.unicode; + var range = options.range; + var start = options.start; + if (!start) + start = range ? range[backwards ? "end" : "start"] : session.selection.getRange(); + if (start.start) + start = start[skipCurrent != backwards ? "end" : "start"]; + var firstRow = range ? range.start.row : 0; + var lastRow = range ? range.end.row : session.getLength() - 1; + if (backwards) { + var forEach = function (callback) { + var row = start.row; + if (forEachInLine(row, start.column, callback)) + return; + for (row--; row >= firstRow; row--) + if (forEachInLine(row, Number.MAX_VALUE, callback)) + return; + if (options.wrap == false) + return; + for (row = lastRow, firstRow = start.row; row >= firstRow; row--) + if (forEachInLine(row, Number.MAX_VALUE, callback)) + return; + }; + } + else { + var forEach = function (callback) { + var row = start.row; + if (forEachInLine(row, start.column, callback)) + return; + for (row = row + 1; row <= lastRow; row++) + if (forEachInLine(row, 0, callback)) + return; + if (options.wrap == false) + return; + for (row = firstRow, lastRow = start.row; row <= lastRow; row++) + if (forEachInLine(row, 0, callback)) + return; + }; + } + if (options.$isMultiLine) { + var len = re.length; + var forEachInLine = function (row, offset, callback) { + var startRow = backwards ? row - len + 1 : row; + if (startRow < 0 || startRow + len > session.getLength()) + return; + var line = session.getLine(startRow); + var startIndex = line.search(re[0]); + if (!backwards && startIndex < offset || startIndex === -1) + return; + for (var i = 1; i < len; i++) { + line = session.getLine(startRow + i); + if (line.search(re[i]) == -1) + return; + } + var endIndex = line.match(re[len - 1])[0].length; + if (backwards && endIndex > offset) + return; + if (callback(startRow, startIndex, startRow + len - 1, endIndex)) + return true; + }; + } + else if (backwards) { + var forEachInLine = function (row, endIndex, callback) { + var line = session.getLine(row); + var matches = []; + var m, last = 0; + re.lastIndex = 0; + while ((m = re.exec(line))) { + var length = m[0].length; + last = m.index; + if (!length) { + if (last >= line.length) + break; + re.lastIndex = last += lang.skipEmptyMatch(line, last, supportsUnicodeFlag); + } + if (m.index + length > endIndex) + break; + matches.push(m.index, length); + } + for (var i = matches.length - 1; i >= 0; i -= 2) { + var column = matches[i - 1]; + var length = matches[i]; + if (callback(row, column, row, column + length)) + return true; + } + }; + } + else { + var forEachInLine = function (row, startIndex, callback) { + var line = session.getLine(row); + var last; + var m; + re.lastIndex = startIndex; + while ((m = re.exec(line))) { + var length = m[0].length; + last = m.index; + if (callback(row, last, row, last + length)) + return true; + if (!length) { + re.lastIndex = last += lang.skipEmptyMatch(line, last, supportsUnicodeFlag); + if (last >= line.length) + return false; + } + } + }; + } + return { forEach: forEach }; + }; + return Search; +}()); +function addWordBoundary(needle, options) { + var supportsLookbehind = lang.supportsLookbehind(); + function wordBoundary(c, firstChar) { + if (firstChar === void 0) { firstChar = true; } + var wordRegExp = supportsLookbehind && options.$supportsUnicodeFlag ? new RegExp("[\\p{L}\\p{N}_]", "u") : new RegExp("\\w"); + if (wordRegExp.test(c) || options.regExp) { + if (supportsLookbehind && options.$supportsUnicodeFlag) { + if (firstChar) + return "(?<=^|[^\\p{L}\\p{N}_])"; + return "(?=[^\\p{L}\\p{N}_]|$)"; + } + return "\\b"; + } + return ""; + } + var needleArray = Array.from(needle); + var firstChar = needleArray[0]; + var lastChar = needleArray[needleArray.length - 1]; + return wordBoundary(firstChar) + needle + wordBoundary(lastChar, false); +} +exports.Search = Search; + +}); + +ace.define("ace/keyboard/hash_handler",["require","exports","module","ace/lib/keys","ace/lib/useragent"], function(require, exports, module){"use strict"; +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + if (typeof b !== "function" && b !== null) + throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +var keyUtil = require("../lib/keys"); +var useragent = require("../lib/useragent"); +var KEY_MODS = keyUtil.KEY_MODS; +var MultiHashHandler = /** @class */ (function () { + function MultiHashHandler(config, platform) { + this.$init(config, platform, false); + } + MultiHashHandler.prototype.$init = function (config, platform, $singleCommand) { + this.platform = platform || (useragent.isMac ? "mac" : "win"); + this.commands = {}; + this.commandKeyBinding = {}; + this.addCommands(config); + this.$singleCommand = $singleCommand; + }; + MultiHashHandler.prototype.addCommand = function (command) { + if (this.commands[command.name]) + this.removeCommand(command); + this.commands[command.name] = command; + if (command.bindKey) + this._buildKeyHash(command); + }; + MultiHashHandler.prototype.removeCommand = function (command, keepCommand) { + var name = command && (typeof command === 'string' ? command : command.name); + command = this.commands[name]; + if (!keepCommand) + delete this.commands[name]; + var ckb = this.commandKeyBinding; + for (var keyId in ckb) { + var cmdGroup = ckb[keyId]; + if (cmdGroup == command) { + delete ckb[keyId]; + } + else if (Array.isArray(cmdGroup)) { + var i = cmdGroup.indexOf(command); + if (i != -1) { + cmdGroup.splice(i, 1); + if (cmdGroup.length == 1) + ckb[keyId] = cmdGroup[0]; + } + } + } + }; + MultiHashHandler.prototype.bindKey = function (key, command, position) { + if (typeof key == "object" && key) { + if (position == undefined) + position = key.position; + key = key[this.platform]; + } + if (!key) + return; + if (typeof command == "function") + return this.addCommand({ exec: command, bindKey: key, name: command.name || key }); + key.split("|").forEach(function (keyPart) { + var chain = ""; + if (keyPart.indexOf(" ") != -1) { + var parts = keyPart.split(/\s+/); + keyPart = parts.pop(); + parts.forEach(function (keyPart) { + var binding = this.parseKeys(keyPart); + var id = KEY_MODS[binding.hashId] + binding.key; + chain += (chain ? " " : "") + id; + this._addCommandToBinding(chain, "chainKeys"); + }, this); + chain += " "; + } + var binding = this.parseKeys(keyPart); + var id = KEY_MODS[binding.hashId] + binding.key; + this._addCommandToBinding(chain + id, command, position); + }, this); + }; + MultiHashHandler.prototype._addCommandToBinding = function (keyId, command, position) { + var ckb = this.commandKeyBinding, i; + if (!command) { + delete ckb[keyId]; + } + else if (!ckb[keyId] || this.$singleCommand) { + ckb[keyId] = command; + } + else { + if (!Array.isArray(ckb[keyId])) { + ckb[keyId] = [ckb[keyId]]; + } + else if ((i = ckb[keyId].indexOf(command)) != -1) { + ckb[keyId].splice(i, 1); + } + if (typeof position != "number") { + position = getPosition(command); + } + var commands = ckb[keyId]; + for (i = 0; i < commands.length; i++) { + var other = commands[i]; + var otherPos = getPosition(other); + if (otherPos > position) + break; + } + commands.splice(i, 0, command); + } + }; + MultiHashHandler.prototype.addCommands = function (commands) { + commands && Object.keys(commands).forEach(function (name) { + var command = commands[name]; + if (!command) + return; + if (typeof command === "string") + return this.bindKey(command, name); + if (typeof command === "function") + command = { exec: command }; + if (typeof command !== "object") + return; + if (!command.name) + command.name = name; + this.addCommand(command); + }, this); + }; + MultiHashHandler.prototype.removeCommands = function (commands) { + Object.keys(commands).forEach(function (name) { + this.removeCommand(commands[name]); + }, this); + }; + MultiHashHandler.prototype.bindKeys = function (keyList) { + Object.keys(keyList).forEach(function (key) { + this.bindKey(key, keyList[key]); + }, this); + }; + MultiHashHandler.prototype._buildKeyHash = function (command) { + this.bindKey(command.bindKey, command); + }; + MultiHashHandler.prototype.parseKeys = function (keys) { + var parts = keys.toLowerCase().split(/[\-\+]([\-\+])?/).filter(function (x) { return x; }); + var key = parts.pop(); + var keyCode = keyUtil[key]; + if (keyUtil.FUNCTION_KEYS[keyCode]) + key = keyUtil.FUNCTION_KEYS[keyCode].toLowerCase(); + else if (!parts.length) + return { key: key, hashId: -1 }; + else if (parts.length == 1 && parts[0] == "shift") + return { key: key.toUpperCase(), hashId: -1 }; + var hashId = 0; + for (var i = parts.length; i--;) { + var modifier = keyUtil.KEY_MODS[parts[i]]; + if (modifier == null) { + if (typeof console != "undefined") + console.error("invalid modifier " + parts[i] + " in " + keys); + return false; + } + hashId |= modifier; + } + return { key: key, hashId: hashId }; + }; + MultiHashHandler.prototype.findKeyCommand = function (hashId, keyString) { + var key = KEY_MODS[hashId] + keyString; + return this.commandKeyBinding[key]; + }; + MultiHashHandler.prototype.handleKeyboard = function (data, hashId, keyString, keyCode) { + if (keyCode < 0) + return; + var key = KEY_MODS[hashId] + keyString; + var command = this.commandKeyBinding[key]; + if (data.$keyChain) { + data.$keyChain += " " + key; + command = this.commandKeyBinding[data.$keyChain] || command; + } + if (command) { + if (command == "chainKeys" || command[command.length - 1] == "chainKeys") { + data.$keyChain = data.$keyChain || key; + return { command: "null" }; + } + } + if (data.$keyChain) { + if ((!hashId || hashId == 4) && keyString.length == 1) + data.$keyChain = data.$keyChain.slice(0, -key.length - 1); // wait for input + else if (hashId == -1 || keyCode > 0) + data.$keyChain = ""; // reset keyChain + } + return { command: command }; + }; + MultiHashHandler.prototype.getStatusText = function (editor, data) { + return data.$keyChain || ""; + }; + return MultiHashHandler; +}()); +function getPosition(command) { + return typeof command == "object" && command.bindKey + && command.bindKey.position + || (command.isDefault ? -100 : 0); +} +var HashHandler = /** @class */ (function (_super) { + __extends(HashHandler, _super); + function HashHandler(config, platform) { + var _this = _super.call(this, config, platform) || this; + _this.$singleCommand = true; + return _this; + } + return HashHandler; +}(MultiHashHandler)); +HashHandler.call = function (thisArg, config, platform) { + MultiHashHandler.prototype.$init.call(thisArg, config, platform, true); +}; +MultiHashHandler.call = function (thisArg, config, platform) { + MultiHashHandler.prototype.$init.call(thisArg, config, platform, false); +}; +exports.HashHandler = HashHandler; +exports.MultiHashHandler = MultiHashHandler; + +}); + +ace.define("ace/commands/command_manager",["require","exports","module","ace/lib/oop","ace/keyboard/hash_handler","ace/lib/event_emitter"], function(require, exports, module){"use strict"; +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + if (typeof b !== "function" && b !== null) + throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +var oop = require("../lib/oop"); +var MultiHashHandler = require("../keyboard/hash_handler").MultiHashHandler; +var EventEmitter = require("../lib/event_emitter").EventEmitter; +var CommandManager = /** @class */ (function (_super) { + __extends(CommandManager, _super); + function CommandManager(platform, commands) { + var _this = _super.call(this, commands, platform) || this; + _this.byName = _this.commands; + _this.setDefaultHandler("exec", function (e) { + if (!e.args) { + return e.command.exec(e.editor, {}, e.event, true); + } + return e.command.exec(e.editor, e.args, e.event, false); + }); + return _this; + } + CommandManager.prototype.exec = function (command, editor, args) { + if (Array.isArray(command)) { + for (var i = command.length; i--;) { + if (this.exec(command[i], editor, args)) + return true; + } + return false; + } + if (typeof command === "string") + command = this.commands[command]; + if (!command) + return false; + if (editor && editor.$readOnly && !command.readOnly) + return false; + if (this.$checkCommandState != false && command.isAvailable && !command.isAvailable(editor)) + return false; + var e = { editor: editor, command: command, args: args }; + e.returnValue = this._emit("exec", e); + this._signal("afterExec", e); + return e.returnValue === false ? false : true; + }; + CommandManager.prototype.toggleRecording = function (editor) { + if (this.$inReplay) + return; + editor && editor._emit("changeStatus"); + if (this.recording) { + this.macro.pop(); + this.off("exec", this.$addCommandToMacro); + if (!this.macro.length) + this.macro = this.oldMacro; + return this.recording = false; + } + if (!this.$addCommandToMacro) { + this.$addCommandToMacro = function (e) { + this.macro.push([e.command, e.args]); + }.bind(this); + } + this.oldMacro = this.macro; + this.macro = []; + this.on("exec", this.$addCommandToMacro); + return this.recording = true; + }; + CommandManager.prototype.replay = function (editor) { + if (this.$inReplay || !this.macro) + return; + if (this.recording) + return this.toggleRecording(editor); + try { + this.$inReplay = true; + this.macro.forEach(function (x) { + if (typeof x == "string") + this.exec(x, editor); + else + this.exec(x[0], editor, x[1]); + }, this); + } + finally { + this.$inReplay = false; + } + }; + CommandManager.prototype.trimMacro = function (m) { + return m.map(function (x) { + if (typeof x[0] != "string") + x[0] = x[0].name; + if (!x[1]) + x = x[0]; + return x; + }); + }; + return CommandManager; +}(MultiHashHandler)); +oop.implement(CommandManager.prototype, EventEmitter); +exports.CommandManager = CommandManager; + +}); + +ace.define("ace/commands/default_commands",["require","exports","module","ace/lib/lang","ace/config","ace/range"], function(require, exports, module){"use strict"; +var lang = require("../lib/lang"); +var config = require("../config"); +var Range = require("../range").Range; +function bindKey(win, mac) { + return { win: win, mac: mac }; +} +exports.commands = [{ + name: "showSettingsMenu", + description: "Show settings menu", + bindKey: bindKey("Ctrl-,", "Command-,"), + exec: function (editor) { + config.loadModule("ace/ext/settings_menu", function (module) { + module.init(editor); + editor.showSettingsMenu(); + }); + }, + readOnly: true + }, { + name: "goToNextError", + description: "Go to next error", + bindKey: bindKey("Alt-E", "F4"), + exec: function (editor) { + config.loadModule("ace/ext/error_marker", function (module) { + module.showErrorMarker(editor, 1); + }); + }, + scrollIntoView: "animate", + readOnly: true + }, { + name: "goToPreviousError", + description: "Go to previous error", + bindKey: bindKey("Alt-Shift-E", "Shift-F4"), + exec: function (editor) { + config.loadModule("ace/ext/error_marker", function (module) { + module.showErrorMarker(editor, -1); + }); + }, + scrollIntoView: "animate", + readOnly: true + }, { + name: "selectall", + description: "Select all", + bindKey: bindKey("Ctrl-A", "Command-A"), + exec: function (editor) { editor.selectAll(); }, + readOnly: true + }, { + name: "centerselection", + description: "Center selection", + bindKey: bindKey(null, "Ctrl-L"), + exec: function (editor) { editor.centerSelection(); }, + readOnly: true + }, { + name: "gotoline", + description: "Go to line...", + bindKey: bindKey("Ctrl-L", "Command-L"), + exec: function (editor, line) { + if (typeof line === "number" && !isNaN(line)) + editor.gotoLine(line); + editor.prompt({ $type: "gotoLine" }); + }, + readOnly: true + }, { + name: "fold", + bindKey: bindKey("Alt-L|Ctrl-F1", "Command-Alt-L|Command-F1"), + exec: function (editor) { editor.session.toggleFold(false); }, + multiSelectAction: "forEach", + scrollIntoView: "center", + readOnly: true + }, { + name: "unfold", + bindKey: bindKey("Alt-Shift-L|Ctrl-Shift-F1", "Command-Alt-Shift-L|Command-Shift-F1"), + exec: function (editor) { editor.session.toggleFold(true); }, + multiSelectAction: "forEach", + scrollIntoView: "center", + readOnly: true + }, { + name: "toggleFoldWidget", + description: "Toggle fold widget", + bindKey: bindKey("F2", "F2"), + exec: function (editor) { editor.session.toggleFoldWidget(); }, + multiSelectAction: "forEach", + scrollIntoView: "center", + readOnly: true + }, { + name: "toggleParentFoldWidget", + description: "Toggle parent fold widget", + bindKey: bindKey("Alt-F2", "Alt-F2"), + exec: function (editor) { editor.session.toggleFoldWidget(true); }, + multiSelectAction: "forEach", + scrollIntoView: "center", + readOnly: true + }, { + name: "foldall", + description: "Fold all", + bindKey: bindKey(null, "Ctrl-Command-Option-0"), + exec: function (editor) { editor.session.foldAll(); }, + scrollIntoView: "center", + readOnly: true + }, { + name: "foldAllComments", + description: "Fold all comments", + bindKey: bindKey(null, "Ctrl-Command-Option-0"), + exec: function (editor) { editor.session.foldAllComments(); }, + scrollIntoView: "center", + readOnly: true + }, { + name: "foldOther", + description: "Fold other", + bindKey: bindKey("Alt-0", "Command-Option-0"), + exec: function (editor) { + editor.session.foldAll(); + editor.session.unfold(editor.selection.getAllRanges()); + }, + scrollIntoView: "center", + readOnly: true + }, { + name: "unfoldall", + description: "Unfold all", + bindKey: bindKey("Alt-Shift-0", "Command-Option-Shift-0"), + exec: function (editor) { editor.session.unfold(); }, + scrollIntoView: "center", + readOnly: true + }, { + name: "findnext", + description: "Find next", + bindKey: bindKey("Ctrl-K", "Command-G"), + exec: function (editor) { editor.findNext(); }, + multiSelectAction: "forEach", + scrollIntoView: "center", + readOnly: true + }, { + name: "findprevious", + description: "Find previous", + bindKey: bindKey("Ctrl-Shift-K", "Command-Shift-G"), + exec: function (editor) { editor.findPrevious(); }, + multiSelectAction: "forEach", + scrollIntoView: "center", + readOnly: true + }, { + name: "selectOrFindNext", + description: "Select or find next", + bindKey: bindKey("Alt-K", "Ctrl-G"), + exec: function (editor) { + if (editor.selection.isEmpty()) + editor.selection.selectWord(); + else + editor.findNext(); + }, + readOnly: true + }, { + name: "selectOrFindPrevious", + description: "Select or find previous", + bindKey: bindKey("Alt-Shift-K", "Ctrl-Shift-G"), + exec: function (editor) { + if (editor.selection.isEmpty()) + editor.selection.selectWord(); + else + editor.findPrevious(); + }, + readOnly: true + }, { + name: "find", + description: "Find", + bindKey: bindKey("Ctrl-F", "Command-F"), + exec: function (editor) { + config.loadModule("ace/ext/searchbox", function (e) { e.Search(editor); }); + }, + readOnly: true + }, { + name: "overwrite", + description: "Overwrite", + bindKey: "Insert", + exec: function (editor) { editor.toggleOverwrite(); }, + readOnly: true + }, { + name: "selecttostart", + description: "Select to start", + bindKey: bindKey("Ctrl-Shift-Home", "Command-Shift-Home|Command-Shift-Up"), + exec: function (editor) { editor.getSelection().selectFileStart(); }, + multiSelectAction: "forEach", + readOnly: true, + scrollIntoView: "animate", + aceCommandGroup: "fileJump" + }, { + name: "gotostart", + description: "Go to start", + bindKey: bindKey("Ctrl-Home", "Command-Home|Command-Up"), + exec: function (editor) { editor.navigateFileStart(); }, + multiSelectAction: "forEach", + readOnly: true, + scrollIntoView: "animate", + aceCommandGroup: "fileJump" + }, { + name: "selectup", + description: "Select up", + bindKey: bindKey("Shift-Up", "Shift-Up|Ctrl-Shift-P"), + exec: function (editor) { editor.getSelection().selectUp(); }, + multiSelectAction: "forEach", + scrollIntoView: "cursor", + readOnly: true + }, { + name: "golineup", + description: "Go line up", + bindKey: bindKey("Up", "Up|Ctrl-P"), + exec: function (editor, args) { editor.navigateUp(args.times); }, + multiSelectAction: "forEach", + scrollIntoView: "cursor", + readOnly: true + }, { + name: "selecttoend", + description: "Select to end", + bindKey: bindKey("Ctrl-Shift-End", "Command-Shift-End|Command-Shift-Down"), + exec: function (editor) { editor.getSelection().selectFileEnd(); }, + multiSelectAction: "forEach", + readOnly: true, + scrollIntoView: "animate", + aceCommandGroup: "fileJump" + }, { + name: "gotoend", + description: "Go to end", + bindKey: bindKey("Ctrl-End", "Command-End|Command-Down"), + exec: function (editor) { editor.navigateFileEnd(); }, + multiSelectAction: "forEach", + readOnly: true, + scrollIntoView: "animate", + aceCommandGroup: "fileJump" + }, { + name: "selectdown", + description: "Select down", + bindKey: bindKey("Shift-Down", "Shift-Down|Ctrl-Shift-N"), + exec: function (editor) { editor.getSelection().selectDown(); }, + multiSelectAction: "forEach", + scrollIntoView: "cursor", + readOnly: true + }, { + name: "golinedown", + description: "Go line down", + bindKey: bindKey("Down", "Down|Ctrl-N"), + exec: function (editor, args) { editor.navigateDown(args.times); }, + multiSelectAction: "forEach", + scrollIntoView: "cursor", + readOnly: true + }, { + name: "selectwordleft", + description: "Select word left", + bindKey: bindKey("Ctrl-Shift-Left", "Option-Shift-Left"), + exec: function (editor) { editor.getSelection().selectWordLeft(); }, + multiSelectAction: "forEach", + scrollIntoView: "cursor", + readOnly: true + }, { + name: "gotowordleft", + description: "Go to word left", + bindKey: bindKey("Ctrl-Left", "Option-Left"), + exec: function (editor) { editor.navigateWordLeft(); }, + multiSelectAction: "forEach", + scrollIntoView: "cursor", + readOnly: true + }, { + name: "selecttolinestart", + description: "Select to line start", + bindKey: bindKey("Alt-Shift-Left", "Command-Shift-Left|Ctrl-Shift-A"), + exec: function (editor) { editor.getSelection().selectLineStart(); }, + multiSelectAction: "forEach", + scrollIntoView: "cursor", + readOnly: true + }, { + name: "gotolinestart", + description: "Go to line start", + bindKey: bindKey("Alt-Left|Home", "Command-Left|Home|Ctrl-A"), + exec: function (editor) { editor.navigateLineStart(); }, + multiSelectAction: "forEach", + scrollIntoView: "cursor", + readOnly: true + }, { + name: "selectleft", + description: "Select left", + bindKey: bindKey("Shift-Left", "Shift-Left|Ctrl-Shift-B"), + exec: function (editor) { editor.getSelection().selectLeft(); }, + multiSelectAction: "forEach", + scrollIntoView: "cursor", + readOnly: true + }, { + name: "gotoleft", + description: "Go to left", + bindKey: bindKey("Left", "Left|Ctrl-B"), + exec: function (editor, args) { editor.navigateLeft(args.times); }, + multiSelectAction: "forEach", + scrollIntoView: "cursor", + readOnly: true + }, { + name: "selectwordright", + description: "Select word right", + bindKey: bindKey("Ctrl-Shift-Right", "Option-Shift-Right"), + exec: function (editor) { editor.getSelection().selectWordRight(); }, + multiSelectAction: "forEach", + scrollIntoView: "cursor", + readOnly: true + }, { + name: "gotowordright", + description: "Go to word right", + bindKey: bindKey("Ctrl-Right", "Option-Right"), + exec: function (editor) { editor.navigateWordRight(); }, + multiSelectAction: "forEach", + scrollIntoView: "cursor", + readOnly: true + }, { + name: "selecttolineend", + description: "Select to line end", + bindKey: bindKey("Alt-Shift-Right", "Command-Shift-Right|Shift-End|Ctrl-Shift-E"), + exec: function (editor) { editor.getSelection().selectLineEnd(); }, + multiSelectAction: "forEach", + scrollIntoView: "cursor", + readOnly: true + }, { + name: "gotolineend", + description: "Go to line end", + bindKey: bindKey("Alt-Right|End", "Command-Right|End|Ctrl-E"), + exec: function (editor) { editor.navigateLineEnd(); }, + multiSelectAction: "forEach", + scrollIntoView: "cursor", + readOnly: true + }, { + name: "selectright", + description: "Select right", + bindKey: bindKey("Shift-Right", "Shift-Right"), + exec: function (editor) { editor.getSelection().selectRight(); }, + multiSelectAction: "forEach", + scrollIntoView: "cursor", + readOnly: true + }, { + name: "gotoright", + description: "Go to right", + bindKey: bindKey("Right", "Right|Ctrl-F"), + exec: function (editor, args) { editor.navigateRight(args.times); }, + multiSelectAction: "forEach", + scrollIntoView: "cursor", + readOnly: true + }, { + name: "selectpagedown", + description: "Select page down", + bindKey: "Shift-PageDown", + exec: function (editor) { editor.selectPageDown(); }, + readOnly: true + }, { + name: "pagedown", + description: "Page down", + bindKey: bindKey(null, "Option-PageDown"), + exec: function (editor) { editor.scrollPageDown(); }, + readOnly: true + }, { + name: "gotopagedown", + description: "Go to page down", + bindKey: bindKey("PageDown", "PageDown|Ctrl-V"), + exec: function (editor) { editor.gotoPageDown(); }, + readOnly: true + }, { + name: "selectpageup", + description: "Select page up", + bindKey: "Shift-PageUp", + exec: function (editor) { editor.selectPageUp(); }, + readOnly: true + }, { + name: "pageup", + description: "Page up", + bindKey: bindKey(null, "Option-PageUp"), + exec: function (editor) { editor.scrollPageUp(); }, + readOnly: true + }, { + name: "gotopageup", + description: "Go to page up", + bindKey: "PageUp", + exec: function (editor) { editor.gotoPageUp(); }, + readOnly: true + }, { + name: "scrollup", + description: "Scroll up", + bindKey: bindKey("Ctrl-Up", null), + exec: function (e) { e.renderer.scrollBy(0, -2 * e.renderer.layerConfig.lineHeight); }, + readOnly: true + }, { + name: "scrolldown", + description: "Scroll down", + bindKey: bindKey("Ctrl-Down", null), + exec: function (e) { e.renderer.scrollBy(0, 2 * e.renderer.layerConfig.lineHeight); }, + readOnly: true + }, { + name: "selectlinestart", + description: "Select line start", + bindKey: "Shift-Home", + exec: function (editor) { editor.getSelection().selectLineStart(); }, + multiSelectAction: "forEach", + scrollIntoView: "cursor", + readOnly: true + }, { + name: "selectlineend", + description: "Select line end", + bindKey: "Shift-End", + exec: function (editor) { editor.getSelection().selectLineEnd(); }, + multiSelectAction: "forEach", + scrollIntoView: "cursor", + readOnly: true + }, { + name: "togglerecording", + description: "Toggle recording", + bindKey: bindKey("Ctrl-Alt-E", "Command-Option-E"), + exec: function (editor) { editor.commands.toggleRecording(editor); }, + readOnly: true + }, { + name: "replaymacro", + description: "Replay macro", + bindKey: bindKey("Ctrl-Shift-E", "Command-Shift-E"), + exec: function (editor) { editor.commands.replay(editor); }, + readOnly: true + }, { + name: "jumptomatching", + description: "Jump to matching", + bindKey: bindKey("Ctrl-\\|Ctrl-P", "Command-\\"), + exec: function (editor) { editor.jumpToMatching(); }, + multiSelectAction: "forEach", + scrollIntoView: "animate", + readOnly: true + }, { + name: "selecttomatching", + description: "Select to matching", + bindKey: bindKey("Ctrl-Shift-\\|Ctrl-Shift-P", "Command-Shift-\\"), + exec: function (editor) { editor.jumpToMatching(true); }, + multiSelectAction: "forEach", + scrollIntoView: "animate", + readOnly: true + }, { + name: "expandToMatching", + description: "Expand to matching", + bindKey: bindKey("Ctrl-Shift-M", "Ctrl-Shift-M"), + exec: function (editor) { editor.jumpToMatching(true, true); }, + multiSelectAction: "forEach", + scrollIntoView: "animate", + readOnly: true + }, { + name: "passKeysToBrowser", + description: "Pass keys to browser", + bindKey: bindKey(null, null), + exec: function () { }, + passEvent: true, + readOnly: true + }, { + name: "copy", + description: "Copy", + exec: function (editor) { + }, + readOnly: true + }, + { + name: "cut", + description: "Cut", + exec: function (editor) { + var cutLine = editor.$copyWithEmptySelection && editor.selection.isEmpty(); + var range = cutLine ? editor.selection.getLineRange() : editor.selection.getRange(); + editor._emit("cut", range); + if (!range.isEmpty()) + editor.session.remove(range); + editor.clearSelection(); + }, + scrollIntoView: "cursor", + multiSelectAction: "forEach" + }, { + name: "paste", + description: "Paste", + exec: function (editor, args) { + editor.$handlePaste(args); + }, + scrollIntoView: "cursor" + }, { + name: "removeline", + description: "Remove line", + bindKey: bindKey("Ctrl-D", "Command-D"), + exec: function (editor) { editor.removeLines(); }, + scrollIntoView: "cursor", + multiSelectAction: "forEachLine" + }, { + name: "duplicateSelection", + description: "Duplicate selection", + bindKey: bindKey("Ctrl-Shift-D", "Command-Shift-D"), + exec: function (editor) { editor.duplicateSelection(); }, + scrollIntoView: "cursor", + multiSelectAction: "forEach" + }, { + name: "sortlines", + description: "Sort lines", + bindKey: bindKey("Ctrl-Alt-S", "Command-Alt-S"), + exec: function (editor) { editor.sortLines(); }, + scrollIntoView: "selection", + multiSelectAction: "forEachLine" + }, { + name: "togglecomment", + description: "Toggle comment", + bindKey: bindKey("Ctrl-/", "Command-/"), + exec: function (editor) { editor.toggleCommentLines(); }, + multiSelectAction: "forEachLine", + scrollIntoView: "selectionPart" + }, { + name: "toggleBlockComment", + description: "Toggle block comment", + bindKey: bindKey("Ctrl-Shift-/", "Command-Shift-/"), + exec: function (editor) { editor.toggleBlockComment(); }, + multiSelectAction: "forEach", + scrollIntoView: "selectionPart" + }, { + name: "modifyNumberUp", + description: "Modify number up", + bindKey: bindKey("Ctrl-Shift-Up", "Alt-Shift-Up"), + exec: function (editor) { editor.modifyNumber(1); }, + scrollIntoView: "cursor", + multiSelectAction: "forEach" + }, { + name: "modifyNumberDown", + description: "Modify number down", + bindKey: bindKey("Ctrl-Shift-Down", "Alt-Shift-Down"), + exec: function (editor) { editor.modifyNumber(-1); }, + scrollIntoView: "cursor", + multiSelectAction: "forEach" + }, { + name: "replace", + description: "Replace", + bindKey: bindKey("Ctrl-H", "Command-Option-F"), + exec: function (editor) { + config.loadModule("ace/ext/searchbox", function (e) { e.Search(editor, true); }); + } + }, { + name: "undo", + description: "Undo", + bindKey: bindKey("Ctrl-Z", "Command-Z"), + exec: function (editor) { editor.undo(); } + }, { + name: "redo", + description: "Redo", + bindKey: bindKey("Ctrl-Shift-Z|Ctrl-Y", "Command-Shift-Z|Command-Y"), + exec: function (editor) { editor.redo(); } + }, { + name: "copylinesup", + description: "Copy lines up", + bindKey: bindKey("Alt-Shift-Up", "Command-Option-Up"), + exec: function (editor) { editor.copyLinesUp(); }, + scrollIntoView: "cursor" + }, { + name: "movelinesup", + description: "Move lines up", + bindKey: bindKey("Alt-Up", "Option-Up"), + exec: function (editor) { editor.moveLinesUp(); }, + scrollIntoView: "cursor" + }, { + name: "copylinesdown", + description: "Copy lines down", + bindKey: bindKey("Alt-Shift-Down", "Command-Option-Down"), + exec: function (editor) { editor.copyLinesDown(); }, + scrollIntoView: "cursor" + }, { + name: "movelinesdown", + description: "Move lines down", + bindKey: bindKey("Alt-Down", "Option-Down"), + exec: function (editor) { editor.moveLinesDown(); }, + scrollIntoView: "cursor" + }, { + name: "del", + description: "Delete", + bindKey: bindKey("Delete", "Delete|Ctrl-D|Shift-Delete"), + exec: function (editor) { editor.remove("right"); }, + multiSelectAction: "forEach", + scrollIntoView: "cursor" + }, { + name: "backspace", + description: "Backspace", + bindKey: bindKey("Shift-Backspace|Backspace", "Ctrl-Backspace|Shift-Backspace|Backspace|Ctrl-H"), + exec: function (editor) { editor.remove("left"); }, + multiSelectAction: "forEach", + scrollIntoView: "cursor" + }, { + name: "cut_or_delete", + description: "Cut or delete", + bindKey: bindKey("Shift-Delete", null), + exec: function (editor) { + if (editor.selection.isEmpty()) { + editor.remove("left"); + } + else { + return false; + } + }, + multiSelectAction: "forEach", + scrollIntoView: "cursor" + }, { + name: "removetolinestart", + description: "Remove to line start", + bindKey: bindKey("Alt-Backspace", "Command-Backspace"), + exec: function (editor) { editor.removeToLineStart(); }, + multiSelectAction: "forEach", + scrollIntoView: "cursor" + }, { + name: "removetolineend", + description: "Remove to line end", + bindKey: bindKey("Alt-Delete", "Ctrl-K|Command-Delete"), + exec: function (editor) { editor.removeToLineEnd(); }, + multiSelectAction: "forEach", + scrollIntoView: "cursor" + }, { + name: "removetolinestarthard", + description: "Remove to line start hard", + bindKey: bindKey("Ctrl-Shift-Backspace", null), + exec: function (editor) { + var range = editor.selection.getRange(); + range.start.column = 0; + editor.session.remove(range); + }, + multiSelectAction: "forEach", + scrollIntoView: "cursor" + }, { + name: "removetolineendhard", + description: "Remove to line end hard", + bindKey: bindKey("Ctrl-Shift-Delete", null), + exec: function (editor) { + var range = editor.selection.getRange(); + range.end.column = Number.MAX_VALUE; + editor.session.remove(range); + }, + multiSelectAction: "forEach", + scrollIntoView: "cursor" + }, { + name: "removewordleft", + description: "Remove word left", + bindKey: bindKey("Ctrl-Backspace", "Alt-Backspace|Ctrl-Alt-Backspace"), + exec: function (editor) { editor.removeWordLeft(); }, + multiSelectAction: "forEach", + scrollIntoView: "cursor" + }, { + name: "removewordright", + description: "Remove word right", + bindKey: bindKey("Ctrl-Delete", "Alt-Delete"), + exec: function (editor) { editor.removeWordRight(); }, + multiSelectAction: "forEach", + scrollIntoView: "cursor" + }, { + name: "outdent", + description: "Outdent", + bindKey: bindKey("Shift-Tab", "Shift-Tab"), + exec: function (editor) { editor.blockOutdent(); }, + multiSelectAction: "forEach", + scrollIntoView: "selectionPart" + }, { + name: "indent", + description: "Indent", + bindKey: bindKey("Tab", "Tab"), + exec: function (editor) { editor.indent(); }, + multiSelectAction: "forEach", + scrollIntoView: "selectionPart" + }, { + name: "blockoutdent", + description: "Block outdent", + bindKey: bindKey("Ctrl-[", "Ctrl-["), + exec: function (editor) { editor.blockOutdent(); }, + multiSelectAction: "forEachLine", + scrollIntoView: "selectionPart" + }, { + name: "blockindent", + description: "Block indent", + bindKey: bindKey("Ctrl-]", "Ctrl-]"), + exec: function (editor) { editor.blockIndent(); }, + multiSelectAction: "forEachLine", + scrollIntoView: "selectionPart" + }, { + name: "insertstring", + description: "Insert string", + exec: function (editor, str) { editor.insert(str); }, + multiSelectAction: "forEach", + scrollIntoView: "cursor" + }, { + name: "inserttext", + description: "Insert text", + exec: function (editor, args) { + editor.insert(lang.stringRepeat(args.text || "", args.times || 1)); + }, + multiSelectAction: "forEach", + scrollIntoView: "cursor" + }, { + name: "splitline", + description: "Split line", + bindKey: bindKey(null, "Ctrl-O"), + exec: function (editor) { editor.splitLine(); }, + multiSelectAction: "forEach", + scrollIntoView: "cursor" + }, { + name: "transposeletters", + description: "Transpose letters", + bindKey: bindKey("Alt-Shift-X", "Ctrl-T"), + exec: function (editor) { editor.transposeLetters(); }, + multiSelectAction: function (editor) { editor.transposeSelections(1); }, + scrollIntoView: "cursor" + }, { + name: "touppercase", + description: "To uppercase", + bindKey: bindKey("Ctrl-U", "Ctrl-U"), + exec: function (editor) { editor.toUpperCase(); }, + multiSelectAction: "forEach", + scrollIntoView: "cursor" + }, { + name: "tolowercase", + description: "To lowercase", + bindKey: bindKey("Ctrl-Shift-U", "Ctrl-Shift-U"), + exec: function (editor) { editor.toLowerCase(); }, + multiSelectAction: "forEach", + scrollIntoView: "cursor" + }, { + name: "autoindent", + description: "Auto Indent", + bindKey: bindKey(null, null), + exec: function (editor) { editor.autoIndent(); }, + multiSelectAction: "forEachLine", + scrollIntoView: "animate" + }, { + name: "expandtoline", + description: "Expand to line", + bindKey: bindKey("Ctrl-Shift-L", "Command-Shift-L"), + exec: function (editor) { + var range = editor.selection.getRange(); + range.start.column = range.end.column = 0; + range.end.row++; + editor.selection.setRange(range, false); + }, + multiSelectAction: "forEach", + scrollIntoView: "cursor", + readOnly: true + }, { + name: "openlink", + bindKey: bindKey("Ctrl+F3", "F3"), + exec: function (editor) { editor.openLink(); } + }, { + name: "joinlines", + description: "Join lines", + bindKey: bindKey(null, null), + exec: function (editor) { + var isBackwards = editor.selection.isBackwards(); + var selectionStart = isBackwards ? editor.selection.getSelectionLead() : editor.selection.getSelectionAnchor(); + var selectionEnd = isBackwards ? editor.selection.getSelectionAnchor() : editor.selection.getSelectionLead(); + var firstLineEndCol = editor.session.doc.getLine(selectionStart.row).length; + var selectedText = editor.session.doc.getTextRange(editor.selection.getRange()); + var selectedCount = selectedText.replace(/\n\s*/, " ").length; + var insertLine = editor.session.doc.getLine(selectionStart.row); + for (var i = selectionStart.row + 1; i <= selectionEnd.row + 1; i++) { + var curLine = lang.stringTrimLeft(lang.stringTrimRight(editor.session.doc.getLine(i))); + if (curLine.length !== 0) { + curLine = " " + curLine; + } + insertLine += curLine; + } + if (selectionEnd.row + 1 < (editor.session.doc.getLength() - 1)) { + insertLine += editor.session.doc.getNewLineCharacter(); + } + editor.clearSelection(); + editor.session.doc.replace(new Range(selectionStart.row, 0, selectionEnd.row + 2, 0), insertLine); + if (selectedCount > 0) { + editor.selection.moveCursorTo(selectionStart.row, selectionStart.column); + editor.selection.selectTo(selectionStart.row, selectionStart.column + selectedCount); + } + else { + firstLineEndCol = editor.session.doc.getLine(selectionStart.row).length > firstLineEndCol ? (firstLineEndCol + 1) : firstLineEndCol; + editor.selection.moveCursorTo(selectionStart.row, firstLineEndCol); + } + }, + multiSelectAction: "forEach", + readOnly: true + }, { + name: "invertSelection", + description: "Invert selection", + bindKey: bindKey(null, null), + exec: function (editor) { + var endRow = editor.session.doc.getLength() - 1; + var endCol = editor.session.doc.getLine(endRow).length; + var ranges = editor.selection.rangeList.ranges; + var newRanges = []; + if (ranges.length < 1) { + ranges = [editor.selection.getRange()]; + } + for (var i = 0; i < ranges.length; i++) { + if (i == (ranges.length - 1)) { + if (!(ranges[i].end.row === endRow && ranges[i].end.column === endCol)) { + newRanges.push(new Range(ranges[i].end.row, ranges[i].end.column, endRow, endCol)); + } + } + if (i === 0) { + if (!(ranges[i].start.row === 0 && ranges[i].start.column === 0)) { + newRanges.push(new Range(0, 0, ranges[i].start.row, ranges[i].start.column)); + } + } + else { + newRanges.push(new Range(ranges[i - 1].end.row, ranges[i - 1].end.column, ranges[i].start.row, ranges[i].start.column)); + } + } + editor.exitMultiSelectMode(); + editor.clearSelection(); + for (var i = 0; i < newRanges.length; i++) { + editor.selection.addRange(newRanges[i], false); + } + }, + readOnly: true, + scrollIntoView: "none" + }, { + name: "addLineAfter", + description: "Add new line after the current line", + exec: function (editor) { + editor.selection.clearSelection(); + editor.navigateLineEnd(); + editor.insert("\n"); + }, + multiSelectAction: "forEach", + scrollIntoView: "cursor" + }, { + name: "addLineBefore", + description: "Add new line before the current line", + exec: function (editor) { + editor.selection.clearSelection(); + var cursor = editor.getCursorPosition(); + editor.selection.moveTo(cursor.row - 1, Number.MAX_VALUE); + editor.insert("\n"); + if (cursor.row === 0) + editor.navigateUp(); + }, + multiSelectAction: "forEach", + scrollIntoView: "cursor" + }, { + name: "openCommandPallete", + exec: function (editor) { + console.warn("This is an obsolete command. Please use `openCommandPalette` instead."); + editor.prompt({ $type: "commands" }); + }, + readOnly: true + }, { + name: "openCommandPalette", + description: "Open command palette", + bindKey: bindKey("F1", "F1"), + exec: function (editor) { + editor.prompt({ $type: "commands" }); + }, + readOnly: true + }, { + name: "modeSelect", + description: "Change language mode...", + bindKey: bindKey(null, null), + exec: function (editor) { + editor.prompt({ $type: "modes" }); + }, + readOnly: true + }]; +for (var i = 1; i < 9; i++) { + exports.commands.push({ + name: "foldToLevel" + i, + description: "Fold To Level " + i, + level: i, + exec: function (editor) { editor.session.foldToLevel(this.level); }, + scrollIntoView: "center", + readOnly: true + }); +} + +}); + +ace.define("ace/line_widgets",["require","exports","module","ace/lib/dom"], function(require, exports, module){"use strict"; +var dom = require("./lib/dom"); +var LineWidgets = /** @class */ (function () { + function LineWidgets(session) { + this.session = session; + this.session.widgetManager = this; + this.session.getRowLength = this.getRowLength; + this.session.$getWidgetScreenLength = this.$getWidgetScreenLength; + this.updateOnChange = this.updateOnChange.bind(this); + this.renderWidgets = this.renderWidgets.bind(this); + this.measureWidgets = this.measureWidgets.bind(this); + this.session._changedWidgets = []; + this.$onChangeEditor = this.$onChangeEditor.bind(this); + this.session.on("change", this.updateOnChange); + this.session.on("changeFold", this.updateOnFold); + this.session.on("changeEditor", this.$onChangeEditor); + } + LineWidgets.prototype.getRowLength = function (row) { + var h; + if (this.lineWidgets) + h = this.lineWidgets[row] && this.lineWidgets[row].rowCount || 0; + else + h = 0; + if (!this.$useWrapMode || !this.$wrapData[row]) { + return 1 + h; + } + else { + return this.$wrapData[row].length + 1 + h; + } + }; + LineWidgets.prototype.$getWidgetScreenLength = function () { + var screenRows = 0; + this.lineWidgets.forEach(function (w) { + if (w && w.rowCount && !w.hidden) + screenRows += w.rowCount; + }); + return screenRows; + }; + LineWidgets.prototype.$onChangeEditor = function (e) { + this.attach(e.editor); + }; + LineWidgets.prototype.attach = function (editor) { + if (editor && editor.widgetManager && editor.widgetManager != this) + editor.widgetManager.detach(); + if (this.editor == editor) + return; + this.detach(); + this.editor = editor; + if (editor) { + editor.widgetManager = this; + editor.renderer.on("beforeRender", this.measureWidgets); + editor.renderer.on("afterRender", this.renderWidgets); + } + }; + LineWidgets.prototype.detach = function (e) { + var editor = this.editor; + if (!editor) + return; + this.editor = null; + editor.widgetManager = null; + editor.renderer.off("beforeRender", this.measureWidgets); + editor.renderer.off("afterRender", this.renderWidgets); + var lineWidgets = this.session.lineWidgets; + lineWidgets && lineWidgets.forEach(function (w) { + if (w && w.el && w.el.parentNode) { + w._inDocument = false; + w.el.parentNode.removeChild(w.el); + } + }); + }; + LineWidgets.prototype.updateOnFold = function (e, session) { + var lineWidgets = session.lineWidgets; + if (!lineWidgets || !e.action) + return; + var fold = e.data; + var start = fold.start.row; + var end = fold.end.row; + var hide = e.action == "add"; + for (var i = start + 1; i < end; i++) { + if (lineWidgets[i]) + lineWidgets[i].hidden = hide; + } + if (lineWidgets[end]) { + if (hide) { + if (!lineWidgets[start]) + lineWidgets[start] = lineWidgets[end]; + else + lineWidgets[end].hidden = hide; + } + else { + if (lineWidgets[start] == lineWidgets[end]) + lineWidgets[start] = undefined; + lineWidgets[end].hidden = hide; + } + } + }; + LineWidgets.prototype.updateOnChange = function (delta) { + var lineWidgets = this.session.lineWidgets; + if (!lineWidgets) + return; + var startRow = delta.start.row; + var len = delta.end.row - startRow; + if (len === 0) { + } + else if (delta.action == "remove") { + var removed = lineWidgets.splice(startRow + 1, len); + if (!lineWidgets[startRow] && removed[removed.length - 1]) { + lineWidgets[startRow] = removed.pop(); + } + removed.forEach(function (w) { + w && this.removeLineWidget(w); + }, this); + this.$updateRows(); + } + else { + var args = new Array(len); + if (lineWidgets[startRow] && lineWidgets[startRow].column != null) { + if (delta.start.column > lineWidgets[startRow].column) + startRow++; + } + args.unshift(startRow, 0); + lineWidgets.splice.apply(lineWidgets, args); + this.$updateRows(); + } + }; + LineWidgets.prototype.$updateRows = function () { + var lineWidgets = this.session.lineWidgets; + if (!lineWidgets) + return; + var noWidgets = true; + lineWidgets.forEach(function (w, i) { + if (w) { + noWidgets = false; + w.row = i; + while (w.$oldWidget) { + w.$oldWidget.row = i; + w = w.$oldWidget; + } + } + }); + if (noWidgets) + this.session.lineWidgets = null; + }; + LineWidgets.prototype.$registerLineWidget = function (w) { + if (!this.session.lineWidgets) + this.session.lineWidgets = new Array(this.session.getLength()); + var old = this.session.lineWidgets[w.row]; + if (old) { + w.$oldWidget = old; + if (old.el && old.el.parentNode) { + old.el.parentNode.removeChild(old.el); + old._inDocument = false; + } + } + this.session.lineWidgets[w.row] = w; + return w; + }; + LineWidgets.prototype.addLineWidget = function (w) { + this.$registerLineWidget(w); + w.session = this.session; + if (!this.editor) + return w; + var renderer = this.editor.renderer; + if (w.html && !w.el) { + w.el = dom.createElement("div"); + w.el.innerHTML = w.html; + } + if (w.text && !w.el) { + w.el = dom.createElement("div"); + w.el.textContent = w.text; + } + if (w.el) { + dom.addCssClass(w.el, "ace_lineWidgetContainer"); + if (w.className) { + dom.addCssClass(w.el, w.className); + } + w.el.style.position = "absolute"; + w.el.style.zIndex = 5; + renderer.container.appendChild(w.el); + w._inDocument = true; + if (!w.coverGutter) { + w.el.style.zIndex = 3; + } + if (w.pixelHeight == null) { + w.pixelHeight = w.el.offsetHeight; + } + } + if (w.rowCount == null) { + w.rowCount = w.pixelHeight / renderer.layerConfig.lineHeight; + } + var fold = this.session.getFoldAt(w.row, 0); + w.$fold = fold; + if (fold) { + var lineWidgets = this.session.lineWidgets; + if (w.row == fold.end.row && !lineWidgets[fold.start.row]) + lineWidgets[fold.start.row] = w; + else + w.hidden = true; + } + this.session._emit("changeFold", { data: { start: { row: w.row } } }); + this.$updateRows(); + this.renderWidgets(null, renderer); + this.onWidgetChanged(w); + return w; + }; + LineWidgets.prototype.removeLineWidget = function (w) { + w._inDocument = false; + w.session = null; + if (w.el && w.el.parentNode) + w.el.parentNode.removeChild(w.el); + if (w.editor && w.editor.destroy) + try { + w.editor.destroy(); + } + catch (e) { } + if (this.session.lineWidgets) { + var w1 = this.session.lineWidgets[w.row]; + if (w1 == w) { + this.session.lineWidgets[w.row] = w.$oldWidget; + if (w.$oldWidget) + this.onWidgetChanged(w.$oldWidget); + } + else { + while (w1) { + if (w1.$oldWidget == w) { + w1.$oldWidget = w.$oldWidget; + break; + } + w1 = w1.$oldWidget; + } + } + } + this.session._emit("changeFold", { data: { start: { row: w.row } } }); + this.$updateRows(); + }; + LineWidgets.prototype.getWidgetsAtRow = function (row) { + var lineWidgets = this.session.lineWidgets; + var w = lineWidgets && lineWidgets[row]; + var list = []; + while (w) { + list.push(w); + w = w.$oldWidget; + } + return list; + }; + LineWidgets.prototype.onWidgetChanged = function (w) { + this.session._changedWidgets.push(w); + this.editor && this.editor.renderer.updateFull(); + }; + LineWidgets.prototype.measureWidgets = function (e, renderer) { + var changedWidgets = this.session._changedWidgets; + var config = renderer.layerConfig; + if (!changedWidgets || !changedWidgets.length) + return; + var min = Infinity; + for (var i = 0; i < changedWidgets.length; i++) { + var w = changedWidgets[i]; + if (!w || !w.el) + continue; + if (w.session != this.session) + continue; + if (!w._inDocument) { + if (this.session.lineWidgets[w.row] != w) + continue; + w._inDocument = true; + renderer.container.appendChild(w.el); + } + w.h = w.el.offsetHeight; + if (!w.fixedWidth) { + w.w = w.el.offsetWidth; + w.screenWidth = Math.ceil(w.w / config.characterWidth); + } + var rowCount = w.h / config.lineHeight; + if (w.coverLine) { + rowCount -= this.session.getRowLineCount(w.row); + if (rowCount < 0) + rowCount = 0; + } + if (w.rowCount != rowCount) { + w.rowCount = rowCount; + if (w.row < min) + min = w.row; + } + } + if (min != Infinity) { + this.session._emit("changeFold", { data: { start: { row: min } } }); + this.session.lineWidgetWidth = null; + } + this.session._changedWidgets = []; + }; + LineWidgets.prototype.renderWidgets = function (e, renderer) { + var config = renderer.layerConfig; + var lineWidgets = this.session.lineWidgets; + if (!lineWidgets) + return; + var first = Math.min(this.firstRow, config.firstRow); + var last = Math.max(this.lastRow, config.lastRow, lineWidgets.length); + while (first > 0 && !lineWidgets[first]) + first--; + this.firstRow = config.firstRow; + this.lastRow = config.lastRow; + renderer.$cursorLayer.config = config; + for (var i = first; i <= last; i++) { + var w = lineWidgets[i]; + if (!w || !w.el) + continue; + if (w.hidden) { + w.el.style.top = -100 - (w.pixelHeight || 0) + "px"; + continue; + } + if (!w._inDocument) { + w._inDocument = true; + renderer.container.appendChild(w.el); + } + var top = renderer.$cursorLayer.getPixelPosition({ row: i, column: 0 }, true).top; + if (!w.coverLine) + top += config.lineHeight * this.session.getRowLineCount(w.row); + w.el.style.top = top - config.offset + "px"; + var left = w.coverGutter ? 0 : renderer.gutterWidth; + if (!w.fixedWidth) + left -= renderer.scrollLeft; + w.el.style.left = left + "px"; + if (w.fullWidth && w.screenWidth) { + w.el.style.minWidth = config.width + 2 * config.padding + "px"; + } + if (w.fixedWidth) { + w.el.style.right = renderer.scrollBar.getWidth() + "px"; + } + else { + w.el.style.right = ""; + } + } + }; + return LineWidgets; +}()); +exports.LineWidgets = LineWidgets; + +}); + +ace.define("ace/keyboard/gutter_handler",["require","exports","module","ace/lib/keys","ace/mouse/default_gutter_handler"], function(require, exports, module){"use strict"; +var keys = require('../lib/keys'); +var GutterTooltip = require("../mouse/default_gutter_handler").GutterTooltip; +var GutterKeyboardHandler = /** @class */ (function () { + function GutterKeyboardHandler(editor) { + this.editor = editor; + this.gutterLayer = editor.renderer.$gutterLayer; + this.element = editor.renderer.$gutter; + this.lines = editor.renderer.$gutterLayer.$lines; + this.activeRowIndex = null; + this.activeLane = null; + this.annotationTooltip = new GutterTooltip(this.editor); + } + GutterKeyboardHandler.prototype.addListener = function () { + this.element.addEventListener("keydown", this.$onGutterKeyDown.bind(this)); + this.element.addEventListener("focusout", this.$blurGutter.bind(this)); + this.editor.on("mousewheel", this.$blurGutter.bind(this)); + }; + GutterKeyboardHandler.prototype.removeListener = function () { + this.element.removeEventListener("keydown", this.$onGutterKeyDown.bind(this)); + this.element.removeEventListener("focusout", this.$blurGutter.bind(this)); + this.editor.off("mousewheel", this.$blurGutter.bind(this)); + }; + GutterKeyboardHandler.prototype.$onGutterKeyDown = function (e) { + if (this.annotationTooltip.isOpen) { + e.preventDefault(); + if (e.keyCode === keys["escape"]) + this.annotationTooltip.hideTooltip(); + return; + } + if (e.target === this.element) { + if (e.keyCode != keys["enter"]) { + return; + } + e.preventDefault(); + var row = this.editor.getCursorPosition().row; + if (!this.editor.isRowVisible(row)) + this.editor.scrollToLine(row, true, true); + setTimeout(function () { + var index = this.$rowToRowIndex(this.gutterLayer.$cursorCell.row); + var nearestFoldIndex = this.$findNearestFoldWidget(index); + var nearestAnnotationIndex = this.$findNearestAnnotation(index); + if (nearestFoldIndex === null && nearestAnnotationIndex === null) + return; + if (nearestFoldIndex === null && nearestAnnotationIndex !== null) { + this.activeRowIndex = nearestAnnotationIndex; + this.activeLane = "annotation"; + this.$focusAnnotation(this.activeRowIndex); + return; + } + if (nearestFoldIndex !== null && nearestAnnotationIndex === null) { + this.activeRowIndex = nearestFoldIndex; + this.activeLane = "fold"; + this.$focusFoldWidget(this.activeRowIndex); + return; + } + if (Math.abs(nearestAnnotationIndex - index) < Math.abs(nearestFoldIndex - index)) { + this.activeRowIndex = nearestAnnotationIndex; + this.activeLane = "annotation"; + this.$focusAnnotation(this.activeRowIndex); + return; + } + else { + this.activeRowIndex = nearestFoldIndex; + this.activeLane = "fold"; + this.$focusFoldWidget(this.activeRowIndex); + return; + } + }.bind(this), 10); + return; + } + this.$handleGutterKeyboardInteraction(e); + setTimeout(function () { + this.editor._signal("gutterkeydown", new GutterKeyboardEvent(e, this)); + }.bind(this), 10); + }; + GutterKeyboardHandler.prototype.$handleGutterKeyboardInteraction = function (e) { + if (e.keyCode === keys["tab"]) { + e.preventDefault(); + return; + } + if (e.keyCode === keys["escape"]) { + e.preventDefault(); + this.$blurGutter(); + this.element.focus(); + this.lane = null; + return; + } + if (e.keyCode === keys["up"]) { + e.preventDefault(); + switch (this.activeLane) { + case "fold": + this.$moveFoldWidgetUp(); + break; + case "annotation": + this.$moveAnnotationUp(); + break; + } + return; + } + if (e.keyCode === keys["down"]) { + e.preventDefault(); + switch (this.activeLane) { + case "fold": + this.$moveFoldWidgetDown(); + break; + case "annotation": + this.$moveAnnotationDown(); + break; + } + return; + } + if (e.keyCode === keys["left"]) { + e.preventDefault(); + this.$switchLane("annotation"); + return; + } + if (e.keyCode === keys["right"]) { + e.preventDefault(); + this.$switchLane("fold"); + return; + } + if (e.keyCode === keys["enter"] || e.keyCode === keys["space"]) { + e.preventDefault(); + switch (this.activeLane) { + case "fold": + if (this.gutterLayer.session.foldWidgets[this.$rowIndexToRow(this.activeRowIndex)] === 'start') { + var rowFoldingWidget = this.$rowIndexToRow(this.activeRowIndex); + this.editor.session.onFoldWidgetClick(this.$rowIndexToRow(this.activeRowIndex), e); + setTimeout(function () { + if (this.$rowIndexToRow(this.activeRowIndex) !== rowFoldingWidget) { + this.$blurFoldWidget(this.activeRowIndex); + this.activeRowIndex = this.$rowToRowIndex(rowFoldingWidget); + this.$focusFoldWidget(this.activeRowIndex); + } + }.bind(this), 10); + break; + } + else if (this.gutterLayer.session.foldWidgets[this.$rowIndexToRow(this.activeRowIndex)] === 'end') { + break; + } + return; + case "annotation": + var gutterElement = this.lines.cells[this.activeRowIndex].element.childNodes[2]; + var rect = gutterElement.getBoundingClientRect(); + var style = this.annotationTooltip.getElement().style; + style.left = rect.right + "px"; + style.top = rect.bottom + "px"; + this.annotationTooltip.showTooltip(this.$rowIndexToRow(this.activeRowIndex)); + break; + } + return; + } + }; + GutterKeyboardHandler.prototype.$blurGutter = function () { + if (this.activeRowIndex !== null) { + switch (this.activeLane) { + case "fold": + this.$blurFoldWidget(this.activeRowIndex); + break; + case "annotation": + this.$blurAnnotation(this.activeRowIndex); + break; + } + } + if (this.annotationTooltip.isOpen) + this.annotationTooltip.hideTooltip(); + return; + }; + GutterKeyboardHandler.prototype.$isFoldWidgetVisible = function (index) { + var isRowFullyVisible = this.editor.isRowFullyVisible(this.$rowIndexToRow(index)); + var isIconVisible = this.$getFoldWidget(index).style.display !== "none"; + return isRowFullyVisible && isIconVisible; + }; + GutterKeyboardHandler.prototype.$isAnnotationVisible = function (index) { + var isRowFullyVisible = this.editor.isRowFullyVisible(this.$rowIndexToRow(index)); + var isIconVisible = this.$getAnnotation(index).style.display !== "none"; + return isRowFullyVisible && isIconVisible; + }; + GutterKeyboardHandler.prototype.$getFoldWidget = function (index) { + var cell = this.lines.get(index); + var element = cell.element; + return element.childNodes[1]; + }; + GutterKeyboardHandler.prototype.$getAnnotation = function (index) { + var cell = this.lines.get(index); + var element = cell.element; + return element.childNodes[2]; + }; + GutterKeyboardHandler.prototype.$findNearestFoldWidget = function (index) { + if (this.$isFoldWidgetVisible(index)) + return index; + var i = 0; + while (index - i > 0 || index + i < this.lines.getLength() - 1) { + i++; + if (index - i >= 0 && this.$isFoldWidgetVisible(index - i)) + return index - i; + if (index + i <= this.lines.getLength() - 1 && this.$isFoldWidgetVisible(index + i)) + return index + i; + } + return null; + }; + GutterKeyboardHandler.prototype.$findNearestAnnotation = function (index) { + if (this.$isAnnotationVisible(index)) + return index; + var i = 0; + while (index - i > 0 || index + i < this.lines.getLength() - 1) { + i++; + if (index - i >= 0 && this.$isAnnotationVisible(index - i)) + return index - i; + if (index + i <= this.lines.getLength() - 1 && this.$isAnnotationVisible(index + i)) + return index + i; + } + return null; + }; + GutterKeyboardHandler.prototype.$focusFoldWidget = function (index) { + if (index == null) + return; + var foldWidget = this.$getFoldWidget(index); + foldWidget.classList.add(this.editor.renderer.keyboardFocusClassName); + foldWidget.focus(); + }; + GutterKeyboardHandler.prototype.$focusAnnotation = function (index) { + if (index == null) + return; + var annotation = this.$getAnnotation(index); + annotation.classList.add(this.editor.renderer.keyboardFocusClassName); + annotation.focus(); + }; + GutterKeyboardHandler.prototype.$blurFoldWidget = function (index) { + var foldWidget = this.$getFoldWidget(index); + foldWidget.classList.remove(this.editor.renderer.keyboardFocusClassName); + foldWidget.blur(); + }; + GutterKeyboardHandler.prototype.$blurAnnotation = function (index) { + var annotation = this.$getAnnotation(index); + annotation.classList.remove(this.editor.renderer.keyboardFocusClassName); + annotation.blur(); + }; + GutterKeyboardHandler.prototype.$moveFoldWidgetUp = function () { + var index = this.activeRowIndex; + while (index > 0) { + index--; + if (this.$isFoldWidgetVisible(index)) { + this.$blurFoldWidget(this.activeRowIndex); + this.activeRowIndex = index; + this.$focusFoldWidget(this.activeRowIndex); + return; + } + } + return; + }; + GutterKeyboardHandler.prototype.$moveFoldWidgetDown = function () { + var index = this.activeRowIndex; + while (index < this.lines.getLength() - 1) { + index++; + if (this.$isFoldWidgetVisible(index)) { + this.$blurFoldWidget(this.activeRowIndex); + this.activeRowIndex = index; + this.$focusFoldWidget(this.activeRowIndex); + return; + } + } + return; + }; + GutterKeyboardHandler.prototype.$moveAnnotationUp = function () { + var index = this.activeRowIndex; + while (index > 0) { + index--; + if (this.$isAnnotationVisible(index)) { + this.$blurAnnotation(this.activeRowIndex); + this.activeRowIndex = index; + this.$focusAnnotation(this.activeRowIndex); + return; + } + } + return; + }; + GutterKeyboardHandler.prototype.$moveAnnotationDown = function () { + var index = this.activeRowIndex; + while (index < this.lines.getLength() - 1) { + index++; + if (this.$isAnnotationVisible(index)) { + this.$blurAnnotation(this.activeRowIndex); + this.activeRowIndex = index; + this.$focusAnnotation(this.activeRowIndex); + return; + } + } + return; + }; + GutterKeyboardHandler.prototype.$switchLane = function (desinationLane) { + switch (desinationLane) { + case "annotation": + if (this.activeLane === "annotation") { + break; + } + var annotationIndex = this.$findNearestAnnotation(this.activeRowIndex); + if (annotationIndex == null) { + break; + } + this.activeLane = "annotation"; + this.$blurFoldWidget(this.activeRowIndex); + this.activeRowIndex = annotationIndex; + this.$focusAnnotation(this.activeRowIndex); + break; + case "fold": + if (this.activeLane === "fold") { + break; + } + var foldWidgetIndex = this.$findNearestFoldWidget(this.activeRowIndex); + if (foldWidgetIndex == null) { + break; + } + this.activeLane = "fold"; + this.$blurAnnotation(this.activeRowIndex); + this.activeRowIndex = foldWidgetIndex; + this.$focusFoldWidget(this.activeRowIndex); + break; + } + return; + }; + GutterKeyboardHandler.prototype.$rowIndexToRow = function (index) { + var cell = this.lines.get(index); + if (cell) + return cell.row; + return null; + }; + GutterKeyboardHandler.prototype.$rowToRowIndex = function (row) { + for (var i = 0; i < this.lines.getLength(); i++) { + var cell = this.lines.get(i); + if (cell.row == row) + return i; + } + return null; + }; + return GutterKeyboardHandler; +}()); +exports.GutterKeyboardHandler = GutterKeyboardHandler; +var GutterKeyboardEvent = /** @class */ (function () { + function GutterKeyboardEvent(domEvent, gutterKeyboardHandler) { + this.gutterKeyboardHandler = gutterKeyboardHandler; + this.domEvent = domEvent; + } + GutterKeyboardEvent.prototype.getKey = function () { + return keys.keyCodeToString(this.domEvent.keyCode); + }; + GutterKeyboardEvent.prototype.getRow = function () { + return this.gutterKeyboardHandler.$rowIndexToRow(this.gutterKeyboardHandler.activeRowIndex); + }; + GutterKeyboardEvent.prototype.isInAnnotationLane = function () { + return this.gutterKeyboardHandler.activeLane === "annotation"; + }; + GutterKeyboardEvent.prototype.isInFoldLane = function () { + return this.gutterKeyboardHandler.activeLane === "fold"; + }; + return GutterKeyboardEvent; +}()); +exports.GutterKeyboardEvent = GutterKeyboardEvent; + +}); + +ace.define("ace/editor",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/lib/useragent","ace/keyboard/textinput","ace/mouse/mouse_handler","ace/mouse/fold_handler","ace/keyboard/keybinding","ace/edit_session","ace/search","ace/range","ace/lib/event_emitter","ace/commands/command_manager","ace/commands/default_commands","ace/config","ace/token_iterator","ace/line_widgets","ace/keyboard/gutter_handler","ace/config","ace/clipboard","ace/lib/keys"], function(require, exports, module){"use strict"; +var __values = (this && this.__values) || function(o) { + var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0; + if (m) return m.call(o); + if (o && typeof o.length === "number") return { + next: function () { + if (o && i >= o.length) o = void 0; + return { value: o && o[i++], done: !o }; + } + }; + throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined."); +}; +var oop = require("./lib/oop"); +var dom = require("./lib/dom"); +var lang = require("./lib/lang"); +var useragent = require("./lib/useragent"); +var TextInput = require("./keyboard/textinput").TextInput; +var MouseHandler = require("./mouse/mouse_handler").MouseHandler; +var FoldHandler = require("./mouse/fold_handler").FoldHandler; +var KeyBinding = require("./keyboard/keybinding").KeyBinding; +var EditSession = require("./edit_session").EditSession; +var Search = require("./search").Search; +var Range = require("./range").Range; +var EventEmitter = require("./lib/event_emitter").EventEmitter; +var CommandManager = require("./commands/command_manager").CommandManager; +var defaultCommands = require("./commands/default_commands").commands; +var config = require("./config"); +var TokenIterator = require("./token_iterator").TokenIterator; +var LineWidgets = require("./line_widgets").LineWidgets; +var GutterKeyboardHandler = require("./keyboard/gutter_handler").GutterKeyboardHandler; +var nls = require("./config").nls; +var clipboard = require("./clipboard"); +var keys = require('./lib/keys'); +var Editor = /** @class */ (function () { + function Editor(renderer, session, options) { + this.$toDestroy = []; + var container = renderer.getContainerElement(); + this.container = container; + this.renderer = renderer; + this.id = "editor" + (++Editor.$uid); + this.commands = new CommandManager(useragent.isMac ? "mac" : "win", defaultCommands); + if (typeof document == "object") { + this.textInput = new TextInput(renderer.getTextAreaContainer(), this); + this.renderer.textarea = this.textInput.getElement(); + this.$mouseHandler = new MouseHandler(this); + new FoldHandler(this); + } + this.keyBinding = new KeyBinding(this); + this.$search = new Search().set({ + wrap: true + }); + this.$historyTracker = this.$historyTracker.bind(this); + this.commands.on("exec", this.$historyTracker); + this.$initOperationListeners(); + this._$emitInputEvent = lang.delayedCall(function () { + this._signal("input", {}); + if (this.session && !this.session.destroyed) + this.session.bgTokenizer.scheduleStart(); + }.bind(this)); + this.on("change", function (_, _self) { + _self._$emitInputEvent.schedule(31); + }); + this.setSession(session || options && options.session || new EditSession("")); + config.resetOptions(this); + if (options) + this.setOptions(options); + config._signal("editor", this); + } + Editor.prototype.$initOperationListeners = function () { + this.commands.on("exec", this.startOperation.bind(this), true); + this.commands.on("afterExec", this.endOperation.bind(this), true); + this.$opResetTimer = lang.delayedCall(this.endOperation.bind(this, true)); + this.on("change", function () { + if (!this.curOp) { + this.startOperation(); + this.curOp.selectionBefore = this.$lastSel; + } + this.curOp.docChanged = true; + }.bind(this), true); + this.on("changeSelection", function () { + if (!this.curOp) { + this.startOperation(); + this.curOp.selectionBefore = this.$lastSel; + } + this.curOp.selectionChanged = true; + }.bind(this), true); + }; + Editor.prototype.startOperation = function (commandEvent) { + if (this.curOp) { + if (!commandEvent || this.curOp.command) + return; + this.prevOp = this.curOp; + } + if (!commandEvent) { + this.previousCommand = null; + commandEvent = {}; + } + this.$opResetTimer.schedule(); + this.curOp = this.session.curOp = { + command: commandEvent.command || {}, + args: commandEvent.args, + scrollTop: this.renderer.scrollTop + }; + this.curOp.selectionBefore = this.selection.toJSON(); + }; + Editor.prototype.endOperation = function (e) { + if (this.curOp && this.session) { + if (e && e.returnValue === false || !this.session) + return (this.curOp = null); + if (e == true && this.curOp.command && this.curOp.command.name == "mouse") + return; + this._signal("beforeEndOperation"); + if (!this.curOp) + return; + var command = this.curOp.command; + var scrollIntoView = command && command.scrollIntoView; + if (scrollIntoView) { + switch (scrollIntoView) { + case "center-animate": + scrollIntoView = "animate"; + case "center": + this.renderer.scrollCursorIntoView(null, 0.5); + break; + case "animate": + case "cursor": + this.renderer.scrollCursorIntoView(); + break; + case "selectionPart": + var range = this.selection.getRange(); + var config = this.renderer.layerConfig; + if (range.start.row >= config.lastRow || range.end.row <= config.firstRow) { + this.renderer.scrollSelectionIntoView(this.selection.anchor, this.selection.lead); + } + break; + default: + break; + } + if (scrollIntoView == "animate") + this.renderer.animateScrolling(this.curOp.scrollTop); + } + var sel = this.selection.toJSON(); + this.curOp.selectionAfter = sel; + this.$lastSel = this.selection.toJSON(); + this.session.getUndoManager().addSelection(sel); + this.prevOp = this.curOp; + this.curOp = null; + } + }; + Editor.prototype.$historyTracker = function (e) { + if (!this.$mergeUndoDeltas) + return; + var prev = this.prevOp; + var mergeableCommands = this.$mergeableCommands; + var shouldMerge = prev.command && (e.command.name == prev.command.name); + if (e.command.name == "insertstring") { + var text = e.args; + if (this.mergeNextCommand === undefined) + this.mergeNextCommand = true; + shouldMerge = shouldMerge + && this.mergeNextCommand // previous command allows to coalesce with + && (!/\s/.test(text) || /\s/.test(prev.args)); // previous insertion was of same type + this.mergeNextCommand = true; + } + else { + shouldMerge = shouldMerge + && mergeableCommands.indexOf(e.command.name) !== -1; // the command is mergeable + } + if (this.$mergeUndoDeltas != "always" + && Date.now() - this.sequenceStartTime > 2000) { + shouldMerge = false; // the sequence is too long + } + if (shouldMerge) + this.session.mergeUndoDeltas = true; + else if (mergeableCommands.indexOf(e.command.name) !== -1) + this.sequenceStartTime = Date.now(); + }; + Editor.prototype.setKeyboardHandler = function (keyboardHandler, cb) { + if (keyboardHandler && typeof keyboardHandler === "string" && keyboardHandler != "ace") { + this.$keybindingId = keyboardHandler; + var _self = this; + config.loadModule(["keybinding", keyboardHandler], function (module) { + if (_self.$keybindingId == keyboardHandler) + _self.keyBinding.setKeyboardHandler(module && module.handler); + cb && cb(); + }); + } + else { + this.$keybindingId = null; + this.keyBinding.setKeyboardHandler(keyboardHandler); + cb && cb(); + } + }; + Editor.prototype.getKeyboardHandler = function () { + return this.keyBinding.getKeyboardHandler(); + }; + Editor.prototype.setSession = function (session) { + if (this.session == session) + return; + if (this.curOp) + this.endOperation(); + this.curOp = {}; + var oldSession = this.session; + if (oldSession) { + this.session.off("change", this.$onDocumentChange); + this.session.off("changeMode", this.$onChangeMode); + this.session.off("tokenizerUpdate", this.$onTokenizerUpdate); + this.session.off("changeTabSize", this.$onChangeTabSize); + this.session.off("changeWrapLimit", this.$onChangeWrapLimit); + this.session.off("changeWrapMode", this.$onChangeWrapMode); + this.session.off("changeFold", this.$onChangeFold); + this.session.off("changeFrontMarker", this.$onChangeFrontMarker); + this.session.off("changeBackMarker", this.$onChangeBackMarker); + this.session.off("changeBreakpoint", this.$onChangeBreakpoint); + this.session.off("changeAnnotation", this.$onChangeAnnotation); + this.session.off("changeOverwrite", this.$onCursorChange); + this.session.off("changeScrollTop", this.$onScrollTopChange); + this.session.off("changeScrollLeft", this.$onScrollLeftChange); + var selection = this.session.getSelection(); + selection.off("changeCursor", this.$onCursorChange); + selection.off("changeSelection", this.$onSelectionChange); + } + this.session = session; + if (session) { + this.$onDocumentChange = this.onDocumentChange.bind(this); + session.on("change", this.$onDocumentChange); + this.renderer.setSession(session); + this.$onChangeMode = this.onChangeMode.bind(this); + session.on("changeMode", this.$onChangeMode); + this.$onTokenizerUpdate = this.onTokenizerUpdate.bind(this); + session.on("tokenizerUpdate", this.$onTokenizerUpdate); + this.$onChangeTabSize = this.renderer.onChangeTabSize.bind(this.renderer); + session.on("changeTabSize", this.$onChangeTabSize); + this.$onChangeWrapLimit = this.onChangeWrapLimit.bind(this); + session.on("changeWrapLimit", this.$onChangeWrapLimit); + this.$onChangeWrapMode = this.onChangeWrapMode.bind(this); + session.on("changeWrapMode", this.$onChangeWrapMode); + this.$onChangeFold = this.onChangeFold.bind(this); + session.on("changeFold", this.$onChangeFold); + this.$onChangeFrontMarker = this.onChangeFrontMarker.bind(this); + this.session.on("changeFrontMarker", this.$onChangeFrontMarker); + this.$onChangeBackMarker = this.onChangeBackMarker.bind(this); + this.session.on("changeBackMarker", this.$onChangeBackMarker); + this.$onChangeBreakpoint = this.onChangeBreakpoint.bind(this); + this.session.on("changeBreakpoint", this.$onChangeBreakpoint); + this.$onChangeAnnotation = this.onChangeAnnotation.bind(this); + this.session.on("changeAnnotation", this.$onChangeAnnotation); + this.$onCursorChange = this.onCursorChange.bind(this); + this.session.on("changeOverwrite", this.$onCursorChange); + this.$onScrollTopChange = this.onScrollTopChange.bind(this); + this.session.on("changeScrollTop", this.$onScrollTopChange); + this.$onScrollLeftChange = this.onScrollLeftChange.bind(this); + this.session.on("changeScrollLeft", this.$onScrollLeftChange); + this.selection = session.getSelection(); + this.selection.on("changeCursor", this.$onCursorChange); + this.$onSelectionChange = this.onSelectionChange.bind(this); + this.selection.on("changeSelection", this.$onSelectionChange); + this.onChangeMode(); + this.onCursorChange(); + this.onScrollTopChange(); + this.onScrollLeftChange(); + this.onSelectionChange(); + this.onChangeFrontMarker(); + this.onChangeBackMarker(); + this.onChangeBreakpoint(); + this.onChangeAnnotation(); + this.session.getUseWrapMode() && this.renderer.adjustWrapLimit(); + this.renderer.updateFull(); + } + else { + this.selection = null; + this.renderer.setSession(session); + } + this._signal("changeSession", { + session: session, + oldSession: oldSession + }); + this.curOp = null; + oldSession && oldSession._signal("changeEditor", { oldEditor: this }); + session && session._signal("changeEditor", { editor: this }); + if (session && !session.destroyed) + session.bgTokenizer.scheduleStart(); + }; + Editor.prototype.getSession = function () { + return this.session; + }; + Editor.prototype.setValue = function (val, cursorPos) { + this.session.doc.setValue(val); + if (!cursorPos) + this.selectAll(); + else if (cursorPos == 1) + this.navigateFileEnd(); + else if (cursorPos == -1) + this.navigateFileStart(); + return val; + }; + Editor.prototype.getValue = function () { + return this.session.getValue(); + }; + Editor.prototype.getSelection = function () { + return this.selection; + }; + Editor.prototype.resize = function (force) { + this.renderer.onResize(force); + }; + Editor.prototype.setTheme = function (theme, cb) { + this.renderer.setTheme(theme, cb); + }; + Editor.prototype.getTheme = function () { + return this.renderer.getTheme(); + }; + Editor.prototype.setStyle = function (style) { + this.renderer.setStyle(style); + }; + Editor.prototype.unsetStyle = function (style) { + this.renderer.unsetStyle(style); + }; + Editor.prototype.getFontSize = function () { + return this.getOption("fontSize") || + dom.computedStyle(this.container).fontSize; + }; + Editor.prototype.setFontSize = function (size) { + this.setOption("fontSize", size); + }; + Editor.prototype.$highlightBrackets = function () { + if (this.$highlightPending) { + return; + } + var self = this; + this.$highlightPending = true; + setTimeout(function () { + self.$highlightPending = false; + var session = self.session; + if (!session || session.destroyed) + return; + if (session.$bracketHighlight) { + session.$bracketHighlight.markerIds.forEach(function (id) { + session.removeMarker(id); + }); + session.$bracketHighlight = null; + } + var pos = self.getCursorPosition(); + var handler = self.getKeyboardHandler(); + var isBackwards = handler && handler.$getDirectionForHighlight && handler.$getDirectionForHighlight(self); + var ranges = session.getMatchingBracketRanges(pos, isBackwards); + if (!ranges) { + var iterator = new TokenIterator(session, pos.row, pos.column); + var token = iterator.getCurrentToken(); + if (token && /\b(?:tag-open|tag-name)/.test(token.type)) { + var tagNamesRanges = session.getMatchingTags(pos); + if (tagNamesRanges) + ranges = [tagNamesRanges.openTagName, tagNamesRanges.closeTagName]; + } + } + if (!ranges && session.$mode.getMatching) + ranges = session.$mode.getMatching(self.session); + if (!ranges) { + if (self.getHighlightIndentGuides()) + self.renderer.$textLayer.$highlightIndentGuide(); + return; + } + var markerType = "ace_bracket"; + if (!Array.isArray(ranges)) { + ranges = [ranges]; + } + else if (ranges.length == 1) { + markerType = "ace_error_bracket"; + } + if (ranges.length == 2) { + if (Range.comparePoints(ranges[0].end, ranges[1].start) == 0) + ranges = [Range.fromPoints(ranges[0].start, ranges[1].end)]; + else if (Range.comparePoints(ranges[0].start, ranges[1].end) == 0) + ranges = [Range.fromPoints(ranges[1].start, ranges[0].end)]; + } + session.$bracketHighlight = { + ranges: ranges, + markerIds: ranges.map(function (range) { + return session.addMarker(range, markerType, "text"); + }) + }; + if (self.getHighlightIndentGuides()) + self.renderer.$textLayer.$highlightIndentGuide(); + }, 50); + }; + Editor.prototype.focus = function () { + this.textInput.focus(); + }; + Editor.prototype.isFocused = function () { + return this.textInput.isFocused(); + }; + Editor.prototype.blur = function () { + this.textInput.blur(); + }; + Editor.prototype.onFocus = function (e) { + if (this.$isFocused) + return; + this.$isFocused = true; + this.renderer.showCursor(); + this.renderer.visualizeFocus(); + this._emit("focus", e); + }; + Editor.prototype.onBlur = function (e) { + if (!this.$isFocused) + return; + this.$isFocused = false; + this.renderer.hideCursor(); + this.renderer.visualizeBlur(); + this._emit("blur", e); + }; + Editor.prototype.$cursorChange = function () { + this.renderer.updateCursor(); + this.$highlightBrackets(); + this.$updateHighlightActiveLine(); + }; + Editor.prototype.onDocumentChange = function (delta) { + var wrap = this.session.$useWrapMode; + var lastRow = (delta.start.row == delta.end.row ? delta.end.row : Infinity); + this.renderer.updateLines(delta.start.row, lastRow, wrap); + this._signal("change", delta); + this.$cursorChange(); + }; + Editor.prototype.onTokenizerUpdate = function (e) { + var rows = e.data; + this.renderer.updateLines(rows.first, rows.last); + }; + Editor.prototype.onScrollTopChange = function () { + this.renderer.scrollToY(this.session.getScrollTop()); + }; + Editor.prototype.onScrollLeftChange = function () { + this.renderer.scrollToX(this.session.getScrollLeft()); + }; + Editor.prototype.onCursorChange = function () { + this.$cursorChange(); + this._signal("changeSelection"); + }; + Editor.prototype.$updateHighlightActiveLine = function () { + var session = this.getSession(); + var highlight; + if (this.$highlightActiveLine) { + if (this.$selectionStyle != "line" || !this.selection.isMultiLine()) + highlight = this.getCursorPosition(); + if (this.renderer.theme && this.renderer.theme.$selectionColorConflict && !this.selection.isEmpty()) + highlight = false; + if (this.renderer.$maxLines && this.session.getLength() === 1 && !(this.renderer.$minLines > 1)) + highlight = false; + } + if (session.$highlightLineMarker && !highlight) { + session.removeMarker(session.$highlightLineMarker.id); + session.$highlightLineMarker = null; + } + else if (!session.$highlightLineMarker && highlight) { + var range = new Range(highlight.row, highlight.column, highlight.row, Infinity); + range.id = session.addMarker(range, "ace_active-line", "screenLine"); + session.$highlightLineMarker = range; + } + else if (highlight) { + session.$highlightLineMarker.start.row = highlight.row; + session.$highlightLineMarker.end.row = highlight.row; + session.$highlightLineMarker.start.column = highlight.column; + session._signal("changeBackMarker"); + } + }; + Editor.prototype.onSelectionChange = function (e) { + var session = this.session; + if (session.$selectionMarker) { + session.removeMarker(session.$selectionMarker); + } + session.$selectionMarker = null; + if (!this.selection.isEmpty()) { + var range = this.selection.getRange(); + var style = this.getSelectionStyle(); + session.$selectionMarker = session.addMarker(range, "ace_selection", style); + } + else { + this.$updateHighlightActiveLine(); + } + var re = this.$highlightSelectedWord && this.$getSelectionHighLightRegexp(); + this.session.highlight(re); + this._signal("changeSelection"); + }; + Editor.prototype.$getSelectionHighLightRegexp = function () { + var session = this.session; + var selection = this.getSelectionRange(); + if (selection.isEmpty() || selection.isMultiLine()) + return; + var startColumn = selection.start.column; + var endColumn = selection.end.column; + var line = session.getLine(selection.start.row); + var needle = line.substring(startColumn, endColumn); + if (needle.length > 5000 || !/[\w\d]/.test(needle)) + return; + var re = this.$search.$assembleRegExp({ + wholeWord: true, + caseSensitive: true, + needle: needle + }); + var wordWithBoundary = line.substring(startColumn - 1, endColumn + 1); + if (!re.test(wordWithBoundary)) + return; + return re; + }; + Editor.prototype.onChangeFrontMarker = function () { + this.renderer.updateFrontMarkers(); + }; + Editor.prototype.onChangeBackMarker = function () { + this.renderer.updateBackMarkers(); + }; + Editor.prototype.onChangeBreakpoint = function () { + this.renderer.updateBreakpoints(); + }; + Editor.prototype.onChangeAnnotation = function () { + this.renderer.setAnnotations(this.session.getAnnotations()); + }; + Editor.prototype.onChangeMode = function (e) { + this.renderer.updateText(); + this._emit("changeMode", e); + }; + Editor.prototype.onChangeWrapLimit = function () { + this.renderer.updateFull(); + }; + Editor.prototype.onChangeWrapMode = function () { + this.renderer.onResize(true); + }; + Editor.prototype.onChangeFold = function () { + this.$updateHighlightActiveLine(); + this.renderer.updateFull(); + }; + Editor.prototype.getSelectedText = function () { + return this.session.getTextRange(this.getSelectionRange()); + }; + Editor.prototype.getCopyText = function () { + var text = this.getSelectedText(); + var nl = this.session.doc.getNewLineCharacter(); + var copyLine = false; + if (!text && this.$copyWithEmptySelection) { + copyLine = true; + var ranges = this.selection.getAllRanges(); + for (var i = 0; i < ranges.length; i++) { + var range = ranges[i]; + if (i && ranges[i - 1].start.row == range.start.row) + continue; + text += this.session.getLine(range.start.row) + nl; + } + } + var e = { text: text }; + this._signal("copy", e); + clipboard.lineMode = copyLine ? e.text : false; + return e.text; + }; + Editor.prototype.onCopy = function () { + this.commands.exec("copy", this); + }; + Editor.prototype.onCut = function () { + this.commands.exec("cut", this); + }; + Editor.prototype.onPaste = function (text, event) { + var e = { text: text, event: event }; + this.commands.exec("paste", this, e); + }; + Editor.prototype.$handlePaste = function (e) { + if (typeof e == "string") + e = { text: e }; + this._signal("paste", e); + var text = e.text; + var lineMode = text === clipboard.lineMode; + var session = this.session; + if (!this.inMultiSelectMode || this.inVirtualSelectionMode) { + if (lineMode) + session.insert({ row: this.selection.lead.row, column: 0 }, text); + else + this.insert(text); + } + else if (lineMode) { + this.selection.rangeList.ranges.forEach(function (range) { + session.insert({ row: range.start.row, column: 0 }, text); + }); + } + else { + var lines = text.split(/\r\n|\r|\n/); + var ranges = this.selection.rangeList.ranges; + var isFullLine = lines.length == 2 && (!lines[0] || !lines[1]); + if (lines.length != ranges.length || isFullLine) + return this.commands.exec("insertstring", this, text); + for (var i = ranges.length; i--;) { + var range = ranges[i]; + if (!range.isEmpty()) + session.remove(range); + session.insert(range.start, lines[i]); + } + } + }; + Editor.prototype.execCommand = function (command, args) { + return this.commands.exec(command, this, args); + }; + Editor.prototype.insert = function (text, pasted) { + var session = this.session; + var mode = session.getMode(); + var cursor = this.getCursorPosition(); + if (this.getBehavioursEnabled() && !pasted) { + var transform = mode.transformAction(session.getState(cursor.row), 'insertion', this, session, text); + if (transform) { + if (text !== transform.text) { + if (!this.inVirtualSelectionMode) { + this.session.mergeUndoDeltas = false; + this.mergeNextCommand = false; + } + } + text = transform.text; + } + } + if (text == "\t") + text = this.session.getTabString(); + if (!this.selection.isEmpty()) { + var range = this.getSelectionRange(); + cursor = this.session.remove(range); + this.clearSelection(); + } + else if (this.session.getOverwrite() && text.indexOf("\n") == -1) { + var range = new Range.fromPoints(cursor, cursor); + range.end.column += text.length; + this.session.remove(range); + } + if (text == "\n" || text == "\r\n") { + var line = session.getLine(cursor.row); + if (cursor.column > line.search(/\S|$/)) { + var d = line.substr(cursor.column).search(/\S|$/); + session.doc.removeInLine(cursor.row, cursor.column, cursor.column + d); + } + } + this.clearSelection(); + var start = cursor.column; + var lineState = session.getState(cursor.row); + var line = session.getLine(cursor.row); + var shouldOutdent = mode.checkOutdent(lineState, line, text); + session.insert(cursor, text); + if (transform && transform.selection) { + if (transform.selection.length == 2) { // Transform relative to the current column + this.selection.setSelectionRange(new Range(cursor.row, start + transform.selection[0], cursor.row, start + transform.selection[1])); + } + else { // Transform relative to the current row. + this.selection.setSelectionRange(new Range(cursor.row + transform.selection[0], transform.selection[1], cursor.row + transform.selection[2], transform.selection[3])); + } + } + if (this.$enableAutoIndent) { + if (session.getDocument().isNewLine(text)) { + var lineIndent = mode.getNextLineIndent(lineState, line.slice(0, cursor.column), session.getTabString()); + session.insert({ row: cursor.row + 1, column: 0 }, lineIndent); + } + if (shouldOutdent) + mode.autoOutdent(lineState, session, cursor.row); + } + }; + Editor.prototype.autoIndent = function () { + var session = this.session; + var mode = session.getMode(); + var startRow, endRow; + if (this.selection.isEmpty()) { + startRow = 0; + endRow = session.doc.getLength() - 1; + } + else { + var selectedRange = this.getSelectionRange(); + startRow = selectedRange.start.row; + endRow = selectedRange.end.row; + } + var prevLineState = ""; + var prevLine = ""; + var lineIndent = ""; + var line, currIndent, range; + var tab = session.getTabString(); + for (var row = startRow; row <= endRow; row++) { + if (row > 0) { + prevLineState = session.getState(row - 1); + prevLine = session.getLine(row - 1); + lineIndent = mode.getNextLineIndent(prevLineState, prevLine, tab); + } + line = session.getLine(row); + currIndent = mode.$getIndent(line); + if (lineIndent !== currIndent) { + if (currIndent.length > 0) { + range = new Range(row, 0, row, currIndent.length); + session.remove(range); + } + if (lineIndent.length > 0) { + session.insert({ row: row, column: 0 }, lineIndent); + } + } + mode.autoOutdent(prevLineState, session, row); + } + }; + Editor.prototype.onTextInput = function (text, composition) { + if (!composition) + return this.keyBinding.onTextInput(text); + this.startOperation({ command: { name: "insertstring" } }); + var applyComposition = this.applyComposition.bind(this, text, composition); + if (this.selection.rangeCount) + this.forEachSelection(applyComposition); + else + applyComposition(); + this.endOperation(); + }; + Editor.prototype.applyComposition = function (text, composition) { + if (composition.extendLeft || composition.extendRight) { + var r = this.selection.getRange(); + r.start.column -= composition.extendLeft; + r.end.column += composition.extendRight; + if (r.start.column < 0) { + r.start.row--; + r.start.column += this.session.getLine(r.start.row).length + 1; + } + this.selection.setRange(r); + if (!text && !r.isEmpty()) + this.remove(); + } + if (text || !this.selection.isEmpty()) + this.insert(text, true); + if (composition.restoreStart || composition.restoreEnd) { + var r = this.selection.getRange(); + r.start.column -= composition.restoreStart; + r.end.column -= composition.restoreEnd; + this.selection.setRange(r); + } + }; + Editor.prototype.onCommandKey = function (e, hashId, keyCode) { + return this.keyBinding.onCommandKey(e, hashId, keyCode); + }; + Editor.prototype.setOverwrite = function (overwrite) { + this.session.setOverwrite(overwrite); + }; + Editor.prototype.getOverwrite = function () { + return this.session.getOverwrite(); + }; + Editor.prototype.toggleOverwrite = function () { + this.session.toggleOverwrite(); + }; + Editor.prototype.setScrollSpeed = function (speed) { + this.setOption("scrollSpeed", speed); + }; + Editor.prototype.getScrollSpeed = function () { + return this.getOption("scrollSpeed"); + }; + Editor.prototype.setDragDelay = function (dragDelay) { + this.setOption("dragDelay", dragDelay); + }; + Editor.prototype.getDragDelay = function () { + return this.getOption("dragDelay"); + }; + Editor.prototype.setSelectionStyle = function (val) { + this.setOption("selectionStyle", val); + }; + Editor.prototype.getSelectionStyle = function () { + return this.getOption("selectionStyle"); + }; + Editor.prototype.setHighlightActiveLine = function (shouldHighlight) { + this.setOption("highlightActiveLine", shouldHighlight); + }; + Editor.prototype.getHighlightActiveLine = function () { + return this.getOption("highlightActiveLine"); + }; + Editor.prototype.setHighlightGutterLine = function (shouldHighlight) { + this.setOption("highlightGutterLine", shouldHighlight); + }; + Editor.prototype.getHighlightGutterLine = function () { + return this.getOption("highlightGutterLine"); + }; + Editor.prototype.setHighlightSelectedWord = function (shouldHighlight) { + this.setOption("highlightSelectedWord", shouldHighlight); + }; + Editor.prototype.getHighlightSelectedWord = function () { + return this.$highlightSelectedWord; + }; + Editor.prototype.setAnimatedScroll = function (shouldAnimate) { + this.renderer.setAnimatedScroll(shouldAnimate); + }; + Editor.prototype.getAnimatedScroll = function () { + return this.renderer.getAnimatedScroll(); + }; + Editor.prototype.setShowInvisibles = function (showInvisibles) { + this.renderer.setShowInvisibles(showInvisibles); + }; + Editor.prototype.getShowInvisibles = function () { + return this.renderer.getShowInvisibles(); + }; + Editor.prototype.setDisplayIndentGuides = function (display) { + this.renderer.setDisplayIndentGuides(display); + }; + Editor.prototype.getDisplayIndentGuides = function () { + return this.renderer.getDisplayIndentGuides(); + }; + Editor.prototype.setHighlightIndentGuides = function (highlight) { + this.renderer.setHighlightIndentGuides(highlight); + }; + Editor.prototype.getHighlightIndentGuides = function () { + return this.renderer.getHighlightIndentGuides(); + }; + Editor.prototype.setShowPrintMargin = function (showPrintMargin) { + this.renderer.setShowPrintMargin(showPrintMargin); + }; + Editor.prototype.getShowPrintMargin = function () { + return this.renderer.getShowPrintMargin(); + }; + Editor.prototype.setPrintMarginColumn = function (showPrintMargin) { + this.renderer.setPrintMarginColumn(showPrintMargin); + }; + Editor.prototype.getPrintMarginColumn = function () { + return this.renderer.getPrintMarginColumn(); + }; + Editor.prototype.setReadOnly = function (readOnly) { + this.setOption("readOnly", readOnly); + }; + Editor.prototype.getReadOnly = function () { + return this.getOption("readOnly"); + }; + Editor.prototype.setBehavioursEnabled = function (enabled) { + this.setOption("behavioursEnabled", enabled); + }; + Editor.prototype.getBehavioursEnabled = function () { + return this.getOption("behavioursEnabled"); + }; + Editor.prototype.setWrapBehavioursEnabled = function (enabled) { + this.setOption("wrapBehavioursEnabled", enabled); + }; + Editor.prototype.getWrapBehavioursEnabled = function () { + return this.getOption("wrapBehavioursEnabled"); + }; + Editor.prototype.setShowFoldWidgets = function (show) { + this.setOption("showFoldWidgets", show); + }; + Editor.prototype.getShowFoldWidgets = function () { + return this.getOption("showFoldWidgets"); + }; + Editor.prototype.setFadeFoldWidgets = function (fade) { + this.setOption("fadeFoldWidgets", fade); + }; + Editor.prototype.getFadeFoldWidgets = function () { + return this.getOption("fadeFoldWidgets"); + }; + Editor.prototype.remove = function (dir) { + if (this.selection.isEmpty()) { + if (dir == "left") + this.selection.selectLeft(); + else + this.selection.selectRight(); + } + var range = this.getSelectionRange(); + if (this.getBehavioursEnabled()) { + var session = this.session; + var state = session.getState(range.start.row); + var new_range = session.getMode().transformAction(state, 'deletion', this, session, range); + if (range.end.column === 0) { + var text = session.getTextRange(range); + if (text[text.length - 1] == "\n") { + var line = session.getLine(range.end.row); + if (/^\s+$/.test(line)) { + range.end.column = line.length; + } + } + } + if (new_range) + range = new_range; + } + this.session.remove(range); + this.clearSelection(); + }; + Editor.prototype.removeWordRight = function () { + if (this.selection.isEmpty()) + this.selection.selectWordRight(); + this.session.remove(this.getSelectionRange()); + this.clearSelection(); + }; + Editor.prototype.removeWordLeft = function () { + if (this.selection.isEmpty()) + this.selection.selectWordLeft(); + this.session.remove(this.getSelectionRange()); + this.clearSelection(); + }; + Editor.prototype.removeToLineStart = function () { + if (this.selection.isEmpty()) + this.selection.selectLineStart(); + if (this.selection.isEmpty()) + this.selection.selectLeft(); + this.session.remove(this.getSelectionRange()); + this.clearSelection(); + }; + Editor.prototype.removeToLineEnd = function () { + if (this.selection.isEmpty()) + this.selection.selectLineEnd(); + var range = this.getSelectionRange(); + if (range.start.column == range.end.column && range.start.row == range.end.row) { + range.end.column = 0; + range.end.row++; + } + this.session.remove(range); + this.clearSelection(); + }; + Editor.prototype.splitLine = function () { + if (!this.selection.isEmpty()) { + this.session.remove(this.getSelectionRange()); + this.clearSelection(); + } + var cursor = this.getCursorPosition(); + this.insert("\n"); + this.moveCursorToPosition(cursor); + }; + Editor.prototype.setGhostText = function (text, position) { + if (!this.session.widgetManager) { + this.session.widgetManager = new LineWidgets(this.session); + this.session.widgetManager.attach(this); + } + this.renderer.setGhostText(text, position); + }; + Editor.prototype.removeGhostText = function () { + if (!this.session.widgetManager) + return; + this.renderer.removeGhostText(); + }; + Editor.prototype.transposeLetters = function () { + if (!this.selection.isEmpty()) { + return; + } + var cursor = this.getCursorPosition(); + var column = cursor.column; + if (column === 0) + return; + var line = this.session.getLine(cursor.row); + var swap, range; + if (column < line.length) { + swap = line.charAt(column) + line.charAt(column - 1); + range = new Range(cursor.row, column - 1, cursor.row, column + 1); + } + else { + swap = line.charAt(column - 1) + line.charAt(column - 2); + range = new Range(cursor.row, column - 2, cursor.row, column); + } + this.session.replace(range, swap); + this.session.selection.moveToPosition(range.end); + }; + Editor.prototype.toLowerCase = function () { + var originalRange = this.getSelectionRange(); + if (this.selection.isEmpty()) { + this.selection.selectWord(); + } + var range = this.getSelectionRange(); + var text = this.session.getTextRange(range); + this.session.replace(range, text.toLowerCase()); + this.selection.setSelectionRange(originalRange); + }; + Editor.prototype.toUpperCase = function () { + var originalRange = this.getSelectionRange(); + if (this.selection.isEmpty()) { + this.selection.selectWord(); + } + var range = this.getSelectionRange(); + var text = this.session.getTextRange(range); + this.session.replace(range, text.toUpperCase()); + this.selection.setSelectionRange(originalRange); + }; + Editor.prototype.indent = function () { + var session = this.session; + var range = this.getSelectionRange(); + if (range.start.row < range.end.row) { + var rows = this.$getSelectedRows(); + session.indentRows(rows.first, rows.last, "\t"); + return; + } + else if (range.start.column < range.end.column) { + var text = session.getTextRange(range); + if (!/^\s+$/.test(text)) { + var rows = this.$getSelectedRows(); + session.indentRows(rows.first, rows.last, "\t"); + return; + } + } + var line = session.getLine(range.start.row); + var position = range.start; + var size = session.getTabSize(); + var column = session.documentToScreenColumn(position.row, position.column); + if (this.session.getUseSoftTabs()) { + var count = (size - column % size); + var indentString = lang.stringRepeat(" ", count); + } + else { + var count = column % size; + while (line[range.start.column - 1] == " " && count) { + range.start.column--; + count--; + } + this.selection.setSelectionRange(range); + indentString = "\t"; + } + return this.insert(indentString); + }; + Editor.prototype.blockIndent = function () { + var rows = this.$getSelectedRows(); + this.session.indentRows(rows.first, rows.last, "\t"); + }; + Editor.prototype.blockOutdent = function () { + var selection = this.session.getSelection(); + this.session.outdentRows(selection.getRange()); + }; + Editor.prototype.sortLines = function () { + var rows = this.$getSelectedRows(); + var session = this.session; + var lines = []; + for (var i = rows.first; i <= rows.last; i++) + lines.push(session.getLine(i)); + lines.sort(function (a, b) { + if (a.toLowerCase() < b.toLowerCase()) + return -1; + if (a.toLowerCase() > b.toLowerCase()) + return 1; + return 0; + }); + var deleteRange = new Range(0, 0, 0, 0); + for (var i = rows.first; i <= rows.last; i++) { + var line = session.getLine(i); + deleteRange.start.row = i; + deleteRange.end.row = i; + deleteRange.end.column = line.length; + session.replace(deleteRange, lines[i - rows.first]); + } + }; + Editor.prototype.toggleCommentLines = function () { + var state = this.session.getState(this.getCursorPosition().row); + var rows = this.$getSelectedRows(); + this.session.getMode().toggleCommentLines(state, this.session, rows.first, rows.last); + }; + Editor.prototype.toggleBlockComment = function () { + var cursor = this.getCursorPosition(); + var state = this.session.getState(cursor.row); + var range = this.getSelectionRange(); + this.session.getMode().toggleBlockComment(state, this.session, range, cursor); + }; + Editor.prototype.getNumberAt = function (row, column) { + var _numberRx = /[\-]?[0-9]+(?:\.[0-9]+)?/g; + _numberRx.lastIndex = 0; + var s = this.session.getLine(row); + while (_numberRx.lastIndex < column) { + var m = _numberRx.exec(s); + if (m.index <= column && m.index + m[0].length >= column) { + var number = { + value: m[0], + start: m.index, + end: m.index + m[0].length + }; + return number; + } + } + return null; + }; + Editor.prototype.modifyNumber = function (amount) { + var row = this.selection.getCursor().row; + var column = this.selection.getCursor().column; + var charRange = new Range(row, column - 1, row, column); + var c = this.session.getTextRange(charRange); + if (!isNaN(parseFloat(c)) && isFinite(c)) { + var nr = this.getNumberAt(row, column); + if (nr) { + var fp = nr.value.indexOf(".") >= 0 ? nr.start + nr.value.indexOf(".") + 1 : nr.end; + var decimals = nr.start + nr.value.length - fp; + var t = parseFloat(nr.value); + t *= Math.pow(10, decimals); + if (fp !== nr.end && column < fp) { + amount *= Math.pow(10, nr.end - column - 1); + } + else { + amount *= Math.pow(10, nr.end - column); + } + t += amount; + t /= Math.pow(10, decimals); + var nnr = t.toFixed(decimals); + var replaceRange = new Range(row, nr.start, row, nr.end); + this.session.replace(replaceRange, nnr); + this.moveCursorTo(row, Math.max(nr.start + 1, column + nnr.length - nr.value.length)); + } + } + else { + this.toggleWord(); + } + }; + Editor.prototype.toggleWord = function () { + var row = this.selection.getCursor().row; + var column = this.selection.getCursor().column; + this.selection.selectWord(); + var currentState = this.getSelectedText(); + var currWordStart = this.selection.getWordRange().start.column; + var wordParts = currentState.replace(/([a-z]+|[A-Z]+)(?=[A-Z_]|$)/g, '$1 ').split(/\s/); + var delta = column - currWordStart - 1; + if (delta < 0) + delta = 0; + var curLength = 0, itLength = 0; + var that = this; + if (currentState.match(/[A-Za-z0-9_]+/)) { + wordParts.forEach(function (item, i) { + itLength = curLength + item.length; + if (delta >= curLength && delta <= itLength) { + currentState = item; + that.selection.clearSelection(); + that.moveCursorTo(row, curLength + currWordStart); + that.selection.selectTo(row, itLength + currWordStart); + } + curLength = itLength; + }); + } + var wordPairs = this.$toggleWordPairs; + var reg; + for (var i = 0; i < wordPairs.length; i++) { + var item = wordPairs[i]; + for (var j = 0; j <= 1; j++) { + var negate = +!j; + var firstCondition = currentState.match(new RegExp('^\\s?_?(' + lang.escapeRegExp(item[j]) + ')\\s?$', 'i')); + if (firstCondition) { + var secondCondition = currentState.match(new RegExp('([_]|^|\\s)(' + lang.escapeRegExp(firstCondition[1]) + ')($|\\s)', 'g')); + if (secondCondition) { + reg = currentState.replace(new RegExp(lang.escapeRegExp(item[j]), 'i'), function (result) { + var res = item[negate]; + if (result.toUpperCase() == result) { + res = res.toUpperCase(); + } + else if (result.charAt(0).toUpperCase() == result.charAt(0)) { + res = res.substr(0, 0) + item[negate].charAt(0).toUpperCase() + res.substr(1); + } + return res; + }); + this.insert(reg); + reg = ""; + } + } + } + } + }; + Editor.prototype.findLinkAt = function (row, column) { + var e_1, _a; + var line = this.session.getLine(row); + var wordParts = line.split(/((?:https?|ftp):\/\/[\S]+)/); + var columnPosition = column; + if (columnPosition < 0) + columnPosition = 0; + var previousPosition = 0, currentPosition = 0, match; + try { + for (var wordParts_1 = __values(wordParts), wordParts_1_1 = wordParts_1.next(); !wordParts_1_1.done; wordParts_1_1 = wordParts_1.next()) { + var item = wordParts_1_1.value; + currentPosition = previousPosition + item.length; + if (columnPosition >= previousPosition && columnPosition <= currentPosition) { + if (item.match(/((?:https?|ftp):\/\/[\S]+)/)) { + match = item.replace(/[\s:.,'";}\]]+$/, ""); + break; + } + } + previousPosition = currentPosition; + } + } + catch (e_1_1) { e_1 = { error: e_1_1 }; } + finally { + try { + if (wordParts_1_1 && !wordParts_1_1.done && (_a = wordParts_1.return)) _a.call(wordParts_1); + } + finally { if (e_1) throw e_1.error; } + } + return match; + }; + Editor.prototype.openLink = function () { + var cursor = this.selection.getCursor(); + var url = this.findLinkAt(cursor.row, cursor.column); + if (url) + window.open(url, '_blank'); + return url != null; + }; + Editor.prototype.removeLines = function () { + var rows = this.$getSelectedRows(); + this.session.removeFullLines(rows.first, rows.last); + this.clearSelection(); + }; + Editor.prototype.duplicateSelection = function () { + var sel = this.selection; + var doc = this.session; + var range = sel.getRange(); + var reverse = sel.isBackwards(); + if (range.isEmpty()) { + var row = range.start.row; + doc.duplicateLines(row, row); + } + else { + var point = reverse ? range.start : range.end; + var endPoint = doc.insert(point, doc.getTextRange(range), false); + range.start = point; + range.end = endPoint; + sel.setSelectionRange(range, reverse); + } + }; + Editor.prototype.moveLinesDown = function () { + this.$moveLines(1, false); + }; + Editor.prototype.moveLinesUp = function () { + this.$moveLines(-1, false); + }; + Editor.prototype.moveText = function (range, toPosition, copy) { + return this.session.moveText(range, toPosition, copy); + }; + Editor.prototype.copyLinesUp = function () { + this.$moveLines(-1, true); + }; + Editor.prototype.copyLinesDown = function () { + this.$moveLines(1, true); + }; + Editor.prototype.$moveLines = function (dir, copy) { + var rows, moved; + var selection = this.selection; + if (!selection.inMultiSelectMode || this.inVirtualSelectionMode) { + var range = selection.toOrientedRange(); + rows = this.$getSelectedRows(range); + moved = this.session.$moveLines(rows.first, rows.last, copy ? 0 : dir); + if (copy && dir == -1) + moved = 0; + range.moveBy(moved, 0); + selection.fromOrientedRange(range); + } + else { + var ranges = selection.rangeList.ranges; + selection.rangeList.detach(this.session); + this.inVirtualSelectionMode = true; + var diff = 0; + var totalDiff = 0; + var l = ranges.length; + for (var i = 0; i < l; i++) { + var rangeIndex = i; + ranges[i].moveBy(diff, 0); + rows = this.$getSelectedRows(ranges[i]); + var first = rows.first; + var last = rows.last; + while (++i < l) { + if (totalDiff) + ranges[i].moveBy(totalDiff, 0); + var subRows = this.$getSelectedRows(ranges[i]); + if (copy && subRows.first != last) + break; + else if (!copy && subRows.first > last + 1) + break; + last = subRows.last; + } + i--; + diff = this.session.$moveLines(first, last, copy ? 0 : dir); + if (copy && dir == -1) + rangeIndex = i + 1; + while (rangeIndex <= i) { + ranges[rangeIndex].moveBy(diff, 0); + rangeIndex++; + } + if (!copy) + diff = 0; + totalDiff += diff; + } + selection.fromOrientedRange(selection.ranges[0]); + selection.rangeList.attach(this.session); + this.inVirtualSelectionMode = false; + } + }; + Editor.prototype.$getSelectedRows = function (range) { + range = (range || this.getSelectionRange()).collapseRows(); + return { + first: this.session.getRowFoldStart(range.start.row), + last: this.session.getRowFoldEnd(range.end.row) + }; + }; + Editor.prototype.onCompositionStart = function (compositionState) { + this.renderer.showComposition(compositionState); + }; + Editor.prototype.onCompositionUpdate = function (text) { + this.renderer.setCompositionText(text); + }; + Editor.prototype.onCompositionEnd = function () { + this.renderer.hideComposition(); + }; + Editor.prototype.getFirstVisibleRow = function () { + return this.renderer.getFirstVisibleRow(); + }; + Editor.prototype.getLastVisibleRow = function () { + return this.renderer.getLastVisibleRow(); + }; + Editor.prototype.isRowVisible = function (row) { + return (row >= this.getFirstVisibleRow() && row <= this.getLastVisibleRow()); + }; + Editor.prototype.isRowFullyVisible = function (row) { + return (row >= this.renderer.getFirstFullyVisibleRow() && row <= this.renderer.getLastFullyVisibleRow()); + }; + Editor.prototype.$getVisibleRowCount = function () { + return this.renderer.getScrollBottomRow() - this.renderer.getScrollTopRow() + 1; + }; + Editor.prototype.$moveByPage = function (dir, select) { + var renderer = this.renderer; + var config = this.renderer.layerConfig; + var rows = dir * Math.floor(config.height / config.lineHeight); + if (select === true) { + this.selection.$moveSelection(function () { + this.moveCursorBy(rows, 0); + }); + } + else if (select === false) { + this.selection.moveCursorBy(rows, 0); + this.selection.clearSelection(); + } + var scrollTop = renderer.scrollTop; + renderer.scrollBy(0, rows * config.lineHeight); + if (select != null) + renderer.scrollCursorIntoView(null, 0.5); + renderer.animateScrolling(scrollTop); + }; + Editor.prototype.selectPageDown = function () { + this.$moveByPage(1, true); + }; + Editor.prototype.selectPageUp = function () { + this.$moveByPage(-1, true); + }; + Editor.prototype.gotoPageDown = function () { + this.$moveByPage(1, false); + }; + Editor.prototype.gotoPageUp = function () { + this.$moveByPage(-1, false); + }; + Editor.prototype.scrollPageDown = function () { + this.$moveByPage(1); + }; + Editor.prototype.scrollPageUp = function () { + this.$moveByPage(-1); + }; + Editor.prototype.scrollToRow = function (row) { + this.renderer.scrollToRow(row); + }; + Editor.prototype.scrollToLine = function (line, center, animate, callback) { + this.renderer.scrollToLine(line, center, animate, callback); + }; + Editor.prototype.centerSelection = function () { + var range = this.getSelectionRange(); + var pos = { + row: Math.floor(range.start.row + (range.end.row - range.start.row) / 2), + column: Math.floor(range.start.column + (range.end.column - range.start.column) / 2) + }; + this.renderer.alignCursor(pos, 0.5); + }; + Editor.prototype.getCursorPosition = function () { + return this.selection.getCursor(); + }; + Editor.prototype.getCursorPositionScreen = function () { + return this.session.documentToScreenPosition(this.getCursorPosition()); + }; + Editor.prototype.getSelectionRange = function () { + return this.selection.getRange(); + }; + Editor.prototype.selectAll = function () { + this.selection.selectAll(); + }; + Editor.prototype.clearSelection = function () { + this.selection.clearSelection(); + }; + Editor.prototype.moveCursorTo = function (row, column) { + this.selection.moveCursorTo(row, column); + }; + Editor.prototype.moveCursorToPosition = function (pos) { + this.selection.moveCursorToPosition(pos); + }; + Editor.prototype.jumpToMatching = function (select, expand) { + var cursor = this.getCursorPosition(); + var iterator = new TokenIterator(this.session, cursor.row, cursor.column); + var prevToken = iterator.getCurrentToken(); + var tokenCount = 0; + if (prevToken && prevToken.type.indexOf('tag-name') !== -1) { + prevToken = iterator.stepBackward(); + } + var token = prevToken || iterator.stepForward(); + if (!token) + return; + var matchType; + var found = false; + var depth = {}; + var i = cursor.column - token.start; + var bracketType; + var brackets = { + ")": "(", + "(": "(", + "]": "[", + "[": "[", + "{": "{", + "}": "{" + }; + do { + if (token.value.match(/[{}()\[\]]/g)) { + for (; i < token.value.length && !found; i++) { + if (!brackets[token.value[i]]) { + continue; + } + bracketType = brackets[token.value[i]] + '.' + token.type.replace("rparen", "lparen"); + if (isNaN(depth[bracketType])) { + depth[bracketType] = 0; + } + switch (token.value[i]) { + case '(': + case '[': + case '{': + depth[bracketType]++; + break; + case ')': + case ']': + case '}': + depth[bracketType]--; + if (depth[bracketType] === -1) { + matchType = 'bracket'; + found = true; + } + break; + } + } + } + else if (token.type.indexOf('tag-name') !== -1) { + if (isNaN(depth[token.value])) { + depth[token.value] = 0; + } + if (prevToken.value === '<' && tokenCount > 1) { + depth[token.value]++; + } + else if (prevToken.value === '= 0; --i) { + if (this.$tryReplace(ranges[i], replacement)) { + replaced++; + } + } + this.selection.setSelectionRange(selection); + return replaced; + }; + Editor.prototype.$tryReplace = function (range, replacement) { + var input = this.session.getTextRange(range); + replacement = this.$search.replace(input, replacement); + if (replacement !== null) { + range.end = this.session.replace(range, replacement); + return range; + } + else { + return null; + } + }; + Editor.prototype.getLastSearchOptions = function () { + return this.$search.getOptions(); + }; + Editor.prototype.find = function (needle, options, animate) { + if (!options) + options = {}; + if (typeof needle == "string" || needle instanceof RegExp) + options.needle = needle; + else if (typeof needle == "object") + oop.mixin(options, needle); + var range = this.selection.getRange(); + if (options.needle == null) { + needle = this.session.getTextRange(range) + || this.$search.$options.needle; + if (!needle) { + range = this.session.getWordRange(range.start.row, range.start.column); + needle = this.session.getTextRange(range); + } + this.$search.set({ needle: needle }); + } + this.$search.set(options); + if (!options.start) + this.$search.set({ start: range }); + var newRange = this.$search.find(this.session); + if (options.preventScroll) + return newRange; + if (newRange) { + this.revealRange(newRange, animate); + return newRange; + } + if (options.backwards) + range.start = range.end; + else + range.end = range.start; + this.selection.setRange(range); + }; + Editor.prototype.findNext = function (options, animate) { + this.find({ skipCurrent: true, backwards: false }, options, animate); + }; + Editor.prototype.findPrevious = function (options, animate) { + this.find(options, { skipCurrent: true, backwards: true }, animate); + }; + Editor.prototype.revealRange = function (range, animate) { + this.session.unfold(range); + this.selection.setSelectionRange(range); + var scrollTop = this.renderer.scrollTop; + this.renderer.scrollSelectionIntoView(range.start, range.end, 0.5); + if (animate !== false) + this.renderer.animateScrolling(scrollTop); + }; + Editor.prototype.undo = function () { + this.session.getUndoManager().undo(this.session); + this.renderer.scrollCursorIntoView(null, 0.5); + }; + Editor.prototype.redo = function () { + this.session.getUndoManager().redo(this.session); + this.renderer.scrollCursorIntoView(null, 0.5); + }; + Editor.prototype.destroy = function () { + if (this.$toDestroy) { + this.$toDestroy.forEach(function (el) { + el.destroy(); + }); + this.$toDestroy = null; + } + if (this.$mouseHandler) + this.$mouseHandler.destroy(); + this.renderer.destroy(); + this._signal("destroy", this); + if (this.session) + this.session.destroy(); + if (this._$emitInputEvent) + this._$emitInputEvent.cancel(); + this.removeAllListeners(); + }; + Editor.prototype.setAutoScrollEditorIntoView = function (enable) { + if (!enable) + return; + var rect; + var self = this; + var shouldScroll = false; + if (!this.$scrollAnchor) + this.$scrollAnchor = document.createElement("div"); + var scrollAnchor = this.$scrollAnchor; + scrollAnchor.style.cssText = "position:absolute"; + this.container.insertBefore(scrollAnchor, this.container.firstChild); + var onChangeSelection = this.on("changeSelection", function () { + shouldScroll = true; + }); + var onBeforeRender = this.renderer.on("beforeRender", function () { + if (shouldScroll) + rect = self.renderer.container.getBoundingClientRect(); + }); + var onAfterRender = this.renderer.on("afterRender", function () { + if (shouldScroll && rect && (self.isFocused() + || self.searchBox && self.searchBox.isFocused())) { + var renderer = self.renderer; + var pos = renderer.$cursorLayer.$pixelPos; + var config = renderer.layerConfig; + var top = pos.top - config.offset; + if (pos.top >= 0 && top + rect.top < 0) { + shouldScroll = true; + } + else if (pos.top < config.height && + pos.top + rect.top + config.lineHeight > window.innerHeight) { + shouldScroll = false; + } + else { + shouldScroll = null; + } + if (shouldScroll != null) { + scrollAnchor.style.top = top + "px"; + scrollAnchor.style.left = pos.left + "px"; + scrollAnchor.style.height = config.lineHeight + "px"; + scrollAnchor.scrollIntoView(shouldScroll); + } + shouldScroll = rect = null; + } + }); + this.setAutoScrollEditorIntoView = function (enable) { + if (enable) + return; + delete this.setAutoScrollEditorIntoView; + this.off("changeSelection", onChangeSelection); + this.renderer.off("afterRender", onAfterRender); + this.renderer.off("beforeRender", onBeforeRender); + }; + }; + Editor.prototype.$resetCursorStyle = function () { + var style = this.$cursorStyle || "ace"; + var cursorLayer = this.renderer.$cursorLayer; + if (!cursorLayer) + return; + cursorLayer.setSmoothBlinking(/smooth/.test(style)); + cursorLayer.isBlinking = !this.$readOnly && style != "wide"; + dom.setCssClass(cursorLayer.element, "ace_slim-cursors", /slim/.test(style)); + }; + Editor.prototype.prompt = function (message, options, callback) { + var editor = this; + config.loadModule("ace/ext/prompt", function (module) { + module.prompt(editor, message, options, callback); + }); + }; + return Editor; +}()); +Editor.$uid = 0; +Editor.prototype.curOp = null; +Editor.prototype.prevOp = {}; +Editor.prototype.$mergeableCommands = ["backspace", "del", "insertstring"]; +Editor.prototype.$toggleWordPairs = [ + ["first", "last"], + ["true", "false"], + ["yes", "no"], + ["width", "height"], + ["top", "bottom"], + ["right", "left"], + ["on", "off"], + ["x", "y"], + ["get", "set"], + ["max", "min"], + ["horizontal", "vertical"], + ["show", "hide"], + ["add", "remove"], + ["up", "down"], + ["before", "after"], + ["even", "odd"], + ["in", "out"], + ["inside", "outside"], + ["next", "previous"], + ["increase", "decrease"], + ["attach", "detach"], + ["&&", "||"], + ["==", "!="] +]; +oop.implement(Editor.prototype, EventEmitter); +config.defineOptions(Editor.prototype, "editor", { + selectionStyle: { + set: function (style) { + this.onSelectionChange(); + this._signal("changeSelectionStyle", { data: style }); + }, + initialValue: "line" + }, + highlightActiveLine: { + set: function () { this.$updateHighlightActiveLine(); }, + initialValue: true + }, + highlightSelectedWord: { + set: function (shouldHighlight) { this.$onSelectionChange(); }, + initialValue: true + }, + readOnly: { + set: function (readOnly) { + this.textInput.setReadOnly(readOnly); + this.$resetCursorStyle(); + }, + initialValue: false + }, + copyWithEmptySelection: { + set: function (value) { + this.textInput.setCopyWithEmptySelection(value); + }, + initialValue: false + }, + cursorStyle: { + set: function (val) { this.$resetCursorStyle(); }, + values: ["ace", "slim", "smooth", "wide"], + initialValue: "ace" + }, + mergeUndoDeltas: { + values: [false, true, "always"], + initialValue: true + }, + behavioursEnabled: { initialValue: true }, + wrapBehavioursEnabled: { initialValue: true }, + enableAutoIndent: { initialValue: true }, + autoScrollEditorIntoView: { + set: function (val) { this.setAutoScrollEditorIntoView(val); } + }, + keyboardHandler: { + set: function (val) { this.setKeyboardHandler(val); }, + get: function () { return this.$keybindingId; }, + handlesSet: true + }, + value: { + set: function (val) { this.session.setValue(val); }, + get: function () { return this.getValue(); }, + handlesSet: true, + hidden: true + }, + session: { + set: function (val) { this.setSession(val); }, + get: function () { return this.session; }, + handlesSet: true, + hidden: true + }, + showLineNumbers: { + set: function (show) { + this.renderer.$gutterLayer.setShowLineNumbers(show); + this.renderer.$loop.schedule(this.renderer.CHANGE_GUTTER); + if (show && this.$relativeLineNumbers) + relativeNumberRenderer.attach(this); + else + relativeNumberRenderer.detach(this); + }, + initialValue: true + }, + relativeLineNumbers: { + set: function (value) { + if (this.$showLineNumbers && value) + relativeNumberRenderer.attach(this); + else + relativeNumberRenderer.detach(this); + } + }, + placeholder: { + set: function (message) { + if (!this.$updatePlaceholder) { + this.$updatePlaceholder = function () { + var hasValue = this.session && (this.renderer.$composition || + this.session.getLength() > 1 || this.session.getLine(0).length > 0); + if (hasValue && this.renderer.placeholderNode) { + this.renderer.off("afterRender", this.$updatePlaceholder); + dom.removeCssClass(this.container, "ace_hasPlaceholder"); + this.renderer.placeholderNode.remove(); + this.renderer.placeholderNode = null; + } + else if (!hasValue && !this.renderer.placeholderNode) { + this.renderer.on("afterRender", this.$updatePlaceholder); + dom.addCssClass(this.container, "ace_hasPlaceholder"); + var el = dom.createElement("div"); + el.className = "ace_placeholder"; + el.textContent = this.$placeholder || ""; + this.renderer.placeholderNode = el; + this.renderer.content.appendChild(this.renderer.placeholderNode); + } + else if (!hasValue && this.renderer.placeholderNode) { + this.renderer.placeholderNode.textContent = this.$placeholder || ""; + } + }.bind(this); + this.on("input", this.$updatePlaceholder); + } + this.$updatePlaceholder(); + } + }, + enableKeyboardAccessibility: { + set: function (value) { + var blurCommand = { + name: "blurTextInput", + description: "Set focus to the editor content div to allow tabbing through the page", + bindKey: "Esc", + exec: function (editor) { + editor.blur(); + editor.renderer.scroller.focus(); + }, + readOnly: true + }; + var focusOnEnterKeyup = function (e) { + if (e.target == this.renderer.scroller && e.keyCode === keys['enter']) { + e.preventDefault(); + var row = this.getCursorPosition().row; + if (!this.isRowVisible(row)) + this.scrollToLine(row, true, true); + this.focus(); + } + }; + var gutterKeyboardHandler; + if (value) { + this.renderer.enableKeyboardAccessibility = true; + this.renderer.keyboardFocusClassName = "ace_keyboard-focus"; + this.textInput.getElement().setAttribute("tabindex", -1); + this.textInput.setNumberOfExtraLines(useragent.isWin ? 3 : 0); + this.renderer.scroller.setAttribute("tabindex", 0); + this.renderer.scroller.setAttribute("role", "group"); + this.renderer.scroller.setAttribute("aria-roledescription", nls("editor")); + this.renderer.scroller.classList.add(this.renderer.keyboardFocusClassName); + this.renderer.scroller.setAttribute("aria-label", nls("Editor content, press Enter to start editing, press Escape to exit")); + this.renderer.scroller.addEventListener("keyup", focusOnEnterKeyup.bind(this)); + this.commands.addCommand(blurCommand); + this.renderer.$gutter.setAttribute("tabindex", 0); + this.renderer.$gutter.setAttribute("aria-hidden", false); + this.renderer.$gutter.setAttribute("role", "group"); + this.renderer.$gutter.setAttribute("aria-roledescription", nls("editor")); + this.renderer.$gutter.setAttribute("aria-label", nls("Editor gutter, press Enter to interact with controls using arrow keys, press Escape to exit")); + this.renderer.$gutter.classList.add(this.renderer.keyboardFocusClassName); + this.renderer.content.setAttribute("aria-hidden", true); + if (!gutterKeyboardHandler) + gutterKeyboardHandler = new GutterKeyboardHandler(this); + gutterKeyboardHandler.addListener(); + } + else { + this.renderer.enableKeyboardAccessibility = false; + this.textInput.getElement().setAttribute("tabindex", 0); + this.textInput.setNumberOfExtraLines(0); + this.renderer.scroller.setAttribute("tabindex", -1); + this.renderer.scroller.removeAttribute("role"); + this.renderer.scroller.removeAttribute("aria-roledescription"); + this.renderer.scroller.classList.remove(this.renderer.keyboardFocusClassName); + this.renderer.scroller.removeAttribute("aria-label"); + this.renderer.scroller.removeEventListener("keyup", focusOnEnterKeyup.bind(this)); + this.commands.removeCommand(blurCommand); + this.renderer.content.removeAttribute("aria-hidden"); + this.renderer.$gutter.setAttribute("tabindex", -1); + this.renderer.$gutter.setAttribute("aria-hidden", true); + this.renderer.$gutter.removeAttribute("role"); + this.renderer.$gutter.removeAttribute("aria-roledescription"); + this.renderer.$gutter.removeAttribute("aria-label"); + this.renderer.$gutter.classList.remove(this.renderer.keyboardFocusClassName); + if (gutterKeyboardHandler) + gutterKeyboardHandler.removeListener(); + } + }, + initialValue: false + }, + customScrollbar: "renderer", + hScrollBarAlwaysVisible: "renderer", + vScrollBarAlwaysVisible: "renderer", + highlightGutterLine: "renderer", + animatedScroll: "renderer", + showInvisibles: "renderer", + showPrintMargin: "renderer", + printMarginColumn: "renderer", + printMargin: "renderer", + fadeFoldWidgets: "renderer", + showFoldWidgets: "renderer", + displayIndentGuides: "renderer", + highlightIndentGuides: "renderer", + showGutter: "renderer", + fontSize: "renderer", + fontFamily: "renderer", + maxLines: "renderer", + minLines: "renderer", + scrollPastEnd: "renderer", + fixedWidthGutter: "renderer", + theme: "renderer", + hasCssTransforms: "renderer", + maxPixelHeight: "renderer", + useTextareaForIME: "renderer", + useResizeObserver: "renderer", + useSvgGutterIcons: "renderer", + showFoldedAnnotations: "renderer", + scrollSpeed: "$mouseHandler", + dragDelay: "$mouseHandler", + dragEnabled: "$mouseHandler", + focusTimeout: "$mouseHandler", + tooltipFollowsMouse: "$mouseHandler", + firstLineNumber: "session", + overwrite: "session", + newLineMode: "session", + useWorker: "session", + useSoftTabs: "session", + navigateWithinSoftTabs: "session", + tabSize: "session", + wrap: "session", + indentedSoftWrap: "session", + foldStyle: "session", + mode: "session" +}); +var relativeNumberRenderer = { + getText: function (session, row) { + return (Math.abs(session.selection.lead.row - row) || (row + 1 + (row < 9 ? "\xb7" : ""))) + ""; + }, + getWidth: function (session, lastLineNumber, config) { + return Math.max(lastLineNumber.toString().length, (config.lastRow + 1).toString().length, 2) * config.characterWidth; + }, + update: function (e, editor) { + editor.renderer.$loop.schedule(editor.renderer.CHANGE_GUTTER); + }, + attach: function (editor) { + editor.renderer.$gutterLayer.$renderer = this; + editor.on("changeSelection", this.update); + this.update(null, editor); + }, + detach: function (editor) { + if (editor.renderer.$gutterLayer.$renderer == this) + editor.renderer.$gutterLayer.$renderer = null; + editor.off("changeSelection", this.update); + this.update(null, editor); + } +}; +exports.Editor = Editor; + +}); + +ace.define("ace/layer/lines",["require","exports","module","ace/lib/dom"], function(require, exports, module){"use strict"; +var dom = require("../lib/dom"); +var Lines = /** @class */ (function () { + function Lines(element, canvasHeight) { + this.element = element; + this.canvasHeight = canvasHeight || 500000; + this.element.style.height = (this.canvasHeight * 2) + "px"; + this.cells = []; + this.cellCache = []; + this.$offsetCoefficient = 0; + } + Lines.prototype.moveContainer = function (config) { + dom.translate(this.element, 0, -((config.firstRowScreen * config.lineHeight) % this.canvasHeight) - config.offset * this.$offsetCoefficient); + }; + Lines.prototype.pageChanged = function (oldConfig, newConfig) { + return (Math.floor((oldConfig.firstRowScreen * oldConfig.lineHeight) / this.canvasHeight) !== + Math.floor((newConfig.firstRowScreen * newConfig.lineHeight) / this.canvasHeight)); + }; + Lines.prototype.computeLineTop = function (row, config, session) { + var screenTop = config.firstRowScreen * config.lineHeight; + var screenPage = Math.floor(screenTop / this.canvasHeight); + var lineTop = session.documentToScreenRow(row, 0) * config.lineHeight; + return lineTop - (screenPage * this.canvasHeight); + }; + Lines.prototype.computeLineHeight = function (row, config, session) { + return config.lineHeight * session.getRowLineCount(row); + }; + Lines.prototype.getLength = function () { + return this.cells.length; + }; + Lines.prototype.get = function (index) { + return this.cells[index]; + }; + Lines.prototype.shift = function () { + this.$cacheCell(this.cells.shift()); + }; + Lines.prototype.pop = function () { + this.$cacheCell(this.cells.pop()); + }; + Lines.prototype.push = function (cell) { + if (Array.isArray(cell)) { + this.cells.push.apply(this.cells, cell); + var fragment = dom.createFragment(this.element); + for (var i = 0; i < cell.length; i++) { + fragment.appendChild(cell[i].element); + } + this.element.appendChild(fragment); + } + else { + this.cells.push(cell); + this.element.appendChild(cell.element); + } + }; + Lines.prototype.unshift = function (cell) { + if (Array.isArray(cell)) { + this.cells.unshift.apply(this.cells, cell); + var fragment = dom.createFragment(this.element); + for (var i = 0; i < cell.length; i++) { + fragment.appendChild(cell[i].element); + } + if (this.element.firstChild) + this.element.insertBefore(fragment, this.element.firstChild); + else + this.element.appendChild(fragment); + } + else { + this.cells.unshift(cell); + this.element.insertAdjacentElement("afterbegin", cell.element); + } + }; + Lines.prototype.last = function () { + if (this.cells.length) + return this.cells[this.cells.length - 1]; + else + return null; + }; + Lines.prototype.$cacheCell = function (cell) { + if (!cell) + return; + cell.element.remove(); + this.cellCache.push(cell); + }; + Lines.prototype.createCell = function (row, config, session, initElement) { + var cell = this.cellCache.pop(); + if (!cell) { + var element = dom.createElement("div"); + if (initElement) + initElement(element); + this.element.appendChild(element); + cell = { + element: element, + text: "", + row: row + }; + } + cell.row = row; + return cell; + }; + return Lines; +}()); +exports.Lines = Lines; + +}); + +ace.define("ace/layer/gutter",["require","exports","module","ace/lib/dom","ace/lib/oop","ace/lib/lang","ace/lib/event_emitter","ace/layer/lines","ace/config"], function(require, exports, module){"use strict"; +var dom = require("../lib/dom"); +var oop = require("../lib/oop"); +var lang = require("../lib/lang"); +var EventEmitter = require("../lib/event_emitter").EventEmitter; +var Lines = require("./lines").Lines; +var nls = require("../config").nls; +var Gutter = /** @class */ (function () { + function Gutter(parentEl) { + this.element = dom.createElement("div"); + this.element.className = "ace_layer ace_gutter-layer"; + parentEl.appendChild(this.element); + this.setShowFoldWidgets(this.$showFoldWidgets); + this.gutterWidth = 0; + this.$annotations = []; + this.$updateAnnotations = this.$updateAnnotations.bind(this); + this.$lines = new Lines(this.element); + this.$lines.$offsetCoefficient = 1; + } + Gutter.prototype.setSession = function (session) { + if (this.session) + this.session.off("change", this.$updateAnnotations); + this.session = session; + if (session) + session.on("change", this.$updateAnnotations); + }; + Gutter.prototype.addGutterDecoration = function (row, className) { + if (window.console) + console.warn && console.warn("deprecated use session.addGutterDecoration"); + this.session.addGutterDecoration(row, className); + }; + Gutter.prototype.removeGutterDecoration = function (row, className) { + if (window.console) + console.warn && console.warn("deprecated use session.removeGutterDecoration"); + this.session.removeGutterDecoration(row, className); + }; + Gutter.prototype.setAnnotations = function (annotations) { + this.$annotations = []; + for (var i = 0; i < annotations.length; i++) { + var annotation = annotations[i]; + var row = annotation.row; + var rowInfo = this.$annotations[row]; + if (!rowInfo) + rowInfo = this.$annotations[row] = { text: [], type: [] }; + var annoText = annotation.text; + var annoType = annotation.type; + annoText = annoText ? lang.escapeHTML(annoText) : annotation.html || ""; + if (rowInfo.text.indexOf(annoText) === -1) { + rowInfo.text.push(annoText); + rowInfo.type.push(annoType); + } + var className = annotation.className; + if (className) + rowInfo.className = className; + else if (annoType == "error") + rowInfo.className = " ace_error"; + else if (annoType == "warning" && rowInfo.className != " ace_error") + rowInfo.className = " ace_warning"; + else if (annoType == "info" && (!rowInfo.className)) + rowInfo.className = " ace_info"; + } + }; + Gutter.prototype.$updateAnnotations = function (delta) { + if (!this.$annotations.length) + return; + var firstRow = delta.start.row; + var len = delta.end.row - firstRow; + if (len === 0) { + } + else if (delta.action == 'remove') { + this.$annotations.splice(firstRow, len + 1, null); + } + else { + var args = new Array(len + 1); + args.unshift(firstRow, 1); + this.$annotations.splice.apply(this.$annotations, args); + } + }; + Gutter.prototype.update = function (config) { + this.config = config; + var session = this.session; + var firstRow = config.firstRow; + var lastRow = Math.min(config.lastRow + config.gutterOffset, // needed to compensate for hor scollbar + session.getLength() - 1); + this.oldLastRow = lastRow; + this.config = config; + this.$lines.moveContainer(config); + this.$updateCursorRow(); + var fold = session.getNextFoldLine(firstRow); + var foldStart = fold ? fold.start.row : Infinity; + var cell = null; + var index = -1; + var row = firstRow; + while (true) { + if (row > foldStart) { + row = fold.end.row + 1; + fold = session.getNextFoldLine(row, fold); + foldStart = fold ? fold.start.row : Infinity; + } + if (row > lastRow) { + while (this.$lines.getLength() > index + 1) + this.$lines.pop(); + break; + } + cell = this.$lines.get(++index); + if (cell) { + cell.row = row; + } + else { + cell = this.$lines.createCell(row, config, this.session, onCreateCell); + this.$lines.push(cell); + } + this.$renderCell(cell, config, fold, row); + row++; + } + this._signal("afterRender"); + this.$updateGutterWidth(config); + }; + Gutter.prototype.$updateGutterWidth = function (config) { + var session = this.session; + var gutterRenderer = session.gutterRenderer || this.$renderer; + var firstLineNumber = session.$firstLineNumber; + var lastLineText = this.$lines.last() ? this.$lines.last().text : ""; + if (this.$fixedWidth || session.$useWrapMode) + lastLineText = session.getLength() + firstLineNumber - 1; + var gutterWidth = gutterRenderer + ? gutterRenderer.getWidth(session, lastLineText, config) + : lastLineText.toString().length * config.characterWidth; + var padding = this.$padding || this.$computePadding(); + gutterWidth += padding.left + padding.right; + if (gutterWidth !== this.gutterWidth && !isNaN(gutterWidth)) { + this.gutterWidth = gutterWidth; + this.element.parentNode.style.width = + this.element.style.width = Math.ceil(this.gutterWidth) + "px"; + this._signal("changeGutterWidth", gutterWidth); + } + }; + Gutter.prototype.$updateCursorRow = function () { + if (!this.$highlightGutterLine) + return; + var position = this.session.selection.getCursor(); + if (this.$cursorRow === position.row) + return; + this.$cursorRow = position.row; + }; + Gutter.prototype.updateLineHighlight = function () { + if (!this.$highlightGutterLine) + return; + var row = this.session.selection.cursor.row; + this.$cursorRow = row; + if (this.$cursorCell && this.$cursorCell.row == row) + return; + if (this.$cursorCell) + this.$cursorCell.element.className = this.$cursorCell.element.className.replace("ace_gutter-active-line ", ""); + var cells = this.$lines.cells; + this.$cursorCell = null; + for (var i = 0; i < cells.length; i++) { + var cell = cells[i]; + if (cell.row >= this.$cursorRow) { + if (cell.row > this.$cursorRow) { + var fold = this.session.getFoldLine(this.$cursorRow); + if (i > 0 && fold && fold.start.row == cells[i - 1].row) + cell = cells[i - 1]; + else + break; + } + cell.element.className = "ace_gutter-active-line " + cell.element.className; + this.$cursorCell = cell; + break; + } + } + }; + Gutter.prototype.scrollLines = function (config) { + var oldConfig = this.config; + this.config = config; + this.$updateCursorRow(); + if (this.$lines.pageChanged(oldConfig, config)) + return this.update(config); + this.$lines.moveContainer(config); + var lastRow = Math.min(config.lastRow + config.gutterOffset, // needed to compensate for hor scollbar + this.session.getLength() - 1); + var oldLastRow = this.oldLastRow; + this.oldLastRow = lastRow; + if (!oldConfig || oldLastRow < config.firstRow) + return this.update(config); + if (lastRow < oldConfig.firstRow) + return this.update(config); + if (oldConfig.firstRow < config.firstRow) + for (var row = this.session.getFoldedRowCount(oldConfig.firstRow, config.firstRow - 1); row > 0; row--) + this.$lines.shift(); + if (oldLastRow > lastRow) + for (var row = this.session.getFoldedRowCount(lastRow + 1, oldLastRow); row > 0; row--) + this.$lines.pop(); + if (config.firstRow < oldConfig.firstRow) { + this.$lines.unshift(this.$renderLines(config, config.firstRow, oldConfig.firstRow - 1)); + } + if (lastRow > oldLastRow) { + this.$lines.push(this.$renderLines(config, oldLastRow + 1, lastRow)); + } + this.updateLineHighlight(); + this._signal("afterRender"); + this.$updateGutterWidth(config); + }; + Gutter.prototype.$renderLines = function (config, firstRow, lastRow) { + var fragment = []; + var row = firstRow; + var foldLine = this.session.getNextFoldLine(row); + var foldStart = foldLine ? foldLine.start.row : Infinity; + while (true) { + if (row > foldStart) { + row = foldLine.end.row + 1; + foldLine = this.session.getNextFoldLine(row, foldLine); + foldStart = foldLine ? foldLine.start.row : Infinity; + } + if (row > lastRow) + break; + var cell = this.$lines.createCell(row, config, this.session, onCreateCell); + this.$renderCell(cell, config, foldLine, row); + fragment.push(cell); + row++; + } + return fragment; + }; + Gutter.prototype.$renderCell = function (cell, config, fold, row) { + var element = cell.element; + var session = this.session; + var textNode = element.childNodes[0]; + var foldWidget = element.childNodes[1]; + var annotationNode = element.childNodes[2]; + var annotationIconNode = annotationNode.firstChild; + var firstLineNumber = session.$firstLineNumber; + var breakpoints = session.$breakpoints; + var decorations = session.$decorations; + var gutterRenderer = session.gutterRenderer || this.$renderer; + var foldWidgets = this.$showFoldWidgets && session.foldWidgets; + var foldStart = fold ? fold.start.row : Number.MAX_VALUE; + var lineHeight = config.lineHeight + "px"; + var className = this.$useSvgGutterIcons ? "ace_gutter-cell_svg-icons " : "ace_gutter-cell "; + var iconClassName = this.$useSvgGutterIcons ? "ace_icon_svg" : "ace_icon"; + var rowText = (gutterRenderer + ? gutterRenderer.getText(session, row) + : row + firstLineNumber).toString(); + if (this.$highlightGutterLine) { + if (row == this.$cursorRow || (fold && row < this.$cursorRow && row >= foldStart && this.$cursorRow <= fold.end.row)) { + className += "ace_gutter-active-line "; + if (this.$cursorCell != cell) { + if (this.$cursorCell) + this.$cursorCell.element.className = this.$cursorCell.element.className.replace("ace_gutter-active-line ", ""); + this.$cursorCell = cell; + } + } + } + if (breakpoints[row]) + className += breakpoints[row]; + if (decorations[row]) + className += decorations[row]; + if (this.$annotations[row] && row !== foldStart) + className += this.$annotations[row].className; + if (foldWidgets) { + var c = foldWidgets[row]; + if (c == null) + c = foldWidgets[row] = session.getFoldWidget(row); + } + if (c) { + var foldClass = "ace_fold-widget ace_" + c; + var isClosedFold = c == "start" && row == foldStart && row < fold.end.row; + if (isClosedFold) { + foldClass += " ace_closed"; + var foldAnnotationClass = ''; + var annotationInFold = false; + for (var i = row + 1; i <= fold.end.row; i++) { + if (!this.$annotations[i]) + continue; + if (this.$annotations[i].className === " ace_error") { + annotationInFold = true; + foldAnnotationClass = " ace_error_fold"; + break; + } + if (this.$annotations[i].className === " ace_warning") { + annotationInFold = true; + foldAnnotationClass = " ace_warning_fold"; + continue; + } + } + className += foldAnnotationClass; + } + else + foldClass += " ace_open"; + if (foldWidget.className != foldClass) + foldWidget.className = foldClass; + dom.setStyle(foldWidget.style, "height", lineHeight); + dom.setStyle(foldWidget.style, "display", "inline-block"); + foldWidget.setAttribute("role", "button"); + foldWidget.setAttribute("tabindex", "-1"); + var foldRange = session.getFoldWidgetRange(row); + if (foldRange) + foldWidget.setAttribute("aria-label", nls("Toggle code folding, rows $0 through $1", [foldRange.start.row + 1, foldRange.end.row + 1])); + else { + if (fold) + foldWidget.setAttribute("aria-label", nls("Toggle code folding, rows $0 through $1", [fold.start.row + 1, fold.end.row + 1])); + else + foldWidget.setAttribute("aria-label", nls("Toggle code folding, row $0", [row + 1])); + } + if (isClosedFold) { + foldWidget.setAttribute("aria-expanded", "false"); + foldWidget.setAttribute("title", nls("Unfold code")); + } + else { + foldWidget.setAttribute("aria-expanded", "true"); + foldWidget.setAttribute("title", nls("Fold code")); + } + } + else { + if (foldWidget) { + dom.setStyle(foldWidget.style, "display", "none"); + foldWidget.setAttribute("tabindex", "0"); + foldWidget.removeAttribute("role"); + foldWidget.removeAttribute("aria-label"); + } + } + if (annotationInFold && this.$showFoldedAnnotations) { + annotationNode.className = "ace_gutter_annotation"; + annotationIconNode.className = iconClassName; + annotationIconNode.className += foldAnnotationClass; + dom.setStyle(annotationIconNode.style, "height", lineHeight); + dom.setStyle(annotationNode.style, "display", "block"); + dom.setStyle(annotationNode.style, "height", lineHeight); + annotationNode.setAttribute("aria-label", nls("Read annotations row $0", [rowText])); + annotationNode.setAttribute("tabindex", "-1"); + annotationNode.setAttribute("role", "button"); + } + else if (this.$annotations[row]) { + annotationNode.className = "ace_gutter_annotation"; + annotationIconNode.className = iconClassName; + if (this.$useSvgGutterIcons) + annotationIconNode.className += this.$annotations[row].className; + else + element.classList.add(this.$annotations[row].className.replace(" ", "")); + dom.setStyle(annotationIconNode.style, "height", lineHeight); + dom.setStyle(annotationNode.style, "display", "block"); + dom.setStyle(annotationNode.style, "height", lineHeight); + annotationNode.setAttribute("aria-label", nls("Read annotations row $0", [rowText])); + annotationNode.setAttribute("tabindex", "-1"); + annotationNode.setAttribute("role", "button"); + } + else { + dom.setStyle(annotationNode.style, "display", "none"); + annotationNode.removeAttribute("aria-label"); + annotationNode.removeAttribute("role"); + annotationNode.setAttribute("tabindex", "0"); + } + if (rowText !== textNode.data) { + textNode.data = rowText; + } + if (element.className != className) + element.className = className; + dom.setStyle(cell.element.style, "height", this.$lines.computeLineHeight(row, config, session) + "px"); + dom.setStyle(cell.element.style, "top", this.$lines.computeLineTop(row, config, session) + "px"); + cell.text = rowText; + if (annotationNode.style.display === "none" && foldWidget.style.display === "none") + cell.element.setAttribute("aria-hidden", true); + else + cell.element.setAttribute("aria-hidden", false); + return cell; + }; + Gutter.prototype.setHighlightGutterLine = function (highlightGutterLine) { + this.$highlightGutterLine = highlightGutterLine; + }; + Gutter.prototype.setShowLineNumbers = function (show) { + this.$renderer = !show && { + getWidth: function () { return 0; }, + getText: function () { return ""; } + }; + }; + Gutter.prototype.getShowLineNumbers = function () { + return this.$showLineNumbers; + }; + Gutter.prototype.setShowFoldWidgets = function (show) { + if (show) + dom.addCssClass(this.element, "ace_folding-enabled"); + else + dom.removeCssClass(this.element, "ace_folding-enabled"); + this.$showFoldWidgets = show; + this.$padding = null; + }; + Gutter.prototype.getShowFoldWidgets = function () { + return this.$showFoldWidgets; + }; + Gutter.prototype.$computePadding = function () { + if (!this.element.firstChild) + return { left: 0, right: 0 }; + var style = dom.computedStyle(this.element.firstChild); + this.$padding = {}; + this.$padding.left = (parseInt(style.borderLeftWidth) || 0) + + (parseInt(style.paddingLeft) || 0) + 1; + this.$padding.right = (parseInt(style.borderRightWidth) || 0) + + (parseInt(style.paddingRight) || 0); + return this.$padding; + }; + Gutter.prototype.getRegion = function (point) { + var padding = this.$padding || this.$computePadding(); + var rect = this.element.getBoundingClientRect(); + if (point.x < padding.left + rect.left) + return "markers"; + if (this.$showFoldWidgets && point.x > rect.right - padding.right) + return "foldWidgets"; + }; + return Gutter; +}()); +Gutter.prototype.$fixedWidth = false; +Gutter.prototype.$highlightGutterLine = true; +Gutter.prototype.$renderer = ""; +Gutter.prototype.$showLineNumbers = true; +Gutter.prototype.$showFoldWidgets = true; +oop.implement(Gutter.prototype, EventEmitter); +function onCreateCell(element) { + var textNode = document.createTextNode(''); + element.appendChild(textNode); + var foldWidget = dom.createElement("span"); + element.appendChild(foldWidget); + var annotationNode = dom.createElement("span"); + element.appendChild(annotationNode); + var annotationIconNode = dom.createElement("span"); + annotationNode.appendChild(annotationIconNode); + return element; +} +exports.Gutter = Gutter; + +}); + +ace.define("ace/layer/marker",["require","exports","module","ace/range","ace/lib/dom"], function(require, exports, module){"use strict"; +var Range = require("../range").Range; +var dom = require("../lib/dom"); +var Marker = /** @class */ (function () { + function Marker(parentEl) { + this.element = dom.createElement("div"); + this.element.className = "ace_layer ace_marker-layer"; + parentEl.appendChild(this.element); + } + Marker.prototype.setPadding = function (padding) { + this.$padding = padding; + }; + Marker.prototype.setSession = function (session) { + this.session = session; + }; + Marker.prototype.setMarkers = function (markers) { + this.markers = markers; + }; + Marker.prototype.elt = function (className, css) { + var x = this.i != -1 && this.element.childNodes[this.i]; + if (!x) { + x = document.createElement("div"); + this.element.appendChild(x); + this.i = -1; + } + else { + this.i++; + } + x.style.cssText = css; + x.className = className; + }; + Marker.prototype.update = function (config) { + if (!config) + return; + this.config = config; + this.i = 0; + var html; + for (var key in this.markers) { + var marker = this.markers[key]; + if (!marker.range) { + marker.update(html, this, this.session, config); + continue; + } + var range = marker.range.clipRows(config.firstRow, config.lastRow); + if (range.isEmpty()) + continue; + range = range.toScreenRange(this.session); + if (marker.renderer) { + var top = this.$getTop(range.start.row, config); + var left = this.$padding + range.start.column * config.characterWidth; + marker.renderer(html, range, left, top, config); + } + else if (marker.type == "fullLine") { + this.drawFullLineMarker(html, range, marker.clazz, config); + } + else if (marker.type == "screenLine") { + this.drawScreenLineMarker(html, range, marker.clazz, config); + } + else if (range.isMultiLine()) { + if (marker.type == "text") + this.drawTextMarker(html, range, marker.clazz, config); + else + this.drawMultiLineMarker(html, range, marker.clazz, config); + } + else { + this.drawSingleLineMarker(html, range, marker.clazz + " ace_start" + " ace_br15", config); + } + } + if (this.i != -1) { + while (this.i < this.element.childElementCount) + this.element.removeChild(this.element.lastChild); + } + }; + Marker.prototype.$getTop = function (row, layerConfig) { + return (row - layerConfig.firstRowScreen) * layerConfig.lineHeight; + }; + Marker.prototype.drawTextMarker = function (stringBuilder, range, clazz, layerConfig, extraStyle) { + var session = this.session; + var start = range.start.row; + var end = range.end.row; + var row = start; + var prev = 0; + var curr = 0; + var next = session.getScreenLastRowColumn(row); + var lineRange = new Range(row, range.start.column, row, curr); + for (; row <= end; row++) { + lineRange.start.row = lineRange.end.row = row; + lineRange.start.column = row == start ? range.start.column : session.getRowWrapIndent(row); + lineRange.end.column = next; + prev = curr; + curr = next; + next = row + 1 < end ? session.getScreenLastRowColumn(row + 1) : row == end ? 0 : range.end.column; + this.drawSingleLineMarker(stringBuilder, lineRange, clazz + (row == start ? " ace_start" : "") + " ace_br" + + getBorderClass(row == start || row == start + 1 && range.start.column, prev < curr, curr > next, row == end), layerConfig, row == end ? 0 : 1, extraStyle); + } + }; + Marker.prototype.drawMultiLineMarker = function (stringBuilder, range, clazz, config, extraStyle) { + var padding = this.$padding; + var height = config.lineHeight; + var top = this.$getTop(range.start.row, config); + var left = padding + range.start.column * config.characterWidth; + extraStyle = extraStyle || ""; + if (this.session.$bidiHandler.isBidiRow(range.start.row)) { + var range1 = range.clone(); + range1.end.row = range1.start.row; + range1.end.column = this.session.getLine(range1.start.row).length; + this.drawBidiSingleLineMarker(stringBuilder, range1, clazz + " ace_br1 ace_start", config, null, extraStyle); + } + else { + this.elt(clazz + " ace_br1 ace_start", "height:" + height + "px;" + "right:0;" + "top:" + top + "px;left:" + left + "px;" + (extraStyle || "")); + } + if (this.session.$bidiHandler.isBidiRow(range.end.row)) { + var range1 = range.clone(); + range1.start.row = range1.end.row; + range1.start.column = 0; + this.drawBidiSingleLineMarker(stringBuilder, range1, clazz + " ace_br12", config, null, extraStyle); + } + else { + top = this.$getTop(range.end.row, config); + var width = range.end.column * config.characterWidth; + this.elt(clazz + " ace_br12", "height:" + height + "px;" + + "width:" + width + "px;" + + "top:" + top + "px;" + + "left:" + padding + "px;" + (extraStyle || "")); + } + height = (range.end.row - range.start.row - 1) * config.lineHeight; + if (height <= 0) + return; + top = this.$getTop(range.start.row + 1, config); + var radiusClass = (range.start.column ? 1 : 0) | (range.end.column ? 0 : 8); + this.elt(clazz + (radiusClass ? " ace_br" + radiusClass : ""), "height:" + height + "px;" + + "right:0;" + + "top:" + top + "px;" + + "left:" + padding + "px;" + (extraStyle || "")); + }; + Marker.prototype.drawSingleLineMarker = function (stringBuilder, range, clazz, config, extraLength, extraStyle) { + if (this.session.$bidiHandler.isBidiRow(range.start.row)) + return this.drawBidiSingleLineMarker(stringBuilder, range, clazz, config, extraLength, extraStyle); + var height = config.lineHeight; + var width = (range.end.column + (extraLength || 0) - range.start.column) * config.characterWidth; + var top = this.$getTop(range.start.row, config); + var left = this.$padding + range.start.column * config.characterWidth; + this.elt(clazz, "height:" + height + "px;" + + "width:" + width + "px;" + + "top:" + top + "px;" + + "left:" + left + "px;" + (extraStyle || "")); + }; + Marker.prototype.drawBidiSingleLineMarker = function (stringBuilder, range, clazz, config, extraLength, extraStyle) { + var height = config.lineHeight, top = this.$getTop(range.start.row, config), padding = this.$padding; + var selections = this.session.$bidiHandler.getSelections(range.start.column, range.end.column); + selections.forEach(function (selection) { + this.elt(clazz, "height:" + height + "px;" + + "width:" + (selection.width + (extraLength || 0)) + "px;" + + "top:" + top + "px;" + + "left:" + (padding + selection.left) + "px;" + (extraStyle || "")); + }, this); + }; + Marker.prototype.drawFullLineMarker = function (stringBuilder, range, clazz, config, extraStyle) { + var top = this.$getTop(range.start.row, config); + var height = config.lineHeight; + if (range.start.row != range.end.row) + height += this.$getTop(range.end.row, config) - top; + this.elt(clazz, "height:" + height + "px;" + + "top:" + top + "px;" + + "left:0;right:0;" + (extraStyle || "")); + }; + Marker.prototype.drawScreenLineMarker = function (stringBuilder, range, clazz, config, extraStyle) { + var top = this.$getTop(range.start.row, config); + var height = config.lineHeight; + this.elt(clazz, "height:" + height + "px;" + + "top:" + top + "px;" + + "left:0;right:0;" + (extraStyle || "")); + }; + return Marker; +}()); +Marker.prototype.$padding = 0; +function getBorderClass(tl, tr, br, bl) { + return (tl ? 1 : 0) | (tr ? 2 : 0) | (br ? 4 : 0) | (bl ? 8 : 0); +} +exports.Marker = Marker; + +}); + +ace.define("ace/layer/text_util",["require","exports","module"], function(require, exports, module){// Tokens for which Ace just uses a simple TextNode and does not add any special className. +var textTokens = new Set(["text", "rparen", "lparen"]); +exports.isTextToken = function (tokenType) { + return textTokens.has(tokenType); +}; + +}); + +ace.define("ace/layer/text",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/layer/lines","ace/lib/event_emitter","ace/config","ace/layer/text_util"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var dom = require("../lib/dom"); +var lang = require("../lib/lang"); +var Lines = require("./lines").Lines; +var EventEmitter = require("../lib/event_emitter").EventEmitter; +var nls = require("../config").nls; +var isTextToken = require("./text_util").isTextToken; +var Text = /** @class */ (function () { + function Text(parentEl) { + this.dom = dom; + this.element = this.dom.createElement("div"); + this.element.className = "ace_layer ace_text-layer"; + parentEl.appendChild(this.element); + this.$updateEolChar = this.$updateEolChar.bind(this); + this.$lines = new Lines(this.element); + } + Text.prototype.$updateEolChar = function () { + var doc = this.session.doc; + var unixMode = doc.getNewLineCharacter() == "\n" && doc.getNewLineMode() != "windows"; + var EOL_CHAR = unixMode ? this.EOL_CHAR_LF : this.EOL_CHAR_CRLF; + if (this.EOL_CHAR != EOL_CHAR) { + this.EOL_CHAR = EOL_CHAR; + return true; + } + }; + Text.prototype.setPadding = function (padding) { + this.$padding = padding; + this.element.style.margin = "0 " + padding + "px"; + }; + Text.prototype.getLineHeight = function () { + return this.$fontMetrics.$characterSize.height || 0; + }; + Text.prototype.getCharacterWidth = function () { + return this.$fontMetrics.$characterSize.width || 0; + }; + Text.prototype.$setFontMetrics = function (measure) { + this.$fontMetrics = measure; + this.$fontMetrics.on("changeCharacterSize", function (e) { + this._signal("changeCharacterSize", e); + }.bind(this)); + this.$pollSizeChanges(); + }; + Text.prototype.checkForSizeChanges = function () { + this.$fontMetrics.checkForSizeChanges(); + }; + Text.prototype.$pollSizeChanges = function () { + return this.$pollSizeChangesTimer = this.$fontMetrics.$pollSizeChanges(); + }; + Text.prototype.setSession = function (session) { + this.session = session; + if (session) + this.$computeTabString(); + }; + Text.prototype.setShowInvisibles = function (showInvisibles) { + if (this.showInvisibles == showInvisibles) + return false; + this.showInvisibles = showInvisibles; + if (typeof showInvisibles == "string") { + this.showSpaces = /tab/i.test(showInvisibles); + this.showTabs = /space/i.test(showInvisibles); + this.showEOL = /eol/i.test(showInvisibles); + } + else { + this.showSpaces = this.showTabs = this.showEOL = showInvisibles; + } + this.$computeTabString(); + return true; + }; + Text.prototype.setDisplayIndentGuides = function (display) { + if (this.displayIndentGuides == display) + return false; + this.displayIndentGuides = display; + this.$computeTabString(); + return true; + }; + Text.prototype.setHighlightIndentGuides = function (highlight) { + if (this.$highlightIndentGuides === highlight) + return false; + this.$highlightIndentGuides = highlight; + return highlight; + }; + Text.prototype.$computeTabString = function () { + var tabSize = this.session.getTabSize(); + this.tabSize = tabSize; + var tabStr = this.$tabStrings = [0]; + for (var i = 1; i < tabSize + 1; i++) { + if (this.showTabs) { + var span = this.dom.createElement("span"); + span.className = "ace_invisible ace_invisible_tab"; + span.textContent = lang.stringRepeat(this.TAB_CHAR, i); + tabStr.push(span); + } + else { + tabStr.push(this.dom.createTextNode(lang.stringRepeat(" ", i), this.element)); + } + } + if (this.displayIndentGuides) { + this.$indentGuideRe = /\s\S| \t|\t |\s$/; + var className = "ace_indent-guide"; + var spaceClass = this.showSpaces ? " ace_invisible ace_invisible_space" : ""; + var spaceContent = this.showSpaces + ? lang.stringRepeat(this.SPACE_CHAR, this.tabSize) + : lang.stringRepeat(" ", this.tabSize); + var tabClass = this.showTabs ? " ace_invisible ace_invisible_tab" : ""; + var tabContent = this.showTabs + ? lang.stringRepeat(this.TAB_CHAR, this.tabSize) + : spaceContent; + var span = this.dom.createElement("span"); + span.className = className + spaceClass; + span.textContent = spaceContent; + this.$tabStrings[" "] = span; + var span = this.dom.createElement("span"); + span.className = className + tabClass; + span.textContent = tabContent; + this.$tabStrings["\t"] = span; + } + }; + Text.prototype.updateLines = function (config, firstRow, lastRow) { + if (this.config.lastRow != config.lastRow || + this.config.firstRow != config.firstRow) { + return this.update(config); + } + this.config = config; + var first = Math.max(firstRow, config.firstRow); + var last = Math.min(lastRow, config.lastRow); + var lineElements = this.element.childNodes; + var lineElementsIdx = 0; + for (var row = config.firstRow; row < first; row++) { + var foldLine = this.session.getFoldLine(row); + if (foldLine) { + if (foldLine.containsRow(first)) { + first = foldLine.start.row; + break; + } + else { + row = foldLine.end.row; + } + } + lineElementsIdx++; + } + var heightChanged = false; + var row = first; + var foldLine = this.session.getNextFoldLine(row); + var foldStart = foldLine ? foldLine.start.row : Infinity; + while (true) { + if (row > foldStart) { + row = foldLine.end.row + 1; + foldLine = this.session.getNextFoldLine(row, foldLine); + foldStart = foldLine ? foldLine.start.row : Infinity; + } + if (row > last) + break; + var lineElement = lineElements[lineElementsIdx++]; + if (lineElement) { + this.dom.removeChildren(lineElement); + this.$renderLine(lineElement, row, row == foldStart ? foldLine : false); + if (heightChanged) + lineElement.style.top = this.$lines.computeLineTop(row, config, this.session) + "px"; + var height = (config.lineHeight * this.session.getRowLength(row)) + "px"; + if (lineElement.style.height != height) { + heightChanged = true; + lineElement.style.height = height; + } + } + row++; + } + if (heightChanged) { + while (lineElementsIdx < this.$lines.cells.length) { + var cell = this.$lines.cells[lineElementsIdx++]; + cell.element.style.top = this.$lines.computeLineTop(cell.row, config, this.session) + "px"; + } + } + }; + Text.prototype.scrollLines = function (config) { + var oldConfig = this.config; + this.config = config; + if (this.$lines.pageChanged(oldConfig, config)) + return this.update(config); + this.$lines.moveContainer(config); + var lastRow = config.lastRow; + var oldLastRow = oldConfig ? oldConfig.lastRow : -1; + if (!oldConfig || oldLastRow < config.firstRow) + return this.update(config); + if (lastRow < oldConfig.firstRow) + return this.update(config); + if (!oldConfig || oldConfig.lastRow < config.firstRow) + return this.update(config); + if (config.lastRow < oldConfig.firstRow) + return this.update(config); + if (oldConfig.firstRow < config.firstRow) + for (var row = this.session.getFoldedRowCount(oldConfig.firstRow, config.firstRow - 1); row > 0; row--) + this.$lines.shift(); + if (oldConfig.lastRow > config.lastRow) + for (var row = this.session.getFoldedRowCount(config.lastRow + 1, oldConfig.lastRow); row > 0; row--) + this.$lines.pop(); + if (config.firstRow < oldConfig.firstRow) { + this.$lines.unshift(this.$renderLinesFragment(config, config.firstRow, oldConfig.firstRow - 1)); + } + if (config.lastRow > oldConfig.lastRow) { + this.$lines.push(this.$renderLinesFragment(config, oldConfig.lastRow + 1, config.lastRow)); + } + this.$highlightIndentGuide(); + }; + Text.prototype.$renderLinesFragment = function (config, firstRow, lastRow) { + var fragment = []; + var row = firstRow; + var foldLine = this.session.getNextFoldLine(row); + var foldStart = foldLine ? foldLine.start.row : Infinity; + while (true) { + if (row > foldStart) { + row = foldLine.end.row + 1; + foldLine = this.session.getNextFoldLine(row, foldLine); + foldStart = foldLine ? foldLine.start.row : Infinity; + } + if (row > lastRow) + break; + var line = this.$lines.createCell(row, config, this.session); + var lineEl = line.element; + this.dom.removeChildren(lineEl); + dom.setStyle(lineEl.style, "height", this.$lines.computeLineHeight(row, config, this.session) + "px"); + dom.setStyle(lineEl.style, "top", this.$lines.computeLineTop(row, config, this.session) + "px"); + this.$renderLine(lineEl, row, row == foldStart ? foldLine : false); + if (this.$useLineGroups()) { + lineEl.className = "ace_line_group"; + } + else { + lineEl.className = "ace_line"; + } + fragment.push(line); + row++; + } + return fragment; + }; + Text.prototype.update = function (config) { + this.$lines.moveContainer(config); + this.config = config; + var firstRow = config.firstRow; + var lastRow = config.lastRow; + var lines = this.$lines; + while (lines.getLength()) + lines.pop(); + lines.push(this.$renderLinesFragment(config, firstRow, lastRow)); + }; + Text.prototype.$renderToken = function (parent, screenColumn, token, value) { + var self = this; + var re = /(\t)|( +)|([\x00-\x1f\x80-\xa0\xad\u1680\u180E\u2000-\u200f\u2028\u2029\u202F\u205F\uFEFF\uFFF9-\uFFFC\u2066\u2067\u2068\u202A\u202B\u202D\u202E\u202C\u2069]+)|(\u3000)|([\u1100-\u115F\u11A3-\u11A7\u11FA-\u11FF\u2329-\u232A\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u2FF0-\u2FFB\u3001-\u303E\u3041-\u3096\u3099-\u30FF\u3105-\u312D\u3131-\u318E\u3190-\u31BA\u31C0-\u31E3\u31F0-\u321E\u3220-\u3247\u3250-\u32FE\u3300-\u4DBF\u4E00-\uA48C\uA490-\uA4C6\uA960-\uA97C\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFAFF\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE66\uFE68-\uFE6B\uFF01-\uFF60\uFFE0-\uFFE6]|[\uD800-\uDBFF][\uDC00-\uDFFF])/g; + var valueFragment = this.dom.createFragment(this.element); + var m; + var i = 0; + while (m = re.exec(value)) { + var tab = m[1]; + var simpleSpace = m[2]; + var controlCharacter = m[3]; + var cjkSpace = m[4]; + var cjk = m[5]; + if (!self.showSpaces && simpleSpace) + continue; + var before = i != m.index ? value.slice(i, m.index) : ""; + i = m.index + m[0].length; + if (before) { + valueFragment.appendChild(this.dom.createTextNode(before, this.element)); + } + if (tab) { + var tabSize = self.session.getScreenTabSize(screenColumn + m.index); + valueFragment.appendChild(self.$tabStrings[tabSize].cloneNode(true)); + screenColumn += tabSize - 1; + } + else if (simpleSpace) { + if (self.showSpaces) { + var span = this.dom.createElement("span"); + span.className = "ace_invisible ace_invisible_space"; + span.textContent = lang.stringRepeat(self.SPACE_CHAR, simpleSpace.length); + valueFragment.appendChild(span); + } + else { + valueFragment.appendChild(this.dom.createTextNode(simpleSpace, this.element)); + } + } + else if (controlCharacter) { + var span = this.dom.createElement("span"); + span.className = "ace_invisible ace_invisible_space ace_invalid"; + span.textContent = lang.stringRepeat(self.SPACE_CHAR, controlCharacter.length); + valueFragment.appendChild(span); + } + else if (cjkSpace) { + screenColumn += 1; + var span = this.dom.createElement("span"); + span.style.width = (self.config.characterWidth * 2) + "px"; + span.className = self.showSpaces ? "ace_cjk ace_invisible ace_invisible_space" : "ace_cjk"; + span.textContent = self.showSpaces ? self.SPACE_CHAR : cjkSpace; + valueFragment.appendChild(span); + } + else if (cjk) { + screenColumn += 1; + var span = this.dom.createElement("span"); + span.style.width = (self.config.characterWidth * 2) + "px"; + span.className = "ace_cjk"; + span.textContent = cjk; + valueFragment.appendChild(span); + } + } + valueFragment.appendChild(this.dom.createTextNode(i ? value.slice(i) : value, this.element)); + if (!isTextToken(token.type)) { + var classes = "ace_" + token.type.replace(/\./g, " ace_"); + var span = this.dom.createElement("span"); + if (token.type == "fold") { + span.style.width = (token.value.length * this.config.characterWidth) + "px"; + span.setAttribute("title", nls("Unfold code")); + } + span.className = classes; + span.appendChild(valueFragment); + parent.appendChild(span); + } + else { + parent.appendChild(valueFragment); + } + return screenColumn + value.length; + }; + Text.prototype.renderIndentGuide = function (parent, value, max) { + var cols = value.search(this.$indentGuideRe); + if (cols <= 0 || cols >= max) + return value; + if (value[0] == " ") { + cols -= cols % this.tabSize; + var count = cols / this.tabSize; + for (var i = 0; i < count; i++) { + parent.appendChild(this.$tabStrings[" "].cloneNode(true)); + } + this.$highlightIndentGuide(); + return value.substr(cols); + } + else if (value[0] == "\t") { + for (var i = 0; i < cols; i++) { + parent.appendChild(this.$tabStrings["\t"].cloneNode(true)); + } + this.$highlightIndentGuide(); + return value.substr(cols); + } + this.$highlightIndentGuide(); + return value; + }; + Text.prototype.$highlightIndentGuide = function () { + if (!this.$highlightIndentGuides || !this.displayIndentGuides) + return; + this.$highlightIndentGuideMarker = { + indentLevel: undefined, + start: undefined, + end: undefined, + dir: undefined + }; + var lines = this.session.doc.$lines; + if (!lines) + return; + var cursor = this.session.selection.getCursor(); + var initialIndent = /^\s*/.exec(this.session.doc.getLine(cursor.row))[0].length; + var elementIndentLevel = Math.floor(initialIndent / this.tabSize); + this.$highlightIndentGuideMarker = { + indentLevel: elementIndentLevel, + start: cursor.row + }; + var bracketHighlight = this.session.$bracketHighlight; + if (bracketHighlight) { + var ranges = this.session.$bracketHighlight.ranges; + for (var i = 0; i < ranges.length; i++) { + if (cursor.row !== ranges[i].start.row) { + this.$highlightIndentGuideMarker.end = ranges[i].start.row; + if (cursor.row > ranges[i].start.row) { + this.$highlightIndentGuideMarker.dir = -1; + } + else { + this.$highlightIndentGuideMarker.dir = 1; + } + break; + } + } + } + if (!this.$highlightIndentGuideMarker.end) { + if (lines[cursor.row] !== '' && cursor.column === lines[cursor.row].length) { + this.$highlightIndentGuideMarker.dir = 1; + for (var i = cursor.row + 1; i < lines.length; i++) { + var line = lines[i]; + var currentIndent = /^\s*/.exec(line)[0].length; + if (line !== '') { + this.$highlightIndentGuideMarker.end = i; + if (currentIndent <= initialIndent) + break; + } + } + } + } + this.$renderHighlightIndentGuide(); + }; + Text.prototype.$clearActiveIndentGuide = function () { + var cells = this.$lines.cells; + for (var i = 0; i < cells.length; i++) { + var cell = cells[i]; + var childNodes = cell.element.childNodes; + if (childNodes.length > 0) { + for (var j = 0; j < childNodes.length; j++) { + if (childNodes[j].classList && childNodes[j].classList.contains("ace_indent-guide-active")) { + childNodes[j].classList.remove("ace_indent-guide-active"); + break; + } + } + } + } + }; + Text.prototype.$setIndentGuideActive = function (cell, indentLevel) { + var line = this.session.doc.getLine(cell.row); + if (line !== "") { + var childNodes = cell.element.childNodes; + if (childNodes) { + var node = childNodes[indentLevel - 1]; + if (node && node.classList && node.classList.contains("ace_indent-guide")) + node.classList.add("ace_indent-guide-active"); + } + } + }; + Text.prototype.$renderHighlightIndentGuide = function () { + if (!this.$lines) + return; + var cells = this.$lines.cells; + this.$clearActiveIndentGuide(); + var indentLevel = this.$highlightIndentGuideMarker.indentLevel; + if (indentLevel !== 0) { + if (this.$highlightIndentGuideMarker.dir === 1) { + for (var i = 0; i < cells.length; i++) { + var cell = cells[i]; + if (this.$highlightIndentGuideMarker.end && cell.row >= this.$highlightIndentGuideMarker.start + + 1) { + if (cell.row >= this.$highlightIndentGuideMarker.end) + break; + this.$setIndentGuideActive(cell, indentLevel); + } + } + } + else { + for (var i = cells.length - 1; i >= 0; i--) { + var cell = cells[i]; + if (this.$highlightIndentGuideMarker.end && cell.row < this.$highlightIndentGuideMarker.start) { + if (cell.row <= this.$highlightIndentGuideMarker.end) + break; + this.$setIndentGuideActive(cell, indentLevel); + } + } + } + } + }; + Text.prototype.$createLineElement = function (parent) { + var lineEl = this.dom.createElement("div"); + lineEl.className = "ace_line"; + lineEl.style.height = this.config.lineHeight + "px"; + return lineEl; + }; + Text.prototype.$renderWrappedLine = function (parent, tokens, splits) { + var chars = 0; + var split = 0; + var splitChars = splits[0]; + var screenColumn = 0; + var lineEl = this.$createLineElement(); + parent.appendChild(lineEl); + for (var i = 0; i < tokens.length; i++) { + var token = tokens[i]; + var value = token.value; + if (i == 0 && this.displayIndentGuides) { + chars = value.length; + value = this.renderIndentGuide(lineEl, value, splitChars); + if (!value) + continue; + chars -= value.length; + } + if (chars + value.length < splitChars) { + screenColumn = this.$renderToken(lineEl, screenColumn, token, value); + chars += value.length; + } + else { + while (chars + value.length >= splitChars) { + screenColumn = this.$renderToken(lineEl, screenColumn, token, value.substring(0, splitChars - chars)); + value = value.substring(splitChars - chars); + chars = splitChars; + lineEl = this.$createLineElement(); + parent.appendChild(lineEl); + lineEl.appendChild(this.dom.createTextNode(lang.stringRepeat("\xa0", splits.indent), this.element)); + split++; + screenColumn = 0; + splitChars = splits[split] || Number.MAX_VALUE; + } + if (value.length != 0) { + chars += value.length; + screenColumn = this.$renderToken(lineEl, screenColumn, token, value); + } + } + } + if (splits[splits.length - 1] > this.MAX_LINE_LENGTH) + this.$renderOverflowMessage(lineEl, screenColumn, null, "", true); + }; + Text.prototype.$renderSimpleLine = function (parent, tokens) { + var screenColumn = 0; + for (var i = 0; i < tokens.length; i++) { + var token = tokens[i]; + var value = token.value; + if (i == 0 && this.displayIndentGuides) { + value = this.renderIndentGuide(parent, value); + if (!value) + continue; + } + if (screenColumn + value.length > this.MAX_LINE_LENGTH) + return this.$renderOverflowMessage(parent, screenColumn, token, value); + screenColumn = this.$renderToken(parent, screenColumn, token, value); + } + }; + Text.prototype.$renderOverflowMessage = function (parent, screenColumn, token, value, hide) { + token && this.$renderToken(parent, screenColumn, token, value.slice(0, this.MAX_LINE_LENGTH - screenColumn)); + var overflowEl = this.dom.createElement("span"); + overflowEl.className = "ace_inline_button ace_keyword ace_toggle_wrap"; + overflowEl.textContent = hide ? "" : ""; + parent.appendChild(overflowEl); + }; + Text.prototype.$renderLine = function (parent, row, foldLine) { + if (!foldLine && foldLine != false) + foldLine = this.session.getFoldLine(row); + if (foldLine) + var tokens = this.$getFoldLineTokens(row, foldLine); + else + var tokens = this.session.getTokens(row); + var lastLineEl = parent; + if (tokens.length) { + var splits = this.session.getRowSplitData(row); + if (splits && splits.length) { + this.$renderWrappedLine(parent, tokens, splits); + var lastLineEl = parent.lastChild; + } + else { + var lastLineEl = parent; + if (this.$useLineGroups()) { + lastLineEl = this.$createLineElement(); + parent.appendChild(lastLineEl); + } + this.$renderSimpleLine(lastLineEl, tokens); + } + } + else if (this.$useLineGroups()) { + lastLineEl = this.$createLineElement(); + parent.appendChild(lastLineEl); + } + if (this.showEOL && lastLineEl) { + if (foldLine) + row = foldLine.end.row; + var invisibleEl = this.dom.createElement("span"); + invisibleEl.className = "ace_invisible ace_invisible_eol"; + invisibleEl.textContent = row == this.session.getLength() - 1 ? this.EOF_CHAR : this.EOL_CHAR; + lastLineEl.appendChild(invisibleEl); + } + }; + Text.prototype.$getFoldLineTokens = function (row, foldLine) { + var session = this.session; + var renderTokens = []; + function addTokens(tokens, from, to) { + var idx = 0, col = 0; + while ((col + tokens[idx].value.length) < from) { + col += tokens[idx].value.length; + idx++; + if (idx == tokens.length) + return; + } + if (col != from) { + var value = tokens[idx].value.substring(from - col); + if (value.length > (to - from)) + value = value.substring(0, to - from); + renderTokens.push({ + type: tokens[idx].type, + value: value + }); + col = from + value.length; + idx += 1; + } + while (col < to && idx < tokens.length) { + var value = tokens[idx].value; + if (value.length + col > to) { + renderTokens.push({ + type: tokens[idx].type, + value: value.substring(0, to - col) + }); + } + else + renderTokens.push(tokens[idx]); + col += value.length; + idx += 1; + } + } + var tokens = session.getTokens(row); + foldLine.walk(function (placeholder, row, column, lastColumn, isNewRow) { + if (placeholder != null) { + renderTokens.push({ + type: "fold", + value: placeholder + }); + } + else { + if (isNewRow) + tokens = session.getTokens(row); + if (tokens.length) + addTokens(tokens, lastColumn, column); + } + }, foldLine.end.row, this.session.getLine(foldLine.end.row).length); + return renderTokens; + }; + Text.prototype.$useLineGroups = function () { + return this.session.getUseWrapMode(); + }; + return Text; +}()); +Text.prototype.EOF_CHAR = "\xB6"; +Text.prototype.EOL_CHAR_LF = "\xAC"; +Text.prototype.EOL_CHAR_CRLF = "\xa4"; +Text.prototype.EOL_CHAR = Text.prototype.EOL_CHAR_LF; +Text.prototype.TAB_CHAR = "\u2014"; //"\u21E5"; +Text.prototype.SPACE_CHAR = "\xB7"; +Text.prototype.$padding = 0; +Text.prototype.MAX_LINE_LENGTH = 10000; +Text.prototype.showInvisibles = false; +Text.prototype.showSpaces = false; +Text.prototype.showTabs = false; +Text.prototype.showEOL = false; +Text.prototype.displayIndentGuides = true; +Text.prototype.$highlightIndentGuides = true; +Text.prototype.$tabStrings = []; +Text.prototype.destroy = {}; +Text.prototype.onChangeTabSize = Text.prototype.$computeTabString; +oop.implement(Text.prototype, EventEmitter); +exports.Text = Text; + +}); + +ace.define("ace/layer/cursor",["require","exports","module","ace/lib/dom"], function(require, exports, module){"use strict"; +var dom = require("../lib/dom"); +var Cursor = /** @class */ (function () { + function Cursor(parentEl) { + this.element = dom.createElement("div"); + this.element.className = "ace_layer ace_cursor-layer"; + parentEl.appendChild(this.element); + this.isVisible = false; + this.isBlinking = true; + this.blinkInterval = 1000; + this.smoothBlinking = false; + this.cursors = []; + this.cursor = this.addCursor(); + dom.addCssClass(this.element, "ace_hidden-cursors"); + this.$updateCursors = this.$updateOpacity.bind(this); + } + Cursor.prototype.$updateOpacity = function (val) { + var cursors = this.cursors; + for (var i = cursors.length; i--;) + dom.setStyle(cursors[i].style, "opacity", val ? "" : "0"); + }; + Cursor.prototype.$startCssAnimation = function () { + var cursors = this.cursors; + for (var i = cursors.length; i--;) + cursors[i].style.animationDuration = this.blinkInterval + "ms"; + this.$isAnimating = true; + setTimeout(function () { + if (this.$isAnimating) { + dom.addCssClass(this.element, "ace_animate-blinking"); + } + }.bind(this)); + }; + Cursor.prototype.$stopCssAnimation = function () { + this.$isAnimating = false; + dom.removeCssClass(this.element, "ace_animate-blinking"); + }; + Cursor.prototype.setPadding = function (padding) { + this.$padding = padding; + }; + Cursor.prototype.setSession = function (session) { + this.session = session; + }; + Cursor.prototype.setBlinking = function (blinking) { + if (blinking != this.isBlinking) { + this.isBlinking = blinking; + this.restartTimer(); + } + }; + Cursor.prototype.setBlinkInterval = function (blinkInterval) { + if (blinkInterval != this.blinkInterval) { + this.blinkInterval = blinkInterval; + this.restartTimer(); + } + }; + Cursor.prototype.setSmoothBlinking = function (smoothBlinking) { + if (smoothBlinking != this.smoothBlinking) { + this.smoothBlinking = smoothBlinking; + dom.setCssClass(this.element, "ace_smooth-blinking", smoothBlinking); + this.$updateCursors(true); + this.restartTimer(); + } + }; + Cursor.prototype.addCursor = function () { + var el = dom.createElement("div"); + el.className = "ace_cursor"; + this.element.appendChild(el); + this.cursors.push(el); + return el; + }; + Cursor.prototype.removeCursor = function () { + if (this.cursors.length > 1) { + var el = this.cursors.pop(); + el.parentNode.removeChild(el); + return el; + } + }; + Cursor.prototype.hideCursor = function () { + this.isVisible = false; + dom.addCssClass(this.element, "ace_hidden-cursors"); + this.restartTimer(); + }; + Cursor.prototype.showCursor = function () { + this.isVisible = true; + dom.removeCssClass(this.element, "ace_hidden-cursors"); + this.restartTimer(); + }; + Cursor.prototype.restartTimer = function () { + var update = this.$updateCursors; + clearInterval(this.intervalId); + clearTimeout(this.timeoutId); + this.$stopCssAnimation(); + if (this.smoothBlinking) { + this.$isSmoothBlinking = false; + dom.removeCssClass(this.element, "ace_smooth-blinking"); + } + update(true); + if (!this.isBlinking || !this.blinkInterval || !this.isVisible) { + this.$stopCssAnimation(); + return; + } + if (this.smoothBlinking) { + this.$isSmoothBlinking = true; + setTimeout(function () { + if (this.$isSmoothBlinking) { + dom.addCssClass(this.element, "ace_smooth-blinking"); + } + }.bind(this)); + } + if (dom.HAS_CSS_ANIMATION) { + this.$startCssAnimation(); + } + else { + var blink = function () { + this.timeoutId = setTimeout(function () { + update(false); + }, 0.6 * this.blinkInterval); + }.bind(this); + this.intervalId = setInterval(function () { + update(true); + blink(); + }, this.blinkInterval); + blink(); + } + }; + Cursor.prototype.getPixelPosition = function (position, onScreen) { + if (!this.config || !this.session) + return { left: 0, top: 0 }; + if (!position) + position = this.session.selection.getCursor(); + var pos = this.session.documentToScreenPosition(position); + var cursorLeft = this.$padding + (this.session.$bidiHandler.isBidiRow(pos.row, position.row) + ? this.session.$bidiHandler.getPosLeft(pos.column) + : pos.column * this.config.characterWidth); + var cursorTop = (pos.row - (onScreen ? this.config.firstRowScreen : 0)) * + this.config.lineHeight; + return { left: cursorLeft, top: cursorTop }; + }; + Cursor.prototype.isCursorInView = function (pixelPos, config) { + return pixelPos.top >= 0 && pixelPos.top < config.maxHeight; + }; + Cursor.prototype.update = function (config) { + this.config = config; + var selections = this.session.$selectionMarkers; + var i = 0, cursorIndex = 0; + if (selections === undefined || selections.length === 0) { + selections = [{ cursor: null }]; + } + for (var i = 0, n = selections.length; i < n; i++) { + var pixelPos = this.getPixelPosition(selections[i].cursor, true); + if ((pixelPos.top > config.height + config.offset || + pixelPos.top < 0) && i > 1) { + continue; + } + var element = this.cursors[cursorIndex++] || this.addCursor(); + var style = element.style; + if (!this.drawCursor) { + if (!this.isCursorInView(pixelPos, config)) { + dom.setStyle(style, "display", "none"); + } + else { + dom.setStyle(style, "display", "block"); + dom.translate(element, pixelPos.left, pixelPos.top); + dom.setStyle(style, "width", Math.round(config.characterWidth) + "px"); + dom.setStyle(style, "height", config.lineHeight + "px"); + } + } + else { + this.drawCursor(element, pixelPos, config, selections[i], this.session); + } + } + while (this.cursors.length > cursorIndex) + this.removeCursor(); + var overwrite = this.session.getOverwrite(); + this.$setOverwrite(overwrite); + this.$pixelPos = pixelPos; + this.restartTimer(); + }; + Cursor.prototype.$setOverwrite = function (overwrite) { + if (overwrite != this.overwrite) { + this.overwrite = overwrite; + if (overwrite) + dom.addCssClass(this.element, "ace_overwrite-cursors"); + else + dom.removeCssClass(this.element, "ace_overwrite-cursors"); + } + }; + Cursor.prototype.destroy = function () { + clearInterval(this.intervalId); + clearTimeout(this.timeoutId); + }; + return Cursor; +}()); +Cursor.prototype.$padding = 0; +Cursor.prototype.drawCursor = null; +exports.Cursor = Cursor; + +}); + +ace.define("ace/scrollbar",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/event","ace/lib/event_emitter"], function(require, exports, module){"use strict"; +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + if (typeof b !== "function" && b !== null) + throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +var oop = require("./lib/oop"); +var dom = require("./lib/dom"); +var event = require("./lib/event"); +var EventEmitter = require("./lib/event_emitter").EventEmitter; +var MAX_SCROLL_H = 0x8000; +var Scrollbar = /** @class */ (function () { + function Scrollbar(parent, classSuffix) { + this.element = dom.createElement("div"); + this.element.className = "ace_scrollbar ace_scrollbar" + classSuffix; + this.inner = dom.createElement("div"); + this.inner.className = "ace_scrollbar-inner"; + this.inner.textContent = "\xa0"; + this.element.appendChild(this.inner); + parent.appendChild(this.element); + this.setVisible(false); + this.skipEvent = false; + event.addListener(this.element, "scroll", this.onScroll.bind(this)); + event.addListener(this.element, "mousedown", event.preventDefault); + } + Scrollbar.prototype.setVisible = function (isVisible) { + this.element.style.display = isVisible ? "" : "none"; + this.isVisible = isVisible; + this.coeff = 1; + }; + return Scrollbar; +}()); +oop.implement(Scrollbar.prototype, EventEmitter); +var VScrollBar = /** @class */ (function (_super) { + __extends(VScrollBar, _super); + function VScrollBar(parent, renderer) { + var _this = _super.call(this, parent, '-v') || this; + _this.scrollTop = 0; + _this.scrollHeight = 0; + renderer.$scrollbarWidth = + _this.width = dom.scrollbarWidth(parent.ownerDocument); + _this.inner.style.width = + _this.element.style.width = (_this.width || 15) + 5 + "px"; + _this.$minWidth = 0; + return _this; + } + VScrollBar.prototype.onScroll = function () { + if (!this.skipEvent) { + this.scrollTop = this.element.scrollTop; + if (this.coeff != 1) { + var h = this.element.clientHeight / this.scrollHeight; + this.scrollTop = this.scrollTop * (1 - h) / (this.coeff - h); + } + this._emit("scroll", { data: this.scrollTop }); + } + this.skipEvent = false; + }; + VScrollBar.prototype.getWidth = function () { + return Math.max(this.isVisible ? this.width : 0, this.$minWidth || 0); + }; + VScrollBar.prototype.setHeight = function (height) { + this.element.style.height = height + "px"; + }; + VScrollBar.prototype.setScrollHeight = function (height) { + this.scrollHeight = height; + if (height > MAX_SCROLL_H) { + this.coeff = MAX_SCROLL_H / height; + height = MAX_SCROLL_H; + } + else if (this.coeff != 1) { + this.coeff = 1; + } + this.inner.style.height = height + "px"; + }; + VScrollBar.prototype.setScrollTop = function (scrollTop) { + if (this.scrollTop != scrollTop) { + this.skipEvent = true; + this.scrollTop = scrollTop; + this.element.scrollTop = scrollTop * this.coeff; + } + }; + return VScrollBar; +}(Scrollbar)); +VScrollBar.prototype.setInnerHeight = VScrollBar.prototype.setScrollHeight; +var HScrollBar = /** @class */ (function (_super) { + __extends(HScrollBar, _super); + function HScrollBar(parent, renderer) { + var _this = _super.call(this, parent, '-h') || this; + _this.scrollLeft = 0; + _this.height = renderer.$scrollbarWidth; + _this.inner.style.height = + _this.element.style.height = (_this.height || 15) + 5 + "px"; + return _this; + } + HScrollBar.prototype.onScroll = function () { + if (!this.skipEvent) { + this.scrollLeft = this.element.scrollLeft; + this._emit("scroll", { data: this.scrollLeft }); + } + this.skipEvent = false; + }; + HScrollBar.prototype.getHeight = function () { + return this.isVisible ? this.height : 0; + }; + HScrollBar.prototype.setWidth = function (width) { + this.element.style.width = width + "px"; + }; + HScrollBar.prototype.setInnerWidth = function (width) { + this.inner.style.width = width + "px"; + }; + HScrollBar.prototype.setScrollWidth = function (width) { + this.inner.style.width = width + "px"; + }; + HScrollBar.prototype.setScrollLeft = function (scrollLeft) { + if (this.scrollLeft != scrollLeft) { + this.skipEvent = true; + this.scrollLeft = this.element.scrollLeft = scrollLeft; + } + }; + return HScrollBar; +}(Scrollbar)); +exports.ScrollBar = VScrollBar; // backward compatibility +exports.ScrollBarV = VScrollBar; // backward compatibility +exports.ScrollBarH = HScrollBar; // backward compatibility +exports.VScrollBar = VScrollBar; +exports.HScrollBar = HScrollBar; + +}); + +ace.define("ace/scrollbar_custom",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/event","ace/lib/event_emitter"], function(require, exports, module){"use strict"; +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + if (typeof b !== "function" && b !== null) + throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +var oop = require("./lib/oop"); +var dom = require("./lib/dom"); +var event = require("./lib/event"); +var EventEmitter = require("./lib/event_emitter").EventEmitter; +dom.importCssString(".ace_editor>.ace_sb-v div, .ace_editor>.ace_sb-h div{\n position: absolute;\n background: rgba(128, 128, 128, 0.6);\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n border: 1px solid #bbb;\n border-radius: 2px;\n z-index: 8;\n}\n.ace_editor>.ace_sb-v, .ace_editor>.ace_sb-h {\n position: absolute;\n z-index: 6;\n background: none;\n overflow: hidden!important;\n}\n.ace_editor>.ace_sb-v {\n z-index: 6;\n right: 0;\n top: 0;\n width: 12px;\n}\n.ace_editor>.ace_sb-v div {\n z-index: 8;\n right: 0;\n width: 100%;\n}\n.ace_editor>.ace_sb-h {\n bottom: 0;\n left: 0;\n height: 12px;\n}\n.ace_editor>.ace_sb-h div {\n bottom: 0;\n height: 100%;\n}\n.ace_editor>.ace_sb_grabbed {\n z-index: 8;\n background: #000;\n}", "ace_scrollbar.css", false); +var ScrollBar = /** @class */ (function () { + function ScrollBar(parent, classSuffix) { + this.element = dom.createElement("div"); + this.element.className = "ace_sb" + classSuffix; + this.inner = dom.createElement("div"); + this.inner.className = ""; + this.element.appendChild(this.inner); + this.VScrollWidth = 12; + this.HScrollHeight = 12; + parent.appendChild(this.element); + this.setVisible(false); + this.skipEvent = false; + event.addMultiMouseDownListener(this.element, [500, 300, 300], this, "onMouseDown"); + } + ScrollBar.prototype.setVisible = function (isVisible) { + this.element.style.display = isVisible ? "" : "none"; + this.isVisible = isVisible; + this.coeff = 1; + }; + return ScrollBar; +}()); +oop.implement(ScrollBar.prototype, EventEmitter); +var VScrollBar = /** @class */ (function (_super) { + __extends(VScrollBar, _super); + function VScrollBar(parent, renderer) { + var _this = _super.call(this, parent, '-v') || this; + _this.scrollTop = 0; + _this.scrollHeight = 0; + _this.parent = parent; + _this.width = _this.VScrollWidth; + _this.renderer = renderer; + _this.inner.style.width = _this.element.style.width = (_this.width || 15) + "px"; + _this.$minWidth = 0; + return _this; + } + VScrollBar.prototype.onMouseDown = function (eType, e) { + if (eType !== "mousedown") + return; + if (event.getButton(e) !== 0 || e.detail === 2) { + return; + } + if (e.target === this.inner) { + var self = this; + var mousePageY = e.clientY; + var onMouseMove = function (e) { + mousePageY = e.clientY; + }; + var onMouseUp = function () { + clearInterval(timerId); + }; + var startY = e.clientY; + var startTop = this.thumbTop; + var onScrollInterval = function () { + if (mousePageY === undefined) + return; + var scrollTop = self.scrollTopFromThumbTop(startTop + mousePageY - startY); + if (scrollTop === self.scrollTop) + return; + self._emit("scroll", { data: scrollTop }); + }; + event.capture(this.inner, onMouseMove, onMouseUp); + var timerId = setInterval(onScrollInterval, 20); + return event.preventDefault(e); + } + var top = e.clientY - this.element.getBoundingClientRect().top - this.thumbHeight / 2; + this._emit("scroll", { data: this.scrollTopFromThumbTop(top) }); + return event.preventDefault(e); + }; + VScrollBar.prototype.getHeight = function () { + return this.height; + }; + VScrollBar.prototype.scrollTopFromThumbTop = function (thumbTop) { + var scrollTop = thumbTop * (this.pageHeight - this.viewHeight) / (this.slideHeight - this.thumbHeight); + scrollTop = scrollTop >> 0; + if (scrollTop < 0) { + scrollTop = 0; + } + else if (scrollTop > this.pageHeight - this.viewHeight) { + scrollTop = this.pageHeight - this.viewHeight; + } + return scrollTop; + }; + VScrollBar.prototype.getWidth = function () { + return Math.max(this.isVisible ? this.width : 0, this.$minWidth || 0); + }; + VScrollBar.prototype.setHeight = function (height) { + this.height = Math.max(0, height); + this.slideHeight = this.height; + this.viewHeight = this.height; + this.setScrollHeight(this.pageHeight, true); + }; + VScrollBar.prototype.setScrollHeight = function (height, force) { + if (this.pageHeight === height && !force) + return; + this.pageHeight = height; + this.thumbHeight = this.slideHeight * this.viewHeight / this.pageHeight; + if (this.thumbHeight > this.slideHeight) + this.thumbHeight = this.slideHeight; + if (this.thumbHeight < 15) + this.thumbHeight = 15; + this.inner.style.height = this.thumbHeight + "px"; + if (this.scrollTop > (this.pageHeight - this.viewHeight)) { + this.scrollTop = (this.pageHeight - this.viewHeight); + if (this.scrollTop < 0) + this.scrollTop = 0; + this._emit("scroll", { data: this.scrollTop }); + } + }; + VScrollBar.prototype.setScrollTop = function (scrollTop) { + this.scrollTop = scrollTop; + if (scrollTop < 0) + scrollTop = 0; + this.thumbTop = scrollTop * (this.slideHeight - this.thumbHeight) / (this.pageHeight - this.viewHeight); + this.inner.style.top = this.thumbTop + "px"; + }; + return VScrollBar; +}(ScrollBar)); +VScrollBar.prototype.setInnerHeight = VScrollBar.prototype.setScrollHeight; +var HScrollBar = /** @class */ (function (_super) { + __extends(HScrollBar, _super); + function HScrollBar(parent, renderer) { + var _this = _super.call(this, parent, '-h') || this; + _this.scrollLeft = 0; + _this.scrollWidth = 0; + _this.height = _this.HScrollHeight; + _this.inner.style.height = _this.element.style.height = (_this.height || 12) + "px"; + _this.renderer = renderer; + return _this; + } + HScrollBar.prototype.onMouseDown = function (eType, e) { + if (eType !== "mousedown") + return; + if (event.getButton(e) !== 0 || e.detail === 2) { + return; + } + if (e.target === this.inner) { + var self = this; + var mousePageX = e.clientX; + var onMouseMove = function (e) { + mousePageX = e.clientX; + }; + var onMouseUp = function () { + clearInterval(timerId); + }; + var startX = e.clientX; + var startLeft = this.thumbLeft; + var onScrollInterval = function () { + if (mousePageX === undefined) + return; + var scrollLeft = self.scrollLeftFromThumbLeft(startLeft + mousePageX - startX); + if (scrollLeft === self.scrollLeft) + return; + self._emit("scroll", { data: scrollLeft }); + }; + event.capture(this.inner, onMouseMove, onMouseUp); + var timerId = setInterval(onScrollInterval, 20); + return event.preventDefault(e); + } + var left = e.clientX - this.element.getBoundingClientRect().left - this.thumbWidth / 2; + this._emit("scroll", { data: this.scrollLeftFromThumbLeft(left) }); + return event.preventDefault(e); + }; + HScrollBar.prototype.getHeight = function () { + return this.isVisible ? this.height : 0; + }; + HScrollBar.prototype.scrollLeftFromThumbLeft = function (thumbLeft) { + var scrollLeft = thumbLeft * (this.pageWidth - this.viewWidth) / (this.slideWidth - this.thumbWidth); + scrollLeft = scrollLeft >> 0; + if (scrollLeft < 0) { + scrollLeft = 0; + } + else if (scrollLeft > this.pageWidth - this.viewWidth) { + scrollLeft = this.pageWidth - this.viewWidth; + } + return scrollLeft; + }; + HScrollBar.prototype.setWidth = function (width) { + this.width = Math.max(0, width); + this.element.style.width = this.width + "px"; + this.slideWidth = this.width; + this.viewWidth = this.width; + this.setScrollWidth(this.pageWidth, true); + }; + HScrollBar.prototype.setScrollWidth = function (width, force) { + if (this.pageWidth === width && !force) + return; + this.pageWidth = width; + this.thumbWidth = this.slideWidth * this.viewWidth / this.pageWidth; + if (this.thumbWidth > this.slideWidth) + this.thumbWidth = this.slideWidth; + if (this.thumbWidth < 15) + this.thumbWidth = 15; + this.inner.style.width = this.thumbWidth + "px"; + if (this.scrollLeft > (this.pageWidth - this.viewWidth)) { + this.scrollLeft = (this.pageWidth - this.viewWidth); + if (this.scrollLeft < 0) + this.scrollLeft = 0; + this._emit("scroll", { data: this.scrollLeft }); + } + }; + HScrollBar.prototype.setScrollLeft = function (scrollLeft) { + this.scrollLeft = scrollLeft; + if (scrollLeft < 0) + scrollLeft = 0; + this.thumbLeft = scrollLeft * (this.slideWidth - this.thumbWidth) / (this.pageWidth - this.viewWidth); + this.inner.style.left = (this.thumbLeft) + "px"; + }; + return HScrollBar; +}(ScrollBar)); +HScrollBar.prototype.setInnerWidth = HScrollBar.prototype.setScrollWidth; +exports.ScrollBar = VScrollBar; // backward compatibility +exports.ScrollBarV = VScrollBar; // backward compatibility +exports.ScrollBarH = HScrollBar; // backward compatibility +exports.VScrollBar = VScrollBar; +exports.HScrollBar = HScrollBar; + +}); + +ace.define("ace/renderloop",["require","exports","module","ace/lib/event"], function(require, exports, module){"use strict"; +var event = require("./lib/event"); +var RenderLoop = /** @class */ (function () { + function RenderLoop(onRender, win) { + this.onRender = onRender; + this.pending = false; + this.changes = 0; + this.$recursionLimit = 2; + this.window = win || window; + var _self = this; + this._flush = function (ts) { + _self.pending = false; + var changes = _self.changes; + if (changes) { + event.blockIdle(100); + _self.changes = 0; + _self.onRender(changes); + } + if (_self.changes) { + if (_self.$recursionLimit-- < 0) + return; + _self.schedule(); + } + else { + _self.$recursionLimit = 2; + } + }; + } + RenderLoop.prototype.schedule = function (change) { + this.changes = this.changes | change; + if (this.changes && !this.pending) { + event.nextFrame(this._flush); + this.pending = true; + } + }; + RenderLoop.prototype.clear = function (change) { + var changes = this.changes; + this.changes = 0; + return changes; + }; + return RenderLoop; +}()); +exports.RenderLoop = RenderLoop; + +}); + +ace.define("ace/layer/font_metrics",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/lib/event","ace/lib/useragent","ace/lib/event_emitter"], function(require, exports, module){var oop = require("../lib/oop"); +var dom = require("../lib/dom"); +var lang = require("../lib/lang"); +var event = require("../lib/event"); +var useragent = require("../lib/useragent"); +var EventEmitter = require("../lib/event_emitter").EventEmitter; +var CHAR_COUNT = 512; +var USE_OBSERVER = typeof ResizeObserver == "function"; +var L = 200; +var FontMetrics = /** @class */ (function () { + function FontMetrics(parentEl) { + this.el = dom.createElement("div"); + this.$setMeasureNodeStyles(this.el.style, true); + this.$main = dom.createElement("div"); + this.$setMeasureNodeStyles(this.$main.style); + this.$measureNode = dom.createElement("div"); + this.$setMeasureNodeStyles(this.$measureNode.style); + this.el.appendChild(this.$main); + this.el.appendChild(this.$measureNode); + parentEl.appendChild(this.el); + this.$measureNode.textContent = lang.stringRepeat("X", CHAR_COUNT); + this.$characterSize = { width: 0, height: 0 }; + if (USE_OBSERVER) + this.$addObserver(); + else + this.checkForSizeChanges(); + } + FontMetrics.prototype.$setMeasureNodeStyles = function (style, isRoot) { + style.width = style.height = "auto"; + style.left = style.top = "0px"; + style.visibility = "hidden"; + style.position = "absolute"; + style.whiteSpace = "pre"; + if (useragent.isIE < 8) { + style["font-family"] = "inherit"; + } + else { + style.font = "inherit"; + } + style.overflow = isRoot ? "hidden" : "visible"; + }; + FontMetrics.prototype.checkForSizeChanges = function (size) { + if (size === undefined) + size = this.$measureSizes(); + if (size && (this.$characterSize.width !== size.width || this.$characterSize.height !== size.height)) { + this.$measureNode.style.fontWeight = "bold"; + var boldSize = this.$measureSizes(); + this.$measureNode.style.fontWeight = ""; + this.$characterSize = size; + this.charSizes = Object.create(null); + this.allowBoldFonts = boldSize && boldSize.width === size.width && boldSize.height === size.height; + this._emit("changeCharacterSize", { data: size }); + } + }; + FontMetrics.prototype.$addObserver = function () { + var self = this; + this.$observer = new window.ResizeObserver(function (e) { + self.checkForSizeChanges(); + }); + this.$observer.observe(this.$measureNode); + }; + FontMetrics.prototype.$pollSizeChanges = function () { + if (this.$pollSizeChangesTimer || this.$observer) + return this.$pollSizeChangesTimer; + var self = this; + return this.$pollSizeChangesTimer = event.onIdle(function cb() { + self.checkForSizeChanges(); + event.onIdle(cb, 500); + }, 500); + }; + FontMetrics.prototype.setPolling = function (val) { + if (val) { + this.$pollSizeChanges(); + } + else if (this.$pollSizeChangesTimer) { + clearInterval(this.$pollSizeChangesTimer); + this.$pollSizeChangesTimer = 0; + } + }; + FontMetrics.prototype.$measureSizes = function (node) { + var size = { + height: (node || this.$measureNode).clientHeight, + width: (node || this.$measureNode).clientWidth / CHAR_COUNT + }; + if (size.width === 0 || size.height === 0) + return null; + return size; + }; + FontMetrics.prototype.$measureCharWidth = function (ch) { + this.$main.textContent = lang.stringRepeat(ch, CHAR_COUNT); + var rect = this.$main.getBoundingClientRect(); + return rect.width / CHAR_COUNT; + }; + FontMetrics.prototype.getCharacterWidth = function (ch) { + var w = this.charSizes[ch]; + if (w === undefined) { + w = this.charSizes[ch] = this.$measureCharWidth(ch) / this.$characterSize.width; + } + return w; + }; + FontMetrics.prototype.destroy = function () { + clearInterval(this.$pollSizeChangesTimer); + if (this.$observer) + this.$observer.disconnect(); + if (this.el && this.el.parentNode) + this.el.parentNode.removeChild(this.el); + }; + FontMetrics.prototype.$getZoom = function (element) { + if (!element || !element.parentElement) + return 1; + return (window.getComputedStyle(element).zoom || 1) * this.$getZoom(element.parentElement); + }; + FontMetrics.prototype.$initTransformMeasureNodes = function () { + var t = function (t, l) { + return ["div", { + style: "position: absolute;top:" + t + "px;left:" + l + "px;" + }]; + }; + this.els = dom.buildDom([t(0, 0), t(L, 0), t(0, L), t(L, L)], this.el); + }; + FontMetrics.prototype.transformCoordinates = function (clientPos, elPos) { + if (clientPos) { + var zoom = this.$getZoom(this.el); + clientPos = mul(1 / zoom, clientPos); + } + function solve(l1, l2, r) { + var det = l1[1] * l2[0] - l1[0] * l2[1]; + return [ + (-l2[1] * r[0] + l2[0] * r[1]) / det, + (+l1[1] * r[0] - l1[0] * r[1]) / det + ]; + } + function sub(a, b) { return [a[0] - b[0], a[1] - b[1]]; } + function add(a, b) { return [a[0] + b[0], a[1] + b[1]]; } + function mul(a, b) { return [a * b[0], a * b[1]]; } + if (!this.els) + this.$initTransformMeasureNodes(); + function p(el) { + var r = el.getBoundingClientRect(); + return [r.left, r.top]; + } + var a = p(this.els[0]); + var b = p(this.els[1]); + var c = p(this.els[2]); + var d = p(this.els[3]); + var h = solve(sub(d, b), sub(d, c), sub(add(b, c), add(d, a))); + var m1 = mul(1 + h[0], sub(b, a)); + var m2 = mul(1 + h[1], sub(c, a)); + if (elPos) { + var x = elPos; + var k = h[0] * x[0] / L + h[1] * x[1] / L + 1; + var ut = add(mul(x[0], m1), mul(x[1], m2)); + return add(mul(1 / k / L, ut), a); + } + var u = sub(clientPos, a); + var f = solve(sub(m1, mul(h[0], u)), sub(m2, mul(h[1], u)), u); + return mul(L, f); + }; + return FontMetrics; +}()); +FontMetrics.prototype.$characterSize = { width: 0, height: 0 }; +oop.implement(FontMetrics.prototype, EventEmitter); +exports.FontMetrics = FontMetrics; + +}); + +ace.define("ace/css/editor-css",["require","exports","module"], function(require, exports, module){/* +styles = [] +for (var i = 1; i < 16; i++) { + styles.push(".ace_br" + i + "{" + ( + ["top-left", "top-right", "bottom-right", "bottom-left"] + ).map(function(x, j) { + return i & (1< .ace_line, .ace_text-layer > .ace_line_group {\n contain: style size layout;\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n}\n\n.ace_hidpi .ace_text-layer,\n.ace_hidpi .ace_gutter-layer,\n.ace_hidpi .ace_content,\n.ace_hidpi .ace_gutter {\n contain: strict;\n}\n.ace_hidpi .ace_text-layer > .ace_line, \n.ace_hidpi .ace_text-layer > .ace_line_group {\n contain: strict;\n}\n\n.ace_cjk {\n display: inline-block;\n text-align: center;\n}\n\n.ace_cursor-layer {\n z-index: 4;\n}\n\n.ace_cursor {\n z-index: 4;\n position: absolute;\n box-sizing: border-box;\n border-left: 2px solid;\n /* workaround for smooth cursor repaintng whole screen in chrome */\n transform: translatez(0);\n}\n\n.ace_multiselect .ace_cursor {\n border-left-width: 1px;\n}\n\n.ace_slim-cursors .ace_cursor {\n border-left-width: 1px;\n}\n\n.ace_overwrite-cursors .ace_cursor {\n border-left-width: 0;\n border-bottom: 1px solid;\n}\n\n.ace_hidden-cursors .ace_cursor {\n opacity: 0.2;\n}\n\n.ace_hasPlaceholder .ace_hidden-cursors .ace_cursor {\n opacity: 0;\n}\n\n.ace_smooth-blinking .ace_cursor {\n transition: opacity 0.18s;\n}\n\n.ace_animate-blinking .ace_cursor {\n animation-duration: 1000ms;\n animation-timing-function: step-end;\n animation-name: blink-ace-animate;\n animation-iteration-count: infinite;\n}\n\n.ace_animate-blinking.ace_smooth-blinking .ace_cursor {\n animation-duration: 1000ms;\n animation-timing-function: ease-in-out;\n animation-name: blink-ace-animate-smooth;\n}\n \n@keyframes blink-ace-animate {\n from, to { opacity: 1; }\n 60% { opacity: 0; }\n}\n\n@keyframes blink-ace-animate-smooth {\n from, to { opacity: 1; }\n 45% { opacity: 1; }\n 60% { opacity: 0; }\n 85% { opacity: 0; }\n}\n\n.ace_marker-layer .ace_step, .ace_marker-layer .ace_stack {\n position: absolute;\n z-index: 3;\n}\n\n.ace_marker-layer .ace_selection {\n position: absolute;\n z-index: 5;\n}\n\n.ace_marker-layer .ace_bracket {\n position: absolute;\n z-index: 6;\n}\n\n.ace_marker-layer .ace_error_bracket {\n position: absolute;\n border-bottom: 1px solid #DE5555;\n border-radius: 0;\n}\n\n.ace_marker-layer .ace_active-line {\n position: absolute;\n z-index: 2;\n}\n\n.ace_marker-layer .ace_selected-word {\n position: absolute;\n z-index: 4;\n box-sizing: border-box;\n}\n\n.ace_line .ace_fold {\n box-sizing: border-box;\n\n display: inline-block;\n height: 11px;\n margin-top: -2px;\n vertical-align: middle;\n\n background-image:\n url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII=\"),\n url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACJJREFUeNpi+P//fxgTAwPDBxDxD078RSX+YeEyDFMCIMAAI3INmXiwf2YAAAAASUVORK5CYII=\");\n background-repeat: no-repeat, repeat-x;\n background-position: center center, top left;\n color: transparent;\n\n border: 1px solid black;\n border-radius: 2px;\n\n cursor: pointer;\n pointer-events: auto;\n}\n\n.ace_dark .ace_fold {\n}\n\n.ace_fold:hover{\n background-image:\n url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII=\"),\n url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACBJREFUeNpi+P//fz4TAwPDZxDxD5X4i5fLMEwJgAADAEPVDbjNw87ZAAAAAElFTkSuQmCC\");\n}\n\n.ace_tooltip {\n background-color: #f5f5f5;\n border: 1px solid gray;\n border-radius: 1px;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);\n color: black;\n max-width: 100%;\n padding: 3px 4px;\n position: fixed;\n z-index: 999999;\n box-sizing: border-box;\n cursor: default;\n white-space: pre-wrap;\n word-wrap: break-word;\n line-height: normal;\n font-style: normal;\n font-weight: normal;\n letter-spacing: normal;\n pointer-events: none;\n overflow: auto;\n max-width: min(60em, 66vw);\n}\n.ace_tooltip pre {\n white-space: pre-wrap;\n}\n\n.ace_tooltip.ace_dark {\n background-color: #636363;\n color: #fff;\n}\n\n.ace_tooltip:focus {\n outline: 1px solid #5E9ED6;\n}\n\n.ace_icon {\n display: inline-block;\n width: 18px;\n vertical-align: top;\n}\n\n.ace_icon_svg {\n display: inline-block;\n width: 12px;\n vertical-align: top;\n -webkit-mask-repeat: no-repeat;\n -webkit-mask-size: 12px;\n -webkit-mask-position: center;\n}\n\n.ace_folding-enabled > .ace_gutter-cell, .ace_folding-enabled > .ace_gutter-cell_svg-icons {\n padding-right: 13px;\n}\n\n.ace_fold-widget {\n box-sizing: border-box;\n\n margin: 0 -12px 0 1px;\n display: none;\n width: 11px;\n vertical-align: top;\n\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42mWKsQ0AMAzC8ixLlrzQjzmBiEjp0A6WwBCSPgKAXoLkqSot7nN3yMwR7pZ32NzpKkVoDBUxKAAAAABJRU5ErkJggg==\");\n background-repeat: no-repeat;\n background-position: center;\n\n border-radius: 3px;\n \n border: 1px solid transparent;\n cursor: pointer;\n}\n\n.ace_folding-enabled .ace_fold-widget {\n display: inline-block; \n}\n\n.ace_fold-widget.ace_end {\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42m3HwQkAMAhD0YzsRchFKI7sAikeWkrxwScEB0nh5e7KTPWimZki4tYfVbX+MNl4pyZXejUO1QAAAABJRU5ErkJggg==\");\n}\n\n.ace_fold-widget.ace_closed {\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAGCAYAAAAG5SQMAAAAOUlEQVR42jXKwQkAMAgDwKwqKD4EwQ26sSOkVWjgIIHAzPiCgaqiqnJHZnKICBERHN194O5b9vbLuAVRL+l0YWnZAAAAAElFTkSuQmCCXA==\");\n}\n\n.ace_fold-widget:hover {\n border: 1px solid rgba(0, 0, 0, 0.3);\n background-color: rgba(255, 255, 255, 0.2);\n box-shadow: 0 1px 1px rgba(255, 255, 255, 0.7);\n}\n\n.ace_fold-widget:active {\n border: 1px solid rgba(0, 0, 0, 0.4);\n background-color: rgba(0, 0, 0, 0.05);\n box-shadow: 0 1px 1px rgba(255, 255, 255, 0.8);\n}\n/**\n * Dark version for fold widgets\n */\n.ace_dark .ace_fold-widget {\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHklEQVQIW2P4//8/AzoGEQ7oGCaLLAhWiSwB146BAQCSTPYocqT0AAAAAElFTkSuQmCC\");\n}\n.ace_dark .ace_fold-widget.ace_end {\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAH0lEQVQIW2P4//8/AxQ7wNjIAjDMgC4AxjCVKBirIAAF0kz2rlhxpAAAAABJRU5ErkJggg==\");\n}\n.ace_dark .ace_fold-widget.ace_closed {\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAFCAYAAACAcVaiAAAAHElEQVQIW2P4//+/AxAzgDADlOOAznHAKgPWAwARji8UIDTfQQAAAABJRU5ErkJggg==\");\n}\n.ace_dark .ace_fold-widget:hover {\n box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);\n background-color: rgba(255, 255, 255, 0.1);\n}\n.ace_dark .ace_fold-widget:active {\n box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);\n}\n\n.ace_inline_button {\n border: 1px solid lightgray;\n display: inline-block;\n margin: -1px 8px;\n padding: 0 5px;\n pointer-events: auto;\n cursor: pointer;\n}\n.ace_inline_button:hover {\n border-color: gray;\n background: rgba(200,200,200,0.2);\n display: inline-block;\n pointer-events: auto;\n}\n\n.ace_fold-widget.ace_invalid {\n background-color: #FFB4B4;\n border-color: #DE5555;\n}\n\n.ace_fade-fold-widgets .ace_fold-widget {\n transition: opacity 0.4s ease 0.05s;\n opacity: 0;\n}\n\n.ace_fade-fold-widgets:hover .ace_fold-widget {\n transition: opacity 0.05s ease 0.05s;\n opacity:1;\n}\n\n.ace_underline {\n text-decoration: underline;\n}\n\n.ace_bold {\n font-weight: bold;\n}\n\n.ace_nobold .ace_bold {\n font-weight: normal;\n}\n\n.ace_italic {\n font-style: italic;\n}\n\n\n.ace_error-marker {\n background-color: rgba(255, 0, 0,0.2);\n position: absolute;\n z-index: 9;\n}\n\n.ace_highlight-marker {\n background-color: rgba(255, 255, 0,0.2);\n position: absolute;\n z-index: 8;\n}\n\n.ace_mobile-menu {\n position: absolute;\n line-height: 1.5;\n border-radius: 4px;\n -ms-user-select: none;\n -moz-user-select: none;\n -webkit-user-select: none;\n user-select: none;\n background: white;\n box-shadow: 1px 3px 2px grey;\n border: 1px solid #dcdcdc;\n color: black;\n}\n.ace_dark > .ace_mobile-menu {\n background: #333;\n color: #ccc;\n box-shadow: 1px 3px 2px grey;\n border: 1px solid #444;\n\n}\n.ace_mobile-button {\n padding: 2px;\n cursor: pointer;\n overflow: hidden;\n}\n.ace_mobile-button:hover {\n background-color: #eee;\n opacity:1;\n}\n.ace_mobile-button:active {\n background-color: #ddd;\n}\n\n.ace_placeholder {\n font-family: arial;\n transform: scale(0.9);\n transform-origin: left;\n white-space: pre;\n opacity: 0.7;\n margin: 0 10px;\n}\n\n.ace_ghost_text {\n opacity: 0.5;\n font-style: italic;\n white-space: pre;\n}\n\n.ace_screenreader-only {\n position:absolute;\n left:-10000px;\n top:auto;\n width:1px;\n height:1px;\n overflow:hidden;\n}"; + +}); + +ace.define("ace/layer/decorators",["require","exports","module","ace/lib/dom","ace/lib/oop","ace/lib/event_emitter"], function(require, exports, module){"use strict"; +var dom = require("../lib/dom"); +var oop = require("../lib/oop"); +var EventEmitter = require("../lib/event_emitter").EventEmitter; +var Decorator = /** @class */ (function () { + function Decorator(parent, renderer) { + this.canvas = dom.createElement("canvas"); + this.renderer = renderer; + this.pixelRatio = 1; + this.maxHeight = renderer.layerConfig.maxHeight; + this.lineHeight = renderer.layerConfig.lineHeight; + this.canvasHeight = parent.parent.scrollHeight; + this.heightRatio = this.canvasHeight / this.maxHeight; + this.canvasWidth = parent.width; + this.minDecorationHeight = (2 * this.pixelRatio) | 0; + this.halfMinDecorationHeight = (this.minDecorationHeight / 2) | 0; + this.canvas.width = this.canvasWidth; + this.canvas.height = this.canvasHeight; + this.canvas.style.top = 0 + "px"; + this.canvas.style.right = 0 + "px"; + this.canvas.style.zIndex = 7 + "px"; + this.canvas.style.position = "absolute"; + this.colors = {}; + this.colors.dark = { + "error": "rgba(255, 18, 18, 1)", + "warning": "rgba(18, 136, 18, 1)", + "info": "rgba(18, 18, 136, 1)" + }; + this.colors.light = { + "error": "rgb(255,51,51)", + "warning": "rgb(32,133,72)", + "info": "rgb(35,68,138)" + }; + parent.element.appendChild(this.canvas); + } + Decorator.prototype.$updateDecorators = function (config) { + var colors = (this.renderer.theme.isDark === true) ? this.colors.dark : this.colors.light; + if (config) { + this.maxHeight = config.maxHeight; + this.lineHeight = config.lineHeight; + this.canvasHeight = config.height; + var allLineHeight = (config.lastRow + 1) * this.lineHeight; + if (allLineHeight < this.canvasHeight) { + this.heightRatio = 1; + } + else { + this.heightRatio = this.canvasHeight / this.maxHeight; + } + } + var ctx = this.canvas.getContext("2d"); + function compare(a, b) { + if (a.priority < b.priority) + return -1; + if (a.priority > b.priority) + return 1; + return 0; + } + var annotations = this.renderer.session.$annotations; + ctx.clearRect(0, 0, this.canvas.width, this.canvas.height); + if (annotations) { + var priorities = { + "info": 1, + "warning": 2, + "error": 3 + }; + annotations.forEach(function (item) { + item.priority = priorities[item.type] || null; + }); + annotations = annotations.sort(compare); + var foldData = this.renderer.session.$foldData; + for (var i = 0; i < annotations.length; i++) { + var row = annotations[i].row; + var compensateFold = this.compensateFoldRows(row, foldData); + var currentY = Math.round((row - compensateFold) * this.lineHeight * this.heightRatio); + var y1 = Math.round(((row - compensateFold) * this.lineHeight * this.heightRatio)); + var y2 = Math.round((((row - compensateFold) * this.lineHeight + this.lineHeight) * this.heightRatio)); + var height = y2 - y1; + if (height < this.minDecorationHeight) { + var yCenter = ((y1 + y2) / 2) | 0; + if (yCenter < this.halfMinDecorationHeight) { + yCenter = this.halfMinDecorationHeight; + } + else if (yCenter + this.halfMinDecorationHeight > this.canvasHeight) { + yCenter = this.canvasHeight - this.halfMinDecorationHeight; + } + y1 = Math.round(yCenter - this.halfMinDecorationHeight); + y2 = Math.round(yCenter + this.halfMinDecorationHeight); + } + ctx.fillStyle = colors[annotations[i].type] || null; + ctx.fillRect(0, currentY, this.canvasWidth, y2 - y1); + } + } + var cursor = this.renderer.session.selection.getCursor(); + if (cursor) { + var compensateFold = this.compensateFoldRows(cursor.row, foldData); + var currentY = Math.round((cursor.row - compensateFold) * this.lineHeight * this.heightRatio); + ctx.fillStyle = "rgba(0, 0, 0, 0.5)"; + ctx.fillRect(0, currentY, this.canvasWidth, 2); + } + }; + Decorator.prototype.compensateFoldRows = function (row, foldData) { + var compensateFold = 0; + if (foldData && foldData.length > 0) { + for (var j = 0; j < foldData.length; j++) { + if (row > foldData[j].start.row && row < foldData[j].end.row) { + compensateFold += row - foldData[j].start.row; + } + else if (row >= foldData[j].end.row) { + compensateFold += foldData[j].end.row - foldData[j].start.row; + } + } + } + return compensateFold; + }; + return Decorator; +}()); +oop.implement(Decorator.prototype, EventEmitter); +exports.Decorator = Decorator; + +}); + +ace.define("ace/virtual_renderer",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/config","ace/layer/gutter","ace/layer/marker","ace/layer/text","ace/layer/cursor","ace/scrollbar","ace/scrollbar","ace/scrollbar_custom","ace/scrollbar_custom","ace/renderloop","ace/layer/font_metrics","ace/lib/event_emitter","ace/css/editor-css","ace/layer/decorators","ace/lib/useragent"], function(require, exports, module){"use strict"; +var oop = require("./lib/oop"); +var dom = require("./lib/dom"); +var lang = require("./lib/lang"); +var config = require("./config"); +var GutterLayer = require("./layer/gutter").Gutter; +var MarkerLayer = require("./layer/marker").Marker; +var TextLayer = require("./layer/text").Text; +var CursorLayer = require("./layer/cursor").Cursor; +var HScrollBar = require("./scrollbar").HScrollBar; +var VScrollBar = require("./scrollbar").VScrollBar; +var HScrollBarCustom = require("./scrollbar_custom").HScrollBar; +var VScrollBarCustom = require("./scrollbar_custom").VScrollBar; +var RenderLoop = require("./renderloop").RenderLoop; +var FontMetrics = require("./layer/font_metrics").FontMetrics; +var EventEmitter = require("./lib/event_emitter").EventEmitter; +var editorCss = require("./css/editor-css"); +var Decorator = require("./layer/decorators").Decorator; +var useragent = require("./lib/useragent"); +dom.importCssString(editorCss, "ace_editor.css", false); +var VirtualRenderer = /** @class */ (function () { + function VirtualRenderer(container, theme) { + var _self = this; + this.container = container || dom.createElement("div"); + dom.addCssClass(this.container, "ace_editor"); + if (dom.HI_DPI) + dom.addCssClass(this.container, "ace_hidpi"); + this.setTheme(theme); + if (config.get("useStrictCSP") == null) + config.set("useStrictCSP", false); + this.$gutter = dom.createElement("div"); + this.$gutter.className = "ace_gutter"; + this.container.appendChild(this.$gutter); + this.$gutter.setAttribute("aria-hidden", true); + this.scroller = dom.createElement("div"); + this.scroller.className = "ace_scroller"; + this.container.appendChild(this.scroller); + this.content = dom.createElement("div"); + this.content.className = "ace_content"; + this.scroller.appendChild(this.content); + this.$gutterLayer = new GutterLayer(this.$gutter); + this.$gutterLayer.on("changeGutterWidth", this.onGutterResize.bind(this)); + this.$markerBack = new MarkerLayer(this.content); + var textLayer = this.$textLayer = new TextLayer(this.content); + this.canvas = textLayer.element; + this.$markerFront = new MarkerLayer(this.content); + this.$cursorLayer = new CursorLayer(this.content); + this.$horizScroll = false; + this.$vScroll = false; + this.scrollBar = + this.scrollBarV = new VScrollBar(this.container, this); + this.scrollBarH = new HScrollBar(this.container, this); + this.scrollBarV.on("scroll", function (e) { + if (!_self.$scrollAnimation) + _self.session.setScrollTop(e.data - _self.scrollMargin.top); + }); + this.scrollBarH.on("scroll", function (e) { + if (!_self.$scrollAnimation) + _self.session.setScrollLeft(e.data - _self.scrollMargin.left); + }); + this.scrollTop = 0; + this.scrollLeft = 0; + this.cursorPos = { + row: 0, + column: 0 + }; + this.$fontMetrics = new FontMetrics(this.container); + this.$textLayer.$setFontMetrics(this.$fontMetrics); + this.$textLayer.on("changeCharacterSize", function (e) { + _self.updateCharacterSize(); + _self.onResize(true, _self.gutterWidth, _self.$size.width, _self.$size.height); + _self._signal("changeCharacterSize", e); + }); + this.$size = { + width: 0, + height: 0, + scrollerHeight: 0, + scrollerWidth: 0, + $dirty: true + }; + this.layerConfig = { + width: 1, + padding: 0, + firstRow: 0, + firstRowScreen: 0, + lastRow: 0, + lineHeight: 0, + characterWidth: 0, + minHeight: 1, + maxHeight: 1, + offset: 0, + height: 1, + gutterOffset: 1 + }; + this.scrollMargin = { + left: 0, + right: 0, + top: 0, + bottom: 0, + v: 0, + h: 0 + }; + this.margin = { + left: 0, + right: 0, + top: 0, + bottom: 0, + v: 0, + h: 0 + }; + this.$keepTextAreaAtCursor = !useragent.isIOS; + this.$loop = new RenderLoop(this.$renderChanges.bind(this), this.container.ownerDocument.defaultView); + this.$loop.schedule(this.CHANGE_FULL); + this.updateCharacterSize(); + this.setPadding(4); + this.$addResizeObserver(); + config.resetOptions(this); + config._signal("renderer", this); + } + VirtualRenderer.prototype.updateCharacterSize = function () { + if (this.$textLayer.allowBoldFonts != this.$allowBoldFonts) { + this.$allowBoldFonts = this.$textLayer.allowBoldFonts; + this.setStyle("ace_nobold", !this.$allowBoldFonts); + } + this.layerConfig.characterWidth = + this.characterWidth = this.$textLayer.getCharacterWidth(); + this.layerConfig.lineHeight = + this.lineHeight = this.$textLayer.getLineHeight(); + this.$updatePrintMargin(); + dom.setStyle(this.scroller.style, "line-height", this.lineHeight + "px"); + }; + VirtualRenderer.prototype.setSession = function (session) { + if (this.session) + this.session.doc.off("changeNewLineMode", this.onChangeNewLineMode); + this.session = session; + if (session && this.scrollMargin.top && session.getScrollTop() <= 0) + session.setScrollTop(-this.scrollMargin.top); + this.$cursorLayer.setSession(session); + this.$markerBack.setSession(session); + this.$markerFront.setSession(session); + this.$gutterLayer.setSession(session); + this.$textLayer.setSession(session); + if (!session) + return; + this.$loop.schedule(this.CHANGE_FULL); + this.session.$setFontMetrics(this.$fontMetrics); + this.scrollBarH.scrollLeft = this.scrollBarV.scrollTop = null; + this.onChangeNewLineMode = this.onChangeNewLineMode.bind(this); + this.onChangeNewLineMode(); + this.session.doc.on("changeNewLineMode", this.onChangeNewLineMode); + }; + VirtualRenderer.prototype.updateLines = function (firstRow, lastRow, force) { + if (lastRow === undefined) + lastRow = Infinity; + if (!this.$changedLines) { + this.$changedLines = { + firstRow: firstRow, + lastRow: lastRow + }; + } + else { + if (this.$changedLines.firstRow > firstRow) + this.$changedLines.firstRow = firstRow; + if (this.$changedLines.lastRow < lastRow) + this.$changedLines.lastRow = lastRow; + } + if (this.$changedLines.lastRow < this.layerConfig.firstRow) { + if (force) + this.$changedLines.lastRow = this.layerConfig.lastRow; + else + return; + } + if (this.$changedLines.firstRow > this.layerConfig.lastRow) + return; + this.$loop.schedule(this.CHANGE_LINES); + }; + VirtualRenderer.prototype.onChangeNewLineMode = function () { + this.$loop.schedule(this.CHANGE_TEXT); + this.$textLayer.$updateEolChar(); + this.session.$bidiHandler.setEolChar(this.$textLayer.EOL_CHAR); + }; + VirtualRenderer.prototype.onChangeTabSize = function () { + this.$loop.schedule(this.CHANGE_TEXT | this.CHANGE_MARKER); + this.$textLayer.onChangeTabSize(); + }; + VirtualRenderer.prototype.updateText = function () { + this.$loop.schedule(this.CHANGE_TEXT); + }; + VirtualRenderer.prototype.updateFull = function (force) { + if (force) + this.$renderChanges(this.CHANGE_FULL, true); + else + this.$loop.schedule(this.CHANGE_FULL); + }; + VirtualRenderer.prototype.updateFontSize = function () { + this.$textLayer.checkForSizeChanges(); + }; + VirtualRenderer.prototype.$updateSizeAsync = function () { + if (this.$loop.pending) + this.$size.$dirty = true; + else + this.onResize(); + }; + VirtualRenderer.prototype.onResize = function (force, gutterWidth, width, height) { + if (this.resizing > 2) + return; + else if (this.resizing > 0) + this.resizing++; + else + this.resizing = force ? 1 : 0; + var el = this.container; + if (!height) + height = el.clientHeight || el.scrollHeight; + if (!width) + width = el.clientWidth || el.scrollWidth; + var changes = this.$updateCachedSize(force, gutterWidth, width, height); + if (this.$resizeTimer) + this.$resizeTimer.cancel(); + if (!this.$size.scrollerHeight || (!width && !height)) + return this.resizing = 0; + if (force) + this.$gutterLayer.$padding = null; + if (force) + this.$renderChanges(changes | this.$changes, true); + else + this.$loop.schedule(changes | this.$changes); + if (this.resizing) + this.resizing = 0; + this.scrollBarH.scrollLeft = this.scrollBarV.scrollTop = null; + if (this.$customScrollbar) { + this.$updateCustomScrollbar(true); + } + }; + VirtualRenderer.prototype.$updateCachedSize = function (force, gutterWidth, width, height) { + height -= (this.$extraHeight || 0); + var changes = 0; + var size = this.$size; + var oldSize = { + width: size.width, + height: size.height, + scrollerHeight: size.scrollerHeight, + scrollerWidth: size.scrollerWidth + }; + if (height && (force || size.height != height)) { + size.height = height; + changes |= this.CHANGE_SIZE; + size.scrollerHeight = size.height; + if (this.$horizScroll) + size.scrollerHeight -= this.scrollBarH.getHeight(); + this.scrollBarV.setHeight(size.scrollerHeight); + this.scrollBarV.element.style.bottom = this.scrollBarH.getHeight() + "px"; + changes = changes | this.CHANGE_SCROLL; + } + if (width && (force || size.width != width)) { + changes |= this.CHANGE_SIZE; + size.width = width; + if (gutterWidth == null) + gutterWidth = this.$showGutter ? this.$gutter.offsetWidth : 0; + this.gutterWidth = gutterWidth; + dom.setStyle(this.scrollBarH.element.style, "left", gutterWidth + "px"); + dom.setStyle(this.scroller.style, "left", gutterWidth + this.margin.left + "px"); + size.scrollerWidth = Math.max(0, width - gutterWidth - this.scrollBarV.getWidth() - this.margin.h); + dom.setStyle(this.$gutter.style, "left", this.margin.left + "px"); + var right = this.scrollBarV.getWidth() + "px"; + dom.setStyle(this.scrollBarH.element.style, "right", right); + dom.setStyle(this.scroller.style, "right", right); + dom.setStyle(this.scroller.style, "bottom", this.scrollBarH.getHeight()); + this.scrollBarH.setWidth(size.scrollerWidth); + if (this.session && this.session.getUseWrapMode() && this.adjustWrapLimit() || force) { + changes |= this.CHANGE_FULL; + } + } + size.$dirty = !width || !height; + if (changes) + this._signal("resize", oldSize); + return changes; + }; + VirtualRenderer.prototype.onGutterResize = function (width) { + var gutterWidth = this.$showGutter ? width : 0; + if (gutterWidth != this.gutterWidth) + this.$changes |= this.$updateCachedSize(true, gutterWidth, this.$size.width, this.$size.height); + if (this.session.getUseWrapMode() && this.adjustWrapLimit()) { + this.$loop.schedule(this.CHANGE_FULL); + } + else if (this.$size.$dirty) { + this.$loop.schedule(this.CHANGE_FULL); + } + else { + this.$computeLayerConfig(); + } + }; + VirtualRenderer.prototype.adjustWrapLimit = function () { + var availableWidth = this.$size.scrollerWidth - this.$padding * 2; + var limit = Math.floor(availableWidth / this.characterWidth); + return this.session.adjustWrapLimit(limit, this.$showPrintMargin && this.$printMarginColumn); + }; + VirtualRenderer.prototype.setAnimatedScroll = function (shouldAnimate) { + this.setOption("animatedScroll", shouldAnimate); + }; + VirtualRenderer.prototype.getAnimatedScroll = function () { + return this.$animatedScroll; + }; + VirtualRenderer.prototype.setShowInvisibles = function (showInvisibles) { + this.setOption("showInvisibles", showInvisibles); + this.session.$bidiHandler.setShowInvisibles(showInvisibles); + }; + VirtualRenderer.prototype.getShowInvisibles = function () { + return this.getOption("showInvisibles"); + }; + VirtualRenderer.prototype.getDisplayIndentGuides = function () { + return this.getOption("displayIndentGuides"); + }; + VirtualRenderer.prototype.setDisplayIndentGuides = function (display) { + this.setOption("displayIndentGuides", display); + }; + VirtualRenderer.prototype.getHighlightIndentGuides = function () { + return this.getOption("highlightIndentGuides"); + }; + VirtualRenderer.prototype.setHighlightIndentGuides = function (highlight) { + this.setOption("highlightIndentGuides", highlight); + }; + VirtualRenderer.prototype.setShowPrintMargin = function (showPrintMargin) { + this.setOption("showPrintMargin", showPrintMargin); + }; + VirtualRenderer.prototype.getShowPrintMargin = function () { + return this.getOption("showPrintMargin"); + }; + VirtualRenderer.prototype.setPrintMarginColumn = function (showPrintMargin) { + this.setOption("printMarginColumn", showPrintMargin); + }; + VirtualRenderer.prototype.getPrintMarginColumn = function () { + return this.getOption("printMarginColumn"); + }; + VirtualRenderer.prototype.getShowGutter = function () { + return this.getOption("showGutter"); + }; + VirtualRenderer.prototype.setShowGutter = function (show) { + return this.setOption("showGutter", show); + }; + VirtualRenderer.prototype.getFadeFoldWidgets = function () { + return this.getOption("fadeFoldWidgets"); + }; + VirtualRenderer.prototype.setFadeFoldWidgets = function (show) { + this.setOption("fadeFoldWidgets", show); + }; + VirtualRenderer.prototype.setHighlightGutterLine = function (shouldHighlight) { + this.setOption("highlightGutterLine", shouldHighlight); + }; + VirtualRenderer.prototype.getHighlightGutterLine = function () { + return this.getOption("highlightGutterLine"); + }; + VirtualRenderer.prototype.$updatePrintMargin = function () { + if (!this.$showPrintMargin && !this.$printMarginEl) + return; + if (!this.$printMarginEl) { + var containerEl = dom.createElement("div"); + containerEl.className = "ace_layer ace_print-margin-layer"; + this.$printMarginEl = dom.createElement("div"); + this.$printMarginEl.className = "ace_print-margin"; + containerEl.appendChild(this.$printMarginEl); + this.content.insertBefore(containerEl, this.content.firstChild); + } + var style = this.$printMarginEl.style; + style.left = Math.round(this.characterWidth * this.$printMarginColumn + this.$padding) + "px"; + style.visibility = this.$showPrintMargin ? "visible" : "hidden"; + if (this.session && this.session.$wrap == -1) + this.adjustWrapLimit(); + }; + VirtualRenderer.prototype.getContainerElement = function () { + return this.container; + }; + VirtualRenderer.prototype.getMouseEventTarget = function () { + return this.scroller; + }; + VirtualRenderer.prototype.getTextAreaContainer = function () { + return this.container; + }; + VirtualRenderer.prototype.$moveTextAreaToCursor = function () { + if (this.$isMousePressed) + return; + var style = this.textarea.style; + var composition = this.$composition; + if (!this.$keepTextAreaAtCursor && !composition) { + dom.translate(this.textarea, -100, 0); + return; + } + var pixelPos = this.$cursorLayer.$pixelPos; + if (!pixelPos) + return; + if (composition && composition.markerRange) + pixelPos = this.$cursorLayer.getPixelPosition(composition.markerRange.start, true); + var config = this.layerConfig; + var posTop = pixelPos.top; + var posLeft = pixelPos.left; + posTop -= config.offset; + var h = composition && composition.useTextareaForIME || useragent.isMobile ? this.lineHeight : 1; + if (posTop < 0 || posTop > config.height - h) { + dom.translate(this.textarea, 0, 0); + return; + } + var w = 1; + var maxTop = this.$size.height - h; + if (!composition) { + posTop += this.lineHeight; + } + else { + if (composition.useTextareaForIME) { + var val = this.textarea.value; + w = this.characterWidth * (this.session.$getStringScreenWidth(val)[0]); + } + else { + posTop += this.lineHeight + 2; + } + } + posLeft -= this.scrollLeft; + if (posLeft > this.$size.scrollerWidth - w) + posLeft = this.$size.scrollerWidth - w; + posLeft += this.gutterWidth + this.margin.left; + dom.setStyle(style, "height", h + "px"); + dom.setStyle(style, "width", w + "px"); + dom.translate(this.textarea, Math.min(posLeft, this.$size.scrollerWidth - w), Math.min(posTop, maxTop)); + }; + VirtualRenderer.prototype.getFirstVisibleRow = function () { + return this.layerConfig.firstRow; + }; + VirtualRenderer.prototype.getFirstFullyVisibleRow = function () { + return this.layerConfig.firstRow + (this.layerConfig.offset === 0 ? 0 : 1); + }; + VirtualRenderer.prototype.getLastFullyVisibleRow = function () { + var config = this.layerConfig; + var lastRow = config.lastRow; + var top = this.session.documentToScreenRow(lastRow, 0) * config.lineHeight; + if (top - this.session.getScrollTop() > config.height - config.lineHeight) + return lastRow - 1; + return lastRow; + }; + VirtualRenderer.prototype.getLastVisibleRow = function () { + return this.layerConfig.lastRow; + }; + VirtualRenderer.prototype.setPadding = function (padding) { + this.$padding = padding; + this.$textLayer.setPadding(padding); + this.$cursorLayer.setPadding(padding); + this.$markerFront.setPadding(padding); + this.$markerBack.setPadding(padding); + this.$loop.schedule(this.CHANGE_FULL); + this.$updatePrintMargin(); + }; + VirtualRenderer.prototype.setScrollMargin = function (top, bottom, left, right) { + var sm = this.scrollMargin; + sm.top = top | 0; + sm.bottom = bottom | 0; + sm.right = right | 0; + sm.left = left | 0; + sm.v = sm.top + sm.bottom; + sm.h = sm.left + sm.right; + if (sm.top && this.scrollTop <= 0 && this.session) + this.session.setScrollTop(-sm.top); + this.updateFull(); + }; + VirtualRenderer.prototype.setMargin = function (top, bottom, left, right) { + var sm = this.margin; + sm.top = top | 0; + sm.bottom = bottom | 0; + sm.right = right | 0; + sm.left = left | 0; + sm.v = sm.top + sm.bottom; + sm.h = sm.left + sm.right; + this.$updateCachedSize(true, this.gutterWidth, this.$size.width, this.$size.height); + this.updateFull(); + }; + VirtualRenderer.prototype.getHScrollBarAlwaysVisible = function () { + return this.$hScrollBarAlwaysVisible; + }; + VirtualRenderer.prototype.setHScrollBarAlwaysVisible = function (alwaysVisible) { + this.setOption("hScrollBarAlwaysVisible", alwaysVisible); + }; + VirtualRenderer.prototype.getVScrollBarAlwaysVisible = function () { + return this.$vScrollBarAlwaysVisible; + }; + VirtualRenderer.prototype.setVScrollBarAlwaysVisible = function (alwaysVisible) { + this.setOption("vScrollBarAlwaysVisible", alwaysVisible); + }; + VirtualRenderer.prototype.$updateScrollBarV = function () { + var scrollHeight = this.layerConfig.maxHeight; + var scrollerHeight = this.$size.scrollerHeight; + if (!this.$maxLines && this.$scrollPastEnd) { + scrollHeight -= (scrollerHeight - this.lineHeight) * this.$scrollPastEnd; + if (this.scrollTop > scrollHeight - scrollerHeight) { + scrollHeight = this.scrollTop + scrollerHeight; + this.scrollBarV.scrollTop = null; + } + } + this.scrollBarV.setScrollHeight(scrollHeight + this.scrollMargin.v); + this.scrollBarV.setScrollTop(this.scrollTop + this.scrollMargin.top); + }; + VirtualRenderer.prototype.$updateScrollBarH = function () { + this.scrollBarH.setScrollWidth(this.layerConfig.width + 2 * this.$padding + this.scrollMargin.h); + this.scrollBarH.setScrollLeft(this.scrollLeft + this.scrollMargin.left); + }; + VirtualRenderer.prototype.freeze = function () { + this.$frozen = true; + }; + VirtualRenderer.prototype.unfreeze = function () { + this.$frozen = false; + }; + VirtualRenderer.prototype.$renderChanges = function (changes, force) { + if (this.$changes) { + changes |= this.$changes; + this.$changes = 0; + } + if ((!this.session || !this.container.offsetWidth || this.$frozen) || (!changes && !force)) { + this.$changes |= changes; + return; + } + if (this.$size.$dirty) { + this.$changes |= changes; + return this.onResize(true); + } + if (!this.lineHeight) { + this.$textLayer.checkForSizeChanges(); + } + this._signal("beforeRender", changes); + if (this.session && this.session.$bidiHandler) + this.session.$bidiHandler.updateCharacterWidths(this.$fontMetrics); + var config = this.layerConfig; + if (changes & this.CHANGE_FULL || + changes & this.CHANGE_SIZE || + changes & this.CHANGE_TEXT || + changes & this.CHANGE_LINES || + changes & this.CHANGE_SCROLL || + changes & this.CHANGE_H_SCROLL) { + changes |= this.$computeLayerConfig() | this.$loop.clear(); + if (config.firstRow != this.layerConfig.firstRow && config.firstRowScreen == this.layerConfig.firstRowScreen) { + var st = this.scrollTop + (config.firstRow - Math.max(this.layerConfig.firstRow, 0)) * this.lineHeight; + if (st > 0) { + this.scrollTop = st; + changes = changes | this.CHANGE_SCROLL; + changes |= this.$computeLayerConfig() | this.$loop.clear(); + } + } + config = this.layerConfig; + this.$updateScrollBarV(); + if (changes & this.CHANGE_H_SCROLL) + this.$updateScrollBarH(); + dom.translate(this.content, -this.scrollLeft, -config.offset); + var width = config.width + 2 * this.$padding + "px"; + var height = config.minHeight + "px"; + dom.setStyle(this.content.style, "width", width); + dom.setStyle(this.content.style, "height", height); + } + if (changes & this.CHANGE_H_SCROLL) { + dom.translate(this.content, -this.scrollLeft, -config.offset); + this.scroller.className = this.scrollLeft <= 0 ? "ace_scroller " : "ace_scroller ace_scroll-left "; + if (this.enableKeyboardAccessibility) + this.scroller.className += this.keyboardFocusClassName; + } + if (changes & this.CHANGE_FULL) { + this.$changedLines = null; + this.$textLayer.update(config); + if (this.$showGutter) + this.$gutterLayer.update(config); + if (this.$customScrollbar) { + this.$scrollDecorator.$updateDecorators(config); + } + this.$markerBack.update(config); + this.$markerFront.update(config); + this.$cursorLayer.update(config); + this.$moveTextAreaToCursor(); + this._signal("afterRender", changes); + return; + } + if (changes & this.CHANGE_SCROLL) { + this.$changedLines = null; + if (changes & this.CHANGE_TEXT || changes & this.CHANGE_LINES) + this.$textLayer.update(config); + else + this.$textLayer.scrollLines(config); + if (this.$showGutter) { + if (changes & this.CHANGE_GUTTER || changes & this.CHANGE_LINES) + this.$gutterLayer.update(config); + else + this.$gutterLayer.scrollLines(config); + } + if (this.$customScrollbar) { + this.$scrollDecorator.$updateDecorators(config); + } + this.$markerBack.update(config); + this.$markerFront.update(config); + this.$cursorLayer.update(config); + this.$moveTextAreaToCursor(); + this._signal("afterRender", changes); + return; + } + if (changes & this.CHANGE_TEXT) { + this.$changedLines = null; + this.$textLayer.update(config); + if (this.$showGutter) + this.$gutterLayer.update(config); + if (this.$customScrollbar) { + this.$scrollDecorator.$updateDecorators(config); + } + } + else if (changes & this.CHANGE_LINES) { + if (this.$updateLines() || (changes & this.CHANGE_GUTTER) && this.$showGutter) + this.$gutterLayer.update(config); + if (this.$customScrollbar) { + this.$scrollDecorator.$updateDecorators(config); + } + } + else if (changes & this.CHANGE_TEXT || changes & this.CHANGE_GUTTER) { + if (this.$showGutter) + this.$gutterLayer.update(config); + if (this.$customScrollbar) { + this.$scrollDecorator.$updateDecorators(config); + } + } + else if (changes & this.CHANGE_CURSOR) { + if (this.$highlightGutterLine) + this.$gutterLayer.updateLineHighlight(config); + if (this.$customScrollbar) { + this.$scrollDecorator.$updateDecorators(config); + } + } + if (changes & this.CHANGE_CURSOR) { + this.$cursorLayer.update(config); + this.$moveTextAreaToCursor(); + } + if (changes & (this.CHANGE_MARKER | this.CHANGE_MARKER_FRONT)) { + this.$markerFront.update(config); + } + if (changes & (this.CHANGE_MARKER | this.CHANGE_MARKER_BACK)) { + this.$markerBack.update(config); + } + this._signal("afterRender", changes); + }; + VirtualRenderer.prototype.$autosize = function () { + var height = this.session.getScreenLength() * this.lineHeight; + var maxHeight = this.$maxLines * this.lineHeight; + var desiredHeight = Math.min(maxHeight, Math.max((this.$minLines || 1) * this.lineHeight, height)) + this.scrollMargin.v + (this.$extraHeight || 0); + if (this.$horizScroll) + desiredHeight += this.scrollBarH.getHeight(); + if (this.$maxPixelHeight && desiredHeight > this.$maxPixelHeight) + desiredHeight = this.$maxPixelHeight; + var hideScrollbars = desiredHeight <= 2 * this.lineHeight; + var vScroll = !hideScrollbars && height > maxHeight; + if (desiredHeight != this.desiredHeight || + this.$size.height != this.desiredHeight || vScroll != this.$vScroll) { + if (vScroll != this.$vScroll) { + this.$vScroll = vScroll; + this.scrollBarV.setVisible(vScroll); + } + var w = this.container.clientWidth; + this.container.style.height = desiredHeight + "px"; + this.$updateCachedSize(true, this.$gutterWidth, w, desiredHeight); + this.desiredHeight = desiredHeight; + this._signal("autosize"); + } + }; + VirtualRenderer.prototype.$computeLayerConfig = function () { + var session = this.session; + var size = this.$size; + var hideScrollbars = size.height <= 2 * this.lineHeight; + var screenLines = this.session.getScreenLength(); + var maxHeight = screenLines * this.lineHeight; + var longestLine = this.$getLongestLine(); + var horizScroll = !hideScrollbars && (this.$hScrollBarAlwaysVisible || + size.scrollerWidth - longestLine - 2 * this.$padding < 0); + var hScrollChanged = this.$horizScroll !== horizScroll; + if (hScrollChanged) { + this.$horizScroll = horizScroll; + this.scrollBarH.setVisible(horizScroll); + } + var vScrollBefore = this.$vScroll; // autosize can change vscroll value in which case we need to update longestLine + if (this.$maxLines && this.lineHeight > 1) + this.$autosize(); + var minHeight = size.scrollerHeight + this.lineHeight; + var scrollPastEnd = !this.$maxLines && this.$scrollPastEnd + ? (size.scrollerHeight - this.lineHeight) * this.$scrollPastEnd + : 0; + maxHeight += scrollPastEnd; + var sm = this.scrollMargin; + this.session.setScrollTop(Math.max(-sm.top, Math.min(this.scrollTop, maxHeight - size.scrollerHeight + sm.bottom))); + this.session.setScrollLeft(Math.max(-sm.left, Math.min(this.scrollLeft, longestLine + 2 * this.$padding - size.scrollerWidth + sm.right))); + var vScroll = !hideScrollbars && (this.$vScrollBarAlwaysVisible || + size.scrollerHeight - maxHeight + scrollPastEnd < 0 || this.scrollTop > sm.top); + var vScrollChanged = vScrollBefore !== vScroll; + if (vScrollChanged) { + this.$vScroll = vScroll; + this.scrollBarV.setVisible(vScroll); + } + var offset = this.scrollTop % this.lineHeight; + var lineCount = Math.ceil(minHeight / this.lineHeight) - 1; + var firstRow = Math.max(0, Math.round((this.scrollTop - offset) / this.lineHeight)); + var lastRow = firstRow + lineCount; + var firstRowScreen, firstRowHeight; + var lineHeight = this.lineHeight; + firstRow = session.screenToDocumentRow(firstRow, 0); + var foldLine = session.getFoldLine(firstRow); + if (foldLine) { + firstRow = foldLine.start.row; + } + firstRowScreen = session.documentToScreenRow(firstRow, 0); + firstRowHeight = session.getRowLength(firstRow) * lineHeight; + lastRow = Math.min(session.screenToDocumentRow(lastRow, 0), session.getLength() - 1); + minHeight = size.scrollerHeight + session.getRowLength(lastRow) * lineHeight + + firstRowHeight; + offset = this.scrollTop - firstRowScreen * lineHeight; + var changes = 0; + if (this.layerConfig.width != longestLine || hScrollChanged) + changes = this.CHANGE_H_SCROLL; + if (hScrollChanged || vScrollChanged) { + changes |= this.$updateCachedSize(true, this.gutterWidth, size.width, size.height); + this._signal("scrollbarVisibilityChanged"); + if (vScrollChanged) + longestLine = this.$getLongestLine(); + } + this.layerConfig = { + width: longestLine, + padding: this.$padding, + firstRow: firstRow, + firstRowScreen: firstRowScreen, + lastRow: lastRow, + lineHeight: lineHeight, + characterWidth: this.characterWidth, + minHeight: minHeight, + maxHeight: maxHeight, + offset: offset, + gutterOffset: lineHeight ? Math.max(0, Math.ceil((offset + size.height - size.scrollerHeight) / lineHeight)) : 0, + height: this.$size.scrollerHeight + }; + if (this.session.$bidiHandler) + this.session.$bidiHandler.setContentWidth(longestLine - this.$padding); + return changes; + }; + VirtualRenderer.prototype.$updateLines = function () { + if (!this.$changedLines) + return; + var firstRow = this.$changedLines.firstRow; + var lastRow = this.$changedLines.lastRow; + this.$changedLines = null; + var layerConfig = this.layerConfig; + if (firstRow > layerConfig.lastRow + 1) { + return; + } + if (lastRow < layerConfig.firstRow) { + return; + } + if (lastRow === Infinity) { + if (this.$showGutter) + this.$gutterLayer.update(layerConfig); + this.$textLayer.update(layerConfig); + return; + } + this.$textLayer.updateLines(layerConfig, firstRow, lastRow); + return true; + }; + VirtualRenderer.prototype.$getLongestLine = function () { + var charCount = this.session.getScreenWidth(); + if (this.showInvisibles && !this.session.$useWrapMode) + charCount += 1; + if (this.$textLayer && charCount > this.$textLayer.MAX_LINE_LENGTH) + charCount = this.$textLayer.MAX_LINE_LENGTH + 30; + return Math.max(this.$size.scrollerWidth - 2 * this.$padding, Math.round(charCount * this.characterWidth)); + }; + VirtualRenderer.prototype.updateFrontMarkers = function () { + this.$markerFront.setMarkers(this.session.getMarkers(true)); + this.$loop.schedule(this.CHANGE_MARKER_FRONT); + }; + VirtualRenderer.prototype.updateBackMarkers = function () { + this.$markerBack.setMarkers(this.session.getMarkers()); + this.$loop.schedule(this.CHANGE_MARKER_BACK); + }; + VirtualRenderer.prototype.addGutterDecoration = function (row, className) { + this.$gutterLayer.addGutterDecoration(row, className); + }; + VirtualRenderer.prototype.removeGutterDecoration = function (row, className) { + this.$gutterLayer.removeGutterDecoration(row, className); + }; + VirtualRenderer.prototype.updateBreakpoints = function (rows) { + this.$loop.schedule(this.CHANGE_GUTTER); + }; + VirtualRenderer.prototype.setAnnotations = function (annotations) { + this.$gutterLayer.setAnnotations(annotations); + this.$loop.schedule(this.CHANGE_GUTTER); + }; + VirtualRenderer.prototype.updateCursor = function () { + this.$loop.schedule(this.CHANGE_CURSOR); + }; + VirtualRenderer.prototype.hideCursor = function () { + this.$cursorLayer.hideCursor(); + }; + VirtualRenderer.prototype.showCursor = function () { + this.$cursorLayer.showCursor(); + }; + VirtualRenderer.prototype.scrollSelectionIntoView = function (anchor, lead, offset) { + this.scrollCursorIntoView(anchor, offset); + this.scrollCursorIntoView(lead, offset); + }; + VirtualRenderer.prototype.scrollCursorIntoView = function (cursor, offset, $viewMargin) { + if (this.$size.scrollerHeight === 0) + return; + var pos = this.$cursorLayer.getPixelPosition(cursor); + var newLeft = pos.left; + var newTop = pos.top; + var topMargin = $viewMargin && $viewMargin.top || 0; + var bottomMargin = $viewMargin && $viewMargin.bottom || 0; + if (this.$scrollAnimation) { + this.$stopAnimation = true; + } + var currentTop = this.$scrollAnimation ? this.session.getScrollTop() : this.scrollTop; + if (currentTop + topMargin > newTop) { + if (offset && currentTop + topMargin > newTop + this.lineHeight) + newTop -= offset * this.$size.scrollerHeight; + if (newTop === 0) + newTop = -this.scrollMargin.top; + this.session.setScrollTop(newTop); + } + else if (currentTop + this.$size.scrollerHeight - bottomMargin < newTop + this.lineHeight) { + if (offset && currentTop + this.$size.scrollerHeight - bottomMargin < newTop - this.lineHeight) + newTop += offset * this.$size.scrollerHeight; + this.session.setScrollTop(newTop + this.lineHeight + bottomMargin - this.$size.scrollerHeight); + } + var currentLeft = this.scrollLeft; + var twoCharsWidth = 2 * this.layerConfig.characterWidth; + if (newLeft - twoCharsWidth < currentLeft) { + newLeft -= twoCharsWidth; + if (newLeft < this.$padding + twoCharsWidth) { + newLeft = -this.scrollMargin.left; + } + this.session.setScrollLeft(newLeft); + } + else { + newLeft += twoCharsWidth; + if (currentLeft + this.$size.scrollerWidth < newLeft + this.characterWidth) { + this.session.setScrollLeft(Math.round(newLeft + this.characterWidth - this.$size.scrollerWidth)); + } + else if (currentLeft <= this.$padding && newLeft - currentLeft < this.characterWidth) { + this.session.setScrollLeft(0); + } + } + }; + VirtualRenderer.prototype.getScrollTop = function () { + return this.session.getScrollTop(); + }; + VirtualRenderer.prototype.getScrollLeft = function () { + return this.session.getScrollLeft(); + }; + VirtualRenderer.prototype.getScrollTopRow = function () { + return this.scrollTop / this.lineHeight; + }; + VirtualRenderer.prototype.getScrollBottomRow = function () { + return Math.max(0, Math.floor((this.scrollTop + this.$size.scrollerHeight) / this.lineHeight) - 1); + }; + VirtualRenderer.prototype.scrollToRow = function (row) { + this.session.setScrollTop(row * this.lineHeight); + }; + VirtualRenderer.prototype.alignCursor = function (cursor, alignment) { + if (typeof cursor == "number") + cursor = { row: cursor, column: 0 }; + var pos = this.$cursorLayer.getPixelPosition(cursor); + var h = this.$size.scrollerHeight - this.lineHeight; + var offset = pos.top - h * (alignment || 0); + this.session.setScrollTop(offset); + return offset; + }; + VirtualRenderer.prototype.$calcSteps = function (fromValue, toValue) { + var i = 0; + var l = this.STEPS; + var steps = []; + var func = function (t, x_min, dx) { + return dx * (Math.pow(t - 1, 3) + 1) + x_min; + }; + for (i = 0; i < l; ++i) + steps.push(func(i / this.STEPS, fromValue, toValue - fromValue)); + return steps; + }; + VirtualRenderer.prototype.scrollToLine = function (line, center, animate, callback) { + var pos = this.$cursorLayer.getPixelPosition({ row: line, column: 0 }); + var offset = pos.top; + if (center) + offset -= this.$size.scrollerHeight / 2; + var initialScroll = this.scrollTop; + this.session.setScrollTop(offset); + if (animate !== false) + this.animateScrolling(initialScroll, callback); + }; + VirtualRenderer.prototype.animateScrolling = function (fromValue, callback) { + var toValue = this.scrollTop; + if (!this.$animatedScroll) + return; + var _self = this; + if (fromValue == toValue) + return; + if (this.$scrollAnimation) { + var oldSteps = this.$scrollAnimation.steps; + if (oldSteps.length) { + fromValue = oldSteps[0]; + if (fromValue == toValue) + return; + } + } + var steps = _self.$calcSteps(fromValue, toValue); + this.$scrollAnimation = { from: fromValue, to: toValue, steps: steps }; + clearInterval(this.$timer); + _self.session.setScrollTop(steps.shift()); + _self.session.$scrollTop = toValue; + function endAnimation() { + _self.$timer = clearInterval(_self.$timer); + _self.$scrollAnimation = null; + _self.$stopAnimation = false; + callback && callback(); + } + this.$timer = setInterval(function () { + if (_self.$stopAnimation) { + endAnimation(); + return; + } + if (!_self.session) + return clearInterval(_self.$timer); + if (steps.length) { + _self.session.setScrollTop(steps.shift()); + _self.session.$scrollTop = toValue; + } + else if (toValue != null) { + _self.session.$scrollTop = -1; + _self.session.setScrollTop(toValue); + toValue = null; + } + else { + endAnimation(); + } + }, 10); + }; + VirtualRenderer.prototype.scrollToY = function (scrollTop) { + if (this.scrollTop !== scrollTop) { + this.$loop.schedule(this.CHANGE_SCROLL); + this.scrollTop = scrollTop; + } + }; + VirtualRenderer.prototype.scrollToX = function (scrollLeft) { + if (this.scrollLeft !== scrollLeft) + this.scrollLeft = scrollLeft; + this.$loop.schedule(this.CHANGE_H_SCROLL); + }; + VirtualRenderer.prototype.scrollTo = function (x, y) { + this.session.setScrollTop(y); + this.session.setScrollLeft(x); + }; + VirtualRenderer.prototype.scrollBy = function (deltaX, deltaY) { + deltaY && this.session.setScrollTop(this.session.getScrollTop() + deltaY); + deltaX && this.session.setScrollLeft(this.session.getScrollLeft() + deltaX); + }; + VirtualRenderer.prototype.isScrollableBy = function (deltaX, deltaY) { + if (deltaY < 0 && this.session.getScrollTop() >= 1 - this.scrollMargin.top) + return true; + if (deltaY > 0 && this.session.getScrollTop() + this.$size.scrollerHeight + - this.layerConfig.maxHeight < -1 + this.scrollMargin.bottom) + return true; + if (deltaX < 0 && this.session.getScrollLeft() >= 1 - this.scrollMargin.left) + return true; + if (deltaX > 0 && this.session.getScrollLeft() + this.$size.scrollerWidth + - this.layerConfig.width < -1 + this.scrollMargin.right) + return true; + }; + VirtualRenderer.prototype.pixelToScreenCoordinates = function (x, y) { + var canvasPos; + if (this.$hasCssTransforms) { + canvasPos = { top: 0, left: 0 }; + var p = this.$fontMetrics.transformCoordinates([x, y]); + x = p[1] - this.gutterWidth - this.margin.left; + y = p[0]; + } + else { + canvasPos = this.scroller.getBoundingClientRect(); + } + var offsetX = x + this.scrollLeft - canvasPos.left - this.$padding; + var offset = offsetX / this.characterWidth; + var row = Math.floor((y + this.scrollTop - canvasPos.top) / this.lineHeight); + var col = this.$blockCursor ? Math.floor(offset) : Math.round(offset); + return { row: row, column: col, side: offset - col > 0 ? 1 : -1, offsetX: offsetX }; + }; + VirtualRenderer.prototype.screenToTextCoordinates = function (x, y) { + var canvasPos; + if (this.$hasCssTransforms) { + canvasPos = { top: 0, left: 0 }; + var p = this.$fontMetrics.transformCoordinates([x, y]); + x = p[1] - this.gutterWidth - this.margin.left; + y = p[0]; + } + else { + canvasPos = this.scroller.getBoundingClientRect(); + } + var offsetX = x + this.scrollLeft - canvasPos.left - this.$padding; + var offset = offsetX / this.characterWidth; + var col = this.$blockCursor ? Math.floor(offset) : Math.round(offset); + var row = Math.floor((y + this.scrollTop - canvasPos.top) / this.lineHeight); + return this.session.screenToDocumentPosition(row, Math.max(col, 0), offsetX); + }; + VirtualRenderer.prototype.textToScreenCoordinates = function (row, column) { + var canvasPos = this.scroller.getBoundingClientRect(); + var pos = this.session.documentToScreenPosition(row, column); + var x = this.$padding + (this.session.$bidiHandler.isBidiRow(pos.row, row) + ? this.session.$bidiHandler.getPosLeft(pos.column) + : Math.round(pos.column * this.characterWidth)); + var y = pos.row * this.lineHeight; + return { + pageX: canvasPos.left + x - this.scrollLeft, + pageY: canvasPos.top + y - this.scrollTop + }; + }; + VirtualRenderer.prototype.visualizeFocus = function () { + dom.addCssClass(this.container, "ace_focus"); + }; + VirtualRenderer.prototype.visualizeBlur = function () { + dom.removeCssClass(this.container, "ace_focus"); + }; + VirtualRenderer.prototype.showComposition = function (composition) { + this.$composition = composition; + if (!composition.cssText) { + composition.cssText = this.textarea.style.cssText; + } + if (composition.useTextareaForIME == undefined) + composition.useTextareaForIME = this.$useTextareaForIME; + if (this.$useTextareaForIME) { + dom.addCssClass(this.textarea, "ace_composition"); + this.textarea.style.cssText = ""; + this.$moveTextAreaToCursor(); + this.$cursorLayer.element.style.display = "none"; + } + else { + composition.markerId = this.session.addMarker(composition.markerRange, "ace_composition_marker", "text"); + } + }; + VirtualRenderer.prototype.setCompositionText = function (text) { + var cursor = this.session.selection.cursor; + this.addToken(text, "composition_placeholder", cursor.row, cursor.column); + this.$moveTextAreaToCursor(); + }; + VirtualRenderer.prototype.hideComposition = function () { + if (!this.$composition) + return; + if (this.$composition.markerId) + this.session.removeMarker(this.$composition.markerId); + dom.removeCssClass(this.textarea, "ace_composition"); + this.textarea.style.cssText = this.$composition.cssText; + var cursor = this.session.selection.cursor; + this.removeExtraToken(cursor.row, cursor.column); + this.$composition = null; + this.$cursorLayer.element.style.display = ""; + }; + VirtualRenderer.prototype.setGhostText = function (text, position) { + var cursor = this.session.selection.cursor; + var insertPosition = position || { row: cursor.row, column: cursor.column }; + this.removeGhostText(); + var textLines = text.split("\n"); + this.addToken(textLines[0], "ghost_text", insertPosition.row, insertPosition.column); + this.$ghostText = { + text: text, + position: { + row: insertPosition.row, + column: insertPosition.column + } + }; + if (textLines.length > 1) { + this.$ghostTextWidget = { + text: textLines.slice(1).join("\n"), + row: insertPosition.row, + column: insertPosition.column, + className: "ace_ghost_text" + }; + this.session.widgetManager.addLineWidget(this.$ghostTextWidget); + var pixelPosition = this.$cursorLayer.getPixelPosition(insertPosition, true); + var el = this.container; + var height = el.getBoundingClientRect().height; + var ghostTextHeight = textLines.length * this.lineHeight; + var fitsY = ghostTextHeight < height - pixelPosition.top; + if (fitsY) + return; + if (ghostTextHeight < height) { + this.scrollBy(0, (textLines.length - 1) * this.lineHeight); + } + else { + this.scrollBy(0, pixelPosition.top); + } + } + }; + VirtualRenderer.prototype.removeGhostText = function () { + if (!this.$ghostText) + return; + var position = this.$ghostText.position; + this.removeExtraToken(position.row, position.column); + if (this.$ghostTextWidget) { + this.session.widgetManager.removeLineWidget(this.$ghostTextWidget); + this.$ghostTextWidget = null; + } + this.$ghostText = null; + }; + VirtualRenderer.prototype.addToken = function (text, type, row, column) { + var session = this.session; + session.bgTokenizer.lines[row] = null; + var newToken = { type: type, value: text }; + var tokens = session.getTokens(row); + if (column == null || !tokens.length) { + tokens.push(newToken); + } + else { + var l = 0; + for (var i = 0; i < tokens.length; i++) { + var token = tokens[i]; + l += token.value.length; + if (column <= l) { + var diff = token.value.length - (l - column); + var before = token.value.slice(0, diff); + var after = token.value.slice(diff); + tokens.splice(i, 1, { type: token.type, value: before }, newToken, { type: token.type, value: after }); + break; + } + } + } + this.updateLines(row, row); + }; + VirtualRenderer.prototype.removeExtraToken = function (row, column) { + this.session.bgTokenizer.lines[row] = null; + this.updateLines(row, row); + }; + VirtualRenderer.prototype.setTheme = function (theme, cb) { + var _self = this; + this.$themeId = theme; + _self._dispatchEvent('themeChange', { theme: theme }); + if (!theme || typeof theme == "string") { + var moduleName = theme || this.$options.theme.initialValue; + config.loadModule(["theme", moduleName], afterLoad); + } + else { + afterLoad(theme); + } + function afterLoad(module) { + if (_self.$themeId != theme) + return cb && cb(); + if (!module || !module.cssClass) + throw new Error("couldn't load module " + theme + " or it didn't call define"); + if (module.$id) + _self.$themeId = module.$id; + dom.importCssString(module.cssText, module.cssClass, _self.container); + if (_self.theme) + dom.removeCssClass(_self.container, _self.theme.cssClass); + var padding = "padding" in module ? module.padding + : "padding" in (_self.theme || {}) ? 4 : _self.$padding; + if (_self.$padding && padding != _self.$padding) + _self.setPadding(padding); + _self.$theme = module.cssClass; + _self.theme = module; + dom.addCssClass(_self.container, module.cssClass); + dom.setCssClass(_self.container, "ace_dark", module.isDark); + if (_self.$size) { + _self.$size.width = 0; + _self.$updateSizeAsync(); + } + _self._dispatchEvent('themeLoaded', { theme: module }); + cb && cb(); + } + }; + VirtualRenderer.prototype.getTheme = function () { + return this.$themeId; + }; + VirtualRenderer.prototype.setStyle = function (style, include) { + dom.setCssClass(this.container, style, include !== false); + }; + VirtualRenderer.prototype.unsetStyle = function (style) { + dom.removeCssClass(this.container, style); + }; + VirtualRenderer.prototype.setCursorStyle = function (style) { + dom.setStyle(this.scroller.style, "cursor", style); + }; + VirtualRenderer.prototype.setMouseCursor = function (cursorStyle) { + dom.setStyle(this.scroller.style, "cursor", cursorStyle); + }; + VirtualRenderer.prototype.attachToShadowRoot = function () { + dom.importCssString(editorCss, "ace_editor.css", this.container); + }; + VirtualRenderer.prototype.destroy = function () { + this.freeze(); + this.$fontMetrics.destroy(); + this.$cursorLayer.destroy(); + this.removeAllListeners(); + this.container.textContent = ""; + this.setOption("useResizeObserver", false); + }; + VirtualRenderer.prototype.$updateCustomScrollbar = function (val) { + var _self = this; + this.$horizScroll = this.$vScroll = null; + this.scrollBarV.element.remove(); + this.scrollBarH.element.remove(); + if (this.$scrollDecorator) { + delete this.$scrollDecorator; + } + if (val === true) { + this.scrollBarV = new VScrollBarCustom(this.container, this); + this.scrollBarH = new HScrollBarCustom(this.container, this); + this.scrollBarV.setHeight(this.$size.scrollerHeight); + this.scrollBarH.setWidth(this.$size.scrollerWidth); + this.scrollBarV.addEventListener("scroll", function (e) { + if (!_self.$scrollAnimation) + _self.session.setScrollTop(e.data - _self.scrollMargin.top); + }); + this.scrollBarH.addEventListener("scroll", function (e) { + if (!_self.$scrollAnimation) + _self.session.setScrollLeft(e.data - _self.scrollMargin.left); + }); + this.$scrollDecorator = new Decorator(this.scrollBarV, this); + this.$scrollDecorator.$updateDecorators(); + } + else { + this.scrollBarV = new VScrollBar(this.container, this); + this.scrollBarH = new HScrollBar(this.container, this); + this.scrollBarV.addEventListener("scroll", function (e) { + if (!_self.$scrollAnimation) + _self.session.setScrollTop(e.data - _self.scrollMargin.top); + }); + this.scrollBarH.addEventListener("scroll", function (e) { + if (!_self.$scrollAnimation) + _self.session.setScrollLeft(e.data - _self.scrollMargin.left); + }); + } + }; + VirtualRenderer.prototype.$addResizeObserver = function () { + if (!window.ResizeObserver || this.$resizeObserver) + return; + var self = this; + this.$resizeTimer = lang.delayedCall(function () { + if (!self.destroyed) + self.onResize(); + }, 50); + this.$resizeObserver = new window.ResizeObserver(function (e) { + var w = e[0].contentRect.width; + var h = e[0].contentRect.height; + if (Math.abs(self.$size.width - w) > 1 + || Math.abs(self.$size.height - h) > 1) { + self.$resizeTimer.delay(); + } + else { + self.$resizeTimer.cancel(); + } + }); + this.$resizeObserver.observe(this.container); + }; + return VirtualRenderer; +}()); +VirtualRenderer.prototype.CHANGE_CURSOR = 1; +VirtualRenderer.prototype.CHANGE_MARKER = 2; +VirtualRenderer.prototype.CHANGE_GUTTER = 4; +VirtualRenderer.prototype.CHANGE_SCROLL = 8; +VirtualRenderer.prototype.CHANGE_LINES = 16; +VirtualRenderer.prototype.CHANGE_TEXT = 32; +VirtualRenderer.prototype.CHANGE_SIZE = 64; +VirtualRenderer.prototype.CHANGE_MARKER_BACK = 128; +VirtualRenderer.prototype.CHANGE_MARKER_FRONT = 256; +VirtualRenderer.prototype.CHANGE_FULL = 512; +VirtualRenderer.prototype.CHANGE_H_SCROLL = 1024; +VirtualRenderer.prototype.$changes = 0; +VirtualRenderer.prototype.$padding = null; +VirtualRenderer.prototype.$frozen = false; +VirtualRenderer.prototype.STEPS = 8; +oop.implement(VirtualRenderer.prototype, EventEmitter); +config.defineOptions(VirtualRenderer.prototype, "renderer", { + useResizeObserver: { + set: function (value) { + if (!value && this.$resizeObserver) { + this.$resizeObserver.disconnect(); + this.$resizeTimer.cancel(); + this.$resizeTimer = this.$resizeObserver = null; + } + else if (value && !this.$resizeObserver) { + this.$addResizeObserver(); + } + } + }, + animatedScroll: { initialValue: false }, + showInvisibles: { + set: function (value) { + if (this.$textLayer.setShowInvisibles(value)) + this.$loop.schedule(this.CHANGE_TEXT); + }, + initialValue: false + }, + showPrintMargin: { + set: function () { this.$updatePrintMargin(); }, + initialValue: true + }, + printMarginColumn: { + set: function () { this.$updatePrintMargin(); }, + initialValue: 80 + }, + printMargin: { + set: function (val) { + if (typeof val == "number") + this.$printMarginColumn = val; + this.$showPrintMargin = !!val; + this.$updatePrintMargin(); + }, + get: function () { + return this.$showPrintMargin && this.$printMarginColumn; + } + }, + showGutter: { + set: function (show) { + this.$gutter.style.display = show ? "block" : "none"; + this.$loop.schedule(this.CHANGE_FULL); + this.onGutterResize(); + }, + initialValue: true + }, + useSvgGutterIcons: { + set: function (value) { + this.$gutterLayer.$useSvgGutterIcons = value; + }, + initialValue: false + }, + showFoldedAnnotations: { + set: function (value) { + this.$gutterLayer.$showFoldedAnnotations = value; + }, + initialValue: false + }, + fadeFoldWidgets: { + set: function (show) { + dom.setCssClass(this.$gutter, "ace_fade-fold-widgets", show); + }, + initialValue: false + }, + showFoldWidgets: { + set: function (show) { + this.$gutterLayer.setShowFoldWidgets(show); + this.$loop.schedule(this.CHANGE_GUTTER); + }, + initialValue: true + }, + displayIndentGuides: { + set: function (show) { + if (this.$textLayer.setDisplayIndentGuides(show)) + this.$loop.schedule(this.CHANGE_TEXT); + }, + initialValue: true + }, + highlightIndentGuides: { + set: function (show) { + if (this.$textLayer.setHighlightIndentGuides(show) == true) { + this.$textLayer.$highlightIndentGuide(); + } + else { + this.$textLayer.$clearActiveIndentGuide(this.$textLayer.$lines.cells); + } + }, + initialValue: true + }, + highlightGutterLine: { + set: function (shouldHighlight) { + this.$gutterLayer.setHighlightGutterLine(shouldHighlight); + this.$loop.schedule(this.CHANGE_GUTTER); + }, + initialValue: true + }, + hScrollBarAlwaysVisible: { + set: function (val) { + if (!this.$hScrollBarAlwaysVisible || !this.$horizScroll) + this.$loop.schedule(this.CHANGE_SCROLL); + }, + initialValue: false + }, + vScrollBarAlwaysVisible: { + set: function (val) { + if (!this.$vScrollBarAlwaysVisible || !this.$vScroll) + this.$loop.schedule(this.CHANGE_SCROLL); + }, + initialValue: false + }, + fontSize: { + set: function (size) { + if (typeof size == "number") + size = size + "px"; + this.container.style.fontSize = size; + this.updateFontSize(); + }, + initialValue: 12 + }, + fontFamily: { + set: function (name) { + this.container.style.fontFamily = name; + this.updateFontSize(); + } + }, + maxLines: { + set: function (val) { + this.updateFull(); + } + }, + minLines: { + set: function (val) { + if (!(this.$minLines < 0x1ffffffffffff)) + this.$minLines = 0; + this.updateFull(); + } + }, + maxPixelHeight: { + set: function (val) { + this.updateFull(); + }, + initialValue: 0 + }, + scrollPastEnd: { + set: function (val) { + val = +val || 0; + if (this.$scrollPastEnd == val) + return; + this.$scrollPastEnd = val; + this.$loop.schedule(this.CHANGE_SCROLL); + }, + initialValue: 0, + handlesSet: true + }, + fixedWidthGutter: { + set: function (val) { + this.$gutterLayer.$fixedWidth = !!val; + this.$loop.schedule(this.CHANGE_GUTTER); + } + }, + customScrollbar: { + set: function (val) { + this.$updateCustomScrollbar(val); + }, + initialValue: false + }, + theme: { + set: function (val) { this.setTheme(val); }, + get: function () { return this.$themeId || this.theme; }, + initialValue: "./theme/textmate", + handlesSet: true + }, + hasCssTransforms: {}, + useTextareaForIME: { + initialValue: !useragent.isMobile && !useragent.isIE + } +}); +exports.VirtualRenderer = VirtualRenderer; + +}); + +ace.define("ace/worker/worker_client",["require","exports","module","ace/lib/oop","ace/lib/net","ace/lib/event_emitter","ace/config"], function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var net = require("../lib/net"); +var EventEmitter = require("../lib/event_emitter").EventEmitter; +var config = require("../config"); + +function $workerBlob(workerUrl) { + var script = "importScripts('" + net.qualifyURL(workerUrl) + "');"; + try { + return new Blob([script], {"type": "application/javascript"}); + } catch (e) { // Backwards-compatibility + var BlobBuilder = window.BlobBuilder || window.WebKitBlobBuilder || window.MozBlobBuilder; + var blobBuilder = new BlobBuilder(); + blobBuilder.append(script); + return blobBuilder.getBlob("application/javascript"); + } +} + +function createWorker(workerUrl) { + if (typeof Worker == "undefined") + return { postMessage: function() {}, terminate: function() {} }; + if (config.get("loadWorkerFromBlob")) { + var blob = $workerBlob(workerUrl); + var URL = window.URL || window.webkitURL; + var blobURL = URL.createObjectURL(blob); + return new Worker(blobURL); + } + return new Worker(workerUrl); +} + +var WorkerClient = function(worker) { + if (!worker.postMessage) + worker = this.$createWorkerFromOldConfig.apply(this, arguments); + + this.$worker = worker; + this.$sendDeltaQueue = this.$sendDeltaQueue.bind(this); + this.changeListener = this.changeListener.bind(this); + this.onMessage = this.onMessage.bind(this); + + this.callbackId = 1; + this.callbacks = {}; + + this.$worker.onmessage = this.onMessage; +}; + +(function(){ + + oop.implement(this, EventEmitter); + + this.$createWorkerFromOldConfig = function(topLevelNamespaces, mod, classname, workerUrl, importScripts) { + if (require.nameToUrl && !require.toUrl) + require.toUrl = require.nameToUrl; + + if (config.get("packaged") || !require.toUrl) { + workerUrl = workerUrl || config.moduleUrl(mod, "worker"); + } else { + var normalizePath = this.$normalizePath; + workerUrl = workerUrl || normalizePath(require.toUrl("ace/worker/worker.js", null, "_")); + + var tlns = {}; + topLevelNamespaces.forEach(function(ns) { + tlns[ns] = normalizePath(require.toUrl(ns, null, "_").replace(/(\.js)?(\?.*)?$/, "")); + }); + } + + this.$worker = createWorker(workerUrl); + if (importScripts) { + this.send("importScripts", importScripts); + } + this.$worker.postMessage({ + init : true, + tlns : tlns, + module : mod, + classname : classname + }); + return this.$worker; + }; + + this.onMessage = function(e) { + var msg = e.data; + switch (msg.type) { + case "event": + this._signal(msg.name, {data: msg.data}); + break; + case "call": + var callback = this.callbacks[msg.id]; + if (callback) { + callback(msg.data); + delete this.callbacks[msg.id]; + } + break; + case "error": + this.reportError(msg.data); + break; + case "log": + window.console && console.log && console.log.apply(console, msg.data); + break; + } + }; + + this.reportError = function(err) { + window.console && console.error && console.error(err); + }; + + this.$normalizePath = function(path) { + return net.qualifyURL(path); + }; + + this.terminate = function() { + this._signal("terminate", {}); + this.deltaQueue = null; + this.$worker.terminate(); + this.$worker.onerror = function(e) { + e.preventDefault(); + }; + this.$worker = null; + if (this.$doc) + this.$doc.off("change", this.changeListener); + this.$doc = null; + }; + + this.send = function(cmd, args) { + this.$worker.postMessage({command: cmd, args: args}); + }; + + this.call = function(cmd, args, callback) { + if (callback) { + var id = this.callbackId++; + this.callbacks[id] = callback; + args.push(id); + } + this.send(cmd, args); + }; + + this.emit = function(event, data) { + try { + if (data.data && data.data.err) + data.data.err = {message: data.data.err.message, stack: data.data.err.stack, code: data.data.err.code}; + this.$worker && this.$worker.postMessage({event: event, data: {data: data.data}}); + } + catch(ex) { + console.error(ex.stack); + } + }; + + this.attachToDocument = function(doc) { + if (this.$doc) + this.terminate(); + + this.$doc = doc; + this.call("setValue", [doc.getValue()]); + doc.on("change", this.changeListener, true); + }; + + this.changeListener = function(delta) { + if (!this.deltaQueue) { + this.deltaQueue = []; + setTimeout(this.$sendDeltaQueue, 0); + } + if (delta.action == "insert") + this.deltaQueue.push(delta.start, delta.lines); + else + this.deltaQueue.push(delta.start, delta.end); + }; + + this.$sendDeltaQueue = function() { + var q = this.deltaQueue; + if (!q) return; + this.deltaQueue = null; + if (q.length > 50 && q.length > this.$doc.getLength() >> 1) { + this.call("setValue", [this.$doc.getValue()]); + } else + this.emit("change", {data: q}); + }; + +}).call(WorkerClient.prototype); + + +var UIWorkerClient = function(topLevelNamespaces, mod, classname) { + var main = null; + var emitSync = false; + var sender = Object.create(EventEmitter); + + var messageBuffer = []; + var workerClient = new WorkerClient({ + messageBuffer: messageBuffer, + terminate: function() {}, + postMessage: function(e) { + messageBuffer.push(e); + if (!main) return; + if (emitSync) + setTimeout(processNext); + else + processNext(); + } + }); + + workerClient.setEmitSync = function(val) { emitSync = val; }; + + var processNext = function() { + var msg = messageBuffer.shift(); + if (msg.command) + main[msg.command].apply(main, msg.args); + else if (msg.event) + sender._signal(msg.event, msg.data); + }; + + sender.postMessage = function(msg) { + workerClient.onMessage({data: msg}); + }; + sender.callback = function(data, callbackId) { + this.postMessage({type: "call", id: callbackId, data: data}); + }; + sender.emit = function(name, data) { + this.postMessage({type: "event", name: name, data: data}); + }; + + config.loadModule(["worker", mod], function(Main) { + main = new Main[classname](sender); + while (messageBuffer.length) + processNext(); + }); + + return workerClient; +}; + +exports.UIWorkerClient = UIWorkerClient; +exports.WorkerClient = WorkerClient; +exports.createWorker = createWorker; + + +}); + +ace.define("ace/placeholder",["require","exports","module","ace/range","ace/lib/event_emitter","ace/lib/oop"], function(require, exports, module){"use strict"; +var Range = require("./range").Range; +var EventEmitter = require("./lib/event_emitter").EventEmitter; +var oop = require("./lib/oop"); +var PlaceHolder = /** @class */ (function () { + function PlaceHolder(session, length, pos, others, mainClass, othersClass) { + var _self = this; + this.length = length; + this.session = session; + this.doc = session.getDocument(); + this.mainClass = mainClass; + this.othersClass = othersClass; + this.$onUpdate = this.onUpdate.bind(this); + this.doc.on("change", this.$onUpdate, true); + this.$others = others; + this.$onCursorChange = function () { + setTimeout(function () { + _self.onCursorChange(); + }); + }; + this.$pos = pos; + var undoStack = session.getUndoManager().$undoStack || session.getUndoManager().$undostack || { length: -1 }; + this.$undoStackDepth = undoStack.length; + this.setup(); + session.selection.on("changeCursor", this.$onCursorChange); + } + PlaceHolder.prototype.setup = function () { + var _self = this; + var doc = this.doc; + var session = this.session; + this.selectionBefore = session.selection.toJSON(); + if (session.selection.inMultiSelectMode) + session.selection.toSingleRange(); + this.pos = doc.createAnchor(this.$pos.row, this.$pos.column); + var pos = this.pos; + pos.$insertRight = true; + pos.detach(); + pos.markerId = session.addMarker(new Range(pos.row, pos.column, pos.row, pos.column + this.length), this.mainClass, null, false); + this.others = []; + this.$others.forEach(function (other) { + var anchor = doc.createAnchor(other.row, other.column); + anchor.$insertRight = true; + anchor.detach(); + _self.others.push(anchor); + }); + session.setUndoSelect(false); + }; + PlaceHolder.prototype.showOtherMarkers = function () { + if (this.othersActive) + return; + var session = this.session; + var _self = this; + this.othersActive = true; + this.others.forEach(function (anchor) { + anchor.markerId = session.addMarker(new Range(anchor.row, anchor.column, anchor.row, anchor.column + _self.length), _self.othersClass, null, false); + }); + }; + PlaceHolder.prototype.hideOtherMarkers = function () { + if (!this.othersActive) + return; + this.othersActive = false; + for (var i = 0; i < this.others.length; i++) { + this.session.removeMarker(this.others[i].markerId); + } + }; + PlaceHolder.prototype.onUpdate = function (delta) { + if (this.$updating) + return this.updateAnchors(delta); + var range = delta; + if (range.start.row !== range.end.row) + return; + if (range.start.row !== this.pos.row) + return; + this.$updating = true; + var lengthDiff = delta.action === "insert" ? range.end.column - range.start.column : range.start.column - range.end.column; + var inMainRange = range.start.column >= this.pos.column && range.start.column <= this.pos.column + this.length + 1; + var distanceFromStart = range.start.column - this.pos.column; + this.updateAnchors(delta); + if (inMainRange) + this.length += lengthDiff; + if (inMainRange && !this.session.$fromUndo) { + if (delta.action === 'insert') { + for (var i = this.others.length - 1; i >= 0; i--) { + var otherPos = this.others[i]; + var newPos = { row: otherPos.row, column: otherPos.column + distanceFromStart }; + this.doc.insertMergedLines(newPos, delta.lines); + } + } + else if (delta.action === 'remove') { + for (var i = this.others.length - 1; i >= 0; i--) { + var otherPos = this.others[i]; + var newPos = { row: otherPos.row, column: otherPos.column + distanceFromStart }; + this.doc.remove(new Range(newPos.row, newPos.column, newPos.row, newPos.column - lengthDiff)); + } + } + } + this.$updating = false; + this.updateMarkers(); + }; + PlaceHolder.prototype.updateAnchors = function (delta) { + this.pos.onChange(delta); + for (var i = this.others.length; i--;) + this.others[i].onChange(delta); + this.updateMarkers(); + }; + PlaceHolder.prototype.updateMarkers = function () { + if (this.$updating) + return; + var _self = this; + var session = this.session; + var updateMarker = function (pos, className) { + session.removeMarker(pos.markerId); + pos.markerId = session.addMarker(new Range(pos.row, pos.column, pos.row, pos.column + _self.length), className, null, false); + }; + updateMarker(this.pos, this.mainClass); + for (var i = this.others.length; i--;) + updateMarker(this.others[i], this.othersClass); + }; + PlaceHolder.prototype.onCursorChange = function (event) { + if (this.$updating || !this.session) + return; + var pos = this.session.selection.getCursor(); + if (pos.row === this.pos.row && pos.column >= this.pos.column && pos.column <= this.pos.column + this.length) { + this.showOtherMarkers(); + this._emit("cursorEnter", event); + } + else { + this.hideOtherMarkers(); + this._emit("cursorLeave", event); + } + }; + PlaceHolder.prototype.detach = function () { + this.session.removeMarker(this.pos && this.pos.markerId); + this.hideOtherMarkers(); + this.doc.off("change", this.$onUpdate); + this.session.selection.off("changeCursor", this.$onCursorChange); + this.session.setUndoSelect(true); + this.session = null; + }; + PlaceHolder.prototype.cancel = function () { + if (this.$undoStackDepth === -1) + return; + var undoManager = this.session.getUndoManager(); + var undosRequired = (undoManager.$undoStack || undoManager.$undostack).length - this.$undoStackDepth; + for (var i = 0; i < undosRequired; i++) { + undoManager.undo(this.session, true); + } + if (this.selectionBefore) + this.session.selection.fromJSON(this.selectionBefore); + }; + return PlaceHolder; +}()); +oop.implement(PlaceHolder.prototype, EventEmitter); +exports.PlaceHolder = PlaceHolder; + +}); + +ace.define("ace/mouse/multi_select_handler",["require","exports","module","ace/lib/event","ace/lib/useragent"], function(require, exports, module){var event = require("../lib/event"); +var useragent = require("../lib/useragent"); +function isSamePoint(p1, p2) { + return p1.row == p2.row && p1.column == p2.column; +} +function onMouseDown(e) { + var ev = e.domEvent; + var alt = ev.altKey; + var shift = ev.shiftKey; + var ctrl = ev.ctrlKey; + var accel = e.getAccelKey(); + var button = e.getButton(); + if (ctrl && useragent.isMac) + button = ev.button; + if (e.editor.inMultiSelectMode && button == 2) { + e.editor.textInput.onContextMenu(e.domEvent); + return; + } + if (!ctrl && !alt && !accel) { + if (button === 0 && e.editor.inMultiSelectMode) + e.editor.exitMultiSelectMode(); + return; + } + if (button !== 0) + return; + var editor = e.editor; + var selection = editor.selection; + var isMultiSelect = editor.inMultiSelectMode; + var pos = e.getDocumentPosition(); + var cursor = selection.getCursor(); + var inSelection = e.inSelection() || (selection.isEmpty() && isSamePoint(pos, cursor)); + var mouseX = e.x, mouseY = e.y; + var onMouseSelection = function (e) { + mouseX = e.clientX; + mouseY = e.clientY; + }; + var session = editor.session; + var screenAnchor = editor.renderer.pixelToScreenCoordinates(mouseX, mouseY); + var screenCursor = screenAnchor; + var selectionMode; + if (editor.$mouseHandler.$enableJumpToDef) { + if (ctrl && alt || accel && alt) + selectionMode = shift ? "block" : "add"; + else if (alt && editor.$blockSelectEnabled) + selectionMode = "block"; + } + else { + if (accel && !alt) { + selectionMode = "add"; + if (!isMultiSelect && shift) + return; + } + else if (alt && editor.$blockSelectEnabled) { + selectionMode = "block"; + } + } + if (selectionMode && useragent.isMac && ev.ctrlKey) { + editor.$mouseHandler.cancelContextMenu(); + } + if (selectionMode == "add") { + if (!isMultiSelect && inSelection) + return; // dragging + if (!isMultiSelect) { + var range = selection.toOrientedRange(); + editor.addSelectionMarker(range); + } + var oldRange = selection.rangeList.rangeAtPoint(pos); + editor.inVirtualSelectionMode = true; + if (shift) { + oldRange = null; + range = selection.ranges[0] || range; + editor.removeSelectionMarker(range); + } + editor.once("mouseup", function () { + var tmpSel = selection.toOrientedRange(); + if (oldRange && tmpSel.isEmpty() && isSamePoint(oldRange.cursor, tmpSel.cursor)) + selection.substractPoint(tmpSel.cursor); + else { + if (shift) { + selection.substractPoint(range.cursor); + } + else if (range) { + editor.removeSelectionMarker(range); + selection.addRange(range); + } + selection.addRange(tmpSel); + } + editor.inVirtualSelectionMode = false; + }); + } + else if (selectionMode == "block") { + e.stop(); + editor.inVirtualSelectionMode = true; + var initialRange; + var rectSel = []; + var blockSelect = function () { + var newCursor = editor.renderer.pixelToScreenCoordinates(mouseX, mouseY); + var cursor = session.screenToDocumentPosition(newCursor.row, newCursor.column, newCursor.offsetX); + if (isSamePoint(screenCursor, newCursor) && isSamePoint(cursor, selection.lead)) + return; + screenCursor = newCursor; + editor.selection.moveToPosition(cursor); + editor.renderer.scrollCursorIntoView(); + editor.removeSelectionMarkers(rectSel); + rectSel = selection.rectangularRangeBlock(screenCursor, screenAnchor); + if (editor.$mouseHandler.$clickSelection && rectSel.length == 1 && rectSel[0].isEmpty()) + rectSel[0] = editor.$mouseHandler.$clickSelection.clone(); + rectSel.forEach(editor.addSelectionMarker, editor); + editor.updateSelectionMarkers(); + }; + if (isMultiSelect && !accel) { + selection.toSingleRange(); + } + else if (!isMultiSelect && accel) { + initialRange = selection.toOrientedRange(); + editor.addSelectionMarker(initialRange); + } + if (shift) + screenAnchor = session.documentToScreenPosition(selection.lead); + else + selection.moveToPosition(pos); + screenCursor = { row: -1, column: -1 }; + var onMouseSelectionEnd = function (e) { + blockSelect(); + clearInterval(timerId); + editor.removeSelectionMarkers(rectSel); + if (!rectSel.length) + rectSel = [selection.toOrientedRange()]; + if (initialRange) { + editor.removeSelectionMarker(initialRange); + selection.toSingleRange(initialRange); + } + for (var i = 0; i < rectSel.length; i++) + selection.addRange(rectSel[i]); + editor.inVirtualSelectionMode = false; + editor.$mouseHandler.$clickSelection = null; + }; + var onSelectionInterval = blockSelect; + event.capture(editor.container, onMouseSelection, onMouseSelectionEnd); + var timerId = setInterval(function () { onSelectionInterval(); }, 20); + return e.preventDefault(); + } +} +exports.onMouseDown = onMouseDown; + +}); + +ace.define("ace/commands/multi_select_commands",["require","exports","module","ace/keyboard/hash_handler"], function(require, exports, module){// commands to enter multiselect mode +exports.defaultCommands = [{ + name: "addCursorAbove", + description: "Add cursor above", + exec: function (editor) { editor.selectMoreLines(-1); }, + bindKey: { win: "Ctrl-Alt-Up", mac: "Ctrl-Alt-Up" }, + scrollIntoView: "cursor", + readOnly: true + }, { + name: "addCursorBelow", + description: "Add cursor below", + exec: function (editor) { editor.selectMoreLines(1); }, + bindKey: { win: "Ctrl-Alt-Down", mac: "Ctrl-Alt-Down" }, + scrollIntoView: "cursor", + readOnly: true + }, { + name: "addCursorAboveSkipCurrent", + description: "Add cursor above (skip current)", + exec: function (editor) { editor.selectMoreLines(-1, true); }, + bindKey: { win: "Ctrl-Alt-Shift-Up", mac: "Ctrl-Alt-Shift-Up" }, + scrollIntoView: "cursor", + readOnly: true + }, { + name: "addCursorBelowSkipCurrent", + description: "Add cursor below (skip current)", + exec: function (editor) { editor.selectMoreLines(1, true); }, + bindKey: { win: "Ctrl-Alt-Shift-Down", mac: "Ctrl-Alt-Shift-Down" }, + scrollIntoView: "cursor", + readOnly: true + }, { + name: "selectMoreBefore", + description: "Select more before", + exec: function (editor) { editor.selectMore(-1); }, + bindKey: { win: "Ctrl-Alt-Left", mac: "Ctrl-Alt-Left" }, + scrollIntoView: "cursor", + readOnly: true + }, { + name: "selectMoreAfter", + description: "Select more after", + exec: function (editor) { editor.selectMore(1); }, + bindKey: { win: "Ctrl-Alt-Right", mac: "Ctrl-Alt-Right" }, + scrollIntoView: "cursor", + readOnly: true + }, { + name: "selectNextBefore", + description: "Select next before", + exec: function (editor) { editor.selectMore(-1, true); }, + bindKey: { win: "Ctrl-Alt-Shift-Left", mac: "Ctrl-Alt-Shift-Left" }, + scrollIntoView: "cursor", + readOnly: true + }, { + name: "selectNextAfter", + description: "Select next after", + exec: function (editor) { editor.selectMore(1, true); }, + bindKey: { win: "Ctrl-Alt-Shift-Right", mac: "Ctrl-Alt-Shift-Right" }, + scrollIntoView: "cursor", + readOnly: true + }, { + name: "toggleSplitSelectionIntoLines", + description: "Split selection into lines", + exec: function (editor) { + if (editor.multiSelect.rangeCount > 1) + editor.multiSelect.joinSelections(); + else + editor.multiSelect.splitIntoLines(); + }, + bindKey: { win: "Ctrl-Alt-L", mac: "Ctrl-Alt-L" }, + readOnly: true + }, { + name: "splitSelectionIntoLines", + description: "Split into lines", + exec: function (editor) { editor.multiSelect.splitIntoLines(); }, + readOnly: true + }, { + name: "alignCursors", + description: "Align cursors", + exec: function (editor) { editor.alignCursors(); }, + bindKey: { win: "Ctrl-Alt-A", mac: "Ctrl-Alt-A" }, + scrollIntoView: "cursor" + }, { + name: "findAll", + description: "Find all", + exec: function (editor) { editor.findAll(); }, + bindKey: { win: "Ctrl-Alt-K", mac: "Ctrl-Alt-G" }, + scrollIntoView: "cursor", + readOnly: true + }]; +exports.multiSelectCommands = [{ + name: "singleSelection", + description: "Single selection", + bindKey: "esc", + exec: function (editor) { editor.exitMultiSelectMode(); }, + scrollIntoView: "cursor", + readOnly: true, + isAvailable: function (editor) { return editor && editor.inMultiSelectMode; } + }]; +var HashHandler = require("../keyboard/hash_handler").HashHandler; +exports.keyboardHandler = new HashHandler(exports.multiSelectCommands); + +}); + +ace.define("ace/multi_select",["require","exports","module","ace/range_list","ace/range","ace/selection","ace/mouse/multi_select_handler","ace/lib/event","ace/lib/lang","ace/commands/multi_select_commands","ace/search","ace/edit_session","ace/editor","ace/config"], function(require, exports, module){var RangeList = require("./range_list").RangeList; +var Range = require("./range").Range; +var Selection = require("./selection").Selection; +var onMouseDown = require("./mouse/multi_select_handler").onMouseDown; +var event = require("./lib/event"); +var lang = require("./lib/lang"); +var commands = require("./commands/multi_select_commands"); +exports.commands = commands.defaultCommands.concat(commands.multiSelectCommands); +var Search = require("./search").Search; +var search = new Search(); +function find(session, needle, dir) { + search.$options.wrap = true; + search.$options.needle = needle; + search.$options.backwards = dir == -1; + return search.find(session); +} +var EditSession = require("./edit_session").EditSession; +(function () { + this.getSelectionMarkers = function () { + return this.$selectionMarkers; + }; +}).call(EditSession.prototype); +(function () { + this.ranges = null; + this.rangeList = null; + this.addRange = function (range, $blockChangeEvents) { + if (!range) + return; + if (!this.inMultiSelectMode && this.rangeCount === 0) { + var oldRange = this.toOrientedRange(); + this.rangeList.add(oldRange); + this.rangeList.add(range); + if (this.rangeList.ranges.length != 2) { + this.rangeList.removeAll(); + return $blockChangeEvents || this.fromOrientedRange(range); + } + this.rangeList.removeAll(); + this.rangeList.add(oldRange); + this.$onAddRange(oldRange); + } + if (!range.cursor) + range.cursor = range.end; + var removed = this.rangeList.add(range); + this.$onAddRange(range); + if (removed.length) + this.$onRemoveRange(removed); + if (this.rangeCount > 1 && !this.inMultiSelectMode) { + this._signal("multiSelect"); + this.inMultiSelectMode = true; + this.session.$undoSelect = false; + this.rangeList.attach(this.session); + } + return $blockChangeEvents || this.fromOrientedRange(range); + }; + this.toSingleRange = function (range) { + range = range || this.ranges[0]; + var removed = this.rangeList.removeAll(); + if (removed.length) + this.$onRemoveRange(removed); + range && this.fromOrientedRange(range); + }; + this.substractPoint = function (pos) { + var removed = this.rangeList.substractPoint(pos); + if (removed) { + this.$onRemoveRange(removed); + return removed[0]; + } + }; + this.mergeOverlappingRanges = function () { + var removed = this.rangeList.merge(); + if (removed.length) + this.$onRemoveRange(removed); + }; + this.$onAddRange = function (range) { + this.rangeCount = this.rangeList.ranges.length; + this.ranges.unshift(range); + this._signal("addRange", { range: range }); + }; + this.$onRemoveRange = function (removed) { + this.rangeCount = this.rangeList.ranges.length; + if (this.rangeCount == 1 && this.inMultiSelectMode) { + var lastRange = this.rangeList.ranges.pop(); + removed.push(lastRange); + this.rangeCount = 0; + } + for (var i = removed.length; i--;) { + var index = this.ranges.indexOf(removed[i]); + this.ranges.splice(index, 1); + } + this._signal("removeRange", { ranges: removed }); + if (this.rangeCount === 0 && this.inMultiSelectMode) { + this.inMultiSelectMode = false; + this._signal("singleSelect"); + this.session.$undoSelect = true; + this.rangeList.detach(this.session); + } + lastRange = lastRange || this.ranges[0]; + if (lastRange && !lastRange.isEqual(this.getRange())) + this.fromOrientedRange(lastRange); + }; + this.$initRangeList = function () { + if (this.rangeList) + return; + this.rangeList = new RangeList(); + this.ranges = []; + this.rangeCount = 0; + }; + this.getAllRanges = function () { + return this.rangeCount ? this.rangeList.ranges.concat() : [this.getRange()]; + }; + this.splitIntoLines = function () { + var ranges = this.ranges.length ? this.ranges : [this.getRange()]; + var newRanges = []; + for (var i = 0; i < ranges.length; i++) { + var range = ranges[i]; + var row = range.start.row; + var endRow = range.end.row; + if (row === endRow) { + newRanges.push(range.clone()); + } + else { + newRanges.push(new Range(row, range.start.column, row, this.session.getLine(row).length)); + while (++row < endRow) + newRanges.push(this.getLineRange(row, true)); + newRanges.push(new Range(endRow, 0, endRow, range.end.column)); + } + if (i == 0 && !this.isBackwards()) + newRanges = newRanges.reverse(); + } + this.toSingleRange(); + for (var i = newRanges.length; i--;) + this.addRange(newRanges[i]); + }; + this.joinSelections = function () { + var ranges = this.rangeList.ranges; + var lastRange = ranges[ranges.length - 1]; + var range = Range.fromPoints(ranges[0].start, lastRange.end); + this.toSingleRange(); + this.setSelectionRange(range, lastRange.cursor == lastRange.start); + }; + this.toggleBlockSelection = function () { + if (this.rangeCount > 1) { + var ranges = this.rangeList.ranges; + var lastRange = ranges[ranges.length - 1]; + var range = Range.fromPoints(ranges[0].start, lastRange.end); + this.toSingleRange(); + this.setSelectionRange(range, lastRange.cursor == lastRange.start); + } + else { + var cursor = this.session.documentToScreenPosition(this.cursor); + var anchor = this.session.documentToScreenPosition(this.anchor); + var rectSel = this.rectangularRangeBlock(cursor, anchor); + rectSel.forEach(this.addRange, this); + } + }; + this.rectangularRangeBlock = function (screenCursor, screenAnchor, includeEmptyLines) { + var rectSel = []; + var xBackwards = screenCursor.column < screenAnchor.column; + if (xBackwards) { + var startColumn = screenCursor.column; + var endColumn = screenAnchor.column; + var startOffsetX = screenCursor.offsetX; + var endOffsetX = screenAnchor.offsetX; + } + else { + var startColumn = screenAnchor.column; + var endColumn = screenCursor.column; + var startOffsetX = screenAnchor.offsetX; + var endOffsetX = screenCursor.offsetX; + } + var yBackwards = screenCursor.row < screenAnchor.row; + if (yBackwards) { + var startRow = screenCursor.row; + var endRow = screenAnchor.row; + } + else { + var startRow = screenAnchor.row; + var endRow = screenCursor.row; + } + if (startColumn < 0) + startColumn = 0; + if (startRow < 0) + startRow = 0; + if (startRow == endRow) + includeEmptyLines = true; + var docEnd; + for (var row = startRow; row <= endRow; row++) { + var range = Range.fromPoints(this.session.screenToDocumentPosition(row, startColumn, startOffsetX), this.session.screenToDocumentPosition(row, endColumn, endOffsetX)); + if (range.isEmpty()) { + if (docEnd && isSamePoint(range.end, docEnd)) + break; + docEnd = range.end; + } + range.cursor = xBackwards ? range.start : range.end; + rectSel.push(range); + } + if (yBackwards) + rectSel.reverse(); + if (!includeEmptyLines) { + var end = rectSel.length - 1; + while (rectSel[end].isEmpty() && end > 0) + end--; + if (end > 0) { + var start = 0; + while (rectSel[start].isEmpty()) + start++; + } + for (var i = end; i >= start; i--) { + if (rectSel[i].isEmpty()) + rectSel.splice(i, 1); + } + } + return rectSel; + }; +}).call(Selection.prototype); +var Editor = require("./editor").Editor; +(function () { + this.updateSelectionMarkers = function () { + this.renderer.updateCursor(); + this.renderer.updateBackMarkers(); + }; + this.addSelectionMarker = function (orientedRange) { + if (!orientedRange.cursor) + orientedRange.cursor = orientedRange.end; + var style = this.getSelectionStyle(); + orientedRange.marker = this.session.addMarker(orientedRange, "ace_selection", style); + this.session.$selectionMarkers.push(orientedRange); + this.session.selectionMarkerCount = this.session.$selectionMarkers.length; + return orientedRange; + }; + this.removeSelectionMarker = function (range) { + if (!range.marker) + return; + this.session.removeMarker(range.marker); + var index = this.session.$selectionMarkers.indexOf(range); + if (index != -1) + this.session.$selectionMarkers.splice(index, 1); + this.session.selectionMarkerCount = this.session.$selectionMarkers.length; + }; + this.removeSelectionMarkers = function (ranges) { + var markerList = this.session.$selectionMarkers; + for (var i = ranges.length; i--;) { + var range = ranges[i]; + if (!range.marker) + continue; + this.session.removeMarker(range.marker); + var index = markerList.indexOf(range); + if (index != -1) + markerList.splice(index, 1); + } + this.session.selectionMarkerCount = markerList.length; + }; + this.$onAddRange = function (e) { + this.addSelectionMarker(e.range); + this.renderer.updateCursor(); + this.renderer.updateBackMarkers(); + }; + this.$onRemoveRange = function (e) { + this.removeSelectionMarkers(e.ranges); + this.renderer.updateCursor(); + this.renderer.updateBackMarkers(); + }; + this.$onMultiSelect = function (e) { + if (this.inMultiSelectMode) + return; + this.inMultiSelectMode = true; + this.setStyle("ace_multiselect"); + this.keyBinding.addKeyboardHandler(commands.keyboardHandler); + this.commands.setDefaultHandler("exec", this.$onMultiSelectExec); + this.renderer.updateCursor(); + this.renderer.updateBackMarkers(); + }; + this.$onSingleSelect = function (e) { + if (this.session.multiSelect.inVirtualMode) + return; + this.inMultiSelectMode = false; + this.unsetStyle("ace_multiselect"); + this.keyBinding.removeKeyboardHandler(commands.keyboardHandler); + this.commands.removeDefaultHandler("exec", this.$onMultiSelectExec); + this.renderer.updateCursor(); + this.renderer.updateBackMarkers(); + this._emit("changeSelection"); + }; + this.$onMultiSelectExec = function (e) { + var command = e.command; + var editor = e.editor; + if (!editor.multiSelect) + return; + if (!command.multiSelectAction) { + var result = command.exec(editor, e.args || {}); + editor.multiSelect.addRange(editor.multiSelect.toOrientedRange()); + editor.multiSelect.mergeOverlappingRanges(); + } + else if (command.multiSelectAction == "forEach") { + result = editor.forEachSelection(command, e.args); + } + else if (command.multiSelectAction == "forEachLine") { + result = editor.forEachSelection(command, e.args, true); + } + else if (command.multiSelectAction == "single") { + editor.exitMultiSelectMode(); + result = command.exec(editor, e.args || {}); + } + else { + result = command.multiSelectAction(editor, e.args || {}); + } + return result; + }; + this.forEachSelection = function (cmd, args, options) { + if (this.inVirtualSelectionMode) + return; + var keepOrder = options && options.keepOrder; + var $byLines = options == true || options && options.$byLines; + var session = this.session; + var selection = this.selection; + var rangeList = selection.rangeList; + var ranges = (keepOrder ? selection : rangeList).ranges; + var result; + if (!ranges.length) + return cmd.exec ? cmd.exec(this, args || {}) : cmd(this, args || {}); + var reg = selection._eventRegistry; + selection._eventRegistry = {}; + var tmpSel = new Selection(session); + this.inVirtualSelectionMode = true; + for (var i = ranges.length; i--;) { + if ($byLines) { + while (i > 0 && ranges[i].start.row == ranges[i - 1].end.row) + i--; + } + tmpSel.fromOrientedRange(ranges[i]); + tmpSel.index = i; + this.selection = session.selection = tmpSel; + var cmdResult = cmd.exec ? cmd.exec(this, args || {}) : cmd(this, args || {}); + if (!result && cmdResult !== undefined) + result = cmdResult; + tmpSel.toOrientedRange(ranges[i]); + } + tmpSel.detach(); + this.selection = session.selection = selection; + this.inVirtualSelectionMode = false; + selection._eventRegistry = reg; + selection.mergeOverlappingRanges(); + if (selection.ranges[0]) + selection.fromOrientedRange(selection.ranges[0]); + var anim = this.renderer.$scrollAnimation; + this.onCursorChange(); + this.onSelectionChange(); + if (anim && anim.from == anim.to) + this.renderer.animateScrolling(anim.from); + return result; + }; + this.exitMultiSelectMode = function () { + if (!this.inMultiSelectMode || this.inVirtualSelectionMode) + return; + this.multiSelect.toSingleRange(); + }; + this.getSelectedText = function () { + var text = ""; + if (this.inMultiSelectMode && !this.inVirtualSelectionMode) { + var ranges = this.multiSelect.rangeList.ranges; + var buf = []; + for (var i = 0; i < ranges.length; i++) { + buf.push(this.session.getTextRange(ranges[i])); + } + var nl = this.session.getDocument().getNewLineCharacter(); + text = buf.join(nl); + if (text.length == (buf.length - 1) * nl.length) + text = ""; + } + else if (!this.selection.isEmpty()) { + text = this.session.getTextRange(this.getSelectionRange()); + } + return text; + }; + this.$checkMultiselectChange = function (e, anchor) { + if (this.inMultiSelectMode && !this.inVirtualSelectionMode) { + var range = this.multiSelect.ranges[0]; + if (this.multiSelect.isEmpty() && anchor == this.multiSelect.anchor) + return; + var pos = anchor == this.multiSelect.anchor + ? range.cursor == range.start ? range.end : range.start + : range.cursor; + if (pos.row != anchor.row + || this.session.$clipPositionToDocument(pos.row, pos.column).column != anchor.column) + this.multiSelect.toSingleRange(this.multiSelect.toOrientedRange()); + else + this.multiSelect.mergeOverlappingRanges(); + } + }; + this.findAll = function (needle, options, additive) { + options = options || {}; + options.needle = needle || options.needle; + if (options.needle == undefined) { + var range = this.selection.isEmpty() + ? this.selection.getWordRange() + : this.selection.getRange(); + options.needle = this.session.getTextRange(range); + } + this.$search.set(options); + var ranges = this.$search.findAll(this.session); + if (!ranges.length) + return 0; + var selection = this.multiSelect; + if (!additive) + selection.toSingleRange(ranges[0]); + for (var i = ranges.length; i--;) + selection.addRange(ranges[i], true); + if (range && selection.rangeList.rangeAtPoint(range.start)) + selection.addRange(range, true); + return ranges.length; + }; + this.selectMoreLines = function (dir, skip) { + var range = this.selection.toOrientedRange(); + var isBackwards = range.cursor == range.end; + var screenLead = this.session.documentToScreenPosition(range.cursor); + if (this.selection.$desiredColumn) + screenLead.column = this.selection.$desiredColumn; + var lead = this.session.screenToDocumentPosition(screenLead.row + dir, screenLead.column); + if (!range.isEmpty()) { + var screenAnchor = this.session.documentToScreenPosition(isBackwards ? range.end : range.start); + var anchor = this.session.screenToDocumentPosition(screenAnchor.row + dir, screenAnchor.column); + } + else { + var anchor = lead; + } + if (isBackwards) { + var newRange = Range.fromPoints(lead, anchor); + newRange.cursor = newRange.start; + } + else { + var newRange = Range.fromPoints(anchor, lead); + newRange.cursor = newRange.end; + } + newRange.desiredColumn = screenLead.column; + if (!this.selection.inMultiSelectMode) { + this.selection.addRange(range); + } + else { + if (skip) + var toRemove = range.cursor; + } + this.selection.addRange(newRange); + if (toRemove) + this.selection.substractPoint(toRemove); + }; + this.transposeSelections = function (dir) { + var session = this.session; + var sel = session.multiSelect; + var all = sel.ranges; + for (var i = all.length; i--;) { + var range = all[i]; + if (range.isEmpty()) { + var tmp = session.getWordRange(range.start.row, range.start.column); + range.start.row = tmp.start.row; + range.start.column = tmp.start.column; + range.end.row = tmp.end.row; + range.end.column = tmp.end.column; + } + } + sel.mergeOverlappingRanges(); + var words = []; + for (var i = all.length; i--;) { + var range = all[i]; + words.unshift(session.getTextRange(range)); + } + if (dir < 0) + words.unshift(words.pop()); + else + words.push(words.shift()); + for (var i = all.length; i--;) { + var range = all[i]; + var tmp = range.clone(); + session.replace(range, words[i]); + range.start.row = tmp.start.row; + range.start.column = tmp.start.column; + } + sel.fromOrientedRange(sel.ranges[0]); + }; + this.selectMore = function (dir, skip, stopAtFirst) { + var session = this.session; + var sel = session.multiSelect; + var range = sel.toOrientedRange(); + if (range.isEmpty()) { + range = session.getWordRange(range.start.row, range.start.column); + range.cursor = dir == -1 ? range.start : range.end; + this.multiSelect.addRange(range); + if (stopAtFirst) + return; + } + var needle = session.getTextRange(range); + var newRange = find(session, needle, dir); + if (newRange) { + newRange.cursor = dir == -1 ? newRange.start : newRange.end; + this.session.unfold(newRange); + this.multiSelect.addRange(newRange); + this.renderer.scrollCursorIntoView(null, 0.5); + } + if (skip) + this.multiSelect.substractPoint(range.cursor); + }; + this.alignCursors = function () { + var session = this.session; + var sel = session.multiSelect; + var ranges = sel.ranges; + var row = -1; + var sameRowRanges = ranges.filter(function (r) { + if (r.cursor.row == row) + return true; + row = r.cursor.row; + }); + if (!ranges.length || sameRowRanges.length == ranges.length - 1) { + var range = this.selection.getRange(); + var fr = range.start.row, lr = range.end.row; + var guessRange = fr == lr; + if (guessRange) { + var max = this.session.getLength(); + var line; + do { + line = this.session.getLine(lr); + } while (/[=:]/.test(line) && ++lr < max); + do { + line = this.session.getLine(fr); + } while (/[=:]/.test(line) && --fr > 0); + if (fr < 0) + fr = 0; + if (lr >= max) + lr = max - 1; + } + var lines = this.session.removeFullLines(fr, lr); + lines = this.$reAlignText(lines, guessRange); + this.session.insert({ row: fr, column: 0 }, lines.join("\n") + "\n"); + if (!guessRange) { + range.start.column = 0; + range.end.column = lines[lines.length - 1].length; + } + this.selection.setRange(range); + } + else { + sameRowRanges.forEach(function (r) { + sel.substractPoint(r.cursor); + }); + var maxCol = 0; + var minSpace = Infinity; + var spaceOffsets = ranges.map(function (r) { + var p = r.cursor; + var line = session.getLine(p.row); + var spaceOffset = line.substr(p.column).search(/\S/g); + if (spaceOffset == -1) + spaceOffset = 0; + if (p.column > maxCol) + maxCol = p.column; + if (spaceOffset < minSpace) + minSpace = spaceOffset; + return spaceOffset; + }); + ranges.forEach(function (r, i) { + var p = r.cursor; + var l = maxCol - p.column; + var d = spaceOffsets[i] - minSpace; + if (l > d) + session.insert(p, lang.stringRepeat(" ", l - d)); + else + session.remove(new Range(p.row, p.column, p.row, p.column - l + d)); + r.start.column = r.end.column = maxCol; + r.start.row = r.end.row = p.row; + r.cursor = r.end; + }); + sel.fromOrientedRange(ranges[0]); + this.renderer.updateCursor(); + this.renderer.updateBackMarkers(); + } + }; + this.$reAlignText = function (lines, forceLeft) { + var isLeftAligned = true, isRightAligned = true; + var startW, textW, endW; + return lines.map(function (line) { + var m = line.match(/(\s*)(.*?)(\s*)([=:].*)/); + if (!m) + return [line]; + if (startW == null) { + startW = m[1].length; + textW = m[2].length; + endW = m[3].length; + return m; + } + if (startW + textW + endW != m[1].length + m[2].length + m[3].length) + isRightAligned = false; + if (startW != m[1].length) + isLeftAligned = false; + if (startW > m[1].length) + startW = m[1].length; + if (textW < m[2].length) + textW = m[2].length; + if (endW > m[3].length) + endW = m[3].length; + return m; + }).map(forceLeft ? alignLeft : + isLeftAligned ? isRightAligned ? alignRight : alignLeft : unAlign); + function spaces(n) { + return lang.stringRepeat(" ", n); + } + function alignLeft(m) { + return !m[2] ? m[0] : spaces(startW) + m[2] + + spaces(textW - m[2].length + endW) + + m[4].replace(/^([=:])\s+/, "$1 "); + } + function alignRight(m) { + return !m[2] ? m[0] : spaces(startW + textW - m[2].length) + m[2] + + spaces(endW) + + m[4].replace(/^([=:])\s+/, "$1 "); + } + function unAlign(m) { + return !m[2] ? m[0] : spaces(startW) + m[2] + + spaces(endW) + + m[4].replace(/^([=:])\s+/, "$1 "); + } + }; +}).call(Editor.prototype); +function isSamePoint(p1, p2) { + return p1.row == p2.row && p1.column == p2.column; +} +exports.onSessionChange = function (e) { + var session = e.session; + if (session && !session.multiSelect) { + session.$selectionMarkers = []; + session.selection.$initRangeList(); + session.multiSelect = session.selection; + } + this.multiSelect = session && session.multiSelect; + var oldSession = e.oldSession; + if (oldSession) { + oldSession.multiSelect.off("addRange", this.$onAddRange); + oldSession.multiSelect.off("removeRange", this.$onRemoveRange); + oldSession.multiSelect.off("multiSelect", this.$onMultiSelect); + oldSession.multiSelect.off("singleSelect", this.$onSingleSelect); + oldSession.multiSelect.lead.off("change", this.$checkMultiselectChange); + oldSession.multiSelect.anchor.off("change", this.$checkMultiselectChange); + } + if (session) { + session.multiSelect.on("addRange", this.$onAddRange); + session.multiSelect.on("removeRange", this.$onRemoveRange); + session.multiSelect.on("multiSelect", this.$onMultiSelect); + session.multiSelect.on("singleSelect", this.$onSingleSelect); + session.multiSelect.lead.on("change", this.$checkMultiselectChange); + session.multiSelect.anchor.on("change", this.$checkMultiselectChange); + } + if (session && this.inMultiSelectMode != session.selection.inMultiSelectMode) { + if (session.selection.inMultiSelectMode) + this.$onMultiSelect(); + else + this.$onSingleSelect(); + } +}; +function MultiSelect(editor) { + if (editor.$multiselectOnSessionChange) + return; + editor.$onAddRange = editor.$onAddRange.bind(editor); + editor.$onRemoveRange = editor.$onRemoveRange.bind(editor); + editor.$onMultiSelect = editor.$onMultiSelect.bind(editor); + editor.$onSingleSelect = editor.$onSingleSelect.bind(editor); + editor.$multiselectOnSessionChange = exports.onSessionChange.bind(editor); + editor.$checkMultiselectChange = editor.$checkMultiselectChange.bind(editor); + editor.$multiselectOnSessionChange(editor); + editor.on("changeSession", editor.$multiselectOnSessionChange); + editor.on("mousedown", onMouseDown); + editor.commands.addCommands(commands.defaultCommands); + addAltCursorListeners(editor); +} +function addAltCursorListeners(editor) { + if (!editor.textInput) + return; + var el = editor.textInput.getElement(); + var altCursor = false; + event.addListener(el, "keydown", function (e) { + var altDown = e.keyCode == 18 && !(e.ctrlKey || e.shiftKey || e.metaKey); + if (editor.$blockSelectEnabled && altDown) { + if (!altCursor) { + editor.renderer.setMouseCursor("crosshair"); + altCursor = true; + } + } + else if (altCursor) { + reset(); + } + }, editor); + event.addListener(el, "keyup", reset, editor); + event.addListener(el, "blur", reset, editor); + function reset(e) { + if (altCursor) { + editor.renderer.setMouseCursor(""); + altCursor = false; + } + } +} +exports.MultiSelect = MultiSelect; +require("./config").defineOptions(Editor.prototype, "editor", { + enableMultiselect: { + set: function (val) { + MultiSelect(this); + if (val) { + this.on("mousedown", onMouseDown); + } + else { + this.off("mousedown", onMouseDown); + } + }, + value: true + }, + enableBlockSelect: { + set: function (val) { + this.$blockSelectEnabled = val; + }, + value: true + } +}); + +}); + +ace.define("ace/mode/folding/fold_mode",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; +var Range = require("../../range").Range; +var FoldMode = exports.FoldMode = function () { }; +(function () { + this.foldingStartMarker = null; + this.foldingStopMarker = null; + this.getFoldWidget = function (session, foldStyle, row) { + var line = session.getLine(row); + if (this.foldingStartMarker.test(line)) + return "start"; + if (foldStyle == "markbeginend" + && this.foldingStopMarker + && this.foldingStopMarker.test(line)) + return "end"; + return ""; + }; + this.getFoldWidgetRange = function (session, foldStyle, row) { + return null; + }; + this.indentationBlock = function (session, row, column) { + var re = /\S/; + var line = session.getLine(row); + var startLevel = line.search(re); + if (startLevel == -1) + return; + var startColumn = column || line.length; + var maxRow = session.getLength(); + var startRow = row; + var endRow = row; + while (++row < maxRow) { + var level = session.getLine(row).search(re); + if (level == -1) + continue; + if (level <= startLevel) { + var token = session.getTokenAt(row, 0); + if (!token || token.type !== "string") + break; + } + endRow = row; + } + if (endRow > startRow) { + var endColumn = session.getLine(endRow).length; + return new Range(startRow, startColumn, endRow, endColumn); + } + }; + this.openingBracketBlock = function (session, bracket, row, column, typeRe) { + var start = { row: row, column: column + 1 }; + var end = session.$findClosingBracket(bracket, start, typeRe); + if (!end) + return; + var fw = session.foldWidgets[end.row]; + if (fw == null) + fw = session.getFoldWidget(end.row); + if (fw == "start" && end.row > start.row) { + end.row--; + end.column = session.getLine(end.row).length; + } + return Range.fromPoints(start, end); + }; + this.closingBracketBlock = function (session, bracket, row, column, typeRe) { + var end = { row: row, column: column }; + var start = session.$findOpeningBracket(bracket, end); + if (!start) + return; + start.column++; + end.column--; + return Range.fromPoints(start, end); + }; +}).call(FoldMode.prototype); + +}); + +ace.define("ace/ext/error_marker",["require","exports","module","ace/line_widgets","ace/lib/dom","ace/range","ace/config"], function(require, exports, module){"use strict"; +var LineWidgets = require("../line_widgets").LineWidgets; +var dom = require("../lib/dom"); +var Range = require("../range").Range; +var nls = require("../config").nls; +function binarySearch(array, needle, comparator) { + var first = 0; + var last = array.length - 1; + while (first <= last) { + var mid = (first + last) >> 1; + var c = comparator(needle, array[mid]); + if (c > 0) + first = mid + 1; + else if (c < 0) + last = mid - 1; + else + return mid; + } + return -(first + 1); +} +function findAnnotations(session, row, dir) { + var annotations = session.getAnnotations().sort(Range.comparePoints); + if (!annotations.length) + return; + var i = binarySearch(annotations, { row: row, column: -1 }, Range.comparePoints); + if (i < 0) + i = -i - 1; + if (i >= annotations.length) + i = dir > 0 ? 0 : annotations.length - 1; + else if (i === 0 && dir < 0) + i = annotations.length - 1; + var annotation = annotations[i]; + if (!annotation || !dir) + return; + if (annotation.row === row) { + do { + annotation = annotations[i += dir]; + } while (annotation && annotation.row === row); + if (!annotation) + return annotations.slice(); + } + var matched = []; + row = annotation.row; + do { + matched[dir < 0 ? "unshift" : "push"](annotation); + annotation = annotations[i += dir]; + } while (annotation && annotation.row == row); + return matched.length && matched; +} +exports.showErrorMarker = function (editor, dir) { + var session = editor.session; + if (!session.widgetManager) { + session.widgetManager = new LineWidgets(session); + session.widgetManager.attach(editor); + } + var pos = editor.getCursorPosition(); + var row = pos.row; + var oldWidget = session.widgetManager.getWidgetsAtRow(row).filter(function (w) { + return w.type == "errorMarker"; + })[0]; + if (oldWidget) { + oldWidget.destroy(); + } + else { + row -= dir; + } + var annotations = findAnnotations(session, row, dir); + var gutterAnno; + if (annotations) { + var annotation = annotations[0]; + pos.column = (annotation.pos && typeof annotation.column != "number" + ? annotation.pos.sc + : annotation.column) || 0; + pos.row = annotation.row; + gutterAnno = editor.renderer.$gutterLayer.$annotations[pos.row]; + } + else if (oldWidget) { + return; + } + else { + gutterAnno = { + text: [nls("Looks good!")], + className: "ace_ok" + }; + } + editor.session.unfold(pos.row); + editor.selection.moveToPosition(pos); + var w = { + row: pos.row, + fixedWidth: true, + coverGutter: true, + el: dom.createElement("div"), + type: "errorMarker" + }; + var el = w.el.appendChild(dom.createElement("div")); + var arrow = w.el.appendChild(dom.createElement("div")); + arrow.className = "error_widget_arrow " + gutterAnno.className; + var left = editor.renderer.$cursorLayer + .getPixelPosition(pos).left; + arrow.style.left = left + editor.renderer.gutterWidth - 5 + "px"; + w.el.className = "error_widget_wrapper"; + el.className = "error_widget " + gutterAnno.className; + el.innerHTML = gutterAnno.text.join("
    "); + el.appendChild(dom.createElement("div")); + var kb = function (_, hashId, keyString) { + if (hashId === 0 && (keyString === "esc" || keyString === "return")) { + w.destroy(); + return { command: "null" }; + } + }; + w.destroy = function () { + if (editor.$mouseHandler.isMousePressed) + return; + editor.keyBinding.removeKeyboardHandler(kb); + session.widgetManager.removeLineWidget(w); + editor.off("changeSelection", w.destroy); + editor.off("changeSession", w.destroy); + editor.off("mouseup", w.destroy); + editor.off("change", w.destroy); + }; + editor.keyBinding.addKeyboardHandler(kb); + editor.on("changeSelection", w.destroy); + editor.on("changeSession", w.destroy); + editor.on("mouseup", w.destroy); + editor.on("change", w.destroy); + editor.session.widgetManager.addLineWidget(w); + w.el.onmousedown = editor.focus.bind(editor); + editor.renderer.scrollCursorIntoView(null, 0.5, { bottom: w.el.offsetHeight }); +}; +dom.importCssString("\n .error_widget_wrapper {\n background: inherit;\n color: inherit;\n border:none\n }\n .error_widget {\n border-top: solid 2px;\n border-bottom: solid 2px;\n margin: 5px 0;\n padding: 10px 40px;\n white-space: pre-wrap;\n }\n .error_widget.ace_error, .error_widget_arrow.ace_error{\n border-color: #ff5a5a\n }\n .error_widget.ace_warning, .error_widget_arrow.ace_warning{\n border-color: #F1D817\n }\n .error_widget.ace_info, .error_widget_arrow.ace_info{\n border-color: #5a5a5a\n }\n .error_widget.ace_ok, .error_widget_arrow.ace_ok{\n border-color: #5aaa5a\n }\n .error_widget_arrow {\n position: absolute;\n border: solid 5px;\n border-top-color: transparent!important;\n border-right-color: transparent!important;\n border-left-color: transparent!important;\n top: -5px;\n }\n", "error_marker.css", false); + +}); + +ace.define("ace/ace",["require","exports","module","ace/lib/dom","ace/range","ace/editor","ace/edit_session","ace/undomanager","ace/virtual_renderer","ace/worker/worker_client","ace/keyboard/hash_handler","ace/placeholder","ace/multi_select","ace/mode/folding/fold_mode","ace/theme/textmate","ace/ext/error_marker","ace/config","ace/loader_build"], function(require, exports, module){/** + * The main class required to set up an Ace instance in the browser. + * + * @class Ace + **/ +"use strict"; +require("./loader_build")(exports) +var dom = require("./lib/dom"); +var Range = require("./range").Range; +var Editor = require("./editor").Editor; +var EditSession = require("./edit_session").EditSession; +var UndoManager = require("./undomanager").UndoManager; +var Renderer = require("./virtual_renderer").VirtualRenderer; +require("./worker/worker_client"); +require("./keyboard/hash_handler"); +require("./placeholder"); +require("./multi_select"); +require("./mode/folding/fold_mode"); +require("./theme/textmate"); +require("./ext/error_marker"); +exports.config = require("./config"); +exports.edit = function (el, options) { + if (typeof el == "string") { + var _id = el; + el = document.getElementById(_id); + if (!el) + throw new Error("ace.edit can't find div #" + _id); + } + if (el && el.env && el.env.editor instanceof Editor) + return el.env.editor; + var value = ""; + if (el && /input|textarea/i.test(el.tagName)) { + var oldNode = el; + value = oldNode.value; + el = dom.createElement("pre"); + oldNode.parentNode.replaceChild(el, oldNode); + } + else if (el) { + value = el.textContent; + el.innerHTML = ""; + } + var doc = exports.createEditSession(value); + var editor = new Editor(new Renderer(el), doc, options); + var env = { + document: doc, + editor: editor, + onResize: editor.resize.bind(editor, null) + }; + if (oldNode) + env.textarea = oldNode; + editor.on("destroy", function () { + env.editor.container.env = null; // prevent memory leak on old ie + }); + editor.container.env = editor.env = env; + return editor; +}; +exports.createEditSession = function (text, mode) { + var doc = new EditSession(text, mode); + doc.setUndoManager(new UndoManager()); + return doc; +}; +exports.Range = Range; +exports.Editor = Editor; +exports.EditSession = EditSession; +exports.UndoManager = UndoManager; +exports.VirtualRenderer = Renderer; +exports.version = exports.config.version; + +}); (function() { + ace.require(["ace/ace"], function(a) { + if (a) { + a.config.init(true); + a.define = ace.define; + } + var global = (function () { + return this; + })(); + if (!global && typeof window != "undefined") global = window; // can happen in strict mode + if (!global && typeof self != "undefined") global = self; // can happen in webworker + + if (!global.ace) + global.ace = a; + for (var key in a) if (a.hasOwnProperty(key)) + global.ace[key] = a[key]; + global.ace["default"] = global.ace; + if ( true && module) { + module.exports = global.ace; + } + }); + })(); + + +/***/ }), + +/***/ 134: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +/* module decorator */ module = __webpack_require__.nmd(module); +ace.define("ace/ext/beautify",["require","exports","module","ace/token_iterator"], function(require, exports, module){// [WIP] +"use strict"; +var TokenIterator = require("../token_iterator").TokenIterator; +function is(token, type) { + return token.type.lastIndexOf(type + ".xml") > -1; +} +exports.singletonTags = ["area", "base", "br", "col", "command", "embed", "hr", "html", "img", "input", "keygen", "link", "meta", "param", "source", "track", "wbr"]; +exports.blockTags = ["article", "aside", "blockquote", "body", "div", "dl", "fieldset", "footer", "form", "head", "header", "html", "nav", "ol", "p", "script", "section", "style", "table", "tbody", "tfoot", "thead", "ul"]; +exports.formatOptions = { + lineBreaksAfterCommasInCurlyBlock: true +}; +exports.beautify = function (session) { + var iterator = new TokenIterator(session, 0, 0); + var token = iterator.getCurrentToken(); + var tabString = session.getTabString(); + var singletonTags = exports.singletonTags; + var blockTags = exports.blockTags; + var formatOptions = exports.formatOptions || {}; + var nextToken; + var breakBefore = false; + var spaceBefore = false; + var spaceAfter = false; + var code = ""; + var value = ""; + var tagName = ""; + var depth = 0; + var lastDepth = 0; + var lastIndent = 0; + var indent = 0; + var unindent = 0; + var roundDepth = 0; + var curlyDepth = 0; + var row; + var curRow = 0; + var rowsToAdd = 0; + var rowTokens = []; + var abort = false; + var i; + var indentNextLine = false; + var inTag = false; + var inCSS = false; + var inBlock = false; + var levels = { 0: 0 }; + var parents = []; + var caseBody = false; + var trimNext = function () { + if (nextToken && nextToken.value && nextToken.type !== 'string.regexp') + nextToken.value = nextToken.value.replace(/^\s*/, ""); + }; + var trimLine = function () { + var end = code.length - 1; + while (true) { + if (end == 0) + break; + if (code[end] !== " ") + break; + end = end - 1; + } + code = code.slice(0, end + 1); + }; + var trimCode = function () { + code = code.trimRight(); + breakBefore = false; + }; + while (token !== null) { + curRow = iterator.getCurrentTokenRow(); + rowTokens = iterator.$rowTokens; + nextToken = iterator.stepForward(); + if (typeof token !== "undefined") { + value = token.value; + unindent = 0; + inCSS = (tagName === "style" || session.$modeId === "ace/mode/css"); + if (is(token, "tag-open")) { + inTag = true; + if (nextToken) + inBlock = (blockTags.indexOf(nextToken.value) !== -1); + if (value === " 0; rowsToAdd--) + code += "\n"; + breakBefore = true; + if (!is(token, "comment") && !token.type.match(/^(comment|string)$/)) + value = value.trimLeft(); + } + if (value) { + if (token.type === "keyword" && value.match(/^(if|else|elseif|for|foreach|while|switch)$/)) { + parents[depth] = value; + trimNext(); + spaceAfter = true; + if (value.match(/^(else|elseif)$/)) { + if (code.match(/\}[\s]*$/)) { + trimCode(); + spaceBefore = true; + } + } + } + else if (token.type === "paren.lparen") { + trimNext(); + if (value.substr(-1) === "{") { + spaceAfter = true; + indentNextLine = false; + if (!inTag) + rowsToAdd = 1; + } + if (value.substr(0, 1) === "{") { + spaceBefore = true; + if (code.substr(-1) !== '[' && code.trimRight().substr(-1) === '[') { + trimCode(); + spaceBefore = false; + } + else if (code.trimRight().substr(-1) === ')') { + trimCode(); + } + else { + trimLine(); + } + } + } + else if (token.type === "paren.rparen") { + unindent = 1; + if (value.substr(0, 1) === "}") { + if (parents[depth - 1] === 'case') + unindent++; + if (code.trimRight().substr(-1) === '{') { + trimCode(); + } + else { + spaceBefore = true; + if (inCSS) + rowsToAdd += 2; + } + } + if (value.substr(0, 1) === "]") { + if (code.substr(-1) !== '}' && code.trimRight().substr(-1) === '}') { + spaceBefore = false; + indent++; + trimCode(); + } + } + if (value.substr(0, 1) === ")") { + if (code.substr(-1) !== '(' && code.trimRight().substr(-1) === '(') { + spaceBefore = false; + indent++; + trimCode(); + } + } + trimLine(); + } + else if ((token.type === "keyword.operator" || token.type === "keyword") && value.match(/^(=|==|===|!=|!==|&&|\|\||and|or|xor|\+=|.=|>|>=|<|<=|=>)$/)) { + trimCode(); + trimNext(); + spaceBefore = true; + spaceAfter = true; + } + else if (token.type === "punctuation.operator" && value === ';') { + trimCode(); + trimNext(); + spaceAfter = true; + if (inCSS) + rowsToAdd++; + } + else if (token.type === "punctuation.operator" && value.match(/^(:|,)$/)) { + trimCode(); + trimNext(); + if (value.match(/^(,)$/) && curlyDepth > 0 && roundDepth === 0 && formatOptions.lineBreaksAfterCommasInCurlyBlock) { + rowsToAdd++; + } + else { + spaceAfter = true; + breakBefore = false; + } + } + else if (token.type === "support.php_tag" && value === "?>" && !breakBefore) { + trimCode(); + spaceBefore = true; + } + else if (is(token, "attribute-name") && code.substr(-1).match(/^\s$/)) { + spaceBefore = true; + } + else if (is(token, "attribute-equals")) { + trimLine(); + trimNext(); + } + else if (is(token, "tag-close")) { + trimLine(); + if (value === "/>") + spaceBefore = true; + } + else if (token.type === "keyword" && value.match(/^(case|default)$/)) { + if (caseBody) + unindent = 1; + } + if (breakBefore && !(token.type.match(/^(comment)$/) && !value.substr(0, 1).match(/^[/#]$/)) && !(token.type.match(/^(string)$/) && !value.substr(0, 1).match(/^['"@]$/))) { + indent = lastIndent; + if (depth > lastDepth) { + indent++; + for (i = depth; i > lastDepth; i--) + levels[i] = indent; + } + else if (depth < lastDepth) + indent = levels[depth]; + lastDepth = depth; + lastIndent = indent; + if (unindent) + indent -= unindent; + if (indentNextLine && !roundDepth) { + indent++; + indentNextLine = false; + } + for (i = 0; i < indent; i++) + code += tabString; + } + if (token.type === "keyword" && value.match(/^(case|default)$/)) { + if (caseBody === false) { + parents[depth] = value; + depth++; + caseBody = true; + } + } + else if (token.type === "keyword" && value.match(/^(break)$/)) { + if (parents[depth - 1] && parents[depth - 1].match(/^(case|default)$/)) { + depth--; + caseBody = false; + } + } + if (token.type === "paren.lparen") { + roundDepth += (value.match(/\(/g) || []).length; + curlyDepth += (value.match(/\{/g) || []).length; + depth += value.length; + } + if (token.type === "keyword" && value.match(/^(if|else|elseif|for|while)$/)) { + indentNextLine = true; + roundDepth = 0; + } + else if (!roundDepth && value.trim() && token.type !== "comment") + indentNextLine = false; + if (token.type === "paren.rparen") { + roundDepth -= (value.match(/\)/g) || []).length; + curlyDepth -= (value.match(/\}/g) || []).length; + for (i = 0; i < value.length; i++) { + depth--; + if (value.substr(i, 1) === '}' && parents[depth] === 'case') { + depth--; + } + } + } + if (token.type == "text") + value = value.replace(/\s+$/, " "); + if (spaceBefore && !breakBefore) { + trimLine(); + if (code.substr(-1) !== "\n") + code += " "; + } + code += value; + if (spaceAfter) + code += " "; + breakBefore = false; + spaceBefore = false; + spaceAfter = false; + if ((is(token, "tag-close") && (inBlock || blockTags.indexOf(tagName) !== -1)) || (is(token, "doctype") && value === ">")) { + if (inBlock && nextToken && nextToken.value === "") { + depth--; + } + } + if (is(token, "tag-name")) { + tagName = value; + } + row = curRow; + } + } + token = nextToken; + } + code = code.trim(); + session.doc.setValue(code); +}; +exports.commands = [{ + name: "beautify", + description: "Format selection (Beautify)", + exec: function (editor) { + exports.beautify(editor.session); + }, + bindKey: "Ctrl-Shift-B" + }]; + +}); (function() { + ace.require(["ace/ext/beautify"], function(m) { + if ( true && module) { + module.exports = m; + } + }); + })(); + + +/***/ }), + +/***/ 604: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +/* module decorator */ module = __webpack_require__.nmd(module); +ace.define("ace/ext/searchbox-css",["require","exports","module"], function(require, exports, module){module.exports = "\n\n/* ------------------------------------------------------------------------------------------\n * Editor Search Form\n * --------------------------------------------------------------------------------------- */\n.ace_search {\n background-color: #ddd;\n color: #666;\n border: 1px solid #cbcbcb;\n border-top: 0 none;\n overflow: hidden;\n margin: 0;\n padding: 4px 6px 0 4px;\n position: absolute;\n top: 0;\n z-index: 99;\n white-space: normal;\n}\n.ace_search.left {\n border-left: 0 none;\n border-radius: 0px 0px 5px 0px;\n left: 0;\n}\n.ace_search.right {\n border-radius: 0px 0px 0px 5px;\n border-right: 0 none;\n right: 0;\n}\n\n.ace_search_form, .ace_replace_form {\n margin: 0 20px 4px 0;\n overflow: hidden;\n line-height: 1.9;\n}\n.ace_replace_form {\n margin-right: 0;\n}\n.ace_search_form.ace_nomatch {\n outline: 1px solid red;\n}\n\n.ace_search_field {\n border-radius: 3px 0 0 3px;\n background-color: white;\n color: black;\n border: 1px solid #cbcbcb;\n border-right: 0 none;\n outline: 0;\n padding: 0;\n font-size: inherit;\n margin: 0;\n line-height: inherit;\n padding: 0 6px;\n min-width: 17em;\n vertical-align: top;\n min-height: 1.8em;\n box-sizing: content-box;\n}\n.ace_searchbtn {\n border: 1px solid #cbcbcb;\n line-height: inherit;\n display: inline-block;\n padding: 0 6px;\n background: #fff;\n border-right: 0 none;\n border-left: 1px solid #dcdcdc;\n cursor: pointer;\n margin: 0;\n position: relative;\n color: #666;\n}\n.ace_searchbtn:last-child {\n border-radius: 0 3px 3px 0;\n border-right: 1px solid #cbcbcb;\n}\n.ace_searchbtn:disabled {\n background: none;\n cursor: default;\n}\n.ace_searchbtn:hover {\n background-color: #eef1f6;\n}\n.ace_searchbtn.prev, .ace_searchbtn.next {\n padding: 0px 0.7em\n}\n.ace_searchbtn.prev:after, .ace_searchbtn.next:after {\n content: \"\";\n border: solid 2px #888;\n width: 0.5em;\n height: 0.5em;\n border-width: 2px 0 0 2px;\n display:inline-block;\n transform: rotate(-45deg);\n}\n.ace_searchbtn.next:after {\n border-width: 0 2px 2px 0 ;\n}\n.ace_searchbtn_close {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAcCAYAAABRVo5BAAAAZ0lEQVR42u2SUQrAMAhDvazn8OjZBilCkYVVxiis8H4CT0VrAJb4WHT3C5xU2a2IQZXJjiQIRMdkEoJ5Q2yMqpfDIo+XY4k6h+YXOyKqTIj5REaxloNAd0xiKmAtsTHqW8sR2W5f7gCu5nWFUpVjZwAAAABJRU5ErkJggg==) no-repeat 50% 0;\n border-radius: 50%;\n border: 0 none;\n color: #656565;\n cursor: pointer;\n font: 16px/16px Arial;\n padding: 0;\n height: 14px;\n width: 14px;\n top: 9px;\n right: 7px;\n position: absolute;\n}\n.ace_searchbtn_close:hover {\n background-color: #656565;\n background-position: 50% 100%;\n color: white;\n}\n\n.ace_button {\n margin-left: 2px;\n cursor: pointer;\n -webkit-user-select: none;\n -moz-user-select: none;\n -o-user-select: none;\n -ms-user-select: none;\n user-select: none;\n overflow: hidden;\n opacity: 0.7;\n border: 1px solid rgba(100,100,100,0.23);\n padding: 1px;\n box-sizing: border-box!important;\n color: black;\n}\n\n.ace_button:hover {\n background-color: #eee;\n opacity:1;\n}\n.ace_button:active {\n background-color: #ddd;\n}\n\n.ace_button.checked {\n border-color: #3399ff;\n opacity:1;\n}\n\n.ace_search_options{\n margin-bottom: 3px;\n text-align: right;\n -webkit-user-select: none;\n -moz-user-select: none;\n -o-user-select: none;\n -ms-user-select: none;\n user-select: none;\n clear: both;\n}\n\n.ace_search_counter {\n float: left;\n font-family: arial;\n padding: 0 8px;\n}"; + +}); + +ace.define("ace/ext/searchbox",["require","exports","module","ace/lib/dom","ace/lib/lang","ace/lib/event","ace/ext/searchbox-css","ace/keyboard/hash_handler","ace/lib/keys","ace/config"], function(require, exports, module){"use strict"; +var dom = require("../lib/dom"); +var lang = require("../lib/lang"); +var event = require("../lib/event"); +var searchboxCss = require("./searchbox-css"); +var HashHandler = require("../keyboard/hash_handler").HashHandler; +var keyUtil = require("../lib/keys"); +var nls = require("../config").nls; +var MAX_COUNT = 999; +dom.importCssString(searchboxCss, "ace_searchbox", false); +var SearchBox = /** @class */ (function () { + function SearchBox(editor, range, showReplaceForm) { + var div = dom.createElement("div"); + dom.buildDom(["div", { class: "ace_search right" }, + ["span", { action: "hide", class: "ace_searchbtn_close" }], + ["div", { class: "ace_search_form" }, + ["input", { class: "ace_search_field", placeholder: nls("Search for"), spellcheck: "false" }], + ["span", { action: "findPrev", class: "ace_searchbtn prev" }, "\u200b"], + ["span", { action: "findNext", class: "ace_searchbtn next" }, "\u200b"], + ["span", { action: "findAll", class: "ace_searchbtn", title: "Alt-Enter" }, nls("All")] + ], + ["div", { class: "ace_replace_form" }, + ["input", { class: "ace_search_field", placeholder: nls("Replace with"), spellcheck: "false" }], + ["span", { action: "replaceAndFindNext", class: "ace_searchbtn" }, nls("Replace")], + ["span", { action: "replaceAll", class: "ace_searchbtn" }, nls("All")] + ], + ["div", { class: "ace_search_options" }, + ["span", { action: "toggleReplace", class: "ace_button", title: nls("Toggle Replace mode"), + style: "float:left;margin-top:-2px;padding:0 5px;" }, "+"], + ["span", { class: "ace_search_counter" }], + ["span", { action: "toggleRegexpMode", class: "ace_button", title: nls("RegExp Search") }, ".*"], + ["span", { action: "toggleCaseSensitive", class: "ace_button", title: nls("CaseSensitive Search") }, "Aa"], + ["span", { action: "toggleWholeWords", class: "ace_button", title: nls("Whole Word Search") }, "\\b"], + ["span", { action: "searchInSelection", class: "ace_button", title: nls("Search In Selection") }, "S"] + ] + ], div); + this.element = div.firstChild; + this.setSession = this.setSession.bind(this); + this.$init(); + this.setEditor(editor); + dom.importCssString(searchboxCss, "ace_searchbox", editor.container); + } + SearchBox.prototype.setEditor = function (editor) { + editor.searchBox = this; + editor.renderer.scroller.appendChild(this.element); + this.editor = editor; + }; + SearchBox.prototype.setSession = function (e) { + this.searchRange = null; + this.$syncOptions(true); + }; + SearchBox.prototype.$initElements = function (sb) { + this.searchBox = sb.querySelector(".ace_search_form"); + this.replaceBox = sb.querySelector(".ace_replace_form"); + this.searchOption = sb.querySelector("[action=searchInSelection]"); + this.replaceOption = sb.querySelector("[action=toggleReplace]"); + this.regExpOption = sb.querySelector("[action=toggleRegexpMode]"); + this.caseSensitiveOption = sb.querySelector("[action=toggleCaseSensitive]"); + this.wholeWordOption = sb.querySelector("[action=toggleWholeWords]"); + this.searchInput = this.searchBox.querySelector(".ace_search_field"); + this.replaceInput = this.replaceBox.querySelector(".ace_search_field"); + this.searchCounter = sb.querySelector(".ace_search_counter"); + }; + SearchBox.prototype.$init = function () { + var sb = this.element; + this.$initElements(sb); + var _this = this; + event.addListener(sb, "mousedown", function (e) { + setTimeout(function () { + _this.activeInput.focus(); + }, 0); + event.stopPropagation(e); + }); + event.addListener(sb, "click", function (e) { + var t = e.target || e.srcElement; + var action = t.getAttribute("action"); + if (action && _this[action]) + _this[action](); + else if (_this.$searchBarKb.commands[action]) + _this.$searchBarKb.commands[action].exec(_this); + event.stopPropagation(e); + }); + event.addCommandKeyListener(sb, function (e, hashId, keyCode) { + var keyString = keyUtil.keyCodeToString(keyCode); + var command = _this.$searchBarKb.findKeyCommand(hashId, keyString); + if (command && command.exec) { + command.exec(_this); + event.stopEvent(e); + } + }); + this.$onChange = lang.delayedCall(function () { + _this.find(false, false); + }); + event.addListener(this.searchInput, "input", function () { + _this.$onChange.schedule(20); + }); + event.addListener(this.searchInput, "focus", function () { + _this.activeInput = _this.searchInput; + _this.searchInput.value && _this.highlight(); + }); + event.addListener(this.replaceInput, "focus", function () { + _this.activeInput = _this.replaceInput; + _this.searchInput.value && _this.highlight(); + }); + }; + SearchBox.prototype.setSearchRange = function (range) { + this.searchRange = range; + if (range) { + this.searchRangeMarker = this.editor.session.addMarker(range, "ace_active-line"); + } + else if (this.searchRangeMarker) { + this.editor.session.removeMarker(this.searchRangeMarker); + this.searchRangeMarker = null; + } + }; + SearchBox.prototype.$syncOptions = function (preventScroll) { + dom.setCssClass(this.replaceOption, "checked", this.searchRange); + dom.setCssClass(this.searchOption, "checked", this.searchOption.checked); + this.replaceOption.textContent = this.replaceOption.checked ? "-" : "+"; + dom.setCssClass(this.regExpOption, "checked", this.regExpOption.checked); + dom.setCssClass(this.wholeWordOption, "checked", this.wholeWordOption.checked); + dom.setCssClass(this.caseSensitiveOption, "checked", this.caseSensitiveOption.checked); + var readOnly = this.editor.getReadOnly(); + this.replaceOption.style.display = readOnly ? "none" : ""; + this.replaceBox.style.display = this.replaceOption.checked && !readOnly ? "" : "none"; + this.find(false, false, preventScroll); + }; + SearchBox.prototype.highlight = function (re) { + this.editor.session.highlight(re || this.editor.$search.$options.re); + this.editor.renderer.updateBackMarkers(); + }; + SearchBox.prototype.find = function (skipCurrent, backwards, preventScroll) { + var range = this.editor.find(this.searchInput.value, { + skipCurrent: skipCurrent, + backwards: backwards, + wrap: true, + regExp: this.regExpOption.checked, + caseSensitive: this.caseSensitiveOption.checked, + wholeWord: this.wholeWordOption.checked, + preventScroll: preventScroll, + range: this.searchRange + }); + var noMatch = !range && this.searchInput.value; + dom.setCssClass(this.searchBox, "ace_nomatch", noMatch); + this.editor._emit("findSearchBox", { match: !noMatch }); + this.highlight(); + this.updateCounter(); + }; + SearchBox.prototype.updateCounter = function () { + var editor = this.editor; + var regex = editor.$search.$options.re; + var supportsUnicodeFlag = regex.unicode; + var all = 0; + var before = 0; + if (regex) { + var value = this.searchRange + ? editor.session.getTextRange(this.searchRange) + : editor.getValue(); + var offset = editor.session.doc.positionToIndex(editor.selection.anchor); + if (this.searchRange) + offset -= editor.session.doc.positionToIndex(this.searchRange.start); + var last = regex.lastIndex = 0; + var m; + while ((m = regex.exec(value))) { + all++; + last = m.index; + if (last <= offset) + before++; + if (all > MAX_COUNT) + break; + if (!m[0]) { + regex.lastIndex = last += lang.skipEmptyMatch(value, last, supportsUnicodeFlag); + if (last >= value.length) + break; + } + } + } + this.searchCounter.textContent = nls("$0 of $1", [before, (all > MAX_COUNT ? MAX_COUNT + "+" : all)]); + }; + SearchBox.prototype.findNext = function () { + this.find(true, false); + }; + SearchBox.prototype.findPrev = function () { + this.find(true, true); + }; + SearchBox.prototype.findAll = function () { + var range = this.editor.findAll(this.searchInput.value, { + regExp: this.regExpOption.checked, + caseSensitive: this.caseSensitiveOption.checked, + wholeWord: this.wholeWordOption.checked + }); + var noMatch = !range && this.searchInput.value; + dom.setCssClass(this.searchBox, "ace_nomatch", noMatch); + this.editor._emit("findSearchBox", { match: !noMatch }); + this.highlight(); + this.hide(); + }; + SearchBox.prototype.replace = function () { + if (!this.editor.getReadOnly()) + this.editor.replace(this.replaceInput.value); + }; + SearchBox.prototype.replaceAndFindNext = function () { + if (!this.editor.getReadOnly()) { + this.editor.replace(this.replaceInput.value); + this.findNext(); + } + }; + SearchBox.prototype.replaceAll = function () { + if (!this.editor.getReadOnly()) + this.editor.replaceAll(this.replaceInput.value); + }; + SearchBox.prototype.hide = function () { + this.active = false; + this.setSearchRange(null); + this.editor.off("changeSession", this.setSession); + this.element.style.display = "none"; + this.editor.keyBinding.removeKeyboardHandler(this.$closeSearchBarKb); + this.editor.focus(); + }; + SearchBox.prototype.show = function (value, isReplace) { + this.active = true; + this.editor.on("changeSession", this.setSession); + this.element.style.display = ""; + this.replaceOption.checked = isReplace; + if (value) + this.searchInput.value = value; + this.searchInput.focus(); + this.searchInput.select(); + this.editor.keyBinding.addKeyboardHandler(this.$closeSearchBarKb); + this.$syncOptions(true); + }; + SearchBox.prototype.isFocused = function () { + var el = document.activeElement; + return el == this.searchInput || el == this.replaceInput; + }; + return SearchBox; +}()); +var $searchBarKb = new HashHandler(); +$searchBarKb.bindKeys({ + "Ctrl-f|Command-f": function (sb) { + var isReplace = sb.isReplace = !sb.isReplace; + sb.replaceBox.style.display = isReplace ? "" : "none"; + sb.replaceOption.checked = false; + sb.$syncOptions(); + sb.searchInput.focus(); + }, + "Ctrl-H|Command-Option-F": function (sb) { + if (sb.editor.getReadOnly()) + return; + sb.replaceOption.checked = true; + sb.$syncOptions(); + sb.replaceInput.focus(); + }, + "Ctrl-G|Command-G": function (sb) { + sb.findNext(); + }, + "Ctrl-Shift-G|Command-Shift-G": function (sb) { + sb.findPrev(); + }, + "esc": function (sb) { + setTimeout(function () { sb.hide(); }); + }, + "Return": function (sb) { + if (sb.activeInput == sb.replaceInput) + sb.replace(); + sb.findNext(); + }, + "Shift-Return": function (sb) { + if (sb.activeInput == sb.replaceInput) + sb.replace(); + sb.findPrev(); + }, + "Alt-Return": function (sb) { + if (sb.activeInput == sb.replaceInput) + sb.replaceAll(); + sb.findAll(); + }, + "Tab": function (sb) { + (sb.activeInput == sb.replaceInput ? sb.searchInput : sb.replaceInput).focus(); + } +}); +$searchBarKb.addCommands([{ + name: "toggleRegexpMode", + bindKey: { win: "Alt-R|Alt-/", mac: "Ctrl-Alt-R|Ctrl-Alt-/" }, + exec: function (sb) { + sb.regExpOption.checked = !sb.regExpOption.checked; + sb.$syncOptions(); + } + }, { + name: "toggleCaseSensitive", + bindKey: { win: "Alt-C|Alt-I", mac: "Ctrl-Alt-R|Ctrl-Alt-I" }, + exec: function (sb) { + sb.caseSensitiveOption.checked = !sb.caseSensitiveOption.checked; + sb.$syncOptions(); + } + }, { + name: "toggleWholeWords", + bindKey: { win: "Alt-B|Alt-W", mac: "Ctrl-Alt-B|Ctrl-Alt-W" }, + exec: function (sb) { + sb.wholeWordOption.checked = !sb.wholeWordOption.checked; + sb.$syncOptions(); + } + }, { + name: "toggleReplace", + exec: function (sb) { + sb.replaceOption.checked = !sb.replaceOption.checked; + sb.$syncOptions(); + } + }, { + name: "searchInSelection", + exec: function (sb) { + sb.searchOption.checked = !sb.searchRange; + sb.setSearchRange(sb.searchOption.checked && sb.editor.getSelectionRange()); + sb.$syncOptions(); + } + }]); +var $closeSearchBarKb = new HashHandler([{ + bindKey: "Esc", + name: "closeSearchBar", + exec: function (editor) { + editor.searchBox.hide(); + } + }]); +SearchBox.prototype.$searchBarKb = $searchBarKb; +SearchBox.prototype.$closeSearchBarKb = $closeSearchBarKb; +exports.SearchBox = SearchBox; +exports.Search = function (editor, isReplace) { + var sb = editor.searchBox || new SearchBox(editor); + sb.show(editor.session.getTextRange(), isReplace); +}; + +}); (function() { + ace.require(["ace/ext/searchbox"], function(m) { + if ( true && module) { + module.exports = m; + } + }); + })(); + + +/***/ }), + +/***/ 549: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +/* module decorator */ module = __webpack_require__.nmd(module); +ace.define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var lang = require("../lib/lang"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; +var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; +var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|flex-end|flex-start|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom"; +var supportConstantColor = exports.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|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|green|greenyellow|grey|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|magenta|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|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen"; +var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; +var numRe = exports.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))"; +var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; +var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; +var CssHighlightRules = function () { + var keywordMapper = this.createKeywordMapper({ + "support.function": supportFunction, + "support.constant": supportConstant, + "support.type": supportType, + "support.constant.color": supportConstantColor, + "support.constant.fonts": supportConstantFonts + }, "text", true); + this.$rules = { + "start": [{ + include: ["strings", "url", "comments"] + }, { + token: "paren.lparen", + regex: "\\{", + next: "ruleset" + }, { + token: "paren.rparen", + regex: "\\}" + }, { + token: "string", + regex: "@(?!viewport)", + next: "media" + }, { + token: "keyword", + regex: "#[a-z0-9-_]+" + }, { + token: "keyword", + regex: "%" + }, { + token: "variable", + regex: "\\.[a-z0-9-_]+" + }, { + token: "string", + regex: ":[a-z0-9-_]+" + }, { + token: "constant.numeric", + regex: numRe + }, { + token: "constant", + regex: "[a-z0-9-_]+" + }, { + caseInsensitive: true + }], + "media": [{ + include: ["strings", "url", "comments"] + }, { + token: "paren.lparen", + regex: "\\{", + next: "start" + }, { + token: "paren.rparen", + regex: "\\}", + next: "start" + }, { + token: "string", + regex: ";", + next: "start" + }, { + token: "keyword", + regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" + + "|page|font|keyframes|viewport|counter-style|font-feature-values" + + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" + }], + "comments": [{ + token: "comment", + regex: "\\/\\*", + push: [{ + token: "comment", + regex: "\\*\\/", + next: "pop" + }, { + defaultToken: "comment" + }] + }], + "ruleset": [{ + regex: "-(webkit|ms|moz|o)-", + token: "text" + }, { + token: "punctuation.operator", + regex: "[:;]" + }, { + token: "paren.rparen", + regex: "\\}", + next: "start" + }, { + include: ["strings", "url", "comments"] + }, { + token: ["constant.numeric", "keyword"], + regex: "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)" + }, { + token: "constant.numeric", + regex: numRe + }, { + token: "constant.numeric", + regex: "#[a-f0-9]{6}" + }, { + token: "constant.numeric", + regex: "#[a-f0-9]{3}" + }, { + token: ["punctuation", "entity.other.attribute-name.pseudo-element.css"], + regex: pseudoElements + }, { + token: ["punctuation", "entity.other.attribute-name.pseudo-class.css"], + regex: pseudoClasses + }, { + include: "url" + }, { + token: keywordMapper, + regex: "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" + }, { + caseInsensitive: true + }], + url: [{ + token: "support.function", + regex: "(?:url(:?-prefix)?|domain|regexp)\\(", + push: [{ + token: "support.function", + regex: "\\)", + next: "pop" + }, { + defaultToken: "string" + }] + }], + strings: [{ + token: "string.start", + regex: "'", + push: [{ + token: "string.end", + regex: "'|$", + next: "pop" + }, { + include: "escapes" + }, { + token: "constant.language.escape", + regex: /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] + }, { + token: "string.start", + regex: '"', + push: [{ + token: "string.end", + regex: '"|$', + next: "pop" + }, { + include: "escapes" + }, { + token: "constant.language.escape", + regex: /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] + }], + escapes: [{ + token: "constant.language.escape", + regex: /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ + }] + }; + this.normalizeRules(); +}; +oop.inherits(CssHighlightRules, TextHighlightRules); +exports.CssHighlightRules = CssHighlightRules; + +}); + +ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; +var Range = require("../range").Range; +var MatchingBraceOutdent = function () { }; +(function () { + this.checkOutdent = function (line, input) { + if (!/^\s+$/.test(line)) + return false; + return /^\s*\}/.test(input); + }; + this.autoOutdent = function (doc, row) { + var line = doc.getLine(row); + var match = line.match(/^(\s*\})/); + if (!match) + return 0; + var column = match[1].length; + var openBracePos = doc.findMatchingBracket({ row: row, column: column }); + if (!openBracePos || openBracePos.row == row) + return 0; + var indent = this.$getIndent(doc.getLine(openBracePos.row)); + doc.replace(new Range(row, 0, row, column - 1), indent); + }; + this.$getIndent = function (line) { + return line.match(/^\s*/)[0]; + }; +}).call(MatchingBraceOutdent.prototype); +exports.MatchingBraceOutdent = MatchingBraceOutdent; + +}); + +ace.define("ace/mode/css_completions",["require","exports","module"], function(require, exports, module){"use strict"; +var propertyMap = { + "background": { "#$0": 1 }, + "background-color": { "#$0": 1, "transparent": 1, "fixed": 1 }, + "background-image": { "url('/$0')": 1 }, + "background-repeat": { "repeat": 1, "repeat-x": 1, "repeat-y": 1, "no-repeat": 1, "inherit": 1 }, + "background-position": { "bottom": 2, "center": 2, "left": 2, "right": 2, "top": 2, "inherit": 2 }, + "background-attachment": { "scroll": 1, "fixed": 1 }, + "background-size": { "cover": 1, "contain": 1 }, + "background-clip": { "border-box": 1, "padding-box": 1, "content-box": 1 }, + "background-origin": { "border-box": 1, "padding-box": 1, "content-box": 1 }, + "border": { "solid $0": 1, "dashed $0": 1, "dotted $0": 1, "#$0": 1 }, + "border-color": { "#$0": 1 }, + "border-style": { "solid": 2, "dashed": 2, "dotted": 2, "double": 2, "groove": 2, "hidden": 2, "inherit": 2, "inset": 2, "none": 2, "outset": 2, "ridged": 2 }, + "border-collapse": { "collapse": 1, "separate": 1 }, + "bottom": { "px": 1, "em": 1, "%": 1 }, + "clear": { "left": 1, "right": 1, "both": 1, "none": 1 }, + "color": { "#$0": 1, "rgb(#$00,0,0)": 1 }, + "cursor": { "default": 1, "pointer": 1, "move": 1, "text": 1, "wait": 1, "help": 1, "progress": 1, "n-resize": 1, "ne-resize": 1, "e-resize": 1, "se-resize": 1, "s-resize": 1, "sw-resize": 1, "w-resize": 1, "nw-resize": 1 }, + "display": { "none": 1, "block": 1, "inline": 1, "inline-block": 1, "table-cell": 1 }, + "empty-cells": { "show": 1, "hide": 1 }, + "float": { "left": 1, "right": 1, "none": 1 }, + "font-family": { "Arial": 2, "Comic Sans MS": 2, "Consolas": 2, "Courier New": 2, "Courier": 2, "Georgia": 2, "Monospace": 2, "Sans-Serif": 2, "Segoe UI": 2, "Tahoma": 2, "Times New Roman": 2, "Trebuchet MS": 2, "Verdana": 1 }, + "font-size": { "px": 1, "em": 1, "%": 1 }, + "font-weight": { "bold": 1, "normal": 1 }, + "font-style": { "italic": 1, "normal": 1 }, + "font-variant": { "normal": 1, "small-caps": 1 }, + "height": { "px": 1, "em": 1, "%": 1 }, + "left": { "px": 1, "em": 1, "%": 1 }, + "letter-spacing": { "normal": 1 }, + "line-height": { "normal": 1 }, + "list-style-type": { "none": 1, "disc": 1, "circle": 1, "square": 1, "decimal": 1, "decimal-leading-zero": 1, "lower-roman": 1, "upper-roman": 1, "lower-greek": 1, "lower-latin": 1, "upper-latin": 1, "georgian": 1, "lower-alpha": 1, "upper-alpha": 1 }, + "margin": { "px": 1, "em": 1, "%": 1 }, + "margin-right": { "px": 1, "em": 1, "%": 1 }, + "margin-left": { "px": 1, "em": 1, "%": 1 }, + "margin-top": { "px": 1, "em": 1, "%": 1 }, + "margin-bottom": { "px": 1, "em": 1, "%": 1 }, + "max-height": { "px": 1, "em": 1, "%": 1 }, + "max-width": { "px": 1, "em": 1, "%": 1 }, + "min-height": { "px": 1, "em": 1, "%": 1 }, + "min-width": { "px": 1, "em": 1, "%": 1 }, + "overflow": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 }, + "overflow-x": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 }, + "overflow-y": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 }, + "padding": { "px": 1, "em": 1, "%": 1 }, + "padding-top": { "px": 1, "em": 1, "%": 1 }, + "padding-right": { "px": 1, "em": 1, "%": 1 }, + "padding-bottom": { "px": 1, "em": 1, "%": 1 }, + "padding-left": { "px": 1, "em": 1, "%": 1 }, + "page-break-after": { "auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1 }, + "page-break-before": { "auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1 }, + "position": { "absolute": 1, "relative": 1, "fixed": 1, "static": 1 }, + "right": { "px": 1, "em": 1, "%": 1 }, + "table-layout": { "fixed": 1, "auto": 1 }, + "text-decoration": { "none": 1, "underline": 1, "line-through": 1, "blink": 1 }, + "text-align": { "left": 1, "right": 1, "center": 1, "justify": 1 }, + "text-transform": { "capitalize": 1, "uppercase": 1, "lowercase": 1, "none": 1 }, + "top": { "px": 1, "em": 1, "%": 1 }, + "vertical-align": { "top": 1, "bottom": 1 }, + "visibility": { "hidden": 1, "visible": 1 }, + "white-space": { "nowrap": 1, "normal": 1, "pre": 1, "pre-line": 1, "pre-wrap": 1 }, + "width": { "px": 1, "em": 1, "%": 1 }, + "word-spacing": { "normal": 1 }, + "filter": { "alpha(opacity=$0100)": 1 }, + "text-shadow": { "$02px 2px 2px #777": 1 }, + "text-overflow": { "ellipsis-word": 1, "clip": 1, "ellipsis": 1 }, + "-moz-border-radius": 1, + "-moz-border-radius-topright": 1, + "-moz-border-radius-bottomright": 1, + "-moz-border-radius-topleft": 1, + "-moz-border-radius-bottomleft": 1, + "-webkit-border-radius": 1, + "-webkit-border-top-right-radius": 1, + "-webkit-border-top-left-radius": 1, + "-webkit-border-bottom-right-radius": 1, + "-webkit-border-bottom-left-radius": 1, + "-moz-box-shadow": 1, + "-webkit-box-shadow": 1, + "transform": { "rotate($00deg)": 1, "skew($00deg)": 1 }, + "-moz-transform": { "rotate($00deg)": 1, "skew($00deg)": 1 }, + "-webkit-transform": { "rotate($00deg)": 1, "skew($00deg)": 1 } +}; +var CssCompletions = function () { +}; +(function () { + this.completionsDefined = false; + this.defineCompletions = function () { + if (document) { + var style = document.createElement('c').style; + for (var i in style) { + if (typeof style[i] !== 'string') + continue; + var name = i.replace(/[A-Z]/g, function (x) { + return '-' + x.toLowerCase(); + }); + if (!propertyMap.hasOwnProperty(name)) + propertyMap[name] = 1; + } + } + this.completionsDefined = true; + }; + this.getCompletions = function (state, session, pos, prefix) { + if (!this.completionsDefined) { + this.defineCompletions(); + } + if (state === 'ruleset' || session.$mode.$id == "ace/mode/scss") { + var line = session.getLine(pos.row).substr(0, pos.column); + var inParens = /\([^)]*$/.test(line); + if (inParens) { + line = line.substr(line.lastIndexOf('(') + 1); + } + if (/:[^;]+$/.test(line)) { + /([\w\-]+):[^:]*$/.test(line); + return this.getPropertyValueCompletions(state, session, pos, prefix); + } + else { + return this.getPropertyCompletions(state, session, pos, prefix, inParens); + } + } + return []; + }; + this.getPropertyCompletions = function (state, session, pos, prefix, skipSemicolon) { + skipSemicolon = skipSemicolon || false; + var properties = Object.keys(propertyMap); + return properties.map(function (property) { + return { + caption: property, + snippet: property + ': $0' + (skipSemicolon ? '' : ';'), + meta: "property", + score: 1000000 + }; + }); + }; + this.getPropertyValueCompletions = function (state, session, pos, prefix) { + var line = session.getLine(pos.row).substr(0, pos.column); + var property = (/([\w\-]+):[^:]*$/.exec(line) || {})[1]; + if (!property) + return []; + var values = []; + if (property in propertyMap && typeof propertyMap[property] === "object") { + values = Object.keys(propertyMap[property]); + } + return values.map(function (value) { + return { + caption: value, + snippet: value, + meta: "property value", + score: 1000000 + }; + }); + }; +}).call(CssCompletions.prototype); +exports.CssCompletions = CssCompletions; + +}); + +ace.define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var Behaviour = require("../behaviour").Behaviour; +var CstyleBehaviour = require("./cstyle").CstyleBehaviour; +var TokenIterator = require("../../token_iterator").TokenIterator; +var CssBehaviour = function () { + this.inherit(CstyleBehaviour); + this.add("colon", "insertion", function (state, action, editor, session, text) { + if (text === ':' && editor.selection.isEmpty()) { + var cursor = editor.getCursorPosition(); + var iterator = new TokenIterator(session, cursor.row, cursor.column); + var token = iterator.getCurrentToken(); + if (token && token.value.match(/\s+/)) { + token = iterator.stepBackward(); + } + if (token && token.type === 'support.type') { + var line = session.doc.getLine(cursor.row); + var rightChar = line.substring(cursor.column, cursor.column + 1); + if (rightChar === ':') { + return { + text: '', + selection: [1, 1] + }; + } + if (/^(\s+[^;]|\s*$)/.test(line.substring(cursor.column))) { + return { + text: ':;', + selection: [1, 1] + }; + } + } + } + }); + this.add("colon", "deletion", function (state, action, editor, session, range) { + var selected = session.doc.getTextRange(range); + if (!range.isMultiLine() && selected === ':') { + var cursor = editor.getCursorPosition(); + var iterator = new TokenIterator(session, cursor.row, cursor.column); + var token = iterator.getCurrentToken(); + if (token && token.value.match(/\s+/)) { + token = iterator.stepBackward(); + } + if (token && token.type === 'support.type') { + var line = session.doc.getLine(range.start.row); + var rightChar = line.substring(range.end.column, range.end.column + 1); + if (rightChar === ';') { + range.end.column++; + return range; + } + } + } + }); + this.add("semicolon", "insertion", function (state, action, editor, session, text) { + if (text === ';' && editor.selection.isEmpty()) { + var cursor = editor.getCursorPosition(); + var line = session.doc.getLine(cursor.row); + var rightChar = line.substring(cursor.column, cursor.column + 1); + if (rightChar === ';') { + return { + text: '', + selection: [1, 1] + }; + } + } + }); + this.add("!important", "insertion", function (state, action, editor, session, text) { + if (text === '!' && editor.selection.isEmpty()) { + var cursor = editor.getCursorPosition(); + var line = session.doc.getLine(cursor.row); + if (/^\s*(;|}|$)/.test(line.substring(cursor.column))) { + return { + text: '!important', + selection: [10, 10] + }; + } + } + }); +}; +oop.inherits(CssBehaviour, CstyleBehaviour); +exports.CssBehaviour = CssBehaviour; + +}); + +ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var Range = require("../../range").Range; +var BaseFoldMode = require("./fold_mode").FoldMode; +var FoldMode = exports.FoldMode = function (commentRegex) { + if (commentRegex) { + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); + } +}; +oop.inherits(FoldMode, BaseFoldMode); +(function () { + this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; + this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; + this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; + this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; + this._getFoldWidgetBase = this.getFoldWidget; + this.getFoldWidget = function (session, foldStyle, row) { + var line = session.getLine(row); + if (this.singleLineBlockCommentRe.test(line)) { + if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) + return ""; + } + var fw = this._getFoldWidgetBase(session, foldStyle, row); + if (!fw && this.startRegionRe.test(line)) + return "start"; // lineCommentRegionStart + return fw; + }; + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { + var line = session.getLine(row); + if (this.startRegionRe.test(line)) + return this.getCommentRegionBlock(session, line, row); + var match = line.match(this.foldingStartMarker); + if (match) { + var i = match.index; + if (match[1]) + return this.openingBracketBlock(session, match[1], row, i); + var range = session.getCommentFoldRange(row, i + match[0].length, 1); + if (range && !range.isMultiLine()) { + if (forceMultiline) { + range = this.getSectionRange(session, row); + } + else if (foldStyle != "all") + range = null; + } + return range; + } + if (foldStyle === "markbegin") + return; + var match = line.match(this.foldingStopMarker); + if (match) { + var i = match.index + match[0].length; + if (match[1]) + return this.closingBracketBlock(session, match[1], row, i); + return session.getCommentFoldRange(row, i, -1); + } + }; + this.getSectionRange = function (session, row) { + var line = session.getLine(row); + var startIndent = line.search(/\S/); + var startRow = row; + var startColumn = line.length; + row = row + 1; + var endRow = row; + var maxRow = session.getLength(); + while (++row < maxRow) { + line = session.getLine(row); + var indent = line.search(/\S/); + if (indent === -1) + continue; + if (startIndent > indent) + break; + var subRange = this.getFoldWidgetRange(session, "all", row); + if (subRange) { + if (subRange.start.row <= startRow) { + break; + } + else if (subRange.isMultiLine()) { + row = subRange.end.row; + } + else if (startIndent == indent) { + break; + } + } + endRow = row; + } + return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); + }; + this.getCommentRegionBlock = function (session, line, row) { + var startColumn = line.search(/\s*$/); + var maxRow = session.getLength(); + var startRow = row; + var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; + var depth = 1; + while (++row < maxRow) { + line = session.getLine(row); + var m = re.exec(line); + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; + } + var endRow = row; + if (endRow > startRow) { + return new Range(startRow, startColumn, endRow, line.length); + } + }; +}).call(FoldMode.prototype); + +}); + +ace.define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; +var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; +var WorkerClient = require("../worker/worker_client").WorkerClient; +var CssCompletions = require("./css_completions").CssCompletions; +var CssBehaviour = require("./behaviour/css").CssBehaviour; +var CStyleFoldMode = require("./folding/cstyle").FoldMode; +var Mode = function () { + this.HighlightRules = CssHighlightRules; + this.$outdent = new MatchingBraceOutdent(); + this.$behaviour = new CssBehaviour(); + this.$completer = new CssCompletions(); + this.foldingRules = new CStyleFoldMode(); +}; +oop.inherits(Mode, TextMode); +(function () { + this.foldingRules = "cStyle"; + this.blockComment = { start: "/*", end: "*/" }; + this.getNextLineIndent = function (state, line, tab) { + var indent = this.$getIndent(line); + var tokens = this.getTokenizer().getLineTokens(line, state).tokens; + if (tokens.length && tokens[tokens.length - 1].type == "comment") { + return indent; + } + var match = line.match(/^.*\{\s*$/); + if (match) { + indent += tab; + } + return indent; + }; + this.checkOutdent = function (state, line, input) { + return this.$outdent.checkOutdent(line, input); + }; + this.autoOutdent = function (state, doc, row) { + this.$outdent.autoOutdent(doc, row); + }; + this.getCompletions = function (state, session, pos, prefix) { + return this.$completer.getCompletions(state, session, pos, prefix); + }; + this.createWorker = function (session) { + var worker = new WorkerClient(["ace"], "ace/mode/css_worker", "Worker"); + worker.attachToDocument(session.getDocument()); + worker.on("annotate", function (e) { + session.setAnnotations(e.data); + }); + worker.on("terminate", function () { + session.clearAnnotations(); + }); + return worker; + }; + this.$id = "ace/mode/css"; + this.snippetFileId = "ace/snippets/css"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); (function() { + ace.require(["ace/mode/css"], function(m) { + if ( true && module) { + module.exports = m; + } + }); + })(); + + +/***/ }), + +/***/ 576: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +/* module decorator */ module = __webpack_require__.nmd(module); +ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var DocCommentHighlightRules = function () { + this.$rules = { + "start": [ + { + token: "comment.doc.tag", + regex: "@\\w+(?=\\s|$)" + }, DocCommentHighlightRules.getTagRule(), { + defaultToken: "comment.doc", + caseInsensitive: true + } + ] + }; +}; +oop.inherits(DocCommentHighlightRules, TextHighlightRules); +DocCommentHighlightRules.getTagRule = function (start) { + return { + token: "comment.doc.tag.storage.type", + regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b" + }; +}; +DocCommentHighlightRules.getStartRule = function (start) { + return { + token: "comment.doc", + regex: "\\/\\*(?=\\*)", + next: start + }; +}; +DocCommentHighlightRules.getEndRule = function (start) { + return { + token: "comment.doc", + regex: "\\*\\/", + next: start + }; +}; +exports.DocCommentHighlightRules = DocCommentHighlightRules; + +}); + +ace.define("ace/mode/golang_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module){var oop = require("../lib/oop"); +var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var GolangHighlightRules = function () { + var keywords = ("else|break|case|return|goto|if|const|select|" + + "continue|struct|default|switch|for|range|" + + "func|import|package|chan|defer|fallthrough|go|interface|map|range|" + + "select|type|var"); + var builtinTypes = ("string|uint8|uint16|uint32|uint64|int8|int16|int32|int64|float32|" + + "float64|complex64|complex128|byte|rune|uint|int|uintptr|bool|error"); + var builtinFunctions = ("new|close|cap|copy|panic|panicln|print|println|len|make|delete|real|recover|imag|append"); + var builtinConstants = ("nil|true|false|iota"); + var keywordMapper = this.createKeywordMapper({ + "keyword": keywords, + "constant.language": builtinConstants, + "support.function": builtinFunctions, + "support.type": builtinTypes + }, ""); + var stringEscapeRe = "\\\\(?:[0-7]{3}|x\\h{2}|u{4}|U\\h{6}|[abfnrtv'\"\\\\])".replace(/\\h/g, "[a-fA-F\\d]"); + this.$rules = { + "start": [ + { + token: "comment", + regex: "\\/\\/.*$" + }, + DocCommentHighlightRules.getStartRule("doc-start"), + { + token: "comment.start", + regex: "\\/\\*", + next: "comment" + }, { + token: "string", + regex: /"(?:[^"\\]|\\.)*?"/ + }, { + token: "string", + regex: '`', + next: "bqstring" + }, { + token: "constant.numeric", + regex: "'(?:[^\\'\uD800-\uDBFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|" + stringEscapeRe.replace('"', '') + ")'" + }, { + token: "constant.numeric", + regex: "0[xX][0-9a-fA-F]+\\b" + }, { + token: "constant.numeric", + regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" + }, { + token: ["keyword", "text", "entity.name.function"], + regex: "(func)(\\s+)([a-zA-Z_$][a-zA-Z0-9_$]*)\\b" + }, { + token: function (val) { + if (val[val.length - 1] == "(") { + return [{ + type: keywordMapper(val.slice(0, -1)) || "support.function", + value: val.slice(0, -1) + }, { + type: "paren.lparen", + value: val.slice(-1) + }]; + } + return keywordMapper(val) || "identifier"; + }, + regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b\\(?" + }, { + token: "keyword.operator", + regex: "!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|==|=|!=|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=" + }, { + token: "punctuation.operator", + regex: "\\?|\\:|\\,|\\;|\\." + }, { + token: "paren.lparen", + regex: "[[({]" + }, { + token: "paren.rparen", + regex: "[\\])}]" + }, { + token: "text", + regex: "\\s+" + } + ], + "comment": [ + { + token: "comment.end", + regex: "\\*\\/", + next: "start" + }, { + defaultToken: "comment" + } + ], + "bqstring": [ + { + token: "string", + regex: '`', + next: "start" + }, { + defaultToken: "string" + } + ] + }; + this.embedRules(DocCommentHighlightRules, "doc-", [DocCommentHighlightRules.getEndRule("start")]); +}; +oop.inherits(GolangHighlightRules, TextHighlightRules); +exports.GolangHighlightRules = GolangHighlightRules; + +}); + +ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; +var Range = require("../range").Range; +var MatchingBraceOutdent = function () { }; +(function () { + this.checkOutdent = function (line, input) { + if (!/^\s+$/.test(line)) + return false; + return /^\s*\}/.test(input); + }; + this.autoOutdent = function (doc, row) { + var line = doc.getLine(row); + var match = line.match(/^(\s*\})/); + if (!match) + return 0; + var column = match[1].length; + var openBracePos = doc.findMatchingBracket({ row: row, column: column }); + if (!openBracePos || openBracePos.row == row) + return 0; + var indent = this.$getIndent(doc.getLine(openBracePos.row)); + doc.replace(new Range(row, 0, row, column - 1), indent); + }; + this.$getIndent = function (line) { + return line.match(/^\s*/)[0]; + }; +}).call(MatchingBraceOutdent.prototype); +exports.MatchingBraceOutdent = MatchingBraceOutdent; + +}); + +ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var Range = require("../../range").Range; +var BaseFoldMode = require("./fold_mode").FoldMode; +var FoldMode = exports.FoldMode = function (commentRegex) { + if (commentRegex) { + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); + } +}; +oop.inherits(FoldMode, BaseFoldMode); +(function () { + this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; + this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; + this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; + this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; + this._getFoldWidgetBase = this.getFoldWidget; + this.getFoldWidget = function (session, foldStyle, row) { + var line = session.getLine(row); + if (this.singleLineBlockCommentRe.test(line)) { + if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) + return ""; + } + var fw = this._getFoldWidgetBase(session, foldStyle, row); + if (!fw && this.startRegionRe.test(line)) + return "start"; // lineCommentRegionStart + return fw; + }; + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { + var line = session.getLine(row); + if (this.startRegionRe.test(line)) + return this.getCommentRegionBlock(session, line, row); + var match = line.match(this.foldingStartMarker); + if (match) { + var i = match.index; + if (match[1]) + return this.openingBracketBlock(session, match[1], row, i); + var range = session.getCommentFoldRange(row, i + match[0].length, 1); + if (range && !range.isMultiLine()) { + if (forceMultiline) { + range = this.getSectionRange(session, row); + } + else if (foldStyle != "all") + range = null; + } + return range; + } + if (foldStyle === "markbegin") + return; + var match = line.match(this.foldingStopMarker); + if (match) { + var i = match.index + match[0].length; + if (match[1]) + return this.closingBracketBlock(session, match[1], row, i); + return session.getCommentFoldRange(row, i, -1); + } + }; + this.getSectionRange = function (session, row) { + var line = session.getLine(row); + var startIndent = line.search(/\S/); + var startRow = row; + var startColumn = line.length; + row = row + 1; + var endRow = row; + var maxRow = session.getLength(); + while (++row < maxRow) { + line = session.getLine(row); + var indent = line.search(/\S/); + if (indent === -1) + continue; + if (startIndent > indent) + break; + var subRange = this.getFoldWidgetRange(session, "all", row); + if (subRange) { + if (subRange.start.row <= startRow) { + break; + } + else if (subRange.isMultiLine()) { + row = subRange.end.row; + } + else if (startIndent == indent) { + break; + } + } + endRow = row; + } + return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); + }; + this.getCommentRegionBlock = function (session, line, row) { + var startColumn = line.search(/\s*$/); + var maxRow = session.getLength(); + var startRow = row; + var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; + var depth = 1; + while (++row < maxRow) { + line = session.getLine(row); + var m = re.exec(line); + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; + } + var endRow = row; + if (endRow > startRow) { + return new Range(startRow, startColumn, endRow, line.length); + } + }; +}).call(FoldMode.prototype); + +}); + +ace.define("ace/mode/golang",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/golang_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/folding/cstyle"], function(require, exports, module){var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var GolangHighlightRules = require("./golang_highlight_rules").GolangHighlightRules; +var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; +var CStyleFoldMode = require("./folding/cstyle").FoldMode; +var Mode = function () { + this.HighlightRules = GolangHighlightRules; + this.$outdent = new MatchingBraceOutdent(); + this.foldingRules = new CStyleFoldMode(); + this.$behaviour = this.$defaultBehaviour; +}; +oop.inherits(Mode, TextMode); +(function () { + this.lineCommentStart = "//"; + this.blockComment = { start: "/*", end: "*/" }; + this.getNextLineIndent = function (state, line, tab) { + var indent = this.$getIndent(line); + var tokenizedLine = this.getTokenizer().getLineTokens(line, state); + var tokens = tokenizedLine.tokens; + var endState = tokenizedLine.state; + if (tokens.length && tokens[tokens.length - 1].type == "comment") { + return indent; + } + if (state == "start") { + var match = line.match(/^.*[\{\(\[]\s*$/); + if (match) { + indent += tab; + } + } + return indent; + }; //end getNextLineIndent + this.checkOutdent = function (state, line, input) { + return this.$outdent.checkOutdent(line, input); + }; + this.autoOutdent = function (state, doc, row) { + this.$outdent.autoOutdent(doc, row); + }; + this.$id = "ace/mode/golang"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); (function() { + ace.require(["ace/mode/golang"], function(m) { + if ( true && module) { + module.exports = m; + } + }); + })(); + + +/***/ }), + +/***/ 395: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +/* module decorator */ module = __webpack_require__.nmd(module); +ace.define("ace/mode/jsdoc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var JsDocCommentHighlightRules = function () { + this.$rules = { + "start": [ + { + token: ["comment.doc.tag", "comment.doc.text", "lparen.doc"], + regex: "(@(?:param|member|typedef|property|namespace|var|const|callback))(\\s*)({)", + push: [ + { + token: "lparen.doc", + regex: "{", + push: [ + { + include: "doc-syntax" + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + } + ] + }, { + token: ["rparen.doc", "text.doc", "variable.parameter.doc", "lparen.doc", "variable.parameter.doc", "rparen.doc"], + regex: /(})(\s*)(?:([\w=:\/\.]+)|(?:(\[)([\w=:\/\.]+)(\])))/, + next: "pop" + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + }, { + include: "doc-syntax" + }, { + defaultToken: "text.doc" + } + ] + }, { + token: ["comment.doc.tag", "text.doc", "lparen.doc"], + regex: "(@(?:returns?|yields|type|this|suppress|public|protected|private|package|modifies|" + + "implements|external|exception|throws|enum|define|extends))(\\s*)({)", + push: [ + { + token: "lparen.doc", + regex: "{", + push: [ + { + include: "doc-syntax" + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + } + ] + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + }, { + include: "doc-syntax" + }, { + defaultToken: "text.doc" + } + ] + }, { + token: ["comment.doc.tag", "text.doc", "variable.parameter.doc"], + regex: "(@(?:alias|memberof|instance|module|name|lends|namespace|external|this|template|" + + "requires|param|implements|function|extends|typedef|mixes|constructor|var|" + + "memberof\\!|event|listens|exports|class|constructs|interface|emits|fires|" + + "throws|const|callback|borrows|augments))(\\s+)(\\w[\\w#\.:\/~\"\\-]*)?" + }, { + token: ["comment.doc.tag", "text.doc", "variable.parameter.doc"], + regex: "(@method)(\\s+)(\\w[\\w\.\\(\\)]*)" + }, { + token: "comment.doc.tag", + regex: "@access\\s+(?:private|public|protected)" + }, { + token: "comment.doc.tag", + regex: "@kind\\s+(?:class|constant|event|external|file|function|member|mixin|module|namespace|typedef)" + }, { + token: "comment.doc.tag", + regex: "@\\w+(?=\\s|$)" + }, + JsDocCommentHighlightRules.getTagRule(), + { + defaultToken: "comment.doc", + caseInsensitive: true + } + ], + "doc-syntax": [{ + token: "operator.doc", + regex: /[|:]/ + }, { + token: "paren.doc", + regex: /[\[\]]/ + }] + }; + this.normalizeRules(); +}; +oop.inherits(JsDocCommentHighlightRules, TextHighlightRules); +JsDocCommentHighlightRules.getTagRule = function (start) { + return { + token: "comment.doc.tag.storage.type", + regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b" + }; +}; +JsDocCommentHighlightRules.getStartRule = function (start) { + return { + token: "comment.doc", + regex: "\\/\\*(?=\\*)", + next: start + }; +}; +JsDocCommentHighlightRules.getEndRule = function (start) { + return { + token: "comment.doc", + regex: "\\*\\/", + next: start + }; +}; +exports.JsDocCommentHighlightRules = JsDocCommentHighlightRules; + +}); + +ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/jsdoc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var DocCommentHighlightRules = require("./jsdoc_comment_highlight_rules").JsDocCommentHighlightRules; +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*"; +var JavaScriptHighlightRules = function (options) { + var keywordMapper = this.createKeywordMapper({ + "variable.language": "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Symbol|" + // Constructors + "Namespace|QName|XML|XMLList|" + // E4X + "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + + "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + + "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors + "SyntaxError|TypeError|URIError|" + + "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions + "isNaN|parseFloat|parseInt|" + + "JSON|Math|" + // Other + "this|arguments|prototype|window|document", + "keyword": "const|yield|import|get|set|async|await|" + + "break|case|catch|continue|default|delete|do|else|finally|for|function|" + + "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + + "__parent__|__count__|escape|unescape|with|__proto__|" + + "class|enum|extends|super|export|implements|private|public|interface|package|protected|static|constructor", + "storage.type": "const|let|var|function", + "constant.language": "null|Infinity|NaN|undefined", + "support.function": "alert", + "constant.language.boolean": "true|false" + }, "identifier"); + var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void"; + var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex + "u[0-9a-fA-F]{4}|" + // unicode + "u{[0-9a-fA-F]{1,6}}|" + // es6 unicode + "[0-2][0-7]{0,2}|" + // oct + "3[0-7][0-7]?|" + // oct + "[4-7][0-7]?|" + //oct + ".)"; + this.$rules = { + "no_regex": [ + DocCommentHighlightRules.getStartRule("doc-start"), + comments("no_regex"), + { + token: "string", + regex: "'(?=.)", + next: "qstring" + }, { + token: "string", + regex: '"(?=.)', + next: "qqstring" + }, { + token: "constant.numeric", + regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ + }, { + token: "constant.numeric", + regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ + }, { + token: [ + "storage.type", "punctuation.operator", "support.function", + "punctuation.operator", "entity.name.function", "text", "keyword.operator" + ], + regex: "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe + ")(\\s*)(=)", + next: "function_arguments" + }, { + token: [ + "storage.type", "punctuation.operator", "entity.name.function", "text", + "keyword.operator", "text", "storage.type", "text", "paren.lparen" + ], + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s*)(\\()", + next: "function_arguments" + }, { + token: [ + "entity.name.function", "text", "keyword.operator", "text", "storage.type", + "text", "paren.lparen" + ], + regex: "(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s*)(\\()", + next: "function_arguments" + }, { + token: [ + "storage.type", "punctuation.operator", "entity.name.function", "text", + "keyword.operator", "text", + "storage.type", "text", "entity.name.function", "text", "paren.lparen" + ], + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s+)(\\w+)(\\s*)(\\()", + next: "function_arguments" + }, { + token: [ + "storage.type", "text", "entity.name.function", "text", "paren.lparen" + ], + regex: "(function\\*?)(\\s+)(" + identifierRe + ")(\\s*)(\\()", + next: "function_arguments" + }, { + token: [ + "entity.name.function", "text", "punctuation.operator", + "text", "storage.type", "text", "paren.lparen" + ], + regex: "(" + identifierRe + ")(\\s*)(:)(\\s*)(function\\*?)(\\s*)(\\()", + next: "function_arguments" + }, { + token: [ + "text", "text", "storage.type", "text", "paren.lparen" + ], + regex: "(:)(\\s*)(function\\*?)(\\s*)(\\()", + next: "function_arguments" + }, { + token: "keyword", + regex: "from(?=\\s*('|\"))" + }, { + token: "keyword", + regex: "(?:" + kwBeforeRe + ")\\b", + next: "start" + }, { + token: "support.constant", + regex: /that\b/ + }, { + token: ["storage.type", "punctuation.operator", "support.function.firebug"], + regex: /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/ + }, { + token: keywordMapper, + regex: identifierRe + }, { + token: "punctuation.operator", + regex: /[.](?![.])/, + next: "property" + }, { + token: "storage.type", + regex: /=>/, + next: "start" + }, { + token: "keyword.operator", + regex: /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, + next: "start" + }, { + token: "punctuation.operator", + regex: /[?:,;.]/, + next: "start" + }, { + token: "paren.lparen", + regex: /[\[({]/, + next: "start" + }, { + token: "paren.rparen", + regex: /[\])}]/ + }, { + token: "comment", + regex: /^#!.*$/ + } + ], + property: [{ + token: "text", + regex: "\\s+" + }, { + token: [ + "storage.type", "punctuation.operator", "entity.name.function", "text", + "keyword.operator", "text", + "storage.type", "text", "entity.name.function", "text", "paren.lparen" + ], + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(?:(\\s+)(\\w+))?(\\s*)(\\()", + next: "function_arguments" + }, { + token: "punctuation.operator", + regex: /[.](?![.])/ + }, { + token: "support.function", + regex: /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|lter|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward|rEach)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ + }, { + token: "support.function.dom", + regex: /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ + }, { + token: "support.constant", + regex: /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ + }, { + token: "identifier", + regex: identifierRe + }, { + regex: "", + token: "empty", + next: "no_regex" + } + ], + "start": [ + DocCommentHighlightRules.getStartRule("doc-start"), + comments("start"), + { + token: "string.regexp", + regex: "\\/", + next: "regex" + }, { + token: "text", + regex: "\\s+|^$", + next: "start" + }, { + token: "empty", + regex: "", + next: "no_regex" + } + ], + "regex": [ + { + token: "regexp.keyword.operator", + regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" + }, { + token: "string.regexp", + regex: "/[sxngimy]*", + next: "no_regex" + }, { + token: "invalid", + regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ + }, { + token: "constant.language.escape", + regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ + }, { + token: "constant.language.delimiter", + regex: /\|/ + }, { + token: "constant.language.escape", + regex: /\[\^?/, + next: "regex_character_class" + }, { + token: "empty", + regex: "$", + next: "no_regex" + }, { + defaultToken: "string.regexp" + } + ], + "regex_character_class": [ + { + token: "regexp.charclass.keyword.operator", + regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" + }, { + token: "constant.language.escape", + regex: "]", + next: "regex" + }, { + token: "constant.language.escape", + regex: "-" + }, { + token: "empty", + regex: "$", + next: "no_regex" + }, { + defaultToken: "string.regexp.charachterclass" + } + ], + "default_parameter": [ + { + token: "string", + regex: "'(?=.)", + push: [ + { + token: "string", + regex: "'|$", + next: "pop" + }, { + include: "qstring" + } + ] + }, { + token: "string", + regex: '"(?=.)', + push: [ + { + token: "string", + regex: '"|$', + next: "pop" + }, { + include: "qqstring" + } + ] + }, { + token: "constant.language", + regex: "null|Infinity|NaN|undefined" + }, { + token: "constant.numeric", + regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ + }, { + token: "constant.numeric", + regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ + }, { + token: "punctuation.operator", + regex: ",", + next: "function_arguments" + }, { + token: "text", + regex: "\\s+" + }, { + token: "punctuation.operator", + regex: "$" + }, { + token: "empty", + regex: "", + next: "no_regex" + } + ], + "function_arguments": [ + comments("function_arguments"), + { + token: "variable.parameter", + regex: identifierRe + }, { + token: "punctuation.operator", + regex: "," + }, { + token: "text", + regex: "\\s+" + }, { + token: "punctuation.operator", + regex: "$" + }, { + token: "empty", + regex: "", + next: "no_regex" + } + ], + "qqstring": [ + { + token: "constant.language.escape", + regex: escapedRe + }, { + token: "string", + regex: "\\\\$", + consumeLineEnd: true + }, { + token: "string", + regex: '"|$', + next: "no_regex" + }, { + defaultToken: "string" + } + ], + "qstring": [ + { + token: "constant.language.escape", + regex: escapedRe + }, { + token: "string", + regex: "\\\\$", + consumeLineEnd: true + }, { + token: "string", + regex: "'|$", + next: "no_regex" + }, { + defaultToken: "string" + } + ] + }; + if (!options || !options.noES6) { + this.$rules.no_regex.unshift({ + regex: "[{}]", onMatch: function (val, state, stack) { + this.next = val == "{" ? this.nextState : ""; + if (val == "{" && stack.length) { + stack.unshift("start", state); + } + else if (val == "}" && stack.length) { + stack.shift(); + this.next = stack.shift(); + if (this.next.indexOf("string") != -1 || this.next.indexOf("jsx") != -1) + return "paren.quasi.end"; + } + return val == "{" ? "paren.lparen" : "paren.rparen"; + }, + nextState: "start" + }, { + token: "string.quasi.start", + regex: /`/, + push: [{ + token: "constant.language.escape", + regex: escapedRe + }, { + token: "paren.quasi.start", + regex: /\${/, + push: "start" + }, { + token: "string.quasi.end", + regex: /`/, + next: "pop" + }, { + defaultToken: "string.quasi" + }] + }, { + token: ["variable.parameter", "text"], + regex: "(" + identifierRe + ")(\\s*)(?=\\=>)" + }, { + token: "paren.lparen", + regex: "(\\()(?=.+\\s*=>)", + next: "function_arguments" + }, { + token: "variable.language", + regex: "(?:(?:(?:Weak)?(?:Set|Map))|Promise)\\b" + }); + this.$rules["function_arguments"].unshift({ + token: "keyword.operator", + regex: "=", + next: "default_parameter" + }, { + token: "keyword.operator", + regex: "\\.{3}" + }); + this.$rules["property"].unshift({ + token: "support.function", + regex: "(findIndex|repeat|startsWith|endsWith|includes|isSafeInteger|trunc|cbrt|log2|log10|sign|then|catch|" + + "finally|resolve|reject|race|any|all|allSettled|keys|entries|isInteger)\\b(?=\\()" + }, { + token: "constant.language", + regex: "(?:MAX_SAFE_INTEGER|MIN_SAFE_INTEGER|EPSILON)\\b" + }); + if (!options || options.jsx != false) + JSX.call(this); + } + this.embedRules(DocCommentHighlightRules, "doc-", [DocCommentHighlightRules.getEndRule("no_regex")]); + this.normalizeRules(); +}; +oop.inherits(JavaScriptHighlightRules, TextHighlightRules); +function JSX() { + var tagRegex = identifierRe.replace("\\d", "\\d\\-"); + var jsxTag = { + onMatch: function (val, state, stack) { + var offset = val.charAt(1) == "/" ? 2 : 1; + if (offset == 1) { + if (state != this.nextState) + stack.unshift(this.next, this.nextState, 0); + else + stack.unshift(this.next); + stack[2]++; + } + else if (offset == 2) { + if (state == this.nextState) { + stack[1]--; + if (!stack[1] || stack[1] < 0) { + stack.shift(); + stack.shift(); + } + } + } + return [{ + type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", + value: val.slice(0, offset) + }, { + type: "meta.tag.tag-name.xml", + value: val.substr(offset) + }]; + }, + regex: "", + onMatch: function (value, currentState, stack) { + if (currentState == stack[0]) + stack.shift(); + if (value.length == 2) { + if (stack[0] == this.nextState) + stack[1]--; + if (!stack[1] || stack[1] < 0) { + stack.splice(0, 2); + } + } + this.next = stack[0] || "start"; + return [{ type: this.token, value: value }]; + }, + nextState: "jsx" + }, + jsxJsRule, + comments("jsxAttributes"), + { + token: "entity.other.attribute-name.xml", + regex: tagRegex + }, { + token: "keyword.operator.attribute-equals.xml", + regex: "=" + }, { + token: "text.tag-whitespace.xml", + regex: "\\s+" + }, { + token: "string.attribute-value.xml", + regex: "'", + stateName: "jsx_attr_q", + push: [ + { token: "string.attribute-value.xml", regex: "'", next: "pop" }, + { include: "reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, { + token: "string.attribute-value.xml", + regex: '"', + stateName: "jsx_attr_qq", + push: [ + { token: "string.attribute-value.xml", regex: '"', next: "pop" }, + { include: "reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, + jsxTag + ]; + this.$rules.reference = [{ + token: "constant.language.escape.reference.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }]; +} +function comments(next) { + return [ + { + token: "comment", + regex: /\/\*/, + next: [ + DocCommentHighlightRules.getTagRule(), + { token: "comment", regex: "\\*\\/", next: next || "pop" }, + { defaultToken: "comment", caseInsensitive: true } + ] + }, { + token: "comment", + regex: "\\/\\/", + next: [ + DocCommentHighlightRules.getTagRule(), + { token: "comment", regex: "$|^", next: next || "pop" }, + { defaultToken: "comment", caseInsensitive: true } + ] + } + ]; +} +exports.JavaScriptHighlightRules = JavaScriptHighlightRules; + +}); + +ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; +var Range = require("../range").Range; +var MatchingBraceOutdent = function () { }; +(function () { + this.checkOutdent = function (line, input) { + if (!/^\s+$/.test(line)) + return false; + return /^\s*\}/.test(input); + }; + this.autoOutdent = function (doc, row) { + var line = doc.getLine(row); + var match = line.match(/^(\s*\})/); + if (!match) + return 0; + var column = match[1].length; + var openBracePos = doc.findMatchingBracket({ row: row, column: column }); + if (!openBracePos || openBracePos.row == row) + return 0; + var indent = this.$getIndent(doc.getLine(openBracePos.row)); + doc.replace(new Range(row, 0, row, column - 1), indent); + }; + this.$getIndent = function (line) { + return line.match(/^\s*/)[0]; + }; +}).call(MatchingBraceOutdent.prototype); +exports.MatchingBraceOutdent = MatchingBraceOutdent; + +}); + +ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var Range = require("../../range").Range; +var BaseFoldMode = require("./fold_mode").FoldMode; +var FoldMode = exports.FoldMode = function (commentRegex) { + if (commentRegex) { + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); + } +}; +oop.inherits(FoldMode, BaseFoldMode); +(function () { + this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; + this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; + this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; + this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; + this._getFoldWidgetBase = this.getFoldWidget; + this.getFoldWidget = function (session, foldStyle, row) { + var line = session.getLine(row); + if (this.singleLineBlockCommentRe.test(line)) { + if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) + return ""; + } + var fw = this._getFoldWidgetBase(session, foldStyle, row); + if (!fw && this.startRegionRe.test(line)) + return "start"; // lineCommentRegionStart + return fw; + }; + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { + var line = session.getLine(row); + if (this.startRegionRe.test(line)) + return this.getCommentRegionBlock(session, line, row); + var match = line.match(this.foldingStartMarker); + if (match) { + var i = match.index; + if (match[1]) + return this.openingBracketBlock(session, match[1], row, i); + var range = session.getCommentFoldRange(row, i + match[0].length, 1); + if (range && !range.isMultiLine()) { + if (forceMultiline) { + range = this.getSectionRange(session, row); + } + else if (foldStyle != "all") + range = null; + } + return range; + } + if (foldStyle === "markbegin") + return; + var match = line.match(this.foldingStopMarker); + if (match) { + var i = match.index + match[0].length; + if (match[1]) + return this.closingBracketBlock(session, match[1], row, i); + return session.getCommentFoldRange(row, i, -1); + } + }; + this.getSectionRange = function (session, row) { + var line = session.getLine(row); + var startIndent = line.search(/\S/); + var startRow = row; + var startColumn = line.length; + row = row + 1; + var endRow = row; + var maxRow = session.getLength(); + while (++row < maxRow) { + line = session.getLine(row); + var indent = line.search(/\S/); + if (indent === -1) + continue; + if (startIndent > indent) + break; + var subRange = this.getFoldWidgetRange(session, "all", row); + if (subRange) { + if (subRange.start.row <= startRow) { + break; + } + else if (subRange.isMultiLine()) { + row = subRange.end.row; + } + else if (startIndent == indent) { + break; + } + } + endRow = row; + } + return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); + }; + this.getCommentRegionBlock = function (session, line, row) { + var startColumn = line.search(/\s*$/); + var maxRow = session.getLength(); + var startRow = row; + var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; + var depth = 1; + while (++row < maxRow) { + line = session.getLine(row); + var m = re.exec(line); + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; + } + var endRow = row; + if (endRow > startRow) { + return new Range(startRow, startColumn, endRow, line.length); + } + }; +}).call(FoldMode.prototype); + +}); + +ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; +var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; +var WorkerClient = require("../worker/worker_client").WorkerClient; +var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; +var CStyleFoldMode = require("./folding/cstyle").FoldMode; +var Mode = function () { + this.HighlightRules = JavaScriptHighlightRules; + this.$outdent = new MatchingBraceOutdent(); + this.$behaviour = new CstyleBehaviour(); + this.foldingRules = new CStyleFoldMode(); +}; +oop.inherits(Mode, TextMode); +(function () { + this.lineCommentStart = "//"; + this.blockComment = { start: "/*", end: "*/" }; + this.$quotes = { '"': '"', "'": "'", "`": "`" }; + this.$pairQuotesAfter = { + "`": /\w/ + }; + this.getNextLineIndent = function (state, line, tab) { + var indent = this.$getIndent(line); + var tokenizedLine = this.getTokenizer().getLineTokens(line, state); + var tokens = tokenizedLine.tokens; + var endState = tokenizedLine.state; + if (tokens.length && tokens[tokens.length - 1].type == "comment") { + return indent; + } + if (state == "start" || state == "no_regex") { + var match = line.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/); + if (match) { + indent += tab; + } + } + else if (state == "doc-start") { + if (endState == "start" || endState == "no_regex") { + return ""; + } + var match = line.match(/^\s*(\/?)\*/); + if (match) { + if (match[1]) { + indent += " "; + } + indent += "* "; + } + } + return indent; + }; + this.checkOutdent = function (state, line, input) { + return this.$outdent.checkOutdent(line, input); + }; + this.autoOutdent = function (state, doc, row) { + this.$outdent.autoOutdent(doc, row); + }; + this.createWorker = function (session) { + var worker = new WorkerClient(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker"); + worker.attachToDocument(session.getDocument()); + worker.on("annotate", function (results) { + session.setAnnotations(results.data); + }); + worker.on("terminate", function () { + session.clearAnnotations(); + }); + return worker; + }; + this.$id = "ace/mode/javascript"; + this.snippetFileId = "ace/snippets/javascript"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); (function() { + ace.require(["ace/mode/javascript"], function(m) { + if ( true && module) { + module.exports = m; + } + }); + })(); + + +/***/ }), + +/***/ 252: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +/* module decorator */ module = __webpack_require__.nmd(module); +ace.define("ace/mode/json_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var JsonHighlightRules = function () { + this.$rules = { + "start": [ + { + token: "variable", + regex: '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]\\s*(?=:)' + }, { + token: "string", + regex: '"', + next: "string" + }, { + token: "constant.numeric", + regex: "0[xX][0-9a-fA-F]+\\b" + }, { + token: "constant.numeric", + regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" + }, { + token: "constant.language.boolean", + regex: "(?:true|false)\\b" + }, { + token: "text", + regex: "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" + }, { + token: "comment", + regex: "\\/\\/.*$" + }, { + token: "comment.start", + regex: "\\/\\*", + next: "comment" + }, { + token: "paren.lparen", + regex: "[[({]" + }, { + token: "paren.rparen", + regex: "[\\])}]" + }, { + token: "punctuation.operator", + regex: /[,]/ + }, { + token: "text", + regex: "\\s+" + } + ], + "string": [ + { + token: "constant.language.escape", + regex: /\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|["\\\/bfnrt])/ + }, { + token: "string", + regex: '"|$', + next: "start" + }, { + defaultToken: "string" + } + ], + "comment": [ + { + token: "comment.end", + regex: "\\*\\/", + next: "start" + }, { + defaultToken: "comment" + } + ] + }; +}; +oop.inherits(JsonHighlightRules, TextHighlightRules); +exports.JsonHighlightRules = JsonHighlightRules; + +}); + +ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; +var Range = require("../range").Range; +var MatchingBraceOutdent = function () { }; +(function () { + this.checkOutdent = function (line, input) { + if (!/^\s+$/.test(line)) + return false; + return /^\s*\}/.test(input); + }; + this.autoOutdent = function (doc, row) { + var line = doc.getLine(row); + var match = line.match(/^(\s*\})/); + if (!match) + return 0; + var column = match[1].length; + var openBracePos = doc.findMatchingBracket({ row: row, column: column }); + if (!openBracePos || openBracePos.row == row) + return 0; + var indent = this.$getIndent(doc.getLine(openBracePos.row)); + doc.replace(new Range(row, 0, row, column - 1), indent); + }; + this.$getIndent = function (line) { + return line.match(/^\s*/)[0]; + }; +}).call(MatchingBraceOutdent.prototype); +exports.MatchingBraceOutdent = MatchingBraceOutdent; + +}); + +ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var Range = require("../../range").Range; +var BaseFoldMode = require("./fold_mode").FoldMode; +var FoldMode = exports.FoldMode = function (commentRegex) { + if (commentRegex) { + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); + } +}; +oop.inherits(FoldMode, BaseFoldMode); +(function () { + this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; + this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; + this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; + this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; + this._getFoldWidgetBase = this.getFoldWidget; + this.getFoldWidget = function (session, foldStyle, row) { + var line = session.getLine(row); + if (this.singleLineBlockCommentRe.test(line)) { + if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) + return ""; + } + var fw = this._getFoldWidgetBase(session, foldStyle, row); + if (!fw && this.startRegionRe.test(line)) + return "start"; // lineCommentRegionStart + return fw; + }; + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { + var line = session.getLine(row); + if (this.startRegionRe.test(line)) + return this.getCommentRegionBlock(session, line, row); + var match = line.match(this.foldingStartMarker); + if (match) { + var i = match.index; + if (match[1]) + return this.openingBracketBlock(session, match[1], row, i); + var range = session.getCommentFoldRange(row, i + match[0].length, 1); + if (range && !range.isMultiLine()) { + if (forceMultiline) { + range = this.getSectionRange(session, row); + } + else if (foldStyle != "all") + range = null; + } + return range; + } + if (foldStyle === "markbegin") + return; + var match = line.match(this.foldingStopMarker); + if (match) { + var i = match.index + match[0].length; + if (match[1]) + return this.closingBracketBlock(session, match[1], row, i); + return session.getCommentFoldRange(row, i, -1); + } + }; + this.getSectionRange = function (session, row) { + var line = session.getLine(row); + var startIndent = line.search(/\S/); + var startRow = row; + var startColumn = line.length; + row = row + 1; + var endRow = row; + var maxRow = session.getLength(); + while (++row < maxRow) { + line = session.getLine(row); + var indent = line.search(/\S/); + if (indent === -1) + continue; + if (startIndent > indent) + break; + var subRange = this.getFoldWidgetRange(session, "all", row); + if (subRange) { + if (subRange.start.row <= startRow) { + break; + } + else if (subRange.isMultiLine()) { + row = subRange.end.row; + } + else if (startIndent == indent) { + break; + } + } + endRow = row; + } + return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); + }; + this.getCommentRegionBlock = function (session, line, row) { + var startColumn = line.search(/\s*$/); + var maxRow = session.getLength(); + var startRow = row; + var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; + var depth = 1; + while (++row < maxRow) { + line = session.getLine(row); + var m = re.exec(line); + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; + } + var endRow = row; + if (endRow > startRow) { + return new Range(startRow, startColumn, endRow, line.length); + } + }; +}).call(FoldMode.prototype); + +}); + +ace.define("ace/mode/json",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/json_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/folding/cstyle","ace/worker/worker_client"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var HighlightRules = require("./json_highlight_rules").JsonHighlightRules; +var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; +var CStyleFoldMode = require("./folding/cstyle").FoldMode; +var WorkerClient = require("../worker/worker_client").WorkerClient; +var Mode = function () { + this.HighlightRules = HighlightRules; + this.$outdent = new MatchingBraceOutdent(); + this.$behaviour = this.$defaultBehaviour; + this.foldingRules = new CStyleFoldMode(); +}; +oop.inherits(Mode, TextMode); +(function () { + this.lineCommentStart = "//"; + this.blockComment = { start: "/*", end: "*/" }; + this.getNextLineIndent = function (state, line, tab) { + var indent = this.$getIndent(line); + if (state == "start") { + var match = line.match(/^.*[\{\(\[]\s*$/); + if (match) { + indent += tab; + } + } + return indent; + }; + this.checkOutdent = function (state, line, input) { + return this.$outdent.checkOutdent(line, input); + }; + this.autoOutdent = function (state, doc, row) { + this.$outdent.autoOutdent(doc, row); + }; + this.createWorker = function (session) { + var worker = new WorkerClient(["ace"], "ace/mode/json_worker", "JsonWorker"); + worker.attachToDocument(session.getDocument()); + worker.on("annotate", function (e) { + session.setAnnotations(e.data); + }); + worker.on("terminate", function () { + session.clearAnnotations(); + }); + return worker; + }; + this.$id = "ace/mode/json"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); (function() { + ace.require(["ace/mode/json"], function(m) { + if ( true && module) { + module.exports = m; + } + }); + })(); + + +/***/ }), + +/***/ 711: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +/* module decorator */ module = __webpack_require__.nmd(module); +ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var DocCommentHighlightRules = function () { + this.$rules = { + "start": [ + { + token: "comment.doc.tag", + regex: "@\\w+(?=\\s|$)" + }, DocCommentHighlightRules.getTagRule(), { + defaultToken: "comment.doc", + caseInsensitive: true + } + ] + }; +}; +oop.inherits(DocCommentHighlightRules, TextHighlightRules); +DocCommentHighlightRules.getTagRule = function (start) { + return { + token: "comment.doc.tag.storage.type", + regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b" + }; +}; +DocCommentHighlightRules.getStartRule = function (start) { + return { + token: "comment.doc", + regex: "\\/\\*(?=\\*)", + next: start + }; +}; +DocCommentHighlightRules.getEndRule = function (start) { + return { + token: "comment.doc", + regex: "\\*\\/", + next: start + }; +}; +exports.DocCommentHighlightRules = DocCommentHighlightRules; + +}); + +ace.define("ace/mode/jsx_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module){var oop = require("../lib/oop"); +var lang = require("../lib/lang"); +var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var JsxHighlightRules = function () { + var keywords = lang.arrayToMap(("break|do|instanceof|typeof|case|else|new|var|catch|finally|return|void|continue|for|switch|default|while|function|this|" + + "if|throw|" + + "delete|in|try|" + + "class|extends|super|import|from|into|implements|interface|static|mixin|override|abstract|final|" + + "number|int|string|boolean|variant|" + + "log|assert").split("|")); + var buildinConstants = lang.arrayToMap(("null|true|false|NaN|Infinity|__FILE__|__LINE__|undefined").split("|")); + var reserved = lang.arrayToMap(("debugger|with|" + + "const|export|" + + "let|private|public|yield|protected|" + + "extern|native|as|operator|__fake__|__readonly__").split("|")); + var identifierRe = "[a-zA-Z_][a-zA-Z0-9_]*\\b"; + this.$rules = { + "start": [ + { + token: "comment", + regex: "\\/\\/.*$" + }, + DocCommentHighlightRules.getStartRule("doc-start"), + { + token: "comment", + regex: "\\/\\*", + next: "comment" + }, { + token: "string.regexp", + regex: "[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/]\\w*\\s*(?=[).,;]|$)" + }, { + token: "string", + regex: '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' + }, { + token: "string", + regex: "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" + }, { + token: "constant.numeric", + regex: "0[xX][0-9a-fA-F]+\\b" + }, { + token: "constant.numeric", + regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" + }, { + token: "constant.language.boolean", + regex: "(?:true|false)\\b" + }, { + token: [ + "storage.type", + "text", + "entity.name.function" + ], + regex: "(function)(\\s+)(" + identifierRe + ")" + }, { + token: function (value) { + if (value == "this") + return "variable.language"; + else if (value == "function") + return "storage.type"; + else if (keywords.hasOwnProperty(value) || reserved.hasOwnProperty(value)) + return "keyword"; + else if (buildinConstants.hasOwnProperty(value)) + return "constant.language"; + else if (/^_?[A-Z][a-zA-Z0-9_]*$/.test(value)) + return "language.support.class"; + else + return "identifier"; + }, + regex: identifierRe + }, { + token: "keyword.operator", + regex: "!|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|==|=|!=|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)" + }, { + token: "punctuation.operator", + regex: "\\?|\\:|\\,|\\;|\\." + }, { + token: "paren.lparen", + regex: "[[({<]" + }, { + token: "paren.rparen", + regex: "[\\])}>]" + }, { + token: "text", + regex: "\\s+" + } + ], + "comment": [ + { + token: "comment", + regex: "\\*\\/", + next: "start" + }, { + defaultToken: "comment" + } + ] + }; + this.embedRules(DocCommentHighlightRules, "doc-", [DocCommentHighlightRules.getEndRule("start")]); +}; +oop.inherits(JsxHighlightRules, TextHighlightRules); +exports.JsxHighlightRules = JsxHighlightRules; + +}); + +ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; +var Range = require("../range").Range; +var MatchingBraceOutdent = function () { }; +(function () { + this.checkOutdent = function (line, input) { + if (!/^\s+$/.test(line)) + return false; + return /^\s*\}/.test(input); + }; + this.autoOutdent = function (doc, row) { + var line = doc.getLine(row); + var match = line.match(/^(\s*\})/); + if (!match) + return 0; + var column = match[1].length; + var openBracePos = doc.findMatchingBracket({ row: row, column: column }); + if (!openBracePos || openBracePos.row == row) + return 0; + var indent = this.$getIndent(doc.getLine(openBracePos.row)); + doc.replace(new Range(row, 0, row, column - 1), indent); + }; + this.$getIndent = function (line) { + return line.match(/^\s*/)[0]; + }; +}).call(MatchingBraceOutdent.prototype); +exports.MatchingBraceOutdent = MatchingBraceOutdent; + +}); + +ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var Range = require("../../range").Range; +var BaseFoldMode = require("./fold_mode").FoldMode; +var FoldMode = exports.FoldMode = function (commentRegex) { + if (commentRegex) { + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); + } +}; +oop.inherits(FoldMode, BaseFoldMode); +(function () { + this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; + this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; + this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; + this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; + this._getFoldWidgetBase = this.getFoldWidget; + this.getFoldWidget = function (session, foldStyle, row) { + var line = session.getLine(row); + if (this.singleLineBlockCommentRe.test(line)) { + if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) + return ""; + } + var fw = this._getFoldWidgetBase(session, foldStyle, row); + if (!fw && this.startRegionRe.test(line)) + return "start"; // lineCommentRegionStart + return fw; + }; + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { + var line = session.getLine(row); + if (this.startRegionRe.test(line)) + return this.getCommentRegionBlock(session, line, row); + var match = line.match(this.foldingStartMarker); + if (match) { + var i = match.index; + if (match[1]) + return this.openingBracketBlock(session, match[1], row, i); + var range = session.getCommentFoldRange(row, i + match[0].length, 1); + if (range && !range.isMultiLine()) { + if (forceMultiline) { + range = this.getSectionRange(session, row); + } + else if (foldStyle != "all") + range = null; + } + return range; + } + if (foldStyle === "markbegin") + return; + var match = line.match(this.foldingStopMarker); + if (match) { + var i = match.index + match[0].length; + if (match[1]) + return this.closingBracketBlock(session, match[1], row, i); + return session.getCommentFoldRange(row, i, -1); + } + }; + this.getSectionRange = function (session, row) { + var line = session.getLine(row); + var startIndent = line.search(/\S/); + var startRow = row; + var startColumn = line.length; + row = row + 1; + var endRow = row; + var maxRow = session.getLength(); + while (++row < maxRow) { + line = session.getLine(row); + var indent = line.search(/\S/); + if (indent === -1) + continue; + if (startIndent > indent) + break; + var subRange = this.getFoldWidgetRange(session, "all", row); + if (subRange) { + if (subRange.start.row <= startRow) { + break; + } + else if (subRange.isMultiLine()) { + row = subRange.end.row; + } + else if (startIndent == indent) { + break; + } + } + endRow = row; + } + return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); + }; + this.getCommentRegionBlock = function (session, line, row) { + var startColumn = line.search(/\s*$/); + var maxRow = session.getLength(); + var startRow = row; + var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; + var depth = 1; + while (++row < maxRow) { + line = session.getLine(row); + var m = re.exec(line); + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; + } + var endRow = row; + if (endRow > startRow) { + return new Range(startRow, startColumn, endRow, line.length); + } + }; +}).call(FoldMode.prototype); + +}); + +ace.define("ace/mode/jsx",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/jsx_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var JsxHighlightRules = require("./jsx_highlight_rules").JsxHighlightRules; +var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; +var CStyleFoldMode = require("./folding/cstyle").FoldMode; +function Mode() { + this.HighlightRules = JsxHighlightRules; + this.$outdent = new MatchingBraceOutdent(); + this.$behaviour = this.$defaultBehaviour; + this.foldingRules = new CStyleFoldMode(); +} +oop.inherits(Mode, TextMode); +(function () { + this.lineCommentStart = "//"; + this.blockComment = { start: "/*", end: "*/" }; + this.getNextLineIndent = function (state, line, tab) { + var indent = this.$getIndent(line); + var tokenizedLine = this.getTokenizer().getLineTokens(line, state); + var tokens = tokenizedLine.tokens; + if (tokens.length && tokens[tokens.length - 1].type == "comment") { + return indent; + } + if (state == "start") { + var match = line.match(/^.*[\{\(\[]\s*$/); + if (match) { + indent += tab; + } + } + return indent; + }; + this.checkOutdent = function (state, line, input) { + return this.$outdent.checkOutdent(line, input); + }; + this.autoOutdent = function (state, doc, row) { + this.$outdent.autoOutdent(doc, row); + }; + this.$id = "ace/mode/jsx"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); (function() { + ace.require(["ace/mode/jsx"], function(m) { + if ( true && module) { + module.exports = m; + } + }); + })(); + + +/***/ }), + +/***/ 7: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +/* module decorator */ module = __webpack_require__.nmd(module); +ace.define("ace/mode/python_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){/* + * TODO: python delimiters + */ +"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var PythonHighlightRules = function () { + var keywords = ("and|as|assert|break|class|continue|def|del|elif|else|except|exec|" + + "finally|for|from|global|if|import|in|is|lambda|not|or|pass|print|" + + "raise|return|try|while|with|yield|async|await|nonlocal"); + var builtinConstants = ("True|False|None|NotImplemented|Ellipsis|__debug__"); + var builtinFunctions = ("abs|divmod|input|open|staticmethod|all|enumerate|int|ord|str|any|" + + "eval|isinstance|pow|sum|basestring|execfile|issubclass|print|super|" + + "binfile|bin|iter|property|tuple|bool|filter|len|range|type|bytearray|" + + "float|list|raw_input|unichr|callable|format|locals|reduce|unicode|" + + "chr|frozenset|long|reload|vars|classmethod|getattr|map|repr|xrange|" + + "cmp|globals|max|reversed|zip|compile|hasattr|memoryview|round|" + + "__import__|complex|hash|min|apply|delattr|help|next|setattr|set|" + + "buffer|dict|hex|object|slice|coerce|dir|id|oct|sorted|intern|" + + "ascii|breakpoint|bytes"); + var keywordMapper = this.createKeywordMapper({ + "invalid.deprecated": "debugger", + "support.function": builtinFunctions, + "variable.language": "self|cls", + "constant.language": builtinConstants, + "keyword": keywords + }, "identifier"); + var strPre = "[uU]?"; + var strRawPre = "[rR]"; + var strFormatPre = "[fF]"; + var strRawFormatPre = "(?:[rR][fF]|[fF][rR])"; + var decimalInteger = "(?:(?:[1-9]\\d*)|(?:0))"; + var octInteger = "(?:0[oO]?[0-7]+)"; + var hexInteger = "(?:0[xX][\\dA-Fa-f]+)"; + var binInteger = "(?:0[bB][01]+)"; + var integer = "(?:" + decimalInteger + "|" + octInteger + "|" + hexInteger + "|" + binInteger + ")"; + var exponent = "(?:[eE][+-]?\\d+)"; + var fraction = "(?:\\.\\d+)"; + var intPart = "(?:\\d+)"; + var pointFloat = "(?:(?:" + intPart + "?" + fraction + ")|(?:" + intPart + "\\.))"; + var exponentFloat = "(?:(?:" + pointFloat + "|" + intPart + ")" + exponent + ")"; + var floatNumber = "(?:" + exponentFloat + "|" + pointFloat + ")"; + var stringEscape = "\\\\(x[0-9A-Fa-f]{2}|[0-7]{3}|[\\\\abfnrtv'\"]|U[0-9A-Fa-f]{8}|u[0-9A-Fa-f]{4})"; + this.$rules = { + "start": [{ + token: "comment", + regex: "#.*$" + }, { + token: "string", + regex: strPre + '"{3}', + next: "qqstring3" + }, { + token: "string", + regex: strPre + '"(?=.)', + next: "qqstring" + }, { + token: "string", + regex: strPre + "'{3}", + next: "qstring3" + }, { + token: "string", + regex: strPre + "'(?=.)", + next: "qstring" + }, { + token: "string", + regex: strRawPre + '"{3}', + next: "rawqqstring3" + }, { + token: "string", + regex: strRawPre + '"(?=.)', + next: "rawqqstring" + }, { + token: "string", + regex: strRawPre + "'{3}", + next: "rawqstring3" + }, { + token: "string", + regex: strRawPre + "'(?=.)", + next: "rawqstring" + }, { + token: "string", + regex: strFormatPre + '"{3}', + next: "fqqstring3" + }, { + token: "string", + regex: strFormatPre + '"(?=.)', + next: "fqqstring" + }, { + token: "string", + regex: strFormatPre + "'{3}", + next: "fqstring3" + }, { + token: "string", + regex: strFormatPre + "'(?=.)", + next: "fqstring" + }, { + token: "string", + regex: strRawFormatPre + '"{3}', + next: "rfqqstring3" + }, { + token: "string", + regex: strRawFormatPre + '"(?=.)', + next: "rfqqstring" + }, { + token: "string", + regex: strRawFormatPre + "'{3}", + next: "rfqstring3" + }, { + token: "string", + regex: strRawFormatPre + "'(?=.)", + next: "rfqstring" + }, { + token: "keyword.operator", + regex: "\\+|\\-|\\*|\\*\\*|\\/|\\/\\/|%|@|<<|>>|&|\\||\\^|~|<|>|<=|=>|==|!=|<>|=" + }, { + token: "punctuation", + regex: ",|:|;|\\->|\\+=|\\-=|\\*=|\\/=|\\/\\/=|%=|@=|&=|\\|=|^=|>>=|<<=|\\*\\*=" + }, { + token: "paren.lparen", + regex: "[\\[\\(\\{]" + }, { + token: "paren.rparen", + regex: "[\\]\\)\\}]" + }, { + token: ["keyword", "text", "entity.name.function"], + regex: "(def|class)(\\s+)([\\u00BF-\\u1FFF\\u2C00-\\uD7FF\\w]+)" + }, { + token: "text", + regex: "\\s+" + }, { + include: "constants" + }], + "qqstring3": [{ + token: "constant.language.escape", + regex: stringEscape + }, { + token: "string", + regex: '"{3}', + next: "start" + }, { + defaultToken: "string" + }], + "qstring3": [{ + token: "constant.language.escape", + regex: stringEscape + }, { + token: "string", + regex: "'{3}", + next: "start" + }, { + defaultToken: "string" + }], + "qqstring": [{ + token: "constant.language.escape", + regex: stringEscape + }, { + token: "string", + regex: "\\\\$", + next: "qqstring" + }, { + token: "string", + regex: '"|$', + next: "start" + }, { + defaultToken: "string" + }], + "qstring": [{ + token: "constant.language.escape", + regex: stringEscape + }, { + token: "string", + regex: "\\\\$", + next: "qstring" + }, { + token: "string", + regex: "'|$", + next: "start" + }, { + defaultToken: "string" + }], + "rawqqstring3": [{ + token: "string", + regex: '"{3}', + next: "start" + }, { + defaultToken: "string" + }], + "rawqstring3": [{ + token: "string", + regex: "'{3}", + next: "start" + }, { + defaultToken: "string" + }], + "rawqqstring": [{ + token: "string", + regex: "\\\\$", + next: "rawqqstring" + }, { + token: "string", + regex: '"|$', + next: "start" + }, { + defaultToken: "string" + }], + "rawqstring": [{ + token: "string", + regex: "\\\\$", + next: "rawqstring" + }, { + token: "string", + regex: "'|$", + next: "start" + }, { + defaultToken: "string" + }], + "fqqstring3": [{ + token: "constant.language.escape", + regex: stringEscape + }, { + token: "string", + regex: '"{3}', + next: "start" + }, { + token: "paren.lparen", + regex: "{", + push: "fqstringParRules" + }, { + defaultToken: "string" + }], + "fqstring3": [{ + token: "constant.language.escape", + regex: stringEscape + }, { + token: "string", + regex: "'{3}", + next: "start" + }, { + token: "paren.lparen", + regex: "{", + push: "fqstringParRules" + }, { + defaultToken: "string" + }], + "fqqstring": [{ + token: "constant.language.escape", + regex: stringEscape + }, { + token: "string", + regex: "\\\\$", + next: "fqqstring" + }, { + token: "string", + regex: '"|$', + next: "start" + }, { + token: "paren.lparen", + regex: "{", + push: "fqstringParRules" + }, { + defaultToken: "string" + }], + "fqstring": [{ + token: "constant.language.escape", + regex: stringEscape + }, { + token: "string", + regex: "'|$", + next: "start" + }, { + token: "paren.lparen", + regex: "{", + push: "fqstringParRules" + }, { + defaultToken: "string" + }], + "rfqqstring3": [{ + token: "string", + regex: '"{3}', + next: "start" + }, { + token: "paren.lparen", + regex: "{", + push: "fqstringParRules" + }, { + defaultToken: "string" + }], + "rfqstring3": [{ + token: "string", + regex: "'{3}", + next: "start" + }, { + token: "paren.lparen", + regex: "{", + push: "fqstringParRules" + }, { + defaultToken: "string" + }], + "rfqqstring": [{ + token: "string", + regex: "\\\\$", + next: "rfqqstring" + }, { + token: "string", + regex: '"|$', + next: "start" + }, { + token: "paren.lparen", + regex: "{", + push: "fqstringParRules" + }, { + defaultToken: "string" + }], + "rfqstring": [{ + token: "string", + regex: "'|$", + next: "start" + }, { + token: "paren.lparen", + regex: "{", + push: "fqstringParRules" + }, { + defaultToken: "string" + }], + "fqstringParRules": [{ + token: "paren.lparen", + regex: "[\\[\\(]" + }, { + token: "paren.rparen", + regex: "[\\]\\)]" + }, { + token: "string", + regex: "\\s+" + }, { + token: "string", + regex: "'[^']*'" + }, { + token: "string", + regex: '"[^"]*"' + }, { + token: "function.support", + regex: "(!s|!r|!a)" + }, { + include: "constants" + }, { + token: 'paren.rparen', + regex: "}", + next: 'pop' + }, { + token: 'paren.lparen', + regex: "{", + push: "fqstringParRules" + }], + "constants": [{ + token: "constant.numeric", + regex: "(?:" + floatNumber + "|\\d+)[jJ]\\b" + }, { + token: "constant.numeric", + regex: floatNumber + }, { + token: "constant.numeric", + regex: integer + "[lL]\\b" + }, { + token: "constant.numeric", + regex: integer + "\\b" + }, { + token: ["punctuation", "function.support"], + regex: "(\\.)([a-zA-Z_]+)\\b" + }, { + token: keywordMapper, + regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" + }] + }; + this.normalizeRules(); +}; +oop.inherits(PythonHighlightRules, TextHighlightRules); +exports.PythonHighlightRules = PythonHighlightRules; + +}); + +ace.define("ace/mode/folding/pythonic",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var BaseFoldMode = require("./fold_mode").FoldMode; +var FoldMode = exports.FoldMode = function (markers) { + this.foldingStartMarker = new RegExp("([\\[{])(?:\\s*)$|(" + markers + ")(?:\\s*)(?:#.*)?$"); +}; +oop.inherits(FoldMode, BaseFoldMode); +(function () { + this.getFoldWidgetRange = function (session, foldStyle, row) { + var line = session.getLine(row); + var match = line.match(this.foldingStartMarker); + if (match) { + if (match[1]) + return this.openingBracketBlock(session, match[1], row, match.index); + if (match[2]) + return this.indentationBlock(session, row, match.index + match[2].length); + return this.indentationBlock(session, row); + } + }; +}).call(FoldMode.prototype); + +}); + +ace.define("ace/mode/python",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/python_highlight_rules","ace/mode/folding/pythonic","ace/range"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var PythonHighlightRules = require("./python_highlight_rules").PythonHighlightRules; +var PythonFoldMode = require("./folding/pythonic").FoldMode; +var Range = require("../range").Range; +var Mode = function () { + this.HighlightRules = PythonHighlightRules; + this.foldingRules = new PythonFoldMode("\\:"); + this.$behaviour = this.$defaultBehaviour; +}; +oop.inherits(Mode, TextMode); +(function () { + this.lineCommentStart = "#"; + this.$pairQuotesAfter = { + "'": /[ruf]/i, + '"': /[ruf]/i + }; + this.getNextLineIndent = function (state, line, tab) { + var indent = this.$getIndent(line); + var tokenizedLine = this.getTokenizer().getLineTokens(line, state); + var tokens = tokenizedLine.tokens; + if (tokens.length && tokens[tokens.length - 1].type == "comment") { + return indent; + } + if (state == "start") { + var match = line.match(/^.*[\{\(\[:]\s*$/); + if (match) { + indent += tab; + } + } + return indent; + }; + var outdents = { + "pass": 1, + "return": 1, + "raise": 1, + "break": 1, + "continue": 1 + }; + this.checkOutdent = function (state, line, input) { + if (input !== "\r\n" && input !== "\r" && input !== "\n") + return false; + var tokens = this.getTokenizer().getLineTokens(line.trim(), state).tokens; + if (!tokens) + return false; + do { + var last = tokens.pop(); + } while (last && (last.type == "comment" || (last.type == "text" && last.value.match(/^\s+$/)))); + if (!last) + return false; + return (last.type == "keyword" && outdents[last.value]); + }; + this.autoOutdent = function (state, doc, row) { + row += 1; + var indent = this.$getIndent(doc.getLine(row)); + var tab = doc.getTabString(); + if (indent.slice(-tab.length) == tab) + doc.remove(new Range(row, indent.length - tab.length, row, indent.length)); + }; + this.$id = "ace/mode/python"; + this.snippetFileId = "ace/snippets/python"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); (function() { + ace.require(["ace/mode/python"], function(m) { + if ( true && module) { + module.exports = m; + } + }); + })(); + + +/***/ }), + +/***/ 202: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +/* module decorator */ module = __webpack_require__.nmd(module); +ace.define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var XmlHighlightRules = function (normalize) { + var tagRegex = "[_:a-zA-Z\xc0-\uffff][-_:.a-zA-Z0-9\xc0-\uffff]*"; + this.$rules = { + start: [ + { token: "string.cdata.xml", regex: "<\\!\\[CDATA\\[", next: "cdata" }, + { + token: ["punctuation.instruction.xml", "keyword.instruction.xml"], + regex: "(<\\?)(" + tagRegex + ")", next: "processing_instruction" + }, + { token: "comment.start.xml", regex: "<\\!--", next: "comment" }, + { + token: ["xml-pe.doctype.xml", "xml-pe.doctype.xml"], + regex: "(<\\!)(DOCTYPE)(?=[\\s])", next: "doctype", caseInsensitive: true + }, + { include: "tag" }, + { token: "text.end-tag-open.xml", regex: "", + next: "start" + }], + doctype: [ + { include: "whitespace" }, + { include: "string" }, + { token: "xml-pe.doctype.xml", regex: ">", next: "start" }, + { token: "xml-pe.xml", regex: "[-_a-zA-Z0-9:]+" }, + { token: "punctuation.int-subset", regex: "\\[", push: "int_subset" } + ], + int_subset: [{ + token: "text.xml", + regex: "\\s+" + }, { + token: "punctuation.int-subset.xml", + regex: "]", + next: "pop" + }, { + token: ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"], + regex: "(<\\!)(" + tagRegex + ")", + push: [{ + token: "text", + regex: "\\s+" + }, + { + token: "punctuation.markup-decl.xml", + regex: ">", + next: "pop" + }, + { include: "string" }] + }], + cdata: [ + { token: "string.cdata.xml", regex: "\\]\\]>", next: "start" }, + { token: "text.xml", regex: "\\s+" }, + { token: "text.xml", regex: "(?:[^\\]]|\\](?!\\]>))+" } + ], + comment: [ + { token: "comment.end.xml", regex: "-->", next: "start" }, + { defaultToken: "comment.xml" } + ], + reference: [{ + token: "constant.language.escape.reference.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }], + attr_reference: [{ + token: "constant.language.escape.reference.attribute-value.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }], + tag: [{ + token: ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"], + regex: "(?:(<)|(", next: "start" } + ] + }], + tag_whitespace: [ + { token: "text.tag-whitespace.xml", regex: "\\s+" } + ], + whitespace: [ + { token: "text.whitespace.xml", regex: "\\s+" } + ], + string: [{ + token: "string.xml", + regex: "'", + push: [ + { token: "string.xml", regex: "'", next: "pop" }, + { defaultToken: "string.xml" } + ] + }, { + token: "string.xml", + regex: '"', + push: [ + { token: "string.xml", regex: '"', next: "pop" }, + { defaultToken: "string.xml" } + ] + }], + attributes: [{ + token: "entity.other.attribute-name.xml", + regex: tagRegex + }, { + token: "keyword.operator.attribute-equals.xml", + regex: "=" + }, { + include: "tag_whitespace" + }, { + include: "attribute_value" + }], + attribute_value: [{ + token: "string.attribute-value.xml", + regex: "'", + push: [ + { token: "string.attribute-value.xml", regex: "'", next: "pop" }, + { include: "attr_reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, { + token: "string.attribute-value.xml", + regex: '"', + push: [ + { token: "string.attribute-value.xml", regex: '"', next: "pop" }, + { include: "attr_reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }] + }; + if (this.constructor === XmlHighlightRules) + this.normalizeRules(); +}; +(function () { + this.embedTagRules = function (HighlightRules, prefix, tag) { + this.$rules.tag.unshift({ + token: ["meta.tag.punctuation.tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], + regex: "(<)(" + tag + "(?=\\s|>|$))", + next: [ + { include: "attributes" }, + { token: "meta.tag.punctuation.tag-close.xml", regex: "/?>", next: prefix + "start" } + ] + }); + this.$rules[tag + "-end"] = [ + { include: "attributes" }, + { token: "meta.tag.punctuation.tag-close.xml", regex: "/?>", next: "start", + onMatch: function (value, currentState, stack) { + stack.splice(0); + return this.token; + } } + ]; + this.embedRules(HighlightRules, prefix, [{ + token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], + regex: "(|$))", + next: tag + "-end" + }, { + token: "string.cdata.xml", + regex: "<\\!\\[CDATA\\[" + }, { + token: "string.cdata.xml", + regex: "\\]\\]>" + }]); + }; +}).call(TextHighlightRules.prototype); +oop.inherits(XmlHighlightRules, TextHighlightRules); +exports.XmlHighlightRules = XmlHighlightRules; + +}); + +ace.define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var Behaviour = require("../behaviour").Behaviour; +var TokenIterator = require("../../token_iterator").TokenIterator; +var lang = require("../../lib/lang"); +function is(token, type) { + return token && token.type.lastIndexOf(type + ".xml") > -1; +} +var XmlBehaviour = function () { + this.add("string_dquotes", "insertion", function (state, action, editor, session, text) { + if (text == '"' || text == "'") { + var quote = text; + var selected = session.doc.getTextRange(editor.getSelectionRange()); + if (selected !== "" && selected !== "'" && selected != '"' && editor.getWrapBehavioursEnabled()) { + return { + text: quote + selected + quote, + selection: false + }; + } + var cursor = editor.getCursorPosition(); + var line = session.doc.getLine(cursor.row); + var rightChar = line.substring(cursor.column, cursor.column + 1); + var iterator = new TokenIterator(session, cursor.row, cursor.column); + var token = iterator.getCurrentToken(); + if (rightChar == quote && (is(token, "attribute-value") || is(token, "string"))) { + return { + text: "", + selection: [1, 1] + }; + } + if (!token) + token = iterator.stepBackward(); + if (!token) + return; + while (is(token, "tag-whitespace") || is(token, "whitespace")) { + token = iterator.stepBackward(); + } + var rightSpace = !rightChar || rightChar.match(/\s/); + if (is(token, "attribute-equals") && (rightSpace || rightChar == '>') || (is(token, "decl-attribute-equals") && (rightSpace || rightChar == '?'))) { + return { + text: quote + quote, + selection: [1, 1] + }; + } + } + }); + this.add("string_dquotes", "deletion", function (state, action, editor, session, range) { + var selected = session.doc.getTextRange(range); + if (!range.isMultiLine() && (selected == '"' || selected == "'")) { + var line = session.doc.getLine(range.start.row); + var rightChar = line.substring(range.start.column + 1, range.start.column + 2); + if (rightChar == selected) { + range.end.column++; + return range; + } + } + }); + this.add("autoclosing", "insertion", function (state, action, editor, session, text) { + if (text == '>') { + var position = editor.getSelectionRange().start; + var iterator = new TokenIterator(session, position.row, position.column); + var token = iterator.getCurrentToken() || iterator.stepBackward(); + if (!token || !(is(token, "tag-name") || is(token, "tag-whitespace") || is(token, "attribute-name") || is(token, "attribute-equals") || is(token, "attribute-value"))) + return; + if (is(token, "reference.attribute-value")) + return; + if (is(token, "attribute-value")) { + var tokenEndColumn = iterator.getCurrentTokenColumn() + token.value.length; + if (position.column < tokenEndColumn) + return; + if (position.column == tokenEndColumn) { + var nextToken = iterator.stepForward(); + if (nextToken && is(nextToken, "attribute-value")) + return; + iterator.stepBackward(); + } + } + if (/^\s*>/.test(session.getLine(position.row).slice(position.column))) + return; + while (!is(token, "tag-name")) { + token = iterator.stepBackward(); + if (token.value == "<") { + token = iterator.stepForward(); + break; + } + } + var tokenRow = iterator.getCurrentTokenRow(); + var tokenColumn = iterator.getCurrentTokenColumn(); + if (is(iterator.stepBackward(), "end-tag-open")) + return; + var element = token.value; + if (tokenRow == position.row) + element = element.substring(0, position.column - tokenColumn); + if (this.voidElements.hasOwnProperty(element.toLowerCase())) + return; + return { + text: ">" + "", + selection: [1, 1] + }; + } + }); + this.add("autoindent", "insertion", function (state, action, editor, session, text) { + if (text == "\n") { + var cursor = editor.getCursorPosition(); + var line = session.getLine(cursor.row); + var iterator = new TokenIterator(session, cursor.row, cursor.column); + var token = iterator.getCurrentToken(); + if (token && token.type.indexOf("tag-close") !== -1) { + if (token.value == "/>") + return; + while (token && token.type.indexOf("tag-name") === -1) { + token = iterator.stepBackward(); + } + if (!token) { + return; + } + var tag = token.value; + var row = iterator.getCurrentTokenRow(); + token = iterator.stepBackward(); + if (!token || token.type.indexOf("end-tag") !== -1) { + return; + } + if (this.voidElements && !this.voidElements[tag]) { + var nextToken = session.getTokenAt(cursor.row, cursor.column + 1); + var line = session.getLine(row); + var nextIndent = this.$getIndent(line); + var indent = nextIndent + session.getTabString(); + if (nextToken && nextToken.value === " -1; +} +(function () { + this.getFoldWidget = function (session, foldStyle, row) { + var tag = this._getFirstTagInLine(session, row); + if (!tag) + return this.getCommentFoldWidget(session, row); + if (tag.closing || (!tag.tagName && tag.selfClosing)) + return foldStyle === "markbeginend" ? "end" : ""; + if (!tag.tagName || tag.selfClosing || this.voidElements.hasOwnProperty(tag.tagName.toLowerCase())) + return ""; + if (this._findEndTagInLine(session, row, tag.tagName, tag.end.column)) + return ""; + return "start"; + }; + this.getCommentFoldWidget = function (session, row) { + if (/comment/.test(session.getState(row)) && /'; + break; + } + } + return tag; + } + else if (is(token, "tag-close")) { + tag.selfClosing = token.value == '/>'; + return tag; + } + tag.start.column += token.value.length; + } + return null; + }; + this._findEndTagInLine = function (session, row, tagName, startColumn) { + var tokens = session.getTokens(row); + var column = 0; + for (var i = 0; i < tokens.length; i++) { + var token = tokens[i]; + column += token.value.length; + if (column < startColumn) + continue; + if (is(token, "end-tag-open")) { + token = tokens[i + 1]; + if (token && token.value == tagName) + return true; + } + } + return false; + }; + this.getFoldWidgetRange = function (session, foldStyle, row) { + var tags = session.getMatchingTags({ row: row, column: 0 }); + if (tags) { + return new Range(tags.openTag.end.row, tags.openTag.end.column, tags.closeTag.start.row, tags.closeTag.start.column); + } + else { + return this.getCommentFoldWidget(session, row) + && session.getCommentFoldRange(row, session.getLine(row).length); + } + }; +}).call(FoldMode.prototype); + +}); + +ace.define("ace/mode/xml",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/xml_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/xml","ace/worker/worker_client"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var lang = require("../lib/lang"); +var TextMode = require("./text").Mode; +var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules; +var XmlBehaviour = require("./behaviour/xml").XmlBehaviour; +var XmlFoldMode = require("./folding/xml").FoldMode; +var WorkerClient = require("../worker/worker_client").WorkerClient; +var Mode = function () { + this.HighlightRules = XmlHighlightRules; + this.$behaviour = new XmlBehaviour(); + this.foldingRules = new XmlFoldMode(); +}; +oop.inherits(Mode, TextMode); +(function () { + this.voidElements = lang.arrayToMap([]); + this.blockComment = { start: "" }; + this.createWorker = function (session) { + var worker = new WorkerClient(["ace"], "ace/mode/xml_worker", "Worker"); + worker.attachToDocument(session.getDocument()); + worker.on("error", function (e) { + session.setAnnotations(e.data); + }); + worker.on("terminate", function () { + session.clearAnnotations(); + }); + return worker; + }; + this.$id = "ace/mode/xml"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); (function() { + ace.require(["ace/mode/xml"], function(m) { + if ( true && module) { + module.exports = m; + } + }); + })(); + + +/***/ }), + +/***/ 203: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +/* module decorator */ module = __webpack_require__.nmd(module); +ace.define("ace/theme/github-css",["require","exports","module"], function(require, exports, module){module.exports = "/* CSS style content from github's default pygments highlighter template.\n Cursor and selection styles from textmate.css. */\n.ace-github .ace_gutter {\n background: #e8e8e8;\n color: #AAA;\n}\n\n.ace-github {\n background: #fff;\n color: #000;\n}\n\n.ace-github .ace_keyword {\n font-weight: bold;\n}\n\n.ace-github .ace_string {\n color: #D14;\n}\n\n.ace-github .ace_variable.ace_class {\n color: teal;\n}\n\n.ace-github .ace_constant.ace_numeric {\n color: #099;\n}\n\n.ace-github .ace_constant.ace_buildin {\n color: #0086B3;\n}\n\n.ace-github .ace_support.ace_function {\n color: #0086B3;\n}\n\n.ace-github .ace_comment {\n color: #998;\n font-style: italic;\n}\n\n.ace-github .ace_variable.ace_language {\n color: #0086B3;\n}\n\n.ace-github .ace_paren {\n font-weight: bold;\n}\n\n.ace-github .ace_boolean {\n font-weight: bold;\n}\n\n.ace-github .ace_string.ace_regexp {\n color: #009926;\n font-weight: normal;\n}\n\n.ace-github .ace_variable.ace_instance {\n color: teal;\n}\n\n.ace-github .ace_constant.ace_language {\n font-weight: bold;\n}\n\n.ace-github .ace_cursor {\n color: black;\n}\n\n.ace-github.ace_focus .ace_marker-layer .ace_active-line {\n background: rgb(255, 255, 204);\n}\n.ace-github .ace_marker-layer .ace_active-line {\n background: rgb(245, 245, 245);\n}\n\n.ace-github .ace_marker-layer .ace_selection {\n background: rgb(181, 213, 255);\n}\n\n.ace-github.ace_multiselect .ace_selection.ace_start {\n box-shadow: 0 0 3px 0px white;\n}\n/* bold keywords cause cursor issues for some fonts */\n/* this disables bold style for editor and keeps for static highlighter */\n.ace-github.ace_nobold .ace_line > span {\n font-weight: normal !important;\n}\n\n.ace-github .ace_marker-layer .ace_step {\n background: rgb(252, 255, 0);\n}\n\n.ace-github .ace_marker-layer .ace_stack {\n background: rgb(164, 229, 101);\n}\n\n.ace-github .ace_marker-layer .ace_bracket {\n margin: -1px 0 0 -1px;\n border: 1px solid rgb(192, 192, 192);\n}\n\n.ace-github .ace_gutter-active-line {\n background-color : rgba(0, 0, 0, 0.07);\n}\n\n.ace-github .ace_marker-layer .ace_selected-word {\n background: rgb(250, 250, 255);\n border: 1px solid rgb(200, 200, 250);\n}\n\n.ace-github .ace_invisible {\n color: #BFBFBF\n}\n\n.ace-github .ace_print-margin {\n width: 1px;\n background: #e8e8e8;\n}\n\n.ace-github .ace_indent-guide {\n background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==\") right repeat-y;\n}\n\n.ace-github .ace_indent-guide-active {\n background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAAZSURBVHjaYvj///9/hivKyv8BAAAA//8DACLqBhbvk+/eAAAAAElFTkSuQmCC\") right repeat-y;\n}\n"; + +}); + +ace.define("ace/theme/github",["require","exports","module","ace/theme/github-css","ace/lib/dom"], function(require, exports, module){exports.isDark = false; +exports.cssClass = "ace-github"; +exports.cssText = require("./github-css"); +var dom = require("../lib/dom"); +dom.importCssString(exports.cssText, exports.cssClass, false); + +}); (function() { + ace.require(["ace/theme/github"], function(m) { + if ( true && module) { + module.exports = m; + } + }); + })(); + + +/***/ }), + +/***/ 821: +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ Z: () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(537); +/* harmony import */ var _css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(645); +/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); +// Imports + + +var ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); +// Module +___CSS_LOADER_EXPORT___.push([module.id, `.flatpickr-calendar{background:transparent;opacity:0;display:none;text-align:center;visibility:hidden;padding:0;-webkit-animation:none;animation:none;direction:ltr;border:0;font-size:14px;line-height:24px;border-radius:5px;position:absolute;width:307.875px;-webkit-box-sizing:border-box;box-sizing:border-box;-ms-touch-action:manipulation;touch-action:manipulation;background:#fff;-webkit-box-shadow:1px 0 0 #e6e6e6,-1px 0 0 #e6e6e6,0 1px 0 #e6e6e6,0 -1px 0 #e6e6e6,0 3px 13px rgba(0,0,0,0.08);box-shadow:1px 0 0 #e6e6e6,-1px 0 0 #e6e6e6,0 1px 0 #e6e6e6,0 -1px 0 #e6e6e6,0 3px 13px rgba(0,0,0,0.08)}.flatpickr-calendar.open,.flatpickr-calendar.inline{opacity:1;max-height:640px;visibility:visible}.flatpickr-calendar.open{display:inline-block;z-index:99999}.flatpickr-calendar.animate.open{-webkit-animation:fpFadeInDown 300ms cubic-bezier(.23,1,.32,1);animation:fpFadeInDown 300ms cubic-bezier(.23,1,.32,1)}.flatpickr-calendar.inline{display:block;position:relative;top:2px}.flatpickr-calendar.static{position:absolute;top:calc(100% + 2px)}.flatpickr-calendar.static.open{z-index:999;display:block}.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+1) .flatpickr-day.inRange:nth-child(7n+7){-webkit-box-shadow:none !important;box-shadow:none !important}.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+2) .flatpickr-day.inRange:nth-child(7n+1){-webkit-box-shadow:-2px 0 0 #e6e6e6,5px 0 0 #e6e6e6;box-shadow:-2px 0 0 #e6e6e6,5px 0 0 #e6e6e6}.flatpickr-calendar .hasWeeks .dayContainer,.flatpickr-calendar .hasTime .dayContainer{border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.flatpickr-calendar .hasWeeks .dayContainer{border-left:0}.flatpickr-calendar.hasTime .flatpickr-time{height:40px;border-top:1px solid #e6e6e6}.flatpickr-calendar.noCalendar.hasTime .flatpickr-time{height:auto}.flatpickr-calendar:before,.flatpickr-calendar:after{position:absolute;display:block;pointer-events:none;border:solid transparent;content:'';height:0;width:0;left:22px}.flatpickr-calendar.rightMost:before,.flatpickr-calendar.arrowRight:before,.flatpickr-calendar.rightMost:after,.flatpickr-calendar.arrowRight:after{left:auto;right:22px}.flatpickr-calendar.arrowCenter:before,.flatpickr-calendar.arrowCenter:after{left:50%;right:50%}.flatpickr-calendar:before{border-width:5px;margin:0 -5px}.flatpickr-calendar:after{border-width:4px;margin:0 -4px}.flatpickr-calendar.arrowTop:before,.flatpickr-calendar.arrowTop:after{bottom:100%}.flatpickr-calendar.arrowTop:before{border-bottom-color:#e6e6e6}.flatpickr-calendar.arrowTop:after{border-bottom-color:#fff}.flatpickr-calendar.arrowBottom:before,.flatpickr-calendar.arrowBottom:after{top:100%}.flatpickr-calendar.arrowBottom:before{border-top-color:#e6e6e6}.flatpickr-calendar.arrowBottom:after{border-top-color:#fff}.flatpickr-calendar:focus{outline:0}.flatpickr-wrapper{position:relative;display:inline-block}.flatpickr-months{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.flatpickr-months .flatpickr-month{background:transparent;color:rgba(0,0,0,0.9);fill:rgba(0,0,0,0.9);height:34px;line-height:1;text-align:center;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:hidden;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}.flatpickr-months .flatpickr-prev-month,.flatpickr-months .flatpickr-next-month{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;text-decoration:none;cursor:pointer;position:absolute;top:0;height:34px;padding:10px;z-index:3;color:rgba(0,0,0,0.9);fill:rgba(0,0,0,0.9)}.flatpickr-months .flatpickr-prev-month.flatpickr-disabled,.flatpickr-months .flatpickr-next-month.flatpickr-disabled{display:none}.flatpickr-months .flatpickr-prev-month i,.flatpickr-months .flatpickr-next-month i{position:relative}.flatpickr-months .flatpickr-prev-month.flatpickr-prev-month,.flatpickr-months .flatpickr-next-month.flatpickr-prev-month{/* + /*rtl:begin:ignore*/left:0/* + /*rtl:end:ignore*/}/* + /*rtl:begin:ignore*/ +/* + /*rtl:end:ignore*/ +.flatpickr-months .flatpickr-prev-month.flatpickr-next-month,.flatpickr-months .flatpickr-next-month.flatpickr-next-month{/* + /*rtl:begin:ignore*/right:0/* + /*rtl:end:ignore*/}/* + /*rtl:begin:ignore*/ +/* + /*rtl:end:ignore*/ +.flatpickr-months .flatpickr-prev-month:hover,.flatpickr-months .flatpickr-next-month:hover{color:#959ea9}.flatpickr-months .flatpickr-prev-month:hover svg,.flatpickr-months .flatpickr-next-month:hover svg{fill:#f64747}.flatpickr-months .flatpickr-prev-month svg,.flatpickr-months .flatpickr-next-month svg{width:14px;height:14px}.flatpickr-months .flatpickr-prev-month svg path,.flatpickr-months .flatpickr-next-month svg path{-webkit-transition:fill .1s;transition:fill .1s;fill:inherit}.numInputWrapper{position:relative;height:auto}.numInputWrapper input,.numInputWrapper span{display:inline-block}.numInputWrapper input{width:100%}.numInputWrapper input::-ms-clear{display:none}.numInputWrapper input::-webkit-outer-spin-button,.numInputWrapper input::-webkit-inner-spin-button{margin:0;-webkit-appearance:none}.numInputWrapper span{position:absolute;right:0;width:14px;padding:0 4px 0 2px;height:50%;line-height:50%;opacity:0;cursor:pointer;border:1px solid rgba(57,57,57,0.15);-webkit-box-sizing:border-box;box-sizing:border-box}.numInputWrapper span:hover{background:rgba(0,0,0,0.1)}.numInputWrapper span:active{background:rgba(0,0,0,0.2)}.numInputWrapper span:after{display:block;content:"";position:absolute}.numInputWrapper span.arrowUp{top:0;border-bottom:0}.numInputWrapper span.arrowUp:after{border-left:4px solid transparent;border-right:4px solid transparent;border-bottom:4px solid rgba(57,57,57,0.6);top:26%}.numInputWrapper span.arrowDown{top:50%}.numInputWrapper span.arrowDown:after{border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px solid rgba(57,57,57,0.6);top:40%}.numInputWrapper span svg{width:inherit;height:auto}.numInputWrapper span svg path{fill:rgba(0,0,0,0.5)}.numInputWrapper:hover{background:rgba(0,0,0,0.05)}.numInputWrapper:hover span{opacity:1}.flatpickr-current-month{font-size:135%;line-height:inherit;font-weight:300;color:inherit;position:absolute;width:75%;left:12.5%;padding:7.48px 0 0 0;line-height:1;height:34px;display:inline-block;text-align:center;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.flatpickr-current-month span.cur-month{font-family:inherit;font-weight:700;color:inherit;display:inline-block;margin-left:.5ch;padding:0}.flatpickr-current-month span.cur-month:hover{background:rgba(0,0,0,0.05)}.flatpickr-current-month .numInputWrapper{width:6ch;width:7ch\\0;display:inline-block}.flatpickr-current-month .numInputWrapper span.arrowUp:after{border-bottom-color:rgba(0,0,0,0.9)}.flatpickr-current-month .numInputWrapper span.arrowDown:after{border-top-color:rgba(0,0,0,0.9)}.flatpickr-current-month input.cur-year{background:transparent;-webkit-box-sizing:border-box;box-sizing:border-box;color:inherit;cursor:text;padding:0 0 0 .5ch;margin:0;display:inline-block;font-size:inherit;font-family:inherit;font-weight:300;line-height:inherit;height:auto;border:0;border-radius:0;vertical-align:initial;-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.flatpickr-current-month input.cur-year:focus{outline:0}.flatpickr-current-month input.cur-year[disabled],.flatpickr-current-month input.cur-year[disabled]:hover{font-size:100%;color:rgba(0,0,0,0.5);background:transparent;pointer-events:none}.flatpickr-current-month .flatpickr-monthDropdown-months{appearance:menulist;background:transparent;border:none;border-radius:0;box-sizing:border-box;color:inherit;cursor:pointer;font-size:inherit;font-family:inherit;font-weight:300;height:auto;line-height:inherit;margin:-1px 0 0 0;outline:none;padding:0 0 0 .5ch;position:relative;vertical-align:initial;-webkit-box-sizing:border-box;-webkit-appearance:menulist;-moz-appearance:menulist;width:auto}.flatpickr-current-month .flatpickr-monthDropdown-months:focus,.flatpickr-current-month .flatpickr-monthDropdown-months:active{outline:none}.flatpickr-current-month .flatpickr-monthDropdown-months:hover{background:rgba(0,0,0,0.05)}.flatpickr-current-month .flatpickr-monthDropdown-months .flatpickr-monthDropdown-month{background-color:transparent;outline:none;padding:0}.flatpickr-weekdays{background:transparent;text-align:center;overflow:hidden;width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;height:28px}.flatpickr-weekdays .flatpickr-weekdaycontainer{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}span.flatpickr-weekday{cursor:default;font-size:90%;background:transparent;color:rgba(0,0,0,0.54);line-height:1;margin:0;text-align:center;display:block;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;font-weight:bolder}.dayContainer,.flatpickr-weeks{padding:1px 0 0 0}.flatpickr-days{position:relative;overflow:hidden;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:flex-start;width:307.875px}.flatpickr-days:focus{outline:0}.dayContainer{padding:0;outline:0;text-align:left;width:307.875px;min-width:307.875px;max-width:307.875px;-webkit-box-sizing:border-box;box-sizing:border-box;display:inline-block;display:-ms-flexbox;display:-webkit-box;display:-webkit-flex;display:flex;-webkit-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-wrap:wrap;-ms-flex-pack:justify;-webkit-justify-content:space-around;justify-content:space-around;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}.dayContainer + .dayContainer{-webkit-box-shadow:-1px 0 0 #e6e6e6;box-shadow:-1px 0 0 #e6e6e6}.flatpickr-day{background:none;border:1px solid transparent;border-radius:150px;-webkit-box-sizing:border-box;box-sizing:border-box;color:#393939;cursor:pointer;font-weight:400;width:14.2857143%;-webkit-flex-basis:14.2857143%;-ms-flex-preferred-size:14.2857143%;flex-basis:14.2857143%;max-width:39px;height:39px;line-height:39px;margin:0;display:inline-block;position:relative;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;text-align:center}.flatpickr-day.inRange,.flatpickr-day.prevMonthDay.inRange,.flatpickr-day.nextMonthDay.inRange,.flatpickr-day.today.inRange,.flatpickr-day.prevMonthDay.today.inRange,.flatpickr-day.nextMonthDay.today.inRange,.flatpickr-day:hover,.flatpickr-day.prevMonthDay:hover,.flatpickr-day.nextMonthDay:hover,.flatpickr-day:focus,.flatpickr-day.prevMonthDay:focus,.flatpickr-day.nextMonthDay:focus{cursor:pointer;outline:0;background:#e6e6e6;border-color:#e6e6e6}.flatpickr-day.today{border-color:#959ea9}.flatpickr-day.today:hover,.flatpickr-day.today:focus{border-color:#959ea9;background:#959ea9;color:#fff}.flatpickr-day.selected,.flatpickr-day.startRange,.flatpickr-day.endRange,.flatpickr-day.selected.inRange,.flatpickr-day.startRange.inRange,.flatpickr-day.endRange.inRange,.flatpickr-day.selected:focus,.flatpickr-day.startRange:focus,.flatpickr-day.endRange:focus,.flatpickr-day.selected:hover,.flatpickr-day.startRange:hover,.flatpickr-day.endRange:hover,.flatpickr-day.selected.prevMonthDay,.flatpickr-day.startRange.prevMonthDay,.flatpickr-day.endRange.prevMonthDay,.flatpickr-day.selected.nextMonthDay,.flatpickr-day.startRange.nextMonthDay,.flatpickr-day.endRange.nextMonthDay{background:#569ff7;-webkit-box-shadow:none;box-shadow:none;color:#fff;border-color:#569ff7}.flatpickr-day.selected.startRange,.flatpickr-day.startRange.startRange,.flatpickr-day.endRange.startRange{border-radius:50px 0 0 50px}.flatpickr-day.selected.endRange,.flatpickr-day.startRange.endRange,.flatpickr-day.endRange.endRange{border-radius:0 50px 50px 0}.flatpickr-day.selected.startRange + .endRange:not(:nth-child(7n+1)),.flatpickr-day.startRange.startRange + .endRange:not(:nth-child(7n+1)),.flatpickr-day.endRange.startRange + .endRange:not(:nth-child(7n+1)){-webkit-box-shadow:-10px 0 0 #569ff7;box-shadow:-10px 0 0 #569ff7}.flatpickr-day.selected.startRange.endRange,.flatpickr-day.startRange.startRange.endRange,.flatpickr-day.endRange.startRange.endRange{border-radius:50px}.flatpickr-day.inRange{border-radius:0;-webkit-box-shadow:-5px 0 0 #e6e6e6,5px 0 0 #e6e6e6;box-shadow:-5px 0 0 #e6e6e6,5px 0 0 #e6e6e6}.flatpickr-day.flatpickr-disabled,.flatpickr-day.flatpickr-disabled:hover,.flatpickr-day.prevMonthDay,.flatpickr-day.nextMonthDay,.flatpickr-day.notAllowed,.flatpickr-day.notAllowed.prevMonthDay,.flatpickr-day.notAllowed.nextMonthDay{color:rgba(57,57,57,0.3);background:transparent;border-color:transparent;cursor:default}.flatpickr-day.flatpickr-disabled,.flatpickr-day.flatpickr-disabled:hover{cursor:not-allowed;color:rgba(57,57,57,0.1)}.flatpickr-day.week.selected{border-radius:0;-webkit-box-shadow:-5px 0 0 #569ff7,5px 0 0 #569ff7;box-shadow:-5px 0 0 #569ff7,5px 0 0 #569ff7}.flatpickr-day.hidden{visibility:hidden}.rangeMode .flatpickr-day{margin-top:1px}.flatpickr-weekwrapper{float:left}.flatpickr-weekwrapper .flatpickr-weeks{padding:0 12px;-webkit-box-shadow:1px 0 0 #e6e6e6;box-shadow:1px 0 0 #e6e6e6}.flatpickr-weekwrapper .flatpickr-weekday{float:none;width:100%;line-height:28px}.flatpickr-weekwrapper span.flatpickr-day,.flatpickr-weekwrapper span.flatpickr-day:hover{display:block;width:100%;max-width:none;color:rgba(57,57,57,0.3);background:transparent;cursor:default;border:none}.flatpickr-innerContainer{display:block;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden}.flatpickr-rContainer{display:inline-block;padding:0;-webkit-box-sizing:border-box;box-sizing:border-box}.flatpickr-time{text-align:center;outline:0;display:block;height:0;line-height:40px;max-height:40px;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.flatpickr-time:after{content:"";display:table;clear:both}.flatpickr-time .numInputWrapper{-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;width:40%;height:40px;float:left}.flatpickr-time .numInputWrapper span.arrowUp:after{border-bottom-color:#393939}.flatpickr-time .numInputWrapper span.arrowDown:after{border-top-color:#393939}.flatpickr-time.hasSeconds .numInputWrapper{width:26%}.flatpickr-time.time24hr .numInputWrapper{width:49%}.flatpickr-time input{background:transparent;-webkit-box-shadow:none;box-shadow:none;border:0;border-radius:0;text-align:center;margin:0;padding:0;height:inherit;line-height:inherit;color:#393939;font-size:14px;position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.flatpickr-time input.flatpickr-hour{font-weight:bold}.flatpickr-time input.flatpickr-minute,.flatpickr-time input.flatpickr-second{font-weight:400}.flatpickr-time input:focus{outline:0;border:0}.flatpickr-time .flatpickr-time-separator,.flatpickr-time .flatpickr-am-pm{height:inherit;float:left;line-height:inherit;color:#393939;font-weight:bold;width:2%;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-align-self:center;-ms-flex-item-align:center;align-self:center}.flatpickr-time .flatpickr-am-pm{outline:0;width:18%;cursor:pointer;text-align:center;font-weight:400}.flatpickr-time input:hover,.flatpickr-time .flatpickr-am-pm:hover,.flatpickr-time input:focus,.flatpickr-time .flatpickr-am-pm:focus{background:#eee}.flatpickr-input[readonly]{cursor:pointer}@-webkit-keyframes fpFadeInDown{from{opacity:0;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@keyframes fpFadeInDown{from{opacity:0;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}`, "",{"version":3,"sources":["webpack://./node_modules/flatpickr/dist/flatpickr.min.css"],"names":[],"mappings":"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","sourcesContent":[".flatpickr-calendar{background:transparent;opacity:0;display:none;text-align:center;visibility:hidden;padding:0;-webkit-animation:none;animation:none;direction:ltr;border:0;font-size:14px;line-height:24px;border-radius:5px;position:absolute;width:307.875px;-webkit-box-sizing:border-box;box-sizing:border-box;-ms-touch-action:manipulation;touch-action:manipulation;background:#fff;-webkit-box-shadow:1px 0 0 #e6e6e6,-1px 0 0 #e6e6e6,0 1px 0 #e6e6e6,0 -1px 0 #e6e6e6,0 3px 13px rgba(0,0,0,0.08);box-shadow:1px 0 0 #e6e6e6,-1px 0 0 #e6e6e6,0 1px 0 #e6e6e6,0 -1px 0 #e6e6e6,0 3px 13px rgba(0,0,0,0.08)}.flatpickr-calendar.open,.flatpickr-calendar.inline{opacity:1;max-height:640px;visibility:visible}.flatpickr-calendar.open{display:inline-block;z-index:99999}.flatpickr-calendar.animate.open{-webkit-animation:fpFadeInDown 300ms cubic-bezier(.23,1,.32,1);animation:fpFadeInDown 300ms cubic-bezier(.23,1,.32,1)}.flatpickr-calendar.inline{display:block;position:relative;top:2px}.flatpickr-calendar.static{position:absolute;top:calc(100% + 2px)}.flatpickr-calendar.static.open{z-index:999;display:block}.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+1) .flatpickr-day.inRange:nth-child(7n+7){-webkit-box-shadow:none !important;box-shadow:none !important}.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+2) .flatpickr-day.inRange:nth-child(7n+1){-webkit-box-shadow:-2px 0 0 #e6e6e6,5px 0 0 #e6e6e6;box-shadow:-2px 0 0 #e6e6e6,5px 0 0 #e6e6e6}.flatpickr-calendar .hasWeeks .dayContainer,.flatpickr-calendar .hasTime .dayContainer{border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.flatpickr-calendar .hasWeeks .dayContainer{border-left:0}.flatpickr-calendar.hasTime .flatpickr-time{height:40px;border-top:1px solid #e6e6e6}.flatpickr-calendar.noCalendar.hasTime .flatpickr-time{height:auto}.flatpickr-calendar:before,.flatpickr-calendar:after{position:absolute;display:block;pointer-events:none;border:solid transparent;content:'';height:0;width:0;left:22px}.flatpickr-calendar.rightMost:before,.flatpickr-calendar.arrowRight:before,.flatpickr-calendar.rightMost:after,.flatpickr-calendar.arrowRight:after{left:auto;right:22px}.flatpickr-calendar.arrowCenter:before,.flatpickr-calendar.arrowCenter:after{left:50%;right:50%}.flatpickr-calendar:before{border-width:5px;margin:0 -5px}.flatpickr-calendar:after{border-width:4px;margin:0 -4px}.flatpickr-calendar.arrowTop:before,.flatpickr-calendar.arrowTop:after{bottom:100%}.flatpickr-calendar.arrowTop:before{border-bottom-color:#e6e6e6}.flatpickr-calendar.arrowTop:after{border-bottom-color:#fff}.flatpickr-calendar.arrowBottom:before,.flatpickr-calendar.arrowBottom:after{top:100%}.flatpickr-calendar.arrowBottom:before{border-top-color:#e6e6e6}.flatpickr-calendar.arrowBottom:after{border-top-color:#fff}.flatpickr-calendar:focus{outline:0}.flatpickr-wrapper{position:relative;display:inline-block}.flatpickr-months{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.flatpickr-months .flatpickr-month{background:transparent;color:rgba(0,0,0,0.9);fill:rgba(0,0,0,0.9);height:34px;line-height:1;text-align:center;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:hidden;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}.flatpickr-months .flatpickr-prev-month,.flatpickr-months .flatpickr-next-month{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;text-decoration:none;cursor:pointer;position:absolute;top:0;height:34px;padding:10px;z-index:3;color:rgba(0,0,0,0.9);fill:rgba(0,0,0,0.9)}.flatpickr-months .flatpickr-prev-month.flatpickr-disabled,.flatpickr-months .flatpickr-next-month.flatpickr-disabled{display:none}.flatpickr-months .flatpickr-prev-month i,.flatpickr-months .flatpickr-next-month i{position:relative}.flatpickr-months .flatpickr-prev-month.flatpickr-prev-month,.flatpickr-months .flatpickr-next-month.flatpickr-prev-month{/*\n /*rtl:begin:ignore*/left:0/*\n /*rtl:end:ignore*/}/*\n /*rtl:begin:ignore*/\n/*\n /*rtl:end:ignore*/\n.flatpickr-months .flatpickr-prev-month.flatpickr-next-month,.flatpickr-months .flatpickr-next-month.flatpickr-next-month{/*\n /*rtl:begin:ignore*/right:0/*\n /*rtl:end:ignore*/}/*\n /*rtl:begin:ignore*/\n/*\n /*rtl:end:ignore*/\n.flatpickr-months .flatpickr-prev-month:hover,.flatpickr-months .flatpickr-next-month:hover{color:#959ea9}.flatpickr-months .flatpickr-prev-month:hover svg,.flatpickr-months .flatpickr-next-month:hover svg{fill:#f64747}.flatpickr-months .flatpickr-prev-month svg,.flatpickr-months .flatpickr-next-month svg{width:14px;height:14px}.flatpickr-months .flatpickr-prev-month svg path,.flatpickr-months .flatpickr-next-month svg path{-webkit-transition:fill .1s;transition:fill .1s;fill:inherit}.numInputWrapper{position:relative;height:auto}.numInputWrapper input,.numInputWrapper span{display:inline-block}.numInputWrapper input{width:100%}.numInputWrapper input::-ms-clear{display:none}.numInputWrapper input::-webkit-outer-spin-button,.numInputWrapper input::-webkit-inner-spin-button{margin:0;-webkit-appearance:none}.numInputWrapper span{position:absolute;right:0;width:14px;padding:0 4px 0 2px;height:50%;line-height:50%;opacity:0;cursor:pointer;border:1px solid rgba(57,57,57,0.15);-webkit-box-sizing:border-box;box-sizing:border-box}.numInputWrapper span:hover{background:rgba(0,0,0,0.1)}.numInputWrapper span:active{background:rgba(0,0,0,0.2)}.numInputWrapper span:after{display:block;content:\"\";position:absolute}.numInputWrapper span.arrowUp{top:0;border-bottom:0}.numInputWrapper span.arrowUp:after{border-left:4px solid transparent;border-right:4px solid transparent;border-bottom:4px solid rgba(57,57,57,0.6);top:26%}.numInputWrapper span.arrowDown{top:50%}.numInputWrapper span.arrowDown:after{border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px solid rgba(57,57,57,0.6);top:40%}.numInputWrapper span svg{width:inherit;height:auto}.numInputWrapper span svg path{fill:rgba(0,0,0,0.5)}.numInputWrapper:hover{background:rgba(0,0,0,0.05)}.numInputWrapper:hover span{opacity:1}.flatpickr-current-month{font-size:135%;line-height:inherit;font-weight:300;color:inherit;position:absolute;width:75%;left:12.5%;padding:7.48px 0 0 0;line-height:1;height:34px;display:inline-block;text-align:center;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.flatpickr-current-month span.cur-month{font-family:inherit;font-weight:700;color:inherit;display:inline-block;margin-left:.5ch;padding:0}.flatpickr-current-month span.cur-month:hover{background:rgba(0,0,0,0.05)}.flatpickr-current-month .numInputWrapper{width:6ch;width:7ch\\0;display:inline-block}.flatpickr-current-month .numInputWrapper span.arrowUp:after{border-bottom-color:rgba(0,0,0,0.9)}.flatpickr-current-month .numInputWrapper span.arrowDown:after{border-top-color:rgba(0,0,0,0.9)}.flatpickr-current-month input.cur-year{background:transparent;-webkit-box-sizing:border-box;box-sizing:border-box;color:inherit;cursor:text;padding:0 0 0 .5ch;margin:0;display:inline-block;font-size:inherit;font-family:inherit;font-weight:300;line-height:inherit;height:auto;border:0;border-radius:0;vertical-align:initial;-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.flatpickr-current-month input.cur-year:focus{outline:0}.flatpickr-current-month input.cur-year[disabled],.flatpickr-current-month input.cur-year[disabled]:hover{font-size:100%;color:rgba(0,0,0,0.5);background:transparent;pointer-events:none}.flatpickr-current-month .flatpickr-monthDropdown-months{appearance:menulist;background:transparent;border:none;border-radius:0;box-sizing:border-box;color:inherit;cursor:pointer;font-size:inherit;font-family:inherit;font-weight:300;height:auto;line-height:inherit;margin:-1px 0 0 0;outline:none;padding:0 0 0 .5ch;position:relative;vertical-align:initial;-webkit-box-sizing:border-box;-webkit-appearance:menulist;-moz-appearance:menulist;width:auto}.flatpickr-current-month .flatpickr-monthDropdown-months:focus,.flatpickr-current-month .flatpickr-monthDropdown-months:active{outline:none}.flatpickr-current-month .flatpickr-monthDropdown-months:hover{background:rgba(0,0,0,0.05)}.flatpickr-current-month .flatpickr-monthDropdown-months .flatpickr-monthDropdown-month{background-color:transparent;outline:none;padding:0}.flatpickr-weekdays{background:transparent;text-align:center;overflow:hidden;width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;height:28px}.flatpickr-weekdays .flatpickr-weekdaycontainer{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}span.flatpickr-weekday{cursor:default;font-size:90%;background:transparent;color:rgba(0,0,0,0.54);line-height:1;margin:0;text-align:center;display:block;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;font-weight:bolder}.dayContainer,.flatpickr-weeks{padding:1px 0 0 0}.flatpickr-days{position:relative;overflow:hidden;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:flex-start;width:307.875px}.flatpickr-days:focus{outline:0}.dayContainer{padding:0;outline:0;text-align:left;width:307.875px;min-width:307.875px;max-width:307.875px;-webkit-box-sizing:border-box;box-sizing:border-box;display:inline-block;display:-ms-flexbox;display:-webkit-box;display:-webkit-flex;display:flex;-webkit-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-wrap:wrap;-ms-flex-pack:justify;-webkit-justify-content:space-around;justify-content:space-around;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}.dayContainer + .dayContainer{-webkit-box-shadow:-1px 0 0 #e6e6e6;box-shadow:-1px 0 0 #e6e6e6}.flatpickr-day{background:none;border:1px solid transparent;border-radius:150px;-webkit-box-sizing:border-box;box-sizing:border-box;color:#393939;cursor:pointer;font-weight:400;width:14.2857143%;-webkit-flex-basis:14.2857143%;-ms-flex-preferred-size:14.2857143%;flex-basis:14.2857143%;max-width:39px;height:39px;line-height:39px;margin:0;display:inline-block;position:relative;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;text-align:center}.flatpickr-day.inRange,.flatpickr-day.prevMonthDay.inRange,.flatpickr-day.nextMonthDay.inRange,.flatpickr-day.today.inRange,.flatpickr-day.prevMonthDay.today.inRange,.flatpickr-day.nextMonthDay.today.inRange,.flatpickr-day:hover,.flatpickr-day.prevMonthDay:hover,.flatpickr-day.nextMonthDay:hover,.flatpickr-day:focus,.flatpickr-day.prevMonthDay:focus,.flatpickr-day.nextMonthDay:focus{cursor:pointer;outline:0;background:#e6e6e6;border-color:#e6e6e6}.flatpickr-day.today{border-color:#959ea9}.flatpickr-day.today:hover,.flatpickr-day.today:focus{border-color:#959ea9;background:#959ea9;color:#fff}.flatpickr-day.selected,.flatpickr-day.startRange,.flatpickr-day.endRange,.flatpickr-day.selected.inRange,.flatpickr-day.startRange.inRange,.flatpickr-day.endRange.inRange,.flatpickr-day.selected:focus,.flatpickr-day.startRange:focus,.flatpickr-day.endRange:focus,.flatpickr-day.selected:hover,.flatpickr-day.startRange:hover,.flatpickr-day.endRange:hover,.flatpickr-day.selected.prevMonthDay,.flatpickr-day.startRange.prevMonthDay,.flatpickr-day.endRange.prevMonthDay,.flatpickr-day.selected.nextMonthDay,.flatpickr-day.startRange.nextMonthDay,.flatpickr-day.endRange.nextMonthDay{background:#569ff7;-webkit-box-shadow:none;box-shadow:none;color:#fff;border-color:#569ff7}.flatpickr-day.selected.startRange,.flatpickr-day.startRange.startRange,.flatpickr-day.endRange.startRange{border-radius:50px 0 0 50px}.flatpickr-day.selected.endRange,.flatpickr-day.startRange.endRange,.flatpickr-day.endRange.endRange{border-radius:0 50px 50px 0}.flatpickr-day.selected.startRange + .endRange:not(:nth-child(7n+1)),.flatpickr-day.startRange.startRange + .endRange:not(:nth-child(7n+1)),.flatpickr-day.endRange.startRange + .endRange:not(:nth-child(7n+1)){-webkit-box-shadow:-10px 0 0 #569ff7;box-shadow:-10px 0 0 #569ff7}.flatpickr-day.selected.startRange.endRange,.flatpickr-day.startRange.startRange.endRange,.flatpickr-day.endRange.startRange.endRange{border-radius:50px}.flatpickr-day.inRange{border-radius:0;-webkit-box-shadow:-5px 0 0 #e6e6e6,5px 0 0 #e6e6e6;box-shadow:-5px 0 0 #e6e6e6,5px 0 0 #e6e6e6}.flatpickr-day.flatpickr-disabled,.flatpickr-day.flatpickr-disabled:hover,.flatpickr-day.prevMonthDay,.flatpickr-day.nextMonthDay,.flatpickr-day.notAllowed,.flatpickr-day.notAllowed.prevMonthDay,.flatpickr-day.notAllowed.nextMonthDay{color:rgba(57,57,57,0.3);background:transparent;border-color:transparent;cursor:default}.flatpickr-day.flatpickr-disabled,.flatpickr-day.flatpickr-disabled:hover{cursor:not-allowed;color:rgba(57,57,57,0.1)}.flatpickr-day.week.selected{border-radius:0;-webkit-box-shadow:-5px 0 0 #569ff7,5px 0 0 #569ff7;box-shadow:-5px 0 0 #569ff7,5px 0 0 #569ff7}.flatpickr-day.hidden{visibility:hidden}.rangeMode .flatpickr-day{margin-top:1px}.flatpickr-weekwrapper{float:left}.flatpickr-weekwrapper .flatpickr-weeks{padding:0 12px;-webkit-box-shadow:1px 0 0 #e6e6e6;box-shadow:1px 0 0 #e6e6e6}.flatpickr-weekwrapper .flatpickr-weekday{float:none;width:100%;line-height:28px}.flatpickr-weekwrapper span.flatpickr-day,.flatpickr-weekwrapper span.flatpickr-day:hover{display:block;width:100%;max-width:none;color:rgba(57,57,57,0.3);background:transparent;cursor:default;border:none}.flatpickr-innerContainer{display:block;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden}.flatpickr-rContainer{display:inline-block;padding:0;-webkit-box-sizing:border-box;box-sizing:border-box}.flatpickr-time{text-align:center;outline:0;display:block;height:0;line-height:40px;max-height:40px;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.flatpickr-time:after{content:\"\";display:table;clear:both}.flatpickr-time .numInputWrapper{-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;width:40%;height:40px;float:left}.flatpickr-time .numInputWrapper span.arrowUp:after{border-bottom-color:#393939}.flatpickr-time .numInputWrapper span.arrowDown:after{border-top-color:#393939}.flatpickr-time.hasSeconds .numInputWrapper{width:26%}.flatpickr-time.time24hr .numInputWrapper{width:49%}.flatpickr-time input{background:transparent;-webkit-box-shadow:none;box-shadow:none;border:0;border-radius:0;text-align:center;margin:0;padding:0;height:inherit;line-height:inherit;color:#393939;font-size:14px;position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.flatpickr-time input.flatpickr-hour{font-weight:bold}.flatpickr-time input.flatpickr-minute,.flatpickr-time input.flatpickr-second{font-weight:400}.flatpickr-time input:focus{outline:0;border:0}.flatpickr-time .flatpickr-time-separator,.flatpickr-time .flatpickr-am-pm{height:inherit;float:left;line-height:inherit;color:#393939;font-weight:bold;width:2%;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-align-self:center;-ms-flex-item-align:center;align-self:center}.flatpickr-time .flatpickr-am-pm{outline:0;width:18%;cursor:pointer;text-align:center;font-weight:400}.flatpickr-time input:hover,.flatpickr-time .flatpickr-am-pm:hover,.flatpickr-time input:focus,.flatpickr-time .flatpickr-am-pm:focus{background:#eee}.flatpickr-input[readonly]{cursor:pointer}@-webkit-keyframes fpFadeInDown{from{opacity:0;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@keyframes fpFadeInDown{from{opacity:0;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}"],"sourceRoot":""}]); +// Exports +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); + + +/***/ }), + +/***/ 645: +/***/ ((module) => { + +"use strict"; + + +/* + MIT License http://www.opensource.org/licenses/mit-license.php + Author Tobias Koppers @sokra +*/ +module.exports = function (cssWithMappingToString) { + var list = []; + + // return the list of modules as css string + list.toString = function toString() { + return this.map(function (item) { + var content = ""; + var needLayer = typeof item[5] !== "undefined"; + if (item[4]) { + content += "@supports (".concat(item[4], ") {"); + } + if (item[2]) { + content += "@media ".concat(item[2], " {"); + } + if (needLayer) { + content += "@layer".concat(item[5].length > 0 ? " ".concat(item[5]) : "", " {"); + } + content += cssWithMappingToString(item); + if (needLayer) { + content += "}"; + } + if (item[2]) { + content += "}"; + } + if (item[4]) { + content += "}"; + } + return content; + }).join(""); + }; + + // import a list of modules into the list + list.i = function i(modules, media, dedupe, supports, layer) { + if (typeof modules === "string") { + modules = [[null, modules, undefined]]; + } + var alreadyImportedModules = {}; + if (dedupe) { + for (var k = 0; k < this.length; k++) { + var id = this[k][0]; + if (id != null) { + alreadyImportedModules[id] = true; + } + } + } + for (var _k = 0; _k < modules.length; _k++) { + var item = [].concat(modules[_k]); + if (dedupe && alreadyImportedModules[item[0]]) { + continue; + } + if (typeof layer !== "undefined") { + if (typeof item[5] === "undefined") { + item[5] = layer; + } else { + item[1] = "@layer".concat(item[5].length > 0 ? " ".concat(item[5]) : "", " {").concat(item[1], "}"); + item[5] = layer; + } + } + if (media) { + if (!item[2]) { + item[2] = media; + } else { + item[1] = "@media ".concat(item[2], " {").concat(item[1], "}"); + item[2] = media; + } + } + if (supports) { + if (!item[4]) { + item[4] = "".concat(supports); + } else { + item[1] = "@supports (".concat(item[4], ") {").concat(item[1], "}"); + item[4] = supports; + } + } + list.push(item); + } + }; + return list; +}; + +/***/ }), + +/***/ 537: +/***/ ((module) => { + +"use strict"; + + +module.exports = function (item) { + var content = item[1]; + var cssMapping = item[3]; + if (!cssMapping) { + return content; + } + if (typeof btoa === "function") { + var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(cssMapping)))); + var data = "sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(base64); + var sourceMapping = "/*# ".concat(data, " */"); + return [content].concat([sourceMapping]).join("\n"); + } + return [content].join("\n"); +}; + +/***/ }), + +/***/ 745: +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +var __webpack_unused_export__; + + +var m = __webpack_require__(137); +if (true) { + exports.s = m.createRoot; + __webpack_unused_export__ = m.hydrateRoot; +} else { var i; } + + +/***/ }), + +/***/ 590: +/***/ ((module) => { + +/* global Map:readonly, Set:readonly, ArrayBuffer:readonly */ + +var hasElementType = typeof Element !== 'undefined'; +var hasMap = typeof Map === 'function'; +var hasSet = typeof Set === 'function'; +var hasArrayBuffer = typeof ArrayBuffer === 'function' && !!ArrayBuffer.isView; + +// Note: We **don't** need `envHasBigInt64Array` in fde es6/index.js + +function equal(a, b) { + // START: fast-deep-equal es6/index.js 3.1.3 + if (a === b) return true; + + if (a && b && typeof a == 'object' && typeof b == 'object') { + if (a.constructor !== b.constructor) return false; + + var length, i, keys; + if (Array.isArray(a)) { + length = a.length; + if (length != b.length) return false; + for (i = length; i-- !== 0;) + if (!equal(a[i], b[i])) return false; + return true; + } + + // START: Modifications: + // 1. Extra `has &&` helpers in initial condition allow es6 code + // to co-exist with es5. + // 2. Replace `for of` with es5 compliant iteration using `for`. + // Basically, take: + // + // ```js + // for (i of a.entries()) + // if (!b.has(i[0])) return false; + // ``` + // + // ... and convert to: + // + // ```js + // it = a.entries(); + // while (!(i = it.next()).done) + // if (!b.has(i.value[0])) return false; + // ``` + // + // **Note**: `i` access switches to `i.value`. + var it; + if (hasMap && (a instanceof Map) && (b instanceof Map)) { + if (a.size !== b.size) return false; + it = a.entries(); + while (!(i = it.next()).done) + if (!b.has(i.value[0])) return false; + it = a.entries(); + while (!(i = it.next()).done) + if (!equal(i.value[1], b.get(i.value[0]))) return false; + return true; + } + + if (hasSet && (a instanceof Set) && (b instanceof Set)) { + if (a.size !== b.size) return false; + it = a.entries(); + while (!(i = it.next()).done) + if (!b.has(i.value[0])) return false; + return true; + } + // END: Modifications + + if (hasArrayBuffer && ArrayBuffer.isView(a) && ArrayBuffer.isView(b)) { + length = a.length; + if (length != b.length) return false; + for (i = length; i-- !== 0;) + if (a[i] !== b[i]) return false; + return true; + } + + if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags; + // START: Modifications: + // Apply guards for `Object.create(null)` handling. See: + // - https://github.com/FormidableLabs/react-fast-compare/issues/64 + // - https://github.com/epoberezkin/fast-deep-equal/issues/49 + if (a.valueOf !== Object.prototype.valueOf && typeof a.valueOf === 'function' && typeof b.valueOf === 'function') return a.valueOf() === b.valueOf(); + if (a.toString !== Object.prototype.toString && typeof a.toString === 'function' && typeof b.toString === 'function') return a.toString() === b.toString(); + // END: Modifications + + keys = Object.keys(a); + length = keys.length; + if (length !== Object.keys(b).length) return false; + + for (i = length; i-- !== 0;) + if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false; + // END: fast-deep-equal + + // START: react-fast-compare + // custom handling for DOM elements + if (hasElementType && a instanceof Element) return false; + + // custom handling for React/Preact + for (i = length; i-- !== 0;) { + if ((keys[i] === '_owner' || keys[i] === '__v' || keys[i] === '__o') && a.$$typeof) { + // React-specific: avoid traversing React elements' _owner + // Preact-specific: avoid traversing Preact elements' __v and __o + // __v = $_original / $_vnode + // __o = $_owner + // These properties contain circular references and are not needed when + // comparing the actual elements (and not their owners) + // .$$typeof and ._store on just reasonable markers of elements + + continue; + } + + // all other properties should be traversed as usual + if (!equal(a[keys[i]], b[keys[i]])) return false; + } + // END: react-fast-compare + + // START: fast-deep-equal + return true; + } + + return a !== a && b !== b; +} +// end fast-deep-equal + +module.exports = function isEqual(a, b) { + try { + return equal(a, b); + } catch (error) { + if (((error.message || '').match(/stack|recursion/i))) { + // warn on circular references, don't crash + // browsers give this different errors name and messages: + // chrome/safari: "RangeError", "Maximum call stack size exceeded" + // firefox: "InternalError", too much recursion" + // edge: "Error", "Out of stack space" + console.warn('react-fast-compare cannot handle circular refs'); + return false; + } + // some other error. we should definitely know about these + throw error; + } +}; + + +/***/ }), + +/***/ 379: +/***/ ((module) => { + +"use strict"; + + +var stylesInDOM = []; +function getIndexByIdentifier(identifier) { + var result = -1; + for (var i = 0; i < stylesInDOM.length; i++) { + if (stylesInDOM[i].identifier === identifier) { + result = i; + break; + } + } + return result; +} +function modulesToDom(list, options) { + var idCountMap = {}; + var identifiers = []; + for (var i = 0; i < list.length; i++) { + var item = list[i]; + var id = options.base ? item[0] + options.base : item[0]; + var count = idCountMap[id] || 0; + var identifier = "".concat(id, " ").concat(count); + idCountMap[id] = count + 1; + var indexByIdentifier = getIndexByIdentifier(identifier); + var obj = { + css: item[1], + media: item[2], + sourceMap: item[3], + supports: item[4], + layer: item[5] + }; + if (indexByIdentifier !== -1) { + stylesInDOM[indexByIdentifier].references++; + stylesInDOM[indexByIdentifier].updater(obj); + } else { + var updater = addElementStyle(obj, options); + options.byIndex = i; + stylesInDOM.splice(i, 0, { + identifier: identifier, + updater: updater, + references: 1 + }); + } + identifiers.push(identifier); + } + return identifiers; +} +function addElementStyle(obj, options) { + var api = options.domAPI(options); + api.update(obj); + var updater = function updater(newObj) { + if (newObj) { + if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap && newObj.supports === obj.supports && newObj.layer === obj.layer) { + return; + } + api.update(obj = newObj); + } else { + api.remove(); + } + }; + return updater; +} +module.exports = function (list, options) { + options = options || {}; + list = list || []; + var lastIdentifiers = modulesToDom(list, options); + return function update(newList) { + newList = newList || []; + for (var i = 0; i < lastIdentifiers.length; i++) { + var identifier = lastIdentifiers[i]; + var index = getIndexByIdentifier(identifier); + stylesInDOM[index].references--; + } + var newLastIdentifiers = modulesToDom(newList, options); + for (var _i = 0; _i < lastIdentifiers.length; _i++) { + var _identifier = lastIdentifiers[_i]; + var _index = getIndexByIdentifier(_identifier); + if (stylesInDOM[_index].references === 0) { + stylesInDOM[_index].updater(); + stylesInDOM.splice(_index, 1); + } + } + lastIdentifiers = newLastIdentifiers; + }; +}; + +/***/ }), + +/***/ 569: +/***/ ((module) => { + +"use strict"; + + +var memo = {}; + +/* istanbul ignore next */ +function getTarget(target) { + if (typeof memo[target] === "undefined") { + var styleTarget = document.querySelector(target); + + // Special case to return head of iframe instead of iframe itself + if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) { + try { + // This will throw an exception if access to iframe is blocked + // due to cross-origin restrictions + styleTarget = styleTarget.contentDocument.head; + } catch (e) { + // istanbul ignore next + styleTarget = null; + } + } + memo[target] = styleTarget; + } + return memo[target]; +} + +/* istanbul ignore next */ +function insertBySelector(insert, style) { + var target = getTarget(insert); + if (!target) { + throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid."); + } + target.appendChild(style); +} +module.exports = insertBySelector; + +/***/ }), + +/***/ 216: +/***/ ((module) => { + +"use strict"; + + +/* istanbul ignore next */ +function insertStyleElement(options) { + var element = document.createElement("style"); + options.setAttributes(element, options.attributes); + options.insert(element, options.options); + return element; +} +module.exports = insertStyleElement; + +/***/ }), + +/***/ 565: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +/* istanbul ignore next */ +function setAttributesWithoutAttributes(styleElement) { + var nonce = true ? __webpack_require__.nc : 0; + if (nonce) { + styleElement.setAttribute("nonce", nonce); + } +} +module.exports = setAttributesWithoutAttributes; + +/***/ }), + +/***/ 795: +/***/ ((module) => { + +"use strict"; + + +/* istanbul ignore next */ +function apply(styleElement, options, obj) { + var css = ""; + if (obj.supports) { + css += "@supports (".concat(obj.supports, ") {"); + } + if (obj.media) { + css += "@media ".concat(obj.media, " {"); + } + var needLayer = typeof obj.layer !== "undefined"; + if (needLayer) { + css += "@layer".concat(obj.layer.length > 0 ? " ".concat(obj.layer) : "", " {"); + } + css += obj.css; + if (needLayer) { + css += "}"; + } + if (obj.media) { + css += "}"; + } + if (obj.supports) { + css += "}"; + } + var sourceMap = obj.sourceMap; + if (sourceMap && typeof btoa !== "undefined") { + css += "\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), " */"); + } + + // For old IE + /* istanbul ignore if */ + options.styleTagTransform(css, styleElement, options.options); +} +function removeStyleElement(styleElement) { + // istanbul ignore if + if (styleElement.parentNode === null) { + return false; + } + styleElement.parentNode.removeChild(styleElement); +} + +/* istanbul ignore next */ +function domAPI(options) { + if (typeof document === "undefined") { + return { + update: function update() {}, + remove: function remove() {} + }; + } + var styleElement = options.insertStyleElement(options); + return { + update: function update(obj) { + apply(styleElement, options, obj); + }, + remove: function remove() { + removeStyleElement(styleElement); + } + }; +} +module.exports = domAPI; + +/***/ }), + +/***/ 589: +/***/ ((module) => { + +"use strict"; + + +/* istanbul ignore next */ +function styleTagTransform(css, styleElement) { + if (styleElement.styleSheet) { + styleElement.styleSheet.cssText = css; + } else { + while (styleElement.firstChild) { + styleElement.removeChild(styleElement.firstChild); + } + styleElement.appendChild(document.createTextNode(css)); + } +} +module.exports = styleTagTransform; + +/***/ }), + +/***/ 137: +/***/ ((module) => { + +"use strict"; +module.exports = require("react-dom"); + +/***/ }) + +/******/ }); +/************************************************************************/ +/******/ // The module cache +/******/ var __webpack_module_cache__ = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ // Check if module is in cache +/******/ var cachedModule = __webpack_module_cache__[moduleId]; +/******/ if (cachedModule !== undefined) { +/******/ return cachedModule.exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = __webpack_module_cache__[moduleId] = { +/******/ id: moduleId, +/******/ loaded: false, +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.loaded = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/************************************************************************/ +/******/ /* webpack/runtime/amd define */ +/******/ (() => { +/******/ __webpack_require__.amdD = function () { +/******/ throw new Error('define cannot be used indirect'); +/******/ }; +/******/ })(); +/******/ +/******/ /* webpack/runtime/compat get default export */ +/******/ (() => { +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = (module) => { +/******/ var getter = module && module.__esModule ? +/******/ () => (module['default']) : +/******/ () => (module); +/******/ __webpack_require__.d(getter, { a: getter }); +/******/ return getter; +/******/ }; +/******/ })(); +/******/ +/******/ /* webpack/runtime/define property getters */ +/******/ (() => { +/******/ // define getter functions for harmony exports +/******/ __webpack_require__.d = (exports, definition) => { +/******/ for(var key in definition) { +/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) { +/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] }); +/******/ } +/******/ } +/******/ }; +/******/ })(); +/******/ +/******/ /* webpack/runtime/hasOwnProperty shorthand */ +/******/ (() => { +/******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop)) +/******/ })(); +/******/ +/******/ /* webpack/runtime/make namespace object */ +/******/ (() => { +/******/ // define __esModule on exports +/******/ __webpack_require__.r = (exports) => { +/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { +/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); +/******/ } +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ })(); +/******/ +/******/ /* webpack/runtime/node module decorator */ +/******/ (() => { +/******/ __webpack_require__.nmd = (module) => { +/******/ module.paths = []; +/******/ if (!module.children) module.children = []; +/******/ return module; +/******/ }; +/******/ })(); +/******/ +/******/ /* webpack/runtime/publicPath */ +/******/ (() => { +/******/ __webpack_require__.p = ""; +/******/ })(); +/******/ +/******/ /* webpack/runtime/nonce */ +/******/ (() => { +/******/ __webpack_require__.nc = undefined; +/******/ })(); +/******/ +/************************************************************************/ +var __webpack_exports__ = {}; +// This entry need to be wrapped in an IIFE because it need to be in strict mode. +(() => { +"use strict"; +// ESM COMPAT FLAG +__webpack_require__.r(__webpack_exports__); + +// EXPORTS +__webpack_require__.d(__webpack_exports__, { + Accordion: () => (/* reexport */ components_Accordion), + Button: () => (/* reexport */ components_Button), + ButtonGroup: () => (/* reexport */ components_ButtonGroup), + Chart: () => (/* reexport */ components_Chart), + Checkbox: () => (/* reexport */ Checkbox), + CodeEditor: () => (/* reexport */ components_CodeEditor), + Collapsible: () => (/* reexport */ components_Collapsible), + Column: () => (/* reexport */ layout_Column), + Combobox: () => (/* reexport */ Combobox), + Combobox2: () => (/* reexport */ components_Combobox2), + Confirm: () => (/* reexport */ components_Confirm), + CopyToClipboard: () => (/* reexport */ components_CopyToClipboard), + DatePicker: () => (/* reexport */ components_DatePicker), + Dropdown: () => (/* reexport */ components_Dropdown), + EditableList: () => (/* reexport */ EditableList), + EditableList2: () => (/* reexport */ components_EditableList2), + FieldCodeEditor: () => (/* reexport */ FieldCodeEditor), + FieldCombobox: () => (/* reexport */ FieldCombobox), + FieldCombobox2: () => (/* reexport */ redux_form_FieldCombobox2), + FieldDatePicker: () => (/* reexport */ FieldDatePicker), + FieldDropdown: () => (/* reexport */ FieldDropdown), + FieldEditableList: () => (/* reexport */ FieldEditableList), + FieldFileInput: () => (/* reexport */ FieldFileInput), + FieldInput: () => (/* reexport */ FieldInput), + FieldMultiselect: () => (/* reexport */ FieldMultiselect), + FieldPagination: () => (/* reexport */ redux_form_FieldPagination), + FieldSelect: () => (/* reexport */ FieldSelect), + FieldSelectableList: () => (/* reexport */ FieldSelectableList), + FieldToggle: () => (/* reexport */ FieldToggle), + FileInput: () => (/* reexport */ FileInput), + FixedWrapper: () => (/* reexport */ components_FixedWrapper), + FloatingContainer: () => (/* reexport */ components_FloatingContainer), + FormikCheckbox: () => (/* reexport */ FormikCheckbox), + FormikCodeEditor: () => (/* reexport */ FormikCodeEditor), + FormikCombobox: () => (/* reexport */ FormikCombobox), + FormikCombobox2: () => (/* reexport */ FormikCombobox2), + FormikDatePicker: () => (/* reexport */ FormikDatePicker), + FormikEditableList: () => (/* reexport */ FormikEditableList), + FormikEditableList2: () => (/* reexport */ FormikEditableList2), + FormikFileInput: () => (/* reexport */ FormikFileInput), + FormikInput: () => (/* reexport */ FormikInput), + FormikInput2: () => (/* reexport */ FormikInput2), + FormikMultiselect: () => (/* reexport */ FormikMultiselect), + FormikRadio: () => (/* reexport */ FormikRadio), + FormikSelect: () => (/* reexport */ FormikSelect), + FormikSelectableList: () => (/* reexport */ FormikSelectableList), + FormikStringBuilder: () => (/* reexport */ FormikStringBuilder), + FormikTextarea: () => (/* reexport */ FormikTextarea), + FormikToggle: () => (/* reexport */ FormikToggle), + FormikWrapper: () => (/* reexport */ formik), + Icon: () => (/* reexport */ components_Icon), + InfiniteScroller: () => (/* reexport */ components_InfiniteScroller), + InfoNote: () => (/* reexport */ components_InfoNote), + Input: () => (/* reexport */ Input), + Input2: () => (/* reexport */ components_Input2), + List: () => (/* reexport */ components_List), + Loader: () => (/* reexport */ components_Loader), + Message: () => (/* reexport */ components_Message), + Modal: () => (/* reexport */ components_Modal), + Multiselect: () => (/* reexport */ components_Multiselect), + NavBar: () => (/* reexport */ components_NavBar), + Navigation: () => (/* reexport */ components_Navigation), + Pagination: () => (/* reexport */ Pagination), + Panel: () => (/* reexport */ components_Panel), + Pill: () => (/* reexport */ components_Pill), + Radio: () => (/* reexport */ Radio), + RevealPanel: () => (/* reexport */ components_RevealPanel), + Row: () => (/* reexport */ Row_Row), + Select: () => (/* reexport */ Select), + SelectableList: () => (/* reexport */ components_SelectableList), + StringBuilder: () => (/* reexport */ components_StringBuilder), + Table: () => (/* reexport */ components_Table), + Tabs: () => (/* reexport */ components_Tabs), + TextEllipsis: () => (/* reexport */ components_TextEllipsis), + Textarea: () => (/* reexport */ components_Textarea), + Toggle: () => (/* reexport */ components_Toggle), + Tooltip: () => (/* reexport */ components_Tooltip), + setConfig: () => (/* reexport */ setConfig), + toast: () => (/* reexport */ Toast), + useComponentSize: () => (/* reexport */ hooks_useComponentSize), + useEventListener: () => (/* reexport */ hooks_useEventListener), + useInterval: () => (/* reexport */ useInterval), + usePrevious: () => (/* reexport */ hooks_usePrevious), + useTimeout: () => (/* reexport */ hooks_useTimeout) +}); + +;// CONCATENATED MODULE: external "react" +const external_react_namespaceObject = require("react"); +var external_react_default = /*#__PURE__*/__webpack_require__.n(external_react_namespaceObject); +;// CONCATENATED MODULE: external "prop-types" +const external_prop_types_namespaceObject = require("prop-types"); +var external_prop_types_default = /*#__PURE__*/__webpack_require__.n(external_prop_types_namespaceObject); +;// CONCATENATED MODULE: ./src/components/Accordion/js/AccordionContext.js + +const AccordionContext = (0,external_react_namespaceObject.createContext)(); +/* harmony default export */ const js_AccordionContext = (AccordionContext); + +;// CONCATENATED MODULE: ./src/components/Accordion/js/AccordionItemContext.js + +const AccordionItemContext = (0,external_react_namespaceObject.createContext)(); +/* harmony default export */ const js_AccordionItemContext = (AccordionItemContext); + +;// CONCATENATED MODULE: ./src/components/Icon/index.js +var __defProp = Object.defineProperty; +var __getOwnPropSymbols = Object.getOwnPropertySymbols; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __propIsEnum = Object.prototype.propertyIsEnumerable; +var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var __spreadValues = (a, b) => { + for (var prop in b || (b = {})) + if (__hasOwnProp.call(b, prop)) + __defNormalProp(a, prop, b[prop]); + if (__getOwnPropSymbols) + for (var prop of __getOwnPropSymbols(b)) { + if (__propIsEnum.call(b, prop)) + __defNormalProp(a, prop, b[prop]); + } + return a; +}; +var __objRest = (source, exclude) => { + var target = {}; + for (var prop in source) + if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) + target[prop] = source[prop]; + if (source != null && __getOwnPropSymbols) + for (var prop of __getOwnPropSymbols(source)) { + if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop)) + target[prop] = source[prop]; + } + return target; +}; + + +function Icon(_a) { + var _b = _a, { + className, + family, + type + } = _b, rest = __objRest(_b, [ + "className", + "family", + "type" + ]); + function getCSSClasses() { + const fontFamily = family || "fa"; + return [ + "tyk-icon", + fontFamily, + `${fontFamily}-${type}`, + className + ].filter(Boolean).join(" "); + } + return /* @__PURE__ */ external_react_default().createElement("i", __spreadValues({ className: getCSSClasses() }, rest)); +} +Icon.propTypes = { + className: (external_prop_types_default()).string, + family: (external_prop_types_default()).string, + type: (external_prop_types_default()).string.isRequired +}; +/* harmony default export */ const components_Icon = (Icon); + +;// CONCATENATED MODULE: ./src/components/Accordion/js/AccordionItemTrigger.js + + + + +function ItemTrigger({ wrap }) { + const { collapsed, disabled, toggleChange } = (0,external_react_namespaceObject.useContext)(js_AccordionItemContext); + const iconType = collapsed ? "chevron-down" : "chevron-up"; + const classes = [ + "tyk-accordion__trigger", + disabled && "tyk-accordion__trigger--disabled" + ].filter(Boolean).join(" "); + const trigger = /* @__PURE__ */ external_react_default().createElement( + "button", + { + className: classes, + onClick: toggleChange, + type: "button" + }, + /* @__PURE__ */ external_react_default().createElement(components_Icon, { className: "collapsable__arrow", type: iconType }) + ); + return wrap ? /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-accordion__trigger-wrapper" }, trigger) : trigger; +} +ItemTrigger.propTypes = { + wrap: (external_prop_types_default()).bool +}; +/* harmony default export */ const AccordionItemTrigger = (ItemTrigger); + +;// CONCATENATED MODULE: ./src/components/Accordion/js/AccordionItem.js + + + + + +function AccordionItem({ + collapsed: collapsedProp, + children, + className, + disabled +}, ref) { + const { arrow } = (0,external_react_namespaceObject.useContext)(js_AccordionContext); + const [collapsed, setCollapsed] = (0,external_react_namespaceObject.useState)(collapsedProp); + const toggleChange = () => { + if (disabled) { + return; + } + setCollapsed(!collapsed); + }; + const classes = (0,external_react_namespaceObject.useMemo)(() => [ + "tyk-accordion__item", + arrow.expandToContent ? `tyk-accordion__item--trigger-position-${arrow.position}` : "tyk-accordion__item--trigger-in-header", + className, + collapsed === false && "tyk-accordion__item--active" + ].filter(Boolean).join(" "), [arrow, className, collapsed]); + const contextValue = (0,external_react_namespaceObject.useMemo)(() => ({ + collapsed, + disabled, + toggleChange + }), [collapsed, disabled, toggleChange]); + return /* @__PURE__ */ external_react_default().createElement("div", { ref, className: classes }, /* @__PURE__ */ external_react_default().createElement(js_AccordionItemContext.Provider, { value: contextValue }, arrow.expandToContent && /* @__PURE__ */ external_react_default().createElement(AccordionItemTrigger, { wrap: true }), children)); +} +AccordionItem.propTypes = { + children: external_prop_types_default().oneOfType([ + external_prop_types_default().arrayOf((external_prop_types_default()).node), + (external_prop_types_default()).node, + (external_prop_types_default()).element, + (external_prop_types_default()).string + ]), + collapsed: (external_prop_types_default()).bool, + className: (external_prop_types_default()).string, + disabled: (external_prop_types_default()).bool +}; +AccordionItem.defaultProps = { + collapsed: false +}; +/* harmony default export */ const js_AccordionItem = ((0,external_react_namespaceObject.forwardRef)(AccordionItem)); + +;// CONCATENATED MODULE: ./src/components/Accordion/js/AccordionItemHeader.js + + + + + + +function AccordionItemHeader({ className, children }) { + const { collapsed, disabled, toggleChange } = (0,external_react_namespaceObject.useContext)(js_AccordionItemContext); + const { usearrowastrigger, arrow } = (0,external_react_namespaceObject.useContext)(js_AccordionContext); + const iconType = collapsed ? "chevron-down" : "chevron-up"; + const classes = [ + "tyk-accordion__item-header", + usearrowastrigger && "tyk-accordion__arrow-trigger", + className + ].filter(Boolean).join(" "); + return /* @__PURE__ */ external_react_default().createElement("div", { className: classes }, !usearrowastrigger ? /* @__PURE__ */ external_react_default().createElement( + "button", + { + className: disabled ? "tyk-accordion__trigger--disabled" : "", + onClick: toggleChange, + type: "button" + }, + /* @__PURE__ */ external_react_default().createElement("span", null, children), + /* @__PURE__ */ external_react_default().createElement(components_Icon, { className: "collapsable__arrow", type: iconType }) + ) : /* @__PURE__ */ external_react_default().createElement((external_react_default()).Fragment, null, !arrow.expandToContent && arrow.position === "left" && /* @__PURE__ */ external_react_default().createElement(AccordionItemTrigger, null), /* @__PURE__ */ external_react_default().createElement("div", null, children), !arrow.expandToContent && arrow.position === "right" && /* @__PURE__ */ external_react_default().createElement(AccordionItemTrigger, null))); +} +AccordionItemHeader.propTypes = { + children: external_prop_types_default().oneOfType([ + external_prop_types_default().arrayOf((external_prop_types_default()).node), + (external_prop_types_default()).node, + (external_prop_types_default()).element, + (external_prop_types_default()).string + ]), + className: (external_prop_types_default()).string +}; +/* harmony default export */ const js_AccordionItemHeader = (AccordionItemHeader); + +;// CONCATENATED MODULE: external "react-transition-group" +const external_react_transition_group_namespaceObject = require("react-transition-group"); +;// CONCATENATED MODULE: ./src/hooks/usePrevious/index.js + +const usePrevious = (value) => { + const ref = (0,external_react_namespaceObject.useRef)(); + (0,external_react_namespaceObject.useEffect)(() => { + ref.current = value; + }, [value]); + return ref.current; +}; +/* harmony default export */ const hooks_usePrevious = (usePrevious); + +;// CONCATENATED MODULE: ./src/hooks/useTimeout/index.js + +const useTimeout = (callback, delay) => { + const savedCallback = (0,external_react_namespaceObject.useRef)(); + (0,external_react_namespaceObject.useEffect)( + () => { + savedCallback.current = callback; + }, + [callback] + ); + (0,external_react_namespaceObject.useEffect)( + () => { + function tick() { + savedCallback.current(); + } + if (delay !== null) { + const id = setTimeout(tick, delay); + return () => clearTimeout(id); + } + return () => { + }; + }, + [delay] + ); +}; +/* harmony default export */ const hooks_useTimeout = (useTimeout); + +;// CONCATENATED MODULE: ./src/hooks/useInterval/index.js + +function useInterval(callback, delay, ...args) { + const savedCallback = (0,external_react_namespaceObject.useRef)(); + (0,external_react_namespaceObject.useEffect)(() => { + savedCallback.current = callback; + }, [callback]); + (0,external_react_namespaceObject.useEffect)(() => { + function tick() { + savedCallback.current(...args); + } + if (delay !== null && delay !== void 0) { + const id = setInterval(tick, delay); + return () => clearInterval(id); + } + }, [delay]); +} + +;// CONCATENATED MODULE: ./src/hooks/useEventListener/index.js + +const useEventListener = (eventName, handler, element) => { + const savedHandler = (0,external_react_namespaceObject.useRef)(); + (0,external_react_namespaceObject.useEffect)(() => { + savedHandler.current = handler; + }, [handler]); + (0,external_react_namespaceObject.useEffect)(() => { + const isSupported = element == null ? void 0 : element.addEventListener; + if (!isSupported) { + return; + } + const eventListener = (event) => savedHandler.current(event); + element.addEventListener(eventName, eventListener); + return () => { + element.removeEventListener(eventName, eventListener); + }; + }, [eventName, element]); +}; +/* harmony default export */ const hooks_useEventListener = (useEventListener); + +;// CONCATENATED MODULE: ./src/hooks/useComponentSize/index.js + +const getSize = (el) => { + if (!el) { + return { + width: 0, + height: 0 + }; + } + return { + width: el.offsetWidth, + height: el.offsetHeight + }; +}; +const useComponentSize = (ref) => { + const [ComponentSize, setComponentSize] = (0,external_react_namespaceObject.useState)(getSize(ref ? ref.current : {})); + const handleResize = (0,external_react_namespaceObject.useCallback)(() => { + if (ref.current) { + setComponentSize(getSize(ref.current)); + } + }, [ref]); + (0,external_react_namespaceObject.useLayoutEffect)(() => { + handleResize(); + let resizeObserver = new ResizeObserver(() => { + handleResize(); + }); + resizeObserver.observe(ref.current); + return () => { + resizeObserver.disconnect(ref.current); + resizeObserver = null; + }; + }, [ref.current]); + return ComponentSize; +}; +/* harmony default export */ const hooks_useComponentSize = (useComponentSize); + +;// CONCATENATED MODULE: ./src/hooks/index.js + + + + + + +;// CONCATENATED MODULE: ./src/components/Collapsible/index.js +var Collapsible_defProp = Object.defineProperty; +var __defProps = Object.defineProperties; +var __getOwnPropDescs = Object.getOwnPropertyDescriptors; +var Collapsible_getOwnPropSymbols = Object.getOwnPropertySymbols; +var Collapsible_hasOwnProp = Object.prototype.hasOwnProperty; +var Collapsible_propIsEnum = Object.prototype.propertyIsEnumerable; +var Collapsible_defNormalProp = (obj, key, value) => key in obj ? Collapsible_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var Collapsible_spreadValues = (a, b) => { + for (var prop in b || (b = {})) + if (Collapsible_hasOwnProp.call(b, prop)) + Collapsible_defNormalProp(a, prop, b[prop]); + if (Collapsible_getOwnPropSymbols) + for (var prop of Collapsible_getOwnPropSymbols(b)) { + if (Collapsible_propIsEnum.call(b, prop)) + Collapsible_defNormalProp(a, prop, b[prop]); + } + return a; +}; +var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b)); +var Collapsible_objRest = (source, exclude) => { + var target = {}; + for (var prop in source) + if (Collapsible_hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) + target[prop] = source[prop]; + if (source != null && Collapsible_getOwnPropSymbols) + for (var prop of Collapsible_getOwnPropSymbols(source)) { + if (exclude.indexOf(prop) < 0 && Collapsible_propIsEnum.call(source, prop)) + target[prop] = source[prop]; + } + return target; +}; + + + + +function Collapsible(_a) { + var _b = _a, { + className, + collapsed, + children + } = _b, rest = Collapsible_objRest(_b, [ + "className", + "collapsed", + "children" + ]); + const contentContainer = (0,external_react_namespaceObject.useRef)(null); + const collapseWrapper = (0,external_react_namespaceObject.useRef)(null); + const refContainerSize = hooks_useComponentSize(contentContainer); + const [contentContainerStyle, setContentContainerStyle] = (0,external_react_namespaceObject.useState)({ + // eslint-disable-next-line + height: collapsed ? 0 : "auto" + }); + const setHeight = (height) => { + setContentContainerStyle({ + height: `${height}px` + }); + }; + const getHeight = () => contentContainer.current ? contentContainer.current.clientHeight : 0; + const onEnter = () => { + setHeight(getHeight()); + }; + const onExit = () => { + setHeight(0); + }; + (0,external_react_namespaceObject.useEffect)(() => { + if (!collapsed && (refContainerSize == null ? void 0 : refContainerSize.height) && contentContainerStyle.height !== (refContainerSize == null ? void 0 : refContainerSize.height)) { + setHeight(refContainerSize.height); + } + }, [refContainerSize.height]); + const onWindowResize = (0,external_react_namespaceObject.useCallback)(() => { + if (!collapsed && contentContainer.current) { + setHeight(getHeight()); + collapseWrapper.current.style.height = `${getHeight()}px`; + } + }, [collapsed, contentContainer.current]); + hooks_useEventListener("resize", onWindowResize, window); + return /* @__PURE__ */ external_react_default().createElement( + external_react_transition_group_namespaceObject.CSSTransition, + { + onEnter, + onExit, + in: !collapsed, + timeout: 0, + classNames: "collapse" + }, + /* @__PURE__ */ external_react_default().createElement( + "div", + { + className: "collapse-wrapper", + ref: collapseWrapper, + style: contentContainerStyle + }, + /* @__PURE__ */ external_react_default().createElement( + "div", + __spreadProps(Collapsible_spreadValues({}, rest), { + className, + ref: contentContainer + }), + children + ) + ) + ); +} +Collapsible.propTypes = { + children: external_prop_types_default().oneOfType([ + (external_prop_types_default()).element, + (external_prop_types_default()).node, + (external_prop_types_default()).string + ]), + /** Describes if the content of Collapsible should be hidden or not */ + collapsed: (external_prop_types_default()).bool, + /** CSS classes that can be passed to the Collapsible element */ + className: (external_prop_types_default()).string +}; +/* harmony default export */ const components_Collapsible = (Collapsible); + +;// CONCATENATED MODULE: ./src/components/Accordion/js/AccordionItemContent.js + + + + +function AccordionItemContent({ children, className }) { + const { collapsed } = (0,external_react_namespaceObject.useContext)(js_AccordionItemContext); + const classes = [ + "tyk-accordion__item-content", + className + ].filter(Boolean).join(" "); + return /* @__PURE__ */ external_react_default().createElement("div", { className: classes }, /* @__PURE__ */ external_react_default().createElement(components_Collapsible, { collapsed }, children)); +} +AccordionItemContent.propTypes = { + children: external_prop_types_default().oneOfType([ + external_prop_types_default().arrayOf((external_prop_types_default()).node), + (external_prop_types_default()).node, + (external_prop_types_default()).element, + (external_prop_types_default()).string + ]), + className: (external_prop_types_default()).string +}; +/* harmony default export */ const js_AccordionItemContent = (AccordionItemContent); + +;// CONCATENATED MODULE: ./src/components/Accordion/index.js + + + + + + +function Accordion({ + className, + children, + usearrowastrigger, + arrow = { position: "right", expandToContent: false } +}) { + const classes = [ + "tyk-accordion", + className + ].filter(Boolean).join(" "); + const contextValue = (0,external_react_namespaceObject.useMemo)(() => ({ + usearrowastrigger, + arrow + }), [usearrowastrigger, arrow]); + return /* @__PURE__ */ external_react_default().createElement("div", { className: classes }, /* @__PURE__ */ external_react_default().createElement(js_AccordionContext.Provider, { value: contextValue }, children)); +} +Accordion.propTypes = { + children: external_prop_types_default().oneOfType([ + external_prop_types_default().arrayOf((external_prop_types_default()).node), + (external_prop_types_default()).node, + (external_prop_types_default()).element, + (external_prop_types_default()).string + ]), + className: (external_prop_types_default()).string, + usearrowastrigger: (external_prop_types_default()).bool, + arrow: external_prop_types_default().shape({ + position: external_prop_types_default().oneOf(["left", "right"]), + expandToContent: (external_prop_types_default()).bool + }) +}; +Accordion.defaultProps = { + usearrowastrigger: false +}; +Accordion.Item = js_AccordionItem; +Accordion.Item.Header = js_AccordionItemHeader; +Accordion.Item.Content = js_AccordionItemContent; +/* harmony default export */ const components_Accordion = (Accordion); + +;// CONCATENATED MODULE: ./src/components/Button/index.js +var Button_defProp = Object.defineProperty; +var Button_getOwnPropSymbols = Object.getOwnPropertySymbols; +var Button_hasOwnProp = Object.prototype.hasOwnProperty; +var Button_propIsEnum = Object.prototype.propertyIsEnumerable; +var Button_defNormalProp = (obj, key, value) => key in obj ? Button_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var Button_spreadValues = (a, b) => { + for (var prop in b || (b = {})) + if (Button_hasOwnProp.call(b, prop)) + Button_defNormalProp(a, prop, b[prop]); + if (Button_getOwnPropSymbols) + for (var prop of Button_getOwnPropSymbols(b)) { + if (Button_propIsEnum.call(b, prop)) + Button_defNormalProp(a, prop, b[prop]); + } + return a; +}; +var Button_objRest = (source, exclude) => { + var target = {}; + for (var prop in source) + if (Button_hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) + target[prop] = source[prop]; + if (source != null && Button_getOwnPropSymbols) + for (var prop of Button_getOwnPropSymbols(source)) { + if (exclude.indexOf(prop) < 0 && Button_propIsEnum.call(source, prop)) + target[prop] = source[prop]; + } + return target; +}; + + + +const Button = external_react_default().forwardRef((props, ref) => { + const _a = props, { + customButton, + children, + iconType, + iconFamily, + iconPosition, + iconOnly, + id, + className, + disabled, + display, + href, + onClick, + noStyle, + size, + theme, + type + } = _a, rest = Button_objRest(_a, [ + "customButton", + "children", + "iconType", + "iconFamily", + "iconPosition", + "iconOnly", + "id", + "className", + "disabled", + "display", + "href", + "onClick", + "noStyle", + "size", + "theme", + "type" + ]); + const getCssClasses = () => { + const cssClasses = ["tyk-button"].concat(className ? className.split(" ") : []); + const sizeClass = size ? `tyk-button--${size}` : "tyk-button--md"; + const disabledClass = disabled ? "disabled" : ""; + const displayClass = display || ""; + const themeClass = theme ? `tyk-button--${theme}` : ""; + const iconOnlyClass = iconOnly ? "tyk-button--icon-only" : ""; + const noStyleClass = noStyle ? "tyk-button--no-style" : ""; + cssClasses.push(iconOnlyClass); + cssClasses.push(themeClass); + cssClasses.push(sizeClass); + cssClasses.push(disabledClass); + cssClasses.push(displayClass); + cssClasses.push(noStyleClass); + if (iconType) { + cssClasses.push(`icon-${iconPosition || "left"}`); + } + return cssClasses.join(" "); + }; + const getButtonIcon = (position) => { + const iPos = iconPosition || "left"; + return iconType && iPos === position ? /* @__PURE__ */ external_react_default().createElement(components_Icon, { family: iconFamily, type: iconType }) : null; + }; + const getButtonType = () => { + let buttonType; + if (customButton) { + return /* @__PURE__ */ external_react_default().createElement(external_react_namespaceObject.Fragment, null, (0,external_react_namespaceObject.cloneElement)(customButton, { + className: getCssClasses(), + disabled + })); + } + if (href) { + buttonType = /* @__PURE__ */ external_react_default().createElement( + "a", + Button_spreadValues({ + id, + className: getCssClasses(), + disabled, + onClick, + href, + ref + }, rest), + getButtonIcon("left"), + children, + getButtonIcon("right") + ); + } else { + buttonType = // eslint-disable-next-line react/button-has-type + /* @__PURE__ */ external_react_default().createElement( + "button", + Button_spreadValues({ + id, + className: getCssClasses(), + disabled, + onClick, + type: type || "button", + ref + }, rest), + getButtonIcon("left"), + children && /* @__PURE__ */ external_react_default().createElement("span", null, children), + getButtonIcon("right") + ); + } + return buttonType; + }; + return getButtonType(); +}); +Button.propTypes = { + /** + * Content of a button. Can be a DOM element or a React component + */ + children: external_prop_types_default().oneOfType([ + external_prop_types_default().arrayOf((external_prop_types_default()).node), + (external_prop_types_default()).node, + (external_prop_types_default()).element, + (external_prop_types_default()).string + ]), + customButton: external_prop_types_default().oneOfType([ + external_prop_types_default().arrayOf((external_prop_types_default()).node), + (external_prop_types_default()).node, + (external_prop_types_default()).element + ]), + className: (external_prop_types_default()).string, + /** + * Display type: inline/block. Default is inline + */ + display: (external_prop_types_default()).string, + /** + * Sets the button disabled state + */ + disabled: (external_prop_types_default()).bool, + /** + * Having this property set the button will become a link + */ + id: (external_prop_types_default()).string, + href: (external_prop_types_default()).string, + iconPosition: (external_prop_types_default()).string, + // left or right + iconFamily: (external_prop_types_default()).string, + iconOnly: (external_prop_types_default()).bool, + iconType: (external_prop_types_default()).string, + noStyle: (external_prop_types_default()).bool, + /** + * Callback function, called when the button si clicked + */ + onClick: (external_prop_types_default()).func, + /** + * Describes the appearence of the button (ex: primary, danger, primary-outline etc.) + */ + theme: (external_prop_types_default()).string, + /** + * Type of the button (ex: button, submit etc.) + */ + type: (external_prop_types_default()).string, + /** + * Describes the size of the button (sm, md, lg). Default one is md + */ + size: (external_prop_types_default()).string +}; +Button.defaultProps = { + theme: "", + type: "button" +}; +/* harmony default export */ const components_Button = (Button); + +;// CONCATENATED MODULE: ./src/components/ButtonGroup/index.js + + +function ButtonGroup({ + className, + children, + label +}) { + return /* @__PURE__ */ external_react_default().createElement("div", { className: `tyk-button-group__wrapper ${className}` }, Boolean(label) && /* @__PURE__ */ external_react_default().createElement("label", null, label), /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-button-group" }, children)); +} +ButtonGroup.propTypes = { + children: external_prop_types_default().oneOfType([ + external_prop_types_default().arrayOf((external_prop_types_default()).node), + (external_prop_types_default()).node, + (external_prop_types_default()).element, + (external_prop_types_default()).string + ]), + className: (external_prop_types_default()).string, + /** + * Label that will sit above the button group + */ + label: (external_prop_types_default()).string +}; +/* harmony default export */ const components_ButtonGroup = (ButtonGroup); + +;// CONCATENATED MODULE: external "echarts" +const external_echarts_namespaceObject = require("echarts"); +;// CONCATENATED MODULE: external "immutable" +const external_immutable_namespaceObject = require("immutable"); +;// CONCATENATED MODULE: ./src/utils/debounce/index.js +/* harmony default export */ const debounce = ((func, wait, immediate) => { + let timeout; + return function debouncer(...args) { + const context = this; + const later = () => { + timeout = null; + if (!immediate) { + func.apply(context, args); + } + }; + const callNow = immediate && !timeout; + clearTimeout(timeout); + timeout = setTimeout(later, wait); + if (callNow) { + func.apply(context, args); + } + }; +}); + +;// CONCATENATED MODULE: ./src/components/Loader/index.js + + +function Loader({ className, position = "relative", withbackground = false }) { + const classes = [ + "loading", + position, + className + ].filter(Boolean).join(" "); + const loader = /* @__PURE__ */ external_react_default().createElement("div", { className: classes }, /* @__PURE__ */ external_react_default().createElement("div", { className: "loading-bar" }), /* @__PURE__ */ external_react_default().createElement("div", { className: "loading-bar" }), /* @__PURE__ */ external_react_default().createElement("div", { className: "loading-bar" }), /* @__PURE__ */ external_react_default().createElement("div", { className: "loading-bar" })); + return withbackground ? /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-loading__wrapper" }, loader) : loader; +} +Loader.propTypes = { + /** add a class to loader */ + className: (external_prop_types_default()).string, + /** position of loader (absolute / relative) */ + position: (external_prop_types_default()).string, + /** defines weather loader should be renders with or without background */ + withbackground: (external_prop_types_default()).bool +}; +/* harmony default export */ const components_Loader = (Loader); + +;// CONCATENATED MODULE: ./src/components/Message/index.js + + + +function Message({ + children, + theme, + onClose, + noMargin, + className +}) { + function getCssClasses() { + return [ + "tyk-message", + `tyk-message--${theme || "info"}`, + noMargin && "no-margin", + className + ].filter(Boolean).join(" "); + } + const iconType = theme === "success" ? "check" : "warning"; + return /* @__PURE__ */ external_react_default().createElement("div", { className: getCssClasses() }, /* @__PURE__ */ external_react_default().createElement(components_Icon, { family: "tykon", type: iconType }), /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-message__content" }, children), onClose && /* @__PURE__ */ external_react_default().createElement(components_Icon, { family: "tykon", type: "x", onClick: onClose })); +} +Message.propTypes = { + /** Set theme for message (eg. default, success, danger, etc) */ + theme: (external_prop_types_default()).string, + children: external_prop_types_default().oneOfType([ + (external_prop_types_default()).element, + (external_prop_types_default()).node, + (external_prop_types_default()).string + ]), + /** add a class to loader */ + className: (external_prop_types_default()).string, + /** Removes margins by adding `no-margin` class */ + noMargin: (external_prop_types_default()).bool, + /** Callback for clicking on the "x" */ + onClose: (external_prop_types_default()).func +}; +/* harmony default export */ const components_Message = (Message); + +;// CONCATENATED MODULE: ./src/components/Chart/maps/world.json +const world_namespaceObject = JSON.parse('{"type":"FeatureCollection","crs":{"type":"name","properties":{"name":"urn:ogc:def:crs:OGC:1.3:CRS84"}},"features":[{"geometry":{"type":"Polygon","coordinates":[[[47.97822265625001,7.9970703125],[46.97822265625001,7.9970703125],[43.98378906250002,9.008837890624989],[43.482519531250006,9.379492187499991],[43.181640625,9.879980468749991],[42.84160156250002,10.203076171874997],[42.65644531250001,10.6],[42.92275390625002,10.999316406249989],[43.24599609375002,11.499804687499989],[43.85273437500001,10.784277343749991],[44.38652343750002,10.430224609374989],[44.94296875,10.43671875],[45.81669921875002,10.835888671874997],[46.565039062500006,10.745996093749994],[47.40498046875001,11.174023437499997],[48.01923828125001,11.139355468749997],[48.57255859375002,11.320507812499997],[48.938574218750006,11.258447265624994],[50.11005859375001,11.529296875],[50.79228515625002,11.983691406249989],[51.2548828125,11.830712890624994],[51.08427734375002,11.335644531249997],[51.140625,10.656884765624994],[51.031835937500006,10.444775390624997],[51.19296875,10.554638671874997],[51.390234375,10.422607421875],[50.93007812500002,10.33554687499999],[50.825,9.428173828124997],[50.10283203125002,8.199804687499991],[49.85205078125,7.962548828124994],[49.234960937500006,6.77734375],[49.04931640625,6.173632812499989],[47.97529296875001,4.497021484374997],[46.87880859375002,3.28564453125],[46.05117187500002,2.475146484374989],[44.92021484375002,1.81015625],[43.71757812500002,0.857861328124997],[41.97988281250002,-0.973046875],[41.53271484375,-1.6953125],[41.521875,-1.572265625],[41.42695312500001,-1.449511718750003],[41.24980468750002,-1.220507812500003],[40.97871093750001,-0.870312500000011],[40.964453125,2.814648437499997],[41.341796875,3.20166015625],[41.61347656250001,3.590478515624994],[41.88398437500001,3.977734375],[41.91533203125002,4.031298828124989],[42.02412109375001,4.137939453125],[42.85664062500001,4.32421875],[43.12568359375001,4.644482421874997],[43.58349609375,4.85498046875],[43.988867187500006,4.950537109374991],[44.940527343750006,4.912011718749994],[47.97822265625001,7.9970703125]]]},"properties":{"name":"Somalia","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[9.579979133936737,47.05856388629306],[9.409458596647225,47.02019676540292],[9.46249431093294,47.09010747968864],[9.46249431093294,47.19858962254578],[9.527658197470123,47.27026989773668],[9.579979133936737,47.05856388629306]]]},"properties":{"name":"Liechtenstein","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-8.683349609375,27.77800740805682],[-13.038761787013554,27.81190166624856],[-12.948925781249926,27.914160156250034],[-11.552685546874955,28.31010742187496],[-10.486474609374994,29.06494140625],[-10.200585937499994,29.380371093750057],[-9.667089843749949,30.10927734375005],[-9.652929687499977,30.447558593750045],[-9.875488281249943,30.717919921874966],[-9.80869140624992,31.42460937499996],[-9.347460937499932,32.086376953124955],[-9.245849609375,32.572460937499955],[-8.512841796874994,33.25244140625003],[-6.900976562499949,33.96904296874999],[-6.353125,34.77607421875001],[-5.924804687499943,35.78579101562502],[-5.277832031249943,35.90273437500002],[-5.252685546874972,35.61474609374997],[-4.628320312499966,35.206396484375006],[-4.329980468749937,35.161474609375006],[-3.693261718749994,35.27998046874998],[-3.394726562499926,35.21181640625005],[-2.972216796874989,35.40727539062499],[-2.839941406249949,35.127832031249994],[-2.731396484374955,35.13520507812498],[-2.636816406249977,35.11269531250002],[-2.423730468749994,35.12348632812498],[-2.219628906249966,35.10419921874998],[-1.795605468749926,34.751904296874955],[-1.67919921875,33.31865234375002],[-1.550732421874955,33.073583984375006],[-1.510009765625,32.877636718749955],[-1.45,32.784814453124966],[-1.352148437499977,32.70336914062497],[-1.29638671875,32.67568359375002],[-1.188232421875,32.608496093750006],[-1.111035156249983,32.55229492187502],[-1.065527343749949,32.46831054687496],[-1.16259765625,32.399169921875],[-1.275341796874983,32.089013671874966],[-2.863427734374937,32.07470703124997],[-2.930859374999926,32.04252929687499],[-2.988232421874983,31.874218749999983],[-3.01738281249996,31.834277343750017],[-3.439794921874949,31.704541015624983],[-3.604589843749949,31.686767578125],[-3.700244140624989,31.70009765625005],[-3.768164062499977,31.689550781250034],[-3.837109374999983,31.512353515624994],[-3.833398437499937,31.197802734375045],[-3.626904296874955,31.000927734374983],[-4.148779296874977,30.8095703125],[-4.322851562500006,30.698876953124994],[-4.52915039062492,30.62553710937499],[-4.778515624999926,30.552392578124994],[-4.968261718749943,30.465380859375045],[-5.061914062499937,30.326416015625057],[-5.180126953124955,30.166162109374994],[-5.293652343749983,30.058642578125045],[-5.44877929687496,29.956933593750023],[-6.00429687499999,29.83125],[-6.479736328124943,29.82036132812499],[-6.520556640624989,29.659863281249983],[-6.59775390624992,29.578955078125006],[-6.635351562499949,29.568798828124983],[-6.755126953125,29.583837890625034],[-6.855566406249949,29.601611328125017],[-7.142431640624949,29.61958007812504],[-7.427685546874983,29.425],[-7.485742187499994,29.392236328124994],[-8.659912109375,28.718603515625063],[-8.683349609375,27.900390625],[-8.683349609375,27.77800740805682]]]},"properties":{"name":"Morocco","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-13.038761787013554,27.81190166624856],[-8.683349609375,27.77800740805682],[-8.683349609375,27.65644531250004],[-8.817822265624955,27.65644531250004],[-8.817822265624951,27.656445312499997],[-8.683349609375,27.656445312499997],[-8.683349609375,27.2859375],[-8.682861328125,26.921337890624997],[-8.6826171875,26.72314453125],[-8.682324218749983,26.497705078124994],[-8.68212890625,26.273193359375],[-8.68212890625,26.10947265625],[-8.682226562499977,25.995507812499994],[-12.016308593749983,25.995410156250003],[-12.016308593749983,25.740136718749994],[-12.016308593749983,25.331689453124994],[-12.016308593749983,25.059375],[-12.016308593749983,24.923242187499994],[-12.016308593749983,24.378662109375],[-12.016308593749983,23.97021484375],[-12.0234375,23.467578125],[-12.372900390624977,23.318017578124994],[-12.559375,23.290820312500003],[-12.620410156249989,23.27133789062499],[-13.031494140625,23.000244140625],[-13.153271484374983,22.820507812499997],[-13.12702845982141,22.703770926339278],[-13.136540684091575,22.708182548616723],[-13.094335937499977,22.495996093749994],[-13.051220703124983,21.854785156250003],[-13.041748046875,21.713818359374997],[-13.0322265625,21.572070312500003],[-13.025097656249983,21.466796875],[-13.016210937499977,21.333935546874997],[-15.231201171875,21.331298828125],[-16.964550781249983,21.329248046874994],[-17.06396484375,20.89882812499999],[-17.048046874999983,20.80615234375],[-17.098779296874994,20.856884765624997],[-16.930859374999983,21.9],[-16.35874023437495,22.594531250000045],[-16.21025390624999,23.097900390625],[-15.789257812499926,23.792871093750023],[-15.980712890624943,23.670312500000023],[-15.899316406249966,23.844433593749955],[-14.904296875000028,24.719775390625017],[-14.794921874999943,25.404150390625006],[-14.413867187499932,26.25371093749999],[-13.57578125,26.735107421875],[-13.175976562499983,27.655712890624983],[-13.038761787013554,27.81190166624856]],[[-8.774365234374983,27.460546875],[-8.794873046874983,27.120703125000034],[-8.794873046874983,27.120703125],[-8.774365234374983,27.460546875]]]},"properties":{"name":"W. Sahara","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[21.5625,42.247509765625],[21.560839843750017,42.24765625],[21.389550781250023,42.21982421875],[21.28662109375,42.100390625],[21.05976562500001,42.171289062499994],[20.778125,42.071044921875],[20.725,41.87353515625],[20.566210937500017,41.873681640624994],[20.485449218750006,42.223388671875],[20.06396484375,42.54726562499999],[20.054296875,42.760058593749996],[20.344335937500006,42.827929687499996],[20.40996305279786,42.84373166741877],[20.344335937500063,42.82792968750002],[19.670996093750006,43.163964843749994],[19.21875,43.449951171875],[19.196484375000068,43.48500976562502],[19.19160156250004,43.52104492187499],[19.19433593749997,43.533300781250006],[19.495117187500057,43.642871093750045],[19.245019531249994,43.96503906250004],[19.583789062500017,44.04345703125003],[19.118457031250074,44.359960937500006],[19.348632812500057,44.88090820312502],[19.007128906250045,44.86918945312502],[19.062890625000023,45.13720703125],[19.4,45.2125],[19.004687500000074,45.39951171875006],[19.064257812500045,45.51499023437506],[18.839062499999983,45.83574218750002],[18.905371093750006,45.931738281250034],[19.421289062500023,46.064453125],[19.61347656250001,46.169189453125],[19.84443359375001,46.145898437499966],[19.934082031250057,46.161474609375034],[20.161425781250017,46.14189453124996],[20.210156250000068,46.12602539062502],[20.241796875000034,46.10859375000001],[20.301367187500006,46.05068359375002],[20.35859375000004,45.975488281249994],[20.581152343749977,45.86948242187506],[20.65273437499999,45.779394531250006],[20.709277343750074,45.735253906249994],[20.727832031250017,45.73740234374998],[20.746875,45.74897460937501],[20.76015625000005,45.75810546875002],[20.775,45.74980468750002],[20.794042968750006,45.467871093750034],[21.431445312500017,45.192529296874994],[21.465429687500006,45.171875],[21.357031250000034,44.99077148437502],[21.532324218750063,44.900683593750045],[21.519921875000023,44.88081054687498],[21.442187500000074,44.87338867187498],[21.384375,44.87006835937501],[21.357910156250057,44.86181640625003],[21.36005859375004,44.82666015624997],[21.52314453125004,44.79008789062499],[21.63613281250005,44.71044921875],[21.909277343750034,44.666113281250034],[22.026953125,44.61987304687503],[22.093066406250074,44.541943359374955],[22.200976562500017,44.560693359374966],[22.350683593750063,44.676123046875034],[22.497656249999977,44.70625],[22.64208984375,44.65097656249998],[22.720898437499983,44.605517578125045],[22.734375,44.56992187499998],[22.700781250000063,44.55551757812498],[22.620117187500057,44.562353515625034],[22.554003906250017,44.54033203124999],[22.49453125000005,44.43544921875002],[22.687890625000023,44.248291015625],[22.42080078125005,44.00742187500006],[22.399023437500063,43.96953125],[22.36542968750004,43.86210937500002],[22.36962890625003,43.78129882812499],[22.55458984375005,43.45449218750002],[22.767578125,43.35415039062502],[22.81972656250005,43.300732421874955],[22.85957031250001,43.252343749999966],[22.97685546874999,43.18798828125],[22.799902343750006,42.985742187499994],[22.706152343750006,42.88393554687505],[22.466796875,42.842480468749955],[22.53242187500004,42.48120117187497],[22.523535156250006,42.440966796875045],[22.44570312500005,42.35913085937497],[22.42207031250004,42.32885742187503],[22.344042968750045,42.31396484375003],[22.23974609375003,42.303110028468716],[21.81464843750001,42.303125],[21.5625,42.24750976562498],[21.5625,42.247509765625]]]},"properties":{"name":"Serbia","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[74.54140625000002,37.02216796875],[74.03886718750002,36.825732421874996],[73.116796875,36.868554687499994],[72.24980468750002,36.734716796875],[71.23291015625,36.12177734375],[71.18505859375,36.04208984375],[71.57197265625001,35.546826171875],[71.62050781250002,35.183007812499994],[70.965625,34.53037109375],[71.095703125,34.369433593749996],[71.05156250000002,34.049707031249994],[70.65400390625001,33.952294921874994],[69.8896484375,34.007275390625],[70.26113281250002,33.289013671875],[69.5015625,33.020068359374996],[69.24140625000001,32.433544921875],[69.279296875,31.936816406249996],[68.86894531250002,31.634228515624997],[68.59765625,31.802978515625],[68.16103515625002,31.802978515625],[67.57822265625,31.506494140624994],[67.737890625,31.343945312499997],[67.45283203125001,31.234619140625],[66.82929687500001,31.263671875],[66.346875,30.802783203124996],[66.23125,29.86572265625],[65.09550781250002,29.559472656249994],[64.39375,29.544335937499994],[64.09873046875,29.391943359375],[63.56757812500001,29.497998046874997],[62.4765625,29.408349609374994],[62.0009765625,29.530419921874994],[61.22441406250002,29.749414062499994],[60.843359375,29.858691406249996],[61.331640625,30.363720703124997],[61.55947265625002,30.599365234375],[61.7841796875,30.831933593749994],[61.81083984375002,30.91328125],[61.81425781250002,31.072558593749996],[61.75507812500001,31.285302734374994],[61.66015625,31.382421875],[61.34648437500002,31.421630859375],[61.11074218750002,31.451123046874997],[60.854101562500006,31.483251953125],[60.82070312500002,31.495166015624996],[60.791601562500006,31.660595703124997],[60.804296875,31.73447265625],[60.7875,31.877197265625],[60.78994140625002,31.987109375],[60.827246093750006,32.16796875],[60.82929687500001,32.249414062499994],[60.71044921875,32.6],[60.57656250000002,32.994873046875],[60.560546875,33.137841796874994],[60.9169921875,33.505224609375],[60.573828125,33.588330078125],[60.4859375,33.7119140625],[60.48574218750002,34.094775390624996],[60.642675781250006,34.307177734374996],[60.88945312500002,34.31943359375],[60.80390625000001,34.418017578124996],[60.76259765625002,34.475244140624994],[60.73613281250002,34.491796875],[60.72626953125001,34.51826171875],[60.73945312500001,34.544726562499996],[60.80234375,34.554638671875],[60.8453125,34.587695312499996],[60.91474609375001,34.633984375],[60.951171875,34.653857421874996],[61.080078125,34.855615234374994],[61.1,35.272314453125],[61.18925781250002,35.31201171875],[61.24550781250002,35.474072265625],[61.27851562500001,35.51376953125],[61.281835937500006,35.55341796875],[61.26201171875002,35.619580078125],[61.3447265625,35.6294921875],[61.62099609375002,35.43232421875],[62.08964843750002,35.3796875],[62.30781250000001,35.170800781249994],[62.688085937500006,35.255322265625],[63.056640625,35.44580078125],[63.08417968750001,35.56806640625],[63.16972656250002,35.678125],[63.129980468750006,35.84619140625],[63.8625,36.012353515624994],[64.184375,36.14892578125],[64.51103515625002,36.340673828125],[64.56582031250002,36.427587890625],[64.6025390625,36.554541015625],[64.78242187500001,37.05927734375],[64.81630859375002,37.132080078125],[64.95156250000002,37.1935546875],[65.08964843750002,37.237939453124994],[65.30361328125002,37.24677734375],[65.55498046875002,37.251171875],[65.76503906250002,37.569140625],[66.471875,37.3447265625],[66.52226562500002,37.348486328125],[66.827734375,37.3712890625],[67.06884765625,37.334814453125],[67.19550781250001,37.235205078125],[67.31972656250002,37.2095703125],[67.44169921875002,37.2580078125],[67.51728515625001,37.266650390624996],[67.546484375,37.235644531249996],[67.607421875,37.222509765625],[67.7,37.22724609375],[67.7529296875,37.1998046875],[67.75898437500001,37.172216796875],[67.76601562500002,37.14013671875],[67.83447265625,37.064208984375],[67.9580078125,36.972021484375],[68.06777343750002,36.9498046875],[68.26093750000001,37.013085937499994],[68.284765625,37.036328125],[68.29951171875001,37.088427734374996],[68.38691406250001,37.1375],[68.66914062500001,37.2583984375],[68.7232421875,37.268017578125],[68.78203125000002,37.2580078125],[68.82373046875,37.270703125],[68.8384765625,37.30283203125],[68.85537109375002,37.316845703125],[68.88525390625,37.328076171875],[68.91181640625001,37.333935546875],[68.96044921875,37.325048828125],[69.18017578125,37.15830078125],[69.26484375000001,37.1083984375],[69.30390625000001,37.116943359375],[69.35380859375002,37.150048828124994],[69.41445312500002,37.207763671875],[69.4296875,37.290869140625],[69.39921875000002,37.399316406249994],[69.42011718750001,37.48671875],[69.49208984375002,37.553076171875],[69.62578125000002,37.594042968749996],[69.8208984375,37.6095703125],[69.9849609375,37.566162109375],[70.18867187500001,37.582470703125],[70.25146484375,37.66416015625],[70.25498046875,37.765380859375],[70.19941406250001,37.886035156249996],[70.21464843750002,37.9244140625],[70.41777343750002,38.075439453125],[70.7359375,38.42255859375],[71.255859375,38.306982421875],[71.33271484375001,38.170263671875],[71.27851562500001,37.918408203125],[71.319921875,37.90185546875],[71.3896484375,37.906298828124996],[71.48779296875,37.931884765625],[71.55195312500001,37.933154296874996],[71.58222656250001,37.910107421875],[71.43291015625002,37.1275390625],[71.530859375,36.845117187499994],[71.665625,36.696923828124994],[72.65742187500001,37.029052734375],[72.8955078125,37.267529296875],[73.21113281250001,37.408496093749996],[73.38291015625,37.462255859375],[73.48134765625002,37.4716796875],[73.60468750000001,37.446044921875],[73.65712890625002,37.43046875],[73.72060546875002,37.41875],[73.73378906250002,37.37578125],[73.71728515625,37.329443359375],[73.6275390625,37.261572265625],[73.65351562500001,37.23935546875],[73.749609375,37.231787109375],[74.16708984375,37.329443359375],[74.20351562500002,37.372460937499994],[74.25966796875002,37.415429687499994],[74.659375,37.394482421875],[74.73056640625,37.35703125],[74.83046875000002,37.2859375],[74.89130859375001,37.231640625],[74.84023437500002,37.225048828125],[74.76738281250002,37.249169921874994],[74.73896484375001,37.28564453125],[74.72666015625,37.29072265625],[74.6689453125,37.26669921875],[74.55898437500002,37.236621093749996],[74.37216796875,37.15771484375],[74.37617187500001,37.137353515624994],[74.49794921875002,37.0572265625],[74.52646484375,37.030664062499994],[74.54140625000002,37.02216796875]]]},"properties":{"name":"Afghanistan","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[17.57958984375,-8.099023437500009],[17.643359375000017,-8.090722656250009],[18.00878906250003,-8.107617187499983],[18.56269531250001,-7.9359375],[18.944433593750063,-8.001464843750028],[19.142675781250034,-8.001464843750028],[19.34082031249997,-7.966601562500031],[19.369921875000045,-7.706542968749986],[19.371679687500063,-7.655078124999989],[19.47988281250008,-7.472167968750028],[19.48378906250008,-7.279492187500026],[19.527636718750017,-7.144433593749952],[19.87519531250004,-6.986328124999986],[19.99746093750008,-6.976464843750023],[20.190039062500063,-6.9462890625],[20.482226562500074,-6.915820312500017],[20.59003906250001,-6.919921874999957],[20.598730468750006,-6.935156249999949],[20.536914062500045,-7.121777343749955],[20.535839843749983,-7.182812499999955],[20.558398437500045,-7.244433593749989],[20.60781250000008,-7.277734375000023],[20.910937500000017,-7.281445312499983],[21.190332031250023,-7.284960937499989],[21.751074218750034,-7.305468749999989],[21.80605468750005,-7.32861328125],[21.905371093750034,-8.693359374999943],[21.813183593750068,-9.46875],[22.19775390625,-10.040625],[22.30703125000005,-10.691308593750023],[22.203515625000023,-10.829492187500009],[22.226171875,-11.121972656250009],[22.27880859375,-11.19414062499996],[22.314941406250057,-11.198632812499994],[22.39296875000005,-11.159472656250003],[22.486132812500045,-11.086718750000017],[22.56103515625003,-11.05585937500004],[22.814746093750017,-11.08027343750004],[23.076269531250006,-11.087890624999986],[23.463964843750034,-10.969335937499991],[23.83388671875008,-11.013671874999972],[23.96650390625001,-10.871777343750011],[23.98388671875,-11.725],[23.909375,-12.636132812500009],[23.886523437500045,-12.743261718749991],[23.882421875,-12.799023437499983],[23.968066406250045,-12.956933593749994],[23.962988281250006,-12.988476562500026],[23.843164062500023,-13.0009765625],[22.209570312500006,-13.0009765625],[21.97890625000008,-13.0009765625],[21.979101562500034,-13.798730468749994],[21.979296875000074,-14.11962890625],[21.979394531249994,-14.440527343750006],[21.97978515624999,-15.955566406250014],[22.193945312500006,-16.628125],[23.380664062500017,-17.640625],[22.32421875,-17.8375],[20.74550781250008,-18.019726562499983],[20.194335937500057,-17.86367187499999],[18.95527343750004,-17.80351562499999],[18.39638671875005,-17.3994140625],[16.14843750000003,-17.39023437499999],[14.017480468750023,-17.40888671874997],[13.475976562500023,-17.04003906249997],[13.179492187500017,-16.971679687499986],[12.548144531250017,-17.212695312499974],[12.35927734375008,-17.205859375],[12.318457031250006,-17.21337890625003],[12.213378906250028,-17.209960937500043],[12.013964843750074,-17.168554687500034],[11.902539062500011,-17.226562499999957],[11.743066406250023,-17.24921875000004],[11.780078125000017,-16.87128906249997],[11.818945312500034,-16.704101562500014],[11.750878906250023,-15.831933593749966],[12.016113281250057,-15.513671874999957],[12.55048828125004,-13.437792968750003],[12.983203124999989,-12.775683593750017],[13.4169921875,-12.52041015624998],[13.597949218750017,-12.286132812500028],[13.785351562499983,-11.81279296874996],[13.833593750000063,-10.9296875],[13.33222656250004,-9.998925781250009],[12.99853515625,-9.048046875],[13.358984375,-8.687207031250026],[13.378515625000063,-8.369726562500006],[12.82343750000004,-6.954785156249955],[12.283300781250063,-6.12431640624996],[13.184375,-5.85625],[13.346484375000017,-5.863378906250006],[13.978515625,-5.857226562500003],[16.315234375000074,-5.865625],[16.431445312500045,-5.90019531249996],[16.53710937499997,-5.9658203125],[16.697265625,-6.164257812500026],[16.74296874999999,-6.618457031250003],[16.813085937500063,-6.772558593749963],[16.919433593750057,-6.93398437499998],[16.98476562500005,-7.257421874999977],[17.57958984375,-8.099023437500009]]],[[[12.50146484375,-4.5875],[12.848144531250028,-4.428906249999983],[12.881054687500068,-4.445117187499989],[12.971386718750068,-4.551757812499957],[13.048046875000068,-4.619238281250034],[13.072753906250028,-4.634765625],[13.057324218750011,-4.651074218750026],[12.947460937500011,-4.695312499999986],[12.829687499999977,-4.73662109374996],[12.451464843750017,-5.071484374999969],[12.453222656250034,-5.090625],[12.52236328125008,-5.148925781250028],[12.484570312500011,-5.71875],[12.213671875000074,-5.758691406249994],[12.177148437499994,-5.324804687499977],[12.018359375000074,-5.004296874999966],[12.50146484375,-4.5875]]]]},"properties":{"name":"Angola","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[20.06396484375,42.54726562499999],[20.485449218750006,42.223388671875],[20.566210937500017,41.873681640624994],[20.48896484375001,41.272607421874994],[20.709277343750017,40.928369140624994],[20.964257812500023,40.849902343749996],[20.95576171875001,40.775292968749994],[21.030859375,40.622460937499994],[20.881640625000017,40.467919921874994],[20.65742187500001,40.1173828125],[20.4560546875,40.065576171874994],[20.408007812500017,40.049462890624994],[20.383691406250023,40.0171875],[20.338476562500006,39.991064453125],[20.311132812500006,39.979443359375],[20.311328125000017,39.95078125],[20.381640625000017,39.841796875],[20.382421875,39.802636718749994],[20.206835937500017,39.653515625],[20.13105468750001,39.66162109375],[20.05976562500001,39.699121093749994],[20.022558593750006,39.710693359375],[20.001269531250017,39.709423828125],[19.851855468750017,40.0435546875],[19.322265625,40.407080078125],[19.45917968750001,40.40537109375],[19.3375,40.663818359375],[19.57568359375,41.640429687499996],[19.577539062500023,41.7875],[19.342382812500006,41.869091796875],[19.280664062500023,42.17255859375],[19.65449218750001,42.628564453124994],[19.78828125000001,42.476171875],[20.06396484375,42.54726562499999]]]},"properties":{"name":"Albania","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[19.66230468750001,60.187158203124994],[19.53652343750005,60.14497070312501],[19.551367187500063,60.24384765625001],[19.66230468750001,60.187158203124994]]],[[[19.989550781250074,60.351171875],[20.258886718750063,60.26127929687499],[19.799804687500057,60.08173828125001],[19.68691406250005,60.267626953125045],[19.84765625000003,60.22055664062506],[19.823046875000074,60.390185546875045],[19.989550781250074,60.351171875]]]]},"properties":{"name":"Aland","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[1.7060546875,42.503320312499994],[1.534082031250023,42.441699218749996],[1.448828125,42.437451171875],[1.428125,42.46132812499999],[1.414843750000017,42.548388671874996],[1.428320312500006,42.5958984375],[1.501367187500023,42.642724609374994],[1.568164062500017,42.635009765625],[1.709863281250023,42.604443359375],[1.739453125000011,42.575927734375],[1.740234375,42.55673828125],[1.713964843750006,42.525634765625],[1.7060546875,42.503320312499994]]]},"properties":{"name":"Andorra","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[53.927832031250006,24.177197265624983],[53.63447265625004,24.169775390624977],[53.83378906250002,24.258935546875023],[53.927832031250006,24.177197265624983]]],[[[53.3322265625001,24.258593750000045],[53.19091796874997,24.290917968749966],[53.412402343750074,24.411035156250023],[53.3322265625001,24.258593750000045]]],[[[56.29785156250003,25.650683593750045],[56.38798828125002,24.97919921875004],[56.06386718750005,24.73876953125],[56.00058593750006,24.953222656249977],[55.795703125000074,24.868115234374955],[55.76083984375006,24.24267578125],[55.92861328125005,24.215136718750074],[55.98515625000002,24.063378906249966],[55.4684570312501,23.94111328125001],[55.53164062499999,23.81904296875001],[55.1999023437501,23.034765625000034],[55.185839843750074,22.7041015625],[55.104296875000074,22.621484375000023],[52.55507812500005,22.932812499999955],[51.592578125000074,24.07885742187503],[51.56835937500003,24.286181640625074],[51.76757812500003,24.25439453125],[51.84316406250005,24.010888671875023],[52.118554687499994,23.97109375],[52.64824218750002,24.154638671875006],[53.80175781249997,24.069482421874966],[54.14794921875003,24.17119140624999],[54.39707031250006,24.278173828125034],[54.74677734375004,24.810449218750023],[55.94121093750002,25.793994140625017],[56.08046875,26.06264648437505],[56.16748046875003,26.047460937499977],[56.144628906250006,25.690527343750006],[56.29785156250003,25.650683593750045]]]]},"properties":{"name":"United Arab Emirates","childNum":3}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-64.54916992187498,-54.71621093749998],[-63.81542968749997,-54.725097656250014],[-64.637353515625,-54.90253906250001],[-64.75732421875,-54.82656249999999],[-64.54916992187498,-54.71621093749998]]],[[[-68.65322265624994,-54.85361328124999],[-68.62993164062499,-52.65263671875004],[-68.24013671875,-53.08183593749999],[-68.43115234375,-53.0552734375],[-68.48852539062497,-53.260937499999976],[-68.16113281249997,-53.30644531250001],[-68.00849609374995,-53.5640625],[-67.29423828125002,-54.049804687500014],[-66.23564453124999,-54.53349609374997],[-65.17900390624993,-54.678125],[-65.47114257812495,-54.91464843749999],[-66.5111328125,-55.032128906249945],[-67.127099609375,-54.90380859375001],[-68.65322265624994,-54.85361328124999]]],[[[-61.084716796875,-23.65644531250001],[-60.83984375000003,-23.85810546874997],[-59.89248046874994,-24.093554687499974],[-59.18725585937497,-24.56230468749999],[-57.82167968749994,-25.136425781249983],[-57.56313476562494,-25.473730468749963],[-57.943115234375,-26.05292968750001],[-58.18149414062498,-26.30742187499999],[-58.222070312499994,-26.65],[-58.618603515624955,-27.13212890624996],[-58.64174804687494,-27.196093750000017],[-58.60483398437498,-27.314355468750037],[-58.16826171874993,-27.27343749999997],[-56.437158203124966,-27.553808593749977],[-56.16406250000003,-27.321484374999983],[-55.95146484374996,-27.325683593749957],[-55.789990234374926,-27.416406249999966],[-55.71464843749996,-27.41484375],[-55.632910156250006,-27.35712890624997],[-55.59379882812502,-27.288085937500014],[-55.597265625,-27.207617187499963],[-55.56489257812498,-27.15],[-55.496728515624966,-27.11533203124999],[-55.45063476562498,-27.068359375000014],[-55.426660156249994,-27.00927734374997],[-55.13593750000001,-26.931152343749957],[-54.934472656249994,-26.70253906250001],[-54.677734375,-26.308789062499997],[-54.631933593750006,-26.005761718749994],[-54.615869140624994,-25.576074218750023],[-54.44394531249998,-25.625],[-54.15458984374999,-25.523046874999963],[-53.89116210937499,-25.66884765625001],[-53.668554687500006,-26.288183593749977],[-53.83818359375002,-27.121093750000014],[-54.32700195312495,-27.423535156249997],[-54.82910156250003,-27.55058593750003],[-55.10151367187501,-27.866796874999963],[-55.72548828125002,-28.20410156250003],[-55.68725585937497,-28.38164062499996],[-55.890527343749994,-28.370019531249994],[-56.938623046874994,-29.594824218750034],[-57.22465820312499,-29.782128906249994],[-57.40522460937501,-30.03388671875004],[-57.563867187499994,-30.139941406249974],[-57.60888671875003,-30.187792968750045],[-57.65087890624997,-30.295019531250034],[-57.71269531249996,-30.38447265624997],[-57.83120117187502,-30.495214843749963],[-57.87250976562501,-30.591015625000026],[-57.81059570312499,-30.85859375000001],[-57.88632812499998,-30.937402343749994],[-57.86840820312497,-31.104394531249994],[-57.89335937499999,-31.195312499999957],[-58.03339843750001,-31.416601562500006],[-58.053857421874994,-31.494921874999974],[-58.009667968749966,-31.534375],[-57.98798828124998,-31.576171875],[-58.00698242187494,-31.684960937499966],[-58.04233398437495,-31.769238281249997],[-58.16748046874997,-31.87265625],[-58.18901367187499,-31.924218750000037],[-58.16040039062503,-31.986523437500026],[-58.156347656250006,-32.0515625],[-58.17700195312494,-32.11904296875002],[-58.16479492187494,-32.18486328125002],[-58.119726562500006,-32.24892578125002],[-58.12304687499997,-32.321875],[-58.201171875,-32.471679687500014],[-58.219970703125,-32.563964843749986],[-58.17099609374998,-32.95927734374996],[-58.424462890624994,-33.11152343749998],[-58.54721679687498,-33.66347656249998],[-58.392480468749966,-34.192968750000034],[-58.52548828124998,-34.29619140625002],[-58.28334960937494,-34.68349609375005],[-57.54785156250003,-35.018945312499994],[-57.170654296875,-35.3625],[-57.35390624999994,-35.72031249999998],[-57.33544921875,-36.026757812499966],[-57.07617187499994,-36.296777343749994],[-56.74946289062501,-36.346484375],[-56.67202148437494,-36.85126953124998],[-57.546972656250034,-38.085644531250026],[-58.17919921874994,-38.435839843750045],[-59.82832031250001,-38.83818359375003],[-61.112207031249994,-38.99296875000003],[-61.84790039062497,-38.961816406249994],[-62.33476562499993,-38.80009765625],[-62.29506835937502,-39.24326171874996],[-62.053662109374955,-39.373828125],[-62.179345703124994,-39.38046875000002],[-62.076806640624966,-39.46152343750002],[-62.131542968749926,-39.82539062499998],[-62.28691406249996,-39.89531250000002],[-62.40185546875003,-40.19658203125002],[-62.24633789062494,-40.674609374999974],[-62.39501953124997,-40.89082031249997],[-62.95903320312493,-41.10966796875006],[-63.621777343749955,-41.15976562499996],[-64.86948242187503,-40.735839843750014],[-65.13339843749998,-40.88066406250003],[-64.98637695312496,-42.102050781249986],[-64.53774414062494,-42.25458984374998],[-64.57099609374998,-42.416015625],[-64.42041015625003,-42.43378906249998],[-64.10087890624993,-42.395117187500006],[-64.06118164062494,-42.266113281250014],[-64.228515625,-42.21826171874996],[-63.795556640624994,-42.113867187500006],[-63.6298828125,-42.28271484375003],[-63.61733398437502,-42.695800781249986],[-64.03476562499998,-42.88125],[-64.48784179687499,-42.51347656250006],[-64.97070312499997,-42.66630859375002],[-65.02690429687496,-42.75888671874996],[-64.31914062499999,-42.968945312500026],[-64.83994140624998,-43.18886718749998],[-65.25234374999997,-43.571875],[-65.26552734375,-44.2796875],[-65.64760742187502,-44.661425781250045],[-65.63876953125,-45.0078125],[-66.19013671874995,-44.96474609375002],[-66.94140625,-45.25732421875003],[-67.59956054687495,-46.05253906250003],[-67.5064453125,-46.44277343749995],[-66.77685546874994,-47.005859375],[-65.99853515625,-47.09375],[-65.73808593749999,-47.34492187499998],[-65.81430664062495,-47.63818359374996],[-66.22524414062502,-47.826757812500006],[-65.93422851562497,-47.826757812500006],[-65.81005859374997,-47.941113281250026],[-67.46630859375,-48.95175781250004],[-67.68486328125002,-49.2466796875],[-67.82597656249999,-49.91962890625005],[-68.2572265625,-50.104589843749984],[-68.66757812500003,-49.75253906250003],[-68.66162109374997,-49.93574218750005],[-68.97958984375,-50.003027343749984],[-68.59794921874996,-50.00947265624997],[-68.421875,-50.15791015625001],[-69.04477539062495,-50.49912109374998],[-69.35859374999993,-51.028125],[-69.20102539062498,-50.99365234375001],[-69.03530273437497,-51.48896484375002],[-69.46542968750003,-51.58447265625003],[-68.96533203125003,-51.67714843749999],[-68.443359375,-52.35664062500004],[-69.96025390624993,-52.00820312500002],[-71.91865234374995,-51.98955078125004],[-72.40766601562501,-51.54082031250002],[-72.34023437499997,-50.68183593749999],[-72.50981445312496,-50.607519531250034],[-73.15292968749998,-50.73828125000003],[-73.50126953124996,-50.125292968750024],[-73.55419921875,-49.463867187500014],[-73.46157226562497,-49.31386718750001],[-73.13525390625,-49.30068359374999],[-73.03364257812501,-49.014355468750004],[-72.65126953125,-48.84160156249998],[-72.582861328125,-48.47539062499999],[-72.35473632812497,-48.36582031250005],[-72.32832031250001,-48.11005859374998],[-72.517919921875,-47.87636718749998],[-72.34594726562497,-47.49267578124997],[-71.90498046875001,-47.201660156250014],[-71.94023437499999,-46.83125],[-71.69965820312501,-46.6513671875],[-71.87568359374998,-46.160546875],[-71.63154296874998,-45.95371093749998],[-71.74619140624998,-45.57890625],[-71.34931640624995,-45.33193359374995],[-71.5962890625,-44.97919921875004],[-72.04169921874998,-44.90419921875004],[-72.06372070312503,-44.771875],[-71.26113281250002,-44.763085937499966],[-71.15971679687496,-44.56025390625004],[-71.21259765624998,-44.44121093750003],[-71.82001953124993,-44.38310546875],[-71.68007812500002,-43.92958984374998],[-71.90498046875001,-43.34755859374998],[-71.750634765625,-43.237304687499986],[-72.14643554687498,-42.990039062499974],[-72.10820312499993,-42.25185546874995],[-71.75,-42.04677734375001],[-71.91127929687497,-41.650390624999986],[-71.93212890624994,-40.69169921874999],[-71.70898437499997,-40.381738281249994],[-71.81831054687493,-40.17666015624995],[-71.65976562499998,-40.02080078125],[-71.71992187499995,-39.63525390624997],[-71.53945312499997,-39.60244140624995],[-71.40156249999995,-38.93505859374996],[-70.858642578125,-38.60449218750003],[-71.16757812499998,-37.76230468749996],[-71.19218750000002,-36.84365234375004],[-71.05551757812498,-36.52373046874996],[-70.40478515625,-36.06171874999998],[-70.41572265625001,-35.52304687500002],[-70.55517578125,-35.246875],[-70.39316406250003,-35.146875],[-70.05205078124999,-34.30078124999997],[-69.85244140625,-34.224316406250026],[-69.81962890624999,-33.28378906249999],[-70.08486328125002,-33.20175781249998],[-70.02197265625,-32.88457031250002],[-70.36376953125,-32.08349609374997],[-70.25439453125,-31.957714843750026],[-70.585205078125,-31.569433593749963],[-70.51958007812493,-31.1484375],[-70.30908203124994,-31.02265625000004],[-70.15322265625,-30.360937499999963],[-69.95634765624996,-30.35820312500003],[-69.84428710937493,-30.175],[-69.95996093749997,-30.078320312500026],[-70.02680664062501,-29.324023437500017],[-69.82788085937497,-29.10322265624997],[-69.65693359374995,-28.413574218749986],[-69.17441406249998,-27.924707031250037],[-68.84633789062494,-27.153710937499994],[-68.59208984375002,-27.140039062499966],[-68.31865234374999,-26.973242187500006],[-68.59160156249999,-26.47041015624997],[-68.41450195312498,-26.153710937500023],[-68.59208984375002,-25.420019531250034],[-68.38422851562495,-25.091894531249977],[-68.56201171875,-24.74736328125003],[-68.25029296875002,-24.391992187500023],[-67.35620117187503,-24.033789062499963],[-67.00878906249994,-23.00136718750005],[-67.19487304687493,-22.821679687500037],[-66.99111328125,-22.509863281250006],[-66.71171874999999,-22.216308593749986],[-66.36518554687501,-22.113769531249957],[-66.32246093750001,-22.053125],[-66.28212890624997,-21.94746093750001],[-66.24760742187496,-21.83046875],[-66.22016601562495,-21.802539062499974],[-66.174658203125,-21.805664062499986],[-66.09858398437495,-21.83505859375002],[-66.05859375,-21.87949218750002],[-65.86015624999999,-22.019726562499983],[-65.77104492187493,-22.099609375000014],[-65.68618164062497,-22.11025390625005],[-65.51879882812497,-22.094531250000045],[-64.99262695312498,-22.109667968750017],[-64.60551757812499,-22.228808593750045],[-64.52363281250001,-22.37158203125],[-64.47773437499998,-22.485351562499986],[-64.44550781249998,-22.585351562500023],[-64.37397460937498,-22.761035156250017],[-64.32529296875,-22.82763671875],[-64.30791015624993,-22.7953125],[-64.26640625000002,-22.60332031249996],[-63.97612304687502,-22.072558593750003],[-63.92167968749993,-22.028613281250017],[-62.843359375,-21.997265625000026],[-62.62597656250003,-22.29042968749998],[-62.54155273437496,-22.349609374999957],[-62.37250976562498,-22.439160156249997],[-62.21416015624996,-22.612402343750034],[-61.798535156249955,-23.18203125],[-61.084716796875,-23.65644531250001]]]]},"properties":{"name":"Argentina","childNum":3}},{"geometry":{"type":"Polygon","coordinates":[[[46.490625,38.90668945312498],[46.1144531250001,38.877783203125034],[45.977441406249994,39.24389648437503],[45.76630859375004,39.37846679687499],[45.78447265625002,39.54560546875001],[45.456835937500074,39.494482421875006],[45.15283203125003,39.58266601562502],[45.03164062500005,39.76513671874997],[44.76826171875004,39.70351562500005],[44.28925781250004,40.040380859375006],[43.66621093750004,40.12636718750002],[43.56933593750003,40.48237304687498],[43.72265624999997,40.71953124999999],[43.43945312500003,41.10712890625001],[44.077246093750006,41.182519531249994],[44.81132812500002,41.259375],[45.001367187499994,41.29096679687498],[45.188574218750006,41.14741210937504],[45.07050781250004,41.075585937499966],[45.5875,40.846923828125],[45.37890624999997,40.67358398437506],[45.45439453125002,40.532373046874966],[45.96464843750002,40.233789062499966],[45.8859375000001,40.024853515624955],[45.57978515625004,39.9775390625],[46.202050781249994,39.59448242187503],[46.48144531249997,39.55517578125003],[46.36523437500003,39.402490234374994],[46.584765625000074,39.22368164062499],[46.400292968749994,39.1921875],[46.490625,38.90668945312498]]]},"properties":{"name":"Armenia","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-170.72626953125,-14.351171875],[-170.8205078125,-14.312109375],[-170.568115234375,-14.266796875000011],[-170.72626953125,-14.351171875]]]},"properties":{"name":"American Samoa","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[69.2824218750001,-49.05888671875002],[69.16718750000004,-48.88291015624996],[69.36875,-48.89042968749998],[69.2824218750001,-49.05888671875002]]],[[[69.18486328125002,-49.10957031250004],[69.59277343749997,-48.97099609375005],[69.64404296875003,-49.11738281250003],[69.40507812500002,-49.18173828125],[69.5423828125,-49.25566406250005],[70.32021484375005,-49.05859374999996],[70.55546875000007,-49.201464843750024],[70.38613281250005,-49.433984374999966],[70.16582031250002,-49.34296874999998],[69.75996093750004,-49.430175781249986],[69.98642578125006,-49.58164062500003],[70.2477539062501,-49.53066406250003],[70.12431640625002,-49.70439453124999],[69.153125,-49.5296875],[68.99296875000007,-49.704980468750016],[68.81474609375002,-49.69960937499999],[68.88339843750006,-49.16494140624995],[68.76953125000003,-49.06591796875003],[69.00244140624997,-48.661230468750006],[69.13613281250005,-48.86103515625003],[69.05214843750005,-49.08193359375001],[69.18486328125002,-49.10957031250004]]],[[[51.83457031250006,-46.43994140625],[51.65927734375006,-46.37363281249999],[51.7418945312501,-46.32685546874997],[51.83457031250006,-46.43994140625]]]]},"properties":{"name":"Fr. S. Antarctic Lands","childNum":3}},{"geometry":{"type":"Polygon","coordinates":[[[-61.71606445312503,17.037011718749994],[-61.85966796874996,17.013330078124966],[-61.887109374999966,17.09814453125],[-61.81728515624994,17.168945312500057],[-61.71606445312503,17.037011718749994]]]},"properties":{"name":"Antigua and Barb.","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[147.35605468750006,-43.396972656250014],[147.30888671875007,-43.50078125000002],[147.10498046875003,-43.43115234374996],[147.28388671875004,-43.278906250000034],[147.35605468750006,-43.396972656250014]]],[[[145.04296875000003,-40.78671875],[145.28300781250002,-40.76992187500002],[146.31748046875006,-41.16347656250001],[146.72343750000002,-41.07802734375001],[146.84814453124997,-41.16806640624996],[146.98984375000006,-40.99238281249997],[147.45478515625004,-41.00166015624998],[147.62167968750012,-40.844726562499986],[147.87294921875005,-40.87255859374997],[147.96875,-40.779589843750045],[148.215234375,-40.85488281250002],[148.34257812500007,-42.21533203124997],[148.21367187500002,-41.97001953125],[147.92441406250006,-42.5724609375],[147.94541015625006,-43.18183593749997],[147.7858398437501,-43.22001953125002],[147.69892578125004,-43.12255859374997],[147.64794921874997,-43.02060546874999],[147.8,-42.928125],[147.57382812500006,-42.84570312499997],[147.4523437500001,-43.03339843750001],[147.29794921875006,-42.790917968749994],[147.24501953125005,-43.21591796874999],[146.99697265625005,-43.15634765625002],[147.07734375000004,-43.27587890625003],[146.87392578125,-43.6125],[146.54853515625004,-43.50888671874999],[146.04316406250004,-43.547167968749974],[145.99443359375007,-43.37607421875002],[146.20800781249997,-43.31621093749999],[145.8732421875001,-43.29238281250002],[145.48759765625002,-42.92666015625004],[145.19882812500006,-42.23085937500004],[145.46826171874997,-42.492871093750026],[145.51660156249997,-42.3544921875],[145.33105468750003,-42.14707031250002],[145.23486328124997,-42.19697265624997],[145.23818359375,-42.01962890624999],[144.76611328125003,-41.39003906249998],[144.64609375000006,-40.980859375],[144.71855468750002,-40.67226562500002],[145.04296875000003,-40.78671875]]],[[[148.23691406250006,-40.515136718749986],[148.18779296875007,-40.592578125000045],[148.11728515625012,-40.52148437499996],[148.23691406250006,-40.515136718749986]]],[[[144.784375,-40.506738281249966],[144.74804687499997,-40.589453125000034],[144.7833984375001,-40.434863281249974],[144.784375,-40.506738281249966]]],[[[148.32626953125006,-40.30693359375003],[148.40400390625004,-40.486523437500026],[148.02011718750012,-40.40419921874995],[148.32626953125006,-40.30693359375003]]],[[[148.000390625,-39.75761718750003],[148.29736328125003,-39.985742187499966],[148.31357421875012,-40.173535156250026],[148.10566406250004,-40.26210937499995],[147.76718750000012,-39.87031249999998],[148.000390625,-39.75761718750003]]],[[[143.92792968750004,-40.116113281249966],[143.83857421875004,-39.90410156250003],[144.00078125000007,-39.580175781250034],[144.14101562500005,-39.953808593750026],[143.92792968750004,-40.116113281249966]]],[[[145.31445312500003,-38.49082031249996],[145.35507812500012,-38.55703124999995],[145.12841796875003,-38.52763671875],[145.31445312500003,-38.49082031249996]]],[[[137.59648437500007,-35.73867187499998],[137.92890625000004,-35.72607421875],[138.12343750000005,-35.85234375],[137.67089843749997,-35.897949218750014],[137.44843750000004,-36.07480468749999],[137.20957031250012,-35.982421875],[136.7550781250001,-36.03310546875002],[136.540625,-35.89013671875003],[136.63867187499997,-35.74882812500002],[137.33408203125006,-35.59248046875004],[137.58496093749997,-35.620214843750006],[137.59648437500007,-35.73867187499998]]],[[[153.53876953125004,-27.436425781250037],[153.42656250000002,-27.70644531249998],[153.43544921875,-27.40537109375002],[153.53876953125004,-27.436425781250037]]],[[[113.18300781250005,-26.053125],[112.96425781250005,-25.78310546875001],[112.94707031250002,-25.531542968750017],[113.18300781250005,-26.053125]]],[[[153.07744140625002,-25.75078125],[152.97666015625012,-25.551367187499963],[153.03808593750003,-25.193164062500003],[153.22753906249997,-25.00576171875001],[153.14375,-24.814843750000023],[153.25693359375012,-24.72890625],[153.35019531250012,-25.063085937499963],[153.07744140625002,-25.75078125]]],[[[151.14658203125006,-23.49082031250002],[151.24013671875,-23.529687500000037],[151.23828124999997,-23.77578125],[151.03330078125006,-23.530175781250037],[151.14658203125006,-23.49082031250002]]],[[[115.44619140625005,-20.78779296875001],[115.31806640625004,-20.850585937500014],[115.43457031249997,-20.66796875000003],[115.44619140625005,-20.78779296875001]]],[[[149.04375,-20.29150390624997],[148.93886718750005,-20.283691406249986],[148.98105468750012,-20.153515625000026],[149.04375,-20.29150390624997]]],[[[146.27832031249997,-18.23125],[146.29882812499997,-18.48476562500005],[146.09882812500004,-18.251757812500003],[146.27832031249997,-18.23125]]],[[[139.45917968750004,-17.11455078124996],[139.49277343750006,-16.990429687499983],[139.57089843750006,-17.09443359375004],[139.45917968750004,-17.11455078124996]]],[[[139.50781250000003,-16.57304687499996],[139.1595703125,-16.74169921875003],[139.29296875000003,-16.467285156249986],[139.58789062499997,-16.39521484374997],[139.69775390624997,-16.514941406250017],[139.50781250000003,-16.57304687499996]]],[[[137.09365234375005,-15.778125],[136.94267578125002,-15.711718749999989],[137.00957031250007,-15.594824218749977],[137.09365234375005,-15.778125]]],[[[124.59726562500006,-15.40195312500002],[124.52421875000002,-15.421484375],[124.51933593750002,-15.26748046874998],[124.59726562500006,-15.40195312500002]]],[[[125.19882812500006,-14.57949218749998],[125.0912109375,-14.59169921874998],[125.15996093750002,-14.456054687499972],[125.19882812500006,-14.57949218749998]]],[[[136.71464843750002,-13.803906249999983],[136.89082031250004,-13.786621093750014],[136.74531250000004,-14.072656250000023],[136.95078125000006,-14.184277343750026],[136.89433593750002,-14.293066406249977],[136.33544921875003,-14.211816406250037],[136.42470703125,-13.864843749999963],[136.6556640625,-13.675878906250006],[136.71464843750002,-13.803906249999983]]],[[[136.23740234375006,-13.824511718750003],[136.12265625000012,-13.816601562499983],[136.21542968750012,-13.664746093750054],[136.23740234375006,-13.824511718750003]]],[[[136.33867187500007,-11.602343749999989],[136.18027343750006,-11.676757812499957],[136.47929687500002,-11.465917968749991],[136.33867187500007,-11.602343749999989]]],[[[130.45927734375007,-11.679296875000034],[130.60625,-11.816601562500026],[130.04326171875007,-11.787304687500011],[130.19755859375007,-11.658203125],[130.15283203124997,-11.477539062499972],[130.29492187499997,-11.33681640624998],[130.45927734375007,-11.679296875000034]]],[[[130.6188476562501,-11.376074218749991],[131.02304687500006,-11.334375],[131.26826171875004,-11.18984375],[131.53857421874997,-11.436914062500037],[130.95097656250007,-11.926464843750026],[130.51191406250004,-11.617871093749955],[130.38457031250002,-11.1921875],[130.6188476562501,-11.376074218749991]]],[[[136.59853515625,-11.378906249999943],[136.52656250000004,-11.438867187499994],[136.78027343749997,-11.0125],[136.59853515625,-11.378906249999943]]],[[[132.59335937500006,-11.302832031249991],[132.48378906250005,-11.037304687499983],[132.57880859375004,-10.968847656249977],[132.59335937500006,-11.302832031249991]]],[[[143.17890625000004,-11.954492187499966],[143.11025390625,-12.303515625000017],[143.40156250000004,-12.639941406249989],[143.5866210937501,-13.443652343750031],[143.54843750000012,-13.74101562499996],[143.75634765625003,-14.348828124999969],[143.96181640625005,-14.462890625000028],[144.473046875,-14.231835937500023],[144.64804687500006,-14.492480468750017],[145.28769531250006,-14.943164062499989],[145.42607421875002,-16.406152343749966],[145.75478515625,-16.879492187500034],[145.91210937499997,-16.9125],[146.12587890625005,-17.63525390625],[146.03222656249997,-18.272851562500037],[146.3332031250001,-18.55371093749997],[146.38339843750006,-18.97705078124997],[147.13876953125006,-19.39316406250002],[147.41855468750012,-19.378125],[147.7423828125001,-19.770117187499977],[148.759375,-20.28955078125003],[148.88476562499997,-20.480859375],[148.72998046874997,-20.4677734375],[148.68369140625012,-20.58017578124999],[149.20488281250007,-21.125097656249977],[149.45410156249997,-21.57871093750002],[149.70390625000002,-22.440527343750006],[149.82246093750004,-22.389843749999983],[149.97441406250007,-22.55068359374998],[149.94189453125003,-22.30810546875003],[150.07617187500003,-22.16445312499998],[150.54130859375002,-22.55908203125],[150.56855468750004,-22.38398437500004],[150.67246093750012,-22.418164062499983],[150.84316406250005,-23.4580078125],[151.15380859375003,-23.784082031249994],[151.83164062500006,-24.12294921875001],[152.12988281250003,-24.59755859374998],[152.45634765625007,-24.802441406249983],[152.65429687499997,-25.201953125000017],[152.91347656250005,-25.432128906250014],[152.98496093750012,-25.816210937500003],[153.16494140625,-25.964160156250045],[153.11679687500006,-27.194433593750034],[153.57568359375003,-28.24052734374999],[153.6168945312501,-28.673046875],[153.03056640625002,-30.563378906249994],[152.94394531250012,-31.43486328124999],[152.5592773437501,-32.045703125],[152.4704101562501,-32.439062500000034],[152.13652343750002,-32.678125],[152.1642578125001,-32.75742187499996],[151.812890625,-32.90107421875001],[151.29208984375012,-33.580957031249966],[151.28027343750003,-33.92666015625005],[151.12480468750007,-34.00527343749998],[151.23154296875006,-34.0296875],[150.8712890625001,-34.49912109374996],[150.80458984375,-35.01289062500001],[150.19531249999997,-35.83359374999996],[149.93271484375012,-37.528515625000026],[149.480859375,-37.77119140625],[147.87675781250002,-37.93417968749998],[146.8568359375,-38.663476562499966],[146.21748046875004,-38.72744140625004],[146.33662109375004,-38.89423828125],[146.46660156250007,-38.84033203125003],[146.40000000000012,-39.14550781250003],[146.1583984375001,-38.86572265624996],[145.93535156250002,-38.90175781250002],[145.79082031250007,-38.66699218749997],[145.39726562500002,-38.53535156249998],[145.54218750000004,-38.39384765625002],[145.4757812500001,-38.24375],[145.29277343750002,-38.237597656249974],[144.95957031250012,-38.500781250000045],[144.71777343749997,-38.34033203125004],[144.91142578125007,-38.34404296874999],[145.11992187500007,-38.091308593750014],[144.89130859375004,-37.899804687499994],[144.39550781250003,-38.13691406249998],[144.6652343750001,-38.20996093750003],[143.53896484375005,-38.82089843749998],[142.45585937500002,-38.38632812499999],[141.725,-38.27138671875002],[141.5939453125001,-38.38779296875002],[141.42421875,-38.36347656250004],[141.0109375000001,-38.07695312500003],[140.39042968750007,-37.89667968749998],[139.78427734375012,-37.24580078124998],[139.85732421875,-36.662109375],[139.72900390625003,-36.37138671875002],[138.9689453125001,-35.58076171874997],[139.17802734375007,-35.52304687500002],[139.289453125,-35.61132812499997],[139.28251953125002,-35.375390624999966],[138.521875,-35.6423828125],[138.184375,-35.612695312499994],[138.5111328125,-35.02441406249996],[138.48994140625004,-34.76357421875002],[138.0892578125,-34.16982421875002],[137.69169921875002,-35.14296875000004],[136.88359375000007,-35.23974609375004],[137.01425781250012,-34.91582031250003],[137.39101562500005,-34.91328124999997],[137.49384765625004,-34.16113281250003],[137.9318359375001,-33.57910156250003],[137.85234375000007,-33.20078124999996],[137.99257812500005,-33.094238281250014],[137.78320312500003,-32.578125],[137.79091796875,-32.82324218749996],[137.44228515625,-33.1935546875],[137.23730468750003,-33.62949218749999],[136.43066406249997,-34.02998046875004],[135.891015625,-34.660937499999974],[135.96972656249997,-34.98183593749998],[135.7923828125,-34.863281249999986],[135.64755859375006,-34.93964843750001],[135.12304687499997,-34.58574218750003],[135.21679687499997,-34.48730468749996],[135.45,-34.58105468749996],[135.21894531250004,-33.959765625000045],[134.88876953125012,-33.62636718749998],[134.79101562499997,-33.32832031250001],[134.60771484375002,-33.19013671875001],[134.30126953124997,-33.16503906249996],[134.17353515625004,-32.979101562500006],[134.10039062500007,-32.748632812500034],[134.22714843750006,-32.73056640624999],[134.23417968750007,-32.54853515625004],[133.66533203125007,-32.207226562500054],[133.21210937500004,-32.18378906249998],[132.75742187500012,-31.95625],[132.21464843750002,-32.00712890624996],[131.14365234375006,-31.49570312500005],[130.78300781250002,-31.604003906249986],[129.1876953125001,-31.659960937500017],[127.31982421874997,-32.2640625],[125.91718750000004,-32.296972656250034],[124.75878906250003,-32.882714843749994],[124.24375,-33.01523437499999],[123.50683593749997,-33.916210937500054],[122.15097656250006,-33.99179687499999],[122.06113281250006,-33.874414062499966],[121.40507812500007,-33.826757812500034],[119.85410156250012,-33.97470703124998],[119.45058593750005,-34.368261718750034],[118.89531250000007,-34.47988281250004],[118.13554687500002,-34.98662109374999],[117.58193359375005,-35.09775390624998],[116.51718750000012,-34.98789062499998],[115.98671875000005,-34.795019531250034],[115.56503906250012,-34.42578125000003],[115.00878906250003,-34.25585937499997],[114.9938476562501,-33.51533203125],[115.3587890625,-33.63994140624999],[115.68300781250005,-33.19287109375003],[115.6984375000001,-31.694531250000054],[115.07792968750007,-30.560449218750023],[114.85683593750005,-29.14296875],[114.16513671875012,-28.08066406250002],[114.028125,-27.34726562499999],[113.18476562500004,-26.182226562499963],[113.32324218749997,-26.243847656249997],[113.35605468750012,-26.080468750000023],[113.58164062500006,-26.558105468749986],[113.73369140625002,-26.59511718749998],[113.83642578125003,-26.50058593749999],[113.85283203125007,-26.33212890625005],[113.39531250000002,-25.71328125],[113.4513671875001,-25.599121093750014],[113.7130859375001,-25.83076171875004],[113.72373046875006,-26.129785156250037],[113.85390625,-26.01445312499999],[113.99199218750007,-26.32148437500001],[114.09033203124997,-26.393652343749963],[114.21572265625,-26.289453124999966],[114.2142578125,-25.851562500000014],[113.41767578125004,-24.435644531250034],[113.48984375000012,-23.869628906250014],[113.7570312500001,-23.418164062500054],[113.79511718750004,-22.91455078125003],[113.68281250000004,-22.637792968749963],[114.02285156250005,-21.881445312499977],[114.12392578125005,-21.828613281249957],[114.14160156250003,-22.483105468749983],[114.37773437500007,-22.341503906249997],[114.70927734375002,-21.82343749999997],[115.45615234375012,-21.49169921874997],[116.0109375000001,-21.030371093749963],[116.7067382812501,-20.653808593749986],[117.40625,-20.72119140625003],[118.19921875000003,-20.37519531249997],[118.75146484374997,-20.261914062499983],[119.10449218749997,-19.995312500000026],[119.58593750000003,-20.03828125],[120.99794921875,-19.604394531249966],[121.33769531250002,-19.31992187500002],[121.83378906250002,-18.477050781249986],[122.34541015625004,-18.11191406250002],[122.14746093749997,-17.54902343750001],[122.2609375000001,-17.135742187500014],[122.72041015625004,-16.78769531249999],[122.97070312499997,-16.436816406250003],[123.56308593750006,-17.520898437499966],[123.59355468750007,-17.03037109375005],[123.83105468750003,-17.120800781249997],[123.8744140625,-16.918652343750026],[123.4904296875001,-16.49072265624997],[123.62597656249997,-16.416308593750003],[123.60703125000006,-16.224023437499994],[123.72890625,-16.192480468749963],[123.85917968750007,-16.38232421875],[124.04443359374997,-16.264941406249974],[124.30039062500006,-16.388281249999977],[124.77197265624997,-16.40263671874996],[124.40488281250006,-16.298925781249977],[124.41640625,-16.133496093750026],[124.5768554687501,-16.11367187499998],[124.64853515625012,-15.870214843750034],[124.50429687500005,-15.972460937499989],[124.38164062500002,-15.758203125000037],[124.43955078125012,-15.493554687500037],[124.56162109375012,-15.496289062499969],[124.69257812500004,-15.273632812499997],[125.06298828125003,-15.44228515624998],[125.0729492187501,-15.306738281249991],[124.90917968750003,-15.310058593749957],[124.83906250000004,-15.160742187500006],[125.03818359375012,-15.004101562499969],[125.35566406250004,-15.119824218750011],[125.17871093749997,-14.714746093749994],[125.57978515625004,-14.483203124999989],[125.62773437500002,-14.256640625000017],[125.70458984374997,-14.29140625],[125.66162109375003,-14.529492187500011],[125.81953125000004,-14.469140624999966],[125.890625,-14.61796875],[126.0207031250001,-14.49453125],[126.0539062500001,-13.977246093750026],[126.1842773437501,-14.00205078125002],[126.25849609375004,-14.163574218749972],[126.403125,-14.018945312499994],[126.5697265625,-14.160937499999974],[126.7806640625,-13.955175781249977],[126.77558593750004,-13.788476562500037],[126.90322265625,-13.744140624999972],[127.45761718750006,-14.031445312499969],[128.18046875000007,-14.711621093749983],[128.06943359375012,-15.329296874999969],[128.15546875000004,-15.225585937499972],[128.25468750000002,-15.298535156250011],[128.175,-15.043164062500026],[128.57578125000006,-14.774511718750006],[129.05820312500012,-14.884375],[129.21582031249997,-15.160253906249991],[129.26757812500003,-14.871484375000051],[129.63476562499997,-15.139746093749991],[129.637109375,-14.850976562500037],[129.84873046875012,-14.828906249999989],[129.60468750000004,-14.647070312499977],[129.69794921875004,-14.557421875000017],[129.37871093750002,-14.39248046874998],[129.70986328125,-13.979980468749972],[129.83886718749997,-13.572949218749997],[130.25976562500003,-13.30224609375],[130.1349609375001,-13.145507812499957],[130.1681640625001,-12.957421875],[130.39990234374997,-12.68789062499999],[130.61748046875007,-12.646875],[130.62265625000006,-12.43105468749998],[130.8673828125001,-12.557812499999955],[130.87382812500007,-12.367187500000028],[131.29160156250006,-12.067871093749972],[131.43828125000002,-12.27695312500002],[132.06406250000006,-12.28076171875],[132.25322265625007,-12.186035156249972],[132.41103515625,-12.295117187499997],[132.51054687500002,-12.134863281250034],[132.71279296875,-12.1234375],[132.63046875000012,-12.035156249999972],[132.67421875000005,-11.649023437499991],[132.47519531250006,-11.491503906249974],[132.07285156250006,-11.474707031250006],[131.82246093750004,-11.302441406249997],[131.96152343750006,-11.180859375000011],[132.15546875000004,-11.311132812499991],[132.33398437499997,-11.223535156249994],[132.6828125000001,-11.505566406249997],[132.96103515625012,-11.407324218749963],[133.18525390625004,-11.705664062499991],[133.90419921875,-11.832031249999972],[134.4173828125,-12.052734375],[134.73027343750002,-11.984375],[135.02968750000005,-12.19375],[135.2179687500001,-12.221679687499957],[135.92246093750012,-11.825781250000034],[135.70439453125007,-12.209863281250037],[136.00849609375004,-12.19140625],[136.08183593750007,-12.422460937500006],[136.26064453125,-12.433789062499997],[136.32851562500005,-12.305566406249994],[136.24990234375,-12.173046875],[136.44335937499997,-11.951464843749974],[136.7194335937501,-12.226464843749952],[136.89746093749997,-12.243554687499966],[136.94746093750004,-12.34990234374996],[136.53701171875,-12.784277343749991],[136.59433593750012,-13.003808593750051],[136.46103515625006,-13.225195312500034],[136.29414062500004,-13.137988281250031],[135.92734375000012,-13.304296874999977],[135.95449218750005,-13.934863281250017],[135.40517578125005,-14.758203124999966],[135.4533203125001,-14.923144531250003],[136.20537109375002,-15.403417968749963],[136.29140625000005,-15.570117187500003],[136.70488281250007,-15.685253906250011],[136.78466796874997,-15.89423828125004],[137.00214843750004,-15.878320312499994],[137.70371093750006,-16.233007812499963],[138.24501953125005,-16.718359374999977],[139.00986328125006,-16.899316406249994],[139.2484375,-17.328613281249957],[140.03583984375004,-17.702636718749957],[140.51113281250005,-17.62451171875003],[140.83046875,-17.414453125000037],[141.29140625,-16.46347656250002],[141.62548828124997,-15.056640625000014],[141.52294921875003,-14.470117187499994],[141.59433593750006,-14.152832031250014],[141.47255859375,-13.797558593750011],[141.64541015625,-13.259082031250003],[141.61357421875002,-12.943457031250006],[141.92978515625006,-12.73984375],[141.67773437500003,-12.491406250000011],[141.68857421875012,-12.351074218750028],[141.87050781250005,-11.9755859375],[141.96113281250004,-12.054296874999963],[142.168359375,-10.946582031249974],[142.45644531250005,-10.707324218749989],[142.60507812500012,-10.748242187499983],[142.55273437500003,-10.874414062500023],[142.7796875,-11.115332031249977],[142.87255859374997,-11.821386718750034],[143.17890625000004,-11.954492187499966]]],[[[142.2748046875,-10.704785156250011],[142.19140624999997,-10.762011718750031],[142.1310546875001,-10.640625],[142.19794921875004,-10.59199218750004],[142.2748046875,-10.704785156250011]]]]},"properties":{"name":"Australia","childNum":30}},{"geometry":{"type":"Polygon","coordinates":[[[16.953125,48.598828125],[16.86542968750001,48.3869140625],[17.147363281250023,48.00595703125],[17.06660156250001,47.707568359374996],[16.421289062500023,47.674462890624994],[16.676562500000017,47.536035156249994],[16.44287109375,47.39951171875],[16.453417968750017,47.006787109375],[16.093066406250017,46.86328125],[15.957617187500006,46.677636718749994],[14.893261718750011,46.605908203125],[14.5498046875,46.399707031249996],[13.7,46.520263671875],[13.490039062500017,46.555566406249994],[13.3515625,46.557910156249996],[13.16875,46.57265625],[12.479199218750011,46.672509765624994],[12.38828125,46.70263671875],[12.330078125,46.759814453124996],[12.267968750000023,46.835888671875],[12.154101562500017,46.93525390625],[12.130761718750023,46.98476562499999],[12.16552734375,47.028173828125],[12.201269531250006,47.060888671875],[12.197167968750023,47.075],[12.16943359375,47.08212890625],[11.775683593750017,46.986083984375],[11.527539062500011,46.997412109375],[11.433203125,46.983056640624994],[11.244433593750017,46.97568359375],[11.133886718750006,46.936181640624994],[11.0634765625,46.859130859375],[11.025097656250011,46.79697265625],[10.993261718750006,46.777001953124994],[10.92734375,46.769482421875],[10.828906250000017,46.775244140625],[10.759765625,46.793310546875],[10.689257812500017,46.84638671875],[10.579785156250011,46.8537109375],[10.479394531250023,46.855126953124994],[10.452832031250011,46.86494140625],[10.45458984375,46.8994140625],[10.414941406250023,46.964404296874996],[10.349414062500017,46.98476562499999],[10.133496093750011,46.851513671875],[9.580273437500011,47.057373046875],[9.527539062500011,47.270751953125],[9.625878906250023,47.467041015625],[9.524023437500006,47.52421875],[9.748925781250023,47.575537109375],[9.839160156250017,47.552294921874996],[9.971582031250023,47.505322265625],[10.034082031250023,47.473583984375],[10.059863281250017,47.449072265625],[10.066308593750023,47.393359375],[10.200292968750006,47.363427734374994],[10.183007812500023,47.27880859375],[10.369140625,47.366064453125],[10.40390625,47.4169921875],[10.439453125,47.5515625],[10.482812500000023,47.541796875],[10.65869140625,47.547216796875],[10.741601562500023,47.52412109375],[10.873046875,47.52021484375],[11.0419921875,47.393115234374996],[12.185644531250006,47.61953125],[12.203808593750011,47.646728515625],[12.196875,47.70908203125],[12.209277343750017,47.71826171875],[12.268359375000017,47.702734375],[12.353540736607165,47.70264787946429],[12.492553013392856,47.68551897321428],[12.685839843750017,47.669335937499994],[12.771386718750023,47.639404296875],[12.796191406250017,47.60703125],[12.781152343750023,47.5904296875],[12.7828125,47.56416015625],[12.809375,47.5421875],[12.87890625,47.5064453125],[12.968066406250017,47.47568359375],[13.014355468750011,47.478076171874996],[13.031542968750017,47.5080078125],[13.047949218750006,47.579150390624996],[13.054101562500023,47.655126953125],[12.897656250000011,47.721875],[12.953515625000023,47.890625],[12.760351562500006,48.106982421874996],[13.215234375000023,48.301904296874994],[13.322851562500006,48.33125],[13.409375,48.394140625],[13.459863281250023,48.56455078125],[13.4716796875,48.571826171874996],[13.486621093750017,48.581835937499996],[13.636623883928596,48.580904017857144],[13.785351562500011,48.587451171874996],[13.798828125,48.6216796875],[13.802929687500011,48.747509765625],[13.814746093750017,48.766943359375],[14.049121093750017,48.602490234375],[14.691308593750023,48.59921875],[15.066796875000023,48.997851562499996],[16.057226562500006,48.754785156249994],[16.543554687500006,48.796240234375],[16.953125,48.598828125]]]},"properties":{"name":"Austria","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[46.1144531250001,38.877783203125034],[45.4796875000001,39.00625],[44.81718750000002,39.65043945312496],[44.76826171875004,39.70351562500005],[45.03164062500005,39.76513671874997],[45.15283203125003,39.58266601562502],[45.456835937500074,39.494482421875006],[45.78447265625002,39.54560546875001],[45.76630859375004,39.37846679687499],[45.977441406249994,39.24389648437503],[46.1144531250001,38.877783203125034]]],[[[48.572851562500006,41.84448242187503],[49.45673828125004,40.79985351562502],[49.77597656250006,40.583984375],[50.18251953125005,40.50478515625002],[50.3659179687501,40.279492187499955],[49.91884765625005,40.31640625000003],[49.55117187499999,40.19414062499999],[49.3244140625001,39.60834960937501],[49.36279296875003,39.349560546874955],[49.16533203125002,39.03027343750003],[49.013476562500074,39.13398437500001],[48.85449218750003,38.83881835937501],[48.86875,38.43549804687498],[48.59267578125005,38.41108398437498],[47.99648437499999,38.85375976562503],[48.292089843750006,39.01884765624999],[48.10439453125005,39.241113281249994],[48.322167968749994,39.39907226562502],[47.995898437500074,39.683935546875034],[46.490625,38.90668945312498],[46.400292968749994,39.1921875],[46.584765625000074,39.22368164062499],[46.36523437500003,39.402490234374994],[46.48144531249997,39.55517578125003],[46.202050781249994,39.59448242187503],[45.57978515625004,39.9775390625],[45.8859375000001,40.024853515624955],[45.96464843750002,40.233789062499966],[45.45439453125002,40.532373046874966],[45.37890624999997,40.67358398437506],[45.5875,40.846923828125],[45.07050781250004,41.075585937499966],[45.188574218750006,41.14741210937504],[45.001367187499994,41.29096679687498],[45.2171875,41.423193359375006],[45.28095703125004,41.449560546875034],[46.086523437500006,41.183837890625],[46.43095703125002,41.077050781249994],[46.534375,41.08857421875004],[46.62636718750005,41.15966796875006],[46.66240234375002,41.24550781250002],[46.67255859375004,41.28681640625001],[46.61894531250002,41.34375],[46.30546875000002,41.507714843749994],[46.18427734375004,41.70214843749997],[46.42988281250004,41.890966796875006],[46.74931640625002,41.812597656250006],[47.31767578125002,41.28242187500001],[47.79101562499997,41.19926757812502],[48.572851562500006,41.84448242187503]]]]},"properties":{"name":"Azerbaijan","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[30.553613281250023,-2.400097656250011],[30.53369140625,-2.42626953125],[30.441992187500006,-2.613476562500011],[30.424218750000023,-2.6416015625],[30.47333984375001,-2.6943359375],[30.42402343750001,-2.824023437500003],[30.433496093750023,-2.87451171875],[30.515039062500023,-2.917578125],[30.604296875000017,-2.935253906250011],[30.70947265625,-2.977246093750011],[30.7802734375,-2.98486328125],[30.811132812500006,-3.116406250000011],[30.79023437500001,-3.274609375000011],[30.4,-3.65390625],[29.947265625,-4.307324218750011],[29.7177734375,-4.455859375],[29.403222656250023,-4.449316406250006],[29.211816406250023,-3.833789062500003],[29.224414062500017,-3.053515625],[29.01435546875001,-2.72021484375],[29.10205078125,-2.595703125],[29.390234375,-2.80859375],[29.698046875000017,-2.794726562500003],[29.8681640625,-2.71640625],[29.93017578125,-2.339550781250011],[30.117285156250006,-2.416601562500006],[30.408496093750017,-2.31298828125],[30.553613281250023,-2.400097656250011]]]},"properties":{"name":"Burundi","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[5.693554687500011,50.774755859375006],[5.993945312500017,50.75043945312504],[6.340917968750006,50.451757812500034],[6.116503906250045,50.120996093749966],[6.08906250000004,50.15458984374996],[6.054785156249977,50.154296875],[5.976269531250068,50.167187499999955],[5.866894531250068,50.08281250000002],[5.817382812500028,50.01269531250003],[5.7880859375,49.96123046875002],[5.744042968749994,49.91962890624998],[5.789746093749983,49.53828125000001],[5.50732421875,49.51088867187502],[4.867578125000051,49.78813476562502],[4.818652343750045,50.153173828125034],[4.545019531250063,49.96025390624999],[4.149316406250023,49.971582031249994],[4.174609375000017,50.24648437500005],[3.689355468750023,50.30605468750002],[3.595410156250068,50.47734374999999],[3.27333984375008,50.53154296875002],[3.10683593750008,50.779443359374994],[2.759375,50.750634765624994],[2.52490234375,51.097119140624955],[3.35009765625,51.37768554687503],[3.43251953125008,51.24575195312505],[3.902050781250011,51.20766601562502],[4.226171875000034,51.38647460937503],[5.03095703125004,51.46909179687498],[5.214160156250045,51.278955078124966],[5.796484375000034,51.153076171875],[5.693554687500011,50.774755859375006]]]},"properties":{"name":"Belgium","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[3.595410156250011,11.6962890625],[3.553906250000011,11.631884765624989],[3.490527343750017,11.49921875],[3.48779296875,11.395410156249994],[3.638867187500011,11.176855468749991],[3.65625,11.154589843749989],[3.6953125,11.1203125],[3.71640625,11.07958984375],[3.7568359375,10.76875],[3.83447265625,10.607421875],[3.771777343750017,10.417626953124994],[3.646582031250006,10.408984374999989],[3.60205078125,10.004541015624994],[3.3251953125,9.778466796874994],[3.044921875,9.083837890624991],[2.774804687500023,9.048535156249997],[2.703125,8.371826171875],[2.68603515625,7.873730468749997],[2.719335937500006,7.616259765624989],[2.7509765625,7.541894531249994],[2.78515625,7.476855468749989],[2.783984375000017,7.443408203124989],[2.765820312500011,7.422509765624994],[2.75048828125,7.395068359374989],[2.756738281250023,7.067919921874989],[2.721386718750011,6.980273437499989],[2.731738281250017,6.852832031249989],[2.7529296875,6.771630859374994],[2.774609375000011,6.711718749999989],[2.753710937500017,6.661767578124994],[2.735644531250017,6.595703125],[2.706445312500023,6.369238281249991],[1.62265625,6.216796875],[1.777929687500006,6.294628906249997],[1.530957031250011,6.992431640625],[1.624707031250011,6.997314453125],[1.600195312500006,9.050048828125],[1.3857421875,9.361669921874991],[1.330078125,9.996972656249994],[0.763378906250011,10.386669921874997],[0.900488281250006,10.993261718749991],[1.4267578125,11.447119140624991],[1.980371093750023,11.418408203124997],[2.38916015625,11.897070312499991],[2.366015625000017,12.221923828125],[2.805273437500006,12.383837890624989],[3.595410156250011,11.6962890625]]]},"properties":{"name":"Benin","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[0.217480468750011,14.911474609374991],[0.163867187500017,14.497216796874994],[0.382519531250011,14.245800781249997],[0.42919921875,13.972119140624997],[0.6181640625,13.703417968750003],[1.201171875,13.357519531249991],[0.988476562500011,13.36484375],[0.9873046875,13.041894531249994],[1.56494140625,12.635400390624994],[2.104589843750006,12.701269531249991],[2.226269531250011,12.466064453125],[2.072949218750011,12.309375],[2.38916015625,11.897070312499991],[1.980371093750023,11.418408203124997],[1.4267578125,11.447119140624991],[0.900488281250006,10.993261718749991],[0.49267578125,10.954980468749994],[-0.068603515625,11.115625],[-0.299462890624994,11.166894531249994],[-0.627148437499983,10.927392578124994],[-1.04248046875,11.010058593749989],[-2.829931640624977,10.998388671874991],[-2.914892578124977,10.592333984374989],[-2.791162109374994,10.432421874999989],[-2.780517578125,9.745849609375],[-2.765966796874977,9.658056640624991],[-2.706201171874994,9.533935546875],[-2.695849609374989,9.481347656249994],[-2.7171875,9.457128906249991],[-2.7666015625,9.424707031249994],[-2.816748046874977,9.425830078124989],[-2.875146484374994,9.500927734374997],[-2.90087890625,9.534619140624997],[-2.948144531249994,9.610742187499994],[-2.98828125,9.687353515624991],[-3.042626953124994,9.720898437499997],[-3.095800781249977,9.752099609374994],[-3.160693359374989,9.849169921874989],[-3.223535156249994,9.895458984374997],[-3.289697265624994,9.882226562499994],[-3.581152343749977,9.92431640625],[-3.790625,9.9171875],[-4.18115234375,9.78173828125],[-4.267187499999977,9.743261718749991],[-4.332226562499983,9.645703125],[-4.406201171874983,9.647998046874989],[-4.526611328125,9.723486328124991],[-4.625830078124977,9.713574218749997],[-4.721777343749977,9.756542968749997],[-5.262304687499977,10.319677734374991],[-5.523535156249977,10.426025390625],[-5.490478515625,11.042382812499994],[-5.250244140625,11.375781249999989],[-5.288134765624989,11.827929687499989],[-4.699316406249977,12.076171875],[-4.4287109375,12.337597656249997],[-4.480615234374994,12.672216796874991],[-4.227099609374989,12.793701171875],[-4.328710937499977,13.119042968749994],[-4.151025390624994,13.306201171875003],[-3.947314453124989,13.402197265624991],[-3.527636718749989,13.182714843749991],[-3.3017578125,13.28076171875],[-3.248632812499977,13.658349609374994],[-2.950830078124994,13.6484375],[-2.873925781249994,13.950732421875003],[-2.586718749999989,14.227587890625003],[-2.113232421874983,14.16845703125],[-1.97304687499999,14.45654296875],[-1.049560546875,14.81953125],[-0.760449218749983,15.047753906249994],[-0.235888671874989,15.059423828124991],[0.217480468750011,14.911474609374991]]]},"properties":{"name":"Burkina Faso","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[91.94921875000003,21.50805664062503],[91.85947265625012,21.532958984375057],[91.90771484374997,21.722949218750017],[91.94921875000003,21.50805664062503]]],[[[91.87382812500002,21.832128906249977],[91.8375976562501,21.750244140625],[91.85068359375012,21.927050781250045],[91.87382812500002,21.832128906249977]]],[[[91.15078125000005,22.175195312499966],[91.04472656250002,22.10517578125001],[91.0794921875,22.519726562499983],[91.15078125000005,22.175195312499966]]],[[[91.55673828125006,22.38222656250005],[91.41132812500004,22.475683593750006],[91.45605468749997,22.61650390624999],[91.55673828125006,22.38222656250005]]],[[[90.77763671875007,22.089306640624983],[90.51503906250005,22.06513671875001],[90.68046875000007,22.327490234375006],[90.50292968749997,22.835351562499994],[90.59648437500002,22.863525390625057],[90.86816406250003,22.48486328125],[90.77763671875007,22.089306640624983]]],[[[88.94072265625002,26.24536132812497],[88.97041015625004,26.250878906250023],[88.95195312500002,26.412109375],[89.01865234375012,26.410253906249977],[89.28925781250004,26.03759765625],[89.54990234375006,26.005273437499994],[89.57275390625003,26.13232421875003],[89.67089843750003,26.21381835937504],[89.8229492187501,25.94140625000003],[89.82490234375004,25.56015625],[89.80087890625012,25.33613281250001],[89.81406250000006,25.305371093749955],[89.86630859375012,25.293164062499955],[90.11962890625003,25.21997070312497],[90.61308593750002,25.16772460937497],[92.04970703125005,25.16948242187499],[92.46835937500006,24.94414062499999],[92.38496093750004,24.848779296875023],[92.25126953125007,24.895068359375045],[92.22832031250002,24.88134765625],[92.22666015625012,24.77099609374997],[92.11748046875002,24.493945312500017],[92.06416015625004,24.374365234375006],[91.84619140624997,24.17529296875003],[91.72656250000003,24.20507812499997],[91.35019531250012,24.06049804687501],[91.16044921875007,23.66064453125],[91.359375,23.06835937500003],[91.43623046875004,23.19990234375001],[91.55351562500002,22.991552734375006],[91.61953125,22.97968750000001],[91.75097656250003,23.053515625000017],[91.75419921875007,23.287304687499955],[91.79003906249997,23.361035156249983],[91.937890625,23.504687500000017],[91.92949218750007,23.598242187499977],[91.92958984375,23.68598632812501],[91.97851562500003,23.691992187499977],[92.04404296875006,23.677783203125017],[92.24609375000003,23.683593750000057],[92.33378906250002,23.242382812499955],[92.36162109375002,22.929003906250074],[92.46445312500006,22.734423828125045],[92.49140625000004,22.685400390625006],[92.5612304687501,22.04804687500001],[92.57490234375004,21.978076171875045],[92.58281250000002,21.940332031249994],[92.5934570312501,21.46733398437499],[92.63164062500002,21.306201171875045],[92.33056640624997,21.439794921874977],[92.17958984375005,21.293115234375023],[92.32412109375,20.791845703125063],[92.0560546875,21.1748046875],[91.86337890625012,22.350488281249966],[91.7970703125001,22.297460937500006],[91.48007812500006,22.884814453125045],[91.2162109375,22.642236328124994],[90.94560546875002,22.597021484375034],[90.65625,23.025488281250006],[90.60400390624997,23.59135742187499],[90.55566406249997,23.42153320312505],[90.26914062500012,23.455859375000017],[90.59091796875012,23.266406250000045],[90.43505859374997,22.751904296874955],[90.61611328125,22.362158203125034],[90.23056640625006,21.82978515625004],[90.07119140625005,21.887255859375017],[90.20957031250006,22.156591796875006],[89.95419921875006,22.022851562500023],[89.91806640625012,22.11616210937501],[89.98515625000002,22.466406250000063],[89.81191406250005,21.983496093750006],[89.56855468750004,21.767431640625034],[89.48320312500007,22.275537109374994],[89.50058593750006,21.914355468750045],[89.35371093750004,21.72109375],[89.09394531250004,21.872753906249983],[89.05,22.274609374999983],[88.92070312500002,22.632031249999955],[88.89970703125002,22.843505859375057],[88.85058593749997,23.040527343750057],[88.928125,23.186621093750063],[88.72441406250002,23.254980468750034],[88.69765625,23.493017578125034],[88.63574218749997,23.55],[88.56738281249997,23.674414062500034],[88.69980468750006,24.002539062500006],[88.71376953125,24.069628906250017],[88.72656250000003,24.186230468749955],[88.7335937500001,24.23090820312501],[88.72353515625,24.27490234375],[88.64228515625004,24.325976562500017],[88.49853515625003,24.34663085937504],[88.3375,24.45385742187503],[88.225,24.460644531249983],[88.14550781250003,24.485791015624955],[88.07910156249997,24.549902343750063],[88.02343750000003,24.62783203125005],[88.03027343749997,24.66445312500005],[88.0451171875001,24.713037109374994],[88.1498046875,24.914648437500034],[88.1888671875,24.92060546875001],[88.27949218750004,24.881933593750034],[88.31337890625005,24.8818359375],[88.37294921875,24.961523437499977],[88.45625,25.18842773437504],[88.57382812500006,25.18789062499999],[88.92978515625012,25.222998046875063],[88.94414062500002,25.290771484375],[88.85478515625002,25.333544921875017],[88.76914062500006,25.490478515625],[88.50244140624997,25.537011718749994],[88.14746093749997,25.811425781250023],[88.1066406250001,25.841113281250045],[88.15078125000005,26.08715820312497],[88.33398437499997,26.257519531249955],[88.44042968749997,26.369482421875034],[88.38623046875003,26.471533203125034],[88.35146484375005,26.482568359374966],[88.36992187500002,26.564111328124994],[88.51826171875004,26.517773437499955],[88.68281250000004,26.291699218749983],[88.94072265625002,26.24536132812497]]]]},"properties":{"name":"Bangladesh","childNum":6}},{"geometry":{"type":"Polygon","coordinates":[[[28.585351562500023,43.742236328124996],[28.465429687500006,43.389306640624994],[28.133691406250023,43.39560546875],[27.92890625000001,43.1861328125],[27.88886718750001,42.74970703125],[27.484765625000023,42.468066406249996],[28.014453125000017,41.969042968749996],[27.47480468750001,41.946875],[27.294921875,42.079541015625],[27.24433593750001,42.09326171875],[27.01171875,42.058642578124996],[26.96875,42.02685546875],[26.884863281250006,41.991845703124994],[26.615332031250006,41.964892578124996],[26.549707031250023,41.896728515625],[26.51142578125001,41.8263671875],[26.3603515625,41.8015625],[26.327246093750006,41.772802734375],[26.31796875,41.744677734374996],[26.320898437500006,41.716552734375],[26.200585937500023,41.743798828124994],[26.107421875,41.72568359375],[26.085546875,41.704150390624996],[26.066015625,41.673242187499994],[26.1435546875,41.521533203124996],[26.155175781250023,41.434863281249996],[26.135351562500006,41.3857421875],[26.06640625,41.35068359375],[25.92333984375,41.311914062499994],[25.784960937500017,41.330419921875],[25.52705078125001,41.2998046875],[25.381933593750006,41.26435546875],[25.25117187500001,41.243554687499994],[24.773730468750017,41.356103515624994],[24.595996093750017,41.442724609375],[24.5693359375,41.4673828125],[24.51826171875001,41.552539062499996],[24.487890625,41.555224609374996],[24.056054687500023,41.527246093749994],[24.03291015625001,41.469091796875],[24.011328125,41.46005859375],[23.635156250000023,41.386767578124996],[23.53583984375001,41.386035156249996],[23.433398437500017,41.398730468749996],[23.3720703125,41.3896484375],[23.23984375,41.3849609375],[23.15595703125001,41.322070312499996],[22.916015625,41.336279296875],[23.00361328125001,41.73984375],[22.836816406250023,41.993603515625],[22.344042968750017,42.31396484375],[22.42207031250001,42.328857421875],[22.445703125000023,42.359130859375],[22.523535156250006,42.440966796874996],[22.53242187500001,42.481201171875],[22.524218750000017,42.50390625],[22.43623046875001,42.6291015625],[22.466796875,42.84248046875],[22.799902343750006,42.985742187499994],[22.976855468750017,43.18798828125],[22.85957031250001,43.25234375],[22.819726562500023,43.300732421875],[22.767578125,43.354150390624994],[22.554589843750023,43.454492187499994],[22.36962890625,43.781298828124996],[22.36542968750001,43.862109375],[22.399023437500006,43.96953125],[22.420800781250023,44.007421875],[22.452529688228115,44.0510441391688],[22.547921095934313,44.113823956634434],[22.688564844478098,44.254306249271906],[23.02851562500001,44.077978515625],[22.868261718750006,43.947900390624994],[22.919042968750006,43.83447265625],[25.4970703125,43.670800781249994],[26.2158203125,44.007275390625],[27.0869140625,44.167382812499994],[27.425390625,44.0205078125],[27.88427734375,43.987353515624996],[28.221972656250017,43.772851562499994],[28.585351562500023,43.742236328124996]]]},"properties":{"name":"Bulgaria","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[50.60722656250002,25.883105468750003],[50.57490234375001,25.806787109374994],[50.465917968750006,25.965527343749997],[50.46992187500001,26.228955078124997],[50.5859375,26.24072265625],[50.60722656250002,25.883105468750003]]]},"properties":{"name":"Bahrain","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-73.02685546874994,21.19238281250003],[-73.16455078125003,20.979150390625023],[-73.68115234375003,20.9755859375],[-73.68037109374995,21.103320312500017],[-73.52309570312497,21.190820312499966],[-73.23535156249997,21.15449218750004],[-73.05849609375,21.313378906249994],[-73.02685546874994,21.19238281250003]]],[[[-73.041015625,22.429052734375006],[-72.74726562500001,22.32739257812497],[-73.16191406250002,22.380712890625006],[-73.041015625,22.429052734375006]]],[[[-74.20673828124998,22.213769531250023],[-74.27690429687499,22.183691406250006],[-73.906396484375,22.527441406250063],[-73.95419921874995,22.71552734375001],[-73.84995117187503,22.731054687500063],[-73.83652343749998,22.538427734374977],[-74.20673828124998,22.213769531250023]]],[[[-74.05751953124997,22.723486328125034],[-74.27460937499995,22.71166992187503],[-74.30703125,22.83959960937497],[-74.05751953124997,22.723486328125034]]],[[[-74.84047851562494,22.894335937500017],[-75.22333984374995,23.165332031250074],[-75.13056640624998,23.267919921875006],[-75.31596679687502,23.668359374999966],[-74.84047851562494,22.894335937500017]]],[[[-75.66455078124997,23.45014648437501],[-76.03710937500003,23.60278320312503],[-76.01044921875001,23.671386718750057],[-75.66455078124997,23.45014648437501]]],[[[-74.42944335937497,24.068066406249955],[-74.55092773437502,23.96894531250001],[-74.52690429687502,24.105078125000034],[-74.42944335937497,24.068066406249955]]],[[[-77.65771484374994,24.249462890624955],[-77.75527343750002,24.163476562500023],[-77.61538085937494,24.216357421875045],[-77.5615234375,24.136816406250006],[-77.57373046875,23.739160156249994],[-77.77128906249999,23.752539062499977],[-77.99990234374994,24.219824218750063],[-77.65771484374994,24.249462890624955]]],[[[-75.30839843749999,24.2],[-75.50322265624996,24.139062500000023],[-75.40893554687503,24.265771484374994],[-75.72666015625,24.68935546875005],[-75.30839843749999,24.2]]],[[[-77.34755859375,25.013867187499983],[-77.56191406249997,25.030029296875],[-77.27558593750001,25.055761718750006],[-77.34755859375,25.013867187499983]]],[[[-77.74384765625001,24.70742187499999],[-77.74521484375,24.463476562500034],[-78.04492187499997,24.287451171875063],[-78.14580078125002,24.493457031250017],[-78.36650390624993,24.544189453125057],[-78.435302734375,24.627587890624994],[-78.24272460937493,24.65380859375],[-78.21137695312495,25.191259765624977],[-77.97529296874998,25.084814453125063],[-77.74384765625001,24.70742187499999]]],[[[-76.64882812499994,25.487402343750006],[-76.34379882812496,25.33203124999997],[-76.12661132812497,25.14052734375005],[-76.16953125,24.6494140625],[-76.319970703125,24.81767578124999],[-76.21376953124994,24.822460937499983],[-76.160400390625,25.119335937499983],[-76.36928710937502,25.312597656250006],[-76.62070312499998,25.43164062500003],[-76.78066406249997,25.426855468750006],[-76.71083984374997,25.564892578124983],[-76.64882812499994,25.487402343750006]]],[[[-78.49287109375001,26.729052734375017],[-77.92246093749998,26.69111328125001],[-78.74365234374994,26.50068359375004],[-78.98564453124996,26.689501953125045],[-78.79804687500001,26.58242187499999],[-78.59711914062493,26.797949218750006],[-78.49287109375001,26.729052734375017]]],[[[-77.22563476562496,25.904199218750023],[-77.40317382812498,26.02470703124996],[-77.24677734374998,26.156347656250034],[-77.238623046875,26.561132812500006],[-77.510595703125,26.845996093750045],[-77.94375,26.90356445312503],[-77.53388671874995,26.903417968750006],[-77.06635742187501,26.530175781249994],[-77.03828124999998,26.333447265624983],[-77.16728515624996,26.240332031250006],[-77.22563476562496,25.904199218750023]]]]},"properties":{"name":"Bahamas","childNum":14}},{"geometry":{"type":"Polygon","coordinates":[[[19.007128906250045,44.86918945312502],[19.348632812500057,44.88090820312502],[19.118457031250074,44.359960937500006],[19.583789062500017,44.04345703125003],[19.245019531249994,43.96503906250004],[19.495117187500057,43.642871093750045],[19.19433593749997,43.533300781250006],[19.164355468750017,43.53544921874999],[19.11279296874997,43.52773437500002],[19.080078125000057,43.51772460937502],[19.0283203125,43.53251953125002],[18.97421875,43.54233398437498],[18.95068359375,43.52666015624999],[19.036718750000034,43.35732421875002],[19.026660156250017,43.292431640624955],[18.97871093750001,43.28540039062503],[18.934667968750006,43.339453125000034],[18.85107421875003,43.34633789062502],[18.749218750000068,43.283544921875006],[18.67421875000008,43.230810546875006],[18.623632812500063,43.027685546875034],[18.488476562500068,43.01215820312498],[18.44384765625003,42.96845703125004],[18.46601562500001,42.777246093749994],[18.54589843750003,42.64160156249997],[18.436328125000017,42.559716796874994],[17.667578125000063,42.897119140624994],[17.585156250000068,42.93837890625005],[17.650488281250063,43.006591796875],[17.27382812500005,43.44575195312501],[16.300097656250017,44.12451171875],[16.10341796875008,44.52099609375006],[15.736621093750045,44.76582031250001],[15.788085937500057,45.17895507812497],[16.028320312500057,45.18959960937502],[16.29335937500005,45.00883789062496],[16.53066406250008,45.21669921875002],[16.918652343749983,45.27656249999998],[17.812792968750074,45.078125],[18.66259765625,45.07744140624999],[18.83642578125,44.883251953124955],[19.007128906250045,44.86918945312502]]]},"properties":{"name":"Bosnia and Herz.","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[28.14794921875,56.142919921875],[28.284277343750006,56.055908203125],[29.375,55.938720703125],[29.353417968750023,55.784375],[29.412988281250023,55.724853515625],[29.482226562500017,55.6845703125],[29.63007812500001,55.751171875],[29.6845703125,55.7697265625],[29.744140625,55.77041015625],[29.82392578125001,55.7951171875],[29.881640625000017,55.832324218749996],[29.93701171875,55.845263671874996],[30.04267578125001,55.83642578125],[30.23359375000001,55.84521484375],[30.625585937500006,55.666259765625],[30.906835937500006,55.57001953125],[30.90058593750001,55.397412109375],[30.82099609375001,55.3302734375],[30.810546875,55.306982421875],[30.814453125,55.2787109375],[30.87744140625,55.2234375],[30.958886718750023,55.13759765625],[30.97773437500001,55.08779296875],[30.97773437500001,55.05048828125],[30.829882812500017,54.914990234375],[30.804492187500017,54.8609375],[30.791015625,54.806005859375],[30.798828125,54.783251953124996],[30.984179687500017,54.6958984375],[31.12128906250001,54.648486328124996],[31.152148437500017,54.625341796875],[31.074804687500006,54.491796875],[31.18476562500001,54.452978515625],[31.299121093750017,54.29169921875],[31.403613281250017,54.195947265625],[31.62841796875,54.111181640625],[31.7919921875,54.055908203125],[31.825976562500017,54.030712890625],[31.837792968750023,54.00078125],[31.825292968750006,53.935009765625],[31.783007812500017,53.85498046875],[31.754199218750017,53.81044921875],[31.82080078125,53.791943359375],[31.9921875,53.796875],[32.20039062500001,53.78125],[32.45097656250002,53.6533203125],[32.70429687500001,53.336328125],[32.64443359375002,53.32890625],[32.57802734375002,53.31240234375],[32.469335937500006,53.2703125],[32.14199218750002,53.091162109375],[31.849707031250006,53.106201171875],[31.668261718750017,53.200927734375],[31.417871093750023,53.196044921875],[31.38837890625001,53.184814453125],[31.364550781250017,53.138964843749996],[31.30292968750001,53.060888671875],[31.2587890625,53.01669921875],[31.29511718750001,52.989794921874996],[31.35302734375,52.933447265625],[31.442773437500023,52.86181640625],[31.53515625,52.7982421875],[31.564843750000023,52.759228515625],[31.585546875,52.532470703125],[31.57734375000001,52.312304687499996],[31.6015625,52.284814453125],[31.64990234375,52.26220703125],[31.690625,52.220654296875],[31.758593750000017,52.125830078125],[31.76337890625001,52.10107421875],[31.57373046875,52.10810546875],[31.345996093750017,52.10537109375],[31.21796875000001,52.050244140625],[30.98066406250001,52.046191406249996],[30.845703125,51.953076171875],[30.755273437500023,51.895166015625],[30.667285156250017,51.814111328125],[30.583886718750023,51.68896484375],[30.533007812500017,51.596337890624994],[30.56074218750001,51.531494140625],[30.602343750000017,51.471240234374996],[30.611718750000023,51.40634765625],[30.63251953125001,51.355419921875],[30.449511718750017,51.274316406249994],[30.160742187500006,51.477880859375],[29.346484375000017,51.382568359375],[29.10205078125,51.6275390625],[29.06074218750001,51.625439453125],[29.013085937500023,51.598925781249996],[28.97773437500001,51.57177734375],[28.927539062500017,51.562158203124994],[28.849511718750023,51.540185546874994],[28.73125,51.433398437499996],[28.690234375000017,51.438867187499994],[28.647753906250017,51.45654296875],[28.599023437500023,51.542626953124994],[28.532031250000017,51.562451171875],[27.85859375000001,51.5923828125],[27.7,51.477978515625],[27.689746093750017,51.572412109374994],[27.296289062500023,51.597412109375],[27.270117187500006,51.613574218749996],[27.141992187500023,51.75205078125],[27.074121093750023,51.76083984375],[26.95283203125001,51.75400390625],[26.7734375,51.770703125],[25.785742187500006,51.923828125],[24.361914062500006,51.867529296875],[24.280078125000017,51.774707031249996],[24.126855468750023,51.6646484375],[23.978320312500017,51.59130859375],[23.951171875,51.58505859375],[23.8642578125,51.623974609375],[23.79169921875001,51.637109375],[23.706835937500017,51.64130859375],[23.61376953125,51.525390625],[23.605273437500017,51.517919921875],[23.652441406250006,52.040380859375],[23.175097656250017,52.28662109375],[23.915429687500023,52.770263671875],[23.484667968750017,53.939794921875],[23.55908203125,53.91982421875],[23.733691406250017,53.912255859375],[24.191308593750023,53.950439453125],[24.236621093750017,53.919970703124996],[24.31796875,53.89296875],[24.620703125,53.979833984375],[24.768164062500006,53.974658203124996],[24.78925781250001,53.9982421875],[24.82568359375,54.118994140625],[24.869531250000023,54.145166015625],[25.04609375000001,54.133056640625],[25.111425781250006,54.154931640625],[25.179492187500017,54.2142578125],[25.46113281250001,54.292773437499996],[25.505664062500017,54.264941406249996],[25.52734375,54.215136718749996],[25.497363281250017,54.175244140625],[25.573046875000017,54.139892578125],[25.765234375,54.17978515625],[25.702539062500023,54.29296875],[25.61689453125001,54.310107421874996],[25.557519531250023,54.310693359375],[25.54736328125,54.331835937499996],[25.56757812500001,54.37705078125],[25.62031250000001,54.460400390625],[25.68515625,54.535791015625],[25.72480468750001,54.564257812499996],[25.73164062500001,54.590380859374996],[25.722460937500017,54.71787109375],[25.859277343750023,54.919287109375],[25.964453125,54.94716796875],[26.09296875000001,54.9623046875],[26.175195312500023,55.003271484375],[26.250781250000017,55.12451171875],[26.291796875000017,55.139599609375],[26.601171875,55.130175781249996],[26.6484375,55.20419921875],[26.775683593750017,55.273095703125],[26.760156250000023,55.293359375],[26.68125,55.306445312499996],[26.49531250000001,55.318017578125],[26.457617187500006,55.34248046875],[26.469531250000017,55.371923828125],[26.51923828125001,55.44814453125],[26.56660156250001,55.546484375],[26.5908203125,55.62265625],[26.593554687500017,55.667529296874996],[27.052539062500017,55.83056640625],[27.576757812500006,55.798779296875],[28.14794921875,56.142919921875]]]},"properties":{"name":"Belarus","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-87.8529296875,17.4228515625],[-87.92998046874996,17.283007812500017],[-87.826416015625,17.546289062499994],[-87.8529296875,17.4228515625]]],[[[-88.89404296875,15.890625],[-89.2328125,15.888671875],[-89.16147460937503,17.81484375],[-89.13354492187503,17.970800781249977],[-88.80634765624998,17.965527343749983],[-88.52299804687499,18.445898437500063],[-88.29565429687494,18.47241210937503],[-88.34926757812494,18.358837890624983],[-88.1302734375,18.350732421875023],[-88.08525390624999,18.226123046875045],[-88.27172851562494,17.60986328125],[-88.203466796875,17.5166015625],[-88.31342773437501,16.632763671874983],[-88.89404296875,15.890625]]]]},"properties":{"name":"Belize","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[-64.73027343749999,32.29345703125],[-64.86284179687499,32.273876953125],[-64.66831054687499,32.38193359375],[-64.73027343749999,32.29345703125]]]},"properties":{"name":"Bermuda","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-58.15976562499999,-20.164648437500006],[-58.18017578125,-19.81787109375],[-59.09052734375,-19.286230468750006],[-60.00737304687499,-19.29755859375001],[-61.7568359375,-19.6453125],[-62.276318359375,-20.5625],[-62.27666015624999,-21.066015625],[-62.65097656249999,-22.233691406250003],[-62.84335937499999,-21.99726562500001],[-63.92167968749999,-22.028613281250003],[-63.97612304687499,-22.072558593750003],[-64.26640624999999,-22.603320312500003],[-64.30791015624999,-22.7953125],[-64.32529296874999,-22.82763671875],[-64.373974609375,-22.761035156250003],[-64.4455078125,-22.58535156250001],[-64.477734375,-22.4853515625],[-64.5236328125,-22.37158203125],[-64.60551757812499,-22.228808593750003],[-64.992626953125,-22.109667968750003],[-65.518798828125,-22.09453125],[-65.686181640625,-22.11025390625001],[-65.77104492187499,-22.099609375],[-65.86015624999999,-22.01972656250001],[-66.05859375,-21.879492187500006],[-66.098583984375,-21.835058593750006],[-66.17465820312499,-21.8056640625],[-66.220166015625,-21.802539062500003],[-66.24760742187499,-21.83046875],[-66.28212890625,-21.94746093750001],[-66.3224609375,-22.053125],[-66.365185546875,-22.11376953125],[-66.71171874999999,-22.21630859375],[-66.99111328125,-22.509863281250006],[-67.19487304687499,-22.82167968750001],[-67.362255859375,-22.85517578125001],[-67.57993164062499,-22.891699218750006],[-67.79443359375,-22.879492187500006],[-67.87944335937499,-22.82294921875001],[-67.88173828125,-22.49335937500001],[-68.18642578125,-21.61855468750001],[-68.197021484375,-21.30029296875],[-68.558251953125,-20.901953125],[-68.484326171875,-20.62841796875],[-68.74516601562499,-20.45859375],[-68.75932617187499,-20.115527343750003],[-68.560693359375,-19.967089843750003],[-68.559375,-19.90234375],[-68.578271484375,-19.856542968750006],[-68.69619140625,-19.74072265625],[-68.69829101562499,-19.72109375],[-68.57529296874999,-19.56015625],[-68.462890625,-19.43281250000001],[-68.470166015625,-19.409960937500003],[-68.49199218749999,-19.381933593750006],[-68.85795898437499,-19.093359375],[-68.96831054687499,-18.96796875000001],[-68.97885742187499,-18.81298828125],[-69.026806640625,-18.65625],[-69.09228515625,-18.28242187500001],[-69.145458984375,-18.14404296875],[-69.0939453125,-18.05048828125001],[-69.28232421874999,-17.96484375],[-69.31337890625,-17.943164062500003],[-69.5109375,-17.50605468750001],[-69.51108398437499,-17.5048828125],[-69.510986328125,-17.46035156250001],[-69.521923828125,-17.388964843750003],[-69.645703125,-17.24853515625],[-69.62485351562499,-17.2001953125],[-69.020703125,-16.6421875],[-69.03291015625,-16.47597656250001],[-68.8427734375,-16.337890625],[-69.21757812499999,-16.14912109375001],[-69.4208984375,-15.640625],[-69.17246093749999,-15.236621093750003],[-69.37470703125,-14.962988281250006],[-69.35947265624999,-14.7953125],[-68.87089843749999,-14.169726562500003],[-69.07412109375,-13.682812500000011],[-68.97861328124999,-12.880078125000011],[-68.68525390625,-12.501953125],[-69.57861328125,-10.951757812500006],[-69.228515625,-10.955664062500006],[-68.84833984375,-11.011132812500009],[-68.678369140625,-11.11279296875],[-68.39799804687499,-11.01875],[-68.0716796875,-10.703125],[-67.99169921875,-10.674414062500006],[-67.83500976562499,-10.662792968750011],[-67.72177734374999,-10.68310546875],[-67.416943359375,-10.389843750000011],[-66.575341796875,-9.89990234375],[-65.396142578125,-9.71240234375],[-65.298583984375,-10.146777343750003],[-65.31308593749999,-10.253027343750006],[-65.395458984375,-10.392285156250011],[-65.4369140625,-10.449023437500003],[-65.44711914062499,-10.507421875],[-65.33403320312499,-10.892773437500011],[-65.32377929687499,-11.024804687500009],[-65.389892578125,-11.246289062500011],[-65.1857421875,-11.74951171875],[-64.783447265625,-12.059375],[-64.42050781249999,-12.439746093750003],[-63.68857421874999,-12.47802734375],[-63.3466796875,-12.680078125],[-63.06748046874999,-12.669140625000011],[-62.76547851562499,-12.997265625000011],[-62.11801757812499,-13.159765625],[-62.09477539062499,-13.241992187500003],[-61.944726562499994,-13.40625],[-61.87412109374999,-13.470410156250011],[-61.789941406249994,-13.525585937500011],[-61.57568359375,-13.524804687500009],[-61.51157226562499,-13.541210937500011],[-61.41606445312499,-13.526562500000011],[-61.129150390625,-13.49853515625],[-61.07700195312499,-13.48974609375],[-60.506591796875,-13.78984375],[-60.372705078124994,-14.41875],[-60.273339843749994,-15.088769531250009],[-60.402001953124994,-15.0927734375],[-60.583203125,-15.098339843750011],[-60.53046875,-15.143164062500006],[-60.38046875,-15.318261718750009],[-60.242333984374994,-15.479589843750006],[-60.20664062499999,-15.901953125],[-60.18720703125,-16.132128906250003],[-60.17558593749999,-16.269335937500003],[-58.53793945312499,-16.328222656250006],[-58.49658203125,-16.32666015625],[-58.42368164062499,-16.307910156250003],[-58.37539062499999,-16.28359375],[-58.345605468749994,-16.284375],[-58.35039062499999,-16.490820312500006],[-58.470605468749994,-16.650195312500003],[-58.478125,-16.70068359375],[-58.45981445312499,-16.910742187500006],[-58.417382812499994,-17.08056640625],[-58.39599609375,-17.23427734375001],[-58.34775390624999,-17.28212890625001],[-57.99091796875,-17.51289062500001],[-57.905029296875,-17.532324218750006],[-57.832470703125,-17.512109375],[-57.78886718749999,-17.573046875],[-57.780175781249994,-17.67177734375001],[-57.66166992187499,-17.947363281250006],[-57.58647460937499,-18.12226562500001],[-57.49565429687499,-18.214648437500003],[-57.57402343749999,-18.279296875],[-57.725,-18.733203125],[-57.783105468749994,-18.91425781250001],[-57.716796875,-19.044042968750006],[-58.131494140624994,-19.74453125],[-57.860742187499994,-19.979589843750006],[-57.887597656249994,-20.02041015625001],[-57.96015625,-20.04072265625001],[-58.021142578124994,-20.05517578125],[-58.09375,-20.15107421875001],[-58.15976562499999,-20.164648437500006]]]},"properties":{"name":"Bolivia","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-48.48588867187493,-27.76699218749998],[-48.554589843749994,-27.81220703125004],[-48.542187499999955,-27.57480468749999],[-48.41489257812495,-27.399609375],[-48.48588867187493,-27.76699218749998]]],[[[-48.584423828124955,-26.401562499999983],[-48.665771484375,-26.289648437500006],[-48.53974609374998,-26.170312500000023],[-48.584423828124955,-26.401562499999983]]],[[[-45.26025390624997,-23.889160156249986],[-45.451416015625,-23.895605468749977],[-45.30234375,-23.727539062500014],[-45.26025390624997,-23.889160156249986]]],[[[-44.12929687499994,-23.14189453124999],[-44.36015624999999,-23.17207031250001],[-44.24287109374998,-23.074121093750037],[-44.12929687499994,-23.14189453124999]]],[[[-38.90356445312497,-13.473437499999974],[-38.97758789062496,-13.523535156249963],[-39.02216796874998,-13.445605468749989],[-38.907128906249994,-13.401074218749983],[-38.90356445312497,-13.473437499999974]]],[[[-38.743847656249955,-13.097070312500037],[-38.668115234374966,-12.880175781249989],[-38.601171875,-12.99257812499998],[-38.743847656249955,-13.097070312500037]]],[[[-44.49931640625002,-2.939648437499983],[-44.597753906250006,-3.037597656249943],[-44.4814453125,-2.717578125000031],[-44.49931640625002,-2.939648437499983]]],[[[-44.88310546874996,-1.317871093749986],[-45.020849609375034,-1.372363281249974],[-44.978662109374966,-1.267285156249983],[-44.88310546874996,-1.317871093749986]]],[[[-51.83251953124997,-1.433789062499969],[-51.938378906249966,-1.452636718749986],[-51.680029296875006,-1.086132812500026],[-51.546044921874966,-0.649609375],[-51.25400390624998,-0.54140625],[-51.16074218749998,-0.666699218750011],[-51.27631835937498,-1.02177734374996],[-51.83251953124997,-1.433789062499969]]],[[[-49.62866210937497,-0.229199218749969],[-49.11699218749999,-0.163574218750014],[-48.39267578124995,-0.29736328125],[-48.83359375,-1.390039062500023],[-49.038476562499994,-1.5140625],[-49.17270507812498,-1.41259765625],[-49.233984375000034,-1.59951171874998],[-49.50664062499999,-1.511621093750023],[-49.587890625,-1.712402343749972],[-49.805126953124955,-1.790234375000026],[-50.06572265625002,-1.703808593749997],[-50.50761718749999,-1.787988281250009],[-50.759765625,-1.240234374999972],[-50.72949218749997,-1.126757812499946],[-50.57695312499999,-1.103125],[-50.709619140624994,-1.07773437499999],[-50.796093749999955,-0.90625],[-50.6455078125,-0.27285156249998],[-50.24824218749998,-0.11640625],[-49.62866210937497,-0.229199218749969]]],[[[-50.65288085937499,-0.131640624999989],[-50.926367187500034,-0.327343749999983],[-51.03808593749994,-0.225878906250003],[-50.84218750000002,-0.050195312500009],[-50.65288085937499,-0.131640624999989]]],[[[-49.44389648437499,-0.112402343749977],[-49.83007812499997,-0.093896484375023],[-49.50346679687496,0.083691406250011],[-49.37231445312497,0.001074218749963],[-49.44389648437499,-0.112402343749977]]],[[[-49.73823242187498,0.26816406250002],[-49.917089843750006,-0.023193359375014],[-50.339453125,0.043359375000051],[-50.27265624999998,0.231738281249974],[-49.73823242187498,0.26816406250002]]],[[[-50.42612304687498,0.139257812500048],[-50.44394531249998,-0.007666015624949],[-50.623925781249966,0.054394531249983],[-50.372753906249955,0.590869140625031],[-50.33227539062497,0.259033203125028],[-50.42612304687498,0.139257812500048]]],[[[-50.152929687500006,0.393017578125054],[-50.26132812499998,0.359179687500003],[-50.281689453124955,0.51650390624998],[-50.05883789062503,0.638037109374963],[-50.152929687500006,0.393017578125054]]],[[[-50.29897460937502,1.93852539062496],[-50.45610351562496,1.910498046875034],[-50.49101562499996,2.128613281249969],[-50.34199218749998,2.14174804687498],[-50.29897460937502,1.93852539062496]]],[[[-59.69970703125,4.353515625],[-59.73857421874993,4.226757812500026],[-59.62021484374998,4.023144531250026],[-59.557763671874966,3.960009765625031],[-59.551123046875034,3.933544921874969],[-59.854394531249994,3.5875],[-59.99433593749998,2.689990234375031],[-59.88964843749997,2.362939453125009],[-59.75522460937495,2.27412109375004],[-59.74350585937498,2.12163085937496],[-59.75175781249996,1.962402343750028],[-59.75620117187498,1.900634765624972],[-59.666601562500006,1.746289062499969],[-59.53569335937499,1.7],[-59.23120117187494,1.376025390625031],[-58.82177734374994,1.201220703125031],[-58.787207031250006,1.208496093750014],[-58.73032226562498,1.247509765625054],[-58.68461914062499,1.28105468749996],[-58.511865234374966,1.284667968749986],[-58.506054687499926,1.438671875000011],[-58.39580078124993,1.481738281249989],[-58.38037109375,1.530224609375011],[-58.34067382812498,1.587548828125051],[-58.03466796875,1.520263671875014],[-57.9828125,1.648437500000014],[-57.87343750000002,1.667285156250045],[-57.79565429687497,1.7],[-57.59443359375001,1.704101562499986],[-57.54575195312495,1.726074218750028],[-57.31748046874998,1.963476562499991],[-57.27558593749998,1.959228515625014],[-57.189599609374966,1.981591796875037],[-57.11889648437494,2.013964843749974],[-57.09267578125002,2.005810546874997],[-57.03759765625,1.936474609374997],[-56.96953124999999,1.91640625],[-56.48281249999994,1.942138671874986],[-56.019921874999966,1.842236328124983],[-55.96333007812498,1.85708007812498],[-55.929638671874955,1.8875],[-55.92163085937503,1.976660156250006],[-55.91533203124999,2.039550781250028],[-55.96196289062496,2.09511718749998],[-56.02006835937499,2.15815429687504],[-56.073632812499994,2.236767578124969],[-56.13769531249997,2.259033203124986],[-56.12939453124997,2.299511718749969],[-56.08779296875002,2.341308593750043],[-56.045117187499955,2.364404296875037],[-56.02036132812498,2.392773437500054],[-55.993505859375006,2.497509765624983],[-55.9755859375,2.515966796875006],[-55.957470703124955,2.52045898437504],[-55.730566406250006,2.406152343750023],[-55.385351562500006,2.440625],[-55.34399414062503,2.488769531249972],[-55.28603515625002,2.49965820312498],[-55.18769531249998,2.547509765625037],[-55.114111328125006,2.539208984375037],[-55.07031249999994,2.548339843750028],[-55.005810546874955,2.592968749999983],[-54.97866210937502,2.597656250000043],[-54.968408203124966,2.548339843750028],[-54.92656249999999,2.497363281250045],[-54.876074218750006,2.450390624999969],[-54.72221679687499,2.441650390624972],[-54.69741210937502,2.359814453124997],[-54.66186523437497,2.327539062499994],[-54.61625976562499,2.326757812500006],[-54.59194335937502,2.313769531250031],[-54.55048828125001,2.293066406249991],[-54.51508789062498,2.245458984374963],[-54.43310546875,2.207519531250057],[-54.13007812499998,2.121044921875026],[-53.76777343749998,2.354833984375048],[-52.90346679687502,2.211523437499977],[-52.58300781250003,2.528906249999977],[-52.327880859375,3.18173828125002],[-51.65253906249998,4.061279296874972],[-51.54707031250001,4.31088867187502],[-51.219921874999955,4.093603515624991],[-50.71440429687502,2.134033203125],[-50.458886718749994,1.829589843749972],[-49.957128906250006,1.65986328125004],[-49.898876953124955,1.16298828124998],[-50.29443359374997,0.835742187500003],[-50.755078124999955,0.222558593749966],[-51.28291015625001,-0.085205078125028],[-51.98081054687498,-1.367968749999974],[-52.22924804687497,-1.3625],[-52.664160156250034,-1.551757812500028],[-51.94755859374996,-1.586718749999946],[-50.89492187500002,-0.937597656249963],[-50.690039062500006,-1.761718749999986],[-50.40322265625002,-2.015527343750009],[-49.999218749999955,-1.831835937499974],[-49.71953125000002,-1.926367187499963],[-49.31367187500001,-1.731738281250003],[-49.63652343749996,-2.656933593750026],[-49.45751953125,-2.504589843749983],[-49.21103515624998,-1.916503906249986],[-48.99130859374998,-1.829785156249997],[-48.71000976562496,-1.487695312500023],[-48.46293945312499,-1.613964843749997],[-48.349804687499926,-1.482128906249955],[-48.46806640624996,-1.393847656250003],[-48.44980468749998,-1.145507812499943],[-48.11508789062498,-0.7375],[-47.557324218749955,-0.669921874999957],[-47.418652343749955,-0.765917968749974],[-47.39809570312502,-0.626660156250026],[-45.45859374999995,-1.35625],[-45.32915039062496,-1.71728515625],[-45.07636718749998,-1.466406249999949],[-44.72114257812498,-1.733496093750006],[-44.778515624999955,-1.798828125],[-44.651269531249966,-1.745800781250026],[-44.537792968749955,-2.052734374999943],[-44.75634765624997,-2.265527343749952],[-44.66240234375002,-2.373242187499955],[-44.435449218749966,-2.168066406249991],[-44.38183593749997,-2.365527343749989],[-44.52011718749998,-2.40546875000004],[-44.589013671874994,-2.573437499999983],[-44.72304687500002,-3.204785156249997],[-44.43754882812496,-2.944433593749977],[-44.228613281250006,-2.471289062499949],[-44.105566406250006,-2.493457031250031],[-44.19267578124999,-2.809570312499943],[-43.93291015624999,-2.583496093749986],[-43.45512695312499,-2.502050781250006],[-43.38007812499998,-2.376074218750006],[-42.93671874999998,-2.465039062500011],[-42.24960937499998,-2.7919921875],[-41.876171874999926,-2.746582031249986],[-41.479931640624955,-2.916503906249972],[-40.474560546874926,-2.795605468750026],[-39.96469726562498,-2.861523437499955],[-38.475781249999955,-3.717480468749997],[-38.04882812500003,-4.216406250000034],[-37.626318359375006,-4.592089843750003],[-37.30146484375001,-4.713085937499969],[-37.174658203125006,-4.912402343749974],[-36.590722656249966,-5.097558593749952],[-35.549414062500006,-5.129394531249957],[-35.39257812499994,-5.250878906250009],[-34.833886718749994,-7.024414062500014],[-34.83466796874998,-7.97148437499996],[-35.34086914062499,-9.230664062499983],[-35.76396484374993,-9.702539062500023],[-35.890820312499926,-9.687011718749957],[-35.88544921875001,-9.84765625],[-36.39833984374994,-10.484082031249983],[-36.768310546875,-10.671679687500017],[-37.18281249999998,-11.06845703125002],[-37.35600585937502,-11.403906249999977],[-37.35922851562495,-11.252539062499963],[-37.68872070312503,-12.1],[-38.019238281249955,-12.591308593750028],[-38.401757812499994,-12.966210937500023],[-38.69096679687502,-12.623925781250009],[-38.85175781250001,-12.790136718750034],[-38.76372070312502,-12.9072265625],[-38.835302734375034,-13.147167968750026],[-39.030908203124994,-13.365136718750023],[-39.08935546875,-13.588183593749989],[-38.988623046875006,-13.61503906249996],[-39.04814453124996,-14.043945312500028],[-38.94233398437498,-14.030664062499994],[-39.05957031249997,-14.654785156249957],[-38.88061523437503,-15.864257812499972],[-39.20288085937503,-17.178125],[-39.154003906249926,-17.70390625000003],[-39.650781249999966,-18.252343750000037],[-39.78330078124998,-19.571777343749986],[-40.001367187499994,-19.74199218750003],[-40.39594726562501,-20.56943359375002],[-40.78925781250001,-20.90605468750003],[-40.954541015624926,-21.237890624999963],[-41.04726562499999,-21.505664062499974],[-41.00029296875002,-21.99902343750003],[-41.70551757812498,-22.30966796874999],[-41.980419921874955,-22.580664062499963],[-42.042382812499966,-22.947070312500003],[-42.95830078124996,-22.96708984374999],[-43.154296875,-22.725195312500006],[-43.22416992187502,-22.991210937500014],[-43.898828124999966,-23.10146484375001],[-43.97382812499998,-23.057324218749983],[-43.675976562499955,-23.00947265625001],[-43.86616210937498,-22.910546875000023],[-44.63725585937496,-23.05546875],[-44.67382812499994,-23.206640625000034],[-44.56967773437495,-23.27402343749999],[-45.32539062499998,-23.59970703124999],[-45.464306640624955,-23.802539062500017],[-45.97207031250002,-23.795507812500006],[-46.86728515624998,-24.236328125000014],[-47.989160156249994,-25.03574218749999],[-47.92939453124998,-25.16826171874999],[-48.20273437499998,-25.41650390625003],[-48.18593749999994,-25.309863281249974],[-48.402490234374994,-25.27207031249999],[-48.47612304687499,-25.44296875],[-48.73173828124993,-25.36875],[-48.6921875,-25.49150390625003],[-48.40117187500002,-25.59736328125001],[-48.665771484375,-25.844335937499963],[-48.576318359374994,-25.935449218749966],[-48.61943359374996,-26.17939453125001],[-48.74829101562503,-26.26865234374999],[-48.55415039062498,-27.195996093749997],[-48.62080078124998,-28.075585937499966],[-48.799658203125006,-28.575292968749977],[-49.27128906249999,-28.87119140625005],[-49.745996093749966,-29.363183593749994],[-50.299511718749955,-30.42578125000003],[-50.92138671874997,-31.25839843750002],[-52.039208984374994,-32.11484374999996],[-52.063232421875,-31.830371093750017],[-51.68066406249994,-31.774609375000026],[-51.272167968749955,-31.476953125000037],[-51.16142578124996,-31.11884765625001],[-50.980078125000034,-31.09423828124997],[-50.94082031249994,-30.903710937499966],[-50.68930664062495,-30.70419921874999],[-50.71630859374994,-30.425976562499983],[-50.58193359375002,-30.438867187500037],[-50.56352539062499,-30.25361328125004],[-51.02495117187493,-30.36865234375003],[-51.29804687499998,-30.03486328124997],[-51.15727539062499,-30.364257812500014],[-51.283056640625034,-30.751562499999963],[-51.35908203124998,-30.674511718749983],[-51.506298828124955,-31.104492187500014],[-51.97246093749999,-31.383789062499986],[-52.19355468749998,-31.885546874999974],[-52.12739257812501,-32.1677734375],[-52.652246093749994,-33.137792968750006],[-53.37060546874997,-33.74218750000003],[-53.39755859374995,-33.737304687500014],[-53.46357421875001,-33.70986328125002],[-53.531347656250034,-33.65546875000004],[-53.531347656250034,-33.1708984375],[-53.511865234374966,-33.10869140625003],[-53.482861328124926,-33.068554687500026],[-53.39521484375001,-33.01035156249998],[-53.31010742187499,-32.927050781249974],[-53.21406249999998,-32.82109375],[-53.12558593749998,-32.73671875],[-53.15727539062496,-32.680078125],[-53.601708984374994,-32.40302734374997],[-53.76171875,-32.05683593749997],[-53.920605468749926,-31.95234375],[-54.220556640625034,-31.855175781249997],[-54.58764648437503,-31.48515625000003],[-55.036035156249994,-31.27900390625004],[-55.091162109375034,-31.31396484374997],[-55.173535156249926,-31.279589843749974],[-55.557324218749955,-30.8759765625],[-55.60302734375003,-30.85078125000001],[-55.62714843749998,-30.858105468749997],[-55.650488281250034,-30.89208984375],[-55.66523437500001,-30.92490234375002],[-55.807763671874994,-31.036718749999977],[-55.87368164062502,-31.069628906250017],[-55.95200195312498,-31.08085937499999],[-56.0046875,-31.079199218750006],[-56.01845703125002,-30.991894531249983],[-55.998974609374955,-30.837207031250003],[-56.4072265625,-30.44746093750001],[-56.83271484374998,-30.107226562499974],[-57.120507812499994,-30.144433593749994],[-57.21445312499995,-30.283398437499983],[-57.55229492187496,-30.261230468749986],[-57.60888671875003,-30.187792968750045],[-57.563867187499994,-30.139941406249974],[-57.40522460937501,-30.03388671875004],[-57.22465820312499,-29.782128906249994],[-56.938623046874994,-29.594824218750034],[-55.890527343749994,-28.370019531249994],[-55.68725585937497,-28.38164062499996],[-55.72548828125002,-28.20410156250003],[-55.10151367187501,-27.866796874999963],[-54.82910156250003,-27.55058593750003],[-54.32700195312495,-27.423535156249997],[-53.83818359375002,-27.121093750000014],[-53.668554687500006,-26.288183593749977],[-53.89116210937499,-25.66884765625001],[-54.15458984374999,-25.523046874999963],[-54.44394531249998,-25.625],[-54.615869140624994,-25.576074218750023],[-54.61054687499998,-25.432714843750034],[-54.47314453124997,-25.22021484375],[-54.43623046875001,-25.12128906250001],[-54.281005859375,-24.30605468750001],[-54.31826171874994,-24.128125],[-54.26689453124996,-24.06582031250001],[-54.241796875,-24.047265624999966],[-54.44023437500002,-23.90175781249998],[-54.62548828125,-23.8125],[-54.98266601562494,-23.974511718749966],[-55.081884765625006,-23.997656249999977],[-55.1943359375,-24.017480468750023],[-55.28691406249993,-24.00429687499999],[-55.366308593750034,-23.99101562499996],[-55.41591796875002,-23.95136718749997],[-55.4423828125,-23.86533203125002],[-55.4423828125,-23.792578125000034],[-55.458886718749966,-23.686718750000054],[-55.51845703124994,-23.627246093750017],[-55.53828124999998,-23.580957031249994],[-55.61767578125,-22.67148437499999],[-55.74663085937499,-22.51269531249997],[-55.753271484375006,-22.410156250000043],[-55.84916992187499,-22.307617187500014],[-55.991406249999926,-22.28115234375005],[-56.18984374999994,-22.28115234375005],[-56.246044921874926,-22.26464843749997],[-56.39487304687498,-22.092675781250023],[-56.44780273437502,-22.07617187500003],[-56.77519531249999,-22.261328125],[-57.955908203125034,-22.109179687500003],[-57.94267578124999,-21.79833984375],[-57.830224609374994,-20.99794921875001],[-57.91513671874998,-20.690332031249966],[-57.97905273437493,-20.65732421874999],[-58.00224609374996,-20.465429687499977],[-58.02539062499997,-20.41582031249999],[-58.05844726562495,-20.38613281249998],[-58.091503906249926,-20.33320312500004],[-58.124609375000034,-20.293457031250014],[-58.13779296874995,-20.237304687500043],[-58.15976562499998,-20.164648437499977],[-58.09375,-20.15107421874997],[-58.021142578124994,-20.05517578124997],[-57.96015625000001,-20.04072265625004],[-57.887597656249966,-20.020410156249994],[-57.860742187499994,-19.97958984375002],[-58.029931640624994,-19.83271484375004],[-58.131494140624994,-19.74453125],[-57.71679687499997,-19.044042968750034],[-57.73085937499999,-18.91718750000004],[-57.783105468749994,-18.91425781249997],[-57.725,-18.73320312500003],[-57.57402343749993,-18.279296875000014],[-57.49565429687496,-18.21464843749999],[-57.58647460937499,-18.122265625],[-57.66166992187493,-17.94736328124999],[-57.78017578125002,-17.67177734374998],[-57.78886718750002,-17.573046875000017],[-57.83247070312501,-17.512109375000037],[-57.90502929687497,-17.53232421874999],[-57.990917968749955,-17.512890625000026],[-58.20556640625,-17.363085937499974],[-58.347753906250006,-17.282128906249994],[-58.39599609374997,-17.234277343750023],[-58.417382812499994,-17.08056640624997],[-58.459814453125006,-16.910742187500006],[-58.478125,-16.70068359375003],[-58.470605468749994,-16.650195312500045],[-58.35039062500002,-16.49082031249999],[-58.34560546875002,-16.284375],[-58.375390624999966,-16.283593749999966],[-58.423681640625034,-16.30791015625003],[-58.49658203124994,-16.32666015625003],[-58.537939453125034,-16.32822265624999],[-60.17558593749996,-16.26933593749999],[-60.187207031249955,-16.132128906250017],[-60.206640625,-15.90195312500002],[-60.242333984374994,-15.479589843750034],[-60.38046874999998,-15.318261718750023],[-60.53046874999998,-15.143164062499977],[-60.58320312499998,-15.098339843749983],[-60.273339843749994,-15.088769531249994],[-60.372705078124994,-14.41875],[-60.506591796875,-13.78984375],[-61.077001953125034,-13.489746093750014],[-61.129150390625,-13.498535156250028],[-61.41606445312502,-13.526562499999969],[-61.511572265625006,-13.541210937500011],[-61.789941406249966,-13.525585937500026],[-61.87412109374998,-13.470410156249983],[-61.944726562499966,-13.40625],[-62.09477539062499,-13.241992187499989],[-62.118017578125006,-13.15976562500002],[-62.765478515625034,-12.99726562500004],[-63.01518554687502,-12.80556640624998],[-63.067480468750006,-12.669140624999983],[-63.34667968749994,-12.68007812499999],[-63.68857421874998,-12.478027343749957],[-64.42050781249995,-12.439746093749974],[-64.783447265625,-12.059375],[-65.18574218749998,-11.749511718749957],[-65.389892578125,-11.246289062500011],[-65.33403320312499,-10.892773437500026],[-65.44711914062503,-10.507421875000034],[-65.4369140625,-10.449023437499946],[-65.39545898437498,-10.392285156250026],[-65.31308593749998,-10.253027343749991],[-65.29858398437497,-10.146777343750017],[-65.39614257812494,-9.712402343749986],[-66.57534179687502,-9.899902343749986],[-67.41694335937495,-10.389843749999969],[-67.72177734374998,-10.683105468749943],[-67.83500976562496,-10.662792968749983],[-67.99169921875,-10.674414062499949],[-68.07167968749994,-10.703125],[-68.39799804687499,-11.01875],[-68.678369140625,-11.11279296875],[-68.84833984374998,-11.01113281249998],[-69.228515625,-10.955664062499963],[-69.46254882812497,-10.948144531250023],[-69.57861328125,-10.951757812499963],[-69.67402343749998,-10.9541015625],[-69.83979492187501,-10.93339843749996],[-69.96035156249997,-10.92988281250004],[-70.06630859374997,-10.982421875],[-70.22006835937503,-11.04765625],[-70.29038085937498,-11.064257812499974],[-70.34199218750001,-11.066699218750017],[-70.39228515624995,-11.058593749999972],[-70.45087890624998,-11.024804687500009],[-70.53325195312496,-10.946875],[-70.59653320312498,-10.976855468750017],[-70.642333984375,-11.010253906249986],[-70.59916992187499,-9.620507812500009],[-70.54111328124998,-9.4375],[-70.60791015625,-9.463671875000031],[-70.63691406249995,-9.478222656249969],[-71.041748046875,-9.81875],[-71.11528320312499,-9.852441406250009],[-71.33940429687499,-9.988574218750031],[-72.18159179687495,-10.003710937500003],[-72.37905273437497,-9.51015625],[-73.20942382812493,-9.411425781249946],[-73.08984375,-9.26572265625002],[-72.970361328125,-9.120117187500028],[-72.97402343750002,-8.9931640625],[-73.07050781249995,-8.8828125],[-73.203125,-8.719335937499991],[-73.30244140624995,-8.654003906250011],[-73.36040039062496,-8.479296875000031],[-73.39814453125001,-8.458984374999986],[-73.54912109374993,-8.34580078125002],[-73.73203125,-7.875390625],[-73.72041015624993,-7.782519531250017],[-73.76689453124999,-7.753515624999963],[-73.82207031249996,-7.738964843750026],[-73.89462890624998,-7.654785156250014],[-73.946875,-7.611230468750023],[-73.98173828124996,-7.58505859375002],[-74.00205078125003,-7.556054687499966],[-73.98173828124996,-7.535742187500006],[-73.95849609374994,-7.506640625000031],[-73.96430664062498,-7.378906250000028],[-73.74946289062498,-7.335351562500037],[-73.72041015624993,-7.309277343749969],[-73.758203125,-7.172753906249952],[-73.79301757812499,-7.135058593750003],[-73.75810546874999,-6.90576171875],[-73.137353515625,-6.4658203125],[-73.23554687500001,-6.098437500000017],[-73.209375,-6.028710937500023],[-73.16289062499996,-5.933398437499974],[-72.97988281249997,-5.634863281249991],[-72.88706054687498,-5.122753906250026],[-72.83193359374994,-5.09375],[-72.69873046874997,-5.067187499999989],[-72.60834960937495,-5.009570312499974],[-72.46899414062497,-4.901269531250023],[-72.35283203124993,-4.786035156249994],[-72.25678710937501,-4.74892578124998],[-71.8447265625,-4.504394531249986],[-70.97368164062499,-4.350488281249994],[-70.86601562499999,-4.229589843749963],[-70.79951171874995,-4.173339843749957],[-70.72158203124997,-4.15888671875004],[-70.53066406249997,-4.167578125000034],[-70.40463867187498,-4.150097656250026],[-70.34365234375,-4.193652343750017],[-70.31689453124994,-4.246972656250037],[-70.23916015625002,-4.30117187499998],[-70.12880859375,-4.286621093749943],[-70.05332031249998,-4.333105468750006],[-70.00395507812496,-4.327246093749963],[-69.97202148437503,-4.30117187499998],[-69.96591796875003,-4.2359375],[-69.94819335937498,-4.200585937500009],[-69.66904296875003,-2.667675781249997],[-69.40024414062498,-1.194921874999977],[-69.63398437500001,-0.50927734375],[-70.07050781249993,-0.13886718750004],[-70.05390624999993,0.578613281250028],[-69.47211914062498,0.72993164062504],[-69.15332031249994,0.65878906250002],[-69.31181640624999,1.050488281249969],[-69.85214843750003,1.05952148437504],[-69.84858398437493,1.708740234375043],[-68.17656249999999,1.719824218749991],[-68.25595703125,1.845507812500017],[-68.19379882812495,1.987011718749983],[-67.93623046874998,1.748486328124969],[-67.40043945312499,2.116699218750028],[-67.11923828124998,1.703613281249986],[-67.082275390625,1.185400390625006],[-66.87602539062499,1.223046875000037],[-66.34711914062498,0.7671875],[-66.06005859375003,0.78535156250004],[-65.68144531249999,0.983447265624989],[-65.52299804687493,0.843408203124966],[-65.55605468750002,0.687988281250014],[-65.47338867187497,0.691259765624977],[-65.10375976562497,1.108105468749983],[-64.20502929687493,1.52949218750004],[-64.00849609374995,1.931591796874969],[-63.43251953124994,2.155566406250045],[-63.389257812500006,2.411914062500045],[-64.04658203124998,2.502392578124997],[-64.22109375000002,3.587402343749972],[-64.66899414062496,4.01181640625002],[-64.788671875,4.276025390625023],[-64.57636718750001,4.139892578125],[-64.19248046874995,4.126855468750009],[-64.02148437500003,3.929101562500051],[-63.33867187500002,3.943896484375045],[-62.85698242187502,3.593457031249969],[-62.71210937499998,4.01791992187502],[-62.41064453124994,4.156738281249972],[-62.153125,4.098388671874986],[-61.82084960937496,4.197021484375],[-61.28007812500002,4.516894531249974],[-61.00283203125002,4.535253906249991],[-60.603857421875006,4.94936523437498],[-60.671972656250034,5.164355468749989],[-60.71196289062499,5.191552734375023],[-60.742138671874926,5.202050781250037],[-60.6513671875,5.221142578125011],[-60.45952148437499,5.188085937500034],[-60.40878906249998,5.21015625],[-60.33520507812497,5.199316406250006],[-60.241650390624926,5.257958984374966],[-60.14204101562498,5.238818359374974],[-59.990673828124955,5.082861328124991],[-60.14863281249998,4.533251953125031],[-59.69970703125,4.353515625]]]]},"properties":{"name":"Brazil","childNum":17}},{"geometry":{"type":"Polygon","coordinates":[[[-59.493310546874994,13.081982421874997],[-59.611328125,13.102099609374989],[-59.6466796875,13.303125],[-59.427636718749994,13.152783203124997],[-59.493310546874994,13.081982421874997]]]},"properties":{"name":"Barbados","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[115.02675781250005,4.899707031249989],[115.1400390625,4.899755859374991],[115.290625,4.352587890624989],[115.10703125000006,4.390429687499974],[115.02675781250005,4.899707031249989]]],[[[115.02675781250005,4.899707031249989],[114.74667968750006,4.718066406250017],[114.84023437500005,4.393212890625009],[114.65410156250007,4.037646484375045],[114.0638671875,4.592675781249966],[114.42441406250006,4.660400390625],[114.99541015625002,5.022363281250023],[115.02675781250005,4.899707031249989]]]]},"properties":{"name":"Brunei","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[91.63193359375003,27.759960937499997],[91.5947265625,27.557666015624996],[91.74306640625002,27.442529296874994],[91.85126953125001,27.438623046874994],[91.95097656249999,27.458300781249996],[91.99082031250003,27.4501953125],[92.044921875,27.364697265624997],[92.08339843750002,27.290625],[92.03115234375002,27.214306640624997],[92.00253906250003,27.147363281249994],[91.99228515625003,27.099902343749996],[91.99863281250003,27.079296875],[92.03085937500003,27.040820312499996],[92.06816406249999,26.9751953125],[92.07343750000001,26.91484375],[92.04970703125002,26.874853515625],[91.99833984374999,26.85498046875],[91.84208984374999,26.852978515624997],[91.67158203125001,26.802001953125],[91.517578125,26.807324218749997],[91.45585937499999,26.866894531249997],[91.4267578125,26.867089843749994],[91.28652343750002,26.789941406249994],[90.73964843750002,26.771679687499997],[90.34589843750001,26.890332031249997],[90.2060546875,26.847509765625],[90.12294921875002,26.754589843749997],[89.94316406249999,26.723925781249996],[89.76386718750001,26.7015625],[89.60996093750003,26.719433593749997],[89.58613281250001,26.778955078124994],[89.33212890625003,26.8486328125],[89.14824218749999,26.816162109375],[89.04091796875002,26.865039062499996],[88.85761718750001,26.961474609374996],[88.73876953125,27.175585937499996],[88.76035156250003,27.218115234375],[88.88164062499999,27.2974609375],[88.89140624999999,27.316064453124994],[88.94755859374999,27.464013671874994],[89.48066406250001,28.059960937499994],[89.53691406249999,28.107421875],[89.65273437500002,28.15830078125],[89.74980468749999,28.188183593749997],[89.81689453125,28.256298828124997],[89.89785156250002,28.294140625],[89.98105468750003,28.311181640624994],[90.34824218750003,28.243945312499996],[90.36298828125001,28.216503906249997],[90.33310546875003,28.093994140625],[90.35273437500001,28.080224609374994],[90.47734374999999,28.070849609374996],[90.63007812500001,28.078564453124997],[90.71572265625002,28.071728515624997],[91.02080078124999,27.970068359375],[91.07773437500003,27.974462890625],[91.22587890624999,28.071240234374997],[91.27304687500003,28.078369140625],[91.30683593750001,28.064013671874996],[91.36757812500002,28.021630859374994],[91.64189453124999,27.923242187499994],[91.63193359375003,27.759960937499997]]]},"properties":{"name":"Bhutan","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[25.2587890625,-17.793554687500006],[25.242285156250006,-17.969042968750003],[25.939355468750023,-18.93867187500001],[26.168066406250006,-19.53828125000001],[27.17822265625,-20.10097656250001],[27.28076171875,-20.47871093750001],[27.679296875,-20.503027343750006],[27.66943359375,-21.064257812500003],[28.014062500000023,-21.55419921875],[29.02558593750001,-21.796875],[29.042382812500023,-22.018359375],[29.237207031250023,-22.07949218750001],[29.315234375000017,-22.15771484375],[29.36484375,-22.193945312500006],[29.1298828125,-22.21328125],[29.013476562500017,-22.278417968750006],[28.94580078125,-22.395117187500006],[28.83984375,-22.480859375],[28.21015625000001,-22.693652343750003],[27.812597656250006,-23.108007812500006],[27.7685546875,-23.14892578125],[27.085546875,-23.577929687500003],[26.835058593750006,-24.240820312500006],[26.617773437500006,-24.3955078125],[26.451757812500006,-24.58271484375001],[26.39716796875001,-24.613574218750003],[26.130859375,-24.671484375],[26.031835937500006,-24.702441406250003],[25.912109375,-24.74746093750001],[25.518164062500006,-25.66279296875001],[25.21337890625,-25.75625],[24.33056640625,-25.74287109375001],[24.19296875,-25.632910156250006],[23.969531250000017,-25.626074218750006],[23.89375,-25.600878906250003],[23.389257812500006,-25.29140625],[23.148730468750017,-25.288671875],[22.878808593750023,-25.45791015625001],[22.59765625,-26.13271484375001],[22.548632812500017,-26.17841796875001],[22.47089843750001,-26.219042968750003],[22.217578125000017,-26.38886718750001],[22.090917968750006,-26.580175781250006],[22.01093750000001,-26.635839843750006],[21.78828125000001,-26.710058593750006],[21.738085937500017,-26.80683593750001],[21.694726562500023,-26.840917968750006],[20.73984375,-26.84882812500001],[20.641406250000017,-26.7421875],[20.79316406250001,-25.915625],[20.4306640625,-25.147070312500006],[19.98046875,-24.77675781250001],[19.977343750000017,-22.00019531250001],[20.9794921875,-21.9619140625],[20.97412109375,-18.31884765625],[23.219335937500006,-17.99970703125001],[23.599707031250006,-18.4599609375],[24.243945312500017,-18.0234375],[24.530566406250017,-18.052734375],[24.909082031250023,-17.821386718750006],[25.2587890625,-17.793554687500006]]]},"properties":{"name":"Botswana","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[22.86005859375001,10.919677734375],[23.646289062500017,9.822900390624994],[23.62265625,9.340625],[23.46826171875,9.11474609375],[23.53730468750001,8.815820312499994],[24.147363281250023,8.665625],[24.291406250000023,8.29140625],[24.853320312500017,8.137548828124991],[25.20039062500001,7.807910156249989],[25.18134765625001,7.557226562499991],[25.27890625,7.427490234375],[26.36181640625,6.635302734374989],[26.30859375,6.455322265625],[26.514257812500006,6.069238281249994],[27.143945312500023,5.722949218749989],[27.4033203125,5.109179687499989],[27.071875,5.199755859374989],[26.822070312500017,5.062402343749994],[25.52509765625001,5.31210937499999],[25.065234375000017,4.967431640624994],[24.31982421875,4.994140625],[23.41718750000001,4.663134765624989],[22.864550781250017,4.723876953125],[22.422167968750017,4.134960937499997],[20.55810546875,4.462695312499989],[20.226367187500017,4.829638671874989],[19.806542968750023,5.089306640624997],[19.5009765625,5.127490234374989],[19.06855468750001,4.891406249999989],[18.594140625000023,4.346240234374989],[18.6103515625,3.478417968749994],[18.474414062500017,3.622998046874997],[18.160937500000017,3.499804687499989],[17.491601562500023,3.687304687499989],[16.610742187500023,3.50537109375],[16.468554687500017,2.831738281249997],[16.183398437500017,2.270068359374989],[16.0634765625,2.90859375],[15.128710937500017,3.826904296875],[15.063574218750006,4.284863281249997],[14.73125,4.602392578124991],[14.56298828125,5.279931640624994],[14.616894531250011,5.865136718749994],[14.43115234375,6.038720703124994],[14.7392578125,6.27978515625],[15.206738281250011,7.206152343749991],[15.480078125,7.523779296874991],[15.957617187500006,7.507568359375],[16.37890625,7.683544921874997],[16.545312500000023,7.865478515625],[16.784765625,7.550976562499997],[17.6494140625,7.98359375],[18.56416015625001,8.0458984375],[19.108691406250017,8.656152343749994],[18.886035156250017,8.836035156249991],[18.95625,8.938867187499994],[20.342089843750017,9.127099609374994],[20.773242187500017,9.405664062499994],[21.682714843750006,10.289843749999989],[21.771484375,10.642822265625],[22.49384765625001,10.996240234374994],[22.86005859375001,10.919677734375]]]},"properties":{"name":"Central African Rep.","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-59.78759765624997,43.939599609374994],[-60.11748046874996,43.95336914062506],[-59.727148437500006,44.002832031249994],[-59.78759765624997,43.939599609374994]]],[[[-66.7625,44.68178710937502],[-66.8970703125,44.62890625],[-66.80214843749994,44.80537109374998],[-66.7625,44.68178710937502]]],[[[-60.961572265624966,45.48994140625001],[-61.081738281249926,45.55781249999998],[-60.91245117187498,45.56728515625005],[-60.961572265624966,45.48994140625001]]],[[[-73.69531249999997,45.58549804687502],[-73.85771484375002,45.573583984375006],[-73.57236328124998,45.69448242187502],[-73.69531249999997,45.58549804687502]]],[[[-73.56650390625003,45.469091796875034],[-73.960546875,45.44140624999997],[-73.68745117187498,45.561425781249994],[-73.47607421874997,45.704736328124994],[-73.56650390625003,45.469091796875034]]],[[[-61.10517578124998,45.94472656250002],[-60.86523437499997,45.983496093750006],[-61.05903320312501,45.70336914062497],[-60.73789062499995,45.75141601562498],[-60.46059570312494,45.96870117187501],[-60.733300781249994,45.956591796875045],[-60.297949218750034,46.31123046874998],[-60.22646484374994,46.19555664062506],[-59.86503906249993,46.159521484375006],[-59.8421875,45.941552734374994],[-60.67294921874995,45.59082031250006],[-61.28369140624994,45.573876953124966],[-61.44980468749995,45.71621093750002],[-61.40864257812501,46.17036132812498],[-60.87016601562499,46.796777343749966],[-60.40820312500003,47.00351562499998],[-60.332910156249966,46.737011718749955],[-60.49453125000002,46.270263671875],[-61.10517578124998,45.94472656250002]]],[[[-63.811279296875,46.46870117187501],[-63.68144531249993,46.561914062499994],[-63.12939453125,46.422216796875034],[-62.02373046874999,46.42158203125001],[-62.52607421875001,46.20288085937503],[-62.531347656250034,45.977294921875],[-63.02207031249998,46.06660156249998],[-62.89453125000003,46.12358398437496],[-63.056347656249955,46.22392578124996],[-62.97846679687498,46.31635742187498],[-63.21347656249998,46.15986328124998],[-63.641015624999966,46.23046874999997],[-63.758642578125034,46.397607421874994],[-64.11083984375003,46.425439453124994],[-64.13603515624999,46.59970703125006],[-64.388037109375,46.640869140625],[-63.99355468750002,47.06157226562502],[-64.08789062499997,46.77543945312499],[-63.811279296875,46.46870117187501]]],[[[-61.91411132812496,47.284521484375034],[-61.77255859374998,47.25981445312499],[-62.00830078124994,47.23427734375002],[-61.924707031249966,47.425146484375006],[-61.3955078125,47.63764648437504],[-61.91411132812496,47.284521484375034]]],[[[-54.227148437500034,47.44135742187501],[-54.32597656250002,47.408105468749994],[-54.12817382812494,47.646826171875034],[-54.227148437500034,47.44135742187501]]],[[[-74.70888671874997,45.0038574218751],[-73.55810546875,45.425097656250045],[-73.1595703125,46.01005859375002],[-72.10927734374997,46.55122070312504],[-71.26118164062495,46.75625],[-70.51948242187501,47.032519531250045],[-69.47104492187503,47.96728515625006],[-68.23818359374994,48.62641601562504],[-66.17817382812493,49.21313476562503],[-64.83632812499994,49.191748046875006],[-64.2162109375,48.873632812500034],[-64.51372070312493,48.84111328124999],[-64.24609374999994,48.69111328124998],[-64.34882812500001,48.423193359375034],[-65.259423828125,48.02124023437503],[-65.92670898437495,48.188867187499994],[-66.70439453125002,48.0224609375],[-66.35961914062494,48.06064453125006],[-65.84941406250002,47.91103515625005],[-65.60722656249996,47.67001953125006],[-65.00166015624995,47.84682617187502],[-64.70322265625,47.72485351562503],[-64.91220703125003,47.36865234375003],[-65.31889648437502,47.101220703124994],[-64.831396484375,47.06079101562503],[-64.88251953124993,46.822851562500034],[-64.54150390625,46.240332031250034],[-63.91591796875002,46.165820312500045],[-63.831933593749966,46.107177734375],[-64.05639648437503,46.021337890625006],[-63.70288085937494,45.858007812500034],[-62.70068359374997,45.740576171875006],[-62.750097656250006,45.64824218750002],[-62.483056640624966,45.62182617187506],[-61.955517578124955,45.86816406249997],[-61.776513671874994,45.655615234375006],[-61.49228515624998,45.68701171875],[-61.350488281249966,45.57368164062501],[-61.28198242187494,45.441064453124994],[-61.46098632812502,45.36669921875003],[-61.03154296875002,45.29174804687506],[-63.306298828124994,44.64257812500003],[-63.60400390624997,44.68320312500006],[-63.60976562499999,44.47998046875006],[-63.999707031249926,44.64492187499999],[-64.10087890624993,44.487451171874966],[-64.1669921875,44.58666992187503],[-64.28608398437493,44.55034179687499],[-64.27568359374993,44.33408203124998],[-65.48168945312497,43.51806640625],[-65.73813476562498,43.56074218750001],[-65.88691406250001,43.79521484374999],[-66.125732421875,43.813818359375034],[-66.19306640624995,44.143847656250045],[-65.86801757812498,44.56879882812501],[-66.14638671875002,44.43593750000005],[-66.090625,44.50493164062499],[-64.44814453125,45.33745117187502],[-64.13549804687497,45.023046875],[-64.09316406249997,45.21708984375002],[-63.368017578125034,45.36479492187502],[-64.87314453124998,45.35458984375006],[-64.31464843749998,45.83569335937503],[-64.48222656250002,45.80634765624998],[-64.63271484375002,45.94663085937506],[-64.77851562499998,45.63842773437497],[-65.88447265624995,45.22290039062506],[-66.10976562500002,45.316601562499955],[-66.02656249999995,45.417578125],[-66.43984374999994,45.09589843750001],[-66.87246093749997,45.067285156249966],[-67.12485351562498,45.16943359375],[-67.366943359375,45.17377929687498],[-67.43266601562496,45.603125],[-67.80224609374994,45.7275390625],[-67.806787109375,47.08281249999999],[-68.23549804687502,47.34594726562503],[-68.93720703124998,47.21123046875002],[-69.0501953125,47.426611328125034],[-69.24287109374998,47.46298828124998],[-70.00771484375002,46.70893554687501],[-70.296240234375,45.90610351562506],[-70.86503906249999,45.27070312500001],[-71.327294921875,45.29008789062496],[-71.51752929687495,45.00756835937497],[-74.663232421875,45.00390625000003],[-74.70888671874997,45.0038574218751]]],[[[-126.09208984374995,49.35400390625003],[-126.06401367187499,49.26362304687501],[-126.22963867187498,49.29565429687506],[-126.09208984374995,49.35400390625003]]],[[[-54.55439453125001,49.5888671875],[-54.786523437499966,49.496142578125045],[-54.86357421875002,49.576074218749966],[-54.55439453125001,49.5888671875]]],[[[-54.093701171874955,49.74443359374999],[-53.98066406250001,49.66196289062498],[-54.28613281249997,49.595361328124994],[-54.27763671875002,49.71147460937502],[-54.093701171874955,49.74443359374999]]],[[[-126.64121093749999,49.605810546875006],[-126.93857421874999,49.71845703125004],[-126.92583007812497,49.837744140625006],[-126.73813476562502,49.84365234375005],[-126.64121093749999,49.605810546875006]]],[[[-61.801123046875034,49.093896484374966],[-63.04150390624994,49.224951171875034],[-64.485205078125,49.88696289062497],[-64.13144531249995,49.94165039062503],[-62.858544921874966,49.70546875000005],[-61.817138671875,49.28354492187498],[-61.69614257812495,49.139013671875006],[-61.801123046875034,49.093896484374966]]],[[[-125.18413085937497,50.09711914062498],[-125.301171875,50.4140625],[-125.07402343750002,50.22065429687501],[-125.18413085937497,50.09711914062498]]],[[[-127.19731445312495,50.640380859375],[-125.48208007812501,50.316796874999966],[-124.83061523437499,49.53007812500002],[-123.99580078125,49.22402343750002],[-123.49702148437498,48.58208007812499],[-123.38989257812501,48.67021484374999],[-123.31064453125003,48.41103515625002],[-123.57314453124995,48.32280273437499],[-123.91694335937501,48.386572265625034],[-125.12070312500002,48.76079101562496],[-124.84965820312496,49.02827148437501],[-124.81264648437497,49.212646484375],[-124.92734374999998,49.01420898437499],[-125.489453125,48.933789062499955],[-125.82851562499998,49.09184570312499],[-125.64423828125001,49.18579101562506],[-125.95166015625001,49.24804687500003],[-125.93540039062499,49.401464843750006],[-126.51914062499999,49.396777343750045],[-126.54189453125001,49.590478515624966],[-126.13408203124997,49.672314453124955],[-126.52524414062499,49.71958007812498],[-126.90332031250001,49.94414062499999],[-127.114306640625,49.879736328125034],[-127.24980468749999,50.13798828124996],[-127.34941406249995,50.05195312500001],[-127.46713867187503,50.163427734375006],[-127.86391601562495,50.12773437500002],[-127.90585937499998,50.44521484375002],[-127.48652343749998,50.404638671875034],[-127.46591796874996,50.58310546875006],[-128.05834960937494,50.498486328124955],[-128.34604492187503,50.744238281250006],[-127.91806640624998,50.86054687500001],[-127.19731445312495,50.640380859375]]],[[[-55.45874023437494,51.53652343750005],[-55.58339843749994,51.38857421875002],[-56.031103515625034,51.328369140625],[-55.8,51.033300781250034],[-56.732324218749966,50.007714843749994],[-56.822167968749966,49.613476562499955],[-56.179394531249955,50.114990234375],[-56.161279296874994,49.94013671874998],[-55.50292968749997,49.98315429687503],[-56.14018554687496,49.61914062500006],[-55.869824218749955,49.67016601562506],[-56.08730468750002,49.45195312499999],[-55.375927734374955,49.48974609374997],[-55.34384765624998,49.37290039062506],[-55.22954101562496,49.508154296875006],[-55.35317382812502,49.07944335937506],[-54.50219726562503,49.52734375],[-54.44824218749997,49.329443359375006],[-53.957714843749955,49.44184570312498],[-53.61943359374996,49.321630859375006],[-53.57343750000001,49.141210937500034],[-54.16127929687494,48.787695312500034],[-53.852880859375006,48.81132812499996],[-53.966015624999955,48.70668945312505],[-53.70634765624999,48.65551757812503],[-54.11445312499998,48.393603515625045],[-53.027587890625,48.634716796874955],[-53.1357421875,48.40185546875003],[-53.60976562500002,48.20771484375001],[-53.56943359374998,48.088085937499955],[-53.869580078124926,48.019677734374966],[-53.63823242187496,48.01464843750003],[-53.863671874999966,47.787011718749994],[-53.67236328125,47.64824218749999],[-53.28271484375,47.99785156249996],[-52.86601562499993,48.11298828124998],[-53.16982421875002,47.51210937500005],[-52.945019531249955,47.55283203124998],[-52.782421874999955,47.769433593749966],[-52.653662109375034,47.549414062500006],[-53.11484375,46.65581054687502],[-53.32304687499996,46.71835937499998],[-53.589794921874955,46.638867187499955],[-53.59736328124998,47.14599609374997],[-54.00957031249993,46.839599609375],[-54.173730468749994,46.88037109375003],[-53.84951171875002,47.440332031249994],[-53.98901367187503,47.756201171875034],[-54.191845703124955,47.85981445312501],[-54.488134765625006,47.40385742187502],[-54.47392578124996,47.54707031249998],[-54.856640624999955,47.385009765625],[-55.31572265624993,46.905712890624955],[-55.78852539062498,46.86723632812502],[-55.91923828124996,47.01689453124996],[-55.49150390624996,47.16064453125003],[-54.78461914062501,47.664746093749955],[-55.366308593750034,47.66108398437501],[-55.57612304687498,47.46523437499999],[-56.12724609374999,47.50283203125002],[-55.867089843749994,47.592333984375045],[-55.85791015625,47.81918945312498],[-56.774121093749955,47.56499023437499],[-58.33686523437501,47.73085937500002],[-59.11694335937494,47.57070312499999],[-59.32065429687498,47.736914062500006],[-59.272070312500034,47.99555664062504],[-58.330224609374994,48.52211914062502],[-59.16767578124998,48.558496093749966],[-58.84179687500003,48.74643554687498],[-58.906445312499955,48.65019531249999],[-58.716455078124994,48.59804687500002],[-58.403662109375034,49.08432617187498],[-57.99052734374996,48.987939453124966],[-58.09892578124993,49.07744140624999],[-57.98007812499998,49.229638671874994],[-58.19091796875003,49.25874023437498],[-58.21337890625,49.38666992187501],[-58.01582031249998,49.54248046874997],[-57.79130859374999,49.48999023437503],[-57.92617187499999,49.700830078124994],[-57.4326171875,50.50581054687504],[-57.179589843749966,50.614843750000034],[-57.29799804687502,50.69873046874997],[-57.03593750000002,51.01083984374998],[-56.68242187500002,51.332763671875],[-56.025585937499955,51.56835937500006],[-55.6904296875,51.471337890624994],[-55.666406249999966,51.57890624999999],[-55.45874023437494,51.53652343750005]]],[[[-127.92465820312498,51.47387695312497],[-128.14877929687498,51.62670898437503],[-128.03173828125006,51.708398437499966],[-127.92465820312498,51.47387695312497]]],[[[-79.38427734374997,51.951953125000045],[-79.64375,52.01005859374996],[-79.27128906249996,52.086816406249966],[-79.38427734374997,51.951953125000045]]],[[[-128.36875,52.40087890625],[-128.43979492187503,52.696386718750006],[-128.24726562499998,52.784375],[-128.36875,52.40087890625]]],[[[-80.73168945312494,52.74726562499998],[-82.03925781249998,53.04990234374998],[-81.84731445312494,53.18627929687497],[-81.135595703125,53.20581054687503],[-80.73168945312494,52.74726562499998]]],[[[-131.7537109375,53.195556640625],[-131.63466796874997,52.92216796874999],[-131.97177734374998,52.87983398437498],[-131.45522460937502,52.70170898437502],[-131.59057617187494,52.578222656250006],[-131.25971679687495,52.415917968749966],[-131.31992187499998,52.30307617187498],[-131.142626953125,52.291113281250034],[-131.221533203125,52.15361328124999],[-132.16508789062493,52.783300781250034],[-132.14375,52.99931640624999],[-132.54677734374997,53.1375],[-131.7537109375,53.195556640625]]],[[[-128.55244140624998,52.93974609375002],[-128.50991210937502,52.51860351562502],[-128.678955078125,52.289648437500006],[-128.74633789062494,52.763378906249955],[-128.89980468749997,52.67382812500003],[-129.175927734375,52.964941406250006],[-129.033251953125,53.27993164062505],[-128.63266601562498,53.1125],[-128.55244140624998,52.93974609375002]]],[[[-129.167724609375,53.11787109374998],[-129.32387695312502,53.142138671875045],[-129.23818359374997,53.33007812500006],[-129.167724609375,53.11787109374998]]],[[[-129.84858398437498,53.167919921874955],[-130.51757812500003,53.54423828124999],[-130.45200195312498,53.63115234375002],[-129.94472656250002,53.436376953125034],[-129.75483398437498,53.244775390624994],[-129.84858398437498,53.167919921874955]]],[[[-130.236279296875,53.95854492187502],[-130.38422851562504,53.84394531250001],[-130.703173828125,53.892236328124994],[-130.44799804687497,54.08901367187502],[-130.236279296875,53.95854492187502]]],[[[-132.65551757812503,54.12749023437496],[-132.30336914062497,54.098876953125],[-132.16611328124998,53.95522460937505],[-132.53466796875,53.651708984375034],[-132.18696289062504,53.68481445312503],[-132.134423828125,54.03427734374998],[-131.66762695312502,54.14135742187503],[-131.957421875,53.308691406250034],[-132.34726562500003,53.18920898437503],[-132.747509765625,53.310498046874955],[-132.425,53.33696289062502],[-132.84501953125,53.507714843749994],[-133.07949218749997,53.837011718750034],[-133.04838867187493,54.15893554687497],[-132.65551757812503,54.12749023437496]]],[[[-130.92714843749997,54.47905273437499],[-130.90683593750003,54.63178710937504],[-130.75800781249998,54.61376953125],[-130.92714843749997,54.47905273437499]]],[[[-130.57534179687497,54.769677734374966],[-130.2140625,55.02587890625003],[-130.34941406249996,54.814550781250034],[-130.57534179687497,54.769677734374966]]],[[[-79.97758789062499,56.20703125000006],[-80.057470703125,56.28735351562497],[-79.57973632812502,56.466357421875045],[-79.97758789062499,56.20703125000006]]],[[[-78.93559570312496,56.26606445312498],[-79.17548828124998,55.88505859374999],[-79.18212890625,56.21215820312503],[-79.4951171875,55.87475585937503],[-79.76474609374995,55.80678710937505],[-79.54472656249999,56.12836914062501],[-79.9875,55.89213867187502],[-79.45888671875,56.53974609374998],[-79.53632812499995,56.180078124999966],[-79.27241210937493,56.600439453125006],[-78.93559570312496,56.26606445312498]]],[[[-61.743603515624955,57.55458984375005],[-61.6375,57.41606445312499],[-62.01123046875003,57.54848632812505],[-61.743603515624955,57.55458984375005]]],[[[-79.71650390624998,57.515527343749994],[-79.80844726562498,57.44243164062502],[-79.74257812499997,57.60795898437499],[-79.71650390624998,57.515527343749994]]],[[[-69.16005859375,59.04023437500001],[-69.35283203125002,58.96074218749999],[-69.30322265625003,59.144873046875006],[-69.16005859375,59.04023437500001]]],[[[-64.40703125,60.367089843749966],[-64.44194335937496,60.2978515625],[-64.73793945312497,60.37563476562502],[-64.83642578124997,60.50102539062499],[-64.40703125,60.367089843749966]]],[[[-68.23378906250002,60.24091796875001],[-68.36787109374998,60.314746093750045],[-68.08759765624998,60.58784179687501],[-67.81884765624994,60.449511718750074],[-68.23378906250002,60.24091796875001]]],[[[-78.531640625,60.72856445312499],[-78.66889648437498,60.716894531250006],[-78.24169921875,60.818652343750045],[-78.531640625,60.72856445312499]]],[[[-64.83261718749998,61.366064453125006],[-65.43212890625,61.649511718750034],[-64.78964843750003,61.662207031250034],[-64.83261718749998,61.366064453125006]]],[[[-65.03056640624999,61.879052734374966],[-64.89658203124995,61.73330078125005],[-65.23535156249997,61.89770507812506],[-65.03056640624999,61.879052734374966]]],[[[-79.54531250000002,62.41171875000006],[-79.28647460937495,62.247656250000034],[-79.32392578124995,62.02607421875001],[-79.81611328124995,61.59462890625002],[-80.26518554687496,61.818212890625006],[-80.26005859374996,62.10903320312502],[-79.9267578125,62.39287109375002],[-79.54531250000002,62.41171875000006]]],[[[-64.82382812499998,62.558740234374994],[-64.46503906249998,62.535937500000045],[-64.47832031250002,62.417871093749966],[-64.901220703125,62.421044921874994],[-64.82382812499998,62.558740234374994]]],[[[-70.33706054687497,62.548730468749994],[-70.76606445312498,62.596875],[-71.22011718750002,62.873925781249966],[-70.44262695312497,62.73378906250002],[-70.33706054687497,62.548730468749994]]],[[[-82.00048828124997,62.95419921874998],[-82.02583007812498,62.73007812499998],[-82.56826171875002,62.403222656249994],[-83.01582031249998,62.20991210937498],[-83.69887695312497,62.16025390624998],[-83.91049804687498,62.45415039062499],[-83.37641601562498,62.904931640624994],[-82.00048828124997,62.95419921874998]]],[[[-77.87670898437497,63.470556640625034],[-77.53271484374997,63.233642578125],[-77.94243164062496,63.11440429687502],[-78.536767578125,63.423730468749994],[-77.87670898437497,63.470556640625034]]],[[[-76.67758789062503,63.393945312499966],[-77.36474609374994,63.588330078124955],[-77.13369140624997,63.68203125000002],[-76.65244140624998,63.503564453124994],[-76.67758789062503,63.393945312499966]]],[[[-84.91962890624995,65.26108398437503],[-84.50112304687497,65.45844726562501],[-84.08486328125,65.21782226562502],[-82.05,64.64428710937506],[-81.67612304687498,64.21264648437503],[-81.88710937499997,64.01640625000002],[-80.82895507812495,64.08994140625],[-80.30205078124999,63.76220703125003],[-81.04638671875003,63.461572265624966],[-82.378125,63.706787109375],[-82.46708984375002,63.92695312500001],[-83.30395507812497,64.14379882812506],[-84.63291015625,63.30922851562502],[-85.39262695312496,63.119677734375045],[-85.76894531249997,63.70034179687502],[-87.15190429687499,63.58564453125001],[-86.93203124999997,63.90166015625002],[-86.252099609375,64.13686523437497],[-86.37426757812503,64.56582031249997],[-86.074609375,65.533837890625],[-85.55468750000003,65.91865234374995],[-85.17622070312501,65.746875],[-85.23994140624993,65.51030273437499],[-84.91962890624995,65.26108398437503]]],[[[-84.67475585937498,65.575],[-85.096337890625,65.756201171875],[-85.14960937500001,66.01538085937506],[-84.75737304687496,65.85893554687505],[-84.67475585937498,65.575]]],[[[-83.72597656249997,65.796728515625],[-83.23374023437495,65.71503906249995],[-83.332421875,65.63105468749998],[-84.11826171874995,65.77177734375007],[-84.40717773437501,66.13100585937497],[-83.78696289062495,65.96577148437498],[-83.72597656249997,65.796728515625]]],[[[-108.09272460937501,67.00517578124999],[-107.80551757812493,66.99858398437507],[-107.94394531249999,66.8578125],[-108.09272460937501,67.00517578124999]]],[[[-62.681542968749966,67.05629882812502],[-62.87163085937499,67.06259765625006],[-62.41679687499996,67.18847656250003],[-62.681542968749966,67.05629882812502]]],[[[-107.89985351562497,67.40180664062495],[-107.95024414062503,67.31821289062498],[-108.15224609374997,67.429443359375],[-108.04897460937498,67.664892578125],[-107.89985351562497,67.40180664062495]]],[[[-73.621728515625,67.783837890625],[-74.573388671875,67.82866210937507],[-74.70654296875003,68.06708984374995],[-73.49375,68.00063476562502],[-73.40717773437498,67.79306640625],[-73.621728515625,67.783837890625]]],[[[-86.59555664062498,67.7359375],[-86.89252929687498,67.836572265625],[-86.95981445312503,68.10024414062497],[-86.70209960937501,68.30561523437498],[-86.42114257812497,68.18344726562503],[-86.59555664062498,67.7359375]]],[[[-75.67587890624998,68.32250976562506],[-75.078125,68.17314453124999],[-75.20195312499996,67.45917968750001],[-75.78007812499996,67.28354492187503],[-76.94418945312498,67.25029296875002],[-77.30439453125001,67.68510742187505],[-77.12587890624997,67.94707031250002],[-76.59580078124998,68.27895507812497],[-75.67587890624998,68.32250976562506]]],[[[-78.98271484374999,68.19282226562501],[-79.17475585937493,68.26445312500002],[-78.95258789062495,68.35302734375006],[-78.98271484374999,68.19282226562501]]],[[[-104.54067382812497,68.405908203125],[-105.05136718749999,68.55903320312501],[-104.60200195312503,68.56152343749997],[-104.54067382812497,68.405908203125]]],[[[-74.880859375,68.34868164062505],[-75.40024414062503,68.52548828125],[-75.28740234374996,68.68774414062503],[-74.98364257812497,68.64760742187502],[-74.880859375,68.34868164062505]]],[[[-101.84589843749994,68.58632812499997],[-102.30815429687497,68.681982421875],[-102.01337890624995,68.82539062500001],[-101.73295898437495,68.75341796875],[-101.84589843749994,68.58632812499997]]],[[[-100.21723632812497,68.80668945312502],[-100.59653320312496,68.76640625000007],[-100.56547851562495,69.02680664062501],[-100.21723632812497,68.80668945312502]]],[[[-99.99467773437502,69.01352539062503],[-100.19570312500002,68.991455078125],[-100.153125,69.12949218750003],[-99.99467773437502,69.01352539062503]]],[[[-79.21064453124995,68.845458984375],[-79.24267578125,69.04926757812495],[-78.33256835937496,69.38603515624999],[-78.77919921875,68.95048828124999],[-79.21064453124995,68.845458984375]]],[[[-90.1998046875,69.419091796875],[-90.33027343749993,69.252197265625],[-90.49204101562503,69.369873046875],[-90.1998046875,69.419091796875]]],[[[-76.99536132812503,69.14375],[-77.37939453125,69.2740234375],[-77.18754882812502,69.440087890625],[-76.66884765625002,69.36616210937504],[-76.99536132812503,69.14375]]],[[[-101.171728515625,69.39707031250003],[-101.31289062499998,69.57607421875],[-101.00063476562497,69.4619140625],[-101.171728515625,69.39707031250003]]],[[[-95.51367187499997,69.57363281250002],[-95.43745117187498,69.37846679687505],[-95.73012695312502,69.34755859374997],[-95.80620117187499,69.56049804687501],[-95.89345703125,69.35175781250004],[-95.87583007812495,69.60600585937505],[-95.51367187499997,69.57363281250002]]],[[[-67.91469726562494,69.54096679687504],[-68.22138671874998,69.61674804687502],[-67.908837890625,69.68183593749995],[-67.91469726562494,69.54096679687504]]],[[[-78.02910156249993,69.71489257812502],[-78.03999023437495,69.6083984375],[-78.84819335937502,69.4828125],[-78.02910156249993,69.71489257812502]]],[[[-79.43066406250003,69.78779296874995],[-79.55283203124995,69.63085937500006],[-80.04750976562502,69.63432617187505],[-79.97783203124993,69.50966796874997],[-80.794775390625,69.68925781250005],[-80.42421875000002,69.797607421875],[-79.43066406250003,69.78779296874995]]],[[[-97.439453125,69.64267578125006],[-96.29995117187494,69.34438476562505],[-95.7513671875,68.89765624999998],[-95.26777343749998,68.82607421874997],[-96.40156249999995,68.47070312500003],[-97.47202148437498,68.543701171875],[-98.320556640625,68.84272460937498],[-98.70380859374993,68.80278320312502],[-98.90449218749995,68.93242187500005],[-99.25400390625002,68.86318359374997],[-99.49467773437493,68.95957031249998],[-99.455712890625,69.13120117187503],[-98.45595703124997,69.33466796875001],[-98.54599609375,69.57290039062497],[-98.04135742187498,69.456640625],[-98.20048828124996,69.79697265625006],[-97.79072265624998,69.86162109374999],[-97.439453125,69.64267578125006]]],[[[-86.91303710937501,70.11323242187501],[-86.55766601562499,69.99531249999995],[-87.3232421875,70.08012695312502],[-86.91303710937501,70.11323242187501]]],[[[-74.70888671874997,45.0038574218751],[-74.76245117187494,44.99907226562502],[-74.99614257812496,44.970117187499966],[-75.40126953124997,44.77226562499999],[-75.81933593749997,44.468017578125],[-76.18579101562503,44.24223632812502],[-76.819970703125,43.62880859375011],[-77.59653320312492,43.62861328125007],[-78.45825195312497,43.63149414062511],[-78.72041015624993,43.62495117187501],[-78.84555664062492,43.58334960937506],[-79.171875,43.466552734375085],[-79.0830566406249,43.33139648437509],[-79.05922851562494,43.27807617187506],[-79.066064453125,43.10610351562502],[-79.02617187499996,43.01733398437506],[-78.98076171874993,42.98061523437502],[-78.91508789062496,42.90913085937504],[-79.17373046875,42.74853515625],[-80.24755859374991,42.366015625000045],[-81.02822265624997,42.247167968750006],[-81.50732421874997,42.10346679687504],[-81.97416992187496,41.88872070312499],[-82.43906249999989,41.6748535156251],[-82.69003906249995,41.675195312499994],[-83.141943359375,41.97587890624996],[-83.10952148437497,42.25068359375001],[-82.54531249999997,42.62470703124998],[-82.19038085937495,43.47407226562501],[-82.137841796875,43.570898437500034],[-82.48505859374993,45.08374023437503],[-82.55107421874987,45.3473632812501],[-82.91933593749994,45.51796875000002],[-83.59267578125,45.81713867187506],[-83.46948242187503,45.99467773437499],[-83.61596679687503,46.116845703124994],[-83.97778320312494,46.08491210937507],[-84.12319335937497,46.50292968749997],[-84.44047851562496,46.49814453125006],[-84.66577148437503,46.54326171875002],[-84.87597656249994,46.89990234375003],[-85.07006835937497,46.97993164062498],[-85.65224609375,47.21997070312503],[-86.67216796874996,47.636425781249955],[-87.20800781249997,47.848486328125006],[-87.74389648437497,48.06054687500003],[-88.37817382812497,48.30307617187506],[-89.45566406249992,47.99624023437508],[-90.79731445312495,48.13105468750001],[-91.04345703124991,48.19370117187498],[-91.38720703124997,48.05854492187498],[-92.00517578125002,48.301855468750006],[-92.3484375,48.276611328125],[-92.41459960937493,48.276611328125],[-92.50058593749995,48.43535156250002],[-92.83671875,48.567773437499994],[-93.25795898437497,48.62885742187501],[-93.37788085937498,48.61655273437498],[-93.70771484374995,48.525439453125074],[-93.85161132812496,48.607275390625034],[-94.6208984374999,48.7426269531251],[-94.71279296874997,48.863427734374994],[-94.80346679687497,49.0029296875],[-94.86040039062493,49.258593750000045],[-94.85434570312495,49.304589843749994],[-95.15527343749997,49.3696777343751],[-95.16206054687493,48.991748046875045],[-95.39790039062493,48.99316406249997],[-96.25068359374993,48.99316406249997],[-96.67705078124993,48.99316406249997],[-97.52983398437493,48.99316406249997],[-98.80898437499995,48.99316406249997],[-104.77832031249997,48.993115234375125],[-110.7476562499999,48.993066406250136],[-116.71704101562493,48.993066406250136],[-118.84892578124993,48.993066406250136],[-119.27534179687494,48.993066406250136],[-119.70170898437495,48.99301757812495],[-120.98085937499995,48.99301757812495],[-122.78876953124994,48.99301757812495],[-122.82670898437495,49.028417968750034],[-122.9241699218749,49.07465820312504],[-122.96269531249993,49.07460937500005],[-123.06328125,48.97773437500001],[-123.22944335937493,49.260498046875085],[-122.87910156249995,49.39892578125003],[-123.27675781249997,49.34394531250001],[-123.1875,49.680322265624994],[-123.53056640624989,49.39731445312506],[-124.02861328125002,49.602880859375006],[-123.99262695312497,49.736181640625006],[-123.81718749999993,49.58657226562508],[-123.58247070312498,49.68125],[-123.87441406250005,49.736816406250114],[-123.82543945312493,50.14423828124998],[-123.94589843749995,50.18393554687509],[-123.9849121093749,49.87558593749998],[-124.28125,49.77211914062502],[-124.78237304687492,50.02011718749992],[-125.05668945312495,50.418652343750125],[-124.8598632812499,50.872412109375006],[-125.05878906249993,50.51386718749998],[-125.4763183593749,50.49716796874995],[-125.53935546874996,50.64902343749998],[-125.64130859374994,50.46621093750005],[-126.09433593749995,50.497607421875045],[-126.44746093750004,50.58774414062492],[-125.90410156250002,50.704931640625006],[-126.51435546875,50.679394531250125],[-126.37460937499995,50.83735351562498],[-126.5217773437499,50.86606445312498],[-126.51733398437497,51.0568359375001],[-126.63178710937494,50.915136718750006],[-127.057568359375,50.86752929687509],[-127.70810546875,51.15117187499996],[-127.41967773437496,51.608056640625136],[-126.69145507812502,51.70341796875002],[-127.33872070312489,51.70737304687495],[-127.66870117187497,51.47758789062502],[-127.85053710937498,51.67319335937509],[-127.79536132812493,52.19101562500006],[-127.43793945312504,52.356152343750125],[-127.24223632812496,52.39511718750009],[-126.71396484374989,52.060693359374994],[-127.19399414062498,52.45766601562502],[-126.95136718749994,52.7510253906251],[-127.01933593750002,52.8424804687501],[-127.06621093749989,52.65268554687498],[-127.79189453124994,52.28935546875002],[-128.10224609374993,51.78842773437495],[-128.3576171875,52.1588867187501],[-128.0375,52.318164062500045],[-127.94023437499996,52.545166015625085],[-128.27153320312493,52.3629882812501],[-128.05327148437487,52.91069335937496],[-128.3650390624999,52.82578125000006],[-128.52470703125002,53.1406738281251],[-129.08090820312492,53.36728515625006],[-129.1715820312499,53.53359375000002],[-128.8545898437499,53.70454101562504],[-128.90561523437492,53.559326171875114],[-128.5421386718749,53.420654296875114],[-128.13271484375002,53.417773437500045],[-127.92783203125,53.274707031250045],[-128.2072265624999,53.483203125000074],[-128.67553710937494,53.55458984375005],[-128.76367187500003,53.746875],[-128.5321289062499,53.85810546875007],[-128.959375,53.84145507812505],[-129.2578613281249,53.417968750000085],[-129.56372070312506,53.251464843750114],[-130.33525390625002,53.723925781250074],[-130.04331054687495,54.13354492187503],[-129.62602539062493,54.23027343750002],[-130.08422851562503,54.18139648437503],[-130.4302734375,54.42099609374998],[-129.56064453124995,55.46254882812508],[-129.79516601562503,55.559570312500114],[-130.04848632812494,55.05727539062511],[-130.01406249999997,55.950537109375006],[-130.09785156249995,56.10927734375002],[-130.41313476562487,56.12250976562507],[-130.47709960937496,56.230566406250034],[-130.649072265625,56.26367187500003],[-131.471875,56.55673828125006],[-131.82426757812496,56.58999023437508],[-131.86616210937495,56.792822265625006],[-132.1042968749999,56.85678710937509],[-132.062890625,56.95336914062503],[-132.33798828124992,57.07944335937498],[-132.27939453124998,57.14536132812506],[-132.23217773437494,57.198535156250074],[-132.30166015625005,57.2763183593751],[-132.44248046874986,57.40673828125003],[-132.55048828124995,57.499902343749994],[-133.00141601562495,57.948974609375],[-133.27529296875,58.22285156250004],[-133.54638671874997,58.50346679687499],[-134.21850585937503,58.849902343750045],[-134.32963867187505,58.93969726562506],[-134.39306640625,59.009179687499994],[-134.67724609374997,59.19926757812499],[-134.94375,59.28828125000001],[-135.05102539062491,59.57866210937502],[-135.36787109374998,59.743310546874994],[-135.70258789062504,59.72875976562506],[-136.3218261718749,59.604833984375034],[-136.27797851562494,59.48032226562506],[-136.46635742187493,59.459082031250006],[-136.57875976562494,59.15224609375002],[-136.81328125000002,59.15004882812511],[-137.12622070312491,59.04096679687507],[-137.2775390624999,58.988183593749994],[-137.43857421874995,58.903125],[-137.52089843749994,58.91538085937506],[-137.59331054687493,59.22626953124998],[-138.317626953125,59.611132812500074],[-138.86875,59.94575195312501],[-139.18515624999986,60.083593750000034],[-139.13696289062494,60.17270507812506],[-139.07924804687497,60.279443359375136],[-139.07924804687497,60.3437011718751],[-139.23476562499997,60.339746093749994],[-139.67631835937505,60.32832031249998],[-139.97329101562497,60.183154296875074],[-140.45283203125004,60.29970703125002],[-140.5254394531249,60.21835937499995],[-140.76274414062505,60.25913085937509],[-141.00214843750004,60.300244140625125],[-141.00214843750004,60.884667968749994],[-141.00214843750004,61.761279296875045],[-141.00214843750004,63.22226562499998],[-141.00214843750004,64.09887695312506],[-141.00214843750004,65.55991210937498],[-141.00214843750004,66.43652343750006],[-141.00214843750004,67.89755859374998],[-141.00214843750004,68.77416992187506],[-141.00214843750004,69.65078125000011],[-139.18154296874997,69.51552734375008],[-137.25996093749998,68.96411132812503],[-136.12236328124993,68.88222656250002],[-135.258837890625,68.68432617187503],[-135.93901367187487,68.9741699218751],[-135.575537109375,69.02695312500003],[-135.91020507812487,69.11147460937502],[-135.6914550781249,69.31118164062502],[-135.29282226562486,69.30786132812506],[-135.1408203124999,69.46782226562496],[-134.45683593749993,69.47763671875],[-134.40893554687494,69.68178710937502],[-133.87978515624997,69.50771484375011],[-134.17431640624991,69.25283203125005],[-133.16313476562496,69.43388671874999],[-132.91533203125002,69.62963867187506],[-132.40390625,69.65874023437496],[-132.48847656249993,69.73808593749996],[-132.16342773437498,69.70498046875014],[-131.13637695312497,69.90688476562505],[-130.66547851562495,70.12705078124998],[-129.944970703125,70.09091796875006],[-129.675634765625,70.19296875000009],[-129.64829101562495,69.9977539062501],[-130.83208007812487,69.65146484375006],[-131.9377929687499,69.5347167968751],[-132.8174804687499,69.20576171875004],[-133.41831054687492,68.84428710937493],[-133.138037109375,68.74658203125011],[-133.33666992187497,68.83525390625005],[-132.57763671874997,68.84780273437514],[-132.71894531249998,69.07919921875],[-131.78837890625002,69.43198242187495],[-131.32470703124997,69.36118164062509],[-131.06342773437504,69.45068359375003],[-130.97065429687495,69.20908203125],[-130.1176269531249,69.720068359375],[-128.89892578124994,69.96616210937506],[-129.15791015624995,69.80009765624999],[-129.05434570312502,69.70107421875005],[-128.85302734375003,69.7510253906251],[-127.68378906249994,70.26035156249995],[-128.17011718749998,70.41845703125],[-127.99101562499992,70.57382812500003],[-127.22597656249992,70.29614257812497],[-126.25043945312495,69.54526367187492],[-125.52495117187495,69.35156250000009],[-125.171875,69.42797851562503],[-125.35693359374991,69.62597656250003],[-124.767919921875,69.99003906249996],[-124.99038085937494,70.02661132812511],[-124.55502929687488,70.15122070312509],[-124.40693359374991,69.76743164062506],[-124.12460937499995,69.6899902343751],[-124.33808593749991,69.36484374999995],[-123.5284179687499,69.38935546874995],[-123.02578125,69.81000976562504],[-122.07006835937499,69.81616210937506],[-120.96245117187502,69.66040039062511],[-120.13999023437488,69.38056640625013],[-117.22695312499998,68.913427734375],[-116.05947265625,68.83701171875006],[-116.2434082031249,68.9740722656251],[-115.44228515624994,68.94091796875009],[-114.62016601562496,68.74609375],[-113.96440429687495,68.39907226562502],[-114.09594726562491,68.26679687500007],[-114.76528320312494,68.27021484375004],[-115.12705078124992,68.13203124999995],[-115.43447265624994,67.90234375000006],[-115.13320312499994,67.819189453125],[-112.50302734374993,67.6819335937501],[-110.9900390624999,67.79082031250007],[-110.07392578124995,67.99291992187506],[-109.63037109374991,67.73271484374996],[-109.03803710937504,67.69116210937503],[-108.85200195312497,67.42197265625009],[-108.61333007812493,67.59804687500008],[-107.98872070312495,67.2563964843751],[-107.99130859374995,67.09516601562513],[-108.49604492187493,67.09228515625006],[-107.25947265624998,66.39853515624995],[-107.71035156250001,66.74003906250007],[-107.7250976562499,66.98413085937506],[-107.15649414062497,66.88173828124997],[-107.9583984375,67.81860351562506],[-107.79829101562498,68.03691406249996],[-106.42426757812491,68.20058593750008],[-105.7501953125,68.59228515625011],[-106.45805664062496,68.51645507812495],[-106.60849609374988,68.35737304687504],[-107.61933593749994,68.3310546875],[-107.73417968749989,68.17373046875011],[-108.3228027343749,68.15410156250002],[-108.71811523437488,68.29746093750009],[-108.31347656249996,68.61079101562498],[-106.16445312499992,68.91987304687507],[-105.68559570312489,68.82817382812505],[-105.3774414062499,68.413818359375],[-104.65317382812488,68.23007812500003],[-104.48681640624991,68.06318359374998],[-103.47412109374993,68.11503906250005],[-102.32036132812489,67.73564453125005],[-101.55498046874992,67.69316406250007],[-100.21293945312489,67.83857421875004],[-98.92045898437502,67.72578124999998],[-98.41210937499991,67.80717773437505],[-98.63154296875004,68.0725585937501],[-97.45493164062486,67.61699218750002],[-97.20654296874989,67.85507812500003],[-97.73911132812495,67.97817382812505],[-98.19252929687494,67.92299804687502],[-98.65048828124989,68.36352539062506],[-98.21855468750002,68.31743164062507],[-97.7942382812499,68.38759765625],[-97.9250976562499,68.523681640625],[-97.41035156249993,68.49653320312498],[-96.97670898437497,68.25541992187505],[-96.43066406249991,68.3105957031251],[-96.72207031250005,68.03876953124998],[-95.9703125,68.24912109375],[-96.36914062499991,67.50976562500003],[-96.14145507812489,67.27182617187503],[-95.71992187499998,67.31679687500014],[-95.77768554687495,67.18461914062505],[-95.41591796875005,67.15556640624999],[-95.41889648437504,67.01323242187493],[-96.42255859374995,67.05175781249997],[-95.7875488281249,66.616796875],[-96.03686523437489,66.9375],[-95.39965820312503,66.94946289062509],[-95.25874023437493,67.26254882812492],[-95.65048828124986,67.73745117187505],[-95.46069335937503,68.02138671875],[-94.74443359374993,68.07089843749995],[-93.44892578124998,68.61889648437503],[-93.85244140624994,69.00034179687495],[-94.06489257812495,68.78476562500006],[-94.600439453125,68.80322265625011],[-94.08364257812497,69.12309570312507],[-94.254736328125,69.31376953125002],[-93.61948242187492,69.41699218750009],[-93.74853515624991,69.2261230468751],[-93.5322753906249,69.48090820312495],[-94.2708007812499,69.45512695312505],[-94.63383789062496,69.64965820312506],[-94.82250976562494,69.577783203125],[-95.96494140624989,69.80278320312499],[-96.5513671875,70.21030273437506],[-96.29770507812492,70.51137695312511],[-95.87861328124998,70.54897460937514],[-95.88632812499986,70.69428710937507],[-96.25800781249993,70.64228515625013],[-96.54892578124995,70.80874023437511],[-96.44658203124996,71.23989257812502],[-96.06201171874997,71.41386718749993],[-95.5642578124999,71.33676757812503],[-95.40625,71.49165039062498],[-95.87231445312494,71.57314453125005],[-94.73486328124994,71.98295898437507],[-94.30834960937491,71.76489257812506],[-93.74628906249998,71.742822265625],[-92.94868164062493,71.26210937500011],[-92.98144531249994,70.8522460937501],[-91.56406249999995,70.1782714843751],[-92.32050781250004,70.2353515625],[-92.51186523437494,70.10385742187503],[-91.976708984375,70.03867187500009],[-92.88779296874989,69.66821289062511],[-92.31166992187494,69.67290039062499],[-91.91196289062495,69.53125],[-91.20180664062494,69.64477539062494],[-91.43994140624997,69.52568359375002],[-90.4155761718749,69.45698242187507],[-90.89228515625004,69.26728515624995],[-91.23720703125005,69.28554687500014],[-90.47900390624994,68.88115234374999],[-90.57363281250005,68.47470703124998],[-90.20478515625004,68.25747070312511],[-89.27954101562491,69.25546875000003],[-88.22353515625,68.91503906249997],[-87.81357421874986,68.34570312499997],[-87.89267578125,68.24814453125],[-88.34697265624993,68.28828125000001],[-88.313818359375,67.95034179687508],[-87.359375,67.17724609374997],[-86.56079101562491,67.48212890625007],[-85.64316406249992,68.69970703124997],[-84.86757812499994,68.77333984375005],[-85.10664062499995,68.84404296875007],[-84.86220703125,69.07397460937503],[-85.38676757812493,69.23188476562504],[-85.50737304687487,69.84526367187493],[-82.61835937499993,69.69106445312514],[-82.39023437499989,69.60087890625007],[-82.75483398437493,69.49438476562506],[-82.30986328124996,69.41000976562509],[-82.22753906249997,69.24887695312495],[-81.37783203125005,69.18564453125003],[-81.95791015624991,68.88364257812498],[-81.38090820312496,68.85004882812504],[-81.28154296874987,68.65722656250003],[-81.91484374999993,68.4587890625001],[-82.55268554687504,68.44648437500007],[-82.22241210937489,68.145263671875],[-82.0125,68.19389648437496],[-81.97646484374997,67.86201171875001],[-81.2943359375,67.497412109375],[-81.46757812499996,67.0698730468751],[-83.40644531249998,66.37124023437508],[-84.53847656249994,66.97280273437505],[-84.84575195312502,67.02871093750008],[-85.11372070312498,66.90693359375013],[-84.73774414062504,66.93359375000006],[-84.223046875,66.68247070312506],[-83.86904296875,66.2135742187501],[-84.29306640624995,66.29179687500005],[-84.628076171875,66.20771484374998],[-85.603857421875,66.56826171875005],[-86.708154296875,66.52304687500009],[-86.68510742187502,66.36040039062499],[-85.95874023437491,66.11904296875002],[-87.45288085937503,65.33896484375009],[-87.96997070312503,65.34892578124999],[-89.7494140625,65.93603515625006],[-89.88969726562487,65.86855468749997],[-91.42724609374994,65.94790039062497],[-91.04111328124989,65.82983398437509],[-90.98344726562496,65.91923828124999],[-89.92407226562497,65.78027343750011],[-88.97402343749994,65.34829101562502],[-87.02753906249995,65.19809570312498],[-88.10561523437497,64.18330078125001],[-88.81772460937489,63.99223632812499],[-89.20063476562493,64.11376953125006],[-89.13154296874998,63.96850585937494],[-89.61582031249995,64.030615234375],[-89.8113281249999,64.18056640625],[-90.04165039062494,64.14086914062509],[-89.85571289062497,63.9569824218751],[-90.16816406250004,63.978759765625085],[-90.15473632812498,63.68964843749998],[-90.81191406249991,63.580908203125034],[-91.98222656249996,63.82241210937502],[-92.33842773437496,63.787646484375045],[-93.69633789062493,64.14716796875013],[-93.55981445312491,63.865283203125074],[-93.27021484374998,63.840869140625074],[-93.37851562499992,63.94848632812497],[-92.15688476562491,63.691699218750045],[-92.46508789062491,63.55507812500011],[-91.84184570312496,63.69755859374999],[-90.97006835937489,63.442773437500136],[-90.69858398437492,63.06386718750005],[-91.44897460937503,62.804052734375034],[-92.3612792968749,62.81938476562496],[-91.93583984374993,62.59238281250009],[-92.55141601562491,62.546728515625034],[-92.76596679687492,62.34995117187509],[-92.52797851562494,62.16840820312504],[-93.20537109374993,62.364941406250125],[-92.90551757812503,62.21513671874996],[-93.3330566406249,61.93291015625002],[-93.58178710937494,61.94204101562511],[-93.31201171874997,61.76728515625004],[-93.91274414062497,61.48144531250006],[-94.509375,60.60454101562493],[-94.76171874999991,60.498242187500125],[-94.78828124999998,59.26787109374993],[-94.95732421874996,59.068847656250085],[-94.28706054687493,58.716015625000125],[-94.33222656249998,58.297363281250114],[-94.12319335937494,58.73671875000008],[-93.1787597656249,58.72563476562496],[-92.43281249999993,57.3203125],[-92.7981445312499,56.921972656250034],[-90.89746093750003,57.25693359375006],[-88.94848632812489,56.85131835937503],[-88.07509765624997,56.46728515624994],[-87.48242187499991,56.021289062500045],[-85.55932617187491,55.54018554687508],[-85.21801757812491,55.348974609375034],[-85.3652832031249,55.07929687499998],[-85.06093749999997,55.285644531250085],[-83.91059570312493,55.314648437499955],[-82.39326171874998,55.067822265625125],[-82.219384765625,54.8134765625],[-82.42416992187486,54.2445800781251],[-82.14145507812492,53.81762695312497],[-82.29155273437496,53.03071289062507],[-81.5994140624999,52.432617187500085],[-81.82788085937489,52.22421875000009],[-81.46621093749994,52.204492187500136],[-80.588037109375,51.667236328125114],[-80.4433105468749,51.38857421875002],[-80.85122070312497,51.125],[-80.47832031249993,51.30732421874998],[-80.10356445312487,51.282861328125136],[-79.34790039062494,50.76264648437504],[-79.737451171875,51.186279296875],[-79.33867187500002,51.62817382812497],[-79.04052734375003,51.46376953125005],[-78.90317382812495,51.200292968750034],[-78.73134765624994,51.497460937499994],[-78.98164062499993,51.774560546875136],[-78.44809570312495,52.26137695312502],[-78.74414062499994,52.65537109374998],[-79.10034179687497,53.65664062500005],[-78.99604492187493,54.00249023437499],[-79.241796875,54.098876953125085],[-79.14672851562491,54.16923828125002],[-79.71235351562495,54.6718261718751],[-77.77529296874994,55.291259765625],[-76.60405273437496,56.19956054687495],[-76.52558593749998,56.8917968750001],[-76.80981445312497,57.65795898437506],[-77.15678710937496,58.018896484375034],[-78.51508789062493,58.68237304687503],[-77.76069335937498,59.38002929687505],[-77.72617187499995,59.67587890624992],[-77.34907226562495,59.57895507812509],[-77.48530273437493,59.684570312500114],[-77.28920898437494,60.0220214843751],[-77.58588867187498,60.088183593750074],[-77.45288085937497,60.1458007812501],[-77.6814453124999,60.427099609375034],[-77.503564453125,60.54272460937497],[-77.7908203124999,60.63984375000004],[-77.58955078124993,60.808593750000114],[-78.18134765624995,60.81914062499996],[-77.51435546874998,61.55629882812505],[-78.02138671874997,61.8320800781251],[-78.13339843749986,62.28227539062496],[-77.372412109375,62.572509765625114],[-75.81689453124991,62.31586914062507],[-75.7898437499999,62.17958984375002],[-75.3412109375,62.312109375],[-74.63256835937497,62.115673828125125],[-74.6458007812499,62.21113281250004],[-73.70507812499991,62.47314453124994],[-72.68696289062498,62.12456054687499],[-72.771630859375,61.840429687500006],[-72.50556640624998,61.922656250000074],[-72.22612304687487,61.83159179687499],[-72.04003906249991,61.68027343750006],[-72.21586914062502,61.58725585937495],[-71.86611328125,61.68852539062499],[-71.63828124999995,61.6171875],[-71.85439453124991,61.43979492187492],[-71.42270507812489,61.158935546875085],[-70.27929687499991,61.06865234374999],[-69.99243164062491,60.8564941406251],[-69.50332031249994,61.04042968750011],[-69.40473632812493,60.84677734375009],[-69.75947265624998,60.440234375000045],[-69.67373046874994,60.07587890625007],[-70.65483398437496,60.02622070312506],[-69.73393554687493,59.918017578125045],[-69.68188476562489,59.34174804687507],[-69.3440429687499,59.303076171875006],[-69.53164062499994,58.86923828125009],[-69.64838867187493,58.82080078125],[-69.78417968749994,58.95571289062511],[-70.15434570312496,58.76059570312498],[-69.78989257812486,58.689306640625034],[-69.27109374999986,58.88393554687505],[-68.69819335937495,58.904541015625],[-68.38115234374993,58.74350585937506],[-68.22939453124994,58.48457031250007],[-68.35654296874989,58.163232421875136],[-69.04082031249996,57.902490234375136],[-68.41357421874997,58.0517578125],[-68.02104492187493,58.48530273437504],[-67.88828124999989,58.29575195312495],[-68.06386718750005,58.13896484374999],[-67.75595703124992,58.4045898437501],[-67.6782714843749,57.99111328125008],[-67.5696289062499,58.21347656250006],[-66.72216796874991,58.49101562499996],[-66.36240234374989,58.791162109374994],[-66.0023925781249,58.43120117187502],[-66.04306640624995,58.82065429687495],[-65.72099609374996,59.02377929687495],[-65.38354492187494,59.06020507812508],[-65.7,59.21333007812501],[-65.4117187499999,59.31499023437496],[-65.47509765624994,59.47031249999998],[-65.03823242187494,59.38789062500007],[-65.40742187499993,59.53935546875002],[-65.4333984374999,59.776513671874994],[-65.02817382812495,59.77070312500007],[-65.17172851562489,59.90800781249996],[-64.81733398437498,60.3310546875],[-64.49941406250005,60.26826171875001],[-64.41958007812494,60.17138671874997],[-64.76845703124997,60.01210937500005],[-64.28349609374993,60.06406249999998],[-64.22631835937491,59.741210937500085],[-64.05605468750005,59.82255859374996],[-63.7501953124999,59.51259765625005],[-63.945458984374994,59.380175781250074],[-63.775878906249915,59.277148437500045],[-63.539892578124864,59.332861328125034],[-63.41513671874995,59.194384765625074],[-63.97114257812498,59.053808593750034],[-63.24843749999991,59.068310546874955],[-63.28212890624994,58.86738281250007],[-63.05029296874997,58.87817382812494],[-62.87387695312489,58.67246093749998],[-63.537060546874926,58.329931640625006],[-63.209960937499886,58.46694335937502],[-62.593847656249864,58.47402343750005],[-62.81206054687502,58.20039062500007],[-63.26152343749993,58.014697265625074],[-62.486230468749966,58.15405273437506],[-62.30566406249997,57.97226562499995],[-61.95864257812505,57.91176757812508],[-61.9679687499999,57.61191406250009],[-62.495556640624926,57.489208984375125],[-61.92114257812497,57.42080078125005],[-61.977441406249966,57.24794921875002],[-61.33374023437494,57.01059570312498],[-61.37163085937502,56.68081054687511],[-62.497265624999926,56.80170898437504],[-61.73774414062498,56.52602539062502],[-61.940429687499886,56.423583984375114],[-61.42529296874994,56.360644531250074],[-61.713085937499955,56.230957031250114],[-61.364697265624926,56.2160156250001],[-61.30112304687495,56.04716796874999],[-61.4495117187499,55.99570312499998],[-61.08935546874997,55.86635742187511],[-60.74326171874989,55.94145507812493],[-60.56210937499995,55.727001953125125],[-60.341015624999926,55.78466796874997],[-60.40830078124995,55.649560546874994],[-60.19238281249994,55.4809082031251],[-60.617138671874955,55.060205078124994],[-59.75878906249997,55.3095703125],[-59.68906249999989,55.19633789062502],[-59.43789062500005,55.175927734375136],[-59.837792968749994,54.813964843750114],[-59.25957031249996,55.19995117187506],[-58.99711914062496,55.149462890625074],[-58.780175781249994,54.838378906250114],[-58.39814453124998,54.77412109374998],[-57.96245117187493,54.875732421875085],[-57.40449218750004,54.59086914062496],[-57.69926757812496,54.38657226562506],[-58.435205078124966,54.228125],[-58.63320312499999,54.04956054687497],[-59.8230468749999,53.83442382812504],[-60.14492187499994,53.59614257812498],[-60.395410156249994,53.653320312500085],[-60.1002929687499,53.48696289062511],[-60.329492187499966,53.26611328125006],[-58.652050781249926,53.97788085937495],[-57.935986328124955,54.09116210937492],[-58.31748046874989,54.11445312500007],[-58.192089843749926,54.228173828125136],[-57.4160644531249,54.162744140625136],[-57.134960937499926,53.79184570312506],[-57.524072265624966,53.61142578125006],[-57.331738281249955,53.469091796875034],[-56.84086914062496,53.73945312500004],[-56.46499023437505,53.76503906250011],[-55.96611328125002,53.4711425781251],[-55.79794921874995,53.211962890625045],[-55.80283203124989,52.64316406249998],[-56.324902343749926,52.54453124999998],[-55.74648437499994,52.4745605468751],[-55.7771484374999,52.3642578125],[-56.01171874999997,52.394482421875125],[-55.695214843749994,52.13779296875006],[-56.97597656250005,51.45766601562505],[-58.510351562500006,51.295068359375136],[-59.88632812499992,50.316406250000085],[-61.72485351562503,50.10405273437499],[-61.91953124999989,50.2328613281251],[-62.71542968749995,50.30166015625008],[-66.49550781249991,50.2118652343751],[-66.94116210937503,49.993701171875045],[-67.37202148437495,49.348437500000045],[-68.28193359374998,49.197167968750136],[-69.67387695312496,48.19916992187504],[-71.01826171874993,48.455615234375045],[-69.86552734374993,48.17226562500005],[-69.775,48.09809570312504],[-69.9944335937499,47.73989257812508],[-70.70585937499996,47.13979492187505],[-71.26777343749995,46.79594726562499],[-71.87958984374998,46.68681640624996],[-72.98100585937493,46.209716796875085],[-73.4766113281249,45.738232421874955],[-74.03784179687494,45.501855468750136],[-74.31508789062494,45.531054687500045],[-73.97382812499995,45.345117187499994],[-74.70888671874997,45.0038574218751]]],[[[-96.78232421874998,72.93662109375],[-97.0927734375,72.99692382812503],[-96.86240234374995,73.18881835937506],[-96.78232421874998,72.93662109375]]],[[[-114.52153320312502,72.592919921875],[-113.57807617187501,72.65209960937506],[-113.2923828125,72.94980468750003],[-112.75361328125001,72.98603515624995],[-111.26972656249994,72.71372070312498],[-111.895166015625,72.35610351562497],[-111.67509765625002,72.30014648437503],[-110.20512695312495,72.66127929687497],[-110.66083984374998,73.00820312500002],[-110.00844726562494,72.983642578125],[-108.75498046875002,72.55107421874999],[-108.18823242187501,71.72377929687502],[-107.812841796875,71.62617187500004],[-107.30600585937496,71.89467773437502],[-108.23740234374999,73.14990234375003],[-108.029052734375,73.34873046875003],[-106.48212890624998,73.19619140624997],[-105.41513671874995,72.788330078125],[-104.38593749999997,71.57695312500005],[-104.51479492187502,71.06425781250005],[-103.58457031249995,70.63085937500003],[-103.07719726562497,70.50883789062505],[-103.04956054687503,70.65507812499999],[-101.67631835937495,70.27827148437495],[-101.56240234375001,70.135009765625],[-101.04267578125,70.11079101562504],[-100.98237304687497,69.67988281250001],[-101.483837890625,69.85019531250006],[-101.64765624999997,69.69853515625007],[-102.18212890624997,69.845947265625],[-102.59589843749997,69.71791992187502],[-102.62109374999996,69.55151367187506],[-103.464892578125,69.64448242187498],[-103.04892578124999,69.47177734375006],[-103.12021484374995,69.20458984374997],[-102.44677734374997,69.476318359375],[-102.04594726562493,69.46484374999997],[-101.85712890625001,69.02397460937505],[-102.89506835937499,68.8236328125],[-104.57143554687501,68.87211914062502],[-105.105859375,68.92041015625],[-105.019580078125,69.08125],[-106.27016601562497,69.19458007812497],[-106.65908203124997,69.439599609375],[-107.43989257812497,69.00214843749995],[-108.36499023437497,68.93476562499998],[-109.47211914062501,68.67670898437498],[-113.12773437500002,68.49414062500003],[-113.61684570312501,68.8384765625],[-113.69414062499995,69.19501953124998],[-115.61811523437495,69.28295898437506],[-116.51347656249993,69.42460937500005],[-117.19541015624995,70.05405273437503],[-114.59233398437497,70.31245117187498],[-112.63789062499997,70.225244140625],[-111.63256835937497,70.30883789062497],[-113.75727539062503,70.69072265625005],[-115.99091796874997,70.586279296875],[-117.58706054687498,70.62954101562502],[-118.2640625,70.888330078125],[-118.26909179687493,71.03471679687505],[-115.30341796874997,71.49370117187505],[-117.93564453125003,71.39208984375003],[-118.22646484374995,71.46708984375005],[-117.742333984375,71.65932617187502],[-118.58300781250003,71.64902343749998],[-118.98769531249997,71.7642578125],[-118.94462890624997,71.98554687499995],[-118.21347656249998,72.26289062499998],[-118.481298828125,72.42768554687498],[-118.13310546874995,72.63281250000003],[-114.63823242187499,73.37265625000003],[-114.20639648437495,73.29780273437495],[-114.05170898437497,73.07099609375004],[-114.52153320312502,72.592919921875]]],[[[-105.28891601562499,72.919921875],[-106.92153320312497,73.479833984375],[-106.61396484375001,73.69560546875002],[-105.31796874999995,73.76713867187502],[-104.5875,73.57807617187495],[-104.62172851562495,73.3111328125],[-105.28891601562499,72.919921875]]],[[[-79.53730468749998,73.65449218749998],[-78.2865234375,73.66582031250007],[-77.20654296874997,73.49956054687505],[-76.18339843749999,72.84306640625005],[-77.83593750000003,72.89682617187498],[-79.3193359375,72.75771484375],[-79.820703125,72.82631835937502],[-80.18330078124995,73.22465820312499],[-80.77641601562502,73.33417968750001],[-80.84887695312503,73.72124023437499],[-79.53730468749998,73.65449218749998]]],[[[-86.58935546874997,71.01079101562507],[-85.64384765624999,71.15244140624998],[-85.09487304687497,71.15195312500006],[-84.82373046874997,71.02861328125005],[-84.69941406249995,71.63144531250003],[-85.33906249999998,71.69726562500003],[-85.91162109375,71.98652343749998],[-85.321875,72.23315429687506],[-84.28374023437499,72.04448242187499],[-84.84199218749995,72.30815429687505],[-84.62304687500003,72.37656250000003],[-85.34111328124993,72.42153320312497],[-85.64990234374997,72.72216796875003],[-85.26210937500002,72.95400390625],[-84.25664062499999,72.79672851562503],[-85.454736328125,73.10546875000003],[-84.41606445312496,73.45649414062495],[-83.781884765625,73.41689453125],[-83.72983398437495,73.57587890624995],[-81.946142578125,73.72983398437506],[-81.40615234374997,73.634521484375],[-80.27724609375,72.77016601562502],[-81.229345703125,72.31171874999998],[-80.61147460937497,72.450830078125],[-80.925146484375,71.90766601562501],[-80.18193359374996,72.20878906250007],[-79.884375,72.17719726562501],[-80.10893554687499,72.33217773437497],[-79.83129882812503,72.44628906250003],[-79.000244140625,72.27202148437507],[-79.00781250000003,72.04291992187501],[-78.58510742187497,71.880615234375],[-78.86274414062495,72.100830078125],[-78.69926757812496,72.35141601562498],[-77.51650390624997,72.17778320312505],[-78.48427734374994,72.47060546875002],[-77.75322265624996,72.72475585937502],[-75.70429687499998,72.57153320312497],[-75.05268554687493,72.22636718749999],[-75.92280273437501,71.71723632812501],[-74.90317382812503,72.10048828125002],[-74.20932617187498,71.978662109375],[-74.31572265624999,71.84267578125],[-75.20478515625001,71.70913085937497],[-74.70078125,71.67558593750005],[-74.99619140624998,71.21811523437503],[-74.48808593750002,71.64838867187501],[-73.8140625,71.77143554687495],[-74.197265625,71.404150390625],[-73.71284179687498,71.58759765624998],[-73.18061523437501,71.282861328125],[-73.27822265625,71.53798828125],[-72.901953125,71.67778320312507],[-71.64067382812499,71.51625976562502],[-71.22939453124997,71.33876953125],[-71.49501953124997,71.10512695312502],[-71.93793945312498,71.09428710937502],[-72.63271484374994,70.83076171874998],[-71.74252929687495,71.046875],[-71.370849609375,70.97514648437499],[-70.82607421874994,71.10874023437503],[-70.67265625,71.05219726562498],[-70.76171874999997,70.79223632812503],[-71.89018554687502,70.43154296875002],[-71.27587890625,70.50029296874999],[-71.42944335937503,70.12778320312503],[-70.97978515624999,70.5810546875],[-69.94980468750003,70.84501953125005],[-68.49575195312502,70.61025390625],[-68.363525390625,70.48125],[-70.05771484375,70.042626953125],[-68.77822265625,70.20356445312501],[-69.00830078124997,69.97895507812501],[-68.74404296874997,69.94140625],[-68.05908203124997,70.317236328125],[-67.36367187499994,70.03442382812503],[-67.22163085937495,69.73071289062506],[-68.02041015625,69.77006835937499],[-69.25078124999999,69.51191406249998],[-68.51303710937498,69.57729492187497],[-67.236962890625,69.460107421875],[-66.71674804687495,69.31186523437498],[-66.70742187500002,69.16821289062503],[-68.40629882812499,69.23222656250002],[-69.040625,69.09799804687503],[-68.41552734375,69.17207031250001],[-67.8326171875,69.06596679687499],[-67.88320312500002,68.78398437499999],[-69.31909179687497,68.85698242187505],[-68.21040039062495,68.702978515625],[-67.9384765625,68.524169921875],[-66.74272460937502,68.45776367187497],[-67.032958984375,68.32607421874997],[-66.923095703125,68.06572265625005],[-66.72900390624997,68.12900390625006],[-66.66269531249995,68.03442382812497],[-66.63095703124998,68.21064453124998],[-66.21240234374997,68.280419921875],[-66.44394531249998,67.83383789062506],[-65.94238281250003,68.07094726562505],[-65.86435546875003,67.92285156249997],[-65.50908203124996,67.96826171875],[-65.40126953125002,67.67485351562499],[-65.41533203124996,67.87924804687498],[-64.92231445312495,68.03164062500002],[-65.02109375,67.78754882812495],[-64.63779296875,67.84023437500002],[-63.850195312500034,67.56606445312502],[-64.00795898437502,67.34731445312497],[-64.69995117187494,67.35053710937501],[-63.83623046874993,67.26411132812498],[-63.59160156250002,67.3775390625],[-63.040136718750034,67.235009765625],[-63.70156249999994,66.82236328125003],[-62.962304687499966,66.94926757812505],[-62.37973632812495,66.90537109375],[-62.12358398437499,67.046728515625],[-61.35341796874994,66.689208984375],[-61.52783203124994,66.55810546875003],[-62.12333984374993,66.64306640625003],[-61.57080078125,66.37290039062506],[-61.95634765624993,66.30932617187497],[-62.553125,66.40683593750003],[-62.53359374999994,66.22700195312498],[-61.99160156250002,66.03530273437502],[-62.624121093750006,66.01625976562505],[-62.381982421874966,65.83330078124999],[-62.65888671874998,65.63994140625002],[-63.16894531249997,65.65732421875],[-63.45874023437494,65.85302734375],[-63.42089843749997,65.70859374999998],[-63.651074218749955,65.66098632812506],[-63.33745117187493,65.61674804687502],[-63.36337890624998,65.22973632812503],[-63.606591796874966,64.92807617187503],[-64.345703125,65.17241210937499],[-64.26967773437497,65.40078124999997],[-64.55507812500002,65.1166015625],[-65.401611328125,65.764013671875],[-64.44536132812496,66.31713867187497],[-65.0044921875,66.07773437500003],[-65.82573242187499,65.996923828125],[-65.65634765625003,66.204736328125],[-66.06372070312497,66.13271484374997],[-66.986328125,66.62749023437505],[-67.07685546874995,66.52548828125006],[-67.30732421874993,66.5697265625],[-67.22539062499993,66.31025390624998],[-67.88339843749995,66.46743164062502],[-67.18320312499995,66.03442382812503],[-67.350439453125,65.92973632812502],[-67.82802734374997,65.96518554687503],[-68.45991210937498,66.249267578125],[-68.74892578125,66.200048828125],[-68.21718750000002,66.078857421875],[-68.18671874999993,65.87099609375002],[-67.86645507812497,65.773681640625],[-67.936767578125,65.56489257812501],[-67.56962890624999,65.64355468749997],[-67.11796874999999,65.44038085937495],[-67.3365234375,65.34658203125005],[-66.69741210937502,64.81518554687506],[-66.63549804687503,65.00034179687503],[-66.21464843749999,64.72241210937497],[-65.93852539062496,64.88574218750003],[-65.2748046875,64.63154296875004],[-65.52934570312499,64.50478515624997],[-65.074609375,64.43666992187502],[-65.21298828125003,64.30327148437502],[-65.580322265625,64.29384765624997],[-65.16987304687495,64.02817382812503],[-64.67846679687503,64.027978515625],[-64.79814453124999,63.91596679687498],[-64.4109375,63.70634765625002],[-64.66464843749995,63.24536132812497],[-65.19184570312498,63.764257812500006],[-65.06894531249998,63.26347656250002],[-64.67236328125003,62.921972656250006],[-65.16279296875001,62.93261718750003],[-65.10849609374998,62.62646484375],[-66.22402343749994,63.10717773437497],[-66.228662109375,62.99096679687503],[-66.41445312500002,63.027197265625034],[-66.65498046874998,63.264746093750006],[-66.69746093749993,63.069531249999955],[-67.89326171874993,63.733740234375006],[-67.72255859374997,63.422753906249966],[-68.49375,63.725488281249994],[-68.91108398437498,63.703222656250006],[-68.141259765625,63.17231445312501],[-67.67597656249998,63.093554687500045],[-67.73696289062497,63.00957031249999],[-65.98017578125001,62.20888671875002],[-66.12387695312498,61.89306640625],[-68.53588867187503,62.25561523437506],[-69.12558593749998,62.423974609374966],[-69.604736328125,62.76772460937502],[-70.23613281250002,62.76337890625001],[-70.801416015625,62.91049804687506],[-71.10576171874999,63.00224609375002],[-70.94604492187497,63.12070312499998],[-71.34726562499998,63.066113281249955],[-71.99223632812493,63.41616210937505],[-71.380859375,63.580322265625],[-72.29013671874995,63.72797851562498],[-72.17426757812498,63.893408203125006],[-72.49843749999994,63.82348632812497],[-73.45454101562495,64.39926757812503],[-73.27128906250002,64.58251953125],[-73.91035156249998,64.578125],[-74.064794921875,64.42465820312498],[-74.13046874999998,64.6078125],[-74.46123046874996,64.64467773437505],[-74.68139648437497,64.8306640625],[-74.91943359374997,64.76552734374997],[-74.69472656250002,64.49658203124997],[-75.71503906249995,64.52436523437495],[-75.76669921875,64.39194335937498],[-76.85615234374998,64.23764648437498],[-77.76049804687503,64.36015624999999],[-78.04521484374993,64.499267578125],[-78.09560546875,64.93925781250002],[-77.36088867187496,65.19653320312503],[-77.32670898437493,65.453125],[-75.82832031249993,65.22705078125003],[-75.45209960937495,64.84160156250002],[-75.35712890624995,65.00874023437495],[-75.79868164062503,65.297509765625],[-75.16630859374999,65.28393554687497],[-74.13847656250002,65.50346679687502],[-73.55078125000003,65.48525390625005],[-74.41640624999997,66.16708984375003],[-73.03325195312502,66.72817382812505],[-72.78881835937494,67.030615234375],[-72.22001953124999,67.25429687500002],[-73.28447265624993,68.35698242187505],[-73.82050781249998,68.36293945312502],[-73.82211914062495,68.68598632812501],[-74.11796875000002,68.70092773437506],[-73.9892578125,68.54863281250002],[-74.2701171875,68.54121093750001],[-74.89296875,68.80815429687505],[-74.71669921874997,69.04550781249998],[-76.58505859375,68.69873046875003],[-76.55722656250003,69.00947265625001],[-75.9537109375,69.03081054687502],[-75.64775390625002,69.212548828125],[-76.46494140624995,69.46943359375001],[-76.23408203125001,69.66210937500003],[-76.742333984375,69.57290039062497],[-77.08994140625,69.63510742187503],[-76.85859374999995,69.775390625],[-77.591650390625,69.84560546875002],[-77.77402343750003,70.23852539062503],[-78.28281250000003,70.229150390625],[-79.06640624999997,70.60356445312507],[-79.40522460937498,70.40073242187503],[-78.86284179687499,70.24189453125001],[-78.88964843750003,69.97749023437495],[-79.51542968749996,69.88759765625005],[-81.65195312500003,70.09462890625002],[-80.92172851562503,69.73090820312501],[-81.56469726562503,69.94272460937498],[-82.29384765624997,69.83691406250003],[-83.14995117187493,70.00908203125002],[-83.85908203124998,69.96274414062498],[-85.43237304687497,70.11137695312507],[-85.780029296875,70.03666992187505],[-86.32202148437503,70.14541015625],[-86.396875,70.46533203124997],[-87.838134765625,70.24658203125],[-88.78271484374997,70.49448242187503],[-89.45590820312498,71.06171874999995],[-87.84492187499995,70.94438476562505],[-87.14008789062498,71.01162109374997],[-89.80537109374993,71.46230468750005],[-89.86152343750001,72.41191406250005],[-88.70517578124998,73.40327148437495],[-87.71977539062496,73.72290039062497],[-85.95078124999998,73.85014648437505],[-84.94677734375,73.72163085937498],[-86.00053710937499,73.31254882812505],[-86.65629882812502,72.72402343750005],[-86.21845703124998,71.89912109375004],[-85.02338867187495,71.35322265625001],[-86.58935546874997,71.01079101562507]]],[[[-100.00190429687497,73.9458984375],[-99.15795898437499,73.73159179687497],[-97.66997070312499,73.88774414062499],[-97.1705078125,73.82485351562497],[-97.001708984375,73.66650390625003],[-97.62587890624997,73.50229492187498],[-97.27250976562502,73.38681640624998],[-98.42177734375002,72.94101562500003],[-97.63632812499998,73.02763671874999],[-97.128125,72.62758789062502],[-96.59208984374996,72.71025390624999],[-96.44560546874996,72.55244140624998],[-96.80146484374998,72.32241210937502],[-96.61342773437494,71.83383789062506],[-97.58227539062497,71.62968750000005],[-98.18134765624998,71.66245117187503],[-98.32270507812501,71.85234375000002],[-98.19863281249994,71.44086914062501],[-98.66289062499993,71.302099609375],[-99.22363281249996,71.387109375],[-100.594482421875,72.15234375000003],[-101.20854492187495,72.31699218749998],[-101.72392578124996,72.31489257812501],[-102.70874023437496,72.76450195312503],[-102.20400390624998,73.077294921875],[-101.27319335937497,72.7216796875],[-100.48476562500002,72.77294921874997],[-100.395703125,72.97700195312498],[-100.128125,72.90668945312495],[-100.53637695312497,73.19785156250003],[-99.82514648437503,73.2138671875],[-100.36611328125001,73.359033203125],[-100.88935546875003,73.27534179687501],[-101.52319335937501,73.48637695312502],[-100.97578124999995,73.59975585937502],[-100.5216796875,73.44931640625],[-100.96298828125002,73.79140625],[-99.99111328125,73.79516601562503],[-100.00190429687497,73.9458984375]]],[[[-98.270361328125,73.86850585937498],[-98.97392578124997,73.81206054687502],[-99.4169921875,73.89541015625002],[-97.69824218749997,74.10869140625005],[-98.270361328125,73.86850585937498]]],[[[-93.17084960937498,74.16098632812506],[-92.22270507812502,73.97236328124998],[-90.62744140625,73.95170898437505],[-90.38139648437496,73.82475585937502],[-92.11791992187497,72.75380859375],[-94.21132812499997,72.75693359375],[-93.77055664062496,72.66821289062506],[-93.55517578124994,72.42114257812497],[-94.03754882812498,72.02875976562498],[-95.00786132812496,72.01279296875],[-95.60214843749998,72.88447265624995],[-95.63291015625003,73.69545898437497],[-94.697607421875,73.66357421874997],[-95.134130859375,73.88125],[-94.97353515625,74.04140625000002],[-93.17084960937498,74.16098632812506]]],[[[-119.73632812499997,74.11264648437498],[-119.20595703125002,74.19799804687503],[-119.11796874999995,74.01552734375],[-118.54399414062499,74.24462890625003],[-117.51484375000001,74.23173828124999],[-115.51069335937501,73.61875],[-115.446875,73.43886718750002],[-118.96157226562497,72.68413085937499],[-119.51284179687501,72.30268554687501],[-120.17988281250001,72.21264648437506],[-120.61933593750001,71.50576171875002],[-121.47216796875003,71.38901367187503],[-121.74936523437502,71.44477539062501],[-123.09565429687503,71.09379882812502],[-124.00776367187494,71.67744140624998],[-125.29667968749999,71.973046875],[-125.84531250000002,71.978662109375],[-123.79726562499997,73.76816406250003],[-124.69624023437497,74.34819335937499],[-121.50415039062497,74.54511718749998],[-119.56264648437494,74.23281250000002],[-119.73632812499997,74.11264648437498]]],[[[-97.35551757812496,74.52631835937495],[-97.75,74.51054687500005],[-97.41650390624994,74.62656250000003],[-97.35551757812496,74.52631835937495]]],[[[-95.306640625,74.50541992187505],[-95.850732421875,74.58247070312504],[-95.51020507812498,74.63676757812499],[-95.306640625,74.50541992187505]]],[[[-104.11992187499995,75.03632812500004],[-104.88740234374998,75.14775390624999],[-104.34619140624996,75.42993164062503],[-103.64350585937497,75.18657226562499],[-104.11992187499995,75.03632812500004]]],[[[-93.54257812499995,75.0279296875],[-93.57309570312495,74.66884765625005],[-94.53452148437498,74.63671874999997],[-96.59960937499997,75.03178710937499],[-95.95463867187493,75.44379882812501],[-94.878173828125,75.63002929687502],[-93.90908203125002,75.42250976562502],[-93.54257812499995,75.0279296875]]],[[[-96.07856445312495,75.510107421875],[-96.91513671875003,75.37968749999999],[-96.98281249999997,75.50981445312505],[-96.367822265625,75.65463867187506],[-96.07856445312495,75.510107421875]]],[[[-94.52656249999995,75.74931640624999],[-94.901220703125,75.93076171875],[-94.53789062499996,75.99643554687506],[-94.52656249999995,75.74931640624999]]],[[[-118.328125,75.57968749999998],[-118.81713867187503,75.52211914062497],[-119.39458007812499,75.617333984375],[-117.63369140624998,76.11508789062498],[-118.328125,75.57968749999998]]],[[[-79.0630859375,75.92587890624998],[-79.63876953124995,75.84291992187505],[-79.00932617187499,76.14589843750005],[-79.0630859375,75.92587890624998]]],[[[-102.22734374999995,76.014892578125],[-102.00800781250003,75.93940429687498],[-102.57958984375003,75.78022460937498],[-103.31474609374996,75.76420898437499],[-103.04150390624999,75.91884765624997],[-103.98525390624997,75.93310546875003],[-103.80078124999994,76.03701171874997],[-104.24248046874996,76.04697265625006],[-104.35063476562497,76.18232421875001],[-102.72802734374999,76.30703125],[-102.22734374999995,76.014892578125]]],[[[-104.02285156249998,76.58310546875003],[-103.05131835937495,76.44985351562497],[-103.31137695312499,76.34755859375],[-104.35751953124995,76.33461914062502],[-104.58569335937499,76.60649414062499],[-104.07451171875003,76.66611328124998],[-104.02285156249998,76.58310546875003]]],[[[-97.70092773437497,76.46650390624998],[-97.89052734374997,75.7603515625],[-97.40751953124999,75.67250976562497],[-97.33603515624998,75.41982421875],[-97.65332031249997,75.50776367187498],[-97.87822265624996,75.41611328125003],[-97.67431640624997,75.127294921875],[-98.04531249999997,75.20083007812497],[-98.12094726562503,75.03271484375],[-100.234375,75.00771484374997],[-100.48349609374995,75.18842773437501],[-100.14570312499995,75.24614257812505],[-100.71191406250003,75.40634765625],[-99.19458007812499,75.698388671875],[-102.58740234375001,75.51367187500003],[-102.79750976562501,75.59965820312505],[-102.14472656249998,75.87504882812502],[-100.97280273437498,75.79843750000003],[-101.414990234375,75.84584960937502],[-101.87211914062496,76.08310546875003],[-101.52895507812495,76.21728515625003],[-102.1046875,76.33120117187505],[-101.41518554687495,76.42490234375003],[-99.86547851562499,75.92421875],[-100.11284179687502,76.11723632812507],[-99.54106445312497,76.14628906250005],[-100.41420898437495,76.242529296875],[-99.97773437500003,76.31245117187495],[-100.82973632812497,76.52387695312495],[-99.8140625,76.6322265625],[-98.89033203125,76.46557617187497],[-98.71083984374994,76.69384765625003],[-97.70092773437497,76.46650390624998]]],[[[-101.22612304687497,76.57934570312497],[-101.61308593749995,76.60458984375006],[-100.26914062499998,76.73413085937497],[-101.22612304687497,76.57934570312497]]],[[[-108.29238281250001,76.05712890625],[-107.72348632812502,75.99541015625002],[-108.020703125,75.80478515625],[-107.21621093749997,75.89155273437501],[-106.91352539062503,75.67963867187501],[-106.67700195312499,76.02373046875002],[-105.63266601562493,75.94536132812505],[-105.51948242187497,75.63237304687505],[-106.09262695312495,75.08945312500003],[-107.15341796874996,74.9271484375],[-108.47475585937495,74.94721679687501],[-108.83129882812501,75.06489257812498],[-112.51933593749997,74.41684570312503],[-113.67158203124997,74.45302734375005],[-114.31269531250003,74.71508789062506],[-112.835986328125,74.9755859375],[-111.67109375,75.01943359374997],[-111.09345703125001,75.25629882812498],[-113.71176757812499,75.06860351562503],[-113.85332031249996,75.259375],[-113.46708984374996,75.41611328125003],[-114.01650390624998,75.43427734375001],[-114.16845703124994,75.23950195312503],[-114.51381835937497,75.27548828125],[-114.45175781250002,75.08789062499997],[-115.02011718749999,74.97617187500003],[-115.41318359374995,75.11499023437497],[-115.72885742187496,74.968115234375],[-116.47607421874996,75.17177734375],[-117.56523437499997,75.23334960937504],[-117.25761718750002,75.45952148437502],[-116.07714843749996,75.49296874999999],[-115.14184570312501,75.67851562500005],[-116.42563476562498,75.58535156249997],[-117.16362304687496,75.64487304687503],[-116.80214843749995,75.77158203124998],[-114.99150390625002,75.896337890625],[-116.66455078124999,75.95756835937505],[-116.20986328125,76.19443359374998],[-114.77861328124999,76.17260742187497],[-115.82216796874997,76.27001953125003],[-114.99848632812503,76.4974609375],[-114.19394531249999,76.45146484375005],[-113.82348632812501,76.20683593750002],[-112.69760742187496,76.20170898437505],[-111.05268554687495,75.54853515625001],[-108.94716796875,75.54179687499999],[-108.94477539062495,75.69897460937503],[-109.8705078125,75.929052734375],[-109.48681640624999,76.14467773437497],[-110.31445312500001,76.369384765625],[-109.09824218749996,76.811865234375],[-108.46699218749997,76.73759765625007],[-108.29238281250001,76.05712890625]]],[[[-89.72646484374994,76.50742187499998],[-90.55625,76.73457031249998],[-90.13632812499995,76.83696289062505],[-89.69541015625,76.74116210937498],[-89.72646484374994,76.50742187499998]]],[[[-113.56069335937494,76.74326171874998],[-114.83525390624999,76.79467773437497],[-113.89165039062495,76.89487304687503],[-113.56069335937494,76.74326171874998]]],[[[-94.29497070312493,76.91245117187498],[-93.23002929687496,76.77026367187497],[-93.53457031250002,76.44770507812498],[-92.99536132812494,76.62041015624999],[-91.305029296875,76.68076171875003],[-90.54262695312494,76.495751953125],[-91.41508789062496,76.45585937500005],[-89.28452148437498,76.30161132812506],[-89.40659179687498,76.18916015624998],[-91.40732421874998,76.22006835937506],[-89.27758789062497,75.79506835937497],[-89.64604492187499,75.5650390625],[-88.91669921874998,75.45395507812503],[-88.64497070312495,75.65844726562503],[-88.201318359375,75.51201171875005],[-87.72973632812503,75.57563476562495],[-87.53911132812502,75.48486328125003],[-87.25693359374998,75.61772460937499],[-85.95146484374993,75.39501953125],[-85.97299804687498,75.5287109375],[-83.931982421875,75.81894531250003],[-83.23710937499993,75.75083007812503],[-82.153662109375,75.83105468750003],[-80.32197265624998,75.62910156250001],[-79.50908203125002,75.25981445312499],[-80.38198242187494,75.03417968750003],[-79.40141601562502,74.91762695312502],[-79.944482421875,74.83364257812505],[-80.34775390624998,74.90297851562505],[-80.26274414062499,74.58447265625],[-81.94018554687494,74.47270507812505],[-82.73579101562495,74.53027343749997],[-83.5220703125,74.90146484375],[-83.53188476562494,74.58569335937497],[-84.42553710937503,74.50810546875007],[-85.06142578125,74.60693359375003],[-85.133447265625,74.517431640625],[-85.44233398437495,74.6005859375],[-85.80800781249994,74.49897460937498],[-88.42304687499995,74.49414062499997],[-88.53496093749993,74.83173828125001],[-89.55869140624995,74.55473632812507],[-90.55327148437499,74.61274414062498],[-90.88022460937498,74.8177734375],[-91.13457031250002,74.64985351562498],[-91.54912109375002,74.65556640624999],[-92.3892578125,75.263330078125],[-92.18510742187499,75.84653320312498],[-93.09174804687495,76.35400390624997],[-95.27387695312498,76.26440429687503],[-96.03969726562494,76.48671875000002],[-95.65097656249998,76.58466796874998],[-96.88071289062495,76.73833007812505],[-96.40156249999995,76.79721679687503],[-96.75830078124997,76.97177734374998],[-95.84951171875002,77.06621093750005],[-94.29497070312493,76.91245117187498]]],[[[-115.55126953125001,77.36328125],[-116.32919921874996,77.137060546875],[-115.81005859374999,76.939111328125],[-116.25273437500002,76.90141601562505],[-115.94628906250003,76.71127929687503],[-116.99921874999995,76.531591796875],[-117.23359375000001,76.28154296875005],[-117.99296874999999,76.40581054687505],[-117.88081054687497,76.80507812500005],[-118.79140624999994,76.51298828125005],[-119.080712890625,76.12407226562505],[-119.58037109375,76.32651367187498],[-119.52612304687496,75.99721679687505],[-119.91289062499997,75.85883789062501],[-120.40888671874995,75.82563476562498],[-120.84838867187496,76.18266601562499],[-121.21347656249999,75.98369140625005],[-122.53305664062498,75.95092773437503],[-122.59272460937497,76.16206054687495],[-122.90278320312498,76.13471679687498],[-122.51938476562503,76.353173828125],[-121.56113281250003,76.453466796875],[-119.09018554687496,77.30507812500002],[-116.84355468749995,77.33955078124995],[-117.03974609374995,77.46513671875005],[-116.51132812500003,77.54760742187497],[-115.55126953125001,77.36328125]]],[[[-89.83325195312503,77.26762695312505],[-90.22827148437503,77.21245117187499],[-90.99321289062499,77.32949218750002],[-91.01904296875003,77.64389648437503],[-89.83896484375003,77.49140624999998],[-89.83325195312503,77.26762695312505]]],[[[-104.55815429687497,77.14174804687497],[-105.21508789062496,77.18208007812501],[-106.03559570312495,77.73984375000006],[-105.58789062499997,77.73598632812497],[-104.54223632812501,77.33774414062503],[-104.55815429687497,77.14174804687497]]],[[[-95.484375,77.79199218750003],[-93.30097656249995,77.73979492187505],[-93.54394531249997,77.466650390625],[-95.98706054687497,77.484130859375],[-96.19458007812497,77.70053710937503],[-95.484375,77.79199218750003]]],[[[-101.6935546875,77.69658203125005],[-102.37783203124995,77.728125],[-102.44770507812498,77.88061523437506],[-101.19321289062493,77.82978515624998],[-101.00205078124998,77.73510742187497],[-101.6935546875,77.69658203125005]]],[[[-113.83247070312497,77.75463867187506],[-114.28720703124998,77.72148437500005],[-114.98041992187498,77.91542968750002],[-114.33037109374997,78.07753906250002],[-113.83247070312497,77.75463867187506]]],[[[-110.45805664062496,78.10322265625001],[-109.62226562499995,78.07475585937499],[-110.865625,77.834130859375],[-110.15273437500002,77.76293945312506],[-110.19848632812501,77.52451171874998],[-112.37265625000002,77.36411132812498],[-113.16435546875002,77.5302734375],[-113.21518554687498,77.90351562500001],[-110.45805664062496,78.10322265625001]]],[[[-109.81596679687499,78.65039062500003],[-109.48447265624995,78.31640625],[-111.16918945312499,78.38627929687505],[-111.51748046874997,78.27470703125005],[-112.13125,78.366064453125],[-113.22304687499998,78.29790039062505],[-112.85585937499997,78.46684570312502],[-110.877587890625,78.73505859375004],[-109.81596679687499,78.65039062500003]]],[[[-96.20449218749994,78.53129882812499],[-94.91538085937495,78.39052734375002],[-95.32924804687497,78.22504882812495],[-94.93427734374998,78.07563476562498],[-96.98964843749994,77.80600585937503],[-97.65815429687498,78.090625],[-96.944677734375,78.15185546874997],[-98.04951171874995,78.325927734375],[-98.33261718749998,78.77353515625006],[-97.38232421875,78.78291015625001],[-96.20449218749994,78.53129882812499]]],[[[-103.42602539062499,79.315625],[-102.57617187499996,78.87939453125003],[-101.70366210937502,79.07890625000002],[-101.128125,78.80166015625002],[-100.43549804687503,78.8203125],[-99.60942382812495,78.58305664062507],[-99.16640625000002,77.85693359375003],[-100.27465820312503,77.83271484374995],[-101.07412109375001,78.19384765625],[-102.60698242187502,78.24892578125002],[-102.73134765624995,78.37104492187495],[-103.94658203124999,78.26000976562497],[-104.76357421874998,78.35166015625],[-104.90961914062498,78.55263671875],[-103.57050781250003,78.53984375000005],[-104.02084960937502,78.63491210937497],[-103.37158203125,78.73632812500003],[-104.18500976562498,78.78129882812505],[-104.15195312499999,78.989892578125],[-104.89550781249996,78.80815429687502],[-104.74677734375003,79.02709960937503],[-105.53564453124999,79.03251953125007],[-105.51455078124995,79.24248046875002],[-105.38769531249994,79.32358398437503],[-103.42602539062499,79.315625]]],[[[-98.79160156249995,79.98110351562505],[-98.94521484375,79.72407226562498],[-100.05683593749997,79.89824218750005],[-100.05327148437496,80.093359375],[-99.15322265625001,80.12421874999998],[-98.79160156249995,79.98110351562505]]],[[[-91.88554687499999,81.13286132812505],[-90.64301757812498,80.59370117187498],[-89.23559570312494,80.51064453125002],[-88.85732421874997,80.16621093750001],[-88.19990234374998,80.11147460937497],[-88.5248046875,80.41801757812507],[-87.675,80.37211914062505],[-87.92231445312501,80.09770507812499],[-86.97719726562502,79.89423828125001],[-87.29516601562494,79.58017578124998],[-86.33696289062496,79.63496093749995],[-86.00703124999998,79.47944335937498],[-85.6478515625,79.61142578125006],[-85.04213867187497,79.2845703125],[-86.95717773437502,78.97490234375005],[-87.61738281249995,78.67631835937505],[-88.04018554687494,78.99531250000004],[-87.98286132812498,78.53706054687501],[-88.74160156250002,78.58403320312499],[-88.82241210937497,78.18588867187498],[-90.037109375,78.60683593750002],[-89.52568359374999,78.15961914062495],[-90.29721679687495,78.32802734374997],[-90.614404296875,78.14985351562501],[-92.35126953125001,78.312890625],[-92.8482421875,78.46010742187497],[-91.86689453124998,78.54267578125001],[-93.26660156249997,78.60830078124997],[-93.63442382812502,78.75092773437498],[-93.15986328124998,78.77563476562503],[-94.11459960937498,78.92890625000001],[-92.54721679687495,79.28261718750002],[-91.29990234375003,79.372705078125],[-92.82192382812497,79.44990234375001],[-93.93315429687496,79.29072265624998],[-94.11030273437498,79.40156250000001],[-95.10317382812502,79.289892578125],[-95.66289062500002,79.52734374999997],[-94.40185546874997,79.736328125],[-95.73935546874995,79.66015625000003],[-96.58906249999995,79.91665039062497],[-96.77324218749999,80.13579101562502],[-94.64589843749994,80.04873046874997],[-94.26259765625002,80.19487304687499],[-95.40507812499996,80.13500976562506],[-96.39409179687493,80.31503906250003],[-95.549072265625,80.36660156249997],[-95.92695312499998,80.72065429687498],[-93.92792968749995,80.55917968750003],[-95.51474609375003,80.83813476562503],[-94.98051757812499,81.04965820312503],[-93.28671874999998,81.10029296874998],[-94.22011718749997,81.33076171875004],[-93.03466796874997,81.3462890625],[-91.88554687499999,81.13286132812505]]],[[[-69.4888671875,83.01679687499998],[-66.42255859374998,82.92685546875003],[-68.46933593749995,82.65336914062502],[-65.29902343749995,82.79960937500005],[-64.98388671874997,82.90229492187501],[-64.50400390625,82.77841796874998],[-63.641015624999966,82.81259765625003],[-63.246777343749926,82.4501953125],[-62.47519531249995,82.51958007812502],[-61.392480468749994,82.44189453125],[-61.61538085937502,82.18442382812503],[-64.43579101562497,81.74262695312501],[-66.62573242187497,81.61640624999995],[-68.68852539062493,81.29331054687503],[-64.78007812499993,81.49287109375001],[-69.55068359375,80.38325195312498],[-70.71259765625001,80.53959960937505],[-70.264892578125,80.23359374999998],[-72.05595703124996,80.12324218749995],[-70.56840820312493,80.09370117187498],[-71.387841796875,79.76176757812505],[-72.43652343750003,79.69438476562499],[-74.39448242187495,79.87407226562499],[-73.47246093749996,79.7564453125],[-73.36152343750001,79.50400390625],[-75.50341796875,79.41416015625],[-76.898828125,79.5123046875],[-75.60273437499998,79.23955078125005],[-74.48120117187503,79.22949218750006],[-74.64091796874996,79.03554687499997],[-78.58164062499998,79.075],[-77.88276367187498,78.9423828125],[-76.255859375,79.00683593749997],[-74.486328125,78.75009765624998],[-74.87861328124998,78.54482421875],[-76.41611328124995,78.51152343750005],[-75.19345703125,78.327734375],[-75.86596679687497,78.00981445312499],[-78.01259765624997,77.94604492187506],[-78.07617187500003,77.51904296875],[-78.70849609374997,77.34213867187503],[-80.57304687499996,77.31479492187506],[-81.65908203124997,77.52543945312499],[-81.3013671875,77.34404296875007],[-82.056787109375,77.29653320312497],[-81.75634765624997,77.20400390625005],[-79.49726562500001,77.19609375000005],[-78.97919921874998,76.89287109374999],[-78.28886718750002,76.97797851562501],[-77.98330078124994,76.75498046875006],[-78.284326171875,76.57124023437501],[-80.79970703124997,76.173583984375],[-80.97451171874994,76.470068359375],[-81.71738281250003,76.494970703125],[-82.52983398437499,76.723291015625],[-82.23315429687494,76.46582031250003],[-83.88569335937501,76.453125],[-84.22377929687497,76.67534179687499],[-84.27534179687498,76.35654296875006],[-85.141259765625,76.30458984375005],[-86.45371093750003,76.58486328125002],[-86.68022460937499,76.37661132812497],[-87.35419921874998,76.44804687500005],[-87.48979492187499,76.58583984374997],[-87.49755859374997,76.38627929687499],[-88.39599609374997,76.40527343750003],[-88.49584960937497,76.77285156249997],[-88.54580078125002,76.42089843750003],[-89.36962890624997,76.474462890625],[-89.49975585937503,76.82680664062502],[-88.39814453124995,77.10395507812501],[-86.81225585937497,77.18491210937498],[-87.68144531249996,77.43637695312503],[-88.01699218750002,77.78471679687505],[-86.75507812499998,77.86372070312498],[-85.58847656249998,77.46113281250004],[-84.73867187499997,77.36103515624998],[-83.72128906249998,77.41420898437497],[-82.7103515625,77.84951171875002],[-82.5953125,77.99213867187504],[-83.77939453125,77.53261718750002],[-85.28935546874996,77.55903320312498],[-85.54755859374998,77.92768554687495],[-84.61542968749998,78.19570312500002],[-84.22270507812499,78.176025390625],[-84.91035156249993,78.23969726562501],[-84.78320312499997,78.52758789062506],[-85.5859375,78.10957031249998],[-86.21777343750003,78.08120117187497],[-85.92006835937494,78.34287109374998],[-86.91323242187494,78.126806640625],[-87.5517578125,78.17661132812503],[-86.80791015624999,78.77436523437495],[-85.00375976562495,78.912255859375],[-83.27143554687501,78.77031250000002],[-81.75009765624995,78.97578124999995],[-82.43876953125002,78.903662109375],[-84.41201171875002,78.99658203125003],[-84.38359375000002,79.1185546875],[-83.57587890624995,79.05366210937501],[-86.42075195312498,79.84521484374997],[-86.49853515625003,80.25825195312501],[-83.72363281250003,80.22895507812501],[-81.68837890625,79.685791015625],[-80.47592773437498,79.60625],[-80.12446289062495,79.66948242187507],[-81.01015625000002,79.693115234375],[-82.98701171874995,80.32260742187498],[-76.86298828124995,80.86479492187505],[-78.71621093749994,80.95166015624997],[-76.88510742187503,81.43027343750006],[-81.00703125000001,80.6548828125],[-82.88432617187502,80.57753906249997],[-82.22236328124998,80.77231445312503],[-84.41782226562495,80.52675781250002],[-86.250341796875,80.56577148437506],[-86.60307617187499,80.66401367187498],[-85.63930664062494,80.92460937500007],[-83.288818359375,81.14794921875],[-85.780859375,81.03505859375],[-87.32988281250002,80.669775390625],[-88.00366210937497,80.675390625],[-89.16689453125,80.94130859375],[-86.47675781249993,81.03574218750006],[-84.94121093750002,81.28623046875],[-87.27509765624995,81.080810546875],[-89.623046875,81.032470703125],[-89.94731445312499,81.17265625000005],[-89.20869140624998,81.25009765625003],[-89.67368164062503,81.32861328125003],[-87.59702148437498,81.52583007812498],[-88.47905273437502,81.56464843749998],[-90.41630859374996,81.40537109375003],[-89.82167968749997,81.63486328124998],[-91.29238281250002,81.57124023437498],[-91.64755859374998,81.68383789062503],[-88.06318359375001,82.09648437500007],[-87.01821289062502,81.95874023437497],[-86.62680664062495,82.05102539062503],[-85.04482421874997,81.9828125],[-86.615625,82.21855468750007],[-84.89682617187503,82.44941406250001],[-82.63369140625002,82.07729492187497],[-82.53691406250002,82.24726562499995],[-79.465625,81.85112304687499],[-82.44755859374993,82.39501953125003],[-81.68115234375003,82.51865234375],[-82.11684570312497,82.62866210937503],[-80.8625,82.57153320312503],[-81.01015625000002,82.77905273437503],[-78.748779296875,82.67939453124998],[-80.15493164062497,82.91113281250003],[-77.61806640624997,82.89584960937503],[-76.009375,82.53515625],[-75.565625,82.60854492187502],[-77.12490234374994,83.00854492187497],[-74.41416015624995,83.01313476562501],[-72.65869140625,82.72163085937495],[-73.44189453124994,82.90483398437499],[-72.811669921875,83.08120117187502],[-71.98320312499996,83.10141601562498],[-70.94038085937495,82.90224609375],[-71.08481445312498,83.08266601562497],[-69.96992187499995,83.11611328125005],[-69.4888671875,83.01679687499998]]]]},"properties":{"name":"Canada","childNum":110}},{"geometry":{"type":"Polygon","coordinates":[[[9.527658197470123,47.27026989773668],[9.46249431093294,47.19858962254578],[9.46249431093294,47.09010747968864],[9.409458596647225,47.02019676540292],[9.579979133936737,47.05856388629306],[9.580273437500011,47.057373046875],[10.133496093750011,46.851513671875],[10.349414062500017,46.98476562499999],[10.414941406250023,46.964404296874996],[10.45458984375,46.8994140625],[10.452832031250011,46.86494140625],[10.406054687500017,46.73486328125],[10.39794921875,46.6650390625],[10.4306640625,46.550048828125],[10.195507812500011,46.62109375],[10.1375,46.61435546875],[10.087011718750006,46.599902343749996],[10.061230468750011,46.546777343749994],[10.038281250000011,46.483203125],[10.045605468750011,46.447900390624994],[10.081933593750023,46.420751953125],[10.109667968750017,46.362841796874996],[10.128320312500023,46.238232421875],[10.08056640625,46.227978515625],[10.041015625,46.238085937499996],[9.939257812500017,46.36181640625],[9.884472656250011,46.3677734375],[9.787792968750011,46.346044921875],[9.639453125000017,46.2958984375],[9.57958984375,46.29609375],[9.528710937500023,46.306201171874996],[9.427636718750023,46.482324218749994],[9.399316406250023,46.4806640625],[9.304394531250011,46.495556640625],[9.203417968750017,46.21923828125],[9.11874162946429,46.014892578125],[8.97551618303573,45.81677455357143],[8.74961495535715,46.02246372767857],[8.818554687500011,46.0771484375],[8.458398437500023,46.245898437499996],[8.370703125,46.445117187499996],[8.298535156250011,46.40341796875],[8.23193359375,46.341210937499994],[8.08154296875,46.256005859374994],[7.9931640625,46.015917968749996],[7.327929687500017,45.912353515625],[7.129003906250006,45.880419921874996],[7.055761718750006,45.90380859375],[7.02109375,45.92578125],[6.953710937500006,46.017138671874996],[6.897265625000017,46.0517578125],[6.772070312500006,46.16513671875],[6.758105468750017,46.415771484375],[6.578222656250006,46.437353515625],[6.428906250000011,46.430517578125],[6.321875,46.393701171874994],[6.234667968750017,46.3326171875],[6.199414062500011,46.19306640625],[6.086621093750011,46.147021484374996],[6.006640625000017,46.142333984375],[5.971484375000017,46.151220703125],[5.970019531250017,46.214697265625],[6.0361328125,46.238085937499996],[6.095898437500011,46.27939453125],[6.129687500000017,46.5669921875],[6.41015625,46.755419921874996],[6.429003906250017,46.832275390625],[6.45625,46.94833984375],[6.624804687500017,47.004345703125],[6.666894531250023,47.026513671874994],[6.688085937500006,47.058251953124994],[6.820703125000023,47.16318359375],[6.952050781250023,47.2671875],[6.978515625,47.302050781249996],[7.000585937500006,47.322509765625],[7.000585937500006,47.339453125],[6.900390625,47.39423828125],[6.968359375,47.45322265625],[7.136035156250017,47.48984375],[7.343164062500023,47.43310546875],[7.615625,47.592724609375],[8.454003906250023,47.59619140625],[8.559472656250023,47.6240234375],[8.570507812500011,47.63779296875],[8.567089843750011,47.651904296874996],[8.55234375,47.659130859375],[8.451757812500006,47.651806640625],[8.413281250000011,47.6626953125],[8.403417968750006,47.687792968749996],[8.435742187500011,47.731347656249994],[8.572656250000023,47.775634765625],[9.524023437500006,47.52421875],[9.625878906250023,47.467041015625],[9.527539062500011,47.270751953125],[9.527658197470123,47.27026989773668]]]},"properties":{"name":"Switzerland","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-67.28886718749999,-55.776855468749964],[-67.55996093749997,-55.72480468750002],[-67.39736328124997,-55.58515625],[-67.28886718749999,-55.776855468749964]]],[[[-67.07993164062498,-55.15380859374996],[-67.33969726562495,-55.292578124999984],[-67.4947265625,-55.177441406249976],[-68.07001953124995,-55.22109374999999],[-68.30136718750003,-54.98066406250003],[-67.245263671875,-54.977636718750034],[-67.07993164062498,-55.15380859374996]]],[[[-69.70297851562503,-54.91904296875],[-68.90078125000002,-55.01777343750004],[-68.45800781249997,-54.95966796875002],[-68.61328124999997,-55.155566406250045],[-68.28266601562495,-55.25517578125],[-68.04833984375,-55.6431640625],[-68.86704101562498,-55.45019531250003],[-68.89008789062498,-55.2412109375],[-69.19262695312497,-55.171875],[-69.35922851562498,-55.300683593749945],[-69.18085937499995,-55.47480468749998],[-69.41181640624995,-55.44423828124997],[-69.97978515625002,-55.14746093749999],[-69.88442382812494,-54.88203125000001],[-69.70297851562503,-54.91904296875]]],[[[-70.9916015625,-54.86796874999999],[-70.80483398437497,-54.96767578124996],[-70.41752929687493,-54.908886718749976],[-70.29785156249997,-55.11376953124997],[-70.47558593749994,-55.17705078124998],[-71.43720703125001,-54.88925781249997],[-70.9916015625,-54.86796874999999]]],[[[-71.390478515625,-54.03281250000002],[-71.02192382812495,-54.111816406250036],[-71.14326171874998,-54.374023437499986],[-71.473291015625,-54.23115234375001],[-71.94853515624999,-54.300878906250006],[-72.21044921874997,-54.04775390624995],[-71.996484375,-53.884863281249984],[-71.390478515625,-54.03281250000002]]],[[[-72.92324218749997,-53.481640625],[-72.88222656249997,-53.578320312499976],[-72.48227539062503,-53.58808593750001],[-72.20541992187503,-53.80742187500002],[-72.408544921875,-54.00380859374997],[-72.87099609375,-54.12656250000002],[-72.76376953125,-53.86484375],[-73.03945312499994,-53.83281250000004],[-73.08076171875001,-53.99804687499995],[-73.21064453125001,-53.98583984374995],[-73.31435546875,-53.72919921874998],[-73.845458984375,-53.54580078125001],[-73.44707031249993,-53.41005859374998],[-72.92324218749997,-53.481640625]]],[[[-74.38574218749994,-52.92236328125001],[-73.65400390624998,-53.06982421875003],[-73.13520507812498,-53.35390625],[-73.56728515625,-53.3068359375],[-73.86694335937494,-53.096875],[-74.27021484374995,-53.08154296875002],[-74.71201171874998,-52.74873046874998],[-74.38574218749994,-52.92236328125001]]],[[[-68.62993164062499,-52.65263671875004],[-68.65322265624994,-54.85361328124999],[-69.48627929687493,-54.85888671875],[-69.72343750000002,-54.71210937500003],[-70.49716796875,-54.80957031249999],[-71.83154296874997,-54.62617187500002],[-71.92773437500003,-54.52871093749997],[-71.80014648437498,-54.433984374999945],[-71.07993164062498,-54.444238281249994],[-70.79726562500002,-54.32724609374996],[-70.70112304687498,-54.48544921875004],[-70.31098632812498,-54.52851562500002],[-70.86308593749993,-54.11044921875003],[-70.86772460937499,-53.88417968750002],[-70.53129882812502,-53.627343750000016],[-70.37973632812495,-53.98671874999995],[-70.62983398437493,-54.005566406249976],[-70.53530273437494,-54.136132812500016],[-70.16899414062502,-54.37929687499999],[-69.74184570312494,-54.30585937500005],[-69.25317382812494,-54.557421875000045],[-69.04433593749997,-54.40673828124999],[-69.98813476562503,-54.10908203125001],[-70.15112304687503,-53.88808593750002],[-70.09111328124996,-53.72177734374998],[-69.35595703125003,-53.41630859375001],[-69.63701171874999,-53.33408203125004],[-70.32929687499998,-53.37763671875003],[-70.44335937499994,-53.085546875000034],[-70.130615234375,-52.942773437499994],[-70.38012695312494,-52.75195312500002],[-69.93544921874997,-52.82109374999998],[-69.41406249999997,-52.48623046874997],[-69.16704101562499,-52.66757812499997],[-68.78979492187497,-52.576757812500034],[-68.62993164062499,-52.65263671875004]]],[[[-74.82294921874993,-51.63017578125001],[-74.53681640624998,-51.96513671875004],[-74.69448242187497,-52.27919921874999],[-74.85180664062494,-52.27070312500003],[-75.10537109375,-51.78886718750001],[-74.82294921874993,-51.63017578125001]]],[[[-74.55864257812499,-51.27705078125001],[-74.62036132812497,-51.395703125000026],[-75.04736328125,-51.39833984375003],[-75.28911132812496,-51.625390625000016],[-75.15366210937498,-51.278808593750014],[-74.73666992187503,-51.20761718749999],[-74.55864257812499,-51.27705078125001]]],[[[-75.302001953125,-50.67998046875005],[-75.411376953125,-50.76435546875001],[-75.42763671875002,-50.48056640625002],[-75.11533203124998,-50.510449218749976],[-75.302001953125,-50.67998046875005]]],[[[-75.05478515625,-50.29609375],[-75.44912109374997,-50.34335937500004],[-75.32666015624997,-50.01181640625],[-74.8759765625,-50.10996093750001],[-75.05478515625,-50.29609375]]],[[[-75.106689453125,-48.83652343750001],[-75.38994140624999,-49.15917968750002],[-75.64116210937499,-49.195410156250034],[-75.48764648437498,-49.082421875000016],[-75.58310546874998,-48.85888671874995],[-75.106689453125,-48.83652343750001]]],[[[-74.47617187499998,-49.14785156250002],[-74.59472656249997,-50.00664062500001],[-74.76298828124996,-50.01142578125001],[-74.88041992187502,-49.72587890625001],[-74.72382812499998,-49.42382812500003],[-74.960107421875,-49.533007812499974],[-75.06601562499998,-49.85234375000002],[-75.54980468749994,-49.79130859375002],[-75.30585937499998,-49.49404296875003],[-75.46748046874995,-49.35888671875003],[-75.08603515624998,-49.27021484375],[-75.21015624999995,-49.14804687499998],[-74.94921875,-48.960156249999976],[-74.89624023437503,-48.73320312500002],[-74.54609374999993,-48.76689453125004],[-74.47617187499998,-49.14785156250002]]],[[[-75.51025390624997,-48.76347656250005],[-75.65092773437496,-48.58632812500002],[-75.57148437499993,-48.095898437500026],[-75.39140625000002,-48.01972656249997],[-75.15849609374999,-48.62265624999996],[-75.51025390624997,-48.76347656250005]]],[[[-74.56728515625,-48.591992187500026],[-74.92304687499998,-48.62646484375003],[-75.21289062499997,-48.141699218750034],[-75.19829101562502,-47.974609375000014],[-74.895654296875,-47.839355468749986],[-74.56728515625,-48.591992187500026]]],[[[-75.11220703124997,-47.8376953125],[-75.26103515625002,-47.76386718749998],[-74.92646484374998,-47.72314453125003],[-75.11220703124997,-47.8376953125]]],[[[-74.31289062500002,-45.69150390625002],[-74.46552734374995,-45.757226562499994],[-74.68984375,-45.66259765625],[-74.310546875,-45.17265625000002],[-74.31289062500002,-45.69150390625002]]],[[[-73.63217773437498,-44.82148437499997],[-73.81845703125,-44.65214843750002],[-73.72392578124993,-44.544238281249974],[-73.63217773437498,-44.82148437499997]]],[[[-72.98613281249999,-44.780078124999974],[-73.22846679687498,-44.85996093749999],[-73.39707031249998,-44.77431640624995],[-73.44506835937497,-44.641015624999966],[-73.20771484374993,-44.33496093749997],[-72.7763671875,-44.50859374999999],[-72.98613281249999,-44.780078124999974]]],[[[-73.73535156249997,-44.39453125000003],[-74.00205078125003,-44.59091796874998],[-73.728173828125,-45.195898437500034],[-74.016259765625,-45.344921875000026],[-74.61777343749998,-44.64794921874996],[-74.50180664062498,-44.47353515624995],[-74.09721679687496,-44.38935546875004],[-73.99492187499999,-44.140234375],[-73.70322265624998,-44.27412109375001],[-73.73535156249997,-44.39453125000003]]],[[[-73.81064453125003,-43.827246093750006],[-73.95566406249998,-43.921972656250034],[-74.14296874999997,-43.872167968750006],[-73.81064453125003,-43.827246093750006]]],[[[-73.77338867187498,-43.3458984375],[-74.114404296875,-43.35791015624996],[-74.387353515625,-43.231640625],[-74.03666992187496,-41.79550781249998],[-73.52783203124997,-41.89628906249999],[-73.42290039062499,-42.192871093750014],[-73.47080078124998,-42.46630859375004],[-73.78925781249993,-42.58574218750003],[-73.43632812499996,-42.9365234375],[-73.74965820312494,-43.15908203124995],[-73.77338867187498,-43.3458984375]]],[[[-78.80415039062501,-33.646484374999986],[-78.98945312499993,-33.66171874999998],[-78.87744140625003,-33.57519531250003],[-78.80415039062501,-33.646484374999986]]],[[[-109.27998046874994,-27.14042968749996],[-109.434130859375,-27.171289062500023],[-109.39047851562499,-27.068359375000014],[-109.27998046874994,-27.14042968749996]]],[[[-67.19487304687493,-22.821679687500037],[-67.00878906249994,-23.00136718750005],[-67.35620117187503,-24.033789062499963],[-68.25029296875002,-24.391992187500023],[-68.56201171875,-24.74736328125003],[-68.38422851562495,-25.091894531249977],[-68.59208984375002,-25.420019531250034],[-68.41450195312498,-26.153710937500023],[-68.59160156249999,-26.47041015624997],[-68.31865234374999,-26.973242187500006],[-68.59208984375002,-27.140039062499966],[-68.84633789062494,-27.153710937499994],[-69.17441406249998,-27.924707031250037],[-69.65693359374995,-28.413574218749986],[-69.82788085937497,-29.10322265624997],[-70.02680664062501,-29.324023437500017],[-69.95996093749997,-30.078320312500026],[-69.84428710937493,-30.175],[-69.95634765624996,-30.35820312500003],[-70.15322265625,-30.360937499999963],[-70.30908203124994,-31.02265625000004],[-70.51958007812493,-31.1484375],[-70.585205078125,-31.569433593749963],[-70.25439453125,-31.957714843750026],[-70.36376953125,-32.08349609374997],[-70.02197265625,-32.88457031250002],[-70.08486328125002,-33.20175781249998],[-69.81962890624999,-33.28378906249999],[-69.85244140625,-34.224316406250026],[-70.05205078124999,-34.30078124999997],[-70.39316406250003,-35.146875],[-70.55517578125,-35.246875],[-70.41572265625001,-35.52304687500002],[-70.40478515625,-36.06171874999998],[-71.05551757812498,-36.52373046874996],[-71.19218750000002,-36.84365234375004],[-71.16757812499998,-37.76230468749996],[-70.858642578125,-38.60449218750003],[-71.40156249999995,-38.93505859374996],[-71.53945312499997,-39.60244140624995],[-71.71992187499995,-39.63525390624997],[-71.65976562499998,-40.02080078125],[-71.81831054687493,-40.17666015624995],[-71.70898437499997,-40.381738281249994],[-71.93212890624994,-40.69169921874999],[-71.91127929687497,-41.650390624999986],[-71.75,-42.04677734375001],[-72.10820312499993,-42.25185546874995],[-72.14643554687498,-42.990039062499974],[-71.750634765625,-43.237304687499986],[-71.90498046875001,-43.34755859374998],[-71.68007812500002,-43.92958984374998],[-71.82001953124993,-44.38310546875],[-71.21259765624998,-44.44121093750003],[-71.15971679687496,-44.56025390625004],[-71.26113281250002,-44.763085937499966],[-72.06372070312503,-44.771875],[-72.04169921874998,-44.90419921875004],[-71.5962890625,-44.97919921875004],[-71.34931640624995,-45.33193359374995],[-71.74619140624998,-45.57890625],[-71.63154296874998,-45.95371093749998],[-71.87568359374998,-46.160546875],[-71.69965820312501,-46.6513671875],[-71.94023437499999,-46.83125],[-71.90498046875001,-47.201660156250014],[-72.34594726562497,-47.49267578124997],[-72.517919921875,-47.87636718749998],[-72.32832031250001,-48.11005859374998],[-72.35473632812497,-48.36582031250005],[-72.582861328125,-48.47539062499999],[-72.65126953125,-48.84160156249998],[-73.03364257812501,-49.014355468750004],[-73.13525390625,-49.30068359374999],[-73.46157226562497,-49.31386718750001],[-73.55419921875,-49.463867187500014],[-73.50126953124996,-50.125292968750024],[-73.15292968749998,-50.73828125000003],[-72.50981445312496,-50.607519531250034],[-72.34023437499997,-50.68183593749999],[-72.40766601562501,-51.54082031250002],[-71.91865234374995,-51.98955078125004],[-69.96025390624993,-52.00820312500002],[-68.443359375,-52.35664062500004],[-69.24101562499996,-52.20546874999997],[-69.62031249999995,-52.46474609374995],[-70.79511718749995,-52.76875],[-70.99584960937497,-53.77929687499997],[-71.29775390625002,-53.88339843750004],[-72.1744140625,-53.632324218749964],[-72.41289062500002,-53.35019531250004],[-71.94169921874993,-53.23408203125001],[-71.89169921874998,-53.523535156250006],[-71.79145507812498,-53.48457031249997],[-71.74052734374999,-53.232617187499976],[-71.28896484375002,-53.03369140624995],[-71.22714843750003,-52.810644531249984],[-71.38774414062496,-52.76425781250004],[-72.27802734374998,-53.13232421874997],[-72.54892578125,-53.4607421875],[-73.05273437499997,-53.24345703125005],[-72.72768554687502,-52.7623046875],[-72.453466796875,-52.814453124999964],[-72.11757812499997,-52.65],[-71.51127929687502,-52.60537109375],[-72.22568359374998,-52.52099609374995],[-72.43769531250001,-52.62578124999998],[-72.71210937499995,-52.53554687499999],[-73.12246093749997,-53.073925781249976],[-73.64521484374998,-52.83701171875003],[-73.2408203125,-52.707128906250034],[-73.12392578125,-52.487988281249976],[-73.24414062499997,-52.62402343749998],[-73.58569335937503,-52.68574218750003],[-74.01445312499999,-52.63935546875],[-74.26494140624993,-52.1048828125],[-73.83447265625,-52.23398437500001],[-73.68432617187494,-52.07773437499998],[-73.26044921874993,-52.157812500000034],[-72.79501953124998,-51.94951171875005],[-72.57084960937496,-52.200097656249945],[-72.67705078125002,-52.38466796874998],[-72.52333984374997,-52.255468750000034],[-72.62460937499998,-51.94648437499997],[-72.48964843750002,-51.76367187500003],[-72.76123046875,-51.57324218749996],[-73.16875,-51.45390624999998],[-72.60004882812495,-51.79912109374997],[-73.51816406250003,-52.04101562499996],[-73.75263671874993,-51.795507812500034],[-74.19667968749997,-51.68056640624997],[-73.92978515624995,-51.61787109374999],[-73.93950195312499,-51.26630859375005],[-74.81474609374996,-51.06289062499999],[-75.09467773437495,-50.68125],[-74.68574218749995,-50.662011718749945],[-74.77587890625003,-50.46992187499998],[-74.64448242187498,-50.360937499999984],[-74.365576171875,-50.487890625],[-74.13940429687503,-50.81777343749997],[-73.80654296875,-50.93837890625003],[-73.654443359375,-50.49267578125],[-73.97802734375003,-50.827050781249994],[-74.18559570312493,-50.485351562500014],[-73.95034179687497,-50.510546875],[-74.62958984374998,-50.19404296875],[-74.333740234375,-49.97460937499997],[-73.95859374999998,-49.994726562499984],[-74.32392578124995,-49.783398437500004],[-74.29082031249996,-49.604101562499984],[-73.83637695312493,-49.609375],[-74.09443359374993,-49.42968749999998],[-73.93496093749994,-49.02089843750001],[-74.2212890625,-49.500585937500034],[-74.36655273437503,-49.40048828124998],[-74.34101562499998,-48.59570312499998],[-74.00908203124996,-48.475],[-74.47441406249999,-48.46396484374996],[-74.58466796874998,-47.999023437500014],[-73.39106445312498,-48.14589843750001],[-73.60991210937499,-47.993945312500045],[-73.71586914062499,-47.65546875000001],[-73.94086914062498,-47.92939453125004],[-74.22705078124994,-47.96894531250001],[-74.654931640625,-47.702246093750034],[-74.5337890625,-47.567675781249974],[-74.24296874999999,-47.67929687499998],[-74.13408203125002,-47.590820312499986],[-74.48266601562497,-47.43046875],[-74.15839843749998,-47.18251953125002],[-74.31357421874998,-46.78818359374998],[-74.45419921875003,-46.76679687499997],[-74.51225585937496,-46.88515625000002],[-75.00595703125,-46.74111328124998],[-74.98417968750002,-46.51210937499995],[-75.54033203124999,-46.69873046874996],[-75.43037109374995,-46.93457031249996],[-75.70639648437498,-46.70527343749997],[-74.924462890625,-46.159667968750014],[-75.06669921874993,-45.874902343749994],[-74.15786132812497,-45.7671875],[-74.122705078125,-45.49619140625002],[-73.95717773437494,-45.40439453124998],[-73.825,-45.446875],[-74.01992187500002,-46.055859375],[-74.39296875,-46.21738281250005],[-73.96757812500002,-46.15410156250003],[-73.87871093749993,-45.846875],[-73.73525390624994,-45.81171875],[-73.70815429687502,-46.070312500000014],[-73.94863281249997,-46.533105468749966],[-73.845361328125,-46.56601562500002],[-73.59184570312493,-45.89912109375004],[-73.73076171874999,-45.47998046875],[-73.26621093749995,-45.346191406250014],[-72.933837890625,-45.45234374999997],[-73.44497070312497,-45.23818359374995],[-73.36245117187502,-44.97822265625001],[-72.73896484375001,-44.73417968750003],[-72.680078125,-44.59394531249997],[-72.66386718749999,-44.43642578124995],[-73.26508789062498,-44.16865234375001],[-73.22446289062498,-43.89794921875003],[-73.06879882812495,-43.86201171874998],[-72.99658203125,-43.63154296875001],[-73.07597656250002,-43.323632812499994],[-72.75800781249998,-43.039453125],[-72.84804687500002,-42.66914062499997],[-72.77392578125003,-42.505175781250045],[-72.63183593750003,-42.509667968749994],[-72.77324218749996,-42.257714843749994],[-72.63105468749995,-42.199804687500006],[-72.412353515625,-42.388183593750014],[-72.49941406249997,-41.98085937499999],[-72.82407226562503,-41.90878906249996],[-72.36040039062499,-41.64912109375],[-72.31826171875,-41.49902343749997],[-72.54238281250002,-41.690625],[-72.95283203124995,-41.51474609374998],[-73.24179687499995,-41.78085937500002],[-73.62402343750003,-41.77363281249997],[-73.73515625000002,-41.74248046875002],[-73.62392578125,-41.581347656250045],[-73.81074218749995,-41.51748046875001],[-73.96586914062493,-41.118261718750034],[-73.67099609375,-39.96318359374999],[-73.41040039062503,-39.78916015624998],[-73.22646484375002,-39.22441406250003],[-73.52021484375001,-38.509375],[-73.46479492187498,-38.04033203125003],[-73.66181640624998,-37.69853515625003],[-73.66240234375002,-37.341015625000026],[-73.60166015624998,-37.18847656250003],[-73.21596679687502,-37.16689453124998],[-73.11806640624997,-36.68837890625002],[-72.58735351562493,-35.759667968749994],[-72.62392578125002,-35.5857421875],[-72.22377929687494,-35.096191406250014],[-72.00283203124997,-34.16533203125],[-71.66435546875002,-33.65263671875],[-71.74296875,-33.09511718750001],[-71.45224609374998,-32.65957031250001],[-71.70893554687495,-30.62802734375002],[-71.66948242187499,-30.33037109374996],[-71.40039062499997,-30.142968749999966],[-71.31572265624996,-29.649707031250017],[-71.51923828124993,-28.926464843750026],[-71.30673828124998,-28.672460937499963],[-71.08652343749998,-27.814453124999957],[-70.92578125,-27.588671874999974],[-70.64658203124998,-26.329394531250017],[-70.71372070312498,-25.78417968749997],[-70.44536132812502,-25.17265624999999],[-70.57412109374994,-24.644335937500003],[-70.39233398437494,-23.565917968749957],[-70.59335937499995,-23.255468750000034],[-70.56318359374995,-23.057031250000023],[-70.33168945312494,-22.848632812500014],[-70.08002929687501,-21.356835937500037],[-70.19702148437494,-20.725390625],[-70.15742187499995,-19.70585937500003],[-70.41826171874999,-18.345605468750023],[-69.92636718749998,-18.206054687500014],[-69.80258789062498,-17.990234375000014],[-69.85209960937493,-17.70380859375001],[-69.68476562499995,-17.649804687500023],[-69.58642578125,-17.57324218749997],[-69.51093749999998,-17.50605468749997],[-69.31337890624997,-17.943164062500017],[-69.28232421875003,-17.96484375],[-69.09394531249993,-18.05048828125004],[-69.14545898437495,-18.14404296875],[-69.09228515624994,-18.28242187500004],[-69.02680664062493,-18.65625],[-68.97885742187503,-18.81298828125003],[-68.96831054687502,-18.967968749999983],[-68.85795898437499,-19.09335937500005],[-68.62055664062495,-19.29667968749999],[-68.54785156249997,-19.341113281249974],[-68.49199218749996,-19.381933593750034],[-68.47016601562495,-19.409960937499974],[-68.46289062499997,-19.43281250000001],[-68.57529296874998,-19.56015625000002],[-68.69829101562499,-19.721093750000037],[-68.69619140625,-19.74072265625003],[-68.57827148437494,-19.856542968750006],[-68.559375,-19.902343750000014],[-68.56069335937502,-19.96708984374996],[-68.75932617187499,-20.115527343750003],[-68.74516601562493,-20.45859375],[-68.48432617187498,-20.628417968749957],[-68.55825195312497,-20.90195312499999],[-68.197021484375,-21.30029296874997],[-68.18642578124997,-21.618554687499966],[-67.88173828124997,-22.493359375000026],[-67.87944335937496,-22.822949218750026],[-67.57993164062495,-22.89169921874999],[-67.36225585937493,-22.85517578125001],[-67.19487304687493,-22.821679687500037]]]]},"properties":{"name":"Chile","childNum":26}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[110.88876953125006,19.99194335937497],[111.01367187500003,19.65546875000001],[110.64091796875002,19.291210937499955],[110.45126953125012,18.747949218750023],[110.06738281249997,18.447558593750045],[109.51933593750007,18.21826171875003],[108.7015625,18.535253906250034],[108.66552734375003,19.304101562499994],[109.27666015625002,19.761132812500023],[109.17744140625004,19.768457031250023],[109.26347656250007,19.882666015625006],[110.1715820312501,20.053710937500057],[110.58818359375002,19.976367187500017],[110.6517578125,20.137744140625017],[110.88876953125006,19.99194335937497]]],[[[110.38515625000005,21.093164062499966],[110.52158203125006,21.083105468750063],[110.50390625000003,20.96772460937501],[110.28095703125004,21.001171874999983],[110.38515625000005,21.093164062499966]]],[[[112.64375,21.63964843750003],[112.525,21.62304687500003],[112.64765625000004,21.710253906250017],[112.64375,21.63964843750003]]],[[[112.79023437500004,21.601855468750045],[112.78203125000007,21.772265625000045],[112.86259765625002,21.75263671875004],[112.79023437500004,21.601855468750045]]],[[[118.1830078125,24.496289062499983],[118.0905273437501,24.446142578125063],[118.10380859375002,24.552343750000034],[118.1830078125,24.496289062499983]]],[[[119.82089843750006,25.45698242187504],[119.70029296875012,25.432714843750063],[119.72255859375005,25.638818359375023],[119.83837890625003,25.591064453125],[119.82089843750006,25.45698242187504]]],[[[121.2513671875,28.086425781250057],[121.13154296875004,28.062597656250006],[121.20546875,28.204394531250017],[121.2513671875,28.086425781250057]]],[[[122.29589843750003,29.96342773437499],[122.02402343750012,30.01333007812505],[121.96943359375004,30.143115234375017],[122.28447265625007,30.068017578124994],[122.29589843750003,29.96342773437499]]],[[[121.86269531250005,31.492285156249977],[121.519921875,31.549609375000017],[121.2111328125001,31.80537109375001],[121.86269531250005,31.492285156249977]]],[[[130.52695312500012,42.535400390625],[130.24667968750012,42.744824218749955],[130.24033203125006,42.891796874999955],[129.89824218750002,42.998144531250034],[129.69785156250012,42.448144531249994],[129.3136718750001,42.41357421874997],[128.92343750000006,42.038232421874966],[128.04521484375007,41.9875],[128.28925781250004,41.60742187500006],[128.14941406249997,41.38774414062496],[127.17968750000003,41.531347656250006],[126.95478515625004,41.76948242187501],[126.74306640625,41.724853515625],[125.98906250000002,40.904638671875034],[124.8893554687501,40.459814453125006],[124.36210937500002,40.004052734374994],[124.10576171875002,39.84101562499998],[123.65087890625003,39.881591796875],[122.8400390625001,39.600830078125],[121.98232421875,39.05317382812498],[121.67724609374997,39.00341796875006],[121.64990234375003,38.865087890625034],[121.16357421874997,38.73164062500001],[121.10673828125002,38.920800781249994],[121.6798828125001,39.10869140625002],[121.62763671875004,39.22016601562498],[121.81845703125006,39.38652343750002],[121.27548828125006,39.38476562500003],[121.26748046875,39.544677734375],[121.51757812499997,39.638964843750045],[121.51738281250002,39.84482421875006],[121.8009765625001,39.950537109375006],[122.27500000000012,40.541845703125034],[121.83486328125005,40.97426757812502],[121.72929687500002,40.84614257812504],[121.1745117187501,40.901269531249994],[120.47910156250006,40.23095703125003],[119.39111328125003,39.75249023437499],[118.976953125,39.182568359374955],[118.29785156249997,39.067089843749955],[118.04091796875,39.22675781249998],[117.86572265625003,39.191259765625034],[117.61669921875003,38.852880859375034],[117.5578125000001,38.625146484374994],[117.76669921875012,38.311669921874994],[118.01494140625007,38.18339843749996],[118.94003906250006,38.04277343750002],[119.08916015625007,37.70073242187496],[118.95263671875003,37.33115234374998],[119.28740234375002,37.138281250000034],[119.76054687500007,37.15507812499999],[120.31152343750003,37.62270507812505],[120.2572265625,37.67900390624996],[120.75,37.83393554687501],[121.64023437500012,37.46035156250002],[122.05664062500003,37.528906250000034],[122.66699218750003,37.40283203125003],[122.4466796875,37.06811523437503],[122.51972656250004,36.94682617187502],[122.34091796875012,36.83222656250004],[121.93271484375006,36.95947265625003],[121.05380859375006,36.61137695312499],[120.81083984375007,36.6328125],[120.89580078125007,36.44414062500002],[120.71152343750006,36.41328125000004],[120.6378906250001,36.129931640625045],[120.39306640625003,36.053857421874994],[120.32773437500006,36.228173828124994],[120.18330078125004,36.20244140624999],[120.094140625,36.11889648437503],[120.28476562500006,35.98442382812499],[119.42968749999997,35.301416015624994],[119.16533203125002,34.84882812499998],[119.20097656250002,34.748437499999966],[120.26669921875006,34.274023437500034],[120.87109374999997,33.016503906249994],[120.8532226562501,32.66137695312503],[121.34169921875005,32.42504882812503],[121.40390625000006,32.20625],[121.85634765625,31.816455078125045],[121.86630859375006,31.703564453124955],[121.68085937500004,31.71215820312503],[121.351953125,31.85878906250005],[120.97353515625,31.86938476562497],[120.52011718750006,32.10585937500002],[120.03593750000002,31.93627929687503],[120.7155273437501,31.983740234375006],[120.7877929687501,31.81977539062501],[121.66064453124997,31.319726562499994],[121.87792968750003,30.91699218750003],[121.41894531249997,30.789794921875057],[120.8214843750001,30.354638671875023],[120.44980468750006,30.38784179687505],[120.19462890625002,30.241308593750034],[120.49453125,30.303076171875006],[120.63339843750006,30.133154296875034],[121.25800781250004,30.30410156250005],[121.67792968750004,29.979101562500006],[122.08291015625005,29.870361328125057],[121.50625,29.484570312499955],[121.94121093750002,29.605908203124983],[121.91777343750007,29.13500976562497],[121.71748046875004,29.25634765625],[121.48710937500007,29.193164062500017],[121.67968749999997,28.953125],[121.54003906250003,28.931884765625],[121.6625,28.851416015625034],[121.47519531250006,28.64140625],[121.60996093750006,28.29213867187505],[121.27226562500002,28.222119140624983],[121.14570312500004,28.32666015624997],[120.95859375000006,28.037011718750023],[120.74765625000006,28.00996093750001],[120.83300781249997,27.891455078125034],[120.58750000000012,27.580761718749983],[120.60751953125012,27.41240234374996],[120.2787109375,27.097070312500023],[120.08671875000007,26.67158203125004],[119.88222656250005,26.610449218750006],[119.82421874999997,26.84638671875001],[119.71044921874997,26.728662109375023],[119.58818359375002,26.784960937500045],[119.8810546875001,26.33417968750004],[119.46308593750004,26.05468750000003],[119.13945312500007,26.12177734375001],[119.33203124999997,25.94873046875003],[119.61875000000012,26.003564453124994],[119.53945312500005,25.59125976562504],[119.6224609375,25.391162109375017],[119.180078125,25.449804687499977],[119.285546875,25.232226562500074],[118.97753906249997,25.209277343750017],[118.90908203125005,24.92890625000001],[118.63691406250004,24.835546874999977],[118.65703125000002,24.621435546874977],[118.0871093750001,24.627001953125045],[118.00595703125006,24.48198242187499],[117.84267578125005,24.47431640625004],[118.0560546875,24.24609374999997],[117.62822265625002,23.836718750000074],[117.46640625000012,23.84057617187497],[117.36767578124997,23.58862304687497],[117.29082031250007,23.71435546875],[117.08251953124997,23.578759765625023],[116.91064453124997,23.646679687499983],[116.86093750000006,23.453076171874983],[116.62939453124997,23.353857421875034],[116.69882812500006,23.277783203124983],[116.53828125000004,23.17968749999997],[116.47070312499997,22.945898437500034],[116.25185546875005,22.981347656249994],[115.85214843750006,22.801562500000045],[115.64042968750002,22.853417968750023],[115.49833984375002,22.718847656250063],[115.19580078125003,22.81728515625005],[114.85380859375007,22.616796875000063],[114.65166015625002,22.755273437500023],[114.55419921874997,22.52890625],[114.26601562500005,22.540966796874983],[114.01542968750007,22.51191406250001],[113.61962890624997,22.861425781249977],[113.6205078125,23.12749023437499],[113.51972656250004,23.102099609375074],[113.33105468749997,22.912011718749966],[113.55302734375002,22.594042968750045],[113.54912109375002,22.225195312500034],[113.14902343750012,22.075],[113.08876953125,22.207958984374983],[112.95390625000007,21.907324218750034],[112.80859374999997,21.944628906250074],[112.58632812500005,21.77685546875],[112.35966796875007,21.97802734375003],[112.30498046875002,21.74169921875003],[111.94394531250012,21.84965820312499],[111.60273437500004,21.55908203125003],[111.01689453125007,21.51171874999997],[110.56718750000002,21.21406250000001],[110.41093750000007,21.33813476562497],[110.15400390625004,20.944628906250017],[110.36542968750004,20.837597656249955],[110.31308593750012,20.67167968749999],[110.51152343750007,20.51826171875001],[110.34472656249997,20.29482421875005],[109.88251953125004,20.364062500000045],[109.96835937500006,20.448144531250023],[109.66259765625003,20.91689453125005],[109.68125000000012,21.13164062499999],[109.93076171875012,21.480566406250034],[109.6869140625,21.52460937500004],[109.56640624999997,21.690576171874994],[109.54404296875012,21.537939453125006],[109.14863281250004,21.425537109375],[109.1017578125001,21.59047851562505],[108.77167968750004,21.63046875],[108.59375,21.901025390624994],[108.47988281250005,21.904638671875006],[108.50214843750004,21.633447265624994],[108.32480468750006,21.693505859374994],[108.24628906250004,21.55839843749999],[107.97265624999997,21.507958984375023],[107.75927734374997,21.655029296875057],[107.35117187500012,21.60888671874997],[106.97099609375002,21.923925781250034],[106.66357421875003,21.97890625000005],[106.55039062500006,22.501367187499994],[106.78027343749997,22.778906250000034],[106.54179687500007,22.908349609375023],[106.2790039062501,22.857470703125045],[106.14843749999997,22.970068359375006],[105.8429687500001,22.922802734374955],[105.27539062500003,23.34521484375003],[104.86474609375003,23.136376953125023],[104.68730468750002,22.822216796874983],[104.37177734375004,22.704052734374983],[104.14306640624997,22.800146484375006],[103.94150390625006,22.540087890625045],[103.62021484375006,22.782031250000045],[103.49296875000007,22.587988281250034],[103.32666015625003,22.769775390625057],[102.98193359374997,22.4482421875],[102.47089843750004,22.75092773437501],[102.40644531250004,22.70800781249997],[102.2370117187501,22.466015624999983],[102.1759765625001,22.414648437500006],[102.12744140624997,22.379199218750045],[101.84179687500003,22.38847656249999],[101.75996093750004,22.490332031250034],[101.73876953124997,22.495263671874994],[101.70751953125003,22.486572265625],[101.67148437500006,22.462304687500023],[101.64619140625004,22.405419921874966],[101.61992187500002,22.32744140624999],[101.56787109374997,22.27636718749997],[101.52451171875006,22.25366210937497],[101.7365234375001,21.826513671874977],[101.74394531250007,21.77797851562505],[101.74726562500004,21.605761718750045],[101.72294921875007,21.31494140625003],[101.80058593750007,21.212597656249983],[101.78349609375007,21.204150390625017],[101.728125,21.156396484374994],[101.7047851562501,21.15014648437503],[101.54238281250005,21.23427734375005],[101.2814453125001,21.184130859375045],[101.24785156250007,21.197314453125045],[101.22441406250002,21.223730468750034],[101.21181640625,21.278222656250023],[101.2199218750001,21.34243164062505],[101.17539062500006,21.407519531250074],[101.19667968750005,21.522070312500063],[101.1388671875001,21.567480468749977],[101.07978515625004,21.75585937499997],[100.60458984375012,21.471777343750006],[100.14765625000004,21.480517578125017],[99.94072265625007,21.75874023437504],[99.9176757812501,22.02802734375001],[99.19296875000006,22.12597656249997],[99.50712890625002,22.959130859374994],[99.41806640625006,23.069238281250023],[98.86376953125003,23.191259765625034],[98.8322265625001,23.624365234374977],[98.67675781250003,23.905078125000045],[98.83505859375006,24.121191406250034],[98.2125,24.110644531250017],[97.56455078125012,23.911035156250023],[97.7082031250001,24.228759765625],[97.53144531250004,24.49169921875003],[97.58330078125002,24.77480468750005],[97.73789062500006,24.869873046875057],[97.8195312500001,25.251855468749994],[98.01074218749997,25.292529296875017],[98.14287109375007,25.571093750000017],[98.33378906250007,25.586767578125006],[98.65625,25.86357421874999],[98.56406250000006,26.072412109374994],[98.68554687499997,26.189355468750023],[98.7384765625001,26.785742187500006],[98.65117187500007,27.572460937499983],[98.4525390625,27.6572265625],[98.29882812499997,27.550097656250045],[98.06162109375012,28.185888671874977],[97.59921875000006,28.51704101562504],[97.53789062500002,28.510205078124983],[97.43144531250002,28.353906250000023],[97.35644531249997,28.254492187500006],[97.32158929493812,28.217097107438057],[97.3027336276825,28.08710519614969],[97.34382779482424,27.982305259167095],[97.04929369561631,27.76000444316393],[96.96494598325154,27.699301564540924],[96.19423412199573,28.04146177926422],[95.73730002295082,28.117613231051525],[95.11298892962586,27.748338353239472],[94.07167814294401,27.588707868507477],[93.61247595136224,27.323800298697016],[93.30681393470121,26.786120363519142],[92.74319481218781,26.833531317384058],[92.04974640832253,26.874866505386724],[92.07342257335648,26.915311275859864],[92.06813426293174,26.9752569185349],[92.02985139563152,27.03987087331446],[91.99856592104459,27.079255842602592],[91.99177981607339,27.100605151743654],[92.0025114452454,27.147290053160265],[92.03101585307499,27.214271359861193],[92.08387457645458,27.29090135496722],[92.04520857607581,27.364442429033787],[91.99069061380867,27.450181624174498],[91.95099838734396,27.45828799115413],[91.85276579410389,27.438593286730903],[91.74366351462741,27.442853010105477],[91.59505352446729,27.557262710287986],[91.63193359375012,27.759960937499983],[91.64189453125002,27.923242187500023],[91.36259958579089,28.02438066407592],[91.27304687500012,28.078369140625],[91.22587890625007,28.071240234374983],[91.07773437500012,27.974462890624977],[91.02080078125002,27.970068359374977],[90.71572265625,28.071728515624983],[90.63007812500004,28.078564453124955],[90.47734375000007,28.07084960937499],[90.3527343750001,28.080224609375023],[90.33310546875012,28.093994140625],[90.36298828125004,28.21650390625001],[90.34824218750006,28.24394531249999],[90.22080078125006,28.27773437500005],[90.10449218749997,28.302050781250017],[89.98105468750006,28.311181640625023],[89.8978515625,28.29414062500001],[89.81689453125003,28.25629882812501],[89.74980468750002,28.18818359375001],[89.65273437500005,28.158300781250034],[89.53691406250007,28.10742187499997],[89.4806640625001,28.059960937499994],[88.89140625000002,27.316064453124966],[88.83251953125003,27.36284179687499],[88.7648437500001,27.429882812499983],[88.74902343749997,27.521875],[88.82988281250002,27.76738281249999],[88.84882812500004,27.86865234375],[88.80371093750003,28.006933593750034],[88.57792968750002,28.093359375000034],[88.42597656250004,28.01166992187501],[88.27519531250007,27.968847656250006],[88.14111328125003,27.94892578125001],[88.10898437500006,27.933007812499966],[88.10976562500005,27.870605468750057],[87.8607421875,27.886083984375006],[87.62255859374997,27.81518554687503],[87.29072265625004,27.821923828124994],[87.14140625000002,27.838330078124955],[87.02011718750006,27.928662109374983],[86.9337890625001,27.96845703125001],[86.84238281250012,27.99916992187505],[86.750390625,28.022070312500006],[86.71962890625005,28.070654296875034],[86.69052734375006,28.09492187500001],[86.61445312500004,28.10302734374997],[86.55449218750007,28.08520507812497],[86.51689453125007,27.963525390624966],[86.40869140625003,27.928662109374983],[86.32861328124997,27.95952148437496],[86.2179687500001,28.022070312500006],[86.13701171875002,28.114355468750063],[86.07871093750006,28.08359375],[86.0641601562501,27.934716796874966],[85.99453125000005,27.910400390625],[85.95410156249997,27.92822265624997],[85.92167968750002,27.989697265624983],[85.84023437500005,28.135351562499977],[85.75947265625004,28.220654296874955],[85.67832031250012,28.277441406249977],[85.41064453125003,28.27602539062505],[85.21210937500004,28.292626953124966],[85.1224609375,28.315966796875017],[85.08857421875004,28.37226562500001],[85.121484375,28.484277343750023],[85.16015624999997,28.571875],[85.15908203125,28.592236328124983],[85.1263671875,28.602636718750063],[85.06914062500007,28.60966796874999],[84.85507812500006,28.553613281250023],[84.796875,28.560205078125023],[84.2287109375001,28.911767578124966],[84.17558593750002,29.036376953125057],[84.12783203125005,29.15629882812496],[84.10136718750002,29.21997070312497],[84.02197265624997,29.25385742187504],[83.93593750000005,29.27949218750001],[83.58349609375003,29.18359375000003],[83.15546875000004,29.612646484375034],[82.22070312500003,30.063867187500023],[82.04335937500005,30.326757812500034],[81.8548828125,30.362402343750006],[81.64189453125007,30.3875],[81.4171875000001,30.33759765625001],[81.25507812500004,30.09331054687499],[81.17714843750005,30.039892578125034],[80.98544921875006,30.23710937499999],[80.87353515625003,30.290576171875045],[80.19121093750002,30.56840820312496],[80.20712890625006,30.683740234375023],[79.92451171875004,30.888769531250034],[79.66425781250004,30.96523437499999],[79.38847656250007,31.064208984375],[79.10712890625004,31.402636718750017],[78.74355468750005,31.323779296875017],[78.7550781250001,31.55029296875],[78.69345703125006,31.740380859374994],[78.72558593750003,31.983789062500023],[78.49589843750002,32.21577148437504],[78.4552734375001,32.30034179687502],[78.41748046874997,32.466699218749994],[78.38964843749997,32.51987304687498],[78.73671875,32.55839843750002],[78.75351562500012,32.49926757812506],[78.91894531249997,32.35820312500002],[79.16992187500003,32.497216796874994],[79.14550781250003,33.00146484375006],[79.10283203125007,33.05253906249996],[79.13515625000005,33.17192382812496],[79.1125,33.22626953125001],[78.94843750000004,33.346533203125006],[78.86503906250002,33.43110351562501],[78.78378906250006,33.80878906250004],[78.72666015625006,34.013378906249955],[78.97060546875,34.22822265625004],[78.93642578125,34.35195312500002],[78.86484375000006,34.39033203125001],[78.32695312500007,34.60639648437498],[78.15849609375002,34.94648437499998],[78.07578125000006,35.13491210937502],[78.0426757812501,35.47978515625002],[77.79941406250006,35.49589843750002],[77.44648437500004,35.47558593750006],[77.29482421875005,35.508154296875034],[77.09003906250004,35.55205078124999],[76.87890625000003,35.61328125000003],[76.76689453125002,35.661718750000034],[76.72753906250003,35.67866210937504],[76.63183593749997,35.729394531249966],[76.56347656249997,35.77299804687499],[76.55126953124997,35.887060546875034],[76.50205078125006,35.87822265625002],[76.38574218750003,35.837158203125],[76.25166015625004,35.8109375],[76.17783203125012,35.810546875],[76.14785156250005,35.82900390625002],[76.07089843750006,35.983007812500034],[75.91230468750004,36.048974609374994],[75.97441406250007,36.38242187500006],[75.9518554687501,36.458105468750034],[75.9330078125,36.52158203124998],[75.840234375,36.64970703124999],[75.7721679687501,36.694921875000034],[75.6671875000001,36.741992187500045],[75.57373046874997,36.75932617187502],[75.46025390625002,36.725048828124955],[75.42421875000005,36.73823242187498],[75.37685546875,36.88369140625005],[75.34667968749997,36.913476562499966],[75.05390625000004,36.98715820312498],[74.94912109375,36.96835937500006],[74.88925781250006,36.95244140625002],[74.69218750000007,37.035742187500006],[74.60058593749997,37.03666992187502],[74.54140625,37.02216796875001],[74.52646484375006,37.03066406250005],[74.49794921875,37.057226562500034],[74.37617187500004,37.13735351562502],[74.37216796875006,37.15771484375],[74.558984375,37.23662109374999],[74.66894531250003,37.266699218750006],[74.72666015625006,37.29072265625001],[74.7389648437501,37.28564453125003],[74.76738281250002,37.249169921874966],[74.840234375,37.22504882812504],[74.89130859375004,37.231640624999955],[75.11875,37.38569335937498],[74.8942382812501,37.60141601562498],[74.81230468750002,38.46030273437498],[74.27744140625,38.659765625000034],[74.02558593750004,38.53984375000002],[73.80166015625,38.60688476562501],[73.69609375000007,38.85429687499996],[73.8052734375,38.968652343749994],[73.60732421875,39.229199218749955],[73.63632812500006,39.396679687499955],[73.63164062500007,39.44887695312502],[73.82294921875004,39.48896484375004],[73.90712890625,39.578515624999966],[73.9146484375,39.60649414062499],[73.88251953125004,39.71455078124998],[73.83974609375005,39.76284179687505],[73.8353515625,39.800146484375006],[73.85625,39.828662109375045],[73.88457031250002,39.87792968750006],[73.93876953125002,39.97880859374999],[73.99160156250005,40.04311523437502],[74.83046875,40.32851562499999],[74.80126953124997,40.428515625000045],[74.83515625000004,40.482617187499955],[74.865625,40.493505859375034],[75.0044921875,40.44951171874996],[75.11132812499997,40.4541015625],[75.24101562500002,40.48027343750002],[75.52080078125002,40.627539062500006],[75.55556640625,40.625195312499955],[75.6771484375,40.305810546874994],[75.87197265625,40.30322265625],[76.25830078124997,40.43076171875006],[76.3185546875001,40.352246093749955],[76.39638671875005,40.389794921874966],[76.4801757812501,40.44951171874996],[76.57792968750002,40.577880859375],[76.62216796875006,40.66235351562497],[76.6398437500001,40.74223632812499],[76.66113281249997,40.77963867187498],[76.70839843750005,40.818115234375],[76.82402343750002,40.982324218749966],[76.90771484374997,41.02416992187497],[76.98662109375002,41.039160156250006],[77.58173828125004,40.99277343750006],[77.71933593750012,41.024316406249994],[77.81523437500002,41.05561523437498],[77.9564453125,41.05068359375005],[78.1234375,41.07563476562498],[78.34628906250012,41.28144531249998],[78.36240234375012,41.37163085937496],[78.44287109374997,41.41752929687499],[78.742578125,41.56005859375],[79.29355468750006,41.78281249999998],[79.76611328124997,41.89887695312501],[79.84042968750012,41.99575195312502],[79.90966796875003,42.014990234375034],[80.21621093750005,42.03242187500004],[80.23515625000007,42.04345703124997],[80.24619140625012,42.05981445312503],[80.209375,42.190039062500006],[80.20224609375012,42.73447265624998],[80.53896484375005,42.873486328124955],[80.39023437500006,43.043115234374966],[80.78574218750006,43.16157226562504],[80.35527343750002,44.09726562500006],[80.48154296875006,44.71464843749999],[79.871875,44.88378906249997],[80.05917968750012,45.006445312500006],[81.69199218750012,45.34936523437497],[81.94492187500006,45.16083984375001],[82.26660156249997,45.21909179687498],[82.52148437500003,45.12548828125],[82.61162109375007,45.424267578124955],[82.31523437500002,45.59492187499998],[83.02949218750004,47.18593750000002],[84.016015625,46.97050781250002],[84.66660156250006,46.97236328125004],[84.78613281249997,46.83071289062505],[85.484765625,47.06352539062496],[85.65664062500005,47.254638671875],[85.52597656250006,47.915625],[85.7494140625,48.38505859374999],[86.54941406250012,48.52861328125002],[86.8083007812501,49.04970703125002],[87.32285156250012,49.085791015625006],[87.41669921875004,49.07661132812501],[87.5158203125001,49.122412109375006],[87.7625,49.16582031249996],[87.81425781250002,49.162304687499955],[87.87216796875012,49.000146484374966],[87.74316406250003,48.88164062499999],[87.83183593750007,48.79165039062505],[88.02792968750006,48.735595703125],[88.06005859375003,48.707177734374966],[87.9796875000001,48.55512695312498],[88.30996093750005,48.47207031250002],[88.41396484375,48.403417968750006],[88.51708984374997,48.384472656249955],[88.56679687500005,48.31743164062496],[88.57597656250007,48.220166015624955],[88.68183593750004,48.170556640624994],[88.83828125000005,48.101708984374994],[88.91777343750007,48.089013671874966],[89.04765625000007,48.002539062500034],[89.47919921875004,48.02905273437503],[89.5609375,48.00395507812496],[89.778125,47.82700195312498],[89.83134765625002,47.82329101562502],[89.91044921875007,47.844335937500034],[89.95869140625004,47.88632812499998],[90.02792968750012,47.877685546875],[90.1032226562501,47.74541015624996],[90.19101562500012,47.70209960937501],[90.31328125000007,47.67617187499999],[90.33066406250006,47.655175781249966],[90.42519531250005,47.50410156250001],[90.49619140625012,47.28515625],[90.64335937500007,47.10029296874998],[90.71552734375004,47.00385742187498],[90.7990234375001,46.98515624999999],[90.86992187500002,46.95449218750005],[90.91054687500005,46.88325195312501],[90.9857421875,46.7490234375],[90.9115234375,46.270654296874994],[90.94755859375002,46.17729492187499],[90.99677734375004,46.10498046875],[91.00175781250007,46.03579101562502],[90.6618164062501,45.525244140625006],[90.87724609375002,45.19609375000002],[91.05,45.217431640624994],[91.584375,45.07651367187498],[92.42382812499997,45.008935546874994],[92.57890625000002,45.01098632812506],[92.78789062500007,45.035742187500034],[93.51621093750012,44.944482421874994],[94.71201171875012,44.35083007812503],[95.35029296875004,44.27807617187503],[95.32558593750005,44.03935546874999],[95.52558593750004,43.953955078125006],[95.85957031250004,43.27597656249998],[96.38544921875004,42.72036132812502],[97.20566406250012,42.78979492187506],[99.46787109375012,42.568212890625034],[99.98378906250005,42.67734375000006],[100.08632812500005,42.67075195312506],[100.51904296875003,42.61679687499998],[101.09199218750004,42.55131835937496],[101.49531250000004,42.53876953124998],[101.57910156249997,42.52353515624998],[101.65996093750002,42.50004882812499],[101.97294921875002,42.21586914062502],[102.15664062500005,42.158105468749966],[102.57519531249997,42.09208984375002],[103.07285156250006,42.00595703125006],[103.7111328125001,41.75131835937506],[103.99726562500004,41.796972656250034],[104.30517578124997,41.84614257812501],[104.49824218750004,41.87700195312499],[104.49824218750004,41.65869140625],[104.86035156250003,41.64375],[104.98203125000012,41.59550781250002],[105.05058593750002,41.61591796875001],[105.1154296875001,41.66328124999998],[105.19707031250002,41.738037109375],[105.31435546875005,41.77089843750005],[105.86757812500005,41.993994140625034],[106.77001953125003,42.28872070312502],[108.17119140625002,42.44731445312502],[108.68730468750002,42.416113281250034],[109.33984374999997,42.43837890625005],[109.44316406250002,42.455957031249994],[110.40039062499997,42.77368164062497],[111.00722656250005,43.34140624999998],[111.878125,43.68017578125],[111.93173828125012,43.81494140625],[111.40224609375005,44.367285156250006],[111.89804687500006,45.064062500000034],[112.03261718750005,45.08164062500006],[112.11289062500006,45.06293945312498],[112.41132812500004,45.05820312499998],[112.49931640625002,45.01093750000004],[112.59677734375006,44.917675781249955],[112.7067382812501,44.883447265624994],[113.04941406250006,44.81035156250002],[113.3009765625001,44.79165039062502],[113.50791015625006,44.76235351562502],[113.58701171875006,44.745703125],[113.65263671875002,44.76347656249999],[113.87705078125012,44.89619140625001],[114.03027343749997,44.942578124999955],[114.08027343750004,44.97114257812501],[114.41914062500004,45.20258789062501],[114.56015625000012,45.38999023437498],[114.73876953124997,45.41962890624998],[114.91923828125007,45.378271484375006],[115.16259765624997,45.390234375000034],[115.6810546875,45.45825195312503],[116.19765625,45.739355468750006],[116.240625,45.795996093750006],[116.22910156250012,45.84575195312502],[116.21298828125012,45.88691406249998],[116.56259765625012,46.28979492187497],[116.85908203125004,46.387939453125],[117.3333984375,46.36201171875004],[117.35693359375003,46.391308593749955],[117.35634765625,46.436669921874966],[117.39218750000012,46.53759765625003],[117.40556640625007,46.57089843750006],[117.43808593750012,46.58623046874999],[117.546875,46.58828125000005],[117.74121093749997,46.51816406250006],[118.07128906249997,46.666601562500006],[118.15683593750006,46.678564453125034],[118.30869140625012,46.71704101562497],[118.40439453125006,46.70317382812499],[118.58046875,46.69189453125],[118.64873046875002,46.70166015625006],[118.72294921875007,46.69189453125],[118.8439453125001,46.76020507812498],[118.95712890625006,46.73486328124997],[119.16210937499997,46.638671875],[119.33183593750002,46.61381835937499],[119.47402343750005,46.626660156249955],[119.62021484375006,46.60395507812504],[119.70664062500006,46.60600585937502],[119.74746093750005,46.62719726562497],[119.86718750000003,46.67216796874999],[119.89785156250005,46.857812499999966],[119.71113281250004,47.15],[119.08193359375,47.654150390625034],[119.01757812500003,47.68535156249999],[118.88027343750005,47.72509765625],[118.75996093750004,47.75761718749996],[118.69052734375012,47.822265625],[118.56777343750005,47.94326171875005],[118.49843750000005,47.98398437499998],[117.76835937500002,47.98789062499998],[117.3507812500001,47.65219726562498],[117.28593750000002,47.666357421875034],[117.06972656250005,47.80639648437506],[116.95166015624997,47.836572265624966],[116.90117187500007,47.85307617187496],[116.76054687500002,47.869775390624994],[116.65195312500012,47.86450195312497],[116.51347656250007,47.839550781249955],[116.37822265625002,47.84404296874999],[116.31718750000002,47.85986328125],[116.2311523437501,47.85820312500002],[116.07480468750012,47.78955078125],[115.99384765625004,47.71132812500005],[115.89824218750002,47.68691406250005],[115.6164062500001,47.874804687500045],[115.52509765625004,48.13085937499997],[115.63945312500007,48.18623046874998],[115.785546875,48.24824218750001],[115.7965820312501,48.346337890624994],[115.7916992187501,48.455712890624994],[115.8205078125001,48.57724609375006],[116.6833007812501,49.82377929687499],[117.8734375,49.51347656250002],[118.4515625,49.84448242187503],[119.25986328125012,50.06640625000003],[119.34628906250012,50.278955078124994],[119.16367187500006,50.40600585937503],[120.06689453125003,51.60068359375006],[120.74980468750007,52.096533203125006],[120.65615234375,52.56665039062503],[120.0675781250001,52.632910156250034],[120.09453125000007,52.787207031250034],[120.98544921875012,53.28457031250002],[123.6078125,53.546533203124994],[124.81230468750002,53.133837890625045],[125.075,53.20366210937496],[125.64902343750012,53.042285156250045],[126.34169921875,52.36201171875001],[126.92480468749997,51.10014648437496],[127.30703125000005,50.70795898437501],[127.33720703125007,50.35014648437502],[127.590234375,50.20898437500003],[127.55078124999997,49.801806640625045],[127.99960937500006,49.56860351562506],[128.70400390625,49.60014648437499],[129.0651367187501,49.374658203124966],[129.49814453125012,49.38881835937502],[130.1959960937501,48.89165039062499],[130.553125,48.861181640625006],[130.5521484375,48.602490234374955],[130.80429687500012,48.34150390624998],[130.7326171875001,48.01923828124998],[130.96191406249997,47.70932617187498],[132.47626953125004,47.714990234374994],[132.7072265625001,47.94726562500006],[133.14404296875003,48.10566406249998],[133.46835937500006,48.09716796875003],[134.29335937500005,48.37343750000002],[134.66523437500004,48.25390625],[134.56601562500006,48.02250976562502],[134.75234375,47.71542968749998],[134.1676757812501,47.30219726562501],[133.86132812500003,46.24775390625004],[133.43642578125,45.60468750000004],[133.18603515625003,45.49482421875004],[133.1134765625001,45.130712890625006],[132.93603515624997,45.029931640624994],[131.85185546875002,45.32685546875001],[131.44687500000012,44.984033203124966],[130.9816406250001,44.844335937500034],[131.2552734375,44.07158203124999],[131.25732421875003,43.378076171874994],[131.06855468750004,42.90224609375005],[130.42480468749997,42.72705078124997],[130.52695312500012,42.535400390625]]],[[[113.9977539062501,22.210498046875045],[113.83886718749997,22.24169921875003],[114.04394531250003,22.33339843750005],[113.9977539062501,22.210498046875045]]],[[[114.01542968750007,22.51191406250001],[114.26601562500005,22.540966796874983],[114.26796875,22.295556640624966],[113.93730468750002,22.364990234375],[114.01542968750007,22.51191406250001]]],[],[[[118.4074218750001,24.522119140624994],[118.43271484375006,24.414355468750074],[118.29511718750004,24.436328125000017],[118.4074218750001,24.522119140624994]]],[[[121.00878906249997,22.62036132812497],[120.83984375000003,21.925],[120.2328125,22.71791992187505],[120.0724609375001,23.149755859375006],[120.13212890625007,23.652929687500034],[121.040625,25.032812500000034],[121.59365234375,25.275341796874983],[121.92900390625002,24.973730468749977],[121.39746093750003,23.172509765625023],[121.00878906249997,22.62036132812497]]]]},"properties":{"name":"China","childNum":15}},{"geometry":{"type":"Polygon","coordinates":[[[-5.262304687499977,10.319677734374991],[-4.72177734374992,9.756542968750026],[-4.625830078125006,9.713574218749969],[-4.526611328124943,9.723486328125034],[-4.406201171874926,9.647998046875031],[-4.332226562499955,9.645703125],[-4.18115234375,9.78173828125],[-3.790625,9.917187499999983],[-3.581152343749977,9.924316406250014],[-3.289697265625023,9.882226562500051],[-3.223535156249937,9.895458984374997],[-3.160693359374932,9.849169921874974],[-3.095800781249949,9.752099609375009],[-3.042626953124937,9.72089843750004],[-2.988281249999972,9.687353515624963],[-2.900878906249943,9.534619140625026],[-2.875146484374937,9.500927734374997],[-2.816748046874949,9.425830078124974],[-2.766601562499943,9.424707031250009],[-2.7171875,9.457128906250048],[-2.695849609374989,9.481347656250009],[-2.686132812499977,9.43173828125002],[-2.705761718749983,9.351367187499989],[-2.74692382812492,9.04511718750004],[-2.689892578124955,9.02509765625004],[-2.649218750000017,8.956591796875031],[-2.600390625000017,8.800439453125023],[-2.505859375000028,8.208740234375],[-2.538281249999955,8.171630859374986],[-2.61171875,8.147558593749963],[-2.619970703125006,8.12109375],[-2.600976562499937,8.082226562499983],[-2.613378906249977,8.046679687500017],[-2.668847656249994,8.022216796875014],[-2.789746093749955,7.931933593750003],[-2.959082031249977,7.454541015624997],[-3.227148437499977,6.749121093749991],[-2.998291015624972,5.711328125000051],[-2.793652343749955,5.600097656250028],[-2.754980468749977,5.432519531249994],[-2.815673828125,5.153027343749997],[-3.168701171874972,5.203027343749966],[-3.199951171874943,5.3544921875],[-3.347558593749994,5.13066406249996],[-4.120166015625017,5.309716796875023],[-4.60888671875,5.235888671875003],[-4.037207031249977,5.23012695312498],[-4.899707031249932,5.138330078125023],[-5.282373046874994,5.210253906250017],[-5.36752929687492,5.15078125],[-5.061816406249989,5.13066406249996],[-5.913769531249926,5.0109375],[-7.544970703124989,4.351318359375],[-7.574658203124983,4.572314453124989],[-7.585058593749977,4.916748046875],[-7.39990234375,5.550585937499989],[-7.454394531249989,5.841308593749972],[-7.636132812499994,5.90771484375],[-7.730371093749994,5.919042968749991],[-7.800927734374994,6.038916015624991],[-7.833251953125,6.076367187499983],[-7.855517578125017,6.150146484375],[-7.888623046875011,6.234863281250028],[-7.981591796874937,6.2861328125],[-8.287109375,6.31904296875004],[-8.587890625,6.490527343749989],[-8.324511718749989,6.920019531249991],[-8.408740234374989,7.411816406249997],[-8.429980468749989,7.601855468749989],[-8.351757812499926,7.590576171875],[-8.231884765624955,7.556738281250034],[-8.205957031249994,7.590234375000023],[-8.115429687499926,7.760742187500028],[-8.126855468749937,7.867724609374974],[-8.00986328124992,8.078515625000023],[-8.048583984375,8.169726562500045],[-8.140625,8.181445312500031],[-8.217138671874949,8.219677734375011],[-8.256103515625,8.253710937500017],[-8.244140624999943,8.407910156249983],[-8.236962890624994,8.455664062500034],[-7.953125,8.477734375],[-7.823583984374977,8.467675781249994],[-7.738964843749983,8.375244140624986],[-7.696093749999932,8.375585937499977],[-7.71958007812492,8.643017578125011],[-7.950976562499989,8.786816406249997],[-7.938183593749983,8.97978515624996],[-7.902099609375,9.017089843750014],[-7.777978515624937,9.080859375000031],[-7.799804687499943,9.115039062499989],[-7.839404296875017,9.151611328124972],[-7.918066406249949,9.188525390625031],[-7.896191406249955,9.415869140624991],[-8.136962890624972,9.49570312499999],[-8.155175781249937,9.973193359375017],[-7.990625,10.1625],[-7.661132812500028,10.427441406250011],[-7.385058593749989,10.340136718749989],[-7.01708984375,10.143261718750026],[-6.950341796874994,10.342333984374989],[-6.693261718750023,10.34946289062502],[-6.669335937499937,10.39218750000002],[-6.69199218749992,10.512011718750017],[-6.686132812499977,10.578027343750051],[-6.676367187499949,10.633789062500043],[-6.654150390624949,10.65644531250004],[-6.482617187499983,10.561230468749997],[-6.250244140625,10.717919921875037],[-6.190673828124943,10.400292968749994],[-6.192626953124972,10.369433593750003],[-6.241308593749949,10.279199218750009],[-6.238378906249977,10.26162109374998],[-6.117187499999972,10.201904296874986],[-6.034570312499937,10.194824218750057],[-5.907568359375006,10.307226562500034],[-5.896191406249983,10.354736328125028],[-5.843847656249977,10.389550781250023],[-5.694287109374983,10.433203125000034],[-5.556591796874983,10.439941406249986],[-5.382275390625011,10.314013671875003],[-5.262304687499977,10.319677734374991]]]},"properties":{"name":"Côte d\'Ivoire","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[15.480078125,7.523779296874991],[15.206738281250011,7.206152343749991],[14.7392578125,6.27978515625],[14.43115234375,6.038720703124994],[14.616894531250011,5.865136718749994],[14.56298828125,5.279931640624994],[14.73125,4.602392578124991],[15.063574218750006,4.284863281249997],[15.128710937500017,3.826904296875],[16.0634765625,2.90859375],[16.183398437500017,2.270068359374989],[16.059375,1.676220703124997],[15.741601562500023,1.914990234374997],[14.902441406250006,2.012304687499991],[14.578906250000017,2.199121093749994],[13.293554687500006,2.161572265624997],[13.2203125,2.256445312499991],[11.558984375000023,2.302197265624997],[11.348437500000017,2.299707031249994],[11.328710937500006,2.167431640624997],[11.096582031250023,2.16748046875],[10.790917968750023,2.16757812499999],[9.979882812500023,2.167773437499989],[9.8701171875,2.21328125],[9.8369140625,2.242382812499997],[9.830371093750017,2.275488281249991],[9.826171875,2.297802734374997],[9.80078125,2.304443359375],[9.82177734375,2.539257812499997],[9.948437500000011,3.079052734374997],[9.672070312500011,3.53759765625],[9.765722656250006,3.623828124999989],[9.642382812500017,3.611767578124997],[9.55615234375,3.798046875],[9.739648437500023,3.852929687499994],[9.639941406250017,3.96533203125],[9.688867187500023,4.056396484375],[9.483691406250017,4.066113281249997],[9.42529296875,3.922314453124997],[9.000097656250006,4.091601562499989],[8.918261718750017,4.553759765624989],[8.660351562500011,4.670996093749991],[8.65625,4.516357421875],[8.53955078125,4.571875],[8.715625,5.046875],[8.997167968750006,5.917724609375],[9.490234375,6.418652343749997],[9.779882812500006,6.76015625],[9.820703125000023,6.783935546875],[9.874218750000011,6.803271484374989],[10.038867187500017,6.92138671875],[10.1435546875,6.996435546874991],[10.167773437500017,6.959179687499997],[10.185546875,6.912792968749997],[10.205468750000023,6.8916015625],[10.293066406250006,6.876757812499989],[10.413183593750006,6.877734374999989],[10.60625,7.063085937499991],[10.954199218750006,6.7765625],[11.032519531250017,6.697900390624994],[11.1064453125,6.457714843749997],[11.1533203125,6.437939453124997],[11.2373046875,6.450537109374991],[11.401757812500023,6.533935546875],[11.551660156250023,6.697265625],[11.580078125,6.888867187499997],[11.657519531250017,6.9515625],[11.861425781250006,7.11640625],[11.767382812500017,7.272265624999989],[11.809179687500006,7.345068359374991],[12.016015625000023,7.589746093749994],[12.2333984375,8.282324218749991],[12.403515625000011,8.595556640624991],[12.582714843750011,8.624121093749991],[12.651562500000011,8.667773437499989],[12.7822265625,8.81787109375],[12.806542968750023,8.886621093749994],[12.875683593750011,9.303515624999989],[12.929492187500017,9.42626953125],[13.19873046875,9.563769531249989],[13.269921875000023,10.036181640624989],[13.41455078125,10.171435546874989],[13.535351562500011,10.60507812499999],[13.699902343750011,10.873144531249991],[13.89208984375,11.140087890624997],[13.9814453125,11.211865234374997],[14.056738281250006,11.245019531249994],[14.143261718750011,11.24853515625],[14.202343750000011,11.268164062499991],[14.559765625000011,11.492285156249991],[14.619726562500006,12.150976562499991],[14.518945312500023,12.298242187499994],[14.272851562500023,12.356494140624989],[14.184863281250017,12.447216796874997],[14.06396484375,13.07851562499999],[14.244824218750011,13.07734375],[14.461718750000017,13.021777343749989],[14.847070312500023,12.502099609374994],[15.08125,11.845507812499989],[15.029882812500006,11.11367187499999],[15.132226562500023,10.648486328124989],[15.276074218750011,10.357373046874997],[15.654882812500006,10.0078125],[14.243261718750006,9.979736328125],[13.977246093750011,9.691552734374994],[14.332324218750017,9.20351562499999],[15.1162109375,8.557324218749997],[15.5498046875,7.787890624999989],[15.480078125,7.523779296874991]]]},"properties":{"name":"Cameroon","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[27.4033203125,5.109179687499989],[27.7880859375,4.644677734374994],[28.19208984375001,4.350244140624994],[28.427539062500017,4.324169921874997],[28.72705078125,4.504980468749991],[29.224902343750017,4.391894531249989],[29.469628906250023,4.61181640625],[29.676855468750006,4.5869140625],[30.194921875,3.98193359375],[30.50830078125,3.835693359375],[30.586718750000017,3.62421875],[30.757226562500023,3.62421875],[30.83857421875001,3.49072265625],[30.90644531250001,3.408935546875],[30.754003906250006,3.041796874999989],[30.8466796875,2.847021484374991],[30.728613281250006,2.455371093749989],[31.176367187500006,2.270068359374989],[31.252734375000017,2.044580078124994],[29.94287109375,0.819238281249994],[29.934472656250023,0.4990234375],[29.717675781250023,0.098339843749997],[29.576953125000017,-1.387890625000011],[29.196582031250017,-1.719921875000011],[29.13154296875001,-2.195117187500003],[28.876367187500023,-2.400292968750009],[28.893945312500023,-2.635058593750003],[29.01435546875001,-2.72021484375],[29.224414062500017,-3.053515625],[29.211816406250023,-3.833789062500003],[29.403222656250023,-4.449316406250006],[29.404199218750023,-4.496679687500006],[29.32568359375,-4.835644531250011],[29.32343750000001,-4.898828125],[29.3427734375,-4.983105468750011],[29.542382812500023,-5.499804687500003],[29.594140625000023,-5.65078125],[29.60703125,-5.72265625],[29.59638671875001,-5.775976562500006],[29.490820312500006,-5.965429687500006],[29.480078125,-6.025],[29.50625,-6.172070312500011],[29.540820312500017,-6.313867187500009],[29.590625,-6.394433593750009],[29.70966796875001,-6.616894531250011],[29.798144531250017,-6.69189453125],[29.961816406250023,-6.803125],[30.10625,-6.9150390625],[30.212695312500017,-7.037890625],[30.31318359375001,-7.203710937500006],[30.40673828125,-7.460644531250011],[30.75117187500001,-8.193652343750003],[28.89814453125001,-8.485449218750006],[28.869531250000023,-8.785839843750011],[28.400683593750017,-9.224804687500011],[28.60419921875001,-9.678808593750006],[28.6455078125,-10.550195312500009],[28.383398437500006,-11.566699218750003],[28.482519531250006,-11.812109375],[29.064355468750023,-12.348828125000011],[29.48554687500001,-12.41845703125],[29.508203125000023,-12.228222656250011],[29.79511718750001,-12.155468750000011],[29.775195312500017,-13.438085937500006],[29.55419921875,-13.248925781250009],[29.20185546875001,-13.398339843750009],[29.014257812500006,-13.368847656250011],[28.730078125,-12.925488281250011],[28.550878906250006,-12.836132812500011],[28.412890625000017,-12.51806640625],[27.573828125,-12.22705078125],[27.1591796875,-11.579199218750006],[26.824023437500017,-11.965234375],[26.025976562500006,-11.89013671875],[25.349414062500017,-11.623046875],[25.28876953125001,-11.21240234375],[24.3779296875,-11.417089843750006],[24.36572265625,-11.1298828125],[23.96650390625001,-10.871777343750011],[23.901171875000017,-10.983203125],[23.833886718750023,-11.013671875],[23.463964843750006,-10.969335937500006],[23.076269531250006,-11.087890625],[22.814746093750017,-11.080273437500011],[22.56103515625,-11.055859375000011],[22.486132812500017,-11.08671875],[22.392968750000023,-11.159472656250003],[22.31494140625,-11.198632812500009],[22.27880859375,-11.194140625],[22.226171875,-11.121972656250009],[22.203515625000023,-10.829492187500009],[22.307031250000023,-10.691308593750009],[22.19775390625,-10.040625],[21.81318359375001,-9.46875],[21.905371093750006,-8.693359375],[21.806054687500023,-7.32861328125],[21.751074218750006,-7.30546875],[21.190332031250023,-7.284960937500003],[20.910937500000017,-7.281445312500011],[20.607812500000023,-7.277734375],[20.558398437500017,-7.244433593750003],[20.53583984375001,-7.182812500000011],[20.536914062500017,-7.121777343750011],[20.598730468750006,-6.93515625],[20.59003906250001,-6.919921875],[20.482226562500017,-6.915820312500003],[20.190039062500006,-6.9462890625],[19.997460937500023,-6.976464843750009],[19.87519531250001,-6.986328125],[19.527636718750017,-7.144433593750009],[19.483789062500023,-7.279492187500011],[19.479882812500023,-7.47216796875],[19.371679687500006,-7.655078125],[19.369921875000017,-7.70654296875],[19.3408203125,-7.966601562500003],[19.142675781250006,-8.00146484375],[18.944433593750006,-8.00146484375],[18.56269531250001,-7.9359375],[18.0087890625,-8.107617187500011],[17.643359375000017,-8.090722656250009],[17.57958984375,-8.099023437500009],[16.984765625000023,-7.257421875],[16.91943359375,-6.933984375],[16.813085937500006,-6.772558593750006],[16.742968750000017,-6.618457031250003],[16.697265625,-6.164257812500011],[16.537109375,-5.9658203125],[16.431445312500017,-5.900195312500003],[16.315234375000017,-5.865625],[13.978515625,-5.857226562500003],[13.346484375000017,-5.863378906250006],[13.184375,-5.85625],[12.452929687500017,-6.00048828125],[12.213671875000017,-5.758691406250009],[12.484570312500011,-5.71875],[12.451464843750017,-5.071484375000011],[12.502734375000017,-5.036914062500003],[12.573535156250017,-4.99658203125],[12.59619140625,-4.978417968750009],[12.8296875,-4.736621093750003],[12.947460937500011,-4.6953125],[13.057324218750011,-4.651074218750011],[13.07275390625,-4.634765625],[13.08740234375,-4.601953125],[13.136621093750023,-4.604296875],[13.414941406250023,-4.83740234375],[13.659570312500023,-4.721484375],[13.717089843750017,-4.454492187500009],[13.94091796875,-4.484667968750003],[14.358300781250023,-4.299414062500006],[14.449804687500006,-4.449511718750003],[14.365429687500011,-4.585546875],[14.410742187500006,-4.83125],[14.707910156250023,-4.881738281250009],[15.990039062500017,-3.766210937500006],[16.217382812500006,-3.0302734375],[16.21533203125,-2.177832031250006],[16.54072265625001,-1.840136718750003],[16.8798828125,-1.225878906250003],[17.752832031250023,-0.549023437500011],[18.072167968750023,2.01328125],[18.49091796875001,2.924414062499991],[18.6103515625,3.478417968749994],[18.594140625000023,4.346240234374989],[19.06855468750001,4.891406249999989],[19.5009765625,5.127490234374989],[19.806542968750023,5.089306640624997],[20.226367187500017,4.829638671874989],[20.55810546875,4.462695312499989],[22.422167968750017,4.134960937499997],[22.864550781250017,4.723876953125],[23.41718750000001,4.663134765624989],[24.31982421875,4.994140625],[25.065234375000017,4.967431640624994],[25.52509765625001,5.31210937499999],[26.822070312500017,5.062402343749994],[27.071875,5.199755859374989],[27.4033203125,5.109179687499989]]]},"properties":{"name":"Dem. Rep. Congo","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[18.6103515625,3.478417968749994],[18.49091796875001,2.924414062499991],[18.072167968750023,2.01328125],[17.752832031250023,-0.549023437500011],[16.8798828125,-1.225878906250003],[16.54072265625001,-1.840136718750003],[16.21533203125,-2.177832031250006],[16.217382812500006,-3.0302734375],[15.990039062500017,-3.766210937500006],[14.707910156250023,-4.881738281250009],[14.410742187500006,-4.83125],[14.365429687500011,-4.585546875],[14.449804687500006,-4.449511718750003],[14.358300781250023,-4.299414062500006],[13.94091796875,-4.484667968750003],[13.717089843750017,-4.454492187500009],[13.659570312500023,-4.721484375],[13.414941406250023,-4.83740234375],[13.136621093750023,-4.604296875],[13.08740234375,-4.601953125],[13.07275390625,-4.634765625],[13.048046875000011,-4.619238281250006],[12.971386718750011,-4.5517578125],[12.881054687500011,-4.445117187500003],[12.84814453125,-4.428906250000011],[12.50146484375,-4.5875],[12.018359375000017,-5.004296875],[11.777539062500011,-4.565820312500009],[11.130175781250017,-3.916308593750003],[11.234472656250006,-3.690820312500009],[11.504296875000023,-3.5203125],[11.685742187500011,-3.68203125],[11.8798828125,-3.665917968750009],[11.934179687500006,-3.318554687500011],[11.715429687500006,-3.176953125000011],[11.760156250000023,-2.983105468750011],[11.537792968750011,-2.83671875],[11.60546875,-2.342578125],[12.064453125,-2.41259765625],[12.446386718750006,-2.329980468750009],[12.43212890625,-1.928906250000011],[12.590429687500006,-1.826855468750011],[12.793554687500006,-1.931835937500011],[12.991992187500017,-2.313378906250009],[13.464941406250006,-2.395410156250009],[13.733789062500023,-2.138476562500003],[13.886914062500011,-2.465429687500006],[13.993847656250011,-2.490625],[14.199804687500006,-2.354199218750011],[14.162890625000017,-2.217578125],[14.383984375000011,-1.890039062500009],[14.47412109375,-0.573437500000011],[13.860058593750011,-0.203320312500011],[13.949609375000023,0.353808593749989],[14.32421875,0.62421875],[14.429882812500011,0.901464843749991],[14.180859375000011,1.370214843749991],[13.851367187500017,1.41875],[13.21630859375,1.2484375],[13.172167968750017,1.78857421875],[13.293554687500006,2.161572265624997],[14.578906250000017,2.199121093749994],[14.902441406250006,2.012304687499991],[15.741601562500023,1.914990234374997],[16.059375,1.676220703124997],[16.183398437500017,2.270068359374989],[16.468554687500017,2.831738281249997],[16.610742187500023,3.50537109375],[17.491601562500023,3.687304687499989],[18.160937500000017,3.499804687499989],[18.474414062500017,3.622998046874997],[18.6103515625,3.478417968749994]]]},"properties":{"name":"Congo","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-71.31972656249997,11.861914062500048],[-71.95810546875,11.66640625],[-72.24848632812501,11.196435546875009],[-72.690087890625,10.835839843749994],[-72.86933593750001,10.49125976562496],[-73.00654296874998,9.789160156250006],[-73.36621093749997,9.194140625000017],[-73.05839843749999,9.259570312500031],[-72.79638671874997,9.10898437499999],[-72.66542968749994,8.62758789062498],[-72.39033203124995,8.287060546874969],[-72.47197265624996,7.524267578124991],[-72.20771484374995,7.37026367187498],[-72.00664062499993,7.032617187500023],[-71.12861328124993,6.98671875],[-70.73715820312503,7.090039062499997],[-70.12919921874999,6.95361328125],[-69.42714843749997,6.123974609374997],[-68.47177734375,6.156542968749974],[-67.85917968749999,6.289892578124963],[-67.48198242187499,6.18027343750002],[-67.47387695312503,5.929980468750003],[-67.82490234374995,5.270458984375026],[-67.85527343750002,4.506884765624989],[-67.66162109375,3.864257812499986],[-67.3111328125,3.41586914062502],[-67.85908203124998,2.793603515624994],[-67.61870117187496,2.793603515624994],[-67.21083984375,2.390136718750043],[-66.87602539062499,1.223046875000037],[-67.082275390625,1.185400390625006],[-67.11923828124998,1.703613281249986],[-67.40043945312499,2.116699218750028],[-67.93623046874998,1.748486328124969],[-68.19379882812495,1.987011718749983],[-68.25595703125,1.845507812500017],[-68.17656249999999,1.719824218749991],[-69.84858398437493,1.708740234375043],[-69.85214843750003,1.05952148437504],[-69.31181640624999,1.050488281249969],[-69.15332031249994,0.65878906250002],[-69.47211914062498,0.72993164062504],[-70.05390624999993,0.578613281250028],[-70.07050781249993,-0.13886718750004],[-69.63398437500001,-0.50927734375],[-69.40024414062498,-1.194921874999977],[-69.66904296875003,-2.667675781249997],[-69.94819335937498,-4.200585937500009],[-69.96591796875003,-4.2359375],[-70.16752929687499,-4.050195312500009],[-70.24028320312496,-3.882714843749994],[-70.2984375,-3.844238281249972],[-70.33950195312502,-3.814355468750009],[-70.73510742187497,-3.781542968749989],[-70.09584960937494,-2.658203125000014],[-70.16474609374995,-2.639843750000011],[-70.24443359375002,-2.606542968749977],[-70.29462890624995,-2.552539062499989],[-70.57587890624995,-2.418261718749989],[-70.64799804687499,-2.405761718750014],[-70.70537109374996,-2.341992187499983],[-70.91455078125003,-2.218554687499974],[-70.96855468750002,-2.206835937499989],[-71.02729492187498,-2.225781250000026],[-71.11337890625003,-2.245410156250031],[-71.19638671874998,-2.313085937499963],[-71.39697265625,-2.334082031249977],[-71.55947265624997,-2.224218749999977],[-71.75253906249995,-2.15273437499998],[-71.80273437499997,-2.166308593749989],[-71.86728515624998,-2.227734374999983],[-71.932470703125,-2.288671874999963],[-71.98427734375,-2.326562499999952],[-72.21845703125001,-2.400488281250006],[-72.94111328124998,-2.394042968750028],[-72.9896484375,-2.33974609374998],[-73.15449218749993,-2.278222656249966],[-73.19697265624995,-1.830273437500011],[-73.49628906249993,-1.69306640625004],[-73.66430664062497,-1.248828124999946],[-73.86318359374997,-1.19667968749998],[-73.92695312500001,-1.125195312499983],[-73.98681640625003,-1.098144531249986],[-74.05439453124995,-1.028613281250031],[-74.18076171875,-0.997753906249955],[-74.24638671874999,-0.970605468750023],[-74.28388671874998,-0.927832031250006],[-74.33442382812498,-0.85087890624996],[-74.41787109375,-0.580664062499977],[-74.46518554687498,-0.517675781250034],[-74.51386718749993,-0.470117187500023],[-74.555078125,-0.429882812499997],[-74.61635742187494,-0.370019531249966],[-74.691650390625,-0.335253906249989],[-74.75537109375003,-0.298632812499989],[-74.78046874999998,-0.24453125],[-74.80175781249997,-0.200097656249994],[-75.13837890624998,-0.050488281249969],[-75.28447265624999,-0.10654296875002],[-75.77666015624999,0.08925781249998],[-76.27060546874998,0.439404296874997],[-76.49462890624997,0.23544921875002],[-77.396337890625,0.393896484374963],[-77.46767578124997,0.636523437500017],[-77.702880859375,0.837841796874997],[-78.1806640625,0.968554687499974],[-78.85966796874996,1.455371093750031],[-79.02543945312499,1.623681640625037],[-78.79296874999994,1.848730468749963],[-78.576904296875,1.773779296874977],[-78.59169921875,2.356640624999969],[-78.41689453125,2.483496093749963],[-78.06665039062494,2.509130859375034],[-77.81357421875,2.716357421874974],[-77.076806640625,3.913281250000026],[-77.26352539062503,3.893212890625023],[-77.27802734374995,4.058496093750023],[-77.35820312499996,3.944726562500037],[-77.40874023437496,4.24775390625004],[-77.52070312499993,4.212792968750023],[-77.35351562499997,4.398291015624977],[-77.28632812499995,4.72172851562496],[-77.373291015625,5.323974609375],[-77.53442382812497,5.537109374999986],[-77.24926757812497,5.780175781250037],[-77.46943359374995,6.176757812500014],[-77.368798828125,6.575585937499994],[-77.90117187499999,7.229345703125048],[-77.76191406249995,7.698828125000034],[-77.53828124999995,7.56625976562502],[-77.19599609374995,7.972460937500003],[-77.47851562499994,8.498437500000037],[-77.37421874999993,8.65830078125002],[-76.85185546875002,8.09047851562498],[-76.924658203125,7.973193359374974],[-76.78657226562493,7.931591796875026],[-76.7720703125,8.310546875000043],[-76.92045898437496,8.573730468750014],[-76.27685546875,8.989111328124991],[-76.02724609374997,9.365771484374989],[-75.63935546874998,9.450439453125014],[-75.680029296875,9.729785156249989],[-75.53857421874997,10.205175781250034],[-75.708349609375,10.143408203124963],[-75.44599609374995,10.610888671874989],[-74.84458007812498,11.109716796875006],[-74.330224609375,10.996679687499991],[-74.51625976562497,10.8625],[-74.40087890625,10.76523437499999],[-74.14291992187503,11.320849609375031],[-73.31337890624997,11.295751953124991],[-72.275,11.88925781250002],[-72.13574218749994,12.188574218749977],[-71.71455078124993,12.41997070312496],[-71.26210937499997,12.335302734375034],[-71.13730468750003,12.04633789062504],[-71.31972656249997,11.861914062500048]]]},"properties":{"name":"Colombia","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[43.788671875,-12.307031250000023],[43.85898437500006,-12.368261718749977],[43.66367187500006,-12.342871093749949],[43.63134765624997,-12.247070312499972],[43.788671875,-12.307031250000023]]],[[[44.476367187500074,-12.08154296875],[44.504980468750006,-12.356542968749991],[44.220117187499994,-12.171386718750014],[44.476367187500074,-12.08154296875]]],[[[43.46582031249997,-11.901269531249966],[43.226660156250006,-11.75185546874998],[43.2990234375001,-11.374511718750028],[43.39296875000005,-11.408593749999952],[43.46582031249997,-11.901269531249966]]]]},"properties":{"name":"Comoros","childNum":3}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-24.308251953124966,14.856298828124991],[-24.44052734374992,14.834814453124963],[-24.496875,14.980273437500017],[-24.329492187499937,15.019482421875011],[-24.308251953124966,14.856298828124991]]],[[[-23.18212890624997,15.136767578125017],[-23.210253906250017,15.32353515625006],[-23.119335937499955,15.26840820312502],[-23.18212890624997,15.136767578125017]]],[[[-23.444238281249994,15.00795898437498],[-23.5046875,14.916113281250006],[-23.70537109374999,14.96132812499998],[-23.74809570312499,15.328515625],[-23.444238281249994,15.00795898437498]]],[[[-22.917724609375,16.237255859374955],[-22.69262695312497,16.169042968750006],[-22.710107421874994,16.043359374999966],[-22.95927734374996,16.045117187499983],[-22.917724609375,16.237255859374955]]],[[[-24.08769531249999,16.62250976562501],[-24.03271484374997,16.57202148437503],[-24.243066406250023,16.599414062500017],[-24.32236328124992,16.49311523437504],[-24.398095703124966,16.61840820312497],[-24.08769531249999,16.62250976562501]]],[[[-22.888330078124966,16.659082031249994],[-22.980615234374937,16.700878906249983],[-22.93291015624999,16.84101562500004],[-22.888330078124966,16.659082031249994]]],[[[-24.88706054687495,16.81811523437497],[-25.09306640624999,16.83251953125],[-24.936474609374983,16.92211914062503],[-24.88706054687495,16.81811523437497]]],[[[-25.169824218749994,16.94648437500001],[-25.308300781249955,16.93583984374999],[-25.337109374999955,17.091015624999983],[-25.03466796875,17.176464843749983],[-24.979687499999983,17.09472656250003],[-25.169824218749994,16.94648437500001]]]]},"properties":{"name":"Cape Verde","childNum":8}},{"geometry":{"type":"Polygon","coordinates":[[[-83.6419921875,10.917236328125],[-83.346826171875,10.315380859374997],[-82.77841796874999,9.66953125],[-82.56357421874999,9.57666015625],[-82.56923828125,9.55820312499999],[-82.58652343749999,9.538818359375],[-82.64409179687499,9.505859375],[-82.801025390625,9.591796875],[-82.843994140625,9.57080078125],[-82.86015624999999,9.511474609375],[-82.88896484374999,9.481005859374989],[-82.925048828125,9.469042968749989],[-82.93984375,9.449169921874997],[-82.94033203125,9.060107421874989],[-82.88134765625,9.055859375],[-82.78305664062499,8.990283203124989],[-82.741162109375,8.951708984374989],[-82.72783203124999,8.916064453124989],[-82.91704101562499,8.740332031249991],[-82.855712890625,8.635302734374989],[-82.84477539062499,8.489355468749991],[-82.86162109374999,8.45351562499999],[-83.02734375,8.337744140624991],[-82.879345703125,8.070654296874991],[-83.12333984374999,8.353076171874989],[-83.16240234374999,8.588183593749989],[-83.4697265625,8.706835937499989],[-83.29150390625,8.406005859375],[-83.54375,8.445849609374989],[-83.73408203125,8.614453125],[-83.613720703125,8.804052734374991],[-83.73691406249999,9.150292968749994],[-84.58159179687499,9.568359375],[-84.71494140624999,9.8994140625],[-85.23564453124999,10.242089843749994],[-85.2365234375,10.107373046874997],[-84.88642578125,9.820947265624994],[-85.07705078125,9.60195312499999],[-85.31455078124999,9.8109375],[-85.62485351562499,9.902441406249991],[-85.84965820312499,10.292041015624989],[-85.667236328125,10.745019531249994],[-85.90800781249999,10.897558593749991],[-85.7443359375,11.06210937499999],[-85.5841796875,11.189453125],[-84.9091796875,10.9453125],[-84.6341796875,11.045605468749997],[-83.91928710937499,10.7353515625],[-83.71293945312499,10.785888671875],[-83.6419921875,10.917236328125]]]},"properties":{"name":"Costa Rica","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-82.56176757812503,21.571679687500023],[-82.959619140625,21.441308593750023],[-83.18378906250001,21.59345703125004],[-82.97358398437498,21.592285156250057],[-83.08251953124997,21.791406250000023],[-82.99121093750003,21.942724609375034],[-82.71455078124998,21.890283203125023],[-82.56176757812503,21.571679687500023]]],[[[-77.66899414062493,21.951953125000045],[-77.91855468749998,22.088085937499983],[-77.63369140624994,22.054003906250074],[-77.66899414062493,21.951953125000045]]],[[[-77.87939453125,22.127539062500034],[-78.04165039062502,22.201269531250034],[-77.99921874999998,22.298730468749994],[-77.87939453125,22.127539062500034]]],[[[-81.83745117187499,23.163037109374955],[-81.26235351562497,23.156835937500034],[-81.14462890624998,23.054931640625057],[-80.65014648437494,23.10307617187499],[-80.36489257812502,22.943408203125074],[-79.82026367187498,22.887011718750045],[-79.27568359374999,22.407617187499994],[-78.68647460937493,22.366845703125023],[-77.63681640624995,21.79736328125],[-77.49711914062502,21.78833007812503],[-77.58315429687497,21.889257812499977],[-77.49726562499995,21.871630859375045],[-77.14414062499995,21.643603515625017],[-77.36616210937498,21.612646484375034],[-77.25288085937498,21.483496093750006],[-77.0986328125,21.589013671875023],[-76.86743164062497,21.330419921875006],[-75.72294921874996,21.111035156249983],[-75.59580078125,20.99467773437499],[-75.72456054687493,20.71455078125004],[-74.882568359375,20.65063476562497],[-74.51313476562495,20.384570312500045],[-74.16748046874997,20.292187499999955],[-74.15371093750002,20.168554687500006],[-75.11640624999995,19.901416015625017],[-75.151611328125,20.008349609375045],[-75.29047851562495,19.893115234375017],[-76.15844726562497,19.98974609374997],[-77.715087890625,19.85546874999997],[-77.10380859374999,20.407519531250017],[-77.22958984374995,20.64375],[-78.11635742187497,20.761865234374994],[-78.49077148437493,21.05371093750003],[-78.72768554687497,21.592724609374955],[-79.35742187500003,21.58515625000001],[-80.23134765625,21.872167968750063],[-80.48544921874998,22.1234375],[-81.03564453124997,22.073583984375063],[-81.18549804687495,22.26796875000005],[-81.284375,22.109423828125074],[-81.84941406249993,22.21367187499999],[-82.077734375,22.3876953125],[-81.71035156250002,22.496679687500006],[-81.83881835937498,22.672460937500034],[-82.73803710937497,22.689257812500074],[-83.37963867187503,22.222998046875034],[-83.90073242187495,22.17011718750001],[-84.03095703124993,21.94311523437503],[-84.502587890625,21.776171875000045],[-84.50136718750002,21.930273437499977],[-84.88720703125003,21.856982421875074],[-84.32636718749998,22.074316406250034],[-84.36127929687498,22.37890625],[-84.04492187500003,22.666015625000057],[-83.25781249999997,22.967578125000017],[-81.83745117187499,23.163037109374955]]]]},"properties":{"name":"Cuba","childNum":4}},{"geometry":{"type":"Polygon","coordinates":[[[-68.75107421874999,12.059765625],[-68.9951171875,12.141845703125],[-69.15888671875,12.380273437499994],[-68.75107421874999,12.059765625]]]},"properties":{"name":"Curaçao","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-81.36953124999997,19.34887695312497],[-81.10712890624995,19.305175781250057],[-81.40478515624994,19.278417968750006],[-81.36953124999997,19.34887695312497]]],[[[-79.823388671875,19.711914062500057],[-79.90620117187501,19.702539062499994],[-79.74228515625,19.757128906250017],[-79.823388671875,19.711914062500057]]]]},"properties":{"name":"Cayman Is.","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[34.004492187500006,35.065234375],[33.47578125000001,35.000341796875],[33.3837890625,35.1626953125],[32.91953125,35.087841796875],[32.71269531250002,35.171044921874994],[32.8798828125,35.180566406249994],[32.94160156250001,35.390429687499996],[33.60761718750001,35.354150390624994],[34.55605468750002,35.662060546875],[33.941992187500006,35.292041015624996],[34.004492187500006,35.065234375]]]},"properties":{"name":"N. Cyprus","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[32.71269531250002,35.171044921874994],[32.91953125,35.087841796875],[33.3837890625,35.1626953125],[33.47578125000001,35.000341796875],[34.004492187500006,35.065234375],[34.05019531250002,34.98837890625],[33.69941406250001,34.969873046874994],[33.007910156250006,34.569580078125],[32.44902343750002,34.729443359375],[32.31718750000002,34.9533203125],[32.30097656250001,35.082958984375],[32.71269531250002,35.171044921874994]]]},"properties":{"name":"Cyprus","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[14.809375,50.858984375],[14.895800781250017,50.861376953124996],[14.98291015625,50.886572265625],[14.99375,51.01435546875],[16.007226562500023,50.611621093749996],[16.2822265625,50.655615234375],[16.419726562500017,50.573632812499994],[16.210351562500023,50.423730468749994],[16.63916015625,50.1021484375],[16.989648437500023,50.2369140625],[16.88007812500001,50.427050781249996],[17.41523437500001,50.254785156249994],[17.702246093750006,50.307177734374996],[17.627050781250006,50.11640625],[17.874804687500017,49.972265625],[18.0283203125,50.03525390625],[18.562402343750023,49.879345703125],[18.83222656250001,49.510791015624996],[18.160937500000017,49.257373046874996],[18.0859375,49.06513671875],[17.75849609375001,48.888134765625],[17.135644531250023,48.841064453125],[16.953125,48.598828125],[16.543554687500006,48.796240234375],[16.057226562500006,48.754785156249994],[15.066796875000023,48.997851562499996],[14.691308593750023,48.59921875],[14.049121093750017,48.602490234375],[13.814746093750017,48.766943359375],[13.769921875000023,48.815966796874996],[13.684960937500023,48.876708984375],[13.547656250000017,48.95966796875],[13.440722656250017,48.95556640625],[13.401171875000017,48.977587890624996],[12.916699218750011,49.33046875],[12.68115234375,49.414501953125],[12.390527343750023,49.739648437499994],[12.5125,49.87744140625],[12.09921875,50.310986328125],[12.134863281250006,50.3109375],[12.1748046875,50.288378906249996],[12.231152343750011,50.244873046875],[12.27734375,50.181445312499996],[12.3056640625,50.205712890624994],[12.549023437500011,50.393408203125],[13.016406250000017,50.490380859374994],[13.18115234375,50.510498046875],[14.369042968750023,50.898730468749996],[14.319726562500023,51.03779296875],[14.545703125000017,50.993945312499996],[14.559667968750006,50.954931640625],[14.59521484375,50.918603515624994],[14.623828125000017,50.91474609375],[14.613574218750017,50.85556640625],[14.658203125,50.8326171875],[14.723339843750011,50.814697265625],[14.766503906250023,50.818310546875],[14.797460937500006,50.842333984374996],[14.809375,50.858984375]]]},"properties":{"name":"Czech Rep.","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[14.1982421875,53.919042968750034],[13.92578125,53.879052734374966],[13.827734375,54.12724609374999],[14.1982421875,53.919042968750034]]],[[[13.709179687500011,54.382714843749994],[13.707324218750074,54.281152343749994],[13.190039062500034,54.32563476562501],[13.336816406249994,54.697119140625006],[13.65761718750008,54.55957031249997],[13.709179687500011,54.382714843749994]]],[[[9.739746093750028,54.82553710937498],[10.022167968750011,54.673925781250006],[9.86865234375,54.47246093749999],[10.731542968750006,54.31625976562506],[11.013378906250068,54.37915039062497],[11.008593750000074,54.18115234374997],[10.810742187500068,54.075146484374955],[10.917773437500045,53.99531250000004],[11.39960937500004,53.94462890625002],[12.111328125,54.168310546875006],[12.57539062500004,54.467382812500006],[13.028613281250017,54.411035156249994],[13.448046875000017,54.14086914062503],[13.724218750000063,54.153222656249966],[13.865527343750074,53.85336914062498],[14.258886718750006,53.729638671874994],[14.298730468750051,53.55644531249999],[14.41455078125,53.28349609374996],[14.412304687500011,53.216748046874955],[14.410937500000074,53.19902343749999],[14.368554687500051,53.105566406250034],[14.293164062500068,53.026757812499966],[14.138867187500068,52.93286132812503],[14.128613281250011,52.87822265625002],[14.253710937500017,52.78251953124996],[14.514062500000023,52.645605468750034],[14.619433593750017,52.52851562499998],[14.569726562499994,52.431103515624955],[14.554589843750023,52.35966796874996],[14.573925781250068,52.31416015625001],[14.615625,52.277636718750045],[14.679882812500068,52.25],[14.752539062500034,52.08183593750002],[14.601660156250034,51.832373046875006],[14.738671875000051,51.62714843750004],[14.7109375,51.54492187499997],[14.724707031250063,51.523876953124955],[14.90595703125004,51.463330078124955],[14.935546875000028,51.435351562500045],[14.9638671875,51.095117187499994],[14.917480468750057,51.00874023437498],[14.814257812499989,50.871630859375045],[14.809375,50.858984375000034],[14.797460937500034,50.84233398437502],[14.766503906250051,50.81831054687501],[14.72333984375004,50.81469726562497],[14.658203125,50.832617187500006],[14.613574218750045,50.85556640625006],[14.623828125000017,50.91474609375004],[14.595214843750057,50.91860351562502],[14.559667968750006,50.954931640625034],[14.545703124999989,50.99394531249999],[14.319726562500051,51.037792968749955],[14.36904296875008,50.89873046874996],[13.18115234375,50.510498046875],[13.016406250000017,50.490380859374994],[12.549023437500011,50.393408203125034],[12.3056640625,50.205712890624994],[12.27734375,50.18144531250002],[12.231152343749983,50.24487304687497],[12.174804687500057,50.28837890624996],[12.134863281250006,50.31093750000002],[12.099218750000034,50.31098632812504],[12.089843749999972,50.30175781250003],[12.089746093750051,50.2685546875],[12.294598214285761,50.13608119419641],[12.5125,49.87744140625],[12.390527343750051,49.739648437499994],[12.68115234375,49.41450195312501],[12.91669921875004,49.33046875000002],[13.401171875000074,48.97758789062499],[13.440722656250045,48.95556640625003],[13.547656250000074,48.95966796874998],[13.684960937500051,48.87670898437506],[13.769921875000051,48.81596679687502],[13.814746093750017,48.76694335937498],[13.802929687500011,48.74750976562501],[13.798828124999972,48.62167968750006],[13.785351562499983,48.58745117187502],[13.486621093750074,48.58183593750002],[13.471679687500028,48.57182617187502],[13.459863281250023,48.564550781250034],[13.409375,48.39414062500006],[13.322851562500006,48.33125],[13.215234375000023,48.301904296874994],[12.760351562500063,48.10698242187499],[12.95351562500008,47.890625],[12.897656250000068,47.721875],[13.054101562500051,47.655126953125034],[13.047949218750034,47.57915039062502],[13.031542968750074,47.50800781250001],[13.01435546875004,47.478076171875045],[12.968066406250017,47.475683593750006],[12.878906250000057,47.506445312500034],[12.809375,47.542187499999955],[12.782812500000034,47.56416015624998],[12.781152343750051,47.590429687500006],[12.796191406249989,47.60703125],[12.771386718750023,47.63940429687503],[12.685839843750074,47.66933593750002],[12.209277343750074,47.71826171875003],[12.196875,47.709082031250034],[12.203808593750011,47.64672851562503],[12.185644531250063,47.61953125],[11.041992187500028,47.39311523437496],[10.98085937499999,47.39814453125001],[10.893945312500051,47.470458984375],[10.870605468750028,47.500781250000045],[10.873046874999972,47.52021484375001],[10.741601562500023,47.52412109375001],[10.65869140625,47.547216796875006],[10.482812500000051,47.54179687499996],[10.439453125000028,47.55156249999999],[10.403906250000063,47.41699218750003],[10.369140625,47.366064453125034],[10.18300781250008,47.27880859375003],[10.200292968750063,47.36342773437505],[10.066308593750023,47.39335937500002],[10.064575892857171,47.42369419642856],[10.059863281250045,47.44907226562498],[10.034082031250023,47.47358398437501],[9.971582031249994,47.50532226562498],[9.839160156250017,47.55229492187496],[9.748925781250023,47.575537109375006],[9.524023437500034,47.52421875000002],[8.572656250000023,47.775634765625],[8.435742187500011,47.73134765625002],[8.403417968750006,47.687792968750045],[8.413281250000068,47.66269531249998],[8.451757812500006,47.65180664062498],[8.552343750000063,47.65913085937498],[8.56708984375004,47.65190429687502],[8.57050781250004,47.63779296874998],[8.55947265625008,47.62402343750003],[8.477636718750034,47.61269531250002],[8.454003906249994,47.59619140625003],[7.615625,47.59272460937504],[7.616601562500023,48.15678710937502],[8.134863281250006,48.97358398437498],[7.450585937500051,49.152197265625034],[6.735449218750006,49.16059570312498],[6.344335937500006,49.45273437499998],[6.4873046875,49.798486328124994],[6.204882812500017,49.915136718750034],[6.13818359375,49.97431640625001],[6.10976562500008,50.034375],[6.116503906250045,50.120996093749966],[6.340917968750006,50.451757812500034],[5.993945312500017,50.75043945312504],[6.048437500000034,50.90488281250006],[5.857519531250034,51.030126953125006],[6.129980468750034,51.14741210937501],[6.198828125000034,51.45],[5.948730468750057,51.80268554687501],[6.800390625,51.96738281249998],[6.724511718749994,52.080224609374966],[7.035156250000057,52.38022460937498],[6.748828125000074,52.464013671874994],[6.710742187500045,52.61787109374998],[7.033007812500045,52.65136718749997],[7.197265625000028,53.28227539062499],[7.074316406250034,53.477636718750006],[7.285253906250034,53.68134765625001],[8.00927734375,53.69072265624999],[8.108496093750063,53.46767578125002],[8.245214843750006,53.44531249999997],[8.333886718750051,53.606201171875],[8.495214843750063,53.39423828124998],[8.618945312500045,53.875],[9.20556640625,53.85595703124997],[9.783984375000074,53.554638671874955],[9.31201171875,53.859130859375],[8.92041015625,53.96533203125006],[8.906640625000023,54.26079101562502],[8.625781250000017,54.35395507812501],[8.951855468750011,54.46757812499996],[8.670312500000023,54.903417968750034],[9.739746093750028,54.82553710937498]]],[[[8.307714843750034,54.786962890625034],[8.451464843750017,55.05537109374998],[8.3798828125,54.89985351562501],[8.629589843750068,54.891748046874966],[8.307714843750034,54.786962890625034]]]]},"properties":{"name":"Germany","childNum":4}},{"geometry":{"type":"Polygon","coordinates":[[[43.24599609375002,11.499804687499989],[42.92275390625002,10.999316406249989],[42.557714843750006,11.080761718749997],[41.79824218750002,10.98046875],[41.79267578125001,11.68603515625],[42.378515625,12.46640625],[42.40859375000002,12.494384765625],[42.45,12.521337890624991],[42.47939453125002,12.513623046874997],[42.703710937500006,12.380322265624997],[42.76748046875002,12.4228515625],[42.825292968750006,12.5693359375],[42.86591796875001,12.622802734375],[42.88330078125,12.621289062499997],[43.00566406250002,12.662304687499997],[43.11669921875,12.70859375],[43.353515625,12.367041015624991],[43.38027343750002,12.091259765624997],[42.64003906250002,11.560107421874989],[42.52177734375002,11.572167968749994],[42.58378906250002,11.496777343749997],[43.04277343750002,11.588476562499991],[43.24599609375002,11.499804687499989]]]},"properties":{"name":"Djibouti","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-61.281689453125,15.2490234375],[-61.37539062499999,15.227294921875],[-61.45810546874999,15.633105468750003],[-61.277246093749994,15.526708984374991],[-61.281689453125,15.2490234375]]]},"properties":{"name":"Dominica","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[11.361425781250006,54.891650390625045],[11.739550781250017,54.80742187500002],[11.765917968750074,54.67944335937506],[11.457421875000023,54.628857421874955],[11.035546875000051,54.77309570312505],[11.058593750000028,54.940576171874966],[11.361425781250006,54.891650390625045]]],[[[12.549218750000051,54.96577148437504],[12.11884765625004,54.91440429687506],[12.274023437500034,55.064111328124994],[12.549218750000051,54.96577148437504]]],[[[10.061230468750068,54.88637695312502],[9.80625,54.90600585937503],[9.78125,55.06904296875001],[10.061230468750068,54.88637695312502]]],[[[10.734082031250011,54.750732421875],[10.621679687500006,54.851416015625006],[10.95107421875008,55.15620117187501],[10.734082031250011,54.750732421875]]],[[[15.087695312500017,55.021875],[14.684179687500063,55.10224609375004],[14.765332031250068,55.296728515625034],[15.132617187500017,55.14453125000003],[15.087695312500017,55.021875]]],[[[10.645117187500006,55.60981445312498],[10.785253906250034,55.13339843749998],[10.44277343750008,55.04877929687498],[9.988769531250028,55.163183593750006],[9.860644531250045,55.515478515625034],[10.645117187500006,55.60981445312498]]],[[[12.665722656250068,55.596533203125006],[12.550878906250034,55.55625],[12.59921875,55.68022460937502],[12.665722656250068,55.596533203125006]]],[[[12.56875,55.785058593749966],[12.215039062500011,55.46650390624998],[12.413085937500028,55.28618164062502],[12.089941406250006,55.18813476562505],[12.050390625000034,54.81533203125002],[11.8623046875,54.77260742187502],[11.653808593750057,55.186914062499966],[11.286328125000068,55.20444335937498],[10.978906250000051,55.721533203125006],[11.322265625000028,55.752539062500006],[11.627734375000074,55.95688476562498],[11.819726562500023,55.69765625000002],[11.86640625000004,55.968164062499966],[12.218945312499983,56.11865234374997],[12.578710937500006,56.06406250000006],[12.56875,55.785058593749966]]],[[[11.052148437500051,57.25253906250006],[10.873828125000045,57.26225585937499],[11.174511718750011,57.322900390624994],[11.052148437500051,57.25253906250006]]],[[[9.739746093750028,54.82553710937498],[8.670312500000023,54.903417968750034],[8.61591796875004,55.41821289062503],[8.132128906250074,55.59980468749998],[8.16396484375008,56.60688476562498],[8.671679687500045,56.49565429687496],[8.88808593750008,56.73505859374998],[9.06708984375004,56.79384765625005],[9.196386718750006,56.70166015625],[9.2548828125,57.01171875000003],[8.992773437499977,57.01611328125003],[8.771972656250028,56.72529296875004],[8.468359375,56.66455078125],[8.284082031250023,56.85234374999999],[8.618554687500051,57.11127929687498],[9.43359375,57.17431640625003],[9.96230468750008,57.580957031249994],[10.609960937500034,57.73691406249998],[10.282714843750057,56.620507812499994],[10.926171875000051,56.44326171875002],[10.753417968750028,56.24199218749999],[10.31875,56.212890625],[10.18300781250008,55.86518554687504],[9.903710937500023,55.84282226562502],[10.02363281250004,55.76142578125004],[9.591113281250017,55.49321289062502],[9.670996093750063,55.26640624999999],[9.453710937500006,55.03955078125006],[9.732324218750023,54.96801757812506],[9.739746093750028,54.82553710937498]]]]},"properties":{"name":"Denmark","childNum":10,"cp":[10.2768332,56.1773879]}},{"geometry":{"type":"Polygon","coordinates":[[[-71.647216796875,19.195947265624994],[-71.746484375,19.285839843749997],[-71.71147460937499,19.486572265625],[-71.75742187499999,19.688183593749997],[-71.779248046875,19.718164062499994],[-71.6673828125,19.8486328125],[-70.95415039062499,19.913964843749994],[-70.19384765625,19.63803710937499],[-69.95683593749999,19.671875],[-69.739404296875,19.29921875],[-69.23247070312499,19.27182617187499],[-69.60595703125,19.206494140624997],[-69.62363281249999,19.117822265624994],[-68.684765625,18.90478515625],[-68.33916015624999,18.611523437499997],[-68.68740234375,18.21494140624999],[-68.9349609375,18.408007812500003],[-69.27451171874999,18.43984375],[-69.770654296875,18.443554687499997],[-70.479931640625,18.21728515625],[-70.644677734375,18.336230468750003],[-71.02783203125,18.273193359375],[-71.43896484375,17.63559570312499],[-71.63173828125,17.773632812499997],[-71.768310546875,18.03916015624999],[-71.76376953124999,18.20395507812499],[-71.737255859375,18.270800781250003],[-71.7619140625,18.34130859375],[-71.87255859375,18.416210937499997],[-71.940380859375,18.512597656249994],[-72.000390625,18.597900390625],[-71.98686523437499,18.6103515625],[-71.86650390624999,18.614160156249994],[-71.74321289062499,18.73291015625],[-71.72705078125,18.80322265625],[-71.733642578125,18.856396484374997],[-71.80712890625,18.987011718749997],[-71.647216796875,19.195947265624994]]]},"properties":{"name":"Dominican Rep.","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[8.207617187500006,36.518945312499994],[8.348730468750006,36.36796875],[8.318066406250011,35.654931640624994],[8.31640625,35.403125],[8.35986328125,35.299609375],[8.394238281250011,35.203857421875],[8.312109375,35.084619140624994],[8.27685546875,34.9794921875],[8.24560546875,34.73408203125],[7.513867187500011,34.080517578125],[7.534375,33.717919921874994],[7.877246093750017,33.172119140625],[8.1125,33.055322265624994],[8.333398437500023,32.543603515624994],[9.044042968750006,32.07236328125],[9.160253906250006,31.621337890625],[9.224023437500023,31.373681640624994],[9.51875,30.229394531249994],[9.310253906250011,30.115234375],[9.805273437500006,29.176953125],[9.916015625,27.785693359374996],[9.74755859375,27.330859375],[9.883203125000023,26.630810546874997],[9.491406250000011,26.333740234375],[9.4482421875,26.067138671875],[10.000683593750011,25.332080078125003],[10.255859375,24.591015625],[10.395898437500023,24.485595703125],[10.686132812500006,24.55136718749999],[11.507617187500017,24.314355468749994],[11.967871093750006,23.517871093750003],[7.481738281250017,20.873095703125003],[5.836621093750011,19.479150390624994],[4.227636718750006,19.142773437499997],[3.3564453125,18.986621093750003],[3.119726562500006,19.103173828124994],[3.255859375,19.4109375],[3.130273437500023,19.85019531249999],[1.685449218750023,20.378369140624997],[1.610644531250017,20.555566406249994],[1.165722656250011,20.817431640625003],[1.1455078125,21.102246093749997],[-1.947900390624994,23.124804687500003],[-4.822607421874977,24.99560546875],[-8.683349609375,27.2859375],[-8.683349609375,27.656445312499997],[-8.683349609375,27.900390625],[-8.659912109375,28.718603515625],[-7.485742187499994,29.392236328124994],[-7.427685546874983,29.425],[-7.142431640624977,29.619580078124997],[-6.855566406249977,29.601611328124996],[-6.755126953125,29.583837890625],[-6.635351562499977,29.568798828124997],[-6.597753906249977,29.578955078125],[-6.520556640624989,29.659863281249997],[-6.479736328125,29.820361328124996],[-6.00429687499999,29.83125],[-5.448779296874989,29.956933593749994],[-5.293652343749983,30.058642578124996],[-5.180126953124983,30.166162109374994],[-4.96826171875,30.465380859374996],[-4.778515624999983,30.552392578124994],[-4.529150390624977,30.625537109374996],[-4.322851562499977,30.698876953124994],[-4.148779296874977,30.8095703125],[-3.626904296874983,31.000927734374997],[-3.833398437499994,31.197802734374996],[-3.837109374999983,31.512353515624994],[-3.768164062499977,31.68955078125],[-3.700244140624989,31.700097656249994],[-3.604589843749977,31.686767578125],[-3.439794921874977,31.704541015624997],[-3.017382812499989,31.834277343749996],[-2.988232421874983,31.87421875],[-2.930859374999983,32.042529296874996],[-2.863427734374994,32.07470703125],[-1.275341796874983,32.089013671874994],[-1.16259765625,32.399169921875],[-1.111035156249983,32.552294921874996],[-1.188232421875,32.60849609375],[-1.29638671875,32.675683593749994],[-1.352148437499977,32.703369140625],[-1.45,32.784814453124994],[-1.510009765625,32.87763671875],[-1.550732421874983,33.073583984375],[-1.67919921875,33.318652343749996],[-1.795605468749983,34.751904296875],[-2.131787109374983,34.970849609374994],[-2.190771484374977,35.02978515625],[-2.219628906249994,35.10419921875],[-1.673632812499989,35.18310546875],[-0.426123046874977,35.8615234375],[-0.048242187499994,35.8328125],[0.312207031250011,36.162353515625],[0.9716796875,36.4439453125],[2.593359375,36.60068359375],[2.972851562500011,36.784472656249996],[3.779003906250011,36.89619140625],[4.758105468750017,36.896337890625],[5.29541015625,36.648242187499996],[6.486523437500011,37.085742187499996],[6.927539062500017,36.91943359375],[7.238476562500011,36.968505859375],[7.204296875000011,37.0923828125],[7.910449218750017,36.856347656249994],[8.576562500000023,36.93720703125],[8.601269531250011,36.833935546875],[8.207617187500006,36.518945312499994]]]},"properties":{"name":"Algeria","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-80.131591796875,-2.973144531249957],[-80.27294921875003,-2.995898437499974],[-80.22368164062502,-2.753125],[-80.08076171874995,-2.668847656249966],[-79.90903320312495,-2.725585937499972],[-80.131591796875,-2.973144531249957]]],[[[-90.42392578125,-1.339941406250034],[-90.51953124999994,-1.299121093749974],[-90.47719726562494,-1.22099609374996],[-90.42392578125,-1.339941406250034]]],[[[-89.41889648437498,-0.911035156249966],[-89.60859374999998,-0.888574218750009],[-89.28784179687503,-0.689843750000023],[-89.41889648437498,-0.911035156249966]]],[[[-90.33486328125,-0.771582031249977],[-90.54213867187502,-0.676464843749955],[-90.53168945312493,-0.581445312499966],[-90.26938476562498,-0.48466796874996],[-90.19272460937498,-0.658789062500006],[-90.33486328125,-0.771582031249977]]],[[[-91.42597656249995,-0.460839843749994],[-91.61074218749994,-0.44394531250002],[-91.64667968749998,-0.284472656249946],[-91.46015625000001,-0.255664062500031],[-91.42597656249995,-0.460839843749994]]],[[[-90.57392578124993,-0.333984375],[-90.8677734375,-0.271386718750037],[-90.78037109374998,-0.160449218749989],[-90.57392578124993,-0.333984375]]],[[[-91.27216796874998,0.025146484374986],[-90.799658203125,-0.752050781249991],[-90.90551757812497,-0.94052734375002],[-91.13105468750001,-1.019628906249977],[-91.41904296874998,-0.996679687500006],[-91.49541015624999,-0.860937499999977],[-91.120947265625,-0.559082031250028],[-91.36918945312493,-0.287207031249977],[-91.42885742187502,-0.023388671874955],[-91.59682617187497,0.002099609374994],[-91.36137695312496,0.125830078124977],[-91.27216796874998,0.025146484374986]]],[[[-78.90922851562502,1.252783203124977],[-78.99169921875003,1.293212890625043],[-78.89980468749997,1.359765625],[-78.90922851562502,1.252783203124977]]],[[[-75.28447265624999,-0.10654296875002],[-75.62626953124999,-0.122851562499974],[-75.63203125000001,-0.157617187500037],[-75.56059570312502,-0.200097656249994],[-75.49106445312498,-0.24833984374996],[-75.42470703124997,-0.408886718749983],[-75.259375,-0.59013671874996],[-75.24960937499998,-0.951855468750026],[-75.34819335937499,-0.966796874999957],[-75.38012695312503,-0.94023437499996],[-75.40805664062503,-0.92431640625],[-75.42041015624997,-0.962207031250003],[-75.570556640625,-1.53125],[-76.08979492187501,-2.133105468749974],[-76.6791015625,-2.562597656249991],[-77.860595703125,-2.981640625000011],[-78.240380859375,-3.472558593750009],[-78.345361328125,-3.397363281249966],[-78.64799804687499,-4.248144531250006],[-78.68603515625003,-4.562402343749994],[-78.86152343749998,-4.665039062499943],[-78.90761718749997,-4.714453124999977],[-78.92578125,-4.770703124999983],[-78.91420898437497,-4.818652343749974],[-78.919189453125,-4.858398437499986],[-78.97539062499999,-4.873242187499997],[-78.99526367187497,-4.908007812499974],[-79.03330078124998,-4.96914062499999],[-79.07626953125003,-4.990625],[-79.18666992187497,-4.958203124999983],[-79.26811523437493,-4.957617187499949],[-79.33095703124997,-4.92783203125002],[-79.39941406249997,-4.840039062499983],[-79.45576171874998,-4.766210937499949],[-79.50190429687495,-4.670605468750011],[-79.51616210937493,-4.539160156249963],[-79.57768554687496,-4.50058593750002],[-79.638525390625,-4.454882812500031],[-79.71098632812502,-4.467578124999946],[-79.79726562500002,-4.47636718749996],[-79.8451171875,-4.445898437499977],[-79.962890625,-4.390332031250026],[-80.06352539062499,-4.327539062500023],[-80.13955078125002,-4.296093750000011],[-80.19746093750001,-4.311035156249943],[-80.293359375,-4.416796875],[-80.38349609374998,-4.46367187499996],[-80.424169921875,-4.461425781250028],[-80.47856445312499,-4.430078125000037],[-80.48847656249995,-4.393652343749991],[-80.44384765625003,-4.335839843750023],[-80.35288085937495,-4.208496093750014],[-80.453759765625,-4.205175781249963],[-80.48847656249995,-4.165527343749972],[-80.49345703124999,-4.119140625000014],[-80.510009765625,-4.06953125000004],[-80.49013671874994,-4.010058593750003],[-80.43720703125001,-3.978613281249991],[-80.30327148437499,-4.005078124999969],[-80.26689453124993,-3.948828124999963],[-80.23051757812499,-3.924023437499969],[-80.19414062499996,-3.905859375],[-80.24375,-3.576757812500006],[-80.32465820312498,-3.387890625],[-79.96333007812501,-3.15771484375],[-79.72988281249997,-2.579101562499972],[-79.842138671875,-2.0673828125],[-79.92558593749996,-2.548535156249969],[-80.03017578124994,-2.556738281249949],[-80.00664062499993,-2.353808593750003],[-80.28471679687502,-2.706738281249955],[-80.93217773437493,-2.269140624999977],[-80.76059570312498,-1.934570312500028],[-80.90239257812499,-1.078906249999974],[-80.55390624999998,-0.847949218749989],[-80.45546875,-0.585449218749986],[-80.282373046875,-0.620507812500023],[-80.48227539062503,-0.368261718749963],[-80.046142578125,0.155371093750048],[-80.08828124999997,0.78476562500002],[-78.89965820312503,1.20625],[-78.85966796874996,1.455371093750031],[-78.1806640625,0.968554687499974],[-77.702880859375,0.837841796874997],[-77.46767578124997,0.636523437500017],[-77.396337890625,0.393896484374963],[-76.49462890624997,0.23544921875002],[-76.27060546874998,0.439404296874997],[-75.77666015624999,0.08925781249998],[-75.28447265624999,-0.10654296875002]]]]},"properties":{"name":"Ecuador","childNum":9}},{"geometry":{"type":"Polygon","coordinates":[[[34.24531250000001,31.208300781249996],[34.904296875,29.47734375],[34.736425781250006,29.27060546875],[34.39970703125002,28.01601562499999],[34.22011718750002,27.764306640624994],[33.76025390625,28.04765625],[33.24775390625001,28.567724609375],[32.56572265625002,29.973974609375],[32.35976562500002,29.630664062499996],[32.89824218750002,28.565234375],[33.54707031250001,27.898144531249997],[33.5498046875,27.607373046874997],[33.84931640625001,27.184912109375],[33.959082031250006,26.6490234375],[35.19414062500002,24.475146484375003],[35.78388671875001,23.937792968750003],[35.54082031250002,23.920654296875],[35.50439453125,23.779296875],[35.697851562500006,22.946191406249994],[36.22968750000001,22.628808593749994],[36.87138671875002,21.996728515624994],[31.434472656250023,21.995849609375],[31.486132812500017,22.14780273437499],[31.400292968750023,22.202441406250003],[31.260644531250023,22.00229492187499],[31.092675781250023,21.994873046875],[28.036425781250017,21.995361328125],[24.980273437500017,21.995849609375],[24.980273437500017,25.5888671875],[24.980273437500017,29.181884765625],[24.703222656250006,30.201074218749994],[24.96142578125,30.678515625],[24.85273437500001,31.334814453125],[25.150488281250006,31.654980468749997],[25.382226562500023,31.51279296875],[25.89326171875001,31.620898437499996],[27.248046875,31.377880859374997],[27.5400390625,31.212695312499996],[28.51484375000001,31.050439453124994],[29.072070312500017,30.830273437499997],[29.929785156250006,31.227490234374997],[30.22265625,31.2583984375],[30.395117187500006,31.4576171875],[30.92353515625001,31.566845703124997],[30.56298828125,31.4169921875],[31.001757812500017,31.462792968749994],[31.082910156250023,31.603320312499996],[31.5244140625,31.458251953125],[31.888964843750017,31.54140625],[32.13603515625002,31.341064453125],[31.8921875,31.482470703124996],[31.77109375,31.292578125],[32.10175781250001,31.092822265624996],[32.281835937500006,31.200878906249997],[32.21621093750002,31.29375],[32.60332031250002,31.06875],[33.66650390625,31.130419921874996],[34.19814453125002,31.322607421875],[34.24531250000001,31.208300781249996]]]},"properties":{"name":"Egypt","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[40.141210937500006,15.696142578125034],[40.399023437500006,15.579882812500045],[39.975195312500006,15.612451171875023],[39.94746093750004,15.696142578125034],[40.07050781250004,15.676611328125034],[39.93994140625003,15.744531250000023],[39.9567382812501,15.889404296875057],[40.141210937500006,15.696142578125034]]],[[[40.07646484375002,16.082421875000023],[40.11005859375004,15.985742187500051],[39.99609375000003,16.04267578125001],[40.07646484375002,16.082421875000023]]],[[[40.938574218750006,13.983105468749997],[40.82011718750002,14.111669921874991],[40.22148437500002,14.431152343749972],[39.531835937500006,14.53671875],[39.198046875000074,14.479394531250037],[39.1354492187501,14.581884765625034],[39.07421874999997,14.628222656249974],[39.02382812499999,14.628222656249974],[38.99570312500006,14.586865234374983],[38.81201171875003,14.482324218750009],[38.50439453124997,14.42441406250002],[38.43144531250002,14.428613281249994],[38.221484375000074,14.649658203124986],[38.002539062500006,14.737109375000045],[37.94345703125006,14.810546875],[37.884179687499994,14.852294921874972],[37.82031250000003,14.708496093749986],[37.70839843750005,14.45722656250004],[37.64843750000003,14.32255859375006],[37.571191406249994,14.149072265624966],[37.546777343749994,14.143847656249974],[37.507226562499994,14.156396484375037],[37.257226562499994,14.453759765625051],[37.024511718750006,14.271972656250057],[36.81191406250005,14.315039062500034],[36.67910156250005,14.307568359375026],[36.542382812499994,14.25820312499999],[36.52431640625005,14.256835937499986],[36.492285156250006,14.544335937500023],[36.470800781250006,14.736474609375009],[36.448144531249994,14.940087890625009],[36.42675781249997,15.132080078125043],[36.566015625,15.362109375],[36.9137695312501,16.296191406250045],[36.887792968750006,16.624658203124994],[36.9787109375001,16.800585937500045],[36.9757812500001,16.866552734375006],[36.99521484375006,17.020556640625017],[37.00898437500004,17.058886718750017],[37.06152343749997,17.061279296875057],[37.16953125000006,17.04140625],[37.41103515625005,17.061718749999955],[37.452929687500074,17.108691406250017],[37.51015625,17.28813476562499],[37.54746093750006,17.32412109375005],[37.78242187500004,17.458007812500057],[38.253515625,17.584765625000017],[38.26728515625004,17.616699218750057],[38.28984375000002,17.637011718750017],[38.34736328125004,17.68359375],[38.37373046875004,17.717333984375045],[38.42246093750006,17.823925781249983],[38.60947265625006,18.00507812500004],[39.03447265625002,17.085546875000034],[39.298925781250006,15.921093750000011],[39.78554687499999,15.124853515624991],[39.86376953124997,15.470312500000034],[40.20410156250003,15.014111328124983],[41.17646484375004,14.620312500000054],[41.65820312499997,13.983056640624994],[42.24511718749997,13.587646484374986],[42.39931640625005,13.212597656249969],[42.522851562499994,13.221484375],[42.796191406250074,12.864257812500057],[42.96953125000002,12.808349609375028],[42.99902343750003,12.899511718750048],[43.08291015625005,12.824609374999966],[43.11669921874997,12.708593749999963],[43.00566406250002,12.66230468750004],[42.88330078124997,12.621289062500026],[42.86591796875004,12.622802734374986],[42.82529296875006,12.569335937500014],[42.767480468749994,12.422851562500014],[42.70371093750006,12.380322265625054],[42.479394531249994,12.513623046875026],[42.45,12.521337890625006],[42.40859375,12.494384765625014],[42.37851562500006,12.46640625],[42.28994140625005,12.570214843750009],[42.225,12.661962890624963],[42.13427734374997,12.771435546874969],[41.95214843749997,12.88232421875],[41.85957031250004,13.025878906250028],[41.76503906250005,13.183935546874991],[41.362890625,13.499804687500031],[40.938574218750006,13.983105468749997]]]]},"properties":{"name":"Eritrea","childNum":3}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-17.887939453125,27.809570312500057],[-17.984765625000023,27.646386718750023],[-18.160546874999937,27.76147460937503],[-17.887939453125,27.809570312500057]]],[[[-15.400585937499955,28.147363281250023],[-15.436767578124972,27.810693359375023],[-15.71030273437492,27.784082031250023],[-15.809472656249966,27.994482421874977],[-15.682763671874994,28.15405273437497],[-15.400585937499955,28.147363281250023]]],[[[-17.184667968749977,28.02197265624997],[-17.324902343749955,28.11767578125003],[-17.25859375,28.203173828125045],[-17.103759765624943,28.111132812500017],[-17.184667968749977,28.02197265624997]]],[[[-16.33447265624997,28.37993164062499],[-16.41821289062497,28.15141601562496],[-16.65800781249999,28.007177734374977],[-16.905322265625017,28.33959960937503],[-16.12363281249992,28.57597656249996],[-16.33447265624997,28.37993164062499]]],[[[-14.196777343749943,28.169287109375063],[-14.332617187500006,28.056005859374977],[-14.49179687499992,28.100927734374977],[-14.231982421875017,28.21582031250003],[-14.003369140624983,28.706689453125023],[-13.85722656249996,28.73803710937503],[-13.928027343749989,28.25346679687499],[-14.196777343749943,28.169287109375063]]],[[[-17.83427734374999,28.49321289062496],[-18.00078124999999,28.758251953124955],[-17.928808593749977,28.844580078125063],[-17.7265625,28.724462890625006],[-17.83427734374999,28.49321289062496]]],[[[-13.715966796874966,28.911230468750034],[-13.85991210937496,28.869091796874983],[-13.823632812499966,29.013330078124966],[-13.463574218749955,29.237207031250023],[-13.477929687499966,29.00659179687503],[-13.715966796874966,28.911230468750034]]],[[[1.593945312500068,38.672070312499955],[1.40576171875,38.670996093750006],[1.436328125000017,38.768212890624994],[1.593945312500068,38.672070312499955]]],[[[1.445214843750051,38.91870117187503],[1.223339843750068,38.90385742187502],[1.3486328125,39.080810546875],[1.564453125,39.12104492187504],[1.623632812499977,39.03881835937497],[1.445214843750051,38.91870117187503]]],[[[3.145312500000017,39.79008789062499],[3.461816406250023,39.69775390625003],[3.072851562500006,39.30126953124997],[2.799804687500057,39.38505859374999],[2.700585937500023,39.54213867187502],[2.49951171875,39.47788085937498],[2.37001953125008,39.57207031249999],[3.15869140625,39.97050781249999],[3.145312500000017,39.79008789062499]]],[[[4.293652343750011,39.84184570312499],[3.8671875,39.958740234375],[3.853417968750051,40.06303710937502],[4.22578125000004,40.032373046874966],[4.293652343750011,39.84184570312499]]],[[[-1.794042968749949,43.407324218750006],[-1.410693359374932,43.240087890625034],[-1.460839843749937,43.05175781250006],[-1.300048828124943,43.10097656250002],[-0.586425781249943,42.798974609374966],[0.631640625000045,42.689599609374994],[0.696875,42.84511718750005],[1.428320312499977,42.59589843749998],[1.414843750000074,42.54838867187499],[1.448828124999977,42.43745117187504],[1.534082031250051,42.44169921875002],[1.7060546875,42.50332031250005],[1.859765625000051,42.457080078125045],[1.927929687500068,42.42631835937499],[2.032714843750028,42.353515625],[3.21142578125,42.43115234375],[3.248046875,41.94423828125002],[3.0048828125,41.76743164062506],[2.082617187500063,41.287402343750045],[1.032910156250068,41.06206054687496],[0.714648437500074,40.822851562500006],[0.891113281250057,40.72236328125004],[0.59609375000008,40.614501953125],[-0.327001953124949,39.519873046875006],[-0.204931640624949,39.062597656250034],[0.20156250000008,38.75917968750002],[-0.520800781249989,38.317285156249966],[-0.814648437500011,37.76992187500002],[-0.721582031249966,37.63105468749998],[-1.327539062499937,37.561132812500034],[-1.640966796874949,37.38696289062497],[-2.111523437499983,36.77666015624999],[-4.366845703124994,36.71811523437506],[-4.67412109374996,36.506445312500006],[-5.171484374999949,36.423779296874955],[-5.3609375,36.134912109374994],[-5.62548828125,36.02592773437499],[-6.040673828124937,36.18842773437498],[-6.38413085937492,36.63701171874996],[-6.216796875000028,36.91357421875],[-6.396191406249983,36.831640625],[-6.863769531250028,37.27890625],[-7.406152343749937,37.17944335937497],[-7.44394531249992,37.72827148437497],[-6.957568359374932,38.18789062499999],[-7.106396484374983,38.181005859375006],[-7.343017578124943,38.45742187500002],[-6.997949218749994,39.05644531250002],[-7.53569335937496,39.66157226562501],[-7.117675781249972,39.681689453125045],[-6.975390624999932,39.79838867187502],[-6.896093749999949,40.02182617187506],[-7.032617187499966,40.16791992187498],[-6.8101562499999,40.343115234375034],[-6.928466796874972,41.009130859375006],[-6.2125,41.53203125],[-6.542187499999955,41.672509765624994],[-6.61826171874992,41.9423828125],[-7.147119140625023,41.98115234374998],[-7.40361328124996,41.833691406249955],[-8.152490234374937,41.81196289062498],[-8.266064453124983,42.13740234375001],[-8.777148437500017,41.941064453124994],[-8.887207031249943,42.105273437500045],[-8.690917968749943,42.274169921875],[-8.815820312499966,42.285253906250034],[-8.730029296874989,42.411718750000034],[-8.8115234375,42.64033203124998],[-9.033105468750023,42.593847656250006],[-8.927197265624926,42.79858398437497],[-9.235205078124977,42.97690429687498],[-9.178076171874977,43.17402343749998],[-8.248925781249937,43.43940429687498],[-8.256738281249937,43.57988281249999],[-8.004687499999932,43.69438476562496],[-7.503613281249983,43.73994140625001],[-7.060986328124955,43.55395507812503],[-5.846679687499943,43.645068359375045],[-4.52304687499992,43.41572265625004],[-3.604638671874966,43.51948242187504],[-3.045605468749926,43.37158203125],[-2.875048828125017,43.454443359375006],[-2.337109374999926,43.32802734375002],[-1.794042968749949,43.407324218750006]]]]},"properties":{"name":"Spain","childNum":12,"cp":[-2.9366964,40.3438963]}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[22.61738281250004,58.62124023437502],[23.323242187500057,58.45083007812502],[22.730273437500045,58.23066406250001],[22.371679687499977,58.217138671875006],[21.996875,57.93134765624998],[22.187695312500068,58.15434570312502],[21.88212890624999,58.262353515624994],[21.862304687500057,58.497167968750034],[22.61738281250004,58.62124023437502]]],[[[23.343554687500017,58.550341796875045],[23.10908203125004,58.65922851562502],[23.332812500000045,58.648583984374994],[23.343554687500017,58.550341796875045]]],[[[22.923730468750023,58.826904296875],[22.54218750000001,58.68999023437499],[22.411035156250023,58.863378906250034],[22.05625,58.94360351562506],[22.6494140625,59.08710937499998],[22.90986328125004,58.99121093749997],[22.923730468750023,58.826904296875]]],[[[28.0125,59.484277343749966],[28.15107421875004,59.374414062499966],[27.434179687500006,58.787255859374994],[27.502441406250057,58.221337890624994],[27.778515625000068,57.87070312500006],[27.542089843750063,57.799414062500006],[27.4,57.66679687499999],[27.35195312500005,57.528125],[26.96601562500001,57.60913085937506],[26.532617187499994,57.53100585937503],[26.29804687500001,57.60107421875],[25.66015625,57.920166015625],[25.27265625000001,58.009375],[25.11103515625004,58.06342773437498],[24.45888671875005,57.907861328124994],[24.3625,57.86616210937501],[24.322558593750074,57.87060546875003],[24.529101562500045,58.35424804687497],[24.114843750000034,58.26611328125006],[23.767578125000057,58.36083984374997],[23.50927734375003,58.65854492187498],[23.680761718750063,58.787158203125074],[23.43203125,58.920654296875],[23.494433593750017,59.19565429687498],[24.083398437500023,59.29189453125005],[24.38037109375003,59.47265625],[25.44375,59.52114257812502],[25.50927734374997,59.63901367187506],[26.974707031250006,59.450634765624955],[28.0125,59.484277343749966]]]]},"properties":{"name":"Estonia","childNum":4}},{"geometry":{"type":"Polygon","coordinates":[[[38.43144531250002,14.428613281249994],[38.50439453125,14.424414062499991],[38.81201171875,14.482324218749994],[38.995703125,14.586865234374997],[39.02382812500002,14.628222656250003],[39.07421875,14.628222656250003],[39.13544921875001,14.581884765624991],[39.19804687500002,14.479394531249994],[39.531835937500006,14.53671875],[40.22148437500002,14.43115234375],[40.82011718750002,14.111669921874991],[40.938574218750006,13.983105468749997],[41.362890625,13.499804687500003],[41.76503906250002,13.183935546874991],[41.85957031250001,13.02587890625],[41.9521484375,12.88232421875],[42.13427734375,12.771435546874997],[42.225,12.661962890624991],[42.28994140625002,12.570214843749994],[42.378515625,12.46640625],[41.79267578125001,11.68603515625],[41.79824218750002,10.98046875],[42.557714843750006,11.080761718749997],[42.92275390625002,10.999316406249989],[42.65644531250001,10.6],[42.84160156250002,10.203076171874997],[43.181640625,9.879980468749991],[43.482519531250006,9.379492187499991],[43.98378906250002,9.008837890624989],[46.97822265625001,7.9970703125],[47.97822265625001,7.9970703125],[44.940527343750006,4.912011718749994],[43.988867187500006,4.950537109374991],[43.58349609375,4.85498046875],[43.12568359375001,4.644482421874997],[42.85664062500001,4.32421875],[42.02412109375001,4.137939453125],[41.91533203125002,4.031298828124989],[41.88398437500001,3.977734375],[41.73769531250002,3.979052734374989],[41.48193359375,3.96328125],[41.37246093750002,3.946191406249994],[41.22089843750001,3.943554687499997],[41.02080078125002,4.057470703124991],[40.765234375,4.27304687499999],[39.84218750000002,3.851464843749994],[39.79033203125002,3.754248046874991],[39.65751953125002,3.577832031249997],[39.49443359375002,3.456103515624989],[38.608007812500006,3.60009765625],[38.45156250000002,3.604833984374991],[38.22529296875001,3.618994140624991],[38.08613281250001,3.64882812499999],[37.15458984375002,4.254541015624994],[36.90556640625002,4.411474609374991],[36.02197265625,4.468115234374991],[35.76308593750002,4.808007812499994],[35.75615234375002,4.950488281249989],[35.779296875,5.105566406249991],[35.80029296875,5.156933593749997],[35.74501953125002,5.343994140625],[35.325292968750006,5.364892578124994],[35.2646484375,5.412060546874997],[35.26386718750001,5.457910156249994],[35.26835937500002,5.492285156249991],[34.98359375000001,5.858300781249994],[34.71064453125001,6.660302734374994],[34.06425781250002,7.225732421874994],[33.902441406250006,7.509521484375],[32.99892578125002,7.899511718749991],[33.28105468750002,8.437255859375],[33.95332031250001,8.443505859374994],[34.07275390625,8.545263671874991],[34.078125,9.461523437499991],[34.31123046875001,10.190869140624997],[34.34394531250001,10.658642578124997],[34.571875,10.880175781249989],[34.77128906250002,10.746191406249991],[34.93144531250002,10.864794921874989],[35.1123046875,11.816552734374994],[35.67021484375002,12.623730468749997],[36.12519531250001,12.75703125],[36.52431640625002,14.2568359375],[36.54238281250002,14.25820312499999],[36.67910156250002,14.307568359374997],[36.81191406250002,14.315039062499991],[37.024511718750006,14.27197265625],[37.25722656250002,14.453759765624994],[37.50722656250002,14.156396484374994],[37.54677734375002,14.143847656250003],[37.57119140625002,14.149072265624994],[37.6484375,14.322558593750003],[37.70839843750002,14.457226562499997],[37.8203125,14.70849609375],[37.88417968750002,14.852294921875],[37.943457031250006,14.810546875],[38.002539062500006,14.737109375],[38.22148437500002,14.649658203125],[38.43144531250002,14.428613281249994]]]},"properties":{"name":"Ethiopia","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[22.17509765624999,60.370751953124994],[22.41552734375003,60.30336914062505],[22.36054687500004,60.165576171875045],[22.07714843750003,60.286328124999955],[22.17509765624999,60.370751953124994]]],[[[21.450878906250068,60.529589843750045],[21.3,60.47978515625002],[21.224707031250006,60.62060546875003],[21.450878906250068,60.529589843750045]]],[[[21.2177734375,63.241308593750034],[21.415625,63.19736328125006],[21.25341796875,63.152001953124966],[21.08388671875008,63.277539062499955],[21.2177734375,63.241308593750034]]],[[[24.848242187500034,64.99101562499999],[24.576562500000023,65.04287109375],[24.970605468750023,65.05532226562502],[24.848242187500034,64.99101562499999]]],[[[28.96582031250003,69.02197265625],[28.414062500000057,68.90415039062506],[28.77285156250005,68.84003906249995],[28.470703125000057,68.48837890625],[28.685156250000034,68.189794921875],[29.343847656250006,68.06186523437506],[29.988085937500017,67.66826171874999],[29.066210937500045,66.89174804687497],[30.102734375000097,65.72626953125004],[29.715917968750063,65.62456054687502],[29.608007812500006,65.248681640625],[29.826953125000017,65.14506835937502],[29.60419921875004,64.968408203125],[30.072851562500063,64.76503906250005],[30.04189453125005,64.44335937499997],[30.513769531250006,64.2],[30.50390625000003,64.02060546875],[29.991503906250074,63.73515625000002],[31.180859375000097,63.208300781250074],[31.533984375000017,62.885400390624994],[31.18671875000004,62.48139648437504],[29.69013671875004,61.54609375000001],[27.797656250000074,60.53613281250003],[26.53466796874997,60.412890625000074],[26.56933593750003,60.62456054687502],[26.377734375000074,60.42407226562503],[25.955957031250023,60.474218750000034],[26.03583984375004,60.34150390625001],[25.75800781250004,60.26752929687504],[25.65644531250004,60.33320312499998],[24.44560546874999,60.021289062500045],[23.46357421875004,59.986230468749994],[23.021289062500074,59.81601562500006],[23.19843750000001,60.02182617187498],[22.911718750000063,60.20971679687497],[22.749804687500017,60.057275390624994],[22.462695312500045,60.029199218749966],[22.5849609375,60.380566406249955],[21.436035156250057,60.596386718749955],[21.605957031250057,61.59155273437503],[21.255957031250063,61.98964843750005],[21.143847656250045,62.73999023437506],[21.650976562500063,63.039306640625],[21.545117187499983,63.204296874999955],[22.31972656250005,63.310449218749994],[22.532324218750034,63.647851562499994],[23.598925781250074,64.04091796874997],[24.557910156250045,64.801025390625],[25.288183593750063,64.8603515625],[25.34785156250004,65.47924804687497],[24.674902343750006,65.67070312499999],[24.628027343750034,65.85917968750002],[24.15546875000004,65.80527343750006],[23.700292968750034,66.25263671874998],[23.988574218750045,66.81054687500003],[23.64150390625005,67.12939453124997],[23.733593750000068,67.42290039062499],[23.454882812500045,67.46025390625007],[23.63886718750004,67.95439453125002],[22.854101562500034,68.36733398437502],[21.99746093750005,68.52060546874998],[20.622167968750006,69.036865234375],[21.065722656250017,69.04174804687503],[21.06611328125001,69.21411132812497],[21.59375,69.273583984375],[22.410937500000074,68.719873046875],[23.324023437500017,68.64897460937502],[23.85400390625,68.80590820312503],[24.94140625000003,68.59326171875006],[25.748339843750017,68.99013671875],[26.07246093750004,69.69155273437497],[26.525390625000057,69.91503906250003],[27.127539062500063,69.90649414062497],[27.747851562500045,70.06484375],[29.14160156250003,69.67143554687505],[29.33339843750005,69.47299804687503],[28.846289062500006,69.17690429687502],[28.96582031250003,69.02197265625]]]]},"properties":{"name":"Finland","childNum":5}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[178.48789062500018,-18.97412109375],[177.95869140624998,-19.121582031250014],[178.33427734375013,-18.93447265625001],[178.48789062500018,-18.97412109375]]],[[[179.34931640625015,-18.10234375000003],[179.25351562500018,-18.030566406249974],[179.30644531250013,-17.944042968750026],[179.34931640625015,-18.10234375000003]]],[[[178.28017578124994,-17.37197265625001],[178.59160156249996,-17.651464843750006],[178.66767578125004,-18.080859375],[177.95546875000005,-18.264062500000023],[177.32138671875,-18.077539062500037],[177.26396484375007,-17.86347656250004],[177.5044921875,-17.539550781250043],[177.81796875000012,-17.38847656249999],[178.28017578124994,-17.37197265625001]]],[[[180,-16.96308593750001],[179.89697265625003,-16.96406250000004],[180,-16.785742187500034],[180,-16.96308593750001]]],[[[-179.97490234374996,-16.92480468750003],[-180,-16.96298828124999],[-180,-16.907812500000034],[-180,-16.82431640624999],[-180,-16.78554687499999],[-179.86098632812502,-16.68828124999999],[-179.97490234374996,-16.92480468750003]]],[[[-179.92944335937503,-16.502832031250037],[-179.999951171875,-16.540039062499986],[-179.900927734375,-16.431542968749994],[-179.92944335937503,-16.502832031250037]]],[[[179.99921875000004,-16.168554687499977],[179.56416015625004,-16.636914062499997],[179.56816406249996,-16.747460937499966],[179.93037109375004,-16.51943359375005],[179.9279296875001,-16.74443359374996],[179.41933593750005,-16.80654296875001],[179.20234375000004,-16.71269531249999],[179.00683593750003,-16.90019531249999],[178.70664062500018,-16.97617187500002],[178.4974609375,-16.78789062500003],[178.58359375000012,-16.621875],[178.80507812499994,-16.631445312500034],[179.55175781250003,-16.249902343750023],[180,-16.15292968749999],[179.99921875000004,-16.168554687499977]]]]},"properties":{"name":"Fiji","childNum":7}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-61.01875,-51.7857421875],[-60.87597656250003,-51.79423828125004],[-60.94755859374996,-51.94628906250002],[-61.14501953125003,-51.83945312500001],[-61.01875,-51.7857421875]]],[[[-60.28623046874995,-51.461914062500014],[-59.38759765625002,-51.35996093750003],[-59.26806640625,-51.42753906250003],[-59.92138671874997,-51.969531250000045],[-60.246337890625,-51.98642578125003],[-60.35346679687498,-52.13994140625004],[-60.686376953125034,-52.18837890624996],[-60.96142578125003,-52.05732421874999],[-60.23847656249998,-51.771972656250036],[-60.58251953125,-51.71269531250004],[-60.24516601562493,-51.638867187500004],[-60.56845703124998,-51.357812499999945],[-60.28623046874995,-51.461914062500014]]],[[[-60.11171875000002,-51.39589843749998],[-60.275341796874955,-51.28056640625002],[-60.06982421875,-51.307910156249996],[-60.11171875000002,-51.39589843749998]]],[[[-58.85019531249995,-51.26992187499998],[-58.42583007812502,-51.32421875000003],[-58.508935546874994,-51.48359375],[-58.271582031250034,-51.57470703124999],[-58.25922851562501,-51.417089843750034],[-57.976513671874955,-51.384375],[-57.80849609375002,-51.51796875],[-57.96044921874997,-51.58320312500003],[-57.79179687499999,-51.63613281249998],[-58.68349609375002,-51.93623046875001],[-58.65278320312498,-52.09921875],[-59.19584960937496,-52.01767578125],[-59.06801757812502,-52.17304687500003],[-59.341503906249955,-52.19599609375],[-59.395654296874966,-52.308007812499994],[-59.64873046875002,-52.134375],[-59.57080078124994,-51.92539062500003],[-59.05952148437498,-51.685449218749994],[-59.09663085937498,-51.49140624999998],[-58.85019531249995,-51.26992187499998]]]]},"properties":{"name":"Falkland Is.","childNum":4}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[55.79736328125003,-21.33935546875003],[55.36269531250005,-21.27363281250004],[55.23281250000005,-21.05839843749999],[55.311328125000074,-20.90410156249999],[55.661914062500074,-20.90625],[55.8390625000001,-21.13857421874998],[55.79736328125003,-21.33935546875003]]],[[[45.180273437500006,-12.97675781250004],[45.069433593750006,-12.895605468750034],[45.09238281250006,-12.653027343749997],[45.22314453124997,-12.752148437500026],[45.180273437500006,-12.97675781250004]]],[[[-51.65253906249998,4.061279296874972],[-52.327880859375,3.18173828125002],[-52.58300781250003,2.528906249999977],[-52.90346679687502,2.211523437499977],[-53.76777343749998,2.354833984375048],[-54.13007812499998,2.121044921875026],[-54.43310546875,2.207519531250057],[-54.51508789062498,2.245458984374963],[-54.55048828125001,2.293066406249991],[-54.59194335937502,2.313769531250031],[-54.61625976562499,2.326757812500006],[-54.60473632812497,2.335791015624991],[-54.56840820312502,2.342578125000031],[-54.53593749999999,2.343310546875003],[-54.48554687500001,2.416113281250006],[-54.402001953124966,2.46152343750002],[-54.25673828125002,2.713720703124977],[-54.19550781249998,2.817871093750057],[-54.17070312499999,2.993603515624969],[-54.203125,3.138183593750028],[-54.18803710937499,3.178759765625031],[-54.063183593749955,3.353320312499989],[-54.00957031249993,3.448535156250017],[-54.03422851562499,3.62939453125],[-54.350732421874994,4.054101562500023],[-54.47968749999998,4.836523437499991],[-53.91992187499997,5.768994140624983],[-52.899316406249966,5.425048828124986],[-52.29052734375003,4.942187500000031],[-52.324609374999966,4.770898437500037],[-52.21997070312494,4.862792968750014],[-52.05810546875003,4.717382812499963],[-52.00292968749997,4.352294921875014],[-51.82753906250002,4.635693359375026],[-51.65253906249998,4.061279296874972]]],[[[-60.826269531250006,14.494482421874991],[-61.063720703125,14.467089843750017],[-61.01132812499998,14.601904296875034],[-61.21333007812501,14.848583984375011],[-60.927148437499966,14.755175781249989],[-60.826269531250006,14.494482421874991]]],[[[-61.23046875000003,15.889941406250074],[-61.310742187499955,15.894677734374966],[-61.25,16.006298828124983],[-61.23046875000003,15.889941406250074]]],[[[-61.58955078125001,16.006933593750006],[-61.759423828124966,16.062060546875045],[-61.74804687499997,16.355273437500017],[-61.55234374999998,16.270898437499966],[-61.58955078125001,16.006933593750006]]],[[[-61.3271484375,16.230419921874983],[-61.522167968749955,16.22802734375003],[-61.47119140624994,16.506640625000045],[-61.17260742187497,16.25610351562497],[-61.3271484375,16.230419921874983]]],[[[9.480371093750023,42.80541992187503],[9.550683593750051,42.12973632812506],[9.186132812500034,41.38491210937502],[8.80751953125008,41.58837890625],[8.886816406249977,41.70068359375003],[8.621875,41.93071289062502],[8.700976562500045,42.09560546875002],[8.565625,42.35771484374996],[8.81484375000008,42.60791015625003],[9.313378906250023,42.71318359374999],[9.363183593750051,43.01738281249996],[9.480371093750023,42.80541992187503]]],[[[-1.17832031249992,45.904052734375],[-1.213574218750011,45.81660156250004],[-1.388671874999972,46.05039062500006],[-1.17832031249992,45.904052734375]]],[[[5.789746093749983,49.53828125000001],[5.823437500000011,49.50507812499998],[5.9013671875,49.48974609374997],[5.928906250000011,49.47753906249997],[5.959472656250028,49.45463867187502],[6.01142578125004,49.44545898437502],[6.074121093750023,49.45463867187502],[6.119921875000017,49.485205078125034],[6.181054687500051,49.498925781249966],[6.344335937500006,49.45273437499998],[6.735449218750006,49.16059570312498],[7.450585937500051,49.152197265625034],[8.134863281250006,48.97358398437498],[7.616601562500023,48.15678710937502],[7.615625,47.59272460937504],[7.343164062499994,47.43310546875003],[7.136035156249989,47.489843750000034],[6.968359375000034,47.453222656250034],[6.900390625000028,47.39423828125001],[7.000585937500034,47.339453125000034],[7.000585937500034,47.32250976562506],[6.978515625000057,47.30205078124996],[6.95205078125008,47.26718750000006],[6.820703125000051,47.163183593750006],[6.688085937500034,47.05825195312505],[6.66689453125008,47.026513671874966],[6.624804687500017,47.00434570312498],[6.45625,46.948339843750034],[6.438646763392874,46.774418247767855],[6.129687500000045,46.56699218750006],[6.118111049107182,46.447459542410726],[6.095898437500011,46.279394531250006],[5.970019531250045,46.214697265625034],[5.971484375000074,46.151220703125006],[6.006640625000045,46.14233398437506],[6.086621093750068,46.14702148437502],[6.19941406250004,46.19306640624998],[6.234667968750045,46.332617187500006],[6.321875,46.39370117187502],[6.428906250000011,46.43051757812506],[6.578222656250034,46.437353515625034],[6.758105468750017,46.41577148437497],[6.772070312500006,46.16513671874998],[6.897265625000017,46.05175781249997],[6.953710937500063,46.017138671875045],[7.00390625,45.95883789062506],[7.021093750000034,45.92578124999997],[6.790917968750023,45.740869140624966],[7.146386718750051,45.381738281249994],[7.07832031250004,45.23994140624998],[6.634765625000028,45.06816406249996],[6.99267578125,44.82729492187502],[6.900195312499989,44.33574218749996],[7.318554687500068,44.13798828125002],[7.637207031250057,44.16484375],[7.4931640625,43.767138671875045],[6.570214843750023,43.199072265625034],[6.115917968750011,43.07236328124998],[5.406542968750074,43.228515625],[5.05976562500004,43.44453125000004],[4.712109375000011,43.373291015625],[3.910839843750011,43.563085937500034],[3.258886718750063,43.193212890625006],[3.051757812500057,42.915136718750006],[3.21142578125,42.43115234375],[2.032714843750028,42.353515625],[1.927929687500068,42.42631835937499],[1.859765625000051,42.457080078125045],[1.7060546875,42.50332031250005],[1.709863281250051,42.604443359374955],[1.568164062500045,42.63500976562506],[1.501367187500023,42.64272460937502],[1.428320312499977,42.59589843749998],[0.696875,42.84511718750005],[0.631640625000045,42.689599609374994],[-0.586425781249943,42.798974609374966],[-1.300048828124943,43.10097656250002],[-1.460839843749937,43.05175781250006],[-1.410693359374932,43.240087890625034],[-1.794042968749949,43.407324218750006],[-1.484863281249943,43.56376953124999],[-1.245507812499937,44.55986328124999],[-1.07695312499996,44.68984375],[-1.152880859374989,44.764013671875006],[-1.245214843749977,44.66669921874998],[-1.081005859374983,45.532421874999955],[-0.548486328124966,45.00058593750006],[-0.790771484375028,45.46801757812497],[-1.195996093749983,45.714453125],[-1.03173828125,45.741064453125006],[-1.14628906249996,46.311376953125034],[-1.786523437499937,46.51484375000001],[-2.059375,46.81030273437497],[-2.01889648437492,47.03764648437502],[-2.197070312499989,47.16293945312506],[-2.027587890625028,47.27358398437502],[-1.742529296874949,47.21596679687502],[-1.97539062499996,47.31069335937505],[-2.503125,47.31206054687496],[-2.427685546874983,47.47089843749998],[-2.770312499999989,47.513867187499955],[-2.787207031249949,47.62553710937496],[-4.312109374999949,47.82290039062502],[-4.678808593749949,48.03950195312501],[-4.32944335937492,48.169970703125045],[-4.577148437499943,48.2900390625],[-4.241406249999926,48.30366210937501],[-4.719384765624966,48.363134765625034],[-4.7625,48.45024414062502],[-4.531201171874983,48.61997070312506],[-3.231445312499972,48.84082031250003],[-2.692333984374983,48.53681640624998],[-2.446191406249937,48.64829101562506],[-2.00371093749996,48.58208007812499],[-1.905712890624955,48.69711914062506],[-1.376464843749972,48.65258789062503],[-1.565478515624932,48.805517578125034],[-1.583105468749977,49.20239257812506],[-1.856445312499972,49.68378906249998],[-1.258642578124949,49.68017578125006],[-1.138525390624977,49.38789062500001],[-0.163476562499937,49.296777343749994],[0.41689453125008,49.448388671874994],[0.129394531250028,49.508447265624966],[0.186718749999983,49.703027343749994],[1.245507812500051,49.99824218750001],[1.5927734375,50.25219726562506],[1.672265625000023,50.885009765625],[2.52490234375,51.097119140624955],[2.759375,50.750634765624994],[3.10683593750008,50.779443359374994],[3.27333984375008,50.53154296875002],[3.595410156250068,50.47734374999999],[3.689355468750023,50.30605468750002],[4.174609375000017,50.24648437500005],[4.149316406250023,49.971582031249994],[4.545019531250063,49.96025390624999],[4.818652343750045,50.153173828125034],[4.867578125000051,49.78813476562502],[5.50732421875,49.51088867187502],[5.789746093749983,49.53828125000001]]]]},"properties":{"name":"France","childNum":10,"cp":[2.8719426,46.8222422]}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-7.186865234374949,62.139306640624966],[-7.116796874999977,62.046826171874955],[-7.379101562499926,62.07480468749998],[-7.186865234374949,62.139306640624966]]],[[[-6.631054687499955,62.22788085937498],[-6.655810546874932,62.09360351562498],[-6.840527343749983,62.119287109374994],[-6.725195312499949,61.95146484374999],[-7.17216796874996,62.28559570312501],[-6.631054687499955,62.22788085937498]]],[[[-6.406054687499932,62.258642578125034],[-6.544140624999926,62.20561523437499],[-6.554589843749994,62.35566406250001],[-6.406054687499932,62.258642578125034]]]]},"properties":{"name":"Faeroe Is.","childNum":3}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[158.31484375,6.813671875],[158.18339843750002,6.801269531250057],[158.13476562499997,6.944824218749986],[158.29462890625004,6.951074218750023],[158.31484375,6.813671875]]],[[[138.14267578125006,9.50068359375004],[138.06708984375004,9.419042968750006],[138.18583984375007,9.593310546874989],[138.14267578125006,9.50068359375004]]]]},"properties":{"name":"Micronesia","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[13.293554687500006,2.161572265624997],[13.172167968750017,1.78857421875],[13.21630859375,1.2484375],[13.851367187500017,1.41875],[14.180859375000011,1.370214843749991],[14.429882812500011,0.901464843749991],[14.32421875,0.62421875],[13.949609375000023,0.353808593749989],[13.860058593750011,-0.203320312500011],[14.47412109375,-0.573437500000011],[14.383984375000011,-1.890039062500009],[14.162890625000017,-2.217578125],[14.199804687500006,-2.354199218750011],[13.993847656250011,-2.490625],[13.886914062500011,-2.465429687500006],[13.733789062500023,-2.138476562500003],[13.464941406250006,-2.395410156250009],[12.991992187500017,-2.313378906250009],[12.793554687500006,-1.931835937500011],[12.590429687500006,-1.826855468750011],[12.43212890625,-1.928906250000011],[12.446386718750006,-2.329980468750009],[12.064453125,-2.41259765625],[11.60546875,-2.342578125],[11.537792968750011,-2.83671875],[11.760156250000023,-2.983105468750011],[11.715429687500006,-3.176953125000011],[11.934179687500006,-3.318554687500011],[11.8798828125,-3.665917968750009],[11.685742187500011,-3.68203125],[11.504296875000023,-3.5203125],[11.234472656250006,-3.690820312500009],[11.130175781250017,-3.916308593750003],[10.34765625,-3.013085937500009],[9.722070312500023,-2.467578125],[10.06201171875,-2.549902343750006],[9.624609375,-2.367089843750009],[9.298925781250006,-1.903027343750011],[9.483203125000017,-1.894628906250006],[9.265625,-1.825097656250009],[9.036328125000011,-1.308886718750003],[9.31884765625,-1.632031250000011],[9.501074218750006,-1.55517578125],[9.295800781250023,-1.515234375],[9.3466796875,-1.325],[9.203808593750011,-1.382421875],[9.064648437500011,-1.29833984375],[8.703125,-0.591015625000011],[8.946386718750006,-0.688769531250003],[9.296679687500017,-0.351269531250011],[9.354882812500023,0.343603515624991],[9.468164062500023,0.15976562499999],[9.796777343750023,0.044238281249989],[10.00146484375,0.194970703124994],[9.546484375,0.295947265624989],[9.324804687500006,0.552099609374991],[9.495312500000011,0.664843749999989],[9.617968750000017,0.576513671874991],[9.5908203125,1.031982421875],[9.636132812500023,1.046679687499989],[9.676464843750011,1.07470703125],[9.70458984375,1.079980468749994],[9.760546875000017,1.07470703125],[9.788671875,1.025683593749989],[9.803906250000011,0.998730468749997],[9.90673828125,0.960107421874994],[11.335351562500023,0.999707031249997],[11.332324218750017,1.528369140624989],[11.328710937500006,2.167431640624997],[11.348437500000017,2.299707031249994],[11.558984375000023,2.302197265624997],[13.2203125,2.256445312499991],[13.293554687500006,2.161572265624997]]]},"properties":{"name":"Gabon","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-1.065576171874966,50.69023437500002],[-1.25146484375,50.58881835937498],[-1.563427734374955,50.666113281250006],[-1.31279296874996,50.77348632812502],[-1.065576171874966,50.69023437500002]]],[[[-4.196777343749972,53.321435546874966],[-4.04936523437496,53.30576171874998],[-4.373046875,53.13417968750002],[-4.56787109375,53.386474609375],[-4.315087890625023,53.41723632812503],[-4.196777343749972,53.321435546874966]]],[[[-6.218017578125,54.08872070312506],[-6.649804687499937,54.05864257812496],[-7.007714843749937,54.40668945312501],[-7.324511718750017,54.13344726562502],[-7.606542968750006,54.14384765625002],[-8.118261718749977,54.41425781250004],[-7.75439453125,54.59492187499998],[-7.910595703124955,54.698339843750006],[-7.55039062499992,54.767968749999966],[-7.218652343749937,55.09199218749998],[-6.475048828124955,55.24101562499999],[-6.035791015624994,55.14453125000003],[-5.71684570312496,54.817480468750034],[-5.878613281249955,54.64130859375001],[-5.582519531249943,54.66342773437498],[-5.470410156249926,54.500195312499955],[-5.671093749999955,54.54975585937501],[-5.60678710937492,54.272558593750034],[-6.019042968749972,54.05126953124997],[-6.218017578125,54.08872070312506]]],[[[-5.105419921875011,55.448828125000034],[-5.331494140624955,55.481054687500034],[-5.318115234375,55.709179687499955],[-5.105419921875011,55.448828125000034]]],[[[-6.128906249999972,55.93056640625002],[-6.055322265624994,55.69531249999997],[-6.305078124999966,55.60693359375],[-6.286425781249989,55.77250976562499],[-6.491357421874994,55.697314453125045],[-6.462841796874955,55.808251953124994],[-6.128906249999972,55.93056640625002]]],[[[-5.970068359374949,55.814550781250034],[-6.071972656250011,55.893115234375045],[-5.72514648437496,56.118554687499966],[-5.970068359374949,55.814550781250034]]],[[[-5.77788085937496,56.344335937500034],[-6.313427734374983,56.29365234375001],[-6.138867187499955,56.490625],[-6.286328124999983,56.61186523437502],[-6.102734374999955,56.645654296874966],[-5.760839843749949,56.49067382812501],[-5.77788085937496,56.344335937500034]]],[[[-7.249853515624977,57.115332031250006],[-7.410546874999937,57.38110351562506],[-7.26713867187496,57.37177734375001],[-7.249853515624977,57.115332031250006]]],[[[-6.144726562499983,57.50498046874998],[-6.135546874999989,57.31425781250002],[-5.672460937499977,57.252685546875],[-5.94907226562492,57.045166015625],[-6.034375,57.20122070312499],[-6.322705078124926,57.20249023437498],[-6.761132812499994,57.4423828125],[-6.305957031249989,57.67197265624998],[-6.144726562499983,57.50498046874998]]],[[[-7.205566406250028,57.682958984375006],[-7.182617187499972,57.53330078125006],[-7.514746093749949,57.60195312500002],[-7.205566406250028,57.682958984375006]]],[[[-6.198681640624983,58.36328125000003],[-6.554589843749994,58.092871093750006],[-6.425195312499937,58.02128906249999],[-6.983105468749983,57.75],[-7.083447265624926,57.81376953124999],[-6.856835937499937,57.92353515624998],[-7.085253906249932,58.18217773437499],[-6.726464843749937,58.189404296874955],[-6.776464843750006,58.30151367187497],[-6.237451171874966,58.50283203125005],[-6.198681640624983,58.36328125000003]]],[[[-3.109667968749932,58.515478515625034],[-3.212353515624983,58.32124023437501],[-3.99003906249996,57.95903320312502],[-4.035595703124926,57.85200195312498],[-3.857128906249983,57.81855468750001],[-4.134521484375,57.57773437500006],[-3.402783203124955,57.708251953125],[-2.074072265624977,57.70239257812506],[-1.780664062499994,57.474023437499966],[-2.592675781249937,56.56157226562499],[-3.309960937499966,56.36347656250004],[-2.885156249999937,56.397509765625045],[-2.674267578124955,56.25341796875],[-3.362255859374955,56.02763671875002],[-3.789062499999972,56.09521484375],[-3.048730468749937,55.951953125000045],[-2.599316406249955,56.02729492187501],[-2.14707031249992,55.90297851562502],[-1.655371093749949,55.57036132812502],[-1.232421874999943,54.703710937500034],[-0.084375,54.118066406249994],[-0.20556640625,54.021728515625],[0.115332031250006,53.609277343749994],[-0.270019531249972,53.73676757812504],[-0.659912109375,53.72402343750002],[-0.293701171875,53.69233398437504],[0.270996093750028,53.33549804687499],[0.355761718750045,53.15996093750002],[0.0458984375,52.90561523437498],[0.279785156250028,52.80869140625006],[0.55878906250004,52.96694335937505],[1.05556640625008,52.95898437500003],[1.656738281249972,52.753710937500045],[1.74658203125,52.46899414062503],[1.59140625,52.11977539062502],[1.232421875000057,51.97124023437496],[1.188476562500057,51.803369140624966],[0.752246093750017,51.729589843750034],[0.890917968750017,51.571435546874966],[0.42451171875004,51.465625],[1.414941406250023,51.36328125],[1.397558593750034,51.18203125000002],[0.960156250000011,50.92587890624998],[0.299707031249994,50.775976562500006],[-0.785253906249949,50.76542968749999],[-1.416455078124955,50.896875],[-1.334472656249943,50.82080078124997],[-1.516748046874937,50.747460937499966],[-2.031054687499932,50.72539062499999],[-2.035839843749926,50.603076171875045],[-2.999414062499937,50.71660156249999],[-3.40458984374996,50.63242187499998],[-3.679785156250006,50.239941406249955],[-4.194580078124972,50.39331054687503],[-4.727978515624926,50.29047851562504],[-5.11850585937492,50.038330078125],[-5.622119140624932,50.05068359375002],[-4.188183593749926,51.18852539062502],[-3.135986328124972,51.20502929687501],[-2.433056640624926,51.74072265625],[-3.293115234374994,51.390429687500045],[-3.890771484374994,51.591650390625006],[-4.234570312499955,51.56909179687503],[-4.091015624999926,51.65991210937506],[-4.38627929687496,51.74106445312506],[-4.902294921874926,51.626269531250045],[-5.168359374999937,51.74072265625],[-5.183349609374972,51.94965820312501],[-4.217724609374983,52.277441406250006],[-3.980322265624949,52.54174804687503],[-4.101464843750023,52.915478515624955],[-4.683056640624926,52.80615234374997],[-4.268554687499943,53.14453125],[-3.427734374999972,53.34067382812498],[-3.097558593749937,53.260302734375045],[-3.064746093749932,53.426855468750034],[-2.74951171875,53.310205078124994],[-3.064599609374994,53.512841796874966],[-2.84648437499996,54.135302734375045],[-3.165966796874955,54.12792968750006],[-3.56938476562496,54.46757812499996],[-3.464599609374943,54.77309570312505],[-3.036230468749977,54.95307617187501],[-3.550439453124937,54.94741210937502],[-3.957910156249994,54.780957031249955],[-4.818066406249983,54.84614257812501],[-4.911230468749949,54.68945312500006],[-5.032324218749949,54.76137695312505],[-5.172705078124949,54.98588867187496],[-4.676757812499972,55.50131835937498],[-4.871679687499977,55.87392578125005],[-4.58408203124992,55.93867187500001],[-4.844091796874949,56.05117187499999],[-4.80029296875,56.158349609374994],[-5.228222656249983,55.886328125],[-5.084326171874977,56.197460937499955],[-5.41044921874996,55.995361328125],[-5.55644531249996,55.389599609374955],[-5.730664062499926,55.33413085937502],[-5.504492187499949,55.80239257812502],[-5.609570312499955,56.055273437500034],[-5.188378906249937,56.75805664062503],[-5.652441406249977,56.531982421875],[-6.133691406249966,56.706689453124966],[-5.730615234374994,56.853076171875045],[-5.86142578124992,56.902685546875006],[-5.561914062499994,57.23271484375002],[-5.794921874999972,57.37880859375002],[-5.581787109374972,57.546777343749966],[-5.744921874999989,57.668310546875034],[-5.608349609374955,57.88134765625],[-5.157226562499972,57.88134765625],[-5.413183593750006,58.06972656250002],[-5.338281250000023,58.23872070312498],[-5.008300781250028,58.262646484374955],[-5.016748046874966,58.566552734374966],[-4.433251953124937,58.51284179687505],[-3.25913085937492,58.65],[-3.053076171874949,58.63481445312502],[-3.109667968749932,58.515478515625034]]],[[[-3.057421874999932,59.02963867187498],[-2.793017578124989,58.906933593749955],[-3.331640624999949,58.97124023437499],[-3.31035156249996,59.13081054687498],[-3.057421874999932,59.02963867187498]]],[[[-1.30810546875,60.5375],[-1.052441406249955,60.44448242187502],[-1.299462890624994,59.87866210937503],[-1.290917968749937,60.153466796874966],[-1.663769531249983,60.282519531250074],[-1.374609374999949,60.33291015625002],[-1.571777343749972,60.494433593750074],[-1.363964843750011,60.60957031249998],[-1.30810546875,60.5375]]]]},"properties":{"name":"United Kingdom","childNum":14,"cp":[-2.5830348,54.4598409]}},{"geometry":{"type":"Polygon","coordinates":[[[46.30546875000002,41.507714843749994],[46.61894531250002,41.34375],[46.67255859375001,41.28681640625],[46.66240234375002,41.245507812499994],[46.62636718750002,41.15966796875],[46.534375,41.08857421875],[46.43095703125002,41.077050781249994],[46.086523437500006,41.183837890625],[45.28095703125001,41.449560546875],[45.21718750000002,41.423193359375],[45.00136718750002,41.290966796875],[44.97587890625002,41.277490234374994],[44.81132812500002,41.259375],[44.077246093750006,41.182519531249994],[43.43339843750002,41.155517578125],[43.20546875000002,41.199169921875],[43.15283203125,41.23642578125],[43.14101562500002,41.26484375],[43.17128906250002,41.287939453125],[43.149023437500006,41.30712890625],[43.05712890625,41.352832031249996],[42.90673828125,41.466845703124996],[42.82167968750002,41.4923828125],[42.78789062500002,41.563720703125],[42.75410156250001,41.57890625],[42.68242187500002,41.585742187499996],[42.60683593750002,41.57880859375],[42.590429687500006,41.57070312499999],[42.5673828125,41.55927734375],[42.46640625,41.43984375],[41.92578125,41.495654296874996],[41.82353515625002,41.432373046875],[41.779394531250006,41.44052734375],[41.701757812500006,41.471582031249994],[41.57656250000002,41.497314453125],[41.51005859375002,41.517480468749994],[41.701757812500006,41.705419921875],[41.76298828125002,41.970019531249996],[41.48876953125,42.659326171874994],[40.83662109375001,43.0634765625],[40.46210937500001,43.145703125],[39.97832031250002,43.419824218749994],[40.02373046875002,43.48486328125],[40.084570312500006,43.553125],[40.648046875,43.53388671875],[40.941992187500006,43.41806640625],[41.083105468750006,43.374462890625],[41.35820312500002,43.333398437499994],[41.46074218750002,43.276318359375],[41.58056640625,43.21923828125],[42.76064453125002,43.169580078124994],[42.99160156250002,43.09150390625],[43.00019531250001,43.049658203125],[43.08916015625002,42.9890625],[43.55781250000001,42.844482421875],[43.623046875,42.80771484375],[43.78261718750002,42.747021484375],[43.79873046875002,42.727783203125],[43.79541015625,42.702978515625],[43.74990234375002,42.657519531249996],[43.738378906250006,42.616992187499996],[43.759863281250006,42.59384765625],[43.82597656250002,42.571533203125],[43.95742187500002,42.566552734374994],[44.00468750000002,42.595605468749994],[44.10273437500001,42.616357421874994],[44.32949218750002,42.70351562499999],[44.505859375,42.7486328125],[44.77109375,42.616796875],[44.85048828125002,42.746826171875],[44.87099609375002,42.756396484374996],[44.943359375,42.730273437499996],[45.07158203125002,42.694140625],[45.160253906250006,42.675],[45.34375,42.52978515625],[45.56289062500002,42.5357421875],[45.70527343750001,42.498095703124996],[45.7275390625,42.475048828125],[45.63427734375,42.234716796875],[45.63857421875002,42.205078125],[46.21269531250002,41.989892578124994],[46.42988281250001,41.890966796875],[46.18427734375001,41.7021484375],[46.30546875000002,41.507714843749994]]]},"properties":{"name":"Georgia","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-0.068603515625,11.115625],[0.009423828125023,11.02099609375],[-0.08632812499999,10.673046875],[0.380859375,10.291845703124991],[0.264550781250023,9.644726562499997],[0.342578125000017,9.604150390624994],[0.2333984375,9.463525390624994],[0.525683593750017,9.398486328124989],[0.48876953125,8.851464843749994],[0.37255859375,8.75927734375],[0.686328125000017,8.354882812499994],[0.5,7.546875],[0.634765625,7.353662109374994],[0.525585937500011,6.850927734374991],[0.736914062500006,6.452587890624997],[1.187207031250011,6.089404296874989],[0.94970703125,5.810253906249997],[0.259667968750023,5.75732421875],[-2.001855468749994,4.762451171875],[-3.114013671875,5.088671874999989],[-2.815673828125,5.153027343749997],[-2.754980468749977,5.432519531249994],[-2.793652343749983,5.60009765625],[-2.998291015625,5.71132812499999],[-3.227148437499977,6.749121093749991],[-2.959082031249977,7.454541015624997],[-2.789746093749983,7.931933593749989],[-2.668847656249994,8.022216796875],[-2.613378906249977,8.046679687499989],[-2.600976562499994,8.082226562499997],[-2.619970703124977,8.12109375],[-2.61171875,8.147558593749991],[-2.538281249999983,8.171630859375],[-2.505859375,8.208740234375],[-2.600390624999989,8.800439453124994],[-2.649218749999989,8.956591796874989],[-2.689892578124983,9.025097656249997],[-2.746923828124977,9.045117187499997],[-2.705761718749983,9.351367187499989],[-2.695849609374989,9.481347656249994],[-2.706201171874994,9.533935546875],[-2.765966796874977,9.658056640624991],[-2.780517578125,9.745849609375],[-2.791162109374994,10.432421874999989],[-2.914892578124977,10.592333984374989],[-2.829931640624977,10.998388671874991],[-1.04248046875,11.010058593749989],[-0.627148437499983,10.927392578124994],[-0.299462890624994,11.166894531249994],[-0.068603515625,11.115625]]]},"properties":{"name":"Ghana","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-11.389404296875,12.404394531249991],[-11.502197265625,12.198632812499994],[-11.30517578125,12.015429687499989],[-10.933203124999977,12.205175781249991],[-10.709228515625,11.898730468749989],[-10.274853515624983,12.212646484375],[-9.754003906249977,12.029931640624994],[-9.358105468749983,12.255419921874989],[-9.395361328124977,12.464648437499989],[-9.043066406249977,12.40234375],[-8.818310546874983,11.922509765624994],[-8.822021484375,11.673242187499994],[-8.398535156249977,11.366552734374991],[-8.666699218749983,11.009472656249997],[-8.33740234375,10.990625],[-8.266650390624989,10.485986328124994],[-8.007275390624983,10.321875],[-7.990625,10.1625],[-8.155175781249994,9.973193359374989],[-8.136962890625,9.49570312499999],[-7.896191406249983,9.415869140624991],[-7.918066406249977,9.188525390624989],[-7.839404296874989,9.151611328125],[-7.7998046875,9.115039062499989],[-7.777978515624994,9.080859374999989],[-7.902099609375,9.01708984375],[-7.938183593749983,8.979785156249989],[-7.950976562499989,8.786816406249997],[-7.719580078124977,8.643017578124997],[-7.696093749999989,8.375585937499991],[-7.823583984374977,8.467675781249994],[-7.953125,8.477734375],[-8.236962890624994,8.455664062499991],[-8.244140625,8.407910156249997],[-8.256103515625,8.253710937499989],[-8.217138671874977,8.219677734374997],[-8.140625,8.181445312499989],[-8.048583984375,8.169726562499989],[-8.009863281249977,8.07851562499999],[-8.126855468749994,7.867724609374989],[-8.115429687499983,7.7607421875],[-8.205957031249994,7.59023437499999],[-8.231884765624983,7.556738281249991],[-8.429980468749989,7.601855468749989],[-8.486425781249977,7.558496093749994],[-8.659765624999977,7.688378906249994],[-8.8896484375,7.2626953125],[-9.11757812499999,7.215917968749991],[-9.463818359374983,7.415869140624991],[-9.369140625,7.703808593749997],[-9.518261718749983,8.34609375],[-9.781982421875,8.537695312499991],[-10.064355468749994,8.429882812499997],[-10.147412109374983,8.519726562499997],[-10.233056640624994,8.488818359374989],[-10.283203125,8.485156249999989],[-10.360058593749983,8.495507812499994],[-10.394433593749994,8.48095703125],[-10.496435546874977,8.362109374999989],[-10.557714843749977,8.315673828125],[-10.686962890624983,8.321679687499994],[-10.712109374999983,8.335253906249989],[-10.677343749999977,8.400585937499997],[-10.500537109374989,8.687548828124989],[-10.615966796875,9.059179687499991],[-10.726855468749989,9.081689453124994],[-10.747021484374983,9.095263671874989],[-10.749951171874983,9.122363281249989],[-10.687646484374994,9.261132812499994],[-10.682714843749977,9.289355468749989],[-10.758593749999989,9.385351562499991],[-11.047460937499977,9.786328125],[-11.180859374999983,9.925341796874989],[-11.205664062499977,9.977734375],[-11.273632812499983,9.996533203124997],[-11.911083984374983,9.993017578124991],[-12.142333984375,9.87539062499999],[-12.427978515625,9.898144531249997],[-12.557861328125,9.704980468749994],[-12.755859375,9.373583984374989],[-12.958789062499989,9.263330078124994],[-13.077294921874994,9.069628906249989],[-13.292675781249983,9.04921875],[-13.436279296875,9.4203125],[-13.691357421874983,9.535791015624994],[-13.689794921874977,9.927783203124989],[-13.820117187499989,9.88720703125],[-14.045019531249977,10.141259765624994],[-14.426904296874994,10.248339843749989],[-14.609570312499983,10.549853515624989],[-14.593505859375,10.766699218749991],[-14.677343749999977,10.68896484375],[-14.775927734374989,10.931640625],[-14.88671875,10.968066406249989],[-14.975,10.803417968749997],[-15.051220703124983,10.834570312499991],[-15.043017578124989,10.940136718749997],[-14.9990234375,10.9921875],[-14.944433593749977,11.072167968749994],[-14.779296875,11.405517578125],[-14.720263671874989,11.48193359375],[-14.682958984374977,11.508496093749997],[-14.604785156249989,11.511621093749994],[-14.452441406249989,11.556201171874989],[-14.327832031249983,11.629785156249994],[-14.265576171874983,11.659912109375],[-14.122314453125,11.65195312499999],[-13.953222656249977,11.664599609374989],[-13.732763671874977,11.736035156249997],[-13.730664062499983,11.959863281249994],[-13.737988281249983,12.009667968749994],[-13.816308593749994,12.054492187499989],[-13.948876953124994,12.178173828124997],[-13.8875,12.246875],[-13.759765625,12.262353515624994],[-13.673535156249983,12.478515625],[-13.732617187499983,12.592822265624989],[-13.729248046875,12.673925781249991],[-13.082910156249994,12.633544921875],[-13.061279296875,12.489990234375],[-12.930712890624989,12.532275390624989],[-12.399072265624994,12.340087890625],[-11.389404296875,12.404394531249991]]]},"properties":{"name":"Guinea","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-16.763330078124994,13.064160156249997],[-16.824804687499977,13.341064453125],[-16.669335937499994,13.475],[-16.41337890624999,13.269726562499997],[-15.427490234375,13.46835937499999],[-16.135449218749983,13.4482421875],[-16.351806640625,13.34335937499999],[-16.56230468749999,13.587304687499994],[-15.509667968749994,13.586230468750003],[-15.426855468749977,13.727001953124997],[-15.108349609374983,13.81210937499999],[-14.405468749999983,13.503710937500003],[-13.977392578124977,13.54345703125],[-13.826708984374989,13.4078125],[-14.246777343749983,13.23583984375],[-15.151123046875,13.556494140624991],[-15.286230468749977,13.39599609375],[-15.814404296874983,13.325146484374997],[-15.834277343749989,13.156445312499997],[-16.648779296874977,13.154150390624991],[-16.763330078124994,13.064160156249997]]]},"properties":{"name":"Gambia","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-15.895898437499966,11.082470703124969],[-15.963964843749977,11.05898437499998],[-15.937695312499955,11.192773437499966],[-15.895898437499966,11.082470703124969]]],[[[-16.11450195312503,11.059423828124977],[-16.236425781249977,11.113427734374966],[-16.06733398437501,11.197216796874983],[-16.11450195312503,11.059423828124977]]],[[[-15.901806640624926,11.4658203125],[-16.02319335937497,11.477148437499991],[-15.964550781249926,11.59829101562498],[-15.901806640624926,11.4658203125]]],[[[-15.986425781249949,11.882031249999969],[-16.038330078124943,11.759716796875011],[-16.15244140624992,11.876806640624963],[-15.986425781249949,11.882031249999969]]],[[[-13.759765625,12.262353515624994],[-13.8875,12.246875],[-13.948876953124966,12.178173828124997],[-13.737988281250011,12.009667968750037],[-13.730664062499926,11.959863281250009],[-13.73276367187492,11.736035156249983],[-13.953222656249977,11.664599609374989],[-14.265576171874926,11.659912109375014],[-14.327832031250011,11.629785156250009],[-14.452441406249989,11.556201171875017],[-14.604785156249932,11.511621093749994],[-14.682958984374949,11.508496093749983],[-14.720263671875017,11.481933593749986],[-14.779296874999972,11.405517578125057],[-14.944433593749949,11.072167968749994],[-14.999023437499972,10.992187500000043],[-15.04301757812496,10.940136718750011],[-15.09375,11.011035156249974],[-15.054589843749994,11.141943359375006],[-15.222119140624926,11.030908203125037],[-15.216699218749994,11.15625],[-15.39311523437496,11.217236328124983],[-15.354687499999955,11.396337890624963],[-15.479492187499972,11.410302734374966],[-15.072656249999937,11.597802734374966],[-15.230371093750023,11.686767578124972],[-15.412988281249994,11.615234374999972],[-15.501904296875011,11.723779296874966],[-15.467187499999937,11.842822265624974],[-15.078271484374937,11.968994140625014],[-15.941748046875006,11.786621093749986],[-15.92021484374996,11.93779296874996],[-16.138427734375,11.917285156250045],[-16.32807617187501,12.051611328124963],[-16.244580078124955,12.237109375],[-16.43681640624996,12.204150390625045],[-16.711816406249937,12.354833984375006],[-16.656933593749955,12.364355468749991],[-16.52133789062495,12.348632812499986],[-16.41630859374996,12.367675781250057],[-16.24150390624996,12.443310546875011],[-16.144189453124937,12.457421875000037],[-15.839550781249955,12.437890624999966],[-15.57480468749992,12.490380859375009],[-15.19609375,12.679931640624986],[-14.3492187499999,12.67641601562498],[-14.064843749999966,12.675292968750014],[-13.729248046875,12.673925781250006],[-13.732617187499983,12.592822265625003],[-13.673535156249926,12.478515624999986],[-13.759765625,12.262353515624994]]]]},"properties":{"name":"Guinea-Bissau","childNum":5}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[11.332324218750017,1.528369140624989],[11.335351562500023,0.999707031250011],[9.906738281250028,0.960107421875037],[9.80390625000004,0.998730468749997],[9.788671875000034,1.025683593749974],[9.760546874999989,1.074707031250014],[9.704589843750057,1.079980468750023],[9.676464843750011,1.074707031250014],[9.636132812500051,1.046679687499989],[9.590820312500057,1.031982421875014],[9.599414062500045,1.054443359374972],[9.509863281250006,1.114794921875017],[9.385937500000068,1.13925781250002],[9.807031250000051,1.927490234375028],[9.77968750000008,2.068212890625006],[9.800781250000028,2.304443359375],[9.826171875000057,2.297802734374969],[9.8369140625,2.242382812500054],[9.870117187500028,2.21328125],[9.979882812499994,2.167773437500045],[10.790917968750023,2.167578125],[11.096582031250051,2.167480468749986],[11.328710937500006,2.167431640624969],[11.332324218750017,1.528369140624989]]],[[[8.735742187500023,3.758300781249972],[8.910058593750023,3.758203125000051],[8.946093750000074,3.627539062499977],[8.704003906250051,3.223632812500028],[8.474902343749989,3.264648437500043],[8.464648437500045,3.450585937499994],[8.735742187500023,3.758300781249972]]]]},"properties":{"name":"Eq. Guinea","childNum":2}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[23.852246093749983,35.53544921874999],[24.166015625000057,35.59521484375],[24.108984374999977,35.49580078124998],[24.35400390625,35.359472656250034],[25.73017578125004,35.34858398437501],[25.791308593750074,35.122851562500045],[26.32021484375008,35.315136718749955],[26.165625,35.018603515625045],[24.79980468750003,34.93447265625002],[24.70888671875008,35.08906250000001],[24.463671875000045,35.160351562499955],[23.59277343749997,35.257226562499966],[23.56982421875,35.534765625000034],[23.67265624999999,35.51391601562506],[23.736914062500034,35.65551757812503],[23.852246093749983,35.53544921874999]]],[[[27.17607421874999,35.46528320312498],[27.070703125000023,35.59775390624998],[27.22314453125,35.820458984374966],[27.17607421874999,35.46528320312498]]],[[[23.053808593750034,36.18979492187498],[22.91083984375004,36.220996093750045],[22.950488281250045,36.38393554687502],[23.053808593750034,36.18979492187498]]],[[[27.84277343750003,35.929296875000034],[27.71552734375004,35.95732421874996],[27.71630859375003,36.17158203125001],[28.23183593750005,36.43364257812502],[28.087792968750023,36.06533203125002],[27.84277343750003,35.929296875000034]]],[[[25.48242187500003,36.39262695312502],[25.37050781250005,36.35893554687499],[25.408984375000074,36.473730468750006],[25.48242187500003,36.39262695312502]]],[[[26.46064453125001,36.58540039062501],[26.270019531250057,36.54692382812499],[26.370019531250023,36.63857421875002],[26.46064453125001,36.58540039062501]]],[[[26.94960937500005,36.72709960937502],[27.214941406250006,36.89863281249998],[27.352148437499977,36.86889648437506],[26.94960937500005,36.72709960937502]]],[[[25.859375,36.79042968750005],[25.74316406250003,36.78974609374998],[26.06445312500003,36.90273437500002],[25.859375,36.79042968750005]]],[[[27.01972656250004,36.95903320312502],[26.91992187500003,36.94521484375005],[26.88867187499997,37.087255859375034],[27.01972656250004,36.95903320312502]]],[[[25.278906250000034,37.06840820312502],[25.105468750000057,37.034960937500045],[25.235058593750068,37.148535156250006],[25.278906250000034,37.06840820312502]]],[[[25.54589843749997,36.96757812499999],[25.45673828125001,36.9296875],[25.361914062500063,37.07041015624998],[25.52529296875005,37.19638671875006],[25.54589843749997,36.96757812499999]]],[[[24.523535156250063,37.125097656250006],[24.42480468750003,37.131982421874994],[24.48378906250005,37.21020507812503],[24.523535156250063,37.125097656250006]]],[[[25.402734375000023,37.419140624999955],[25.312695312500068,37.48930664062496],[25.462988281250063,37.47109375],[25.402734375000023,37.419140624999955]]],[[[26.029296875000057,37.529394531250034],[26.086328125000023,37.63491210937505],[26.351367187500017,37.67431640625],[26.029296875000057,37.529394531250034]]],[[[25.255859375000057,37.59960937500006],[25.156347656250034,37.54506835937505],[24.99648437500005,37.676904296874994],[25.255859375000057,37.59960937500006]]],[[[24.35595703125003,37.57685546875004],[24.28896484375005,37.52827148437498],[24.37910156250004,37.682714843750006],[24.35595703125003,37.57685546875004]]],[[[26.82441406250004,37.81142578125005],[27.05507812500005,37.70927734375002],[26.84492187500004,37.64472656250001],[26.58105468750003,37.723730468750034],[26.82441406250004,37.81142578125005]]],[[[20.888476562500074,37.805371093749955],[20.993945312500074,37.70800781250003],[20.81855468750004,37.66474609375001],[20.61953125000008,37.855029296875045],[20.691503906250006,37.929541015625034],[20.888476562500074,37.805371093749955]]],[[[24.991699218750057,37.75961914062506],[24.962207031250074,37.69238281250003],[24.7001953125,37.961669921875],[24.956347656250045,37.90478515625006],[24.991699218750057,37.75961914062506]]],[[[20.61230468750003,38.38334960937502],[20.761328125,38.07055664062497],[20.523535156250063,38.106640624999955],[20.4521484375,38.23417968750002],[20.35253906250003,38.179882812499955],[20.563183593750068,38.474951171875034],[20.61230468750003,38.38334960937502]]],[[[26.094042968750017,38.21806640625002],[25.891894531250045,38.243310546874994],[25.991406250000068,38.353515625],[25.846093750000023,38.57402343749996],[26.16035156250001,38.54072265625001],[26.094042968750017,38.21806640625002]]],[[[20.68671875000001,38.60869140625002],[20.5546875,38.58256835937502],[20.69414062499999,38.84423828125003],[20.68671875000001,38.60869140625002]]],[[[24.67470703125005,38.80922851562502],[24.54101562499997,38.788671875],[24.485644531250074,38.980273437500045],[24.67470703125005,38.80922851562502]]],[[[23.41542968750008,38.958642578124994],[23.525,38.8134765625],[24.127539062500034,38.648486328125045],[24.27578125000005,38.22001953124996],[24.58837890625003,38.12397460937504],[24.53652343750005,37.97973632812506],[24.212011718750006,38.11752929687506],[24.040136718750006,38.389990234375034],[23.65078125000008,38.44306640625001],[23.25214843750004,38.80122070312498],[22.870312500000068,38.870507812499966],[23.258203125000023,39.03134765625006],[23.41542968750008,38.958642578124994]]],[[[26.41015625000003,39.329443359375034],[26.59560546875005,39.04882812499997],[26.488671875000023,39.074804687500034],[26.46875,38.97280273437502],[26.10791015625,39.08105468749997],[26.273144531249983,39.19755859374999],[26.072363281250034,39.095605468749994],[25.84414062500008,39.20004882812506],[26.16542968750008,39.37353515625006],[26.41015625000003,39.329443359375034]]],[[[20.077929687500045,39.432714843750034],[19.883984375000068,39.461523437500034],[19.646484375,39.76708984375003],[19.926074218750017,39.773730468750045],[19.8466796875,39.66811523437502],[20.077929687500045,39.432714843750034]]],[[[25.43769531250004,39.98330078125002],[25.357031250000063,39.80810546875003],[25.24941406250005,39.89414062500006],[25.06220703125004,39.852392578125006],[25.05800781250005,39.999658203124966],[25.43769531250004,39.98330078125002]]],[[[24.774218750000074,40.615185546874955],[24.515527343750023,40.64702148437496],[24.623339843750045,40.79291992187501],[24.774218750000074,40.615185546874955]]],[[[26.03896484375008,40.726757812499955],[25.10449218750003,40.994726562500006],[24.792968750000057,40.857519531250034],[24.47705078125,40.94775390625003],[24.082324218750074,40.72407226562504],[23.762792968750063,40.74780273437497],[23.866796875000034,40.41855468750006],[24.21279296875008,40.32778320312502],[24.343359375000034,40.14770507812503],[23.913183593750063,40.35878906250005],[23.72792968750008,40.329736328124994],[23.96748046875001,40.11455078125002],[23.947070312500045,39.96557617187506],[23.66455078125003,40.22382812499998],[23.42626953125,40.26396484374999],[23.62734375,39.92407226562503],[22.896484375000057,40.39990234374997],[22.92226562500008,40.59086914062499],[22.629492187500034,40.49555664062501],[22.59218750000005,40.03691406250002],[23.327734374999977,39.174902343750006],[23.15468750000008,39.10146484375005],[23.16171875,39.25776367187501],[22.92138671874997,39.30634765625004],[22.886035156250074,39.16997070312496],[23.066699218750017,39.03793945312498],[22.569140625000074,38.86748046874999],[23.25292968750003,38.66123046875006],[23.68398437500008,38.35244140625002],[23.96699218750001,38.275],[24.024511718750006,38.139794921874966],[24.01972656250001,37.67773437499997],[23.50175781249999,38.03486328124998],[23.03632812500004,37.87836914062501],[23.48925781250003,37.440185546875],[23.16152343750005,37.333837890625006],[22.725390625000017,37.542138671874966],[23.16015625000003,36.448095703125034],[22.717187500000023,36.79394531250006],[22.42773437500003,36.47578124999998],[22.08046875000008,37.028955078124966],[21.95556640625003,36.990087890625034],[21.892382812500045,36.73730468749997],[21.58291015625005,37.080957031249994],[21.678906250000068,37.38720703125003],[21.124707031250068,37.89160156250003],[21.40371093750005,38.19667968750002],[21.658398437500068,38.17509765624996],[21.82470703125003,38.328125],[22.846386718750068,37.96757812499996],[23.18349609375008,38.133691406249966],[22.421679687500045,38.43852539062499],[22.319921875,38.35683593750005],[21.96533203124997,38.412451171875006],[21.47255859375005,38.321386718750006],[21.3310546875,38.48730468749997],[21.303320312500034,38.373925781249966],[21.113183593750023,38.38466796875002],[20.768554687500057,38.874414062499966],[21.111621093750045,38.89628906249999],[21.11835937500001,39.029980468749955],[20.71337890625,39.03515625000003],[20.300781250000057,39.32709960937501],[20.19140625,39.545800781249966],[20.099414062500074,39.641259765624966],[20.001269531250074,39.70942382812501],[20.022558593750063,39.710693359375],[20.059765624999983,39.69912109375002],[20.13105468750004,39.66162109375003],[20.206835937500017,39.65351562499998],[20.382421875,39.802636718749994],[20.381640625000017,39.84179687500006],[20.311328125000074,39.95078125000006],[20.311132812500034,39.97944335937504],[20.338476562500006,39.991064453125006],[20.38369140625008,40.0171875],[20.408007812500074,40.049462890624994],[20.4560546875,40.065576171874994],[20.657421875000068,40.11738281249998],[20.881640625000017,40.467919921874994],[21.030859375000034,40.62246093750002],[20.95576171875001,40.775292968749994],[20.96425781250005,40.84990234374999],[21.575781250000034,40.86894531249996],[21.627539062500006,40.896337890625034],[21.77949218750004,40.95043945312506],[21.99335937500001,41.13095703125006],[22.18447265625005,41.15864257812501],[22.49355468750005,41.118505859375006],[22.603613281249977,41.14018554687499],[22.724804687500068,41.17851562499999],[22.78388671875004,41.33198242187498],[23.155957031250068,41.32207031249999],[23.239843750000034,41.38496093750001],[23.372070312500057,41.3896484375],[23.433398437500017,41.39873046874999],[23.53583984375001,41.38603515624999],[23.63515625000008,41.386767578125045],[24.011328124999977,41.460058593750034],[24.03291015625004,41.469091796875034],[24.05605468750005,41.527246093749966],[24.38671875,41.523535156250006],[24.487890625,41.55522460937499],[24.518261718750068,41.55253906249996],[24.773730468750045,41.356103515624994],[24.99355468750008,41.36499023437503],[25.133398437500063,41.31577148437506],[25.251171875000068,41.243554687499994],[25.923339843750057,41.311914062499966],[26.066406250000057,41.35068359375006],[26.135351562499977,41.3857421875],[26.155175781250023,41.43486328124999],[26.143554687500057,41.52153320312496],[26.085546875000063,41.704150390625045],[26.10742187499997,41.72568359374998],[26.20058593750005,41.74379882812502],[26.320898437500034,41.716552734375],[26.581347656250074,41.60126953125004],[26.62490234375008,41.401757812499994],[26.330664062499977,41.23876953125],[26.331054687500057,40.954492187499994],[26.03896484375008,40.726757812499955]]]]},"properties":{"name":"Greece","childNum":29}},{"geometry":{"type":"Polygon","coordinates":[[[-61.71552734375,12.012646484374997],[-61.714990234374994,12.18515625],[-61.60703125,12.223291015624994],[-61.71552734375,12.012646484374997]]]},"properties":{"name":"Grenada","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-46.266699218750006,60.781396484374994],[-46.381542968749955,60.66030273437502],[-46.7880859375,60.758398437500034],[-46.205224609374994,60.943505859374994],[-46.266699218750006,60.781396484374994]]],[[[-37.03125,65.53198242187497],[-37.23842773437494,65.60986328125003],[-37.047509765624966,65.722265625],[-37.03125,65.53198242187497]]],[[[-51.01367187499994,69.55249023437497],[-51.202050781249966,69.525],[-51.33886718749994,69.73203125000006],[-51.094580078125006,69.92416992187503],[-50.67900390624999,69.84853515625],[-51.01367187499994,69.55249023437497]]],[[[-52.73115234375001,69.94472656250005],[-52.0453125,69.8072265625],[-51.90019531249999,69.60478515625007],[-53.57841796874996,69.25664062500002],[-54.18271484374995,69.40351562500001],[-53.65830078124998,69.46513671875005],[-53.825,69.54033203124999],[-54.91914062499998,69.71362304687503],[-54.78789062499996,69.94985351562502],[-54.322607421875034,69.94189453125],[-54.83076171875001,70.13295898437502],[-54.37163085937499,70.31728515625],[-53.296728515625034,70.20537109375002],[-52.73115234375001,69.94472656250005]]],[[[-51.67514648437498,70.855224609375],[-52.11938476562497,70.87065429687502],[-52.10673828124999,70.96801757812497],[-51.67514648437498,70.855224609375]]],[[[-25.43232421875001,70.92133789062495],[-25.402246093749994,70.65268554687503],[-26.217871093749977,70.45405273437498],[-26.604687499999926,70.55336914062497],[-28.03525390624995,70.48681640625],[-27.61723632812496,70.91376953125001],[-26.621777343749955,70.87563476562497],[-25.81889648437499,71.04365234375001],[-25.43232421875001,70.92133789062495]]],[[[-53.53520507812493,71.04082031250005],[-53.9578125,71.12773437499999],[-53.58447265625003,71.29707031249995],[-53.53520507812493,71.04082031250005]]],[[[-55.01689453124999,72.79111328125003],[-55.56660156249998,72.56435546875002],[-56.214794921874955,72.71918945312495],[-55.01689453124999,72.79111328125003]]],[[[-18.000537109374932,75.40732421875003],[-17.391992187499937,75.03691406250007],[-18.670800781249966,75.00166015624998],[-18.856054687499977,75.31914062500002],[-18.000537109374932,75.40732421875003]]],[[[-18.58261718749995,76.042333984375],[-19.085351562499966,76.43037109375001],[-18.882470703124937,76.70380859375001],[-18.58261718749995,76.042333984375]]],[[[-71.667333984375,77.32529296874998],[-72.48955078124999,77.43164062499997],[-71.43344726562495,77.394384765625],[-71.667333984375,77.32529296874998]]],[[[-17.6125,79.82587890624995],[-18.662011718749966,79.72001953125005],[-19.13828125,79.85234375000002],[-17.98291015625,80.05517578125003],[-17.471386718749955,80.02871093749997],[-17.6125,79.82587890624995]]],[[[-44.86455078124999,82.08364257812502],[-46.75190429687501,82.34819335937502],[-47.27226562499996,82.65693359375001],[-46.399169921875,82.692138671875],[-44.91748046875003,82.48051757812505],[-44.86455078124999,82.08364257812502]]],[[[-29.952880859375,83.56484374999997],[-25.795068359374994,83.26098632812497],[-31.99267578125,83.0853515625],[-32.03271484374997,82.98344726562502],[-25.12338867187495,83.15961914062501],[-24.47031249999995,82.87739257812498],[-21.582519531249943,82.6341796875],[-23.118066406249966,82.32470703125003],[-29.57939453124996,82.16118164062502],[-29.887402343749983,82.05483398437502],[-29.543847656249994,81.93994140624997],[-27.839501953124966,82.04887695312505],[-25.148828124999966,82.001123046875],[-24.293066406249977,81.70097656250005],[-23.103710937499983,82.01181640625003],[-21.337988281249977,82.068701171875],[-21.230517578125017,81.60136718749999],[-23.11772460937499,80.77817382812498],[-19.62993164062499,81.63989257812503],[-17.456054687499943,81.397705078125],[-16.12070312499995,81.776611328125],[-14.241992187500017,81.81386718750005],[-12.434423828125006,81.68251953125002],[-11.430664062499972,81.45683593750005],[-13.126220703124972,81.08779296875],[-14.452343749999955,80.99311523437498],[-14.503564453124994,80.76328125000006],[-16.76059570312492,80.573388671875],[-15.937255859374972,80.42763671874997],[-16.48876953124997,80.25195312499997],[-18.070947265624994,80.17207031249995],[-19.429199218749943,80.25771484375],[-20.150146484375,80.01123046874997],[-18.99199218749996,79.17836914062502],[-21.133740234374926,78.65864257812501],[-21.729589843749977,77.70854492187499],[-20.862597656249932,77.91186523437503],[-19.490429687499983,77.71889648437497],[-19.46752929687503,77.56582031250005],[-20.162060546874926,77.68984375],[-20.680810546875023,77.61899414062503],[-20.23193359374997,77.36840820312497],[-19.30029296874997,77.22236328124995],[-18.442626953124943,77.259375],[-18.51030273437496,76.77817382812498],[-20.48671875,76.92080078125],[-21.614697265624926,76.68789062499997],[-22.18525390625001,76.79409179687502],[-22.609326171874983,76.70429687500004],[-21.877343749999966,76.57348632812503],[-21.488232421874926,76.271875],[-20.10361328124992,76.21909179687503],[-19.508984374999926,75.75751953124995],[-19.52636718750003,75.18022460937505],[-20.484960937500006,75.31425781249999],[-21.649316406249966,75.02343749999997],[-22.232861328124926,75.11972656249998],[-21.69511718749999,74.96445312500003],[-20.985791015624983,75.07436523437497],[-20.86157226562497,74.63593750000001],[-20.41708984374995,74.9751953125],[-19.98491210937499,74.9751953125],[-19.287011718750023,74.54638671875006],[-19.36914062499997,74.28403320312498],[-20.256445312499977,74.2828125],[-20.653125,74.13735351562502],[-21.954931640624977,74.24428710937497],[-21.942919921874932,74.56572265624999],[-22.32158203124999,74.30253906250002],[-22.134814453124932,73.99047851562503],[-20.36728515624992,73.8482421875],[-20.509667968749966,73.49287109375001],[-22.346875,73.26923828125001],[-23.23320312499999,73.39770507812497],[-24.157714843749943,73.76445312499999],[-24.67724609375,73.602197265625],[-25.521289062500017,73.85161132812499],[-24.79125976562497,73.51127929687502],[-26.062304687500017,73.25302734375],[-27.270410156250023,73.43627929687503],[-26.541845703125006,73.24897460937495],[-27.561621093750006,73.13847656250002],[-27.348046875000023,73.06782226562501],[-25.057031250000023,73.396484375],[-24.132666015625006,73.409375],[-22.036328124999955,72.91845703125006],[-22.29321289062497,72.11953125],[-24.06904296875001,72.49873046874998],[-24.629980468749977,73.03764648437499],[-26.657617187499966,72.71582031249997],[-24.81333007812492,72.90151367187497],[-24.65,72.58251953125],[-25.117871093749983,72.34697265625005],[-24.66684570312492,72.437353515625],[-21.959667968749955,71.74467773437502],[-22.479638671874937,71.38344726562497],[-22.417578125,71.24868164062505],[-22.29902343750001,71.43232421874998],[-21.75224609374999,71.47832031250002],[-21.522656249999926,70.52622070312503],[-22.38413085937492,70.46240234375],[-22.437011718749943,70.860009765625],[-22.690673828124943,70.43730468750002],[-23.327832031249983,70.45097656250007],[-23.97138671875001,70.64946289062499],[-24.562207031249926,71.22353515624997],[-25.885156249999966,71.571923828125],[-27.08720703124999,71.6265625],[-27.107031250000034,71.53266601562498],[-25.842724609374955,71.48017578124995],[-25.74223632812499,71.18359375],[-26.717919921874994,70.95048828125005],[-28.39843749999997,70.99291992187497],[-27.99218749999997,70.89521484374998],[-28.06987304687499,70.69902343750005],[-29.07207031249999,70.444970703125],[-26.621777343749955,70.46337890625],[-26.576806640625023,70.35708007812502],[-27.560839843749932,70.12446289062498],[-27.384179687500023,69.9916015625],[-27.027734374999966,70.20122070312499],[-25.529882812499977,70.35317382812502],[-23.66733398437495,70.139306640625],[-22.28447265624996,70.12583007812498],[-22.287060546874955,70.03339843749998],[-23.03364257812501,69.90083007812498],[-23.04956054687497,69.79272460937497],[-23.86572265624997,69.73671875000002],[-23.739404296874994,69.58862304687497],[-24.296679687500017,69.58554687500006],[-24.295556640624966,69.439306640625],[-25.188574218750006,69.26054687500002],[-25.092431640624937,69.16518554687502],[-25.697998046874943,68.889892578125],[-26.48291015624997,68.67592773437502],[-29.24951171874997,68.29877929687501],[-29.86850585937495,68.31157226562505],[-30.318115234375,68.19331054687501],[-30.72001953124999,68.25117187499998],[-30.610742187499994,68.11791992187503],[-30.97856445312499,68.06132812500005],[-32.32744140624999,68.43730468749999],[-32.16455078125,67.99111328125002],[-33.15698242187497,67.62670898437506],[-34.1982421875,66.65507812499999],[-35.18857421874995,66.25029296875002],[-35.86723632812502,66.44140624999997],[-35.630078124999926,66.13994140625002],[-36.37919921874996,65.830810546875],[-36.52724609375002,66.00771484375],[-36.665185546874966,65.79008789062507],[-37.06279296874996,65.87143554687503],[-37.410058593749994,65.65634765625],[-37.954785156249955,65.63359375000007],[-37.278710937499994,66.30439453124995],[-38.156640624999966,66.38559570312498],[-37.75234375000002,66.26152343750002],[-38.13994140625002,65.90351562499998],[-38.52036132812498,66.00966796875002],[-38.20336914062497,65.71171874999999],[-40.17353515624998,65.55615234375],[-39.57792968749996,65.34077148437501],[-39.937255859375,65.14160156250003],[-40.253125,65.04887695312505],[-41.08442382812501,65.10083007812497],[-40.966015624999955,64.86884765624995],[-40.655468749999926,64.91533203125002],[-40.18222656249998,64.47993164062495],[-40.78173828125,64.22177734375003],[-41.581005859374926,64.29833984375],[-41.03056640624996,64.12104492187504],[-40.61777343749998,64.13173828125],[-40.550390625000034,63.72524414062505],[-40.77519531249999,63.53364257812501],[-41.04873046875002,63.51381835937505],[-41.387890624999926,63.06186523437498],[-41.84448242187497,63.07026367187501],[-42.174511718749955,63.20878906249999],[-41.63447265624998,62.972460937500074],[-41.90898437499996,62.73710937499999],[-42.94165039062503,62.72021484375003],[-42.15297851562502,62.568457031250006],[-42.32148437499998,62.15273437500005],[-42.110205078125006,61.857226562500074],[-42.58530273437498,61.71748046875001],[-42.34736328125001,61.61743164062497],[-42.717041015625,60.767480468749994],[-43.04409179687502,60.523681640625],[-43.92270507812495,60.59536132812502],[-43.21298828124998,60.390673828125074],[-43.122900390625006,60.06123046875001],[-43.32011718749993,59.928125],[-43.95502929687498,60.025488281250006],[-43.65791015625001,59.85864257812503],[-43.90654296874996,59.815478515625045],[-44.11699218750002,59.83193359375002],[-44.06547851562499,59.92480468750003],[-44.412939453125006,59.922607421875],[-44.22436523437494,60.273535156250006],[-44.61328124999997,60.01665039062499],[-45.37924804687495,60.20292968750002],[-45.367773437500006,60.37294921875002],[-44.97470703124995,60.457226562499955],[-44.756738281249966,60.66459960937502],[-45.38051757812494,60.444921875],[-46.04663085937503,60.61572265625],[-46.141943359375006,60.776513671874994],[-45.87021484374998,61.21831054687502],[-46.87446289062501,60.81640625000003],[-48.180810546874966,60.76923828125001],[-47.77031249999999,60.99775390625001],[-48.386425781249926,61.004736328125034],[-48.42817382812501,61.18740234375002],[-48.92207031249998,61.27744140624998],[-49.28906249999997,61.58994140625006],[-49.380273437499994,61.89018554687502],[-48.82871093749998,62.0796875],[-49.62377929687494,61.99858398437499],[-49.553466796875,62.23271484374999],[-50.319238281249966,62.473193359375045],[-50.298730468749966,62.72197265625002],[-49.793115234374994,63.04462890625004],[-50.39008789062501,62.82202148437497],[-51.46884765624995,63.64228515625001],[-51.547509765624994,64.00610351562497],[-50.260693359374955,64.21425781250002],[-50.48662109374996,64.20888671875],[-50.43706054687499,64.31284179687503],[-51.58491210937498,64.10317382812502],[-51.70786132812498,64.205078125],[-51.403759765624926,64.46318359375002],[-50.49208984375002,64.69316406250005],[-50.00898437500001,64.44726562499997],[-50.12163085937493,64.703759765625],[-50.51699218750002,64.76650390625],[-50.96064453124998,65.20112304687498],[-50.721582031249966,64.79760742187503],[-51.22060546875002,64.62846679687502],[-51.25537109375,64.75810546875005],[-51.92260742187503,64.21875],[-52.259033203125,65.154931640625],[-52.537695312500034,65.32880859374998],[-51.61914062500003,65.71318359375002],[-51.091894531250006,65.77578125],[-51.7234375,65.723486328125],[-52.55126953125003,65.46137695312498],[-52.760937499999926,65.59082031249997],[-53.198974609375,65.59404296875002],[-53.106347656249966,65.97714843749998],[-53.39204101562498,66.04833984375],[-51.225,66.88154296875001],[-53.035791015624966,66.20141601562503],[-53.538769531249955,66.13935546874998],[-53.41875,66.64853515624998],[-53.038281249999955,66.82680664062497],[-52.38686523437502,66.88115234375005],[-53.44360351562503,66.924658203125],[-53.88442382812502,67.13554687499999],[-53.79858398437494,67.41816406250001],[-52.666455078124955,67.74970703124995],[-50.613476562499955,67.5279296875],[-51.171044921874966,67.693603515625],[-50.96884765624998,67.80664062500003],[-51.765234375000034,67.73784179687505],[-52.34482421874998,67.83691406249997],[-53.735205078125006,67.54902343750004],[-53.151562499999926,68.20776367187503],[-51.779980468749926,68.05673828124998],[-51.456494140624926,68.116064453125],[-51.21015625000001,68.419921875],[-52.19853515624993,68.22080078125],[-53.38315429687495,68.29736328124997],[-53.03945312500002,68.61088867187499],[-52.60458984374998,68.70874023437503],[-51.62314453124995,68.53481445312505],[-50.945703124999966,68.68266601562505],[-50.807714843750006,68.81699218749998],[-51.24941406250002,68.73994140625001],[-51.084863281249994,69.12827148437498],[-50.29736328124994,69.17060546874998],[-51.07695312499996,69.20947265625],[-50.291699218749955,70.01445312500005],[-52.254638671875,70.05893554687503],[-53.02304687499995,70.30190429687497],[-54.01445312499996,70.42167968750005],[-54.53076171875,70.69926757812502],[-54.16582031249999,70.82011718750005],[-52.801953124999955,70.7505859375],[-50.87236328124993,70.36489257812502],[-50.66328124999998,70.417578125],[-51.32285156249998,70.58876953124997],[-51.25659179687497,70.85268554687502],[-51.77431640625002,71.01044921875001],[-51.018945312499966,71.001318359375],[-51.37666015625001,71.11904296875],[-53.007568359375,71.17998046874999],[-52.89184570312497,71.457666015625],[-51.76992187500002,71.67172851562498],[-53.44008789062502,71.57900390625002],[-53.14453125000003,71.80742187500002],[-53.65214843749996,72.36264648437506],[-53.92773437499997,72.31879882812501],[-53.47758789062502,71.84995117187506],[-54.01992187500002,71.657861328125],[-53.96298828124995,71.45898437499997],[-54.6890625,71.36723632812505],[-55.59404296874999,71.55351562500005],[-55.315576171874994,72.11069335937498],[-54.84013671874996,72.35610351562497],[-55.581445312499994,72.178857421875],[-55.63583984374998,72.300439453125],[-55.29570312499996,72.35439453124997],[-55.60170898437494,72.453466796875],[-54.924951171874994,72.57197265624998],[-54.737939453124994,72.87250976562501],[-55.07309570312498,73.01513671875003],[-55.28891601562498,72.93320312500003],[-55.66855468749998,73.00791015624998],[-55.288281249999955,73.32709960937498],[-56.10405273437496,73.55815429687499],[-55.83828125,73.75971679687501],[-56.22539062499999,74.12910156249995],[-57.23056640624995,74.12529296875007],[-56.70634765625002,74.21918945312501],[-56.717675781249994,74.42924804687499],[-56.25546874999998,74.52680664062498],[-58.56552734374998,75.35273437500001],[-58.249658203124994,75.50668945312503],[-58.51621093749995,75.68906250000006],[-61.18823242187494,76.157861328125],[-63.29130859374996,76.35205078125003],[-63.84306640624999,76.21713867187498],[-64.307275390625,76.31650390624998],[-65.36992187499993,76.13056640625004],[-65.87573242187494,76.23833007812505],[-66.46577148437498,76.13916015625],[-66.99257812500002,76.21293945312502],[-66.67480468750003,75.977392578125],[-68.14873046875002,76.06704101562497],[-69.48408203125001,76.39916992187503],[-68.1142578125,76.65063476562503],[-69.67382812499994,76.73588867187507],[-69.69423828125002,76.98945312500004],[-70.613134765625,76.82182617187499],[-71.14145507812498,77.02866210937503],[-70.86284179687496,77.175439453125],[-68.97832031250002,77.19531250000006],[-68.13554687499999,77.37958984375001],[-66.38945312499999,77.28027343750003],[-66.69121093749999,77.68120117187502],[-67.68808593749995,77.523779296875],[-68.62153320312498,77.60185546875002],[-69.35136718749999,77.467138671875],[-70.53540039062497,77.699560546875],[-70.11445312500001,77.84135742187505],[-71.27163085937494,77.81313476562497],[-72.81806640624995,78.1943359375],[-72.47250976562498,78.48203125],[-71.65131835937493,78.62314453124998],[-68.99345703124999,78.857421875],[-68.37705078124998,79.037841796875],[-65.82553710937503,79.17373046874997],[-64.79228515624993,80.00063476562502],[-64.17915039062498,80.09926757812497],[-66.84365234374997,80.07622070312507],[-67.05063476562503,80.384521484375],[-64.51552734374997,81],[-63.72197265624993,81.05732421875001],[-63.028662109375006,80.88955078125002],[-62.90336914062496,81.21835937500003],[-61.43598632812498,81.13359375000002],[-60.842871093750034,81.85537109374997],[-59.28193359374998,81.88403320312503],[-56.615136718749994,81.362890625],[-59.26181640624998,82.00664062500005],[-54.54887695312496,82.35063476562505],[-53.671337890624955,82.16406249999997],[-53.55566406250003,81.65327148437501],[-53.022558593750034,82.32172851562504],[-50.894433593749994,81.89521484375001],[-49.54106445312496,81.91806640625003],[-50.93554687500003,82.38281250000003],[-50.03710937499994,82.472412109375],[-44.7294921875,81.77983398437505],[-44.23886718749998,82.3681640625],[-45.55654296875002,82.74702148437498],[-41.87646484375,82.680322265625],[-41.36962890625003,82.75],[-46.136816406250006,82.85883789062504],[-46.169042968750006,83.06386718749997],[-45.41459960937496,83.01767578124998],[-43.00927734375003,83.26459960937501],[-41.300146484375006,83.10078125000004],[-40.35683593750002,83.332177734375],[-38.15625,82.9986328125],[-38.74956054687496,83.37084960937497],[-37.72333984374998,83.49775390624998],[-29.952880859375,83.56484374999997]]]]},"properties":{"name":"Greenland","childNum":14}},{"geometry":{"type":"Polygon","coordinates":[[[-89.2328125,15.888671875],[-88.89404296875,15.890625],[-88.60336914062499,15.76416015625],[-88.5939453125,15.950292968749991],[-88.22832031249999,15.72900390625],[-88.271435546875,15.694873046875003],[-88.36455078124999,15.616015625],[-88.68447265625,15.360498046874994],[-88.96098632812499,15.152441406249991],[-89.142578125,15.072314453125003],[-89.22236328125,14.866064453124991],[-89.16220703124999,14.669238281250003],[-89.17177734375,14.606884765624997],[-89.28671875,14.529980468749997],[-89.36259765624999,14.416015625],[-89.5736328125,14.390087890624997],[-89.54716796874999,14.241259765625003],[-90.04814453124999,13.904052734375],[-90.09521484375,13.736523437499997],[-90.60693359375,13.929003906250003],[-91.37734375,13.990185546874997],[-92.23515624999999,14.54541015625],[-92.15854492187499,14.963574218749997],[-92.14423828125,15.001953125],[-92.09873046874999,15.026757812499994],[-92.07480468749999,15.07421875],[-92.187158203125,15.320898437499991],[-92.08212890624999,15.495556640624997],[-91.9572265625,15.703222656249991],[-91.736572265625,16.07016601562499],[-91.433984375,16.070458984374994],[-90.97958984374999,16.07080078125],[-90.70322265624999,16.071044921875],[-90.52197265625,16.071191406249994],[-90.44716796875,16.072705078124997],[-90.45986328125,16.162353515625],[-90.450146484375,16.261376953124994],[-90.4169921875,16.351318359375],[-90.4169921875,16.39101562499999],[-90.47109375,16.43955078124999],[-90.57578125,16.467822265625003],[-90.63408203124999,16.5107421875],[-90.634375,16.565136718749997],[-90.65996093749999,16.630908203125003],[-90.710693359375,16.70810546874999],[-90.975830078125,16.867822265624994],[-91.409619140625,17.255859375],[-91.1955078125,17.254101562499997],[-90.99296874999999,17.25244140625],[-90.98916015625,17.81640625],[-89.16147460937499,17.81484375],[-89.2328125,15.888671875]]]},"properties":{"name":"Guatemala","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[144.74179687500003,13.25927734375],[144.64931640625002,13.4287109375],[144.87539062500002,13.614648437499994],[144.94082031250002,13.5703125],[144.74179687500003,13.25927734375]]]},"properties":{"name":"Guam","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-57.194775390625,5.5484375],[-57.3185546875,5.335351562499994],[-57.20981445312499,5.195410156249991],[-57.331005859375,5.020166015624994],[-57.711083984374994,4.991064453124991],[-57.91704101562499,4.820410156249991],[-57.84599609374999,4.668164062499997],[-58.05429687499999,4.101660156249991],[-57.646728515625,3.39453125],[-57.303662109375,3.377099609374994],[-57.19736328124999,2.853271484375],[-56.704345703125,2.036474609374991],[-56.4828125,1.942138671875],[-56.96953124999999,1.91640625],[-57.03759765625,1.936474609374997],[-57.092675781249994,2.005810546874997],[-57.118896484375,2.013964843749989],[-57.31748046874999,1.963476562499991],[-57.41269531249999,1.908935546875],[-57.500439453125,1.77382812499999],[-57.54575195312499,1.72607421875],[-57.59443359375,1.7041015625],[-57.795654296875,1.7],[-57.8734375,1.667285156249989],[-57.9828125,1.6484375],[-58.03466796875,1.520263671875],[-58.34067382812499,1.587548828124994],[-58.38037109375,1.530224609374997],[-58.39580078124999,1.481738281249989],[-58.5060546875,1.438671875],[-58.511865234374994,1.28466796875],[-58.68461914062499,1.281054687499989],[-58.73032226562499,1.247509765624997],[-58.78720703124999,1.20849609375],[-58.82177734375,1.201220703124989],[-59.231201171875,1.376025390624989],[-59.53569335937499,1.7],[-59.66660156249999,1.746289062499997],[-59.66850585937499,1.842333984374989],[-59.74072265625,1.874169921874994],[-59.75620117187499,1.900634765625],[-59.75522460937499,2.274121093749997],[-59.8896484375,2.362939453124994],[-59.9943359375,2.689990234374989],[-59.854394531249994,3.5875],[-59.55112304687499,3.933544921874997],[-59.557763671874994,3.960009765624989],[-59.62021484374999,4.023144531249997],[-59.73857421874999,4.226757812499997],[-59.69970703125,4.353515625],[-60.1486328125,4.533251953124989],[-59.990673828125,5.082861328124991],[-60.142041015625,5.238818359374989],[-60.241650390625,5.257958984374994],[-60.335205078125,5.199316406249991],[-60.45952148437499,5.188085937499991],[-60.6513671875,5.221142578124997],[-60.742138671875,5.202050781249994],[-61.37680664062499,5.906982421875],[-61.3908203125,5.938769531249989],[-61.303125,6.049511718749997],[-61.22495117187499,6.129199218749989],[-61.15947265624999,6.174414062499991],[-61.12871093749999,6.214306640624997],[-61.152294921875,6.385107421874991],[-61.151025390624994,6.446533203125],[-61.181591796875,6.513378906249997],[-61.20361328125,6.58837890625],[-61.14560546874999,6.69453125],[-60.717919921874994,6.768310546875],[-60.35209960937499,7.002880859374997],[-60.32207031249999,7.092041015625],[-60.32548828124999,7.133984375],[-60.34506835937499,7.15],[-60.46494140624999,7.166552734374989],[-60.523193359375,7.143701171874994],[-60.583203125,7.156201171874997],[-60.63330078125,7.211083984374994],[-60.718652343749994,7.535937499999989],[-60.513623046875,7.813183593749997],[-60.032421875,8.053564453124991],[-59.99072265625,8.162011718749994],[-59.96484375,8.191601562499997],[-59.849072265625,8.248681640624994],[-59.83164062499999,8.305957031249989],[-60.017529296875,8.54931640625],[-59.20024414062499,8.07460937499999],[-58.51108398437499,7.39804687499999],[-58.48056640624999,7.038134765624989],[-58.67294921874999,6.390771484374994],[-58.414990234375,6.85117187499999],[-57.982568359374994,6.785888671875],[-57.54013671874999,6.33154296875],[-57.2275390625,6.178417968749997],[-57.194775390625,5.5484375]]]},"properties":{"name":"Guyana","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[73.70742187500002,-53.13710937499999],[73.46513671875002,-53.184179687500006],[73.25117187500001,-52.97578125000001],[73.83779296875002,-53.11279296875],[73.70742187500002,-53.13710937499999]]]},"properties":{"name":"Heard I. and McDonald Is.","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-83.635498046875,14.876416015624997],[-84.53764648437496,14.633398437499963],[-84.64594726562498,14.661083984375011],[-84.86044921874998,14.809765625000011],[-84.98515624999999,14.752441406249972],[-85.059375,14.582958984374997],[-85.20834960937498,14.311816406250003],[-85.73393554687496,13.85869140625006],[-85.75341796875,13.852050781250028],[-85.78671874999995,13.844433593749997],[-85.98378906249997,13.965673828125006],[-86.04038085937503,14.050146484374977],[-86.33173828124995,13.770068359375031],[-86.37695312500003,13.755664062500031],[-86.61025390624997,13.774853515625026],[-86.73364257812494,13.763476562500017],[-86.75898437499995,13.746142578125045],[-86.77060546875003,13.698730468749972],[-86.763525390625,13.635253906250014],[-86.72958984375,13.4072265625],[-86.710693359375,13.31337890624998],[-86.72929687499996,13.284375],[-86.79213867187497,13.279785156249972],[-86.87353515624994,13.266503906250023],[-86.918212890625,13.223583984374983],[-87.00932617187499,13.007812499999986],[-87.0591796875,12.991455078125028],[-87.337255859375,12.979248046875028],[-87.48911132812503,13.352929687500051],[-87.814208984375,13.399169921875057],[-87.781884765625,13.521386718749994],[-87.71533203125003,13.812695312500011],[-87.73144531250003,13.841064453125014],[-87.80224609374997,13.889990234375034],[-87.89199218749997,13.894970703124983],[-87.99101562499996,13.879638671874972],[-88.15102539062497,13.987353515624974],[-88.44912109374994,13.850976562499994],[-88.48266601562503,13.854248046875043],[-88.49765624999998,13.904541015624986],[-88.50434570312501,13.964208984374963],[-88.51254882812498,13.97895507812504],[-89.12050781249994,14.370214843749991],[-89.36259765624996,14.416015625],[-89.17177734375,14.606884765624983],[-89.16220703125,14.669238281249989],[-89.22236328125001,14.86606445312502],[-89.142578125,15.072314453125031],[-88.96098632812496,15.15244140625002],[-88.68447265625002,15.360498046875037],[-88.36455078124996,15.616015625000045],[-88.27143554687498,15.694873046875045],[-88.22832031249999,15.729003906249972],[-88.131103515625,15.701025390625034],[-87.87495117187495,15.879345703124955],[-86.35664062499998,15.783203125],[-85.93627929687497,15.953417968750045],[-85.98564453124999,16.02416992187497],[-85.48369140624996,15.899511718749977],[-84.97373046874998,15.989892578124994],[-84.55966796875,15.802001953125],[-84.26142578124998,15.822607421875034],[-83.765283203125,15.405468750000054],[-83.972802734375,15.519628906250034],[-84.11132812499997,15.492431640625],[-84.09506835937503,15.400927734375017],[-83.92744140624998,15.394042968750028],[-83.76044921874998,15.220361328124994],[-83.49794921874997,15.222119140624997],[-83.64638671875,15.368408203125043],[-83.36918945312493,15.239990234375],[-83.29086914062498,15.078906250000045],[-83.2255859375,15.042285156250045],[-83.15751953124999,14.993066406249966],[-83.41503906249994,15.008056640625],[-83.5365234375,14.977001953124983],[-83.635498046875,14.876416015624997]]]},"properties":{"name":"Honduras","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[17.60781250000005,42.76904296875],[17.744238281250063,42.70034179687505],[17.34414062500008,42.790380859375006],[17.60781250000005,42.76904296875]]],[[[16.650683593750017,42.99658203125],[17.188281250000045,42.917041015625045],[16.850683593750006,42.8955078125],[16.650683593750017,42.99658203125]]],[[[17.667578125000063,42.897119140624994],[18.436328125000017,42.559716796874994],[18.517480468750023,42.43291015624999],[17.823828125,42.79741210937502],[17.045410156250057,43.014892578125],[17.667578125000063,42.897119140624994]]],[[[16.785253906250006,43.270654296874966],[16.490332031250034,43.28618164062502],[16.44892578125004,43.38706054687506],[16.89130859375001,43.314648437499955],[16.785253906250006,43.270654296874966]]],[[[15.371386718750074,43.973828124999955],[15.437207031250068,43.899511718750006],[15.270019531250028,44.01074218750003],[15.371386718750074,43.973828124999955]]],[[[14.488085937500074,44.66005859375005],[14.31240234375008,44.90039062499997],[14.33125,45.16499023437498],[14.488085937500074,44.66005859375005]]],[[[14.810253906250068,44.97705078124997],[14.45039062500004,45.079199218750006],[14.571093750000017,45.224755859374994],[14.810253906250068,44.97705078124997]]],[[[18.905371093750006,45.931738281250034],[18.839062499999983,45.83574218750002],[19.064257812500045,45.51499023437506],[19.004687500000074,45.39951171875006],[19.4,45.2125],[19.062890625000023,45.13720703125],[19.007128906250045,44.86918945312502],[18.83642578125,44.883251953124955],[18.66259765625,45.07744140624999],[17.812792968750074,45.078125],[16.918652343749983,45.27656249999998],[16.53066406250008,45.21669921875002],[16.29335937500005,45.00883789062496],[16.028320312500057,45.18959960937502],[15.788085937500057,45.17895507812497],[15.736621093750045,44.76582031250001],[16.10341796875008,44.52099609375006],[16.300097656250017,44.12451171875],[17.27382812500005,43.44575195312501],[17.650488281250063,43.006591796875],[17.585156250000068,42.93837890625005],[16.903125,43.392431640625006],[16.393945312500023,43.54335937500002],[15.985546875000068,43.519775390625],[15.185839843750017,44.17211914062503],[15.122949218749994,44.256787109374955],[15.470996093750045,44.27197265625003],[14.981347656250023,44.60292968750005],[14.854589843750034,45.08100585937501],[14.550488281249983,45.297705078125006],[14.31269531250004,45.33779296875002],[13.86074218750008,44.83740234375003],[13.517187500000063,45.481787109375034],[13.878710937500017,45.428369140624994],[14.369921875000074,45.48144531250006],[14.427343750000034,45.50576171875002],[14.56884765625,45.65722656249997],[14.591796875000057,45.65126953125002],[14.649511718750006,45.57148437500001],[14.793066406250034,45.47822265625001],[14.95458984375,45.499902343749994],[15.110449218750034,45.450781250000034],[15.242089843750023,45.44140624999997],[15.339453125000063,45.46704101562506],[15.326660156250028,45.502294921875034],[15.291210937500011,45.541552734375045],[15.283593750000051,45.5796875],[15.35371093750004,45.659912109375],[15.27705078125004,45.73261718749998],[15.652148437500074,45.86215820312498],[15.675585937500045,45.98369140624996],[15.666210937500011,46.04848632812502],[15.596875,46.10922851562506],[15.592578125000017,46.139990234375006],[15.608984374999977,46.171923828125045],[16.1064453125,46.382226562499994],[16.32119140625005,46.53461914062504],[16.42763671875005,46.5244140625],[16.516210937499977,46.499902343749966],[16.569921875,46.48500976562505],[16.748046875000057,46.41640625000002],[16.87148437500008,46.33930664062504],[17.310644531250006,45.99614257812502],[17.80712890625,45.79042968750002],[18.358300781250023,45.75302734375006],[18.533593750000023,45.79614257812503],[18.56464843750004,45.81328124999999],[18.666015625,45.90747070312497],[18.905371093750006,45.931738281250034]]]]},"properties":{"name":"Croatia","childNum":8}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-72.80458984374997,18.777685546875063],[-72.82221679687501,18.707128906249977],[-73.07797851562498,18.790917968749994],[-73.27641601562499,18.95405273437501],[-72.80458984374997,18.777685546875063]]],[[[-71.647216796875,19.195947265624994],[-71.80712890624997,18.987011718749983],[-71.733642578125,18.85639648437501],[-71.72705078125,18.80322265625003],[-71.74321289062502,18.73291015625],[-71.86650390624999,18.61416015625005],[-71.98686523437499,18.61035156249997],[-72.000390625,18.59790039062503],[-71.94038085937493,18.51259765625005],[-71.87255859374997,18.416210937499955],[-71.76191406249998,18.34130859374997],[-71.73725585937495,18.27080078124999],[-71.76831054687497,18.039160156250063],[-71.85292968749997,18.119140625],[-71.94609375,18.186083984375045],[-72.05986328124993,18.228564453125017],[-72.87666015624998,18.151757812499994],[-73.38515625000002,18.251171874999983],[-73.747314453125,18.190234375000017],[-73.88496093749998,18.041894531249994],[-74.478125,18.45],[-74.3875,18.624707031249983],[-74.22773437499998,18.662695312499977],[-72.78935546874996,18.434814453125],[-72.37607421874998,18.57446289062503],[-72.34765624999994,18.674951171874994],[-72.81108398437496,19.071582031250074],[-72.70322265625,19.441064453125023],[-73.43837890624994,19.722119140624983],[-73.21777343750003,19.88369140625005],[-72.63701171875002,19.90087890625],[-72.21982421875003,19.744628906250057],[-71.834716796875,19.696728515624983],[-71.77924804687498,19.718164062499994],[-71.75742187499998,19.68818359375001],[-71.71147460937493,19.486572265625057],[-71.74648437499997,19.28583984375001],[-71.647216796875,19.195947265624994]]]]},"properties":{"name":"Haiti","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[22.1318359375,48.405322265624996],[22.253710937500017,48.407373046874994],[22.582421875000023,48.134033203125],[22.769140625,48.109619140625],[22.87666015625001,47.947265625],[21.99970703125001,47.505029296874994],[21.121679687500006,46.282421875],[20.76025390625,46.246240234374994],[20.613671875000023,46.13349609375],[20.508105468750017,46.166943359375],[20.28095703125001,46.1330078125],[20.241796875,46.10859375],[20.21015625000001,46.126025390624996],[20.161425781250017,46.141894531249996],[19.93408203125,46.161474609375],[19.84443359375001,46.145898437499994],[19.61347656250001,46.169189453125],[19.421289062500023,46.064453125],[18.666015625,45.907470703125],[18.56464843750001,45.81328125],[18.533593750000023,45.796142578125],[18.358300781250023,45.75302734375],[17.80712890625,45.790429687499994],[17.310644531250006,45.996142578124996],[16.871484375000023,46.339306640625],[16.748046875,46.41640625],[16.569921875,46.485009765624994],[16.516210937500006,46.499902343749994],[16.283593750000023,46.857275390625],[16.093066406250017,46.86328125],[16.453417968750017,47.006787109375],[16.44287109375,47.39951171875],[16.676562500000017,47.536035156249994],[16.421289062500023,47.674462890624994],[17.06660156250001,47.707568359374996],[17.147363281250023,48.00595703125],[17.76191406250001,47.770166015624994],[18.72421875,47.787158203124996],[18.791894531250023,48.000292968749996],[19.625390625000023,48.223095703125],[19.95039062500001,48.146630859374994],[20.333789062500017,48.295556640624994],[20.490039062500017,48.526904296874996],[21.45136718750001,48.55224609375],[21.766992187500023,48.3380859375],[22.1318359375,48.405322265624996]]]},"properties":{"name":"Hungary","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[122.9489257812501,-10.90927734375002],[122.82617187500003,-10.899121093749983],[122.84570312500003,-10.761816406249991],[123.37109375000003,-10.474902343749989],[123.41816406250004,-10.651269531250037],[122.9489257812501,-10.90927734375002]]],[[[121.8830078125001,-10.590332031249957],[121.70468750000006,-10.5556640625],[121.99833984375002,-10.446972656249983],[121.8830078125001,-10.590332031249957]]],[[[123.41621093750004,-10.302636718749966],[123.3255859375,-10.264160156249943],[123.45878906250002,-10.13994140624996],[123.41621093750004,-10.302636718749966]]],[[[120.0125,-9.374707031250026],[120.78447265625002,-9.95703125],[120.83261718750006,-10.0375],[120.69804687500002,-10.206640624999949],[120.4391601562501,-10.294042968749991],[120.14482421875002,-10.200097656249952],[119.60107421874997,-9.773535156250006],[119.08544921875003,-9.706933593750023],[118.95878906250002,-9.519335937500003],[119.29589843749997,-9.3671875],[119.9420898437501,-9.301464843750026],[120.0125,-9.374707031250026]]],[[[125.06816406250002,-9.511914062499997],[124.42753906250002,-10.14863281250004],[123.7472656250001,-10.347167968749986],[123.60478515625002,-10.270117187500006],[123.71640625000012,-10.078613281249986],[123.5892578125,-9.966796875000028],[123.709375,-9.61484375],[124.0363281250001,-9.341601562500031],[124.28232421875012,-9.427929687500026],[124.44443359375012,-9.190332031250023],[124.92226562500005,-8.942480468749977],[124.93681640625007,-9.053417968750026],[125.14902343750012,-9.042578125000034],[125.10048828125,-9.189843750000023],[124.96015625000004,-9.213769531250009],[125.06816406250002,-9.511914062499997]]],[[[115.60996093750012,-8.769824218749974],[115.48046875000003,-8.715429687500006],[115.56142578125,-8.669921874999972],[115.60996093750012,-8.769824218749974]]],[[[122.97734375000002,-8.54521484374996],[122.88779296875006,-8.587304687500009],[123.01054687500002,-8.448339843750034],[123.153125,-8.475781250000026],[122.97734375000002,-8.54521484374996]]],[[[119.46406250000004,-8.741015624999974],[119.38554687500002,-8.736035156250026],[119.4464843750001,-8.429199218749957],[119.55722656250012,-8.518847656250003],[119.46406250000004,-8.741015624999974]]],[[[123.31748046875012,-8.354785156249974],[123.02500000000012,-8.395507812500014],[123.21708984375002,-8.235449218750006],[123.33603515625006,-8.269042968750014],[123.31748046875012,-8.354785156249974]]],[[[116.64082031250004,-8.613867187500006],[116.51425781250012,-8.820996093750011],[116.58652343750012,-8.886132812499966],[116.23935546875006,-8.912109375000014],[115.85732421875005,-8.787890625000017],[116.07646484375002,-8.744921874999974],[116.06113281250006,-8.437402343750023],[116.4015625000001,-8.204199218750034],[116.7189453125001,-8.336035156249977],[116.64082031250004,-8.613867187500006]]],[[[124.28662109375003,-8.32949218749998],[124.14667968750004,-8.531445312499997],[123.92773437500003,-8.448925781249969],[124.23955078125002,-8.20341796874996],[124.28662109375003,-8.32949218749998]]],[[[123.92480468750003,-8.2724609375],[123.55302734375007,-8.566796875],[123.23007812500006,-8.530664062500023],[123.47587890625007,-8.322265625000014],[123.39121093750012,-8.280468750000026],[123.77597656250006,-8.190429687499986],[123.92480468750003,-8.2724609375]]],[[[138.89511718750006,-8.388671874999957],[138.56337890625,-8.30908203125],[138.79619140625007,-8.173632812500017],[138.89511718750006,-8.388671874999957]]],[[[117.55634765625004,-8.367285156249949],[117.49052734375007,-8.183398437499974],[117.66503906249997,-8.148242187500003],[117.55634765625004,-8.367285156249949]]],[[[124.5755859375,-8.140820312499997],[125.05029296874997,-8.179589843749994],[125.13173828125,-8.326464843749989],[124.38066406250002,-8.41513671875002],[124.43066406249997,-8.18320312500002],[124.5755859375,-8.140820312499997]]],[[[127.8234375000001,-8.098828124999969],[128.11923828125012,-8.17070312499996],[128.02353515625006,-8.255371093749972],[127.82089843750012,-8.190234375000031],[127.8234375000001,-8.098828124999969]]],[[[122.7829101562501,-8.61171875],[121.65136718749997,-8.898730468749946],[121.41464843750006,-8.81484375],[121.32832031250004,-8.916894531250009],[121.03525390625012,-8.935449218749966],[120.55048828125004,-8.80185546875002],[119.909375,-8.857617187500011],[119.80791015625002,-8.697656250000023],[119.87480468750007,-8.419824218749994],[120.61025390625005,-8.24042968750004],[121.44453125000004,-8.57783203125004],[121.96650390625004,-8.455175781250006],[122.32324218749997,-8.628320312500023],[122.85048828125,-8.304394531250011],[122.91914062500004,-8.221875],[122.75859375000002,-8.185937499999952],[122.91699218749997,-8.105566406250006],[123.00595703125006,-8.329101562499986],[122.7829101562501,-8.61171875]]],[[[130.86220703125,-8.31875],[130.77519531250002,-8.34990234374996],[131.02011718750012,-8.091308593749943],[131.17636718750006,-8.130761718749994],[130.86220703125,-8.31875]]],[[[118.24238281250004,-8.317773437499994],[118.61191406250006,-8.28066406249998],[118.71386718749997,-8.41494140624998],[118.926171875,-8.297656249999974],[119.12968750000002,-8.668164062499969],[118.74589843750002,-8.735449218749991],[118.83261718750012,-8.833398437499966],[118.47861328125012,-8.856445312499957],[118.37890625000003,-8.674609375000031],[118.18994140624997,-8.840527343749997],[117.06132812500002,-9.099023437499994],[116.78847656250005,-9.006347656250028],[116.83505859375012,-8.532421875000026],[117.16484375000007,-8.367187500000014],[117.56708984375004,-8.426367187499991],[117.80605468750005,-8.711132812500011],[117.96953125000002,-8.728027343749986],[118.23486328124997,-8.591894531249963],[117.81484375000005,-8.342089843749974],[117.7552734375,-8.149511718749991],[118.11748046875007,-8.12226562500004],[118.24238281250004,-8.317773437499994]]],[[[115.44785156250012,-8.155175781249994],[115.70429687500004,-8.40712890624998],[115.14492187500005,-8.849023437500037],[115.05507812500005,-8.573046874999946],[114.61318359375,-8.37832031249998],[114.46757812500007,-8.166308593749946],[114.93847656249997,-8.18710937500002],[115.15400390625004,-8.065722656249974],[115.44785156250012,-8.155175781249994]]],[[[129.83886718749997,-7.954589843749986],[129.71347656250012,-8.04072265625004],[129.60898437500006,-7.803417968750011],[129.81298828124997,-7.819726562499952],[129.83886718749997,-7.954589843749986]]],[[[126.80097656250004,-7.667871093750009],[126.4720703125,-7.950390625000011],[126.04003906250003,-7.885839843750006],[125.79824218750005,-7.984570312499969],[125.97529296875004,-7.663378906249989],[126.21367187500002,-7.706738281250026],[126.60957031250004,-7.571777343749972],[126.80097656250004,-7.667871093750009]]],[[[127.41943359375003,-7.623046875000028],[127.37070312500012,-7.512792968749949],[127.47519531250012,-7.531054687500031],[127.41943359375003,-7.623046875000028]]],[[[138.53535156250004,-8.273632812499969],[138.2962890625,-8.405175781250037],[137.65039062499997,-8.386132812499966],[138.08183593750002,-7.566210937500003],[138.29550781250012,-7.4384765625],[138.76982421875002,-7.390429687499974],[138.98906250000002,-7.696093749999989],[138.53535156250004,-8.273632812499969]]],[[[131.3255859375,-7.999511718749986],[131.11376953125003,-7.997363281249989],[131.13779296875012,-7.684863281250017],[131.64345703125,-7.11279296875],[131.73613281250007,-7.197070312500017],[131.64384765625002,-7.266894531249946],[131.62441406250005,-7.626171874999955],[131.3255859375,-7.999511718749986]]],[[[131.98203125000006,-7.202050781249966],[131.75078125000002,-7.116796875],[131.92226562500005,-7.104492187499986],[131.98203125000006,-7.202050781249966]]],[[[128.6701171875001,-7.183300781249969],[128.52978515625003,-7.134570312499989],[128.62773437500007,-7.06875],[128.6701171875001,-7.183300781249969]]],[[[120.77441406250003,-7.118945312500003],[120.64082031250004,-7.115820312499991],[120.63339843750006,-7.018261718750011],[120.77441406250003,-7.118945312500003]]],[[[113.84453125000007,-7.105371093749994],[113.12695312499997,-7.224121093750028],[112.72587890625007,-7.072753906250014],[112.86806640625,-6.899902343749972],[113.06738281250003,-6.879980468749991],[113.97470703125012,-6.873046875],[114.0736328125,-6.960156249999983],[113.84453125000007,-7.105371093749994]]],[[[115.37705078125006,-6.97080078125002],[115.22031250000012,-6.952539062500037],[115.24052734375007,-6.861230468749994],[115.54609375000004,-6.938671874999955],[115.37705078125006,-6.97080078125002]]],[[[105.25283203125005,-6.640429687499946],[105.12138671875007,-6.614941406249997],[105.26054687500002,-6.523925781250014],[105.25283203125005,-6.640429687499946]]],[[[134.53681640625004,-6.442285156249994],[134.32275390624997,-6.84873046875002],[134.09082031249997,-6.833789062500003],[134.10703125000006,-6.471582031250009],[134.19462890625007,-6.459765625],[134.11464843750005,-6.190820312500009],[134.53681640625004,-6.442285156249994]]],[[[107.37392578125005,-6.007617187499989],[107.66679687500002,-6.215820312499957],[108.33017578125012,-6.286035156249966],[108.67783203125006,-6.790527343749972],[110.42626953124997,-6.947265625000028],[110.83476562500002,-6.424218749999952],[110.97226562500012,-6.435644531249977],[111.18154296875005,-6.686718749999969],[111.54033203125002,-6.648242187500031],[112.0873046875,-6.89335937499996],[112.53925781250004,-6.926464843749955],[112.64873046875007,-7.221289062499977],[112.7943359375,-7.304492187499974],[112.79453125000012,-7.55244140625004],[113.01357421875005,-7.657714843749986],[113.49765625000006,-7.723828124999955],[114.07070312500005,-7.633007812500011],[114.40927734375012,-7.79248046875],[114.38691406250004,-8.405175781250037],[114.58378906250002,-8.769628906250034],[113.25332031250005,-8.286718749999963],[112.67880859375006,-8.409179687499957],[111.50996093750004,-8.30507812499998],[110.60722656250002,-8.149414062499972],[109.28164062500005,-7.704882812500003],[108.74121093749997,-7.667089843750034],[108.45175781250006,-7.79697265625002],[107.91748046875003,-7.724121093750014],[107.28496093750007,-7.471679687500014],[106.45527343750004,-7.368652343749986],[106.51972656250004,-7.053710937499943],[106.19824218749997,-6.927832031249977],[105.25546875000012,-6.835253906250031],[105.37089843750002,-6.664355468750031],[105.48369140625007,-6.781542968750017],[105.65507812500002,-6.469531249999946],[105.78691406250002,-6.456933593749966],[105.86826171875006,-6.11640625000004],[106.075,-5.914160156249963],[106.82519531249997,-6.098242187499977],[107.0462890625,-5.90419921874998],[107.37392578125005,-6.007617187499989]]],[[[120.52832031249997,-6.2984375],[120.48730468749997,-6.464843749999972],[120.47734375000007,-5.775292968750009],[120.52832031249997,-6.2984375]]],[[[112.7194335937501,-5.81103515625],[112.58603515625006,-5.803613281249994],[112.69003906250006,-5.726171875000034],[112.7194335937501,-5.81103515625]]],[[[132.80712890625003,-5.850781250000011],[132.68144531250002,-5.91259765625],[132.63017578125002,-5.60703125],[132.80712890625003,-5.850781250000011]]],[[[134.74697265625,-5.707031249999957],[134.71416015625007,-6.29511718750004],[134.44111328125004,-6.334863281249966],[134.15488281250006,-6.06289062499998],[134.3019531250001,-6.009765624999986],[134.34306640625002,-5.833007812499943],[134.20537109375002,-5.707226562499997],[134.34130859375003,-5.712890624999986],[134.57080078124997,-5.42734375],[134.74697265625,-5.707031249999957]]],[[[132.92626953124997,-5.902050781249983],[132.84501953125002,-5.987988281249997],[133.13847656250002,-5.317871093749986],[133.11962890625003,-5.575976562499989],[132.92626953124997,-5.902050781249983]]],[[[102.36718750000003,-5.478710937499983],[102.1107421875,-5.32255859374996],[102.3717773437501,-5.366406250000011],[102.36718750000003,-5.478710937499983]]],[[[123.62675781250007,-5.271582031249963],[123.58261718750006,-5.36738281250004],[123.54277343750002,-5.271093749999963],[123.62675781250007,-5.271582031249963]]],[[[122.04296874999997,-5.437988281250028],[121.80849609375,-5.256152343750017],[121.91367187500012,-5.072265624999957],[122.04101562500003,-5.158789062499991],[122.04296874999997,-5.437988281250028]]],[[[122.64511718750012,-5.26943359374998],[122.5638671875,-5.3875],[122.28310546875,-5.319531249999969],[122.39628906250002,-5.069824218749986],[122.36894531250007,-4.767187499999977],[122.70195312500002,-4.61865234375],[122.75986328125012,-4.933886718750003],[122.61406250000007,-5.138671874999986],[122.64511718750012,-5.26943359374998]]],[[[123.17978515625006,-4.551171875000023],[123.195703125,-4.82265625],[123.05517578124997,-4.748242187500026],[122.97167968750003,-5.138476562500031],[123.18730468750007,-5.333007812499957],[122.96875,-5.405761718749943],[122.81210937500012,-5.671289062499952],[122.64501953124997,-5.663378906250031],[122.58642578124997,-5.488867187500006],[122.76650390625005,-5.210156249999983],[122.85332031250007,-4.618359375000026],[123.074609375,-4.38691406250004],[123.17978515625006,-4.551171875000023]]],[[[133.57080078124997,-4.245898437500003],[133.621875,-4.299316406249957],[133.32089843750006,-4.111035156249969],[133.57080078124997,-4.245898437500003]]],[[[123.2423828125001,-4.112988281250011],[123.07617187499997,-4.227148437499991],[122.96904296875002,-4.029980468749969],[123.21191406250003,-3.997558593750028],[123.2423828125001,-4.112988281250011]]],[[[128.56259765625012,-3.58544921875],[128.39160156250003,-3.637890625000026],[128.45156250000005,-3.514746093749991],[128.56259765625012,-3.58544921875]]],[[[128.2755859375001,-3.67460937499996],[127.97802734374997,-3.770996093749972],[127.925,-3.69931640625002],[128.32910156249997,-3.51591796874996],[128.2755859375001,-3.67460937499996]]],[[[116.42412109375007,-3.464453124999963],[116.38779296875012,-3.636718749999972],[116.3265625,-3.539062499999972],[116.42412109375007,-3.464453124999963]]],[[[116.30332031250006,-3.868164062499957],[116.05878906250004,-4.006933593749991],[116.06357421875006,-3.457910156249952],[116.26972656250004,-3.251074218750006],[116.30332031250006,-3.868164062499957]]],[[[126.86113281250007,-3.087890624999986],[127.22734375000007,-3.391015625],[127.22958984375006,-3.633007812500011],[126.68632812500007,-3.823632812500037],[126.21455078125004,-3.605175781250026],[126.05654296875,-3.420996093749991],[126.08828125,-3.105468750000014],[126.86113281250007,-3.087890624999986]]],[[[106.88642578125004,-3.005273437500023],[106.7428710937501,-2.932812500000011],[106.91064453124997,-2.93398437499998],[106.88642578125004,-3.005273437500023]]],[[[129.75468750000007,-2.865820312500034],[130.3791015625001,-2.989355468749977],[130.56992187500006,-3.130859375000028],[130.85996093750006,-3.570312500000028],[130.805078125,-3.85771484374996],[129.844140625,-3.327148437499957],[129.51171875000003,-3.32851562499998],[129.46767578125005,-3.453222656249977],[128.8625,-3.234960937500006],[128.51660156249997,-3.449121093750037],[128.13203125000004,-3.157421875000026],[127.90234374999997,-3.496289062499955],[127.87792968749997,-3.222070312499966],[128.19853515625002,-2.865917968749969],[128.99111328125,-2.82851562499998],[129.17441406250006,-2.933496093749966],[129.48417968750002,-2.785742187499977],[129.75468750000007,-2.865820312500034]]],[[[100.42509765625007,-3.182910156249974],[100.46513671875007,-3.32851562499998],[100.20429687500004,-2.98681640625],[100.19853515625002,-2.785546875000023],[100.45458984375003,-3.001953124999972],[100.42509765625007,-3.182910156249974]]],[[[108.2072265625001,-2.997656249999977],[108.05527343750006,-3.22685546874996],[107.85820312500002,-3.086328125000023],[107.61445312500004,-3.209375],[107.56347656250003,-2.920117187499997],[107.66630859375002,-2.566308593750037],[107.83779296875005,-2.530273437499972],[108.21513671875002,-2.696972656250011],[108.29062500000012,-2.829980468750023],[108.2072265625001,-2.997656249999977]]],[[[100.20410156249997,-2.741015625000017],[100.01494140625007,-2.819726562499966],[99.98789062500006,-2.525390624999957],[100.20410156249997,-2.741015625000017]]],[[[99.84306640625007,-2.343066406250031],[99.60703125000012,-2.257519531250011],[99.57216796875005,-2.025781249999966],[99.84306640625007,-2.343066406250031]]],[[[126.055078125,-2.451269531249963],[125.86289062500006,-2.077148437499943],[125.92275390625,-1.974804687499969],[126.055078125,-2.451269531249963]]],[[[126.02421875000007,-1.789746093750011],[126.33173828125004,-1.822851562500006],[125.47919921875004,-1.940039062499991],[125.38720703124997,-1.843066406249946],[126.02421875000007,-1.789746093750011]]],[[[130.35332031250007,-1.690527343749963],[130.41884765625,-1.971289062499963],[130.24804687500003,-2.047753906249994],[129.7376953125,-1.866894531250011],[130.35332031250007,-1.690527343749963]]],[[[124.96953125000007,-1.70546875],[125.18789062500005,-1.712890624999986],[125.31406250000006,-1.877148437499969],[124.41777343750002,-2.005175781250031],[124.32968750000012,-1.858886718749972],[124.41757812500006,-1.659277343749991],[124.96953125000007,-1.70546875]]],[[[135.47421875000006,-1.591796875000014],[136.89257812500003,-1.799707031249994],[136.22812500000012,-1.893652343749949],[135.47421875000006,-1.591796875000014]]],[[[108.953125,-1.61962890625],[108.83789062499997,-1.661621093750028],[108.80371093750003,-1.567773437499994],[108.953125,-1.61962890625]]],[[[106.04570312500002,-1.669433593750014],[106.36591796875004,-2.464843749999972],[106.81845703125006,-2.573339843749963],[106.6120117187501,-2.895507812499957],[106.66718750000004,-3.071777343749986],[105.99873046875004,-2.824902343749955],[105.7858398437501,-2.18134765625004],[105.13339843750012,-2.042578125],[105.45957031250006,-1.574707031249986],[105.58544921875003,-1.526757812499994],[105.7008789062501,-1.731054687499963],[105.7204101562501,-1.533886718750026],[105.91005859375,-1.504980468749991],[106.04570312500002,-1.669433593750014]]],[[[123.59755859375,-1.704296875000011],[123.48251953125006,-1.681445312499974],[123.52851562500004,-1.502832031250009],[123.59755859375,-1.704296875000011]]],[[[128.1530273437501,-1.66054687499998],[127.56162109375012,-1.728515624999972],[127.39501953125003,-1.589843749999972],[127.64667968750004,-1.332421875],[128.1530273437501,-1.66054687499998]]],[[[123.2123046875,-1.171289062499966],[123.23779296874997,-1.389355468749983],[123.43476562500004,-1.236816406249986],[123.54726562500005,-1.337402343749957],[123.51191406250004,-1.447363281249977],[123.27490234374997,-1.437207031249955],[123.17294921875006,-1.616015624999974],[123.15039062500003,-1.304492187500003],[122.89042968750007,-1.58720703124996],[122.81083984375002,-1.432128906249986],[122.90800781250002,-1.182226562499963],[123.2123046875,-1.171289062499966]]],[[[109.71025390625007,-1.1806640625],[109.46367187500002,-1.277539062500026],[109.4759765625,-0.9853515625],[109.74335937500004,-1.039355468749989],[109.71025390625007,-1.1806640625]]],[[[134.96533203124997,-1.116015624999974],[134.86171875,-1.114160156249952],[134.82792968750002,-0.978808593750003],[134.99628906250004,-1.03408203124998],[134.96533203124997,-1.116015624999974]]],[[[99.16386718750007,-1.777929687500006],[98.82773437500006,-1.609960937499977],[98.60175781250004,-1.197851562499949],[98.67607421875007,-0.970507812500003],[98.93261718750003,-0.954003906250009],[99.2672851562501,-1.62773437499996],[99.16386718750007,-1.777929687500006]]],[[[131.00185546875005,-1.315527343750034],[130.78232421875006,-1.255468749999963],[130.67294921875006,-0.959765625000031],[131.03300781250007,-0.917578124999963],[131.00185546875005,-1.315527343750034]]],[[[135.38300781250004,-0.6513671875],[135.89355468749997,-0.725781249999969],[136.37529296875007,-1.094042968750031],[136.1647460937501,-1.214746093750023],[135.91503906250003,-1.178417968749997],[135.74707031249997,-0.823046874999974],[135.64570312500004,-0.881933593749991],[135.38300781250004,-0.6513671875]]],[[[127.30039062500012,-0.780957031250026],[127.1564453125001,-0.760937500000026],[127.20908203125006,-0.619335937499955],[127.30039062500012,-0.780957031250026]]],[[[130.6266601562501,-0.528710937499966],[130.46542968750006,-0.486523437499983],[130.6159179687501,-0.417285156250003],[130.6266601562501,-0.528710937499966]]],[[[121.86435546875012,-0.406835937500006],[121.88125,-0.502636718749983],[121.65527343749997,-0.526171874999989],[121.86435546875012,-0.406835937500006]]],[[[140.97343750000007,-2.609765625],[140.97353515625,-2.803417968750026],[140.975,-6.346093750000023],[140.86230468749997,-6.740039062499989],[140.97519531250006,-6.90537109375002],[140.97617187500012,-9.11875],[140.00292968749997,-8.19550781250004],[140.11699218750002,-7.923730468750009],[139.93476562500004,-8.101171875],[139.38564453125,-8.189062499999963],[139.24882812500002,-7.982421874999972],[138.890625,-8.237792968749943],[139.08798828125012,-7.587207031250017],[138.74794921875,-7.25146484375],[139.17685546875006,-7.1904296875],[138.84570312500003,-7.13632812499999],[138.60136718750007,-6.936523437499972],[138.86455078125007,-6.858398437499943],[138.43867187500004,-6.343359375],[138.2962890625,-5.94902343749996],[138.37460937500006,-5.84365234374998],[138.19960937500005,-5.80703125],[138.33964843750007,-5.675683593749966],[138.08710937500004,-5.70917968750004],[138.06083984375002,-5.46523437499998],[137.27978515624997,-4.945410156249949],[136.61884765625004,-4.81875],[135.97968750000004,-4.530859374999963],[135.19560546875007,-4.450683593749972],[134.67968749999997,-4.079101562499943],[134.70654296875003,-3.954785156250026],[134.88652343750007,-3.938476562499986],[134.26621093750012,-3.945800781249972],[134.14707031250006,-3.79677734374998],[133.97382812500004,-3.817968750000034],[133.67832031250006,-3.4794921875],[133.8415039062501,-3.054785156249991],[133.70039062500004,-3.0875],[133.653125,-3.364355468749991],[133.51816406250012,-3.411914062500003],[133.40087890625003,-3.899023437500034],[133.24873046875004,-4.062304687499989],[132.91445312500005,-4.05693359374996],[132.75390625000003,-3.703613281250014],[132.86972656250006,-3.550976562499997],[132.75136718750005,-3.294628906249997],[131.97119140624997,-2.788574218750014],[132.2306640625001,-2.680371093749997],[132.725,-2.789062500000028],[133.19101562500006,-2.43779296874996],[133.70009765625005,-2.624609375],[133.75332031250005,-2.450683593750014],[133.90488281250012,-2.390917968750003],[133.79101562500003,-2.293652343749997],[133.92158203125004,-2.102050781249957],[132.96279296875005,-2.272558593749963],[132.30761718749997,-2.24228515625002],[132.02343749999997,-1.99033203125002],[131.93037109375004,-1.559667968750034],[131.29375,-1.393457031250009],[130.99589843750007,-1.42470703124998],[131.1908203125,-1.165820312500003],[131.2572265625,-0.855468750000014],[131.80429687500006,-0.703808593750026],[132.39375,-0.355468750000028],[132.85644531250003,-0.417382812500023],[133.47265624999997,-0.726171874999963],[133.97451171875,-0.744335937500026],[134.11152343750004,-0.84677734375002],[134.07197265625004,-1.001855468749994],[134.25957031250007,-1.362988281250026],[134.105859375,-1.720996093749946],[134.19482421875003,-2.309082031249943],[134.45996093749997,-2.83232421874996],[134.48330078125,-2.583007812499972],[134.62744140624997,-2.536718749999963],[134.70214843749997,-2.933593749999986],[134.84335937500006,-2.909179687499986],[134.88681640625006,-3.209863281249966],[135.25156250000012,-3.368554687499966],[135.48662109375002,-3.34511718749998],[135.85917968750002,-2.99531250000004],[136.38994140625002,-2.273339843750037],[137.07207031250002,-2.105078124999949],[137.1710937500001,-2.025488281249991],[137.1234375,-1.840917968749963],[137.80625000000012,-1.483203125],[139.78955078125003,-2.34824218750002],[140.62255859374997,-2.44580078125],[140.74746093750005,-2.607128906249997],[140.97343750000007,-2.609765625]]],[[[104.47421875000012,-0.334667968749955],[104.59013671875002,-0.466601562500017],[104.36318359375,-0.658593749999966],[104.25712890625002,-0.463281249999966],[104.47421875000012,-0.334667968749955]]],[[[127.56699218750006,-0.318945312499949],[127.68242187500002,-0.46835937500002],[127.60498046874997,-0.610156249999946],[127.88017578125002,-0.808691406249991],[127.7611328125,-0.883691406249994],[127.62382812500002,-0.76601562499999],[127.46269531250002,-0.80595703124996],[127.46865234375,-0.64296875],[127.3,-0.500292968749946],[127.32509765625,-0.335839843750023],[127.45517578125012,-0.406347656249991],[127.56699218750006,-0.318945312499949]]],[[[127.24990234375005,-0.4953125],[127.11914062500003,-0.520507812499986],[127.12646484375003,-0.278613281250003],[127.29003906250003,-0.284375],[127.24990234375005,-0.4953125]]],[[[103.73652343750004,-0.347949218750003],[103.461328125,-0.357617187500011],[103.54892578125006,-0.227539062499986],[103.73652343750004,-0.347949218750003]]],[[[130.81328125000007,-0.004101562500026],[131.27685546875003,-0.149804687499952],[131.33974609375005,-0.290332031249989],[131.00537109374997,-0.360742187500037],[130.62216796875006,-0.0859375],[130.89921875000002,-0.344433593749997],[130.7501953125001,-0.44384765625],[130.6886718750001,-0.296582031250011],[130.55078124999997,-0.366406250000026],[130.23662109375002,-0.209667968749983],[130.3625,-0.072851562500006],[130.81328125000007,-0.004101562500026]]],[[[98.45927734375007,-0.530468749999969],[98.30966796875012,-0.531835937499977],[98.4271484375,-0.226464843750037],[98.3229492187501,-0.000781249999974],[98.54414062500004,-0.257617187499989],[98.45927734375007,-0.530468749999969]]],[[[104.77861328125007,-0.175976562499955],[105.00537109374997,-0.282812499999963],[104.44707031250002,-0.189160156249983],[104.54267578125004,0.01772460937498],[104.77861328125007,-0.175976562499955]]],[[[103.28447265625002,0.541943359375011],[103.13955078125,0.549072265625043],[103.18740234375,0.699755859375017],[103.28447265625002,0.541943359375011]]],[[[103.0275390625001,0.746630859374974],[102.4904296875001,0.856640625],[102.50664062500002,1.088769531250037],[103.00244140624997,0.859277343750009],[103.0275390625001,0.746630859374974]]],[[[103.42392578125012,1.048339843749972],[103.31542968750003,1.071289062500028],[103.37998046875006,1.133642578125034],[103.42392578125012,1.048339843749972]]],[[[103.16640625000005,0.870166015625003],[102.7018554687501,1.0537109375],[102.72558593749997,1.158837890625023],[102.99941406250005,1.067773437500023],[103.16640625000005,0.870166015625003]]],[[[104.02480468750005,1.180566406250009],[104.13984375000004,1.165576171874974],[104.06611328125004,0.989550781249989],[103.93222656250012,1.071386718749963],[104.02480468750005,1.180566406250009]]],[[[104.58535156250005,1.21611328124996],[104.66289062500002,1.04951171875004],[104.57519531250003,0.831933593750037],[104.43925781250002,1.050439453125051],[104.25195312499997,1.014892578125],[104.36181640624997,1.18149414062502],[104.58535156250005,1.21611328124996]]],[[[102.4271484375,0.990136718750023],[102.27958984375002,1.075683593750043],[102.25634765625003,1.397070312499963],[102.44287109374997,1.234228515625006],[102.4271484375,0.990136718750023]]],[[[97.48154296875006,1.465087890624972],[97.93193359375002,0.973925781250003],[97.82041015625012,0.564453124999986],[97.683984375,0.596093750000037],[97.60390625000005,0.83388671874998],[97.40537109375012,0.946972656250026],[97.07919921875006,1.425488281249983],[97.35595703124997,1.539746093749997],[97.48154296875006,1.465087890624972]]],[[[102.49189453125004,1.459179687500011],[102.49941406250005,1.330908203124991],[102.02402343750012,1.607958984375031],[102.49189453125004,1.459179687500011]]],[[[124.88886718750004,0.995312500000011],[124.42753906250002,0.470605468750051],[123.75380859375,0.305517578124991],[123.26542968750007,0.326611328125026],[122.996875,0.493505859375006],[121.01298828125002,0.441699218750017],[120.57900390625,0.5283203125],[120.19228515625,0.268505859374997],[120.01328125000012,-0.196191406249994],[120.062890625,-0.555566406250023],[120.240625,-0.868261718749949],[120.51757812499997,-1.039453125],[120.66738281250005,-1.370117187499972],[121.14853515625012,-1.33945312500002],[121.5755859375,-0.828515625000023],[121.96962890625005,-0.933300781249969],[122.27998046875004,-0.757031250000026],[122.88876953125006,-0.755175781250003],[122.8294921875,-0.658886718750026],[123.17148437500012,-0.57070312499999],[123.37968750000002,-0.648535156249949],[123.43417968750006,-0.778222656249994],[123.37792968749997,-1.004101562500011],[122.90283203125003,-0.900976562499963],[122.25068359375004,-1.555273437500034],[121.8585937500001,-1.69326171874998],[121.65097656250006,-1.895410156249952],[121.35546874999997,-1.878222656250003],[122.29169921875004,-2.907617187500023],[122.39902343750006,-3.200878906249997],[122.25292968749997,-3.620410156250017],[122.68964843750004,-4.084472656249972],[122.84794921875002,-4.064550781250006],[122.8722656250001,-4.391992187500009],[122.71972656250003,-4.340722656249952],[122.11425781250003,-4.540234375000011],[122.03808593749997,-4.832421875000023],[121.58867187500007,-4.759570312500017],[121.48652343750004,-4.581054687499972],[121.61806640625,-4.092675781249952],[120.89179687500004,-3.520605468750034],[121.05429687500012,-3.167089843749949],[121.0521484375,-2.751660156249955],[120.87939453124997,-2.64560546875002],[120.65361328125002,-2.667578124999977],[120.26103515625007,-2.949316406249991],[120.43662109375012,-3.70732421874996],[120.42011718750004,-4.617382812500011],[120.27929687499997,-5.146093749999977],[120.4303710937501,-5.591015625000026],[119.9515625,-5.577636718749972],[119.71728515625003,-5.693359375000014],[119.55742187500007,-5.611035156250026],[119.36035156249997,-5.314160156250026],[119.59404296875007,-4.523144531249997],[119.62363281250006,-4.034375],[119.46748046875004,-3.512988281249989],[118.99462890624997,-3.537597656250028],[118.86767578124997,-3.39804687500002],[118.78330078125006,-2.720800781249977],[119.09218750000005,-2.482910156250014],[119.32187500000012,-1.929687500000014],[119.308984375,-1.408203125],[119.508203125,-0.906738281249972],[119.71132812500005,-0.680761718750034],[119.84433593750006,-0.861914062499991],[119.721875,-0.088476562499991],[119.865625,0.040087890625003],[119.80927734375004,0.238671875000051],[119.9132812500001,0.445068359375],[120.26953125000003,0.970800781249991],[120.60253906249997,0.854394531249994],[120.86796875000007,1.25283203124998],[121.0817382812501,1.327636718750028],[121.40410156250002,1.243603515624969],[121.59179687499997,1.067968749999977],[122.43662109375006,1.018066406250028],[122.83828125,0.845703125],[123.06650390625006,0.941796875000037],[123.93076171875006,0.850439453124977],[124.53369140624997,1.230468750000043],[124.94707031250002,1.672167968749974],[125.11093750000012,1.685693359374966],[125.2337890625,1.502294921875006],[124.88886718750004,0.995312500000011]]],[[[101.70810546875006,2.078417968750045],[101.71943359375004,1.789160156250006],[101.50078125000002,1.733203124999974],[101.40966796875003,2.021679687500026],[101.70810546875006,2.078417968750045]]],[[[127.73271484375007,0.848144531250043],[127.8810546875001,0.832128906249977],[127.96728515624997,1.042578125000048],[128.16074218750006,1.1578125],[128.22246093750002,1.400634765624986],[128.68837890625,1.572558593750017],[128.70263671874997,1.106396484374997],[128.29882812500003,0.87680664062502],[128.26064453125,0.733789062500023],[128.61123046875,0.549951171875051],[128.89960937500004,0.216259765625011],[127.9831054687501,0.471875],[127.88740234375004,0.298339843750043],[127.97783203125002,-0.24833984374996],[128.4254882812501,-0.892675781249949],[128.04638671875003,-0.706054687499943],[127.69160156250004,-0.241894531249983],[127.70869140625004,0.288085937499986],[127.53710937500003,0.610888671875031],[127.60800781250006,0.848242187499977],[127.42851562500002,1.139990234374991],[127.63173828125,1.843701171875011],[128.03642578125002,2.199023437500017],[127.88681640625012,1.83295898437504],[128.0109375000001,1.701220703125031],[128.01171874999997,1.331738281249983],[127.65283203124997,1.013867187499969],[127.73271484375007,0.848144531250043]]],[[[97.3341796875001,2.075634765625011],[97.10830078125,2.216894531250006],[97.29140625,2.200830078125023],[97.3341796875001,2.075634765625011]]],[[[128.45390625000002,2.051757812500028],[128.29589843749997,2.034716796875017],[128.2179687500001,2.297460937499991],[128.60214843750012,2.59760742187504],[128.68847656250003,2.473681640625017],[128.62324218750004,2.224414062500031],[128.45390625000002,2.051757812500028]]],[[[96.46367187500002,2.360009765625037],[95.80859374999997,2.655615234375034],[95.7171875,2.825976562500017],[95.89580078125007,2.8890625],[96.41728515625007,2.515185546875031],[96.46367187500002,2.360009765625037]]],[[[108.8875,2.905419921875037],[108.7865234375,2.885644531250009],[108.88574218750003,2.998974609374997],[108.8875,2.905419921875037]]],[[[105.76035156250006,2.863037109375014],[105.69218750000002,3.0625],[105.83671875000007,2.97651367187504],[105.76035156250006,2.863037109375014]]],[[[106.28525390625006,3.15712890624998],[106.28369140624997,3.088232421874977],[106.20097656250002,3.204882812500031],[106.28525390625006,3.15712890624998]]],[[[117.65839843750004,3.280517578124986],[117.54785156250003,3.43198242187502],[117.68085937500004,3.407519531250017],[117.65839843750004,3.280517578124986]]],[[[125.65810546875,3.436035156250043],[125.51152343750007,3.461132812500011],[125.46884765625006,3.73325195312502],[125.65810546875,3.436035156250043]]],[[[117.88476562499997,4.186132812500006],[117.92285156250003,4.054296874999977],[117.73681640624997,4.004003906250034],[117.64902343750012,4.168994140624974],[117.88476562499997,4.186132812500006]]],[[[108.31601562500006,3.689648437500026],[108.10039062500002,3.70454101562504],[108.24326171875006,3.810351562500017],[108.00234375,3.982861328124983],[108.24833984375002,4.21713867187502],[108.39287109375007,3.986181640625034],[108.31601562500006,3.689648437500026]]],[[[117.5744140625001,4.17060546875004],[117.46533203124997,4.076074218749966],[117.77724609375005,3.689257812500031],[117.05595703125007,3.622656249999963],[117.34628906250006,3.426611328124991],[117.35244140625,3.19375],[117.61064453125002,3.064355468749994],[117.56914062500002,2.92929687500002],[117.69765625,2.887304687499991],[117.6388671875001,2.825292968749963],[118.0666015625001,2.317822265624969],[117.7892578125001,2.026855468750014],[118.98496093750006,0.982128906249983],[118.53476562500006,0.813525390625017],[118.19609375000002,0.874365234374977],[117.91162109374997,1.098681640625017],[117.96425781250005,0.889550781250051],[117.74511718749997,0.72963867187498],[117.52216796875004,0.235888671875017],[117.46289062500003,-0.323730468749957],[117.5625,-0.770898437500009],[116.91396484375,-1.223632812499972],[116.73984375000006,-1.044238281250017],[116.75341796874997,-1.327343749999955],[116.27548828125006,-1.784863281249997],[116.42431640625003,-1.784863281249997],[116.45195312500002,-1.923144531250017],[116.31396484374997,-2.139843750000011],[116.56542968749997,-2.299707031249994],[116.52929687499997,-2.51054687499996],[116.31679687500005,-2.55185546875002],[116.33066406250012,-2.902148437499974],[116.16630859375002,-2.934570312500014],[116.2572265625,-3.126367187500009],[115.95615234375012,-3.595019531250003],[114.6935546875001,-4.169726562500017],[114.5255859375001,-3.376660156250011],[114.44599609375004,-3.481835937500037],[114.34433593750012,-3.444433593749963],[114.34433593750012,-3.23515625],[114.23632812500003,-3.36113281249996],[114.0822265625001,-3.27890625],[113.70507812499997,-3.45527343750004],[113.6100585937501,-3.195703125],[113.34316406250005,-3.246484374999966],[113.03398437500002,-2.933496093749966],[112.97148437500002,-3.187109375000034],[112.75800781250004,-3.322167968750009],[112.60029296875004,-3.400488281249977],[112.28496093750002,-3.32099609375004],[111.85810546875004,-3.551855468750006],[111.82304687500007,-3.057226562499949],[111.69472656250005,-2.88945312499996],[110.93007812500005,-3.071093750000017],[110.82968750000012,-2.9951171875],[110.89931640625,-2.908593749999952],[110.703125,-3.020898437500009],[110.57402343750007,-2.89140625],[110.25605468750004,-2.966113281249946],[110.09658203125,-2.001367187499966],[109.95986328125,-1.862792968749972],[109.98330078125,-1.274804687499994],[109.78740234375007,-1.011328124999963],[109.25878906250003,-0.807421874999989],[109.37275390625004,-0.638183593749972],[109.12109375000003,-0.39091796874996],[109.2575195312501,0.031152343750051],[108.94453125000004,0.355664062499997],[108.91679687500007,0.912646484375045],[108.95859375000006,1.134619140624963],[109.1315429687501,1.253857421875011],[109.01025390624997,1.239648437500051],[109.07587890625004,1.495898437500031],[109.37851562500006,1.922705078125034],[109.62890625000003,2.027539062499983],[109.53896484375,1.89619140625004],[109.65400390625004,1.614892578125023],[110.50576171875005,0.861962890625023],[111.10136718750002,1.050537109374986],[111.80898437500005,1.011669921874969],[112.078515625,1.143359374999974],[112.1857421875001,1.4390625],[112.47617187500006,1.559082031250028],[112.94296875000006,1.566992187500034],[113.00654296875004,1.433886718750003],[113.6222656250001,1.2359375],[113.90234375000003,1.434277343749997],[114.5125,1.452001953124963],[114.83056640625003,1.980029296874989],[114.78642578125002,2.250488281250014],[115.1791015625,2.523193359374972],[115.08076171875004,2.63422851562504],[115.117578125,2.89487304687502],[115.24697265625005,3.025927734374989],[115.45439453125002,3.034326171875009],[115.67880859375006,4.193017578124994],[115.86074218750005,4.348046875000037],[116.51474609375006,4.370800781249969],[117.10058593750003,4.337060546875023],[117.5744140625001,4.17060546875004]]],[[[126.81660156250004,4.033496093750003],[126.70449218750005,4.070996093749997],[126.81357421875006,4.258496093750011],[126.72207031250005,4.344189453124969],[126.75732421874997,4.547900390624989],[126.9210937500001,4.291015624999972],[126.81660156250004,4.033496093750003]]],[[[96.49257812500005,5.229345703124991],[97.54716796875002,5.205859375],[98.2484375,4.41455078125],[98.3073242187501,4.09287109375002],[99.73232421875005,3.183056640625026],[100.523828125,2.18916015625004],[100.88789062500004,1.948242187499986],[100.82822265625012,2.242578125],[101.04619140625002,2.257470703125023],[101.47666015625006,1.693066406250054],[102.019921875,1.442138671875],[102.38994140625007,0.84199218750004],[103.03183593750006,0.57890625],[103.0075195312501,0.415332031249974],[102.55,0.216455078124966],[103.33896484375012,0.513720703125045],[103.67265625000007,0.288916015624977],[103.78671875000012,0.046972656249991],[103.42851562500007,-0.19179687499998],[103.40517578125005,-0.36220703124998],[103.5091796875,-0.465527343749969],[103.43857421875006,-0.575585937500009],[103.72109375,-0.886718749999986],[104.36054687500004,-1.038378906249974],[104.51591796875002,-1.81943359375002],[104.84521484375003,-2.092968749999969],[104.65078125000005,-2.595214843749972],[104.97080078125012,-2.370898437500017],[105.39697265624997,-2.380175781249946],[106.0443359375,-3.10625],[105.84375,-3.61367187499998],[105.93046875000007,-3.833007812499986],[105.83144531250005,-4.16289062499996],[105.88720703124997,-5.009570312499974],[105.74833984375007,-5.818261718749966],[105.34941406250007,-5.549511718750011],[105.08134765625002,-5.74550781249998],[104.63955078125005,-5.520410156250037],[104.68398437500005,-5.89267578125002],[104.60156249999997,-5.90458984374996],[103.8314453125,-5.079589843750028],[102.53769531250006,-4.152148437499989],[102.12753906250006,-3.599218749999963],[101.57861328124997,-3.166992187500014],[100.88955078125,-2.248535156249957],[100.85527343750002,-1.934179687499949],[100.30820312500006,-0.82666015625],[99.66982421875005,0.045068359375037],[99.15917968749997,0.351757812499997],[98.59531250000006,1.864599609375006],[97.70078125000006,2.358544921875009],[97.59082031249997,2.846582031250037],[97.3913085937501,2.975292968749969],[96.9689453125001,3.575146484374969],[96.44472656250005,3.81630859374998],[95.57861328125003,4.661962890625048],[95.20664062500006,5.284033203125034],[95.22783203125002,5.564794921875034],[95.62890625000003,5.609082031249997],[96.13330078125003,5.294287109374991],[96.49257812500005,5.229345703124991]]]]},"properties":{"name":"Indonesia","childNum":107}},{"geometry":{"type":"Polygon","coordinates":[[[-4.412060546874983,54.185351562499996],[-4.785351562499983,54.073046875],[-4.424707031249994,54.407177734375],[-4.412060546874983,54.185351562499996]]]},"properties":{"name":"Isle of Man","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[75.32221348233018,32.28516356678968],[75.62496871116024,32.28516356678968],[75.73585997688717,32.78417426256088],[76.32728006076415,32.87658365066666],[76.62299010270264,33.32014871357439],[77.06655516561037,33.301666835953235],[77.71342088235082,32.6917648744551],[78.10154031239509,32.87658365066666],[78.49194250885338,32.53122786149202],[78.38964843749997,32.51987304687498],[78.41748046874997,32.466699218749994],[78.4552734375001,32.30034179687502],[78.49589843750002,32.21577148437504],[78.72558593750009,31.983789062500023],[78.71972656250009,31.887646484374983],[78.69345703125006,31.740380859374994],[78.7550781250001,31.55029296875],[78.74355468750005,31.323779296875017],[79.10712890625004,31.402636718750102],[79.38847656250013,31.064208984375085],[79.66425781250004,30.96523437499999],[79.92451171875004,30.888769531250034],[80.20712890625006,30.683740234375023],[80.19121093750002,30.56840820312496],[80.87353515625003,30.290576171875045],[80.98544921875006,30.23710937499999],[81.01025390625014,30.164501953125097],[80.96611328125002,30.180029296875063],[80.90761718750005,30.171923828125017],[80.84814453125009,30.139746093750034],[80.81992187500012,30.119335937499955],[80.68408203125014,29.994335937500068],[80.54902343750015,29.899804687499994],[80.40185546875003,29.730273437500102],[80.31689453125014,29.572070312500017],[80.25488281250009,29.423339843750114],[80.25595703125006,29.318017578125136],[80.23300781250006,29.194628906250045],[80.16953125000012,29.124316406250102],[80.13046875000006,29.100390625000045],[80.08457031249995,28.994189453125074],[80.05166015625,28.870312500000068],[80.07070312500005,28.830175781250063],[80.22656250000003,28.723339843750125],[80.32480468750012,28.66640625000008],[80.41855468749995,28.61201171875001],[80.47910156250012,28.604882812499994],[80.49580078125015,28.635791015625074],[80.51787109375002,28.665185546875023],[80.58701171875006,28.64960937500004],[81.16894531250014,28.335009765625074],[81.85263671875018,27.867089843750136],[81.89687500000011,27.87446289062504],[81.94521484375005,27.89926757812495],[81.98769531250016,27.91376953125004],[82.03701171875,27.90058593750004],[82.11191406250006,27.86494140625004],[82.28769531250018,27.756542968749983],[82.45136718750004,27.671826171874955],[82.62988281249997,27.687060546875045],[82.67734375000006,27.67343749999995],[82.71083984375005,27.596679687500114],[82.73339843750003,27.518994140625097],[83.28974609375004,27.370996093750136],[83.36943359375002,27.410253906249977],[83.38398437500004,27.444824218750085],[83.44716796875011,27.46533203125],[83.55166015625011,27.456347656249932],[83.74697265625011,27.395947265625068],[83.8288085937501,27.377832031250108],[84.09101562499993,27.491357421875136],[84.22978515625007,27.427832031250006],[84.48085937500005,27.348193359375102],[84.61015625000002,27.298681640624977],[84.64072265625012,27.249853515624977],[84.65478515625014,27.20366210937499],[84.65380859375009,27.09169921875008],[84.68535156250013,27.041015625000057],[85.19179687500011,26.766552734375097],[85.29296875000009,26.741015625000045],[85.56845703125012,26.839843750000114],[85.64843749999997,26.829003906250023],[85.69990234375004,26.781640624999966],[85.73730468750003,26.639746093750034],[85.79453125000006,26.60415039062505],[86.00732421875009,26.64936523437504],[86.70136718750015,26.435058593750057],[87.01640625000002,26.555419921875085],[87.2874023437499,26.360302734375125],[87.41357421875014,26.42294921875009],[87.84921875000006,26.43691406250008],[87.99511718750014,26.38237304687499],[88.02695312500023,26.395019531250085],[88.05488281250004,26.43002929687492],[88.11152343750004,26.58642578125],[88.1615234375,26.724804687500125],[88.15722656250009,26.807324218750068],[88.1110351562501,26.928466796875057],[87.99316406250009,27.086083984374994],[87.984375,27.133935546874994],[88.14697265625014,27.749218750000097],[88.15029296875011,27.843310546875074],[88.10976562500005,27.87060546874997],[88.10898437499995,27.93300781250005],[88.14111328125003,27.948925781250097],[88.27519531250013,27.96884765625009],[88.42597656250015,28.011669921875097],[88.57792968750002,28.093359375000034],[88.80371093750003,28.006933593750034],[88.74902343749997,27.521875000000136],[88.7648437500001,27.429882812500068],[88.83251953125003,27.362841796875074],[88.89140625000002,27.316064453125136],[88.88164062500007,27.29746093750009],[88.76035156250006,27.21811523437509],[88.73876953125009,27.175585937499932],[88.85761718750015,26.961474609375017],[89.14824218750002,26.816162109375085],[89.33212890625018,26.848632812500114],[89.58613281250004,26.778955078125136],[89.60996093750012,26.719433593750097],[89.71093750000009,26.713916015625045],[89.76386718750004,26.7015625],[89.94316406250013,26.723925781249932],[90.12294921875011,26.754589843749983],[90.20605468749997,26.847509765625063],[90.34589843750004,26.890332031250097],[90.73964843750005,26.771679687500068],[91.2865234375,26.78994140625008],[91.42675781249997,26.867089843749966],[91.45585937500013,26.866894531250125],[91.51757812500009,26.807324218750068],[91.67158203124993,26.80200195312503],[91.84208984375013,26.852978515625125],[91.94375,26.860839843750114],[91.99833984375013,26.85498046875],[92.04970703125016,26.87485351562495],[92.73155507489682,26.833697862861648],[93.30975376159499,26.784950522650554],[93.61047043679247,27.32239435188504],[94.06979001484449,27.589407158584788],[95.10800937321915,27.749636881153737],[95.74000740838363,28.116850432722256],[96.19577594042592,28.04291597700983],[96.96279296875,27.698291015625017],[96.88359375000013,27.514843750000125],[96.90195312500012,27.43959960937508],[97.10371093749993,27.163330078125114],[97.10205078125003,27.115429687500125],[96.95341796875013,27.13330078125003],[96.79785156249997,27.29619140624999],[96.19082031250005,27.26127929687499],[95.20146484375007,26.641406250000017],[95.05976562500015,26.473974609375006],[95.06894531250006,26.191113281250097],[95.10839843750014,26.091406250000034],[95.12929687500011,26.070410156250034],[95.13242187500006,26.041259765624943],[94.99199218750002,25.77045898437504],[94.66777343750007,25.458886718749966],[94.55302734375013,25.215722656249994],[94.70371093750012,25.097851562499955],[94.49316406250003,24.637646484374983],[94.37724609375002,24.473730468750006],[94.29306640625012,24.321875],[94.07480468750006,23.8720703125],[93.68339843750007,24.00654296875004],[93.45214843750003,23.987402343750034],[93.32626953125006,24.064208984375057],[93.36601562500007,23.132519531249955],[93.34941406250007,23.08496093750003],[93.20390625000002,23.03701171875005],[93.07871093750018,22.718212890625097],[93.16201171875,22.360205078125006],[93.07060546875002,22.20942382812501],[92.96455078125015,22.003759765625034],[92.90947265625013,21.988916015625023],[92.85429687500002,22.010156250000108],[92.77138671875,22.104785156250017],[92.68896484375009,22.130957031250006],[92.63037109375014,22.011328124999977],[92.57490234374993,21.97807617187496],[92.5612304687501,22.04804687500001],[92.49140625000004,22.685400390625006],[92.46445312500006,22.734423828125045],[92.36162109375002,22.929003906250074],[92.33378906250002,23.242382812499955],[92.24609375000003,23.68359374999997],[92.04404296875006,23.677783203125017],[91.97851562500003,23.691992187500063],[91.92958984375011,23.685986328125097],[91.92949218750019,23.598242187499977],[91.93789062500011,23.504687500000102],[91.75419921875013,23.28730468750004],[91.75097656250003,23.053515625000017],[91.55351562500013,22.991552734375006],[91.43623046875004,23.19990234375001],[91.359375,23.06835937500003],[91.16044921875019,23.660644531250085],[91.35019531250012,24.06049804687501],[91.72656250000003,24.20507812499997],[91.84619140624997,24.175292968749943],[92.06416015625004,24.374365234375006],[92.11748046875002,24.493945312500017],[92.22666015625012,24.77099609374997],[92.22832031250002,24.881347656250085],[92.2512695312499,24.895068359375045],[92.38496093750004,24.848779296875023],[92.46835937500018,24.944140625000074],[92.04970703125016,25.16948242187499],[90.61308593750002,25.16772460937497],[90.11962890625003,25.21997070312497],[89.86630859375012,25.293164062499955],[89.81406250000006,25.305371093749955],[89.80087890625012,25.33613281250001],[89.82490234375004,25.56015625],[89.82294921875015,25.94140625000003],[89.67089843750009,26.213818359375125],[89.57275390625003,26.13232421875003],[89.54990234375006,26.00527343750008],[89.28925781250015,26.037597656250085],[89.01865234375012,26.410253906249977],[88.95195312500002,26.412109375],[88.97041015625004,26.250878906250023],[88.94072265625002,26.24536132812497],[88.68281250000004,26.291699218749983],[88.51826171875004,26.51777343750004],[88.36992187500002,26.56411132812508],[88.35146484375005,26.482568359374966],[88.38623046875003,26.471533203125034],[88.44042968749997,26.369482421875034],[88.33398437499997,26.257519531249955],[88.15078125000005,26.087158203125057],[88.1066406250001,25.841113281250045],[88.14746093749997,25.811425781250023],[88.50244140625009,25.53701171875008],[88.76914062500006,25.490478515625],[88.85478515625002,25.333544921875017],[88.94414062500002,25.290771484375],[88.92978515625012,25.222998046875063],[88.57382812500006,25.18789062499999],[88.45625,25.188427734375125],[88.37294921875016,24.961523437500063],[88.31337890625011,24.8818359375],[88.27949218750015,24.881933593750034],[88.18886718750016,24.920605468750097],[88.14980468750011,24.91464843749995],[88.04511718750015,24.71303710937508],[88.03027343750009,24.664453125000136],[88.02343750000003,24.627832031250136],[88.07910156250009,24.549902343750063],[88.14550781250003,24.485791015624955],[88.225,24.460644531249983],[88.3375,24.45385742187503],[88.49853515625003,24.34663085937504],[88.64228515625015,24.325976562500102],[88.72353515625011,24.27490234375],[88.7335937500001,24.230908203125097],[88.72656250000009,24.18623046875004],[88.71376953125016,24.069628906250102],[88.69980468750006,24.00253906249992],[88.56738281250009,23.674414062500034],[88.63574218749997,23.55],[88.69765625,23.493017578125034],[88.72441406250002,23.254980468750034],[88.89707031250018,23.21040039062501],[88.92812500000011,23.186621093749977],[88.89970703125002,22.843505859375057],[88.92070312500002,22.632031249999955],[89.05,22.274609374999983],[89.02792968750023,21.937207031249983],[88.94931640625018,21.937939453125125],[89.05166015625,21.654101562500045],[88.85751953125012,21.744677734375017],[88.74501953125011,21.584375],[88.74023437500003,22.005419921875017],[88.64160156250003,22.121972656250136],[88.58466796875015,21.659716796874932],[88.44599609375004,21.614257812500085],[88.28750000000016,21.758203125000108],[88.25371093750002,21.622314453124943],[88.0568359375001,21.694140625000017],[88.19628906249997,22.139550781249994],[87.94140625000003,22.374316406250045],[88.15927734375018,22.12172851562508],[87.82373046875003,21.727343750000045],[87.20068359375009,21.544873046874983],[86.95410156250014,21.365332031250006],[86.84228515625009,21.106347656249994],[86.97548828125005,20.70014648437501],[86.75039062500011,20.313232421875057],[86.37656250000006,20.006738281249966],[86.24521484375012,20.05302734374999],[86.27949218750021,19.919433593749943],[85.575,19.69291992187499],[85.496875,19.696923828125108],[85.50410156250004,19.887695312500057],[85.24863281250006,19.757666015625034],[85.18076171875018,19.59487304687508],[85.44160156249993,19.626562499999977],[84.77099609375009,19.125390625000023],[84.10410156250018,18.29267578125001],[82.35957031250004,17.09619140624997],[82.25878906250014,16.55986328124996],[81.76191406250015,16.32949218750008],[81.28613281249997,16.337060546875023],[80.97871093750004,15.758349609375074],[80.64658203125006,15.895019531250028],[80.29345703125014,15.710742187499989],[80.0534179687501,15.074023437499932],[80.17871093750003,14.478320312500074],[80.11171875000005,14.212207031250045],[80.30654296875016,13.485058593750054],[80.15625,13.713769531250108],[80.06210937500006,13.60625],[80.34238281250006,13.361328125000071],[80.22910156250018,12.690332031249966],[79.85849609375018,11.988769531250043],[79.69316406250007,11.312548828124946],[79.79902343750004,11.338671874999932],[79.84863281250009,11.196875],[79.83818359375002,10.322558593750045],[79.31455078125018,10.256689453124949],[78.93994140625009,9.565771484375063],[79.01992187500005,9.333349609374963],[79.41142578125002,9.192382812500014],[78.97958984375018,9.268554687500085],[78.42148437500006,9.105029296874989],[78.19248046874995,8.890869140625057],[78.06015625000006,8.384570312499932],[77.51757812500003,8.078320312500068],[77.06591796875003,8.315917968749986],[76.5534179687501,8.902783203124997],[76.32460937500016,9.452099609374997],[76.24238281250004,9.927099609374949],[76.37558593750006,9.539892578124935],[76.45878906250013,9.536230468750077],[76.34648437500002,9.922119140625],[76.19560546875002,10.086132812500026],[75.72382812500015,11.361767578125026],[74.94550781250004,12.56455078124992],[74.38222656250005,14.494726562500048],[73.94921875000014,15.074755859375088],[73.80078125000009,15.39697265625],[73.93193359375013,15.39697265625],[73.77177734375013,15.573046874999989],[73.83281250000013,15.659375],[73.67988281250015,15.708886718750136],[73.47607421875003,16.05424804687496],[72.87548828124997,18.642822265625114],[72.97207031250011,19.15332031250003],[72.8346679687501,18.975585937500057],[72.80302734375013,19.07929687500004],[72.81162109375,19.298925781250006],[72.98720703125,19.27744140625009],[72.78789062500013,19.362988281250097],[72.66777343750019,19.83095703125005],[72.89375,20.672753906250136],[72.81386718750011,21.117187500000085],[72.62382812500002,21.371972656250108],[72.73476562500016,21.470800781250006],[72.61328125000009,21.461816406250108],[73.1125,21.750439453125125],[72.54306640625,21.69658203124999],[72.70019531250003,21.971923828124943],[72.52226562500013,21.976220703125108],[72.55302734375007,22.159960937500074],[72.80917968749995,22.23330078125008],[72.18281250000015,22.26972656250004],[72.30644531250002,22.18920898437497],[72.27441406250009,22.089746093749966],[72.03720703125006,21.82304687499999],[72.2103515625,21.72822265625004],[72.25400390625006,21.531005859375],[72.01523437500012,21.155712890625097],[71.0246093750001,20.73886718750009],[70.71933593750006,20.740429687500068],[70.12734375,21.094677734375097],[68.96992187500021,22.29028320312497],[69.05166015625016,22.437304687500074],[69.27656250000004,22.285498046875063],[70.17724609375014,22.57275390624997],[70.48925781250009,23.08950195312508],[70.33945312500012,22.939746093749932],[69.66464843750006,22.759082031250074],[69.23593749999995,22.848535156250023],[68.64072265625006,23.189941406250114],[68.41748046875009,23.57148437500004],[68.7767578125,23.852099609375017],[68.23496093749995,23.596972656250074],[68.16503906250009,23.857324218749994],[68.28251953125013,23.927978515625],[68.38125000000016,23.950878906250068],[68.48867187500011,23.96723632812501],[68.5866210937501,23.966601562500074],[68.72412109375003,23.964697265625034],[68.72812500000012,24.265625],[68.73964843750016,24.291992187500085],[68.75898437499993,24.307226562500006],[68.78115234375011,24.313720703125085],[68.8,24.30908203125003],[68.82832031250004,24.26401367187509],[68.86347656250015,24.26650390625005],[68.90078125000011,24.29243164062501],[68.98457031250015,24.273095703124966],[69.05156250000013,24.28632812500001],[69.11953125000011,24.26865234374995],[69.23505859374993,24.268261718750068],[69.44345703124995,24.275390625000085],[69.55917968750006,24.273095703124966],[69.80517578125009,24.16523437500004],[70.0982421875,24.2875],[70.28906250000009,24.356298828125063],[70.54677734375,24.418310546875063],[70.56503906250006,24.385791015625017],[70.55585937500015,24.331103515625074],[70.57929687500015,24.279052734374943],[70.65947265625013,24.24609374999997],[70.71630859375009,24.237988281250097],[70.7672851562501,24.245410156250017],[70.80507812500011,24.26196289062503],[70.88623046875014,24.34375],[70.92812500000016,24.362353515625045],[70.98281250000011,24.361035156250125],[71.04404296875006,24.400097656250097],[71.04531250000005,24.42998046874996],[70.96982421875012,24.571875],[70.97636718750013,24.61875],[71.00234375000016,24.6539062499999],[71.04785156250003,24.687744140625085],[71.02070312500021,24.75766601562492],[70.95087890625015,24.89160156250003],[70.87773437500019,25.06298828124997],[70.65205078125004,25.422900390625102],[70.64843750000003,25.666943359375068],[70.5695312500001,25.705957031250023],[70.50585937500009,25.685302734375085],[70.44853515625013,25.681347656249983],[70.26464843750009,25.70654296874997],[70.10019531250006,25.91005859375005],[70.14921875000002,26.347558593749994],[70.11464843750016,26.548046874999983],[69.47001953125002,26.804443359375],[69.56796875,27.174609375000102],[69.89628906250007,27.473632812500085],[70.04980468750009,27.694726562500023],[70.14453125000003,27.849023437499994],[70.19394531250006,27.89487304687492],[70.24433593750004,27.934130859375102],[70.4037109375,28.025048828124994],[70.48857421875013,28.023144531250125],[70.62910156250015,27.937451171875068],[70.6916015625001,27.76899414062504],[70.79794921875012,27.709619140625023],[70.87490234375016,27.71445312499995],[71.18476562500004,27.831640625],[71.54296875000003,27.869873046875],[71.8703125000001,27.9625],[71.88886718750004,28.04746093749992],[71.94804687500002,28.177294921875102],[72.12851562500012,28.34633789062508],[72.29199218750003,28.69726562499997],[72.34189453125006,28.751904296875097],[72.90332031250003,29.02875976562501],[73.38164062500013,29.934375],[73.8091796875,30.093359375],[73.88652343750013,30.162011718750136],[73.93339843750002,30.222070312500108],[73.92460937500007,30.28164062499999],[73.88271484375,30.352148437499977],[73.89931640625,30.435351562500045],[74.00898437500004,30.519677734374994],[74.33935546875003,30.893554687499943],[74.38037109375003,30.89340820312509],[74.50976562500009,30.959667968750097],[74.63281250000014,31.034667968750114],[74.62578125000002,31.068750000000108],[74.61035156250009,31.112841796875045],[74.51767578125012,31.185595703124932],[74.53496093750007,31.261376953125108],[74.59394531249993,31.465380859375102],[74.58183593750013,31.523925781250114],[74.50996093750015,31.712939453125074],[74.52597656249995,31.765136718750057],[74.55556640625011,31.818554687500097],[74.63574218750003,31.889746093750034],[74.73945312500015,31.948828125],[75.07148437500015,32.08935546875003],[75.13876953125,32.10478515624999],[75.25410156250004,32.140332031250125],[75.33349609374997,32.279199218749994],[75.32221348233018,32.28516356678968]]]]},"properties":{"name":"India","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[72.49199218750002,-7.37744140625],[72.42910156250002,-7.435351562500003],[72.34970703125,-7.263378906250011],[72.447265625,-7.395703125000011],[72.44560546875002,-7.220410156250011],[72.49199218750002,-7.37744140625]]]},"properties":{"name":"Br. Indian Ocean Ter.","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-9.948193359374926,53.91313476562499],[-10.265722656249949,53.977685546874994],[-9.99638671874996,54.00361328125004],[-9.948193359374926,53.91313476562499]]],[[[-6.218017578125,54.08872070312506],[-6.347607421874926,53.94130859375005],[-6.027392578124989,52.927099609375006],[-6.463183593749932,52.345361328124994],[-6.325,52.246679687500034],[-6.890234375,52.15922851562499],[-6.965771484374926,52.24951171875],[-8.057812499999926,51.82558593750005],[-8.4091796875,51.888769531250034],[-8.349121093749943,51.73930664062496],[-8.813427734374926,51.584912109374955],[-9.737304687499943,51.473730468750034],[-9.524902343750028,51.68110351562501],[-10.120751953124994,51.60068359375006],[-9.598828124999983,51.87441406250005],[-10.341064453124943,51.798925781250034],[-9.909667968749972,52.122949218749966],[-10.39023437499992,52.134912109374994],[-10.356689453125,52.20693359375002],[-9.772119140624937,52.250097656250034],[-9.90605468749996,52.403710937499966],[-9.632226562499937,52.54692382812502],[-8.783447265624943,52.679638671874955],[-8.990283203124989,52.755419921875045],[-9.175390624999949,52.634912109374994],[-9.916601562499977,52.56972656250005],[-9.46489257812496,52.82319335937498],[-9.299218749999966,53.09755859375002],[-8.930126953124983,53.207080078125045],[-9.51420898437496,53.23823242187498],[-10.091259765624926,53.41284179687503],[-10.116992187499932,53.548535156249955],[-9.720654296874926,53.6044921875],[-9.901611328124943,53.72719726562502],[-9.578222656249949,53.80541992187497],[-9.578857421875,53.879833984374955],[-9.9140625,53.863720703124955],[-9.856445312499972,54.095361328124994],[-10.092675781249966,54.15576171875003],[-10.056396484374943,54.25781250000006],[-8.545556640624994,54.24121093750003],[-8.623144531249977,54.346875],[-8.133447265624966,54.64082031250001],[-8.763916015624972,54.68120117187496],[-8.377294921874977,54.88945312500002],[-8.274609374999955,55.146289062500045],[-7.667089843749977,55.25649414062502],[-7.65874023437496,54.97094726562503],[-7.308789062500011,55.365820312500006],[-6.961669921874972,55.23789062500006],[-7.218652343749937,55.09199218749998],[-7.55039062499992,54.767968749999966],[-7.910595703124955,54.698339843750006],[-7.75439453125,54.59492187499998],[-8.118261718749977,54.41425781250004],[-7.606542968750006,54.14384765625002],[-7.324511718750017,54.13344726562502],[-7.007714843749937,54.40668945312501],[-6.649804687499937,54.05864257812496],[-6.218017578125,54.08872070312506]]]]},"properties":{"name":"Ireland","childNum":2}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[56.18798828125003,26.92114257812497],[55.95429687500004,26.70112304687501],[55.31152343749997,26.592626953125006],[55.76259765625005,26.81196289062504],[55.75761718750002,26.94765625000005],[56.279394531250006,26.952099609374983],[56.18798828125003,26.92114257812497]]],[[[46.1144531250001,38.877783203125034],[46.490625,38.90668945312498],[47.995898437500074,39.683935546875034],[48.322167968749994,39.39907226562502],[48.10439453125005,39.241113281249994],[48.292089843750006,39.01884765624999],[47.99648437499999,38.85375976562503],[48.59267578125005,38.41108398437498],[48.86875,38.43549804687498],[48.95996093750003,37.89013671875],[49.171191406250074,37.60058593749997],[50.13046875,37.407128906249994],[50.53320312499997,37.01367187500006],[51.11855468750005,36.742578124999966],[52.19013671875004,36.62172851562505],[53.76767578125006,36.93032226562502],[53.91542968750005,36.93032226562502],[53.67949218750002,36.853125],[53.970117187499994,36.818310546874955],[53.91416015625006,37.34355468750002],[54.6994140625001,37.47016601562498],[54.90009765625004,37.77792968750006],[55.38085937500003,38.051123046875034],[56.272070312500006,38.080419921875034],[56.440625,38.249414062499994],[57.1935546875001,38.216406250000034],[57.35371093750004,37.97333984374998],[58.261621093749994,37.665820312500045],[58.81542968750003,37.683496093749994],[59.30175781249997,37.51064453125005],[59.454980468749994,37.25283203125002],[60.06279296875002,36.962890625],[60.34130859375003,36.63764648437501],[61.11962890625003,36.64257812500003],[61.212011718750006,36.190527343750034],[61.15292968750006,35.97675781250001],[61.25214843750004,35.86762695312498],[61.26201171875002,35.61958007812498],[61.28183593750006,35.55341796875001],[61.2785156250001,35.513769531250006],[61.245507812499994,35.47407226562501],[61.18925781250002,35.31201171875003],[61.1,35.272314453125034],[61.08007812499997,34.85561523437505],[60.95117187499997,34.65385742187499],[60.91474609375004,34.63398437500001],[60.80234375000006,34.55463867187501],[60.73945312500004,34.544726562500045],[60.7262695312501,34.51826171874998],[60.736132812500074,34.491796875],[60.76259765625005,34.475244140624994],[60.88945312500002,34.31943359375006],[60.642675781250006,34.30717773437496],[60.48574218750005,34.09477539062502],[60.4859375,33.7119140625],[60.57382812500006,33.58833007812498],[60.91699218749997,33.505224609375006],[60.56054687499997,33.13784179687502],[60.5765625,32.99487304687503],[60.71044921874997,32.6],[60.82929687500004,32.24941406250005],[60.82724609375006,32.16796874999997],[60.789941406249994,31.98710937499999],[60.7875,31.87719726562497],[60.791601562500006,31.660595703124983],[60.82070312499999,31.495166015625045],[60.854101562500006,31.483251953125006],[61.110742187499994,31.45112304687504],[61.346484375000074,31.42163085937497],[61.66015625000003,31.382421874999977],[61.7550781250001,31.285302734374994],[61.814257812500074,31.072558593750017],[61.810839843750074,30.913281249999983],[61.78417968749997,30.831933593750023],[61.55947265625005,30.59936523437497],[61.33164062500006,30.36372070312501],[60.84335937500006,29.85869140624999],[61.03417968750003,29.663427734374977],[61.15214843750002,29.542724609375],[61.8898437500001,28.546533203124994],[62.7625,28.202050781249994],[62.782324218750006,27.800537109375],[62.75273437500002,27.265625],[63.16679687500002,27.25249023437499],[63.19609375000002,27.243945312500017],[63.25625,27.20791015625005],[63.30156250000002,27.151464843750006],[63.30517578124997,27.124560546875017],[63.242089843749994,27.07768554687499],[63.25039062499999,26.879248046875063],[63.24160156250005,26.86474609375003],[63.18613281250006,26.83759765625001],[63.168066406250006,26.66557617187496],[62.31230468750002,26.490869140624994],[62.23935546875006,26.357031249999977],[62.12597656249997,26.368994140625034],[61.842382812500006,26.225927734375006],[61.809960937499994,26.165283203125],[61.78076171874997,25.99584960937503],[61.75439453125003,25.843359375000063],[61.737695312499994,25.821093750000045],[61.66865234375004,25.76899414062501],[61.6618164062501,25.751269531250017],[61.67138671874997,25.69238281250003],[61.64013671875003,25.584619140624994],[61.61542968750004,25.28613281250003],[61.58789062499997,25.20234375000001],[61.533105468749994,25.195507812499955],[61.41220703125006,25.102099609375017],[60.66386718750002,25.28222656250003],[60.51054687500002,25.437060546875045],[60.40019531250002,25.311572265625074],[59.45605468749997,25.481494140625045],[59.0460937500001,25.417285156250017],[58.79785156249997,25.554589843750023],[57.334570312500006,25.791552734375074],[57.03603515625005,26.80068359375005],[56.728125,27.127685546875057],[56.118066406249994,27.14311523437499],[54.75927734375003,26.50507812500004],[54.24707031250003,26.696630859374977],[53.70576171875004,26.72558593750003],[52.69160156250004,27.323388671875023],[52.475878906250074,27.61650390624999],[52.03076171874997,27.824414062499955],[51.58906250000004,27.864208984374983],[51.27890625,28.13134765624997],[51.06201171874997,28.72612304687499],[50.86699218750002,28.870166015625017],[50.87578125000002,29.062695312499983],[50.67519531250005,29.146582031250034],[50.64960937500004,29.420068359374966],[50.16894531250003,29.921240234375034],[50.071582031250074,30.198535156250017],[49.55488281250004,30.028955078125023],[49.028125,30.333447265624983],[49.224511718749994,30.472314453125023],[49.00195312500003,30.506542968749983],[48.91914062500004,30.120898437500017],[48.54648437500006,29.962353515624955],[48.47851562499997,30.003808593749966],[48.43457031249997,30.03759765625],[48.33105468749997,30.28544921874996],[48.01494140625002,30.465625],[48.01064453125005,30.989794921875017],[47.679492187500074,31.00239257812501],[47.679492187500074,31.400585937499955],[47.75390624999997,31.601367187500017],[47.829980468749994,31.79443359375],[47.71455078125004,31.936425781249966],[47.5915039062501,32.087988281250034],[47.51191406250004,32.15083007812504],[47.3297851562501,32.45551757812501],[47.28515625000003,32.474023437499966],[47.121386718750074,32.46660156249996],[46.569921875,32.83393554687501],[46.37705078125006,32.92924804687499],[46.29824218750005,32.95024414062502],[46.11279296875003,32.957666015624994],[46.09306640625002,32.97587890624999],[46.08046875,33.028222656249994],[46.0807617187501,33.08652343750006],[46.14111328125003,33.174414062500034],[46.145898437499994,33.229638671874994],[46.01992187500005,33.41572265624998],[45.39707031250006,33.970849609374994],[45.542773437500074,34.21552734375004],[45.459375,34.470361328124994],[45.50078125000002,34.58159179687499],[45.6375,34.573828125],[45.678125,34.798437500000034],[45.92089843750003,35.02851562500001],[46.04179687500002,35.08017578125006],[46.13378906249997,35.127636718749955],[46.15468750000005,35.19672851562498],[46.112109375000074,35.32167968750005],[45.97109375000005,35.524169921875],[46.03740234375002,35.67314453124999],[46.180957031250074,35.71137695312504],[46.2625,35.74414062500006],[46.27343749999997,35.77324218750002],[46.16748046874997,35.820556640625],[45.77636718749997,35.82182617187499],[45.36162109375002,36.015332031249955],[45.241113281249994,36.35595703125],[45.20654296874997,36.397167968749955],[45.15527343749997,36.407373046874994],[45.11240234375006,36.409277343750034],[45.053125,36.47163085937501],[44.76513671875003,37.142431640625006],[44.79414062500004,37.290380859375034],[44.574023437500074,37.435400390625006],[44.589941406250006,37.710351562499966],[44.21132812499999,37.908056640625006],[44.4499023437501,38.33422851562506],[44.2985351562501,38.38627929687499],[44.27167968750004,38.83603515625006],[44.02324218750002,39.37744140625006],[44.3893554687501,39.422119140625],[44.58710937500004,39.76855468750006],[44.81718750000002,39.65043945312496],[45.4796875000001,39.00625],[46.1144531250001,38.877783203125034]]]]},"properties":{"name":"Iran","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[45.6375,34.573828125],[45.50078125000002,34.581591796874996],[45.459375,34.470361328124994],[45.54277343750002,34.21552734375],[45.397070312500006,33.970849609374994],[46.01992187500002,33.41572265625],[46.14589843750002,33.229638671874994],[46.14111328125,33.1744140625],[46.08076171875001,33.0865234375],[46.08046875000002,33.028222656249994],[46.09306640625002,32.975878906249996],[46.11279296875,32.957666015624994],[46.377050781250006,32.929248046874996],[46.569921875,32.833935546875],[47.12138671875002,32.466601562499996],[47.28515625,32.474023437499994],[47.32978515625001,32.455517578125],[47.51191406250001,32.150830078125],[47.59150390625001,32.08798828125],[47.71455078125001,31.936425781249994],[47.82998046875002,31.79443359375],[47.75390625,31.601367187499996],[47.67949218750002,31.400585937499997],[47.67949218750002,31.002392578124997],[48.01064453125002,30.989794921874996],[48.01494140625002,30.465625],[48.3310546875,30.285449218749996],[48.546484375,29.962353515624997],[48.454199218750006,29.9384765625],[48.354589843750006,29.956738281249997],[48.141699218750006,30.040917968749994],[47.982519531250006,30.011328125],[47.97871093750001,29.9828125],[47.64375,30.097314453124994],[47.14824218750002,30.0009765625],[46.905859375,29.5375],[46.76933593750002,29.347460937499996],[46.69375,29.259667968749994],[46.53144531250001,29.096240234374996],[46.3564453125,29.063671875],[44.71650390625001,29.193603515625],[43.77373046875002,29.84921875],[42.07441406250001,31.080371093749996],[40.47890625000002,31.893359375],[40.36933593750001,31.93896484375],[40.02783203125,31.995019531249994],[39.7041015625,32.042529296874996],[39.14541015625002,32.12451171875],[39.29277343750002,32.24384765625],[39.24746093750002,32.350976562499994],[39.04140625000002,32.3056640625],[38.773535156250006,33.372216796874994],[40.98701171875001,34.429052734375],[41.19472656250002,34.768994140625],[41.354101562500006,35.640429687499996],[41.295996093750006,36.383349609374996],[41.41679687500002,36.5146484375],[41.78857421875,36.59716796875],[42.358984375,37.10859375],[42.45585937500002,37.128710937499996],[42.63544921875001,37.249267578125],[42.74111328125002,37.3619140625],[42.77460937500001,37.371875],[42.869140625,37.334912109375],[42.936621093750006,37.324755859374996],[43.09248046875001,37.3673828125],[43.67578125,37.22724609375],[43.83642578125,37.223535156249994],[44.01318359375,37.313525390624996],[44.11445312500001,37.30185546875],[44.15625,37.282958984375],[44.19179687500002,37.249853515625],[44.20839843750002,37.20263671875],[44.20166015625,37.051806640624996],[44.281835937500006,36.97802734375],[44.32558593750002,37.0107421875],[44.401953125,37.058496093749994],[44.60595703125,37.176025390625],[44.66933593750002,37.173583984375],[44.73095703125,37.165283203125],[44.76513671875,37.142431640625],[45.053125,36.471630859375],[45.112402343750006,36.40927734375],[45.1552734375,36.407373046874994],[45.20654296875,36.39716796875],[45.24111328125002,36.35595703125],[45.36162109375002,36.01533203125],[45.7763671875,35.821826171874996],[46.16748046875,35.820556640625],[46.2734375,35.773242187499996],[46.2625,35.744140625],[46.18095703125002,35.711376953125],[46.03740234375002,35.673144531249996],[45.97109375000002,35.524169921875],[46.11210937500002,35.321679687499994],[46.15468750000002,35.196728515625],[46.1337890625,35.12763671875],[46.04179687500002,35.08017578125],[45.9208984375,35.028515625],[45.678125,34.7984375],[45.6375,34.573828125]]]},"properties":{"name":"Iraq","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-15.543115234374994,66.228515625],[-14.595849609374994,66.38154296875],[-15.117382812499983,66.125634765625],[-14.698193359374983,66.02021484375],[-14.827099609374983,65.7642578125],[-14.391845703125,65.78740234375],[-14.473388671875,65.575341796875],[-14.166943359374983,65.64228515625],[-13.617871093749983,65.5193359375],[-13.804785156249977,65.35478515625],[-13.599316406249983,65.0359375],[-14.04443359375,64.74189453125],[-14.385107421874977,64.74521484375],[-14.475390624999989,64.493994140625],[-14.927392578124994,64.319677734375],[-15.832910156249994,64.17666015625],[-16.640332031249983,63.865478515625],[-17.81572265624999,63.71298828125],[-17.946923828124994,63.5357421875],[-18.65361328124999,63.406689453125],[-20.198144531249994,63.555810546874994],[-20.494042968749994,63.687353515625],[-20.413964843749994,63.80517578125],[-20.65092773437499,63.73740234375],[-21.15239257812499,63.94453125],[-22.652197265624977,63.827734375],[-22.701171875,64.083203125],[-22.51005859374999,63.991455078125],[-22.187597656249977,64.039208984375],[-21.463330078124983,64.379150390625],[-22.053369140624994,64.313916015625],[-21.950341796874994,64.514990234375],[-21.590625,64.6263671875],[-22.10600585937499,64.533056640625],[-22.467041015625,64.794970703125],[-23.818994140624994,64.73916015625],[-24.02617187499999,64.863427734375],[-22.7880859375,65.046484375],[-21.89213867187499,65.048779296875],[-21.779980468749983,65.1876953125],[-22.50908203124999,65.19677734375],[-21.844384765624994,65.44736328125],[-22.902490234374994,65.58046875],[-23.89990234375,65.407568359375],[-24.475683593749977,65.5251953125],[-24.248925781249994,65.614990234375],[-23.85673828124999,65.53837890625],[-24.092626953124977,65.77646484375],[-23.615917968749983,65.67958984375],[-23.285351562499983,65.75],[-23.832617187499977,65.84921875],[-23.52495117187499,65.880029296875],[-23.77734375,66.017578125],[-23.434472656249994,66.02421875],[-23.452539062499994,66.181005859375],[-23.018994140624983,65.98212890625],[-22.659863281249983,66.025927734375],[-22.61601562499999,65.86748046875],[-22.44169921874999,65.90830078125],[-22.4453125,66.07001953125],[-22.947900390624994,66.212744140625],[-22.48442382812499,66.26630859375],[-23.116943359375,66.338720703125],[-22.9443359375,66.429443359375],[-22.426123046874977,66.430126953125],[-21.406884765624994,66.0255859375],[-21.374902343749994,65.74189453125],[-21.658447265625,65.723583984375],[-21.12968749999999,65.2666015625],[-20.804345703124994,65.63642578125],[-20.454833984375,65.571044921875],[-20.20751953125,66.10009765625],[-19.489697265624983,65.76806640625],[-19.382958984374994,66.07568359375],[-18.845898437499983,66.183935546875],[-18.141943359374977,65.73408203125],[-18.29716796874999,66.157421875],[-17.906982421875,66.143310546875],[-17.550439453124994,65.964404296875],[-17.153027343749983,66.20283203125],[-16.838037109374994,66.125244140625],[-16.485009765624994,66.195947265625],[-16.540673828124994,66.446728515625],[-16.24931640624999,66.522900390625],[-15.985400390624989,66.5146484375],[-15.543115234374994,66.228515625]]]},"properties":{"name":"Iceland","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[35.78730468750001,32.734912109374996],[35.572851562500006,32.640869140625],[35.56904296875001,32.619873046875],[35.55146484375001,32.3955078125],[35.484375,32.401660156249996],[35.40263671875002,32.450634765625],[35.38671875,32.493017578125],[35.303808593750006,32.512939453125],[35.19326171875002,32.534423828125],[35.065039062500006,32.46044921875],[35.01054687500002,32.338183593749996],[34.95595703125002,32.1609375],[34.98974609375,31.91328125],[34.97832031250002,31.86640625],[34.95380859375001,31.841259765624997],[34.96113281250001,31.82333984375],[34.983007812500006,31.81679687499999],[35.05322265625,31.837939453124996],[35.12714843750001,31.816748046875],[35.203710937500006,31.75],[34.95097656250002,31.602294921875],[34.88046875,31.3681640625],[35.45058593750002,31.479296875],[34.97343750000002,29.555029296875],[34.904296875,29.47734375],[34.24531250000001,31.208300781249996],[34.34833984375001,31.292919921874997],[34.350195312500006,31.362744140624997],[34.52558593750001,31.525634765625],[34.47734375000002,31.584863281249994],[34.483984375,31.59228515625],[34.67841796875001,31.895703125],[35.10859375000001,33.08369140625],[35.411230468750006,33.07568359375],[35.869140625,33.43173828125],[35.91347656250002,32.94960937499999],[35.78730468750001,32.734912109374996]]]},"properties":{"name":"Israel","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[15.576562500000051,38.220312500000034],[15.099511718750023,37.45859375],[15.295703125000017,37.05517578124997],[15.112597656250017,36.687841796875006],[14.501855468750023,36.798681640625034],[14.142968750000023,37.103662109374994],[13.90546875000004,37.10063476562502],[13.169921875000028,37.47929687499996],[12.640234375000034,37.594335937500034],[12.435546874999972,37.819775390624955],[12.734375,38.18305664062498],[12.902734375000023,38.03486328124998],[13.291113281250034,38.19145507812502],[13.788867187499989,37.981201171875],[15.11875,38.15273437500002],[15.498730468750011,38.290869140625006],[15.576562500000051,38.220312500000034]]],[[[8.478906250000023,39.067529296874966],[8.421484375000034,38.968652343749994],[8.366796875,39.115917968749955],[8.478906250000023,39.067529296874966]]],[[[8.28603515625008,41.03984375],[8.205664062500034,40.99746093750005],[8.320214843750023,41.121875],[8.28603515625008,41.03984375]]],[[[9.632031250000011,40.88203124999998],[9.805273437500063,40.499560546875045],[9.642968750000023,40.268408203125006],[9.5625,39.16601562500006],[9.056347656250068,39.23916015625002],[8.966601562500074,38.963720703125034],[8.648535156250034,38.92656250000002],[8.418164062500068,39.205712890624966],[8.547753906250023,39.83920898437506],[8.4078125,39.91723632812497],[8.471289062500063,40.29267578124998],[8.189941406250028,40.651611328125],[8.22421875,40.91333007812503],[8.571875,40.85019531250006],[9.228417968750023,41.257080078125],[9.615332031249977,41.01728515624998],[9.632031250000011,40.88203124999998]]],[[[10.395117187500034,42.85815429687503],[10.419335937499994,42.71318359374999],[10.13125,42.742041015625006],[10.395117187500034,42.85815429687503]]],[[[13.420996093750006,46.212304687499994],[13.63251953125004,46.17705078125002],[13.634960937499983,46.15776367187499],[13.61660156250008,46.133105468750045],[13.54804687500004,46.08911132812503],[13.486425781250034,46.03955078124997],[13.480273437500017,46.00922851562501],[13.487695312500023,45.987109375000045],[13.509179687500051,45.973779296874994],[13.6005859375,45.97978515624996],[13.663476562500023,45.7919921875],[13.831152343750006,45.680419921875],[13.719824218750063,45.58759765625001],[13.628320312500051,45.77094726562498],[13.206347656250074,45.771386718749966],[12.27431640625008,45.44604492187503],[12.225683593750034,45.24150390625002],[12.523437500000028,44.96796874999998],[12.248339843750045,44.72250976562498],[12.396289062500074,44.223876953125],[13.56416015625004,43.57128906250003],[14.010449218750011,42.68955078125006],[14.54072265625004,42.24428710937502],[15.16875,41.93403320312498],[16.164648437500034,41.89619140624998],[15.900488281250034,41.51206054687498],[17.954980468749994,40.65517578125002],[18.460644531249983,40.221044921875034],[18.34375,39.82138671874998],[18.077929687500017,39.93696289062498],[17.865039062500074,40.28017578125002],[17.395800781250045,40.34023437499999],[17.179980468750045,40.50278320312498],[16.92822265625,40.45805664062502],[16.521875,39.74755859375003],[17.114550781250017,39.38061523437497],[17.174609375000017,38.998095703125045],[16.61669921875003,38.800146484375034],[16.54560546875001,38.40908203125002],[16.05683593750001,37.941845703124955],[15.72451171875008,37.93911132812502],[15.645800781250017,38.034228515625045],[15.87890625,38.61391601562502],[16.19677734375,38.759228515624955],[16.20996093750003,38.94111328124998],[15.692773437499994,39.99018554687501],[14.95087890625004,40.23901367187497],[14.94765625000008,40.469335937500006],[14.765722656250063,40.66840820312498],[14.339941406250006,40.59882812500001],[14.460546875000063,40.72871093750001],[14.04433593750008,40.81225585937506],[13.733398437500057,41.23564453124999],[13.088671875000074,41.243847656249955],[12.630859374999972,41.469677734374955],[11.637304687500063,42.287548828124955],[11.141210937499977,42.38989257812503],[11.167773437500074,42.53515625000006],[10.708398437500023,42.93632812499999],[10.514843750000011,42.96752929687503],[10.188085937500063,43.947509765625],[8.76582031250004,44.42231445312501],[8.004980468750006,43.87675781249999],[7.4931640625,43.767138671875045],[7.637207031250057,44.16484375],[7.318554687500068,44.13798828125002],[6.900195312499989,44.33574218749996],[6.99267578125,44.82729492187502],[6.634765625000028,45.06816406249996],[7.07832031250004,45.23994140624998],[7.146386718750051,45.381738281249994],[6.790917968750023,45.740869140624966],[7.021093750000034,45.92578124999997],[7.055761718749977,45.90380859375003],[7.129003906249977,45.88041992187499],[7.327929687500017,45.912353515625],[7.9931640625,46.01591796874996],[8.081542968750057,46.25600585937502],[8.231933593750057,46.341210937499966],[8.29853515625004,46.403417968750034],[8.370703125,46.44511718750002],[8.458398437500023,46.24589843750002],[8.818554687500011,46.0771484375],[8.826757812500006,46.06103515625],[8.77802734375004,45.996191406250034],[8.953710937500034,45.83002929687501],[9.023730468750074,45.845703125],[9.203417968750017,46.21923828125],[9.304394531250068,46.49555664062498],[9.399316406250023,46.480664062499955],[9.427636718750023,46.48232421875002],[9.528710937500023,46.306201171875045],[9.57958984375,46.29609375000001],[9.639453125000017,46.29589843749997],[9.78779296875004,46.34604492187498],[9.884472656250011,46.36777343750006],[9.939257812500074,46.36181640625],[10.041015625000028,46.23808593750002],[10.08056640625,46.22797851562501],[10.128320312500051,46.238232421874955],[10.109667968750074,46.36284179687502],[10.081933593750023,46.420751953125006],[10.045605468750068,46.44790039062505],[10.038281250000011,46.483203125000045],[10.061230468750068,46.54677734375002],[10.087011718750063,46.59990234375002],[10.1375,46.614355468750034],[10.195507812500068,46.62109374999997],[10.4306640625,46.55004882812497],[10.409352678571473,46.6092047991071],[10.39794921875,46.66503906250006],[10.406054687500045,46.73486328124997],[10.452832031249983,46.86494140625001],[10.47939453125008,46.85512695312505],[10.579785156250011,46.85371093750001],[10.689257812500017,46.846386718749955],[10.759765625,46.79331054687498],[10.828906250000045,46.775244140625034],[10.927343750000034,46.76948242187501],[10.993261718750034,46.77700195312502],[11.02509765625004,46.796972656250006],[11.063476562500057,46.85913085937497],[11.133886718750006,46.93618164062505],[11.244433593750045,46.975683593750006],[11.433203125000063,46.983056640624994],[11.527539062500011,46.99741210937498],[11.775683593750017,46.986083984375],[12.169433593750028,47.082128906250006],[12.19716796875008,47.075],[12.201269531250034,47.060888671875034],[12.165527343750028,47.028173828125034],[12.130761718750051,46.98476562499999],[12.154101562500017,46.93525390625004],[12.267968750000023,46.83588867187504],[12.330078125,46.75981445312499],[12.388281250000034,46.70263671874997],[12.479199218749983,46.672509765624966],[13.16875,46.572656249999966],[13.3515625,46.55791015624999],[13.490039062500045,46.55556640625002],[13.7,46.52026367187503],[13.679687500000057,46.46289062499997],[13.63710937500008,46.44853515624999],[13.563281250000045,46.41508789062502],[13.399511718749977,46.31752929687502],[13.420996093750006,46.212304687499994]]]]},"properties":{"name":"Italy","childNum":6}},{"geometry":{"type":"Polygon","coordinates":[[[-77.261474609375,18.45742187499999],[-76.349853515625,18.15185546875],[-76.21079101562499,17.913525390624997],[-76.524609375,17.8662109375],[-76.85322265625,17.97373046874999],[-76.94414062499999,17.848779296874994],[-77.11948242187499,17.880078125],[-77.20498046875,17.71494140624999],[-77.36142578124999,17.833691406249997],[-77.76816406249999,17.877392578124997],[-78.04448242187499,18.173828125],[-78.339501953125,18.28720703124999],[-78.21669921875,18.44809570312499],[-77.8734375,18.522216796875],[-77.261474609375,18.45742187499999]]]},"properties":{"name":"Jamaica","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-2.018652343749977,49.23125],[-2.23583984375,49.1763671875],[-2.220507812499989,49.266357421875],[-2.018652343749977,49.23125]]]},"properties":{"name":"Jersey","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[39.14541015625002,32.12451171875],[38.9970703125,32.007470703124994],[38.96230468750002,31.994921875],[38.37548828125,31.847460937499996],[38.111425781250006,31.781152343749994],[37.49335937500001,31.625878906249994],[37.215625,31.556103515624997],[36.95859375,31.491503906249996],[37.980078125,30.5],[37.862890625,30.442626953125],[37.66972656250002,30.34814453125],[37.64990234375,30.330957031249994],[37.63359375000002,30.31328125],[37.55361328125002,30.144580078124996],[37.49072265625,30.01171875],[37.46923828125,29.995068359374997],[36.75527343750002,29.866015625],[36.70390625000002,29.831640625],[36.591796875,29.66611328125],[36.47607421875,29.4951171875],[36.2828125,29.355371093749994],[36.068457031250006,29.200537109375],[34.95078125,29.353515625],[34.97343750000002,29.555029296875],[35.45058593750002,31.479296875],[35.57207031250002,32.237890625],[35.55146484375001,32.3955078125],[35.56904296875001,32.619873046875],[35.572851562500006,32.640869140625],[35.78730468750001,32.734912109374996],[36.3720703125,32.3869140625],[36.818359375,32.317285156249994],[38.773535156250006,33.372216796874994],[39.04140625000002,32.3056640625],[39.24746093750002,32.350976562499994],[39.29277343750002,32.24384765625],[39.14541015625002,32.12451171875]]]},"properties":{"name":"Jordan","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[123.88867187499997,24.280126953124977],[123.67978515625012,24.317773437500023],[123.77148437499997,24.41445312499999],[123.93486328125002,24.362011718749983],[123.88867187499997,24.280126953124977]]],[[[124.29316406250004,24.515917968750074],[124.13574218750003,24.347607421874983],[124.08476562500002,24.435839843750017],[124.30195312500004,24.58710937500001],[124.29316406250004,24.515917968750074]]],[[[125.44414062500002,24.7431640625],[125.26894531250005,24.732519531250063],[125.28359375,24.871923828125034],[125.44414062500002,24.7431640625]]],[[[128.25878906249997,26.65278320312501],[127.86708984375,26.442480468749977],[127.80361328125005,26.152539062499983],[127.653125,26.0947265625],[127.90722656250003,26.69360351562497],[128.09765624999997,26.66777343749996],[128.25488281249997,26.88188476562496],[128.25878906249997,26.65278320312501]]],[[[128.99814453125012,27.720800781250006],[128.90000000000012,27.727783203125],[128.9076171875,27.897998046875045],[128.99814453125012,27.720800781250006]]],[[[129.45253906250005,28.20898437499997],[129.3664062500001,28.127734375000045],[129.16464843750012,28.24975585937503],[129.68955078125012,28.517480468750023],[129.45253906250005,28.20898437499997]]],[[[130.6227539062501,30.262988281250017],[130.44560546875002,30.264697265625017],[130.38808593750005,30.38818359375003],[130.49716796875006,30.465527343749983],[130.64355468749997,30.388964843750017],[130.6227539062501,30.262988281250017]]],[[[130.95976562500007,30.39692382812504],[130.87031250000004,30.444238281249994],[131.06035156250007,30.828466796875006],[130.95976562500007,30.39692382812504]]],[[[130.38105468750004,32.42373046875002],[130.24169921874997,32.462792968749994],[130.46142578124997,32.515722656250034],[130.38105468750004,32.42373046875002]]],[[[130.08251953124997,32.22968750000001],[129.9601562500001,32.24375],[130.00976562499997,32.521630859374994],[130.16777343750002,32.54121093749998],[130.19951171875002,32.34057617187506],[130.08251953124997,32.22968750000001]]],[[[128.66533203125002,32.783886718749955],[128.89453124999997,32.65214843750002],[128.69296875000012,32.60473632812506],[128.66533203125002,32.783886718749955]]],[[[129.07695312500002,32.84028320312498],[128.99726562500004,32.95185546874998],[129.10976562500005,33.13256835937503],[129.18193359375002,32.99311523437504],[129.07695312500002,32.84028320312498]]],[[[129.49179687500006,33.22304687499999],[129.37041015625002,33.176025390625],[129.56992187500006,33.36103515625004],[129.49179687500006,33.22304687499999]]],[[[129.79570312500007,33.74882812499999],[129.67480468749997,33.73969726562498],[129.71728515624997,33.8583984375],[129.79570312500007,33.74882812499999]]],[[[131.17460937500007,33.602587890625045],[131.69628906250003,33.60283203124999],[131.53740234375007,33.274072265624994],[131.89658203125006,33.25458984375001],[131.8478515625001,33.118066406249994],[132.0021484375001,32.882373046875045],[131.6603515625001,32.465625],[131.33720703125007,31.4046875],[131.07080078124997,31.436865234374977],[131.09843750000002,31.256152343750017],[130.68574218750004,31.01513671875003],[130.77626953125,31.70629882812497],[130.65507812500002,31.71840820312505],[130.5560546875,31.563085937500034],[130.58876953125,31.178515625000017],[130.20068359374997,31.291894531250023],[130.14726562500002,31.40849609374996],[130.2941406250001,31.45068359375003],[130.3219726562501,31.601464843750023],[130.18789062500005,31.768847656250017],[130.19443359375012,32.090771484374955],[130.64052734375005,32.61923828124998],[130.49785156250002,32.65693359375001],[130.547265625,32.83159179687499],[130.2375,33.177636718749966],[130.12685546875005,33.10483398437506],[130.175,32.851318359375],[130.32646484375002,32.852636718750006],[130.34042968750012,32.70185546875004],[130.05410156250005,32.770800781250045],[129.76855468749997,32.57099609375001],[129.82675781250006,32.72534179687503],[129.67910156250005,33.059960937499966],[129.99169921875003,32.85156249999997],[129.58007812500003,33.23627929687501],[129.61015625000002,33.34365234375005],[129.844140625,33.32177734375003],[129.82568359374997,33.43701171875006],[130.36503906250007,33.634472656249955],[130.4837890625,33.834619140624966],[130.715625,33.92778320312502],[130.953125,33.87202148437504],[131.17460937500007,33.602587890625045]]],[[[132.266015625,33.945166015625006],[132.44492187500006,33.91318359374998],[132.20878906250007,33.87285156250002],[132.266015625,33.945166015625006]]],[[[129.27949218750004,34.123388671875006],[129.18642578125,34.14501953125006],[129.21484374999997,34.320654296875034],[129.3371093750001,34.284765625],[129.27949218750004,34.123388671875006]]],[[[134.35742187500003,34.25634765625],[134.6375,34.22661132812499],[134.73886718750012,33.82050781250001],[134.37705078125012,33.60839843749997],[134.18164062500003,33.24721679687502],[133.95869140625004,33.44833984375006],[133.63203125000004,33.51098632812503],[133.28593750000007,33.35996093749998],[132.97724609375004,32.84199218749998],[132.80429687500006,32.75200195312502],[132.6417968750001,32.76245117187503],[132.70898437500003,32.90249023437505],[132.49511718749997,32.91660156249998],[132.41279296875004,33.43046875],[132.0326171875,33.339990234374994],[132.64306640624997,33.68994140624997],[132.93515625000006,34.09531250000006],[133.19306640625004,33.93320312499998],[133.58203124999997,34.01713867187502],[133.60263671875006,34.24384765625001],[133.94833984375006,34.34804687500002],[134.35742187500003,34.25634765625]]],[[[134.35185546875002,34.48364257812503],[134.25185546875,34.42304687500004],[134.18212890625003,34.51923828124998],[134.35185546875002,34.48364257812503]]],[[[134.9328125000001,34.28813476562499],[134.82441406250004,34.202929687500045],[134.66787109375005,34.294140624999955],[135.00468750000002,34.54404296874998],[134.9328125000001,34.28813476562499]]],[[[129.38564453125,34.35366210937502],[129.26669921875012,34.37045898437506],[129.45107421875005,34.68657226562499],[129.38564453125,34.35366210937502]]],[[[133.37050781250005,36.203857421875],[133.23925781249997,36.178759765625045],[133.20615234375006,36.293408203124955],[133.29570312500002,36.34013671874996],[133.37050781250005,36.203857421875]]],[[[138.34404296875007,37.822119140625006],[138.22519531250006,37.82939453124996],[138.25,38.078466796875006],[138.50361328125004,38.31591796875006],[138.45361328124997,38.07568359375006],[138.57519531249997,38.065527343750034],[138.34404296875007,37.822119140625006]]],[[[141.22929687500007,41.37265625],[141.45546875000005,41.404736328124955],[141.43046875000002,40.72333984374998],[141.7970703125001,40.29116210937502],[141.97695312500005,39.428808593750034],[141.90078125,39.111328125],[141.5462890625,38.762841796874966],[141.4674804687501,38.404150390625006],[141.10839843750003,38.33793945312502],[140.9621093750001,38.148876953124955],[141.00166015625004,37.11464843750002],[140.57353515625007,36.23134765625002],[140.87402343749997,35.72495117187506],[140.457421875,35.51025390625],[140.35468750000004,35.18144531249999],[139.8439453125001,34.914892578125034],[139.82646484375002,35.29667968750002],[140.096875,35.58515624999998],[139.83476562500002,35.658056640625006],[139.65000000000012,35.40913085937501],[139.675,35.149267578125006],[139.47441406250002,35.298535156249955],[139.24941406250005,35.27802734375004],[139.08603515625006,34.83916015624999],[138.8375,34.619238281250034],[138.80273437499997,34.97480468749998],[138.90361328125002,35.02524414062506],[138.71962890625,35.12407226562502],[138.18906250000012,34.596337890624994],[137.543359375,34.66420898437505],[137.06171875000004,34.58281249999999],[137.27519531250002,34.77250976562499],[136.96328125000005,34.83491210937501],[136.87128906250004,34.733105468749955],[136.89707031250006,35.03554687500002],[136.80419921874997,35.05029296875],[136.53300781250007,34.678369140624994],[136.8802734375,34.43359375000006],[136.8537109375001,34.324072265625034],[136.32988281250007,34.17685546875006],[135.91621093750004,33.561718749999955],[135.69531250000003,33.48696289062502],[135.4528320312501,33.55336914062505],[135.12792968749997,34.006982421874994],[135.10009765624997,34.288378906250045],[135.41591796875,34.61748046875002],[134.74003906250007,34.765234375],[134.246875,34.71386718750003],[133.96826171874997,34.52729492187504],[133.14238281250002,34.30244140624998],[132.65654296875007,34.24609375000003],[132.31259765625006,34.32495117187503],[132.14648437499997,33.83876953125002],[131.74052734375007,34.05205078125002],[130.91884765625,33.97573242187502],[130.88925781250012,34.261816406250034],[131.00419921875007,34.39257812500003],[131.35439453125,34.41318359375006],[132.92294921875006,35.511279296875045],[133.98125,35.50722656250002],[135.17431640625003,35.74707031250003],[135.32695312500002,35.52553710937502],[135.68027343750006,35.503125],[135.903125,35.60688476562498],[136.09531250000006,35.767626953125045],[136.06748046875006,36.11684570312505],[136.69814453125005,36.742041015625034],[136.84345703125004,37.38212890624999],[137.32265625,37.52207031249998],[136.89990234375003,37.11767578125],[137.01669921875006,36.83720703124999],[137.24628906250004,36.753173828125],[137.5140625,36.95156250000002],[138.31992187500012,37.21840820312502],[138.88505859375007,37.84394531250001],[139.36386718750006,38.09902343750002],[139.80195312500004,38.881591796875],[140.06474609375002,39.624414062499994],[139.99472656250006,39.855078125],[139.74150390625002,39.92084960937498],[140.01113281250005,40.26035156250006],[139.92285156250003,40.59843750000002],[140.28125,40.84609375000002],[140.3444335937501,41.203320312499955],[140.62763671875004,41.195410156250034],[140.74863281250012,40.830322265625],[140.93603515625003,40.940771484375034],[141.1185546875,40.88227539062501],[141.24423828125006,41.20561523437499],[140.80058593750002,41.138818359374966],[140.80185546875012,41.253662109375],[140.9369140625,41.50556640624998],[141.22929687500007,41.37265625]]],[[[139.48125,42.08100585937498],[139.43134765625004,42.19956054687498],[139.55839843750002,42.235205078125034],[139.48125,42.08100585937498]]],[[[141.29541015625003,45.11933593750001],[141.14531250000002,45.153906250000034],[141.19375,45.24785156249999],[141.29541015625003,45.11933593750001]]],[[[141.07275390624997,45.33286132812498],[141.03398437500007,45.26933593750002],[140.97167968749997,45.465478515624994],[141.07275390624997,45.33286132812498]]],[[[143.82431640625012,44.11699218749999],[144.71523437500005,43.92797851562503],[145.36953125000005,44.32739257812506],[145.13964843750003,43.6625],[145.34082031249997,43.30253906249999],[145.83300781249997,43.38593750000001],[144.92138671874997,43.00092773437498],[143.96933593750006,42.88139648437499],[143.42949218750002,42.41889648437498],[143.2365234375001,42.000195312499955],[141.85136718750007,42.57905273437501],[141.40664062500005,42.54692382812496],[140.98613281250002,42.34213867187498],[140.70976562500002,42.555615234374955],[140.48046875000003,42.559375],[140.32666015625003,42.29335937499999],[141.15097656250012,41.80507812499999],[140.99951171874997,41.73740234375006],[140.65986328125004,41.815576171874994],[140.3849609375001,41.51928710937503],[140.08515625000004,41.43408203125],[139.99531250000004,41.57641601562503],[140.10839843749997,41.912939453125034],[139.83544921874997,42.278076171875],[139.86015625000002,42.58173828125004],[140.43222656250012,42.95410156250006],[140.39238281250002,43.303125],[141.13818359374997,43.17993164062506],[141.37412109375006,43.279638671875006],[141.7609375000001,44.482519531250034],[141.58300781250003,45.15595703125001],[141.66796874999997,45.401269531249966],[141.93769531250004,45.509521484375],[142.88476562499997,44.670117187499955],[143.82431640625012,44.11699218749999]]]]},"properties":{"name":"Japan","childNum":28}},{"geometry":{"type":"Polygon","coordinates":[[[77.04863281249999,35.109912109374996],[76.927734375,35.346630859375],[76.88222656250002,35.4357421875],[76.81279296874999,35.571826171874996],[76.76689453124999,35.66171875],[76.87890625,35.61328125],[77.09003906250001,35.552050781249996],[77.29482421875002,35.508154296875],[77.44648437500001,35.4755859375],[77.57255859374999,35.471826171874994],[77.72402343750002,35.48056640625],[77.79941406250003,35.495898437499996],[77.42343750000003,35.302587890625],[77.16855468750003,35.171533203124994],[77.04863281249999,35.109912109374996]]]},"properties":{"name":"Siachen Glacier","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[50.184472656249994,44.854638671874994],[49.99511718750003,44.93696289062498],[50.10986328124997,45.08193359375002],[50.038867187500074,44.949121093749966],[50.184472656249994,44.854638671874994]]],[[[87.32285156250012,49.085791015625006],[86.8083007812501,49.04970703125002],[86.54941406250012,48.52861328125002],[85.7494140625,48.38505859374999],[85.52597656250006,47.915625],[85.65664062500005,47.254638671875],[85.484765625,47.06352539062496],[84.78613281249997,46.83071289062505],[84.66660156250006,46.97236328125004],[84.016015625,46.97050781250002],[83.02949218750004,47.18593750000002],[82.31523437500002,45.59492187499998],[82.61162109375007,45.424267578124955],[82.52148437500003,45.12548828125],[82.26660156249997,45.21909179687498],[81.94492187500006,45.16083984375001],[81.69199218750012,45.34936523437497],[80.05917968750012,45.006445312500006],[79.871875,44.88378906249997],[80.48154296875006,44.71464843749999],[80.35527343750002,44.09726562500006],[80.78574218750006,43.16157226562504],[80.39023437500006,43.043115234374966],[80.53896484375005,42.873486328124955],[80.20224609375012,42.73447265624998],[80.209375,42.190039062500006],[80.07128906249997,42.302978515625],[79.92109375000004,42.41313476562496],[79.49013671875,42.45756835937496],[79.42822265624997,42.483496093750006],[79.20302734375005,42.66601562499997],[79.16484375000007,42.759033203125],[79.1266601562501,42.775732421875034],[76.98808593750007,42.97358398437501],[76.64648437500003,42.928808593750034],[76.50917968750005,42.91889648437498],[75.9322265625,42.92851562499999],[75.84033203125003,42.9375],[75.78955078124997,42.93291015624999],[75.68173828125,42.83046875],[75.04765625000007,42.904394531250034],[74.20908203125006,43.24038085937502],[73.88603515625002,43.132568359375],[73.55625,43.002783203125006],[73.45019531249997,42.703027343749966],[73.421875,42.59350585937503],[73.49296875000007,42.409033203125034],[73.41162109375003,42.41977539062498],[73.316015625,42.46699218750001],[73.2829101562501,42.50410156250004],[72.85507812500006,42.561132812500006],[72.75292968750003,42.63789062500001],[72.54316406250004,42.67773437500006],[72.27578125,42.757666015625006],[71.76054687500002,42.82148437500004],[71.5142578125,42.766943359375006],[71.42207031250004,42.78315429687504],[71.25664062500002,42.733544921874966],[70.89287109375007,42.339990234374994],[70.94677734374997,42.24868164062505],[69.15361328125002,41.42524414062498],[68.58408203125,40.876269531250045],[68.57265625,40.62265624999998],[68.29189453125,40.656103515625034],[68.04765625000007,40.80927734374998],[68.11308593750007,41.02861328124999],[67.9357421875001,41.19658203125002],[66.70966796875004,41.17915039062501],[66.49863281250006,41.99487304687503],[66.00957031250007,42.00488281250003],[66.1002929687501,42.99082031249998],[65.80302734375002,42.87695312500006],[65.49619140625,43.310546875],[64.9054687500001,43.714697265625006],[64.44316406250007,43.55117187499999],[63.20703125000003,43.62797851562502],[61.99023437500003,43.492138671874955],[61.007910156250006,44.39379882812497],[58.555273437500006,45.55537109375001],[55.97568359375006,44.99492187499996],[55.97744140625005,41.32221679687504],[55.434375,41.296289062499994],[54.85380859375002,41.965185546875006],[54.120996093749994,42.335205078125],[53.0558593750001,42.14775390624999],[52.4938476562501,41.780371093750034],[52.59658203125005,42.760156249999966],[51.898242187500074,42.86962890624997],[51.61601562500002,43.15844726562503],[51.29541015624997,43.17412109375002],[51.30175781249997,43.48237304687501],[50.8307617187501,44.192773437499966],[50.331152343750006,44.32548828125002],[50.25292968749997,44.461523437500006],[50.409472656250074,44.6240234375],[51.543554687500006,44.53100585937506],[51.009375,44.92182617187501],[51.4157226562501,45.35786132812501],[53.20039062500004,45.33198242187498],[52.77382812499999,45.57275390625],[53.13525390625003,46.19165039062497],[53.069433593750006,46.85605468750006],[52.48320312500002,46.99067382812504],[52.13828125,46.82861328124997],[51.178027343750074,47.110156250000045],[49.886328125,46.59565429687504],[49.347460937500074,46.51914062499998],[49.232226562500074,46.33715820312503],[48.54121093750004,46.60561523437502],[48.558398437500074,46.75712890624999],[48.959375,46.77460937499998],[48.16699218750003,47.70878906249996],[47.48193359374997,47.80390624999998],[47.292382812499994,47.74091796875004],[47.06464843750004,48.23247070312499],[46.660937500000074,48.41225585937502],[46.70263671875003,48.80556640625002],[47.031347656250006,49.150292968749994],[46.80205078125002,49.36708984375002],[46.889550781249994,49.69697265625001],[47.42919921874997,50.35795898437502],[47.7057617187501,50.37797851562502],[48.33496093750003,49.858251953125006],[48.7589843750001,49.92832031250006],[48.625097656250006,50.61269531250005],[49.32343750000004,50.851708984374966],[49.49804687500003,51.08359375000006],[50.246875,51.28950195312498],[50.79394531249997,51.729199218749955],[51.16347656250005,51.6474609375],[51.344531250000074,51.47534179687503],[52.21914062499999,51.709375],[52.57119140625005,51.481640624999955],[53.33808593750004,51.48237304687504],[54.139746093750006,51.04077148437503],[54.555273437500006,50.535791015624994],[54.64160156250003,51.011572265625034],[55.68623046875004,50.582861328125006],[56.49140625000004,51.01953124999997],[57.01171874999997,51.06518554687503],[57.44218750000002,50.88886718749998],[57.83886718750003,51.091650390625006],[58.359179687500074,51.063818359375034],[58.88369140625005,50.694433593750006],[59.4523437500001,50.62041015625002],[59.523046875,50.492871093749955],[59.812402343749994,50.58203125],[60.05859374999997,50.850292968749955],[60.42480468749997,50.67915039062498],[60.94228515625005,50.69550781250004],[61.38945312500002,50.86103515625001],[61.55468750000003,51.32460937500005],[60.464746093749994,51.651171875000045],[60.03027343749997,51.93325195312505],[60.99453125000005,52.33686523437504],[60.77441406249997,52.67578124999997],[61.047460937500006,52.97246093750002],[62.08271484375004,53.00541992187499],[61.65986328125004,53.22846679687504],[61.19921874999997,53.28715820312502],[61.22890625,53.445898437500006],[61.53496093750002,53.52329101562506],[60.97949218749997,53.62172851562505],[61.231054687500006,54.01948242187498],[61.92871093750003,53.94648437500004],[64.46123046875002,54.38417968750002],[65.08837890624997,54.340185546875034],[65.476953125,54.62329101562497],[68.15585937500006,54.97670898437505],[68.20625,55.16093750000002],[68.9772460937501,55.389599609374955],[70.18242187500002,55.162451171875034],[70.73808593750007,55.30517578125],[71.18554687500003,54.59931640624998],[71.09316406250005,54.21220703124999],[72.00449218750006,54.20566406249998],[72.18603515625003,54.32563476562501],[72.44677734375003,53.94184570312498],[72.62226562500004,54.13432617187502],[73.22988281250005,53.957812500000045],[73.71240234375003,54.04238281250002],[73.30566406250003,53.707226562499955],[73.40693359375004,53.44755859374999],[73.85898437500006,53.61972656249998],[74.35156250000003,53.487646484375006],[74.45195312500007,53.64726562500002],[75.22021484374997,53.89379882812506],[75.43720703125004,54.08964843749999],[76.8373046875,54.4423828125],[76.65458984375007,54.14526367187503],[76.42167968750007,54.151513671874966],[76.48476562500005,54.02255859374998],[77.85996093750006,53.269189453124994],[79.98623046875,50.774560546874966],[80.42363281250002,50.94628906249997],[80.44804687500002,51.18334960937503],[80.73525390625,51.29340820312498],[81.12724609375002,51.19106445312502],[81.0714843750001,50.96875],[81.38828125000006,50.95649414062501],[81.46591796875006,50.73984375],[82.49394531250007,50.72758789062499],[82.76083984375012,50.89335937500002],[83.35732421875005,50.99458007812504],[83.94511718750007,50.774658203125],[84.32324218749997,50.239160156249966],[84.9894531250001,50.061425781249994],[85.2326171875001,49.61582031249998],[86.1808593750001,49.49931640624996],[86.67548828125004,49.77729492187501],[86.62646484374997,49.56269531250001],[87.32285156250012,49.085791015625006]]]]},"properties":{"name":"Kazakhstan","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[35.325292968750006,5.364892578124994],[35.745019531249994,5.343994140625],[35.80029296874997,5.156933593749983],[35.77929687499997,5.105566406250006],[35.756152343750074,4.950488281250031],[35.76308593750005,4.808007812500051],[36.02197265625003,4.468115234374991],[36.90556640625002,4.411474609374991],[37.15458984375002,4.254541015624994],[37.944921875,3.746728515625023],[38.0861328125001,3.648828124999966],[38.22529296875004,3.61899414062502],[38.45156250000005,3.604833984374977],[38.608007812500006,3.600097656249986],[39.49443359375002,3.45610351562496],[39.65751953125002,3.577832031249983],[39.79033203125002,3.754248046875034],[39.8421875,3.851464843750037],[40.765234375,4.273046875000034],[41.02080078125002,4.057470703124991],[41.22089843750004,3.943554687499969],[41.372460937499994,3.94619140624998],[41.48193359375003,3.96328125],[41.737695312499994,3.979052734375003],[41.88398437500004,3.977734375000011],[41.6134765625001,3.59047851562498],[41.34179687499997,3.20166015625],[40.964453125,2.814648437500026],[40.9787109375001,-0.870312500000011],[41.249804687500074,-1.220507812499946],[41.4269531250001,-1.449511718749974],[41.521875,-1.572265625000028],[41.53271484374997,-1.695312499999957],[41.26748046875005,-1.945019531250026],[40.889746093750006,-2.023535156250034],[40.89824218750002,-2.269921874999966],[40.64414062500006,-2.53945312499998],[40.22246093750002,-2.688378906250037],[40.1154296875001,-3.250585937499991],[39.8609375,-3.576757812500006],[39.49091796875004,-4.478417968750023],[39.221777343750006,-4.692382812500014],[37.608203125000074,-3.497070312500028],[37.643847656250074,-3.045410156250028],[33.90322265625005,-1.002050781250034],[33.94316406250002,0.173779296874969],[34.160937500000074,0.605175781250026],[34.4108398437501,0.867285156250034],[34.48173828125002,1.042138671875051],[34.79863281250002,1.24453125],[34.976464843749994,1.719628906250051],[34.97753906249997,1.861914062499991],[34.9640625000001,2.06240234374998],[34.8830078125001,2.417919921875026],[34.90576171875003,2.4796875],[34.44785156250006,3.163476562500037],[34.40722656249997,3.357519531250034],[34.39941406249997,3.412695312500006],[34.44179687499999,3.60625],[34.43769531250004,3.650585937499969],[34.392871093750074,3.691503906250048],[34.26708984375003,3.733154296875],[34.16503906250003,3.812988281250014],[34.18574218750004,3.869775390625037],[34.13203125000004,3.889160156249986],[33.97607421874997,4.220214843750028],[34.176855468750006,4.419091796875037],[34.38017578125002,4.620654296874974],[34.6398437500001,4.875488281250028],[34.878320312499994,5.109570312500026],[35.08447265624997,5.31186523437502],[35.268359375000074,5.492285156250006],[35.325292968750006,5.364892578124994]]]},"properties":{"name":"Kenya","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[72.63994140625002,39.385986328125],[72.22998046875,39.20751953125],[72.14736328125002,39.2607421875],[72.08417968750001,39.31064453125],[72.04277343750002,39.3521484375],[71.77861328125002,39.277978515624994],[71.73222656250002,39.422998046874994],[71.50332031250002,39.478808593749996],[71.51738281250002,39.553857421874994],[71.50302734375,39.582177734374994],[71.4703125,39.603662109374994],[70.79931640625,39.3947265625],[70.50117187500001,39.587353515625],[69.29765625000002,39.524804687499994],[69.2447265625,39.827099609375],[69.27880859375,39.917773437499996],[69.3072265625,39.968554687499996],[69.36542968750001,39.947070312499996],[69.43193359375002,39.909765625],[69.47626953125001,39.919726562499996],[69.47099609375002,39.990625],[69.46875,40.020751953125],[69.966796875,40.20224609375],[70.59921875,39.974511718749994],[70.990625,40.2548828125],[71.3046875,40.286914062499996],[71.69248046875,40.15234375],[72.13125,40.438623046874994],[72.3892578125,40.427392578124994],[72.40205078125001,40.578076171875],[72.6041015625,40.525439453124996],[73.13212890625002,40.82851562499999],[72.65830078125,40.869921875],[72.36406250000002,41.04345703125],[72.294921875,41.039941406249994],[72.21308593750001,41.0142578125],[72.18730468750002,41.025927734374996],[72.18095703125002,41.118457031249996],[72.16425781250001,41.173730468749994],[72.11542968750001,41.186572265624996],[72.05244140625001,41.16474609375],[71.95849609375,41.187060546874996],[71.87861328125001,41.19501953125],[71.8580078125,41.311376953125],[71.79248046875,41.413134765624996],[71.75771484375002,41.428027343749996],[71.70068359375,41.454003906249994],[71.66494140625002,41.5412109375],[71.6375,41.5341796875],[71.60224609375001,41.503271484375],[71.60625,41.367431640625],[71.54560546875001,41.308056640625],[71.5,41.307470703125],[71.4208984375,41.34189453125],[71.40839843750001,41.136035156249996],[71.39306640625,41.123388671875],[71.11074218750002,41.152636718749996],[70.86044921875,41.224902343749996],[70.734375,41.400537109374994],[70.18095703125002,41.571435546874994],[70.85664062500001,42.030810546874996],[71.0322265625,42.077783203124994],[71.228515625,42.162890625],[71.23232421875002,42.186279296875],[71.21269531250002,42.206445312499994],[71.12998046875,42.25],[71.03603515625002,42.28466796875],[70.97900390625,42.266552734375],[70.94677734375,42.248681640624994],[70.89287109375002,42.339990234374994],[71.25664062500002,42.733544921874994],[71.42207031250001,42.783154296875],[71.5142578125,42.766943359375],[71.76054687500002,42.821484375],[72.16181640625001,42.760693359375],[72.27578125000002,42.757666015625],[72.54316406250001,42.677734375],[72.7529296875,42.637890625],[72.855078125,42.5611328125],[73.28291015625001,42.5041015625],[73.316015625,42.4669921875],[73.41162109375,42.419775390625],[73.49296875000002,42.409033203125],[73.421875,42.593505859375],[73.4501953125,42.703027343749994],[73.55625,43.002783203125],[73.88603515625002,43.132568359375],[74.20908203125,43.240380859374994],[75.04765625000002,42.90439453125],[75.68173828125,42.83046875],[75.78955078125,42.932910156249996],[75.84033203125,42.9375],[75.9322265625,42.928515625],[76.50917968750002,42.918896484375],[76.646484375,42.92880859375],[76.98808593749999,42.973583984375],[79.12666015625001,42.775732421875],[79.20302734375002,42.666015625],[79.29550781250003,42.604833984375],[79.36777343750003,42.547216796875],[79.42822265625,42.48349609375],[79.92109375000001,42.413134765624996],[80.0712890625,42.302978515625],[80.209375,42.1900390625],[80.24619140625003,42.059814453125],[80.23515624999999,42.04345703125],[80.21621093750002,42.032421875],[79.90966796875,42.014990234375],[79.84042968750003,41.995751953124994],[79.76611328125,41.898876953125],[78.74257812500002,41.56005859375],[78.54316406250001,41.4595703125],[78.44287109375,41.417529296874996],[78.36240234375003,41.371630859374996],[78.34628906250003,41.2814453125],[78.12343750000002,41.075634765625],[77.95644531250002,41.050683593749994],[77.81523437499999,41.055615234375],[77.71933593750003,41.024316406249994],[77.58173828125001,40.9927734375],[76.98662109374999,41.03916015625],[76.90771484375,41.024169921875],[76.82402343749999,40.982324218749994],[76.70839843750002,40.818115234375],[76.6611328125,40.779638671875],[76.63984375000001,40.742236328124996],[76.62216796875003,40.662353515625],[76.57792968749999,40.577880859375],[76.48017578125001,40.449511718749996],[76.39638671875002,40.389794921874994],[76.31855468750001,40.35224609375],[76.25830078125,40.43076171875],[75.87197265625002,40.30322265625],[75.67714843750002,40.305810546874994],[75.55556640625002,40.6251953125],[75.52080078125002,40.6275390625],[75.24101562500002,40.480273437499996],[75.111328125,40.4541015625],[75.0044921875,40.449511718749996],[74.865625,40.493505859375],[74.80126953125,40.428515625],[74.83046875000002,40.32851562499999],[74.41191406250002,40.13720703125],[74.24267578125,40.092041015625],[74.08515625000001,40.07431640625],[73.99160156250002,40.043115234374994],[73.93876953125002,39.978808593749996],[73.88457031250002,39.8779296875],[73.85625,39.828662109374996],[73.83535156250002,39.800146484375],[73.83974609375002,39.762841796874994],[73.88251953125001,39.71455078125],[73.9146484375,39.606494140624996],[73.90712890625002,39.57851562499999],[73.87275390625001,39.53330078125],[73.82294921875001,39.48896484375],[73.71572265625002,39.462255859375],[73.63164062500002,39.448876953124994],[73.47041015625001,39.460595703124994],[73.38740234375001,39.442724609375],[73.33613281250001,39.412353515625],[73.2349609375,39.374560546874996],[73.10927734375002,39.3619140625],[72.63994140625002,39.385986328125]],[[70.66416015625,39.85546875],[70.56708984375001,39.866601562499994],[70.49775390625001,39.882421875],[70.48281250000002,39.882714843749994],[70.4892578125,39.863037109375],[70.5595703125,39.790917968749994],[70.61210937500002,39.786767578124994],[70.70166015625,39.82529296875],[70.66416015625,39.85546875]],[[71.20615234375,39.892578125],[71.22871093750001,40.048144531249996],[71.08037109375002,40.079882812499996],[71.02412109375001,40.149169921875],[71.00546875,40.152294921875],[70.96064453125001,40.08798828125],[71.04482421875002,39.992529296875],[71.04365234375001,39.976318359375],[71.01171875,39.8951171875],[71.06425781250002,39.884912109374994],[71.15625,39.883447265624994],[71.20615234375,39.892578125]]]},"properties":{"name":"Kyrgyzstan","childNum":3}},{"geometry":{"type":"Polygon","coordinates":[[[104.42636718750006,10.411230468749991],[103.87050781250005,10.655126953125034],[103.58710937500004,10.552197265625026],[103.54042968750005,10.668701171875043],[103.721875,10.890136718750043],[103.5324218750001,11.146679687499997],[103.35361328125006,10.921582031250054],[103.15283203124997,10.913720703125051],[103.12548828124997,11.460644531250011],[102.9486328125,11.773486328124974],[102.93388671875002,11.706689453125037],[102.73662109375007,12.089794921875011],[102.75566406250002,12.42626953125],[102.49960937500012,12.669970703125003],[102.33632812500005,13.560302734375014],[102.546875,13.585693359375043],[102.90927734375006,14.136718750000028],[103.19941406250004,14.332617187499977],[104.77900390625004,14.427832031250006],[105.07412109375005,14.227441406250037],[105.12597656250003,14.280957031250011],[105.16914062500004,14.336083984374966],[105.1833007812501,14.346240234374989],[105.18554687500003,14.319091796874972],[105.20703125000003,14.259375],[105.24570312500006,14.200537109374977],[105.35019531250006,14.109570312500011],[105.53154296875007,14.156152343749994],[105.73974609375003,14.084960937500057],[105.83144531250005,13.976611328125003],[105.9044921875001,13.924511718750054],[106.06679687500005,13.921191406250003],[106.12470703125004,14.049121093750031],[106.09667968749997,14.127099609375023],[106.00410156250004,14.262890624999983],[105.97890625,14.343017578125043],[106.00839843750012,14.357177734375],[106.1652343750001,14.372363281249989],[106.19072265625007,14.388134765624997],[106.22539062500002,14.476220703125009],[106.26796875,14.466210937500009],[106.35498046875003,14.454785156249997],[106.44697265625004,14.515039062500009],[106.50146484375003,14.578222656250006],[106.53115234375005,14.549414062499991],[106.5636718750001,14.505078125000026],[106.59921875000006,14.479394531250037],[106.66542968750005,14.441308593749994],[106.73818359375005,14.387744140625017],[106.78349609375002,14.335107421875037],[106.81992187500006,14.314697265625057],[106.91318359375006,14.329394531250031],[106.93808593750006,14.327343750000054],[106.99218750000003,14.391015624999966],[107.03017578125,14.425683593750009],[107.06240234375,14.415771484375043],[107.109375,14.416699218750054],[107.29267578125004,14.592382812500048],[107.37988281250003,14.555322265625051],[107.41474609375004,14.56289062499999],[107.51943359375005,14.705078125],[107.3314453125,14.126611328125009],[107.60546874999997,13.437792968750017],[107.47539062500002,13.030371093749963],[107.50644531250006,12.364550781250031],[107.39335937500002,12.260498046874972],[107.21210937500004,12.30400390624996],[106.70009765625,11.979296874999974],[106.41386718750002,11.9484375],[106.39921875000007,11.687011718750028],[106.0060546875001,11.758007812500011],[105.85146484375005,11.635009765625],[105.85605468750006,11.294287109375048],[106.16093750000002,11.037109375000057],[106.16396484375005,10.794921875],[105.85332031250007,10.86357421874996],[105.75507812500004,10.989990234375043],[105.40576171875003,10.95161132812504],[105.3146484375001,10.845166015625026],[105.04570312500002,10.911376953125014],[105.04638671874997,10.701660156250014],[104.85058593749997,10.534472656249974],[104.42636718750006,10.411230468749991]]]},"properties":{"name":"Cambodia","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-157.34213867187503,1.855566406250034],[-157.17578125,1.73984375],[-157.57895507812498,1.902050781249997],[-157.43583984374993,1.84726562500002],[-157.365185546875,1.94609375],[-157.44189453125003,2.025048828125009],[-157.321875,1.968554687500045],[-157.34213867187503,1.855566406250034]]],[[[-159.3390625,3.923535156249983],[-159.27475585937503,3.796582031250054],[-159.40903320312503,3.87324218750004],[-159.3390625,3.923535156249983]]]]},"properties":{"name":"Kiribati","childNum":2}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[126.32695312500002,33.2236328125],[126.16562500000012,33.31201171875],[126.33769531250002,33.46040039062501],[126.90117187500002,33.51513671874997],[126.87285156250002,33.34116210937498],[126.32695312500002,33.2236328125]]],[[[126.23369140625002,34.370507812499994],[126.12285156250002,34.443945312500034],[126.34384765625012,34.544921875],[126.23369140625002,34.370507812499994]]],[[[126.17197265625006,34.73115234375001],[126.00751953125004,34.86748046874999],[126.07841796875002,34.914843750000045],[126.17197265625006,34.73115234375001]]],[[[128.0658203125,34.80585937500004],[128.05468750000003,34.70805664062502],[127.87343750000005,34.73496093749998],[127.8322265625001,34.87451171875],[128.0658203125,34.80585937500004]]],[[[128.74101562500007,34.798535156249955],[128.64667968750004,34.73686523437502],[128.48925781250003,34.86528320312496],[128.66796875000003,35.0087890625],[128.74101562500007,34.798535156249955]]],[[[126.52070312500004,37.73681640625003],[126.516015625,37.60468750000001],[126.42333984375003,37.62363281250006],[126.41162109374997,37.82265625000002],[126.52070312500004,37.73681640625003]]],[[[128.37460937500012,38.6234375],[129.41826171875002,37.059033203124955],[129.40351562500004,36.052148437499994],[129.57285156250006,36.05053710937503],[129.4191406250001,35.49785156249996],[129.07675781250006,35.12270507812502],[128.5109375000001,35.10097656250002],[128.44394531250012,34.87036132812503],[128.03623046875006,35.02197265625],[127.71484374999997,34.95468749999998],[127.71542968750012,34.72104492187498],[127.40429687499997,34.823095703125006],[127.47910156250012,34.625244140625],[127.324609375,34.463281249999966],[127.17343750000006,34.54614257812497],[127.24707031249997,34.755126953125],[126.89746093749997,34.438867187499966],[126.75478515625005,34.511865234374994],[126.53144531250004,34.31425781249999],[126.26445312500002,34.67324218750002],[126.52451171875006,34.697900390624966],[126.59335937500012,34.824365234374994],[126.42070312500002,34.823388671874966],[126.29111328125012,35.154150390625034],[126.61406250000007,35.57099609375004],[126.4884765625001,35.647070312500006],[126.75302734375006,35.871972656249994],[126.5404296875,36.166162109374966],[126.4876953125,36.69379882812498],[126.18085937500004,36.69160156249998],[126.16054687500005,36.77192382812501],[126.48701171875004,37.00747070312502],[126.78447265625007,36.94843749999998],[126.87207031249997,36.82446289062506],[126.97685546875002,36.93940429687501],[126.74638671875002,37.19355468750001],[126.63388671875012,37.78183593750006],[127.09033203125003,38.28388671875001],[128.03896484375,38.30854492187498],[128.37460937500012,38.6234375]]]]},"properties":{"name":"Korea","childNum":7}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[48.27539062499997,29.624316406250017],[48.17968750000003,29.611425781250063],[48.081445312499994,29.798925781250063],[48.1847656250001,29.978857421875034],[48.348242187500006,29.78266601562504],[48.27539062499997,29.624316406250017]]],[[[48.442480468750006,28.542919921874983],[47.671289062499994,28.53315429687504],[47.433203125,28.989550781250017],[46.53144531250004,29.09624023437499],[46.69375,29.259667968749966],[46.76933593750002,29.347460937500017],[46.90585937500006,29.5375],[47.14824218750002,30.0009765625],[47.64375,30.097314453125023],[47.75390624999997,30.076611328124955],[47.97871093750004,29.98281250000005],[48.00566406250002,29.835791015625034],[48.143457031249994,29.57246093750001],[47.96962890625005,29.61669921874997],[47.72265624999997,29.393017578124955],[48.0514648437501,29.355371093750023],[48.442480468750006,28.542919921874983]]]]},"properties":{"name":"Kuwait","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[102.12744140625011,22.37919921874999],[102.58251953125006,21.904296875000057],[102.66201171875008,21.676025390625057],[102.73857421875005,21.677929687500125],[102.77109375000015,21.70966796875001],[102.79824218750014,21.797949218750034],[102.81591796875,21.807373046875],[102.94960937500008,21.681347656250068],[102.85117187500009,21.26591796874999],[102.8837890625,21.202587890625068],[103.1044921875,20.89165039062499],[103.21074218749999,20.840625],[103.46357421874995,20.779833984375102],[103.6350585937501,20.697070312500102],[104.10136718750005,20.945507812500125],[104.1953125,20.91396484375008],[104.349609375,20.82109374999999],[104.58320312500001,20.646679687499955],[104.53271484375,20.554882812500125],[104.47861328124998,20.529589843750102],[104.40781250000015,20.485742187500023],[104.36777343750015,20.441406250000057],[104.39218750000015,20.424755859375068],[104.49619140625003,20.41367187499992],[104.61884765624995,20.374511718750114],[104.65644531250001,20.328515624999966],[104.66191406250005,20.289013671875125],[104.67695312500007,20.224707031249977],[104.69873046875006,20.205322265625114],[104.84785156250007,20.202441406250045],[104.88867187500006,20.169091796875023],[104.92919921874994,20.082812500000045],[104.92792968750007,20.01811523437499],[104.81513671875001,19.90400390625001],[104.80175781250011,19.836132812500068],[104.74316406250006,19.754736328124977],[104.58789062500006,19.61875],[104.54628906250014,19.610546875000068],[104.25986328125003,19.685498046875068],[104.06279296875005,19.678417968750068],[104.03203124999999,19.67514648437492],[104.0134765625001,19.646484374999943],[104.05156250000005,19.564160156250068],[104.06289062500002,19.482568359375136],[104.02753906250013,19.420458984375102],[103.93203125000002,19.366064453125034],[103.89638671875002,19.339990234375023],[103.89160156249994,19.30498046874999],[105.146484375,18.650976562499977],[105.14541015625014,18.616796874999977],[105.08701171875015,18.49624023437508],[105.11455078125005,18.405273437500057],[105.45820312500007,18.154296875000057],[105.51855468750011,18.077441406250045],[105.58847656250015,17.983691406249932],[105.69140625,17.737841796874932],[106.00625,17.415283203124943],[106.26953125,17.216796875000057],[106.33339843750002,17.14370117187508],[106.42597656250007,17.00253906250009],[106.50224609374999,16.9541015625],[106.52597656250003,16.876611328125023],[106.53369140625,16.821044921875057],[106.54619140625005,16.650732421874977],[106.65644531250013,16.492626953125125],[106.73955078124999,16.452539062500136],[106.79160156250015,16.490332031249977],[106.83242187500008,16.526269531250023],[106.85107421875,16.515625],[106.89277343750013,16.396533203125102],[106.93066406250006,16.353125],[107.39638671875008,16.04301757812499],[107.39199218750008,15.951660156250057],[107.36064453125005,15.921728515624977],[107.18886718750008,15.838623046875114],[107.16591796875002,15.802490234375],[107.27939453125003,15.618701171875045],[107.33876953125002,15.560498046875125],[107.56425781249999,15.3916015625],[107.62167968750015,15.309863281250045],[107.653125,15.255224609375091],[107.63369140625008,15.18984375000008],[107.58964843749999,15.118457031250102],[107.55527343750009,15.057031250000023],[107.48037109375014,14.979882812500136],[107.5046875000001,14.91591796875008],[107.52451171875003,14.871826171874943],[107.51376953124998,14.817382812500057],[107.51943359375008,14.705078125000114],[107.46513671875005,14.664990234375125],[107.41474609375007,14.56289062500008],[107.37988281250006,14.555322265625136],[107.29267578125007,14.592382812500034],[107.109375,14.416699218749955],[107.06240234375008,14.415771484374943],[107.03017578125008,14.425683593750023],[106.99218749999994,14.39101562500008],[106.93808593750015,14.327343750000068],[106.91318359375003,14.329394531249932],[106.81992187500003,14.314697265624943],[106.7834960937501,14.335107421875023],[106.73818359375008,14.387744140625102],[106.66542968750002,14.441308593750023],[106.59921875000003,14.479394531250136],[106.56367187500007,14.505078125000011],[106.53115234375002,14.549414062499977],[106.50146484375,14.578222656250034],[106.22539062500005,14.476220703125023],[106.1907226562501,14.388134765625011],[106.16523437500007,14.372363281249989],[106.00839843750009,14.357177734375114],[105.97890625000014,14.343017578125057],[106.00410156250013,14.262890625000068],[106.09667968750011,14.127099609375136],[106.12470703124995,14.049121093750045],[106.06679687500008,13.921191406250102],[105.90449218750007,13.924511718750068],[105.83144531250008,13.976611328124989],[105.73974609375006,14.084960937500057],[105.5315429687501,14.156152343750023],[105.35019531250009,14.109570312500125],[105.24570312500015,14.200537109374977],[105.20703125000006,14.259375],[105.18554687499994,14.319091796875],[105.18330078125001,14.346240234374989],[105.24365234375006,14.367871093749955],[105.34218750000008,14.416699218749955],[105.42265624999993,14.471630859374955],[105.47558593750006,14.530126953124977],[105.49736328125005,14.590673828125034],[105.52304687500015,14.843310546874989],[105.54667968749999,14.932470703125034],[105.53339843750013,15.041601562500091],[105.49042968750007,15.127587890625023],[105.49042968750007,15.256591796875],[105.615625,15.488281249999943],[105.63886718750013,15.585937499999943],[105.64101562500002,15.656542968749932],[105.62207031250006,15.699951171875114],[105.39892578125011,15.829882812500102],[105.40625,15.987451171875023],[105.33066406250003,16.037890625000045],[105.1487304687501,16.09355468749999],[105.04716796874999,16.16025390625009],[104.81933593749994,16.466064453125057],[104.75058593750015,16.647558593750034],[104.74355468750014,16.884375],[104.75898437500013,17.0771484375],[104.81601562499998,17.30029296875],[104.73964843750008,17.461669921875],[104.428125,17.698974609375057],[104.32265625000002,17.815820312500023],[104.19619140625002,17.988378906250034],[104.04873046875002,18.216699218749966],[103.94960937500008,18.318994140625023],[103.89882812500002,18.295312500000023],[103.79228515624999,18.31650390625009],[103.62968750000005,18.382568359375057],[103.48798828124995,18.41816406250001],[103.36699218750005,18.42333984375],[103.28828124999995,18.408398437499955],[103.25175781249999,18.373486328125125],[103.24892578125014,18.338964843750034],[103.27958984374999,18.304980468750045],[103.26318359375,18.278466796875136],[103.19970703125006,18.25947265625001],[103.14853515625009,18.221728515624932],[103.09121093750014,18.13823242187499],[103.05136718750003,18.02851562500001],[102.80742187500005,17.945556640625],[102.71757812500005,17.892236328125136],[102.67519531250014,17.851757812500068],[102.68007812500008,17.824121093750136],[102.66064453125,17.8179687499999],[102.61679687500015,17.833349609375034],[102.59824218750009,17.926757812500057],[102.55253906249999,17.965087890625057],[102.4587890625001,17.984619140624943],[102.35185546874999,18.045947265625045],[102.14824218750005,18.203857421875057],[102.10146484375014,18.21064453125001],[102.03457031250002,18.169824218750023],[101.94746093750001,18.081494140624955],[101.87548828125011,18.046435546874932],[101.81865234375005,18.064648437500125],[101.77480468750002,18.033398437500125],[101.6875,17.889404296875114],[101.56367187500001,17.820507812500125],[101.55507812500002,17.812353515625034],[101.41367187500015,17.71875],[101.16748046875011,17.4990234375],[101.10517578125001,17.479541015625102],[100.9084960937501,17.583886718750023],[101.14394531250008,18.14262695312499],[101.1375,18.286865234375057],[101.0505859375001,18.407031250000045],[101.04697265625003,18.441992187500034],[101.28632812499995,18.977148437500034],[101.19755859374999,19.327929687500045],[101.22080078125015,19.486621093750045],[101.21191406250011,19.548339843750057],[100.51357421875008,19.553466796875],[100.39765625000013,19.756103515625057],[100.51953125000006,20.177929687500068],[100.31796875000003,20.385888671875136],[100.2180664062501,20.339599609375114],[100.13974609375015,20.245410156250102],[100.11494140625007,20.25766601562492],[100.12246093750002,20.316650390625057],[100.12968750000005,20.372216796875023],[100.1838867187501,20.589111328124943],[100.2493164062501,20.730273437499932],[100.32607421875008,20.795703124999932],[100.40742187499995,20.823242187500057],[100.56513671875013,20.82509765625008],[100.62294921875002,20.85957031250001],[100.61767578125,20.87924804687509],[100.54931640625011,20.884228515625068],[100.5222656250001,20.921923828125102],[100.53613281250006,20.992382812500068],[100.703125,21.25136718750008],[101.0803710937501,21.46865234375008],[101.13886718750013,21.567480468749977],[101.19667968750002,21.522070312499977],[101.17539062500009,21.407519531250102],[101.21992187500013,21.342431640625136],[101.21181640625008,21.278222656250023],[101.22441406249999,21.22373046874992],[101.24785156249993,21.197314453125045],[101.28144531250007,21.184130859375045],[101.44355468750001,21.230810546874977],[101.54238281250008,21.234277343750136],[101.70478515625013,21.150146484375057],[101.728125,21.15639648437508],[101.78349609374999,21.204150390625045],[101.8005859375001,21.212597656249955],[101.7229492187501,21.314941406250057],[101.74726562500007,21.60576171874999],[101.7439453125001,21.77797851562508],[101.73652343750001,21.826513671874977],[101.52451171874998,22.253662109375],[101.56787109375011,22.2763671875],[101.6199218750001,22.327441406250102],[101.67148437500009,22.462304687500023],[101.70751953125,22.486572265625],[101.73876953125011,22.495263671874966],[101.75996093750001,22.490332031250034],[101.841796875,22.388476562500102],[102.02441406250006,22.439208984375114],[102.09150390625007,22.412255859375136],[102.12744140625011,22.37919921874999]]]},"properties":{"name":"Lao PDR","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[35.869140625,33.43173828125],[35.411230468750006,33.07568359375],[35.10859375000001,33.08369140625],[35.64785156250002,34.2482421875],[35.97626953125001,34.629199218749996],[36.383886718750006,34.65791015625],[36.32988281250002,34.499609375],[36.50439453125,34.432373046875],[36.5849609375,34.221240234374996],[36.27783203125,33.92529296875],[36.36503906250002,33.83935546875],[35.98613281250002,33.75263671875],[36.03447265625002,33.58505859375],[35.869140625,33.43173828125]]]},"properties":{"name":"Lebanon","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-8.486425781249977,7.558496093749994],[-8.408740234374989,7.411816406249997],[-8.324511718749989,6.920019531249991],[-8.587890625,6.490527343749989],[-8.287109375,6.319042968749997],[-7.981591796874994,6.2861328125],[-7.888623046874983,6.23486328125],[-7.800927734374994,6.038916015624991],[-7.730371093749994,5.919042968749991],[-7.636132812499994,5.90771484375],[-7.454394531249989,5.84130859375],[-7.39990234375,5.550585937499989],[-7.585058593749977,4.916748046875],[-7.574658203124983,4.572314453124989],[-7.544970703124989,4.351318359375],[-8.259033203125,4.589990234374994],[-9.132177734374977,5.054638671874997],[-10.2763671875,6.07763671875],[-11.291601562499977,6.688232421875],[-11.507519531249983,6.906542968749989],[-11.267675781249977,7.232617187499997],[-10.878076171874994,7.538232421874994],[-10.6474609375,7.759375],[-10.570849609374989,8.071142578124991],[-10.516748046874994,8.125292968749989],[-10.359814453124983,8.187939453124997],[-10.283203125,8.485156249999989],[-10.233056640624994,8.488818359374989],[-10.147412109374983,8.519726562499997],[-10.064355468749994,8.429882812499997],[-9.781982421875,8.537695312499991],[-9.518261718749983,8.34609375],[-9.369140625,7.703808593749997],[-9.463818359374983,7.415869140624991],[-9.11757812499999,7.215917968749991],[-8.8896484375,7.2626953125],[-8.659765624999977,7.688378906249994],[-8.486425781249977,7.558496093749994]]]},"properties":{"name":"Liberia","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[25.150488281250006,31.654980468749997],[24.85273437500001,31.334814453125],[24.96142578125,30.678515625],[24.703222656250006,30.201074218749994],[24.980273437500017,29.181884765625],[24.980273437500017,25.5888671875],[24.980273437500017,21.995849609375],[24.9794921875,20.002587890624994],[23.980273437500017,19.99594726562499],[23.980273437500017,19.496630859375003],[20.14765625000001,21.38925781249999],[15.984082031250011,23.445214843749994],[14.97900390625,22.99619140624999],[14.215527343750011,22.619677734375003],[13.48125,23.18017578125],[11.967871093750006,23.517871093750003],[11.507617187500017,24.314355468749994],[10.686132812500006,24.55136718749999],[10.395898437500023,24.485595703125],[10.255859375,24.591015625],[10.000683593750011,25.332080078125003],[9.4482421875,26.067138671875],[9.491406250000011,26.333740234375],[9.883203125000023,26.630810546874997],[9.74755859375,27.330859375],[9.916015625,27.785693359374996],[9.805273437500006,29.176953125],[9.310253906250011,30.115234375],[9.51875,30.229394531249994],[9.89501953125,30.3873046875],[9.932519531250023,30.425341796874996],[10.059765625000011,30.580078125],[10.21640625,30.783203125],[10.114941406250011,31.463769531249994],[10.274609375000011,31.684960937499994],[10.475781250000011,31.736035156249997],[10.60888671875,31.929541015625],[10.826367187500011,32.0806640625],[11.005175781250017,32.172705078125],[11.168261718750017,32.256738281249994],[11.358007812500006,32.34521484375],[11.504980468750006,32.413671875],[11.535937500000017,32.47333984375],[11.533789062500006,32.524951171874996],[11.453906250000017,32.642578125],[11.453906250000017,32.781689453125],[11.459179687500011,32.897363281249994],[11.467187500000023,32.965722656249994],[11.504589843750011,33.181933593749996],[11.657128906250023,33.118896484375],[11.8134765625,33.093701171875],[12.279882812500006,32.858544921874994],[12.753515625,32.801074218749996],[13.283496093750017,32.9146484375],[15.176562500000017,32.391162109374996],[15.705957031250023,31.426416015624994],[17.830468750000023,30.927587890625],[18.669824218750023,30.415673828124994],[19.12373046875001,30.26611328125],[19.713281250000023,30.48837890625],[20.11152343750001,30.963720703125],[19.926367187500006,31.817529296874994],[20.121484375000023,32.21875],[20.62109375,32.58017578125],[21.63593750000001,32.937304687499996],[22.187402343750023,32.918261718749996],[23.090625,32.61875],[23.10625,32.331445312499994],[23.28632812500001,32.213818359375],[24.129687500000017,32.009228515625],[24.878515625,31.984277343749994],[25.150488281250006,31.654980468749997]]]},"properties":{"name":"Libya","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-60.89521484375,13.821972656249997],[-60.951416015625,13.717578125],[-61.073144531249994,13.865576171874991],[-60.908105468749994,14.09335937499999],[-60.89521484375,13.821972656249997]]]},"properties":{"name":"Saint Lucia","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[79.87480468750002,9.050732421875026],[79.90371093750005,8.975],[79.74765625000006,9.104589843749991],[79.87480468750002,9.050732421875026]]],[[[79.98232421875,9.812695312500011],[80.25283203125005,9.796337890625054],[80.71113281250004,9.366357421875023],[81.226953125,8.50551757812498],[81.37285156250002,8.431445312499989],[81.42216796875007,8.147851562500023],[81.87412109375012,7.288330078124986],[81.86142578125012,6.901269531249994],[81.63740234375004,6.425146484374991],[80.72412109375003,5.97905273437496],[80.26738281250007,6.009765625],[80.09531250000012,6.153173828125006],[79.859375,6.829296874999983],[79.71298828125012,8.18232421875004],[79.74980468750007,8.294238281250003],[79.78349609375007,8.018457031250051],[79.92890625000004,8.899218749999974],[80.09960937499997,9.209960937500043],[80.08632812500005,9.577832031250026],[80.42832031250006,9.480957031250014],[80.04580078125005,9.649902343749972],[79.98232421875,9.812695312500011]]]]},"properties":{"name":"Sri Lanka","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[28.646875,-30.1265625],[28.39208984375,-30.147558593750006],[28.128710937500017,-30.52509765625001],[28.05683593750001,-30.63105468750001],[27.753125,-30.6],[27.364062500000017,-30.27919921875001],[27.19355468750001,-29.94130859375001],[27.056933593750017,-29.625585937500006],[27.29453125,-29.519335937500003],[27.73554687500001,-28.940039062500006],[27.959863281250023,-28.873339843750003],[28.084375,-28.77998046875001],[28.23261718750001,-28.701269531250006],[28.471875,-28.615820312500006],[28.583398437500023,-28.594140625],[28.625781250000017,-28.58173828125001],[29.301367187500006,-29.08984375],[29.38671875,-29.31972656250001],[29.34882812500001,-29.441992187500006],[29.293554687500006,-29.56689453125],[29.1421875,-29.700976562500003],[29.098046875000023,-29.919042968750006],[28.646875,-30.1265625]]]},"properties":{"name":"Lesotho","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[20.957812500000074,55.27890625000006],[20.89980468750008,55.286669921875045],[21.11484375,55.61650390624999],[20.957812500000074,55.27890625000006]]],[[[25.573046875000017,54.139892578125],[25.497363281250045,54.17524414062501],[25.52734375000003,54.21513671874996],[25.505664062500045,54.26494140624999],[25.46113281250004,54.29277343749996],[25.179492187500017,54.214257812499966],[25.111425781250006,54.15493164062505],[25.04609375000004,54.13305664062503],[24.869531250000023,54.14516601562502],[24.82568359374997,54.118994140625006],[24.78925781250001,53.99824218750001],[24.768164062499977,53.97465820312499],[24.31796875,53.892968749999966],[24.236621093750045,53.91997070312496],[24.19130859375005,53.95043945312503],[23.559082031250057,53.91982421875002],[23.484667968750074,53.939794921875006],[23.453613281250057,54.14345703125002],[23.3701171875,54.20048828124999],[23.282324218750063,54.240332031250034],[23.17031250000008,54.28144531249998],[23.0875,54.299462890624994],[23.042187500000068,54.30419921875],[23.01552734375005,54.34833984375001],[22.976757812500068,54.36635742187505],[22.89394531250008,54.390527343749994],[22.82373046874997,54.39580078124999],[22.766210937499977,54.356787109375034],[22.679882812500068,54.493017578125006],[22.684472656250023,54.56293945312504],[22.82470703125,54.87128906249998],[22.56728515625005,55.05913085937496],[22.072363281250034,55.06367187499998],[21.235742187500023,55.26411132812498],[21.237890625000034,55.455029296874955],[21.06191406250005,55.81342773437498],[21.053808593750006,56.02294921875003],[21.04609375000004,56.07006835937503],[21.31464843750004,56.18813476562502],[21.65351562500004,56.314550781250006],[22.084570312500034,56.40673828125006],[22.875585937500063,56.39643554687501],[22.96826171875003,56.38041992187502],[23.042968750000057,56.324072265625006],[23.119824218749983,56.330664062500006],[23.195898437500034,56.36713867187498],[24.120703125000063,56.26425781249998],[24.90302734375001,56.398193359375],[25.069921875,56.20039062500004],[25.663183593750063,56.104833984375006],[26.593554687500074,55.66752929687502],[26.590820312500057,55.62265625],[26.56660156250001,55.546484375000034],[26.51923828125004,55.448144531249994],[26.469531250000045,55.371923828125006],[26.457617187500006,55.342480468749955],[26.49531250000004,55.31801757812502],[26.68125,55.30644531249999],[26.76015625000008,55.29335937499999],[26.775683593750045,55.27309570312502],[26.601171875000034,55.130175781250045],[26.291796875000074,55.13959960937501],[26.250781250000045,55.12451171875006],[26.175195312500023,55.003271484375034],[26.092968750000068,54.96230468750005],[25.964453124999977,54.947167968749966],[25.85927734375005,54.91928710937498],[25.722460937500074,54.71787109374998],[25.731640625000068,54.59038085937502],[25.72480468750001,54.564257812500045],[25.68515625,54.53579101562502],[25.62031250000004,54.46040039062501],[25.56757812500004,54.377050781250006],[25.54736328125,54.33183593750002],[25.55751953125005,54.310693359374994],[25.702539062499994,54.29296875],[25.765234374999977,54.179785156250034],[25.573046875000017,54.139892578125]]]]},"properties":{"name":"Lithuania","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[6.4873046875,49.798486328124994],[6.344335937500006,49.452734375],[6.181054687500023,49.498925781249994],[6.119921875000017,49.485205078125],[6.074121093750023,49.454638671874996],[6.011425781250011,49.445458984374994],[5.95947265625,49.454638671874996],[5.928906250000011,49.4775390625],[5.9013671875,49.48974609375],[5.823437500000011,49.505078125],[5.789746093750011,49.53828125],[5.776710379464286,49.639953962053575],[5.744042968750023,49.91962890625],[5.7880859375,49.961230468749996],[5.8173828125,50.0126953125],[5.866894531250011,50.0828125],[5.976269531250011,50.1671875],[6.089062500000011,50.154589843749996],[6.110058593750011,50.123779296875],[6.116503906250017,50.120996093749994],[6.109765625000023,50.034375],[6.13818359375,49.97431640625],[6.204882812500017,49.91513671875],[6.272327008928583,49.887234933035714],[6.4873046875,49.798486328124994]]]},"properties":{"name":"Luxembourg","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[28.14794921875,56.142919921875],[27.576757812500006,55.798779296875],[27.052539062500017,55.83056640625],[26.593554687500017,55.667529296874996],[25.663183593750006,56.104833984375],[25.069921875,56.200390625],[24.90302734375001,56.398193359375],[24.120703125,56.2642578125],[23.81269531250001,56.329248046875],[23.195898437500006,56.367138671875],[23.11982421875001,56.3306640625],[23.04296875,56.324072265625],[22.875585937500006,56.396435546875],[22.084570312500006,56.40673828125],[21.730566406250006,56.325976562499996],[21.65351562500001,56.31455078125],[21.31464843750001,56.188134765625],[21.04609375000001,56.070068359375],[21.0712890625,56.82373046875],[21.72871093750001,57.57099609375],[22.554589843750023,57.724267578125],[23.28730468750001,57.08974609375],[23.647753906250017,56.971044921875],[24.382617187500017,57.250048828124996],[24.322558593750017,57.87060546875],[24.3625,57.866162109375],[24.458886718750023,57.907861328125],[25.11103515625001,58.063427734375],[25.27265625000001,58.009375],[25.66015625,57.920166015625],[26.29804687500001,57.60107421875],[26.532617187500023,57.531005859375],[26.96601562500001,57.609130859375],[27.187109375,57.538330078125],[27.326562500000023,57.52548828125],[27.4697265625,57.5240234375],[27.538671875,57.42978515625],[27.796875,57.316943359374996],[27.82861328125,57.293310546875],[27.838281250000023,57.247705078125],[27.83027343750001,57.194482421875],[27.639453125000017,56.845654296875],[27.806054687500023,56.86708984375],[27.8486328125,56.85341796875],[27.89208984375,56.741064453125],[28.00751953125001,56.599853515625],[28.103125,56.545703125],[28.11083984375,56.510693359375],[28.169238281250017,56.386865234375],[28.191699218750017,56.315576171875],[28.202050781250023,56.260400390625],[28.14794921875,56.142919921875]]]},"properties":{"name":"Latvia","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[28.2125,45.450439453125],[28.07470703125,45.598974609375],[28.23945312500001,46.6408203125],[28.07177734375,46.978417968749994],[27.614062500000017,47.34052734375],[26.980761718750017,48.155029296875],[26.618945312500017,48.25986328125],[26.640429687500017,48.294140625],[26.847070312500023,48.387158203125],[26.90058593750001,48.371923828125],[27.228515625,48.371435546875],[27.549218750000023,48.477734375],[28.34052734375001,48.144433593749994],[28.42304687500001,48.146875],[29.125390625000023,47.96455078125],[29.134863281250006,47.489697265625],[29.455664062500006,47.292626953124994],[29.57197265625001,46.964013671874994],[29.7197265625,46.88291015625],[29.877832031250023,46.82890625],[29.942480468750006,46.723779296874994],[29.93476562500001,46.625],[29.92431640625,46.538867187499996],[30.13105468750001,46.423095703125],[30.07568359375,46.377832031249994],[29.878027343750006,46.360205078125],[29.837890625,46.350537109375],[29.458789062500017,46.453759765624994],[29.30488281250001,46.466601562499996],[29.22382812500001,46.376953125],[29.20458984375,46.379345703125],[29.20078125,46.50498046875],[29.18623046875001,46.523974609374996],[29.146289062500017,46.526904296874996],[28.958398437500023,46.45849609375],[28.92744140625001,46.424121093749996],[28.930566406250023,46.362255859375],[28.94375,46.288427734375],[29.00625,46.17646484375],[28.971875,46.12763671875],[28.94775390625,46.049951171874994],[28.849511718750023,45.978662109374994],[28.73876953125,45.937158203124994],[28.729296875000017,45.852001953125],[28.667578125,45.793847656249994],[28.562304687500017,45.735791015625],[28.491601562500023,45.665771484375],[28.4990234375,45.517724609374994],[28.310351562500017,45.498583984374996],[28.26484375000001,45.48388671875],[28.2125,45.450439453125]]]},"properties":{"name":"Moldova","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[49.936425781249994,-16.90292968750002],[49.82402343750002,-17.08652343750002],[50.02304687500006,-16.6953125],[49.936425781249994,-16.90292968750002]]],[[[48.3421875,-13.363867187500034],[48.21191406250003,-13.385253906249957],[48.191210937500074,-13.259960937500011],[48.308886718750074,-13.198242187499957],[48.3421875,-13.363867187500034]]],[[[49.53828125000004,-12.432128906250014],[49.9375,-13.072265624999957],[50.23535156249997,-14.732031249999963],[50.482714843750074,-15.385644531249994],[50.20898437499997,-15.960449218750028],[50.02041015625005,-15.801757812500028],[49.89257812500003,-15.457714843750011],[49.664355468750074,-15.521582031249977],[49.83906250000004,-16.486523437499997],[49.76718750000006,-16.815136718749983],[49.44931640625006,-17.240625],[49.477832031250074,-17.89853515624999],[49.362890625,-18.336328125],[47.934472656249994,-22.393945312500023],[47.55800781250005,-23.874609374999963],[47.17734375,-24.787207031249977],[46.72851562499997,-25.14990234374997],[46.15869140624997,-25.230371093750023],[45.5080078125001,-25.56318359374997],[45.2057617187501,-25.57050781250004],[44.0353515625001,-24.995703125],[43.670019531250006,-24.30029296875],[43.722265625,-23.529687500000037],[43.2648437500001,-22.38359375],[43.29052734374997,-21.93251953124998],[43.50185546875005,-21.356445312499957],[43.800195312499994,-21.179199218749986],[44.40468750000005,-19.922070312500026],[44.44882812500006,-19.42871093749997],[44.23876953124997,-19.075195312499986],[44.23310546875004,-18.740625],[44.04003906249997,-18.288476562500023],[43.979394531249994,-17.3916015625],[44.42138671874997,-16.70263671874997],[44.476171875,-16.217285156249957],[44.90917968749997,-16.174511718750026],[45.2228515625001,-15.95048828124996],[45.3421875,-16.03671875000002],[45.598242187500006,-15.992578125],[45.70019531249997,-15.813769531249989],[46.157519531250074,-15.738281249999972],[46.3996093750001,-15.924609375000017],[46.331445312499994,-15.713671875000031],[46.47509765625003,-15.513476562500003],[46.942285156249994,-15.219042968749974],[47.09921875,-15.43417968750002],[47.092578125000074,-15.150097656249969],[47.35195312500005,-14.766113281249986],[47.46474609375005,-14.713281249999966],[47.47832031250002,-15.009375],[47.77402343750006,-14.63671875],[47.964160156250074,-14.672558593750026],[47.773339843749994,-14.369921875],[47.995507812499994,-13.960449218749986],[47.88359375000002,-13.807519531250009],[47.94101562500006,-13.662402343750017],[48.03984375000002,-13.596289062499963],[48.25527343750005,-13.719335937499977],[48.796484375,-13.267480468750023],[48.91943359375003,-12.839062499999969],[48.78632812500004,-12.470898437500011],[48.931738281250006,-12.4390625],[49.20703124999997,-12.079589843749957],[49.53828125000004,-12.432128906250014]]]]},"properties":{"name":"Madagascar","childNum":3}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-91.68369140624998,18.677343750000034],[-91.81611328124995,18.675878906250006],[-91.53671874999998,18.760009765625],[-91.68369140624998,18.677343750000034]]],[[[-86.93964843750001,20.303320312500006],[-86.97797851562498,20.489794921875074],[-86.76328124999995,20.579052734374955],[-86.93964843750001,20.303320312500006]]],[[[-106.50224609374999,21.61083984375003],[-106.60703124999993,21.561474609374983],[-106.63935546874995,21.697851562499977],[-106.50224609374999,21.61083984375003]]],[[[-110.56738281249994,25.003466796875017],[-110.5388671875,24.89155273437504],[-110.69926757812499,25.081445312499994],[-110.56738281249994,25.003466796875017]]],[[[-112.05727539062498,24.545703125000017],[-112.29677734375002,24.789648437500063],[-112.15942382812501,25.28564453125003],[-112.19501953124998,24.841064453125057],[-112.05727539062498,24.545703125000017]]],[[[-111.10029296874998,26.020605468750006],[-111.224658203125,25.83588867187504],[-111.18291015625002,26.040625],[-111.10029296874998,26.020605468750006]]],[[[-115.17060546875001,28.06938476562496],[-115.35292968750002,28.103955078124983],[-115.23354492187495,28.36835937500004],[-115.17060546875001,28.06938476562496]]],[[[-112.20307617187503,29.00532226562504],[-112.27841796875,28.769335937500017],[-112.51406249999997,28.847607421874955],[-112.42353515625,29.203662109375017],[-112.28505859374994,29.240429687499955],[-112.20307617187503,29.00532226562504]]],[[[-113.15561523437502,29.05224609375],[-113.49633789062497,29.30761718749997],[-113.58720703125002,29.57304687499996],[-113.20214843749999,29.301855468750034],[-113.15561523437502,29.05224609375]]],[[[-97.14624023437494,25.961474609375045],[-97.66767578124995,24.389990234374977],[-97.84248046874995,22.510302734375017],[-97.76328124999998,22.105859374999966],[-97.31450195312496,21.56420898437503],[-97.40917968749997,21.272558593750034],[-97.38344726562497,21.56669921874999],[-97.75380859375002,22.02666015624999],[-97.18632812499996,20.717041015625],[-96.45605468749994,19.869775390624966],[-96.28955078124994,19.34375],[-95.778125,18.805517578125034],[-95.92036132812495,18.81958007812497],[-95.62680664062503,18.690576171874994],[-95.71982421874998,18.768359375000017],[-95.18183593749995,18.700732421875017],[-94.79814453124996,18.51459960937501],[-94.45976562499993,18.166650390624994],[-93.55234375,18.430468750000017],[-92.88476562499997,18.468652343749966],[-92.44101562499998,18.67529296874997],[-91.97377929687502,18.715869140625074],[-91.91357421875,18.52851562500001],[-91.53398437499993,18.45654296875],[-91.27524414062498,18.62446289062501],[-91.34306640624996,18.900585937499955],[-91.43666992187502,18.889794921874966],[-90.73925781249994,19.352246093749955],[-90.69316406249996,19.729882812499966],[-90.49169921874997,19.94677734375003],[-90.353125,21.009423828124966],[-89.81977539062495,21.274609374999983],[-88.46669921874997,21.569384765625017],[-88.0068359375,21.604052734375045],[-87.25087890625,21.44697265625004],[-87.18828124999993,21.546435546875045],[-87.36850585937498,21.57373046875],[-87.034765625,21.592236328124955],[-86.824072265625,21.421679687500017],[-86.77177734374999,21.150537109375023],[-86.92622070312493,20.786474609375034],[-87.42138671875,20.23139648437501],[-87.44174804687498,19.861523437499983],[-87.68769531249998,19.63710937499999],[-87.6453125,19.55390625000001],[-87.42475585937498,19.583349609375063],[-87.65869140625003,19.352343750000074],[-87.65576171874997,19.25786132812499],[-87.50107421874998,19.287792968749983],[-87.76181640624998,18.446142578125006],[-87.88198242187497,18.27387695312501],[-88.05644531249996,18.524462890625074],[-88.03173828125,18.838916015625017],[-88.29565429687494,18.47241210937503],[-88.52299804687499,18.445898437500063],[-88.80634765624998,17.965527343749983],[-89.13354492187503,17.970800781249977],[-89.16147460937503,17.81484375],[-90.98916015624997,17.81640624999997],[-90.99296874999993,17.25244140625],[-91.19550781249998,17.254101562499983],[-91.40961914062501,17.255859375],[-90.975830078125,16.867822265624994],[-90.710693359375,16.708105468750034],[-90.65996093749996,16.630908203125045],[-90.634375,16.565136718749955],[-90.63408203125002,16.51074218749997],[-90.57578124999995,16.467822265625017],[-90.47109374999994,16.439550781250034],[-90.41699218750003,16.391015625000023],[-90.41699218750003,16.351318359375],[-90.45014648437493,16.261376953124994],[-90.45986328124997,16.16235351562497],[-90.44716796874994,16.07270507812501],[-90.52197265625,16.07119140625005],[-90.70322265624998,16.07104492187503],[-90.97958984374998,16.07080078124997],[-91.433984375,16.070458984374994],[-91.736572265625,16.070166015625006],[-91.95722656250001,15.703222656250034],[-92.08212890624998,15.495556640625011],[-92.18715820312497,15.320898437499963],[-92.07480468749998,15.074218749999972],[-92.09873046874998,15.026757812499994],[-92.14423828125001,15.001953125],[-92.158544921875,14.963574218749997],[-92.23515625,14.545410156249986],[-93.91606445312493,16.053564453125006],[-94.374169921875,16.284765625000034],[-94.426416015625,16.22626953125001],[-94.00126953124996,16.018945312499966],[-94.66152343750002,16.20190429687503],[-94.58710937499995,16.315820312499966],[-94.79082031249999,16.28715820312499],[-94.85869140624996,16.41972656249999],[-95.02084960937503,16.277636718750017],[-94.79941406249995,16.20966796875001],[-95.134375,16.17695312500001],[-96.21357421874993,15.693066406250011],[-96.80795898437495,15.726416015624977],[-97.18466796874998,15.909277343750006],[-97.75478515624994,15.966845703125017],[-98.52031249999993,16.30483398437505],[-98.76220703125,16.534765624999977],[-99.69067382812499,16.719628906249994],[-100.847802734375,17.20048828124999],[-101.91870117187494,17.959765625000045],[-102.69956054687495,18.062841796875006],[-103.44160156249995,18.32539062500001],[-103.91245117187496,18.828466796875006],[-104.9384765625,19.309375],[-105.482080078125,19.97607421875003],[-105.66943359374997,20.385595703124977],[-105.26015625,20.579052734374955],[-105.32705078124994,20.752978515625045],[-105.51083984374999,20.808740234375023],[-105.23706054687499,21.119189453125045],[-105.20869140624998,21.490820312499977],[-105.43144531249997,21.618261718750006],[-105.64912109375001,21.988085937500045],[-105.64550781249999,22.32690429687497],[-105.79179687500003,22.627490234375017],[-106.93549804687497,23.88125],[-107.76494140625002,24.47192382812497],[-107.52724609375001,24.36005859375001],[-107.51191406249998,24.489160156250023],[-107.95117187499994,24.614892578124966],[-108.28076171874994,25.08154296875],[-108.05146484374995,25.067041015624994],[-108.69638671874998,25.382910156250034],[-108.78725585937502,25.53803710937501],[-109.02880859375003,25.48046875000003],[-108.886572265625,25.733447265625045],[-109.19648437499998,25.59252929687503],[-109.38496093750001,25.727148437500006],[-109.42563476562495,26.032568359375063],[-109.19970703125003,26.30522460937499],[-109.11669921874999,26.25273437499996],[-109.27626953125,26.533886718749955],[-109.48286132812498,26.710351562500023],[-109.75478515624995,26.702929687500017],[-109.94399414062495,27.079345703125057],[-110.37729492187495,27.233300781249966],[-110.59267578124995,27.544335937500023],[-110.52988281249995,27.864208984374983],[-111.12138671875002,27.966992187499983],[-112.16176757812495,29.018896484375034],[-113.05766601562496,30.651025390625023],[-113.04672851562495,31.17924804687499],[-113.62348632812494,31.34589843750001],[-113.75942382812501,31.557763671874994],[-113.94775390625001,31.62934570312501],[-114.14931640624995,31.507373046875045],[-114.93359374999994,31.900732421874977],[-114.78989257812498,31.647119140624994],[-114.88188476562499,31.156396484375023],[-114.55048828124997,30.02226562499999],[-113.75546875,29.367480468750017],[-113.49970703124995,28.92670898437501],[-113.20556640624997,28.798779296874955],[-113.09365234375001,28.511767578125017],[-112.870849609375,28.42421875000005],[-112.73403320312501,27.825976562500017],[-112.32919921874996,27.52343750000003],[-111.86264648437495,26.678515625000017],[-111.6994140625,26.58095703125005],[-111.79526367187499,26.8796875],[-111.56967773437495,26.707617187500006],[-111.29160156249996,25.78979492187497],[-110.68676757812501,24.867675781250057],[-110.65932617187502,24.34145507812505],[-110.36743164062497,24.100488281249994],[-110.30375976562497,24.339453125],[-110.02280273437502,24.17460937499999],[-109.6765625,23.66157226562501],[-109.42084960937495,23.480126953124994],[-109.49570312500002,23.159814453125023],[-110.00625,22.894042968750057],[-110.3626953125,23.60493164062501],[-111.68291015625002,24.555810546875023],[-111.80249023437494,24.542529296875074],[-112.07255859374999,24.84003906250001],[-112.06987304687497,25.572851562500006],[-112.37724609374997,26.21391601562496],[-113.02075195312499,26.58325195312497],[-113.15581054687496,26.94624023437504],[-113.27226562499997,26.79096679687501],[-113.59853515625001,26.721289062500034],[-113.84096679687502,26.966503906249983],[-114.44526367187503,27.218164062499994],[-114.53989257812495,27.431103515624955],[-114.99350585937499,27.736035156249983],[-115.03647460937495,27.84184570312496],[-114.57001953124995,27.78393554687497],[-114.30058593749995,27.87299804687501],[-114.30224609375003,27.775732421875006],[-114.0693359375,27.67568359375005],[-114.15839843750003,27.919677734375],[-114.26586914062499,27.934472656249994],[-114.04848632812502,28.42617187499999],[-114.93730468749999,29.35161132812496],[-115.67382812500003,29.756396484375017],[-116.06215820312501,30.80415039062504],[-116.29628906250001,30.97050781249999],[-116.33344726562494,31.202783203124994],[-116.66215820312495,31.56489257812504],[-116.72207031249998,31.734570312499955],[-116.62080078124995,31.85107421874997],[-116.84799804687496,31.997363281250045],[-117.12827148437495,32.533349609374994],[-114.72475585937495,32.71533203125003],[-114.83593749999994,32.50830078125003],[-111.0419921875,31.32421875000003],[-108.21445312499993,31.329443359375034],[-108.21181640625002,31.779345703125017],[-106.44541015624996,31.768408203125006],[-106.14804687499995,31.450927734375],[-104.97880859374996,30.645947265624955],[-104.50400390624995,29.677685546874955],[-104.110595703125,29.386132812499994],[-103.16831054687498,28.998193359374994],[-102.8919921875,29.216406250000034],[-102.61494140624994,29.75234375],[-102.26894531249998,29.871191406250034],[-101.44038085937503,29.77685546875],[-100.75458984375001,29.182519531249994],[-100.29604492187495,28.32768554687499],[-99.50532226562497,27.54833984375003],[-99.45654296874999,27.05668945312496],[-99.10776367187498,26.446923828124994],[-97.37563476562497,25.871826171875],[-97.14624023437494,25.961474609375045]]]]},"properties":{"name":"Mexico","childNum":10}},{"geometry":{"type":"Polygon","coordinates":[[[22.344042968750017,42.31396484375],[22.836816406250023,41.993603515625],[23.00361328125001,41.73984375],[22.916015625,41.336279296875],[22.78388671875001,41.331982421875],[22.72480468750001,41.178515625],[22.603613281250006,41.140185546874996],[22.493554687500023,41.118505859375],[22.184472656250023,41.158642578125],[21.99335937500001,41.13095703125],[21.77949218750001,40.950439453125],[21.627539062500006,40.896337890625],[21.57578125,40.868945312499996],[20.964257812500023,40.849902343749996],[20.709277343750017,40.928369140624994],[20.48896484375001,41.272607421874994],[20.566210937500017,41.873681640624994],[20.725,41.87353515625],[20.778125,42.071044921875],[21.05976562500001,42.171289062499994],[21.28662109375,42.100390625],[21.389550781250023,42.21982421875],[21.560839843750017,42.24765625],[21.5625,42.247509765625],[21.81464843750001,42.303125],[22.344042968750017,42.31396484375]]]},"properties":{"name":"Macedonia","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[4.227636718750006,19.142773437499997],[4.234667968750017,16.996386718750003],[4.121289062500011,16.357714843750003],[3.842968750000011,15.701708984375003],[3.5205078125,15.483105468749997],[3.504296875000023,15.356347656249994],[3.06015625,15.427197265624997],[3.001074218750006,15.340966796874994],[1.300195312500023,15.272265625],[0.947460937500011,14.982128906249997],[0.217480468750011,14.911474609374991],[-0.235888671874989,15.059423828124991],[-0.760449218749983,15.047753906249994],[-1.049560546875,14.81953125],[-1.97304687499999,14.45654296875],[-2.113232421874983,14.16845703125],[-2.586718749999989,14.227587890625003],[-2.873925781249994,13.950732421875003],[-2.950830078124994,13.6484375],[-3.248632812499977,13.658349609374994],[-3.3017578125,13.28076171875],[-3.527636718749989,13.182714843749991],[-3.947314453124989,13.402197265624991],[-4.151025390624994,13.306201171875003],[-4.328710937499977,13.119042968749994],[-4.227099609374989,12.793701171875],[-4.480615234374994,12.672216796874991],[-4.4287109375,12.337597656249997],[-4.699316406249977,12.076171875],[-5.288134765624989,11.827929687499989],[-5.250244140625,11.375781249999989],[-5.490478515625,11.042382812499994],[-5.523535156249977,10.426025390625],[-5.556591796874983,10.43994140625],[-5.694287109374983,10.43320312499999],[-5.843847656249977,10.389550781249994],[-5.896191406249983,10.354736328125],[-5.907568359374977,10.307226562499991],[-6.034570312499994,10.19482421875],[-6.1171875,10.201904296875],[-6.238378906249977,10.261621093749994],[-6.241308593749977,10.279199218749994],[-6.192626953125,10.369433593749989],[-6.190673828125,10.400292968749994],[-6.250244140625,10.717919921874994],[-6.482617187499983,10.561230468749997],[-6.564599609374994,10.58642578125],[-6.654150390624977,10.656445312499997],[-6.676367187499977,10.6337890625],[-6.686132812499977,10.578027343749994],[-6.691992187499977,10.512011718749989],[-6.669335937499994,10.3921875],[-6.693261718749994,10.349462890624991],[-6.950341796874994,10.342333984374989],[-7.01708984375,10.143261718749997],[-7.385058593749989,10.340136718749989],[-7.6611328125,10.427441406249997],[-7.990625,10.1625],[-8.007275390624983,10.321875],[-8.266650390624989,10.485986328124994],[-8.33740234375,10.990625],[-8.666699218749983,11.009472656249997],[-8.398535156249977,11.366552734374991],[-8.822021484375,11.673242187499994],[-8.818310546874983,11.922509765624994],[-9.043066406249977,12.40234375],[-9.395361328124977,12.464648437499989],[-9.358105468749983,12.255419921874989],[-9.754003906249977,12.029931640624994],[-10.274853515624983,12.212646484375],[-10.709228515625,11.898730468749989],[-10.933203124999977,12.205175781249991],[-11.30517578125,12.015429687499989],[-11.502197265625,12.198632812499994],[-11.389404296875,12.404394531249991],[-11.390380859375,12.941992187499991],[-11.634960937499983,13.369873046875],[-11.831689453124994,13.315820312499994],[-12.05419921875,13.633056640625],[-11.960888671874983,13.875292968750003],[-12.019189453124994,14.206494140624997],[-12.228417968749994,14.45859375],[-12.280615234374977,14.809033203124997],[-12.104687499999983,14.745361328125],[-12.08154296875,14.766357421875],[-12.021582031249977,14.804931640625],[-11.76015625,15.425537109375],[-11.675878906249977,15.512060546874991],[-11.502685546875,15.636816406249991],[-11.455224609374994,15.62539062499999],[-10.9482421875,15.151123046875],[-10.696582031249989,15.42265625],[-9.94140625,15.373779296875],[-9.446923828124994,15.458203125],[-9.447705078124983,15.574853515624994],[-9.426562499999989,15.623046875],[-9.3505859375,15.677392578124994],[-9.33544921875,15.525683593750003],[-9.293701171875,15.502832031249994],[-5.5125,15.496289062499997],[-5.359912109374989,16.282861328124994],[-5.509619140624977,16.442041015624994],[-5.628662109375,16.568652343750003],[-5.65625,16.8095703125],[-5.684765624999983,17.058251953124994],[-5.713183593749989,17.306884765625],[-5.74169921875,17.555566406249994],[-5.827099609374983,18.3015625],[-6.026416015624989,20.0421875],[-6.396582031249977,23.274804687499994],[-6.482031249999977,24.020800781250003],[-6.538964843749994,24.51816406249999],[-6.5673828125,24.766796875],[-6.594091796874977,24.99462890625],[-6.287207031249977,24.994824218749997],[-5.959814453124977,24.99497070312499],[-5.640771484374994,24.995166015625003],[-4.822607421874977,24.99560546875],[-1.947900390624994,23.124804687500003],[1.1455078125,21.102246093749997],[1.165722656250011,20.817431640625003],[1.610644531250017,20.555566406249994],[1.685449218750023,20.378369140624997],[3.130273437500023,19.85019531249999],[3.255859375,19.4109375],[3.119726562500006,19.103173828124994],[3.3564453125,18.986621093750003],[4.227636718750006,19.142773437499997]]]},"properties":{"name":"Mali","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[14.566210937499989,35.85273437499998],[14.436425781250023,35.82167968750005],[14.351269531250011,35.978417968749994],[14.566210937499989,35.85273437499998]]]},"properties":{"name":"Malta","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[98.18261718749997,9.933447265625006],[98.11806640625,9.877880859375054],[98.2916992187501,10.051318359375031],[98.18261718749997,9.933447265625006]]],[[[98.20976562500002,10.952734375],[98.27148437499997,10.73989257812498],[98.08046875000005,10.886621093750037],[98.20976562500002,10.952734375]]],[[[98.55380859375012,11.744873046875],[98.52841796875012,11.538671875],[98.43476562500004,11.567089843750026],[98.37646484374997,11.79150390625],[98.55380859375012,11.744873046875]]],[[[98.516015625,11.905029296875028],[98.46621093750005,12.08427734374996],[98.60957031250004,11.956640624999977],[98.516015625,11.905029296875028]]],[[[98.06611328125004,12.389794921875023],[98.00234375000005,12.279003906250011],[97.93867187500004,12.34609375],[98.06611328125004,12.389794921875023]]],[[[98.41396484375005,12.597949218749974],[98.45947265625003,12.473730468749991],[98.3138671875,12.335986328124989],[98.31210937500006,12.678173828124983],[98.41396484375005,12.597949218749974]]],[[[98.31542968749997,13.099072265625026],[98.30917968750012,12.934716796875023],[98.26533203125004,13.202246093749991],[98.31542968749997,13.099072265625026]]],[[[94.80488281250004,15.8193359375],[94.73349609375006,15.823046875000045],[94.82802734375005,15.933007812499966],[94.80488281250004,15.8193359375]]],[[[94.47675781250004,15.945947265625023],[94.41191406250007,15.848388671875057],[94.3878906250001,15.994140624999972],[94.60126953125004,16.205517578124983],[94.47675781250004,15.945947265625023]]],[[[97.575,16.253222656250017],[97.48037109375,16.305712890625045],[97.54199218749997,16.505078124999983],[97.575,16.253222656250017]]],[[[93.6908203125,18.68427734375004],[93.4875,18.867529296875063],[93.74472656250006,18.865527343750017],[93.6908203125,18.68427734375004]]],[[[93.71484374999997,19.558251953124994],[93.94570312500005,19.428613281249966],[93.90195312500012,19.33203125],[93.75585937500003,19.325683593750057],[93.64404296874997,19.49506835937501],[93.71484374999997,19.558251953124994]]],[[[93.49179687500012,19.892578125],[93.51328125000006,19.754785156249994],[93.41289062500002,19.950341796875023],[93.49179687500012,19.892578125]]],[[[93.01015625000005,19.923925781249977],[93.02324218750007,19.82885742187497],[92.91464843750006,20.086474609375045],[93.01015625000005,19.923925781249977]]],[[[101.1388671875001,21.567480468749977],[101.08037109375007,21.468652343749994],[100.703125,21.251367187499966],[100.613671875,21.059326171875],[100.56660156250004,21.038183593750063],[100.53613281250003,20.992382812499955],[100.52226562500007,20.92192382812499],[100.54931640624997,20.884228515624955],[100.61767578125003,20.879248046875006],[100.62294921875005,20.859570312499983],[100.5651367187501,20.825097656249994],[100.4074218750001,20.823242187500057],[100.32607421875005,20.795703125000045],[100.24931640625002,20.730273437500045],[100.18388671875002,20.589111328125057],[100.12968750000002,20.372216796874994],[100.12246093750005,20.316650390625057],[100.0036132812501,20.37958984375001],[99.9542968750001,20.415429687500023],[99.8903320312501,20.424414062499977],[99.72011718750005,20.32543945312497],[99.45888671875005,20.363037109375],[99.48593750000006,20.14985351562501],[99.07421875000003,20.09936523437503],[98.9166992187501,19.77290039062504],[98.37128906250004,19.68916015625004],[98.01503906250005,19.74951171874997],[97.816796875,19.459960937500057],[97.74589843750002,18.58818359374999],[97.37392578125,18.51796875],[97.63222656250005,18.290332031250074],[97.7064453125,17.79711914062503],[98.4388671875,16.975683593750034],[98.66074218750006,16.330419921875006],[98.83544921875003,16.417578125],[98.88828125000006,16.351904296875034],[98.81796875000012,16.180810546874994],[98.59238281250006,16.05068359375005],[98.55693359375007,15.367675781249986],[98.19101562500012,15.204101562499972],[98.20214843749997,14.97592773437502],[98.57001953125004,14.359912109375031],[99.13681640625006,13.716699218749994],[99.12392578125,13.030761718750043],[99.40507812500002,12.547900390625003],[99.61474609374997,11.781201171875026],[99.1901367187501,11.105273437499989],[98.7572265625,10.660937499999974],[98.70253906250005,10.19038085937504],[98.56259765625006,10.034960937499989],[98.46494140625006,10.675830078124989],[98.67558593750007,10.986914062500034],[98.74140625000004,11.591699218749966],[98.87597656250003,11.719726562500028],[98.63632812500006,11.738378906250006],[98.69628906250003,12.225244140624994],[98.6002929687501,12.2453125],[98.67871093749997,12.348486328124963],[98.57597656250002,13.161914062500031],[98.20039062500004,13.980175781250026],[98.14951171875012,13.647607421875037],[98.11064453125007,13.712890625000014],[98.10019531250006,14.161523437500023],[97.90976562500012,14.652685546874991],[98.01875,14.652587890625057],[97.81230468750007,14.858935546874989],[97.7103515625,15.875537109375074],[97.58427734375007,16.019580078125017],[97.72597656250005,16.56855468750004],[97.37587890625005,16.52294921874997],[97.20019531249997,17.095410156249983],[96.85146484375005,17.401025390624994],[96.90859375000005,17.03095703125001],[96.76542968750002,16.710351562499966],[96.43115234374997,16.504931640625045],[96.18906250000012,16.768310546875057],[96.32431640625006,16.444433593750063],[95.76328125000006,16.169042968750006],[95.38955078125005,15.722753906250034],[95.30146484375004,15.756152343749989],[95.34677734375012,16.09760742187501],[95.17695312500004,15.825683593750028],[94.9425781250001,15.818261718750023],[94.89316406250006,16.182812499999955],[94.66152343750005,15.904394531250006],[94.70332031250004,16.511914062499955],[94.4416015625001,16.094384765624966],[94.22382812500004,16.016455078125006],[94.58896484375006,17.5693359375],[94.17070312500007,18.73242187499997],[94.24570312500006,18.741162109374983],[94.07001953125004,18.893408203125006],[94.04492187500003,19.287402343750074],[93.92919921874997,18.89965820312503],[93.70546875000005,19.026904296875017],[93.49306640625005,19.369482421875006],[93.82490234375004,19.238476562499955],[93.99814453125006,19.440869140624983],[93.61171875000005,19.776074218749983],[93.70703125000003,19.912158203125074],[93.25,20.070117187500017],[93.12949218750012,19.858007812500063],[93.00195312499997,20.074853515624994],[93.06679687500005,20.377636718749955],[92.82832031250004,20.177587890625063],[92.89111328124997,20.34033203125],[92.73564453125007,20.56269531250001],[92.72285156250004,20.29560546875004],[92.32412109375,20.791845703125063],[92.17958984375005,21.293115234375023],[92.33056640624997,21.439794921874977],[92.63164062500002,21.306201171875045],[92.5934570312501,21.46733398437499],[92.58281250000002,21.940332031249994],[92.57490234375004,21.978076171875045],[92.68896484374997,22.130957031250006],[92.72099609375002,22.132421875000063],[92.77138671875,22.104785156250017],[92.9645507812501,22.003759765625034],[93.07060546875002,22.20942382812501],[93.16201171875,22.360205078125006],[93.07871093750006,22.71821289062501],[93.20390625000002,23.03701171875005],[93.34941406250007,23.08496093750003],[93.36601562500007,23.132519531249955],[93.32626953125006,24.064208984375057],[93.45214843750003,23.987402343750034],[93.68339843750007,24.00654296875004],[94.07480468750006,23.8720703125],[94.29306640625012,24.321875],[94.37724609375002,24.473730468750006],[94.49316406250003,24.637646484374983],[94.70371093750012,25.097851562499955],[94.55302734375007,25.215722656249994],[94.66777343750007,25.458886718749966],[94.99199218750002,25.77045898437504],[95.01523437500006,25.912939453125006],[95.0929687500001,25.98730468749997],[95.13242187500006,26.041259765625057],[95.12929687500005,26.070410156250034],[95.10839843749997,26.091406250000034],[95.06894531250006,26.19111328125001],[95.0597656250001,26.473974609375006],[95.20146484375007,26.641406250000017],[96.19082031250005,27.26127929687499],[96.79785156249997,27.29619140624999],[96.95341796875002,27.13330078125003],[97.10205078125003,27.11542968750004],[97.10371093750004,27.16333007812503],[96.90195312500012,27.439599609374994],[96.88359375000002,27.514843749999955],[96.96279296875,27.698291015625017],[97.04970703125005,27.760009765625],[97.34355468750002,27.982324218749994],[97.30273437499997,28.08598632812496],[97.3224609375001,28.21796875000004],[97.35644531249997,28.254492187500006],[97.43144531250002,28.353906250000023],[97.53789062500002,28.510205078124983],[97.59921875000006,28.51704101562504],[98.06162109375012,28.185888671874977],[98.29882812499997,27.550097656250045],[98.4525390625,27.6572265625],[98.65117187500007,27.572460937499983],[98.7384765625001,26.785742187500006],[98.68554687499997,26.189355468750023],[98.56406250000006,26.072412109374994],[98.65625,25.86357421874999],[98.33378906250007,25.586767578125006],[98.14287109375007,25.571093750000017],[98.01074218749997,25.292529296875017],[97.8195312500001,25.251855468749994],[97.73789062500006,24.869873046875057],[97.58330078125002,24.77480468750005],[97.53144531250004,24.49169921875003],[97.7082031250001,24.228759765625],[97.56455078125012,23.911035156250023],[98.2125,24.110644531250017],[98.83505859375006,24.121191406250034],[98.67675781250003,23.905078125000045],[98.8322265625001,23.624365234374977],[98.86376953125003,23.191259765625034],[99.41806640625006,23.069238281250023],[99.50712890625002,22.959130859374994],[99.19296875000006,22.12597656249997],[99.9176757812501,22.02802734375001],[99.94072265625007,21.75874023437504],[100.14765625000004,21.480517578125017],[100.60458984375012,21.471777343750006],[101.07978515625004,21.75585937499997],[101.1388671875001,21.567480468749977]]]]},"properties":{"name":"Myanmar","childNum":15}},{"geometry":{"type":"Polygon","coordinates":[[[19.21875,43.449951171875],[19.670996093750006,43.163964843749994],[20.344335937500006,42.827929687499996],[20.054296875,42.760058593749996],[20.06396484375,42.54726562499999],[19.78828125000001,42.476171875],[19.65449218750001,42.628564453124994],[19.280664062500023,42.17255859375],[19.342382812500006,41.869091796875],[18.436328125000017,42.559716796874994],[18.5458984375,42.6416015625],[18.46601562500001,42.777246093749994],[18.44384765625,42.96845703125],[18.46015625000001,42.997900390625],[18.48847656250001,43.012158203125],[18.623632812500006,43.027685546875],[18.621875,43.124609375],[18.674218750000023,43.230810546875],[18.74921875000001,43.283544921875],[18.85107421875,43.346337890624994],[18.934667968750006,43.339453125],[18.97871093750001,43.285400390625],[19.026660156250017,43.292431640625],[19.03671875,43.357324218749994],[18.940234375000017,43.496728515624994],[18.95068359375,43.526660156249996],[18.97421875,43.542333984375],[19.0283203125,43.532519531249996],[19.080078125,43.517724609374994],[19.11279296875,43.52773437499999],[19.164355468750017,43.535449218749996],[19.1943359375,43.53330078125],[19.21875,43.449951171875]]]},"properties":{"name":"Montenegro","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[111.878125,43.68017578125],[111.00722656250002,43.34140625],[110.400390625,42.773681640625],[109.44316406249999,42.455957031249994],[109.33984375,42.438378906249994],[108.68730468749999,42.41611328125],[108.17119140624999,42.447314453124996],[106.77001953125,42.288720703124994],[105.86757812500002,41.993994140625],[105.31435546875002,41.770898437499994],[105.19707031249999,41.738037109375],[105.11542968750001,41.66328125],[105.05058593749999,41.61591796875],[104.98203125000003,41.595507812499996],[104.49824218750001,41.65869140625],[104.49824218750001,41.877001953124996],[104.30517578125,41.846142578125],[103.99726562500001,41.79697265625],[103.71113281250001,41.751318359375],[103.07285156250003,42.00595703125],[102.5751953125,42.092089843749996],[102.15664062500002,42.158105468749994],[101.97294921874999,42.215869140624996],[101.65996093749999,42.500048828124996],[101.5791015625,42.52353515625],[101.49531250000001,42.53876953125],[101.09199218750001,42.551318359374996],[100.51904296875,42.616796875],[100.08632812500002,42.670751953125],[99.98378906250002,42.67734375],[99.46787109375003,42.568212890625],[97.20566406250003,42.789794921875],[96.38544921875001,42.720361328124994],[95.85957031250001,43.2759765625],[95.52558593750001,43.953955078125],[95.32558593750002,44.039355468749996],[95.35029296875001,44.278076171875],[94.71201171875003,44.350830078125],[93.51621093750003,44.944482421874994],[92.78789062499999,45.0357421875],[92.57890624999999,45.010986328125],[92.423828125,45.008935546874994],[92.17265624999999,45.03525390625],[92.02978515625,45.068505859374994],[91.584375,45.076513671875],[91.05,45.217431640624994],[90.87724609374999,45.19609375],[90.66181640625001,45.525244140625],[91.00175781249999,46.035791015624994],[90.99677734375001,46.10498046875],[90.94755859374999,46.177294921874996],[90.91152343750002,46.270654296874994],[90.98574218750002,46.7490234375],[90.91054687500002,46.883251953125],[90.86992187499999,46.954492187499994],[90.79902343750001,46.98515625],[90.71552734375001,47.003857421875],[90.49619140625003,47.28515625],[90.42519531250002,47.5041015625],[90.34746093749999,47.596972656249996],[90.33066406250003,47.655175781249994],[90.31328124999999,47.67617187499999],[90.19101562500003,47.702099609375],[90.10322265625001,47.745410156249996],[90.02792968750003,47.877685546875],[89.95869140625001,47.886328125],[89.91044921874999,47.8443359375],[89.83134765624999,47.823291015624996],[89.778125,47.827001953125],[89.56093750000002,48.003955078124996],[89.47919921875001,48.029052734375],[89.04765624999999,48.0025390625],[88.97109375000002,48.049951171874994],[88.91777343749999,48.089013671874994],[88.83828125000002,48.101708984374994],[88.68183593750001,48.170556640624994],[88.57597656249999,48.220166015625],[88.56679687500002,48.317431640624996],[88.51708984375,48.38447265625],[88.41396484375002,48.40341796875],[88.30996093750002,48.472070312499994],[87.97968750000001,48.555126953125],[88.06005859375,48.707177734374994],[87.83183593749999,48.791650390624994],[87.7431640625,48.881640625],[87.87216796875003,49.000146484374994],[87.81630859375002,49.0802734375],[87.8251953125,49.11630859375],[87.81425781249999,49.1623046875],[87.93476562500001,49.16455078125],[87.98808593749999,49.186914062499994],[88.02851562500001,49.219775390624996],[88.11572265625,49.256298828125],[88.19257812500001,49.451708984374996],[88.63320312500002,49.486132812499996],[88.83164062500003,49.4484375],[88.86386718750003,49.527636718749996],[88.90019531249999,49.539697265624994],[88.94541015625003,49.507666015625],[88.97060546875002,49.483740234375],[89.00839843750003,49.472802734374994],[89.10947265625003,49.501367187499994],[89.17998046874999,49.5322265625],[89.20292968749999,49.595703125],[89.24394531249999,49.62705078125],[89.39560546875003,49.6115234375],[89.475,49.66054687499999],[89.57919921875003,49.69970703125],[89.65410156249999,49.71748046875],[89.64384765624999,49.90302734375],[90.0537109375,50.09375],[90.65507812499999,50.22236328125],[90.71435546875,50.259423828124994],[90.7607421875,50.305957031249996],[91.02158203125003,50.415478515625],[91.23378906250002,50.452392578125],[91.30058593749999,50.46337890625],[91.3408203125,50.470068359375],[91.4150390625,50.468017578125],[91.44648437500001,50.52216796875],[91.80429687500003,50.693603515625],[92.10400390625,50.6919921875],[92.1923828125,50.700585937499994],[92.35478515624999,50.864160156249994],[92.42636718750003,50.803076171875],[92.62666015625001,50.68828125],[92.68134765625001,50.683203125],[92.73867187500002,50.7109375],[92.779296875,50.778662109375],[92.8564453125,50.789111328124996],[92.94130859375002,50.778222656249994],[93.103125,50.60390625],[94.25107421875003,50.556396484375],[94.35468750000001,50.221826171874994],[94.61474609375,50.023730468749996],[94.67548828125001,50.028076171875],[94.71806640624999,50.043261718749996],[94.93027343750003,50.04375],[95.11142578125003,49.935449218749994],[95.52265625000001,49.91123046875],[96.06552734375003,49.99873046875],[96.31503906250003,49.901123046875],[96.98574218750002,49.8828125],[97.20859375000003,49.730810546875],[97.35976562500002,49.741455078125],[97.58935546875,49.911474609375],[98.00390625,50.0142578125],[98.25029296874999,50.30244140625],[98.27949218750001,50.533251953124996],[98.14501953125,50.5685546875],[98.07890624999999,50.603808593749996],[98.02978515625,50.64462890625],[97.82529296875003,50.985253906249994],[98.103125,51.483544921874994],[98.64052734375002,51.801171875],[98.89316406250003,52.11728515625],[99.92167968749999,51.755517578125],[100.03457031250002,51.737109375],[100.23037109375002,51.729833984375],[100.46894531250001,51.72607421875],[100.53623046875003,51.7134765625],[101.38125,51.45263671875],[101.57089843750003,51.4671875],[101.82119140625002,51.421044921874994],[102.11152343750001,51.353466796875],[102.15566406250002,51.313769531249996],[102.16005859375002,51.26083984375],[102.14238281249999,51.216064453125],[102.15195312500003,51.10751953125],[102.19453125000001,51.050683593749994],[102.21503906250001,50.829443359375],[102.31660156250001,50.71845703125],[102.28837890624999,50.585107421874994],[103.30439453125001,50.20029296875],[103.63291015625003,50.138574218749994],[103.72324218750003,50.153857421874996],[103.80263671875002,50.176074218749996],[104.07871093750003,50.154248046875],[105.38359374999999,50.47373046875],[106.21787109375003,50.304589843749994],[106.36845703124999,50.317578125],[106.57441406250001,50.32880859375],[106.71113281250001,50.31259765625],[106.94130859375002,50.196679687499994],[107.04023437500001,50.086474609374996],[107.14306640625,50.033007812499996],[107.23330078125002,49.989404296874994],[107.34707031250002,49.986669921875],[107.63095703125003,49.98310546875],[107.91660156250003,49.947802734374996],[107.96542968750003,49.653515625],[108.40693359375001,49.396386718749994],[108.5224609375,49.34150390625],[108.61367187500002,49.322802734374996],[109.23671875000002,49.334912109375],[109.45371093750003,49.296337890625],[109.52871093750002,49.269873046875],[110.19990234375001,49.17041015625],[110.42783203125003,49.219970703125],[110.70976562499999,49.14296875],[110.82792968749999,49.166162109374994],[111.20419921875003,49.304296875],[111.33662109375001,49.35585937499999],[111.42929687500003,49.342626953125],[112.07968750000003,49.42421875],[112.49492187499999,49.53232421875],[112.69736328125003,49.507275390625],[112.80644531249999,49.523583984374994],[112.91484374999999,49.569238281249994],[113.05556640625002,49.616259765624996],[113.09208984374999,49.692529296874994],[113.16416015625003,49.797167968749996],[113.31904296875001,49.874316406249996],[113.44550781250001,49.9416015625],[113.57421875,50.00703125],[114.29707031250001,50.2744140625],[114.7431640625,50.233691406249996],[115.00332031250002,50.138574218749994],[115.27451171875003,49.948876953124994],[115.36503906249999,49.911767578124994],[115.42919921875,49.896484375],[115.58798828125003,49.886035156249996],[115.7177734375,49.880615234375],[115.79521484374999,49.905908203124994],[115.92597656250001,49.9521484375],[116.13457031249999,50.010791015624996],[116.216796875,50.00927734375],[116.35117187500003,49.978076171874996],[116.55117187500002,49.9203125],[116.68330078125001,49.823779296874996],[115.82050781250001,48.57724609375],[115.79169921875001,48.455712890624994],[115.79658203125001,48.346337890624994],[115.78554687500002,48.2482421875],[115.63945312499999,48.18623046875],[115.52509765625001,48.130859375],[115.61640625000001,47.874804687499996],[115.89824218749999,47.686914062499994],[115.99384765625001,47.71132812499999],[116.07480468750003,47.78955078125],[116.23115234375001,47.858203125],[116.31718749999999,47.85986328125],[116.37822265624999,47.844042968749996],[116.51347656249999,47.83955078125],[116.65195312500003,47.864501953125],[116.76054687499999,47.869775390624994],[116.90117187499999,47.853076171874996],[116.95166015625,47.836572265624994],[117.06972656250002,47.806396484375],[117.28593749999999,47.666357421875],[117.35078125000001,47.652197265625],[117.76835937499999,47.987890625],[118.49843750000002,47.983984375],[118.56777343750002,47.943261718749994],[118.69052734375003,47.822265625],[118.75996093750001,47.757617187499996],[118.88027343750002,47.72509765625],[119.017578125,47.685351562499996],[119.08193359375002,47.654150390625],[119.71113281250001,47.15],[119.89785156250002,46.8578125],[119.8671875,46.672167968749996],[119.74746093750002,46.627197265625],[119.70664062500003,46.606005859374996],[119.62021484375003,46.603955078125],[119.47402343750002,46.62666015625],[119.33183593749999,46.613818359374996],[119.162109375,46.638671875],[118.95712890625003,46.73486328125],[118.84394531250001,46.760205078125],[118.79033203124999,46.7470703125],[118.72294921874999,46.69189453125],[118.64873046874999,46.70166015625],[118.58046875000002,46.69189453125],[118.40439453125003,46.703173828124996],[118.30869140625003,46.717041015625],[118.15683593750003,46.678564453125],[118.0712890625,46.6666015625],[117.7412109375,46.5181640625],[117.546875,46.58828125],[117.43808593750003,46.586230468749996],[117.40556640624999,46.5708984375],[117.39218750000003,46.53759765625],[117.35634765625002,46.436669921874994],[117.35693359375,46.39130859375],[117.33339843750002,46.36201171875],[116.85908203125001,46.387939453125],[116.56259765625003,46.289794921875],[116.21298828125003,45.8869140625],[116.22910156250003,45.845751953124996],[116.240625,45.79599609375],[116.19765625000002,45.73935546875],[115.68105468750002,45.458251953125],[115.16259765625,45.390234375],[114.91923828124999,45.378271484375],[114.73876953125,45.41962890625],[114.56015625000003,45.389990234375],[114.41914062500001,45.202587890625],[114.16738281250002,45.049853515624996],[114.08027343750001,44.971142578125],[113.87705078125003,44.89619140625],[113.65263671874999,44.763476562499996],[113.58701171875003,44.745703125],[113.04941406250003,44.810351562499996],[112.70673828125001,44.883447265624994],[112.59677734375003,44.91767578125],[112.49931640624999,45.0109375],[112.41132812500001,45.058203125],[112.11289062500003,45.062939453125],[112.03261718750002,45.081640625],[111.89804687500003,45.0640625],[111.40224609375002,44.36728515625],[111.93173828125003,43.81494140625],[111.878125,43.68017578125]]]},"properties":{"name":"Mongolia","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[145.75195312499997,15.133154296874991],[145.71318359375007,15.215283203125026],[145.821875,15.265380859375014],[145.75195312499997,15.133154296874991]]]},"properties":{"name":"N. Mariana Is.","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[32.112890625,-26.839453125],[32.10595703125,-26.52001953125],[32.04140625000002,-26.28125],[32.060546875,-26.018359375],[31.9482421875,-25.957617187500006],[31.98583984375,-24.46064453125001],[31.799609375000017,-23.8921875],[31.54560546875001,-23.48232421875001],[31.287890625000017,-22.40205078125001],[31.429492187500017,-22.298828125],[32.429785156250006,-21.29707031250001],[32.353613281250006,-21.136523437500003],[32.49238281250001,-20.659765625],[32.992773437500006,-19.98486328125],[32.77763671875002,-19.388769531250006],[32.84980468750001,-19.10439453125001],[32.69970703125,-18.94091796875],[32.99306640625002,-18.35957031250001],[32.87626953125002,-16.88359375],[32.94804687500002,-16.71230468750001],[31.939843750000023,-16.428808593750006],[31.236230468750023,-16.02363281250001],[30.437792968750017,-15.995312500000011],[30.39609375,-15.64306640625],[30.231835937500023,-14.990332031250006],[33.201757812500006,-14.013378906250011],[33.63642578125001,-14.568164062500003],[34.375,-14.4248046875],[34.50527343750002,-14.59814453125],[34.54082031250002,-15.297265625],[34.24609375,-15.829394531250003],[34.528125,-16.319140625],[34.93339843750002,-16.760351562500006],[35.11210937500002,-16.898535156250006],[35.06464843750001,-17.07861328125],[35.124609375,-17.127246093750003],[35.20136718750001,-17.13105468750001],[35.272558593750006,-17.118457031250003],[35.29042968750002,-17.096972656250003],[35.28115234375002,-16.80781250000001],[35.22978515625002,-16.639257812500006],[35.178320312500006,-16.573339843750006],[35.16718750000001,-16.56025390625001],[35.242773437500006,-16.375390625],[35.358496093750006,-16.160546875],[35.59931640625001,-16.12587890625001],[35.70888671875002,-16.095800781250006],[35.75527343750002,-16.05830078125001],[35.79121093750001,-15.958691406250011],[35.89277343750001,-14.891796875000011],[35.86669921875,-14.86376953125],[35.84716796875,-14.6708984375],[35.6904296875,-14.465527343750011],[35.48847656250001,-14.201074218750009],[35.37578125000002,-14.058691406250006],[35.24746093750002,-13.896875],[35.01386718750001,-13.643457031250009],[34.61152343750001,-13.437890625],[34.54570312500002,-13.21630859375],[34.542578125,-13.108691406250003],[34.35781250000002,-12.164746093750011],[34.60625,-11.690039062500006],[34.65957031250002,-11.588671875],[34.82656250000002,-11.57568359375],[34.95947265625,-11.578125],[35.1826171875,-11.574804687500006],[35.41826171875002,-11.583203125000011],[35.50439453125,-11.604785156250003],[35.56435546875002,-11.60234375],[35.630957031250006,-11.58203125],[35.78544921875002,-11.452929687500003],[35.91132812500001,-11.4546875],[36.08222656250001,-11.537304687500011],[36.17548828125001,-11.609277343750009],[36.19130859375002,-11.670703125],[36.3056640625,-11.706347656250003],[36.97890625000002,-11.566992187500006],[37.37285156250002,-11.71044921875],[37.54169921875001,-11.675097656250003],[37.72480468750001,-11.580664062500006],[37.92021484375002,-11.294726562500003],[38.491796875,-11.413281250000011],[38.9875,-11.167285156250003],[39.81708984375001,-10.912402343750003],[39.98867187500002,-10.82080078125],[40.46357421875001,-10.46435546875],[40.61171875000002,-10.661523437500009],[40.48662109375002,-10.76513671875],[40.59716796875,-10.830664062500006],[40.40283203125,-11.33203125],[40.53154296875002,-12.004589843750011],[40.48710937500002,-12.4921875],[40.58085937500002,-12.635546875],[40.43681640625002,-12.983105468750011],[40.56875,-12.984667968750003],[40.595703125,-14.122851562500003],[40.715625,-14.214453125],[40.64609375,-14.538671875],[40.775,-14.421289062500009],[40.84453125000002,-14.718652343750009],[40.617773437500006,-15.115527343750003],[40.650976562500006,-15.260937500000011],[39.98359375000001,-16.22548828125001],[39.79091796875002,-16.29453125],[39.84462890625002,-16.435644531250006],[39.084375,-16.97285156250001],[38.14492187500002,-17.242773437500006],[37.24453125000002,-17.73994140625001],[36.93935546875002,-17.993457031250003],[36.40371093750002,-18.76972656250001],[36.26289062500001,-18.71962890625001],[36.23564453125002,-18.861328125],[35.85371093750001,-18.99335937500001],[34.947851562500006,-19.81269531250001],[34.6494140625,-19.70136718750001],[34.75576171875002,-19.82197265625001],[34.705078125,-20.473046875],[34.98232421875002,-20.80625],[35.267675781250006,-21.650976562500006],[35.31572265625002,-22.396875],[35.38300781250001,-22.45458984375],[35.45634765625002,-22.11591796875001],[35.53007812500002,-22.248144531250006],[35.57539062500001,-22.96308593750001],[35.37041015625002,-23.79824218750001],[35.5419921875,-23.82441406250001],[35.48964843750002,-24.065527343750006],[34.99208984375002,-24.65058593750001],[32.96113281250001,-25.49042968750001],[32.590429687500006,-26.00410156250001],[32.84882812500001,-26.26806640625],[32.95488281250002,-26.08359375],[32.93359375,-26.25234375],[32.88916015625,-26.83046875],[32.88613281250002,-26.84931640625001],[32.353515625,-26.861621093750003],[32.19960937500002,-26.83349609375],[32.112890625,-26.839453125]]]},"properties":{"name":"Mozambique","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-16.37333984374999,19.706445312499994],[-16.437548828124932,19.609277343749994],[-16.477001953124983,19.710351562499994],[-16.343652343749994,19.86621093750003],[-16.37333984374999,19.706445312499994]]],[[[-5.359912109374989,16.282861328124994],[-5.5125,15.496289062499983],[-9.293701171875,15.502832031249994],[-9.350585937499943,15.677392578125023],[-9.38535156249992,15.667626953124994],[-9.4265625,15.623046875000057],[-9.447705078124926,15.574853515624994],[-9.446923828124937,15.458203124999955],[-9.941406249999972,15.373779296874986],[-10.696582031249989,15.42265625],[-10.9482421875,15.151123046875014],[-11.455224609374994,15.62539062499999],[-11.760156249999937,15.425537109375057],[-11.828759765624966,15.244873046875014],[-11.872851562499989,14.995166015625031],[-12.02158203124992,14.804931640625],[-12.081542968749972,14.766357421875057],[-12.104687499999955,14.745361328125043],[-12.40869140625,14.889013671874991],[-12.735253906249994,15.13125],[-13.105273437499989,15.57177734375],[-13.40966796875,16.059179687500006],[-13.756640624999989,16.172509765624994],[-13.868457031249932,16.14814453125001],[-14.300097656249932,16.58027343750001],[-14.990625,16.676904296874994],[-15.768212890624994,16.485107421875],[-16.23901367187497,16.53129882812499],[-16.44101562499992,16.20454101562504],[-16.480078124999977,16.097216796875017],[-16.50205078124992,15.917333984375063],[-16.53525390624995,15.838378906250057],[-16.53574218749995,16.28681640625001],[-16.463623046875,16.60151367187501],[-16.030322265625017,17.88793945312497],[-16.213085937499926,19.003320312500023],[-16.51445312499996,19.361962890624994],[-16.305273437499977,19.51264648437504],[-16.44487304687499,19.47314453124997],[-16.21044921875003,20.227929687500023],[-16.42978515624995,20.652343750000057],[-16.622509765624955,20.634179687499994],[-16.87607421874992,21.086132812499955],[-16.998242187499926,21.039697265625023],[-17.048046874999955,20.80615234375003],[-17.06396484375,20.89882812499999],[-16.96455078125001,21.329248046875023],[-15.231201171875,21.331298828125],[-14.084667968749926,21.33271484375001],[-13.626025390624932,21.33325195312503],[-13.396728515624943,21.333544921875017],[-13.167431640624926,21.333789062500074],[-13.016210937499949,21.33393554687501],[-13.025097656249983,21.46679687499997],[-13.032226562500028,21.572070312500017],[-13.041748046875,21.71381835937504],[-13.051220703124983,21.854785156250074],[-13.094335937499977,22.49599609375005],[-13.153271484374983,22.820507812499983],[-13.031494140624943,23.000244140625],[-12.895996093749972,23.08955078125001],[-12.739599609375006,23.192724609375063],[-12.62041015624996,23.271337890625006],[-12.559375,23.290820312500045],[-12.372900390624977,23.318017578124994],[-12.023437499999943,23.467578125000017],[-12.016308593749983,23.97021484375],[-12.016308593749983,24.378662109375],[-12.016308593749983,24.923242187499994],[-12.016308593749983,25.059375],[-12.016308593749983,25.331689453124994],[-12.016308593749983,25.740136718749994],[-12.016308593749983,25.995410156250017],[-10.376123046874966,25.995458984375034],[-9.444531249999983,25.99550781250005],[-9.071923828124937,25.99550781250005],[-8.885644531249994,25.99550781250005],[-8.682226562499949,25.99550781250005],[-8.68212890625,26.109472656250006],[-8.68212890625,26.273193359375057],[-8.682324218749955,26.49770507812505],[-8.682617187500028,26.723144531250057],[-8.682861328124972,26.92133789062501],[-8.683349609375,27.285937500000045],[-4.822607421874949,24.99560546875],[-5.640771484374994,24.99516601562499],[-5.959814453124977,24.994970703125063],[-6.287207031249977,24.99482421875001],[-6.594091796874977,24.99462890624997],[-6.396582031249977,23.274804687499994],[-6.02641601562496,20.04218750000001],[-5.827099609374955,18.301562500000045],[-5.741699218749943,17.555566406250023],[-5.713183593750017,17.306884765625],[-5.684765624999983,17.058251953124966],[-5.628662109375028,16.568652343750045],[-5.50961914062492,16.442041015625023],[-5.359912109374989,16.282861328124994]]]]},"properties":{"name":"Mauritania","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[-62.1484375,16.74033203124999],[-62.221630859375,16.699511718750003],[-62.191357421875,16.804394531249997],[-62.1484375,16.74033203124999]]]},"properties":{"name":"Montserrat","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[57.65126953125002,-20.48486328125],[57.31767578125002,-20.42763671875001],[57.416015625,-20.18378906250001],[57.65654296875002,-19.98994140625001],[57.7919921875,-20.21259765625001],[57.65126953125002,-20.48486328125]]]},"properties":{"name":"Mauritius","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[34.95947265625003,-11.578125],[34.82656250000005,-11.575683593749972],[34.65957031250005,-11.58867187499996],[34.61855468750005,-11.620214843749991],[34.60625,-11.690039062500006],[34.3578125,-12.164746093749997],[34.542578125,-13.108691406250003],[34.54570312500002,-13.21630859375],[34.6115234375001,-13.437890625000023],[35.0138671875001,-13.64345703124998],[35.247460937499994,-13.896875],[35.37578125000002,-14.05869140625002],[35.48847656250004,-14.20107421874998],[35.69042968749997,-14.465527343750026],[35.84716796875003,-14.670898437500043],[35.8927734375001,-14.891796875000011],[35.7912109375001,-15.958691406250026],[35.75527343750005,-16.058300781249983],[35.708886718749994,-16.095800781249977],[35.5993164062501,-16.12587890624998],[35.35849609375006,-16.160546875000023],[35.242773437500006,-16.375390625],[35.16718750000004,-16.56025390625001],[35.178320312500006,-16.57333984375002],[35.22978515625002,-16.639257812500034],[35.281152343749994,-16.8078125],[35.29042968750005,-17.096972656250017],[35.27255859375006,-17.11845703124996],[35.2013671875001,-17.13105468750004],[35.124609375,-17.127246093749974],[35.06464843750004,-17.078613281250014],[35.11210937500002,-16.898535156250006],[34.93339843750002,-16.760351562500006],[34.528125,-16.319140625],[34.24609374999997,-15.829394531249974],[34.54082031250002,-15.297265625],[34.50527343750005,-14.598144531249957],[34.375,-14.4248046875],[33.63642578125004,-14.568164062499974],[33.148046875,-13.94091796875],[32.98125,-14.009375],[32.797460937500006,-13.6884765625],[32.67041015624997,-13.590429687500006],[32.96757812500002,-13.225],[32.97519531250006,-12.701367187499983],[33.51230468750006,-12.347753906249977],[33.340136718750074,-12.308300781250011],[33.25234375000005,-12.112597656250031],[33.3039062500001,-11.69082031249998],[33.23271484375002,-11.417675781250026],[33.26835937500002,-11.403906249999977],[33.379785156249994,-11.15791015625004],[33.29277343750002,-10.85234375],[33.661523437499994,-10.553125],[33.55371093749997,-10.391308593750011],[33.53759765624997,-10.351562499999986],[33.52890625,-10.234667968749974],[33.31152343750003,-10.037988281249966],[33.3371093750001,-9.954003906249994],[33.350976562499994,-9.862207031250037],[33.25,-9.759570312500003],[33.148046875,-9.603515625],[32.99599609375005,-9.622851562499946],[32.91992187500003,-9.407421875000026],[33.88886718750004,-9.670117187499983],[33.99560546875003,-9.495410156250003],[34.32089843750006,-9.731542968749977],[34.56992187500006,-10.241113281249966],[34.66708984375006,-10.792480468750028],[34.60791015624997,-11.08046875],[34.77382812500005,-11.341699218750009],[34.890625,-11.3935546875],[34.93701171874997,-11.463476562500034],[34.95947265625003,-11.578125]]]},"properties":{"name":"Malawi","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[111.38925781250006,2.415332031250031],[111.31152343749997,2.437597656250034],[111.33349609374997,2.768310546875],[111.38925781250006,2.415332031250031]]],[[[104.22158203125,2.731738281250003],[104.1291015625001,2.767236328125037],[104.18476562500004,2.871728515625009],[104.22158203125,2.731738281250003]]],[[[117.88476562499997,4.186132812500006],[117.64902343750012,4.168994140624974],[117.70800781249997,4.262402343749997],[117.88476562499997,4.186132812500006]]],[[[100.28896484375005,5.294726562499989],[100.19101562500006,5.28286132812498],[100.2455078125,5.467773437499986],[100.33886718749997,5.410058593750037],[100.28896484375005,5.294726562499989]]],[[[99.848046875,6.465722656249994],[99.9186523437501,6.358593750000011],[99.74375,6.263281249999963],[99.64628906250002,6.418359375000023],[99.848046875,6.465722656249994]]],[[[102.10107421874997,6.242236328125031],[102.34013671875002,6.172021484375023],[102.534375,5.862548828125028],[103.09707031250005,5.408447265624986],[103.41582031250007,4.85029296875004],[103.43945312499997,2.93310546875],[103.8122070312501,2.58046875],[104.21855468750002,1.722851562499997],[104.25009765625012,1.388574218750009],[104.11494140625004,1.412255859375037],[103.98144531250003,1.623632812500034],[103.99150390625002,1.454785156249997],[103.6945312500001,1.449658203125026],[103.48027343750007,1.329492187499966],[103.35683593750005,1.546142578125057],[102.72714843750012,1.855566406250034],[101.29550781250012,2.885205078125011],[101.29990234375012,3.253271484375034],[100.71542968750006,3.966210937499966],[100.79550781250012,4.023388671874983],[100.61455078125002,4.3734375],[100.34326171874997,5.984179687500031],[100.11914062499997,6.441992187500048],[100.26142578125004,6.682714843749963],[100.3454101562501,6.549902343750006],[100.75449218750012,6.460058593749991],[100.87392578125,6.24541015624996],[101.05351562500002,6.242578125],[100.98164062500004,5.771044921875045],[101.1139648437501,5.636767578125045],[101.5560546875,5.907763671875003],[101.67841796875004,5.778808593750028],[101.87363281250012,5.825292968749991],[102.10107421874997,6.242236328125031]]],[[[117.5744140625001,4.17060546875004],[117.10058593750003,4.337060546875023],[116.51474609375006,4.370800781249969],[115.86074218750005,4.348046875000037],[115.67880859375006,4.193017578124994],[115.45439453125002,3.034326171875009],[115.24697265625005,3.025927734374989],[115.117578125,2.89487304687502],[115.08076171875004,2.63422851562504],[115.1791015625,2.523193359374972],[114.78642578125002,2.250488281250014],[114.83056640625003,1.980029296874989],[114.5125,1.452001953124963],[113.90234375000003,1.434277343749997],[113.6222656250001,1.2359375],[113.00654296875004,1.433886718750003],[112.94296875000006,1.566992187500034],[112.47617187500006,1.559082031250028],[112.1857421875001,1.4390625],[112.078515625,1.143359374999974],[111.80898437500005,1.011669921874969],[111.10136718750002,1.050537109374986],[110.50576171875005,0.861962890625023],[109.65400390625004,1.614892578125023],[109.53896484375,1.89619140625004],[109.62890625000003,2.027539062499983],[109.86484375000012,1.764453125000031],[110.34921875000012,1.719726562499972],[111.22324218750012,1.395849609374991],[111.0287109375,1.557812500000026],[111.26816406250012,2.13974609375002],[111.20859375000012,2.379638671875043],[111.44384765625003,2.381542968749983],[111.5125,2.743017578124991],[112.98789062500006,3.161914062499974],[113.92392578125006,4.243212890625003],[114.0638671875,4.592675781249966],[114.65410156250007,4.037646484375045],[114.84023437500005,4.393212890625009],[114.74667968750006,4.718066406250017],[115.02675781250005,4.899707031249989],[115.10703125000006,4.390429687499974],[115.290625,4.352587890624989],[115.1400390625,4.899755859374991],[115.37490234375,4.932763671874966],[115.55449218750007,5.093554687500045],[115.41904296875012,5.413183593749963],[115.60390625,5.603417968749994],[115.74082031250012,5.533007812500045],[115.8771484375001,5.613525390625014],[116.74980468750007,6.977099609374989],[116.8498046875001,6.826708984374989],[116.78808593749997,6.606103515624994],[117.12851562500012,6.968896484375009],[117.2298828125,6.939990234374974],[117.29404296875006,6.676904296875023],[117.60966796875002,6.512646484375054],[117.69375,6.35],[117.64453124999997,6.001855468749994],[117.5011718750001,5.884667968750009],[118.00380859375,6.053320312499991],[118.11582031250006,5.8625],[117.93476562500004,5.7875],[117.97363281249997,5.70625],[118.35312500000012,5.80605468749998],[118.59482421875006,5.592089843750003],[119.22343750000007,5.412646484375031],[119.2663085937501,5.308105468750057],[119.21962890625,5.159814453125037],[118.9125,5.02290039062504],[118.26054687500007,4.988867187500034],[118.18535156250002,4.828515625000051],[118.5625,4.502148437499997],[118.54833984375003,4.379248046875006],[118.008203125,4.250244140625014],[117.6964843750001,4.342822265625045],[117.5744140625001,4.17060546875004]]],[[[117.14160156250003,7.168212890625028],[117.08066406250006,7.115283203124989],[117.06425781250007,7.26069335937504],[117.2640625,7.351660156250006],[117.26679687500004,7.220800781249991],[117.14160156250003,7.168212890625028]]]]},"properties":{"name":"Malaysia","childNum":8}},{"geometry":{"type":"Polygon","coordinates":[[[23.380664062500017,-17.640625],[24.27490234375,-17.481054687500006],[24.73291015625,-17.51777343750001],[25.001757812500017,-17.56855468750001],[25.2587890625,-17.793554687500006],[24.909082031250023,-17.821386718750006],[24.530566406250017,-18.052734375],[24.243945312500017,-18.0234375],[23.599707031250006,-18.4599609375],[23.219335937500006,-17.99970703125001],[20.97412109375,-18.31884765625],[20.9794921875,-21.9619140625],[19.977343750000017,-22.00019531250001],[19.98046875,-24.77675781250001],[19.98046875,-28.310351562500003],[19.98046875,-28.451269531250006],[19.539843750000017,-28.574609375],[19.31269531250001,-28.73330078125001],[19.24580078125001,-28.901660156250003],[19.16171875,-28.938769531250003],[18.310839843750017,-28.88623046875],[17.44794921875001,-28.69814453125001],[17.34785156250001,-28.50117187500001],[17.358691406250017,-28.26943359375001],[17.1884765625,-28.13251953125001],[17.05625,-28.031054687500003],[16.93330078125001,-28.069628906250003],[16.875292968750017,-28.1279296875],[16.841210937500023,-28.21894531250001],[16.81015625,-28.26455078125001],[16.7875,-28.39472656250001],[16.755761718750023,-28.4521484375],[16.62617187500001,-28.487890625],[16.487109375000017,-28.572851562500006],[16.447558593750017,-28.617578125],[15.719042968750017,-27.9658203125],[15.341503906250011,-27.386523437500003],[15.139062500000023,-26.50800781250001],[14.9677734375,-26.31806640625001],[14.837109375000011,-25.033203125],[14.5015625,-24.201953125],[14.462792968750023,-22.44912109375001],[13.450585937500023,-20.91669921875001],[13.168359375000023,-20.184667968750006],[12.458203125000011,-18.9267578125],[11.77587890625,-18.001757812500003],[11.733496093750006,-17.7509765625],[11.743066406250023,-17.24921875000001],[11.902539062500011,-17.2265625],[12.013964843750017,-17.168554687500006],[12.21337890625,-17.2099609375],[12.318457031250006,-17.21337890625],[12.359277343750023,-17.205859375],[12.548144531250017,-17.212695312500003],[13.179492187500017,-16.9716796875],[13.475976562500023,-17.0400390625],[14.017480468750023,-17.40888671875001],[16.1484375,-17.390234375],[18.396386718750023,-17.3994140625],[18.95527343750001,-17.803515625],[20.1943359375,-17.863671875],[20.745507812500023,-18.01972656250001],[22.32421875,-17.8375],[23.380664062500017,-17.640625]]]},"properties":{"name":"Namibia","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[167.54443359375003,-22.62324218750001],[167.44375,-22.63916015624997],[167.44345703125006,-22.541406250000037],[167.54443359375003,-22.62324218750001]]],[[[168.01093750000004,-21.429980468750017],[168.1390625,-21.44521484375001],[168.12070312500012,-21.615820312500034],[167.96679687500003,-21.641601562499957],[167.81542968749997,-21.392675781249963],[167.9884765625001,-21.337890624999986],[168.01093750000004,-21.429980468750017]]],[[[167.40087890625003,-21.16064453125003],[167.07265625,-20.99726562499997],[167.03271484374997,-20.922558593750026],[167.18945312500003,-20.803515625000017],[167.05576171875012,-20.720214843750014],[167.29794921875006,-20.732519531250034],[167.40087890625003,-21.16064453125003]]],[[[164.20234375000004,-20.246093749999957],[164.4359375,-20.282226562499957],[165.191796875,-20.768847656249974],[165.66279296875004,-21.267187499999977],[166.94238281250003,-22.09013671875003],[166.97031250000012,-22.32285156250002],[166.77412109375004,-22.37617187500004],[166.4679687500001,-22.256054687499997],[164.92744140625004,-21.289843749999974],[164.16972656250007,-20.48017578125004],[164.05966796875012,-20.141503906249966],[164.20234375000004,-20.246093749999957]]]]},"properties":{"name":"New Caledonia","childNum":4}},{"geometry":{"type":"Polygon","coordinates":[[[14.97900390625,22.99619140624999],[15.181835937500011,21.523388671874997],[15.607324218750023,20.954394531250003],[15.587109375000011,20.733300781249994],[15.963183593750017,20.34619140625],[15.735058593750011,19.904052734375],[15.474316406250011,16.908398437499997],[14.367968750000017,15.750146484374994],[13.4482421875,14.380664062500003],[13.505761718750023,14.134423828124994],[13.606347656250023,13.70458984375],[13.426953125000011,13.701757812499991],[13.323828125,13.670849609374997],[12.871679687500006,13.449023437500003],[12.65478515625,13.3265625],[12.463183593750017,13.09375],[10.958886718750023,13.371533203124997],[10.475878906250017,13.330224609374994],[10.229589843750006,13.281005859375],[10.184667968750006,13.270117187499991],[9.615917968750011,12.810644531249991],[9.201562500000023,12.821484375],[8.750585937500006,12.908154296874997],[8.4560546875,13.059667968749991],[8.095019531250017,13.291162109374994],[7.955761718750011,13.32275390625],[7.788671875,13.337890625],[7.056738281250006,13.000195312499997],[6.804296875,13.107666015625],[6.2998046875,13.658789062499991],[6.184277343750011,13.66367187499999],[5.838183593750017,13.765380859375],[5.491992187500017,13.872851562500003],[5.415820312500017,13.859179687500003],[5.361621093750017,13.836865234374997],[5.241894531250011,13.757226562499994],[4.664843750000017,13.733203125],[4.147558593750006,13.457714843749997],[3.947851562500006,12.775048828124994],[3.646679687500011,12.529980468749997],[3.595410156250011,11.6962890625],[2.805273437500006,12.383837890624989],[2.366015625000017,12.221923828125],[2.38916015625,11.897070312499991],[2.072949218750011,12.309375],[2.226269531250011,12.466064453125],[2.104589843750006,12.701269531249991],[1.56494140625,12.635400390624994],[0.9873046875,13.041894531249994],[0.988476562500011,13.36484375],[1.201171875,13.357519531249991],[0.6181640625,13.703417968750003],[0.42919921875,13.972119140624997],[0.382519531250011,14.245800781249997],[0.163867187500017,14.497216796874994],[0.217480468750011,14.911474609374991],[0.947460937500011,14.982128906249997],[1.300195312500023,15.272265625],[3.001074218750006,15.340966796874994],[3.06015625,15.427197265624997],[3.504296875000023,15.356347656249994],[3.5205078125,15.483105468749997],[3.842968750000011,15.701708984375003],[4.121289062500011,16.357714843750003],[4.234667968750017,16.996386718750003],[4.227636718750006,19.142773437499997],[5.836621093750011,19.479150390624994],[7.481738281250017,20.873095703125003],[11.967871093750006,23.517871093750003],[13.48125,23.18017578125],[14.215527343750011,22.619677734375003],[14.97900390625,22.99619140624999]]]},"properties":{"name":"Niger","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[7.30078125,4.418164062500026],[7.140429687500017,4.395117187500034],[7.227343750000045,4.527343749999972],[7.30078125,4.418164062500026]]],[[[6.804296875,13.107666015625],[7.056738281250006,13.00019531250004],[7.788671875,13.337890625],[7.955761718750011,13.322753906250028],[8.095019531250045,13.29116210937498],[8.750585937500034,12.908154296875026],[9.20156250000008,12.82148437500004],[9.615917968750011,12.810644531249963],[10.184667968750063,13.270117187499963],[10.229589843749977,13.281005859375043],[10.475878906250074,13.330224609375037],[10.958886718750051,13.371533203125011],[12.463183593750017,13.09375],[12.654785156250057,13.3265625],[13.426953125000068,13.701757812499963],[13.606347656250023,13.704589843750014],[13.932324218750011,13.258496093749997],[14.06396484375,13.078515625],[14.160058593750023,12.612792968749986],[14.184863281250017,12.447216796874997],[14.272851562500023,12.356494140624989],[14.518945312500051,12.298242187500023],[14.619726562500063,12.150976562500048],[14.559765625000011,11.492285156249963],[14.20234375000004,11.268164062499963],[14.143261718750068,11.248535156250043],[14.056738281250034,11.245019531250037],[13.981445312500057,11.21186523437504],[13.892089843750057,11.140087890624983],[13.699902343749983,10.873144531250048],[13.53535156250004,10.605078124999963],[13.414550781250028,10.171435546874989],[13.269921875000051,10.036181640624974],[13.198730468750028,9.563769531250003],[12.929492187500074,9.426269531249972],[12.87568359375004,9.303515625000017],[12.80654296875008,8.886621093749994],[12.7822265625,8.817871093750014],[12.651562500000011,8.667773437499989],[12.40351562500004,8.59555664062502],[12.311328125000074,8.419726562499989],[12.2333984375,8.282324218749977],[12.016015625000051,7.589746093750009],[11.809179687500006,7.345068359374991],[11.767382812500017,7.272265624999989],[11.861425781249977,7.11640625000004],[11.657519531250017,6.951562500000023],[11.580078125000057,6.88886718750004],[11.551660156250023,6.697265625],[11.153320312500057,6.437939453125011],[11.1064453125,6.457714843750054],[11.032519531250045,6.697900390625037],[10.954199218750006,6.7765625],[10.60625,7.063085937500006],[10.413183593750006,6.877734375],[10.293066406250034,6.876757812499974],[10.205468750000051,6.891601562499986],[10.185546874999972,6.91279296875004],[10.167773437500017,6.959179687499983],[10.143554687500057,6.99643554687502],[10.038867187500045,6.921386718750014],[9.874218750000068,6.803271484375017],[9.82070312500008,6.783935546874986],[9.779882812500034,6.760156250000023],[9.725585937499972,6.65],[9.659960937500017,6.531982421874986],[9.490234375,6.418652343749997],[8.997167968750006,5.917724609375],[8.715625,5.046875],[8.514843750000068,4.724707031250034],[8.23378906250008,4.907470703124972],[8.293066406250006,4.557617187500014],[7.644238281250068,4.525341796875011],[7.530761718750028,4.655175781249994],[7.284375,4.547656250000031],[7.076562500000051,4.716162109374991],[7.15468750000008,4.514404296875],[6.92324218750008,4.390673828125017],[6.767675781250006,4.724707031250034],[6.860351562500057,4.373339843750045],[6.633007812500011,4.340234375000051],[6.579980468750051,4.475976562499994],[6.554589843750023,4.34140625000002],[6.263671875,4.309423828124991],[6.270996093749972,4.432128906250028],[6.173339843749972,4.277392578125031],[5.970703125,4.338574218749983],[5.587792968750051,4.647216796874972],[5.448144531250023,4.945849609374974],[5.383300781250057,5.129003906249977],[5.475976562500023,5.153857421874989],[5.370019531250023,5.195019531250026],[5.367968750000045,5.337744140624963],[5.549707031250023,5.474218749999963],[5.385839843750034,5.401757812500037],[5.199218750000028,5.533544921874977],[5.456640624999977,5.61171875],[5.327343750000011,5.707519531249986],[5.112402343750034,5.64155273437504],[4.861035156250068,6.026318359374997],[4.431347656250011,6.348583984375026],[3.450781249999977,6.427050781250017],[3.71699218750004,6.597949218750017],[3.430175781250057,6.525],[3.335546875000063,6.396923828125011],[2.706445312500051,6.369238281249963],[2.735644531250045,6.595703125],[2.753710937499989,6.661767578124966],[2.774609374999983,6.711718750000017],[2.752929687500028,6.771630859374966],[2.731738281250045,6.852832031249989],[2.721386718750068,6.980273437500017],[2.75673828125008,7.067919921875017],[2.750488281250057,7.39506835937496],[2.765820312500068,7.422509765625051],[2.783984375000045,7.443408203125045],[2.78515625,7.476855468750017],[2.703125,8.371826171875],[2.774804687500023,9.048535156250026],[3.044921875,9.08383789062502],[3.325195312499972,9.778466796875051],[3.60205078125,10.004541015625009],[3.646582031250006,10.408984374999989],[3.771777343750017,10.417626953124966],[3.83447265625,10.607421875],[3.7568359375,10.76875],[3.71640625,11.07958984375],[3.695312499999972,11.12031250000004],[3.63886718750004,11.176855468750006],[3.487792968749972,11.395410156250037],[3.490527343750017,11.499218750000054],[3.55390625000004,11.631884765624989],[3.595410156250068,11.696289062500057],[3.664746093750068,11.762451171875028],[3.646679687500011,12.529980468749983],[3.947851562500006,12.775048828124994],[4.147558593750006,13.457714843749983],[4.664843750000045,13.733203124999974],[5.241894531250011,13.757226562499994],[5.361621093750074,13.836865234375054],[5.415820312500017,13.859179687499974],[5.491992187500074,13.872851562500003],[6.2998046875,13.658789062500006],[6.804296875,13.107666015625]]]]},"properties":{"name":"Nigeria","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[-83.6419921875,10.917236328125],[-83.71293945312499,10.785888671875],[-83.91928710937499,10.7353515625],[-84.6341796875,11.045605468749997],[-84.9091796875,10.9453125],[-85.5841796875,11.189453125],[-85.7443359375,11.06210937499999],[-87.670166015625,12.965673828124991],[-87.58505859374999,13.043310546874991],[-87.42436523437499,12.921142578125],[-87.33725585937499,12.979248046875],[-87.05917968749999,12.991455078125],[-87.00932617187499,13.0078125],[-86.918212890625,13.223583984374997],[-86.87353515625,13.266503906249994],[-86.792138671875,13.27978515625],[-86.72929687499999,13.284375],[-86.710693359375,13.313378906249994],[-86.76352539062499,13.63525390625],[-86.77060546874999,13.69873046875],[-86.758984375,13.746142578125003],[-86.733642578125,13.763476562500003],[-86.61025390625,13.774853515624997],[-86.376953125,13.755664062500003],[-86.33173828125,13.770068359375003],[-86.238232421875,13.899462890625003],[-86.15122070312499,13.994580078124997],[-86.0892578125,14.037207031249991],[-86.04038085937499,14.050146484374991],[-85.9837890625,13.965673828124991],[-85.78671875,13.844433593749997],[-85.75341796875,13.85205078125],[-85.73393554687499,13.858691406250003],[-85.727734375,13.876074218749991],[-85.731201171875,13.931835937499997],[-85.68193359374999,13.982568359374994],[-85.20834960937499,14.311816406250003],[-85.059375,14.582958984374997],[-84.86044921874999,14.809765625],[-84.645947265625,14.661083984374997],[-84.53764648437499,14.633398437499991],[-83.635498046875,14.876416015624997],[-83.5365234375,14.977001953124997],[-83.4150390625,15.008056640625],[-83.15751953124999,14.993066406249994],[-83.18535156249999,14.956396484374991],[-83.21591796874999,14.932373046875],[-83.27988281249999,14.812792968750003],[-83.344384765625,14.902099609375],[-83.413720703125,14.825341796874994],[-83.29921875,14.7490234375],[-83.187744140625,14.340087890625],[-83.4123046875,13.99648437499999],[-83.567333984375,13.3203125],[-83.5109375,12.411816406249997],[-83.627197265625,12.459326171874991],[-83.59335937499999,12.713085937499997],[-83.75424804687499,12.501953125],[-83.680419921875,12.024316406249994],[-83.7671875,12.059277343749997],[-83.82890624999999,11.861035156249997],[-83.70458984375,11.824560546874991],[-83.6517578125,11.642041015624997],[-83.86787109375,11.300048828125],[-83.6419921875,10.917236328125]]]},"properties":{"name":"Nicaragua","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-169.80341796875,-19.0830078125],[-169.94833984375,-19.072851562500006],[-169.834033203125,-18.96601562500001],[-169.80341796875,-19.0830078125]]]},"properties":{"name":"Niue","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-68.205810546875,12.144580078124989],[-68.25434570312495,12.032080078124977],[-68.36923828125,12.301953124999983],[-68.205810546875,12.144580078124989]]],[[[4.226171875000034,51.38647460937503],[3.902050781250011,51.20766601562502],[3.43251953125008,51.24575195312505],[3.35009765625,51.37768554687503],[4.226171875000034,51.38647460937503]]],[[[3.94912109375008,51.73945312500001],[4.07509765625008,51.648779296875006],[3.699023437500017,51.70991210937501],[3.94912109375008,51.73945312500001]]],[[[4.886132812500023,53.07070312500005],[4.70917968750004,53.036035156249994],[4.886425781249983,53.18330078124998],[4.886132812500023,53.07070312500005]]],[[[4.226171875000034,51.38647460937503],[3.448925781250068,51.54077148437503],[3.743945312500017,51.596044921875006],[4.27412109375004,51.47163085937498],[4.004785156250051,51.595849609374966],[4.182617187500057,51.61030273437498],[3.946875,51.810546875],[4.482812500000023,52.30917968749998],[4.76875,52.941308593749966],[5.061230468750068,52.96064453125001],[5.532031250000074,53.268701171874966],[6.062207031250068,53.407080078125006],[6.816210937500045,53.44116210937503],[7.197265625000028,53.28227539062499],[7.033007812500045,52.65136718749997],[6.710742187500045,52.61787109374998],[6.748828125000074,52.464013671874994],[7.035156250000057,52.38022460937498],[6.724511718749994,52.080224609374966],[6.800390625,51.96738281249998],[5.948730468750057,51.80268554687501],[6.198828125000034,51.45],[6.129980468750034,51.14741210937501],[5.857519531250034,51.030126953125006],[6.048437500000034,50.90488281250006],[5.993945312500017,50.75043945312504],[5.693554687500011,50.774755859375006],[5.796484375000034,51.153076171875],[5.214160156250045,51.278955078124966],[5.03095703125004,51.46909179687498],[4.226171875000034,51.38647460937503]]],[[[5.325781250000063,53.38574218750003],[5.190234375000074,53.39179687500001],[5.582617187500063,53.438085937500034],[5.325781250000063,53.38574218750003]]]]},"properties":{"name":"Netherlands","childNum":6,"cp":[5.0752777,52.358465]}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[5.085839843750023,60.30756835937501],[5.089062500000068,60.188769531250045],[4.95722656250004,60.44726562500006],[5.085839843750023,60.30756835937501]]],[[[4.958691406250068,61.084570312500034],[4.79902343750004,61.08271484375001],[4.861621093749989,61.19384765625],[4.958691406250068,61.084570312500034]]],[[[8.10273437500004,63.33759765625004],[7.804003906250017,63.413916015625034],[8.073535156250045,63.47080078124998],[8.10273437500004,63.33759765625004]]],[[[8.470800781250063,63.66713867187502],[8.287109375000028,63.68715820312502],[8.764648437500057,63.804638671874955],[8.78652343750008,63.703466796875034],[8.470800781250063,63.66713867187502]]],[[[11.2314453125,64.865869140625],[10.739843750000034,64.87031250000001],[11.02099609375,64.97871093749995],[11.2314453125,64.865869140625]]],[[[12.971777343750063,67.87412109375],[12.824023437500074,67.82124023437498],[13.068066406250068,68.07133789062505],[12.971777343750063,67.87412109375]]],[[[13.872851562500045,68.26533203125004],[14.096777343750034,68.218603515625],[13.229394531250051,67.995361328125],[13.300195312499994,68.16044921875007],[13.872851562500045,68.26533203125004]]],[[[15.207128906250006,68.943115234375],[15.222070312500023,68.61630859375003],[14.404687500000051,68.663232421875],[15.037792968750068,69.00053710937507],[15.207128906250006,68.943115234375]]],[[[15.760351562500006,68.56123046875001],[16.328906250000017,68.87631835937498],[16.519238281250068,68.63300781249998],[15.975292968750011,68.402490234375],[14.257519531249983,68.19077148437503],[15.412597656250028,68.61582031250003],[15.483007812500006,69.04345703125003],[16.04804687500001,69.30205078125002],[15.760351562500006,68.56123046875001]]],[[[17.503027343750034,69.59624023437502],[18.004101562500068,69.50498046874998],[17.95068359375003,69.19814453125],[17.487890625000063,69.19682617187499],[17.08251953124997,69.013671875],[16.81044921875008,69.07070312499997],[17.001757812500045,69.36191406250006],[17.36083984375003,69.38149414062497],[17.503027343750034,69.59624023437502]]],[[[29.956152343750006,69.79677734375002],[29.766210937500006,69.76752929687501],[29.835839843749994,69.90556640625005],[29.956152343750006,69.79677734375002]]],[[[20.779199218750023,70.08974609375002],[20.46425781250005,70.0765625],[20.492773437500006,70.20332031249995],[20.78603515625008,70.21953124999999],[20.779199218750023,70.08974609375002]]],[[[19.25507812500001,70.06640625000006],[19.607812500000023,70.019140625],[19.334765625000074,69.82026367187501],[18.784765625000034,69.57900390624997],[18.12988281250003,69.557861328125],[18.34931640625004,69.76787109374999],[18.67402343750004,69.78164062500002],[19.13271484375005,70.24414062500003],[19.25507812500001,70.06640625000006]]],[[[19.76748046875005,70.21669921875002],[20.005957031250034,70.07622070312502],[19.599023437499994,70.26616210937507],[19.76748046875005,70.21669921875002]]],[[[23.615332031250034,70.54931640625003],[23.15917968750003,70.28261718750005],[22.941015625000063,70.444580078125],[23.546679687500017,70.61708984374997],[23.615332031250034,70.54931640625003]]],[[[24.01757812500003,70.56738281249997],[23.716601562500074,70.561865234375],[23.778417968750063,70.74736328125005],[24.01757812500003,70.56738281249997]]],[[[23.440527343750063,70.81577148437503],[22.8291015625,70.54155273437505],[22.358691406250017,70.514794921875],[21.99453125000008,70.65712890624997],[23.440527343750063,70.81577148437503]]],[[[30.869726562500006,69.78344726562506],[30.860742187499994,69.53842773437503],[30.18017578124997,69.63583984375],[30.08730468750005,69.43286132812503],[29.38828125,69.29814453125005],[28.96582031250003,69.02197265625],[28.846289062500006,69.17690429687502],[29.33339843750005,69.47299804687503],[29.14160156250003,69.67143554687505],[27.747851562500045,70.06484375],[27.127539062500063,69.90649414062497],[26.525390625000057,69.91503906250003],[26.07246093750004,69.69155273437497],[25.748339843750017,68.99013671875],[24.94140625000003,68.59326171875006],[23.85400390625,68.80590820312503],[23.324023437500017,68.64897460937502],[22.410937500000074,68.719873046875],[21.59375,69.273583984375],[21.06611328125001,69.21411132812497],[21.065722656250017,69.04174804687503],[20.622167968750006,69.036865234375],[20.116699218750057,69.02089843750005],[20.348046875000023,68.84873046875003],[19.969824218750063,68.35639648437501],[18.303027343750045,68.55541992187497],[17.91669921875001,67.96489257812502],[17.324609375000023,68.10380859374999],[16.783593750000023,67.89501953125],[16.12744140625,67.42583007812507],[16.40351562500004,67.05498046875002],[15.422949218750006,66.48984374999998],[15.483789062500051,66.30595703124999],[14.543261718750045,66.12934570312498],[14.47968750000004,65.30146484374998],[13.650292968750023,64.58154296874997],[14.077636718750028,64.464013671875],[14.141210937500006,64.17353515624998],[13.960546875000063,64.01401367187498],[13.203515625000023,64.07509765625],[12.792773437500017,64],[12.175195312500051,63.595947265625],[11.999902343750051,63.29169921875001],[12.303515625000074,62.28559570312501],[12.155371093750006,61.720751953125045],[12.88076171875008,61.35229492187506],[12.706054687500028,61.059863281250074],[12.29414062500004,61.00268554687506],[12.588671874999989,60.450732421875045],[12.486132812500074,60.10678710937506],[11.680761718750034,59.59228515625003],[11.798144531250074,59.28989257812498],[11.64277343750004,58.92607421875002],[11.470703125000057,58.909521484375034],[11.388281250000063,59.036523437499966],[10.834472656250028,59.18393554687498],[10.595312500000063,59.764550781249966],[10.179394531250068,59.00927734375003],[9.842578125000017,58.95849609374997],[9.557226562500063,59.11269531250002],[9.65693359375004,58.97119140624997],[8.166113281250063,58.145312500000045],[7.0048828125,58.024218750000074],[6.877050781250006,58.15073242187498],[6.590527343750068,58.09731445312502],[6.659863281250068,58.26274414062499],[5.706835937500074,58.52363281250001],[5.55556640625008,58.975195312500006],[6.099023437500023,58.87026367187502],[6.363281250000028,59.00092773437501],[6.099414062500017,58.951953125000074],[5.88916015625,59.097949218750045],[5.951855468750068,59.299072265625],[6.415332031250074,59.547119140625],[5.17324218750008,59.16254882812498],[5.2421875,59.564306640625034],[5.472460937500017,59.713085937499955],[5.77216796875004,59.66093749999999],[6.216601562499989,59.818359375],[5.73046875,59.863085937500045],[6.348730468750006,60.35297851562504],[6.57363281250008,60.36059570312497],[6.526855468750057,60.152929687500034],[6.995703125,60.511962890625],[6.1533203125,60.34624023437499],[5.145800781250074,59.63881835937502],[5.205664062500006,60.087939453125045],[5.688574218749977,60.12319335937502],[5.285839843750011,60.20571289062505],[5.13710937500008,60.445605468750074],[5.648339843750051,60.68798828124997],[5.244042968750023,60.569580078125],[5.115820312500006,60.63598632812503],[5.008593750000017,61.038183593750006],[6.777832031250028,61.142431640625006],[7.038671875000063,60.952929687500045],[7.040136718750006,61.091162109375034],[7.604492187500057,61.210546875000034],[7.34658203125008,61.30058593749999],[7.442578125000011,61.43461914062502],[7.173535156250011,61.16596679687501],[6.599902343750017,61.28964843749998],[6.383496093750068,61.133886718750034],[5.451269531250034,61.10234375000002],[5.106738281250017,61.187548828125045],[5.002734375000074,61.43359375],[5.338671875000017,61.485498046874994],[4.927832031249977,61.71069335937506],[4.93007812499999,61.878320312499994],[6.01582031250004,61.7875],[6.730761718750045,61.86977539062505],[5.266894531250045,61.935595703125045],[5.143164062500063,62.159912109375],[5.908300781249977,62.41601562500003],[6.083496093750057,62.349609375],[6.580078125000057,62.407275390625045],[6.692382812500028,62.46806640624999],[6.136132812500051,62.40747070312497],[6.352929687500051,62.61113281249999],[7.653125,62.56401367187499],[7.538378906250074,62.67207031249998],[8.045507812500006,62.77124023437503],[6.734960937500006,62.72070312500003],[6.940429687500028,62.930468750000045],[7.571875,63.09951171875002],[8.100585937500028,63.090966796874966],[8.623144531250006,62.84624023437502],[8.158007812500017,63.16152343750005],[8.635546875000045,63.34233398437502],[8.360742187500023,63.498876953125034],[8.576171875000028,63.60117187499998],[9.135839843750006,63.593652343749966],[9.156054687500045,63.459326171875034],[9.696875,63.624560546875045],[10.020996093750028,63.39082031250004],[10.76015625000008,63.461279296875006],[10.725292968750068,63.625],[11.370703125000034,63.804833984374994],[11.175585937500074,63.89887695312498],[11.457617187500063,64.00297851562505],[11.306640625000028,64.04887695312499],[10.91425781250004,63.92109374999998],[10.934863281250045,63.770214843749955],[10.055078125000051,63.5126953125],[9.567285156250051,63.70615234374998],[10.565625,64.418310546875],[11.523828125000051,64.744384765625],[11.632910156250063,64.81391601562495],[11.296777343750051,64.75478515625],[11.489355468750034,64.975830078125],[12.15966796875,65.178955078125],[12.508398437499977,65.09941406250005],[12.915527343750057,65.33925781249997],[12.417578125000063,65.18408203124997],[12.133886718749977,65.27915039062498],[12.68886718750008,65.90219726562498],[13.033105468750051,65.95625],[12.783789062500063,66.10043945312506],[14.034179687500057,66.29755859374998],[13.118847656250011,66.23066406250004],[13.211425781250028,66.64082031250001],[13.959472656250028,66.79433593750002],[13.651562500000011,66.90708007812498],[14.10878906250008,67.11923828125003],[15.41572265625004,67.20244140625002],[14.441699218750045,67.27138671875005],[14.961914062500057,67.57426757812502],[15.59443359375004,67.34853515625005],[15.691503906250006,67.52138671875],[15.24873046875004,67.6021484375],[15.303906250000011,67.76528320312502],[14.854687500000068,67.66333007812506],[14.798925781250063,67.80932617187503],[15.13427734375,67.97270507812502],[15.621386718750017,67.94829101562502],[15.316015624999977,68.06875],[16.007910156250006,68.22871093750004],[16.312304687500017,67.88144531249998],[16.20380859375001,68.31674804687503],[17.552832031250063,68.42626953125006],[16.51435546875004,68.53256835937503],[18.101464843749994,69.15629882812499],[18.259765625,69.47060546875],[18.915917968750023,69.33559570312502],[18.614453125000068,69.49057617187498],[19.197265625000057,69.74785156249999],[19.722460937500017,69.78164062500002],[19.64150390625005,69.42402343750001],[20.324218750000057,69.94531249999997],[20.054492187500074,69.33266601562497],[20.486718750000023,69.54208984375],[20.739453124999983,69.52050781250003],[20.622070312500057,69.91391601562498],[21.163085937500057,69.88950195312498],[21.432910156250045,70.01318359375006],[21.974707031250034,69.83457031249998],[21.355761718750045,70.23339843749997],[22.321972656250068,70.264501953125],[22.684570312500057,70.374755859375],[23.35390625000008,69.98339843750003],[23.3291015625,70.20722656249995],[24.420019531250034,70.70200195312503],[24.263476562500017,70.82631835937497],[24.658007812500017,71.00102539062505],[25.264648437500057,70.843505859375],[25.768164062500063,70.85317382812502],[25.043847656250023,70.10903320312502],[26.66132812500004,70.93974609374999],[26.585058593750034,70.41000976562498],[26.989355468750063,70.51137695312502],[27.183691406250034,70.74404296875],[27.546484375000063,70.80400390625005],[27.23525390625008,70.94721679687498],[27.59707031250005,71.09130859375003],[28.392285156250068,70.97529296875004],[27.898046875,70.67792968750001],[28.271777343750017,70.66796875000003],[28.192968750000034,70.24858398437505],[28.83154296875003,70.86396484375001],[29.7375,70.646826171875],[30.065136718750097,70.70297851562498],[30.944140625000017,70.27441406249997],[30.262988281250074,70.12470703125004],[28.804296875000063,70.09252929687506],[29.601367187500017,69.97675781249998],[29.792089843750063,69.727880859375],[30.08828125,69.71757812500005],[30.237597656250017,69.86220703125002],[30.428320312500006,69.722265625],[30.869726562500006,69.78344726562506]]],[[[25.58632812500005,71.14208984375],[26.13378906250003,70.99580078125004],[25.582031250000057,70.960791015625],[25.31494140625,71.03413085937504],[25.58632812500005,71.14208984375]]],[[[-8.953564453124983,70.83916015625002],[-8.001367187499966,71.17768554687495],[-8.002099609374937,71.04125976562497],[-8.953564453124983,70.83916015625002]]],[[[19.219335937500006,74.39101562500002],[18.86123046875008,74.51416015624997],[19.182910156250045,74.51791992187503],[19.219335937500006,74.39101562500002]]],[[[21.60810546875004,78.59570312499997],[22.04316406250004,78.57695312500007],[22.29951171875004,78.22817382812497],[23.451953125000074,78.14946289062502],[23.11669921874997,77.99150390624999],[24.901855468750057,77.756591796875],[22.55371093750003,77.26665039062502],[22.685351562500045,77.55351562500002],[20.928125,77.45966796874998],[21.653125,77.92353515624998],[20.22792968750005,78.47783203125005],[21.60810546875004,78.59570312499997]]],[[[11.250292968750017,78.610693359375],[12.116406250000068,78.232568359375],[11.121289062500011,78.46328125],[10.558203125000063,78.90292968750003],[11.250292968750017,78.610693359375]]],[[[29.047070312500068,78.91206054687504],[29.69667968750005,78.90473632812495],[27.88906250000005,78.8521484375],[28.511132812500023,78.96733398437502],[29.047070312500068,78.91206054687504]]],[[[16.786718750000034,79.90673828125],[17.834570312499977,79.80004882812503],[17.66875,79.38593750000004],[18.39736328125008,79.60517578125001],[18.677832031250006,79.26171875000003],[19.893554687500057,79.05620117187499],[20.61103515625004,79.10664062499998],[21.388769531250034,78.74042968749998],[19.67675781250003,78.60957031249995],[16.700488281250045,76.57929687499995],[14.365820312500034,77.23447265625003],[13.995703125000034,77.50820312500002],[14.69501953125004,77.525048828125],[14.920800781250023,77.68881835937506],[17.033300781250006,77.79770507812503],[16.91406250000003,77.89799804687505],[14.089941406250063,77.77138671875],[13.680566406250051,78.028125],[14.307226562500006,78.00507812500001],[15.783886718750011,78.32705078125005],[17.00292968750003,78.36938476562497],[16.44863281250008,78.50356445312502],[16.78261718750008,78.66362304687505],[15.417382812500023,78.47324218749998],[15.384179687500023,78.77119140625001],[15.01630859375004,78.63012695312497],[14.689257812500017,78.720947265625],[14.638281250000034,78.41459960937502],[14.110449218750063,78.27089843749997],[13.150195312499989,78.2375],[11.365429687500011,78.95039062500004],[12.323437500000068,78.91425781249995],[12.083984375000028,79.26752929687498],[11.579785156250068,79.28349609375005],[11.208105468750034,79.12963867187503],[10.737597656250017,79.52016601562502],[10.804003906250045,79.79877929687504],[11.150390625,79.71699218749998],[11.702343750000011,79.82060546875005],[12.287792968750068,79.713134765625],[12.279980468749983,79.81596679687507],[13.692871093749972,79.860986328125],[13.777539062500011,79.71528320312498],[12.555371093750068,79.56948242187502],[13.333789062500017,79.57480468750006],[14.029589843750017,79.34414062500005],[14.59365234375008,79.79873046875002],[16.34375,78.97612304687502],[15.816113281250011,79.68183593750001],[16.245703125000034,80.04946289062502],[16.786718750000034,79.90673828125]]],[[[32.52597656250006,80.119140625],[31.48193359374997,80.10791015625003],[33.62929687499999,80.21743164062497],[32.52597656250006,80.119140625]]],[[[20.897851562500023,80.24995117187501],[22.289746093749983,80.04921874999997],[22.450781250000034,80.40224609375005],[23.00800781250004,80.473974609375],[23.114550781250074,80.18696289062498],[24.29755859375004,80.36040039062505],[26.86083984375,80.16000976562498],[27.19863281250008,79.90659179687506],[25.641210937500034,79.40302734374995],[23.94775390625,79.19428710937498],[22.903710937500023,79.23066406250001],[22.865527343750045,79.41186523437497],[20.861132812500017,79.39785156249997],[20.128222656250074,79.489599609375],[19.674609375000045,79.591162109375],[20.784082031250023,79.74858398437502],[18.725,79.7607421875],[18.25537109375,79.92919921875003],[18.855957031250057,80.03662109375],[17.91689453125005,80.14311523437502],[19.343359375000063,80.11640624999998],[19.733300781249994,80.47783203124999],[20.897851562500023,80.24995117187501]]]]},"properties":{"name":"Norway","childNum":27}},{"geometry":{"type":"Polygon","coordinates":[[[87.984375,27.133935546874994],[87.9931640625,27.086083984374994],[88.11103515625001,26.928466796875],[88.1572265625,26.807324218749997],[88.16152343750002,26.724804687499997],[88.11152343750001,26.58642578125],[88.05488281250001,26.430029296875],[88.02695312500003,26.39501953125],[87.9951171875,26.382373046874996],[87.28740234374999,26.360302734374997],[87.01640624999999,26.555419921875],[86.70136718750001,26.43505859375],[86.00732421875,26.649365234374997],[85.79453125000003,26.604150390624994],[85.7373046875,26.63974609375],[85.6484375,26.829003906249994],[85.56845703125003,26.83984375],[85.29296875,26.741015625],[85.19179687500002,26.766552734374997],[84.68535156249999,27.041015625],[84.65380859375,27.091699218749994],[84.65478515625,27.203662109374996],[84.64072265625003,27.249853515625],[84.61015624999999,27.298681640625],[84.48085937500002,27.348193359374996],[84.22978515624999,27.42783203125],[84.09101562500001,27.491357421874994],[83.82880859375001,27.377832031249994],[83.74697265625002,27.395947265624997],[83.55166015625002,27.456347656249996],[83.44716796875002,27.46533203125],[83.38398437500001,27.44482421875],[83.36943359374999,27.41025390625],[83.28974609375001,27.370996093749994],[82.7333984375,27.518994140624997],[82.71083984375002,27.5966796875],[82.67734375000003,27.6734375],[82.6298828125,27.687060546874996],[82.45136718750001,27.671826171874997],[82.28769531250003,27.756542968749997],[82.11191406250003,27.864941406249997],[82.03701171875002,27.900585937499997],[81.98769531250002,27.913769531249997],[81.94521484375002,27.899267578125],[81.896875,27.874462890624997],[81.85263671875003,27.867089843749994],[81.1689453125,28.335009765624996],[80.58701171875003,28.649609375],[80.51787109374999,28.665185546874994],[80.49580078125001,28.635791015624996],[80.47910156250003,28.604882812499994],[80.41855468750003,28.612011718749997],[80.32480468750003,28.66640625],[80.2265625,28.723339843749997],[80.07070312500002,28.83017578125],[80.05166015625002,28.8703125],[80.08457031250003,28.994189453124996],[80.13046875000003,29.100390625],[80.16953125000003,29.124316406249996],[80.23300781250003,29.194628906249996],[80.25595703125003,29.318017578124994],[80.2548828125,29.42333984375],[80.31689453125,29.572070312499996],[80.40185546875,29.730273437499996],[80.54902343750001,29.899804687499994],[80.81992187500003,30.119335937499997],[80.84814453125,30.13974609375],[80.90761718750002,30.171923828124996],[80.96611328124999,30.180029296875],[81.17714843750002,30.039892578125],[81.25507812500001,30.093310546874996],[81.41718750000001,30.337597656249997],[81.64189453124999,30.3875],[81.85488281250002,30.36240234375],[82.04335937500002,30.3267578125],[82.220703125,30.063867187499994],[83.15546875000001,29.612646484375],[83.58349609375,29.18359375],[83.93593750000002,29.279492187499997],[84.02197265625,29.253857421874997],[84.10136718749999,29.219970703125],[84.12783203125002,29.156298828124996],[84.17558593749999,29.036376953125],[84.22871093750001,28.911767578124994],[84.796875,28.560205078124994],[84.85507812500003,28.553613281249994],[85.06914062499999,28.609667968749996],[85.12636718750002,28.60263671875],[85.15908203125002,28.592236328124997],[85.16015625,28.571875],[85.12148437500002,28.484277343749994],[85.08857421875001,28.372265625],[85.12246093750002,28.315966796874996],[85.21210937500001,28.292626953124994],[85.41064453125,28.276025390624994],[85.67832031250003,28.27744140625],[85.75947265625001,28.220654296874997],[85.84023437500002,28.1353515625],[85.92167968749999,27.989697265624997],[85.9541015625,27.92822265625],[85.99453125000002,27.910400390625],[86.06416015625001,27.934716796874994],[86.07871093750003,28.08359375],[86.13701171874999,28.11435546875],[86.21796875000001,28.0220703125],[86.32861328125,27.959521484374996],[86.40869140625,27.928662109374997],[86.51689453124999,27.963525390624994],[86.55449218749999,28.085205078125],[86.61445312500001,28.10302734375],[86.69052734375003,28.094921875],[86.71962890625002,28.070654296875],[86.75039062500002,28.0220703125],[86.93378906250001,27.968457031249997],[87.02011718750003,27.928662109374997],[87.14140624999999,27.838330078124997],[87.29072265625001,27.821923828124994],[87.62255859375,27.815185546875],[87.86074218750002,27.886083984375],[88.10976562500002,27.87060546875],[87.984375,27.133935546874994]]]},"properties":{"name":"Nepal","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[169.17822265624997,-52.497265625],[169.12753906250006,-52.570312499999964],[169.02177734375002,-52.49541015624998],[169.17822265624997,-52.497265625]]],[[[166.22109375,-50.76152343749997],[166.2428710937501,-50.84570312499998],[165.88916015624997,-50.80771484374996],[166.10136718750002,-50.538964843750016],[166.26748046875005,-50.558593750000014],[166.22109375,-50.76152343749997]]],[[[168.14492187500005,-46.862207031249966],[168.04316406250004,-46.9326171875],[168.2409179687501,-47.070019531250026],[167.52197265624997,-47.258691406249994],[167.80078125000003,-46.90654296875002],[167.78398437500007,-46.699804687500006],[167.9557617187501,-46.69443359374998],[168.14492187500005,-46.862207031249966]]],[[[166.97949218749997,-45.17968750000003],[167.02265625000004,-45.299804687499986],[166.89267578125012,-45.24052734374999],[166.97949218749997,-45.17968750000003]]],[[[-176.17763671874997,-43.74033203124998],[-176.38173828124997,-43.86679687499998],[-176.40737304687497,-43.7609375],[-176.516552734375,-43.78476562499996],[-176.33359375000003,-44.02529296875004],[-176.51552734374997,-44.11660156249998],[-176.62934570312495,-44.036132812500014],[-176.55512695312504,-43.85195312499998],[-176.84765625000003,-43.82392578125004],[-176.56611328124995,-43.717578125000045],[-176.17763671874997,-43.74033203124998]]],[[[173.91464843750018,-40.86367187500004],[173.78085937500012,-40.921777343749966],[173.964453125,-40.71298828124998],[173.91464843750018,-40.86367187500004]]],[[[173.11533203125006,-41.27929687499997],[173.94716796875005,-40.92412109375],[173.79785156250003,-41.271972656249986],[173.99941406250005,-40.99326171874996],[174.30253906249996,-41.019531249999986],[174.03857421875003,-41.24189453125],[174.37011718750009,-41.1037109375],[174.06933593750009,-41.42949218750002],[174.08369140625015,-41.67080078124998],[174.2831054687501,-41.740625],[173.22119140624997,-42.976562499999986],[172.62402343749997,-43.27246093749996],[172.73476562500005,-43.35478515625003],[172.52666015625002,-43.464746093749966],[172.69345703125006,-43.444335937499986],[172.80703125000005,-43.620996093749994],[173.07324218750003,-43.676171874999966],[173.065625,-43.87460937499998],[172.50273437500002,-43.84365234374998],[172.48037109375,-43.726660156250034],[172.29658203125004,-43.867871093750026],[172.035546875,-43.70175781250002],[172.17978515625006,-43.895996093749986],[171.24072265624997,-44.26416015625003],[171.14628906250002,-44.9123046875],[170.99902343750003,-44.91142578124999],[171.11328125000003,-45.03925781250001],[170.7005859375,-45.68427734374997],[170.77626953125005,-45.870898437499974],[170.4191406250001,-45.94101562499996],[169.68662109375006,-46.55166015625002],[169.34228515625003,-46.62050781250001],[168.38212890625007,-46.60537109374995],[168.1891601562501,-46.362207031249966],[167.8419921875001,-46.366210937499986],[167.539453125,-46.14853515624996],[167.36894531250007,-46.24150390624999],[166.73154296875006,-46.19785156249998],[166.91669921875004,-45.95722656249998],[166.64990234374997,-46.04169921875004],[166.71796875000004,-45.88935546875001],[166.49316406249997,-45.9638671875],[166.48828124999997,-45.83183593750002],[167.0033203125,-45.71210937500004],[166.79765625000002,-45.64560546874999],[166.99082031250012,-45.531738281249986],[166.73398437500012,-45.54355468749999],[166.74306640625,-45.46845703124997],[166.91992187499997,-45.40791015624998],[166.86923828125006,-45.31123046875],[167.15566406250005,-45.410937499999974],[167.23007812500012,-45.29033203125],[167.02587890624997,-45.12363281249998],[167.25947265625004,-45.08222656249997],[167.19453125000004,-44.963476562500034],[167.41074218750006,-44.82792968750003],[167.4662109375,-44.958300781250045],[167.48496093750006,-44.77138671874998],[167.78701171875,-44.59501953125002],[167.90898437500002,-44.66474609375001],[167.85654296875012,-44.50068359374998],[168.45742187500005,-44.030566406250045],[169.17890625000004,-43.9130859375],[169.16953125000006,-43.77705078125],[169.83388671875,-43.53701171875004],[170.24023437499997,-43.163867187500045],[170.39609375000012,-43.18222656249996],[170.30283203125012,-43.10761718750004],[170.61181640625003,-43.091796875000014],[170.5236328125001,-43.00898437500001],[170.6654296875,-42.961230468749974],[170.73525390625005,-43.029785156249986],[170.96992187500004,-42.71835937499996],[171.01171875000003,-42.88505859374999],[171.027734375,-42.696093750000045],[171.31337890625005,-42.460156250000026],[171.48623046875,-41.7947265625],[171.94804687500002,-41.53867187499996],[172.13945312500002,-40.947265625000014],[172.640625,-40.51826171875001],[172.94365234375007,-40.51875],[172.73261718750004,-40.54375],[172.70439453125002,-40.6677734375],[172.988671875,-40.84824218749999],[173.11533203125006,-41.27929687499997]]],[[[175.54316406250015,-36.279296874999986],[175.34619140624997,-36.217773437499986],[175.3895507812501,-36.07773437499996],[175.54316406250015,-36.279296874999986]]],[[[173.26943359375,-34.93476562499998],[173.44785156250012,-34.844335937500034],[173.47265625000003,-34.94697265624998],[174.10400390625003,-35.14287109375002],[174.1431640625,-35.3],[174.32031250000003,-35.246679687500034],[174.58066406250018,-35.78554687500004],[174.39580078124996,-35.79736328124996],[174.8021484375,-36.30947265625001],[174.72246093750007,-36.84121093749998],[175.29951171875004,-36.99326171874996],[175.38535156250012,-37.206933593749966],[175.54248046874997,-37.2013671875],[175.46083984375005,-36.475683593750034],[175.77216796875004,-36.73515625],[176.10839843749997,-37.64511718749998],[177.27402343750012,-37.993457031249974],[178.0091796875,-37.55488281249998],[178.53623046875006,-37.69208984375004],[178.26767578125006,-38.551171875],[177.976171875,-38.72226562500005],[177.90878906250012,-39.23955078125],[177.52294921875003,-39.07382812499999],[177.07675781250012,-39.22177734375002],[176.93925781249996,-39.55527343750002],[177.10986328125009,-39.673144531250045],[176.8421875000001,-40.15781250000002],[175.98291015625003,-41.21328125000002],[175.30976562499998,-41.610644531249974],[175.16562500000012,-41.41738281249995],[174.88134765624997,-41.42402343749997],[174.8656250000001,-41.223046874999966],[174.63535156250012,-41.28945312499999],[175.1625,-40.62158203125],[175.25410156250004,-40.28935546875],[175.1559570312501,-40.11494140625],[175.00927734375009,-39.95214843749996],[173.93437500000013,-39.50908203125002],[173.76367187499997,-39.31875],[173.84433593750006,-39.13935546875001],[174.39843749999997,-38.96259765624998],[174.59736328124998,-38.78505859374995],[174.80166015625005,-37.895507812500014],[174.92802734375002,-37.80449218750003],[174.58583984374994,-37.09775390625002],[174.73427734375,-37.21523437499998],[174.92890625000004,-37.084765625000045],[174.78203125000013,-36.94375],[174.47558593750009,-36.94189453124997],[174.1888671875001,-36.492285156250034],[174.4015625000001,-36.60195312499999],[174.39277343750004,-36.24003906249999],[174.26787109375002,-36.16308593750003],[174.25371093749996,-36.24912109374998],[174.03642578125013,-36.12246093750001],[173.91445312499994,-35.908691406249986],[173.91728515625002,-36.01816406249999],[174.16640624999994,-36.327636718749986],[174.05468749999991,-36.35976562500004],[173.41220703125012,-35.542578125],[173.62617187500004,-35.31914062499996],[173.3763671875001,-35.50009765624996],[173.31396484375003,-35.44335937499996],[173.11669921874997,-35.205273437500026],[173.190625,-35.01621093749998],[172.70595703125005,-34.45517578124998],[173.04394531249997,-34.429101562499994],[172.96376953125,-34.53515625000003],[173.26943359375,-34.93476562499998]]]]},"properties":{"name":"New Zealand","childNum":9}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[58.722070312499994,20.21875],[58.640917968750074,20.210693359375057],[58.64121093750006,20.33735351562501],[58.884375,20.680566406250023],[58.95078125000006,20.516162109375017],[58.722070312499994,20.21875]]],[[[56.38798828125002,24.97919921875004],[56.640625,24.4703125],[57.12304687500003,23.980712890625],[58.773046875,23.517187499999977],[59.42939453125004,22.660839843749955],[59.82324218749997,22.50898437500004],[59.8,22.21992187500001],[59.37148437500005,21.498828125000017],[58.89570312500004,21.11279296874997],[58.47421875000006,20.406884765624966],[58.20898437500003,20.423974609374994],[58.245019531249994,20.599218749999977],[58.16943359375003,20.58950195312505],[57.86181640624997,20.24414062500003],[57.71416015625002,19.678417968749983],[57.81162109375006,19.01708984374997],[56.825976562500074,18.753515625],[56.3834960937501,17.98798828125001],[55.479101562500006,17.84326171875003],[55.25537109375003,17.58564453125004],[55.275195312500074,17.320898437500006],[55.06416015625004,17.038916015625034],[54.06816406250002,17.005517578124966],[53.60986328124997,16.75996093750004],[53.08564453125004,16.648388671874955],[51.977636718750006,18.996142578125074],[54.97734375000002,19.995947265625006],[55.64101562499999,22.001855468749994],[55.185839843750074,22.7041015625],[55.1999023437501,23.034765625000034],[55.53164062499999,23.81904296875001],[55.4684570312501,23.94111328125001],[55.98515625000002,24.063378906249966],[55.92861328125005,24.215136718750074],[55.76083984375006,24.24267578125],[55.795703125000074,24.868115234374955],[56.00058593750006,24.953222656249977],[56.06386718750005,24.73876953125],[56.38798828125002,24.97919921875004]]],[[[56.29785156250003,25.650683593750045],[56.144628906250006,25.690527343750006],[56.16748046875003,26.047460937499977],[56.08046875,26.06264648437505],[56.41308593749997,26.351171875000034],[56.29785156250003,25.650683593750045]]]]},"properties":{"name":"Oman","childNum":3}},{"geometry":{"type":"Polygon","coordinates":[[[73.08961802927895,36.86435907947333],[73.08203125000107,36.43949943991182],[72.31128647748268,35.77290936638241],[73.13410859949555,34.82510160558277],[73.19895048106557,33.88770931468204],[74.00809389139292,33.25375789331485],[73.98984375,33.22119140625],[74.30361328125002,32.991796875],[74.30546875000002,32.810449218749994],[74.35458984375,32.768701171874994],[74.58828125000002,32.753222656249996],[74.632421875,32.770898437499994],[74.66328125000001,32.757666015625],[74.64335937500002,32.607714843749996],[74.68574218750001,32.493798828124994],[74.78886718750002,32.4578125],[74.9873046875,32.462207031249996],[75.33349609375,32.279199218749994],[75.25410156250001,32.14033203125],[75.13876953125,32.104785156249996],[75.07148437500001,32.08935546875],[74.73945312500001,31.948828125],[74.6357421875,31.88974609375],[74.55556640625002,31.818554687499997],[74.5259765625,31.76513671875],[74.50996093750001,31.712939453124996],[74.58183593750002,31.52392578125],[74.59394531250001,31.465380859374996],[74.53496093750002,31.261376953124994],[74.51767578125,31.185595703124996],[74.6103515625,31.112841796874996],[74.62578125000002,31.06875],[74.6328125,31.03466796875],[74.509765625,30.959667968749997],[74.38037109375,30.893408203125],[74.33935546875,30.8935546875],[74.00898437500001,30.519677734374994],[73.89931640625002,30.435351562499996],[73.88271484375002,30.3521484375],[73.92460937500002,30.28164062499999],[73.93339843750002,30.222070312499994],[73.88652343750002,30.162011718749994],[73.8091796875,30.093359375],[73.38164062500002,29.934375],[72.9033203125,29.028759765624997],[72.34189453125,28.751904296874997],[72.2919921875,28.697265625],[72.128515625,28.346337890624994],[71.94804687500002,28.177294921874996],[71.88886718750001,28.0474609375],[71.87031250000001,27.9625],[71.54296875,27.869873046875],[71.18476562500001,27.831640625],[70.87490234375002,27.714453125],[70.79794921875,27.709619140624994],[70.69160156250001,27.768994140624997],[70.62910156250001,27.937451171874997],[70.40371093750002,28.025048828124994],[70.24433593750001,27.934130859374996],[70.1939453125,27.894873046875],[70.14453125,27.849023437499994],[70.0498046875,27.694726562499994],[69.89628906250002,27.4736328125],[69.56796875,27.174609375],[69.47001953125002,26.804443359375],[70.11464843750002,26.548046875],[70.14921875000002,26.347558593749994],[70.1001953125,25.910058593749994],[70.2646484375,25.70654296875],[70.3251953125,25.685742187499997],[70.44853515625002,25.681347656249997],[70.505859375,25.685302734375],[70.56953125000001,25.705957031249994],[70.6484375,25.666943359374997],[70.65205078125001,25.422900390625003],[70.87773437500002,25.06298828125],[70.95087890625001,24.8916015625],[71.02070312500001,24.75766601562499],[71.0478515625,24.687744140625],[71.00234375000002,24.65390625],[70.97636718750002,24.61875],[70.96982421875,24.571875],[71.04531250000002,24.429980468750003],[71.04404296875,24.400097656249997],[70.98281250000002,24.361035156249997],[70.928125,24.362353515625003],[70.88623046875,24.34375],[70.80507812500002,24.261962890625],[70.76728515625001,24.245410156250003],[70.71630859375,24.237988281249997],[70.65947265625002,24.24609375],[70.57929687500001,24.279052734375],[70.55585937500001,24.331103515625003],[70.5650390625,24.385791015625003],[70.54677734375002,24.41831054687499],[70.2890625,24.35629882812499],[70.0982421875,24.2875],[69.80517578125,24.165234375],[69.71621093750002,24.172607421875],[69.63417968750002,24.22519531249999],[69.5591796875,24.273095703124994],[69.44345703125,24.275390625],[69.23505859375001,24.268261718749997],[69.11953125000002,24.26865234374999],[69.05156250000002,24.286328125],[68.98457031250001,24.273095703124994],[68.90078125000002,24.292431640624997],[68.86347656250001,24.266503906249994],[68.82832031250001,24.26401367187499],[68.78115234375002,24.313720703125],[68.75898437500001,24.30722656249999],[68.73964843750002,24.2919921875],[68.728125,24.265625],[68.72412109375,23.96469726562499],[68.48867187500002,23.967236328124997],[68.38125,23.950878906249997],[68.28251953125002,23.927978515625],[68.1650390625,23.857324218749994],[68.11552734375002,23.753369140624997],[67.8599609375,23.90268554687499],[67.66845703125,23.810986328124997],[67.309375,24.1748046875],[67.171484375,24.756103515625],[66.70302734375002,24.8609375],[66.69863281250002,25.226318359375],[66.32421875,25.601806640625],[66.13115234375002,25.49326171874999],[66.46767578125002,25.4453125],[64.77666015625002,25.307324218749997],[64.65898437500002,25.18408203125],[64.059375,25.40292968749999],[63.556640625,25.353173828124994],[63.49140625000001,25.210839843749994],[61.56689453125,25.186328125],[61.587890625,25.20234375],[61.61542968750001,25.2861328125],[61.64013671875,25.584619140624994],[61.67138671875,25.6923828125],[61.66181640625001,25.751269531250003],[61.66865234375001,25.768994140624997],[61.73769531250002,25.82109375],[61.75439453125,25.84335937499999],[61.78076171875,25.995849609375],[61.80996093750002,26.165283203125],[61.842382812500006,26.225927734375],[62.1259765625,26.368994140625],[62.239355468750006,26.35703125],[62.31230468750002,26.490869140624994],[63.168066406250006,26.665576171874996],[63.186132812500006,26.837597656249997],[63.24160156250002,26.86474609375],[63.25039062500002,26.879248046875],[63.24208984375002,27.077685546874996],[63.30517578125,27.124560546874996],[63.30156250000002,27.15146484375],[63.25625,27.207910156249994],[63.19609375000002,27.243945312499996],[63.16679687500002,27.252490234374996],[62.75273437500002,27.265625],[62.782324218750006,27.800537109375],[62.7625,28.202050781249994],[61.88984375000001,28.546533203124994],[61.15214843750002,29.542724609375],[61.0341796875,29.663427734375],[60.843359375,29.858691406249996],[61.22441406250002,29.749414062499994],[62.0009765625,29.530419921874994],[62.4765625,29.408349609374994],[63.56757812500001,29.497998046874997],[64.09873046875,29.391943359375],[64.39375,29.544335937499994],[65.09550781250002,29.559472656249994],[66.23125,29.86572265625],[66.346875,30.802783203124996],[66.82929687500001,31.263671875],[67.45283203125001,31.234619140625],[67.737890625,31.343945312499997],[67.57822265625,31.506494140624994],[68.16103515625002,31.802978515625],[68.59765625,31.802978515625],[68.86894531250002,31.634228515624997],[69.279296875,31.936816406249996],[69.24140625000001,32.433544921875],[69.5015625,33.020068359374996],[70.26113281250002,33.289013671875],[69.8896484375,34.007275390625],[70.65400390625001,33.952294921874994],[71.05156250000002,34.049707031249994],[71.095703125,34.369433593749996],[70.965625,34.53037109375],[71.62050781250002,35.183007812499994],[71.57197265625001,35.546826171875],[71.18505859375,36.04208984375],[71.23291015625,36.12177734375],[72.24980468750002,36.734716796875],[73.08961802927895,36.86435907947333]]]},"properties":{"name":"Pakistan","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-81.60327148437497,7.332812499999989],[-81.85205078125003,7.453320312500026],[-81.812158203125,7.59238281250002],[-81.72875976562494,7.62119140625002],[-81.60327148437497,7.332812499999989]]],[[[-78.89833984375002,8.27426757812502],[-78.960595703125,8.435839843749989],[-78.88325195312495,8.460253906249989],[-78.89833984375002,8.27426757812502]]],[[[-77.37421874999993,8.65830078125002],[-77.47851562499994,8.498437500000037],[-77.19599609374995,7.972460937500003],[-77.53828124999995,7.56625976562502],[-77.76191406249995,7.698828125000034],[-77.90117187499999,7.229345703125048],[-78.42158203124995,8.060986328125011],[-78.28735351562497,8.091796874999972],[-78.14189453125002,8.386083984374977],[-77.76054687499993,8.133251953124983],[-78.09946289062498,8.496972656250009],[-78.22304687500002,8.396630859374994],[-78.39921874999993,8.505664062500003],[-78.40986328124998,8.35532226562502],[-78.51406249999997,8.628173828125],[-79.08637695312495,8.997167968750034],[-79.50708007812494,8.97006835937502],[-79.68745117187493,8.850976562500009],[-79.81591796875,8.639208984375031],[-79.75043945312498,8.595507812500017],[-80.458984375,8.213867187499972],[-80.45810546875,8.077050781249994],[-80.01123046875,7.500048828125031],[-80.66669921874995,7.225683593750006],[-80.90122070312503,7.277148437500017],[-81.06386718749994,7.89975585937502],[-81.26840820312495,7.625488281250014],[-81.50415039062503,7.721191406249972],[-81.72763671875,8.137548828124977],[-82.15986328124995,8.19482421875],[-82.23544921874998,8.311035156250057],[-82.67954101562503,8.321972656249969],[-82.86611328124994,8.246337890625014],[-82.87934570312498,8.07065429687502],[-83.02734375,8.337744140624991],[-82.86162109374999,8.453515625000037],[-82.84477539062493,8.489355468749963],[-82.85571289062494,8.635302734375031],[-82.91704101562502,8.740332031250034],[-82.88198242187497,8.805322265625037],[-82.72783203125002,8.916064453125031],[-82.78305664062498,8.990283203124974],[-82.88134765625003,9.055859375000011],[-82.94033203124997,9.060107421874989],[-82.93984374999994,9.449169921875026],[-82.92504882812494,9.469042968749989],[-82.88896484374999,9.481005859375017],[-82.86015625,9.511474609375014],[-82.84399414062497,9.570800781250014],[-82.801025390625,9.591796875000028],[-82.64409179687502,9.505859375000028],[-82.56357421875003,9.576660156249972],[-82.50034179687503,9.523242187500017],[-82.37080078124993,9.428564453124991],[-82.33974609375,9.209179687499983],[-82.18813476562502,9.191748046874977],[-82.24418945312499,9.031494140625014],[-82.07788085937503,8.93486328124996],[-81.78022460937495,8.957226562499983],[-81.89448242187495,9.140429687500003],[-81.35478515624996,8.78056640624996],[-80.83867187499999,8.887207031250014],[-80.12709960937497,9.20991210937504],[-79.57729492187497,9.597851562500026],[-78.08276367187494,9.236279296874997],[-77.37421874999993,8.65830078125002]]]]},"properties":{"name":"Panama","childNum":3}},{"geometry":{"type":"Polygon","coordinates":[[[-73.137353515625,-6.4658203125],[-73.75810546874999,-6.90576171875],[-73.79301757812499,-7.135058593750003],[-73.758203125,-7.172753906250009],[-73.72041015625,-7.309277343750011],[-73.964306640625,-7.37890625],[-73.95849609375,-7.506640625],[-73.98173828124999,-7.535742187500006],[-74.00205078124999,-7.556054687500009],[-73.98173828124999,-7.585058593750006],[-73.946875,-7.611230468750009],[-73.89462890624999,-7.65478515625],[-73.82207031249999,-7.738964843750011],[-73.76689453124999,-7.753515625],[-73.72041015625,-7.782519531250003],[-73.73203125,-7.875390625],[-73.54912109374999,-8.345800781250006],[-73.39814453125,-8.458984375],[-73.36040039062499,-8.479296875],[-73.351708984375,-8.51416015625],[-73.35673828124999,-8.566992187500006],[-73.30244140625,-8.654003906250011],[-73.203125,-8.719335937500006],[-73.0705078125,-8.8828125],[-72.9740234375,-8.9931640625],[-72.970361328125,-9.1201171875],[-73.08984375,-9.265722656250006],[-73.209423828125,-9.411425781250003],[-72.379052734375,-9.51015625],[-72.181591796875,-10.003710937500003],[-71.33940429687499,-9.988574218750003],[-71.11528320312499,-9.852441406250009],[-71.041748046875,-9.81875],[-70.6369140625,-9.478222656250011],[-70.60791015625,-9.463671875],[-70.54111328124999,-9.4375],[-70.57016601562499,-9.48984375],[-70.592236328125,-9.54345703125],[-70.59916992187499,-9.620507812500009],[-70.642333984375,-11.01025390625],[-70.59653320312499,-10.976855468750003],[-70.53325195312499,-10.946875],[-70.45087890625,-11.024804687500009],[-70.39228515625,-11.05859375],[-70.3419921875,-11.066699218750003],[-70.29038085937499,-11.064257812500003],[-70.22006835937499,-11.04765625],[-70.06630859375,-10.982421875],[-69.9603515625,-10.929882812500011],[-69.839794921875,-10.933398437500003],[-69.6740234375,-10.9541015625],[-69.57861328125,-10.951757812500006],[-68.68525390625,-12.501953125],[-68.97861328124999,-12.880078125000011],[-69.07412109375,-13.682812500000011],[-68.87089843749999,-14.169726562500003],[-69.35947265624999,-14.7953125],[-69.37470703125,-14.962988281250006],[-69.17246093749999,-15.236621093750003],[-69.4208984375,-15.640625],[-69.21757812499999,-16.14912109375001],[-68.8427734375,-16.337890625],[-69.03291015625,-16.47597656250001],[-69.020703125,-16.6421875],[-69.62485351562499,-17.2001953125],[-69.645703125,-17.24853515625],[-69.521923828125,-17.388964843750003],[-69.510986328125,-17.46035156250001],[-69.51108398437499,-17.5048828125],[-69.5109375,-17.50605468750001],[-69.58642578125,-17.5732421875],[-69.684765625,-17.64980468750001],[-69.85209960937499,-17.70380859375001],[-69.80258789062499,-17.990234375],[-69.92636718749999,-18.2060546875],[-70.41826171874999,-18.34560546875001],[-71.33696289062499,-17.68251953125001],[-71.5322265625,-17.29433593750001],[-72.46767578125,-16.708105468750006],[-73.727685546875,-16.20166015625],[-75.104248046875,-15.411914062500003],[-75.533642578125,-14.89921875],[-75.93388671874999,-14.63359375],[-76.37646484375,-13.863085937500003],[-76.259228515625,-13.802832031250006],[-76.2236328125,-13.371191406250006],[-76.83212890624999,-12.348730468750006],[-77.152734375,-12.060351562500003],[-77.2203125,-11.663378906250003],[-77.633203125,-11.287792968750011],[-77.736083984375,-10.83671875],[-78.18559570312499,-10.089062500000011],[-78.76225585937499,-8.616992187500003],[-79.37724609374999,-7.835546875],[-79.99497070312499,-6.768945312500009],[-81.142041015625,-6.056738281250006],[-81.164306640625,-5.875292968750003],[-80.9306640625,-5.8408203125],[-80.88193359374999,-5.635058593750003],[-81.33662109375,-4.66953125],[-81.283203125,-4.322265625],[-80.503662109375,-3.49609375],[-80.324658203125,-3.387890625000011],[-80.24375,-3.576757812500006],[-80.19414062499999,-3.905859375],[-80.23051757812499,-3.924023437500011],[-80.26689453124999,-3.948828125],[-80.30327148437499,-4.005078125000011],[-80.43720703125,-3.978613281250006],[-80.49013671875,-4.010058593750003],[-80.510009765625,-4.069531250000011],[-80.49345703124999,-4.119140625],[-80.4884765625,-4.16552734375],[-80.453759765625,-4.205175781250006],[-80.35288085937499,-4.20849609375],[-80.44384765625,-4.335839843750009],[-80.4884765625,-4.393652343750006],[-80.47856445312499,-4.430078125],[-80.42416992187499,-4.46142578125],[-80.38349609375,-4.463671875],[-80.293359375,-4.416796875],[-80.1974609375,-4.31103515625],[-80.13955078125,-4.296093750000011],[-80.06352539062499,-4.327539062500009],[-79.962890625,-4.390332031250011],[-79.8451171875,-4.445898437500006],[-79.797265625,-4.476367187500003],[-79.71098632812499,-4.467578125],[-79.63852539062499,-4.454882812500003],[-79.57768554687499,-4.500585937500006],[-79.51616210937499,-4.539160156250006],[-79.501904296875,-4.670605468750011],[-79.45576171875,-4.766210937500006],[-79.3994140625,-4.840039062500011],[-79.33095703125,-4.927832031250006],[-79.26811523437499,-4.957617187500006],[-79.186669921875,-4.958203125000011],[-79.07626953124999,-4.990625],[-79.03330078124999,-4.969140625],[-78.995263671875,-4.908007812500003],[-78.97539062499999,-4.873242187500011],[-78.919189453125,-4.8583984375],[-78.92578125,-4.770703125000011],[-78.9076171875,-4.714453125],[-78.8615234375,-4.6650390625],[-78.68603515625,-4.562402343750009],[-78.64799804687499,-4.248144531250006],[-78.345361328125,-3.397363281250009],[-78.240380859375,-3.472558593750009],[-77.860595703125,-2.981640625000011],[-76.6791015625,-2.562597656250006],[-76.089794921875,-2.133105468750003],[-75.570556640625,-1.53125],[-75.42041015625,-0.962207031250003],[-75.40805664062499,-0.92431640625],[-75.24960937499999,-0.951855468750011],[-75.259375,-0.590136718750003],[-75.42470703125,-0.408886718750011],[-75.49106445312499,-0.248339843750003],[-75.56059570312499,-0.200097656250009],[-75.63203125,-0.157617187500009],[-75.62626953124999,-0.122851562500003],[-75.340478515625,-0.1421875],[-75.13837890625,-0.050488281250011],[-74.8017578125,-0.200097656250009],[-74.78046875,-0.24453125],[-74.75537109375,-0.298632812500003],[-74.691650390625,-0.335253906250003],[-74.616357421875,-0.370019531250009],[-74.555078125,-0.429882812500011],[-74.5138671875,-0.470117187500009],[-74.46518554687499,-0.517675781250006],[-74.41787109375,-0.580664062500006],[-74.334423828125,-0.850878906250003],[-74.28388671875,-0.927832031250006],[-74.24638671874999,-0.970605468750009],[-74.05439453125,-1.028613281250003],[-73.98681640625,-1.09814453125],[-73.926953125,-1.125195312500011],[-73.86318359375,-1.196679687500009],[-73.664306640625,-1.248828125],[-73.4962890625,-1.693066406250011],[-73.19697265625,-1.830273437500011],[-73.1544921875,-2.278222656250009],[-72.9896484375,-2.339746093750009],[-72.94111328125,-2.39404296875],[-72.21845703125,-2.400488281250006],[-71.98427734375,-2.3265625],[-71.93247070312499,-2.288671875],[-71.86728515624999,-2.227734375000011],[-71.802734375,-2.166308593750003],[-71.75253906249999,-2.152734375],[-71.55947265625,-2.22421875],[-71.39697265625,-2.334082031250006],[-71.19638671874999,-2.313085937500006],[-71.11337890624999,-2.245410156250003],[-71.027294921875,-2.225781250000011],[-70.96855468749999,-2.206835937500003],[-70.70537109374999,-2.341992187500011],[-70.64799804687499,-2.40576171875],[-70.57587890625,-2.418261718750003],[-70.29462890625,-2.552539062500003],[-70.24443359374999,-2.606542968750006],[-70.16474609375,-2.639843750000011],[-70.095849609375,-2.658203125],[-70.735107421875,-3.781542968750003],[-70.5296875,-3.866406250000011],[-70.48583984375,-3.869335937500011],[-70.42109375,-3.849609375],[-70.37919921874999,-3.81875],[-70.339501953125,-3.814355468750009],[-70.2984375,-3.84423828125],[-70.24028320312499,-3.882714843750009],[-70.16752929687499,-4.050195312500009],[-70.0171875,-4.162011718750009],[-69.96591796874999,-4.2359375],[-69.97202148437499,-4.301171875],[-70.00395507812499,-4.327246093750006],[-70.05332031249999,-4.333105468750006],[-70.12880859375,-4.28662109375],[-70.23916015625,-4.301171875],[-70.31689453125,-4.246972656250009],[-70.34365234375,-4.193652343750003],[-70.40463867187499,-4.150097656250011],[-70.5306640625,-4.167578125],[-70.72158203125,-4.158886718750011],[-70.79951171875,-4.17333984375],[-70.97368164062499,-4.350488281250009],[-71.8447265625,-4.50439453125],[-72.256787109375,-4.748925781250009],[-72.35283203124999,-4.786035156250009],[-72.468994140625,-4.901269531250009],[-72.608349609375,-5.009570312500003],[-72.69873046875,-5.0671875],[-72.83193359375,-5.09375],[-72.88706054687499,-5.122753906250011],[-72.9798828125,-5.634863281250006],[-73.16289062499999,-5.933398437500003],[-73.209375,-6.028710937500009],[-73.235546875,-6.0984375],[-73.137353515625,-6.4658203125]]]},"properties":{"name":"Peru","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[120.250390625,5.256591796875043],[119.82148437500004,5.06953125000004],[120.1652343750001,5.332421875000037],[120.250390625,5.256591796875043]]],[[[121.159375,6.075634765625011],[121.41103515625005,5.939843749999966],[121.29443359374997,5.869970703125034],[120.8763671875,5.95263671875],[121.159375,6.075634765625011]]],[[[122.09287109375012,6.428320312500006],[121.95917968750004,6.415820312500045],[121.83203125000003,6.664062499999986],[122.0583007812501,6.740722656249972],[122.32353515625002,6.602246093750011],[122.09287109375012,6.428320312500006]]],[[[122.93710937500006,7.409130859374983],[122.80468750000003,7.315966796875017],[122.82216796875,7.428466796875014],[122.93710937500006,7.409130859374983]]],[[[117.07988281250007,7.883398437499977],[117.02832031249997,7.807519531249966],[116.96953125000007,7.894921875],[116.9935546875,8.050537109375014],[117.07705078125,8.069140624999974],[117.07988281250007,7.883398437499977]]],[[[117.35527343750002,8.21464843749996],[117.28701171875,8.191015625000034],[117.28085937500006,8.314990234374974],[117.35527343750002,8.21464843749996]]],[[[124.80664062500003,9.142626953125003],[124.66582031250002,9.132324218750043],[124.65332031250003,9.225830078125],[124.80664062500003,9.142626953125003]]],[[[123.69765625000005,9.237304687500028],[123.61445312500004,9.103320312499989],[123.49345703125002,9.192089843750054],[123.69765625000005,9.237304687500028]]],[[[126.00595703125006,9.320947265625009],[126.19335937499997,9.276708984374963],[126.30458984375,8.952050781249994],[126.13955078125005,8.59565429687504],[126.36533203125012,8.483886718750014],[126.45869140625004,8.20283203125004],[126.43535156250002,7.832812499999974],[126.57011718750002,7.677246093749986],[126.58154296875003,7.247753906249969],[126.1920898437501,6.852539062500014],[126.18935546875,6.309667968749991],[125.82441406250004,7.333300781249989],[125.68925781250007,7.263037109374977],[125.38066406250007,6.689941406250014],[125.58847656250012,6.465771484374997],[125.66796874999997,5.97866210937498],[125.34648437500002,5.598974609374977],[125.23154296875006,6.069531250000011],[124.92734375000006,5.875341796874977],[124.21279296875,6.233251953124977],[124.078125,6.404443359375037],[123.98525390625,6.993701171875003],[124.20664062500006,7.396435546874983],[123.66582031250002,7.817773437500023],[123.49306640625,7.80791015624996],[123.39091796875007,7.407519531250017],[123.09667968749997,7.700439453125],[122.8429687500001,7.529296875000043],[122.79179687500002,7.72246093749996],[122.61621093749997,7.763134765624983],[122.14248046875,6.949658203124997],[121.96425781250005,6.96821289062504],[121.92460937500002,7.199511718750003],[122.24335937500004,7.945117187500031],[122.91113281250003,8.156445312499997],[123.05058593750002,8.433935546875048],[123.43457031249997,8.70332031250004],[123.84921875000006,8.432714843749977],[123.79941406250006,8.049121093749989],[124.19765625,8.229541015624974],[124.40488281250006,8.599853515625014],[124.7311523437501,8.562988281250043],[124.86894531250002,8.972265625000034],[125.141015625,8.86875],[125.20966796875004,9.027148437500017],[125.49873046875004,9.014746093749977],[125.47128906250006,9.756787109374983],[126.00595703125006,9.320947265625009]]],[[[126.059375,9.766210937500034],[125.99121093750003,9.838525390625023],[126.07382812500006,10.059228515625051],[126.1725585937501,9.79995117187498],[126.059375,9.766210937500034]]],[[[124.59384765625006,9.787207031249963],[124.1224609375,9.599316406249969],[123.93564453125012,9.623974609375011],[123.81718750000002,9.817382812499986],[124.17285156250003,10.135205078124983],[124.33574218750002,10.159912109375043],[124.57714843749997,10.026708984374991],[124.59384765625006,9.787207031249963]]],[[[125.69023437500007,9.914453125000037],[125.49482421875004,10.118701171875003],[125.66679687500002,10.440136718750026],[125.69023437500007,9.914453125000037]]],[[[119.91621093750004,10.485986328125037],[119.79316406250004,10.455273437499997],[119.85205078124997,10.64013671875],[120.00839843750012,10.570117187500031],[119.91621093750004,10.485986328125037]]],[[[122.64951171875012,10.472705078125003],[122.53837890625002,10.424951171875037],[122.5375,10.607568359375023],[122.70126953125006,10.740625],[122.64951171875012,10.472705078125003]]],[[[123.13085937500003,9.064111328124994],[122.99472656250006,9.058837890624986],[122.8666015625,9.319824218750043],[122.5625,9.482812500000037],[122.39951171875006,9.823046874999989],[122.47148437500007,9.961523437500034],[122.85556640625006,10.0869140625],[122.81699218750012,10.503808593750023],[122.98330078125,10.886621093750037],[123.25664062500007,10.99394531249996],[123.51064453125005,10.923046875],[123.5675781250001,10.780761718750057],[123.16201171875,9.864257812500028],[123.1498046875,9.606152343750026],[123.32050781250004,9.27294921875],[123.13085937500003,9.064111328124994]]],[[[123.37031250000004,9.449609375000023],[123.38623046874997,9.967089843750017],[124.03886718750002,11.273535156249991],[124.00498046875012,10.40009765625004],[123.70048828125007,10.128320312500009],[123.37031250000004,9.449609375000023]]],[[[123.75703125000004,11.28330078125002],[123.815625,11.15073242187502],[123.73671875,11.151464843749991],[123.75703125000004,11.28330078125002]]],[[[117.31113281250012,8.439599609375051],[117.21855468750007,8.367285156249963],[117.34990234375002,8.713574218749997],[119.22382812500004,10.477294921875043],[119.30566406250003,10.9736328125],[119.55332031250012,11.31352539062496],[119.52666015625002,10.953173828125003],[119.68691406250005,10.500341796875034],[119.36933593750004,10.327294921875037],[119.19150390625012,10.061083984374989],[118.78212890625005,9.91611328125002],[118.4349609375,9.256005859375009],[117.31113281250012,8.439599609375051]]],[[[119.86142578125006,11.52534179687504],[119.83066406250012,11.375683593750011],[119.72998046874997,11.431933593750017],[119.86142578125006,11.52534179687504]]],[[[124.574609375,11.343066406250031],[124.92998046875002,11.372851562499974],[125.02656250000004,11.21171875],[125.01318359374997,10.785693359374989],[125.26845703125005,10.307714843750048],[125.14257812499997,10.189453125000028],[124.9875,10.36757812499998],[125.02656250000004,10.033105468749966],[124.78076171874997,10.16806640625002],[124.78671875000012,10.781396484375009],[124.66269531250006,10.961962890625017],[124.44550781250004,10.923583984375014],[124.33066406250012,11.535205078125003],[124.574609375,11.343066406250031]]],[[[124.60839843750003,11.492187500000043],[124.48349609375006,11.485839843749986],[124.36035156250003,11.665917968749994],[124.5109375000001,11.687109375000048],[124.60839843750003,11.492187500000043]]],[[[122.49619140625006,11.615087890625034],[122.83808593750004,11.595654296874983],[122.89453125000003,11.44130859374998],[123.15830078125012,11.53554687499999],[123.11953125,11.286816406250026],[122.8029296875001,10.99003906249996],[122.76992187500005,10.823828125000034],[121.95400390625,10.444384765625003],[122.10351562499997,11.64291992187502],[121.91601562499997,11.854345703125006],[122.02919921875005,11.895410156250023],[122.49619140625006,11.615087890625034]]],[[[120.03876953125004,11.703320312499969],[119.94492187500006,11.690722656249989],[119.86093750000006,11.953955078124963],[120.03593750000002,11.917236328125028],[120.03876953125004,11.703320312499969]]],[[[120.1,12.167675781249983],[120.22822265625004,12.219824218750034],[120.31455078125012,12.012402343749969],[120.01054687500002,12.008251953125011],[119.88574218749997,12.299853515625003],[120.1,12.167675781249983]]],[[[122.65449218750004,12.309033203125011],[122.42294921875006,12.455078125],[122.60361328125006,12.49160156249998],[122.65449218750004,12.309033203125011]]],[[[125.23955078125002,12.527880859375003],[125.32021484375,12.321826171875031],[125.53564453125003,12.191406250000028],[125.49179687500006,11.594335937499977],[125.57353515625002,11.238232421874997],[125.73564453125002,11.049609375000017],[125.23339843749997,11.145068359375017],[125.03427734375012,11.341259765625026],[124.91699218750003,11.558398437500031],[124.99501953125,11.764941406250003],[124.445703125,12.152783203124969],[124.29472656250007,12.569335937500014],[125.23955078125002,12.527880859375003]]],[[[123.71660156250007,12.287353515625028],[124.04033203125002,11.966796875],[124.04550781250012,11.752441406250028],[123.47373046875006,12.21665039062502],[123.15781250000012,11.925634765624963],[123.23642578125012,12.583496093750057],[123.71660156250007,12.287353515625028]]],[[[122.09404296875002,12.354882812500023],[122.01396484375002,12.105615234375037],[121.9232421875,12.331298828125014],[122.00156250000006,12.598535156250009],[122.14501953124997,12.652636718750017],[122.09404296875002,12.354882812500023]]],[[[123.77539062499997,12.453906250000031],[123.77910156250002,12.366259765625031],[123.62148437500005,12.67490234375002],[123.77539062499997,12.453906250000031]]],[[[123.28183593750006,12.85341796874998],[123.36718750000003,12.70083007812498],[122.95751953124997,13.107177734374986],[123.28183593750006,12.85341796874998]]],[[[120.70439453125002,13.479492187499986],[121.20273437500006,13.432324218749969],[121.52275390625007,13.131201171874991],[121.540625,12.63818359375],[121.39433593750002,12.300585937499974],[121.23671875000005,12.218798828125003],[120.92216796875002,12.51162109374998],[120.65136718749997,13.169140625],[120.33847656250012,13.412353515624986],[120.40126953125,13.517041015624997],[120.70439453125002,13.479492187499986]]],[[[121.91484375000002,13.540332031250031],[122.11455078125002,13.463183593750031],[122.00488281249997,13.204980468750009],[121.82919921875006,13.328613281249972],[121.91484375000002,13.540332031250031]]],[[[124.35361328125006,13.632226562500009],[124.17539062500012,13.531542968750017],[124.03886718750002,13.663134765625003],[124.22490234375007,14.077587890624969],[124.41718750000004,13.871044921874997],[124.35361328125006,13.632226562500009]]],[[[122.03349609375002,15.005029296875009],[121.93300781250005,14.656054687500045],[121.83984374999997,15.038134765625003],[122.03349609375002,15.005029296875009]]],[[[121.10156249999997,18.615283203125017],[121.84560546875,18.29541015625003],[122.03847656250005,18.32792968749999],[122.14667968750004,18.486572265625],[122.26552734375005,18.458837890625034],[122.15234374999997,17.664404296875006],[122.51914062500012,17.124853515625034],[122.13515625000005,16.18481445312503],[121.59531250000012,15.933251953125023],[121.60703125000006,15.669824218749994],[121.39228515625004,15.324414062499969],[121.69541015625006,14.7373046875],[121.62792968749997,14.581152343749977],[121.76660156249997,14.16806640625002],[122.21171875000002,13.930175781250057],[122.2875,13.996191406250006],[122.19970703125003,14.148046875000034],[122.6271484375001,14.317529296875009],[122.93417968750012,14.18808593750002],[123.101953125,13.750244140624986],[123.29697265625012,13.836425781250043],[123.32031249999997,14.061669921875023],[123.81572265625002,13.837109375000011],[123.80625000000012,13.721728515625045],[123.54960937500007,13.645751953125014],[123.81923828125,13.269482421875011],[123.78515625000003,13.110546875000054],[124.14277343750004,13.035791015625009],[124.0597656250001,12.567089843749997],[123.87783203125005,12.689697265625014],[123.94853515625007,12.916406250000023],[123.31093750000005,13.044091796875009],[123.16328125000004,13.44174804687502],[122.59521484374997,13.90761718749998],[122.46796875000004,13.886718749999986],[122.66787109375,13.395361328124991],[122.59990234375002,13.194140625000031],[122.37656250000012,13.520605468750006],[121.77792968750006,13.93764648437498],[121.50107421875006,13.8421875],[121.344140625,13.649121093749997],[121.09550781250007,13.679492187500045],[120.84072265625,13.884716796875026],[120.637109375,13.804492187500031],[120.61679687500006,14.188037109375003],[120.9220703125001,14.493115234374983],[120.94130859375,14.645068359375031],[120.58369140625004,14.88125],[120.58867187500002,14.483105468749983],[120.43876953125002,14.453369140624972],[120.25078125000002,14.793310546875034],[120.08212890625012,14.851074218749986],[119.77255859375012,16.25512695312503],[119.83076171875004,16.326562500000023],[120.15976562500012,16.047656250000045],[120.36875,16.109570312499955],[120.35839843749997,17.63818359375],[120.59970703125012,18.507861328125074],[121.10156249999997,18.615283203125017]]],[[[121.92167968750007,18.89472656250001],[121.82519531250003,18.842724609374983],[121.94335937500003,19.010449218749955],[121.92167968750007,18.89472656250001]]],[[[121.52089843750005,19.361962890624994],[121.53125,19.271337890625006],[121.37460937500006,19.356298828124977],[121.52089843750005,19.361962890624994]]]]},"properties":{"name":"Philippines","childNum":37}},{"geometry":{"type":"Polygon","coordinates":[[[134.5954101562501,7.382031249999969],[134.51572265625012,7.525781250000037],[134.65117187500002,7.712109374999983],[134.5954101562501,7.382031249999969]]]},"properties":{"name":"Palau","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[153.53613281249997,-11.476171874999949],[153.75986328125006,-11.586328125],[153.55371093749997,-11.630566406249969],[153.28681640625004,-11.516992187500009],[153.20361328124997,-11.32412109374998],[153.53613281249997,-11.476171874999949]]],[[[154.28076171874997,-11.36142578125002],[154.12119140625006,-11.425683593749966],[154.02343750000003,-11.347949218750031],[154.28076171874997,-11.36142578125002]]],[[[150.89873046875002,-10.565332031250023],[150.88466796875,-10.643457031250037],[150.78574218750006,-10.603417968749966],[150.89873046875002,-10.565332031250023]]],[[[151.08095703125,-10.020117187499963],[151.29648437500012,-9.956738281250026],[151.230859375,-10.194726562500009],[150.95917968750004,-10.092578124999989],[150.77607421875004,-9.70908203125002],[151.08095703125,-10.020117187499963]]],[[[150.52841796875006,-9.34658203124998],[150.78867187500006,-9.417968749999957],[150.89404296875003,-9.667480468749986],[150.43623046875004,-9.624609374999949],[150.5084960937501,-9.536132812499957],[150.43730468750007,-9.359960937500034],[150.52841796875006,-9.34658203124998]]],[[[150.3454101562501,-9.493847656249955],[150.10976562500005,-9.361914062499991],[150.20830078125002,-9.206347656250003],[150.32011718750007,-9.264160156249972],[150.3454101562501,-9.493847656249955]]],[[[152.63095703125012,-8.959375],[152.95292968750007,-9.07011718749996],[152.96689453125006,-9.208984375000014],[152.51513671874997,-9.009863281250034],[152.63095703125012,-8.959375]]],[[[151.10683593750005,-8.733496093749949],[151.12412109375012,-8.804882812500011],[151.00498046875006,-8.523828124999952],[151.117578125,-8.41884765624998],[151.10683593750005,-8.733496093749949]]],[[[143.58681640625005,-8.481738281250003],[143.321875,-8.367578125],[143.5814453125,-8.390917968749974],[143.58681640625005,-8.481738281250003]]],[[[148.02578125,-5.826367187500011],[147.78105468750007,-5.627246093749946],[147.7946289062501,-5.492382812500011],[148.05478515625006,-5.61152343750004],[148.02578125,-5.826367187500011]]],[[[155.95761718750006,-6.686816406249989],[155.71933593750012,-6.862792968749957],[155.34404296875007,-6.721679687499986],[155.20214843750003,-6.3076171875],[154.75927734375003,-5.931347656249997],[154.72929687500002,-5.444433593750006],[155.09384765625006,-5.620214843750034],[155.46699218750004,-6.145117187500034],[155.82255859375002,-6.38046875000002],[155.95761718750006,-6.686816406249989]]],[[[147.17626953124997,-5.431933593749946],[147.00585937499997,-5.30703125],[147.1310546875001,-5.190820312500037],[147.17626953124997,-5.431933593749946]]],[[[154.64726562500002,-5.43271484375002],[154.54003906250003,-5.11083984375],[154.63261718750007,-5.013867187499955],[154.72714843750006,-5.218066406249989],[154.64726562500002,-5.43271484375002]]],[[[146.01933593750007,-4.726171874999963],[145.88359375000007,-4.66748046875],[145.9958007812501,-4.539257812499983],[146.01933593750007,-4.726171874999963]]],[[[151.915625,-4.296777343749966],[152.11718749999997,-4.212207031249974],[152.40566406250005,-4.340722656249952],[152.35117187500006,-4.82216796874998],[151.98369140625007,-5.07441406250004],[152.14296875,-5.357031249999963],[152.07705078125,-5.458300781249989],[151.86542968750004,-5.564843750000023],[151.51513671874997,-5.552343749999963],[151.22929687500002,-5.919921874999986],[150.47353515625,-6.263378906249969],[149.65253906250004,-6.290429687499966],[149.38232421874997,-6.078125],[149.0990234375,-6.116992187499989],[148.33720703125007,-5.669433593750014],[148.43203125,-5.471777343749991],[149.35888671875003,-5.583984375000014],[149.8314453125,-5.524121093749997],[149.96279296875,-5.447753906249972],[150.0900390625001,-5.011816406249977],[150.1703125,-5.070605468749974],[150.0724609375001,-5.309570312499986],[150.18310546874997,-5.523632812499983],[150.90029296875005,-5.447167968750037],[151.32656250000005,-4.96035156249998],[151.67119140625007,-4.88330078125],[151.59306640625007,-4.200781249999949],[151.915625,-4.296777343749966]]],[[[152.67060546875004,-3.13339843750002],[152.64619140625004,-3.221191406249957],[152.54326171875002,-3.095605468749952],[152.63876953125012,-3.042773437500031],[152.67060546875004,-3.13339843750002]]],[[[140.97617187500012,-9.11875],[140.97519531250006,-6.90537109375002],[140.86230468749997,-6.740039062499989],[140.975,-6.346093750000023],[140.97353515625,-2.803417968750026],[140.97343750000007,-2.609765625],[142.90517578125,-3.32070312499998],[143.50898437500004,-3.431152343750014],[144.06640625000003,-3.80517578125],[144.4777343750001,-3.82529296875002],[145.08779296875,-4.349121093749972],[145.33457031250012,-4.385253906249972],[145.7669921875,-4.823046874999989],[145.74521484375012,-5.402441406249977],[147.56669921875002,-6.056933593750003],[147.80205078125002,-6.31523437499996],[147.84550781250007,-6.662402343749989],[147.11914062499997,-6.721679687499986],[146.95361328124997,-6.834082031249963],[147.19003906250012,-7.378125],[148.12675781250007,-8.103613281249963],[148.246875,-8.554296875000034],[148.45117187499997,-8.694531250000011],[148.58310546875006,-9.051757812499957],[149.19833984375006,-9.03125],[149.26318359374997,-9.497851562499974],[150.01103515625007,-9.688183593750026],[149.76123046874997,-9.805859375000011],[149.87441406250005,-10.012988281250031],[150.84951171875,-10.236035156249997],[150.44609375000007,-10.30732421875004],[150.6471679687501,-10.517968749999966],[150.31992187500012,-10.654882812499963],[150.0167968750001,-10.577148437500028],[149.75410156250004,-10.353027343750028],[147.76865234375012,-10.070117187500031],[147.01718750000006,-9.38789062500004],[146.96376953125,-9.059570312499943],[146.63085937499997,-8.951171874999972],[146.03320312499997,-8.076367187500011],[144.97382812500004,-7.802148437500009],[144.86425781249997,-7.631542968749983],[144.50986328125006,-7.567382812499972],[144.14287109375007,-7.757226562500009],[143.65488281250012,-7.460351562500009],[143.94228515625005,-7.944238281250009],[143.8333984375,-8.029101562499974],[143.51816406250006,-8.000683593749955],[143.61376953125003,-8.200390624999969],[142.52412109375004,-8.32167968749998],[142.34746093750002,-8.167480468750014],[142.20683593750002,-8.195800781250014],[142.47480468750004,-8.369433593750031],[142.79794921875006,-8.345019531250031],[143.11181640624997,-8.474511718750037],[143.37724609375007,-8.762207031250028],[143.36621093750003,-8.961035156250034],[142.6471679687501,-9.327832031249969],[142.22958984375012,-9.169921874999957],[141.13320312500005,-9.221289062500034],[140.97617187500012,-9.11875]]],[[[152.96582031249997,-4.756347656249986],[152.89169921875006,-4.832421875000023],[152.73994140625004,-4.635839843750034],[152.66816406250004,-4.131835937500028],[152.27939453125006,-3.582421875],[151.06679687500005,-2.829003906249994],[150.74609374999997,-2.73886718750002],[150.8253906250001,-2.572949218749969],[152.03291015625004,-3.25136718749998],[153.01679687500004,-4.105664062500026],[153.1325195312501,-4.352441406250037],[152.96582031249997,-4.756347656249986]]],[[[150.43662109375012,-2.66181640625004],[150.16572265625004,-2.660253906249991],[149.96162109375004,-2.473828125000026],[150.22714843750006,-2.384179687499966],[150.42949218750007,-2.47041015625004],[150.43662109375012,-2.66181640625004]]],[[[147.06757812500004,-1.96015625],[147.43808593750012,-2.05898437499998],[147.20634765625007,-2.181933593749974],[146.54648437500012,-2.20859375],[146.65625,-1.97402343749998],[147.06757812500004,-1.96015625]]],[[[149.76542968750007,-1.553027343750017],[149.54589843749997,-1.471679687499957],[149.58095703125005,-1.353222656249983],[149.76542968750007,-1.553027343750017]]]]},"properties":{"name":"Papua New Guinea","childNum":21}},{"geometry":{"type":"Polygon","coordinates":[[[23.484667968750017,53.939794921875],[23.915429687500023,52.770263671875],[23.175097656250017,52.28662109375],[23.652441406250006,52.040380859375],[23.605273437500017,51.517919921875],[23.664453125000023,51.31005859375],[24.095800781250006,50.87275390625],[23.9970703125,50.809375],[24.089941406250006,50.53046875],[23.97265625,50.410058593749994],[23.711718750000017,50.37734375],[23.03632812500001,49.899072265624994],[22.706152343750006,49.606201171875],[22.6494140625,49.539013671875],[22.66064453125,49.483691406249996],[22.71992187500001,49.353808593749996],[22.732421875,49.295166015625],[22.705664062500006,49.171191406249996],[22.847070312500023,49.08125],[22.538671875,49.072705078125],[22.473046875000023,49.081298828125],[22.020117187500006,49.209521484374996],[21.6396484375,49.411962890625],[21.079394531250017,49.418261718749996],[20.868457031250017,49.314697265625],[20.36298828125001,49.38525390625],[20.0576171875,49.181298828124994],[19.756640625000017,49.204394531249996],[19.77392578125,49.37216796875],[19.44160156250001,49.597705078124996],[19.1494140625,49.4],[18.83222656250001,49.510791015624996],[18.562402343750023,49.879345703125],[18.0283203125,50.03525390625],[17.874804687500017,49.972265625],[17.627050781250006,50.11640625],[17.702246093750006,50.307177734374996],[17.41523437500001,50.254785156249994],[16.88007812500001,50.427050781249996],[16.989648437500023,50.2369140625],[16.63916015625,50.1021484375],[16.210351562500023,50.423730468749994],[16.419726562500017,50.573632812499994],[16.2822265625,50.655615234375],[16.007226562500023,50.611621093749996],[14.99375,51.01435546875],[14.98291015625,50.886572265625],[14.895800781250017,50.861376953124996],[14.809375,50.858984375],[14.814257812500017,50.871630859374996],[14.91748046875,51.008740234375],[14.9638671875,51.095117187499994],[14.935546875,51.435351562499996],[14.905957031250011,51.463330078125],[14.724707031250006,51.523876953125],[14.7109375,51.544921875],[14.738671875000023,51.6271484375],[14.601660156250006,51.832373046875],[14.752539062500006,52.081835937499996],[14.679882812500011,52.25],[14.615625,52.277636718749996],[14.573925781250011,52.31416015625],[14.554589843750023,52.359667968749996],[14.569726562500023,52.431103515625],[14.619433593750017,52.528515625],[14.514062500000023,52.64560546875],[14.253710937500017,52.782519531249996],[14.128613281250011,52.878222656249996],[14.138867187500011,52.932861328125],[14.293164062500011,53.0267578125],[14.368554687500023,53.10556640625],[14.410937500000017,53.199023437499996],[14.412304687500011,53.216748046875],[14.41455078125,53.283496093749996],[14.258886718750006,53.729638671875],[14.58349609375,53.63935546875],[14.558398437500017,53.823193359375],[14.21142578125,53.950341796875],[16.186328125000017,54.290380859375],[16.55976562500001,54.55380859375],[18.32343750000001,54.838183593749996],[18.75927734375,54.6845703125],[18.43623046875001,54.7447265625],[18.83642578125,54.369580078125],[19.604394531250023,54.4591796875],[20.20820312500001,54.420751953125],[22.16845703125,54.35986328125],[22.731835937500023,54.35009765625],[22.766210937500006,54.356787109375],[22.82373046875,54.395800781249996],[22.893945312500023,54.39052734375],[22.97675781250001,54.366357421875],[23.015527343750023,54.34833984375],[23.04218750000001,54.30419921875],[23.0875,54.299462890625],[23.170312500000023,54.2814453125],[23.282324218750006,54.24033203125],[23.3701171875,54.200488281249996],[23.45361328125,54.14345703125],[23.484667968750017,53.939794921875]]]},"properties":{"name":"Poland","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-65.42558593749999,18.105615234374994],[-65.57221679687493,18.137304687499977],[-65.29487304687501,18.133349609375045],[-65.42558593749999,18.105615234374994]]],[[[-66.12939453125003,18.444921875000034],[-65.62880859375,18.381396484375045],[-65.62084960937497,18.242333984374966],[-65.97080078124995,17.974365234375],[-67.196875,17.994189453125045],[-67.2640625,18.364599609375006],[-67.15864257812501,18.499218749999983],[-66.12939453125003,18.444921875000034]]]]},"properties":{"name":"Puerto Rico","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[130.52695312500012,42.535400390625],[130.68730468750007,42.30253906249999],[130.2357421875,42.183203125000034],[129.75634765624997,41.712255859375006],[129.70869140625004,40.857324218749994],[129.34111328125002,40.72631835937506],[128.51123046874997,40.130224609375006],[127.56816406250002,39.78198242187503],[127.39453125000003,39.207910156249966],[127.78613281250003,39.084130859374966],[128.37460937500012,38.6234375],[128.03896484375,38.30854492187498],[127.09033203125003,38.28388671875001],[126.63388671875012,37.78183593750006],[126.36992187500007,37.87836914062501],[126.11669921875003,37.74291992187503],[125.76914062500006,37.98535156250003],[125.35781250000005,37.72480468749998],[125.31074218750004,37.843505859375],[124.98876953124997,37.93144531249999],[125.2067382812501,38.08154296875],[124.69091796874997,38.12919921875002],[125.06738281250003,38.556738281250006],[125.55449218750002,38.68623046875001],[125.16884765625,38.80551757812506],[125.40966796875003,39.28837890625002],[125.36083984375003,39.52661132812497],[124.77529296875,39.75805664062506],[124.63828125000006,39.61508789062506],[124.36210937500002,40.004052734374994],[124.8893554687501,40.459814453125006],[125.98906250000002,40.904638671875034],[126.74306640625,41.724853515625],[126.95478515625004,41.76948242187501],[127.17968750000003,41.531347656250006],[128.14941406249997,41.38774414062496],[128.28925781250004,41.60742187500006],[128.04521484375007,41.9875],[128.92343750000006,42.038232421874966],[129.3136718750001,42.41357421874997],[129.69785156250012,42.448144531249994],[129.89824218750002,42.998144531250034],[130.24033203125006,42.891796874999955],[130.24667968750012,42.744824218749955],[130.52695312500012,42.535400390625]]]},"properties":{"name":"Dem. Rep. Korea","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-17.190869140624926,32.86860351562498],[-16.693261718749966,32.75800781250001],[-17.018261718749926,32.66279296874998],[-17.226025390624983,32.76684570312503],[-17.190869140624926,32.86860351562498]]],[[[-25.64897460937499,37.840917968750006],[-25.18193359374996,37.837890625],[-25.19072265624999,37.764355468749955],[-25.73447265624992,37.76289062500001],[-25.845898437499983,37.89404296875],[-25.64897460937499,37.840917968750006]]],[[[-28.14726562499996,38.45268554687502],[-28.064794921875034,38.412744140624966],[-28.454492187500023,38.40864257812504],[-28.54882812499997,38.51855468750003],[-28.14726562499996,38.45268554687502]]],[[[-28.641308593749983,38.525],[-28.842041015625,38.5984375],[-28.69775390625,38.638476562500045],[-28.641308593749983,38.525]]],[[[-27.07524414062496,38.643457031249994],[-27.38593750000001,38.765820312499955],[-27.127001953125017,38.78984375],[-27.07524414062496,38.643457031249994]]],[[[-31.137109374999937,39.40693359375001],[-31.282958984375,39.39409179687496],[-31.260839843750034,39.49677734375001],[-31.137109374999937,39.40693359375001]]],[[[-7.406152343749937,37.17944335937497],[-7.834130859374994,37.005712890625034],[-8.597656249999943,37.12133789062506],[-8.997802734375028,37.03227539062502],[-8.814160156249983,37.43081054687502],[-8.881103515624943,38.44667968750005],[-8.668310546874949,38.42431640625003],[-8.798876953124989,38.518164062500034],[-9.213281249999937,38.44809570312498],[-9.250390624999966,38.65673828125003],[-9.021484374999943,38.746875],[-8.79160156249992,39.07817382812502],[-9.13579101562496,38.74277343749998],[-9.35673828124996,38.697900390624994],[-9.479736328124972,38.79877929687501],[-9.374755859374972,39.338281249999966],[-8.837841796874926,40.11567382812498],[-8.684619140624989,40.75253906250006],[-8.755419921874932,41.69838867187502],[-8.887597656249937,41.76459960937501],[-8.777148437500017,41.941064453124994],[-8.266064453124983,42.13740234375001],[-8.152490234374937,41.81196289062498],[-7.40361328124996,41.833691406249955],[-7.147119140625023,41.98115234374998],[-6.61826171874992,41.9423828125],[-6.542187499999955,41.672509765624994],[-6.2125,41.53203125],[-6.928466796874972,41.009130859375006],[-6.8101562499999,40.343115234375034],[-7.032617187499966,40.16791992187498],[-6.896093749999949,40.02182617187506],[-6.975390624999932,39.79838867187502],[-7.117675781249972,39.681689453125045],[-7.53569335937496,39.66157226562501],[-6.997949218749994,39.05644531250002],[-7.343017578124943,38.45742187500002],[-7.106396484374983,38.181005859375006],[-6.957568359374932,38.18789062499999],[-7.44394531249992,37.72827148437497],[-7.406152343749937,37.17944335937497]]]]},"properties":{"name":"Portugal","childNum":7,"cp":[-8.7440694,39.9251454]}},{"geometry":{"type":"Polygon","coordinates":[[[-58.15976562499999,-20.164648437500006],[-58.13779296874999,-20.2373046875],[-58.12460937499999,-20.29345703125],[-58.09150390625,-20.33320312500001],[-58.05844726562499,-20.38613281250001],[-58.025390625,-20.415820312500003],[-58.00224609374999,-20.465429687500006],[-57.97905273437499,-20.657324218750006],[-57.91513671874999,-20.69033203125001],[-57.830224609374994,-20.99794921875001],[-57.94267578124999,-21.79833984375],[-57.95590820312499,-22.109179687500003],[-56.77519531249999,-22.261328125],[-56.44780273437499,-22.076171875],[-56.39487304687499,-22.09267578125001],[-56.35185546874999,-22.17861328125001],[-56.246044921875,-22.2646484375],[-56.18984375,-22.28115234375001],[-55.99140625,-22.28115234375001],[-55.84916992187499,-22.3076171875],[-55.75327148437499,-22.41015625],[-55.74663085937499,-22.5126953125],[-55.61767578125,-22.671484375],[-55.53828125,-23.58095703125001],[-55.518457031249994,-23.627246093750003],[-55.458886718749994,-23.68671875000001],[-55.4423828125,-23.792578125],[-55.4423828125,-23.865332031250006],[-55.415917968749994,-23.95136718750001],[-55.36630859374999,-23.991015625],[-55.28691406249999,-24.004296875],[-55.1943359375,-24.01748046875001],[-55.08188476562499,-23.99765625],[-54.982666015625,-23.97451171875001],[-54.62548828125,-23.8125],[-54.44023437499999,-23.90175781250001],[-54.37080078125,-23.97119140625],[-54.24179687499999,-24.047265625],[-54.281005859375,-24.30605468750001],[-54.43623046875,-25.12128906250001],[-54.47314453125,-25.22021484375],[-54.610546875,-25.432714843750006],[-54.615869140624994,-25.57607421875001],[-54.63193359374999,-26.00576171875001],[-54.677734375,-26.30878906250001],[-54.934472656249994,-26.70253906250001],[-55.1359375,-26.93115234375],[-55.426660156249994,-27.00927734375],[-55.450634765625,-27.068359375],[-55.496728515624994,-27.115332031250006],[-55.564892578125,-27.15],[-55.59726562499999,-27.207617187500006],[-55.59379882812499,-27.2880859375],[-55.63291015624999,-27.35712890625001],[-55.71464843749999,-27.41484375],[-55.789990234375,-27.41640625],[-55.95146484374999,-27.32568359375],[-56.1640625,-27.32148437500001],[-56.437158203124994,-27.553808593750006],[-58.16826171874999,-27.2734375],[-58.60483398437499,-27.31435546875001],[-58.641748046874994,-27.19609375],[-58.618603515625,-27.132128906250003],[-58.222070312499994,-26.65],[-58.18149414062499,-26.307421875],[-57.943115234375,-26.05292968750001],[-57.563134765624994,-25.473730468750006],[-57.821679687499994,-25.13642578125001],[-59.187255859375,-24.562304687500003],[-59.892480468749994,-24.093554687500003],[-60.83984375,-23.85810546875001],[-61.084716796875,-23.65644531250001],[-61.79853515625,-23.18203125],[-62.21416015624999,-22.612402343750006],[-62.372509765625,-22.43916015625001],[-62.54155273437499,-22.349609375],[-62.6259765625,-22.29042968750001],[-62.62568359375,-22.261523437500003],[-62.65097656249999,-22.233691406250003],[-62.27666015624999,-21.066015625],[-62.276318359375,-20.5625],[-61.7568359375,-19.6453125],[-60.00737304687499,-19.29755859375001],[-59.09052734375,-19.286230468750006],[-58.18017578125,-19.81787109375],[-58.15976562499999,-20.164648437500006]]]},"properties":{"name":"Paraguay","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[34.34833984375004,31.292919921874955],[34.2453125000001,31.208300781250045],[34.2125,31.292285156250017],[34.198144531249994,31.322607421875063],[34.47734375000002,31.584863281250023],[34.52412109375004,31.541650390624994],[34.5255859375001,31.52563476562503],[34.34833984375004,31.292919921874955]]],[[[34.88046875,31.3681640625],[34.950976562500074,31.60229492187503],[35.20371093750006,31.75],[35.1271484375001,31.816748046875006],[35.05322265625003,31.83793945312496],[34.983007812500006,31.816796875000023],[34.9611328125001,31.823339843750006],[34.95380859375004,31.84125976562504],[34.98974609374997,31.913281249999955],[34.955957031249994,32.1609375],[35.01054687500002,32.33818359375002],[35.06503906250006,32.46044921875006],[35.19326171875005,32.53442382812503],[35.303808593750006,32.512939453125],[35.38671875000003,32.493017578125034],[35.402636718750074,32.45063476562501],[35.484375,32.40166015624999],[35.5514648437501,32.39550781250006],[35.57207031250002,32.237890625],[35.450585937499994,31.479296875000017],[34.88046875,31.3681640625]]]]},"properties":{"name":"Palestine","childNum":2}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-149.321533203125,-17.690039062499963],[-149.177685546875,-17.736621093750045],[-149.18178710937497,-17.86230468749997],[-149.34111328125,-17.732421874999986],[-149.57890624999993,-17.734960937499963],[-149.635009765625,-17.564257812500003],[-149.37919921874993,-17.522363281249994],[-149.321533203125,-17.690039062499963]]],[[[-143.44057617187497,-16.619726562499963],[-143.38618164062498,-16.668847656250023],[-143.55068359375002,-16.62109374999997],[-143.44057617187497,-16.619726562499963]]],[[[-139.02431640624997,-9.695214843750037],[-138.82734375,-9.74160156249998],[-139.13408203124996,-9.829492187500037],[-139.02431640624997,-9.695214843750037]]],[[[-140.075634765625,-9.425976562499983],[-140.14438476562498,-9.359375],[-140.07094726562497,-9.328125],[-140.075634765625,-9.425976562499983]]],[[[-140.07260742187503,-8.910449218750031],[-140.21743164062497,-8.929687499999957],[-140.24003906249993,-8.79755859375004],[-140.057666015625,-8.801464843750026],[-140.07260742187503,-8.910449218750031]]]]},"properties":{"name":"Fr. Polynesia","childNum":5}},{"geometry":{"type":"Polygon","coordinates":[[[51.26796875000002,24.607226562500003],[51.17802734375002,24.58671875],[51.093359375,24.564648437499997],[51.02275390625002,24.565234375],[50.96601562500001,24.573925781249997],[50.928320312500006,24.595117187499994],[50.85566406250001,24.679638671874997],[50.80439453125001,24.789257812499997],[50.8359375,24.850390625],[50.846777343750006,24.888574218749994],[50.75458984375001,25.39926757812499],[51.003125,25.9814453125],[51.262304687500006,26.153271484374997],[51.543066406250006,25.902392578125003],[51.4853515625,25.524707031250003],[51.60888671875,25.052880859374994],[51.42792968750001,24.668261718750003],[51.26796875000002,24.607226562500003]]]},"properties":{"name":"Qatar","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[28.2125,45.450439453125],[28.317675781250017,45.347119140625],[28.451269531250006,45.2921875],[28.78828125000001,45.240966796875],[28.78173828125,45.309863281249996],[28.894335937500017,45.289941406249994],[29.223535156250023,45.4029296875],[29.403710937500023,45.419677734375],[29.567675781250017,45.37080078125],[29.705859375000017,45.259912109374994],[29.557519531250023,44.843408203124994],[29.048242187500023,44.757568359375],[29.0953125,44.975048828125],[28.891503906250023,44.91865234375],[28.585351562500023,43.742236328124996],[28.221972656250017,43.772851562499994],[27.88427734375,43.987353515624996],[27.425390625,44.0205078125],[27.0869140625,44.167382812499994],[26.2158203125,44.007275390625],[25.4970703125,43.670800781249994],[22.919042968750006,43.83447265625],[22.868261718750006,43.947900390624994],[23.02851562500001,44.077978515625],[22.705078125,44.23779296875],[22.687890625000023,44.248291015625],[22.494531250000023,44.435449218749994],[22.554003906250017,44.540332031249996],[22.6201171875,44.562353515625],[22.70078125,44.555517578125],[22.734375,44.569921875],[22.72089843750001,44.605517578124996],[22.64208984375,44.6509765625],[22.49765625,44.70625],[22.350683593750006,44.676123046875],[22.200976562500017,44.560693359374994],[22.093066406250017,44.541943359375],[21.909277343750006,44.66611328125],[21.636132812500023,44.71044921875],[21.52314453125001,44.790087890624996],[21.36005859375001,44.82666015625],[21.35791015625,44.86181640625],[21.384375,44.870068359375],[21.442187500000017,44.873388671875],[21.519921875000023,44.880810546875],[21.532324218750006,44.900683593749996],[21.35703125,44.990771484374996],[21.465429687500006,45.171875],[21.431445312500017,45.192529296874994],[20.794042968750006,45.46787109375],[20.775,45.749804687499996],[20.760156250000023,45.758105468749996],[20.746875,45.748974609375],[20.727832031250017,45.73740234375],[20.709277343750017,45.735253906249994],[20.652734375000023,45.77939453125],[20.581152343750006,45.869482421875],[20.35859375000001,45.975488281249994],[20.241796875,46.10859375],[20.28095703125001,46.1330078125],[20.508105468750017,46.166943359375],[20.613671875000023,46.13349609375],[20.76025390625,46.246240234374994],[21.121679687500006,46.282421875],[21.99970703125001,47.505029296874994],[22.87666015625001,47.947265625],[23.054785156250006,48.00654296875],[23.139453125000017,48.08740234375],[23.20263671875,48.084521484374996],[23.408203125,47.989990234375],[23.628710937500017,47.995849609375],[24.578906250000017,47.931054687499994],[24.979101562500006,47.72412109375],[25.464257812500023,47.910791015624994],[25.689257812500017,47.932470703125],[25.90869140625,47.967578125],[26.162695312500006,47.992529296875],[26.236230468750023,48.064355468749994],[26.276953125,48.113232421875],[26.3056640625,48.203759765624994],[26.4423828125,48.22998046875],[26.618945312500017,48.25986328125],[26.980761718750017,48.155029296875],[27.614062500000017,47.34052734375],[28.07177734375,46.978417968749994],[28.23945312500001,46.6408203125],[28.07470703125,45.598974609375],[28.2125,45.450439453125]]]},"properties":{"name":"Romania","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[146.71396484375012,43.743798828124994],[146.62197265625,43.81298828125006],[146.88408203125002,43.82915039062496],[146.71396484375012,43.743798828124994]]],[[[146.20761718750006,44.49765625],[146.5677734375,44.44042968749997],[145.91406249999997,44.10371093750004],[145.58681640625,43.84511718750002],[145.5558593750001,43.66459960937502],[145.46171875000007,43.870898437500045],[146.20761718750006,44.49765625]]],[[[148.59951171875,45.317626953125],[147.91376953125004,44.99038085937502],[147.65781250000012,44.97714843749998],[146.89746093750003,44.404296875],[147.24658203124997,44.856054687500006],[147.88554687500007,45.22563476562499],[147.9240234375001,45.38330078125006],[148.05605468750005,45.26210937500005],[148.32421874999997,45.28242187500001],[148.8122070312501,45.510009765625],[148.83710937500004,45.36269531250002],[148.59951171875,45.317626953125]]],[[[149.68769531250004,45.64204101562501],[149.44707031250002,45.593359375000034],[149.9623046875,46.02192382812504],[150.553125,46.208544921875045],[149.68769531250004,45.64204101562501]]],[[[152.00205078125006,46.89716796874998],[151.72343750000007,46.82880859375001],[152.28886718750007,47.1421875],[152.00205078125006,46.89716796874998]]],[[[154.81044921875005,49.31201171875],[154.61093750000006,49.29404296874998],[154.82490234375004,49.64692382812501],[154.81044921875005,49.31201171875]]],[[[155.9210937500001,50.30219726562501],[155.39716796875004,50.04125976562497],[155.24306640625,50.09462890625002],[155.21835937500012,50.29785156250003],[155.68017578124997,50.400732421875034],[156.096875,50.771875],[155.9210937500001,50.30219726562501]]],[[[156.40507812500002,50.65761718750005],[156.16796874999997,50.73188476562498],[156.37646484374997,50.86210937499996],[156.4875,50.84296874999998],[156.40507812500002,50.65761718750005]]],[[[142.76103515625002,54.393945312499966],[143.32470703125003,52.96308593749998],[143.15556640625002,52.08374023437497],[143.29951171875004,51.632373046875045],[143.81601562500006,50.28261718750002],[144.71376953125,48.64028320312502],[144.04873046875,49.249169921874994],[143.73232421875,49.31201171875],[143.10498046875003,49.198828125000034],[142.57421874999997,48.07216796875002],[142.55693359375002,47.737890625000034],[143.21767578125005,46.79487304687504],[143.48564453125002,46.752050781250006],[143.58066406250012,46.360693359375034],[143.43164062500003,46.02866210937498],[143.28232421875006,46.55898437500002],[142.57802734375005,46.700781250000034],[142.07714843749997,45.91704101562499],[141.83037109375002,46.451074218749966],[142.03867187500012,47.140283203124966],[141.9640625000001,47.58745117187502],[142.18173828125012,48.01337890625001],[141.86630859375006,48.750097656250006],[142.1422851562501,49.56914062499999],[142.06601562500006,50.630468750000034],[142.20673828125004,51.22255859375002],[141.72236328125004,51.73632812499997],[141.66083984375004,52.27294921874997],[141.85556640625012,52.79350585937499],[141.82353515625007,53.33950195312502],[142.1419921875,53.49560546875003],[142.52617187500002,53.44746093749998],[142.70595703125,53.89570312499998],[142.33496093749997,54.28071289062501],[142.76103515625002,54.393945312499966]]],[[[137.17861328125005,55.100439453125034],[137.05527343750006,54.9267578125],[136.71464843750002,54.956152343750034],[137.17861328125005,55.100439453125034]]],[[[137.94052734375012,55.092626953125034],[138.20615234375012,55.03354492187498],[137.72148437500007,54.66323242187505],[137.46269531250002,54.873388671875034],[137.23291015624997,54.79057617187496],[137.5773437500001,55.19702148437497],[137.94052734375012,55.092626953125034]]],[[[21.235742187500023,55.26411132812498],[22.072363281250034,55.06367187499998],[22.56728515625005,55.05913085937496],[22.82470703125,54.87128906249998],[22.684472656250023,54.56293945312504],[22.679882812500068,54.493017578125006],[22.766210937499977,54.356787109375034],[22.168457031250057,54.35986328125006],[21.14052734375008,54.39179687499998],[19.604394531250023,54.45917968750004],[19.974511718750023,54.92119140625002],[20.520312500000017,54.994873046875],[20.89980468750008,55.286669921875045],[20.957812500000074,55.27890625000006],[20.594824218750006,54.982373046874955],[20.995898437500017,54.90268554687506],[21.18886718750008,54.93520507812502],[21.235742187500023,55.26411132812498]]],[[[166.65029296875005,54.83906249999998],[166.64511718750006,54.69409179687503],[165.75107421875006,55.294531250000034],[166.27578125000005,55.311962890624955],[166.24804687499997,55.16542968750002],[166.65029296875005,54.83906249999998]]],[[[150.58994140625006,59.01875],[150.47021484375003,59.05405273437498],[150.66621093750004,59.16015625000003],[150.58994140625006,59.01875]]],[[[163.63515625000005,58.603369140625006],[163.47138671875004,58.509375],[163.7609375000001,59.01503906250002],[164.57265625,59.22114257812501],[164.61572265624997,58.885595703125034],[163.63515625000005,58.603369140625006]]],[[[35.8161132812501,65.18208007812501],[35.77871093750005,64.97666015625],[35.52890625000006,65.15107421875001],[35.8161132812501,65.18208007812501]]],[[[70.02070312500004,66.502197265625],[69.65136718750003,66.56533203125],[69.50273437500002,66.75107421875],[70.07666015624997,66.69589843750003],[70.02070312500004,66.502197265625]]],[[[-179.79853515625,68.9404296875],[-178.873876953125,68.75410156249995],[-178.69262695312503,68.54599609375],[-178.09746093750002,68.4248046875],[-178.05581054687497,68.26489257812503],[-177.79677734374997,68.33798828125],[-178.37304687500003,68.56567382812503],[-177.52724609375002,68.29438476562501],[-177.58920898437503,68.22421875],[-175.34521484375,67.67807617187503],[-175.37470703124998,67.35737304687498],[-175.00268554687494,67.4375],[-174.849853515625,67.34887695312503],[-174.92490234375,66.62314453125006],[-174.503759765625,66.537939453125],[-174.39409179687496,66.34423828124997],[-174.084765625,66.47309570312504],[-174.06503906249998,66.22958984374998],[-173.77397460937502,66.43466796875003],[-174.23159179687497,66.63188476562505],[-174.08642578125,66.94287109375],[-174.55009765624993,67.090625],[-173.6796875,67.144775390625],[-173.15781249999998,67.06909179687503],[-173.32353515625,66.95483398437503],[-173.25893554687497,66.84008789062503],[-173.19301757812497,66.99360351562504],[-172.5201171875,66.952490234375],[-173.00751953125,67.06489257812498],[-171.79555664062502,66.93173828125003],[-170.50952148437503,66.34365234375005],[-170.604443359375,66.24892578125002],[-170.30122070312504,66.29404296874998],[-170.24394531250002,66.16928710937503],[-169.777880859375,66.14311523437505],[-169.83168945312497,65.99892578124997],[-170.54067382812497,65.86542968749995],[-170.66630859375,65.62153320312501],[-171.42153320312502,65.81035156250002],[-171.10585937500002,65.51103515625005],[-171.90712890625,65.495947265625],[-172.78330078124998,65.68105468749997],[-172.23281250000002,65.45571289062497],[-172.30927734375004,65.27563476562497],[-172.66191406249993,65.24853515625006],[-172.28603515625002,65.20571289062502],[-172.21318359375,65.04814453124999],[-173.08579101562498,64.81733398437495],[-172.80107421874996,64.79052734375],[-172.90087890624994,64.62885742187501],[-172.40146484374998,64.413916015625],[-172.73916015624997,64.41225585937502],[-172.90317382812498,64.52607421875004],[-172.96005859375003,64.32768554687502],[-173.27548828124998,64.2896484375],[-173.327490234375,64.53955078125003],[-173.72973632812497,64.36450195312497],[-174.57055664062503,64.7177734375],[-175.39511718749998,64.80239257812502],[-175.85385742187498,65.01083984375003],[-176.09326171875,65.471044921875],[-177.05625,65.613623046875],[-177.48876953125,65.50371093749999],[-178.4125,65.49555664062501],[-178.93906249999998,66.03276367187505],[-178.74672851562497,66.01367187500006],[-178.52656250000004,66.40156250000004],[-178.86811523437498,66.18706054687502],[-179.14340820312503,66.37504882812505],[-179.327197265625,66.16259765625003],[-179.68330078124998,66.18413085937505],[-179.78969726562497,65.90087890625],[-179.352099609375,65.51674804687497],[-180,65.06723632812498],[-180,65.31196289062501],[-180,65.55678710937497],[-180,65.80156250000002],[-180,66.04628906250002],[-180,66.29106445312499],[-180,66.53583984375004],[-180,66.78056640625005],[-180,67.02534179687501],[-180,67.27011718750006],[-180,67.51484374999998],[-180,67.75961914062503],[-180,68.00439453124997],[-180,68.24912109375],[-180,68.49389648437497],[-180,68.738671875],[-179.999951171875,68.98344726562505],[-179.79853515625,68.9404296875]]],[[[50.265234375,69.18559570312502],[49.62626953125002,68.85971679687498],[48.91035156250004,68.74306640625002],[48.4390625,68.80488281249998],[48.319921875,69.26923828125001],[48.8449218750001,69.49472656250003],[49.22519531250006,69.51123046875],[50.265234375,69.18559570312502]]],[[[161.46708984375002,68.90097656250003],[161.08281250000007,69.4056640625],[161.50517578125007,69.63945312500002],[161.46708984375002,68.90097656250003]]],[[[169.20078125000006,69.58046875],[168.34804687500005,69.66435546875005],[167.86474609375003,69.90107421875004],[168.35791015625003,70.01567382812502],[169.37480468750007,69.88261718749999],[169.20078125000006,69.58046875]]],[[[60.450488281250074,69.93486328124999],[60.44023437500002,69.72592773437506],[59.637011718750074,69.72104492187503],[59.50263671875004,69.86621093750003],[58.952734375,69.89277343750004],[58.51992187500005,70.31831054687504],[59.04804687500004,70.46049804687505],[60.450488281250074,69.93486328124999]]],[[[52.90332031250003,71.36499023437503],[53.19257812500004,71.21528320312498],[53.0226562500001,70.96870117187501],[52.24960937500006,71.28491210937506],[52.90332031250003,71.36499023437503]]],[[[178.8615234375001,70.826416015625],[178.68388671875013,71.10566406250004],[180,71.53774414062505],[180,70.993017578125],[178.8615234375001,70.826416015625]]],[[[137.95986328125005,71.50766601562503],[137.71181640625005,71.4232421875],[137.06406250000006,71.52988281250003],[137.816796875,71.58789062500006],[137.95986328125005,71.50766601562503]]],[[[-178.87646484375,71.57705078124997],[-178.13388671874998,71.46547851562497],[-177.523583984375,71.16689453125],[-179.415673828125,70.91899414062502],[-179.999951171875,70.993017578125],[-179.999951171875,71.53774414062505],[-178.87646484375,71.57705078124997]]],[[[77.6325195312501,72.291259765625],[76.87109374999997,72.317041015625],[77.74853515625003,72.63120117187506],[78.36513671875005,72.48242187500003],[77.6325195312501,72.291259765625]]],[[[79.50146484374997,72.72192382812497],[78.63320312500005,72.85073242187502],[79.16425781250004,73.0943359375],[79.50146484374997,72.72192382812497]]],[[[74.660546875,72.87343750000002],[74.18066406250003,72.975341796875],[74.19853515625002,73.10908203124998],[74.9615234375,73.0625],[74.660546875,72.87343750000002]]],[[[120.26132812500012,73.08984374999997],[119.79208984375006,73.04541015624997],[119.64042968750002,73.12431640625007],[120.26132812500012,73.08984374999997]]],[[[55.31982421875003,73.30830078124998],[56.42958984375005,73.201171875],[56.121679687500006,72.80659179687498],[55.40332031249997,72.54907226562503],[55.29785156249997,71.93535156250005],[56.45439453125002,71.10737304687504],[57.62539062500005,70.72880859374999],[57.14589843750005,70.58911132812506],[56.38574218749997,70.73413085937503],[56.49970703125004,70.56640625000003],[55.687304687500074,70.69218749999999],[54.60117187500006,70.68007812500002],[53.383593750000074,70.87353515625],[53.670507812500006,71.08691406250003],[54.155664062499994,71.12548828125],[53.40996093750002,71.34013671875002],[53.41162109375003,71.530126953125],[51.93789062500005,71.47470703124998],[51.511328125,71.64809570312497],[51.58251953124997,72.07119140625],[52.252050781250006,72.12973632812503],[52.66191406250002,72.33686523437495],[52.91660156250006,72.66889648437501],[52.5792968750001,72.791357421875],[53.3698242187501,72.91674804687506],[53.2511718750001,73.182958984375],[54.80390625000004,73.38764648437498],[55.31982421875003,73.30830078124998]]],[[[70.67392578125006,73.09501953125005],[70.04072265625004,73.03715820312507],[69.99589843750002,73.359375],[70.94023437500002,73.51440429687503],[71.6261718750001,73.17397460937497],[70.67392578125006,73.09501953125005]]],[[[142.18486328125007,73.89589843750005],[143.34375,73.56875],[143.45146484375007,73.231298828125],[141.59667968750003,73.31083984375005],[140.66279296875004,73.45200195312503],[139.785546875,73.35522460937503],[141.08476562500002,73.86586914062497],[142.18486328125007,73.89589843750005]]],[[[83.5490234375001,74.07177734375],[82.8177734375,74.09160156250005],[83.14980468750005,74.151611328125],[83.5490234375001,74.07177734375]]],[[[141.01025390625003,73.99946289062501],[140.40947265625002,73.92167968750005],[140.1935546875001,74.23671875000002],[141.03857421875003,74.24272460937502],[141.01025390625003,73.99946289062501]]],[[[113.38720703124997,74.40043945312499],[112.78242187500004,74.09506835937503],[111.50341796874997,74.35307617187502],[111.87978515625,74.36381835937499],[112.08447265624997,74.54897460937505],[113.38720703124997,74.40043945312499]]],[[[86.653125,74.981298828125],[87.05214843750005,74.982568359375],[86.92714843750005,74.83076171874998],[86.25859375000002,74.89350585937498],[86.653125,74.981298828125]]],[[[82.17236328125003,75.41938476562501],[81.97851562499997,75.24711914062499],[81.65478515625003,75.28891601562498],[81.71210937500004,75.45141601562506],[82.165625,75.515625],[82.17236328125003,75.41938476562501]]],[[[146.79521484375007,75.37075195312505],[148.43242187500002,75.41352539062495],[148.59013671875007,75.23637695312502],[150.82236328125006,75.15654296875002],[150.64628906250002,74.944580078125],[149.596875,74.77260742187505],[148.296875,74.80043945312502],[146.14853515625012,75.19829101562499],[146.5375,75.58178710937506],[146.79521484375007,75.37075195312505]]],[[[135.9486328125,75.40957031250005],[135.45195312500007,75.38955078124997],[135.6986328125,75.84526367187499],[136.16894531249997,75.60556640625],[135.9486328125,75.40957031250005]]],[[[140.04873046875,75.82895507812503],[140.81591796874997,75.63071289062498],[141.48544921875012,76.13715820312495],[142.66953125000012,75.86342773437497],[143.68583984375002,75.86367187500002],[145.35996093750006,75.53046874999998],[144.01972656250004,75.04467773437506],[143.1703125,75.11689453125001],[142.72949218749997,75.33764648437506],[142.941796875,75.71328125000002],[142.30791015625007,75.69169921875005],[142.19882812500006,75.39267578124998],[143.12792968749997,74.9703125],[142.47275390625006,74.82041015625],[141.98730468750003,74.99125976562499],[140.26787109375002,74.846923828125],[139.68125,74.96406249999995],[139.09912109374997,74.65654296875002],[138.09228515625003,74.79746093750003],[136.94765625000005,75.32553710937498],[137.28974609375004,75.34863281249997],[137.26884765625002,75.7494140625],[137.70654296875003,75.75957031250002],[137.56054687499997,75.95522460937502],[138.20761718750006,76.11494140624995],[138.91953125000006,76.19672851562501],[140.04873046875,75.82895507812503]]],[[[96.5324218750001,76.278125],[96.30058593750002,76.121728515625],[95.31113281250006,76.21474609375002],[95.37988281250003,76.2890625],[96.5324218750001,76.278125]]],[[[112.47802734375003,76.62089843749999],[112.531640625,76.450048828125],[111.96894531250004,76.62617187500001],[112.47802734375003,76.62089843749999]]],[[[149.15019531250002,76.65991210937506],[148.39863281250004,76.64824218750007],[149.4064453125001,76.78208007812498],[149.15019531250002,76.65991210937506]]],[[[67.7653320312501,76.23759765624999],[61.35595703124997,75.31484375000002],[60.27685546875003,75.00756835937503],[60.501367187499994,74.90463867187503],[59.67402343750004,74.61015624999999],[59.24013671875005,74.69296874999998],[59.040429687499994,74.48554687500001],[58.53466796875003,74.49892578124997],[58.6178710937501,74.22739257812498],[57.76738281250002,74.013818359375],[57.755957031250006,73.769189453125],[57.313085937500006,73.838037109375],[57.54257812500006,73.65820312500003],[56.96386718750003,73.36655273437503],[56.43037109375004,73.29721679687503],[55.00683593750003,73.45385742187506],[54.29990234375006,73.35097656249997],[53.7628906250001,73.76616210937499],[54.64267578125006,73.95957031250006],[55.34091796875006,74.41962890624998],[56.13710937500005,74.49609375000003],[55.5822265625001,74.627685546875],[56.4987304687501,74.95708007812505],[55.81005859374997,75.12490234374997],[56.03554687499999,75.19423828124997],[56.57031250000003,75.09775390625003],[56.8444335937501,75.351416015625],[57.606835937499994,75.34125976562498],[58.05830078125004,75.6630859375],[58.88125,75.85478515625007],[60.27929687499997,76.09624023437505],[60.94218750000002,76.07128906250003],[61.20166015624997,76.28203125000007],[62.97148437500002,76.23666992187498],[64.4634765625,76.37817382812503],[67.65185546874997,77.011572265625],[68.48574218750005,76.93369140625003],[68.94169921875002,76.707666015625],[67.7653320312501,76.23759765624999]]],[[[96.28544921875002,77.02666015625007],[95.27031250000007,77.01884765624999],[96.52841796875006,77.20551757812501],[96.28544921875002,77.02666015625007]]],[[[89.51425781250006,77.18881835937498],[89.14169921875012,77.22680664062497],[89.61621093749997,77.31103515625],[89.51425781250006,77.18881835937498]]],[[[130.68730468750007,42.30253906249999],[130.52695312500012,42.535400390625],[130.42480468749997,42.72705078124997],[131.06855468750004,42.90224609375005],[131.25732421875003,43.378076171874994],[131.2552734375,44.07158203124999],[130.9816406250001,44.844335937500034],[131.44687500000012,44.984033203124966],[131.85185546875002,45.32685546875001],[132.93603515624997,45.029931640624994],[133.1134765625001,45.130712890625006],[133.18603515625003,45.49482421875004],[133.43642578125,45.60468750000004],[133.86132812500003,46.24775390625004],[134.1676757812501,47.30219726562501],[134.75234375,47.71542968749998],[134.56601562500006,48.02250976562502],[134.66523437500004,48.25390625],[134.29335937500005,48.37343750000002],[133.46835937500006,48.09716796875003],[133.14404296875003,48.10566406249998],[132.7072265625001,47.94726562500006],[132.47626953125004,47.714990234374994],[130.96191406249997,47.70932617187498],[130.7326171875001,48.01923828124998],[130.80429687500012,48.34150390624998],[130.5521484375,48.602490234374955],[130.553125,48.861181640625006],[130.1959960937501,48.89165039062499],[129.49814453125012,49.38881835937502],[129.0651367187501,49.374658203124966],[128.70400390625,49.60014648437499],[127.99960937500006,49.56860351562506],[127.55078124999997,49.801806640625045],[127.590234375,50.20898437500003],[127.33720703125007,50.35014648437502],[127.30703125000005,50.70795898437501],[126.92480468749997,51.10014648437496],[126.34169921875,52.36201171875001],[125.64902343750012,53.042285156250045],[125.075,53.20366210937496],[124.81230468750002,53.133837890625045],[123.6078125,53.546533203124994],[120.98544921875012,53.28457031250002],[120.09453125000007,52.787207031250034],[120.0675781250001,52.632910156250034],[120.65615234375,52.56665039062503],[120.74980468750007,52.096533203125006],[120.06689453125003,51.60068359375006],[119.16367187500006,50.40600585937503],[119.34628906250012,50.278955078124994],[119.25986328125012,50.06640625000003],[118.4515625,49.84448242187503],[117.8734375,49.51347656250002],[116.6833007812501,49.82377929687499],[116.551171875,49.92031250000002],[116.35117187500012,49.97807617187499],[116.21679687500003,50.00927734375003],[116.13457031250002,50.01079101562499],[115.9259765625001,49.95214843750003],[115.79521484375002,49.90590820312502],[115.71777343750003,49.88061523437503],[115.58798828125006,49.88603515624996],[115.42919921874997,49.89648437499997],[115.36503906250002,49.911767578124966],[115.27451171875006,49.948876953124994],[115.00332031250005,50.138574218749994],[114.74316406249997,50.23369140625002],[114.29707031250004,50.27441406250006],[113.57421874999997,50.00703125000001],[113.44550781250004,49.94160156250001],[113.31904296875004,49.87431640624999],[113.16416015625012,49.79716796874999],[113.09208984375007,49.692529296874994],[113.05556640625,49.61625976562499],[112.91484375000002,49.569238281249994],[112.80644531250007,49.52358398437502],[112.69736328125012,49.50727539062498],[112.49492187500002,49.532324218750034],[112.07968750000006,49.42421875000002],[111.42929687500006,49.342626953125034],[111.3366210937501,49.355859374999966],[111.20419921875012,49.304296875000034],[110.82792968750002,49.16616210937505],[110.70976562500002,49.14296875000002],[110.42783203125006,49.219970703125],[110.32138671875012,49.215869140625045],[110.19990234375004,49.17041015625003],[109.5287109375,49.269873046875034],[109.45371093750012,49.29633789062501],[109.23671875000005,49.334912109374955],[108.61367187500005,49.32280273437499],[108.52246093750003,49.34150390624998],[108.4069335937501,49.39638671875005],[107.96542968750012,49.65351562500004],[107.91660156250012,49.947802734375045],[107.63095703125012,49.98310546875004],[107.3470703125,49.986669921875034],[107.23330078125,49.989404296874994],[107.14306640625003,50.03300781249999],[107.04023437500004,50.086474609375045],[106.94130859375005,50.19667968750002],[106.71113281250004,50.312597656250006],[106.57441406250004,50.32880859375004],[106.36845703125002,50.317578124999955],[106.21787109375006,50.304589843749966],[105.38359375000002,50.47373046874998],[104.07871093750012,50.15424804687498],[103.63291015625006,50.138574218749994],[103.49628906250004,50.16494140625005],[103.42119140625002,50.18706054687502],[103.3043945312501,50.200292968750034],[102.28837890625007,50.58510742187502],[102.31660156250004,50.71845703125001],[102.21503906250004,50.82944335937506],[102.19453125000004,51.05068359375002],[102.15195312500006,51.107519531250034],[102.14238281250007,51.21606445312503],[102.16005859375005,51.260839843750006],[102.1556640625,51.31376953124996],[102.1115234375001,51.353466796874955],[101.97919921875004,51.382226562499966],[101.82119140625,51.421044921874966],[101.57089843750006,51.46718750000005],[101.38125,51.45263671875],[100.53623046875006,51.713476562500034],[100.46894531250004,51.72607421875003],[100.23037109375,51.729833984375006],[100.0345703125,51.73710937499996],[99.92167968750002,51.755517578124994],[99.71923828124997,51.87163085937502],[98.89316406250006,52.11728515625006],[98.64052734375005,51.80117187500005],[98.103125,51.483544921874994],[97.82529296875012,50.985253906249994],[97.953125,50.85517578124998],[98.02978515625003,50.64462890624998],[98.07890625000002,50.60380859375002],[98.14501953124997,50.56855468750001],[98.22050781250007,50.55717773437502],[98.2794921875001,50.53325195312502],[98.25029296875002,50.30244140624998],[98.00390625000003,50.01425781249998],[97.35976562500005,49.741455078125],[97.20859375000006,49.73081054687506],[96.98574218750005,49.88281250000003],[96.31503906250012,49.90112304687503],[96.06552734375006,49.99873046875001],[95.52265625000004,49.911230468750034],[95.11142578125012,49.935449218749994],[94.93027343750006,50.04375],[94.8112304687501,50.04819335937506],[94.71806640625002,50.04326171875002],[94.67548828125004,50.02807617187506],[94.61474609375003,50.02373046874996],[94.56464843750004,50.08793945312499],[94.35468750000004,50.221826171874994],[94.25107421875006,50.55639648437503],[93.103125,50.60390625000002],[92.94130859375005,50.77822265625002],[92.85644531250003,50.78911132812502],[92.77929687500003,50.778662109375006],[92.738671875,50.71093749999997],[92.68134765625004,50.683203125],[92.6266601562501,50.68828124999999],[92.57890625000002,50.725439453125006],[92.42636718750006,50.803076171875006],[92.35478515625002,50.86416015625002],[92.29580078125,50.84980468750004],[92.19238281249997,50.700585937499994],[91.80429687500006,50.693603515625],[91.4464843750001,50.52216796874998],[91.41503906249997,50.46801757812506],[91.34082031249997,50.470068359375034],[91.30058593750002,50.46337890625],[91.2337890625,50.45239257812497],[91.02158203125012,50.41547851562501],[90.83808593750004,50.32373046874997],[90.76074218749997,50.30595703124999],[90.71435546874997,50.25942382812502],[90.65507812500007,50.22236328125001],[90.05371093750003,50.09375],[89.64384765625002,49.90302734374998],[89.65410156250007,49.71748046875001],[89.57919921875006,49.69970703125003],[89.475,49.66054687500005],[89.39560546875006,49.61152343750001],[89.24394531250007,49.62705078125006],[89.20292968750007,49.59570312499997],[89.17998046875002,49.5322265625],[89.10947265625012,49.50136718750002],[89.00839843750006,49.472802734374994],[88.97060546875,49.483740234375006],[88.94541015625012,49.50766601562498],[88.90019531250002,49.53969726562502],[88.86386718750006,49.52763671874996],[88.83164062500012,49.44843749999998],[88.633203125,49.486132812500045],[88.19257812500004,49.451708984375045],[88.13554687500002,49.38149414062502],[88.11572265624997,49.25629882812501],[88.0285156250001,49.219775390625045],[87.98808593750002,49.186914062499994],[87.9347656250001,49.16455078124997],[87.81425781250002,49.162304687499955],[87.7625,49.16582031249996],[87.5158203125001,49.122412109375006],[87.41669921875004,49.07661132812501],[87.32285156250012,49.085791015625006],[86.62646484374997,49.56269531250001],[86.67548828125004,49.77729492187501],[86.1808593750001,49.49931640624996],[85.2326171875001,49.61582031249998],[84.9894531250001,50.061425781249994],[84.32324218749997,50.239160156249966],[83.94511718750007,50.774658203125],[83.35732421875005,50.99458007812504],[82.76083984375012,50.89335937500002],[82.49394531250007,50.72758789062499],[81.46591796875006,50.73984375],[81.38828125000006,50.95649414062501],[81.0714843750001,50.96875],[81.12724609375002,51.19106445312502],[80.73525390625,51.29340820312498],[80.44804687500002,51.18334960937503],[80.42363281250002,50.94628906249997],[79.98623046875,50.774560546874966],[77.85996093750006,53.269189453124994],[76.48476562500005,54.02255859374998],[76.42167968750007,54.151513671874966],[76.65458984375007,54.14526367187503],[76.8373046875,54.4423828125],[75.43720703125004,54.08964843749999],[75.22021484374997,53.89379882812506],[74.45195312500007,53.64726562500002],[74.35156250000003,53.487646484375006],[73.85898437500006,53.61972656249998],[73.40693359375004,53.44755859374999],[73.30566406250003,53.707226562499955],[73.71240234375003,54.04238281250002],[73.22988281250005,53.957812500000045],[72.62226562500004,54.13432617187502],[72.44677734375003,53.94184570312498],[72.18603515625003,54.32563476562501],[72.00449218750006,54.20566406249998],[71.09316406250005,54.21220703124999],[71.18554687500003,54.59931640624998],[70.73808593750007,55.30517578125],[70.18242187500002,55.162451171875034],[68.9772460937501,55.389599609374955],[68.20625,55.16093750000002],[68.15585937500006,54.97670898437505],[65.476953125,54.62329101562497],[65.08837890624997,54.340185546875034],[64.46123046875002,54.38417968750002],[61.92871093750003,53.94648437500004],[61.231054687500006,54.01948242187498],[60.97949218749997,53.62172851562505],[61.53496093750002,53.52329101562506],[61.22890625,53.445898437500006],[61.19921874999997,53.28715820312502],[61.65986328125004,53.22846679687504],[62.08271484375004,53.00541992187499],[61.047460937500006,52.97246093750002],[60.77441406249997,52.67578124999997],[60.99453125000005,52.33686523437504],[60.03027343749997,51.93325195312505],[60.464746093749994,51.651171875000045],[61.55468750000003,51.32460937500005],[61.38945312500002,50.86103515625001],[60.94228515625005,50.69550781250004],[60.42480468749997,50.67915039062498],[60.05859374999997,50.850292968749955],[59.812402343749994,50.58203125],[59.523046875,50.492871093749955],[59.4523437500001,50.62041015625002],[58.88369140625005,50.694433593750006],[58.359179687500074,51.063818359375034],[57.83886718750003,51.091650390625006],[57.44218750000002,50.88886718749998],[57.01171874999997,51.06518554687503],[56.49140625000004,51.01953124999997],[55.68623046875004,50.582861328125006],[54.64160156250003,51.011572265625034],[54.555273437500006,50.535791015624994],[54.139746093750006,51.04077148437503],[53.33808593750004,51.48237304687504],[52.57119140625005,51.481640624999955],[52.21914062499999,51.709375],[51.344531250000074,51.47534179687503],[51.16347656250005,51.6474609375],[50.79394531249997,51.729199218749955],[50.246875,51.28950195312498],[49.49804687500003,51.08359375000006],[49.32343750000004,50.851708984374966],[48.625097656250006,50.61269531250005],[48.7589843750001,49.92832031250006],[48.33496093750003,49.858251953125006],[47.7057617187501,50.37797851562502],[47.42919921874997,50.35795898437502],[46.889550781249994,49.69697265625001],[46.80205078125002,49.36708984375002],[47.031347656250006,49.150292968749994],[46.70263671875003,48.80556640625002],[46.660937500000074,48.41225585937502],[47.06464843750004,48.23247070312499],[47.292382812499994,47.74091796875004],[47.48193359374997,47.80390624999998],[48.16699218750003,47.70878906249996],[48.959375,46.77460937499998],[48.558398437500074,46.75712890624999],[48.54121093750004,46.60561523437502],[49.232226562500074,46.33715820312503],[48.683691406250006,46.08618164062497],[48.72958984375006,45.896826171875034],[48.4870117187501,45.93486328124996],[47.63330078124997,45.58403320312499],[47.46328125,45.67968750000003],[47.5294921875001,45.530224609374955],[47.3512695312501,45.21772460937498],[46.7072265625001,44.503320312499994],[47.30703125000005,44.103125],[47.462792968749994,43.55502929687498],[47.64648437500003,43.88461914062498],[47.463183593750074,43.03505859375002],[48.572851562500006,41.84448242187503],[47.79101562499997,41.19926757812502],[47.31767578125002,41.28242187500001],[46.74931640625002,41.812597656250006],[46.42988281250004,41.890966796875006],[46.21269531250002,41.989892578124994],[45.63857421875005,42.20507812500003],[45.63427734374997,42.234716796875034],[45.72753906249997,42.47504882812498],[45.70527343750004,42.49809570312496],[45.56289062499999,42.53574218749998],[45.34375,42.52978515625003],[45.16025390625006,42.675],[45.07158203125002,42.69414062500002],[44.94335937499997,42.73027343750002],[44.870996093749994,42.75639648437499],[44.850488281249994,42.746826171875],[44.77109375000006,42.61679687499998],[44.69179687499999,42.709619140624966],[44.64433593750002,42.734716796875034],[44.50585937500003,42.748632812500006],[44.329492187499994,42.703515624999966],[44.10273437500004,42.616357421874994],[44.004687500000074,42.59560546875002],[43.95742187500005,42.56655273437505],[43.825976562500074,42.571533203125],[43.759863281250006,42.593847656250006],[43.738378906250006,42.61699218750002],[43.74990234375005,42.65751953125002],[43.79541015624997,42.702978515625034],[43.78261718750005,42.747021484374955],[43.62304687500003,42.80771484374998],[43.5578125000001,42.844482421875],[43.089160156250074,42.9890625],[43.00019531250004,43.04965820312506],[42.991601562499994,43.09150390624998],[42.76064453125005,43.169580078124966],[41.58056640624997,43.21923828124997],[41.460742187500074,43.276318359374955],[41.35820312500002,43.33339843750005],[41.08310546875006,43.37446289062498],[40.94199218750006,43.41806640624998],[40.801660156249994,43.479931640624955],[40.64804687500006,43.53388671875004],[40.084570312500006,43.553125],[40.02373046875002,43.48486328125],[39.873632812500006,43.47280273437502],[38.71728515624997,44.28808593750003],[38.18125,44.41967773437503],[37.851464843749994,44.698828125000034],[37.49511718750003,44.69526367187504],[37.20478515625004,44.97197265624999],[36.62763671875004,45.15131835937504],[36.941210937500074,45.289697265624994],[36.72041015625004,45.371875],[36.8659179687501,45.42705078124999],[37.21357421875004,45.272314453125006],[37.6471679687501,45.37719726562506],[37.61240234375006,45.56469726562506],[37.93310546875003,46.001708984375],[38.014257812500006,46.047753906249966],[38.07958984375003,45.93481445312506],[38.18359374999997,46.09482421875006],[38.49228515625006,46.09052734374998],[37.913867187500074,46.40649414062503],[37.766503906249994,46.63613281250002],[38.50097656249997,46.663671875000034],[38.43867187500004,46.813085937500006],[39.29345703125003,47.105761718750045],[39.19570312499999,47.268847656250045],[39.023730468750074,47.27221679687503],[38.928320312500006,47.175683593749994],[38.55244140625004,47.15034179687498],[38.7619140625001,47.261621093749994],[38.21435546875003,47.091455078124966],[38.36884765625004,47.609960937500006],[38.90029296875005,47.85512695312502],[39.77871093750005,47.88754882812506],[39.95791015625005,48.268896484375034],[39.8356445312501,48.54277343749996],[39.6447265625001,48.591210937499966],[39.792871093749994,48.807714843750034],[40.00361328125004,48.82207031250002],[39.68652343749997,49.007910156250034],[40.10878906250005,49.251562500000034],[40.080664062500006,49.576855468749955],[39.780566406250074,49.57202148437503],[39.17480468750003,49.85595703124997],[38.91835937499999,49.82470703125],[38.258593750000074,50.05234375],[38.046875,49.92001953125006],[37.42285156249997,50.411474609375006],[36.619433593750074,50.209228515625],[36.1164062500001,50.408544921875006],[35.59111328125002,50.36875],[35.31191406250005,51.043896484374955],[35.0640625,51.203417968750045],[34.21386718750003,51.25537109375006],[34.12109375000003,51.67915039062498],[34.397851562499994,51.780419921874994],[33.735253906249994,52.344775390625045],[32.435449218749994,52.307226562500034],[32.12226562500004,52.05058593749996],[31.763378906250097,52.10107421875003],[31.758593750000017,52.125830078125034],[31.690625,52.22065429687498],[31.64990234374997,52.26220703125],[31.60156250000003,52.284814453124994],[31.57734375000004,52.31230468749999],[31.585546875,52.532470703125],[31.56484375,52.75922851562501],[31.53515624999997,52.798242187499966],[31.442773437499994,52.86181640625003],[31.35302734374997,52.93344726562498],[31.295117187500097,52.98979492187499],[31.25878906249997,53.01669921875006],[31.364550781250017,53.13896484375002],[31.388378906250097,53.18481445312503],[31.41787109375005,53.196044921875],[31.849707031250006,53.106201171875],[32.14199218750005,53.091162109375034],[32.46933593750006,53.270312500000045],[32.578027343749994,53.312402343749994],[32.644433593749994,53.32890624999999],[32.70429687500004,53.33632812499999],[32.45097656250002,53.6533203125],[32.20039062500004,53.78125],[31.99218750000003,53.796875],[31.82080078124997,53.79194335937498],[31.754199218750017,53.81044921875002],[31.825292968750006,53.93500976562501],[31.837792968749994,54.00078124999999],[31.825976562500074,54.030712890624955],[31.79199218749997,54.05590820312503],[31.62841796874997,54.111181640625006],[31.403613281250017,54.195947265624966],[31.299121093750017,54.29169921875001],[31.184765625000097,54.452978515625006],[31.074804687500063,54.491796875],[31.154882812500063,54.610937500000034],[31.152148437500017,54.625341796875034],[31.12128906250004,54.64848632812496],[30.984179687500074,54.695898437500034],[30.79882812499997,54.78325195312499],[30.79101562499997,54.806005859375006],[30.804492187500074,54.8609375],[30.829882812500017,54.91499023437498],[30.977734375000097,55.05048828124998],[30.977734375000097,55.08779296875002],[30.958886718749994,55.13759765625005],[30.87744140625003,55.223437500000045],[30.81445312499997,55.27871093750002],[30.81054687499997,55.306982421875006],[30.82099609375004,55.330273437499955],[30.900585937500097,55.397412109374955],[30.906835937500063,55.57001953125004],[30.625585937500006,55.666259765625],[30.23359375000004,55.84521484375006],[30.04267578125004,55.83642578125003],[29.93701171874997,55.84526367187499],[29.881640625000074,55.83232421875002],[29.82392578125004,55.79511718749998],[29.74414062499997,55.770410156249994],[29.630078125000097,55.75117187499998],[29.482226562500074,55.6845703125],[29.412988281249994,55.72485351562506],[29.35341796875005,55.784375],[29.375,55.938720703125],[28.284277343750006,56.055908203125],[28.14794921875003,56.142919921875034],[28.202050781250023,56.260400390624994],[28.191699218750045,56.31557617187505],[28.169238281250017,56.386865234374994],[28.11083984375,56.51069335937501],[28.103125,56.545703125000045],[27.89208984375003,56.741064453125034],[27.88154296875001,56.82416992187501],[27.848632812500057,56.85341796875002],[27.806054687499994,56.86708984375005],[27.639453125000074,56.84565429687504],[27.83027343750004,57.19448242187505],[27.83828125000008,57.247705078124966],[27.82861328124997,57.293310546875006],[27.796875,57.316943359375045],[27.538671875000063,57.429785156250034],[27.51113281250005,57.508154296875006],[27.469726562500057,57.524023437500034],[27.35195312500005,57.528125],[27.4,57.66679687499999],[27.542089843750063,57.799414062500006],[27.778515625000068,57.87070312500006],[27.502441406250057,58.221337890624994],[27.434179687500006,58.787255859374994],[28.15107421875004,59.374414062499966],[28.0125,59.484277343749966],[28.05800781250008,59.781542968750045],[28.334570312500034,59.69252929687502],[28.518164062500034,59.849560546874955],[28.947265625000057,59.828759765624994],[29.147265625000045,59.999755859375],[30.12255859374997,59.873583984375074],[30.172656250000017,59.957128906250034],[29.72119140624997,60.19531249999997],[29.069140625000017,60.19145507812499],[28.643164062500006,60.375292968750045],[28.512792968750006,60.67729492187502],[27.797656250000074,60.53613281250003],[29.69013671875004,61.54609375000001],[31.18671875000004,62.48139648437504],[31.533984375000017,62.885400390624994],[31.180859375000097,63.208300781250074],[29.991503906250074,63.73515625000002],[30.50390625000003,64.02060546875],[30.513769531250006,64.2],[30.04189453125005,64.44335937499997],[30.072851562500063,64.76503906250005],[29.60419921875004,64.968408203125],[29.826953125000017,65.14506835937502],[29.608007812500006,65.248681640625],[29.715917968750063,65.62456054687502],[30.102734375000097,65.72626953125004],[29.066210937500045,66.89174804687497],[29.988085937500017,67.66826171874999],[29.343847656250006,68.06186523437506],[28.685156250000034,68.189794921875],[28.470703125000057,68.48837890625],[28.77285156250005,68.84003906249995],[28.414062500000057,68.90415039062506],[28.96582031250003,69.02197265625],[29.38828125,69.29814453125005],[30.08730468750005,69.43286132812503],[30.18017578124997,69.63583984375],[30.860742187499994,69.53842773437503],[30.869726562500006,69.78344726562506],[31.546972656250063,69.696923828125],[31.997949218749994,69.80991210937503],[31.98457031250004,69.95366210937499],[33.00781249999997,69.72211914062498],[32.91503906249997,69.60170898437497],[32.17675781250003,69.67402343749995],[32.37773437500002,69.47910156250003],[32.99980468750002,69.4701171875],[32.97890625000005,69.367333984375],[33.45429687500004,69.42817382812495],[33.14121093750006,69.068701171875],[33.684375,69.31025390625001],[35.85791015625003,69.19174804687503],[37.73056640625006,68.69213867187503],[38.43017578125003,68.35561523437505],[39.568945312500006,68.07172851562501],[39.82333984375006,68.05859375],[39.80927734375004,68.15083007812498],[40.38066406250002,67.831884765625],[40.96640625000006,67.71347656250003],[41.358789062499994,67.20966796874998],[41.18896484375003,66.82617187500003],[40.10332031250002,66.29995117187502],[38.65390625000006,66.06904296874995],[35.51347656250002,66.39580078125002],[34.82460937499999,66.61113281249999],[34.48261718750004,66.55034179687505],[34.4515625,66.651220703125],[33.15019531250002,66.84394531250001],[32.93046875000002,67.08681640625002],[31.895312500000074,67.16142578125002],[33.65595703125004,66.44262695312506],[33.36054687500004,66.32954101562501],[34.112695312499994,66.225244140625],[34.69179687500005,65.95185546874998],[34.77695312500006,65.76826171874998],[34.40644531250004,65.39575195312503],[35.03535156250004,64.44023437500005],[35.802050781250074,64.3353515625],[36.3649414062501,64.00283203125002],[37.44218750000002,63.813378906249966],[37.9679687500001,63.949121093749994],[38.0622070312501,64.09101562499995],[37.953710937500006,64.32011718749999],[37.183691406250006,64.40849609375007],[36.6242187500001,64.75053710937502],[36.534570312499994,64.93862304687497],[36.88281249999997,65.17236328124997],[39.7580078125001,64.57705078125002],[40.05781250000004,64.77075195312497],[40.44492187500006,64.7787109375],[39.7980468750001,65.349853515625],[39.816503906250006,65.59794921874999],[41.4757812500001,66.12343750000002],[42.21054687500006,66.51967773437502],[43.23320312500002,66.41552734375003],[43.653125,66.2509765625],[43.54189453125005,66.12338867187503],[43.84375,66.14238281249999],[44.10439453125005,66.00859374999999],[44.42929687500006,66.93774414062503],[43.7824218750001,67.25449218749998],[44.20468750000006,68.25375976562498],[43.33320312500004,68.67338867187502],[44.04804687500004,68.54882812499997],[45.891992187499994,68.47968750000001],[46.69042968750003,67.84882812500001],[45.52871093750005,67.75756835937497],[44.90214843750002,67.41313476562505],[45.56220703125004,67.18559570312507],[45.88535156250006,66.89106445312501],[46.4923828125001,66.80019531249997],[47.65585937500006,66.97592773437498],[47.87470703125004,67.58417968749998],[48.83320312500004,67.681494140625],[48.75429687500005,67.89594726562501],[49.15527343750003,67.87041015625005],[51.994726562500006,68.53876953124995],[52.3966796875001,68.35170898437505],[52.72265624999997,68.484033203125],[52.34404296875002,68.60815429687497],[53.80195312500004,68.99589843750002],[54.49121093750003,68.992333984375],[53.797656250000074,68.90747070312503],[53.9308593750001,68.43554687499997],[53.260546875000074,68.26748046875002],[54.476171875,68.29414062499995],[54.86132812500003,68.20185546874998],[55.418066406250006,68.56782226562501],[56.04365234375004,68.64887695312501],[57.126855468749994,68.55400390625005],[58.17304687500004,68.88974609375006],[59.0573242187501,69.00605468750004],[59.37050781250005,68.73837890625003],[59.09902343750005,68.4443359375],[59.725683593750006,68.35161132812502],[59.89599609374997,68.70634765624999],[60.489160156249994,68.72895507812498],[60.93359374999997,68.98676757812501],[60.17060546875004,69.59091796875],[60.90908203125005,69.84711914062495],[64.19042968750003,69.53466796875],[64.89628906250002,69.247802734375],[67.00244140625003,68.87358398437505],[68.37119140625006,68.31425781250005],[69.14052734375005,68.95063476562501],[68.54277343750002,68.96708984374999],[68.00585937499997,69.48002929687505],[67.62412109375,69.58442382812501],[67.06445312500003,69.69370117187498],[66.89667968750004,69.55380859374998],[67.28476562500006,70.73872070312498],[67.14335937500002,70.83754882812502],[66.70224609375006,70.81850585937497],[66.63964843749997,71.08139648437498],[68.2692382812501,71.68281250000001],[69.61181640625003,72.98193359375],[69.73828124999997,72.88496093749998],[71.5001953125001,72.91367187500003],[72.812109375,72.69140624999997],[72.57412109375,72.01254882812506],[71.86728515625,71.457373046875],[72.70449218750005,70.96323242187498],[72.5767578125,68.96870117187498],[73.59169921875005,68.48188476562501],[73.13945312500002,68.18134765624998],[73.06679687500005,67.766943359375],[71.84746093750002,67.00761718750005],[71.36523437500003,66.96152343749998],[71.53955078125003,66.68310546875],[70.72490234375007,66.51943359374997],[70.38281249999997,66.60249023437501],[70.69072265625002,66.74531249999998],[70.2833984375001,66.68579101562503],[69.8771484375001,66.84545898437506],[69.21777343749997,66.82861328125],[69.01347656250002,66.78833007812503],[69.19433593749997,66.57866210937505],[70.33945312500006,66.34238281250006],[71.35800781250006,66.35942382812505],[71.91699218749997,66.24672851562502],[72.32158203125002,66.33212890625],[72.4173828125,66.56079101562506],[73.79208984375,66.99531250000001],[74.07451171875007,67.41411132812499],[74.76953124999997,67.76635742187497],[74.39140625000007,68.42060546874995],[74.57958984375003,68.751220703125],[76.10751953125006,68.975732421875],[76.45917968750004,68.97827148437497],[77.2384765625001,68.46958007812498],[77.17441406250012,67.77851562499998],[77.77158203125006,67.57026367187501],[78.92246093750006,67.58911132812503],[77.58828125000005,67.75190429687498],[77.66484375000002,68.19038085937495],[77.99511718749997,68.25947265624998],[77.65068359375007,68.90302734375001],[76.00097656249997,69.23505859374998],[75.42001953125,69.23862304687498],[74.81484375,69.09057617187503],[73.83603515625006,69.143212890625],[73.578125,69.80297851562503],[74.34335937500006,70.57871093749998],[73.08623046875007,71.44492187500006],[73.67177734375,71.84506835937503],[74.99218749999997,72.14482421874999],[74.78681640625004,72.811865234375],[75.15244140625,72.85273437499998],[75.74140625000004,72.29624023437503],[75.273828125,71.95893554687495],[75.33203125000003,71.34174804687498],[76.92900390625002,71.12788085937504],[77.58964843750007,71.16791992187501],[78.32060546875002,70.93041992187503],[78.94218750000002,70.93378906250001],[79.08388671875,71.00200195312505],[78.58769531250007,70.993896484375],[78.21259765625004,71.26630859374998],[76.43339843750002,71.55249023437503],[76.03242187500004,71.91040039062503],[76.87138671875002,72.03300781250005],[77.77753906250004,71.83642578125006],[78.23242187500003,71.95229492187502],[78.01640625000007,72.092041015625],[77.49287109375004,72.07172851562504],[77.47158203125,72.19213867187506],[78.22539062500007,72.37744140625006],[79.4220703125001,72.38076171875002],[80.7625,72.08916015625002],[81.66162109374997,71.71596679687502],[82.75781250000003,71.76411132812498],[83.23359375000004,71.66816406249995],[82.32285156250006,71.26000976562503],[82.16318359375012,70.59814453125003],[82.22119140625003,70.39570312499998],[82.86914062499997,70.95483398437503],[83.03017578125,70.58051757812498],[82.6823242187501,70.21772460937498],[83.0807617187501,70.09301757812497],[83.07382812500012,70.276708984375],[83.73593750000006,70.54648437499998],[83.15126953125005,71.10361328124998],[83.534375,71.68393554687498],[83.20029296875012,71.87470703125004],[82.64541015625005,71.92524414062504],[82.09365234375,72.26542968750005],[80.82705078125005,72.48828124999997],[80.84160156250007,72.94916992187498],[80.4245117187501,73.23115234374998],[80.5832031250001,73.56845703125003],[85.20058593750005,73.72153320312506],[86.89296875,73.88710937500002],[85.79257812500012,73.438330078125],[86.67705078125002,73.10678710937503],[85.93896484374997,73.45649414062495],[87.12011718750003,73.61503906250002],[87.57119140625,73.81074218750001],[86.57109375000007,74.24375],[86.0013671875,74.316015625],[86.39580078125007,74.45009765624997],[86.89794921874997,74.32534179687497],[87.22968750000004,74.3638671875],[85.79101562499997,74.6451171875],[86.20126953125006,74.81621093750005],[86.65146484375012,74.68242187500005],[87.04179687500007,74.77885742187499],[87.46757812500002,75.01323242187505],[86.93906250000006,75.06811523437503],[87.00595703125012,75.16982421874997],[87.67138671874997,75.12958984375004],[90.18496093750005,75.59106445312497],[94.07519531249997,75.91289062499999],[92.89042968750002,75.90996093750002],[93.25927734375003,76.09877929687502],[95.57871093750012,76.13730468749998],[96.07548828125007,76.08198242187498],[95.65332031250003,75.89218750000003],[96.50859375000002,76.00556640624995],[96.49707031249997,75.89121093750003],[98.66201171875005,76.24267578125003],[99.77041015625,76.02875976562498],[99.5407226562501,75.79858398437497],[99.85136718750007,75.93027343749998],[99.8253906250001,76.13593749999995],[98.80566406250003,76.48066406250004],[100.84375,76.52519531250005],[101.59775390625006,76.43920898437503],[100.92802734375002,76.55673828124998],[100.98994140625004,76.99047851562497],[102.61015625000007,77.508544921875],[104.01455078125,77.73041992187501],[106.05957031249997,77.39052734375002],[104.20244140625002,77.101806640625],[106.9416015625001,77.034375],[107.42978515625006,76.92656250000002],[106.41357421874997,76.51225585937499],[107.72216796875003,76.52231445312498],[108.18164062500003,76.73784179687502],[111.39248046875,76.686669921875],[112.09394531250004,76.48032226562506],[111.94267578125002,76.38046875000003],[112.61953125,76.38354492187506],[112.65625,76.05356445312498],[113.2726562500001,76.25166015625001],[113.5638671875,75.89165039062502],[113.85722656250007,75.92128906250002],[113.56757812500004,75.56840820312499],[112.45302734375,75.83017578125003],[112.95566406250006,75.571923828125],[113.24296875000007,75.61142578125003],[113.72617187500012,75.45063476562498],[112.92490234375012,75.01503906249997],[109.84033203124997,74.32197265624998],[109.8102539062501,74.16918945312503],[108.19951171875002,73.69409179687497],[107.27109375000006,73.62104492187501],[106.67939453125004,73.3306640625],[106.1886718750001,73.3080078125],[105.14394531250005,72.77705078125001],[105.7082031250001,72.836669921875],[106.47792968750005,73.13940429687503],[107.750390625,73.17314453125007],[109.33105468749997,73.48745117187497],[109.85527343750002,73.47246093750002],[110.86816406249997,73.73071289062497],[109.70673828125004,73.74375],[110.2614257812501,74.01743164062503],[111.05625,73.93935546875002],[111.13085937500003,74.05283203125003],[111.55058593750007,74.02851562499998],[111.22812500000012,73.96855468750002],[111.40039062500003,73.827734375],[112.14726562500007,73.70893554687498],[112.79541015625003,73.74609375],[112.83593750000003,73.96206054687502],[113.03281250000006,73.91386718750007],[113.4162109375001,73.647607421875],[113.15693359375004,73.45957031249998],[113.49091796875004,73.34609375000002],[113.12783203125,72.8306640625],[113.66455078124997,72.63452148437503],[113.2155273437501,72.80585937500001],[113.88623046875003,73.34580078124998],[113.51035156250012,73.50498046874998],[115.33769531250007,73.70258789062501],[118.87089843750007,73.53789062500002],[118.45703124999997,73.46440429687507],[118.43027343750012,73.24653320312501],[119.750390625,72.97910156250006],[122.26015625,72.88056640624995],[122.75195312500003,72.906494140625],[122.61523437499997,73.02792968750006],[123.1603515625001,72.95488281250002],[123.62226562500004,73.19326171875],[123.49111328125005,73.666357421875],[124.54121093750004,73.75126953125007],[125.59853515625005,73.447412109375],[126.25449218750012,73.548193359375],[126.55253906250007,73.33491210937498],[127.03134765625006,73.54746093750003],[127.74033203125012,73.48154296875],[129.10058593750003,73.11235351562502],[128.5990234375,72.895166015625],[129.01728515625004,72.8724609375],[129.250390625,72.70517578125003],[128.41826171875002,72.53515625000003],[129.28134765625006,72.43769531249998],[129.41064453124997,72.16630859375002],[128.93496093750005,72.07949218750002],[127.8034179687501,72.43403320312504],[127.84140625000012,72.308251953125],[128.91142578125002,71.75532226562495],[129.21025390625007,71.91694335937501],[129.46083984375,71.73930664062499],[128.84326171875003,71.6634765625],[129.76191406250004,71.11953125000002],[130.53710937500003,70.89252929687495],[130.75712890625002,70.96235351562498],[131.02158203125006,70.74609374999997],[132.0353515625001,71.24404296875],[132.65390625000006,71.92597656250001],[133.6888671875,71.434228515625],[134.70273437500012,71.38681640625003],[135.55917968750006,71.6103515625],[136.09033203125003,71.61958007812501],[137.9396484375001,71.1333984375],[137.84404296875007,71.22680664062503],[138.31406250000006,71.32553710937498],[137.918359375,71.38408203124999],[138.23417968750007,71.596337890625],[138.78017578125,71.62900390624998],[139.209375,71.44477539062501],[139.98417968750007,71.49150390625005],[139.72294921875002,71.88496093749998],[139.35927734375005,71.95136718750001],[140.18769531250004,72.19130859374997],[139.17636718750006,72.16347656249997],[139.14082031250004,72.32973632812502],[139.60117187500012,72.49609374999997],[141.07929687500004,72.5869140625],[140.80820312500006,72.89096679687503],[142.06142578125005,72.72080078125],[146.25292968749997,72.442236328125],[146.234765625,72.34970703125],[144.77636718749997,72.38227539062495],[144.16923828125002,72.25878906250003],[144.29492187499997,72.19262695312497],[146.83183593750007,72.29541015625003],[146.11328125000003,71.94497070312497],[146.23027343750007,72.1375],[145.75859375000007,72.22587890624999],[145.75673828125005,71.94130859375002],[145.06396484374997,71.92607421875002],[145.18857421875012,71.69580078125],[146.07324218749997,71.80834960937503],[147.26181640625006,72.327880859375],[149.50156250000012,72.16430664062497],[150.01689453125002,71.89565429687505],[149.04873046875005,71.79575195312503],[148.9681640625,71.69047851562499],[150.59980468750004,71.5201171875],[150.09765624999997,71.22656249999997],[150.96777343749997,71.38046874999998],[151.58242187500005,71.28696289062503],[152.09277343749997,71.02329101562503],[151.76201171875002,70.98247070312499],[152.50878906250003,70.83447265625003],[156.68457031250003,71.09375],[158.03701171875005,71.03925781250001],[159.35068359375006,70.79072265625001],[160.00644531250006,70.30966796875006],[159.72939453125005,69.87021484375006],[160.91074218750012,69.60634765625002],[161.03554687500005,69.09819335937507],[161.30986328125007,68.98227539062498],[160.85605468750006,68.53833007812506],[161.565625,68.90517578125],[161.53691406250002,69.379541015625],[162.16601562499997,69.61157226562503],[163.20136718750004,69.71474609375],[166.82031250000003,69.49956054687505],[167.8568359375,69.72822265624998],[168.30302734375002,69.27148437500003],[169.31064453125006,69.07954101562498],[169.60986328124997,68.78603515624997],[170.53759765624997,68.82539062500001],[170.99541015625002,69.04531250000005],[170.58222656250004,69.58334960937506],[170.16093750000007,69.62656249999998],[170.48681640625003,70.107568359375],[173.27744140625006,69.823828125],[173.43867187500004,69.94682617187502],[175.92148437500012,69.89531250000002],[179.27265624999998,69.25966796875002],[180,68.98344726562505],[180,65.06723632812498],[178.51953125000003,64.60297851562498],[177.7486328125,64.71704101562503],[176.88085937499997,65.08193359375002],[176.34101562500015,65.04731445312501],[177.03730468750004,64.99965820312497],[177.22285156250004,64.861669921875],[177.06875,64.78666992187502],[176.06113281250012,64.96088867187498],[174.54882812500009,64.68388671875005],[176.0565429687501,64.90473632812498],[176.35097656250005,64.70512695312502],[176.14091796875007,64.58583984375005],[177.42744140625015,64.76337890624998],[177.43291015625002,64.44448242187502],[177.6875,64.30473632812507],[178.04472656250013,64.21958007812503],[178.22949218749991,64.36440429687497],[178.38144531250018,64.26088867187502],[178.73144531250003,63.667089843750006],[178.44042968750009,63.605566406250006],[178.74404296874994,63.39477539062503],[178.79296874999997,63.54033203125002],[179.38857421875,63.14721679687497],[179.25957031250002,63.00830078125],[179.5705078125001,62.6875],[179.12070312500012,62.32036132812499],[177.292578125,62.59902343750002],[177.33896484375006,62.781347656250034],[177.02353515625012,62.777246093749994],[177.15947265625007,62.56098632812498],[174.51435546875015,61.823632812499966],[173.6234375,61.716064453125],[173.13183593749997,61.40664062500002],[172.85654296875006,61.469189453124955],[172.90800781250002,61.311621093750006],[172.39609375000006,61.16738281250002],[172.39277343750004,61.061767578125],[170.60820312500007,60.434912109375034],[170.3509765625,59.965527343749955],[169.9826171875001,60.067089843749955],[169.2267578125001,60.59594726562497],[168.1375,60.57392578125001],[167.22675781250004,60.406298828125045],[166.27304687500012,59.85625],[166.13603515625007,59.979345703125034],[166.35214843750006,60.48481445312498],[165.08457031250006,60.09858398437498],[164.95371093750006,59.843603515625006],[164.52529296875,60.06127929687503],[164.11328125000003,59.89755859374998],[164.13505859375002,59.984375],[163.74384765625004,60.02802734374998],[163.36484375000012,59.78144531250004],[163.27285156250005,59.302587890625006],[162.14160156249997,58.44741210937502],[161.96005859375012,58.07690429687506],[162.39140625000002,57.717236328124955],[162.65429687499997,57.94824218750003],[163.22578125000004,57.790380859375034],[162.77929687500003,57.35761718749998],[162.79111328125012,56.875390624999966],[162.92207031250004,56.72265625000003],[163.2565429687501,56.68803710937499],[163.33554687500012,56.232519531250006],[163.04736328125003,56.044677734375],[162.84033203125003,56.065625],[162.628125,56.232275390625034],[163.03837890625002,56.521875],[162.67148437500006,56.49008789062498],[162.52822265625005,56.260693359374955],[162.08496093749997,56.08964843750002],[161.72392578125002,55.49614257812499],[162.10556640625006,54.75214843750004],[161.62480468750002,54.51625976562502],[160.77265625000004,54.54135742187498],[160.0744140625001,54.18916015625001],[159.84375,53.78364257812498],[160.02509765625004,53.129589843749955],[159.58593750000003,53.237695312499966],[158.74541015625002,52.90893554687506],[158.47207031250005,53.032373046874966],[158.6087890625,52.873632812500034],[158.49316406249997,52.383154296875034],[158.10351562500003,51.80961914062499],[156.84746093750002,51.006591796875],[156.74775390625004,50.969287109375045],[156.52119140625004,51.38027343750002],[156.36474609374997,52.509375],[156.11035156250003,52.86616210937504],[155.62031250000004,54.86455078125002],[155.5548828125001,55.348486328125034],[155.98251953125012,56.69521484375002],[156.8488281250001,57.290185546874994],[156.97675781250004,57.46630859375],[156.82988281250007,57.77963867187498],[157.4503906250001,57.79926757812498],[157.66640625000005,58.01977539062506],[158.27519531250007,58.00898437499998],[159.21064453125004,58.519433593749966],[159.8473632812501,59.127148437499955],[161.75351562500012,60.15229492187501],[162.06816406250002,60.466406250000034],[163.70996093749997,60.916796875000045],[163.55351562500002,61.02563476562503],[164.00546875000006,61.34379882812499],[163.80439453125004,61.46137695312498],[164.20722656250004,62.29223632812506],[164.59833984375004,62.470556640625034],[165.20810546875012,62.37397460937501],[165.41738281250005,62.447070312500045],[164.418359375,62.704638671875045],[163.33173828125004,62.550927734374994],[163.01767578125006,61.89106445312504],[163.25781249999997,61.69946289062497],[163.08525390625002,61.570556640625],[162.85595703125003,61.705029296874955],[162.39257812500003,61.662109375],[160.76660156249997,60.753320312499966],[160.17363281250002,60.638427734375],[160.37890625000003,61.02548828124998],[159.79042968750005,60.956640625],[160.309375,61.894384765625006],[159.55234375000012,61.71948242187497],[159.18925781250007,61.92939453125001],[158.07011718750002,61.75361328125001],[157.46933593750012,61.798925781250006],[157.0841796875001,61.67568359375002],[155.71611328125002,60.682373046875],[154.97080078125012,60.376660156249955],[154.29306640625006,59.833349609375034],[154.1498046875,59.52851562500001],[154.97128906250006,59.44960937500002],[155.16044921875002,59.19013671875001],[154.45800781250003,59.21655273437497],[154.01093750000004,59.075537109375006],[153.69521484375005,59.22475585937505],[153.36113281250002,59.214794921874955],[152.81787109375003,58.92626953124997],[152.31962890625002,59.03076171875003],[152.08789062499997,58.910449218750045],[151.32675781250006,58.875097656250034],[151.12109375000003,59.08251953125003],[152.26064453125,59.22358398437498],[151.34824218750012,59.561132812500006],[150.4835937500001,59.494384765625],[150.66728515625002,59.55634765625001],[149.64257812499997,59.770410156249994],[149.06523437500002,59.63051757812502],[149.20498046875,59.488183593749966],[148.79707031250004,59.532324218750006],[148.74414062499997,59.37353515624997],[148.96464843750007,59.36914062499997],[148.72666015625006,59.257910156250034],[148.25742187500006,59.414208984374994],[147.51445312500002,59.2685546875],[146.53720703125006,59.45698242187501],[146.0495117187501,59.17055664062502],[145.55458984375,59.413525390624955],[143.19218750000002,59.3701171875],[142.58027343750004,59.240136718749966],[140.79023437500004,58.30346679687503],[140.446875,57.81367187499998],[138.66210937500003,56.96552734375004],[137.69150390625006,56.13935546875004],[135.2625,54.94331054687498],[135.25771484375005,54.73149414062499],[135.85156249999997,54.583935546874955],[136.797265625,54.62099609375005],[136.71884765625006,53.804101562499994],[137.15537109375012,53.82167968750002],[137.14160156249997,54.182226562500006],[137.66601562500003,54.283300781250006],[137.3392578125,54.10053710937498],[137.83476562500002,53.94672851562498],[137.25371093750007,53.546142578125],[137.95048828125007,53.60356445312499],[138.52792968750012,53.959863281249994],[138.56914062500002,53.818798828124955],[138.24970703125004,53.524023437500034],[138.45068359375003,53.53701171875002],[138.69941406250004,53.869726562500034],[138.65722656249997,54.29833984375003],[139.31972656250005,54.19296874999998],[139.707421875,54.27714843749999],[140.68759765625012,53.59643554687503],[141.3737304687501,53.29277343749999],[141.18125,53.01528320312505],[140.83964843750002,53.087890625],[141.25585937499997,52.84013671874996],[141.13242187500006,52.435693359374994],[141.48525390625,52.17851562500002],[141.36689453125004,51.92065429687506],[140.93261718750003,51.61992187499999],[140.5208984375,50.80019531250005],[140.62451171874997,50.08242187500002],[140.46269531250002,49.911474609375006],[140.51718750000012,49.59614257812498],[140.17060546875004,48.52368164062497],[138.58681640625005,47.057226562500006],[138.33691406250003,46.543408203124955],[137.68544921875,45.81835937500003],[136.14228515625004,44.489111328125034],[135.87460937500012,44.37353515625003],[135.1310546875001,43.52573242187506],[134.01044921875004,42.94746093750001],[133.15996093750007,42.69697265624998],[132.70898437500003,42.875830078125006],[132.30380859375006,42.88330078125],[132.30957031249997,43.31352539062499],[131.8666015625,43.09516601562501],[131.93896484374997,43.30195312500004],[131.15830078125012,42.62602539062499],[130.709375,42.656396484374966],[130.8341796875001,42.52294921875006],[130.68730468750007,42.30253906249999]]],[[[107.69550781250004,78.13090820312505],[107.48164062500004,78.057763671875],[106.41552734375003,78.13984375000001],[107.69550781250004,78.13090820312505]]],[[[102.88476562499997,79.25395507812505],[102.4123046875001,78.83544921874997],[103.80078124999997,79.14926757812503],[104.45205078125005,78.880029296875],[105.14599609375003,78.81884765625006],[105.31259765625012,78.49990234375],[104.74179687500012,78.33974609374997],[102.79667968750007,78.18789062500002],[101.20410156249997,78.19194335937505],[99.50029296875002,77.97607421875003],[101.590625,79.350439453125],[102.25126953125002,79.25605468749995],[102.40488281250006,79.43320312499998],[102.88476562499997,79.25395507812505]]],[[[76.24892578125005,79.65107421874995],[77.58896484375012,79.50190429687504],[76.64951171875012,79.493408203125],[76.24892578125005,79.65107421874995]]],[[[92.68349609375005,79.685205078125],[91.37626953125007,79.83549804687505],[91.22929687500007,80.03071289062504],[93.803125,79.904541015625],[92.68349609375005,79.685205078125]]],[[[51.409277343750006,79.94423828125],[50.09140625,79.98056640625003],[50.93632812500002,80.09423828125],[51.409277343750006,79.94423828125]]],[[[59.68886718750005,79.95581054687506],[58.91923828125002,79.98461914062506],[59.54453125000006,80.11884765624995],[59.68886718750005,79.95581054687506]]],[[[97.67451171875004,80.15825195312499],[97.65166015625002,79.76064453125],[98.59648437500002,80.05219726562495],[100.0612304687501,79.77709960937506],[99.68066406250003,79.32333984374998],[99.04179687500007,79.29301757812502],[99.92929687500012,78.96142578124997],[98.41113281250003,78.78779296875004],[95.53105468750007,79.09809570312501],[95.02041015625005,79.05268554687498],[94.21875,79.40234375],[93.07080078124997,79.49531250000001],[94.98730468749997,80.096826171875],[95.28134765625012,80.030517578125],[97.67451171875004,80.15825195312499]]],[[[50.05175781250003,80.07431640625003],[49.55605468750005,80.15893554687503],[49.883691406249994,80.230224609375],[50.05175781250003,80.07431640625003]]],[[[57.07871093750006,80.35092773437498],[56.986914062500006,80.07148437499998],[55.811621093750006,80.08715820312497],[56.02441406250003,80.34130859374997],[57.07871093750006,80.35092773437498]]],[[[53.521386718749994,80.18520507812497],[52.34355468750002,80.213232421875],[52.85390625,80.40239257812499],[53.85166015625006,80.26835937500005],[53.521386718749994,80.18520507812497]]],[[[57.95625,80.12324218749995],[57.33232421875002,80.15810546875005],[57.075,80.49394531249999],[59.25546875000006,80.34321289062501],[58.39794921874997,80.31875],[57.95625,80.12324218749995]]],[[[54.41533203125002,80.47280273437502],[53.811914062499994,80.47622070312502],[53.87724609375002,80.60527343750002],[54.41533203125002,80.47280273437502]]],[[[47.441992187500006,80.853662109375],[48.44570312500005,80.80600585937506],[48.68359375000003,80.63325195312504],[47.7052734375001,80.76518554687499],[46.141406250000074,80.44672851562495],[45.969042968750074,80.56948242187502],[44.9049804687501,80.61127929687501],[47.441992187500006,80.853662109375]]],[[[62.167773437500074,80.83476562500005],[62.07578125000006,80.616943359375],[61.05126953124997,80.418603515625],[60.27832031249997,80.49443359374999],[59.649804687499994,80.43125],[59.59228515625003,80.81650390624998],[62.167773437500074,80.83476562500005]]],[[[50.278125,80.92724609374997],[51.70361328125003,80.68764648437502],[48.81103515625003,80.35371093750001],[48.97753906250003,80.16259765624997],[47.73730468749997,80.08168945312502],[47.89296875000005,80.23925781249997],[46.991015625000074,80.182763671875],[46.644433593749994,80.30034179687507],[47.89580078125002,80.52905273437503],[49.087792968749994,80.515771484375],[49.24433593750004,80.82138671875],[50.278125,80.92724609374997]]],[[[80.02666015625007,80.84814453125003],[79.09853515625005,80.81206054687505],[79.21738281250012,80.96035156249997],[80.27958984375007,80.94980468750003],[80.02666015625007,80.84814453125003]]],[[[61.1408203125001,80.95034179687497],[60.0783203125001,80.99916992187497],[61.45742187499999,81.10395507812501],[61.1408203125001,80.95034179687497]]],[[[54.71894531250004,81.11596679687497],[56.47226562500006,80.99824218749995],[57.58037109375002,80.75546874999998],[55.88339843750006,80.62841796875003],[54.66816406250004,80.73867187500002],[54.04541015624997,80.87197265625],[54.71894531250004,81.11596679687497]]],[[[58.62236328125002,81.04165039062502],[58.930566406249994,80.83168945312497],[58.28564453124997,80.76489257812503],[57.21093749999997,81.01708984374997],[58.04951171875004,81.11845703125002],[58.62236328125002,81.04165039062502]]],[[[63.37382812500002,80.70009765624997],[62.59257812500002,80.85302734375006],[64.80205078125002,81.197265625],[65.43740234375005,80.93071289062507],[63.37382812500002,80.70009765624997]]],[[[91.56718750000007,81.14121093750003],[91.2228515625001,81.063818359375],[89.90117187500002,81.17070312500002],[91.56718750000007,81.14121093750003]]],[[[96.52656250000004,81.0755859375],[97.86992187500007,80.76328125000006],[97.02539062499997,80.53554687500002],[97.29843750000006,80.27275390625005],[93.6546875,80.009619140625],[91.52382812500005,80.35854492187502],[93.2625,80.79125976562497],[92.59257812500007,80.780859375],[92.7103515625,80.87216796875003],[95.1595703125,81.27099609375003],[95.80068359375005,81.28046874999998],[96.52656250000004,81.0755859375]]],[[[57.81025390625004,81.54604492187502],[58.563867187499994,81.41840820312504],[57.858691406250074,81.36806640625],[57.76972656250004,81.16972656249999],[55.71669921875005,81.1884765625],[55.46601562500004,81.31118164062502],[57.81025390625004,81.54604492187502]]],[[[63.65097656250006,81.60932617187501],[62.10644531249997,81.679345703125],[63.709570312500006,81.68730468750002],[63.65097656250006,81.60932617187501]]],[[[58.29541015625003,81.715185546875],[58.13457031250002,81.82797851562498],[59.261816406250006,81.85419921874998],[59.35644531250003,81.75898437499995],[58.29541015625003,81.715185546875]]]]},"properties":{"name":"Russia","childNum":73}},{"geometry":{"type":"Polygon","coordinates":[[[30.50996093750001,-1.067285156250009],[30.47705078125,-1.0830078125],[30.47021484375,-1.131152343750003],[30.508105468750017,-1.208203125000011],[30.631933593750006,-1.367480468750003],[30.710742187500017,-1.396777343750003],[30.76220703125,-1.458691406250011],[30.812597656250006,-1.563085937500006],[30.8765625,-2.143359375],[30.85498046875,-2.265429687500003],[30.828710937500006,-2.338476562500006],[30.7625,-2.371679687500006],[30.71484375,-2.363476562500011],[30.656640625000023,-2.373828125],[30.593359375,-2.396777343750003],[30.553613281250023,-2.400097656250011],[30.408496093750017,-2.31298828125],[30.117285156250006,-2.416601562500006],[29.93017578125,-2.339550781250011],[29.8681640625,-2.71640625],[29.698046875000017,-2.794726562500003],[29.390234375,-2.80859375],[29.10205078125,-2.595703125],[29.01435546875001,-2.72021484375],[28.893945312500023,-2.635058593750003],[28.876367187500023,-2.400292968750009],[29.13154296875001,-2.195117187500003],[29.196582031250017,-1.719921875000011],[29.576953125000017,-1.387890625000011],[29.82539062500001,-1.335546875],[29.930078125000023,-1.469921875000011],[30.360253906250023,-1.074609375],[30.41230468750001,-1.063085937500006],[30.46992187500001,-1.066015625],[30.50996093750001,-1.067285156250009]]]},"properties":{"name":"Rwanda","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[41.98769531250005,16.715625],[42.059960937499994,16.803515625000017],[42.15781250000006,16.570703125000023],[41.80156250000002,16.778759765624955],[41.86044921875006,17.002539062499977],[41.98769531250005,16.715625]]],[[[46.53144531250004,29.09624023437499],[47.433203125,28.989550781250017],[47.671289062499994,28.53315429687504],[48.442480468750006,28.542919921874983],[48.80898437499999,27.895898437499966],[48.797167968750074,27.72431640625001],[49.2375,27.49272460937499],[49.17509765625002,27.43764648437505],[49.40527343749997,27.18095703124996],[50.149804687499994,26.66264648437499],[50.00810546875002,26.678515625000017],[50.21386718750003,26.30849609375005],[50.15546875000004,26.100537109374955],[50.03164062499999,26.11098632812505],[50.55791015625002,25.086669921875],[50.66689453125005,24.96381835937501],[50.72558593749997,24.869384765625057],[50.80439453125004,24.789257812499983],[50.928320312500006,24.595117187500023],[50.96601562500004,24.573925781249983],[51.022753906250074,24.56523437499999],[51.09335937500006,24.564648437499955],[51.178027343750074,24.586718750000017],[51.26796875,24.607226562500017],[51.33847656250006,24.564355468749994],[51.41123046875006,24.570800781250057],[51.30986328125002,24.340380859375017],[51.56835937500003,24.286181640625074],[51.592578125000074,24.07885742187503],[52.55507812500005,22.932812499999955],[55.104296875000074,22.621484375000023],[55.185839843750074,22.7041015625],[55.64101562499999,22.001855468749994],[54.97734375000002,19.995947265625006],[51.977636718750006,18.996142578125074],[49.04199218750003,18.58178710937503],[48.17216796875002,18.156933593749983],[47.57958984374997,17.448339843750034],[47.44179687499999,17.111865234375045],[47.14355468749997,16.946679687499966],[46.97568359375006,16.953466796875034],[46.72763671875006,17.26557617187501],[45.5353515625001,17.30205078124999],[45.14804687500006,17.427441406249955],[43.91699218749997,17.32470703124997],[43.41796875000003,17.516259765625023],[43.19091796875003,17.359375],[43.16503906249997,16.689404296874955],[42.79931640624997,16.37177734375001],[42.29394531249997,17.434960937499966],[41.75,17.88574218749997],[41.22949218750003,18.678417968749983],[40.75917968750005,19.755468750000034],[40.080664062500006,20.265917968750017],[39.728320312500074,20.390332031249955],[39.27607421875004,20.973974609375034],[39.093554687500074,21.31035156249999],[39.14707031250006,21.518994140624955],[38.98789062500006,21.88173828125005],[39.06201171874997,22.592187500000023],[38.46416015625002,23.71186523437504],[37.91972656250002,24.185400390625063],[37.54306640625006,24.291650390625023],[37.18085937500004,24.82001953125001],[37.26630859375004,24.960058593750034],[37.14882812499999,25.291113281249977],[35.18046875000002,28.03486328125004],[34.722070312499994,28.130664062500017],[34.625,28.064501953125017],[34.95078125,29.353515625],[36.068457031250006,29.200537109375006],[36.28281250000006,29.355371093750023],[36.47607421874997,29.49511718749997],[36.59179687500003,29.666113281250006],[36.703906250000074,29.831640624999977],[36.75527343750005,29.86601562499996],[37.46923828125003,29.995068359374955],[37.49072265625003,30.01171874999997],[37.55361328125005,30.14458007812496],[37.63359375000002,30.313281250000045],[37.64990234374997,30.330957031249994],[37.669726562500074,30.34814453125003],[37.862890625,30.44262695312503],[37.98007812500006,30.5],[37.47900390624997,31.007763671874955],[37.10527343750002,31.35517578125004],[36.95859375000006,31.491503906250017],[37.215625,31.55610351562501],[37.49335937500004,31.625878906250023],[38.111425781250006,31.78115234375005],[38.37548828124997,31.84746093749996],[38.962304687499994,31.99492187499999],[38.99707031249997,32.00747070312505],[39.145410156249994,32.12451171875],[39.36865234374997,32.09174804687498],[39.70410156250003,32.04252929687499],[40.02783203124997,31.995019531249994],[40.3693359375001,31.93896484375003],[40.47890625000005,31.89335937499999],[42.07441406250004,31.08037109374999],[43.77373046875002,29.84921875],[44.71650390625004,29.19360351562503],[46.35644531250003,29.06367187500001],[46.53144531250004,29.09624023437499]]]]},"properties":{"name":"Saudi Arabia","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[36.87138671875002,21.996728515624994],[36.92695312500001,21.58652343749999],[37.25859375000002,21.108544921874994],[37.25722656250002,21.03940429687499],[37.15058593750001,21.103759765625],[37.14111328125,20.98178710937499],[37.19316406250002,20.12070312499999],[37.471289062500006,18.820117187500003],[38.609472656250006,18.005078125],[38.422460937500006,17.823925781249997],[38.39716796875001,17.778369140625003],[38.38554687500002,17.751269531250003],[38.37373046875001,17.717333984375003],[38.34736328125001,17.68359375],[38.28984375000002,17.637011718750003],[38.26728515625001,17.61669921875],[38.253515625,17.584765625],[37.78242187500001,17.4580078125],[37.547460937500006,17.324121093749994],[37.51015625000002,17.288134765625003],[37.45292968750002,17.108691406250003],[37.41103515625002,17.06171875],[37.24882812500002,17.056884765625],[37.16953125,17.04140625],[37.0615234375,17.061279296875],[37.00898437500001,17.058886718750003],[36.995214843750006,17.020556640625003],[36.97578125000001,16.86655273437499],[36.97871093750001,16.800585937500003],[36.887792968750006,16.624658203124994],[36.91376953125001,16.296191406250003],[36.566015625,15.362109375],[36.4267578125,15.132080078125],[36.44814453125002,14.940087890624994],[36.470800781250006,14.736474609374994],[36.52431640625002,14.2568359375],[36.12519531250001,12.75703125],[35.67021484375002,12.623730468749997],[35.1123046875,11.816552734374994],[34.93144531250002,10.864794921874989],[34.77128906250002,10.746191406249991],[34.571875,10.880175781249989],[34.34394531250001,10.658642578124997],[34.31123046875001,10.190869140624997],[34.078125,9.461523437499991],[33.87148437500002,9.506152343749989],[33.96328125000002,9.861767578124997],[33.90703125000002,10.181445312499989],[33.13007812500001,10.745947265624991],[33.073339843750006,11.606103515624994],[33.199316406250006,12.21728515625],[32.721875,12.223095703124997],[32.73671875000002,12.009667968749994],[32.072265625,12.006738281249994],[32.338476562500006,11.710107421874994],[32.42080078125002,11.089111328125],[31.224902343750017,9.799267578124997],[30.75537109375,9.731201171875],[30.003027343750006,10.277392578124989],[29.60546875,10.065087890624994],[29.47314453125,9.768603515624989],[28.979589843750006,9.594189453124997],[28.844531250000017,9.326074218749994],[28.048925781250006,9.32861328125],[27.880859375,9.601611328124989],[27.07421875,9.613818359374989],[26.65869140625,9.484130859375],[25.91914062500001,10.169335937499994],[25.858203125000017,10.406494140625],[25.211718750000017,10.329931640624991],[25.066992187500006,10.293798828124991],[24.785253906250006,9.774658203125],[24.53193359375001,8.886914062499997],[24.147363281250023,8.665625],[23.53730468750001,8.815820312499994],[23.46826171875,9.11474609375],[23.62265625,9.340625],[23.646289062500017,9.822900390624994],[22.86005859375001,10.919677734375],[22.922656250000017,11.344873046874994],[22.591113281250017,11.579882812499989],[22.580957031250023,11.990136718749994],[22.472460937500017,12.067773437499994],[22.352343750000017,12.660449218749989],[21.928125,12.678125],[21.825292968750006,12.79052734375],[22.228125,13.32958984375],[22.1064453125,13.7998046875],[22.53857421875,14.161865234375],[22.38154296875001,14.550488281249997],[22.6708984375,14.722460937500003],[22.93232421875001,15.162109375],[22.933886718750017,15.533105468749994],[23.10517578125001,15.702539062499994],[23.970800781250006,15.721533203124991],[23.980273437500017,19.496630859375003],[23.980273437500017,19.99594726562499],[24.9794921875,20.002587890624994],[24.980273437500017,21.995849609375],[28.036425781250017,21.995361328125],[31.092675781250023,21.994873046875],[31.260644531250023,22.00229492187499],[31.400292968750023,22.202441406250003],[31.486132812500017,22.14780273437499],[31.434472656250023,21.995849609375],[36.87138671875002,21.996728515624994]]]},"properties":{"name":"Sudan","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[34.078125,9.461523437499991],[34.07275390625,8.545263671874991],[33.95332031250001,8.443505859374994],[33.28105468750002,8.437255859375],[32.99892578125002,7.899511718749991],[33.902441406250006,7.509521484375],[34.06425781250002,7.225732421874994],[34.71064453125001,6.660302734374994],[34.98359375000001,5.858300781249994],[35.26835937500002,5.492285156249991],[35.08447265625,5.311865234374991],[34.87832031250002,5.109570312499997],[34.63984375000001,4.87548828125],[34.38017578125002,4.620654296874989],[34.176855468750006,4.419091796874994],[33.97607421875,4.22021484375],[33.74160156250002,3.985253906249994],[33.568457031250006,3.81171875],[33.489355468750006,3.755078125],[32.99726562500001,3.880175781249989],[32.33574218750002,3.706201171874994],[32.13593750000001,3.519726562499997],[31.79804687500001,3.802636718749994],[31.547167968750017,3.677587890624991],[31.15234375,3.785595703124997],[30.83857421875001,3.49072265625],[30.757226562500023,3.62421875],[30.586718750000017,3.62421875],[30.50830078125,3.835693359375],[30.194921875,3.98193359375],[29.676855468750006,4.5869140625],[29.469628906250023,4.61181640625],[29.224902343750017,4.391894531249989],[28.72705078125,4.504980468749991],[28.427539062500017,4.324169921874997],[28.19208984375001,4.350244140624994],[27.7880859375,4.644677734374994],[27.4033203125,5.109179687499989],[27.143945312500023,5.722949218749989],[26.514257812500006,6.069238281249994],[26.30859375,6.455322265625],[26.36181640625,6.635302734374989],[25.27890625,7.427490234375],[25.18134765625001,7.557226562499991],[25.20039062500001,7.807910156249989],[24.853320312500017,8.137548828124991],[24.291406250000023,8.29140625],[24.147363281250023,8.665625],[24.53193359375001,8.886914062499997],[24.785253906250006,9.774658203125],[25.066992187500006,10.293798828124991],[25.211718750000017,10.329931640624991],[25.858203125000017,10.406494140625],[25.91914062500001,10.169335937499994],[26.65869140625,9.484130859375],[27.07421875,9.613818359374989],[27.880859375,9.601611328124989],[28.048925781250006,9.32861328125],[28.844531250000017,9.326074218749994],[28.979589843750006,9.594189453124997],[29.47314453125,9.768603515624989],[29.60546875,10.065087890624994],[30.003027343750006,10.277392578124989],[30.75537109375,9.731201171875],[31.224902343750017,9.799267578124997],[32.42080078125002,11.089111328125],[32.338476562500006,11.710107421874994],[32.072265625,12.006738281249994],[32.73671875000002,12.009667968749994],[32.721875,12.223095703124997],[33.199316406250006,12.21728515625],[33.073339843750006,11.606103515624994],[33.13007812500001,10.745947265624991],[33.90703125000002,10.181445312499989],[33.96328125000002,9.861767578124997],[33.87148437500002,9.506152343749989],[34.078125,9.461523437499991]]]},"properties":{"name":"S. Sudan","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-12.280615234374977,14.809033203124997],[-12.228417968749994,14.45859375],[-12.019189453124994,14.206494140624997],[-11.960888671874983,13.875292968750003],[-12.05419921875,13.633056640625],[-11.831689453124994,13.315820312499994],[-11.634960937499983,13.369873046875],[-11.390380859375,12.941992187499991],[-11.389404296875,12.404394531249991],[-12.399072265624994,12.340087890625],[-12.930712890624989,12.532275390624989],[-13.061279296875,12.489990234375],[-13.082910156249994,12.633544921875],[-13.729248046875,12.673925781249991],[-14.06484375,12.67529296875],[-14.349218749999977,12.676416015624994],[-15.196093749999989,12.679931640625],[-15.3779296875,12.588964843749991],[-15.574804687499977,12.490380859374994],[-15.839550781249983,12.43789062499999],[-16.144189453124994,12.45742187499999],[-16.24150390624999,12.443310546874997],[-16.41630859374999,12.36767578125],[-16.521337890624977,12.3486328125],[-16.656933593749983,12.364355468749991],[-16.711816406249994,12.354833984374991],[-16.76030273437499,12.52578125],[-16.44287109375,12.609472656249991],[-16.59765625,12.715283203124997],[-16.743896484375,12.58544921875],[-16.763330078124994,13.064160156249997],[-16.648779296874977,13.154150390624991],[-15.834277343749989,13.156445312499997],[-15.814404296874983,13.325146484374997],[-15.286230468749977,13.39599609375],[-15.151123046875,13.556494140624991],[-14.246777343749983,13.23583984375],[-13.826708984374989,13.4078125],[-13.977392578124977,13.54345703125],[-14.405468749999983,13.503710937500003],[-15.108349609374983,13.81210937499999],[-15.426855468749977,13.727001953124997],[-15.509667968749994,13.586230468750003],[-16.56230468749999,13.587304687499994],[-16.766943359374977,13.904931640624994],[-16.618115234374983,14.04052734375],[-16.791748046875,14.004150390625],[-17.168066406249977,14.640625],[-17.345800781249977,14.729296875],[-17.445019531249983,14.651611328125],[-17.53564453125,14.755126953125],[-17.147167968749983,14.922021484374994],[-16.843408203124994,15.293994140625003],[-16.570751953124983,15.734423828125003],[-16.535253906249977,15.83837890625],[-16.502050781249977,15.917333984374991],[-16.480078124999977,16.097216796875003],[-16.441015624999977,16.204541015624997],[-16.239013671875,16.531298828125003],[-15.768212890624994,16.485107421875],[-14.990625,16.676904296874994],[-14.300097656249989,16.580273437499997],[-13.868457031249989,16.148144531249997],[-13.756640624999989,16.172509765624994],[-13.40966796875,16.05917968749999],[-13.105273437499989,15.57177734375],[-12.735253906249994,15.13125],[-12.40869140625,14.889013671874991],[-12.280615234374977,14.809033203124997]]]},"properties":{"name":"Senegal","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[103.9697265625,1.331445312499994],[103.65019531249999,1.325537109374991],[103.81796875000003,1.447070312499989],[103.9697265625,1.331445312499994]]]},"properties":{"name":"Singapore","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-37.10332031249996,-54.065625],[-36.70380859375001,-54.10810546874999],[-36.64741210937498,-54.26230468749996],[-36.32646484374996,-54.251171875],[-35.79858398437497,-54.76347656250002],[-36.08549804687499,-54.86679687500001],[-36.885986328125,-54.33945312499996],[-37.63090820312496,-54.16748046875001],[-37.61884765625001,-54.04208984375004],[-38.017431640625034,-54.008007812500026],[-37.10332031249996,-54.065625]]]},"properties":{"name":"S. Geo. and S. Sandw. Is.","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-5.692138671874972,-15.997753906249997],[-5.782519531250017,-16.00400390625002],[-5.707861328124977,-15.90615234374998],[-5.692138671874972,-15.997753906249997]]]},"properties":{"name":"Saint Helena","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[160.57626953125006,-11.797851562500028],[160.44306640625004,-11.814941406249957],[159.98632812499997,-11.494726562500006],[160.57626953125006,-11.797851562500028]]],[[[166.13320312500005,-10.757812499999972],[165.90400390625004,-10.851464843749966],[165.79101562500003,-10.784765624999963],[166.02382812500005,-10.6611328125],[166.13320312500005,-10.757812499999972]]],[[[161.71533203124997,-10.387304687499991],[162.10537109375005,-10.45380859375004],[162.37333984375002,-10.823242187499986],[161.78681640625004,-10.716894531249991],[161.53789062500007,-10.566406249999972],[161.4870117187501,-10.361425781249963],[161.29394531250003,-10.326464843750031],[161.30478515625012,-10.204394531250031],[161.71533203124997,-10.387304687499991]]],[[[161.54785156249997,-9.625683593749997],[161.55380859375012,-9.769726562500026],[161.40976562500006,-9.681640625000028],[161.36416015625,-9.353417968750037],[161.54785156249997,-9.625683593749997]]],[[[159.75039062500005,-9.272656250000011],[159.97060546875,-9.433300781249969],[160.35458984375006,-9.421582031249983],[160.81894531250006,-9.862792968749986],[160.64921875000002,-9.92861328124998],[159.80273437499997,-9.763476562500003],[159.61230468749997,-9.470703124999943],[159.62558593750012,-9.311230468749969],[159.75039062500005,-9.272656250000011]]],[[[160.1681640625001,-8.995507812500037],[160.40751953125007,-9.140332031249969],[160.10537109375,-9.080761718749997],[160.1681640625001,-8.995507812500037]]],[[[159.18857421875006,-9.123535156250014],[159.03632812500004,-9.075],[159.12978515625,-8.99306640624998],[159.22841796875005,-9.029980468749955],[159.18857421875006,-9.123535156250014]]],[[[158.10791015625003,-8.684179687500034],[157.93759765625006,-8.73642578125002],[157.90927734375006,-8.565625],[158.10546874999997,-8.536816406250026],[158.10791015625003,-8.684179687500034]]],[[[157.38896484375002,-8.713476562499963],[157.2123046875,-8.565039062500006],[157.37949218750012,-8.420898437499943],[157.38896484375002,-8.713476562499963]]],[[[160.7494140625,-8.313964843750014],[160.99765625000006,-8.612011718749983],[160.94433593750003,-8.799023437499983],[161.15869140624997,-8.961816406250009],[161.36738281250004,-9.61123046874998],[160.77207031250012,-8.963867187499986],[160.7140625000001,-8.539257812499997],[160.59042968750006,-8.372753906249997],[160.7494140625,-8.313964843750014]]],[[[157.76347656250002,-8.242187499999957],[157.89843749999997,-8.506347656249943],[157.81933593750003,-8.612011718749983],[157.58789062500003,-8.445410156249963],[157.5580078125,-8.269921875],[157.30244140625004,-8.33330078124996],[157.21757812500002,-8.262792968749977],[157.490625,-7.965722656250037],[157.76347656250002,-8.242187499999957]]],[[[157.171875,-8.108105468749997],[156.95830078125002,-8.014355468749997],[157.02412109375004,-7.867871093749997],[157.18613281250006,-7.941210937500017],[157.171875,-8.108105468749997]]],[[[156.687890625,-7.92304687500004],[156.5109375000001,-7.707812499999974],[156.5609375,-7.574023437499989],[156.80908203124997,-7.722851562500026],[156.687890625,-7.92304687500004]]],[[[159.8791015625001,-8.534277343749949],[158.9440429687501,-8.04072265625004],[158.457421875,-7.544726562499974],[158.734375,-7.604296875000031],[159.43144531250002,-8.029003906249955],[159.84306640625002,-8.326953124999989],[159.8791015625001,-8.534277343749949]]],[[[155.83984374999997,-7.097167968750014],[155.67753906250002,-7.08896484375002],[155.73896484375004,-6.972949218750017],[155.83984374999997,-7.097167968750014]]],[[[157.48671875000005,-7.330371093750003],[157.44130859375,-7.425683593749966],[157.10156249999997,-7.323632812499966],[156.4525390625,-6.638281249999963],[157.03027343750003,-6.891992187499952],[157.19335937499997,-7.160351562499997],[157.48671875000005,-7.330371093750003]]]]},"properties":{"name":"Solomon Is.","childNum":16}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-12.526074218749926,7.436328125000017],[-12.951611328124926,7.570849609374989],[-12.615234374999972,7.63720703125],[-12.5125,7.582421875000037],[-12.526074218749926,7.436328125000017]]],[[[-10.758593749999989,9.385351562499991],[-10.682714843750006,9.289355468749974],[-10.687646484374937,9.261132812499994],[-10.749951171874926,9.12236328124996],[-10.747021484374955,9.095263671875045],[-10.726855468749932,9.081689453125023],[-10.615966796875,9.059179687499977],[-10.500537109375017,8.687548828125017],[-10.677343749999977,8.400585937499997],[-10.712109374999955,8.335253906250017],[-10.686962890624983,8.321679687500009],[-10.652636718749989,8.330273437499983],[-10.604003906249943,8.319482421874994],[-10.55771484374992,8.315673828125028],[-10.496435546874977,8.362109374999974],[-10.394433593749966,8.480957031250028],[-10.360058593749983,8.49550781249998],[-10.283203124999972,8.48515625],[-10.285742187499949,8.454101562499986],[-10.314648437499983,8.310839843750017],[-10.359814453124926,8.187939453125026],[-10.570849609374932,8.071142578125034],[-10.6474609375,7.759375],[-10.878076171874994,7.538232421874994],[-11.267675781249977,7.232617187499997],[-11.507519531249983,6.906542968750003],[-12.48564453124996,7.386279296875045],[-12.480273437499932,7.75327148437502],[-12.697607421874977,7.715869140625045],[-12.850878906249932,7.818701171875034],[-12.956933593749966,8.145312500000045],[-13.148974609374989,8.214599609375043],[-13.272753906249989,8.429736328124989],[-13.085009765624932,8.42475585937504],[-12.894091796874932,8.62978515624998],[-13.181835937499955,8.576904296875043],[-13.206933593749994,8.843115234375006],[-13.059472656249966,8.881152343750031],[-13.292675781249955,9.04921875],[-13.077294921874966,9.069628906249974],[-12.958789062499989,9.263330078124994],[-12.755859374999943,9.373583984374989],[-12.557861328125,9.704980468749994],[-12.427978515625028,9.898144531250011],[-12.142333984375,9.87539062499999],[-11.911083984374955,9.993017578124977],[-11.273632812499955,9.996533203124983],[-11.205664062499949,9.977734374999969],[-11.180859374999955,9.925341796875045],[-11.047460937499977,9.786328125000054],[-10.758593749999989,9.385351562499991]]]]},"properties":{"name":"Sierra Leone","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[-89.36259765624999,14.416015625],[-89.1205078125,14.370214843749991],[-88.51254882812499,13.978955078124997],[-88.504345703125,13.964208984374991],[-88.49765625,13.904541015625],[-88.482666015625,13.854248046875],[-88.44912109375,13.850976562499994],[-88.40849609374999,13.87539062499999],[-88.27622070312499,13.942675781250003],[-88.151025390625,13.987353515625003],[-87.99101562499999,13.879638671875],[-87.8919921875,13.894970703124997],[-87.80224609375,13.889990234374991],[-87.7314453125,13.841064453125],[-87.71533203125,13.812695312499997],[-87.781884765625,13.521386718749994],[-87.930859375,13.1806640625],[-88.68564453124999,13.281494140625],[-88.51201171874999,13.183935546874991],[-89.80419921875,13.560107421875003],[-90.09521484375,13.736523437499997],[-90.04814453124999,13.904052734375],[-89.54716796874999,14.241259765625003],[-89.5736328125,14.390087890624997],[-89.36259765624999,14.416015625]]]},"properties":{"name":"El Salvador","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-56.26708984374997,46.838476562500034],[-56.38476562499994,46.81943359375006],[-56.36464843749994,47.09897460937498],[-56.26708984374997,46.838476562500034]]]},"properties":{"name":"St. Pierre and Miquelon","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[6.659960937499989,0.120654296874989],[6.51972656250004,0.066308593750023],[6.468164062499994,0.22734375],[6.68691406250008,0.404394531249977],[6.75,0.24345703124996],[6.659960937499989,0.120654296874989]]],[[[7.423828125,1.567724609375006],[7.330664062500034,1.603369140624991],[7.414453125000051,1.699121093750037],[7.423828125,1.567724609375006]]]]},"properties":{"name":"São Tomé and Principe","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[-54.03422851562499,3.62939453125],[-54.00957031249999,3.448535156249989],[-54.06318359375,3.353320312499989],[-54.18803710937499,3.178759765624989],[-54.203125,3.13818359375],[-54.17070312499999,2.993603515624997],[-54.18808593749999,2.874853515624991],[-54.1955078125,2.81787109375],[-54.256738281249994,2.713720703124991],[-54.402001953124994,2.461523437499991],[-54.53593749999999,2.343310546874989],[-54.56840820312499,2.342578124999989],[-54.604736328125,2.335791015624991],[-54.61625976562499,2.326757812499991],[-54.661865234375,2.327539062499994],[-54.697412109374994,2.359814453124997],[-54.72221679687499,2.441650390625],[-54.87607421874999,2.450390625],[-54.92656249999999,2.497363281249989],[-54.968408203124994,2.54833984375],[-54.978662109374994,2.59765625],[-55.005810546875,2.59296875],[-55.0703125,2.54833984375],[-55.11411132812499,2.539208984374994],[-55.1876953125,2.547509765624994],[-55.286035156249994,2.499658203124994],[-55.343994140625,2.48876953125],[-55.38535156249999,2.440625],[-55.73056640624999,2.406152343749994],[-55.957470703125,2.520458984374997],[-55.99350585937499,2.497509765624997],[-56.02036132812499,2.392773437499997],[-56.0451171875,2.364404296874994],[-56.087792968749994,2.34130859375],[-56.12939453125,2.299511718749997],[-56.1376953125,2.259033203125],[-56.073632812499994,2.236767578124997],[-56.02006835937499,2.158154296874997],[-55.96196289062499,2.095117187499994],[-55.91533203124999,2.03955078125],[-55.921630859375,1.976660156249991],[-55.929638671875,1.8875],[-56.01992187499999,1.842236328124997],[-56.4828125,1.942138671875],[-56.704345703125,2.036474609374991],[-57.19736328124999,2.853271484375],[-57.303662109375,3.377099609374994],[-57.646728515625,3.39453125],[-58.05429687499999,4.101660156249991],[-57.84599609374999,4.668164062499997],[-57.91704101562499,4.820410156249991],[-57.711083984374994,4.991064453124991],[-57.331005859375,5.020166015624994],[-57.20981445312499,5.195410156249991],[-57.3185546875,5.335351562499994],[-57.194775390625,5.5484375],[-56.96982421874999,5.992871093749997],[-56.235595703125,5.885351562499991],[-55.897607421874994,5.699316406249991],[-55.909912109375,5.892626953124989],[-55.648339843749994,5.985888671874989],[-54.83369140625,5.988330078124989],[-54.05419921875,5.807910156249989],[-54.08046875,5.502246093749989],[-54.4796875,4.836523437499991],[-54.350732421874994,4.054101562499994],[-54.03422851562499,3.62939453125]]]},"properties":{"name":"Suriname","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[22.538671875,49.072705078125],[22.52412109375001,49.031396484374994],[22.389453125000017,48.873486328125],[22.295214843750017,48.685839843749996],[22.142871093750017,48.568505859374994],[22.1318359375,48.405322265624996],[21.766992187500023,48.3380859375],[21.45136718750001,48.55224609375],[20.490039062500017,48.526904296874996],[20.333789062500017,48.295556640624994],[19.95039062500001,48.146630859374994],[19.625390625000023,48.223095703125],[18.791894531250023,48.000292968749996],[18.72421875,47.787158203124996],[17.76191406250001,47.770166015624994],[17.147363281250023,48.00595703125],[16.86542968750001,48.3869140625],[16.953125,48.598828125],[17.135644531250023,48.841064453125],[17.75849609375001,48.888134765625],[18.0859375,49.06513671875],[18.160937500000017,49.257373046874996],[18.83222656250001,49.510791015624996],[19.1494140625,49.4],[19.44160156250001,49.597705078124996],[19.77392578125,49.37216796875],[19.756640625000017,49.204394531249996],[20.0576171875,49.181298828124994],[20.36298828125001,49.38525390625],[20.868457031250017,49.314697265625],[21.079394531250017,49.418261718749996],[21.6396484375,49.411962890625],[22.020117187500006,49.209521484374996],[22.473046875000023,49.081298828125],[22.538671875,49.072705078125]]]},"properties":{"name":"Slovakia","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[16.516210937500006,46.499902343749994],[16.427636718750023,46.5244140625],[16.321191406250023,46.534619140625],[16.1064453125,46.382226562499994],[15.608984375,46.171923828124996],[15.592578125000017,46.139990234375],[15.596875,46.109228515625],[15.675585937500017,45.983691406249996],[15.652148437500017,45.862158203125],[15.277050781250011,45.7326171875],[15.353710937500011,45.659912109375],[15.283593750000023,45.5796875],[15.291210937500011,45.541552734374996],[15.32666015625,45.502294921875],[15.339453125,45.467041015625],[15.242089843750023,45.44140625],[15.110449218750006,45.45078125],[14.95458984375,45.499902343749994],[14.793066406250006,45.47822265625],[14.649511718750006,45.571484375],[14.591796875,45.651269531249994],[14.56884765625,45.6572265625],[14.548448660714302,45.628388671875],[14.507586495535731,45.59039341517857],[14.42734375,45.505761718749994],[14.369921875000017,45.4814453125],[13.878710937500017,45.428369140624994],[13.577929687500017,45.516894531249996],[13.8447265625,45.59287109375],[13.831152343750006,45.680419921875],[13.663476562500023,45.7919921875],[13.6005859375,45.979785156249996],[13.509179687500023,45.973779296874994],[13.487695312500023,45.987109375],[13.480273437500017,46.009228515625],[13.486425781250006,46.03955078125],[13.548046875000011,46.089111328125],[13.616601562500023,46.133105468749996],[13.634960937500011,46.157763671874996],[13.632519531250011,46.177050781249996],[13.420996093750006,46.212304687499994],[13.399511718750006,46.317529296874994],[13.563281250000017,46.415087890624996],[13.637109375000023,46.448535156249996],[13.6796875,46.462890625],[13.7,46.520263671875],[14.5498046875,46.399707031249996],[14.893261718750011,46.605908203125],[15.957617187500006,46.677636718749994],[16.093066406250017,46.86328125],[16.283593750000023,46.857275390625],[16.516210937500006,46.499902343749994]]]},"properties":{"name":"Slovenia","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[16.52851562500001,56.29052734375],[16.431640625,56.24375],[16.41230468750004,56.568994140624994],[17.02539062499997,57.345068359375006],[16.52851562500001,56.29052734375]]],[[[19.076464843750045,57.8359375],[18.813867187500023,57.70620117187502],[18.907910156250068,57.39833984375002],[18.146386718749994,56.920507812500006],[18.285351562500068,57.08320312500001],[18.136523437500045,57.55664062500003],[18.53740234374999,57.83056640625006],[18.90058593750001,57.91547851562504],[19.076464843750045,57.8359375]]],[[[19.156347656250063,57.92260742187497],[19.086523437500034,57.86499023437506],[19.134863281250034,57.98134765625002],[19.331445312500023,57.962890625],[19.156347656250063,57.92260742187497]]],[[[24.15546875000004,65.80527343750006],[23.102343750000074,65.73535156250003],[22.400976562500006,65.86210937499999],[22.254003906250006,65.59755859375002],[21.565527343750063,65.40810546874997],[21.609179687500074,65.261376953125],[21.410351562500068,65.31743164062505],[21.57392578125001,65.12578124999999],[21.138183593750057,64.80869140625006],[21.519628906250034,64.46308593749998],[20.76269531250003,63.86782226562505],[18.60644531250003,63.17827148437499],[18.31289062500008,62.996386718750045],[18.46308593750004,62.895849609375006],[18.170019531250034,62.789355468750074],[17.906640625000023,62.88676757812502],[18.037304687500068,62.60053710937498],[17.834472656250057,62.50273437500002],[17.410253906250063,62.508398437500034],[17.633691406249994,62.23300781250006],[17.374511718750057,61.866308593750034],[17.465429687500006,61.68447265625005],[17.196386718750006,61.72456054687504],[17.13076171875005,61.57573242187499],[17.25097656250003,60.70078125],[17.6611328125,60.53515625000003],[17.955761718750068,60.589794921874955],[18.85273437500001,60.02587890625],[18.970507812500045,59.757226562499994],[17.964257812500023,59.359375],[18.56025390625004,59.39448242187498],[18.285351562500068,59.109375],[16.978125,58.65415039062506],[16.214257812500023,58.636669921874955],[16.92382812499997,58.49257812499999],[16.651953125,58.43432617187503],[16.65224609375008,57.50068359374998],[16.348730468750063,56.70927734374996],[15.826660156250028,56.12495117187501],[14.782031250000017,56.16191406250002],[14.754785156250051,56.03315429687498],[14.401953125000034,55.97675781250004],[14.21503906250004,55.83261718749998],[14.341699218749994,55.52773437500002],[14.17373046875008,55.396630859374966],[12.885839843750063,55.41137695312506],[12.973925781250074,55.748144531250006],[12.471191406250057,56.29052734375],[12.801660156250051,56.263916015625],[12.65644531250004,56.44057617187502],[12.857421875000028,56.45239257812503],[12.883691406250051,56.61772460937496],[12.421484375000034,56.906396484374966],[11.449316406250063,58.118359374999955],[11.43154296875008,58.339990234374994],[11.24824218750004,58.369140625],[11.14716796875004,58.98862304687498],[11.19580078125,59.07827148437505],[11.388281250000063,59.036523437499966],[11.470703125000057,58.909521484375034],[11.64277343750004,58.92607421875002],[11.798144531250074,59.28989257812498],[11.680761718750034,59.59228515625003],[12.486132812500074,60.10678710937506],[12.588671874999989,60.450732421875045],[12.29414062500004,61.00268554687506],[12.706054687500028,61.059863281250074],[12.88076171875008,61.35229492187506],[12.155371093750006,61.720751953125045],[12.303515625000074,62.28559570312501],[11.999902343750051,63.29169921875001],[12.175195312500051,63.595947265625],[12.792773437500017,64],[13.203515625000023,64.07509765625],[13.960546875000063,64.01401367187498],[14.141210937500006,64.17353515624998],[14.077636718750028,64.464013671875],[13.650292968750023,64.58154296874997],[14.47968750000004,65.30146484374998],[14.543261718750045,66.12934570312498],[15.483789062500051,66.30595703124999],[15.422949218750006,66.48984374999998],[16.40351562500004,67.05498046875002],[16.12744140625,67.42583007812507],[16.783593750000023,67.89501953125],[17.324609375000023,68.10380859374999],[17.91669921875001,67.96489257812502],[18.303027343750045,68.55541992187497],[19.969824218750063,68.35639648437501],[20.348046875000023,68.84873046875003],[20.116699218750057,69.02089843750005],[20.622167968750006,69.036865234375],[21.99746093750005,68.52060546874998],[22.854101562500034,68.36733398437502],[23.63886718750004,67.95439453125002],[23.454882812500045,67.46025390625007],[23.733593750000068,67.42290039062499],[23.64150390625005,67.12939453124997],[23.988574218750045,66.81054687500003],[23.700292968750034,66.25263671874998],[24.15546875000004,65.80527343750006]]]]},"properties":{"name":"Sweden","childNum":4}},{"geometry":{"type":"Polygon","coordinates":[[[31.9482421875,-25.957617187500006],[32.060546875,-26.018359375],[32.04140625000002,-26.28125],[32.10595703125,-26.52001953125],[32.112890625,-26.839453125],[32.02480468750002,-26.811132812500006],[31.994726562500006,-26.817480468750006],[31.967187500000023,-26.96064453125001],[31.946093750000017,-27.173632812500003],[31.958398437500023,-27.30585937500001],[31.742578125000023,-27.30996093750001],[31.469531250000017,-27.295507812500006],[31.274023437500006,-27.238378906250006],[31.063378906250023,-27.1123046875],[30.938085937500006,-26.915820312500003],[30.88330078125,-26.79238281250001],[30.806738281250006,-26.785253906250006],[30.794335937500023,-26.764257812500006],[30.803320312500006,-26.41347656250001],[31.08808593750001,-25.98066406250001],[31.207324218750017,-25.843359375],[31.33515625000001,-25.75556640625001],[31.382617187500017,-25.74296875],[31.415136718750006,-25.74658203125],[31.921679687500017,-25.96875],[31.9482421875,-25.957617187500006]]]},"properties":{"name":"Swaziland","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[55.54033203125002,-4.693066406250011],[55.54296875,-4.785546875],[55.383398437500006,-4.609277343750009],[55.45576171875001,-4.558789062500011],[55.54033203125002,-4.693066406250011]]]},"properties":{"name":"Seychelles","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[42.358984375,37.10859375],[41.78857421875,36.59716796875],[41.41679687500002,36.5146484375],[41.295996093750006,36.383349609374996],[41.354101562500006,35.640429687499996],[41.19472656250002,34.768994140625],[40.98701171875001,34.429052734375],[38.773535156250006,33.372216796874994],[36.818359375,32.317285156249994],[36.3720703125,32.3869140625],[35.78730468750001,32.734912109374996],[35.91347656250002,32.94960937499999],[35.869140625,33.43173828125],[36.03447265625002,33.58505859375],[35.98613281250002,33.75263671875],[36.36503906250002,33.83935546875],[36.27783203125,33.92529296875],[36.5849609375,34.221240234374996],[36.50439453125,34.432373046875],[36.32988281250002,34.499609375],[36.383886718750006,34.65791015625],[35.97626953125001,34.629199218749996],[35.902441406250006,35.420703125],[35.76445312500002,35.571582031249996],[35.83964843750002,35.84921875],[35.892675781250006,35.916552734374996],[35.96757812500002,35.910058593749994],[36.12734375000002,35.831445312499994],[36.15361328125002,35.833886718749994],[36.34755859375002,36.003515625],[36.37539062500002,36.171240234375],[36.63671875,36.233984375],[36.64140625000002,36.263525390625],[36.5375,36.45742187499999],[36.54667968750002,36.50634765625],[36.596875,36.7013671875],[36.62841796875,36.777685546875],[36.65859375000002,36.802539062499996],[36.77656250000001,36.79267578125],[36.94179687500002,36.7583984375],[36.9853515625,36.702392578125],[37.06621093750002,36.652636718749996],[37.43632812500002,36.643310546875],[37.523535156250006,36.6783203125],[37.7203125,36.743701171874996],[37.90664062500002,36.79462890625],[38.19169921875002,36.9015625],[38.7666015625,36.693115234375],[38.90644531250001,36.694677734375],[39.1083984375,36.680566406249994],[39.35664062500001,36.681591796875],[39.50146484375,36.70224609375],[39.6865234375,36.738623046875],[40.01640625000002,36.826074218749994],[40.705664062500006,37.097705078124996],[41.886816406250006,37.156396484374994],[42.05986328125002,37.2060546875],[42.16787109375002,37.288623046874996],[42.202734375,37.29726562499999],[42.24755859375,37.2822265625],[42.2685546875,37.2765625],[42.31289062500002,37.22958984375],[42.358984375,37.10859375]]]},"properties":{"name":"Syria","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-72.3328125,21.85136718749999],[-72.14433593750002,21.79272460937503],[-72.33544921874994,21.758007812499983],[-72.3328125,21.85136718749999]]]},"properties":{"name":"Turks and Caicos Is.","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[23.980273437500017,19.496630859375003],[23.970800781250006,15.721533203124991],[23.10517578125001,15.702539062499994],[22.933886718750017,15.533105468749994],[22.93232421875001,15.162109375],[22.6708984375,14.722460937500003],[22.38154296875001,14.550488281249997],[22.53857421875,14.161865234375],[22.1064453125,13.7998046875],[22.228125,13.32958984375],[21.825292968750006,12.79052734375],[21.928125,12.678125],[22.352343750000017,12.660449218749989],[22.472460937500017,12.067773437499994],[22.580957031250023,11.990136718749994],[22.591113281250017,11.579882812499989],[22.922656250000017,11.344873046874994],[22.86005859375001,10.919677734375],[22.49384765625001,10.996240234374994],[21.771484375,10.642822265625],[21.682714843750006,10.289843749999989],[20.773242187500017,9.405664062499994],[20.342089843750017,9.127099609374994],[18.95625,8.938867187499994],[18.886035156250017,8.836035156249991],[19.108691406250017,8.656152343749994],[18.56416015625001,8.0458984375],[17.6494140625,7.98359375],[16.784765625,7.550976562499997],[16.545312500000023,7.865478515625],[16.37890625,7.683544921874997],[15.957617187500006,7.507568359375],[15.480078125,7.523779296874991],[15.5498046875,7.787890624999989],[15.1162109375,8.557324218749997],[14.332324218750017,9.20351562499999],[13.977246093750011,9.691552734374994],[14.243261718750006,9.979736328125],[15.654882812500006,10.0078125],[15.276074218750011,10.357373046874997],[15.132226562500023,10.648486328124989],[15.029882812500006,11.11367187499999],[15.08125,11.845507812499989],[14.847070312500023,12.502099609374994],[14.461718750000017,13.021777343749989],[14.244824218750011,13.07734375],[14.06396484375,13.07851562499999],[13.932324218750011,13.258496093749997],[13.606347656250023,13.70458984375],[13.505761718750023,14.134423828124994],[13.4482421875,14.380664062500003],[14.367968750000017,15.750146484374994],[15.474316406250011,16.908398437499997],[15.735058593750011,19.904052734375],[15.963183593750017,20.34619140625],[15.587109375000011,20.733300781249994],[15.607324218750023,20.954394531250003],[15.181835937500011,21.523388671874997],[14.97900390625,22.99619140624999],[15.984082031250011,23.445214843749994],[20.14765625000001,21.38925781249999],[23.980273437500017,19.496630859375003]]]},"properties":{"name":"Chad","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[0.900488281250006,10.993261718749991],[0.763378906250011,10.386669921874997],[1.330078125,9.996972656249994],[1.3857421875,9.361669921874991],[1.600195312500006,9.050048828125],[1.624707031250011,6.997314453125],[1.530957031250011,6.992431640625],[1.777929687500006,6.294628906249997],[1.62265625,6.216796875],[1.187207031250011,6.089404296874989],[0.736914062500006,6.452587890624997],[0.525585937500011,6.850927734374991],[0.634765625,7.353662109374994],[0.5,7.546875],[0.686328125000017,8.354882812499994],[0.37255859375,8.75927734375],[0.48876953125,8.851464843749994],[0.525683593750017,9.398486328124989],[0.2333984375,9.463525390624994],[0.342578125000017,9.604150390624994],[0.264550781250023,9.644726562499997],[0.380859375,10.291845703124991],[-0.08632812499999,10.673046875],[0.009423828125023,11.02099609375],[-0.068603515625,11.115625],[0.49267578125,10.954980468749994],[0.900488281250006,10.993261718749991]]]},"properties":{"name":"Togo","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[98.40908203125005,7.90205078125004],[98.2962890625,7.776074218750054],[98.32207031250007,8.166308593749974],[98.4349609375,8.085644531249969],[98.40908203125005,7.90205078125004]]],[[[100.070703125,9.58603515625002],[99.96240234375003,9.421630859375],[99.93955078125006,9.559960937500037],[100.070703125,9.58603515625002]]],[[[102.42675781250003,11.988720703125026],[102.30195312500004,11.98081054687502],[102.27744140625006,12.151855468750043],[102.42675781250003,11.988720703125026]]],[[[100.12246093750005,20.316650390625057],[100.11494140625004,20.257666015625034],[100.13974609375012,20.245410156250017],[100.31796875000006,20.38588867187505],[100.51953125000003,20.17792968750004],[100.39765625000004,19.756103515625],[100.51357421875005,19.553466796875],[101.21191406249997,19.54833984375003],[101.22080078125006,19.486621093750074],[101.19755859375007,19.327929687500074],[101.2863281250001,18.977148437500006],[101.04697265625012,18.441992187500063],[101.05058593750002,18.407031250000045],[101.1375,18.28686523437497],[101.14394531250005,18.14262695312499],[100.90849609375002,17.583886718750023],[100.95585937500002,17.541113281250006],[101.10517578125004,17.47954101562499],[101.16748046874997,17.49902343749997],[101.41367187500012,17.71875],[101.55507812500005,17.812353515625034],[101.56367187500004,17.82050781250001],[101.6875,17.889404296875],[101.77480468750005,18.03339843750004],[101.81865234375002,18.06464843750001],[101.87548828124997,18.046435546875017],[101.94746093750004,18.081494140624983],[102.03457031250005,18.169824218750023],[102.10146484375,18.210644531249983],[102.14824218750002,18.20385742187503],[102.35185546875002,18.045947265625017],[102.45878906250002,17.984619140625057],[102.55253906250007,17.96508789062497],[102.61679687500006,17.833349609375034],[102.66064453124997,17.817968750000034],[102.680078125,17.824121093750023],[103.05136718750006,18.02851562500001],[103.0912109375,18.13823242187499],[103.14853515625006,18.221728515625045],[103.19970703124997,18.259472656249983],[103.26318359374997,18.27846679687505],[103.27958984375002,18.304980468750017],[103.24892578125,18.338964843750034],[103.25175781250002,18.373486328124955],[103.2882812500001,18.408398437499955],[103.36699218750007,18.42333984374997],[103.48798828125004,18.418164062499983],[103.62968750000002,18.38256835937503],[103.79228515625002,18.316503906249977],[103.89882812500005,18.295312500000023],[103.949609375,18.31899414062505],[104.04873046875005,18.216699218749994],[104.19619140625005,17.988378906250006],[104.32265625,17.815820312500023],[104.428125,17.69897460937503],[104.7396484375,17.461669921875],[104.81601562500012,17.30029296874997],[104.75898437500004,17.0771484375],[104.7435546875,16.884375],[104.75058593750012,16.647558593750063],[104.81933593750003,16.46606445312503],[105.04716796875007,16.160253906249977],[105.14873046875007,16.09355468749999],[105.33066406250006,16.037890625000017],[105.40625,15.987451171875051],[105.39892578124997,15.829882812500017],[105.62207031250003,15.699951171875],[105.641015625,15.656542968750045],[105.6388671875001,15.585937500000057],[105.615625,15.488281250000057],[105.49042968750004,15.256591796875],[105.49042968750004,15.127587890625009],[105.5333984375001,15.041601562499991],[105.54667968750002,14.932470703124963],[105.52304687500012,14.843310546875003],[105.49736328125002,14.590673828124963],[105.47558593750003,14.530126953124977],[105.42265625000007,14.471630859375054],[105.34218750000005,14.416699218750054],[105.24365234375003,14.367871093750054],[105.1833007812501,14.346240234374989],[105.16914062500004,14.336083984374966],[105.12597656250003,14.280957031250011],[105.07412109375005,14.227441406250037],[104.77900390625004,14.427832031250006],[103.19941406250004,14.332617187499977],[102.90927734375006,14.136718750000028],[102.546875,13.585693359375043],[102.33632812500005,13.560302734375014],[102.49960937500012,12.669970703125003],[102.75566406250002,12.42626953125],[102.73662109375007,12.089794921875011],[102.93388671875002,11.706689453125037],[102.594140625,12.203027343749994],[102.54023437500004,12.109228515624977],[101.83574218750002,12.640380859375014],[100.89775390625007,12.653808593749986],[100.96269531250007,13.431982421874991],[100.60292968750005,13.568164062500017],[100.23564453125002,13.48447265625002],[99.99052734375007,13.243457031250031],[100.08994140625006,13.045654296874972],[99.96396484375006,12.690039062500006],[99.98906250000007,12.170800781249994],[99.16503906250003,10.319824218750028],[99.25390625000003,9.265234375000034],[99.83554687500012,9.288378906250031],[99.98955078125007,8.589208984374977],[100.129296875,8.428076171875006],[100.16347656250005,8.508398437500034],[100.27939453125006,8.268505859375011],[100.54521484375002,7.226904296874991],[100.43935546875005,7.280761718750043],[100.38037109375003,7.541503906250043],[100.28378906250006,7.551513671875043],[100.25664062500002,7.774902343749986],[100.16074218750012,7.599267578124994],[100.4235351562501,7.18784179687502],[101.01787109375002,6.860937500000034],[101.49794921875005,6.865283203125031],[102.10107421874997,6.242236328125031],[101.87363281250012,5.825292968749991],[101.67841796875004,5.778808593750028],[101.5560546875,5.907763671875003],[101.1139648437501,5.636767578125045],[100.98164062500004,5.771044921875045],[101.05351562500002,6.242578125],[100.87392578125,6.24541015624996],[100.75449218750012,6.460058593749991],[100.3454101562501,6.549902343750006],[100.26142578125004,6.682714843749963],[100.11914062499997,6.441992187500048],[99.69599609375004,6.87666015625004],[99.72031250000012,7.106201171875],[99.55302734375002,7.218798828125031],[99.59697265625002,7.355615234375009],[99.35859375000004,7.372216796875023],[99.26367187499997,7.619042968750037],[99.07763671874997,7.718066406250045],[99.05107421875002,7.887841796874994],[98.78867187500012,8.059814453125028],[98.703515625,8.256738281250009],[98.57919921875006,8.344287109374989],[98.42099609375006,8.17822265625],[98.30546875000007,8.226220703125009],[98.24179687500006,8.767871093750045],[98.70253906250005,10.19038085937504],[98.7572265625,10.660937499999974],[99.1901367187501,11.105273437499989],[99.61474609374997,11.781201171875026],[99.40507812500002,12.547900390625003],[99.12392578125,13.030761718750043],[99.13681640625006,13.716699218749994],[98.57001953125004,14.359912109375031],[98.20214843749997,14.97592773437502],[98.19101562500012,15.204101562499972],[98.55693359375007,15.367675781249986],[98.59238281250006,16.05068359375005],[98.81796875000012,16.180810546874994],[98.88828125000006,16.351904296875034],[98.83544921875003,16.417578125],[98.66074218750006,16.330419921875006],[98.4388671875,16.975683593750034],[97.7064453125,17.79711914062503],[97.63222656250005,18.290332031250074],[97.37392578125,18.51796875],[97.74589843750002,18.58818359374999],[97.816796875,19.459960937500057],[98.01503906250005,19.74951171874997],[98.37128906250004,19.68916015625004],[98.9166992187501,19.77290039062504],[99.07421875000003,20.09936523437503],[99.48593750000006,20.14985351562501],[99.45888671875005,20.363037109375],[99.72011718750005,20.32543945312497],[99.8903320312501,20.424414062499977],[99.9542968750001,20.415429687500023],[100.0036132812501,20.37958984375001],[100.12246093750005,20.316650390625057]]]]},"properties":{"name":"Thailand","childNum":4}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[70.66416015625,39.85546875],[70.55957031250003,39.790917968749994],[70.48925781250003,39.86303710937503],[70.48281250000005,39.88271484375005],[70.49775390625004,39.88242187499998],[70.56708984375004,39.86660156250005],[70.66416015625,39.85546875]]],[[[70.95800781250003,40.238867187500034],[70.59921875,39.974511718749994],[69.96679687499997,40.202246093750034],[69.46875,40.020751953125],[69.47099609375002,39.990625],[69.43193359375007,39.909765625000034],[69.36542968750004,39.94707031250002],[69.30722656250006,39.968554687500045],[69.27880859374997,39.91777343749999],[69.24472656250006,39.82709960937498],[69.29765625000007,39.52480468750005],[70.50117187500004,39.58735351562501],[70.79931640625003,39.39472656250001],[71.4703125,39.60366210937502],[71.50302734375006,39.58217773437502],[71.51738281250002,39.55385742187502],[71.50585937499997,39.51708984374997],[71.5033203125,39.47880859374999],[71.73222656250002,39.422998046874994],[71.77861328125007,39.27797851562502],[72.04277343750002,39.352148437500034],[72.08417968750004,39.310644531250034],[72.14736328125005,39.26074218749997],[72.22998046874997,39.20751953124997],[72.63994140625002,39.385986328125],[73.10927734375,39.36191406249998],[73.2349609375,39.37456054687499],[73.3361328125001,39.41235351562506],[73.38740234375004,39.442724609375034],[73.4704101562501,39.46059570312502],[73.63164062500007,39.44887695312502],[73.63632812500006,39.396679687499955],[73.60732421875,39.229199218749955],[73.8052734375,38.968652343749994],[73.69609375000007,38.85429687499996],[73.80166015625,38.60688476562501],[74.02558593750004,38.53984375000002],[74.27744140625,38.659765625000034],[74.81230468750002,38.46030273437498],[74.8942382812501,37.60141601562498],[75.11875,37.38569335937498],[74.89130859375004,37.231640624999955],[74.875390625,37.24199218750002],[74.83046875,37.28593750000002],[74.73056640625006,37.35703125],[74.659375,37.39448242187501],[74.34902343750005,37.41875],[74.25966796875005,37.41542968750002],[74.20351562500005,37.37246093750005],[74.16708984375,37.32944335937498],[73.74960937500006,37.23178710937498],[73.6535156250001,37.239355468750034],[73.62753906250006,37.261572265625006],[73.71728515625003,37.32944335937498],[73.7337890625,37.37578125000002],[73.72060546875,37.41875],[73.65712890625005,37.43046875],[73.6046875000001,37.44604492187503],[73.48134765625,37.4716796875],[73.38291015625006,37.462255859375034],[73.21113281250004,37.40849609375002],[72.89550781250003,37.26752929687498],[72.65742187500004,37.029052734375],[71.665625,36.696923828124994],[71.530859375,36.845117187499994],[71.43291015625007,37.12753906249998],[71.5822265625001,37.91010742187498],[71.55195312500004,37.93315429687496],[71.48779296874997,37.93188476562497],[71.38964843750003,37.90629882812502],[71.31992187500006,37.90185546875],[71.27851562500004,37.91840820312498],[71.33271484375004,38.170263671875034],[71.25585937499997,38.306982421875006],[70.7359375,38.42255859375001],[70.41777343750002,38.075439453125],[70.21464843750002,37.92441406250006],[70.19941406250004,37.88603515624996],[70.25498046875006,37.76538085937497],[70.25146484374997,37.66416015625006],[70.18867187500004,37.58247070312501],[70.11982421875004,37.54350585937499],[69.9849609375,37.566162109375],[69.8208984375,37.60957031250004],[69.62578125000002,37.59404296874999],[69.49208984375,37.55307617187498],[69.42011718750004,37.486718749999966],[69.39921875000007,37.39931640625002],[69.42968749999997,37.290869140625034],[69.414453125,37.20776367187497],[69.35380859375007,37.15004882812502],[69.3039062500001,37.11694335937503],[69.26484375000004,37.1083984375],[69.18017578125003,37.158300781250034],[68.96044921875003,37.32504882812498],[68.9118164062501,37.33393554687501],[68.88525390624997,37.32807617187498],[68.85537109375005,37.31684570312501],[68.83847656250006,37.30283203124998],[68.82373046874997,37.27070312500001],[68.78203125000002,37.25800781250001],[68.7232421875,37.26801757812501],[68.6691406250001,37.258398437500006],[68.3869140625001,37.1375],[68.29951171875004,37.08842773437502],[68.28476562500006,37.036328124999955],[68.2609375000001,37.01308593750002],[68.2121093750001,37.02153320312496],[68.0677734375,36.949804687500006],[67.95800781249997,36.972021484375006],[67.83447265624997,37.06420898437506],[67.75898437500004,37.172216796875034],[67.7980468750001,37.244970703125006],[67.81435546875005,37.48701171875004],[68.3502929687501,38.211035156250006],[68.08720703125002,38.47353515625002],[68.13251953125004,38.927636718749966],[67.69443359375006,38.99462890625003],[67.64833984375005,39.13105468750004],[67.3576171875001,39.216699218749994],[67.426171875,39.46557617187497],[67.71904296875007,39.62138671875002],[68.46328125,39.53671874999998],[68.63896484375007,39.8388671875],[68.86875,39.90747070312503],[68.80468750000003,40.05034179687499],[68.9720703125,40.08994140624998],[68.63066406250007,40.16708984374998],[69.27490234374997,40.19809570312498],[69.20625,40.566552734374994],[69.35722656250002,40.76738281249996],[69.71289062500003,40.65698242187503],[70.40195312500006,41.03510742187498],[70.75107421875006,40.721777343750006],[70.37158203125003,40.38413085937506],[70.653125,40.201171875],[70.95800781250003,40.238867187500034]]]]},"properties":{"name":"Tajikistan","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[66.52226562500007,37.34848632812506],[66.471875,37.3447265625],[65.7650390625,37.56914062499996],[65.55498046875002,37.25117187500004],[65.30361328125005,37.24677734375001],[65.08964843750007,37.237939453124994],[64.9515625,37.19355468750001],[64.81630859375005,37.13208007812503],[64.7824218750001,37.05927734375001],[64.60253906250003,36.554541015625034],[64.5658203125,36.427587890625034],[64.51103515625002,36.34067382812498],[64.184375,36.14892578125],[63.8625,36.012353515624994],[63.12998046875006,35.84619140624997],[63.169726562500074,35.678125],[63.05664062500003,35.44580078125003],[62.98027343750002,35.40917968750003],[62.85800781250006,35.34965820312499],[62.688085937500006,35.25532226562504],[62.3078125000001,35.17080078125005],[62.08964843750002,35.3796875],[61.62099609375005,35.43232421875004],[61.34472656249997,35.62949218750006],[61.26201171875002,35.61958007812498],[61.25214843750004,35.86762695312498],[61.15292968750006,35.97675781250001],[61.212011718750006,36.190527343750034],[61.11962890625003,36.64257812500003],[60.34130859375003,36.63764648437501],[60.06279296875002,36.962890625],[59.454980468749994,37.25283203125002],[59.30175781249997,37.51064453125005],[58.81542968750003,37.683496093749994],[58.261621093749994,37.665820312500045],[57.35371093750004,37.97333984374998],[57.1935546875001,38.216406250000034],[56.440625,38.249414062499994],[56.272070312500006,38.080419921875034],[55.38085937500003,38.051123046875034],[54.90009765625004,37.77792968750006],[54.6994140625001,37.47016601562498],[53.91416015625006,37.34355468750002],[53.86865234375003,38.949267578125045],[53.70458984375003,39.209570312500034],[53.33632812500005,39.34082031250006],[53.15664062499999,39.26499023437506],[53.23564453125002,39.608544921874966],[53.603125,39.546972656250034],[53.472265625,39.66879882812498],[53.48730468749997,39.909375],[52.9875,39.98759765625002],[53.03554687500005,39.7744140625],[52.80468749999997,40.054003906250045],[52.73369140625002,40.39873046875002],[52.943457031250006,41.03808593750006],[53.1452148437501,40.82495117187497],[53.61523437500003,40.818505859374994],[53.87001953125005,40.64868164062503],[54.37734375,40.693261718749966],[54.319433593750006,40.83457031249998],[54.68505859375003,40.873046875],[54.70371093750006,41.071142578125034],[54.094824218750006,41.51938476562506],[53.80468749999997,42.11762695312498],[53.16416015625006,42.09379882812502],[52.97001953125002,41.97622070312505],[52.81484375,41.711816406249994],[52.850390625000074,41.20029296875006],[52.4938476562501,41.780371093750034],[53.0558593750001,42.14775390624999],[54.120996093749994,42.335205078125],[54.85380859375002,41.965185546875006],[55.434375,41.296289062499994],[55.97744140625005,41.32221679687504],[57.01796875,41.26347656249996],[57.11884765625004,41.35029296874998],[56.96406250000004,41.856542968750006],[57.290625,42.123779296875],[57.814257812500074,42.18984375000005],[58.02890625,42.48764648437506],[58.474414062500074,42.29936523437496],[58.15156250000004,42.628076171874966],[58.477148437500006,42.66284179687503],[58.5890625000001,42.778466796874966],[59.35429687500002,42.32329101562496],[59.98515625000002,42.21171875],[59.94179687499999,41.97353515625002],[60.20078125000006,41.803125],[60.07558593750005,41.759667968749966],[60.089648437500074,41.39941406250003],[60.454980468749994,41.221630859374955],[61.2423828125001,41.18920898437503],[61.496972656249994,41.276074218749955],[61.90283203124997,41.09370117187501],[62.48320312500002,39.97563476562496],[63.76367187500003,39.16054687499999],[64.3099609375,38.97729492187497],[65.612890625,38.23857421875002],[65.97119140624997,38.244238281250006],[66.60625,37.98671875000005],[66.52558593750004,37.785742187500034],[66.51132812500006,37.59916992187496],[66.51064453125,37.45869140625004],[66.52226562500007,37.34848632812506]]]},"properties":{"name":"Turkmenistan","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[124.0363281250001,-9.341601562500031],[124.44443359375012,-9.190332031250023],[124.28232421875012,-9.427929687500026],[124.0363281250001,-9.341601562500031]]],[[[125.06816406250002,-9.511914062499997],[124.96015625000004,-9.213769531250009],[125.10048828125,-9.189843750000023],[125.14902343750012,-9.042578125000034],[124.93681640625007,-9.053417968750026],[124.92226562500005,-8.942480468749977],[125.17802734375002,-8.647851562499994],[125.38183593749997,-8.575390624999983],[126.61972656250006,-8.459472656249986],[126.96640625000012,-8.315722656250017],[127.29609375000004,-8.424511718749969],[126.91523437500004,-8.715234374999966],[125.40800781250002,-9.275781250000023],[125.06816406250002,-9.511914062499997]]],[[[125.64609375000006,-8.139941406250003],[125.5794921875,-8.311816406250017],[125.50712890625007,-8.275097656249997],[125.64609375000006,-8.139941406250003]]]]},"properties":{"name":"Timor-Leste","childNum":3}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-175.1619140625,-21.169335937500023],[-175.07817382812496,-21.129003906249977],[-175.15659179687495,-21.26367187499997],[-175.36235351562496,-21.106835937499994],[-175.1619140625,-21.169335937500023]]],[[[-173.953515625,-18.63935546875001],[-174.06914062500002,-18.640234375],[-173.96806640624993,-18.565332031250023],[-173.953515625,-18.63935546875001]]]]},"properties":{"name":"Tonga","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[-61.012109374999966,10.134326171874989],[-61.906103515625006,10.069140625000031],[-61.49931640624999,10.268554687499972],[-61.47827148437497,10.603369140624977],[-61.65117187499993,10.718066406249974],[-60.917626953124966,10.84023437499999],[-61.03374023437502,10.669873046875026],[-61.012109374999966,10.134326171874989]]]},"properties":{"name":"Trinidad and Tobago","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[10.957617187500063,33.72207031250005],[10.722070312500051,33.738916015624994],[10.745214843750063,33.88867187500006],[11.017871093749989,33.82333984374998],[10.957617187500063,33.72207031250005]]],[[[11.278027343750068,34.753808593749994],[11.123632812500063,34.68168945312496],[11.254882812500057,34.82031250000006],[11.278027343750068,34.753808593749994]]],[[[10.274609375000011,31.684960937499994],[10.114941406250068,31.46376953125005],[10.216406250000063,30.78320312500003],[10.05976562500004,30.58007812500003],[9.932519531250051,30.42534179687496],[9.895019531250028,30.387304687500034],[9.51875,30.229394531249994],[9.224023437500023,31.373681640624994],[9.160253906250006,31.621337890625],[9.044042968750034,32.072363281250034],[8.333398437500051,32.54360351562502],[8.1125,33.055322265624994],[7.877246093750017,33.172119140625],[7.534375,33.717919921874994],[7.513867187500068,34.080517578124955],[8.24560546875,34.73408203124998],[8.276855468750057,34.97949218749997],[8.312109375000063,35.084619140624994],[8.394238281250011,35.20385742187503],[8.318066406250011,35.654931640624994],[8.348730468750063,36.367968750000045],[8.207617187500006,36.518945312499994],[8.601269531250068,36.83393554687504],[8.576562500000023,36.93720703125001],[9.687988281250057,37.34038085937499],[9.838476562500063,37.30898437499999],[9.830273437499983,37.13535156250006],[9.875585937499977,37.25415039062503],[10.196386718750063,37.205859375000045],[10.293261718750074,36.781494140625],[10.412304687499983,36.73183593750002],[11.053906250000068,37.07250976562506],[11.12666015625004,36.874072265625045],[10.476562500000028,36.175146484375006],[10.590820312500028,35.88725585937499],[11.00429687500008,35.63383789062496],[11.120117187500057,35.24028320312499],[10.69091796875,34.67846679687503],[10.118359375000068,34.280078125000045],[10.049023437500068,34.056298828124994],[10.305273437500034,33.72827148437497],[10.713183593750017,33.68901367187496],[10.722753906250006,33.514404296875],[10.958007812500057,33.62631835937498],[11.257421875000034,33.30883789062506],[11.202636718749972,33.24921874999998],[11.50458984375004,33.181933593750045],[11.502441406250028,33.15556640624999],[11.467187500000051,32.96572265625005],[11.459179687500011,32.897363281249966],[11.453906250000017,32.64257812500003],[11.533789062500034,32.52495117187496],[11.535937500000017,32.47333984375001],[11.504980468750034,32.413671875000034],[11.358007812500006,32.34521484375003],[11.168261718750074,32.25673828125002],[11.005175781250074,32.17270507812506],[10.826367187500068,32.080664062500034],[10.771582031250006,32.02119140625001],[10.60888671875,31.929541015624977],[10.47578125000004,31.736035156249983],[10.274609375000011,31.684960937499994]]]]},"properties":{"name":"Tunisia","childNum":3}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[25.970019531250045,40.136328125],[25.6689453125,40.13588867187502],[25.918359375000023,40.23798828125004],[25.970019531250045,40.136328125]]],[[[43.43339843750002,41.155517578125],[43.43945312500003,41.10712890625001],[43.72265624999997,40.71953124999999],[43.56933593750003,40.48237304687498],[43.66621093750004,40.12636718750002],[44.28925781250004,40.040380859375006],[44.76826171875004,39.70351562500005],[44.81718750000002,39.65043945312496],[44.58710937500004,39.76855468750006],[44.3893554687501,39.422119140625],[44.02324218750002,39.37744140625006],[44.27167968750004,38.83603515625006],[44.2985351562501,38.38627929687499],[44.4499023437501,38.33422851562506],[44.21132812499999,37.908056640625006],[44.589941406250006,37.710351562499966],[44.574023437500074,37.435400390625006],[44.79414062500004,37.290380859375034],[44.76513671875003,37.142431640625006],[44.73095703124997,37.16528320312503],[44.66933593750005,37.17358398437503],[44.60595703124997,37.176025390625],[44.401953125,37.05849609375002],[44.325585937499994,37.0107421875],[44.28183593750006,36.97802734374997],[44.24570312500006,36.983300781249994],[44.20166015624997,37.05180664062502],[44.208398437499994,37.20263671875],[44.19179687499999,37.249853515625034],[44.15625,37.28295898437503],[44.11445312500004,37.30185546875006],[44.01318359375003,37.313525390625045],[43.83642578124997,37.223535156249994],[43.67578125000003,37.227246093749955],[43.09248046875004,37.36738281249998],[42.936621093750006,37.32475585937502],[42.77460937500004,37.371875],[42.74111328125005,37.361914062500034],[42.6354492187501,37.249267578125],[42.45585937500002,37.128710937500045],[42.358984375,37.10859375000004],[42.31289062499999,37.22958984374998],[42.26855468749997,37.276562499999955],[42.24755859375003,37.28222656250006],[42.20273437500006,37.29726562499999],[42.16787109375005,37.28862304687502],[42.059863281250074,37.2060546875],[41.886816406250006,37.156396484374994],[40.70566406250006,37.09770507812502],[40.4503906250001,37.00888671875006],[40.016406250000074,36.82607421875002],[39.68652343749997,36.73862304687506],[39.50146484374997,36.702246093750034],[39.35664062500004,36.68159179687498],[39.10839843749997,36.68056640625005],[38.90644531250004,36.69467773437498],[38.76660156249997,36.69311523437503],[38.19169921875002,36.90156250000004],[37.90664062500005,36.79462890625001],[37.7203125,36.74370117187502],[37.52353515625006,36.678320312500034],[37.436328125000074,36.643310546875],[37.327050781249994,36.64658203125006],[37.18740234375005,36.655908203124994],[37.066210937500074,36.652636718750045],[36.98535156250003,36.70239257812506],[36.94179687499999,36.758398437500006],[36.77656250000004,36.79267578124998],[36.65859375000005,36.80253906250002],[36.62841796875003,36.777685546875034],[36.596875,36.70136718750001],[36.546679687500074,36.50634765625],[36.5375,36.457421874999966],[36.63671874999997,36.233984375],[36.37539062499999,36.171240234375034],[36.347558593749994,36.003515625000034],[36.20195312500002,35.93754882812502],[36.15361328125002,35.83388671875005],[36.12734375,35.831445312499994],[35.967578125000074,35.91005859375002],[35.89267578125006,35.91655273437502],[35.81093750000005,36.30986328125002],[36.18847656250003,36.65898437499999],[36.048925781250006,36.91059570312501],[35.393164062500006,36.57519531249997],[34.70361328125003,36.81679687499999],[33.694726562499994,36.18198242187498],[32.794824218749994,36.03588867187497],[32.37773437500002,36.18364257812496],[32.02197265625003,36.53530273437502],[31.35253906249997,36.80107421874999],[30.64404296874997,36.86567382812501],[30.446093750000074,36.269873046875034],[29.6890625,36.15668945312498],[29.22363281249997,36.32446289062497],[28.96962890625008,36.71533203125003],[28.303710937500057,36.81196289062498],[28.01943359375005,36.63447265624998],[28.083984375000057,36.75146484375],[27.453906250000017,36.712158203125],[28.00537109375003,36.83198242187498],[28.242382812500068,37.029052734375],[27.262988281250045,36.97656250000003],[27.30019531250005,37.12685546875002],[27.53505859375005,37.16386718750002],[27.06796875,37.65791015625004],[27.224414062500074,37.725439453125006],[27.23242187500003,37.978662109374994],[26.29072265625001,38.27719726562498],[26.44130859375005,38.64121093749998],[26.67421875000008,38.33574218750002],[27.14423828125001,38.45195312499996],[26.906835937500034,38.48173828124999],[26.763671875,38.709619140624966],[27.013671875000057,38.88686523437502],[26.814941406250057,38.96098632812502],[26.853613281250034,39.115625],[26.68183593750004,39.292236328125],[26.89921874999999,39.549658203125034],[26.113085937500074,39.46738281249998],[26.101367187500074,39.56894531249998],[26.18134765625004,39.99008789062498],[26.738085937500045,40.40024414062506],[27.28457031250008,40.45561523437496],[27.4755859375,40.319921875000034],[27.72802734375,40.32880859374998],[27.84853515625005,40.38173828125002],[27.73183593750008,40.48149414062499],[27.87490234375008,40.512939453125],[27.989550781250074,40.48945312500001],[27.96259765625001,40.369873046875],[29.00712890624999,40.389746093750034],[28.787890625000017,40.534033203125034],[28.95800781250003,40.63056640624998],[29.849218750000063,40.760107421875006],[29.113867187499977,40.93784179687506],[29.14814453125004,41.221044921875034],[31.25488281249997,41.10761718750001],[31.45800781249997,41.32001953125004],[32.306445312500074,41.72958984374998],[33.38134765625003,42.01757812500003],[34.75048828124997,41.95683593749999],[35.006445312500006,42.06328125000002],[35.15488281250006,42.02753906250001],[35.12207031250003,41.89111328125003],[35.297753906249994,41.72851562500003],[35.558007812499994,41.63403320312506],[36.05175781249997,41.68256835937498],[36.40537109375006,41.27460937500001],[36.77773437499999,41.36347656250001],[37.066210937500074,41.184423828125034],[38.38105468750004,40.92451171875001],[39.426367187500006,41.10644531250003],[40.26523437500006,40.96132812500005],[41.08359375000006,41.26118164062504],[41.41435546875002,41.42363281249999],[41.510058593750074,41.51748046875002],[41.70175781250006,41.471582031249994],[41.77939453125006,41.44052734374998],[41.823535156250074,41.432373046875],[41.92578125000003,41.49565429687502],[42.46640625,41.43984375000002],[42.56738281249997,41.55927734375001],[42.590429687500006,41.57070312500002],[42.60683593750005,41.57880859374998],[42.682421875000074,41.58574218749999],[42.75410156250004,41.57890625000002],[42.787890625000074,41.56372070312503],[42.82167968750005,41.49238281249998],[42.90673828125003,41.46684570312502],[43.05712890625003,41.35283203124996],[43.149023437500006,41.30712890624997],[43.171289062499994,41.28793945312498],[43.14101562499999,41.26484374999998],[43.15283203124997,41.23642578125006],[43.20546875000005,41.19916992187501],[43.43339843750002,41.155517578125]]],[[[27.47480468750001,41.946875],[28.014453125000017,41.96904296874999],[28.197851562500063,41.55449218750002],[29.057226562500006,41.22973632812503],[28.95625,41.00820312499999],[28.172167968750074,41.08071289062502],[27.49941406250005,40.97314453124997],[27.258007812499983,40.687353515625006],[26.772070312500034,40.498046875],[26.202734375000034,40.07539062500004],[26.25380859375005,40.31469726562503],[26.792089843750034,40.626611328124994],[26.10546875000003,40.61132812499997],[26.03896484375008,40.726757812499955],[26.331054687500057,40.954492187499994],[26.330664062499977,41.23876953125],[26.62490234375008,41.401757812499994],[26.581347656250074,41.60126953125004],[26.320898437500034,41.716552734375],[26.3603515625,41.80156249999999],[26.51142578125004,41.82636718749998],[26.549707031250023,41.896728515625],[26.5796875,41.947949218749955],[26.615332031250063,41.964892578125045],[26.884863281250006,41.99184570312502],[26.96875,42.02685546875006],[27.01171875,42.05864257812496],[27.193359375000057,42.07709960937498],[27.24433593750004,42.09326171875],[27.294921875000057,42.079541015624955],[27.47480468750001,41.946875]]]]},"properties":{"name":"Turkey","childNum":3}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[39.71132812499999,-7.977441406250023],[39.602929687499994,-7.936132812499949],[39.907128906249994,-7.649218750000031],[39.71132812499999,-7.977441406250023]]],[[[39.49648437499999,-6.174609375],[39.573046875000074,-6.387402343750011],[39.48095703124997,-6.45371093750002],[39.18232421875004,-6.172558593750026],[39.30898437499999,-5.721972656249974],[39.49648437499999,-6.174609375]]],[[[39.86503906250002,-4.906152343750037],[39.74931640625002,-5.443847656249986],[39.646777343750074,-5.368554687500009],[39.6734375,-4.927050781250031],[39.86503906250002,-4.906152343750037]]],[[[33.90322265625005,-1.002050781250034],[37.643847656250074,-3.045410156250028],[37.608203125000074,-3.497070312500028],[39.221777343750006,-4.692382812500014],[38.80468750000003,-6.070117187500031],[38.87402343750003,-6.33125],[39.5460937500001,-7.024023437500034],[39.288476562499994,-7.517871093750003],[39.28701171875005,-7.787695312500006],[39.4284179687501,-7.81279296874996],[39.441015625,-8.011523437499946],[39.304003906250074,-8.44384765625],[39.451269531250006,-8.94296875],[39.64130859375004,-9.19248046875002],[39.72519531250006,-10.000488281249972],[40.46357421875004,-10.464355468749972],[39.98867187499999,-10.820800781250014],[39.81708984375004,-10.912402343750031],[38.9875,-11.167285156250003],[38.49179687500006,-11.413281250000026],[37.92021484375002,-11.294726562500031],[37.72480468750004,-11.58066406250002],[37.54169921875004,-11.675097656249974],[37.37285156250002,-11.710449218749986],[36.97890625000005,-11.566992187499977],[36.30566406250003,-11.706347656249946],[36.191308593749994,-11.670703124999974],[36.17548828125004,-11.60927734374998],[36.08222656250004,-11.537304687499969],[35.91132812500004,-11.45468750000002],[35.785449218750074,-11.452929687500017],[35.63095703125006,-11.582031250000028],[35.564355468749994,-11.602343749999989],[35.418261718750074,-11.583203125],[35.18261718750003,-11.574804687499977],[34.95947265625003,-11.578125],[34.93701171874997,-11.463476562500034],[34.890625,-11.3935546875],[34.77382812500005,-11.341699218750009],[34.60791015624997,-11.08046875],[34.66708984375006,-10.792480468750028],[34.56992187500006,-10.241113281249966],[34.32089843750006,-9.731542968749977],[33.99560546875003,-9.495410156250003],[33.88886718750004,-9.670117187499983],[32.91992187500003,-9.407421875000026],[32.75664062500002,-9.322265625],[31.94257812500004,-9.05400390624996],[31.91865234375004,-8.942187500000017],[31.886132812499994,-8.921972656249977],[31.81806640625004,-8.902246093749952],[31.673632812500017,-8.908789062499963],[31.55625,-8.80546875],[31.44921874999997,-8.65390625],[31.35058593750003,-8.607031250000034],[31.07636718750004,-8.611914062499963],[30.968359375000063,-8.550976562499983],[30.89199218750005,-8.473730468749963],[30.830664062500063,-8.385546875000031],[30.720898437500097,-8.104394531250037],[30.40673828125003,-7.460644531249983],[30.313183593750097,-7.203710937499949],[30.212695312500017,-7.037890625000017],[30.10625,-6.915039062500028],[29.961816406249994,-6.803125],[29.798144531250017,-6.691894531249957],[29.70966796875004,-6.61689453125004],[29.590625,-6.394433593750023],[29.540820312500017,-6.313867187500037],[29.50625,-6.172070312500011],[29.480078125,-6.025],[29.490820312500063,-5.96542968750002],[29.59638671875004,-5.775976562499963],[29.60703125,-5.722656250000028],[29.59414062500005,-5.650781250000037],[29.542382812499994,-5.499804687500017],[29.34277343749997,-4.983105468749997],[29.32343750000004,-4.898828124999966],[29.32568359374997,-4.835644531249969],[29.404199218749994,-4.49667968750002],[29.40322265625005,-4.449316406249963],[29.71777343750003,-4.45585937499996],[29.94726562499997,-4.307324218749983],[30.4,-3.65390625],[30.790234375000097,-3.274609375000011],[30.811132812500006,-3.116406250000011],[30.78027343750003,-2.984863281249957],[30.70947265624997,-2.977246093749997],[30.604296875000074,-2.935253906249969],[30.515039062499994,-2.917578125],[30.45556640625003,-2.893164062500006],[30.433496093749994,-2.874511718750028],[30.424023437500097,-2.82402343749996],[30.473339843750097,-2.6943359375],[30.42421875000005,-2.641601562500014],[30.441992187500006,-2.613476562499969],[30.53369140624997,-2.426269531250014],[30.55361328125005,-2.400097656250011],[30.593359375000063,-2.39677734374996],[30.65664062500005,-2.373828124999989],[30.71484375000003,-2.363476562500011],[30.7625,-2.371679687499991],[30.828710937500006,-2.338476562499977],[30.85498046874997,-2.265429687500017],[30.8765625,-2.143359375000017],[30.864648437499994,-2.044042968749949],[30.819140625000017,-1.967480468749983],[30.812597656250006,-1.56308593750002],[30.76220703124997,-1.458691406249983],[30.710742187500074,-1.396777343749974],[30.631933593750006,-1.36748046874996],[30.508105468750074,-1.208203125000026],[30.47021484374997,-1.13115234374996],[30.47705078124997,-1.0830078125],[30.509960937500097,-1.067285156249994],[30.51992187499999,-1.0625],[30.67275390625005,-1.051367187499949],[30.741992187500017,-1.007519531249997],[30.809179687500063,-0.994921875],[30.82363281250005,-0.999023437499943],[30.84472656250003,-1.002050781250034],[32.371875,-1.002050781250034],[33.90322265625005,-1.002050781250034]]]]},"properties":{"name":"Tanzania","childNum":4}},{"geometry":{"type":"Polygon","coordinates":[[[30.50996093750001,-1.067285156250009],[30.46992187500001,-1.066015625],[30.41230468750001,-1.063085937500006],[30.360253906250023,-1.074609375],[29.930078125000023,-1.469921875000011],[29.82539062500001,-1.335546875],[29.576953125000017,-1.387890625000011],[29.717675781250023,0.098339843749997],[29.934472656250023,0.4990234375],[29.94287109375,0.819238281249994],[31.252734375000017,2.044580078124994],[31.176367187500006,2.270068359374989],[30.728613281250006,2.455371093749989],[30.8466796875,2.847021484374991],[30.754003906250006,3.041796874999989],[30.90644531250001,3.408935546875],[30.83857421875001,3.49072265625],[31.15234375,3.785595703124997],[31.547167968750017,3.677587890624991],[31.79804687500001,3.802636718749994],[32.13593750000001,3.519726562499997],[32.33574218750002,3.706201171874994],[32.99726562500001,3.880175781249989],[33.489355468750006,3.755078125],[33.568457031250006,3.81171875],[33.74160156250002,3.985253906249994],[33.97607421875,4.22021484375],[34.13203125000001,3.88916015625],[34.18574218750001,3.869775390624994],[34.1650390625,3.81298828125],[34.26708984375,3.733154296875],[34.39287109375002,3.691503906249991],[34.43769531250001,3.650585937499997],[34.44179687500002,3.60625],[34.3994140625,3.412695312499991],[34.4072265625,3.357519531249991],[34.447851562500006,3.163476562499994],[34.90576171875,2.4796875],[34.88300781250001,2.417919921874997],[34.96406250000001,2.062402343749994],[34.9775390625,1.861914062499991],[34.97646484375002,1.719628906249994],[34.79863281250002,1.24453125],[34.48173828125002,1.042138671874994],[34.41083984375001,0.867285156249991],[34.16093750000002,0.605175781249997],[33.94316406250002,0.173779296874997],[33.90322265625002,-1.002050781250006],[32.371875,-1.002050781250006],[30.8447265625,-1.002050781250006],[30.823632812500023,-0.9990234375],[30.809179687500006,-0.994921875],[30.741992187500017,-1.007519531250011],[30.672753906250023,-1.051367187500006],[30.598730468750006,-1.069726562500009],[30.519921875000023,-1.0625],[30.50996093750001,-1.067285156250009]]]},"properties":{"name":"Uganda","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[32.01220703124997,46.20390624999999],[32.15009765625004,46.1546875],[31.56386718750005,46.25776367187504],[31.50878906250003,46.373144531250006],[32.01220703124997,46.20390624999999]]],[[[38.21435546875003,47.091455078124966],[37.54335937499999,47.07456054687498],[36.794824218749994,46.71440429687499],[36.55878906250004,46.76269531250006],[35.82714843749997,46.62431640625002],[35.01455078125005,46.10600585937502],[35.280175781249994,46.27949218750001],[35.23037109375005,46.440625],[34.84960937500003,46.189892578124955],[35.02285156250005,45.70097656250002],[35.45751953124997,45.316308593749994],[36.170507812500006,45.453076171874955],[36.575,45.3935546875],[36.39335937500002,45.06538085937501],[35.87011718750003,45.005322265624955],[35.472558593749994,45.098486328125006],[35.08769531250002,44.802636718749966],[34.46992187500004,44.7216796875],[33.909960937500074,44.387597656249966],[33.45068359374997,44.553662109374955],[33.55517578125003,45.09765625000003],[32.5080078125001,45.40380859375006],[33.664843750000074,45.94707031249996],[33.59414062500005,46.09624023437499],[33.42988281250004,46.05761718750003],[33.20224609375006,46.17573242187501],[32.47675781250004,46.08369140625001],[31.83125,46.28168945312501],[32.00849609375004,46.42998046875002],[31.554882812500097,46.554296875000034],[32.36132812499997,46.474951171875034],[32.578027343749994,46.615625],[32.04433593750005,46.642480468749966],[31.75917968750005,47.21284179687501],[31.872851562500017,46.649755859375034],[31.532128906249994,46.66474609374998],[31.56337890625005,46.77729492187501],[31.402929687500063,46.62880859375002],[30.796289062499994,46.55200195312503],[30.219042968750074,45.866748046875045],[29.62841796875003,45.722460937500045],[29.705859375000074,45.25991210937505],[29.567675781250074,45.37080078124998],[29.40371093750005,45.419677734375],[29.22353515625005,45.402929687500034],[28.894335937500017,45.28994140625002],[28.78173828125,45.30986328125002],[28.76660156250003,45.28623046874998],[28.78828125000001,45.240966796875],[28.451269531250006,45.292187499999955],[28.317675781250045,45.347119140624955],[28.2125,45.45043945312506],[28.26484375000004,45.48388671875003],[28.310351562500074,45.49858398437499],[28.499023437500057,45.517724609374994],[28.513769531250034,45.57241210937502],[28.49160156250005,45.66577148437503],[28.562304687500074,45.73579101562501],[28.667578125,45.79384765625002],[28.729296875000074,45.852001953124955],[28.73876953125003,45.937158203124994],[28.84951171875005,45.97866210937502],[28.94775390624997,46.049951171874966],[28.971875,46.12763671874998],[29.00625,46.17646484374998],[28.94375,46.28842773437506],[28.930566406250023,46.36225585937501],[28.92744140625001,46.42412109374999],[28.958398437500023,46.45849609374997],[29.146289062500017,46.52690429687496],[29.186230468750068,46.52397460937499],[29.20078125,46.504980468750034],[29.20458984374997,46.37934570312501],[29.223828125000097,46.37695312499997],[29.458789062500017,46.453759765624994],[29.83789062499997,46.35053710937501],[29.878027343750063,46.360205078125034],[30.07568359375003,46.377832031249966],[30.131054687500097,46.42309570312506],[29.92431640624997,46.53886718750002],[29.934765625000097,46.625],[29.942480468750063,46.72377929687502],[29.918066406250063,46.78242187499998],[29.877832031249994,46.828906250000045],[29.57197265625004,46.96401367187502],[29.455664062500006,47.292626953124994],[29.134863281250006,47.48969726562501],[29.125390625000023,47.96455078125001],[28.42304687500001,48.146875],[28.34052734375001,48.144433593749994],[27.54921875000008,48.47773437500004],[27.22851562500003,48.37143554687506],[26.90058593750001,48.37192382812506],[26.847070312500023,48.387158203124955],[26.640429687500045,48.29414062500001],[26.618945312500017,48.25986328125006],[26.4423828125,48.22998046875],[26.162695312500063,47.992529296875034],[25.90869140625,47.96757812500002],[25.689257812500045,47.93247070312506],[25.46425781250005,47.910791015624994],[24.979101562500063,47.72412109374997],[24.578906250000074,47.93105468750005],[23.628710937500017,47.995849609375],[23.40820312500003,47.98999023437506],[23.20263671875,48.084521484375045],[23.13945312499999,48.08740234375],[22.87666015625001,47.94726562500006],[22.769140625000063,48.109619140625],[22.582421875000023,48.134033203125],[22.253710937500017,48.407373046874994],[22.131835937500057,48.40532226562502],[22.142871093750017,48.568505859374966],[22.295214843750045,48.68583984374999],[22.389453125000045,48.87348632812501],[22.52412109375004,49.03139648437502],[22.538671875,49.07270507812501],[22.847070312500023,49.08125],[22.705664062500006,49.17119140624999],[22.6494140625,49.53901367187498],[22.706152343750006,49.60620117187497],[23.03632812500004,49.899072265624966],[23.711718750000045,50.377343749999966],[23.97265625,50.410058593749966],[24.089941406250006,50.53046874999998],[24.0947265625,50.617041015625034],[23.9970703125,50.809375],[24.095800781250063,50.87275390625001],[23.664453125000023,51.31005859375],[23.61376953125,51.525390625],[23.706835937500045,51.64130859374998],[23.79169921875001,51.63710937500002],[23.864257812500057,51.62397460937501],[23.951171875,51.58505859374998],[23.978320312500017,51.59130859375003],[24.12685546875008,51.664648437500034],[24.280078125000017,51.77470703124999],[24.361914062500006,51.86752929687498],[25.785742187500006,51.923828125],[26.77343750000003,51.77070312499998],[26.952832031249983,51.754003906250034],[27.074121093750023,51.760839843750006],[27.14199218750008,51.75205078124998],[27.29628906250008,51.59741210937503],[27.689746093750017,51.572412109374994],[27.7,51.47797851562501],[27.85859375000004,51.59238281250006],[28.532031250000017,51.56245117187501],[28.59902343750008,51.54262695312505],[28.647753906250074,51.45654296875],[28.690234375000017,51.43886718750005],[28.73125,51.43339843749999],[28.84951171875005,51.540185546874994],[28.927539062500045,51.56215820312502],[28.97773437500004,51.57177734375003],[29.01308593750005,51.59892578124996],[29.06074218750001,51.625439453124955],[29.102050781250057,51.627539062500034],[29.346484375000017,51.38256835937503],[30.160742187500006,51.477880859375006],[30.449511718750017,51.274316406249994],[30.63251953125004,51.35541992187501],[30.61171875000005,51.406347656250006],[30.602343750000017,51.47124023437499],[30.56074218750004,51.531494140625],[30.533007812500017,51.596337890624966],[30.583886718749994,51.68896484375003],[30.667285156250017,51.81411132812502],[30.755273437499994,51.89516601562502],[30.84570312500003,51.95307617187501],[30.980664062500097,52.04619140624996],[31.217968750000097,52.05024414062498],[31.345996093750074,52.10537109375002],[31.57373046875003,52.108105468749955],[31.763378906250097,52.10107421875003],[32.12226562500004,52.05058593749996],[32.435449218749994,52.307226562500034],[33.735253906249994,52.344775390625045],[34.397851562499994,51.780419921874994],[34.12109375000003,51.67915039062498],[34.21386718750003,51.25537109375006],[35.0640625,51.203417968750045],[35.31191406250005,51.043896484374955],[35.59111328125002,50.36875],[36.1164062500001,50.408544921875006],[36.619433593750074,50.209228515625],[37.42285156249997,50.411474609375006],[38.046875,49.92001953125006],[38.258593750000074,50.05234375],[38.91835937499999,49.82470703125],[39.17480468750003,49.85595703124997],[39.780566406250074,49.57202148437503],[40.080664062500006,49.576855468749955],[40.10878906250005,49.251562500000034],[39.68652343749997,49.007910156250034],[40.00361328125004,48.82207031250002],[39.792871093749994,48.807714843750034],[39.6447265625001,48.591210937499966],[39.8356445312501,48.54277343749996],[39.95791015625005,48.268896484375034],[39.77871093750005,47.88754882812506],[38.90029296875005,47.85512695312502],[38.36884765625004,47.609960937500006],[38.21435546875003,47.091455078124966]]]]},"properties":{"name":"Ukraine","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[-57.81059570312499,-30.85859375000001],[-57.872509765625,-30.59101562500001],[-57.831201171874994,-30.495214843750006],[-57.71269531249999,-30.38447265625001],[-57.65087890625,-30.295019531250006],[-57.645751953125,-30.226953125],[-57.60888671875,-30.187792968750003],[-57.55229492187499,-30.26123046875],[-57.21445312499999,-30.28339843750001],[-57.186914062499994,-30.26484375000001],[-57.120507812499994,-30.14443359375001],[-56.83271484375,-30.107226562500003],[-56.4072265625,-30.44746093750001],[-55.998974609375,-30.837207031250003],[-56.018457031249994,-30.99189453125001],[-56.00468749999999,-31.079199218750006],[-55.873681640624994,-31.069628906250003],[-55.6271484375,-30.85810546875001],[-55.60302734375,-30.85078125000001],[-55.55732421875,-30.8759765625],[-55.17353515625,-31.279589843750003],[-55.09116210937499,-31.31396484375],[-55.036035156249994,-31.27900390625001],[-54.587646484375,-31.48515625],[-54.22055664062499,-31.85517578125001],[-53.76171875,-32.05683593750001],[-53.601708984374994,-32.40302734375001],[-53.12558593749999,-32.73671875],[-53.2140625,-32.82109375],[-53.31010742187499,-32.92705078125],[-53.39521484375,-33.010351562500006],[-53.482861328125,-33.06855468750001],[-53.511865234374994,-33.10869140625],[-53.53134765624999,-33.1708984375],[-53.53134765624999,-33.65546875000001],[-53.37060546875,-33.7421875],[-53.419580078124994,-33.77919921875001],[-53.47246093749999,-33.84931640625001],[-53.53452148437499,-34.01748046875001],[-53.742919921875,-34.24951171875],[-53.785302734374994,-34.38037109375],[-54.16855468749999,-34.670703125],[-54.902294921875,-34.93281250000001],[-55.67314453124999,-34.77568359375],[-56.249951171875,-34.90126953125001],[-57.17070312499999,-34.45234375000001],[-57.8291015625,-34.47734375],[-58.40019531249999,-33.91240234375],[-58.363525390625,-33.18232421875001],[-58.08232421874999,-32.893652343750006],[-58.12958984375,-32.75722656250001],[-58.16220703124999,-32.566503906250006],[-58.201171875,-32.4716796875],[-58.123046875,-32.321875],[-58.11972656249999,-32.24892578125001],[-58.164794921875,-32.18486328125],[-58.177001953125,-32.11904296875001],[-58.15634765624999,-32.0515625],[-58.160400390625,-31.98652343750001],[-58.18901367187499,-31.92421875],[-58.16748046875,-31.87265625],[-58.04233398437499,-31.76923828125001],[-58.006982421874994,-31.68496093750001],[-58.053857421874994,-31.494921875],[-58.0333984375,-31.416601562500006],[-57.89335937499999,-31.1953125],[-57.868408203125,-31.10439453125001],[-57.88632812499999,-30.93740234375001],[-57.81059570312499,-30.85859375000001]]]},"properties":{"name":"Uruguay","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-155.58134765624996,19.012011718750017],[-155.88129882812495,19.07050781250001],[-156.04868164062498,19.749951171874983],[-155.82031249999997,20.01416015624997],[-155.83164062499998,20.27583007812501],[-155.198779296875,19.99438476562503],[-154.80419921875,19.524462890625045],[-155.58134765624996,19.012011718750017]]],[[[-156.84960937499997,20.772656249999955],[-156.97338867187497,20.757519531249983],[-157.0505859375,20.912451171875034],[-156.88056640624995,20.904833984375074],[-156.84960937499997,20.772656249999955]]],[[[-156.48681640624994,20.93256835937504],[-156.27753906250004,20.951269531250034],[-155.98984374999998,20.75712890624999],[-156.40878906249998,20.60517578125004],[-156.480078125,20.80122070312501],[-156.69775390625003,20.949072265625034],[-156.58540039062495,21.034326171874994],[-156.48681640624994,20.93256835937504]]],[[[-157.21362304687497,21.215380859375017],[-156.71215820312506,21.155078125000074],[-156.85986328125,21.05634765625004],[-157.29033203124996,21.112597656250017],[-157.21362304687497,21.215380859375017]]],[[[-157.79936523437502,21.456640625000034],[-157.63540039062502,21.30761718749997],[-158.11035156249994,21.318603515625],[-158.27314453125,21.585253906250045],[-157.9625,21.701367187499983],[-157.79936523437502,21.456640625000034]]],[[[-159.37275390625,21.93237304687497],[-159.60883789062495,21.909521484375034],[-159.78916015625003,22.041796875000074],[-159.57919921874998,22.22314453124997],[-159.35205078124997,22.219580078125034],[-159.37275390625,21.93237304687497]]],[[[-81.04418945312503,24.716796875000057],[-81.137353515625,24.710498046875017],[-80.93046875,24.75947265625004],[-81.04418945312503,24.716796875000057]]],[[[-80.3818359375,25.142285156249955],[-80.58056640624997,24.954248046875023],[-80.25708007812497,25.34760742187504],[-80.3818359375,25.142285156249955]]],[[[-97.17070312499996,26.159375],[-97.40209960937494,26.820507812499983],[-97.38598632812494,27.19648437500004],[-97.17070312499996,26.159375]]],[[[-80.18676757812497,27.278417968750034],[-80.17050781250003,27.20478515625004],[-80.43691406249994,27.850537109374955],[-80.18676757812497,27.278417968750034]]],[[[-91.793701171875,29.50073242187497],[-92.00664062499996,29.61030273437501],[-91.875244140625,29.640966796875034],[-91.793701171875,29.50073242187497]]],[[[-84.90791015624998,29.642626953125017],[-85.11674804687499,29.63281249999997],[-84.737158203125,29.732421875],[-84.90791015624998,29.642626953125017]]],[[[-89.22397460937498,30.084082031249977],[-89.34199218749995,30.062841796875006],[-89.18466796874995,30.168652343749983],[-89.22397460937498,30.084082031249977]]],[[[-118.34794921875002,33.3857421875],[-118.29746093750003,33.312109375],[-118.44628906249997,33.317089843749955],[-118.56943359375002,33.46416015624999],[-118.34794921875002,33.3857421875]]],[[[-120.04355468749995,33.918847656249994],[-120.25190429687494,34.01386718749998],[-120.07182617187493,34.026513671874966],[-120.04355468749995,33.918847656249994]]],[[[-119.88237304687497,34.07968749999998],[-119.54926757812497,34.02817382812506],[-119.80957031249997,33.9677734375],[-119.88237304687497,34.07968749999998]]],[[[-75.54414062499995,35.240087890625034],[-75.69008789062502,35.221582031249994],[-75.53637695312497,35.27861328124999],[-75.50351562500003,35.769140625],[-75.46474609374994,35.448632812499966],[-75.54414062499995,35.240087890625034]]],[[[-74.13320312500002,39.680761718750034],[-74.25048828125,39.529394531250006],[-74.10673828124996,39.74643554687498],[-74.13320312500002,39.680761718750034]]],[[[-72.50976562500003,40.98603515625001],[-72.58085937499996,40.92133789062498],[-71.90322265625,41.06069335937505],[-73.19428710937495,40.654199218749994],[-74.01489257812497,40.581201171874966],[-73.87924804687498,40.79165039062502],[-73.573828125,40.91962890624998],[-72.62509765624998,40.99184570312505],[-72.27412109374998,41.15302734375001],[-72.50976562500003,40.98603515625001]]],[[[-69.9779296875,41.26557617187504],[-70.23305664062502,41.28632812500001],[-70.04121093750001,41.3974609375],[-69.9779296875,41.26557617187504]]],[[[-70.50991210937502,41.376318359375034],[-70.82919921874995,41.35898437500006],[-70.61601562499996,41.45722656250001],[-70.50991210937502,41.376318359375034]]],[[[-71.24140625000001,41.49194335937497],[-71.34624023437496,41.469384765624994],[-71.23203124999995,41.654296875],[-71.24140625000001,41.49194335937497]]],[[[-68.18725585937497,44.33247070312501],[-68.41171875000003,44.294335937499966],[-68.29941406249998,44.456494140624955],[-68.18725585937497,44.33247070312501]]],[[[-122.394140625,47.39526367187503],[-122.50991210937497,47.358007812500006],[-122.486474609375,47.48876953125],[-122.394140625,47.39526367187503]]],[[[-122.57275390624999,48.15664062499999],[-122.38315429687499,47.923193359375034],[-122.74150390624999,48.22529296875004],[-122.62861328125,48.38422851562498],[-122.54243164062503,48.29399414062499],[-122.69702148437499,48.228662109374994],[-122.57275390624999,48.15664062499999]]],[[[-94.80346679687497,49.0029296875],[-94.71279296874997,48.863427734374994],[-94.62089843749999,48.74262695312501],[-93.85161132812496,48.607275390625034],[-93.70771484374995,48.52543945312499],[-93.37788085937498,48.61655273437498],[-93.25795898437497,48.62885742187501],[-92.83671875,48.567773437499994],[-92.50058593749995,48.43535156250002],[-92.41459960937493,48.276611328125],[-92.3484375,48.276611328125],[-92.00517578125002,48.301855468750006],[-91.38720703124997,48.05854492187498],[-91.04345703125003,48.19370117187498],[-90.84033203125003,48.20053710937506],[-90.79731445312495,48.13105468750001],[-89.4556640625,47.996240234374994],[-88.37817382812497,48.30307617187498],[-87.74389648437497,48.06054687500003],[-87.20800781249997,47.848486328125006],[-86.67216796874996,47.636425781249955],[-85.65224609375,47.21997070312503],[-85.07006835937497,46.97993164062498],[-84.87597656249994,46.89990234375003],[-84.66577148437503,46.54326171875002],[-84.44047851562496,46.49814453125006],[-84.12319335937497,46.50292968749997],[-83.97778320312503,46.08491210937498],[-83.61596679687503,46.116845703124994],[-83.46948242187503,45.99467773437499],[-83.59267578125,45.81713867187506],[-82.91933593749994,45.51796875000002],[-82.55107421874996,45.34736328125001],[-82.48505859374993,45.08374023437503],[-82.137841796875,43.570898437500034],[-82.19038085937495,43.47407226562501],[-82.54531249999997,42.62470703124998],[-83.10952148437497,42.25068359375001],[-83.141943359375,41.97587890624996],[-82.69003906249995,41.675195312499994],[-82.43906249999998,41.67485351562502],[-81.97416992187496,41.88872070312499],[-81.50732421874997,42.10346679687504],[-81.02822265624997,42.247167968750006],[-80.24755859375,42.36601562499996],[-79.17373046875,42.74853515625],[-78.91508789062496,42.90913085937504],[-78.98076171874993,42.98061523437502],[-79.02617187499996,43.01733398437506],[-79.066064453125,43.10610351562502],[-79.171875,43.466552734375],[-79.00249023437502,43.52714843749999],[-78.845556640625,43.58334960937498],[-78.72041015625001,43.62495117187501],[-78.45825195312497,43.63149414062502],[-77.596533203125,43.62861328124998],[-76.819970703125,43.62880859375002],[-76.18579101562503,44.24223632812502],[-75.81933593749997,44.468017578125],[-75.40126953124997,44.77226562499999],[-74.99614257812496,44.970117187499966],[-74.76245117187494,44.99907226562502],[-74.663232421875,45.00390625000003],[-71.51752929687495,45.00756835937497],[-71.327294921875,45.29008789062496],[-70.86503906249999,45.27070312500001],[-70.296240234375,45.90610351562506],[-70.00771484375002,46.70893554687501],[-69.24287109374998,47.46298828124998],[-69.0501953125,47.426611328125034],[-68.93720703124998,47.21123046875002],[-68.23549804687502,47.34594726562503],[-67.806787109375,47.08281249999999],[-67.80224609374994,45.7275390625],[-67.43266601562496,45.603125],[-67.366943359375,45.17377929687498],[-67.12485351562498,45.16943359375],[-66.98701171874995,44.82768554687502],[-67.191259765625,44.67558593750002],[-67.83906249999998,44.576269531250034],[-68.056640625,44.38432617187502],[-68.15205078124998,44.50200195312499],[-68.45058593749997,44.50761718749999],[-68.53251953124996,44.25864257812498],[-68.81191406249994,44.33935546875],[-68.76269531249994,44.57075195312498],[-69.22607421875003,43.98647460937505],[-69.52075195312503,43.89736328125002],[-69.55668945312496,43.982763671875006],[-69.62392578125,43.88061523437497],[-69.65288085937493,43.99389648437506],[-69.808349609375,43.772314453125034],[-69.965234375,43.855078125],[-70.17880859374998,43.76635742187506],[-70.73310546875001,43.07001953125004],[-70.82905273437493,42.82534179687502],[-70.61293945312497,42.623242187499955],[-71.04619140624993,42.331103515625045],[-70.73828125,42.228857421875006],[-70.42666015625002,41.75727539062501],[-70.00141601562498,41.82617187500003],[-70.24106445312495,42.09121093750002],[-70.10893554687496,42.07832031249998],[-69.97788085937498,41.961279296875006],[-69.94863281249997,41.67714843750005],[-70.65712890625,41.53422851562496],[-70.70112304687498,41.71484375],[-71.1685546875,41.489404296874994],[-71.14873046874996,41.74570312499998],[-71.27109375,41.68125],[-71.39013671875003,41.79531250000005],[-71.52285156249997,41.378955078125045],[-72.92470703125002,41.28515625000003],[-73.98710937499999,40.751367187499994],[-73.87197265625,41.05517578124997],[-73.96992187499995,41.24970703125001],[-73.92719726562495,40.914257812499955],[-74.26420898437496,40.52861328124999],[-73.972265625,40.40034179687498],[-74.079931640625,39.78813476562496],[-74.06459960937497,39.99311523437498],[-74.79448242187499,39.00190429687501],[-74.95429687499995,38.949951171875],[-74.89702148437502,39.14545898437504],[-75.52421874999999,39.49018554687501],[-75.421875,39.78969726562502],[-75.07416992187495,39.98349609375006],[-75.40063476562503,39.83159179687502],[-75.58759765625001,39.64077148437505],[-75.3921875,39.09277343750006],[-75.08867187499999,38.777539062499955],[-75.18710937499995,38.59111328124999],[-75.03876953124993,38.426367187500006],[-75.934375,37.15190429687496],[-75.97504882812498,37.3984375],[-75.65927734374995,37.953955078125034],[-75.850830078125,37.971582031249994],[-75.85869140624999,38.36206054687503],[-76.05122070312495,38.27954101562503],[-76.2646484375,38.436425781249994],[-76.26416015625,38.599951171875006],[-76.016943359375,38.62509765624998],[-76.21298828124998,38.75830078125003],[-76.34116210937498,38.70966796874998],[-76.16816406249998,38.85273437499998],[-76.32958984375,38.95278320312505],[-76.13520507812493,39.082128906250006],[-76.23569335937498,39.19160156250001],[-76.153125,39.315039062500034],[-75.87597656249997,39.3759765625],[-76.003125,39.41083984375001],[-75.87294921874997,39.510888671874966],[-75.95893554687498,39.58505859374998],[-76.2763671875,39.32275390625],[-76.330810546875,39.40390625],[-76.42089843749997,39.225],[-76.57041015624995,39.26933593749996],[-76.42758789062498,39.12602539062499],[-76.55854492187493,39.065234375000045],[-76.39409179687502,38.368994140625034],[-76.67734374999998,38.611962890624966],[-76.66855468749998,38.5375],[-76.34116210937498,38.08701171875006],[-76.86811523437495,38.39028320312502],[-76.88974609375,38.292089843750006],[-77.00117187499995,38.44526367187504],[-77.23251953125,38.40771484375003],[-77.03037109374995,38.88925781249998],[-77.26040039062502,38.6],[-77.27324218749996,38.35175781249998],[-77.04677734375002,38.356689453125],[-76.26425781250003,37.89355468749997],[-76.34414062499997,37.675683593749994],[-76.49248046874999,37.682226562500006],[-77.11108398437497,38.165673828124994],[-76.54946289062494,37.66914062500001],[-76.30556640625,37.57148437500001],[-76.26347656249996,37.35703125],[-76.40097656249998,37.386132812499994],[-76.45390624999993,37.27353515625006],[-76.75771484375002,37.50541992187496],[-76.28330078125,37.05268554687501],[-76.40087890624997,36.991308593750034],[-76.63090820312493,37.22172851562499],[-77.25087890624994,37.329199218750034],[-76.671875,37.172949218750006],[-76.48784179687502,36.89702148437499],[-75.99941406249997,36.91264648437499],[-75.53417968749997,35.81909179687506],[-75.94648437499995,36.65908203125002],[-75.99277343749995,36.47377929687502],[-75.82006835937494,36.11284179687502],[-76.14785156250002,36.279296875],[-76.15,36.14575195312497],[-76.27060546874998,36.18989257812501],[-76.22739257812498,36.11601562499996],[-76.559375,36.015332031249955],[-76.733642578125,36.229150390624994],[-76.726220703125,35.957617187500034],[-76.06977539062501,35.970312500000034],[-76.08359374999998,35.69052734375006],[-75.85390625,35.96015625000001],[-75.75883789062499,35.84326171875],[-75.77392578124997,35.64697265624997],[-76.17382812499997,35.354150390624994],[-76.489501953125,35.397021484375045],[-76.57719726562502,35.53232421874998],[-76.74140624999998,35.431494140625034],[-77.03999023437495,35.527392578125045],[-76.51293945312497,35.270410156249994],[-76.77915039062503,34.990332031250034],[-77.07026367187501,35.154638671875034],[-76.97495117187503,35.025195312500045],[-76.74497070312498,34.94096679687502],[-76.45673828124998,34.989355468750034],[-76.36220703125,34.9365234375],[-76.43979492187498,34.84291992187502],[-77.29624023437503,34.602929687499994],[-77.41225585937497,34.730810546875034],[-77.37978515625,34.526611328125],[-77.750732421875,34.28496093749996],[-77.92783203125,33.93974609374999],[-77.95327148437494,34.16899414062496],[-78.01333007812502,33.91181640624998],[-78.40585937499995,33.91757812499998],[-78.84145507812497,33.72407226562501],[-79.19379882812498,33.24414062500003],[-79.22646484375,33.40488281249998],[-79.27602539062497,33.135400390624966],[-79.80498046874999,32.78740234374996],[-79.93310546874997,32.81005859375006],[-79.94072265625002,32.667138671874966],[-80.36284179687496,32.500732421875],[-80.6341796875,32.51171875000003],[-80.474267578125,32.42275390625002],[-80.579345703125,32.28730468750004],[-80.80253906249999,32.44804687500002],[-80.69423828124997,32.21572265625002],[-81.11328124999997,31.87861328125001],[-81.06611328124995,31.787988281250023],[-81.259375,31.538916015624977],[-81.17543945312494,31.531298828125017],[-81.38095703124998,31.353271484375],[-81.28847656249997,31.263916015625],[-81.441748046875,31.19970703124997],[-81.5162109375,30.801806640625017],[-81.24951171875003,29.793798828125006],[-80.52412109374995,28.48608398437503],[-80.5849609375,28.271582031250034],[-80.456884765625,27.90068359374996],[-80.61000976562494,28.177587890624977],[-80.60693359375003,28.522900390624983],[-80.693505859375,28.34497070312497],[-80.68847656250003,28.578515625000023],[-80.83818359374999,28.757666015625034],[-80.74863281250003,28.381005859375023],[-80.050048828125,26.807714843750063],[-80.1263671875,25.83349609375],[-80.48466796874999,25.229833984375034],[-81.11049804687494,25.138037109374977],[-81.13603515624999,25.309667968750034],[-80.94042968750003,25.264208984375017],[-81.11333007812499,25.367236328125045],[-81.36494140625001,25.83105468750003],[-81.715478515625,25.98315429687503],[-81.95893554687495,26.489941406249983],[-81.82866210937496,26.68706054687499],[-82.03959960937496,26.552050781250017],[-82.01328125,26.96157226562505],[-82.24287109374998,26.848876953125],[-82.44135742187501,27.059667968750034],[-82.71459960937497,27.499609375000063],[-82.40576171874994,27.862890624999977],[-82.67519531249994,27.963769531250023],[-82.61098632812502,27.77724609375005],[-82.74287109374995,27.709375],[-82.84350585937494,27.845996093750017],[-82.65146484375,28.8875],[-83.69438476562502,29.92597656250001],[-84.04423828124996,30.10380859374999],[-84.30966796874995,30.064746093750045],[-84.38281250000003,29.90737304687505],[-85.31894531249995,29.680224609375045],[-85.413818359375,29.76757812499997],[-85.413818359375,29.842480468749955],[-85.31489257812493,29.758105468750017],[-85.35361328125,29.875732421875],[-85.67578125,30.121923828125063],[-85.60351562500003,30.286767578124966],[-85.75581054687495,30.1669921875],[-86.454443359375,30.39912109375004],[-86.12382812499999,30.40581054687499],[-86.25737304687502,30.493017578124977],[-87.201171875,30.339257812499994],[-86.98579101562498,30.43085937500001],[-86.99755859375,30.5703125],[-87.17060546874998,30.538769531249983],[-87.28105468750002,30.339257812499994],[-87.47578124999998,30.294287109375006],[-87.44829101562499,30.394140625],[-87.62226562499998,30.264746093750006],[-88.00595703124998,30.230908203124955],[-87.79028320312503,30.291796875000017],[-88.011328125,30.694189453125006],[-88.13544921874998,30.366601562499994],[-88.90522460937495,30.415136718750006],[-89.32055664062503,30.3453125],[-89.58847656249998,30.165966796874955],[-90.12597656249997,30.369091796874955],[-90.33198242187493,30.277587890625057],[-90.41303710937501,30.140332031249983],[-90.17534179687499,30.02910156249996],[-89.73745117187497,30.171972656250034],[-89.66503906249994,30.117041015625034],[-89.81518554687497,30.007275390624955],[-89.631689453125,29.90380859375003],[-89.400732421875,30.04604492187505],[-89.35444335937501,29.82021484375005],[-89.72089843749995,29.619287109374966],[-89.01572265625,29.202880859375057],[-89.15551757812497,29.01660156250003],[-89.23608398437494,29.081103515625017],[-89.37612304687497,28.981347656250023],[-89.44316406249996,29.194140625000045],[-90.15908203124997,29.537158203125017],[-90.05278320312499,29.336816406249966],[-90.21279296875,29.104931640624983],[-90.37919921874996,29.29511718750001],[-90.75102539062496,29.13085937500003],[-91.29013671875,29.288964843749994],[-91.15078124999994,29.317919921875045],[-91.24882812499993,29.56420898437503],[-91.51420898437499,29.55537109375001],[-91.8931640625,29.836035156249977],[-92.135498046875,29.699462890625057],[-92.08403320312499,29.59282226562499],[-92.26083984374995,29.55683593750004],[-93.17568359375,29.778955078124994],[-93.82646484374999,29.725146484375045],[-93.84145507812502,29.97973632812503],[-93.89047851562495,29.689355468750023],[-94.759619140625,29.384277343750057],[-94.52626953125,29.547949218750006],[-94.77827148437498,29.54785156249997],[-94.74194335937497,29.75],[-95.0228515625,29.70234375000001],[-94.88828125000003,29.37055664062501],[-95.27348632812499,28.96386718750003],[-96.23452148437502,28.488964843749983],[-96.01103515624996,28.631933593749977],[-96.44873046874997,28.594482421875],[-96.64003906249994,28.708789062500017],[-96.42109374999993,28.457324218750045],[-96.67636718749998,28.34130859375003],[-96.77353515624998,28.421630859375057],[-96.839501953125,28.194384765625017],[-97.156494140625,28.144335937500045],[-97.141259765625,28.060742187499983],[-97.034326171875,28.093847656250063],[-97.07309570312498,27.98608398437503],[-97.43149414062498,27.83720703124999],[-97.28872070312494,27.670605468749983],[-97.43911132812502,27.328271484374966],[-97.76845703124997,27.45751953125],[-97.69238281250003,27.287158203125017],[-97.48510742187497,27.237402343750006],[-97.55468749999994,26.96733398437496],[-97.43505859375,26.48583984375003],[-97.14624023437494,25.961474609375045],[-97.37563476562497,25.871826171875],[-99.10776367187498,26.446923828124994],[-99.45654296874999,27.05668945312496],[-99.50532226562497,27.54833984375003],[-100.29604492187495,28.32768554687499],[-100.75458984375001,29.182519531249994],[-101.44038085937503,29.77685546875],[-102.26894531249998,29.871191406250034],[-102.61494140624994,29.75234375],[-102.8919921875,29.216406250000034],[-103.16831054687498,28.998193359374994],[-104.110595703125,29.386132812499994],[-104.50400390624995,29.677685546874955],[-104.97880859374996,30.645947265624955],[-106.14804687499995,31.450927734375],[-106.44541015624996,31.768408203125006],[-108.21181640625002,31.779345703125017],[-108.21445312499993,31.329443359375034],[-111.0419921875,31.32421875000003],[-114.83593749999994,32.50830078125003],[-114.72475585937495,32.71533203125003],[-117.12827148437495,32.533349609374994],[-117.46743164062495,33.295507812500006],[-118.08051757812497,33.72216796874997],[-118.41044921874996,33.74394531249996],[-118.506201171875,34.01738281249999],[-119.14375,34.11201171874998],[-119.60605468749999,34.41801757812499],[-120.48120117187503,34.47163085937498],[-120.64467773437502,34.57998046875002],[-120.65908203124994,35.122412109375034],[-120.85737304687501,35.209667968749955],[-120.899609375,35.42509765624999],[-121.28383789062494,35.67631835937499],[-121.87739257812498,36.33105468749997],[-121.80742187499995,36.851220703124994],[-122.394921875,37.20751953125003],[-122.49921875000001,37.542626953124994],[-122.44560546875002,37.797998046874966],[-122.07050781249998,37.47827148437503],[-122.38544921875001,37.960595703124966],[-122.31425781249999,38.00732421874997],[-121.52534179687503,38.05590820312503],[-122.39335937499995,38.14482421875002],[-122.52133789062499,37.82641601562497],[-122.93198242187498,38.05546875000002],[-122.998779296875,37.98862304687498],[-122.90815429687501,38.19658203124999],[-123.701123046875,38.90727539062502],[-123.83291015624994,39.775488281250034],[-124.35654296875003,40.37109374999997],[-124.07192382812497,41.45952148437502],[-124.53964843750003,42.812890624999966],[-124.14873046874997,43.691748046875034],[-123.92934570312495,45.57695312499996],[-123.989306640625,46.21938476562502],[-123.22060546874998,46.153613281250045],[-123.46484375,46.27109374999998],[-124.07275390624996,46.279443359374994],[-124.04433593750002,46.605078125],[-123.946142578125,46.43256835937501],[-123.88916015625003,46.660009765625006],[-124.11254882812497,46.862695312499994],[-123.84287109375002,46.963183593750045],[-124.11171875,47.03520507812496],[-124.1392578125,46.95468749999998],[-124.376025390625,47.658642578124955],[-124.66308593749996,47.97412109375003],[-124.7099609375,48.38037109375],[-123.97578125,48.16845703125],[-122.97387695312499,48.07329101562496],[-122.77861328125,48.13759765625002],[-122.65664062500002,47.88115234374999],[-122.77841796874996,47.738427734374966],[-122.82138671875,47.79316406250001],[-123.1390625,47.386083984375034],[-122.92216796874993,47.40766601562498],[-123.066796875,47.39965820312506],[-123.04863281249995,47.479345703125034],[-122.53281250000002,47.919726562500045],[-122.67548828124995,47.612353515625045],[-122.57788085937496,47.29316406250001],[-122.76777343750001,47.21835937500006],[-122.82846679687503,47.336572265624994],[-123.02758789062501,47.13891601562503],[-122.70195312500002,47.11088867187502],[-122.35380859374996,47.37158203125],[-122.40180664062497,47.78427734374998],[-122.24199218750002,48.01074218750003],[-122.5169921875,48.15966796874997],[-122.40854492187502,48.29389648437498],[-122.66899414062496,48.465234374999966],[-122.49677734374995,48.50556640625001],[-122.51274414062502,48.66943359375],[-122.56201171875001,48.777978515624994],[-122.68593749999995,48.794287109375034],[-122.72246093750002,48.85302734375003],[-122.78876953125003,48.993017578125034],[-121.40722656249994,48.993017578125034],[-119.70170898437495,48.993017578125034],[-119.27534179687494,48.99306640625005],[-118.84892578124993,48.99306640625005],[-117.99619140625002,48.99306640625005],[-116.71704101562501,48.99306640625005],[-110.74765625,48.99306640625005],[-104.77832031249997,48.993115234374955],[-98.80898437499995,48.99316406249997],[-97.52983398437493,48.99316406249997],[-96.67705078124993,48.99316406249997],[-96.25068359374993,48.99316406249997],[-95.39790039062493,48.99316406249997],[-95.16206054687493,48.991748046875045],[-95.15527343749997,49.36967773437502],[-94.85434570312495,49.304589843749994],[-94.86040039062493,49.258593750000045],[-94.80346679687497,49.0029296875]]],[[[-176.28671874999998,51.79199218750006],[-176.34965820312502,51.733300781249994],[-176.41372070312502,51.840576171875],[-176.28671874999998,51.79199218750006]]],[[[-177.87905273437502,51.64970703125002],[-178.05888671875,51.67260742187497],[-177.98637695312493,51.76425781249998],[-178.16826171874996,51.90302734375001],[-177.644482421875,51.826269531250006],[-177.87905273437502,51.64970703125002]]],[[[-177.14819335937497,51.71674804687498],[-177.67021484375002,51.701074218749994],[-177.11005859375,51.92875976562502],[-177.14819335937497,51.71674804687498]]],[[[-176.593310546875,51.86669921875],[-176.45234374999995,51.735693359375034],[-176.96162109374998,51.60366210937505],[-176.69833984374998,51.986035156249955],[-176.593310546875,51.86669921875]]],[[[179.72773437500015,51.905419921874966],[179.50390625000003,51.97958984374998],[179.6271484375001,52.03041992187502],[179.72773437500015,51.905419921874966]]],[[[177.4154296875,51.88281249999997],[177.25029296875013,51.902929687500006],[177.6696289062501,52.10302734375],[177.4154296875,51.88281249999997]]],[[[-173.5533203125,52.13627929687502],[-173.02290039062504,52.07915039062502],[-173.83579101562498,52.048193359375006],[-173.99248046874993,52.12333984374996],[-173.5533203125,52.13627929687502]]],[[[-172.464794921875,52.27226562500002],[-172.61982421874998,52.27285156250005],[-172.47041015625,52.38803710937506],[-172.31362304687497,52.32958984375006],[-172.464794921875,52.27226562500002]]],[[[-174.67739257812502,52.035009765625006],[-175.29555664062502,52.022167968749955],[-174.30615234375,52.216162109375034],[-174.43554687499997,52.317236328125034],[-174.168896484375,52.42016601562503],[-174.04560546875,52.36723632812499],[-174.12065429687493,52.13520507812498],[-174.67739257812502,52.035009765625006]]],[[[173.72275390625018,52.35957031250004],[173.40234375000009,52.40478515625],[173.77607421875004,52.49511718750003],[173.72275390625018,52.35957031250004]]],[[[172.81181640625002,53.01298828125002],[173.43603515625003,52.85205078125],[172.93515625000012,52.752099609374966],[172.49482421875004,52.93789062499999],[172.81181640625002,53.01298828125002]]],[[[-167.96435546875003,53.345117187499994],[-169.088916015625,52.83203125],[-168.68984375000002,53.227246093749955],[-168.38041992187496,53.28344726562506],[-168.28769531249998,53.500146484374966],[-167.82807617187495,53.50795898437505],[-167.96435546875003,53.345117187499994]]],[[[-166.61533203124998,53.90092773437499],[-166.37231445312494,53.99897460937498],[-166.230859375,53.93261718750006],[-166.54560546875,53.726464843749966],[-166.354541015625,53.67353515625004],[-166.85097656249997,53.45288085937503],[-167.78085937500003,53.30024414062501],[-167.13608398437503,53.526464843750006],[-167.01572265625003,53.69838867187502],[-166.80898437500002,53.64614257812505],[-166.741259765625,53.71293945312496],[-167.10561523437497,53.813378906249994],[-167.03808593749997,53.9421875],[-166.67329101562498,54.00595703124998],[-166.61533203124998,53.90092773437499]]],[[[-165.841552734375,54.070654296875006],[-166.05664062500003,54.054345703124994],[-166.08774414062498,54.16914062500001],[-165.89287109375,54.20698242187498],[-165.69287109375,54.09990234375002],[-165.841552734375,54.070654296875006]]],[[[-165.56113281249998,54.13671874999997],[-165.55063476562498,54.28452148437498],[-165.40786132812502,54.19682617187496],[-165.56113281249998,54.13671874999997]]],[[[-162.29814453124993,54.847021484375006],[-162.43388671875,54.931542968749994],[-162.26459960937504,54.983496093750006],[-162.29814453124993,54.847021484375006]]],[[[-163.476025390625,54.98071289062497],[-163.37895507812496,54.81552734374998],[-163.083251953125,54.66899414062496],[-163.35810546874995,54.73569335937506],[-164.82343749999998,54.41909179687505],[-164.887646484375,54.60781250000002],[-164.47861328124998,54.906835937500006],[-163.80712890624997,55.04907226562503],[-163.476025390625,54.98071289062497]]],[[[-159.51513671875,55.15185546875003],[-159.617724609375,55.05732421875004],[-159.54506835937497,55.22597656250002],[-159.51513671875,55.15185546875003]]],[[[-131.33974609375002,55.079833984375],[-131.32954101562498,54.887744140625045],[-131.592236328125,55.02568359374999],[-131.5654296875,55.26411132812498],[-131.33974609375002,55.079833984375]]],[[[-159.87299804687495,55.128759765625034],[-160.22705078124997,54.92270507812506],[-160.17207031249995,55.123046875],[-159.88735351562497,55.27299804687502],[-159.87299804687495,55.128759765625034]]],[[[-132.86225585937504,54.894433593749966],[-132.61723632812493,54.892431640625006],[-132.70581054687497,54.684179687500034],[-133.42905273437498,55.30380859374998],[-133.097412109375,55.213720703125006],[-132.86225585937504,54.894433593749966]]],[[[-160.329296875,55.337695312500045],[-160.34331054687493,55.25878906250006],[-160.51748046875,55.33383789062506],[-160.329296875,55.337695312500045]]],[[[-160.68491210937498,55.314794921875006],[-160.552783203125,55.38076171875002],[-160.48754882812503,55.18486328124999],[-160.79506835937497,55.14521484375001],[-160.72392578124993,55.404638671875006],[-160.68491210937498,55.314794921875006]]],[[[-133.30507812500002,55.54375],[-133.6501953125,55.26928710937506],[-133.73710937500002,55.49692382812498],[-133.30507812500002,55.54375]]],[[[-155.56601562500003,55.82119140625005],[-155.73735351562493,55.82978515625001],[-155.59394531250004,55.92431640625],[-155.56601562500003,55.82119140625005]]],[[[-130.97915039062502,55.489160156249994],[-131.187890625,55.206298828125],[-131.44755859374996,55.40878906250006],[-131.7625,55.16582031250002],[-131.84609374999997,55.41625976562497],[-131.62495117187504,55.831689453124966],[-131.26923828125004,55.95537109375002],[-130.997802734375,55.727636718750006],[-130.97915039062502,55.489160156249994]]],[[[-133.56611328125,56.33920898437498],[-133.202978515625,56.31982421875003],[-133.096630859375,56.09003906250001],[-132.59760742187504,55.89501953125],[-132.17270507812498,55.48061523437502],[-132.51127929687493,55.59394531250001],[-132.63129882812495,55.47319335937502],[-132.41787109375002,55.48291015625006],[-132.20668945312497,55.22441406249996],[-131.97641601562498,55.208593750000034],[-132.06474609375002,54.713134765625],[-133.11855468750002,55.32763671875003],[-132.95888671875002,55.39555664062502],[-133.0333984375,55.589697265625034],[-133.68017578124994,55.78515625],[-133.24150390624993,55.920800781249994],[-133.371240234375,56.035888671875],[-133.74252929687498,55.96484375],[-133.530859375,56.145654296874966],[-133.56611328125,56.33920898437498]]],[[[-132.77988281249998,56.24726562499998],[-133.03500976562498,56.34091796875006],[-132.90205078124998,56.45375976562505],[-132.62910156249995,56.411914062500045],[-132.77988281249998,56.24726562499998]]],[[[-132.11235351562493,56.109375],[-132.13295898437497,55.94326171875005],[-132.28730468749995,55.92939453124998],[-132.65991210937503,56.07817382812499],[-132.379833984375,56.49877929687497],[-132.06689453125,56.24423828124998],[-132.11235351562493,56.109375]]],[[[-154.208642578125,56.51489257812497],[-154.32221679687504,56.570605468750045],[-154.11040039062496,56.602929687499966],[-154.208642578125,56.51489257812497]]],[[[-169.755224609375,56.63505859375002],[-169.47431640624998,56.59404296875002],[-169.6326171875,56.545703125000045],[-169.755224609375,56.63505859375002]]],[[[-132.746875,56.525683593750045],[-132.94804687500002,56.56723632812498],[-132.842529296875,56.79477539062506],[-132.56796875000003,56.57583007812505],[-132.746875,56.525683593750045]]],[[[-133.98959960937503,56.84497070312497],[-133.73837890625,56.65043945312496],[-133.94970703125,56.12773437499996],[-134.18959960937502,56.07695312500002],[-134.084375,56.456347656250045],[-134.37368164062502,56.838671875000045],[-134.14326171874998,56.93232421875001],[-133.98959960937503,56.84497070312497]]],[[[-133.36621093750006,57.003515625000034],[-132.99624023437497,56.93041992187497],[-132.95917968749998,56.67705078124996],[-133.03491210937494,56.62075195312505],[-133.32895507812498,56.83007812499997],[-133.158154296875,56.495166015625045],[-133.4841796875,56.45175781249998],[-133.979443359375,57.009570312500045],[-133.36621093750006,57.003515625000034]]],[[[-153.007080078125,57.12485351562498],[-153.37460937499998,57.05190429687505],[-153.285205078125,57.18505859375],[-152.90839843750004,57.152441406250006],[-153.007080078125,57.12485351562498]]],[[[-134.96977539062496,57.351416015625034],[-134.62070312499998,56.71831054687502],[-134.68188476562503,56.216162109375034],[-134.98056640625003,56.518945312499994],[-134.88344726562497,56.679052734375034],[-135.33061523437505,56.821875],[-135.19960937499997,57.02734375],[-135.45493164062503,57.24941406250005],[-135.81230468750002,57.00952148437503],[-135.82275390625,57.280419921874966],[-135.448681640625,57.534375],[-134.96977539062496,57.351416015625034]]],[[[-152.89804687499998,57.82392578125004],[-152.42875976562493,57.82568359375003],[-152.48261718749998,57.70332031249998],[-152.21621093749997,57.577001953125006],[-152.41220703125003,57.454785156249955],[-152.94077148437498,57.49809570312499],[-152.67905273437503,57.345117187499994],[-153.274365234375,57.22636718749996],[-153.732568359375,57.052343750000034],[-153.643310546875,56.960742187500045],[-154.02734375,56.77797851562502],[-153.793212890625,56.98950195312503],[-154.24375,57.143017578124955],[-154.33896484374998,56.9208984375],[-154.67319335937498,57.44609375],[-154.11616210937498,57.651220703125006],[-153.6876953125,57.30512695312504],[-153.841552734375,57.86284179687496],[-153.48793945312497,57.73095703125],[-153.21748046875004,57.79575195312506],[-153.16044921875,57.97197265624999],[-152.85039062499993,57.896777343750045],[-152.89804687499998,57.82392578125004]]],[[[-135.73037109375002,58.244238281250034],[-135.61323242187507,57.99184570312505],[-135.346630859375,58.12412109374998],[-134.9546875,58.01533203125004],[-134.97065429687495,57.817236328125006],[-135.33847656250003,57.768652343750034],[-134.97885742187503,57.724365234375],[-134.93149414062498,57.48115234375001],[-135.564208984375,57.66640625],[-135.691943359375,57.41992187500006],[-135.91079101562502,57.44658203124999],[-136.568603515625,57.97216796875003],[-136.32197265625,58.21889648437502],[-136.14375,58.098486328125006],[-136.09438476562502,58.198144531249966],[-135.73037109375002,58.244238281250034]]],[[[-134.68027343749998,58.16166992187499],[-134.24008789062498,58.143994140624955],[-133.82275390624997,57.62866210937503],[-134.29233398437498,58.044726562500074],[-133.91113281250003,57.3525390625],[-134.51601562499997,57.042578125],[-134.48676757812495,57.48203125],[-134.92348632812497,58.354638671874966],[-134.68027343749998,58.16166992187499]]],[[[-152.416943359375,58.360205078125034],[-151.974365234375,58.30986328124999],[-152.068896484375,58.17792968750001],[-152.26835937499993,58.25170898437506],[-152.30922851562502,58.133886718750034],[-152.5982421875,58.16259765625],[-152.92841796875004,57.99370117187499],[-153.38134765625003,58.08720703125002],[-152.976123046875,58.29702148437505],[-152.771875,58.278564453125],[-152.84111328125002,58.41640625000002],[-152.416943359375,58.360205078125034]]],[[[-152.486083984375,58.485009765624966],[-152.63662109375002,58.54169921874998],[-152.3955078125,58.619384765625],[-152.486083984375,58.485009765624966]]],[[[-160.918994140625,58.57709960937498],[-161.13149414062502,58.668212890625],[-160.71513671875005,58.79521484375002],[-160.918994140625,58.57709960937498]]],[[[-148.02177734375,60.06533203125005],[-148.271875,60.05327148437499],[-148.07958984375003,60.151660156250045],[-148.02177734375,60.06533203125005]]],[[[-147.735888671875,59.81323242187503],[-147.76806640625,59.94375],[-147.180859375,60.358251953125034],[-147.01987304687498,60.33222656249998],[-147.735888671875,59.81323242187503]]],[[[-166.13544921875,60.38354492187503],[-165.72968750000004,60.31420898437503],[-165.591796875,59.913134765625045],[-166.14873046874996,59.764111328124955],[-167.13886718749998,60.00854492187503],[-167.43642578125002,60.20664062500006],[-166.836328125,60.21699218750004],[-166.47568359374998,60.382763671874955],[-166.13544921875,60.38354492187503]]],[[[-146.3939453125,60.44965820312501],[-146.10224609374998,60.41118164062499],[-146.61831054687497,60.27368164062503],[-146.70253906249997,60.40854492187498],[-146.3939453125,60.44965820312501]]],[[[-147.658251953125,60.45048828124999],[-147.787841796875,60.17792968749998],[-147.89145507812498,60.299414062500034],[-147.658251953125,60.45048828124999]]],[[[-172.74223632812496,60.45737304687498],[-172.23208007812494,60.299121093750074],[-172.63574218750003,60.328857421875],[-173.04765625000002,60.56831054687501],[-172.74223632812496,60.45737304687498]]],[[[-171.46303710937494,63.640039062499994],[-171.03486328125,63.58549804687499],[-170.29936523437502,63.68061523437501],[-169.55454101562498,63.373486328124955],[-168.71601562500004,63.310595703125045],[-168.76132812500003,63.21376953125002],[-169.364697265625,63.17114257812506],[-169.67636718750003,62.95610351562502],[-169.81860351562494,63.122363281250045],[-170.84838867187494,63.44438476562502],[-171.63183593749997,63.351220703124966],[-171.74638671874993,63.703076171874955],[-171.46303710937494,63.640039062499994]]],[[[-141.00214843750004,68.77416992187506],[-141.00214843750004,67.89755859374998],[-141.00214843750004,66.43652343750006],[-141.00214843750004,65.55991210937498],[-141.00214843750004,64.09887695312506],[-141.00214843750004,63.22226562499998],[-141.00214843750004,61.761279296875045],[-141.00214843750004,60.884667968749994],[-141.00214843750004,60.30024414062504],[-140.76274414062505,60.259130859375006],[-140.525439453125,60.218359375000034],[-140.45283203125004,60.29970703125002],[-139.97329101562497,60.183154296875074],[-139.67631835937505,60.32832031249998],[-139.23476562499997,60.339746093749994],[-139.07924804687497,60.34370117187501],[-139.07924804687497,60.279443359374966],[-139.136962890625,60.17270507812498],[-139.18515624999998,60.083593750000034],[-138.86875,59.94575195312501],[-138.317626953125,59.611132812500074],[-137.59331054687493,59.22626953124998],[-137.52089843750002,58.91538085937498],[-137.43857421875003,58.903125],[-137.2775390625,58.988183593749994],[-137.126220703125,59.04096679687498],[-136.81328125000002,59.150048828124994],[-136.57875976562502,59.15224609375002],[-136.46635742187493,59.459082031250006],[-136.27797851562502,59.48032226562506],[-136.321826171875,59.604833984375034],[-135.70258789062504,59.72875976562506],[-135.36787109374998,59.743310546874994],[-135.051025390625,59.57866210937502],[-134.94375,59.28828125000001],[-134.67724609374997,59.19926757812499],[-134.39306640625,59.009179687499994],[-134.32963867187505,58.93969726562506],[-134.21850585937503,58.849902343750045],[-133.54638671874997,58.50346679687499],[-133.27529296875,58.22285156250004],[-133.00141601562495,57.948974609375],[-132.55048828125,57.499902343749994],[-132.44248046874998,57.40673828125003],[-132.30166015624997,57.27631835937501],[-132.232177734375,57.19853515624999],[-132.27939453124998,57.14536132812498],[-132.33798828124998,57.07944335937506],[-132.15703125,57.048193359375006],[-132.03154296875,57.02656250000004],[-132.062890625,56.95336914062503],[-132.104296875,56.856787109375006],[-131.86616210937495,56.792822265625006],[-131.82426757812496,56.589990234374994],[-131.471875,56.55673828125006],[-130.649072265625,56.26367187500003],[-130.47709960937496,56.230566406250034],[-130.413134765625,56.12250976562498],[-130.09785156249995,56.10927734375002],[-130.01406249999997,55.950537109375006],[-130.2140625,55.02587890625003],[-130.57534179687497,54.769677734374966],[-130.849609375,54.80761718750006],[-131.04785156249997,55.157666015624955],[-130.74819335937502,55.31801757812502],[-131.127685546875,55.96015625000001],[-131.032763671875,56.08808593749998],[-131.78417968749997,55.876562500000034],[-131.98339843749994,55.535009765625006],[-132.15541992187502,55.59956054687501],[-132.20751953124997,55.75341796875],[-131.84384765625003,56.16010742187498],[-131.55136718749998,56.206787109375],[-131.88789062500004,56.24165039062498],[-132.18203125000002,56.42065429687506],[-132.82460937500002,57.05581054687505],[-133.465869140625,57.17216796875002],[-133.64873046874993,57.64228515624998],[-133.11704101562498,57.56621093750002],[-133.535205078125,57.83295898437501],[-133.1943359375,57.87768554687506],[-133.559375,57.924462890624994],[-133.72231445312502,57.84423828125],[-134.03110351562498,58.072167968749966],[-133.87675781249996,58.51816406249998],[-134.20883789062503,58.232958984375045],[-134.77612304687506,58.45385742187503],[-135.36367187500002,59.41943359375],[-135.50234375000002,59.202294921874994],[-135.090234375,58.245849609375],[-135.57177734374994,58.41206054687504],[-135.89755859374998,58.40019531250002],[-136.04311523437497,58.82163085937498],[-135.82636718750004,58.89794921874997],[-136.0166015625,58.87397460937498],[-136.150048828125,59.04809570312503],[-136.22583007812497,58.765478515625006],[-136.98901367187503,59.03447265624999],[-137.05903320312498,58.87373046875001],[-136.613916015625,58.809277343749955],[-136.48374023437503,58.61767578125],[-136.224609375,58.602246093749955],[-136.06147460937495,58.45273437500006],[-136.607421875,58.24399414062498],[-137.54399414062502,58.58120117187502],[-138.51489257812503,59.16591796875005],[-139.77329101562498,59.52729492187504],[-139.51303710937498,59.698095703125006],[-139.5123046875,59.95356445312501],[-139.28671874999998,59.610937500000034],[-139.22080078125003,59.819873046875045],[-138.9880859375,59.83500976562502],[-139.43144531249996,60.012255859375074],[-140.41982421874997,59.71074218750002],[-141.40830078125,59.90278320312498],[-141.408740234375,60.11767578125006],[-141.67016601562497,59.969873046874966],[-142.94565429687503,60.09697265625002],[-144.14721679687494,60.01640625000002],[-144.185498046875,60.150732421875034],[-144.901318359375,60.335156249999955],[-144.69111328125,60.66909179687502],[-145.248291015625,60.38012695312506],[-145.898876953125,60.47817382812505],[-145.67490234374998,60.65112304687503],[-146.57045898437497,60.72915039062502],[-146.39199218749997,60.810839843750045],[-146.63842773437497,60.89731445312498],[-146.59912109374994,61.05351562500002],[-146.284912109375,61.11264648437498],[-147.89111328125,60.889892578125],[-148.00512695312494,60.96855468750002],[-147.75185546874997,61.218945312499955],[-148.34189453125,61.060400390625006],[-148.34443359374998,60.853564453125045],[-148.55615234374994,60.82700195312506],[-148.25673828124997,60.67529296874997],[-148.64013671875,60.48945312500004],[-148.11918945312502,60.57514648437498],[-147.96411132812494,60.48486328124997],[-148.430712890625,59.98911132812498],[-149.2666015625,59.99829101562497],[-149.395263671875,60.10576171875002],[-149.59804687500002,59.77045898437501],[-149.7138671875,59.91958007812502],[-149.80126953124994,59.737939453124966],[-150.00532226562507,59.78442382812503],[-150.19804687499996,59.56655273437505],[-150.60737304687504,59.56337890625002],[-150.934521484375,59.249121093750034],[-151.18276367187502,59.30078124999997],[-151.73818359375002,59.18852539062502],[-151.94951171875,59.26508789062498],[-151.88461914062503,59.386328125],[-151.39960937499995,59.51630859375001],[-151.04648437499998,59.771826171875034],[-151.45009765624997,59.65039062499997],[-151.85322265625,59.78208007812498],[-151.39599609375006,60.27446289062502],[-151.35644531249997,60.72294921874999],[-150.44125976562503,61.02358398437505],[-149.07509765624997,60.87641601562498],[-150.05327148437496,61.17109374999998],[-149.433544921875,61.50078125000002],[-149.97568359374998,61.27934570312502],[-150.61225585937495,61.301123046875006],[-151.59350585937494,60.979638671874966],[-152.54091796874997,60.265429687500045],[-153.025,60.29565429687497],[-152.660107421875,59.99721679687502],[-153.21123046875002,59.84272460937498],[-153.09360351562503,59.70913085937505],[-153.65253906250004,59.64702148437499],[-154.17832031250003,59.155566406250074],[-153.41826171875,58.9599609375],[-153.43759765625003,58.754833984374955],[-154.289013671875,58.30434570312502],[-154.247021484375,58.15942382812497],[-155.006884765625,58.01606445312501],[-155.77797851562497,57.56821289062498],[-156.43588867187498,57.359960937500006],[-156.62900390624998,57.00996093750001],[-158.41440429687498,56.435839843750045],[-158.5521484375,56.31269531249998],[-158.27563476562497,56.19624023437498],[-158.5046875,56.062109375],[-158.59116210937503,56.18452148437498],[-158.78984375000002,55.98691406250006],[-159.52324218749993,55.81000976562498],[-159.65966796875003,55.625927734374955],[-159.77138671874997,55.84111328125002],[-160.49931640625002,55.53730468750004],[-161.38193359374998,55.371289062499955],[-161.44379882812495,55.513281250000034],[-161.202099609375,55.54355468750006],[-161.51694335937503,55.61840820312503],[-162.073974609375,55.13930664062505],[-162.38637695312497,55.05234375],[-162.63037109375003,55.24667968749998],[-162.67436523437505,54.99658203125],[-162.86503906249996,54.954541015624955],[-163.11962890624997,55.06469726562503],[-163.131103515625,54.916552734375045],[-163.33530273437503,54.83916015624999],[-163.27880859374997,55.12182617187503],[-162.906591796875,55.19555664062503],[-161.69731445312502,55.9072265625],[-161.215625,56.02143554687498],[-160.8986328125,55.99365234375],[-161.00537109375,55.88715820312498],[-160.80283203125003,55.754443359375045],[-160.70634765625002,55.870458984375034],[-160.29169921875,55.80507812500005],[-160.53906250000006,56.00629882812501],[-160.30205078125,56.31411132812502],[-158.91801757812502,56.882177734375006],[-158.675146484375,56.79487304687498],[-158.66079101562502,57.03940429687498],[-158.32094726562497,57.29790039062499],[-157.84575195312496,57.52807617187497],[-157.4619140625,57.506201171875034],[-157.697216796875,57.679443359375],[-157.610888671875,58.050830078125074],[-157.19370117187498,58.19418945312506],[-157.48837890624998,58.25371093750002],[-157.52363281249998,58.421337890624955],[-156.97465820312496,58.736328125],[-156.80888671875005,59.13427734375],[-157.14204101562504,58.87763671875001],[-158.19091796875003,58.6142578125],[-158.50317382812494,58.85034179687497],[-158.42563476562498,58.99931640625002],[-158.080517578125,58.97744140625002],[-158.422802734375,59.08984375],[-158.67827148437502,58.92939453124998],[-158.80947265625002,58.973876953125],[-158.78862304687493,58.440966796875045],[-158.95068359375,58.404541015625],[-159.67026367187498,58.9111328125],[-159.92021484375,58.819873046875074],[-160.36313476562498,59.05117187500002],[-161.246826171875,58.799462890624994],[-161.36132812499994,58.66953124999998],[-162.144921875,58.64423828124998],[-161.724365234375,58.794287109375006],[-161.64438476562498,59.109667968750045],[-161.9810546875,59.14614257812502],[-161.82871093749998,59.588623046875],[-162.421337890625,60.28398437500002],[-161.96201171875003,60.695361328125045],[-162.68496093749997,60.268945312499966],[-162.57075195312495,59.98974609375],[-163.68037109374998,59.80151367187503],[-164.14282226562497,59.89677734374999],[-165.02651367187497,60.500634765624994],[-165.35380859375002,60.54121093750001],[-164.80517578125,60.89204101562498],[-164.31850585937497,60.77128906249999],[-164.37236328125002,60.59184570312502],[-163.999560546875,60.76606445312498],[-163.72998046874997,60.589990234374994],[-163.420947265625,60.757421875],[-163.90654296874996,60.85380859375002],[-163.58691406249994,60.902978515624994],[-163.74902343750003,60.9697265625],[-163.99462890624997,60.86469726562501],[-165.11484375,60.93281250000004],[-164.86899414062503,61.11176757812498],[-165.27978515624994,61.169628906249955],[-165.27363281250004,61.27485351562498],[-165.56586914062498,61.10234375000002],[-165.86396484375004,61.33569335937503],[-165.84531249999998,61.536230468750034],[-166.152734375,61.545947265625074],[-166.16811523437502,61.65083007812501],[-165.80893554687503,61.69609375000002],[-166.07880859375,61.803125],[-165.61279296875003,61.86928710937502],[-165.707275390625,62.10043945312506],[-165.19453125,62.47353515625002],[-164.75786132812493,62.496728515624966],[-164.589453125,62.709375],[-164.79267578125,62.623193359374966],[-164.79965820312503,62.918066406250006],[-164.384228515625,63.03046874999998],[-164.40903320312503,63.21503906250001],[-163.94287109375,63.247216796874994],[-163.61630859374998,63.125146484374994],[-163.73784179687496,63.016406250000045],[-163.504345703125,63.105859374999966],[-163.28784179687494,63.046435546875045],[-162.621484375,63.26582031249998],[-162.28281250000003,63.529199218749994],[-161.97397460937498,63.45292968749999],[-161.09970703125003,63.557910156250045],[-160.778564453125,63.818945312500034],[-160.987548828125,64.25126953125002],[-161.49072265625003,64.43378906249998],[-160.93193359374996,64.5791015625],[-160.855908203125,64.755615234375],[-161.13017578125005,64.92543945312505],[-161.759375,64.816259765625],[-162.80703124999997,64.37421875000001],[-163.20390625,64.65200195312502],[-163.14433593750002,64.423828125],[-163.71308593749998,64.588232421875],[-164.978759765625,64.45366210937502],[-166.1427734375,64.58276367187503],[-166.48139648437498,64.72807617187507],[-166.415234375,64.926513671875],[-166.92841796875,65.15708007812498],[-166.15703125,65.28583984375001],[-167.40400390625,65.42211914062497],[-168.08837890624997,65.65776367187502],[-166.39873046875002,66.14443359375005],[-165.62993164062496,66.131201171875],[-165.77617187500002,66.31904296875001],[-164.46049804687502,66.58842773437499],[-163.63823242187502,66.57465820312504],[-163.89394531249997,66.57587890625001],[-164.03374023437493,66.21552734374995],[-163.69536132812502,66.08383789062503],[-161.93369140625003,66.04287109374997],[-161.45541992187503,66.28139648437497],[-161.03427734375003,66.18881835937503],[-161.12031249999995,66.334326171875],[-161.91689453124997,66.41181640624998],[-162.54365234375004,66.80512695312501],[-162.36162109375,66.94731445312502],[-161.591015625,66.45952148437502],[-160.23168945312503,66.420263671875],[-160.360888671875,66.6125],[-160.864013671875,66.67084960937501],[-161.39804687499998,66.55185546875],[-161.85668945312497,66.70034179687497],[-161.719921875,67.02055664062502],[-163.5318359375,67.10258789062502],[-164.1251953125,67.60673828125007],[-166.786279296875,68.35961914062497],[-166.38051757812502,68.425146484375],[-166.20908203125,68.88535156250003],[-165.04394531249994,68.882470703125],[-163.867919921875,69.03666992187505],[-161.88095703125003,70.33173828125001],[-162.073876953125,70.16196289062498],[-160.9962890625,70.30458984375],[-160.11713867187495,70.59121093750002],[-159.86567382812498,70.27885742187499],[-159.81499023437496,70.49707031250003],[-159.38676757812493,70.52451171875003],[-160.081591796875,70.63486328125003],[-159.680908203125,70.786767578125],[-159.31450195312496,70.87851562500003],[-159.251171875,70.7484375],[-157.909375,70.860107421875],[-156.47021484374994,71.40766601562501],[-156.469970703125,71.29155273437507],[-155.57944335937503,71.12109374999997],[-156.14658203125,70.92783203125003],[-155.97353515625002,70.84199218749995],[-155.16684570312498,71.09921875000006],[-154.19521484375002,70.80112304687498],[-153.23291015625,70.93256835937504],[-152.49121093749994,70.88095703125],[-152.23291015625,70.81035156249999],[-152.39921875,70.62045898437503],[-151.76904296875,70.56015625],[-151.94467773437498,70.45209960937501],[-149.26943359374997,70.50078124999999],[-147.70537109375,70.21723632812495],[-145.82314453124997,70.16005859375002],[-145.19736328125003,70.00869140625002],[-143.218310546875,70.11625976562499],[-142.70786132812498,70.03378906249998],[-141.40791015625,69.65336914062502],[-141.00214843750004,69.65078125000002],[-141.00214843750004,68.77416992187506]]]]},"properties":{"name":"United States","childNum":76}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[71.20615234375006,39.892578125],[71.15625,39.88344726562502],[71.06425781250002,39.88491210937505],[71.01171874999997,39.895117187500006],[71.04365234375004,39.97631835937503],[71.04482421875005,39.992529296875034],[70.96064453125004,40.087988281250034],[71.00546875,40.15229492187498],[71.0241210937501,40.14916992187497],[71.08037109375007,40.07988281249999],[71.2287109375001,40.04814453124999],[71.20615234375006,39.892578125]]],[[[70.94677734374997,42.24868164062505],[70.97900390625003,42.26655273437504],[71.03603515625,42.28466796875],[71.12998046875006,42.25],[71.21269531250002,42.20644531250005],[71.23232421875005,42.18627929687503],[71.22851562499997,42.16289062499996],[70.18095703125007,41.571435546874994],[70.734375,41.400537109374994],[70.86044921875006,41.22490234375002],[71.11074218750005,41.152636718750045],[71.29882812500003,41.152490234374994],[71.39306640625003,41.123388671875034],[71.40839843750004,41.13603515625002],[71.42089843750003,41.341894531250034],[71.60625,41.367431640625],[71.66494140625,41.54121093749998],[71.70068359374997,41.454003906249966],[71.75771484375005,41.42802734375002],[71.79248046875003,41.41313476562499],[71.85800781250006,41.311376953125034],[71.8786132812501,41.195019531249955],[71.95849609375003,41.18706054687502],[72.05244140625004,41.16474609375001],[72.1154296875001,41.18657226562502],[72.1642578125001,41.173730468749966],[72.18095703125002,41.11845703124999],[72.18730468750002,41.02592773437499],[72.2130859375001,41.014257812500006],[72.36406250000002,41.04345703125],[72.65830078125,40.86992187499999],[73.13212890625002,40.82851562499999],[72.6041015625,40.52543945312499],[72.40205078125004,40.578076171874955],[72.3892578125,40.427392578124994],[72.13125,40.438623046874966],[71.69248046875,40.15234375],[71.30468749999997,40.28691406249996],[70.990625,40.2548828125],[70.95800781250003,40.238867187500034],[70.653125,40.201171875],[70.37158203125003,40.38413085937506],[70.75107421875006,40.721777343750006],[70.40195312500006,41.03510742187498],[69.71289062500003,40.65698242187503],[69.35722656250002,40.76738281249996],[69.20625,40.566552734374994],[69.27490234374997,40.19809570312498],[68.63066406250007,40.16708984374998],[68.9720703125,40.08994140624998],[68.80468750000003,40.05034179687499],[68.86875,39.90747070312503],[68.63896484375007,39.8388671875],[68.46328125,39.53671874999998],[67.71904296875007,39.62138671875002],[67.426171875,39.46557617187497],[67.3576171875001,39.216699218749994],[67.64833984375005,39.13105468750004],[67.69443359375006,38.99462890625003],[68.13251953125004,38.927636718749966],[68.08720703125002,38.47353515625002],[68.3502929687501,38.211035156250006],[67.81435546875005,37.48701171875004],[67.7980468750001,37.244970703125006],[67.75898437500004,37.172216796875034],[67.75292968749997,37.199804687500034],[67.7,37.227246093749955],[67.60742187499997,37.22250976562506],[67.5172851562501,37.26665039062499],[67.44169921875007,37.25800781250001],[67.3197265625,37.209570312500006],[67.1955078125001,37.23520507812498],[67.06884765624997,37.334814453125006],[66.82773437500006,37.37128906249998],[66.52226562500007,37.34848632812506],[66.51064453125,37.45869140625004],[66.51132812500006,37.59916992187496],[66.52558593750004,37.785742187500034],[66.60625,37.98671875000005],[65.97119140624997,38.244238281250006],[65.612890625,38.23857421875002],[64.3099609375,38.97729492187497],[63.76367187500003,39.16054687499999],[62.48320312500002,39.97563476562496],[61.90283203124997,41.09370117187501],[61.496972656249994,41.276074218749955],[61.2423828125001,41.18920898437503],[60.454980468749994,41.221630859374955],[60.089648437500074,41.39941406250003],[60.07558593750005,41.759667968749966],[60.20078125000006,41.803125],[59.94179687499999,41.97353515625002],[59.98515625000002,42.21171875],[59.35429687500002,42.32329101562496],[58.5890625000001,42.778466796874966],[58.477148437500006,42.66284179687503],[58.15156250000004,42.628076171874966],[58.474414062500074,42.29936523437496],[58.02890625,42.48764648437506],[57.814257812500074,42.18984375000005],[57.290625,42.123779296875],[56.96406250000004,41.856542968750006],[57.11884765625004,41.35029296874998],[57.01796875,41.26347656249996],[55.97744140625005,41.32221679687504],[55.97568359375006,44.99492187499996],[58.555273437500006,45.55537109375001],[61.007910156250006,44.39379882812497],[61.99023437500003,43.492138671874955],[63.20703125000003,43.62797851562502],[64.44316406250007,43.55117187499999],[64.9054687500001,43.714697265625006],[65.49619140625,43.310546875],[65.80302734375002,42.87695312500006],[66.1002929687501,42.99082031249998],[66.00957031250007,42.00488281250003],[66.49863281250006,41.99487304687503],[66.70966796875004,41.17915039062501],[67.9357421875001,41.19658203125002],[68.11308593750007,41.02861328124999],[68.04765625000007,40.80927734374998],[68.29189453125,40.656103515625034],[68.57265625,40.62265624999998],[68.58408203125,40.876269531250045],[69.15361328125002,41.42524414062498],[70.94677734374997,42.24868164062505]]]]},"properties":{"name":"Uzbekistan","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[-61.17451171875001,13.158105468749966],[-61.268457031249966,13.287695312499991],[-61.13896484374996,13.358740234374991],[-61.17451171875001,13.158105468749966]]]},"properties":{"name":"St. Vin. and Gren.","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-60.99790039062498,8.867333984374966],[-61.069189453125034,8.947314453125003],[-60.91582031249996,9.070312500000014],[-60.86142578124998,8.949609375000037],[-60.99790039062498,8.867333984374966]]],[[[-60.821191406249966,9.138378906250026],[-60.94140625000003,9.105566406250006],[-60.73583984374997,9.203320312500026],[-60.821191406249966,9.138378906250026]]],[[[-63.84936523437494,11.131005859374994],[-63.917626953124994,10.887548828125048],[-64.40234375,10.981591796875023],[-64.21367187500002,11.086132812499997],[-64.0283203125,11.00185546874998],[-63.84936523437494,11.131005859374994]]],[[[-60.742138671874926,5.202050781250037],[-60.71196289062499,5.191552734375023],[-60.671972656250034,5.164355468749989],[-60.603857421875006,4.94936523437498],[-61.00283203125002,4.535253906249991],[-61.28007812500002,4.516894531249974],[-61.82084960937496,4.197021484375],[-62.153125,4.098388671874986],[-62.41064453124994,4.156738281249972],[-62.71210937499998,4.01791992187502],[-62.85698242187502,3.593457031249969],[-63.33867187500002,3.943896484375045],[-64.02148437500003,3.929101562500051],[-64.19248046874995,4.126855468750009],[-64.57636718750001,4.139892578125],[-64.788671875,4.276025390625023],[-64.66899414062496,4.01181640625002],[-64.22109375000002,3.587402343749972],[-64.04658203124998,2.502392578124997],[-63.389257812500006,2.411914062500045],[-63.43251953124994,2.155566406250045],[-64.00849609374995,1.931591796874969],[-64.20502929687493,1.52949218750004],[-65.10375976562497,1.108105468749983],[-65.47338867187497,0.691259765624977],[-65.55605468750002,0.687988281250014],[-65.52299804687493,0.843408203124966],[-65.68144531249999,0.983447265624989],[-66.06005859375003,0.78535156250004],[-66.34711914062498,0.7671875],[-66.87602539062499,1.223046875000037],[-67.21083984375,2.390136718750043],[-67.61870117187496,2.793603515624994],[-67.85908203124998,2.793603515624994],[-67.3111328125,3.41586914062502],[-67.66162109375,3.864257812499986],[-67.85527343750002,4.506884765624989],[-67.82490234374995,5.270458984375026],[-67.47387695312503,5.929980468750003],[-67.48198242187499,6.18027343750002],[-67.85917968749999,6.289892578124963],[-68.47177734375,6.156542968749974],[-69.42714843749997,6.123974609374997],[-70.12919921874999,6.95361328125],[-70.73715820312503,7.090039062499997],[-71.12861328124993,6.98671875],[-72.00664062499993,7.032617187500023],[-72.20771484374995,7.37026367187498],[-72.47197265624996,7.524267578124991],[-72.39033203124995,8.287060546874969],[-72.66542968749994,8.62758789062498],[-72.79638671874997,9.10898437499999],[-73.05839843749999,9.259570312500031],[-73.36621093749997,9.194140625000017],[-73.00654296874998,9.789160156250006],[-72.86933593750001,10.49125976562496],[-72.690087890625,10.835839843749994],[-72.24848632812501,11.196435546875009],[-71.95810546875,11.66640625],[-71.31972656249997,11.861914062500048],[-71.95693359375002,11.569921874999977],[-71.835107421875,11.190332031250009],[-71.6416015625,11.013525390625048],[-71.73090820312498,10.994677734375017],[-71.59433593749995,10.657373046875051],[-72.11284179687499,9.815576171874966],[-71.61953124999994,9.047949218749991],[-71.24140625000001,9.160449218750003],[-71.08583984375002,9.348242187499977],[-71.05268554687501,9.705810546874986],[-71.49423828125,10.533203124999972],[-71.46953124999993,10.964160156250017],[-70.23251953124998,11.372998046874997],[-70.09711914062493,11.519775390624972],[-69.80478515624998,11.47421875000002],[-69.81733398437495,11.672070312499997],[-70.19257812499993,11.62460937500002],[-70.28652343749997,11.886035156249989],[-70.20278320312497,12.098388671874986],[-70.00395507812496,12.177880859375023],[-69.63159179687494,11.479931640625026],[-68.827978515625,11.431738281249977],[-68.39863281249995,11.160986328124977],[-68.29628906249997,10.689355468749994],[-68.13994140624999,10.492724609374989],[-66.24721679687497,10.632226562499994],[-65.85175781249995,10.257763671874997],[-65.12910156249998,10.070068359375043],[-64.85048828125,10.098095703124969],[-64.188330078125,10.457812499999989],[-63.73188476562501,10.503417968750043],[-64.24750976562498,10.54257812500002],[-64.298193359375,10.635156249999966],[-61.879492187500006,10.741015625000031],[-62.379980468750006,10.546875],[-62.91357421875,10.531494140624986],[-62.68583984374996,10.289794921875043],[-62.740576171875006,10.056152343750043],[-62.55034179687499,10.200439453125043],[-62.320410156250034,9.783056640625006],[-62.22114257812498,9.882568359375028],[-62.15336914062493,9.821777343749986],[-62.15532226562499,9.979248046875014],[-62.077099609374926,9.97504882812504],[-61.73593749999998,9.631201171874977],[-61.76591796874996,9.813818359374963],[-61.58886718749994,9.894531249999986],[-60.79248046874997,9.360742187500037],[-61.02314453124998,9.15458984374996],[-61.24726562499998,8.600341796875014],[-61.61870117187499,8.59746093749996],[-61.30400390624999,8.410400390625043],[-60.800976562499926,8.592138671875034],[-60.16748046875,8.616992187500031],[-60.01752929687501,8.549316406250014],[-59.83164062499998,8.305957031250003],[-59.84907226562498,8.248681640624966],[-59.96484375000003,8.191601562499969],[-59.99072265624997,8.16201171874998],[-60.032421874999926,8.053564453125006],[-60.51362304687501,7.813183593749969],[-60.71865234374994,7.535937499999974],[-60.606542968750006,7.320849609375031],[-60.63330078124997,7.211083984374966],[-60.58320312499998,7.156201171874969],[-60.523193359375,7.143701171875009],[-60.464941406250034,7.166552734375045],[-60.39238281249999,7.164550781249986],[-60.34506835937495,7.15],[-60.32548828124996,7.133984374999983],[-60.32207031249996,7.092041015625043],[-60.35209960937496,7.002880859374997],[-60.39501953125,6.945361328125003],[-60.717919921874966,6.768310546875],[-61.14560546874998,6.694531249999983],[-61.20361328124997,6.588378906250028],[-61.181591796874926,6.513378906250026],[-61.15102539062502,6.446533203124986],[-61.15229492187501,6.385107421875006],[-61.12871093749999,6.214306640625026],[-61.15947265624996,6.174414062499977],[-61.22495117187498,6.129199218750003],[-61.303125,6.049511718750026],[-61.39082031250001,5.938769531250017],[-61.376806640625006,5.906982421875028],[-61.167187499999926,5.674218750000037],[-60.95400390625002,5.437402343750023],[-60.742138671874926,5.202050781250037]]]]},"properties":{"name":"Venezuela","childNum":4}},{"geometry":{"type":"Polygon","coordinates":[[[-64.765625,17.794335937499994],[-64.58046874999994,17.750195312499983],[-64.88911132812495,17.701708984375045],[-64.765625,17.794335937499994]]]},"properties":{"name":"U.S. Virgin Is.","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[104.06396484375003,10.390820312500011],[104.01845703125,10.029199218749966],[103.84951171875005,10.371093749999986],[104.06396484375003,10.390820312500011]]],[[[107.52128906250007,20.926611328124977],[107.39921875000007,20.903466796874966],[107.55126953125003,21.034033203125006],[107.52128906250007,20.926611328124977]]],[[[107.60273437500004,21.21679687500003],[107.40351562500004,21.093652343749994],[107.47626953125004,21.268945312499994],[107.60273437500004,21.21679687500003]]],[[[107.97265624999997,21.507958984375023],[107.40996093750002,21.284814453125023],[107.35429687500007,21.055175781250057],[107.1647460937501,20.94873046875003],[106.68339843750007,21.000292968750074],[106.75341796875003,20.73505859375004],[106.55078124999997,20.52656250000001],[106.57285156250012,20.392187499999977],[105.98408203125004,19.939062500000034],[105.62177734375004,18.96630859375003],[105.88828125000006,18.502490234375045],[106.49902343749997,17.946435546874994],[106.47890625000005,17.719580078125063],[106.3705078125,17.746875],[107.83378906250002,16.322460937499983],[108.02939453125012,16.331103515625074],[108.82128906249997,15.377929687500028],[109.30332031250012,13.856445312500043],[109.271875,13.279345703124974],[109.42392578125006,12.955957031249994],[109.44492187500006,12.599609375000057],[109.33554687500012,12.751904296874997],[109.21894531250004,12.64580078124996],[109.30468750000003,12.391162109375045],[109.20683593750007,12.415380859375006],[109.1986328125,11.724853515625014],[109.03964843750012,11.592675781249994],[108.98671875,11.336376953124997],[108.09492187500004,10.897265624999989],[108.0013671875,10.720361328125009],[107.26152343750007,10.39838867187504],[107.00664062500002,10.66054687499998],[106.94746093750004,10.400341796874997],[106.72734375000007,10.535644531250028],[106.605859375,10.46494140625002],[106.74121093750003,10.444384765625003],[106.75742187500006,10.295800781250023],[106.46406250000004,10.298291015624997],[106.78525390625012,10.116455078124986],[106.59560546875005,9.859863281250028],[106.1364257812501,10.221679687500014],[106.56435546875005,9.715625],[106.48408203125004,9.559423828125006],[105.83095703125005,10.000732421875028],[106.15859375,9.59414062499998],[106.16835937500005,9.396728515625],[105.50097656249997,9.093212890624983],[105.11435546875006,8.629199218750031],[104.77041015625,8.59765625],[104.89628906250007,8.746630859374974],[104.81855468750004,8.801855468750034],[104.84521484375003,9.606152343750026],[105.08447265625003,9.99570312499999],[104.8019531250001,10.202734374999977],[104.66347656250005,10.169921875000043],[104.42636718750006,10.411230468749991],[104.85058593749997,10.534472656249974],[105.04638671874997,10.701660156250014],[105.04570312500002,10.911376953125014],[105.3146484375001,10.845166015625026],[105.40576171875003,10.95161132812504],[105.75507812500004,10.989990234375043],[105.85332031250007,10.86357421874996],[106.16396484375005,10.794921875],[106.16093750000002,11.037109375000057],[105.85605468750006,11.294287109375048],[105.85146484375005,11.635009765625],[106.0060546875001,11.758007812500011],[106.39921875000007,11.687011718750028],[106.41386718750002,11.9484375],[106.70009765625,11.979296874999974],[107.21210937500004,12.30400390624996],[107.39335937500002,12.260498046874972],[107.50644531250006,12.364550781250031],[107.47539062500002,13.030371093749963],[107.60546874999997,13.437792968750017],[107.3314453125,14.126611328125009],[107.51943359375005,14.705078125],[107.51376953125012,14.817382812500057],[107.52451171875012,14.871826171875043],[107.50468750000007,14.915917968749966],[107.48037109375,14.979882812500037],[107.55527343750006,15.057031250000023],[107.58964843750002,15.118457031250017],[107.63369140625005,15.18984375],[107.653125,15.255224609374991],[107.62167968750006,15.309863281250017],[107.56425781250002,15.391601562499972],[107.45957031250012,15.4658203125],[107.33876953125,15.560498046875011],[107.27939453125006,15.618701171875045],[107.16591796875005,15.802490234375028],[107.1888671875,15.838623046875],[107.36064453125002,15.921728515624977],[107.3919921875,15.951660156250028],[107.39638671875,16.04301757812499],[106.93066406249997,16.353125],[106.8927734375001,16.396533203125074],[106.85107421875003,16.515625],[106.83242187500005,16.526269531250023],[106.79160156250006,16.490332031250006],[106.73955078125007,16.452539062500023],[106.6564453125001,16.49262695312501],[106.54619140625002,16.650732421874977],[106.53369140625003,16.821044921875057],[106.52597656250006,16.876611328124994],[106.50224609375002,16.95410156249997],[106.26953125000003,17.21679687500003],[106.00625,17.415283203125057],[105.69140625000003,17.737841796875045],[105.58847656250012,17.983691406250045],[105.51855468749997,18.077441406250045],[105.45820312500004,18.15429687499997],[105.11455078125002,18.40527343750003],[105.08701171875006,18.496240234374994],[105.14541015625,18.616796875000063],[105.14648437500003,18.650976562500006],[103.89160156250003,19.304980468750017],[103.89638671875,19.339990234375023],[103.93203125,19.366064453125006],[104.0275390625001,19.42045898437499],[104.062890625,19.48256835937505],[104.05156250000007,19.564160156249955],[104.01347656250007,19.64648437500003],[104.03203125000002,19.675146484375006],[104.06279296875007,19.678417968749983],[104.25986328125006,19.685498046874983],[104.5462890625,19.61054687500001],[104.58789062500003,19.61875],[104.74316406250003,19.754736328124977],[104.80175781249997,19.83613281250004],[104.81513671875004,19.90400390625001],[104.9279296875001,20.01811523437499],[104.92919921875003,20.082812500000017],[104.88867187500003,20.169091796875023],[104.84785156250004,20.202441406250045],[104.69873046875003,20.20532226562503],[104.67695312500004,20.224707031249977],[104.66191406250007,20.28901367187501],[104.65644531250004,20.32851562499999],[104.6188476562501,20.37451171875003],[104.49619140625006,20.413671875],[104.39218750000012,20.424755859374955],[104.36777343750012,20.44140624999997],[104.40781250000012,20.48574218750005],[104.47861328125006,20.529589843750017],[104.53271484374997,20.55488281250001],[104.58320312500004,20.646679687499955],[104.34960937499997,20.821093750000074],[104.19531249999997,20.913964843749966],[104.10136718750002,20.94550781250001],[103.63505859375007,20.697070312500017],[103.46357421875004,20.779833984375017],[103.21074218750002,20.840625],[103.10449218749997,20.891650390625045],[102.88378906250003,21.202587890624983],[102.85117187500006,21.26591796874999],[102.94960937500005,21.681347656249983],[102.84521484374997,21.73476562500005],[102.81591796874997,21.807373046875],[102.7982421875,21.797949218750034],[102.77109375000006,21.709667968749983],[102.73857421875002,21.67792968750001],[102.66201171875005,21.67602539062497],[102.58251953125003,21.90429687500003],[102.12744140624997,22.379199218750045],[102.1759765625001,22.414648437500006],[102.2370117187501,22.466015624999983],[102.40644531250004,22.70800781249997],[102.47089843750004,22.75092773437501],[102.98193359374997,22.4482421875],[103.32666015625003,22.769775390625057],[103.49296875000007,22.587988281250034],[103.62021484375006,22.782031250000045],[103.94150390625006,22.540087890625045],[104.14306640624997,22.800146484375006],[104.37177734375004,22.704052734374983],[104.68730468750002,22.822216796874983],[104.86474609375003,23.136376953125023],[105.27539062500003,23.34521484375003],[105.8429687500001,22.922802734374955],[106.14843749999997,22.970068359375006],[106.2790039062501,22.857470703125045],[106.54179687500007,22.908349609375023],[106.78027343749997,22.778906250000034],[106.55039062500006,22.501367187499994],[106.66357421875003,21.97890625000005],[106.97099609375002,21.923925781250034],[107.35117187500012,21.60888671874997],[107.75927734374997,21.655029296875057],[107.97265624999997,21.507958984375023]]]]},"properties":{"name":"Vietnam","childNum":4}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[169.49130859375006,-19.54013671875002],[169.34726562500006,-19.623535156249957],[169.2174804687501,-19.476367187500003],[169.24746093750005,-19.3447265625],[169.49130859375006,-19.54013671875002]]],[[[169.334375,-18.940234375000017],[168.98691406250006,-18.87128906250001],[169.01582031250004,-18.64375],[169.14384765625002,-18.63105468750001],[169.334375,-18.940234375000017]]],[[[168.44580078124997,-17.54218750000004],[168.58496093750003,-17.695898437500006],[168.52460937500004,-17.798046875000026],[168.15820312500003,-17.710546874999963],[168.2731445312501,-17.552246093749957],[168.44580078124997,-17.54218750000004]]],[[[168.44677734375003,-16.778808593749957],[168.18144531250002,-16.804003906250017],[168.13535156250006,-16.636914062499997],[168.44677734375003,-16.778808593749957]]],[[[168.29667968750007,-16.33652343749999],[167.92900390625002,-16.22871093749997],[168.16386718750002,-16.081640625000034],[168.29667968750007,-16.33652343749999]]],[[[167.4125,-16.095898437499997],[167.83662109375004,-16.449707031249957],[167.44931640625012,-16.554980468750003],[167.34921875000006,-16.15449218750004],[167.15146484375006,-16.080468749999966],[167.19951171875002,-15.885058593750031],[167.33574218750007,-15.916699218749997],[167.4125,-16.095898437499997]]],[[[167.9113281250001,-15.435937500000023],[167.67421875,-15.4515625],[168.00253906250012,-15.283203124999986],[167.9113281250001,-15.435937500000023]]],[[[166.74580078125004,-14.826855468750011],[166.81015625000012,-15.15742187500004],[167.0755859375,-14.935644531249977],[167.20078125000012,-15.443066406249969],[167.0939453125001,-15.580859374999974],[166.75830078125003,-15.631152343750003],[166.63105468750004,-15.406054687499974],[166.56738281250003,-14.641796874999969],[166.74580078125004,-14.826855468750011]]],[[[167.58486328125,-14.260937500000011],[167.43027343750012,-14.294921875],[167.41074218750006,-14.19746093750004],[167.50644531250012,-14.142187499999977],[167.58486328125,-14.260937500000011]]],[[[167.48886718750006,-13.907226562499972],[167.3917968750001,-13.788378906250017],[167.48105468750006,-13.709472656250014],[167.48886718750006,-13.907226562499972]]]]},"properties":{"name":"Vanuatu","childNum":10}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-171.4541015625,-14.04648437500002],[-171.9119140625,-14.001660156250026],[-172.04589843750003,-13.857128906249983],[-171.60390624999997,-13.879199218750045],[-171.4541015625,-14.04648437500002]]],[[[-172.33349609375,-13.46523437499999],[-172.17685546874998,-13.68466796875002],[-172.224951171875,-13.804296874999963],[-172.535693359375,-13.791699218749983],[-172.77851562499998,-13.516796875000011],[-172.33349609375,-13.46523437499999]]]]},"properties":{"name":"Samoa","childNum":2}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[53.76318359374997,12.636816406249991],[54.18740234375005,12.664013671875026],[54.511132812499994,12.552783203125017],[54.12949218750006,12.360644531250045],[53.71884765625006,12.318994140624994],[53.31582031250005,12.533154296875011],[53.53496093750002,12.715771484374997],[53.76318359374997,12.636816406249991]]],[[[42.75585937500003,13.70429687500004],[42.689746093750074,13.673632812500017],[42.7941406250001,13.766113281250028],[42.75585937500003,13.70429687500004]]],[[[42.787402343750074,13.971484375000031],[42.69404296875004,14.007910156249991],[42.76210937500005,14.067480468750048],[42.787402343750074,13.971484375000031]]],[[[53.08564453125004,16.648388671874955],[52.327734375,16.293554687500063],[52.17402343750004,15.956835937500017],[52.2174804687501,15.655517578125],[51.3224609375001,15.22626953125004],[49.34990234375002,14.637792968749977],[48.66835937499999,14.050146484374977],[47.9899414062501,14.048095703125],[47.40771484374997,13.661621093750057],[46.78886718750002,13.465576171874986],[45.65732421875006,13.338720703124991],[45.03867187500006,12.815869140624969],[44.617773437500006,12.817236328124977],[44.00585937499997,12.607666015625],[43.634375,12.744482421874991],[43.487597656250074,12.69882812500002],[43.23193359375003,13.267089843750057],[43.2824218750001,13.692529296875037],[43.08906250000004,14.010986328125],[42.93642578125005,14.938574218749963],[42.85566406250004,15.132958984375037],[42.65781250000006,15.232812500000051],[42.79902343750004,15.326269531249991],[42.71718750000005,15.654638671875006],[42.83964843750002,16.032031250000074],[42.79931640624997,16.37177734375001],[43.16503906249997,16.689404296874955],[43.19091796875003,17.359375],[43.41796875000003,17.516259765625023],[43.91699218749997,17.32470703124997],[45.14804687500006,17.427441406249955],[45.5353515625001,17.30205078124999],[46.72763671875006,17.26557617187501],[46.97568359375006,16.953466796875034],[47.14355468749997,16.946679687499966],[47.44179687499999,17.111865234375045],[47.57958984374997,17.448339843750034],[48.17216796875002,18.156933593749983],[49.04199218750003,18.58178710937503],[51.977636718750006,18.996142578125074],[53.08564453125004,16.648388671874955]]]]},"properties":{"name":"Yemen","childNum":4}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[37.85693359375003,-46.94423828124998],[37.5900390625001,-46.90800781250006],[37.78955078124997,-46.8375],[37.85693359375003,-46.94423828124998]]],[[[31.799609375000017,-23.8921875],[31.98583984374997,-24.460644531249983],[31.921679687500017,-25.96875],[31.335156250000097,-25.755566406249997],[31.207324218750074,-25.843359375000034],[31.08808593750004,-25.980664062500026],[30.803320312500006,-26.41347656250001],[30.806738281250006,-26.78525390624999],[30.88330078124997,-26.792382812500023],[30.938085937500006,-26.91582031250003],[31.06337890625005,-27.1123046875],[31.274023437500063,-27.23837890625002],[31.469531250000017,-27.29550781250002],[31.74257812500005,-27.309960937500037],[31.95839843750005,-27.305859375],[31.946093750000017,-27.173632812499974],[31.96718750000005,-26.96064453125001],[31.994726562500006,-26.817480468749977],[32.024804687499994,-26.81113281250002],[32.112890625,-26.83945312500002],[32.19960937499999,-26.833496093749957],[32.35351562499997,-26.861621093750003],[32.7765625000001,-26.850976562499966],[32.88613281250005,-26.849316406249983],[32.53476562500006,-28.19970703125003],[32.285742187500006,-28.62148437499998],[31.335156250000097,-29.378125],[29.97119140625003,-31.322070312500017],[28.449414062500068,-32.62460937499999],[27.077441406250074,-33.52119140625004],[26.429492187500045,-33.75957031250002],[25.80585937500001,-33.737109374999974],[25.574218750000057,-34.03535156249998],[25.00292968750003,-33.97363281250003],[24.8271484375,-34.16894531250003],[24.595507812500074,-34.17451171875],[23.697851562500063,-33.99277343750002],[23.268164062500006,-34.08115234374999],[22.553808593750063,-34.01005859374999],[22.24550781250005,-34.06914062500003],[21.788964843750023,-34.37265624999996],[20.529882812500034,-34.4630859375],[20.020605468750006,-34.785742187500006],[19.298242187500023,-34.61503906249996],[19.330761718750068,-34.49238281250001],[19.098339843750068,-34.350097656249986],[18.831347656250017,-34.36406249999999],[18.75214843750004,-34.08261718750002],[18.50039062499999,-34.10927734375004],[18.46162109375001,-34.346875],[18.35205078124997,-34.1884765625],[18.43300781250005,-33.71728515625003],[17.851074218750057,-32.82744140625002],[17.96523437500005,-32.70859374999996],[18.125,-32.74912109374996],[18.325292968750034,-32.50498046874996],[18.21083984375008,-31.74248046874996],[17.34707031250005,-30.44482421875],[16.95,-29.40341796875002],[16.739453124999983,-29.009375],[16.447558593750045,-28.61757812499998],[16.755761718750023,-28.45214843750003],[16.7875,-28.39472656249997],[16.81015625,-28.264550781249994],[16.841210937500023,-28.21894531250004],[16.875292968750045,-28.12792968749997],[16.93330078125004,-28.06962890624999],[17.05625,-28.03105468750003],[17.1884765625,-28.13251953125001],[17.358691406250017,-28.269433593750023],[17.44794921875001,-28.698144531249966],[18.310839843750017,-28.88623046875],[19.16171875,-28.93876953124996],[19.245800781250068,-28.90166015625003],[19.31269531250004,-28.733300781250023],[19.539843750000017,-28.574609375000023],[19.98046875,-28.45126953125002],[19.98046875,-28.310351562500003],[19.98046875,-24.77675781249998],[20.430664062500057,-25.14707031250002],[20.79316406250001,-25.915625],[20.641406250000017,-26.7421875],[20.739843749999977,-26.84882812499997],[21.694726562500023,-26.840917968749963],[21.738085937500045,-26.806835937500026],[21.788281250000068,-26.710058593750034],[22.01093750000004,-26.635839843750006],[22.090917968749977,-26.580175781250034],[22.217578125000045,-26.38886718749997],[22.47089843750004,-26.219042968750003],[22.548632812500074,-26.178417968749997],[22.59765625000003,-26.13271484375001],[22.878808593750023,-25.457910156250023],[23.148730468750017,-25.288671875],[23.389257812500006,-25.291406250000023],[23.89375,-25.600878906250017],[23.96953124999999,-25.62607421874999],[24.192968750000034,-25.632910156249963],[24.33056640625,-25.742871093749983],[25.21337890625,-25.75625],[25.518164062500006,-25.66279296875001],[25.91210937499997,-24.747460937499966],[26.031835937500034,-24.70244140625003],[26.130859375000057,-24.671484375000034],[26.39716796875004,-24.61357421874996],[26.451757812500063,-24.582714843749983],[26.835058593750063,-24.240820312499963],[27.085546875000034,-23.577929687500003],[27.7685546875,-23.14892578125],[27.812597656250006,-23.108007812500006],[28.210156249999983,-22.693652343749974],[28.83984375000003,-22.480859374999966],[28.94580078125003,-22.39511718749999],[29.013476562500045,-22.27841796875002],[29.129882812500057,-22.21328125],[29.364843750000063,-22.19394531250005],[29.37744140625003,-22.19277343749998],[29.66308593749997,-22.146289062500017],[29.90234375000003,-22.184179687500006],[30.19042968750003,-22.291113281250034],[30.460156250000097,-22.329003906250023],[30.71162109375004,-22.297851562499986],[31.07343750000004,-22.30781249999997],[31.19726562499997,-22.344921874999983],[31.287890625000074,-22.402050781249983],[31.54560546875004,-23.48232421874998],[31.799609375000017,-23.8921875]],[[27.19355468750001,-29.94130859375001],[27.364062500000017,-30.27919921875001],[27.753125,-30.6],[28.05683593750001,-30.63105468750001],[28.128710937500017,-30.52509765625001],[28.39208984375003,-30.14755859375002],[28.646875,-30.1265625],[29.09804687500005,-29.919042968750006],[29.142187500000063,-29.70097656249999],[29.293554687500006,-29.56689453125003],[29.348828125000097,-29.441992187499977],[29.38671874999997,-29.319726562500023],[29.301367187500006,-29.08984375],[28.625781250000017,-28.581738281250054],[28.583398437499994,-28.59414062499999],[28.471875,-28.615820312499977],[28.23261718750004,-28.701269531249977],[28.084375,-28.779980468750026],[27.95986328125008,-28.87333984375003],[27.73554687500004,-28.940039062500034],[27.294531250000063,-29.519335937500017],[27.056933593750074,-29.62558593749999],[27.19355468750001,-29.94130859375001]]]]},"properties":{"name":"South Africa","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[33.148046875,-9.603515625],[33.25,-9.759570312500003],[33.35097656250002,-9.862207031250009],[33.33710937500001,-9.954003906250009],[33.3115234375,-10.037988281250009],[33.52890625,-10.234667968750003],[33.53759765625,-10.3515625],[33.5537109375,-10.391308593750011],[33.66152343750002,-10.553125],[33.29277343750002,-10.85234375],[33.37978515625002,-11.157910156250011],[33.26835937500002,-11.40390625],[33.23271484375002,-11.417675781250011],[33.22636718750002,-11.534863281250011],[33.30390625000001,-11.690820312500009],[33.25234375000002,-12.112597656250003],[33.34013671875002,-12.308300781250011],[33.512304687500006,-12.347753906250006],[32.975195312500006,-12.701367187500011],[32.96757812500002,-13.225],[32.67041015625,-13.590429687500006],[32.797460937500006,-13.6884765625],[32.98125,-14.009375],[33.148046875,-13.94091796875],[33.201757812500006,-14.013378906250011],[30.231835937500023,-14.990332031250006],[30.39609375,-15.64306640625],[29.4873046875,-15.69677734375],[28.9130859375,-15.98779296875],[28.760546875000017,-16.53212890625001],[27.932226562500006,-16.89619140625001],[27.020800781250017,-17.95839843750001],[26.779882812500006,-18.04150390625],[26.333398437500023,-17.929296875],[25.995898437500017,-17.969824218750006],[25.2587890625,-17.793554687500006],[25.001757812500017,-17.56855468750001],[24.73291015625,-17.51777343750001],[24.27490234375,-17.481054687500006],[23.380664062500017,-17.640625],[22.193945312500006,-16.628125],[21.979785156250017,-15.95556640625],[21.979394531250023,-14.440527343750006],[21.979296875000017,-14.11962890625],[21.979101562500006,-13.798730468750009],[21.978906250000023,-13.0009765625],[22.209570312500006,-13.0009765625],[23.843164062500023,-13.0009765625],[23.962988281250006,-12.988476562500011],[23.882421875,-12.799023437500011],[23.886523437500017,-12.743261718750006],[23.909375,-12.636132812500009],[23.98388671875,-11.725],[23.96650390625001,-10.871777343750011],[24.36572265625,-11.1298828125],[24.3779296875,-11.417089843750006],[25.28876953125001,-11.21240234375],[25.349414062500017,-11.623046875],[26.025976562500006,-11.89013671875],[26.824023437500017,-11.965234375],[27.1591796875,-11.579199218750006],[27.573828125,-12.22705078125],[28.412890625000017,-12.51806640625],[28.550878906250006,-12.836132812500011],[28.730078125,-12.925488281250011],[29.014257812500006,-13.368847656250011],[29.20185546875001,-13.398339843750009],[29.55419921875,-13.248925781250009],[29.775195312500017,-13.438085937500006],[29.79511718750001,-12.155468750000011],[29.508203125000023,-12.228222656250011],[29.48554687500001,-12.41845703125],[29.064355468750023,-12.348828125000011],[28.482519531250006,-11.812109375],[28.383398437500006,-11.566699218750003],[28.6455078125,-10.550195312500009],[28.60419921875001,-9.678808593750006],[28.400683593750017,-9.224804687500011],[28.869531250000023,-8.785839843750011],[28.89814453125001,-8.485449218750006],[30.75117187500001,-8.193652343750003],[30.830664062500006,-8.385546875],[30.891992187500023,-8.473730468750006],[30.968359375,-8.550976562500011],[31.07636718750001,-8.611914062500006],[31.3505859375,-8.60703125],[31.44921875,-8.65390625],[31.53486328125001,-8.71328125],[31.55625,-8.80546875],[31.673632812500017,-8.908789062500006],[31.91865234375001,-8.9421875],[31.921875,-9.019433593750009],[31.94257812500001,-9.054003906250003],[32.75664062500002,-9.322265625],[32.919921875,-9.407421875000011],[32.99599609375002,-9.622851562500003],[33.148046875,-9.603515625]]]},"properties":{"name":"Zambia","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[31.287890625000017,-22.40205078125001],[31.07343750000001,-22.30781250000001],[30.71162109375001,-22.2978515625],[30.46015625000001,-22.32900390625001],[30.1904296875,-22.291113281250006],[29.90234375,-22.184179687500006],[29.6630859375,-22.146289062500003],[29.37744140625,-22.19277343750001],[29.36484375,-22.193945312500006],[29.315234375000017,-22.15771484375],[29.237207031250023,-22.07949218750001],[29.042382812500023,-22.018359375],[29.02558593750001,-21.796875],[28.014062500000023,-21.55419921875],[27.66943359375,-21.064257812500003],[27.679296875,-20.503027343750006],[27.28076171875,-20.47871093750001],[27.17822265625,-20.10097656250001],[26.168066406250006,-19.53828125000001],[25.939355468750023,-18.93867187500001],[25.242285156250006,-17.969042968750003],[25.2587890625,-17.793554687500006],[25.995898437500017,-17.969824218750006],[26.333398437500023,-17.929296875],[26.779882812500006,-18.04150390625],[27.020800781250017,-17.95839843750001],[27.932226562500006,-16.89619140625001],[28.760546875000017,-16.53212890625001],[28.9130859375,-15.98779296875],[29.4873046875,-15.69677734375],[30.39609375,-15.64306640625],[30.437792968750017,-15.995312500000011],[31.236230468750023,-16.02363281250001],[31.939843750000023,-16.428808593750006],[32.94804687500002,-16.71230468750001],[32.87626953125002,-16.88359375],[32.99306640625002,-18.35957031250001],[32.69970703125,-18.94091796875],[32.84980468750001,-19.10439453125001],[32.77763671875002,-19.388769531250006],[32.992773437500006,-19.98486328125],[32.49238281250001,-20.659765625],[32.353613281250006,-21.136523437500003],[32.429785156250006,-21.29707031250001],[31.429492187500017,-22.298828125],[31.287890625000017,-22.40205078125001]]]},"properties":{"name":"Zimbabwe","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[74.00809389139292,33.25375789331485],[73.19660141888893,33.898124784580936],[73.13410859949555,34.82510160558277],[72.31128647748268,35.77290936638241],[73.08203125000107,36.43949943991182],[73.08961802927895,36.86435907947333],[73.116796875,36.868554687499994],[74.03886718750002,36.825732421874996],[74.54140625000002,37.02216796875],[74.69218750000002,37.0357421875],[74.8892578125,36.952441406249996],[74.94912109375002,36.968359375],[75.05390625000001,36.987158203125],[75.14521484375001,36.9732421875],[75.3466796875,36.913476562499994],[75.37685546875002,36.883691406249994],[75.42421875000002,36.738232421875],[75.46025390625002,36.725048828125],[75.57373046875,36.759326171874996],[75.66718750000001,36.741992187499996],[75.77216796875001,36.694921875],[75.84023437500002,36.649707031249996],[75.88496093750001,36.600732421874994],[75.93300781250002,36.52158203125],[75.95185546875001,36.45810546875],[75.97441406250002,36.382421875],[75.91230468750001,36.048974609374994],[76.07089843750003,35.9830078125],[76.14785156250002,35.829003906249994],[76.17783203125003,35.810546875],[76.25166015625001,35.8109375],[76.3857421875,35.837158203125],[76.50205078125003,35.878222656249996],[76.55126953125,35.887060546875],[76.5634765625,35.772998046874996],[76.6318359375,35.729394531249994],[76.7275390625,35.678662109375],[76.76689453124999,35.66171875],[76.81279296874999,35.571826171874996],[76.88222656250002,35.4357421875],[76.927734375,35.346630859375],[77.04863281249999,35.109912109374996],[77.00087890625002,34.991992187499996],[76.78291015625001,34.900195312499996],[76.75751953125001,34.877832031249994],[76.7490234375,34.847558593749994],[76.6962890625,34.786914062499996],[76.59443359375001,34.73583984375],[76.45673828125001,34.756103515625],[76.17246093750003,34.667724609375],[76.041015625,34.669921875],[75.93828125000002,34.612548828125],[75.86210937500002,34.56025390625],[75.70917968750001,34.503076171874994],[74.300390625,34.765380859375],[74.17197265625,34.7208984375],[74.05585937500001,34.6806640625],[73.96123046875002,34.653466796874994],[73.79453125,34.378222656249996],[73.80996093750002,34.325341796874994],[73.92460937500002,34.287841796875],[73.97236328125001,34.236621093749996],[73.9794921875,34.191308593749994],[73.90390625,34.1080078125],[73.94990234375001,34.018798828125],[74.24648437500002,33.990185546875],[73.97646484375002,33.7212890625],[74.15,33.506982421874994],[74.00809389139292,33.25375789331485]]]},"properties":{"name":"","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[78.49194250885338,32.53122786149202],[78.10154031239509,32.87658365066666],[77.71342088235082,32.6917648744551],[77.06655516561037,33.301666835953235],[76.62299010270264,33.32014871357439],[76.32728006076415,32.87658365066666],[75.73585997688717,32.78417426256088],[75.62496871116024,32.28516356678968],[75.32221348233018,32.28516356678968],[74.98730468749997,32.46220703124996],[74.78886718750013,32.4578125],[74.6857421875001,32.493798828124994],[74.66328125000004,32.75766601562495],[74.63242187499995,32.770898437500136],[74.58828125000011,32.7532226562501],[74.35458984375012,32.76870117187505],[74.30546875000007,32.81044921875002],[74.30361328125005,32.991796875000034],[73.98984375000006,33.22119140625006],[74.15,33.506982421874994],[73.97646484375016,33.72128906249998],[74.24648437500011,33.99018554687504],[73.9499023437501,34.018798828125],[73.90390625000012,34.10800781250006],[73.97949218750009,34.191308593749966],[73.97236328125004,34.23662109374996],[73.92460937500007,34.287841796875114],[73.80996093750016,34.32534179687511],[73.79453125000006,34.378222656250045],[73.96123046875007,34.653466796874994],[74.05585937500015,34.68066406250003],[74.17197265624995,34.72089843750004],[74.30039062500006,34.76538085937506],[75.70917968750004,34.50307617187508],[75.86210937500002,34.56025390625001],[75.93828125000019,34.612548828125],[76.04101562500014,34.66992187499997],[76.17246093750006,34.66772460937506],[76.4567382812501,34.756103515625114],[76.5944335937501,34.73583984375006],[76.69628906249997,34.78691406249999],[76.74902343750014,34.84755859375008],[76.7575195312501,34.87783203125005],[76.7829101562501,34.90019531249999],[77.00087890625011,34.99199218750002],[77.03066406250011,35.06235351562498],[77.04863281250007,35.109912109375074],[77.42343749999995,35.30258789062506],[77.57158203125002,35.37875976562495],[77.69697265625015,35.443261718750136],[77.79941406250006,35.49589843750002],[78.0426757812501,35.4797851562501],[78.07578125000006,35.13491210937502],[78.15849609375002,34.94648437499998],[78.32695312500007,34.60639648437498],[78.86484375000006,34.39033203125001],[78.93642578125,34.35195312500002],[78.97060546875011,34.22822265625004],[78.72666015625006,34.013378906249955],[78.78378906250006,33.80878906250004],[78.86503906250002,33.43110351562501],[78.94843750000004,33.346533203125006],[79.1125,33.22626953125001],[79.13515625000005,33.17192382812496],[79.10283203125007,33.05253906249996],[79.14550781250003,33.00146484375006],[79.16992187500003,32.497216796874994],[78.91894531249997,32.3582031250001],[78.75351562500012,32.49926757812506],[78.73671875,32.55839843750002],[78.49194250885338,32.53122786149202]]]]},"properties":{"name":"","childNum":1}}]}'); +;// CONCATENATED MODULE: ./src/components/Chart/index.js + + + + + + + + + +external_echarts_namespaceObject.registerMap("world", world_namespaceObject); +const Chart = (props) => { + const { + areaStyleColors, + dataLoaded, + hasData, + highlight, + type, + option, + series, + onChange, + zoomStart, + zoomEnd, + title, + seriesConfig = [], + noDataComponent = null, + zoomColors + } = props; + const [tykChartInstance, setTykChartInstance] = (0,external_react_namespaceObject.useState)(null); + const chartWrapperRef = (0,external_react_namespaceObject.useRef)(null); + const onResize = () => { + if (tykChartInstance) { + tykChartInstance.resize(); + } + }; + const lineBarChart = { + defaultOpts: (0,external_immutable_namespaceObject.fromJS)({ + title: { + show: true, + text: title, + left: 0 + }, + color: [], + toolbox: { + right: "0", + orient: "horizontal", + itemSize: 15, + showTitle: true, + feature: null + }, + dataZoom: [{ + show: true, + start: 0, + end: 100, + orient: "horizontal", + dataBackground: { + lineStyle: { + color: (zoomColors == null ? void 0 : zoomColors.lineStyle) || "#368493" + }, + areaStyle: { + color: (zoomColors == null ? void 0 : zoomColors.areaStyle) || "#368493" + } + }, + handleStyle: { + color: (zoomColors == null ? void 0 : zoomColors.handleStyle) || "#368493" + }, + textStyle: { + color: (zoomColors == null ? void 0 : zoomColors.textStyle) || "#368493" + }, + borderColor: "transparent", + fillerColor: (zoomColors == null ? void 0 : zoomColors.fillerColor) || "rgba(54, 132, 147, 0.1)" + }], + legend: { + show: false + // data: [], + // right: '1%', + }, + tooltip: { + trigger: "axis", + axisPointer: { + type: "cross" + } + }, + grid: { + left: "1%", + right: "1%", + bottom: "50px", + top: "40px", + containLabel: true + }, + xAxis: { + boundaryGap: false, + type: "category", + splitLine: { + show: true, + lineStyle: { + type: "dotted", + color: "#F0F0F0" + } + }, + axisLine: { + show: false + }, + axisTick: { + show: false + }, + data: [] + }, + yAxis: { + min: "dataMin", + boundaryGap: true, + axisPointer: { + show: true + }, + splitLine: { + lineStyle: { + type: "dotted", + color: "#F0F0F0" + }, + show: true + }, + axisLabel: { + show: true + }, + axisLine: { + show: true + }, + axisTick: { + show: false + }, + type: "value" + }, + textStyle: { + color: "#5a5a68" + }, + series: [], + animationEasing: "elasticOut" + }), + seriesDefault: (0,external_immutable_namespaceObject.fromJS)({ + data: [], + type: "line", + areaStyle: { + opacity: 1, + color: areaStyleColors ? new external_echarts_namespaceObject.graphic.LinearGradient( + 0, + 0, + 1, + 1, + areaStyleColors.map((color, index) => ({ + offset: index, + color + })) + ) : [] + }, + smooth: false, + symbolSize: 7, + name: "" + }) + }; + const pieChart = { + defaultOpts: (0,external_immutable_namespaceObject.fromJS)({ + tooltip: { + trigger: "axis", + formatter: "{b}: {c} ({d}%)" + }, + legend: { + orient: "horizontal", + x: "left", + y: "top", + data: [] + }, + color: [], + series: [] + }), + seriesDefault: (0,external_immutable_namespaceObject.fromJS)({ + type: "pie", + center: [ + "50%", + "55%" + ], + radius: [ + "50%", + "75%" + ], + avoidLabelOverlap: false, + animationType: "scale", + animationEasing: "elasticOut", + labelLine: { + normal: { + show: true, + smooth: 0.2, + length: 6, + length2: 6 + } + }, + data: [] + }) + }; + const geoChart = { + defaultOpts: (0,external_immutable_namespaceObject.fromJS)({ + series: [] + }), + seriesDefault: (0,external_immutable_namespaceObject.fromJS)({ + type: "map", + data: [] + }) + }; + const buildChartOptions = (selectedType, selectedOptions, selectedSeries) => { + let finalOpts = {}; + switch (selectedType) { + case "pie": { + finalOpts = pieChart.defaultOpts.mergeDeep((0,external_immutable_namespaceObject.fromJS)(selectedOptions)).toJS(); + selectedSeries.forEach((entry) => { + finalOpts.series.push(pieChart.seriesDefault.mergeDeep((0,external_immutable_namespaceObject.fromJS)(entry)).toJS()); + }); + break; + } + case "geo": { + finalOpts = geoChart.defaultOpts.mergeDeep((0,external_immutable_namespaceObject.fromJS)(selectedOptions)).toJS(); + selectedSeries.forEach((entry) => { + finalOpts.series.push(geoChart.seriesDefault.mergeDeep((0,external_immutable_namespaceObject.fromJS)(entry)).toJS()); + }); + break; + } + default: { + finalOpts = lineBarChart.defaultOpts.mergeDeep((0,external_immutable_namespaceObject.fromJS)(selectedOptions)).toJS(); + if (Array.isArray(selectedOptions.yAxis)) { + finalOpts.yAxis = selectedOptions.yAxis; + } + selectedSeries.forEach((entry, index) => { + const seriesData = Object.assign( + {}, + lineBarChart.seriesDefault.toJS(), + seriesConfig[index], + entry + ); + finalOpts.series.push(seriesData); + }); + break; + } + } + return finalOpts; + }; + (0,external_react_namespaceObject.useEffect)(() => { + window.addEventListener("resize", onResize); + return () => { + window.removeEventListener("resize", onResize); + }; + }, [tykChartInstance]); + (0,external_react_namespaceObject.useEffect)(() => { + if (!(chartWrapperRef == null ? void 0 : chartWrapperRef.current)) { + return; + } + setTykChartInstance(external_echarts_namespaceObject.init(chartWrapperRef.current)); + return () => { + if (tykChartInstance) { + tykChartInstance.dispose(); + } + }; + }, [chartWrapperRef.current]); + const eventCallBack = (e) => { + if (onChange) { + onChange(e); + } + }; + (0,external_react_namespaceObject.useEffect)(() => { + let debouncedMethod; + if (tykChartInstance) { + debouncedMethod = debounce(eventCallBack, 500); + tykChartInstance.on("dataZoom", debouncedMethod); + tykChartInstance.on("restore", debouncedMethod); + tykChartInstance.on("click", debouncedMethod); + tykChartInstance.on("mousemove", (params) => { + if (params.data) { + tykChartInstance.getZr().setCursorStyle("pointer"); + } + }); + } + return () => { + if (tykChartInstance) { + tykChartInstance.off("dataZoom", debouncedMethod); + tykChartInstance.off("restore", debouncedMethod); + tykChartInstance.off("click", debouncedMethod); + } + }; + }, [tykChartInstance, onChange]); + const prevInstance = hooks_usePrevious(tykChartInstance); + const prevOption = hooks_usePrevious(option); + const prevType = hooks_usePrevious(type); + const prevSeries = hooks_usePrevious(series); + (0,external_react_namespaceObject.useEffect)(() => { + var _a, _b, _c, _d, _e, _f; + if (tykChartInstance && (!((_b = (_a = (0,external_immutable_namespaceObject.fromJS)(prevInstance)) == null ? void 0 : _a.equals) == null ? void 0 : _b.call(_a, (0,external_immutable_namespaceObject.fromJS)(tykChartInstance))) || !((_d = (_c = (0,external_immutable_namespaceObject.fromJS)(prevOption)) == null ? void 0 : _c.equals) == null ? void 0 : _d.call(_c, (0,external_immutable_namespaceObject.fromJS)(option))) || prevType !== type || !((_f = (_e = (0,external_immutable_namespaceObject.fromJS)(prevSeries)).equals) == null ? void 0 : _f.call(_e, (0,external_immutable_namespaceObject.fromJS)(series))))) { + tykChartInstance.clear(); + tykChartInstance.setOption(buildChartOptions(type, option, series)); + tykChartInstance.dispatchAction({ + type: "takeGlobalCursor", + key: "dataZoomSelect", + dataZoomSelectActive: true + }); + } + }, [tykChartInstance, option, series, type]); + (0,external_react_namespaceObject.useEffect)(() => { + if (tykChartInstance && highlight) { + tykChartInstance.dispatchAction({ + type: "highlight", + seriesIndex: highlight.seriesIndex, + dataIndex: highlight.dataIndex + }); + tykChartInstance.dispatchAction({ + type: "showTip", + seriesIndex: highlight.seriesIndex, + dataIndex: highlight.dataIndex + }); + } + }, [highlight]); + const prevZoomStart = hooks_usePrevious(zoomStart); + const prevZoomEnd = hooks_usePrevious(zoomEnd); + (0,external_react_namespaceObject.useEffect)(() => { + if (tykChartInstance && zoomStart !== -1 && zoomEnd !== -1 && (prevZoomStart !== zoomStart || prevZoomEnd !== zoomEnd)) { + tykChartInstance.dispatchAction({ + type: "dataZoom", + startValue: zoomStart, + endValue: zoomEnd + }); + } + }, [zoomStart, zoomEnd]); + const getStyle = () => { + const { style } = props; + const tempStyle = style || {}; + if (!tempStyle.height) { + tempStyle.height = "300px"; + } + if (!tempStyle.width) { + tempStyle.width = "100%"; + } + return tempStyle; + }; + const chartHasData = () => dataLoaded && (hasData === false || hasData === true) ? hasData : true; + const getCssClasses = () => { + const cssClasses = ["tyk-chart"]; + if (!dataLoaded) { + cssClasses.push("tyk-chart--loading-chart"); + } + if (!chartHasData()) { + cssClasses.push("tyk-chart--no-data"); + } + return cssClasses.join(" "); + }; + return /* @__PURE__ */ external_react_default().createElement( + "div", + { className: "tyk-chart__wrapper" }, + !dataLoaded ? /* @__PURE__ */ external_react_default().createElement(components_Loader, null) : null, + /* @__PURE__ */ external_react_default().createElement( + "div", + { + className: getCssClasses(), + style: getStyle(), + ref: chartWrapperRef + } + ), + /* eslint-disable-next-line no-nested-ternary */ + chartHasData() ? null : noDataComponent ? noDataComponent() : /* @__PURE__ */ external_react_default().createElement(components_Message, { theme: "info" }, "No data to display") + ); +}; +Chart.propTypes = { + areaStyleColors: external_prop_types_default().instanceOf(Array), + dataLoaded: (external_prop_types_default()).bool, + hasData: (external_prop_types_default()).bool, + highlight: external_prop_types_default().oneOfType([ + (external_prop_types_default()).number, + (external_prop_types_default()).string, + external_prop_types_default().instanceOf(Array) + ]), + noDataComponent: (external_prop_types_default()).func, + zoomStart: (external_prop_types_default()).number, + zoomEnd: (external_prop_types_default()).number, + zoomColors: external_prop_types_default().instanceOf(Object), + option: external_prop_types_default().instanceOf(Object), + onChange: (external_prop_types_default()).func, + style: external_prop_types_default().instanceOf(Object), + type: (external_prop_types_default()).string, + title: (external_prop_types_default()).string, + series: external_prop_types_default().instanceOf(Array), + seriesConfig: external_prop_types_default().instanceOf(Object) +}; +/* harmony default export */ const components_Chart = ((0,external_react_namespaceObject.memo)(Chart)); + +// EXTERNAL MODULE: ./node_modules/react-dom/client.js +var client = __webpack_require__(745); +;// CONCATENATED MODULE: ./src/components/Toast/js/ToastMessage.js + + + + +const ToastMessage = (props) => { + const { + children, + options, + onClose, + index + } = props; + const opts = Object.assign({ + theme: "success", + delay: 3e3 + }, options); + let timer; + const handleClose = (itemIndex) => { + onClose(itemIndex); + clearTimeout(timer); + }; + hooks_useTimeout(() => handleClose(index), opts.delay); + return /* @__PURE__ */ external_react_default().createElement( + components_Message, + { + className: "tyk-toast__message", + theme: opts.theme, + onClose: () => handleClose(index) + }, + children + ); +}; +ToastMessage.propTypes = { + children: external_prop_types_default().oneOfType([ + (external_prop_types_default()).element, + (external_prop_types_default()).node, + (external_prop_types_default()).string + ]), + options: external_prop_types_default().instanceOf(Object), + onClose: (external_prop_types_default()).func, + index: (external_prop_types_default()).number +}; +/* harmony default export */ const js_ToastMessage = (ToastMessage); + +;// CONCATENATED MODULE: ./src/components/Toast/js/ToastContainer.js +var ToastContainer_defProp = Object.defineProperty; +var ToastContainer_defProps = Object.defineProperties; +var ToastContainer_getOwnPropDescs = Object.getOwnPropertyDescriptors; +var ToastContainer_getOwnPropSymbols = Object.getOwnPropertySymbols; +var ToastContainer_hasOwnProp = Object.prototype.hasOwnProperty; +var ToastContainer_propIsEnum = Object.prototype.propertyIsEnumerable; +var ToastContainer_defNormalProp = (obj, key, value) => key in obj ? ToastContainer_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var ToastContainer_spreadValues = (a, b) => { + for (var prop in b || (b = {})) + if (ToastContainer_hasOwnProp.call(b, prop)) + ToastContainer_defNormalProp(a, prop, b[prop]); + if (ToastContainer_getOwnPropSymbols) + for (var prop of ToastContainer_getOwnPropSymbols(b)) { + if (ToastContainer_propIsEnum.call(b, prop)) + ToastContainer_defNormalProp(a, prop, b[prop]); + } + return a; +}; +var ToastContainer_spreadProps = (a, b) => ToastContainer_defProps(a, ToastContainer_getOwnPropDescs(b)); +var __restKey = (key) => typeof key === "symbol" ? key : key + ""; +var ToastContainer_objRest = (source, exclude) => { + var target = {}; + for (var prop in source) + if (ToastContainer_hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) + target[prop] = source[prop]; + if (source != null && ToastContainer_getOwnPropSymbols) + for (var prop of ToastContainer_getOwnPropSymbols(source)) { + if (exclude.indexOf(prop) < 0 && ToastContainer_propIsEnum.call(source, prop)) + target[prop] = source[prop]; + } + return target; +}; + + + +const ToastContainer = (props) => { + const [messages, setMessages] = (0,external_react_namespaceObject.useState)({}); + const { + notify + } = props; + const updateNotifications = (message, options) => { + const msgID = Math.floor(Math.random() * 1e6); + setMessages((prevMessages) => ToastContainer_spreadProps(ToastContainer_spreadValues({}, prevMessages), { + [msgID]: { + message, + options + } + })); + }; + (0,external_react_namespaceObject.useEffect)(() => { + notify(updateNotifications); + }, [messages]); + const onMessageClosed = (index) => { + const tempMessages = ToastContainer_spreadValues({}, messages); + delete tempMessages[index]; + setMessages((prevMessages) => { + const _a = prevMessages, { [index]: messageToBeRemoved } = _a, restMessages = ToastContainer_objRest(_a, [__restKey(index)]); + return restMessages; + }); + }; + return /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-toast__container" }, Object.keys(messages).map((msgID) => messages[msgID] ? /* @__PURE__ */ external_react_default().createElement( + js_ToastMessage, + { + options: messages[msgID].options, + onClose: onMessageClosed.bind(null, msgID), + index: msgID, + key: msgID + }, + messages[msgID].message + ) : null)); +}; +ToastContainer.propTypes = { + notify: (external_prop_types_default()).func +}; +/* harmony default export */ const js_ToastContainer = (ToastContainer); + +;// CONCATENATED MODULE: ./src/components/Toast/index.js +var Toast_defProp = Object.defineProperty; +var Toast_defProps = Object.defineProperties; +var Toast_getOwnPropDescs = Object.getOwnPropertyDescriptors; +var Toast_getOwnPropSymbols = Object.getOwnPropertySymbols; +var Toast_hasOwnProp = Object.prototype.hasOwnProperty; +var Toast_propIsEnum = Object.prototype.propertyIsEnumerable; +var Toast_defNormalProp = (obj, key, value) => key in obj ? Toast_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var Toast_spreadValues = (a, b) => { + for (var prop in b || (b = {})) + if (Toast_hasOwnProp.call(b, prop)) + Toast_defNormalProp(a, prop, b[prop]); + if (Toast_getOwnPropSymbols) + for (var prop of Toast_getOwnPropSymbols(b)) { + if (Toast_propIsEnum.call(b, prop)) + Toast_defNormalProp(a, prop, b[prop]); + } + return a; +}; +var Toast_spreadProps = (a, b) => Toast_defProps(a, Toast_getOwnPropDescs(b)); +var __publicField = (obj, key, value) => { + Toast_defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); + return value; +}; + + + +class ToastCreator { + constructor() { + __publicField(this, "bindNotify", (fn) => { + this.createNotification = fn; + }); + const el = document.createElement("div"); + el.className = "tyk-toast"; + document.body.appendChild(el); + const root = (0,client/* createRoot */.s)(el); + root.render(/* @__PURE__ */ external_react_default().createElement(js_ToastContainer, { notify: this.bindNotify })); + } + notify(message, options) { + if (this.createNotification) { + this.createNotification(message, options); + } + } + danger(message, options) { + this.notify(message, Toast_spreadProps(Toast_spreadValues({}, options), { theme: "danger" })); + } + success(message, options) { + this.notify(message, Toast_spreadProps(Toast_spreadValues({}, options), { theme: "success" })); + } + warning(message, options) { + this.notify(message, Toast_spreadProps(Toast_spreadValues({}, options), { theme: "warning" })); + } + info(message, options) { + this.notify(message, Toast_spreadProps(Toast_spreadValues({}, options), { theme: "info" })); + } +} +const toast = new ToastCreator(); +/* harmony default export */ const Toast = (toast); + +;// CONCATENATED MODULE: ./src/components/CopyToClipboard/index.js +var CopyToClipboard_defProp = Object.defineProperty; +var CopyToClipboard_getOwnPropSymbols = Object.getOwnPropertySymbols; +var CopyToClipboard_hasOwnProp = Object.prototype.hasOwnProperty; +var CopyToClipboard_propIsEnum = Object.prototype.propertyIsEnumerable; +var CopyToClipboard_defNormalProp = (obj, key, value) => key in obj ? CopyToClipboard_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var CopyToClipboard_spreadValues = (a, b) => { + for (var prop in b || (b = {})) + if (CopyToClipboard_hasOwnProp.call(b, prop)) + CopyToClipboard_defNormalProp(a, prop, b[prop]); + if (CopyToClipboard_getOwnPropSymbols) + for (var prop of CopyToClipboard_getOwnPropSymbols(b)) { + if (CopyToClipboard_propIsEnum.call(b, prop)) + CopyToClipboard_defNormalProp(a, prop, b[prop]); + } + return a; +}; + + + +const CopyToClipboard = (props) => { + const { + display, + copy, + children, + onCopy + } = props; + const txtRef = (0,external_react_namespaceObject.createRef)(); + const handleClick = (0,external_react_namespaceObject.useCallback)(() => { + if (onCopy) { + onCopy(); + } + if (!window.navigator.clipboard) { + txtRef.current.select(); + document.execCommand("copy"); + Toast.notify("copied", { theme: "success" }); + return; + } + window.navigator.clipboard.writeText(copy); + Toast.notify("copied", { theme: "success" }); + }, [onCopy, txtRef]); + return /* @__PURE__ */ external_react_default().createElement(external_react_namespaceObject.Fragment, null, /* @__PURE__ */ external_react_default().createElement(props.element, CopyToClipboard_spreadValues({ onClick: handleClick, onKeyUp: handleClick }, props), children || display), !window.navigator.clipboard ? /* @__PURE__ */ external_react_default().createElement("textarea", { ref: txtRef, className: "tyk-copy-to-clipboard", name: "copy", value: copy }, copy) : null); +}; +CopyToClipboard.propTypes = { + /** Callback function executed after text is copied */ + onCopy: (external_prop_types_default()).func, + /** Text to be copied */ + copy: (external_prop_types_default()).string.isRequired, + /** Text to be displayed */ + display: (external_prop_types_default()).string, + /** Children of custom element if you are using any custom element */ + children: external_prop_types_default().oneOfType([ + (external_prop_types_default()).element, + (external_prop_types_default()).string, + (external_prop_types_default()).object, + (external_prop_types_default()).node + ]) +}; +/* harmony default export */ const components_CopyToClipboard = (CopyToClipboard); + +// EXTERNAL MODULE: external "react-dom" +var external_react_dom_ = __webpack_require__(137); +var external_react_dom_default = /*#__PURE__*/__webpack_require__.n(external_react_dom_); +;// CONCATENATED MODULE: ./src/components/Modal/js/ModalFooter.js + + +function ModalFooter({ children }) { + return /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-modal__footer" }, children); +} +ModalFooter.propTypes = { + children: external_prop_types_default().oneOfType([ + (external_prop_types_default()).element, + (external_prop_types_default()).node, + (external_prop_types_default()).string + ]) +}; +/* harmony default export */ const js_ModalFooter = (ModalFooter); + +;// CONCATENATED MODULE: ./src/components/Modal/js/ModalBody.js + + +function ModalBody({ children }) { + return /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-modal__body" }, children); +} +ModalBody.propTypes = { + children: external_prop_types_default().oneOfType([ + (external_prop_types_default()).element, + (external_prop_types_default()).node, + (external_prop_types_default()).string + ]) +}; +/* harmony default export */ const js_ModalBody = (ModalBody); + +;// CONCATENATED MODULE: ./src/components/Modal/index.js +var Modal_defProp = Object.defineProperty; +var Modal_getOwnPropSymbols = Object.getOwnPropertySymbols; +var Modal_hasOwnProp = Object.prototype.hasOwnProperty; +var Modal_propIsEnum = Object.prototype.propertyIsEnumerable; +var Modal_defNormalProp = (obj, key, value) => key in obj ? Modal_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var Modal_spreadValues = (a, b) => { + for (var prop in b || (b = {})) + if (Modal_hasOwnProp.call(b, prop)) + Modal_defNormalProp(a, prop, b[prop]); + if (Modal_getOwnPropSymbols) + for (var prop of Modal_getOwnPropSymbols(b)) { + if (Modal_propIsEnum.call(b, prop)) + Modal_defNormalProp(a, prop, b[prop]); + } + return a; +}; +var Modal_objRest = (source, exclude) => { + var target = {}; + for (var prop in source) + if (Modal_hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) + target[prop] = source[prop]; + if (source != null && Modal_getOwnPropSymbols) + for (var prop of Modal_getOwnPropSymbols(source)) { + if (exclude.indexOf(prop) < 0 && Modal_propIsEnum.call(source, prop)) + target[prop] = source[prop]; + } + return target; +}; + + + + + + + +function Modal(_a) { + var _b = _a, { + children, + theme = "none", + disableCloseCommands = false, + opened = false, + onClose = () => { + }, + size = "md", + className = "", + showBackdrop = true + } = _b, restProps = Modal_objRest(_b, [ + "children", + "theme", + "disableCloseCommands", + "opened", + "onClose", + "size", + "className", + "showBackdrop" + ]); + const modalClasses = [ + "tyk-modal", + `tyk-modal--theme-${theme}`, + opened && "opened" + ].concat(className.split(" ")).filter(Boolean).join(" "); + const backdropClasses = [ + "tyk-modal__backdrop", + opened && "opened" + ].filter(Boolean).join(" "); + const themeIcon = { + success: "check", + warning: "warning", + danger: "delete" + }[theme]; + return /* @__PURE__ */ external_react_default().createElement((external_react_default()).Fragment, null, external_react_dom_default().createPortal( + /* @__PURE__ */ external_react_default().createElement( + external_react_transition_group_namespaceObject.CSSTransition, + { + in: opened, + timeout: 100, + classNames: "appear" + }, + /* @__PURE__ */ external_react_default().createElement("div", Modal_spreadValues({ className: modalClasses }, restProps), /* @__PURE__ */ external_react_default().createElement("div", { className: `tyk-modal__dialog tyk-modal--${size}` }, /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-modal__content" }, theme !== "none" && /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-modal__theme-header" }, /* @__PURE__ */ external_react_default().createElement(components_Icon, { family: "tykon", type: themeIcon })), children))) + ), + document.querySelector("body") + ), showBackdrop && external_react_dom_default().createPortal( + /* @__PURE__ */ external_react_default().createElement( + external_react_transition_group_namespaceObject.CSSTransition, + { + in: opened, + timeout: 100, + classNames: "fade" + }, + /* @__PURE__ */ external_react_default().createElement( + "button", + { + className: backdropClasses, + onClick: () => !disableCloseCommands && onClose(), + onKeyDown: () => { + }, + type: "button", + "aria-label": "Close" + } + ) + ), + document.querySelector("body") + )); +} +Modal.Body = js_ModalBody; +Modal.Footer = js_ModalFooter; +Modal.Header = ({ children }) => { + console.warn("%cModal.Header%c is deprecated.", "font-weight: bold", ""); + return /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-modal__header" }, children); +}; +Modal.Title = ({ children }) => { + console.warn("%cModal.Title%c is deprecated.", "font-weight: bold", ""); + return /* @__PURE__ */ external_react_default().createElement("h4", { className: "tyk-modal__title" }, children); +}; +Modal.propTypes = { + children: external_prop_types_default().oneOfType([ + (external_prop_types_default()).element, + (external_prop_types_default()).node, + (external_prop_types_default()).string + ]), + className: (external_prop_types_default()).string, + /** one of "success", "warning", "danger", "none"; default is "none" */ + theme: (external_prop_types_default()).string, + /** If set on true, the Modal won't close when clicking on the overlay or by pressing ESC key */ + disableCloseCommands: (external_prop_types_default()).bool, + /** If true the Modal will be by default opened */ + opened: (external_prop_types_default()).bool, + /** Callback method when the Modal is closed */ + onClose: (external_prop_types_default()).func, + /** Width of the Moda: md or lg */ + size: (external_prop_types_default()).string, + showBackdrop: (external_prop_types_default()).bool +}; +/* harmony default export */ const components_Modal = (Modal); + +;// CONCATENATED MODULE: ./src/components/Confirm/index.js + + + + +function Confirm(props) { + const { + children, + title, + description, + confirmBtnText = "Confirm", + cancelBtnText = "Cancel" + } = props; + const [open, setOpen] = (0,external_react_namespaceObject.useState)(false); + const [callback, setCallback] = (0,external_react_namespaceObject.useState)(null); + const [cancelCallback, setCancelCallback] = (0,external_react_namespaceObject.useState)(null); + const show = (callbackFunc, cancelCallbackFunc, beforeCallback) => (...args) => { + if (beforeCallback) { + beforeCallback(...args); + } + setOpen(true); + setCallback(() => () => callbackFunc(...args)); + if (cancelCallbackFunc) { + setCancelCallback(() => () => cancelCallbackFunc(...args)); + } + }; + const hide = () => { + setOpen(false); + setCallback(null); + setCancelCallback(null); + }; + const cancel = () => { + if (cancelCallback) { + cancelCallback(); + } + hide(); + }; + const confirm = () => { + callback(); + hide(); + }; + return /* @__PURE__ */ external_react_default().createElement((external_react_default()).Fragment, null, children(show), /* @__PURE__ */ external_react_default().createElement( + components_Modal, + { + opened: open, + onClose: cancel + }, + /* @__PURE__ */ external_react_default().createElement(components_Modal.Body, null, /* @__PURE__ */ external_react_default().createElement("h4", null, title), description), + /* @__PURE__ */ external_react_default().createElement(components_Modal.Footer, null, /* @__PURE__ */ external_react_default().createElement( + components_Button, + { + onClick: cancel, + theme: "default" + }, + cancelBtnText + ), /* @__PURE__ */ external_react_default().createElement( + components_Button, + { + onClick: confirm, + theme: "success" + }, + confirmBtnText + )) + )); +} +Confirm.propTypes = { + /** Sets the text for primary / confirmation button on opened modal */ + confirmBtnText: (external_prop_types_default()).string, + /** Sets the text for danger / abort button on opened modal */ + cancelBtnText: (external_prop_types_default()).string, + /** Sets the title for the opened modal */ + title: (external_prop_types_default()).string, + /** Sets the description for the opened modal */ + description: (external_prop_types_default()).string, + children: external_prop_types_default().oneOfType([ + (external_prop_types_default()).element, + (external_prop_types_default()).string, + (external_prop_types_default()).object, + (external_prop_types_default()).node, + (external_prop_types_default()).func + ]) +}; +/* harmony default export */ const components_Confirm = (Confirm); + +;// CONCATENATED MODULE: ./src/components/FixedWrapper/index.js + + + +function FixedWrapper({ children, className, showShadow }) { + const fixedWrapperRef = (0,external_react_namespaceObject.useRef)(null); + const attachShadow = (0,external_react_namespaceObject.useCallback)(() => { + const element = fixedWrapperRef.current; + if (!element) { + return; + } + if (window.scrollY) { + element.classList.add("tyk-fixed-wrapper--scrolled"); + } else { + element.classList.remove("tyk-fixed-wrapper--scrolled"); + } + }, [fixedWrapperRef.current]); + const debouncedAttachShadow = (0,external_react_namespaceObject.useCallback)(debounce(attachShadow, 100), [attachShadow]); + (0,external_react_namespaceObject.useEffect)(() => { + if (showShadow) { + window.addEventListener("scroll", debouncedAttachShadow); + } + return () => { + window.removeEventListener("scroll", debouncedAttachShadow); + }; + }, [debouncedAttachShadow, showShadow]); + return /* @__PURE__ */ external_react_default().createElement("div", { className: `tyk-fixed-wrapper ${className}`, ref: fixedWrapperRef }, children); +} +FixedWrapper.propTypes = { + children: external_prop_types_default().oneOfType([ + (external_prop_types_default()).element, + (external_prop_types_default()).node, + (external_prop_types_default()).string + ]), + /** Css classes that can be passed to the FixedWraper element */ + className: (external_prop_types_default()).string, + /** If true, bottom shadow on the FixedWrapper component + * is being displayed when scroll happens + */ + showShadow: (external_prop_types_default()).bool +}; +FixedWrapper.defaultProps = { + className: "" +}; +/* harmony default export */ const components_FixedWrapper = (FixedWrapper); + +;// CONCATENATED MODULE: ./src/components/InfiniteScroller/index.js + + + + + +function InfiniteScroller({ + children, + hasMore, + initialLoad, + loadMore, + pageNumber, + refChild +}) { + const [showLoader, setShowLoader] = (0,external_react_namespaceObject.useState)(false); + const containerRef = (0,external_react_namespaceObject.useRef)(null); + const refChildSize = hooks_useComponentSize(refChild); + (0,external_react_namespaceObject.useEffect)(() => { + if (initialLoad && typeof loadMore === "function") { + setShowLoader(false); + loadMore(pageNumber); + } + }, [initialLoad]); + const shouldLoad = (0,external_react_namespaceObject.useCallback)(() => { + if (!containerRef.current) + return false; + const { clientHeight, scrollTop } = containerRef.current; + return hasMore && (clientHeight + Math.round(scrollTop) === refChildSize.height || clientHeight >= refChildSize.height); + }, [containerRef, refChildSize.height]); + const loadMoreData = (0,external_react_namespaceObject.useCallback)(() => { + if (hasMore && typeof loadMore === "function") { + loadMore(pageNumber + 1); + setShowLoader(true); + } else { + setShowLoader(false); + } + }, [hasMore, pageNumber]); + const prevPageNumber = hooks_usePrevious(pageNumber); + const scrollHandler = (0,external_react_namespaceObject.useCallback)(debounce(() => { + if (shouldLoad() && prevPageNumber <= pageNumber) { + loadMoreData(); + } + }, 200), [loadMoreData, shouldLoad]); + (0,external_react_namespaceObject.useEffect)(() => { + var _a; + (_a = containerRef.current) == null ? void 0 : _a.addEventListener("scroll", scrollHandler); + return () => { + var _a2; + return (_a2 = containerRef.current) == null ? void 0 : _a2.removeEventListener("scroll", scrollHandler); + }; + }, [containerRef, scrollHandler]); + (0,external_react_namespaceObject.useEffect)(() => { + if (prevPageNumber > 0 && pageNumber === 0) { + containerRef.current.scrollTop = 0; + } + }, [containerRef, pageNumber]); + const prevRefChildSize = hooks_usePrevious(refChildSize); + (0,external_react_namespaceObject.useEffect)(() => { + if (refChildSize && prevRefChildSize && refChildSize.height !== prevRefChildSize.height && showLoader === true) { + setShowLoader(false); + } + }, [showLoader, refChildSize.height]); + (0,external_react_namespaceObject.useEffect)(() => { + if (refChild && refChildSize.height < containerRef.current.clientHeight && refChildSize.height && hasMore) { + loadMoreData(); + } + }, [containerRef, refChildSize, refChild, hasMore]); + return /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-infinite-scroller" }, /* @__PURE__ */ external_react_default().createElement( + "div", + { + className: "tyk-infinite-scroller__wrapper", + ref: containerRef + }, + children + ), showLoader && /* @__PURE__ */ external_react_default().createElement(components_Loader, { position: "absolute" })); +} +InfiniteScroller.propTypes = { + children: external_prop_types_namespaceObject.PropTypes.oneOfType([ + external_prop_types_namespaceObject.PropTypes.arrayOf(external_prop_types_namespaceObject.PropTypes.node), + external_prop_types_namespaceObject.PropTypes.node, + external_prop_types_namespaceObject.PropTypes.element, + external_prop_types_namespaceObject.PropTypes.string + ]), + hasMore: external_prop_types_namespaceObject.PropTypes.bool, + initialLoad: external_prop_types_namespaceObject.PropTypes.bool, + pageNumber: external_prop_types_namespaceObject.PropTypes.number, + loadMore: external_prop_types_namespaceObject.PropTypes.func, + refChild: external_prop_types_namespaceObject.PropTypes.instanceOf(Object) +}; +InfiniteScroller.defaultProps = { + hasMore: true +}; +/* harmony default export */ const components_InfiniteScroller = (InfiniteScroller); + +;// CONCATENATED MODULE: ./src/components/FloatingContainer/index.js +var FloatingContainer_defProp = Object.defineProperty; +var FloatingContainer_getOwnPropSymbols = Object.getOwnPropertySymbols; +var FloatingContainer_hasOwnProp = Object.prototype.hasOwnProperty; +var FloatingContainer_propIsEnum = Object.prototype.propertyIsEnumerable; +var FloatingContainer_defNormalProp = (obj, key, value) => key in obj ? FloatingContainer_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var FloatingContainer_spreadValues = (a, b) => { + for (var prop in b || (b = {})) + if (FloatingContainer_hasOwnProp.call(b, prop)) + FloatingContainer_defNormalProp(a, prop, b[prop]); + if (FloatingContainer_getOwnPropSymbols) + for (var prop of FloatingContainer_getOwnPropSymbols(b)) { + if (FloatingContainer_propIsEnum.call(b, prop)) + FloatingContainer_defNormalProp(a, prop, b[prop]); + } + return a; +}; + + + + +function FloatingContainer({ + element, + size = "auto", + forceDisplay = "auto", + displayAxis = "auto", + preferredPosition, + offset = 0, + className, + children, + infiniteScrollerConfig +}, ref) { + const localRef = (0,external_react_namespaceObject.useRef)(null); + const floatingContainerRef = ref || localRef; + const contentWrapperRef = (0,external_react_namespaceObject.useRef)(null); + function determineDisplay() { + const target = element.current; + const container = floatingContainerRef.current; + if (!container) + return (preferredPosition != null ? preferredPosition : displayAxis === "vertical") ? "bottom" : "right"; + const { left, top } = target.getBoundingClientRect(); + const topSpace = top; + const bottomSpace = window.innerHeight - top - target.offsetHeight; + const leftSpace = left; + const rightSpace = window.innerWidth - left - target.offsetWidth; + const hasTopSpace = topSpace > container.scrollHeight; + const hasBottomSpace = bottomSpace > container.scrollHeight; + const hasLeftSpace = leftSpace > container.offsetWidth; + const hasRightSpace = rightSpace > container.offsetWidth; + const positionedVerticallyFitsInViewport = left + target.offsetWidth / 2 - container.offsetWidth / 2 > 0; + const positionedHorizontallyFitsInViewport = top + target.offsetHeight / 2 - container.scrollHeight / 2 > 0; + if (displayAxis === "vertical" || displayAxis === "auto" && (hasTopSpace || hasBottomSpace) && positionedVerticallyFitsInViewport) { + if (preferredPosition === "top" && hasTopSpace) + return "top"; + if (preferredPosition === "bottom" && hasBottomSpace) + return "bottom"; + return hasBottomSpace || bottomSpace > topSpace ? "bottom" : "top"; + } + if (displayAxis === "horizontal") { + if (preferredPosition === "left" && hasLeftSpace) + return "left"; + if (preferredPosition === "right" && hasLeftSpace) + return "right"; + return hasRightSpace || rightSpace > leftSpace ? "right" : "left"; + } + if (hasTopSpace && positionedVerticallyFitsInViewport) + return "top"; + if (hasBottomSpace && positionedVerticallyFitsInViewport) + return "bottom"; + if (hasRightSpace && positionedHorizontallyFitsInViewport) + return "right"; + if (hasLeftSpace && positionedHorizontallyFitsInViewport) + return "left"; + return preferredPosition != null ? preferredPosition : "bottom"; + } + function adjustPosition() { + const display = forceDisplay !== "auto" ? forceDisplay : determineDisplay(); + const target = element.current; + const container = floatingContainerRef.current; + if (!target || !container) + return; + const targetPosition = target.getBoundingClientRect(); + if (display === "top") { + const topPos = targetPosition.top - container.offsetHeight - offset; + container.style.top = `${topPos}px`; + container.style.left = size === "auto" ? `${targetPosition.left + target.offsetWidth / 2 - container.offsetWidth / 2}px` : `${targetPosition.left}px`; + if (size === "matchElement") { + container.style.width = `${target.offsetWidth}px`; + } else if (typeof size === "function") { + container.style.width = `${size(target.offsetWidth)}px`; + } + container.style.maxHeight = `${targetPosition.top - offset}px`; + } + if (display === "bottom") { + container.style.top = `${targetPosition.bottom + offset}px`; + container.style.left = size === "auto" ? `${targetPosition.left + target.offsetWidth / 2 - container.offsetWidth / 2}px` : `${targetPosition.left}px`; + if (size === "matchElement") { + container.style.width = `${target.offsetWidth}px`; + } else if (typeof size === "function") { + container.style.width = `${size(target.offsetWidth)}px`; + } + container.style.maxHeight = `${window.innerHeight - targetPosition.bottom - offset}px`; + } + if (display === "left") { + const topPos = targetPosition.top + target.offsetHeight / 2 - container.offsetHeight / 2; + container.style.top = size === "auto" ? `${topPos}px` : `${targetPosition.top}px`; + container.style.left = `${targetPosition.left - container.offsetWidth - offset}px`; + if (size === "matchElement") { + container.style.height = `${target.offsetHeight}px`; + } else if (typeof size === "function") { + container.style.height = `${size(target.offsetHeight)}px`; + } + container.style.maxWidth = `${targetPosition.left - offset}px`; + } + if (display === "right") { + const topPos = targetPosition.top + target.offsetHeight / 2 - container.offsetHeight / 2; + container.style.top = size === "auto" ? `${topPos}px` : `${targetPosition.top}px`; + container.style.left = `${targetPosition.left + target.offsetWidth + offset}px`; + if (size === "matchElement") { + container.style.height = `${target.offsetHeight}px`; + } else if (typeof size === "function") { + container.style.height = `${size(target.offsetHeight)}px`; + } + container.style.maxWidth = `${window.innerWidth - targetPosition.left - target.offsetWidth - offset}px`; + } + } + (0,external_react_namespaceObject.useEffect)(() => { + window.requestAnimationFrame(function schedulePositionUpdate() { + adjustPosition(); + window.requestAnimationFrame(schedulePositionUpdate); + }); + }, []); + return (0,external_react_dom_.createPortal)( + /* @__PURE__ */ external_react_default().createElement( + "div", + { + className: `floating-container ${className || ""}`, + ref: floatingContainerRef + }, + /* @__PURE__ */ external_react_default().createElement( + components_InfiniteScroller, + FloatingContainer_spreadValues({ + refChild: contentWrapperRef + }, infiniteScrollerConfig), + /* @__PURE__ */ external_react_default().createElement( + "div", + { + className: "floating-container__content-wrapper", + ref: contentWrapperRef + }, + children + ) + ) + ), + document.querySelector("body") + ); +} +FloatingContainer.propTypes = { + /** A DOM element that the floating container will be displayed relative to. */ + element: external_prop_types_default().instanceOf(Object), + className: (external_prop_types_default()).string, + /** The size of the container. + * If `auto` the size will be determined by its contents. + * If `matchElement` it will take the width or the height of the element depending + * on the `displayAxis` prop. + * It can also be a function that returns a number representing the width + * or the height in pixels. + */ + size: external_prop_types_default().oneOfType([ + external_prop_types_default().oneOf(["auto", "matchElement"]), + (external_prop_types_default()).func + ]), + /** + * The distance between the element and the floating container. + * It can be positive or negative. + */ + offset: (external_prop_types_default()).number, + /** + * If `auto` the component will try to determine where to display the container relative to the + * element (top, bottom, left, right). + * It can also be one of top, bottom, left, right, to force the floating container to always be + * displayed in that position. + */ + forceDisplay: external_prop_types_default().oneOf(["auto", "top", "bottom", "left", "right"]), + /** + * It can be `auto`, `vertical` or `horizontal`. It specifies the axis where + * it will be displayed when `forceDisplay` is `auto`. + */ + displayAxis: external_prop_types_default().oneOf(["auto", "vertical", "horizontal"]), + /** + * If there is space on both sides of the axis preffer this side. + */ + preferredPosition: external_prop_types_default().oneOf(["top", "bottom", "left", "right"]), + /** + * Configuration object that will be passed to the infinite scroller component. + */ + infiniteScrollerConfig: external_prop_types_default().instanceOf(Object) +}; +/* harmony default export */ const components_FloatingContainer = ((0,external_react_namespaceObject.forwardRef)(FloatingContainer)); + +;// CONCATENATED MODULE: ./src/components/InfoNote/index.js + + + +function InfoNote({ children }) { + return /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-info-note" }, /* @__PURE__ */ external_react_default().createElement(components_Message, { theme: "info" }, children)); +} +InfoNote.propTypes = { + children: external_prop_types_default().oneOfType([ + (external_prop_types_default()).element, + (external_prop_types_default()).node, + (external_prop_types_default()).string + ]) +}; +/* harmony default export */ const components_InfoNote = (InfoNote); + +;// CONCATENATED MODULE: ./src/components/List/js/ListItem.js + + +const ListItem = (props) => { + const { + className, + children + } = props; + return /* @__PURE__ */ external_react_default().createElement("li", { className }, children); +}; +ListItem.propTypes = { + children: external_prop_types_default().oneOfType([ + external_prop_types_default().arrayOf((external_prop_types_default()).node), + (external_prop_types_default()).node, + (external_prop_types_default()).element, + (external_prop_types_default()).string + ]), + className: (external_prop_types_default()).string +}; +ListItem.defaultProps = { + className: "" +}; +/* harmony default export */ const js_ListItem = (ListItem); + +;// CONCATENATED MODULE: ./src/components/List/index.js + + + + +const List = (props) => { + const { + className, + children, + label, + labelwidth, + theme, + style + } = props; + const getCssClasses = () => { + let cssClasses = ["tyk-list"]; + if (theme) { + cssClasses.push(`tyk-list--${theme}`); + } + if (className) { + cssClasses = cssClasses.concat(className.split(" ")); + } + return cssClasses.join(" "); + }; + const getListStyle = () => { + const styleCopy = (0,external_immutable_namespaceObject.fromJS)(style).toJS(); + if (labelwidth) { + styleCopy.flexBasis = `calc(100% - ${labelwidth} - 20px)`; + } + return styleCopy; + }; + return /* @__PURE__ */ external_react_default().createElement("div", { className: `tyk-list__wrapper ${labelwidth ? "tyk-list--with-inline-label" : ""}` }, label !== void 0 ? /* @__PURE__ */ external_react_default().createElement( + "label", + { + style: { + flexBasis: labelwidth || "auto" + } + }, + label + ) : null, /* @__PURE__ */ external_react_default().createElement("ul", { className: getCssClasses(), style: getListStyle() }, children)); +}; +List.propTypes = { + children: external_prop_types_default().oneOfType([ + external_prop_types_default().arrayOf((external_prop_types_default()).node), + (external_prop_types_default()).node, + (external_prop_types_default()).element, + (external_prop_types_default()).string + ]), + className: (external_prop_types_default()).string, + label: (external_prop_types_default()).string, + labelwidth: (external_prop_types_default()).string, + theme: (external_prop_types_default()).string, + style: external_prop_types_default().instanceOf(Object) +}; +List.defaultProps = { + theme: "default", + style: {} +}; +List.Item = js_ListItem; +/* harmony default export */ const components_List = (List); + +;// CONCATENATED MODULE: ./src/components/NavBar/index.js + + +function NavBar({ + align = "center", + children, + left, + right, + title, + pre, + subtitle, + withTabs +}) { + const subtitleContent = subtitle ? /* @__PURE__ */ external_react_default().createElement("p", { className: "font-family-medium" }, subtitle) : null; + return /* @__PURE__ */ external_react_default().createElement("section", { className: `tyk-nav-bar ${withTabs ? "tyk-nav-bar__with-tabs" : ""}` }, /* @__PURE__ */ external_react_default().createElement("div", { className: `tyk-nav-bar__wrapper tyk-nav-bar--align-${align}` }, pre && /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-nav-bar__pre" }, pre), title ? /* @__PURE__ */ external_react_default().createElement("div", null, /* @__PURE__ */ external_react_default().createElement("h1", null, title), subtitleContent) : subtitleContent, /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-nav-bar__container" }, left && /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-nav-bar__left" }, left), right && /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-nav-bar__right" }, right))), children); +} +NavBar.propTypes = { + align: (external_prop_types_default()).string, + children: external_prop_types_default().oneOfType([ + external_prop_types_default().arrayOf((external_prop_types_default()).node), + (external_prop_types_default()).node, + (external_prop_types_default()).element, + (external_prop_types_default()).string + ]), + title: (external_prop_types_default()).string, + subtitle: (external_prop_types_default()).string, + pre: external_prop_types_default().oneOfType([ + (external_prop_types_default()).element, + (external_prop_types_default()).node + ]), + left: external_prop_types_default().oneOfType([ + (external_prop_types_default()).element, + (external_prop_types_default()).node + ]), + right: external_prop_types_default().oneOfType([ + (external_prop_types_default()).element, + (external_prop_types_default()).node + ]), + withTabs: (external_prop_types_default()).bool +}; +/* harmony default export */ const components_NavBar = (NavBar); + +;// CONCATENATED MODULE: ./src/components/Navigation/js/NavigationItem.js + + +function NavigationItem({ children }) { + return /* @__PURE__ */ external_react_default().createElement("li", { className: "tyk-navigation-item" }, children); +} +NavigationItem.propTypes = { + children: external_prop_types_default().oneOfType([ + external_prop_types_default().arrayOf((external_prop_types_default()).node), + (external_prop_types_default()).node, + (external_prop_types_default()).element, + (external_prop_types_default()).string + ]) +}; +/* harmony default export */ const js_NavigationItem = (NavigationItem); + +;// CONCATENATED MODULE: ./src/components/Navigation/index.js + + + +function Navigation({ children }) { + return /* @__PURE__ */ external_react_default().createElement("ul", { className: "tyk-navigation" }, children); +} +Navigation.propTypes = { + children: external_prop_types_default().oneOfType([ + external_prop_types_default().arrayOf((external_prop_types_default()).node), + (external_prop_types_default()).node, + (external_prop_types_default()).element, + (external_prop_types_default()).string + ]) +}; +Navigation.Item = js_NavigationItem; +/* harmony default export */ const components_Navigation = (Navigation); + +;// CONCATENATED MODULE: ./src/components/Panel/panel-context.js + +const PortalContext = (0,external_react_namespaceObject.createContext)(); + +;// CONCATENATED MODULE: ./src/components/Panel/js/PanelBody.js +var PanelBody_defProp = Object.defineProperty; +var PanelBody_defProps = Object.defineProperties; +var PanelBody_getOwnPropDescs = Object.getOwnPropertyDescriptors; +var PanelBody_getOwnPropSymbols = Object.getOwnPropertySymbols; +var PanelBody_hasOwnProp = Object.prototype.hasOwnProperty; +var PanelBody_propIsEnum = Object.prototype.propertyIsEnumerable; +var PanelBody_defNormalProp = (obj, key, value) => key in obj ? PanelBody_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var PanelBody_spreadValues = (a, b) => { + for (var prop in b || (b = {})) + if (PanelBody_hasOwnProp.call(b, prop)) + PanelBody_defNormalProp(a, prop, b[prop]); + if (PanelBody_getOwnPropSymbols) + for (var prop of PanelBody_getOwnPropSymbols(b)) { + if (PanelBody_propIsEnum.call(b, prop)) + PanelBody_defNormalProp(a, prop, b[prop]); + } + return a; +}; +var PanelBody_spreadProps = (a, b) => PanelBody_defProps(a, PanelBody_getOwnPropDescs(b)); +var PanelBody_objRest = (source, exclude) => { + var target = {}; + for (var prop in source) + if (PanelBody_hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) + target[prop] = source[prop]; + if (source != null && PanelBody_getOwnPropSymbols) + for (var prop of PanelBody_getOwnPropSymbols(source)) { + if (exclude.indexOf(prop) < 0 && PanelBody_propIsEnum.call(source, prop)) + target[prop] = source[prop]; + } + return target; +}; + + + + +function PanelBody(_a) { + var _b = _a, { + children, + noPadding, + className + } = _b, rest = PanelBody_objRest(_b, [ + "children", + "noPadding", + "className" + ]); + const getCssClasses = (0,external_react_namespaceObject.useCallback)( + () => [ + "tyk-panel__body", + className, + noPadding && "no-padding" + ].filter(Boolean).join(" "), + [className, noPadding] + ); + return /* @__PURE__ */ external_react_default().createElement(PortalContext.Consumer, null, (portalContext) => portalContext.collapsable ? /* @__PURE__ */ external_react_default().createElement( + components_Collapsible, + PanelBody_spreadProps(PanelBody_spreadValues({}, rest), { + collapsed: portalContext.collapsed, + className: getCssClasses() + }), + children + ) : /* @__PURE__ */ external_react_default().createElement( + "div", + PanelBody_spreadProps(PanelBody_spreadValues({}, rest), { + className: getCssClasses() + }), + children + )); +} +PanelBody.propTypes = { + children: external_prop_types_default().oneOfType([ + (external_prop_types_default()).element, + (external_prop_types_default()).node, + (external_prop_types_default()).string + ]), + noPadding: (external_prop_types_default()).bool, + className: (external_prop_types_default()).string +}; +/* harmony default export */ const js_PanelBody = (PanelBody); + +;// CONCATENATED MODULE: ./src/components/Panel/js/PanelFooter.js + + +const PanelFooter = (props) => { + const { children } = props; + return /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-panel__footer" }, children); +}; +PanelFooter.propTypes = { + children: external_prop_types_default().oneOfType([ + (external_prop_types_default()).element, + (external_prop_types_default()).node, + (external_prop_types_default()).string + ]) +}; +/* harmony default export */ const js_PanelFooter = (PanelFooter); + +;// CONCATENATED MODULE: ./src/components/Panel/js/PanelHeader.js +var PanelHeader_defProp = Object.defineProperty; +var PanelHeader_defNormalProp = (obj, key, value) => key in obj ? PanelHeader_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var PanelHeader_publicField = (obj, key, value) => { + PanelHeader_defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); + return value; +}; + + + + +class PanelHeader extends external_react_namespaceObject.Component { + getCssClasses(props) { + const { className } = this.props; + let cssClasses = ["tyk-panel__header"]; + if (props.collapsable) { + cssClasses.push("collapsable"); + } + if (className) { + cssClasses = cssClasses.concat(className.split(" ")); + } + return cssClasses.join(" "); + } + render() { + const { + children + } = this.props; + return /* @__PURE__ */ external_react_default().createElement(PortalContext.Consumer, null, (portalContext) => { + const HeaderTag = portalContext.theme === "blank" ? "h3" : "div"; + const iconType = portalContext.collapsed ? "chevron-down" : "chevron-up"; + return /* @__PURE__ */ external_react_default().createElement( + HeaderTag, + { + className: this.getCssClasses(portalContext), + onClick: portalContext.collapsable ? portalContext.onToggle : void 0 + }, + children, + portalContext.collapsable ? /* @__PURE__ */ external_react_default().createElement("div", { className: `collapsable__arrow-${portalContext.collapsibleIconPosition}` }, /* @__PURE__ */ external_react_default().createElement(components_Icon, { type: iconType })) : null + ); + }); + } +} +PanelHeader_publicField(PanelHeader, "propTypes", { + children: external_prop_types_default().oneOfType([ + (external_prop_types_default()).element, + (external_prop_types_default()).node, + (external_prop_types_default()).string + ]).isRequired, + className: (external_prop_types_default()).string +}); + +;// CONCATENATED MODULE: ./src/components/Panel/index.js + + + + + + +const Panel = (props) => { + const { + children, + className, + collapsed, + collapsable, + theme, + onToggleCollapse, + collapsibleIconPosition = "right" + } = props; + const [collapsedState, setCollapsedState] = (0,external_react_namespaceObject.useState)(collapsed || false); + (0,external_react_namespaceObject.useEffect)(() => { + if (collapsed !== collapsedState) { + setCollapsedState(collapsed); + } + }, [collapsed]); + const getCssClasses = () => { + let cssClasses = ["tyk-panel"]; + const panelTheme = `tyk-panel--${theme || "default"}`; + const collapsbleIconPosition = `tyk-panel__icon-collapse--${collapsibleIconPosition}`; + cssClasses.push(panelTheme); + cssClasses.push(collapsbleIconPosition); + if (className) { + cssClasses = cssClasses.concat(className.split(" ")); + } + if (collapsedState) { + cssClasses.push("tyk-panel--collapsed"); + } + return cssClasses.join(" "); + }; + const handleToggle = () => { + setCollapsedState(!collapsedState); + if (onToggleCollapse) { + onToggleCollapse(!collapsedState); + } + }; + return /* @__PURE__ */ external_react_default().createElement("div", { className: getCssClasses() }, /* @__PURE__ */ external_react_default().createElement( + PortalContext.Provider, + { + value: { + collapsable, + collapsed: collapsedState, + onToggle: handleToggle, + theme, + collapsibleIconPosition + } + }, + typeof children === "function" ? children({ + toggleCollapse: handleToggle + }) : children + )); +}; +Panel.propTypes = { + children: external_prop_types_default().oneOfType([ + (external_prop_types_default()).func, + (external_prop_types_default()).element, + (external_prop_types_default()).node, + (external_prop_types_default()).string + ]), + className: (external_prop_types_default()).string, + collapsable: (external_prop_types_default()).bool, + collapsibleIconPosition: (external_prop_types_default()).string, + collapsed: (external_prop_types_default()).bool, + theme: (external_prop_types_default()).string, + onToggleCollapse: (external_prop_types_default()).func +}; +Panel.Body = js_PanelBody; +Panel.Footer = js_PanelFooter; +Panel.Header = PanelHeader; +/* harmony default export */ const components_Panel = (Panel); + +;// CONCATENATED MODULE: ./src/components/Pill/index.js + + +const Pill = (props) => { + const { + children, + className, + theme + } = props; + const getCssClasses = () => { + let cssClasses = ["tyk-pill", ...theme.split(" ").map((t) => `tyk-pill--${t}`)]; + if (className) { + cssClasses = cssClasses.concat(className); + } + return cssClasses.join(" "); + }; + return /* @__PURE__ */ external_react_default().createElement("div", { className: getCssClasses() }, children); +}; +Pill.propTypes = { + children: external_prop_types_default().oneOfType([ + external_prop_types_default().arrayOf((external_prop_types_default()).node), + (external_prop_types_default()).node, + (external_prop_types_default()).element, + (external_prop_types_default()).string + ]), + /** Css classes that can be passed to the Pill element */ + className: (external_prop_types_default()).string, + /** Theme that can be applied to a Pill */ + theme: (external_prop_types_default()).string +}; +Pill.defaultProps = { + theme: "default" +}; +/* harmony default export */ const components_Pill = (Pill); + +;// CONCATENATED MODULE: ./src/components/RevealPanel/js/RevealPanelService.js +var __accessCheck = (obj, member, msg) => { + if (!member.has(obj)) + throw TypeError("Cannot " + msg); +}; +var __privateGet = (obj, member, getter) => { + __accessCheck(obj, member, "read from private field"); + return getter ? getter.call(obj) : member.get(obj); +}; +var __privateAdd = (obj, member, value) => { + if (member.has(obj)) + throw TypeError("Cannot add the same private member more than once"); + member instanceof WeakSet ? member.add(obj) : member.set(obj, value); +}; +var __privateSet = (obj, member, value, setter) => { + __accessCheck(obj, member, "write to private field"); + setter ? setter.call(obj, value) : member.set(obj, value); + return value; +}; +var _state, _panel, _gutter, _wrapper, _onHeightChangeCallbacks, _onDragStartCallbacks, _onDragEndCallbacks, _dragStarted; + +class RevealPanelService { + constructor() { + __privateAdd(this, _state, null); + // Private state for mouse interactions. + __privateAdd(this, _panel, null); + // The panel element to be resized. + __privateAdd(this, _gutter, null); + // The gutter element used for resizing. + __privateAdd(this, _wrapper, null); + // The wrapper element that contains the panel and gutter. + __privateAdd(this, _onHeightChangeCallbacks, []); + // Callback function to be executed when the panel is resized. + __privateAdd(this, _onDragStartCallbacks, []); + // Callback function to be executed when the panel is resized. + __privateAdd(this, _onDragEndCallbacks, []); + // Callback function to be executed when the panel is resized. + __privateAdd(this, _dragStarted, false); + } + /** + * Sets a callback function to be executed when the panel is resized. + * @param {function} callback - The callback function to be called on panel resize. + */ + on(eventName, listener) { + let list = null; + if (eventName === "onHeightChange") { + list = __privateGet(this, _onHeightChangeCallbacks); + } else if (eventName === "onDragStart") { + list = __privateGet(this, _onDragStartCallbacks); + } else if (eventName === "onDragEnd") { + list = __privateGet(this, _onDragEndCallbacks); + } + if (list) { + this.addListener(list, listener); + } + } + off(eventName, listener) { + let list = null; + if (eventName === "onHeightChange") { + list = __privateGet(this, _onHeightChangeCallbacks); + } else if (eventName === "onDragStart") { + list = __privateGet(this, _onDragStartCallbacks); + } else if (eventName === "onDragEnd") { + list = __privateGet(this, _onDragEndCallbacks); + } + if (list) { + this.removeListener(list, listener); + } + } + /** + * Sets the panel, gutter, and wrapper elements to be controlled by this class. + * @param {HTMLElement} wrapper - The wrapper element containing the panel and gutter. + * @param {HTMLElement} panel - The panel element to be resized. + * @param {HTMLElement} gutter - The gutter element used for resizing. + */ + setRefs(wrapper, panel, gutter) { + if (__privateGet(this, _panel) || __privateGet(this, _gutter) || __privateGet(this, _wrapper)) { + this.unbindEvents(); + } + __privateSet(this, _wrapper, wrapper); + __privateSet(this, _panel, panel); + __privateSet(this, _gutter, gutter); + __privateSet(this, _state, null); + this.bindEvents(); + } + /** + * Attaches event listeners for panel resizing. + */ + bindEvents() { + this.ensureRefs("bindEvents"); + __privateGet(this, _gutter).addEventListener("mousedown", this.onMouseDown.bind(this)); + document.addEventListener("mousemove", this.onMouseMove.bind(this)); + document.addEventListener("mouseup", this.onMouseUp.bind(this)); + } + /** + * Gets the current height of the panel. + * @returns {number} - The height of the panel in pixels. + */ + getHeight() { + this.ensureRefs("getHeight"); + const size = __privateGet(this, _panel).getBoundingClientRect(); + return size.height; + } + /** + * Handles the mouse down event, initiating the resizing process. + * @param {MouseEvent} e - The mouse event object. + */ + onMouseDown(e) { + this.ensureRefs("onMouseDown"); + __privateSet(this, _state, { + mouseDown: true, + initialRect: __privateGet(this, _panel).getBoundingClientRect(), + initialEvent: e + }); + } + /** + * Handles the mouse move event, adjusting the panel's height during resizing. + * @param {MouseEvent} e - The mouse event object. + */ + onMouseMove(e) { + this.ensureRefs("onMouseMove"); + if (!__privateGet(this, _state)) { + return; + } + const isButtonDown = this.isPrimaryMouseButtonDown(e); + if (!isButtonDown) { + this.onMouseUp(); + return; + } + if (!__privateGet(this, _dragStarted)) { + __privateSet(this, _dragStarted, true); + this.onDragStart.bind(this)(); + } + const newY = __privateGet(this, _state).initialEvent.y - e.y; + const finalHeight = Math.ceil(__privateGet(this, _state).initialRect.height + newY); + this.setHeight(`${finalHeight}px`, "mousemove"); + } + // eslint-disable-next-line class-methods-use-this + notifyListeners(list, value) { + if (list && Array.isArray(list) && list.length) { + list.forEach((fn) => { + if (typeof fn === "function") { + fn(value); + } + }); + } + } + // eslint-disable-next-line class-methods-use-this + addListener(list, listener) { + if (list && Array.isArray(list) && typeof listener === "function") { + list.push(listener); + } + } + // eslint-disable-next-line class-methods-use-this + removeListener(list, listener) { + if (list && Array.isArray(list) && typeof listener === "function" && list.length) { + const index = list.indexOf(listener); + if (index > -1) { + list.splice(index, 1); + } + } + } + onDragEnd() { + if (__privateGet(this, _dragStarted)) { + this.notifyListeners(__privateGet(this, _onDragEndCallbacks), this.getHeight()); + } + } + onDragStart() { + this.notifyListeners(__privateGet(this, _onDragStartCallbacks), this.getHeight()); + } + // eslint-disable-next-line class-methods-use-this + isPrimaryMouseButtonDown(e) { + const flags = e.buttons !== void 0 ? e.buttons : e.which; + const isDown = flags === 1; + return isDown; + } + /** + * Resets the state after the mouse up event, ending the resizing process. + */ + onMouseUp() { + __privateSet(this, _state, null); + this.onDragEnd.bind(this)(); + __privateSet(this, _dragStarted, false); + } + /** + * Sets the height of the panel. + * @param {string} height - The new height value as a CSS string (e.g., "100px"). + */ + setHeight(height) { + let heightVal = height; + this.ensureRefs("setHeight"); + if (typeof heightVal === "number") { + heightVal += "px"; + } + __privateGet(this, _panel).style.height = heightVal; + this.notifyListeners(__privateGet(this, _onHeightChangeCallbacks), this.getHeight()); + } + /** + * Ensures that the required elements (wrapper, panel, and gutter) are set. + * Throws an error if they are missing. + */ + ensureRefs(reason) { + if (!__privateGet(this, _panel) || !__privateGet(this, _gutter) || !__privateGet(this, _wrapper)) { + throw new Error( + `${reason}: Wrapper, panel, and gutter elements are required. Use setRefs method first.` + ); + } + } + /** + * Checks if the panel is hidden. + * @returns {boolean} - True if the panel is hidden; false otherwise. + */ + isHidden() { + this.ensureRefs("isHidden"); + return __privateGet(this, _wrapper).style.visibility === "hidden"; + } + /** + * Hides the panel by setting its visibility to "hidden". + */ + hide() { + this.ensureRefs("hide"); + __privateGet(this, _wrapper).style.visibility = "hidden"; + } + /** + * Shows the panel by setting its visibility to "visible". + */ + show() { + this.ensureRefs("show"); + __privateGet(this, _wrapper).style.visibility = "visible"; + } + /** + * Unbinds the event listeners added for resizing. + */ + unbindEvents() { + __privateSet(this, _onHeightChangeCallbacks, []); + __privateSet(this, _onDragStartCallbacks, []); + __privateSet(this, _onDragEndCallbacks, []); + __privateGet(this, _gutter).removeEventListener("mousedown", this.onMouseDown.bind(this)); + document.removeEventListener("mousemove", this.onMouseMove.bind(this)); + document.removeEventListener("mouseup", this.onMouseUp.bind(this)); + } + deinit() { + this.unbindEvents(); + } +} +_state = new WeakMap(); +_panel = new WeakMap(); +_gutter = new WeakMap(); +_wrapper = new WeakMap(); +_onHeightChangeCallbacks = new WeakMap(); +_onDragStartCallbacks = new WeakMap(); +_onDragEndCallbacks = new WeakMap(); +_dragStarted = new WeakMap(); +const useRevealPanelService = () => { + const revealPanelServiceRef = (0,external_react_namespaceObject.useRef)(new RevealPanelService()); + return revealPanelServiceRef.current; +}; + +;// CONCATENATED MODULE: ./src/components/RevealPanel/index.js + + + + +function RevealPanelHeaderLeft({ children }) { + return /* @__PURE__ */ external_react_default().createElement((external_react_default()).Fragment, null, children); +} +RevealPanelHeaderLeft.propTypes = { + children: external_prop_types_default().instanceOf({}) +}; +function RevealPanelHeaderRight({ children }) { + return /* @__PURE__ */ external_react_default().createElement((external_react_default()).Fragment, null, children); +} +RevealPanelHeaderRight.propTypes = { + children: external_prop_types_default().instanceOf({}) +}; +const mergeClasses = (...classNames) => classNames.map((it) => (it || "").trim()).filter(Boolean).join(" "); +const RevealPanel = (0,external_react_namespaceObject.forwardRef)(({ + children, + height, + onHeightChange = null, + onDragStart = null, + onDragEnd = null, + style = null, + parentSelector = null, + contentStyle, + contentClassName, + gutterClassName, + wrapperClassName + // eslint-disable-next-line consistent-return +}, ref) => { + const panelRef = (0,external_react_namespaceObject.useRef)(null); + const gutterRef = (0,external_react_namespaceObject.useRef)(null); + const wrapperRef = (0,external_react_namespaceObject.useRef)(null); + const panelService = useRevealPanelService(); + (0,external_react_namespaceObject.useEffect)(() => { + if (!panelRef.current || !gutterRef.current || !wrapperRef.current) { + return; + } + if (!panelService) { + return; + } + panelService.setRefs(wrapperRef.current, panelRef.current, gutterRef.current); + panelService.on("onHeightChange", onHeightChange); + panelService.on("onDragStart", onDragStart); + panelService.on("onDragEnd", onDragEnd); + panelService.setHeight(height, "initialize"); + return () => { + panelService.unbindEvents(); + }; + }, []); + (0,external_react_namespaceObject.useImperativeHandle)( + ref, + () => { + const bind = (func) => func.bind(panelService); + return { + getHeight: bind(panelService.getHeight), + setHeight: bind(panelService.setHeight), + hide: bind(panelService.hide), + show: bind(panelService.show), + isHidden: bind(panelService.isHidden), + deinit: bind(panelService.deinit), + on: bind(panelService.on), + off: bind(panelService.off) + }; + }, + [] + ); + let headerLeft = null; + let headerRight = null; + const contents = []; + external_react_default().Children.forEach(children, (child) => { + if (child && external_react_default().isValidElement(child)) { + if (child.type === RevealPanelHeaderLeft) { + headerLeft = child; + } else if (child.type === RevealPanelHeaderRight) { + headerRight = child; + } else { + contents.push(child); + } + } + }); + const element = /* @__PURE__ */ external_react_default().createElement("div", { className: mergeClasses("tyk-ui-reveal-wrapper", wrapperClassName || "cem"), ref: wrapperRef, style }, /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-ui-reveal-wrapper__hole" }), /* @__PURE__ */ external_react_default().createElement("div", { ref: gutterRef, className: mergeClasses("tyk-ui-reveal-wrapper__gutter", gutterClassName) }, /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-ui-reveal-wrapper__gutter__headerleft" }, headerLeft), /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-ui-reveal-wrapper__gutter__logo" }, " "), /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-ui-reveal-wrapper__gutter__headerright" }, headerRight)), /* @__PURE__ */ external_react_default().createElement("div", { ref: panelRef, className: mergeClasses("tyk-ui-reveal-wrapper__panel", contentClassName), style: contentStyle }, contents)); + if (parentSelector) { + return (0,external_react_dom_.createPortal)(element, document.querySelector(parentSelector)); + } +}); +RevealPanel.propTypes = { + children: external_prop_types_default().instanceOf({}), + height: (external_prop_types_default()).string, + onHeightChange: (external_prop_types_default()).func, + onDragStart: (external_prop_types_default()).func, + onDragEnd: (external_prop_types_default()).func, + parentSelector: (external_prop_types_default()).string, + style: external_prop_types_default().instanceOf({}), + contentStyle: external_prop_types_default().instanceOf({}), + contentClassName: (external_prop_types_default()).string, + gutterClassName: (external_prop_types_default()).string, + wrapperClassName: (external_prop_types_default()).string +}; +RevealPanel.HeaderLeft = RevealPanelHeaderLeft; +RevealPanel.HeaderRight = RevealPanelHeaderRight; +/* harmony default export */ const components_RevealPanel = (RevealPanel); + +;// CONCATENATED MODULE: ./src/components/Tabs/tabs-context.js + +const TabsContext = (0,external_react_namespaceObject.createContext)(); + +;// CONCATENATED MODULE: ./src/components/Tabs/js/TabContext.js + +/* harmony default export */ const TabContext = ((0,external_react_namespaceObject.createContext)()); + +;// CONCATENATED MODULE: ./src/components/Tabs/js/TabContent.js +var TabContent_defProp = Object.defineProperty; +var TabContent_getOwnPropSymbols = Object.getOwnPropertySymbols; +var TabContent_hasOwnProp = Object.prototype.hasOwnProperty; +var TabContent_propIsEnum = Object.prototype.propertyIsEnumerable; +var TabContent_defNormalProp = (obj, key, value) => key in obj ? TabContent_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var TabContent_spreadValues = (a, b) => { + for (var prop in b || (b = {})) + if (TabContent_hasOwnProp.call(b, prop)) + TabContent_defNormalProp(a, prop, b[prop]); + if (TabContent_getOwnPropSymbols) + for (var prop of TabContent_getOwnPropSymbols(b)) { + if (TabContent_propIsEnum.call(b, prop)) + TabContent_defNormalProp(a, prop, b[prop]); + } + return a; +}; + + + + +const TabContent = (props) => { + const { + addTab, + hideTab, + updateTab, + showTab, + children, + selectedPath, + tabData, + tabsId, + tabExists, + path, + rendered, + hideTabContent, + tabs + } = props; + (0,external_react_namespaceObject.useEffect)(() => { + const tempTabData = TabContent_spreadValues({}, tabData); + if (!tabExists(path)) { + addTab(tempTabData, path); + } + }, [tabData, path]); + const prevTabData = hooks_usePrevious(tabData); + (0,external_react_namespaceObject.useEffect)(() => { + if (tabExists(path) && (tabData == null ? void 0 : tabData.title) && ((prevTabData == null ? void 0 : prevTabData.title) !== (tabData == null ? void 0 : tabData.title) || prevTabData.selected !== tabData.selected)) { + const tempTabData = TabContent_spreadValues({}, tabData); + updateTab(tempTabData, path); + } + }, [tabData, path, prevTabData, tabs]); + (0,external_react_namespaceObject.useEffect)(() => { + showTab(path); + return () => hideTab(path); + }, []); + const shouldRender = (0,external_react_namespaceObject.useMemo)(() => { + if (!Object.keys(tabs).length) { + return false; + } + if (hideTabContent || tabs[tabData.id].show === false) { + return false; + } + if (!rendered) { + return tabExists(path); + } + return selectedPath && selectedPath.indexOf(tabData.id) > -1; + }, [hideTabContent, rendered, selectedPath, tabData, tabs]); + return shouldRender ? /* @__PURE__ */ external_react_default().createElement("div", { key: tabData.id, className: "tyk-tab__content", style: { display: selectedPath && selectedPath.indexOf(tabData.id) > -1 ? "block" : "none" } }, /* @__PURE__ */ external_react_default().createElement( + TabContext.Provider, + { + value: { + path, + tabsId + } + }, + children + )) : null; +}; +TabContent.propTypes = { + addTab: (external_prop_types_default()).func, + updateTab: (external_prop_types_default()).func, + hideTab: (external_prop_types_default()).func, + showTab: (external_prop_types_default()).func, + children: external_prop_types_default().oneOfType([ + external_prop_types_default().arrayOf((external_prop_types_default()).node), + (external_prop_types_default()).node, + (external_prop_types_default()).element, + (external_prop_types_default()).string + ]), + path: external_prop_types_default().instanceOf(Array), + hideTabContent: (external_prop_types_default()).bool, + rendered: (external_prop_types_default()).bool, + selectedPath: external_prop_types_default().instanceOf(Array), + tabExists: (external_prop_types_default()).func, + tabsId: (external_prop_types_default()).string, + tabData: external_prop_types_default().instanceOf(Object), + tabs: external_prop_types_default().instanceOf(Object) +}; +/* harmony default export */ const js_TabContent = (TabContent); + +;// CONCATENATED MODULE: ./src/components/Tabs/js/Tab.js + + + + + +const Tab = (props) => { + const { id } = props; + const tabsContext = (0,external_react_namespaceObject.useContext)(TabsContext); + const tabContext = (0,external_react_namespaceObject.useContext)(TabContext); + const { + tabExists, + selectedPath, + addTab, + updateTab, + hideTab, + showTab, + rendered, + hideTabContent, + tabs + } = tabsContext; + const { + children + } = props; + const [path, setPath] = (0,external_react_namespaceObject.useState)(""); + (0,external_react_namespaceObject.useEffect)(() => { + let tempPath; + if (tabContext && path) { + if (tabContext.tabsId === tabsContext.id) { + tempPath = tabContext.path.concat([id]); + } else { + tempPath = [id]; + } + } else { + tempPath = [id]; + } + setPath(tempPath); + }, [tabContext]); + if (!path) { + return null; + } + return /* @__PURE__ */ external_react_default().createElement(external_react_namespaceObject.Fragment, null, /* @__PURE__ */ external_react_default().createElement( + js_TabContent, + { + addTab, + updateTab, + hideTab, + showTab, + tabExists, + tabData: props, + path, + tabsId: tabsContext.id, + selectedPath, + rendered, + hideTabContent, + tabs + }, + children + )); +}; +Tab.propTypes = { + children: external_prop_types_default().oneOfType([ + external_prop_types_default().arrayOf((external_prop_types_default()).node), + (external_prop_types_default()).node, + (external_prop_types_default()).element, + (external_prop_types_default()).string + ]), + id: (external_prop_types_default()).string +}; +Tab.defaultProps = {}; +/* harmony default export */ const js_Tab = (Tab); + +;// CONCATENATED MODULE: ./src/components/Tabs/index.js +var Tabs_defProp = Object.defineProperty; +var Tabs_getOwnPropSymbols = Object.getOwnPropertySymbols; +var Tabs_hasOwnProp = Object.prototype.hasOwnProperty; +var Tabs_propIsEnum = Object.prototype.propertyIsEnumerable; +var Tabs_defNormalProp = (obj, key, value) => key in obj ? Tabs_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var Tabs_spreadValues = (a, b) => { + for (var prop in b || (b = {})) + if (Tabs_hasOwnProp.call(b, prop)) + Tabs_defNormalProp(a, prop, b[prop]); + if (Tabs_getOwnPropSymbols) + for (var prop of Tabs_getOwnPropSymbols(b)) { + if (Tabs_propIsEnum.call(b, prop)) + Tabs_defNormalProp(a, prop, b[prop]); + } + return a; +}; + + + + + + +const Tabs = (props) => { + const { + children, + className, + id, + onTabChange, + type, + hideTabContent + } = props; + const [tabs, setTabs] = (0,external_react_namespaceObject.useState)({}); + const [selectedPath, setSelectedPath] = (0,external_react_namespaceObject.useState)([]); + const [rendered, setRendered] = (0,external_react_namespaceObject.useState)(false); + const [initialPath, setInitialPath] = (0,external_react_namespaceObject.useState)(null); + (0,external_react_namespaceObject.useEffect)(() => { + setSelectedPath(initialPath); + }, [initialPath]); + const updateTabsList = (tabsState, path, tabData) => { + let tempTabsState = Object.assign({}, tabsState); + const tempTabData = Object.assign({}, tabData); + const tempPath = path.slice(0); + while (tempPath.length > 1) { + tempTabsState = tempTabsState[tempPath.shift()]; + if (!tempTabsState) { + tempTabsState = {}; + } + } + tempTabData.tempPath = tempPath; + tempTabsState[tempPath.shift()] = tempTabData; + return tempTabsState; + }; + const toggleTab = (tabsState, path) => { + let tempTabsState = Object.assign({}, tabsState); + const tempPath = path.slice(0); + while (tempPath.length > 1) { + tempTabsState = tempTabsState[tempPath.shift()]; + } + const key = tempPath.shift(); + if (tempTabsState[key].collapsed === void 0) { + tempTabsState[key].collapsed = true; + } else { + tempTabsState[key].collapsed = !tempTabsState[key].collapsed; + } + return tempTabsState; + }; + const getCssClasses = () => { + let cssClasses = ["tyk-tabs"]; + cssClasses.push(`tyk-tabs--${type || "default"}`); + if (className) { + cssClasses = cssClasses.concat(className.split(" ")); + } + return cssClasses.join(" "); + }; + const setCurrentSelectedPath = (path, tabData) => { + const tempPath = path.slice(0); + let tempRendered = true; + if (tabData.collapsible) { + tempPath.push(Object.keys(tabData.tabs)[0]); + tempRendered = false; + } + setTabs((prevTabs) => { + let tempTabs = Object.assign({}, prevTabs); + tempTabs = toggleTab(tempTabs, path); + return tempTabs; + }); + setSelectedPath(tempPath); + setRendered(tempRendered); + if (onTabChange) { + onTabChange(tabData); + } + }; + const getTabCssClass = (tabId) => { + const cssClasses = []; + if (selectedPath && selectedPath.indexOf(tabId) > -1) { + cssClasses.push("active"); + } + return cssClasses.join(" "); + }; + const genTabs = (currentTabs, path) => { + if (!currentTabs) { + return null; + } + return /* @__PURE__ */ external_react_default().createElement("ul", null, Object.keys(currentTabs).map((tabId, index) => { + const tempPath = path ? path.concat([currentTabs[tabId].id]) : [currentTabs[tabId].id]; + const iconType = currentTabs[tabId].collapsed ? "chevron-up" : "chevron-down"; + if (currentTabs[tabId].show === false) { + return null; + } + return /* @__PURE__ */ external_react_default().createElement("li", { className: getTabCssClass(currentTabs[tabId].id), key: currentTabs[tabId].id }, /* @__PURE__ */ external_react_default().createElement( + "button", + { + type: "button", + onClick: setCurrentSelectedPath.bind(null, tempPath, currentTabs[tabId]), + onKeyDown: setCurrentSelectedPath.bind(null, tempPath, currentTabs[tabId]), + tabIndex: index + }, + currentTabs[tabId].title, + currentTabs[tabId].collapsible ? /* @__PURE__ */ external_react_default().createElement(components_Icon, { className: "collapsable-arrow", type: iconType }) : null + ), currentTabs[tabId].collapsible ? /* @__PURE__ */ external_react_default().createElement( + components_Collapsible, + { + collapsed: currentTabs[tabId].collapsed + }, + genTabs(currentTabs[tabId].tabs, tempPath) + ) : genTabs(currentTabs[tabId].tabs, tempPath)); + })); + }; + const addTab = (tabData, path) => { + setTabs((prevTabs) => updateTabsList(Tabs_spreadValues({}, prevTabs), path, tabData)); + if (tabData.selected) { + setInitialPath(path); + } + }; + const updateTab = (tabData, path) => { + setTabs((prevTabs) => { + const tempTabs = Tabs_spreadValues({}, prevTabs); + tempTabs[tabData.id] = tabData; + return tempTabs; + }); + if (tabData.selected) { + setCurrentSelectedPath(path, tabData); + } + }; + const hideTab = (path) => { + setTabs((prevTabs) => { + const tempTabs = Tabs_spreadValues({}, prevTabs); + tempTabs[path].show = false; + return tempTabs; + }); + }; + const showTab = (path) => { + setTabs((prevTabs) => { + const tempTabs = Tabs_spreadValues({}, prevTabs); + tempTabs[path].show = true; + return tempTabs; + }); + }; + const tabExists = (path) => { + let tempTabs = Tabs_spreadValues({}, tabs); + const tempPath = path.slice(0); + while (tempPath.length > 1) { + tempTabs = tempTabs[tempPath.shift()]; + } + const key = tempPath.shift(); + return !!(tempTabs && tempTabs[key]); + }; + return /* @__PURE__ */ external_react_default().createElement("div", { className: getCssClasses() }, genTabs(tabs), /* @__PURE__ */ external_react_default().createElement( + TabsContext.Provider, + { + value: { + id, + addTab, + hideTab, + updateTab, + showTab, + tabExists, + selectedPath, + rendered, + hideTabContent, + tabs + } + }, + typeof children === "function" ? children({ + hideTab, + showTab + }) : children + )); +}; +Tabs.propTypes = { + className: (external_prop_types_default()).string, + children: external_prop_types_default().oneOfType([ + external_prop_types_default().arrayOf((external_prop_types_default()).node), + (external_prop_types_default()).node, + (external_prop_types_default()).element, + (external_prop_types_default()).string + ]), + hideTabContent: (external_prop_types_default()).bool, + id: (external_prop_types_default()).string, + onTabChange: (external_prop_types_default()).func, + type: (external_prop_types_default()).string +}; +Tabs.Tab = js_Tab; +/* harmony default export */ const components_Tabs = (Tabs); + +;// CONCATENATED MODULE: ./src/components/Tooltip/index.js +var Tooltip_defProp = Object.defineProperty; +var Tooltip_getOwnPropSymbols = Object.getOwnPropertySymbols; +var Tooltip_hasOwnProp = Object.prototype.hasOwnProperty; +var Tooltip_propIsEnum = Object.prototype.propertyIsEnumerable; +var Tooltip_defNormalProp = (obj, key, value) => key in obj ? Tooltip_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var Tooltip_spreadValues = (a, b) => { + for (var prop in b || (b = {})) + if (Tooltip_hasOwnProp.call(b, prop)) + Tooltip_defNormalProp(a, prop, b[prop]); + if (Tooltip_getOwnPropSymbols) + for (var prop of Tooltip_getOwnPropSymbols(b)) { + if (Tooltip_propIsEnum.call(b, prop)) + Tooltip_defNormalProp(a, prop, b[prop]); + } + return a; +}; +var Tooltip_objRest = (source, exclude) => { + var target = {}; + for (var prop in source) + if (Tooltip_hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) + target[prop] = source[prop]; + if (source != null && Tooltip_getOwnPropSymbols) + for (var prop of Tooltip_getOwnPropSymbols(source)) { + if (exclude.indexOf(prop) < 0 && Tooltip_propIsEnum.call(source, prop)) + target[prop] = source[prop]; + } + return target; +}; + + + + +function Tooltip(_a) { + var _b = _a, { + render, + className, + children, + position = "auto", + style, + icon = false, + closable, + isOpened = false, + additionalClickParents = [] + } = _b, props = Tooltip_objRest(_b, [ + "render", + "className", + "children", + "position", + "style", + "icon", + "closable", + "isOpened", + "additionalClickParents" + ]); + const [isActive, setIsActive] = (0,external_react_namespaceObject.useState)(false); + const wrapperRef = (0,external_react_namespaceObject.useRef)(null); + const tooltipRef = (0,external_react_namespaceObject.useRef)(null); + const activeEvents = closable ? { + onClick: () => setIsActive(true) + } : { + onMouseEnter: () => setIsActive(true), + onMouseLeave: () => setIsActive(false), + onFocus: () => setIsActive(true), + onBlur: () => setIsActive(false) + }; + const handleDocumentClick = (0,external_react_namespaceObject.useCallback)((e) => { + if ([...additionalClickParents, tooltipRef.current].some((p) => { + var _a2; + return (_a2 = p == null ? void 0 : p.contains) == null ? void 0 : _a2.call(p, e.target); + })) { + return; + } + setIsActive(false); + }, [additionalClickParents]); + (0,external_react_namespaceObject.useEffect)(() => { + document.addEventListener("click", handleDocumentClick, true); + return () => document.removeEventListener("click", handleDocumentClick, true); + }, [handleDocumentClick]); + (0,external_react_namespaceObject.useEffect)(() => { + setIsActive(isOpened); + }, [isOpened]); + const classes = ["tyk-tooltip", className].filter(Boolean).join(" "); + return /* @__PURE__ */ external_react_default().createElement( + "div", + Tooltip_spreadValues(Tooltip_spreadValues({ + className: "tyk-tooltip__wrapper", + style: Tooltip_spreadValues({ display: "inline-block" }, style), + ref: wrapperRef + }, activeEvents), props), + children, + isActive && /* @__PURE__ */ external_react_default().createElement( + components_FloatingContainer, + { + element: wrapperRef, + forceDisplay: position, + preferredPosition: "top", + offset: 20 + }, + /* @__PURE__ */ external_react_default().createElement("div", { className: classes, ref: tooltipRef }, icon && (icon === true ? /* @__PURE__ */ external_react_default().createElement(components_Icon, { family: "tykon", type: "help" }) : icon), /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-tooltip__content" }, render), closable && /* @__PURE__ */ external_react_default().createElement( + components_Icon, + { + family: "tykon", + type: "x", + onClick: (e) => { + e.stopPropagation(); + setIsActive(false); + } + } + )) + ) + ); +} +Tooltip.propTypes = { + children: (external_prop_types_default()).node.isRequired, + /** custom styles to apply on hovered element */ + style: external_prop_types_default().instanceOf(Object), + /** describes where the tooltip should be displayed in relation + * whith the hovered element: top, bottom, left, right + */ + position: (external_prop_types_default()).string, + /** content of the tooltip, can be a string or a React node element */ + render: external_prop_types_default().oneOfType([ + (external_prop_types_default()).node, + (external_prop_types_default()).string + ]), + /** additional tooltip classes */ + className: (external_prop_types_default()).string, + /** if `true` displays the "question mark" icon; + * optionally you can pass a different icon + */ + icon: external_prop_types_default().oneOfType([ + (external_prop_types_default()).bool, + (external_prop_types_default()).node + ]), + /** if `true` the tooltip is activated on click and an "x" is displayed to close it; + * if `false` the tooltip is activated on hover and it closes when no longer hovering + */ + closable: (external_prop_types_default()).bool, + /** handles the `isActive` state of the tooltip from outside */ + isOpened: (external_prop_types_default()).bool, + /** Additional dom elements to check if the document click was inside of them. + * Useful when you want to open the tooltip after an interaction + * with an element not inside the tooltip root. + */ + additionalClickParents: external_prop_types_default().instanceOf(Array) +}; +/* harmony default export */ const components_Tooltip = (Tooltip); + +;// CONCATENATED MODULE: ./src/components/TextEllipsis/index.js + + + +function TextEllipsis({ text, limit, position }) { + return text.length > limit ? /* @__PURE__ */ external_react_default().createElement(components_Tooltip, { render: text, position }, text.substring(0, limit), "...") : text; +} +TextEllipsis.propTypes = { + /** Text to be shrinked by TextEllipsis */ + text: (external_prop_types_default()).string, + /** Number of characters that TextEllipsis would leave visible */ + limit: (external_prop_types_default()).number, + /** tooltip position */ + position: (external_prop_types_default()).string +}; +/* harmony default export */ const components_TextEllipsis = (TextEllipsis); + +;// CONCATENATED MODULE: ./src/form/components/Pagination/index.js +var Pagination_defProp = Object.defineProperty; +var Pagination_defNormalProp = (obj, key, value) => key in obj ? Pagination_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var Pagination_publicField = (obj, key, value) => { + Pagination_defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); + return value; +}; + + +const shouldShowPage = (currentNr, pageNr, totalNrOfPages) => { + const basePageNr = 5; + const minimumNrOfPages = 10; + if (totalNrOfPages < minimumNrOfPages) { + return true; + } + if (pageNr < basePageNr && currentNr < basePageNr) { + return true; + } + if (pageNr > totalNrOfPages - basePageNr && currentNr > totalNrOfPages - basePageNr) { + return true; + } + if (currentNr >= pageNr - 2 && currentNr <= pageNr + 2) { + return true; + } + if ([0, 1, totalNrOfPages - 1, totalNrOfPages].indexOf(currentNr) > -1) { + return true; + } + return false; +}; +const getPagesArr = (nrOfPages, selectedPage) => { + let i; + const pagesArr = []; + for (i = 0; i <= nrOfPages; i += 1) { + if (shouldShowPage(i, selectedPage, nrOfPages)) { + if (i > pagesArr[pagesArr.length - 1]) { + pagesArr.push("..."); + } + pagesArr.push(i + 1); + } + } + return pagesArr; +}; +class Pagination extends external_react_namespaceObject.Component { + constructor(props) { + super(props); + const { + value, + totalNrOfPages + } = this.props; + this.state = { + prevProps: this.props, + selectedPage: value || 0, + pagesArray: getPagesArr(totalNrOfPages, value) + }; + this.pageKey = 0; + } + static getDerivedStateFromProps(nextProps, prevState) { + if (nextProps.value !== prevState.prevProps.value || nextProps.totalNrOfPages !== prevState.prevProps.totalNrOfPages) { + return { + selectedPage: nextProps.value, + pagesArray: getPagesArr(nextProps.totalNrOfPages, nextProps.value) + }; + } + return null; + } + getPageCssClass(pageNr) { + const { selectedPage } = this.state; + const cssClasses = []; + if (selectedPage === pageNr) { + cssClasses.push("active"); + } + return cssClasses.join(" "); + } + getPageKey() { + this.pageKey += 1; + return this.pageKey; + } + goToPage(pageNr) { + const { onChange, totalNrOfPages } = this.props; + this.setState({ + selectedPage: pageNr, + pagesArray: getPagesArr(totalNrOfPages, pageNr) + }, () => { + if (onChange) { + onChange(pageNr); + } + }); + } + render() { + const { totalNrOfPages } = this.props; + const { pagesArray, selectedPage } = this.state; + return /* @__PURE__ */ external_react_default().createElement(external_react_namespaceObject.Fragment, null, totalNrOfPages ? /* @__PURE__ */ external_react_default().createElement("ul", { className: "tyk-pagination" }, selectedPage > 0 && totalNrOfPages > 5 ? /* @__PURE__ */ external_react_default().createElement("li", null, /* @__PURE__ */ external_react_default().createElement("button", { onClick: this.goToPage.bind(this, selectedPage - 1), type: "button" }, "Previous")) : null, pagesArray.map((pageNr) => /* @__PURE__ */ external_react_default().createElement("li", { key: this.getPageKey(), className: this.getPageCssClass(pageNr - 1) }, pageNr !== "..." ? /* @__PURE__ */ external_react_default().createElement("button", { onClick: this.goToPage.bind(this, pageNr - 1), type: "button" }, pageNr) : /* @__PURE__ */ external_react_default().createElement("span", null, pageNr))), selectedPage < totalNrOfPages && totalNrOfPages > 5 ? /* @__PURE__ */ external_react_default().createElement("li", null, /* @__PURE__ */ external_react_default().createElement("button", { onClick: this.goToPage.bind(this, selectedPage + 1), type: "button" }, "Next")) : null) : null); + } +} +Pagination_publicField(Pagination, "propTypes", { + value: (external_prop_types_default()).number, + totalNrOfPages: (external_prop_types_default()).number, + onChange: (external_prop_types_default()).func +}); + +;// CONCATENATED MODULE: ./src/components/Table/tableContext.js + +const tableContext = (0,external_react_namespaceObject.createContext)(); + +;// CONCATENATED MODULE: ./src/components/Table/js/header-cell.js + + + + +const HeaderCell = ({ column }) => { + const { sortable } = column; + const [sortOrder, setSortOrder] = (0,external_react_namespaceObject.useState)((sortable == null ? void 0 : sortable.default) || "ASC"); + const { state, sendMessage } = (0,external_react_namespaceObject.useContext)(tableContext); + return /* @__PURE__ */ external_react_default().createElement( + "th", + { + key: column.id, + onClick: sortable ? () => { + sendMessage("sort", { column, sortOrder }); + setSortOrder(sortOrder === "ASC" ? "DESC" : "ASC"); + } : null, + className: state.maxHeight ? "fixed-header" : "" + }, + column.name, + column.sortable && /* @__PURE__ */ external_react_default().createElement("span", { className: "header-sort" }, /* @__PURE__ */ external_react_default().createElement(components_Icon, { family: "tykon", type: "arrowsort" })) + ); +}; +HeaderCell.propTypes = { + column: external_prop_types_default().instanceOf(Object) +}; + +;// CONCATENATED MODULE: ./src/components/Table/js/header.js +var header_defProp = Object.defineProperty; +var header_defProps = Object.defineProperties; +var header_getOwnPropDescs = Object.getOwnPropertyDescriptors; +var header_getOwnPropSymbols = Object.getOwnPropertySymbols; +var header_hasOwnProp = Object.prototype.hasOwnProperty; +var header_propIsEnum = Object.prototype.propertyIsEnumerable; +var header_defNormalProp = (obj, key, value) => key in obj ? header_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var header_spreadValues = (a, b) => { + for (var prop in b || (b = {})) + if (header_hasOwnProp.call(b, prop)) + header_defNormalProp(a, prop, b[prop]); + if (header_getOwnPropSymbols) + for (var prop of header_getOwnPropSymbols(b)) { + if (header_propIsEnum.call(b, prop)) + header_defNormalProp(a, prop, b[prop]); + } + return a; +}; +var header_spreadProps = (a, b) => header_defProps(a, header_getOwnPropDescs(b)); + + + +const Header = () => { + const [selectAll, setSelectAll] = (0,external_react_namespaceObject.useState)(false); + const { state, sendMessage } = (0,external_react_namespaceObject.useContext)(tableContext); + const { columns, selectable } = state; + const generateHeaders = () => columns.map((column) => /* @__PURE__ */ external_react_default().createElement( + HeaderCell, + { + key: column.id, + column + } + )); + const generateSelectable = () => { + var _a; + if (!selectable) { + return; + } + const Component = selectable.type; + return /* @__PURE__ */ external_react_default().createElement( + "th", + { + className: state.maxHeight ? "fixed-header" : "" + }, + (selectable == null ? void 0 : selectable.allowSelectAll) ? /* @__PURE__ */ external_react_default().createElement("div", { className: selectable == null ? void 0 : selectable.style }, /* @__PURE__ */ external_react_default().createElement( + Component, + header_spreadProps(header_spreadValues({}, selectable.values), { + onClick: () => { + setSelectAll(!selectAll); + sendMessage("header.selectAll.click", selectAll); + }, + onChange: (v) => { + sendMessage("header.selectAll.change", v); + } + }), + (_a = selectable.values) == null ? void 0 : _a.value + )) : selectable.name || "Select" + ); + }; + return /* @__PURE__ */ external_react_default().createElement("thead", null, /* @__PURE__ */ external_react_default().createElement("tr", null, selectable && selectable.position === "LEFT" && generateSelectable(), generateHeaders(), selectable && selectable.position === "RIGHT" && generateSelectable())); +}; + +;// CONCATENATED MODULE: ./src/form/components/Checkbox/index.js +var Checkbox_defProp = Object.defineProperty; +var Checkbox_defProps = Object.defineProperties; +var Checkbox_getOwnPropDescs = Object.getOwnPropertyDescriptors; +var Checkbox_getOwnPropSymbols = Object.getOwnPropertySymbols; +var Checkbox_hasOwnProp = Object.prototype.hasOwnProperty; +var Checkbox_propIsEnum = Object.prototype.propertyIsEnumerable; +var Checkbox_defNormalProp = (obj, key, value) => key in obj ? Checkbox_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var Checkbox_spreadValues = (a, b) => { + for (var prop in b || (b = {})) + if (Checkbox_hasOwnProp.call(b, prop)) + Checkbox_defNormalProp(a, prop, b[prop]); + if (Checkbox_getOwnPropSymbols) + for (var prop of Checkbox_getOwnPropSymbols(b)) { + if (Checkbox_propIsEnum.call(b, prop)) + Checkbox_defNormalProp(a, prop, b[prop]); + } + return a; +}; +var Checkbox_spreadProps = (a, b) => Checkbox_defProps(a, Checkbox_getOwnPropDescs(b)); +var Checkbox_objRest = (source, exclude) => { + var target = {}; + for (var prop in source) + if (Checkbox_hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) + target[prop] = source[prop]; + if (source != null && Checkbox_getOwnPropSymbols) + for (var prop of Checkbox_getOwnPropSymbols(source)) { + if (exclude.indexOf(prop) < 0 && Checkbox_propIsEnum.call(source, prop)) + target[prop] = source[prop]; + } + return target; +}; +var Checkbox_publicField = (obj, key, value) => { + Checkbox_defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); + return value; +}; + + +class Checkbox extends external_react_namespaceObject.Component { + getCssClasses() { + const { + inline, + disabled, + readOnly, + theme = "", + wrapperClassName = "" + } = this.props; + const cssClasses = [wrapperClassName]; + cssClasses.push("tyk-checkbox"); + if (inline) { + cssClasses.push("tyk-checkbox--inline"); + } + if (theme.trim()) { + cssClasses.push(...theme.split(" ").map((t) => `tyk-checkbox--theme-${t}`)); + } + if (disabled || readOnly) { + cssClasses.push("tyk-checkbox--is-disabled"); + } + return cssClasses.join(" "); + } + displayError() { + const { error } = this.props; + if (!error) + return null; + return /* @__PURE__ */ external_react_default().createElement("p", { className: "tyk-form-control__error-message" }, error); + } + displayNote() { + const { note } = this.props; + if (!note) + return null; + return /* @__PURE__ */ external_react_default().createElement("p", { className: "tyk-form-control__help-block" }, note); + } + render() { + const _a = this.props, { + input, + value, + label + } = _a, rest = Checkbox_objRest(_a, [ + "input", + "value", + "label" + ]); + return /* @__PURE__ */ external_react_default().createElement( + "div", + { + className: this.getCssClasses() + }, + /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-form-control__wrapper" }, /* @__PURE__ */ external_react_default().createElement("label", null, /* @__PURE__ */ external_react_default().createElement( + "input", + Checkbox_spreadProps(Checkbox_spreadValues(Checkbox_spreadValues({ + checked: input ? input.value : value + }, input), rest), { + type: "checkbox" + }) + ), label), this.displayNote(), this.displayError()) + ); + } +} +Checkbox_publicField(Checkbox, "propTypes", { + /** Disable a checkbox */ + disabled: (external_prop_types_default()).bool, + /** Readonly prop behaves the same as disable on checkboxes */ + readOnly: (external_prop_types_default()).bool, + /** Align checkbox with in same line with other elements */ + inline: (external_prop_types_default()).bool, + /** Set a theme for checkbox */ + theme: (external_prop_types_default()).string, + /** Set an error state for checkbox if boolean will show just icon without message */ + error: external_prop_types_default().oneOfType([ + (external_prop_types_default()).string, + (external_prop_types_default()).bool + ]), + /** Adds additional information under the checkbox element */ + note: (external_prop_types_default()).string, + input: external_prop_types_default().instanceOf(Object), + /** Adds a label to checkbox */ + label: external_prop_types_default().oneOfType([ + external_prop_types_default().arrayOf((external_prop_types_default()).node), + (external_prop_types_default()).node, + (external_prop_types_default()).element, + (external_prop_types_default()).func, + (external_prop_types_default()).string + ]), + /** Set a name for checkbox */ + name: (external_prop_types_default()).string, + /** Set initial value for checkbox */ + value: external_prop_types_default().oneOfType([ + (external_prop_types_default()).string, + (external_prop_types_default()).bool + ]), + /** Make checkbox checked by default */ + checked: external_prop_types_default().oneOfType([ + (external_prop_types_default()).string, + (external_prop_types_default()).bool + ]), + /** Callback function executed on change of checkbox */ + onChange: (external_prop_types_default()).func, + /** CSS classes added to the wrapper of the component */ + wrapperClassName: (external_prop_types_default()).string +}); + +;// CONCATENATED MODULE: ./src/components/Table/js/cell.js +var cell_defProp = Object.defineProperty; +var cell_getOwnPropSymbols = Object.getOwnPropertySymbols; +var cell_hasOwnProp = Object.prototype.hasOwnProperty; +var cell_propIsEnum = Object.prototype.propertyIsEnumerable; +var cell_defNormalProp = (obj, key, value) => key in obj ? cell_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var cell_spreadValues = (a, b) => { + for (var prop in b || (b = {})) + if (cell_hasOwnProp.call(b, prop)) + cell_defNormalProp(a, prop, b[prop]); + if (cell_getOwnPropSymbols) + for (var prop of cell_getOwnPropSymbols(b)) { + if (cell_propIsEnum.call(b, prop)) + cell_defNormalProp(a, prop, b[prop]); + } + return a; +}; + + +const Cell = ({ col, row }) => { + var _a, _b, _c, _d, _e; + if (!row.values[col.id]) { + return /* @__PURE__ */ external_react_default().createElement("td", null); + } + if (col.type === "string") { + return ( + // eslint-disable-next-line jsx-a11y/click-events-have-key-events + /* @__PURE__ */ external_react_default().createElement( + "td", + cell_spreadValues({ + className: ((_a = row.values[col.id].styling) == null ? void 0 : _a.className) || null + }, (_b = row == null ? void 0 : row.values[col.id]) == null ? void 0 : _b.events), + (_c = row.values[col.id]) == null ? void 0 : _c.value + ) + ); + } + const Component = col.type; + return /* @__PURE__ */ external_react_default().createElement( + "td", + cell_spreadValues({ + className: ((_d = row.values[col.id].styling) == null ? void 0 : _d.className) || null + }, (_e = row == null ? void 0 : row.values[col.id]) == null ? void 0 : _e.events), + /* @__PURE__ */ external_react_default().createElement( + Component, + cell_spreadValues({}, row.values[col.id].props), + row.values[col.id].children ? row.values[col.id].children : null + ) + ); +}; +Cell.propTypes = { + col: external_prop_types_default().instanceOf(Object), + row: external_prop_types_default().instanceOf(Object), + index: (external_prop_types_default()).number +}; + +;// CONCATENATED MODULE: ./src/components/Table/js/row.js + + + + + +const Row = ({ row, index }) => { + var _a, _b; + const { state, sendMessage } = (0,external_react_namespaceObject.useContext)(tableContext); + const { columns, selectable } = state; + const SelectableCheckbox = () => /* @__PURE__ */ external_react_default().createElement("td", null, /* @__PURE__ */ external_react_default().createElement( + Checkbox, + { + defaultChecked: row.selected, + onChange: (v) => sendMessage("row.selected", { index, selected: v }) + } + )); + return /* @__PURE__ */ external_react_default().createElement( + "tr", + { + onClick: (_a = row.events) == null ? void 0 : _a.onClick, + className: (_b = row.styling) == null ? void 0 : _b.className + }, + selectable && selectable.position === "LEFT" && SelectableCheckbox(), + columns.map((col) => /* @__PURE__ */ external_react_default().createElement(Cell, { key: col.id, col, row, index })), + selectable && selectable.position === "RIGHT" && SelectableCheckbox() + ); +}; +Row.propTypes = { + row: external_prop_types_default().instanceOf(Object), + index: (external_prop_types_default()).number +}; + +;// CONCATENATED MODULE: ./src/components/Table/js/body.js + + + +const Body = () => { + const { state } = (0,external_react_namespaceObject.useContext)(tableContext); + const { rows } = state; + return /* @__PURE__ */ external_react_default().createElement( + "tbody", + null, + // eslint-disable-next-line react/no-array-index-key + rows.map((row, i) => /* @__PURE__ */ external_react_default().createElement(Row, { key: i, row, index: i })) + ); +}; + +;// CONCATENATED MODULE: ./src/components/Table/index.js +var Table_defProp = Object.defineProperty; +var Table_defProps = Object.defineProperties; +var Table_getOwnPropDescs = Object.getOwnPropertyDescriptors; +var Table_getOwnPropSymbols = Object.getOwnPropertySymbols; +var Table_hasOwnProp = Object.prototype.hasOwnProperty; +var Table_propIsEnum = Object.prototype.propertyIsEnumerable; +var Table_defNormalProp = (obj, key, value) => key in obj ? Table_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var Table_spreadValues = (a, b) => { + for (var prop in b || (b = {})) + if (Table_hasOwnProp.call(b, prop)) + Table_defNormalProp(a, prop, b[prop]); + if (Table_getOwnPropSymbols) + for (var prop of Table_getOwnPropSymbols(b)) { + if (Table_propIsEnum.call(b, prop)) + Table_defNormalProp(a, prop, b[prop]); + } + return a; +}; +var Table_spreadProps = (a, b) => Table_defProps(a, Table_getOwnPropDescs(b)); + + + + + + + + + +function Table({ + value, + onChange, + noDataMessage, + loading, + infiniteScrolling +}) { + var _a; + const [state, setState] = (0,external_react_namespaceObject.useState)(null); + const [onChangeMsg, setOnChangeMsg] = (0,external_react_namespaceObject.useState)("api"); + const itemsListRef = (0,external_react_namespaceObject.useRef)(null); + const sortRows = (col, sortOrder) => { + setState(Table_spreadProps(Table_spreadValues({}, state), { + sort: { + order: sortOrder, + col + } + })); + }; + const selectAllRows = (data) => { + setState(Table_spreadProps(Table_spreadValues({}, state), { + rows: state.rows.map((row) => Table_spreadProps(Table_spreadValues({}, row), { selected: data })) + })); + }; + const selectRow = (data) => { + const { index, selected } = data; + const selectedRow = state.rows[index]; + setState(Table_spreadProps(Table_spreadValues({}, state), { + rows: [ + ...state.rows.slice(0, index), + Table_spreadProps(Table_spreadValues({}, selectedRow), { selected }), + ...state.rows.slice(index + 1) + ] + })); + }; + const setPagination = (data) => { + setState(Table_spreadProps(Table_spreadValues({}, state), { + pagination: Table_spreadProps(Table_spreadValues({}, state.pagination), { + current: data + 1 + }) + })); + }; + const api = { + getState: () => state, + setState: (newState) => setState(newState) + }; + const sendMessage = (message, data) => { + setOnChangeMsg(message); + if (message === "sort") { + sortRows(data.column.id, data.sortOrder); + } + if (message === "header.selectAll.click") { + selectAllRows(data); + } + if (message === "header.selectAll.change") { + selectAllRows(data); + } + if (message === "row.selected") { + selectRow(data); + } + if (message === "pagination.change") { + setPagination(data); + } + }; + (0,external_react_namespaceObject.useEffect)(() => setState(value), [value]); + (0,external_react_namespaceObject.useEffect)(() => { + if (onChange) { + onChange(onChangeMsg, state, api); + } + setOnChangeMsg("api"); + }, [state]); + if (!state) { + return /* @__PURE__ */ external_react_default().createElement(components_Loader, { position: "absolute" }); + } + if (state.rows <= 0) { + return /* @__PURE__ */ external_react_default().createElement(components_Message, { theme: "info" }, noDataMessage || "No Data Available"); + } + const getTable = () => /* @__PURE__ */ external_react_default().createElement("table", { className: "tyk-table", ref: itemsListRef }, /* @__PURE__ */ external_react_default().createElement(Header, null), /* @__PURE__ */ external_react_default().createElement(Body, null)); + return /* @__PURE__ */ external_react_default().createElement(tableContext.Provider, { value: { state, sendMessage } }, /* @__PURE__ */ external_react_default().createElement("div", { className: `scrollable ${((_a = state.styling) == null ? void 0 : _a.className) || ""}`, style: { height: state.maxHeight ? state.maxHeight : "auto", position: "relative" } }, loading && /* @__PURE__ */ external_react_default().createElement(components_Loader, { position: "absolute", withbackground: true }), infiniteScrolling && state.pagination ? /* @__PURE__ */ external_react_default().createElement( + components_InfiniteScroller, + { + refChild: itemsListRef, + hasMore: state.pagination.totalPages > state.pagination.current, + loadMore: (num) => sendMessage("pagination.change", num), + pageNumber: state.pagination.current - 1, + initialLoad: false + }, + getTable() + ) : getTable()), state.pagination && !infiniteScrolling && /* @__PURE__ */ external_react_default().createElement("div", { className: "new-table-pagination" }, /* @__PURE__ */ external_react_default().createElement( + Pagination, + { + value: state.pagination.current - 1, + nrItemsOnPage: state.pagination.perPage - 1, + totalNrOfPages: state.pagination.totalPages - 1, + onChange: (num) => sendMessage("pagination.change", num) + } + ))); +} +Table.propTypes = { + /** Configuration object used to render the component */ + value: external_prop_types_default().shape({ + /** Configuration for table columns */ + columns: external_prop_types_default().arrayOf(external_prop_types_default().shape({ + /** Unique id of the column */ + id: (external_prop_types_default()).string.isRequired, + /** Name of the column */ + name: (external_prop_types_default()).string, + /** Type of column, String by default */ + type: external_prop_types_default().oneOfType([ + /** Just renders cell data of type strings */ + (external_prop_types_default()).string, + /** Render cell of elements (eg. Input / Button) */ + (external_prop_types_default()).element, + /** Render a custom function/component */ + (external_prop_types_default()).func + ]), + sortable: external_prop_types_default().oneOfType([ + /** Make Column sortable */ + (external_prop_types_default()).bool, + /** Configure sorting behaviour */ + external_prop_types_default().shape({ + /** Set default sorting direction ASC / DESC */ + default: (external_prop_types_default()).string + }) + ]) + })), + /** Configuration for table rows */ + rows: external_prop_types_default().arrayOf(external_prop_types_default().shape({})), + /** Configuration to make table rows selectable */ + selectable: external_prop_types_default().shape({}), + /** Renders pagination for table if the object is missing / empty no pagination is rendered. */ + pagination: external_prop_types_default().shape({}), + /** Sets maximum height for table container. */ + maxHeight: (external_prop_types_default()).string, + /** Styling for the table container. */ + styling: external_prop_types_default().shape({ + /** It's recommended to add styles to a class and pass the class in this object */ + className: (external_prop_types_default()).string + }) + }).isRequired, + /** Callback executed with message and value when there are changes on table */ + onChange: (external_prop_types_default()).func, + /** Renders a component with the given message when `config.rows` is empty */ + noDataMessage: (external_prop_types_default()).string, + /** Show placeholder loader */ + loading: (external_prop_types_default()).bool, + /** Adds infinite scroller on page and calls `onChange` with `pagination.change` message */ + infiniteScrolling: (external_prop_types_default()).bool +}; +Table.defaultProps = { + loading: false, + infiniteScrolling: false, + noDataMessage: "No Data Available", + onChange: null +}; +/* harmony default export */ const components_Table = (Table); + +;// CONCATENATED MODULE: ./src/layout/Column/index.js +var Column_defProp = Object.defineProperty; +var Column_defProps = Object.defineProperties; +var Column_getOwnPropDescs = Object.getOwnPropertyDescriptors; +var Column_getOwnPropSymbols = Object.getOwnPropertySymbols; +var Column_hasOwnProp = Object.prototype.hasOwnProperty; +var Column_propIsEnum = Object.prototype.propertyIsEnumerable; +var Column_defNormalProp = (obj, key, value) => key in obj ? Column_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var Column_spreadValues = (a, b) => { + for (var prop in b || (b = {})) + if (Column_hasOwnProp.call(b, prop)) + Column_defNormalProp(a, prop, b[prop]); + if (Column_getOwnPropSymbols) + for (var prop of Column_getOwnPropSymbols(b)) { + if (Column_propIsEnum.call(b, prop)) + Column_defNormalProp(a, prop, b[prop]); + } + return a; +}; +var Column_spreadProps = (a, b) => Column_defProps(a, Column_getOwnPropDescs(b)); +var Column_objRest = (source, exclude) => { + var target = {}; + for (var prop in source) + if (Column_hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) + target[prop] = source[prop]; + if (source != null && Column_getOwnPropSymbols) + for (var prop of Column_getOwnPropSymbols(source)) { + if (exclude.indexOf(prop) < 0 && Column_propIsEnum.call(source, prop)) + target[prop] = source[prop]; + } + return target; +}; +var Column_publicField = (obj, key, value) => { + Column_defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); + return value; +}; + + +class Column extends external_react_namespaceObject.PureComponent { + getCssClasses() { + const { + align, + className, + offset, + size + } = this.props; + const colSize = size.split(" "); + const colOffsets = offset ? offset.split(" ") : []; + let cssClasses = colSize.map((cSize) => `tyk-col--${cSize}`); + const offsets = colOffsets.map((cOffset) => `tyk-col--offset-${cOffset}`); + if (align) { + cssClasses.push(`tyk-col--align-${align}`); + } + if (className) { + cssClasses = cssClasses.concat(className.split(" ")); + } + cssClasses.push("tyk-col"); + cssClasses = cssClasses.concat(offsets || []); + return cssClasses.join(" "); + } + render() { + const _a = this.props, { children, id } = _a, props = Column_objRest(_a, ["children", "id"]); + return /* @__PURE__ */ external_react_default().createElement("div", Column_spreadProps(Column_spreadValues({}, props), { className: this.getCssClasses(), id }), children); + } +} +Column_publicField(Column, "propTypes", { + /** + * This property describes how the column element will be aligned vertically + * within a Row: bottom, center, top + */ + align: (external_prop_types_default()).string, + /** Css classes that can be passed to the column element */ + className: (external_prop_types_default()).string, + /** + * ID that can be passed to the column element + */ + id: (external_prop_types_default()).string, + /** + * Specifies the size of the column within a Row (values must be between 1 - 12) + */ + size: (external_prop_types_default()).string.isRequired, + /** + * Specifies the left gap a column can have within a Row (values must be between 1 - 12) + */ + offset: (external_prop_types_default()).string, + children: external_prop_types_default().oneOfType([ + (external_prop_types_default()).element, + (external_prop_types_default()).string, + (external_prop_types_default()).object, + (external_prop_types_default()).node + ]) +}); +/* harmony default export */ const layout_Column = (Column); + +;// CONCATENATED MODULE: ./src/layout/Row/index.js +var Row_defProp = Object.defineProperty; +var Row_defProps = Object.defineProperties; +var Row_getOwnPropDescs = Object.getOwnPropertyDescriptors; +var Row_getOwnPropSymbols = Object.getOwnPropertySymbols; +var Row_hasOwnProp = Object.prototype.hasOwnProperty; +var Row_propIsEnum = Object.prototype.propertyIsEnumerable; +var Row_defNormalProp = (obj, key, value) => key in obj ? Row_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var Row_spreadValues = (a, b) => { + for (var prop in b || (b = {})) + if (Row_hasOwnProp.call(b, prop)) + Row_defNormalProp(a, prop, b[prop]); + if (Row_getOwnPropSymbols) + for (var prop of Row_getOwnPropSymbols(b)) { + if (Row_propIsEnum.call(b, prop)) + Row_defNormalProp(a, prop, b[prop]); + } + return a; +}; +var Row_spreadProps = (a, b) => Row_defProps(a, Row_getOwnPropDescs(b)); +var Row_objRest = (source, exclude) => { + var target = {}; + for (var prop in source) + if (Row_hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) + target[prop] = source[prop]; + if (source != null && Row_getOwnPropSymbols) + for (var prop of Row_getOwnPropSymbols(source)) { + if (exclude.indexOf(prop) < 0 && Row_propIsEnum.call(source, prop)) + target[prop] = source[prop]; + } + return target; +}; +var Row_publicField = (obj, key, value) => { + Row_defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); + return value; +}; + + +class Row_Row extends external_react_namespaceObject.PureComponent { + getCssClasses() { + const { className, nogutters } = this.props; + let cssClass = ["tyk-row"]; + if (nogutters) { + cssClass.push("no-gutters"); + cssClass.push("tyk-row--gutterless"); + } + if (className) { + cssClass = cssClass.concat(className.split(" ")); + } + return cssClass.join(" "); + } + render() { + const _a = this.props, { + children, + nogutters + } = _a, rest = Row_objRest(_a, [ + "children", + "nogutters" + ]); + return /* @__PURE__ */ external_react_default().createElement("div", Row_spreadProps(Row_spreadValues({}, rest), { className: this.getCssClasses() }), children); + } +} +Row_publicField(Row_Row, "propTypes", { + children: external_prop_types_default().oneOfType([ + (external_prop_types_default()).element, + (external_prop_types_default()).node + ]), + /** Css classes that can be passed to the Row element */ + className: (external_prop_types_default()).string, + /** Removes all the spaces between column */ + nogutters: (external_prop_types_default()).bool +}); + +;// CONCATENATED MODULE: ./src/form/components/Dropdown/dropdown-context.js + +const DropdownContext = (0,external_react_namespaceObject.createContext)(); + +;// CONCATENATED MODULE: ./src/form/components/Dropdown/js/DropdownItem.js + + + + +function DropdownItem(props) { + const { + customdropdownitem, + children, + eventKey, + href, + target, + title, + onClick + } = props; + const dropdownItemCLick = (0,external_react_namespaceObject.useCallback)((dropdownContext, itemProps) => { + dropdownContext.onSelectItem(eventKey, itemProps); + if (onClick) + onClick(eventKey); + }, []); + return /* @__PURE__ */ external_react_default().createElement(DropdownContext.Consumer, null, (dropdownContext) => /* @__PURE__ */ external_react_default().createElement( + "li", + { + onClick: () => dropdownItemCLick(dropdownContext, props), + onKeyUp: () => { + } + }, + customdropdownitem ? (0,external_react_namespaceObject.cloneElement)(customdropdownitem, {}) : /* @__PURE__ */ external_react_default().createElement("a", { href, target }, eventKey && dropdownContext.selectedItem === eventKey && dropdownContext.showCheckmark ? /* @__PURE__ */ external_react_default().createElement(components_Icon, { type: "check" }) : null, /* @__PURE__ */ external_react_default().createElement("span", null, title || children)) + )); +} +DropdownItem.propTypes = { + children: external_prop_types_default().oneOfType([ + (external_prop_types_default()).element, + (external_prop_types_default()).node, + (external_prop_types_default()).string + ]), + customdropdownitem: external_prop_types_default().oneOfType([ + external_prop_types_default().arrayOf((external_prop_types_default()).node), + (external_prop_types_default()).node, + (external_prop_types_default()).element + ]), + eventKey: (external_prop_types_default()).string, + href: (external_prop_types_default()).string, + target: (external_prop_types_default()).string, + onClick: (external_prop_types_default()).func, + title: (external_prop_types_default()).string +}; +/* harmony default export */ const js_DropdownItem = (DropdownItem); + +;// CONCATENATED MODULE: ./src/form/components/Dropdown/index.js +var Dropdown_defProp = Object.defineProperty; +var Dropdown_getOwnPropSymbols = Object.getOwnPropertySymbols; +var Dropdown_hasOwnProp = Object.prototype.hasOwnProperty; +var Dropdown_propIsEnum = Object.prototype.propertyIsEnumerable; +var Dropdown_defNormalProp = (obj, key, value) => key in obj ? Dropdown_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var Dropdown_spreadValues = (a, b) => { + for (var prop in b || (b = {})) + if (Dropdown_hasOwnProp.call(b, prop)) + Dropdown_defNormalProp(a, prop, b[prop]); + if (Dropdown_getOwnPropSymbols) + for (var prop of Dropdown_getOwnPropSymbols(b)) { + if (Dropdown_propIsEnum.call(b, prop)) + Dropdown_defNormalProp(a, prop, b[prop]); + } + return a; +}; + + + + + + +class Dropdown extends external_react_namespaceObject.Component { + static isElemInRightView(el, dropdownWidth) { + const windowWidth = window.innerWidth; + const offset = el.getBoundingClientRect(); + const elemRight = offset.left + dropdownWidth; + return elemRight <= windowWidth; + } + static isElemInBottomView(el, dropdownHeight) { + const windowHeight = window.innerHeight; + const offset = el.getBoundingClientRect(); + const elHeight = el.clientHeight; + const elemBottom = offset.top + elHeight + dropdownHeight; + return elemBottom <= windowHeight; + } + constructor(props) { + super(props); + const { + selectedItem, + open + } = this.props; + this.state = { + opened: open, + selectedItem: selectedItem || null + }; + this.dropdownRef = (0,external_react_namespaceObject.createRef)(); + this.dropdownListRef = (0,external_react_namespaceObject.createRef)(); + this.dropdownButtonRef = (0,external_react_namespaceObject.createRef)(); + this.onSelectItem = this.onSelectItem.bind(this); + this.toggleDropdown = this.toggleDropdown.bind(this); + this.handleClickOutside = this.handleClickOutside.bind(this); + } + componentDidMount() { + document.addEventListener("mousedown", this.handleClickOutside); + if (this.dropdownListRef.current) { + this.getStyles(); + } + } + componentDidUpdate(prevProps) { + const { + open + } = this.props; + const { + opened + } = this.state; + if (this.dropdownListRef.current) { + this.getStyles(); + } + if (!prevProps.open && open === true && !opened) { + this.toggleDropdown(); + } + if (prevProps.open && open === false && opened) { + this.closeDropdown(); + } + } + componentWillUnmount() { + document.removeEventListener("mousedown", this.handleClickOutside); + } + handleClickOutside(event) { + if (this.dropdownListRef.current && !this.dropdownListRef.current.contains(event.target) && this.dropdownRef.current && !this.dropdownRef.current.contains(event.target)) { + this.closeDropdown(); + } + } + onSelectItem(itemId, itemProps) { + const { closeOnSelect, onSelect } = this.props; + const changes = { + selectedItem: itemId, + selectedItemProps: itemProps + }; + if (closeOnSelect) { + changes.opened = false; + } + this.setState(changes); + if (onSelect && typeof onSelect === "function") { + onSelect(itemId); + } + } + getStyles() { + const { + display, + position, + offset + } = this.props; + const dropdownEl = this.dropdownListRef.current; + if (offset) { + dropdownEl.style.top = `${offset.top}`; + dropdownEl.style.left = `${offset.left}`; + return; + } + const scrollTop = Math.max( + document.documentElement.scrollTop, + document.body.scrollTop, + window.scrollY + ); + const el = this.dropdownRef.current; + const elHeight = el.clientHeight; + const dropdownHeight = dropdownEl ? dropdownEl.clientHeight : 0; + const dropdownWidth = dropdownEl ? dropdownEl.clientWidth : 0; + const offsetPosition = el.getBoundingClientRect(); + const { left, top } = offsetPosition; + let customTop = 0; + let customLeft = left; + if (Dropdown.isElemInBottomView(el, dropdownHeight)) { + customTop = top + scrollTop + elHeight; + } else { + customTop = top + scrollTop - dropdownHeight - 5; + } + if (Dropdown.isElemInRightView(el, dropdownWidth)) { + customLeft = left; + } else { + customLeft = left + el.clientWidth - dropdownWidth; + } + if (position !== "relative") { + dropdownEl.style.top = `${customTop}px`; + if (display !== "block") { + dropdownEl.style.left = `${customLeft}px`; + } + } + if (display !== "block") { + dropdownEl.style.minWidth = `${this.dropdownButtonRef.current.clientWidth}px`; + } + } + getWrapperCssClasses() { + const { + btnGroup, + btnGroupSize, + className, + btnTheme, + wrapperClassName = "" + } = this.props; + let cssClasses = [wrapperClassName, "tyk-dropdown"]; + cssClasses.push(`theme-${btnTheme || "default"}`); + if (className) { + cssClasses = cssClasses.concat(className.split(" ")); + } + if (btnGroup) { + cssClasses.push("tyk-button-group"); + cssClasses.push(btnGroupSize ? `tyk-button-group--${btnGroupSize}` : "tyk-button-group--md"); + } + return cssClasses.join(" "); + } + getCssClasses() { + const { + opened + } = this.state; + const { + hasCustomContent, + display, + listclassnames, + position, + maxHeight + } = this.props; + let cssClasses = ["tyk-dropdown-menu", "tyk-dropdown"]; + if (maxHeight) { + cssClasses.push("tyk-dropdown--scrollable"); + } + if (opened) { + cssClasses.push("opened"); + } + if (listclassnames) { + cssClasses = cssClasses.concat(listclassnames.split(" ")); + } + if (display) { + cssClasses.push("tyk-dropdown--block"); + } + if (hasCustomContent) { + cssClasses.push("tyk-dropdown--custom"); + } + if (position === "relative") { + cssClasses.push("tyk-dropdown--relative"); + } + return cssClasses.join(" "); + } + getBtnTitle() { + const { btnTitle, stopButtonTextChange } = this.props; + const { selectedItemProps } = this.state; + if (!stopButtonTextChange && selectedItemProps && selectedItemProps.title) { + return selectedItemProps.title; + } + return btnTitle; + } + closeDropdown() { + const { onClose } = this.props; + this.setState({ + opened: false + }, () => { + if (onClose) { + onClose(); + } + }); + } + toggleDropdown() { + const { + opened + } = this.state; + if (opened) { + this.closeDropdown(); + return; + } + this.setState({ + opened: true + }); + } + render() { + const { + appendTo, + btnClassName, + btnSize, + customBtnTitle, + hasCustomContent, + btnTheme, + children, + label, + showDropdownIcon, + showTriggerButton, + showCheckmark, + disabled = false, + maxHeight + } = this.props; + const { + selectedItem, + opened + } = this.state; + const DropdownWrapperTag = hasCustomContent ? "div" : "ul"; + return /* @__PURE__ */ external_react_default().createElement( + "div", + { + className: this.getWrapperCssClasses(), + ref: this.dropdownRef + }, + label ? /* @__PURE__ */ external_react_default().createElement("label", { className: "font-family-medium" }, label) : null, + showTriggerButton ? /* @__PURE__ */ external_react_default().createElement( + components_Button, + { + className: `tyk-dropdown__trigger ${opened ? "tyk-dropdown__trigger--opened " : " "} ${btnClassName}`, + theme: btnTheme || "default", + onClick: this.toggleDropdown, + iconType: showDropdownIcon ? "chevron-down" : null, + iconPosition: "right", + size: btnSize || "md", + type: "button", + disabled, + ref: this.dropdownButtonRef + }, + customBtnTitle || this.getBtnTitle() + ) : null, + opened ? external_react_dom_default().createPortal( + /* @__PURE__ */ external_react_default().createElement( + DropdownContext.Provider, + { + value: { + onSelectItem: this.onSelectItem, + selectedItem, + showCheckmark + } + }, + opened ? /* @__PURE__ */ external_react_default().createElement( + DropdownWrapperTag, + Dropdown_spreadValues({ + className: this.getCssClasses(), + ref: this.dropdownListRef + }, maxHeight && { + style: { + maxHeight + } + }), + typeof children === "function" ? children({ + closeDropdown: this.closeDropdown.bind(this) + }) : children + ) : null + ), + document.querySelector(appendTo || "body") + ) : null + ); + } +} +Dropdown.propTypes = { + appendTo: (external_prop_types_default()).string, + children: external_prop_types_default().oneOfType([ + (external_prop_types_default()).element, + (external_prop_types_default()).node, + (external_prop_types_default()).string, + (external_prop_types_default()).func + ]), + closeOnSelect: (external_prop_types_default()).bool, + btnClassName: (external_prop_types_default()).string, + btnSize: (external_prop_types_default()).string, + btnGroupSize: (external_prop_types_default()).string, + btnTheme: (external_prop_types_default()).string, + btnTitle: external_prop_types_default().oneOfType([ + (external_prop_types_default()).node, + (external_prop_types_default()).element, + (external_prop_types_default()).string + ]), + customBtnTitle: external_prop_types_default().oneOfType([ + (external_prop_types_default()).node, + (external_prop_types_default()).element, + (external_prop_types_default()).string + ]), + btnGroup: (external_prop_types_default()).bool, + className: (external_prop_types_default()).string, + display: (external_prop_types_default()).string, + disabled: (external_prop_types_default()).bool, + hasCustomContent: (external_prop_types_default()).bool, + label: external_prop_types_default().oneOfType([ + external_prop_types_default().arrayOf((external_prop_types_default()).node), + (external_prop_types_default()).node, + (external_prop_types_default()).element, + (external_prop_types_default()).func, + (external_prop_types_default()).string + ]), + listclassnames: (external_prop_types_default()).string, + onClose: (external_prop_types_default()).func, + onSelect: (external_prop_types_default()).func, + open: (external_prop_types_default()).bool, + offset: external_prop_types_default().instanceOf(Object), + position: (external_prop_types_default()).string, + selectedItem: (external_prop_types_default()).string, + showDropdownIcon: (external_prop_types_default()).bool, + stopButtonTextChange: (external_prop_types_default()).bool, + showTriggerButton: (external_prop_types_default()).bool, + showCheckmark: (external_prop_types_default()).bool, + maxHeight: (external_prop_types_default()).string, + wrapperClassName: (external_prop_types_default()).string +}; +Dropdown.defaultProps = { + closeOnSelect: false, + showDropdownIcon: true, + showTriggerButton: true, + showCheckmark: true, + open: false +}; +Dropdown.Item = js_DropdownItem; +/* harmony default export */ const components_Dropdown = (Dropdown); + +// EXTERNAL MODULE: ./node_modules/ace-builds/src-noconflict/ace.js +var ace = __webpack_require__(239); +var ace_default = /*#__PURE__*/__webpack_require__.n(ace); +;// CONCATENATED MODULE: external "react-ace" +const external_react_ace_namespaceObject = require("react-ace"); +var external_react_ace_default = /*#__PURE__*/__webpack_require__.n(external_react_ace_namespaceObject); +// EXTERNAL MODULE: ./node_modules/ace-builds/src-noconflict/mode-javascript.js +var mode_javascript = __webpack_require__(395); +// EXTERNAL MODULE: ./node_modules/ace-builds/src-noconflict/mode-golang.js +var mode_golang = __webpack_require__(576); +// EXTERNAL MODULE: ./node_modules/ace-builds/src-noconflict/mode-python.js +var mode_python = __webpack_require__(7); +// EXTERNAL MODULE: ./node_modules/ace-builds/src-noconflict/mode-css.js +var mode_css = __webpack_require__(549); +// EXTERNAL MODULE: ./node_modules/ace-builds/src-noconflict/mode-json.js +var mode_json = __webpack_require__(252); +// EXTERNAL MODULE: ./node_modules/ace-builds/src-noconflict/mode-xml.js +var mode_xml = __webpack_require__(202); +// EXTERNAL MODULE: ./node_modules/ace-builds/src-noconflict/mode-jsx.js +var mode_jsx = __webpack_require__(711); +// EXTERNAL MODULE: ./node_modules/ace-builds/src-noconflict/ext-searchbox.js +var ext_searchbox = __webpack_require__(604); +// EXTERNAL MODULE: ./node_modules/ace-builds/src-noconflict/ext-beautify.js +var ext_beautify = __webpack_require__(134); +// EXTERNAL MODULE: ./node_modules/ace-builds/src-noconflict/theme-github.js +var theme_github = __webpack_require__(203); +;// CONCATENATED MODULE: ./node_modules/ace-builds/src-noconflict/worker-json.js +const worker_json_namespaceObject = __webpack_require__.p + "6925696524271b926a8e.js"; +;// CONCATENATED MODULE: ./src/form/components/CodeEditor/index.js +var CodeEditor_defProp = Object.defineProperty; +var CodeEditor_defProps = Object.defineProperties; +var CodeEditor_getOwnPropDescs = Object.getOwnPropertyDescriptors; +var CodeEditor_getOwnPropSymbols = Object.getOwnPropertySymbols; +var CodeEditor_hasOwnProp = Object.prototype.hasOwnProperty; +var CodeEditor_propIsEnum = Object.prototype.propertyIsEnumerable; +var CodeEditor_defNormalProp = (obj, key, value) => key in obj ? CodeEditor_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var CodeEditor_spreadValues = (a, b) => { + for (var prop in b || (b = {})) + if (CodeEditor_hasOwnProp.call(b, prop)) + CodeEditor_defNormalProp(a, prop, b[prop]); + if (CodeEditor_getOwnPropSymbols) + for (var prop of CodeEditor_getOwnPropSymbols(b)) { + if (CodeEditor_propIsEnum.call(b, prop)) + CodeEditor_defNormalProp(a, prop, b[prop]); + } + return a; +}; +var CodeEditor_spreadProps = (a, b) => CodeEditor_defProps(a, CodeEditor_getOwnPropDescs(b)); + + + + + + + + + + + + + + + +ace_default().config.setModuleUrl("ace/mode/json_worker", worker_json_namespaceObject); +function CodeEditor(props) { + const { + disabled, + readOnly, + disableValidation, + id, + error, + label, + labelwidth, + note, + onBlur, + onChange, + theme, + value, + setOptions, + wrapperClassName + } = props; + const classes = [ + "tyk-form-group", + wrapperClassName, + ...theme ? theme.split(" ").map((t) => `tyk-form-group--${t}`) : [], + labelwidth && "tyk-form-group--label-has-width", + error && "has-error" + ].filter(Boolean).join(" "); + const finalSetOptions = CodeEditor_spreadValues(CodeEditor_spreadValues({}, setOptions), disableValidation && { useWorker: false }); + const getCodeEditorError = (0,external_react_namespaceObject.useCallback)(() => error && error !== "true" && error !== "false" ? /* @__PURE__ */ external_react_default().createElement("p", { className: "tyk-form-control__error-message" }, error) : null, [error]); + const getLabelStyles = (0,external_react_namespaceObject.useCallback)(() => { + if (labelwidth) + return { flexBasis: labelwidth }; + return {}; + }, [labelwidth]); + const getNonLabelWidth = (0,external_react_namespaceObject.useCallback)(() => { + if (labelwidth) + return { flexBasis: `calc(100% - ${labelwidth} - 20px)` }; + return {}; + }, [labelwidth]); + const handleOnChange = (0,external_react_namespaceObject.useCallback)((newValue) => { + if (onChange) + onChange(newValue); + }, [onChange]); + const handleOnBlur = (0,external_react_namespaceObject.useCallback)(() => { + if (onBlur) + onBlur(value); + }, [onBlur, value]); + return /* @__PURE__ */ external_react_default().createElement("div", { className: classes }, label ? /* @__PURE__ */ external_react_default().createElement("label", { htmlFor: id, style: getLabelStyles() }, label) : null, /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-form-control__wrapper", style: getNonLabelWidth() }, /* @__PURE__ */ external_react_default().createElement( + (external_react_ace_default()), + CodeEditor_spreadProps(CodeEditor_spreadValues({ + className: "tyk-form-control" + }, props), { + onChange: handleOnChange, + onBlur: handleOnBlur, + theme: "github", + editorProps: { $blockScrolling: true }, + readOnly: readOnly || disabled, + onLoad: (editorInstance) => { + editorInstance.container.style.resize = "both"; + document.addEventListener("mouseup", () => editorInstance.resize()); + }, + setOptions: finalSetOptions + }) + ), note ? /* @__PURE__ */ external_react_default().createElement("p", { className: "tyk-form-control__help-block" }, note) : null, getCodeEditorError())); +} +CodeEditor.propTypes = { + disabled: (external_prop_types_default()).bool, + readOnly: (external_prop_types_default()).bool, + disableValidation: (external_prop_types_default()).bool, + id: (external_prop_types_default()).string, + error: external_prop_types_default().oneOfType([ + (external_prop_types_default()).string, + (external_prop_types_default()).bool + ]), + label: external_prop_types_default().oneOfType([ + external_prop_types_default().arrayOf((external_prop_types_default()).node), + (external_prop_types_default()).node, + (external_prop_types_default()).element, + (external_prop_types_default()).func, + (external_prop_types_default()).string + ]), + labelwidth: (external_prop_types_default()).string, + mode: (external_prop_types_default()).string, + name: (external_prop_types_default()).string, + note: (external_prop_types_default()).string, + onBlur: (external_prop_types_default()).func, + onChange: (external_prop_types_default()).func, + theme: (external_prop_types_default()).string, + value: (external_prop_types_default()).string, + setOptions: external_prop_types_default().instanceOf(Object), + wrapperClassName: (external_prop_types_default()).string +}; +/* harmony default export */ const components_CodeEditor = (CodeEditor); + +;// CONCATENATED MODULE: ./src/form/components/Combobox/index.js +var Combobox_defProp = Object.defineProperty; +var Combobox_defProps = Object.defineProperties; +var Combobox_getOwnPropDescs = Object.getOwnPropertyDescriptors; +var Combobox_getOwnPropSymbols = Object.getOwnPropertySymbols; +var Combobox_hasOwnProp = Object.prototype.hasOwnProperty; +var Combobox_propIsEnum = Object.prototype.propertyIsEnumerable; +var Combobox_defNormalProp = (obj, key, value) => key in obj ? Combobox_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var Combobox_spreadValues = (a, b) => { + for (var prop in b || (b = {})) + if (Combobox_hasOwnProp.call(b, prop)) + Combobox_defNormalProp(a, prop, b[prop]); + if (Combobox_getOwnPropSymbols) + for (var prop of Combobox_getOwnPropSymbols(b)) { + if (Combobox_propIsEnum.call(b, prop)) + Combobox_defNormalProp(a, prop, b[prop]); + } + return a; +}; +var Combobox_spreadProps = (a, b) => Combobox_defProps(a, Combobox_getOwnPropDescs(b)); +var Combobox_publicField = (obj, key, value) => { + Combobox_defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); + return value; +}; + + + + + +const getStateSelectedValues = (multiple, tags, value) => { + if (!value) { + return multiple || tags ? [] : null; + } + return value; +}; +const _Combobox = class _Combobox extends external_react_namespaceObject.Component { + static closeList() { + return { + cursor: -1, + opened: false + }; + } + static openList() { + return { + opened: true + }; + } + static filterByName(itemValue, inputValue) { + return itemValue.name.toLowerCase().indexOf(inputValue) > -1; + } + constructor(props) { + super(props); + const { + multiple, + tags, + value + } = props; + this.state = { + cursor: -1, + opened: false, + width: 50, + initialValue: value, + stateSelectedValues: getStateSelectedValues(multiple, tags, value), + searchText: "", + tags + }; + this.comboboxRef = (0,external_react_namespaceObject.createRef)(); + this.valuesListRef = (0,external_react_namespaceObject.createRef)(); + this.inputRef = (0,external_react_namespaceObject.createRef)(); + this.textRef = (0,external_react_namespaceObject.createRef)(); + this.focusInput = this.focusInput.bind(this); + this.onKeyUp = this.onKeyUp.bind(this); + _Combobox.openList = _Combobox.openList.bind(this); + this.handleClickOutside = this.handleClickOutside.bind(this); + this.handleItemsNavigation = this.handleItemsNavigation.bind(this); + this.handleComboboxDropdownClick = this.handleComboboxDropdownClick.bind(this); + this.handleListItemClick = this.handleListItemClick.bind(this); + this.handlePillRemoveClick = this.handlePillRemoveClick.bind(this); + this.manageSelectedTags = this.manageSelectedTags.bind(this); + } + componentDidMount() { + const { tags } = this.props; + if (tags) { + this.setInputWidth(); + } + this.bindEvents(); + } + componentWillUnmount() { + this.unBindEvents(); + } + static getDerivedStateFromProps(nextProps, prevState) { + if (JSON.stringify(nextProps.value) !== JSON.stringify(prevState.initialValue) || nextProps.tags !== prevState.tags) { + return { + initialValue: nextProps.value, + stateSelectedValues: getStateSelectedValues( + nextProps.multiple, + nextProps.tags, + nextProps.value + ), + tags: nextProps.tags + }; + } + return null; + } + onKeyUp(e) { + const { tags, allowCustomValues } = this.props; + const { cursor, opened } = this.state; + const filteredValues = this.filterValues(); + let tempState = Object.assign({}, this.getSearchText()); + if (tags && e.key !== "Escape") { + tempState = Object.assign({}, tempState, this.setInputWidth()); + } + if (e.key === "Enter") { + const methodName = tags ? "manageSelectedTags" : "manageSelectedValues"; + tempState = Object.assign({}, tempState, this[methodName](cursor)); + } + if (allowCustomValues && !e.key === " " && tags) { + tempState = Object.assign({}, tempState, this.manageSelectedTags()); + } + if (!opened && this.inputRef.current.value && filteredValues && filteredValues.length && e.key !== "Escape") { + tempState = Object.assign({}, tempState, _Combobox.openList()); + } + if (e.key === "Escape" && opened) { + tempState = Object.assign({}, tempState, _Combobox.closeList()); + } + if (opened && filteredValues && !filteredValues.length) { + tempState = Object.assign({}, tempState, _Combobox.closeList()); + } + this.setState((previousState) => Object.assign({}, previousState, tempState)); + } + getLabelStyles() { + const { labelwidth } = this.props; + const styles = {}; + if (labelwidth) { + styles.flexBasis = labelwidth; + } + return styles; + } + getNonLabelWidth() { + const { labelwidth } = this.props; + const styles = {}; + if (labelwidth) { + styles.flexBasis = `calc(100% - ${labelwidth} - 20px)`; + } + return styles; + } + setInputWidth() { + return { + width: 50 + this.textRef.current.offsetWidth + }; + } + getSelectedIndex(value) { + const { stateSelectedValues } = this.state; + let position = -1; + if (Array.isArray(stateSelectedValues)) { + stateSelectedValues.forEach((item, index) => { + if (item.id === value.id) { + position = index; + } + }); + } else if (stateSelectedValues) { + if (stateSelectedValues.id === value.id) { + position = 0; + } + } + return position; + } + getSearchText() { + return { + searchText: this.inputRef.current.value + }; + } + getListItemCssClasses(value, index) { + const cssClasses = []; + const { + cursor + } = this.state; + if (cursor === index) { + cssClasses.push("active"); + } + if (value.disabled) { + cssClasses.push("disabled"); + } + return cssClasses.join(" "); + } + getComboboxListCssClass() { + const { opened } = this.state; + const { tags, theme } = this.props; + const themes = theme ? theme.split(" ") : []; + const cssClasses = ["tyk-combobox__list"]; + if (opened) { + cssClasses.push("tyk-combobox__list--opened"); + } + if (tags) { + cssClasses.push("tyk-combobox__list--has-tags"); + } + if (themes.length) { + themes.forEach((iTheme) => { + cssClasses.push(`tyk-form-group--${iTheme}`); + }); + } + return cssClasses.join(" "); + } + getCssClasses() { + const { + error, + disabled, + theme, + labelwidth + } = this.props; + const cssClasses = ["tyk-form-group", "tyk-combobox"]; + const themes = theme ? theme.split(" ") : []; + if (error) { + cssClasses.push("has-error"); + } + if (labelwidth) { + cssClasses.push("tyk-form-group--label-has-width"); + } + if (themes.length) { + themes.forEach((iTheme) => { + cssClasses.push(`tyk-form-group--${iTheme}`); + }); + } + if (disabled) { + cssClasses.push("disabled"); + } + return cssClasses.join(" "); + } + getInputError() { + const { error } = this.props; + return error && error !== "true" && error !== "false" ? /* @__PURE__ */ external_react_default().createElement( + "p", + { + className: "tyk-form-control__error-message" + }, + error + ) : null; + } + getStyles() { + const { scrollTop } = document.documentElement; + const el = this.comboboxRef.current; + const elHeight = el.offsetHeight; + const elWidth = el.offsetWidth; + const offset = el.getBoundingClientRect(); + const { left } = offset; + let top = 0; + top = offset.top + scrollTop + elHeight; + return { + top: `${top - 1}px`, + left: `${left}px`, + width: `${elWidth}px` + }; + } + getComboboxDisplayData() { + const { stateSelectedValues } = this.state; + const { multiple, placeholder, values } = this.props; + if (!stateSelectedValues) { + return placeholder; + } + if (stateSelectedValues && Array.isArray(stateSelectedValues) && !stateSelectedValues.length) { + return placeholder; + } + if (stateSelectedValues && !Array.isArray(stateSelectedValues) && !stateSelectedValues.id) { + return placeholder; + } + if (Array.isArray(stateSelectedValues) && multiple) { + return stateSelectedValues.reduce((prevValue, value, index) => prevValue + value.name + (index !== stateSelectedValues.length - 1 ? ", " : ""), ""); + } + if (values && values.length && !Array.isArray(stateSelectedValues) && !stateSelectedValues.name) { + return values.filter((value) => value.id === stateSelectedValues.id)[0].name; + } + return stateSelectedValues.name; + } + manageSelectedTags(index) { + const { max, allowCustomValues } = this.props; + const { stateSelectedValues } = this.state; + const filteredValues = this.filterValues(); + const value = { id: this.inputRef.current.value, name: this.inputRef.current.value }; + if (allowCustomValues === false && index === -1) { + return null; + } + const tempValue = filteredValues[index] || value; + const selectedIndex = this.getSelectedIndex(tempValue); + let selectedValues = {}; + this.inputRef.current.value = ""; + if (selectedIndex > -1 && this.isInInitialValues(tempValue)) { + selectedValues = this.removeSelectedValue(selectedIndex); + } else if (selectedIndex === -1) { + if (max && stateSelectedValues.length >= max) { + return selectedValues; + } + selectedValues = this.addSelectedValue(tempValue); + } + return selectedValues; + } + manageSelectedValues(index) { + const { stateSelectedValues } = this.state; + const { + multiple, + onChange, + max + } = this.props; + const filteredValues = this.filterValues(); + const tempSelectedValues = filteredValues[index]; + let selectedValues; + const selectedIndex = this.getSelectedIndex(tempSelectedValues); + if (tempSelectedValues && multiple) { + if (selectedIndex > -1) { + selectedValues = this.removeSelectedValue(selectedIndex); + } else { + if (max && stateSelectedValues.length >= max) { + return selectedValues; + } + selectedValues = this.addSelectedValue(filteredValues[index]); + } + } else { + selectedValues = { + stateSelectedValues: selectedIndex === -1 ? tempSelectedValues : { id: null } + }; + if (onChange && typeof onChange === "function") { + onChange(selectedIndex === -1 ? tempSelectedValues : null); + } + } + return selectedValues; + } + removeSelectedValue(index) { + const { stateSelectedValues } = this.state; + const { onChange } = this.props; + const tempStateSelectedValues = JSON.parse(JSON.stringify(stateSelectedValues)); + tempStateSelectedValues.splice(index, 1); + if (onChange && typeof onChange === "function") { + onChange(tempStateSelectedValues.length ? tempStateSelectedValues : null); + } + return { + stateSelectedValues: tempStateSelectedValues, + searchText: "" + }; + } + addSelectedValue(value) { + const { stateSelectedValues } = this.state; + const { onChange } = this.props; + const tempStateSelectedValues = JSON.parse(JSON.stringify(stateSelectedValues)); + tempStateSelectedValues.push(value); + if (onChange && typeof onChange === "function") { + onChange(tempStateSelectedValues.length ? tempStateSelectedValues : null); + } + return { + stateSelectedValues: tempStateSelectedValues, + searchText: "" + }; + } + isInInitialValues(value) { + const { values } = this.props; + let ok = false; + values.forEach((item) => { + if (value.id === item.id) { + ok = true; + } + }); + return ok; + } + filterValues() { + const { values, searchItem } = this.props; + if (!this.inputRef.current) { + return values; + } + const arr = values.filter( + (value) => searchItem ? searchItem(value, this.inputRef.current.value.toLowerCase()) : _Combobox.filterByName(value, this.inputRef.current.value.toLowerCase()) + ); + return arr; + } + bindEvents() { + document.addEventListener("mousedown", this.handleClickOutside); + } + unBindEvents() { + document.removeEventListener("mousedown", this.handleClickOutside); + } + handleItemsNavigation(e) { + const { tags } = this.props; + if (["ArrowDown", "ArrowUp"].indexOf(e.key) === -1) { + return; + } + const { cursor } = this.state; + const filteredValues = this.filterValues(); + let cursorNext; + e.preventDefault(); + if (e.key === "ArrowDown") { + if (cursor === -1 || cursor === filteredValues.length - 1) { + cursorNext = 0; + } else if (cursor < filteredValues.length - 1) { + cursorNext = cursor + 1; + } + } + if (e.key === "ArrowUp") { + if (cursor > 0) { + cursorNext = cursor - 1; + } else { + cursorNext = filteredValues.length - 1; + } + } + if (this.valuesListRef.current && cursorNext > 4) { + const scrollTop = (cursorNext - 4) * 38; + this.valuesListRef.current.scrollTop = !tags ? 60 + scrollTop : scrollTop; + } else if (this.valuesListRef.current) { + this.valuesListRef.current.scrollTop = 0; + } + this.setState((previousState) => Combobox_spreadProps(Combobox_spreadValues({}, previousState), { + opened: true, + cursor: cursorNext + })); + } + handleListItemClick(index) { + const clickedValue = this.props.values[index]; + if (clickedValue.disabled) + return; + const { multiple, tags } = this.props; + const methodName = tags ? "manageSelectedTags" : "manageSelectedValues"; + const tempState = Object.assign({}, this.state, this[methodName](index)); + this.setState((previousState) => { + if (!multiple && !tags) { + tempState.opened = false; + } + return Object.assign({}, previousState, tempState); + }); + } + handlePillRemoveClick(index) { + const { disabled } = this.props; + if (disabled) { + return; + } + const tempState = this.removeSelectedValue(index); + this.setState((previousState) => Object.assign({}, previousState, tempState)); + } + handleClickOutside(event) { + if (this.valuesListRef.current && !this.valuesListRef.current.contains(event.target) && this.comboboxRef.current && !this.comboboxRef.current.contains(event.target)) { + this.setState((previousState) => Object.assign({}, previousState, _Combobox.closeList())); + } + } + handleComboboxDropdownClick() { + const { disabled } = this.props; + if (disabled) { + return; + } + this.setState((previousState) => Object.assign({}, previousState, _Combobox.openList())); + } + reset() { + const { multiple, tags, value } = this.props; + this.setState({ + stateSelectedValues: getStateSelectedValues(multiple, tags, value) + }); + } + focusInput() { + if (this.inputRef.current) { + this.inputRef.current.focus(); + } + } + render() { + const { + CustomListComponent, + disabled, + id, + label, + note, + tags, + max, + placeholder + } = this.props; + const { + width, + opened, + searchText, + stateSelectedValues + } = this.state; + const filteredValues = this.filterValues(); + return /* @__PURE__ */ external_react_default().createElement( + external_react_namespaceObject.Fragment, + null, + /* @__PURE__ */ external_react_default().createElement("div", { className: this.getCssClasses() }, label ? /* @__PURE__ */ external_react_default().createElement("label", { htmlFor: id, style: this.getLabelStyles() }, label) : null, /* @__PURE__ */ external_react_default().createElement( + "div", + { + className: "tyk-form-control__wrapper", + style: this.getNonLabelWidth() + }, + /* @__PURE__ */ external_react_default().createElement( + "ul", + { + className: `tyk-form-control${tags ? " tyk-form-control--with-tags" : ""}`, + onClick: this.focusInput, + onKeyDown: () => { + }, + ref: this.comboboxRef + }, + tags ? /* @__PURE__ */ external_react_default().createElement(external_react_namespaceObject.Fragment, null, (stateSelectedValues || []).map((value, index) => /* @__PURE__ */ external_react_default().createElement("li", { className: "pill", key: value.id }, /* @__PURE__ */ external_react_default().createElement("button", { type: "button", onClick: this.handlePillRemoveClick.bind(this, index) }, /* @__PURE__ */ external_react_default().createElement(components_Icon, { type: "times" })), /* @__PURE__ */ external_react_default().createElement("span", null, value.name))), /* @__PURE__ */ external_react_default().createElement( + "li", + { + className: "tyk-combobox__search-box", + style: { + width: !stateSelectedValues || !stateSelectedValues.length ? "100%" : "auto" + } + }, + (max === void 0 || (stateSelectedValues == null ? void 0 : stateSelectedValues.length) < max) && /* @__PURE__ */ external_react_default().createElement((external_react_default()).Fragment, null, /* @__PURE__ */ external_react_default().createElement( + "input", + { + className: "tyk-form-control", + disabled, + onKeyPress: (e) => { + if (e.key === "Enter") { + e.preventDefault(); + } + }, + onKeyUp: this.onKeyUp, + onKeyDown: this.handleItemsNavigation, + placeholder: !stateSelectedValues || !stateSelectedValues.length ? placeholder : "", + ref: this.inputRef, + style: { + width: !stateSelectedValues || !stateSelectedValues.length ? "100%" : `${width}px` + } + } + ), /* @__PURE__ */ external_react_default().createElement( + "span", + { + ref: this.textRef, + style: { + visbility: "hidden", + position: "absolute", + top: "-9999px" + } + }, + searchText + )), + filteredValues.length ? /* @__PURE__ */ external_react_default().createElement( + components_Button, + { + className: "tyk-combobox--with-tags__button-down", + iconType: "arrow-down", + iconOnly: true, + onClick: this.handleComboboxDropdownClick + } + ) : null + )) : /* @__PURE__ */ external_react_default().createElement( + "li", + { + className: "tyk-combobox__placeholder", + onClick: this.handleComboboxDropdownClick, + onKeyDown: () => { + } + }, + this.getComboboxDisplayData(), + /* @__PURE__ */ external_react_default().createElement(components_Icon, { family: "tykon", type: "arrowdown" }) + ) + ), + note ? /* @__PURE__ */ external_react_default().createElement("p", { className: "tyk-form-control__help-block" }, note) : null, + this.getInputError() + )), + // eslint-disable-next-line no-nested-ternary + !CustomListComponent ? opened && filteredValues.length ? external_react_dom_default().createPortal( + /* @__PURE__ */ external_react_default().createElement( + "ul", + { + className: this.getComboboxListCssClass(), + ref: this.valuesListRef, + style: this.getStyles() + }, + !tags ? /* @__PURE__ */ external_react_default().createElement("li", { className: "combobox-search__container" }, /* @__PURE__ */ external_react_default().createElement( + "input", + { + autoFocus: opened, + className: "tyk-form-control", + onKeyUp: this.onKeyUp, + onKeyDown: this.handleItemsNavigation, + key: "searchInput", + ref: this.inputRef + } + )) : null, + filteredValues.map((value, index) => /* @__PURE__ */ external_react_default().createElement( + "li", + { + className: this.getListItemCssClasses(value, index), + onClick: this.handleListItemClick.bind(this, index), + onKeyDown: () => { + }, + key: value.id + }, + this.getSelectedIndex(value) > -1 ? /* @__PURE__ */ external_react_default().createElement(components_Icon, { type: "check" }) : null, + /* @__PURE__ */ external_react_default().createElement("span", null, " ", value.name) + )) + ), + document.querySelector("body") + ) : null : /* @__PURE__ */ external_react_default().createElement( + CustomListComponent, + { + ref: this.valuesListRef, + className: this.getComboboxListCssClass(), + getListItemCssClasses: this.getListItemCssClasses.bind(this), + getSelectedIndex: this.getSelectedIndex.bind(this), + filteredValues, + handleListItemClick: this.handleListItemClick.bind(this) + } + ) + ); + } +}; +Combobox_publicField(_Combobox, "propTypes", { + allowCustomValues: (external_prop_types_default()).bool, + CustomListComponent: (external_prop_types_default()).elementType, + searchItem: (external_prop_types_default()).func, + disabled: (external_prop_types_default()).bool, + error: (external_prop_types_default()).string, + id: (external_prop_types_default()).string, + label: external_prop_types_default().oneOfType([ + external_prop_types_default().arrayOf((external_prop_types_default()).node), + (external_prop_types_default()).node, + (external_prop_types_default()).element, + (external_prop_types_default()).func, + (external_prop_types_default()).string + ]), + labelwidth: (external_prop_types_default()).string, + multiple: (external_prop_types_default()).bool, + max: (external_prop_types_default()).number, + note: external_prop_types_default().oneOfType([ + (external_prop_types_default()).node, + (external_prop_types_default()).element, + (external_prop_types_default()).string + ]), + onChange: (external_prop_types_default()).func, + placeholder: (external_prop_types_default()).string, + tags: (external_prop_types_default()).bool, + theme: (external_prop_types_default()).string, + value: external_prop_types_default().oneOfType([ + (external_prop_types_default()).string, + external_prop_types_default().instanceOf(Object), + external_prop_types_default().instanceOf(Array) + ]), + values: external_prop_types_default().instanceOf(Array) +}); +Combobox_publicField(_Combobox, "defaultProps", { + allowCustomValues: true +}); +let Combobox = _Combobox; + + +;// CONCATENATED MODULE: ./src/form/components/Combobox2/js/Value.js + + + +function Value(props) { + const { + value, + max, + tags, + tagSeparators, + addTagOnBlur, + placeholder, + disabled, + renderValue, + valueOverflow, + focus, + onMessage: sendMessage, + readOnly + } = props; + const INPUT_MIN_WIDTH = 60; + const inputRef = (0,external_react_namespaceObject.useRef)(null); + const dummyElementRef = (0,external_react_namespaceObject.useRef)(null); + const [inputValue, setInputValue] = (0,external_react_namespaceObject.useState)(""); + const [inputWidth, setInputWidth] = (0,external_react_namespaceObject.useState)(`${INPUT_MIN_WIDTH + 10}px`); + function entryFieldOnChange(val) { + if (tagSeparators.some((ts) => val.slice(-1) === ts)) + return; + const dummy = dummyElementRef.current; + dummy.innerHTML = val; + setInputWidth(`${Math.max(dummy.clientWidth, INPUT_MIN_WIDTH) + 10}px`); + setInputValue(val); + sendMessage("tag.input.change", val); + } + function entryFieldOnKeyDown(key, val) { + if (!tags) + return; + if (val === "" && key === "Backspace" && value.length) { + sendMessage("tag.remove", value[value.length - 1].id); + return; + } + if (key === "Enter") { + sendMessage("tag.input.enter", val); + entryFieldOnChange(""); + return; + } + if (key === "ArrowUp") { + sendMessage("tag.input.arrowUp"); + return; + } + if (key === "ArrowDown") { + sendMessage("tag.input.arrowDown"); + return; + } + if (key === "Escape") { + sendMessage("tag.input.escape"); + return; + } + if (tagSeparators.includes(key)) { + sendMessage("tag.add", val); + entryFieldOnChange(""); + } + } + function triggerAction() { + sendMessage("text-value.click"); + } + function textValue(val, isPlaceholder = false) { + if (readOnly) + return val || "-"; + const classes = [ + "tyk-combobox2__text-value", + `overflow-${valueOverflow}`, + isPlaceholder && "is-placeholder" + ].filter(Boolean).join(" "); + return /* @__PURE__ */ external_react_default().createElement( + "span", + { + className: classes, + title: valueOverflow === "single" ? val : void 0, + role: "none", + tabIndex: disabled ? "-1" : "0", + onClick: triggerAction, + onKeyPress: triggerAction + }, + val + ); + } + function renderCustomValue(v) { + const config = { + tags, + tagSeparators, + placeholder, + disabled, + renderValue, + sendMessage + }; + return renderValue(v, config); + } + function renderTag(v) { + if (renderValue) + return renderCustomValue(v); + return /* @__PURE__ */ external_react_default().createElement( + components_Pill, + { + key: v.id, + theme: "combobox" + }, + /* @__PURE__ */ external_react_default().createElement( + "button", + { + type: "button", + onClick: (e) => { + e.stopPropagation(); + sendMessage("tag.remove", v.id); + } + }, + /* @__PURE__ */ external_react_default().createElement(components_Icon, { type: "times" }) + ), + /* @__PURE__ */ external_react_default().createElement("span", { title: v.name }, v.name) + ); + } + function getTags() { + return /* @__PURE__ */ external_react_default().createElement((external_react_default()).Fragment, null, value.map(renderTag), value.length < max && /* @__PURE__ */ external_react_default().createElement((external_react_default()).Fragment, null, /* @__PURE__ */ external_react_default().createElement( + "input", + { + className: "tyk-combobox2__entry-field", + ref: inputRef, + placeholder: value.length ? "" : placeholder, + disabled, + value: inputValue, + style: { width: value.length ? inputWidth : "100%" }, + onChange: (e) => entryFieldOnChange(e.target.value), + onKeyDown: (e) => { + if (e.key === "Enter") + e.preventDefault(); + entryFieldOnKeyDown(e.key, e.target.value); + }, + onFocus: () => sendMessage("tag.input.focus"), + onBlur: (e) => { + sendMessage("tag.input.blur", e.target.value); + if (addTagOnBlur) + entryFieldOnChange(""); + } + } + ), /* @__PURE__ */ external_react_default().createElement( + "span", + { + ref: dummyElementRef, + style: { + visbility: "hidden", + position: "absolute", + top: "-9999px" + } + } + ))); + } + (0,external_react_namespaceObject.useEffect)(() => { + if (focus && inputRef.current) + inputRef.current.focus(); + }, [focus]); + if (readOnly) { + return /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-form-control--readonly" }, textValue(value.map((v) => v.name).join(", "))); + } + if (tags) + return getTags(); + if (renderValue) { + return value.length === 0 ? textValue(placeholder, true) : value.map(renderCustomValue); + } + return value.length === 0 ? textValue(placeholder, true) : textValue(value.map((v) => v.name).join(", ")); +} +/* harmony default export */ const js_Value = (Value); + +;// CONCATENATED MODULE: ./src/form/components/Combobox2/js/List.js + + + +function List_List(props) { + const { + listRef, + tags, + values, + searchValue, + activeItem, + onMessage: sendMessage, + renderListItem, + selectAll, + showSearch + } = props; + (0,external_react_namespaceObject.useEffect)(() => { + if (!listRef.current) + return; + const activeElement = listRef.current.querySelector(".active"); + if (activeElement) + activeElement.scrollIntoView({ block: "end" }); + }, [activeItem]); + function renderItem(item) { + if (renderListItem) { + return renderListItem(item, { + tags, + searchValue, + sendMessage, + activeItem + }); + } + return /* @__PURE__ */ external_react_default().createElement( + "li", + { + key: item.id, + title: item.name, + className: [ + item.disabled && "disabled", + activeItem && item.id === activeItem.id && "active" + ].filter(Boolean).join(" "), + onClick: () => !item.disabled && sendMessage("value.select", { item }), + onKeyPress: () => { + } + }, + item.selected && /* @__PURE__ */ external_react_default().createElement(components_Icon, { type: "check" }), + /* @__PURE__ */ external_react_default().createElement("span", { className: "item-name" }, item.name) + ); + } + function renderSelectAllOption() { + var _a, _b, _c; + const isAllSelected = values.every((v) => v.selected); + const isNoneSelected = values.every((v) => !v.selected); + const label = (_a = selectAll == null ? void 0 : selectAll.label) != null ? _a : "Select All"; + const mode = (_b = selectAll == null ? void 0 : selectAll.mode) != null ? _b : "select"; + const show = (_c = selectAll == null ? void 0 : selectAll.show) != null ? _c : "always"; + const render = selectAll == null ? void 0 : selectAll.render; + const shouldRenderOption = show === "always" || (mode === "select" ? !isAllSelected : !isNoneSelected); + if (!shouldRenderOption) + return null; + if (render) { + return render({ + label, + mode, + show, + isAllSelected, + isNoneSelected + }, sendMessage); + } + return /* @__PURE__ */ external_react_default().createElement( + "li", + { + onClick: () => sendMessage("value.select-all", mode === "select" ? !isAllSelected : isNoneSelected), + onKeyDown: () => { + } + }, + (mode === "select" ? isAllSelected : isNoneSelected) && /* @__PURE__ */ external_react_default().createElement(components_Icon, { type: "check" }), + label + ); + } + return /* @__PURE__ */ external_react_default().createElement((external_react_default()).Fragment, null, !tags && showSearch && /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-combobox2__combobox-search" }, /* @__PURE__ */ external_react_default().createElement( + "input", + { + autoFocus: true, + className: "tyk-form-control", + value: searchValue, + onChange: (e) => sendMessage("search.change", e.target.value), + onKeyDown: (e) => { + if (e.key === "Escape") + sendMessage("search.escape"); + if (e.key === "ArrowUp") + sendMessage("search.arrowUp"); + if (e.key === "ArrowDown") + sendMessage("search.arrowDown"); + if (e.key === "Enter") + sendMessage("search.enter"); + } + } + )), values.length > 0 && /* @__PURE__ */ external_react_default().createElement("ul", { ref: listRef, className: "tyk-combobox2__combobox-list" }, Boolean(selectAll) && renderSelectAllOption(), values.map(renderItem))); +} +List_List.propTypes = { + listRef: external_prop_types_default().instanceOf(Object), + tags: (external_prop_types_default()).bool, + values: external_prop_types_default().instanceOf(Array), + searchValue: (external_prop_types_default()).string, + activeItem: external_prop_types_default().instanceOf(Object), + onMessage: (external_prop_types_default()).func, + renderListItem: (external_prop_types_default()).func, + selectAll: external_prop_types_default().oneOfType([ + (external_prop_types_default()).bool, + external_prop_types_default().shape({ + label: external_prop_types_default().oneOfType([ + external_prop_types_default().arrayOf((external_prop_types_default()).node), + (external_prop_types_default()).node, + (external_prop_types_default()).element, + (external_prop_types_default()).func, + (external_prop_types_default()).string + ]), + mode: external_prop_types_default().oneOf(["select", "unselect"]), + show: external_prop_types_default().oneOf(["always", "notSameState"]), + render: (external_prop_types_default()).func + }) + ]), + showSearch: (external_prop_types_default()).bool +}; +/* harmony default export */ const js_List = (List_List); + +;// CONCATENATED MODULE: ./src/form/components/Combobox2/index.js +var Combobox2_defProp = Object.defineProperty; +var Combobox2_defProps = Object.defineProperties; +var Combobox2_getOwnPropDescs = Object.getOwnPropertyDescriptors; +var Combobox2_getOwnPropSymbols = Object.getOwnPropertySymbols; +var Combobox2_hasOwnProp = Object.prototype.hasOwnProperty; +var Combobox2_propIsEnum = Object.prototype.propertyIsEnumerable; +var Combobox2_defNormalProp = (obj, key, value) => key in obj ? Combobox2_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var Combobox2_spreadValues = (a, b) => { + for (var prop in b || (b = {})) + if (Combobox2_hasOwnProp.call(b, prop)) + Combobox2_defNormalProp(a, prop, b[prop]); + if (Combobox2_getOwnPropSymbols) + for (var prop of Combobox2_getOwnPropSymbols(b)) { + if (Combobox2_propIsEnum.call(b, prop)) + Combobox2_defNormalProp(a, prop, b[prop]); + } + return a; +}; +var Combobox2_spreadProps = (a, b) => Combobox2_defProps(a, Combobox2_getOwnPropDescs(b)); +var Combobox2_objRest = (source, exclude) => { + var target = {}; + for (var prop in source) + if (Combobox2_hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) + target[prop] = source[prop]; + if (source != null && Combobox2_getOwnPropSymbols) + for (var prop of Combobox2_getOwnPropSymbols(source)) { + if (exclude.indexOf(prop) < 0 && Combobox2_propIsEnum.call(source, prop)) + target[prop] = source[prop]; + } + return target; +}; + + + + + + +function normalizeValue(value, values) { + let v = value; + if (typeof value === "string") + v = { id: value, name: value }; + else if (!value.hasOwnProperty("name")) + v = Combobox2_spreadProps(Combobox2_spreadValues({}, value), { name: value.id }); + if (!values) + return v; + const existingVal = values.find((ev) => ev.id === v.id); + return existingVal ? Combobox2_spreadValues(Combobox2_spreadValues({}, v), existingVal) : v; +} +function getValueFromProp(value, values) { + if (!value) + return []; + if (Array.isArray(value)) + return value.map((v) => normalizeValue(v, values)); + return [normalizeValue(value, values)]; +} +function Combobox2(_a) { + var _b = _a, { + value: propValue, + values: propValues = [], + valueOverflow = "single", + label = "", + labelwidth, + tags = false, + tagSeparators = [" ", "Enter"], + addTagOnBlur = false, + max: maxProp, + multiple = false, + placeholder = "", + theme, + note = "", + error = "", + disabled = false, + readOnly = false, + allowCustomValues = true, + searchItem: matchItemFn, + renderValue, + renderListItem, + renderList: renderListProp, + CustomListComponent, + onBeforeChange = () => true, + onChange = () => { + }, + floatingContainerConfig, + expandMode, + infiniteScrollerConfig, + displayDropdownTrigger = true, + selectAll, + closeOnSelect, + showSearch = false, + required = false, + validateOnChange = () => { + }, + wrapperClassName = "" + } = _b, restProps = Combobox2_objRest(_b, [ + "value", + "values", + "valueOverflow", + "label", + "labelwidth", + "tags", + "tagSeparators", + "addTagOnBlur", + "max", + "multiple", + "placeholder", + "theme", + "note", + "error", + "disabled", + "readOnly", + "allowCustomValues", + "searchItem", + "renderValue", + "renderListItem", + "renderList", + "CustomListComponent", + "onBeforeChange", + "onChange", + "floatingContainerConfig", + "expandMode", + "infiniteScrollerConfig", + "displayDropdownTrigger", + "selectAll", + "closeOnSelect", + "showSearch", + "required", + "validateOnChange", + "wrapperClassName" + ]); + const max = multiple ? Infinity : maxProp || (tags ? Infinity : 1); + const renderList = CustomListComponent ? (values2, { sendMessage }) => /* @__PURE__ */ external_react_default().createElement( + CustomListComponent, + { + filteredValues: values2, + handleListItemClick: (index) => sendMessage("value.select", { item: values2[index] }), + getListItemCssClasses: () => { + } + } + ) : renderListProp; + const rootRef = (0,external_react_namespaceObject.useRef)(null); + const comboboxControlRef = (0,external_react_namespaceObject.useRef)(null); + const dropdownRef = (0,external_react_namespaceObject.useRef)(null); + const listRef = (0,external_react_namespaceObject.useRef)(null); + const [value, setValue] = (0,external_react_namespaceObject.useState)(getValueFromProp(propValue, propValues)); + const [values, setValues] = (0,external_react_namespaceObject.useState)(propValues.map((v) => normalizeValue(v))); + const [searchValue, setSearchValue] = (0,external_react_namespaceObject.useState)(""); + const [activeItem, setActiveItem] = (0,external_react_namespaceObject.useState)(null); + const [isOpened, setIsOpened] = (0,external_react_namespaceObject.useState)(false); + const [valuesExpanded, setValuesExpanded] = (0,external_react_namespaceObject.useState)(false); + const [localValidationError, setLocalValidationError] = (0,external_react_namespaceObject.useState)(""); + function getThemeClasses() { + const themes = theme ? theme.split(" ") : []; + return themes.map((iTheme) => `tyk-form-group--${iTheme}`); + } + function getCssClasses() { + return [ + wrapperClassName, + "tyk-form-group", + "tyk-combobox2", + ...getThemeClasses(), + (error || localValidationError) && "has-error", + labelwidth && "tyk-form-group--label-has-width", + disabled && "disabled", + expandMode && "is-expand-mode" + ].filter(Boolean).join(" "); + } + function getFilteredValues() { + const defaultFn = (v, s) => { + var _a2, _b2; + return (_b2 = (_a2 = v == null ? void 0 : v.name) == null ? void 0 : _a2.toLowerCase()) == null ? void 0 : _b2.includes(s); + }; + const fn = matchItemFn || defaultFn; + const filteredValues2 = values.filter((v) => fn(v, searchValue.toLowerCase())); + return filteredValues2; + } + function openDropdown() { + setIsOpened(true); + } + function closeDropdown() { + setIsOpened(false); + if (!tags) + updateSearchValue(""); + setActiveItem(null); + } + function updateSearchValue(newSearchValue) { + setSearchValue(newSearchValue); + if (activeItem && getFilteredValues().every((fv) => fv.id !== activeItem.id)) { + setActiveItem(null); + } + if (newSearchValue && !isOpened) + openDropdown(); + } + function isValidValue(newValues, lastValue) { + const localError = validateOnChange(newValues, lastValue); + setLocalValidationError(localError); + return localError === void 0; + } + function updateValue(newValues) { + setValue(newValues); + onChange(max === 1 && !tags ? newValues[0] || null : newValues); + } + function addTag(val) { + if (!val) + return; + if (value.length >= max) + return; + if (value.some(({ name }) => name === val)) + return; + const listValueIndex = values.findIndex((lv) => lv.name === val); + let newValue; + let finalValue = [...value]; + let selectedValues; + if (listValueIndex === -1) { + if (allowCustomValues) { + newValue = { id: val, name: val }; + finalValue = [...value, newValue]; + } + } else { + selectedValues = [ + ...values.slice(0, listValueIndex), + Combobox2_spreadProps(Combobox2_spreadValues({}, values[listValueIndex]), { selected: true }), + ...values.slice(listValueIndex + 1) + ]; + newValue = values[listValueIndex]; + finalValue = [...value, values[listValueIndex]]; + } + if (isValidValue(finalValue, newValue) && onBeforeChange(value, finalValue)) { + if (selectedValues) { + setValues(selectedValues); + } + updateValue(finalValue); + } + } + function removeTag(id) { + if (required && max === 1) + return; + const listValueIndex = values.findIndex((lv) => lv.id === id); + const newValue = value.filter((v) => v.id !== id); + if (!onBeforeChange(value, newValue)) + return; + if (listValueIndex !== -1) { + setValues([ + ...values.slice(0, listValueIndex), + Combobox2_spreadProps(Combobox2_spreadValues({}, values[listValueIndex]), { selected: false }), + ...values.slice(listValueIndex + 1) + ]); + } + updateValue(newValue); + } + function selectValue({ id }) { + const val = values.find((v) => v.id === id); + let finalValue = value; + let selectedValues = values; + if (val.selected) { + if (!required || max !== 1) { + finalValue = value.filter((v) => v.id !== val.id); + selectedValues = values.map((v) => v.id === val.id ? Combobox2_spreadProps(Combobox2_spreadValues({}, v), { selected: false }) : v); + } + } else if (value.length < max) { + finalValue = [...value, val]; + selectedValues = values.map((v) => v.id === val.id ? Combobox2_spreadProps(Combobox2_spreadValues({}, v), { selected: true }) : v); + } else if (max === 1) { + finalValue = [val]; + selectedValues = values.map((v) => Combobox2_spreadProps(Combobox2_spreadValues({}, v), { selected: v.id === val.id })); + } + if (isValidValue(finalValue, val) && onBeforeChange(value, finalValue)) { + updateValue(finalValue); + setValues(selectedValues); + } + if (max === 1 || closeOnSelect) { + closeDropdown(); + } + } + function selectAllValues(selected) { + if (values.length > max) + return; + const newValue = selected ? [...values] : []; + if (!onBeforeChange(value, newValue)) + return; + updateValue(newValue); + setValues(values.map((v) => Combobox2_spreadProps(Combobox2_spreadValues({}, v), { selected }))); + if (closeOnSelect) + closeDropdown(); + } + function moveUpActiveItem() { + const visibleItems = getFilteredValues().filter((v) => !v.disabled); + if (visibleItems.length === 0) + return; + if (activeItem === null || visibleItems.length === 1) { + setActiveItem(visibleItems[visibleItems.length - 1]); + return; + } + const activeIndex = visibleItems.findIndex((v) => v.id === activeItem.id); + setActiveItem(visibleItems[activeIndex > 0 ? activeIndex - 1 : visibleItems.length - 1]); + } + function moveDownActiveItem() { + const visibleItems = getFilteredValues().filter((v) => !v.disabled); + if (visibleItems.length === 0) + return; + if (activeItem === null || visibleItems.length === 1) { + setActiveItem(visibleItems[0]); + return; + } + const activeIndex = visibleItems.findIndex((v) => v.id === activeItem.id); + setActiveItem(visibleItems[activeIndex < visibleItems.length - 1 ? activeIndex + 1 : 0]); + } + function executeTriggerAction() { + if (expandMode) { + setValuesExpanded(!valuesExpanded); + } else { + openDropdown(); + } + } + function handleDocumentClick(e) { + const isClickInside = rootRef.current && rootRef.current.contains(e.target) || dropdownRef.current && dropdownRef.current.contains(e.target); + if (!isClickInside) { + closeDropdown(); + } + } + function onClickCapture(e) { + if (!disabled) + return; + if (!expandMode) { + e.stopPropagation(); + return; + } + const triggerElement = rootRef.current.querySelector(".tyk-combobox2__values-container-trigger"); + if (!triggerElement) + return; + const isClickOnTrigger = triggerElement === e.target || triggerElement.contains(e.target); + if (!isClickOnTrigger) + e.stopPropagation(); + } + function onTagMessage(message, data) { + if (message === "add") { + addTag(data); + updateSearchValue(""); + } + if (message === "remove") + removeTag(data); + if (message === "input.change") + updateSearchValue(data); + if (message === "input.enter") { + if (activeItem) { + selectValue(activeItem); + } else if (tagSeparators.includes("Enter")) { + addTag(data); + updateSearchValue(""); + } + } + if (message === "input.arrowUp") { + openDropdown(); + moveUpActiveItem(); + } + if (message === "input.arrowDown") { + openDropdown(); + moveDownActiveItem(); + } + if (message === "input.escape") + closeDropdown(); + if (message === "input.blur" && addTagOnBlur) { + addTag(data); + updateSearchValue(""); + } + if (message === "input.focus") { + openDropdown(); + } + } + function onMessage(message, data) { + if (message.startsWith("tag.")) + onTagMessage(message.slice(4), data); + if (message === "value.select") + selectValue(data.item); + if (message === "value.select-all") + selectAllValues(data); + if (message === "text-value.click") + openDropdown(); + if (message === "search.change") + updateSearchValue(data); + if (message === "search.escape") + closeDropdown(); + if (message === "search.arrowUp") + moveUpActiveItem(); + if (message === "search.arrowDown") + moveDownActiveItem(); + if (message === "search.enter") { + if (activeItem) + selectValue(activeItem); + } + } + (0,external_react_namespaceObject.useEffect)(() => { + window.addEventListener("click", handleDocumentClick, true); + return () => window.removeEventListener("click", handleDocumentClick, true); + }, []); + (0,external_react_namespaceObject.useEffect)(() => { + if (propValues.length) { + const newValues = propValues.map((v) => Combobox2_spreadProps(Combobox2_spreadValues({}, normalizeValue(v)), { + selected: value.some((sv) => sv.id === v.id) + })); + setValues(newValues); + setValue((val) => val.map((v) => newValues.find((nv) => nv.id === v.id) || v)); + } else if (values.length) { + setValues([]); + } + }, [propValues]); + (0,external_react_namespaceObject.useEffect)(() => { + const newValue = getValueFromProp(propValue, values); + setValue(newValue); + setValues((vals) => vals.map((v) => Combobox2_spreadProps(Combobox2_spreadValues({}, normalizeValue(v)), { + selected: newValue.some((nv) => nv.id === v.id) + }))); + }, [propValue]); + (0,external_react_namespaceObject.useEffect)(() => { + if (!expandMode) + return () => { + }; + const valuesElement = comboboxControlRef.current.querySelector(".tyk-combobox2__current-values"); + const updateScroll = () => { + valuesElement.scrollTop = valuesElement.scrollHeight; + }; + const mobserver = new MutationObserver(updateScroll); + const robserver = new ResizeObserver(updateScroll); + mobserver.observe(valuesElement, { attributes: true, childList: true, subtree: true }); + robserver.observe(valuesElement); + return () => { + mobserver.disconnect(); + robserver.disconnect(); + }; + }); + const filteredValues = getFilteredValues(); + const currentValuesClasses = [ + "tyk-combobox2__current-values", + expandMode && "expand-mode", + `tyk-combobox2__current-values--${valuesExpanded ? "expanded" : "collapsed"}` + ].join(" "); + return /* @__PURE__ */ external_react_default().createElement( + "div", + Combobox2_spreadProps(Combobox2_spreadValues({ + ref: rootRef, + tabIndex: disabled ? "-1" : "0", + onClickCapture + }, restProps), { + className: getCssClasses() + }), + label && /* @__PURE__ */ external_react_default().createElement("label", { style: { flexBasis: labelwidth || "auto" } }, label), + !readOnly && /* @__PURE__ */ external_react_default().createElement( + "div", + { + className: "tyk-form-control__wrapper", + style: { flexBasis: `calc(100% - ${labelwidth} - 20px)` } + }, + /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-form-control", ref: comboboxControlRef }, /* @__PURE__ */ external_react_default().createElement( + "div", + { + className: currentValuesClasses, + onClick: openDropdown, + role: "none" + }, + /* @__PURE__ */ external_react_default().createElement( + js_Value, + { + value, + max, + tags, + tagSeparators, + addTagOnBlur, + allowCustomValues, + placeholder, + disabled, + valueOverflow, + renderValue, + focus: isOpened, + onMessage, + readOnly + } + ) + ), displayDropdownTrigger && /* @__PURE__ */ external_react_default().createElement( + "div", + { + className: `tyk-combobox2__values-container-trigger${valuesExpanded ? " tyk-combobox2__values-container-trigger--expanded" : ""}`, + role: "button", + tabIndex: disabled ? -1 : 0, + onClick: executeTriggerAction, + onKeyPress: executeTriggerAction + }, + expandMode ? /* @__PURE__ */ external_react_default().createElement(components_Icon, { type: valuesExpanded ? "compress-arrows-alt" : "expand-arrows-alt" }) : /* @__PURE__ */ external_react_default().createElement(components_Icon, { family: "tykon", type: "arrowdown" }) + )), + isOpened && (!tags || filteredValues.length > 0) && /* @__PURE__ */ external_react_default().createElement( + components_FloatingContainer, + Combobox2_spreadProps(Combobox2_spreadValues({ + element: comboboxControlRef, + size: "matchElement", + className: `tyk-combobox2__combobox-dropdown tyk-form-group ${getThemeClasses().join(" ")}`, + ref: dropdownRef, + displayAxis: "vertical" + }, floatingContainerConfig), { + infiniteScrollerConfig + }), + renderList ? renderList(filteredValues, { + tags, + searchValue, + activeItem, + listRef, + sendMessage: onMessage + }) : /* @__PURE__ */ external_react_default().createElement( + js_List, + { + listRef, + showSearch, + values: filteredValues, + tags, + searchValue, + activeItem, + onMessage, + renderListItem, + selectAll + } + ) + ), + note && /* @__PURE__ */ external_react_default().createElement("p", { className: "tyk-form-control__help-block" }, note), + (error && error !== "true" && error !== "false" || Boolean(localValidationError)) && /* @__PURE__ */ external_react_default().createElement("p", { className: "tyk-form-control__error-message" }, error || localValidationError) + ), + readOnly && /* @__PURE__ */ external_react_default().createElement("div", null, /* @__PURE__ */ external_react_default().createElement( + js_Value, + { + value, + tags, + renderValue, + readOnly + } + )) + ); +} +Combobox2.propTypes = { + /** If `true` it allows entering values that are not in the list. */ + allowCustomValues: (external_prop_types_default()).bool, + /** Alias for `renderList` + * used for backwards compatibility with the old Combobox component. */ + CustomListComponent: (external_prop_types_default()).elementType, + /** A function used for filtering elements displayed in the list when typing in. */ + searchItem: (external_prop_types_default()).func, + /** A custom component that will be used to display a value. */ + renderValue: (external_prop_types_default()).func, + /** A custom component that will be used to display an item in the dropdown list. */ + renderListItem: (external_prop_types_default()).func, + /** A custom component that will be used to display the entire content of the dropdown. */ + renderList: (external_prop_types_default()).func, + disabled: (external_prop_types_default()).bool, + /** hides the UI form element and displayes just the value as text */ + readOnly: (external_prop_types_default()).bool, + error: (external_prop_types_default()).string, + label: external_prop_types_default().oneOfType([ + external_prop_types_default().arrayOf((external_prop_types_default()).node), + (external_prop_types_default()).node, + (external_prop_types_default()).element, + (external_prop_types_default()).func, + (external_prop_types_default()).string + ]), + labelwidth: (external_prop_types_default()).string, + /** The maximum number of values that can be selected/added. */ + max: (external_prop_types_default()).number, + /** Shorthand for max=Infinity */ + multiple: (external_prop_types_default()).bool, + note: external_prop_types_default().oneOfType([ + (external_prop_types_default()).node, + (external_prop_types_default()).element, + (external_prop_types_default()).string + ]), + /** + * Callback called before changing the value of the component. + * The value change will succeed only if the callback's return value is truthy. + * The callback is called with two arguments: 1) the previous value, 2) the next value */ + onBeforeChange: (external_prop_types_default()).func, + onChange: (external_prop_types_default()).func, + placeholder: (external_prop_types_default()).string, + /** Enables the display of values as `Pill` components that can be + * removed without opening the dropdown. */ + tags: (external_prop_types_default()).bool, + /** A list of characters that will trigger the creation of a tag when typed. */ + tagSeparators: external_prop_types_default().arrayOf((external_prop_types_default()).string), + /** If set to true a tag will be created whenever the component loses focus + * and there is something typed in. */ + addTagOnBlur: (external_prop_types_default()).bool, + theme: (external_prop_types_default()).string, + /** The value of the component. It can be a string, an array, + * or an object with an `id` property. */ + value: external_prop_types_default().oneOfType([ + (external_prop_types_default()).string, + external_prop_types_default().instanceOf(Array), + external_prop_types_default().instanceOf(Object) + ]), + /** An array of selectable values. */ + values: external_prop_types_default().instanceOf(Array), + /** Config object passed to the internal floating container component. */ + floatingContainerConfig: external_prop_types_default().instanceOf(Object), + /** If set to `single` it will display the values on a single line + * with an ellipsis at the end. */ + valueOverflow: external_prop_types_default().oneOf(["single", "multiple"]), + /** + * If set to `true` whenever the user clicks on the dropdown trigger + * the selected values container + * will expand to show all selected values instead of opening the dropdown. + */ + expandMode: (external_prop_types_default()).bool, + /** Config object passed to the internal infinite scroller component. */ + infiniteScrollerConfig: external_prop_types_default().instanceOf(Object), + /** Toggles the display of the dropdown trigger. */ + displayDropdownTrigger: (external_prop_types_default()).bool, + /** + * If a boolean it will toggle the select all functionality from the dropdown. + * It can also be an object with the shape `{ label, show, mode, render }`. + * label - A string displayed as the select all option + * show - It can be one of `['always', 'notSameState']`. + * `always` means the option will always be displayed. + * `notSameState` means it will be displayed only if the list items are + * not all with the same state (depending on the `mode` value) + * mode - It can be one of `['select', 'unselect']` and makes sense only + * when the `show` property is `notSameState` + * `select` means the select all option will only be displayed if not all + * items are selected + * `unselect` means the option will be displayed if no items are selected + */ + selectAll: external_prop_types_default().oneOfType([ + (external_prop_types_default()).bool, + external_prop_types_default().shape({ + label: external_prop_types_default().oneOfType([ + external_prop_types_default().arrayOf((external_prop_types_default()).node), + (external_prop_types_default()).node, + (external_prop_types_default()).element, + (external_prop_types_default()).func, + (external_prop_types_default()).string + ]), + mode: external_prop_types_default().oneOf(["select", "unselect"]), + show: external_prop_types_default().oneOf(["always", "notSameState"]), + render: (external_prop_types_default()).func + }) + ]), + /** It `true` the dropdown will close after selecting a value. */ + closeOnSelect: (external_prop_types_default()).bool, + /** Toggles the display of the search input from the dropdown. */ + showSearch: (external_prop_types_default()).bool, + /** If it is required and can only select one value once you have something + * selected you will not be able to deselect */ + required: (external_prop_types_default()).bool, + /** Validates newly added value before adding it to the selected values. + * Returns an error string in case of error otherwise it returns undefined + */ + validateOnChange: (external_prop_types_default()).func, + wrapperClassName: (external_prop_types_default()).string +}; +/* harmony default export */ const components_Combobox2 = (Combobox2); + +;// CONCATENATED MODULE: external "flatpickr" +const external_flatpickr_namespaceObject = require("flatpickr"); +var external_flatpickr_default = /*#__PURE__*/__webpack_require__.n(external_flatpickr_namespaceObject); +// EXTERNAL MODULE: ./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js +var injectStylesIntoStyleTag = __webpack_require__(379); +var injectStylesIntoStyleTag_default = /*#__PURE__*/__webpack_require__.n(injectStylesIntoStyleTag); +// EXTERNAL MODULE: ./node_modules/style-loader/dist/runtime/styleDomAPI.js +var styleDomAPI = __webpack_require__(795); +var styleDomAPI_default = /*#__PURE__*/__webpack_require__.n(styleDomAPI); +// EXTERNAL MODULE: ./node_modules/style-loader/dist/runtime/insertBySelector.js +var insertBySelector = __webpack_require__(569); +var insertBySelector_default = /*#__PURE__*/__webpack_require__.n(insertBySelector); +// EXTERNAL MODULE: ./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js +var setAttributesWithoutAttributes = __webpack_require__(565); +var setAttributesWithoutAttributes_default = /*#__PURE__*/__webpack_require__.n(setAttributesWithoutAttributes); +// EXTERNAL MODULE: ./node_modules/style-loader/dist/runtime/insertStyleElement.js +var insertStyleElement = __webpack_require__(216); +var insertStyleElement_default = /*#__PURE__*/__webpack_require__.n(insertStyleElement); +// EXTERNAL MODULE: ./node_modules/style-loader/dist/runtime/styleTagTransform.js +var styleTagTransform = __webpack_require__(589); +var styleTagTransform_default = /*#__PURE__*/__webpack_require__.n(styleTagTransform); +// EXTERNAL MODULE: ./node_modules/css-loader/dist/cjs.js!./node_modules/flatpickr/dist/flatpickr.min.css +var flatpickr_min = __webpack_require__(821); +;// CONCATENATED MODULE: ./node_modules/flatpickr/dist/flatpickr.min.css + + + + + + + + + + + +var options = {}; + +options.styleTagTransform = (styleTagTransform_default()); +options.setAttributes = (setAttributesWithoutAttributes_default()); + + options.insert = insertBySelector_default().bind(null, "head"); + +options.domAPI = (styleDomAPI_default()); +options.insertStyleElement = (insertStyleElement_default()); + +var update = injectStylesIntoStyleTag_default()(flatpickr_min/* default */.Z, options); + + + + + /* harmony default export */ const dist_flatpickr_min = (flatpickr_min/* default */.Z && flatpickr_min/* default */.Z.locals ? flatpickr_min/* default */.Z.locals : undefined); + +;// CONCATENATED MODULE: ./src/form/components/DatePicker/index.js +var DatePicker_defProp = Object.defineProperty; +var DatePicker_defProps = Object.defineProperties; +var DatePicker_getOwnPropDescs = Object.getOwnPropertyDescriptors; +var DatePicker_getOwnPropSymbols = Object.getOwnPropertySymbols; +var DatePicker_hasOwnProp = Object.prototype.hasOwnProperty; +var DatePicker_propIsEnum = Object.prototype.propertyIsEnumerable; +var DatePicker_defNormalProp = (obj, key, value) => key in obj ? DatePicker_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var DatePicker_spreadValues = (a, b) => { + for (var prop in b || (b = {})) + if (DatePicker_hasOwnProp.call(b, prop)) + DatePicker_defNormalProp(a, prop, b[prop]); + if (DatePicker_getOwnPropSymbols) + for (var prop of DatePicker_getOwnPropSymbols(b)) { + if (DatePicker_propIsEnum.call(b, prop)) + DatePicker_defNormalProp(a, prop, b[prop]); + } + return a; +}; +var DatePicker_spreadProps = (a, b) => DatePicker_defProps(a, DatePicker_getOwnPropDescs(b)); + + + + + + +function DatePicker({ + children, + disabled, + readOnly = false, + error, + id, + label, + labelwidth, + note, + onClose, + onChange, + onOpen, + theme, + config = {}, + value, + wrapperClassName = "" +}) { + const [pickerInstance, setPickerInstance] = (0,external_react_namespaceObject.useState)(null); + const dateRef = (0,external_react_namespaceObject.useRef)(null); + const prevValue = hooks_usePrevious(value); + const hasValueChanged = (0,external_react_namespaceObject.useCallback)((prevDate, currentDate) => { + if (!prevDate) + return true; + if (!Array.isArray(currentDate)) + return prevDate.getTime() !== currentDate.getTime(); + let diffDates = currentDate; + if (prevDate && currentDate.length && prevDate.length) { + diffDates = currentDate.filter((date, index) => date.getTime() !== prevDate[index].getTime()); + return diffDates.length > 0; + } + return currentDate.length > 0; + }, []); + const onDateChange = (0,external_react_namespaceObject.useCallback)((dateValue) => { + const finalValue = config.mode === "range" ? dateValue : dateValue[0] || null; + if (!onChange) + return; + if (config.mode === "range") { + if (finalValue.length === 2 && hasValueChanged(prevValue, finalValue)) { + onChange(finalValue); + } + } else { + onChange(finalValue); + } + }, [prevValue, onChange, hasValueChanged]); + (0,external_react_namespaceObject.useEffect)(() => { + if (dateRef && dateRef.current && !pickerInstance) { + const instance = external_flatpickr_default()(dateRef.current, DatePicker_spreadProps(DatePicker_spreadValues({}, config), { + defaultDate: value, + onChange: onDateChange, + onClose, + onOpen + })); + setPickerInstance(instance); + } + return () => { + if (pickerInstance) { + pickerInstance.destroy(); + } + }; + }, [dateRef.current, pickerInstance]); + (0,external_react_namespaceObject.useEffect)(() => { + if (pickerInstance) { + let tempValue = value; + if (typeof value === "string") { + tempValue = new Date(value); + } else if (Array.isArray(value)) { + tempValue = value.map((date) => typeof date === "string" ? new Date(date) : date); + } + if (hasValueChanged(prevValue, tempValue)) { + pickerInstance.set("onChange", onDateChange); + if (config.mode === "range") { + if (tempValue && tempValue.length === 2) { + pickerInstance.setDate(tempValue, true); + } + } else { + pickerInstance.setDate(tempValue, true); + } + } + } + }, [prevValue, value, pickerInstance]); + const classes = [ + "tyk-form-group", + "tyk-form-group--addon-right", + wrapperClassName, + ...theme ? theme.split(" ").map((t) => `tyk-form-group--${t}`) : [], + labelwidth && "tyk-form-group--label-has-width", + error && "has-error" + ].filter(Boolean).join(" "); + const getLabelStyles = () => { + if (labelwidth) + return { flexBasis: labelwidth }; + return {}; + }; + const getNonLabelWidth = () => { + if (labelwidth) + return { flexBasis: `calc(100% - ${labelwidth} - 20px)` }; + return {}; + }; + const openCalendar = (0,external_react_namespaceObject.useCallback)(() => { + if (!pickerInstance) + return; + pickerInstance.open(); + }, [pickerInstance]); + const getInputError = () => error && error !== "true" && error !== "false" ? /* @__PURE__ */ external_react_default().createElement("p", { className: "tyk-form-control__error-message" }, error) : null; + const getInputField = () => { + let inputStyle = {}; + let addonStyle = {}; + if (config && config.inline) { + inputStyle = { + height: 0, + padding: 0, + width: 0, + visibility: "hidden" + }; + addonStyle = { + display: "none" + }; + } + return /* @__PURE__ */ external_react_default().createElement((external_react_default()).Fragment, null, /* @__PURE__ */ external_react_default().createElement( + "input", + { + disabled, + className: "tyk-form-control", + "data-input": true, + type: "date", + ref: dateRef, + style: inputStyle + } + ), /* @__PURE__ */ external_react_default().createElement( + "div", + { + className: "tyk-input-group__addon", + onClick: openCalendar, + role: "button", + onKeyUp: () => { + }, + tabIndex: 0, + style: addonStyle + }, + /* @__PURE__ */ external_react_default().createElement(components_Icon, { type: "calendar" }) + )); + }; + return /* @__PURE__ */ external_react_default().createElement((external_react_default()).Fragment, null, children && children.length ? children({ openCalendar, ref: dateRef }) : /* @__PURE__ */ external_react_default().createElement("div", { className: classes }, label ? /* @__PURE__ */ external_react_default().createElement("label", { htmlFor: id, style: getLabelStyles() }, label) : null, !readOnly && /* @__PURE__ */ external_react_default().createElement( + "div", + { + className: "tyk-form-control__wrapper flatpickr", + style: getNonLabelWidth() + }, + /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-input-group" }, getInputField()), + note ? /* @__PURE__ */ external_react_default().createElement("p", { className: "tyk-form-control__help-block" }, note) : null, + getInputError() + )), /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-form-control--readonly" }, readOnly && !value && "-", readOnly && value && external_flatpickr_default().formatDate(value, config.dateFormat || "d/m/Y"))); +} +DatePicker.propTypes = { + config: external_prop_types_default().instanceOf(Object), + children: external_prop_types_default().oneOfType([ + (external_prop_types_default()).element, + (external_prop_types_default()).node, + (external_prop_types_default()).string, + (external_prop_types_default()).func + ]), + disabled: (external_prop_types_default()).bool, + readOnly: (external_prop_types_default()).bool, + id: (external_prop_types_default()).string, + label: external_prop_types_default().oneOfType([ + external_prop_types_default().arrayOf((external_prop_types_default()).node), + (external_prop_types_default()).node, + (external_prop_types_default()).element, + (external_prop_types_default()).func, + (external_prop_types_default()).string + ]), + labelwidth: (external_prop_types_default()).string, + note: (external_prop_types_default()).string, + onChange: external_prop_types_default().oneOfType([ + (external_prop_types_default()).func, + external_prop_types_default().instanceOf(Array) + ]), + onClose: external_prop_types_default().oneOfType([ + (external_prop_types_default()).func, + external_prop_types_default().instanceOf(Array) + ]), + onOpen: external_prop_types_default().oneOfType([ + (external_prop_types_default()).func, + external_prop_types_default().instanceOf(Array) + ]), + theme: (external_prop_types_default()).string, + error: (external_prop_types_default()).string, + value: external_prop_types_default().oneOfType([ + external_prop_types_default().instanceOf(Array), + external_prop_types_default().instanceOf(Object), + (external_prop_types_default()).string + ]), + wrapperClassName: (external_prop_types_default()).string +}; +/* harmony default export */ const components_DatePicker = (DatePicker); + +;// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/typeof.js +function _typeof(o) { + "@babel/helpers - typeof"; + + return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { + return typeof o; + } : function (o) { + return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; + }, _typeof(o); +} +;// CONCATENATED MODULE: ./node_modules/date-fns/esm/_lib/requiredArgs/index.js +function requiredArgs(required, args) { + if (args.length < required) { + throw new TypeError(required + ' argument' + (required > 1 ? 's' : '') + ' required, but only ' + args.length + ' present'); + } +} +;// CONCATENATED MODULE: ./node_modules/date-fns/esm/isDate/index.js + + +/** + * @name isDate + * @category Common Helpers + * @summary Is the given value a date? + * + * @description + * Returns true if the given value is an instance of Date. The function works for dates transferred across iframes. + * + * @param {*} value - the value to check + * @returns {boolean} true if the given value is a date + * @throws {TypeError} 1 arguments required + * + * @example + * // For a valid date: + * const result = isDate(new Date()) + * //=> true + * + * @example + * // For an invalid date: + * const result = isDate(new Date(NaN)) + * //=> true + * + * @example + * // For some value: + * const result = isDate('2014-02-31') + * //=> false + * + * @example + * // For an object: + * const result = isDate({}) + * //=> false + */ +function isDate(value) { + requiredArgs(1, arguments); + return value instanceof Date || _typeof(value) === 'object' && Object.prototype.toString.call(value) === '[object Date]'; +} +;// CONCATENATED MODULE: ./node_modules/date-fns/esm/toDate/index.js + + +/** + * @name toDate + * @category Common Helpers + * @summary Convert the given argument to an instance of Date. + * + * @description + * Convert the given argument to an instance of Date. + * + * If the argument is an instance of Date, the function returns its clone. + * + * If the argument is a number, it is treated as a timestamp. + * + * If the argument is none of the above, the function returns Invalid Date. + * + * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`. + * + * @param {Date|Number} argument - the value to convert + * @returns {Date} the parsed date in the local time zone + * @throws {TypeError} 1 argument required + * + * @example + * // Clone the date: + * const result = toDate(new Date(2014, 1, 11, 11, 30, 30)) + * //=> Tue Feb 11 2014 11:30:30 + * + * @example + * // Convert the timestamp to date: + * const result = toDate(1392098430000) + * //=> Tue Feb 11 2014 11:30:30 + */ +function toDate(argument) { + requiredArgs(1, arguments); + var argStr = Object.prototype.toString.call(argument); + + // Clone the date + if (argument instanceof Date || _typeof(argument) === 'object' && argStr === '[object Date]') { + // Prevent the date to lose the milliseconds when passed to new Date() in IE10 + return new Date(argument.getTime()); + } else if (typeof argument === 'number' || argStr === '[object Number]') { + return new Date(argument); + } else { + if ((typeof argument === 'string' || argStr === '[object String]') && typeof console !== 'undefined') { + // eslint-disable-next-line no-console + console.warn("Starting with v2.0.0-beta.1 date-fns doesn't accept strings as date arguments. Please use `parseISO` to parse strings. See: https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#string-arguments"); + // eslint-disable-next-line no-console + console.warn(new Error().stack); + } + return new Date(NaN); + } +} +;// CONCATENATED MODULE: ./node_modules/date-fns/esm/isValid/index.js + + + +/** + * @name isValid + * @category Common Helpers + * @summary Is the given date valid? + * + * @description + * Returns false if argument is Invalid Date and true otherwise. + * Argument is converted to Date using `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate} + * Invalid Date is a Date, whose time value is NaN. + * + * Time value of Date: http://es5.github.io/#x15.9.1.1 + * + * @param {*} date - the date to check + * @returns {Boolean} the date is valid + * @throws {TypeError} 1 argument required + * + * @example + * // For the valid date: + * const result = isValid(new Date(2014, 1, 31)) + * //=> true + * + * @example + * // For the value, convertable into a date: + * const result = isValid(1393804800000) + * //=> true + * + * @example + * // For the invalid date: + * const result = isValid(new Date('')) + * //=> false + */ +function isValid(dirtyDate) { + requiredArgs(1, arguments); + if (!isDate(dirtyDate) && typeof dirtyDate !== 'number') { + return false; + } + var date = toDate(dirtyDate); + return !isNaN(Number(date)); +} +;// CONCATENATED MODULE: ./node_modules/date-fns/esm/_lib/toInteger/index.js +function toInteger(dirtyNumber) { + if (dirtyNumber === null || dirtyNumber === true || dirtyNumber === false) { + return NaN; + } + var number = Number(dirtyNumber); + if (isNaN(number)) { + return number; + } + return number < 0 ? Math.ceil(number) : Math.floor(number); +} +;// CONCATENATED MODULE: ./node_modules/date-fns/esm/addMilliseconds/index.js + + + +/** + * @name addMilliseconds + * @category Millisecond Helpers + * @summary Add the specified number of milliseconds to the given date. + * + * @description + * Add the specified number of milliseconds to the given date. + * + * @param {Date|Number} date - the date to be changed + * @param {Number} amount - the amount of milliseconds to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`. + * @returns {Date} the new date with the milliseconds added + * @throws {TypeError} 2 arguments required + * + * @example + * // Add 750 milliseconds to 10 July 2014 12:45:30.000: + * const result = addMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750) + * //=> Thu Jul 10 2014 12:45:30.750 + */ +function addMilliseconds(dirtyDate, dirtyAmount) { + requiredArgs(2, arguments); + var timestamp = toDate(dirtyDate).getTime(); + var amount = toInteger(dirtyAmount); + return new Date(timestamp + amount); +} +;// CONCATENATED MODULE: ./node_modules/date-fns/esm/subMilliseconds/index.js + + + +/** + * @name subMilliseconds + * @category Millisecond Helpers + * @summary Subtract the specified number of milliseconds from the given date. + * + * @description + * Subtract the specified number of milliseconds from the given date. + * + * @param {Date|Number} date - the date to be changed + * @param {Number} amount - the amount of milliseconds to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`. + * @returns {Date} the new date with the milliseconds subtracted + * @throws {TypeError} 2 arguments required + * + * @example + * // Subtract 750 milliseconds from 10 July 2014 12:45:30.000: + * const result = subMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750) + * //=> Thu Jul 10 2014 12:45:29.250 + */ +function subMilliseconds(dirtyDate, dirtyAmount) { + requiredArgs(2, arguments); + var amount = toInteger(dirtyAmount); + return addMilliseconds(dirtyDate, -amount); +} +;// CONCATENATED MODULE: ./node_modules/date-fns/esm/_lib/getUTCDayOfYear/index.js + + +var MILLISECONDS_IN_DAY = 86400000; +function getUTCDayOfYear(dirtyDate) { + requiredArgs(1, arguments); + var date = toDate(dirtyDate); + var timestamp = date.getTime(); + date.setUTCMonth(0, 1); + date.setUTCHours(0, 0, 0, 0); + var startOfYearTimestamp = date.getTime(); + var difference = timestamp - startOfYearTimestamp; + return Math.floor(difference / MILLISECONDS_IN_DAY) + 1; +} +;// CONCATENATED MODULE: ./node_modules/date-fns/esm/_lib/startOfUTCISOWeek/index.js + + +function startOfUTCISOWeek(dirtyDate) { + requiredArgs(1, arguments); + var weekStartsOn = 1; + var date = toDate(dirtyDate); + var day = date.getUTCDay(); + var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn; + date.setUTCDate(date.getUTCDate() - diff); + date.setUTCHours(0, 0, 0, 0); + return date; +} +;// CONCATENATED MODULE: ./node_modules/date-fns/esm/_lib/getUTCISOWeekYear/index.js + + + +function getUTCISOWeekYear(dirtyDate) { + requiredArgs(1, arguments); + var date = toDate(dirtyDate); + var year = date.getUTCFullYear(); + var fourthOfJanuaryOfNextYear = new Date(0); + fourthOfJanuaryOfNextYear.setUTCFullYear(year + 1, 0, 4); + fourthOfJanuaryOfNextYear.setUTCHours(0, 0, 0, 0); + var startOfNextYear = startOfUTCISOWeek(fourthOfJanuaryOfNextYear); + var fourthOfJanuaryOfThisYear = new Date(0); + fourthOfJanuaryOfThisYear.setUTCFullYear(year, 0, 4); + fourthOfJanuaryOfThisYear.setUTCHours(0, 0, 0, 0); + var startOfThisYear = startOfUTCISOWeek(fourthOfJanuaryOfThisYear); + if (date.getTime() >= startOfNextYear.getTime()) { + return year + 1; + } else if (date.getTime() >= startOfThisYear.getTime()) { + return year; + } else { + return year - 1; + } +} +;// CONCATENATED MODULE: ./node_modules/date-fns/esm/_lib/startOfUTCISOWeekYear/index.js + + + +function startOfUTCISOWeekYear(dirtyDate) { + requiredArgs(1, arguments); + var year = getUTCISOWeekYear(dirtyDate); + var fourthOfJanuary = new Date(0); + fourthOfJanuary.setUTCFullYear(year, 0, 4); + fourthOfJanuary.setUTCHours(0, 0, 0, 0); + var date = startOfUTCISOWeek(fourthOfJanuary); + return date; +} +;// CONCATENATED MODULE: ./node_modules/date-fns/esm/_lib/getUTCISOWeek/index.js + + + + +var MILLISECONDS_IN_WEEK = 604800000; +function getUTCISOWeek(dirtyDate) { + requiredArgs(1, arguments); + var date = toDate(dirtyDate); + var diff = startOfUTCISOWeek(date).getTime() - startOfUTCISOWeekYear(date).getTime(); + + // Round the number of days to the nearest integer + // because the number of milliseconds in a week is not constant + // (e.g. it's different in the week of the daylight saving time clock shift) + return Math.round(diff / MILLISECONDS_IN_WEEK) + 1; +} +;// CONCATENATED MODULE: ./node_modules/date-fns/esm/_lib/defaultOptions/index.js +var defaultOptions = {}; +function getDefaultOptions() { + return defaultOptions; +} +function setDefaultOptions(newOptions) { + defaultOptions = newOptions; +} +;// CONCATENATED MODULE: ./node_modules/date-fns/esm/_lib/startOfUTCWeek/index.js + + + + +function startOfUTCWeek(dirtyDate, options) { + var _ref, _ref2, _ref3, _options$weekStartsOn, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2; + requiredArgs(1, arguments); + var defaultOptions = getDefaultOptions(); + var weekStartsOn = toInteger((_ref = (_ref2 = (_ref3 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.weekStartsOn) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.weekStartsOn) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.weekStartsOn) !== null && _ref !== void 0 ? _ref : 0); + + // Test if weekStartsOn is between 0 and 6 _and_ is not NaN + if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) { + throw new RangeError('weekStartsOn must be between 0 and 6 inclusively'); + } + var date = toDate(dirtyDate); + var day = date.getUTCDay(); + var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn; + date.setUTCDate(date.getUTCDate() - diff); + date.setUTCHours(0, 0, 0, 0); + return date; +} +;// CONCATENATED MODULE: ./node_modules/date-fns/esm/_lib/getUTCWeekYear/index.js + + + + + +function getUTCWeekYear(dirtyDate, options) { + var _ref, _ref2, _ref3, _options$firstWeekCon, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2; + requiredArgs(1, arguments); + var date = toDate(dirtyDate); + var year = date.getUTCFullYear(); + var defaultOptions = getDefaultOptions(); + var firstWeekContainsDate = toInteger((_ref = (_ref2 = (_ref3 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref !== void 0 ? _ref : 1); + + // Test if weekStartsOn is between 1 and 7 _and_ is not NaN + if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) { + throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively'); + } + var firstWeekOfNextYear = new Date(0); + firstWeekOfNextYear.setUTCFullYear(year + 1, 0, firstWeekContainsDate); + firstWeekOfNextYear.setUTCHours(0, 0, 0, 0); + var startOfNextYear = startOfUTCWeek(firstWeekOfNextYear, options); + var firstWeekOfThisYear = new Date(0); + firstWeekOfThisYear.setUTCFullYear(year, 0, firstWeekContainsDate); + firstWeekOfThisYear.setUTCHours(0, 0, 0, 0); + var startOfThisYear = startOfUTCWeek(firstWeekOfThisYear, options); + if (date.getTime() >= startOfNextYear.getTime()) { + return year + 1; + } else if (date.getTime() >= startOfThisYear.getTime()) { + return year; + } else { + return year - 1; + } +} +;// CONCATENATED MODULE: ./node_modules/date-fns/esm/_lib/startOfUTCWeekYear/index.js + + + + + +function startOfUTCWeekYear(dirtyDate, options) { + var _ref, _ref2, _ref3, _options$firstWeekCon, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2; + requiredArgs(1, arguments); + var defaultOptions = getDefaultOptions(); + var firstWeekContainsDate = toInteger((_ref = (_ref2 = (_ref3 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref !== void 0 ? _ref : 1); + var year = getUTCWeekYear(dirtyDate, options); + var firstWeek = new Date(0); + firstWeek.setUTCFullYear(year, 0, firstWeekContainsDate); + firstWeek.setUTCHours(0, 0, 0, 0); + var date = startOfUTCWeek(firstWeek, options); + return date; +} +;// CONCATENATED MODULE: ./node_modules/date-fns/esm/_lib/getUTCWeek/index.js + + + + +var getUTCWeek_MILLISECONDS_IN_WEEK = 604800000; +function getUTCWeek(dirtyDate, options) { + requiredArgs(1, arguments); + var date = toDate(dirtyDate); + var diff = startOfUTCWeek(date, options).getTime() - startOfUTCWeekYear(date, options).getTime(); + + // Round the number of days to the nearest integer + // because the number of milliseconds in a week is not constant + // (e.g. it's different in the week of the daylight saving time clock shift) + return Math.round(diff / getUTCWeek_MILLISECONDS_IN_WEEK) + 1; +} +;// CONCATENATED MODULE: ./node_modules/date-fns/esm/_lib/addLeadingZeros/index.js +function addLeadingZeros(number, targetLength) { + var sign = number < 0 ? '-' : ''; + var output = Math.abs(number).toString(); + while (output.length < targetLength) { + output = '0' + output; + } + return sign + output; +} +;// CONCATENATED MODULE: ./node_modules/date-fns/esm/_lib/format/lightFormatters/index.js + +/* + * | | Unit | | Unit | + * |-----|--------------------------------|-----|--------------------------------| + * | a | AM, PM | A* | | + * | d | Day of month | D | | + * | h | Hour [1-12] | H | Hour [0-23] | + * | m | Minute | M | Month | + * | s | Second | S | Fraction of second | + * | y | Year (abs) | Y | | + * + * Letters marked by * are not implemented but reserved by Unicode standard. + */ +var formatters = { + // Year + y: function y(date, token) { + // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_tokens + // | Year | y | yy | yyy | yyyy | yyyyy | + // |----------|-------|----|-------|-------|-------| + // | AD 1 | 1 | 01 | 001 | 0001 | 00001 | + // | AD 12 | 12 | 12 | 012 | 0012 | 00012 | + // | AD 123 | 123 | 23 | 123 | 0123 | 00123 | + // | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 | + // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 | + + var signedYear = date.getUTCFullYear(); + // Returns 1 for 1 BC (which is year 0 in JavaScript) + var year = signedYear > 0 ? signedYear : 1 - signedYear; + return addLeadingZeros(token === 'yy' ? year % 100 : year, token.length); + }, + // Month + M: function M(date, token) { + var month = date.getUTCMonth(); + return token === 'M' ? String(month + 1) : addLeadingZeros(month + 1, 2); + }, + // Day of the month + d: function d(date, token) { + return addLeadingZeros(date.getUTCDate(), token.length); + }, + // AM or PM + a: function a(date, token) { + var dayPeriodEnumValue = date.getUTCHours() / 12 >= 1 ? 'pm' : 'am'; + switch (token) { + case 'a': + case 'aa': + return dayPeriodEnumValue.toUpperCase(); + case 'aaa': + return dayPeriodEnumValue; + case 'aaaaa': + return dayPeriodEnumValue[0]; + case 'aaaa': + default: + return dayPeriodEnumValue === 'am' ? 'a.m.' : 'p.m.'; + } + }, + // Hour [1-12] + h: function h(date, token) { + return addLeadingZeros(date.getUTCHours() % 12 || 12, token.length); + }, + // Hour [0-23] + H: function H(date, token) { + return addLeadingZeros(date.getUTCHours(), token.length); + }, + // Minute + m: function m(date, token) { + return addLeadingZeros(date.getUTCMinutes(), token.length); + }, + // Second + s: function s(date, token) { + return addLeadingZeros(date.getUTCSeconds(), token.length); + }, + // Fraction of second + S: function S(date, token) { + var numberOfDigits = token.length; + var milliseconds = date.getUTCMilliseconds(); + var fractionalSeconds = Math.floor(milliseconds * Math.pow(10, numberOfDigits - 3)); + return addLeadingZeros(fractionalSeconds, token.length); + } +}; +/* harmony default export */ const lightFormatters = (formatters); +;// CONCATENATED MODULE: ./node_modules/date-fns/esm/_lib/format/formatters/index.js + + + + + + + +var dayPeriodEnum = { + am: 'am', + pm: 'pm', + midnight: 'midnight', + noon: 'noon', + morning: 'morning', + afternoon: 'afternoon', + evening: 'evening', + night: 'night' +}; +/* + * | | Unit | | Unit | + * |-----|--------------------------------|-----|--------------------------------| + * | a | AM, PM | A* | Milliseconds in day | + * | b | AM, PM, noon, midnight | B | Flexible day period | + * | c | Stand-alone local day of week | C* | Localized hour w/ day period | + * | d | Day of month | D | Day of year | + * | e | Local day of week | E | Day of week | + * | f | | F* | Day of week in month | + * | g* | Modified Julian day | G | Era | + * | h | Hour [1-12] | H | Hour [0-23] | + * | i! | ISO day of week | I! | ISO week of year | + * | j* | Localized hour w/ day period | J* | Localized hour w/o day period | + * | k | Hour [1-24] | K | Hour [0-11] | + * | l* | (deprecated) | L | Stand-alone month | + * | m | Minute | M | Month | + * | n | | N | | + * | o! | Ordinal number modifier | O | Timezone (GMT) | + * | p! | Long localized time | P! | Long localized date | + * | q | Stand-alone quarter | Q | Quarter | + * | r* | Related Gregorian year | R! | ISO week-numbering year | + * | s | Second | S | Fraction of second | + * | t! | Seconds timestamp | T! | Milliseconds timestamp | + * | u | Extended year | U* | Cyclic year | + * | v* | Timezone (generic non-locat.) | V* | Timezone (location) | + * | w | Local week of year | W* | Week of month | + * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) | + * | y | Year (abs) | Y | Local week-numbering year | + * | z | Timezone (specific non-locat.) | Z* | Timezone (aliases) | + * + * Letters marked by * are not implemented but reserved by Unicode standard. + * + * Letters marked by ! are non-standard, but implemented by date-fns: + * - `o` modifies the previous token to turn it into an ordinal (see `format` docs) + * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days, + * i.e. 7 for Sunday, 1 for Monday, etc. + * - `I` is ISO week of year, as opposed to `w` which is local week of year. + * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year. + * `R` is supposed to be used in conjunction with `I` and `i` + * for universal ISO week-numbering date, whereas + * `Y` is supposed to be used in conjunction with `w` and `e` + * for week-numbering date specific to the locale. + * - `P` is long localized date format + * - `p` is long localized time format + */ + +var formatters_formatters = { + // Era + G: function G(date, token, localize) { + var era = date.getUTCFullYear() > 0 ? 1 : 0; + switch (token) { + // AD, BC + case 'G': + case 'GG': + case 'GGG': + return localize.era(era, { + width: 'abbreviated' + }); + // A, B + case 'GGGGG': + return localize.era(era, { + width: 'narrow' + }); + // Anno Domini, Before Christ + case 'GGGG': + default: + return localize.era(era, { + width: 'wide' + }); + } + }, + // Year + y: function y(date, token, localize) { + // Ordinal number + if (token === 'yo') { + var signedYear = date.getUTCFullYear(); + // Returns 1 for 1 BC (which is year 0 in JavaScript) + var year = signedYear > 0 ? signedYear : 1 - signedYear; + return localize.ordinalNumber(year, { + unit: 'year' + }); + } + return lightFormatters.y(date, token); + }, + // Local week-numbering year + Y: function Y(date, token, localize, options) { + var signedWeekYear = getUTCWeekYear(date, options); + // Returns 1 for 1 BC (which is year 0 in JavaScript) + var weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear; + + // Two digit year + if (token === 'YY') { + var twoDigitYear = weekYear % 100; + return addLeadingZeros(twoDigitYear, 2); + } + + // Ordinal number + if (token === 'Yo') { + return localize.ordinalNumber(weekYear, { + unit: 'year' + }); + } + + // Padding + return addLeadingZeros(weekYear, token.length); + }, + // ISO week-numbering year + R: function R(date, token) { + var isoWeekYear = getUTCISOWeekYear(date); + + // Padding + return addLeadingZeros(isoWeekYear, token.length); + }, + // Extended year. This is a single number designating the year of this calendar system. + // The main difference between `y` and `u` localizers are B.C. years: + // | Year | `y` | `u` | + // |------|-----|-----| + // | AC 1 | 1 | 1 | + // | BC 1 | 1 | 0 | + // | BC 2 | 2 | -1 | + // Also `yy` always returns the last two digits of a year, + // while `uu` pads single digit years to 2 characters and returns other years unchanged. + u: function u(date, token) { + var year = date.getUTCFullYear(); + return addLeadingZeros(year, token.length); + }, + // Quarter + Q: function Q(date, token, localize) { + var quarter = Math.ceil((date.getUTCMonth() + 1) / 3); + switch (token) { + // 1, 2, 3, 4 + case 'Q': + return String(quarter); + // 01, 02, 03, 04 + case 'QQ': + return addLeadingZeros(quarter, 2); + // 1st, 2nd, 3rd, 4th + case 'Qo': + return localize.ordinalNumber(quarter, { + unit: 'quarter' + }); + // Q1, Q2, Q3, Q4 + case 'QQQ': + return localize.quarter(quarter, { + width: 'abbreviated', + context: 'formatting' + }); + // 1, 2, 3, 4 (narrow quarter; could be not numerical) + case 'QQQQQ': + return localize.quarter(quarter, { + width: 'narrow', + context: 'formatting' + }); + // 1st quarter, 2nd quarter, ... + case 'QQQQ': + default: + return localize.quarter(quarter, { + width: 'wide', + context: 'formatting' + }); + } + }, + // Stand-alone quarter + q: function q(date, token, localize) { + var quarter = Math.ceil((date.getUTCMonth() + 1) / 3); + switch (token) { + // 1, 2, 3, 4 + case 'q': + return String(quarter); + // 01, 02, 03, 04 + case 'qq': + return addLeadingZeros(quarter, 2); + // 1st, 2nd, 3rd, 4th + case 'qo': + return localize.ordinalNumber(quarter, { + unit: 'quarter' + }); + // Q1, Q2, Q3, Q4 + case 'qqq': + return localize.quarter(quarter, { + width: 'abbreviated', + context: 'standalone' + }); + // 1, 2, 3, 4 (narrow quarter; could be not numerical) + case 'qqqqq': + return localize.quarter(quarter, { + width: 'narrow', + context: 'standalone' + }); + // 1st quarter, 2nd quarter, ... + case 'qqqq': + default: + return localize.quarter(quarter, { + width: 'wide', + context: 'standalone' + }); + } + }, + // Month + M: function M(date, token, localize) { + var month = date.getUTCMonth(); + switch (token) { + case 'M': + case 'MM': + return lightFormatters.M(date, token); + // 1st, 2nd, ..., 12th + case 'Mo': + return localize.ordinalNumber(month + 1, { + unit: 'month' + }); + // Jan, Feb, ..., Dec + case 'MMM': + return localize.month(month, { + width: 'abbreviated', + context: 'formatting' + }); + // J, F, ..., D + case 'MMMMM': + return localize.month(month, { + width: 'narrow', + context: 'formatting' + }); + // January, February, ..., December + case 'MMMM': + default: + return localize.month(month, { + width: 'wide', + context: 'formatting' + }); + } + }, + // Stand-alone month + L: function L(date, token, localize) { + var month = date.getUTCMonth(); + switch (token) { + // 1, 2, ..., 12 + case 'L': + return String(month + 1); + // 01, 02, ..., 12 + case 'LL': + return addLeadingZeros(month + 1, 2); + // 1st, 2nd, ..., 12th + case 'Lo': + return localize.ordinalNumber(month + 1, { + unit: 'month' + }); + // Jan, Feb, ..., Dec + case 'LLL': + return localize.month(month, { + width: 'abbreviated', + context: 'standalone' + }); + // J, F, ..., D + case 'LLLLL': + return localize.month(month, { + width: 'narrow', + context: 'standalone' + }); + // January, February, ..., December + case 'LLLL': + default: + return localize.month(month, { + width: 'wide', + context: 'standalone' + }); + } + }, + // Local week of year + w: function w(date, token, localize, options) { + var week = getUTCWeek(date, options); + if (token === 'wo') { + return localize.ordinalNumber(week, { + unit: 'week' + }); + } + return addLeadingZeros(week, token.length); + }, + // ISO week of year + I: function I(date, token, localize) { + var isoWeek = getUTCISOWeek(date); + if (token === 'Io') { + return localize.ordinalNumber(isoWeek, { + unit: 'week' + }); + } + return addLeadingZeros(isoWeek, token.length); + }, + // Day of the month + d: function d(date, token, localize) { + if (token === 'do') { + return localize.ordinalNumber(date.getUTCDate(), { + unit: 'date' + }); + } + return lightFormatters.d(date, token); + }, + // Day of year + D: function D(date, token, localize) { + var dayOfYear = getUTCDayOfYear(date); + if (token === 'Do') { + return localize.ordinalNumber(dayOfYear, { + unit: 'dayOfYear' + }); + } + return addLeadingZeros(dayOfYear, token.length); + }, + // Day of week + E: function E(date, token, localize) { + var dayOfWeek = date.getUTCDay(); + switch (token) { + // Tue + case 'E': + case 'EE': + case 'EEE': + return localize.day(dayOfWeek, { + width: 'abbreviated', + context: 'formatting' + }); + // T + case 'EEEEE': + return localize.day(dayOfWeek, { + width: 'narrow', + context: 'formatting' + }); + // Tu + case 'EEEEEE': + return localize.day(dayOfWeek, { + width: 'short', + context: 'formatting' + }); + // Tuesday + case 'EEEE': + default: + return localize.day(dayOfWeek, { + width: 'wide', + context: 'formatting' + }); + } + }, + // Local day of week + e: function e(date, token, localize, options) { + var dayOfWeek = date.getUTCDay(); + var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7; + switch (token) { + // Numerical value (Nth day of week with current locale or weekStartsOn) + case 'e': + return String(localDayOfWeek); + // Padded numerical value + case 'ee': + return addLeadingZeros(localDayOfWeek, 2); + // 1st, 2nd, ..., 7th + case 'eo': + return localize.ordinalNumber(localDayOfWeek, { + unit: 'day' + }); + case 'eee': + return localize.day(dayOfWeek, { + width: 'abbreviated', + context: 'formatting' + }); + // T + case 'eeeee': + return localize.day(dayOfWeek, { + width: 'narrow', + context: 'formatting' + }); + // Tu + case 'eeeeee': + return localize.day(dayOfWeek, { + width: 'short', + context: 'formatting' + }); + // Tuesday + case 'eeee': + default: + return localize.day(dayOfWeek, { + width: 'wide', + context: 'formatting' + }); + } + }, + // Stand-alone local day of week + c: function c(date, token, localize, options) { + var dayOfWeek = date.getUTCDay(); + var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7; + switch (token) { + // Numerical value (same as in `e`) + case 'c': + return String(localDayOfWeek); + // Padded numerical value + case 'cc': + return addLeadingZeros(localDayOfWeek, token.length); + // 1st, 2nd, ..., 7th + case 'co': + return localize.ordinalNumber(localDayOfWeek, { + unit: 'day' + }); + case 'ccc': + return localize.day(dayOfWeek, { + width: 'abbreviated', + context: 'standalone' + }); + // T + case 'ccccc': + return localize.day(dayOfWeek, { + width: 'narrow', + context: 'standalone' + }); + // Tu + case 'cccccc': + return localize.day(dayOfWeek, { + width: 'short', + context: 'standalone' + }); + // Tuesday + case 'cccc': + default: + return localize.day(dayOfWeek, { + width: 'wide', + context: 'standalone' + }); + } + }, + // ISO day of week + i: function i(date, token, localize) { + var dayOfWeek = date.getUTCDay(); + var isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek; + switch (token) { + // 2 + case 'i': + return String(isoDayOfWeek); + // 02 + case 'ii': + return addLeadingZeros(isoDayOfWeek, token.length); + // 2nd + case 'io': + return localize.ordinalNumber(isoDayOfWeek, { + unit: 'day' + }); + // Tue + case 'iii': + return localize.day(dayOfWeek, { + width: 'abbreviated', + context: 'formatting' + }); + // T + case 'iiiii': + return localize.day(dayOfWeek, { + width: 'narrow', + context: 'formatting' + }); + // Tu + case 'iiiiii': + return localize.day(dayOfWeek, { + width: 'short', + context: 'formatting' + }); + // Tuesday + case 'iiii': + default: + return localize.day(dayOfWeek, { + width: 'wide', + context: 'formatting' + }); + } + }, + // AM or PM + a: function a(date, token, localize) { + var hours = date.getUTCHours(); + var dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am'; + switch (token) { + case 'a': + case 'aa': + return localize.dayPeriod(dayPeriodEnumValue, { + width: 'abbreviated', + context: 'formatting' + }); + case 'aaa': + return localize.dayPeriod(dayPeriodEnumValue, { + width: 'abbreviated', + context: 'formatting' + }).toLowerCase(); + case 'aaaaa': + return localize.dayPeriod(dayPeriodEnumValue, { + width: 'narrow', + context: 'formatting' + }); + case 'aaaa': + default: + return localize.dayPeriod(dayPeriodEnumValue, { + width: 'wide', + context: 'formatting' + }); + } + }, + // AM, PM, midnight, noon + b: function b(date, token, localize) { + var hours = date.getUTCHours(); + var dayPeriodEnumValue; + if (hours === 12) { + dayPeriodEnumValue = dayPeriodEnum.noon; + } else if (hours === 0) { + dayPeriodEnumValue = dayPeriodEnum.midnight; + } else { + dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am'; + } + switch (token) { + case 'b': + case 'bb': + return localize.dayPeriod(dayPeriodEnumValue, { + width: 'abbreviated', + context: 'formatting' + }); + case 'bbb': + return localize.dayPeriod(dayPeriodEnumValue, { + width: 'abbreviated', + context: 'formatting' + }).toLowerCase(); + case 'bbbbb': + return localize.dayPeriod(dayPeriodEnumValue, { + width: 'narrow', + context: 'formatting' + }); + case 'bbbb': + default: + return localize.dayPeriod(dayPeriodEnumValue, { + width: 'wide', + context: 'formatting' + }); + } + }, + // in the morning, in the afternoon, in the evening, at night + B: function B(date, token, localize) { + var hours = date.getUTCHours(); + var dayPeriodEnumValue; + if (hours >= 17) { + dayPeriodEnumValue = dayPeriodEnum.evening; + } else if (hours >= 12) { + dayPeriodEnumValue = dayPeriodEnum.afternoon; + } else if (hours >= 4) { + dayPeriodEnumValue = dayPeriodEnum.morning; + } else { + dayPeriodEnumValue = dayPeriodEnum.night; + } + switch (token) { + case 'B': + case 'BB': + case 'BBB': + return localize.dayPeriod(dayPeriodEnumValue, { + width: 'abbreviated', + context: 'formatting' + }); + case 'BBBBB': + return localize.dayPeriod(dayPeriodEnumValue, { + width: 'narrow', + context: 'formatting' + }); + case 'BBBB': + default: + return localize.dayPeriod(dayPeriodEnumValue, { + width: 'wide', + context: 'formatting' + }); + } + }, + // Hour [1-12] + h: function h(date, token, localize) { + if (token === 'ho') { + var hours = date.getUTCHours() % 12; + if (hours === 0) hours = 12; + return localize.ordinalNumber(hours, { + unit: 'hour' + }); + } + return lightFormatters.h(date, token); + }, + // Hour [0-23] + H: function H(date, token, localize) { + if (token === 'Ho') { + return localize.ordinalNumber(date.getUTCHours(), { + unit: 'hour' + }); + } + return lightFormatters.H(date, token); + }, + // Hour [0-11] + K: function K(date, token, localize) { + var hours = date.getUTCHours() % 12; + if (token === 'Ko') { + return localize.ordinalNumber(hours, { + unit: 'hour' + }); + } + return addLeadingZeros(hours, token.length); + }, + // Hour [1-24] + k: function k(date, token, localize) { + var hours = date.getUTCHours(); + if (hours === 0) hours = 24; + if (token === 'ko') { + return localize.ordinalNumber(hours, { + unit: 'hour' + }); + } + return addLeadingZeros(hours, token.length); + }, + // Minute + m: function m(date, token, localize) { + if (token === 'mo') { + return localize.ordinalNumber(date.getUTCMinutes(), { + unit: 'minute' + }); + } + return lightFormatters.m(date, token); + }, + // Second + s: function s(date, token, localize) { + if (token === 'so') { + return localize.ordinalNumber(date.getUTCSeconds(), { + unit: 'second' + }); + } + return lightFormatters.s(date, token); + }, + // Fraction of second + S: function S(date, token) { + return lightFormatters.S(date, token); + }, + // Timezone (ISO-8601. If offset is 0, output is always `'Z'`) + X: function X(date, token, _localize, options) { + var originalDate = options._originalDate || date; + var timezoneOffset = originalDate.getTimezoneOffset(); + if (timezoneOffset === 0) { + return 'Z'; + } + switch (token) { + // Hours and optional minutes + case 'X': + return formatTimezoneWithOptionalMinutes(timezoneOffset); + + // Hours, minutes and optional seconds without `:` delimiter + // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets + // so this token always has the same output as `XX` + case 'XXXX': + case 'XX': + // Hours and minutes without `:` delimiter + return formatTimezone(timezoneOffset); + + // Hours, minutes and optional seconds with `:` delimiter + // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets + // so this token always has the same output as `XXX` + case 'XXXXX': + case 'XXX': // Hours and minutes with `:` delimiter + default: + return formatTimezone(timezoneOffset, ':'); + } + }, + // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent) + x: function x(date, token, _localize, options) { + var originalDate = options._originalDate || date; + var timezoneOffset = originalDate.getTimezoneOffset(); + switch (token) { + // Hours and optional minutes + case 'x': + return formatTimezoneWithOptionalMinutes(timezoneOffset); + + // Hours, minutes and optional seconds without `:` delimiter + // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets + // so this token always has the same output as `xx` + case 'xxxx': + case 'xx': + // Hours and minutes without `:` delimiter + return formatTimezone(timezoneOffset); + + // Hours, minutes and optional seconds with `:` delimiter + // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets + // so this token always has the same output as `xxx` + case 'xxxxx': + case 'xxx': // Hours and minutes with `:` delimiter + default: + return formatTimezone(timezoneOffset, ':'); + } + }, + // Timezone (GMT) + O: function O(date, token, _localize, options) { + var originalDate = options._originalDate || date; + var timezoneOffset = originalDate.getTimezoneOffset(); + switch (token) { + // Short + case 'O': + case 'OO': + case 'OOO': + return 'GMT' + formatTimezoneShort(timezoneOffset, ':'); + // Long + case 'OOOO': + default: + return 'GMT' + formatTimezone(timezoneOffset, ':'); + } + }, + // Timezone (specific non-location) + z: function z(date, token, _localize, options) { + var originalDate = options._originalDate || date; + var timezoneOffset = originalDate.getTimezoneOffset(); + switch (token) { + // Short + case 'z': + case 'zz': + case 'zzz': + return 'GMT' + formatTimezoneShort(timezoneOffset, ':'); + // Long + case 'zzzz': + default: + return 'GMT' + formatTimezone(timezoneOffset, ':'); + } + }, + // Seconds timestamp + t: function t(date, token, _localize, options) { + var originalDate = options._originalDate || date; + var timestamp = Math.floor(originalDate.getTime() / 1000); + return addLeadingZeros(timestamp, token.length); + }, + // Milliseconds timestamp + T: function T(date, token, _localize, options) { + var originalDate = options._originalDate || date; + var timestamp = originalDate.getTime(); + return addLeadingZeros(timestamp, token.length); + } +}; +function formatTimezoneShort(offset, dirtyDelimiter) { + var sign = offset > 0 ? '-' : '+'; + var absOffset = Math.abs(offset); + var hours = Math.floor(absOffset / 60); + var minutes = absOffset % 60; + if (minutes === 0) { + return sign + String(hours); + } + var delimiter = dirtyDelimiter || ''; + return sign + String(hours) + delimiter + addLeadingZeros(minutes, 2); +} +function formatTimezoneWithOptionalMinutes(offset, dirtyDelimiter) { + if (offset % 60 === 0) { + var sign = offset > 0 ? '-' : '+'; + return sign + addLeadingZeros(Math.abs(offset) / 60, 2); + } + return formatTimezone(offset, dirtyDelimiter); +} +function formatTimezone(offset, dirtyDelimiter) { + var delimiter = dirtyDelimiter || ''; + var sign = offset > 0 ? '-' : '+'; + var absOffset = Math.abs(offset); + var hours = addLeadingZeros(Math.floor(absOffset / 60), 2); + var minutes = addLeadingZeros(absOffset % 60, 2); + return sign + hours + delimiter + minutes; +} +/* harmony default export */ const format_formatters = (formatters_formatters); +;// CONCATENATED MODULE: ./node_modules/date-fns/esm/_lib/format/longFormatters/index.js +var dateLongFormatter = function dateLongFormatter(pattern, formatLong) { + switch (pattern) { + case 'P': + return formatLong.date({ + width: 'short' + }); + case 'PP': + return formatLong.date({ + width: 'medium' + }); + case 'PPP': + return formatLong.date({ + width: 'long' + }); + case 'PPPP': + default: + return formatLong.date({ + width: 'full' + }); + } +}; +var timeLongFormatter = function timeLongFormatter(pattern, formatLong) { + switch (pattern) { + case 'p': + return formatLong.time({ + width: 'short' + }); + case 'pp': + return formatLong.time({ + width: 'medium' + }); + case 'ppp': + return formatLong.time({ + width: 'long' + }); + case 'pppp': + default: + return formatLong.time({ + width: 'full' + }); + } +}; +var dateTimeLongFormatter = function dateTimeLongFormatter(pattern, formatLong) { + var matchResult = pattern.match(/(P+)(p+)?/) || []; + var datePattern = matchResult[1]; + var timePattern = matchResult[2]; + if (!timePattern) { + return dateLongFormatter(pattern, formatLong); + } + var dateTimeFormat; + switch (datePattern) { + case 'P': + dateTimeFormat = formatLong.dateTime({ + width: 'short' + }); + break; + case 'PP': + dateTimeFormat = formatLong.dateTime({ + width: 'medium' + }); + break; + case 'PPP': + dateTimeFormat = formatLong.dateTime({ + width: 'long' + }); + break; + case 'PPPP': + default: + dateTimeFormat = formatLong.dateTime({ + width: 'full' + }); + break; + } + return dateTimeFormat.replace('{{date}}', dateLongFormatter(datePattern, formatLong)).replace('{{time}}', timeLongFormatter(timePattern, formatLong)); +}; +var longFormatters = { + p: timeLongFormatter, + P: dateTimeLongFormatter +}; +/* harmony default export */ const format_longFormatters = (longFormatters); +;// CONCATENATED MODULE: ./node_modules/date-fns/esm/_lib/getTimezoneOffsetInMilliseconds/index.js +/** + * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds. + * They usually appear for dates that denote time before the timezones were introduced + * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891 + * and GMT+01:00:00 after that date) + * + * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above, + * which would lead to incorrect calculations. + * + * This function returns the timezone offset in milliseconds that takes seconds in account. + */ +function getTimezoneOffsetInMilliseconds(date) { + var utcDate = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds())); + utcDate.setUTCFullYear(date.getFullYear()); + return date.getTime() - utcDate.getTime(); +} +;// CONCATENATED MODULE: ./node_modules/date-fns/esm/_lib/protectedTokens/index.js +var protectedDayOfYearTokens = ['D', 'DD']; +var protectedWeekYearTokens = ['YY', 'YYYY']; +function isProtectedDayOfYearToken(token) { + return protectedDayOfYearTokens.indexOf(token) !== -1; +} +function isProtectedWeekYearToken(token) { + return protectedWeekYearTokens.indexOf(token) !== -1; +} +function throwProtectedError(token, format, input) { + if (token === 'YYYY') { + throw new RangeError("Use `yyyy` instead of `YYYY` (in `".concat(format, "`) for formatting years to the input `").concat(input, "`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md")); + } else if (token === 'YY') { + throw new RangeError("Use `yy` instead of `YY` (in `".concat(format, "`) for formatting years to the input `").concat(input, "`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md")); + } else if (token === 'D') { + throw new RangeError("Use `d` instead of `D` (in `".concat(format, "`) for formatting days of the month to the input `").concat(input, "`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md")); + } else if (token === 'DD') { + throw new RangeError("Use `dd` instead of `DD` (in `".concat(format, "`) for formatting days of the month to the input `").concat(input, "`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md")); + } +} +;// CONCATENATED MODULE: ./node_modules/date-fns/esm/locale/en-US/_lib/formatDistance/index.js +var formatDistanceLocale = { + lessThanXSeconds: { + one: 'less than a second', + other: 'less than {{count}} seconds' + }, + xSeconds: { + one: '1 second', + other: '{{count}} seconds' + }, + halfAMinute: 'half a minute', + lessThanXMinutes: { + one: 'less than a minute', + other: 'less than {{count}} minutes' + }, + xMinutes: { + one: '1 minute', + other: '{{count}} minutes' + }, + aboutXHours: { + one: 'about 1 hour', + other: 'about {{count}} hours' + }, + xHours: { + one: '1 hour', + other: '{{count}} hours' + }, + xDays: { + one: '1 day', + other: '{{count}} days' + }, + aboutXWeeks: { + one: 'about 1 week', + other: 'about {{count}} weeks' + }, + xWeeks: { + one: '1 week', + other: '{{count}} weeks' + }, + aboutXMonths: { + one: 'about 1 month', + other: 'about {{count}} months' + }, + xMonths: { + one: '1 month', + other: '{{count}} months' + }, + aboutXYears: { + one: 'about 1 year', + other: 'about {{count}} years' + }, + xYears: { + one: '1 year', + other: '{{count}} years' + }, + overXYears: { + one: 'over 1 year', + other: 'over {{count}} years' + }, + almostXYears: { + one: 'almost 1 year', + other: 'almost {{count}} years' + } +}; +var formatDistance = function formatDistance(token, count, options) { + var result; + var tokenValue = formatDistanceLocale[token]; + if (typeof tokenValue === 'string') { + result = tokenValue; + } else if (count === 1) { + result = tokenValue.one; + } else { + result = tokenValue.other.replace('{{count}}', count.toString()); + } + if (options !== null && options !== void 0 && options.addSuffix) { + if (options.comparison && options.comparison > 0) { + return 'in ' + result; + } else { + return result + ' ago'; + } + } + return result; +}; +/* harmony default export */ const _lib_formatDistance = (formatDistance); +;// CONCATENATED MODULE: ./node_modules/date-fns/esm/locale/_lib/buildFormatLongFn/index.js +function buildFormatLongFn(args) { + return function () { + var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + // TODO: Remove String() + var width = options.width ? String(options.width) : args.defaultWidth; + var format = args.formats[width] || args.formats[args.defaultWidth]; + return format; + }; +} +;// CONCATENATED MODULE: ./node_modules/date-fns/esm/locale/en-US/_lib/formatLong/index.js + +var dateFormats = { + full: 'EEEE, MMMM do, y', + long: 'MMMM do, y', + medium: 'MMM d, y', + short: 'MM/dd/yyyy' +}; +var timeFormats = { + full: 'h:mm:ss a zzzz', + long: 'h:mm:ss a z', + medium: 'h:mm:ss a', + short: 'h:mm a' +}; +var dateTimeFormats = { + full: "{{date}} 'at' {{time}}", + long: "{{date}} 'at' {{time}}", + medium: '{{date}}, {{time}}', + short: '{{date}}, {{time}}' +}; +var formatLong = { + date: buildFormatLongFn({ + formats: dateFormats, + defaultWidth: 'full' + }), + time: buildFormatLongFn({ + formats: timeFormats, + defaultWidth: 'full' + }), + dateTime: buildFormatLongFn({ + formats: dateTimeFormats, + defaultWidth: 'full' + }) +}; +/* harmony default export */ const _lib_formatLong = (formatLong); +;// CONCATENATED MODULE: ./node_modules/date-fns/esm/locale/en-US/_lib/formatRelative/index.js +var formatRelativeLocale = { + lastWeek: "'last' eeee 'at' p", + yesterday: "'yesterday at' p", + today: "'today at' p", + tomorrow: "'tomorrow at' p", + nextWeek: "eeee 'at' p", + other: 'P' +}; +var formatRelative = function formatRelative(token, _date, _baseDate, _options) { + return formatRelativeLocale[token]; +}; +/* harmony default export */ const _lib_formatRelative = (formatRelative); +;// CONCATENATED MODULE: ./node_modules/date-fns/esm/locale/_lib/buildLocalizeFn/index.js +function buildLocalizeFn(args) { + return function (dirtyIndex, options) { + var context = options !== null && options !== void 0 && options.context ? String(options.context) : 'standalone'; + var valuesArray; + if (context === 'formatting' && args.formattingValues) { + var defaultWidth = args.defaultFormattingWidth || args.defaultWidth; + var width = options !== null && options !== void 0 && options.width ? String(options.width) : defaultWidth; + valuesArray = args.formattingValues[width] || args.formattingValues[defaultWidth]; + } else { + var _defaultWidth = args.defaultWidth; + var _width = options !== null && options !== void 0 && options.width ? String(options.width) : args.defaultWidth; + valuesArray = args.values[_width] || args.values[_defaultWidth]; + } + var index = args.argumentCallback ? args.argumentCallback(dirtyIndex) : dirtyIndex; + // @ts-ignore: For some reason TypeScript just don't want to match it, no matter how hard we try. I challenge you to try to remove it! + return valuesArray[index]; + }; +} +;// CONCATENATED MODULE: ./node_modules/date-fns/esm/locale/en-US/_lib/localize/index.js + +var eraValues = { + narrow: ['B', 'A'], + abbreviated: ['BC', 'AD'], + wide: ['Before Christ', 'Anno Domini'] +}; +var quarterValues = { + narrow: ['1', '2', '3', '4'], + abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'], + wide: ['1st quarter', '2nd quarter', '3rd quarter', '4th quarter'] +}; + +// Note: in English, the names of days of the week and months are capitalized. +// If you are making a new locale based on this one, check if the same is true for the language you're working on. +// Generally, formatted dates should look like they are in the middle of a sentence, +// e.g. in Spanish language the weekdays and months should be in the lowercase. +var monthValues = { + narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], + abbreviated: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], + wide: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'] +}; +var dayValues = { + narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S'], + short: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'], + abbreviated: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], + wide: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'] +}; +var dayPeriodValues = { + narrow: { + am: 'a', + pm: 'p', + midnight: 'mi', + noon: 'n', + morning: 'morning', + afternoon: 'afternoon', + evening: 'evening', + night: 'night' + }, + abbreviated: { + am: 'AM', + pm: 'PM', + midnight: 'midnight', + noon: 'noon', + morning: 'morning', + afternoon: 'afternoon', + evening: 'evening', + night: 'night' + }, + wide: { + am: 'a.m.', + pm: 'p.m.', + midnight: 'midnight', + noon: 'noon', + morning: 'morning', + afternoon: 'afternoon', + evening: 'evening', + night: 'night' + } +}; +var formattingDayPeriodValues = { + narrow: { + am: 'a', + pm: 'p', + midnight: 'mi', + noon: 'n', + morning: 'in the morning', + afternoon: 'in the afternoon', + evening: 'in the evening', + night: 'at night' + }, + abbreviated: { + am: 'AM', + pm: 'PM', + midnight: 'midnight', + noon: 'noon', + morning: 'in the morning', + afternoon: 'in the afternoon', + evening: 'in the evening', + night: 'at night' + }, + wide: { + am: 'a.m.', + pm: 'p.m.', + midnight: 'midnight', + noon: 'noon', + morning: 'in the morning', + afternoon: 'in the afternoon', + evening: 'in the evening', + night: 'at night' + } +}; +var ordinalNumber = function ordinalNumber(dirtyNumber, _options) { + var number = Number(dirtyNumber); + + // If ordinal numbers depend on context, for example, + // if they are different for different grammatical genders, + // use `options.unit`. + // + // `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear', + // 'day', 'hour', 'minute', 'second'. + + var rem100 = number % 100; + if (rem100 > 20 || rem100 < 10) { + switch (rem100 % 10) { + case 1: + return number + 'st'; + case 2: + return number + 'nd'; + case 3: + return number + 'rd'; + } + } + return number + 'th'; +}; +var localize = { + ordinalNumber: ordinalNumber, + era: buildLocalizeFn({ + values: eraValues, + defaultWidth: 'wide' + }), + quarter: buildLocalizeFn({ + values: quarterValues, + defaultWidth: 'wide', + argumentCallback: function argumentCallback(quarter) { + return quarter - 1; + } + }), + month: buildLocalizeFn({ + values: monthValues, + defaultWidth: 'wide' + }), + day: buildLocalizeFn({ + values: dayValues, + defaultWidth: 'wide' + }), + dayPeriod: buildLocalizeFn({ + values: dayPeriodValues, + defaultWidth: 'wide', + formattingValues: formattingDayPeriodValues, + defaultFormattingWidth: 'wide' + }) +}; +/* harmony default export */ const _lib_localize = (localize); +;// CONCATENATED MODULE: ./node_modules/date-fns/esm/locale/_lib/buildMatchFn/index.js +function buildMatchFn(args) { + return function (string) { + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + var width = options.width; + var matchPattern = width && args.matchPatterns[width] || args.matchPatterns[args.defaultMatchWidth]; + var matchResult = string.match(matchPattern); + if (!matchResult) { + return null; + } + var matchedString = matchResult[0]; + var parsePatterns = width && args.parsePatterns[width] || args.parsePatterns[args.defaultParseWidth]; + var key = Array.isArray(parsePatterns) ? findIndex(parsePatterns, function (pattern) { + return pattern.test(matchedString); + }) : findKey(parsePatterns, function (pattern) { + return pattern.test(matchedString); + }); + var value; + value = args.valueCallback ? args.valueCallback(key) : key; + value = options.valueCallback ? options.valueCallback(value) : value; + var rest = string.slice(matchedString.length); + return { + value: value, + rest: rest + }; + }; +} +function findKey(object, predicate) { + for (var key in object) { + if (object.hasOwnProperty(key) && predicate(object[key])) { + return key; + } + } + return undefined; +} +function findIndex(array, predicate) { + for (var key = 0; key < array.length; key++) { + if (predicate(array[key])) { + return key; + } + } + return undefined; +} +;// CONCATENATED MODULE: ./node_modules/date-fns/esm/locale/_lib/buildMatchPatternFn/index.js +function buildMatchPatternFn(args) { + return function (string) { + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + var matchResult = string.match(args.matchPattern); + if (!matchResult) return null; + var matchedString = matchResult[0]; + var parseResult = string.match(args.parsePattern); + if (!parseResult) return null; + var value = args.valueCallback ? args.valueCallback(parseResult[0]) : parseResult[0]; + value = options.valueCallback ? options.valueCallback(value) : value; + var rest = string.slice(matchedString.length); + return { + value: value, + rest: rest + }; + }; +} +;// CONCATENATED MODULE: ./node_modules/date-fns/esm/locale/en-US/_lib/match/index.js + + +var matchOrdinalNumberPattern = /^(\d+)(th|st|nd|rd)?/i; +var parseOrdinalNumberPattern = /\d+/i; +var matchEraPatterns = { + narrow: /^(b|a)/i, + abbreviated: /^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i, + wide: /^(before christ|before common era|anno domini|common era)/i +}; +var parseEraPatterns = { + any: [/^b/i, /^(a|c)/i] +}; +var matchQuarterPatterns = { + narrow: /^[1234]/i, + abbreviated: /^q[1234]/i, + wide: /^[1234](th|st|nd|rd)? quarter/i +}; +var parseQuarterPatterns = { + any: [/1/i, /2/i, /3/i, /4/i] +}; +var matchMonthPatterns = { + narrow: /^[jfmasond]/i, + abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i, + wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i +}; +var parseMonthPatterns = { + narrow: [/^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i], + any: [/^ja/i, /^f/i, /^mar/i, /^ap/i, /^may/i, /^jun/i, /^jul/i, /^au/i, /^s/i, /^o/i, /^n/i, /^d/i] +}; +var matchDayPatterns = { + narrow: /^[smtwf]/i, + short: /^(su|mo|tu|we|th|fr|sa)/i, + abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i, + wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i +}; +var parseDayPatterns = { + narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i], + any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i] +}; +var matchDayPeriodPatterns = { + narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i, + any: /^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i +}; +var parseDayPeriodPatterns = { + any: { + am: /^a/i, + pm: /^p/i, + midnight: /^mi/i, + noon: /^no/i, + morning: /morning/i, + afternoon: /afternoon/i, + evening: /evening/i, + night: /night/i + } +}; +var match = { + ordinalNumber: buildMatchPatternFn({ + matchPattern: matchOrdinalNumberPattern, + parsePattern: parseOrdinalNumberPattern, + valueCallback: function valueCallback(value) { + return parseInt(value, 10); + } + }), + era: buildMatchFn({ + matchPatterns: matchEraPatterns, + defaultMatchWidth: 'wide', + parsePatterns: parseEraPatterns, + defaultParseWidth: 'any' + }), + quarter: buildMatchFn({ + matchPatterns: matchQuarterPatterns, + defaultMatchWidth: 'wide', + parsePatterns: parseQuarterPatterns, + defaultParseWidth: 'any', + valueCallback: function valueCallback(index) { + return index + 1; + } + }), + month: buildMatchFn({ + matchPatterns: matchMonthPatterns, + defaultMatchWidth: 'wide', + parsePatterns: parseMonthPatterns, + defaultParseWidth: 'any' + }), + day: buildMatchFn({ + matchPatterns: matchDayPatterns, + defaultMatchWidth: 'wide', + parsePatterns: parseDayPatterns, + defaultParseWidth: 'any' + }), + dayPeriod: buildMatchFn({ + matchPatterns: matchDayPeriodPatterns, + defaultMatchWidth: 'any', + parsePatterns: parseDayPeriodPatterns, + defaultParseWidth: 'any' + }) +}; +/* harmony default export */ const _lib_match = (match); +;// CONCATENATED MODULE: ./node_modules/date-fns/esm/locale/en-US/index.js + + + + + +/** + * @type {Locale} + * @category Locales + * @summary English locale (United States). + * @language English + * @iso-639-2 eng + * @author Sasha Koss [@kossnocorp]{@link https://github.com/kossnocorp} + * @author Lesha Koss [@leshakoss]{@link https://github.com/leshakoss} + */ +var locale = { + code: 'en-US', + formatDistance: _lib_formatDistance, + formatLong: _lib_formatLong, + formatRelative: _lib_formatRelative, + localize: _lib_localize, + match: _lib_match, + options: { + weekStartsOn: 0 /* Sunday */, + firstWeekContainsDate: 1 + } +}; +/* harmony default export */ const en_US = (locale); +;// CONCATENATED MODULE: ./node_modules/date-fns/esm/_lib/defaultLocale/index.js + +/* harmony default export */ const defaultLocale = (en_US); +;// CONCATENATED MODULE: ./node_modules/date-fns/esm/format/index.js + + + + + + + + + + + // This RegExp consists of three parts separated by `|`: +// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token +// (one of the certain letters followed by `o`) +// - (\w)\1* matches any sequences of the same letter +// - '' matches two quote characters in a row +// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('), +// except a single quote symbol, which ends the sequence. +// Two quote characters do not end the sequence. +// If there is no matching single quote +// then the sequence will continue until the end of the string. +// - . matches any single character unmatched by previous parts of the RegExps +var formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g; + +// This RegExp catches symbols escaped by quotes, and also +// sequences of symbols P, p, and the combinations like `PPPPPPPppppp` +var longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g; +var escapedStringRegExp = /^'([^]*?)'?$/; +var doubleQuoteRegExp = /''/g; +var unescapedLatinCharacterRegExp = /[a-zA-Z]/; + +/** + * @name format + * @category Common Helpers + * @summary Format the date. + * + * @description + * Return the formatted date string in the given format. The result may vary by locale. + * + * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries. + * > See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md + * + * The characters wrapped between two single quotes characters (') are escaped. + * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote. + * (see the last example) + * + * Format of the string is based on Unicode Technical Standard #35: + * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table + * with a few additions (see note 7 below the table). + * + * Accepted patterns: + * | Unit | Pattern | Result examples | Notes | + * |---------------------------------|---------|-----------------------------------|-------| + * | Era | G..GGG | AD, BC | | + * | | GGGG | Anno Domini, Before Christ | 2 | + * | | GGGGG | A, B | | + * | Calendar year | y | 44, 1, 1900, 2017 | 5 | + * | | yo | 44th, 1st, 0th, 17th | 5,7 | + * | | yy | 44, 01, 00, 17 | 5 | + * | | yyy | 044, 001, 1900, 2017 | 5 | + * | | yyyy | 0044, 0001, 1900, 2017 | 5 | + * | | yyyyy | ... | 3,5 | + * | Local week-numbering year | Y | 44, 1, 1900, 2017 | 5 | + * | | Yo | 44th, 1st, 1900th, 2017th | 5,7 | + * | | YY | 44, 01, 00, 17 | 5,8 | + * | | YYY | 044, 001, 1900, 2017 | 5 | + * | | YYYY | 0044, 0001, 1900, 2017 | 5,8 | + * | | YYYYY | ... | 3,5 | + * | ISO week-numbering year | R | -43, 0, 1, 1900, 2017 | 5,7 | + * | | RR | -43, 00, 01, 1900, 2017 | 5,7 | + * | | RRR | -043, 000, 001, 1900, 2017 | 5,7 | + * | | RRRR | -0043, 0000, 0001, 1900, 2017 | 5,7 | + * | | RRRRR | ... | 3,5,7 | + * | Extended year | u | -43, 0, 1, 1900, 2017 | 5 | + * | | uu | -43, 01, 1900, 2017 | 5 | + * | | uuu | -043, 001, 1900, 2017 | 5 | + * | | uuuu | -0043, 0001, 1900, 2017 | 5 | + * | | uuuuu | ... | 3,5 | + * | Quarter (formatting) | Q | 1, 2, 3, 4 | | + * | | Qo | 1st, 2nd, 3rd, 4th | 7 | + * | | QQ | 01, 02, 03, 04 | | + * | | QQQ | Q1, Q2, Q3, Q4 | | + * | | QQQQ | 1st quarter, 2nd quarter, ... | 2 | + * | | QQQQQ | 1, 2, 3, 4 | 4 | + * | Quarter (stand-alone) | q | 1, 2, 3, 4 | | + * | | qo | 1st, 2nd, 3rd, 4th | 7 | + * | | qq | 01, 02, 03, 04 | | + * | | qqq | Q1, Q2, Q3, Q4 | | + * | | qqqq | 1st quarter, 2nd quarter, ... | 2 | + * | | qqqqq | 1, 2, 3, 4 | 4 | + * | Month (formatting) | M | 1, 2, ..., 12 | | + * | | Mo | 1st, 2nd, ..., 12th | 7 | + * | | MM | 01, 02, ..., 12 | | + * | | MMM | Jan, Feb, ..., Dec | | + * | | MMMM | January, February, ..., December | 2 | + * | | MMMMM | J, F, ..., D | | + * | Month (stand-alone) | L | 1, 2, ..., 12 | | + * | | Lo | 1st, 2nd, ..., 12th | 7 | + * | | LL | 01, 02, ..., 12 | | + * | | LLL | Jan, Feb, ..., Dec | | + * | | LLLL | January, February, ..., December | 2 | + * | | LLLLL | J, F, ..., D | | + * | Local week of year | w | 1, 2, ..., 53 | | + * | | wo | 1st, 2nd, ..., 53th | 7 | + * | | ww | 01, 02, ..., 53 | | + * | ISO week of year | I | 1, 2, ..., 53 | 7 | + * | | Io | 1st, 2nd, ..., 53th | 7 | + * | | II | 01, 02, ..., 53 | 7 | + * | Day of month | d | 1, 2, ..., 31 | | + * | | do | 1st, 2nd, ..., 31st | 7 | + * | | dd | 01, 02, ..., 31 | | + * | Day of year | D | 1, 2, ..., 365, 366 | 9 | + * | | Do | 1st, 2nd, ..., 365th, 366th | 7 | + * | | DD | 01, 02, ..., 365, 366 | 9 | + * | | DDD | 001, 002, ..., 365, 366 | | + * | | DDDD | ... | 3 | + * | Day of week (formatting) | E..EEE | Mon, Tue, Wed, ..., Sun | | + * | | EEEE | Monday, Tuesday, ..., Sunday | 2 | + * | | EEEEE | M, T, W, T, F, S, S | | + * | | EEEEEE | Mo, Tu, We, Th, Fr, Sa, Su | | + * | ISO day of week (formatting) | i | 1, 2, 3, ..., 7 | 7 | + * | | io | 1st, 2nd, ..., 7th | 7 | + * | | ii | 01, 02, ..., 07 | 7 | + * | | iii | Mon, Tue, Wed, ..., Sun | 7 | + * | | iiii | Monday, Tuesday, ..., Sunday | 2,7 | + * | | iiiii | M, T, W, T, F, S, S | 7 | + * | | iiiiii | Mo, Tu, We, Th, Fr, Sa, Su | 7 | + * | Local day of week (formatting) | e | 2, 3, 4, ..., 1 | | + * | | eo | 2nd, 3rd, ..., 1st | 7 | + * | | ee | 02, 03, ..., 01 | | + * | | eee | Mon, Tue, Wed, ..., Sun | | + * | | eeee | Monday, Tuesday, ..., Sunday | 2 | + * | | eeeee | M, T, W, T, F, S, S | | + * | | eeeeee | Mo, Tu, We, Th, Fr, Sa, Su | | + * | Local day of week (stand-alone) | c | 2, 3, 4, ..., 1 | | + * | | co | 2nd, 3rd, ..., 1st | 7 | + * | | cc | 02, 03, ..., 01 | | + * | | ccc | Mon, Tue, Wed, ..., Sun | | + * | | cccc | Monday, Tuesday, ..., Sunday | 2 | + * | | ccccc | M, T, W, T, F, S, S | | + * | | cccccc | Mo, Tu, We, Th, Fr, Sa, Su | | + * | AM, PM | a..aa | AM, PM | | + * | | aaa | am, pm | | + * | | aaaa | a.m., p.m. | 2 | + * | | aaaaa | a, p | | + * | AM, PM, noon, midnight | b..bb | AM, PM, noon, midnight | | + * | | bbb | am, pm, noon, midnight | | + * | | bbbb | a.m., p.m., noon, midnight | 2 | + * | | bbbbb | a, p, n, mi | | + * | Flexible day period | B..BBB | at night, in the morning, ... | | + * | | BBBB | at night, in the morning, ... | 2 | + * | | BBBBB | at night, in the morning, ... | | + * | Hour [1-12] | h | 1, 2, ..., 11, 12 | | + * | | ho | 1st, 2nd, ..., 11th, 12th | 7 | + * | | hh | 01, 02, ..., 11, 12 | | + * | Hour [0-23] | H | 0, 1, 2, ..., 23 | | + * | | Ho | 0th, 1st, 2nd, ..., 23rd | 7 | + * | | HH | 00, 01, 02, ..., 23 | | + * | Hour [0-11] | K | 1, 2, ..., 11, 0 | | + * | | Ko | 1st, 2nd, ..., 11th, 0th | 7 | + * | | KK | 01, 02, ..., 11, 00 | | + * | Hour [1-24] | k | 24, 1, 2, ..., 23 | | + * | | ko | 24th, 1st, 2nd, ..., 23rd | 7 | + * | | kk | 24, 01, 02, ..., 23 | | + * | Minute | m | 0, 1, ..., 59 | | + * | | mo | 0th, 1st, ..., 59th | 7 | + * | | mm | 00, 01, ..., 59 | | + * | Second | s | 0, 1, ..., 59 | | + * | | so | 0th, 1st, ..., 59th | 7 | + * | | ss | 00, 01, ..., 59 | | + * | Fraction of second | S | 0, 1, ..., 9 | | + * | | SS | 00, 01, ..., 99 | | + * | | SSS | 000, 001, ..., 999 | | + * | | SSSS | ... | 3 | + * | Timezone (ISO-8601 w/ Z) | X | -08, +0530, Z | | + * | | XX | -0800, +0530, Z | | + * | | XXX | -08:00, +05:30, Z | | + * | | XXXX | -0800, +0530, Z, +123456 | 2 | + * | | XXXXX | -08:00, +05:30, Z, +12:34:56 | | + * | Timezone (ISO-8601 w/o Z) | x | -08, +0530, +00 | | + * | | xx | -0800, +0530, +0000 | | + * | | xxx | -08:00, +05:30, +00:00 | 2 | + * | | xxxx | -0800, +0530, +0000, +123456 | | + * | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | | + * | Timezone (GMT) | O...OOO | GMT-8, GMT+5:30, GMT+0 | | + * | | OOOO | GMT-08:00, GMT+05:30, GMT+00:00 | 2 | + * | Timezone (specific non-locat.) | z...zzz | GMT-8, GMT+5:30, GMT+0 | 6 | + * | | zzzz | GMT-08:00, GMT+05:30, GMT+00:00 | 2,6 | + * | Seconds timestamp | t | 512969520 | 7 | + * | | tt | ... | 3,7 | + * | Milliseconds timestamp | T | 512969520900 | 7 | + * | | TT | ... | 3,7 | + * | Long localized date | P | 04/29/1453 | 7 | + * | | PP | Apr 29, 1453 | 7 | + * | | PPP | April 29th, 1453 | 7 | + * | | PPPP | Friday, April 29th, 1453 | 2,7 | + * | Long localized time | p | 12:00 AM | 7 | + * | | pp | 12:00:00 AM | 7 | + * | | ppp | 12:00:00 AM GMT+2 | 7 | + * | | pppp | 12:00:00 AM GMT+02:00 | 2,7 | + * | Combination of date and time | Pp | 04/29/1453, 12:00 AM | 7 | + * | | PPpp | Apr 29, 1453, 12:00:00 AM | 7 | + * | | PPPppp | April 29th, 1453 at ... | 7 | + * | | PPPPpppp| Friday, April 29th, 1453 at ... | 2,7 | + * Notes: + * 1. "Formatting" units (e.g. formatting quarter) in the default en-US locale + * are the same as "stand-alone" units, but are different in some languages. + * "Formatting" units are declined according to the rules of the language + * in the context of a date. "Stand-alone" units are always nominative singular: + * + * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'` + * + * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'` + * + * 2. Any sequence of the identical letters is a pattern, unless it is escaped by + * the single quote characters (see below). + * If the sequence is longer than listed in table (e.g. `EEEEEEEEEEE`) + * the output will be the same as default pattern for this unit, usually + * the longest one (in case of ISO weekdays, `EEEE`). Default patterns for units + * are marked with "2" in the last column of the table. + * + * `format(new Date(2017, 10, 6), 'MMM') //=> 'Nov'` + * + * `format(new Date(2017, 10, 6), 'MMMM') //=> 'November'` + * + * `format(new Date(2017, 10, 6), 'MMMMM') //=> 'N'` + * + * `format(new Date(2017, 10, 6), 'MMMMMM') //=> 'November'` + * + * `format(new Date(2017, 10, 6), 'MMMMMMM') //=> 'November'` + * + * 3. Some patterns could be unlimited length (such as `yyyyyyyy`). + * The output will be padded with zeros to match the length of the pattern. + * + * `format(new Date(2017, 10, 6), 'yyyyyyyy') //=> '00002017'` + * + * 4. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales. + * These tokens represent the shortest form of the quarter. + * + * 5. The main difference between `y` and `u` patterns are B.C. years: + * + * | Year | `y` | `u` | + * |------|-----|-----| + * | AC 1 | 1 | 1 | + * | BC 1 | 1 | 0 | + * | BC 2 | 2 | -1 | + * + * Also `yy` always returns the last two digits of a year, + * while `uu` pads single digit years to 2 characters and returns other years unchanged: + * + * | Year | `yy` | `uu` | + * |------|------|------| + * | 1 | 01 | 01 | + * | 14 | 14 | 14 | + * | 376 | 76 | 376 | + * | 1453 | 53 | 1453 | + * + * The same difference is true for local and ISO week-numbering years (`Y` and `R`), + * except local week-numbering years are dependent on `options.weekStartsOn` + * and `options.firstWeekContainsDate` (compare [getISOWeekYear]{@link https://date-fns.org/docs/getISOWeekYear} + * and [getWeekYear]{@link https://date-fns.org/docs/getWeekYear}). + * + * 6. Specific non-location timezones are currently unavailable in `date-fns`, + * so right now these tokens fall back to GMT timezones. + * + * 7. These patterns are not in the Unicode Technical Standard #35: + * - `i`: ISO day of week + * - `I`: ISO week of year + * - `R`: ISO week-numbering year + * - `t`: seconds timestamp + * - `T`: milliseconds timestamp + * - `o`: ordinal number modifier + * - `P`: long localized date + * - `p`: long localized time + * + * 8. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years. + * You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md + * + * 9. `D` and `DD` tokens represent days of the year but they are often confused with days of the month. + * You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md + * + * @param {Date|Number} date - the original date + * @param {String} format - the string of tokens + * @param {Object} [options] - an object with options. + * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale} + * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday) + * @param {Number} [options.firstWeekContainsDate=1] - the day of January, which is + * @param {Boolean} [options.useAdditionalWeekYearTokens=false] - if true, allows usage of the week-numbering year tokens `YY` and `YYYY`; + * see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md + * @param {Boolean} [options.useAdditionalDayOfYearTokens=false] - if true, allows usage of the day of year tokens `D` and `DD`; + * see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md + * @returns {String} the formatted date string + * @throws {TypeError} 2 arguments required + * @throws {RangeError} `date` must not be Invalid Date + * @throws {RangeError} `options.locale` must contain `localize` property + * @throws {RangeError} `options.locale` must contain `formatLong` property + * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6 + * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7 + * @throws {RangeError} use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md + * @throws {RangeError} use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md + * @throws {RangeError} use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md + * @throws {RangeError} use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md + * @throws {RangeError} format string contains an unescaped latin alphabet character + * + * @example + * // Represent 11 February 2014 in middle-endian format: + * const result = format(new Date(2014, 1, 11), 'MM/dd/yyyy') + * //=> '02/11/2014' + * + * @example + * // Represent 2 July 2014 in Esperanto: + * import { eoLocale } from 'date-fns/locale/eo' + * const result = format(new Date(2014, 6, 2), "do 'de' MMMM yyyy", { + * locale: eoLocale + * }) + * //=> '2-a de julio 2014' + * + * @example + * // Escape string by single quote characters: + * const result = format(new Date(2014, 6, 2, 15), "h 'o''clock'") + * //=> "3 o'clock" + */ + +function format(dirtyDate, dirtyFormatStr, options) { + var _ref, _options$locale, _ref2, _ref3, _ref4, _options$firstWeekCon, _options$locale2, _options$locale2$opti, _defaultOptions$local, _defaultOptions$local2, _ref5, _ref6, _ref7, _options$weekStartsOn, _options$locale3, _options$locale3$opti, _defaultOptions$local3, _defaultOptions$local4; + requiredArgs(2, arguments); + var formatStr = String(dirtyFormatStr); + var defaultOptions = getDefaultOptions(); + var locale = (_ref = (_options$locale = options === null || options === void 0 ? void 0 : options.locale) !== null && _options$locale !== void 0 ? _options$locale : defaultOptions.locale) !== null && _ref !== void 0 ? _ref : defaultLocale; + var firstWeekContainsDate = toInteger((_ref2 = (_ref3 = (_ref4 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale2 = options.locale) === null || _options$locale2 === void 0 ? void 0 : (_options$locale2$opti = _options$locale2.options) === null || _options$locale2$opti === void 0 ? void 0 : _options$locale2$opti.firstWeekContainsDate) !== null && _ref4 !== void 0 ? _ref4 : defaultOptions.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : 1); + + // Test if weekStartsOn is between 1 and 7 _and_ is not NaN + if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) { + throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively'); + } + var weekStartsOn = toInteger((_ref5 = (_ref6 = (_ref7 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale3 = options.locale) === null || _options$locale3 === void 0 ? void 0 : (_options$locale3$opti = _options$locale3.options) === null || _options$locale3$opti === void 0 ? void 0 : _options$locale3$opti.weekStartsOn) !== null && _ref7 !== void 0 ? _ref7 : defaultOptions.weekStartsOn) !== null && _ref6 !== void 0 ? _ref6 : (_defaultOptions$local3 = defaultOptions.locale) === null || _defaultOptions$local3 === void 0 ? void 0 : (_defaultOptions$local4 = _defaultOptions$local3.options) === null || _defaultOptions$local4 === void 0 ? void 0 : _defaultOptions$local4.weekStartsOn) !== null && _ref5 !== void 0 ? _ref5 : 0); + + // Test if weekStartsOn is between 0 and 6 _and_ is not NaN + if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) { + throw new RangeError('weekStartsOn must be between 0 and 6 inclusively'); + } + if (!locale.localize) { + throw new RangeError('locale must contain localize property'); + } + if (!locale.formatLong) { + throw new RangeError('locale must contain formatLong property'); + } + var originalDate = toDate(dirtyDate); + if (!isValid(originalDate)) { + throw new RangeError('Invalid time value'); + } + + // Convert the date in system timezone to the same date in UTC+00:00 timezone. + // This ensures that when UTC functions will be implemented, locales will be compatible with them. + // See an issue about UTC functions: https://github.com/date-fns/date-fns/issues/376 + var timezoneOffset = getTimezoneOffsetInMilliseconds(originalDate); + var utcDate = subMilliseconds(originalDate, timezoneOffset); + var formatterOptions = { + firstWeekContainsDate: firstWeekContainsDate, + weekStartsOn: weekStartsOn, + locale: locale, + _originalDate: originalDate + }; + var result = formatStr.match(longFormattingTokensRegExp).map(function (substring) { + var firstCharacter = substring[0]; + if (firstCharacter === 'p' || firstCharacter === 'P') { + var longFormatter = format_longFormatters[firstCharacter]; + return longFormatter(substring, locale.formatLong); + } + return substring; + }).join('').match(formattingTokensRegExp).map(function (substring) { + // Replace two single quote characters with one single quote character + if (substring === "''") { + return "'"; + } + var firstCharacter = substring[0]; + if (firstCharacter === "'") { + return cleanEscapedString(substring); + } + var formatter = format_formatters[firstCharacter]; + if (formatter) { + if (!(options !== null && options !== void 0 && options.useAdditionalWeekYearTokens) && isProtectedWeekYearToken(substring)) { + throwProtectedError(substring, dirtyFormatStr, String(dirtyDate)); + } + if (!(options !== null && options !== void 0 && options.useAdditionalDayOfYearTokens) && isProtectedDayOfYearToken(substring)) { + throwProtectedError(substring, dirtyFormatStr, String(dirtyDate)); + } + return formatter(utcDate, substring, locale.localize, formatterOptions); + } + if (firstCharacter.match(unescapedLatinCharacterRegExp)) { + throw new RangeError('Format string contains an unescaped latin alphabet character `' + firstCharacter + '`'); + } + return substring; + }).join(''); + return result; +} +function cleanEscapedString(input) { + var matched = input.match(escapedStringRegExp); + if (!matched) { + return input; + } + return matched[1].replace(doubleQuoteRegExp, "'"); +} +// EXTERNAL MODULE: ./node_modules/react-fast-compare/index.js +var react_fast_compare = __webpack_require__(590); +var react_fast_compare_default = /*#__PURE__*/__webpack_require__.n(react_fast_compare); +;// CONCATENATED MODULE: ./src/form/components/EditableList/js/EditableListForm.js +var EditableListForm_defProp = Object.defineProperty; +var EditableListForm_defProps = Object.defineProperties; +var EditableListForm_getOwnPropDescs = Object.getOwnPropertyDescriptors; +var EditableListForm_getOwnPropSymbols = Object.getOwnPropertySymbols; +var EditableListForm_hasOwnProp = Object.prototype.hasOwnProperty; +var EditableListForm_propIsEnum = Object.prototype.propertyIsEnumerable; +var EditableListForm_defNormalProp = (obj, key, value) => key in obj ? EditableListForm_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var EditableListForm_spreadValues = (a, b) => { + for (var prop in b || (b = {})) + if (EditableListForm_hasOwnProp.call(b, prop)) + EditableListForm_defNormalProp(a, prop, b[prop]); + if (EditableListForm_getOwnPropSymbols) + for (var prop of EditableListForm_getOwnPropSymbols(b)) { + if (EditableListForm_propIsEnum.call(b, prop)) + EditableListForm_defNormalProp(a, prop, b[prop]); + } + return a; +}; +var EditableListForm_spreadProps = (a, b) => EditableListForm_defProps(a, EditableListForm_getOwnPropDescs(b)); +var EditableListForm_objRest = (source, exclude) => { + var target = {}; + for (var prop in source) + if (EditableListForm_hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) + target[prop] = source[prop]; + if (source != null && EditableListForm_getOwnPropSymbols) + for (var prop of EditableListForm_getOwnPropSymbols(source)) { + if (exclude.indexOf(prop) < 0 && EditableListForm_propIsEnum.call(source, prop)) + target[prop] = source[prop]; + } + return target; +}; +var EditableListForm_publicField = (obj, key, value) => { + EditableListForm_defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); + return value; +}; + + + + + + +const _EditableListForm = class _EditableListForm extends external_react_namespaceObject.Component { + static getMainFormValue(components) { + const mainFormValue = new Array(components.length); + components.forEach((component, index) => { + mainFormValue[index] = component.props.value || void 0; + }); + return mainFormValue; + } + constructor(props) { + super(props); + const { + components + } = props; + this.submitButtonRef = (0,external_react_namespaceObject.createRef)(); + this.handleOnChange = this.handleOnChange.bind(this); + this.submitForm = this.submitForm.bind(this); + this.state = { + components, + errors: {}, + mainError: null, + mainFormValue: _EditableListForm.getMainFormValue(components), + refs: [] + }; + } + componentDidMount() { + const { + addValueOnFieldChange, + getMainFormButtonWidth + } = this.props; + this.createRefs(); + if (getMainFormButtonWidth) { + getMainFormButtonWidth( + !addValueOnFieldChange ? this.submitButtonRef.current.clientWidth : 0 + ); + } + } + static getDerivedStateFromProps(nextProps, prevState) { + const state = {}; + const { + components: propsComponents + } = nextProps; + const { + components: stateComponents + } = prevState; + if (!react_fast_compare_default()(propsComponents, stateComponents) && !react_fast_compare_default()( + _EditableListForm.getMainFormValue(propsComponents), + _EditableListForm.getMainFormValue(stateComponents) + )) { + state.mainFormValue = _EditableListForm.getMainFormValue(propsComponents); + state.components = propsComponents; + } + return state; + } + getFormCssClasses() { + const { noLabels } = this.props; + const cssClasses = ["tyk-editable-list__form"]; + if (noLabels) { + cssClasses.push("no-labels"); + } + return cssClasses.join(" "); + } + getButtonClassName() { + const { buttonStyle, displayType } = this.props; + const cssClasses = []; + if (buttonStyle) { + cssClasses.push(buttonStyle); + } + if (displayType) { + cssClasses.push(displayType); + } + return cssClasses.join(" "); + } + getComponentsError(component) { + const { + error, + errors, + mainError + } = this.state; + if (error || mainError) { + errors[component.props.name] = "true"; + } else if (!(error || mainError) && errors[component.props.name] === "true") { + delete errors[component.props.name]; + } + return errors[component.props.name] ? errors[component.props.name].toString() : void 0; + } + createRefs() { + const { components } = this.props; + const refs = []; + components.forEach(() => { + refs.push((0,external_react_namespaceObject.createRef)()); + }); + this.setState({ + refs + }); + } + validateValue(value, props) { + const { mainError, errors } = this.state; + const { error, errorPersist } = this.props; + const validatorsNames = props.validate ? Object.keys(props.validate) : []; + const tempState = { + errors: error || mainError ? {} : Object.assign({}, errors) + }; + let ok = true; + if (errorPersist) { + return tempState; + } + for (let i = 0; i < validatorsNames.length; i += 1) { + const validator = props.validate[validatorsNames[i]]; + if (validator(value)) { + tempState.errors[props.name] = props.validationmessages[validatorsNames[i]]; + ok = false; + break; + } + } + if (ok) { + delete tempState.errors[props.name]; + } + tempState.mainError = null; + return tempState; + } + hasMainFormErrors(errors) { + const { components, errorPersist } = this.props; + const { mainFormValue } = this.state; + const tempState = { + errors: Object.assign({}, errors) + }; + if (errorPersist && mainFormValue.indexOf(void 0) === -1) { + return false; + } + if (Object.keys(tempState.errors).length > 0) { + return true; + } + components.forEach((component, index) => { + tempState.errors = Object.assign( + {}, + tempState.errors, + this.validateValue(mainFormValue[index], component.props).errors + ); + }); + return Object.keys(tempState.errors).length > 0; + } + handleOnChange(component, index, value) { + const { addValueOnFieldChange } = this.props; + let tempState = this.state; + tempState = Object.assign({}, tempState, this.validateValue(value, component.props)); + if (!tempState.errors[component.props.name]) { + tempState.mainFormValue[index] = value; + if (component.props.onChange) { + component.props.onChange(value); + } + } + this.setState((previousState) => Object.assign({}, previousState, tempState), () => { + if (addValueOnFieldChange) { + this.submitForm(); + } + }); + } + resetForm() { + const { refs } = this.state; + const { + components + } = this.props; + refs.forEach((ref) => { + var _a; + if ((_a = ref.current) == null ? void 0 : _a.reset) { + ref.current.reset(); + } + }); + this.setState({ + errors: {}, + mainError: null, + mainFormValue: _EditableListForm.getMainFormValue(components) + }); + } + showMainError(error) { + this.setState({ + mainError: error + }); + } + submitForm() { + const { errors, mainFormValue } = this.state; + const { + errorPersist, + onSubmit, + validate, + validationmessage + } = this.props; + if (errorPersist) { + onSubmit(mainFormValue); + this.resetForm(); + } + if (Object.keys(errors).length === 0 && (onSubmit && typeof onSubmit === "function")) { + if (validate) { + if (validate(mainFormValue)) { + this.showMainError(validationmessage); + } else { + onSubmit(mainFormValue); + this.resetForm(); + } + } else { + onSubmit(mainFormValue); + this.resetForm(); + } + } + } + render() { + const { + addValueOnFieldChange, + components, + buttonName, + disabled, + displayType, + error + } = this.props; + const { + mainError, + refs, + errors + } = this.state; + return /* @__PURE__ */ external_react_default().createElement("div", null, /* @__PURE__ */ external_react_default().createElement("div", { className: this.getFormCssClasses() }, /* @__PURE__ */ external_react_default().createElement(Row_Row, null, components.map((component, index) => { + const ComponentName = component.name; + const _a = component.props, { + onChange, + value + } = _a, rest = EditableListForm_objRest(_a, [ + "onChange", + "value" + ]); + return /* @__PURE__ */ external_react_default().createElement(layout_Column, { size: `md-${component.size || "12"} lg-${component.size || "12"}`, key: component.props.name }, /* @__PURE__ */ external_react_default().createElement( + ComponentName, + EditableListForm_spreadProps(EditableListForm_spreadValues({ + disabled: disabled || component.props.disabled, + onChange: this.handleOnChange.bind(this, component, index) + }, rest), { + label: displayType === "inline" ? "" : component.props.label, + error: this.getComponentsError(component), + ref: refs[index], + value + }) + )); + })), !addValueOnFieldChange ? /* @__PURE__ */ external_react_default().createElement( + "span", + { + className: this.getButtonClassName(), + ref: this.submitButtonRef + }, + /* @__PURE__ */ external_react_default().createElement( + components_Button, + { + disabled: this.hasMainFormErrors(errors), + className: "tyk-editable-list__submit-btn", + onClick: this.submitForm, + theme: "default", + type: "button", + size: displayType === "inline" ? "sm" : "md" + }, + buttonName || "ADD" + ) + ) : null), error || mainError ? /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-editable-list-main-error" }, /* @__PURE__ */ external_react_default().createElement("p", { className: "error-message" }, error || mainError)) : null); + } +}; +EditableListForm_publicField(_EditableListForm, "propTypes", { + addValueOnFieldChange: (external_prop_types_default()).bool, + noLabels: (external_prop_types_default()).bool, + buttonName: (external_prop_types_default()).string, + buttonStyle: (external_prop_types_default()).string, + components: external_prop_types_default().instanceOf(Array), + displayType: (external_prop_types_default()).string, + disabled: (external_prop_types_default()).bool, + getMainFormButtonWidth: (external_prop_types_default()).func, + error: (external_prop_types_default()).string, + errorPersist: (external_prop_types_default()).bool, + onSubmit: (external_prop_types_default()).func, + validate: (external_prop_types_default()).func, + validationmessage: (external_prop_types_default()).string +}); +let EditableListForm = _EditableListForm; + + +;// CONCATENATED MODULE: ./src/form/components/EditableList/index.js +var EditableList_defProp = Object.defineProperty; +var EditableList_defNormalProp = (obj, key, value) => key in obj ? EditableList_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var EditableList_publicField = (obj, key, value) => { + EditableList_defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); + return value; +}; + + + + + + + + + + +const _EditableList = class _EditableList extends external_react_namespaceObject.Component { + static getItemListValue(itemValue) { + let tempValue = null; + if (typeof itemValue === "string") { + tempValue = itemValue; + } + if (Object.prototype.toString.call(itemValue) === "[object Object]") { + tempValue = itemValue.name; + } + if (isDate(itemValue)) { + tempValue = format(itemValue, "dd/MM/yyyy"); + } + return tempValue; + } + static getListItemCssClass(displayType) { + const cssClasses = []; + if (displayType === "inline") { + cssClasses.push("tyk-editable-list-item--inline"); + } + return cssClasses.join(" "); + } + constructor(props) { + super(props); + const { + value + } = this.props; + this.state = { + initialValue: value || "", + value: value || [], + buttonWidth: 0 + }; + this.startIndex = 1; + this.handleFormSubmit = this.handleFormSubmit.bind(this); + this.getMainFormButtonWidth = this.getMainFormButtonWidth.bind(this); + this.dropdownListItemRef = (0,external_react_namespaceObject.createRef)(); + } + static getDerivedStateFromProps(nextProps, prevState) { + const state = {}; + if (nextProps.value && JSON.stringify(nextProps.value) !== JSON.stringify(prevState.initialValue)) { + state.value = nextProps.value || []; + state.initialValue = nextProps.value || ""; + } + return state.value ? state : null; + } + getListItemsCssClass(displayType) { + const { config } = this.props; + const cssClasses = ["tyk-editable-list-items"]; + cssClasses.push(config.displayType || "table"); + if (displayType === "inline") { + cssClasses.push("tyk-editable-list-items--inline"); + } + return cssClasses.join(" "); + } + getFormInputKey() { + this.startIndex += 1; + return this.startIndex; + } + // generate list item value's based on the display types + // table, inline, list + getListItemText(itemData) { + const { config } = this.props; + let value = null; + switch (config.displayType) { + case "list": + case "inline": { + const itemText = itemData.value.reduce((prevValue, itemValue, index) => { + const tempValue = _EditableList.getItemListValue(itemValue); + let separator = ", "; + if (index === itemData.value.length - 1) { + separator = ""; + } + return prevValue + tempValue + separator; + }, ""); + value = itemText; + break; + } + default: + value = /* @__PURE__ */ external_react_default().createElement(Row_Row, null, config.components.map((component, index) => /* @__PURE__ */ external_react_default().createElement( + layout_Column, + { + key: this.getFormInputKey(), + size: `md-${component.size} lg-${component.size}` + }, + _EditableList.getItemListValue(itemData.value[index]) + ))); + break; + } + return value; + } + getMainFormButtonWidth(value) { + this.setState({ + buttonWidth: value + }); + } + setItemEditMode(index) { + const newValues = this.closeListItems(); + this.setState((previousState) => { + const tempState = Object.assign({}, previousState); + tempState.value = newValues; + tempState.value[index].editMode = !tempState.value[index].editMode; + return tempState; + }); + } + isInList(index, itemValue) { + const { value } = this.state; + let ok = false; + value.forEach((item, itemIndex) => { + if (JSON.stringify(item.value) === JSON.stringify(itemValue)) { + if (index >= 0 && itemIndex === index) { + ok = false; + } else { + ok = true; + } + } + }); + return ok; + } + addValues(newValue) { + const { value } = this.state; + const { config } = this.props; + const itemValue = { + editMode: false, + value: newValue + }; + const tempState = { + value: value.slice(0) + }; + if (config.children) { + itemValue.children = []; + } + tempState.value.push(itemValue); + return tempState; + } + removeListItem(index) { + let removedItem; + this.setState((previousState) => { + const valueArr = previousState.value.slice(0); + removedItem = valueArr.splice(index, 1); + return { + value: valueArr + }; + }, () => { + this.triggerOnChange(index, removedItem, null); + }); + } + handleFormSubmit(value) { + const tempState = this.addValues(value); + this.setState((previousState) => Object.assign({}, previousState, tempState), () => { + this.triggerOnChange(tempState.value.length - 1, null, value); + }); + } + handleItemUpdate(index, value) { + let prevValue; + this.setState((previousState) => { + const tempState = Object.assign({}, previousState); + prevValue = (0,external_immutable_namespaceObject.fromJS)(tempState.value[index].value).toJS(); + tempState.value[index].value = value; + tempState.value[index].editMode = false; + return tempState; + }, () => { + this.triggerOnChange(index, prevValue, value); + }); + } + handleChildrenOnChange(index, value) { + let prevValue; + this.setState((previousState) => { + const tempState = Object.assign({}, previousState); + prevValue = (0,external_immutable_namespaceObject.fromJS)(tempState.value[index].children).toJS(); + tempState.value[index].children = value; + return tempState; + }, () => { + this.triggerOnChange(index, prevValue, value); + }); + } + closeListItems() { + const { value } = this.state; + const newValues = value.map((itemValue) => { + const tempItemValue = Object.assign({}, itemValue); + if (tempItemValue.editMode) { + tempItemValue.editMode = false; + return tempItemValue; + } + return tempItemValue; + }); + return newValues; + } + triggerOnChange(index, prevValue, nextValue) { + const { onChange } = this.props; + const { value } = this.state; + if (onChange && typeof onChange === "function") { + onChange(value.length ? value : null, index, prevValue, nextValue); + } + } + genListItem(itemData, index) { + const { config, disabled } = this.props; + const { buttonWidth, value } = this.state; + const clonedComponents = (0,external_immutable_namespaceObject.fromJS)(config.components).toJS(); + itemData.value.forEach((itemValue, itemIndex) => { + clonedComponents[itemIndex].props.value = itemValue; + }); + return /* @__PURE__ */ external_react_default().createElement( + "li", + { + key: index, + className: _EditableList.getListItemCssClass(config.displayType), + ref: this.dropdownListItemRef + }, + /* @__PURE__ */ external_react_default().createElement( + "div", + { + className: `tyk-editable-list-item__text ${config.displayType || "table"}${itemData.editMode ? " edit-mode-wrapper" : ""}` + }, + !itemData.editMode ? /* @__PURE__ */ external_react_default().createElement(external_react_namespaceObject.Fragment, null, this.getListItemText(itemData, index), /* @__PURE__ */ external_react_default().createElement( + "div", + { + className: "tyk-editable-list-item__controls", + style: { + display: "block", + width: config.displayType === "inline" ? "auto" : `${buttonWidth + 60}px` + } + }, + /* @__PURE__ */ external_react_default().createElement("button", { disabled, type: "button", className: "tyk-editable-list-action__button", onClick: this.setItemEditMode.bind(this, index) }, /* @__PURE__ */ external_react_default().createElement(components_Icon, { type: "edit" })), + /* @__PURE__ */ external_react_default().createElement("button", { disabled, type: "button", className: "tyk-editable-list-action__button", onClick: this.removeListItem.bind(this, index) }, /* @__PURE__ */ external_react_default().createElement(components_Icon, { type: "trash" })) + )) : /* @__PURE__ */ external_react_default().createElement(external_react_namespaceObject.Fragment, null, /* @__PURE__ */ external_react_default().createElement( + EditableListForm, + { + buttonName: "Update", + noLabels: config.noLabels, + disabled, + displayType: config.displayType, + components: clonedComponents, + onSubmit: this.handleItemUpdate.bind(this, index), + validate: this.isInList.bind(this, index), + validationmessage: "This value is already in the list" + } + ), /* @__PURE__ */ external_react_default().createElement("button", { type: "button", className: "tyk-editable-list-action__button on-edit", onClick: this.removeListItem.bind(this, index) }, /* @__PURE__ */ external_react_default().createElement(components_Icon, { type: "trash" }))) + ), + config.children ? /* @__PURE__ */ external_react_default().createElement( + _EditableList, + { + disabled, + onChange: this.handleChildrenOnChange.bind(this, index), + config: config.children.config, + value: value[index] && value[index].children || [] + } + ) : null + ); + } + genList() { + const { config } = this.props; + const { buttonWidth, value } = this.state; + if (!value || value.length === 0) { + return null; + } + return /* @__PURE__ */ external_react_default().createElement(external_react_namespaceObject.Fragment, null, config.displayType === "table" || !config.displayType ? /* @__PURE__ */ external_react_default().createElement( + "div", + { + className: "tyk-editable-list__header", + style: { + paddingRight: `${buttonWidth + 60}px` + } + }, + /* @__PURE__ */ external_react_default().createElement(Row_Row, null, config.components.map((component, index) => /* @__PURE__ */ external_react_default().createElement(layout_Column, { key: component.props.label || index, size: `md-${component.size || 12} lg-${component.size || 12}` }, component.props.label))) + ) : null, /* @__PURE__ */ external_react_default().createElement("ul", { className: this.getListItemsCssClass(config.displayType) }, value.map((itemData, index) => this.genListItem(itemData, index)))); + } + render() { + const { + addValueOnFieldChange, + config, + error, + disabled, + label + } = this.props; + const appendToElement = document.querySelector(config.appendTo) || document.querySelector("body"); + return /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-editable-list" }, label ? /* @__PURE__ */ external_react_default().createElement("label", null, label) : null, /* @__PURE__ */ external_react_default().createElement( + EditableListForm, + { + addValueOnFieldChange, + components: config.components, + buttonName: config.formButtonTitle, + buttonStyle: config.formButtonStyle, + disabled, + error, + errorPersist: !!error, + noLabels: config.noLabels, + onSubmit: this.handleFormSubmit, + validate: this.isInList.bind(this, -1), + validationmessage: "This value is already in the list", + getMainFormButtonWidth: this.getMainFormButtonWidth + } + ), config.appendTo ? external_react_dom_default().createPortal( + this.genList(), + appendToElement + ) : this.genList()); + } +}; +EditableList_publicField(_EditableList, "propTypes", { + addValueOnFieldChange: (external_prop_types_default()).bool, + disabled: (external_prop_types_default()).bool, + error: (external_prop_types_default()).string, + config: external_prop_types_default().instanceOf(Object), + onChange: (external_prop_types_default()).func, + label: external_prop_types_default().oneOfType([ + external_prop_types_default().arrayOf((external_prop_types_default()).node), + (external_prop_types_default()).node, + (external_prop_types_default()).element, + (external_prop_types_default()).func, + (external_prop_types_default()).string + ]), + value: external_prop_types_default().oneOfType([ + external_prop_types_default().instanceOf(Array), + external_prop_types_default().instanceOf(Object) + ]) +}); +let EditableList = _EditableList; + + +;// CONCATENATED MODULE: ./src/form/components/EditableList2/Header.js + + + +const Header_Header = ({ + label, + addButtonName, + onAddRow, + disabled, + readOnly +}) => /* @__PURE__ */ external_react_default().createElement("div", { className: "editable-list__header" }, label ? /* @__PURE__ */ external_react_default().createElement("label", null, label) : null, !disabled && !readOnly && /* @__PURE__ */ external_react_default().createElement( + components_Button, + { + theme: "primary rounded-corners", + onClick: onAddRow + }, + addButtonName || "Add" +)); +Header_Header.propTypes = { + disabled: (external_prop_types_default()).bool, + readOnly: (external_prop_types_default()).bool, + onAddRow: (external_prop_types_default()).func, + addButtonName: (external_prop_types_default()).string, + label: external_prop_types_default().oneOfType([ + (external_prop_types_default()).string, + (external_prop_types_default()).element, + (external_prop_types_default()).node + ]) +}; +/* harmony default export */ const EditableList2_Header = (Header_Header); + +;// CONCATENATED MODULE: ./src/form/components/EditableList2/ListHeader.js + + +const ListHeader = ({ + fields, + readOnly +}) => /* @__PURE__ */ external_react_default().createElement("li", { className: "editable-list__item editable-list__item-header" }, fields.map((field) => { + var _a; + return /* @__PURE__ */ external_react_default().createElement("div", { className: `editable-list__item-cell editable-list__item--size-${(field == null ? void 0 : field.size) || 12}` }, (_a = field == null ? void 0 : field.props) == null ? void 0 : _a.label); +}), /* @__PURE__ */ external_react_default().createElement("div", { className: `editable-list__item-cell editable-list__item-action ${readOnly && "editable-list__item-action--read-only"}` }, "Delete")); +ListHeader.propTypes = { + fields: external_prop_types_default().instanceOf(Array), + readOnly: (external_prop_types_default()).bool +}; +/* harmony default export */ const EditableList2_ListHeader = (ListHeader); + +;// CONCATENATED MODULE: ./src/form/components/EditableList2/FieldsList.js +var FieldsList_defProp = Object.defineProperty; +var FieldsList_defProps = Object.defineProperties; +var FieldsList_getOwnPropDescs = Object.getOwnPropertyDescriptors; +var FieldsList_getOwnPropSymbols = Object.getOwnPropertySymbols; +var FieldsList_hasOwnProp = Object.prototype.hasOwnProperty; +var FieldsList_propIsEnum = Object.prototype.propertyIsEnumerable; +var FieldsList_defNormalProp = (obj, key, value) => key in obj ? FieldsList_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var FieldsList_spreadValues = (a, b) => { + for (var prop in b || (b = {})) + if (FieldsList_hasOwnProp.call(b, prop)) + FieldsList_defNormalProp(a, prop, b[prop]); + if (FieldsList_getOwnPropSymbols) + for (var prop of FieldsList_getOwnPropSymbols(b)) { + if (FieldsList_propIsEnum.call(b, prop)) + FieldsList_defNormalProp(a, prop, b[prop]); + } + return a; +}; +var FieldsList_spreadProps = (a, b) => FieldsList_defProps(a, FieldsList_getOwnPropDescs(b)); + + + +const FieldsList = ({ + fields, + disabled, + readOnly, + errors, + components, + onChange, + onDelete, + value, + rowIndex +}) => /* @__PURE__ */ external_react_default().createElement("li", { className: "editable-list__item" }, components.map((Component, index) => { + var _a, _b, _c; + let field = fields[index]; + let tempField = typeof field === "function" ? field(rowIndex, index) : field; + return ( + /* eslint-disable-next-line */ + /* @__PURE__ */ external_react_default().createElement("div", { className: `editable-list__item-cell editable-list__item--size-${((_a = fields[index]) == null ? void 0 : _a.size) || 12}` }, /* @__PURE__ */ external_react_default().createElement( + Component, + FieldsList_spreadProps(FieldsList_spreadValues({}, tempField == null ? void 0 : tempField.props), { + label: "", + value: value[index], + onChange: onChange.bind(null, index), + error: errors == null ? void 0 : errors[index], + disabled: disabled || ((_b = tempField == null ? void 0 : tempField.props) == null ? void 0 : _b.disabled), + readOnly: readOnly || ((_c = tempField == null ? void 0 : tempField.props) == null ? void 0 : _c.readOnly) + }) + )) + ); +}), /* @__PURE__ */ external_react_default().createElement("div", { className: `editable-list__item-cell editable-list__item-action ${readOnly && "editable-list__item-action--read-only"}` }, /* @__PURE__ */ external_react_default().createElement( + components_Button, + { + iconOnly: true, + iconType: "trash-alt", + theme: "primary-link", + onClick: onDelete, + disabled: readOnly || disabled + } +))); +FieldsList.propTypes = { + disabled: (external_prop_types_default()).bool, + readOnly: (external_prop_types_default()).bool, + rowIndex: external_prop_types_default().oneOfType([ + (external_prop_types_default()).string, + (external_prop_types_default()).number + ]), + fields: external_prop_types_default().instanceOf(Array), + errors: external_prop_types_default().instanceOf(Array), + components: external_prop_types_default().instanceOf(Array), + value: external_prop_types_default().instanceOf(Array), + onChange: (external_prop_types_default()).func, + onDelete: (external_prop_types_default()).func +}; +/* harmony default export */ const EditableList2_FieldsList = (FieldsList); + +;// CONCATENATED MODULE: ./src/form/components/EditableList2/validate-values.js +const validateValues = (fields, rowValues) => { + var _a; + return (_a = rowValues || [[void 0, void 0]]) == null ? void 0 : _a.map( + (colValue) => colValue == null ? void 0 : colValue.map( + (value, index) => { + var _a2, _b; + return ((_b = (_a2 = fields == null ? void 0 : fields[index]) == null ? void 0 : _a2.props) == null ? void 0 : _b.validate) && fields[index].props.validate(value); + } + ) + ); +}; +/* harmony default export */ const validate_values = (validateValues); + +;// CONCATENATED MODULE: ./src/form/components/EditableList2/with-validation.js +var with_validation_defProp = Object.defineProperty; +var with_validation_defProps = Object.defineProperties; +var with_validation_getOwnPropDescs = Object.getOwnPropertyDescriptors; +var with_validation_getOwnPropSymbols = Object.getOwnPropertySymbols; +var with_validation_hasOwnProp = Object.prototype.hasOwnProperty; +var with_validation_propIsEnum = Object.prototype.propertyIsEnumerable; +var with_validation_defNormalProp = (obj, key, value) => key in obj ? with_validation_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var with_validation_spreadValues = (a, b) => { + for (var prop in b || (b = {})) + if (with_validation_hasOwnProp.call(b, prop)) + with_validation_defNormalProp(a, prop, b[prop]); + if (with_validation_getOwnPropSymbols) + for (var prop of with_validation_getOwnPropSymbols(b)) { + if (with_validation_propIsEnum.call(b, prop)) + with_validation_defNormalProp(a, prop, b[prop]); + } + return a; +}; +var with_validation_spreadProps = (a, b) => with_validation_defProps(a, with_validation_getOwnPropDescs(b)); +var with_validation_objRest = (source, exclude) => { + var target = {}; + for (var prop in source) + if (with_validation_hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) + target[prop] = source[prop]; + if (source != null && with_validation_getOwnPropSymbols) + for (var prop of with_validation_getOwnPropSymbols(source)) { + if (exclude.indexOf(prop) < 0 && with_validation_propIsEnum.call(source, prop)) + target[prop] = source[prop]; + } + return target; +}; + +const withValidation = (Component) => (_a) => { + var _b = _a, { + onChange, + validate, + error + } = _b, rest = with_validation_objRest(_b, [ + "onChange", + "validate", + "error" + ]); + const [internalError, setInternalError] = (0,external_react_namespaceObject.useState)(null); + const onFieldChange = (0,external_react_namespaceObject.useCallback)((event) => { + const value = (event == null ? void 0 : event.target) ? ["radio", "checkbox"].includes(event.target.type) ? event.target.checked : event == null ? void 0 : event.target.value : event; + let isValid = true; + if (validate && typeof validate === "function") { + const errorMsg = validate(value); + isValid = !errorMsg; + setInternalError(errorMsg); + } + onChange(value, isValid); + }, [validate, onChange]); + return /* @__PURE__ */ external_react_default().createElement(Component, with_validation_spreadProps(with_validation_spreadValues({}, rest), { onChange: onFieldChange, error: internalError || error })); +}; +/* harmony default export */ const with_validation = (withValidation); + +;// CONCATENATED MODULE: ./src/form/components/EditableList2/index.js + + + + + + + +let id = 1; +const getUID = (prefix) => `${prefix}-${id++}`; +const EditableList2 = ({ + addButtonName, + disabled, + readOnly, + fields, + label, + error, + value = [], + onChange = () => { + }, + hideOnEmpty = true, + wrapperClassName = "" +}) => { + const [internalErrors, setInteranlErrors] = (0,external_react_namespaceObject.useState)(null); + const updateRowValue = (rowIndex, fieldIndex, componentValue, isValid) => { + var _a; + const tempValueArr = !value ? [] : [...value]; + if (!value) { + tempValueArr[rowIndex] = [...new Array(fields.length)]; + tempValueArr[rowIndex][fieldIndex] = componentValue; + } else { + const tempValue = [...tempValueArr[rowIndex]]; + tempValue[fieldIndex] = componentValue; + tempValueArr[rowIndex] = tempValue; + tempValueArr[rowIndex].id = value[rowIndex].id; + } + if (((_a = internalErrors == null ? void 0 : internalErrors[rowIndex]) == null ? void 0 : _a[fieldIndex]) && isValid) { + const tempErrors = [...internalErrors]; + const tempFieldError = [...tempErrors[rowIndex]]; + tempFieldError[fieldIndex] = null; + tempErrors[rowIndex] = tempFieldError; + setInteranlErrors(tempErrors); + } + onChange(tempValueArr); + }; + const hasErrors = (errors) => { + var _a; + return Boolean((_a = errors == null ? void 0 : errors.flat()) == null ? void 0 : _a.filter(Boolean).length); + }; + const Components = (0,external_react_namespaceObject.useMemo)( + () => fields.map((field) => { + let tempField = typeof field === "function" ? field() : field; + return with_validation((tempField == null ? void 0 : tempField.component) || /* @__PURE__ */ external_react_default().createElement((external_react_default()).Fragment, null)); + }), + [] + ); + const onAddRow = () => { + const errors = validate_values(fields, value); + if (hasErrors(errors)) { + setInteranlErrors(errors); + return; + } + const newValue = [...new Array(fields.length)]; + newValue.id = getUID("row"); + onChange([ + ...value && value, + newValue + ]); + }; + const deleteRow = (index) => { + if (!value) { + return; + } + const tempValue = [...value]; + tempValue.splice(index, 1); + onChange(tempValue); + }; + return /* @__PURE__ */ external_react_default().createElement("div", { className: `editable-list__wrapper tyk-form-group tyk-form-group--default ${error ? "has-error" : ""} ${wrapperClassName}` }, /* @__PURE__ */ external_react_default().createElement( + EditableList2_Header, + { + disabled, + readOnly, + label, + addButtonName, + onAddRow + } + ), (value == null ? void 0 : value.length) || !hideOnEmpty ? /* @__PURE__ */ external_react_default().createElement("ul", { className: "editable-list__list" }, (value || [[]]).map((v, i) => /* @__PURE__ */ external_react_default().createElement((external_react_default()).Fragment, null, /* @__PURE__ */ external_react_default().createElement( + EditableList2_FieldsList, + { + key: v.id || i, + rowIndex: i, + disabled, + readOnly, + fields, + onChange: updateRowValue.bind(null, i), + onDelete: deleteRow.bind(null, i), + value: v, + errors: internalErrors == null ? void 0 : internalErrors[i], + components: Components + } + ))), /* @__PURE__ */ external_react_default().createElement(EditableList2_ListHeader, { fields, readOnly })) : null, error && error !== "true" && error !== "false" ? /* @__PURE__ */ external_react_default().createElement("p", { className: "tyk-form-control__error-message" }, error) : null); +}; +EditableList2.propTypes = { + /** Sets Editable list in edit mode. + * If enabled all fields are disabled, the add button is hidden and delete button is disabled + * */ + disabled: (external_prop_types_default()).bool, + /** Sets Editable list in read only mode. + * If enabled all fields are displaying just the value, + * the add button is hidden and delete button is disabled + */ + readOnly: (external_prop_types_default()).bool, + /** Name of the Add button. By default has 'Add value' */ + addButtonName: (external_prop_types_default()).string, + /** Label of Editable list, is displayed above the list and inline with the Add button */ + label: external_prop_types_default().oneOfType([ + (external_prop_types_default()).string, + (external_prop_types_default()).element, + (external_prop_types_default()).node + ]), + /** Array of form elements that you want the list to have + * Each field is an object points to the Form element component that you want to use, + * the props you want to apply on it, + * and the size (as in width, it's like columns system, between 1 and 12) + * Example: + * ... + * fields={[ + { + component: Input2, + styles: { + width: "200px", + }, + size: 4, + props: { + name: 'input', + label: 'Claim name', + theme: 'default rounded-corners', + placeholder: 'Enter claim name', + validate: formikRequired('This field is required') + } + }, + { + component: Combobox2, + size: 8, + props: comboboxProps + } + ]} + */ + fields: external_prop_types_default().instanceOf(Array), + /** onChange function is called everytime the value of editable list changes */ + onChange: (external_prop_types_default()).func, + /** value of editable list, wich is an Array (List of row values) + * of Arrays (List of column values, + * each column will have the value format depending on the component type) + */ + value: external_prop_types_default().oneOfType([ + external_prop_types_default().instanceOf(Object), + external_prop_types_default().instanceOf(Array) + ]), + error: (external_prop_types_default()).string, + hideOnEmpty: (external_prop_types_default()).bool, + wrapperClassName: (external_prop_types_default()).string +}; +/* harmony default export */ const components_EditableList2 = (EditableList2); + +;// CONCATENATED MODULE: ./src/form/components/FileInput/index.js +var FileInput_defProp = Object.defineProperty; +var FileInput_defProps = Object.defineProperties; +var FileInput_getOwnPropDescs = Object.getOwnPropertyDescriptors; +var FileInput_getOwnPropSymbols = Object.getOwnPropertySymbols; +var FileInput_hasOwnProp = Object.prototype.hasOwnProperty; +var FileInput_propIsEnum = Object.prototype.propertyIsEnumerable; +var FileInput_defNormalProp = (obj, key, value) => key in obj ? FileInput_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var FileInput_spreadValues = (a, b) => { + for (var prop in b || (b = {})) + if (FileInput_hasOwnProp.call(b, prop)) + FileInput_defNormalProp(a, prop, b[prop]); + if (FileInput_getOwnPropSymbols) + for (var prop of FileInput_getOwnPropSymbols(b)) { + if (FileInput_propIsEnum.call(b, prop)) + FileInput_defNormalProp(a, prop, b[prop]); + } + return a; +}; +var FileInput_spreadProps = (a, b) => FileInput_defProps(a, FileInput_getOwnPropDescs(b)); +var FileInput_objRest = (source, exclude) => { + var target = {}; + for (var prop in source) + if (FileInput_hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) + target[prop] = source[prop]; + if (source != null && FileInput_getOwnPropSymbols) + for (var prop of FileInput_getOwnPropSymbols(source)) { + if (exclude.indexOf(prop) < 0 && FileInput_propIsEnum.call(source, prop)) + target[prop] = source[prop]; + } + return target; +}; +var FileInput_publicField = (obj, key, value) => { + FileInput_defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); + return value; +}; + + + +class FileInput extends external_react_namespaceObject.Component { + constructor(props) { + super(props); + this.handleOnChange = this.handleOnChange.bind(this); + this.clearValue = this.clearValue.bind(this); + this.fileInputRef = (0,external_react_namespaceObject.createRef)(); + } + getCssClasses() { + const { + error, + theme, + labelwidth, + wrapperClassName = "" + } = this.props; + const cssClasses = [wrapperClassName, "tyk-form-group"]; + const themes = theme ? theme.split(" ") : []; + if (themes.length) { + themes.forEach((iTheme) => { + cssClasses.push(`tyk-form-group--${iTheme}`); + }); + } + if (labelwidth) { + cssClasses.push("tyk-form-group--label-has-width"); + } + if (error) { + cssClasses.push("has-error"); + } + return cssClasses.join(" "); + } + getLabelStyles() { + const { labelwidth } = this.props; + const styles = {}; + if (labelwidth) { + styles.flexBasis = labelwidth; + } + return styles; + } + getNonLabelWidth() { + const { labelwidth } = this.props; + const styles = {}; + if (labelwidth) { + styles.flexBasis = `calc(100% - ${labelwidth} - 20px)`; + } + return styles; + } + getFileInputError() { + const { error } = this.props; + return error && error !== "true" && error !== "false" ? /* @__PURE__ */ external_react_default().createElement( + "p", + { + className: "tyk-form-control__error-message" + }, + error + ) : null; + } + getFileInputComponent() { + const _a = this.props, { + accept, + value: omitValue, + onChange + } = _a, rest = FileInput_objRest(_a, [ + "accept", + "value", + "onChange" + ]); + return /* @__PURE__ */ external_react_default().createElement( + "div", + { + className: "tyk-file-input__wrapper", + style: this.getNonLabelWidth() + }, + /* @__PURE__ */ external_react_default().createElement( + "input", + FileInput_spreadProps(FileInput_spreadValues({ + accept, + className: "tyk-form-control" + }, rest), { + onChange: this.handleOnChange, + ref: this.fileInputRef, + type: "file" + }) + ), + this.fileInputRef.current && this.fileInputRef.current.files.length > 0 ? /* @__PURE__ */ external_react_default().createElement( + "button", + { + onClick: this.clearValue, + type: "button" + }, + /* @__PURE__ */ external_react_default().createElement(components_Icon, { type: "times" }) + ) : null + ); + } + clearValue() { + const { onChange } = this.props; + this.fileInputRef.current.value = ""; + onChange(""); + } + handleOnChange(e) { + const { onChange } = this.props; + onChange(e.target.files); + } + // eslint-disable-next-line class-methods-use-this + reset() { + } + render() { + const { + id, + label, + note + } = this.props; + return /* @__PURE__ */ external_react_default().createElement(external_react_namespaceObject.Fragment, null, /* @__PURE__ */ external_react_default().createElement("div", { className: this.getCssClasses() }, label ? /* @__PURE__ */ external_react_default().createElement("label", { htmlFor: id, style: this.getLabelStyles() }, label) : null, /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-form-control__wrapper" }, this.getFileInputComponent(), note ? /* @__PURE__ */ external_react_default().createElement("p", { className: "tyk-form-control__help-block" }, note) : null), this.getFileInputError())); + } +} +FileInput_publicField(FileInput, "propTypes", { + accept: (external_prop_types_default()).string, + disabled: (external_prop_types_default()).bool, + id: (external_prop_types_default()).string, + error: external_prop_types_default().oneOfType([ + (external_prop_types_default()).string, + (external_prop_types_default()).bool + ]), + label: external_prop_types_default().oneOfType([ + external_prop_types_default().arrayOf((external_prop_types_default()).node), + (external_prop_types_default()).node, + (external_prop_types_default()).element, + (external_prop_types_default()).func, + (external_prop_types_default()).string + ]), + labelwidth: (external_prop_types_default()).string, + name: (external_prop_types_default()).string, + note: (external_prop_types_default()).string, + onChange: (external_prop_types_default()).func, + placeholder: (external_prop_types_default()).string, + theme: (external_prop_types_default()).string, + value: external_prop_types_default().instanceOf(Object), + wrapperClassName: (external_prop_types_default()).string +}); + +;// CONCATENATED MODULE: ./src/form/components/Input/index.js +var Input_defProp = Object.defineProperty; +var Input_defProps = Object.defineProperties; +var Input_getOwnPropDescs = Object.getOwnPropertyDescriptors; +var Input_getOwnPropSymbols = Object.getOwnPropertySymbols; +var Input_hasOwnProp = Object.prototype.hasOwnProperty; +var Input_propIsEnum = Object.prototype.propertyIsEnumerable; +var Input_defNormalProp = (obj, key, value) => key in obj ? Input_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var Input_spreadValues = (a, b) => { + for (var prop in b || (b = {})) + if (Input_hasOwnProp.call(b, prop)) + Input_defNormalProp(a, prop, b[prop]); + if (Input_getOwnPropSymbols) + for (var prop of Input_getOwnPropSymbols(b)) { + if (Input_propIsEnum.call(b, prop)) + Input_defNormalProp(a, prop, b[prop]); + } + return a; +}; +var Input_spreadProps = (a, b) => Input_defProps(a, Input_getOwnPropDescs(b)); +var Input_objRest = (source, exclude) => { + var target = {}; + for (var prop in source) + if (Input_hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) + target[prop] = source[prop]; + if (source != null && Input_getOwnPropSymbols) + for (var prop of Input_getOwnPropSymbols(source)) { + if (exclude.indexOf(prop) < 0 && Input_propIsEnum.call(source, prop)) + target[prop] = source[prop]; + } + return target; +}; +var Input_publicField = (obj, key, value) => { + Input_defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); + return value; +}; + + +const _Input = class _Input extends external_react_namespaceObject.Component { + static getAddon(content) { + return /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-input-group__addon" }, content); + } + constructor(props) { + super(props); + const { + value + } = this.props; + this.state = { + initValue: value, + stateValue: value + }; + this.handleOnChange = this.handleOnChange.bind(this); + } + componentDidUpdate(prevProps) { + const { + isfield, + value, + onChange + } = this.props; + if (!isfield && prevProps.value !== value) { + this.setState({ + stateValue: value + }, () => { + if (onChange) { + onChange(value); + } + }); + } + } + getLabelStyles() { + const { labelwidth } = this.props; + const styles = {}; + if (labelwidth) { + styles.flexBasis = labelwidth; + } + return styles; + } + getNonLabelWidth() { + const { labelwidth } = this.props; + const styles = {}; + if (labelwidth) { + styles.flexBasis = `calc(100% - ${labelwidth} - 20px)`; + } + return styles; + } + getInputError() { + const { error } = this.props; + return error && error !== "true" && error !== "false" ? /* @__PURE__ */ external_react_default().createElement( + "p", + { + className: "tyk-form-control__error-message" + }, + error + ) : null; + } + getCssClasses() { + const { + error, + theme, + labelwidth, + inputgroupaddonleft, + inputgroupaddonright + } = this.props; + const cssClasses = ["tyk-form-group"]; + const themes = theme ? theme.split(" ") : []; + if (themes.length) { + themes.forEach((iTheme) => { + cssClasses.push(`tyk-form-group--${iTheme}`); + }); + } + if (inputgroupaddonleft) { + cssClasses.push("tyk-form-group--addon-left"); + } + if (inputgroupaddonright) { + cssClasses.push("tyk-form-group--addon-right"); + } + if (labelwidth) { + cssClasses.push("tyk-form-group--label-has-width"); + } + if (error) { + cssClasses.push("has-error"); + } + return cssClasses.join(" "); + } + getInputGroupAddon() { + const { + inputgroupaddonleft, + inputgroupaddonright + } = this.props; + return /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-input-group" }, inputgroupaddonleft ? _Input.getAddon(inputgroupaddonleft) : null, this.getInputComponent(), inputgroupaddonright ? _Input.getAddon(inputgroupaddonright) : null); + } + getInputComponent() { + const _a = this.props, { + isfield, + onChange, + value + } = _a, rest = Input_objRest(_a, [ + "isfield", + "onChange", + "value" + ]); + const { stateValue } = this.state; + return /* @__PURE__ */ external_react_default().createElement( + "input", + Input_spreadProps(Input_spreadValues({ + autoComplete: "off", + className: "tyk-form-control" + }, rest), { + onChange: this.handleOnChange, + value: isfield ? value : stateValue + }) + ); + } + reset() { + const { initValue } = this.state; + this.setState({ + stateValue: initValue + }); + } + handleOnChange(e) { + const { onChange, isfield } = this.props; + const inputValue = e.target.value; + if (!isfield) { + this.setState({ + stateValue: inputValue + }, () => { + if (onChange) { + onChange(inputValue); + } + }); + } else { + onChange(inputValue); + } + } + render() { + const { + label, + id, + inputgroupaddonleft, + inputgroupaddonright, + note, + readOnly, + value + } = this.props; + return /* @__PURE__ */ external_react_default().createElement("div", { className: this.getCssClasses() }, label ? /* @__PURE__ */ external_react_default().createElement("label", { htmlFor: id, style: this.getLabelStyles() }, label) : null, !readOnly && /* @__PURE__ */ external_react_default().createElement( + "div", + { + className: "tyk-form-control__wrapper", + style: this.getNonLabelWidth() + }, + inputgroupaddonleft || inputgroupaddonright ? this.getInputGroupAddon() : this.getInputComponent(), + note ? /* @__PURE__ */ external_react_default().createElement("p", { className: "tyk-form-control__help-block" }, note) : null, + this.getInputError() + ), readOnly && /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-form-control--readonly" }, value || "-")); + } +}; +Input_publicField(_Input, "propTypes", { + disabled: (external_prop_types_default()).bool, + readOnly: (external_prop_types_default()).bool, + id: (external_prop_types_default()).string, + isfield: (external_prop_types_default()).bool, + error: external_prop_types_default().oneOfType([ + (external_prop_types_default()).string, + (external_prop_types_default()).bool + ]), + inputgroupaddonleft: external_prop_types_default().oneOfType([ + (external_prop_types_default()).element, + (external_prop_types_default()).node, + (external_prop_types_default()).string + ]), + inputgroupaddonright: external_prop_types_default().oneOfType([ + (external_prop_types_default()).element, + (external_prop_types_default()).node, + (external_prop_types_default()).string + ]), + label: external_prop_types_default().oneOfType([ + (external_prop_types_default()).string, + (external_prop_types_default()).element, + (external_prop_types_default()).node + ]), + labelwidth: (external_prop_types_default()).string, + name: (external_prop_types_default()).string, + note: (external_prop_types_default()).string, + onChange: (external_prop_types_default()).func, + placeholder: (external_prop_types_default()).string, + theme: (external_prop_types_default()).string, + value: external_prop_types_default().oneOfType([ + (external_prop_types_default()).number, + (external_prop_types_default()).string + ]) +}); +let Input = _Input; + + +;// CONCATENATED MODULE: ./src/form/components/Input2/index.js +var Input2_defProp = Object.defineProperty; +var Input2_defProps = Object.defineProperties; +var Input2_getOwnPropDescs = Object.getOwnPropertyDescriptors; +var Input2_getOwnPropSymbols = Object.getOwnPropertySymbols; +var Input2_hasOwnProp = Object.prototype.hasOwnProperty; +var Input2_propIsEnum = Object.prototype.propertyIsEnumerable; +var Input2_defNormalProp = (obj, key, value) => key in obj ? Input2_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var Input2_spreadValues = (a, b) => { + for (var prop in b || (b = {})) + if (Input2_hasOwnProp.call(b, prop)) + Input2_defNormalProp(a, prop, b[prop]); + if (Input2_getOwnPropSymbols) + for (var prop of Input2_getOwnPropSymbols(b)) { + if (Input2_propIsEnum.call(b, prop)) + Input2_defNormalProp(a, prop, b[prop]); + } + return a; +}; +var Input2_spreadProps = (a, b) => Input2_defProps(a, Input2_getOwnPropDescs(b)); +var Input2_objRest = (source, exclude) => { + var target = {}; + for (var prop in source) + if (Input2_hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) + target[prop] = source[prop]; + if (source != null && Input2_getOwnPropSymbols) + for (var prop of Input2_getOwnPropSymbols(source)) { + if (exclude.indexOf(prop) < 0 && Input2_propIsEnum.call(source, prop)) + target[prop] = source[prop]; + } + return target; +}; + + +const Input2 = (0,external_react_namespaceObject.forwardRef)((_a, ref) => { + var _b = _a, { + error, + onChange, + readOnly, + id, + inputgroupaddonleft, + inputgroupaddonright, + label, + labelwidth, + note, + theme, + value, + wrapperClassName = "" + } = _b, rest = Input2_objRest(_b, [ + "error", + "onChange", + "readOnly", + "id", + "inputgroupaddonleft", + "inputgroupaddonright", + "label", + "labelwidth", + "note", + "theme", + "value", + "wrapperClassName" + ]); + const inputRef = (0,external_react_namespaceObject.useRef)(); + (0,external_react_namespaceObject.useImperativeHandle)(ref, () => ({ + focus: () => { + inputRef.current.focus(); + } + })); + const getAddon = (content) => /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-input-group__addon" }, content); + const getLabelStyles = () => Input2_spreadValues({}, labelwidth && { + flexBasis: labelwidth + }); + const getNonLabelWidth = () => Input2_spreadValues({}, labelwidth && { + flexBasis: `calc(100% - ${labelwidth} - 20px)` + }); + const getInputError = () => error && error !== "true" && error !== "false" ? /* @__PURE__ */ external_react_default().createElement( + "p", + { + className: "tyk-form-control__error-message" + }, + error + ) : null; + const getCssClasses = () => { + const cssClasses = [wrapperClassName, "tyk-form-group"]; + const themes = theme ? theme.split(" ") : []; + if (themes.length) { + themes.forEach((iTheme) => { + cssClasses.push(`tyk-form-group--${iTheme}`); + }); + } + if (inputgroupaddonleft) { + cssClasses.push("tyk-form-group--addon-left"); + } + if (inputgroupaddonright) { + cssClasses.push("tyk-form-group--addon-right"); + } + if (labelwidth) { + cssClasses.push("tyk-form-group--label-has-width"); + } + if (error) { + cssClasses.push("has-error"); + } + return cssClasses.join(" "); + }; + const handleOnChange = (e) => { + onChange(e, e.target.value); + }; + const getInputElement = () => /* @__PURE__ */ external_react_default().createElement( + "input", + Input2_spreadProps(Input2_spreadValues({ + autoComplete: "off", + className: "tyk-form-control" + }, rest), { + onChange: handleOnChange, + value, + ref: inputRef + }) + ); + const getInputGroupAddon = () => /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-input-group" }, inputgroupaddonleft ? getAddon(inputgroupaddonleft) : null, getInputElement(), inputgroupaddonright ? getAddon(inputgroupaddonright) : null); + return /* @__PURE__ */ external_react_default().createElement("div", { className: getCssClasses() }, label ? /* @__PURE__ */ external_react_default().createElement("label", { htmlFor: id, style: getLabelStyles() }, label) : null, !readOnly && /* @__PURE__ */ external_react_default().createElement( + "div", + { + className: "tyk-form-control__wrapper", + style: getNonLabelWidth() + }, + inputgroupaddonleft || inputgroupaddonright ? getInputGroupAddon() : getInputElement(), + note ? /* @__PURE__ */ external_react_default().createElement("p", { className: "tyk-form-control__help-block" }, note) : null, + getInputError() + ), readOnly && /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-form-control--readonly" }, value || "-")); +}); +Input2.propTypes = { + disabled: (external_prop_types_default()).bool, + readOnly: (external_prop_types_default()).bool, + id: (external_prop_types_default()).string, + error: external_prop_types_default().oneOfType([ + (external_prop_types_default()).string, + (external_prop_types_default()).bool + ]), + inputgroupaddonleft: external_prop_types_default().oneOfType([ + (external_prop_types_default()).element, + (external_prop_types_default()).node, + (external_prop_types_default()).string + ]), + inputgroupaddonright: external_prop_types_default().oneOfType([ + (external_prop_types_default()).element, + (external_prop_types_default()).node, + (external_prop_types_default()).string + ]), + label: external_prop_types_default().oneOfType([ + (external_prop_types_default()).string, + (external_prop_types_default()).element, + (external_prop_types_default()).node + ]), + labelwidth: (external_prop_types_default()).string, + name: (external_prop_types_default()).string, + note: (external_prop_types_default()).string, + onChange: (external_prop_types_default()).func, + placeholder: (external_prop_types_default()).string, + theme: (external_prop_types_default()).string, + value: external_prop_types_default().oneOfType([ + (external_prop_types_default()).number, + (external_prop_types_default()).string + ]), + wrapperClassName: (external_prop_types_default()).string +}; +/* harmony default export */ const components_Input2 = (Input2); + +;// CONCATENATED MODULE: ./src/form/components/Multiselect/js/MultiselectContext.js + +const MultiselectContext = (0,external_react_namespaceObject.createContext)(); +/* harmony default export */ const js_MultiselectContext = (MultiselectContext); + +;// CONCATENATED MODULE: ./src/form/components/Multiselect/js/MultiselectItem.js +var MultiselectItem_defProp = Object.defineProperty; +var MultiselectItem_defNormalProp = (obj, key, value) => key in obj ? MultiselectItem_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var MultiselectItem_publicField = (obj, key, value) => { + MultiselectItem_defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); + return value; +}; + + + + + + +const getItemContent = (context, item) => context.detailsDisplayTemplate ? context.detailsDisplayTemplate(item) : JSON.stringify(item.details); +const getItemLoader = (context, item) => { + const { opened } = context; + return opened[item.id] ? /* @__PURE__ */ external_react_default().createElement(components_Loader, { position: "relative" }) : null; +}; +class MultiselectItem extends external_react_namespaceObject.Component { + isInSearchValue(fieldsToSearchOn) { + const { searchValue, item } = this.props; + if (fieldsToSearchOn && fieldsToSearchOn.length > 0) { + let fields = fieldsToSearchOn.slice(0); + fields = fields.filter((key) => item[key] && item[key].search(searchValue) > -1); + return fields.length > 0; + } + return JSON.stringify(item).search(searchValue) > -1; + } + render() { + const { + item, + itemType, + onChange + } = this.props; + return /* @__PURE__ */ external_react_default().createElement(external_react_namespaceObject.Fragment, null, /* @__PURE__ */ external_react_default().createElement(js_MultiselectContext.Consumer, null, (context) => this.isInSearchValue(context.fieldsToSearchOn) ? /* @__PURE__ */ external_react_default().createElement("li", null, /* @__PURE__ */ external_react_default().createElement("div", null, /* @__PURE__ */ external_react_default().createElement("span", { className: "tyk-multiselect-item__name" }, context.itemDisplayTemplate ? context.itemDisplayTemplate(item) : JSON.stringify(item)), /* @__PURE__ */ external_react_default().createElement("span", { className: "tyk-multiselect-item__controls" }, /* @__PURE__ */ external_react_default().createElement( + components_Button, + { + iconType: itemType === "normal" ? "plus" : "minus", + iconOnly: true, + onClick: onChange.bind(null, item), + disabled: context.disabled || context.maxSelections && context.maxSelections === context.nrSelectedItems && itemType === "normal" + } + ), /* @__PURE__ */ external_react_default().createElement( + components_Button, + { + iconType: context.opened[item.id] ? "chevron-up" : "chevron-down", + iconOnly: true, + onClick: context.onGetItemDetails.bind(context.parentContext, item) + } + ))), item.details ? /* @__PURE__ */ external_react_default().createElement( + components_Collapsible, + { + collapsed: !context.opened[item.id], + className: "tyk-multiselect-item__details" + }, + getItemContent(context, item) + ) : getItemLoader(context, item)) : null)); + } +} +MultiselectItem_publicField(MultiselectItem, "propTypes", { + item: external_prop_types_default().instanceOf(Object), + itemType: (external_prop_types_default()).string, + searchValue: (external_prop_types_default()).string, + onChange: (external_prop_types_default()).func +}); +/* harmony default export */ const js_MultiselectItem = (MultiselectItem); + +;// CONCATENATED MODULE: ./src/form/components/Multiselect/js/MultiselectPanel.js +var MultiselectPanel_defProp = Object.defineProperty; +var MultiselectPanel_defNormalProp = (obj, key, value) => key in obj ? MultiselectPanel_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var MultiselectPanel_publicField = (obj, key, value) => { + MultiselectPanel_defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); + return value; +}; + + + + + + + + +class MultiselectPanel extends external_react_namespaceObject.Component { + constructor(props) { + super(props); + MultiselectPanel_publicField(this, "state", { + searchValue: "" + }); + this.searchOnChange = this.searchOnChange.bind(this); + this.itemChanged = this.itemChanged.bind(this); + this.itemIndex = 0; + this.itemsListRef = (0,external_react_namespaceObject.createRef)(); + } + getItemIndex() { + this.itemIndex += 1; + return this.itemIndex; + } + getItemsList() { + const { + itemsPageNumber, + itemsNrPages, + loadMoreItems, + serverLoad + } = this.props; + return serverLoad ? /* @__PURE__ */ external_react_default().createElement( + components_InfiniteScroller, + { + refChild: this.itemsListRef, + hasMore: itemsNrPages > itemsPageNumber, + loadMore: loadMoreItems, + pageNumber: itemsPageNumber + }, + this.renderListItems() + ) : this.renderListItems(); + } + searchOnChange(value) { + const { onCustomSearch } = this.props; + if (!onCustomSearch) { + this.setState({ + searchValue: value + }); + } else { + onCustomSearch(value); + } + } + itemChanged(item) { + const { items, onChange } = this.props; + let cloneItems = (0,external_immutable_namespaceObject.fromJS)(items).toJS(); + cloneItems = cloneItems.filter((clonedItem) => item.id !== clonedItem.id); + onChange(cloneItems, item); + } + renderListItems() { + const { + customSearch, + items, + panelType, + serverLoad + } = this.props; + const { searchValue } = this.state; + return /* @__PURE__ */ external_react_default().createElement( + "ul", + { + className: `tyk-multiselect__list${!serverLoad ? " tyk-multiselect__list--scroll" : ""}`, + ref: this.itemsListRef + }, + items.map((item) => /* @__PURE__ */ external_react_default().createElement( + js_MultiselectItem, + { + itemType: panelType, + key: this.getItemIndex(), + onChange: this.itemChanged, + searchValue: customSearch ? "" : searchValue, + item + } + )) + ); + } + render() { + const { + inputPlaceholder, + noItemsMessage, + items + } = this.props; + const { searchValue } = this.state; + return /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-multiselect__panel" }, /* @__PURE__ */ external_react_default().createElement( + Input, + { + inputgroupaddonleft: /* @__PURE__ */ external_react_default().createElement(components_Icon, { type: "search" }), + name: "search", + onChange: this.searchOnChange, + placeholder: inputPlaceholder, + value: searchValue + } + ), items.length ? this.getItemsList() : /* @__PURE__ */ external_react_default().createElement( + components_Message, + { + theme: "info" + }, + noItemsMessage + )); + } +} +MultiselectPanel_publicField(MultiselectPanel, "propTypes", { + customSearch: (external_prop_types_default()).bool, + onCustomSearch: (external_prop_types_default()).func, + panelType: (external_prop_types_default()).string, + onChange: (external_prop_types_default()).func, + items: external_prop_types_default().instanceOf(Array), + itemsPageNumber: (external_prop_types_default()).number, + itemsNrPages: (external_prop_types_default()).number, + inputPlaceholder: (external_prop_types_default()).string, + loadMoreItems: (external_prop_types_default()).func, + noItemsMessage: (external_prop_types_default()).string, + serverLoad: (external_prop_types_default()).bool +}); +/* harmony default export */ const js_MultiselectPanel = (MultiselectPanel); + +;// CONCATENATED MODULE: ./src/form/components/Multiselect/index.js +var Multiselect_defProp = Object.defineProperty; +var Multiselect_defNormalProp = (obj, key, value) => key in obj ? Multiselect_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var Multiselect_publicField = (obj, key, value) => { + Multiselect_defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); + return value; +}; + + + + + +const diffObjects = (value, items) => { + const newItems = items.filter((item) => { + const isCommon = value.filter((selectedItem) => selectedItem.id === item.id).length > 0; + return !isCommon; + }); + return newItems; +}; +class Multiselect extends external_react_namespaceObject.Component { + constructor(props) { + super(props); + Multiselect_publicField(this, "state", { + opened: {} + }); + this.valueChange = this.valueChange.bind(this); + this.itemsChange = this.itemsChange.bind(this); + } + onGetItemDetails(item) { + const { getItemDetails } = this.props; + this.setState((prevState) => { + const tempState = Object.assign({}, prevState); + tempState.opened[item.id] = !tempState.opened[item.id]; + return tempState; + }, () => { + if (getItemDetails) { + getItemDetails(item); + } + }); + } + getMultiselectError() { + const { error } = this.props; + return error && error !== "true" && error !== "false" ? /* @__PURE__ */ external_react_default().createElement( + "p", + { + className: "tyk-form-control__error-message" + }, + error + ) : null; + } + getCssClasses() { + const { error, wrapperClassName = "" } = this.props; + const cssClasses = [wrapperClassName, "tyk-multiselect"]; + if (error) { + cssClasses.push("has-error"); + } + return cssClasses.join(" "); + } + itemsChange(allItems, item) { + const { value, onChange } = this.props; + const valueClone = (0,external_immutable_namespaceObject.fromJS)(value).toJS(); + valueClone.unshift(item); + onChange(valueClone, item, "added"); + } + valueChange(value, item) { + const { items, onChange } = this.props; + const allItemsClone = (0,external_immutable_namespaceObject.fromJS)(items).toJS(); + allItemsClone.unshift(item); + onChange(value, item, "removed"); + } + render() { + const { + customSearch, + entityNamePlural, + disabled, + itemDisplayTemplate, + detailsDisplayTemplate, + fieldsToSearchOn, + items, + itemsPageNumber, + itemsNrPages, + loadMoreItems, + maxSelections, + note, + value + } = this.props; + const { opened } = this.state; + return /* @__PURE__ */ external_react_default().createElement(external_react_namespaceObject.Fragment, null, /* @__PURE__ */ external_react_default().createElement("div", { className: this.getCssClasses() }, /* @__PURE__ */ external_react_default().createElement( + js_MultiselectContext.Provider, + { + value: { + disabled, + parentContext: this, + itemDisplayTemplate, + detailsDisplayTemplate, + fieldsToSearchOn, + maxSelections, + nrSelectedItems: value.length, + onGetItemDetails: this.onGetItemDetails, + opened + } + }, + /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-multiselect__header" }, /* @__PURE__ */ external_react_default().createElement("div", null, value.length, " ", "Selected", " ", entityNamePlural), /* @__PURE__ */ external_react_default().createElement("div", null, "Select from existing", entityNamePlural)), + /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-multiselect__panel-wrapper" }, /* @__PURE__ */ external_react_default().createElement( + js_MultiselectPanel, + { + inputPlaceholder: `Search through selected ${entityNamePlural}`, + noItemsMessage: `Selected ${entityNamePlural} will show here`, + items: value, + onChange: this.valueChange, + panelType: "selected" + } + ), /* @__PURE__ */ external_react_default().createElement( + js_MultiselectPanel, + { + inputPlaceholder: `Search existing ${entityNamePlural}`, + noItemsMessage: `No ${entityNamePlural} to display`, + entityNamePlural, + customSearch: !!customSearch, + onCustomSearch: customSearch, + items: diffObjects(value, items), + onChange: this.itemsChange, + serverLoad: !!loadMoreItems, + loadMoreItems, + itemsPageNumber, + itemsNrPages, + panelType: "normal" + } + )) + )), /* @__PURE__ */ external_react_default().createElement("div", null, note ? /* @__PURE__ */ external_react_default().createElement("p", { className: "tyk-form-control__help-block" }, note) : null), this.getMultiselectError()); + } +} +Multiselect_publicField(Multiselect, "propTypes", { + customSearch: (external_prop_types_default()).func, + disabled: (external_prop_types_default()).bool, + error: (external_prop_types_default()).string, + entityNamePlural: (external_prop_types_default()).string, + items: external_prop_types_default().instanceOf(Array), + itemDisplayTemplate: (external_prop_types_default()).func, + detailsDisplayTemplate: (external_prop_types_default()).func, + fieldsToSearchOn: external_prop_types_default().instanceOf(Array), + onChange: (external_prop_types_default()).func, + getItemDetails: (external_prop_types_default()).func, + itemsPageNumber: (external_prop_types_default()).number, + itemsNrPages: (external_prop_types_default()).number, + loadMoreItems: (external_prop_types_default()).func, + note: (external_prop_types_default()).string, + maxSelections: (external_prop_types_default()).number, + value: external_prop_types_default().instanceOf(Array), + wrapperClassName: (external_prop_types_default()).string +}); +/* harmony default export */ const components_Multiselect = (Multiselect); + +;// CONCATENATED MODULE: ./src/form/components/Radio/index.js +var Radio_defProp = Object.defineProperty; +var Radio_defProps = Object.defineProperties; +var Radio_getOwnPropDescs = Object.getOwnPropertyDescriptors; +var Radio_getOwnPropSymbols = Object.getOwnPropertySymbols; +var Radio_hasOwnProp = Object.prototype.hasOwnProperty; +var Radio_propIsEnum = Object.prototype.propertyIsEnumerable; +var Radio_defNormalProp = (obj, key, value) => key in obj ? Radio_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var Radio_spreadValues = (a, b) => { + for (var prop in b || (b = {})) + if (Radio_hasOwnProp.call(b, prop)) + Radio_defNormalProp(a, prop, b[prop]); + if (Radio_getOwnPropSymbols) + for (var prop of Radio_getOwnPropSymbols(b)) { + if (Radio_propIsEnum.call(b, prop)) + Radio_defNormalProp(a, prop, b[prop]); + } + return a; +}; +var Radio_spreadProps = (a, b) => Radio_defProps(a, Radio_getOwnPropDescs(b)); +var Radio_objRest = (source, exclude) => { + var target = {}; + for (var prop in source) + if (Radio_hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) + target[prop] = source[prop]; + if (source != null && Radio_getOwnPropSymbols) + for (var prop of Radio_getOwnPropSymbols(source)) { + if (exclude.indexOf(prop) < 0 && Radio_propIsEnum.call(source, prop)) + target[prop] = source[prop]; + } + return target; +}; +var Radio_publicField = (obj, key, value) => { + Radio_defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); + return value; +}; + + +class Radio extends external_react_namespaceObject.Component { + getCssClasses() { + const { + inline, + nospace, + theme = "", + disabled, + readOnly, + wrapperClassName = "" + } = this.props; + const cssClasses = [wrapperClassName]; + if (inline) { + cssClasses.push("tyk-radio--inline"); + } else { + cssClasses.push("tyk-radio"); + } + if (nospace) { + cssClasses.push("no-margin"); + } + if (theme.trim()) { + cssClasses.push(...theme.split(" ").map((t) => `tyk-radio--theme-${t}`)); + } + if (readOnly || disabled) { + cssClasses.push("tyk-radio--is-disabled"); + } + return cssClasses.join(" "); + } + render() { + const _a = this.props, { + input, + label, + note, + disabled, + readOnly + } = _a, rest = Radio_objRest(_a, [ + "input", + "label", + "note", + "disabled", + "readOnly" + ]); + return /* @__PURE__ */ external_react_default().createElement( + "div", + { + className: this.getCssClasses() + }, + /* @__PURE__ */ external_react_default().createElement("label", null, /* @__PURE__ */ external_react_default().createElement( + "input", + Radio_spreadProps(Radio_spreadValues(Radio_spreadValues({}, input), rest), { + type: "radio", + disabled: readOnly || disabled + }) + ), label), + /* @__PURE__ */ external_react_default().createElement("p", { className: "tyk-form-control__help-block" }, note) + ); + } +} +Radio_publicField(Radio, "propTypes", { + /** Used to disable the element */ + disabled: (external_prop_types_default()).bool, + /** Readonly prop behaves the same as disabled on radio elements */ + readOnly: (external_prop_types_default()).bool, + /** Align radio with in same line with other elements */ + inline: (external_prop_types_default()).bool, + /** Set a theme for radio */ + theme: (external_prop_types_default()).string, + input: external_prop_types_default().instanceOf(Object), + /** Adds label to the radio input */ + label: external_prop_types_default().oneOfType([ + external_prop_types_default().arrayOf((external_prop_types_default()).node), + (external_prop_types_default()).node, + (external_prop_types_default()).element, + (external_prop_types_default()).func, + (external_prop_types_default()).string + ]), + /** Set name for the radio input */ + name: (external_prop_types_default()).string, + /** If set to true removes margin by adding `no-margin` class */ + nospace: (external_prop_types_default()).bool, + /** Set initial value for the radio input */ + value: (external_prop_types_default()).string, + /** Add note at the bottom of the radio input */ + note: external_prop_types_default().oneOfType([ + (external_prop_types_default()).string, + (external_prop_types_default()).element, + (external_prop_types_default()).node + ]), + wrapperClassName: (external_prop_types_default()).string +}); + +;// CONCATENATED MODULE: ./src/form/components/Select/index.js +var Select_defProp = Object.defineProperty; +var Select_defProps = Object.defineProperties; +var Select_getOwnPropDescs = Object.getOwnPropertyDescriptors; +var Select_getOwnPropSymbols = Object.getOwnPropertySymbols; +var Select_hasOwnProp = Object.prototype.hasOwnProperty; +var Select_propIsEnum = Object.prototype.propertyIsEnumerable; +var Select_defNormalProp = (obj, key, value) => key in obj ? Select_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var Select_spreadValues = (a, b) => { + for (var prop in b || (b = {})) + if (Select_hasOwnProp.call(b, prop)) + Select_defNormalProp(a, prop, b[prop]); + if (Select_getOwnPropSymbols) + for (var prop of Select_getOwnPropSymbols(b)) { + if (Select_propIsEnum.call(b, prop)) + Select_defNormalProp(a, prop, b[prop]); + } + return a; +}; +var Select_spreadProps = (a, b) => Select_defProps(a, Select_getOwnPropDescs(b)); +var Select_objRest = (source, exclude) => { + var target = {}; + for (var prop in source) + if (Select_hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) + target[prop] = source[prop]; + if (source != null && Select_getOwnPropSymbols) + for (var prop of Select_getOwnPropSymbols(source)) { + if (exclude.indexOf(prop) < 0 && Select_propIsEnum.call(source, prop)) + target[prop] = source[prop]; + } + return target; +}; +var Select_publicField = (obj, key, value) => { + Select_defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); + return value; +}; + + +class Select extends external_react_namespaceObject.Component { + constructor(props) { + super(props); + const { + value + } = this.props; + this.state = { + initValue: value, + stateValue: value + }; + this.handleOnChange = this.handleOnChange.bind(this); + this.handleOnBlur = this.handleOnBlur.bind(this); + } + componentDidUpdate(prevProps) { + const { + isfield, + value, + onChange + } = this.props; + if (!isfield && prevProps.value !== value) { + this.setState({ + stateValue: value + }, () => { + if (onChange) { + onChange(value); + } + }); + } + } + getSelectComponent() { + const _a = this.props, { + isfield, + options, + onChange, + onBlur, + value + } = _a, rest = Select_objRest(_a, [ + "isfield", + "options", + "onChange", + "onBlur", + "value" + ]); + const { + stateValue + } = this.state; + let selectValue = ""; + if (isfield && value) { + selectValue = value; + } else if (stateValue) { + selectValue = stateValue; + } + return /* @__PURE__ */ external_react_default().createElement( + "select", + Select_spreadProps(Select_spreadValues({ + className: "tyk-form-control tyk-select" + }, rest), { + onChange: this.handleOnChange, + onBlur: this.handleOnBlur, + value: selectValue ? selectValue.id : "" + }), + options.map((option) => /* @__PURE__ */ external_react_default().createElement("option", { key: option.id, value: option.id }, option.name)) + ); + } + getSelectError() { + const { error } = this.props; + return error && error !== "true" && error !== "false" ? /* @__PURE__ */ external_react_default().createElement( + "p", + { + className: "tyk-form-control__error-message" + }, + error + ) : null; + } + getCssClasses() { + const { + error, + labelwidth, + theme, + wrapperClassName = "" + } = this.props; + const cssClasses = [wrapperClassName, "tyk-form-group"]; + const themes = theme ? theme.split(" ") : []; + if (themes.length) { + themes.forEach((iTheme) => { + cssClasses.push(`tyk-form-group--${iTheme}`); + }); + } + if (labelwidth) { + cssClasses.push("tyk-form-group--label-has-width"); + } + if (error) { + cssClasses.push("has-error"); + } + return cssClasses.join(" "); + } + getLabelStyles() { + const { labelwidth } = this.props; + const styles = {}; + if (labelwidth) { + styles.flexBasis = labelwidth; + } + return styles; + } + getNonLabelWidth() { + const { labelwidth } = this.props; + const styles = {}; + if (labelwidth) { + styles.flexBasis = `calc(100% - ${labelwidth} - 20px)`; + } + return styles; + } + handleOnBlur() { + const { value, onBlur } = this.props; + if (onBlur) { + onBlur(value); + } + } + handleOnChange(e) { + const { + onChange, + isfield, + options + } = this.props; + let selectedValue = null; + selectedValue = options.filter((option) => option.id === e.target.value); + [selectedValue] = selectedValue; + if (!isfield) { + this.setState({ + stateValue: selectedValue + }, () => { + onChange(selectedValue.id ? selectedValue : null); + }); + } else { + onChange(selectedValue.id ? selectedValue : null); + } + } + reset() { + const { initValue } = this.state; + this.setState({ + stateValue: initValue + }); + } + render() { + const { + label, + id, + note, + readOnly, + value + } = this.props; + return /* @__PURE__ */ external_react_default().createElement(external_react_namespaceObject.Fragment, null, /* @__PURE__ */ external_react_default().createElement("div", { className: this.getCssClasses() }, label ? /* @__PURE__ */ external_react_default().createElement("label", { htmlFor: id, style: this.getLabelStyles() }, label) : null, !readOnly && /* @__PURE__ */ external_react_default().createElement( + "div", + { + className: "tyk-form-control__wrapper", + style: this.getNonLabelWidth() + }, + this.getSelectComponent(), + note ? /* @__PURE__ */ external_react_default().createElement("p", { className: "tyk-form-control__help-block" }, note) : null, + this.getSelectError() + ), readOnly && /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-form-control--readonly" }, value || "-"))); + } +} +Select_publicField(Select, "propTypes", { + disabled: (external_prop_types_default()).bool, + readOnly: (external_prop_types_default()).bool, + id: (external_prop_types_default()).string, + isfield: (external_prop_types_default()).bool, + error: external_prop_types_default().oneOfType([ + (external_prop_types_default()).string, + (external_prop_types_default()).bool + ]), + options: external_prop_types_default().instanceOf(Array), + label: external_prop_types_default().oneOfType([ + external_prop_types_default().arrayOf((external_prop_types_default()).node), + (external_prop_types_default()).node, + (external_prop_types_default()).element, + (external_prop_types_default()).func, + (external_prop_types_default()).string + ]), + labelwidth: (external_prop_types_default()).string, + name: (external_prop_types_default()).string, + note: (external_prop_types_default()).string, + onBlur: (external_prop_types_default()).func, + onChange: (external_prop_types_default()).func, + placeholder: (external_prop_types_default()).string, + theme: (external_prop_types_default()).string, + value: external_prop_types_default().oneOfType([ + (external_prop_types_default()).string, + (external_prop_types_default()).object + ]), + wrapperClassName: (external_prop_types_default()).string +}); + +;// CONCATENATED MODULE: ./src/form/components/SelectableList/index.js +var SelectableList_defProp = Object.defineProperty; +var SelectableList_defProps = Object.defineProperties; +var SelectableList_getOwnPropDescs = Object.getOwnPropertyDescriptors; +var SelectableList_getOwnPropSymbols = Object.getOwnPropertySymbols; +var SelectableList_hasOwnProp = Object.prototype.hasOwnProperty; +var SelectableList_propIsEnum = Object.prototype.propertyIsEnumerable; +var SelectableList_defNormalProp = (obj, key, value) => key in obj ? SelectableList_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var SelectableList_spreadValues = (a, b) => { + for (var prop in b || (b = {})) + if (SelectableList_hasOwnProp.call(b, prop)) + SelectableList_defNormalProp(a, prop, b[prop]); + if (SelectableList_getOwnPropSymbols) + for (var prop of SelectableList_getOwnPropSymbols(b)) { + if (SelectableList_propIsEnum.call(b, prop)) + SelectableList_defNormalProp(a, prop, b[prop]); + } + return a; +}; +var SelectableList_spreadProps = (a, b) => SelectableList_defProps(a, SelectableList_getOwnPropDescs(b)); + + + + + +function SelectableList(props) { + const { + checkboxalticon, + items, + itemTemplate, + value, + noItemsMessage = "No items in the list", + onChange, + theme, + primaryKey, + wrapperClassName = "" + } = props; + const handleOnSelect = (event) => { + const newSelectedItems = structuredClone(value); + const elemPosition = newSelectedItems.findIndex( + (id) => JSON.stringify(id) === JSON.stringify( + Array.isArray(id) ? event.target.value.split(",") : event.target.value + ) + ); + if (event.target.checked && elemPosition === -1) { + const tempValue = event.target.value.split(","); + const finalValue = tempValue.length > 1 ? tempValue : event.target.value; + newSelectedItems.push(finalValue); + } else if (!event.target.checked && elemPosition > -1) { + newSelectedItems.splice(elemPosition, 1); + } + if (onChange) { + onChange(newSelectedItems); + } + }; + const getListItemCssClassName = (isActive) => { + const cssClasses = []; + if (checkboxalticon) { + cssClasses.push("tyk-selectable-list__item--with-icon"); + } + if (isActive) { + cssClasses.push("tyk-selectable-list__item--active"); + } + return cssClasses.join(" "); + }; + const isChecked = (inputValue, itemValue) => Boolean( + inputValue.find((tvalue) => JSON.stringify(itemValue) === JSON.stringify(tvalue)) + ); + return /* @__PURE__ */ external_react_default().createElement(components_List, SelectableList_spreadProps(SelectableList_spreadValues({}, props), { theme: theme || "default", className: `tyk-selectable-list ${wrapperClassName}` }), !items.length ? /* @__PURE__ */ external_react_default().createElement("li", { className: "tyk-selectable-list__no-items-message" }, /* @__PURE__ */ external_react_default().createElement(components_Message, { theme: "info" }, noItemsMessage)) : items.map((item, index) => /* @__PURE__ */ external_react_default().createElement( + components_List.Item, + { + key: index, + className: getListItemCssClassName(value.includes(item[primaryKey])) + }, + /* @__PURE__ */ external_react_default().createElement("label", null, /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-selectable-list__item" }, itemTemplate ? itemTemplate(item) : item.name), /* @__PURE__ */ external_react_default().createElement( + "input", + { + type: "checkbox", + checked: isChecked(value, item[primaryKey]), + onChange: handleOnSelect.bind(item), + value: item[primaryKey] + } + ), checkboxalticon ? /* @__PURE__ */ external_react_default().createElement(components_Icon, { type: checkboxalticon }) : null) + ))); +} +SelectableList.propTypes = { + items: external_prop_types_default().instanceOf(Array), + itemTemplate: external_prop_types_default().oneOfType([ + (external_prop_types_default()).node, + (external_prop_types_default()).element, + (external_prop_types_default()).string, + (external_prop_types_default()).func + ]), + value: external_prop_types_default().instanceOf(Array), + onChange: (external_prop_types_default()).func, + primaryKey: (external_prop_types_default()).string, + noItemsMessage: (external_prop_types_default()).string, + checkboxalticon: external_prop_types_default().oneOfType([ + (external_prop_types_default()).node, + (external_prop_types_default()).element, + (external_prop_types_default()).string + ]), + theme: (external_prop_types_default()).string, + wrapperClassName: (external_prop_types_default()).string +}; +SelectableList.defaultProps = { + items: [], + primaryKey: "id", + value: [] +}; +/* harmony default export */ const components_SelectableList = (SelectableList); + +;// CONCATENATED MODULE: ./src/form/components/Textarea/index.js +var Textarea_defProp = Object.defineProperty; +var Textarea_getOwnPropSymbols = Object.getOwnPropertySymbols; +var Textarea_hasOwnProp = Object.prototype.hasOwnProperty; +var Textarea_propIsEnum = Object.prototype.propertyIsEnumerable; +var Textarea_defNormalProp = (obj, key, value) => key in obj ? Textarea_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var Textarea_spreadValues = (a, b) => { + for (var prop in b || (b = {})) + if (Textarea_hasOwnProp.call(b, prop)) + Textarea_defNormalProp(a, prop, b[prop]); + if (Textarea_getOwnPropSymbols) + for (var prop of Textarea_getOwnPropSymbols(b)) { + if (Textarea_propIsEnum.call(b, prop)) + Textarea_defNormalProp(a, prop, b[prop]); + } + return a; +}; +var Textarea_objRest = (source, exclude) => { + var target = {}; + for (var prop in source) + if (Textarea_hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) + target[prop] = source[prop]; + if (source != null && Textarea_getOwnPropSymbols) + for (var prop of Textarea_getOwnPropSymbols(source)) { + if (exclude.indexOf(prop) < 0 && Textarea_propIsEnum.call(source, prop)) + target[prop] = source[prop]; + } + return target; +}; + + +function Textarea(_a) { + var _b = _a, { + id, + input, + label, + note, + error, + theme, + labelwidth, + value, + readOnly, + wrapperClassName + } = _b, rest = Textarea_objRest(_b, [ + "id", + "input", + "label", + "note", + "error", + "theme", + "labelwidth", + "value", + "readOnly", + "wrapperClassName" + ]); + const classes = [ + "tyk-form-group", + wrapperClassName, + ...theme ? theme.split(" ").map((t) => `tyk-form-group--${t}`) : [], + labelwidth && "tyk-form-group--label-has-width", + error && "has-error" + ].filter(Boolean).join(" "); + const getLabelStyles = () => { + if (labelwidth) + return { flexBasis: labelwidth }; + return {}; + }; + const getNonLabelWidth = () => { + if (labelwidth) + return { flexBasis: `calc(100% - ${labelwidth} - 20px)` }; + return {}; + }; + function getTextareaError() { + return error && error !== "true" && error !== "false" ? /* @__PURE__ */ external_react_default().createElement("p", { className: "tyk-form-control__error-message" }, error) : null; + } + return /* @__PURE__ */ external_react_default().createElement("div", { className: classes }, label ? /* @__PURE__ */ external_react_default().createElement("label", { htmlFor: id, style: getLabelStyles() }, label) : null, !readOnly && /* @__PURE__ */ external_react_default().createElement( + "div", + { + className: "tyk-form-control__wrapper", + style: getNonLabelWidth() + }, + /* @__PURE__ */ external_react_default().createElement( + "textarea", + Textarea_spreadValues(Textarea_spreadValues({ + className: "tyk-form-control" + }, rest), input), + value + ), + note ? /* @__PURE__ */ external_react_default().createElement("p", { className: "tyk-form-control__help-block" }, note) : null, + getTextareaError() + ), readOnly && /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-form-control--readonly" }, value || "-")); +} +Textarea.propTypes = { + /** Disable the component */ + disabled: (external_prop_types_default()).bool, + /** Displays only the text value of the component, or "-" if no value is set */ + readOnly: (external_prop_types_default()).bool, + input: external_prop_types_default().instanceOf(Object), + /** Set an error message for the component and the component is rendered in the error state */ + error: (external_prop_types_default()).string, + /** Adds a label to the component */ + label: external_prop_types_default().oneOfType([ + external_prop_types_default().arrayOf((external_prop_types_default()).node), + (external_prop_types_default()).node, + (external_prop_types_default()).element, + (external_prop_types_default()).func, + (external_prop_types_default()).string + ]), + /** Sets the width of the label */ + labelwidth: (external_prop_types_default()).string, + /** Set a name for the component */ + name: (external_prop_types_default()).string, + /** Adds additional information under the component */ + note: (external_prop_types_default()).string, + /** Callback function executed on value change */ + onChange: (external_prop_types_default()).func, + id: (external_prop_types_default()).string, + /** Set a theme for the component */ + theme: (external_prop_types_default()).string, + /** Set the value of the component */ + value: (external_prop_types_default()).string, + /** CSS classes added to the wrapper of the component */ + wrapperClassName: (external_prop_types_default()).string +}; +/* harmony default export */ const components_Textarea = (Textarea); + +;// CONCATENATED MODULE: ./src/form/components/Toggle/js/ToggleContext.js + +const ToggleContext = (0,external_react_namespaceObject.createContext)(); +/* harmony default export */ const js_ToggleContext = (ToggleContext); + +;// CONCATENATED MODULE: ./src/form/components/Toggle/js/ToggleItem.js + + +class ToggleItem extends external_react_namespaceObject.Component { + static getNotchCssClasses(context) { + return ["tyk-toggle__item-notch", `tyk-toggle__item-notch--${context.type}`].join(" "); + } + constructor(props) { + super(props); + this.itemRef = (0,external_react_namespaceObject.createRef)(); + } + componentDidMount() { + const { context, value } = this.props; + if (context.value === value) { + context.saveSelectedRef(this.itemRef); + } + } + componentDidUpdate(prevProps) { + const { context, value } = this.props; + if (prevProps.context.value !== context.value && context.value === value) { + context.saveSelectedRef(this.itemRef); + } + } + onChange(event) { + const { context, value } = this.props; + const { disabled, readOnly } = context; + if (disabled || readOnly) { + return; + } + context.onItemSelected(context.type === "single" ? !context.value : value, event); + } + render() { + const { + context, + label, + name, + value + } = this.props; + return /* @__PURE__ */ external_react_default().createElement("li", { className: `tyk-toggle__item ${context.value && (context.type === "single" || context.value === value) ? "tyk-toggle__item--active" : ""}`, ref: this.itemRef }, /* @__PURE__ */ external_react_default().createElement("label", null, /* @__PURE__ */ external_react_default().createElement( + "input", + { + type: context.type === "single" ? "checkbox" : "radio", + name, + checked: context.value === value, + onChange: this.onChange.bind(this), + value + } + ), label ? /* @__PURE__ */ external_react_default().createElement("span", null, label) : /* @__PURE__ */ external_react_default().createElement("span", { className: "empty-toggle" }, " "), context.type === "single" ? /* @__PURE__ */ external_react_default().createElement("span", { className: ToggleItem.getNotchCssClasses(context) }) : null)); + } +} +ToggleItem.propTypes = { + context: external_prop_types_default().instanceOf(Object), + label: external_prop_types_default().oneOfType([ + external_prop_types_default().arrayOf((external_prop_types_default()).node), + (external_prop_types_default()).node, + (external_prop_types_default()).element, + (external_prop_types_default()).func, + (external_prop_types_default()).string + ]), + name: (external_prop_types_default()).string, + value: (external_prop_types_default()).string +}; +/* harmony default export */ const js_ToggleItem = (ToggleItem); + +;// CONCATENATED MODULE: ./src/form/components/Toggle/js/ToggleItemWrapper.js +var ToggleItemWrapper_defProp = Object.defineProperty; +var ToggleItemWrapper_defProps = Object.defineProperties; +var ToggleItemWrapper_getOwnPropDescs = Object.getOwnPropertyDescriptors; +var ToggleItemWrapper_getOwnPropSymbols = Object.getOwnPropertySymbols; +var ToggleItemWrapper_hasOwnProp = Object.prototype.hasOwnProperty; +var ToggleItemWrapper_propIsEnum = Object.prototype.propertyIsEnumerable; +var ToggleItemWrapper_defNormalProp = (obj, key, value) => key in obj ? ToggleItemWrapper_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var ToggleItemWrapper_spreadValues = (a, b) => { + for (var prop in b || (b = {})) + if (ToggleItemWrapper_hasOwnProp.call(b, prop)) + ToggleItemWrapper_defNormalProp(a, prop, b[prop]); + if (ToggleItemWrapper_getOwnPropSymbols) + for (var prop of ToggleItemWrapper_getOwnPropSymbols(b)) { + if (ToggleItemWrapper_propIsEnum.call(b, prop)) + ToggleItemWrapper_defNormalProp(a, prop, b[prop]); + } + return a; +}; +var ToggleItemWrapper_spreadProps = (a, b) => ToggleItemWrapper_defProps(a, ToggleItemWrapper_getOwnPropDescs(b)); + + + + +const ToggleItemWrapper = external_react_default().forwardRef((props, ref) => /* @__PURE__ */ external_react_default().createElement(js_ToggleContext.Consumer, null, (context) => /* @__PURE__ */ external_react_default().createElement(js_ToggleItem, ToggleItemWrapper_spreadProps(ToggleItemWrapper_spreadValues({}, props), { context, ref }), props.children))); +ToggleItemWrapper.propTypes = { + children: external_prop_types_default().oneOfType([ + external_prop_types_default().arrayOf((external_prop_types_default()).node), + (external_prop_types_default()).node, + (external_prop_types_default()).element, + (external_prop_types_default()).string + ]) +}; +/* harmony default export */ const js_ToggleItemWrapper = (ToggleItemWrapper); + +;// CONCATENATED MODULE: ./src/form/components/Toggle/index.js + + + + +function Toggle({ + className, + disabled, + readOnly, + size, + theme, + direction, + onDark, + wrapperClassName = "", + onChange, + labelwidth, + label, + separated, + children, + type, + value, + error +}) { + const [selectedRef, setSelectedRef] = (0,external_react_namespaceObject.useState)(null); + const notchRef = (0,external_react_namespaceObject.useRef)(); + const toggleRef = (0,external_react_namespaceObject.useRef)(); + const classes = [ + wrapperClassName, + className, + "tyk-toggle", + `tyk-toggle--disabled-${readOnly || disabled}`, + `tyk-toggle--${size || "md"}`, + `tyk-toggle--${theme}`, + `tyk-toggle--${direction}`, + onDark && "tyk-toggle--on-dark" + ].filter(Boolean).join(" "); + const onItemSelected = (0,external_react_namespaceObject.useCallback)((itemValue, event) => { + if (!onChange) + return; + onChange(itemValue, event); + }, [onChange]); + const getLabelStyles = (0,external_react_namespaceObject.useCallback)(() => { + if (labelwidth) + return { flexBasis: labelwidth }; + return {}; + }, [labelwidth]); + const positionNotch = (0,external_react_namespaceObject.useCallback)(() => { + if (!selectedRef || separated) { + return {}; + } + const selectedWidth = selectedRef.current.offsetWidth; + const selectedOffset = selectedRef.current.getBoundingClientRect().left; + const toggleOffset = toggleRef.current.getBoundingClientRect().left; + const left = selectedOffset - toggleOffset; + return { + left: `${left + 4}px`, + width: `${selectedWidth - 8}px` + }; + }, [selectedRef, separated]); + const contextValue = (0,external_react_namespaceObject.useMemo)(() => ({ + disabled, + readOnly, + onItemSelected, + saveSelectedRef: setSelectedRef, + separated, + type, + value + }), [disabled, readOnly, onItemSelected, separated, type, value]); + return /* @__PURE__ */ external_react_default().createElement((external_react_default()).Fragment, null, /* @__PURE__ */ external_react_default().createElement("div", { className: classes, ref: toggleRef }, /* @__PURE__ */ external_react_default().createElement( + js_ToggleContext.Provider, + { + value: contextValue + }, + label ? /* @__PURE__ */ external_react_default().createElement("label", { className: "tyk-toggle__label", style: getLabelStyles() }, label) : null, + /* @__PURE__ */ external_react_default().createElement("ul", { className: `tyk-toggle__list tyk-toggle__list--${type} ${error && "tyk-toggle__list--has-error"} tyk-toggle__list--${separated ? "separated" : "not-separated"}` }, children, type === "multiple" && !separated ? /* @__PURE__ */ external_react_default().createElement("li", { className: "tyk-toggle__notch", ref: notchRef, style: positionNotch() }) : null) + )), error && /* @__PURE__ */ external_react_default().createElement("p", { className: "tyk-form-control__error-message" }, error)); +} +Toggle.propTypes = { + children: external_prop_types_default().oneOfType([ + external_prop_types_default().arrayOf((external_prop_types_default()).node), + (external_prop_types_default()).node, + (external_prop_types_default()).element, + (external_prop_types_default()).string + ]), + className: (external_prop_types_default()).string, + disabled: (external_prop_types_default()).bool, + readOnly: (external_prop_types_default()).bool, + error: (external_prop_types_default()).string, + onChange: (external_prop_types_default()).func, + label: external_prop_types_default().oneOfType([ + external_prop_types_default().arrayOf((external_prop_types_default()).node), + (external_prop_types_default()).node, + (external_prop_types_default()).element, + (external_prop_types_default()).func, + (external_prop_types_default()).string + ]), + labelwidth: (external_prop_types_default()).string, + theme: (external_prop_types_default()).string, + type: (external_prop_types_default()).string, + // single || multiple + size: (external_prop_types_default()).string, + separated: (external_prop_types_default()).bool, + direction: (external_prop_types_default()).string, + value: external_prop_types_default().oneOfType([ + (external_prop_types_default()).bool, + (external_prop_types_default()).string + ]), + onDark: (external_prop_types_default()).bool, + wrapperClassName: (external_prop_types_default()).string +}; +Toggle.defaultProps = { + separated: false, + theme: "primary", + type: "single", + direction: "row" +}; +Toggle.Item = js_ToggleItemWrapper; +/* harmony default export */ const components_Toggle = (Toggle); + +;// CONCATENATED MODULE: ./src/form/components/StringBuilder/js/service.js +const stringToTokenString = (value, options) => { + let tempStr = value; + options.forEach((option) => { + tempStr = tempStr.replaceAll(option.id, `__TOKEN__${option.id}__TOKEN__`); + }); + return tempStr; +}; +const setCursorPos = (ref, pos) => { + setTimeout(() => { + ref.current.setSelectionRange(pos, pos); + }, 20); +}; + +;// CONCATENATED MODULE: ./src/form/components/StringBuilder/js/string-input.js + + + +function StringInput({ + setShowOptions, + tokenValue, + disabled, + placeholder, + tokens, + dropdownTriggerKey, + setStringBuilderHeight, + stringBuilderHeight, + setTokenString, + tokenString, + showOptions, + options, + setTokenValue, + inputRef, + setInputInFocus, + invalidTokenRegex, + name, + contextMaxLength +}) { + const [isPasteEvent, setIsPasteEvent] = (0,external_react_namespaceObject.useState)(false); + (0,external_react_namespaceObject.useEffect)(() => { + if (tokenValue) { + const tokenLen = tokenValue.length > 50 ? tokenValue.length / 5 : 0; + setStringBuilderHeight(inputRef.current.scrollHeight + tokenLen); + } + }, []); + const handleDelete = (e) => { + const { selectionEnd } = e.target; + if (selectionEnd === tokenValue.length) { + return; + } + const stringBeforeCursor = tokenValue.substring(0, selectionEnd); + const stringAfterCursor = tokenValue.slice(selectionEnd); + const tokenStringForStringAfterCursor = stringToTokenString( + stringAfterCursor, + options + ); + if (tokenStringForStringAfterCursor.startsWith("__TOKEN__")) { + const splitTokens = tokenStringForStringAfterCursor.split(/__TOKEN__(.*?)__TOKEN__/g).filter((t) => t !== ""); + const firstToken = splitTokens[0]; + const newTokenValue2 = `${stringBeforeCursor}${stringAfterCursor.substr(firstToken.length)}`; + const newTokenizedString2 = stringToTokenString(newTokenValue2, options); + setTokenString(newTokenizedString2); + setCursorPos(inputRef, selectionEnd); + return; + } + const newTokenValue = `${stringBeforeCursor}${stringAfterCursor.substr(1)}`; + const newTokenizedString = stringToTokenString(newTokenValue, options); + setTokenString(newTokenizedString); + setCursorPos(inputRef, selectionEnd); + }; + const handleBackSpace = (e) => { + const { selectionEnd } = e.target; + if (selectionEnd === tokenValue.length) { + const lastToken = tokens[(tokens == null ? void 0 : tokens.length) - 2]; + const lastCharsInString = tokenValue.slice(-(lastToken == null ? void 0 : lastToken.length)); + if (lastToken === lastCharsInString) { + e.preventDefault(); + setTokenString( + tokenString.slice(0, -`__TOKEN__${lastCharsInString}__TOKEN__`.length) + ); + return; + } + if (tokenValue.endsWith(" ")) { + const invalidToken2 = tokenValue.match(invalidTokenRegex); + const newTokenValue2 = tokenValue.slice(0, -` ${invalidToken2[invalidToken2.length - 1]} `.length); + const newTokenStr = stringToTokenString(newTokenValue2, options); + setTokenString(newTokenStr); + return; + } + setTokenString(tokenString.slice(0, -1)); + return; + } + const stringBeforeCursor = tokenValue.substring(0, selectionEnd); + const stringAfterCursor = tokenValue.slice(selectionEnd); + const tokenStringForStringBeforeCursor = stringToTokenString(stringBeforeCursor, options); + if (tokenStringForStringBeforeCursor.endsWith("__TOKEN__")) { + e.preventDefault(); + const splitTokens = tokenStringForStringBeforeCursor.split(/__TOKEN__(.*?)__TOKEN__/g); + const lastToken = splitTokens[splitTokens.length - 2]; + const newTokenValue2 = `${stringBeforeCursor.slice(0, -lastToken.length)}${stringAfterCursor}`; + const newTokenizedString2 = stringToTokenString(newTokenValue2, options); + setTokenString(newTokenizedString2); + setCursorPos(inputRef, selectionEnd - lastToken.length); + return; + } + const invalidToken = stringBeforeCursor.match(invalidTokenRegex); + if ((invalidToken == null ? void 0 : invalidToken[0]) && invalidToken.length === 1) { + e.preventDefault(); + const newTokenValue2 = `${stringBeforeCursor.replaceAll(invalidTokenRegex, "").trim()}${stringAfterCursor}`; + const newTokenizedString2 = stringToTokenString(newTokenValue2, options); + setTokenString(newTokenizedString2); + setCursorPos(inputRef, selectionEnd - ` ${invalidToken[0]} `.length); + return; + } + const newTokenValue = `${stringBeforeCursor.slice( + 0, + -1 + )}${stringAfterCursor}`; + const newTokenizedString = stringToTokenString(newTokenValue, options); + setTokenString(newTokenizedString); + setCursorPos(inputRef, selectionEnd - 1); + }; + const addCharacterToTokenString = (text, selectionStart) => { + if (selectionStart - 1 === tokenValue.length) { + setTokenString(`${tokenString}${text}`); + return; + } + const newTokenValue = tokenValue.slice(0, selectionStart - 1) + text + tokenValue.slice(selectionStart - 1); + const newTokenizedString = stringToTokenString(newTokenValue, options); + setTokenString(newTokenizedString); + }; + const handleTextSelection = (e, selectedText, key) => { + const allowedKeys = ["Delete", "Backspace"]; + if (key.length > 1 && allowedKeys.indexOf(key) === -1) { + return; + } + const { selectionEnd, selectionStart } = e.target; + const substitute = key.length > 1 ? "" : key; + if (selectedText.length > 1) { + const newStr = tokenValue.substring(0, selectionStart) + substitute + tokenValue.substring(selectionEnd); + const newTokenStr = stringToTokenString(newStr, options); + setTokenString(newTokenStr); + setCursorPos(inputRef, substitute.length ? selectionStart + 1 : selectionStart); + } + }; + const handleKeyDown = (e) => { + const { key } = e; + const { selectionEnd, selectionStart, value } = e.target; + const selectedText = value.substring(selectionStart, selectionEnd); + if (key === dropdownTriggerKey && !showOptions) { + e.preventDefault(); + setShowOptions(true); + return; + } + if (key === "Enter") { + e.preventDefault(); + return; + } + if (key === "Backspace") { + e.preventDefault(); + handleBackSpace(e); + } + if (key === "Delete") { + e.preventDefault(); + handleDelete(e); + } + if (e.metaKey && key === "x") { + setTokenString(""); + } + if (selectedText) { + e.preventDefault(); + handleTextSelection(e, selectedText, key); + } + }; + const handleOnChange = (e) => { + const { target } = e; + const { selectionStart, value } = target; + if (showOptions) { + setShowOptions(false); + } + setTokenValue(value); + if (value && !isPasteEvent) { + const text = value.charAt(selectionStart - 1); + addCharacterToTokenString(text, selectionStart); + } + setIsPasteEvent(false); + }; + const handlePasteEvent = (e) => { + e.preventDefault(); + const { clipboardData } = e; + const { selectionStart, selectionEnd } = e.target; + setIsPasteEvent(true); + let pasteString = clipboardData.getData("text/plain"); + if (selectionStart !== selectionEnd) { + pasteString = tokenValue.slice(0, selectionStart) + pasteString + tokenValue.slice(selectionEnd, tokenValue.length); + const newTokenString2 = stringToTokenString(pasteString, options); + setTokenString(newTokenString2); + return; + } + const newTokenString = stringToTokenString(pasteString, options); + addCharacterToTokenString(newTokenString, selectionStart); + }; + const handleOnFocus = () => { + setInputInFocus(true); + }; + return /* @__PURE__ */ external_react_default().createElement( + "textarea", + { + spellCheck: false, + disabled, + className: "string-builder__input", + value: tokenValue, + onChange: (e) => handleOnChange(e), + onKeyDown: (e) => handleKeyDown(e), + placeholder, + name, + ref: inputRef, + style: { height: `${stringBuilderHeight}px` }, + maxLength: contextMaxLength, + onPaste: handlePasteEvent, + onFocus: handleOnFocus, + onBlur: () => setInputInFocus(false) + } + ); +} +StringInput.propTypes = { + setShowOptions: (external_prop_types_default()).func, + tokenValue: (external_prop_types_default()).string, + disabled: (external_prop_types_default()).bool, + placeholder: (external_prop_types_default()).string, + tokenString: (external_prop_types_default()).string, + stringBuilderHeight: (external_prop_types_default()).number, + dropdownTriggerKey: (external_prop_types_default()).string, + setStringBuilderHeight: (external_prop_types_default()).func, + setTokenString: (external_prop_types_default()).func, + setTokenValue: (external_prop_types_default()).func, + setInputInFocus: (external_prop_types_default()).func, + showOptions: (external_prop_types_default()).bool, + tokens: external_prop_types_default().arrayOf((external_prop_types_default()).string), + options: external_prop_types_default().arrayOf( + external_prop_types_default().shape({ + id: (external_prop_types_default()).string.isRequired, + name: (external_prop_types_default()).string.isRequired, + className: (external_prop_types_default()).string, + desc: (external_prop_types_default()).string + }) + ), + inputRef: external_prop_types_default().instanceOf(Object), + invalidTokenRegex: external_prop_types_default().instanceOf(RegExp), + name: (external_prop_types_default()).string, + contextMaxLength: (external_prop_types_default()).number +}; + + +;// CONCATENATED MODULE: ./src/form/components/StringBuilder/js/invalid-token.js + + + + +const InvalidToken = (props) => { + const { token, findInvalidTokenSubstitute } = props; + return /* @__PURE__ */ external_react_default().createElement( + "span", + { + role: "main", + onClick: () => findInvalidTokenSubstitute(token), + onKeyDown: () => { + } + }, + /* @__PURE__ */ external_react_default().createElement(components_Tooltip, { render: "invalid token detected", position: "top" }, /* @__PURE__ */ external_react_default().createElement("span", { className: "invalid_token" }, `${token}`, /* @__PURE__ */ external_react_default().createElement(components_Icon, { type: "exclamation-circle" }))) + ); +}; +InvalidToken.propTypes = { + token: (external_prop_types_default()).string, + findInvalidTokenSubstitute: (external_prop_types_default()).func +}; +/* harmony default export */ const invalid_token = (InvalidToken); + +;// CONCATENATED MODULE: ./src/form/components/StringBuilder/js/tokenized-string.js + + + +const TokenizedString = (props) => { + const { + tokens, + options, + disabled, + invalidTokenRegex, + findInvalidTokenSubstitute + } = props; + const hasDuplicates = new Set(tokens).size !== tokens.length; + const allTokens = tokens && tokens.map((token) => { + if (options) { + const matchedOption = options.find((option) => option.id === token); + if (invalidTokenRegex && !matchedOption) { + const matchedTokens = token.replaceAll(" ", "").split(invalidTokenRegex); + if ((matchedTokens == null ? void 0 : matchedTokens.length) > 1) { + return /* @__PURE__ */ external_react_default().createElement("span", { key: `${token}${hasDuplicates && Math.random()}` }, matchedTokens.map((tkn) => { + if (tkn.match(invalidTokenRegex)) { + return /* @__PURE__ */ external_react_default().createElement( + invalid_token, + { + token: tkn, + findInvalidTokenSubstitute + } + ); + } + return /* @__PURE__ */ external_react_default().createElement("span", null, `${tkn} `); + })); + } + } + if (matchedOption) { + return /* @__PURE__ */ external_react_default().createElement( + "span", + { + key: `${token}${hasDuplicates && Math.random()}`, + className: `${matchedOption.className || "default-option-name"}` + }, + matchedOption.id + ); + } + } + return /* @__PURE__ */ external_react_default().createElement("span", { key: `${token}${hasDuplicates && Math.random()}` }, token); + }); + return /* @__PURE__ */ external_react_default().createElement( + "div", + { + className: `string-builder__styled ${disabled && "string-builder__disabled"}` + }, + allTokens + ); +}; +TokenizedString.propTypes = { + tokens: external_prop_types_default().arrayOf((external_prop_types_default()).string), + options: external_prop_types_default().arrayOf(external_prop_types_default().instanceOf(Object)), + disabled: (external_prop_types_default()).bool, + invalidTokenRegex: external_prop_types_default().instanceOf(RegExp), + findInvalidTokenSubstitute: (external_prop_types_default()).func +}; + +;// CONCATENATED MODULE: ./src/form/components/StringBuilder/js/options-list.js + + + +const OptionsList = ({ + options, + showOptions, + handleOptionSelection, + containerRef, + getThemeClasses, + setShowOptions, + allowSearch, + initialSearchValue +}) => { + const [filterValue, setFilterValue] = (0,external_react_namespaceObject.useState)(initialSearchValue); + const [filteredOptions, setFilteredOptions] = (0,external_react_namespaceObject.useState)(options); + (0,external_react_namespaceObject.useEffect)(() => { + setFilterValue(initialSearchValue); + }, [initialSearchValue]); + (0,external_react_namespaceObject.useEffect)(() => { + if (filterValue === "") { + setFilteredOptions(options); + return; + } + const newFilteredOptions = options.filter( + (option) => option.name.toLowerCase().includes(filterValue.toLowerCase()) + ); + setFilteredOptions(newFilteredOptions); + }, [filterValue]); + (0,external_react_namespaceObject.useEffect)(() => { + setFilteredOptions(options); + }, [options]); + if (!showOptions) { + return null; + } + return /* @__PURE__ */ external_react_default().createElement((external_react_default()).Fragment, null, /* @__PURE__ */ external_react_default().createElement( + components_FloatingContainer, + { + className: `string-builder-dropdown tyk-form-group ${getThemeClasses().join(" ")}`, + element: containerRef, + size: "matchElement", + displayAxis: "vertical" + }, + allowSearch && /* @__PURE__ */ external_react_default().createElement("div", { className: "string-builder-search" }, /* @__PURE__ */ external_react_default().createElement( + "input", + { + autoFocus: true, + className: "tyk-form-control", + value: filterValue, + placeholder: "Search parameter", + onChange: (e) => { + setFilterValue(e.target.value); + }, + onKeyDown: (e) => { + if (e.key === "Escape" || e.key === "ArrowUp" || e.key === "Enter") { + setShowOptions(false); + } + } + } + )), + /* @__PURE__ */ external_react_default().createElement("ul", { className: "string-builder-list" }, filteredOptions.map((option) => /* @__PURE__ */ external_react_default().createElement( + "li", + { + key: `${option.id}${Math.random()}`, + onMouseDown: () => handleOptionSelection(option) + }, + /* @__PURE__ */ external_react_default().createElement("span", { className: `url-builder__options_name ${option.className || "default-option-name"}` }, option.name), + option.desc && /* @__PURE__ */ external_react_default().createElement("span", { className: "url-builder__options_description" }, "\xA0 : \xA0", option.desc) + ))) + )); +}; +OptionsList.propTypes = { + options: external_prop_types_default().arrayOf(Object), + showOptions: (external_prop_types_default()).bool, + handleOptionSelection: (external_prop_types_default()).func, + getThemeClasses: (external_prop_types_default()).func, + setShowOptions: (external_prop_types_default()).func, + containerRef: external_prop_types_default().instanceOf(Object), + allowSearch: (external_prop_types_default()).bool, + initialSearchValue: (external_prop_types_default()).string +}; + +;// CONCATENATED MODULE: ./src/form/components/StringBuilder/js/string-builder-footer.js + + +const StringBuilderFooter = (props) => { + const { + note, + error, + inputInFocus, + stringBuilderHeight, + dropdownTriggerKey + } = props; + return /* @__PURE__ */ external_react_default().createElement( + "div", + { + className: "string-builder-footer", + style: { + marginTop: stringBuilderHeight ? `${stringBuilderHeight - 8}px` : "30px" + } + }, + inputInFocus && !error && /* @__PURE__ */ external_react_default().createElement("p", { className: "tyk-form-control__help-block" }, /* @__PURE__ */ external_react_default().createElement("span", null, "Enter", /* @__PURE__ */ external_react_default().createElement("span", { className: "string_builder_trigger" }, dropdownTriggerKey), "to add any parameter")), + note && /* @__PURE__ */ external_react_default().createElement("p", { className: "tyk-form-control__help-block" }, note), + error && error !== "true" && error !== "false" && /* @__PURE__ */ external_react_default().createElement("p", { className: "tyk-form-control__error-message" }, error) + ); +}; +StringBuilderFooter.propTypes = { + note: (external_prop_types_default()).string, + error: (external_prop_types_default()).string, + dropdownTriggerKey: (external_prop_types_default()).string, + inputInFocus: (external_prop_types_default()).bool, + stringBuilderHeight: (external_prop_types_default()).number +}; + +;// CONCATENATED MODULE: ./src/form/components/StringBuilder/index.js + + + + + + + + +function StringBuilder(props) { + const { + options, + onChange, + value, + theme, + error, + disabled, + readOnly, + note, + label, + labelwidth, + placeholder, + allowSearch, + dropdownTriggerKey, + invalidTokenRegex, + name, + wrapperClassName = "" + } = props; + const [tokenValue, setTokenValue] = (0,external_react_namespaceObject.useState)(value); + const [stringBuilderHeight, setStringBuilderHeight] = (0,external_react_namespaceObject.useState)(); + const [showOptions, setShowOptions] = (0,external_react_namespaceObject.useState)(false); + const [tokenString, setTokenString] = (0,external_react_namespaceObject.useState)(stringToTokenString(value, options)); + const [contextMaxLength, setContentMaxLength] = (0,external_react_namespaceObject.useState)( + tokenValue.length + 5 + ); + const [tokens, setTokens] = (0,external_react_namespaceObject.useState)([]); + const [prevTokenValue, setPrevTokenValue] = (0,external_react_namespaceObject.useState)(); + const [inputInFocus, setInputInFocus] = (0,external_react_namespaceObject.useState)(false); + const [initialSearchValue, setInitialSearchValue] = (0,external_react_namespaceObject.useState)(""); + const [selectedInvalidToken, setSelectedInvalidToken] = (0,external_react_namespaceObject.useState)(null); + const prevTokenString = hooks_usePrevious(tokenString); + const containerRef = (0,external_react_namespaceObject.useRef)(); + const inputRef = (0,external_react_namespaceObject.useRef)(); + (0,external_react_namespaceObject.useEffect)(() => { + if (onChange) { + onChange(tokenValue.replaceAll(" ", "")); + } + }, [tokenValue]); + (0,external_react_namespaceObject.useEffect)(() => { + const tempVal = invalidTokenRegex ? value.replaceAll(invalidTokenRegex, " $& ") : value; + setTokenValue(() => tempVal); + setTokenString(() => stringToTokenString(tempVal, options)); + }, [value]); + (0,external_react_namespaceObject.useEffect)(() => { + const splitTokens = tokenString.split(/__TOKEN__(.*?)__TOKEN__/g); + const splitTokensStr = splitTokens.join(""); + setTokens(() => splitTokens); + setTokenValue(() => splitTokensStr); + setPrevTokenValue(() => splitTokensStr); + }, [tokenString]); + (0,external_react_namespaceObject.useEffect)(() => { + if (contextMaxLength - 3 < tokenValue.length) { + const newHeight = inputRef.current.scrollHeight + 3; + setStringBuilderHeight(() => newHeight); + setContentMaxLength(() => contextMaxLength + 25); + } + }, [tokenString, tokenValue]); + const handleOptionSelection = (option) => { + let newInput = ""; + const { selectionStart } = inputRef.current; + if (prevTokenString && prevTokenString !== value && !selectedInvalidToken) { + newInput = prevTokenString + tokenValue.split(prevTokenValue)[1]; + } + let tokenizedString = ""; + if (selectionStart !== tokenValue.length && !selectedInvalidToken) { + const newTokenValue = tokenValue.slice(0, selectionStart) + option.id + tokenValue.slice(selectionStart); + tokenizedString = stringToTokenString(newTokenValue, options); + setCursorPos(inputRef, selectionStart + option.id.length); + } else { + tokenizedString = `${newInput || tokenValue}__TOKEN__${option.id}__TOKEN__`; + } + if (selectedInvalidToken) { + tokenizedString = tokenString.replace( + ` ${selectedInvalidToken} `, + `__TOKEN__${option.id}__TOKEN__` + ); + setSelectedInvalidToken(() => null); + setInitialSearchValue(() => ""); + } + setTokenString(() => tokenizedString); + setShowOptions(() => false); + setTimeout(() => { + inputRef.current.focus(); + }, 20); + }; + const getThemeClasses = () => { + const themes = theme ? theme.split(" ") : []; + return themes.map((iTheme) => `tyk-form-group--${iTheme}`); + }; + const getCssClasses = () => [ + "tyk-form-group", + ...getThemeClasses(), + error && "has-error", + disabled && "disabled" + ].filter(Boolean).join(" "); + const findInvalidTokenSubstitute = (invalidToken) => { + setSelectedInvalidToken(() => invalidToken); + setInitialSearchValue(() => invalidToken.replace(/[^a-zA-Z ]/g, "")); + setShowOptions(() => true); + }; + return /* @__PURE__ */ external_react_default().createElement("div", { className: `string-builder ${wrapperClassName}`, ref: containerRef }, /* @__PURE__ */ external_react_default().createElement("div", { className: getCssClasses() }, label && /* @__PURE__ */ external_react_default().createElement("label", { style: { flexBasis: labelwidth || "auto" } }, label), !readOnly && /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-form-control__wrapper" }, /* @__PURE__ */ external_react_default().createElement( + "div", + { + className: `tyk-form-control ${disabled && "string-builder__disabled"}`, + style: { height: `${stringBuilderHeight}px` } + }, + /* @__PURE__ */ external_react_default().createElement( + StringInput, + { + setInputInFocus, + setShowOptions, + tokenValue, + disabled, + placeholder, + allowSearch, + tokens, + dropdownTriggerKey, + setStringBuilderHeight, + stringBuilderHeight, + setTokenString, + tokenString, + showOptions, + options, + setTokenValue, + inputRef, + invalidTokenRegex, + name, + contextMaxLength, + setContentMaxLength + } + ), + /* @__PURE__ */ external_react_default().createElement( + TokenizedString, + { + tokens, + options, + disabled, + invalidTokenRegex, + findInvalidTokenSubstitute + } + ), + /* @__PURE__ */ external_react_default().createElement( + OptionsList, + { + showOptions, + options, + handleOptionSelection, + containerRef, + getThemeClasses, + setShowOptions, + allowSearch, + initialSearchValue + } + ), + /* @__PURE__ */ external_react_default().createElement( + StringBuilderFooter, + { + error, + note, + inputInFocus, + stringBuilderHeight, + dropdownTriggerKey + } + ) + )), readOnly && /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-form-control--readonly" }, value || "-"))); } +StringBuilder.propTypes = { + /** Options to render in the list */ + options: external_prop_types_default().arrayOf( + external_prop_types_default().shape({ + /** id is the value that will be appended to the string on selection */ + id: (external_prop_types_default()).string.isRequired, + /** name of option (view) */ + name: (external_prop_types_default()).string.isRequired, + /** to style / highlight the token */ + className: (external_prop_types_default()).string, + /** description of option */ + desc: (external_prop_types_default()).string + }) + ), + /** Callback executed on change of string value */ + onChange: (external_prop_types_default()).func, + /** Initial value */ + value: (external_prop_types_default()).string, + /** Disable input */ + disabled: (external_prop_types_default()).bool, + /** Read Only prop removes the form element and displays just the value */ + readOnly: (external_prop_types_default()).bool, + /** Show error state (w/ or w/o message) */ + error: (external_prop_types_default()).string, + /** Component theme */ + theme: (external_prop_types_default()).string, + /** Footnote for component */ + note: (external_prop_types_default()).string, + /** Label for component */ + label: external_prop_types_default().oneOfType([ + external_prop_types_default().arrayOf((external_prop_types_default()).node), + (external_prop_types_default()).node, + (external_prop_types_default()).element, + (external_prop_types_default()).func, + (external_prop_types_default()).string + ]), + /** Label Width for component */ + labelwidth: (external_prop_types_default()).string, + /** Placeholder for component */ + placeholder: (external_prop_types_default()).string, + /** Key To trigger dropdown */ + dropdownTriggerKey: (external_prop_types_default()).string, + /** Regex to detect invalid tokens in the value */ + invalidTokenRegex: external_prop_types_default().instanceOf(RegExp), + /** Allow users to search from options */ + allowSearch: (external_prop_types_default()).bool, + name: (external_prop_types_default()).string, + wrapperClassName: (external_prop_types_default()).string +}; +StringBuilder.defaultProps = { + onChange: null, + value: "", + options: [], + theme: "default" +}; +/* harmony default export */ const components_StringBuilder = (StringBuilder); + +;// CONCATENATED MODULE: ./src/utils/config/config.js +const config = { + FORM_DEBOUNCE: 200 +}; +function setConfig(key, val) { + config[key] = val; +} +/* harmony default export */ const config_config = (config); + +;// CONCATENATED MODULE: ./src/utils/formik/index.js +var formik_defProp = Object.defineProperty; +var formik_defProps = Object.defineProperties; +var formik_getOwnPropDescs = Object.getOwnPropertyDescriptors; +var formik_getOwnPropSymbols = Object.getOwnPropertySymbols; +var formik_hasOwnProp = Object.prototype.hasOwnProperty; +var formik_propIsEnum = Object.prototype.propertyIsEnumerable; +var formik_defNormalProp = (obj, key, value) => key in obj ? formik_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var formik_spreadValues = (a, b) => { + for (var prop in b || (b = {})) + if (formik_hasOwnProp.call(b, prop)) + formik_defNormalProp(a, prop, b[prop]); + if (formik_getOwnPropSymbols) + for (var prop of formik_getOwnPropSymbols(b)) { + if (formik_propIsEnum.call(b, prop)) + formik_defNormalProp(a, prop, b[prop]); + } + return a; +}; +var formik_spreadProps = (a, b) => formik_defProps(a, formik_getOwnPropDescs(b)); +var formik_objRest = (source, exclude) => { + var target = {}; + for (var prop in source) + if (formik_hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) + target[prop] = source[prop]; + if (source != null && formik_getOwnPropSymbols) + for (var prop of formik_getOwnPropSymbols(source)) { + if (exclude.indexOf(prop) < 0 && formik_propIsEnum.call(source, prop)) + target[prop] = source[prop]; + } + return target; +}; + + +function getValueFromPath(obj, path) { + const indexes = path.split(/[\][.]/).filter(Boolean); + return indexes.reduce((acc, v) => acc ? acc[v] : acc, obj); +} +function formik_debounce(f, limit) { + let timeoutId; + return (...args) => { + clearTimeout(timeoutId); + timeoutId = setTimeout(f, limit, ...args); + }; +} +const wrapper = (Component, options) => (_a) => { + var _b = _a, { field, form } = _b, properties = formik_objRest(_b, ["field", "form"]); + var _a2; + const DEFAULT_DEBOUNCE_TIME_MS = typeof config_config.FORM_DEBOUNCE === "number" ? config_config.FORM_DEBOUNCE : 200; + const [myValue, setMyValue] = (0,external_react_namespaceObject.useState)(field.value); + const opts = formik_spreadValues({ + getOnChangeProps: () => ({}), + hasIsFieldProp: false + }, options); + const executeDebounced = (0,external_react_namespaceObject.useCallback)((() => { + const fn = (f) => f(); + if (properties.debounce === false || config_config.FORM_DEBOUNCE === false && !properties.debounce) { + return fn; + } + const timeout = typeof properties.debounce === "number" ? properties.debounce : DEFAULT_DEBOUNCE_TIME_MS; + return formik_debounce(fn, timeout); + })(), []); + const getValue = (v) => { + if (v && v.target) { + if (v.target.nodeName === "INPUT" && (v.target.type === "checkbox" || v.target.type === "radio")) { + return v.target.checked; + } + return v.target.value; + } + return v; + }; + const onChange = (valueOrEvent) => { + const value = getValue(valueOrEvent); + const onChangeProps = opts.getOnChangeProps(value, field, form, properties); + const newValue = onChangeProps.value || properties.value || value; + executeDebounced(() => { + if (typeof properties.onChange === "function") { + properties.onChange(newValue); + } + field.onChange({ target: formik_spreadValues({ name: field.name, value: newValue }, onChangeProps) }); + }); + setMyValue(newValue); + }; + const formError = (getValueFromPath(form.touched, field.name) || Boolean(form.submitCount)) && getValueFromPath(form.errors, field.name); + const error = typeof formError === "string" ? formError : ""; + (0,external_react_namespaceObject.useEffect)(() => { + setMyValue(field.value); + }, [field.value]); + if ((_a2 = form.status) == null ? void 0 : _a2.disabled) + properties.disabled = true; + const componentProps = formik_spreadValues({}, properties); + delete componentProps.debounce; + return /* @__PURE__ */ external_react_default().createElement( + Component, + formik_spreadProps(formik_spreadValues(formik_spreadValues(formik_spreadProps(formik_spreadValues({}, field), { + error + }), opts.hasIsFieldProp ? { isfield: true } : {}), componentProps), { + checked: typeof properties.value === "string" ? field.value === properties.value : field.value, + onChange, + value: myValue, + input: { value: myValue, onChange } + }) + ); +}; +/* harmony default export */ const formik = (wrapper); + +;// CONCATENATED MODULE: ./src/form/formik/FormikCheckbox/index.js + + +/* harmony default export */ const FormikCheckbox = (formik(Checkbox, { + getOnChangeProps: (value) => ({ + checked: value + }) +})); + +;// CONCATENATED MODULE: ./src/form/formik/FormikCodeEditor/index.js + + +/* harmony default export */ const FormikCodeEditor = (formik(components_CodeEditor)); + +;// CONCATENATED MODULE: ./src/form/formik/FormikCombobox/index.js + + +/* harmony default export */ const FormikCombobox = (formik(Combobox)); + +;// CONCATENATED MODULE: ./src/form/formik/FormikCombobox2/index.js + + +/* harmony default export */ const FormikCombobox2 = (formik(components_Combobox2)); + +;// CONCATENATED MODULE: ./src/form/formik/FormikDatePicker/index.js + + +/* harmony default export */ const FormikDatePicker = (formik(components_DatePicker)); + +;// CONCATENATED MODULE: ./src/form/formik/FormikEditableList/index.js + + +/* harmony default export */ const FormikEditableList = (formik(EditableList, { + getOnChangeProps: (value) => ({ value: value || [] }) +})); + +;// CONCATENATED MODULE: ./src/form/formik/FormikEditableList2/index.js + + +/* harmony default export */ const FormikEditableList2 = (formik(components_EditableList2)); -.ace-tm .ace_print-margin { - width: 1px; - background: #e8e8e8; -} +;// CONCATENATED MODULE: ./src/form/formik/FormikFileInput/index.js -.ace-tm .ace_fold { - background-color: #6B72E6; -} -.ace-tm { - background-color: #FFFFFF; - color: black; -} +/* harmony default export */ const FormikFileInput = (formik(FileInput)); -.ace-tm .ace_cursor { - color: black; -} - -.ace-tm .ace_invisible { - color: rgb(191, 191, 191); -} +;// CONCATENATED MODULE: ./src/form/formik/FormikInput/index.js -.ace-tm .ace_storage, -.ace-tm .ace_keyword { - color: blue; -} -.ace-tm .ace_constant { - color: rgb(197, 6, 11); -} +/* harmony default export */ const FormikInput = (formik(Input, { hasIsFieldProp: true })); -.ace-tm .ace_constant.ace_buildin { - color: rgb(88, 72, 246); -} +;// CONCATENATED MODULE: ./src/form/formik/FormikInput2/index.js -.ace-tm .ace_constant.ace_language { - color: rgb(88, 92, 246); -} -.ace-tm .ace_constant.ace_library { - color: rgb(6, 150, 14); -} +/* harmony default export */ const FormikInput2 = (formik(components_Input2)); -.ace-tm .ace_invalid { - background-color: rgba(255, 0, 0, 0.1); - color: red; -} +;// CONCATENATED MODULE: ./src/form/formik/FormikMultiselect/index.js -.ace-tm .ace_support.ace_function { - color: rgb(60, 76, 114); -} -.ace-tm .ace_support.ace_constant { - color: rgb(6, 150, 14); -} +/* harmony default export */ const FormikMultiselect = (formik(components_Multiselect)); -.ace-tm .ace_support.ace_type, -.ace-tm .ace_support.ace_class { - color: rgb(109, 121, 222); -} +;// CONCATENATED MODULE: ./src/form/formik/FormikRadio/index.js -.ace-tm .ace_keyword.ace_operator { - color: rgb(104, 118, 135); -} -.ace-tm .ace_string { - color: rgb(3, 106, 7); -} +/* harmony default export */ const FormikRadio = (formik(Radio, { + getOnChangeProps: (value, field, form, properties) => ({ + checked: value === properties.value, + value: properties.value + }) +})); -.ace-tm .ace_comment { - color: rgb(76, 136, 107); -} +;// CONCATENATED MODULE: ./src/form/formik/FormikSelect/index.js -.ace-tm .ace_comment.ace_doc { - color: rgb(0, 102, 255); -} -.ace-tm .ace_comment.ace_doc.ace_tag { - color: rgb(128, 159, 191); -} +/* harmony default export */ const FormikSelect = (formik(Select, { hasIsFieldProp: true })); -.ace-tm .ace_constant.ace_numeric { - color: rgb(0, 0, 205); -} +;// CONCATENATED MODULE: ./src/form/formik/FormikSelectableList/index.js -.ace-tm .ace_variable { - color: rgb(49, 132, 149); -} -.ace-tm .ace_xml-pe { - color: rgb(104, 104, 91); -} +/* harmony default export */ const FormikSelectableList = (formik(components_SelectableList)); -.ace-tm .ace_entity.ace_name.ace_function { - color: #0000A2; -} +;// CONCATENATED MODULE: ./src/form/formik/FormikTextarea/index.js -.ace-tm .ace_heading { - color: rgb(12, 7, 255); -} +/* harmony default export */ const FormikTextarea = (formik(components_Textarea)); -.ace-tm .ace_list { - color:rgb(185, 6, 144); -} +;// CONCATENATED MODULE: ./src/form/formik/FormikToggle/index.js -.ace-tm .ace_meta.ace_tag { - color:rgb(0, 22, 142); -} -.ace-tm .ace_string.ace_regex { - color: rgb(255, 0, 0) -} +/* harmony default export */ const FormikToggle = (formik(components_Toggle)); -.ace-tm .ace_marker-layer .ace_selection { - background: rgb(181, 213, 255); -} -.ace-tm.ace_multiselect .ace_selection.ace_start { - box-shadow: 0 0 3px 0px white; -} -.ace-tm .ace_marker-layer .ace_step { - background: rgb(252, 255, 0); -} +;// CONCATENATED MODULE: ./src/form/formik/FormikStringBuilder/index.js -.ace-tm .ace_marker-layer .ace_stack { - background: rgb(164, 229, 101); -} -.ace-tm .ace_marker-layer .ace_bracket { - margin: -1px 0 0 -1px; - border: 1px solid rgb(192, 192, 192); -} +/* harmony default export */ const FormikStringBuilder = (formik(components_StringBuilder)); + +;// CONCATENATED MODULE: ./src/form/redux-form/FieldCodeEditor/index.js +var FieldCodeEditor_defProp = Object.defineProperty; +var FieldCodeEditor_defProps = Object.defineProperties; +var FieldCodeEditor_getOwnPropDescs = Object.getOwnPropertyDescriptors; +var FieldCodeEditor_getOwnPropSymbols = Object.getOwnPropertySymbols; +var FieldCodeEditor_hasOwnProp = Object.prototype.hasOwnProperty; +var FieldCodeEditor_propIsEnum = Object.prototype.propertyIsEnumerable; +var FieldCodeEditor_defNormalProp = (obj, key, value) => key in obj ? FieldCodeEditor_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var FieldCodeEditor_spreadValues = (a, b) => { + for (var prop in b || (b = {})) + if (FieldCodeEditor_hasOwnProp.call(b, prop)) + FieldCodeEditor_defNormalProp(a, prop, b[prop]); + if (FieldCodeEditor_getOwnPropSymbols) + for (var prop of FieldCodeEditor_getOwnPropSymbols(b)) { + if (FieldCodeEditor_propIsEnum.call(b, prop)) + FieldCodeEditor_defNormalProp(a, prop, b[prop]); + } + return a; +}; +var FieldCodeEditor_spreadProps = (a, b) => FieldCodeEditor_defProps(a, FieldCodeEditor_getOwnPropDescs(b)); +var FieldCodeEditor_objRest = (source, exclude) => { + var target = {}; + for (var prop in source) + if (FieldCodeEditor_hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) + target[prop] = source[prop]; + if (source != null && FieldCodeEditor_getOwnPropSymbols) + for (var prop of FieldCodeEditor_getOwnPropSymbols(source)) { + if (exclude.indexOf(prop) < 0 && FieldCodeEditor_propIsEnum.call(source, prop)) + target[prop] = source[prop]; + } + return target; +}; +var FieldCodeEditor_publicField = (obj, key, value) => { + FieldCodeEditor_defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); + return value; +}; -.ace-tm .ace_marker-layer .ace_active-line { - background: rgba(0, 0, 0, 0.07); -} -.ace-tm .ace_gutter-active-line { - background-color : #dcdcdc; -} -.ace-tm .ace_marker-layer .ace_selected-word { - background: rgb(250, 250, 255); - border: 1px solid rgb(200, 200, 250); + +class FieldCodeEditor extends external_react_namespaceObject.Component { + constructor(props) { + super(props); + this.handleOnChange = this.handleOnChange.bind(this); + } + getInputError() { + const { meta, validationmessages } = this.props; + const { touched, error, warning } = meta; + let message = null; + if (touched && error && validationmessages[error]) { + message = validationmessages[error]; + } else if (touched && warning) { + message = "warning"; + } + return message; + } + handleOnChange(value) { + const { input } = this.prop; + const { onChange } = input; + onChange((0,external_immutable_namespaceObject.fromJS)(value)); + } + render() { + const _a = this.props, { input } = _a, rest = FieldCodeEditor_objRest(_a, ["input"]); + return /* @__PURE__ */ external_react_default().createElement( + components_CodeEditor, + FieldCodeEditor_spreadProps(FieldCodeEditor_spreadValues(FieldCodeEditor_spreadValues({}, input), rest), { + error: this.getInputError() + }) + ); + } } +FieldCodeEditor_publicField(FieldCodeEditor, "propTypes", { + input: external_prop_types_default().instanceOf(Object), + meta: external_prop_types_default().instanceOf(Object), + validationmessages: external_prop_types_default().instanceOf(Object) +}); -.ace-tm .ace_indent-guide { - background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y; +;// CONCATENATED MODULE: ./src/form/redux-form/FieldCombobox/index.js +var FieldCombobox_defProp = Object.defineProperty; +var FieldCombobox_defProps = Object.defineProperties; +var FieldCombobox_getOwnPropDescs = Object.getOwnPropertyDescriptors; +var FieldCombobox_getOwnPropSymbols = Object.getOwnPropertySymbols; +var FieldCombobox_hasOwnProp = Object.prototype.hasOwnProperty; +var FieldCombobox_propIsEnum = Object.prototype.propertyIsEnumerable; +var FieldCombobox_defNormalProp = (obj, key, value) => key in obj ? FieldCombobox_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var FieldCombobox_spreadValues = (a, b) => { + for (var prop in b || (b = {})) + if (FieldCombobox_hasOwnProp.call(b, prop)) + FieldCombobox_defNormalProp(a, prop, b[prop]); + if (FieldCombobox_getOwnPropSymbols) + for (var prop of FieldCombobox_getOwnPropSymbols(b)) { + if (FieldCombobox_propIsEnum.call(b, prop)) + FieldCombobox_defNormalProp(a, prop, b[prop]); + } + return a; +}; +var FieldCombobox_spreadProps = (a, b) => FieldCombobox_defProps(a, FieldCombobox_getOwnPropDescs(b)); +var FieldCombobox_objRest = (source, exclude) => { + var target = {}; + for (var prop in source) + if (FieldCombobox_hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) + target[prop] = source[prop]; + if (source != null && FieldCombobox_getOwnPropSymbols) + for (var prop of FieldCombobox_getOwnPropSymbols(source)) { + if (exclude.indexOf(prop) < 0 && FieldCombobox_propIsEnum.call(source, prop)) + target[prop] = source[prop]; + } + return target; +}; +var FieldCombobox_publicField = (obj, key, value) => { + FieldCombobox_defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); + return value; +}; + + + + +class FieldCombobox extends external_react_namespaceObject.Component { + constructor(props) { + super(props); + this.handleOnChange = this.handleOnChange.bind(this); + } + getComboboxError() { + const { meta, validationmessages } = this.props; + const { touched, error, warning } = meta; + let message = null; + if (touched && error && validationmessages[error]) { + message = validationmessages[error]; + } else if (touched && warning) { + message = "warning"; + } + return message; + } + handleOnChange(value) { + const { input } = this.props; + const { onChange } = input; + onChange((0,external_immutable_namespaceObject.fromJS)(value)); + } + render() { + const props = FieldCombobox_objRest(this.props, []); + return /* @__PURE__ */ external_react_default().createElement( + Combobox, + FieldCombobox_spreadProps(FieldCombobox_spreadValues({}, props), { + onChange: this.handleOnChange, + value: !props.input.value ? props.input.value : props.input.value.toJS(), + error: this.getComboboxError() + }) + ); + } } +FieldCombobox_publicField(FieldCombobox, "propTypes", { + meta: external_prop_types_default().instanceOf(Object), + input: external_prop_types_default().instanceOf(Object), + validationmessages: external_prop_types_default().instanceOf(Object) +}); + +;// CONCATENATED MODULE: ./src/form/redux-form/FieldDropdown/index.js +var FieldDropdown_defProp = Object.defineProperty; +var FieldDropdown_defProps = Object.defineProperties; +var FieldDropdown_getOwnPropDescs = Object.getOwnPropertyDescriptors; +var FieldDropdown_getOwnPropSymbols = Object.getOwnPropertySymbols; +var FieldDropdown_hasOwnProp = Object.prototype.hasOwnProperty; +var FieldDropdown_propIsEnum = Object.prototype.propertyIsEnumerable; +var FieldDropdown_defNormalProp = (obj, key, value) => key in obj ? FieldDropdown_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var FieldDropdown_spreadValues = (a, b) => { + for (var prop in b || (b = {})) + if (FieldDropdown_hasOwnProp.call(b, prop)) + FieldDropdown_defNormalProp(a, prop, b[prop]); + if (FieldDropdown_getOwnPropSymbols) + for (var prop of FieldDropdown_getOwnPropSymbols(b)) { + if (FieldDropdown_propIsEnum.call(b, prop)) + FieldDropdown_defNormalProp(a, prop, b[prop]); + } + return a; +}; +var FieldDropdown_spreadProps = (a, b) => FieldDropdown_defProps(a, FieldDropdown_getOwnPropDescs(b)); +var FieldDropdown_objRest = (source, exclude) => { + var target = {}; + for (var prop in source) + if (FieldDropdown_hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) + target[prop] = source[prop]; + if (source != null && FieldDropdown_getOwnPropSymbols) + for (var prop of FieldDropdown_getOwnPropSymbols(source)) { + if (exclude.indexOf(prop) < 0 && FieldDropdown_propIsEnum.call(source, prop)) + target[prop] = source[prop]; + } + return target; +}; +var FieldDropdown_publicField = (obj, key, value) => { + FieldDropdown_defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); + return value; +}; + + -.ace-tm .ace_indent-guide-active { - background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAAZSURBVHjaYvj///9/hivKyv8BAAAA//8DACLqBhbvk+/eAAAAAElFTkSuQmCC") right repeat-y; + +class FieldDropdown extends external_react_namespaceObject.Component { + constructor(props) { + super(props); + this.handleOnChange = this.handleOnChange.bind(this); + } + handleOnChange(value) { + const { input } = this.props; + const { onChange } = input; + onChange((0,external_immutable_namespaceObject.fromJS)(value)); + } + render() { + const _a = this.props, { + children, + input + } = _a, rest = FieldDropdown_objRest(_a, [ + "children", + "input" + ]); + return /* @__PURE__ */ external_react_default().createElement( + components_Dropdown, + FieldDropdown_spreadProps(FieldDropdown_spreadValues({}, rest), { + onSelect: this.handleOnChange, + selectedItem: input.value + }), + children + ); + } } -`}),ace.define("ace/theme/textmate",["require","exports","module","ace/theme/textmate-css","ace/lib/dom"],function(n,M,G){"use strict";M.isDark=!1,M.cssClass="ace-tm",M.cssText=n("./textmate-css"),M.$id="ace/theme/textmate";var L=n("../lib/dom");L.importCssString(M.cssText,M.cssClass,!1)}),ace.define("ace/config",["require","exports","module","ace/lib/lang","ace/lib/net","ace/lib/dom","ace/lib/app_config","ace/theme/textmate"],function(n,M,G){"no use strict";var L=n("./lib/lang"),T=n("./lib/net"),C=n("./lib/dom"),d=n("./lib/app_config").AppConfig;G.exports=M=new d;var h={packaged:!1,workerPath:null,modePath:null,themePath:null,basePath:"",suffix:".js",$moduleUrls:{},loadWorkerFromBlob:!0,sharedPopups:!1,useStrictCSP:null};M.get=function(i){if(!h.hasOwnProperty(i))throw new Error("Unknown config key: "+i);return h[i]},M.set=function(i,r){if(h.hasOwnProperty(i))h[i]=r;else if(this.setDefaultValue("",i,r)==!1)throw new Error("Unknown config key: "+i);i=="useStrictCSP"&&C.useStrictCSP(r)},M.all=function(){return L.copyObject(h)},M.$modes={},M.moduleUrl=function(i,r){if(h.$moduleUrls[i])return h.$moduleUrls[i];var a=i.split("/");r=r||a[a.length-2]||"";var c=r=="snippets"?"/":"-",p=a[a.length-1];if(r=="worker"&&c=="-"){var g=new RegExp("^"+r+"[\\-_]|[\\-_]"+r+"$","g");p=p.replace(g,"")}(!p||p==r)&&a.length>1&&(p=a[a.length-2]);var A=h[r+"Path"];return A==null?A=h.basePath:c=="/"&&(r=c=""),A&&A.slice(-1)!="/"&&(A+="/"),A+r+c+p+this.get("suffix")},M.setModuleUrl=function(i,r){return h.$moduleUrls[i]=r};var l=function(i,r){if(i==="ace/theme/textmate"||i==="./theme/textmate")return r(null,n("./theme/textmate"));if(o)return o(i,r);console.error("loader is not configured")},o;M.setLoader=function(i){o=i},M.dynamicModules=Object.create(null),M.$loading={},M.$loaded={},M.loadModule=function(i,r){var a,c;Array.isArray(i)&&(c=i[0],i=i[1]);var p=function(g){if(g&&!M.$loading[i])return r&&r(g);if(M.$loading[i]||(M.$loading[i]=[]),M.$loading[i].push(r),!(M.$loading[i].length>1)){var A=function(){l(i,function(b,$){$&&(M.$loaded[i]=$),M._emit("load.module",{name:i,module:$});var S=M.$loading[i];M.$loading[i]=null,S.forEach(function(v){v&&v($)})})};if(!M.get("packaged"))return A();T.loadScript(M.moduleUrl(i,c),A),s()}};if(M.dynamicModules[i])M.dynamicModules[i]().then(function(g){g.default?p(g.default):p(g)});else{try{a=this.$require(i)}catch(g){}p(a||M.$loaded[i])}},M.$require=function(i){if(typeof G.require=="function"){var r="require";return G[r](i)}},M.setModuleLoader=function(i,r){M.dynamicModules[i]=r};var s=function(){!h.basePath&&!h.workerPath&&!h.modePath&&!h.themePath&&!Object.keys(h.$moduleUrls).length&&(console.error("Unable to infer path to ace from script src,","use ace.config.set('basePath', 'path') to enable dynamic loading of modes and themes","or with webpack use ace/webpack-resolver"),s=function(){})};M.version="1.31.2"}),ace.define("ace/loader_build",["require","exports","module","ace/lib/fixoldbrowsers","ace/config"],function(n,M,G){"use strict";n("./lib/fixoldbrowsers");var L=n("./config");L.setLoader(function(h,l){n([h],function(o){l(null,o)})});var T=function(){return this||typeof window!="undefined"&&window}();G.exports=function(h){L.init=C,L.$require=n,h.require=n,h.define=f0.amdD},C(!0);function C(h){if(!(!T||!T.document)){L.set("packaged",h||n.packaged||G.packaged||T.define&&f0.amdD.packaged);var l={},o="",s=document.currentScript||document._currentScript,i=s&&s.ownerDocument||document;s&&s.src&&(o=s.src.split(/[?#]/)[0].split("/").slice(0,-1).join("/")||"");for(var r=i.getElementsByTagName("script"),a=0;a ["+this.end.row+"/"+this.end.column+"]"},C.prototype.contains=function(d,h){return this.compare(d,h)==0},C.prototype.compareRange=function(d){var h,l=d.end,o=d.start;return h=this.compare(l.row,l.column),h==1?(h=this.compare(o.row,o.column),h==1?2:h==0?1:0):h==-1?-2:(h=this.compare(o.row,o.column),h==-1?-1:h==1?42:0)},C.prototype.comparePoint=function(d){return this.compare(d.row,d.column)},C.prototype.containsRange=function(d){return this.comparePoint(d.start)==0&&this.comparePoint(d.end)==0},C.prototype.intersects=function(d){var h=this.compareRange(d);return h==-1||h==0||h==1},C.prototype.isEnd=function(d,h){return this.end.row==d&&this.end.column==h},C.prototype.isStart=function(d,h){return this.start.row==d&&this.start.column==h},C.prototype.setStart=function(d,h){typeof d=="object"?(this.start.column=d.column,this.start.row=d.row):(this.start.row=d,this.start.column=h)},C.prototype.setEnd=function(d,h){typeof d=="object"?(this.end.column=d.column,this.end.row=d.row):(this.end.row=d,this.end.column=h)},C.prototype.inside=function(d,h){return this.compare(d,h)==0?!(this.isEnd(d,h)||this.isStart(d,h)):!1},C.prototype.insideStart=function(d,h){return this.compare(d,h)==0?!this.isEnd(d,h):!1},C.prototype.insideEnd=function(d,h){return this.compare(d,h)==0?!this.isStart(d,h):!1},C.prototype.compare=function(d,h){return!this.isMultiLine()&&d===this.start.row?hthis.end.column?1:0:dthis.end.row?1:this.start.row===d?h>=this.start.column?0:-1:this.end.row===d?h<=this.end.column?0:1:0},C.prototype.compareStart=function(d,h){return this.start.row==d&&this.start.column==h?-1:this.compare(d,h)},C.prototype.compareEnd=function(d,h){return this.end.row==d&&this.end.column==h?1:this.compare(d,h)},C.prototype.compareInside=function(d,h){return this.end.row==d&&this.end.column==h?1:this.start.row==d&&this.start.column==h?-1:this.compare(d,h)},C.prototype.clipRows=function(d,h){if(this.end.row>h)var l={row:h+1,column:0};else if(this.end.rowh)var o={row:h+1,column:0};else if(this.start.row key in obj ? FieldPagination_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var FieldPagination_spreadValues = (a, b) => { + for (var prop in b || (b = {})) + if (FieldPagination_hasOwnProp.call(b, prop)) + FieldPagination_defNormalProp(a, prop, b[prop]); + if (FieldPagination_getOwnPropSymbols) + for (var prop of FieldPagination_getOwnPropSymbols(b)) { + if (FieldPagination_propIsEnum.call(b, prop)) + FieldPagination_defNormalProp(a, prop, b[prop]); + } + return a; +}; +var FieldPagination_spreadProps = (a, b) => FieldPagination_defProps(a, FieldPagination_getOwnPropDescs(b)); +var FieldPagination_objRest = (source, exclude) => { + var target = {}; + for (var prop in source) + if (FieldPagination_hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) + target[prop] = source[prop]; + if (source != null && FieldPagination_getOwnPropSymbols) + for (var prop of FieldPagination_getOwnPropSymbols(source)) { + if (exclude.indexOf(prop) < 0 && FieldPagination_propIsEnum.call(source, prop)) + target[prop] = source[prop]; + } + return target; +}; -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. -SproutCore and the SproutCore logo are trademarks of Sprout Systems, Inc. +const FieldPagination = (props) => { + const _a = props, { input } = _a, rest = FieldPagination_objRest(_a, ["input"]); + return /* @__PURE__ */ external_react_default().createElement( + Pagination, + FieldPagination_spreadProps(FieldPagination_spreadValues(FieldPagination_spreadValues({}, input), rest), { + onChange: input.onChange, + value: input.value ? input.value : 0 + }) + ); +}; +FieldPagination.propTypes = { + input: external_prop_types_default().instanceOf(Object) +}; +/* harmony default export */ const redux_form_FieldPagination = (FieldPagination); -For more information about SproutCore, visit http://www.sproutcore.com +;// CONCATENATED MODULE: ./src/form/redux-form/FieldCombobox2/index.js +var FieldCombobox2_defProp = Object.defineProperty; +var FieldCombobox2_defProps = Object.defineProperties; +var FieldCombobox2_getOwnPropDescs = Object.getOwnPropertyDescriptors; +var FieldCombobox2_getOwnPropSymbols = Object.getOwnPropertySymbols; +var FieldCombobox2_hasOwnProp = Object.prototype.hasOwnProperty; +var FieldCombobox2_propIsEnum = Object.prototype.propertyIsEnumerable; +var FieldCombobox2_defNormalProp = (obj, key, value) => key in obj ? FieldCombobox2_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var FieldCombobox2_spreadValues = (a, b) => { + for (var prop in b || (b = {})) + if (FieldCombobox2_hasOwnProp.call(b, prop)) + FieldCombobox2_defNormalProp(a, prop, b[prop]); + if (FieldCombobox2_getOwnPropSymbols) + for (var prop of FieldCombobox2_getOwnPropSymbols(b)) { + if (FieldCombobox2_propIsEnum.call(b, prop)) + FieldCombobox2_defNormalProp(a, prop, b[prop]); + } + return a; +}; +var FieldCombobox2_spreadProps = (a, b) => FieldCombobox2_defProps(a, FieldCombobox2_getOwnPropDescs(b)); -========================================================================== -@license */"use strict";var L=n("./oop"),T=function(){var C={MODIFIER_KEYS:{16:"Shift",17:"Ctrl",18:"Alt",224:"Meta",91:"MetaLeft",92:"MetaRight",93:"ContextMenu"},KEY_MODS:{ctrl:1,alt:2,option:2,shift:4,super:8,meta:8,command:8,cmd:8,control:1},FUNCTION_KEYS:{8:"Backspace",9:"Tab",13:"Return",19:"Pause",27:"Esc",32:"Space",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"Left",38:"Up",39:"Right",40:"Down",44:"Print",45:"Insert",46:"Delete",96:"Numpad0",97:"Numpad1",98:"Numpad2",99:"Numpad3",100:"Numpad4",101:"Numpad5",102:"Numpad6",103:"Numpad7",104:"Numpad8",105:"Numpad9","-13":"NumpadEnter",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",144:"Numlock",145:"Scrolllock"},PRINTABLE_KEYS:{32:" ",48:"0",49:"1",50:"2",51:"3",52:"4",53:"5",54:"6",55:"7",56:"8",57:"9",59:";",61:"=",65:"a",66:"b",67:"c",68:"d",69:"e",70:"f",71:"g",72:"h",73:"i",74:"j",75:"k",76:"l",77:"m",78:"n",79:"o",80:"p",81:"q",82:"r",83:"s",84:"t",85:"u",86:"v",87:"w",88:"x",89:"y",90:"z",107:"+",109:"-",110:".",186:";",187:"=",188:",",189:"-",190:".",191:"/",192:"`",219:"[",220:"\\",221:"]",222:"'",111:"/",106:"*"}};C.PRINTABLE_KEYS[173]="-";var d,h;for(h in C.FUNCTION_KEYS)d=C.FUNCTION_KEYS[h].toLowerCase(),C[d]=parseInt(h,10);for(h in C.PRINTABLE_KEYS)d=C.PRINTABLE_KEYS[h].toLowerCase(),C[d]=parseInt(h,10);return L.mixin(C,C.MODIFIER_KEYS),L.mixin(C,C.PRINTABLE_KEYS),L.mixin(C,C.FUNCTION_KEYS),C.enter=C.return,C.escape=C.esc,C.del=C.delete,function(){for(var l=["cmd","ctrl","alt","shift"],o=Math.pow(2,l.length);o--;)C.KEY_MODS[o]=l.filter(function(s){return o&C.KEY_MODS[s]}).join("-")+"-"}(),C.KEY_MODS[0]="",C.KEY_MODS[-1]="input-",C}();L.mixin(M,T),M.default=M,M.keyCodeToString=function(C){var d=T[C];return typeof d!="string"&&(d=String.fromCharCode(C)),d.toLowerCase()}}),ace.define("ace/lib/event",["require","exports","module","ace/lib/keys","ace/lib/useragent"],function(n,M,G){"use strict";var L=n("./keys"),T=n("./useragent"),C=null,d=0,h;function l(){h=!1;try{document.createComment("").addEventListener("test",function(){},{get passive(){h={passive:!1}}})}catch(A){}}function o(){return h==null&&l(),h}function s(A,b,$){this.elem=A,this.type=b,this.callback=$}s.prototype.destroy=function(){r(this.elem,this.type,this.callback),this.elem=this.type=this.callback=void 0};var i=M.addListener=function(A,b,$,S){A.addEventListener(b,$,o()),S&&S.$toDestroy.push(new s(A,b,$))},r=M.removeListener=function(A,b,$){A.removeEventListener(b,$,o())};M.stopEvent=function(A){return M.stopPropagation(A),M.preventDefault(A),!1},M.stopPropagation=function(A){A.stopPropagation&&A.stopPropagation()},M.preventDefault=function(A){A.preventDefault&&A.preventDefault()},M.getButton=function(A){return A.type=="dblclick"?0:A.type=="contextmenu"||T.isMac&&A.ctrlKey&&!A.altKey&&!A.shiftKey?2:A.button},M.capture=function(A,b,$){var S=A&&A.ownerDocument||document;function v(w){b&&b(w),$&&$(w),r(S,"mousemove",b),r(S,"mouseup",v),r(S,"dragstart",v)}return i(S,"mousemove",b),i(S,"mouseup",v),i(S,"dragstart",v),v},M.addMouseWheelListener=function(A,b,$){i(A,"wheel",function(S){var v=.15,w=S.deltaX||0,O=S.deltaY||0;switch(S.deltaMode){case S.DOM_DELTA_PIXEL:S.wheelX=w*v,S.wheelY=O*v;break;case S.DOM_DELTA_LINE:var B=15;S.wheelX=w*B,S.wheelY=O*B;break;case S.DOM_DELTA_PAGE:var k=150;S.wheelX=w*k,S.wheelY=O*k;break}b(S)},$)},M.addMultiMouseDownListener=function(A,b,$,S,v){var w=0,O,B,k,_={2:"dblclick",3:"tripleclick",4:"quadclick"};function y(m){if(M.getButton(m)!==0?w=0:m.detail>1?(w++,w>4&&(w=1)):w=1,T.isIE){var E=Math.abs(m.clientX-O)>5||Math.abs(m.clientY-B)>5;(!k||E)&&(w=1),k&&clearTimeout(k),k=setTimeout(function(){k=null},b[w-1]||600),w==1&&(O=m.clientX,B=m.clientY)}if(m._clicks=w,$[S]("mousedown",m),w>4)w=0;else if(w>1)return $[S](_[w],m)}Array.isArray(A)||(A=[A]),A.forEach(function(m){i(m,"mousedown",y,v)})};var a=function(A){return 0|(A.ctrlKey?1:0)|(A.altKey?2:0)|(A.shiftKey?4:0)|(A.metaKey?8:0)};M.getModifierString=function(A){return L.KEY_MODS[a(A)]};function c(A,b,$){var S=a(b);if(!T.isMac&&C){if(b.getModifierState&&(b.getModifierState("OS")||b.getModifierState("Win"))&&(S|=8),C.altGr)if((3&S)!=3)C.altGr=0;else return;if($===18||$===17){var v="location"in b?b.location:b.keyLocation;if($===17&&v===1)C[$]==1&&(d=b.timeStamp);else if($===18&&S===3&&v===2){var w=b.timeStamp-d;w<50&&(C.altGr=!0)}}}if($ in L.MODIFIER_KEYS&&($=-1),!S&&$===13){var v="location"in b?b.location:b.keyLocation;if(v===3&&(A(b,S,-$),b.defaultPrevented))return}if(T.isChromeOS&&S&8){if(A(b,S,$),b.defaultPrevented)return;S&=-9}return!S&&!($ in L.FUNCTION_KEYS)&&!($ in L.PRINTABLE_KEYS)?!1:A(b,S,$)}M.addCommandKeyListener=function(A,b,$){if(T.isOldGecko||T.isOpera&&!("KeyboardEvent"in window)){var S=null;i(A,"keydown",function(w){S=w.keyCode},$),i(A,"keypress",function(w){return c(b,w,S)},$)}else{var v=null;i(A,"keydown",function(w){C[w.keyCode]=(C[w.keyCode]||0)+1;var O=c(b,w,w.keyCode);return v=w.defaultPrevented,O},$),i(A,"keypress",function(w){v&&(w.ctrlKey||w.altKey||w.shiftKey||w.metaKey)&&(M.stopEvent(w),v=null)},$),i(A,"keyup",function(w){C[w.keyCode]=null},$),C||(p(),i(window,"focus",p))}};function p(){C=Object.create(null)}if(typeof window=="object"&&window.postMessage&&!T.isOldIE){var g=1;M.nextTick=function(A,b){b=b||window;var $="zero-timeout-message-"+g++,S=function(v){v.data==$&&(M.stopPropagation(v),r(b,"message",S),A())};i(b,"message",S),b.postMessage($,"*")}}M.$idleBlocked=!1,M.onIdle=function(A,b){return setTimeout(function $(){M.$idleBlocked?setTimeout($,100):A()},b)},M.$idleBlockId=null,M.blockIdle=function(A){M.$idleBlockId&&clearTimeout(M.$idleBlockId),M.$idleBlocked=!0,M.$idleBlockId=setTimeout(function(){M.$idleBlocked=!1},A||100)},M.nextFrame=typeof window=="object"&&(window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame||window.oRequestAnimationFrame),M.nextFrame?M.nextFrame=M.nextFrame.bind(window):M.nextFrame=function(A){setTimeout(A,17)}}),ace.define("ace/clipboard",["require","exports","module"],function(n,M,G){"use strict";var L;G.exports={lineMode:!1,pasteCancelled:function(){return L&&L>Date.now()-50?!0:L=!1},cancel:function(){L=Date.now()}}}),ace.define("ace/keyboard/textinput",["require","exports","module","ace/lib/event","ace/config","ace/lib/useragent","ace/lib/dom","ace/lib/lang","ace/clipboard","ace/lib/keys"],function(n,M,G){"use strict";var L=n("../lib/event"),T=n("../config").nls,C=n("../lib/useragent"),d=n("../lib/dom"),h=n("../lib/lang"),l=n("../clipboard"),o=C.isChrome<18,s=C.isIE,i=C.isChrome>63,r=400,a=n("../lib/keys"),c=a.KEY_MODS,p=C.isIOS,g=p?/\s/:/\n/,A=C.isMobile,b=function($,S){var v=d.createElement("textarea");v.className="ace_text-input",v.setAttribute("wrap","off"),v.setAttribute("autocorrect","off"),v.setAttribute("autocapitalize","off"),v.setAttribute("spellcheck",!1),v.style.opacity="0",$.insertBefore(v,$.firstChild);var w=!1,O=!1,B=!1,k=!1,_="";A||(v.style.fontSize="1px");var y=!1,m=!1,E="",I=0,N=0,W=0,z=Number.MAX_SAFE_INTEGER,U=Number.MIN_SAFE_INTEGER,j=0;try{var q=document.activeElement===v}catch(a0){}this.setNumberOfExtraLines=function(a0){if(z=Number.MAX_SAFE_INTEGER,U=Number.MIN_SAFE_INTEGER,a0<0){j=0;return}j=a0},this.setAriaOptions=function(a0){if(a0.activeDescendant?(v.setAttribute("aria-haspopup","true"),v.setAttribute("aria-autocomplete",a0.inline?"both":"list"),v.setAttribute("aria-activedescendant",a0.activeDescendant)):(v.setAttribute("aria-haspopup","false"),v.setAttribute("aria-autocomplete","both"),v.removeAttribute("aria-activedescendant")),a0.role&&v.setAttribute("role",a0.role),a0.setLabel&&(v.setAttribute("aria-roledescription",T("editor")),S.session)){var x0=S.session.selection.cursor.row;v.setAttribute("aria-label",T("Cursor at row $0",[x0+1]))}},this.setAriaOptions({role:"textbox"}),L.addListener(v,"blur",function(a0){m||(S.onBlur(a0),q=!1)},S),L.addListener(v,"focus",function(a0){if(!m){if(q=!0,C.isEdge)try{if(!document.hasFocus())return}catch(x0){}S.onFocus(a0),C.isEdge?setTimeout(t0):t0()}},S),this.$focusScroll=!1,this.focus=function(){if(this.setAriaOptions({setLabel:S.renderer.enableKeyboardAccessibility}),_||i||this.$focusScroll=="browser")return v.focus({preventScroll:!0});var a0=v.style.top;v.style.position="fixed",v.style.top="0px";try{var x0=v.getBoundingClientRect().top!=0}catch(D0){return}var _0=[];if(x0)for(var F0=v.parentElement;F0&&F0.nodeType==1;)_0.push(F0),F0.setAttribute("ace_nocontext",!0),!F0.parentElement&&F0.getRootNode?F0=F0.getRootNode().host:F0=F0.parentElement;v.focus({preventScroll:!0}),x0&&_0.forEach(function(D0){D0.removeAttribute("ace_nocontext")}),setTimeout(function(){v.style.position="",v.style.top=="0px"&&(v.style.top=a0)},0)},this.blur=function(){v.blur()},this.isFocused=function(){return q},S.on("beforeEndOperation",function(){var a0=S.curOp,x0=a0&&a0.command&&a0.command.name;if(x0!="insertstring"){var _0=x0&&(a0.docChanged||a0.selectionChanged);B&&_0&&(E=v.value="",m5()),t0()}});var Y=function(a0,x0){for(var _0=x0,F0=1;F0<=a0-z&&F0<2*j+1;F0++)_0+=S.session.getLine(a0-F0).length+1;return _0},t0=p?function(a0){if(!(!q||w&&!a0||k)){a0||(a0="");var x0=` - ab`+a0+`cde fg -`;x0!=v.value&&(v.value=E=x0);var _0=4,F0=4+(a0.length||(S.selection.isEmpty()?0:1));(I!=_0||N!=F0)&&v.setSelectionRange(_0,F0),I=_0,N=F0}}:function(){if(!(B||k)&&!(!q&&!m0)){B=!0;var a0=0,x0=0,_0="";if(S.session){var F0=S.selection,D0=F0.getRange(),t5=F0.cursor.row;t5===U+1?(z=U+1,U=z+2*j):t5===z-1?(U=z-1,z=U-2*j):(t5U+1)&&(z=t5>j?t5-j:0,U=t5>j?t5+j:2*j);for(var r5=[],n5=z;n5<=U;n5++)r5.push(S.session.getLine(n5));if(_0=r5.join(` -`),a0=Y(D0.start.row,D0.start.column),x0=Y(D0.end.row,D0.end.column),D0.start.rowU){var V0=S.session.getLine(U+1);x0=D0.end.row>U+1?V0.length:D0.end.column,x0+=_0.length+1,_0=_0+` -`+V0}else A&&t5>0&&(_0=` -`+_0,x0+=1,a0+=1);_0.length>r&&(a0=E.length&&a0.value===E&&E&&a0.selectionEnd!==N},u0=function(a0){B||(w?w=!1:n0(v)?(S.selectAll(),t0()):A&&v.selectionStart!=I&&t0())},h0=null;this.setInputHandler=function(a0){h0=a0},this.getInputHandler=function(){return h0};var m0=!1,p0=function(a0,x0){if(m0&&(m0=!1),O)return t0(),a0&&S.onPaste(a0),O=!1,"";for(var _0=v.selectionStart,F0=v.selectionEnd,D0=I,t5=E.length-N,r5=a0,n5=a0.length-_0,Z0=a0.length-F0,V0=0;D0>0&&E[V0]==a0[V0];)V0++,D0--;for(r5=r5.slice(V0),V0=1;t5>0&&E.length-V0>I-1&&E[E.length-V0]==a0[a0.length-V0];)V0++,t5--;n5-=V0-1,Z0-=V0-1;var d5=r5.length-V0+1;if(d5<0&&(D0=-d5,d5=0),r5=r5.slice(0,d5),!x0&&!r5&&!n5&&!D0&&!t5&&!Z0)return"";k=!0;var P5=!1;return C.isAndroid&&r5==". "&&(r5=" ",P5=!0),r5&&!D0&&!t5&&!n5&&!Z0||y?S.onTextInput(r5):S.onTextInput(r5,{extendLeft:D0,extendRight:t5,restoreStart:n5,restoreEnd:Z0}),k=!1,E=a0,I=_0,N=F0,W=Z0,P5?` -`:r5},b0=function(a0){if(B)return Y0();if(a0&&a0.inputType){if(a0.inputType=="historyUndo")return S.execCommand("undo");if(a0.inputType=="historyRedo")return S.execCommand("redo")}var x0=v.value,_0=p0(x0,!0);(x0.length>r+100||g.test(_0)||A&&I<1&&I==N)&&t0()},k0=function(a0,x0,_0){var F0=a0.clipboardData||window.clipboardData;if(!(!F0||o)){var D0=s||_0?"Text":"text/plain";try{return x0?F0.setData(D0,x0)!==!1:F0.getData(D0)}catch(t5){if(!_0)return k0(t5,x0,!0)}}},w0=function(a0,x0){var _0=S.getCopyText();if(!_0)return L.preventDefault(a0);k0(a0,_0)?(p&&(t0(_0),w=_0,setTimeout(function(){w=!1},10)),x0?S.onCut():S.onCopy(),L.preventDefault(a0)):(w=!0,v.value=_0,v.select(),setTimeout(function(){w=!1,t0(),x0?S.onCut():S.onCopy()}))},H0=function(a0){w0(a0,!0)},N0=function(a0){w0(a0,!1)},z0=function(a0){var x0=k0(a0);l.pasteCancelled()||(typeof x0=="string"?(x0&&S.onPaste(x0,a0),C.isIE&&setTimeout(t0),L.preventDefault(a0)):(v.value="",O=!0))};L.addCommandKeyListener(v,S.onCommandKey.bind(S),S),L.addListener(v,"select",u0,S),L.addListener(v,"input",b0,S),L.addListener(v,"cut",H0,S),L.addListener(v,"copy",N0,S),L.addListener(v,"paste",z0,S),(!("oncut"in v)||!("oncopy"in v)||!("onpaste"in v))&&L.addListener($,"keydown",function(a0){if(!(C.isMac&&!a0.metaKey||!a0.ctrlKey))switch(a0.keyCode){case 67:N0(a0);break;case 86:z0(a0);break;case 88:H0(a0);break}},S);var M0=function(a0){if(!(B||!S.onCompositionStart||S.$readOnly)&&(B={},!y)){a0.data&&(B.useTextareaForIME=!1),setTimeout(Y0,0),S._signal("compositionStart"),S.on("mousedown",k5);var x0=S.getSelectionRange();x0.end.row=x0.start.row,x0.end.column=x0.start.column,B.markerRange=x0,B.selectionStart=I,S.onCompositionStart(B),B.useTextareaForIME?(E=v.value="",I=0,N=0):(v.msGetInputContext&&(B.context=v.msGetInputContext()),v.getInputContext&&(B.context=v.getInputContext()))}},Y0=function(){if(!(!B||!S.onCompositionUpdate||S.$readOnly)){if(y)return k5();if(B.useTextareaForIME)S.onCompositionUpdate(v.value);else{var a0=v.value;p0(a0),B.markerRange&&(B.context&&(B.markerRange.start.column=B.selectionStart=B.context.compositionStartOffset),B.markerRange.end.column=B.markerRange.start.column+N-B.selectionStart+W)}}},m5=function(a0){!S.onCompositionEnd||S.$readOnly||(B=!1,S.onCompositionEnd(),S.off("mousedown",k5),a0&&b0())};function k5(){m=!0,v.blur(),v.focus(),m=!1}var f5=h.delayedCall(Y0,50).schedule.bind(null,null);function j0(a0){a0.keyCode==27&&v.value.lengthN&&E[Z0]==` -`?V0=a.end:n5N&&E.slice(0,Z0).split(` -`).length>2?V0=a.down:Z0>N&&E[Z0-1]==" "?(V0=a.right,d5=c.option):(Z0>N||Z0==N&&N!=I&&n5==Z0)&&(V0=a.right),n5!==Z0&&(d5|=c.shift),V0){var P5=x0.onCommandKey({},d5,V0);if(!P5&&x0.commands){V0=a.keyCodeToString(V0);var f9=x0.commands.findKeyCommand(d5,V0);f9&&x0.execCommand(f9)}I=n5,N=Z0,t0("")}}};document.addEventListener("selectionchange",t5),x0.on("destroy",function(){document.removeEventListener("selectionchange",t5)})}this.destroy=function(){v.parentElement&&v.parentElement.removeChild(v)}};M.TextInput=b,M.$setUserAgentForTests=function($,S){A=$,p=S}}),ace.define("ace/mouse/default_handlers",["require","exports","module","ace/lib/useragent"],function(n,M,G){"use strict";var L=n("../lib/useragent"),T=0,C=550,d=function(){function o(s){s.$clickSelection=null;var i=s.editor;i.setDefaultHandler("mousedown",this.onMouseDown.bind(s)),i.setDefaultHandler("dblclick",this.onDoubleClick.bind(s)),i.setDefaultHandler("tripleclick",this.onTripleClick.bind(s)),i.setDefaultHandler("quadclick",this.onQuadClick.bind(s)),i.setDefaultHandler("mousewheel",this.onMouseWheel.bind(s));var r=["select","startSelect","selectEnd","selectAllEnd","selectByWordsEnd","selectByLinesEnd","dragWait","dragWaitEnd","focusWait"];r.forEach(function(a){s[a]=this[a]},this),s.selectByLines=this.extendSelectionBy.bind(s,"getLineRange"),s.selectByWords=this.extendSelectionBy.bind(s,"getWordRange")}return o.prototype.onMouseDown=function(s){var i=s.inSelection(),r=s.getDocumentPosition();this.mousedownEvent=s;var a=this.editor,c=s.getButton();if(c!==0){var p=a.getSelectionRange(),g=p.isEmpty();(g||c==1)&&a.selection.moveToPosition(r),c==2&&(a.textInput.onContextMenu(s.domEvent),L.isMozilla||s.preventDefault());return}if(this.mousedownEvent.time=Date.now(),i&&!a.isFocused()&&(a.focus(),this.$focusTimeout&&!this.$clickSelection&&!a.inMultiSelectMode)){this.setState("focusWait"),this.captureMouse(s);return}return this.captureMouse(s),this.startSelect(r,s.domEvent._clicks>1),s.preventDefault()},o.prototype.startSelect=function(s,i){s=s||this.editor.renderer.screenToTextCoordinates(this.x,this.y);var r=this.editor;this.mousedownEvent&&(this.mousedownEvent.getShiftKey()?r.selection.selectToPosition(s):i||r.selection.moveToPosition(s),i||this.select(),r.setStyle("ace_selecting"),this.setState("select"))},o.prototype.select=function(){var s,i=this.editor,r=i.renderer.screenToTextCoordinates(this.x,this.y);if(this.$clickSelection){var a=this.$clickSelection.comparePoint(r);if(a==-1)s=this.$clickSelection.end;else if(a==1)s=this.$clickSelection.start;else{var c=l(this.$clickSelection,r);r=c.cursor,s=c.anchor}i.selection.setSelectionAnchor(s.row,s.column)}i.selection.selectToPosition(r),i.renderer.scrollCursorIntoView()},o.prototype.extendSelectionBy=function(s){var i,r=this.editor,a=r.renderer.screenToTextCoordinates(this.x,this.y),c=r.selection[s](a.row,a.column);if(this.$clickSelection){var p=this.$clickSelection.comparePoint(c.start),g=this.$clickSelection.comparePoint(c.end);if(p==-1&&g<=0)i=this.$clickSelection.end,(c.end.row!=a.row||c.end.column!=a.column)&&(a=c.start);else if(g==1&&p>=0)i=this.$clickSelection.start,(c.start.row!=a.row||c.start.column!=a.column)&&(a=c.end);else if(p==-1&&g==1)a=c.end,i=c.start;else{var A=l(this.$clickSelection,a);a=A.cursor,i=A.anchor}r.selection.setSelectionAnchor(i.row,i.column)}r.selection.selectToPosition(a),r.renderer.scrollCursorIntoView()},o.prototype.selectByLinesEnd=function(){this.$clickSelection=null,this.editor.unsetStyle("ace_selecting")},o.prototype.focusWait=function(){var s=h(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y),i=Date.now();(s>T||i-this.mousedownEvent.time>this.$focusTimeout)&&this.startSelect(this.mousedownEvent.getDocumentPosition())},o.prototype.onDoubleClick=function(s){var i=s.getDocumentPosition(),r=this.editor,a=r.session,c=a.getBracketRange(i);c?(c.isEmpty()&&(c.start.column--,c.end.column++),this.setState("select")):(c=r.selection.getWordRange(i.row,i.column),this.setState("selectByWords")),this.$clickSelection=c,this.select()},o.prototype.onTripleClick=function(s){var i=s.getDocumentPosition(),r=this.editor;this.setState("selectByLines");var a=r.getSelectionRange();a.isMultiLine()&&a.contains(i.row,i.column)?(this.$clickSelection=r.selection.getLineRange(a.start.row),this.$clickSelection.end=r.selection.getLineRange(a.end.row).end):this.$clickSelection=r.selection.getLineRange(i.row),this.select()},o.prototype.onQuadClick=function(s){var i=this.editor;i.selectAll(),this.$clickSelection=i.getSelectionRange(),this.setState("selectAll")},o.prototype.onMouseWheel=function(s){if(!s.getAccelKey()){s.getShiftKey()&&s.wheelY&&!s.wheelX&&(s.wheelX=s.wheelY,s.wheelY=0);var i=this.editor;this.$lastScroll||(this.$lastScroll={t:0,vx:0,vy:0,allowed:0});var r=this.$lastScroll,a=s.domEvent.timeStamp,c=a-r.t,p=c?s.wheelX/c:r.vx,g=c?s.wheelY/c:r.vy;c=1&&i.renderer.isScrollableBy(s.wheelX*s.speed,0)&&(b=!0),A<=1&&i.renderer.isScrollableBy(0,s.wheelY*s.speed)&&(b=!0),b)r.allowed=a;else if(a-r.allowed=r.length&&(r=void 0),{value:r&&r[p++],done:!r}}};throw new TypeError(a?"Object is not iterable.":"Symbol.iterator is not defined.")},C=n("./lib/dom"),d=n("./range").Range,h="ace_tooltip",l=function(){function r(a){this.isOpen=!1,this.$element=null,this.$parentNode=a}return r.prototype.$init=function(){return this.$element=C.createElement("div"),this.$element.className=h,this.$element.style.display="none",this.$parentNode.appendChild(this.$element),this.$element},r.prototype.getElement=function(){return this.$element||this.$init()},r.prototype.setText=function(a){this.getElement().textContent=a},r.prototype.setHtml=function(a){this.getElement().innerHTML=a},r.prototype.setPosition=function(a,c){this.getElement().style.left=a+"px",this.getElement().style.top=c+"px"},r.prototype.setClassName=function(a){C.addCssClass(this.getElement(),a)},r.prototype.setTheme=function(a){this.$element.className=h+" "+(a.isDark?"ace_dark ":"")+(a.cssClass||"")},r.prototype.show=function(a,c,p){a!=null&&this.setText(a),c!=null&&p!=null&&this.setPosition(c,p),this.isOpen||(this.getElement().style.display="block",this.isOpen=!0)},r.prototype.hide=function(){this.isOpen&&(this.getElement().style.display="none",this.getElement().className=h,this.isOpen=!1)},r.prototype.getHeight=function(){return this.getElement().offsetHeight},r.prototype.getWidth=function(){return this.getElement().offsetWidth},r.prototype.destroy=function(){this.isOpen=!1,this.$element&&this.$element.parentNode&&this.$element.parentNode.removeChild(this.$element)},r}(),o=function(){function r(){this.popups=[]}return r.prototype.addPopup=function(a){this.popups.push(a),this.updatePopups()},r.prototype.removePopup=function(a){var c=this.popups.indexOf(a);c!==-1&&(this.popups.splice(c,1),this.updatePopups())},r.prototype.updatePopups=function(){var a,c,p,g;this.popups.sort(function(k,_){return _.priority-k.priority});var A=[];try{for(var b=T(this.popups),$=b.next();!$.done;$=b.next()){var S=$.value,v=!0;try{for(var w=(p=void 0,T(A)),O=w.next();!O.done;O=w.next()){var B=O.value;if(this.doPopupsOverlap(B,S)){v=!1;break}}}catch(k){p={error:k}}finally{try{O&&!O.done&&(g=w.return)&&g.call(w)}finally{if(p)throw p.error}}v?A.push(S):S.hide()}}catch(k){a={error:k}}finally{try{$&&!$.done&&(c=b.return)&&c.call(b)}finally{if(a)throw a.error}}},r.prototype.doPopupsOverlap=function(a,c){var p=a.getElement().getBoundingClientRect(),g=c.getElement().getBoundingClientRect();return p.leftg.left&&p.topg.top},r}(),s=new o;M.popupManager=s,M.Tooltip=l;var i=function(r){L(a,r);function a(c){c===void 0&&(c=document.body);var p=r.call(this,c)||this;p.timeout=void 0,p.lastT=0,p.idleTime=350,p.lastEvent=void 0,p.onMouseOut=p.onMouseOut.bind(p),p.onMouseMove=p.onMouseMove.bind(p),p.waitForHover=p.waitForHover.bind(p),p.hide=p.hide.bind(p);var g=p.getElement();return g.style.whiteSpace="pre-wrap",g.style.pointerEvents="auto",g.addEventListener("mouseout",p.onMouseOut),g.tabIndex=-1,g.addEventListener("blur",function(){g.contains(document.activeElement)||this.hide()}.bind(p)),p}return a.prototype.addToEditor=function(c){c.on("mousemove",this.onMouseMove),c.on("mousedown",this.hide),c.renderer.getMouseEventTarget().addEventListener("mouseout",this.onMouseOut,!0)},a.prototype.removeFromEditor=function(c){c.off("mousemove",this.onMouseMove),c.off("mousedown",this.hide),c.renderer.getMouseEventTarget().removeEventListener("mouseout",this.onMouseOut,!0),this.timeout&&(clearTimeout(this.timeout),this.timeout=null)},a.prototype.onMouseMove=function(c,p){this.lastEvent=c,this.lastT=Date.now();var g=p.$mouseHandler.isMousePressed;if(this.isOpen){var A=this.lastEvent&&this.lastEvent.getDocumentPosition();(!this.range||!this.range.contains(A.row,A.column)||g||this.isOutsideOfText(this.lastEvent))&&this.hide()}this.timeout||g||(this.lastEvent=c,this.timeout=setTimeout(this.waitForHover,this.idleTime))},a.prototype.waitForHover=function(){this.timeout&&clearTimeout(this.timeout);var c=Date.now()-this.lastT;if(this.idleTime-c>10){this.timeout=setTimeout(this.waitForHover,this.idleTime-c);return}this.timeout=null,this.lastEvent&&!this.isOutsideOfText(this.lastEvent)&&this.$gatherData(this.lastEvent,this.lastEvent.editor)},a.prototype.isOutsideOfText=function(c){var p=c.editor,g=c.getDocumentPosition(),A=p.session.getLine(g.row);if(g.column==A.length){var b=p.renderer.pixelToScreenCoordinates(c.clientX,c.clientY),$=p.session.documentToScreenPosition(g.row,g.column);if($.column!=b.column||$.row!=b.row)return!0}return!1},a.prototype.setDataProvider=function(c){this.$gatherData=c},a.prototype.showForRange=function(c,p,g,A){if(!(A&&A!=this.lastEvent)&&!(this.isOpen&&document.activeElement==this.getElement())){var b=c.renderer;this.isOpen||(s.addPopup(this),this.$registerCloseEvents(),this.setTheme(b.theme)),this.isOpen=!0,this.addMarker(p,c.session),this.range=d.fromPoints(p.start,p.end);var $=this.getElement();$.innerHTML="",$.appendChild(g),$.style.display="block";var S=b.textToScreenCoordinates(p.start.row,p.start.column),v=$.clientHeight,w=b.scroller.getBoundingClientRect(),O=!0;S.pageY-v<0&&(O=!1),O?S.pageY-=v:S.pageY+=b.lineHeight,$.style.maxWidth=w.width-(S.pageX-w.left)+"px",this.setPosition(S.pageX,S.pageY)}},a.prototype.addMarker=function(c,p){this.marker&&this.$markerSession.removeMarker(this.marker),this.$markerSession=p,this.marker=p&&p.addMarker(c,"ace_highlight-marker","text")},a.prototype.hide=function(c){!c&&document.activeElement==this.getElement()||c&&c.target&&(c.type!="keydown"||c.ctrlKey||c.metaKey)&&this.$element.contains(c.target)||(this.lastEvent=null,this.timeout&&clearTimeout(this.timeout),this.timeout=null,this.addMarker(null),this.isOpen&&(this.$removeCloseEvents(),this.getElement().style.display="none",this.isOpen=!1,s.removePopup(this)))},a.prototype.$registerCloseEvents=function(){window.addEventListener("keydown",this.hide,!0),window.addEventListener("mousewheel",this.hide,!0),window.addEventListener("mousedown",this.hide,!0)},a.prototype.$removeCloseEvents=function(){window.removeEventListener("keydown",this.hide,!0),window.removeEventListener("mousewheel",this.hide,!0),window.removeEventListener("mousedown",this.hide,!0)},a.prototype.onMouseOut=function(c){this.timeout&&(clearTimeout(this.timeout),this.timeout=null),this.lastEvent=null,this.isOpen&&(!c.relatedTarget||c.relatedTarget==this.getElement()||c&&c.currentTarget.contains(c.relatedTarget)||c.relatedTarget.classList.contains("ace_content")||this.hide())},a}(l);M.HoverTooltip=i}),ace.define("ace/mouse/default_gutter_handler",["require","exports","module","ace/lib/dom","ace/lib/event","ace/tooltip","ace/config"],function(n,M,G){"use strict";var L=this&&this.__extends||function(){var i=function(r,a){return i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(c,p){c.__proto__=p}||function(c,p){for(var g in p)Object.prototype.hasOwnProperty.call(p,g)&&(c[g]=p[g])},i(r,a)};return function(r,a){if(typeof a!="function"&&a!==null)throw new TypeError("Class extends value "+String(a)+" is not a constructor or null");i(r,a);function c(){this.constructor=r}r.prototype=a===null?Object.create(a):(c.prototype=a.prototype,new c)}}(),T=this&&this.__values||function(i){var r=typeof Symbol=="function"&&Symbol.iterator,a=r&&i[r],c=0;if(a)return a.call(i);if(i&&typeof i.length=="number")return{next:function(){return i&&c>=i.length&&(i=void 0),{value:i&&i[c++],done:!i}}};throw new TypeError(r?"Object is not iterable.":"Symbol.iterator is not defined.")},C=n("../lib/dom"),d=n("../lib/event"),h=n("../tooltip").Tooltip,l=n("../config").nls;function o(i){var r=i.editor,a=r.renderer.$gutterLayer,c=new s(r);i.editor.setDefaultHandler("guttermousedown",function(S){if(!(!r.isFocused()||S.getButton()!=0)){var v=a.getRegion(S);if(v!="foldWidgets"){var w=S.getDocumentPosition().row,O=r.session.selection;if(S.getShiftKey())O.selectTo(w,0);else{if(S.domEvent.detail==2)return r.selectAll(),S.preventDefault();i.$clickSelection=r.selection.getLineRange(w)}return i.setState("selectByLines"),i.captureMouse(S),S.preventDefault()}}});var p,g;function A(){var S=g.getDocumentPosition().row,v=r.session.getLength();if(S==v){var w=r.renderer.pixelToScreenCoordinates(0,g.y).row,O=g.$pos;if(w>r.session.documentToScreenRow(O.row,O.column))return b()}if(c.showTooltip(S),!!c.isOpen)if(r.on("mousewheel",b),i.$tooltipFollowsMouse)$(g);else{var B=g.getGutterRow(),k=a.$lines.get(B);if(k){var _=k.element.querySelector(".ace_gutter_annotation"),y=_.getBoundingClientRect(),m=c.getElement().style;m.left=y.right+"px",m.top=y.bottom+"px"}else $(g)}}function b(){p&&(p=clearTimeout(p)),c.isOpen&&(c.hideTooltip(),r.off("mousewheel",b))}function $(S){c.setPosition(S.x,S.y)}i.editor.setDefaultHandler("guttermousemove",function(S){var v=S.domEvent.target||S.domEvent.srcElement;if(C.hasCssClass(v,"ace_fold-widget"))return b();c.isOpen&&i.$tooltipFollowsMouse&&$(S),g=S,!p&&(p=setTimeout(function(){p=null,g&&!i.isMousePressed?A():b()},50))}),d.addListener(r.renderer.$gutter,"mouseout",function(S){g=null,!(!c.isOpen||p)&&(p=setTimeout(function(){p=null,b()},50))},r),r.on("changeSession",b),r.on("input",b)}M.GutterHandler=o;var s=function(i){L(r,i);function r(a){var c=i.call(this,a.container)||this;return c.editor=a,c}return r.prototype.setPosition=function(a,c){var p=window.innerWidth||document.documentElement.clientWidth,g=window.innerHeight||document.documentElement.clientHeight,A=this.getWidth(),b=this.getHeight();a+=15,c+=15,a+A>p&&(a-=a+A-p),c+b>g&&(c-=20+b),h.prototype.setPosition.call(this,a,c)},Object.defineProperty(r,"annotationLabels",{get:function(){return{error:{singular:l("error"),plural:l("errors")},warning:{singular:l("warning"),plural:l("warnings")},info:{singular:l("information message"),plural:l("information messages")}}},enumerable:!1,configurable:!0}),r.prototype.showTooltip=function(a){var c=this.editor.renderer.$gutterLayer,p=c.$annotations[a],g;p?g={text:Array.from(p.text),type:Array.from(p.type)}:g={text:[],type:[]};var A=c.session.getFoldLine(a);if(A&&c.$showFoldedAnnotations){for(var b={error:[],warning:[],info:[]},$,S=a+1;S<=A.end.row;S++)if(c.$annotations[S])for(var v=0;v ").concat(g.text[S]);B[g.type[S].replace("_fold","")].push(_)}var y=[].concat(B.error,B.warning,B.info).join("
    ");this.setHtml(y),this.$element.setAttribute("aria-live","polite"),this.isOpen||(this.setTheme(this.editor.renderer.theme),this.setClassName("ace_gutter-tooltip")),this.show(),this.editor._signal("showGutterTooltip",this)},r.prototype.hideTooltip=function(){this.$element.removeAttribute("aria-live"),this.hide(),this.editor._signal("hideGutterTooltip",this)},r.annotationsToSummaryString=function(a){var c,p,g=[],A=["error","warning","info"];try{for(var b=T(A),$=b.next();!$.done;$=b.next()){var S=$.value;if(a[S].length){var v=a[S].length===1?r.annotationLabels[S].singular:r.annotationLabels[S].plural;g.push("".concat(a[S].length," ").concat(v))}}}catch(w){c={error:w}}finally{try{$&&!$.done&&(p=b.return)&&p.call(b)}finally{if(c)throw c.error}}return g.join(", ")},r}(h);M.GutterTooltip=s}),ace.define("ace/mouse/mouse_event",["require","exports","module","ace/lib/event","ace/lib/useragent"],function(n,M,G){"use strict";var L=n("../lib/event"),T=n("../lib/useragent"),C=function(){function d(h,l){this.domEvent=h,this.editor=l,this.x=this.clientX=h.clientX,this.y=this.clientY=h.clientY,this.$pos=null,this.$inSelection=null,this.propagationStopped=!1,this.defaultPrevented=!1}return d.prototype.stopPropagation=function(){L.stopPropagation(this.domEvent),this.propagationStopped=!0},d.prototype.preventDefault=function(){L.preventDefault(this.domEvent),this.defaultPrevented=!0},d.prototype.stop=function(){this.stopPropagation(),this.preventDefault()},d.prototype.getDocumentPosition=function(){return this.$pos?this.$pos:(this.$pos=this.editor.renderer.screenToTextCoordinates(this.clientX,this.clientY),this.$pos)},d.prototype.getGutterRow=function(){var h=this.getDocumentPosition().row,l=this.editor.session.documentToScreenRow(h,0),o=this.editor.session.documentToScreenRow(this.editor.renderer.$gutterLayer.$lines.get(0).row,0);return l-o},d.prototype.inSelection=function(){if(this.$inSelection!==null)return this.$inSelection;var h=this.editor,l=h.getSelectionRange();if(l.isEmpty())this.$inSelection=!1;else{var o=this.getDocumentPosition();this.$inSelection=l.contains(o.row,o.column)}return this.$inSelection},d.prototype.getButton=function(){return L.getButton(this.domEvent)},d.prototype.getShiftKey=function(){return this.domEvent.shiftKey},d.prototype.getAccelKey=function(){return T.isMac?this.domEvent.metaKey:this.domEvent.ctrlKey},d}();M.MouseEvent=C}),ace.define("ace/mouse/dragdrop_handler",["require","exports","module","ace/lib/dom","ace/lib/event","ace/lib/useragent"],function(n,M,G){"use strict";var L=n("../lib/dom"),T=n("../lib/event"),C=n("../lib/useragent"),d=200,h=200,l=5;function o(i){var r=i.editor,a=L.createElement("div");a.style.cssText="top:-100px;position:absolute;z-index:2147483647;opacity:0.5",a.textContent="\xA0";var c=["dragWait","dragWaitEnd","startDrag","dragReadyEnd","onMouseDrag"];c.forEach(function(Y){i[Y]=this[Y]},this),r.on("mousedown",this.onMouseDown.bind(i));var p=r.container,g,A,b,$,S,v,w=0,O,B,k,_,y;this.onDragStart=function(Y){if(this.cancelDrag||!p.draggable){var t0=this;return setTimeout(function(){t0.startSelect(),t0.captureMouse(Y)},0),Y.preventDefault()}S=r.getSelectionRange();var n0=Y.dataTransfer;n0.effectAllowed=r.getReadOnly()?"copy":"copyMove",r.container.appendChild(a),n0.setDragImage&&n0.setDragImage(a,0,0),setTimeout(function(){r.container.removeChild(a)}),n0.clearData(),n0.setData("Text",r.session.getTextRange()),B=!0,this.setState("drag")},this.onDragEnd=function(Y){if(p.draggable=!1,B=!1,this.setState(null),!r.getReadOnly()){var t0=Y.dataTransfer.dropEffect;!O&&t0=="move"&&r.session.remove(r.getSelectionRange()),r.$resetCursorStyle()}this.editor.unsetStyle("ace_dragging"),this.editor.renderer.setCursorStyle("")},this.onDragEnter=function(Y){if(!(r.getReadOnly()||!j(Y.dataTransfer)))return A=Y.clientX,b=Y.clientY,g||N(),w++,Y.dataTransfer.dropEffect=O=q(Y),T.preventDefault(Y)},this.onDragOver=function(Y){if(!(r.getReadOnly()||!j(Y.dataTransfer)))return A=Y.clientX,b=Y.clientY,g||(N(),w++),z!==null&&(z=null),Y.dataTransfer.dropEffect=O=q(Y),T.preventDefault(Y)},this.onDragLeave=function(Y){if(w--,w<=0&&g)return W(),O=null,T.preventDefault(Y)},this.onDrop=function(Y){if(v){var t0=Y.dataTransfer;if(B)switch(O){case"move":S.contains(v.row,v.column)?S={start:v,end:v}:S=r.moveText(S,v);break;case"copy":S=r.moveText(S,v,!0);break}else{var n0=t0.getData("Text");S={start:v,end:r.session.insert(v,n0)},r.focus(),O=null}return W(),T.preventDefault(Y)}},T.addListener(p,"dragstart",this.onDragStart.bind(i),r),T.addListener(p,"dragend",this.onDragEnd.bind(i),r),T.addListener(p,"dragenter",this.onDragEnter.bind(i),r),T.addListener(p,"dragover",this.onDragOver.bind(i),r),T.addListener(p,"dragleave",this.onDragLeave.bind(i),r),T.addListener(p,"drop",this.onDrop.bind(i),r);function m(Y,t0){var n0=Date.now(),u0=!t0||Y.row!=t0.row,h0=!t0||Y.column!=t0.column;if(!_||u0||h0)r.moveCursorToPosition(Y),_=n0,y={x:A,y:b};else{var m0=s(y.x,y.y,A,b);m0>l?_=null:n0-_>=h&&(r.renderer.scrollCursorIntoView(),_=null)}}function E(Y,t0){var n0=Date.now(),u0=r.renderer.layerConfig.lineHeight,h0=r.renderer.layerConfig.characterWidth,m0=r.renderer.scroller.getBoundingClientRect(),p0={x:{left:A-m0.left,right:m0.right-A},y:{top:b-m0.top,bottom:m0.bottom-b}},b0=Math.min(p0.x.left,p0.x.right),k0=Math.min(p0.y.top,p0.y.bottom),w0={row:Y.row,column:Y.column};b0/h0<=2&&(w0.column+=p0.x.left=d&&r.renderer.scrollCursorIntoView(w0):k=n0:k=null}function I(){var Y=v;v=r.renderer.screenToTextCoordinates(A,b),m(v,Y),E(v,Y)}function N(){S=r.selection.toOrientedRange(),g=r.session.addMarker(S,"ace_selection",r.getSelectionStyle()),r.clearSelection(),r.isFocused()&&r.renderer.$cursorLayer.setBlinking(!1),clearInterval($),I(),$=setInterval(I,20),w=0,T.addListener(document,"mousemove",U)}function W(){clearInterval($),r.session.removeMarker(g),g=null,r.selection.fromOrientedRange(S),r.isFocused()&&!B&&r.$resetCursorStyle(),S=null,v=null,w=0,k=null,_=null,T.removeListener(document,"mousemove",U)}var z=null;function U(){z==null&&(z=setTimeout(function(){z!=null&&g&&W()},20))}function j(Y){var t0=Y.types;return!t0||Array.prototype.some.call(t0,function(n0){return n0=="text/plain"||n0=="Text"})}function q(Y){var t0=["copy","copymove","all","uninitialized"],n0=["move","copymove","linkmove","all","uninitialized"],u0=C.isMac?Y.altKey:Y.ctrlKey,h0="uninitialized";try{h0=Y.dataTransfer.effectAllowed.toLowerCase()}catch(p0){}var m0="none";return u0&&t0.indexOf(h0)>=0?m0="copy":n0.indexOf(h0)>=0?m0="move":t0.indexOf(h0)>=0&&(m0="copy"),m0}}(function(){this.dragWait=function(){var i=Date.now()-this.mousedownEvent.time;i>this.editor.getDragDelay()&&this.startDrag()},this.dragWaitEnd=function(){var i=this.editor.container;i.draggable=!1,this.startSelect(this.mousedownEvent.getDocumentPosition()),this.selectEnd()},this.dragReadyEnd=function(i){this.editor.$resetCursorStyle(),this.editor.unsetStyle("ace_dragging"),this.editor.renderer.setCursorStyle(""),this.dragWaitEnd()},this.startDrag=function(){this.cancelDrag=!1;var i=this.editor,r=i.container;r.draggable=!0,i.renderer.$cursorLayer.setBlinking(!1),i.setStyle("ace_dragging");var a=C.isWin?"default":"move";i.renderer.setCursorStyle(a),this.setState("dragReady")},this.onMouseDrag=function(i){var r=this.editor.container;if(C.isIE&&this.state=="dragReady"){var a=s(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y);a>3&&r.dragDrop()}if(this.state==="dragWait"){var a=s(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y);a>0&&(r.draggable=!1,this.startSelect(this.mousedownEvent.getDocumentPosition()))}},this.onMouseDown=function(i){if(this.$dragEnabled){this.mousedownEvent=i;var r=this.editor,a=i.inSelection(),c=i.getButton(),p=i.domEvent.detail||1;if(p===1&&c===0&&a){if(i.editor.inMultiSelectMode&&(i.getAccelKey()||i.getShiftKey()))return;this.mousedownEvent.time=Date.now();var g=i.domEvent.target||i.domEvent.srcElement;if("unselectable"in g&&(g.unselectable="on"),r.getDragDelay()){if(C.isWebKit){this.cancelDrag=!0;var A=r.container;A.draggable=!0}this.setState("dragWait")}else this.startDrag();this.captureMouse(i,this.onMouseDrag.bind(this)),i.defaultPrevented=!0}}}}).call(o.prototype);function s(i,r,a,c){return Math.sqrt(Math.pow(a-i,2)+Math.pow(c-r,2))}M.DragdropHandler=o}),ace.define("ace/mouse/touch_handler",["require","exports","module","ace/mouse/mouse_event","ace/lib/event","ace/lib/dom"],function(n,M,G){"use strict";var L=n("./mouse_event").MouseEvent,T=n("../lib/event"),C=n("../lib/dom");M.addTouchListeners=function(d,h){var l="scroll",o,s,i,r,a,c,p=0,g,A=0,b=0,$=0,S,v;function w(){var m=window.navigator&&window.navigator.clipboard,E=!1,I=function(){var W=h.getCopyText(),z=h.session.getUndoManager().hasUndo();v.replaceChild(C.buildDom(E?["span",!W&&["span",{class:"ace_mobile-button",action:"selectall"},"Select All"],W&&["span",{class:"ace_mobile-button",action:"copy"},"Copy"],W&&["span",{class:"ace_mobile-button",action:"cut"},"Cut"],m&&["span",{class:"ace_mobile-button",action:"paste"},"Paste"],z&&["span",{class:"ace_mobile-button",action:"undo"},"Undo"],["span",{class:"ace_mobile-button",action:"find"},"Find"],["span",{class:"ace_mobile-button",action:"openCommandPalette"},"Palette"]]:["span"]),v.firstChild)},N=function(W){var z=W.target.getAttribute("action");if(z=="more"||!E)return E=!E,I();z=="paste"?m.readText().then(function(U){h.execCommand(z,U)}):z&&((z=="cut"||z=="copy")&&(m?m.writeText(h.getCopyText()):document.execCommand("copy")),h.execCommand(z)),v.firstChild.style.display="none",E=!1,z!="openCommandPalette"&&h.focus()};v=C.buildDom(["div",{class:"ace_mobile-menu",ontouchstart:function(W){l="menu",W.stopPropagation(),W.preventDefault(),h.textInput.focus()},ontouchend:function(W){W.stopPropagation(),W.preventDefault(),N(W)},onclick:N},["span"],["span",{class:"ace_mobile-button",action:"more"},"..."]],h.container)}function O(){v||w();var m=h.selection.cursor,E=h.renderer.textToScreenCoordinates(m.row,m.column),I=h.renderer.textToScreenCoordinates(0,0).pageX,N=h.renderer.scrollLeft,W=h.container.getBoundingClientRect();v.style.top=E.pageY-W.top-3+"px",E.pageX-W.left=2?h.selection.getLineRange(g.row):h.session.getBracketRange(g);m&&!m.isEmpty()?h.selection.setRange(m):h.selection.selectWord(),l="wait"}T.addListener(d,"contextmenu",function(m){if(S){var E=h.textInput.getElement();E.focus()}},h),T.addListener(d,"touchstart",function(m){var E=m.touches;if(a||E.length>1){clearTimeout(a),a=null,i=-1,l="zoom";return}S=h.$mouseHandler.isMousePressed=!0;var I=h.renderer.layerConfig.lineHeight,N=h.renderer.layerConfig.lineHeight,W=m.timeStamp;r=W;var z=E[0],U=z.clientX,j=z.clientY;Math.abs(o-U)+Math.abs(s-j)>I&&(i=-1),o=m.clientX=U,s=m.clientY=j,b=$=0;var q=new L(m,h);if(g=q.getDocumentPosition(),W-i<500&&E.length==1&&!p)A++,m.preventDefault(),m.button=0,_();else{A=0;var Y=h.selection.cursor,t0=h.selection.isEmpty()?Y:h.selection.anchor,n0=h.renderer.$cursorLayer.getPixelPosition(Y,!0),u0=h.renderer.$cursorLayer.getPixelPosition(t0,!0),h0=h.renderer.scroller.getBoundingClientRect(),m0=h.renderer.layerConfig.offset,p0=h.renderer.scrollLeft,b0=function(H0,N0){return H0=H0/N,N0=N0/I-.75,H0*H0+N0*N0};if(m.clientXw0?"cursor":"anchor"),w0<3.5?l="anchor":k0<3.5?l="cursor":l="scroll",a=setTimeout(k,450)}i=W},h),T.addListener(d,"touchend",function(m){S=h.$mouseHandler.isMousePressed=!1,c&&clearInterval(c),l=="zoom"?(l="",p=0):a?(h.selection.moveToPosition(g),p=0,O()):l=="scroll"?(y(),B()):O(),clearTimeout(a),a=null},h),T.addListener(d,"touchmove",function(m){a&&(clearTimeout(a),a=null);var E=m.touches;if(!(E.length>1||l=="zoom")){var I=E[0],N=o-I.clientX,W=s-I.clientY;if(l=="wait")if(N*N+W*W>4)l="cursor";else return m.preventDefault();o=I.clientX,s=I.clientY,m.clientX=I.clientX,m.clientY=I.clientY;var z=m.timeStamp,U=z-r;if(r=z,l=="scroll"){var j=new L(m,h);j.speed=1,j.wheelX=N,j.wheelY=W,10*Math.abs(N)0)if(m5==16){for(j0=f5;j0-1){for(j0=f5;j0=0&&w0[y5]==k;y5--)b0[y5]=C}}}function n0(p0,b0,k0){if(!(d=p0){for(N0=H0+1;N0=p0;)N0++;for(z0=H0,M0=N0-1;z0=b0.length||(N0=k0[w0-1])!=$&&N0!=S||(z0=b0[w0+1])!=$&&z0!=S?v:(h&&(z0=S),z0==N0?z0:v);case y:return N0=w0>0?k0[w0-1]:w,N0==$&&w0+10&&k0[w0-1]==$)return $;if(h)return v;for(Y0=w0+1,M0=b0.length;Y0=1425&&m5<=2303||m5==64286;if(N0=b0[Y0],k5&&(N0==b||N0==B))return b}return w0<1||(N0=b0[w0-1])==w?v:k0[w0-1];case w:return h=!1,o=!0,C;case O:return s=!0,v;case I:case N:case z:case U:case W:h=!1;case j:return v}}function h0(p0){var b0=p0.charCodeAt(0),k0=b0>>8;return k0==0?b0>191?A:q[b0]:k0==5?/[\u0591-\u05f4]/.test(p0)?b:A:k0==6?/[\u0610-\u061a\u064b-\u065f\u06d6-\u06e4\u06e7-\u06ed]/.test(p0)?E:/[\u0660-\u0669\u066b-\u066c]/.test(p0)?S:b0==1642?m:/[\u06f0-\u06f9]/.test(p0)?$:B:k0==32&&b0<=8287?Y[b0&255]:k0==254&&b0>=65136?B:v}function m0(p0){return p0>="\u064B"&&p0<="\u0655"}M.L=A,M.R=b,M.EN=$,M.ON_R=3,M.AN=4,M.R_H=5,M.B=6,M.RLE=7,M.DOT="\xB7",M.doBidiReorder=function(p0,b0,k0){if(p0.length<2)return{};var w0=p0.split(""),H0=new Array(w0.length),N0=new Array(w0.length),z0=[];C=k0?g:p,t0(w0,z0,w0.length,b0);for(var M0=0;M0B&&b0[M0]0&&w0[M0-1]==="\u0644"&&/\u0622|\u0623|\u0625|\u0627/.test(w0[M0])&&(z0[M0-1]=z0[M0]=M.R_H,M0++);w0[w0.length-1]===M.DOT&&(z0[w0.length-1]=M.B),w0[0]==="\u202B"&&(z0[0]=M.RLE);for(var M0=0;M0=0&&(l=this.session.$docRowCache[s])}return l},h.prototype.getSplitIndex=function(){var l=0,o=this.session.$screenRowCache;if(o.length)for(var s,i=this.session.$getRowCacheIndex(o,this.currentRow);this.currentRow-l>0&&(s=this.session.$getRowCacheIndex(o,this.currentRow-l-1),s===i);)i=s,l++;else l=this.currentRow;return l},h.prototype.updateRowLine=function(l,o){l===void 0&&(l=this.getDocumentRow());var s=l===this.session.getLength()-1,i=s?this.EOF:this.EOL;if(this.wrapIndent=0,this.line=this.session.getLine(l),this.isRtlDir=this.$isRtl||this.line.charAt(0)===this.RLE,this.session.$useWrapMode){var r=this.session.$wrapData[l];r&&(o===void 0&&(o=this.getSplitIndex()),o>0&&r.length?(this.wrapIndent=r.indent,this.wrapOffset=this.wrapIndent*this.charWidths[L.L],this.line=oo?this.session.getOverwrite()?l:l-1:o,i=L.getVisualFromLogicalIdx(s,this.bidiMap),r=this.bidiMap.bidiLevels,a=0;!this.session.getOverwrite()&&l<=o&&r[i]%2!==0&&i++;for(var c=0;co&&r[i]%2===0&&(a+=this.charWidths[r[i]]),this.wrapIndent&&(a+=this.isRtlDir?-1*this.wrapOffset:this.wrapOffset),this.isRtlDir&&(a+=this.rtlLineOffset),a},h.prototype.getSelections=function(l,o){var s=this.bidiMap,i=s.bidiLevels,r,a=[],c=0,p=Math.min(l,o)-this.wrapIndent,g=Math.max(l,o)-this.wrapIndent,A=!1,b=!1,$=0;this.wrapIndent&&(c+=this.isRtlDir?-1*this.wrapOffset:this.wrapOffset);for(var S,v=0;v=p&&Si+c/2;){if(i+=c,r===a.length-1){c=0;break}c=this.charWidths[a[++r]]}return r>0&&a[r-1]%2!==0&&a[r]%2===0?(s0&&a[r-1]%2===0&&a[r]%2!==0?o=1+(s>i?this.bidiMap.logicalFromVisual[r]:this.bidiMap.logicalFromVisual[r-1]):this.isRtlDir&&r===a.length-1&&c===0&&a[r-1]%2===0||!this.isRtlDir&&r===0&&a[r]%2!==0?o=1+this.bidiMap.logicalFromVisual[r]:(r>0&&a[r-1]%2!==0&&c!==0&&r--,o=this.bidiMap.logicalFromVisual[r]),o===0&&this.isRtlDir&&o++,o+this.wrapIndent},h}();M.BidiHandler=d}),ace.define("ace/selection",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/lib/event_emitter","ace/range"],function(n,M,G){"use strict";var L=n("./lib/oop"),T=n("./lib/lang"),C=n("./lib/event_emitter").EventEmitter,d=n("./range").Range,h=function(){function l(o){this.session=o,this.doc=o.getDocument(),this.clearSelection(),this.cursor=this.lead=this.doc.createAnchor(0,0),this.anchor=this.doc.createAnchor(0,0),this.$silent=!1;var s=this;this.cursor.on("change",function(i){s.$cursorChanged=!0,s.$silent||s._emit("changeCursor"),!s.$isEmpty&&!s.$silent&&s._emit("changeSelection"),!s.$keepDesiredColumnOnChange&&i.old.column!=i.value.column&&(s.$desiredColumn=null)}),this.anchor.on("change",function(){s.$anchorChanged=!0,!s.$isEmpty&&!s.$silent&&s._emit("changeSelection")})}return l.prototype.isEmpty=function(){return this.$isEmpty||this.anchor.row==this.lead.row&&this.anchor.column==this.lead.column},l.prototype.isMultiLine=function(){return!this.$isEmpty&&this.anchor.row!=this.cursor.row},l.prototype.getCursor=function(){return this.lead.getPosition()},l.prototype.setAnchor=function(o,s){this.$isEmpty=!1,this.anchor.setPosition(o,s)},l.prototype.getAnchor=function(){return this.$isEmpty?this.getSelectionLead():this.anchor.getPosition()},l.prototype.getSelectionLead=function(){return this.lead.getPosition()},l.prototype.isBackwards=function(){var o=this.anchor,s=this.lead;return o.row>s.row||o.row==s.row&&o.column>s.column},l.prototype.getRange=function(){var o=this.anchor,s=this.lead;return this.$isEmpty?d.fromPoints(s,s):this.isBackwards()?d.fromPoints(s,o):d.fromPoints(o,s)},l.prototype.clearSelection=function(){this.$isEmpty||(this.$isEmpty=!0,this._emit("changeSelection"))},l.prototype.selectAll=function(){this.$setSelection(0,0,Number.MAX_VALUE,Number.MAX_VALUE)},l.prototype.setRange=function(o,s){var i=s?o.end:o.start,r=s?o.start:o.end;this.$setSelection(i.row,i.column,r.row,r.column)},l.prototype.$setSelection=function(o,s,i,r){if(!this.$silent){var a=this.$isEmpty,c=this.inMultiSelectMode;this.$silent=!0,this.$cursorChanged=this.$anchorChanged=!1,this.anchor.setPosition(o,s),this.cursor.setPosition(i,r),this.$isEmpty=!d.comparePoints(this.anchor,this.cursor),this.$silent=!1,this.$cursorChanged&&this._emit("changeCursor"),(this.$cursorChanged||this.$anchorChanged||a!=this.$isEmpty||c)&&this._emit("changeSelection")}},l.prototype.$moveSelection=function(o){var s=this.lead;this.$isEmpty&&this.setSelectionAnchor(s.row,s.column),o.call(this)},l.prototype.selectTo=function(o,s){this.$moveSelection(function(){this.moveCursorTo(o,s)})},l.prototype.selectToPosition=function(o){this.$moveSelection(function(){this.moveCursorToPosition(o)})},l.prototype.moveTo=function(o,s){this.clearSelection(),this.moveCursorTo(o,s)},l.prototype.moveToPosition=function(o){this.clearSelection(),this.moveCursorToPosition(o)},l.prototype.selectUp=function(){this.$moveSelection(this.moveCursorUp)},l.prototype.selectDown=function(){this.$moveSelection(this.moveCursorDown)},l.prototype.selectRight=function(){this.$moveSelection(this.moveCursorRight)},l.prototype.selectLeft=function(){this.$moveSelection(this.moveCursorLeft)},l.prototype.selectLineStart=function(){this.$moveSelection(this.moveCursorLineStart)},l.prototype.selectLineEnd=function(){this.$moveSelection(this.moveCursorLineEnd)},l.prototype.selectFileEnd=function(){this.$moveSelection(this.moveCursorFileEnd)},l.prototype.selectFileStart=function(){this.$moveSelection(this.moveCursorFileStart)},l.prototype.selectWordRight=function(){this.$moveSelection(this.moveCursorWordRight)},l.prototype.selectWordLeft=function(){this.$moveSelection(this.moveCursorWordLeft)},l.prototype.getWordRange=function(o,s){if(typeof s=="undefined"){var i=o||this.lead;o=i.row,s=i.column}return this.session.getWordRange(o,s)},l.prototype.selectWord=function(){this.setSelectionRange(this.getWordRange())},l.prototype.selectAWord=function(){var o=this.getCursor(),s=this.session.getAWordRange(o.row,o.column);this.setSelectionRange(s)},l.prototype.getLineRange=function(o,s){var i=typeof o=="number"?o:this.lead.row,r,a=this.session.getFoldLine(i);return a?(i=a.start.row,r=a.end.row):r=i,s===!0?new d(i,0,r,this.session.getLine(r).length):new d(i,0,r+1,0)},l.prototype.selectLine=function(){this.setSelectionRange(this.getLineRange())},l.prototype.moveCursorUp=function(){this.moveCursorBy(-1,0)},l.prototype.moveCursorDown=function(){this.moveCursorBy(1,0)},l.prototype.wouldMoveIntoSoftTab=function(o,s,i){var r=o.column,a=o.column+s;return i<0&&(r=o.column-s,a=o.column),this.session.isTabStop(o)&&this.doc.getLine(o.row).slice(r,a).split(" ").length-1==s},l.prototype.moveCursorLeft=function(){var o=this.lead.getPosition(),s;if(s=this.session.getFoldAt(o.row,o.column,-1))this.moveCursorTo(s.start.row,s.start.column);else if(o.column===0)o.row>0&&this.moveCursorTo(o.row-1,this.doc.getLine(o.row-1).length);else{var i=this.session.getTabSize();this.wouldMoveIntoSoftTab(o,i,-1)&&!this.session.getNavigateWithinSoftTabs()?this.moveCursorBy(0,-i):this.moveCursorBy(0,-1)}},l.prototype.moveCursorRight=function(){var o=this.lead.getPosition(),s;if(s=this.session.getFoldAt(o.row,o.column,1))this.moveCursorTo(s.end.row,s.end.column);else if(this.lead.column==this.doc.getLine(this.lead.row).length)this.lead.row0&&(s.column=r)}}this.moveCursorTo(s.row,s.column)},l.prototype.moveCursorFileEnd=function(){var o=this.doc.getLength()-1,s=this.doc.getLine(o).length;this.moveCursorTo(o,s)},l.prototype.moveCursorFileStart=function(){this.moveCursorTo(0,0)},l.prototype.moveCursorLongWordRight=function(){var o=this.lead.row,s=this.lead.column,i=this.doc.getLine(o),r=i.substring(s);this.session.nonTokenRe.lastIndex=0,this.session.tokenRe.lastIndex=0;var a=this.session.getFoldAt(o,s,1);if(a){this.moveCursorTo(a.end.row,a.end.column);return}if(this.session.nonTokenRe.exec(r)&&(s+=this.session.nonTokenRe.lastIndex,this.session.nonTokenRe.lastIndex=0,r=i.substring(s)),s>=i.length){this.moveCursorTo(o,i.length),this.moveCursorRight(),o0&&this.moveCursorWordLeft();return}this.session.tokenRe.exec(a)&&(s-=this.session.tokenRe.lastIndex,this.session.tokenRe.lastIndex=0),this.moveCursorTo(o,s)},l.prototype.$shortWordEndIndex=function(o){var s=0,i,r=/\s/,a=this.session.tokenRe;if(a.lastIndex=0,this.session.tokenRe.exec(o))s=this.session.tokenRe.lastIndex;else{for(;(i=o[s])&&r.test(i);)s++;if(s<1){for(a.lastIndex=0;(i=o[s])&&!a.test(i);)if(a.lastIndex=0,s++,r.test(i))if(s>2){s--;break}else{for(;(i=o[s])&&r.test(i);)s++;if(s>2)break}}}return a.lastIndex=0,s},l.prototype.moveCursorShortWordRight=function(){var o=this.lead.row,s=this.lead.column,i=this.doc.getLine(o),r=i.substring(s),a=this.session.getFoldAt(o,s,1);if(a)return this.moveCursorTo(a.end.row,a.end.column);if(s==i.length){var c=this.doc.getLength();do o++,r=this.doc.getLine(o);while(o0&&/^\s*$/.test(r));s=r.length,/\s+$/.test(r)||(r="")}var a=T.stringReverse(r),c=this.$shortWordEndIndex(a);return this.moveCursorTo(o,s-c)},l.prototype.moveCursorWordRight=function(){this.session.$selectLongWords?this.moveCursorLongWordRight():this.moveCursorShortWordRight()},l.prototype.moveCursorWordLeft=function(){this.session.$selectLongWords?this.moveCursorLongWordLeft():this.moveCursorShortWordLeft()},l.prototype.moveCursorBy=function(o,s){var i=this.session.documentToScreenPosition(this.lead.row,this.lead.column),r;if(s===0&&(o!==0&&(this.session.$bidiHandler.isBidiRow(i.row,this.lead.row)?(r=this.session.$bidiHandler.getPosLeft(i.column),i.column=Math.round(r/this.session.$bidiHandler.charWidths[0])):r=i.column*this.session.$bidiHandler.charWidths[0]),this.$desiredColumn?i.column=this.$desiredColumn:this.$desiredColumn=i.column),o!=0&&this.session.lineWidgets&&this.session.lineWidgets[this.lead.row]){var a=this.session.lineWidgets[this.lead.row];o<0?o-=a.rowsAbove||0:o>0&&(o+=a.rowCount-(a.rowsAbove||0))}var c=this.session.screenToDocumentPosition(i.row+o,i.column,r);o!==0&&s===0&&c.row===this.lead.row&&(c.column,this.lead.column),this.moveCursorTo(c.row,c.column+s,s===0)},l.prototype.moveCursorToPosition=function(o){this.moveCursorTo(o.row,o.column)},l.prototype.moveCursorTo=function(o,s,i){var r=this.session.getFoldAt(o,s,1);r&&(o=r.start.row,s=r.start.column),this.$keepDesiredColumnOnChange=!0;var a=this.session.getLine(o);/[\uDC00-\uDFFF]/.test(a.charAt(s))&&a.charAt(s-1)&&(this.lead.row==o&&this.lead.column==s+1?s=s-1:s=s+1),this.lead.setPosition(o,s),this.$keepDesiredColumnOnChange=!1,i||(this.$desiredColumn=null)},l.prototype.moveCursorToScreen=function(o,s,i){var r=this.session.screenToDocumentPosition(o,s);this.moveCursorTo(r.row,r.column,i)},l.prototype.detach=function(){this.lead.detach(),this.anchor.detach()},l.prototype.fromOrientedRange=function(o){this.setSelectionRange(o,o.cursor==o.start),this.$desiredColumn=o.desiredColumn||this.$desiredColumn},l.prototype.toOrientedRange=function(o){var s=this.getRange();return o?(o.start.column=s.start.column,o.start.row=s.start.row,o.end.column=s.end.column,o.end.row=s.end.row):o=s,o.cursor=this.isBackwards()?o.start:o.end,o.desiredColumn=this.$desiredColumn,o},l.prototype.getRangeOfMovements=function(o){var s=this.getCursor();try{o(this);var i=this.getCursor();return d.fromPoints(s,i)}catch(r){return d.fromPoints(s,s)}finally{this.moveCursorToPosition(s)}},l.prototype.toJSON=function(){if(this.rangeCount)var o=this.ranges.map(function(s){var i=s.clone();return i.isBackwards=s.cursor==s.start,i});else{var o=this.getRange();o.isBackwards=this.isBackwards()}return o},l.prototype.fromJSON=function(o){if(o.start==null)if(this.rangeList&&o.length>1){this.toSingleRange(o[0]);for(var s=o.length;s--;){var i=d.fromPoints(o[s].start,o[s].end);o[s].isBackwards&&(i.cursor=i.start),this.addRange(i,!0)}return}else o=o[0];this.rangeList&&this.toSingleRange(o),this.setSelectionRange(o,o.isBackwards)},l.prototype.isEqual=function(o){if((o.length||this.rangeCount)&&o.length!=this.rangeCount)return!1;if(!o.length||!this.ranges)return this.getRange().isEqual(o);for(var s=this.ranges.length;s--;)if(!this.ranges[s].isEqual(o[s]))return!1;return!0},l}();h.prototype.setSelectionAnchor=h.prototype.setAnchor,h.prototype.getSelectionAnchor=h.prototype.getAnchor,h.prototype.setSelectionRange=h.prototype.setRange,L.implement(h.prototype,C),M.Selection=h}),ace.define("ace/tokenizer",["require","exports","module","ace/lib/report_error"],function(n,M,G){"use strict";var L=n("./lib/report_error").reportError,T=2e3,C=function(){function d(h){this.states=h,this.regExps={},this.matchMappings={};for(var l in this.states){for(var o=this.states[l],s=[],i=0,r=this.matchMappings[l]={defaultToken:"text"},a="g",c=[],p=0;p1?g.onMatch=this.$applyToken:g.onMatch=g.token),b>1&&(/\\\d/.test(g.regex)?A=g.regex.replace(/\\([0-9]+)/g,function($,S){return"\\"+(parseInt(S,10)+i+1)}):(b=1,A=this.removeCapturingGroups(g.regex)),!g.splitRegex&&typeof g.token!="string"&&c.push(g)),r[i]=p,i+=b,s.push(A),g.onMatch||(g.onMatch=null)}}s.length||(r[0]=0,s.push("$")),c.forEach(function($){$.splitRegex=this.createSplitterRegexp($.regex,a)},this),this.regExps[l]=new RegExp("("+s.join(")|(")+")|($)",a)}}return d.prototype.$setMaxTokenCount=function(h){T=h|0},d.prototype.$applyToken=function(h){var l=this.splitRegex.exec(h).slice(1),o=this.token.apply(this,l);if(typeof o=="string")return[{type:o,value:h}];for(var s=[],i=0,r=o.length;ig){var O=h.substring(g,w-v.length);b.type==$?b.value+=O:(b.type&&p.push(b),b={type:$,value:O})}for(var B=0;BT){for(A>2*h.length&&this.reportError("infinite loop with in ace tokenizer",{startState:l,line:h});g1&&o[0]!==s&&o.unshift("#tmp",s),{tokens:p,state:o.length?o:s}},d}();C.prototype.reportError=L,M.Tokenizer=C}),ace.define("ace/mode/text_highlight_rules",["require","exports","module","ace/lib/deep_copy"],function(n,M,G){"use strict";var L=n("../lib/deep_copy").deepCopy,T=function(){this.$rules={start:[{token:"empty_line",regex:"^$"},{defaultToken:"text"}]}};(function(){this.addRules=function(h,l){if(!l){for(var o in h)this.$rules[o]=h[o];return}for(var o in h){for(var s=h[o],i=0;i=this.$rowTokens.length;){if(this.$row+=1,d||(d=this.$session.getLength()),this.$row>=d)return this.$row=d-1,null;this.$rowTokens=this.$session.getTokens(this.$row),this.$tokenIndex=0}return this.$rowTokens[this.$tokenIndex]},C.prototype.getCurrentToken=function(){return this.$rowTokens[this.$tokenIndex]},C.prototype.getCurrentTokenRow=function(){return this.$row},C.prototype.getCurrentTokenColumn=function(){var d=this.$rowTokens,h=this.$tokenIndex,l=d[h].start;if(l!==void 0)return l;for(l=0;h>0;)h-=1,l+=d[h].value.length;return l},C.prototype.getCurrentTokenPosition=function(){return{row:this.$row,column:this.getCurrentTokenColumn()}},C.prototype.getCurrentTokenRange=function(){var d=this.$rowTokens[this.$tokenIndex],h=this.getCurrentTokenColumn();return new L(this.$row,h,this.$row,h+d.value.length)},C}();M.TokenIterator=T}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(n,M,G){"use strict";var L=n("../../lib/oop"),T=n("../behaviour").Behaviour,C=n("../../token_iterator").TokenIterator,d=n("../../lib/lang"),h=["text","paren.rparen","rparen","paren","punctuation.operator"],l=["text","paren.rparen","rparen","paren","punctuation.operator","comment"],o,s={},i={'"':'"',"'":"'"},r=function(p){var g=-1;if(p.multiSelect&&(g=p.selection.index,s.rangeCount!=p.multiSelect.rangeCount&&(s={rangeCount:p.multiSelect.rangeCount})),s[g])return o=s[g];o=s[g]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},a=function(p,g,A,b){var $=p.end.row-p.start.row;return{text:A+g+b,selection:[0,p.start.column+1,$,p.end.column+($?0:1)]}},c=function(p){p=p||{},this.add("braces","insertion",function(g,A,b,$,S){var v=b.getCursorPosition(),w=$.doc.getLine(v.row);if(S=="{"){r(b);var O=b.getSelectionRange(),B=$.doc.getTextRange(O);if(B!==""&&B!=="{"&&b.getWrapBehavioursEnabled())return a(O,B,"{","}");if(c.isSaneInsertion(b,$))return/[\]\}\)]/.test(w[v.column])||b.inMultiSelectMode||p.braces?(c.recordAutoInsert(b,$,"}"),{text:"{}",selection:[1,1]}):(c.recordMaybeInsert(b,$,"{"),{text:"{",selection:[1,1]})}else if(S=="}"){r(b);var k=w.substring(v.column,v.column+1);if(k=="}"){var _=$.$findOpeningBracket("}",{column:v.column+1,row:v.row});if(_!==null&&c.isAutoInsertedClosing(v,w,S))return c.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else if(S==` -`||S==`\r -`){r(b);var y="";c.isMaybeInsertedClosing(v,w)&&(y=d.stringRepeat("}",o.maybeInsertedBrackets),c.clearMaybeInsertedClosing());var k=w.substring(v.column,v.column+1);if(k==="}"){var m=$.findMatchingBracket({row:v.row,column:v.column+1},"}");if(!m)return null;var E=this.$getIndent($.getLine(m.row))}else if(y)var E=this.$getIndent(w);else{c.clearMaybeInsertedClosing();return}var I=E+$.getTabString();return{text:` -`+I+` -`+E+y,selection:[1,I.length,1,I.length]}}else c.clearMaybeInsertedClosing()}),this.add("braces","deletion",function(g,A,b,$,S){var v=$.doc.getTextRange(S);if(!S.isMultiLine()&&v=="{"){r(b);var w=$.doc.getLine(S.start.row),O=w.substring(S.end.column,S.end.column+1);if(O=="}")return S.end.column++,S;o.maybeInsertedBrackets--}}),this.add("parens","insertion",function(g,A,b,$,S){if(S=="("){r(b);var v=b.getSelectionRange(),w=$.doc.getTextRange(v);if(w!==""&&b.getWrapBehavioursEnabled())return a(v,w,"(",")");if(c.isSaneInsertion(b,$))return c.recordAutoInsert(b,$,")"),{text:"()",selection:[1,1]}}else if(S==")"){r(b);var O=b.getCursorPosition(),B=$.doc.getLine(O.row),k=B.substring(O.column,O.column+1);if(k==")"){var _=$.$findOpeningBracket(")",{column:O.column+1,row:O.row});if(_!==null&&c.isAutoInsertedClosing(O,B,S))return c.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(g,A,b,$,S){var v=$.doc.getTextRange(S);if(!S.isMultiLine()&&v=="("){r(b);var w=$.doc.getLine(S.start.row),O=w.substring(S.start.column+1,S.start.column+2);if(O==")")return S.end.column++,S}}),this.add("brackets","insertion",function(g,A,b,$,S){if(S=="["){r(b);var v=b.getSelectionRange(),w=$.doc.getTextRange(v);if(w!==""&&b.getWrapBehavioursEnabled())return a(v,w,"[","]");if(c.isSaneInsertion(b,$))return c.recordAutoInsert(b,$,"]"),{text:"[]",selection:[1,1]}}else if(S=="]"){r(b);var O=b.getCursorPosition(),B=$.doc.getLine(O.row),k=B.substring(O.column,O.column+1);if(k=="]"){var _=$.$findOpeningBracket("]",{column:O.column+1,row:O.row});if(_!==null&&c.isAutoInsertedClosing(O,B,S))return c.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(g,A,b,$,S){var v=$.doc.getTextRange(S);if(!S.isMultiLine()&&v=="["){r(b);var w=$.doc.getLine(S.start.row),O=w.substring(S.start.column+1,S.start.column+2);if(O=="]")return S.end.column++,S}}),this.add("string_dquotes","insertion",function(g,A,b,$,S){var v=$.$mode.$quotes||i;if(S.length==1&&v[S]){if(this.lineCommentStart&&this.lineCommentStart.indexOf(S)!=-1)return;r(b);var w=S,O=b.getSelectionRange(),B=$.doc.getTextRange(O);if(B!==""&&(B.length!=1||!v[B])&&b.getWrapBehavioursEnabled())return a(O,B,w,w);if(!B){var k=b.getCursorPosition(),_=$.doc.getLine(k.row),y=_.substring(k.column-1,k.column),m=_.substring(k.column,k.column+1),E=$.getTokenAt(k.row,k.column),I=$.getTokenAt(k.row,k.column+1);if(y=="\\"&&E&&/escape/.test(E.type))return null;var N=E&&/string|escape/.test(E.type),W=!I||/string|escape/.test(I.type),z;if(m==w)z=N!==W,z&&/string\.end/.test(I.type)&&(z=!1);else{if(N&&!W||N&&W)return null;var U=$.$mode.tokenRe;U.lastIndex=0;var j=U.test(y);U.lastIndex=0;var q=U.test(m),Y=$.$mode.$pairQuotesAfter,t0=Y&&Y[w]&&Y[w].test(y);if(!t0&&j||q||m&&!/[\s;,.})\]\\]/.test(m))return null;var n0=_[k.column-2];if(y==w&&(n0==w||U.test(n0)))return null;z=!0}return{text:z?w+w:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(g,A,b,$,S){var v=$.$mode.$quotes||i,w=$.doc.getTextRange(S);if(!S.isMultiLine()&&v.hasOwnProperty(w)){r(b);var O=$.doc.getLine(S.start.row),B=O.substring(S.start.column+1,S.start.column+2);if(B==w)return S.end.column++,S}}),p.closeDocComment!==!1&&this.add("doc comment end","insertion",function(g,A,b,$,S){if(g==="doc-start"&&(S===` -`||S===`\r -`)&&b.selection.isEmpty()){var v=b.getCursorPosition(),w=$.doc.getLine(v.row),O=$.doc.getLine(v.row+1),B=this.$getIndent(w);if(/\s*\*/.test(O))return/^\s*\*/.test(w)?{text:S+B+"* ",selection:[1,3+B.length,1,3+B.length]}:{text:S+B+" * ",selection:[1,3+B.length,1,3+B.length]};if(/\/\*\*/.test(w.substring(0,v.column)))return{text:S+B+" * "+S+" "+B+"*/",selection:[1,4+B.length,1,4+B.length]}}})};c.isSaneInsertion=function(p,g){var A=p.getCursorPosition(),b=new C(g,A.row,A.column);if(!this.$matchTokenType(b.getCurrentToken()||"text",h)){if(/[)}\]]/.test(p.session.getLine(A.row)[A.column]))return!0;var $=new C(g,A.row,A.column+1);if(!this.$matchTokenType($.getCurrentToken()||"text",h))return!1}return b.stepForward(),b.getCurrentTokenRow()!==A.row||this.$matchTokenType(b.getCurrentToken()||"text",l)},c.$matchTokenType=function(p,g){return g.indexOf(p.type||p)>-1},c.recordAutoInsert=function(p,g,A){var b=p.getCursorPosition(),$=g.doc.getLine(b.row);this.isAutoInsertedClosing(b,$,o.autoInsertedLineEnd[0])||(o.autoInsertedBrackets=0),o.autoInsertedRow=b.row,o.autoInsertedLineEnd=A+$.substr(b.column),o.autoInsertedBrackets++},c.recordMaybeInsert=function(p,g,A){var b=p.getCursorPosition(),$=g.doc.getLine(b.row);this.isMaybeInsertedClosing(b,$)||(o.maybeInsertedBrackets=0),o.maybeInsertedRow=b.row,o.maybeInsertedLineStart=$.substr(0,b.column)+A,o.maybeInsertedLineEnd=$.substr(b.column),o.maybeInsertedBrackets++},c.isAutoInsertedClosing=function(p,g,A){return o.autoInsertedBrackets>0&&p.row===o.autoInsertedRow&&A===o.autoInsertedLineEnd[0]&&g.substr(p.column)===o.autoInsertedLineEnd},c.isMaybeInsertedClosing=function(p,g){return o.maybeInsertedBrackets>0&&p.row===o.maybeInsertedRow&&g.substr(p.column)===o.maybeInsertedLineEnd&&g.substr(0,p.column)==o.maybeInsertedLineStart},c.popAutoInsertedClosing=function(){o.autoInsertedLineEnd=o.autoInsertedLineEnd.substr(1),o.autoInsertedBrackets--},c.clearMaybeInsertedClosing=function(){o&&(o.maybeInsertedBrackets=0,o.maybeInsertedRow=-1)},L.inherits(c,T),M.CstyleBehaviour=c}),ace.define("ace/unicode",["require","exports","module"],function(n,M,G){"use strict";for(var L=[48,9,8,25,5,0,2,25,48,0,11,0,5,0,6,22,2,30,2,457,5,11,15,4,8,0,2,0,18,116,2,1,3,3,9,0,2,2,2,0,2,19,2,82,2,138,2,4,3,155,12,37,3,0,8,38,10,44,2,0,2,1,2,1,2,0,9,26,6,2,30,10,7,61,2,9,5,101,2,7,3,9,2,18,3,0,17,58,3,100,15,53,5,0,6,45,211,57,3,18,2,5,3,11,3,9,2,1,7,6,2,2,2,7,3,1,3,21,2,6,2,0,4,3,3,8,3,1,3,3,9,0,5,1,2,4,3,11,16,2,2,5,5,1,3,21,2,6,2,1,2,1,2,1,3,0,2,4,5,1,3,2,4,0,8,3,2,0,8,15,12,2,2,8,2,2,2,21,2,6,2,1,2,4,3,9,2,2,2,2,3,0,16,3,3,9,18,2,2,7,3,1,3,21,2,6,2,1,2,4,3,8,3,1,3,2,9,1,5,1,2,4,3,9,2,0,17,1,2,5,4,2,2,3,4,1,2,0,2,1,4,1,4,2,4,11,5,4,4,2,2,3,3,0,7,0,15,9,18,2,2,7,2,2,2,22,2,9,2,4,4,7,2,2,2,3,8,1,2,1,7,3,3,9,19,1,2,7,2,2,2,22,2,9,2,4,3,8,2,2,2,3,8,1,8,0,2,3,3,9,19,1,2,7,2,2,2,22,2,15,4,7,2,2,2,3,10,0,9,3,3,9,11,5,3,1,2,17,4,23,2,8,2,0,3,6,4,0,5,5,2,0,2,7,19,1,14,57,6,14,2,9,40,1,2,0,3,1,2,0,3,0,7,3,2,6,2,2,2,0,2,0,3,1,2,12,2,2,3,4,2,0,2,5,3,9,3,1,35,0,24,1,7,9,12,0,2,0,2,0,5,9,2,35,5,19,2,5,5,7,2,35,10,0,58,73,7,77,3,37,11,42,2,0,4,328,2,3,3,6,2,0,2,3,3,40,2,3,3,32,2,3,3,6,2,0,2,3,3,14,2,56,2,3,3,66,5,0,33,15,17,84,13,619,3,16,2,25,6,74,22,12,2,6,12,20,12,19,13,12,2,2,2,1,13,51,3,29,4,0,5,1,3,9,34,2,3,9,7,87,9,42,6,69,11,28,4,11,5,11,11,39,3,4,12,43,5,25,7,10,38,27,5,62,2,28,3,10,7,9,14,0,89,75,5,9,18,8,13,42,4,11,71,55,9,9,4,48,83,2,2,30,14,230,23,280,3,5,3,37,3,5,3,7,2,0,2,0,2,0,2,30,3,52,2,6,2,0,4,2,2,6,4,3,3,5,5,12,6,2,2,6,67,1,20,0,29,0,14,0,17,4,60,12,5,0,4,11,18,0,5,0,3,9,2,0,4,4,7,0,2,0,2,0,2,3,2,10,3,3,6,4,5,0,53,1,2684,46,2,46,2,132,7,6,15,37,11,53,10,0,17,22,10,6,2,6,2,6,2,6,2,6,2,6,2,6,2,6,2,31,48,0,470,1,36,5,2,4,6,1,5,85,3,1,3,2,2,89,2,3,6,40,4,93,18,23,57,15,513,6581,75,20939,53,1164,68,45,3,268,4,27,21,31,3,13,13,1,2,24,9,69,11,1,38,8,3,102,3,1,111,44,25,51,13,68,12,9,7,23,4,0,5,45,3,35,13,28,4,64,15,10,39,54,10,13,3,9,7,22,4,1,5,66,25,2,227,42,2,1,3,9,7,11171,13,22,5,48,8453,301,3,61,3,105,39,6,13,4,6,11,2,12,2,4,2,0,2,1,2,1,2,107,34,362,19,63,3,53,41,11,5,15,17,6,13,1,25,2,33,4,2,134,20,9,8,25,5,0,2,25,12,88,4,5,3,5,3,5,3,2],T=0,C=[],d=0;d2?n0%S!=S-1:n0%S==0}}else{if(!this.blockComment)return!1;var w=this.blockComment.start,O=this.blockComment.end,B=new RegExp("^(\\s*)(?:"+l.escapeRegExp(w)+")"),k=new RegExp("(?:"+l.escapeRegExp(O)+")\\s*$"),_=function(z,U){m(z,U)||(!A||/\S/.test(z))&&(g.insertInLine({row:U,column:z.length},O),g.insertInLine({row:U,column:$},w))},y=function(z,U){var j;(j=z.match(k))&&g.removeInLine(U,z.length-j[0].length,z.length),(j=z.match(B))&&g.removeInLine(U,j[1].length,j[0].length)},m=function(z,U){if(B.test(z))return!0;for(var j=a.getTokens(U),q=0;qz.length&&(W=z.length)}),$==1/0&&($=W,A=!1,b=!1),v&&$%S!=0&&($=Math.floor($/S)*S),N(b?y:_)},this.toggleBlockComment=function(r,a,c,p){var g=this.blockComment;if(g){!g.start&&g[0]&&(g=g[0]);var A=new o(a,p.row,p.column),b=A.getCurrentToken(),$=a.selection,S=a.selection.toOrientedRange(),v,w;if(b&&/comment/.test(b.type)){for(var O,B;b&&/comment/.test(b.type);){var k=b.value.indexOf(g.start);if(k!=-1){var _=A.getCurrentTokenRow(),y=A.getCurrentTokenColumn()+k;O=new s(_,y,_,y+g.start.length);break}b=A.stepBackward()}for(var A=new o(a,p.row,p.column),b=A.getCurrentToken();b&&/comment/.test(b.type);){var k=b.value.indexOf(g.end);if(k!=-1){var _=A.getCurrentTokenRow(),y=A.getCurrentTokenColumn()+k;B=new s(_,y,_,y+g.end.length);break}b=A.stepForward()}B&&a.remove(B),O&&(a.remove(O),v=O.start.row,w=-g.start.length)}else w=g.start.length,v=c.start.row,a.insert(c.end,g.end),a.insert(c.start,g.start);S.start.row==v&&(S.start.column+=w),S.end.row==v&&(S.end.column+=w),a.selection.fromOrientedRange(S)}},this.getNextLineIndent=function(r,a,c){return this.$getIndent(a)},this.checkOutdent=function(r,a,c){return!1},this.autoOutdent=function(r,a,c){},this.$getIndent=function(r){return r.match(/^\s*/)[0]},this.createWorker=function(r){return null},this.createModeDelegates=function(r){this.$embeds=[],this.$modes={};for(var a in r)if(r[a]){var c=r[a],p=c.prototype.$id,g=L.$modes[p];g||(L.$modes[p]=g=new c),L.$modes[a]||(L.$modes[a]=g),this.$embeds.push(a),this.$modes[a]=g}for(var A=["toggleBlockComment","toggleCommentLines","getNextLineIndent","checkOutdent","autoOutdent","transformAction","getCompletions"],a=0;a=0&&h.row=0&&h.column<=d[h.row].length}function C(d,h){h.action!="insert"&&h.action!="remove"&&L(h,"delta.action must be 'insert' or 'remove'"),h.lines instanceof Array||L(h,"delta.lines must be an Array"),(!h.start||!h.end)&&L(h,"delta.start/end must be an present");var l=h.start;T(d,h.start)||L(h,"delta.start must be contained in document");var o=h.end;h.action=="remove"&&!T(d,o)&&L(h,"delta.end must contained in document for 'remove' actions");var s=o.row-l.row,i=o.column-(s==0?l.column:0);(s!=h.lines.length-1||h.lines[s].length!=i)&&L(h,"delta.range must match delta lines")}M.applyDelta=function(d,h,l){var o=h.start.row,s=h.start.column,i=d[o]||"";switch(h.action){case"insert":var r=h.lines;if(r.length===1)d[o]=i.substring(0,s)+h.lines[0]+i.substring(s);else{var a=[o,1].concat(h.lines);d.splice.apply(d,a),d[o]=i.substring(0,s)+d[o],d[o+h.lines.length-1]+=i.substring(s)}break;case"remove":var c=h.end.column,p=h.end.row;o===p?d[o]=i.substring(0,s)+i.substring(c):d.splice(o,p-o+1,i.substring(0,s)+d[p].substring(c));break}}}),ace.define("ace/anchor",["require","exports","module","ace/lib/oop","ace/lib/event_emitter"],function(n,M,G){"use strict";var L=n("./lib/oop"),T=n("./lib/event_emitter").EventEmitter,C=function(){function l(o,s,i){this.$onChange=this.onChange.bind(this),this.attach(o),typeof i=="undefined"?this.setPosition(s.row,s.column):this.setPosition(s,i)}return l.prototype.getPosition=function(){return this.$clipPositionToDocument(this.row,this.column)},l.prototype.getDocument=function(){return this.document},l.prototype.onChange=function(o){if(!(o.start.row==o.end.row&&o.start.row!=this.row)&&!(o.start.row>this.row)){var s=h(o,{row:this.row,column:this.column},this.$insertRight);this.setPosition(s.row,s.column,!0)}},l.prototype.setPosition=function(o,s,i){var r;if(i?r={row:o,column:s}:r=this.$clipPositionToDocument(o,s),!(this.row==r.row&&this.column==r.column)){var a={row:this.row,column:this.column};this.row=r.row,this.column=r.column,this._signal("change",{old:a,value:r})}},l.prototype.detach=function(){this.document.off("change",this.$onChange)},l.prototype.attach=function(o){this.document=o||this.document,this.document.on("change",this.$onChange)},l.prototype.$clipPositionToDocument=function(o,s){var i={};return o>=this.document.getLength()?(i.row=Math.max(0,this.document.getLength()-1),i.column=this.document.getLine(i.row).length):o<0?(i.row=0,i.column=0):(i.row=o,i.column=Math.min(this.document.getLine(i.row).length,Math.max(0,s))),s<0&&(i.column=0),i},l}();C.prototype.$insertRight=!1,L.implement(C.prototype,T);function d(l,o,s){var i=s?l.column<=o.column:l.column=r&&(s=r-1,i=void 0);var a=this.getLine(s);return i==null&&(i=a.length),i=Math.min(Math.max(i,0),a.length),{row:s,column:i}},o.prototype.clonePos=function(s){return{row:s.row,column:s.column}},o.prototype.pos=function(s,i){return{row:s,column:i}},o.prototype.$clipPosition=function(s){var i=this.getLength();return s.row>=i?(s.row=Math.max(0,i-1),s.column=this.getLine(i-1).length):(s.row=Math.max(0,s.row),s.column=Math.min(Math.max(s.column,0),this.getLine(s.row).length)),s},o.prototype.insertFullLines=function(s,i){s=Math.min(Math.max(s,0),this.getLength());var r=0;s0,a=i=0&&this.applyDelta({start:this.pos(s,this.getLine(s).length),end:this.pos(s+1,0),action:"remove",lines:["",""]})},o.prototype.replace=function(s,i){if(s instanceof d||(s=d.fromPoints(s.start,s.end)),i.length===0&&s.isEmpty())return s.start;if(i==this.getTextRange(s))return s.end;this.remove(s);var r;return i?r=this.insert(s.start,i):r=s.start,r},o.prototype.applyDeltas=function(s){for(var i=0;i=0;i--)this.revertDelta(s[i])},o.prototype.applyDelta=function(s,i){var r=s.action=="insert";(r?s.lines.length<=1&&!s.lines[0]:!d.comparePoints(s.start,s.end))||(r&&s.lines.length>2e4?this.$splitAndapplyLargeDelta(s,2e4):(T(this.$lines,s,i),this._signal("change",s)))},o.prototype.$safeApplyDelta=function(s){var i=this.$lines.length;(s.action=="remove"&&s.start.row20){o.running=setTimeout(o.$worker,20);break}}o.currentLine=i,r==-1&&(r=i),c<=r&&o.fireUpdateEvent(c,r)}}}return d.prototype.setTokenizer=function(h){this.tokenizer=h,this.lines=[],this.states=[],this.start(0)},d.prototype.setDocument=function(h){this.doc=h,this.lines=[],this.states=[],this.stop()},d.prototype.fireUpdateEvent=function(h,l){var o={first:h,last:l};this._signal("update",{data:o})},d.prototype.start=function(h){this.currentLine=Math.min(h||0,this.currentLine,this.doc.getLength()),this.lines.splice(this.currentLine,this.lines.length),this.states.splice(this.currentLine,this.states.length),this.stop(),this.running=setTimeout(this.$worker,700)},d.prototype.scheduleStart=function(){this.running||(this.running=setTimeout(this.$worker,700))},d.prototype.$updateOnChange=function(h){var l=h.start.row,o=h.end.row-l;if(o===0)this.lines[l]=null;else if(h.action=="remove")this.lines.splice(l,o+1,null),this.states.splice(l,o+1,null);else{var s=Array(o+1);s.unshift(l,1),this.lines.splice.apply(this.lines,s),this.states.splice.apply(this.states,s)}this.currentLine=Math.min(l,this.currentLine,this.doc.getLength()),this.stop()},d.prototype.stop=function(){this.running&&clearTimeout(this.running),this.running=!1},d.prototype.getTokens=function(h){return this.lines[h]||this.$tokenizeRow(h)},d.prototype.getState=function(h){return this.currentLine==h&&this.$tokenizeRow(h),this.states[h]||"start"},d.prototype.$tokenizeRow=function(h){var l=this.doc.getLine(h),o=this.states[h-1],s=this.tokenizer.getLineTokens(l,o,h);return this.states[h]+""!=s.state+""?(this.states[h]=s.state,this.lines[h+1]=null,this.currentLine>h+1&&(this.currentLine=h+1)):this.currentLine==h&&(this.currentLine=h+1),this.lines[h]=s.tokens},d.prototype.cleanup=function(){this.running=!1,this.lines=[],this.states=[],this.currentLine=0,this.removeAllListeners()},d}();L.implement(C.prototype,T),M.BackgroundTokenizer=C}),ace.define("ace/search_highlight",["require","exports","module","ace/lib/lang","ace/range"],function(n,M,G){"use strict";var L=n("./lib/lang"),T=n("./range").Range,C=function(){function d(h,l,o){o===void 0&&(o="text"),this.setRegexp(h),this.clazz=l,this.type=o}return d.prototype.setRegexp=function(h){this.regExp+""!=h+""&&(this.regExp=h,this.cache=[])},d.prototype.update=function(h,l,o,s){if(this.regExp)for(var i=s.firstRow,r=s.lastRow,a={},c=i;c<=r;c++){var p=this.cache[c];p==null&&(p=L.getMatchOffsets(o.getLine(c),this.regExp),p.length>this.MAX_RANGES&&(p=p.slice(0,this.MAX_RANGES)),p=p.map(function($){return new T(c,$.offset,c,$.offset+$.length)}),this.cache[c]=p.length?p:"");for(var g=p.length;g--;){var A=p[g].toScreenRange(o),b=A.toString();a[b]||(a[b]=!0,l.drawSingleLineMarker(h,A,this.clazz,s))}}},d}();C.prototype.MAX_RANGES=500,M.SearchHighlight=C}),ace.define("ace/undomanager",["require","exports","module","ace/range"],function(n,M,G){"use strict";var L=function(){function v(){this.$maxRev=0,this.$fromUndo=!1,this.$undoDepth=1/0,this.reset()}return v.prototype.addSession=function(w){this.$session=w},v.prototype.add=function(w,O,B){if(!this.$fromUndo&&w!=this.$lastDelta){if(this.$keepRedoStack||(this.$redoStack.length=0),O===!1||!this.lastDeltas){this.lastDeltas=[];var k=this.$undoStack.length;k>this.$undoDepth-1&&this.$undoStack.splice(0,k-this.$undoDepth+1),this.$undoStack.push(this.lastDeltas),w.id=this.$rev=++this.$maxRev}(w.action=="remove"||w.action=="insert")&&(this.$lastDelta=w),this.lastDeltas.push(w)}},v.prototype.addSelection=function(w,O){this.selections.push({value:w,rev:O||this.$rev})},v.prototype.startNewGroup=function(){return this.lastDeltas=null,this.$rev},v.prototype.markIgnored=function(w,O){O==null&&(O=this.$rev+1);for(var B=this.$undoStack,k=B.length;k--;){var _=B[k][0];if(_.id<=w)break;_.id0},v.prototype.canRedo=function(){return this.$redoStack.length>0},v.prototype.bookmark=function(w){w==null&&(w=this.$rev),this.mark=w},v.prototype.isAtBookmark=function(){return this.$rev===this.mark},v.prototype.toJSON=function(){return{$redoStack:this.$redoStack,$undoStack:this.$undoStack}},v.prototype.fromJSON=function(w){this.reset(),this.$undoStack=w.$undoStack,this.$redoStack=w.$redoStack},v.prototype.$prettyPrint=function(w){return w?i(w):i(this.$undoStack)+` ---- -`+i(this.$redoStack)},v}();L.prototype.hasUndo=L.prototype.canUndo,L.prototype.hasRedo=L.prototype.canRedo,L.prototype.isClean=L.prototype.isAtBookmark,L.prototype.markClean=L.prototype.bookmark;function T(v,w){for(var O=w;O--;){var B=v[O];if(B&&!B[0].ignore){for(;O0){m.row+=k,m.column+=m.row==B.row?_:0;continue}!w&&I<=0&&(m.row=O.row,m.column=O.column,I===0&&(m.bias=1))}}}function o(v){return{row:v.row,column:v.column}}function s(v){return{start:o(v.start),end:o(v.end),action:v.action,lines:v.lines.slice()}}function i(v){if(v=v||this,Array.isArray(v))return v.map(i).join(` -`);var w="";return v.action?(w=v.action=="insert"?"+":"-",w+="["+v.lines+"]"):v.value&&(Array.isArray(v.value)?w=v.value.map(r).join(` -`):w=r(v.value)),v.start&&(w+=r(v)),(v.id||v.rev)&&(w+=" ("+(v.id||v.rev)+")"),w}function r(v){return v.start.row+":"+v.start.column+"=>"+v.end.row+":"+v.end.column}function a(v,w){var O=v.action=="insert",B=w.action=="insert";if(O&&B)if(d(w.start,v.end)>=0)g(w,v,-1);else if(d(w.start,v.start)<=0)g(v,w,1);else return null;else if(O&&!B)if(d(w.start,v.end)>=0)g(w,v,-1);else if(d(w.end,v.start)<=0)g(v,w,-1);else return null;else if(!O&&B)if(d(w.start,v.start)>=0)g(w,v,1);else if(d(w.start,v.start)<=0)g(v,w,1);else return null;else if(!O&&!B)if(d(w.start,v.start)>=0)g(w,v,1);else if(d(w.end,v.start)<=0)g(v,w,-1);else return null;return[w,v]}function c(v,w){for(var O=v.length;O--;)for(var B=0;B=0?g(v,w,-1):(d(v.start,w.start)<=0||g(v,C.fromPoints(w.start,v.start),-1),g(w,v,1));else if(!O&&B)d(w.start,v.end)>=0?g(w,v,-1):(d(w.start,v.start)<=0||g(w,C.fromPoints(v.start,w.start),-1),g(v,w,1));else if(!O&&!B)if(d(w.start,v.end)>=0)g(w,v,-1);else if(d(w.end,v.start)<=0)g(v,w,-1);else{var k,_;return d(v.start,w.start)<0&&(k=v,v=b(v,w.start)),d(v.end,w.end)>0&&(_=b(v,w.end)),A(w.end,v.start,v.end,-1),_&&!k&&(v.lines=_.lines,v.start=_.start,v.end=_.end,_=v),[w,k,_].filter(Boolean)}return[w,v]}function g(v,w,O){A(v.start,w.start,w.end,O),A(v.end,w.start,w.end,O)}function A(v,w,O,B){v.row==(B==1?w:O).row&&(v.column+=B*(O.column-w.column)),v.row+=B*(O.row-w.row)}function b(v,w){var O=v.lines,B=v.end;v.end=o(w);var k=v.end.row-v.start.row,_=O.splice(k,O.length),y=k?w.column:w.column-v.start.column;O.push(_[0].substring(0,y)),_[0]=_[0].substr(y);var m={start:o(w),end:B,lines:_,action:v.action};return m}function $(v,w){w=s(w);for(var O=v.length;O--;){for(var B=v[O],k=0;kthis.endRow)throw new Error("Can't add a fold to this FoldLine as it has no connection");this.folds.push(d),this.folds.sort(function(h,l){return-h.range.compareEnd(l.start.row,l.start.column)}),this.range.compareEnd(d.start.row,d.start.column)>0?(this.end.row=d.end.row,this.end.column=d.end.column):this.range.compareStart(d.end.row,d.end.column)<0&&(this.start.row=d.start.row,this.start.column=d.start.column)}else if(d.start.row==this.end.row)this.folds.push(d),this.end.row=d.end.row,this.end.column=d.end.column;else if(d.end.row==this.start.row)this.folds.unshift(d),this.start.row=d.start.row,this.start.column=d.start.column;else throw new Error("Trying to add fold to FoldRow that doesn't have a matching row");d.foldLine=this},C.prototype.containsRow=function(d){return d>=this.start.row&&d<=this.end.row},C.prototype.walk=function(d,h,l){var o=0,s=this.folds,i,r,a,c=!0;h==null&&(h=this.end.row,l=this.end.column);for(var p=0;p0)){var c=T(h,r.start);return a===0?l&&c!==0?-i-2:i:c>0||c===0&&!l?i:-i-1}}return-i-1},d.prototype.add=function(h){var l=!h.isEmpty(),o=this.pointIndex(h.start,l);o<0&&(o=-o-1);var s=this.pointIndex(h.end,l,o);return s<0?s=-s-1:s++,this.ranges.splice(o,s-o,h)},d.prototype.addList=function(h){for(var l=[],o=h.length;o--;)l.push.apply(l,this.add(h[o]));return l},d.prototype.substractPoint=function(h){var l=this.pointIndex(h);if(l>=0)return this.ranges.splice(l,1)},d.prototype.merge=function(){var h=[],l=this.ranges;l=l.sort(function(a,c){return T(a.start,c.start)});for(var o=l[0],s,i=1;i=0},d.prototype.containsPoint=function(h){return this.pointIndex(h)>=0},d.prototype.rangeAtPoint=function(h){var l=this.pointIndex(h);if(l>=0)return this.ranges[l]},d.prototype.clipRows=function(h,l){var o=this.ranges;if(o[0].start.row>l||o[o.length-1].start.row=s)break}if(h.action=="insert")for(var g=i-s,A=-l.column+o.column;as)break;if(p.start.row==s&&p.start.column>=l.column&&(p.start.column==l.column&&this.$bias<=0||(p.start.column+=A,p.start.row+=g)),p.end.row==s&&p.end.column>=l.column){if(p.end.column==l.column&&this.$bias<0)continue;p.end.column==l.column&&A>0&&ap.start.column&&p.end.column==r[a+1].start.column&&(p.end.column-=A),p.end.column+=A,p.end.row+=g}}else for(var g=s-i,A=l.column-o.column;ai)break;p.end.rowl.column)&&(p.end.column=l.column,p.end.row=l.row):(p.end.column+=A,p.end.row+=g):p.end.row>i&&(p.end.row+=g),p.start.rowl.column)&&(p.start.column=l.column,p.start.row=l.row):(p.start.column+=A,p.start.row+=g):p.start.row>i&&(p.start.row+=g)}if(g!=0&&a=o)return a;if(a.end.row>o)return null}return null},this.getNextFoldLine=function(o,s){var i=this.$foldData,r=0;for(s&&(r=i.indexOf(s)),r==-1&&(r=0),r;r=o)return a}return null},this.getFoldedRowCount=function(o,s){for(var i=this.$foldData,r=s-o+1,a=0;a=s){g=o?r-=s-g:r=0);break}else p>=o&&(g>=o?r-=p-g:r-=p-o+1)}return r},this.$addFoldLine=function(o){return this.$foldData.push(o),this.$foldData.sort(function(s,i){return s.start.row-i.start.row}),o},this.addFold=function(o,s){var i=this.$foldData,r=!1,a;o instanceof C?a=o:(a=new C(s,o),a.collapseChildren=s.collapseChildren),this.$clipRangeToDocument(a.range);var c=a.start.row,p=a.start.column,g=a.end.row,A=a.end.column,b=this.getFoldAt(c,p,1),$=this.getFoldAt(g,A,-1);if(b&&$==b)return b.addSubFold(a);b&&!b.range.isStart(c,p)&&this.removeFold(b),$&&!$.range.isEnd(g,A)&&this.removeFold($);var S=this.getFoldsInRange(a.range);S.length>0&&(this.removeFolds(S),a.collapseChildren||S.forEach(function(B){a.addSubFold(B)}));for(var v=0;v0&&this.foldAll(o.start.row+1,o.end.row,o.collapseChildren-1),o.subFolds=[]},this.expandFolds=function(o){o.forEach(function(s){this.expandFold(s)},this)},this.unfold=function(o,s){var i,r;if(o==null)i=new L(0,0,this.getLength(),0),s==null&&(s=!0);else if(typeof o=="number")i=new L(o,0,o,this.getLine(o).length);else if("row"in o)i=L.fromPoints(o,o);else{if(Array.isArray(o))return r=[],o.forEach(function(c){r=r.concat(this.unfold(c))},this),r;i=o}r=this.getFoldsInRangeList(i);for(var a=r;r.length==1&&L.comparePoints(r[0].start,i.start)<0&&L.comparePoints(r[0].end,i.end)>0;)this.expandFolds(r),r=this.getFoldsInRangeList(i);if(s!=!1?this.removeFolds(r):this.expandFolds(r),a.length)return a},this.isRowFolded=function(o,s){return!!this.getFoldLine(o,s)},this.getRowFoldEnd=function(o,s){var i=this.getFoldLine(o,s);return i?i.end.row:o},this.getRowFoldStart=function(o,s){var i=this.getFoldLine(o,s);return i?i.start.row:o},this.getFoldDisplayLine=function(o,s,i,r,a){r==null&&(r=o.start.row),a==null&&(a=0),s==null&&(s=o.end.row),i==null&&(i=this.getLine(s).length);var c=this.doc,p="";return o.walk(function(g,A,b,$){if(!(AA)break;while(a&&p.test(a.type)&&!/^comment.start/.test(a.type));a=r.stepBackward()}else a=r.getCurrentToken();return g.end.row=r.getCurrentTokenRow(),g.end.column=r.getCurrentTokenColumn(),/^comment.end/.test(a.type)||(g.end.column+=a.value.length-2),g}},this.foldAll=function(o,s,i,r){i==null&&(i=1e5);var a=this.foldWidgets;if(a){s=s||this.getLength(),o=o||0;for(var c=o;c=o&&(c=p.end.row,p.collapseChildren=i,this.addFold("...",p))}}},this.foldToLevel=function(o){for(this.foldAll();o-- >0;)this.unfold(null,!1)},this.foldAllComments=function(){var o=this;this.foldAll(null,null,null,function(s){for(var i=o.getTokens(s),r=0;r=0;){var c=i[r];if(c==null&&(c=i[r]=this.getFoldWidget(r)),c=="start"){var p=this.getFoldWidgetRange(r);if(a||(a=p),p&&p.end.row>=o)break}r--}return{range:r!==-1&&p,firstRange:a}},this.onFoldWidgetClick=function(o,s){s instanceof h&&(s=s.domEvent);var i={children:s.shiftKey,all:s.ctrlKey||s.metaKey,siblings:s.altKey},r=this.$toggleFoldWidget(o,i);if(!r){var a=s.target||s.srcElement;a&&/ace_fold-widget/.test(a.className)&&(a.className+=" ace_invalid")}},this.$toggleFoldWidget=function(o,s){if(this.getFoldWidget){var i=this.getFoldWidget(o),r=this.getLine(o),a=i==="end"?-1:1,c=this.getFoldAt(o,a===-1?0:r.length,a);if(c)return s.children||s.all?this.removeFold(c):this.expandFold(c),c;var p=this.getFoldWidgetRange(o,!0);if(p&&!p.isMultiLine()&&(c=this.getFoldAt(p.start.row,p.start.column,1),c&&p.isEqual(c.range)))return this.removeFold(c),c;if(s.siblings){var g=this.getParentFoldRangeData(o);if(g.range)var A=g.range.start.row+1,b=g.range.end.row;this.foldAll(A,b,s.all?1e4:0)}else s.children?(b=p?p.end.row:this.getLength(),this.foldAll(o+1,b,s.all?1e4:0)):p&&(s.all&&(p.collapseChildren=1e4),this.addFold("...",p));return p}},this.toggleFoldWidget=function(o){var s=this.selection.getCursor().row;s=this.getRowFoldStart(s);var i=this.$toggleFoldWidget(s,{});if(!i){var r=this.getParentFoldRangeData(s,!0);if(i=r.range||r.firstRange,i){s=i.start.row;var a=this.getFoldAt(s,this.getLine(s).length,1);a?this.removeFold(a):this.addFold("...",i)}}},this.updateFoldWidgets=function(o){var s=o.start.row,i=o.end.row-s;if(i===0)this.foldWidgets[s]=null;else if(o.action=="remove")this.foldWidgets.splice(s,i+1,null);else{var r=Array(i+1);r.unshift(s,1),this.foldWidgets.splice.apply(this.foldWidgets,r)}},this.tokenizerUpdateFoldWidgets=function(o){var s=o.data;s.first!=s.last&&this.foldWidgets.length>s.first&&this.foldWidgets.splice(s.first,this.foldWidgets.length)}}M.Folding=l}),ace.define("ace/edit_session/bracket_match",["require","exports","module","ace/token_iterator","ace/range"],function(n,M,G){"use strict";var L=n("../token_iterator").TokenIterator,T=n("../range").Range;function C(){this.findMatchingBracket=function(d,h){if(d.column==0)return null;var l=h||this.getLine(d.row).charAt(d.column-1);if(l=="")return null;var o=l.match(/([\(\[\{])|([\)\]\}])/);return o?o[1]?this.$findClosingBracket(o[1],d):this.$findOpeningBracket(o[2],d):null},this.getBracketRange=function(d){var h=this.getLine(d.row),l=!0,o,s=h.charAt(d.column-1),i=s&&s.match(/([\(\[\{])|([\)\]\}])/);if(i||(s=h.charAt(d.column),d={row:d.row,column:d.column+1},i=s&&s.match(/([\(\[\{])|([\)\]\}])/),l=!1),!i)return null;if(i[1]){var r=this.$findClosingBracket(i[1],d);if(!r)return null;o=T.fromPoints(d,r),l||(o.end.column++,o.start.column--),o.cursor=o.end}else{var r=this.$findOpeningBracket(i[2],d);if(!r)return null;o=T.fromPoints(r,d),l||(o.start.column++,o.end.column--),o.cursor=o.start}return o},this.getMatchingBracketRanges=function(d,h){var l=this.getLine(d.row),o=/([\(\[\{])|([\)\]\}])/,s=!h&&l.charAt(d.column-1),i=s&&s.match(o);if(i||(s=(h===void 0||h)&&l.charAt(d.column),d={row:d.row,column:d.column+1},i=s&&s.match(o)),!i)return null;var r=new T(d.row,d.column-1,d.row,d.column),a=i[1]?this.$findClosingBracket(i[1],d):this.$findOpeningBracket(i[2],d);if(!a)return[r];var c=new T(a.row,a.column,a.row,a.column+1);return[r,c]},this.$brackets={")":"(","(":")","]":"[","[":"]","{":"}","}":"{","<":">",">":"<"},this.$findOpeningBracket=function(d,h,l){var o=this.$brackets[d],s=1,i=new L(this,h.row,h.column),r=i.getCurrentToken();if(r||(r=i.stepForward()),!!r){l||(l=new RegExp("(\\.?"+r.type.replace(".","\\.").replace("rparen",".paren").replace(/\b(?:end)\b/,"(?:start|begin|end)").replace(/-close\b/,"-(close|open)")+")+"));for(var a=h.column-i.getCurrentTokenColumn()-2,c=r.value;;){for(;a>=0;){var p=c.charAt(a);if(p==o){if(s-=1,s==0)return{row:i.getCurrentTokenRow(),column:a+i.getCurrentTokenColumn()}}else p==d&&(s+=1);a-=1}do r=i.stepBackward();while(r&&!l.test(r.type));if(r==null)break;c=r.value,a=c.length-1}return null}},this.$findClosingBracket=function(d,h,l){var o=this.$brackets[d],s=1,i=new L(this,h.row,h.column),r=i.getCurrentToken();if(r||(r=i.stepForward()),!!r){l||(l=new RegExp("(\\.?"+r.type.replace(".","\\.").replace("lparen",".paren").replace(/\b(?:start|begin)\b/,"(?:start|begin|end)").replace(/-open\b/,"-(close|open)")+")+"));for(var a=h.column-i.getCurrentTokenColumn();;){for(var c=r.value,p=c.length;a"?o=!0:h.type.indexOf("tag-name")!==-1&&(l=!0));while(h&&!l);return h},this.$findClosingTag=function(d,h){var l,o=h.value,s=h.value,i=0,r=new T(d.getCurrentTokenRow(),d.getCurrentTokenColumn(),d.getCurrentTokenRow(),d.getCurrentTokenColumn()+1);h=d.stepForward();var a=new T(d.getCurrentTokenRow(),d.getCurrentTokenColumn(),d.getCurrentTokenRow(),d.getCurrentTokenColumn()+h.value.length),c=!1;do if(l=h,h=d.stepForward(),h){if(h.value===">"&&!c){var p=new T(d.getCurrentTokenRow(),d.getCurrentTokenColumn(),d.getCurrentTokenRow(),d.getCurrentTokenColumn()+1);c=!0}if(h.type.indexOf("tag-name")!==-1){if(o=h.value,s===o){if(l.value==="<")i++;else if(l.value==="")var b=new T(d.getCurrentTokenRow(),d.getCurrentTokenColumn(),d.getCurrentTokenRow(),d.getCurrentTokenColumn()+1);else return}}}else if(s===o&&h.value==="/>"&&(i--,i<0))var g=new T(d.getCurrentTokenRow(),d.getCurrentTokenColumn(),d.getCurrentTokenRow(),d.getCurrentTokenColumn()+2),A=g,b=A,p=new T(a.end.row,a.end.column,a.end.row,a.end.column+1)}while(h&&i>=0);if(r&&p&&g&&b&&a&&A)return{openTag:new T(r.start.row,r.start.column,p.end.row,p.end.column),closeTag:new T(g.start.row,g.start.column,b.end.row,b.end.column),openTagName:a,closeTagName:A}},this.$findOpeningTag=function(d,h){var l=d.getCurrentToken(),o=h.value,s=0,i=d.getCurrentTokenRow(),r=d.getCurrentTokenColumn(),a=r+2,c=new T(i,r,i,a);d.stepForward();var p=new T(d.getCurrentTokenRow(),d.getCurrentTokenColumn(),d.getCurrentTokenRow(),d.getCurrentTokenColumn()+h.value.length);if(h=d.stepForward(),!(!h||h.value!==">")){var g=new T(d.getCurrentTokenRow(),d.getCurrentTokenColumn(),d.getCurrentTokenRow(),d.getCurrentTokenColumn()+1);d.stepBackward(),d.stepBackward();do if(h=l,i=d.getCurrentTokenRow(),r=d.getCurrentTokenColumn(),a=r+h.value.length,l=d.stepBackward(),h){if(h.type.indexOf("tag-name")!==-1){if(o===h.value)if(l.value==="<"){if(s++,s>0){var A=new T(i,r,i,a),b=new T(d.getCurrentTokenRow(),d.getCurrentTokenColumn(),d.getCurrentTokenRow(),d.getCurrentTokenColumn()+1);do h=d.stepForward();while(h&&h.value!==">");var $=new T(d.getCurrentTokenRow(),d.getCurrentTokenColumn(),d.getCurrentTokenRow(),d.getCurrentTokenColumn()+1)}}else l.value===""){for(var S=0,v=l;v;){if(v.type.indexOf("tag-name")!==-1&&v.value===o){s--;break}else if(v.value==="<")break;v=d.stepBackward(),S++}for(var w=0;wm&&(this.$docRowCache.splice(m,y),this.$screenRowCache.splice(m,y))},k.prototype.$getRowCacheIndex=function(_,y){for(var m=0,E=_.length-1;m<=E;){var I=m+E>>1,N=_[I];if(y>N)m=I+1;else if(y=y));N++);return E=m[N],E?(E.index=N,E.start=I-E.value.length,E):null},k.prototype.setUndoManager=function(_){if(this.$undoManager=_,this.$informUndoManager&&this.$informUndoManager.cancel(),_){var y=this;_.addSession(this),this.$syncInformUndoManager=function(){y.$informUndoManager.cancel(),y.mergeUndoDeltas=!1},this.$informUndoManager=T.delayedCall(this.$syncInformUndoManager)}else this.$syncInformUndoManager=function(){}},k.prototype.markUndoGroup=function(){this.$syncInformUndoManager&&this.$syncInformUndoManager()},k.prototype.getUndoManager=function(){return this.$undoManager||this.$defaultUndoManager},k.prototype.getTabString=function(){return this.getUseSoftTabs()?T.stringRepeat(" ",this.getTabSize()):" "},k.prototype.setUseSoftTabs=function(_){this.setOption("useSoftTabs",_)},k.prototype.getUseSoftTabs=function(){return this.$useSoftTabs&&!this.$mode.$indentWithTabs},k.prototype.setTabSize=function(_){this.setOption("tabSize",_)},k.prototype.getTabSize=function(){return this.$tabSize},k.prototype.isTabStop=function(_){return this.$useSoftTabs&&_.column%this.$tabSize===0},k.prototype.setNavigateWithinSoftTabs=function(_){this.setOption("navigateWithinSoftTabs",_)},k.prototype.getNavigateWithinSoftTabs=function(){return this.$navigateWithinSoftTabs},k.prototype.setOverwrite=function(_){this.setOption("overwrite",_)},k.prototype.getOverwrite=function(){return this.$overwrite},k.prototype.toggleOverwrite=function(){this.setOverwrite(!this.$overwrite)},k.prototype.addGutterDecoration=function(_,y){this.$decorations[_]||(this.$decorations[_]=""),this.$decorations[_]+=" "+y,this._signal("changeBreakpoint",{})},k.prototype.removeGutterDecoration=function(_,y){this.$decorations[_]=(this.$decorations[_]||"").replace(" "+y,""),this._signal("changeBreakpoint",{})},k.prototype.getBreakpoints=function(){return this.$breakpoints},k.prototype.setBreakpoints=function(_){this.$breakpoints=[];for(var y=0;y<_.length;y++)this.$breakpoints[_[y]]="ace_breakpoint";this._signal("changeBreakpoint",{})},k.prototype.clearBreakpoints=function(){this.$breakpoints=[],this._signal("changeBreakpoint",{})},k.prototype.setBreakpoint=function(_,y){y===void 0&&(y="ace_breakpoint"),y?this.$breakpoints[_]=y:delete this.$breakpoints[_],this._signal("changeBreakpoint",{})},k.prototype.clearBreakpoint=function(_){delete this.$breakpoints[_],this._signal("changeBreakpoint",{})},k.prototype.addMarker=function(_,y,m,E){var I=this.$markerId++,N={range:_,type:m||"line",renderer:typeof m=="function"?m:null,clazz:y,inFront:!!E,id:I};return E?(this.$frontMarkers[I]=N,this._signal("changeFrontMarker")):(this.$backMarkers[I]=N,this._signal("changeBackMarker")),I},k.prototype.addDynamicMarker=function(_,y){if(_.update){var m=this.$markerId++;return _.id=m,_.inFront=!!y,y?(this.$frontMarkers[m]=_,this._signal("changeFrontMarker")):(this.$backMarkers[m]=_,this._signal("changeBackMarker")),_}},k.prototype.removeMarker=function(_){var y=this.$frontMarkers[_]||this.$backMarkers[_];if(y){var m=y.inFront?this.$frontMarkers:this.$backMarkers;delete m[_],this._signal(y.inFront?"changeFrontMarker":"changeBackMarker")}},k.prototype.getMarkers=function(_){return _?this.$frontMarkers:this.$backMarkers},k.prototype.highlight=function(_){if(!this.$searchHighlight){var y=new a(null,"ace_selected-word","text");this.$searchHighlight=this.addDynamicMarker(y)}this.$searchHighlight.setRegexp(_)},k.prototype.highlightLines=function(_,y,m,E){typeof y!="number"&&(m=y,y=_),m||(m="ace_step");var I=new s(_,0,y,1/0);return I.id=this.addMarker(I,m,"fullLine",E),I},k.prototype.setAnnotations=function(_){this.$annotations=_,this._signal("changeAnnotation",{})},k.prototype.getAnnotations=function(){return this.$annotations||[]},k.prototype.clearAnnotations=function(){this.setAnnotations([])},k.prototype.$detectNewLine=function(_){var y=_.match(/^.*?(\r?\n)/m);y?this.$autoNewLine=y[1]:this.$autoNewLine=` -`},k.prototype.getWordRange=function(_,y){var m=this.getLine(_),E=!1;if(y>0&&(E=!!m.charAt(y-1).match(this.tokenRe)),E||(E=!!m.charAt(y).match(this.tokenRe)),E)var I=this.tokenRe;else if(/^\s+$/.test(m.slice(y-1,y+1)))var I=/\s/;else var I=this.nonTokenRe;var N=y;if(N>0){do N--;while(N>=0&&m.charAt(N).match(I));N++}for(var W=y;W_&&(_=y.screenWidth)}),this.lineWidgetWidth=_},k.prototype.$computeWidth=function(_){if(this.$modified||_){if(this.$modified=!1,this.$useWrapMode)return this.screenWidth=this.$wrapLimit;for(var y=this.doc.getAllLines(),m=this.$rowLengthCache,E=0,I=0,N=this.$foldData[I],W=N?N.start.row:1/0,z=y.length,U=0;UW){if(U=N.end.row+1,U>=z)break;N=this.$foldData[I++],W=N?N.start.row:1/0}m[U]==null&&(m[U]=this.$getStringScreenWidth(y[U])[0]),m[U]>E&&(E=m[U])}this.screenWidth=E}},k.prototype.getLine=function(_){return this.doc.getLine(_)},k.prototype.getLines=function(_,y){return this.doc.getLines(_,y)},k.prototype.getLength=function(){return this.doc.getLength()},k.prototype.getTextRange=function(_){return this.doc.getTextRange(_||this.selection.getRange())},k.prototype.insert=function(_,y){return this.doc.insert(_,y)},k.prototype.remove=function(_){return this.doc.remove(_)},k.prototype.removeFullLines=function(_,y){return this.doc.removeFullLines(_,y)},k.prototype.undoChanges=function(_,y){if(_.length){this.$fromUndo=!0;for(var m=_.length-1;m!=-1;m--){var E=_[m];E.action=="insert"||E.action=="remove"?this.doc.revertDelta(E):E.folds&&this.addFolds(E.folds)}!y&&this.$undoSelect&&(_.selectionBefore?this.selection.fromJSON(_.selectionBefore):this.selection.setRange(this.$getUndoSelection(_,!0))),this.$fromUndo=!1}},k.prototype.redoChanges=function(_,y){if(_.length){this.$fromUndo=!0;for(var m=0;m<_.length;m++){var E=_[m];(E.action=="insert"||E.action=="remove")&&this.doc.$safeApplyDelta(E)}!y&&this.$undoSelect&&(_.selectionAfter?this.selection.fromJSON(_.selectionAfter):this.selection.setRange(this.$getUndoSelection(_,!1))),this.$fromUndo=!1}},k.prototype.setUndoSelect=function(_){this.$undoSelect=_},k.prototype.$getUndoSelection=function(_,y){function m(z){return y?z.action!=="insert":z.action==="insert"}for(var E,I,N=0;N<_.length;N++){var W=_[N];if(W.start){if(!E){m(W)?E=s.fromPoints(W.start,W.end):E=s.fromPoints(W.start,W.start);continue}m(W)?(I=W.start,E.compare(I.row,I.column)==-1&&E.setStart(I),I=W.end,E.compare(I.row,I.column)==1&&E.setEnd(I)):(I=W.start,E.compare(I.row,I.column)==-1&&(E=s.fromPoints(W.start,W.start)))}}return E},k.prototype.replace=function(_,y){return this.doc.replace(_,y)},k.prototype.moveText=function(_,y,m){var E=this.getTextRange(_),I=this.getFoldsInRange(_),N=s.fromPoints(y,y);if(!m){this.remove(_);var W=_.start.row-_.end.row,z=W?-_.end.column:_.start.column-_.end.column;z&&(N.start.row==_.end.row&&N.start.column>_.end.column&&(N.start.column+=z),N.end.row==_.end.row&&N.end.column>_.end.column&&(N.end.column+=z)),W&&N.start.row>=_.end.row&&(N.start.row+=W,N.end.row+=W)}if(N.end=this.insert(N.start,E),I.length){var U=_.start,j=N.start,W=j.row-U.row,z=j.column-U.column;this.addFolds(I.map(function(t0){return t0=t0.clone(),t0.start.row==U.row&&(t0.start.column+=z),t0.end.row==U.row&&(t0.end.column+=z),t0.start.row+=W,t0.end.row+=W,t0}))}return N},k.prototype.indentRows=function(_,y,m){m=m.replace(/\t/g,this.getTabString());for(var E=_;E<=y;E++)this.doc.insertInLine({row:E,column:0},m)},k.prototype.outdentRows=function(_){for(var y=_.collapseRows(),m=new s(0,0,0,0),E=this.getTabSize(),I=y.start.row;I<=y.end.row;++I){var N=this.getLine(I);m.start.row=I,m.end.row=I;for(var W=0;W0){var E=this.getRowFoldEnd(y+m);if(E>this.doc.getLength()-1)return 0;var I=E-y}else{_=this.$clipRowToDocument(_),y=this.$clipRowToDocument(y);var I=y-_+1}var N=new s(_,0,y,Number.MAX_VALUE),W=this.getFoldsInRange(N).map(function(U){return U=U.clone(),U.start.row+=I,U.end.row+=I,U}),z=m==0?this.doc.getLines(_,y):this.doc.removeFullLines(_,y);return this.doc.insertFullLines(_+I,z),W.length&&this.addFolds(W),I},k.prototype.moveLinesUp=function(_,y){return this.$moveLines(_,y,-1)},k.prototype.moveLinesDown=function(_,y){return this.$moveLines(_,y,1)},k.prototype.duplicateLines=function(_,y){return this.$moveLines(_,y,0)},k.prototype.$clipRowToDocument=function(_){return Math.max(0,Math.min(_,this.doc.getLength()-1))},k.prototype.$clipColumnToRow=function(_,y){return y<0?0:Math.min(this.doc.getLine(_).length,y)},k.prototype.$clipPositionToDocument=function(_,y){if(y=Math.max(0,y),_<0)_=0,y=0;else{var m=this.doc.getLength();_>=m?(_=m-1,y=this.doc.getLine(m-1).length):y=Math.min(this.doc.getLine(_).length,y)}return{row:_,column:y}},k.prototype.$clipRangeToDocument=function(_){_.start.row<0?(_.start.row=0,_.start.column=0):_.start.column=this.$clipColumnToRow(_.start.row,_.start.column);var y=this.doc.getLength()-1;return _.end.row>y?(_.end.row=y,_.end.column=this.doc.getLine(y).length):_.end.column=this.$clipColumnToRow(_.end.row,_.end.column),_},k.prototype.setUseWrapMode=function(_){if(_!=this.$useWrapMode){if(this.$useWrapMode=_,this.$modified=!0,this.$resetRowCache(0),_){var y=this.getLength();this.$wrapData=Array(y),this.$updateWrapData(0,y-1)}this._signal("changeWrapMode")}},k.prototype.getUseWrapMode=function(){return this.$useWrapMode},k.prototype.setWrapLimitRange=function(_,y){(this.$wrapLimitRange.min!==_||this.$wrapLimitRange.max!==y)&&(this.$wrapLimitRange={min:_,max:y},this.$modified=!0,this.$bidiHandler.markAsDirty(),this.$useWrapMode&&this._signal("changeWrapMode"))},k.prototype.adjustWrapLimit=function(_,y){var m=this.$wrapLimitRange;m.max<0&&(m={min:y,max:y});var E=this.$constrainWrapLimit(_,m.min,m.max);return E!=this.$wrapLimit&&E>1?(this.$wrapLimit=E,this.$modified=!0,this.$useWrapMode&&(this.$updateWrapData(0,this.getLength()-1),this.$resetRowCache(0),this._signal("changeWrapLimit")),!0):!1},k.prototype.$constrainWrapLimit=function(_,y,m){return y&&(_=Math.max(y,_)),m&&(_=Math.min(m,_)),_},k.prototype.getWrapLimit=function(){return this.$wrapLimit},k.prototype.setWrapLimit=function(_){this.setWrapLimitRange(_,_)},k.prototype.getWrapLimitRange=function(){return{min:this.$wrapLimitRange.min,max:this.$wrapLimitRange.max}},k.prototype.$updateInternalDataOnChange=function(_){var y=this.$useWrapMode,m=_.action,E=_.start,I=_.end,N=E.row,W=I.row,z=W-N,U=null;if(this.$updating=!0,z!=0)if(m==="remove"){this[y?"$wrapData":"$rowLengthCache"].splice(N,z);var j=this.$foldData;U=this.getFoldsInRange(_),this.removeFolds(U);var q=this.getFoldLine(I.row),Y=0;if(q){q.addRemoveChars(I.row,I.column,E.column-I.column),q.shiftRow(-z);var t0=this.getFoldLine(N);t0&&t0!==q&&(t0.merge(q),q=t0),Y=j.indexOf(q)+1}for(Y;Y=I.row&&q.shiftRow(-z)}W=N}else{var n0=Array(z);n0.unshift(N,0);var u0=y?this.$wrapData:this.$rowLengthCache;u0.splice.apply(u0,n0);var j=this.$foldData,q=this.getFoldLine(N),Y=0;if(q){var h0=q.range.compareInside(E.row,E.column);h0==0?(q=q.split(E.row,E.column),q&&(q.shiftRow(z),q.addRemoveChars(W,0,I.column-E.column))):h0==-1&&(q.addRemoveChars(N,0,I.column-E.column),q.shiftRow(z)),Y=j.indexOf(q)+1}for(Y;Y=N&&q.shiftRow(z)}}else{z=Math.abs(_.start.column-_.end.column),m==="remove"&&(U=this.getFoldsInRange(_),this.removeFolds(U),z=-z);var q=this.getFoldLine(N);q&&q.addRemoveChars(N,E.column,z)}return y&&this.$wrapData.length!=this.doc.getLength()&&console.error("doc.getLength() and $wrapData.length have to be the same!"),this.$updating=!1,y?this.$updateWrapData(N,W):this.$updateRowLengthCache(N,W),U},k.prototype.$updateRowLengthCache=function(_,y,m){this.$rowLengthCache[_]=null,this.$rowLengthCache[y]=null},k.prototype.$updateWrapData=function(_,y){var m=this.doc.getAllLines(),E=this.getTabSize(),I=this.$wrapData,N=this.$wrapLimit,W,z,U=_;for(y=Math.min(y,m.length-1);U<=y;)z=this.getFoldLine(U,z),z?(W=[],z.walk(function(j,q,Y,t0){var n0;if(j!=null){n0=this.$getDisplayTokens(j,W.length),n0[0]=b;for(var u0=1;u0y-t0;){var n0=N+y-t0;if(_[n0-1]>=v&&_[n0]>=v){Y(n0);continue}if(_[n0]==b||_[n0]==$){for(n0;n0!=N-1&&_[n0]!=b;n0--);if(n0>N){Y(n0);continue}for(n0=N+y,n0;n0<_.length&&_[n0]==$;n0++);if(n0==_.length)break;Y(n0);continue}for(var u0=Math.max(n0-(y-(y>>2)),N-1);n0>u0&&_[n0]u0&&_[n0]u0&&_[n0]==S;)n0--}else for(;n0>u0&&_[n0]u0){Y(++n0);continue}n0=N+y,_[n0]==A&&n0--,Y(n0-t0)}return E},k.prototype.$getDisplayTokens=function(_,y){var m=[],E;y=y||0;for(var I=0;I<_.length;I++){var N=_.charCodeAt(I);if(N==9){E=this.getScreenTabSize(m.length+y),m.push(w);for(var W=1;W39&&N<48||N>57&&N<64?m.push(S):N>=4352&&B(N)?m.push(g,A):m.push(g)}return m},k.prototype.$getStringScreenWidth=function(_,y,m){if(y==0)return[0,0];y==null&&(y=1/0),m=m||0;var E,I;for(I=0;I<_.length&&(E=_.charCodeAt(I),E==9?m+=this.getScreenTabSize(m):E>=4352&&B(E)?m+=2:m+=1,!(m>y));I++);return[m,I]},k.prototype.getRowLength=function(_){var y=1;return this.lineWidgets&&(y+=this.lineWidgets[_]&&this.lineWidgets[_].rowCount||0),!this.$useWrapMode||!this.$wrapData[_]?y:this.$wrapData[_].length+y},k.prototype.getRowLineCount=function(_){return!this.$useWrapMode||!this.$wrapData[_]?1:this.$wrapData[_].length+1},k.prototype.getRowWrapIndent=function(_){if(this.$useWrapMode){var y=this.screenToDocumentPosition(_,Number.MAX_VALUE),m=this.$wrapData[y.row];return m.length&&m[0]=0)var z=j[q],I=this.$docRowCache[q],t0=_>j[Y-1];else var t0=!Y;for(var n0=this.getLength()-1,u0=this.getNextFoldLine(I),h0=u0?u0.start.row:1/0;z<=_&&(U=this.getRowLength(I),!(z+U>_||I>=n0));)z+=U,I++,I>h0&&(I=u0.end.row+1,u0=this.getNextFoldLine(I,u0),h0=u0?u0.start.row:1/0),t0&&(this.$docRowCache.push(I),this.$screenRowCache.push(z));if(u0&&u0.start.row<=I)E=this.getFoldDisplayLine(u0),I=u0.start.row;else{if(z+U<=_||I>n0)return{row:n0,column:this.getLine(n0).length};E=this.getLine(I),u0=null}var m0=0,p0=Math.floor(_-z);if(this.$useWrapMode){var b0=this.$wrapData[I];b0&&(W=b0[p0],p0>0&&b0.length&&(m0=b0.indent,N=b0[p0-1]||b0[b0.length-1],E=E.substring(N)))}return m!==void 0&&this.$bidiHandler.isBidiRow(z+p0,I,p0)&&(y=this.$bidiHandler.offsetToCol(m)),N+=this.$getStringScreenWidth(E,y-m0)[1],this.$useWrapMode&&N>=W&&(N=W-1),u0?u0.idxToPosition(N):{row:I,column:N}},k.prototype.documentToScreenPosition=function(_,y){if(typeof y=="undefined")var m=this.$clipPositionToDocument(_.row,_.column);else m=this.$clipPositionToDocument(_,y);_=m.row,y=m.column;var E=0,I=null,N=null;N=this.getFoldAt(_,y,1),N&&(_=N.start.row,y=N.start.column);var W,z=0,U=this.$docRowCache,j=this.$getRowCacheIndex(U,_),q=U.length;if(q&&j>=0)var z=U[j],E=this.$screenRowCache[j],Y=_>U[q-1];else var Y=!q;for(var t0=this.getNextFoldLine(z),n0=t0?t0.start.row:1/0;z<_;){if(z>=n0){if(W=t0.end.row+1,W>_)break;t0=this.getNextFoldLine(W,t0),n0=t0?t0.start.row:1/0}else W=z+1;E+=this.getRowLength(z),z=W,Y&&(this.$docRowCache.push(z),this.$screenRowCache.push(E))}var u0="";t0&&z>=n0?(u0=this.getFoldDisplayLine(t0,_,y),I=t0.start.row):(u0=this.getLine(_).substring(0,y),I=_);var h0=0;if(this.$useWrapMode){var m0=this.$wrapData[I];if(m0){for(var p0=0;u0.length>=m0[p0];)E++,p0++;u0=u0.substring(m0[p0-1]||0,u0.length),h0=p0>0?m0.indent:0}}return this.lineWidgets&&this.lineWidgets[z]&&this.lineWidgets[z].rowsAbove&&(E+=this.lineWidgets[z].rowsAbove),{row:E,column:h0+this.$getStringScreenWidth(u0)[0]}},k.prototype.documentToScreenColumn=function(_,y){return this.documentToScreenPosition(_,y).column},k.prototype.documentToScreenRow=function(_,y){return this.documentToScreenPosition(_,y).row},k.prototype.getScreenLength=function(){var _=0,y=null;if(this.$useWrapMode)for(var I=this.$wrapData.length,N=0,E=0,y=this.$foldData[E++],W=y?y.start.row:1/0;NW&&(N=y.end.row+1,y=this.$foldData[E++],W=y?y.start.row:1/0)}else{_=this.getLength();for(var m=this.$foldData,E=0;Em));N++);return[E,N]})},k.prototype.destroy=function(){this.destroyed||(this.bgTokenizer.setDocument(null),this.bgTokenizer.cleanup(),this.destroyed=!0),this.$stopWorker(),this.removeAllListeners(),this.doc&&this.doc.off("change",this.$onChange),this.selection.detach()},k}();p.$uid=0,p.prototype.$modes=d.$modes,p.prototype.getValue=p.prototype.toString,p.prototype.$defaultUndoManager={undo:function(){},redo:function(){},hasUndo:function(){},hasRedo:function(){},reset:function(){},add:function(){},addSelection:function(){},startNewGroup:function(){},addSession:function(){}},p.prototype.$overwrite=!1,p.prototype.$mode=null,p.prototype.$modeId=null,p.prototype.$scrollTop=0,p.prototype.$scrollLeft=0,p.prototype.$wrapLimit=80,p.prototype.$useWrapMode=!1,p.prototype.$wrapLimitRange={min:null,max:null},p.prototype.lineWidgets=null,p.prototype.isFullWidth=B,L.implement(p.prototype,h);var g=1,A=2,b=3,$=4,S=9,v=10,w=11,O=12;function B(k){return k<4352?!1:k>=4352&&k<=4447||k>=4515&&k<=4519||k>=4602&&k<=4607||k>=9001&&k<=9002||k>=11904&&k<=11929||k>=11931&&k<=12019||k>=12032&&k<=12245||k>=12272&&k<=12283||k>=12288&&k<=12350||k>=12353&&k<=12438||k>=12441&&k<=12543||k>=12549&&k<=12589||k>=12593&&k<=12686||k>=12688&&k<=12730||k>=12736&&k<=12771||k>=12784&&k<=12830||k>=12832&&k<=12871||k>=12880&&k<=13054||k>=13056&&k<=19903||k>=19968&&k<=42124||k>=42128&&k<=42182||k>=43360&&k<=43388||k>=44032&&k<=55203||k>=55216&&k<=55238||k>=55243&&k<=55291||k>=63744&&k<=64255||k>=65040&&k<=65049||k>=65072&&k<=65106||k>=65108&&k<=65126||k>=65128&&k<=65131||k>=65281&&k<=65376||k>=65504&&k<=65510}n("./edit_session/folding").Folding.call(p.prototype),n("./edit_session/bracket_match").BracketMatch.call(p.prototype),d.defineOptions(p.prototype,"session",{wrap:{set:function(k){if(!k||k=="off"?k=!1:k=="free"?k=!0:k=="printMargin"?k=-1:typeof k=="string"&&(k=parseInt(k,10)||!1),this.$wrap!=k)if(this.$wrap=k,!k)this.setUseWrapMode(!1);else{var _=typeof k=="number"?k:null;this.setWrapLimitRange(_,_),this.setUseWrapMode(!0)}},get:function(){return this.getUseWrapMode()?this.$wrap==-1?"printMargin":this.getWrapLimitRange().min?this.$wrap:"free":"off"},handlesSet:!0},wrapMethod:{set:function(k){k=k=="auto"?this.$mode.type!="text":k!="text",k!=this.$wrapAsCode&&(this.$wrapAsCode=k,this.$useWrapMode&&(this.$useWrapMode=!1,this.setUseWrapMode(!0)))},initialValue:"auto"},indentedSoftWrap:{set:function(){this.$useWrapMode&&(this.$useWrapMode=!1,this.setUseWrapMode(!0))},initialValue:!0},firstLineNumber:{set:function(){this._signal("changeBreakpoint")},initialValue:1},useWorker:{set:function(k){this.$useWorker=k,this.$stopWorker(),k&&this.$startWorker()},initialValue:!0},useSoftTabs:{initialValue:!0},tabSize:{set:function(k){k=parseInt(k),k>0&&this.$tabSize!==k&&(this.$modified=!0,this.$rowLengthCache=[],this.$tabSize=k,this._signal("changeTabSize"))},initialValue:4,handlesSet:!0},navigateWithinSoftTabs:{initialValue:!1},foldStyle:{set:function(k){this.setFoldStyle(k)},handlesSet:!0},overwrite:{set:function(k){this._signal("changeOverwrite")},initialValue:!1},newLineMode:{set:function(k){this.doc.setNewLineMode(k)},get:function(){return this.doc.getNewLineMode()},handlesSet:!0},mode:{set:function(k){this.setMode(k)},get:function(){return this.$modeId},handlesSet:!0}}),M.EditSession=p}),ace.define("ace/search",["require","exports","module","ace/lib/lang","ace/lib/oop","ace/range"],function(n,M,G){"use strict";var L=n("./lib/lang"),T=n("./lib/oop"),C=n("./range").Range,d=function(){function l(){this.$options={}}return l.prototype.set=function(o){return T.mixin(this.$options,o),this},l.prototype.getOptions=function(){return L.copyObject(this.$options)},l.prototype.setOptions=function(o){this.$options=o},l.prototype.find=function(o){var s=this.$options,i=this.$matchIterator(o,s);if(!i)return!1;var r=null;return i.forEach(function(a,c,p,g){return r=new C(a,c,p,g),c==g&&s.start&&s.start.start&&s.skipCurrent!=!1&&r.isEqual(s.start)?(r=null,!1):!0}),r},l.prototype.findAll=function(o){var s=this.$options;if(!s.needle)return[];this.$assembleRegExp(s);var i=s.range,r=i?o.getLines(i.start.row,i.end.row):o.doc.getAllLines(),a=[],c=s.re;if(s.$isMultiLine){var p=c.length,g=r.length-p,A;e:for(var b=c.offset||0;b<=g;b++){for(var $=0;$w||(a.push(A=new C(b,w,b+p-1,O)),p>2&&(b=b+p-2))}}else for(var B=0;Bm&&a[$].end.row==E;)$--;for(a=a.slice(B,$+1),B=0,$=a.length;B<$;B++)a[B].start.row+=i.start.row,a[B].end.row+=i.start.row}return a},l.prototype.replace=function(o,s){var i=this.$options,r=this.$assembleRegExp(i);if(i.$isMultiLine)return s;if(r){var a=r.exec(o);if(!a||a[0].length!=o.length)return null;if(s=o.replace(r,s),i.preserveCase){s=s.split("");for(var c=Math.min(o.length,o.length);c--;){var p=o[c];p&&p.toLowerCase()!=p?s[c]=s[c].toUpperCase():s[c]=s[c].toLowerCase()}s=s.join("")}return s}},l.prototype.$assembleRegExp=function(o,s){if(o.needle instanceof RegExp)return o.re=o.needle;var i=o.needle;if(!o.needle)return o.re=!1;o.$supportsUnicodeFlag===void 0&&(o.$supportsUnicodeFlag=L.supportsUnicodeFlag());try{new RegExp(i,"u")}catch(c){o.$supportsUnicodeFlag=!1}o.regExp||(i=L.escapeRegExp(i)),o.wholeWord&&(i=h(i,o));var r=o.caseSensitive?"gm":"gmi";if(o.$supportsUnicodeFlag&&(r+="u"),o.$isMultiLine=!s&&/[\n\r]/.test(i),o.$isMultiLine)return o.re=this.$assembleMultilineRegExp(i,r);try{var a=new RegExp(i,r)}catch(c){a=!1}return o.re=a},l.prototype.$assembleMultilineRegExp=function(o,s){for(var i=o.replace(/\r\n|\r|\n/g,`$ -^`).split(` -`),r=[],a=0;a=g;w--)if(S(w,Number.MAX_VALUE,v))return;if(s.wrap!=!1){for(w=A,g=p.row;w>=g;w--)if(S(w,Number.MAX_VALUE,v))return}}};else var b=function(w){var O=p.row;if(!S(O,p.column,w)){for(O=O+1;O<=A;O++)if(S(O,0,w))return;if(s.wrap!=!1){for(O=g,A=p.row;O<=A;O++)if(S(O,0,w))return}}};if(s.$isMultiLine)var $=i.length,S=function(v,w,O){var B=r?v-$+1:v;if(!(B<0||B+$>o.getLength())){var k=o.getLine(B),_=k.search(i[0]);if(!(!r&&_w)&&O(B,_,B+$-1,m))return!0}}};else if(r)var S=function(w,O,B){var k=o.getLine(w),_=[],y,m=0;for(i.lastIndex=0;y=i.exec(k);){var E=y[0].length;if(m=y.index,!E){if(m>=k.length)break;i.lastIndex=m+=1}if(y.index+E>O)break;_.push(y.index,E)}for(var I=_.length-1;I>=0;I-=2){var N=_[I-1],E=_[I];if(B(w,N,w,N+E))return!0}};else var S=function(w,O,B){var k=o.getLine(w),_,y;for(i.lastIndex=O;y=i.exec(k);){var m=y[0].length;if(_=y.index,B(w,_,w,_+m))return!0;if(!m&&(i.lastIndex=_+=1,_>=k.length))return!1}};return{forEach:b}},l}();function h(l,o){var s=L.supportsLookbehind();function i(p,g){g===void 0&&(g=!0);var A=s&&o.$supportsUnicodeFlag?new RegExp("[\\p{L}\\p{N}_]","u"):new RegExp("\\w");return A.test(p)||o.regExp?s&&o.$supportsUnicodeFlag?g?"(?<=^|[^\\p{L}\\p{N}_])":"(?=[^\\p{L}\\p{N}_]|$)":"\\b":""}var r=Array.from(l),a=r[0],c=r[r.length-1];return i(a)+l+i(c,!1)}M.Search=d}),ace.define("ace/keyboard/hash_handler",["require","exports","module","ace/lib/keys","ace/lib/useragent"],function(n,M,G){"use strict";var L=this&&this.__extends||function(){var s=function(i,r){return s=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(a,c){a.__proto__=c}||function(a,c){for(var p in c)Object.prototype.hasOwnProperty.call(c,p)&&(a[p]=c[p])},s(i,r)};return function(i,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");s(i,r);function a(){this.constructor=i}i.prototype=r===null?Object.create(r):(a.prototype=r.prototype,new a)}}(),T=n("../lib/keys"),C=n("../lib/useragent"),d=T.KEY_MODS,h=function(){function s(i,r){this.$init(i,r,!1)}return s.prototype.$init=function(i,r,a){this.platform=r||(C.isMac?"mac":"win"),this.commands={},this.commandKeyBinding={},this.addCommands(i),this.$singleCommand=a},s.prototype.addCommand=function(i){this.commands[i.name]&&this.removeCommand(i),this.commands[i.name]=i,i.bindKey&&this._buildKeyHash(i)},s.prototype.removeCommand=function(i,r){var a=i&&(typeof i=="string"?i:i.name);i=this.commands[a],r||delete this.commands[a];var c=this.commandKeyBinding;for(var p in c){var g=c[p];if(g==i)delete c[p];else if(Array.isArray(g)){var A=g.indexOf(i);A!=-1&&(g.splice(A,1),g.length==1&&(c[p]=g[0]))}}},s.prototype.bindKey=function(i,r,a){if(typeof i=="object"&&i&&(a==null&&(a=i.position),i=i[this.platform]),!!i){if(typeof r=="function")return this.addCommand({exec:r,bindKey:i,name:r.name||i});i.split("|").forEach(function(c){var p="";if(c.indexOf(" ")!=-1){var g=c.split(/\s+/);c=g.pop(),g.forEach(function($){var S=this.parseKeys($),v=d[S.hashId]+S.key;p+=(p?" ":"")+v,this._addCommandToBinding(p,"chainKeys")},this),p+=" "}var A=this.parseKeys(c),b=d[A.hashId]+A.key;this._addCommandToBinding(p+b,r,a)},this)}},s.prototype._addCommandToBinding=function(i,r,a){var c=this.commandKeyBinding,p;if(!r)delete c[i];else if(!c[i]||this.$singleCommand)c[i]=r;else{Array.isArray(c[i])?(p=c[i].indexOf(r))!=-1&&c[i].splice(p,1):c[i]=[c[i]],typeof a!="number"&&(a=l(r));var g=c[i];for(p=0;pa)break}g.splice(p,0,r)}},s.prototype.addCommands=function(i){i&&Object.keys(i).forEach(function(r){var a=i[r];if(a){if(typeof a=="string")return this.bindKey(a,r);typeof a=="function"&&(a={exec:a}),typeof a=="object"&&(a.name||(a.name=r),this.addCommand(a))}},this)},s.prototype.removeCommands=function(i){Object.keys(i).forEach(function(r){this.removeCommand(i[r])},this)},s.prototype.bindKeys=function(i){Object.keys(i).forEach(function(r){this.bindKey(r,i[r])},this)},s.prototype._buildKeyHash=function(i){this.bindKey(i.bindKey,i)},s.prototype.parseKeys=function(i){var r=i.toLowerCase().split(/[\-\+]([\-\+])?/).filter(function(b){return b}),a=r.pop(),c=T[a];if(T.FUNCTION_KEYS[c])a=T.FUNCTION_KEYS[c].toLowerCase();else if(r.length){if(r.length==1&&r[0]=="shift")return{key:a.toUpperCase(),hashId:-1}}else return{key:a,hashId:-1};for(var p=0,g=r.length;g--;){var A=T.KEY_MODS[r[g]];if(A==null)return typeof console!="undefined"&&console.error("invalid modifier "+r[g]+" in "+i),!1;p|=A}return{key:a,hashId:p}},s.prototype.findKeyCommand=function(i,r){var a=d[i]+r;return this.commandKeyBinding[a]},s.prototype.handleKeyboard=function(i,r,a,c){if(!(c<0)){var p=d[r]+a,g=this.commandKeyBinding[p];return i.$keyChain&&(i.$keyChain+=" "+p,g=this.commandKeyBinding[i.$keyChain]||g),g&&(g=="chainKeys"||g[g.length-1]=="chainKeys")?(i.$keyChain=i.$keyChain||p,{command:"null"}):(i.$keyChain&&((!r||r==4)&&a.length==1?i.$keyChain=i.$keyChain.slice(0,-p.length-1):(r==-1||c>0)&&(i.$keyChain="")),{command:g})}},s.prototype.getStatusText=function(i,r){return r.$keyChain||""},s}();function l(s){return typeof s=="object"&&s.bindKey&&s.bindKey.position||(s.isDefault?-100:0)}var o=function(s){L(i,s);function i(r,a){var c=s.call(this,r,a)||this;return c.$singleCommand=!0,c}return i}(h);o.call=function(s,i,r){h.prototype.$init.call(s,i,r,!0)},h.call=function(s,i,r){h.prototype.$init.call(s,i,r,!1)},M.HashHandler=o,M.MultiHashHandler=h}),ace.define("ace/commands/command_manager",["require","exports","module","ace/lib/oop","ace/keyboard/hash_handler","ace/lib/event_emitter"],function(n,M,G){"use strict";var L=this&&this.__extends||function(){var l=function(o,s){return l=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,r){i.__proto__=r}||function(i,r){for(var a in r)Object.prototype.hasOwnProperty.call(r,a)&&(i[a]=r[a])},l(o,s)};return function(o,s){if(typeof s!="function"&&s!==null)throw new TypeError("Class extends value "+String(s)+" is not a constructor or null");l(o,s);function i(){this.constructor=o}o.prototype=s===null?Object.create(s):(i.prototype=s.prototype,new i)}}(),T=n("../lib/oop"),C=n("../keyboard/hash_handler").MultiHashHandler,d=n("../lib/event_emitter").EventEmitter,h=function(l){L(o,l);function o(s,i){var r=l.call(this,i,s)||this;return r.byName=r.commands,r.setDefaultHandler("exec",function(a){return a.args?a.command.exec(a.editor,a.args,a.event,!1):a.command.exec(a.editor,{},a.event,!0)}),r}return o.prototype.exec=function(s,i,r){if(Array.isArray(s)){for(var a=s.length;a--;)if(this.exec(s[a],i,r))return!0;return!1}if(typeof s=="string"&&(s=this.commands[s]),!s||i&&i.$readOnly&&!s.readOnly||this.$checkCommandState!=!1&&s.isAvailable&&!s.isAvailable(i))return!1;var c={editor:i,command:s,args:r};return c.returnValue=this._emit("exec",c),this._signal("afterExec",c),c.returnValue!==!1},o.prototype.toggleRecording=function(s){if(!this.$inReplay)return s&&s._emit("changeStatus"),this.recording?(this.macro.pop(),this.off("exec",this.$addCommandToMacro),this.macro.length||(this.macro=this.oldMacro),this.recording=!1):(this.$addCommandToMacro||(this.$addCommandToMacro=function(i){this.macro.push([i.command,i.args])}.bind(this)),this.oldMacro=this.macro,this.macro=[],this.on("exec",this.$addCommandToMacro),this.recording=!0)},o.prototype.replay=function(s){if(!(this.$inReplay||!this.macro)){if(this.recording)return this.toggleRecording(s);try{this.$inReplay=!0,this.macro.forEach(function(i){typeof i=="string"?this.exec(i,s):this.exec(i[0],s,i[1])},this)}finally{this.$inReplay=!1}}},o.prototype.trimMacro=function(s){return s.map(function(i){return typeof i[0]!="string"&&(i[0]=i[0].name),i[1]||(i=i[0]),i})},o}(C);T.implement(h.prototype,d),M.CommandManager=h}),ace.define("ace/commands/default_commands",["require","exports","module","ace/lib/lang","ace/config","ace/range"],function(n,M,G){"use strict";var L=n("../lib/lang"),T=n("../config"),C=n("../range").Range;function d(l,o){return{win:l,mac:o}}M.commands=[{name:"showSettingsMenu",description:"Show settings menu",bindKey:d("Ctrl-,","Command-,"),exec:function(l){T.loadModule("ace/ext/settings_menu",function(o){o.init(l),l.showSettingsMenu()})},readOnly:!0},{name:"goToNextError",description:"Go to next error",bindKey:d("Alt-E","F4"),exec:function(l){T.loadModule("ace/ext/error_marker",function(o){o.showErrorMarker(l,1)})},scrollIntoView:"animate",readOnly:!0},{name:"goToPreviousError",description:"Go to previous error",bindKey:d("Alt-Shift-E","Shift-F4"),exec:function(l){T.loadModule("ace/ext/error_marker",function(o){o.showErrorMarker(l,-1)})},scrollIntoView:"animate",readOnly:!0},{name:"selectall",description:"Select all",bindKey:d("Ctrl-A","Command-A"),exec:function(l){l.selectAll()},readOnly:!0},{name:"centerselection",description:"Center selection",bindKey:d(null,"Ctrl-L"),exec:function(l){l.centerSelection()},readOnly:!0},{name:"gotoline",description:"Go to line...",bindKey:d("Ctrl-L","Command-L"),exec:function(l,o){typeof o=="number"&&!isNaN(o)&&l.gotoLine(o),l.prompt({$type:"gotoLine"})},readOnly:!0},{name:"fold",bindKey:d("Alt-L|Ctrl-F1","Command-Alt-L|Command-F1"),exec:function(l){l.session.toggleFold(!1)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"unfold",bindKey:d("Alt-Shift-L|Ctrl-Shift-F1","Command-Alt-Shift-L|Command-Shift-F1"),exec:function(l){l.session.toggleFold(!0)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"toggleFoldWidget",description:"Toggle fold widget",bindKey:d("F2","F2"),exec:function(l){l.session.toggleFoldWidget()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"toggleParentFoldWidget",description:"Toggle parent fold widget",bindKey:d("Alt-F2","Alt-F2"),exec:function(l){l.session.toggleFoldWidget(!0)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"foldall",description:"Fold all",bindKey:d(null,"Ctrl-Command-Option-0"),exec:function(l){l.session.foldAll()},scrollIntoView:"center",readOnly:!0},{name:"foldAllComments",description:"Fold all comments",bindKey:d(null,"Ctrl-Command-Option-0"),exec:function(l){l.session.foldAllComments()},scrollIntoView:"center",readOnly:!0},{name:"foldOther",description:"Fold other",bindKey:d("Alt-0","Command-Option-0"),exec:function(l){l.session.foldAll(),l.session.unfold(l.selection.getAllRanges())},scrollIntoView:"center",readOnly:!0},{name:"unfoldall",description:"Unfold all",bindKey:d("Alt-Shift-0","Command-Option-Shift-0"),exec:function(l){l.session.unfold()},scrollIntoView:"center",readOnly:!0},{name:"findnext",description:"Find next",bindKey:d("Ctrl-K","Command-G"),exec:function(l){l.findNext()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"findprevious",description:"Find previous",bindKey:d("Ctrl-Shift-K","Command-Shift-G"),exec:function(l){l.findPrevious()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"selectOrFindNext",description:"Select or find next",bindKey:d("Alt-K","Ctrl-G"),exec:function(l){l.selection.isEmpty()?l.selection.selectWord():l.findNext()},readOnly:!0},{name:"selectOrFindPrevious",description:"Select or find previous",bindKey:d("Alt-Shift-K","Ctrl-Shift-G"),exec:function(l){l.selection.isEmpty()?l.selection.selectWord():l.findPrevious()},readOnly:!0},{name:"find",description:"Find",bindKey:d("Ctrl-F","Command-F"),exec:function(l){T.loadModule("ace/ext/searchbox",function(o){o.Search(l)})},readOnly:!0},{name:"overwrite",description:"Overwrite",bindKey:"Insert",exec:function(l){l.toggleOverwrite()},readOnly:!0},{name:"selecttostart",description:"Select to start",bindKey:d("Ctrl-Shift-Home","Command-Shift-Home|Command-Shift-Up"),exec:function(l){l.getSelection().selectFileStart()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"gotostart",description:"Go to start",bindKey:d("Ctrl-Home","Command-Home|Command-Up"),exec:function(l){l.navigateFileStart()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"selectup",description:"Select up",bindKey:d("Shift-Up","Shift-Up|Ctrl-Shift-P"),exec:function(l){l.getSelection().selectUp()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"golineup",description:"Go line up",bindKey:d("Up","Up|Ctrl-P"),exec:function(l,o){l.navigateUp(o.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttoend",description:"Select to end",bindKey:d("Ctrl-Shift-End","Command-Shift-End|Command-Shift-Down"),exec:function(l){l.getSelection().selectFileEnd()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"gotoend",description:"Go to end",bindKey:d("Ctrl-End","Command-End|Command-Down"),exec:function(l){l.navigateFileEnd()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"selectdown",description:"Select down",bindKey:d("Shift-Down","Shift-Down|Ctrl-Shift-N"),exec:function(l){l.getSelection().selectDown()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"golinedown",description:"Go line down",bindKey:d("Down","Down|Ctrl-N"),exec:function(l,o){l.navigateDown(o.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectwordleft",description:"Select word left",bindKey:d("Ctrl-Shift-Left","Option-Shift-Left"),exec:function(l){l.getSelection().selectWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotowordleft",description:"Go to word left",bindKey:d("Ctrl-Left","Option-Left"),exec:function(l){l.navigateWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttolinestart",description:"Select to line start",bindKey:d("Alt-Shift-Left","Command-Shift-Left|Ctrl-Shift-A"),exec:function(l){l.getSelection().selectLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotolinestart",description:"Go to line start",bindKey:d("Alt-Left|Home","Command-Left|Home|Ctrl-A"),exec:function(l){l.navigateLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectleft",description:"Select left",bindKey:d("Shift-Left","Shift-Left|Ctrl-Shift-B"),exec:function(l){l.getSelection().selectLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotoleft",description:"Go to left",bindKey:d("Left","Left|Ctrl-B"),exec:function(l,o){l.navigateLeft(o.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectwordright",description:"Select word right",bindKey:d("Ctrl-Shift-Right","Option-Shift-Right"),exec:function(l){l.getSelection().selectWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotowordright",description:"Go to word right",bindKey:d("Ctrl-Right","Option-Right"),exec:function(l){l.navigateWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttolineend",description:"Select to line end",bindKey:d("Alt-Shift-Right","Command-Shift-Right|Shift-End|Ctrl-Shift-E"),exec:function(l){l.getSelection().selectLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotolineend",description:"Go to line end",bindKey:d("Alt-Right|End","Command-Right|End|Ctrl-E"),exec:function(l){l.navigateLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectright",description:"Select right",bindKey:d("Shift-Right","Shift-Right"),exec:function(l){l.getSelection().selectRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotoright",description:"Go to right",bindKey:d("Right","Right|Ctrl-F"),exec:function(l,o){l.navigateRight(o.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectpagedown",description:"Select page down",bindKey:"Shift-PageDown",exec:function(l){l.selectPageDown()},readOnly:!0},{name:"pagedown",description:"Page down",bindKey:d(null,"Option-PageDown"),exec:function(l){l.scrollPageDown()},readOnly:!0},{name:"gotopagedown",description:"Go to page down",bindKey:d("PageDown","PageDown|Ctrl-V"),exec:function(l){l.gotoPageDown()},readOnly:!0},{name:"selectpageup",description:"Select page up",bindKey:"Shift-PageUp",exec:function(l){l.selectPageUp()},readOnly:!0},{name:"pageup",description:"Page up",bindKey:d(null,"Option-PageUp"),exec:function(l){l.scrollPageUp()},readOnly:!0},{name:"gotopageup",description:"Go to page up",bindKey:"PageUp",exec:function(l){l.gotoPageUp()},readOnly:!0},{name:"scrollup",description:"Scroll up",bindKey:d("Ctrl-Up",null),exec:function(l){l.renderer.scrollBy(0,-2*l.renderer.layerConfig.lineHeight)},readOnly:!0},{name:"scrolldown",description:"Scroll down",bindKey:d("Ctrl-Down",null),exec:function(l){l.renderer.scrollBy(0,2*l.renderer.layerConfig.lineHeight)},readOnly:!0},{name:"selectlinestart",description:"Select line start",bindKey:"Shift-Home",exec:function(l){l.getSelection().selectLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectlineend",description:"Select line end",bindKey:"Shift-End",exec:function(l){l.getSelection().selectLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"togglerecording",description:"Toggle recording",bindKey:d("Ctrl-Alt-E","Command-Option-E"),exec:function(l){l.commands.toggleRecording(l)},readOnly:!0},{name:"replaymacro",description:"Replay macro",bindKey:d("Ctrl-Shift-E","Command-Shift-E"),exec:function(l){l.commands.replay(l)},readOnly:!0},{name:"jumptomatching",description:"Jump to matching",bindKey:d("Ctrl-\\|Ctrl-P","Command-\\"),exec:function(l){l.jumpToMatching()},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"selecttomatching",description:"Select to matching",bindKey:d("Ctrl-Shift-\\|Ctrl-Shift-P","Command-Shift-\\"),exec:function(l){l.jumpToMatching(!0)},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"expandToMatching",description:"Expand to matching",bindKey:d("Ctrl-Shift-M","Ctrl-Shift-M"),exec:function(l){l.jumpToMatching(!0,!0)},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"passKeysToBrowser",description:"Pass keys to browser",bindKey:d(null,null),exec:function(){},passEvent:!0,readOnly:!0},{name:"copy",description:"Copy",exec:function(l){},readOnly:!0},{name:"cut",description:"Cut",exec:function(l){var o=l.$copyWithEmptySelection&&l.selection.isEmpty(),s=o?l.selection.getLineRange():l.selection.getRange();l._emit("cut",s),s.isEmpty()||l.session.remove(s),l.clearSelection()},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"paste",description:"Paste",exec:function(l,o){l.$handlePaste(o)},scrollIntoView:"cursor"},{name:"removeline",description:"Remove line",bindKey:d("Ctrl-D","Command-D"),exec:function(l){l.removeLines()},scrollIntoView:"cursor",multiSelectAction:"forEachLine"},{name:"duplicateSelection",description:"Duplicate selection",bindKey:d("Ctrl-Shift-D","Command-Shift-D"),exec:function(l){l.duplicateSelection()},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"sortlines",description:"Sort lines",bindKey:d("Ctrl-Alt-S","Command-Alt-S"),exec:function(l){l.sortLines()},scrollIntoView:"selection",multiSelectAction:"forEachLine"},{name:"togglecomment",description:"Toggle comment",bindKey:d("Ctrl-/","Command-/"),exec:function(l){l.toggleCommentLines()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"toggleBlockComment",description:"Toggle block comment",bindKey:d("Ctrl-Shift-/","Command-Shift-/"),exec:function(l){l.toggleBlockComment()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"modifyNumberUp",description:"Modify number up",bindKey:d("Ctrl-Shift-Up","Alt-Shift-Up"),exec:function(l){l.modifyNumber(1)},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"modifyNumberDown",description:"Modify number down",bindKey:d("Ctrl-Shift-Down","Alt-Shift-Down"),exec:function(l){l.modifyNumber(-1)},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"replace",description:"Replace",bindKey:d("Ctrl-H","Command-Option-F"),exec:function(l){T.loadModule("ace/ext/searchbox",function(o){o.Search(l,!0)})}},{name:"undo",description:"Undo",bindKey:d("Ctrl-Z","Command-Z"),exec:function(l){l.undo()}},{name:"redo",description:"Redo",bindKey:d("Ctrl-Shift-Z|Ctrl-Y","Command-Shift-Z|Command-Y"),exec:function(l){l.redo()}},{name:"copylinesup",description:"Copy lines up",bindKey:d("Alt-Shift-Up","Command-Option-Up"),exec:function(l){l.copyLinesUp()},scrollIntoView:"cursor"},{name:"movelinesup",description:"Move lines up",bindKey:d("Alt-Up","Option-Up"),exec:function(l){l.moveLinesUp()},scrollIntoView:"cursor"},{name:"copylinesdown",description:"Copy lines down",bindKey:d("Alt-Shift-Down","Command-Option-Down"),exec:function(l){l.copyLinesDown()},scrollIntoView:"cursor"},{name:"movelinesdown",description:"Move lines down",bindKey:d("Alt-Down","Option-Down"),exec:function(l){l.moveLinesDown()},scrollIntoView:"cursor"},{name:"del",description:"Delete",bindKey:d("Delete","Delete|Ctrl-D|Shift-Delete"),exec:function(l){l.remove("right")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"backspace",description:"Backspace",bindKey:d("Shift-Backspace|Backspace","Ctrl-Backspace|Shift-Backspace|Backspace|Ctrl-H"),exec:function(l){l.remove("left")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"cut_or_delete",description:"Cut or delete",bindKey:d("Shift-Delete",null),exec:function(l){if(l.selection.isEmpty())l.remove("left");else return!1},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolinestart",description:"Remove to line start",bindKey:d("Alt-Backspace","Command-Backspace"),exec:function(l){l.removeToLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolineend",description:"Remove to line end",bindKey:d("Alt-Delete","Ctrl-K|Command-Delete"),exec:function(l){l.removeToLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolinestarthard",description:"Remove to line start hard",bindKey:d("Ctrl-Shift-Backspace",null),exec:function(l){var o=l.selection.getRange();o.start.column=0,l.session.remove(o)},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolineendhard",description:"Remove to line end hard",bindKey:d("Ctrl-Shift-Delete",null),exec:function(l){var o=l.selection.getRange();o.end.column=Number.MAX_VALUE,l.session.remove(o)},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removewordleft",description:"Remove word left",bindKey:d("Ctrl-Backspace","Alt-Backspace|Ctrl-Alt-Backspace"),exec:function(l){l.removeWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removewordright",description:"Remove word right",bindKey:d("Ctrl-Delete","Alt-Delete"),exec:function(l){l.removeWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"outdent",description:"Outdent",bindKey:d("Shift-Tab","Shift-Tab"),exec:function(l){l.blockOutdent()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"indent",description:"Indent",bindKey:d("Tab","Tab"),exec:function(l){l.indent()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"blockoutdent",description:"Block outdent",bindKey:d("Ctrl-[","Ctrl-["),exec:function(l){l.blockOutdent()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"blockindent",description:"Block indent",bindKey:d("Ctrl-]","Ctrl-]"),exec:function(l){l.blockIndent()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"insertstring",description:"Insert string",exec:function(l,o){l.insert(o)},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"inserttext",description:"Insert text",exec:function(l,o){l.insert(L.stringRepeat(o.text||"",o.times||1))},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"splitline",description:"Split line",bindKey:d(null,"Ctrl-O"),exec:function(l){l.splitLine()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"transposeletters",description:"Transpose letters",bindKey:d("Alt-Shift-X","Ctrl-T"),exec:function(l){l.transposeLetters()},multiSelectAction:function(l){l.transposeSelections(1)},scrollIntoView:"cursor"},{name:"touppercase",description:"To uppercase",bindKey:d("Ctrl-U","Ctrl-U"),exec:function(l){l.toUpperCase()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"tolowercase",description:"To lowercase",bindKey:d("Ctrl-Shift-U","Ctrl-Shift-U"),exec:function(l){l.toLowerCase()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"autoindent",description:"Auto Indent",bindKey:d(null,null),exec:function(l){l.autoIndent()},multiSelectAction:"forEachLine",scrollIntoView:"animate"},{name:"expandtoline",description:"Expand to line",bindKey:d("Ctrl-Shift-L","Command-Shift-L"),exec:function(l){var o=l.selection.getRange();o.start.column=o.end.column=0,o.end.row++,l.selection.setRange(o,!1)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"openlink",bindKey:d("Ctrl+F3","F3"),exec:function(l){l.openLink()}},{name:"joinlines",description:"Join lines",bindKey:d(null,null),exec:function(l){for(var o=l.selection.isBackwards(),s=o?l.selection.getSelectionLead():l.selection.getSelectionAnchor(),i=o?l.selection.getSelectionAnchor():l.selection.getSelectionLead(),r=l.session.doc.getLine(s.row).length,a=l.session.doc.getTextRange(l.selection.getRange()),c=a.replace(/\n\s*/," ").length,p=l.session.doc.getLine(s.row),g=s.row+1;g<=i.row+1;g++){var A=L.stringTrimLeft(L.stringTrimRight(l.session.doc.getLine(g)));A.length!==0&&(A=" "+A),p+=A}i.row+10?(l.selection.moveCursorTo(s.row,s.column),l.selection.selectTo(s.row,s.column+c)):(r=l.session.doc.getLine(s.row).length>r?r+1:r,l.selection.moveCursorTo(s.row,r))},multiSelectAction:"forEach",readOnly:!0},{name:"invertSelection",description:"Invert selection",bindKey:d(null,null),exec:function(l){var o=l.session.doc.getLength()-1,s=l.session.doc.getLine(o).length,i=l.selection.rangeList.ranges,r=[];i.length<1&&(i=[l.selection.getRange()]);for(var a=0;ah[l].column&&l++,i.unshift(l,0),h.splice.apply(h,i),this.$updateRows()}}},C.prototype.$updateRows=function(){var d=this.session.lineWidgets;if(d){var h=!0;d.forEach(function(l,o){if(l)for(h=!1,l.row=o;l.$oldWidget;)l.$oldWidget.row=o,l=l.$oldWidget}),h&&(this.session.lineWidgets=null)}},C.prototype.$registerLineWidget=function(d){this.session.lineWidgets||(this.session.lineWidgets=new Array(this.session.getLength()));var h=this.session.lineWidgets[d.row];return h&&(d.$oldWidget=h,h.el&&h.el.parentNode&&(h.el.parentNode.removeChild(h.el),h._inDocument=!1)),this.session.lineWidgets[d.row]=d,d},C.prototype.addLineWidget=function(d){if(this.$registerLineWidget(d),d.session=this.session,!this.editor)return d;var h=this.editor.renderer;d.html&&!d.el&&(d.el=L.createElement("div"),d.el.innerHTML=d.html),d.text&&!d.el&&(d.el=L.createElement("div"),d.el.textContent=d.text),d.el&&(L.addCssClass(d.el,"ace_lineWidgetContainer"),d.className&&L.addCssClass(d.el,d.className),d.el.style.position="absolute",d.el.style.zIndex=5,h.container.appendChild(d.el),d._inDocument=!0,d.coverGutter||(d.el.style.zIndex=3),d.pixelHeight==null&&(d.pixelHeight=d.el.offsetHeight)),d.rowCount==null&&(d.rowCount=d.pixelHeight/h.layerConfig.lineHeight);var l=this.session.getFoldAt(d.row,0);if(d.$fold=l,l){var o=this.session.lineWidgets;d.row==l.end.row&&!o[l.start.row]?o[l.start.row]=d:d.hidden=!0}return this.session._emit("changeFold",{data:{start:{row:d.row}}}),this.$updateRows(),this.renderWidgets(null,h),this.onWidgetChanged(d),d},C.prototype.removeLineWidget=function(d){if(d._inDocument=!1,d.session=null,d.el&&d.el.parentNode&&d.el.parentNode.removeChild(d.el),d.editor&&d.editor.destroy)try{d.editor.destroy()}catch(l){}if(this.session.lineWidgets){var h=this.session.lineWidgets[d.row];if(h==d)this.session.lineWidgets[d.row]=d.$oldWidget,d.$oldWidget&&this.onWidgetChanged(d.$oldWidget);else for(;h;){if(h.$oldWidget==d){h.$oldWidget=d.$oldWidget;break}h=h.$oldWidget}}this.session._emit("changeFold",{data:{start:{row:d.row}}}),this.$updateRows()},C.prototype.getWidgetsAtRow=function(d){for(var h=this.session.lineWidgets,l=h&&h[d],o=[];l;)o.push(l),l=l.$oldWidget;return o},C.prototype.onWidgetChanged=function(d){this.session._changedWidgets.push(d),this.editor&&this.editor.renderer.updateFull()},C.prototype.measureWidgets=function(d,h){var l=this.session._changedWidgets,o=h.layerConfig;if(!(!l||!l.length)){for(var s=1/0,i=0;i0&&!o[s];)s--;this.firstRow=l.firstRow,this.lastRow=l.lastRow,h.$cursorLayer.config=l;for(var r=s;r<=i;r++){var a=o[r];if(!(!a||!a.el)){if(a.hidden){a.el.style.top=-100-(a.pixelHeight||0)+"px";continue}a._inDocument||(a._inDocument=!0,h.container.appendChild(a.el));var c=h.$cursorLayer.getPixelPosition({row:r,column:0},!0).top;a.coverLine||(c+=l.lineHeight*this.session.getRowLineCount(a.row)),a.el.style.top=c-l.offset+"px";var p=a.coverGutter?0:h.gutterWidth;a.fixedWidth||(p-=h.scrollLeft),a.el.style.left=p+"px",a.fullWidth&&a.screenWidth&&(a.el.style.minWidth=l.width+2*l.padding+"px"),a.fixedWidth?a.el.style.right=h.scrollBar.getWidth()+"px":a.el.style.right=""}}}},C}();M.LineWidgets=T}),ace.define("ace/keyboard/gutter_handler",["require","exports","module","ace/lib/keys","ace/mouse/default_gutter_handler"],function(n,M,G){"use strict";var L=n("../lib/keys"),T=n("../mouse/default_gutter_handler").GutterTooltip,C=function(){function h(l){this.editor=l,this.gutterLayer=l.renderer.$gutterLayer,this.element=l.renderer.$gutter,this.lines=l.renderer.$gutterLayer.$lines,this.activeRowIndex=null,this.activeLane=null,this.annotationTooltip=new T(this.editor)}return h.prototype.addListener=function(){this.element.addEventListener("keydown",this.$onGutterKeyDown.bind(this)),this.element.addEventListener("focusout",this.$blurGutter.bind(this)),this.editor.on("mousewheel",this.$blurGutter.bind(this))},h.prototype.removeListener=function(){this.element.removeEventListener("keydown",this.$onGutterKeyDown.bind(this)),this.element.removeEventListener("focusout",this.$blurGutter.bind(this)),this.editor.off("mousewheel",this.$blurGutter.bind(this))},h.prototype.$onGutterKeyDown=function(l){if(this.annotationTooltip.isOpen){l.preventDefault(),l.keyCode===L.escape&&this.annotationTooltip.hideTooltip();return}if(l.target===this.element){if(l.keyCode!=L.enter)return;l.preventDefault();var o=this.editor.getCursorPosition().row;this.editor.isRowVisible(o)||this.editor.scrollToLine(o,!0,!0),setTimeout(function(){var s=this.$rowToRowIndex(this.gutterLayer.$cursorCell.row),i=this.$findNearestFoldWidget(s),r=this.$findNearestAnnotation(s);if(!(i===null&&r===null)){if(i===null&&r!==null){this.activeRowIndex=r,this.activeLane="annotation",this.$focusAnnotation(this.activeRowIndex);return}if(i!==null&&r===null){this.activeRowIndex=i,this.activeLane="fold",this.$focusFoldWidget(this.activeRowIndex);return}if(Math.abs(r-s)0||l+o=0&&this.$isFoldWidgetVisible(l-o))return l-o;if(l+o<=this.lines.getLength()-1&&this.$isFoldWidgetVisible(l+o))return l+o}return null},h.prototype.$findNearestAnnotation=function(l){if(this.$isAnnotationVisible(l))return l;for(var o=0;l-o>0||l+o=0&&this.$isAnnotationVisible(l-o))return l-o;if(l+o<=this.lines.getLength()-1&&this.$isAnnotationVisible(l+o))return l+o}return null},h.prototype.$focusFoldWidget=function(l){if(l!=null){var o=this.$getFoldWidget(l);o.classList.add(this.editor.renderer.keyboardFocusClassName),o.focus()}},h.prototype.$focusAnnotation=function(l){if(l!=null){var o=this.$getAnnotation(l);o.classList.add(this.editor.renderer.keyboardFocusClassName),o.focus()}},h.prototype.$blurFoldWidget=function(l){var o=this.$getFoldWidget(l);o.classList.remove(this.editor.renderer.keyboardFocusClassName),o.blur()},h.prototype.$blurAnnotation=function(l){var o=this.$getAnnotation(l);o.classList.remove(this.editor.renderer.keyboardFocusClassName),o.blur()},h.prototype.$moveFoldWidgetUp=function(){for(var l=this.activeRowIndex;l>0;)if(l--,this.$isFoldWidgetVisible(l)){this.$blurFoldWidget(this.activeRowIndex),this.activeRowIndex=l,this.$focusFoldWidget(this.activeRowIndex);return}},h.prototype.$moveFoldWidgetDown=function(){for(var l=this.activeRowIndex;l0;)if(l--,this.$isAnnotationVisible(l)){this.$blurAnnotation(this.activeRowIndex),this.activeRowIndex=l,this.$focusAnnotation(this.activeRowIndex);return}},h.prototype.$moveAnnotationDown=function(){for(var l=this.activeRowIndex;l=y.length&&(y=void 0),{value:y&&y[I++],done:!y}}};throw new TypeError(m?"Object is not iterable.":"Symbol.iterator is not defined.")},T=n("./lib/oop"),C=n("./lib/dom"),d=n("./lib/lang"),h=n("./lib/useragent"),l=n("./keyboard/textinput").TextInput,o=n("./mouse/mouse_handler").MouseHandler,s=n("./mouse/fold_handler").FoldHandler,i=n("./keyboard/keybinding").KeyBinding,r=n("./edit_session").EditSession,a=n("./search").Search,c=n("./range").Range,p=n("./lib/event_emitter").EventEmitter,g=n("./commands/command_manager").CommandManager,A=n("./commands/default_commands").commands,b=n("./config"),$=n("./token_iterator").TokenIterator,S=n("./line_widgets").LineWidgets,v=n("./keyboard/gutter_handler").GutterKeyboardHandler,w=n("./config").nls,O=n("./clipboard"),B=n("./lib/keys"),k=function(){function y(m,E,I){this.$toDestroy=[];var N=m.getContainerElement();this.container=N,this.renderer=m,this.id="editor"+ ++y.$uid,this.commands=new g(h.isMac?"mac":"win",A),typeof document=="object"&&(this.textInput=new l(m.getTextAreaContainer(),this),this.renderer.textarea=this.textInput.getElement(),this.$mouseHandler=new o(this),new s(this)),this.keyBinding=new i(this),this.$search=new a().set({wrap:!0}),this.$historyTracker=this.$historyTracker.bind(this),this.commands.on("exec",this.$historyTracker),this.$initOperationListeners(),this._$emitInputEvent=d.delayedCall(function(){this._signal("input",{}),this.session&&!this.session.destroyed&&this.session.bgTokenizer.scheduleStart()}.bind(this)),this.on("change",function(W,z){z._$emitInputEvent.schedule(31)}),this.setSession(E||I&&I.session||new r("")),b.resetOptions(this),I&&this.setOptions(I),b._signal("editor",this)}return y.prototype.$initOperationListeners=function(){this.commands.on("exec",this.startOperation.bind(this),!0),this.commands.on("afterExec",this.endOperation.bind(this),!0),this.$opResetTimer=d.delayedCall(this.endOperation.bind(this,!0)),this.on("change",function(){this.curOp||(this.startOperation(),this.curOp.selectionBefore=this.$lastSel),this.curOp.docChanged=!0}.bind(this),!0),this.on("changeSelection",function(){this.curOp||(this.startOperation(),this.curOp.selectionBefore=this.$lastSel),this.curOp.selectionChanged=!0}.bind(this),!0)},y.prototype.startOperation=function(m){if(this.curOp){if(!m||this.curOp.command)return;this.prevOp=this.curOp}m||(this.previousCommand=null,m={}),this.$opResetTimer.schedule(),this.curOp=this.session.curOp={command:m.command||{},args:m.args,scrollTop:this.renderer.scrollTop},this.curOp.selectionBefore=this.selection.toJSON()},y.prototype.endOperation=function(m){if(this.curOp&&this.session){if(m&&m.returnValue===!1||!this.session)return this.curOp=null;if(m==!0&&this.curOp.command&&this.curOp.command.name=="mouse"||(this._signal("beforeEndOperation"),!this.curOp))return;var E=this.curOp.command,I=E&&E.scrollIntoView;if(I){switch(I){case"center-animate":I="animate";case"center":this.renderer.scrollCursorIntoView(null,.5);break;case"animate":case"cursor":this.renderer.scrollCursorIntoView();break;case"selectionPart":var N=this.selection.getRange(),W=this.renderer.layerConfig;(N.start.row>=W.lastRow||N.end.row<=W.firstRow)&&this.renderer.scrollSelectionIntoView(this.selection.anchor,this.selection.lead);break;default:break}I=="animate"&&this.renderer.animateScrolling(this.curOp.scrollTop)}var z=this.selection.toJSON();this.curOp.selectionAfter=z,this.$lastSel=this.selection.toJSON(),this.session.getUndoManager().addSelection(z),this.prevOp=this.curOp,this.curOp=null}},y.prototype.$historyTracker=function(m){if(this.$mergeUndoDeltas){var E=this.prevOp,I=this.$mergeableCommands,N=E.command&&m.command.name==E.command.name;if(m.command.name=="insertstring"){var W=m.args;this.mergeNextCommand===void 0&&(this.mergeNextCommand=!0),N=N&&this.mergeNextCommand&&(!/\s/.test(W)||/\s/.test(E.args)),this.mergeNextCommand=!0}else N=N&&I.indexOf(m.command.name)!==-1;this.$mergeUndoDeltas!="always"&&Date.now()-this.sequenceStartTime>2e3&&(N=!1),N?this.session.mergeUndoDeltas=!0:I.indexOf(m.command.name)!==-1&&(this.sequenceStartTime=Date.now())}},y.prototype.setKeyboardHandler=function(m,E){if(m&&typeof m=="string"&&m!="ace"){this.$keybindingId=m;var I=this;b.loadModule(["keybinding",m],function(N){I.$keybindingId==m&&I.keyBinding.setKeyboardHandler(N&&N.handler),E&&E()})}else this.$keybindingId=null,this.keyBinding.setKeyboardHandler(m),E&&E()},y.prototype.getKeyboardHandler=function(){return this.keyBinding.getKeyboardHandler()},y.prototype.setSession=function(m){if(this.session!=m){this.curOp&&this.endOperation(),this.curOp={};var E=this.session;if(E){this.session.off("change",this.$onDocumentChange),this.session.off("changeMode",this.$onChangeMode),this.session.off("tokenizerUpdate",this.$onTokenizerUpdate),this.session.off("changeTabSize",this.$onChangeTabSize),this.session.off("changeWrapLimit",this.$onChangeWrapLimit),this.session.off("changeWrapMode",this.$onChangeWrapMode),this.session.off("changeFold",this.$onChangeFold),this.session.off("changeFrontMarker",this.$onChangeFrontMarker),this.session.off("changeBackMarker",this.$onChangeBackMarker),this.session.off("changeBreakpoint",this.$onChangeBreakpoint),this.session.off("changeAnnotation",this.$onChangeAnnotation),this.session.off("changeOverwrite",this.$onCursorChange),this.session.off("changeScrollTop",this.$onScrollTopChange),this.session.off("changeScrollLeft",this.$onScrollLeftChange);var I=this.session.getSelection();I.off("changeCursor",this.$onCursorChange),I.off("changeSelection",this.$onSelectionChange)}this.session=m,m?(this.$onDocumentChange=this.onDocumentChange.bind(this),m.on("change",this.$onDocumentChange),this.renderer.setSession(m),this.$onChangeMode=this.onChangeMode.bind(this),m.on("changeMode",this.$onChangeMode),this.$onTokenizerUpdate=this.onTokenizerUpdate.bind(this),m.on("tokenizerUpdate",this.$onTokenizerUpdate),this.$onChangeTabSize=this.renderer.onChangeTabSize.bind(this.renderer),m.on("changeTabSize",this.$onChangeTabSize),this.$onChangeWrapLimit=this.onChangeWrapLimit.bind(this),m.on("changeWrapLimit",this.$onChangeWrapLimit),this.$onChangeWrapMode=this.onChangeWrapMode.bind(this),m.on("changeWrapMode",this.$onChangeWrapMode),this.$onChangeFold=this.onChangeFold.bind(this),m.on("changeFold",this.$onChangeFold),this.$onChangeFrontMarker=this.onChangeFrontMarker.bind(this),this.session.on("changeFrontMarker",this.$onChangeFrontMarker),this.$onChangeBackMarker=this.onChangeBackMarker.bind(this),this.session.on("changeBackMarker",this.$onChangeBackMarker),this.$onChangeBreakpoint=this.onChangeBreakpoint.bind(this),this.session.on("changeBreakpoint",this.$onChangeBreakpoint),this.$onChangeAnnotation=this.onChangeAnnotation.bind(this),this.session.on("changeAnnotation",this.$onChangeAnnotation),this.$onCursorChange=this.onCursorChange.bind(this),this.session.on("changeOverwrite",this.$onCursorChange),this.$onScrollTopChange=this.onScrollTopChange.bind(this),this.session.on("changeScrollTop",this.$onScrollTopChange),this.$onScrollLeftChange=this.onScrollLeftChange.bind(this),this.session.on("changeScrollLeft",this.$onScrollLeftChange),this.selection=m.getSelection(),this.selection.on("changeCursor",this.$onCursorChange),this.$onSelectionChange=this.onSelectionChange.bind(this),this.selection.on("changeSelection",this.$onSelectionChange),this.onChangeMode(),this.onCursorChange(),this.onScrollTopChange(),this.onScrollLeftChange(),this.onSelectionChange(),this.onChangeFrontMarker(),this.onChangeBackMarker(),this.onChangeBreakpoint(),this.onChangeAnnotation(),this.session.getUseWrapMode()&&this.renderer.adjustWrapLimit(),this.renderer.updateFull()):(this.selection=null,this.renderer.setSession(m)),this._signal("changeSession",{session:m,oldSession:E}),this.curOp=null,E&&E._signal("changeEditor",{oldEditor:this}),m&&m._signal("changeEditor",{editor:this}),m&&!m.destroyed&&m.bgTokenizer.scheduleStart()}},y.prototype.getSession=function(){return this.session},y.prototype.setValue=function(m,E){return this.session.doc.setValue(m),E?E==1?this.navigateFileEnd():E==-1&&this.navigateFileStart():this.selectAll(),m},y.prototype.getValue=function(){return this.session.getValue()},y.prototype.getSelection=function(){return this.selection},y.prototype.resize=function(m){this.renderer.onResize(m)},y.prototype.setTheme=function(m,E){this.renderer.setTheme(m,E)},y.prototype.getTheme=function(){return this.renderer.getTheme()},y.prototype.setStyle=function(m){this.renderer.setStyle(m)},y.prototype.unsetStyle=function(m){this.renderer.unsetStyle(m)},y.prototype.getFontSize=function(){return this.getOption("fontSize")||C.computedStyle(this.container).fontSize},y.prototype.setFontSize=function(m){this.setOption("fontSize",m)},y.prototype.$highlightBrackets=function(){if(!this.$highlightPending){var m=this;this.$highlightPending=!0,setTimeout(function(){m.$highlightPending=!1;var E=m.session;if(!(!E||E.destroyed)){E.$bracketHighlight&&(E.$bracketHighlight.markerIds.forEach(function(t0){E.removeMarker(t0)}),E.$bracketHighlight=null);var I=m.getCursorPosition(),N=m.getKeyboardHandler(),W=N&&N.$getDirectionForHighlight&&N.$getDirectionForHighlight(m),z=E.getMatchingBracketRanges(I,W);if(!z){var U=new $(E,I.row,I.column),j=U.getCurrentToken();if(j&&/\b(?:tag-open|tag-name)/.test(j.type)){var q=E.getMatchingTags(I);q&&(z=[q.openTagName,q.closeTagName])}}if(!z&&E.$mode.getMatching&&(z=E.$mode.getMatching(m.session)),!z){m.getHighlightIndentGuides()&&m.renderer.$textLayer.$highlightIndentGuide();return}var Y="ace_bracket";Array.isArray(z)?z.length==1&&(Y="ace_error_bracket"):z=[z],z.length==2&&(c.comparePoints(z[0].end,z[1].start)==0?z=[c.fromPoints(z[0].start,z[1].end)]:c.comparePoints(z[0].start,z[1].end)==0&&(z=[c.fromPoints(z[1].start,z[0].end)])),E.$bracketHighlight={ranges:z,markerIds:z.map(function(t0){return E.addMarker(t0,Y,"text")})},m.getHighlightIndentGuides()&&m.renderer.$textLayer.$highlightIndentGuide()}},50)}},y.prototype.focus=function(){this.textInput.focus()},y.prototype.isFocused=function(){return this.textInput.isFocused()},y.prototype.blur=function(){this.textInput.blur()},y.prototype.onFocus=function(m){this.$isFocused||(this.$isFocused=!0,this.renderer.showCursor(),this.renderer.visualizeFocus(),this._emit("focus",m))},y.prototype.onBlur=function(m){this.$isFocused&&(this.$isFocused=!1,this.renderer.hideCursor(),this.renderer.visualizeBlur(),this._emit("blur",m))},y.prototype.$cursorChange=function(){this.renderer.updateCursor(),this.$highlightBrackets(),this.$updateHighlightActiveLine()},y.prototype.onDocumentChange=function(m){var E=this.session.$useWrapMode,I=m.start.row==m.end.row?m.end.row:1/0;this.renderer.updateLines(m.start.row,I,E),this._signal("change",m),this.$cursorChange()},y.prototype.onTokenizerUpdate=function(m){var E=m.data;this.renderer.updateLines(E.first,E.last)},y.prototype.onScrollTopChange=function(){this.renderer.scrollToY(this.session.getScrollTop())},y.prototype.onScrollLeftChange=function(){this.renderer.scrollToX(this.session.getScrollLeft())},y.prototype.onCursorChange=function(){this.$cursorChange(),this._signal("changeSelection")},y.prototype.$updateHighlightActiveLine=function(){var m=this.getSession(),E;if(this.$highlightActiveLine&&((this.$selectionStyle!="line"||!this.selection.isMultiLine())&&(E=this.getCursorPosition()),this.renderer.theme&&this.renderer.theme.$selectionColorConflict&&!this.selection.isEmpty()&&(E=!1),this.renderer.$maxLines&&this.session.getLength()===1&&!(this.renderer.$minLines>1)&&(E=!1)),m.$highlightLineMarker&&!E)m.removeMarker(m.$highlightLineMarker.id),m.$highlightLineMarker=null;else if(!m.$highlightLineMarker&&E){var I=new c(E.row,E.column,E.row,1/0);I.id=m.addMarker(I,"ace_active-line","screenLine"),m.$highlightLineMarker=I}else E&&(m.$highlightLineMarker.start.row=E.row,m.$highlightLineMarker.end.row=E.row,m.$highlightLineMarker.start.column=E.column,m._signal("changeBackMarker"))},y.prototype.onSelectionChange=function(m){var E=this.session;if(E.$selectionMarker&&E.removeMarker(E.$selectionMarker),E.$selectionMarker=null,this.selection.isEmpty())this.$updateHighlightActiveLine();else{var I=this.selection.getRange(),N=this.getSelectionStyle();E.$selectionMarker=E.addMarker(I,"ace_selection",N)}var W=this.$highlightSelectedWord&&this.$getSelectionHighLightRegexp();this.session.highlight(W),this._signal("changeSelection")},y.prototype.$getSelectionHighLightRegexp=function(){var m=this.session,E=this.getSelectionRange();if(!(E.isEmpty()||E.isMultiLine())){var I=E.start.column,N=E.end.column,W=m.getLine(E.start.row),z=W.substring(I,N);if(!(z.length>5e3||!/[\w\d]/.test(z))){var U=this.$search.$assembleRegExp({wholeWord:!0,caseSensitive:!0,needle:z}),j=W.substring(I-1,N+1);if(U.test(j))return U}}},y.prototype.onChangeFrontMarker=function(){this.renderer.updateFrontMarkers()},y.prototype.onChangeBackMarker=function(){this.renderer.updateBackMarkers()},y.prototype.onChangeBreakpoint=function(){this.renderer.updateBreakpoints()},y.prototype.onChangeAnnotation=function(){this.renderer.setAnnotations(this.session.getAnnotations())},y.prototype.onChangeMode=function(m){this.renderer.updateText(),this._emit("changeMode",m)},y.prototype.onChangeWrapLimit=function(){this.renderer.updateFull()},y.prototype.onChangeWrapMode=function(){this.renderer.onResize(!0)},y.prototype.onChangeFold=function(){this.$updateHighlightActiveLine(),this.renderer.updateFull()},y.prototype.getSelectedText=function(){return this.session.getTextRange(this.getSelectionRange())},y.prototype.getCopyText=function(){var m=this.getSelectedText(),E=this.session.doc.getNewLineCharacter(),I=!1;if(!m&&this.$copyWithEmptySelection){I=!0;for(var N=this.selection.getAllRanges(),W=0;Wt0.search(/\S|$/)){var j=t0.substr(W.column).search(/\S|$/);I.doc.removeInLine(W.row,W.column,W.column+j)}}this.clearSelection();var q=W.column,Y=I.getState(W.row),t0=I.getLine(W.row),n0=N.checkOutdent(Y,t0,m);if(I.insert(W,m),z&&z.selection&&(z.selection.length==2?this.selection.setSelectionRange(new c(W.row,q+z.selection[0],W.row,q+z.selection[1])):this.selection.setSelectionRange(new c(W.row+z.selection[0],z.selection[1],W.row+z.selection[2],z.selection[3]))),this.$enableAutoIndent){if(I.getDocument().isNewLine(m)){var u0=N.getNextLineIndent(Y,t0.slice(0,W.column),I.getTabString());I.insert({row:W.row+1,column:0},u0)}n0&&N.autoOutdent(Y,I,W.row)}},y.prototype.autoIndent=function(){var m=this.session,E=m.getMode(),I,N;if(this.selection.isEmpty())I=0,N=m.doc.getLength()-1;else{var W=this.getSelectionRange();I=W.start.row,N=W.end.row}for(var z="",U="",j="",q,Y,t0,n0=m.getTabString(),u0=I;u0<=N;u0++)u0>0&&(z=m.getState(u0-1),U=m.getLine(u0-1),j=E.getNextLineIndent(z,U,n0)),q=m.getLine(u0),Y=E.$getIndent(q),j!==Y&&(Y.length>0&&(t0=new c(u0,0,u0,Y.length),m.remove(t0)),j.length>0&&m.insert({row:u0,column:0},j)),E.autoOutdent(z,m,u0)},y.prototype.onTextInput=function(m,E){if(!E)return this.keyBinding.onTextInput(m);this.startOperation({command:{name:"insertstring"}});var I=this.applyComposition.bind(this,m,E);this.selection.rangeCount?this.forEachSelection(I):I(),this.endOperation()},y.prototype.applyComposition=function(m,E){if(E.extendLeft||E.extendRight){var I=this.selection.getRange();I.start.column-=E.extendLeft,I.end.column+=E.extendRight,I.start.column<0&&(I.start.row--,I.start.column+=this.session.getLine(I.start.row).length+1),this.selection.setRange(I),!m&&!I.isEmpty()&&this.remove()}if((m||!this.selection.isEmpty())&&this.insert(m,!0),E.restoreStart||E.restoreEnd){var I=this.selection.getRange();I.start.column-=E.restoreStart,I.end.column-=E.restoreEnd,this.selection.setRange(I)}},y.prototype.onCommandKey=function(m,E,I){return this.keyBinding.onCommandKey(m,E,I)},y.prototype.setOverwrite=function(m){this.session.setOverwrite(m)},y.prototype.getOverwrite=function(){return this.session.getOverwrite()},y.prototype.toggleOverwrite=function(){this.session.toggleOverwrite()},y.prototype.setScrollSpeed=function(m){this.setOption("scrollSpeed",m)},y.prototype.getScrollSpeed=function(){return this.getOption("scrollSpeed")},y.prototype.setDragDelay=function(m){this.setOption("dragDelay",m)},y.prototype.getDragDelay=function(){return this.getOption("dragDelay")},y.prototype.setSelectionStyle=function(m){this.setOption("selectionStyle",m)},y.prototype.getSelectionStyle=function(){return this.getOption("selectionStyle")},y.prototype.setHighlightActiveLine=function(m){this.setOption("highlightActiveLine",m)},y.prototype.getHighlightActiveLine=function(){return this.getOption("highlightActiveLine")},y.prototype.setHighlightGutterLine=function(m){this.setOption("highlightGutterLine",m)},y.prototype.getHighlightGutterLine=function(){return this.getOption("highlightGutterLine")},y.prototype.setHighlightSelectedWord=function(m){this.setOption("highlightSelectedWord",m)},y.prototype.getHighlightSelectedWord=function(){return this.$highlightSelectedWord},y.prototype.setAnimatedScroll=function(m){this.renderer.setAnimatedScroll(m)},y.prototype.getAnimatedScroll=function(){return this.renderer.getAnimatedScroll()},y.prototype.setShowInvisibles=function(m){this.renderer.setShowInvisibles(m)},y.prototype.getShowInvisibles=function(){return this.renderer.getShowInvisibles()},y.prototype.setDisplayIndentGuides=function(m){this.renderer.setDisplayIndentGuides(m)},y.prototype.getDisplayIndentGuides=function(){return this.renderer.getDisplayIndentGuides()},y.prototype.setHighlightIndentGuides=function(m){this.renderer.setHighlightIndentGuides(m)},y.prototype.getHighlightIndentGuides=function(){return this.renderer.getHighlightIndentGuides()},y.prototype.setShowPrintMargin=function(m){this.renderer.setShowPrintMargin(m)},y.prototype.getShowPrintMargin=function(){return this.renderer.getShowPrintMargin()},y.prototype.setPrintMarginColumn=function(m){this.renderer.setPrintMarginColumn(m)},y.prototype.getPrintMarginColumn=function(){return this.renderer.getPrintMarginColumn()},y.prototype.setReadOnly=function(m){this.setOption("readOnly",m)},y.prototype.getReadOnly=function(){return this.getOption("readOnly")},y.prototype.setBehavioursEnabled=function(m){this.setOption("behavioursEnabled",m)},y.prototype.getBehavioursEnabled=function(){return this.getOption("behavioursEnabled")},y.prototype.setWrapBehavioursEnabled=function(m){this.setOption("wrapBehavioursEnabled",m)},y.prototype.getWrapBehavioursEnabled=function(){return this.getOption("wrapBehavioursEnabled")},y.prototype.setShowFoldWidgets=function(m){this.setOption("showFoldWidgets",m)},y.prototype.getShowFoldWidgets=function(){return this.getOption("showFoldWidgets")},y.prototype.setFadeFoldWidgets=function(m){this.setOption("fadeFoldWidgets",m)},y.prototype.getFadeFoldWidgets=function(){return this.getOption("fadeFoldWidgets")},y.prototype.remove=function(m){this.selection.isEmpty()&&(m=="left"?this.selection.selectLeft():this.selection.selectRight());var E=this.getSelectionRange();if(this.getBehavioursEnabled()){var I=this.session,N=I.getState(E.start.row),W=I.getMode().transformAction(N,"deletion",this,I,E);if(E.end.column===0){var z=I.getTextRange(E);if(z[z.length-1]==` -`){var U=I.getLine(E.end.row);/^\s+$/.test(U)&&(E.end.column=U.length)}}W&&(E=W)}this.session.remove(E),this.clearSelection()},y.prototype.removeWordRight=function(){this.selection.isEmpty()&&this.selection.selectWordRight(),this.session.remove(this.getSelectionRange()),this.clearSelection()},y.prototype.removeWordLeft=function(){this.selection.isEmpty()&&this.selection.selectWordLeft(),this.session.remove(this.getSelectionRange()),this.clearSelection()},y.prototype.removeToLineStart=function(){this.selection.isEmpty()&&this.selection.selectLineStart(),this.selection.isEmpty()&&this.selection.selectLeft(),this.session.remove(this.getSelectionRange()),this.clearSelection()},y.prototype.removeToLineEnd=function(){this.selection.isEmpty()&&this.selection.selectLineEnd();var m=this.getSelectionRange();m.start.column==m.end.column&&m.start.row==m.end.row&&(m.end.column=0,m.end.row++),this.session.remove(m),this.clearSelection()},y.prototype.splitLine=function(){this.selection.isEmpty()||(this.session.remove(this.getSelectionRange()),this.clearSelection());var m=this.getCursorPosition();this.insert(` -`),this.moveCursorToPosition(m)},y.prototype.setGhostText=function(m,E){this.session.widgetManager||(this.session.widgetManager=new S(this.session),this.session.widgetManager.attach(this)),this.renderer.setGhostText(m,E)},y.prototype.removeGhostText=function(){this.session.widgetManager&&this.renderer.removeGhostText()},y.prototype.transposeLetters=function(){if(this.selection.isEmpty()){var m=this.getCursorPosition(),E=m.column;if(E!==0){var I=this.session.getLine(m.row),N,W;Ej.toLowerCase()?1:0});for(var W=new c(0,0,0,0),N=m.first;N<=m.last;N++){var z=E.getLine(N);W.start.row=N,W.end.row=N,W.end.column=z.length,E.replace(W,I[N-m.first])}},y.prototype.toggleCommentLines=function(){var m=this.session.getState(this.getCursorPosition().row),E=this.$getSelectedRows();this.session.getMode().toggleCommentLines(m,this.session,E.first,E.last)},y.prototype.toggleBlockComment=function(){var m=this.getCursorPosition(),E=this.session.getState(m.row),I=this.getSelectionRange();this.session.getMode().toggleBlockComment(E,this.session,I,m)},y.prototype.getNumberAt=function(m,E){var I=/[\-]?[0-9]+(?:\.[0-9]+)?/g;I.lastIndex=0;for(var N=this.session.getLine(m);I.lastIndex=E){var z={value:W[0],start:W.index,end:W.index+W[0].length};return z}}return null},y.prototype.modifyNumber=function(m){var E=this.selection.getCursor().row,I=this.selection.getCursor().column,N=new c(E,I-1,E,I),W=this.session.getTextRange(N);if(!isNaN(parseFloat(W))&&isFinite(W)){var z=this.getNumberAt(E,I);if(z){var U=z.value.indexOf(".")>=0?z.start+z.value.indexOf(".")+1:z.end,j=z.start+z.value.length-U,q=parseFloat(z.value);q*=Math.pow(10,j),U!==z.end&&I=U&&z<=j&&(I=k0,q.selection.clearSelection(),q.moveCursorTo(m,U+N),q.selection.selectTo(m,j+N)),U=j});for(var Y=this.$toggleWordPairs,t0,n0=0;n0=j&&U<=q&&u0.match(/((?:https?|ftp):\/\/[\S]+)/)){Y=u0.replace(/[\s:.,'";}\]]+$/,"");break}j=q}}catch(h0){I={error:h0}}finally{try{n0&&!n0.done&&(N=t0.return)&&N.call(t0)}finally{if(I)throw I.error}}return Y},y.prototype.openLink=function(){var m=this.selection.getCursor(),E=this.findLinkAt(m.row,m.column);return E&&window.open(E,"_blank"),E!=null},y.prototype.removeLines=function(){var m=this.$getSelectedRows();this.session.removeFullLines(m.first,m.last),this.clearSelection()},y.prototype.duplicateSelection=function(){var m=this.selection,E=this.session,I=m.getRange(),N=m.isBackwards();if(I.isEmpty()){var W=I.start.row;E.duplicateLines(W,W)}else{var z=N?I.start:I.end,U=E.insert(z,E.getTextRange(I),!1);I.start=z,I.end=U,m.setSelectionRange(I,N)}},y.prototype.moveLinesDown=function(){this.$moveLines(1,!1)},y.prototype.moveLinesUp=function(){this.$moveLines(-1,!1)},y.prototype.moveText=function(m,E,I){return this.session.moveText(m,E,I)},y.prototype.copyLinesUp=function(){this.$moveLines(-1,!0)},y.prototype.copyLinesDown=function(){this.$moveLines(1,!0)},y.prototype.$moveLines=function(m,E){var I,N,W=this.selection;if(!W.inMultiSelectMode||this.inVirtualSelectionMode){var z=W.toOrientedRange();I=this.$getSelectedRows(z),N=this.session.$moveLines(I.first,I.last,E?0:m),E&&m==-1&&(N=0),z.moveBy(N,0),W.fromOrientedRange(z)}else{var U=W.rangeList.ranges;W.rangeList.detach(this.session),this.inVirtualSelectionMode=!0;for(var j=0,q=0,Y=U.length,t0=0;t0h0+1)break;h0=m0.last}for(t0--,j=this.session.$moveLines(u0,h0,E?0:m),E&&m==-1&&(n0=t0+1);n0<=t0;)U[n0].moveBy(j,0),n0++;E||(j=0),q+=j}W.fromOrientedRange(W.ranges[0]),W.rangeList.attach(this.session),this.inVirtualSelectionMode=!1}},y.prototype.$getSelectedRows=function(m){return m=(m||this.getSelectionRange()).collapseRows(),{first:this.session.getRowFoldStart(m.start.row),last:this.session.getRowFoldEnd(m.end.row)}},y.prototype.onCompositionStart=function(m){this.renderer.showComposition(m)},y.prototype.onCompositionUpdate=function(m){this.renderer.setCompositionText(m)},y.prototype.onCompositionEnd=function(){this.renderer.hideComposition()},y.prototype.getFirstVisibleRow=function(){return this.renderer.getFirstVisibleRow()},y.prototype.getLastVisibleRow=function(){return this.renderer.getLastVisibleRow()},y.prototype.isRowVisible=function(m){return m>=this.getFirstVisibleRow()&&m<=this.getLastVisibleRow()},y.prototype.isRowFullyVisible=function(m){return m>=this.renderer.getFirstFullyVisibleRow()&&m<=this.renderer.getLastFullyVisibleRow()},y.prototype.$getVisibleRowCount=function(){return this.renderer.getScrollBottomRow()-this.renderer.getScrollTopRow()+1},y.prototype.$moveByPage=function(m,E){var I=this.renderer,N=this.renderer.layerConfig,W=m*Math.floor(N.height/N.lineHeight);E===!0?this.selection.$moveSelection(function(){this.moveCursorBy(W,0)}):E===!1&&(this.selection.moveCursorBy(W,0),this.selection.clearSelection());var z=I.scrollTop;I.scrollBy(0,W*N.lineHeight),E!=null&&I.scrollCursorIntoView(null,.5),I.animateScrolling(z)},y.prototype.selectPageDown=function(){this.$moveByPage(1,!0)},y.prototype.selectPageUp=function(){this.$moveByPage(-1,!0)},y.prototype.gotoPageDown=function(){this.$moveByPage(1,!1)},y.prototype.gotoPageUp=function(){this.$moveByPage(-1,!1)},y.prototype.scrollPageDown=function(){this.$moveByPage(1)},y.prototype.scrollPageUp=function(){this.$moveByPage(-1)},y.prototype.scrollToRow=function(m){this.renderer.scrollToRow(m)},y.prototype.scrollToLine=function(m,E,I,N){this.renderer.scrollToLine(m,E,I,N)},y.prototype.centerSelection=function(){var m=this.getSelectionRange(),E={row:Math.floor(m.start.row+(m.end.row-m.start.row)/2),column:Math.floor(m.start.column+(m.end.column-m.start.column)/2)};this.renderer.alignCursor(E,.5)},y.prototype.getCursorPosition=function(){return this.selection.getCursor()},y.prototype.getCursorPositionScreen=function(){return this.session.documentToScreenPosition(this.getCursorPosition())},y.prototype.getSelectionRange=function(){return this.selection.getRange()},y.prototype.selectAll=function(){this.selection.selectAll()},y.prototype.clearSelection=function(){this.selection.clearSelection()},y.prototype.moveCursorTo=function(m,E){this.selection.moveCursorTo(m,E)},y.prototype.moveCursorToPosition=function(m){this.selection.moveCursorToPosition(m)},y.prototype.jumpToMatching=function(m,E){var I=this.getCursorPosition(),N=new $(this.session,I.row,I.column),W=N.getCurrentToken(),z=0;W&&W.type.indexOf("tag-name")!==-1&&(W=N.stepBackward());var U=W||N.stepForward();if(U){var j,q=!1,Y={},t0=I.column-U.start,n0,u0={")":"(","(":"(","]":"[","[":"[","{":"{","}":"{"};do{if(U.value.match(/[{}()\[\]]/g)){for(;t01?Y[U.value]++:W.value==="=0;--z)this.$tryReplace(I[z],m)&&N++;return this.selection.setSelectionRange(W),N},y.prototype.$tryReplace=function(m,E){var I=this.session.getTextRange(m);return E=this.$search.replace(I,E),E!==null?(m.end=this.session.replace(m,E),m):null},y.prototype.getLastSearchOptions=function(){return this.$search.getOptions()},y.prototype.find=function(m,E,I){E||(E={}),typeof m=="string"||m instanceof RegExp?E.needle=m:typeof m=="object"&&T.mixin(E,m);var N=this.selection.getRange();E.needle==null&&(m=this.session.getTextRange(N)||this.$search.$options.needle,m||(N=this.session.getWordRange(N.start.row,N.start.column),m=this.session.getTextRange(N)),this.$search.set({needle:m})),this.$search.set(E),E.start||this.$search.set({start:N});var W=this.$search.find(this.session);if(E.preventScroll)return W;if(W)return this.revealRange(W,I),W;E.backwards?N.start=N.end:N.end=N.start,this.selection.setRange(N)},y.prototype.findNext=function(m,E){this.find({skipCurrent:!0,backwards:!1},m,E)},y.prototype.findPrevious=function(m,E){this.find(m,{skipCurrent:!0,backwards:!0},E)},y.prototype.revealRange=function(m,E){this.session.unfold(m),this.selection.setSelectionRange(m);var I=this.renderer.scrollTop;this.renderer.scrollSelectionIntoView(m.start,m.end,.5),E!==!1&&this.renderer.animateScrolling(I)},y.prototype.undo=function(){this.session.getUndoManager().undo(this.session),this.renderer.scrollCursorIntoView(null,.5)},y.prototype.redo=function(){this.session.getUndoManager().redo(this.session),this.renderer.scrollCursorIntoView(null,.5)},y.prototype.destroy=function(){this.$toDestroy&&(this.$toDestroy.forEach(function(m){m.destroy()}),this.$toDestroy=null),this.$mouseHandler&&this.$mouseHandler.destroy(),this.renderer.destroy(),this._signal("destroy",this),this.session&&this.session.destroy(),this._$emitInputEvent&&this._$emitInputEvent.cancel(),this.removeAllListeners()},y.prototype.setAutoScrollEditorIntoView=function(m){if(m){var E,I=this,N=!1;this.$scrollAnchor||(this.$scrollAnchor=document.createElement("div"));var W=this.$scrollAnchor;W.style.cssText="position:absolute",this.container.insertBefore(W,this.container.firstChild);var z=this.on("changeSelection",function(){N=!0}),U=this.renderer.on("beforeRender",function(){N&&(E=I.renderer.container.getBoundingClientRect())}),j=this.renderer.on("afterRender",function(){if(N&&E&&(I.isFocused()||I.searchBox&&I.searchBox.isFocused())){var q=I.renderer,Y=q.$cursorLayer.$pixelPos,t0=q.layerConfig,n0=Y.top-t0.offset;Y.top>=0&&n0+E.top<0?N=!0:Y.topwindow.innerHeight?N=!1:N=null,N!=null&&(W.style.top=n0+"px",W.style.left=Y.left+"px",W.style.height=t0.lineHeight+"px",W.scrollIntoView(N)),N=E=null}});this.setAutoScrollEditorIntoView=function(q){q||(delete this.setAutoScrollEditorIntoView,this.off("changeSelection",z),this.renderer.off("afterRender",j),this.renderer.off("beforeRender",U))}}},y.prototype.$resetCursorStyle=function(){var m=this.$cursorStyle||"ace",E=this.renderer.$cursorLayer;E&&(E.setSmoothBlinking(/smooth/.test(m)),E.isBlinking=!this.$readOnly&&m!="wide",C.setCssClass(E.element,"ace_slim-cursors",/slim/.test(m)))},y.prototype.prompt=function(m,E,I){var N=this;b.loadModule("ace/ext/prompt",function(W){W.prompt(N,m,E,I)})},y}();k.$uid=0,k.prototype.curOp=null,k.prototype.prevOp={},k.prototype.$mergeableCommands=["backspace","del","insertstring"],k.prototype.$toggleWordPairs=[["first","last"],["true","false"],["yes","no"],["width","height"],["top","bottom"],["right","left"],["on","off"],["x","y"],["get","set"],["max","min"],["horizontal","vertical"],["show","hide"],["add","remove"],["up","down"],["before","after"],["even","odd"],["in","out"],["inside","outside"],["next","previous"],["increase","decrease"],["attach","detach"],["&&","||"],["==","!="]],T.implement(k.prototype,p),b.defineOptions(k.prototype,"editor",{selectionStyle:{set:function(y){this.onSelectionChange(),this._signal("changeSelectionStyle",{data:y})},initialValue:"line"},highlightActiveLine:{set:function(){this.$updateHighlightActiveLine()},initialValue:!0},highlightSelectedWord:{set:function(y){this.$onSelectionChange()},initialValue:!0},readOnly:{set:function(y){this.textInput.setReadOnly(y),this.$resetCursorStyle()},initialValue:!1},copyWithEmptySelection:{set:function(y){this.textInput.setCopyWithEmptySelection(y)},initialValue:!1},cursorStyle:{set:function(y){this.$resetCursorStyle()},values:["ace","slim","smooth","wide"],initialValue:"ace"},mergeUndoDeltas:{values:[!1,!0,"always"],initialValue:!0},behavioursEnabled:{initialValue:!0},wrapBehavioursEnabled:{initialValue:!0},enableAutoIndent:{initialValue:!0},autoScrollEditorIntoView:{set:function(y){this.setAutoScrollEditorIntoView(y)}},keyboardHandler:{set:function(y){this.setKeyboardHandler(y)},get:function(){return this.$keybindingId},handlesSet:!0},value:{set:function(y){this.session.setValue(y)},get:function(){return this.getValue()},handlesSet:!0,hidden:!0},session:{set:function(y){this.setSession(y)},get:function(){return this.session},handlesSet:!0,hidden:!0},showLineNumbers:{set:function(y){this.renderer.$gutterLayer.setShowLineNumbers(y),this.renderer.$loop.schedule(this.renderer.CHANGE_GUTTER),y&&this.$relativeLineNumbers?_.attach(this):_.detach(this)},initialValue:!0},relativeLineNumbers:{set:function(y){this.$showLineNumbers&&y?_.attach(this):_.detach(this)}},placeholder:{set:function(y){this.$updatePlaceholder||(this.$updatePlaceholder=function(){var m=this.session&&(this.renderer.$composition||this.session.getLength()>1||this.session.getLine(0).length>0);if(m&&this.renderer.placeholderNode)this.renderer.off("afterRender",this.$updatePlaceholder),C.removeCssClass(this.container,"ace_hasPlaceholder"),this.renderer.placeholderNode.remove(),this.renderer.placeholderNode=null;else if(!m&&!this.renderer.placeholderNode){this.renderer.on("afterRender",this.$updatePlaceholder),C.addCssClass(this.container,"ace_hasPlaceholder");var E=C.createElement("div");E.className="ace_placeholder",E.textContent=this.$placeholder||"",this.renderer.placeholderNode=E,this.renderer.content.appendChild(this.renderer.placeholderNode)}else!m&&this.renderer.placeholderNode&&(this.renderer.placeholderNode.textContent=this.$placeholder||"")}.bind(this),this.on("input",this.$updatePlaceholder)),this.$updatePlaceholder()}},enableKeyboardAccessibility:{set:function(y){var m={name:"blurTextInput",description:"Set focus to the editor content div to allow tabbing through the page",bindKey:"Esc",exec:function(N){N.blur(),N.renderer.scroller.focus()},readOnly:!0},E=function(N){if(N.target==this.renderer.scroller&&N.keyCode===B.enter){N.preventDefault();var W=this.getCursorPosition().row;this.isRowVisible(W)||this.scrollToLine(W,!0,!0),this.focus()}},I;y?(this.renderer.enableKeyboardAccessibility=!0,this.renderer.keyboardFocusClassName="ace_keyboard-focus",this.textInput.getElement().setAttribute("tabindex",-1),this.textInput.setNumberOfExtraLines(h.isWin?3:0),this.renderer.scroller.setAttribute("tabindex",0),this.renderer.scroller.setAttribute("role","group"),this.renderer.scroller.setAttribute("aria-roledescription",w("editor")),this.renderer.scroller.classList.add(this.renderer.keyboardFocusClassName),this.renderer.scroller.setAttribute("aria-label",w("Editor content, press Enter to start editing, press Escape to exit")),this.renderer.scroller.addEventListener("keyup",E.bind(this)),this.commands.addCommand(m),this.renderer.$gutter.setAttribute("tabindex",0),this.renderer.$gutter.setAttribute("aria-hidden",!1),this.renderer.$gutter.setAttribute("role","group"),this.renderer.$gutter.setAttribute("aria-roledescription",w("editor")),this.renderer.$gutter.setAttribute("aria-label",w("Editor gutter, press Enter to interact with controls using arrow keys, press Escape to exit")),this.renderer.$gutter.classList.add(this.renderer.keyboardFocusClassName),this.renderer.content.setAttribute("aria-hidden",!0),I||(I=new v(this)),I.addListener()):(this.renderer.enableKeyboardAccessibility=!1,this.textInput.getElement().setAttribute("tabindex",0),this.textInput.setNumberOfExtraLines(0),this.renderer.scroller.setAttribute("tabindex",-1),this.renderer.scroller.removeAttribute("role"),this.renderer.scroller.removeAttribute("aria-roledescription"),this.renderer.scroller.classList.remove(this.renderer.keyboardFocusClassName),this.renderer.scroller.removeAttribute("aria-label"),this.renderer.scroller.removeEventListener("keyup",E.bind(this)),this.commands.removeCommand(m),this.renderer.content.removeAttribute("aria-hidden"),this.renderer.$gutter.setAttribute("tabindex",-1),this.renderer.$gutter.setAttribute("aria-hidden",!0),this.renderer.$gutter.removeAttribute("role"),this.renderer.$gutter.removeAttribute("aria-roledescription"),this.renderer.$gutter.removeAttribute("aria-label"),this.renderer.$gutter.classList.remove(this.renderer.keyboardFocusClassName),I&&I.removeListener())},initialValue:!1},customScrollbar:"renderer",hScrollBarAlwaysVisible:"renderer",vScrollBarAlwaysVisible:"renderer",highlightGutterLine:"renderer",animatedScroll:"renderer",showInvisibles:"renderer",showPrintMargin:"renderer",printMarginColumn:"renderer",printMargin:"renderer",fadeFoldWidgets:"renderer",showFoldWidgets:"renderer",displayIndentGuides:"renderer",highlightIndentGuides:"renderer",showGutter:"renderer",fontSize:"renderer",fontFamily:"renderer",maxLines:"renderer",minLines:"renderer",scrollPastEnd:"renderer",fixedWidthGutter:"renderer",theme:"renderer",hasCssTransforms:"renderer",maxPixelHeight:"renderer",useTextareaForIME:"renderer",useResizeObserver:"renderer",useSvgGutterIcons:"renderer",showFoldedAnnotations:"renderer",scrollSpeed:"$mouseHandler",dragDelay:"$mouseHandler",dragEnabled:"$mouseHandler",focusTimeout:"$mouseHandler",tooltipFollowsMouse:"$mouseHandler",firstLineNumber:"session",overwrite:"session",newLineMode:"session",useWorker:"session",useSoftTabs:"session",navigateWithinSoftTabs:"session",tabSize:"session",wrap:"session",indentedSoftWrap:"session",foldStyle:"session",mode:"session"});var _={getText:function(y,m){return(Math.abs(y.selection.lead.row-m)||m+1+(m<9?"\xB7":""))+""},getWidth:function(y,m,E){return Math.max(m.toString().length,(E.lastRow+1).toString().length,2)*E.characterWidth},update:function(y,m){m.renderer.$loop.schedule(m.renderer.CHANGE_GUTTER)},attach:function(y){y.renderer.$gutterLayer.$renderer=this,y.on("changeSelection",this.update),this.update(null,y)},detach:function(y){y.renderer.$gutterLayer.$renderer==this&&(y.renderer.$gutterLayer.$renderer=null),y.off("changeSelection",this.update),this.update(null,y)}};M.Editor=k}),ace.define("ace/layer/lines",["require","exports","module","ace/lib/dom"],function(n,M,G){"use strict";var L=n("../lib/dom"),T=function(){function C(d,h){this.element=d,this.canvasHeight=h||5e5,this.element.style.height=this.canvasHeight*2+"px",this.cells=[],this.cellCache=[],this.$offsetCoefficient=0}return C.prototype.moveContainer=function(d){L.translate(this.element,0,-(d.firstRowScreen*d.lineHeight%this.canvasHeight)-d.offset*this.$offsetCoefficient)},C.prototype.pageChanged=function(d,h){return Math.floor(d.firstRowScreen*d.lineHeight/this.canvasHeight)!==Math.floor(h.firstRowScreen*h.lineHeight/this.canvasHeight)},C.prototype.computeLineTop=function(d,h,l){var o=h.firstRowScreen*h.lineHeight,s=Math.floor(o/this.canvasHeight),i=l.documentToScreenRow(d,0)*h.lineHeight;return i-s*this.canvasHeight},C.prototype.computeLineHeight=function(d,h,l){return h.lineHeight*l.getRowLineCount(d)},C.prototype.getLength=function(){return this.cells.length},C.prototype.get=function(d){return this.cells[d]},C.prototype.shift=function(){this.$cacheCell(this.cells.shift())},C.prototype.pop=function(){this.$cacheCell(this.cells.pop())},C.prototype.push=function(d){if(Array.isArray(d)){this.cells.push.apply(this.cells,d);for(var h=L.createFragment(this.element),l=0;lA&&(S=g.end.row+1,g=a.getNextFoldLine(S,g),A=g?g.start.row:1/0),S>p){for(;this.$lines.getLength()>$+1;)this.$lines.pop();break}b=this.$lines.get(++$),b?b.row=S:(b=this.$lines.createCell(S,r,this.session,s),this.$lines.push(b)),this.$renderCell(b,r,g,S),S++}this._signal("afterRender"),this.$updateGutterWidth(r)},i.prototype.$updateGutterWidth=function(r){var a=this.session,c=a.gutterRenderer||this.$renderer,p=a.$firstLineNumber,g=this.$lines.last()?this.$lines.last().text:"";(this.$fixedWidth||a.$useWrapMode)&&(g=a.getLength()+p-1);var A=c?c.getWidth(a,g,r):g.toString().length*r.characterWidth,b=this.$padding||this.$computePadding();A+=b.left+b.right,A!==this.gutterWidth&&!isNaN(A)&&(this.gutterWidth=A,this.element.parentNode.style.width=this.element.style.width=Math.ceil(this.gutterWidth)+"px",this._signal("changeGutterWidth",A))},i.prototype.$updateCursorRow=function(){if(this.$highlightGutterLine){var r=this.session.selection.getCursor();this.$cursorRow!==r.row&&(this.$cursorRow=r.row)}},i.prototype.updateLineHighlight=function(){if(this.$highlightGutterLine){var r=this.session.selection.cursor.row;if(this.$cursorRow=r,!(this.$cursorCell&&this.$cursorCell.row==r)){this.$cursorCell&&(this.$cursorCell.element.className=this.$cursorCell.element.className.replace("ace_gutter-active-line ",""));var a=this.$lines.cells;this.$cursorCell=null;for(var c=0;c=this.$cursorRow){if(p.row>this.$cursorRow){var g=this.session.getFoldLine(this.$cursorRow);if(c>0&&g&&g.start.row==a[c-1].row)p=a[c-1];else break}p.element.className="ace_gutter-active-line "+p.element.className,this.$cursorCell=p;break}}}}},i.prototype.scrollLines=function(r){var a=this.config;if(this.config=r,this.$updateCursorRow(),this.$lines.pageChanged(a,r))return this.update(r);this.$lines.moveContainer(r);var c=Math.min(r.lastRow+r.gutterOffset,this.session.getLength()-1),p=this.oldLastRow;if(this.oldLastRow=c,!a||p0;g--)this.$lines.shift();if(p>c)for(var g=this.session.getFoldedRowCount(c+1,p);g>0;g--)this.$lines.pop();r.firstRowp&&this.$lines.push(this.$renderLines(r,p+1,c)),this.updateLineHighlight(),this._signal("afterRender"),this.$updateGutterWidth(r)},i.prototype.$renderLines=function(r,a,c){for(var p=[],g=a,A=this.session.getNextFoldLine(g),b=A?A.start.row:1/0;g>b&&(g=A.end.row+1,A=this.session.getNextFoldLine(g,A),b=A?A.start.row:1/0),!(g>c);){var $=this.$lines.createCell(g,r,this.session,s);this.$renderCell($,r,A,g),p.push($),g++}return p},i.prototype.$renderCell=function(r,a,c,p){var g=r.element,A=this.session,b=g.childNodes[0],$=g.childNodes[1],S=g.childNodes[2],v=S.firstChild,w=A.$firstLineNumber,O=A.$breakpoints,B=A.$decorations,k=A.gutterRenderer||this.$renderer,_=this.$showFoldWidgets&&A.foldWidgets,y=c?c.start.row:Number.MAX_VALUE,m=a.lineHeight+"px",E=this.$useSvgGutterIcons?"ace_gutter-cell_svg-icons ":"ace_gutter-cell ",I=this.$useSvgGutterIcons?"ace_icon_svg":"ace_icon",N=(k?k.getText(A,p):p+w).toString();if(this.$highlightGutterLine&&(p==this.$cursorRow||c&&p=y&&this.$cursorRow<=c.end.row)&&(E+="ace_gutter-active-line ",this.$cursorCell!=r&&(this.$cursorCell&&(this.$cursorCell.element.className=this.$cursorCell.element.className.replace("ace_gutter-active-line ","")),this.$cursorCell=r)),O[p]&&(E+=O[p]),B[p]&&(E+=B[p]),this.$annotations[p]&&p!==y&&(E+=this.$annotations[p].className),_){var W=_[p];W==null&&(W=_[p]=A.getFoldWidget(p))}if(W){var z="ace_fold-widget ace_"+W,U=W=="start"&&p==y&&pc.right-a.right)return"foldWidgets"},i}();o.prototype.$fixedWidth=!1,o.prototype.$highlightGutterLine=!0,o.prototype.$renderer="",o.prototype.$showLineNumbers=!0,o.prototype.$showFoldWidgets=!0,T.implement(o.prototype,d);function s(i){var r=document.createTextNode("");i.appendChild(r);var a=L.createElement("span");i.appendChild(a);var c=L.createElement("span");i.appendChild(c);var p=L.createElement("span");return c.appendChild(p),i}M.Gutter=o}),ace.define("ace/layer/marker",["require","exports","module","ace/range","ace/lib/dom"],function(n,M,G){"use strict";var L=n("../range").Range,T=n("../lib/dom"),C=function(){function h(l){this.element=T.createElement("div"),this.element.className="ace_layer ace_marker-layer",l.appendChild(this.element)}return h.prototype.setPadding=function(l){this.$padding=l},h.prototype.setSession=function(l){this.session=l},h.prototype.setMarkers=function(l){this.markers=l},h.prototype.elt=function(l,o){var s=this.i!=-1&&this.element.childNodes[this.i];s?this.i++:(s=document.createElement("div"),this.element.appendChild(s),this.i=-1),s.style.cssText=o,s.className=l},h.prototype.update=function(l){if(l){this.config=l,this.i=0;var o;for(var s in this.markers){var i=this.markers[s];if(!i.range){i.update(o,this,this.session,l);continue}var r=i.range.clipRows(l.firstRow,l.lastRow);if(!r.isEmpty())if(r=r.toScreenRange(this.session),i.renderer){var a=this.$getTop(r.start.row,l),c=this.$padding+r.start.column*l.characterWidth;i.renderer(o,r,c,a,l)}else i.type=="fullLine"?this.drawFullLineMarker(o,r,i.clazz,l):i.type=="screenLine"?this.drawScreenLineMarker(o,r,i.clazz,l):r.isMultiLine()?i.type=="text"?this.drawTextMarker(o,r,i.clazz,l):this.drawMultiLineMarker(o,r,i.clazz,l):this.drawSingleLineMarker(o,r,i.clazz+" ace_start ace_br15",l)}if(this.i!=-1)for(;this.i$,g==p),i,g==p?0:1,r)},h.prototype.drawMultiLineMarker=function(l,o,s,i,r){var a=this.$padding,c=i.lineHeight,p=this.$getTop(o.start.row,i),g=a+o.start.column*i.characterWidth;if(r=r||"",this.session.$bidiHandler.isBidiRow(o.start.row)){var A=o.clone();A.end.row=A.start.row,A.end.column=this.session.getLine(A.start.row).length,this.drawBidiSingleLineMarker(l,A,s+" ace_br1 ace_start",i,null,r)}else this.elt(s+" ace_br1 ace_start","height:"+c+"px;right:0;top:"+p+"px;left:"+g+"px;"+(r||""));if(this.session.$bidiHandler.isBidiRow(o.end.row)){var A=o.clone();A.start.row=A.end.row,A.start.column=0,this.drawBidiSingleLineMarker(l,A,s+" ace_br12",i,null,r)}else{p=this.$getTop(o.end.row,i);var b=o.end.column*i.characterWidth;this.elt(s+" ace_br12","height:"+c+"px;width:"+b+"px;top:"+p+"px;left:"+a+"px;"+(r||""))}if(c=(o.end.row-o.start.row-1)*i.lineHeight,!(c<=0)){p=this.$getTop(o.start.row+1,i);var $=(o.start.column?1:0)|(o.end.column?0:8);this.elt(s+($?" ace_br"+$:""),"height:"+c+"px;right:0;top:"+p+"px;left:"+a+"px;"+(r||""))}},h.prototype.drawSingleLineMarker=function(l,o,s,i,r,a){if(this.session.$bidiHandler.isBidiRow(o.start.row))return this.drawBidiSingleLineMarker(l,o,s,i,r,a);var c=i.lineHeight,p=(o.end.column+(r||0)-o.start.column)*i.characterWidth,g=this.$getTop(o.start.row,i),A=this.$padding+o.start.column*i.characterWidth;this.elt(s,"height:"+c+"px;width:"+p+"px;top:"+g+"px;left:"+A+"px;"+(a||""))},h.prototype.drawBidiSingleLineMarker=function(l,o,s,i,r,a){var c=i.lineHeight,p=this.$getTop(o.start.row,i),g=this.$padding,A=this.session.$bidiHandler.getSelections(o.start.column,o.end.column);A.forEach(function(b){this.elt(s,"height:"+c+"px;width:"+(b.width+(r||0))+"px;top:"+p+"px;left:"+(g+b.left)+"px;"+(a||""))},this)},h.prototype.drawFullLineMarker=function(l,o,s,i,r){var a=this.$getTop(o.start.row,i),c=i.lineHeight;o.start.row!=o.end.row&&(c+=this.$getTop(o.end.row,i)-a),this.elt(s,"height:"+c+"px;top:"+a+"px;left:0;right:0;"+(r||""))},h.prototype.drawScreenLineMarker=function(l,o,s,i,r){var a=this.$getTop(o.start.row,i),c=i.lineHeight;this.elt(s,"height:"+c+"px;top:"+a+"px;left:0;right:0;"+(r||""))},h}();C.prototype.$padding=0;function d(h,l,o,s){return(h?1:0)|(l?2:0)|(o?4:0)|(s?8:0)}M.Marker=C}),ace.define("ace/layer/text_util",["require","exports","module"],function(n,M,G){var L=new Set(["text","rparen","lparen"]);M.isTextToken=function(T){return L.has(T)}}),ace.define("ace/layer/text",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/layer/lines","ace/lib/event_emitter","ace/config","ace/layer/text_util"],function(n,M,G){"use strict";var L=n("../lib/oop"),T=n("../lib/dom"),C=n("../lib/lang"),d=n("./lines").Lines,h=n("../lib/event_emitter").EventEmitter,l=n("../config").nls,o=n("./text_util").isTextToken,s=function(){function i(r){this.dom=T,this.element=this.dom.createElement("div"),this.element.className="ace_layer ace_text-layer",r.appendChild(this.element),this.$updateEolChar=this.$updateEolChar.bind(this),this.$lines=new d(this.element)}return i.prototype.$updateEolChar=function(){var r=this.session.doc,a=r.getNewLineCharacter()==` -`&&r.getNewLineMode()!="windows",c=a?this.EOL_CHAR_LF:this.EOL_CHAR_CRLF;if(this.EOL_CHAR!=c)return this.EOL_CHAR=c,!0},i.prototype.setPadding=function(r){this.$padding=r,this.element.style.margin="0 "+r+"px"},i.prototype.getLineHeight=function(){return this.$fontMetrics.$characterSize.height||0},i.prototype.getCharacterWidth=function(){return this.$fontMetrics.$characterSize.width||0},i.prototype.$setFontMetrics=function(r){this.$fontMetrics=r,this.$fontMetrics.on("changeCharacterSize",function(a){this._signal("changeCharacterSize",a)}.bind(this)),this.$pollSizeChanges()},i.prototype.checkForSizeChanges=function(){this.$fontMetrics.checkForSizeChanges()},i.prototype.$pollSizeChanges=function(){return this.$pollSizeChangesTimer=this.$fontMetrics.$pollSizeChanges()},i.prototype.setSession=function(r){this.session=r,r&&this.$computeTabString()},i.prototype.setShowInvisibles=function(r){return this.showInvisibles==r?!1:(this.showInvisibles=r,typeof r=="string"?(this.showSpaces=/tab/i.test(r),this.showTabs=/space/i.test(r),this.showEOL=/eol/i.test(r)):this.showSpaces=this.showTabs=this.showEOL=r,this.$computeTabString(),!0)},i.prototype.setDisplayIndentGuides=function(r){return this.displayIndentGuides==r?!1:(this.displayIndentGuides=r,this.$computeTabString(),!0)},i.prototype.setHighlightIndentGuides=function(r){return this.$highlightIndentGuides===r?!1:(this.$highlightIndentGuides=r,r)},i.prototype.$computeTabString=function(){var r=this.session.getTabSize();this.tabSize=r;for(var a=this.$tabStrings=[0],c=1;cw&&(S=v.end.row+1,v=this.session.getNextFoldLine(S,v),w=v?v.start.row:1/0),!(S>g);){var O=A[b++];if(O){this.dom.removeChildren(O),this.$renderLine(O,S,S==w?v:!1),$&&(O.style.top=this.$lines.computeLineTop(S,r,this.session)+"px");var B=r.lineHeight*this.session.getRowLength(S)+"px";O.style.height!=B&&($=!0,O.style.height=B)}S++}if($)for(;b0;g--)this.$lines.shift();if(a.lastRow>r.lastRow)for(var g=this.session.getFoldedRowCount(r.lastRow+1,a.lastRow);g>0;g--)this.$lines.pop();r.firstRowa.lastRow&&this.$lines.push(this.$renderLinesFragment(r,a.lastRow+1,r.lastRow)),this.$highlightIndentGuide()},i.prototype.$renderLinesFragment=function(r,a,c){for(var p=[],g=a,A=this.session.getNextFoldLine(g),b=A?A.start.row:1/0;g>b&&(g=A.end.row+1,A=this.session.getNextFoldLine(g,A),b=A?A.start.row:1/0),!(g>c);){var $=this.$lines.createCell(g,r,this.session),S=$.element;this.dom.removeChildren(S),T.setStyle(S.style,"height",this.$lines.computeLineHeight(g,r,this.session)+"px"),T.setStyle(S.style,"top",this.$lines.computeLineTop(g,r,this.session)+"px"),this.$renderLine(S,g,g==b?A:!1),this.$useLineGroups()?S.className="ace_line_group":S.className="ace_line",p.push($),g++}return p},i.prototype.update=function(r){this.$lines.moveContainer(r),this.config=r;for(var a=r.firstRow,c=r.lastRow,p=this.$lines;p.getLength();)p.pop();p.push(this.$renderLinesFragment(r,a,c))},i.prototype.$renderToken=function(r,a,c,p){for(var g=this,A=/(\t)|( +)|([\x00-\x1f\x80-\xa0\xad\u1680\u180E\u2000-\u200f\u2028\u2029\u202F\u205F\uFEFF\uFFF9-\uFFFC\u2066\u2067\u2068\u202A\u202B\u202D\u202E\u202C\u2069]+)|(\u3000)|([\u1100-\u115F\u11A3-\u11A7\u11FA-\u11FF\u2329-\u232A\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u2FF0-\u2FFB\u3001-\u303E\u3041-\u3096\u3099-\u30FF\u3105-\u312D\u3131-\u318E\u3190-\u31BA\u31C0-\u31E3\u31F0-\u321E\u3220-\u3247\u3250-\u32FE\u3300-\u4DBF\u4E00-\uA48C\uA490-\uA4C6\uA960-\uA97C\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFAFF\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE66\uFE68-\uFE6B\uFF01-\uFF60\uFFE0-\uFFE6]|[\uD800-\uDBFF][\uDC00-\uDFFF])/g,b=this.dom.createFragment(this.element),$,S=0;$=A.exec(p);){var v=$[1],w=$[2],O=$[3],B=$[4],k=$[5];if(!(!g.showSpaces&&w)){var _=S!=$.index?p.slice(S,$.index):"";if(S=$.index+$[0].length,_&&b.appendChild(this.dom.createTextNode(_,this.element)),v){var y=g.session.getScreenTabSize(a+$.index);b.appendChild(g.$tabStrings[y].cloneNode(!0)),a+=y-1}else if(w)if(g.showSpaces){var m=this.dom.createElement("span");m.className="ace_invisible ace_invisible_space",m.textContent=C.stringRepeat(g.SPACE_CHAR,w.length),b.appendChild(m)}else b.appendChild(this.dom.createTextNode(w,this.element));else if(O){var m=this.dom.createElement("span");m.className="ace_invisible ace_invisible_space ace_invalid",m.textContent=C.stringRepeat(g.SPACE_CHAR,O.length),b.appendChild(m)}else if(B){a+=1;var m=this.dom.createElement("span");m.style.width=g.config.characterWidth*2+"px",m.className=g.showSpaces?"ace_cjk ace_invisible ace_invisible_space":"ace_cjk",m.textContent=g.showSpaces?g.SPACE_CHAR:B,b.appendChild(m)}else if(k){a+=1;var m=this.dom.createElement("span");m.style.width=g.config.characterWidth*2+"px",m.className="ace_cjk",m.textContent=k,b.appendChild(m)}}}if(b.appendChild(this.dom.createTextNode(S?p.slice(S):p,this.element)),o(c.type))r.appendChild(b);else{var E="ace_"+c.type.replace(/\./g," ace_"),m=this.dom.createElement("span");c.type=="fold"&&(m.style.width=c.value.length*this.config.characterWidth+"px",m.setAttribute("title",l("Unfold code"))),m.className=E,m.appendChild(b),r.appendChild(m)}return a+p.length},i.prototype.renderIndentGuide=function(r,a,c){var p=a.search(this.$indentGuideRe);if(p<=0||p>=c)return a;if(a[0]==" "){p-=p%this.tabSize;for(var g=p/this.tabSize,A=0;AA[b].start.row?this.$highlightIndentGuideMarker.dir=-1:this.$highlightIndentGuideMarker.dir=1;break}}if(!this.$highlightIndentGuideMarker.end&&r[a.row]!==""&&a.column===r[a.row].length){this.$highlightIndentGuideMarker.dir=1;for(var b=a.row+1;b0){for(var g=0;g=this.$highlightIndentGuideMarker.start+1){if(p.row>=this.$highlightIndentGuideMarker.end)break;this.$setIndentGuideActive(p,a)}}else for(var c=r.length-1;c>=0;c--){var p=r[c];if(this.$highlightIndentGuideMarker.end&&p.row=A;)b=this.$renderToken($,b,v,w.substring(0,A-p)),w=w.substring(A-p),p=A,$=this.$createLineElement(),r.appendChild($),$.appendChild(this.dom.createTextNode(C.stringRepeat("\xA0",c.indent),this.element)),g++,b=0,A=c[g]||Number.MAX_VALUE;w.length!=0&&(p+=w.length,b=this.$renderToken($,b,v,w))}}c[c.length-1]>this.MAX_LINE_LENGTH&&this.$renderOverflowMessage($,b,null,"",!0)},i.prototype.$renderSimpleLine=function(r,a){for(var c=0,p=0;pthis.MAX_LINE_LENGTH)return this.$renderOverflowMessage(r,c,g,A);c=this.$renderToken(r,c,g,A)}}},i.prototype.$renderOverflowMessage=function(r,a,c,p,g){c&&this.$renderToken(r,a,c,p.slice(0,this.MAX_LINE_LENGTH-a));var A=this.dom.createElement("span");A.className="ace_inline_button ace_keyword ace_toggle_wrap",A.textContent=g?"":"",r.appendChild(A)},i.prototype.$renderLine=function(r,a,c){if(!c&&c!=!1&&(c=this.session.getFoldLine(a)),c)var p=this.$getFoldLineTokens(a,c);else var p=this.session.getTokens(a);var g=r;if(p.length){var A=this.session.getRowSplitData(a);if(A&&A.length){this.$renderWrappedLine(r,p,A);var g=r.lastChild}else{var g=r;this.$useLineGroups()&&(g=this.$createLineElement(),r.appendChild(g)),this.$renderSimpleLine(g,p)}}else this.$useLineGroups()&&(g=this.$createLineElement(),r.appendChild(g));if(this.showEOL&&g){c&&(a=c.end.row);var b=this.dom.createElement("span");b.className="ace_invisible ace_invisible_eol",b.textContent=a==this.session.getLength()-1?this.EOF_CHAR:this.EOL_CHAR,g.appendChild(b)}},i.prototype.$getFoldLineTokens=function(r,a){var c=this.session,p=[];function g(b,$,S){for(var v=0,w=0;w+b[v].value.length<$;)if(w+=b[v].value.length,v++,v==b.length)return;if(w!=$){var O=b[v].value.substring($-w);O.length>S-$&&(O=O.substring(0,S-$)),p.push({type:b[v].type,value:O}),w=$+O.length,v+=1}for(;wS?p.push({type:b[v].type,value:O.substring(0,S-w)}):p.push(b[v]),w+=O.length,v+=1}}var A=c.getTokens(r);return a.walk(function(b,$,S,v,w){b!=null?p.push({type:"fold",value:b}):(w&&(A=c.getTokens($)),A.length&&g(A,v,S))},a.end.row,this.session.getLine(a.end.row).length),p},i.prototype.$useLineGroups=function(){return this.session.getUseWrapMode()},i}();s.prototype.EOF_CHAR="\xB6",s.prototype.EOL_CHAR_LF="\xAC",s.prototype.EOL_CHAR_CRLF="\xA4",s.prototype.EOL_CHAR=s.prototype.EOL_CHAR_LF,s.prototype.TAB_CHAR="\u2014",s.prototype.SPACE_CHAR="\xB7",s.prototype.$padding=0,s.prototype.MAX_LINE_LENGTH=1e4,s.prototype.showInvisibles=!1,s.prototype.showSpaces=!1,s.prototype.showTabs=!1,s.prototype.showEOL=!1,s.prototype.displayIndentGuides=!0,s.prototype.$highlightIndentGuides=!0,s.prototype.$tabStrings=[],s.prototype.destroy={},s.prototype.onChangeTabSize=s.prototype.$computeTabString,L.implement(s.prototype,h),M.Text=s}),ace.define("ace/layer/cursor",["require","exports","module","ace/lib/dom"],function(n,M,G){"use strict";var L=n("../lib/dom"),T=function(){function C(d){this.element=L.createElement("div"),this.element.className="ace_layer ace_cursor-layer",d.appendChild(this.element),this.isVisible=!1,this.isBlinking=!0,this.blinkInterval=1e3,this.smoothBlinking=!1,this.cursors=[],this.cursor=this.addCursor(),L.addCssClass(this.element,"ace_hidden-cursors"),this.$updateCursors=this.$updateOpacity.bind(this)}return C.prototype.$updateOpacity=function(d){for(var h=this.cursors,l=h.length;l--;)L.setStyle(h[l].style,"opacity",d?"":"0")},C.prototype.$startCssAnimation=function(){for(var d=this.cursors,h=d.length;h--;)d[h].style.animationDuration=this.blinkInterval+"ms";this.$isAnimating=!0,setTimeout(function(){this.$isAnimating&&L.addCssClass(this.element,"ace_animate-blinking")}.bind(this))},C.prototype.$stopCssAnimation=function(){this.$isAnimating=!1,L.removeCssClass(this.element,"ace_animate-blinking")},C.prototype.setPadding=function(d){this.$padding=d},C.prototype.setSession=function(d){this.session=d},C.prototype.setBlinking=function(d){d!=this.isBlinking&&(this.isBlinking=d,this.restartTimer())},C.prototype.setBlinkInterval=function(d){d!=this.blinkInterval&&(this.blinkInterval=d,this.restartTimer())},C.prototype.setSmoothBlinking=function(d){d!=this.smoothBlinking&&(this.smoothBlinking=d,L.setCssClass(this.element,"ace_smooth-blinking",d),this.$updateCursors(!0),this.restartTimer())},C.prototype.addCursor=function(){var d=L.createElement("div");return d.className="ace_cursor",this.element.appendChild(d),this.cursors.push(d),d},C.prototype.removeCursor=function(){if(this.cursors.length>1){var d=this.cursors.pop();return d.parentNode.removeChild(d),d}},C.prototype.hideCursor=function(){this.isVisible=!1,L.addCssClass(this.element,"ace_hidden-cursors"),this.restartTimer()},C.prototype.showCursor=function(){this.isVisible=!0,L.removeCssClass(this.element,"ace_hidden-cursors"),this.restartTimer()},C.prototype.restartTimer=function(){var d=this.$updateCursors;if(clearInterval(this.intervalId),clearTimeout(this.timeoutId),this.$stopCssAnimation(),this.smoothBlinking&&(this.$isSmoothBlinking=!1,L.removeCssClass(this.element,"ace_smooth-blinking")),d(!0),!this.isBlinking||!this.blinkInterval||!this.isVisible){this.$stopCssAnimation();return}if(this.smoothBlinking&&(this.$isSmoothBlinking=!0,setTimeout(function(){this.$isSmoothBlinking&&L.addCssClass(this.element,"ace_smooth-blinking")}.bind(this))),L.HAS_CSS_ANIMATION)this.$startCssAnimation();else{var h=function(){this.timeoutId=setTimeout(function(){d(!1)},.6*this.blinkInterval)}.bind(this);this.intervalId=setInterval(function(){d(!0),h()},this.blinkInterval),h()}},C.prototype.getPixelPosition=function(d,h){if(!this.config||!this.session)return{left:0,top:0};d||(d=this.session.selection.getCursor());var l=this.session.documentToScreenPosition(d),o=this.$padding+(this.session.$bidiHandler.isBidiRow(l.row,d.row)?this.session.$bidiHandler.getPosLeft(l.column):l.column*this.config.characterWidth),s=(l.row-(h?this.config.firstRowScreen:0))*this.config.lineHeight;return{left:o,top:s}},C.prototype.isCursorInView=function(d,h){return d.top>=0&&d.topd.height+d.offset||i.top<0)&&l>1)){var r=this.cursors[o++]||this.addCursor(),a=r.style;this.drawCursor?this.drawCursor(r,i,d,h[l],this.session):this.isCursorInView(i,d)?(L.setStyle(a,"display","block"),L.translate(r,i.left,i.top),L.setStyle(a,"width",Math.round(d.characterWidth)+"px"),L.setStyle(a,"height",d.lineHeight+"px")):L.setStyle(a,"display","none")}}for(;this.cursors.length>o;)this.removeCursor();var c=this.session.getOverwrite();this.$setOverwrite(c),this.$pixelPos=i,this.restartTimer()},C.prototype.$setOverwrite=function(d){d!=this.overwrite&&(this.overwrite=d,d?L.addCssClass(this.element,"ace_overwrite-cursors"):L.removeCssClass(this.element,"ace_overwrite-cursors"))},C.prototype.destroy=function(){clearInterval(this.intervalId),clearTimeout(this.timeoutId)},C}();T.prototype.$padding=0,T.prototype.drawCursor=null,M.Cursor=T}),ace.define("ace/scrollbar",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/event","ace/lib/event_emitter"],function(n,M,G){"use strict";var L=this&&this.__extends||function(){var r=function(a,c){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(p,g){p.__proto__=g}||function(p,g){for(var A in g)Object.prototype.hasOwnProperty.call(g,A)&&(p[A]=g[A])},r(a,c)};return function(a,c){if(typeof c!="function"&&c!==null)throw new TypeError("Class extends value "+String(c)+" is not a constructor or null");r(a,c);function p(){this.constructor=a}a.prototype=c===null?Object.create(c):(p.prototype=c.prototype,new p)}}(),T=n("./lib/oop"),C=n("./lib/dom"),d=n("./lib/event"),h=n("./lib/event_emitter").EventEmitter,l=32768,o=function(){function r(a,c){this.element=C.createElement("div"),this.element.className="ace_scrollbar ace_scrollbar"+c,this.inner=C.createElement("div"),this.inner.className="ace_scrollbar-inner",this.inner.textContent="\xA0",this.element.appendChild(this.inner),a.appendChild(this.element),this.setVisible(!1),this.skipEvent=!1,d.addListener(this.element,"scroll",this.onScroll.bind(this)),d.addListener(this.element,"mousedown",d.preventDefault)}return r.prototype.setVisible=function(a){this.element.style.display=a?"":"none",this.isVisible=a,this.coeff=1},r}();T.implement(o.prototype,h);var s=function(r){L(a,r);function a(c,p){var g=r.call(this,c,"-v")||this;return g.scrollTop=0,g.scrollHeight=0,p.$scrollbarWidth=g.width=C.scrollbarWidth(c.ownerDocument),g.inner.style.width=g.element.style.width=(g.width||15)+5+"px",g.$minWidth=0,g}return a.prototype.onScroll=function(){if(!this.skipEvent){if(this.scrollTop=this.element.scrollTop,this.coeff!=1){var c=this.element.clientHeight/this.scrollHeight;this.scrollTop=this.scrollTop*(1-c)/(this.coeff-c)}this._emit("scroll",{data:this.scrollTop})}this.skipEvent=!1},a.prototype.getWidth=function(){return Math.max(this.isVisible?this.width:0,this.$minWidth||0)},a.prototype.setHeight=function(c){this.element.style.height=c+"px"},a.prototype.setScrollHeight=function(c){this.scrollHeight=c,c>l?(this.coeff=l/c,c=l):this.coeff!=1&&(this.coeff=1),this.inner.style.height=c+"px"},a.prototype.setScrollTop=function(c){this.scrollTop!=c&&(this.skipEvent=!0,this.scrollTop=c,this.element.scrollTop=c*this.coeff)},a}(o);s.prototype.setInnerHeight=s.prototype.setScrollHeight;var i=function(r){L(a,r);function a(c,p){var g=r.call(this,c,"-h")||this;return g.scrollLeft=0,g.height=p.$scrollbarWidth,g.inner.style.height=g.element.style.height=(g.height||15)+5+"px",g}return a.prototype.onScroll=function(){this.skipEvent||(this.scrollLeft=this.element.scrollLeft,this._emit("scroll",{data:this.scrollLeft})),this.skipEvent=!1},a.prototype.getHeight=function(){return this.isVisible?this.height:0},a.prototype.setWidth=function(c){this.element.style.width=c+"px"},a.prototype.setInnerWidth=function(c){this.inner.style.width=c+"px"},a.prototype.setScrollWidth=function(c){this.inner.style.width=c+"px"},a.prototype.setScrollLeft=function(c){this.scrollLeft!=c&&(this.skipEvent=!0,this.scrollLeft=this.element.scrollLeft=c)},a}(o);M.ScrollBar=s,M.ScrollBarV=s,M.ScrollBarH=i,M.VScrollBar=s,M.HScrollBar=i}),ace.define("ace/scrollbar_custom",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/event","ace/lib/event_emitter"],function(n,M,G){"use strict";var L=this&&this.__extends||function(){var i=function(r,a){return i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(c,p){c.__proto__=p}||function(c,p){for(var g in p)Object.prototype.hasOwnProperty.call(p,g)&&(c[g]=p[g])},i(r,a)};return function(r,a){if(typeof a!="function"&&a!==null)throw new TypeError("Class extends value "+String(a)+" is not a constructor or null");i(r,a);function c(){this.constructor=r}r.prototype=a===null?Object.create(a):(c.prototype=a.prototype,new c)}}(),T=n("./lib/oop"),C=n("./lib/dom"),d=n("./lib/event"),h=n("./lib/event_emitter").EventEmitter;C.importCssString(`.ace_editor>.ace_sb-v div, .ace_editor>.ace_sb-h div{ - position: absolute; - background: rgba(128, 128, 128, 0.6); - -moz-box-sizing: border-box; - box-sizing: border-box; - border: 1px solid #bbb; - border-radius: 2px; - z-index: 8; -} -.ace_editor>.ace_sb-v, .ace_editor>.ace_sb-h { - position: absolute; - z-index: 6; - background: none; - overflow: hidden!important; -} -.ace_editor>.ace_sb-v { - z-index: 6; - right: 0; - top: 0; - width: 12px; -} -.ace_editor>.ace_sb-v div { - z-index: 8; - right: 0; - width: 100%; -} -.ace_editor>.ace_sb-h { - bottom: 0; - left: 0; - height: 12px; -} -.ace_editor>.ace_sb-h div { - bottom: 0; - height: 100%; -} -.ace_editor>.ace_sb_grabbed { - z-index: 8; - background: #000; -}`,"ace_scrollbar.css",!1);var l=function(){function i(r,a){this.element=C.createElement("div"),this.element.className="ace_sb"+a,this.inner=C.createElement("div"),this.inner.className="",this.element.appendChild(this.inner),this.VScrollWidth=12,this.HScrollHeight=12,r.appendChild(this.element),this.setVisible(!1),this.skipEvent=!1,d.addMultiMouseDownListener(this.element,[500,300,300],this,"onMouseDown")}return i.prototype.setVisible=function(r){this.element.style.display=r?"":"none",this.isVisible=r,this.coeff=1},i}();T.implement(l.prototype,h);var o=function(i){L(r,i);function r(a,c){var p=i.call(this,a,"-v")||this;return p.scrollTop=0,p.scrollHeight=0,p.parent=a,p.width=p.VScrollWidth,p.renderer=c,p.inner.style.width=p.element.style.width=(p.width||15)+"px",p.$minWidth=0,p}return r.prototype.onMouseDown=function(a,c){if(a==="mousedown"&&!(d.getButton(c)!==0||c.detail===2)){if(c.target===this.inner){var p=this,g=c.clientY,A=function(B){g=B.clientY},b=function(){clearInterval(w)},$=c.clientY,S=this.thumbTop,v=function(){if(g!==void 0){var B=p.scrollTopFromThumbTop(S+g-$);B!==p.scrollTop&&p._emit("scroll",{data:B})}};d.capture(this.inner,A,b);var w=setInterval(v,20);return d.preventDefault(c)}var O=c.clientY-this.element.getBoundingClientRect().top-this.thumbHeight/2;return this._emit("scroll",{data:this.scrollTopFromThumbTop(O)}),d.preventDefault(c)}},r.prototype.getHeight=function(){return this.height},r.prototype.scrollTopFromThumbTop=function(a){var c=a*(this.pageHeight-this.viewHeight)/(this.slideHeight-this.thumbHeight);return c=c>>0,c<0?c=0:c>this.pageHeight-this.viewHeight&&(c=this.pageHeight-this.viewHeight),c},r.prototype.getWidth=function(){return Math.max(this.isVisible?this.width:0,this.$minWidth||0)},r.prototype.setHeight=function(a){this.height=Math.max(0,a),this.slideHeight=this.height,this.viewHeight=this.height,this.setScrollHeight(this.pageHeight,!0)},r.prototype.setScrollHeight=function(a,c){this.pageHeight===a&&!c||(this.pageHeight=a,this.thumbHeight=this.slideHeight*this.viewHeight/this.pageHeight,this.thumbHeight>this.slideHeight&&(this.thumbHeight=this.slideHeight),this.thumbHeight<15&&(this.thumbHeight=15),this.inner.style.height=this.thumbHeight+"px",this.scrollTop>this.pageHeight-this.viewHeight&&(this.scrollTop=this.pageHeight-this.viewHeight,this.scrollTop<0&&(this.scrollTop=0),this._emit("scroll",{data:this.scrollTop})))},r.prototype.setScrollTop=function(a){this.scrollTop=a,a<0&&(a=0),this.thumbTop=a*(this.slideHeight-this.thumbHeight)/(this.pageHeight-this.viewHeight),this.inner.style.top=this.thumbTop+"px"},r}(l);o.prototype.setInnerHeight=o.prototype.setScrollHeight;var s=function(i){L(r,i);function r(a,c){var p=i.call(this,a,"-h")||this;return p.scrollLeft=0,p.scrollWidth=0,p.height=p.HScrollHeight,p.inner.style.height=p.element.style.height=(p.height||12)+"px",p.renderer=c,p}return r.prototype.onMouseDown=function(a,c){if(a==="mousedown"&&!(d.getButton(c)!==0||c.detail===2)){if(c.target===this.inner){var p=this,g=c.clientX,A=function(B){g=B.clientX},b=function(){clearInterval(w)},$=c.clientX,S=this.thumbLeft,v=function(){if(g!==void 0){var B=p.scrollLeftFromThumbLeft(S+g-$);B!==p.scrollLeft&&p._emit("scroll",{data:B})}};d.capture(this.inner,A,b);var w=setInterval(v,20);return d.preventDefault(c)}var O=c.clientX-this.element.getBoundingClientRect().left-this.thumbWidth/2;return this._emit("scroll",{data:this.scrollLeftFromThumbLeft(O)}),d.preventDefault(c)}},r.prototype.getHeight=function(){return this.isVisible?this.height:0},r.prototype.scrollLeftFromThumbLeft=function(a){var c=a*(this.pageWidth-this.viewWidth)/(this.slideWidth-this.thumbWidth);return c=c>>0,c<0?c=0:c>this.pageWidth-this.viewWidth&&(c=this.pageWidth-this.viewWidth),c},r.prototype.setWidth=function(a){this.width=Math.max(0,a),this.element.style.width=this.width+"px",this.slideWidth=this.width,this.viewWidth=this.width,this.setScrollWidth(this.pageWidth,!0)},r.prototype.setScrollWidth=function(a,c){this.pageWidth===a&&!c||(this.pageWidth=a,this.thumbWidth=this.slideWidth*this.viewWidth/this.pageWidth,this.thumbWidth>this.slideWidth&&(this.thumbWidth=this.slideWidth),this.thumbWidth<15&&(this.thumbWidth=15),this.inner.style.width=this.thumbWidth+"px",this.scrollLeft>this.pageWidth-this.viewWidth&&(this.scrollLeft=this.pageWidth-this.viewWidth,this.scrollLeft<0&&(this.scrollLeft=0),this._emit("scroll",{data:this.scrollLeft})))},r.prototype.setScrollLeft=function(a){this.scrollLeft=a,a<0&&(a=0),this.thumbLeft=a*(this.slideWidth-this.thumbWidth)/(this.pageWidth-this.viewWidth),this.inner.style.left=this.thumbLeft+"px"},r}(l);s.prototype.setInnerWidth=s.prototype.setScrollWidth,M.ScrollBar=o,M.ScrollBarV=o,M.ScrollBarH=s,M.VScrollBar=o,M.HScrollBar=s}),ace.define("ace/renderloop",["require","exports","module","ace/lib/event"],function(n,M,G){"use strict";var L=n("./lib/event"),T=function(){function C(d,h){this.onRender=d,this.pending=!1,this.changes=0,this.$recursionLimit=2,this.window=h||window;var l=this;this._flush=function(o){l.pending=!1;var s=l.changes;if(s&&(L.blockIdle(100),l.changes=0,l.onRender(s)),l.changes){if(l.$recursionLimit--<0)return;l.schedule()}else l.$recursionLimit=2}}return C.prototype.schedule=function(d){this.changes=this.changes|d,this.changes&&!this.pending&&(L.nextFrame(this._flush),this.pending=!0)},C.prototype.clear=function(d){var h=this.changes;return this.changes=0,h},C}();M.RenderLoop=T}),ace.define("ace/layer/font_metrics",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/lib/event","ace/lib/useragent","ace/lib/event_emitter"],function(n,M,G){var L=n("../lib/oop"),T=n("../lib/dom"),C=n("../lib/lang"),d=n("../lib/event"),h=n("../lib/useragent"),l=n("../lib/event_emitter").EventEmitter,o=512,s=typeof ResizeObserver=="function",i=200,r=function(){function a(c){this.el=T.createElement("div"),this.$setMeasureNodeStyles(this.el.style,!0),this.$main=T.createElement("div"),this.$setMeasureNodeStyles(this.$main.style),this.$measureNode=T.createElement("div"),this.$setMeasureNodeStyles(this.$measureNode.style),this.el.appendChild(this.$main),this.el.appendChild(this.$measureNode),c.appendChild(this.el),this.$measureNode.textContent=C.stringRepeat("X",o),this.$characterSize={width:0,height:0},s?this.$addObserver():this.checkForSizeChanges()}return a.prototype.$setMeasureNodeStyles=function(c,p){c.width=c.height="auto",c.left=c.top="0px",c.visibility="hidden",c.position="absolute",c.whiteSpace="pre",h.isIE<8?c["font-family"]="inherit":c.font="inherit",c.overflow=p?"hidden":"visible"},a.prototype.checkForSizeChanges=function(c){if(c===void 0&&(c=this.$measureSizes()),c&&(this.$characterSize.width!==c.width||this.$characterSize.height!==c.height)){this.$measureNode.style.fontWeight="bold";var p=this.$measureSizes();this.$measureNode.style.fontWeight="",this.$characterSize=c,this.charSizes=Object.create(null),this.allowBoldFonts=p&&p.width===c.width&&p.height===c.height,this._emit("changeCharacterSize",{data:c})}},a.prototype.$addObserver=function(){var c=this;this.$observer=new window.ResizeObserver(function(p){c.checkForSizeChanges()}),this.$observer.observe(this.$measureNode)},a.prototype.$pollSizeChanges=function(){if(this.$pollSizeChangesTimer||this.$observer)return this.$pollSizeChangesTimer;var c=this;return this.$pollSizeChangesTimer=d.onIdle(function p(){c.checkForSizeChanges(),d.onIdle(p,500)},500)},a.prototype.setPolling=function(c){c?this.$pollSizeChanges():this.$pollSizeChangesTimer&&(clearInterval(this.$pollSizeChangesTimer),this.$pollSizeChangesTimer=0)},a.prototype.$measureSizes=function(c){var p={height:(c||this.$measureNode).clientHeight,width:(c||this.$measureNode).clientWidth/o};return p.width===0||p.height===0?null:p},a.prototype.$measureCharWidth=function(c){this.$main.textContent=C.stringRepeat(c,o);var p=this.$main.getBoundingClientRect();return p.width/o},a.prototype.getCharacterWidth=function(c){var p=this.charSizes[c];return p===void 0&&(p=this.charSizes[c]=this.$measureCharWidth(c)/this.$characterSize.width),p},a.prototype.destroy=function(){clearInterval(this.$pollSizeChangesTimer),this.$observer&&this.$observer.disconnect(),this.el&&this.el.parentNode&&this.el.parentNode.removeChild(this.el)},a.prototype.$getZoom=function(c){return!c||!c.parentElement?1:(window.getComputedStyle(c).zoom||1)*this.$getZoom(c.parentElement)},a.prototype.$initTransformMeasureNodes=function(){var c=function(p,g){return["div",{style:"position: absolute;top:"+p+"px;left:"+g+"px;"}]};this.els=T.buildDom([c(0,0),c(i,0),c(0,i),c(i,i)],this.el)},a.prototype.transformCoordinates=function(c,p){if(c){var g=this.$getZoom(this.el);c=S(1/g,c)}function A(U,j,q){var Y=U[1]*j[0]-U[0]*j[1];return[(-j[1]*q[0]+j[0]*q[1])/Y,(+U[1]*q[0]-U[0]*q[1])/Y]}function b(U,j){return[U[0]-j[0],U[1]-j[1]]}function $(U,j){return[U[0]+j[0],U[1]+j[1]]}function S(U,j){return[U*j[0],U*j[1]]}this.els||this.$initTransformMeasureNodes();function v(U){var j=U.getBoundingClientRect();return[j.left,j.top]}var w=v(this.els[0]),O=v(this.els[1]),B=v(this.els[2]),k=v(this.els[3]),_=A(b(k,O),b(k,B),b($(O,B),$(k,w))),y=S(1+_[0],b(O,w)),m=S(1+_[1],b(B,w));if(p){var E=p,I=_[0]*E[0]/i+_[1]*E[1]/i+1,N=$(S(E[0],y),S(E[1],m));return $(S(1/I/i,N),w)}var W=b(c,w),z=A(b(y,S(_[0],W)),b(m,S(_[1],W)),W);return S(i,z)},a}();r.prototype.$characterSize={width:0,height:0},L.implement(r.prototype,l),M.FontMetrics=r}),ace.define("ace/css/editor-css",["require","exports","module"],function(n,M,G){G.exports=` -.ace_br1 {border-top-left-radius : 3px;} -.ace_br2 {border-top-right-radius : 3px;} -.ace_br3 {border-top-left-radius : 3px; border-top-right-radius: 3px;} -.ace_br4 {border-bottom-right-radius: 3px;} -.ace_br5 {border-top-left-radius : 3px; border-bottom-right-radius: 3px;} -.ace_br6 {border-top-right-radius : 3px; border-bottom-right-radius: 3px;} -.ace_br7 {border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px;} -.ace_br8 {border-bottom-left-radius : 3px;} -.ace_br9 {border-top-left-radius : 3px; border-bottom-left-radius: 3px;} -.ace_br10{border-top-right-radius : 3px; border-bottom-left-radius: 3px;} -.ace_br11{border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-left-radius: 3px;} -.ace_br12{border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;} -.ace_br13{border-top-left-radius : 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;} -.ace_br14{border-top-right-radius : 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;} -.ace_br15{border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;} - - -.ace_editor { - position: relative; - overflow: hidden; - padding: 0; - font: 12px/normal 'Monaco', 'Menlo', 'Ubuntu Mono', 'Consolas', 'Source Code Pro', 'source-code-pro', monospace; - direction: ltr; - text-align: left; - -webkit-tap-highlight-color: rgba(0, 0, 0, 0); -} - -.ace_scroller { - position: absolute; - overflow: hidden; - top: 0; - bottom: 0; - background-color: inherit; - -ms-user-select: none; - -moz-user-select: none; - -webkit-user-select: none; - user-select: none; - cursor: text; -} - -.ace_content { - position: absolute; - box-sizing: border-box; - min-width: 100%; - contain: style size layout; - font-variant-ligatures: no-common-ligatures; -} - -.ace_keyboard-focus:focus { - box-shadow: inset 0 0 0 2px #5E9ED6; - outline: none; -} - -.ace_dragging .ace_scroller:before{ - position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 0; - content: ''; - background: rgba(250, 250, 250, 0.01); - z-index: 1000; -} -.ace_dragging.ace_dark .ace_scroller:before{ - background: rgba(0, 0, 0, 0.01); -} - -.ace_gutter { - position: absolute; - overflow : hidden; - width: auto; - top: 0; - bottom: 0; - left: 0; - cursor: default; - z-index: 4; - -ms-user-select: none; - -moz-user-select: none; - -webkit-user-select: none; - user-select: none; - contain: style size layout; -} - -.ace_gutter-active-line { - position: absolute; - left: 0; - right: 0; -} - -.ace_scroller.ace_scroll-left:after { - content: ""; - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - box-shadow: 17px 0 16px -16px rgba(0, 0, 0, 0.4) inset; - pointer-events: none; -} - -.ace_gutter-cell, .ace_gutter-cell_svg-icons { - position: absolute; - top: 0; - left: 0; - right: 0; - padding-left: 19px; - padding-right: 6px; - background-repeat: no-repeat; -} - -.ace_gutter-cell_svg-icons .ace_gutter_annotation { - margin-left: -14px; - float: left; -} - -.ace_gutter-cell .ace_gutter_annotation { - margin-left: -19px; - float: left; -} - -.ace_gutter-cell.ace_error, .ace_icon.ace_error, .ace_icon.ace_error_fold { - background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAABOFBMVEX/////////QRswFAb/Ui4wFAYwFAYwFAaWGAfDRymzOSH/PxswFAb/SiUwFAYwFAbUPRvjQiDllog5HhHdRybsTi3/Tyv9Tir+Syj/UC3////XurebMBIwFAb/RSHbPx/gUzfdwL3kzMivKBAwFAbbvbnhPx66NhowFAYwFAaZJg8wFAaxKBDZurf/RB6mMxb/SCMwFAYwFAbxQB3+RB4wFAb/Qhy4Oh+4QifbNRcwFAYwFAYwFAb/QRzdNhgwFAYwFAbav7v/Uy7oaE68MBK5LxLewr/r2NXewLswFAaxJw4wFAbkPRy2PyYwFAaxKhLm1tMwFAazPiQwFAaUGAb/QBrfOx3bvrv/VC/maE4wFAbRPBq6MRO8Qynew8Dp2tjfwb0wFAbx6eju5+by6uns4uH9/f36+vr/GkHjAAAAYnRSTlMAGt+64rnWu/bo8eAA4InH3+DwoN7j4eLi4xP99Nfg4+b+/u9B/eDs1MD1mO7+4PHg2MXa347g7vDizMLN4eG+Pv7i5evs/v79yu7S3/DV7/498Yv24eH+4ufQ3Ozu/v7+y13sRqwAAADLSURBVHjaZc/XDsFgGIBhtDrshlitmk2IrbHFqL2pvXf/+78DPokj7+Fz9qpU/9UXJIlhmPaTaQ6QPaz0mm+5gwkgovcV6GZzd5JtCQwgsxoHOvJO15kleRLAnMgHFIESUEPmawB9ngmelTtipwwfASilxOLyiV5UVUyVAfbG0cCPHig+GBkzAENHS0AstVF6bacZIOzgLmxsHbt2OecNgJC83JERmePUYq8ARGkJx6XtFsdddBQgZE2nPR6CICZhawjA4Fb/chv+399kfR+MMMDGOQAAAABJRU5ErkJggg=="); - background-repeat: no-repeat; - background-position: 2px center; -} - -.ace_gutter-cell.ace_warning, .ace_icon.ace_warning, .ace_icon.ace_warning_fold { - background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAmVBMVEX///8AAAD///8AAAAAAABPSzb/5sAAAAB/blH/73z/ulkAAAAAAAD85pkAAAAAAAACAgP/vGz/rkDerGbGrV7/pkQICAf////e0IsAAAD/oED/qTvhrnUAAAD/yHD/njcAAADuv2r/nz//oTj/p064oGf/zHAAAAA9Nir/tFIAAAD/tlTiuWf/tkIAAACynXEAAAAAAAAtIRW7zBpBAAAAM3RSTlMAABR1m7RXO8Ln31Z36zT+neXe5OzooRDfn+TZ4p3h2hTf4t3k3ucyrN1K5+Xaks52Sfs9CXgrAAAAjklEQVR42o3PbQ+CIBQFYEwboPhSYgoYunIqqLn6/z8uYdH8Vmdnu9vz4WwXgN/xTPRD2+sgOcZjsge/whXZgUaYYvT8QnuJaUrjrHUQreGczuEafQCO/SJTufTbroWsPgsllVhq3wJEk2jUSzX3CUEDJC84707djRc5MTAQxoLgupWRwW6UB5fS++NV8AbOZgnsC7BpEAAAAABJRU5ErkJggg=="); - background-repeat: no-repeat; - background-position: 2px center; -} - -.ace_gutter-cell.ace_info, .ace_icon.ace_info { - background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAAAAAA6mKC9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAAJ0Uk5TAAB2k804AAAAPklEQVQY02NgIB68QuO3tiLznjAwpKTgNyDbMegwisCHZUETUZV0ZqOquBpXj2rtnpSJT1AEnnRmL2OgGgAAIKkRQap2htgAAAAASUVORK5CYII="); - background-repeat: no-repeat; - background-position: 2px center; -} -.ace_dark .ace_gutter-cell.ace_info, .ace_dark .ace_icon.ace_info { - background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAJFBMVEUAAAChoaGAgIAqKiq+vr6tra1ZWVmUlJSbm5s8PDxubm56enrdgzg3AAAAAXRSTlMAQObYZgAAAClJREFUeNpjYMAPdsMYHegyJZFQBlsUlMFVCWUYKkAZMxZAGdxlDMQBAG+TBP4B6RyJAAAAAElFTkSuQmCC"); -} - -.ace_icon_svg.ace_error { - -webkit-mask-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMCAxNiI+CjxnIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlPSJyZWQiIHNoYXBlLXJlbmRlcmluZz0iZ2VvbWV0cmljUHJlY2lzaW9uIj4KPGNpcmNsZSBmaWxsPSJub25lIiBjeD0iOCIgY3k9IjgiIHI9IjciIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPGxpbmUgeDE9IjExIiB5MT0iNSIgeDI9IjUiIHkyPSIxMSIvPgo8bGluZSB4MT0iMTEiIHkxPSIxMSIgeDI9IjUiIHkyPSI1Ii8+CjwvZz4KPC9zdmc+"); - background-color: crimson; -} -.ace_icon_svg.ace_warning { - -webkit-mask-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMCAxNiI+CjxnIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlPSJkYXJrb3JhbmdlIiBzaGFwZS1yZW5kZXJpbmc9Imdlb21ldHJpY1ByZWNpc2lvbiI+Cjxwb2x5Z29uIHN0cm9rZS1saW5lam9pbj0icm91bmQiIGZpbGw9Im5vbmUiIHBvaW50cz0iOCAxIDE1IDE1IDEgMTUgOCAxIi8+CjxyZWN0IHg9IjgiIHk9IjEyIiB3aWR0aD0iMC4wMSIgaGVpZ2h0PSIwLjAxIi8+CjxsaW5lIHgxPSI4IiB5MT0iNiIgeDI9IjgiIHkyPSIxMCIvPgo8L2c+Cjwvc3ZnPg=="); - background-color: darkorange; -} -.ace_icon_svg.ace_info { - -webkit-mask-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMCAxNiI+CjxnIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlPSJibHVlIiBzaGFwZS1yZW5kZXJpbmc9Imdlb21ldHJpY1ByZWNpc2lvbiI+CjxjaXJjbGUgZmlsbD0ibm9uZSIgY3g9IjgiIGN5PSI4IiByPSI3IiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+Cjxwb2x5bGluZSBwb2ludHM9IjggMTEgOCA4Ii8+Cjxwb2x5bGluZSBwb2ludHM9IjkgOCA2IDgiLz4KPGxpbmUgeDE9IjEwIiB5MT0iMTEiIHgyPSI2IiB5Mj0iMTEiLz4KPHJlY3QgeD0iOCIgeT0iNSIgd2lkdGg9IjAuMDEiIGhlaWdodD0iMC4wMSIvPgo8L2c+Cjwvc3ZnPg=="); - background-color: royalblue; -} - -.ace_icon_svg.ace_error_fold { - -webkit-mask-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMCAxNiIgZmlsbD0ibm9uZSI+CiAgPHBhdGggZD0ibSAxOC45Mjk4NTEsNy44Mjk4MDc2IGMgMC4xNDYzNTMsNi4zMzc0NjA0IC02LjMyMzE0Nyw3Ljc3Nzg0NDQgLTcuNDc3OTEyLDcuNzc3ODQ0NCAtMi4xMDcyNzI2LC0wLjEyODc1IDUuMTE3Njc4LDAuMzU2MjQ5IDUuMDUxNjk4LC03Ljg3MDA2MTggLTAuNjA0NjcyLC04LjAwMzk3MzQ5IC03LjA3NzI3MDYsLTcuNTYzMTE4OSAtNC44NTczLC03LjQzMDM5NTU2IDEuNjA2LC0wLjExNTE0MjI1IDYuODk3NDg1LDEuMjYyNTQ1OTYgNy4yODM1MTQsNy41MjI2MTI5NiB6IiBmaWxsPSJjcmltc29uIiBzdHJva2Utd2lkdGg9IjIiLz4KICA8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0ibSA4LjExNDc1NjIsMi4wNTI5ODI4IGMgMy4zNDkxNjk4LDAgNi4wNjQxMzI4LDIuNjc2ODYyNyA2LjA2NDEzMjgsNS45Nzg5NTMgMCwzLjMwMjExMjIgLTIuNzE0OTYzLDUuOTc4OTIwMiAtNi4wNjQxMzI4LDUuOTc4OTIwMiAtMy4zNDkxNDczLDAgLTYuMDY0MTc3MiwtMi42NzY4MDggLTYuMDY0MTc3MiwtNS45Nzg5MjAyIDAuMDA1MzksLTMuMjk5ODg2MSAyLjcxNzI2NTYsLTUuOTczNjQwOCA2LjA2NDE3NzIsLTUuOTc4OTUzIHogbSAwLC0xLjczNTgyNzE5IGMgLTQuMzIxNDgzNiwwIC03LjgyNDc0MDM4LDMuNDU0MDE4NDkgLTcuODI0NzQwMzgsNy43MTQ3ODAxOSAwLDQuMjYwNzI4MiAzLjUwMzI1Njc4LDcuNzE0NzQ1MiA3LjgyNDc0MDM4LDcuNzE0NzQ1MiA0LjMyMTQ0OTgsMCA3LjgyNDY5OTgsLTMuNDU0MDE3IDcuODI0Njk5OCwtNy43MTQ3NDUyIDAsLTIuMDQ2MDkxNCAtMC44MjQzOTIsLTQuMDA4MzY3MiAtMi4yOTE3NTYsLTUuNDU1MTc0NiBDIDEyLjE4MDIyNSwxLjEyOTk2NDggMTAuMTkwMDEzLDAuMzE3MTU1NjEgOC4xMTQ3NTYyLDAuMzE3MTU1NjEgWiBNIDYuOTM3NDU2Myw4LjI0MDU5ODUgNC42NzE4Njg1LDEwLjQ4NTg1MiA2LjAwODY4MTQsMTEuODc2NzI4IDguMzE3MDAzNSw5LjYwMDc5MTEgMTAuNjI1MzM3LDExLjg3NjcyOCAxMS45NjIxMzgsMTAuNDg1ODUyIDkuNjk2NTUwOCw4LjI0MDU5ODUgMTEuOTYyMTM4LDYuMDA2ODA2NiAxMC41NzMyNDYsNC42Mzc0MzM1IDguMzE3MDAzNSw2Ljg3MzQyOTcgNi4wNjA3NjA3LDQuNjM3NDMzNSA0LjY3MTg2ODUsNi4wMDY4MDY2IFoiIGZpbGw9ImNyaW1zb24iIHN0cm9rZS13aWR0aD0iMiIvPgo8L3N2Zz4="); - background-color: crimson; -} -.ace_icon_svg.ace_warning_fold { - -webkit-mask-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAyMCAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xNC43NzY5IDE0LjczMzdMOC42NTE5MiAyLjQ4MzY5QzguMzI5NDYgMS44Mzg3NyA3LjQwOTEzIDEuODM4NzcgNy4wODY2NyAyLjQ4MzY5TDAuOTYxNjY5IDE0LjczMzdDMC42NzA3NzUgMTUuMzE1NSAxLjA5MzgzIDE2IDEuNzQ0MjkgMTZIMTMuOTk0M0MxNC42NDQ4IDE2IDE1LjA2NzggMTUuMzE1NSAxNC43NzY5IDE0LjczMzdaTTMuMTYwMDcgMTQuMjVMNy44NjkyOSA0LjgzMTU2TDEyLjU3ODUgMTQuMjVIMy4xNjAwN1pNOC43NDQyOSAxMS42MjVWMTMuMzc1SDYuOTk0MjlWMTEuNjI1SDguNzQ0MjlaTTYuOTk0MjkgMTAuNzVWNy4yNUg4Ljc0NDI5VjEwLjc1SDYuOTk0MjlaIiBmaWxsPSIjRUM3MjExIi8+CjxwYXRoIGQ9Ik0xMS4xOTkxIDIuOTUyMzhDMTAuODgwOSAyLjMxNDY3IDEwLjM1MzcgMS44MDUyNiA5LjcwNTUgMS41MDlMMTEuMDQxIDEuMDY5NzhDMTEuNjg4MyAwLjk0OTgxNCAxMi4zMzcgMS4yNzI2MyAxMi42MzE3IDEuODYxNDFMMTcuNjEzNiAxMS44MTYxQzE4LjM1MjcgMTMuMjkyOSAxNy41OTM4IDE1LjA4MDQgMTYuMDE4IDE1LjU3NDVDMTYuNDA0NCAxNC40NTA3IDE2LjMyMzEgMTMuMjE4OCAxNS43OTI0IDEyLjE1NTVMMTEuMTk5MSAyLjk1MjM4WiIgZmlsbD0iI0VDNzIxMSIvPgo8L3N2Zz4="); - background-color: darkorange; -} - -.ace_scrollbar { - contain: strict; - position: absolute; - right: 0; - bottom: 0; - z-index: 6; -} - -.ace_scrollbar-inner { - position: absolute; - cursor: text; - left: 0; - top: 0; -} - -.ace_scrollbar-v{ - overflow-x: hidden; - overflow-y: scroll; - top: 0; -} - -.ace_scrollbar-h { - overflow-x: scroll; - overflow-y: hidden; - left: 0; -} - -.ace_print-margin { - position: absolute; - height: 100%; -} - -.ace_text-input { - position: absolute; - z-index: 0; - width: 0.5em; - height: 1em; - opacity: 0; - background: transparent; - -moz-appearance: none; - appearance: none; - border: none; - resize: none; - outline: none; - overflow: hidden; - font: inherit; - padding: 0 1px; - margin: 0 -1px; - contain: strict; - -ms-user-select: text; - -moz-user-select: text; - -webkit-user-select: text; - user-select: text; - /*with \`pre-line\` chrome inserts   instead of space*/ - white-space: pre!important; -} -.ace_text-input.ace_composition { - background: transparent; - color: inherit; - z-index: 1000; - opacity: 1; -} -.ace_composition_placeholder { color: transparent } -.ace_composition_marker { - border-bottom: 1px solid; - position: absolute; - border-radius: 0; - margin-top: 1px; -} -[ace_nocontext=true] { - transform: none!important; - filter: none!important; - clip-path: none!important; - mask : none!important; - contain: none!important; - perspective: none!important; - mix-blend-mode: initial!important; - z-index: auto; -} -.ace_layer { - z-index: 1; - position: absolute; - overflow: hidden; - /* workaround for chrome bug https://github.com/ajaxorg/ace/issues/2312*/ - word-wrap: normal; - white-space: pre; - height: 100%; - width: 100%; - box-sizing: border-box; - /* setting pointer-events: auto; on node under the mouse, which changes - during scroll, will break mouse wheel scrolling in Safari */ - pointer-events: none; -} +const FieldCombobox2 = (props) => { + const { input, meta, validationmessages } = props; + const getComboboxError = () => { + const { touched, error, warning } = meta; + let message = null; + if (touched && error && validationmessages[error]) { + message = validationmessages[error]; + } else if (touched && warning) { + message = "warning"; + } + return message; + }; + const handleOnChange = (value) => { + const { onChange } = input; + onChange((0,external_immutable_namespaceObject.fromJS)(value)); + }; + return /* @__PURE__ */ external_react_default().createElement( + components_Combobox2, + FieldCombobox2_spreadProps(FieldCombobox2_spreadValues({}, props), { + onChange: handleOnChange, + value: !input.value ? input.value : input.value.toJS(), + error: getComboboxError() + }) + ); +}; +FieldCombobox2.propTypes = { + meta: external_prop_types_default().instanceOf(Object), + input: external_prop_types_default().instanceOf(Object), + validationmessages: external_prop_types_default().instanceOf(Object) +}; +/* harmony default export */ const redux_form_FieldCombobox2 = (FieldCombobox2); -.ace_gutter-layer { - position: relative; - width: auto; - text-align: right; - pointer-events: auto; - height: 1000000px; - contain: style size layout; -} +;// CONCATENATED MODULE: ./src/form/redux-form/FieldDatePicker/index.js +var FieldDatePicker_defProp = Object.defineProperty; +var FieldDatePicker_defProps = Object.defineProperties; +var FieldDatePicker_getOwnPropDescs = Object.getOwnPropertyDescriptors; +var FieldDatePicker_getOwnPropSymbols = Object.getOwnPropertySymbols; +var FieldDatePicker_hasOwnProp = Object.prototype.hasOwnProperty; +var FieldDatePicker_propIsEnum = Object.prototype.propertyIsEnumerable; +var FieldDatePicker_defNormalProp = (obj, key, value) => key in obj ? FieldDatePicker_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var FieldDatePicker_spreadValues = (a, b) => { + for (var prop in b || (b = {})) + if (FieldDatePicker_hasOwnProp.call(b, prop)) + FieldDatePicker_defNormalProp(a, prop, b[prop]); + if (FieldDatePicker_getOwnPropSymbols) + for (var prop of FieldDatePicker_getOwnPropSymbols(b)) { + if (FieldDatePicker_propIsEnum.call(b, prop)) + FieldDatePicker_defNormalProp(a, prop, b[prop]); + } + return a; +}; +var FieldDatePicker_spreadProps = (a, b) => FieldDatePicker_defProps(a, FieldDatePicker_getOwnPropDescs(b)); +var FieldDatePicker_objRest = (source, exclude) => { + var target = {}; + for (var prop in source) + if (FieldDatePicker_hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) + target[prop] = source[prop]; + if (source != null && FieldDatePicker_getOwnPropSymbols) + for (var prop of FieldDatePicker_getOwnPropSymbols(source)) { + if (exclude.indexOf(prop) < 0 && FieldDatePicker_propIsEnum.call(source, prop)) + target[prop] = source[prop]; + } + return target; +}; -.ace_text-layer { - font: inherit !important; - position: absolute; - height: 1000000px; - width: 1000000px; - contain: style size layout; -} -.ace_text-layer > .ace_line, .ace_text-layer > .ace_line_group { - contain: style size layout; - position: absolute; - top: 0; - left: 0; - right: 0; -} -.ace_hidpi .ace_text-layer, -.ace_hidpi .ace_gutter-layer, -.ace_hidpi .ace_content, -.ace_hidpi .ace_gutter { - contain: strict; -} -.ace_hidpi .ace_text-layer > .ace_line, -.ace_hidpi .ace_text-layer > .ace_line_group { - contain: strict; -} -.ace_cjk { - display: inline-block; - text-align: center; -} +const FormDatePicker = (props) => { + const _a = props, { + input, + meta, + validationmessages + } = _a, rest = FieldDatePicker_objRest(_a, [ + "input", + "meta", + "validationmessages" + ]); + const getDatePickerError = () => { + const { touched, error } = meta; + let message = null; + if (touched && error && validationmessages[error]) { + message = validationmessages[error]; + } + return message; + }; + const handleOnChange = (value) => { + const { onChange } = input; + onChange((0,external_immutable_namespaceObject.fromJS)(value)); + }; + return /* @__PURE__ */ external_react_default().createElement( + components_DatePicker, + FieldDatePicker_spreadProps(FieldDatePicker_spreadValues({}, rest), { + onChange: handleOnChange, + value: !input.value ? input.value : input.value.toJS(), + error: getDatePickerError() + }) + ); +}; +FormDatePicker.propTypes = { + meta: external_prop_types_default().instanceOf(Object), + input: external_prop_types_default().instanceOf(Object), + validationmessages: external_prop_types_default().instanceOf(Object) +}; +/* harmony default export */ const FieldDatePicker = (FormDatePicker); -.ace_cursor-layer { - z-index: 4; -} +;// CONCATENATED MODULE: ./src/form/redux-form/FieldEditableList/index.js +var FieldEditableList_defProp = Object.defineProperty; +var FieldEditableList_defProps = Object.defineProperties; +var FieldEditableList_getOwnPropDescs = Object.getOwnPropertyDescriptors; +var FieldEditableList_getOwnPropSymbols = Object.getOwnPropertySymbols; +var FieldEditableList_hasOwnProp = Object.prototype.hasOwnProperty; +var FieldEditableList_propIsEnum = Object.prototype.propertyIsEnumerable; +var FieldEditableList_defNormalProp = (obj, key, value) => key in obj ? FieldEditableList_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var FieldEditableList_spreadValues = (a, b) => { + for (var prop in b || (b = {})) + if (FieldEditableList_hasOwnProp.call(b, prop)) + FieldEditableList_defNormalProp(a, prop, b[prop]); + if (FieldEditableList_getOwnPropSymbols) + for (var prop of FieldEditableList_getOwnPropSymbols(b)) { + if (FieldEditableList_propIsEnum.call(b, prop)) + FieldEditableList_defNormalProp(a, prop, b[prop]); + } + return a; +}; +var FieldEditableList_spreadProps = (a, b) => FieldEditableList_defProps(a, FieldEditableList_getOwnPropDescs(b)); +var FieldEditableList_objRest = (source, exclude) => { + var target = {}; + for (var prop in source) + if (FieldEditableList_hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) + target[prop] = source[prop]; + if (source != null && FieldEditableList_getOwnPropSymbols) + for (var prop of FieldEditableList_getOwnPropSymbols(source)) { + if (exclude.indexOf(prop) < 0 && FieldEditableList_propIsEnum.call(source, prop)) + target[prop] = source[prop]; + } + return target; +}; +var FieldEditableList_publicField = (obj, key, value) => { + FieldEditableList_defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); + return value; +}; -.ace_cursor { - z-index: 4; - position: absolute; - box-sizing: border-box; - border-left: 2px solid; - /* workaround for smooth cursor repaintng whole screen in chrome */ - transform: translatez(0); -} -.ace_multiselect .ace_cursor { - border-left-width: 1px; -} -.ace_slim-cursors .ace_cursor { - border-left-width: 1px; -} -.ace_overwrite-cursors .ace_cursor { - border-left-width: 0; - border-bottom: 1px solid; +class FieldEditableList extends external_react_namespaceObject.Component { + constructor(props) { + super(props); + this.handleOnChange = this.handleOnChange.bind(this); + } + getEditableListError() { + const { meta, validationmessages } = this.props; + const { touched, error } = meta; + let message = null; + if (touched && error && validationmessages[error]) { + message = validationmessages[error]; + } + return message; + } + handleOnChange(value) { + const { input } = this.props; + const { onChange } = input; + onChange((0,external_immutable_namespaceObject.fromJS)(value)); + } + render() { + const props = FieldEditableList_objRest(this.props, []); + return /* @__PURE__ */ external_react_default().createElement( + EditableList, + FieldEditableList_spreadProps(FieldEditableList_spreadValues({}, props), { + onChange: this.handleOnChange, + value: !props.input.value ? null : props.input.value.toJS(), + error: this.getEditableListError() + }) + ); + } } +FieldEditableList_publicField(FieldEditableList, "propTypes", { + input: external_prop_types_default().instanceOf(Object), + meta: external_prop_types_default().instanceOf(Object), + validationmessages: external_prop_types_default().instanceOf(Object) +}); -.ace_hidden-cursors .ace_cursor { - opacity: 0.2; -} +;// CONCATENATED MODULE: ./src/form/redux-form/FieldFileInput/index.js +var FieldFileInput_defProp = Object.defineProperty; +var FieldFileInput_defProps = Object.defineProperties; +var FieldFileInput_getOwnPropDescs = Object.getOwnPropertyDescriptors; +var FieldFileInput_getOwnPropSymbols = Object.getOwnPropertySymbols; +var FieldFileInput_hasOwnProp = Object.prototype.hasOwnProperty; +var FieldFileInput_propIsEnum = Object.prototype.propertyIsEnumerable; +var FieldFileInput_defNormalProp = (obj, key, value) => key in obj ? FieldFileInput_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var FieldFileInput_spreadValues = (a, b) => { + for (var prop in b || (b = {})) + if (FieldFileInput_hasOwnProp.call(b, prop)) + FieldFileInput_defNormalProp(a, prop, b[prop]); + if (FieldFileInput_getOwnPropSymbols) + for (var prop of FieldFileInput_getOwnPropSymbols(b)) { + if (FieldFileInput_propIsEnum.call(b, prop)) + FieldFileInput_defNormalProp(a, prop, b[prop]); + } + return a; +}; +var FieldFileInput_spreadProps = (a, b) => FieldFileInput_defProps(a, FieldFileInput_getOwnPropDescs(b)); +var FieldFileInput_objRest = (source, exclude) => { + var target = {}; + for (var prop in source) + if (FieldFileInput_hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) + target[prop] = source[prop]; + if (source != null && FieldFileInput_getOwnPropSymbols) + for (var prop of FieldFileInput_getOwnPropSymbols(source)) { + if (exclude.indexOf(prop) < 0 && FieldFileInput_propIsEnum.call(source, prop)) + target[prop] = source[prop]; + } + return target; +}; +var FieldFileInput_publicField = (obj, key, value) => { + FieldFileInput_defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); + return value; +}; -.ace_hasPlaceholder .ace_hidden-cursors .ace_cursor { - opacity: 0; -} -.ace_smooth-blinking .ace_cursor { - transition: opacity 0.18s; -} -.ace_animate-blinking .ace_cursor { - animation-duration: 1000ms; - animation-timing-function: step-end; - animation-name: blink-ace-animate; - animation-iteration-count: infinite; +class FieldFileInput extends external_react_namespaceObject.Component { + getInputError() { + const { meta, validationmessages } = this.props; + const { touched, error, warning } = meta; + let message = null; + if (touched && error && validationmessages[error]) { + message = validationmessages[error]; + } else if (touched && warning) { + message = "warning"; + } + return message; + } + render() { + const _a = this.props, { input } = _a, rest = FieldFileInput_objRest(_a, ["input"]); + return /* @__PURE__ */ external_react_default().createElement( + FileInput, + FieldFileInput_spreadProps(FieldFileInput_spreadValues(FieldFileInput_spreadValues({}, input), rest), { + error: this.getInputError() + }) + ); + } } +FieldFileInput_publicField(FieldFileInput, "propTypes", { + input: external_prop_types_default().instanceOf(Object), + meta: external_prop_types_default().instanceOf(Object), + validationmessages: external_prop_types_default().instanceOf(Object) +}); -.ace_animate-blinking.ace_smooth-blinking .ace_cursor { - animation-duration: 1000ms; - animation-timing-function: ease-in-out; - animation-name: blink-ace-animate-smooth; -} - -@keyframes blink-ace-animate { - from, to { opacity: 1; } - 60% { opacity: 0; } -} +;// CONCATENATED MODULE: ./src/form/redux-form/FieldInput/index.js +var FieldInput_defProp = Object.defineProperty; +var FieldInput_defProps = Object.defineProperties; +var FieldInput_getOwnPropDescs = Object.getOwnPropertyDescriptors; +var FieldInput_getOwnPropSymbols = Object.getOwnPropertySymbols; +var FieldInput_hasOwnProp = Object.prototype.hasOwnProperty; +var FieldInput_propIsEnum = Object.prototype.propertyIsEnumerable; +var FieldInput_defNormalProp = (obj, key, value) => key in obj ? FieldInput_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var FieldInput_spreadValues = (a, b) => { + for (var prop in b || (b = {})) + if (FieldInput_hasOwnProp.call(b, prop)) + FieldInput_defNormalProp(a, prop, b[prop]); + if (FieldInput_getOwnPropSymbols) + for (var prop of FieldInput_getOwnPropSymbols(b)) { + if (FieldInput_propIsEnum.call(b, prop)) + FieldInput_defNormalProp(a, prop, b[prop]); + } + return a; +}; +var FieldInput_spreadProps = (a, b) => FieldInput_defProps(a, FieldInput_getOwnPropDescs(b)); +var FieldInput_objRest = (source, exclude) => { + var target = {}; + for (var prop in source) + if (FieldInput_hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) + target[prop] = source[prop]; + if (source != null && FieldInput_getOwnPropSymbols) + for (var prop of FieldInput_getOwnPropSymbols(source)) { + if (exclude.indexOf(prop) < 0 && FieldInput_propIsEnum.call(source, prop)) + target[prop] = source[prop]; + } + return target; +}; +var FieldInput_publicField = (obj, key, value) => { + FieldInput_defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); + return value; +}; -@keyframes blink-ace-animate-smooth { - from, to { opacity: 1; } - 45% { opacity: 1; } - 60% { opacity: 0; } - 85% { opacity: 0; } -} -.ace_marker-layer .ace_step, .ace_marker-layer .ace_stack { - position: absolute; - z-index: 3; -} -.ace_marker-layer .ace_selection { - position: absolute; - z-index: 5; +class FieldInput extends external_react_namespaceObject.Component { + getInputError() { + const { meta, validationmessages } = this.props; + const { touched, error, warning } = meta; + let message = null; + if (touched && error && validationmessages[error]) { + message = validationmessages[error]; + } else if (touched && warning) { + message = "warning"; + } + return message; + } + render() { + const _a = this.props, { input } = _a, rest = FieldInput_objRest(_a, ["input"]); + return /* @__PURE__ */ external_react_default().createElement( + Input, + FieldInput_spreadProps(FieldInput_spreadValues(FieldInput_spreadValues({}, input), rest), { + isfield: true, + error: this.getInputError() + }) + ); + } } +FieldInput_publicField(FieldInput, "propTypes", { + meta: external_prop_types_default().instanceOf(Object), + input: external_prop_types_default().instanceOf(Object), + validationmessages: external_prop_types_default().instanceOf(Object) +}); -.ace_marker-layer .ace_bracket { - position: absolute; - z-index: 6; -} +;// CONCATENATED MODULE: ./src/form/redux-form/FieldMultiselect/index.js +var FieldMultiselect_defProp = Object.defineProperty; +var FieldMultiselect_defProps = Object.defineProperties; +var FieldMultiselect_getOwnPropDescs = Object.getOwnPropertyDescriptors; +var FieldMultiselect_getOwnPropSymbols = Object.getOwnPropertySymbols; +var FieldMultiselect_hasOwnProp = Object.prototype.hasOwnProperty; +var FieldMultiselect_propIsEnum = Object.prototype.propertyIsEnumerable; +var FieldMultiselect_defNormalProp = (obj, key, value) => key in obj ? FieldMultiselect_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var FieldMultiselect_spreadValues = (a, b) => { + for (var prop in b || (b = {})) + if (FieldMultiselect_hasOwnProp.call(b, prop)) + FieldMultiselect_defNormalProp(a, prop, b[prop]); + if (FieldMultiselect_getOwnPropSymbols) + for (var prop of FieldMultiselect_getOwnPropSymbols(b)) { + if (FieldMultiselect_propIsEnum.call(b, prop)) + FieldMultiselect_defNormalProp(a, prop, b[prop]); + } + return a; +}; +var FieldMultiselect_spreadProps = (a, b) => FieldMultiselect_defProps(a, FieldMultiselect_getOwnPropDescs(b)); +var FieldMultiselect_objRest = (source, exclude) => { + var target = {}; + for (var prop in source) + if (FieldMultiselect_hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) + target[prop] = source[prop]; + if (source != null && FieldMultiselect_getOwnPropSymbols) + for (var prop of FieldMultiselect_getOwnPropSymbols(source)) { + if (exclude.indexOf(prop) < 0 && FieldMultiselect_propIsEnum.call(source, prop)) + target[prop] = source[prop]; + } + return target; +}; +var FieldMultiselect_publicField = (obj, key, value) => { + FieldMultiselect_defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); + return value; +}; -.ace_marker-layer .ace_error_bracket { - position: absolute; - border-bottom: 1px solid #DE5555; - border-radius: 0; -} -.ace_marker-layer .ace_active-line { - position: absolute; - z-index: 2; -} -.ace_marker-layer .ace_selected-word { - position: absolute; - z-index: 4; - box-sizing: border-box; + +class FieldMultiselect extends external_react_namespaceObject.Component { + constructor(props) { + super(props); + this.handleOnChange = this.handleOnChange.bind(this); + } + getMultiselectError() { + const { meta, validationmessages } = this.props; + const { touched, error, warning } = meta; + let message = null; + if (touched && error && validationmessages[error]) { + message = validationmessages[error]; + } else if (touched && warning) { + message = "warning"; + } + return message; + } + handleOnChange(value) { + const { input } = this.props; + const { onChange } = input; + onChange((0,external_immutable_namespaceObject.fromJS)(value)); + } + render() { + const props = FieldMultiselect_objRest(this.props, []); + return /* @__PURE__ */ external_react_default().createElement( + components_Multiselect, + FieldMultiselect_spreadProps(FieldMultiselect_spreadValues({}, props), { + onChange: this.handleOnChange, + value: !props.input.value ? props.input.value : props.input.value.toJS(), + error: this.getMultiselectError() + }) + ); + } } +FieldMultiselect_publicField(FieldMultiselect, "propTypes", { + input: external_prop_types_default().instanceOf(Object), + meta: external_prop_types_default().instanceOf(Object), + validationmessages: external_prop_types_default().instanceOf(Object) +}); -.ace_line .ace_fold { - box-sizing: border-box; +;// CONCATENATED MODULE: ./src/form/redux-form/FieldSelect/index.js +var FieldSelect_defProp = Object.defineProperty; +var FieldSelect_defProps = Object.defineProperties; +var FieldSelect_getOwnPropDescs = Object.getOwnPropertyDescriptors; +var FieldSelect_getOwnPropSymbols = Object.getOwnPropertySymbols; +var FieldSelect_hasOwnProp = Object.prototype.hasOwnProperty; +var FieldSelect_propIsEnum = Object.prototype.propertyIsEnumerable; +var FieldSelect_defNormalProp = (obj, key, value) => key in obj ? FieldSelect_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var FieldSelect_spreadValues = (a, b) => { + for (var prop in b || (b = {})) + if (FieldSelect_hasOwnProp.call(b, prop)) + FieldSelect_defNormalProp(a, prop, b[prop]); + if (FieldSelect_getOwnPropSymbols) + for (var prop of FieldSelect_getOwnPropSymbols(b)) { + if (FieldSelect_propIsEnum.call(b, prop)) + FieldSelect_defNormalProp(a, prop, b[prop]); + } + return a; +}; +var FieldSelect_spreadProps = (a, b) => FieldSelect_defProps(a, FieldSelect_getOwnPropDescs(b)); +var FieldSelect_objRest = (source, exclude) => { + var target = {}; + for (var prop in source) + if (FieldSelect_hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) + target[prop] = source[prop]; + if (source != null && FieldSelect_getOwnPropSymbols) + for (var prop of FieldSelect_getOwnPropSymbols(source)) { + if (exclude.indexOf(prop) < 0 && FieldSelect_propIsEnum.call(source, prop)) + target[prop] = source[prop]; + } + return target; +}; +var FieldSelect_publicField = (obj, key, value) => { + FieldSelect_defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); + return value; +}; - display: inline-block; - height: 11px; - margin-top: -2px; - vertical-align: middle; - background-image: - url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII="), - url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACJJREFUeNpi+P//fxgTAwPDBxDxD078RSX+YeEyDFMCIMAAI3INmXiwf2YAAAAASUVORK5CYII="); - background-repeat: no-repeat, repeat-x; - background-position: center center, top left; - color: transparent; - border: 1px solid black; - border-radius: 2px; - cursor: pointer; - pointer-events: auto; +class FieldSelect extends external_react_namespaceObject.Component { + constructor(props) { + super(props); + this.handleEvent = this.handleEvent.bind(this); + } + getSelectError() { + const { meta, validationmessages } = this.props; + const { touched, error, warning } = meta; + let message = null; + if (touched && error && validationmessages[error]) { + message = validationmessages[error]; + } else if (touched && warning) { + message = "warning"; + } + return message; + } + handleEvent(selectValue) { + const { input } = this.props; + const { onChange, value } = input; + onChange((0,external_immutable_namespaceObject.fromJS)(selectValue !== void 0 ? selectValue : value)); + } + render() { + const _a = this.props, { input } = _a, rest = FieldSelect_objRest(_a, ["input"]); + return /* @__PURE__ */ external_react_default().createElement( + Select, + FieldSelect_spreadProps(FieldSelect_spreadValues(FieldSelect_spreadValues({}, input), rest), { + isfield: true, + error: this.getSelectError(), + onChange: this.handleEvent, + onBlur: this.handleEvent, + value: !input.value ? input.value : input.value.toJS() + }) + ); + } } +FieldSelect_publicField(FieldSelect, "propTypes", { + input: external_prop_types_default().instanceOf(Object), + meta: external_prop_types_default().instanceOf(Object), + validationmessages: external_prop_types_default().instanceOf(Object) +}); -.ace_dark .ace_fold { -} +;// CONCATENATED MODULE: ./src/form/redux-form/FieldSelectableList/index.js +var FieldSelectableList_defProp = Object.defineProperty; +var FieldSelectableList_defProps = Object.defineProperties; +var FieldSelectableList_getOwnPropDescs = Object.getOwnPropertyDescriptors; +var FieldSelectableList_getOwnPropSymbols = Object.getOwnPropertySymbols; +var FieldSelectableList_hasOwnProp = Object.prototype.hasOwnProperty; +var FieldSelectableList_propIsEnum = Object.prototype.propertyIsEnumerable; +var FieldSelectableList_defNormalProp = (obj, key, value) => key in obj ? FieldSelectableList_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var FieldSelectableList_spreadValues = (a, b) => { + for (var prop in b || (b = {})) + if (FieldSelectableList_hasOwnProp.call(b, prop)) + FieldSelectableList_defNormalProp(a, prop, b[prop]); + if (FieldSelectableList_getOwnPropSymbols) + for (var prop of FieldSelectableList_getOwnPropSymbols(b)) { + if (FieldSelectableList_propIsEnum.call(b, prop)) + FieldSelectableList_defNormalProp(a, prop, b[prop]); + } + return a; +}; +var FieldSelectableList_spreadProps = (a, b) => FieldSelectableList_defProps(a, FieldSelectableList_getOwnPropDescs(b)); +var FieldSelectableList_objRest = (source, exclude) => { + var target = {}; + for (var prop in source) + if (FieldSelectableList_hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) + target[prop] = source[prop]; + if (source != null && FieldSelectableList_getOwnPropSymbols) + for (var prop of FieldSelectableList_getOwnPropSymbols(source)) { + if (exclude.indexOf(prop) < 0 && FieldSelectableList_propIsEnum.call(source, prop)) + target[prop] = source[prop]; + } + return target; +}; +var FieldSelectableList_publicField = (obj, key, value) => { + FieldSelectableList_defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); + return value; +}; -.ace_fold:hover{ - background-image: - url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII="), - url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACBJREFUeNpi+P//fz4TAwPDZxDxD5X4i5fLMEwJgAADAEPVDbjNw87ZAAAAAElFTkSuQmCC"); -} -.ace_tooltip { - background-color: #f5f5f5; - border: 1px solid gray; - border-radius: 1px; - box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3); - color: black; - max-width: 100%; - padding: 3px 4px; - position: fixed; - z-index: 999999; - box-sizing: border-box; - cursor: default; - white-space: pre; - word-wrap: break-word; - line-height: normal; - font-style: normal; - font-weight: normal; - letter-spacing: normal; - pointer-events: none; -} -.ace_tooltip.ace_dark { - background-color: #636363; - color: #fff; -} -.ace_tooltip:focus { - outline: 1px solid #5E9ED6; +class FieldSelectableList extends external_react_namespaceObject.Component { + constructor(props) { + super(props); + this.handleOnChange = this.handleOnChange.bind(this); + } + handleOnChange(value) { + const { input } = this.props; + input.onChange((0,external_immutable_namespaceObject.fromJS)(value)); + } + render() { + const _a = this.props, { children } = _a, props = FieldSelectableList_objRest(_a, ["children"]); + return /* @__PURE__ */ external_react_default().createElement( + components_SelectableList, + FieldSelectableList_spreadProps(FieldSelectableList_spreadValues({}, props), { + onChange: this.handleOnChange, + value: props.input.value ? props.input.value.toJS() : [] + }) + ); + } } +FieldSelectableList_publicField(FieldSelectableList, "propTypes", { + children: external_prop_types_default().oneOfType([ + (external_prop_types_default()).node + ]), + onChange: (external_prop_types_default()).func, + input: external_prop_types_default().instanceOf(Object) +}); + +;// CONCATENATED MODULE: ./src/form/redux-form/FieldToggle/index.js +var FieldToggle_defProp = Object.defineProperty; +var FieldToggle_defProps = Object.defineProperties; +var FieldToggle_getOwnPropDescs = Object.getOwnPropertyDescriptors; +var FieldToggle_getOwnPropSymbols = Object.getOwnPropertySymbols; +var FieldToggle_hasOwnProp = Object.prototype.hasOwnProperty; +var FieldToggle_propIsEnum = Object.prototype.propertyIsEnumerable; +var FieldToggle_defNormalProp = (obj, key, value) => key in obj ? FieldToggle_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var FieldToggle_spreadValues = (a, b) => { + for (var prop in b || (b = {})) + if (FieldToggle_hasOwnProp.call(b, prop)) + FieldToggle_defNormalProp(a, prop, b[prop]); + if (FieldToggle_getOwnPropSymbols) + for (var prop of FieldToggle_getOwnPropSymbols(b)) { + if (FieldToggle_propIsEnum.call(b, prop)) + FieldToggle_defNormalProp(a, prop, b[prop]); + } + return a; +}; +var FieldToggle_spreadProps = (a, b) => FieldToggle_defProps(a, FieldToggle_getOwnPropDescs(b)); +var FieldToggle_objRest = (source, exclude) => { + var target = {}; + for (var prop in source) + if (FieldToggle_hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) + target[prop] = source[prop]; + if (source != null && FieldToggle_getOwnPropSymbols) + for (var prop of FieldToggle_getOwnPropSymbols(source)) { + if (exclude.indexOf(prop) < 0 && FieldToggle_propIsEnum.call(source, prop)) + target[prop] = source[prop]; + } + return target; +}; +var FieldToggle_publicField = (obj, key, value) => { + FieldToggle_defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); + return value; +}; -.ace_icon { - display: inline-block; - width: 18px; - vertical-align: top; -} -.ace_icon_svg { - display: inline-block; - width: 12px; - vertical-align: top; - -webkit-mask-repeat: no-repeat; - -webkit-mask-size: 12px; - -webkit-mask-position: center; -} -.ace_folding-enabled > .ace_gutter-cell, .ace_folding-enabled > .ace_gutter-cell_svg-icons { - padding-right: 13px; + +class FieldToggle extends external_react_namespaceObject.Component { + constructor(props) { + super(props); + this.handleOnChange = this.handleOnChange.bind(this); + } + handleOnChange(value) { + const { input } = this.props; + input.onChange((0,external_immutable_namespaceObject.fromJS)(value)); + } + render() { + const _a = this.props, { children } = _a, props = FieldToggle_objRest(_a, ["children"]); + return /* @__PURE__ */ external_react_default().createElement( + components_Toggle, + FieldToggle_spreadProps(FieldToggle_spreadValues({}, props), { + onChange: this.handleOnChange, + value: props.input.value + }), + children + ); + } } +FieldToggle_publicField(FieldToggle, "propTypes", { + children: external_prop_types_default().oneOfType([ + (external_prop_types_default()).node + ]), + onChange: (external_prop_types_default()).func, + input: external_prop_types_default().instanceOf(Object) +}); -.ace_fold-widget { - box-sizing: border-box; +;// CONCATENATED MODULE: ./src/index.js - margin: 0 -12px 0 1px; - display: none; - width: 11px; - vertical-align: top; - background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42mWKsQ0AMAzC8ixLlrzQjzmBiEjp0A6WwBCSPgKAXoLkqSot7nN3yMwR7pZ32NzpKkVoDBUxKAAAAABJRU5ErkJggg=="); - background-repeat: no-repeat; - background-position: center; - border-radius: 3px; - - border: 1px solid transparent; - cursor: pointer; -} -.ace_folding-enabled .ace_fold-widget { - display: inline-block; -} -.ace_fold-widget.ace_end { - background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42m3HwQkAMAhD0YzsRchFKI7sAikeWkrxwScEB0nh5e7KTPWimZki4tYfVbX+MNl4pyZXejUO1QAAAABJRU5ErkJggg=="); -} -.ace_fold-widget.ace_closed { - background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAGCAYAAAAG5SQMAAAAOUlEQVR42jXKwQkAMAgDwKwqKD4EwQ26sSOkVWjgIIHAzPiCgaqiqnJHZnKICBERHN194O5b9vbLuAVRL+l0YWnZAAAAAElFTkSuQmCCXA=="); -} -.ace_fold-widget:hover { - border: 1px solid rgba(0, 0, 0, 0.3); - background-color: rgba(255, 255, 255, 0.2); - box-shadow: 0 1px 1px rgba(255, 255, 255, 0.7); -} -.ace_fold-widget:active { - border: 1px solid rgba(0, 0, 0, 0.4); - background-color: rgba(0, 0, 0, 0.05); - box-shadow: 0 1px 1px rgba(255, 255, 255, 0.8); -} -/** - * Dark version for fold widgets - */ -.ace_dark .ace_fold-widget { - background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHklEQVQIW2P4//8/AzoGEQ7oGCaLLAhWiSwB146BAQCSTPYocqT0AAAAAElFTkSuQmCC"); -} -.ace_dark .ace_fold-widget.ace_end { - background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAH0lEQVQIW2P4//8/AxQ7wNjIAjDMgC4AxjCVKBirIAAF0kz2rlhxpAAAAABJRU5ErkJggg=="); -} -.ace_dark .ace_fold-widget.ace_closed { - background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAFCAYAAACAcVaiAAAAHElEQVQIW2P4//+/AxAzgDADlOOAznHAKgPWAwARji8UIDTfQQAAAABJRU5ErkJggg=="); -} -.ace_dark .ace_fold-widget:hover { - box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2); - background-color: rgba(255, 255, 255, 0.1); -} -.ace_dark .ace_fold-widget:active { - box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2); -} -.ace_inline_button { - border: 1px solid lightgray; - display: inline-block; - margin: -1px 8px; - padding: 0 5px; - pointer-events: auto; - cursor: pointer; -} -.ace_inline_button:hover { - border-color: gray; - background: rgba(200,200,200,0.2); - display: inline-block; - pointer-events: auto; -} -.ace_fold-widget.ace_invalid { - background-color: #FFB4B4; - border-color: #DE5555; -} -.ace_fade-fold-widgets .ace_fold-widget { - transition: opacity 0.4s ease 0.05s; - opacity: 0; -} -.ace_fade-fold-widgets:hover .ace_fold-widget { - transition: opacity 0.05s ease 0.05s; - opacity:1; -} -.ace_underline { - text-decoration: underline; -} -.ace_bold { - font-weight: bold; -} -.ace_nobold .ace_bold { - font-weight: normal; -} -.ace_italic { - font-style: italic; -} -.ace_error-marker { - background-color: rgba(255, 0, 0,0.2); - position: absolute; - z-index: 9; -} -.ace_highlight-marker { - background-color: rgba(255, 255, 0,0.2); - position: absolute; - z-index: 8; -} -.ace_mobile-menu { - position: absolute; - line-height: 1.5; - border-radius: 4px; - -ms-user-select: none; - -moz-user-select: none; - -webkit-user-select: none; - user-select: none; - background: white; - box-shadow: 1px 3px 2px grey; - border: 1px solid #dcdcdc; - color: black; -} -.ace_dark > .ace_mobile-menu { - background: #333; - color: #ccc; - box-shadow: 1px 3px 2px grey; - border: 1px solid #444; -} -.ace_mobile-button { - padding: 2px; - cursor: pointer; - overflow: hidden; -} -.ace_mobile-button:hover { - background-color: #eee; - opacity:1; -} -.ace_mobile-button:active { - background-color: #ddd; -} -.ace_placeholder { - font-family: arial; - transform: scale(0.9); - transform-origin: left; - white-space: pre; - opacity: 0.7; - margin: 0 10px; -} - -.ace_ghost_text { - opacity: 0.5; - font-style: italic; - white-space: pre; -} - -.ace_screenreader-only { - position:absolute; - left:-10000px; - top:auto; - width:1px; - height:1px; - overflow:hidden; -}`}),ace.define("ace/layer/decorators",["require","exports","module","ace/lib/dom","ace/lib/oop","ace/lib/event_emitter"],function(n,M,G){"use strict";var L=n("../lib/dom"),T=n("../lib/oop"),C=n("../lib/event_emitter").EventEmitter,d=function(){function h(l,o){this.canvas=L.createElement("canvas"),this.renderer=o,this.pixelRatio=1,this.maxHeight=o.layerConfig.maxHeight,this.lineHeight=o.layerConfig.lineHeight,this.canvasHeight=l.parent.scrollHeight,this.heightRatio=this.canvasHeight/this.maxHeight,this.canvasWidth=l.width,this.minDecorationHeight=2*this.pixelRatio|0,this.halfMinDecorationHeight=this.minDecorationHeight/2|0,this.canvas.width=this.canvasWidth,this.canvas.height=this.canvasHeight,this.canvas.style.top="0px",this.canvas.style.right="0px",this.canvas.style.zIndex="7px",this.canvas.style.position="absolute",this.colors={},this.colors.dark={error:"rgba(255, 18, 18, 1)",warning:"rgba(18, 136, 18, 1)",info:"rgba(18, 18, 136, 1)"},this.colors.light={error:"rgb(255,51,51)",warning:"rgb(32,133,72)",info:"rgb(35,68,138)"},l.element.appendChild(this.canvas)}return h.prototype.$updateDecorators=function(l){var o=this.renderer.theme.isDark===!0?this.colors.dark:this.colors.light;if(l){this.maxHeight=l.maxHeight,this.lineHeight=l.lineHeight,this.canvasHeight=l.height;var s=(l.lastRow+1)*this.lineHeight;s_.priority?1:0}var a=this.renderer.session.$annotations;if(i.clearRect(0,0,this.canvas.width,this.canvas.height),a){var c={info:1,warning:2,error:3};a.forEach(function(k){k.priority=c[k.type]||null}),a=a.sort(r);for(var p=this.renderer.session.$foldData,g=0;gthis.canvasHeight&&(O=this.canvasHeight-this.halfMinDecorationHeight),S=Math.round(O-this.halfMinDecorationHeight),v=Math.round(O+this.halfMinDecorationHeight)}i.fillStyle=o[a[g].type]||null,i.fillRect(0,$,this.canvasWidth,v-S)}}var B=this.renderer.session.selection.getCursor();if(B){var b=this.compensateFoldRows(B.row,p),$=Math.round((B.row-b)*this.lineHeight*this.heightRatio);i.fillStyle="rgba(0, 0, 0, 0.5)",i.fillRect(0,$,this.canvasWidth,2)}},h.prototype.compensateFoldRows=function(l,o){var s=0;if(o&&o.length>0)for(var i=0;io[i].start.row&&l=o[i].end.row&&(s+=o[i].end.row-o[i].start.row);return s},h}();T.implement(d.prototype,C),M.Decorator=d}),ace.define("ace/virtual_renderer",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/config","ace/layer/gutter","ace/layer/marker","ace/layer/text","ace/layer/cursor","ace/scrollbar","ace/scrollbar","ace/scrollbar_custom","ace/scrollbar_custom","ace/renderloop","ace/layer/font_metrics","ace/lib/event_emitter","ace/css/editor-css","ace/layer/decorators","ace/lib/useragent"],function(n,M,G){"use strict";var L=n("./lib/oop"),T=n("./lib/dom"),C=n("./lib/lang"),d=n("./config"),h=n("./layer/gutter").Gutter,l=n("./layer/marker").Marker,o=n("./layer/text").Text,s=n("./layer/cursor").Cursor,i=n("./scrollbar").HScrollBar,r=n("./scrollbar").VScrollBar,a=n("./scrollbar_custom").HScrollBar,c=n("./scrollbar_custom").VScrollBar,p=n("./renderloop").RenderLoop,g=n("./layer/font_metrics").FontMetrics,A=n("./lib/event_emitter").EventEmitter,b=n("./css/editor-css"),$=n("./layer/decorators").Decorator,S=n("./lib/useragent");T.importCssString(b,"ace_editor.css",!1);var v=function(){function w(O,B){var k=this;this.container=O||T.createElement("div"),T.addCssClass(this.container,"ace_editor"),T.HI_DPI&&T.addCssClass(this.container,"ace_hidpi"),this.setTheme(B),d.get("useStrictCSP")==null&&d.set("useStrictCSP",!1),this.$gutter=T.createElement("div"),this.$gutter.className="ace_gutter",this.container.appendChild(this.$gutter),this.$gutter.setAttribute("aria-hidden",!0),this.scroller=T.createElement("div"),this.scroller.className="ace_scroller",this.container.appendChild(this.scroller),this.content=T.createElement("div"),this.content.className="ace_content",this.scroller.appendChild(this.content),this.$gutterLayer=new h(this.$gutter),this.$gutterLayer.on("changeGutterWidth",this.onGutterResize.bind(this)),this.$markerBack=new l(this.content);var _=this.$textLayer=new o(this.content);this.canvas=_.element,this.$markerFront=new l(this.content),this.$cursorLayer=new s(this.content),this.$horizScroll=!1,this.$vScroll=!1,this.scrollBar=this.scrollBarV=new r(this.container,this),this.scrollBarH=new i(this.container,this),this.scrollBarV.on("scroll",function(y){k.$scrollAnimation||k.session.setScrollTop(y.data-k.scrollMargin.top)}),this.scrollBarH.on("scroll",function(y){k.$scrollAnimation||k.session.setScrollLeft(y.data-k.scrollMargin.left)}),this.scrollTop=0,this.scrollLeft=0,this.cursorPos={row:0,column:0},this.$fontMetrics=new g(this.container),this.$textLayer.$setFontMetrics(this.$fontMetrics),this.$textLayer.on("changeCharacterSize",function(y){k.updateCharacterSize(),k.onResize(!0,k.gutterWidth,k.$size.width,k.$size.height),k._signal("changeCharacterSize",y)}),this.$size={width:0,height:0,scrollerHeight:0,scrollerWidth:0,$dirty:!0},this.layerConfig={width:1,padding:0,firstRow:0,firstRowScreen:0,lastRow:0,lineHeight:0,characterWidth:0,minHeight:1,maxHeight:1,offset:0,height:1,gutterOffset:1},this.scrollMargin={left:0,right:0,top:0,bottom:0,v:0,h:0},this.margin={left:0,right:0,top:0,bottom:0,v:0,h:0},this.$keepTextAreaAtCursor=!S.isIOS,this.$loop=new p(this.$renderChanges.bind(this),this.container.ownerDocument.defaultView),this.$loop.schedule(this.CHANGE_FULL),this.updateCharacterSize(),this.setPadding(4),this.$addResizeObserver(),d.resetOptions(this),d._signal("renderer",this)}return w.prototype.updateCharacterSize=function(){this.$textLayer.allowBoldFonts!=this.$allowBoldFonts&&(this.$allowBoldFonts=this.$textLayer.allowBoldFonts,this.setStyle("ace_nobold",!this.$allowBoldFonts)),this.layerConfig.characterWidth=this.characterWidth=this.$textLayer.getCharacterWidth(),this.layerConfig.lineHeight=this.lineHeight=this.$textLayer.getLineHeight(),this.$updatePrintMargin(),T.setStyle(this.scroller.style,"line-height",this.lineHeight+"px")},w.prototype.setSession=function(O){this.session&&this.session.doc.off("changeNewLineMode",this.onChangeNewLineMode),this.session=O,O&&this.scrollMargin.top&&O.getScrollTop()<=0&&O.setScrollTop(-this.scrollMargin.top),this.$cursorLayer.setSession(O),this.$markerBack.setSession(O),this.$markerFront.setSession(O),this.$gutterLayer.setSession(O),this.$textLayer.setSession(O),O&&(this.$loop.schedule(this.CHANGE_FULL),this.session.$setFontMetrics(this.$fontMetrics),this.scrollBarH.scrollLeft=this.scrollBarV.scrollTop=null,this.onChangeNewLineMode=this.onChangeNewLineMode.bind(this),this.onChangeNewLineMode(),this.session.doc.on("changeNewLineMode",this.onChangeNewLineMode))},w.prototype.updateLines=function(O,B,k){if(B===void 0&&(B=1/0),this.$changedLines?(this.$changedLines.firstRow>O&&(this.$changedLines.firstRow=O),this.$changedLines.lastRowthis.layerConfig.lastRow||this.$loop.schedule(this.CHANGE_LINES)},w.prototype.onChangeNewLineMode=function(){this.$loop.schedule(this.CHANGE_TEXT),this.$textLayer.$updateEolChar(),this.session.$bidiHandler.setEolChar(this.$textLayer.EOL_CHAR)},w.prototype.onChangeTabSize=function(){this.$loop.schedule(this.CHANGE_TEXT|this.CHANGE_MARKER),this.$textLayer.onChangeTabSize()},w.prototype.updateText=function(){this.$loop.schedule(this.CHANGE_TEXT)},w.prototype.updateFull=function(O){O?this.$renderChanges(this.CHANGE_FULL,!0):this.$loop.schedule(this.CHANGE_FULL)},w.prototype.updateFontSize=function(){this.$textLayer.checkForSizeChanges()},w.prototype.$updateSizeAsync=function(){this.$loop.pending?this.$size.$dirty=!0:this.onResize()},w.prototype.onResize=function(O,B,k,_){if(!(this.resizing>2)){this.resizing>0?this.resizing++:this.resizing=O?1:0;var y=this.container;_||(_=y.clientHeight||y.scrollHeight),k||(k=y.clientWidth||y.scrollWidth);var m=this.$updateCachedSize(O,B,k,_);if(this.$resizeTimer&&this.$resizeTimer.cancel(),!this.$size.scrollerHeight||!k&&!_)return this.resizing=0;O&&(this.$gutterLayer.$padding=null),O?this.$renderChanges(m|this.$changes,!0):this.$loop.schedule(m|this.$changes),this.resizing&&(this.resizing=0),this.scrollBarH.scrollLeft=this.scrollBarV.scrollTop=null,this.$customScrollbar&&this.$updateCustomScrollbar(!0)}},w.prototype.$updateCachedSize=function(O,B,k,_){_-=this.$extraHeight||0;var y=0,m=this.$size,E={width:m.width,height:m.height,scrollerHeight:m.scrollerHeight,scrollerWidth:m.scrollerWidth};if(_&&(O||m.height!=_)&&(m.height=_,y|=this.CHANGE_SIZE,m.scrollerHeight=m.height,this.$horizScroll&&(m.scrollerHeight-=this.scrollBarH.getHeight()),this.scrollBarV.setHeight(m.scrollerHeight),this.scrollBarV.element.style.bottom=this.scrollBarH.getHeight()+"px",y=y|this.CHANGE_SCROLL),k&&(O||m.width!=k)){y|=this.CHANGE_SIZE,m.width=k,B==null&&(B=this.$showGutter?this.$gutter.offsetWidth:0),this.gutterWidth=B,T.setStyle(this.scrollBarH.element.style,"left",B+"px"),T.setStyle(this.scroller.style,"left",B+this.margin.left+"px"),m.scrollerWidth=Math.max(0,k-B-this.scrollBarV.getWidth()-this.margin.h),T.setStyle(this.$gutter.style,"left",this.margin.left+"px");var I=this.scrollBarV.getWidth()+"px";T.setStyle(this.scrollBarH.element.style,"right",I),T.setStyle(this.scroller.style,"right",I),T.setStyle(this.scroller.style,"bottom",this.scrollBarH.getHeight()),this.scrollBarH.setWidth(m.scrollerWidth),(this.session&&this.session.getUseWrapMode()&&this.adjustWrapLimit()||O)&&(y|=this.CHANGE_FULL)}return m.$dirty=!k||!_,y&&this._signal("resize",E),y},w.prototype.onGutterResize=function(O){var B=this.$showGutter?O:0;B!=this.gutterWidth&&(this.$changes|=this.$updateCachedSize(!0,B,this.$size.width,this.$size.height)),this.session.getUseWrapMode()&&this.adjustWrapLimit()?this.$loop.schedule(this.CHANGE_FULL):this.$size.$dirty?this.$loop.schedule(this.CHANGE_FULL):this.$computeLayerConfig()},w.prototype.adjustWrapLimit=function(){var O=this.$size.scrollerWidth-this.$padding*2,B=Math.floor(O/this.characterWidth);return this.session.adjustWrapLimit(B,this.$showPrintMargin&&this.$printMarginColumn)},w.prototype.setAnimatedScroll=function(O){this.setOption("animatedScroll",O)},w.prototype.getAnimatedScroll=function(){return this.$animatedScroll},w.prototype.setShowInvisibles=function(O){this.setOption("showInvisibles",O),this.session.$bidiHandler.setShowInvisibles(O)},w.prototype.getShowInvisibles=function(){return this.getOption("showInvisibles")},w.prototype.getDisplayIndentGuides=function(){return this.getOption("displayIndentGuides")},w.prototype.setDisplayIndentGuides=function(O){this.setOption("displayIndentGuides",O)},w.prototype.getHighlightIndentGuides=function(){return this.getOption("highlightIndentGuides")},w.prototype.setHighlightIndentGuides=function(O){this.setOption("highlightIndentGuides",O)},w.prototype.setShowPrintMargin=function(O){this.setOption("showPrintMargin",O)},w.prototype.getShowPrintMargin=function(){return this.getOption("showPrintMargin")},w.prototype.setPrintMarginColumn=function(O){this.setOption("printMarginColumn",O)},w.prototype.getPrintMarginColumn=function(){return this.getOption("printMarginColumn")},w.prototype.getShowGutter=function(){return this.getOption("showGutter")},w.prototype.setShowGutter=function(O){return this.setOption("showGutter",O)},w.prototype.getFadeFoldWidgets=function(){return this.getOption("fadeFoldWidgets")},w.prototype.setFadeFoldWidgets=function(O){this.setOption("fadeFoldWidgets",O)},w.prototype.setHighlightGutterLine=function(O){this.setOption("highlightGutterLine",O)},w.prototype.getHighlightGutterLine=function(){return this.getOption("highlightGutterLine")},w.prototype.$updatePrintMargin=function(){if(!(!this.$showPrintMargin&&!this.$printMarginEl)){if(!this.$printMarginEl){var O=T.createElement("div");O.className="ace_layer ace_print-margin-layer",this.$printMarginEl=T.createElement("div"),this.$printMarginEl.className="ace_print-margin",O.appendChild(this.$printMarginEl),this.content.insertBefore(O,this.content.firstChild)}var B=this.$printMarginEl.style;B.left=Math.round(this.characterWidth*this.$printMarginColumn+this.$padding)+"px",B.visibility=this.$showPrintMargin?"visible":"hidden",this.session&&this.session.$wrap==-1&&this.adjustWrapLimit()}},w.prototype.getContainerElement=function(){return this.container},w.prototype.getMouseEventTarget=function(){return this.scroller},w.prototype.getTextAreaContainer=function(){return this.container},w.prototype.$moveTextAreaToCursor=function(){if(!this.$isMousePressed){var O=this.textarea.style,B=this.$composition;if(!this.$keepTextAreaAtCursor&&!B){T.translate(this.textarea,-100,0);return}var k=this.$cursorLayer.$pixelPos;if(k){B&&B.markerRange&&(k=this.$cursorLayer.getPixelPosition(B.markerRange.start,!0));var _=this.layerConfig,y=k.top,m=k.left;y-=_.offset;var E=B&&B.useTextareaForIME||S.isMobile?this.lineHeight:1;if(y<0||y>_.height-E){T.translate(this.textarea,0,0);return}var I=1,N=this.$size.height-E;if(!B)y+=this.lineHeight;else if(B.useTextareaForIME){var W=this.textarea.value;I=this.characterWidth*this.session.$getStringScreenWidth(W)[0]}else y+=this.lineHeight+2;m-=this.scrollLeft,m>this.$size.scrollerWidth-I&&(m=this.$size.scrollerWidth-I),m+=this.gutterWidth+this.margin.left,T.setStyle(O,"height",E+"px"),T.setStyle(O,"width",I+"px"),T.translate(this.textarea,Math.min(m,this.$size.scrollerWidth-I),Math.min(y,N))}}},w.prototype.getFirstVisibleRow=function(){return this.layerConfig.firstRow},w.prototype.getFirstFullyVisibleRow=function(){return this.layerConfig.firstRow+(this.layerConfig.offset===0?0:1)},w.prototype.getLastFullyVisibleRow=function(){var O=this.layerConfig,B=O.lastRow,k=this.session.documentToScreenRow(B,0)*O.lineHeight;return k-this.session.getScrollTop()>O.height-O.lineHeight?B-1:B},w.prototype.getLastVisibleRow=function(){return this.layerConfig.lastRow},w.prototype.setPadding=function(O){this.$padding=O,this.$textLayer.setPadding(O),this.$cursorLayer.setPadding(O),this.$markerFront.setPadding(O),this.$markerBack.setPadding(O),this.$loop.schedule(this.CHANGE_FULL),this.$updatePrintMargin()},w.prototype.setScrollMargin=function(O,B,k,_){var y=this.scrollMargin;y.top=O|0,y.bottom=B|0,y.right=_|0,y.left=k|0,y.v=y.top+y.bottom,y.h=y.left+y.right,y.top&&this.scrollTop<=0&&this.session&&this.session.setScrollTop(-y.top),this.updateFull()},w.prototype.setMargin=function(O,B,k,_){var y=this.margin;y.top=O|0,y.bottom=B|0,y.right=_|0,y.left=k|0,y.v=y.top+y.bottom,y.h=y.left+y.right,this.$updateCachedSize(!0,this.gutterWidth,this.$size.width,this.$size.height),this.updateFull()},w.prototype.getHScrollBarAlwaysVisible=function(){return this.$hScrollBarAlwaysVisible},w.prototype.setHScrollBarAlwaysVisible=function(O){this.setOption("hScrollBarAlwaysVisible",O)},w.prototype.getVScrollBarAlwaysVisible=function(){return this.$vScrollBarAlwaysVisible},w.prototype.setVScrollBarAlwaysVisible=function(O){this.setOption("vScrollBarAlwaysVisible",O)},w.prototype.$updateScrollBarV=function(){var O=this.layerConfig.maxHeight,B=this.$size.scrollerHeight;!this.$maxLines&&this.$scrollPastEnd&&(O-=(B-this.lineHeight)*this.$scrollPastEnd,this.scrollTop>O-B&&(O=this.scrollTop+B,this.scrollBarV.scrollTop=null)),this.scrollBarV.setScrollHeight(O+this.scrollMargin.v),this.scrollBarV.setScrollTop(this.scrollTop+this.scrollMargin.top)},w.prototype.$updateScrollBarH=function(){this.scrollBarH.setScrollWidth(this.layerConfig.width+2*this.$padding+this.scrollMargin.h),this.scrollBarH.setScrollLeft(this.scrollLeft+this.scrollMargin.left)},w.prototype.freeze=function(){this.$frozen=!0},w.prototype.unfreeze=function(){this.$frozen=!1},w.prototype.$renderChanges=function(O,B){if(this.$changes&&(O|=this.$changes,this.$changes=0),!this.session||!this.container.offsetWidth||this.$frozen||!O&&!B){this.$changes|=O;return}if(this.$size.$dirty)return this.$changes|=O,this.onResize(!0);this.lineHeight||this.$textLayer.checkForSizeChanges(),this._signal("beforeRender",O),this.session&&this.session.$bidiHandler&&this.session.$bidiHandler.updateCharacterWidths(this.$fontMetrics);var k=this.layerConfig;if(O&this.CHANGE_FULL||O&this.CHANGE_SIZE||O&this.CHANGE_TEXT||O&this.CHANGE_LINES||O&this.CHANGE_SCROLL||O&this.CHANGE_H_SCROLL){if(O|=this.$computeLayerConfig()|this.$loop.clear(),k.firstRow!=this.layerConfig.firstRow&&k.firstRowScreen==this.layerConfig.firstRowScreen){var _=this.scrollTop+(k.firstRow-Math.max(this.layerConfig.firstRow,0))*this.lineHeight;_>0&&(this.scrollTop=_,O=O|this.CHANGE_SCROLL,O|=this.$computeLayerConfig()|this.$loop.clear())}k=this.layerConfig,this.$updateScrollBarV(),O&this.CHANGE_H_SCROLL&&this.$updateScrollBarH(),T.translate(this.content,-this.scrollLeft,-k.offset);var y=k.width+2*this.$padding+"px",m=k.minHeight+"px";T.setStyle(this.content.style,"width",y),T.setStyle(this.content.style,"height",m)}if(O&this.CHANGE_H_SCROLL&&(T.translate(this.content,-this.scrollLeft,-k.offset),this.scroller.className=this.scrollLeft<=0?"ace_scroller ":"ace_scroller ace_scroll-left ",this.enableKeyboardAccessibility&&(this.scroller.className+=this.keyboardFocusClassName)),O&this.CHANGE_FULL){this.$changedLines=null,this.$textLayer.update(k),this.$showGutter&&this.$gutterLayer.update(k),this.$customScrollbar&&this.$scrollDecorator.$updateDecorators(k),this.$markerBack.update(k),this.$markerFront.update(k),this.$cursorLayer.update(k),this.$moveTextAreaToCursor(),this._signal("afterRender",O);return}if(O&this.CHANGE_SCROLL){this.$changedLines=null,O&this.CHANGE_TEXT||O&this.CHANGE_LINES?this.$textLayer.update(k):this.$textLayer.scrollLines(k),this.$showGutter&&(O&this.CHANGE_GUTTER||O&this.CHANGE_LINES?this.$gutterLayer.update(k):this.$gutterLayer.scrollLines(k)),this.$customScrollbar&&this.$scrollDecorator.$updateDecorators(k),this.$markerBack.update(k),this.$markerFront.update(k),this.$cursorLayer.update(k),this.$moveTextAreaToCursor(),this._signal("afterRender",O);return}O&this.CHANGE_TEXT?(this.$changedLines=null,this.$textLayer.update(k),this.$showGutter&&this.$gutterLayer.update(k),this.$customScrollbar&&this.$scrollDecorator.$updateDecorators(k)):O&this.CHANGE_LINES?((this.$updateLines()||O&this.CHANGE_GUTTER&&this.$showGutter)&&this.$gutterLayer.update(k),this.$customScrollbar&&this.$scrollDecorator.$updateDecorators(k)):O&this.CHANGE_TEXT||O&this.CHANGE_GUTTER?(this.$showGutter&&this.$gutterLayer.update(k),this.$customScrollbar&&this.$scrollDecorator.$updateDecorators(k)):O&this.CHANGE_CURSOR&&(this.$highlightGutterLine&&this.$gutterLayer.updateLineHighlight(k),this.$customScrollbar&&this.$scrollDecorator.$updateDecorators(k)),O&this.CHANGE_CURSOR&&(this.$cursorLayer.update(k),this.$moveTextAreaToCursor()),O&(this.CHANGE_MARKER|this.CHANGE_MARKER_FRONT)&&this.$markerFront.update(k),O&(this.CHANGE_MARKER|this.CHANGE_MARKER_BACK)&&this.$markerBack.update(k),this._signal("afterRender",O)},w.prototype.$autosize=function(){var O=this.session.getScreenLength()*this.lineHeight,B=this.$maxLines*this.lineHeight,k=Math.min(B,Math.max((this.$minLines||1)*this.lineHeight,O))+this.scrollMargin.v+(this.$extraHeight||0);this.$horizScroll&&(k+=this.scrollBarH.getHeight()),this.$maxPixelHeight&&k>this.$maxPixelHeight&&(k=this.$maxPixelHeight);var _=k<=2*this.lineHeight,y=!_&&O>B;if(k!=this.desiredHeight||this.$size.height!=this.desiredHeight||y!=this.$vScroll){y!=this.$vScroll&&(this.$vScroll=y,this.scrollBarV.setVisible(y));var m=this.container.clientWidth;this.container.style.height=k+"px",this.$updateCachedSize(!0,this.$gutterWidth,m,k),this.desiredHeight=k,this._signal("autosize")}},w.prototype.$computeLayerConfig=function(){var O=this.session,B=this.$size,k=B.height<=2*this.lineHeight,_=this.session.getScreenLength(),y=_*this.lineHeight,m=this.$getLongestLine(),E=!k&&(this.$hScrollBarAlwaysVisible||B.scrollerWidth-m-2*this.$padding<0),I=this.$horizScroll!==E;I&&(this.$horizScroll=E,this.scrollBarH.setVisible(E));var N=this.$vScroll;this.$maxLines&&this.lineHeight>1&&this.$autosize();var W=B.scrollerHeight+this.lineHeight,z=!this.$maxLines&&this.$scrollPastEnd?(B.scrollerHeight-this.lineHeight)*this.$scrollPastEnd:0;y+=z;var U=this.scrollMargin;this.session.setScrollTop(Math.max(-U.top,Math.min(this.scrollTop,y-B.scrollerHeight+U.bottom))),this.session.setScrollLeft(Math.max(-U.left,Math.min(this.scrollLeft,m+2*this.$padding-B.scrollerWidth+U.right)));var j=!k&&(this.$vScrollBarAlwaysVisible||B.scrollerHeight-y+z<0||this.scrollTop>U.top),q=N!==j;q&&(this.$vScroll=j,this.scrollBarV.setVisible(j));var Y=this.scrollTop%this.lineHeight,t0=Math.ceil(W/this.lineHeight)-1,n0=Math.max(0,Math.round((this.scrollTop-Y)/this.lineHeight)),u0=n0+t0,h0,m0,p0=this.lineHeight;n0=O.screenToDocumentRow(n0,0);var b0=O.getFoldLine(n0);b0&&(n0=b0.start.row),h0=O.documentToScreenRow(n0,0),m0=O.getRowLength(n0)*p0,u0=Math.min(O.screenToDocumentRow(u0,0),O.getLength()-1),W=B.scrollerHeight+O.getRowLength(u0)*p0+m0,Y=this.scrollTop-h0*p0;var k0=0;return(this.layerConfig.width!=m||I)&&(k0=this.CHANGE_H_SCROLL),(I||q)&&(k0|=this.$updateCachedSize(!0,this.gutterWidth,B.width,B.height),this._signal("scrollbarVisibilityChanged"),q&&(m=this.$getLongestLine())),this.layerConfig={width:m,padding:this.$padding,firstRow:n0,firstRowScreen:h0,lastRow:u0,lineHeight:p0,characterWidth:this.characterWidth,minHeight:W,maxHeight:y,offset:Y,gutterOffset:p0?Math.max(0,Math.ceil((Y+B.height-B.scrollerHeight)/p0)):0,height:this.$size.scrollerHeight},this.session.$bidiHandler&&this.session.$bidiHandler.setContentWidth(m-this.$padding),k0},w.prototype.$updateLines=function(){if(this.$changedLines){var O=this.$changedLines.firstRow,B=this.$changedLines.lastRow;this.$changedLines=null;var k=this.layerConfig;if(!(O>k.lastRow+1)&&!(Bthis.$textLayer.MAX_LINE_LENGTH&&(O=this.$textLayer.MAX_LINE_LENGTH+30),Math.max(this.$size.scrollerWidth-2*this.$padding,Math.round(O*this.characterWidth))},w.prototype.updateFrontMarkers=function(){this.$markerFront.setMarkers(this.session.getMarkers(!0)),this.$loop.schedule(this.CHANGE_MARKER_FRONT)},w.prototype.updateBackMarkers=function(){this.$markerBack.setMarkers(this.session.getMarkers()),this.$loop.schedule(this.CHANGE_MARKER_BACK)},w.prototype.addGutterDecoration=function(O,B){this.$gutterLayer.addGutterDecoration(O,B)},w.prototype.removeGutterDecoration=function(O,B){this.$gutterLayer.removeGutterDecoration(O,B)},w.prototype.updateBreakpoints=function(O){this.$loop.schedule(this.CHANGE_GUTTER)},w.prototype.setAnnotations=function(O){this.$gutterLayer.setAnnotations(O),this.$loop.schedule(this.CHANGE_GUTTER)},w.prototype.updateCursor=function(){this.$loop.schedule(this.CHANGE_CURSOR)},w.prototype.hideCursor=function(){this.$cursorLayer.hideCursor()},w.prototype.showCursor=function(){this.$cursorLayer.showCursor()},w.prototype.scrollSelectionIntoView=function(O,B,k){this.scrollCursorIntoView(O,k),this.scrollCursorIntoView(B,k)},w.prototype.scrollCursorIntoView=function(O,B,k){if(this.$size.scrollerHeight!==0){var _=this.$cursorLayer.getPixelPosition(O),y=_.left,m=_.top,E=k&&k.top||0,I=k&&k.bottom||0;this.$scrollAnimation&&(this.$stopAnimation=!0);var N=this.$scrollAnimation?this.session.getScrollTop():this.scrollTop;N+E>m?(B&&N+E>m+this.lineHeight&&(m-=B*this.$size.scrollerHeight),m===0&&(m=-this.scrollMargin.top),this.session.setScrollTop(m)):N+this.$size.scrollerHeight-I=1-this.scrollMargin.top||B>0&&this.session.getScrollTop()+this.$size.scrollerHeight-this.layerConfig.maxHeight<-1+this.scrollMargin.bottom||O<0&&this.session.getScrollLeft()>=1-this.scrollMargin.left||O>0&&this.session.getScrollLeft()+this.$size.scrollerWidth-this.layerConfig.width<-1+this.scrollMargin.right)return!0},w.prototype.pixelToScreenCoordinates=function(O,B){var k;if(this.$hasCssTransforms){k={top:0,left:0};var _=this.$fontMetrics.transformCoordinates([O,B]);O=_[1]-this.gutterWidth-this.margin.left,B=_[0]}else k=this.scroller.getBoundingClientRect();var y=O+this.scrollLeft-k.left-this.$padding,m=y/this.characterWidth,E=Math.floor((B+this.scrollTop-k.top)/this.lineHeight),I=this.$blockCursor?Math.floor(m):Math.round(m);return{row:E,column:I,side:m-I>0?1:-1,offsetX:y}},w.prototype.screenToTextCoordinates=function(O,B){var k;if(this.$hasCssTransforms){k={top:0,left:0};var _=this.$fontMetrics.transformCoordinates([O,B]);O=_[1]-this.gutterWidth-this.margin.left,B=_[0]}else k=this.scroller.getBoundingClientRect();var y=O+this.scrollLeft-k.left-this.$padding,m=y/this.characterWidth,E=this.$blockCursor?Math.floor(m):Math.round(m),I=Math.floor((B+this.scrollTop-k.top)/this.lineHeight);return this.session.screenToDocumentPosition(I,Math.max(E,0),y)},w.prototype.textToScreenCoordinates=function(O,B){var k=this.scroller.getBoundingClientRect(),_=this.session.documentToScreenPosition(O,B),y=this.$padding+(this.session.$bidiHandler.isBidiRow(_.row,O)?this.session.$bidiHandler.getPosLeft(_.column):Math.round(_.column*this.characterWidth)),m=_.row*this.lineHeight;return{pageX:k.left+y-this.scrollLeft,pageY:k.top+m-this.scrollTop}},w.prototype.visualizeFocus=function(){T.addCssClass(this.container,"ace_focus")},w.prototype.visualizeBlur=function(){T.removeCssClass(this.container,"ace_focus")},w.prototype.showComposition=function(O){this.$composition=O,O.cssText||(O.cssText=this.textarea.style.cssText),O.useTextareaForIME==null&&(O.useTextareaForIME=this.$useTextareaForIME),this.$useTextareaForIME?(T.addCssClass(this.textarea,"ace_composition"),this.textarea.style.cssText="",this.$moveTextAreaToCursor(),this.$cursorLayer.element.style.display="none"):O.markerId=this.session.addMarker(O.markerRange,"ace_composition_marker","text")},w.prototype.setCompositionText=function(O){var B=this.session.selection.cursor;this.addToken(O,"composition_placeholder",B.row,B.column),this.$moveTextAreaToCursor()},w.prototype.hideComposition=function(){if(this.$composition){this.$composition.markerId&&this.session.removeMarker(this.$composition.markerId),T.removeCssClass(this.textarea,"ace_composition"),this.textarea.style.cssText=this.$composition.cssText;var O=this.session.selection.cursor;this.removeExtraToken(O.row,O.column),this.$composition=null,this.$cursorLayer.element.style.display=""}},w.prototype.setGhostText=function(O,B){var k=this.session.selection.cursor,_=B||{row:k.row,column:k.column};this.removeGhostText();var y=O.split(` -`);this.addToken(y[0],"ghost_text",_.row,_.column),this.$ghostText={text:O,position:{row:_.row,column:_.column}},y.length>1&&(this.$ghostTextWidget={text:y.slice(1).join(` -`),row:_.row,column:_.column,className:"ace_ghost_text"},this.session.widgetManager.addLineWidget(this.$ghostTextWidget))},w.prototype.removeGhostText=function(){if(this.$ghostText){var O=this.$ghostText.position;this.removeExtraToken(O.row,O.column),this.$ghostTextWidget&&(this.session.widgetManager.removeLineWidget(this.$ghostTextWidget),this.$ghostTextWidget=null),this.$ghostText=null}},w.prototype.addToken=function(O,B,k,_){var y=this.session;y.bgTokenizer.lines[k]=null;var m={type:B,value:O},E=y.getTokens(k);if(_==null||!E.length)E.push(m);else for(var I=0,N=0;N1||Math.abs(O.$size.height-_)>1?O.$resizeTimer.delay():O.$resizeTimer.cancel()}),this.$resizeObserver.observe(this.container)}},w}();v.prototype.CHANGE_CURSOR=1,v.prototype.CHANGE_MARKER=2,v.prototype.CHANGE_GUTTER=4,v.prototype.CHANGE_SCROLL=8,v.prototype.CHANGE_LINES=16,v.prototype.CHANGE_TEXT=32,v.prototype.CHANGE_SIZE=64,v.prototype.CHANGE_MARKER_BACK=128,v.prototype.CHANGE_MARKER_FRONT=256,v.prototype.CHANGE_FULL=512,v.prototype.CHANGE_H_SCROLL=1024,v.prototype.$changes=0,v.prototype.$padding=null,v.prototype.$frozen=!1,v.prototype.STEPS=8,L.implement(v.prototype,A),d.defineOptions(v.prototype,"renderer",{useResizeObserver:{set:function(w){!w&&this.$resizeObserver?(this.$resizeObserver.disconnect(),this.$resizeTimer.cancel(),this.$resizeTimer=this.$resizeObserver=null):w&&!this.$resizeObserver&&this.$addResizeObserver()}},animatedScroll:{initialValue:!1},showInvisibles:{set:function(w){this.$textLayer.setShowInvisibles(w)&&this.$loop.schedule(this.CHANGE_TEXT)},initialValue:!1},showPrintMargin:{set:function(){this.$updatePrintMargin()},initialValue:!0},printMarginColumn:{set:function(){this.$updatePrintMargin()},initialValue:80},printMargin:{set:function(w){typeof w=="number"&&(this.$printMarginColumn=w),this.$showPrintMargin=!!w,this.$updatePrintMargin()},get:function(){return this.$showPrintMargin&&this.$printMarginColumn}},showGutter:{set:function(w){this.$gutter.style.display=w?"block":"none",this.$loop.schedule(this.CHANGE_FULL),this.onGutterResize()},initialValue:!0},useSvgGutterIcons:{set:function(w){this.$gutterLayer.$useSvgGutterIcons=w},initialValue:!1},showFoldedAnnotations:{set:function(w){this.$gutterLayer.$showFoldedAnnotations=w},initialValue:!1},fadeFoldWidgets:{set:function(w){T.setCssClass(this.$gutter,"ace_fade-fold-widgets",w)},initialValue:!1},showFoldWidgets:{set:function(w){this.$gutterLayer.setShowFoldWidgets(w),this.$loop.schedule(this.CHANGE_GUTTER)},initialValue:!0},displayIndentGuides:{set:function(w){this.$textLayer.setDisplayIndentGuides(w)&&this.$loop.schedule(this.CHANGE_TEXT)},initialValue:!0},highlightIndentGuides:{set:function(w){this.$textLayer.setHighlightIndentGuides(w)==!0?this.$textLayer.$highlightIndentGuide():this.$textLayer.$clearActiveIndentGuide(this.$textLayer.$lines.cells)},initialValue:!0},highlightGutterLine:{set:function(w){this.$gutterLayer.setHighlightGutterLine(w),this.$loop.schedule(this.CHANGE_GUTTER)},initialValue:!0},hScrollBarAlwaysVisible:{set:function(w){(!this.$hScrollBarAlwaysVisible||!this.$horizScroll)&&this.$loop.schedule(this.CHANGE_SCROLL)},initialValue:!1},vScrollBarAlwaysVisible:{set:function(w){(!this.$vScrollBarAlwaysVisible||!this.$vScroll)&&this.$loop.schedule(this.CHANGE_SCROLL)},initialValue:!1},fontSize:{set:function(w){typeof w=="number"&&(w=w+"px"),this.container.style.fontSize=w,this.updateFontSize()},initialValue:12},fontFamily:{set:function(w){this.container.style.fontFamily=w,this.updateFontSize()}},maxLines:{set:function(w){this.updateFull()}},minLines:{set:function(w){this.$minLines<562949953421311||(this.$minLines=0),this.updateFull()}},maxPixelHeight:{set:function(w){this.updateFull()},initialValue:0},scrollPastEnd:{set:function(w){w=+w||0,this.$scrollPastEnd!=w&&(this.$scrollPastEnd=w,this.$loop.schedule(this.CHANGE_SCROLL))},initialValue:0,handlesSet:!0},fixedWidthGutter:{set:function(w){this.$gutterLayer.$fixedWidth=!!w,this.$loop.schedule(this.CHANGE_GUTTER)}},customScrollbar:{set:function(w){this.$updateCustomScrollbar(w)},initialValue:!1},theme:{set:function(w){this.setTheme(w)},get:function(){return this.$themeId||this.theme},initialValue:"./theme/textmate",handlesSet:!0},hasCssTransforms:{},useTextareaForIME:{initialValue:!S.isMobile&&!S.isIE}}),M.VirtualRenderer=v}),ace.define("ace/worker/worker_client",["require","exports","module","ace/lib/oop","ace/lib/net","ace/lib/event_emitter","ace/config"],function(n,M,G){"use strict";var L=n("../lib/oop"),T=n("../lib/net"),C=n("../lib/event_emitter").EventEmitter,d=n("../config");function h(i){var r="importScripts('"+T.qualifyURL(i)+"');";try{return new Blob([r],{type:"application/javascript"})}catch(p){var a=window.BlobBuilder||window.WebKitBlobBuilder||window.MozBlobBuilder,c=new a;return c.append(r),c.getBlob("application/javascript")}}function l(i){if(typeof Worker=="undefined")return{postMessage:function(){},terminate:function(){}};if(d.get("loadWorkerFromBlob")){var r=h(i),a=window.URL||window.webkitURL,c=a.createObjectURL(r);return new Worker(c)}return new Worker(i)}var o=function(i){i.postMessage||(i=this.$createWorkerFromOldConfig.apply(this,arguments)),this.$worker=i,this.$sendDeltaQueue=this.$sendDeltaQueue.bind(this),this.changeListener=this.changeListener.bind(this),this.onMessage=this.onMessage.bind(this),this.callbackId=1,this.callbacks={},this.$worker.onmessage=this.onMessage};(function(){L.implement(this,C),this.$createWorkerFromOldConfig=function(i,r,a,c,p){if(n.nameToUrl&&!n.toUrl&&(n.toUrl=n.nameToUrl),d.get("packaged")||!n.toUrl)c=c||d.moduleUrl(r,"worker");else{var g=this.$normalizePath;c=c||g(n.toUrl("ace/worker/worker.js",null,"_"));var A={};i.forEach(function(b){A[b]=g(n.toUrl(b,null,"_").replace(/(\.js)?(\?.*)?$/,""))})}return this.$worker=l(c),p&&this.send("importScripts",p),this.$worker.postMessage({init:!0,tlns:A,module:r,classname:a}),this.$worker},this.onMessage=function(i){var r=i.data;switch(r.type){case"event":this._signal(r.name,{data:r.data});break;case"call":var a=this.callbacks[r.id];a&&(a(r.data),delete this.callbacks[r.id]);break;case"error":this.reportError(r.data);break;case"log":window.console&&console.log&&console.log.apply(console,r.data);break}},this.reportError=function(i){window.console&&console.error&&console.error(i)},this.$normalizePath=function(i){return T.qualifyURL(i)},this.terminate=function(){this._signal("terminate",{}),this.deltaQueue=null,this.$worker.terminate(),this.$worker.onerror=function(i){i.preventDefault()},this.$worker=null,this.$doc&&this.$doc.off("change",this.changeListener),this.$doc=null},this.send=function(i,r){this.$worker.postMessage({command:i,args:r})},this.call=function(i,r,a){if(a){var c=this.callbackId++;this.callbacks[c]=a,r.push(c)}this.send(i,r)},this.emit=function(i,r){try{r.data&&r.data.err&&(r.data.err={message:r.data.err.message,stack:r.data.err.stack,code:r.data.err.code}),this.$worker&&this.$worker.postMessage({event:i,data:{data:r.data}})}catch(a){console.error(a.stack)}},this.attachToDocument=function(i){this.$doc&&this.terminate(),this.$doc=i,this.call("setValue",[i.getValue()]),i.on("change",this.changeListener,!0)},this.changeListener=function(i){this.deltaQueue||(this.deltaQueue=[],setTimeout(this.$sendDeltaQueue,0)),i.action=="insert"?this.deltaQueue.push(i.start,i.lines):this.deltaQueue.push(i.start,i.end)},this.$sendDeltaQueue=function(){var i=this.deltaQueue;i&&(this.deltaQueue=null,i.length>50&&i.length>this.$doc.getLength()>>1?this.call("setValue",[this.$doc.getValue()]):this.emit("change",{data:i}))}}).call(o.prototype);var s=function(i,r,a){var c=null,p=!1,g=Object.create(C),A=[],b=new o({messageBuffer:A,terminate:function(){},postMessage:function(S){A.push(S),c&&(p?setTimeout($):$())}});b.setEmitSync=function(S){p=S};var $=function(){var S=A.shift();S.command?c[S.command].apply(c,S.args):S.event&&g._signal(S.event,S.data)};return g.postMessage=function(S){b.onMessage({data:S})},g.callback=function(S,v){this.postMessage({type:"call",id:v,data:S})},g.emit=function(S,v){this.postMessage({type:"event",name:S,data:v})},d.loadModule(["worker",r],function(S){for(c=new S[a](g);A.length;)$()}),b};M.UIWorkerClient=s,M.WorkerClient=o,M.createWorker=l}),ace.define("ace/placeholder",["require","exports","module","ace/range","ace/lib/event_emitter","ace/lib/oop"],function(n,M,G){"use strict";var L=n("./range").Range,T=n("./lib/event_emitter").EventEmitter,C=n("./lib/oop"),d=function(){function h(l,o,s,i,r,a){var c=this;this.length=o,this.session=l,this.doc=l.getDocument(),this.mainClass=r,this.othersClass=a,this.$onUpdate=this.onUpdate.bind(this),this.doc.on("change",this.$onUpdate,!0),this.$others=i,this.$onCursorChange=function(){setTimeout(function(){c.onCursorChange()})},this.$pos=s;var p=l.getUndoManager().$undoStack||l.getUndoManager().$undostack||{length:-1};this.$undoStackDepth=p.length,this.setup(),l.selection.on("changeCursor",this.$onCursorChange)}return h.prototype.setup=function(){var l=this,o=this.doc,s=this.session;this.selectionBefore=s.selection.toJSON(),s.selection.inMultiSelectMode&&s.selection.toSingleRange(),this.pos=o.createAnchor(this.$pos.row,this.$pos.column);var i=this.pos;i.$insertRight=!0,i.detach(),i.markerId=s.addMarker(new L(i.row,i.column,i.row,i.column+this.length),this.mainClass,null,!1),this.others=[],this.$others.forEach(function(r){var a=o.createAnchor(r.row,r.column);a.$insertRight=!0,a.detach(),l.others.push(a)}),s.setUndoSelect(!1)},h.prototype.showOtherMarkers=function(){if(!this.othersActive){var l=this.session,o=this;this.othersActive=!0,this.others.forEach(function(s){s.markerId=l.addMarker(new L(s.row,s.column,s.row,s.column+o.length),o.othersClass,null,!1)})}},h.prototype.hideOtherMarkers=function(){if(this.othersActive){this.othersActive=!1;for(var l=0;l=this.pos.column&&o.start.column<=this.pos.column+this.length+1,r=o.start.column-this.pos.column;if(this.updateAnchors(l),i&&(this.length+=s),i&&!this.session.$fromUndo){if(l.action==="insert")for(var a=this.others.length-1;a>=0;a--){var c=this.others[a],p={row:c.row,column:c.column+r};this.doc.insertMergedLines(p,l.lines)}else if(l.action==="remove")for(var a=this.others.length-1;a>=0;a--){var c=this.others[a],p={row:c.row,column:c.column+r};this.doc.remove(new L(p.row,p.column,p.row,p.column-s))}}this.$updating=!1,this.updateMarkers()}},h.prototype.updateAnchors=function(l){this.pos.onChange(l);for(var o=this.others.length;o--;)this.others[o].onChange(l);this.updateMarkers()},h.prototype.updateMarkers=function(){if(!this.$updating){var l=this,o=this.session,s=function(r,a){o.removeMarker(r.markerId),r.markerId=o.addMarker(new L(r.row,r.column,r.row,r.column+l.length),a,null,!1)};s(this.pos,this.mainClass);for(var i=this.others.length;i--;)s(this.others[i],this.othersClass)}},h.prototype.onCursorChange=function(l){if(!(this.$updating||!this.session)){var o=this.session.selection.getCursor();o.row===this.pos.row&&o.column>=this.pos.column&&o.column<=this.pos.column+this.length?(this.showOtherMarkers(),this._emit("cursorEnter",l)):(this.hideOtherMarkers(),this._emit("cursorLeave",l))}},h.prototype.detach=function(){this.session.removeMarker(this.pos&&this.pos.markerId),this.hideOtherMarkers(),this.doc.off("change",this.$onUpdate),this.session.selection.off("changeCursor",this.$onCursorChange),this.session.setUndoSelect(!0),this.session=null},h.prototype.cancel=function(){if(this.$undoStackDepth!==-1){for(var l=this.session.getUndoManager(),o=(l.$undoStack||l.$undostack).length-this.$undoStackDepth,s=0;s1?T.multiSelect.joinSelections():T.multiSelect.splitIntoLines()},bindKey:{win:"Ctrl-Alt-L",mac:"Ctrl-Alt-L"},readOnly:!0},{name:"splitSelectionIntoLines",description:"Split into lines",exec:function(T){T.multiSelect.splitIntoLines()},readOnly:!0},{name:"alignCursors",description:"Align cursors",exec:function(T){T.alignCursors()},bindKey:{win:"Ctrl-Alt-A",mac:"Ctrl-Alt-A"},scrollIntoView:"cursor"},{name:"findAll",description:"Find all",exec:function(T){T.findAll()},bindKey:{win:"Ctrl-Alt-K",mac:"Ctrl-Alt-G"},scrollIntoView:"cursor",readOnly:!0}],M.multiSelectCommands=[{name:"singleSelection",description:"Single selection",bindKey:"esc",exec:function(T){T.exitMultiSelectMode()},scrollIntoView:"cursor",readOnly:!0,isAvailable:function(T){return T&&T.inMultiSelectMode}}];var L=n("../keyboard/hash_handler").HashHandler;M.keyboardHandler=new L(M.multiSelectCommands)}),ace.define("ace/multi_select",["require","exports","module","ace/range_list","ace/range","ace/selection","ace/mouse/multi_select_handler","ace/lib/event","ace/lib/lang","ace/commands/multi_select_commands","ace/search","ace/edit_session","ace/editor","ace/config"],function(n,M,G){var L=n("./range_list").RangeList,T=n("./range").Range,C=n("./selection").Selection,d=n("./mouse/multi_select_handler").onMouseDown,h=n("./lib/event"),l=n("./lib/lang"),o=n("./commands/multi_select_commands");M.commands=o.defaultCommands.concat(o.multiSelectCommands);var s=n("./search").Search,i=new s;function r(b,$,S){return i.$options.wrap=!0,i.$options.needle=$,i.$options.backwards=S==-1,i.find(b)}var a=n("./edit_session").EditSession;(function(){this.getSelectionMarkers=function(){return this.$selectionMarkers}}).call(a.prototype),function(){this.ranges=null,this.rangeList=null,this.addRange=function(b,$){if(b){if(!this.inMultiSelectMode&&this.rangeCount===0){var S=this.toOrientedRange();if(this.rangeList.add(S),this.rangeList.add(b),this.rangeList.ranges.length!=2)return this.rangeList.removeAll(),$||this.fromOrientedRange(b);this.rangeList.removeAll(),this.rangeList.add(S),this.$onAddRange(S)}b.cursor||(b.cursor=b.end);var v=this.rangeList.add(b);return this.$onAddRange(b),v.length&&this.$onRemoveRange(v),this.rangeCount>1&&!this.inMultiSelectMode&&(this._signal("multiSelect"),this.inMultiSelectMode=!0,this.session.$undoSelect=!1,this.rangeList.attach(this.session)),$||this.fromOrientedRange(b)}},this.toSingleRange=function(b){b=b||this.ranges[0];var $=this.rangeList.removeAll();$.length&&this.$onRemoveRange($),b&&this.fromOrientedRange(b)},this.substractPoint=function(b){var $=this.rangeList.substractPoint(b);if($)return this.$onRemoveRange($),$[0]},this.mergeOverlappingRanges=function(){var b=this.rangeList.merge();b.length&&this.$onRemoveRange(b)},this.$onAddRange=function(b){this.rangeCount=this.rangeList.ranges.length,this.ranges.unshift(b),this._signal("addRange",{range:b})},this.$onRemoveRange=function(b){if(this.rangeCount=this.rangeList.ranges.length,this.rangeCount==1&&this.inMultiSelectMode){var $=this.rangeList.ranges.pop();b.push($),this.rangeCount=0}for(var S=b.length;S--;){var v=this.ranges.indexOf(b[S]);this.ranges.splice(v,1)}this._signal("removeRange",{ranges:b}),this.rangeCount===0&&this.inMultiSelectMode&&(this.inMultiSelectMode=!1,this._signal("singleSelect"),this.session.$undoSelect=!0,this.rangeList.detach(this.session)),$=$||this.ranges[0],$&&!$.isEqual(this.getRange())&&this.fromOrientedRange($)},this.$initRangeList=function(){this.rangeList||(this.rangeList=new L,this.ranges=[],this.rangeCount=0)},this.getAllRanges=function(){return this.rangeCount?this.rangeList.ranges.concat():[this.getRange()]},this.splitIntoLines=function(){for(var b=this.ranges.length?this.ranges:[this.getRange()],$=[],S=0;S1){var b=this.rangeList.ranges,$=b[b.length-1],S=T.fromPoints(b[0].start,$.end);this.toSingleRange(),this.setSelectionRange(S,$.cursor==$.start)}else{var v=this.session.documentToScreenPosition(this.cursor),w=this.session.documentToScreenPosition(this.anchor),O=this.rectangularRangeBlock(v,w);O.forEach(this.addRange,this)}},this.rectangularRangeBlock=function(b,$,S){var v=[],w=b.column<$.column;if(w)var O=b.column,B=$.column,k=b.offsetX,_=$.offsetX;else var O=$.column,B=b.column,k=$.offsetX,_=b.offsetX;var y=b.row<$.row;if(y)var m=b.row,E=$.row;else var m=$.row,E=b.row;O<0&&(O=0),m<0&&(m=0),m==E&&(S=!0);for(var I,N=m;N<=E;N++){var W=T.fromPoints(this.session.screenToDocumentPosition(N,O,k),this.session.screenToDocumentPosition(N,B,_));if(W.isEmpty()){if(I&&p(W.end,I))break;I=W.end}W.cursor=w?W.start:W.end,v.push(W)}if(y&&v.reverse(),!S){for(var z=v.length-1;v[z].isEmpty()&&z>0;)z--;if(z>0)for(var U=0;v[U].isEmpty();)U++;for(var j=z;j>=U;j--)v[j].isEmpty()&&v.splice(j,1)}return v}}.call(C.prototype);var c=n("./editor").Editor;(function(){this.updateSelectionMarkers=function(){this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.addSelectionMarker=function(b){b.cursor||(b.cursor=b.end);var $=this.getSelectionStyle();return b.marker=this.session.addMarker(b,"ace_selection",$),this.session.$selectionMarkers.push(b),this.session.selectionMarkerCount=this.session.$selectionMarkers.length,b},this.removeSelectionMarker=function(b){if(b.marker){this.session.removeMarker(b.marker);var $=this.session.$selectionMarkers.indexOf(b);$!=-1&&this.session.$selectionMarkers.splice($,1),this.session.selectionMarkerCount=this.session.$selectionMarkers.length}},this.removeSelectionMarkers=function(b){for(var $=this.session.$selectionMarkers,S=b.length;S--;){var v=b[S];if(v.marker){this.session.removeMarker(v.marker);var w=$.indexOf(v);w!=-1&&$.splice(w,1)}}this.session.selectionMarkerCount=$.length},this.$onAddRange=function(b){this.addSelectionMarker(b.range),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onRemoveRange=function(b){this.removeSelectionMarkers(b.ranges),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onMultiSelect=function(b){this.inMultiSelectMode||(this.inMultiSelectMode=!0,this.setStyle("ace_multiselect"),this.keyBinding.addKeyboardHandler(o.keyboardHandler),this.commands.setDefaultHandler("exec",this.$onMultiSelectExec),this.renderer.updateCursor(),this.renderer.updateBackMarkers())},this.$onSingleSelect=function(b){this.session.multiSelect.inVirtualMode||(this.inMultiSelectMode=!1,this.unsetStyle("ace_multiselect"),this.keyBinding.removeKeyboardHandler(o.keyboardHandler),this.commands.removeDefaultHandler("exec",this.$onMultiSelectExec),this.renderer.updateCursor(),this.renderer.updateBackMarkers(),this._emit("changeSelection"))},this.$onMultiSelectExec=function(b){var $=b.command,S=b.editor;if(S.multiSelect){if($.multiSelectAction)$.multiSelectAction=="forEach"?v=S.forEachSelection($,b.args):$.multiSelectAction=="forEachLine"?v=S.forEachSelection($,b.args,!0):$.multiSelectAction=="single"?(S.exitMultiSelectMode(),v=$.exec(S,b.args||{})):v=$.multiSelectAction(S,b.args||{});else{var v=$.exec(S,b.args||{});S.multiSelect.addRange(S.multiSelect.toOrientedRange()),S.multiSelect.mergeOverlappingRanges()}return v}},this.forEachSelection=function(b,$,S){if(!this.inVirtualSelectionMode){var v=S&&S.keepOrder,w=S==!0||S&&S.$byLines,O=this.session,B=this.selection,k=B.rangeList,_=(v?B:k).ranges,y;if(!_.length)return b.exec?b.exec(this,$||{}):b(this,$||{});var m=B._eventRegistry;B._eventRegistry={};var E=new C(O);this.inVirtualSelectionMode=!0;for(var I=_.length;I--;){if(w)for(;I>0&&_[I].start.row==_[I-1].end.row;)I--;E.fromOrientedRange(_[I]),E.index=I,this.selection=O.selection=E;var N=b.exec?b.exec(this,$||{}):b(this,$||{});!y&&N!==void 0&&(y=N),E.toOrientedRange(_[I])}E.detach(),this.selection=O.selection=B,this.inVirtualSelectionMode=!1,B._eventRegistry=m,B.mergeOverlappingRanges(),B.ranges[0]&&B.fromOrientedRange(B.ranges[0]);var W=this.renderer.$scrollAnimation;return this.onCursorChange(),this.onSelectionChange(),W&&W.from==W.to&&this.renderer.animateScrolling(W.from),y}},this.exitMultiSelectMode=function(){!this.inMultiSelectMode||this.inVirtualSelectionMode||this.multiSelect.toSingleRange()},this.getSelectedText=function(){var b="";if(this.inMultiSelectMode&&!this.inVirtualSelectionMode){for(var $=this.multiSelect.rangeList.ranges,S=[],v=0;v<$.length;v++)S.push(this.session.getTextRange($[v]));var w=this.session.getDocument().getNewLineCharacter();b=S.join(w),b.length==(S.length-1)*w.length&&(b="")}else this.selection.isEmpty()||(b=this.session.getTextRange(this.getSelectionRange()));return b},this.$checkMultiselectChange=function(b,$){if(this.inMultiSelectMode&&!this.inVirtualSelectionMode){var S=this.multiSelect.ranges[0];if(this.multiSelect.isEmpty()&&$==this.multiSelect.anchor)return;var v=$==this.multiSelect.anchor?S.cursor==S.start?S.end:S.start:S.cursor;v.row!=$.row||this.session.$clipPositionToDocument(v.row,v.column).column!=$.column?this.multiSelect.toSingleRange(this.multiSelect.toOrientedRange()):this.multiSelect.mergeOverlappingRanges()}},this.findAll=function(b,$,S){if($=$||{},$.needle=b||$.needle,$.needle==null){var v=this.selection.isEmpty()?this.selection.getWordRange():this.selection.getRange();$.needle=this.session.getTextRange(v)}this.$search.set($);var w=this.$search.findAll(this.session);if(!w.length)return 0;var O=this.multiSelect;S||O.toSingleRange(w[0]);for(var B=w.length;B--;)O.addRange(w[B],!0);return v&&O.rangeList.rangeAtPoint(v.start)&&O.addRange(v,!0),w.length},this.selectMoreLines=function(b,$){var S=this.selection.toOrientedRange(),v=S.cursor==S.end,w=this.session.documentToScreenPosition(S.cursor);this.selection.$desiredColumn&&(w.column=this.selection.$desiredColumn);var O=this.session.screenToDocumentPosition(w.row+b,w.column);if(S.isEmpty())var k=O;else var B=this.session.documentToScreenPosition(v?S.end:S.start),k=this.session.screenToDocumentPosition(B.row+b,B.column);if(v){var _=T.fromPoints(O,k);_.cursor=_.start}else{var _=T.fromPoints(k,O);_.cursor=_.end}if(_.desiredColumn=w.column,!this.selection.inMultiSelectMode)this.selection.addRange(S);else if($)var y=S.cursor;this.selection.addRange(_),y&&this.selection.substractPoint(y)},this.transposeSelections=function(b){for(var $=this.session,S=$.multiSelect,v=S.ranges,w=v.length;w--;){var O=v[w];if(O.isEmpty()){var B=$.getWordRange(O.start.row,O.start.column);O.start.row=B.start.row,O.start.column=B.start.column,O.end.row=B.end.row,O.end.column=B.end.column}}S.mergeOverlappingRanges();for(var k=[],w=v.length;w--;){var O=v[w];k.unshift($.getTextRange(O))}b<0?k.unshift(k.pop()):k.push(k.shift());for(var w=v.length;w--;){var O=v[w],B=O.clone();$.replace(O,k[w]),O.start.row=B.start.row,O.start.column=B.start.column}S.fromOrientedRange(S.ranges[0])},this.selectMore=function(b,$,S){var v=this.session,w=v.multiSelect,O=w.toOrientedRange();if(!(O.isEmpty()&&(O=v.getWordRange(O.start.row,O.start.column),O.cursor=b==-1?O.start:O.end,this.multiSelect.addRange(O),S))){var B=v.getTextRange(O),k=r(v,B,b);k&&(k.cursor=b==-1?k.start:k.end,this.session.unfold(k),this.multiSelect.addRange(k),this.renderer.scrollCursorIntoView(null,.5)),$&&this.multiSelect.substractPoint(O.cursor)}},this.alignCursors=function(){var b=this.session,$=b.multiSelect,S=$.ranges,v=-1,w=S.filter(function(z){if(z.cursor.row==v)return!0;v=z.cursor.row});if(!S.length||w.length==S.length-1){var O=this.selection.getRange(),B=O.start.row,k=O.end.row,_=B==k;if(_){var y=this.session.getLength(),m;do m=this.session.getLine(k);while(/[=:]/.test(m)&&++k0);B<0&&(B=0),k>=y&&(k=y-1)}var E=this.session.removeFullLines(B,k);E=this.$reAlignText(E,_),this.session.insert({row:B,column:0},E.join(` -`)+` -`),_||(O.start.column=0,O.end.column=E[E.length-1].length),this.selection.setRange(O)}else{w.forEach(function(z){$.substractPoint(z.cursor)});var I=0,N=1/0,W=S.map(function(z){var U=z.cursor,j=b.getLine(U.row),q=j.substr(U.column).search(/\S/g);return q==-1&&(q=0),U.column>I&&(I=U.column),qY?b.insert(j,l.stringRepeat(" ",q-Y)):b.remove(new T(j.row,j.column,j.row,j.column-q+Y)),z.start.column=z.end.column=I,z.start.row=z.end.row=j.row,z.cursor=z.end}),$.fromOrientedRange(S[0]),this.renderer.updateCursor(),this.renderer.updateBackMarkers()}},this.$reAlignText=function(b,$){var S=!0,v=!0,w,O,B;return b.map(function(E){var I=E.match(/(\s*)(.*?)(\s*)([=:].*)/);return I?w==null?(w=I[1].length,O=I[2].length,B=I[3].length,I):(w+O+B!=I[1].length+I[2].length+I[3].length&&(v=!1),w!=I[1].length&&(S=!1),w>I[1].length&&(w=I[1].length),OI[3].length&&(B=I[3].length),I):[E]}).map($?_:S?v?y:_:m);function k(E){return l.stringRepeat(" ",E)}function _(E){return E[2]?k(w)+E[2]+k(O-E[2].length+B)+E[4].replace(/^([=:])\s+/,"$1 "):E[0]}function y(E){return E[2]?k(w+O-E[2].length)+E[2]+k(B)+E[4].replace(/^([=:])\s+/,"$1 "):E[0]}function m(E){return E[2]?k(w)+E[2]+k(B)+E[4].replace(/^([=:])\s+/,"$1 "):E[0]}}}).call(c.prototype);function p(b,$){return b.row==$.row&&b.column==$.column}M.onSessionChange=function(b){var $=b.session;$&&!$.multiSelect&&($.$selectionMarkers=[],$.selection.$initRangeList(),$.multiSelect=$.selection),this.multiSelect=$&&$.multiSelect;var S=b.oldSession;S&&(S.multiSelect.off("addRange",this.$onAddRange),S.multiSelect.off("removeRange",this.$onRemoveRange),S.multiSelect.off("multiSelect",this.$onMultiSelect),S.multiSelect.off("singleSelect",this.$onSingleSelect),S.multiSelect.lead.off("change",this.$checkMultiselectChange),S.multiSelect.anchor.off("change",this.$checkMultiselectChange)),$&&($.multiSelect.on("addRange",this.$onAddRange),$.multiSelect.on("removeRange",this.$onRemoveRange),$.multiSelect.on("multiSelect",this.$onMultiSelect),$.multiSelect.on("singleSelect",this.$onSingleSelect),$.multiSelect.lead.on("change",this.$checkMultiselectChange),$.multiSelect.anchor.on("change",this.$checkMultiselectChange)),$&&this.inMultiSelectMode!=$.selection.inMultiSelectMode&&($.selection.inMultiSelectMode?this.$onMultiSelect():this.$onSingleSelect())};function g(b){b.$multiselectOnSessionChange||(b.$onAddRange=b.$onAddRange.bind(b),b.$onRemoveRange=b.$onRemoveRange.bind(b),b.$onMultiSelect=b.$onMultiSelect.bind(b),b.$onSingleSelect=b.$onSingleSelect.bind(b),b.$multiselectOnSessionChange=M.onSessionChange.bind(b),b.$checkMultiselectChange=b.$checkMultiselectChange.bind(b),b.$multiselectOnSessionChange(b),b.on("changeSession",b.$multiselectOnSessionChange),b.on("mousedown",d),b.commands.addCommands(o.defaultCommands),A(b))}function A(b){if(!b.textInput)return;var $=b.textInput.getElement(),S=!1;h.addListener($,"keydown",function(w){var O=w.keyCode==18&&!(w.ctrlKey||w.shiftKey||w.metaKey);b.$blockSelectEnabled&&O?S||(b.renderer.setMouseCursor("crosshair"),S=!0):S&&v()},b),h.addListener($,"keyup",v,b),h.addListener($,"blur",v,b);function v(w){S&&(b.renderer.setMouseCursor(""),S=!1)}}M.MultiSelect=g,n("./config").defineOptions(c.prototype,"editor",{enableMultiselect:{set:function(b){g(this),b?this.on("mousedown",d):this.off("mousedown",d)},value:!0},enableBlockSelect:{set:function(b){this.$blockSelectEnabled=b},value:!0}})}),ace.define("ace/mode/folding/fold_mode",["require","exports","module","ace/range"],function(n,M,G){"use strict";var L=n("../../range").Range,T=M.FoldMode=function(){};(function(){this.foldingStartMarker=null,this.foldingStopMarker=null,this.getFoldWidget=function(C,d,h){var l=C.getLine(h);return this.foldingStartMarker.test(l)?"start":d=="markbeginend"&&this.foldingStopMarker&&this.foldingStopMarker.test(l)?"end":""},this.getFoldWidgetRange=function(C,d,h){return null},this.indentationBlock=function(C,d,h){var l=/\S/,o=C.getLine(d),s=o.search(l);if(s!=-1){for(var i=h||o.length,r=C.getLength(),a=d,c=d;++da){var A=C.getLine(c).length;return new L(a,i,c,A)}}},this.openingBracketBlock=function(C,d,h,l,o){var s={row:h,column:l+1},i=C.$findClosingBracket(d,s,o);if(i){var r=C.foldWidgets[i.row];return r==null&&(r=C.getFoldWidget(i.row)),r=="start"&&i.row>s.row&&(i.row--,i.column=C.getLine(i.row).length),L.fromPoints(s,i)}},this.closingBracketBlock=function(C,d,h,l,o){var s={row:h,column:l},i=C.$findOpeningBracket(d,s);if(i)return i.column++,s.column--,L.fromPoints(i,s)}}).call(T.prototype)}),ace.define("ace/ext/error_marker",["require","exports","module","ace/line_widgets","ace/lib/dom","ace/range","ace/config"],function(n,M,G){"use strict";var L=n("../line_widgets").LineWidgets,T=n("../lib/dom"),C=n("../range").Range,d=n("../config").nls;function h(o,s,i){for(var r=0,a=o.length-1;r<=a;){var c=r+a>>1,p=i(s,o[c]);if(p>0)r=c+1;else if(p<0)a=c-1;else return c}return-(r+1)}function l(o,s,i){var r=o.getAnnotations().sort(C.comparePoints);if(r.length){var a=h(r,{row:s,column:-1},C.comparePoints);a<0&&(a=-a-1),a>=r.length?a=i>0?0:r.length-1:a===0&&i<0&&(a=r.length-1);var c=r[a];if(!(!c||!i)){if(c.row===s){do c=r[a+=i];while(c&&c.row===s);if(!c)return r.slice()}var p=[];s=c.row;do p[i<0?"unshift":"push"](c),c=r[a+=i];while(c&&c.row==s);return p.length&&p}}}M.showErrorMarker=function(o,s){var i=o.session;i.widgetManager||(i.widgetManager=new L(i),i.widgetManager.attach(o));var r=o.getCursorPosition(),a=r.row,c=i.widgetManager.getWidgetsAtRow(a).filter(function(O){return O.type=="errorMarker"})[0];c?c.destroy():a-=s;var p=l(i,a,s),g;if(p){var A=p[0];r.column=(A.pos&&typeof A.column!="number"?A.pos.sc:A.column)||0,r.row=A.row,g=o.renderer.$gutterLayer.$annotations[r.row]}else{if(c)return;g={text:[d("Looks good!")],className:"ace_ok"}}o.session.unfold(r.row),o.selection.moveToPosition(r);var b={row:r.row,fixedWidth:!0,coverGutter:!0,el:T.createElement("div"),type:"errorMarker"},$=b.el.appendChild(T.createElement("div")),S=b.el.appendChild(T.createElement("div"));S.className="error_widget_arrow "+g.className;var v=o.renderer.$cursorLayer.getPixelPosition(r).left;S.style.left=v+o.renderer.gutterWidth-5+"px",b.el.className="error_widget_wrapper",$.className="error_widget "+g.className,$.innerHTML=g.text.join("
    "),$.appendChild(T.createElement("div"));var w=function(O,B,k){if(B===0&&(k==="esc"||k==="return"))return b.destroy(),{command:"null"}};b.destroy=function(){o.$mouseHandler.isMousePressed||(o.keyBinding.removeKeyboardHandler(w),i.widgetManager.removeLineWidget(b),o.off("changeSelection",b.destroy),o.off("changeSession",b.destroy),o.off("mouseup",b.destroy),o.off("change",b.destroy))},o.keyBinding.addKeyboardHandler(w),o.on("changeSelection",b.destroy),o.on("changeSession",b.destroy),o.on("mouseup",b.destroy),o.on("change",b.destroy),o.session.widgetManager.addLineWidget(b),b.el.onmousedown=o.focus.bind(o),o.renderer.scrollCursorIntoView(null,.5,{bottom:b.el.offsetHeight})},T.importCssString(` - .error_widget_wrapper { - background: inherit; - color: inherit; - border:none - } - .error_widget { - border-top: solid 2px; - border-bottom: solid 2px; - margin: 5px 0; - padding: 10px 40px; - white-space: pre-wrap; - } - .error_widget.ace_error, .error_widget_arrow.ace_error{ - border-color: #ff5a5a - } - .error_widget.ace_warning, .error_widget_arrow.ace_warning{ - border-color: #F1D817 - } - .error_widget.ace_info, .error_widget_arrow.ace_info{ - border-color: #5a5a5a - } - .error_widget.ace_ok, .error_widget_arrow.ace_ok{ - border-color: #5aaa5a - } - .error_widget_arrow { - position: absolute; - border: solid 5px; - border-top-color: transparent!important; - border-right-color: transparent!important; - border-left-color: transparent!important; - top: -5px; - } -`,"error_marker.css",!1)}),ace.define("ace/ace",["require","exports","module","ace/lib/dom","ace/range","ace/editor","ace/edit_session","ace/undomanager","ace/virtual_renderer","ace/worker/worker_client","ace/keyboard/hash_handler","ace/placeholder","ace/multi_select","ace/mode/folding/fold_mode","ace/theme/textmate","ace/ext/error_marker","ace/config","ace/loader_build"],function(n,M,G){"use strict";n("./loader_build")(M);var L=n("./lib/dom"),T=n("./range").Range,C=n("./editor").Editor,d=n("./edit_session").EditSession,h=n("./undomanager").UndoManager,l=n("./virtual_renderer").VirtualRenderer;n("./worker/worker_client"),n("./keyboard/hash_handler"),n("./placeholder"),n("./multi_select"),n("./mode/folding/fold_mode"),n("./theme/textmate"),n("./ext/error_marker"),M.config=n("./config"),M.edit=function(o,s){if(typeof o=="string"){var i=o;if(o=document.getElementById(i),!o)throw new Error("ace.edit can't find div #"+i)}if(o&&o.env&&o.env.editor instanceof C)return o.env.editor;var r="";if(o&&/input|textarea/i.test(o.tagName)){var a=o;r=a.value,o=L.createElement("pre"),a.parentNode.replaceChild(o,a)}else o&&(r=o.textContent,o.innerHTML="");var c=M.createEditSession(r),p=new C(new l(o),c,s),g={document:c,editor:p,onResize:p.resize.bind(p,null)};return a&&(g.textarea=a),p.on("destroy",function(){g.editor.container.env=null}),p.container.env=p.env=g,p},M.createEditSession=function(o,s){var i=new d(o,s);return i.setUndoManager(new h),i},M.Range=T,M.Editor=C,M.EditSession=d,M.UndoManager=h,M.VirtualRenderer=l,M.version=M.config.version}),function(){ace.require(["ace/ace"],function(n){n&&(n.config.init(!0),n.define=ace.define);var M=function(){return this}();!M&&typeof window!="undefined"&&(M=window),!M&&typeof self!="undefined"&&(M=self),M.ace||(M.ace=n);for(var G in n)n.hasOwnProperty(G)&&(M.ace[G]=n[G]);M.ace.default=M.ace,D&&(D.exports=M.ace)})}()},134:(D,R,f0)=>{D=f0.nmd(D),ace.define("ace/ext/beautify",["require","exports","module","ace/token_iterator"],function(n,M,G){"use strict";var L=n("../token_iterator").TokenIterator;function T(C,d){return C.type.lastIndexOf(d+".xml")>-1}M.singletonTags=["area","base","br","col","command","embed","hr","html","img","input","keygen","link","meta","param","source","track","wbr"],M.blockTags=["article","aside","blockquote","body","div","dl","fieldset","footer","form","head","header","html","nav","ol","p","script","section","style","table","tbody","tfoot","thead","ul"],M.formatOptions={lineBreaksAfterCommasInCurlyBlock:!0},M.beautify=function(C){for(var d=new L(C,0,0),h=d.getCurrentToken(),l=C.getTabString(),o=M.singletonTags,s=M.blockTags,i=M.formatOptions||{},r,a=!1,c=!1,p=!1,g="",A="",b="",$=0,S=0,v=0,w=0,O=0,B=0,k=0,_,y=0,m=0,E=[],I=!1,N,W=!1,z=!1,U=!1,j=!1,q={0:0},Y=[],t0=!1,n0=function(){r&&r.value&&r.type!=="string.regexp"&&(r.value=r.value.replace(/^\s*/,""))},u0=function(){for(var m0=g.length-1;!(m0==0||g[m0]!==" ");)m0=m0-1;g=g.slice(0,m0+1)},h0=function(){g=g.trimRight(),a=!1};h!==null;){if(y=d.getCurrentTokenRow(),E=d.$rowTokens,r=d.stepForward(),typeof h!="undefined"){if(A=h.value,O=0,U=b==="style"||C.$modeId==="ace/mode/css",T(h,"tag-open")?(z=!0,r&&(j=s.indexOf(r.value)!==-1),A==="0;m--)g+=` -`;a=!0,!T(h,"comment")&&!h.type.match(/^(comment|string)$/)&&(A=A.trimLeft())}if(A){if(h.type==="keyword"&&A.match(/^(if|else|elseif|for|foreach|while|switch)$/)?(Y[$]=A,n0(),p=!0,A.match(/^(else|elseif)$/)&&g.match(/\}[\s]*$/)&&(h0(),c=!0)):h.type==="paren.lparen"?(n0(),A.substr(-1)==="{"&&(p=!0,W=!1,z||(m=1)),A.substr(0,1)==="{"&&(c=!0,g.substr(-1)!=="["&&g.trimRight().substr(-1)==="["?(h0(),c=!1):g.trimRight().substr(-1)===")"?h0():u0())):h.type==="paren.rparen"?(O=1,A.substr(0,1)==="}"&&(Y[$-1]==="case"&&O++,g.trimRight().substr(-1)==="{"?h0():(c=!0,U&&(m+=2))),A.substr(0,1)==="]"&&g.substr(-1)!=="}"&&g.trimRight().substr(-1)==="}"&&(c=!1,w++,h0()),A.substr(0,1)===")"&&g.substr(-1)!=="("&&g.trimRight().substr(-1)==="("&&(c=!1,w++,h0()),u0()):(h.type==="keyword.operator"||h.type==="keyword")&&A.match(/^(=|==|===|!=|!==|&&|\|\||and|or|xor|\+=|.=|>|>=|<|<=|=>)$/)?(h0(),n0(),c=!0,p=!0):h.type==="punctuation.operator"&&A===";"?(h0(),n0(),p=!0,U&&m++):h.type==="punctuation.operator"&&A.match(/^(:|,)$/)?(h0(),n0(),A.match(/^(,)$/)&&k>0&&B===0&&i.lineBreaksAfterCommasInCurlyBlock?m++:(p=!0,a=!1)):h.type==="support.php_tag"&&A==="?>"&&!a?(h0(),c=!0):T(h,"attribute-name")&&g.substr(-1).match(/^\s$/)?c=!0:T(h,"attribute-equals")?(u0(),n0()):T(h,"tag-close")?(u0(),A==="/>"&&(c=!0)):h.type==="keyword"&&A.match(/^(case|default)$/)&&t0&&(O=1),a&&!(h.type.match(/^(comment)$/)&&!A.substr(0,1).match(/^[/#]$/))&&!(h.type.match(/^(string)$/)&&!A.substr(0,1).match(/^['"@]$/))){if(w=v,$>S)for(w++,N=$;N>S;N--)q[N]=w;else $")&&(j&&r&&r.value===""&&$--),T(h,"tag-name")&&(b=A),_=y}}h=r}g=g.trim(),C.doc.setValue(g)},M.commands=[{name:"beautify",description:"Format selection (Beautify)",exec:function(C){M.beautify(C.session)},bindKey:"Ctrl-Shift-B"}]}),function(){ace.require(["ace/ext/beautify"],function(n){D&&(D.exports=n)})}()},604:(D,R,f0)=>{D=f0.nmd(D),ace.define("ace/ext/searchbox-css",["require","exports","module"],function(n,M,G){G.exports=` - -/* ------------------------------------------------------------------------------------------ - * Editor Search Form - * --------------------------------------------------------------------------------------- */ -.ace_search { - background-color: #ddd; - color: #666; - border: 1px solid #cbcbcb; - border-top: 0 none; - overflow: hidden; - margin: 0; - padding: 4px 6px 0 4px; - position: absolute; - top: 0; - z-index: 99; - white-space: normal; -} -.ace_search.left { - border-left: 0 none; - border-radius: 0px 0px 5px 0px; - left: 0; -} -.ace_search.right { - border-radius: 0px 0px 0px 5px; - border-right: 0 none; - right: 0; -} - -.ace_search_form, .ace_replace_form { - margin: 0 20px 4px 0; - overflow: hidden; - line-height: 1.9; -} -.ace_replace_form { - margin-right: 0; -} -.ace_search_form.ace_nomatch { - outline: 1px solid red; -} - -.ace_search_field { - border-radius: 3px 0 0 3px; - background-color: white; - color: black; - border: 1px solid #cbcbcb; - border-right: 0 none; - outline: 0; - padding: 0; - font-size: inherit; - margin: 0; - line-height: inherit; - padding: 0 6px; - min-width: 17em; - vertical-align: top; - min-height: 1.8em; - box-sizing: content-box; -} -.ace_searchbtn { - border: 1px solid #cbcbcb; - line-height: inherit; - display: inline-block; - padding: 0 6px; - background: #fff; - border-right: 0 none; - border-left: 1px solid #dcdcdc; - cursor: pointer; - margin: 0; - position: relative; - color: #666; -} -.ace_searchbtn:last-child { - border-radius: 0 3px 3px 0; - border-right: 1px solid #cbcbcb; -} -.ace_searchbtn:disabled { - background: none; - cursor: default; -} -.ace_searchbtn:hover { - background-color: #eef1f6; -} -.ace_searchbtn.prev, .ace_searchbtn.next { - padding: 0px 0.7em -} -.ace_searchbtn.prev:after, .ace_searchbtn.next:after { - content: ""; - border: solid 2px #888; - width: 0.5em; - height: 0.5em; - border-width: 2px 0 0 2px; - display:inline-block; - transform: rotate(-45deg); -} -.ace_searchbtn.next:after { - border-width: 0 2px 2px 0 ; -} -.ace_searchbtn_close { - background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAcCAYAAABRVo5BAAAAZ0lEQVR42u2SUQrAMAhDvazn8OjZBilCkYVVxiis8H4CT0VrAJb4WHT3C5xU2a2IQZXJjiQIRMdkEoJ5Q2yMqpfDIo+XY4k6h+YXOyKqTIj5REaxloNAd0xiKmAtsTHqW8sR2W5f7gCu5nWFUpVjZwAAAABJRU5ErkJggg==) no-repeat 50% 0; - border-radius: 50%; - border: 0 none; - color: #656565; - cursor: pointer; - font: 16px/16px Arial; - padding: 0; - height: 14px; - width: 14px; - top: 9px; - right: 7px; - position: absolute; -} -.ace_searchbtn_close:hover { - background-color: #656565; - background-position: 50% 100%; - color: white; -} -.ace_button { - margin-left: 2px; - cursor: pointer; - -webkit-user-select: none; - -moz-user-select: none; - -o-user-select: none; - -ms-user-select: none; - user-select: none; - overflow: hidden; - opacity: 0.7; - border: 1px solid rgba(100,100,100,0.23); - padding: 1px; - box-sizing: border-box!important; - color: black; -} -.ace_button:hover { - background-color: #eee; - opacity:1; -} -.ace_button:active { - background-color: #ddd; -} -.ace_button.checked { - border-color: #3399ff; - opacity:1; -} -.ace_search_options{ - margin-bottom: 3px; - text-align: right; - -webkit-user-select: none; - -moz-user-select: none; - -o-user-select: none; - -ms-user-select: none; - user-select: none; - clear: both; -} -.ace_search_counter { - float: left; - font-family: arial; - padding: 0 8px; -}`}),ace.define("ace/ext/searchbox",["require","exports","module","ace/lib/dom","ace/lib/lang","ace/lib/event","ace/ext/searchbox-css","ace/keyboard/hash_handler","ace/lib/keys","ace/config"],function(n,M,G){"use strict";var L=n("../lib/dom"),T=n("../lib/lang"),C=n("../lib/event"),d=n("./searchbox-css"),h=n("../keyboard/hash_handler").HashHandler,l=n("../lib/keys"),o=n("../config").nls,s=999;L.importCssString(d,"ace_searchbox",!1);var i=function(){function c(p,g,A){var b=L.createElement("div");L.buildDom(["div",{class:"ace_search right"},["span",{action:"hide",class:"ace_searchbtn_close"}],["div",{class:"ace_search_form"},["input",{class:"ace_search_field",placeholder:o("Search for"),spellcheck:"false"}],["span",{action:"findPrev",class:"ace_searchbtn prev"},"\u200B"],["span",{action:"findNext",class:"ace_searchbtn next"},"\u200B"],["span",{action:"findAll",class:"ace_searchbtn",title:"Alt-Enter"},o("All")]],["div",{class:"ace_replace_form"},["input",{class:"ace_search_field",placeholder:o("Replace with"),spellcheck:"false"}],["span",{action:"replaceAndFindNext",class:"ace_searchbtn"},o("Replace")],["span",{action:"replaceAll",class:"ace_searchbtn"},o("All")]],["div",{class:"ace_search_options"},["span",{action:"toggleReplace",class:"ace_button",title:o("Toggle Replace mode"),style:"float:left;margin-top:-2px;padding:0 5px;"},"+"],["span",{class:"ace_search_counter"}],["span",{action:"toggleRegexpMode",class:"ace_button",title:o("RegExp Search")},".*"],["span",{action:"toggleCaseSensitive",class:"ace_button",title:o("CaseSensitive Search")},"Aa"],["span",{action:"toggleWholeWords",class:"ace_button",title:o("Whole Word Search")},"\\b"],["span",{action:"searchInSelection",class:"ace_button",title:o("Search In Selection")},"S"]]],b),this.element=b.firstChild,this.setSession=this.setSession.bind(this),this.$init(),this.setEditor(p),L.importCssString(d,"ace_searchbox",p.container)}return c.prototype.setEditor=function(p){p.searchBox=this,p.renderer.scroller.appendChild(this.element),this.editor=p},c.prototype.setSession=function(p){this.searchRange=null,this.$syncOptions(!0)},c.prototype.$initElements=function(p){this.searchBox=p.querySelector(".ace_search_form"),this.replaceBox=p.querySelector(".ace_replace_form"),this.searchOption=p.querySelector("[action=searchInSelection]"),this.replaceOption=p.querySelector("[action=toggleReplace]"),this.regExpOption=p.querySelector("[action=toggleRegexpMode]"),this.caseSensitiveOption=p.querySelector("[action=toggleCaseSensitive]"),this.wholeWordOption=p.querySelector("[action=toggleWholeWords]"),this.searchInput=this.searchBox.querySelector(".ace_search_field"),this.replaceInput=this.replaceBox.querySelector(".ace_search_field"),this.searchCounter=p.querySelector(".ace_search_counter")},c.prototype.$init=function(){var p=this.element;this.$initElements(p);var g=this;C.addListener(p,"mousedown",function(A){setTimeout(function(){g.activeInput.focus()},0),C.stopPropagation(A)}),C.addListener(p,"click",function(A){var b=A.target||A.srcElement,$=b.getAttribute("action");$&&g[$]?g[$]():g.$searchBarKb.commands[$]&&g.$searchBarKb.commands[$].exec(g),C.stopPropagation(A)}),C.addCommandKeyListener(p,function(A,b,$){var S=l.keyCodeToString($),v=g.$searchBarKb.findKeyCommand(b,S);v&&v.exec&&(v.exec(g),C.stopEvent(A))}),this.$onChange=T.delayedCall(function(){g.find(!1,!1)}),C.addListener(this.searchInput,"input",function(){g.$onChange.schedule(20)}),C.addListener(this.searchInput,"focus",function(){g.activeInput=g.searchInput,g.searchInput.value&&g.highlight()}),C.addListener(this.replaceInput,"focus",function(){g.activeInput=g.replaceInput,g.searchInput.value&&g.highlight()})},c.prototype.setSearchRange=function(p){this.searchRange=p,p?this.searchRangeMarker=this.editor.session.addMarker(p,"ace_active-line"):this.searchRangeMarker&&(this.editor.session.removeMarker(this.searchRangeMarker),this.searchRangeMarker=null)},c.prototype.$syncOptions=function(p){L.setCssClass(this.replaceOption,"checked",this.searchRange),L.setCssClass(this.searchOption,"checked",this.searchOption.checked),this.replaceOption.textContent=this.replaceOption.checked?"-":"+",L.setCssClass(this.regExpOption,"checked",this.regExpOption.checked),L.setCssClass(this.wholeWordOption,"checked",this.wholeWordOption.checked),L.setCssClass(this.caseSensitiveOption,"checked",this.caseSensitiveOption.checked);var g=this.editor.getReadOnly();this.replaceOption.style.display=g?"none":"",this.replaceBox.style.display=this.replaceOption.checked&&!g?"":"none",this.find(!1,!1,p)},c.prototype.highlight=function(p){this.editor.session.highlight(p||this.editor.$search.$options.re),this.editor.renderer.updateBackMarkers()},c.prototype.find=function(p,g,A){var b=this.editor.find(this.searchInput.value,{skipCurrent:p,backwards:g,wrap:!0,regExp:this.regExpOption.checked,caseSensitive:this.caseSensitiveOption.checked,wholeWord:this.wholeWordOption.checked,preventScroll:A,range:this.searchRange}),$=!b&&this.searchInput.value;L.setCssClass(this.searchBox,"ace_nomatch",$),this.editor._emit("findSearchBox",{match:!$}),this.highlight(),this.updateCounter()},c.prototype.updateCounter=function(){var p=this.editor,g=p.$search.$options.re,A=0,b=0;if(g){var $=this.searchRange?p.session.getTextRange(this.searchRange):p.getValue(),S=p.session.doc.positionToIndex(p.selection.anchor);this.searchRange&&(S-=p.session.doc.positionToIndex(this.searchRange.start));for(var v=g.lastIndex=0,w;(w=g.exec($))&&(A++,v=w.index,v<=S&&b++,!(A>s||!w[0]&&(g.lastIndex=v+=1,v>=$.length))););}this.searchCounter.textContent=o("$0 of $1",[b,A>s?s+"+":A])},c.prototype.findNext=function(){this.find(!0,!1)},c.prototype.findPrev=function(){this.find(!0,!0)},c.prototype.findAll=function(){var p=this.editor.findAll(this.searchInput.value,{regExp:this.regExpOption.checked,caseSensitive:this.caseSensitiveOption.checked,wholeWord:this.wholeWordOption.checked}),g=!p&&this.searchInput.value;L.setCssClass(this.searchBox,"ace_nomatch",g),this.editor._emit("findSearchBox",{match:!g}),this.highlight(),this.hide()},c.prototype.replace=function(){this.editor.getReadOnly()||this.editor.replace(this.replaceInput.value)},c.prototype.replaceAndFindNext=function(){this.editor.getReadOnly()||(this.editor.replace(this.replaceInput.value),this.findNext())},c.prototype.replaceAll=function(){this.editor.getReadOnly()||this.editor.replaceAll(this.replaceInput.value)},c.prototype.hide=function(){this.active=!1,this.setSearchRange(null),this.editor.off("changeSession",this.setSession),this.element.style.display="none",this.editor.keyBinding.removeKeyboardHandler(this.$closeSearchBarKb),this.editor.focus()},c.prototype.show=function(p,g){this.active=!0,this.editor.on("changeSession",this.setSession),this.element.style.display="",this.replaceOption.checked=g,p&&(this.searchInput.value=p),this.searchInput.focus(),this.searchInput.select(),this.editor.keyBinding.addKeyboardHandler(this.$closeSearchBarKb),this.$syncOptions(!0)},c.prototype.isFocused=function(){var p=document.activeElement;return p==this.searchInput||p==this.replaceInput},c}(),r=new h;r.bindKeys({"Ctrl-f|Command-f":function(c){var p=c.isReplace=!c.isReplace;c.replaceBox.style.display=p?"":"none",c.replaceOption.checked=!1,c.$syncOptions(),c.searchInput.focus()},"Ctrl-H|Command-Option-F":function(c){c.editor.getReadOnly()||(c.replaceOption.checked=!0,c.$syncOptions(),c.replaceInput.focus())},"Ctrl-G|Command-G":function(c){c.findNext()},"Ctrl-Shift-G|Command-Shift-G":function(c){c.findPrev()},esc:function(c){setTimeout(function(){c.hide()})},Return:function(c){c.activeInput==c.replaceInput&&c.replace(),c.findNext()},"Shift-Return":function(c){c.activeInput==c.replaceInput&&c.replace(),c.findPrev()},"Alt-Return":function(c){c.activeInput==c.replaceInput&&c.replaceAll(),c.findAll()},Tab:function(c){(c.activeInput==c.replaceInput?c.searchInput:c.replaceInput).focus()}}),r.addCommands([{name:"toggleRegexpMode",bindKey:{win:"Alt-R|Alt-/",mac:"Ctrl-Alt-R|Ctrl-Alt-/"},exec:function(c){c.regExpOption.checked=!c.regExpOption.checked,c.$syncOptions()}},{name:"toggleCaseSensitive",bindKey:{win:"Alt-C|Alt-I",mac:"Ctrl-Alt-R|Ctrl-Alt-I"},exec:function(c){c.caseSensitiveOption.checked=!c.caseSensitiveOption.checked,c.$syncOptions()}},{name:"toggleWholeWords",bindKey:{win:"Alt-B|Alt-W",mac:"Ctrl-Alt-B|Ctrl-Alt-W"},exec:function(c){c.wholeWordOption.checked=!c.wholeWordOption.checked,c.$syncOptions()}},{name:"toggleReplace",exec:function(c){c.replaceOption.checked=!c.replaceOption.checked,c.$syncOptions()}},{name:"searchInSelection",exec:function(c){c.searchOption.checked=!c.searchRange,c.setSearchRange(c.searchOption.checked&&c.editor.getSelectionRange()),c.$syncOptions()}}]);var a=new h([{bindKey:"Esc",name:"closeSearchBar",exec:function(c){c.searchBox.hide()}}]);i.prototype.$searchBarKb=r,i.prototype.$closeSearchBarKb=a,M.SearchBox=i,M.Search=function(c,p){var g=c.searchBox||new i(c);g.show(c.session.getTextRange(),p)}}),function(){ace.require(["ace/ext/searchbox"],function(n){D&&(D.exports=n)})}()},549:(D,R,f0)=>{D=f0.nmd(D),ace.define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"],function(n,M,G){"use strict";var L=n("../lib/oop"),T=n("../lib/lang"),C=n("./text_highlight_rules").TextHighlightRules,d=M.supportType="align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index",h=M.supportFunction="rgb|rgba|url|attr|counter|counters",l=M.supportConstant="absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|flex-end|flex-start|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom",o=M.supportConstantColor="aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|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|green|greenyellow|grey|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|magenta|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|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen",s=M.supportConstantFonts="arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace",i=M.numRe="\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))",r=M.pseudoElements="(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b",a=M.pseudoClasses="(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b",c=function(){var p=this.createKeywordMapper({"support.function":h,"support.constant":l,"support.type":d,"support.constant.color":o,"support.constant.fonts":s},"text",!0);this.$rules={start:[{include:["strings","url","comments"]},{token:"paren.lparen",regex:"\\{",next:"ruleset"},{token:"paren.rparen",regex:"\\}"},{token:"string",regex:"@(?!viewport)",next:"media"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"keyword",regex:"%"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant.numeric",regex:i},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],media:[{include:["strings","url","comments"]},{token:"paren.lparen",regex:"\\{",next:"start"},{token:"paren.rparen",regex:"\\}",next:"start"},{token:"string",regex:";",next:"start"},{token:"keyword",regex:"(?:media|supports|document|charset|import|namespace|media|supports|document|page|font|keyframes|viewport|counter-style|font-feature-values|swash|ornaments|annotation|stylistic|styleset|character-variant)"}],comments:[{token:"comment",regex:"\\/\\*",push:[{token:"comment",regex:"\\*\\/",next:"pop"},{defaultToken:"comment"}]}],ruleset:[{regex:"-(webkit|ms|moz|o)-",token:"text"},{token:"punctuation.operator",regex:"[:;]"},{token:"paren.rparen",regex:"\\}",next:"start"},{include:["strings","url","comments"]},{token:["constant.numeric","keyword"],regex:"("+i+")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)"},{token:"constant.numeric",regex:i},{token:"constant.numeric",regex:"#[a-f0-9]{6}"},{token:"constant.numeric",regex:"#[a-f0-9]{3}"},{token:["punctuation","entity.other.attribute-name.pseudo-element.css"],regex:r},{token:["punctuation","entity.other.attribute-name.pseudo-class.css"],regex:a},{include:"url"},{token:p,regex:"\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"},{caseInsensitive:!0}],url:[{token:"support.function",regex:"(?:url(:?-prefix)?|domain|regexp)\\(",push:[{token:"support.function",regex:"\\)",next:"pop"},{defaultToken:"string"}]}],strings:[{token:"string.start",regex:"'",push:[{token:"string.end",regex:"'|$",next:"pop"},{include:"escapes"},{token:"constant.language.escape",regex:/\\$/,consumeLineEnd:!0},{defaultToken:"string"}]},{token:"string.start",regex:'"',push:[{token:"string.end",regex:'"|$',next:"pop"},{include:"escapes"},{token:"constant.language.escape",regex:/\\$/,consumeLineEnd:!0},{defaultToken:"string"}]}],escapes:[{token:"constant.language.escape",regex:/\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/}]},this.normalizeRules()};L.inherits(c,C),M.CssHighlightRules=c}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(n,M,G){"use strict";var L=n("../range").Range,T=function(){};(function(){this.checkOutdent=function(C,d){return/^\s+$/.test(C)?/^\s*\}/.test(d):!1},this.autoOutdent=function(C,d){var h=C.getLine(d),l=h.match(/^(\s*\})/);if(!l)return 0;var o=l[1].length,s=C.findMatchingBracket({row:d,column:o});if(!s||s.row==d)return 0;var i=this.$getIndent(C.getLine(s.row));C.replace(new L(d,0,d,o-1),i)},this.$getIndent=function(C){return C.match(/^\s*/)[0]}}).call(T.prototype),M.MatchingBraceOutdent=T}),ace.define("ace/mode/css_completions",["require","exports","module"],function(n,M,G){"use strict";var L={background:{"#$0":1},"background-color":{"#$0":1,transparent:1,fixed:1},"background-image":{"url('/$0')":1},"background-repeat":{repeat:1,"repeat-x":1,"repeat-y":1,"no-repeat":1,inherit:1},"background-position":{bottom:2,center:2,left:2,right:2,top:2,inherit:2},"background-attachment":{scroll:1,fixed:1},"background-size":{cover:1,contain:1},"background-clip":{"border-box":1,"padding-box":1,"content-box":1},"background-origin":{"border-box":1,"padding-box":1,"content-box":1},border:{"solid $0":1,"dashed $0":1,"dotted $0":1,"#$0":1},"border-color":{"#$0":1},"border-style":{solid:2,dashed:2,dotted:2,double:2,groove:2,hidden:2,inherit:2,inset:2,none:2,outset:2,ridged:2},"border-collapse":{collapse:1,separate:1},bottom:{px:1,em:1,"%":1},clear:{left:1,right:1,both:1,none:1},color:{"#$0":1,"rgb(#$00,0,0)":1},cursor:{default:1,pointer:1,move:1,text:1,wait:1,help:1,progress:1,"n-resize":1,"ne-resize":1,"e-resize":1,"se-resize":1,"s-resize":1,"sw-resize":1,"w-resize":1,"nw-resize":1},display:{none:1,block:1,inline:1,"inline-block":1,"table-cell":1},"empty-cells":{show:1,hide:1},float:{left:1,right:1,none:1},"font-family":{Arial:2,"Comic Sans MS":2,Consolas:2,"Courier New":2,Courier:2,Georgia:2,Monospace:2,"Sans-Serif":2,"Segoe UI":2,Tahoma:2,"Times New Roman":2,"Trebuchet MS":2,Verdana:1},"font-size":{px:1,em:1,"%":1},"font-weight":{bold:1,normal:1},"font-style":{italic:1,normal:1},"font-variant":{normal:1,"small-caps":1},height:{px:1,em:1,"%":1},left:{px:1,em:1,"%":1},"letter-spacing":{normal:1},"line-height":{normal:1},"list-style-type":{none:1,disc:1,circle:1,square:1,decimal:1,"decimal-leading-zero":1,"lower-roman":1,"upper-roman":1,"lower-greek":1,"lower-latin":1,"upper-latin":1,georgian:1,"lower-alpha":1,"upper-alpha":1},margin:{px:1,em:1,"%":1},"margin-right":{px:1,em:1,"%":1},"margin-left":{px:1,em:1,"%":1},"margin-top":{px:1,em:1,"%":1},"margin-bottom":{px:1,em:1,"%":1},"max-height":{px:1,em:1,"%":1},"max-width":{px:1,em:1,"%":1},"min-height":{px:1,em:1,"%":1},"min-width":{px:1,em:1,"%":1},overflow:{hidden:1,visible:1,auto:1,scroll:1},"overflow-x":{hidden:1,visible:1,auto:1,scroll:1},"overflow-y":{hidden:1,visible:1,auto:1,scroll:1},padding:{px:1,em:1,"%":1},"padding-top":{px:1,em:1,"%":1},"padding-right":{px:1,em:1,"%":1},"padding-bottom":{px:1,em:1,"%":1},"padding-left":{px:1,em:1,"%":1},"page-break-after":{auto:1,always:1,avoid:1,left:1,right:1},"page-break-before":{auto:1,always:1,avoid:1,left:1,right:1},position:{absolute:1,relative:1,fixed:1,static:1},right:{px:1,em:1,"%":1},"table-layout":{fixed:1,auto:1},"text-decoration":{none:1,underline:1,"line-through":1,blink:1},"text-align":{left:1,right:1,center:1,justify:1},"text-transform":{capitalize:1,uppercase:1,lowercase:1,none:1},top:{px:1,em:1,"%":1},"vertical-align":{top:1,bottom:1},visibility:{hidden:1,visible:1},"white-space":{nowrap:1,normal:1,pre:1,"pre-line":1,"pre-wrap":1},width:{px:1,em:1,"%":1},"word-spacing":{normal:1},filter:{"alpha(opacity=$0100)":1},"text-shadow":{"$02px 2px 2px #777":1},"text-overflow":{"ellipsis-word":1,clip:1,ellipsis:1},"-moz-border-radius":1,"-moz-border-radius-topright":1,"-moz-border-radius-bottomright":1,"-moz-border-radius-topleft":1,"-moz-border-radius-bottomleft":1,"-webkit-border-radius":1,"-webkit-border-top-right-radius":1,"-webkit-border-top-left-radius":1,"-webkit-border-bottom-right-radius":1,"-webkit-border-bottom-left-radius":1,"-moz-box-shadow":1,"-webkit-box-shadow":1,transform:{"rotate($00deg)":1,"skew($00deg)":1},"-moz-transform":{"rotate($00deg)":1,"skew($00deg)":1},"-webkit-transform":{"rotate($00deg)":1,"skew($00deg)":1}},T=function(){};(function(){this.completionsDefined=!1,this.defineCompletions=function(){if(document){var C=document.createElement("c").style;for(var d in C)if(typeof C[d]=="string"){var h=d.replace(/[A-Z]/g,function(l){return"-"+l.toLowerCase()});L.hasOwnProperty(h)||(L[h]=1)}}this.completionsDefined=!0},this.getCompletions=function(C,d,h,l){if(this.completionsDefined||this.defineCompletions(),C==="ruleset"||d.$mode.$id=="ace/mode/scss"){var o=d.getLine(h.row).substr(0,h.column),s=/\([^)]*$/.test(o);return s&&(o=o.substr(o.lastIndexOf("(")+1)),/:[^;]+$/.test(o)?(/([\w\-]+):[^:]*$/.test(o),this.getPropertyValueCompletions(C,d,h,l)):this.getPropertyCompletions(C,d,h,l,s)}return[]},this.getPropertyCompletions=function(C,d,h,l,o){o=o||!1;var s=Object.keys(L);return s.map(function(i){return{caption:i,snippet:i+": $0"+(o?"":";"),meta:"property",score:1e6}})},this.getPropertyValueCompletions=function(C,d,h,l){var o=d.getLine(h.row).substr(0,h.column),s=(/([\w\-]+):[^:]*$/.exec(o)||{})[1];if(!s)return[];var i=[];return s in L&&typeof L[s]=="object"&&(i=Object.keys(L[s])),i.map(function(r){return{caption:r,snippet:r,meta:"property value",score:1e6}})}}).call(T.prototype),M.CssCompletions=T}),ace.define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"],function(n,M,G){"use strict";var L=n("../../lib/oop"),T=n("../behaviour").Behaviour,C=n("./cstyle").CstyleBehaviour,d=n("../../token_iterator").TokenIterator,h=function(){this.inherit(C),this.add("colon","insertion",function(l,o,s,i,r){if(r===":"&&s.selection.isEmpty()){var a=s.getCursorPosition(),c=new d(i,a.row,a.column),p=c.getCurrentToken();if(p&&p.value.match(/\s+/)&&(p=c.stepBackward()),p&&p.type==="support.type"){var g=i.doc.getLine(a.row),A=g.substring(a.column,a.column+1);if(A===":")return{text:"",selection:[1,1]};if(/^(\s+[^;]|\s*$)/.test(g.substring(a.column)))return{text:":;",selection:[1,1]}}}}),this.add("colon","deletion",function(l,o,s,i,r){var a=i.doc.getTextRange(r);if(!r.isMultiLine()&&a===":"){var c=s.getCursorPosition(),p=new d(i,c.row,c.column),g=p.getCurrentToken();if(g&&g.value.match(/\s+/)&&(g=p.stepBackward()),g&&g.type==="support.type"){var A=i.doc.getLine(r.start.row),b=A.substring(r.end.column,r.end.column+1);if(b===";")return r.end.column++,r}}}),this.add("semicolon","insertion",function(l,o,s,i,r){if(r===";"&&s.selection.isEmpty()){var a=s.getCursorPosition(),c=i.doc.getLine(a.row),p=c.substring(a.column,a.column+1);if(p===";")return{text:"",selection:[1,1]}}}),this.add("!important","insertion",function(l,o,s,i,r){if(r==="!"&&s.selection.isEmpty()){var a=s.getCursorPosition(),c=i.doc.getLine(a.row);if(/^\s*(;|}|$)/.test(c.substring(a.column)))return{text:"!important",selection:[10,10]}}})};L.inherits(h,C),M.CssBehaviour=h}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(n,M,G){"use strict";var L=n("../../lib/oop"),T=n("../../range").Range,C=n("./fold_mode").FoldMode,d=M.FoldMode=function(h){h&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+h.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+h.end)))};L.inherits(d,C),function(){this.foldingStartMarker=/([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(h,l,o){var s=h.getLine(o);if(this.singleLineBlockCommentRe.test(s)&&!this.startRegionRe.test(s)&&!this.tripleStarBlockCommentRe.test(s))return"";var i=this._getFoldWidgetBase(h,l,o);return!i&&this.startRegionRe.test(s)?"start":i},this.getFoldWidgetRange=function(h,l,o,s){var i=h.getLine(o);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(h,i,o);var c=i.match(this.foldingStartMarker);if(c){var r=c.index;if(c[1])return this.openingBracketBlock(h,c[1],o,r);var a=h.getCommentFoldRange(o,r+c[0].length,1);return a&&!a.isMultiLine()&&(s?a=this.getSectionRange(h,o):l!="all"&&(a=null)),a}if(l!=="markbegin"){var c=i.match(this.foldingStopMarker);if(c){var r=c.index+c[0].length;return c[1]?this.closingBracketBlock(h,c[1],o,r):h.getCommentFoldRange(o,r,-1)}}},this.getSectionRange=function(h,l){var o=h.getLine(l),s=o.search(/\S/),i=l,r=o.length;l=l+1;for(var a=l,c=h.getLength();++lp)break;var g=this.getFoldWidgetRange(h,"all",l);if(g){if(g.start.row<=i)break;if(g.isMultiLine())l=g.end.row;else if(s==p)break}a=l}}return new T(i,r,a,h.getLine(a).length)},this.getCommentRegionBlock=function(h,l,o){for(var s=l.search(/\s*$/),i=h.getLength(),r=o,a=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,c=1;++or)return new T(r,s,g,l.length)}}.call(d.prototype)}),ace.define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"],function(n,M,G){"use strict";var L=n("../lib/oop"),T=n("./text").Mode,C=n("./css_highlight_rules").CssHighlightRules,d=n("./matching_brace_outdent").MatchingBraceOutdent,h=n("../worker/worker_client").WorkerClient,l=n("./css_completions").CssCompletions,o=n("./behaviour/css").CssBehaviour,s=n("./folding/cstyle").FoldMode,i=function(){this.HighlightRules=C,this.$outdent=new d,this.$behaviour=new o,this.$completer=new l,this.foldingRules=new s};L.inherits(i,T),function(){this.foldingRules="cStyle",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(r,a,c){var p=this.$getIndent(a),g=this.getTokenizer().getLineTokens(a,r).tokens;if(g.length&&g[g.length-1].type=="comment")return p;var A=a.match(/^.*\{\s*$/);return A&&(p+=c),p},this.checkOutdent=function(r,a,c){return this.$outdent.checkOutdent(a,c)},this.autoOutdent=function(r,a,c){this.$outdent.autoOutdent(a,c)},this.getCompletions=function(r,a,c,p){return this.$completer.getCompletions(r,a,c,p)},this.createWorker=function(r){var a=new h(["ace"],"ace/mode/css_worker","Worker");return a.attachToDocument(r.getDocument()),a.on("annotate",function(c){r.setAnnotations(c.data)}),a.on("terminate",function(){r.clearAnnotations()}),a},this.$id="ace/mode/css",this.snippetFileId="ace/snippets/css"}.call(i.prototype),M.Mode=i}),function(){ace.require(["ace/mode/css"],function(n){D&&(D.exports=n)})}()},576:(D,R,f0)=>{D=f0.nmd(D),ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(n,M,G){"use strict";var L=n("../lib/oop"),T=n("./text_highlight_rules").TextHighlightRules,C=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@\\w+(?=\\s|$)"},C.getTagRule(),{defaultToken:"comment.doc",caseInsensitive:!0}]}};L.inherits(C,T),C.getTagRule=function(d){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},C.getStartRule=function(d){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:d}},C.getEndRule=function(d){return{token:"comment.doc",regex:"\\*\\/",next:d}},M.DocCommentHighlightRules=C}),ace.define("ace/mode/golang_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(n,M,G){var L=n("../lib/oop"),T=n("./doc_comment_highlight_rules").DocCommentHighlightRules,C=n("./text_highlight_rules").TextHighlightRules,d=function(){var h="else|break|case|return|goto|if|const|select|continue|struct|default|switch|for|range|func|import|package|chan|defer|fallthrough|go|interface|map|range|select|type|var",l="string|uint8|uint16|uint32|uint64|int8|int16|int32|int64|float32|float64|complex64|complex128|byte|rune|uint|int|uintptr|bool|error",o="new|close|cap|copy|panic|panicln|print|println|len|make|delete|real|recover|imag|append",s="nil|true|false|iota",i=this.createKeywordMapper({keyword:h,"constant.language":s,"support.function":o,"support.type":l},""),r=`\\\\(?:[0-7]{3}|x\\h{2}|u{4}|U\\h{6}|[abfnrtv'"\\\\])`.replace(/\\h/g,"[a-fA-F\\d]");this.$rules={start:[{token:"comment",regex:"\\/\\/.*$"},T.getStartRule("doc-start"),{token:"comment.start",regex:"\\/\\*",next:"comment"},{token:"string",regex:/"(?:[^"\\]|\\.)*?"/},{token:"string",regex:"`",next:"bqstring"},{token:"constant.numeric",regex:"'(?:[^\\'\uD800-\uDBFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|"+r.replace('"',"")+")'"},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:["keyword","text","entity.name.function"],regex:"(func)(\\s+)([a-zA-Z_$][a-zA-Z0-9_$]*)\\b"},{token:function(a){return a[a.length-1]=="("?[{type:i(a.slice(0,-1))||"support.function",value:a.slice(0,-1)},{type:"paren.lparen",value:a.slice(-1)}]:i(a)||"identifier"},regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b\\(?"},{token:"keyword.operator",regex:"!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|==|=|!=|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^="},{token:"punctuation.operator",regex:"\\?|\\:|\\,|\\;|\\."},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"}],comment:[{token:"comment.end",regex:"\\*\\/",next:"start"},{defaultToken:"comment"}],bqstring:[{token:"string",regex:"`",next:"start"},{defaultToken:"string"}]},this.embedRules(T,"doc-",[T.getEndRule("start")])};L.inherits(d,C),M.GolangHighlightRules=d}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(n,M,G){"use strict";var L=n("../range").Range,T=function(){};(function(){this.checkOutdent=function(C,d){return/^\s+$/.test(C)?/^\s*\}/.test(d):!1},this.autoOutdent=function(C,d){var h=C.getLine(d),l=h.match(/^(\s*\})/);if(!l)return 0;var o=l[1].length,s=C.findMatchingBracket({row:d,column:o});if(!s||s.row==d)return 0;var i=this.$getIndent(C.getLine(s.row));C.replace(new L(d,0,d,o-1),i)},this.$getIndent=function(C){return C.match(/^\s*/)[0]}}).call(T.prototype),M.MatchingBraceOutdent=T}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(n,M,G){"use strict";var L=n("../../lib/oop"),T=n("../../range").Range,C=n("./fold_mode").FoldMode,d=M.FoldMode=function(h){h&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+h.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+h.end)))};L.inherits(d,C),function(){this.foldingStartMarker=/([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(h,l,o){var s=h.getLine(o);if(this.singleLineBlockCommentRe.test(s)&&!this.startRegionRe.test(s)&&!this.tripleStarBlockCommentRe.test(s))return"";var i=this._getFoldWidgetBase(h,l,o);return!i&&this.startRegionRe.test(s)?"start":i},this.getFoldWidgetRange=function(h,l,o,s){var i=h.getLine(o);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(h,i,o);var c=i.match(this.foldingStartMarker);if(c){var r=c.index;if(c[1])return this.openingBracketBlock(h,c[1],o,r);var a=h.getCommentFoldRange(o,r+c[0].length,1);return a&&!a.isMultiLine()&&(s?a=this.getSectionRange(h,o):l!="all"&&(a=null)),a}if(l!=="markbegin"){var c=i.match(this.foldingStopMarker);if(c){var r=c.index+c[0].length;return c[1]?this.closingBracketBlock(h,c[1],o,r):h.getCommentFoldRange(o,r,-1)}}},this.getSectionRange=function(h,l){var o=h.getLine(l),s=o.search(/\S/),i=l,r=o.length;l=l+1;for(var a=l,c=h.getLength();++lp)break;var g=this.getFoldWidgetRange(h,"all",l);if(g){if(g.start.row<=i)break;if(g.isMultiLine())l=g.end.row;else if(s==p)break}a=l}}return new T(i,r,a,h.getLine(a).length)},this.getCommentRegionBlock=function(h,l,o){for(var s=l.search(/\s*$/),i=h.getLength(),r=o,a=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,c=1;++or)return new T(r,s,g,l.length)}}.call(d.prototype)}),ace.define("ace/mode/golang",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/golang_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/folding/cstyle"],function(n,M,G){var L=n("../lib/oop"),T=n("./text").Mode,C=n("./golang_highlight_rules").GolangHighlightRules,d=n("./matching_brace_outdent").MatchingBraceOutdent,h=n("./folding/cstyle").FoldMode,l=function(){this.HighlightRules=C,this.$outdent=new d,this.foldingRules=new h,this.$behaviour=this.$defaultBehaviour};L.inherits(l,T),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(o,s,i){var r=this.$getIndent(s),a=this.getTokenizer().getLineTokens(s,o),c=a.tokens,p=a.state;if(c.length&&c[c.length-1].type=="comment")return r;if(o=="start"){var g=s.match(/^.*[\{\(\[]\s*$/);g&&(r+=i)}return r},this.checkOutdent=function(o,s,i){return this.$outdent.checkOutdent(s,i)},this.autoOutdent=function(o,s,i){this.$outdent.autoOutdent(s,i)},this.$id="ace/mode/golang"}.call(l.prototype),M.Mode=l}),function(){ace.require(["ace/mode/golang"],function(n){D&&(D.exports=n)})}()},395:(D,R,f0)=>{D=f0.nmd(D),ace.define("ace/mode/jsdoc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(n,M,G){"use strict";var L=n("../lib/oop"),T=n("./text_highlight_rules").TextHighlightRules,C=function(){this.$rules={start:[{token:["comment.doc.tag","comment.doc.text","lparen.doc"],regex:"(@(?:param|member|typedef|property|namespace|var|const|callback))(\\s*)({)",push:[{token:"lparen.doc",regex:"{",push:[{include:"doc-syntax"},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"}]},{token:["rparen.doc","text.doc","variable.parameter.doc","lparen.doc","variable.parameter.doc","rparen.doc"],regex:/(})(\s*)(?:([\w=:\/\.]+)|(?:(\[)([\w=:\/\.]+)(\])))/,next:"pop"},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"},{include:"doc-syntax"},{defaultToken:"text.doc"}]},{token:["comment.doc.tag","text.doc","lparen.doc"],regex:"(@(?:returns?|yields|type|this|suppress|public|protected|private|package|modifies|implements|external|exception|throws|enum|define|extends))(\\s*)({)",push:[{token:"lparen.doc",regex:"{",push:[{include:"doc-syntax"},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"}]},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"},{include:"doc-syntax"},{defaultToken:"text.doc"}]},{token:["comment.doc.tag","text.doc","variable.parameter.doc"],regex:'(@(?:alias|memberof|instance|module|name|lends|namespace|external|this|template|requires|param|implements|function|extends|typedef|mixes|constructor|var|memberof\\!|event|listens|exports|class|constructs|interface|emits|fires|throws|const|callback|borrows|augments))(\\s+)(\\w[\\w#.:/~"\\-]*)?'},{token:["comment.doc.tag","text.doc","variable.parameter.doc"],regex:"(@method)(\\s+)(\\w[\\w.\\(\\)]*)"},{token:"comment.doc.tag",regex:"@access\\s+(?:private|public|protected)"},{token:"comment.doc.tag",regex:"@kind\\s+(?:class|constant|event|external|file|function|member|mixin|module|namespace|typedef)"},{token:"comment.doc.tag",regex:"@\\w+(?=\\s|$)"},C.getTagRule(),{defaultToken:"comment.doc",caseInsensitive:!0}],"doc-syntax":[{token:"operator.doc",regex:/[|:]/},{token:"paren.doc",regex:/[\[\]]/}]},this.normalizeRules()};L.inherits(C,T),C.getTagRule=function(d){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},C.getStartRule=function(d){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:d}},C.getEndRule=function(d){return{token:"comment.doc",regex:"\\*\\/",next:d}},M.JsDocCommentHighlightRules=C}),ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/jsdoc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(n,M,G){"use strict";var L=n("../lib/oop"),T=n("./jsdoc_comment_highlight_rules").JsDocCommentHighlightRules,C=n("./text_highlight_rules").TextHighlightRules,d="[a-zA-Z\\$_\xA1-\uFFFF][a-zA-Z\\d\\$_\xA1-\uFFFF]*",h=function(s){var i=this.createKeywordMapper({"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Symbol|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",keyword:"const|yield|import|get|set|async|await|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static|constructor","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},"identifier"),r="case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",a="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]{1,6}}|[0-2][0-7]{0,2}|3[0-7][0-7]?|[4-7][0-7]?|.)";this.$rules={no_regex:[T.getStartRule("doc-start"),o("no_regex"),{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/},{token:["storage.type","punctuation.operator","support.function","punctuation.operator","entity.name.function","text","keyword.operator"],regex:"("+d+")(\\.)(prototype)(\\.)("+d+")(\\s*)(=)",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+d+")(\\.)("+d+")(\\s*)(=)(\\s*)(function\\*?)(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+d+")(\\s*)(=)(\\s*)(function\\*?)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+d+")(\\.)("+d+")(\\s*)(=)(\\s*)(function\\*?)(\\s+)(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","entity.name.function","text","paren.lparen"],regex:"(function\\*?)(\\s+)("+d+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","paren.lparen"],regex:"("+d+")(\\s*)(:)(\\s*)(function\\*?)(\\s*)(\\()",next:"function_arguments"},{token:["text","text","storage.type","text","paren.lparen"],regex:"(:)(\\s*)(function\\*?)(\\s*)(\\()",next:"function_arguments"},{token:"keyword",regex:`from(?=\\s*('|"))`},{token:"keyword",regex:"(?:"+r+")\\b",next:"start"},{token:"support.constant",regex:/that\b/},{token:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/},{token:i,regex:d},{token:"punctuation.operator",regex:/[.](?![.])/,next:"property"},{token:"storage.type",regex:/=>/,next:"start"},{token:"keyword.operator",regex:/--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/,next:"start"},{token:"punctuation.operator",regex:/[?:,;.]/,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"comment",regex:/^#!.*$/}],property:[{token:"text",regex:"\\s+"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+d+")(\\.)("+d+")(\\s*)(=)(\\s*)(function\\*?)(?:(\\s+)(\\w+))?(\\s*)(\\()",next:"function_arguments"},{token:"punctuation.operator",regex:/[.](?![.])/},{token:"support.function",regex:/(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|lter|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward|rEach)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:"support.function.dom",regex:/(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:"support.constant",regex:/(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:"identifier",regex:d},{regex:"",token:"empty",next:"no_regex"}],start:[T.getStartRule("doc-start"),o("start"),{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],regex:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],default_parameter:[{token:"string",regex:"'(?=.)",push:[{token:"string",regex:"'|$",next:"pop"},{include:"qstring"}]},{token:"string",regex:'"(?=.)',push:[{token:"string",regex:'"|$',next:"pop"},{include:"qqstring"}]},{token:"constant.language",regex:"null|Infinity|NaN|undefined"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/},{token:"punctuation.operator",regex:",",next:"function_arguments"},{token:"text",regex:"\\s+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],function_arguments:[o("function_arguments"),{token:"variable.parameter",regex:d},{token:"punctuation.operator",regex:","},{token:"text",regex:"\\s+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],qqstring:[{token:"constant.language.escape",regex:a},{token:"string",regex:"\\\\$",consumeLineEnd:!0},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:a},{token:"string",regex:"\\\\$",consumeLineEnd:!0},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]},(!s||!s.noES6)&&(this.$rules.no_regex.unshift({regex:"[{}]",onMatch:function(c,p,g){if(this.next=c=="{"?this.nextState:"",c=="{"&&g.length)g.unshift("start",p);else if(c=="}"&&g.length&&(g.shift(),this.next=g.shift(),this.next.indexOf("string")!=-1||this.next.indexOf("jsx")!=-1))return"paren.quasi.end";return c=="{"?"paren.lparen":"paren.rparen"},nextState:"start"},{token:"string.quasi.start",regex:/`/,push:[{token:"constant.language.escape",regex:a},{token:"paren.quasi.start",regex:/\${/,push:"start"},{token:"string.quasi.end",regex:/`/,next:"pop"},{defaultToken:"string.quasi"}]},{token:["variable.parameter","text"],regex:"("+d+")(\\s*)(?=\\=>)"},{token:"paren.lparen",regex:"(\\()(?=.+\\s*=>)",next:"function_arguments"},{token:"variable.language",regex:"(?:(?:(?:Weak)?(?:Set|Map))|Promise)\\b"}),this.$rules.function_arguments.unshift({token:"keyword.operator",regex:"=",next:"default_parameter"},{token:"keyword.operator",regex:"\\.{3}"}),this.$rules.property.unshift({token:"support.function",regex:"(findIndex|repeat|startsWith|endsWith|includes|isSafeInteger|trunc|cbrt|log2|log10|sign|then|catch|finally|resolve|reject|race|any|all|allSettled|keys|entries|isInteger)\\b(?=\\()"},{token:"constant.language",regex:"(?:MAX_SAFE_INTEGER|MIN_SAFE_INTEGER|EPSILON)\\b"}),(!s||s.jsx!=!1)&&l.call(this)),this.embedRules(T,"doc-",[T.getEndRule("no_regex")]),this.normalizeRules()};L.inherits(h,C);function l(){var s=d.replace("\\d","\\d\\-"),i={onMatch:function(a,c,p){var g=a.charAt(1)=="/"?2:1;return g==1?(c!=this.nextState?p.unshift(this.next,this.nextState,0):p.unshift(this.next),p[2]++):g==2&&c==this.nextState&&(p[1]--,(!p[1]||p[1]<0)&&(p.shift(),p.shift())),[{type:"meta.tag.punctuation."+(g==1?"":"end-")+"tag-open.xml",value:a.slice(0,g)},{type:"meta.tag.tag-name.xml",value:a.substr(g)}]},regex:"",onMatch:function(a,c,p){return c==p[0]&&p.shift(),a.length==2&&(p[0]==this.nextState&&p[1]--,(!p[1]||p[1]<0)&&p.splice(0,2)),this.next=p[0]||"start",[{type:this.token,value:a}]},nextState:"jsx"},r,o("jsxAttributes"),{token:"entity.other.attribute-name.xml",regex:s},{token:"keyword.operator.attribute-equals.xml",regex:"="},{token:"text.tag-whitespace.xml",regex:"\\s+"},{token:"string.attribute-value.xml",regex:"'",stateName:"jsx_attr_q",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',stateName:"jsx_attr_qq",push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},i],this.$rules.reference=[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}]}function o(s){return[{token:"comment",regex:/\/\*/,next:[T.getTagRule(),{token:"comment",regex:"\\*\\/",next:s||"pop"},{defaultToken:"comment",caseInsensitive:!0}]},{token:"comment",regex:"\\/\\/",next:[T.getTagRule(),{token:"comment",regex:"$|^",next:s||"pop"},{defaultToken:"comment",caseInsensitive:!0}]}]}M.JavaScriptHighlightRules=h}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(n,M,G){"use strict";var L=n("../range").Range,T=function(){};(function(){this.checkOutdent=function(C,d){return/^\s+$/.test(C)?/^\s*\}/.test(d):!1},this.autoOutdent=function(C,d){var h=C.getLine(d),l=h.match(/^(\s*\})/);if(!l)return 0;var o=l[1].length,s=C.findMatchingBracket({row:d,column:o});if(!s||s.row==d)return 0;var i=this.$getIndent(C.getLine(s.row));C.replace(new L(d,0,d,o-1),i)},this.$getIndent=function(C){return C.match(/^\s*/)[0]}}).call(T.prototype),M.MatchingBraceOutdent=T}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(n,M,G){"use strict";var L=n("../../lib/oop"),T=n("../../range").Range,C=n("./fold_mode").FoldMode,d=M.FoldMode=function(h){h&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+h.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+h.end)))};L.inherits(d,C),function(){this.foldingStartMarker=/([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(h,l,o){var s=h.getLine(o);if(this.singleLineBlockCommentRe.test(s)&&!this.startRegionRe.test(s)&&!this.tripleStarBlockCommentRe.test(s))return"";var i=this._getFoldWidgetBase(h,l,o);return!i&&this.startRegionRe.test(s)?"start":i},this.getFoldWidgetRange=function(h,l,o,s){var i=h.getLine(o);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(h,i,o);var c=i.match(this.foldingStartMarker);if(c){var r=c.index;if(c[1])return this.openingBracketBlock(h,c[1],o,r);var a=h.getCommentFoldRange(o,r+c[0].length,1);return a&&!a.isMultiLine()&&(s?a=this.getSectionRange(h,o):l!="all"&&(a=null)),a}if(l!=="markbegin"){var c=i.match(this.foldingStopMarker);if(c){var r=c.index+c[0].length;return c[1]?this.closingBracketBlock(h,c[1],o,r):h.getCommentFoldRange(o,r,-1)}}},this.getSectionRange=function(h,l){var o=h.getLine(l),s=o.search(/\S/),i=l,r=o.length;l=l+1;for(var a=l,c=h.getLength();++lp)break;var g=this.getFoldWidgetRange(h,"all",l);if(g){if(g.start.row<=i)break;if(g.isMultiLine())l=g.end.row;else if(s==p)break}a=l}}return new T(i,r,a,h.getLine(a).length)},this.getCommentRegionBlock=function(h,l,o){for(var s=l.search(/\s*$/),i=h.getLength(),r=o,a=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,c=1;++or)return new T(r,s,g,l.length)}}.call(d.prototype)}),ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"],function(n,M,G){"use strict";var L=n("../lib/oop"),T=n("./text").Mode,C=n("./javascript_highlight_rules").JavaScriptHighlightRules,d=n("./matching_brace_outdent").MatchingBraceOutdent,h=n("../worker/worker_client").WorkerClient,l=n("./behaviour/cstyle").CstyleBehaviour,o=n("./folding/cstyle").FoldMode,s=function(){this.HighlightRules=C,this.$outdent=new d,this.$behaviour=new l,this.foldingRules=new o};L.inherits(s,T),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.$quotes={'"':'"',"'":"'","`":"`"},this.$pairQuotesAfter={"`":/\w/},this.getNextLineIndent=function(i,r,a){var c=this.$getIndent(r),p=this.getTokenizer().getLineTokens(r,i),g=p.tokens,A=p.state;if(g.length&&g[g.length-1].type=="comment")return c;if(i=="start"||i=="no_regex"){var b=r.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/);b&&(c+=a)}else if(i=="doc-start"){if(A=="start"||A=="no_regex")return"";var b=r.match(/^\s*(\/?)\*/);b&&(b[1]&&(c+=" "),c+="* ")}return c},this.checkOutdent=function(i,r,a){return this.$outdent.checkOutdent(r,a)},this.autoOutdent=function(i,r,a){this.$outdent.autoOutdent(r,a)},this.createWorker=function(i){var r=new h(["ace"],"ace/mode/javascript_worker","JavaScriptWorker");return r.attachToDocument(i.getDocument()),r.on("annotate",function(a){i.setAnnotations(a.data)}),r.on("terminate",function(){i.clearAnnotations()}),r},this.$id="ace/mode/javascript",this.snippetFileId="ace/snippets/javascript"}.call(s.prototype),M.Mode=s}),function(){ace.require(["ace/mode/javascript"],function(n){D&&(D.exports=n)})}()},252:(D,R,f0)=>{D=f0.nmd(D),ace.define("ace/mode/json_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(n,M,G){"use strict";var L=n("../lib/oop"),T=n("./text_highlight_rules").TextHighlightRules,C=function(){this.$rules={start:[{token:"variable",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]\\s*(?=:)'},{token:"string",regex:'"',next:"string"},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:"constant.language.boolean",regex:"(?:true|false)\\b"},{token:"text",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:"comment",regex:"\\/\\/.*$"},{token:"comment.start",regex:"\\/\\*",next:"comment"},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"punctuation.operator",regex:/[,]/},{token:"text",regex:"\\s+"}],string:[{token:"constant.language.escape",regex:/\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|["\\\/bfnrt])/},{token:"string",regex:'"|$',next:"start"},{defaultToken:"string"}],comment:[{token:"comment.end",regex:"\\*\\/",next:"start"},{defaultToken:"comment"}]}};L.inherits(C,T),M.JsonHighlightRules=C}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(n,M,G){"use strict";var L=n("../range").Range,T=function(){};(function(){this.checkOutdent=function(C,d){return/^\s+$/.test(C)?/^\s*\}/.test(d):!1},this.autoOutdent=function(C,d){var h=C.getLine(d),l=h.match(/^(\s*\})/);if(!l)return 0;var o=l[1].length,s=C.findMatchingBracket({row:d,column:o});if(!s||s.row==d)return 0;var i=this.$getIndent(C.getLine(s.row));C.replace(new L(d,0,d,o-1),i)},this.$getIndent=function(C){return C.match(/^\s*/)[0]}}).call(T.prototype),M.MatchingBraceOutdent=T}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(n,M,G){"use strict";var L=n("../../lib/oop"),T=n("../../range").Range,C=n("./fold_mode").FoldMode,d=M.FoldMode=function(h){h&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+h.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+h.end)))};L.inherits(d,C),function(){this.foldingStartMarker=/([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(h,l,o){var s=h.getLine(o);if(this.singleLineBlockCommentRe.test(s)&&!this.startRegionRe.test(s)&&!this.tripleStarBlockCommentRe.test(s))return"";var i=this._getFoldWidgetBase(h,l,o);return!i&&this.startRegionRe.test(s)?"start":i},this.getFoldWidgetRange=function(h,l,o,s){var i=h.getLine(o);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(h,i,o);var c=i.match(this.foldingStartMarker);if(c){var r=c.index;if(c[1])return this.openingBracketBlock(h,c[1],o,r);var a=h.getCommentFoldRange(o,r+c[0].length,1);return a&&!a.isMultiLine()&&(s?a=this.getSectionRange(h,o):l!="all"&&(a=null)),a}if(l!=="markbegin"){var c=i.match(this.foldingStopMarker);if(c){var r=c.index+c[0].length;return c[1]?this.closingBracketBlock(h,c[1],o,r):h.getCommentFoldRange(o,r,-1)}}},this.getSectionRange=function(h,l){var o=h.getLine(l),s=o.search(/\S/),i=l,r=o.length;l=l+1;for(var a=l,c=h.getLength();++lp)break;var g=this.getFoldWidgetRange(h,"all",l);if(g){if(g.start.row<=i)break;if(g.isMultiLine())l=g.end.row;else if(s==p)break}a=l}}return new T(i,r,a,h.getLine(a).length)},this.getCommentRegionBlock=function(h,l,o){for(var s=l.search(/\s*$/),i=h.getLength(),r=o,a=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,c=1;++or)return new T(r,s,g,l.length)}}.call(d.prototype)}),ace.define("ace/mode/json",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/json_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/folding/cstyle","ace/worker/worker_client"],function(n,M,G){"use strict";var L=n("../lib/oop"),T=n("./text").Mode,C=n("./json_highlight_rules").JsonHighlightRules,d=n("./matching_brace_outdent").MatchingBraceOutdent,h=n("./folding/cstyle").FoldMode,l=n("../worker/worker_client").WorkerClient,o=function(){this.HighlightRules=C,this.$outdent=new d,this.$behaviour=this.$defaultBehaviour,this.foldingRules=new h};L.inherits(o,T),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(s,i,r){var a=this.$getIndent(i);if(s=="start"){var c=i.match(/^.*[\{\(\[]\s*$/);c&&(a+=r)}return a},this.checkOutdent=function(s,i,r){return this.$outdent.checkOutdent(i,r)},this.autoOutdent=function(s,i,r){this.$outdent.autoOutdent(i,r)},this.createWorker=function(s){var i=new l(["ace"],"ace/mode/json_worker","JsonWorker");return i.attachToDocument(s.getDocument()),i.on("annotate",function(r){s.setAnnotations(r.data)}),i.on("terminate",function(){s.clearAnnotations()}),i},this.$id="ace/mode/json"}.call(o.prototype),M.Mode=o}),function(){ace.require(["ace/mode/json"],function(n){D&&(D.exports=n)})}()},711:(D,R,f0)=>{D=f0.nmd(D),ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(n,M,G){"use strict";var L=n("../lib/oop"),T=n("./text_highlight_rules").TextHighlightRules,C=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@\\w+(?=\\s|$)"},C.getTagRule(),{defaultToken:"comment.doc",caseInsensitive:!0}]}};L.inherits(C,T),C.getTagRule=function(d){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},C.getStartRule=function(d){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:d}},C.getEndRule=function(d){return{token:"comment.doc",regex:"\\*\\/",next:d}},M.DocCommentHighlightRules=C}),ace.define("ace/mode/jsx_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(n,M,G){var L=n("../lib/oop"),T=n("../lib/lang"),C=n("./doc_comment_highlight_rules").DocCommentHighlightRules,d=n("./text_highlight_rules").TextHighlightRules,h=function(){var l=T.arrayToMap("break|do|instanceof|typeof|case|else|new|var|catch|finally|return|void|continue|for|switch|default|while|function|this|if|throw|delete|in|try|class|extends|super|import|from|into|implements|interface|static|mixin|override|abstract|final|number|int|string|boolean|variant|log|assert".split("|")),o=T.arrayToMap("null|true|false|NaN|Infinity|__FILE__|__LINE__|undefined".split("|")),s=T.arrayToMap("debugger|with|const|export|let|private|public|yield|protected|extern|native|as|operator|__fake__|__readonly__".split("|")),i="[a-zA-Z_][a-zA-Z0-9_]*\\b";this.$rules={start:[{token:"comment",regex:"\\/\\/.*$"},C.getStartRule("doc-start"),{token:"comment",regex:"\\/\\*",next:"comment"},{token:"string.regexp",regex:"[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/]\\w*\\s*(?=[).,;]|$)"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:"constant.language.boolean",regex:"(?:true|false)\\b"},{token:["storage.type","text","entity.name.function"],regex:"(function)(\\s+)("+i+")"},{token:function(r){return r=="this"?"variable.language":r=="function"?"storage.type":l.hasOwnProperty(r)||s.hasOwnProperty(r)?"keyword":o.hasOwnProperty(r)?"constant.language":/^_?[A-Z][a-zA-Z0-9_]*$/.test(r)?"language.support.class":"identifier"},regex:i},{token:"keyword.operator",regex:"!|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|==|=|!=|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)"},{token:"punctuation.operator",regex:"\\?|\\:|\\,|\\;|\\."},{token:"paren.lparen",regex:"[[({<]"},{token:"paren.rparen",regex:"[\\])}>]"},{token:"text",regex:"\\s+"}],comment:[{token:"comment",regex:"\\*\\/",next:"start"},{defaultToken:"comment"}]},this.embedRules(C,"doc-",[C.getEndRule("start")])};L.inherits(h,d),M.JsxHighlightRules=h}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(n,M,G){"use strict";var L=n("../range").Range,T=function(){};(function(){this.checkOutdent=function(C,d){return/^\s+$/.test(C)?/^\s*\}/.test(d):!1},this.autoOutdent=function(C,d){var h=C.getLine(d),l=h.match(/^(\s*\})/);if(!l)return 0;var o=l[1].length,s=C.findMatchingBracket({row:d,column:o});if(!s||s.row==d)return 0;var i=this.$getIndent(C.getLine(s.row));C.replace(new L(d,0,d,o-1),i)},this.$getIndent=function(C){return C.match(/^\s*/)[0]}}).call(T.prototype),M.MatchingBraceOutdent=T}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(n,M,G){"use strict";var L=n("../../lib/oop"),T=n("../../range").Range,C=n("./fold_mode").FoldMode,d=M.FoldMode=function(h){h&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+h.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+h.end)))};L.inherits(d,C),function(){this.foldingStartMarker=/([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(h,l,o){var s=h.getLine(o);if(this.singleLineBlockCommentRe.test(s)&&!this.startRegionRe.test(s)&&!this.tripleStarBlockCommentRe.test(s))return"";var i=this._getFoldWidgetBase(h,l,o);return!i&&this.startRegionRe.test(s)?"start":i},this.getFoldWidgetRange=function(h,l,o,s){var i=h.getLine(o);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(h,i,o);var c=i.match(this.foldingStartMarker);if(c){var r=c.index;if(c[1])return this.openingBracketBlock(h,c[1],o,r);var a=h.getCommentFoldRange(o,r+c[0].length,1);return a&&!a.isMultiLine()&&(s?a=this.getSectionRange(h,o):l!="all"&&(a=null)),a}if(l!=="markbegin"){var c=i.match(this.foldingStopMarker);if(c){var r=c.index+c[0].length;return c[1]?this.closingBracketBlock(h,c[1],o,r):h.getCommentFoldRange(o,r,-1)}}},this.getSectionRange=function(h,l){var o=h.getLine(l),s=o.search(/\S/),i=l,r=o.length;l=l+1;for(var a=l,c=h.getLength();++lp)break;var g=this.getFoldWidgetRange(h,"all",l);if(g){if(g.start.row<=i)break;if(g.isMultiLine())l=g.end.row;else if(s==p)break}a=l}}return new T(i,r,a,h.getLine(a).length)},this.getCommentRegionBlock=function(h,l,o){for(var s=l.search(/\s*$/),i=h.getLength(),r=o,a=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,c=1;++or)return new T(r,s,g,l.length)}}.call(d.prototype)}),ace.define("ace/mode/jsx",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/jsx_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/folding/cstyle"],function(n,M,G){"use strict";var L=n("../lib/oop"),T=n("./text").Mode,C=n("./jsx_highlight_rules").JsxHighlightRules,d=n("./matching_brace_outdent").MatchingBraceOutdent,h=n("./folding/cstyle").FoldMode;function l(){this.HighlightRules=C,this.$outdent=new d,this.$behaviour=this.$defaultBehaviour,this.foldingRules=new h}L.inherits(l,T),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(o,s,i){var r=this.$getIndent(s),a=this.getTokenizer().getLineTokens(s,o),c=a.tokens;if(c.length&&c[c.length-1].type=="comment")return r;if(o=="start"){var p=s.match(/^.*[\{\(\[]\s*$/);p&&(r+=i)}return r},this.checkOutdent=function(o,s,i){return this.$outdent.checkOutdent(s,i)},this.autoOutdent=function(o,s,i){this.$outdent.autoOutdent(s,i)},this.$id="ace/mode/jsx"}.call(l.prototype),M.Mode=l}),function(){ace.require(["ace/mode/jsx"],function(n){D&&(D.exports=n)})}()},7:(D,R,f0)=>{D=f0.nmd(D),ace.define("ace/mode/python_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(n,M,G){"use strict";var L=n("../lib/oop"),T=n("./text_highlight_rules").TextHighlightRules,C=function(){var d="and|as|assert|break|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|not|or|pass|print|raise|return|try|while|with|yield|async|await|nonlocal",h="True|False|None|NotImplemented|Ellipsis|__debug__",l="abs|divmod|input|open|staticmethod|all|enumerate|int|ord|str|any|eval|isinstance|pow|sum|basestring|execfile|issubclass|print|super|binfile|bin|iter|property|tuple|bool|filter|len|range|type|bytearray|float|list|raw_input|unichr|callable|format|locals|reduce|unicode|chr|frozenset|long|reload|vars|classmethod|getattr|map|repr|xrange|cmp|globals|max|reversed|zip|compile|hasattr|memoryview|round|__import__|complex|hash|min|apply|delattr|help|next|setattr|set|buffer|dict|hex|object|slice|coerce|dir|id|oct|sorted|intern|ascii|breakpoint|bytes",o=this.createKeywordMapper({"invalid.deprecated":"debugger","support.function":l,"variable.language":"self|cls","constant.language":h,keyword:d},"identifier"),s="[uU]?",i="[rR]",r="[fF]",a="(?:[rR][fF]|[fF][rR])",c="(?:(?:[1-9]\\d*)|(?:0))",p="(?:0[oO]?[0-7]+)",g="(?:0[xX][\\dA-Fa-f]+)",A="(?:0[bB][01]+)",b="(?:"+c+"|"+p+"|"+g+"|"+A+")",$="(?:[eE][+-]?\\d+)",S="(?:\\.\\d+)",v="(?:\\d+)",w="(?:(?:"+v+"?"+S+")|(?:"+v+"\\.))",O="(?:(?:"+w+"|"+v+")"+$+")",B="(?:"+O+"|"+w+")",k=`\\\\(x[0-9A-Fa-f]{2}|[0-7]{3}|[\\\\abfnrtv'"]|U[0-9A-Fa-f]{8}|u[0-9A-Fa-f]{4})`;this.$rules={start:[{token:"comment",regex:"#.*$"},{token:"string",regex:s+'"{3}',next:"qqstring3"},{token:"string",regex:s+'"(?=.)',next:"qqstring"},{token:"string",regex:s+"'{3}",next:"qstring3"},{token:"string",regex:s+"'(?=.)",next:"qstring"},{token:"string",regex:i+'"{3}',next:"rawqqstring3"},{token:"string",regex:i+'"(?=.)',next:"rawqqstring"},{token:"string",regex:i+"'{3}",next:"rawqstring3"},{token:"string",regex:i+"'(?=.)",next:"rawqstring"},{token:"string",regex:r+'"{3}',next:"fqqstring3"},{token:"string",regex:r+'"(?=.)',next:"fqqstring"},{token:"string",regex:r+"'{3}",next:"fqstring3"},{token:"string",regex:r+"'(?=.)",next:"fqstring"},{token:"string",regex:a+'"{3}',next:"rfqqstring3"},{token:"string",regex:a+'"(?=.)',next:"rfqqstring"},{token:"string",regex:a+"'{3}",next:"rfqstring3"},{token:"string",regex:a+"'(?=.)",next:"rfqstring"},{token:"keyword.operator",regex:"\\+|\\-|\\*|\\*\\*|\\/|\\/\\/|%|@|<<|>>|&|\\||\\^|~|<|>|<=|=>|==|!=|<>|="},{token:"punctuation",regex:",|:|;|\\->|\\+=|\\-=|\\*=|\\/=|\\/\\/=|%=|@=|&=|\\|=|^=|>>=|<<=|\\*\\*="},{token:"paren.lparen",regex:"[\\[\\(\\{]"},{token:"paren.rparen",regex:"[\\]\\)\\}]"},{token:["keyword","text","entity.name.function"],regex:"(def|class)(\\s+)([\\u00BF-\\u1FFF\\u2C00-\\uD7FF\\w]+)"},{token:"text",regex:"\\s+"},{include:"constants"}],qqstring3:[{token:"constant.language.escape",regex:k},{token:"string",regex:'"{3}',next:"start"},{defaultToken:"string"}],qstring3:[{token:"constant.language.escape",regex:k},{token:"string",regex:"'{3}",next:"start"},{defaultToken:"string"}],qqstring:[{token:"constant.language.escape",regex:k},{token:"string",regex:"\\\\$",next:"qqstring"},{token:"string",regex:'"|$',next:"start"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:k},{token:"string",regex:"\\\\$",next:"qstring"},{token:"string",regex:"'|$",next:"start"},{defaultToken:"string"}],rawqqstring3:[{token:"string",regex:'"{3}',next:"start"},{defaultToken:"string"}],rawqstring3:[{token:"string",regex:"'{3}",next:"start"},{defaultToken:"string"}],rawqqstring:[{token:"string",regex:"\\\\$",next:"rawqqstring"},{token:"string",regex:'"|$',next:"start"},{defaultToken:"string"}],rawqstring:[{token:"string",regex:"\\\\$",next:"rawqstring"},{token:"string",regex:"'|$",next:"start"},{defaultToken:"string"}],fqqstring3:[{token:"constant.language.escape",regex:k},{token:"string",regex:'"{3}',next:"start"},{token:"paren.lparen",regex:"{",push:"fqstringParRules"},{defaultToken:"string"}],fqstring3:[{token:"constant.language.escape",regex:k},{token:"string",regex:"'{3}",next:"start"},{token:"paren.lparen",regex:"{",push:"fqstringParRules"},{defaultToken:"string"}],fqqstring:[{token:"constant.language.escape",regex:k},{token:"string",regex:"\\\\$",next:"fqqstring"},{token:"string",regex:'"|$',next:"start"},{token:"paren.lparen",regex:"{",push:"fqstringParRules"},{defaultToken:"string"}],fqstring:[{token:"constant.language.escape",regex:k},{token:"string",regex:"'|$",next:"start"},{token:"paren.lparen",regex:"{",push:"fqstringParRules"},{defaultToken:"string"}],rfqqstring3:[{token:"string",regex:'"{3}',next:"start"},{token:"paren.lparen",regex:"{",push:"fqstringParRules"},{defaultToken:"string"}],rfqstring3:[{token:"string",regex:"'{3}",next:"start"},{token:"paren.lparen",regex:"{",push:"fqstringParRules"},{defaultToken:"string"}],rfqqstring:[{token:"string",regex:"\\\\$",next:"rfqqstring"},{token:"string",regex:'"|$',next:"start"},{token:"paren.lparen",regex:"{",push:"fqstringParRules"},{defaultToken:"string"}],rfqstring:[{token:"string",regex:"'|$",next:"start"},{token:"paren.lparen",regex:"{",push:"fqstringParRules"},{defaultToken:"string"}],fqstringParRules:[{token:"paren.lparen",regex:"[\\[\\(]"},{token:"paren.rparen",regex:"[\\]\\)]"},{token:"string",regex:"\\s+"},{token:"string",regex:"'[^']*'"},{token:"string",regex:'"[^"]*"'},{token:"function.support",regex:"(!s|!r|!a)"},{include:"constants"},{token:"paren.rparen",regex:"}",next:"pop"},{token:"paren.lparen",regex:"{",push:"fqstringParRules"}],constants:[{token:"constant.numeric",regex:"(?:"+B+"|\\d+)[jJ]\\b"},{token:"constant.numeric",regex:B},{token:"constant.numeric",regex:b+"[lL]\\b"},{token:"constant.numeric",regex:b+"\\b"},{token:["punctuation","function.support"],regex:"(\\.)([a-zA-Z_]+)\\b"},{token:o,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"}]},this.normalizeRules()};L.inherits(C,T),M.PythonHighlightRules=C}),ace.define("ace/mode/folding/pythonic",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode"],function(n,M,G){"use strict";var L=n("../../lib/oop"),T=n("./fold_mode").FoldMode,C=M.FoldMode=function(d){this.foldingStartMarker=new RegExp("([\\[{])(?:\\s*)$|("+d+")(?:\\s*)(?:#.*)?$")};L.inherits(C,T),function(){this.getFoldWidgetRange=function(d,h,l){var o=d.getLine(l),s=o.match(this.foldingStartMarker);if(s)return s[1]?this.openingBracketBlock(d,s[1],l,s.index):s[2]?this.indentationBlock(d,l,s.index+s[2].length):this.indentationBlock(d,l)}}.call(C.prototype)}),ace.define("ace/mode/python",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/python_highlight_rules","ace/mode/folding/pythonic","ace/range"],function(n,M,G){"use strict";var L=n("../lib/oop"),T=n("./text").Mode,C=n("./python_highlight_rules").PythonHighlightRules,d=n("./folding/pythonic").FoldMode,h=n("../range").Range,l=function(){this.HighlightRules=C,this.foldingRules=new d("\\:"),this.$behaviour=this.$defaultBehaviour};L.inherits(l,T),function(){this.lineCommentStart="#",this.$pairQuotesAfter={"'":/[ruf]/i,'"':/[ruf]/i},this.getNextLineIndent=function(s,i,r){var a=this.$getIndent(i),c=this.getTokenizer().getLineTokens(i,s),p=c.tokens;if(p.length&&p[p.length-1].type=="comment")return a;if(s=="start"){var g=i.match(/^.*[\{\(\[:]\s*$/);g&&(a+=r)}return a};var o={pass:1,return:1,raise:1,break:1,continue:1};this.checkOutdent=function(s,i,r){if(r!==`\r -`&&r!=="\r"&&r!==` -`)return!1;var a=this.getTokenizer().getLineTokens(i.trim(),s).tokens;if(!a)return!1;do var c=a.pop();while(c&&(c.type=="comment"||c.type=="text"&&c.value.match(/^\s+$/)));return c?c.type=="keyword"&&o[c.value]:!1},this.autoOutdent=function(s,i,r){r+=1;var a=this.$getIndent(i.getLine(r)),c=i.getTabString();a.slice(-c.length)==c&&i.remove(new h(r,a.length-c.length,r,a.length))},this.$id="ace/mode/python",this.snippetFileId="ace/snippets/python"}.call(l.prototype),M.Mode=l}),function(){ace.require(["ace/mode/python"],function(n){D&&(D.exports=n)})}()},202:(D,R,f0)=>{D=f0.nmd(D),ace.define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(n,M,G){"use strict";var L=n("../lib/oop"),T=n("./text_highlight_rules").TextHighlightRules,C=function(d){var h="[_:a-zA-Z\xC0-\uFFFF][-_:.a-zA-Z0-9\xC0-\uFFFF]*";this.$rules={start:[{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\[",next:"cdata"},{token:["punctuation.instruction.xml","keyword.instruction.xml"],regex:"(<\\?)("+h+")",next:"processing_instruction"},{token:"comment.start.xml",regex:"<\\!--",next:"comment"},{token:["xml-pe.doctype.xml","xml-pe.doctype.xml"],regex:"(<\\!)(DOCTYPE)(?=[\\s])",next:"doctype",caseInsensitive:!0},{include:"tag"},{token:"text.end-tag-open.xml",regex:"",next:"start"}],doctype:[{include:"whitespace"},{include:"string"},{token:"xml-pe.doctype.xml",regex:">",next:"start"},{token:"xml-pe.xml",regex:"[-_a-zA-Z0-9:]+"},{token:"punctuation.int-subset",regex:"\\[",push:"int_subset"}],int_subset:[{token:"text.xml",regex:"\\s+"},{token:"punctuation.int-subset.xml",regex:"]",next:"pop"},{token:["punctuation.markup-decl.xml","keyword.markup-decl.xml"],regex:"(<\\!)("+h+")",push:[{token:"text",regex:"\\s+"},{token:"punctuation.markup-decl.xml",regex:">",next:"pop"},{include:"string"}]}],cdata:[{token:"string.cdata.xml",regex:"\\]\\]>",next:"start"},{token:"text.xml",regex:"\\s+"},{token:"text.xml",regex:"(?:[^\\]]|\\](?!\\]>))+"}],comment:[{token:"comment.end.xml",regex:"-->",next:"start"},{defaultToken:"comment.xml"}],reference:[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],attr_reference:[{token:"constant.language.escape.reference.attribute-value.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],tag:[{token:["meta.tag.punctuation.tag-open.xml","meta.tag.punctuation.end-tag-open.xml","meta.tag.tag-name.xml"],regex:"(?:(<)|(",next:"start"}]}],tag_whitespace:[{token:"text.tag-whitespace.xml",regex:"\\s+"}],whitespace:[{token:"text.whitespace.xml",regex:"\\s+"}],string:[{token:"string.xml",regex:"'",push:[{token:"string.xml",regex:"'",next:"pop"},{defaultToken:"string.xml"}]},{token:"string.xml",regex:'"',push:[{token:"string.xml",regex:'"',next:"pop"},{defaultToken:"string.xml"}]}],attributes:[{token:"entity.other.attribute-name.xml",regex:h},{token:"keyword.operator.attribute-equals.xml",regex:"="},{include:"tag_whitespace"},{include:"attribute_value"}],attribute_value:[{token:"string.attribute-value.xml",regex:"'",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]}]},this.constructor===C&&this.normalizeRules()};(function(){this.embedTagRules=function(d,h,l){this.$rules.tag.unshift({token:["meta.tag.punctuation.tag-open.xml","meta.tag."+l+".tag-name.xml"],regex:"(<)("+l+"(?=\\s|>|$))",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:h+"start"}]}),this.$rules[l+"-end"]=[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start",onMatch:function(o,s,i){return i.splice(0),this.token}}],this.embedRules(d,h,[{token:["meta.tag.punctuation.end-tag-open.xml","meta.tag."+l+".tag-name.xml"],regex:"(|$))",next:l+"-end"},{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\["},{token:"string.cdata.xml",regex:"\\]\\]>"}])}}).call(T.prototype),L.inherits(C,T),M.XmlHighlightRules=C}),ace.define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(n,M,G){"use strict";var L=n("../../lib/oop"),T=n("../behaviour").Behaviour,C=n("../../token_iterator").TokenIterator,d=n("../../lib/lang");function h(o,s){return o&&o.type.lastIndexOf(s+".xml")>-1}var l=function(){this.add("string_dquotes","insertion",function(o,s,i,r,a){if(a=='"'||a=="'"){var c=a,p=r.doc.getTextRange(i.getSelectionRange());if(p!==""&&p!=="'"&&p!='"'&&i.getWrapBehavioursEnabled())return{text:c+p+c,selection:!1};var g=i.getCursorPosition(),A=r.doc.getLine(g.row),b=A.substring(g.column,g.column+1),$=new C(r,g.row,g.column),S=$.getCurrentToken();if(b==c&&(h(S,"attribute-value")||h(S,"string")))return{text:"",selection:[1,1]};if(S||(S=$.stepBackward()),!S)return;for(;h(S,"tag-whitespace")||h(S,"whitespace");)S=$.stepBackward();var v=!b||b.match(/\s/);if(h(S,"attribute-equals")&&(v||b==">")||h(S,"decl-attribute-equals")&&(v||b=="?"))return{text:c+c,selection:[1,1]}}}),this.add("string_dquotes","deletion",function(o,s,i,r,a){var c=r.doc.getTextRange(a);if(!a.isMultiLine()&&(c=='"'||c=="'")){var p=r.doc.getLine(a.start.row),g=p.substring(a.start.column+1,a.start.column+2);if(g==c)return a.end.column++,a}}),this.add("autoclosing","insertion",function(o,s,i,r,a){if(a==">"){var c=i.getSelectionRange().start,p=new C(r,c.row,c.column),g=p.getCurrentToken()||p.stepBackward();if(!g||!(h(g,"tag-name")||h(g,"tag-whitespace")||h(g,"attribute-name")||h(g,"attribute-equals")||h(g,"attribute-value"))||h(g,"reference.attribute-value"))return;if(h(g,"attribute-value")){var A=p.getCurrentTokenColumn()+g.value.length;if(c.column/.test(r.getLine(c.row).slice(c.column)))return;for(;!h(g,"tag-name");)if(g=p.stepBackward(),g.value=="<"){g=p.stepForward();break}var $=p.getCurrentTokenRow(),S=p.getCurrentTokenColumn();if(h(p.stepBackward(),"end-tag-open"))return;var v=g.value;return $==c.row&&(v=v.substring(0,c.column-S)),this.voidElements.hasOwnProperty(v.toLowerCase())?void 0:{text:">",selection:[1,1]}}}),this.add("autoindent","insertion",function(o,s,i,r,a){if(a==` -`){var c=i.getCursorPosition(),p=r.getLine(c.row),g=new C(r,c.row,c.column),A=g.getCurrentToken();if(A&&A.type.indexOf("tag-close")!==-1){if(A.value=="/>")return;for(;A&&A.type.indexOf("tag-name")===-1;)A=g.stepBackward();if(!A)return;var b=A.value,$=g.getCurrentTokenRow();if(A=g.stepBackward(),!A||A.type.indexOf("end-tag")!==-1)return;if(this.voidElements&&!this.voidElements[b]){var S=r.getTokenAt(c.row,c.column+1),p=r.getLine($),v=this.$getIndent(p),w=v+r.getTabString();return S&&S.value==="-1}(function(){this.getFoldWidget=function(o,s,i){var r=this._getFirstTagInLine(o,i);return r?r.closing||!r.tagName&&r.selfClosing?s==="markbeginend"?"end":"":!r.tagName||r.selfClosing||this.voidElements.hasOwnProperty(r.tagName.toLowerCase())||this._findEndTagInLine(o,i,r.tagName,r.end.column)?"":"start":this.getCommentFoldWidget(o,i)},this.getCommentFoldWidget=function(o,s){return/comment/.test(o.getState(s))&&/";break}return r}else if(l(c,"tag-close"))return r.selfClosing=c.value=="/>",r;r.start.column+=c.value.length}return null},this._findEndTagInLine=function(o,s,i,r){for(var a=o.getTokens(s),c=0,p=0;p"},this.createWorker=function(i){var r=new o(["ace"],"ace/mode/xml_worker","Worker");return r.attachToDocument(i.getDocument()),r.on("error",function(a){i.setAnnotations(a.data)}),r.on("terminate",function(){i.clearAnnotations()}),r},this.$id="ace/mode/xml"}.call(s.prototype),M.Mode=s}),function(){ace.require(["ace/mode/xml"],function(n){D&&(D.exports=n)})}()},203:(D,R,f0)=>{D=f0.nmd(D),ace.define("ace/theme/github-css",["require","exports","module"],function(n,M,G){G.exports=`/* CSS style content from github's default pygments highlighter template. - Cursor and selection styles from textmate.css. */ -.ace-github .ace_gutter { - background: #e8e8e8; - color: #AAA; -} -.ace-github { - background: #fff; - color: #000; -} -.ace-github .ace_keyword { - font-weight: bold; -} -.ace-github .ace_string { - color: #D14; -} -.ace-github .ace_variable.ace_class { - color: teal; -} -.ace-github .ace_constant.ace_numeric { - color: #099; -} -.ace-github .ace_constant.ace_buildin { - color: #0086B3; -} -.ace-github .ace_support.ace_function { - color: #0086B3; -} -.ace-github .ace_comment { - color: #998; - font-style: italic; -} -.ace-github .ace_variable.ace_language { - color: #0086B3; -} -.ace-github .ace_paren { - font-weight: bold; -} -.ace-github .ace_boolean { - font-weight: bold; -} -.ace-github .ace_string.ace_regexp { - color: #009926; - font-weight: normal; -} -.ace-github .ace_variable.ace_instance { - color: teal; -} -.ace-github .ace_constant.ace_language { - font-weight: bold; -} -.ace-github .ace_cursor { - color: black; -} -.ace-github.ace_focus .ace_marker-layer .ace_active-line { - background: rgb(255, 255, 204); -} -.ace-github .ace_marker-layer .ace_active-line { - background: rgb(245, 245, 245); -} -.ace-github .ace_marker-layer .ace_selection { - background: rgb(181, 213, 255); -} -.ace-github.ace_multiselect .ace_selection.ace_start { - box-shadow: 0 0 3px 0px white; -} -/* bold keywords cause cursor issues for some fonts */ -/* this disables bold style for editor and keeps for static highlighter */ -.ace-github.ace_nobold .ace_line > span { - font-weight: normal !important; -} -.ace-github .ace_marker-layer .ace_step { - background: rgb(252, 255, 0); -} -.ace-github .ace_marker-layer .ace_stack { - background: rgb(164, 229, 101); -} -.ace-github .ace_marker-layer .ace_bracket { - margin: -1px 0 0 -1px; - border: 1px solid rgb(192, 192, 192); -} -.ace-github .ace_gutter-active-line { - background-color : rgba(0, 0, 0, 0.07); -} -.ace-github .ace_marker-layer .ace_selected-word { - background: rgb(250, 250, 255); - border: 1px solid rgb(200, 200, 250); -} -.ace-github .ace_invisible { - color: #BFBFBF -} -.ace-github .ace_print-margin { - width: 1px; - background: #e8e8e8; -} -.ace-github .ace_indent-guide { - background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y; -} -.ace-github .ace_indent-guide-active { - background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAAZSURBVHjaYvj///9/hivKyv8BAAAA//8DACLqBhbvk+/eAAAAAElFTkSuQmCC") right repeat-y; -} -`}),ace.define("ace/theme/github",["require","exports","module","ace/theme/github-css","ace/lib/dom"],function(n,M,G){M.isDark=!1,M.cssClass="ace-github",M.cssText=n("./github-css");var L=n("../lib/dom");L.importCssString(M.cssText,M.cssClass,!1)}),function(){ace.require(["ace/theme/github"],function(n){D&&(D.exports=n)})}()},821:(D,R,f0)=>{"use strict";f0.d(R,{Z:()=>C});var n=f0(537),M=f0.n(n),G=f0(645),L=f0.n(G),T=L()(M());T.push([D.id,`.flatpickr-calendar{background:transparent;opacity:0;display:none;text-align:center;visibility:hidden;padding:0;-webkit-animation:none;animation:none;direction:ltr;border:0;font-size:14px;line-height:24px;border-radius:5px;position:absolute;width:307.875px;-webkit-box-sizing:border-box;box-sizing:border-box;-ms-touch-action:manipulation;touch-action:manipulation;background:#fff;-webkit-box-shadow:1px 0 0 #e6e6e6,-1px 0 0 #e6e6e6,0 1px 0 #e6e6e6,0 -1px 0 #e6e6e6,0 3px 13px rgba(0,0,0,0.08);box-shadow:1px 0 0 #e6e6e6,-1px 0 0 #e6e6e6,0 1px 0 #e6e6e6,0 -1px 0 #e6e6e6,0 3px 13px rgba(0,0,0,0.08)}.flatpickr-calendar.open,.flatpickr-calendar.inline{opacity:1;max-height:640px;visibility:visible}.flatpickr-calendar.open{display:inline-block;z-index:99999}.flatpickr-calendar.animate.open{-webkit-animation:fpFadeInDown 300ms cubic-bezier(.23,1,.32,1);animation:fpFadeInDown 300ms cubic-bezier(.23,1,.32,1)}.flatpickr-calendar.inline{display:block;position:relative;top:2px}.flatpickr-calendar.static{position:absolute;top:calc(100% + 2px)}.flatpickr-calendar.static.open{z-index:999;display:block}.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+1) .flatpickr-day.inRange:nth-child(7n+7){-webkit-box-shadow:none !important;box-shadow:none !important}.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+2) .flatpickr-day.inRange:nth-child(7n+1){-webkit-box-shadow:-2px 0 0 #e6e6e6,5px 0 0 #e6e6e6;box-shadow:-2px 0 0 #e6e6e6,5px 0 0 #e6e6e6}.flatpickr-calendar .hasWeeks .dayContainer,.flatpickr-calendar .hasTime .dayContainer{border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.flatpickr-calendar .hasWeeks .dayContainer{border-left:0}.flatpickr-calendar.hasTime .flatpickr-time{height:40px;border-top:1px solid #e6e6e6}.flatpickr-calendar.noCalendar.hasTime .flatpickr-time{height:auto}.flatpickr-calendar:before,.flatpickr-calendar:after{position:absolute;display:block;pointer-events:none;border:solid transparent;content:'';height:0;width:0;left:22px}.flatpickr-calendar.rightMost:before,.flatpickr-calendar.arrowRight:before,.flatpickr-calendar.rightMost:after,.flatpickr-calendar.arrowRight:after{left:auto;right:22px}.flatpickr-calendar.arrowCenter:before,.flatpickr-calendar.arrowCenter:after{left:50%;right:50%}.flatpickr-calendar:before{border-width:5px;margin:0 -5px}.flatpickr-calendar:after{border-width:4px;margin:0 -4px}.flatpickr-calendar.arrowTop:before,.flatpickr-calendar.arrowTop:after{bottom:100%}.flatpickr-calendar.arrowTop:before{border-bottom-color:#e6e6e6}.flatpickr-calendar.arrowTop:after{border-bottom-color:#fff}.flatpickr-calendar.arrowBottom:before,.flatpickr-calendar.arrowBottom:after{top:100%}.flatpickr-calendar.arrowBottom:before{border-top-color:#e6e6e6}.flatpickr-calendar.arrowBottom:after{border-top-color:#fff}.flatpickr-calendar:focus{outline:0}.flatpickr-wrapper{position:relative;display:inline-block}.flatpickr-months{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.flatpickr-months .flatpickr-month{background:transparent;color:rgba(0,0,0,0.9);fill:rgba(0,0,0,0.9);height:34px;line-height:1;text-align:center;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:hidden;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}.flatpickr-months .flatpickr-prev-month,.flatpickr-months .flatpickr-next-month{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;text-decoration:none;cursor:pointer;position:absolute;top:0;height:34px;padding:10px;z-index:3;color:rgba(0,0,0,0.9);fill:rgba(0,0,0,0.9)}.flatpickr-months .flatpickr-prev-month.flatpickr-disabled,.flatpickr-months .flatpickr-next-month.flatpickr-disabled{display:none}.flatpickr-months .flatpickr-prev-month i,.flatpickr-months .flatpickr-next-month i{position:relative}.flatpickr-months .flatpickr-prev-month.flatpickr-prev-month,.flatpickr-months .flatpickr-next-month.flatpickr-prev-month{/* - /*rtl:begin:ignore*/left:0/* - /*rtl:end:ignore*/}/* - /*rtl:begin:ignore*/ -/* - /*rtl:end:ignore*/ -.flatpickr-months .flatpickr-prev-month.flatpickr-next-month,.flatpickr-months .flatpickr-next-month.flatpickr-next-month{/* - /*rtl:begin:ignore*/right:0/* - /*rtl:end:ignore*/}/* - /*rtl:begin:ignore*/ -/* - /*rtl:end:ignore*/ -.flatpickr-months .flatpickr-prev-month:hover,.flatpickr-months .flatpickr-next-month:hover{color:#959ea9}.flatpickr-months .flatpickr-prev-month:hover svg,.flatpickr-months .flatpickr-next-month:hover svg{fill:#f64747}.flatpickr-months .flatpickr-prev-month svg,.flatpickr-months .flatpickr-next-month svg{width:14px;height:14px}.flatpickr-months .flatpickr-prev-month svg path,.flatpickr-months .flatpickr-next-month svg path{-webkit-transition:fill .1s;transition:fill .1s;fill:inherit}.numInputWrapper{position:relative;height:auto}.numInputWrapper input,.numInputWrapper span{display:inline-block}.numInputWrapper input{width:100%}.numInputWrapper input::-ms-clear{display:none}.numInputWrapper input::-webkit-outer-spin-button,.numInputWrapper input::-webkit-inner-spin-button{margin:0;-webkit-appearance:none}.numInputWrapper span{position:absolute;right:0;width:14px;padding:0 4px 0 2px;height:50%;line-height:50%;opacity:0;cursor:pointer;border:1px solid rgba(57,57,57,0.15);-webkit-box-sizing:border-box;box-sizing:border-box}.numInputWrapper span:hover{background:rgba(0,0,0,0.1)}.numInputWrapper span:active{background:rgba(0,0,0,0.2)}.numInputWrapper span:after{display:block;content:"";position:absolute}.numInputWrapper span.arrowUp{top:0;border-bottom:0}.numInputWrapper span.arrowUp:after{border-left:4px solid transparent;border-right:4px solid transparent;border-bottom:4px solid rgba(57,57,57,0.6);top:26%}.numInputWrapper span.arrowDown{top:50%}.numInputWrapper span.arrowDown:after{border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px solid rgba(57,57,57,0.6);top:40%}.numInputWrapper span svg{width:inherit;height:auto}.numInputWrapper span svg path{fill:rgba(0,0,0,0.5)}.numInputWrapper:hover{background:rgba(0,0,0,0.05)}.numInputWrapper:hover span{opacity:1}.flatpickr-current-month{font-size:135%;line-height:inherit;font-weight:300;color:inherit;position:absolute;width:75%;left:12.5%;padding:7.48px 0 0 0;line-height:1;height:34px;display:inline-block;text-align:center;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.flatpickr-current-month span.cur-month{font-family:inherit;font-weight:700;color:inherit;display:inline-block;margin-left:.5ch;padding:0}.flatpickr-current-month span.cur-month:hover{background:rgba(0,0,0,0.05)}.flatpickr-current-month .numInputWrapper{width:6ch;width:7ch\\0;display:inline-block}.flatpickr-current-month .numInputWrapper span.arrowUp:after{border-bottom-color:rgba(0,0,0,0.9)}.flatpickr-current-month .numInputWrapper span.arrowDown:after{border-top-color:rgba(0,0,0,0.9)}.flatpickr-current-month input.cur-year{background:transparent;-webkit-box-sizing:border-box;box-sizing:border-box;color:inherit;cursor:text;padding:0 0 0 .5ch;margin:0;display:inline-block;font-size:inherit;font-family:inherit;font-weight:300;line-height:inherit;height:auto;border:0;border-radius:0;vertical-align:initial;-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.flatpickr-current-month input.cur-year:focus{outline:0}.flatpickr-current-month input.cur-year[disabled],.flatpickr-current-month input.cur-year[disabled]:hover{font-size:100%;color:rgba(0,0,0,0.5);background:transparent;pointer-events:none}.flatpickr-current-month .flatpickr-monthDropdown-months{appearance:menulist;background:transparent;border:none;border-radius:0;box-sizing:border-box;color:inherit;cursor:pointer;font-size:inherit;font-family:inherit;font-weight:300;height:auto;line-height:inherit;margin:-1px 0 0 0;outline:none;padding:0 0 0 .5ch;position:relative;vertical-align:initial;-webkit-box-sizing:border-box;-webkit-appearance:menulist;-moz-appearance:menulist;width:auto}.flatpickr-current-month .flatpickr-monthDropdown-months:focus,.flatpickr-current-month .flatpickr-monthDropdown-months:active{outline:none}.flatpickr-current-month .flatpickr-monthDropdown-months:hover{background:rgba(0,0,0,0.05)}.flatpickr-current-month .flatpickr-monthDropdown-months .flatpickr-monthDropdown-month{background-color:transparent;outline:none;padding:0}.flatpickr-weekdays{background:transparent;text-align:center;overflow:hidden;width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;height:28px}.flatpickr-weekdays .flatpickr-weekdaycontainer{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}span.flatpickr-weekday{cursor:default;font-size:90%;background:transparent;color:rgba(0,0,0,0.54);line-height:1;margin:0;text-align:center;display:block;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;font-weight:bolder}.dayContainer,.flatpickr-weeks{padding:1px 0 0 0}.flatpickr-days{position:relative;overflow:hidden;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:flex-start;width:307.875px}.flatpickr-days:focus{outline:0}.dayContainer{padding:0;outline:0;text-align:left;width:307.875px;min-width:307.875px;max-width:307.875px;-webkit-box-sizing:border-box;box-sizing:border-box;display:inline-block;display:-ms-flexbox;display:-webkit-box;display:-webkit-flex;display:flex;-webkit-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-wrap:wrap;-ms-flex-pack:justify;-webkit-justify-content:space-around;justify-content:space-around;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}.dayContainer + .dayContainer{-webkit-box-shadow:-1px 0 0 #e6e6e6;box-shadow:-1px 0 0 #e6e6e6}.flatpickr-day{background:none;border:1px solid transparent;border-radius:150px;-webkit-box-sizing:border-box;box-sizing:border-box;color:#393939;cursor:pointer;font-weight:400;width:14.2857143%;-webkit-flex-basis:14.2857143%;-ms-flex-preferred-size:14.2857143%;flex-basis:14.2857143%;max-width:39px;height:39px;line-height:39px;margin:0;display:inline-block;position:relative;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;text-align:center}.flatpickr-day.inRange,.flatpickr-day.prevMonthDay.inRange,.flatpickr-day.nextMonthDay.inRange,.flatpickr-day.today.inRange,.flatpickr-day.prevMonthDay.today.inRange,.flatpickr-day.nextMonthDay.today.inRange,.flatpickr-day:hover,.flatpickr-day.prevMonthDay:hover,.flatpickr-day.nextMonthDay:hover,.flatpickr-day:focus,.flatpickr-day.prevMonthDay:focus,.flatpickr-day.nextMonthDay:focus{cursor:pointer;outline:0;background:#e6e6e6;border-color:#e6e6e6}.flatpickr-day.today{border-color:#959ea9}.flatpickr-day.today:hover,.flatpickr-day.today:focus{border-color:#959ea9;background:#959ea9;color:#fff}.flatpickr-day.selected,.flatpickr-day.startRange,.flatpickr-day.endRange,.flatpickr-day.selected.inRange,.flatpickr-day.startRange.inRange,.flatpickr-day.endRange.inRange,.flatpickr-day.selected:focus,.flatpickr-day.startRange:focus,.flatpickr-day.endRange:focus,.flatpickr-day.selected:hover,.flatpickr-day.startRange:hover,.flatpickr-day.endRange:hover,.flatpickr-day.selected.prevMonthDay,.flatpickr-day.startRange.prevMonthDay,.flatpickr-day.endRange.prevMonthDay,.flatpickr-day.selected.nextMonthDay,.flatpickr-day.startRange.nextMonthDay,.flatpickr-day.endRange.nextMonthDay{background:#569ff7;-webkit-box-shadow:none;box-shadow:none;color:#fff;border-color:#569ff7}.flatpickr-day.selected.startRange,.flatpickr-day.startRange.startRange,.flatpickr-day.endRange.startRange{border-radius:50px 0 0 50px}.flatpickr-day.selected.endRange,.flatpickr-day.startRange.endRange,.flatpickr-day.endRange.endRange{border-radius:0 50px 50px 0}.flatpickr-day.selected.startRange + .endRange:not(:nth-child(7n+1)),.flatpickr-day.startRange.startRange + .endRange:not(:nth-child(7n+1)),.flatpickr-day.endRange.startRange + .endRange:not(:nth-child(7n+1)){-webkit-box-shadow:-10px 0 0 #569ff7;box-shadow:-10px 0 0 #569ff7}.flatpickr-day.selected.startRange.endRange,.flatpickr-day.startRange.startRange.endRange,.flatpickr-day.endRange.startRange.endRange{border-radius:50px}.flatpickr-day.inRange{border-radius:0;-webkit-box-shadow:-5px 0 0 #e6e6e6,5px 0 0 #e6e6e6;box-shadow:-5px 0 0 #e6e6e6,5px 0 0 #e6e6e6}.flatpickr-day.flatpickr-disabled,.flatpickr-day.flatpickr-disabled:hover,.flatpickr-day.prevMonthDay,.flatpickr-day.nextMonthDay,.flatpickr-day.notAllowed,.flatpickr-day.notAllowed.prevMonthDay,.flatpickr-day.notAllowed.nextMonthDay{color:rgba(57,57,57,0.3);background:transparent;border-color:transparent;cursor:default}.flatpickr-day.flatpickr-disabled,.flatpickr-day.flatpickr-disabled:hover{cursor:not-allowed;color:rgba(57,57,57,0.1)}.flatpickr-day.week.selected{border-radius:0;-webkit-box-shadow:-5px 0 0 #569ff7,5px 0 0 #569ff7;box-shadow:-5px 0 0 #569ff7,5px 0 0 #569ff7}.flatpickr-day.hidden{visibility:hidden}.rangeMode .flatpickr-day{margin-top:1px}.flatpickr-weekwrapper{float:left}.flatpickr-weekwrapper .flatpickr-weeks{padding:0 12px;-webkit-box-shadow:1px 0 0 #e6e6e6;box-shadow:1px 0 0 #e6e6e6}.flatpickr-weekwrapper .flatpickr-weekday{float:none;width:100%;line-height:28px}.flatpickr-weekwrapper span.flatpickr-day,.flatpickr-weekwrapper span.flatpickr-day:hover{display:block;width:100%;max-width:none;color:rgba(57,57,57,0.3);background:transparent;cursor:default;border:none}.flatpickr-innerContainer{display:block;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden}.flatpickr-rContainer{display:inline-block;padding:0;-webkit-box-sizing:border-box;box-sizing:border-box}.flatpickr-time{text-align:center;outline:0;display:block;height:0;line-height:40px;max-height:40px;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.flatpickr-time:after{content:"";display:table;clear:both}.flatpickr-time .numInputWrapper{-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;width:40%;height:40px;float:left}.flatpickr-time .numInputWrapper span.arrowUp:after{border-bottom-color:#393939}.flatpickr-time .numInputWrapper span.arrowDown:after{border-top-color:#393939}.flatpickr-time.hasSeconds .numInputWrapper{width:26%}.flatpickr-time.time24hr .numInputWrapper{width:49%}.flatpickr-time input{background:transparent;-webkit-box-shadow:none;box-shadow:none;border:0;border-radius:0;text-align:center;margin:0;padding:0;height:inherit;line-height:inherit;color:#393939;font-size:14px;position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.flatpickr-time input.flatpickr-hour{font-weight:bold}.flatpickr-time input.flatpickr-minute,.flatpickr-time input.flatpickr-second{font-weight:400}.flatpickr-time input:focus{outline:0;border:0}.flatpickr-time .flatpickr-time-separator,.flatpickr-time .flatpickr-am-pm{height:inherit;float:left;line-height:inherit;color:#393939;font-weight:bold;width:2%;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-align-self:center;-ms-flex-item-align:center;align-self:center}.flatpickr-time .flatpickr-am-pm{outline:0;width:18%;cursor:pointer;text-align:center;font-weight:400}.flatpickr-time input:hover,.flatpickr-time .flatpickr-am-pm:hover,.flatpickr-time input:focus,.flatpickr-time .flatpickr-am-pm:focus{background:#eee}.flatpickr-input[readonly]{cursor:pointer}@-webkit-keyframes fpFadeInDown{from{opacity:0;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@keyframes fpFadeInDown{from{opacity:0;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}`,"",{version:3,sources:["webpack://./node_modules/flatpickr/dist/flatpickr.min.css"],names:[],mappings:"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",sourcesContent:[`.flatpickr-calendar{background:transparent;opacity:0;display:none;text-align:center;visibility:hidden;padding:0;-webkit-animation:none;animation:none;direction:ltr;border:0;font-size:14px;line-height:24px;border-radius:5px;position:absolute;width:307.875px;-webkit-box-sizing:border-box;box-sizing:border-box;-ms-touch-action:manipulation;touch-action:manipulation;background:#fff;-webkit-box-shadow:1px 0 0 #e6e6e6,-1px 0 0 #e6e6e6,0 1px 0 #e6e6e6,0 -1px 0 #e6e6e6,0 3px 13px rgba(0,0,0,0.08);box-shadow:1px 0 0 #e6e6e6,-1px 0 0 #e6e6e6,0 1px 0 #e6e6e6,0 -1px 0 #e6e6e6,0 3px 13px rgba(0,0,0,0.08)}.flatpickr-calendar.open,.flatpickr-calendar.inline{opacity:1;max-height:640px;visibility:visible}.flatpickr-calendar.open{display:inline-block;z-index:99999}.flatpickr-calendar.animate.open{-webkit-animation:fpFadeInDown 300ms cubic-bezier(.23,1,.32,1);animation:fpFadeInDown 300ms cubic-bezier(.23,1,.32,1)}.flatpickr-calendar.inline{display:block;position:relative;top:2px}.flatpickr-calendar.static{position:absolute;top:calc(100% + 2px)}.flatpickr-calendar.static.open{z-index:999;display:block}.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+1) .flatpickr-day.inRange:nth-child(7n+7){-webkit-box-shadow:none !important;box-shadow:none !important}.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+2) .flatpickr-day.inRange:nth-child(7n+1){-webkit-box-shadow:-2px 0 0 #e6e6e6,5px 0 0 #e6e6e6;box-shadow:-2px 0 0 #e6e6e6,5px 0 0 #e6e6e6}.flatpickr-calendar .hasWeeks .dayContainer,.flatpickr-calendar .hasTime .dayContainer{border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.flatpickr-calendar .hasWeeks .dayContainer{border-left:0}.flatpickr-calendar.hasTime .flatpickr-time{height:40px;border-top:1px solid #e6e6e6}.flatpickr-calendar.noCalendar.hasTime .flatpickr-time{height:auto}.flatpickr-calendar:before,.flatpickr-calendar:after{position:absolute;display:block;pointer-events:none;border:solid transparent;content:'';height:0;width:0;left:22px}.flatpickr-calendar.rightMost:before,.flatpickr-calendar.arrowRight:before,.flatpickr-calendar.rightMost:after,.flatpickr-calendar.arrowRight:after{left:auto;right:22px}.flatpickr-calendar.arrowCenter:before,.flatpickr-calendar.arrowCenter:after{left:50%;right:50%}.flatpickr-calendar:before{border-width:5px;margin:0 -5px}.flatpickr-calendar:after{border-width:4px;margin:0 -4px}.flatpickr-calendar.arrowTop:before,.flatpickr-calendar.arrowTop:after{bottom:100%}.flatpickr-calendar.arrowTop:before{border-bottom-color:#e6e6e6}.flatpickr-calendar.arrowTop:after{border-bottom-color:#fff}.flatpickr-calendar.arrowBottom:before,.flatpickr-calendar.arrowBottom:after{top:100%}.flatpickr-calendar.arrowBottom:before{border-top-color:#e6e6e6}.flatpickr-calendar.arrowBottom:after{border-top-color:#fff}.flatpickr-calendar:focus{outline:0}.flatpickr-wrapper{position:relative;display:inline-block}.flatpickr-months{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.flatpickr-months .flatpickr-month{background:transparent;color:rgba(0,0,0,0.9);fill:rgba(0,0,0,0.9);height:34px;line-height:1;text-align:center;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:hidden;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}.flatpickr-months .flatpickr-prev-month,.flatpickr-months .flatpickr-next-month{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;text-decoration:none;cursor:pointer;position:absolute;top:0;height:34px;padding:10px;z-index:3;color:rgba(0,0,0,0.9);fill:rgba(0,0,0,0.9)}.flatpickr-months .flatpickr-prev-month.flatpickr-disabled,.flatpickr-months .flatpickr-next-month.flatpickr-disabled{display:none}.flatpickr-months .flatpickr-prev-month i,.flatpickr-months .flatpickr-next-month i{position:relative}.flatpickr-months .flatpickr-prev-month.flatpickr-prev-month,.flatpickr-months .flatpickr-next-month.flatpickr-prev-month{/* - /*rtl:begin:ignore*/left:0/* - /*rtl:end:ignore*/}/* - /*rtl:begin:ignore*/ -/* - /*rtl:end:ignore*/ -.flatpickr-months .flatpickr-prev-month.flatpickr-next-month,.flatpickr-months .flatpickr-next-month.flatpickr-next-month{/* - /*rtl:begin:ignore*/right:0/* - /*rtl:end:ignore*/}/* - /*rtl:begin:ignore*/ -/* - /*rtl:end:ignore*/ -.flatpickr-months .flatpickr-prev-month:hover,.flatpickr-months .flatpickr-next-month:hover{color:#959ea9}.flatpickr-months .flatpickr-prev-month:hover svg,.flatpickr-months .flatpickr-next-month:hover svg{fill:#f64747}.flatpickr-months .flatpickr-prev-month svg,.flatpickr-months .flatpickr-next-month svg{width:14px;height:14px}.flatpickr-months .flatpickr-prev-month svg path,.flatpickr-months .flatpickr-next-month svg path{-webkit-transition:fill .1s;transition:fill .1s;fill:inherit}.numInputWrapper{position:relative;height:auto}.numInputWrapper input,.numInputWrapper span{display:inline-block}.numInputWrapper input{width:100%}.numInputWrapper input::-ms-clear{display:none}.numInputWrapper input::-webkit-outer-spin-button,.numInputWrapper input::-webkit-inner-spin-button{margin:0;-webkit-appearance:none}.numInputWrapper span{position:absolute;right:0;width:14px;padding:0 4px 0 2px;height:50%;line-height:50%;opacity:0;cursor:pointer;border:1px solid rgba(57,57,57,0.15);-webkit-box-sizing:border-box;box-sizing:border-box}.numInputWrapper span:hover{background:rgba(0,0,0,0.1)}.numInputWrapper span:active{background:rgba(0,0,0,0.2)}.numInputWrapper span:after{display:block;content:"";position:absolute}.numInputWrapper span.arrowUp{top:0;border-bottom:0}.numInputWrapper span.arrowUp:after{border-left:4px solid transparent;border-right:4px solid transparent;border-bottom:4px solid rgba(57,57,57,0.6);top:26%}.numInputWrapper span.arrowDown{top:50%}.numInputWrapper span.arrowDown:after{border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px solid rgba(57,57,57,0.6);top:40%}.numInputWrapper span svg{width:inherit;height:auto}.numInputWrapper span svg path{fill:rgba(0,0,0,0.5)}.numInputWrapper:hover{background:rgba(0,0,0,0.05)}.numInputWrapper:hover span{opacity:1}.flatpickr-current-month{font-size:135%;line-height:inherit;font-weight:300;color:inherit;position:absolute;width:75%;left:12.5%;padding:7.48px 0 0 0;line-height:1;height:34px;display:inline-block;text-align:center;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.flatpickr-current-month span.cur-month{font-family:inherit;font-weight:700;color:inherit;display:inline-block;margin-left:.5ch;padding:0}.flatpickr-current-month span.cur-month:hover{background:rgba(0,0,0,0.05)}.flatpickr-current-month .numInputWrapper{width:6ch;width:7ch\\0;display:inline-block}.flatpickr-current-month .numInputWrapper span.arrowUp:after{border-bottom-color:rgba(0,0,0,0.9)}.flatpickr-current-month .numInputWrapper span.arrowDown:after{border-top-color:rgba(0,0,0,0.9)}.flatpickr-current-month input.cur-year{background:transparent;-webkit-box-sizing:border-box;box-sizing:border-box;color:inherit;cursor:text;padding:0 0 0 .5ch;margin:0;display:inline-block;font-size:inherit;font-family:inherit;font-weight:300;line-height:inherit;height:auto;border:0;border-radius:0;vertical-align:initial;-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.flatpickr-current-month input.cur-year:focus{outline:0}.flatpickr-current-month input.cur-year[disabled],.flatpickr-current-month input.cur-year[disabled]:hover{font-size:100%;color:rgba(0,0,0,0.5);background:transparent;pointer-events:none}.flatpickr-current-month .flatpickr-monthDropdown-months{appearance:menulist;background:transparent;border:none;border-radius:0;box-sizing:border-box;color:inherit;cursor:pointer;font-size:inherit;font-family:inherit;font-weight:300;height:auto;line-height:inherit;margin:-1px 0 0 0;outline:none;padding:0 0 0 .5ch;position:relative;vertical-align:initial;-webkit-box-sizing:border-box;-webkit-appearance:menulist;-moz-appearance:menulist;width:auto}.flatpickr-current-month .flatpickr-monthDropdown-months:focus,.flatpickr-current-month .flatpickr-monthDropdown-months:active{outline:none}.flatpickr-current-month .flatpickr-monthDropdown-months:hover{background:rgba(0,0,0,0.05)}.flatpickr-current-month .flatpickr-monthDropdown-months .flatpickr-monthDropdown-month{background-color:transparent;outline:none;padding:0}.flatpickr-weekdays{background:transparent;text-align:center;overflow:hidden;width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;height:28px}.flatpickr-weekdays .flatpickr-weekdaycontainer{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}span.flatpickr-weekday{cursor:default;font-size:90%;background:transparent;color:rgba(0,0,0,0.54);line-height:1;margin:0;text-align:center;display:block;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;font-weight:bolder}.dayContainer,.flatpickr-weeks{padding:1px 0 0 0}.flatpickr-days{position:relative;overflow:hidden;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:flex-start;width:307.875px}.flatpickr-days:focus{outline:0}.dayContainer{padding:0;outline:0;text-align:left;width:307.875px;min-width:307.875px;max-width:307.875px;-webkit-box-sizing:border-box;box-sizing:border-box;display:inline-block;display:-ms-flexbox;display:-webkit-box;display:-webkit-flex;display:flex;-webkit-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-wrap:wrap;-ms-flex-pack:justify;-webkit-justify-content:space-around;justify-content:space-around;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}.dayContainer + .dayContainer{-webkit-box-shadow:-1px 0 0 #e6e6e6;box-shadow:-1px 0 0 #e6e6e6}.flatpickr-day{background:none;border:1px solid transparent;border-radius:150px;-webkit-box-sizing:border-box;box-sizing:border-box;color:#393939;cursor:pointer;font-weight:400;width:14.2857143%;-webkit-flex-basis:14.2857143%;-ms-flex-preferred-size:14.2857143%;flex-basis:14.2857143%;max-width:39px;height:39px;line-height:39px;margin:0;display:inline-block;position:relative;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;text-align:center}.flatpickr-day.inRange,.flatpickr-day.prevMonthDay.inRange,.flatpickr-day.nextMonthDay.inRange,.flatpickr-day.today.inRange,.flatpickr-day.prevMonthDay.today.inRange,.flatpickr-day.nextMonthDay.today.inRange,.flatpickr-day:hover,.flatpickr-day.prevMonthDay:hover,.flatpickr-day.nextMonthDay:hover,.flatpickr-day:focus,.flatpickr-day.prevMonthDay:focus,.flatpickr-day.nextMonthDay:focus{cursor:pointer;outline:0;background:#e6e6e6;border-color:#e6e6e6}.flatpickr-day.today{border-color:#959ea9}.flatpickr-day.today:hover,.flatpickr-day.today:focus{border-color:#959ea9;background:#959ea9;color:#fff}.flatpickr-day.selected,.flatpickr-day.startRange,.flatpickr-day.endRange,.flatpickr-day.selected.inRange,.flatpickr-day.startRange.inRange,.flatpickr-day.endRange.inRange,.flatpickr-day.selected:focus,.flatpickr-day.startRange:focus,.flatpickr-day.endRange:focus,.flatpickr-day.selected:hover,.flatpickr-day.startRange:hover,.flatpickr-day.endRange:hover,.flatpickr-day.selected.prevMonthDay,.flatpickr-day.startRange.prevMonthDay,.flatpickr-day.endRange.prevMonthDay,.flatpickr-day.selected.nextMonthDay,.flatpickr-day.startRange.nextMonthDay,.flatpickr-day.endRange.nextMonthDay{background:#569ff7;-webkit-box-shadow:none;box-shadow:none;color:#fff;border-color:#569ff7}.flatpickr-day.selected.startRange,.flatpickr-day.startRange.startRange,.flatpickr-day.endRange.startRange{border-radius:50px 0 0 50px}.flatpickr-day.selected.endRange,.flatpickr-day.startRange.endRange,.flatpickr-day.endRange.endRange{border-radius:0 50px 50px 0}.flatpickr-day.selected.startRange + .endRange:not(:nth-child(7n+1)),.flatpickr-day.startRange.startRange + .endRange:not(:nth-child(7n+1)),.flatpickr-day.endRange.startRange + .endRange:not(:nth-child(7n+1)){-webkit-box-shadow:-10px 0 0 #569ff7;box-shadow:-10px 0 0 #569ff7}.flatpickr-day.selected.startRange.endRange,.flatpickr-day.startRange.startRange.endRange,.flatpickr-day.endRange.startRange.endRange{border-radius:50px}.flatpickr-day.inRange{border-radius:0;-webkit-box-shadow:-5px 0 0 #e6e6e6,5px 0 0 #e6e6e6;box-shadow:-5px 0 0 #e6e6e6,5px 0 0 #e6e6e6}.flatpickr-day.flatpickr-disabled,.flatpickr-day.flatpickr-disabled:hover,.flatpickr-day.prevMonthDay,.flatpickr-day.nextMonthDay,.flatpickr-day.notAllowed,.flatpickr-day.notAllowed.prevMonthDay,.flatpickr-day.notAllowed.nextMonthDay{color:rgba(57,57,57,0.3);background:transparent;border-color:transparent;cursor:default}.flatpickr-day.flatpickr-disabled,.flatpickr-day.flatpickr-disabled:hover{cursor:not-allowed;color:rgba(57,57,57,0.1)}.flatpickr-day.week.selected{border-radius:0;-webkit-box-shadow:-5px 0 0 #569ff7,5px 0 0 #569ff7;box-shadow:-5px 0 0 #569ff7,5px 0 0 #569ff7}.flatpickr-day.hidden{visibility:hidden}.rangeMode .flatpickr-day{margin-top:1px}.flatpickr-weekwrapper{float:left}.flatpickr-weekwrapper .flatpickr-weeks{padding:0 12px;-webkit-box-shadow:1px 0 0 #e6e6e6;box-shadow:1px 0 0 #e6e6e6}.flatpickr-weekwrapper .flatpickr-weekday{float:none;width:100%;line-height:28px}.flatpickr-weekwrapper span.flatpickr-day,.flatpickr-weekwrapper span.flatpickr-day:hover{display:block;width:100%;max-width:none;color:rgba(57,57,57,0.3);background:transparent;cursor:default;border:none}.flatpickr-innerContainer{display:block;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden}.flatpickr-rContainer{display:inline-block;padding:0;-webkit-box-sizing:border-box;box-sizing:border-box}.flatpickr-time{text-align:center;outline:0;display:block;height:0;line-height:40px;max-height:40px;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.flatpickr-time:after{content:"";display:table;clear:both}.flatpickr-time .numInputWrapper{-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;width:40%;height:40px;float:left}.flatpickr-time .numInputWrapper span.arrowUp:after{border-bottom-color:#393939}.flatpickr-time .numInputWrapper span.arrowDown:after{border-top-color:#393939}.flatpickr-time.hasSeconds .numInputWrapper{width:26%}.flatpickr-time.time24hr .numInputWrapper{width:49%}.flatpickr-time input{background:transparent;-webkit-box-shadow:none;box-shadow:none;border:0;border-radius:0;text-align:center;margin:0;padding:0;height:inherit;line-height:inherit;color:#393939;font-size:14px;position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.flatpickr-time input.flatpickr-hour{font-weight:bold}.flatpickr-time input.flatpickr-minute,.flatpickr-time input.flatpickr-second{font-weight:400}.flatpickr-time input:focus{outline:0;border:0}.flatpickr-time .flatpickr-time-separator,.flatpickr-time .flatpickr-am-pm{height:inherit;float:left;line-height:inherit;color:#393939;font-weight:bold;width:2%;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-align-self:center;-ms-flex-item-align:center;align-self:center}.flatpickr-time .flatpickr-am-pm{outline:0;width:18%;cursor:pointer;text-align:center;font-weight:400}.flatpickr-time input:hover,.flatpickr-time .flatpickr-am-pm:hover,.flatpickr-time input:focus,.flatpickr-time .flatpickr-am-pm:focus{background:#eee}.flatpickr-input[readonly]{cursor:pointer}@-webkit-keyframes fpFadeInDown{from{opacity:0;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@keyframes fpFadeInDown{from{opacity:0;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}`],sourceRoot:""}]);const C=T},645:D=>{"use strict";D.exports=function(R){var f0=[];return f0.toString=function(){return this.map(function(M){var G="",L=typeof M[5]!="undefined";return M[4]&&(G+="@supports (".concat(M[4],") {")),M[2]&&(G+="@media ".concat(M[2]," {")),L&&(G+="@layer".concat(M[5].length>0?" ".concat(M[5]):""," {")),G+=R(M),L&&(G+="}"),M[2]&&(G+="}"),M[4]&&(G+="}"),G}).join("")},f0.i=function(M,G,L,T,C){typeof M=="string"&&(M=[[null,M,void 0]]);var d={};if(L)for(var h=0;h0?" ".concat(s[5]):""," {").concat(s[1],"}")),s[5]=C),G&&(s[2]&&(s[1]="@media ".concat(s[2]," {").concat(s[1],"}")),s[2]=G),T&&(s[4]?(s[1]="@supports (".concat(s[4],") {").concat(s[1],"}"),s[4]=T):s[4]="".concat(T)),f0.push(s))}},f0}},537:D=>{"use strict";D.exports=function(R){var f0=R[1],n=R[3];if(!n)return f0;if(typeof btoa=="function"){var M=btoa(unescape(encodeURIComponent(JSON.stringify(n)))),G="sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(M),L="/*# ".concat(G," */");return[f0].concat([L]).join(` -`)}return[f0].join(` -`)}},745:(D,R,f0)=>{"use strict";var n,M=f0(137);if(1)R.s=M.createRoot,n=M.hydrateRoot;else var G},590:D=>{var R=typeof Element!="undefined",f0=typeof Map=="function",n=typeof Set=="function",M=typeof ArrayBuffer=="function"&&!!ArrayBuffer.isView;function G(L,T){if(L===T)return!0;if(L&&T&&typeof L=="object"&&typeof T=="object"){if(L.constructor!==T.constructor)return!1;var C,d,h;if(Array.isArray(L)){if(C=L.length,C!=T.length)return!1;for(d=C;d--!==0;)if(!G(L[d],T[d]))return!1;return!0}var l;if(f0&&L instanceof Map&&T instanceof Map){if(L.size!==T.size)return!1;for(l=L.entries();!(d=l.next()).done;)if(!T.has(d.value[0]))return!1;for(l=L.entries();!(d=l.next()).done;)if(!G(d.value[1],T.get(d.value[0])))return!1;return!0}if(n&&L instanceof Set&&T instanceof Set){if(L.size!==T.size)return!1;for(l=L.entries();!(d=l.next()).done;)if(!T.has(d.value[0]))return!1;return!0}if(M&&ArrayBuffer.isView(L)&&ArrayBuffer.isView(T)){if(C=L.length,C!=T.length)return!1;for(d=C;d--!==0;)if(L[d]!==T[d])return!1;return!0}if(L.constructor===RegExp)return L.source===T.source&&L.flags===T.flags;if(L.valueOf!==Object.prototype.valueOf&&typeof L.valueOf=="function"&&typeof T.valueOf=="function")return L.valueOf()===T.valueOf();if(L.toString!==Object.prototype.toString&&typeof L.toString=="function"&&typeof T.toString=="function")return L.toString()===T.toString();if(h=Object.keys(L),C=h.length,C!==Object.keys(T).length)return!1;for(d=C;d--!==0;)if(!Object.prototype.hasOwnProperty.call(T,h[d]))return!1;if(R&&L instanceof Element)return!1;for(d=C;d--!==0;)if(!((h[d]==="_owner"||h[d]==="__v"||h[d]==="__o")&&L.$$typeof)&&!G(L[h[d]],T[h[d]]))return!1;return!0}return L!==L&&T!==T}D.exports=function(T,C){try{return G(T,C)}catch(d){if((d.message||"").match(/stack|recursion/i))return console.warn("react-fast-compare cannot handle circular refs"),!1;throw d}}},379:D=>{"use strict";var R=[];function f0(G){for(var L=-1,T=0;T{"use strict";var R={};function f0(M){if(typeof R[M]=="undefined"){var G=document.querySelector(M);if(window.HTMLIFrameElement&&G instanceof window.HTMLIFrameElement)try{G=G.contentDocument.head}catch(L){G=null}R[M]=G}return R[M]}function n(M,G){var L=f0(M);if(!L)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");L.appendChild(G)}D.exports=n},216:D=>{"use strict";function R(f0){var n=document.createElement("style");return f0.setAttributes(n,f0.attributes),f0.insert(n,f0.options),n}D.exports=R},565:(D,R,f0)=>{"use strict";function n(M){var G=f0.nc;G&&M.setAttribute("nonce",G)}D.exports=n},795:D=>{"use strict";function R(M,G,L){var T="";L.supports&&(T+="@supports (".concat(L.supports,") {")),L.media&&(T+="@media ".concat(L.media," {"));var C=typeof L.layer!="undefined";C&&(T+="@layer".concat(L.layer.length>0?" ".concat(L.layer):""," {")),T+=L.css,C&&(T+="}"),L.media&&(T+="}"),L.supports&&(T+="}");var d=L.sourceMap;d&&typeof btoa!="undefined"&&(T+=` -/*# sourceMappingURL=data:application/json;base64,`.concat(btoa(unescape(encodeURIComponent(JSON.stringify(d))))," */")),G.styleTagTransform(T,M,G.options)}function f0(M){if(M.parentNode===null)return!1;M.parentNode.removeChild(M)}function n(M){if(typeof document=="undefined")return{update:function(){},remove:function(){}};var G=M.insertStyleElement(M);return{update:function(T){R(G,M,T)},remove:function(){f0(G)}}}D.exports=n},589:D=>{"use strict";function R(f0,n){if(n.styleSheet)n.styleSheet.cssText=f0;else{for(;n.firstChild;)n.removeChild(n.firstChild);n.appendChild(document.createTextNode(f0))}}D.exports=R},137:D=>{"use strict";D.exports=require("react-dom")}},L5={};function O0(D){var R=L5[D];if(R!==void 0)return R.exports;var f0=L5[D]={id:D,loaded:!1,exports:{}};return f2[D](f0,f0.exports,O0),f0.loaded=!0,f0.exports}O0.amdD=function(){throw new Error("define cannot be used indirect")},O0.n=D=>{var R=D&&D.__esModule?()=>D.default:()=>D;return O0.d(R,{a:R}),R},O0.d=(D,R)=>{for(var f0 in R)O0.o(R,f0)&&!O0.o(D,f0)&&Object.defineProperty(D,f0,{enumerable:!0,get:R[f0]})},O0.o=(D,R)=>Object.prototype.hasOwnProperty.call(D,R),O0.r=D=>{typeof Symbol!="undefined"&&Symbol.toStringTag&&Object.defineProperty(D,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(D,"__esModule",{value:!0})},O0.nmd=D=>(D.paths=[],D.children||(D.children=[]),D),O0.p="",O0.nc=void 0;var p2={};(()=>{"use strict";O0.r(p2),O0.d(p2,{Accordion:()=>w0,Button:()=>j0,ButtonGroup:()=>S5,Chart:()=>n5,Checkbox:()=>$9,CodeEditor:()=>D2,Collapsible:()=>m0,Column:()=>O9,Combobox:()=>j2,Combobox2:()=>V2,Confirm:()=>D6,CopyToClipboard:()=>L6,DatePicker:()=>U2,Dropdown:()=>B7,EditableList:()=>Y2,EditableList2:()=>k4,FieldCodeEditor:()=>b3,FieldCombobox:()=>A3,FieldCombobox2:()=>oo,FieldDatePicker:()=>fo,FieldDropdown:()=>S3,FieldEditableList:()=>W3,FieldFileInput:()=>V3,FieldInput:()=>Y3,FieldMultiselect:()=>Q3,FieldPagination:()=>Qi,FieldSelect:()=>t6,FieldSelectableList:()=>i6,FieldToggle:()=>a6,FileInput:()=>W9,FixedWrapper:()=>W6,FloatingContainer:()=>w9,FormikCheckbox:()=>ci,FormikCodeEditor:()=>ui,FormikCombobox:()=>hi,FormikCombobox2:()=>di,FormikDatePicker:()=>fi,FormikEditableList:()=>pi,FormikEditableList2:()=>gi,FormikFileInput:()=>mi,FormikInput:()=>vi,FormikInput2:()=>yi,FormikMultiselect:()=>bi,FormikRadio:()=>wi,FormikSelect:()=>Ci,FormikSelectableList:()=>Ai,FormikStringBuilder:()=>Si,FormikTextarea:()=>ki,FormikToggle:()=>xi,FormikWrapper:()=>c5,Icon:()=>a,InfiniteScroller:()=>b9,InfoNote:()=>U6,Input:()=>z9,Input2:()=>L4,List:()=>C2,Loader:()=>_0,Message:()=>D0,Modal:()=>y9,Multiselect:()=>q2,NavBar:()=>K6,Navigation:()=>X6,Pagination:()=>S9,Panel:()=>o8,Pill:()=>e7,Radio:()=>e1,RevealPanel:()=>l8,Row:()=>a9,Select:()=>G9,SelectableList:()=>r1,StringBuilder:()=>c3,Table:()=>Y8,Tabs:()=>v8,TextEllipsis:()=>w8,Textarea:()=>Z4,Toggle:()=>i1,Tooltip:()=>R2,setConfig:()=>ri,toast:()=>m2,useComponentSize:()=>I,useEventListener:()=>y,useInterval:()=>k,usePrevious:()=>w,useTimeout:()=>B});const D=require("react");var R=O0.n(D);const f0=require("prop-types");var n=O0.n(f0);const G=(0,D.createContext)(),T=(0,D.createContext)();var C=Object.defineProperty,d=Object.getOwnPropertySymbols,h=Object.prototype.hasOwnProperty,l=Object.prototype.propertyIsEnumerable,o=(u,e,t)=>e in u?C(u,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):u[e]=t,s=(u,e)=>{for(var t in e||(e={}))h.call(e,t)&&o(u,t,e[t]);if(d)for(var t of d(e))l.call(e,t)&&o(u,t,e[t]);return u},i=(u,e)=>{var t={};for(var f in u)h.call(u,f)&&e.indexOf(f)<0&&(t[f]=u[f]);if(u!=null&&d)for(var f of d(u))e.indexOf(f)<0&&l.call(u,f)&&(t[f]=u[f]);return t};function r(u){var e=u,{className:t,family:f,type:x}=e,P=i(e,["className","family","type"]);function F(){const H=f||"fa";return["tyk-icon",H,`${H}-${x}`,t].filter(Boolean).join(" ")}return R().createElement("i",s({className:F()},P))}r.propTypes={className:n().string,family:n().string,type:n().string.isRequired};const a=r;function c({wrap:u}){const{collapsed:e,disabled:t,toggleChange:f}=(0,D.useContext)(T),x=e?"chevron-down":"chevron-up",P=["tyk-accordion__trigger",t&&"tyk-accordion__trigger--disabled"].filter(Boolean).join(" "),F=R().createElement("button",{className:P,onClick:f,type:"button"},R().createElement(a,{className:"collapsable__arrow",type:x}));return u?R().createElement("div",{className:"tyk-accordion__trigger-wrapper"},F):F}c.propTypes={wrap:n().bool};const p=c;function g({collapsed:u,children:e,className:t,disabled:f},x){const{arrow:P}=(0,D.useContext)(G),[F,H]=(0,D.useState)(u),V=()=>{f||H(!F)},K=(0,D.useMemo)(()=>["tyk-accordion__item",P.expandToContent?`tyk-accordion__item--trigger-position-${P.position}`:"tyk-accordion__item--trigger-in-header",t,F===!1&&"tyk-accordion__item--active"].filter(Boolean).join(" "),[P,t,F]),X=(0,D.useMemo)(()=>({collapsed:F,disabled:f,toggleChange:V}),[F,f,V]);return R().createElement("div",{ref:x,className:K},R().createElement(T.Provider,{value:X},P.expandToContent&&R().createElement(p,{wrap:!0}),e))}g.propTypes={children:n().oneOfType([n().arrayOf(n().node),n().node,n().element,n().string]),collapsed:n().bool,className:n().string,disabled:n().bool},g.defaultProps={collapsed:!1};const A=(0,D.forwardRef)(g);function b({className:u,children:e}){const{collapsed:t,disabled:f,toggleChange:x}=(0,D.useContext)(T),{usearrowastrigger:P,arrow:F}=(0,D.useContext)(G),H=t?"chevron-down":"chevron-up",V=["tyk-accordion__item-header",P&&"tyk-accordion__arrow-trigger",u].filter(Boolean).join(" ");return R().createElement("div",{className:V},P?R().createElement(R().Fragment,null,!F.expandToContent&&F.position==="left"&&R().createElement(p,null),R().createElement("div",null,e),!F.expandToContent&&F.position==="right"&&R().createElement(p,null)):R().createElement("button",{className:f?"tyk-accordion__trigger--disabled":"",onClick:x,type:"button"},R().createElement("span",null,e),R().createElement(a,{className:"collapsable__arrow",type:H})))}b.propTypes={children:n().oneOfType([n().arrayOf(n().node),n().node,n().element,n().string]),className:n().string};const $=b,S=require("react-transition-group"),w=u=>{const e=(0,D.useRef)();return(0,D.useEffect)(()=>{e.current=u},[u]),e.current},B=(u,e)=>{const t=(0,D.useRef)();(0,D.useEffect)(()=>{t.current=u},[u]),(0,D.useEffect)(()=>{function f(){t.current()}if(e!==null){const x=setTimeout(f,e);return()=>clearTimeout(x)}return()=>{}},[e])};function k(u,e,...t){const f=(0,D.useRef)();(0,D.useEffect)(()=>{f.current=u},[u]),(0,D.useEffect)(()=>{function x(){f.current(...t)}if(e!=null){const P=setInterval(x,e);return()=>clearInterval(P)}},[e])}const y=(u,e,t)=>{const f=(0,D.useRef)();(0,D.useEffect)(()=>{f.current=e},[e]),(0,D.useEffect)(()=>{if(!(t==null?void 0:t.addEventListener))return;const P=F=>f.current(F);return t.addEventListener(u,P),()=>{t.removeEventListener(u,P)}},[u,t])},m=u=>u?{width:u.offsetWidth,height:u.offsetHeight}:{width:0,height:0},I=u=>{const[e,t]=(0,D.useState)(m(u?u.current:{})),f=(0,D.useCallback)(()=>{u.current&&t(m(u.current))},[u]);return(0,D.useLayoutEffect)(()=>{f();let x=new ResizeObserver(()=>{f()});return x.observe(u.current),()=>{x.disconnect(u.current),x=null}},[u.current]),e};var N=Object.defineProperty,W=Object.defineProperties,z=Object.getOwnPropertyDescriptors,U=Object.getOwnPropertySymbols,j=Object.prototype.hasOwnProperty,q=Object.prototype.propertyIsEnumerable,Y=(u,e,t)=>e in u?N(u,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):u[e]=t,t0=(u,e)=>{for(var t in e||(e={}))j.call(e,t)&&Y(u,t,e[t]);if(U)for(var t of U(e))q.call(e,t)&&Y(u,t,e[t]);return u},n0=(u,e)=>W(u,z(e)),u0=(u,e)=>{var t={};for(var f in u)j.call(u,f)&&e.indexOf(f)<0&&(t[f]=u[f]);if(u!=null&&U)for(var f of U(u))e.indexOf(f)<0&&q.call(u,f)&&(t[f]=u[f]);return t};function h0(u){var e=u,{className:t,collapsed:f,children:x}=e,P=u0(e,["className","collapsed","children"]);const F=(0,D.useRef)(null),H=(0,D.useRef)(null),V=I(F),[K,X]=(0,D.useState)({height:f?0:"auto"}),e0=c0=>{X({height:`${c0}px`})},Z=()=>F.current?F.current.clientHeight:0,Q=()=>{e0(Z())},i0=()=>{e0(0)};(0,D.useEffect)(()=>{!f&&(V!=null&&V.height)&&K.height!==(V==null?void 0:V.height)&&e0(V.height)},[V.height]);const J=(0,D.useCallback)(()=>{!f&&F.current&&(e0(Z()),H.current.style.height=`${Z()}px`)},[f,F.current]);return y("resize",J,window),R().createElement(S.CSSTransition,{onEnter:Q,onExit:i0,in:!f,timeout:0,classNames:"collapse"},R().createElement("div",{className:"collapse-wrapper",ref:H,style:K},R().createElement("div",n0(t0({},P),{className:t,ref:F}),x)))}h0.propTypes={children:n().oneOfType([n().element,n().node,n().string]),collapsed:n().bool,className:n().string};const m0=h0;function p0({children:u,className:e}){const{collapsed:t}=(0,D.useContext)(T),f=["tyk-accordion__item-content",e].filter(Boolean).join(" ");return R().createElement("div",{className:f},R().createElement(m0,{collapsed:t},u))}p0.propTypes={children:n().oneOfType([n().arrayOf(n().node),n().node,n().element,n().string]),className:n().string};const b0=p0;function k0({className:u,children:e,usearrowastrigger:t,arrow:f={position:"right",expandToContent:!1}}){const x=["tyk-accordion",u].filter(Boolean).join(" "),P=(0,D.useMemo)(()=>({usearrowastrigger:t,arrow:f}),[t,f]);return R().createElement("div",{className:x},R().createElement(G.Provider,{value:P},e))}k0.propTypes={children:n().oneOfType([n().arrayOf(n().node),n().node,n().element,n().string]),className:n().string,usearrowastrigger:n().bool,arrow:n().shape({position:n().oneOf(["left","right"]),expandToContent:n().bool})},k0.defaultProps={usearrowastrigger:!1},k0.Item=A,k0.Item.Header=$,k0.Item.Content=b0;const w0=k0;var H0=Object.defineProperty,N0=Object.getOwnPropertySymbols,z0=Object.prototype.hasOwnProperty,M0=Object.prototype.propertyIsEnumerable,Y0=(u,e,t)=>e in u?H0(u,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):u[e]=t,m5=(u,e)=>{for(var t in e||(e={}))z0.call(e,t)&&Y0(u,t,e[t]);if(N0)for(var t of N0(e))M0.call(e,t)&&Y0(u,t,e[t]);return u},k5=(u,e)=>{var t={};for(var f in u)z0.call(u,f)&&e.indexOf(f)<0&&(t[f]=u[f]);if(u!=null&&N0)for(var f of N0(u))e.indexOf(f)<0&&M0.call(u,f)&&(t[f]=u[f]);return t};const f5=R().forwardRef((u,e)=>{const t=u,{customButton:f,children:x,iconType:P,iconFamily:F,iconPosition:H,iconOnly:V,id:K,className:X,disabled:e0,display:Z,href:Q,onClick:i0,noStyle:J,size:c0,theme:r0,type:o0}=t,g0=k5(t,["customButton","children","iconType","iconFamily","iconPosition","iconOnly","id","className","disabled","display","href","onClick","noStyle","size","theme","type"]),y0=()=>{const S0=["tyk-button"].concat(X?X.split(" "):[]),B0=c0?`tyk-button--${c0}`:"tyk-button--md",I0=e0?"disabled":"",v0=Z||"",l0=r0?`tyk-button--${r0}`:"",s0=V?"tyk-button--icon-only":"",C0=J?"tyk-button--no-style":"";return S0.push(s0),S0.push(l0),S0.push(B0),S0.push(I0),S0.push(v0),S0.push(C0),P&&S0.push(`icon-${H||"left"}`),S0.join(" ")},L0=S0=>P&&(H||"left")===S0?R().createElement(a,{family:F,type:P}):null;return(()=>{let S0;return f?R().createElement(D.Fragment,null,(0,D.cloneElement)(f,{className:y0(),disabled:e0})):(Q?S0=R().createElement("a",m5({id:K,className:y0(),disabled:e0,onClick:i0,href:Q,ref:e},g0),L0("left"),x,L0("right")):S0=R().createElement("button",m5({id:K,className:y0(),disabled:e0,onClick:i0,type:o0||"button",ref:e},g0),L0("left"),x&&R().createElement("span",null,x),L0("right")),S0)})()});f5.propTypes={children:n().oneOfType([n().arrayOf(n().node),n().node,n().element,n().string]),customButton:n().oneOfType([n().arrayOf(n().node),n().node,n().element]),className:n().string,display:n().string,disabled:n().bool,id:n().string,href:n().string,iconPosition:n().string,iconFamily:n().string,iconOnly:n().bool,iconType:n().string,noStyle:n().bool,onClick:n().func,theme:n().string,type:n().string,size:n().string},f5.defaultProps={theme:"",type:"button"};const j0=f5;function l5({className:u,children:e,label:t}){return R().createElement("div",{className:`tyk-button-group__wrapper ${u}`},!!t&&R().createElement("label",null,t),R().createElement("div",{className:"tyk-button-group"},e))}l5.propTypes={children:n().oneOfType([n().arrayOf(n().node),n().node,n().element,n().string]),className:n().string,label:n().string};const S5=l5,y5=require("echarts"),W0=require("immutable"),a0=(u,e,t)=>{let f;return function(...P){const F=this,H=()=>{f=null,t||u.apply(F,P)},V=t&&!f;clearTimeout(f),f=setTimeout(H,e),V&&u.apply(F,P)}};function x0({className:u,position:e="relative",withbackground:t=!1}){const f=["loading",e,u].filter(Boolean).join(" "),x=R().createElement("div",{className:f},R().createElement("div",{className:"loading-bar"}),R().createElement("div",{className:"loading-bar"}),R().createElement("div",{className:"loading-bar"}),R().createElement("div",{className:"loading-bar"}));return t?R().createElement("div",{className:"tyk-loading__wrapper"},x):x}x0.propTypes={className:n().string,position:n().string,withbackground:n().bool};const _0=x0;function F0({children:u,theme:e,onClose:t,noMargin:f,className:x}){function P(){return["tyk-message",`tyk-message--${e||"info"}`,f&&"no-margin",x].filter(Boolean).join(" ")}const F=e==="success"?"check":"warning";return R().createElement("div",{className:P()},R().createElement(a,{family:"tykon",type:F}),R().createElement("div",{className:"tyk-message__content"},u),t&&R().createElement(a,{family:"tykon",type:"x",onClick:t}))}F0.propTypes={theme:n().string,children:n().oneOfType([n().element,n().node,n().string]),className:n().string,noMargin:n().bool,onClose:n().func};const D0=F0,t5=JSON.parse(`{"type":"FeatureCollection","crs":{"type":"name","properties":{"name":"urn:ogc:def:crs:OGC:1.3:CRS84"}},"features":[{"geometry":{"type":"Polygon","coordinates":[[[47.97822265625001,7.9970703125],[46.97822265625001,7.9970703125],[43.98378906250002,9.008837890624989],[43.482519531250006,9.379492187499991],[43.181640625,9.879980468749991],[42.84160156250002,10.203076171874997],[42.65644531250001,10.6],[42.92275390625002,10.999316406249989],[43.24599609375002,11.499804687499989],[43.85273437500001,10.784277343749991],[44.38652343750002,10.430224609374989],[44.94296875,10.43671875],[45.81669921875002,10.835888671874997],[46.565039062500006,10.745996093749994],[47.40498046875001,11.174023437499997],[48.01923828125001,11.139355468749997],[48.57255859375002,11.320507812499997],[48.938574218750006,11.258447265624994],[50.11005859375001,11.529296875],[50.79228515625002,11.983691406249989],[51.2548828125,11.830712890624994],[51.08427734375002,11.335644531249997],[51.140625,10.656884765624994],[51.031835937500006,10.444775390624997],[51.19296875,10.554638671874997],[51.390234375,10.422607421875],[50.93007812500002,10.33554687499999],[50.825,9.428173828124997],[50.10283203125002,8.199804687499991],[49.85205078125,7.962548828124994],[49.234960937500006,6.77734375],[49.04931640625,6.173632812499989],[47.97529296875001,4.497021484374997],[46.87880859375002,3.28564453125],[46.05117187500002,2.475146484374989],[44.92021484375002,1.81015625],[43.71757812500002,0.857861328124997],[41.97988281250002,-0.973046875],[41.53271484375,-1.6953125],[41.521875,-1.572265625],[41.42695312500001,-1.449511718750003],[41.24980468750002,-1.220507812500003],[40.97871093750001,-0.870312500000011],[40.964453125,2.814648437499997],[41.341796875,3.20166015625],[41.61347656250001,3.590478515624994],[41.88398437500001,3.977734375],[41.91533203125002,4.031298828124989],[42.02412109375001,4.137939453125],[42.85664062500001,4.32421875],[43.12568359375001,4.644482421874997],[43.58349609375,4.85498046875],[43.988867187500006,4.950537109374991],[44.940527343750006,4.912011718749994],[47.97822265625001,7.9970703125]]]},"properties":{"name":"Somalia","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[9.579979133936737,47.05856388629306],[9.409458596647225,47.02019676540292],[9.46249431093294,47.09010747968864],[9.46249431093294,47.19858962254578],[9.527658197470123,47.27026989773668],[9.579979133936737,47.05856388629306]]]},"properties":{"name":"Liechtenstein","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-8.683349609375,27.77800740805682],[-13.038761787013554,27.81190166624856],[-12.948925781249926,27.914160156250034],[-11.552685546874955,28.31010742187496],[-10.486474609374994,29.06494140625],[-10.200585937499994,29.380371093750057],[-9.667089843749949,30.10927734375005],[-9.652929687499977,30.447558593750045],[-9.875488281249943,30.717919921874966],[-9.80869140624992,31.42460937499996],[-9.347460937499932,32.086376953124955],[-9.245849609375,32.572460937499955],[-8.512841796874994,33.25244140625003],[-6.900976562499949,33.96904296874999],[-6.353125,34.77607421875001],[-5.924804687499943,35.78579101562502],[-5.277832031249943,35.90273437500002],[-5.252685546874972,35.61474609374997],[-4.628320312499966,35.206396484375006],[-4.329980468749937,35.161474609375006],[-3.693261718749994,35.27998046874998],[-3.394726562499926,35.21181640625005],[-2.972216796874989,35.40727539062499],[-2.839941406249949,35.127832031249994],[-2.731396484374955,35.13520507812498],[-2.636816406249977,35.11269531250002],[-2.423730468749994,35.12348632812498],[-2.219628906249966,35.10419921874998],[-1.795605468749926,34.751904296874955],[-1.67919921875,33.31865234375002],[-1.550732421874955,33.073583984375006],[-1.510009765625,32.877636718749955],[-1.45,32.784814453124966],[-1.352148437499977,32.70336914062497],[-1.29638671875,32.67568359375002],[-1.188232421875,32.608496093750006],[-1.111035156249983,32.55229492187502],[-1.065527343749949,32.46831054687496],[-1.16259765625,32.399169921875],[-1.275341796874983,32.089013671874966],[-2.863427734374937,32.07470703124997],[-2.930859374999926,32.04252929687499],[-2.988232421874983,31.874218749999983],[-3.01738281249996,31.834277343750017],[-3.439794921874949,31.704541015624983],[-3.604589843749949,31.686767578125],[-3.700244140624989,31.70009765625005],[-3.768164062499977,31.689550781250034],[-3.837109374999983,31.512353515624994],[-3.833398437499937,31.197802734375045],[-3.626904296874955,31.000927734374983],[-4.148779296874977,30.8095703125],[-4.322851562500006,30.698876953124994],[-4.52915039062492,30.62553710937499],[-4.778515624999926,30.552392578124994],[-4.968261718749943,30.465380859375045],[-5.061914062499937,30.326416015625057],[-5.180126953124955,30.166162109374994],[-5.293652343749983,30.058642578125045],[-5.44877929687496,29.956933593750023],[-6.00429687499999,29.83125],[-6.479736328124943,29.82036132812499],[-6.520556640624989,29.659863281249983],[-6.59775390624992,29.578955078125006],[-6.635351562499949,29.568798828124983],[-6.755126953125,29.583837890625034],[-6.855566406249949,29.601611328125017],[-7.142431640624949,29.61958007812504],[-7.427685546874983,29.425],[-7.485742187499994,29.392236328124994],[-8.659912109375,28.718603515625063],[-8.683349609375,27.900390625],[-8.683349609375,27.77800740805682]]]},"properties":{"name":"Morocco","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-13.038761787013554,27.81190166624856],[-8.683349609375,27.77800740805682],[-8.683349609375,27.65644531250004],[-8.817822265624955,27.65644531250004],[-8.817822265624951,27.656445312499997],[-8.683349609375,27.656445312499997],[-8.683349609375,27.2859375],[-8.682861328125,26.921337890624997],[-8.6826171875,26.72314453125],[-8.682324218749983,26.497705078124994],[-8.68212890625,26.273193359375],[-8.68212890625,26.10947265625],[-8.682226562499977,25.995507812499994],[-12.016308593749983,25.995410156250003],[-12.016308593749983,25.740136718749994],[-12.016308593749983,25.331689453124994],[-12.016308593749983,25.059375],[-12.016308593749983,24.923242187499994],[-12.016308593749983,24.378662109375],[-12.016308593749983,23.97021484375],[-12.0234375,23.467578125],[-12.372900390624977,23.318017578124994],[-12.559375,23.290820312500003],[-12.620410156249989,23.27133789062499],[-13.031494140625,23.000244140625],[-13.153271484374983,22.820507812499997],[-13.12702845982141,22.703770926339278],[-13.136540684091575,22.708182548616723],[-13.094335937499977,22.495996093749994],[-13.051220703124983,21.854785156250003],[-13.041748046875,21.713818359374997],[-13.0322265625,21.572070312500003],[-13.025097656249983,21.466796875],[-13.016210937499977,21.333935546874997],[-15.231201171875,21.331298828125],[-16.964550781249983,21.329248046874994],[-17.06396484375,20.89882812499999],[-17.048046874999983,20.80615234375],[-17.098779296874994,20.856884765624997],[-16.930859374999983,21.9],[-16.35874023437495,22.594531250000045],[-16.21025390624999,23.097900390625],[-15.789257812499926,23.792871093750023],[-15.980712890624943,23.670312500000023],[-15.899316406249966,23.844433593749955],[-14.904296875000028,24.719775390625017],[-14.794921874999943,25.404150390625006],[-14.413867187499932,26.25371093749999],[-13.57578125,26.735107421875],[-13.175976562499983,27.655712890624983],[-13.038761787013554,27.81190166624856]],[[-8.774365234374983,27.460546875],[-8.794873046874983,27.120703125000034],[-8.794873046874983,27.120703125],[-8.774365234374983,27.460546875]]]},"properties":{"name":"W. Sahara","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[21.5625,42.247509765625],[21.560839843750017,42.24765625],[21.389550781250023,42.21982421875],[21.28662109375,42.100390625],[21.05976562500001,42.171289062499994],[20.778125,42.071044921875],[20.725,41.87353515625],[20.566210937500017,41.873681640624994],[20.485449218750006,42.223388671875],[20.06396484375,42.54726562499999],[20.054296875,42.760058593749996],[20.344335937500006,42.827929687499996],[20.40996305279786,42.84373166741877],[20.344335937500063,42.82792968750002],[19.670996093750006,43.163964843749994],[19.21875,43.449951171875],[19.196484375000068,43.48500976562502],[19.19160156250004,43.52104492187499],[19.19433593749997,43.533300781250006],[19.495117187500057,43.642871093750045],[19.245019531249994,43.96503906250004],[19.583789062500017,44.04345703125003],[19.118457031250074,44.359960937500006],[19.348632812500057,44.88090820312502],[19.007128906250045,44.86918945312502],[19.062890625000023,45.13720703125],[19.4,45.2125],[19.004687500000074,45.39951171875006],[19.064257812500045,45.51499023437506],[18.839062499999983,45.83574218750002],[18.905371093750006,45.931738281250034],[19.421289062500023,46.064453125],[19.61347656250001,46.169189453125],[19.84443359375001,46.145898437499966],[19.934082031250057,46.161474609375034],[20.161425781250017,46.14189453124996],[20.210156250000068,46.12602539062502],[20.241796875000034,46.10859375000001],[20.301367187500006,46.05068359375002],[20.35859375000004,45.975488281249994],[20.581152343749977,45.86948242187506],[20.65273437499999,45.779394531250006],[20.709277343750074,45.735253906249994],[20.727832031250017,45.73740234374998],[20.746875,45.74897460937501],[20.76015625000005,45.75810546875002],[20.775,45.74980468750002],[20.794042968750006,45.467871093750034],[21.431445312500017,45.192529296874994],[21.465429687500006,45.171875],[21.357031250000034,44.99077148437502],[21.532324218750063,44.900683593750045],[21.519921875000023,44.88081054687498],[21.442187500000074,44.87338867187498],[21.384375,44.87006835937501],[21.357910156250057,44.86181640625003],[21.36005859375004,44.82666015624997],[21.52314453125004,44.79008789062499],[21.63613281250005,44.71044921875],[21.909277343750034,44.666113281250034],[22.026953125,44.61987304687503],[22.093066406250074,44.541943359374955],[22.200976562500017,44.560693359374966],[22.350683593750063,44.676123046875034],[22.497656249999977,44.70625],[22.64208984375,44.65097656249998],[22.720898437499983,44.605517578125045],[22.734375,44.56992187499998],[22.700781250000063,44.55551757812498],[22.620117187500057,44.562353515625034],[22.554003906250017,44.54033203124999],[22.49453125000005,44.43544921875002],[22.687890625000023,44.248291015625],[22.42080078125005,44.00742187500006],[22.399023437500063,43.96953125],[22.36542968750004,43.86210937500002],[22.36962890625003,43.78129882812499],[22.55458984375005,43.45449218750002],[22.767578125,43.35415039062502],[22.81972656250005,43.300732421874955],[22.85957031250001,43.252343749999966],[22.97685546874999,43.18798828125],[22.799902343750006,42.985742187499994],[22.706152343750006,42.88393554687505],[22.466796875,42.842480468749955],[22.53242187500004,42.48120117187497],[22.523535156250006,42.440966796875045],[22.44570312500005,42.35913085937497],[22.42207031250004,42.32885742187503],[22.344042968750045,42.31396484375003],[22.23974609375003,42.303110028468716],[21.81464843750001,42.303125],[21.5625,42.24750976562498],[21.5625,42.247509765625]]]},"properties":{"name":"Serbia","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[74.54140625000002,37.02216796875],[74.03886718750002,36.825732421874996],[73.116796875,36.868554687499994],[72.24980468750002,36.734716796875],[71.23291015625,36.12177734375],[71.18505859375,36.04208984375],[71.57197265625001,35.546826171875],[71.62050781250002,35.183007812499994],[70.965625,34.53037109375],[71.095703125,34.369433593749996],[71.05156250000002,34.049707031249994],[70.65400390625001,33.952294921874994],[69.8896484375,34.007275390625],[70.26113281250002,33.289013671875],[69.5015625,33.020068359374996],[69.24140625000001,32.433544921875],[69.279296875,31.936816406249996],[68.86894531250002,31.634228515624997],[68.59765625,31.802978515625],[68.16103515625002,31.802978515625],[67.57822265625,31.506494140624994],[67.737890625,31.343945312499997],[67.45283203125001,31.234619140625],[66.82929687500001,31.263671875],[66.346875,30.802783203124996],[66.23125,29.86572265625],[65.09550781250002,29.559472656249994],[64.39375,29.544335937499994],[64.09873046875,29.391943359375],[63.56757812500001,29.497998046874997],[62.4765625,29.408349609374994],[62.0009765625,29.530419921874994],[61.22441406250002,29.749414062499994],[60.843359375,29.858691406249996],[61.331640625,30.363720703124997],[61.55947265625002,30.599365234375],[61.7841796875,30.831933593749994],[61.81083984375002,30.91328125],[61.81425781250002,31.072558593749996],[61.75507812500001,31.285302734374994],[61.66015625,31.382421875],[61.34648437500002,31.421630859375],[61.11074218750002,31.451123046874997],[60.854101562500006,31.483251953125],[60.82070312500002,31.495166015624996],[60.791601562500006,31.660595703124997],[60.804296875,31.73447265625],[60.7875,31.877197265625],[60.78994140625002,31.987109375],[60.827246093750006,32.16796875],[60.82929687500001,32.249414062499994],[60.71044921875,32.6],[60.57656250000002,32.994873046875],[60.560546875,33.137841796874994],[60.9169921875,33.505224609375],[60.573828125,33.588330078125],[60.4859375,33.7119140625],[60.48574218750002,34.094775390624996],[60.642675781250006,34.307177734374996],[60.88945312500002,34.31943359375],[60.80390625000001,34.418017578124996],[60.76259765625002,34.475244140624994],[60.73613281250002,34.491796875],[60.72626953125001,34.51826171875],[60.73945312500001,34.544726562499996],[60.80234375,34.554638671875],[60.8453125,34.587695312499996],[60.91474609375001,34.633984375],[60.951171875,34.653857421874996],[61.080078125,34.855615234374994],[61.1,35.272314453125],[61.18925781250002,35.31201171875],[61.24550781250002,35.474072265625],[61.27851562500001,35.51376953125],[61.281835937500006,35.55341796875],[61.26201171875002,35.619580078125],[61.3447265625,35.6294921875],[61.62099609375002,35.43232421875],[62.08964843750002,35.3796875],[62.30781250000001,35.170800781249994],[62.688085937500006,35.255322265625],[63.056640625,35.44580078125],[63.08417968750001,35.56806640625],[63.16972656250002,35.678125],[63.129980468750006,35.84619140625],[63.8625,36.012353515624994],[64.184375,36.14892578125],[64.51103515625002,36.340673828125],[64.56582031250002,36.427587890625],[64.6025390625,36.554541015625],[64.78242187500001,37.05927734375],[64.81630859375002,37.132080078125],[64.95156250000002,37.1935546875],[65.08964843750002,37.237939453124994],[65.30361328125002,37.24677734375],[65.55498046875002,37.251171875],[65.76503906250002,37.569140625],[66.471875,37.3447265625],[66.52226562500002,37.348486328125],[66.827734375,37.3712890625],[67.06884765625,37.334814453125],[67.19550781250001,37.235205078125],[67.31972656250002,37.2095703125],[67.44169921875002,37.2580078125],[67.51728515625001,37.266650390624996],[67.546484375,37.235644531249996],[67.607421875,37.222509765625],[67.7,37.22724609375],[67.7529296875,37.1998046875],[67.75898437500001,37.172216796875],[67.76601562500002,37.14013671875],[67.83447265625,37.064208984375],[67.9580078125,36.972021484375],[68.06777343750002,36.9498046875],[68.26093750000001,37.013085937499994],[68.284765625,37.036328125],[68.29951171875001,37.088427734374996],[68.38691406250001,37.1375],[68.66914062500001,37.2583984375],[68.7232421875,37.268017578125],[68.78203125000002,37.2580078125],[68.82373046875,37.270703125],[68.8384765625,37.30283203125],[68.85537109375002,37.316845703125],[68.88525390625,37.328076171875],[68.91181640625001,37.333935546875],[68.96044921875,37.325048828125],[69.18017578125,37.15830078125],[69.26484375000001,37.1083984375],[69.30390625000001,37.116943359375],[69.35380859375002,37.150048828124994],[69.41445312500002,37.207763671875],[69.4296875,37.290869140625],[69.39921875000002,37.399316406249994],[69.42011718750001,37.48671875],[69.49208984375002,37.553076171875],[69.62578125000002,37.594042968749996],[69.8208984375,37.6095703125],[69.9849609375,37.566162109375],[70.18867187500001,37.582470703125],[70.25146484375,37.66416015625],[70.25498046875,37.765380859375],[70.19941406250001,37.886035156249996],[70.21464843750002,37.9244140625],[70.41777343750002,38.075439453125],[70.7359375,38.42255859375],[71.255859375,38.306982421875],[71.33271484375001,38.170263671875],[71.27851562500001,37.918408203125],[71.319921875,37.90185546875],[71.3896484375,37.906298828124996],[71.48779296875,37.931884765625],[71.55195312500001,37.933154296874996],[71.58222656250001,37.910107421875],[71.43291015625002,37.1275390625],[71.530859375,36.845117187499994],[71.665625,36.696923828124994],[72.65742187500001,37.029052734375],[72.8955078125,37.267529296875],[73.21113281250001,37.408496093749996],[73.38291015625,37.462255859375],[73.48134765625002,37.4716796875],[73.60468750000001,37.446044921875],[73.65712890625002,37.43046875],[73.72060546875002,37.41875],[73.73378906250002,37.37578125],[73.71728515625,37.329443359375],[73.6275390625,37.261572265625],[73.65351562500001,37.23935546875],[73.749609375,37.231787109375],[74.16708984375,37.329443359375],[74.20351562500002,37.372460937499994],[74.25966796875002,37.415429687499994],[74.659375,37.394482421875],[74.73056640625,37.35703125],[74.83046875000002,37.2859375],[74.89130859375001,37.231640625],[74.84023437500002,37.225048828125],[74.76738281250002,37.249169921874994],[74.73896484375001,37.28564453125],[74.72666015625,37.29072265625],[74.6689453125,37.26669921875],[74.55898437500002,37.236621093749996],[74.37216796875,37.15771484375],[74.37617187500001,37.137353515624994],[74.49794921875002,37.0572265625],[74.52646484375,37.030664062499994],[74.54140625000002,37.02216796875]]]},"properties":{"name":"Afghanistan","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[17.57958984375,-8.099023437500009],[17.643359375000017,-8.090722656250009],[18.00878906250003,-8.107617187499983],[18.56269531250001,-7.9359375],[18.944433593750063,-8.001464843750028],[19.142675781250034,-8.001464843750028],[19.34082031249997,-7.966601562500031],[19.369921875000045,-7.706542968749986],[19.371679687500063,-7.655078124999989],[19.47988281250008,-7.472167968750028],[19.48378906250008,-7.279492187500026],[19.527636718750017,-7.144433593749952],[19.87519531250004,-6.986328124999986],[19.99746093750008,-6.976464843750023],[20.190039062500063,-6.9462890625],[20.482226562500074,-6.915820312500017],[20.59003906250001,-6.919921874999957],[20.598730468750006,-6.935156249999949],[20.536914062500045,-7.121777343749955],[20.535839843749983,-7.182812499999955],[20.558398437500045,-7.244433593749989],[20.60781250000008,-7.277734375000023],[20.910937500000017,-7.281445312499983],[21.190332031250023,-7.284960937499989],[21.751074218750034,-7.305468749999989],[21.80605468750005,-7.32861328125],[21.905371093750034,-8.693359374999943],[21.813183593750068,-9.46875],[22.19775390625,-10.040625],[22.30703125000005,-10.691308593750023],[22.203515625000023,-10.829492187500009],[22.226171875,-11.121972656250009],[22.27880859375,-11.19414062499996],[22.314941406250057,-11.198632812499994],[22.39296875000005,-11.159472656250003],[22.486132812500045,-11.086718750000017],[22.56103515625003,-11.05585937500004],[22.814746093750017,-11.08027343750004],[23.076269531250006,-11.087890624999986],[23.463964843750034,-10.969335937499991],[23.83388671875008,-11.013671874999972],[23.96650390625001,-10.871777343750011],[23.98388671875,-11.725],[23.909375,-12.636132812500009],[23.886523437500045,-12.743261718749991],[23.882421875,-12.799023437499983],[23.968066406250045,-12.956933593749994],[23.962988281250006,-12.988476562500026],[23.843164062500023,-13.0009765625],[22.209570312500006,-13.0009765625],[21.97890625000008,-13.0009765625],[21.979101562500034,-13.798730468749994],[21.979296875000074,-14.11962890625],[21.979394531249994,-14.440527343750006],[21.97978515624999,-15.955566406250014],[22.193945312500006,-16.628125],[23.380664062500017,-17.640625],[22.32421875,-17.8375],[20.74550781250008,-18.019726562499983],[20.194335937500057,-17.86367187499999],[18.95527343750004,-17.80351562499999],[18.39638671875005,-17.3994140625],[16.14843750000003,-17.39023437499999],[14.017480468750023,-17.40888671874997],[13.475976562500023,-17.04003906249997],[13.179492187500017,-16.971679687499986],[12.548144531250017,-17.212695312499974],[12.35927734375008,-17.205859375],[12.318457031250006,-17.21337890625003],[12.213378906250028,-17.209960937500043],[12.013964843750074,-17.168554687500034],[11.902539062500011,-17.226562499999957],[11.743066406250023,-17.24921875000004],[11.780078125000017,-16.87128906249997],[11.818945312500034,-16.704101562500014],[11.750878906250023,-15.831933593749966],[12.016113281250057,-15.513671874999957],[12.55048828125004,-13.437792968750003],[12.983203124999989,-12.775683593750017],[13.4169921875,-12.52041015624998],[13.597949218750017,-12.286132812500028],[13.785351562499983,-11.81279296874996],[13.833593750000063,-10.9296875],[13.33222656250004,-9.998925781250009],[12.99853515625,-9.048046875],[13.358984375,-8.687207031250026],[13.378515625000063,-8.369726562500006],[12.82343750000004,-6.954785156249955],[12.283300781250063,-6.12431640624996],[13.184375,-5.85625],[13.346484375000017,-5.863378906250006],[13.978515625,-5.857226562500003],[16.315234375000074,-5.865625],[16.431445312500045,-5.90019531249996],[16.53710937499997,-5.9658203125],[16.697265625,-6.164257812500026],[16.74296874999999,-6.618457031250003],[16.813085937500063,-6.772558593749963],[16.919433593750057,-6.93398437499998],[16.98476562500005,-7.257421874999977],[17.57958984375,-8.099023437500009]]],[[[12.50146484375,-4.5875],[12.848144531250028,-4.428906249999983],[12.881054687500068,-4.445117187499989],[12.971386718750068,-4.551757812499957],[13.048046875000068,-4.619238281250034],[13.072753906250028,-4.634765625],[13.057324218750011,-4.651074218750026],[12.947460937500011,-4.695312499999986],[12.829687499999977,-4.73662109374996],[12.451464843750017,-5.071484374999969],[12.453222656250034,-5.090625],[12.52236328125008,-5.148925781250028],[12.484570312500011,-5.71875],[12.213671875000074,-5.758691406249994],[12.177148437499994,-5.324804687499977],[12.018359375000074,-5.004296874999966],[12.50146484375,-4.5875]]]]},"properties":{"name":"Angola","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[20.06396484375,42.54726562499999],[20.485449218750006,42.223388671875],[20.566210937500017,41.873681640624994],[20.48896484375001,41.272607421874994],[20.709277343750017,40.928369140624994],[20.964257812500023,40.849902343749996],[20.95576171875001,40.775292968749994],[21.030859375,40.622460937499994],[20.881640625000017,40.467919921874994],[20.65742187500001,40.1173828125],[20.4560546875,40.065576171874994],[20.408007812500017,40.049462890624994],[20.383691406250023,40.0171875],[20.338476562500006,39.991064453125],[20.311132812500006,39.979443359375],[20.311328125000017,39.95078125],[20.381640625000017,39.841796875],[20.382421875,39.802636718749994],[20.206835937500017,39.653515625],[20.13105468750001,39.66162109375],[20.05976562500001,39.699121093749994],[20.022558593750006,39.710693359375],[20.001269531250017,39.709423828125],[19.851855468750017,40.0435546875],[19.322265625,40.407080078125],[19.45917968750001,40.40537109375],[19.3375,40.663818359375],[19.57568359375,41.640429687499996],[19.577539062500023,41.7875],[19.342382812500006,41.869091796875],[19.280664062500023,42.17255859375],[19.65449218750001,42.628564453124994],[19.78828125000001,42.476171875],[20.06396484375,42.54726562499999]]]},"properties":{"name":"Albania","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[19.66230468750001,60.187158203124994],[19.53652343750005,60.14497070312501],[19.551367187500063,60.24384765625001],[19.66230468750001,60.187158203124994]]],[[[19.989550781250074,60.351171875],[20.258886718750063,60.26127929687499],[19.799804687500057,60.08173828125001],[19.68691406250005,60.267626953125045],[19.84765625000003,60.22055664062506],[19.823046875000074,60.390185546875045],[19.989550781250074,60.351171875]]]]},"properties":{"name":"Aland","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[1.7060546875,42.503320312499994],[1.534082031250023,42.441699218749996],[1.448828125,42.437451171875],[1.428125,42.46132812499999],[1.414843750000017,42.548388671874996],[1.428320312500006,42.5958984375],[1.501367187500023,42.642724609374994],[1.568164062500017,42.635009765625],[1.709863281250023,42.604443359375],[1.739453125000011,42.575927734375],[1.740234375,42.55673828125],[1.713964843750006,42.525634765625],[1.7060546875,42.503320312499994]]]},"properties":{"name":"Andorra","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[53.927832031250006,24.177197265624983],[53.63447265625004,24.169775390624977],[53.83378906250002,24.258935546875023],[53.927832031250006,24.177197265624983]]],[[[53.3322265625001,24.258593750000045],[53.19091796874997,24.290917968749966],[53.412402343750074,24.411035156250023],[53.3322265625001,24.258593750000045]]],[[[56.29785156250003,25.650683593750045],[56.38798828125002,24.97919921875004],[56.06386718750005,24.73876953125],[56.00058593750006,24.953222656249977],[55.795703125000074,24.868115234374955],[55.76083984375006,24.24267578125],[55.92861328125005,24.215136718750074],[55.98515625000002,24.063378906249966],[55.4684570312501,23.94111328125001],[55.53164062499999,23.81904296875001],[55.1999023437501,23.034765625000034],[55.185839843750074,22.7041015625],[55.104296875000074,22.621484375000023],[52.55507812500005,22.932812499999955],[51.592578125000074,24.07885742187503],[51.56835937500003,24.286181640625074],[51.76757812500003,24.25439453125],[51.84316406250005,24.010888671875023],[52.118554687499994,23.97109375],[52.64824218750002,24.154638671875006],[53.80175781249997,24.069482421874966],[54.14794921875003,24.17119140624999],[54.39707031250006,24.278173828125034],[54.74677734375004,24.810449218750023],[55.94121093750002,25.793994140625017],[56.08046875,26.06264648437505],[56.16748046875003,26.047460937499977],[56.144628906250006,25.690527343750006],[56.29785156250003,25.650683593750045]]]]},"properties":{"name":"United Arab Emirates","childNum":3}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-64.54916992187498,-54.71621093749998],[-63.81542968749997,-54.725097656250014],[-64.637353515625,-54.90253906250001],[-64.75732421875,-54.82656249999999],[-64.54916992187498,-54.71621093749998]]],[[[-68.65322265624994,-54.85361328124999],[-68.62993164062499,-52.65263671875004],[-68.24013671875,-53.08183593749999],[-68.43115234375,-53.0552734375],[-68.48852539062497,-53.260937499999976],[-68.16113281249997,-53.30644531250001],[-68.00849609374995,-53.5640625],[-67.29423828125002,-54.049804687500014],[-66.23564453124999,-54.53349609374997],[-65.17900390624993,-54.678125],[-65.47114257812495,-54.91464843749999],[-66.5111328125,-55.032128906249945],[-67.127099609375,-54.90380859375001],[-68.65322265624994,-54.85361328124999]]],[[[-61.084716796875,-23.65644531250001],[-60.83984375000003,-23.85810546874997],[-59.89248046874994,-24.093554687499974],[-59.18725585937497,-24.56230468749999],[-57.82167968749994,-25.136425781249983],[-57.56313476562494,-25.473730468749963],[-57.943115234375,-26.05292968750001],[-58.18149414062498,-26.30742187499999],[-58.222070312499994,-26.65],[-58.618603515624955,-27.13212890624996],[-58.64174804687494,-27.196093750000017],[-58.60483398437498,-27.314355468750037],[-58.16826171874993,-27.27343749999997],[-56.437158203124966,-27.553808593749977],[-56.16406250000003,-27.321484374999983],[-55.95146484374996,-27.325683593749957],[-55.789990234374926,-27.416406249999966],[-55.71464843749996,-27.41484375],[-55.632910156250006,-27.35712890624997],[-55.59379882812502,-27.288085937500014],[-55.597265625,-27.207617187499963],[-55.56489257812498,-27.15],[-55.496728515624966,-27.11533203124999],[-55.45063476562498,-27.068359375000014],[-55.426660156249994,-27.00927734374997],[-55.13593750000001,-26.931152343749957],[-54.934472656249994,-26.70253906250001],[-54.677734375,-26.308789062499997],[-54.631933593750006,-26.005761718749994],[-54.615869140624994,-25.576074218750023],[-54.44394531249998,-25.625],[-54.15458984374999,-25.523046874999963],[-53.89116210937499,-25.66884765625001],[-53.668554687500006,-26.288183593749977],[-53.83818359375002,-27.121093750000014],[-54.32700195312495,-27.423535156249997],[-54.82910156250003,-27.55058593750003],[-55.10151367187501,-27.866796874999963],[-55.72548828125002,-28.20410156250003],[-55.68725585937497,-28.38164062499996],[-55.890527343749994,-28.370019531249994],[-56.938623046874994,-29.594824218750034],[-57.22465820312499,-29.782128906249994],[-57.40522460937501,-30.03388671875004],[-57.563867187499994,-30.139941406249974],[-57.60888671875003,-30.187792968750045],[-57.65087890624997,-30.295019531250034],[-57.71269531249996,-30.38447265624997],[-57.83120117187502,-30.495214843749963],[-57.87250976562501,-30.591015625000026],[-57.81059570312499,-30.85859375000001],[-57.88632812499998,-30.937402343749994],[-57.86840820312497,-31.104394531249994],[-57.89335937499999,-31.195312499999957],[-58.03339843750001,-31.416601562500006],[-58.053857421874994,-31.494921874999974],[-58.009667968749966,-31.534375],[-57.98798828124998,-31.576171875],[-58.00698242187494,-31.684960937499966],[-58.04233398437495,-31.769238281249997],[-58.16748046874997,-31.87265625],[-58.18901367187499,-31.924218750000037],[-58.16040039062503,-31.986523437500026],[-58.156347656250006,-32.0515625],[-58.17700195312494,-32.11904296875002],[-58.16479492187494,-32.18486328125002],[-58.119726562500006,-32.24892578125002],[-58.12304687499997,-32.321875],[-58.201171875,-32.471679687500014],[-58.219970703125,-32.563964843749986],[-58.17099609374998,-32.95927734374996],[-58.424462890624994,-33.11152343749998],[-58.54721679687498,-33.66347656249998],[-58.392480468749966,-34.192968750000034],[-58.52548828124998,-34.29619140625002],[-58.28334960937494,-34.68349609375005],[-57.54785156250003,-35.018945312499994],[-57.170654296875,-35.3625],[-57.35390624999994,-35.72031249999998],[-57.33544921875,-36.026757812499966],[-57.07617187499994,-36.296777343749994],[-56.74946289062501,-36.346484375],[-56.67202148437494,-36.85126953124998],[-57.546972656250034,-38.085644531250026],[-58.17919921874994,-38.435839843750045],[-59.82832031250001,-38.83818359375003],[-61.112207031249994,-38.99296875000003],[-61.84790039062497,-38.961816406249994],[-62.33476562499993,-38.80009765625],[-62.29506835937502,-39.24326171874996],[-62.053662109374955,-39.373828125],[-62.179345703124994,-39.38046875000002],[-62.076806640624966,-39.46152343750002],[-62.131542968749926,-39.82539062499998],[-62.28691406249996,-39.89531250000002],[-62.40185546875003,-40.19658203125002],[-62.24633789062494,-40.674609374999974],[-62.39501953124997,-40.89082031249997],[-62.95903320312493,-41.10966796875006],[-63.621777343749955,-41.15976562499996],[-64.86948242187503,-40.735839843750014],[-65.13339843749998,-40.88066406250003],[-64.98637695312496,-42.102050781249986],[-64.53774414062494,-42.25458984374998],[-64.57099609374998,-42.416015625],[-64.42041015625003,-42.43378906249998],[-64.10087890624993,-42.395117187500006],[-64.06118164062494,-42.266113281250014],[-64.228515625,-42.21826171874996],[-63.795556640624994,-42.113867187500006],[-63.6298828125,-42.28271484375003],[-63.61733398437502,-42.695800781249986],[-64.03476562499998,-42.88125],[-64.48784179687499,-42.51347656250006],[-64.97070312499997,-42.66630859375002],[-65.02690429687496,-42.75888671874996],[-64.31914062499999,-42.968945312500026],[-64.83994140624998,-43.18886718749998],[-65.25234374999997,-43.571875],[-65.26552734375,-44.2796875],[-65.64760742187502,-44.661425781250045],[-65.63876953125,-45.0078125],[-66.19013671874995,-44.96474609375002],[-66.94140625,-45.25732421875003],[-67.59956054687495,-46.05253906250003],[-67.5064453125,-46.44277343749995],[-66.77685546874994,-47.005859375],[-65.99853515625,-47.09375],[-65.73808593749999,-47.34492187499998],[-65.81430664062495,-47.63818359374996],[-66.22524414062502,-47.826757812500006],[-65.93422851562497,-47.826757812500006],[-65.81005859374997,-47.941113281250026],[-67.46630859375,-48.95175781250004],[-67.68486328125002,-49.2466796875],[-67.82597656249999,-49.91962890625005],[-68.2572265625,-50.104589843749984],[-68.66757812500003,-49.75253906250003],[-68.66162109374997,-49.93574218750005],[-68.97958984375,-50.003027343749984],[-68.59794921874996,-50.00947265624997],[-68.421875,-50.15791015625001],[-69.04477539062495,-50.49912109374998],[-69.35859374999993,-51.028125],[-69.20102539062498,-50.99365234375001],[-69.03530273437497,-51.48896484375002],[-69.46542968750003,-51.58447265625003],[-68.96533203125003,-51.67714843749999],[-68.443359375,-52.35664062500004],[-69.96025390624993,-52.00820312500002],[-71.91865234374995,-51.98955078125004],[-72.40766601562501,-51.54082031250002],[-72.34023437499997,-50.68183593749999],[-72.50981445312496,-50.607519531250034],[-73.15292968749998,-50.73828125000003],[-73.50126953124996,-50.125292968750024],[-73.55419921875,-49.463867187500014],[-73.46157226562497,-49.31386718750001],[-73.13525390625,-49.30068359374999],[-73.03364257812501,-49.014355468750004],[-72.65126953125,-48.84160156249998],[-72.582861328125,-48.47539062499999],[-72.35473632812497,-48.36582031250005],[-72.32832031250001,-48.11005859374998],[-72.517919921875,-47.87636718749998],[-72.34594726562497,-47.49267578124997],[-71.90498046875001,-47.201660156250014],[-71.94023437499999,-46.83125],[-71.69965820312501,-46.6513671875],[-71.87568359374998,-46.160546875],[-71.63154296874998,-45.95371093749998],[-71.74619140624998,-45.57890625],[-71.34931640624995,-45.33193359374995],[-71.5962890625,-44.97919921875004],[-72.04169921874998,-44.90419921875004],[-72.06372070312503,-44.771875],[-71.26113281250002,-44.763085937499966],[-71.15971679687496,-44.56025390625004],[-71.21259765624998,-44.44121093750003],[-71.82001953124993,-44.38310546875],[-71.68007812500002,-43.92958984374998],[-71.90498046875001,-43.34755859374998],[-71.750634765625,-43.237304687499986],[-72.14643554687498,-42.990039062499974],[-72.10820312499993,-42.25185546874995],[-71.75,-42.04677734375001],[-71.91127929687497,-41.650390624999986],[-71.93212890624994,-40.69169921874999],[-71.70898437499997,-40.381738281249994],[-71.81831054687493,-40.17666015624995],[-71.65976562499998,-40.02080078125],[-71.71992187499995,-39.63525390624997],[-71.53945312499997,-39.60244140624995],[-71.40156249999995,-38.93505859374996],[-70.858642578125,-38.60449218750003],[-71.16757812499998,-37.76230468749996],[-71.19218750000002,-36.84365234375004],[-71.05551757812498,-36.52373046874996],[-70.40478515625,-36.06171874999998],[-70.41572265625001,-35.52304687500002],[-70.55517578125,-35.246875],[-70.39316406250003,-35.146875],[-70.05205078124999,-34.30078124999997],[-69.85244140625,-34.224316406250026],[-69.81962890624999,-33.28378906249999],[-70.08486328125002,-33.20175781249998],[-70.02197265625,-32.88457031250002],[-70.36376953125,-32.08349609374997],[-70.25439453125,-31.957714843750026],[-70.585205078125,-31.569433593749963],[-70.51958007812493,-31.1484375],[-70.30908203124994,-31.02265625000004],[-70.15322265625,-30.360937499999963],[-69.95634765624996,-30.35820312500003],[-69.84428710937493,-30.175],[-69.95996093749997,-30.078320312500026],[-70.02680664062501,-29.324023437500017],[-69.82788085937497,-29.10322265624997],[-69.65693359374995,-28.413574218749986],[-69.17441406249998,-27.924707031250037],[-68.84633789062494,-27.153710937499994],[-68.59208984375002,-27.140039062499966],[-68.31865234374999,-26.973242187500006],[-68.59160156249999,-26.47041015624997],[-68.41450195312498,-26.153710937500023],[-68.59208984375002,-25.420019531250034],[-68.38422851562495,-25.091894531249977],[-68.56201171875,-24.74736328125003],[-68.25029296875002,-24.391992187500023],[-67.35620117187503,-24.033789062499963],[-67.00878906249994,-23.00136718750005],[-67.19487304687493,-22.821679687500037],[-66.99111328125,-22.509863281250006],[-66.71171874999999,-22.216308593749986],[-66.36518554687501,-22.113769531249957],[-66.32246093750001,-22.053125],[-66.28212890624997,-21.94746093750001],[-66.24760742187496,-21.83046875],[-66.22016601562495,-21.802539062499974],[-66.174658203125,-21.805664062499986],[-66.09858398437495,-21.83505859375002],[-66.05859375,-21.87949218750002],[-65.86015624999999,-22.019726562499983],[-65.77104492187493,-22.099609375000014],[-65.68618164062497,-22.11025390625005],[-65.51879882812497,-22.094531250000045],[-64.99262695312498,-22.109667968750017],[-64.60551757812499,-22.228808593750045],[-64.52363281250001,-22.37158203125],[-64.47773437499998,-22.485351562499986],[-64.44550781249998,-22.585351562500023],[-64.37397460937498,-22.761035156250017],[-64.32529296875,-22.82763671875],[-64.30791015624993,-22.7953125],[-64.26640625000002,-22.60332031249996],[-63.97612304687502,-22.072558593750003],[-63.92167968749993,-22.028613281250017],[-62.843359375,-21.997265625000026],[-62.62597656250003,-22.29042968749998],[-62.54155273437496,-22.349609374999957],[-62.37250976562498,-22.439160156249997],[-62.21416015624996,-22.612402343750034],[-61.798535156249955,-23.18203125],[-61.084716796875,-23.65644531250001]]]]},"properties":{"name":"Argentina","childNum":3}},{"geometry":{"type":"Polygon","coordinates":[[[46.490625,38.90668945312498],[46.1144531250001,38.877783203125034],[45.977441406249994,39.24389648437503],[45.76630859375004,39.37846679687499],[45.78447265625002,39.54560546875001],[45.456835937500074,39.494482421875006],[45.15283203125003,39.58266601562502],[45.03164062500005,39.76513671874997],[44.76826171875004,39.70351562500005],[44.28925781250004,40.040380859375006],[43.66621093750004,40.12636718750002],[43.56933593750003,40.48237304687498],[43.72265624999997,40.71953124999999],[43.43945312500003,41.10712890625001],[44.077246093750006,41.182519531249994],[44.81132812500002,41.259375],[45.001367187499994,41.29096679687498],[45.188574218750006,41.14741210937504],[45.07050781250004,41.075585937499966],[45.5875,40.846923828125],[45.37890624999997,40.67358398437506],[45.45439453125002,40.532373046874966],[45.96464843750002,40.233789062499966],[45.8859375000001,40.024853515624955],[45.57978515625004,39.9775390625],[46.202050781249994,39.59448242187503],[46.48144531249997,39.55517578125003],[46.36523437500003,39.402490234374994],[46.584765625000074,39.22368164062499],[46.400292968749994,39.1921875],[46.490625,38.90668945312498]]]},"properties":{"name":"Armenia","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-170.72626953125,-14.351171875],[-170.8205078125,-14.312109375],[-170.568115234375,-14.266796875000011],[-170.72626953125,-14.351171875]]]},"properties":{"name":"American Samoa","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[69.2824218750001,-49.05888671875002],[69.16718750000004,-48.88291015624996],[69.36875,-48.89042968749998],[69.2824218750001,-49.05888671875002]]],[[[69.18486328125002,-49.10957031250004],[69.59277343749997,-48.97099609375005],[69.64404296875003,-49.11738281250003],[69.40507812500002,-49.18173828125],[69.5423828125,-49.25566406250005],[70.32021484375005,-49.05859374999996],[70.55546875000007,-49.201464843750024],[70.38613281250005,-49.433984374999966],[70.16582031250002,-49.34296874999998],[69.75996093750004,-49.430175781249986],[69.98642578125006,-49.58164062500003],[70.2477539062501,-49.53066406250003],[70.12431640625002,-49.70439453124999],[69.153125,-49.5296875],[68.99296875000007,-49.704980468750016],[68.81474609375002,-49.69960937499999],[68.88339843750006,-49.16494140624995],[68.76953125000003,-49.06591796875003],[69.00244140624997,-48.661230468750006],[69.13613281250005,-48.86103515625003],[69.05214843750005,-49.08193359375001],[69.18486328125002,-49.10957031250004]]],[[[51.83457031250006,-46.43994140625],[51.65927734375006,-46.37363281249999],[51.7418945312501,-46.32685546874997],[51.83457031250006,-46.43994140625]]]]},"properties":{"name":"Fr. S. Antarctic Lands","childNum":3}},{"geometry":{"type":"Polygon","coordinates":[[[-61.71606445312503,17.037011718749994],[-61.85966796874996,17.013330078124966],[-61.887109374999966,17.09814453125],[-61.81728515624994,17.168945312500057],[-61.71606445312503,17.037011718749994]]]},"properties":{"name":"Antigua and Barb.","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[147.35605468750006,-43.396972656250014],[147.30888671875007,-43.50078125000002],[147.10498046875003,-43.43115234374996],[147.28388671875004,-43.278906250000034],[147.35605468750006,-43.396972656250014]]],[[[145.04296875000003,-40.78671875],[145.28300781250002,-40.76992187500002],[146.31748046875006,-41.16347656250001],[146.72343750000002,-41.07802734375001],[146.84814453124997,-41.16806640624996],[146.98984375000006,-40.99238281249997],[147.45478515625004,-41.00166015624998],[147.62167968750012,-40.844726562499986],[147.87294921875005,-40.87255859374997],[147.96875,-40.779589843750045],[148.215234375,-40.85488281250002],[148.34257812500007,-42.21533203124997],[148.21367187500002,-41.97001953125],[147.92441406250006,-42.5724609375],[147.94541015625006,-43.18183593749997],[147.7858398437501,-43.22001953125002],[147.69892578125004,-43.12255859374997],[147.64794921874997,-43.02060546874999],[147.8,-42.928125],[147.57382812500006,-42.84570312499997],[147.4523437500001,-43.03339843750001],[147.29794921875006,-42.790917968749994],[147.24501953125005,-43.21591796874999],[146.99697265625005,-43.15634765625002],[147.07734375000004,-43.27587890625003],[146.87392578125,-43.6125],[146.54853515625004,-43.50888671874999],[146.04316406250004,-43.547167968749974],[145.99443359375007,-43.37607421875002],[146.20800781249997,-43.31621093749999],[145.8732421875001,-43.29238281250002],[145.48759765625002,-42.92666015625004],[145.19882812500006,-42.23085937500004],[145.46826171874997,-42.492871093750026],[145.51660156249997,-42.3544921875],[145.33105468750003,-42.14707031250002],[145.23486328124997,-42.19697265624997],[145.23818359375,-42.01962890624999],[144.76611328125003,-41.39003906249998],[144.64609375000006,-40.980859375],[144.71855468750002,-40.67226562500002],[145.04296875000003,-40.78671875]]],[[[148.23691406250006,-40.515136718749986],[148.18779296875007,-40.592578125000045],[148.11728515625012,-40.52148437499996],[148.23691406250006,-40.515136718749986]]],[[[144.784375,-40.506738281249966],[144.74804687499997,-40.589453125000034],[144.7833984375001,-40.434863281249974],[144.784375,-40.506738281249966]]],[[[148.32626953125006,-40.30693359375003],[148.40400390625004,-40.486523437500026],[148.02011718750012,-40.40419921874995],[148.32626953125006,-40.30693359375003]]],[[[148.000390625,-39.75761718750003],[148.29736328125003,-39.985742187499966],[148.31357421875012,-40.173535156250026],[148.10566406250004,-40.26210937499995],[147.76718750000012,-39.87031249999998],[148.000390625,-39.75761718750003]]],[[[143.92792968750004,-40.116113281249966],[143.83857421875004,-39.90410156250003],[144.00078125000007,-39.580175781250034],[144.14101562500005,-39.953808593750026],[143.92792968750004,-40.116113281249966]]],[[[145.31445312500003,-38.49082031249996],[145.35507812500012,-38.55703124999995],[145.12841796875003,-38.52763671875],[145.31445312500003,-38.49082031249996]]],[[[137.59648437500007,-35.73867187499998],[137.92890625000004,-35.72607421875],[138.12343750000005,-35.85234375],[137.67089843749997,-35.897949218750014],[137.44843750000004,-36.07480468749999],[137.20957031250012,-35.982421875],[136.7550781250001,-36.03310546875002],[136.540625,-35.89013671875003],[136.63867187499997,-35.74882812500002],[137.33408203125006,-35.59248046875004],[137.58496093749997,-35.620214843750006],[137.59648437500007,-35.73867187499998]]],[[[153.53876953125004,-27.436425781250037],[153.42656250000002,-27.70644531249998],[153.43544921875,-27.40537109375002],[153.53876953125004,-27.436425781250037]]],[[[113.18300781250005,-26.053125],[112.96425781250005,-25.78310546875001],[112.94707031250002,-25.531542968750017],[113.18300781250005,-26.053125]]],[[[153.07744140625002,-25.75078125],[152.97666015625012,-25.551367187499963],[153.03808593750003,-25.193164062500003],[153.22753906249997,-25.00576171875001],[153.14375,-24.814843750000023],[153.25693359375012,-24.72890625],[153.35019531250012,-25.063085937499963],[153.07744140625002,-25.75078125]]],[[[151.14658203125006,-23.49082031250002],[151.24013671875,-23.529687500000037],[151.23828124999997,-23.77578125],[151.03330078125006,-23.530175781250037],[151.14658203125006,-23.49082031250002]]],[[[115.44619140625005,-20.78779296875001],[115.31806640625004,-20.850585937500014],[115.43457031249997,-20.66796875000003],[115.44619140625005,-20.78779296875001]]],[[[149.04375,-20.29150390624997],[148.93886718750005,-20.283691406249986],[148.98105468750012,-20.153515625000026],[149.04375,-20.29150390624997]]],[[[146.27832031249997,-18.23125],[146.29882812499997,-18.48476562500005],[146.09882812500004,-18.251757812500003],[146.27832031249997,-18.23125]]],[[[139.45917968750004,-17.11455078124996],[139.49277343750006,-16.990429687499983],[139.57089843750006,-17.09443359375004],[139.45917968750004,-17.11455078124996]]],[[[139.50781250000003,-16.57304687499996],[139.1595703125,-16.74169921875003],[139.29296875000003,-16.467285156249986],[139.58789062499997,-16.39521484374997],[139.69775390624997,-16.514941406250017],[139.50781250000003,-16.57304687499996]]],[[[137.09365234375005,-15.778125],[136.94267578125002,-15.711718749999989],[137.00957031250007,-15.594824218749977],[137.09365234375005,-15.778125]]],[[[124.59726562500006,-15.40195312500002],[124.52421875000002,-15.421484375],[124.51933593750002,-15.26748046874998],[124.59726562500006,-15.40195312500002]]],[[[125.19882812500006,-14.57949218749998],[125.0912109375,-14.59169921874998],[125.15996093750002,-14.456054687499972],[125.19882812500006,-14.57949218749998]]],[[[136.71464843750002,-13.803906249999983],[136.89082031250004,-13.786621093750014],[136.74531250000004,-14.072656250000023],[136.95078125000006,-14.184277343750026],[136.89433593750002,-14.293066406249977],[136.33544921875003,-14.211816406250037],[136.42470703125,-13.864843749999963],[136.6556640625,-13.675878906250006],[136.71464843750002,-13.803906249999983]]],[[[136.23740234375006,-13.824511718750003],[136.12265625000012,-13.816601562499983],[136.21542968750012,-13.664746093750054],[136.23740234375006,-13.824511718750003]]],[[[136.33867187500007,-11.602343749999989],[136.18027343750006,-11.676757812499957],[136.47929687500002,-11.465917968749991],[136.33867187500007,-11.602343749999989]]],[[[130.45927734375007,-11.679296875000034],[130.60625,-11.816601562500026],[130.04326171875007,-11.787304687500011],[130.19755859375007,-11.658203125],[130.15283203124997,-11.477539062499972],[130.29492187499997,-11.33681640624998],[130.45927734375007,-11.679296875000034]]],[[[130.6188476562501,-11.376074218749991],[131.02304687500006,-11.334375],[131.26826171875004,-11.18984375],[131.53857421874997,-11.436914062500037],[130.95097656250007,-11.926464843750026],[130.51191406250004,-11.617871093749955],[130.38457031250002,-11.1921875],[130.6188476562501,-11.376074218749991]]],[[[136.59853515625,-11.378906249999943],[136.52656250000004,-11.438867187499994],[136.78027343749997,-11.0125],[136.59853515625,-11.378906249999943]]],[[[132.59335937500006,-11.302832031249991],[132.48378906250005,-11.037304687499983],[132.57880859375004,-10.968847656249977],[132.59335937500006,-11.302832031249991]]],[[[143.17890625000004,-11.954492187499966],[143.11025390625,-12.303515625000017],[143.40156250000004,-12.639941406249989],[143.5866210937501,-13.443652343750031],[143.54843750000012,-13.74101562499996],[143.75634765625003,-14.348828124999969],[143.96181640625005,-14.462890625000028],[144.473046875,-14.231835937500023],[144.64804687500006,-14.492480468750017],[145.28769531250006,-14.943164062499989],[145.42607421875002,-16.406152343749966],[145.75478515625,-16.879492187500034],[145.91210937499997,-16.9125],[146.12587890625005,-17.63525390625],[146.03222656249997,-18.272851562500037],[146.3332031250001,-18.55371093749997],[146.38339843750006,-18.97705078124997],[147.13876953125006,-19.39316406250002],[147.41855468750012,-19.378125],[147.7423828125001,-19.770117187499977],[148.759375,-20.28955078125003],[148.88476562499997,-20.480859375],[148.72998046874997,-20.4677734375],[148.68369140625012,-20.58017578124999],[149.20488281250007,-21.125097656249977],[149.45410156249997,-21.57871093750002],[149.70390625000002,-22.440527343750006],[149.82246093750004,-22.389843749999983],[149.97441406250007,-22.55068359374998],[149.94189453125003,-22.30810546875003],[150.07617187500003,-22.16445312499998],[150.54130859375002,-22.55908203125],[150.56855468750004,-22.38398437500004],[150.67246093750012,-22.418164062499983],[150.84316406250005,-23.4580078125],[151.15380859375003,-23.784082031249994],[151.83164062500006,-24.12294921875001],[152.12988281250003,-24.59755859374998],[152.45634765625007,-24.802441406249983],[152.65429687499997,-25.201953125000017],[152.91347656250005,-25.432128906250014],[152.98496093750012,-25.816210937500003],[153.16494140625,-25.964160156250045],[153.11679687500006,-27.194433593750034],[153.57568359375003,-28.24052734374999],[153.6168945312501,-28.673046875],[153.03056640625002,-30.563378906249994],[152.94394531250012,-31.43486328124999],[152.5592773437501,-32.045703125],[152.4704101562501,-32.439062500000034],[152.13652343750002,-32.678125],[152.1642578125001,-32.75742187499996],[151.812890625,-32.90107421875001],[151.29208984375012,-33.580957031249966],[151.28027343750003,-33.92666015625005],[151.12480468750007,-34.00527343749998],[151.23154296875006,-34.0296875],[150.8712890625001,-34.49912109374996],[150.80458984375,-35.01289062500001],[150.19531249999997,-35.83359374999996],[149.93271484375012,-37.528515625000026],[149.480859375,-37.77119140625],[147.87675781250002,-37.93417968749998],[146.8568359375,-38.663476562499966],[146.21748046875004,-38.72744140625004],[146.33662109375004,-38.89423828125],[146.46660156250007,-38.84033203125003],[146.40000000000012,-39.14550781250003],[146.1583984375001,-38.86572265624996],[145.93535156250002,-38.90175781250002],[145.79082031250007,-38.66699218749997],[145.39726562500002,-38.53535156249998],[145.54218750000004,-38.39384765625002],[145.4757812500001,-38.24375],[145.29277343750002,-38.237597656249974],[144.95957031250012,-38.500781250000045],[144.71777343749997,-38.34033203125004],[144.91142578125007,-38.34404296874999],[145.11992187500007,-38.091308593750014],[144.89130859375004,-37.899804687499994],[144.39550781250003,-38.13691406249998],[144.6652343750001,-38.20996093750003],[143.53896484375005,-38.82089843749998],[142.45585937500002,-38.38632812499999],[141.725,-38.27138671875002],[141.5939453125001,-38.38779296875002],[141.42421875,-38.36347656250004],[141.0109375000001,-38.07695312500003],[140.39042968750007,-37.89667968749998],[139.78427734375012,-37.24580078124998],[139.85732421875,-36.662109375],[139.72900390625003,-36.37138671875002],[138.9689453125001,-35.58076171874997],[139.17802734375007,-35.52304687500002],[139.289453125,-35.61132812499997],[139.28251953125002,-35.375390624999966],[138.521875,-35.6423828125],[138.184375,-35.612695312499994],[138.5111328125,-35.02441406249996],[138.48994140625004,-34.76357421875002],[138.0892578125,-34.16982421875002],[137.69169921875002,-35.14296875000004],[136.88359375000007,-35.23974609375004],[137.01425781250012,-34.91582031250003],[137.39101562500005,-34.91328124999997],[137.49384765625004,-34.16113281250003],[137.9318359375001,-33.57910156250003],[137.85234375000007,-33.20078124999996],[137.99257812500005,-33.094238281250014],[137.78320312500003,-32.578125],[137.79091796875,-32.82324218749996],[137.44228515625,-33.1935546875],[137.23730468750003,-33.62949218749999],[136.43066406249997,-34.02998046875004],[135.891015625,-34.660937499999974],[135.96972656249997,-34.98183593749998],[135.7923828125,-34.863281249999986],[135.64755859375006,-34.93964843750001],[135.12304687499997,-34.58574218750003],[135.21679687499997,-34.48730468749996],[135.45,-34.58105468749996],[135.21894531250004,-33.959765625000045],[134.88876953125012,-33.62636718749998],[134.79101562499997,-33.32832031250001],[134.60771484375002,-33.19013671875001],[134.30126953124997,-33.16503906249996],[134.17353515625004,-32.979101562500006],[134.10039062500007,-32.748632812500034],[134.22714843750006,-32.73056640624999],[134.23417968750007,-32.54853515625004],[133.66533203125007,-32.207226562500054],[133.21210937500004,-32.18378906249998],[132.75742187500012,-31.95625],[132.21464843750002,-32.00712890624996],[131.14365234375006,-31.49570312500005],[130.78300781250002,-31.604003906249986],[129.1876953125001,-31.659960937500017],[127.31982421874997,-32.2640625],[125.91718750000004,-32.296972656250034],[124.75878906250003,-32.882714843749994],[124.24375,-33.01523437499999],[123.50683593749997,-33.916210937500054],[122.15097656250006,-33.99179687499999],[122.06113281250006,-33.874414062499966],[121.40507812500007,-33.826757812500034],[119.85410156250012,-33.97470703124998],[119.45058593750005,-34.368261718750034],[118.89531250000007,-34.47988281250004],[118.13554687500002,-34.98662109374999],[117.58193359375005,-35.09775390624998],[116.51718750000012,-34.98789062499998],[115.98671875000005,-34.795019531250034],[115.56503906250012,-34.42578125000003],[115.00878906250003,-34.25585937499997],[114.9938476562501,-33.51533203125],[115.3587890625,-33.63994140624999],[115.68300781250005,-33.19287109375003],[115.6984375000001,-31.694531250000054],[115.07792968750007,-30.560449218750023],[114.85683593750005,-29.14296875],[114.16513671875012,-28.08066406250002],[114.028125,-27.34726562499999],[113.18476562500004,-26.182226562499963],[113.32324218749997,-26.243847656249997],[113.35605468750012,-26.080468750000023],[113.58164062500006,-26.558105468749986],[113.73369140625002,-26.59511718749998],[113.83642578125003,-26.50058593749999],[113.85283203125007,-26.33212890625005],[113.39531250000002,-25.71328125],[113.4513671875001,-25.599121093750014],[113.7130859375001,-25.83076171875004],[113.72373046875006,-26.129785156250037],[113.85390625,-26.01445312499999],[113.99199218750007,-26.32148437500001],[114.09033203124997,-26.393652343749963],[114.21572265625,-26.289453124999966],[114.2142578125,-25.851562500000014],[113.41767578125004,-24.435644531250034],[113.48984375000012,-23.869628906250014],[113.7570312500001,-23.418164062500054],[113.79511718750004,-22.91455078125003],[113.68281250000004,-22.637792968749963],[114.02285156250005,-21.881445312499977],[114.12392578125005,-21.828613281249957],[114.14160156250003,-22.483105468749983],[114.37773437500007,-22.341503906249997],[114.70927734375002,-21.82343749999997],[115.45615234375012,-21.49169921874997],[116.0109375000001,-21.030371093749963],[116.7067382812501,-20.653808593749986],[117.40625,-20.72119140625003],[118.19921875000003,-20.37519531249997],[118.75146484374997,-20.261914062499983],[119.10449218749997,-19.995312500000026],[119.58593750000003,-20.03828125],[120.99794921875,-19.604394531249966],[121.33769531250002,-19.31992187500002],[121.83378906250002,-18.477050781249986],[122.34541015625004,-18.11191406250002],[122.14746093749997,-17.54902343750001],[122.2609375000001,-17.135742187500014],[122.72041015625004,-16.78769531249999],[122.97070312499997,-16.436816406250003],[123.56308593750006,-17.520898437499966],[123.59355468750007,-17.03037109375005],[123.83105468750003,-17.120800781249997],[123.8744140625,-16.918652343750026],[123.4904296875001,-16.49072265624997],[123.62597656249997,-16.416308593750003],[123.60703125000006,-16.224023437499994],[123.72890625,-16.192480468749963],[123.85917968750007,-16.38232421875],[124.04443359374997,-16.264941406249974],[124.30039062500006,-16.388281249999977],[124.77197265624997,-16.40263671874996],[124.40488281250006,-16.298925781249977],[124.41640625,-16.133496093750026],[124.5768554687501,-16.11367187499998],[124.64853515625012,-15.870214843750034],[124.50429687500005,-15.972460937499989],[124.38164062500002,-15.758203125000037],[124.43955078125012,-15.493554687500037],[124.56162109375012,-15.496289062499969],[124.69257812500004,-15.273632812499997],[125.06298828125003,-15.44228515624998],[125.0729492187501,-15.306738281249991],[124.90917968750003,-15.310058593749957],[124.83906250000004,-15.160742187500006],[125.03818359375012,-15.004101562499969],[125.35566406250004,-15.119824218750011],[125.17871093749997,-14.714746093749994],[125.57978515625004,-14.483203124999989],[125.62773437500002,-14.256640625000017],[125.70458984374997,-14.29140625],[125.66162109375003,-14.529492187500011],[125.81953125000004,-14.469140624999966],[125.890625,-14.61796875],[126.0207031250001,-14.49453125],[126.0539062500001,-13.977246093750026],[126.1842773437501,-14.00205078125002],[126.25849609375004,-14.163574218749972],[126.403125,-14.018945312499994],[126.5697265625,-14.160937499999974],[126.7806640625,-13.955175781249977],[126.77558593750004,-13.788476562500037],[126.90322265625,-13.744140624999972],[127.45761718750006,-14.031445312499969],[128.18046875000007,-14.711621093749983],[128.06943359375012,-15.329296874999969],[128.15546875000004,-15.225585937499972],[128.25468750000002,-15.298535156250011],[128.175,-15.043164062500026],[128.57578125000006,-14.774511718750006],[129.05820312500012,-14.884375],[129.21582031249997,-15.160253906249991],[129.26757812500003,-14.871484375000051],[129.63476562499997,-15.139746093749991],[129.637109375,-14.850976562500037],[129.84873046875012,-14.828906249999989],[129.60468750000004,-14.647070312499977],[129.69794921875004,-14.557421875000017],[129.37871093750002,-14.39248046874998],[129.70986328125,-13.979980468749972],[129.83886718749997,-13.572949218749997],[130.25976562500003,-13.30224609375],[130.1349609375001,-13.145507812499957],[130.1681640625001,-12.957421875],[130.39990234374997,-12.68789062499999],[130.61748046875007,-12.646875],[130.62265625000006,-12.43105468749998],[130.8673828125001,-12.557812499999955],[130.87382812500007,-12.367187500000028],[131.29160156250006,-12.067871093749972],[131.43828125000002,-12.27695312500002],[132.06406250000006,-12.28076171875],[132.25322265625007,-12.186035156249972],[132.41103515625,-12.295117187499997],[132.51054687500002,-12.134863281250034],[132.71279296875,-12.1234375],[132.63046875000012,-12.035156249999972],[132.67421875000005,-11.649023437499991],[132.47519531250006,-11.491503906249974],[132.07285156250006,-11.474707031250006],[131.82246093750004,-11.302441406249997],[131.96152343750006,-11.180859375000011],[132.15546875000004,-11.311132812499991],[132.33398437499997,-11.223535156249994],[132.6828125000001,-11.505566406249997],[132.96103515625012,-11.407324218749963],[133.18525390625004,-11.705664062499991],[133.90419921875,-11.832031249999972],[134.4173828125,-12.052734375],[134.73027343750002,-11.984375],[135.02968750000005,-12.19375],[135.2179687500001,-12.221679687499957],[135.92246093750012,-11.825781250000034],[135.70439453125007,-12.209863281250037],[136.00849609375004,-12.19140625],[136.08183593750007,-12.422460937500006],[136.26064453125,-12.433789062499997],[136.32851562500005,-12.305566406249994],[136.24990234375,-12.173046875],[136.44335937499997,-11.951464843749974],[136.7194335937501,-12.226464843749952],[136.89746093749997,-12.243554687499966],[136.94746093750004,-12.34990234374996],[136.53701171875,-12.784277343749991],[136.59433593750012,-13.003808593750051],[136.46103515625006,-13.225195312500034],[136.29414062500004,-13.137988281250031],[135.92734375000012,-13.304296874999977],[135.95449218750005,-13.934863281250017],[135.40517578125005,-14.758203124999966],[135.4533203125001,-14.923144531250003],[136.20537109375002,-15.403417968749963],[136.29140625000005,-15.570117187500003],[136.70488281250007,-15.685253906250011],[136.78466796874997,-15.89423828125004],[137.00214843750004,-15.878320312499994],[137.70371093750006,-16.233007812499963],[138.24501953125005,-16.718359374999977],[139.00986328125006,-16.899316406249994],[139.2484375,-17.328613281249957],[140.03583984375004,-17.702636718749957],[140.51113281250005,-17.62451171875003],[140.83046875,-17.414453125000037],[141.29140625,-16.46347656250002],[141.62548828124997,-15.056640625000014],[141.52294921875003,-14.470117187499994],[141.59433593750006,-14.152832031250014],[141.47255859375,-13.797558593750011],[141.64541015625,-13.259082031250003],[141.61357421875002,-12.943457031250006],[141.92978515625006,-12.73984375],[141.67773437500003,-12.491406250000011],[141.68857421875012,-12.351074218750028],[141.87050781250005,-11.9755859375],[141.96113281250004,-12.054296874999963],[142.168359375,-10.946582031249974],[142.45644531250005,-10.707324218749989],[142.60507812500012,-10.748242187499983],[142.55273437500003,-10.874414062500023],[142.7796875,-11.115332031249977],[142.87255859374997,-11.821386718750034],[143.17890625000004,-11.954492187499966]]],[[[142.2748046875,-10.704785156250011],[142.19140624999997,-10.762011718750031],[142.1310546875001,-10.640625],[142.19794921875004,-10.59199218750004],[142.2748046875,-10.704785156250011]]]]},"properties":{"name":"Australia","childNum":30}},{"geometry":{"type":"Polygon","coordinates":[[[16.953125,48.598828125],[16.86542968750001,48.3869140625],[17.147363281250023,48.00595703125],[17.06660156250001,47.707568359374996],[16.421289062500023,47.674462890624994],[16.676562500000017,47.536035156249994],[16.44287109375,47.39951171875],[16.453417968750017,47.006787109375],[16.093066406250017,46.86328125],[15.957617187500006,46.677636718749994],[14.893261718750011,46.605908203125],[14.5498046875,46.399707031249996],[13.7,46.520263671875],[13.490039062500017,46.555566406249994],[13.3515625,46.557910156249996],[13.16875,46.57265625],[12.479199218750011,46.672509765624994],[12.38828125,46.70263671875],[12.330078125,46.759814453124996],[12.267968750000023,46.835888671875],[12.154101562500017,46.93525390625],[12.130761718750023,46.98476562499999],[12.16552734375,47.028173828125],[12.201269531250006,47.060888671875],[12.197167968750023,47.075],[12.16943359375,47.08212890625],[11.775683593750017,46.986083984375],[11.527539062500011,46.997412109375],[11.433203125,46.983056640624994],[11.244433593750017,46.97568359375],[11.133886718750006,46.936181640624994],[11.0634765625,46.859130859375],[11.025097656250011,46.79697265625],[10.993261718750006,46.777001953124994],[10.92734375,46.769482421875],[10.828906250000017,46.775244140625],[10.759765625,46.793310546875],[10.689257812500017,46.84638671875],[10.579785156250011,46.8537109375],[10.479394531250023,46.855126953124994],[10.452832031250011,46.86494140625],[10.45458984375,46.8994140625],[10.414941406250023,46.964404296874996],[10.349414062500017,46.98476562499999],[10.133496093750011,46.851513671875],[9.580273437500011,47.057373046875],[9.527539062500011,47.270751953125],[9.625878906250023,47.467041015625],[9.524023437500006,47.52421875],[9.748925781250023,47.575537109375],[9.839160156250017,47.552294921874996],[9.971582031250023,47.505322265625],[10.034082031250023,47.473583984375],[10.059863281250017,47.449072265625],[10.066308593750023,47.393359375],[10.200292968750006,47.363427734374994],[10.183007812500023,47.27880859375],[10.369140625,47.366064453125],[10.40390625,47.4169921875],[10.439453125,47.5515625],[10.482812500000023,47.541796875],[10.65869140625,47.547216796875],[10.741601562500023,47.52412109375],[10.873046875,47.52021484375],[11.0419921875,47.393115234374996],[12.185644531250006,47.61953125],[12.203808593750011,47.646728515625],[12.196875,47.70908203125],[12.209277343750017,47.71826171875],[12.268359375000017,47.702734375],[12.353540736607165,47.70264787946429],[12.492553013392856,47.68551897321428],[12.685839843750017,47.669335937499994],[12.771386718750023,47.639404296875],[12.796191406250017,47.60703125],[12.781152343750023,47.5904296875],[12.7828125,47.56416015625],[12.809375,47.5421875],[12.87890625,47.5064453125],[12.968066406250017,47.47568359375],[13.014355468750011,47.478076171874996],[13.031542968750017,47.5080078125],[13.047949218750006,47.579150390624996],[13.054101562500023,47.655126953125],[12.897656250000011,47.721875],[12.953515625000023,47.890625],[12.760351562500006,48.106982421874996],[13.215234375000023,48.301904296874994],[13.322851562500006,48.33125],[13.409375,48.394140625],[13.459863281250023,48.56455078125],[13.4716796875,48.571826171874996],[13.486621093750017,48.581835937499996],[13.636623883928596,48.580904017857144],[13.785351562500011,48.587451171874996],[13.798828125,48.6216796875],[13.802929687500011,48.747509765625],[13.814746093750017,48.766943359375],[14.049121093750017,48.602490234375],[14.691308593750023,48.59921875],[15.066796875000023,48.997851562499996],[16.057226562500006,48.754785156249994],[16.543554687500006,48.796240234375],[16.953125,48.598828125]]]},"properties":{"name":"Austria","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[46.1144531250001,38.877783203125034],[45.4796875000001,39.00625],[44.81718750000002,39.65043945312496],[44.76826171875004,39.70351562500005],[45.03164062500005,39.76513671874997],[45.15283203125003,39.58266601562502],[45.456835937500074,39.494482421875006],[45.78447265625002,39.54560546875001],[45.76630859375004,39.37846679687499],[45.977441406249994,39.24389648437503],[46.1144531250001,38.877783203125034]]],[[[48.572851562500006,41.84448242187503],[49.45673828125004,40.79985351562502],[49.77597656250006,40.583984375],[50.18251953125005,40.50478515625002],[50.3659179687501,40.279492187499955],[49.91884765625005,40.31640625000003],[49.55117187499999,40.19414062499999],[49.3244140625001,39.60834960937501],[49.36279296875003,39.349560546874955],[49.16533203125002,39.03027343750003],[49.013476562500074,39.13398437500001],[48.85449218750003,38.83881835937501],[48.86875,38.43549804687498],[48.59267578125005,38.41108398437498],[47.99648437499999,38.85375976562503],[48.292089843750006,39.01884765624999],[48.10439453125005,39.241113281249994],[48.322167968749994,39.39907226562502],[47.995898437500074,39.683935546875034],[46.490625,38.90668945312498],[46.400292968749994,39.1921875],[46.584765625000074,39.22368164062499],[46.36523437500003,39.402490234374994],[46.48144531249997,39.55517578125003],[46.202050781249994,39.59448242187503],[45.57978515625004,39.9775390625],[45.8859375000001,40.024853515624955],[45.96464843750002,40.233789062499966],[45.45439453125002,40.532373046874966],[45.37890624999997,40.67358398437506],[45.5875,40.846923828125],[45.07050781250004,41.075585937499966],[45.188574218750006,41.14741210937504],[45.001367187499994,41.29096679687498],[45.2171875,41.423193359375006],[45.28095703125004,41.449560546875034],[46.086523437500006,41.183837890625],[46.43095703125002,41.077050781249994],[46.534375,41.08857421875004],[46.62636718750005,41.15966796875006],[46.66240234375002,41.24550781250002],[46.67255859375004,41.28681640625001],[46.61894531250002,41.34375],[46.30546875000002,41.507714843749994],[46.18427734375004,41.70214843749997],[46.42988281250004,41.890966796875006],[46.74931640625002,41.812597656250006],[47.31767578125002,41.28242187500001],[47.79101562499997,41.19926757812502],[48.572851562500006,41.84448242187503]]]]},"properties":{"name":"Azerbaijan","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[30.553613281250023,-2.400097656250011],[30.53369140625,-2.42626953125],[30.441992187500006,-2.613476562500011],[30.424218750000023,-2.6416015625],[30.47333984375001,-2.6943359375],[30.42402343750001,-2.824023437500003],[30.433496093750023,-2.87451171875],[30.515039062500023,-2.917578125],[30.604296875000017,-2.935253906250011],[30.70947265625,-2.977246093750011],[30.7802734375,-2.98486328125],[30.811132812500006,-3.116406250000011],[30.79023437500001,-3.274609375000011],[30.4,-3.65390625],[29.947265625,-4.307324218750011],[29.7177734375,-4.455859375],[29.403222656250023,-4.449316406250006],[29.211816406250023,-3.833789062500003],[29.224414062500017,-3.053515625],[29.01435546875001,-2.72021484375],[29.10205078125,-2.595703125],[29.390234375,-2.80859375],[29.698046875000017,-2.794726562500003],[29.8681640625,-2.71640625],[29.93017578125,-2.339550781250011],[30.117285156250006,-2.416601562500006],[30.408496093750017,-2.31298828125],[30.553613281250023,-2.400097656250011]]]},"properties":{"name":"Burundi","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[5.693554687500011,50.774755859375006],[5.993945312500017,50.75043945312504],[6.340917968750006,50.451757812500034],[6.116503906250045,50.120996093749966],[6.08906250000004,50.15458984374996],[6.054785156249977,50.154296875],[5.976269531250068,50.167187499999955],[5.866894531250068,50.08281250000002],[5.817382812500028,50.01269531250003],[5.7880859375,49.96123046875002],[5.744042968749994,49.91962890624998],[5.789746093749983,49.53828125000001],[5.50732421875,49.51088867187502],[4.867578125000051,49.78813476562502],[4.818652343750045,50.153173828125034],[4.545019531250063,49.96025390624999],[4.149316406250023,49.971582031249994],[4.174609375000017,50.24648437500005],[3.689355468750023,50.30605468750002],[3.595410156250068,50.47734374999999],[3.27333984375008,50.53154296875002],[3.10683593750008,50.779443359374994],[2.759375,50.750634765624994],[2.52490234375,51.097119140624955],[3.35009765625,51.37768554687503],[3.43251953125008,51.24575195312505],[3.902050781250011,51.20766601562502],[4.226171875000034,51.38647460937503],[5.03095703125004,51.46909179687498],[5.214160156250045,51.278955078124966],[5.796484375000034,51.153076171875],[5.693554687500011,50.774755859375006]]]},"properties":{"name":"Belgium","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[3.595410156250011,11.6962890625],[3.553906250000011,11.631884765624989],[3.490527343750017,11.49921875],[3.48779296875,11.395410156249994],[3.638867187500011,11.176855468749991],[3.65625,11.154589843749989],[3.6953125,11.1203125],[3.71640625,11.07958984375],[3.7568359375,10.76875],[3.83447265625,10.607421875],[3.771777343750017,10.417626953124994],[3.646582031250006,10.408984374999989],[3.60205078125,10.004541015624994],[3.3251953125,9.778466796874994],[3.044921875,9.083837890624991],[2.774804687500023,9.048535156249997],[2.703125,8.371826171875],[2.68603515625,7.873730468749997],[2.719335937500006,7.616259765624989],[2.7509765625,7.541894531249994],[2.78515625,7.476855468749989],[2.783984375000017,7.443408203124989],[2.765820312500011,7.422509765624994],[2.75048828125,7.395068359374989],[2.756738281250023,7.067919921874989],[2.721386718750011,6.980273437499989],[2.731738281250017,6.852832031249989],[2.7529296875,6.771630859374994],[2.774609375000011,6.711718749999989],[2.753710937500017,6.661767578124994],[2.735644531250017,6.595703125],[2.706445312500023,6.369238281249991],[1.62265625,6.216796875],[1.777929687500006,6.294628906249997],[1.530957031250011,6.992431640625],[1.624707031250011,6.997314453125],[1.600195312500006,9.050048828125],[1.3857421875,9.361669921874991],[1.330078125,9.996972656249994],[0.763378906250011,10.386669921874997],[0.900488281250006,10.993261718749991],[1.4267578125,11.447119140624991],[1.980371093750023,11.418408203124997],[2.38916015625,11.897070312499991],[2.366015625000017,12.221923828125],[2.805273437500006,12.383837890624989],[3.595410156250011,11.6962890625]]]},"properties":{"name":"Benin","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[0.217480468750011,14.911474609374991],[0.163867187500017,14.497216796874994],[0.382519531250011,14.245800781249997],[0.42919921875,13.972119140624997],[0.6181640625,13.703417968750003],[1.201171875,13.357519531249991],[0.988476562500011,13.36484375],[0.9873046875,13.041894531249994],[1.56494140625,12.635400390624994],[2.104589843750006,12.701269531249991],[2.226269531250011,12.466064453125],[2.072949218750011,12.309375],[2.38916015625,11.897070312499991],[1.980371093750023,11.418408203124997],[1.4267578125,11.447119140624991],[0.900488281250006,10.993261718749991],[0.49267578125,10.954980468749994],[-0.068603515625,11.115625],[-0.299462890624994,11.166894531249994],[-0.627148437499983,10.927392578124994],[-1.04248046875,11.010058593749989],[-2.829931640624977,10.998388671874991],[-2.914892578124977,10.592333984374989],[-2.791162109374994,10.432421874999989],[-2.780517578125,9.745849609375],[-2.765966796874977,9.658056640624991],[-2.706201171874994,9.533935546875],[-2.695849609374989,9.481347656249994],[-2.7171875,9.457128906249991],[-2.7666015625,9.424707031249994],[-2.816748046874977,9.425830078124989],[-2.875146484374994,9.500927734374997],[-2.90087890625,9.534619140624997],[-2.948144531249994,9.610742187499994],[-2.98828125,9.687353515624991],[-3.042626953124994,9.720898437499997],[-3.095800781249977,9.752099609374994],[-3.160693359374989,9.849169921874989],[-3.223535156249994,9.895458984374997],[-3.289697265624994,9.882226562499994],[-3.581152343749977,9.92431640625],[-3.790625,9.9171875],[-4.18115234375,9.78173828125],[-4.267187499999977,9.743261718749991],[-4.332226562499983,9.645703125],[-4.406201171874983,9.647998046874989],[-4.526611328125,9.723486328124991],[-4.625830078124977,9.713574218749997],[-4.721777343749977,9.756542968749997],[-5.262304687499977,10.319677734374991],[-5.523535156249977,10.426025390625],[-5.490478515625,11.042382812499994],[-5.250244140625,11.375781249999989],[-5.288134765624989,11.827929687499989],[-4.699316406249977,12.076171875],[-4.4287109375,12.337597656249997],[-4.480615234374994,12.672216796874991],[-4.227099609374989,12.793701171875],[-4.328710937499977,13.119042968749994],[-4.151025390624994,13.306201171875003],[-3.947314453124989,13.402197265624991],[-3.527636718749989,13.182714843749991],[-3.3017578125,13.28076171875],[-3.248632812499977,13.658349609374994],[-2.950830078124994,13.6484375],[-2.873925781249994,13.950732421875003],[-2.586718749999989,14.227587890625003],[-2.113232421874983,14.16845703125],[-1.97304687499999,14.45654296875],[-1.049560546875,14.81953125],[-0.760449218749983,15.047753906249994],[-0.235888671874989,15.059423828124991],[0.217480468750011,14.911474609374991]]]},"properties":{"name":"Burkina Faso","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[91.94921875000003,21.50805664062503],[91.85947265625012,21.532958984375057],[91.90771484374997,21.722949218750017],[91.94921875000003,21.50805664062503]]],[[[91.87382812500002,21.832128906249977],[91.8375976562501,21.750244140625],[91.85068359375012,21.927050781250045],[91.87382812500002,21.832128906249977]]],[[[91.15078125000005,22.175195312499966],[91.04472656250002,22.10517578125001],[91.0794921875,22.519726562499983],[91.15078125000005,22.175195312499966]]],[[[91.55673828125006,22.38222656250005],[91.41132812500004,22.475683593750006],[91.45605468749997,22.61650390624999],[91.55673828125006,22.38222656250005]]],[[[90.77763671875007,22.089306640624983],[90.51503906250005,22.06513671875001],[90.68046875000007,22.327490234375006],[90.50292968749997,22.835351562499994],[90.59648437500002,22.863525390625057],[90.86816406250003,22.48486328125],[90.77763671875007,22.089306640624983]]],[[[88.94072265625002,26.24536132812497],[88.97041015625004,26.250878906250023],[88.95195312500002,26.412109375],[89.01865234375012,26.410253906249977],[89.28925781250004,26.03759765625],[89.54990234375006,26.005273437499994],[89.57275390625003,26.13232421875003],[89.67089843750003,26.21381835937504],[89.8229492187501,25.94140625000003],[89.82490234375004,25.56015625],[89.80087890625012,25.33613281250001],[89.81406250000006,25.305371093749955],[89.86630859375012,25.293164062499955],[90.11962890625003,25.21997070312497],[90.61308593750002,25.16772460937497],[92.04970703125005,25.16948242187499],[92.46835937500006,24.94414062499999],[92.38496093750004,24.848779296875023],[92.25126953125007,24.895068359375045],[92.22832031250002,24.88134765625],[92.22666015625012,24.77099609374997],[92.11748046875002,24.493945312500017],[92.06416015625004,24.374365234375006],[91.84619140624997,24.17529296875003],[91.72656250000003,24.20507812499997],[91.35019531250012,24.06049804687501],[91.16044921875007,23.66064453125],[91.359375,23.06835937500003],[91.43623046875004,23.19990234375001],[91.55351562500002,22.991552734375006],[91.61953125,22.97968750000001],[91.75097656250003,23.053515625000017],[91.75419921875007,23.287304687499955],[91.79003906249997,23.361035156249983],[91.937890625,23.504687500000017],[91.92949218750007,23.598242187499977],[91.92958984375,23.68598632812501],[91.97851562500003,23.691992187499977],[92.04404296875006,23.677783203125017],[92.24609375000003,23.683593750000057],[92.33378906250002,23.242382812499955],[92.36162109375002,22.929003906250074],[92.46445312500006,22.734423828125045],[92.49140625000004,22.685400390625006],[92.5612304687501,22.04804687500001],[92.57490234375004,21.978076171875045],[92.58281250000002,21.940332031249994],[92.5934570312501,21.46733398437499],[92.63164062500002,21.306201171875045],[92.33056640624997,21.439794921874977],[92.17958984375005,21.293115234375023],[92.32412109375,20.791845703125063],[92.0560546875,21.1748046875],[91.86337890625012,22.350488281249966],[91.7970703125001,22.297460937500006],[91.48007812500006,22.884814453125045],[91.2162109375,22.642236328124994],[90.94560546875002,22.597021484375034],[90.65625,23.025488281250006],[90.60400390624997,23.59135742187499],[90.55566406249997,23.42153320312505],[90.26914062500012,23.455859375000017],[90.59091796875012,23.266406250000045],[90.43505859374997,22.751904296874955],[90.61611328125,22.362158203125034],[90.23056640625006,21.82978515625004],[90.07119140625005,21.887255859375017],[90.20957031250006,22.156591796875006],[89.95419921875006,22.022851562500023],[89.91806640625012,22.11616210937501],[89.98515625000002,22.466406250000063],[89.81191406250005,21.983496093750006],[89.56855468750004,21.767431640625034],[89.48320312500007,22.275537109374994],[89.50058593750006,21.914355468750045],[89.35371093750004,21.72109375],[89.09394531250004,21.872753906249983],[89.05,22.274609374999983],[88.92070312500002,22.632031249999955],[88.89970703125002,22.843505859375057],[88.85058593749997,23.040527343750057],[88.928125,23.186621093750063],[88.72441406250002,23.254980468750034],[88.69765625,23.493017578125034],[88.63574218749997,23.55],[88.56738281249997,23.674414062500034],[88.69980468750006,24.002539062500006],[88.71376953125,24.069628906250017],[88.72656250000003,24.186230468749955],[88.7335937500001,24.23090820312501],[88.72353515625,24.27490234375],[88.64228515625004,24.325976562500017],[88.49853515625003,24.34663085937504],[88.3375,24.45385742187503],[88.225,24.460644531249983],[88.14550781250003,24.485791015624955],[88.07910156249997,24.549902343750063],[88.02343750000003,24.62783203125005],[88.03027343749997,24.66445312500005],[88.0451171875001,24.713037109374994],[88.1498046875,24.914648437500034],[88.1888671875,24.92060546875001],[88.27949218750004,24.881933593750034],[88.31337890625005,24.8818359375],[88.37294921875,24.961523437499977],[88.45625,25.18842773437504],[88.57382812500006,25.18789062499999],[88.92978515625012,25.222998046875063],[88.94414062500002,25.290771484375],[88.85478515625002,25.333544921875017],[88.76914062500006,25.490478515625],[88.50244140624997,25.537011718749994],[88.14746093749997,25.811425781250023],[88.1066406250001,25.841113281250045],[88.15078125000005,26.08715820312497],[88.33398437499997,26.257519531249955],[88.44042968749997,26.369482421875034],[88.38623046875003,26.471533203125034],[88.35146484375005,26.482568359374966],[88.36992187500002,26.564111328124994],[88.51826171875004,26.517773437499955],[88.68281250000004,26.291699218749983],[88.94072265625002,26.24536132812497]]]]},"properties":{"name":"Bangladesh","childNum":6}},{"geometry":{"type":"Polygon","coordinates":[[[28.585351562500023,43.742236328124996],[28.465429687500006,43.389306640624994],[28.133691406250023,43.39560546875],[27.92890625000001,43.1861328125],[27.88886718750001,42.74970703125],[27.484765625000023,42.468066406249996],[28.014453125000017,41.969042968749996],[27.47480468750001,41.946875],[27.294921875,42.079541015625],[27.24433593750001,42.09326171875],[27.01171875,42.058642578124996],[26.96875,42.02685546875],[26.884863281250006,41.991845703124994],[26.615332031250006,41.964892578124996],[26.549707031250023,41.896728515625],[26.51142578125001,41.8263671875],[26.3603515625,41.8015625],[26.327246093750006,41.772802734375],[26.31796875,41.744677734374996],[26.320898437500006,41.716552734375],[26.200585937500023,41.743798828124994],[26.107421875,41.72568359375],[26.085546875,41.704150390624996],[26.066015625,41.673242187499994],[26.1435546875,41.521533203124996],[26.155175781250023,41.434863281249996],[26.135351562500006,41.3857421875],[26.06640625,41.35068359375],[25.92333984375,41.311914062499994],[25.784960937500017,41.330419921875],[25.52705078125001,41.2998046875],[25.381933593750006,41.26435546875],[25.25117187500001,41.243554687499994],[24.773730468750017,41.356103515624994],[24.595996093750017,41.442724609375],[24.5693359375,41.4673828125],[24.51826171875001,41.552539062499996],[24.487890625,41.555224609374996],[24.056054687500023,41.527246093749994],[24.03291015625001,41.469091796875],[24.011328125,41.46005859375],[23.635156250000023,41.386767578124996],[23.53583984375001,41.386035156249996],[23.433398437500017,41.398730468749996],[23.3720703125,41.3896484375],[23.23984375,41.3849609375],[23.15595703125001,41.322070312499996],[22.916015625,41.336279296875],[23.00361328125001,41.73984375],[22.836816406250023,41.993603515625],[22.344042968750017,42.31396484375],[22.42207031250001,42.328857421875],[22.445703125000023,42.359130859375],[22.523535156250006,42.440966796874996],[22.53242187500001,42.481201171875],[22.524218750000017,42.50390625],[22.43623046875001,42.6291015625],[22.466796875,42.84248046875],[22.799902343750006,42.985742187499994],[22.976855468750017,43.18798828125],[22.85957031250001,43.25234375],[22.819726562500023,43.300732421875],[22.767578125,43.354150390624994],[22.554589843750023,43.454492187499994],[22.36962890625,43.781298828124996],[22.36542968750001,43.862109375],[22.399023437500006,43.96953125],[22.420800781250023,44.007421875],[22.452529688228115,44.0510441391688],[22.547921095934313,44.113823956634434],[22.688564844478098,44.254306249271906],[23.02851562500001,44.077978515625],[22.868261718750006,43.947900390624994],[22.919042968750006,43.83447265625],[25.4970703125,43.670800781249994],[26.2158203125,44.007275390625],[27.0869140625,44.167382812499994],[27.425390625,44.0205078125],[27.88427734375,43.987353515624996],[28.221972656250017,43.772851562499994],[28.585351562500023,43.742236328124996]]]},"properties":{"name":"Bulgaria","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[50.60722656250002,25.883105468750003],[50.57490234375001,25.806787109374994],[50.465917968750006,25.965527343749997],[50.46992187500001,26.228955078124997],[50.5859375,26.24072265625],[50.60722656250002,25.883105468750003]]]},"properties":{"name":"Bahrain","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-73.02685546874994,21.19238281250003],[-73.16455078125003,20.979150390625023],[-73.68115234375003,20.9755859375],[-73.68037109374995,21.103320312500017],[-73.52309570312497,21.190820312499966],[-73.23535156249997,21.15449218750004],[-73.05849609375,21.313378906249994],[-73.02685546874994,21.19238281250003]]],[[[-73.041015625,22.429052734375006],[-72.74726562500001,22.32739257812497],[-73.16191406250002,22.380712890625006],[-73.041015625,22.429052734375006]]],[[[-74.20673828124998,22.213769531250023],[-74.27690429687499,22.183691406250006],[-73.906396484375,22.527441406250063],[-73.95419921874995,22.71552734375001],[-73.84995117187503,22.731054687500063],[-73.83652343749998,22.538427734374977],[-74.20673828124998,22.213769531250023]]],[[[-74.05751953124997,22.723486328125034],[-74.27460937499995,22.71166992187503],[-74.30703125,22.83959960937497],[-74.05751953124997,22.723486328125034]]],[[[-74.84047851562494,22.894335937500017],[-75.22333984374995,23.165332031250074],[-75.13056640624998,23.267919921875006],[-75.31596679687502,23.668359374999966],[-74.84047851562494,22.894335937500017]]],[[[-75.66455078124997,23.45014648437501],[-76.03710937500003,23.60278320312503],[-76.01044921875001,23.671386718750057],[-75.66455078124997,23.45014648437501]]],[[[-74.42944335937497,24.068066406249955],[-74.55092773437502,23.96894531250001],[-74.52690429687502,24.105078125000034],[-74.42944335937497,24.068066406249955]]],[[[-77.65771484374994,24.249462890624955],[-77.75527343750002,24.163476562500023],[-77.61538085937494,24.216357421875045],[-77.5615234375,24.136816406250006],[-77.57373046875,23.739160156249994],[-77.77128906249999,23.752539062499977],[-77.99990234374994,24.219824218750063],[-77.65771484374994,24.249462890624955]]],[[[-75.30839843749999,24.2],[-75.50322265624996,24.139062500000023],[-75.40893554687503,24.265771484374994],[-75.72666015625,24.68935546875005],[-75.30839843749999,24.2]]],[[[-77.34755859375,25.013867187499983],[-77.56191406249997,25.030029296875],[-77.27558593750001,25.055761718750006],[-77.34755859375,25.013867187499983]]],[[[-77.74384765625001,24.70742187499999],[-77.74521484375,24.463476562500034],[-78.04492187499997,24.287451171875063],[-78.14580078125002,24.493457031250017],[-78.36650390624993,24.544189453125057],[-78.435302734375,24.627587890624994],[-78.24272460937493,24.65380859375],[-78.21137695312495,25.191259765624977],[-77.97529296874998,25.084814453125063],[-77.74384765625001,24.70742187499999]]],[[[-76.64882812499994,25.487402343750006],[-76.34379882812496,25.33203124999997],[-76.12661132812497,25.14052734375005],[-76.16953125,24.6494140625],[-76.319970703125,24.81767578124999],[-76.21376953124994,24.822460937499983],[-76.160400390625,25.119335937499983],[-76.36928710937502,25.312597656250006],[-76.62070312499998,25.43164062500003],[-76.78066406249997,25.426855468750006],[-76.71083984374997,25.564892578124983],[-76.64882812499994,25.487402343750006]]],[[[-78.49287109375001,26.729052734375017],[-77.92246093749998,26.69111328125001],[-78.74365234374994,26.50068359375004],[-78.98564453124996,26.689501953125045],[-78.79804687500001,26.58242187499999],[-78.59711914062493,26.797949218750006],[-78.49287109375001,26.729052734375017]]],[[[-77.22563476562496,25.904199218750023],[-77.40317382812498,26.02470703124996],[-77.24677734374998,26.156347656250034],[-77.238623046875,26.561132812500006],[-77.510595703125,26.845996093750045],[-77.94375,26.90356445312503],[-77.53388671874995,26.903417968750006],[-77.06635742187501,26.530175781249994],[-77.03828124999998,26.333447265624983],[-77.16728515624996,26.240332031250006],[-77.22563476562496,25.904199218750023]]]]},"properties":{"name":"Bahamas","childNum":14}},{"geometry":{"type":"Polygon","coordinates":[[[19.007128906250045,44.86918945312502],[19.348632812500057,44.88090820312502],[19.118457031250074,44.359960937500006],[19.583789062500017,44.04345703125003],[19.245019531249994,43.96503906250004],[19.495117187500057,43.642871093750045],[19.19433593749997,43.533300781250006],[19.164355468750017,43.53544921874999],[19.11279296874997,43.52773437500002],[19.080078125000057,43.51772460937502],[19.0283203125,43.53251953125002],[18.97421875,43.54233398437498],[18.95068359375,43.52666015624999],[19.036718750000034,43.35732421875002],[19.026660156250017,43.292431640624955],[18.97871093750001,43.28540039062503],[18.934667968750006,43.339453125000034],[18.85107421875003,43.34633789062502],[18.749218750000068,43.283544921875006],[18.67421875000008,43.230810546875006],[18.623632812500063,43.027685546875034],[18.488476562500068,43.01215820312498],[18.44384765625003,42.96845703125004],[18.46601562500001,42.777246093749994],[18.54589843750003,42.64160156249997],[18.436328125000017,42.559716796874994],[17.667578125000063,42.897119140624994],[17.585156250000068,42.93837890625005],[17.650488281250063,43.006591796875],[17.27382812500005,43.44575195312501],[16.300097656250017,44.12451171875],[16.10341796875008,44.52099609375006],[15.736621093750045,44.76582031250001],[15.788085937500057,45.17895507812497],[16.028320312500057,45.18959960937502],[16.29335937500005,45.00883789062496],[16.53066406250008,45.21669921875002],[16.918652343749983,45.27656249999998],[17.812792968750074,45.078125],[18.66259765625,45.07744140624999],[18.83642578125,44.883251953124955],[19.007128906250045,44.86918945312502]]]},"properties":{"name":"Bosnia and Herz.","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[28.14794921875,56.142919921875],[28.284277343750006,56.055908203125],[29.375,55.938720703125],[29.353417968750023,55.784375],[29.412988281250023,55.724853515625],[29.482226562500017,55.6845703125],[29.63007812500001,55.751171875],[29.6845703125,55.7697265625],[29.744140625,55.77041015625],[29.82392578125001,55.7951171875],[29.881640625000017,55.832324218749996],[29.93701171875,55.845263671874996],[30.04267578125001,55.83642578125],[30.23359375000001,55.84521484375],[30.625585937500006,55.666259765625],[30.906835937500006,55.57001953125],[30.90058593750001,55.397412109375],[30.82099609375001,55.3302734375],[30.810546875,55.306982421875],[30.814453125,55.2787109375],[30.87744140625,55.2234375],[30.958886718750023,55.13759765625],[30.97773437500001,55.08779296875],[30.97773437500001,55.05048828125],[30.829882812500017,54.914990234375],[30.804492187500017,54.8609375],[30.791015625,54.806005859375],[30.798828125,54.783251953124996],[30.984179687500017,54.6958984375],[31.12128906250001,54.648486328124996],[31.152148437500017,54.625341796875],[31.074804687500006,54.491796875],[31.18476562500001,54.452978515625],[31.299121093750017,54.29169921875],[31.403613281250017,54.195947265625],[31.62841796875,54.111181640625],[31.7919921875,54.055908203125],[31.825976562500017,54.030712890625],[31.837792968750023,54.00078125],[31.825292968750006,53.935009765625],[31.783007812500017,53.85498046875],[31.754199218750017,53.81044921875],[31.82080078125,53.791943359375],[31.9921875,53.796875],[32.20039062500001,53.78125],[32.45097656250002,53.6533203125],[32.70429687500001,53.336328125],[32.64443359375002,53.32890625],[32.57802734375002,53.31240234375],[32.469335937500006,53.2703125],[32.14199218750002,53.091162109375],[31.849707031250006,53.106201171875],[31.668261718750017,53.200927734375],[31.417871093750023,53.196044921875],[31.38837890625001,53.184814453125],[31.364550781250017,53.138964843749996],[31.30292968750001,53.060888671875],[31.2587890625,53.01669921875],[31.29511718750001,52.989794921874996],[31.35302734375,52.933447265625],[31.442773437500023,52.86181640625],[31.53515625,52.7982421875],[31.564843750000023,52.759228515625],[31.585546875,52.532470703125],[31.57734375000001,52.312304687499996],[31.6015625,52.284814453125],[31.64990234375,52.26220703125],[31.690625,52.220654296875],[31.758593750000017,52.125830078125],[31.76337890625001,52.10107421875],[31.57373046875,52.10810546875],[31.345996093750017,52.10537109375],[31.21796875000001,52.050244140625],[30.98066406250001,52.046191406249996],[30.845703125,51.953076171875],[30.755273437500023,51.895166015625],[30.667285156250017,51.814111328125],[30.583886718750023,51.68896484375],[30.533007812500017,51.596337890624994],[30.56074218750001,51.531494140625],[30.602343750000017,51.471240234374996],[30.611718750000023,51.40634765625],[30.63251953125001,51.355419921875],[30.449511718750017,51.274316406249994],[30.160742187500006,51.477880859375],[29.346484375000017,51.382568359375],[29.10205078125,51.6275390625],[29.06074218750001,51.625439453125],[29.013085937500023,51.598925781249996],[28.97773437500001,51.57177734375],[28.927539062500017,51.562158203124994],[28.849511718750023,51.540185546874994],[28.73125,51.433398437499996],[28.690234375000017,51.438867187499994],[28.647753906250017,51.45654296875],[28.599023437500023,51.542626953124994],[28.532031250000017,51.562451171875],[27.85859375000001,51.5923828125],[27.7,51.477978515625],[27.689746093750017,51.572412109374994],[27.296289062500023,51.597412109375],[27.270117187500006,51.613574218749996],[27.141992187500023,51.75205078125],[27.074121093750023,51.76083984375],[26.95283203125001,51.75400390625],[26.7734375,51.770703125],[25.785742187500006,51.923828125],[24.361914062500006,51.867529296875],[24.280078125000017,51.774707031249996],[24.126855468750023,51.6646484375],[23.978320312500017,51.59130859375],[23.951171875,51.58505859375],[23.8642578125,51.623974609375],[23.79169921875001,51.637109375],[23.706835937500017,51.64130859375],[23.61376953125,51.525390625],[23.605273437500017,51.517919921875],[23.652441406250006,52.040380859375],[23.175097656250017,52.28662109375],[23.915429687500023,52.770263671875],[23.484667968750017,53.939794921875],[23.55908203125,53.91982421875],[23.733691406250017,53.912255859375],[24.191308593750023,53.950439453125],[24.236621093750017,53.919970703124996],[24.31796875,53.89296875],[24.620703125,53.979833984375],[24.768164062500006,53.974658203124996],[24.78925781250001,53.9982421875],[24.82568359375,54.118994140625],[24.869531250000023,54.145166015625],[25.04609375000001,54.133056640625],[25.111425781250006,54.154931640625],[25.179492187500017,54.2142578125],[25.46113281250001,54.292773437499996],[25.505664062500017,54.264941406249996],[25.52734375,54.215136718749996],[25.497363281250017,54.175244140625],[25.573046875000017,54.139892578125],[25.765234375,54.17978515625],[25.702539062500023,54.29296875],[25.61689453125001,54.310107421874996],[25.557519531250023,54.310693359375],[25.54736328125,54.331835937499996],[25.56757812500001,54.37705078125],[25.62031250000001,54.460400390625],[25.68515625,54.535791015625],[25.72480468750001,54.564257812499996],[25.73164062500001,54.590380859374996],[25.722460937500017,54.71787109375],[25.859277343750023,54.919287109375],[25.964453125,54.94716796875],[26.09296875000001,54.9623046875],[26.175195312500023,55.003271484375],[26.250781250000017,55.12451171875],[26.291796875000017,55.139599609375],[26.601171875,55.130175781249996],[26.6484375,55.20419921875],[26.775683593750017,55.273095703125],[26.760156250000023,55.293359375],[26.68125,55.306445312499996],[26.49531250000001,55.318017578125],[26.457617187500006,55.34248046875],[26.469531250000017,55.371923828125],[26.51923828125001,55.44814453125],[26.56660156250001,55.546484375],[26.5908203125,55.62265625],[26.593554687500017,55.667529296874996],[27.052539062500017,55.83056640625],[27.576757812500006,55.798779296875],[28.14794921875,56.142919921875]]]},"properties":{"name":"Belarus","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-87.8529296875,17.4228515625],[-87.92998046874996,17.283007812500017],[-87.826416015625,17.546289062499994],[-87.8529296875,17.4228515625]]],[[[-88.89404296875,15.890625],[-89.2328125,15.888671875],[-89.16147460937503,17.81484375],[-89.13354492187503,17.970800781249977],[-88.80634765624998,17.965527343749983],[-88.52299804687499,18.445898437500063],[-88.29565429687494,18.47241210937503],[-88.34926757812494,18.358837890624983],[-88.1302734375,18.350732421875023],[-88.08525390624999,18.226123046875045],[-88.27172851562494,17.60986328125],[-88.203466796875,17.5166015625],[-88.31342773437501,16.632763671874983],[-88.89404296875,15.890625]]]]},"properties":{"name":"Belize","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[-64.73027343749999,32.29345703125],[-64.86284179687499,32.273876953125],[-64.66831054687499,32.38193359375],[-64.73027343749999,32.29345703125]]]},"properties":{"name":"Bermuda","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-58.15976562499999,-20.164648437500006],[-58.18017578125,-19.81787109375],[-59.09052734375,-19.286230468750006],[-60.00737304687499,-19.29755859375001],[-61.7568359375,-19.6453125],[-62.276318359375,-20.5625],[-62.27666015624999,-21.066015625],[-62.65097656249999,-22.233691406250003],[-62.84335937499999,-21.99726562500001],[-63.92167968749999,-22.028613281250003],[-63.97612304687499,-22.072558593750003],[-64.26640624999999,-22.603320312500003],[-64.30791015624999,-22.7953125],[-64.32529296874999,-22.82763671875],[-64.373974609375,-22.761035156250003],[-64.4455078125,-22.58535156250001],[-64.477734375,-22.4853515625],[-64.5236328125,-22.37158203125],[-64.60551757812499,-22.228808593750003],[-64.992626953125,-22.109667968750003],[-65.518798828125,-22.09453125],[-65.686181640625,-22.11025390625001],[-65.77104492187499,-22.099609375],[-65.86015624999999,-22.01972656250001],[-66.05859375,-21.879492187500006],[-66.098583984375,-21.835058593750006],[-66.17465820312499,-21.8056640625],[-66.220166015625,-21.802539062500003],[-66.24760742187499,-21.83046875],[-66.28212890625,-21.94746093750001],[-66.3224609375,-22.053125],[-66.365185546875,-22.11376953125],[-66.71171874999999,-22.21630859375],[-66.99111328125,-22.509863281250006],[-67.19487304687499,-22.82167968750001],[-67.362255859375,-22.85517578125001],[-67.57993164062499,-22.891699218750006],[-67.79443359375,-22.879492187500006],[-67.87944335937499,-22.82294921875001],[-67.88173828125,-22.49335937500001],[-68.18642578125,-21.61855468750001],[-68.197021484375,-21.30029296875],[-68.558251953125,-20.901953125],[-68.484326171875,-20.62841796875],[-68.74516601562499,-20.45859375],[-68.75932617187499,-20.115527343750003],[-68.560693359375,-19.967089843750003],[-68.559375,-19.90234375],[-68.578271484375,-19.856542968750006],[-68.69619140625,-19.74072265625],[-68.69829101562499,-19.72109375],[-68.57529296874999,-19.56015625],[-68.462890625,-19.43281250000001],[-68.470166015625,-19.409960937500003],[-68.49199218749999,-19.381933593750006],[-68.85795898437499,-19.093359375],[-68.96831054687499,-18.96796875000001],[-68.97885742187499,-18.81298828125],[-69.026806640625,-18.65625],[-69.09228515625,-18.28242187500001],[-69.145458984375,-18.14404296875],[-69.0939453125,-18.05048828125001],[-69.28232421874999,-17.96484375],[-69.31337890625,-17.943164062500003],[-69.5109375,-17.50605468750001],[-69.51108398437499,-17.5048828125],[-69.510986328125,-17.46035156250001],[-69.521923828125,-17.388964843750003],[-69.645703125,-17.24853515625],[-69.62485351562499,-17.2001953125],[-69.020703125,-16.6421875],[-69.03291015625,-16.47597656250001],[-68.8427734375,-16.337890625],[-69.21757812499999,-16.14912109375001],[-69.4208984375,-15.640625],[-69.17246093749999,-15.236621093750003],[-69.37470703125,-14.962988281250006],[-69.35947265624999,-14.7953125],[-68.87089843749999,-14.169726562500003],[-69.07412109375,-13.682812500000011],[-68.97861328124999,-12.880078125000011],[-68.68525390625,-12.501953125],[-69.57861328125,-10.951757812500006],[-69.228515625,-10.955664062500006],[-68.84833984375,-11.011132812500009],[-68.678369140625,-11.11279296875],[-68.39799804687499,-11.01875],[-68.0716796875,-10.703125],[-67.99169921875,-10.674414062500006],[-67.83500976562499,-10.662792968750011],[-67.72177734374999,-10.68310546875],[-67.416943359375,-10.389843750000011],[-66.575341796875,-9.89990234375],[-65.396142578125,-9.71240234375],[-65.298583984375,-10.146777343750003],[-65.31308593749999,-10.253027343750006],[-65.395458984375,-10.392285156250011],[-65.4369140625,-10.449023437500003],[-65.44711914062499,-10.507421875],[-65.33403320312499,-10.892773437500011],[-65.32377929687499,-11.024804687500009],[-65.389892578125,-11.246289062500011],[-65.1857421875,-11.74951171875],[-64.783447265625,-12.059375],[-64.42050781249999,-12.439746093750003],[-63.68857421874999,-12.47802734375],[-63.3466796875,-12.680078125],[-63.06748046874999,-12.669140625000011],[-62.76547851562499,-12.997265625000011],[-62.11801757812499,-13.159765625],[-62.09477539062499,-13.241992187500003],[-61.944726562499994,-13.40625],[-61.87412109374999,-13.470410156250011],[-61.789941406249994,-13.525585937500011],[-61.57568359375,-13.524804687500009],[-61.51157226562499,-13.541210937500011],[-61.41606445312499,-13.526562500000011],[-61.129150390625,-13.49853515625],[-61.07700195312499,-13.48974609375],[-60.506591796875,-13.78984375],[-60.372705078124994,-14.41875],[-60.273339843749994,-15.088769531250009],[-60.402001953124994,-15.0927734375],[-60.583203125,-15.098339843750011],[-60.53046875,-15.143164062500006],[-60.38046875,-15.318261718750009],[-60.242333984374994,-15.479589843750006],[-60.20664062499999,-15.901953125],[-60.18720703125,-16.132128906250003],[-60.17558593749999,-16.269335937500003],[-58.53793945312499,-16.328222656250006],[-58.49658203125,-16.32666015625],[-58.42368164062499,-16.307910156250003],[-58.37539062499999,-16.28359375],[-58.345605468749994,-16.284375],[-58.35039062499999,-16.490820312500006],[-58.470605468749994,-16.650195312500003],[-58.478125,-16.70068359375],[-58.45981445312499,-16.910742187500006],[-58.417382812499994,-17.08056640625],[-58.39599609375,-17.23427734375001],[-58.34775390624999,-17.28212890625001],[-57.99091796875,-17.51289062500001],[-57.905029296875,-17.532324218750006],[-57.832470703125,-17.512109375],[-57.78886718749999,-17.573046875],[-57.780175781249994,-17.67177734375001],[-57.66166992187499,-17.947363281250006],[-57.58647460937499,-18.12226562500001],[-57.49565429687499,-18.214648437500003],[-57.57402343749999,-18.279296875],[-57.725,-18.733203125],[-57.783105468749994,-18.91425781250001],[-57.716796875,-19.044042968750006],[-58.131494140624994,-19.74453125],[-57.860742187499994,-19.979589843750006],[-57.887597656249994,-20.02041015625001],[-57.96015625,-20.04072265625001],[-58.021142578124994,-20.05517578125],[-58.09375,-20.15107421875001],[-58.15976562499999,-20.164648437500006]]]},"properties":{"name":"Bolivia","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-48.48588867187493,-27.76699218749998],[-48.554589843749994,-27.81220703125004],[-48.542187499999955,-27.57480468749999],[-48.41489257812495,-27.399609375],[-48.48588867187493,-27.76699218749998]]],[[[-48.584423828124955,-26.401562499999983],[-48.665771484375,-26.289648437500006],[-48.53974609374998,-26.170312500000023],[-48.584423828124955,-26.401562499999983]]],[[[-45.26025390624997,-23.889160156249986],[-45.451416015625,-23.895605468749977],[-45.30234375,-23.727539062500014],[-45.26025390624997,-23.889160156249986]]],[[[-44.12929687499994,-23.14189453124999],[-44.36015624999999,-23.17207031250001],[-44.24287109374998,-23.074121093750037],[-44.12929687499994,-23.14189453124999]]],[[[-38.90356445312497,-13.473437499999974],[-38.97758789062496,-13.523535156249963],[-39.02216796874998,-13.445605468749989],[-38.907128906249994,-13.401074218749983],[-38.90356445312497,-13.473437499999974]]],[[[-38.743847656249955,-13.097070312500037],[-38.668115234374966,-12.880175781249989],[-38.601171875,-12.99257812499998],[-38.743847656249955,-13.097070312500037]]],[[[-44.49931640625002,-2.939648437499983],[-44.597753906250006,-3.037597656249943],[-44.4814453125,-2.717578125000031],[-44.49931640625002,-2.939648437499983]]],[[[-44.88310546874996,-1.317871093749986],[-45.020849609375034,-1.372363281249974],[-44.978662109374966,-1.267285156249983],[-44.88310546874996,-1.317871093749986]]],[[[-51.83251953124997,-1.433789062499969],[-51.938378906249966,-1.452636718749986],[-51.680029296875006,-1.086132812500026],[-51.546044921874966,-0.649609375],[-51.25400390624998,-0.54140625],[-51.16074218749998,-0.666699218750011],[-51.27631835937498,-1.02177734374996],[-51.83251953124997,-1.433789062499969]]],[[[-49.62866210937497,-0.229199218749969],[-49.11699218749999,-0.163574218750014],[-48.39267578124995,-0.29736328125],[-48.83359375,-1.390039062500023],[-49.038476562499994,-1.5140625],[-49.17270507812498,-1.41259765625],[-49.233984375000034,-1.59951171874998],[-49.50664062499999,-1.511621093750023],[-49.587890625,-1.712402343749972],[-49.805126953124955,-1.790234375000026],[-50.06572265625002,-1.703808593749997],[-50.50761718749999,-1.787988281250009],[-50.759765625,-1.240234374999972],[-50.72949218749997,-1.126757812499946],[-50.57695312499999,-1.103125],[-50.709619140624994,-1.07773437499999],[-50.796093749999955,-0.90625],[-50.6455078125,-0.27285156249998],[-50.24824218749998,-0.11640625],[-49.62866210937497,-0.229199218749969]]],[[[-50.65288085937499,-0.131640624999989],[-50.926367187500034,-0.327343749999983],[-51.03808593749994,-0.225878906250003],[-50.84218750000002,-0.050195312500009],[-50.65288085937499,-0.131640624999989]]],[[[-49.44389648437499,-0.112402343749977],[-49.83007812499997,-0.093896484375023],[-49.50346679687496,0.083691406250011],[-49.37231445312497,0.001074218749963],[-49.44389648437499,-0.112402343749977]]],[[[-49.73823242187498,0.26816406250002],[-49.917089843750006,-0.023193359375014],[-50.339453125,0.043359375000051],[-50.27265624999998,0.231738281249974],[-49.73823242187498,0.26816406250002]]],[[[-50.42612304687498,0.139257812500048],[-50.44394531249998,-0.007666015624949],[-50.623925781249966,0.054394531249983],[-50.372753906249955,0.590869140625031],[-50.33227539062497,0.259033203125028],[-50.42612304687498,0.139257812500048]]],[[[-50.152929687500006,0.393017578125054],[-50.26132812499998,0.359179687500003],[-50.281689453124955,0.51650390624998],[-50.05883789062503,0.638037109374963],[-50.152929687500006,0.393017578125054]]],[[[-50.29897460937502,1.93852539062496],[-50.45610351562496,1.910498046875034],[-50.49101562499996,2.128613281249969],[-50.34199218749998,2.14174804687498],[-50.29897460937502,1.93852539062496]]],[[[-59.69970703125,4.353515625],[-59.73857421874993,4.226757812500026],[-59.62021484374998,4.023144531250026],[-59.557763671874966,3.960009765625031],[-59.551123046875034,3.933544921874969],[-59.854394531249994,3.5875],[-59.99433593749998,2.689990234375031],[-59.88964843749997,2.362939453125009],[-59.75522460937495,2.27412109375004],[-59.74350585937498,2.12163085937496],[-59.75175781249996,1.962402343750028],[-59.75620117187498,1.900634765624972],[-59.666601562500006,1.746289062499969],[-59.53569335937499,1.7],[-59.23120117187494,1.376025390625031],[-58.82177734374994,1.201220703125031],[-58.787207031250006,1.208496093750014],[-58.73032226562498,1.247509765625054],[-58.68461914062499,1.28105468749996],[-58.511865234374966,1.284667968749986],[-58.506054687499926,1.438671875000011],[-58.39580078124993,1.481738281249989],[-58.38037109375,1.530224609375011],[-58.34067382812498,1.587548828125051],[-58.03466796875,1.520263671875014],[-57.9828125,1.648437500000014],[-57.87343750000002,1.667285156250045],[-57.79565429687497,1.7],[-57.59443359375001,1.704101562499986],[-57.54575195312495,1.726074218750028],[-57.31748046874998,1.963476562499991],[-57.27558593749998,1.959228515625014],[-57.189599609374966,1.981591796875037],[-57.11889648437494,2.013964843749974],[-57.09267578125002,2.005810546874997],[-57.03759765625,1.936474609374997],[-56.96953124999999,1.91640625],[-56.48281249999994,1.942138671874986],[-56.019921874999966,1.842236328124983],[-55.96333007812498,1.85708007812498],[-55.929638671874955,1.8875],[-55.92163085937503,1.976660156250006],[-55.91533203124999,2.039550781250028],[-55.96196289062496,2.09511718749998],[-56.02006835937499,2.15815429687504],[-56.073632812499994,2.236767578124969],[-56.13769531249997,2.259033203124986],[-56.12939453124997,2.299511718749969],[-56.08779296875002,2.341308593750043],[-56.045117187499955,2.364404296875037],[-56.02036132812498,2.392773437500054],[-55.993505859375006,2.497509765624983],[-55.9755859375,2.515966796875006],[-55.957470703124955,2.52045898437504],[-55.730566406250006,2.406152343750023],[-55.385351562500006,2.440625],[-55.34399414062503,2.488769531249972],[-55.28603515625002,2.49965820312498],[-55.18769531249998,2.547509765625037],[-55.114111328125006,2.539208984375037],[-55.07031249999994,2.548339843750028],[-55.005810546874955,2.592968749999983],[-54.97866210937502,2.597656250000043],[-54.968408203124966,2.548339843750028],[-54.92656249999999,2.497363281250045],[-54.876074218750006,2.450390624999969],[-54.72221679687499,2.441650390624972],[-54.69741210937502,2.359814453124997],[-54.66186523437497,2.327539062499994],[-54.61625976562499,2.326757812500006],[-54.59194335937502,2.313769531250031],[-54.55048828125001,2.293066406249991],[-54.51508789062498,2.245458984374963],[-54.43310546875,2.207519531250057],[-54.13007812499998,2.121044921875026],[-53.76777343749998,2.354833984375048],[-52.90346679687502,2.211523437499977],[-52.58300781250003,2.528906249999977],[-52.327880859375,3.18173828125002],[-51.65253906249998,4.061279296874972],[-51.54707031250001,4.31088867187502],[-51.219921874999955,4.093603515624991],[-50.71440429687502,2.134033203125],[-50.458886718749994,1.829589843749972],[-49.957128906250006,1.65986328125004],[-49.898876953124955,1.16298828124998],[-50.29443359374997,0.835742187500003],[-50.755078124999955,0.222558593749966],[-51.28291015625001,-0.085205078125028],[-51.98081054687498,-1.367968749999974],[-52.22924804687497,-1.3625],[-52.664160156250034,-1.551757812500028],[-51.94755859374996,-1.586718749999946],[-50.89492187500002,-0.937597656249963],[-50.690039062500006,-1.761718749999986],[-50.40322265625002,-2.015527343750009],[-49.999218749999955,-1.831835937499974],[-49.71953125000002,-1.926367187499963],[-49.31367187500001,-1.731738281250003],[-49.63652343749996,-2.656933593750026],[-49.45751953125,-2.504589843749983],[-49.21103515624998,-1.916503906249986],[-48.99130859374998,-1.829785156249997],[-48.71000976562496,-1.487695312500023],[-48.46293945312499,-1.613964843749997],[-48.349804687499926,-1.482128906249955],[-48.46806640624996,-1.393847656250003],[-48.44980468749998,-1.145507812499943],[-48.11508789062498,-0.7375],[-47.557324218749955,-0.669921874999957],[-47.418652343749955,-0.765917968749974],[-47.39809570312502,-0.626660156250026],[-45.45859374999995,-1.35625],[-45.32915039062496,-1.71728515625],[-45.07636718749998,-1.466406249999949],[-44.72114257812498,-1.733496093750006],[-44.778515624999955,-1.798828125],[-44.651269531249966,-1.745800781250026],[-44.537792968749955,-2.052734374999943],[-44.75634765624997,-2.265527343749952],[-44.66240234375002,-2.373242187499955],[-44.435449218749966,-2.168066406249991],[-44.38183593749997,-2.365527343749989],[-44.52011718749998,-2.40546875000004],[-44.589013671874994,-2.573437499999983],[-44.72304687500002,-3.204785156249997],[-44.43754882812496,-2.944433593749977],[-44.228613281250006,-2.471289062499949],[-44.105566406250006,-2.493457031250031],[-44.19267578124999,-2.809570312499943],[-43.93291015624999,-2.583496093749986],[-43.45512695312499,-2.502050781250006],[-43.38007812499998,-2.376074218750006],[-42.93671874999998,-2.465039062500011],[-42.24960937499998,-2.7919921875],[-41.876171874999926,-2.746582031249986],[-41.479931640624955,-2.916503906249972],[-40.474560546874926,-2.795605468750026],[-39.96469726562498,-2.861523437499955],[-38.475781249999955,-3.717480468749997],[-38.04882812500003,-4.216406250000034],[-37.626318359375006,-4.592089843750003],[-37.30146484375001,-4.713085937499969],[-37.174658203125006,-4.912402343749974],[-36.590722656249966,-5.097558593749952],[-35.549414062500006,-5.129394531249957],[-35.39257812499994,-5.250878906250009],[-34.833886718749994,-7.024414062500014],[-34.83466796874998,-7.97148437499996],[-35.34086914062499,-9.230664062499983],[-35.76396484374993,-9.702539062500023],[-35.890820312499926,-9.687011718749957],[-35.88544921875001,-9.84765625],[-36.39833984374994,-10.484082031249983],[-36.768310546875,-10.671679687500017],[-37.18281249999998,-11.06845703125002],[-37.35600585937502,-11.403906249999977],[-37.35922851562495,-11.252539062499963],[-37.68872070312503,-12.1],[-38.019238281249955,-12.591308593750028],[-38.401757812499994,-12.966210937500023],[-38.69096679687502,-12.623925781250009],[-38.85175781250001,-12.790136718750034],[-38.76372070312502,-12.9072265625],[-38.835302734375034,-13.147167968750026],[-39.030908203124994,-13.365136718750023],[-39.08935546875,-13.588183593749989],[-38.988623046875006,-13.61503906249996],[-39.04814453124996,-14.043945312500028],[-38.94233398437498,-14.030664062499994],[-39.05957031249997,-14.654785156249957],[-38.88061523437503,-15.864257812499972],[-39.20288085937503,-17.178125],[-39.154003906249926,-17.70390625000003],[-39.650781249999966,-18.252343750000037],[-39.78330078124998,-19.571777343749986],[-40.001367187499994,-19.74199218750003],[-40.39594726562501,-20.56943359375002],[-40.78925781250001,-20.90605468750003],[-40.954541015624926,-21.237890624999963],[-41.04726562499999,-21.505664062499974],[-41.00029296875002,-21.99902343750003],[-41.70551757812498,-22.30966796874999],[-41.980419921874955,-22.580664062499963],[-42.042382812499966,-22.947070312500003],[-42.95830078124996,-22.96708984374999],[-43.154296875,-22.725195312500006],[-43.22416992187502,-22.991210937500014],[-43.898828124999966,-23.10146484375001],[-43.97382812499998,-23.057324218749983],[-43.675976562499955,-23.00947265625001],[-43.86616210937498,-22.910546875000023],[-44.63725585937496,-23.05546875],[-44.67382812499994,-23.206640625000034],[-44.56967773437495,-23.27402343749999],[-45.32539062499998,-23.59970703124999],[-45.464306640624955,-23.802539062500017],[-45.97207031250002,-23.795507812500006],[-46.86728515624998,-24.236328125000014],[-47.989160156249994,-25.03574218749999],[-47.92939453124998,-25.16826171874999],[-48.20273437499998,-25.41650390625003],[-48.18593749999994,-25.309863281249974],[-48.402490234374994,-25.27207031249999],[-48.47612304687499,-25.44296875],[-48.73173828124993,-25.36875],[-48.6921875,-25.49150390625003],[-48.40117187500002,-25.59736328125001],[-48.665771484375,-25.844335937499963],[-48.576318359374994,-25.935449218749966],[-48.61943359374996,-26.17939453125001],[-48.74829101562503,-26.26865234374999],[-48.55415039062498,-27.195996093749997],[-48.62080078124998,-28.075585937499966],[-48.799658203125006,-28.575292968749977],[-49.27128906249999,-28.87119140625005],[-49.745996093749966,-29.363183593749994],[-50.299511718749955,-30.42578125000003],[-50.92138671874997,-31.25839843750002],[-52.039208984374994,-32.11484374999996],[-52.063232421875,-31.830371093750017],[-51.68066406249994,-31.774609375000026],[-51.272167968749955,-31.476953125000037],[-51.16142578124996,-31.11884765625001],[-50.980078125000034,-31.09423828124997],[-50.94082031249994,-30.903710937499966],[-50.68930664062495,-30.70419921874999],[-50.71630859374994,-30.425976562499983],[-50.58193359375002,-30.438867187500037],[-50.56352539062499,-30.25361328125004],[-51.02495117187493,-30.36865234375003],[-51.29804687499998,-30.03486328124997],[-51.15727539062499,-30.364257812500014],[-51.283056640625034,-30.751562499999963],[-51.35908203124998,-30.674511718749983],[-51.506298828124955,-31.104492187500014],[-51.97246093749999,-31.383789062499986],[-52.19355468749998,-31.885546874999974],[-52.12739257812501,-32.1677734375],[-52.652246093749994,-33.137792968750006],[-53.37060546874997,-33.74218750000003],[-53.39755859374995,-33.737304687500014],[-53.46357421875001,-33.70986328125002],[-53.531347656250034,-33.65546875000004],[-53.531347656250034,-33.1708984375],[-53.511865234374966,-33.10869140625003],[-53.482861328124926,-33.068554687500026],[-53.39521484375001,-33.01035156249998],[-53.31010742187499,-32.927050781249974],[-53.21406249999998,-32.82109375],[-53.12558593749998,-32.73671875],[-53.15727539062496,-32.680078125],[-53.601708984374994,-32.40302734374997],[-53.76171875,-32.05683593749997],[-53.920605468749926,-31.95234375],[-54.220556640625034,-31.855175781249997],[-54.58764648437503,-31.48515625000003],[-55.036035156249994,-31.27900390625004],[-55.091162109375034,-31.31396484374997],[-55.173535156249926,-31.279589843749974],[-55.557324218749955,-30.8759765625],[-55.60302734375003,-30.85078125000001],[-55.62714843749998,-30.858105468749997],[-55.650488281250034,-30.89208984375],[-55.66523437500001,-30.92490234375002],[-55.807763671874994,-31.036718749999977],[-55.87368164062502,-31.069628906250017],[-55.95200195312498,-31.08085937499999],[-56.0046875,-31.079199218750006],[-56.01845703125002,-30.991894531249983],[-55.998974609374955,-30.837207031250003],[-56.4072265625,-30.44746093750001],[-56.83271484374998,-30.107226562499974],[-57.120507812499994,-30.144433593749994],[-57.21445312499995,-30.283398437499983],[-57.55229492187496,-30.261230468749986],[-57.60888671875003,-30.187792968750045],[-57.563867187499994,-30.139941406249974],[-57.40522460937501,-30.03388671875004],[-57.22465820312499,-29.782128906249994],[-56.938623046874994,-29.594824218750034],[-55.890527343749994,-28.370019531249994],[-55.68725585937497,-28.38164062499996],[-55.72548828125002,-28.20410156250003],[-55.10151367187501,-27.866796874999963],[-54.82910156250003,-27.55058593750003],[-54.32700195312495,-27.423535156249997],[-53.83818359375002,-27.121093750000014],[-53.668554687500006,-26.288183593749977],[-53.89116210937499,-25.66884765625001],[-54.15458984374999,-25.523046874999963],[-54.44394531249998,-25.625],[-54.615869140624994,-25.576074218750023],[-54.61054687499998,-25.432714843750034],[-54.47314453124997,-25.22021484375],[-54.43623046875001,-25.12128906250001],[-54.281005859375,-24.30605468750001],[-54.31826171874994,-24.128125],[-54.26689453124996,-24.06582031250001],[-54.241796875,-24.047265624999966],[-54.44023437500002,-23.90175781249998],[-54.62548828125,-23.8125],[-54.98266601562494,-23.974511718749966],[-55.081884765625006,-23.997656249999977],[-55.1943359375,-24.017480468750023],[-55.28691406249993,-24.00429687499999],[-55.366308593750034,-23.99101562499996],[-55.41591796875002,-23.95136718749997],[-55.4423828125,-23.86533203125002],[-55.4423828125,-23.792578125000034],[-55.458886718749966,-23.686718750000054],[-55.51845703124994,-23.627246093750017],[-55.53828124999998,-23.580957031249994],[-55.61767578125,-22.67148437499999],[-55.74663085937499,-22.51269531249997],[-55.753271484375006,-22.410156250000043],[-55.84916992187499,-22.307617187500014],[-55.991406249999926,-22.28115234375005],[-56.18984374999994,-22.28115234375005],[-56.246044921874926,-22.26464843749997],[-56.39487304687498,-22.092675781250023],[-56.44780273437502,-22.07617187500003],[-56.77519531249999,-22.261328125],[-57.955908203125034,-22.109179687500003],[-57.94267578124999,-21.79833984375],[-57.830224609374994,-20.99794921875001],[-57.91513671874998,-20.690332031249966],[-57.97905273437493,-20.65732421874999],[-58.00224609374996,-20.465429687499977],[-58.02539062499997,-20.41582031249999],[-58.05844726562495,-20.38613281249998],[-58.091503906249926,-20.33320312500004],[-58.124609375000034,-20.293457031250014],[-58.13779296874995,-20.237304687500043],[-58.15976562499998,-20.164648437499977],[-58.09375,-20.15107421874997],[-58.021142578124994,-20.05517578124997],[-57.96015625000001,-20.04072265625004],[-57.887597656249966,-20.020410156249994],[-57.860742187499994,-19.97958984375002],[-58.029931640624994,-19.83271484375004],[-58.131494140624994,-19.74453125],[-57.71679687499997,-19.044042968750034],[-57.73085937499999,-18.91718750000004],[-57.783105468749994,-18.91425781249997],[-57.725,-18.73320312500003],[-57.57402343749993,-18.279296875000014],[-57.49565429687496,-18.21464843749999],[-57.58647460937499,-18.122265625],[-57.66166992187493,-17.94736328124999],[-57.78017578125002,-17.67177734374998],[-57.78886718750002,-17.573046875000017],[-57.83247070312501,-17.512109375000037],[-57.90502929687497,-17.53232421874999],[-57.990917968749955,-17.512890625000026],[-58.20556640625,-17.363085937499974],[-58.347753906250006,-17.282128906249994],[-58.39599609374997,-17.234277343750023],[-58.417382812499994,-17.08056640624997],[-58.459814453125006,-16.910742187500006],[-58.478125,-16.70068359375003],[-58.470605468749994,-16.650195312500045],[-58.35039062500002,-16.49082031249999],[-58.34560546875002,-16.284375],[-58.375390624999966,-16.283593749999966],[-58.423681640625034,-16.30791015625003],[-58.49658203124994,-16.32666015625003],[-58.537939453125034,-16.32822265624999],[-60.17558593749996,-16.26933593749999],[-60.187207031249955,-16.132128906250017],[-60.206640625,-15.90195312500002],[-60.242333984374994,-15.479589843750034],[-60.38046874999998,-15.318261718750023],[-60.53046874999998,-15.143164062499977],[-60.58320312499998,-15.098339843749983],[-60.273339843749994,-15.088769531249994],[-60.372705078124994,-14.41875],[-60.506591796875,-13.78984375],[-61.077001953125034,-13.489746093750014],[-61.129150390625,-13.498535156250028],[-61.41606445312502,-13.526562499999969],[-61.511572265625006,-13.541210937500011],[-61.789941406249966,-13.525585937500026],[-61.87412109374998,-13.470410156249983],[-61.944726562499966,-13.40625],[-62.09477539062499,-13.241992187499989],[-62.118017578125006,-13.15976562500002],[-62.765478515625034,-12.99726562500004],[-63.01518554687502,-12.80556640624998],[-63.067480468750006,-12.669140624999983],[-63.34667968749994,-12.68007812499999],[-63.68857421874998,-12.478027343749957],[-64.42050781249995,-12.439746093749974],[-64.783447265625,-12.059375],[-65.18574218749998,-11.749511718749957],[-65.389892578125,-11.246289062500011],[-65.33403320312499,-10.892773437500026],[-65.44711914062503,-10.507421875000034],[-65.4369140625,-10.449023437499946],[-65.39545898437498,-10.392285156250026],[-65.31308593749998,-10.253027343749991],[-65.29858398437497,-10.146777343750017],[-65.39614257812494,-9.712402343749986],[-66.57534179687502,-9.899902343749986],[-67.41694335937495,-10.389843749999969],[-67.72177734374998,-10.683105468749943],[-67.83500976562496,-10.662792968749983],[-67.99169921875,-10.674414062499949],[-68.07167968749994,-10.703125],[-68.39799804687499,-11.01875],[-68.678369140625,-11.11279296875],[-68.84833984374998,-11.01113281249998],[-69.228515625,-10.955664062499963],[-69.46254882812497,-10.948144531250023],[-69.57861328125,-10.951757812499963],[-69.67402343749998,-10.9541015625],[-69.83979492187501,-10.93339843749996],[-69.96035156249997,-10.92988281250004],[-70.06630859374997,-10.982421875],[-70.22006835937503,-11.04765625],[-70.29038085937498,-11.064257812499974],[-70.34199218750001,-11.066699218750017],[-70.39228515624995,-11.058593749999972],[-70.45087890624998,-11.024804687500009],[-70.53325195312496,-10.946875],[-70.59653320312498,-10.976855468750017],[-70.642333984375,-11.010253906249986],[-70.59916992187499,-9.620507812500009],[-70.54111328124998,-9.4375],[-70.60791015625,-9.463671875000031],[-70.63691406249995,-9.478222656249969],[-71.041748046875,-9.81875],[-71.11528320312499,-9.852441406250009],[-71.33940429687499,-9.988574218750031],[-72.18159179687495,-10.003710937500003],[-72.37905273437497,-9.51015625],[-73.20942382812493,-9.411425781249946],[-73.08984375,-9.26572265625002],[-72.970361328125,-9.120117187500028],[-72.97402343750002,-8.9931640625],[-73.07050781249995,-8.8828125],[-73.203125,-8.719335937499991],[-73.30244140624995,-8.654003906250011],[-73.36040039062496,-8.479296875000031],[-73.39814453125001,-8.458984374999986],[-73.54912109374993,-8.34580078125002],[-73.73203125,-7.875390625],[-73.72041015624993,-7.782519531250017],[-73.76689453124999,-7.753515624999963],[-73.82207031249996,-7.738964843750026],[-73.89462890624998,-7.654785156250014],[-73.946875,-7.611230468750023],[-73.98173828124996,-7.58505859375002],[-74.00205078125003,-7.556054687499966],[-73.98173828124996,-7.535742187500006],[-73.95849609374994,-7.506640625000031],[-73.96430664062498,-7.378906250000028],[-73.74946289062498,-7.335351562500037],[-73.72041015624993,-7.309277343749969],[-73.758203125,-7.172753906249952],[-73.79301757812499,-7.135058593750003],[-73.75810546874999,-6.90576171875],[-73.137353515625,-6.4658203125],[-73.23554687500001,-6.098437500000017],[-73.209375,-6.028710937500023],[-73.16289062499996,-5.933398437499974],[-72.97988281249997,-5.634863281249991],[-72.88706054687498,-5.122753906250026],[-72.83193359374994,-5.09375],[-72.69873046874997,-5.067187499999989],[-72.60834960937495,-5.009570312499974],[-72.46899414062497,-4.901269531250023],[-72.35283203124993,-4.786035156249994],[-72.25678710937501,-4.74892578124998],[-71.8447265625,-4.504394531249986],[-70.97368164062499,-4.350488281249994],[-70.86601562499999,-4.229589843749963],[-70.79951171874995,-4.173339843749957],[-70.72158203124997,-4.15888671875004],[-70.53066406249997,-4.167578125000034],[-70.40463867187498,-4.150097656250026],[-70.34365234375,-4.193652343750017],[-70.31689453124994,-4.246972656250037],[-70.23916015625002,-4.30117187499998],[-70.12880859375,-4.286621093749943],[-70.05332031249998,-4.333105468750006],[-70.00395507812496,-4.327246093749963],[-69.97202148437503,-4.30117187499998],[-69.96591796875003,-4.2359375],[-69.94819335937498,-4.200585937500009],[-69.66904296875003,-2.667675781249997],[-69.40024414062498,-1.194921874999977],[-69.63398437500001,-0.50927734375],[-70.07050781249993,-0.13886718750004],[-70.05390624999993,0.578613281250028],[-69.47211914062498,0.72993164062504],[-69.15332031249994,0.65878906250002],[-69.31181640624999,1.050488281249969],[-69.85214843750003,1.05952148437504],[-69.84858398437493,1.708740234375043],[-68.17656249999999,1.719824218749991],[-68.25595703125,1.845507812500017],[-68.19379882812495,1.987011718749983],[-67.93623046874998,1.748486328124969],[-67.40043945312499,2.116699218750028],[-67.11923828124998,1.703613281249986],[-67.082275390625,1.185400390625006],[-66.87602539062499,1.223046875000037],[-66.34711914062498,0.7671875],[-66.06005859375003,0.78535156250004],[-65.68144531249999,0.983447265624989],[-65.52299804687493,0.843408203124966],[-65.55605468750002,0.687988281250014],[-65.47338867187497,0.691259765624977],[-65.10375976562497,1.108105468749983],[-64.20502929687493,1.52949218750004],[-64.00849609374995,1.931591796874969],[-63.43251953124994,2.155566406250045],[-63.389257812500006,2.411914062500045],[-64.04658203124998,2.502392578124997],[-64.22109375000002,3.587402343749972],[-64.66899414062496,4.01181640625002],[-64.788671875,4.276025390625023],[-64.57636718750001,4.139892578125],[-64.19248046874995,4.126855468750009],[-64.02148437500003,3.929101562500051],[-63.33867187500002,3.943896484375045],[-62.85698242187502,3.593457031249969],[-62.71210937499998,4.01791992187502],[-62.41064453124994,4.156738281249972],[-62.153125,4.098388671874986],[-61.82084960937496,4.197021484375],[-61.28007812500002,4.516894531249974],[-61.00283203125002,4.535253906249991],[-60.603857421875006,4.94936523437498],[-60.671972656250034,5.164355468749989],[-60.71196289062499,5.191552734375023],[-60.742138671874926,5.202050781250037],[-60.6513671875,5.221142578125011],[-60.45952148437499,5.188085937500034],[-60.40878906249998,5.21015625],[-60.33520507812497,5.199316406250006],[-60.241650390624926,5.257958984374966],[-60.14204101562498,5.238818359374974],[-59.990673828124955,5.082861328124991],[-60.14863281249998,4.533251953125031],[-59.69970703125,4.353515625]]]]},"properties":{"name":"Brazil","childNum":17}},{"geometry":{"type":"Polygon","coordinates":[[[-59.493310546874994,13.081982421874997],[-59.611328125,13.102099609374989],[-59.6466796875,13.303125],[-59.427636718749994,13.152783203124997],[-59.493310546874994,13.081982421874997]]]},"properties":{"name":"Barbados","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[115.02675781250005,4.899707031249989],[115.1400390625,4.899755859374991],[115.290625,4.352587890624989],[115.10703125000006,4.390429687499974],[115.02675781250005,4.899707031249989]]],[[[115.02675781250005,4.899707031249989],[114.74667968750006,4.718066406250017],[114.84023437500005,4.393212890625009],[114.65410156250007,4.037646484375045],[114.0638671875,4.592675781249966],[114.42441406250006,4.660400390625],[114.99541015625002,5.022363281250023],[115.02675781250005,4.899707031249989]]]]},"properties":{"name":"Brunei","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[91.63193359375003,27.759960937499997],[91.5947265625,27.557666015624996],[91.74306640625002,27.442529296874994],[91.85126953125001,27.438623046874994],[91.95097656249999,27.458300781249996],[91.99082031250003,27.4501953125],[92.044921875,27.364697265624997],[92.08339843750002,27.290625],[92.03115234375002,27.214306640624997],[92.00253906250003,27.147363281249994],[91.99228515625003,27.099902343749996],[91.99863281250003,27.079296875],[92.03085937500003,27.040820312499996],[92.06816406249999,26.9751953125],[92.07343750000001,26.91484375],[92.04970703125002,26.874853515625],[91.99833984374999,26.85498046875],[91.84208984374999,26.852978515624997],[91.67158203125001,26.802001953125],[91.517578125,26.807324218749997],[91.45585937499999,26.866894531249997],[91.4267578125,26.867089843749994],[91.28652343750002,26.789941406249994],[90.73964843750002,26.771679687499997],[90.34589843750001,26.890332031249997],[90.2060546875,26.847509765625],[90.12294921875002,26.754589843749997],[89.94316406249999,26.723925781249996],[89.76386718750001,26.7015625],[89.60996093750003,26.719433593749997],[89.58613281250001,26.778955078124994],[89.33212890625003,26.8486328125],[89.14824218749999,26.816162109375],[89.04091796875002,26.865039062499996],[88.85761718750001,26.961474609374996],[88.73876953125,27.175585937499996],[88.76035156250003,27.218115234375],[88.88164062499999,27.2974609375],[88.89140624999999,27.316064453124994],[88.94755859374999,27.464013671874994],[89.48066406250001,28.059960937499994],[89.53691406249999,28.107421875],[89.65273437500002,28.15830078125],[89.74980468749999,28.188183593749997],[89.81689453125,28.256298828124997],[89.89785156250002,28.294140625],[89.98105468750003,28.311181640624994],[90.34824218750003,28.243945312499996],[90.36298828125001,28.216503906249997],[90.33310546875003,28.093994140625],[90.35273437500001,28.080224609374994],[90.47734374999999,28.070849609374996],[90.63007812500001,28.078564453124997],[90.71572265625002,28.071728515624997],[91.02080078124999,27.970068359375],[91.07773437500003,27.974462890625],[91.22587890624999,28.071240234374997],[91.27304687500003,28.078369140625],[91.30683593750001,28.064013671874996],[91.36757812500002,28.021630859374994],[91.64189453124999,27.923242187499994],[91.63193359375003,27.759960937499997]]]},"properties":{"name":"Bhutan","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[25.2587890625,-17.793554687500006],[25.242285156250006,-17.969042968750003],[25.939355468750023,-18.93867187500001],[26.168066406250006,-19.53828125000001],[27.17822265625,-20.10097656250001],[27.28076171875,-20.47871093750001],[27.679296875,-20.503027343750006],[27.66943359375,-21.064257812500003],[28.014062500000023,-21.55419921875],[29.02558593750001,-21.796875],[29.042382812500023,-22.018359375],[29.237207031250023,-22.07949218750001],[29.315234375000017,-22.15771484375],[29.36484375,-22.193945312500006],[29.1298828125,-22.21328125],[29.013476562500017,-22.278417968750006],[28.94580078125,-22.395117187500006],[28.83984375,-22.480859375],[28.21015625000001,-22.693652343750003],[27.812597656250006,-23.108007812500006],[27.7685546875,-23.14892578125],[27.085546875,-23.577929687500003],[26.835058593750006,-24.240820312500006],[26.617773437500006,-24.3955078125],[26.451757812500006,-24.58271484375001],[26.39716796875001,-24.613574218750003],[26.130859375,-24.671484375],[26.031835937500006,-24.702441406250003],[25.912109375,-24.74746093750001],[25.518164062500006,-25.66279296875001],[25.21337890625,-25.75625],[24.33056640625,-25.74287109375001],[24.19296875,-25.632910156250006],[23.969531250000017,-25.626074218750006],[23.89375,-25.600878906250003],[23.389257812500006,-25.29140625],[23.148730468750017,-25.288671875],[22.878808593750023,-25.45791015625001],[22.59765625,-26.13271484375001],[22.548632812500017,-26.17841796875001],[22.47089843750001,-26.219042968750003],[22.217578125000017,-26.38886718750001],[22.090917968750006,-26.580175781250006],[22.01093750000001,-26.635839843750006],[21.78828125000001,-26.710058593750006],[21.738085937500017,-26.80683593750001],[21.694726562500023,-26.840917968750006],[20.73984375,-26.84882812500001],[20.641406250000017,-26.7421875],[20.79316406250001,-25.915625],[20.4306640625,-25.147070312500006],[19.98046875,-24.77675781250001],[19.977343750000017,-22.00019531250001],[20.9794921875,-21.9619140625],[20.97412109375,-18.31884765625],[23.219335937500006,-17.99970703125001],[23.599707031250006,-18.4599609375],[24.243945312500017,-18.0234375],[24.530566406250017,-18.052734375],[24.909082031250023,-17.821386718750006],[25.2587890625,-17.793554687500006]]]},"properties":{"name":"Botswana","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[22.86005859375001,10.919677734375],[23.646289062500017,9.822900390624994],[23.62265625,9.340625],[23.46826171875,9.11474609375],[23.53730468750001,8.815820312499994],[24.147363281250023,8.665625],[24.291406250000023,8.29140625],[24.853320312500017,8.137548828124991],[25.20039062500001,7.807910156249989],[25.18134765625001,7.557226562499991],[25.27890625,7.427490234375],[26.36181640625,6.635302734374989],[26.30859375,6.455322265625],[26.514257812500006,6.069238281249994],[27.143945312500023,5.722949218749989],[27.4033203125,5.109179687499989],[27.071875,5.199755859374989],[26.822070312500017,5.062402343749994],[25.52509765625001,5.31210937499999],[25.065234375000017,4.967431640624994],[24.31982421875,4.994140625],[23.41718750000001,4.663134765624989],[22.864550781250017,4.723876953125],[22.422167968750017,4.134960937499997],[20.55810546875,4.462695312499989],[20.226367187500017,4.829638671874989],[19.806542968750023,5.089306640624997],[19.5009765625,5.127490234374989],[19.06855468750001,4.891406249999989],[18.594140625000023,4.346240234374989],[18.6103515625,3.478417968749994],[18.474414062500017,3.622998046874997],[18.160937500000017,3.499804687499989],[17.491601562500023,3.687304687499989],[16.610742187500023,3.50537109375],[16.468554687500017,2.831738281249997],[16.183398437500017,2.270068359374989],[16.0634765625,2.90859375],[15.128710937500017,3.826904296875],[15.063574218750006,4.284863281249997],[14.73125,4.602392578124991],[14.56298828125,5.279931640624994],[14.616894531250011,5.865136718749994],[14.43115234375,6.038720703124994],[14.7392578125,6.27978515625],[15.206738281250011,7.206152343749991],[15.480078125,7.523779296874991],[15.957617187500006,7.507568359375],[16.37890625,7.683544921874997],[16.545312500000023,7.865478515625],[16.784765625,7.550976562499997],[17.6494140625,7.98359375],[18.56416015625001,8.0458984375],[19.108691406250017,8.656152343749994],[18.886035156250017,8.836035156249991],[18.95625,8.938867187499994],[20.342089843750017,9.127099609374994],[20.773242187500017,9.405664062499994],[21.682714843750006,10.289843749999989],[21.771484375,10.642822265625],[22.49384765625001,10.996240234374994],[22.86005859375001,10.919677734375]]]},"properties":{"name":"Central African Rep.","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-59.78759765624997,43.939599609374994],[-60.11748046874996,43.95336914062506],[-59.727148437500006,44.002832031249994],[-59.78759765624997,43.939599609374994]]],[[[-66.7625,44.68178710937502],[-66.8970703125,44.62890625],[-66.80214843749994,44.80537109374998],[-66.7625,44.68178710937502]]],[[[-60.961572265624966,45.48994140625001],[-61.081738281249926,45.55781249999998],[-60.91245117187498,45.56728515625005],[-60.961572265624966,45.48994140625001]]],[[[-73.69531249999997,45.58549804687502],[-73.85771484375002,45.573583984375006],[-73.57236328124998,45.69448242187502],[-73.69531249999997,45.58549804687502]]],[[[-73.56650390625003,45.469091796875034],[-73.960546875,45.44140624999997],[-73.68745117187498,45.561425781249994],[-73.47607421874997,45.704736328124994],[-73.56650390625003,45.469091796875034]]],[[[-61.10517578124998,45.94472656250002],[-60.86523437499997,45.983496093750006],[-61.05903320312501,45.70336914062497],[-60.73789062499995,45.75141601562498],[-60.46059570312494,45.96870117187501],[-60.733300781249994,45.956591796875045],[-60.297949218750034,46.31123046874998],[-60.22646484374994,46.19555664062506],[-59.86503906249993,46.159521484375006],[-59.8421875,45.941552734374994],[-60.67294921874995,45.59082031250006],[-61.28369140624994,45.573876953124966],[-61.44980468749995,45.71621093750002],[-61.40864257812501,46.17036132812498],[-60.87016601562499,46.796777343749966],[-60.40820312500003,47.00351562499998],[-60.332910156249966,46.737011718749955],[-60.49453125000002,46.270263671875],[-61.10517578124998,45.94472656250002]]],[[[-63.811279296875,46.46870117187501],[-63.68144531249993,46.561914062499994],[-63.12939453125,46.422216796875034],[-62.02373046874999,46.42158203125001],[-62.52607421875001,46.20288085937503],[-62.531347656250034,45.977294921875],[-63.02207031249998,46.06660156249998],[-62.89453125000003,46.12358398437496],[-63.056347656249955,46.22392578124996],[-62.97846679687498,46.31635742187498],[-63.21347656249998,46.15986328124998],[-63.641015624999966,46.23046874999997],[-63.758642578125034,46.397607421874994],[-64.11083984375003,46.425439453124994],[-64.13603515624999,46.59970703125006],[-64.388037109375,46.640869140625],[-63.99355468750002,47.06157226562502],[-64.08789062499997,46.77543945312499],[-63.811279296875,46.46870117187501]]],[[[-61.91411132812496,47.284521484375034],[-61.77255859374998,47.25981445312499],[-62.00830078124994,47.23427734375002],[-61.924707031249966,47.425146484375006],[-61.3955078125,47.63764648437504],[-61.91411132812496,47.284521484375034]]],[[[-54.227148437500034,47.44135742187501],[-54.32597656250002,47.408105468749994],[-54.12817382812494,47.646826171875034],[-54.227148437500034,47.44135742187501]]],[[[-74.70888671874997,45.0038574218751],[-73.55810546875,45.425097656250045],[-73.1595703125,46.01005859375002],[-72.10927734374997,46.55122070312504],[-71.26118164062495,46.75625],[-70.51948242187501,47.032519531250045],[-69.47104492187503,47.96728515625006],[-68.23818359374994,48.62641601562504],[-66.17817382812493,49.21313476562503],[-64.83632812499994,49.191748046875006],[-64.2162109375,48.873632812500034],[-64.51372070312493,48.84111328124999],[-64.24609374999994,48.69111328124998],[-64.34882812500001,48.423193359375034],[-65.259423828125,48.02124023437503],[-65.92670898437495,48.188867187499994],[-66.70439453125002,48.0224609375],[-66.35961914062494,48.06064453125006],[-65.84941406250002,47.91103515625005],[-65.60722656249996,47.67001953125006],[-65.00166015624995,47.84682617187502],[-64.70322265625,47.72485351562503],[-64.91220703125003,47.36865234375003],[-65.31889648437502,47.101220703124994],[-64.831396484375,47.06079101562503],[-64.88251953124993,46.822851562500034],[-64.54150390625,46.240332031250034],[-63.91591796875002,46.165820312500045],[-63.831933593749966,46.107177734375],[-64.05639648437503,46.021337890625006],[-63.70288085937494,45.858007812500034],[-62.70068359374997,45.740576171875006],[-62.750097656250006,45.64824218750002],[-62.483056640624966,45.62182617187506],[-61.955517578124955,45.86816406249997],[-61.776513671874994,45.655615234375006],[-61.49228515624998,45.68701171875],[-61.350488281249966,45.57368164062501],[-61.28198242187494,45.441064453124994],[-61.46098632812502,45.36669921875003],[-61.03154296875002,45.29174804687506],[-63.306298828124994,44.64257812500003],[-63.60400390624997,44.68320312500006],[-63.60976562499999,44.47998046875006],[-63.999707031249926,44.64492187499999],[-64.10087890624993,44.487451171874966],[-64.1669921875,44.58666992187503],[-64.28608398437493,44.55034179687499],[-64.27568359374993,44.33408203124998],[-65.48168945312497,43.51806640625],[-65.73813476562498,43.56074218750001],[-65.88691406250001,43.79521484374999],[-66.125732421875,43.813818359375034],[-66.19306640624995,44.143847656250045],[-65.86801757812498,44.56879882812501],[-66.14638671875002,44.43593750000005],[-66.090625,44.50493164062499],[-64.44814453125,45.33745117187502],[-64.13549804687497,45.023046875],[-64.09316406249997,45.21708984375002],[-63.368017578125034,45.36479492187502],[-64.87314453124998,45.35458984375006],[-64.31464843749998,45.83569335937503],[-64.48222656250002,45.80634765624998],[-64.63271484375002,45.94663085937506],[-64.77851562499998,45.63842773437497],[-65.88447265624995,45.22290039062506],[-66.10976562500002,45.316601562499955],[-66.02656249999995,45.417578125],[-66.43984374999994,45.09589843750001],[-66.87246093749997,45.067285156249966],[-67.12485351562498,45.16943359375],[-67.366943359375,45.17377929687498],[-67.43266601562496,45.603125],[-67.80224609374994,45.7275390625],[-67.806787109375,47.08281249999999],[-68.23549804687502,47.34594726562503],[-68.93720703124998,47.21123046875002],[-69.0501953125,47.426611328125034],[-69.24287109374998,47.46298828124998],[-70.00771484375002,46.70893554687501],[-70.296240234375,45.90610351562506],[-70.86503906249999,45.27070312500001],[-71.327294921875,45.29008789062496],[-71.51752929687495,45.00756835937497],[-74.663232421875,45.00390625000003],[-74.70888671874997,45.0038574218751]]],[[[-126.09208984374995,49.35400390625003],[-126.06401367187499,49.26362304687501],[-126.22963867187498,49.29565429687506],[-126.09208984374995,49.35400390625003]]],[[[-54.55439453125001,49.5888671875],[-54.786523437499966,49.496142578125045],[-54.86357421875002,49.576074218749966],[-54.55439453125001,49.5888671875]]],[[[-54.093701171874955,49.74443359374999],[-53.98066406250001,49.66196289062498],[-54.28613281249997,49.595361328124994],[-54.27763671875002,49.71147460937502],[-54.093701171874955,49.74443359374999]]],[[[-126.64121093749999,49.605810546875006],[-126.93857421874999,49.71845703125004],[-126.92583007812497,49.837744140625006],[-126.73813476562502,49.84365234375005],[-126.64121093749999,49.605810546875006]]],[[[-61.801123046875034,49.093896484374966],[-63.04150390624994,49.224951171875034],[-64.485205078125,49.88696289062497],[-64.13144531249995,49.94165039062503],[-62.858544921874966,49.70546875000005],[-61.817138671875,49.28354492187498],[-61.69614257812495,49.139013671875006],[-61.801123046875034,49.093896484374966]]],[[[-125.18413085937497,50.09711914062498],[-125.301171875,50.4140625],[-125.07402343750002,50.22065429687501],[-125.18413085937497,50.09711914062498]]],[[[-127.19731445312495,50.640380859375],[-125.48208007812501,50.316796874999966],[-124.83061523437499,49.53007812500002],[-123.99580078125,49.22402343750002],[-123.49702148437498,48.58208007812499],[-123.38989257812501,48.67021484374999],[-123.31064453125003,48.41103515625002],[-123.57314453124995,48.32280273437499],[-123.91694335937501,48.386572265625034],[-125.12070312500002,48.76079101562496],[-124.84965820312496,49.02827148437501],[-124.81264648437497,49.212646484375],[-124.92734374999998,49.01420898437499],[-125.489453125,48.933789062499955],[-125.82851562499998,49.09184570312499],[-125.64423828125001,49.18579101562506],[-125.95166015625001,49.24804687500003],[-125.93540039062499,49.401464843750006],[-126.51914062499999,49.396777343750045],[-126.54189453125001,49.590478515624966],[-126.13408203124997,49.672314453124955],[-126.52524414062499,49.71958007812498],[-126.90332031250001,49.94414062499999],[-127.114306640625,49.879736328125034],[-127.24980468749999,50.13798828124996],[-127.34941406249995,50.05195312500001],[-127.46713867187503,50.163427734375006],[-127.86391601562495,50.12773437500002],[-127.90585937499998,50.44521484375002],[-127.48652343749998,50.404638671875034],[-127.46591796874996,50.58310546875006],[-128.05834960937494,50.498486328124955],[-128.34604492187503,50.744238281250006],[-127.91806640624998,50.86054687500001],[-127.19731445312495,50.640380859375]]],[[[-55.45874023437494,51.53652343750005],[-55.58339843749994,51.38857421875002],[-56.031103515625034,51.328369140625],[-55.8,51.033300781250034],[-56.732324218749966,50.007714843749994],[-56.822167968749966,49.613476562499955],[-56.179394531249955,50.114990234375],[-56.161279296874994,49.94013671874998],[-55.50292968749997,49.98315429687503],[-56.14018554687496,49.61914062500006],[-55.869824218749955,49.67016601562506],[-56.08730468750002,49.45195312499999],[-55.375927734374955,49.48974609374997],[-55.34384765624998,49.37290039062506],[-55.22954101562496,49.508154296875006],[-55.35317382812502,49.07944335937506],[-54.50219726562503,49.52734375],[-54.44824218749997,49.329443359375006],[-53.957714843749955,49.44184570312498],[-53.61943359374996,49.321630859375006],[-53.57343750000001,49.141210937500034],[-54.16127929687494,48.787695312500034],[-53.852880859375006,48.81132812499996],[-53.966015624999955,48.70668945312505],[-53.70634765624999,48.65551757812503],[-54.11445312499998,48.393603515625045],[-53.027587890625,48.634716796874955],[-53.1357421875,48.40185546875003],[-53.60976562500002,48.20771484375001],[-53.56943359374998,48.088085937499955],[-53.869580078124926,48.019677734374966],[-53.63823242187496,48.01464843750003],[-53.863671874999966,47.787011718749994],[-53.67236328125,47.64824218749999],[-53.28271484375,47.99785156249996],[-52.86601562499993,48.11298828124998],[-53.16982421875002,47.51210937500005],[-52.945019531249955,47.55283203124998],[-52.782421874999955,47.769433593749966],[-52.653662109375034,47.549414062500006],[-53.11484375,46.65581054687502],[-53.32304687499996,46.71835937499998],[-53.589794921874955,46.638867187499955],[-53.59736328124998,47.14599609374997],[-54.00957031249993,46.839599609375],[-54.173730468749994,46.88037109375003],[-53.84951171875002,47.440332031249994],[-53.98901367187503,47.756201171875034],[-54.191845703124955,47.85981445312501],[-54.488134765625006,47.40385742187502],[-54.47392578124996,47.54707031249998],[-54.856640624999955,47.385009765625],[-55.31572265624993,46.905712890624955],[-55.78852539062498,46.86723632812502],[-55.91923828124996,47.01689453124996],[-55.49150390624996,47.16064453125003],[-54.78461914062501,47.664746093749955],[-55.366308593750034,47.66108398437501],[-55.57612304687498,47.46523437499999],[-56.12724609374999,47.50283203125002],[-55.867089843749994,47.592333984375045],[-55.85791015625,47.81918945312498],[-56.774121093749955,47.56499023437499],[-58.33686523437501,47.73085937500002],[-59.11694335937494,47.57070312499999],[-59.32065429687498,47.736914062500006],[-59.272070312500034,47.99555664062504],[-58.330224609374994,48.52211914062502],[-59.16767578124998,48.558496093749966],[-58.84179687500003,48.74643554687498],[-58.906445312499955,48.65019531249999],[-58.716455078124994,48.59804687500002],[-58.403662109375034,49.08432617187498],[-57.99052734374996,48.987939453124966],[-58.09892578124993,49.07744140624999],[-57.98007812499998,49.229638671874994],[-58.19091796875003,49.25874023437498],[-58.21337890625,49.38666992187501],[-58.01582031249998,49.54248046874997],[-57.79130859374999,49.48999023437503],[-57.92617187499999,49.700830078124994],[-57.4326171875,50.50581054687504],[-57.179589843749966,50.614843750000034],[-57.29799804687502,50.69873046874997],[-57.03593750000002,51.01083984374998],[-56.68242187500002,51.332763671875],[-56.025585937499955,51.56835937500006],[-55.6904296875,51.471337890624994],[-55.666406249999966,51.57890624999999],[-55.45874023437494,51.53652343750005]]],[[[-127.92465820312498,51.47387695312497],[-128.14877929687498,51.62670898437503],[-128.03173828125006,51.708398437499966],[-127.92465820312498,51.47387695312497]]],[[[-79.38427734374997,51.951953125000045],[-79.64375,52.01005859374996],[-79.27128906249996,52.086816406249966],[-79.38427734374997,51.951953125000045]]],[[[-128.36875,52.40087890625],[-128.43979492187503,52.696386718750006],[-128.24726562499998,52.784375],[-128.36875,52.40087890625]]],[[[-80.73168945312494,52.74726562499998],[-82.03925781249998,53.04990234374998],[-81.84731445312494,53.18627929687497],[-81.135595703125,53.20581054687503],[-80.73168945312494,52.74726562499998]]],[[[-131.7537109375,53.195556640625],[-131.63466796874997,52.92216796874999],[-131.97177734374998,52.87983398437498],[-131.45522460937502,52.70170898437502],[-131.59057617187494,52.578222656250006],[-131.25971679687495,52.415917968749966],[-131.31992187499998,52.30307617187498],[-131.142626953125,52.291113281250034],[-131.221533203125,52.15361328124999],[-132.16508789062493,52.783300781250034],[-132.14375,52.99931640624999],[-132.54677734374997,53.1375],[-131.7537109375,53.195556640625]]],[[[-128.55244140624998,52.93974609375002],[-128.50991210937502,52.51860351562502],[-128.678955078125,52.289648437500006],[-128.74633789062494,52.763378906249955],[-128.89980468749997,52.67382812500003],[-129.175927734375,52.964941406250006],[-129.033251953125,53.27993164062505],[-128.63266601562498,53.1125],[-128.55244140624998,52.93974609375002]]],[[[-129.167724609375,53.11787109374998],[-129.32387695312502,53.142138671875045],[-129.23818359374997,53.33007812500006],[-129.167724609375,53.11787109374998]]],[[[-129.84858398437498,53.167919921874955],[-130.51757812500003,53.54423828124999],[-130.45200195312498,53.63115234375002],[-129.94472656250002,53.436376953125034],[-129.75483398437498,53.244775390624994],[-129.84858398437498,53.167919921874955]]],[[[-130.236279296875,53.95854492187502],[-130.38422851562504,53.84394531250001],[-130.703173828125,53.892236328124994],[-130.44799804687497,54.08901367187502],[-130.236279296875,53.95854492187502]]],[[[-132.65551757812503,54.12749023437496],[-132.30336914062497,54.098876953125],[-132.16611328124998,53.95522460937505],[-132.53466796875,53.651708984375034],[-132.18696289062504,53.68481445312503],[-132.134423828125,54.03427734374998],[-131.66762695312502,54.14135742187503],[-131.957421875,53.308691406250034],[-132.34726562500003,53.18920898437503],[-132.747509765625,53.310498046874955],[-132.425,53.33696289062502],[-132.84501953125,53.507714843749994],[-133.07949218749997,53.837011718750034],[-133.04838867187493,54.15893554687497],[-132.65551757812503,54.12749023437496]]],[[[-130.92714843749997,54.47905273437499],[-130.90683593750003,54.63178710937504],[-130.75800781249998,54.61376953125],[-130.92714843749997,54.47905273437499]]],[[[-130.57534179687497,54.769677734374966],[-130.2140625,55.02587890625003],[-130.34941406249996,54.814550781250034],[-130.57534179687497,54.769677734374966]]],[[[-79.97758789062499,56.20703125000006],[-80.057470703125,56.28735351562497],[-79.57973632812502,56.466357421875045],[-79.97758789062499,56.20703125000006]]],[[[-78.93559570312496,56.26606445312498],[-79.17548828124998,55.88505859374999],[-79.18212890625,56.21215820312503],[-79.4951171875,55.87475585937503],[-79.76474609374995,55.80678710937505],[-79.54472656249999,56.12836914062501],[-79.9875,55.89213867187502],[-79.45888671875,56.53974609374998],[-79.53632812499995,56.180078124999966],[-79.27241210937493,56.600439453125006],[-78.93559570312496,56.26606445312498]]],[[[-61.743603515624955,57.55458984375005],[-61.6375,57.41606445312499],[-62.01123046875003,57.54848632812505],[-61.743603515624955,57.55458984375005]]],[[[-79.71650390624998,57.515527343749994],[-79.80844726562498,57.44243164062502],[-79.74257812499997,57.60795898437499],[-79.71650390624998,57.515527343749994]]],[[[-69.16005859375,59.04023437500001],[-69.35283203125002,58.96074218749999],[-69.30322265625003,59.144873046875006],[-69.16005859375,59.04023437500001]]],[[[-64.40703125,60.367089843749966],[-64.44194335937496,60.2978515625],[-64.73793945312497,60.37563476562502],[-64.83642578124997,60.50102539062499],[-64.40703125,60.367089843749966]]],[[[-68.23378906250002,60.24091796875001],[-68.36787109374998,60.314746093750045],[-68.08759765624998,60.58784179687501],[-67.81884765624994,60.449511718750074],[-68.23378906250002,60.24091796875001]]],[[[-78.531640625,60.72856445312499],[-78.66889648437498,60.716894531250006],[-78.24169921875,60.818652343750045],[-78.531640625,60.72856445312499]]],[[[-64.83261718749998,61.366064453125006],[-65.43212890625,61.649511718750034],[-64.78964843750003,61.662207031250034],[-64.83261718749998,61.366064453125006]]],[[[-65.03056640624999,61.879052734374966],[-64.89658203124995,61.73330078125005],[-65.23535156249997,61.89770507812506],[-65.03056640624999,61.879052734374966]]],[[[-79.54531250000002,62.41171875000006],[-79.28647460937495,62.247656250000034],[-79.32392578124995,62.02607421875001],[-79.81611328124995,61.59462890625002],[-80.26518554687496,61.818212890625006],[-80.26005859374996,62.10903320312502],[-79.9267578125,62.39287109375002],[-79.54531250000002,62.41171875000006]]],[[[-64.82382812499998,62.558740234374994],[-64.46503906249998,62.535937500000045],[-64.47832031250002,62.417871093749966],[-64.901220703125,62.421044921874994],[-64.82382812499998,62.558740234374994]]],[[[-70.33706054687497,62.548730468749994],[-70.76606445312498,62.596875],[-71.22011718750002,62.873925781249966],[-70.44262695312497,62.73378906250002],[-70.33706054687497,62.548730468749994]]],[[[-82.00048828124997,62.95419921874998],[-82.02583007812498,62.73007812499998],[-82.56826171875002,62.403222656249994],[-83.01582031249998,62.20991210937498],[-83.69887695312497,62.16025390624998],[-83.91049804687498,62.45415039062499],[-83.37641601562498,62.904931640624994],[-82.00048828124997,62.95419921874998]]],[[[-77.87670898437497,63.470556640625034],[-77.53271484374997,63.233642578125],[-77.94243164062496,63.11440429687502],[-78.536767578125,63.423730468749994],[-77.87670898437497,63.470556640625034]]],[[[-76.67758789062503,63.393945312499966],[-77.36474609374994,63.588330078124955],[-77.13369140624997,63.68203125000002],[-76.65244140624998,63.503564453124994],[-76.67758789062503,63.393945312499966]]],[[[-84.91962890624995,65.26108398437503],[-84.50112304687497,65.45844726562501],[-84.08486328125,65.21782226562502],[-82.05,64.64428710937506],[-81.67612304687498,64.21264648437503],[-81.88710937499997,64.01640625000002],[-80.82895507812495,64.08994140625],[-80.30205078124999,63.76220703125003],[-81.04638671875003,63.461572265624966],[-82.378125,63.706787109375],[-82.46708984375002,63.92695312500001],[-83.30395507812497,64.14379882812506],[-84.63291015625,63.30922851562502],[-85.39262695312496,63.119677734375045],[-85.76894531249997,63.70034179687502],[-87.15190429687499,63.58564453125001],[-86.93203124999997,63.90166015625002],[-86.252099609375,64.13686523437497],[-86.37426757812503,64.56582031249997],[-86.074609375,65.533837890625],[-85.55468750000003,65.91865234374995],[-85.17622070312501,65.746875],[-85.23994140624993,65.51030273437499],[-84.91962890624995,65.26108398437503]]],[[[-84.67475585937498,65.575],[-85.096337890625,65.756201171875],[-85.14960937500001,66.01538085937506],[-84.75737304687496,65.85893554687505],[-84.67475585937498,65.575]]],[[[-83.72597656249997,65.796728515625],[-83.23374023437495,65.71503906249995],[-83.332421875,65.63105468749998],[-84.11826171874995,65.77177734375007],[-84.40717773437501,66.13100585937497],[-83.78696289062495,65.96577148437498],[-83.72597656249997,65.796728515625]]],[[[-108.09272460937501,67.00517578124999],[-107.80551757812493,66.99858398437507],[-107.94394531249999,66.8578125],[-108.09272460937501,67.00517578124999]]],[[[-62.681542968749966,67.05629882812502],[-62.87163085937499,67.06259765625006],[-62.41679687499996,67.18847656250003],[-62.681542968749966,67.05629882812502]]],[[[-107.89985351562497,67.40180664062495],[-107.95024414062503,67.31821289062498],[-108.15224609374997,67.429443359375],[-108.04897460937498,67.664892578125],[-107.89985351562497,67.40180664062495]]],[[[-73.621728515625,67.783837890625],[-74.573388671875,67.82866210937507],[-74.70654296875003,68.06708984374995],[-73.49375,68.00063476562502],[-73.40717773437498,67.79306640625],[-73.621728515625,67.783837890625]]],[[[-86.59555664062498,67.7359375],[-86.89252929687498,67.836572265625],[-86.95981445312503,68.10024414062497],[-86.70209960937501,68.30561523437498],[-86.42114257812497,68.18344726562503],[-86.59555664062498,67.7359375]]],[[[-75.67587890624998,68.32250976562506],[-75.078125,68.17314453124999],[-75.20195312499996,67.45917968750001],[-75.78007812499996,67.28354492187503],[-76.94418945312498,67.25029296875002],[-77.30439453125001,67.68510742187505],[-77.12587890624997,67.94707031250002],[-76.59580078124998,68.27895507812497],[-75.67587890624998,68.32250976562506]]],[[[-78.98271484374999,68.19282226562501],[-79.17475585937493,68.26445312500002],[-78.95258789062495,68.35302734375006],[-78.98271484374999,68.19282226562501]]],[[[-104.54067382812497,68.405908203125],[-105.05136718749999,68.55903320312501],[-104.60200195312503,68.56152343749997],[-104.54067382812497,68.405908203125]]],[[[-74.880859375,68.34868164062505],[-75.40024414062503,68.52548828125],[-75.28740234374996,68.68774414062503],[-74.98364257812497,68.64760742187502],[-74.880859375,68.34868164062505]]],[[[-101.84589843749994,68.58632812499997],[-102.30815429687497,68.681982421875],[-102.01337890624995,68.82539062500001],[-101.73295898437495,68.75341796875],[-101.84589843749994,68.58632812499997]]],[[[-100.21723632812497,68.80668945312502],[-100.59653320312496,68.76640625000007],[-100.56547851562495,69.02680664062501],[-100.21723632812497,68.80668945312502]]],[[[-99.99467773437502,69.01352539062503],[-100.19570312500002,68.991455078125],[-100.153125,69.12949218750003],[-99.99467773437502,69.01352539062503]]],[[[-79.21064453124995,68.845458984375],[-79.24267578125,69.04926757812495],[-78.33256835937496,69.38603515624999],[-78.77919921875,68.95048828124999],[-79.21064453124995,68.845458984375]]],[[[-90.1998046875,69.419091796875],[-90.33027343749993,69.252197265625],[-90.49204101562503,69.369873046875],[-90.1998046875,69.419091796875]]],[[[-76.99536132812503,69.14375],[-77.37939453125,69.2740234375],[-77.18754882812502,69.440087890625],[-76.66884765625002,69.36616210937504],[-76.99536132812503,69.14375]]],[[[-101.171728515625,69.39707031250003],[-101.31289062499998,69.57607421875],[-101.00063476562497,69.4619140625],[-101.171728515625,69.39707031250003]]],[[[-95.51367187499997,69.57363281250002],[-95.43745117187498,69.37846679687505],[-95.73012695312502,69.34755859374997],[-95.80620117187499,69.56049804687501],[-95.89345703125,69.35175781250004],[-95.87583007812495,69.60600585937505],[-95.51367187499997,69.57363281250002]]],[[[-67.91469726562494,69.54096679687504],[-68.22138671874998,69.61674804687502],[-67.908837890625,69.68183593749995],[-67.91469726562494,69.54096679687504]]],[[[-78.02910156249993,69.71489257812502],[-78.03999023437495,69.6083984375],[-78.84819335937502,69.4828125],[-78.02910156249993,69.71489257812502]]],[[[-79.43066406250003,69.78779296874995],[-79.55283203124995,69.63085937500006],[-80.04750976562502,69.63432617187505],[-79.97783203124993,69.50966796874997],[-80.794775390625,69.68925781250005],[-80.42421875000002,69.797607421875],[-79.43066406250003,69.78779296874995]]],[[[-97.439453125,69.64267578125006],[-96.29995117187494,69.34438476562505],[-95.7513671875,68.89765624999998],[-95.26777343749998,68.82607421874997],[-96.40156249999995,68.47070312500003],[-97.47202148437498,68.543701171875],[-98.320556640625,68.84272460937498],[-98.70380859374993,68.80278320312502],[-98.90449218749995,68.93242187500005],[-99.25400390625002,68.86318359374997],[-99.49467773437493,68.95957031249998],[-99.455712890625,69.13120117187503],[-98.45595703124997,69.33466796875001],[-98.54599609375,69.57290039062497],[-98.04135742187498,69.456640625],[-98.20048828124996,69.79697265625006],[-97.79072265624998,69.86162109374999],[-97.439453125,69.64267578125006]]],[[[-86.91303710937501,70.11323242187501],[-86.55766601562499,69.99531249999995],[-87.3232421875,70.08012695312502],[-86.91303710937501,70.11323242187501]]],[[[-74.70888671874997,45.0038574218751],[-74.76245117187494,44.99907226562502],[-74.99614257812496,44.970117187499966],[-75.40126953124997,44.77226562499999],[-75.81933593749997,44.468017578125],[-76.18579101562503,44.24223632812502],[-76.819970703125,43.62880859375011],[-77.59653320312492,43.62861328125007],[-78.45825195312497,43.63149414062511],[-78.72041015624993,43.62495117187501],[-78.84555664062492,43.58334960937506],[-79.171875,43.466552734375085],[-79.0830566406249,43.33139648437509],[-79.05922851562494,43.27807617187506],[-79.066064453125,43.10610351562502],[-79.02617187499996,43.01733398437506],[-78.98076171874993,42.98061523437502],[-78.91508789062496,42.90913085937504],[-79.17373046875,42.74853515625],[-80.24755859374991,42.366015625000045],[-81.02822265624997,42.247167968750006],[-81.50732421874997,42.10346679687504],[-81.97416992187496,41.88872070312499],[-82.43906249999989,41.6748535156251],[-82.69003906249995,41.675195312499994],[-83.141943359375,41.97587890624996],[-83.10952148437497,42.25068359375001],[-82.54531249999997,42.62470703124998],[-82.19038085937495,43.47407226562501],[-82.137841796875,43.570898437500034],[-82.48505859374993,45.08374023437503],[-82.55107421874987,45.3473632812501],[-82.91933593749994,45.51796875000002],[-83.59267578125,45.81713867187506],[-83.46948242187503,45.99467773437499],[-83.61596679687503,46.116845703124994],[-83.97778320312494,46.08491210937507],[-84.12319335937497,46.50292968749997],[-84.44047851562496,46.49814453125006],[-84.66577148437503,46.54326171875002],[-84.87597656249994,46.89990234375003],[-85.07006835937497,46.97993164062498],[-85.65224609375,47.21997070312503],[-86.67216796874996,47.636425781249955],[-87.20800781249997,47.848486328125006],[-87.74389648437497,48.06054687500003],[-88.37817382812497,48.30307617187506],[-89.45566406249992,47.99624023437508],[-90.79731445312495,48.13105468750001],[-91.04345703124991,48.19370117187498],[-91.38720703124997,48.05854492187498],[-92.00517578125002,48.301855468750006],[-92.3484375,48.276611328125],[-92.41459960937493,48.276611328125],[-92.50058593749995,48.43535156250002],[-92.83671875,48.567773437499994],[-93.25795898437497,48.62885742187501],[-93.37788085937498,48.61655273437498],[-93.70771484374995,48.525439453125074],[-93.85161132812496,48.607275390625034],[-94.6208984374999,48.7426269531251],[-94.71279296874997,48.863427734374994],[-94.80346679687497,49.0029296875],[-94.86040039062493,49.258593750000045],[-94.85434570312495,49.304589843749994],[-95.15527343749997,49.3696777343751],[-95.16206054687493,48.991748046875045],[-95.39790039062493,48.99316406249997],[-96.25068359374993,48.99316406249997],[-96.67705078124993,48.99316406249997],[-97.52983398437493,48.99316406249997],[-98.80898437499995,48.99316406249997],[-104.77832031249997,48.993115234375125],[-110.7476562499999,48.993066406250136],[-116.71704101562493,48.993066406250136],[-118.84892578124993,48.993066406250136],[-119.27534179687494,48.993066406250136],[-119.70170898437495,48.99301757812495],[-120.98085937499995,48.99301757812495],[-122.78876953124994,48.99301757812495],[-122.82670898437495,49.028417968750034],[-122.9241699218749,49.07465820312504],[-122.96269531249993,49.07460937500005],[-123.06328125,48.97773437500001],[-123.22944335937493,49.260498046875085],[-122.87910156249995,49.39892578125003],[-123.27675781249997,49.34394531250001],[-123.1875,49.680322265624994],[-123.53056640624989,49.39731445312506],[-124.02861328125002,49.602880859375006],[-123.99262695312497,49.736181640625006],[-123.81718749999993,49.58657226562508],[-123.58247070312498,49.68125],[-123.87441406250005,49.736816406250114],[-123.82543945312493,50.14423828124998],[-123.94589843749995,50.18393554687509],[-123.9849121093749,49.87558593749998],[-124.28125,49.77211914062502],[-124.78237304687492,50.02011718749992],[-125.05668945312495,50.418652343750125],[-124.8598632812499,50.872412109375006],[-125.05878906249993,50.51386718749998],[-125.4763183593749,50.49716796874995],[-125.53935546874996,50.64902343749998],[-125.64130859374994,50.46621093750005],[-126.09433593749995,50.497607421875045],[-126.44746093750004,50.58774414062492],[-125.90410156250002,50.704931640625006],[-126.51435546875,50.679394531250125],[-126.37460937499995,50.83735351562498],[-126.5217773437499,50.86606445312498],[-126.51733398437497,51.0568359375001],[-126.63178710937494,50.915136718750006],[-127.057568359375,50.86752929687509],[-127.70810546875,51.15117187499996],[-127.41967773437496,51.608056640625136],[-126.69145507812502,51.70341796875002],[-127.33872070312489,51.70737304687495],[-127.66870117187497,51.47758789062502],[-127.85053710937498,51.67319335937509],[-127.79536132812493,52.19101562500006],[-127.43793945312504,52.356152343750125],[-127.24223632812496,52.39511718750009],[-126.71396484374989,52.060693359374994],[-127.19399414062498,52.45766601562502],[-126.95136718749994,52.7510253906251],[-127.01933593750002,52.8424804687501],[-127.06621093749989,52.65268554687498],[-127.79189453124994,52.28935546875002],[-128.10224609374993,51.78842773437495],[-128.3576171875,52.1588867187501],[-128.0375,52.318164062500045],[-127.94023437499996,52.545166015625085],[-128.27153320312493,52.3629882812501],[-128.05327148437487,52.91069335937496],[-128.3650390624999,52.82578125000006],[-128.52470703125002,53.1406738281251],[-129.08090820312492,53.36728515625006],[-129.1715820312499,53.53359375000002],[-128.8545898437499,53.70454101562504],[-128.90561523437492,53.559326171875114],[-128.5421386718749,53.420654296875114],[-128.13271484375002,53.417773437500045],[-127.92783203125,53.274707031250045],[-128.2072265624999,53.483203125000074],[-128.67553710937494,53.55458984375005],[-128.76367187500003,53.746875],[-128.5321289062499,53.85810546875007],[-128.959375,53.84145507812505],[-129.2578613281249,53.417968750000085],[-129.56372070312506,53.251464843750114],[-130.33525390625002,53.723925781250074],[-130.04331054687495,54.13354492187503],[-129.62602539062493,54.23027343750002],[-130.08422851562503,54.18139648437503],[-130.4302734375,54.42099609374998],[-129.56064453124995,55.46254882812508],[-129.79516601562503,55.559570312500114],[-130.04848632812494,55.05727539062511],[-130.01406249999997,55.950537109375006],[-130.09785156249995,56.10927734375002],[-130.41313476562487,56.12250976562507],[-130.47709960937496,56.230566406250034],[-130.649072265625,56.26367187500003],[-131.471875,56.55673828125006],[-131.82426757812496,56.58999023437508],[-131.86616210937495,56.792822265625006],[-132.1042968749999,56.85678710937509],[-132.062890625,56.95336914062503],[-132.33798828124992,57.07944335937498],[-132.27939453124998,57.14536132812506],[-132.23217773437494,57.198535156250074],[-132.30166015625005,57.2763183593751],[-132.44248046874986,57.40673828125003],[-132.55048828124995,57.499902343749994],[-133.00141601562495,57.948974609375],[-133.27529296875,58.22285156250004],[-133.54638671874997,58.50346679687499],[-134.21850585937503,58.849902343750045],[-134.32963867187505,58.93969726562506],[-134.39306640625,59.009179687499994],[-134.67724609374997,59.19926757812499],[-134.94375,59.28828125000001],[-135.05102539062491,59.57866210937502],[-135.36787109374998,59.743310546874994],[-135.70258789062504,59.72875976562506],[-136.3218261718749,59.604833984375034],[-136.27797851562494,59.48032226562506],[-136.46635742187493,59.459082031250006],[-136.57875976562494,59.15224609375002],[-136.81328125000002,59.15004882812511],[-137.12622070312491,59.04096679687507],[-137.2775390624999,58.988183593749994],[-137.43857421874995,58.903125],[-137.52089843749994,58.91538085937506],[-137.59331054687493,59.22626953124998],[-138.317626953125,59.611132812500074],[-138.86875,59.94575195312501],[-139.18515624999986,60.083593750000034],[-139.13696289062494,60.17270507812506],[-139.07924804687497,60.279443359375136],[-139.07924804687497,60.3437011718751],[-139.23476562499997,60.339746093749994],[-139.67631835937505,60.32832031249998],[-139.97329101562497,60.183154296875074],[-140.45283203125004,60.29970703125002],[-140.5254394531249,60.21835937499995],[-140.76274414062505,60.25913085937509],[-141.00214843750004,60.300244140625125],[-141.00214843750004,60.884667968749994],[-141.00214843750004,61.761279296875045],[-141.00214843750004,63.22226562499998],[-141.00214843750004,64.09887695312506],[-141.00214843750004,65.55991210937498],[-141.00214843750004,66.43652343750006],[-141.00214843750004,67.89755859374998],[-141.00214843750004,68.77416992187506],[-141.00214843750004,69.65078125000011],[-139.18154296874997,69.51552734375008],[-137.25996093749998,68.96411132812503],[-136.12236328124993,68.88222656250002],[-135.258837890625,68.68432617187503],[-135.93901367187487,68.9741699218751],[-135.575537109375,69.02695312500003],[-135.91020507812487,69.11147460937502],[-135.6914550781249,69.31118164062502],[-135.29282226562486,69.30786132812506],[-135.1408203124999,69.46782226562496],[-134.45683593749993,69.47763671875],[-134.40893554687494,69.68178710937502],[-133.87978515624997,69.50771484375011],[-134.17431640624991,69.25283203125005],[-133.16313476562496,69.43388671874999],[-132.91533203125002,69.62963867187506],[-132.40390625,69.65874023437496],[-132.48847656249993,69.73808593749996],[-132.16342773437498,69.70498046875014],[-131.13637695312497,69.90688476562505],[-130.66547851562495,70.12705078124998],[-129.944970703125,70.09091796875006],[-129.675634765625,70.19296875000009],[-129.64829101562495,69.9977539062501],[-130.83208007812487,69.65146484375006],[-131.9377929687499,69.5347167968751],[-132.8174804687499,69.20576171875004],[-133.41831054687492,68.84428710937493],[-133.138037109375,68.74658203125011],[-133.33666992187497,68.83525390625005],[-132.57763671874997,68.84780273437514],[-132.71894531249998,69.07919921875],[-131.78837890625002,69.43198242187495],[-131.32470703124997,69.36118164062509],[-131.06342773437504,69.45068359375003],[-130.97065429687495,69.20908203125],[-130.1176269531249,69.720068359375],[-128.89892578124994,69.96616210937506],[-129.15791015624995,69.80009765624999],[-129.05434570312502,69.70107421875005],[-128.85302734375003,69.7510253906251],[-127.68378906249994,70.26035156249995],[-128.17011718749998,70.41845703125],[-127.99101562499992,70.57382812500003],[-127.22597656249992,70.29614257812497],[-126.25043945312495,69.54526367187492],[-125.52495117187495,69.35156250000009],[-125.171875,69.42797851562503],[-125.35693359374991,69.62597656250003],[-124.767919921875,69.99003906249996],[-124.99038085937494,70.02661132812511],[-124.55502929687488,70.15122070312509],[-124.40693359374991,69.76743164062506],[-124.12460937499995,69.6899902343751],[-124.33808593749991,69.36484374999995],[-123.5284179687499,69.38935546874995],[-123.02578125,69.81000976562504],[-122.07006835937499,69.81616210937506],[-120.96245117187502,69.66040039062511],[-120.13999023437488,69.38056640625013],[-117.22695312499998,68.913427734375],[-116.05947265625,68.83701171875006],[-116.2434082031249,68.9740722656251],[-115.44228515624994,68.94091796875009],[-114.62016601562496,68.74609375],[-113.96440429687495,68.39907226562502],[-114.09594726562491,68.26679687500007],[-114.76528320312494,68.27021484375004],[-115.12705078124992,68.13203124999995],[-115.43447265624994,67.90234375000006],[-115.13320312499994,67.819189453125],[-112.50302734374993,67.6819335937501],[-110.9900390624999,67.79082031250007],[-110.07392578124995,67.99291992187506],[-109.63037109374991,67.73271484374996],[-109.03803710937504,67.69116210937503],[-108.85200195312497,67.42197265625009],[-108.61333007812493,67.59804687500008],[-107.98872070312495,67.2563964843751],[-107.99130859374995,67.09516601562513],[-108.49604492187493,67.09228515625006],[-107.25947265624998,66.39853515624995],[-107.71035156250001,66.74003906250007],[-107.7250976562499,66.98413085937506],[-107.15649414062497,66.88173828124997],[-107.9583984375,67.81860351562506],[-107.79829101562498,68.03691406249996],[-106.42426757812491,68.20058593750008],[-105.7501953125,68.59228515625011],[-106.45805664062496,68.51645507812495],[-106.60849609374988,68.35737304687504],[-107.61933593749994,68.3310546875],[-107.73417968749989,68.17373046875011],[-108.3228027343749,68.15410156250002],[-108.71811523437488,68.29746093750009],[-108.31347656249996,68.61079101562498],[-106.16445312499992,68.91987304687507],[-105.68559570312489,68.82817382812505],[-105.3774414062499,68.413818359375],[-104.65317382812488,68.23007812500003],[-104.48681640624991,68.06318359374998],[-103.47412109374993,68.11503906250005],[-102.32036132812489,67.73564453125005],[-101.55498046874992,67.69316406250007],[-100.21293945312489,67.83857421875004],[-98.92045898437502,67.72578124999998],[-98.41210937499991,67.80717773437505],[-98.63154296875004,68.0725585937501],[-97.45493164062486,67.61699218750002],[-97.20654296874989,67.85507812500003],[-97.73911132812495,67.97817382812505],[-98.19252929687494,67.92299804687502],[-98.65048828124989,68.36352539062506],[-98.21855468750002,68.31743164062507],[-97.7942382812499,68.38759765625],[-97.9250976562499,68.523681640625],[-97.41035156249993,68.49653320312498],[-96.97670898437497,68.25541992187505],[-96.43066406249991,68.3105957031251],[-96.72207031250005,68.03876953124998],[-95.9703125,68.24912109375],[-96.36914062499991,67.50976562500003],[-96.14145507812489,67.27182617187503],[-95.71992187499998,67.31679687500014],[-95.77768554687495,67.18461914062505],[-95.41591796875005,67.15556640624999],[-95.41889648437504,67.01323242187493],[-96.42255859374995,67.05175781249997],[-95.7875488281249,66.616796875],[-96.03686523437489,66.9375],[-95.39965820312503,66.94946289062509],[-95.25874023437493,67.26254882812492],[-95.65048828124986,67.73745117187505],[-95.46069335937503,68.02138671875],[-94.74443359374993,68.07089843749995],[-93.44892578124998,68.61889648437503],[-93.85244140624994,69.00034179687495],[-94.06489257812495,68.78476562500006],[-94.600439453125,68.80322265625011],[-94.08364257812497,69.12309570312507],[-94.254736328125,69.31376953125002],[-93.61948242187492,69.41699218750009],[-93.74853515624991,69.2261230468751],[-93.5322753906249,69.48090820312495],[-94.2708007812499,69.45512695312505],[-94.63383789062496,69.64965820312506],[-94.82250976562494,69.577783203125],[-95.96494140624989,69.80278320312499],[-96.5513671875,70.21030273437506],[-96.29770507812492,70.51137695312511],[-95.87861328124998,70.54897460937514],[-95.88632812499986,70.69428710937507],[-96.25800781249993,70.64228515625013],[-96.54892578124995,70.80874023437511],[-96.44658203124996,71.23989257812502],[-96.06201171874997,71.41386718749993],[-95.5642578124999,71.33676757812503],[-95.40625,71.49165039062498],[-95.87231445312494,71.57314453125005],[-94.73486328124994,71.98295898437507],[-94.30834960937491,71.76489257812506],[-93.74628906249998,71.742822265625],[-92.94868164062493,71.26210937500011],[-92.98144531249994,70.8522460937501],[-91.56406249999995,70.1782714843751],[-92.32050781250004,70.2353515625],[-92.51186523437494,70.10385742187503],[-91.976708984375,70.03867187500009],[-92.88779296874989,69.66821289062511],[-92.31166992187494,69.67290039062499],[-91.91196289062495,69.53125],[-91.20180664062494,69.64477539062494],[-91.43994140624997,69.52568359375002],[-90.4155761718749,69.45698242187507],[-90.89228515625004,69.26728515624995],[-91.23720703125005,69.28554687500014],[-90.47900390624994,68.88115234374999],[-90.57363281250005,68.47470703124998],[-90.20478515625004,68.25747070312511],[-89.27954101562491,69.25546875000003],[-88.22353515625,68.91503906249997],[-87.81357421874986,68.34570312499997],[-87.89267578125,68.24814453125],[-88.34697265624993,68.28828125000001],[-88.313818359375,67.95034179687508],[-87.359375,67.17724609374997],[-86.56079101562491,67.48212890625007],[-85.64316406249992,68.69970703124997],[-84.86757812499994,68.77333984375005],[-85.10664062499995,68.84404296875007],[-84.86220703125,69.07397460937503],[-85.38676757812493,69.23188476562504],[-85.50737304687487,69.84526367187493],[-82.61835937499993,69.69106445312514],[-82.39023437499989,69.60087890625007],[-82.75483398437493,69.49438476562506],[-82.30986328124996,69.41000976562509],[-82.22753906249997,69.24887695312495],[-81.37783203125005,69.18564453125003],[-81.95791015624991,68.88364257812498],[-81.38090820312496,68.85004882812504],[-81.28154296874987,68.65722656250003],[-81.91484374999993,68.4587890625001],[-82.55268554687504,68.44648437500007],[-82.22241210937489,68.145263671875],[-82.0125,68.19389648437496],[-81.97646484374997,67.86201171875001],[-81.2943359375,67.497412109375],[-81.46757812499996,67.0698730468751],[-83.40644531249998,66.37124023437508],[-84.53847656249994,66.97280273437505],[-84.84575195312502,67.02871093750008],[-85.11372070312498,66.90693359375013],[-84.73774414062504,66.93359375000006],[-84.223046875,66.68247070312506],[-83.86904296875,66.2135742187501],[-84.29306640624995,66.29179687500005],[-84.628076171875,66.20771484374998],[-85.603857421875,66.56826171875005],[-86.708154296875,66.52304687500009],[-86.68510742187502,66.36040039062499],[-85.95874023437491,66.11904296875002],[-87.45288085937503,65.33896484375009],[-87.96997070312503,65.34892578124999],[-89.7494140625,65.93603515625006],[-89.88969726562487,65.86855468749997],[-91.42724609374994,65.94790039062497],[-91.04111328124989,65.82983398437509],[-90.98344726562496,65.91923828124999],[-89.92407226562497,65.78027343750011],[-88.97402343749994,65.34829101562502],[-87.02753906249995,65.19809570312498],[-88.10561523437497,64.18330078125001],[-88.81772460937489,63.99223632812499],[-89.20063476562493,64.11376953125006],[-89.13154296874998,63.96850585937494],[-89.61582031249995,64.030615234375],[-89.8113281249999,64.18056640625],[-90.04165039062494,64.14086914062509],[-89.85571289062497,63.9569824218751],[-90.16816406250004,63.978759765625085],[-90.15473632812498,63.68964843749998],[-90.81191406249991,63.580908203125034],[-91.98222656249996,63.82241210937502],[-92.33842773437496,63.787646484375045],[-93.69633789062493,64.14716796875013],[-93.55981445312491,63.865283203125074],[-93.27021484374998,63.840869140625074],[-93.37851562499992,63.94848632812497],[-92.15688476562491,63.691699218750045],[-92.46508789062491,63.55507812500011],[-91.84184570312496,63.69755859374999],[-90.97006835937489,63.442773437500136],[-90.69858398437492,63.06386718750005],[-91.44897460937503,62.804052734375034],[-92.3612792968749,62.81938476562496],[-91.93583984374993,62.59238281250009],[-92.55141601562491,62.546728515625034],[-92.76596679687492,62.34995117187509],[-92.52797851562494,62.16840820312504],[-93.20537109374993,62.364941406250125],[-92.90551757812503,62.21513671874996],[-93.3330566406249,61.93291015625002],[-93.58178710937494,61.94204101562511],[-93.31201171874997,61.76728515625004],[-93.91274414062497,61.48144531250006],[-94.509375,60.60454101562493],[-94.76171874999991,60.498242187500125],[-94.78828124999998,59.26787109374993],[-94.95732421874996,59.068847656250085],[-94.28706054687493,58.716015625000125],[-94.33222656249998,58.297363281250114],[-94.12319335937494,58.73671875000008],[-93.1787597656249,58.72563476562496],[-92.43281249999993,57.3203125],[-92.7981445312499,56.921972656250034],[-90.89746093750003,57.25693359375006],[-88.94848632812489,56.85131835937503],[-88.07509765624997,56.46728515624994],[-87.48242187499991,56.021289062500045],[-85.55932617187491,55.54018554687508],[-85.21801757812491,55.348974609375034],[-85.3652832031249,55.07929687499998],[-85.06093749999997,55.285644531250085],[-83.91059570312493,55.314648437499955],[-82.39326171874998,55.067822265625125],[-82.219384765625,54.8134765625],[-82.42416992187486,54.2445800781251],[-82.14145507812492,53.81762695312497],[-82.29155273437496,53.03071289062507],[-81.5994140624999,52.432617187500085],[-81.82788085937489,52.22421875000009],[-81.46621093749994,52.204492187500136],[-80.588037109375,51.667236328125114],[-80.4433105468749,51.38857421875002],[-80.85122070312497,51.125],[-80.47832031249993,51.30732421874998],[-80.10356445312487,51.282861328125136],[-79.34790039062494,50.76264648437504],[-79.737451171875,51.186279296875],[-79.33867187500002,51.62817382812497],[-79.04052734375003,51.46376953125005],[-78.90317382812495,51.200292968750034],[-78.73134765624994,51.497460937499994],[-78.98164062499993,51.774560546875136],[-78.44809570312495,52.26137695312502],[-78.74414062499994,52.65537109374998],[-79.10034179687497,53.65664062500005],[-78.99604492187493,54.00249023437499],[-79.241796875,54.098876953125085],[-79.14672851562491,54.16923828125002],[-79.71235351562495,54.6718261718751],[-77.77529296874994,55.291259765625],[-76.60405273437496,56.19956054687495],[-76.52558593749998,56.8917968750001],[-76.80981445312497,57.65795898437506],[-77.15678710937496,58.018896484375034],[-78.51508789062493,58.68237304687503],[-77.76069335937498,59.38002929687505],[-77.72617187499995,59.67587890624992],[-77.34907226562495,59.57895507812509],[-77.48530273437493,59.684570312500114],[-77.28920898437494,60.0220214843751],[-77.58588867187498,60.088183593750074],[-77.45288085937497,60.1458007812501],[-77.6814453124999,60.427099609375034],[-77.503564453125,60.54272460937497],[-77.7908203124999,60.63984375000004],[-77.58955078124993,60.808593750000114],[-78.18134765624995,60.81914062499996],[-77.51435546874998,61.55629882812505],[-78.02138671874997,61.8320800781251],[-78.13339843749986,62.28227539062496],[-77.372412109375,62.572509765625114],[-75.81689453124991,62.31586914062507],[-75.7898437499999,62.17958984375002],[-75.3412109375,62.312109375],[-74.63256835937497,62.115673828125125],[-74.6458007812499,62.21113281250004],[-73.70507812499991,62.47314453124994],[-72.68696289062498,62.12456054687499],[-72.771630859375,61.840429687500006],[-72.50556640624998,61.922656250000074],[-72.22612304687487,61.83159179687499],[-72.04003906249991,61.68027343750006],[-72.21586914062502,61.58725585937495],[-71.86611328125,61.68852539062499],[-71.63828124999995,61.6171875],[-71.85439453124991,61.43979492187492],[-71.42270507812489,61.158935546875085],[-70.27929687499991,61.06865234374999],[-69.99243164062491,60.8564941406251],[-69.50332031249994,61.04042968750011],[-69.40473632812493,60.84677734375009],[-69.75947265624998,60.440234375000045],[-69.67373046874994,60.07587890625007],[-70.65483398437496,60.02622070312506],[-69.73393554687493,59.918017578125045],[-69.68188476562489,59.34174804687507],[-69.3440429687499,59.303076171875006],[-69.53164062499994,58.86923828125009],[-69.64838867187493,58.82080078125],[-69.78417968749994,58.95571289062511],[-70.15434570312496,58.76059570312498],[-69.78989257812486,58.689306640625034],[-69.27109374999986,58.88393554687505],[-68.69819335937495,58.904541015625],[-68.38115234374993,58.74350585937506],[-68.22939453124994,58.48457031250007],[-68.35654296874989,58.163232421875136],[-69.04082031249996,57.902490234375136],[-68.41357421874997,58.0517578125],[-68.02104492187493,58.48530273437504],[-67.88828124999989,58.29575195312495],[-68.06386718750005,58.13896484374999],[-67.75595703124992,58.4045898437501],[-67.6782714843749,57.99111328125008],[-67.5696289062499,58.21347656250006],[-66.72216796874991,58.49101562499996],[-66.36240234374989,58.791162109374994],[-66.0023925781249,58.43120117187502],[-66.04306640624995,58.82065429687495],[-65.72099609374996,59.02377929687495],[-65.38354492187494,59.06020507812508],[-65.7,59.21333007812501],[-65.4117187499999,59.31499023437496],[-65.47509765624994,59.47031249999998],[-65.03823242187494,59.38789062500007],[-65.40742187499993,59.53935546875002],[-65.4333984374999,59.776513671874994],[-65.02817382812495,59.77070312500007],[-65.17172851562489,59.90800781249996],[-64.81733398437498,60.3310546875],[-64.49941406250005,60.26826171875001],[-64.41958007812494,60.17138671874997],[-64.76845703124997,60.01210937500005],[-64.28349609374993,60.06406249999998],[-64.22631835937491,59.741210937500085],[-64.05605468750005,59.82255859374996],[-63.7501953124999,59.51259765625005],[-63.945458984374994,59.380175781250074],[-63.775878906249915,59.277148437500045],[-63.539892578124864,59.332861328125034],[-63.41513671874995,59.194384765625074],[-63.97114257812498,59.053808593750034],[-63.24843749999991,59.068310546874955],[-63.28212890624994,58.86738281250007],[-63.05029296874997,58.87817382812494],[-62.87387695312489,58.67246093749998],[-63.537060546874926,58.329931640625006],[-63.209960937499886,58.46694335937502],[-62.593847656249864,58.47402343750005],[-62.81206054687502,58.20039062500007],[-63.26152343749993,58.014697265625074],[-62.486230468749966,58.15405273437506],[-62.30566406249997,57.97226562499995],[-61.95864257812505,57.91176757812508],[-61.9679687499999,57.61191406250009],[-62.495556640624926,57.489208984375125],[-61.92114257812497,57.42080078125005],[-61.977441406249966,57.24794921875002],[-61.33374023437494,57.01059570312498],[-61.37163085937502,56.68081054687511],[-62.497265624999926,56.80170898437504],[-61.73774414062498,56.52602539062502],[-61.940429687499886,56.423583984375114],[-61.42529296874994,56.360644531250074],[-61.713085937499955,56.230957031250114],[-61.364697265624926,56.2160156250001],[-61.30112304687495,56.04716796874999],[-61.4495117187499,55.99570312499998],[-61.08935546874997,55.86635742187511],[-60.74326171874989,55.94145507812493],[-60.56210937499995,55.727001953125125],[-60.341015624999926,55.78466796874997],[-60.40830078124995,55.649560546874994],[-60.19238281249994,55.4809082031251],[-60.617138671874955,55.060205078124994],[-59.75878906249997,55.3095703125],[-59.68906249999989,55.19633789062502],[-59.43789062500005,55.175927734375136],[-59.837792968749994,54.813964843750114],[-59.25957031249996,55.19995117187506],[-58.99711914062496,55.149462890625074],[-58.780175781249994,54.838378906250114],[-58.39814453124998,54.77412109374998],[-57.96245117187493,54.875732421875085],[-57.40449218750004,54.59086914062496],[-57.69926757812496,54.38657226562506],[-58.435205078124966,54.228125],[-58.63320312499999,54.04956054687497],[-59.8230468749999,53.83442382812504],[-60.14492187499994,53.59614257812498],[-60.395410156249994,53.653320312500085],[-60.1002929687499,53.48696289062511],[-60.329492187499966,53.26611328125006],[-58.652050781249926,53.97788085937495],[-57.935986328124955,54.09116210937492],[-58.31748046874989,54.11445312500007],[-58.192089843749926,54.228173828125136],[-57.4160644531249,54.162744140625136],[-57.134960937499926,53.79184570312506],[-57.524072265624966,53.61142578125006],[-57.331738281249955,53.469091796875034],[-56.84086914062496,53.73945312500004],[-56.46499023437505,53.76503906250011],[-55.96611328125002,53.4711425781251],[-55.79794921874995,53.211962890625045],[-55.80283203124989,52.64316406249998],[-56.324902343749926,52.54453124999998],[-55.74648437499994,52.4745605468751],[-55.7771484374999,52.3642578125],[-56.01171874999997,52.394482421875125],[-55.695214843749994,52.13779296875006],[-56.97597656250005,51.45766601562505],[-58.510351562500006,51.295068359375136],[-59.88632812499992,50.316406250000085],[-61.72485351562503,50.10405273437499],[-61.91953124999989,50.2328613281251],[-62.71542968749995,50.30166015625008],[-66.49550781249991,50.2118652343751],[-66.94116210937503,49.993701171875045],[-67.37202148437495,49.348437500000045],[-68.28193359374998,49.197167968750136],[-69.67387695312496,48.19916992187504],[-71.01826171874993,48.455615234375045],[-69.86552734374993,48.17226562500005],[-69.775,48.09809570312504],[-69.9944335937499,47.73989257812508],[-70.70585937499996,47.13979492187505],[-71.26777343749995,46.79594726562499],[-71.87958984374998,46.68681640624996],[-72.98100585937493,46.209716796875085],[-73.4766113281249,45.738232421874955],[-74.03784179687494,45.501855468750136],[-74.31508789062494,45.531054687500045],[-73.97382812499995,45.345117187499994],[-74.70888671874997,45.0038574218751]]],[[[-96.78232421874998,72.93662109375],[-97.0927734375,72.99692382812503],[-96.86240234374995,73.18881835937506],[-96.78232421874998,72.93662109375]]],[[[-114.52153320312502,72.592919921875],[-113.57807617187501,72.65209960937506],[-113.2923828125,72.94980468750003],[-112.75361328125001,72.98603515624995],[-111.26972656249994,72.71372070312498],[-111.895166015625,72.35610351562497],[-111.67509765625002,72.30014648437503],[-110.20512695312495,72.66127929687497],[-110.66083984374998,73.00820312500002],[-110.00844726562494,72.983642578125],[-108.75498046875002,72.55107421874999],[-108.18823242187501,71.72377929687502],[-107.812841796875,71.62617187500004],[-107.30600585937496,71.89467773437502],[-108.23740234374999,73.14990234375003],[-108.029052734375,73.34873046875003],[-106.48212890624998,73.19619140624997],[-105.41513671874995,72.788330078125],[-104.38593749999997,71.57695312500005],[-104.51479492187502,71.06425781250005],[-103.58457031249995,70.63085937500003],[-103.07719726562497,70.50883789062505],[-103.04956054687503,70.65507812499999],[-101.67631835937495,70.27827148437495],[-101.56240234375001,70.135009765625],[-101.04267578125,70.11079101562504],[-100.98237304687497,69.67988281250001],[-101.483837890625,69.85019531250006],[-101.64765624999997,69.69853515625007],[-102.18212890624997,69.845947265625],[-102.59589843749997,69.71791992187502],[-102.62109374999996,69.55151367187506],[-103.464892578125,69.64448242187498],[-103.04892578124999,69.47177734375006],[-103.12021484374995,69.20458984374997],[-102.44677734374997,69.476318359375],[-102.04594726562493,69.46484374999997],[-101.85712890625001,69.02397460937505],[-102.89506835937499,68.8236328125],[-104.57143554687501,68.87211914062502],[-105.105859375,68.92041015625],[-105.019580078125,69.08125],[-106.27016601562497,69.19458007812497],[-106.65908203124997,69.439599609375],[-107.43989257812497,69.00214843749995],[-108.36499023437497,68.93476562499998],[-109.47211914062501,68.67670898437498],[-113.12773437500002,68.49414062500003],[-113.61684570312501,68.8384765625],[-113.69414062499995,69.19501953124998],[-115.61811523437495,69.28295898437506],[-116.51347656249993,69.42460937500005],[-117.19541015624995,70.05405273437503],[-114.59233398437497,70.31245117187498],[-112.63789062499997,70.225244140625],[-111.63256835937497,70.30883789062497],[-113.75727539062503,70.69072265625005],[-115.99091796874997,70.586279296875],[-117.58706054687498,70.62954101562502],[-118.2640625,70.888330078125],[-118.26909179687493,71.03471679687505],[-115.30341796874997,71.49370117187505],[-117.93564453125003,71.39208984375003],[-118.22646484374995,71.46708984375005],[-117.742333984375,71.65932617187502],[-118.58300781250003,71.64902343749998],[-118.98769531249997,71.7642578125],[-118.94462890624997,71.98554687499995],[-118.21347656249998,72.26289062499998],[-118.481298828125,72.42768554687498],[-118.13310546874995,72.63281250000003],[-114.63823242187499,73.37265625000003],[-114.20639648437495,73.29780273437495],[-114.05170898437497,73.07099609375004],[-114.52153320312502,72.592919921875]]],[[[-105.28891601562499,72.919921875],[-106.92153320312497,73.479833984375],[-106.61396484375001,73.69560546875002],[-105.31796874999995,73.76713867187502],[-104.5875,73.57807617187495],[-104.62172851562495,73.3111328125],[-105.28891601562499,72.919921875]]],[[[-79.53730468749998,73.65449218749998],[-78.2865234375,73.66582031250007],[-77.20654296874997,73.49956054687505],[-76.18339843749999,72.84306640625005],[-77.83593750000003,72.89682617187498],[-79.3193359375,72.75771484375],[-79.820703125,72.82631835937502],[-80.18330078124995,73.22465820312499],[-80.77641601562502,73.33417968750001],[-80.84887695312503,73.72124023437499],[-79.53730468749998,73.65449218749998]]],[[[-86.58935546874997,71.01079101562507],[-85.64384765624999,71.15244140624998],[-85.09487304687497,71.15195312500006],[-84.82373046874997,71.02861328125005],[-84.69941406249995,71.63144531250003],[-85.33906249999998,71.69726562500003],[-85.91162109375,71.98652343749998],[-85.321875,72.23315429687506],[-84.28374023437499,72.04448242187499],[-84.84199218749995,72.30815429687505],[-84.62304687500003,72.37656250000003],[-85.34111328124993,72.42153320312497],[-85.64990234374997,72.72216796875003],[-85.26210937500002,72.95400390625],[-84.25664062499999,72.79672851562503],[-85.454736328125,73.10546875000003],[-84.41606445312496,73.45649414062495],[-83.781884765625,73.41689453125],[-83.72983398437495,73.57587890624995],[-81.946142578125,73.72983398437506],[-81.40615234374997,73.634521484375],[-80.27724609375,72.77016601562502],[-81.229345703125,72.31171874999998],[-80.61147460937497,72.450830078125],[-80.925146484375,71.90766601562501],[-80.18193359374996,72.20878906250007],[-79.884375,72.17719726562501],[-80.10893554687499,72.33217773437497],[-79.83129882812503,72.44628906250003],[-79.000244140625,72.27202148437507],[-79.00781250000003,72.04291992187501],[-78.58510742187497,71.880615234375],[-78.86274414062495,72.100830078125],[-78.69926757812496,72.35141601562498],[-77.51650390624997,72.17778320312505],[-78.48427734374994,72.47060546875002],[-77.75322265624996,72.72475585937502],[-75.70429687499998,72.57153320312497],[-75.05268554687493,72.22636718749999],[-75.92280273437501,71.71723632812501],[-74.90317382812503,72.10048828125002],[-74.20932617187498,71.978662109375],[-74.31572265624999,71.84267578125],[-75.20478515625001,71.70913085937497],[-74.70078125,71.67558593750005],[-74.99619140624998,71.21811523437503],[-74.48808593750002,71.64838867187501],[-73.8140625,71.77143554687495],[-74.197265625,71.404150390625],[-73.71284179687498,71.58759765624998],[-73.18061523437501,71.282861328125],[-73.27822265625,71.53798828125],[-72.901953125,71.67778320312507],[-71.64067382812499,71.51625976562502],[-71.22939453124997,71.33876953125],[-71.49501953124997,71.10512695312502],[-71.93793945312498,71.09428710937502],[-72.63271484374994,70.83076171874998],[-71.74252929687495,71.046875],[-71.370849609375,70.97514648437499],[-70.82607421874994,71.10874023437503],[-70.67265625,71.05219726562498],[-70.76171874999997,70.79223632812503],[-71.89018554687502,70.43154296875002],[-71.27587890625,70.50029296874999],[-71.42944335937503,70.12778320312503],[-70.97978515624999,70.5810546875],[-69.94980468750003,70.84501953125005],[-68.49575195312502,70.61025390625],[-68.363525390625,70.48125],[-70.05771484375,70.042626953125],[-68.77822265625,70.20356445312501],[-69.00830078124997,69.97895507812501],[-68.74404296874997,69.94140625],[-68.05908203124997,70.317236328125],[-67.36367187499994,70.03442382812503],[-67.22163085937495,69.73071289062506],[-68.02041015625,69.77006835937499],[-69.25078124999999,69.51191406249998],[-68.51303710937498,69.57729492187497],[-67.236962890625,69.460107421875],[-66.71674804687495,69.31186523437498],[-66.70742187500002,69.16821289062503],[-68.40629882812499,69.23222656250002],[-69.040625,69.09799804687503],[-68.41552734375,69.17207031250001],[-67.8326171875,69.06596679687499],[-67.88320312500002,68.78398437499999],[-69.31909179687497,68.85698242187505],[-68.21040039062495,68.702978515625],[-67.9384765625,68.524169921875],[-66.74272460937502,68.45776367187497],[-67.032958984375,68.32607421874997],[-66.923095703125,68.06572265625005],[-66.72900390624997,68.12900390625006],[-66.66269531249995,68.03442382812497],[-66.63095703124998,68.21064453124998],[-66.21240234374997,68.280419921875],[-66.44394531249998,67.83383789062506],[-65.94238281250003,68.07094726562505],[-65.86435546875003,67.92285156249997],[-65.50908203124996,67.96826171875],[-65.40126953125002,67.67485351562499],[-65.41533203124996,67.87924804687498],[-64.92231445312495,68.03164062500002],[-65.02109375,67.78754882812495],[-64.63779296875,67.84023437500002],[-63.850195312500034,67.56606445312502],[-64.00795898437502,67.34731445312497],[-64.69995117187494,67.35053710937501],[-63.83623046874993,67.26411132812498],[-63.59160156250002,67.3775390625],[-63.040136718750034,67.235009765625],[-63.70156249999994,66.82236328125003],[-62.962304687499966,66.94926757812505],[-62.37973632812495,66.90537109375],[-62.12358398437499,67.046728515625],[-61.35341796874994,66.689208984375],[-61.52783203124994,66.55810546875003],[-62.12333984374993,66.64306640625003],[-61.57080078125,66.37290039062506],[-61.95634765624993,66.30932617187497],[-62.553125,66.40683593750003],[-62.53359374999994,66.22700195312498],[-61.99160156250002,66.03530273437502],[-62.624121093750006,66.01625976562505],[-62.381982421874966,65.83330078124999],[-62.65888671874998,65.63994140625002],[-63.16894531249997,65.65732421875],[-63.45874023437494,65.85302734375],[-63.42089843749997,65.70859374999998],[-63.651074218749955,65.66098632812506],[-63.33745117187493,65.61674804687502],[-63.36337890624998,65.22973632812503],[-63.606591796874966,64.92807617187503],[-64.345703125,65.17241210937499],[-64.26967773437497,65.40078124999997],[-64.55507812500002,65.1166015625],[-65.401611328125,65.764013671875],[-64.44536132812496,66.31713867187497],[-65.0044921875,66.07773437500003],[-65.82573242187499,65.996923828125],[-65.65634765625003,66.204736328125],[-66.06372070312497,66.13271484374997],[-66.986328125,66.62749023437505],[-67.07685546874995,66.52548828125006],[-67.30732421874993,66.5697265625],[-67.22539062499993,66.31025390624998],[-67.88339843749995,66.46743164062502],[-67.18320312499995,66.03442382812503],[-67.350439453125,65.92973632812502],[-67.82802734374997,65.96518554687503],[-68.45991210937498,66.249267578125],[-68.74892578125,66.200048828125],[-68.21718750000002,66.078857421875],[-68.18671874999993,65.87099609375002],[-67.86645507812497,65.773681640625],[-67.936767578125,65.56489257812501],[-67.56962890624999,65.64355468749997],[-67.11796874999999,65.44038085937495],[-67.3365234375,65.34658203125005],[-66.69741210937502,64.81518554687506],[-66.63549804687503,65.00034179687503],[-66.21464843749999,64.72241210937497],[-65.93852539062496,64.88574218750003],[-65.2748046875,64.63154296875004],[-65.52934570312499,64.50478515624997],[-65.074609375,64.43666992187502],[-65.21298828125003,64.30327148437502],[-65.580322265625,64.29384765624997],[-65.16987304687495,64.02817382812503],[-64.67846679687503,64.027978515625],[-64.79814453124999,63.91596679687498],[-64.4109375,63.70634765625002],[-64.66464843749995,63.24536132812497],[-65.19184570312498,63.764257812500006],[-65.06894531249998,63.26347656250002],[-64.67236328125003,62.921972656250006],[-65.16279296875001,62.93261718750003],[-65.10849609374998,62.62646484375],[-66.22402343749994,63.10717773437497],[-66.228662109375,62.99096679687503],[-66.41445312500002,63.027197265625034],[-66.65498046874998,63.264746093750006],[-66.69746093749993,63.069531249999955],[-67.89326171874993,63.733740234375006],[-67.72255859374997,63.422753906249966],[-68.49375,63.725488281249994],[-68.91108398437498,63.703222656250006],[-68.141259765625,63.17231445312501],[-67.67597656249998,63.093554687500045],[-67.73696289062497,63.00957031249999],[-65.98017578125001,62.20888671875002],[-66.12387695312498,61.89306640625],[-68.53588867187503,62.25561523437506],[-69.12558593749998,62.423974609374966],[-69.604736328125,62.76772460937502],[-70.23613281250002,62.76337890625001],[-70.801416015625,62.91049804687506],[-71.10576171874999,63.00224609375002],[-70.94604492187497,63.12070312499998],[-71.34726562499998,63.066113281249955],[-71.99223632812493,63.41616210937505],[-71.380859375,63.580322265625],[-72.29013671874995,63.72797851562498],[-72.17426757812498,63.893408203125006],[-72.49843749999994,63.82348632812497],[-73.45454101562495,64.39926757812503],[-73.27128906250002,64.58251953125],[-73.91035156249998,64.578125],[-74.064794921875,64.42465820312498],[-74.13046874999998,64.6078125],[-74.46123046874996,64.64467773437505],[-74.68139648437497,64.8306640625],[-74.91943359374997,64.76552734374997],[-74.69472656250002,64.49658203124997],[-75.71503906249995,64.52436523437495],[-75.76669921875,64.39194335937498],[-76.85615234374998,64.23764648437498],[-77.76049804687503,64.36015624999999],[-78.04521484374993,64.499267578125],[-78.09560546875,64.93925781250002],[-77.36088867187496,65.19653320312503],[-77.32670898437493,65.453125],[-75.82832031249993,65.22705078125003],[-75.45209960937495,64.84160156250002],[-75.35712890624995,65.00874023437495],[-75.79868164062503,65.297509765625],[-75.16630859374999,65.28393554687497],[-74.13847656250002,65.50346679687502],[-73.55078125000003,65.48525390625005],[-74.41640624999997,66.16708984375003],[-73.03325195312502,66.72817382812505],[-72.78881835937494,67.030615234375],[-72.22001953124999,67.25429687500002],[-73.28447265624993,68.35698242187505],[-73.82050781249998,68.36293945312502],[-73.82211914062495,68.68598632812501],[-74.11796875000002,68.70092773437506],[-73.9892578125,68.54863281250002],[-74.2701171875,68.54121093750001],[-74.89296875,68.80815429687505],[-74.71669921874997,69.04550781249998],[-76.58505859375,68.69873046875003],[-76.55722656250003,69.00947265625001],[-75.9537109375,69.03081054687502],[-75.64775390625002,69.212548828125],[-76.46494140624995,69.46943359375001],[-76.23408203125001,69.66210937500003],[-76.742333984375,69.57290039062497],[-77.08994140625,69.63510742187503],[-76.85859374999995,69.775390625],[-77.591650390625,69.84560546875002],[-77.77402343750003,70.23852539062503],[-78.28281250000003,70.229150390625],[-79.06640624999997,70.60356445312507],[-79.40522460937498,70.40073242187503],[-78.86284179687499,70.24189453125001],[-78.88964843750003,69.97749023437495],[-79.51542968749996,69.88759765625005],[-81.65195312500003,70.09462890625002],[-80.92172851562503,69.73090820312501],[-81.56469726562503,69.94272460937498],[-82.29384765624997,69.83691406250003],[-83.14995117187493,70.00908203125002],[-83.85908203124998,69.96274414062498],[-85.43237304687497,70.11137695312507],[-85.780029296875,70.03666992187505],[-86.32202148437503,70.14541015625],[-86.396875,70.46533203124997],[-87.838134765625,70.24658203125],[-88.78271484374997,70.49448242187503],[-89.45590820312498,71.06171874999995],[-87.84492187499995,70.94438476562505],[-87.14008789062498,71.01162109374997],[-89.80537109374993,71.46230468750005],[-89.86152343750001,72.41191406250005],[-88.70517578124998,73.40327148437495],[-87.71977539062496,73.72290039062497],[-85.95078124999998,73.85014648437505],[-84.94677734375,73.72163085937498],[-86.00053710937499,73.31254882812505],[-86.65629882812502,72.72402343750005],[-86.21845703124998,71.89912109375004],[-85.02338867187495,71.35322265625001],[-86.58935546874997,71.01079101562507]]],[[[-100.00190429687497,73.9458984375],[-99.15795898437499,73.73159179687497],[-97.66997070312499,73.88774414062499],[-97.1705078125,73.82485351562497],[-97.001708984375,73.66650390625003],[-97.62587890624997,73.50229492187498],[-97.27250976562502,73.38681640624998],[-98.42177734375002,72.94101562500003],[-97.63632812499998,73.02763671874999],[-97.128125,72.62758789062502],[-96.59208984374996,72.71025390624999],[-96.44560546874996,72.55244140624998],[-96.80146484374998,72.32241210937502],[-96.61342773437494,71.83383789062506],[-97.58227539062497,71.62968750000005],[-98.18134765624998,71.66245117187503],[-98.32270507812501,71.85234375000002],[-98.19863281249994,71.44086914062501],[-98.66289062499993,71.302099609375],[-99.22363281249996,71.387109375],[-100.594482421875,72.15234375000003],[-101.20854492187495,72.31699218749998],[-101.72392578124996,72.31489257812501],[-102.70874023437496,72.76450195312503],[-102.20400390624998,73.077294921875],[-101.27319335937497,72.7216796875],[-100.48476562500002,72.77294921874997],[-100.395703125,72.97700195312498],[-100.128125,72.90668945312495],[-100.53637695312497,73.19785156250003],[-99.82514648437503,73.2138671875],[-100.36611328125001,73.359033203125],[-100.88935546875003,73.27534179687501],[-101.52319335937501,73.48637695312502],[-100.97578124999995,73.59975585937502],[-100.5216796875,73.44931640625],[-100.96298828125002,73.79140625],[-99.99111328125,73.79516601562503],[-100.00190429687497,73.9458984375]]],[[[-98.270361328125,73.86850585937498],[-98.97392578124997,73.81206054687502],[-99.4169921875,73.89541015625002],[-97.69824218749997,74.10869140625005],[-98.270361328125,73.86850585937498]]],[[[-93.17084960937498,74.16098632812506],[-92.22270507812502,73.97236328124998],[-90.62744140625,73.95170898437505],[-90.38139648437496,73.82475585937502],[-92.11791992187497,72.75380859375],[-94.21132812499997,72.75693359375],[-93.77055664062496,72.66821289062506],[-93.55517578124994,72.42114257812497],[-94.03754882812498,72.02875976562498],[-95.00786132812496,72.01279296875],[-95.60214843749998,72.88447265624995],[-95.63291015625003,73.69545898437497],[-94.697607421875,73.66357421874997],[-95.134130859375,73.88125],[-94.97353515625,74.04140625000002],[-93.17084960937498,74.16098632812506]]],[[[-119.73632812499997,74.11264648437498],[-119.20595703125002,74.19799804687503],[-119.11796874999995,74.01552734375],[-118.54399414062499,74.24462890625003],[-117.51484375000001,74.23173828124999],[-115.51069335937501,73.61875],[-115.446875,73.43886718750002],[-118.96157226562497,72.68413085937499],[-119.51284179687501,72.30268554687501],[-120.17988281250001,72.21264648437506],[-120.61933593750001,71.50576171875002],[-121.47216796875003,71.38901367187503],[-121.74936523437502,71.44477539062501],[-123.09565429687503,71.09379882812502],[-124.00776367187494,71.67744140624998],[-125.29667968749999,71.973046875],[-125.84531250000002,71.978662109375],[-123.79726562499997,73.76816406250003],[-124.69624023437497,74.34819335937499],[-121.50415039062497,74.54511718749998],[-119.56264648437494,74.23281250000002],[-119.73632812499997,74.11264648437498]]],[[[-97.35551757812496,74.52631835937495],[-97.75,74.51054687500005],[-97.41650390624994,74.62656250000003],[-97.35551757812496,74.52631835937495]]],[[[-95.306640625,74.50541992187505],[-95.850732421875,74.58247070312504],[-95.51020507812498,74.63676757812499],[-95.306640625,74.50541992187505]]],[[[-104.11992187499995,75.03632812500004],[-104.88740234374998,75.14775390624999],[-104.34619140624996,75.42993164062503],[-103.64350585937497,75.18657226562499],[-104.11992187499995,75.03632812500004]]],[[[-93.54257812499995,75.0279296875],[-93.57309570312495,74.66884765625005],[-94.53452148437498,74.63671874999997],[-96.59960937499997,75.03178710937499],[-95.95463867187493,75.44379882812501],[-94.878173828125,75.63002929687502],[-93.90908203125002,75.42250976562502],[-93.54257812499995,75.0279296875]]],[[[-96.07856445312495,75.510107421875],[-96.91513671875003,75.37968749999999],[-96.98281249999997,75.50981445312505],[-96.367822265625,75.65463867187506],[-96.07856445312495,75.510107421875]]],[[[-94.52656249999995,75.74931640624999],[-94.901220703125,75.93076171875],[-94.53789062499996,75.99643554687506],[-94.52656249999995,75.74931640624999]]],[[[-118.328125,75.57968749999998],[-118.81713867187503,75.52211914062497],[-119.39458007812499,75.617333984375],[-117.63369140624998,76.11508789062498],[-118.328125,75.57968749999998]]],[[[-79.0630859375,75.92587890624998],[-79.63876953124995,75.84291992187505],[-79.00932617187499,76.14589843750005],[-79.0630859375,75.92587890624998]]],[[[-102.22734374999995,76.014892578125],[-102.00800781250003,75.93940429687498],[-102.57958984375003,75.78022460937498],[-103.31474609374996,75.76420898437499],[-103.04150390624999,75.91884765624997],[-103.98525390624997,75.93310546875003],[-103.80078124999994,76.03701171874997],[-104.24248046874996,76.04697265625006],[-104.35063476562497,76.18232421875001],[-102.72802734374999,76.30703125],[-102.22734374999995,76.014892578125]]],[[[-104.02285156249998,76.58310546875003],[-103.05131835937495,76.44985351562497],[-103.31137695312499,76.34755859375],[-104.35751953124995,76.33461914062502],[-104.58569335937499,76.60649414062499],[-104.07451171875003,76.66611328124998],[-104.02285156249998,76.58310546875003]]],[[[-97.70092773437497,76.46650390624998],[-97.89052734374997,75.7603515625],[-97.40751953124999,75.67250976562497],[-97.33603515624998,75.41982421875],[-97.65332031249997,75.50776367187498],[-97.87822265624996,75.41611328125003],[-97.67431640624997,75.127294921875],[-98.04531249999997,75.20083007812497],[-98.12094726562503,75.03271484375],[-100.234375,75.00771484374997],[-100.48349609374995,75.18842773437501],[-100.14570312499995,75.24614257812505],[-100.71191406250003,75.40634765625],[-99.19458007812499,75.698388671875],[-102.58740234375001,75.51367187500003],[-102.79750976562501,75.59965820312505],[-102.14472656249998,75.87504882812502],[-100.97280273437498,75.79843750000003],[-101.414990234375,75.84584960937502],[-101.87211914062496,76.08310546875003],[-101.52895507812495,76.21728515625003],[-102.1046875,76.33120117187505],[-101.41518554687495,76.42490234375003],[-99.86547851562499,75.92421875],[-100.11284179687502,76.11723632812507],[-99.54106445312497,76.14628906250005],[-100.41420898437495,76.242529296875],[-99.97773437500003,76.31245117187495],[-100.82973632812497,76.52387695312495],[-99.8140625,76.6322265625],[-98.89033203125,76.46557617187497],[-98.71083984374994,76.69384765625003],[-97.70092773437497,76.46650390624998]]],[[[-101.22612304687497,76.57934570312497],[-101.61308593749995,76.60458984375006],[-100.26914062499998,76.73413085937497],[-101.22612304687497,76.57934570312497]]],[[[-108.29238281250001,76.05712890625],[-107.72348632812502,75.99541015625002],[-108.020703125,75.80478515625],[-107.21621093749997,75.89155273437501],[-106.91352539062503,75.67963867187501],[-106.67700195312499,76.02373046875002],[-105.63266601562493,75.94536132812505],[-105.51948242187497,75.63237304687505],[-106.09262695312495,75.08945312500003],[-107.15341796874996,74.9271484375],[-108.47475585937495,74.94721679687501],[-108.83129882812501,75.06489257812498],[-112.51933593749997,74.41684570312503],[-113.67158203124997,74.45302734375005],[-114.31269531250003,74.71508789062506],[-112.835986328125,74.9755859375],[-111.67109375,75.01943359374997],[-111.09345703125001,75.25629882812498],[-113.71176757812499,75.06860351562503],[-113.85332031249996,75.259375],[-113.46708984374996,75.41611328125003],[-114.01650390624998,75.43427734375001],[-114.16845703124994,75.23950195312503],[-114.51381835937497,75.27548828125],[-114.45175781250002,75.08789062499997],[-115.02011718749999,74.97617187500003],[-115.41318359374995,75.11499023437497],[-115.72885742187496,74.968115234375],[-116.47607421874996,75.17177734375],[-117.56523437499997,75.23334960937504],[-117.25761718750002,75.45952148437502],[-116.07714843749996,75.49296874999999],[-115.14184570312501,75.67851562500005],[-116.42563476562498,75.58535156249997],[-117.16362304687496,75.64487304687503],[-116.80214843749995,75.77158203124998],[-114.99150390625002,75.896337890625],[-116.66455078124999,75.95756835937505],[-116.20986328125,76.19443359374998],[-114.77861328124999,76.17260742187497],[-115.82216796874997,76.27001953125003],[-114.99848632812503,76.4974609375],[-114.19394531249999,76.45146484375005],[-113.82348632812501,76.20683593750002],[-112.69760742187496,76.20170898437505],[-111.05268554687495,75.54853515625001],[-108.94716796875,75.54179687499999],[-108.94477539062495,75.69897460937503],[-109.8705078125,75.929052734375],[-109.48681640624999,76.14467773437497],[-110.31445312500001,76.369384765625],[-109.09824218749996,76.811865234375],[-108.46699218749997,76.73759765625007],[-108.29238281250001,76.05712890625]]],[[[-89.72646484374994,76.50742187499998],[-90.55625,76.73457031249998],[-90.13632812499995,76.83696289062505],[-89.69541015625,76.74116210937498],[-89.72646484374994,76.50742187499998]]],[[[-113.56069335937494,76.74326171874998],[-114.83525390624999,76.79467773437497],[-113.89165039062495,76.89487304687503],[-113.56069335937494,76.74326171874998]]],[[[-94.29497070312493,76.91245117187498],[-93.23002929687496,76.77026367187497],[-93.53457031250002,76.44770507812498],[-92.99536132812494,76.62041015624999],[-91.305029296875,76.68076171875003],[-90.54262695312494,76.495751953125],[-91.41508789062496,76.45585937500005],[-89.28452148437498,76.30161132812506],[-89.40659179687498,76.18916015624998],[-91.40732421874998,76.22006835937506],[-89.27758789062497,75.79506835937497],[-89.64604492187499,75.5650390625],[-88.91669921874998,75.45395507812503],[-88.64497070312495,75.65844726562503],[-88.201318359375,75.51201171875005],[-87.72973632812503,75.57563476562495],[-87.53911132812502,75.48486328125003],[-87.25693359374998,75.61772460937499],[-85.95146484374993,75.39501953125],[-85.97299804687498,75.5287109375],[-83.931982421875,75.81894531250003],[-83.23710937499993,75.75083007812503],[-82.153662109375,75.83105468750003],[-80.32197265624998,75.62910156250001],[-79.50908203125002,75.25981445312499],[-80.38198242187494,75.03417968750003],[-79.40141601562502,74.91762695312502],[-79.944482421875,74.83364257812505],[-80.34775390624998,74.90297851562505],[-80.26274414062499,74.58447265625],[-81.94018554687494,74.47270507812505],[-82.73579101562495,74.53027343749997],[-83.5220703125,74.90146484375],[-83.53188476562494,74.58569335937497],[-84.42553710937503,74.50810546875007],[-85.06142578125,74.60693359375003],[-85.133447265625,74.517431640625],[-85.44233398437495,74.6005859375],[-85.80800781249994,74.49897460937498],[-88.42304687499995,74.49414062499997],[-88.53496093749993,74.83173828125001],[-89.55869140624995,74.55473632812507],[-90.55327148437499,74.61274414062498],[-90.88022460937498,74.8177734375],[-91.13457031250002,74.64985351562498],[-91.54912109375002,74.65556640624999],[-92.3892578125,75.263330078125],[-92.18510742187499,75.84653320312498],[-93.09174804687495,76.35400390624997],[-95.27387695312498,76.26440429687503],[-96.03969726562494,76.48671875000002],[-95.65097656249998,76.58466796874998],[-96.88071289062495,76.73833007812505],[-96.40156249999995,76.79721679687503],[-96.75830078124997,76.97177734374998],[-95.84951171875002,77.06621093750005],[-94.29497070312493,76.91245117187498]]],[[[-115.55126953125001,77.36328125],[-116.32919921874996,77.137060546875],[-115.81005859374999,76.939111328125],[-116.25273437500002,76.90141601562505],[-115.94628906250003,76.71127929687503],[-116.99921874999995,76.531591796875],[-117.23359375000001,76.28154296875005],[-117.99296874999999,76.40581054687505],[-117.88081054687497,76.80507812500005],[-118.79140624999994,76.51298828125005],[-119.080712890625,76.12407226562505],[-119.58037109375,76.32651367187498],[-119.52612304687496,75.99721679687505],[-119.91289062499997,75.85883789062501],[-120.40888671874995,75.82563476562498],[-120.84838867187496,76.18266601562499],[-121.21347656249999,75.98369140625005],[-122.53305664062498,75.95092773437503],[-122.59272460937497,76.16206054687495],[-122.90278320312498,76.13471679687498],[-122.51938476562503,76.353173828125],[-121.56113281250003,76.453466796875],[-119.09018554687496,77.30507812500002],[-116.84355468749995,77.33955078124995],[-117.03974609374995,77.46513671875005],[-116.51132812500003,77.54760742187497],[-115.55126953125001,77.36328125]]],[[[-89.83325195312503,77.26762695312505],[-90.22827148437503,77.21245117187499],[-90.99321289062499,77.32949218750002],[-91.01904296875003,77.64389648437503],[-89.83896484375003,77.49140624999998],[-89.83325195312503,77.26762695312505]]],[[[-104.55815429687497,77.14174804687497],[-105.21508789062496,77.18208007812501],[-106.03559570312495,77.73984375000006],[-105.58789062499997,77.73598632812497],[-104.54223632812501,77.33774414062503],[-104.55815429687497,77.14174804687497]]],[[[-95.484375,77.79199218750003],[-93.30097656249995,77.73979492187505],[-93.54394531249997,77.466650390625],[-95.98706054687497,77.484130859375],[-96.19458007812497,77.70053710937503],[-95.484375,77.79199218750003]]],[[[-101.6935546875,77.69658203125005],[-102.37783203124995,77.728125],[-102.44770507812498,77.88061523437506],[-101.19321289062493,77.82978515624998],[-101.00205078124998,77.73510742187497],[-101.6935546875,77.69658203125005]]],[[[-113.83247070312497,77.75463867187506],[-114.28720703124998,77.72148437500005],[-114.98041992187498,77.91542968750002],[-114.33037109374997,78.07753906250002],[-113.83247070312497,77.75463867187506]]],[[[-110.45805664062496,78.10322265625001],[-109.62226562499995,78.07475585937499],[-110.865625,77.834130859375],[-110.15273437500002,77.76293945312506],[-110.19848632812501,77.52451171874998],[-112.37265625000002,77.36411132812498],[-113.16435546875002,77.5302734375],[-113.21518554687498,77.90351562500001],[-110.45805664062496,78.10322265625001]]],[[[-109.81596679687499,78.65039062500003],[-109.48447265624995,78.31640625],[-111.16918945312499,78.38627929687505],[-111.51748046874997,78.27470703125005],[-112.13125,78.366064453125],[-113.22304687499998,78.29790039062505],[-112.85585937499997,78.46684570312502],[-110.877587890625,78.73505859375004],[-109.81596679687499,78.65039062500003]]],[[[-96.20449218749994,78.53129882812499],[-94.91538085937495,78.39052734375002],[-95.32924804687497,78.22504882812495],[-94.93427734374998,78.07563476562498],[-96.98964843749994,77.80600585937503],[-97.65815429687498,78.090625],[-96.944677734375,78.15185546874997],[-98.04951171874995,78.325927734375],[-98.33261718749998,78.77353515625006],[-97.38232421875,78.78291015625001],[-96.20449218749994,78.53129882812499]]],[[[-103.42602539062499,79.315625],[-102.57617187499996,78.87939453125003],[-101.70366210937502,79.07890625000002],[-101.128125,78.80166015625002],[-100.43549804687503,78.8203125],[-99.60942382812495,78.58305664062507],[-99.16640625000002,77.85693359375003],[-100.27465820312503,77.83271484374995],[-101.07412109375001,78.19384765625],[-102.60698242187502,78.24892578125002],[-102.73134765624995,78.37104492187495],[-103.94658203124999,78.26000976562497],[-104.76357421874998,78.35166015625],[-104.90961914062498,78.55263671875],[-103.57050781250003,78.53984375000005],[-104.02084960937502,78.63491210937497],[-103.37158203125,78.73632812500003],[-104.18500976562498,78.78129882812505],[-104.15195312499999,78.989892578125],[-104.89550781249996,78.80815429687502],[-104.74677734375003,79.02709960937503],[-105.53564453124999,79.03251953125007],[-105.51455078124995,79.24248046875002],[-105.38769531249994,79.32358398437503],[-103.42602539062499,79.315625]]],[[[-98.79160156249995,79.98110351562505],[-98.94521484375,79.72407226562498],[-100.05683593749997,79.89824218750005],[-100.05327148437496,80.093359375],[-99.15322265625001,80.12421874999998],[-98.79160156249995,79.98110351562505]]],[[[-91.88554687499999,81.13286132812505],[-90.64301757812498,80.59370117187498],[-89.23559570312494,80.51064453125002],[-88.85732421874997,80.16621093750001],[-88.19990234374998,80.11147460937497],[-88.5248046875,80.41801757812507],[-87.675,80.37211914062505],[-87.92231445312501,80.09770507812499],[-86.97719726562502,79.89423828125001],[-87.29516601562494,79.58017578124998],[-86.33696289062496,79.63496093749995],[-86.00703124999998,79.47944335937498],[-85.6478515625,79.61142578125006],[-85.04213867187497,79.2845703125],[-86.95717773437502,78.97490234375005],[-87.61738281249995,78.67631835937505],[-88.04018554687494,78.99531250000004],[-87.98286132812498,78.53706054687501],[-88.74160156250002,78.58403320312499],[-88.82241210937497,78.18588867187498],[-90.037109375,78.60683593750002],[-89.52568359374999,78.15961914062495],[-90.29721679687495,78.32802734374997],[-90.614404296875,78.14985351562501],[-92.35126953125001,78.312890625],[-92.8482421875,78.46010742187497],[-91.86689453124998,78.54267578125001],[-93.26660156249997,78.60830078124997],[-93.63442382812502,78.75092773437498],[-93.15986328124998,78.77563476562503],[-94.11459960937498,78.92890625000001],[-92.54721679687495,79.28261718750002],[-91.29990234375003,79.372705078125],[-92.82192382812497,79.44990234375001],[-93.93315429687496,79.29072265624998],[-94.11030273437498,79.40156250000001],[-95.10317382812502,79.289892578125],[-95.66289062500002,79.52734374999997],[-94.40185546874997,79.736328125],[-95.73935546874995,79.66015625000003],[-96.58906249999995,79.91665039062497],[-96.77324218749999,80.13579101562502],[-94.64589843749994,80.04873046874997],[-94.26259765625002,80.19487304687499],[-95.40507812499996,80.13500976562506],[-96.39409179687493,80.31503906250003],[-95.549072265625,80.36660156249997],[-95.92695312499998,80.72065429687498],[-93.92792968749995,80.55917968750003],[-95.51474609375003,80.83813476562503],[-94.98051757812499,81.04965820312503],[-93.28671874999998,81.10029296874998],[-94.22011718749997,81.33076171875004],[-93.03466796874997,81.3462890625],[-91.88554687499999,81.13286132812505]]],[[[-69.4888671875,83.01679687499998],[-66.42255859374998,82.92685546875003],[-68.46933593749995,82.65336914062502],[-65.29902343749995,82.79960937500005],[-64.98388671874997,82.90229492187501],[-64.50400390625,82.77841796874998],[-63.641015624999966,82.81259765625003],[-63.246777343749926,82.4501953125],[-62.47519531249995,82.51958007812502],[-61.392480468749994,82.44189453125],[-61.61538085937502,82.18442382812503],[-64.43579101562497,81.74262695312501],[-66.62573242187497,81.61640624999995],[-68.68852539062493,81.29331054687503],[-64.78007812499993,81.49287109375001],[-69.55068359375,80.38325195312498],[-70.71259765625001,80.53959960937505],[-70.264892578125,80.23359374999998],[-72.05595703124996,80.12324218749995],[-70.56840820312493,80.09370117187498],[-71.387841796875,79.76176757812505],[-72.43652343750003,79.69438476562499],[-74.39448242187495,79.87407226562499],[-73.47246093749996,79.7564453125],[-73.36152343750001,79.50400390625],[-75.50341796875,79.41416015625],[-76.898828125,79.5123046875],[-75.60273437499998,79.23955078125005],[-74.48120117187503,79.22949218750006],[-74.64091796874996,79.03554687499997],[-78.58164062499998,79.075],[-77.88276367187498,78.9423828125],[-76.255859375,79.00683593749997],[-74.486328125,78.75009765624998],[-74.87861328124998,78.54482421875],[-76.41611328124995,78.51152343750005],[-75.19345703125,78.327734375],[-75.86596679687497,78.00981445312499],[-78.01259765624997,77.94604492187506],[-78.07617187500003,77.51904296875],[-78.70849609374997,77.34213867187503],[-80.57304687499996,77.31479492187506],[-81.65908203124997,77.52543945312499],[-81.3013671875,77.34404296875007],[-82.056787109375,77.29653320312497],[-81.75634765624997,77.20400390625005],[-79.49726562500001,77.19609375000005],[-78.97919921874998,76.89287109374999],[-78.28886718750002,76.97797851562501],[-77.98330078124994,76.75498046875006],[-78.284326171875,76.57124023437501],[-80.79970703124997,76.173583984375],[-80.97451171874994,76.470068359375],[-81.71738281250003,76.494970703125],[-82.52983398437499,76.723291015625],[-82.23315429687494,76.46582031250003],[-83.88569335937501,76.453125],[-84.22377929687497,76.67534179687499],[-84.27534179687498,76.35654296875006],[-85.141259765625,76.30458984375005],[-86.45371093750003,76.58486328125002],[-86.68022460937499,76.37661132812497],[-87.35419921874998,76.44804687500005],[-87.48979492187499,76.58583984374997],[-87.49755859374997,76.38627929687499],[-88.39599609374997,76.40527343750003],[-88.49584960937497,76.77285156249997],[-88.54580078125002,76.42089843750003],[-89.36962890624997,76.474462890625],[-89.49975585937503,76.82680664062502],[-88.39814453124995,77.10395507812501],[-86.81225585937497,77.18491210937498],[-87.68144531249996,77.43637695312503],[-88.01699218750002,77.78471679687505],[-86.75507812499998,77.86372070312498],[-85.58847656249998,77.46113281250004],[-84.73867187499997,77.36103515624998],[-83.72128906249998,77.41420898437497],[-82.7103515625,77.84951171875002],[-82.5953125,77.99213867187504],[-83.77939453125,77.53261718750002],[-85.28935546874996,77.55903320312498],[-85.54755859374998,77.92768554687495],[-84.61542968749998,78.19570312500002],[-84.22270507812499,78.176025390625],[-84.91035156249993,78.23969726562501],[-84.78320312499997,78.52758789062506],[-85.5859375,78.10957031249998],[-86.21777343750003,78.08120117187497],[-85.92006835937494,78.34287109374998],[-86.91323242187494,78.126806640625],[-87.5517578125,78.17661132812503],[-86.80791015624999,78.77436523437495],[-85.00375976562495,78.912255859375],[-83.27143554687501,78.77031250000002],[-81.75009765624995,78.97578124999995],[-82.43876953125002,78.903662109375],[-84.41201171875002,78.99658203125003],[-84.38359375000002,79.1185546875],[-83.57587890624995,79.05366210937501],[-86.42075195312498,79.84521484374997],[-86.49853515625003,80.25825195312501],[-83.72363281250003,80.22895507812501],[-81.68837890625,79.685791015625],[-80.47592773437498,79.60625],[-80.12446289062495,79.66948242187507],[-81.01015625000002,79.693115234375],[-82.98701171874995,80.32260742187498],[-76.86298828124995,80.86479492187505],[-78.71621093749994,80.95166015624997],[-76.88510742187503,81.43027343750006],[-81.00703125000001,80.6548828125],[-82.88432617187502,80.57753906249997],[-82.22236328124998,80.77231445312503],[-84.41782226562495,80.52675781250002],[-86.250341796875,80.56577148437506],[-86.60307617187499,80.66401367187498],[-85.63930664062494,80.92460937500007],[-83.288818359375,81.14794921875],[-85.780859375,81.03505859375],[-87.32988281250002,80.669775390625],[-88.00366210937497,80.675390625],[-89.16689453125,80.94130859375],[-86.47675781249993,81.03574218750006],[-84.94121093750002,81.28623046875],[-87.27509765624995,81.080810546875],[-89.623046875,81.032470703125],[-89.94731445312499,81.17265625000005],[-89.20869140624998,81.25009765625003],[-89.67368164062503,81.32861328125003],[-87.59702148437498,81.52583007812498],[-88.47905273437502,81.56464843749998],[-90.41630859374996,81.40537109375003],[-89.82167968749997,81.63486328124998],[-91.29238281250002,81.57124023437498],[-91.64755859374998,81.68383789062503],[-88.06318359375001,82.09648437500007],[-87.01821289062502,81.95874023437497],[-86.62680664062495,82.05102539062503],[-85.04482421874997,81.9828125],[-86.615625,82.21855468750007],[-84.89682617187503,82.44941406250001],[-82.63369140625002,82.07729492187497],[-82.53691406250002,82.24726562499995],[-79.465625,81.85112304687499],[-82.44755859374993,82.39501953125003],[-81.68115234375003,82.51865234375],[-82.11684570312497,82.62866210937503],[-80.8625,82.57153320312503],[-81.01015625000002,82.77905273437503],[-78.748779296875,82.67939453124998],[-80.15493164062497,82.91113281250003],[-77.61806640624997,82.89584960937503],[-76.009375,82.53515625],[-75.565625,82.60854492187502],[-77.12490234374994,83.00854492187497],[-74.41416015624995,83.01313476562501],[-72.65869140625,82.72163085937495],[-73.44189453124994,82.90483398437499],[-72.811669921875,83.08120117187502],[-71.98320312499996,83.10141601562498],[-70.94038085937495,82.90224609375],[-71.08481445312498,83.08266601562497],[-69.96992187499995,83.11611328125005],[-69.4888671875,83.01679687499998]]]]},"properties":{"name":"Canada","childNum":110}},{"geometry":{"type":"Polygon","coordinates":[[[9.527658197470123,47.27026989773668],[9.46249431093294,47.19858962254578],[9.46249431093294,47.09010747968864],[9.409458596647225,47.02019676540292],[9.579979133936737,47.05856388629306],[9.580273437500011,47.057373046875],[10.133496093750011,46.851513671875],[10.349414062500017,46.98476562499999],[10.414941406250023,46.964404296874996],[10.45458984375,46.8994140625],[10.452832031250011,46.86494140625],[10.406054687500017,46.73486328125],[10.39794921875,46.6650390625],[10.4306640625,46.550048828125],[10.195507812500011,46.62109375],[10.1375,46.61435546875],[10.087011718750006,46.599902343749996],[10.061230468750011,46.546777343749994],[10.038281250000011,46.483203125],[10.045605468750011,46.447900390624994],[10.081933593750023,46.420751953125],[10.109667968750017,46.362841796874996],[10.128320312500023,46.238232421875],[10.08056640625,46.227978515625],[10.041015625,46.238085937499996],[9.939257812500017,46.36181640625],[9.884472656250011,46.3677734375],[9.787792968750011,46.346044921875],[9.639453125000017,46.2958984375],[9.57958984375,46.29609375],[9.528710937500023,46.306201171874996],[9.427636718750023,46.482324218749994],[9.399316406250023,46.4806640625],[9.304394531250011,46.495556640625],[9.203417968750017,46.21923828125],[9.11874162946429,46.014892578125],[8.97551618303573,45.81677455357143],[8.74961495535715,46.02246372767857],[8.818554687500011,46.0771484375],[8.458398437500023,46.245898437499996],[8.370703125,46.445117187499996],[8.298535156250011,46.40341796875],[8.23193359375,46.341210937499994],[8.08154296875,46.256005859374994],[7.9931640625,46.015917968749996],[7.327929687500017,45.912353515625],[7.129003906250006,45.880419921874996],[7.055761718750006,45.90380859375],[7.02109375,45.92578125],[6.953710937500006,46.017138671874996],[6.897265625000017,46.0517578125],[6.772070312500006,46.16513671875],[6.758105468750017,46.415771484375],[6.578222656250006,46.437353515625],[6.428906250000011,46.430517578125],[6.321875,46.393701171874994],[6.234667968750017,46.3326171875],[6.199414062500011,46.19306640625],[6.086621093750011,46.147021484374996],[6.006640625000017,46.142333984375],[5.971484375000017,46.151220703125],[5.970019531250017,46.214697265625],[6.0361328125,46.238085937499996],[6.095898437500011,46.27939453125],[6.129687500000017,46.5669921875],[6.41015625,46.755419921874996],[6.429003906250017,46.832275390625],[6.45625,46.94833984375],[6.624804687500017,47.004345703125],[6.666894531250023,47.026513671874994],[6.688085937500006,47.058251953124994],[6.820703125000023,47.16318359375],[6.952050781250023,47.2671875],[6.978515625,47.302050781249996],[7.000585937500006,47.322509765625],[7.000585937500006,47.339453125],[6.900390625,47.39423828125],[6.968359375,47.45322265625],[7.136035156250017,47.48984375],[7.343164062500023,47.43310546875],[7.615625,47.592724609375],[8.454003906250023,47.59619140625],[8.559472656250023,47.6240234375],[8.570507812500011,47.63779296875],[8.567089843750011,47.651904296874996],[8.55234375,47.659130859375],[8.451757812500006,47.651806640625],[8.413281250000011,47.6626953125],[8.403417968750006,47.687792968749996],[8.435742187500011,47.731347656249994],[8.572656250000023,47.775634765625],[9.524023437500006,47.52421875],[9.625878906250023,47.467041015625],[9.527539062500011,47.270751953125],[9.527658197470123,47.27026989773668]]]},"properties":{"name":"Switzerland","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-67.28886718749999,-55.776855468749964],[-67.55996093749997,-55.72480468750002],[-67.39736328124997,-55.58515625],[-67.28886718749999,-55.776855468749964]]],[[[-67.07993164062498,-55.15380859374996],[-67.33969726562495,-55.292578124999984],[-67.4947265625,-55.177441406249976],[-68.07001953124995,-55.22109374999999],[-68.30136718750003,-54.98066406250003],[-67.245263671875,-54.977636718750034],[-67.07993164062498,-55.15380859374996]]],[[[-69.70297851562503,-54.91904296875],[-68.90078125000002,-55.01777343750004],[-68.45800781249997,-54.95966796875002],[-68.61328124999997,-55.155566406250045],[-68.28266601562495,-55.25517578125],[-68.04833984375,-55.6431640625],[-68.86704101562498,-55.45019531250003],[-68.89008789062498,-55.2412109375],[-69.19262695312497,-55.171875],[-69.35922851562498,-55.300683593749945],[-69.18085937499995,-55.47480468749998],[-69.41181640624995,-55.44423828124997],[-69.97978515625002,-55.14746093749999],[-69.88442382812494,-54.88203125000001],[-69.70297851562503,-54.91904296875]]],[[[-70.9916015625,-54.86796874999999],[-70.80483398437497,-54.96767578124996],[-70.41752929687493,-54.908886718749976],[-70.29785156249997,-55.11376953124997],[-70.47558593749994,-55.17705078124998],[-71.43720703125001,-54.88925781249997],[-70.9916015625,-54.86796874999999]]],[[[-71.390478515625,-54.03281250000002],[-71.02192382812495,-54.111816406250036],[-71.14326171874998,-54.374023437499986],[-71.473291015625,-54.23115234375001],[-71.94853515624999,-54.300878906250006],[-72.21044921874997,-54.04775390624995],[-71.996484375,-53.884863281249984],[-71.390478515625,-54.03281250000002]]],[[[-72.92324218749997,-53.481640625],[-72.88222656249997,-53.578320312499976],[-72.48227539062503,-53.58808593750001],[-72.20541992187503,-53.80742187500002],[-72.408544921875,-54.00380859374997],[-72.87099609375,-54.12656250000002],[-72.76376953125,-53.86484375],[-73.03945312499994,-53.83281250000004],[-73.08076171875001,-53.99804687499995],[-73.21064453125001,-53.98583984374995],[-73.31435546875,-53.72919921874998],[-73.845458984375,-53.54580078125001],[-73.44707031249993,-53.41005859374998],[-72.92324218749997,-53.481640625]]],[[[-74.38574218749994,-52.92236328125001],[-73.65400390624998,-53.06982421875003],[-73.13520507812498,-53.35390625],[-73.56728515625,-53.3068359375],[-73.86694335937494,-53.096875],[-74.27021484374995,-53.08154296875002],[-74.71201171874998,-52.74873046874998],[-74.38574218749994,-52.92236328125001]]],[[[-68.62993164062499,-52.65263671875004],[-68.65322265624994,-54.85361328124999],[-69.48627929687493,-54.85888671875],[-69.72343750000002,-54.71210937500003],[-70.49716796875,-54.80957031249999],[-71.83154296874997,-54.62617187500002],[-71.92773437500003,-54.52871093749997],[-71.80014648437498,-54.433984374999945],[-71.07993164062498,-54.444238281249994],[-70.79726562500002,-54.32724609374996],[-70.70112304687498,-54.48544921875004],[-70.31098632812498,-54.52851562500002],[-70.86308593749993,-54.11044921875003],[-70.86772460937499,-53.88417968750002],[-70.53129882812502,-53.627343750000016],[-70.37973632812495,-53.98671874999995],[-70.62983398437493,-54.005566406249976],[-70.53530273437494,-54.136132812500016],[-70.16899414062502,-54.37929687499999],[-69.74184570312494,-54.30585937500005],[-69.25317382812494,-54.557421875000045],[-69.04433593749997,-54.40673828124999],[-69.98813476562503,-54.10908203125001],[-70.15112304687503,-53.88808593750002],[-70.09111328124996,-53.72177734374998],[-69.35595703125003,-53.41630859375001],[-69.63701171874999,-53.33408203125004],[-70.32929687499998,-53.37763671875003],[-70.44335937499994,-53.085546875000034],[-70.130615234375,-52.942773437499994],[-70.38012695312494,-52.75195312500002],[-69.93544921874997,-52.82109374999998],[-69.41406249999997,-52.48623046874997],[-69.16704101562499,-52.66757812499997],[-68.78979492187497,-52.576757812500034],[-68.62993164062499,-52.65263671875004]]],[[[-74.82294921874993,-51.63017578125001],[-74.53681640624998,-51.96513671875004],[-74.69448242187497,-52.27919921874999],[-74.85180664062494,-52.27070312500003],[-75.10537109375,-51.78886718750001],[-74.82294921874993,-51.63017578125001]]],[[[-74.55864257812499,-51.27705078125001],[-74.62036132812497,-51.395703125000026],[-75.04736328125,-51.39833984375003],[-75.28911132812496,-51.625390625000016],[-75.15366210937498,-51.278808593750014],[-74.73666992187503,-51.20761718749999],[-74.55864257812499,-51.27705078125001]]],[[[-75.302001953125,-50.67998046875005],[-75.411376953125,-50.76435546875001],[-75.42763671875002,-50.48056640625002],[-75.11533203124998,-50.510449218749976],[-75.302001953125,-50.67998046875005]]],[[[-75.05478515625,-50.29609375],[-75.44912109374997,-50.34335937500004],[-75.32666015624997,-50.01181640625],[-74.8759765625,-50.10996093750001],[-75.05478515625,-50.29609375]]],[[[-75.106689453125,-48.83652343750001],[-75.38994140624999,-49.15917968750002],[-75.64116210937499,-49.195410156250034],[-75.48764648437498,-49.082421875000016],[-75.58310546874998,-48.85888671874995],[-75.106689453125,-48.83652343750001]]],[[[-74.47617187499998,-49.14785156250002],[-74.59472656249997,-50.00664062500001],[-74.76298828124996,-50.01142578125001],[-74.88041992187502,-49.72587890625001],[-74.72382812499998,-49.42382812500003],[-74.960107421875,-49.533007812499974],[-75.06601562499998,-49.85234375000002],[-75.54980468749994,-49.79130859375002],[-75.30585937499998,-49.49404296875003],[-75.46748046874995,-49.35888671875003],[-75.08603515624998,-49.27021484375],[-75.21015624999995,-49.14804687499998],[-74.94921875,-48.960156249999976],[-74.89624023437503,-48.73320312500002],[-74.54609374999993,-48.76689453125004],[-74.47617187499998,-49.14785156250002]]],[[[-75.51025390624997,-48.76347656250005],[-75.65092773437496,-48.58632812500002],[-75.57148437499993,-48.095898437500026],[-75.39140625000002,-48.01972656249997],[-75.15849609374999,-48.62265624999996],[-75.51025390624997,-48.76347656250005]]],[[[-74.56728515625,-48.591992187500026],[-74.92304687499998,-48.62646484375003],[-75.21289062499997,-48.141699218750034],[-75.19829101562502,-47.974609375000014],[-74.895654296875,-47.839355468749986],[-74.56728515625,-48.591992187500026]]],[[[-75.11220703124997,-47.8376953125],[-75.26103515625002,-47.76386718749998],[-74.92646484374998,-47.72314453125003],[-75.11220703124997,-47.8376953125]]],[[[-74.31289062500002,-45.69150390625002],[-74.46552734374995,-45.757226562499994],[-74.68984375,-45.66259765625],[-74.310546875,-45.17265625000002],[-74.31289062500002,-45.69150390625002]]],[[[-73.63217773437498,-44.82148437499997],[-73.81845703125,-44.65214843750002],[-73.72392578124993,-44.544238281249974],[-73.63217773437498,-44.82148437499997]]],[[[-72.98613281249999,-44.780078124999974],[-73.22846679687498,-44.85996093749999],[-73.39707031249998,-44.77431640624995],[-73.44506835937497,-44.641015624999966],[-73.20771484374993,-44.33496093749997],[-72.7763671875,-44.50859374999999],[-72.98613281249999,-44.780078124999974]]],[[[-73.73535156249997,-44.39453125000003],[-74.00205078125003,-44.59091796874998],[-73.728173828125,-45.195898437500034],[-74.016259765625,-45.344921875000026],[-74.61777343749998,-44.64794921874996],[-74.50180664062498,-44.47353515624995],[-74.09721679687496,-44.38935546875004],[-73.99492187499999,-44.140234375],[-73.70322265624998,-44.27412109375001],[-73.73535156249997,-44.39453125000003]]],[[[-73.81064453125003,-43.827246093750006],[-73.95566406249998,-43.921972656250034],[-74.14296874999997,-43.872167968750006],[-73.81064453125003,-43.827246093750006]]],[[[-73.77338867187498,-43.3458984375],[-74.114404296875,-43.35791015624996],[-74.387353515625,-43.231640625],[-74.03666992187496,-41.79550781249998],[-73.52783203124997,-41.89628906249999],[-73.42290039062499,-42.192871093750014],[-73.47080078124998,-42.46630859375004],[-73.78925781249993,-42.58574218750003],[-73.43632812499996,-42.9365234375],[-73.74965820312494,-43.15908203124995],[-73.77338867187498,-43.3458984375]]],[[[-78.80415039062501,-33.646484374999986],[-78.98945312499993,-33.66171874999998],[-78.87744140625003,-33.57519531250003],[-78.80415039062501,-33.646484374999986]]],[[[-109.27998046874994,-27.14042968749996],[-109.434130859375,-27.171289062500023],[-109.39047851562499,-27.068359375000014],[-109.27998046874994,-27.14042968749996]]],[[[-67.19487304687493,-22.821679687500037],[-67.00878906249994,-23.00136718750005],[-67.35620117187503,-24.033789062499963],[-68.25029296875002,-24.391992187500023],[-68.56201171875,-24.74736328125003],[-68.38422851562495,-25.091894531249977],[-68.59208984375002,-25.420019531250034],[-68.41450195312498,-26.153710937500023],[-68.59160156249999,-26.47041015624997],[-68.31865234374999,-26.973242187500006],[-68.59208984375002,-27.140039062499966],[-68.84633789062494,-27.153710937499994],[-69.17441406249998,-27.924707031250037],[-69.65693359374995,-28.413574218749986],[-69.82788085937497,-29.10322265624997],[-70.02680664062501,-29.324023437500017],[-69.95996093749997,-30.078320312500026],[-69.84428710937493,-30.175],[-69.95634765624996,-30.35820312500003],[-70.15322265625,-30.360937499999963],[-70.30908203124994,-31.02265625000004],[-70.51958007812493,-31.1484375],[-70.585205078125,-31.569433593749963],[-70.25439453125,-31.957714843750026],[-70.36376953125,-32.08349609374997],[-70.02197265625,-32.88457031250002],[-70.08486328125002,-33.20175781249998],[-69.81962890624999,-33.28378906249999],[-69.85244140625,-34.224316406250026],[-70.05205078124999,-34.30078124999997],[-70.39316406250003,-35.146875],[-70.55517578125,-35.246875],[-70.41572265625001,-35.52304687500002],[-70.40478515625,-36.06171874999998],[-71.05551757812498,-36.52373046874996],[-71.19218750000002,-36.84365234375004],[-71.16757812499998,-37.76230468749996],[-70.858642578125,-38.60449218750003],[-71.40156249999995,-38.93505859374996],[-71.53945312499997,-39.60244140624995],[-71.71992187499995,-39.63525390624997],[-71.65976562499998,-40.02080078125],[-71.81831054687493,-40.17666015624995],[-71.70898437499997,-40.381738281249994],[-71.93212890624994,-40.69169921874999],[-71.91127929687497,-41.650390624999986],[-71.75,-42.04677734375001],[-72.10820312499993,-42.25185546874995],[-72.14643554687498,-42.990039062499974],[-71.750634765625,-43.237304687499986],[-71.90498046875001,-43.34755859374998],[-71.68007812500002,-43.92958984374998],[-71.82001953124993,-44.38310546875],[-71.21259765624998,-44.44121093750003],[-71.15971679687496,-44.56025390625004],[-71.26113281250002,-44.763085937499966],[-72.06372070312503,-44.771875],[-72.04169921874998,-44.90419921875004],[-71.5962890625,-44.97919921875004],[-71.34931640624995,-45.33193359374995],[-71.74619140624998,-45.57890625],[-71.63154296874998,-45.95371093749998],[-71.87568359374998,-46.160546875],[-71.69965820312501,-46.6513671875],[-71.94023437499999,-46.83125],[-71.90498046875001,-47.201660156250014],[-72.34594726562497,-47.49267578124997],[-72.517919921875,-47.87636718749998],[-72.32832031250001,-48.11005859374998],[-72.35473632812497,-48.36582031250005],[-72.582861328125,-48.47539062499999],[-72.65126953125,-48.84160156249998],[-73.03364257812501,-49.014355468750004],[-73.13525390625,-49.30068359374999],[-73.46157226562497,-49.31386718750001],[-73.55419921875,-49.463867187500014],[-73.50126953124996,-50.125292968750024],[-73.15292968749998,-50.73828125000003],[-72.50981445312496,-50.607519531250034],[-72.34023437499997,-50.68183593749999],[-72.40766601562501,-51.54082031250002],[-71.91865234374995,-51.98955078125004],[-69.96025390624993,-52.00820312500002],[-68.443359375,-52.35664062500004],[-69.24101562499996,-52.20546874999997],[-69.62031249999995,-52.46474609374995],[-70.79511718749995,-52.76875],[-70.99584960937497,-53.77929687499997],[-71.29775390625002,-53.88339843750004],[-72.1744140625,-53.632324218749964],[-72.41289062500002,-53.35019531250004],[-71.94169921874993,-53.23408203125001],[-71.89169921874998,-53.523535156250006],[-71.79145507812498,-53.48457031249997],[-71.74052734374999,-53.232617187499976],[-71.28896484375002,-53.03369140624995],[-71.22714843750003,-52.810644531249984],[-71.38774414062496,-52.76425781250004],[-72.27802734374998,-53.13232421874997],[-72.54892578125,-53.4607421875],[-73.05273437499997,-53.24345703125005],[-72.72768554687502,-52.7623046875],[-72.453466796875,-52.814453124999964],[-72.11757812499997,-52.65],[-71.51127929687502,-52.60537109375],[-72.22568359374998,-52.52099609374995],[-72.43769531250001,-52.62578124999998],[-72.71210937499995,-52.53554687499999],[-73.12246093749997,-53.073925781249976],[-73.64521484374998,-52.83701171875003],[-73.2408203125,-52.707128906250034],[-73.12392578125,-52.487988281249976],[-73.24414062499997,-52.62402343749998],[-73.58569335937503,-52.68574218750003],[-74.01445312499999,-52.63935546875],[-74.26494140624993,-52.1048828125],[-73.83447265625,-52.23398437500001],[-73.68432617187494,-52.07773437499998],[-73.26044921874993,-52.157812500000034],[-72.79501953124998,-51.94951171875005],[-72.57084960937496,-52.200097656249945],[-72.67705078125002,-52.38466796874998],[-72.52333984374997,-52.255468750000034],[-72.62460937499998,-51.94648437499997],[-72.48964843750002,-51.76367187500003],[-72.76123046875,-51.57324218749996],[-73.16875,-51.45390624999998],[-72.60004882812495,-51.79912109374997],[-73.51816406250003,-52.04101562499996],[-73.75263671874993,-51.795507812500034],[-74.19667968749997,-51.68056640624997],[-73.92978515624995,-51.61787109374999],[-73.93950195312499,-51.26630859375005],[-74.81474609374996,-51.06289062499999],[-75.09467773437495,-50.68125],[-74.68574218749995,-50.662011718749945],[-74.77587890625003,-50.46992187499998],[-74.64448242187498,-50.360937499999984],[-74.365576171875,-50.487890625],[-74.13940429687503,-50.81777343749997],[-73.80654296875,-50.93837890625003],[-73.654443359375,-50.49267578125],[-73.97802734375003,-50.827050781249994],[-74.18559570312493,-50.485351562500014],[-73.95034179687497,-50.510546875],[-74.62958984374998,-50.19404296875],[-74.333740234375,-49.97460937499997],[-73.95859374999998,-49.994726562499984],[-74.32392578124995,-49.783398437500004],[-74.29082031249996,-49.604101562499984],[-73.83637695312493,-49.609375],[-74.09443359374993,-49.42968749999998],[-73.93496093749994,-49.02089843750001],[-74.2212890625,-49.500585937500034],[-74.36655273437503,-49.40048828124998],[-74.34101562499998,-48.59570312499998],[-74.00908203124996,-48.475],[-74.47441406249999,-48.46396484374996],[-74.58466796874998,-47.999023437500014],[-73.39106445312498,-48.14589843750001],[-73.60991210937499,-47.993945312500045],[-73.71586914062499,-47.65546875000001],[-73.94086914062498,-47.92939453125004],[-74.22705078124994,-47.96894531250001],[-74.654931640625,-47.702246093750034],[-74.5337890625,-47.567675781249974],[-74.24296874999999,-47.67929687499998],[-74.13408203125002,-47.590820312499986],[-74.48266601562497,-47.43046875],[-74.15839843749998,-47.18251953125002],[-74.31357421874998,-46.78818359374998],[-74.45419921875003,-46.76679687499997],[-74.51225585937496,-46.88515625000002],[-75.00595703125,-46.74111328124998],[-74.98417968750002,-46.51210937499995],[-75.54033203124999,-46.69873046874996],[-75.43037109374995,-46.93457031249996],[-75.70639648437498,-46.70527343749997],[-74.924462890625,-46.159667968750014],[-75.06669921874993,-45.874902343749994],[-74.15786132812497,-45.7671875],[-74.122705078125,-45.49619140625002],[-73.95717773437494,-45.40439453124998],[-73.825,-45.446875],[-74.01992187500002,-46.055859375],[-74.39296875,-46.21738281250005],[-73.96757812500002,-46.15410156250003],[-73.87871093749993,-45.846875],[-73.73525390624994,-45.81171875],[-73.70815429687502,-46.070312500000014],[-73.94863281249997,-46.533105468749966],[-73.845361328125,-46.56601562500002],[-73.59184570312493,-45.89912109375004],[-73.73076171874999,-45.47998046875],[-73.26621093749995,-45.346191406250014],[-72.933837890625,-45.45234374999997],[-73.44497070312497,-45.23818359374995],[-73.36245117187502,-44.97822265625001],[-72.73896484375001,-44.73417968750003],[-72.680078125,-44.59394531249997],[-72.66386718749999,-44.43642578124995],[-73.26508789062498,-44.16865234375001],[-73.22446289062498,-43.89794921875003],[-73.06879882812495,-43.86201171874998],[-72.99658203125,-43.63154296875001],[-73.07597656250002,-43.323632812499994],[-72.75800781249998,-43.039453125],[-72.84804687500002,-42.66914062499997],[-72.77392578125003,-42.505175781250045],[-72.63183593750003,-42.509667968749994],[-72.77324218749996,-42.257714843749994],[-72.63105468749995,-42.199804687500006],[-72.412353515625,-42.388183593750014],[-72.49941406249997,-41.98085937499999],[-72.82407226562503,-41.90878906249996],[-72.36040039062499,-41.64912109375],[-72.31826171875,-41.49902343749997],[-72.54238281250002,-41.690625],[-72.95283203124995,-41.51474609374998],[-73.24179687499995,-41.78085937500002],[-73.62402343750003,-41.77363281249997],[-73.73515625000002,-41.74248046875002],[-73.62392578125,-41.581347656250045],[-73.81074218749995,-41.51748046875001],[-73.96586914062493,-41.118261718750034],[-73.67099609375,-39.96318359374999],[-73.41040039062503,-39.78916015624998],[-73.22646484375002,-39.22441406250003],[-73.52021484375001,-38.509375],[-73.46479492187498,-38.04033203125003],[-73.66181640624998,-37.69853515625003],[-73.66240234375002,-37.341015625000026],[-73.60166015624998,-37.18847656250003],[-73.21596679687502,-37.16689453124998],[-73.11806640624997,-36.68837890625002],[-72.58735351562493,-35.759667968749994],[-72.62392578125002,-35.5857421875],[-72.22377929687494,-35.096191406250014],[-72.00283203124997,-34.16533203125],[-71.66435546875002,-33.65263671875],[-71.74296875,-33.09511718750001],[-71.45224609374998,-32.65957031250001],[-71.70893554687495,-30.62802734375002],[-71.66948242187499,-30.33037109374996],[-71.40039062499997,-30.142968749999966],[-71.31572265624996,-29.649707031250017],[-71.51923828124993,-28.926464843750026],[-71.30673828124998,-28.672460937499963],[-71.08652343749998,-27.814453124999957],[-70.92578125,-27.588671874999974],[-70.64658203124998,-26.329394531250017],[-70.71372070312498,-25.78417968749997],[-70.44536132812502,-25.17265624999999],[-70.57412109374994,-24.644335937500003],[-70.39233398437494,-23.565917968749957],[-70.59335937499995,-23.255468750000034],[-70.56318359374995,-23.057031250000023],[-70.33168945312494,-22.848632812500014],[-70.08002929687501,-21.356835937500037],[-70.19702148437494,-20.725390625],[-70.15742187499995,-19.70585937500003],[-70.41826171874999,-18.345605468750023],[-69.92636718749998,-18.206054687500014],[-69.80258789062498,-17.990234375000014],[-69.85209960937493,-17.70380859375001],[-69.68476562499995,-17.649804687500023],[-69.58642578125,-17.57324218749997],[-69.51093749999998,-17.50605468749997],[-69.31337890624997,-17.943164062500017],[-69.28232421875003,-17.96484375],[-69.09394531249993,-18.05048828125004],[-69.14545898437495,-18.14404296875],[-69.09228515624994,-18.28242187500004],[-69.02680664062493,-18.65625],[-68.97885742187503,-18.81298828125003],[-68.96831054687502,-18.967968749999983],[-68.85795898437499,-19.09335937500005],[-68.62055664062495,-19.29667968749999],[-68.54785156249997,-19.341113281249974],[-68.49199218749996,-19.381933593750034],[-68.47016601562495,-19.409960937499974],[-68.46289062499997,-19.43281250000001],[-68.57529296874998,-19.56015625000002],[-68.69829101562499,-19.721093750000037],[-68.69619140625,-19.74072265625003],[-68.57827148437494,-19.856542968750006],[-68.559375,-19.902343750000014],[-68.56069335937502,-19.96708984374996],[-68.75932617187499,-20.115527343750003],[-68.74516601562493,-20.45859375],[-68.48432617187498,-20.628417968749957],[-68.55825195312497,-20.90195312499999],[-68.197021484375,-21.30029296874997],[-68.18642578124997,-21.618554687499966],[-67.88173828124997,-22.493359375000026],[-67.87944335937496,-22.822949218750026],[-67.57993164062495,-22.89169921874999],[-67.36225585937493,-22.85517578125001],[-67.19487304687493,-22.821679687500037]]]]},"properties":{"name":"Chile","childNum":26}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[110.88876953125006,19.99194335937497],[111.01367187500003,19.65546875000001],[110.64091796875002,19.291210937499955],[110.45126953125012,18.747949218750023],[110.06738281249997,18.447558593750045],[109.51933593750007,18.21826171875003],[108.7015625,18.535253906250034],[108.66552734375003,19.304101562499994],[109.27666015625002,19.761132812500023],[109.17744140625004,19.768457031250023],[109.26347656250007,19.882666015625006],[110.1715820312501,20.053710937500057],[110.58818359375002,19.976367187500017],[110.6517578125,20.137744140625017],[110.88876953125006,19.99194335937497]]],[[[110.38515625000005,21.093164062499966],[110.52158203125006,21.083105468750063],[110.50390625000003,20.96772460937501],[110.28095703125004,21.001171874999983],[110.38515625000005,21.093164062499966]]],[[[112.64375,21.63964843750003],[112.525,21.62304687500003],[112.64765625000004,21.710253906250017],[112.64375,21.63964843750003]]],[[[112.79023437500004,21.601855468750045],[112.78203125000007,21.772265625000045],[112.86259765625002,21.75263671875004],[112.79023437500004,21.601855468750045]]],[[[118.1830078125,24.496289062499983],[118.0905273437501,24.446142578125063],[118.10380859375002,24.552343750000034],[118.1830078125,24.496289062499983]]],[[[119.82089843750006,25.45698242187504],[119.70029296875012,25.432714843750063],[119.72255859375005,25.638818359375023],[119.83837890625003,25.591064453125],[119.82089843750006,25.45698242187504]]],[[[121.2513671875,28.086425781250057],[121.13154296875004,28.062597656250006],[121.20546875,28.204394531250017],[121.2513671875,28.086425781250057]]],[[[122.29589843750003,29.96342773437499],[122.02402343750012,30.01333007812505],[121.96943359375004,30.143115234375017],[122.28447265625007,30.068017578124994],[122.29589843750003,29.96342773437499]]],[[[121.86269531250005,31.492285156249977],[121.519921875,31.549609375000017],[121.2111328125001,31.80537109375001],[121.86269531250005,31.492285156249977]]],[[[130.52695312500012,42.535400390625],[130.24667968750012,42.744824218749955],[130.24033203125006,42.891796874999955],[129.89824218750002,42.998144531250034],[129.69785156250012,42.448144531249994],[129.3136718750001,42.41357421874997],[128.92343750000006,42.038232421874966],[128.04521484375007,41.9875],[128.28925781250004,41.60742187500006],[128.14941406249997,41.38774414062496],[127.17968750000003,41.531347656250006],[126.95478515625004,41.76948242187501],[126.74306640625,41.724853515625],[125.98906250000002,40.904638671875034],[124.8893554687501,40.459814453125006],[124.36210937500002,40.004052734374994],[124.10576171875002,39.84101562499998],[123.65087890625003,39.881591796875],[122.8400390625001,39.600830078125],[121.98232421875,39.05317382812498],[121.67724609374997,39.00341796875006],[121.64990234375003,38.865087890625034],[121.16357421874997,38.73164062500001],[121.10673828125002,38.920800781249994],[121.6798828125001,39.10869140625002],[121.62763671875004,39.22016601562498],[121.81845703125006,39.38652343750002],[121.27548828125006,39.38476562500003],[121.26748046875,39.544677734375],[121.51757812499997,39.638964843750045],[121.51738281250002,39.84482421875006],[121.8009765625001,39.950537109375006],[122.27500000000012,40.541845703125034],[121.83486328125005,40.97426757812502],[121.72929687500002,40.84614257812504],[121.1745117187501,40.901269531249994],[120.47910156250006,40.23095703125003],[119.39111328125003,39.75249023437499],[118.976953125,39.182568359374955],[118.29785156249997,39.067089843749955],[118.04091796875,39.22675781249998],[117.86572265625003,39.191259765625034],[117.61669921875003,38.852880859375034],[117.5578125000001,38.625146484374994],[117.76669921875012,38.311669921874994],[118.01494140625007,38.18339843749996],[118.94003906250006,38.04277343750002],[119.08916015625007,37.70073242187496],[118.95263671875003,37.33115234374998],[119.28740234375002,37.138281250000034],[119.76054687500007,37.15507812499999],[120.31152343750003,37.62270507812505],[120.2572265625,37.67900390624996],[120.75,37.83393554687501],[121.64023437500012,37.46035156250002],[122.05664062500003,37.528906250000034],[122.66699218750003,37.40283203125003],[122.4466796875,37.06811523437503],[122.51972656250004,36.94682617187502],[122.34091796875012,36.83222656250004],[121.93271484375006,36.95947265625003],[121.05380859375006,36.61137695312499],[120.81083984375007,36.6328125],[120.89580078125007,36.44414062500002],[120.71152343750006,36.41328125000004],[120.6378906250001,36.129931640625045],[120.39306640625003,36.053857421874994],[120.32773437500006,36.228173828124994],[120.18330078125004,36.20244140624999],[120.094140625,36.11889648437503],[120.28476562500006,35.98442382812499],[119.42968749999997,35.301416015624994],[119.16533203125002,34.84882812499998],[119.20097656250002,34.748437499999966],[120.26669921875006,34.274023437500034],[120.87109374999997,33.016503906249994],[120.8532226562501,32.66137695312503],[121.34169921875005,32.42504882812503],[121.40390625000006,32.20625],[121.85634765625,31.816455078125045],[121.86630859375006,31.703564453124955],[121.68085937500004,31.71215820312503],[121.351953125,31.85878906250005],[120.97353515625,31.86938476562497],[120.52011718750006,32.10585937500002],[120.03593750000002,31.93627929687503],[120.7155273437501,31.983740234375006],[120.7877929687501,31.81977539062501],[121.66064453124997,31.319726562499994],[121.87792968750003,30.91699218750003],[121.41894531249997,30.789794921875057],[120.8214843750001,30.354638671875023],[120.44980468750006,30.38784179687505],[120.19462890625002,30.241308593750034],[120.49453125,30.303076171875006],[120.63339843750006,30.133154296875034],[121.25800781250004,30.30410156250005],[121.67792968750004,29.979101562500006],[122.08291015625005,29.870361328125057],[121.50625,29.484570312499955],[121.94121093750002,29.605908203124983],[121.91777343750007,29.13500976562497],[121.71748046875004,29.25634765625],[121.48710937500007,29.193164062500017],[121.67968749999997,28.953125],[121.54003906250003,28.931884765625],[121.6625,28.851416015625034],[121.47519531250006,28.64140625],[121.60996093750006,28.29213867187505],[121.27226562500002,28.222119140624983],[121.14570312500004,28.32666015624997],[120.95859375000006,28.037011718750023],[120.74765625000006,28.00996093750001],[120.83300781249997,27.891455078125034],[120.58750000000012,27.580761718749983],[120.60751953125012,27.41240234374996],[120.2787109375,27.097070312500023],[120.08671875000007,26.67158203125004],[119.88222656250005,26.610449218750006],[119.82421874999997,26.84638671875001],[119.71044921874997,26.728662109375023],[119.58818359375002,26.784960937500045],[119.8810546875001,26.33417968750004],[119.46308593750004,26.05468750000003],[119.13945312500007,26.12177734375001],[119.33203124999997,25.94873046875003],[119.61875000000012,26.003564453124994],[119.53945312500005,25.59125976562504],[119.6224609375,25.391162109375017],[119.180078125,25.449804687499977],[119.285546875,25.232226562500074],[118.97753906249997,25.209277343750017],[118.90908203125005,24.92890625000001],[118.63691406250004,24.835546874999977],[118.65703125000002,24.621435546874977],[118.0871093750001,24.627001953125045],[118.00595703125006,24.48198242187499],[117.84267578125005,24.47431640625004],[118.0560546875,24.24609374999997],[117.62822265625002,23.836718750000074],[117.46640625000012,23.84057617187497],[117.36767578124997,23.58862304687497],[117.29082031250007,23.71435546875],[117.08251953124997,23.578759765625023],[116.91064453124997,23.646679687499983],[116.86093750000006,23.453076171874983],[116.62939453124997,23.353857421875034],[116.69882812500006,23.277783203124983],[116.53828125000004,23.17968749999997],[116.47070312499997,22.945898437500034],[116.25185546875005,22.981347656249994],[115.85214843750006,22.801562500000045],[115.64042968750002,22.853417968750023],[115.49833984375002,22.718847656250063],[115.19580078125003,22.81728515625005],[114.85380859375007,22.616796875000063],[114.65166015625002,22.755273437500023],[114.55419921874997,22.52890625],[114.26601562500005,22.540966796874983],[114.01542968750007,22.51191406250001],[113.61962890624997,22.861425781249977],[113.6205078125,23.12749023437499],[113.51972656250004,23.102099609375074],[113.33105468749997,22.912011718749966],[113.55302734375002,22.594042968750045],[113.54912109375002,22.225195312500034],[113.14902343750012,22.075],[113.08876953125,22.207958984374983],[112.95390625000007,21.907324218750034],[112.80859374999997,21.944628906250074],[112.58632812500005,21.77685546875],[112.35966796875007,21.97802734375003],[112.30498046875002,21.74169921875003],[111.94394531250012,21.84965820312499],[111.60273437500004,21.55908203125003],[111.01689453125007,21.51171874999997],[110.56718750000002,21.21406250000001],[110.41093750000007,21.33813476562497],[110.15400390625004,20.944628906250017],[110.36542968750004,20.837597656249955],[110.31308593750012,20.67167968749999],[110.51152343750007,20.51826171875001],[110.34472656249997,20.29482421875005],[109.88251953125004,20.364062500000045],[109.96835937500006,20.448144531250023],[109.66259765625003,20.91689453125005],[109.68125000000012,21.13164062499999],[109.93076171875012,21.480566406250034],[109.6869140625,21.52460937500004],[109.56640624999997,21.690576171874994],[109.54404296875012,21.537939453125006],[109.14863281250004,21.425537109375],[109.1017578125001,21.59047851562505],[108.77167968750004,21.63046875],[108.59375,21.901025390624994],[108.47988281250005,21.904638671875006],[108.50214843750004,21.633447265624994],[108.32480468750006,21.693505859374994],[108.24628906250004,21.55839843749999],[107.97265624999997,21.507958984375023],[107.75927734374997,21.655029296875057],[107.35117187500012,21.60888671874997],[106.97099609375002,21.923925781250034],[106.66357421875003,21.97890625000005],[106.55039062500006,22.501367187499994],[106.78027343749997,22.778906250000034],[106.54179687500007,22.908349609375023],[106.2790039062501,22.857470703125045],[106.14843749999997,22.970068359375006],[105.8429687500001,22.922802734374955],[105.27539062500003,23.34521484375003],[104.86474609375003,23.136376953125023],[104.68730468750002,22.822216796874983],[104.37177734375004,22.704052734374983],[104.14306640624997,22.800146484375006],[103.94150390625006,22.540087890625045],[103.62021484375006,22.782031250000045],[103.49296875000007,22.587988281250034],[103.32666015625003,22.769775390625057],[102.98193359374997,22.4482421875],[102.47089843750004,22.75092773437501],[102.40644531250004,22.70800781249997],[102.2370117187501,22.466015624999983],[102.1759765625001,22.414648437500006],[102.12744140624997,22.379199218750045],[101.84179687500003,22.38847656249999],[101.75996093750004,22.490332031250034],[101.73876953124997,22.495263671874994],[101.70751953125003,22.486572265625],[101.67148437500006,22.462304687500023],[101.64619140625004,22.405419921874966],[101.61992187500002,22.32744140624999],[101.56787109374997,22.27636718749997],[101.52451171875006,22.25366210937497],[101.7365234375001,21.826513671874977],[101.74394531250007,21.77797851562505],[101.74726562500004,21.605761718750045],[101.72294921875007,21.31494140625003],[101.80058593750007,21.212597656249983],[101.78349609375007,21.204150390625017],[101.728125,21.156396484374994],[101.7047851562501,21.15014648437503],[101.54238281250005,21.23427734375005],[101.2814453125001,21.184130859375045],[101.24785156250007,21.197314453125045],[101.22441406250002,21.223730468750034],[101.21181640625,21.278222656250023],[101.2199218750001,21.34243164062505],[101.17539062500006,21.407519531250074],[101.19667968750005,21.522070312500063],[101.1388671875001,21.567480468749977],[101.07978515625004,21.75585937499997],[100.60458984375012,21.471777343750006],[100.14765625000004,21.480517578125017],[99.94072265625007,21.75874023437504],[99.9176757812501,22.02802734375001],[99.19296875000006,22.12597656249997],[99.50712890625002,22.959130859374994],[99.41806640625006,23.069238281250023],[98.86376953125003,23.191259765625034],[98.8322265625001,23.624365234374977],[98.67675781250003,23.905078125000045],[98.83505859375006,24.121191406250034],[98.2125,24.110644531250017],[97.56455078125012,23.911035156250023],[97.7082031250001,24.228759765625],[97.53144531250004,24.49169921875003],[97.58330078125002,24.77480468750005],[97.73789062500006,24.869873046875057],[97.8195312500001,25.251855468749994],[98.01074218749997,25.292529296875017],[98.14287109375007,25.571093750000017],[98.33378906250007,25.586767578125006],[98.65625,25.86357421874999],[98.56406250000006,26.072412109374994],[98.68554687499997,26.189355468750023],[98.7384765625001,26.785742187500006],[98.65117187500007,27.572460937499983],[98.4525390625,27.6572265625],[98.29882812499997,27.550097656250045],[98.06162109375012,28.185888671874977],[97.59921875000006,28.51704101562504],[97.53789062500002,28.510205078124983],[97.43144531250002,28.353906250000023],[97.35644531249997,28.254492187500006],[97.32158929493812,28.217097107438057],[97.3027336276825,28.08710519614969],[97.34382779482424,27.982305259167095],[97.04929369561631,27.76000444316393],[96.96494598325154,27.699301564540924],[96.19423412199573,28.04146177926422],[95.73730002295082,28.117613231051525],[95.11298892962586,27.748338353239472],[94.07167814294401,27.588707868507477],[93.61247595136224,27.323800298697016],[93.30681393470121,26.786120363519142],[92.74319481218781,26.833531317384058],[92.04974640832253,26.874866505386724],[92.07342257335648,26.915311275859864],[92.06813426293174,26.9752569185349],[92.02985139563152,27.03987087331446],[91.99856592104459,27.079255842602592],[91.99177981607339,27.100605151743654],[92.0025114452454,27.147290053160265],[92.03101585307499,27.214271359861193],[92.08387457645458,27.29090135496722],[92.04520857607581,27.364442429033787],[91.99069061380867,27.450181624174498],[91.95099838734396,27.45828799115413],[91.85276579410389,27.438593286730903],[91.74366351462741,27.442853010105477],[91.59505352446729,27.557262710287986],[91.63193359375012,27.759960937499983],[91.64189453125002,27.923242187500023],[91.36259958579089,28.02438066407592],[91.27304687500012,28.078369140625],[91.22587890625007,28.071240234374983],[91.07773437500012,27.974462890624977],[91.02080078125002,27.970068359374977],[90.71572265625,28.071728515624983],[90.63007812500004,28.078564453124955],[90.47734375000007,28.07084960937499],[90.3527343750001,28.080224609375023],[90.33310546875012,28.093994140625],[90.36298828125004,28.21650390625001],[90.34824218750006,28.24394531249999],[90.22080078125006,28.27773437500005],[90.10449218749997,28.302050781250017],[89.98105468750006,28.311181640625023],[89.8978515625,28.29414062500001],[89.81689453125003,28.25629882812501],[89.74980468750002,28.18818359375001],[89.65273437500005,28.158300781250034],[89.53691406250007,28.10742187499997],[89.4806640625001,28.059960937499994],[88.89140625000002,27.316064453124966],[88.83251953125003,27.36284179687499],[88.7648437500001,27.429882812499983],[88.74902343749997,27.521875],[88.82988281250002,27.76738281249999],[88.84882812500004,27.86865234375],[88.80371093750003,28.006933593750034],[88.57792968750002,28.093359375000034],[88.42597656250004,28.01166992187501],[88.27519531250007,27.968847656250006],[88.14111328125003,27.94892578125001],[88.10898437500006,27.933007812499966],[88.10976562500005,27.870605468750057],[87.8607421875,27.886083984375006],[87.62255859374997,27.81518554687503],[87.29072265625004,27.821923828124994],[87.14140625000002,27.838330078124955],[87.02011718750006,27.928662109374983],[86.9337890625001,27.96845703125001],[86.84238281250012,27.99916992187505],[86.750390625,28.022070312500006],[86.71962890625005,28.070654296875034],[86.69052734375006,28.09492187500001],[86.61445312500004,28.10302734374997],[86.55449218750007,28.08520507812497],[86.51689453125007,27.963525390624966],[86.40869140625003,27.928662109374983],[86.32861328124997,27.95952148437496],[86.2179687500001,28.022070312500006],[86.13701171875002,28.114355468750063],[86.07871093750006,28.08359375],[86.0641601562501,27.934716796874966],[85.99453125000005,27.910400390625],[85.95410156249997,27.92822265624997],[85.92167968750002,27.989697265624983],[85.84023437500005,28.135351562499977],[85.75947265625004,28.220654296874955],[85.67832031250012,28.277441406249977],[85.41064453125003,28.27602539062505],[85.21210937500004,28.292626953124966],[85.1224609375,28.315966796875017],[85.08857421875004,28.37226562500001],[85.121484375,28.484277343750023],[85.16015624999997,28.571875],[85.15908203125,28.592236328124983],[85.1263671875,28.602636718750063],[85.06914062500007,28.60966796874999],[84.85507812500006,28.553613281250023],[84.796875,28.560205078125023],[84.2287109375001,28.911767578124966],[84.17558593750002,29.036376953125057],[84.12783203125005,29.15629882812496],[84.10136718750002,29.21997070312497],[84.02197265624997,29.25385742187504],[83.93593750000005,29.27949218750001],[83.58349609375003,29.18359375000003],[83.15546875000004,29.612646484375034],[82.22070312500003,30.063867187500023],[82.04335937500005,30.326757812500034],[81.8548828125,30.362402343750006],[81.64189453125007,30.3875],[81.4171875000001,30.33759765625001],[81.25507812500004,30.09331054687499],[81.17714843750005,30.039892578125034],[80.98544921875006,30.23710937499999],[80.87353515625003,30.290576171875045],[80.19121093750002,30.56840820312496],[80.20712890625006,30.683740234375023],[79.92451171875004,30.888769531250034],[79.66425781250004,30.96523437499999],[79.38847656250007,31.064208984375],[79.10712890625004,31.402636718750017],[78.74355468750005,31.323779296875017],[78.7550781250001,31.55029296875],[78.69345703125006,31.740380859374994],[78.72558593750003,31.983789062500023],[78.49589843750002,32.21577148437504],[78.4552734375001,32.30034179687502],[78.41748046874997,32.466699218749994],[78.38964843749997,32.51987304687498],[78.73671875,32.55839843750002],[78.75351562500012,32.49926757812506],[78.91894531249997,32.35820312500002],[79.16992187500003,32.497216796874994],[79.14550781250003,33.00146484375006],[79.10283203125007,33.05253906249996],[79.13515625000005,33.17192382812496],[79.1125,33.22626953125001],[78.94843750000004,33.346533203125006],[78.86503906250002,33.43110351562501],[78.78378906250006,33.80878906250004],[78.72666015625006,34.013378906249955],[78.97060546875,34.22822265625004],[78.93642578125,34.35195312500002],[78.86484375000006,34.39033203125001],[78.32695312500007,34.60639648437498],[78.15849609375002,34.94648437499998],[78.07578125000006,35.13491210937502],[78.0426757812501,35.47978515625002],[77.79941406250006,35.49589843750002],[77.44648437500004,35.47558593750006],[77.29482421875005,35.508154296875034],[77.09003906250004,35.55205078124999],[76.87890625000003,35.61328125000003],[76.76689453125002,35.661718750000034],[76.72753906250003,35.67866210937504],[76.63183593749997,35.729394531249966],[76.56347656249997,35.77299804687499],[76.55126953124997,35.887060546875034],[76.50205078125006,35.87822265625002],[76.38574218750003,35.837158203125],[76.25166015625004,35.8109375],[76.17783203125012,35.810546875],[76.14785156250005,35.82900390625002],[76.07089843750006,35.983007812500034],[75.91230468750004,36.048974609374994],[75.97441406250007,36.38242187500006],[75.9518554687501,36.458105468750034],[75.9330078125,36.52158203124998],[75.840234375,36.64970703124999],[75.7721679687501,36.694921875000034],[75.6671875000001,36.741992187500045],[75.57373046874997,36.75932617187502],[75.46025390625002,36.725048828124955],[75.42421875000005,36.73823242187498],[75.37685546875,36.88369140625005],[75.34667968749997,36.913476562499966],[75.05390625000004,36.98715820312498],[74.94912109375,36.96835937500006],[74.88925781250006,36.95244140625002],[74.69218750000007,37.035742187500006],[74.60058593749997,37.03666992187502],[74.54140625,37.02216796875001],[74.52646484375006,37.03066406250005],[74.49794921875,37.057226562500034],[74.37617187500004,37.13735351562502],[74.37216796875006,37.15771484375],[74.558984375,37.23662109374999],[74.66894531250003,37.266699218750006],[74.72666015625006,37.29072265625001],[74.7389648437501,37.28564453125003],[74.76738281250002,37.249169921874966],[74.840234375,37.22504882812504],[74.89130859375004,37.231640624999955],[75.11875,37.38569335937498],[74.8942382812501,37.60141601562498],[74.81230468750002,38.46030273437498],[74.27744140625,38.659765625000034],[74.02558593750004,38.53984375000002],[73.80166015625,38.60688476562501],[73.69609375000007,38.85429687499996],[73.8052734375,38.968652343749994],[73.60732421875,39.229199218749955],[73.63632812500006,39.396679687499955],[73.63164062500007,39.44887695312502],[73.82294921875004,39.48896484375004],[73.90712890625,39.578515624999966],[73.9146484375,39.60649414062499],[73.88251953125004,39.71455078124998],[73.83974609375005,39.76284179687505],[73.8353515625,39.800146484375006],[73.85625,39.828662109375045],[73.88457031250002,39.87792968750006],[73.93876953125002,39.97880859374999],[73.99160156250005,40.04311523437502],[74.83046875,40.32851562499999],[74.80126953124997,40.428515625000045],[74.83515625000004,40.482617187499955],[74.865625,40.493505859375034],[75.0044921875,40.44951171874996],[75.11132812499997,40.4541015625],[75.24101562500002,40.48027343750002],[75.52080078125002,40.627539062500006],[75.55556640625,40.625195312499955],[75.6771484375,40.305810546874994],[75.87197265625,40.30322265625],[76.25830078124997,40.43076171875006],[76.3185546875001,40.352246093749955],[76.39638671875005,40.389794921874966],[76.4801757812501,40.44951171874996],[76.57792968750002,40.577880859375],[76.62216796875006,40.66235351562497],[76.6398437500001,40.74223632812499],[76.66113281249997,40.77963867187498],[76.70839843750005,40.818115234375],[76.82402343750002,40.982324218749966],[76.90771484374997,41.02416992187497],[76.98662109375002,41.039160156250006],[77.58173828125004,40.99277343750006],[77.71933593750012,41.024316406249994],[77.81523437500002,41.05561523437498],[77.9564453125,41.05068359375005],[78.1234375,41.07563476562498],[78.34628906250012,41.28144531249998],[78.36240234375012,41.37163085937496],[78.44287109374997,41.41752929687499],[78.742578125,41.56005859375],[79.29355468750006,41.78281249999998],[79.76611328124997,41.89887695312501],[79.84042968750012,41.99575195312502],[79.90966796875003,42.014990234375034],[80.21621093750005,42.03242187500004],[80.23515625000007,42.04345703124997],[80.24619140625012,42.05981445312503],[80.209375,42.190039062500006],[80.20224609375012,42.73447265624998],[80.53896484375005,42.873486328124955],[80.39023437500006,43.043115234374966],[80.78574218750006,43.16157226562504],[80.35527343750002,44.09726562500006],[80.48154296875006,44.71464843749999],[79.871875,44.88378906249997],[80.05917968750012,45.006445312500006],[81.69199218750012,45.34936523437497],[81.94492187500006,45.16083984375001],[82.26660156249997,45.21909179687498],[82.52148437500003,45.12548828125],[82.61162109375007,45.424267578124955],[82.31523437500002,45.59492187499998],[83.02949218750004,47.18593750000002],[84.016015625,46.97050781250002],[84.66660156250006,46.97236328125004],[84.78613281249997,46.83071289062505],[85.484765625,47.06352539062496],[85.65664062500005,47.254638671875],[85.52597656250006,47.915625],[85.7494140625,48.38505859374999],[86.54941406250012,48.52861328125002],[86.8083007812501,49.04970703125002],[87.32285156250012,49.085791015625006],[87.41669921875004,49.07661132812501],[87.5158203125001,49.122412109375006],[87.7625,49.16582031249996],[87.81425781250002,49.162304687499955],[87.87216796875012,49.000146484374966],[87.74316406250003,48.88164062499999],[87.83183593750007,48.79165039062505],[88.02792968750006,48.735595703125],[88.06005859375003,48.707177734374966],[87.9796875000001,48.55512695312498],[88.30996093750005,48.47207031250002],[88.41396484375,48.403417968750006],[88.51708984374997,48.384472656249955],[88.56679687500005,48.31743164062496],[88.57597656250007,48.220166015624955],[88.68183593750004,48.170556640624994],[88.83828125000005,48.101708984374994],[88.91777343750007,48.089013671874966],[89.04765625000007,48.002539062500034],[89.47919921875004,48.02905273437503],[89.5609375,48.00395507812496],[89.778125,47.82700195312498],[89.83134765625002,47.82329101562502],[89.91044921875007,47.844335937500034],[89.95869140625004,47.88632812499998],[90.02792968750012,47.877685546875],[90.1032226562501,47.74541015624996],[90.19101562500012,47.70209960937501],[90.31328125000007,47.67617187499999],[90.33066406250006,47.655175781249966],[90.42519531250005,47.50410156250001],[90.49619140625012,47.28515625],[90.64335937500007,47.10029296874998],[90.71552734375004,47.00385742187498],[90.7990234375001,46.98515624999999],[90.86992187500002,46.95449218750005],[90.91054687500005,46.88325195312501],[90.9857421875,46.7490234375],[90.9115234375,46.270654296874994],[90.94755859375002,46.17729492187499],[90.99677734375004,46.10498046875],[91.00175781250007,46.03579101562502],[90.6618164062501,45.525244140625006],[90.87724609375002,45.19609375000002],[91.05,45.217431640624994],[91.584375,45.07651367187498],[92.42382812499997,45.008935546874994],[92.57890625000002,45.01098632812506],[92.78789062500007,45.035742187500034],[93.51621093750012,44.944482421874994],[94.71201171875012,44.35083007812503],[95.35029296875004,44.27807617187503],[95.32558593750005,44.03935546874999],[95.52558593750004,43.953955078125006],[95.85957031250004,43.27597656249998],[96.38544921875004,42.72036132812502],[97.20566406250012,42.78979492187506],[99.46787109375012,42.568212890625034],[99.98378906250005,42.67734375000006],[100.08632812500005,42.67075195312506],[100.51904296875003,42.61679687499998],[101.09199218750004,42.55131835937496],[101.49531250000004,42.53876953124998],[101.57910156249997,42.52353515624998],[101.65996093750002,42.50004882812499],[101.97294921875002,42.21586914062502],[102.15664062500005,42.158105468749966],[102.57519531249997,42.09208984375002],[103.07285156250006,42.00595703125006],[103.7111328125001,41.75131835937506],[103.99726562500004,41.796972656250034],[104.30517578124997,41.84614257812501],[104.49824218750004,41.87700195312499],[104.49824218750004,41.65869140625],[104.86035156250003,41.64375],[104.98203125000012,41.59550781250002],[105.05058593750002,41.61591796875001],[105.1154296875001,41.66328124999998],[105.19707031250002,41.738037109375],[105.31435546875005,41.77089843750005],[105.86757812500005,41.993994140625034],[106.77001953125003,42.28872070312502],[108.17119140625002,42.44731445312502],[108.68730468750002,42.416113281250034],[109.33984374999997,42.43837890625005],[109.44316406250002,42.455957031249994],[110.40039062499997,42.77368164062497],[111.00722656250005,43.34140624999998],[111.878125,43.68017578125],[111.93173828125012,43.81494140625],[111.40224609375005,44.367285156250006],[111.89804687500006,45.064062500000034],[112.03261718750005,45.08164062500006],[112.11289062500006,45.06293945312498],[112.41132812500004,45.05820312499998],[112.49931640625002,45.01093750000004],[112.59677734375006,44.917675781249955],[112.7067382812501,44.883447265624994],[113.04941406250006,44.81035156250002],[113.3009765625001,44.79165039062502],[113.50791015625006,44.76235351562502],[113.58701171875006,44.745703125],[113.65263671875002,44.76347656249999],[113.87705078125012,44.89619140625001],[114.03027343749997,44.942578124999955],[114.08027343750004,44.97114257812501],[114.41914062500004,45.20258789062501],[114.56015625000012,45.38999023437498],[114.73876953124997,45.41962890624998],[114.91923828125007,45.378271484375006],[115.16259765624997,45.390234375000034],[115.6810546875,45.45825195312503],[116.19765625,45.739355468750006],[116.240625,45.795996093750006],[116.22910156250012,45.84575195312502],[116.21298828125012,45.88691406249998],[116.56259765625012,46.28979492187497],[116.85908203125004,46.387939453125],[117.3333984375,46.36201171875004],[117.35693359375003,46.391308593749955],[117.35634765625,46.436669921874966],[117.39218750000012,46.53759765625003],[117.40556640625007,46.57089843750006],[117.43808593750012,46.58623046874999],[117.546875,46.58828125000005],[117.74121093749997,46.51816406250006],[118.07128906249997,46.666601562500006],[118.15683593750006,46.678564453125034],[118.30869140625012,46.71704101562497],[118.40439453125006,46.70317382812499],[118.58046875,46.69189453125],[118.64873046875002,46.70166015625006],[118.72294921875007,46.69189453125],[118.8439453125001,46.76020507812498],[118.95712890625006,46.73486328124997],[119.16210937499997,46.638671875],[119.33183593750002,46.61381835937499],[119.47402343750005,46.626660156249955],[119.62021484375006,46.60395507812504],[119.70664062500006,46.60600585937502],[119.74746093750005,46.62719726562497],[119.86718750000003,46.67216796874999],[119.89785156250005,46.857812499999966],[119.71113281250004,47.15],[119.08193359375,47.654150390625034],[119.01757812500003,47.68535156249999],[118.88027343750005,47.72509765625],[118.75996093750004,47.75761718749996],[118.69052734375012,47.822265625],[118.56777343750005,47.94326171875005],[118.49843750000005,47.98398437499998],[117.76835937500002,47.98789062499998],[117.3507812500001,47.65219726562498],[117.28593750000002,47.666357421875034],[117.06972656250005,47.80639648437506],[116.95166015624997,47.836572265624966],[116.90117187500007,47.85307617187496],[116.76054687500002,47.869775390624994],[116.65195312500012,47.86450195312497],[116.51347656250007,47.839550781249955],[116.37822265625002,47.84404296874999],[116.31718750000002,47.85986328125],[116.2311523437501,47.85820312500002],[116.07480468750012,47.78955078125],[115.99384765625004,47.71132812500005],[115.89824218750002,47.68691406250005],[115.6164062500001,47.874804687500045],[115.52509765625004,48.13085937499997],[115.63945312500007,48.18623046874998],[115.785546875,48.24824218750001],[115.7965820312501,48.346337890624994],[115.7916992187501,48.455712890624994],[115.8205078125001,48.57724609375006],[116.6833007812501,49.82377929687499],[117.8734375,49.51347656250002],[118.4515625,49.84448242187503],[119.25986328125012,50.06640625000003],[119.34628906250012,50.278955078124994],[119.16367187500006,50.40600585937503],[120.06689453125003,51.60068359375006],[120.74980468750007,52.096533203125006],[120.65615234375,52.56665039062503],[120.0675781250001,52.632910156250034],[120.09453125000007,52.787207031250034],[120.98544921875012,53.28457031250002],[123.6078125,53.546533203124994],[124.81230468750002,53.133837890625045],[125.075,53.20366210937496],[125.64902343750012,53.042285156250045],[126.34169921875,52.36201171875001],[126.92480468749997,51.10014648437496],[127.30703125000005,50.70795898437501],[127.33720703125007,50.35014648437502],[127.590234375,50.20898437500003],[127.55078124999997,49.801806640625045],[127.99960937500006,49.56860351562506],[128.70400390625,49.60014648437499],[129.0651367187501,49.374658203124966],[129.49814453125012,49.38881835937502],[130.1959960937501,48.89165039062499],[130.553125,48.861181640625006],[130.5521484375,48.602490234374955],[130.80429687500012,48.34150390624998],[130.7326171875001,48.01923828124998],[130.96191406249997,47.70932617187498],[132.47626953125004,47.714990234374994],[132.7072265625001,47.94726562500006],[133.14404296875003,48.10566406249998],[133.46835937500006,48.09716796875003],[134.29335937500005,48.37343750000002],[134.66523437500004,48.25390625],[134.56601562500006,48.02250976562502],[134.75234375,47.71542968749998],[134.1676757812501,47.30219726562501],[133.86132812500003,46.24775390625004],[133.43642578125,45.60468750000004],[133.18603515625003,45.49482421875004],[133.1134765625001,45.130712890625006],[132.93603515624997,45.029931640624994],[131.85185546875002,45.32685546875001],[131.44687500000012,44.984033203124966],[130.9816406250001,44.844335937500034],[131.2552734375,44.07158203124999],[131.25732421875003,43.378076171874994],[131.06855468750004,42.90224609375005],[130.42480468749997,42.72705078124997],[130.52695312500012,42.535400390625]]],[[[113.9977539062501,22.210498046875045],[113.83886718749997,22.24169921875003],[114.04394531250003,22.33339843750005],[113.9977539062501,22.210498046875045]]],[[[114.01542968750007,22.51191406250001],[114.26601562500005,22.540966796874983],[114.26796875,22.295556640624966],[113.93730468750002,22.364990234375],[114.01542968750007,22.51191406250001]]],[],[[[118.4074218750001,24.522119140624994],[118.43271484375006,24.414355468750074],[118.29511718750004,24.436328125000017],[118.4074218750001,24.522119140624994]]],[[[121.00878906249997,22.62036132812497],[120.83984375000003,21.925],[120.2328125,22.71791992187505],[120.0724609375001,23.149755859375006],[120.13212890625007,23.652929687500034],[121.040625,25.032812500000034],[121.59365234375,25.275341796874983],[121.92900390625002,24.973730468749977],[121.39746093750003,23.172509765625023],[121.00878906249997,22.62036132812497]]]]},"properties":{"name":"China","childNum":15}},{"geometry":{"type":"Polygon","coordinates":[[[-5.262304687499977,10.319677734374991],[-4.72177734374992,9.756542968750026],[-4.625830078125006,9.713574218749969],[-4.526611328124943,9.723486328125034],[-4.406201171874926,9.647998046875031],[-4.332226562499955,9.645703125],[-4.18115234375,9.78173828125],[-3.790625,9.917187499999983],[-3.581152343749977,9.924316406250014],[-3.289697265625023,9.882226562500051],[-3.223535156249937,9.895458984374997],[-3.160693359374932,9.849169921874974],[-3.095800781249949,9.752099609375009],[-3.042626953124937,9.72089843750004],[-2.988281249999972,9.687353515624963],[-2.900878906249943,9.534619140625026],[-2.875146484374937,9.500927734374997],[-2.816748046874949,9.425830078124974],[-2.766601562499943,9.424707031250009],[-2.7171875,9.457128906250048],[-2.695849609374989,9.481347656250009],[-2.686132812499977,9.43173828125002],[-2.705761718749983,9.351367187499989],[-2.74692382812492,9.04511718750004],[-2.689892578124955,9.02509765625004],[-2.649218750000017,8.956591796875031],[-2.600390625000017,8.800439453125023],[-2.505859375000028,8.208740234375],[-2.538281249999955,8.171630859374986],[-2.61171875,8.147558593749963],[-2.619970703125006,8.12109375],[-2.600976562499937,8.082226562499983],[-2.613378906249977,8.046679687500017],[-2.668847656249994,8.022216796875014],[-2.789746093749955,7.931933593750003],[-2.959082031249977,7.454541015624997],[-3.227148437499977,6.749121093749991],[-2.998291015624972,5.711328125000051],[-2.793652343749955,5.600097656250028],[-2.754980468749977,5.432519531249994],[-2.815673828125,5.153027343749997],[-3.168701171874972,5.203027343749966],[-3.199951171874943,5.3544921875],[-3.347558593749994,5.13066406249996],[-4.120166015625017,5.309716796875023],[-4.60888671875,5.235888671875003],[-4.037207031249977,5.23012695312498],[-4.899707031249932,5.138330078125023],[-5.282373046874994,5.210253906250017],[-5.36752929687492,5.15078125],[-5.061816406249989,5.13066406249996],[-5.913769531249926,5.0109375],[-7.544970703124989,4.351318359375],[-7.574658203124983,4.572314453124989],[-7.585058593749977,4.916748046875],[-7.39990234375,5.550585937499989],[-7.454394531249989,5.841308593749972],[-7.636132812499994,5.90771484375],[-7.730371093749994,5.919042968749991],[-7.800927734374994,6.038916015624991],[-7.833251953125,6.076367187499983],[-7.855517578125017,6.150146484375],[-7.888623046875011,6.234863281250028],[-7.981591796874937,6.2861328125],[-8.287109375,6.31904296875004],[-8.587890625,6.490527343749989],[-8.324511718749989,6.920019531249991],[-8.408740234374989,7.411816406249997],[-8.429980468749989,7.601855468749989],[-8.351757812499926,7.590576171875],[-8.231884765624955,7.556738281250034],[-8.205957031249994,7.590234375000023],[-8.115429687499926,7.760742187500028],[-8.126855468749937,7.867724609374974],[-8.00986328124992,8.078515625000023],[-8.048583984375,8.169726562500045],[-8.140625,8.181445312500031],[-8.217138671874949,8.219677734375011],[-8.256103515625,8.253710937500017],[-8.244140624999943,8.407910156249983],[-8.236962890624994,8.455664062500034],[-7.953125,8.477734375],[-7.823583984374977,8.467675781249994],[-7.738964843749983,8.375244140624986],[-7.696093749999932,8.375585937499977],[-7.71958007812492,8.643017578125011],[-7.950976562499989,8.786816406249997],[-7.938183593749983,8.97978515624996],[-7.902099609375,9.017089843750014],[-7.777978515624937,9.080859375000031],[-7.799804687499943,9.115039062499989],[-7.839404296875017,9.151611328124972],[-7.918066406249949,9.188525390625031],[-7.896191406249955,9.415869140624991],[-8.136962890624972,9.49570312499999],[-8.155175781249937,9.973193359375017],[-7.990625,10.1625],[-7.661132812500028,10.427441406250011],[-7.385058593749989,10.340136718749989],[-7.01708984375,10.143261718750026],[-6.950341796874994,10.342333984374989],[-6.693261718750023,10.34946289062502],[-6.669335937499937,10.39218750000002],[-6.69199218749992,10.512011718750017],[-6.686132812499977,10.578027343750051],[-6.676367187499949,10.633789062500043],[-6.654150390624949,10.65644531250004],[-6.482617187499983,10.561230468749997],[-6.250244140625,10.717919921875037],[-6.190673828124943,10.400292968749994],[-6.192626953124972,10.369433593750003],[-6.241308593749949,10.279199218750009],[-6.238378906249977,10.26162109374998],[-6.117187499999972,10.201904296874986],[-6.034570312499937,10.194824218750057],[-5.907568359375006,10.307226562500034],[-5.896191406249983,10.354736328125028],[-5.843847656249977,10.389550781250023],[-5.694287109374983,10.433203125000034],[-5.556591796874983,10.439941406249986],[-5.382275390625011,10.314013671875003],[-5.262304687499977,10.319677734374991]]]},"properties":{"name":"C\xF4te d'Ivoire","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[15.480078125,7.523779296874991],[15.206738281250011,7.206152343749991],[14.7392578125,6.27978515625],[14.43115234375,6.038720703124994],[14.616894531250011,5.865136718749994],[14.56298828125,5.279931640624994],[14.73125,4.602392578124991],[15.063574218750006,4.284863281249997],[15.128710937500017,3.826904296875],[16.0634765625,2.90859375],[16.183398437500017,2.270068359374989],[16.059375,1.676220703124997],[15.741601562500023,1.914990234374997],[14.902441406250006,2.012304687499991],[14.578906250000017,2.199121093749994],[13.293554687500006,2.161572265624997],[13.2203125,2.256445312499991],[11.558984375000023,2.302197265624997],[11.348437500000017,2.299707031249994],[11.328710937500006,2.167431640624997],[11.096582031250023,2.16748046875],[10.790917968750023,2.16757812499999],[9.979882812500023,2.167773437499989],[9.8701171875,2.21328125],[9.8369140625,2.242382812499997],[9.830371093750017,2.275488281249991],[9.826171875,2.297802734374997],[9.80078125,2.304443359375],[9.82177734375,2.539257812499997],[9.948437500000011,3.079052734374997],[9.672070312500011,3.53759765625],[9.765722656250006,3.623828124999989],[9.642382812500017,3.611767578124997],[9.55615234375,3.798046875],[9.739648437500023,3.852929687499994],[9.639941406250017,3.96533203125],[9.688867187500023,4.056396484375],[9.483691406250017,4.066113281249997],[9.42529296875,3.922314453124997],[9.000097656250006,4.091601562499989],[8.918261718750017,4.553759765624989],[8.660351562500011,4.670996093749991],[8.65625,4.516357421875],[8.53955078125,4.571875],[8.715625,5.046875],[8.997167968750006,5.917724609375],[9.490234375,6.418652343749997],[9.779882812500006,6.76015625],[9.820703125000023,6.783935546875],[9.874218750000011,6.803271484374989],[10.038867187500017,6.92138671875],[10.1435546875,6.996435546874991],[10.167773437500017,6.959179687499997],[10.185546875,6.912792968749997],[10.205468750000023,6.8916015625],[10.293066406250006,6.876757812499989],[10.413183593750006,6.877734374999989],[10.60625,7.063085937499991],[10.954199218750006,6.7765625],[11.032519531250017,6.697900390624994],[11.1064453125,6.457714843749997],[11.1533203125,6.437939453124997],[11.2373046875,6.450537109374991],[11.401757812500023,6.533935546875],[11.551660156250023,6.697265625],[11.580078125,6.888867187499997],[11.657519531250017,6.9515625],[11.861425781250006,7.11640625],[11.767382812500017,7.272265624999989],[11.809179687500006,7.345068359374991],[12.016015625000023,7.589746093749994],[12.2333984375,8.282324218749991],[12.403515625000011,8.595556640624991],[12.582714843750011,8.624121093749991],[12.651562500000011,8.667773437499989],[12.7822265625,8.81787109375],[12.806542968750023,8.886621093749994],[12.875683593750011,9.303515624999989],[12.929492187500017,9.42626953125],[13.19873046875,9.563769531249989],[13.269921875000023,10.036181640624989],[13.41455078125,10.171435546874989],[13.535351562500011,10.60507812499999],[13.699902343750011,10.873144531249991],[13.89208984375,11.140087890624997],[13.9814453125,11.211865234374997],[14.056738281250006,11.245019531249994],[14.143261718750011,11.24853515625],[14.202343750000011,11.268164062499991],[14.559765625000011,11.492285156249991],[14.619726562500006,12.150976562499991],[14.518945312500023,12.298242187499994],[14.272851562500023,12.356494140624989],[14.184863281250017,12.447216796874997],[14.06396484375,13.07851562499999],[14.244824218750011,13.07734375],[14.461718750000017,13.021777343749989],[14.847070312500023,12.502099609374994],[15.08125,11.845507812499989],[15.029882812500006,11.11367187499999],[15.132226562500023,10.648486328124989],[15.276074218750011,10.357373046874997],[15.654882812500006,10.0078125],[14.243261718750006,9.979736328125],[13.977246093750011,9.691552734374994],[14.332324218750017,9.20351562499999],[15.1162109375,8.557324218749997],[15.5498046875,7.787890624999989],[15.480078125,7.523779296874991]]]},"properties":{"name":"Cameroon","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[27.4033203125,5.109179687499989],[27.7880859375,4.644677734374994],[28.19208984375001,4.350244140624994],[28.427539062500017,4.324169921874997],[28.72705078125,4.504980468749991],[29.224902343750017,4.391894531249989],[29.469628906250023,4.61181640625],[29.676855468750006,4.5869140625],[30.194921875,3.98193359375],[30.50830078125,3.835693359375],[30.586718750000017,3.62421875],[30.757226562500023,3.62421875],[30.83857421875001,3.49072265625],[30.90644531250001,3.408935546875],[30.754003906250006,3.041796874999989],[30.8466796875,2.847021484374991],[30.728613281250006,2.455371093749989],[31.176367187500006,2.270068359374989],[31.252734375000017,2.044580078124994],[29.94287109375,0.819238281249994],[29.934472656250023,0.4990234375],[29.717675781250023,0.098339843749997],[29.576953125000017,-1.387890625000011],[29.196582031250017,-1.719921875000011],[29.13154296875001,-2.195117187500003],[28.876367187500023,-2.400292968750009],[28.893945312500023,-2.635058593750003],[29.01435546875001,-2.72021484375],[29.224414062500017,-3.053515625],[29.211816406250023,-3.833789062500003],[29.403222656250023,-4.449316406250006],[29.404199218750023,-4.496679687500006],[29.32568359375,-4.835644531250011],[29.32343750000001,-4.898828125],[29.3427734375,-4.983105468750011],[29.542382812500023,-5.499804687500003],[29.594140625000023,-5.65078125],[29.60703125,-5.72265625],[29.59638671875001,-5.775976562500006],[29.490820312500006,-5.965429687500006],[29.480078125,-6.025],[29.50625,-6.172070312500011],[29.540820312500017,-6.313867187500009],[29.590625,-6.394433593750009],[29.70966796875001,-6.616894531250011],[29.798144531250017,-6.69189453125],[29.961816406250023,-6.803125],[30.10625,-6.9150390625],[30.212695312500017,-7.037890625],[30.31318359375001,-7.203710937500006],[30.40673828125,-7.460644531250011],[30.75117187500001,-8.193652343750003],[28.89814453125001,-8.485449218750006],[28.869531250000023,-8.785839843750011],[28.400683593750017,-9.224804687500011],[28.60419921875001,-9.678808593750006],[28.6455078125,-10.550195312500009],[28.383398437500006,-11.566699218750003],[28.482519531250006,-11.812109375],[29.064355468750023,-12.348828125000011],[29.48554687500001,-12.41845703125],[29.508203125000023,-12.228222656250011],[29.79511718750001,-12.155468750000011],[29.775195312500017,-13.438085937500006],[29.55419921875,-13.248925781250009],[29.20185546875001,-13.398339843750009],[29.014257812500006,-13.368847656250011],[28.730078125,-12.925488281250011],[28.550878906250006,-12.836132812500011],[28.412890625000017,-12.51806640625],[27.573828125,-12.22705078125],[27.1591796875,-11.579199218750006],[26.824023437500017,-11.965234375],[26.025976562500006,-11.89013671875],[25.349414062500017,-11.623046875],[25.28876953125001,-11.21240234375],[24.3779296875,-11.417089843750006],[24.36572265625,-11.1298828125],[23.96650390625001,-10.871777343750011],[23.901171875000017,-10.983203125],[23.833886718750023,-11.013671875],[23.463964843750006,-10.969335937500006],[23.076269531250006,-11.087890625],[22.814746093750017,-11.080273437500011],[22.56103515625,-11.055859375000011],[22.486132812500017,-11.08671875],[22.392968750000023,-11.159472656250003],[22.31494140625,-11.198632812500009],[22.27880859375,-11.194140625],[22.226171875,-11.121972656250009],[22.203515625000023,-10.829492187500009],[22.307031250000023,-10.691308593750009],[22.19775390625,-10.040625],[21.81318359375001,-9.46875],[21.905371093750006,-8.693359375],[21.806054687500023,-7.32861328125],[21.751074218750006,-7.30546875],[21.190332031250023,-7.284960937500003],[20.910937500000017,-7.281445312500011],[20.607812500000023,-7.277734375],[20.558398437500017,-7.244433593750003],[20.53583984375001,-7.182812500000011],[20.536914062500017,-7.121777343750011],[20.598730468750006,-6.93515625],[20.59003906250001,-6.919921875],[20.482226562500017,-6.915820312500003],[20.190039062500006,-6.9462890625],[19.997460937500023,-6.976464843750009],[19.87519531250001,-6.986328125],[19.527636718750017,-7.144433593750009],[19.483789062500023,-7.279492187500011],[19.479882812500023,-7.47216796875],[19.371679687500006,-7.655078125],[19.369921875000017,-7.70654296875],[19.3408203125,-7.966601562500003],[19.142675781250006,-8.00146484375],[18.944433593750006,-8.00146484375],[18.56269531250001,-7.9359375],[18.0087890625,-8.107617187500011],[17.643359375000017,-8.090722656250009],[17.57958984375,-8.099023437500009],[16.984765625000023,-7.257421875],[16.91943359375,-6.933984375],[16.813085937500006,-6.772558593750006],[16.742968750000017,-6.618457031250003],[16.697265625,-6.164257812500011],[16.537109375,-5.9658203125],[16.431445312500017,-5.900195312500003],[16.315234375000017,-5.865625],[13.978515625,-5.857226562500003],[13.346484375000017,-5.863378906250006],[13.184375,-5.85625],[12.452929687500017,-6.00048828125],[12.213671875000017,-5.758691406250009],[12.484570312500011,-5.71875],[12.451464843750017,-5.071484375000011],[12.502734375000017,-5.036914062500003],[12.573535156250017,-4.99658203125],[12.59619140625,-4.978417968750009],[12.8296875,-4.736621093750003],[12.947460937500011,-4.6953125],[13.057324218750011,-4.651074218750011],[13.07275390625,-4.634765625],[13.08740234375,-4.601953125],[13.136621093750023,-4.604296875],[13.414941406250023,-4.83740234375],[13.659570312500023,-4.721484375],[13.717089843750017,-4.454492187500009],[13.94091796875,-4.484667968750003],[14.358300781250023,-4.299414062500006],[14.449804687500006,-4.449511718750003],[14.365429687500011,-4.585546875],[14.410742187500006,-4.83125],[14.707910156250023,-4.881738281250009],[15.990039062500017,-3.766210937500006],[16.217382812500006,-3.0302734375],[16.21533203125,-2.177832031250006],[16.54072265625001,-1.840136718750003],[16.8798828125,-1.225878906250003],[17.752832031250023,-0.549023437500011],[18.072167968750023,2.01328125],[18.49091796875001,2.924414062499991],[18.6103515625,3.478417968749994],[18.594140625000023,4.346240234374989],[19.06855468750001,4.891406249999989],[19.5009765625,5.127490234374989],[19.806542968750023,5.089306640624997],[20.226367187500017,4.829638671874989],[20.55810546875,4.462695312499989],[22.422167968750017,4.134960937499997],[22.864550781250017,4.723876953125],[23.41718750000001,4.663134765624989],[24.31982421875,4.994140625],[25.065234375000017,4.967431640624994],[25.52509765625001,5.31210937499999],[26.822070312500017,5.062402343749994],[27.071875,5.199755859374989],[27.4033203125,5.109179687499989]]]},"properties":{"name":"Dem. Rep. Congo","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[18.6103515625,3.478417968749994],[18.49091796875001,2.924414062499991],[18.072167968750023,2.01328125],[17.752832031250023,-0.549023437500011],[16.8798828125,-1.225878906250003],[16.54072265625001,-1.840136718750003],[16.21533203125,-2.177832031250006],[16.217382812500006,-3.0302734375],[15.990039062500017,-3.766210937500006],[14.707910156250023,-4.881738281250009],[14.410742187500006,-4.83125],[14.365429687500011,-4.585546875],[14.449804687500006,-4.449511718750003],[14.358300781250023,-4.299414062500006],[13.94091796875,-4.484667968750003],[13.717089843750017,-4.454492187500009],[13.659570312500023,-4.721484375],[13.414941406250023,-4.83740234375],[13.136621093750023,-4.604296875],[13.08740234375,-4.601953125],[13.07275390625,-4.634765625],[13.048046875000011,-4.619238281250006],[12.971386718750011,-4.5517578125],[12.881054687500011,-4.445117187500003],[12.84814453125,-4.428906250000011],[12.50146484375,-4.5875],[12.018359375000017,-5.004296875],[11.777539062500011,-4.565820312500009],[11.130175781250017,-3.916308593750003],[11.234472656250006,-3.690820312500009],[11.504296875000023,-3.5203125],[11.685742187500011,-3.68203125],[11.8798828125,-3.665917968750009],[11.934179687500006,-3.318554687500011],[11.715429687500006,-3.176953125000011],[11.760156250000023,-2.983105468750011],[11.537792968750011,-2.83671875],[11.60546875,-2.342578125],[12.064453125,-2.41259765625],[12.446386718750006,-2.329980468750009],[12.43212890625,-1.928906250000011],[12.590429687500006,-1.826855468750011],[12.793554687500006,-1.931835937500011],[12.991992187500017,-2.313378906250009],[13.464941406250006,-2.395410156250009],[13.733789062500023,-2.138476562500003],[13.886914062500011,-2.465429687500006],[13.993847656250011,-2.490625],[14.199804687500006,-2.354199218750011],[14.162890625000017,-2.217578125],[14.383984375000011,-1.890039062500009],[14.47412109375,-0.573437500000011],[13.860058593750011,-0.203320312500011],[13.949609375000023,0.353808593749989],[14.32421875,0.62421875],[14.429882812500011,0.901464843749991],[14.180859375000011,1.370214843749991],[13.851367187500017,1.41875],[13.21630859375,1.2484375],[13.172167968750017,1.78857421875],[13.293554687500006,2.161572265624997],[14.578906250000017,2.199121093749994],[14.902441406250006,2.012304687499991],[15.741601562500023,1.914990234374997],[16.059375,1.676220703124997],[16.183398437500017,2.270068359374989],[16.468554687500017,2.831738281249997],[16.610742187500023,3.50537109375],[17.491601562500023,3.687304687499989],[18.160937500000017,3.499804687499989],[18.474414062500017,3.622998046874997],[18.6103515625,3.478417968749994]]]},"properties":{"name":"Congo","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-71.31972656249997,11.861914062500048],[-71.95810546875,11.66640625],[-72.24848632812501,11.196435546875009],[-72.690087890625,10.835839843749994],[-72.86933593750001,10.49125976562496],[-73.00654296874998,9.789160156250006],[-73.36621093749997,9.194140625000017],[-73.05839843749999,9.259570312500031],[-72.79638671874997,9.10898437499999],[-72.66542968749994,8.62758789062498],[-72.39033203124995,8.287060546874969],[-72.47197265624996,7.524267578124991],[-72.20771484374995,7.37026367187498],[-72.00664062499993,7.032617187500023],[-71.12861328124993,6.98671875],[-70.73715820312503,7.090039062499997],[-70.12919921874999,6.95361328125],[-69.42714843749997,6.123974609374997],[-68.47177734375,6.156542968749974],[-67.85917968749999,6.289892578124963],[-67.48198242187499,6.18027343750002],[-67.47387695312503,5.929980468750003],[-67.82490234374995,5.270458984375026],[-67.85527343750002,4.506884765624989],[-67.66162109375,3.864257812499986],[-67.3111328125,3.41586914062502],[-67.85908203124998,2.793603515624994],[-67.61870117187496,2.793603515624994],[-67.21083984375,2.390136718750043],[-66.87602539062499,1.223046875000037],[-67.082275390625,1.185400390625006],[-67.11923828124998,1.703613281249986],[-67.40043945312499,2.116699218750028],[-67.93623046874998,1.748486328124969],[-68.19379882812495,1.987011718749983],[-68.25595703125,1.845507812500017],[-68.17656249999999,1.719824218749991],[-69.84858398437493,1.708740234375043],[-69.85214843750003,1.05952148437504],[-69.31181640624999,1.050488281249969],[-69.15332031249994,0.65878906250002],[-69.47211914062498,0.72993164062504],[-70.05390624999993,0.578613281250028],[-70.07050781249993,-0.13886718750004],[-69.63398437500001,-0.50927734375],[-69.40024414062498,-1.194921874999977],[-69.66904296875003,-2.667675781249997],[-69.94819335937498,-4.200585937500009],[-69.96591796875003,-4.2359375],[-70.16752929687499,-4.050195312500009],[-70.24028320312496,-3.882714843749994],[-70.2984375,-3.844238281249972],[-70.33950195312502,-3.814355468750009],[-70.73510742187497,-3.781542968749989],[-70.09584960937494,-2.658203125000014],[-70.16474609374995,-2.639843750000011],[-70.24443359375002,-2.606542968749977],[-70.29462890624995,-2.552539062499989],[-70.57587890624995,-2.418261718749989],[-70.64799804687499,-2.405761718750014],[-70.70537109374996,-2.341992187499983],[-70.91455078125003,-2.218554687499974],[-70.96855468750002,-2.206835937499989],[-71.02729492187498,-2.225781250000026],[-71.11337890625003,-2.245410156250031],[-71.19638671874998,-2.313085937499963],[-71.39697265625,-2.334082031249977],[-71.55947265624997,-2.224218749999977],[-71.75253906249995,-2.15273437499998],[-71.80273437499997,-2.166308593749989],[-71.86728515624998,-2.227734374999983],[-71.932470703125,-2.288671874999963],[-71.98427734375,-2.326562499999952],[-72.21845703125001,-2.400488281250006],[-72.94111328124998,-2.394042968750028],[-72.9896484375,-2.33974609374998],[-73.15449218749993,-2.278222656249966],[-73.19697265624995,-1.830273437500011],[-73.49628906249993,-1.69306640625004],[-73.66430664062497,-1.248828124999946],[-73.86318359374997,-1.19667968749998],[-73.92695312500001,-1.125195312499983],[-73.98681640625003,-1.098144531249986],[-74.05439453124995,-1.028613281250031],[-74.18076171875,-0.997753906249955],[-74.24638671874999,-0.970605468750023],[-74.28388671874998,-0.927832031250006],[-74.33442382812498,-0.85087890624996],[-74.41787109375,-0.580664062499977],[-74.46518554687498,-0.517675781250034],[-74.51386718749993,-0.470117187500023],[-74.555078125,-0.429882812499997],[-74.61635742187494,-0.370019531249966],[-74.691650390625,-0.335253906249989],[-74.75537109375003,-0.298632812499989],[-74.78046874999998,-0.24453125],[-74.80175781249997,-0.200097656249994],[-75.13837890624998,-0.050488281249969],[-75.28447265624999,-0.10654296875002],[-75.77666015624999,0.08925781249998],[-76.27060546874998,0.439404296874997],[-76.49462890624997,0.23544921875002],[-77.396337890625,0.393896484374963],[-77.46767578124997,0.636523437500017],[-77.702880859375,0.837841796874997],[-78.1806640625,0.968554687499974],[-78.85966796874996,1.455371093750031],[-79.02543945312499,1.623681640625037],[-78.79296874999994,1.848730468749963],[-78.576904296875,1.773779296874977],[-78.59169921875,2.356640624999969],[-78.41689453125,2.483496093749963],[-78.06665039062494,2.509130859375034],[-77.81357421875,2.716357421874974],[-77.076806640625,3.913281250000026],[-77.26352539062503,3.893212890625023],[-77.27802734374995,4.058496093750023],[-77.35820312499996,3.944726562500037],[-77.40874023437496,4.24775390625004],[-77.52070312499993,4.212792968750023],[-77.35351562499997,4.398291015624977],[-77.28632812499995,4.72172851562496],[-77.373291015625,5.323974609375],[-77.53442382812497,5.537109374999986],[-77.24926757812497,5.780175781250037],[-77.46943359374995,6.176757812500014],[-77.368798828125,6.575585937499994],[-77.90117187499999,7.229345703125048],[-77.76191406249995,7.698828125000034],[-77.53828124999995,7.56625976562502],[-77.19599609374995,7.972460937500003],[-77.47851562499994,8.498437500000037],[-77.37421874999993,8.65830078125002],[-76.85185546875002,8.09047851562498],[-76.924658203125,7.973193359374974],[-76.78657226562493,7.931591796875026],[-76.7720703125,8.310546875000043],[-76.92045898437496,8.573730468750014],[-76.27685546875,8.989111328124991],[-76.02724609374997,9.365771484374989],[-75.63935546874998,9.450439453125014],[-75.680029296875,9.729785156249989],[-75.53857421874997,10.205175781250034],[-75.708349609375,10.143408203124963],[-75.44599609374995,10.610888671874989],[-74.84458007812498,11.109716796875006],[-74.330224609375,10.996679687499991],[-74.51625976562497,10.8625],[-74.40087890625,10.76523437499999],[-74.14291992187503,11.320849609375031],[-73.31337890624997,11.295751953124991],[-72.275,11.88925781250002],[-72.13574218749994,12.188574218749977],[-71.71455078124993,12.41997070312496],[-71.26210937499997,12.335302734375034],[-71.13730468750003,12.04633789062504],[-71.31972656249997,11.861914062500048]]]},"properties":{"name":"Colombia","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[43.788671875,-12.307031250000023],[43.85898437500006,-12.368261718749977],[43.66367187500006,-12.342871093749949],[43.63134765624997,-12.247070312499972],[43.788671875,-12.307031250000023]]],[[[44.476367187500074,-12.08154296875],[44.504980468750006,-12.356542968749991],[44.220117187499994,-12.171386718750014],[44.476367187500074,-12.08154296875]]],[[[43.46582031249997,-11.901269531249966],[43.226660156250006,-11.75185546874998],[43.2990234375001,-11.374511718750028],[43.39296875000005,-11.408593749999952],[43.46582031249997,-11.901269531249966]]]]},"properties":{"name":"Comoros","childNum":3}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-24.308251953124966,14.856298828124991],[-24.44052734374992,14.834814453124963],[-24.496875,14.980273437500017],[-24.329492187499937,15.019482421875011],[-24.308251953124966,14.856298828124991]]],[[[-23.18212890624997,15.136767578125017],[-23.210253906250017,15.32353515625006],[-23.119335937499955,15.26840820312502],[-23.18212890624997,15.136767578125017]]],[[[-23.444238281249994,15.00795898437498],[-23.5046875,14.916113281250006],[-23.70537109374999,14.96132812499998],[-23.74809570312499,15.328515625],[-23.444238281249994,15.00795898437498]]],[[[-22.917724609375,16.237255859374955],[-22.69262695312497,16.169042968750006],[-22.710107421874994,16.043359374999966],[-22.95927734374996,16.045117187499983],[-22.917724609375,16.237255859374955]]],[[[-24.08769531249999,16.62250976562501],[-24.03271484374997,16.57202148437503],[-24.243066406250023,16.599414062500017],[-24.32236328124992,16.49311523437504],[-24.398095703124966,16.61840820312497],[-24.08769531249999,16.62250976562501]]],[[[-22.888330078124966,16.659082031249994],[-22.980615234374937,16.700878906249983],[-22.93291015624999,16.84101562500004],[-22.888330078124966,16.659082031249994]]],[[[-24.88706054687495,16.81811523437497],[-25.09306640624999,16.83251953125],[-24.936474609374983,16.92211914062503],[-24.88706054687495,16.81811523437497]]],[[[-25.169824218749994,16.94648437500001],[-25.308300781249955,16.93583984374999],[-25.337109374999955,17.091015624999983],[-25.03466796875,17.176464843749983],[-24.979687499999983,17.09472656250003],[-25.169824218749994,16.94648437500001]]]]},"properties":{"name":"Cape Verde","childNum":8}},{"geometry":{"type":"Polygon","coordinates":[[[-83.6419921875,10.917236328125],[-83.346826171875,10.315380859374997],[-82.77841796874999,9.66953125],[-82.56357421874999,9.57666015625],[-82.56923828125,9.55820312499999],[-82.58652343749999,9.538818359375],[-82.64409179687499,9.505859375],[-82.801025390625,9.591796875],[-82.843994140625,9.57080078125],[-82.86015624999999,9.511474609375],[-82.88896484374999,9.481005859374989],[-82.925048828125,9.469042968749989],[-82.93984375,9.449169921874997],[-82.94033203125,9.060107421874989],[-82.88134765625,9.055859375],[-82.78305664062499,8.990283203124989],[-82.741162109375,8.951708984374989],[-82.72783203124999,8.916064453124989],[-82.91704101562499,8.740332031249991],[-82.855712890625,8.635302734374989],[-82.84477539062499,8.489355468749991],[-82.86162109374999,8.45351562499999],[-83.02734375,8.337744140624991],[-82.879345703125,8.070654296874991],[-83.12333984374999,8.353076171874989],[-83.16240234374999,8.588183593749989],[-83.4697265625,8.706835937499989],[-83.29150390625,8.406005859375],[-83.54375,8.445849609374989],[-83.73408203125,8.614453125],[-83.613720703125,8.804052734374991],[-83.73691406249999,9.150292968749994],[-84.58159179687499,9.568359375],[-84.71494140624999,9.8994140625],[-85.23564453124999,10.242089843749994],[-85.2365234375,10.107373046874997],[-84.88642578125,9.820947265624994],[-85.07705078125,9.60195312499999],[-85.31455078124999,9.8109375],[-85.62485351562499,9.902441406249991],[-85.84965820312499,10.292041015624989],[-85.667236328125,10.745019531249994],[-85.90800781249999,10.897558593749991],[-85.7443359375,11.06210937499999],[-85.5841796875,11.189453125],[-84.9091796875,10.9453125],[-84.6341796875,11.045605468749997],[-83.91928710937499,10.7353515625],[-83.71293945312499,10.785888671875],[-83.6419921875,10.917236328125]]]},"properties":{"name":"Costa Rica","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-82.56176757812503,21.571679687500023],[-82.959619140625,21.441308593750023],[-83.18378906250001,21.59345703125004],[-82.97358398437498,21.592285156250057],[-83.08251953124997,21.791406250000023],[-82.99121093750003,21.942724609375034],[-82.71455078124998,21.890283203125023],[-82.56176757812503,21.571679687500023]]],[[[-77.66899414062493,21.951953125000045],[-77.91855468749998,22.088085937499983],[-77.63369140624994,22.054003906250074],[-77.66899414062493,21.951953125000045]]],[[[-77.87939453125,22.127539062500034],[-78.04165039062502,22.201269531250034],[-77.99921874999998,22.298730468749994],[-77.87939453125,22.127539062500034]]],[[[-81.83745117187499,23.163037109374955],[-81.26235351562497,23.156835937500034],[-81.14462890624998,23.054931640625057],[-80.65014648437494,23.10307617187499],[-80.36489257812502,22.943408203125074],[-79.82026367187498,22.887011718750045],[-79.27568359374999,22.407617187499994],[-78.68647460937493,22.366845703125023],[-77.63681640624995,21.79736328125],[-77.49711914062502,21.78833007812503],[-77.58315429687497,21.889257812499977],[-77.49726562499995,21.871630859375045],[-77.14414062499995,21.643603515625017],[-77.36616210937498,21.612646484375034],[-77.25288085937498,21.483496093750006],[-77.0986328125,21.589013671875023],[-76.86743164062497,21.330419921875006],[-75.72294921874996,21.111035156249983],[-75.59580078125,20.99467773437499],[-75.72456054687493,20.71455078125004],[-74.882568359375,20.65063476562497],[-74.51313476562495,20.384570312500045],[-74.16748046874997,20.292187499999955],[-74.15371093750002,20.168554687500006],[-75.11640624999995,19.901416015625017],[-75.151611328125,20.008349609375045],[-75.29047851562495,19.893115234375017],[-76.15844726562497,19.98974609374997],[-77.715087890625,19.85546874999997],[-77.10380859374999,20.407519531250017],[-77.22958984374995,20.64375],[-78.11635742187497,20.761865234374994],[-78.49077148437493,21.05371093750003],[-78.72768554687497,21.592724609374955],[-79.35742187500003,21.58515625000001],[-80.23134765625,21.872167968750063],[-80.48544921874998,22.1234375],[-81.03564453124997,22.073583984375063],[-81.18549804687495,22.26796875000005],[-81.284375,22.109423828125074],[-81.84941406249993,22.21367187499999],[-82.077734375,22.3876953125],[-81.71035156250002,22.496679687500006],[-81.83881835937498,22.672460937500034],[-82.73803710937497,22.689257812500074],[-83.37963867187503,22.222998046875034],[-83.90073242187495,22.17011718750001],[-84.03095703124993,21.94311523437503],[-84.502587890625,21.776171875000045],[-84.50136718750002,21.930273437499977],[-84.88720703125003,21.856982421875074],[-84.32636718749998,22.074316406250034],[-84.36127929687498,22.37890625],[-84.04492187500003,22.666015625000057],[-83.25781249999997,22.967578125000017],[-81.83745117187499,23.163037109374955]]]]},"properties":{"name":"Cuba","childNum":4}},{"geometry":{"type":"Polygon","coordinates":[[[-68.75107421874999,12.059765625],[-68.9951171875,12.141845703125],[-69.15888671875,12.380273437499994],[-68.75107421874999,12.059765625]]]},"properties":{"name":"Cura\xE7ao","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-81.36953124999997,19.34887695312497],[-81.10712890624995,19.305175781250057],[-81.40478515624994,19.278417968750006],[-81.36953124999997,19.34887695312497]]],[[[-79.823388671875,19.711914062500057],[-79.90620117187501,19.702539062499994],[-79.74228515625,19.757128906250017],[-79.823388671875,19.711914062500057]]]]},"properties":{"name":"Cayman Is.","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[34.004492187500006,35.065234375],[33.47578125000001,35.000341796875],[33.3837890625,35.1626953125],[32.91953125,35.087841796875],[32.71269531250002,35.171044921874994],[32.8798828125,35.180566406249994],[32.94160156250001,35.390429687499996],[33.60761718750001,35.354150390624994],[34.55605468750002,35.662060546875],[33.941992187500006,35.292041015624996],[34.004492187500006,35.065234375]]]},"properties":{"name":"N. Cyprus","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[32.71269531250002,35.171044921874994],[32.91953125,35.087841796875],[33.3837890625,35.1626953125],[33.47578125000001,35.000341796875],[34.004492187500006,35.065234375],[34.05019531250002,34.98837890625],[33.69941406250001,34.969873046874994],[33.007910156250006,34.569580078125],[32.44902343750002,34.729443359375],[32.31718750000002,34.9533203125],[32.30097656250001,35.082958984375],[32.71269531250002,35.171044921874994]]]},"properties":{"name":"Cyprus","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[14.809375,50.858984375],[14.895800781250017,50.861376953124996],[14.98291015625,50.886572265625],[14.99375,51.01435546875],[16.007226562500023,50.611621093749996],[16.2822265625,50.655615234375],[16.419726562500017,50.573632812499994],[16.210351562500023,50.423730468749994],[16.63916015625,50.1021484375],[16.989648437500023,50.2369140625],[16.88007812500001,50.427050781249996],[17.41523437500001,50.254785156249994],[17.702246093750006,50.307177734374996],[17.627050781250006,50.11640625],[17.874804687500017,49.972265625],[18.0283203125,50.03525390625],[18.562402343750023,49.879345703125],[18.83222656250001,49.510791015624996],[18.160937500000017,49.257373046874996],[18.0859375,49.06513671875],[17.75849609375001,48.888134765625],[17.135644531250023,48.841064453125],[16.953125,48.598828125],[16.543554687500006,48.796240234375],[16.057226562500006,48.754785156249994],[15.066796875000023,48.997851562499996],[14.691308593750023,48.59921875],[14.049121093750017,48.602490234375],[13.814746093750017,48.766943359375],[13.769921875000023,48.815966796874996],[13.684960937500023,48.876708984375],[13.547656250000017,48.95966796875],[13.440722656250017,48.95556640625],[13.401171875000017,48.977587890624996],[12.916699218750011,49.33046875],[12.68115234375,49.414501953125],[12.390527343750023,49.739648437499994],[12.5125,49.87744140625],[12.09921875,50.310986328125],[12.134863281250006,50.3109375],[12.1748046875,50.288378906249996],[12.231152343750011,50.244873046875],[12.27734375,50.181445312499996],[12.3056640625,50.205712890624994],[12.549023437500011,50.393408203125],[13.016406250000017,50.490380859374994],[13.18115234375,50.510498046875],[14.369042968750023,50.898730468749996],[14.319726562500023,51.03779296875],[14.545703125000017,50.993945312499996],[14.559667968750006,50.954931640625],[14.59521484375,50.918603515624994],[14.623828125000017,50.91474609375],[14.613574218750017,50.85556640625],[14.658203125,50.8326171875],[14.723339843750011,50.814697265625],[14.766503906250023,50.818310546875],[14.797460937500006,50.842333984374996],[14.809375,50.858984375]]]},"properties":{"name":"Czech Rep.","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[14.1982421875,53.919042968750034],[13.92578125,53.879052734374966],[13.827734375,54.12724609374999],[14.1982421875,53.919042968750034]]],[[[13.709179687500011,54.382714843749994],[13.707324218750074,54.281152343749994],[13.190039062500034,54.32563476562501],[13.336816406249994,54.697119140625006],[13.65761718750008,54.55957031249997],[13.709179687500011,54.382714843749994]]],[[[9.739746093750028,54.82553710937498],[10.022167968750011,54.673925781250006],[9.86865234375,54.47246093749999],[10.731542968750006,54.31625976562506],[11.013378906250068,54.37915039062497],[11.008593750000074,54.18115234374997],[10.810742187500068,54.075146484374955],[10.917773437500045,53.99531250000004],[11.39960937500004,53.94462890625002],[12.111328125,54.168310546875006],[12.57539062500004,54.467382812500006],[13.028613281250017,54.411035156249994],[13.448046875000017,54.14086914062503],[13.724218750000063,54.153222656249966],[13.865527343750074,53.85336914062498],[14.258886718750006,53.729638671874994],[14.298730468750051,53.55644531249999],[14.41455078125,53.28349609374996],[14.412304687500011,53.216748046874955],[14.410937500000074,53.19902343749999],[14.368554687500051,53.105566406250034],[14.293164062500068,53.026757812499966],[14.138867187500068,52.93286132812503],[14.128613281250011,52.87822265625002],[14.253710937500017,52.78251953124996],[14.514062500000023,52.645605468750034],[14.619433593750017,52.52851562499998],[14.569726562499994,52.431103515624955],[14.554589843750023,52.35966796874996],[14.573925781250068,52.31416015625001],[14.615625,52.277636718750045],[14.679882812500068,52.25],[14.752539062500034,52.08183593750002],[14.601660156250034,51.832373046875006],[14.738671875000051,51.62714843750004],[14.7109375,51.54492187499997],[14.724707031250063,51.523876953124955],[14.90595703125004,51.463330078124955],[14.935546875000028,51.435351562500045],[14.9638671875,51.095117187499994],[14.917480468750057,51.00874023437498],[14.814257812499989,50.871630859375045],[14.809375,50.858984375000034],[14.797460937500034,50.84233398437502],[14.766503906250051,50.81831054687501],[14.72333984375004,50.81469726562497],[14.658203125,50.832617187500006],[14.613574218750045,50.85556640625006],[14.623828125000017,50.91474609375004],[14.595214843750057,50.91860351562502],[14.559667968750006,50.954931640625034],[14.545703124999989,50.99394531249999],[14.319726562500051,51.037792968749955],[14.36904296875008,50.89873046874996],[13.18115234375,50.510498046875],[13.016406250000017,50.490380859374994],[12.549023437500011,50.393408203125034],[12.3056640625,50.205712890624994],[12.27734375,50.18144531250002],[12.231152343749983,50.24487304687497],[12.174804687500057,50.28837890624996],[12.134863281250006,50.31093750000002],[12.099218750000034,50.31098632812504],[12.089843749999972,50.30175781250003],[12.089746093750051,50.2685546875],[12.294598214285761,50.13608119419641],[12.5125,49.87744140625],[12.390527343750051,49.739648437499994],[12.68115234375,49.41450195312501],[12.91669921875004,49.33046875000002],[13.401171875000074,48.97758789062499],[13.440722656250045,48.95556640625003],[13.547656250000074,48.95966796874998],[13.684960937500051,48.87670898437506],[13.769921875000051,48.81596679687502],[13.814746093750017,48.76694335937498],[13.802929687500011,48.74750976562501],[13.798828124999972,48.62167968750006],[13.785351562499983,48.58745117187502],[13.486621093750074,48.58183593750002],[13.471679687500028,48.57182617187502],[13.459863281250023,48.564550781250034],[13.409375,48.39414062500006],[13.322851562500006,48.33125],[13.215234375000023,48.301904296874994],[12.760351562500063,48.10698242187499],[12.95351562500008,47.890625],[12.897656250000068,47.721875],[13.054101562500051,47.655126953125034],[13.047949218750034,47.57915039062502],[13.031542968750074,47.50800781250001],[13.01435546875004,47.478076171875045],[12.968066406250017,47.475683593750006],[12.878906250000057,47.506445312500034],[12.809375,47.542187499999955],[12.782812500000034,47.56416015624998],[12.781152343750051,47.590429687500006],[12.796191406249989,47.60703125],[12.771386718750023,47.63940429687503],[12.685839843750074,47.66933593750002],[12.209277343750074,47.71826171875003],[12.196875,47.709082031250034],[12.203808593750011,47.64672851562503],[12.185644531250063,47.61953125],[11.041992187500028,47.39311523437496],[10.98085937499999,47.39814453125001],[10.893945312500051,47.470458984375],[10.870605468750028,47.500781250000045],[10.873046874999972,47.52021484375001],[10.741601562500023,47.52412109375001],[10.65869140625,47.547216796875006],[10.482812500000051,47.54179687499996],[10.439453125000028,47.55156249999999],[10.403906250000063,47.41699218750003],[10.369140625,47.366064453125034],[10.18300781250008,47.27880859375003],[10.200292968750063,47.36342773437505],[10.066308593750023,47.39335937500002],[10.064575892857171,47.42369419642856],[10.059863281250045,47.44907226562498],[10.034082031250023,47.47358398437501],[9.971582031249994,47.50532226562498],[9.839160156250017,47.55229492187496],[9.748925781250023,47.575537109375006],[9.524023437500034,47.52421875000002],[8.572656250000023,47.775634765625],[8.435742187500011,47.73134765625002],[8.403417968750006,47.687792968750045],[8.413281250000068,47.66269531249998],[8.451757812500006,47.65180664062498],[8.552343750000063,47.65913085937498],[8.56708984375004,47.65190429687502],[8.57050781250004,47.63779296874998],[8.55947265625008,47.62402343750003],[8.477636718750034,47.61269531250002],[8.454003906249994,47.59619140625003],[7.615625,47.59272460937504],[7.616601562500023,48.15678710937502],[8.134863281250006,48.97358398437498],[7.450585937500051,49.152197265625034],[6.735449218750006,49.16059570312498],[6.344335937500006,49.45273437499998],[6.4873046875,49.798486328124994],[6.204882812500017,49.915136718750034],[6.13818359375,49.97431640625001],[6.10976562500008,50.034375],[6.116503906250045,50.120996093749966],[6.340917968750006,50.451757812500034],[5.993945312500017,50.75043945312504],[6.048437500000034,50.90488281250006],[5.857519531250034,51.030126953125006],[6.129980468750034,51.14741210937501],[6.198828125000034,51.45],[5.948730468750057,51.80268554687501],[6.800390625,51.96738281249998],[6.724511718749994,52.080224609374966],[7.035156250000057,52.38022460937498],[6.748828125000074,52.464013671874994],[6.710742187500045,52.61787109374998],[7.033007812500045,52.65136718749997],[7.197265625000028,53.28227539062499],[7.074316406250034,53.477636718750006],[7.285253906250034,53.68134765625001],[8.00927734375,53.69072265624999],[8.108496093750063,53.46767578125002],[8.245214843750006,53.44531249999997],[8.333886718750051,53.606201171875],[8.495214843750063,53.39423828124998],[8.618945312500045,53.875],[9.20556640625,53.85595703124997],[9.783984375000074,53.554638671874955],[9.31201171875,53.859130859375],[8.92041015625,53.96533203125006],[8.906640625000023,54.26079101562502],[8.625781250000017,54.35395507812501],[8.951855468750011,54.46757812499996],[8.670312500000023,54.903417968750034],[9.739746093750028,54.82553710937498]]],[[[8.307714843750034,54.786962890625034],[8.451464843750017,55.05537109374998],[8.3798828125,54.89985351562501],[8.629589843750068,54.891748046874966],[8.307714843750034,54.786962890625034]]]]},"properties":{"name":"Germany","childNum":4}},{"geometry":{"type":"Polygon","coordinates":[[[43.24599609375002,11.499804687499989],[42.92275390625002,10.999316406249989],[42.557714843750006,11.080761718749997],[41.79824218750002,10.98046875],[41.79267578125001,11.68603515625],[42.378515625,12.46640625],[42.40859375000002,12.494384765625],[42.45,12.521337890624991],[42.47939453125002,12.513623046874997],[42.703710937500006,12.380322265624997],[42.76748046875002,12.4228515625],[42.825292968750006,12.5693359375],[42.86591796875001,12.622802734375],[42.88330078125,12.621289062499997],[43.00566406250002,12.662304687499997],[43.11669921875,12.70859375],[43.353515625,12.367041015624991],[43.38027343750002,12.091259765624997],[42.64003906250002,11.560107421874989],[42.52177734375002,11.572167968749994],[42.58378906250002,11.496777343749997],[43.04277343750002,11.588476562499991],[43.24599609375002,11.499804687499989]]]},"properties":{"name":"Djibouti","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-61.281689453125,15.2490234375],[-61.37539062499999,15.227294921875],[-61.45810546874999,15.633105468750003],[-61.277246093749994,15.526708984374991],[-61.281689453125,15.2490234375]]]},"properties":{"name":"Dominica","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[11.361425781250006,54.891650390625045],[11.739550781250017,54.80742187500002],[11.765917968750074,54.67944335937506],[11.457421875000023,54.628857421874955],[11.035546875000051,54.77309570312505],[11.058593750000028,54.940576171874966],[11.361425781250006,54.891650390625045]]],[[[12.549218750000051,54.96577148437504],[12.11884765625004,54.91440429687506],[12.274023437500034,55.064111328124994],[12.549218750000051,54.96577148437504]]],[[[10.061230468750068,54.88637695312502],[9.80625,54.90600585937503],[9.78125,55.06904296875001],[10.061230468750068,54.88637695312502]]],[[[10.734082031250011,54.750732421875],[10.621679687500006,54.851416015625006],[10.95107421875008,55.15620117187501],[10.734082031250011,54.750732421875]]],[[[15.087695312500017,55.021875],[14.684179687500063,55.10224609375004],[14.765332031250068,55.296728515625034],[15.132617187500017,55.14453125000003],[15.087695312500017,55.021875]]],[[[10.645117187500006,55.60981445312498],[10.785253906250034,55.13339843749998],[10.44277343750008,55.04877929687498],[9.988769531250028,55.163183593750006],[9.860644531250045,55.515478515625034],[10.645117187500006,55.60981445312498]]],[[[12.665722656250068,55.596533203125006],[12.550878906250034,55.55625],[12.59921875,55.68022460937502],[12.665722656250068,55.596533203125006]]],[[[12.56875,55.785058593749966],[12.215039062500011,55.46650390624998],[12.413085937500028,55.28618164062502],[12.089941406250006,55.18813476562505],[12.050390625000034,54.81533203125002],[11.8623046875,54.77260742187502],[11.653808593750057,55.186914062499966],[11.286328125000068,55.20444335937498],[10.978906250000051,55.721533203125006],[11.322265625000028,55.752539062500006],[11.627734375000074,55.95688476562498],[11.819726562500023,55.69765625000002],[11.86640625000004,55.968164062499966],[12.218945312499983,56.11865234374997],[12.578710937500006,56.06406250000006],[12.56875,55.785058593749966]]],[[[11.052148437500051,57.25253906250006],[10.873828125000045,57.26225585937499],[11.174511718750011,57.322900390624994],[11.052148437500051,57.25253906250006]]],[[[9.739746093750028,54.82553710937498],[8.670312500000023,54.903417968750034],[8.61591796875004,55.41821289062503],[8.132128906250074,55.59980468749998],[8.16396484375008,56.60688476562498],[8.671679687500045,56.49565429687496],[8.88808593750008,56.73505859374998],[9.06708984375004,56.79384765625005],[9.196386718750006,56.70166015625],[9.2548828125,57.01171875000003],[8.992773437499977,57.01611328125003],[8.771972656250028,56.72529296875004],[8.468359375,56.66455078125],[8.284082031250023,56.85234374999999],[8.618554687500051,57.11127929687498],[9.43359375,57.17431640625003],[9.96230468750008,57.580957031249994],[10.609960937500034,57.73691406249998],[10.282714843750057,56.620507812499994],[10.926171875000051,56.44326171875002],[10.753417968750028,56.24199218749999],[10.31875,56.212890625],[10.18300781250008,55.86518554687504],[9.903710937500023,55.84282226562502],[10.02363281250004,55.76142578125004],[9.591113281250017,55.49321289062502],[9.670996093750063,55.26640624999999],[9.453710937500006,55.03955078125006],[9.732324218750023,54.96801757812506],[9.739746093750028,54.82553710937498]]]]},"properties":{"name":"Denmark","childNum":10,"cp":[10.2768332,56.1773879]}},{"geometry":{"type":"Polygon","coordinates":[[[-71.647216796875,19.195947265624994],[-71.746484375,19.285839843749997],[-71.71147460937499,19.486572265625],[-71.75742187499999,19.688183593749997],[-71.779248046875,19.718164062499994],[-71.6673828125,19.8486328125],[-70.95415039062499,19.913964843749994],[-70.19384765625,19.63803710937499],[-69.95683593749999,19.671875],[-69.739404296875,19.29921875],[-69.23247070312499,19.27182617187499],[-69.60595703125,19.206494140624997],[-69.62363281249999,19.117822265624994],[-68.684765625,18.90478515625],[-68.33916015624999,18.611523437499997],[-68.68740234375,18.21494140624999],[-68.9349609375,18.408007812500003],[-69.27451171874999,18.43984375],[-69.770654296875,18.443554687499997],[-70.479931640625,18.21728515625],[-70.644677734375,18.336230468750003],[-71.02783203125,18.273193359375],[-71.43896484375,17.63559570312499],[-71.63173828125,17.773632812499997],[-71.768310546875,18.03916015624999],[-71.76376953124999,18.20395507812499],[-71.737255859375,18.270800781250003],[-71.7619140625,18.34130859375],[-71.87255859375,18.416210937499997],[-71.940380859375,18.512597656249994],[-72.000390625,18.597900390625],[-71.98686523437499,18.6103515625],[-71.86650390624999,18.614160156249994],[-71.74321289062499,18.73291015625],[-71.72705078125,18.80322265625],[-71.733642578125,18.856396484374997],[-71.80712890625,18.987011718749997],[-71.647216796875,19.195947265624994]]]},"properties":{"name":"Dominican Rep.","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[8.207617187500006,36.518945312499994],[8.348730468750006,36.36796875],[8.318066406250011,35.654931640624994],[8.31640625,35.403125],[8.35986328125,35.299609375],[8.394238281250011,35.203857421875],[8.312109375,35.084619140624994],[8.27685546875,34.9794921875],[8.24560546875,34.73408203125],[7.513867187500011,34.080517578125],[7.534375,33.717919921874994],[7.877246093750017,33.172119140625],[8.1125,33.055322265624994],[8.333398437500023,32.543603515624994],[9.044042968750006,32.07236328125],[9.160253906250006,31.621337890625],[9.224023437500023,31.373681640624994],[9.51875,30.229394531249994],[9.310253906250011,30.115234375],[9.805273437500006,29.176953125],[9.916015625,27.785693359374996],[9.74755859375,27.330859375],[9.883203125000023,26.630810546874997],[9.491406250000011,26.333740234375],[9.4482421875,26.067138671875],[10.000683593750011,25.332080078125003],[10.255859375,24.591015625],[10.395898437500023,24.485595703125],[10.686132812500006,24.55136718749999],[11.507617187500017,24.314355468749994],[11.967871093750006,23.517871093750003],[7.481738281250017,20.873095703125003],[5.836621093750011,19.479150390624994],[4.227636718750006,19.142773437499997],[3.3564453125,18.986621093750003],[3.119726562500006,19.103173828124994],[3.255859375,19.4109375],[3.130273437500023,19.85019531249999],[1.685449218750023,20.378369140624997],[1.610644531250017,20.555566406249994],[1.165722656250011,20.817431640625003],[1.1455078125,21.102246093749997],[-1.947900390624994,23.124804687500003],[-4.822607421874977,24.99560546875],[-8.683349609375,27.2859375],[-8.683349609375,27.656445312499997],[-8.683349609375,27.900390625],[-8.659912109375,28.718603515625],[-7.485742187499994,29.392236328124994],[-7.427685546874983,29.425],[-7.142431640624977,29.619580078124997],[-6.855566406249977,29.601611328124996],[-6.755126953125,29.583837890625],[-6.635351562499977,29.568798828124997],[-6.597753906249977,29.578955078125],[-6.520556640624989,29.659863281249997],[-6.479736328125,29.820361328124996],[-6.00429687499999,29.83125],[-5.448779296874989,29.956933593749994],[-5.293652343749983,30.058642578124996],[-5.180126953124983,30.166162109374994],[-4.96826171875,30.465380859374996],[-4.778515624999983,30.552392578124994],[-4.529150390624977,30.625537109374996],[-4.322851562499977,30.698876953124994],[-4.148779296874977,30.8095703125],[-3.626904296874983,31.000927734374997],[-3.833398437499994,31.197802734374996],[-3.837109374999983,31.512353515624994],[-3.768164062499977,31.68955078125],[-3.700244140624989,31.700097656249994],[-3.604589843749977,31.686767578125],[-3.439794921874977,31.704541015624997],[-3.017382812499989,31.834277343749996],[-2.988232421874983,31.87421875],[-2.930859374999983,32.042529296874996],[-2.863427734374994,32.07470703125],[-1.275341796874983,32.089013671874994],[-1.16259765625,32.399169921875],[-1.111035156249983,32.552294921874996],[-1.188232421875,32.60849609375],[-1.29638671875,32.675683593749994],[-1.352148437499977,32.703369140625],[-1.45,32.784814453124994],[-1.510009765625,32.87763671875],[-1.550732421874983,33.073583984375],[-1.67919921875,33.318652343749996],[-1.795605468749983,34.751904296875],[-2.131787109374983,34.970849609374994],[-2.190771484374977,35.02978515625],[-2.219628906249994,35.10419921875],[-1.673632812499989,35.18310546875],[-0.426123046874977,35.8615234375],[-0.048242187499994,35.8328125],[0.312207031250011,36.162353515625],[0.9716796875,36.4439453125],[2.593359375,36.60068359375],[2.972851562500011,36.784472656249996],[3.779003906250011,36.89619140625],[4.758105468750017,36.896337890625],[5.29541015625,36.648242187499996],[6.486523437500011,37.085742187499996],[6.927539062500017,36.91943359375],[7.238476562500011,36.968505859375],[7.204296875000011,37.0923828125],[7.910449218750017,36.856347656249994],[8.576562500000023,36.93720703125],[8.601269531250011,36.833935546875],[8.207617187500006,36.518945312499994]]]},"properties":{"name":"Algeria","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-80.131591796875,-2.973144531249957],[-80.27294921875003,-2.995898437499974],[-80.22368164062502,-2.753125],[-80.08076171874995,-2.668847656249966],[-79.90903320312495,-2.725585937499972],[-80.131591796875,-2.973144531249957]]],[[[-90.42392578125,-1.339941406250034],[-90.51953124999994,-1.299121093749974],[-90.47719726562494,-1.22099609374996],[-90.42392578125,-1.339941406250034]]],[[[-89.41889648437498,-0.911035156249966],[-89.60859374999998,-0.888574218750009],[-89.28784179687503,-0.689843750000023],[-89.41889648437498,-0.911035156249966]]],[[[-90.33486328125,-0.771582031249977],[-90.54213867187502,-0.676464843749955],[-90.53168945312493,-0.581445312499966],[-90.26938476562498,-0.48466796874996],[-90.19272460937498,-0.658789062500006],[-90.33486328125,-0.771582031249977]]],[[[-91.42597656249995,-0.460839843749994],[-91.61074218749994,-0.44394531250002],[-91.64667968749998,-0.284472656249946],[-91.46015625000001,-0.255664062500031],[-91.42597656249995,-0.460839843749994]]],[[[-90.57392578124993,-0.333984375],[-90.8677734375,-0.271386718750037],[-90.78037109374998,-0.160449218749989],[-90.57392578124993,-0.333984375]]],[[[-91.27216796874998,0.025146484374986],[-90.799658203125,-0.752050781249991],[-90.90551757812497,-0.94052734375002],[-91.13105468750001,-1.019628906249977],[-91.41904296874998,-0.996679687500006],[-91.49541015624999,-0.860937499999977],[-91.120947265625,-0.559082031250028],[-91.36918945312493,-0.287207031249977],[-91.42885742187502,-0.023388671874955],[-91.59682617187497,0.002099609374994],[-91.36137695312496,0.125830078124977],[-91.27216796874998,0.025146484374986]]],[[[-78.90922851562502,1.252783203124977],[-78.99169921875003,1.293212890625043],[-78.89980468749997,1.359765625],[-78.90922851562502,1.252783203124977]]],[[[-75.28447265624999,-0.10654296875002],[-75.62626953124999,-0.122851562499974],[-75.63203125000001,-0.157617187500037],[-75.56059570312502,-0.200097656249994],[-75.49106445312498,-0.24833984374996],[-75.42470703124997,-0.408886718749983],[-75.259375,-0.59013671874996],[-75.24960937499998,-0.951855468750026],[-75.34819335937499,-0.966796874999957],[-75.38012695312503,-0.94023437499996],[-75.40805664062503,-0.92431640625],[-75.42041015624997,-0.962207031250003],[-75.570556640625,-1.53125],[-76.08979492187501,-2.133105468749974],[-76.6791015625,-2.562597656249991],[-77.860595703125,-2.981640625000011],[-78.240380859375,-3.472558593750009],[-78.345361328125,-3.397363281249966],[-78.64799804687499,-4.248144531250006],[-78.68603515625003,-4.562402343749994],[-78.86152343749998,-4.665039062499943],[-78.90761718749997,-4.714453124999977],[-78.92578125,-4.770703124999983],[-78.91420898437497,-4.818652343749974],[-78.919189453125,-4.858398437499986],[-78.97539062499999,-4.873242187499997],[-78.99526367187497,-4.908007812499974],[-79.03330078124998,-4.96914062499999],[-79.07626953125003,-4.990625],[-79.18666992187497,-4.958203124999983],[-79.26811523437493,-4.957617187499949],[-79.33095703124997,-4.92783203125002],[-79.39941406249997,-4.840039062499983],[-79.45576171874998,-4.766210937499949],[-79.50190429687495,-4.670605468750011],[-79.51616210937493,-4.539160156249963],[-79.57768554687496,-4.50058593750002],[-79.638525390625,-4.454882812500031],[-79.71098632812502,-4.467578124999946],[-79.79726562500002,-4.47636718749996],[-79.8451171875,-4.445898437499977],[-79.962890625,-4.390332031250026],[-80.06352539062499,-4.327539062500023],[-80.13955078125002,-4.296093750000011],[-80.19746093750001,-4.311035156249943],[-80.293359375,-4.416796875],[-80.38349609374998,-4.46367187499996],[-80.424169921875,-4.461425781250028],[-80.47856445312499,-4.430078125000037],[-80.48847656249995,-4.393652343749991],[-80.44384765625003,-4.335839843750023],[-80.35288085937495,-4.208496093750014],[-80.453759765625,-4.205175781249963],[-80.48847656249995,-4.165527343749972],[-80.49345703124999,-4.119140625000014],[-80.510009765625,-4.06953125000004],[-80.49013671874994,-4.010058593750003],[-80.43720703125001,-3.978613281249991],[-80.30327148437499,-4.005078124999969],[-80.26689453124993,-3.948828124999963],[-80.23051757812499,-3.924023437499969],[-80.19414062499996,-3.905859375],[-80.24375,-3.576757812500006],[-80.32465820312498,-3.387890625],[-79.96333007812501,-3.15771484375],[-79.72988281249997,-2.579101562499972],[-79.842138671875,-2.0673828125],[-79.92558593749996,-2.548535156249969],[-80.03017578124994,-2.556738281249949],[-80.00664062499993,-2.353808593750003],[-80.28471679687502,-2.706738281249955],[-80.93217773437493,-2.269140624999977],[-80.76059570312498,-1.934570312500028],[-80.90239257812499,-1.078906249999974],[-80.55390624999998,-0.847949218749989],[-80.45546875,-0.585449218749986],[-80.282373046875,-0.620507812500023],[-80.48227539062503,-0.368261718749963],[-80.046142578125,0.155371093750048],[-80.08828124999997,0.78476562500002],[-78.89965820312503,1.20625],[-78.85966796874996,1.455371093750031],[-78.1806640625,0.968554687499974],[-77.702880859375,0.837841796874997],[-77.46767578124997,0.636523437500017],[-77.396337890625,0.393896484374963],[-76.49462890624997,0.23544921875002],[-76.27060546874998,0.439404296874997],[-75.77666015624999,0.08925781249998],[-75.28447265624999,-0.10654296875002]]]]},"properties":{"name":"Ecuador","childNum":9}},{"geometry":{"type":"Polygon","coordinates":[[[34.24531250000001,31.208300781249996],[34.904296875,29.47734375],[34.736425781250006,29.27060546875],[34.39970703125002,28.01601562499999],[34.22011718750002,27.764306640624994],[33.76025390625,28.04765625],[33.24775390625001,28.567724609375],[32.56572265625002,29.973974609375],[32.35976562500002,29.630664062499996],[32.89824218750002,28.565234375],[33.54707031250001,27.898144531249997],[33.5498046875,27.607373046874997],[33.84931640625001,27.184912109375],[33.959082031250006,26.6490234375],[35.19414062500002,24.475146484375003],[35.78388671875001,23.937792968750003],[35.54082031250002,23.920654296875],[35.50439453125,23.779296875],[35.697851562500006,22.946191406249994],[36.22968750000001,22.628808593749994],[36.87138671875002,21.996728515624994],[31.434472656250023,21.995849609375],[31.486132812500017,22.14780273437499],[31.400292968750023,22.202441406250003],[31.260644531250023,22.00229492187499],[31.092675781250023,21.994873046875],[28.036425781250017,21.995361328125],[24.980273437500017,21.995849609375],[24.980273437500017,25.5888671875],[24.980273437500017,29.181884765625],[24.703222656250006,30.201074218749994],[24.96142578125,30.678515625],[24.85273437500001,31.334814453125],[25.150488281250006,31.654980468749997],[25.382226562500023,31.51279296875],[25.89326171875001,31.620898437499996],[27.248046875,31.377880859374997],[27.5400390625,31.212695312499996],[28.51484375000001,31.050439453124994],[29.072070312500017,30.830273437499997],[29.929785156250006,31.227490234374997],[30.22265625,31.2583984375],[30.395117187500006,31.4576171875],[30.92353515625001,31.566845703124997],[30.56298828125,31.4169921875],[31.001757812500017,31.462792968749994],[31.082910156250023,31.603320312499996],[31.5244140625,31.458251953125],[31.888964843750017,31.54140625],[32.13603515625002,31.341064453125],[31.8921875,31.482470703124996],[31.77109375,31.292578125],[32.10175781250001,31.092822265624996],[32.281835937500006,31.200878906249997],[32.21621093750002,31.29375],[32.60332031250002,31.06875],[33.66650390625,31.130419921874996],[34.19814453125002,31.322607421875],[34.24531250000001,31.208300781249996]]]},"properties":{"name":"Egypt","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[40.141210937500006,15.696142578125034],[40.399023437500006,15.579882812500045],[39.975195312500006,15.612451171875023],[39.94746093750004,15.696142578125034],[40.07050781250004,15.676611328125034],[39.93994140625003,15.744531250000023],[39.9567382812501,15.889404296875057],[40.141210937500006,15.696142578125034]]],[[[40.07646484375002,16.082421875000023],[40.11005859375004,15.985742187500051],[39.99609375000003,16.04267578125001],[40.07646484375002,16.082421875000023]]],[[[40.938574218750006,13.983105468749997],[40.82011718750002,14.111669921874991],[40.22148437500002,14.431152343749972],[39.531835937500006,14.53671875],[39.198046875000074,14.479394531250037],[39.1354492187501,14.581884765625034],[39.07421874999997,14.628222656249974],[39.02382812499999,14.628222656249974],[38.99570312500006,14.586865234374983],[38.81201171875003,14.482324218750009],[38.50439453124997,14.42441406250002],[38.43144531250002,14.428613281249994],[38.221484375000074,14.649658203124986],[38.002539062500006,14.737109375000045],[37.94345703125006,14.810546875],[37.884179687499994,14.852294921874972],[37.82031250000003,14.708496093749986],[37.70839843750005,14.45722656250004],[37.64843750000003,14.32255859375006],[37.571191406249994,14.149072265624966],[37.546777343749994,14.143847656249974],[37.507226562499994,14.156396484375037],[37.257226562499994,14.453759765625051],[37.024511718750006,14.271972656250057],[36.81191406250005,14.315039062500034],[36.67910156250005,14.307568359375026],[36.542382812499994,14.25820312499999],[36.52431640625005,14.256835937499986],[36.492285156250006,14.544335937500023],[36.470800781250006,14.736474609375009],[36.448144531249994,14.940087890625009],[36.42675781249997,15.132080078125043],[36.566015625,15.362109375],[36.9137695312501,16.296191406250045],[36.887792968750006,16.624658203124994],[36.9787109375001,16.800585937500045],[36.9757812500001,16.866552734375006],[36.99521484375006,17.020556640625017],[37.00898437500004,17.058886718750017],[37.06152343749997,17.061279296875057],[37.16953125000006,17.04140625],[37.41103515625005,17.061718749999955],[37.452929687500074,17.108691406250017],[37.51015625,17.28813476562499],[37.54746093750006,17.32412109375005],[37.78242187500004,17.458007812500057],[38.253515625,17.584765625000017],[38.26728515625004,17.616699218750057],[38.28984375000002,17.637011718750017],[38.34736328125004,17.68359375],[38.37373046875004,17.717333984375045],[38.42246093750006,17.823925781249983],[38.60947265625006,18.00507812500004],[39.03447265625002,17.085546875000034],[39.298925781250006,15.921093750000011],[39.78554687499999,15.124853515624991],[39.86376953124997,15.470312500000034],[40.20410156250003,15.014111328124983],[41.17646484375004,14.620312500000054],[41.65820312499997,13.983056640624994],[42.24511718749997,13.587646484374986],[42.39931640625005,13.212597656249969],[42.522851562499994,13.221484375],[42.796191406250074,12.864257812500057],[42.96953125000002,12.808349609375028],[42.99902343750003,12.899511718750048],[43.08291015625005,12.824609374999966],[43.11669921874997,12.708593749999963],[43.00566406250002,12.66230468750004],[42.88330078124997,12.621289062500026],[42.86591796875004,12.622802734374986],[42.82529296875006,12.569335937500014],[42.767480468749994,12.422851562500014],[42.70371093750006,12.380322265625054],[42.479394531249994,12.513623046875026],[42.45,12.521337890625006],[42.40859375,12.494384765625014],[42.37851562500006,12.46640625],[42.28994140625005,12.570214843750009],[42.225,12.661962890624963],[42.13427734374997,12.771435546874969],[41.95214843749997,12.88232421875],[41.85957031250004,13.025878906250028],[41.76503906250005,13.183935546874991],[41.362890625,13.499804687500031],[40.938574218750006,13.983105468749997]]]]},"properties":{"name":"Eritrea","childNum":3}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-17.887939453125,27.809570312500057],[-17.984765625000023,27.646386718750023],[-18.160546874999937,27.76147460937503],[-17.887939453125,27.809570312500057]]],[[[-15.400585937499955,28.147363281250023],[-15.436767578124972,27.810693359375023],[-15.71030273437492,27.784082031250023],[-15.809472656249966,27.994482421874977],[-15.682763671874994,28.15405273437497],[-15.400585937499955,28.147363281250023]]],[[[-17.184667968749977,28.02197265624997],[-17.324902343749955,28.11767578125003],[-17.25859375,28.203173828125045],[-17.103759765624943,28.111132812500017],[-17.184667968749977,28.02197265624997]]],[[[-16.33447265624997,28.37993164062499],[-16.41821289062497,28.15141601562496],[-16.65800781249999,28.007177734374977],[-16.905322265625017,28.33959960937503],[-16.12363281249992,28.57597656249996],[-16.33447265624997,28.37993164062499]]],[[[-14.196777343749943,28.169287109375063],[-14.332617187500006,28.056005859374977],[-14.49179687499992,28.100927734374977],[-14.231982421875017,28.21582031250003],[-14.003369140624983,28.706689453125023],[-13.85722656249996,28.73803710937503],[-13.928027343749989,28.25346679687499],[-14.196777343749943,28.169287109375063]]],[[[-17.83427734374999,28.49321289062496],[-18.00078124999999,28.758251953124955],[-17.928808593749977,28.844580078125063],[-17.7265625,28.724462890625006],[-17.83427734374999,28.49321289062496]]],[[[-13.715966796874966,28.911230468750034],[-13.85991210937496,28.869091796874983],[-13.823632812499966,29.013330078124966],[-13.463574218749955,29.237207031250023],[-13.477929687499966,29.00659179687503],[-13.715966796874966,28.911230468750034]]],[[[1.593945312500068,38.672070312499955],[1.40576171875,38.670996093750006],[1.436328125000017,38.768212890624994],[1.593945312500068,38.672070312499955]]],[[[1.445214843750051,38.91870117187503],[1.223339843750068,38.90385742187502],[1.3486328125,39.080810546875],[1.564453125,39.12104492187504],[1.623632812499977,39.03881835937497],[1.445214843750051,38.91870117187503]]],[[[3.145312500000017,39.79008789062499],[3.461816406250023,39.69775390625003],[3.072851562500006,39.30126953124997],[2.799804687500057,39.38505859374999],[2.700585937500023,39.54213867187502],[2.49951171875,39.47788085937498],[2.37001953125008,39.57207031249999],[3.15869140625,39.97050781249999],[3.145312500000017,39.79008789062499]]],[[[4.293652343750011,39.84184570312499],[3.8671875,39.958740234375],[3.853417968750051,40.06303710937502],[4.22578125000004,40.032373046874966],[4.293652343750011,39.84184570312499]]],[[[-1.794042968749949,43.407324218750006],[-1.410693359374932,43.240087890625034],[-1.460839843749937,43.05175781250006],[-1.300048828124943,43.10097656250002],[-0.586425781249943,42.798974609374966],[0.631640625000045,42.689599609374994],[0.696875,42.84511718750005],[1.428320312499977,42.59589843749998],[1.414843750000074,42.54838867187499],[1.448828124999977,42.43745117187504],[1.534082031250051,42.44169921875002],[1.7060546875,42.50332031250005],[1.859765625000051,42.457080078125045],[1.927929687500068,42.42631835937499],[2.032714843750028,42.353515625],[3.21142578125,42.43115234375],[3.248046875,41.94423828125002],[3.0048828125,41.76743164062506],[2.082617187500063,41.287402343750045],[1.032910156250068,41.06206054687496],[0.714648437500074,40.822851562500006],[0.891113281250057,40.72236328125004],[0.59609375000008,40.614501953125],[-0.327001953124949,39.519873046875006],[-0.204931640624949,39.062597656250034],[0.20156250000008,38.75917968750002],[-0.520800781249989,38.317285156249966],[-0.814648437500011,37.76992187500002],[-0.721582031249966,37.63105468749998],[-1.327539062499937,37.561132812500034],[-1.640966796874949,37.38696289062497],[-2.111523437499983,36.77666015624999],[-4.366845703124994,36.71811523437506],[-4.67412109374996,36.506445312500006],[-5.171484374999949,36.423779296874955],[-5.3609375,36.134912109374994],[-5.62548828125,36.02592773437499],[-6.040673828124937,36.18842773437498],[-6.38413085937492,36.63701171874996],[-6.216796875000028,36.91357421875],[-6.396191406249983,36.831640625],[-6.863769531250028,37.27890625],[-7.406152343749937,37.17944335937497],[-7.44394531249992,37.72827148437497],[-6.957568359374932,38.18789062499999],[-7.106396484374983,38.181005859375006],[-7.343017578124943,38.45742187500002],[-6.997949218749994,39.05644531250002],[-7.53569335937496,39.66157226562501],[-7.117675781249972,39.681689453125045],[-6.975390624999932,39.79838867187502],[-6.896093749999949,40.02182617187506],[-7.032617187499966,40.16791992187498],[-6.8101562499999,40.343115234375034],[-6.928466796874972,41.009130859375006],[-6.2125,41.53203125],[-6.542187499999955,41.672509765624994],[-6.61826171874992,41.9423828125],[-7.147119140625023,41.98115234374998],[-7.40361328124996,41.833691406249955],[-8.152490234374937,41.81196289062498],[-8.266064453124983,42.13740234375001],[-8.777148437500017,41.941064453124994],[-8.887207031249943,42.105273437500045],[-8.690917968749943,42.274169921875],[-8.815820312499966,42.285253906250034],[-8.730029296874989,42.411718750000034],[-8.8115234375,42.64033203124998],[-9.033105468750023,42.593847656250006],[-8.927197265624926,42.79858398437497],[-9.235205078124977,42.97690429687498],[-9.178076171874977,43.17402343749998],[-8.248925781249937,43.43940429687498],[-8.256738281249937,43.57988281249999],[-8.004687499999932,43.69438476562496],[-7.503613281249983,43.73994140625001],[-7.060986328124955,43.55395507812503],[-5.846679687499943,43.645068359375045],[-4.52304687499992,43.41572265625004],[-3.604638671874966,43.51948242187504],[-3.045605468749926,43.37158203125],[-2.875048828125017,43.454443359375006],[-2.337109374999926,43.32802734375002],[-1.794042968749949,43.407324218750006]]]]},"properties":{"name":"Spain","childNum":12,"cp":[-2.9366964,40.3438963]}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[22.61738281250004,58.62124023437502],[23.323242187500057,58.45083007812502],[22.730273437500045,58.23066406250001],[22.371679687499977,58.217138671875006],[21.996875,57.93134765624998],[22.187695312500068,58.15434570312502],[21.88212890624999,58.262353515624994],[21.862304687500057,58.497167968750034],[22.61738281250004,58.62124023437502]]],[[[23.343554687500017,58.550341796875045],[23.10908203125004,58.65922851562502],[23.332812500000045,58.648583984374994],[23.343554687500017,58.550341796875045]]],[[[22.923730468750023,58.826904296875],[22.54218750000001,58.68999023437499],[22.411035156250023,58.863378906250034],[22.05625,58.94360351562506],[22.6494140625,59.08710937499998],[22.90986328125004,58.99121093749997],[22.923730468750023,58.826904296875]]],[[[28.0125,59.484277343749966],[28.15107421875004,59.374414062499966],[27.434179687500006,58.787255859374994],[27.502441406250057,58.221337890624994],[27.778515625000068,57.87070312500006],[27.542089843750063,57.799414062500006],[27.4,57.66679687499999],[27.35195312500005,57.528125],[26.96601562500001,57.60913085937506],[26.532617187499994,57.53100585937503],[26.29804687500001,57.60107421875],[25.66015625,57.920166015625],[25.27265625000001,58.009375],[25.11103515625004,58.06342773437498],[24.45888671875005,57.907861328124994],[24.3625,57.86616210937501],[24.322558593750074,57.87060546875003],[24.529101562500045,58.35424804687497],[24.114843750000034,58.26611328125006],[23.767578125000057,58.36083984374997],[23.50927734375003,58.65854492187498],[23.680761718750063,58.787158203125074],[23.43203125,58.920654296875],[23.494433593750017,59.19565429687498],[24.083398437500023,59.29189453125005],[24.38037109375003,59.47265625],[25.44375,59.52114257812502],[25.50927734374997,59.63901367187506],[26.974707031250006,59.450634765624955],[28.0125,59.484277343749966]]]]},"properties":{"name":"Estonia","childNum":4}},{"geometry":{"type":"Polygon","coordinates":[[[38.43144531250002,14.428613281249994],[38.50439453125,14.424414062499991],[38.81201171875,14.482324218749994],[38.995703125,14.586865234374997],[39.02382812500002,14.628222656250003],[39.07421875,14.628222656250003],[39.13544921875001,14.581884765624991],[39.19804687500002,14.479394531249994],[39.531835937500006,14.53671875],[40.22148437500002,14.43115234375],[40.82011718750002,14.111669921874991],[40.938574218750006,13.983105468749997],[41.362890625,13.499804687500003],[41.76503906250002,13.183935546874991],[41.85957031250001,13.02587890625],[41.9521484375,12.88232421875],[42.13427734375,12.771435546874997],[42.225,12.661962890624991],[42.28994140625002,12.570214843749994],[42.378515625,12.46640625],[41.79267578125001,11.68603515625],[41.79824218750002,10.98046875],[42.557714843750006,11.080761718749997],[42.92275390625002,10.999316406249989],[42.65644531250001,10.6],[42.84160156250002,10.203076171874997],[43.181640625,9.879980468749991],[43.482519531250006,9.379492187499991],[43.98378906250002,9.008837890624989],[46.97822265625001,7.9970703125],[47.97822265625001,7.9970703125],[44.940527343750006,4.912011718749994],[43.988867187500006,4.950537109374991],[43.58349609375,4.85498046875],[43.12568359375001,4.644482421874997],[42.85664062500001,4.32421875],[42.02412109375001,4.137939453125],[41.91533203125002,4.031298828124989],[41.88398437500001,3.977734375],[41.73769531250002,3.979052734374989],[41.48193359375,3.96328125],[41.37246093750002,3.946191406249994],[41.22089843750001,3.943554687499997],[41.02080078125002,4.057470703124991],[40.765234375,4.27304687499999],[39.84218750000002,3.851464843749994],[39.79033203125002,3.754248046874991],[39.65751953125002,3.577832031249997],[39.49443359375002,3.456103515624989],[38.608007812500006,3.60009765625],[38.45156250000002,3.604833984374991],[38.22529296875001,3.618994140624991],[38.08613281250001,3.64882812499999],[37.15458984375002,4.254541015624994],[36.90556640625002,4.411474609374991],[36.02197265625,4.468115234374991],[35.76308593750002,4.808007812499994],[35.75615234375002,4.950488281249989],[35.779296875,5.105566406249991],[35.80029296875,5.156933593749997],[35.74501953125002,5.343994140625],[35.325292968750006,5.364892578124994],[35.2646484375,5.412060546874997],[35.26386718750001,5.457910156249994],[35.26835937500002,5.492285156249991],[34.98359375000001,5.858300781249994],[34.71064453125001,6.660302734374994],[34.06425781250002,7.225732421874994],[33.902441406250006,7.509521484375],[32.99892578125002,7.899511718749991],[33.28105468750002,8.437255859375],[33.95332031250001,8.443505859374994],[34.07275390625,8.545263671874991],[34.078125,9.461523437499991],[34.31123046875001,10.190869140624997],[34.34394531250001,10.658642578124997],[34.571875,10.880175781249989],[34.77128906250002,10.746191406249991],[34.93144531250002,10.864794921874989],[35.1123046875,11.816552734374994],[35.67021484375002,12.623730468749997],[36.12519531250001,12.75703125],[36.52431640625002,14.2568359375],[36.54238281250002,14.25820312499999],[36.67910156250002,14.307568359374997],[36.81191406250002,14.315039062499991],[37.024511718750006,14.27197265625],[37.25722656250002,14.453759765624994],[37.50722656250002,14.156396484374994],[37.54677734375002,14.143847656250003],[37.57119140625002,14.149072265624994],[37.6484375,14.322558593750003],[37.70839843750002,14.457226562499997],[37.8203125,14.70849609375],[37.88417968750002,14.852294921875],[37.943457031250006,14.810546875],[38.002539062500006,14.737109375],[38.22148437500002,14.649658203125],[38.43144531250002,14.428613281249994]]]},"properties":{"name":"Ethiopia","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[22.17509765624999,60.370751953124994],[22.41552734375003,60.30336914062505],[22.36054687500004,60.165576171875045],[22.07714843750003,60.286328124999955],[22.17509765624999,60.370751953124994]]],[[[21.450878906250068,60.529589843750045],[21.3,60.47978515625002],[21.224707031250006,60.62060546875003],[21.450878906250068,60.529589843750045]]],[[[21.2177734375,63.241308593750034],[21.415625,63.19736328125006],[21.25341796875,63.152001953124966],[21.08388671875008,63.277539062499955],[21.2177734375,63.241308593750034]]],[[[24.848242187500034,64.99101562499999],[24.576562500000023,65.04287109375],[24.970605468750023,65.05532226562502],[24.848242187500034,64.99101562499999]]],[[[28.96582031250003,69.02197265625],[28.414062500000057,68.90415039062506],[28.77285156250005,68.84003906249995],[28.470703125000057,68.48837890625],[28.685156250000034,68.189794921875],[29.343847656250006,68.06186523437506],[29.988085937500017,67.66826171874999],[29.066210937500045,66.89174804687497],[30.102734375000097,65.72626953125004],[29.715917968750063,65.62456054687502],[29.608007812500006,65.248681640625],[29.826953125000017,65.14506835937502],[29.60419921875004,64.968408203125],[30.072851562500063,64.76503906250005],[30.04189453125005,64.44335937499997],[30.513769531250006,64.2],[30.50390625000003,64.02060546875],[29.991503906250074,63.73515625000002],[31.180859375000097,63.208300781250074],[31.533984375000017,62.885400390624994],[31.18671875000004,62.48139648437504],[29.69013671875004,61.54609375000001],[27.797656250000074,60.53613281250003],[26.53466796874997,60.412890625000074],[26.56933593750003,60.62456054687502],[26.377734375000074,60.42407226562503],[25.955957031250023,60.474218750000034],[26.03583984375004,60.34150390625001],[25.75800781250004,60.26752929687504],[25.65644531250004,60.33320312499998],[24.44560546874999,60.021289062500045],[23.46357421875004,59.986230468749994],[23.021289062500074,59.81601562500006],[23.19843750000001,60.02182617187498],[22.911718750000063,60.20971679687497],[22.749804687500017,60.057275390624994],[22.462695312500045,60.029199218749966],[22.5849609375,60.380566406249955],[21.436035156250057,60.596386718749955],[21.605957031250057,61.59155273437503],[21.255957031250063,61.98964843750005],[21.143847656250045,62.73999023437506],[21.650976562500063,63.039306640625],[21.545117187499983,63.204296874999955],[22.31972656250005,63.310449218749994],[22.532324218750034,63.647851562499994],[23.598925781250074,64.04091796874997],[24.557910156250045,64.801025390625],[25.288183593750063,64.8603515625],[25.34785156250004,65.47924804687497],[24.674902343750006,65.67070312499999],[24.628027343750034,65.85917968750002],[24.15546875000004,65.80527343750006],[23.700292968750034,66.25263671874998],[23.988574218750045,66.81054687500003],[23.64150390625005,67.12939453124997],[23.733593750000068,67.42290039062499],[23.454882812500045,67.46025390625007],[23.63886718750004,67.95439453125002],[22.854101562500034,68.36733398437502],[21.99746093750005,68.52060546874998],[20.622167968750006,69.036865234375],[21.065722656250017,69.04174804687503],[21.06611328125001,69.21411132812497],[21.59375,69.273583984375],[22.410937500000074,68.719873046875],[23.324023437500017,68.64897460937502],[23.85400390625,68.80590820312503],[24.94140625000003,68.59326171875006],[25.748339843750017,68.99013671875],[26.07246093750004,69.69155273437497],[26.525390625000057,69.91503906250003],[27.127539062500063,69.90649414062497],[27.747851562500045,70.06484375],[29.14160156250003,69.67143554687505],[29.33339843750005,69.47299804687503],[28.846289062500006,69.17690429687502],[28.96582031250003,69.02197265625]]]]},"properties":{"name":"Finland","childNum":5}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[178.48789062500018,-18.97412109375],[177.95869140624998,-19.121582031250014],[178.33427734375013,-18.93447265625001],[178.48789062500018,-18.97412109375]]],[[[179.34931640625015,-18.10234375000003],[179.25351562500018,-18.030566406249974],[179.30644531250013,-17.944042968750026],[179.34931640625015,-18.10234375000003]]],[[[178.28017578124994,-17.37197265625001],[178.59160156249996,-17.651464843750006],[178.66767578125004,-18.080859375],[177.95546875000005,-18.264062500000023],[177.32138671875,-18.077539062500037],[177.26396484375007,-17.86347656250004],[177.5044921875,-17.539550781250043],[177.81796875000012,-17.38847656249999],[178.28017578124994,-17.37197265625001]]],[[[180,-16.96308593750001],[179.89697265625003,-16.96406250000004],[180,-16.785742187500034],[180,-16.96308593750001]]],[[[-179.97490234374996,-16.92480468750003],[-180,-16.96298828124999],[-180,-16.907812500000034],[-180,-16.82431640624999],[-180,-16.78554687499999],[-179.86098632812502,-16.68828124999999],[-179.97490234374996,-16.92480468750003]]],[[[-179.92944335937503,-16.502832031250037],[-179.999951171875,-16.540039062499986],[-179.900927734375,-16.431542968749994],[-179.92944335937503,-16.502832031250037]]],[[[179.99921875000004,-16.168554687499977],[179.56416015625004,-16.636914062499997],[179.56816406249996,-16.747460937499966],[179.93037109375004,-16.51943359375005],[179.9279296875001,-16.74443359374996],[179.41933593750005,-16.80654296875001],[179.20234375000004,-16.71269531249999],[179.00683593750003,-16.90019531249999],[178.70664062500018,-16.97617187500002],[178.4974609375,-16.78789062500003],[178.58359375000012,-16.621875],[178.80507812499994,-16.631445312500034],[179.55175781250003,-16.249902343750023],[180,-16.15292968749999],[179.99921875000004,-16.168554687499977]]]]},"properties":{"name":"Fiji","childNum":7}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-61.01875,-51.7857421875],[-60.87597656250003,-51.79423828125004],[-60.94755859374996,-51.94628906250002],[-61.14501953125003,-51.83945312500001],[-61.01875,-51.7857421875]]],[[[-60.28623046874995,-51.461914062500014],[-59.38759765625002,-51.35996093750003],[-59.26806640625,-51.42753906250003],[-59.92138671874997,-51.969531250000045],[-60.246337890625,-51.98642578125003],[-60.35346679687498,-52.13994140625004],[-60.686376953125034,-52.18837890624996],[-60.96142578125003,-52.05732421874999],[-60.23847656249998,-51.771972656250036],[-60.58251953125,-51.71269531250004],[-60.24516601562493,-51.638867187500004],[-60.56845703124998,-51.357812499999945],[-60.28623046874995,-51.461914062500014]]],[[[-60.11171875000002,-51.39589843749998],[-60.275341796874955,-51.28056640625002],[-60.06982421875,-51.307910156249996],[-60.11171875000002,-51.39589843749998]]],[[[-58.85019531249995,-51.26992187499998],[-58.42583007812502,-51.32421875000003],[-58.508935546874994,-51.48359375],[-58.271582031250034,-51.57470703124999],[-58.25922851562501,-51.417089843750034],[-57.976513671874955,-51.384375],[-57.80849609375002,-51.51796875],[-57.96044921874997,-51.58320312500003],[-57.79179687499999,-51.63613281249998],[-58.68349609375002,-51.93623046875001],[-58.65278320312498,-52.09921875],[-59.19584960937496,-52.01767578125],[-59.06801757812502,-52.17304687500003],[-59.341503906249955,-52.19599609375],[-59.395654296874966,-52.308007812499994],[-59.64873046875002,-52.134375],[-59.57080078124994,-51.92539062500003],[-59.05952148437498,-51.685449218749994],[-59.09663085937498,-51.49140624999998],[-58.85019531249995,-51.26992187499998]]]]},"properties":{"name":"Falkland Is.","childNum":4}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[55.79736328125003,-21.33935546875003],[55.36269531250005,-21.27363281250004],[55.23281250000005,-21.05839843749999],[55.311328125000074,-20.90410156249999],[55.661914062500074,-20.90625],[55.8390625000001,-21.13857421874998],[55.79736328125003,-21.33935546875003]]],[[[45.180273437500006,-12.97675781250004],[45.069433593750006,-12.895605468750034],[45.09238281250006,-12.653027343749997],[45.22314453124997,-12.752148437500026],[45.180273437500006,-12.97675781250004]]],[[[-51.65253906249998,4.061279296874972],[-52.327880859375,3.18173828125002],[-52.58300781250003,2.528906249999977],[-52.90346679687502,2.211523437499977],[-53.76777343749998,2.354833984375048],[-54.13007812499998,2.121044921875026],[-54.43310546875,2.207519531250057],[-54.51508789062498,2.245458984374963],[-54.55048828125001,2.293066406249991],[-54.59194335937502,2.313769531250031],[-54.61625976562499,2.326757812500006],[-54.60473632812497,2.335791015624991],[-54.56840820312502,2.342578125000031],[-54.53593749999999,2.343310546875003],[-54.48554687500001,2.416113281250006],[-54.402001953124966,2.46152343750002],[-54.25673828125002,2.713720703124977],[-54.19550781249998,2.817871093750057],[-54.17070312499999,2.993603515624969],[-54.203125,3.138183593750028],[-54.18803710937499,3.178759765625031],[-54.063183593749955,3.353320312499989],[-54.00957031249993,3.448535156250017],[-54.03422851562499,3.62939453125],[-54.350732421874994,4.054101562500023],[-54.47968749999998,4.836523437499991],[-53.91992187499997,5.768994140624983],[-52.899316406249966,5.425048828124986],[-52.29052734375003,4.942187500000031],[-52.324609374999966,4.770898437500037],[-52.21997070312494,4.862792968750014],[-52.05810546875003,4.717382812499963],[-52.00292968749997,4.352294921875014],[-51.82753906250002,4.635693359375026],[-51.65253906249998,4.061279296874972]]],[[[-60.826269531250006,14.494482421874991],[-61.063720703125,14.467089843750017],[-61.01132812499998,14.601904296875034],[-61.21333007812501,14.848583984375011],[-60.927148437499966,14.755175781249989],[-60.826269531250006,14.494482421874991]]],[[[-61.23046875000003,15.889941406250074],[-61.310742187499955,15.894677734374966],[-61.25,16.006298828124983],[-61.23046875000003,15.889941406250074]]],[[[-61.58955078125001,16.006933593750006],[-61.759423828124966,16.062060546875045],[-61.74804687499997,16.355273437500017],[-61.55234374999998,16.270898437499966],[-61.58955078125001,16.006933593750006]]],[[[-61.3271484375,16.230419921874983],[-61.522167968749955,16.22802734375003],[-61.47119140624994,16.506640625000045],[-61.17260742187497,16.25610351562497],[-61.3271484375,16.230419921874983]]],[[[9.480371093750023,42.80541992187503],[9.550683593750051,42.12973632812506],[9.186132812500034,41.38491210937502],[8.80751953125008,41.58837890625],[8.886816406249977,41.70068359375003],[8.621875,41.93071289062502],[8.700976562500045,42.09560546875002],[8.565625,42.35771484374996],[8.81484375000008,42.60791015625003],[9.313378906250023,42.71318359374999],[9.363183593750051,43.01738281249996],[9.480371093750023,42.80541992187503]]],[[[-1.17832031249992,45.904052734375],[-1.213574218750011,45.81660156250004],[-1.388671874999972,46.05039062500006],[-1.17832031249992,45.904052734375]]],[[[5.789746093749983,49.53828125000001],[5.823437500000011,49.50507812499998],[5.9013671875,49.48974609374997],[5.928906250000011,49.47753906249997],[5.959472656250028,49.45463867187502],[6.01142578125004,49.44545898437502],[6.074121093750023,49.45463867187502],[6.119921875000017,49.485205078125034],[6.181054687500051,49.498925781249966],[6.344335937500006,49.45273437499998],[6.735449218750006,49.16059570312498],[7.450585937500051,49.152197265625034],[8.134863281250006,48.97358398437498],[7.616601562500023,48.15678710937502],[7.615625,47.59272460937504],[7.343164062499994,47.43310546875003],[7.136035156249989,47.489843750000034],[6.968359375000034,47.453222656250034],[6.900390625000028,47.39423828125001],[7.000585937500034,47.339453125000034],[7.000585937500034,47.32250976562506],[6.978515625000057,47.30205078124996],[6.95205078125008,47.26718750000006],[6.820703125000051,47.163183593750006],[6.688085937500034,47.05825195312505],[6.66689453125008,47.026513671874966],[6.624804687500017,47.00434570312498],[6.45625,46.948339843750034],[6.438646763392874,46.774418247767855],[6.129687500000045,46.56699218750006],[6.118111049107182,46.447459542410726],[6.095898437500011,46.279394531250006],[5.970019531250045,46.214697265625034],[5.971484375000074,46.151220703125006],[6.006640625000045,46.14233398437506],[6.086621093750068,46.14702148437502],[6.19941406250004,46.19306640624998],[6.234667968750045,46.332617187500006],[6.321875,46.39370117187502],[6.428906250000011,46.43051757812506],[6.578222656250034,46.437353515625034],[6.758105468750017,46.41577148437497],[6.772070312500006,46.16513671874998],[6.897265625000017,46.05175781249997],[6.953710937500063,46.017138671875045],[7.00390625,45.95883789062506],[7.021093750000034,45.92578124999997],[6.790917968750023,45.740869140624966],[7.146386718750051,45.381738281249994],[7.07832031250004,45.23994140624998],[6.634765625000028,45.06816406249996],[6.99267578125,44.82729492187502],[6.900195312499989,44.33574218749996],[7.318554687500068,44.13798828125002],[7.637207031250057,44.16484375],[7.4931640625,43.767138671875045],[6.570214843750023,43.199072265625034],[6.115917968750011,43.07236328124998],[5.406542968750074,43.228515625],[5.05976562500004,43.44453125000004],[4.712109375000011,43.373291015625],[3.910839843750011,43.563085937500034],[3.258886718750063,43.193212890625006],[3.051757812500057,42.915136718750006],[3.21142578125,42.43115234375],[2.032714843750028,42.353515625],[1.927929687500068,42.42631835937499],[1.859765625000051,42.457080078125045],[1.7060546875,42.50332031250005],[1.709863281250051,42.604443359374955],[1.568164062500045,42.63500976562506],[1.501367187500023,42.64272460937502],[1.428320312499977,42.59589843749998],[0.696875,42.84511718750005],[0.631640625000045,42.689599609374994],[-0.586425781249943,42.798974609374966],[-1.300048828124943,43.10097656250002],[-1.460839843749937,43.05175781250006],[-1.410693359374932,43.240087890625034],[-1.794042968749949,43.407324218750006],[-1.484863281249943,43.56376953124999],[-1.245507812499937,44.55986328124999],[-1.07695312499996,44.68984375],[-1.152880859374989,44.764013671875006],[-1.245214843749977,44.66669921874998],[-1.081005859374983,45.532421874999955],[-0.548486328124966,45.00058593750006],[-0.790771484375028,45.46801757812497],[-1.195996093749983,45.714453125],[-1.03173828125,45.741064453125006],[-1.14628906249996,46.311376953125034],[-1.786523437499937,46.51484375000001],[-2.059375,46.81030273437497],[-2.01889648437492,47.03764648437502],[-2.197070312499989,47.16293945312506],[-2.027587890625028,47.27358398437502],[-1.742529296874949,47.21596679687502],[-1.97539062499996,47.31069335937505],[-2.503125,47.31206054687496],[-2.427685546874983,47.47089843749998],[-2.770312499999989,47.513867187499955],[-2.787207031249949,47.62553710937496],[-4.312109374999949,47.82290039062502],[-4.678808593749949,48.03950195312501],[-4.32944335937492,48.169970703125045],[-4.577148437499943,48.2900390625],[-4.241406249999926,48.30366210937501],[-4.719384765624966,48.363134765625034],[-4.7625,48.45024414062502],[-4.531201171874983,48.61997070312506],[-3.231445312499972,48.84082031250003],[-2.692333984374983,48.53681640624998],[-2.446191406249937,48.64829101562506],[-2.00371093749996,48.58208007812499],[-1.905712890624955,48.69711914062506],[-1.376464843749972,48.65258789062503],[-1.565478515624932,48.805517578125034],[-1.583105468749977,49.20239257812506],[-1.856445312499972,49.68378906249998],[-1.258642578124949,49.68017578125006],[-1.138525390624977,49.38789062500001],[-0.163476562499937,49.296777343749994],[0.41689453125008,49.448388671874994],[0.129394531250028,49.508447265624966],[0.186718749999983,49.703027343749994],[1.245507812500051,49.99824218750001],[1.5927734375,50.25219726562506],[1.672265625000023,50.885009765625],[2.52490234375,51.097119140624955],[2.759375,50.750634765624994],[3.10683593750008,50.779443359374994],[3.27333984375008,50.53154296875002],[3.595410156250068,50.47734374999999],[3.689355468750023,50.30605468750002],[4.174609375000017,50.24648437500005],[4.149316406250023,49.971582031249994],[4.545019531250063,49.96025390624999],[4.818652343750045,50.153173828125034],[4.867578125000051,49.78813476562502],[5.50732421875,49.51088867187502],[5.789746093749983,49.53828125000001]]]]},"properties":{"name":"France","childNum":10,"cp":[2.8719426,46.8222422]}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-7.186865234374949,62.139306640624966],[-7.116796874999977,62.046826171874955],[-7.379101562499926,62.07480468749998],[-7.186865234374949,62.139306640624966]]],[[[-6.631054687499955,62.22788085937498],[-6.655810546874932,62.09360351562498],[-6.840527343749983,62.119287109374994],[-6.725195312499949,61.95146484374999],[-7.17216796874996,62.28559570312501],[-6.631054687499955,62.22788085937498]]],[[[-6.406054687499932,62.258642578125034],[-6.544140624999926,62.20561523437499],[-6.554589843749994,62.35566406250001],[-6.406054687499932,62.258642578125034]]]]},"properties":{"name":"Faeroe Is.","childNum":3}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[158.31484375,6.813671875],[158.18339843750002,6.801269531250057],[158.13476562499997,6.944824218749986],[158.29462890625004,6.951074218750023],[158.31484375,6.813671875]]],[[[138.14267578125006,9.50068359375004],[138.06708984375004,9.419042968750006],[138.18583984375007,9.593310546874989],[138.14267578125006,9.50068359375004]]]]},"properties":{"name":"Micronesia","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[13.293554687500006,2.161572265624997],[13.172167968750017,1.78857421875],[13.21630859375,1.2484375],[13.851367187500017,1.41875],[14.180859375000011,1.370214843749991],[14.429882812500011,0.901464843749991],[14.32421875,0.62421875],[13.949609375000023,0.353808593749989],[13.860058593750011,-0.203320312500011],[14.47412109375,-0.573437500000011],[14.383984375000011,-1.890039062500009],[14.162890625000017,-2.217578125],[14.199804687500006,-2.354199218750011],[13.993847656250011,-2.490625],[13.886914062500011,-2.465429687500006],[13.733789062500023,-2.138476562500003],[13.464941406250006,-2.395410156250009],[12.991992187500017,-2.313378906250009],[12.793554687500006,-1.931835937500011],[12.590429687500006,-1.826855468750011],[12.43212890625,-1.928906250000011],[12.446386718750006,-2.329980468750009],[12.064453125,-2.41259765625],[11.60546875,-2.342578125],[11.537792968750011,-2.83671875],[11.760156250000023,-2.983105468750011],[11.715429687500006,-3.176953125000011],[11.934179687500006,-3.318554687500011],[11.8798828125,-3.665917968750009],[11.685742187500011,-3.68203125],[11.504296875000023,-3.5203125],[11.234472656250006,-3.690820312500009],[11.130175781250017,-3.916308593750003],[10.34765625,-3.013085937500009],[9.722070312500023,-2.467578125],[10.06201171875,-2.549902343750006],[9.624609375,-2.367089843750009],[9.298925781250006,-1.903027343750011],[9.483203125000017,-1.894628906250006],[9.265625,-1.825097656250009],[9.036328125000011,-1.308886718750003],[9.31884765625,-1.632031250000011],[9.501074218750006,-1.55517578125],[9.295800781250023,-1.515234375],[9.3466796875,-1.325],[9.203808593750011,-1.382421875],[9.064648437500011,-1.29833984375],[8.703125,-0.591015625000011],[8.946386718750006,-0.688769531250003],[9.296679687500017,-0.351269531250011],[9.354882812500023,0.343603515624991],[9.468164062500023,0.15976562499999],[9.796777343750023,0.044238281249989],[10.00146484375,0.194970703124994],[9.546484375,0.295947265624989],[9.324804687500006,0.552099609374991],[9.495312500000011,0.664843749999989],[9.617968750000017,0.576513671874991],[9.5908203125,1.031982421875],[9.636132812500023,1.046679687499989],[9.676464843750011,1.07470703125],[9.70458984375,1.079980468749994],[9.760546875000017,1.07470703125],[9.788671875,1.025683593749989],[9.803906250000011,0.998730468749997],[9.90673828125,0.960107421874994],[11.335351562500023,0.999707031249997],[11.332324218750017,1.528369140624989],[11.328710937500006,2.167431640624997],[11.348437500000017,2.299707031249994],[11.558984375000023,2.302197265624997],[13.2203125,2.256445312499991],[13.293554687500006,2.161572265624997]]]},"properties":{"name":"Gabon","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-1.065576171874966,50.69023437500002],[-1.25146484375,50.58881835937498],[-1.563427734374955,50.666113281250006],[-1.31279296874996,50.77348632812502],[-1.065576171874966,50.69023437500002]]],[[[-4.196777343749972,53.321435546874966],[-4.04936523437496,53.30576171874998],[-4.373046875,53.13417968750002],[-4.56787109375,53.386474609375],[-4.315087890625023,53.41723632812503],[-4.196777343749972,53.321435546874966]]],[[[-6.218017578125,54.08872070312506],[-6.649804687499937,54.05864257812496],[-7.007714843749937,54.40668945312501],[-7.324511718750017,54.13344726562502],[-7.606542968750006,54.14384765625002],[-8.118261718749977,54.41425781250004],[-7.75439453125,54.59492187499998],[-7.910595703124955,54.698339843750006],[-7.55039062499992,54.767968749999966],[-7.218652343749937,55.09199218749998],[-6.475048828124955,55.24101562499999],[-6.035791015624994,55.14453125000003],[-5.71684570312496,54.817480468750034],[-5.878613281249955,54.64130859375001],[-5.582519531249943,54.66342773437498],[-5.470410156249926,54.500195312499955],[-5.671093749999955,54.54975585937501],[-5.60678710937492,54.272558593750034],[-6.019042968749972,54.05126953124997],[-6.218017578125,54.08872070312506]]],[[[-5.105419921875011,55.448828125000034],[-5.331494140624955,55.481054687500034],[-5.318115234375,55.709179687499955],[-5.105419921875011,55.448828125000034]]],[[[-6.128906249999972,55.93056640625002],[-6.055322265624994,55.69531249999997],[-6.305078124999966,55.60693359375],[-6.286425781249989,55.77250976562499],[-6.491357421874994,55.697314453125045],[-6.462841796874955,55.808251953124994],[-6.128906249999972,55.93056640625002]]],[[[-5.970068359374949,55.814550781250034],[-6.071972656250011,55.893115234375045],[-5.72514648437496,56.118554687499966],[-5.970068359374949,55.814550781250034]]],[[[-5.77788085937496,56.344335937500034],[-6.313427734374983,56.29365234375001],[-6.138867187499955,56.490625],[-6.286328124999983,56.61186523437502],[-6.102734374999955,56.645654296874966],[-5.760839843749949,56.49067382812501],[-5.77788085937496,56.344335937500034]]],[[[-7.249853515624977,57.115332031250006],[-7.410546874999937,57.38110351562506],[-7.26713867187496,57.37177734375001],[-7.249853515624977,57.115332031250006]]],[[[-6.144726562499983,57.50498046874998],[-6.135546874999989,57.31425781250002],[-5.672460937499977,57.252685546875],[-5.94907226562492,57.045166015625],[-6.034375,57.20122070312499],[-6.322705078124926,57.20249023437498],[-6.761132812499994,57.4423828125],[-6.305957031249989,57.67197265624998],[-6.144726562499983,57.50498046874998]]],[[[-7.205566406250028,57.682958984375006],[-7.182617187499972,57.53330078125006],[-7.514746093749949,57.60195312500002],[-7.205566406250028,57.682958984375006]]],[[[-6.198681640624983,58.36328125000003],[-6.554589843749994,58.092871093750006],[-6.425195312499937,58.02128906249999],[-6.983105468749983,57.75],[-7.083447265624926,57.81376953124999],[-6.856835937499937,57.92353515624998],[-7.085253906249932,58.18217773437499],[-6.726464843749937,58.189404296874955],[-6.776464843750006,58.30151367187497],[-6.237451171874966,58.50283203125005],[-6.198681640624983,58.36328125000003]]],[[[-3.109667968749932,58.515478515625034],[-3.212353515624983,58.32124023437501],[-3.99003906249996,57.95903320312502],[-4.035595703124926,57.85200195312498],[-3.857128906249983,57.81855468750001],[-4.134521484375,57.57773437500006],[-3.402783203124955,57.708251953125],[-2.074072265624977,57.70239257812506],[-1.780664062499994,57.474023437499966],[-2.592675781249937,56.56157226562499],[-3.309960937499966,56.36347656250004],[-2.885156249999937,56.397509765625045],[-2.674267578124955,56.25341796875],[-3.362255859374955,56.02763671875002],[-3.789062499999972,56.09521484375],[-3.048730468749937,55.951953125000045],[-2.599316406249955,56.02729492187501],[-2.14707031249992,55.90297851562502],[-1.655371093749949,55.57036132812502],[-1.232421874999943,54.703710937500034],[-0.084375,54.118066406249994],[-0.20556640625,54.021728515625],[0.115332031250006,53.609277343749994],[-0.270019531249972,53.73676757812504],[-0.659912109375,53.72402343750002],[-0.293701171875,53.69233398437504],[0.270996093750028,53.33549804687499],[0.355761718750045,53.15996093750002],[0.0458984375,52.90561523437498],[0.279785156250028,52.80869140625006],[0.55878906250004,52.96694335937505],[1.05556640625008,52.95898437500003],[1.656738281249972,52.753710937500045],[1.74658203125,52.46899414062503],[1.59140625,52.11977539062502],[1.232421875000057,51.97124023437496],[1.188476562500057,51.803369140624966],[0.752246093750017,51.729589843750034],[0.890917968750017,51.571435546874966],[0.42451171875004,51.465625],[1.414941406250023,51.36328125],[1.397558593750034,51.18203125000002],[0.960156250000011,50.92587890624998],[0.299707031249994,50.775976562500006],[-0.785253906249949,50.76542968749999],[-1.416455078124955,50.896875],[-1.334472656249943,50.82080078124997],[-1.516748046874937,50.747460937499966],[-2.031054687499932,50.72539062499999],[-2.035839843749926,50.603076171875045],[-2.999414062499937,50.71660156249999],[-3.40458984374996,50.63242187499998],[-3.679785156250006,50.239941406249955],[-4.194580078124972,50.39331054687503],[-4.727978515624926,50.29047851562504],[-5.11850585937492,50.038330078125],[-5.622119140624932,50.05068359375002],[-4.188183593749926,51.18852539062502],[-3.135986328124972,51.20502929687501],[-2.433056640624926,51.74072265625],[-3.293115234374994,51.390429687500045],[-3.890771484374994,51.591650390625006],[-4.234570312499955,51.56909179687503],[-4.091015624999926,51.65991210937506],[-4.38627929687496,51.74106445312506],[-4.902294921874926,51.626269531250045],[-5.168359374999937,51.74072265625],[-5.183349609374972,51.94965820312501],[-4.217724609374983,52.277441406250006],[-3.980322265624949,52.54174804687503],[-4.101464843750023,52.915478515624955],[-4.683056640624926,52.80615234374997],[-4.268554687499943,53.14453125],[-3.427734374999972,53.34067382812498],[-3.097558593749937,53.260302734375045],[-3.064746093749932,53.426855468750034],[-2.74951171875,53.310205078124994],[-3.064599609374994,53.512841796874966],[-2.84648437499996,54.135302734375045],[-3.165966796874955,54.12792968750006],[-3.56938476562496,54.46757812499996],[-3.464599609374943,54.77309570312505],[-3.036230468749977,54.95307617187501],[-3.550439453124937,54.94741210937502],[-3.957910156249994,54.780957031249955],[-4.818066406249983,54.84614257812501],[-4.911230468749949,54.68945312500006],[-5.032324218749949,54.76137695312505],[-5.172705078124949,54.98588867187496],[-4.676757812499972,55.50131835937498],[-4.871679687499977,55.87392578125005],[-4.58408203124992,55.93867187500001],[-4.844091796874949,56.05117187499999],[-4.80029296875,56.158349609374994],[-5.228222656249983,55.886328125],[-5.084326171874977,56.197460937499955],[-5.41044921874996,55.995361328125],[-5.55644531249996,55.389599609374955],[-5.730664062499926,55.33413085937502],[-5.504492187499949,55.80239257812502],[-5.609570312499955,56.055273437500034],[-5.188378906249937,56.75805664062503],[-5.652441406249977,56.531982421875],[-6.133691406249966,56.706689453124966],[-5.730615234374994,56.853076171875045],[-5.86142578124992,56.902685546875006],[-5.561914062499994,57.23271484375002],[-5.794921874999972,57.37880859375002],[-5.581787109374972,57.546777343749966],[-5.744921874999989,57.668310546875034],[-5.608349609374955,57.88134765625],[-5.157226562499972,57.88134765625],[-5.413183593750006,58.06972656250002],[-5.338281250000023,58.23872070312498],[-5.008300781250028,58.262646484374955],[-5.016748046874966,58.566552734374966],[-4.433251953124937,58.51284179687505],[-3.25913085937492,58.65],[-3.053076171874949,58.63481445312502],[-3.109667968749932,58.515478515625034]]],[[[-3.057421874999932,59.02963867187498],[-2.793017578124989,58.906933593749955],[-3.331640624999949,58.97124023437499],[-3.31035156249996,59.13081054687498],[-3.057421874999932,59.02963867187498]]],[[[-1.30810546875,60.5375],[-1.052441406249955,60.44448242187502],[-1.299462890624994,59.87866210937503],[-1.290917968749937,60.153466796874966],[-1.663769531249983,60.282519531250074],[-1.374609374999949,60.33291015625002],[-1.571777343749972,60.494433593750074],[-1.363964843750011,60.60957031249998],[-1.30810546875,60.5375]]]]},"properties":{"name":"United Kingdom","childNum":14,"cp":[-2.5830348,54.4598409]}},{"geometry":{"type":"Polygon","coordinates":[[[46.30546875000002,41.507714843749994],[46.61894531250002,41.34375],[46.67255859375001,41.28681640625],[46.66240234375002,41.245507812499994],[46.62636718750002,41.15966796875],[46.534375,41.08857421875],[46.43095703125002,41.077050781249994],[46.086523437500006,41.183837890625],[45.28095703125001,41.449560546875],[45.21718750000002,41.423193359375],[45.00136718750002,41.290966796875],[44.97587890625002,41.277490234374994],[44.81132812500002,41.259375],[44.077246093750006,41.182519531249994],[43.43339843750002,41.155517578125],[43.20546875000002,41.199169921875],[43.15283203125,41.23642578125],[43.14101562500002,41.26484375],[43.17128906250002,41.287939453125],[43.149023437500006,41.30712890625],[43.05712890625,41.352832031249996],[42.90673828125,41.466845703124996],[42.82167968750002,41.4923828125],[42.78789062500002,41.563720703125],[42.75410156250001,41.57890625],[42.68242187500002,41.585742187499996],[42.60683593750002,41.57880859375],[42.590429687500006,41.57070312499999],[42.5673828125,41.55927734375],[42.46640625,41.43984375],[41.92578125,41.495654296874996],[41.82353515625002,41.432373046875],[41.779394531250006,41.44052734375],[41.701757812500006,41.471582031249994],[41.57656250000002,41.497314453125],[41.51005859375002,41.517480468749994],[41.701757812500006,41.705419921875],[41.76298828125002,41.970019531249996],[41.48876953125,42.659326171874994],[40.83662109375001,43.0634765625],[40.46210937500001,43.145703125],[39.97832031250002,43.419824218749994],[40.02373046875002,43.48486328125],[40.084570312500006,43.553125],[40.648046875,43.53388671875],[40.941992187500006,43.41806640625],[41.083105468750006,43.374462890625],[41.35820312500002,43.333398437499994],[41.46074218750002,43.276318359375],[41.58056640625,43.21923828125],[42.76064453125002,43.169580078124994],[42.99160156250002,43.09150390625],[43.00019531250001,43.049658203125],[43.08916015625002,42.9890625],[43.55781250000001,42.844482421875],[43.623046875,42.80771484375],[43.78261718750002,42.747021484375],[43.79873046875002,42.727783203125],[43.79541015625,42.702978515625],[43.74990234375002,42.657519531249996],[43.738378906250006,42.616992187499996],[43.759863281250006,42.59384765625],[43.82597656250002,42.571533203125],[43.95742187500002,42.566552734374994],[44.00468750000002,42.595605468749994],[44.10273437500001,42.616357421874994],[44.32949218750002,42.70351562499999],[44.505859375,42.7486328125],[44.77109375,42.616796875],[44.85048828125002,42.746826171875],[44.87099609375002,42.756396484374996],[44.943359375,42.730273437499996],[45.07158203125002,42.694140625],[45.160253906250006,42.675],[45.34375,42.52978515625],[45.56289062500002,42.5357421875],[45.70527343750001,42.498095703124996],[45.7275390625,42.475048828125],[45.63427734375,42.234716796875],[45.63857421875002,42.205078125],[46.21269531250002,41.989892578124994],[46.42988281250001,41.890966796875],[46.18427734375001,41.7021484375],[46.30546875000002,41.507714843749994]]]},"properties":{"name":"Georgia","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-0.068603515625,11.115625],[0.009423828125023,11.02099609375],[-0.08632812499999,10.673046875],[0.380859375,10.291845703124991],[0.264550781250023,9.644726562499997],[0.342578125000017,9.604150390624994],[0.2333984375,9.463525390624994],[0.525683593750017,9.398486328124989],[0.48876953125,8.851464843749994],[0.37255859375,8.75927734375],[0.686328125000017,8.354882812499994],[0.5,7.546875],[0.634765625,7.353662109374994],[0.525585937500011,6.850927734374991],[0.736914062500006,6.452587890624997],[1.187207031250011,6.089404296874989],[0.94970703125,5.810253906249997],[0.259667968750023,5.75732421875],[-2.001855468749994,4.762451171875],[-3.114013671875,5.088671874999989],[-2.815673828125,5.153027343749997],[-2.754980468749977,5.432519531249994],[-2.793652343749983,5.60009765625],[-2.998291015625,5.71132812499999],[-3.227148437499977,6.749121093749991],[-2.959082031249977,7.454541015624997],[-2.789746093749983,7.931933593749989],[-2.668847656249994,8.022216796875],[-2.613378906249977,8.046679687499989],[-2.600976562499994,8.082226562499997],[-2.619970703124977,8.12109375],[-2.61171875,8.147558593749991],[-2.538281249999983,8.171630859375],[-2.505859375,8.208740234375],[-2.600390624999989,8.800439453124994],[-2.649218749999989,8.956591796874989],[-2.689892578124983,9.025097656249997],[-2.746923828124977,9.045117187499997],[-2.705761718749983,9.351367187499989],[-2.695849609374989,9.481347656249994],[-2.706201171874994,9.533935546875],[-2.765966796874977,9.658056640624991],[-2.780517578125,9.745849609375],[-2.791162109374994,10.432421874999989],[-2.914892578124977,10.592333984374989],[-2.829931640624977,10.998388671874991],[-1.04248046875,11.010058593749989],[-0.627148437499983,10.927392578124994],[-0.299462890624994,11.166894531249994],[-0.068603515625,11.115625]]]},"properties":{"name":"Ghana","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-11.389404296875,12.404394531249991],[-11.502197265625,12.198632812499994],[-11.30517578125,12.015429687499989],[-10.933203124999977,12.205175781249991],[-10.709228515625,11.898730468749989],[-10.274853515624983,12.212646484375],[-9.754003906249977,12.029931640624994],[-9.358105468749983,12.255419921874989],[-9.395361328124977,12.464648437499989],[-9.043066406249977,12.40234375],[-8.818310546874983,11.922509765624994],[-8.822021484375,11.673242187499994],[-8.398535156249977,11.366552734374991],[-8.666699218749983,11.009472656249997],[-8.33740234375,10.990625],[-8.266650390624989,10.485986328124994],[-8.007275390624983,10.321875],[-7.990625,10.1625],[-8.155175781249994,9.973193359374989],[-8.136962890625,9.49570312499999],[-7.896191406249983,9.415869140624991],[-7.918066406249977,9.188525390624989],[-7.839404296874989,9.151611328125],[-7.7998046875,9.115039062499989],[-7.777978515624994,9.080859374999989],[-7.902099609375,9.01708984375],[-7.938183593749983,8.979785156249989],[-7.950976562499989,8.786816406249997],[-7.719580078124977,8.643017578124997],[-7.696093749999989,8.375585937499991],[-7.823583984374977,8.467675781249994],[-7.953125,8.477734375],[-8.236962890624994,8.455664062499991],[-8.244140625,8.407910156249997],[-8.256103515625,8.253710937499989],[-8.217138671874977,8.219677734374997],[-8.140625,8.181445312499989],[-8.048583984375,8.169726562499989],[-8.009863281249977,8.07851562499999],[-8.126855468749994,7.867724609374989],[-8.115429687499983,7.7607421875],[-8.205957031249994,7.59023437499999],[-8.231884765624983,7.556738281249991],[-8.429980468749989,7.601855468749989],[-8.486425781249977,7.558496093749994],[-8.659765624999977,7.688378906249994],[-8.8896484375,7.2626953125],[-9.11757812499999,7.215917968749991],[-9.463818359374983,7.415869140624991],[-9.369140625,7.703808593749997],[-9.518261718749983,8.34609375],[-9.781982421875,8.537695312499991],[-10.064355468749994,8.429882812499997],[-10.147412109374983,8.519726562499997],[-10.233056640624994,8.488818359374989],[-10.283203125,8.485156249999989],[-10.360058593749983,8.495507812499994],[-10.394433593749994,8.48095703125],[-10.496435546874977,8.362109374999989],[-10.557714843749977,8.315673828125],[-10.686962890624983,8.321679687499994],[-10.712109374999983,8.335253906249989],[-10.677343749999977,8.400585937499997],[-10.500537109374989,8.687548828124989],[-10.615966796875,9.059179687499991],[-10.726855468749989,9.081689453124994],[-10.747021484374983,9.095263671874989],[-10.749951171874983,9.122363281249989],[-10.687646484374994,9.261132812499994],[-10.682714843749977,9.289355468749989],[-10.758593749999989,9.385351562499991],[-11.047460937499977,9.786328125],[-11.180859374999983,9.925341796874989],[-11.205664062499977,9.977734375],[-11.273632812499983,9.996533203124997],[-11.911083984374983,9.993017578124991],[-12.142333984375,9.87539062499999],[-12.427978515625,9.898144531249997],[-12.557861328125,9.704980468749994],[-12.755859375,9.373583984374989],[-12.958789062499989,9.263330078124994],[-13.077294921874994,9.069628906249989],[-13.292675781249983,9.04921875],[-13.436279296875,9.4203125],[-13.691357421874983,9.535791015624994],[-13.689794921874977,9.927783203124989],[-13.820117187499989,9.88720703125],[-14.045019531249977,10.141259765624994],[-14.426904296874994,10.248339843749989],[-14.609570312499983,10.549853515624989],[-14.593505859375,10.766699218749991],[-14.677343749999977,10.68896484375],[-14.775927734374989,10.931640625],[-14.88671875,10.968066406249989],[-14.975,10.803417968749997],[-15.051220703124983,10.834570312499991],[-15.043017578124989,10.940136718749997],[-14.9990234375,10.9921875],[-14.944433593749977,11.072167968749994],[-14.779296875,11.405517578125],[-14.720263671874989,11.48193359375],[-14.682958984374977,11.508496093749997],[-14.604785156249989,11.511621093749994],[-14.452441406249989,11.556201171874989],[-14.327832031249983,11.629785156249994],[-14.265576171874983,11.659912109375],[-14.122314453125,11.65195312499999],[-13.953222656249977,11.664599609374989],[-13.732763671874977,11.736035156249997],[-13.730664062499983,11.959863281249994],[-13.737988281249983,12.009667968749994],[-13.816308593749994,12.054492187499989],[-13.948876953124994,12.178173828124997],[-13.8875,12.246875],[-13.759765625,12.262353515624994],[-13.673535156249983,12.478515625],[-13.732617187499983,12.592822265624989],[-13.729248046875,12.673925781249991],[-13.082910156249994,12.633544921875],[-13.061279296875,12.489990234375],[-12.930712890624989,12.532275390624989],[-12.399072265624994,12.340087890625],[-11.389404296875,12.404394531249991]]]},"properties":{"name":"Guinea","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-16.763330078124994,13.064160156249997],[-16.824804687499977,13.341064453125],[-16.669335937499994,13.475],[-16.41337890624999,13.269726562499997],[-15.427490234375,13.46835937499999],[-16.135449218749983,13.4482421875],[-16.351806640625,13.34335937499999],[-16.56230468749999,13.587304687499994],[-15.509667968749994,13.586230468750003],[-15.426855468749977,13.727001953124997],[-15.108349609374983,13.81210937499999],[-14.405468749999983,13.503710937500003],[-13.977392578124977,13.54345703125],[-13.826708984374989,13.4078125],[-14.246777343749983,13.23583984375],[-15.151123046875,13.556494140624991],[-15.286230468749977,13.39599609375],[-15.814404296874983,13.325146484374997],[-15.834277343749989,13.156445312499997],[-16.648779296874977,13.154150390624991],[-16.763330078124994,13.064160156249997]]]},"properties":{"name":"Gambia","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-15.895898437499966,11.082470703124969],[-15.963964843749977,11.05898437499998],[-15.937695312499955,11.192773437499966],[-15.895898437499966,11.082470703124969]]],[[[-16.11450195312503,11.059423828124977],[-16.236425781249977,11.113427734374966],[-16.06733398437501,11.197216796874983],[-16.11450195312503,11.059423828124977]]],[[[-15.901806640624926,11.4658203125],[-16.02319335937497,11.477148437499991],[-15.964550781249926,11.59829101562498],[-15.901806640624926,11.4658203125]]],[[[-15.986425781249949,11.882031249999969],[-16.038330078124943,11.759716796875011],[-16.15244140624992,11.876806640624963],[-15.986425781249949,11.882031249999969]]],[[[-13.759765625,12.262353515624994],[-13.8875,12.246875],[-13.948876953124966,12.178173828124997],[-13.737988281250011,12.009667968750037],[-13.730664062499926,11.959863281250009],[-13.73276367187492,11.736035156249983],[-13.953222656249977,11.664599609374989],[-14.265576171874926,11.659912109375014],[-14.327832031250011,11.629785156250009],[-14.452441406249989,11.556201171875017],[-14.604785156249932,11.511621093749994],[-14.682958984374949,11.508496093749983],[-14.720263671875017,11.481933593749986],[-14.779296874999972,11.405517578125057],[-14.944433593749949,11.072167968749994],[-14.999023437499972,10.992187500000043],[-15.04301757812496,10.940136718750011],[-15.09375,11.011035156249974],[-15.054589843749994,11.141943359375006],[-15.222119140624926,11.030908203125037],[-15.216699218749994,11.15625],[-15.39311523437496,11.217236328124983],[-15.354687499999955,11.396337890624963],[-15.479492187499972,11.410302734374966],[-15.072656249999937,11.597802734374966],[-15.230371093750023,11.686767578124972],[-15.412988281249994,11.615234374999972],[-15.501904296875011,11.723779296874966],[-15.467187499999937,11.842822265624974],[-15.078271484374937,11.968994140625014],[-15.941748046875006,11.786621093749986],[-15.92021484374996,11.93779296874996],[-16.138427734375,11.917285156250045],[-16.32807617187501,12.051611328124963],[-16.244580078124955,12.237109375],[-16.43681640624996,12.204150390625045],[-16.711816406249937,12.354833984375006],[-16.656933593749955,12.364355468749991],[-16.52133789062495,12.348632812499986],[-16.41630859374996,12.367675781250057],[-16.24150390624996,12.443310546875011],[-16.144189453124937,12.457421875000037],[-15.839550781249955,12.437890624999966],[-15.57480468749992,12.490380859375009],[-15.19609375,12.679931640624986],[-14.3492187499999,12.67641601562498],[-14.064843749999966,12.675292968750014],[-13.729248046875,12.673925781250006],[-13.732617187499983,12.592822265625003],[-13.673535156249926,12.478515624999986],[-13.759765625,12.262353515624994]]]]},"properties":{"name":"Guinea-Bissau","childNum":5}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[11.332324218750017,1.528369140624989],[11.335351562500023,0.999707031250011],[9.906738281250028,0.960107421875037],[9.80390625000004,0.998730468749997],[9.788671875000034,1.025683593749974],[9.760546874999989,1.074707031250014],[9.704589843750057,1.079980468750023],[9.676464843750011,1.074707031250014],[9.636132812500051,1.046679687499989],[9.590820312500057,1.031982421875014],[9.599414062500045,1.054443359374972],[9.509863281250006,1.114794921875017],[9.385937500000068,1.13925781250002],[9.807031250000051,1.927490234375028],[9.77968750000008,2.068212890625006],[9.800781250000028,2.304443359375],[9.826171875000057,2.297802734374969],[9.8369140625,2.242382812500054],[9.870117187500028,2.21328125],[9.979882812499994,2.167773437500045],[10.790917968750023,2.167578125],[11.096582031250051,2.167480468749986],[11.328710937500006,2.167431640624969],[11.332324218750017,1.528369140624989]]],[[[8.735742187500023,3.758300781249972],[8.910058593750023,3.758203125000051],[8.946093750000074,3.627539062499977],[8.704003906250051,3.223632812500028],[8.474902343749989,3.264648437500043],[8.464648437500045,3.450585937499994],[8.735742187500023,3.758300781249972]]]]},"properties":{"name":"Eq. Guinea","childNum":2}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[23.852246093749983,35.53544921874999],[24.166015625000057,35.59521484375],[24.108984374999977,35.49580078124998],[24.35400390625,35.359472656250034],[25.73017578125004,35.34858398437501],[25.791308593750074,35.122851562500045],[26.32021484375008,35.315136718749955],[26.165625,35.018603515625045],[24.79980468750003,34.93447265625002],[24.70888671875008,35.08906250000001],[24.463671875000045,35.160351562499955],[23.59277343749997,35.257226562499966],[23.56982421875,35.534765625000034],[23.67265624999999,35.51391601562506],[23.736914062500034,35.65551757812503],[23.852246093749983,35.53544921874999]]],[[[27.17607421874999,35.46528320312498],[27.070703125000023,35.59775390624998],[27.22314453125,35.820458984374966],[27.17607421874999,35.46528320312498]]],[[[23.053808593750034,36.18979492187498],[22.91083984375004,36.220996093750045],[22.950488281250045,36.38393554687502],[23.053808593750034,36.18979492187498]]],[[[27.84277343750003,35.929296875000034],[27.71552734375004,35.95732421874996],[27.71630859375003,36.17158203125001],[28.23183593750005,36.43364257812502],[28.087792968750023,36.06533203125002],[27.84277343750003,35.929296875000034]]],[[[25.48242187500003,36.39262695312502],[25.37050781250005,36.35893554687499],[25.408984375000074,36.473730468750006],[25.48242187500003,36.39262695312502]]],[[[26.46064453125001,36.58540039062501],[26.270019531250057,36.54692382812499],[26.370019531250023,36.63857421875002],[26.46064453125001,36.58540039062501]]],[[[26.94960937500005,36.72709960937502],[27.214941406250006,36.89863281249998],[27.352148437499977,36.86889648437506],[26.94960937500005,36.72709960937502]]],[[[25.859375,36.79042968750005],[25.74316406250003,36.78974609374998],[26.06445312500003,36.90273437500002],[25.859375,36.79042968750005]]],[[[27.01972656250004,36.95903320312502],[26.91992187500003,36.94521484375005],[26.88867187499997,37.087255859375034],[27.01972656250004,36.95903320312502]]],[[[25.278906250000034,37.06840820312502],[25.105468750000057,37.034960937500045],[25.235058593750068,37.148535156250006],[25.278906250000034,37.06840820312502]]],[[[25.54589843749997,36.96757812499999],[25.45673828125001,36.9296875],[25.361914062500063,37.07041015624998],[25.52529296875005,37.19638671875006],[25.54589843749997,36.96757812499999]]],[[[24.523535156250063,37.125097656250006],[24.42480468750003,37.131982421874994],[24.48378906250005,37.21020507812503],[24.523535156250063,37.125097656250006]]],[[[25.402734375000023,37.419140624999955],[25.312695312500068,37.48930664062496],[25.462988281250063,37.47109375],[25.402734375000023,37.419140624999955]]],[[[26.029296875000057,37.529394531250034],[26.086328125000023,37.63491210937505],[26.351367187500017,37.67431640625],[26.029296875000057,37.529394531250034]]],[[[25.255859375000057,37.59960937500006],[25.156347656250034,37.54506835937505],[24.99648437500005,37.676904296874994],[25.255859375000057,37.59960937500006]]],[[[24.35595703125003,37.57685546875004],[24.28896484375005,37.52827148437498],[24.37910156250004,37.682714843750006],[24.35595703125003,37.57685546875004]]],[[[26.82441406250004,37.81142578125005],[27.05507812500005,37.70927734375002],[26.84492187500004,37.64472656250001],[26.58105468750003,37.723730468750034],[26.82441406250004,37.81142578125005]]],[[[20.888476562500074,37.805371093749955],[20.993945312500074,37.70800781250003],[20.81855468750004,37.66474609375001],[20.61953125000008,37.855029296875045],[20.691503906250006,37.929541015625034],[20.888476562500074,37.805371093749955]]],[[[24.991699218750057,37.75961914062506],[24.962207031250074,37.69238281250003],[24.7001953125,37.961669921875],[24.956347656250045,37.90478515625006],[24.991699218750057,37.75961914062506]]],[[[20.61230468750003,38.38334960937502],[20.761328125,38.07055664062497],[20.523535156250063,38.106640624999955],[20.4521484375,38.23417968750002],[20.35253906250003,38.179882812499955],[20.563183593750068,38.474951171875034],[20.61230468750003,38.38334960937502]]],[[[26.094042968750017,38.21806640625002],[25.891894531250045,38.243310546874994],[25.991406250000068,38.353515625],[25.846093750000023,38.57402343749996],[26.16035156250001,38.54072265625001],[26.094042968750017,38.21806640625002]]],[[[20.68671875000001,38.60869140625002],[20.5546875,38.58256835937502],[20.69414062499999,38.84423828125003],[20.68671875000001,38.60869140625002]]],[[[24.67470703125005,38.80922851562502],[24.54101562499997,38.788671875],[24.485644531250074,38.980273437500045],[24.67470703125005,38.80922851562502]]],[[[23.41542968750008,38.958642578124994],[23.525,38.8134765625],[24.127539062500034,38.648486328125045],[24.27578125000005,38.22001953124996],[24.58837890625003,38.12397460937504],[24.53652343750005,37.97973632812506],[24.212011718750006,38.11752929687506],[24.040136718750006,38.389990234375034],[23.65078125000008,38.44306640625001],[23.25214843750004,38.80122070312498],[22.870312500000068,38.870507812499966],[23.258203125000023,39.03134765625006],[23.41542968750008,38.958642578124994]]],[[[26.41015625000003,39.329443359375034],[26.59560546875005,39.04882812499997],[26.488671875000023,39.074804687500034],[26.46875,38.97280273437502],[26.10791015625,39.08105468749997],[26.273144531249983,39.19755859374999],[26.072363281250034,39.095605468749994],[25.84414062500008,39.20004882812506],[26.16542968750008,39.37353515625006],[26.41015625000003,39.329443359375034]]],[[[20.077929687500045,39.432714843750034],[19.883984375000068,39.461523437500034],[19.646484375,39.76708984375003],[19.926074218750017,39.773730468750045],[19.8466796875,39.66811523437502],[20.077929687500045,39.432714843750034]]],[[[25.43769531250004,39.98330078125002],[25.357031250000063,39.80810546875003],[25.24941406250005,39.89414062500006],[25.06220703125004,39.852392578125006],[25.05800781250005,39.999658203124966],[25.43769531250004,39.98330078125002]]],[[[24.774218750000074,40.615185546874955],[24.515527343750023,40.64702148437496],[24.623339843750045,40.79291992187501],[24.774218750000074,40.615185546874955]]],[[[26.03896484375008,40.726757812499955],[25.10449218750003,40.994726562500006],[24.792968750000057,40.857519531250034],[24.47705078125,40.94775390625003],[24.082324218750074,40.72407226562504],[23.762792968750063,40.74780273437497],[23.866796875000034,40.41855468750006],[24.21279296875008,40.32778320312502],[24.343359375000034,40.14770507812503],[23.913183593750063,40.35878906250005],[23.72792968750008,40.329736328124994],[23.96748046875001,40.11455078125002],[23.947070312500045,39.96557617187506],[23.66455078125003,40.22382812499998],[23.42626953125,40.26396484374999],[23.62734375,39.92407226562503],[22.896484375000057,40.39990234374997],[22.92226562500008,40.59086914062499],[22.629492187500034,40.49555664062501],[22.59218750000005,40.03691406250002],[23.327734374999977,39.174902343750006],[23.15468750000008,39.10146484375005],[23.16171875,39.25776367187501],[22.92138671874997,39.30634765625004],[22.886035156250074,39.16997070312496],[23.066699218750017,39.03793945312498],[22.569140625000074,38.86748046874999],[23.25292968750003,38.66123046875006],[23.68398437500008,38.35244140625002],[23.96699218750001,38.275],[24.024511718750006,38.139794921874966],[24.01972656250001,37.67773437499997],[23.50175781249999,38.03486328124998],[23.03632812500004,37.87836914062501],[23.48925781250003,37.440185546875],[23.16152343750005,37.333837890625006],[22.725390625000017,37.542138671874966],[23.16015625000003,36.448095703125034],[22.717187500000023,36.79394531250006],[22.42773437500003,36.47578124999998],[22.08046875000008,37.028955078124966],[21.95556640625003,36.990087890625034],[21.892382812500045,36.73730468749997],[21.58291015625005,37.080957031249994],[21.678906250000068,37.38720703125003],[21.124707031250068,37.89160156250003],[21.40371093750005,38.19667968750002],[21.658398437500068,38.17509765624996],[21.82470703125003,38.328125],[22.846386718750068,37.96757812499996],[23.18349609375008,38.133691406249966],[22.421679687500045,38.43852539062499],[22.319921875,38.35683593750005],[21.96533203124997,38.412451171875006],[21.47255859375005,38.321386718750006],[21.3310546875,38.48730468749997],[21.303320312500034,38.373925781249966],[21.113183593750023,38.38466796875002],[20.768554687500057,38.874414062499966],[21.111621093750045,38.89628906249999],[21.11835937500001,39.029980468749955],[20.71337890625,39.03515625000003],[20.300781250000057,39.32709960937501],[20.19140625,39.545800781249966],[20.099414062500074,39.641259765624966],[20.001269531250074,39.70942382812501],[20.022558593750063,39.710693359375],[20.059765624999983,39.69912109375002],[20.13105468750004,39.66162109375003],[20.206835937500017,39.65351562499998],[20.382421875,39.802636718749994],[20.381640625000017,39.84179687500006],[20.311328125000074,39.95078125000006],[20.311132812500034,39.97944335937504],[20.338476562500006,39.991064453125006],[20.38369140625008,40.0171875],[20.408007812500074,40.049462890624994],[20.4560546875,40.065576171874994],[20.657421875000068,40.11738281249998],[20.881640625000017,40.467919921874994],[21.030859375000034,40.62246093750002],[20.95576171875001,40.775292968749994],[20.96425781250005,40.84990234374999],[21.575781250000034,40.86894531249996],[21.627539062500006,40.896337890625034],[21.77949218750004,40.95043945312506],[21.99335937500001,41.13095703125006],[22.18447265625005,41.15864257812501],[22.49355468750005,41.118505859375006],[22.603613281249977,41.14018554687499],[22.724804687500068,41.17851562499999],[22.78388671875004,41.33198242187498],[23.155957031250068,41.32207031249999],[23.239843750000034,41.38496093750001],[23.372070312500057,41.3896484375],[23.433398437500017,41.39873046874999],[23.53583984375001,41.38603515624999],[23.63515625000008,41.386767578125045],[24.011328124999977,41.460058593750034],[24.03291015625004,41.469091796875034],[24.05605468750005,41.527246093749966],[24.38671875,41.523535156250006],[24.487890625,41.55522460937499],[24.518261718750068,41.55253906249996],[24.773730468750045,41.356103515624994],[24.99355468750008,41.36499023437503],[25.133398437500063,41.31577148437506],[25.251171875000068,41.243554687499994],[25.923339843750057,41.311914062499966],[26.066406250000057,41.35068359375006],[26.135351562499977,41.3857421875],[26.155175781250023,41.43486328124999],[26.143554687500057,41.52153320312496],[26.085546875000063,41.704150390625045],[26.10742187499997,41.72568359374998],[26.20058593750005,41.74379882812502],[26.320898437500034,41.716552734375],[26.581347656250074,41.60126953125004],[26.62490234375008,41.401757812499994],[26.330664062499977,41.23876953125],[26.331054687500057,40.954492187499994],[26.03896484375008,40.726757812499955]]]]},"properties":{"name":"Greece","childNum":29}},{"geometry":{"type":"Polygon","coordinates":[[[-61.71552734375,12.012646484374997],[-61.714990234374994,12.18515625],[-61.60703125,12.223291015624994],[-61.71552734375,12.012646484374997]]]},"properties":{"name":"Grenada","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-46.266699218750006,60.781396484374994],[-46.381542968749955,60.66030273437502],[-46.7880859375,60.758398437500034],[-46.205224609374994,60.943505859374994],[-46.266699218750006,60.781396484374994]]],[[[-37.03125,65.53198242187497],[-37.23842773437494,65.60986328125003],[-37.047509765624966,65.722265625],[-37.03125,65.53198242187497]]],[[[-51.01367187499994,69.55249023437497],[-51.202050781249966,69.525],[-51.33886718749994,69.73203125000006],[-51.094580078125006,69.92416992187503],[-50.67900390624999,69.84853515625],[-51.01367187499994,69.55249023437497]]],[[[-52.73115234375001,69.94472656250005],[-52.0453125,69.8072265625],[-51.90019531249999,69.60478515625007],[-53.57841796874996,69.25664062500002],[-54.18271484374995,69.40351562500001],[-53.65830078124998,69.46513671875005],[-53.825,69.54033203124999],[-54.91914062499998,69.71362304687503],[-54.78789062499996,69.94985351562502],[-54.322607421875034,69.94189453125],[-54.83076171875001,70.13295898437502],[-54.37163085937499,70.31728515625],[-53.296728515625034,70.20537109375002],[-52.73115234375001,69.94472656250005]]],[[[-51.67514648437498,70.855224609375],[-52.11938476562497,70.87065429687502],[-52.10673828124999,70.96801757812497],[-51.67514648437498,70.855224609375]]],[[[-25.43232421875001,70.92133789062495],[-25.402246093749994,70.65268554687503],[-26.217871093749977,70.45405273437498],[-26.604687499999926,70.55336914062497],[-28.03525390624995,70.48681640625],[-27.61723632812496,70.91376953125001],[-26.621777343749955,70.87563476562497],[-25.81889648437499,71.04365234375001],[-25.43232421875001,70.92133789062495]]],[[[-53.53520507812493,71.04082031250005],[-53.9578125,71.12773437499999],[-53.58447265625003,71.29707031249995],[-53.53520507812493,71.04082031250005]]],[[[-55.01689453124999,72.79111328125003],[-55.56660156249998,72.56435546875002],[-56.214794921874955,72.71918945312495],[-55.01689453124999,72.79111328125003]]],[[[-18.000537109374932,75.40732421875003],[-17.391992187499937,75.03691406250007],[-18.670800781249966,75.00166015624998],[-18.856054687499977,75.31914062500002],[-18.000537109374932,75.40732421875003]]],[[[-18.58261718749995,76.042333984375],[-19.085351562499966,76.43037109375001],[-18.882470703124937,76.70380859375001],[-18.58261718749995,76.042333984375]]],[[[-71.667333984375,77.32529296874998],[-72.48955078124999,77.43164062499997],[-71.43344726562495,77.394384765625],[-71.667333984375,77.32529296874998]]],[[[-17.6125,79.82587890624995],[-18.662011718749966,79.72001953125005],[-19.13828125,79.85234375000002],[-17.98291015625,80.05517578125003],[-17.471386718749955,80.02871093749997],[-17.6125,79.82587890624995]]],[[[-44.86455078124999,82.08364257812502],[-46.75190429687501,82.34819335937502],[-47.27226562499996,82.65693359375001],[-46.399169921875,82.692138671875],[-44.91748046875003,82.48051757812505],[-44.86455078124999,82.08364257812502]]],[[[-29.952880859375,83.56484374999997],[-25.795068359374994,83.26098632812497],[-31.99267578125,83.0853515625],[-32.03271484374997,82.98344726562502],[-25.12338867187495,83.15961914062501],[-24.47031249999995,82.87739257812498],[-21.582519531249943,82.6341796875],[-23.118066406249966,82.32470703125003],[-29.57939453124996,82.16118164062502],[-29.887402343749983,82.05483398437502],[-29.543847656249994,81.93994140624997],[-27.839501953124966,82.04887695312505],[-25.148828124999966,82.001123046875],[-24.293066406249977,81.70097656250005],[-23.103710937499983,82.01181640625003],[-21.337988281249977,82.068701171875],[-21.230517578125017,81.60136718749999],[-23.11772460937499,80.77817382812498],[-19.62993164062499,81.63989257812503],[-17.456054687499943,81.397705078125],[-16.12070312499995,81.776611328125],[-14.241992187500017,81.81386718750005],[-12.434423828125006,81.68251953125002],[-11.430664062499972,81.45683593750005],[-13.126220703124972,81.08779296875],[-14.452343749999955,80.99311523437498],[-14.503564453124994,80.76328125000006],[-16.76059570312492,80.573388671875],[-15.937255859374972,80.42763671874997],[-16.48876953124997,80.25195312499997],[-18.070947265624994,80.17207031249995],[-19.429199218749943,80.25771484375],[-20.150146484375,80.01123046874997],[-18.99199218749996,79.17836914062502],[-21.133740234374926,78.65864257812501],[-21.729589843749977,77.70854492187499],[-20.862597656249932,77.91186523437503],[-19.490429687499983,77.71889648437497],[-19.46752929687503,77.56582031250005],[-20.162060546874926,77.68984375],[-20.680810546875023,77.61899414062503],[-20.23193359374997,77.36840820312497],[-19.30029296874997,77.22236328124995],[-18.442626953124943,77.259375],[-18.51030273437496,76.77817382812498],[-20.48671875,76.92080078125],[-21.614697265624926,76.68789062499997],[-22.18525390625001,76.79409179687502],[-22.609326171874983,76.70429687500004],[-21.877343749999966,76.57348632812503],[-21.488232421874926,76.271875],[-20.10361328124992,76.21909179687503],[-19.508984374999926,75.75751953124995],[-19.52636718750003,75.18022460937505],[-20.484960937500006,75.31425781249999],[-21.649316406249966,75.02343749999997],[-22.232861328124926,75.11972656249998],[-21.69511718749999,74.96445312500003],[-20.985791015624983,75.07436523437497],[-20.86157226562497,74.63593750000001],[-20.41708984374995,74.9751953125],[-19.98491210937499,74.9751953125],[-19.287011718750023,74.54638671875006],[-19.36914062499997,74.28403320312498],[-20.256445312499977,74.2828125],[-20.653125,74.13735351562502],[-21.954931640624977,74.24428710937497],[-21.942919921874932,74.56572265624999],[-22.32158203124999,74.30253906250002],[-22.134814453124932,73.99047851562503],[-20.36728515624992,73.8482421875],[-20.509667968749966,73.49287109375001],[-22.346875,73.26923828125001],[-23.23320312499999,73.39770507812497],[-24.157714843749943,73.76445312499999],[-24.67724609375,73.602197265625],[-25.521289062500017,73.85161132812499],[-24.79125976562497,73.51127929687502],[-26.062304687500017,73.25302734375],[-27.270410156250023,73.43627929687503],[-26.541845703125006,73.24897460937495],[-27.561621093750006,73.13847656250002],[-27.348046875000023,73.06782226562501],[-25.057031250000023,73.396484375],[-24.132666015625006,73.409375],[-22.036328124999955,72.91845703125006],[-22.29321289062497,72.11953125],[-24.06904296875001,72.49873046874998],[-24.629980468749977,73.03764648437499],[-26.657617187499966,72.71582031249997],[-24.81333007812492,72.90151367187497],[-24.65,72.58251953125],[-25.117871093749983,72.34697265625005],[-24.66684570312492,72.437353515625],[-21.959667968749955,71.74467773437502],[-22.479638671874937,71.38344726562497],[-22.417578125,71.24868164062505],[-22.29902343750001,71.43232421874998],[-21.75224609374999,71.47832031250002],[-21.522656249999926,70.52622070312503],[-22.38413085937492,70.46240234375],[-22.437011718749943,70.860009765625],[-22.690673828124943,70.43730468750002],[-23.327832031249983,70.45097656250007],[-23.97138671875001,70.64946289062499],[-24.562207031249926,71.22353515624997],[-25.885156249999966,71.571923828125],[-27.08720703124999,71.6265625],[-27.107031250000034,71.53266601562498],[-25.842724609374955,71.48017578124995],[-25.74223632812499,71.18359375],[-26.717919921874994,70.95048828125005],[-28.39843749999997,70.99291992187497],[-27.99218749999997,70.89521484374998],[-28.06987304687499,70.69902343750005],[-29.07207031249999,70.444970703125],[-26.621777343749955,70.46337890625],[-26.576806640625023,70.35708007812502],[-27.560839843749932,70.12446289062498],[-27.384179687500023,69.9916015625],[-27.027734374999966,70.20122070312499],[-25.529882812499977,70.35317382812502],[-23.66733398437495,70.139306640625],[-22.28447265624996,70.12583007812498],[-22.287060546874955,70.03339843749998],[-23.03364257812501,69.90083007812498],[-23.04956054687497,69.79272460937497],[-23.86572265624997,69.73671875000002],[-23.739404296874994,69.58862304687497],[-24.296679687500017,69.58554687500006],[-24.295556640624966,69.439306640625],[-25.188574218750006,69.26054687500002],[-25.092431640624937,69.16518554687502],[-25.697998046874943,68.889892578125],[-26.48291015624997,68.67592773437502],[-29.24951171874997,68.29877929687501],[-29.86850585937495,68.31157226562505],[-30.318115234375,68.19331054687501],[-30.72001953124999,68.25117187499998],[-30.610742187499994,68.11791992187503],[-30.97856445312499,68.06132812500005],[-32.32744140624999,68.43730468749999],[-32.16455078125,67.99111328125002],[-33.15698242187497,67.62670898437506],[-34.1982421875,66.65507812499999],[-35.18857421874995,66.25029296875002],[-35.86723632812502,66.44140624999997],[-35.630078124999926,66.13994140625002],[-36.37919921874996,65.830810546875],[-36.52724609375002,66.00771484375],[-36.665185546874966,65.79008789062507],[-37.06279296874996,65.87143554687503],[-37.410058593749994,65.65634765625],[-37.954785156249955,65.63359375000007],[-37.278710937499994,66.30439453124995],[-38.156640624999966,66.38559570312498],[-37.75234375000002,66.26152343750002],[-38.13994140625002,65.90351562499998],[-38.52036132812498,66.00966796875002],[-38.20336914062497,65.71171874999999],[-40.17353515624998,65.55615234375],[-39.57792968749996,65.34077148437501],[-39.937255859375,65.14160156250003],[-40.253125,65.04887695312505],[-41.08442382812501,65.10083007812497],[-40.966015624999955,64.86884765624995],[-40.655468749999926,64.91533203125002],[-40.18222656249998,64.47993164062495],[-40.78173828125,64.22177734375003],[-41.581005859374926,64.29833984375],[-41.03056640624996,64.12104492187504],[-40.61777343749998,64.13173828125],[-40.550390625000034,63.72524414062505],[-40.77519531249999,63.53364257812501],[-41.04873046875002,63.51381835937505],[-41.387890624999926,63.06186523437498],[-41.84448242187497,63.07026367187501],[-42.174511718749955,63.20878906249999],[-41.63447265624998,62.972460937500074],[-41.90898437499996,62.73710937499999],[-42.94165039062503,62.72021484375003],[-42.15297851562502,62.568457031250006],[-42.32148437499998,62.15273437500005],[-42.110205078125006,61.857226562500074],[-42.58530273437498,61.71748046875001],[-42.34736328125001,61.61743164062497],[-42.717041015625,60.767480468749994],[-43.04409179687502,60.523681640625],[-43.92270507812495,60.59536132812502],[-43.21298828124998,60.390673828125074],[-43.122900390625006,60.06123046875001],[-43.32011718749993,59.928125],[-43.95502929687498,60.025488281250006],[-43.65791015625001,59.85864257812503],[-43.90654296874996,59.815478515625045],[-44.11699218750002,59.83193359375002],[-44.06547851562499,59.92480468750003],[-44.412939453125006,59.922607421875],[-44.22436523437494,60.273535156250006],[-44.61328124999997,60.01665039062499],[-45.37924804687495,60.20292968750002],[-45.367773437500006,60.37294921875002],[-44.97470703124995,60.457226562499955],[-44.756738281249966,60.66459960937502],[-45.38051757812494,60.444921875],[-46.04663085937503,60.61572265625],[-46.141943359375006,60.776513671874994],[-45.87021484374998,61.21831054687502],[-46.87446289062501,60.81640625000003],[-48.180810546874966,60.76923828125001],[-47.77031249999999,60.99775390625001],[-48.386425781249926,61.004736328125034],[-48.42817382812501,61.18740234375002],[-48.92207031249998,61.27744140624998],[-49.28906249999997,61.58994140625006],[-49.380273437499994,61.89018554687502],[-48.82871093749998,62.0796875],[-49.62377929687494,61.99858398437499],[-49.553466796875,62.23271484374999],[-50.319238281249966,62.473193359375045],[-50.298730468749966,62.72197265625002],[-49.793115234374994,63.04462890625004],[-50.39008789062501,62.82202148437497],[-51.46884765624995,63.64228515625001],[-51.547509765624994,64.00610351562497],[-50.260693359374955,64.21425781250002],[-50.48662109374996,64.20888671875],[-50.43706054687499,64.31284179687503],[-51.58491210937498,64.10317382812502],[-51.70786132812498,64.205078125],[-51.403759765624926,64.46318359375002],[-50.49208984375002,64.69316406250005],[-50.00898437500001,64.44726562499997],[-50.12163085937493,64.703759765625],[-50.51699218750002,64.76650390625],[-50.96064453124998,65.20112304687498],[-50.721582031249966,64.79760742187503],[-51.22060546875002,64.62846679687502],[-51.25537109375,64.75810546875005],[-51.92260742187503,64.21875],[-52.259033203125,65.154931640625],[-52.537695312500034,65.32880859374998],[-51.61914062500003,65.71318359375002],[-51.091894531250006,65.77578125],[-51.7234375,65.723486328125],[-52.55126953125003,65.46137695312498],[-52.760937499999926,65.59082031249997],[-53.198974609375,65.59404296875002],[-53.106347656249966,65.97714843749998],[-53.39204101562498,66.04833984375],[-51.225,66.88154296875001],[-53.035791015624966,66.20141601562503],[-53.538769531249955,66.13935546874998],[-53.41875,66.64853515624998],[-53.038281249999955,66.82680664062497],[-52.38686523437502,66.88115234375005],[-53.44360351562503,66.924658203125],[-53.88442382812502,67.13554687499999],[-53.79858398437494,67.41816406250001],[-52.666455078124955,67.74970703124995],[-50.613476562499955,67.5279296875],[-51.171044921874966,67.693603515625],[-50.96884765624998,67.80664062500003],[-51.765234375000034,67.73784179687505],[-52.34482421874998,67.83691406249997],[-53.735205078125006,67.54902343750004],[-53.151562499999926,68.20776367187503],[-51.779980468749926,68.05673828124998],[-51.456494140624926,68.116064453125],[-51.21015625000001,68.419921875],[-52.19853515624993,68.22080078125],[-53.38315429687495,68.29736328124997],[-53.03945312500002,68.61088867187499],[-52.60458984374998,68.70874023437503],[-51.62314453124995,68.53481445312505],[-50.945703124999966,68.68266601562505],[-50.807714843750006,68.81699218749998],[-51.24941406250002,68.73994140625001],[-51.084863281249994,69.12827148437498],[-50.29736328124994,69.17060546874998],[-51.07695312499996,69.20947265625],[-50.291699218749955,70.01445312500005],[-52.254638671875,70.05893554687503],[-53.02304687499995,70.30190429687497],[-54.01445312499996,70.42167968750005],[-54.53076171875,70.69926757812502],[-54.16582031249999,70.82011718750005],[-52.801953124999955,70.7505859375],[-50.87236328124993,70.36489257812502],[-50.66328124999998,70.417578125],[-51.32285156249998,70.58876953124997],[-51.25659179687497,70.85268554687502],[-51.77431640625002,71.01044921875001],[-51.018945312499966,71.001318359375],[-51.37666015625001,71.11904296875],[-53.007568359375,71.17998046874999],[-52.89184570312497,71.457666015625],[-51.76992187500002,71.67172851562498],[-53.44008789062502,71.57900390625002],[-53.14453125000003,71.80742187500002],[-53.65214843749996,72.36264648437506],[-53.92773437499997,72.31879882812501],[-53.47758789062502,71.84995117187506],[-54.01992187500002,71.657861328125],[-53.96298828124995,71.45898437499997],[-54.6890625,71.36723632812505],[-55.59404296874999,71.55351562500005],[-55.315576171874994,72.11069335937498],[-54.84013671874996,72.35610351562497],[-55.581445312499994,72.178857421875],[-55.63583984374998,72.300439453125],[-55.29570312499996,72.35439453124997],[-55.60170898437494,72.453466796875],[-54.924951171874994,72.57197265624998],[-54.737939453124994,72.87250976562501],[-55.07309570312498,73.01513671875003],[-55.28891601562498,72.93320312500003],[-55.66855468749998,73.00791015624998],[-55.288281249999955,73.32709960937498],[-56.10405273437496,73.55815429687499],[-55.83828125,73.75971679687501],[-56.22539062499999,74.12910156249995],[-57.23056640624995,74.12529296875007],[-56.70634765625002,74.21918945312501],[-56.717675781249994,74.42924804687499],[-56.25546874999998,74.52680664062498],[-58.56552734374998,75.35273437500001],[-58.249658203124994,75.50668945312503],[-58.51621093749995,75.68906250000006],[-61.18823242187494,76.157861328125],[-63.29130859374996,76.35205078125003],[-63.84306640624999,76.21713867187498],[-64.307275390625,76.31650390624998],[-65.36992187499993,76.13056640625004],[-65.87573242187494,76.23833007812505],[-66.46577148437498,76.13916015625],[-66.99257812500002,76.21293945312502],[-66.67480468750003,75.977392578125],[-68.14873046875002,76.06704101562497],[-69.48408203125001,76.39916992187503],[-68.1142578125,76.65063476562503],[-69.67382812499994,76.73588867187507],[-69.69423828125002,76.98945312500004],[-70.613134765625,76.82182617187499],[-71.14145507812498,77.02866210937503],[-70.86284179687496,77.175439453125],[-68.97832031250002,77.19531250000006],[-68.13554687499999,77.37958984375001],[-66.38945312499999,77.28027343750003],[-66.69121093749999,77.68120117187502],[-67.68808593749995,77.523779296875],[-68.62153320312498,77.60185546875002],[-69.35136718749999,77.467138671875],[-70.53540039062497,77.699560546875],[-70.11445312500001,77.84135742187505],[-71.27163085937494,77.81313476562497],[-72.81806640624995,78.1943359375],[-72.47250976562498,78.48203125],[-71.65131835937493,78.62314453124998],[-68.99345703124999,78.857421875],[-68.37705078124998,79.037841796875],[-65.82553710937503,79.17373046874997],[-64.79228515624993,80.00063476562502],[-64.17915039062498,80.09926757812497],[-66.84365234374997,80.07622070312507],[-67.05063476562503,80.384521484375],[-64.51552734374997,81],[-63.72197265624993,81.05732421875001],[-63.028662109375006,80.88955078125002],[-62.90336914062496,81.21835937500003],[-61.43598632812498,81.13359375000002],[-60.842871093750034,81.85537109374997],[-59.28193359374998,81.88403320312503],[-56.615136718749994,81.362890625],[-59.26181640624998,82.00664062500005],[-54.54887695312496,82.35063476562505],[-53.671337890624955,82.16406249999997],[-53.55566406250003,81.65327148437501],[-53.022558593750034,82.32172851562504],[-50.894433593749994,81.89521484375001],[-49.54106445312496,81.91806640625003],[-50.93554687500003,82.38281250000003],[-50.03710937499994,82.472412109375],[-44.7294921875,81.77983398437505],[-44.23886718749998,82.3681640625],[-45.55654296875002,82.74702148437498],[-41.87646484375,82.680322265625],[-41.36962890625003,82.75],[-46.136816406250006,82.85883789062504],[-46.169042968750006,83.06386718749997],[-45.41459960937496,83.01767578124998],[-43.00927734375003,83.26459960937501],[-41.300146484375006,83.10078125000004],[-40.35683593750002,83.332177734375],[-38.15625,82.9986328125],[-38.74956054687496,83.37084960937497],[-37.72333984374998,83.49775390624998],[-29.952880859375,83.56484374999997]]]]},"properties":{"name":"Greenland","childNum":14}},{"geometry":{"type":"Polygon","coordinates":[[[-89.2328125,15.888671875],[-88.89404296875,15.890625],[-88.60336914062499,15.76416015625],[-88.5939453125,15.950292968749991],[-88.22832031249999,15.72900390625],[-88.271435546875,15.694873046875003],[-88.36455078124999,15.616015625],[-88.68447265625,15.360498046874994],[-88.96098632812499,15.152441406249991],[-89.142578125,15.072314453125003],[-89.22236328125,14.866064453124991],[-89.16220703124999,14.669238281250003],[-89.17177734375,14.606884765624997],[-89.28671875,14.529980468749997],[-89.36259765624999,14.416015625],[-89.5736328125,14.390087890624997],[-89.54716796874999,14.241259765625003],[-90.04814453124999,13.904052734375],[-90.09521484375,13.736523437499997],[-90.60693359375,13.929003906250003],[-91.37734375,13.990185546874997],[-92.23515624999999,14.54541015625],[-92.15854492187499,14.963574218749997],[-92.14423828125,15.001953125],[-92.09873046874999,15.026757812499994],[-92.07480468749999,15.07421875],[-92.187158203125,15.320898437499991],[-92.08212890624999,15.495556640624997],[-91.9572265625,15.703222656249991],[-91.736572265625,16.07016601562499],[-91.433984375,16.070458984374994],[-90.97958984374999,16.07080078125],[-90.70322265624999,16.071044921875],[-90.52197265625,16.071191406249994],[-90.44716796875,16.072705078124997],[-90.45986328125,16.162353515625],[-90.450146484375,16.261376953124994],[-90.4169921875,16.351318359375],[-90.4169921875,16.39101562499999],[-90.47109375,16.43955078124999],[-90.57578125,16.467822265625003],[-90.63408203124999,16.5107421875],[-90.634375,16.565136718749997],[-90.65996093749999,16.630908203125003],[-90.710693359375,16.70810546874999],[-90.975830078125,16.867822265624994],[-91.409619140625,17.255859375],[-91.1955078125,17.254101562499997],[-90.99296874999999,17.25244140625],[-90.98916015625,17.81640625],[-89.16147460937499,17.81484375],[-89.2328125,15.888671875]]]},"properties":{"name":"Guatemala","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[144.74179687500003,13.25927734375],[144.64931640625002,13.4287109375],[144.87539062500002,13.614648437499994],[144.94082031250002,13.5703125],[144.74179687500003,13.25927734375]]]},"properties":{"name":"Guam","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-57.194775390625,5.5484375],[-57.3185546875,5.335351562499994],[-57.20981445312499,5.195410156249991],[-57.331005859375,5.020166015624994],[-57.711083984374994,4.991064453124991],[-57.91704101562499,4.820410156249991],[-57.84599609374999,4.668164062499997],[-58.05429687499999,4.101660156249991],[-57.646728515625,3.39453125],[-57.303662109375,3.377099609374994],[-57.19736328124999,2.853271484375],[-56.704345703125,2.036474609374991],[-56.4828125,1.942138671875],[-56.96953124999999,1.91640625],[-57.03759765625,1.936474609374997],[-57.092675781249994,2.005810546874997],[-57.118896484375,2.013964843749989],[-57.31748046874999,1.963476562499991],[-57.41269531249999,1.908935546875],[-57.500439453125,1.77382812499999],[-57.54575195312499,1.72607421875],[-57.59443359375,1.7041015625],[-57.795654296875,1.7],[-57.8734375,1.667285156249989],[-57.9828125,1.6484375],[-58.03466796875,1.520263671875],[-58.34067382812499,1.587548828124994],[-58.38037109375,1.530224609374997],[-58.39580078124999,1.481738281249989],[-58.5060546875,1.438671875],[-58.511865234374994,1.28466796875],[-58.68461914062499,1.281054687499989],[-58.73032226562499,1.247509765624997],[-58.78720703124999,1.20849609375],[-58.82177734375,1.201220703124989],[-59.231201171875,1.376025390624989],[-59.53569335937499,1.7],[-59.66660156249999,1.746289062499997],[-59.66850585937499,1.842333984374989],[-59.74072265625,1.874169921874994],[-59.75620117187499,1.900634765625],[-59.75522460937499,2.274121093749997],[-59.8896484375,2.362939453124994],[-59.9943359375,2.689990234374989],[-59.854394531249994,3.5875],[-59.55112304687499,3.933544921874997],[-59.557763671874994,3.960009765624989],[-59.62021484374999,4.023144531249997],[-59.73857421874999,4.226757812499997],[-59.69970703125,4.353515625],[-60.1486328125,4.533251953124989],[-59.990673828125,5.082861328124991],[-60.142041015625,5.238818359374989],[-60.241650390625,5.257958984374994],[-60.335205078125,5.199316406249991],[-60.45952148437499,5.188085937499991],[-60.6513671875,5.221142578124997],[-60.742138671875,5.202050781249994],[-61.37680664062499,5.906982421875],[-61.3908203125,5.938769531249989],[-61.303125,6.049511718749997],[-61.22495117187499,6.129199218749989],[-61.15947265624999,6.174414062499991],[-61.12871093749999,6.214306640624997],[-61.152294921875,6.385107421874991],[-61.151025390624994,6.446533203125],[-61.181591796875,6.513378906249997],[-61.20361328125,6.58837890625],[-61.14560546874999,6.69453125],[-60.717919921874994,6.768310546875],[-60.35209960937499,7.002880859374997],[-60.32207031249999,7.092041015625],[-60.32548828124999,7.133984375],[-60.34506835937499,7.15],[-60.46494140624999,7.166552734374989],[-60.523193359375,7.143701171874994],[-60.583203125,7.156201171874997],[-60.63330078125,7.211083984374994],[-60.718652343749994,7.535937499999989],[-60.513623046875,7.813183593749997],[-60.032421875,8.053564453124991],[-59.99072265625,8.162011718749994],[-59.96484375,8.191601562499997],[-59.849072265625,8.248681640624994],[-59.83164062499999,8.305957031249989],[-60.017529296875,8.54931640625],[-59.20024414062499,8.07460937499999],[-58.51108398437499,7.39804687499999],[-58.48056640624999,7.038134765624989],[-58.67294921874999,6.390771484374994],[-58.414990234375,6.85117187499999],[-57.982568359374994,6.785888671875],[-57.54013671874999,6.33154296875],[-57.2275390625,6.178417968749997],[-57.194775390625,5.5484375]]]},"properties":{"name":"Guyana","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[73.70742187500002,-53.13710937499999],[73.46513671875002,-53.184179687500006],[73.25117187500001,-52.97578125000001],[73.83779296875002,-53.11279296875],[73.70742187500002,-53.13710937499999]]]},"properties":{"name":"Heard I. and McDonald Is.","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-83.635498046875,14.876416015624997],[-84.53764648437496,14.633398437499963],[-84.64594726562498,14.661083984375011],[-84.86044921874998,14.809765625000011],[-84.98515624999999,14.752441406249972],[-85.059375,14.582958984374997],[-85.20834960937498,14.311816406250003],[-85.73393554687496,13.85869140625006],[-85.75341796875,13.852050781250028],[-85.78671874999995,13.844433593749997],[-85.98378906249997,13.965673828125006],[-86.04038085937503,14.050146484374977],[-86.33173828124995,13.770068359375031],[-86.37695312500003,13.755664062500031],[-86.61025390624997,13.774853515625026],[-86.73364257812494,13.763476562500017],[-86.75898437499995,13.746142578125045],[-86.77060546875003,13.698730468749972],[-86.763525390625,13.635253906250014],[-86.72958984375,13.4072265625],[-86.710693359375,13.31337890624998],[-86.72929687499996,13.284375],[-86.79213867187497,13.279785156249972],[-86.87353515624994,13.266503906250023],[-86.918212890625,13.223583984374983],[-87.00932617187499,13.007812499999986],[-87.0591796875,12.991455078125028],[-87.337255859375,12.979248046875028],[-87.48911132812503,13.352929687500051],[-87.814208984375,13.399169921875057],[-87.781884765625,13.521386718749994],[-87.71533203125003,13.812695312500011],[-87.73144531250003,13.841064453125014],[-87.80224609374997,13.889990234375034],[-87.89199218749997,13.894970703124983],[-87.99101562499996,13.879638671874972],[-88.15102539062497,13.987353515624974],[-88.44912109374994,13.850976562499994],[-88.48266601562503,13.854248046875043],[-88.49765624999998,13.904541015624986],[-88.50434570312501,13.964208984374963],[-88.51254882812498,13.97895507812504],[-89.12050781249994,14.370214843749991],[-89.36259765624996,14.416015625],[-89.17177734375,14.606884765624983],[-89.16220703125,14.669238281249989],[-89.22236328125001,14.86606445312502],[-89.142578125,15.072314453125031],[-88.96098632812496,15.15244140625002],[-88.68447265625002,15.360498046875037],[-88.36455078124996,15.616015625000045],[-88.27143554687498,15.694873046875045],[-88.22832031249999,15.729003906249972],[-88.131103515625,15.701025390625034],[-87.87495117187495,15.879345703124955],[-86.35664062499998,15.783203125],[-85.93627929687497,15.953417968750045],[-85.98564453124999,16.02416992187497],[-85.48369140624996,15.899511718749977],[-84.97373046874998,15.989892578124994],[-84.55966796875,15.802001953125],[-84.26142578124998,15.822607421875034],[-83.765283203125,15.405468750000054],[-83.972802734375,15.519628906250034],[-84.11132812499997,15.492431640625],[-84.09506835937503,15.400927734375017],[-83.92744140624998,15.394042968750028],[-83.76044921874998,15.220361328124994],[-83.49794921874997,15.222119140624997],[-83.64638671875,15.368408203125043],[-83.36918945312493,15.239990234375],[-83.29086914062498,15.078906250000045],[-83.2255859375,15.042285156250045],[-83.15751953124999,14.993066406249966],[-83.41503906249994,15.008056640625],[-83.5365234375,14.977001953124983],[-83.635498046875,14.876416015624997]]]},"properties":{"name":"Honduras","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[17.60781250000005,42.76904296875],[17.744238281250063,42.70034179687505],[17.34414062500008,42.790380859375006],[17.60781250000005,42.76904296875]]],[[[16.650683593750017,42.99658203125],[17.188281250000045,42.917041015625045],[16.850683593750006,42.8955078125],[16.650683593750017,42.99658203125]]],[[[17.667578125000063,42.897119140624994],[18.436328125000017,42.559716796874994],[18.517480468750023,42.43291015624999],[17.823828125,42.79741210937502],[17.045410156250057,43.014892578125],[17.667578125000063,42.897119140624994]]],[[[16.785253906250006,43.270654296874966],[16.490332031250034,43.28618164062502],[16.44892578125004,43.38706054687506],[16.89130859375001,43.314648437499955],[16.785253906250006,43.270654296874966]]],[[[15.371386718750074,43.973828124999955],[15.437207031250068,43.899511718750006],[15.270019531250028,44.01074218750003],[15.371386718750074,43.973828124999955]]],[[[14.488085937500074,44.66005859375005],[14.31240234375008,44.90039062499997],[14.33125,45.16499023437498],[14.488085937500074,44.66005859375005]]],[[[14.810253906250068,44.97705078124997],[14.45039062500004,45.079199218750006],[14.571093750000017,45.224755859374994],[14.810253906250068,44.97705078124997]]],[[[18.905371093750006,45.931738281250034],[18.839062499999983,45.83574218750002],[19.064257812500045,45.51499023437506],[19.004687500000074,45.39951171875006],[19.4,45.2125],[19.062890625000023,45.13720703125],[19.007128906250045,44.86918945312502],[18.83642578125,44.883251953124955],[18.66259765625,45.07744140624999],[17.812792968750074,45.078125],[16.918652343749983,45.27656249999998],[16.53066406250008,45.21669921875002],[16.29335937500005,45.00883789062496],[16.028320312500057,45.18959960937502],[15.788085937500057,45.17895507812497],[15.736621093750045,44.76582031250001],[16.10341796875008,44.52099609375006],[16.300097656250017,44.12451171875],[17.27382812500005,43.44575195312501],[17.650488281250063,43.006591796875],[17.585156250000068,42.93837890625005],[16.903125,43.392431640625006],[16.393945312500023,43.54335937500002],[15.985546875000068,43.519775390625],[15.185839843750017,44.17211914062503],[15.122949218749994,44.256787109374955],[15.470996093750045,44.27197265625003],[14.981347656250023,44.60292968750005],[14.854589843750034,45.08100585937501],[14.550488281249983,45.297705078125006],[14.31269531250004,45.33779296875002],[13.86074218750008,44.83740234375003],[13.517187500000063,45.481787109375034],[13.878710937500017,45.428369140624994],[14.369921875000074,45.48144531250006],[14.427343750000034,45.50576171875002],[14.56884765625,45.65722656249997],[14.591796875000057,45.65126953125002],[14.649511718750006,45.57148437500001],[14.793066406250034,45.47822265625001],[14.95458984375,45.499902343749994],[15.110449218750034,45.450781250000034],[15.242089843750023,45.44140624999997],[15.339453125000063,45.46704101562506],[15.326660156250028,45.502294921875034],[15.291210937500011,45.541552734375045],[15.283593750000051,45.5796875],[15.35371093750004,45.659912109375],[15.27705078125004,45.73261718749998],[15.652148437500074,45.86215820312498],[15.675585937500045,45.98369140624996],[15.666210937500011,46.04848632812502],[15.596875,46.10922851562506],[15.592578125000017,46.139990234375006],[15.608984374999977,46.171923828125045],[16.1064453125,46.382226562499994],[16.32119140625005,46.53461914062504],[16.42763671875005,46.5244140625],[16.516210937499977,46.499902343749966],[16.569921875,46.48500976562505],[16.748046875000057,46.41640625000002],[16.87148437500008,46.33930664062504],[17.310644531250006,45.99614257812502],[17.80712890625,45.79042968750002],[18.358300781250023,45.75302734375006],[18.533593750000023,45.79614257812503],[18.56464843750004,45.81328124999999],[18.666015625,45.90747070312497],[18.905371093750006,45.931738281250034]]]]},"properties":{"name":"Croatia","childNum":8}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-72.80458984374997,18.777685546875063],[-72.82221679687501,18.707128906249977],[-73.07797851562498,18.790917968749994],[-73.27641601562499,18.95405273437501],[-72.80458984374997,18.777685546875063]]],[[[-71.647216796875,19.195947265624994],[-71.80712890624997,18.987011718749983],[-71.733642578125,18.85639648437501],[-71.72705078125,18.80322265625003],[-71.74321289062502,18.73291015625],[-71.86650390624999,18.61416015625005],[-71.98686523437499,18.61035156249997],[-72.000390625,18.59790039062503],[-71.94038085937493,18.51259765625005],[-71.87255859374997,18.416210937499955],[-71.76191406249998,18.34130859374997],[-71.73725585937495,18.27080078124999],[-71.76831054687497,18.039160156250063],[-71.85292968749997,18.119140625],[-71.94609375,18.186083984375045],[-72.05986328124993,18.228564453125017],[-72.87666015624998,18.151757812499994],[-73.38515625000002,18.251171874999983],[-73.747314453125,18.190234375000017],[-73.88496093749998,18.041894531249994],[-74.478125,18.45],[-74.3875,18.624707031249983],[-74.22773437499998,18.662695312499977],[-72.78935546874996,18.434814453125],[-72.37607421874998,18.57446289062503],[-72.34765624999994,18.674951171874994],[-72.81108398437496,19.071582031250074],[-72.70322265625,19.441064453125023],[-73.43837890624994,19.722119140624983],[-73.21777343750003,19.88369140625005],[-72.63701171875002,19.90087890625],[-72.21982421875003,19.744628906250057],[-71.834716796875,19.696728515624983],[-71.77924804687498,19.718164062499994],[-71.75742187499998,19.68818359375001],[-71.71147460937493,19.486572265625057],[-71.74648437499997,19.28583984375001],[-71.647216796875,19.195947265624994]]]]},"properties":{"name":"Haiti","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[22.1318359375,48.405322265624996],[22.253710937500017,48.407373046874994],[22.582421875000023,48.134033203125],[22.769140625,48.109619140625],[22.87666015625001,47.947265625],[21.99970703125001,47.505029296874994],[21.121679687500006,46.282421875],[20.76025390625,46.246240234374994],[20.613671875000023,46.13349609375],[20.508105468750017,46.166943359375],[20.28095703125001,46.1330078125],[20.241796875,46.10859375],[20.21015625000001,46.126025390624996],[20.161425781250017,46.141894531249996],[19.93408203125,46.161474609375],[19.84443359375001,46.145898437499994],[19.61347656250001,46.169189453125],[19.421289062500023,46.064453125],[18.666015625,45.907470703125],[18.56464843750001,45.81328125],[18.533593750000023,45.796142578125],[18.358300781250023,45.75302734375],[17.80712890625,45.790429687499994],[17.310644531250006,45.996142578124996],[16.871484375000023,46.339306640625],[16.748046875,46.41640625],[16.569921875,46.485009765624994],[16.516210937500006,46.499902343749994],[16.283593750000023,46.857275390625],[16.093066406250017,46.86328125],[16.453417968750017,47.006787109375],[16.44287109375,47.39951171875],[16.676562500000017,47.536035156249994],[16.421289062500023,47.674462890624994],[17.06660156250001,47.707568359374996],[17.147363281250023,48.00595703125],[17.76191406250001,47.770166015624994],[18.72421875,47.787158203124996],[18.791894531250023,48.000292968749996],[19.625390625000023,48.223095703125],[19.95039062500001,48.146630859374994],[20.333789062500017,48.295556640624994],[20.490039062500017,48.526904296874996],[21.45136718750001,48.55224609375],[21.766992187500023,48.3380859375],[22.1318359375,48.405322265624996]]]},"properties":{"name":"Hungary","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[122.9489257812501,-10.90927734375002],[122.82617187500003,-10.899121093749983],[122.84570312500003,-10.761816406249991],[123.37109375000003,-10.474902343749989],[123.41816406250004,-10.651269531250037],[122.9489257812501,-10.90927734375002]]],[[[121.8830078125001,-10.590332031249957],[121.70468750000006,-10.5556640625],[121.99833984375002,-10.446972656249983],[121.8830078125001,-10.590332031249957]]],[[[123.41621093750004,-10.302636718749966],[123.3255859375,-10.264160156249943],[123.45878906250002,-10.13994140624996],[123.41621093750004,-10.302636718749966]]],[[[120.0125,-9.374707031250026],[120.78447265625002,-9.95703125],[120.83261718750006,-10.0375],[120.69804687500002,-10.206640624999949],[120.4391601562501,-10.294042968749991],[120.14482421875002,-10.200097656249952],[119.60107421874997,-9.773535156250006],[119.08544921875003,-9.706933593750023],[118.95878906250002,-9.519335937500003],[119.29589843749997,-9.3671875],[119.9420898437501,-9.301464843750026],[120.0125,-9.374707031250026]]],[[[125.06816406250002,-9.511914062499997],[124.42753906250002,-10.14863281250004],[123.7472656250001,-10.347167968749986],[123.60478515625002,-10.270117187500006],[123.71640625000012,-10.078613281249986],[123.5892578125,-9.966796875000028],[123.709375,-9.61484375],[124.0363281250001,-9.341601562500031],[124.28232421875012,-9.427929687500026],[124.44443359375012,-9.190332031250023],[124.92226562500005,-8.942480468749977],[124.93681640625007,-9.053417968750026],[125.14902343750012,-9.042578125000034],[125.10048828125,-9.189843750000023],[124.96015625000004,-9.213769531250009],[125.06816406250002,-9.511914062499997]]],[[[115.60996093750012,-8.769824218749974],[115.48046875000003,-8.715429687500006],[115.56142578125,-8.669921874999972],[115.60996093750012,-8.769824218749974]]],[[[122.97734375000002,-8.54521484374996],[122.88779296875006,-8.587304687500009],[123.01054687500002,-8.448339843750034],[123.153125,-8.475781250000026],[122.97734375000002,-8.54521484374996]]],[[[119.46406250000004,-8.741015624999974],[119.38554687500002,-8.736035156250026],[119.4464843750001,-8.429199218749957],[119.55722656250012,-8.518847656250003],[119.46406250000004,-8.741015624999974]]],[[[123.31748046875012,-8.354785156249974],[123.02500000000012,-8.395507812500014],[123.21708984375002,-8.235449218750006],[123.33603515625006,-8.269042968750014],[123.31748046875012,-8.354785156249974]]],[[[116.64082031250004,-8.613867187500006],[116.51425781250012,-8.820996093750011],[116.58652343750012,-8.886132812499966],[116.23935546875006,-8.912109375000014],[115.85732421875005,-8.787890625000017],[116.07646484375002,-8.744921874999974],[116.06113281250006,-8.437402343750023],[116.4015625000001,-8.204199218750034],[116.7189453125001,-8.336035156249977],[116.64082031250004,-8.613867187500006]]],[[[124.28662109375003,-8.32949218749998],[124.14667968750004,-8.531445312499997],[123.92773437500003,-8.448925781249969],[124.23955078125002,-8.20341796874996],[124.28662109375003,-8.32949218749998]]],[[[123.92480468750003,-8.2724609375],[123.55302734375007,-8.566796875],[123.23007812500006,-8.530664062500023],[123.47587890625007,-8.322265625000014],[123.39121093750012,-8.280468750000026],[123.77597656250006,-8.190429687499986],[123.92480468750003,-8.2724609375]]],[[[138.89511718750006,-8.388671874999957],[138.56337890625,-8.30908203125],[138.79619140625007,-8.173632812500017],[138.89511718750006,-8.388671874999957]]],[[[117.55634765625004,-8.367285156249949],[117.49052734375007,-8.183398437499974],[117.66503906249997,-8.148242187500003],[117.55634765625004,-8.367285156249949]]],[[[124.5755859375,-8.140820312499997],[125.05029296874997,-8.179589843749994],[125.13173828125,-8.326464843749989],[124.38066406250002,-8.41513671875002],[124.43066406249997,-8.18320312500002],[124.5755859375,-8.140820312499997]]],[[[127.8234375000001,-8.098828124999969],[128.11923828125012,-8.17070312499996],[128.02353515625006,-8.255371093749972],[127.82089843750012,-8.190234375000031],[127.8234375000001,-8.098828124999969]]],[[[122.7829101562501,-8.61171875],[121.65136718749997,-8.898730468749946],[121.41464843750006,-8.81484375],[121.32832031250004,-8.916894531250009],[121.03525390625012,-8.935449218749966],[120.55048828125004,-8.80185546875002],[119.909375,-8.857617187500011],[119.80791015625002,-8.697656250000023],[119.87480468750007,-8.419824218749994],[120.61025390625005,-8.24042968750004],[121.44453125000004,-8.57783203125004],[121.96650390625004,-8.455175781250006],[122.32324218749997,-8.628320312500023],[122.85048828125,-8.304394531250011],[122.91914062500004,-8.221875],[122.75859375000002,-8.185937499999952],[122.91699218749997,-8.105566406250006],[123.00595703125006,-8.329101562499986],[122.7829101562501,-8.61171875]]],[[[130.86220703125,-8.31875],[130.77519531250002,-8.34990234374996],[131.02011718750012,-8.091308593749943],[131.17636718750006,-8.130761718749994],[130.86220703125,-8.31875]]],[[[118.24238281250004,-8.317773437499994],[118.61191406250006,-8.28066406249998],[118.71386718749997,-8.41494140624998],[118.926171875,-8.297656249999974],[119.12968750000002,-8.668164062499969],[118.74589843750002,-8.735449218749991],[118.83261718750012,-8.833398437499966],[118.47861328125012,-8.856445312499957],[118.37890625000003,-8.674609375000031],[118.18994140624997,-8.840527343749997],[117.06132812500002,-9.099023437499994],[116.78847656250005,-9.006347656250028],[116.83505859375012,-8.532421875000026],[117.16484375000007,-8.367187500000014],[117.56708984375004,-8.426367187499991],[117.80605468750005,-8.711132812500011],[117.96953125000002,-8.728027343749986],[118.23486328124997,-8.591894531249963],[117.81484375000005,-8.342089843749974],[117.7552734375,-8.149511718749991],[118.11748046875007,-8.12226562500004],[118.24238281250004,-8.317773437499994]]],[[[115.44785156250012,-8.155175781249994],[115.70429687500004,-8.40712890624998],[115.14492187500005,-8.849023437500037],[115.05507812500005,-8.573046874999946],[114.61318359375,-8.37832031249998],[114.46757812500007,-8.166308593749946],[114.93847656249997,-8.18710937500002],[115.15400390625004,-8.065722656249974],[115.44785156250012,-8.155175781249994]]],[[[129.83886718749997,-7.954589843749986],[129.71347656250012,-8.04072265625004],[129.60898437500006,-7.803417968750011],[129.81298828124997,-7.819726562499952],[129.83886718749997,-7.954589843749986]]],[[[126.80097656250004,-7.667871093750009],[126.4720703125,-7.950390625000011],[126.04003906250003,-7.885839843750006],[125.79824218750005,-7.984570312499969],[125.97529296875004,-7.663378906249989],[126.21367187500002,-7.706738281250026],[126.60957031250004,-7.571777343749972],[126.80097656250004,-7.667871093750009]]],[[[127.41943359375003,-7.623046875000028],[127.37070312500012,-7.512792968749949],[127.47519531250012,-7.531054687500031],[127.41943359375003,-7.623046875000028]]],[[[138.53535156250004,-8.273632812499969],[138.2962890625,-8.405175781250037],[137.65039062499997,-8.386132812499966],[138.08183593750002,-7.566210937500003],[138.29550781250012,-7.4384765625],[138.76982421875002,-7.390429687499974],[138.98906250000002,-7.696093749999989],[138.53535156250004,-8.273632812499969]]],[[[131.3255859375,-7.999511718749986],[131.11376953125003,-7.997363281249989],[131.13779296875012,-7.684863281250017],[131.64345703125,-7.11279296875],[131.73613281250007,-7.197070312500017],[131.64384765625002,-7.266894531249946],[131.62441406250005,-7.626171874999955],[131.3255859375,-7.999511718749986]]],[[[131.98203125000006,-7.202050781249966],[131.75078125000002,-7.116796875],[131.92226562500005,-7.104492187499986],[131.98203125000006,-7.202050781249966]]],[[[128.6701171875001,-7.183300781249969],[128.52978515625003,-7.134570312499989],[128.62773437500007,-7.06875],[128.6701171875001,-7.183300781249969]]],[[[120.77441406250003,-7.118945312500003],[120.64082031250004,-7.115820312499991],[120.63339843750006,-7.018261718750011],[120.77441406250003,-7.118945312500003]]],[[[113.84453125000007,-7.105371093749994],[113.12695312499997,-7.224121093750028],[112.72587890625007,-7.072753906250014],[112.86806640625,-6.899902343749972],[113.06738281250003,-6.879980468749991],[113.97470703125012,-6.873046875],[114.0736328125,-6.960156249999983],[113.84453125000007,-7.105371093749994]]],[[[115.37705078125006,-6.97080078125002],[115.22031250000012,-6.952539062500037],[115.24052734375007,-6.861230468749994],[115.54609375000004,-6.938671874999955],[115.37705078125006,-6.97080078125002]]],[[[105.25283203125005,-6.640429687499946],[105.12138671875007,-6.614941406249997],[105.26054687500002,-6.523925781250014],[105.25283203125005,-6.640429687499946]]],[[[134.53681640625004,-6.442285156249994],[134.32275390624997,-6.84873046875002],[134.09082031249997,-6.833789062500003],[134.10703125000006,-6.471582031250009],[134.19462890625007,-6.459765625],[134.11464843750005,-6.190820312500009],[134.53681640625004,-6.442285156249994]]],[[[107.37392578125005,-6.007617187499989],[107.66679687500002,-6.215820312499957],[108.33017578125012,-6.286035156249966],[108.67783203125006,-6.790527343749972],[110.42626953124997,-6.947265625000028],[110.83476562500002,-6.424218749999952],[110.97226562500012,-6.435644531249977],[111.18154296875005,-6.686718749999969],[111.54033203125002,-6.648242187500031],[112.0873046875,-6.89335937499996],[112.53925781250004,-6.926464843749955],[112.64873046875007,-7.221289062499977],[112.7943359375,-7.304492187499974],[112.79453125000012,-7.55244140625004],[113.01357421875005,-7.657714843749986],[113.49765625000006,-7.723828124999955],[114.07070312500005,-7.633007812500011],[114.40927734375012,-7.79248046875],[114.38691406250004,-8.405175781250037],[114.58378906250002,-8.769628906250034],[113.25332031250005,-8.286718749999963],[112.67880859375006,-8.409179687499957],[111.50996093750004,-8.30507812499998],[110.60722656250002,-8.149414062499972],[109.28164062500005,-7.704882812500003],[108.74121093749997,-7.667089843750034],[108.45175781250006,-7.79697265625002],[107.91748046875003,-7.724121093750014],[107.28496093750007,-7.471679687500014],[106.45527343750004,-7.368652343749986],[106.51972656250004,-7.053710937499943],[106.19824218749997,-6.927832031249977],[105.25546875000012,-6.835253906250031],[105.37089843750002,-6.664355468750031],[105.48369140625007,-6.781542968750017],[105.65507812500002,-6.469531249999946],[105.78691406250002,-6.456933593749966],[105.86826171875006,-6.11640625000004],[106.075,-5.914160156249963],[106.82519531249997,-6.098242187499977],[107.0462890625,-5.90419921874998],[107.37392578125005,-6.007617187499989]]],[[[120.52832031249997,-6.2984375],[120.48730468749997,-6.464843749999972],[120.47734375000007,-5.775292968750009],[120.52832031249997,-6.2984375]]],[[[112.7194335937501,-5.81103515625],[112.58603515625006,-5.803613281249994],[112.69003906250006,-5.726171875000034],[112.7194335937501,-5.81103515625]]],[[[132.80712890625003,-5.850781250000011],[132.68144531250002,-5.91259765625],[132.63017578125002,-5.60703125],[132.80712890625003,-5.850781250000011]]],[[[134.74697265625,-5.707031249999957],[134.71416015625007,-6.29511718750004],[134.44111328125004,-6.334863281249966],[134.15488281250006,-6.06289062499998],[134.3019531250001,-6.009765624999986],[134.34306640625002,-5.833007812499943],[134.20537109375002,-5.707226562499997],[134.34130859375003,-5.712890624999986],[134.57080078124997,-5.42734375],[134.74697265625,-5.707031249999957]]],[[[132.92626953124997,-5.902050781249983],[132.84501953125002,-5.987988281249997],[133.13847656250002,-5.317871093749986],[133.11962890625003,-5.575976562499989],[132.92626953124997,-5.902050781249983]]],[[[102.36718750000003,-5.478710937499983],[102.1107421875,-5.32255859374996],[102.3717773437501,-5.366406250000011],[102.36718750000003,-5.478710937499983]]],[[[123.62675781250007,-5.271582031249963],[123.58261718750006,-5.36738281250004],[123.54277343750002,-5.271093749999963],[123.62675781250007,-5.271582031249963]]],[[[122.04296874999997,-5.437988281250028],[121.80849609375,-5.256152343750017],[121.91367187500012,-5.072265624999957],[122.04101562500003,-5.158789062499991],[122.04296874999997,-5.437988281250028]]],[[[122.64511718750012,-5.26943359374998],[122.5638671875,-5.3875],[122.28310546875,-5.319531249999969],[122.39628906250002,-5.069824218749986],[122.36894531250007,-4.767187499999977],[122.70195312500002,-4.61865234375],[122.75986328125012,-4.933886718750003],[122.61406250000007,-5.138671874999986],[122.64511718750012,-5.26943359374998]]],[[[123.17978515625006,-4.551171875000023],[123.195703125,-4.82265625],[123.05517578124997,-4.748242187500026],[122.97167968750003,-5.138476562500031],[123.18730468750007,-5.333007812499957],[122.96875,-5.405761718749943],[122.81210937500012,-5.671289062499952],[122.64501953124997,-5.663378906250031],[122.58642578124997,-5.488867187500006],[122.76650390625005,-5.210156249999983],[122.85332031250007,-4.618359375000026],[123.074609375,-4.38691406250004],[123.17978515625006,-4.551171875000023]]],[[[133.57080078124997,-4.245898437500003],[133.621875,-4.299316406249957],[133.32089843750006,-4.111035156249969],[133.57080078124997,-4.245898437500003]]],[[[123.2423828125001,-4.112988281250011],[123.07617187499997,-4.227148437499991],[122.96904296875002,-4.029980468749969],[123.21191406250003,-3.997558593750028],[123.2423828125001,-4.112988281250011]]],[[[128.56259765625012,-3.58544921875],[128.39160156250003,-3.637890625000026],[128.45156250000005,-3.514746093749991],[128.56259765625012,-3.58544921875]]],[[[128.2755859375001,-3.67460937499996],[127.97802734374997,-3.770996093749972],[127.925,-3.69931640625002],[128.32910156249997,-3.51591796874996],[128.2755859375001,-3.67460937499996]]],[[[116.42412109375007,-3.464453124999963],[116.38779296875012,-3.636718749999972],[116.3265625,-3.539062499999972],[116.42412109375007,-3.464453124999963]]],[[[116.30332031250006,-3.868164062499957],[116.05878906250004,-4.006933593749991],[116.06357421875006,-3.457910156249952],[116.26972656250004,-3.251074218750006],[116.30332031250006,-3.868164062499957]]],[[[126.86113281250007,-3.087890624999986],[127.22734375000007,-3.391015625],[127.22958984375006,-3.633007812500011],[126.68632812500007,-3.823632812500037],[126.21455078125004,-3.605175781250026],[126.05654296875,-3.420996093749991],[126.08828125,-3.105468750000014],[126.86113281250007,-3.087890624999986]]],[[[106.88642578125004,-3.005273437500023],[106.7428710937501,-2.932812500000011],[106.91064453124997,-2.93398437499998],[106.88642578125004,-3.005273437500023]]],[[[129.75468750000007,-2.865820312500034],[130.3791015625001,-2.989355468749977],[130.56992187500006,-3.130859375000028],[130.85996093750006,-3.570312500000028],[130.805078125,-3.85771484374996],[129.844140625,-3.327148437499957],[129.51171875000003,-3.32851562499998],[129.46767578125005,-3.453222656249977],[128.8625,-3.234960937500006],[128.51660156249997,-3.449121093750037],[128.13203125000004,-3.157421875000026],[127.90234374999997,-3.496289062499955],[127.87792968749997,-3.222070312499966],[128.19853515625002,-2.865917968749969],[128.99111328125,-2.82851562499998],[129.17441406250006,-2.933496093749966],[129.48417968750002,-2.785742187499977],[129.75468750000007,-2.865820312500034]]],[[[100.42509765625007,-3.182910156249974],[100.46513671875007,-3.32851562499998],[100.20429687500004,-2.98681640625],[100.19853515625002,-2.785546875000023],[100.45458984375003,-3.001953124999972],[100.42509765625007,-3.182910156249974]]],[[[108.2072265625001,-2.997656249999977],[108.05527343750006,-3.22685546874996],[107.85820312500002,-3.086328125000023],[107.61445312500004,-3.209375],[107.56347656250003,-2.920117187499997],[107.66630859375002,-2.566308593750037],[107.83779296875005,-2.530273437499972],[108.21513671875002,-2.696972656250011],[108.29062500000012,-2.829980468750023],[108.2072265625001,-2.997656249999977]]],[[[100.20410156249997,-2.741015625000017],[100.01494140625007,-2.819726562499966],[99.98789062500006,-2.525390624999957],[100.20410156249997,-2.741015625000017]]],[[[99.84306640625007,-2.343066406250031],[99.60703125000012,-2.257519531250011],[99.57216796875005,-2.025781249999966],[99.84306640625007,-2.343066406250031]]],[[[126.055078125,-2.451269531249963],[125.86289062500006,-2.077148437499943],[125.92275390625,-1.974804687499969],[126.055078125,-2.451269531249963]]],[[[126.02421875000007,-1.789746093750011],[126.33173828125004,-1.822851562500006],[125.47919921875004,-1.940039062499991],[125.38720703124997,-1.843066406249946],[126.02421875000007,-1.789746093750011]]],[[[130.35332031250007,-1.690527343749963],[130.41884765625,-1.971289062499963],[130.24804687500003,-2.047753906249994],[129.7376953125,-1.866894531250011],[130.35332031250007,-1.690527343749963]]],[[[124.96953125000007,-1.70546875],[125.18789062500005,-1.712890624999986],[125.31406250000006,-1.877148437499969],[124.41777343750002,-2.005175781250031],[124.32968750000012,-1.858886718749972],[124.41757812500006,-1.659277343749991],[124.96953125000007,-1.70546875]]],[[[135.47421875000006,-1.591796875000014],[136.89257812500003,-1.799707031249994],[136.22812500000012,-1.893652343749949],[135.47421875000006,-1.591796875000014]]],[[[108.953125,-1.61962890625],[108.83789062499997,-1.661621093750028],[108.80371093750003,-1.567773437499994],[108.953125,-1.61962890625]]],[[[106.04570312500002,-1.669433593750014],[106.36591796875004,-2.464843749999972],[106.81845703125006,-2.573339843749963],[106.6120117187501,-2.895507812499957],[106.66718750000004,-3.071777343749986],[105.99873046875004,-2.824902343749955],[105.7858398437501,-2.18134765625004],[105.13339843750012,-2.042578125],[105.45957031250006,-1.574707031249986],[105.58544921875003,-1.526757812499994],[105.7008789062501,-1.731054687499963],[105.7204101562501,-1.533886718750026],[105.91005859375,-1.504980468749991],[106.04570312500002,-1.669433593750014]]],[[[123.59755859375,-1.704296875000011],[123.48251953125006,-1.681445312499974],[123.52851562500004,-1.502832031250009],[123.59755859375,-1.704296875000011]]],[[[128.1530273437501,-1.66054687499998],[127.56162109375012,-1.728515624999972],[127.39501953125003,-1.589843749999972],[127.64667968750004,-1.332421875],[128.1530273437501,-1.66054687499998]]],[[[123.2123046875,-1.171289062499966],[123.23779296874997,-1.389355468749983],[123.43476562500004,-1.236816406249986],[123.54726562500005,-1.337402343749957],[123.51191406250004,-1.447363281249977],[123.27490234374997,-1.437207031249955],[123.17294921875006,-1.616015624999974],[123.15039062500003,-1.304492187500003],[122.89042968750007,-1.58720703124996],[122.81083984375002,-1.432128906249986],[122.90800781250002,-1.182226562499963],[123.2123046875,-1.171289062499966]]],[[[109.71025390625007,-1.1806640625],[109.46367187500002,-1.277539062500026],[109.4759765625,-0.9853515625],[109.74335937500004,-1.039355468749989],[109.71025390625007,-1.1806640625]]],[[[134.96533203124997,-1.116015624999974],[134.86171875,-1.114160156249952],[134.82792968750002,-0.978808593750003],[134.99628906250004,-1.03408203124998],[134.96533203124997,-1.116015624999974]]],[[[99.16386718750007,-1.777929687500006],[98.82773437500006,-1.609960937499977],[98.60175781250004,-1.197851562499949],[98.67607421875007,-0.970507812500003],[98.93261718750003,-0.954003906250009],[99.2672851562501,-1.62773437499996],[99.16386718750007,-1.777929687500006]]],[[[131.00185546875005,-1.315527343750034],[130.78232421875006,-1.255468749999963],[130.67294921875006,-0.959765625000031],[131.03300781250007,-0.917578124999963],[131.00185546875005,-1.315527343750034]]],[[[135.38300781250004,-0.6513671875],[135.89355468749997,-0.725781249999969],[136.37529296875007,-1.094042968750031],[136.1647460937501,-1.214746093750023],[135.91503906250003,-1.178417968749997],[135.74707031249997,-0.823046874999974],[135.64570312500004,-0.881933593749991],[135.38300781250004,-0.6513671875]]],[[[127.30039062500012,-0.780957031250026],[127.1564453125001,-0.760937500000026],[127.20908203125006,-0.619335937499955],[127.30039062500012,-0.780957031250026]]],[[[130.6266601562501,-0.528710937499966],[130.46542968750006,-0.486523437499983],[130.6159179687501,-0.417285156250003],[130.6266601562501,-0.528710937499966]]],[[[121.86435546875012,-0.406835937500006],[121.88125,-0.502636718749983],[121.65527343749997,-0.526171874999989],[121.86435546875012,-0.406835937500006]]],[[[140.97343750000007,-2.609765625],[140.97353515625,-2.803417968750026],[140.975,-6.346093750000023],[140.86230468749997,-6.740039062499989],[140.97519531250006,-6.90537109375002],[140.97617187500012,-9.11875],[140.00292968749997,-8.19550781250004],[140.11699218750002,-7.923730468750009],[139.93476562500004,-8.101171875],[139.38564453125,-8.189062499999963],[139.24882812500002,-7.982421874999972],[138.890625,-8.237792968749943],[139.08798828125012,-7.587207031250017],[138.74794921875,-7.25146484375],[139.17685546875006,-7.1904296875],[138.84570312500003,-7.13632812499999],[138.60136718750007,-6.936523437499972],[138.86455078125007,-6.858398437499943],[138.43867187500004,-6.343359375],[138.2962890625,-5.94902343749996],[138.37460937500006,-5.84365234374998],[138.19960937500005,-5.80703125],[138.33964843750007,-5.675683593749966],[138.08710937500004,-5.70917968750004],[138.06083984375002,-5.46523437499998],[137.27978515624997,-4.945410156249949],[136.61884765625004,-4.81875],[135.97968750000004,-4.530859374999963],[135.19560546875007,-4.450683593749972],[134.67968749999997,-4.079101562499943],[134.70654296875003,-3.954785156250026],[134.88652343750007,-3.938476562499986],[134.26621093750012,-3.945800781249972],[134.14707031250006,-3.79677734374998],[133.97382812500004,-3.817968750000034],[133.67832031250006,-3.4794921875],[133.8415039062501,-3.054785156249991],[133.70039062500004,-3.0875],[133.653125,-3.364355468749991],[133.51816406250012,-3.411914062500003],[133.40087890625003,-3.899023437500034],[133.24873046875004,-4.062304687499989],[132.91445312500005,-4.05693359374996],[132.75390625000003,-3.703613281250014],[132.86972656250006,-3.550976562499997],[132.75136718750005,-3.294628906249997],[131.97119140624997,-2.788574218750014],[132.2306640625001,-2.680371093749997],[132.725,-2.789062500000028],[133.19101562500006,-2.43779296874996],[133.70009765625005,-2.624609375],[133.75332031250005,-2.450683593750014],[133.90488281250012,-2.390917968750003],[133.79101562500003,-2.293652343749997],[133.92158203125004,-2.102050781249957],[132.96279296875005,-2.272558593749963],[132.30761718749997,-2.24228515625002],[132.02343749999997,-1.99033203125002],[131.93037109375004,-1.559667968750034],[131.29375,-1.393457031250009],[130.99589843750007,-1.42470703124998],[131.1908203125,-1.165820312500003],[131.2572265625,-0.855468750000014],[131.80429687500006,-0.703808593750026],[132.39375,-0.355468750000028],[132.85644531250003,-0.417382812500023],[133.47265624999997,-0.726171874999963],[133.97451171875,-0.744335937500026],[134.11152343750004,-0.84677734375002],[134.07197265625004,-1.001855468749994],[134.25957031250007,-1.362988281250026],[134.105859375,-1.720996093749946],[134.19482421875003,-2.309082031249943],[134.45996093749997,-2.83232421874996],[134.48330078125,-2.583007812499972],[134.62744140624997,-2.536718749999963],[134.70214843749997,-2.933593749999986],[134.84335937500006,-2.909179687499986],[134.88681640625006,-3.209863281249966],[135.25156250000012,-3.368554687499966],[135.48662109375002,-3.34511718749998],[135.85917968750002,-2.99531250000004],[136.38994140625002,-2.273339843750037],[137.07207031250002,-2.105078124999949],[137.1710937500001,-2.025488281249991],[137.1234375,-1.840917968749963],[137.80625000000012,-1.483203125],[139.78955078125003,-2.34824218750002],[140.62255859374997,-2.44580078125],[140.74746093750005,-2.607128906249997],[140.97343750000007,-2.609765625]]],[[[104.47421875000012,-0.334667968749955],[104.59013671875002,-0.466601562500017],[104.36318359375,-0.658593749999966],[104.25712890625002,-0.463281249999966],[104.47421875000012,-0.334667968749955]]],[[[127.56699218750006,-0.318945312499949],[127.68242187500002,-0.46835937500002],[127.60498046874997,-0.610156249999946],[127.88017578125002,-0.808691406249991],[127.7611328125,-0.883691406249994],[127.62382812500002,-0.76601562499999],[127.46269531250002,-0.80595703124996],[127.46865234375,-0.64296875],[127.3,-0.500292968749946],[127.32509765625,-0.335839843750023],[127.45517578125012,-0.406347656249991],[127.56699218750006,-0.318945312499949]]],[[[127.24990234375005,-0.4953125],[127.11914062500003,-0.520507812499986],[127.12646484375003,-0.278613281250003],[127.29003906250003,-0.284375],[127.24990234375005,-0.4953125]]],[[[103.73652343750004,-0.347949218750003],[103.461328125,-0.357617187500011],[103.54892578125006,-0.227539062499986],[103.73652343750004,-0.347949218750003]]],[[[130.81328125000007,-0.004101562500026],[131.27685546875003,-0.149804687499952],[131.33974609375005,-0.290332031249989],[131.00537109374997,-0.360742187500037],[130.62216796875006,-0.0859375],[130.89921875000002,-0.344433593749997],[130.7501953125001,-0.44384765625],[130.6886718750001,-0.296582031250011],[130.55078124999997,-0.366406250000026],[130.23662109375002,-0.209667968749983],[130.3625,-0.072851562500006],[130.81328125000007,-0.004101562500026]]],[[[98.45927734375007,-0.530468749999969],[98.30966796875012,-0.531835937499977],[98.4271484375,-0.226464843750037],[98.3229492187501,-0.000781249999974],[98.54414062500004,-0.257617187499989],[98.45927734375007,-0.530468749999969]]],[[[104.77861328125007,-0.175976562499955],[105.00537109374997,-0.282812499999963],[104.44707031250002,-0.189160156249983],[104.54267578125004,0.01772460937498],[104.77861328125007,-0.175976562499955]]],[[[103.28447265625002,0.541943359375011],[103.13955078125,0.549072265625043],[103.18740234375,0.699755859375017],[103.28447265625002,0.541943359375011]]],[[[103.0275390625001,0.746630859374974],[102.4904296875001,0.856640625],[102.50664062500002,1.088769531250037],[103.00244140624997,0.859277343750009],[103.0275390625001,0.746630859374974]]],[[[103.42392578125012,1.048339843749972],[103.31542968750003,1.071289062500028],[103.37998046875006,1.133642578125034],[103.42392578125012,1.048339843749972]]],[[[103.16640625000005,0.870166015625003],[102.7018554687501,1.0537109375],[102.72558593749997,1.158837890625023],[102.99941406250005,1.067773437500023],[103.16640625000005,0.870166015625003]]],[[[104.02480468750005,1.180566406250009],[104.13984375000004,1.165576171874974],[104.06611328125004,0.989550781249989],[103.93222656250012,1.071386718749963],[104.02480468750005,1.180566406250009]]],[[[104.58535156250005,1.21611328124996],[104.66289062500002,1.04951171875004],[104.57519531250003,0.831933593750037],[104.43925781250002,1.050439453125051],[104.25195312499997,1.014892578125],[104.36181640624997,1.18149414062502],[104.58535156250005,1.21611328124996]]],[[[102.4271484375,0.990136718750023],[102.27958984375002,1.075683593750043],[102.25634765625003,1.397070312499963],[102.44287109374997,1.234228515625006],[102.4271484375,0.990136718750023]]],[[[97.48154296875006,1.465087890624972],[97.93193359375002,0.973925781250003],[97.82041015625012,0.564453124999986],[97.683984375,0.596093750000037],[97.60390625000005,0.83388671874998],[97.40537109375012,0.946972656250026],[97.07919921875006,1.425488281249983],[97.35595703124997,1.539746093749997],[97.48154296875006,1.465087890624972]]],[[[102.49189453125004,1.459179687500011],[102.49941406250005,1.330908203124991],[102.02402343750012,1.607958984375031],[102.49189453125004,1.459179687500011]]],[[[124.88886718750004,0.995312500000011],[124.42753906250002,0.470605468750051],[123.75380859375,0.305517578124991],[123.26542968750007,0.326611328125026],[122.996875,0.493505859375006],[121.01298828125002,0.441699218750017],[120.57900390625,0.5283203125],[120.19228515625,0.268505859374997],[120.01328125000012,-0.196191406249994],[120.062890625,-0.555566406250023],[120.240625,-0.868261718749949],[120.51757812499997,-1.039453125],[120.66738281250005,-1.370117187499972],[121.14853515625012,-1.33945312500002],[121.5755859375,-0.828515625000023],[121.96962890625005,-0.933300781249969],[122.27998046875004,-0.757031250000026],[122.88876953125006,-0.755175781250003],[122.8294921875,-0.658886718750026],[123.17148437500012,-0.57070312499999],[123.37968750000002,-0.648535156249949],[123.43417968750006,-0.778222656249994],[123.37792968749997,-1.004101562500011],[122.90283203125003,-0.900976562499963],[122.25068359375004,-1.555273437500034],[121.8585937500001,-1.69326171874998],[121.65097656250006,-1.895410156249952],[121.35546874999997,-1.878222656250003],[122.29169921875004,-2.907617187500023],[122.39902343750006,-3.200878906249997],[122.25292968749997,-3.620410156250017],[122.68964843750004,-4.084472656249972],[122.84794921875002,-4.064550781250006],[122.8722656250001,-4.391992187500009],[122.71972656250003,-4.340722656249952],[122.11425781250003,-4.540234375000011],[122.03808593749997,-4.832421875000023],[121.58867187500007,-4.759570312500017],[121.48652343750004,-4.581054687499972],[121.61806640625,-4.092675781249952],[120.89179687500004,-3.520605468750034],[121.05429687500012,-3.167089843749949],[121.0521484375,-2.751660156249955],[120.87939453124997,-2.64560546875002],[120.65361328125002,-2.667578124999977],[120.26103515625007,-2.949316406249991],[120.43662109375012,-3.70732421874996],[120.42011718750004,-4.617382812500011],[120.27929687499997,-5.146093749999977],[120.4303710937501,-5.591015625000026],[119.9515625,-5.577636718749972],[119.71728515625003,-5.693359375000014],[119.55742187500007,-5.611035156250026],[119.36035156249997,-5.314160156250026],[119.59404296875007,-4.523144531249997],[119.62363281250006,-4.034375],[119.46748046875004,-3.512988281249989],[118.99462890624997,-3.537597656250028],[118.86767578124997,-3.39804687500002],[118.78330078125006,-2.720800781249977],[119.09218750000005,-2.482910156250014],[119.32187500000012,-1.929687500000014],[119.308984375,-1.408203125],[119.508203125,-0.906738281249972],[119.71132812500005,-0.680761718750034],[119.84433593750006,-0.861914062499991],[119.721875,-0.088476562499991],[119.865625,0.040087890625003],[119.80927734375004,0.238671875000051],[119.9132812500001,0.445068359375],[120.26953125000003,0.970800781249991],[120.60253906249997,0.854394531249994],[120.86796875000007,1.25283203124998],[121.0817382812501,1.327636718750028],[121.40410156250002,1.243603515624969],[121.59179687499997,1.067968749999977],[122.43662109375006,1.018066406250028],[122.83828125,0.845703125],[123.06650390625006,0.941796875000037],[123.93076171875006,0.850439453124977],[124.53369140624997,1.230468750000043],[124.94707031250002,1.672167968749974],[125.11093750000012,1.685693359374966],[125.2337890625,1.502294921875006],[124.88886718750004,0.995312500000011]]],[[[101.70810546875006,2.078417968750045],[101.71943359375004,1.789160156250006],[101.50078125000002,1.733203124999974],[101.40966796875003,2.021679687500026],[101.70810546875006,2.078417968750045]]],[[[127.73271484375007,0.848144531250043],[127.8810546875001,0.832128906249977],[127.96728515624997,1.042578125000048],[128.16074218750006,1.1578125],[128.22246093750002,1.400634765624986],[128.68837890625,1.572558593750017],[128.70263671874997,1.106396484374997],[128.29882812500003,0.87680664062502],[128.26064453125,0.733789062500023],[128.61123046875,0.549951171875051],[128.89960937500004,0.216259765625011],[127.9831054687501,0.471875],[127.88740234375004,0.298339843750043],[127.97783203125002,-0.24833984374996],[128.4254882812501,-0.892675781249949],[128.04638671875003,-0.706054687499943],[127.69160156250004,-0.241894531249983],[127.70869140625004,0.288085937499986],[127.53710937500003,0.610888671875031],[127.60800781250006,0.848242187499977],[127.42851562500002,1.139990234374991],[127.63173828125,1.843701171875011],[128.03642578125002,2.199023437500017],[127.88681640625012,1.83295898437504],[128.0109375000001,1.701220703125031],[128.01171874999997,1.331738281249983],[127.65283203124997,1.013867187499969],[127.73271484375007,0.848144531250043]]],[[[97.3341796875001,2.075634765625011],[97.10830078125,2.216894531250006],[97.29140625,2.200830078125023],[97.3341796875001,2.075634765625011]]],[[[128.45390625000002,2.051757812500028],[128.29589843749997,2.034716796875017],[128.2179687500001,2.297460937499991],[128.60214843750012,2.59760742187504],[128.68847656250003,2.473681640625017],[128.62324218750004,2.224414062500031],[128.45390625000002,2.051757812500028]]],[[[96.46367187500002,2.360009765625037],[95.80859374999997,2.655615234375034],[95.7171875,2.825976562500017],[95.89580078125007,2.8890625],[96.41728515625007,2.515185546875031],[96.46367187500002,2.360009765625037]]],[[[108.8875,2.905419921875037],[108.7865234375,2.885644531250009],[108.88574218750003,2.998974609374997],[108.8875,2.905419921875037]]],[[[105.76035156250006,2.863037109375014],[105.69218750000002,3.0625],[105.83671875000007,2.97651367187504],[105.76035156250006,2.863037109375014]]],[[[106.28525390625006,3.15712890624998],[106.28369140624997,3.088232421874977],[106.20097656250002,3.204882812500031],[106.28525390625006,3.15712890624998]]],[[[117.65839843750004,3.280517578124986],[117.54785156250003,3.43198242187502],[117.68085937500004,3.407519531250017],[117.65839843750004,3.280517578124986]]],[[[125.65810546875,3.436035156250043],[125.51152343750007,3.461132812500011],[125.46884765625006,3.73325195312502],[125.65810546875,3.436035156250043]]],[[[117.88476562499997,4.186132812500006],[117.92285156250003,4.054296874999977],[117.73681640624997,4.004003906250034],[117.64902343750012,4.168994140624974],[117.88476562499997,4.186132812500006]]],[[[108.31601562500006,3.689648437500026],[108.10039062500002,3.70454101562504],[108.24326171875006,3.810351562500017],[108.00234375,3.982861328124983],[108.24833984375002,4.21713867187502],[108.39287109375007,3.986181640625034],[108.31601562500006,3.689648437500026]]],[[[117.5744140625001,4.17060546875004],[117.46533203124997,4.076074218749966],[117.77724609375005,3.689257812500031],[117.05595703125007,3.622656249999963],[117.34628906250006,3.426611328124991],[117.35244140625,3.19375],[117.61064453125002,3.064355468749994],[117.56914062500002,2.92929687500002],[117.69765625,2.887304687499991],[117.6388671875001,2.825292968749963],[118.0666015625001,2.317822265624969],[117.7892578125001,2.026855468750014],[118.98496093750006,0.982128906249983],[118.53476562500006,0.813525390625017],[118.19609375000002,0.874365234374977],[117.91162109374997,1.098681640625017],[117.96425781250005,0.889550781250051],[117.74511718749997,0.72963867187498],[117.52216796875004,0.235888671875017],[117.46289062500003,-0.323730468749957],[117.5625,-0.770898437500009],[116.91396484375,-1.223632812499972],[116.73984375000006,-1.044238281250017],[116.75341796874997,-1.327343749999955],[116.27548828125006,-1.784863281249997],[116.42431640625003,-1.784863281249997],[116.45195312500002,-1.923144531250017],[116.31396484374997,-2.139843750000011],[116.56542968749997,-2.299707031249994],[116.52929687499997,-2.51054687499996],[116.31679687500005,-2.55185546875002],[116.33066406250012,-2.902148437499974],[116.16630859375002,-2.934570312500014],[116.2572265625,-3.126367187500009],[115.95615234375012,-3.595019531250003],[114.6935546875001,-4.169726562500017],[114.5255859375001,-3.376660156250011],[114.44599609375004,-3.481835937500037],[114.34433593750012,-3.444433593749963],[114.34433593750012,-3.23515625],[114.23632812500003,-3.36113281249996],[114.0822265625001,-3.27890625],[113.70507812499997,-3.45527343750004],[113.6100585937501,-3.195703125],[113.34316406250005,-3.246484374999966],[113.03398437500002,-2.933496093749966],[112.97148437500002,-3.187109375000034],[112.75800781250004,-3.322167968750009],[112.60029296875004,-3.400488281249977],[112.28496093750002,-3.32099609375004],[111.85810546875004,-3.551855468750006],[111.82304687500007,-3.057226562499949],[111.69472656250005,-2.88945312499996],[110.93007812500005,-3.071093750000017],[110.82968750000012,-2.9951171875],[110.89931640625,-2.908593749999952],[110.703125,-3.020898437500009],[110.57402343750007,-2.89140625],[110.25605468750004,-2.966113281249946],[110.09658203125,-2.001367187499966],[109.95986328125,-1.862792968749972],[109.98330078125,-1.274804687499994],[109.78740234375007,-1.011328124999963],[109.25878906250003,-0.807421874999989],[109.37275390625004,-0.638183593749972],[109.12109375000003,-0.39091796874996],[109.2575195312501,0.031152343750051],[108.94453125000004,0.355664062499997],[108.91679687500007,0.912646484375045],[108.95859375000006,1.134619140624963],[109.1315429687501,1.253857421875011],[109.01025390624997,1.239648437500051],[109.07587890625004,1.495898437500031],[109.37851562500006,1.922705078125034],[109.62890625000003,2.027539062499983],[109.53896484375,1.89619140625004],[109.65400390625004,1.614892578125023],[110.50576171875005,0.861962890625023],[111.10136718750002,1.050537109374986],[111.80898437500005,1.011669921874969],[112.078515625,1.143359374999974],[112.1857421875001,1.4390625],[112.47617187500006,1.559082031250028],[112.94296875000006,1.566992187500034],[113.00654296875004,1.433886718750003],[113.6222656250001,1.2359375],[113.90234375000003,1.434277343749997],[114.5125,1.452001953124963],[114.83056640625003,1.980029296874989],[114.78642578125002,2.250488281250014],[115.1791015625,2.523193359374972],[115.08076171875004,2.63422851562504],[115.117578125,2.89487304687502],[115.24697265625005,3.025927734374989],[115.45439453125002,3.034326171875009],[115.67880859375006,4.193017578124994],[115.86074218750005,4.348046875000037],[116.51474609375006,4.370800781249969],[117.10058593750003,4.337060546875023],[117.5744140625001,4.17060546875004]]],[[[126.81660156250004,4.033496093750003],[126.70449218750005,4.070996093749997],[126.81357421875006,4.258496093750011],[126.72207031250005,4.344189453124969],[126.75732421874997,4.547900390624989],[126.9210937500001,4.291015624999972],[126.81660156250004,4.033496093750003]]],[[[96.49257812500005,5.229345703124991],[97.54716796875002,5.205859375],[98.2484375,4.41455078125],[98.3073242187501,4.09287109375002],[99.73232421875005,3.183056640625026],[100.523828125,2.18916015625004],[100.88789062500004,1.948242187499986],[100.82822265625012,2.242578125],[101.04619140625002,2.257470703125023],[101.47666015625006,1.693066406250054],[102.019921875,1.442138671875],[102.38994140625007,0.84199218750004],[103.03183593750006,0.57890625],[103.0075195312501,0.415332031249974],[102.55,0.216455078124966],[103.33896484375012,0.513720703125045],[103.67265625000007,0.288916015624977],[103.78671875000012,0.046972656249991],[103.42851562500007,-0.19179687499998],[103.40517578125005,-0.36220703124998],[103.5091796875,-0.465527343749969],[103.43857421875006,-0.575585937500009],[103.72109375,-0.886718749999986],[104.36054687500004,-1.038378906249974],[104.51591796875002,-1.81943359375002],[104.84521484375003,-2.092968749999969],[104.65078125000005,-2.595214843749972],[104.97080078125012,-2.370898437500017],[105.39697265624997,-2.380175781249946],[106.0443359375,-3.10625],[105.84375,-3.61367187499998],[105.93046875000007,-3.833007812499986],[105.83144531250005,-4.16289062499996],[105.88720703124997,-5.009570312499974],[105.74833984375007,-5.818261718749966],[105.34941406250007,-5.549511718750011],[105.08134765625002,-5.74550781249998],[104.63955078125005,-5.520410156250037],[104.68398437500005,-5.89267578125002],[104.60156249999997,-5.90458984374996],[103.8314453125,-5.079589843750028],[102.53769531250006,-4.152148437499989],[102.12753906250006,-3.599218749999963],[101.57861328124997,-3.166992187500014],[100.88955078125,-2.248535156249957],[100.85527343750002,-1.934179687499949],[100.30820312500006,-0.82666015625],[99.66982421875005,0.045068359375037],[99.15917968749997,0.351757812499997],[98.59531250000006,1.864599609375006],[97.70078125000006,2.358544921875009],[97.59082031249997,2.846582031250037],[97.3913085937501,2.975292968749969],[96.9689453125001,3.575146484374969],[96.44472656250005,3.81630859374998],[95.57861328125003,4.661962890625048],[95.20664062500006,5.284033203125034],[95.22783203125002,5.564794921875034],[95.62890625000003,5.609082031249997],[96.13330078125003,5.294287109374991],[96.49257812500005,5.229345703124991]]]]},"properties":{"name":"Indonesia","childNum":107}},{"geometry":{"type":"Polygon","coordinates":[[[-4.412060546874983,54.185351562499996],[-4.785351562499983,54.073046875],[-4.424707031249994,54.407177734375],[-4.412060546874983,54.185351562499996]]]},"properties":{"name":"Isle of Man","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[75.32221348233018,32.28516356678968],[75.62496871116024,32.28516356678968],[75.73585997688717,32.78417426256088],[76.32728006076415,32.87658365066666],[76.62299010270264,33.32014871357439],[77.06655516561037,33.301666835953235],[77.71342088235082,32.6917648744551],[78.10154031239509,32.87658365066666],[78.49194250885338,32.53122786149202],[78.38964843749997,32.51987304687498],[78.41748046874997,32.466699218749994],[78.4552734375001,32.30034179687502],[78.49589843750002,32.21577148437504],[78.72558593750009,31.983789062500023],[78.71972656250009,31.887646484374983],[78.69345703125006,31.740380859374994],[78.7550781250001,31.55029296875],[78.74355468750005,31.323779296875017],[79.10712890625004,31.402636718750102],[79.38847656250013,31.064208984375085],[79.66425781250004,30.96523437499999],[79.92451171875004,30.888769531250034],[80.20712890625006,30.683740234375023],[80.19121093750002,30.56840820312496],[80.87353515625003,30.290576171875045],[80.98544921875006,30.23710937499999],[81.01025390625014,30.164501953125097],[80.96611328125002,30.180029296875063],[80.90761718750005,30.171923828125017],[80.84814453125009,30.139746093750034],[80.81992187500012,30.119335937499955],[80.68408203125014,29.994335937500068],[80.54902343750015,29.899804687499994],[80.40185546875003,29.730273437500102],[80.31689453125014,29.572070312500017],[80.25488281250009,29.423339843750114],[80.25595703125006,29.318017578125136],[80.23300781250006,29.194628906250045],[80.16953125000012,29.124316406250102],[80.13046875000006,29.100390625000045],[80.08457031249995,28.994189453125074],[80.05166015625,28.870312500000068],[80.07070312500005,28.830175781250063],[80.22656250000003,28.723339843750125],[80.32480468750012,28.66640625000008],[80.41855468749995,28.61201171875001],[80.47910156250012,28.604882812499994],[80.49580078125015,28.635791015625074],[80.51787109375002,28.665185546875023],[80.58701171875006,28.64960937500004],[81.16894531250014,28.335009765625074],[81.85263671875018,27.867089843750136],[81.89687500000011,27.87446289062504],[81.94521484375005,27.89926757812495],[81.98769531250016,27.91376953125004],[82.03701171875,27.90058593750004],[82.11191406250006,27.86494140625004],[82.28769531250018,27.756542968749983],[82.45136718750004,27.671826171874955],[82.62988281249997,27.687060546875045],[82.67734375000006,27.67343749999995],[82.71083984375005,27.596679687500114],[82.73339843750003,27.518994140625097],[83.28974609375004,27.370996093750136],[83.36943359375002,27.410253906249977],[83.38398437500004,27.444824218750085],[83.44716796875011,27.46533203125],[83.55166015625011,27.456347656249932],[83.74697265625011,27.395947265625068],[83.8288085937501,27.377832031250108],[84.09101562499993,27.491357421875136],[84.22978515625007,27.427832031250006],[84.48085937500005,27.348193359375102],[84.61015625000002,27.298681640624977],[84.64072265625012,27.249853515624977],[84.65478515625014,27.20366210937499],[84.65380859375009,27.09169921875008],[84.68535156250013,27.041015625000057],[85.19179687500011,26.766552734375097],[85.29296875000009,26.741015625000045],[85.56845703125012,26.839843750000114],[85.64843749999997,26.829003906250023],[85.69990234375004,26.781640624999966],[85.73730468750003,26.639746093750034],[85.79453125000006,26.60415039062505],[86.00732421875009,26.64936523437504],[86.70136718750015,26.435058593750057],[87.01640625000002,26.555419921875085],[87.2874023437499,26.360302734375125],[87.41357421875014,26.42294921875009],[87.84921875000006,26.43691406250008],[87.99511718750014,26.38237304687499],[88.02695312500023,26.395019531250085],[88.05488281250004,26.43002929687492],[88.11152343750004,26.58642578125],[88.1615234375,26.724804687500125],[88.15722656250009,26.807324218750068],[88.1110351562501,26.928466796875057],[87.99316406250009,27.086083984374994],[87.984375,27.133935546874994],[88.14697265625014,27.749218750000097],[88.15029296875011,27.843310546875074],[88.10976562500005,27.87060546874997],[88.10898437499995,27.93300781250005],[88.14111328125003,27.948925781250097],[88.27519531250013,27.96884765625009],[88.42597656250015,28.011669921875097],[88.57792968750002,28.093359375000034],[88.80371093750003,28.006933593750034],[88.74902343749997,27.521875000000136],[88.7648437500001,27.429882812500068],[88.83251953125003,27.362841796875074],[88.89140625000002,27.316064453125136],[88.88164062500007,27.29746093750009],[88.76035156250006,27.21811523437509],[88.73876953125009,27.175585937499932],[88.85761718750015,26.961474609375017],[89.14824218750002,26.816162109375085],[89.33212890625018,26.848632812500114],[89.58613281250004,26.778955078125136],[89.60996093750012,26.719433593750097],[89.71093750000009,26.713916015625045],[89.76386718750004,26.7015625],[89.94316406250013,26.723925781249932],[90.12294921875011,26.754589843749983],[90.20605468749997,26.847509765625063],[90.34589843750004,26.890332031250097],[90.73964843750005,26.771679687500068],[91.2865234375,26.78994140625008],[91.42675781249997,26.867089843749966],[91.45585937500013,26.866894531250125],[91.51757812500009,26.807324218750068],[91.67158203124993,26.80200195312503],[91.84208984375013,26.852978515625125],[91.94375,26.860839843750114],[91.99833984375013,26.85498046875],[92.04970703125016,26.87485351562495],[92.73155507489682,26.833697862861648],[93.30975376159499,26.784950522650554],[93.61047043679247,27.32239435188504],[94.06979001484449,27.589407158584788],[95.10800937321915,27.749636881153737],[95.74000740838363,28.116850432722256],[96.19577594042592,28.04291597700983],[96.96279296875,27.698291015625017],[96.88359375000013,27.514843750000125],[96.90195312500012,27.43959960937508],[97.10371093749993,27.163330078125114],[97.10205078125003,27.115429687500125],[96.95341796875013,27.13330078125003],[96.79785156249997,27.29619140624999],[96.19082031250005,27.26127929687499],[95.20146484375007,26.641406250000017],[95.05976562500015,26.473974609375006],[95.06894531250006,26.191113281250097],[95.10839843750014,26.091406250000034],[95.12929687500011,26.070410156250034],[95.13242187500006,26.041259765624943],[94.99199218750002,25.77045898437504],[94.66777343750007,25.458886718749966],[94.55302734375013,25.215722656249994],[94.70371093750012,25.097851562499955],[94.49316406250003,24.637646484374983],[94.37724609375002,24.473730468750006],[94.29306640625012,24.321875],[94.07480468750006,23.8720703125],[93.68339843750007,24.00654296875004],[93.45214843750003,23.987402343750034],[93.32626953125006,24.064208984375057],[93.36601562500007,23.132519531249955],[93.34941406250007,23.08496093750003],[93.20390625000002,23.03701171875005],[93.07871093750018,22.718212890625097],[93.16201171875,22.360205078125006],[93.07060546875002,22.20942382812501],[92.96455078125015,22.003759765625034],[92.90947265625013,21.988916015625023],[92.85429687500002,22.010156250000108],[92.77138671875,22.104785156250017],[92.68896484375009,22.130957031250006],[92.63037109375014,22.011328124999977],[92.57490234374993,21.97807617187496],[92.5612304687501,22.04804687500001],[92.49140625000004,22.685400390625006],[92.46445312500006,22.734423828125045],[92.36162109375002,22.929003906250074],[92.33378906250002,23.242382812499955],[92.24609375000003,23.68359374999997],[92.04404296875006,23.677783203125017],[91.97851562500003,23.691992187500063],[91.92958984375011,23.685986328125097],[91.92949218750019,23.598242187499977],[91.93789062500011,23.504687500000102],[91.75419921875013,23.28730468750004],[91.75097656250003,23.053515625000017],[91.55351562500013,22.991552734375006],[91.43623046875004,23.19990234375001],[91.359375,23.06835937500003],[91.16044921875019,23.660644531250085],[91.35019531250012,24.06049804687501],[91.72656250000003,24.20507812499997],[91.84619140624997,24.175292968749943],[92.06416015625004,24.374365234375006],[92.11748046875002,24.493945312500017],[92.22666015625012,24.77099609374997],[92.22832031250002,24.881347656250085],[92.2512695312499,24.895068359375045],[92.38496093750004,24.848779296875023],[92.46835937500018,24.944140625000074],[92.04970703125016,25.16948242187499],[90.61308593750002,25.16772460937497],[90.11962890625003,25.21997070312497],[89.86630859375012,25.293164062499955],[89.81406250000006,25.305371093749955],[89.80087890625012,25.33613281250001],[89.82490234375004,25.56015625],[89.82294921875015,25.94140625000003],[89.67089843750009,26.213818359375125],[89.57275390625003,26.13232421875003],[89.54990234375006,26.00527343750008],[89.28925781250015,26.037597656250085],[89.01865234375012,26.410253906249977],[88.95195312500002,26.412109375],[88.97041015625004,26.250878906250023],[88.94072265625002,26.24536132812497],[88.68281250000004,26.291699218749983],[88.51826171875004,26.51777343750004],[88.36992187500002,26.56411132812508],[88.35146484375005,26.482568359374966],[88.38623046875003,26.471533203125034],[88.44042968749997,26.369482421875034],[88.33398437499997,26.257519531249955],[88.15078125000005,26.087158203125057],[88.1066406250001,25.841113281250045],[88.14746093749997,25.811425781250023],[88.50244140625009,25.53701171875008],[88.76914062500006,25.490478515625],[88.85478515625002,25.333544921875017],[88.94414062500002,25.290771484375],[88.92978515625012,25.222998046875063],[88.57382812500006,25.18789062499999],[88.45625,25.188427734375125],[88.37294921875016,24.961523437500063],[88.31337890625011,24.8818359375],[88.27949218750015,24.881933593750034],[88.18886718750016,24.920605468750097],[88.14980468750011,24.91464843749995],[88.04511718750015,24.71303710937508],[88.03027343750009,24.664453125000136],[88.02343750000003,24.627832031250136],[88.07910156250009,24.549902343750063],[88.14550781250003,24.485791015624955],[88.225,24.460644531249983],[88.3375,24.45385742187503],[88.49853515625003,24.34663085937504],[88.64228515625015,24.325976562500102],[88.72353515625011,24.27490234375],[88.7335937500001,24.230908203125097],[88.72656250000009,24.18623046875004],[88.71376953125016,24.069628906250102],[88.69980468750006,24.00253906249992],[88.56738281250009,23.674414062500034],[88.63574218749997,23.55],[88.69765625,23.493017578125034],[88.72441406250002,23.254980468750034],[88.89707031250018,23.21040039062501],[88.92812500000011,23.186621093749977],[88.89970703125002,22.843505859375057],[88.92070312500002,22.632031249999955],[89.05,22.274609374999983],[89.02792968750023,21.937207031249983],[88.94931640625018,21.937939453125125],[89.05166015625,21.654101562500045],[88.85751953125012,21.744677734375017],[88.74501953125011,21.584375],[88.74023437500003,22.005419921875017],[88.64160156250003,22.121972656250136],[88.58466796875015,21.659716796874932],[88.44599609375004,21.614257812500085],[88.28750000000016,21.758203125000108],[88.25371093750002,21.622314453124943],[88.0568359375001,21.694140625000017],[88.19628906249997,22.139550781249994],[87.94140625000003,22.374316406250045],[88.15927734375018,22.12172851562508],[87.82373046875003,21.727343750000045],[87.20068359375009,21.544873046874983],[86.95410156250014,21.365332031250006],[86.84228515625009,21.106347656249994],[86.97548828125005,20.70014648437501],[86.75039062500011,20.313232421875057],[86.37656250000006,20.006738281249966],[86.24521484375012,20.05302734374999],[86.27949218750021,19.919433593749943],[85.575,19.69291992187499],[85.496875,19.696923828125108],[85.50410156250004,19.887695312500057],[85.24863281250006,19.757666015625034],[85.18076171875018,19.59487304687508],[85.44160156249993,19.626562499999977],[84.77099609375009,19.125390625000023],[84.10410156250018,18.29267578125001],[82.35957031250004,17.09619140624997],[82.25878906250014,16.55986328124996],[81.76191406250015,16.32949218750008],[81.28613281249997,16.337060546875023],[80.97871093750004,15.758349609375074],[80.64658203125006,15.895019531250028],[80.29345703125014,15.710742187499989],[80.0534179687501,15.074023437499932],[80.17871093750003,14.478320312500074],[80.11171875000005,14.212207031250045],[80.30654296875016,13.485058593750054],[80.15625,13.713769531250108],[80.06210937500006,13.60625],[80.34238281250006,13.361328125000071],[80.22910156250018,12.690332031249966],[79.85849609375018,11.988769531250043],[79.69316406250007,11.312548828124946],[79.79902343750004,11.338671874999932],[79.84863281250009,11.196875],[79.83818359375002,10.322558593750045],[79.31455078125018,10.256689453124949],[78.93994140625009,9.565771484375063],[79.01992187500005,9.333349609374963],[79.41142578125002,9.192382812500014],[78.97958984375018,9.268554687500085],[78.42148437500006,9.105029296874989],[78.19248046874995,8.890869140625057],[78.06015625000006,8.384570312499932],[77.51757812500003,8.078320312500068],[77.06591796875003,8.315917968749986],[76.5534179687501,8.902783203124997],[76.32460937500016,9.452099609374997],[76.24238281250004,9.927099609374949],[76.37558593750006,9.539892578124935],[76.45878906250013,9.536230468750077],[76.34648437500002,9.922119140625],[76.19560546875002,10.086132812500026],[75.72382812500015,11.361767578125026],[74.94550781250004,12.56455078124992],[74.38222656250005,14.494726562500048],[73.94921875000014,15.074755859375088],[73.80078125000009,15.39697265625],[73.93193359375013,15.39697265625],[73.77177734375013,15.573046874999989],[73.83281250000013,15.659375],[73.67988281250015,15.708886718750136],[73.47607421875003,16.05424804687496],[72.87548828124997,18.642822265625114],[72.97207031250011,19.15332031250003],[72.8346679687501,18.975585937500057],[72.80302734375013,19.07929687500004],[72.81162109375,19.298925781250006],[72.98720703125,19.27744140625009],[72.78789062500013,19.362988281250097],[72.66777343750019,19.83095703125005],[72.89375,20.672753906250136],[72.81386718750011,21.117187500000085],[72.62382812500002,21.371972656250108],[72.73476562500016,21.470800781250006],[72.61328125000009,21.461816406250108],[73.1125,21.750439453125125],[72.54306640625,21.69658203124999],[72.70019531250003,21.971923828124943],[72.52226562500013,21.976220703125108],[72.55302734375007,22.159960937500074],[72.80917968749995,22.23330078125008],[72.18281250000015,22.26972656250004],[72.30644531250002,22.18920898437497],[72.27441406250009,22.089746093749966],[72.03720703125006,21.82304687499999],[72.2103515625,21.72822265625004],[72.25400390625006,21.531005859375],[72.01523437500012,21.155712890625097],[71.0246093750001,20.73886718750009],[70.71933593750006,20.740429687500068],[70.12734375,21.094677734375097],[68.96992187500021,22.29028320312497],[69.05166015625016,22.437304687500074],[69.27656250000004,22.285498046875063],[70.17724609375014,22.57275390624997],[70.48925781250009,23.08950195312508],[70.33945312500012,22.939746093749932],[69.66464843750006,22.759082031250074],[69.23593749999995,22.848535156250023],[68.64072265625006,23.189941406250114],[68.41748046875009,23.57148437500004],[68.7767578125,23.852099609375017],[68.23496093749995,23.596972656250074],[68.16503906250009,23.857324218749994],[68.28251953125013,23.927978515625],[68.38125000000016,23.950878906250068],[68.48867187500011,23.96723632812501],[68.5866210937501,23.966601562500074],[68.72412109375003,23.964697265625034],[68.72812500000012,24.265625],[68.73964843750016,24.291992187500085],[68.75898437499993,24.307226562500006],[68.78115234375011,24.313720703125085],[68.8,24.30908203125003],[68.82832031250004,24.26401367187509],[68.86347656250015,24.26650390625005],[68.90078125000011,24.29243164062501],[68.98457031250015,24.273095703124966],[69.05156250000013,24.28632812500001],[69.11953125000011,24.26865234374995],[69.23505859374993,24.268261718750068],[69.44345703124995,24.275390625000085],[69.55917968750006,24.273095703124966],[69.80517578125009,24.16523437500004],[70.0982421875,24.2875],[70.28906250000009,24.356298828125063],[70.54677734375,24.418310546875063],[70.56503906250006,24.385791015625017],[70.55585937500015,24.331103515625074],[70.57929687500015,24.279052734374943],[70.65947265625013,24.24609374999997],[70.71630859375009,24.237988281250097],[70.7672851562501,24.245410156250017],[70.80507812500011,24.26196289062503],[70.88623046875014,24.34375],[70.92812500000016,24.362353515625045],[70.98281250000011,24.361035156250125],[71.04404296875006,24.400097656250097],[71.04531250000005,24.42998046874996],[70.96982421875012,24.571875],[70.97636718750013,24.61875],[71.00234375000016,24.6539062499999],[71.04785156250003,24.687744140625085],[71.02070312500021,24.75766601562492],[70.95087890625015,24.89160156250003],[70.87773437500019,25.06298828124997],[70.65205078125004,25.422900390625102],[70.64843750000003,25.666943359375068],[70.5695312500001,25.705957031250023],[70.50585937500009,25.685302734375085],[70.44853515625013,25.681347656249983],[70.26464843750009,25.70654296874997],[70.10019531250006,25.91005859375005],[70.14921875000002,26.347558593749994],[70.11464843750016,26.548046874999983],[69.47001953125002,26.804443359375],[69.56796875,27.174609375000102],[69.89628906250007,27.473632812500085],[70.04980468750009,27.694726562500023],[70.14453125000003,27.849023437499994],[70.19394531250006,27.89487304687492],[70.24433593750004,27.934130859375102],[70.4037109375,28.025048828124994],[70.48857421875013,28.023144531250125],[70.62910156250015,27.937451171875068],[70.6916015625001,27.76899414062504],[70.79794921875012,27.709619140625023],[70.87490234375016,27.71445312499995],[71.18476562500004,27.831640625],[71.54296875000003,27.869873046875],[71.8703125000001,27.9625],[71.88886718750004,28.04746093749992],[71.94804687500002,28.177294921875102],[72.12851562500012,28.34633789062508],[72.29199218750003,28.69726562499997],[72.34189453125006,28.751904296875097],[72.90332031250003,29.02875976562501],[73.38164062500013,29.934375],[73.8091796875,30.093359375],[73.88652343750013,30.162011718750136],[73.93339843750002,30.222070312500108],[73.92460937500007,30.28164062499999],[73.88271484375,30.352148437499977],[73.89931640625,30.435351562500045],[74.00898437500004,30.519677734374994],[74.33935546875003,30.893554687499943],[74.38037109375003,30.89340820312509],[74.50976562500009,30.959667968750097],[74.63281250000014,31.034667968750114],[74.62578125000002,31.068750000000108],[74.61035156250009,31.112841796875045],[74.51767578125012,31.185595703124932],[74.53496093750007,31.261376953125108],[74.59394531249993,31.465380859375102],[74.58183593750013,31.523925781250114],[74.50996093750015,31.712939453125074],[74.52597656249995,31.765136718750057],[74.55556640625011,31.818554687500097],[74.63574218750003,31.889746093750034],[74.73945312500015,31.948828125],[75.07148437500015,32.08935546875003],[75.13876953125,32.10478515624999],[75.25410156250004,32.140332031250125],[75.33349609374997,32.279199218749994],[75.32221348233018,32.28516356678968]]]]},"properties":{"name":"India","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[72.49199218750002,-7.37744140625],[72.42910156250002,-7.435351562500003],[72.34970703125,-7.263378906250011],[72.447265625,-7.395703125000011],[72.44560546875002,-7.220410156250011],[72.49199218750002,-7.37744140625]]]},"properties":{"name":"Br. Indian Ocean Ter.","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-9.948193359374926,53.91313476562499],[-10.265722656249949,53.977685546874994],[-9.99638671874996,54.00361328125004],[-9.948193359374926,53.91313476562499]]],[[[-6.218017578125,54.08872070312506],[-6.347607421874926,53.94130859375005],[-6.027392578124989,52.927099609375006],[-6.463183593749932,52.345361328124994],[-6.325,52.246679687500034],[-6.890234375,52.15922851562499],[-6.965771484374926,52.24951171875],[-8.057812499999926,51.82558593750005],[-8.4091796875,51.888769531250034],[-8.349121093749943,51.73930664062496],[-8.813427734374926,51.584912109374955],[-9.737304687499943,51.473730468750034],[-9.524902343750028,51.68110351562501],[-10.120751953124994,51.60068359375006],[-9.598828124999983,51.87441406250005],[-10.341064453124943,51.798925781250034],[-9.909667968749972,52.122949218749966],[-10.39023437499992,52.134912109374994],[-10.356689453125,52.20693359375002],[-9.772119140624937,52.250097656250034],[-9.90605468749996,52.403710937499966],[-9.632226562499937,52.54692382812502],[-8.783447265624943,52.679638671874955],[-8.990283203124989,52.755419921875045],[-9.175390624999949,52.634912109374994],[-9.916601562499977,52.56972656250005],[-9.46489257812496,52.82319335937498],[-9.299218749999966,53.09755859375002],[-8.930126953124983,53.207080078125045],[-9.51420898437496,53.23823242187498],[-10.091259765624926,53.41284179687503],[-10.116992187499932,53.548535156249955],[-9.720654296874926,53.6044921875],[-9.901611328124943,53.72719726562502],[-9.578222656249949,53.80541992187497],[-9.578857421875,53.879833984374955],[-9.9140625,53.863720703124955],[-9.856445312499972,54.095361328124994],[-10.092675781249966,54.15576171875003],[-10.056396484374943,54.25781250000006],[-8.545556640624994,54.24121093750003],[-8.623144531249977,54.346875],[-8.133447265624966,54.64082031250001],[-8.763916015624972,54.68120117187496],[-8.377294921874977,54.88945312500002],[-8.274609374999955,55.146289062500045],[-7.667089843749977,55.25649414062502],[-7.65874023437496,54.97094726562503],[-7.308789062500011,55.365820312500006],[-6.961669921874972,55.23789062500006],[-7.218652343749937,55.09199218749998],[-7.55039062499992,54.767968749999966],[-7.910595703124955,54.698339843750006],[-7.75439453125,54.59492187499998],[-8.118261718749977,54.41425781250004],[-7.606542968750006,54.14384765625002],[-7.324511718750017,54.13344726562502],[-7.007714843749937,54.40668945312501],[-6.649804687499937,54.05864257812496],[-6.218017578125,54.08872070312506]]]]},"properties":{"name":"Ireland","childNum":2}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[56.18798828125003,26.92114257812497],[55.95429687500004,26.70112304687501],[55.31152343749997,26.592626953125006],[55.76259765625005,26.81196289062504],[55.75761718750002,26.94765625000005],[56.279394531250006,26.952099609374983],[56.18798828125003,26.92114257812497]]],[[[46.1144531250001,38.877783203125034],[46.490625,38.90668945312498],[47.995898437500074,39.683935546875034],[48.322167968749994,39.39907226562502],[48.10439453125005,39.241113281249994],[48.292089843750006,39.01884765624999],[47.99648437499999,38.85375976562503],[48.59267578125005,38.41108398437498],[48.86875,38.43549804687498],[48.95996093750003,37.89013671875],[49.171191406250074,37.60058593749997],[50.13046875,37.407128906249994],[50.53320312499997,37.01367187500006],[51.11855468750005,36.742578124999966],[52.19013671875004,36.62172851562505],[53.76767578125006,36.93032226562502],[53.91542968750005,36.93032226562502],[53.67949218750002,36.853125],[53.970117187499994,36.818310546874955],[53.91416015625006,37.34355468750002],[54.6994140625001,37.47016601562498],[54.90009765625004,37.77792968750006],[55.38085937500003,38.051123046875034],[56.272070312500006,38.080419921875034],[56.440625,38.249414062499994],[57.1935546875001,38.216406250000034],[57.35371093750004,37.97333984374998],[58.261621093749994,37.665820312500045],[58.81542968750003,37.683496093749994],[59.30175781249997,37.51064453125005],[59.454980468749994,37.25283203125002],[60.06279296875002,36.962890625],[60.34130859375003,36.63764648437501],[61.11962890625003,36.64257812500003],[61.212011718750006,36.190527343750034],[61.15292968750006,35.97675781250001],[61.25214843750004,35.86762695312498],[61.26201171875002,35.61958007812498],[61.28183593750006,35.55341796875001],[61.2785156250001,35.513769531250006],[61.245507812499994,35.47407226562501],[61.18925781250002,35.31201171875003],[61.1,35.272314453125034],[61.08007812499997,34.85561523437505],[60.95117187499997,34.65385742187499],[60.91474609375004,34.63398437500001],[60.80234375000006,34.55463867187501],[60.73945312500004,34.544726562500045],[60.7262695312501,34.51826171874998],[60.736132812500074,34.491796875],[60.76259765625005,34.475244140624994],[60.88945312500002,34.31943359375006],[60.642675781250006,34.30717773437496],[60.48574218750005,34.09477539062502],[60.4859375,33.7119140625],[60.57382812500006,33.58833007812498],[60.91699218749997,33.505224609375006],[60.56054687499997,33.13784179687502],[60.5765625,32.99487304687503],[60.71044921874997,32.6],[60.82929687500004,32.24941406250005],[60.82724609375006,32.16796874999997],[60.789941406249994,31.98710937499999],[60.7875,31.87719726562497],[60.791601562500006,31.660595703124983],[60.82070312499999,31.495166015625045],[60.854101562500006,31.483251953125006],[61.110742187499994,31.45112304687504],[61.346484375000074,31.42163085937497],[61.66015625000003,31.382421874999977],[61.7550781250001,31.285302734374994],[61.814257812500074,31.072558593750017],[61.810839843750074,30.913281249999983],[61.78417968749997,30.831933593750023],[61.55947265625005,30.59936523437497],[61.33164062500006,30.36372070312501],[60.84335937500006,29.85869140624999],[61.03417968750003,29.663427734374977],[61.15214843750002,29.542724609375],[61.8898437500001,28.546533203124994],[62.7625,28.202050781249994],[62.782324218750006,27.800537109375],[62.75273437500002,27.265625],[63.16679687500002,27.25249023437499],[63.19609375000002,27.243945312500017],[63.25625,27.20791015625005],[63.30156250000002,27.151464843750006],[63.30517578124997,27.124560546875017],[63.242089843749994,27.07768554687499],[63.25039062499999,26.879248046875063],[63.24160156250005,26.86474609375003],[63.18613281250006,26.83759765625001],[63.168066406250006,26.66557617187496],[62.31230468750002,26.490869140624994],[62.23935546875006,26.357031249999977],[62.12597656249997,26.368994140625034],[61.842382812500006,26.225927734375006],[61.809960937499994,26.165283203125],[61.78076171874997,25.99584960937503],[61.75439453125003,25.843359375000063],[61.737695312499994,25.821093750000045],[61.66865234375004,25.76899414062501],[61.6618164062501,25.751269531250017],[61.67138671874997,25.69238281250003],[61.64013671875003,25.584619140624994],[61.61542968750004,25.28613281250003],[61.58789062499997,25.20234375000001],[61.533105468749994,25.195507812499955],[61.41220703125006,25.102099609375017],[60.66386718750002,25.28222656250003],[60.51054687500002,25.437060546875045],[60.40019531250002,25.311572265625074],[59.45605468749997,25.481494140625045],[59.0460937500001,25.417285156250017],[58.79785156249997,25.554589843750023],[57.334570312500006,25.791552734375074],[57.03603515625005,26.80068359375005],[56.728125,27.127685546875057],[56.118066406249994,27.14311523437499],[54.75927734375003,26.50507812500004],[54.24707031250003,26.696630859374977],[53.70576171875004,26.72558593750003],[52.69160156250004,27.323388671875023],[52.475878906250074,27.61650390624999],[52.03076171874997,27.824414062499955],[51.58906250000004,27.864208984374983],[51.27890625,28.13134765624997],[51.06201171874997,28.72612304687499],[50.86699218750002,28.870166015625017],[50.87578125000002,29.062695312499983],[50.67519531250005,29.146582031250034],[50.64960937500004,29.420068359374966],[50.16894531250003,29.921240234375034],[50.071582031250074,30.198535156250017],[49.55488281250004,30.028955078125023],[49.028125,30.333447265624983],[49.224511718749994,30.472314453125023],[49.00195312500003,30.506542968749983],[48.91914062500004,30.120898437500017],[48.54648437500006,29.962353515624955],[48.47851562499997,30.003808593749966],[48.43457031249997,30.03759765625],[48.33105468749997,30.28544921874996],[48.01494140625002,30.465625],[48.01064453125005,30.989794921875017],[47.679492187500074,31.00239257812501],[47.679492187500074,31.400585937499955],[47.75390624999997,31.601367187500017],[47.829980468749994,31.79443359375],[47.71455078125004,31.936425781249966],[47.5915039062501,32.087988281250034],[47.51191406250004,32.15083007812504],[47.3297851562501,32.45551757812501],[47.28515625000003,32.474023437499966],[47.121386718750074,32.46660156249996],[46.569921875,32.83393554687501],[46.37705078125006,32.92924804687499],[46.29824218750005,32.95024414062502],[46.11279296875003,32.957666015624994],[46.09306640625002,32.97587890624999],[46.08046875,33.028222656249994],[46.0807617187501,33.08652343750006],[46.14111328125003,33.174414062500034],[46.145898437499994,33.229638671874994],[46.01992187500005,33.41572265624998],[45.39707031250006,33.970849609374994],[45.542773437500074,34.21552734375004],[45.459375,34.470361328124994],[45.50078125000002,34.58159179687499],[45.6375,34.573828125],[45.678125,34.798437500000034],[45.92089843750003,35.02851562500001],[46.04179687500002,35.08017578125006],[46.13378906249997,35.127636718749955],[46.15468750000005,35.19672851562498],[46.112109375000074,35.32167968750005],[45.97109375000005,35.524169921875],[46.03740234375002,35.67314453124999],[46.180957031250074,35.71137695312504],[46.2625,35.74414062500006],[46.27343749999997,35.77324218750002],[46.16748046874997,35.820556640625],[45.77636718749997,35.82182617187499],[45.36162109375002,36.015332031249955],[45.241113281249994,36.35595703125],[45.20654296874997,36.397167968749955],[45.15527343749997,36.407373046874994],[45.11240234375006,36.409277343750034],[45.053125,36.47163085937501],[44.76513671875003,37.142431640625006],[44.79414062500004,37.290380859375034],[44.574023437500074,37.435400390625006],[44.589941406250006,37.710351562499966],[44.21132812499999,37.908056640625006],[44.4499023437501,38.33422851562506],[44.2985351562501,38.38627929687499],[44.27167968750004,38.83603515625006],[44.02324218750002,39.37744140625006],[44.3893554687501,39.422119140625],[44.58710937500004,39.76855468750006],[44.81718750000002,39.65043945312496],[45.4796875000001,39.00625],[46.1144531250001,38.877783203125034]]]]},"properties":{"name":"Iran","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[45.6375,34.573828125],[45.50078125000002,34.581591796874996],[45.459375,34.470361328124994],[45.54277343750002,34.21552734375],[45.397070312500006,33.970849609374994],[46.01992187500002,33.41572265625],[46.14589843750002,33.229638671874994],[46.14111328125,33.1744140625],[46.08076171875001,33.0865234375],[46.08046875000002,33.028222656249994],[46.09306640625002,32.975878906249996],[46.11279296875,32.957666015624994],[46.377050781250006,32.929248046874996],[46.569921875,32.833935546875],[47.12138671875002,32.466601562499996],[47.28515625,32.474023437499994],[47.32978515625001,32.455517578125],[47.51191406250001,32.150830078125],[47.59150390625001,32.08798828125],[47.71455078125001,31.936425781249994],[47.82998046875002,31.79443359375],[47.75390625,31.601367187499996],[47.67949218750002,31.400585937499997],[47.67949218750002,31.002392578124997],[48.01064453125002,30.989794921874996],[48.01494140625002,30.465625],[48.3310546875,30.285449218749996],[48.546484375,29.962353515624997],[48.454199218750006,29.9384765625],[48.354589843750006,29.956738281249997],[48.141699218750006,30.040917968749994],[47.982519531250006,30.011328125],[47.97871093750001,29.9828125],[47.64375,30.097314453124994],[47.14824218750002,30.0009765625],[46.905859375,29.5375],[46.76933593750002,29.347460937499996],[46.69375,29.259667968749994],[46.53144531250001,29.096240234374996],[46.3564453125,29.063671875],[44.71650390625001,29.193603515625],[43.77373046875002,29.84921875],[42.07441406250001,31.080371093749996],[40.47890625000002,31.893359375],[40.36933593750001,31.93896484375],[40.02783203125,31.995019531249994],[39.7041015625,32.042529296874996],[39.14541015625002,32.12451171875],[39.29277343750002,32.24384765625],[39.24746093750002,32.350976562499994],[39.04140625000002,32.3056640625],[38.773535156250006,33.372216796874994],[40.98701171875001,34.429052734375],[41.19472656250002,34.768994140625],[41.354101562500006,35.640429687499996],[41.295996093750006,36.383349609374996],[41.41679687500002,36.5146484375],[41.78857421875,36.59716796875],[42.358984375,37.10859375],[42.45585937500002,37.128710937499996],[42.63544921875001,37.249267578125],[42.74111328125002,37.3619140625],[42.77460937500001,37.371875],[42.869140625,37.334912109375],[42.936621093750006,37.324755859374996],[43.09248046875001,37.3673828125],[43.67578125,37.22724609375],[43.83642578125,37.223535156249994],[44.01318359375,37.313525390624996],[44.11445312500001,37.30185546875],[44.15625,37.282958984375],[44.19179687500002,37.249853515625],[44.20839843750002,37.20263671875],[44.20166015625,37.051806640624996],[44.281835937500006,36.97802734375],[44.32558593750002,37.0107421875],[44.401953125,37.058496093749994],[44.60595703125,37.176025390625],[44.66933593750002,37.173583984375],[44.73095703125,37.165283203125],[44.76513671875,37.142431640625],[45.053125,36.471630859375],[45.112402343750006,36.40927734375],[45.1552734375,36.407373046874994],[45.20654296875,36.39716796875],[45.24111328125002,36.35595703125],[45.36162109375002,36.01533203125],[45.7763671875,35.821826171874996],[46.16748046875,35.820556640625],[46.2734375,35.773242187499996],[46.2625,35.744140625],[46.18095703125002,35.711376953125],[46.03740234375002,35.673144531249996],[45.97109375000002,35.524169921875],[46.11210937500002,35.321679687499994],[46.15468750000002,35.196728515625],[46.1337890625,35.12763671875],[46.04179687500002,35.08017578125],[45.9208984375,35.028515625],[45.678125,34.7984375],[45.6375,34.573828125]]]},"properties":{"name":"Iraq","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-15.543115234374994,66.228515625],[-14.595849609374994,66.38154296875],[-15.117382812499983,66.125634765625],[-14.698193359374983,66.02021484375],[-14.827099609374983,65.7642578125],[-14.391845703125,65.78740234375],[-14.473388671875,65.575341796875],[-14.166943359374983,65.64228515625],[-13.617871093749983,65.5193359375],[-13.804785156249977,65.35478515625],[-13.599316406249983,65.0359375],[-14.04443359375,64.74189453125],[-14.385107421874977,64.74521484375],[-14.475390624999989,64.493994140625],[-14.927392578124994,64.319677734375],[-15.832910156249994,64.17666015625],[-16.640332031249983,63.865478515625],[-17.81572265624999,63.71298828125],[-17.946923828124994,63.5357421875],[-18.65361328124999,63.406689453125],[-20.198144531249994,63.555810546874994],[-20.494042968749994,63.687353515625],[-20.413964843749994,63.80517578125],[-20.65092773437499,63.73740234375],[-21.15239257812499,63.94453125],[-22.652197265624977,63.827734375],[-22.701171875,64.083203125],[-22.51005859374999,63.991455078125],[-22.187597656249977,64.039208984375],[-21.463330078124983,64.379150390625],[-22.053369140624994,64.313916015625],[-21.950341796874994,64.514990234375],[-21.590625,64.6263671875],[-22.10600585937499,64.533056640625],[-22.467041015625,64.794970703125],[-23.818994140624994,64.73916015625],[-24.02617187499999,64.863427734375],[-22.7880859375,65.046484375],[-21.89213867187499,65.048779296875],[-21.779980468749983,65.1876953125],[-22.50908203124999,65.19677734375],[-21.844384765624994,65.44736328125],[-22.902490234374994,65.58046875],[-23.89990234375,65.407568359375],[-24.475683593749977,65.5251953125],[-24.248925781249994,65.614990234375],[-23.85673828124999,65.53837890625],[-24.092626953124977,65.77646484375],[-23.615917968749983,65.67958984375],[-23.285351562499983,65.75],[-23.832617187499977,65.84921875],[-23.52495117187499,65.880029296875],[-23.77734375,66.017578125],[-23.434472656249994,66.02421875],[-23.452539062499994,66.181005859375],[-23.018994140624983,65.98212890625],[-22.659863281249983,66.025927734375],[-22.61601562499999,65.86748046875],[-22.44169921874999,65.90830078125],[-22.4453125,66.07001953125],[-22.947900390624994,66.212744140625],[-22.48442382812499,66.26630859375],[-23.116943359375,66.338720703125],[-22.9443359375,66.429443359375],[-22.426123046874977,66.430126953125],[-21.406884765624994,66.0255859375],[-21.374902343749994,65.74189453125],[-21.658447265625,65.723583984375],[-21.12968749999999,65.2666015625],[-20.804345703124994,65.63642578125],[-20.454833984375,65.571044921875],[-20.20751953125,66.10009765625],[-19.489697265624983,65.76806640625],[-19.382958984374994,66.07568359375],[-18.845898437499983,66.183935546875],[-18.141943359374977,65.73408203125],[-18.29716796874999,66.157421875],[-17.906982421875,66.143310546875],[-17.550439453124994,65.964404296875],[-17.153027343749983,66.20283203125],[-16.838037109374994,66.125244140625],[-16.485009765624994,66.195947265625],[-16.540673828124994,66.446728515625],[-16.24931640624999,66.522900390625],[-15.985400390624989,66.5146484375],[-15.543115234374994,66.228515625]]]},"properties":{"name":"Iceland","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[35.78730468750001,32.734912109374996],[35.572851562500006,32.640869140625],[35.56904296875001,32.619873046875],[35.55146484375001,32.3955078125],[35.484375,32.401660156249996],[35.40263671875002,32.450634765625],[35.38671875,32.493017578125],[35.303808593750006,32.512939453125],[35.19326171875002,32.534423828125],[35.065039062500006,32.46044921875],[35.01054687500002,32.338183593749996],[34.95595703125002,32.1609375],[34.98974609375,31.91328125],[34.97832031250002,31.86640625],[34.95380859375001,31.841259765624997],[34.96113281250001,31.82333984375],[34.983007812500006,31.81679687499999],[35.05322265625,31.837939453124996],[35.12714843750001,31.816748046875],[35.203710937500006,31.75],[34.95097656250002,31.602294921875],[34.88046875,31.3681640625],[35.45058593750002,31.479296875],[34.97343750000002,29.555029296875],[34.904296875,29.47734375],[34.24531250000001,31.208300781249996],[34.34833984375001,31.292919921874997],[34.350195312500006,31.362744140624997],[34.52558593750001,31.525634765625],[34.47734375000002,31.584863281249994],[34.483984375,31.59228515625],[34.67841796875001,31.895703125],[35.10859375000001,33.08369140625],[35.411230468750006,33.07568359375],[35.869140625,33.43173828125],[35.91347656250002,32.94960937499999],[35.78730468750001,32.734912109374996]]]},"properties":{"name":"Israel","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[15.576562500000051,38.220312500000034],[15.099511718750023,37.45859375],[15.295703125000017,37.05517578124997],[15.112597656250017,36.687841796875006],[14.501855468750023,36.798681640625034],[14.142968750000023,37.103662109374994],[13.90546875000004,37.10063476562502],[13.169921875000028,37.47929687499996],[12.640234375000034,37.594335937500034],[12.435546874999972,37.819775390624955],[12.734375,38.18305664062498],[12.902734375000023,38.03486328124998],[13.291113281250034,38.19145507812502],[13.788867187499989,37.981201171875],[15.11875,38.15273437500002],[15.498730468750011,38.290869140625006],[15.576562500000051,38.220312500000034]]],[[[8.478906250000023,39.067529296874966],[8.421484375000034,38.968652343749994],[8.366796875,39.115917968749955],[8.478906250000023,39.067529296874966]]],[[[8.28603515625008,41.03984375],[8.205664062500034,40.99746093750005],[8.320214843750023,41.121875],[8.28603515625008,41.03984375]]],[[[9.632031250000011,40.88203124999998],[9.805273437500063,40.499560546875045],[9.642968750000023,40.268408203125006],[9.5625,39.16601562500006],[9.056347656250068,39.23916015625002],[8.966601562500074,38.963720703125034],[8.648535156250034,38.92656250000002],[8.418164062500068,39.205712890624966],[8.547753906250023,39.83920898437506],[8.4078125,39.91723632812497],[8.471289062500063,40.29267578124998],[8.189941406250028,40.651611328125],[8.22421875,40.91333007812503],[8.571875,40.85019531250006],[9.228417968750023,41.257080078125],[9.615332031249977,41.01728515624998],[9.632031250000011,40.88203124999998]]],[[[10.395117187500034,42.85815429687503],[10.419335937499994,42.71318359374999],[10.13125,42.742041015625006],[10.395117187500034,42.85815429687503]]],[[[13.420996093750006,46.212304687499994],[13.63251953125004,46.17705078125002],[13.634960937499983,46.15776367187499],[13.61660156250008,46.133105468750045],[13.54804687500004,46.08911132812503],[13.486425781250034,46.03955078124997],[13.480273437500017,46.00922851562501],[13.487695312500023,45.987109375000045],[13.509179687500051,45.973779296874994],[13.6005859375,45.97978515624996],[13.663476562500023,45.7919921875],[13.831152343750006,45.680419921875],[13.719824218750063,45.58759765625001],[13.628320312500051,45.77094726562498],[13.206347656250074,45.771386718749966],[12.27431640625008,45.44604492187503],[12.225683593750034,45.24150390625002],[12.523437500000028,44.96796874999998],[12.248339843750045,44.72250976562498],[12.396289062500074,44.223876953125],[13.56416015625004,43.57128906250003],[14.010449218750011,42.68955078125006],[14.54072265625004,42.24428710937502],[15.16875,41.93403320312498],[16.164648437500034,41.89619140624998],[15.900488281250034,41.51206054687498],[17.954980468749994,40.65517578125002],[18.460644531249983,40.221044921875034],[18.34375,39.82138671874998],[18.077929687500017,39.93696289062498],[17.865039062500074,40.28017578125002],[17.395800781250045,40.34023437499999],[17.179980468750045,40.50278320312498],[16.92822265625,40.45805664062502],[16.521875,39.74755859375003],[17.114550781250017,39.38061523437497],[17.174609375000017,38.998095703125045],[16.61669921875003,38.800146484375034],[16.54560546875001,38.40908203125002],[16.05683593750001,37.941845703124955],[15.72451171875008,37.93911132812502],[15.645800781250017,38.034228515625045],[15.87890625,38.61391601562502],[16.19677734375,38.759228515624955],[16.20996093750003,38.94111328124998],[15.692773437499994,39.99018554687501],[14.95087890625004,40.23901367187497],[14.94765625000008,40.469335937500006],[14.765722656250063,40.66840820312498],[14.339941406250006,40.59882812500001],[14.460546875000063,40.72871093750001],[14.04433593750008,40.81225585937506],[13.733398437500057,41.23564453124999],[13.088671875000074,41.243847656249955],[12.630859374999972,41.469677734374955],[11.637304687500063,42.287548828124955],[11.141210937499977,42.38989257812503],[11.167773437500074,42.53515625000006],[10.708398437500023,42.93632812499999],[10.514843750000011,42.96752929687503],[10.188085937500063,43.947509765625],[8.76582031250004,44.42231445312501],[8.004980468750006,43.87675781249999],[7.4931640625,43.767138671875045],[7.637207031250057,44.16484375],[7.318554687500068,44.13798828125002],[6.900195312499989,44.33574218749996],[6.99267578125,44.82729492187502],[6.634765625000028,45.06816406249996],[7.07832031250004,45.23994140624998],[7.146386718750051,45.381738281249994],[6.790917968750023,45.740869140624966],[7.021093750000034,45.92578124999997],[7.055761718749977,45.90380859375003],[7.129003906249977,45.88041992187499],[7.327929687500017,45.912353515625],[7.9931640625,46.01591796874996],[8.081542968750057,46.25600585937502],[8.231933593750057,46.341210937499966],[8.29853515625004,46.403417968750034],[8.370703125,46.44511718750002],[8.458398437500023,46.24589843750002],[8.818554687500011,46.0771484375],[8.826757812500006,46.06103515625],[8.77802734375004,45.996191406250034],[8.953710937500034,45.83002929687501],[9.023730468750074,45.845703125],[9.203417968750017,46.21923828125],[9.304394531250068,46.49555664062498],[9.399316406250023,46.480664062499955],[9.427636718750023,46.48232421875002],[9.528710937500023,46.306201171875045],[9.57958984375,46.29609375000001],[9.639453125000017,46.29589843749997],[9.78779296875004,46.34604492187498],[9.884472656250011,46.36777343750006],[9.939257812500074,46.36181640625],[10.041015625000028,46.23808593750002],[10.08056640625,46.22797851562501],[10.128320312500051,46.238232421874955],[10.109667968750074,46.36284179687502],[10.081933593750023,46.420751953125006],[10.045605468750068,46.44790039062505],[10.038281250000011,46.483203125000045],[10.061230468750068,46.54677734375002],[10.087011718750063,46.59990234375002],[10.1375,46.614355468750034],[10.195507812500068,46.62109374999997],[10.4306640625,46.55004882812497],[10.409352678571473,46.6092047991071],[10.39794921875,46.66503906250006],[10.406054687500045,46.73486328124997],[10.452832031249983,46.86494140625001],[10.47939453125008,46.85512695312505],[10.579785156250011,46.85371093750001],[10.689257812500017,46.846386718749955],[10.759765625,46.79331054687498],[10.828906250000045,46.775244140625034],[10.927343750000034,46.76948242187501],[10.993261718750034,46.77700195312502],[11.02509765625004,46.796972656250006],[11.063476562500057,46.85913085937497],[11.133886718750006,46.93618164062505],[11.244433593750045,46.975683593750006],[11.433203125000063,46.983056640624994],[11.527539062500011,46.99741210937498],[11.775683593750017,46.986083984375],[12.169433593750028,47.082128906250006],[12.19716796875008,47.075],[12.201269531250034,47.060888671875034],[12.165527343750028,47.028173828125034],[12.130761718750051,46.98476562499999],[12.154101562500017,46.93525390625004],[12.267968750000023,46.83588867187504],[12.330078125,46.75981445312499],[12.388281250000034,46.70263671874997],[12.479199218749983,46.672509765624966],[13.16875,46.572656249999966],[13.3515625,46.55791015624999],[13.490039062500045,46.55556640625002],[13.7,46.52026367187503],[13.679687500000057,46.46289062499997],[13.63710937500008,46.44853515624999],[13.563281250000045,46.41508789062502],[13.399511718749977,46.31752929687502],[13.420996093750006,46.212304687499994]]]]},"properties":{"name":"Italy","childNum":6}},{"geometry":{"type":"Polygon","coordinates":[[[-77.261474609375,18.45742187499999],[-76.349853515625,18.15185546875],[-76.21079101562499,17.913525390624997],[-76.524609375,17.8662109375],[-76.85322265625,17.97373046874999],[-76.94414062499999,17.848779296874994],[-77.11948242187499,17.880078125],[-77.20498046875,17.71494140624999],[-77.36142578124999,17.833691406249997],[-77.76816406249999,17.877392578124997],[-78.04448242187499,18.173828125],[-78.339501953125,18.28720703124999],[-78.21669921875,18.44809570312499],[-77.8734375,18.522216796875],[-77.261474609375,18.45742187499999]]]},"properties":{"name":"Jamaica","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-2.018652343749977,49.23125],[-2.23583984375,49.1763671875],[-2.220507812499989,49.266357421875],[-2.018652343749977,49.23125]]]},"properties":{"name":"Jersey","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[39.14541015625002,32.12451171875],[38.9970703125,32.007470703124994],[38.96230468750002,31.994921875],[38.37548828125,31.847460937499996],[38.111425781250006,31.781152343749994],[37.49335937500001,31.625878906249994],[37.215625,31.556103515624997],[36.95859375,31.491503906249996],[37.980078125,30.5],[37.862890625,30.442626953125],[37.66972656250002,30.34814453125],[37.64990234375,30.330957031249994],[37.63359375000002,30.31328125],[37.55361328125002,30.144580078124996],[37.49072265625,30.01171875],[37.46923828125,29.995068359374997],[36.75527343750002,29.866015625],[36.70390625000002,29.831640625],[36.591796875,29.66611328125],[36.47607421875,29.4951171875],[36.2828125,29.355371093749994],[36.068457031250006,29.200537109375],[34.95078125,29.353515625],[34.97343750000002,29.555029296875],[35.45058593750002,31.479296875],[35.57207031250002,32.237890625],[35.55146484375001,32.3955078125],[35.56904296875001,32.619873046875],[35.572851562500006,32.640869140625],[35.78730468750001,32.734912109374996],[36.3720703125,32.3869140625],[36.818359375,32.317285156249994],[38.773535156250006,33.372216796874994],[39.04140625000002,32.3056640625],[39.24746093750002,32.350976562499994],[39.29277343750002,32.24384765625],[39.14541015625002,32.12451171875]]]},"properties":{"name":"Jordan","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[123.88867187499997,24.280126953124977],[123.67978515625012,24.317773437500023],[123.77148437499997,24.41445312499999],[123.93486328125002,24.362011718749983],[123.88867187499997,24.280126953124977]]],[[[124.29316406250004,24.515917968750074],[124.13574218750003,24.347607421874983],[124.08476562500002,24.435839843750017],[124.30195312500004,24.58710937500001],[124.29316406250004,24.515917968750074]]],[[[125.44414062500002,24.7431640625],[125.26894531250005,24.732519531250063],[125.28359375,24.871923828125034],[125.44414062500002,24.7431640625]]],[[[128.25878906249997,26.65278320312501],[127.86708984375,26.442480468749977],[127.80361328125005,26.152539062499983],[127.653125,26.0947265625],[127.90722656250003,26.69360351562497],[128.09765624999997,26.66777343749996],[128.25488281249997,26.88188476562496],[128.25878906249997,26.65278320312501]]],[[[128.99814453125012,27.720800781250006],[128.90000000000012,27.727783203125],[128.9076171875,27.897998046875045],[128.99814453125012,27.720800781250006]]],[[[129.45253906250005,28.20898437499997],[129.3664062500001,28.127734375000045],[129.16464843750012,28.24975585937503],[129.68955078125012,28.517480468750023],[129.45253906250005,28.20898437499997]]],[[[130.6227539062501,30.262988281250017],[130.44560546875002,30.264697265625017],[130.38808593750005,30.38818359375003],[130.49716796875006,30.465527343749983],[130.64355468749997,30.388964843750017],[130.6227539062501,30.262988281250017]]],[[[130.95976562500007,30.39692382812504],[130.87031250000004,30.444238281249994],[131.06035156250007,30.828466796875006],[130.95976562500007,30.39692382812504]]],[[[130.38105468750004,32.42373046875002],[130.24169921874997,32.462792968749994],[130.46142578124997,32.515722656250034],[130.38105468750004,32.42373046875002]]],[[[130.08251953124997,32.22968750000001],[129.9601562500001,32.24375],[130.00976562499997,32.521630859374994],[130.16777343750002,32.54121093749998],[130.19951171875002,32.34057617187506],[130.08251953124997,32.22968750000001]]],[[[128.66533203125002,32.783886718749955],[128.89453124999997,32.65214843750002],[128.69296875000012,32.60473632812506],[128.66533203125002,32.783886718749955]]],[[[129.07695312500002,32.84028320312498],[128.99726562500004,32.95185546874998],[129.10976562500005,33.13256835937503],[129.18193359375002,32.99311523437504],[129.07695312500002,32.84028320312498]]],[[[129.49179687500006,33.22304687499999],[129.37041015625002,33.176025390625],[129.56992187500006,33.36103515625004],[129.49179687500006,33.22304687499999]]],[[[129.79570312500007,33.74882812499999],[129.67480468749997,33.73969726562498],[129.71728515624997,33.8583984375],[129.79570312500007,33.74882812499999]]],[[[131.17460937500007,33.602587890625045],[131.69628906250003,33.60283203124999],[131.53740234375007,33.274072265624994],[131.89658203125006,33.25458984375001],[131.8478515625001,33.118066406249994],[132.0021484375001,32.882373046875045],[131.6603515625001,32.465625],[131.33720703125007,31.4046875],[131.07080078124997,31.436865234374977],[131.09843750000002,31.256152343750017],[130.68574218750004,31.01513671875003],[130.77626953125,31.70629882812497],[130.65507812500002,31.71840820312505],[130.5560546875,31.563085937500034],[130.58876953125,31.178515625000017],[130.20068359374997,31.291894531250023],[130.14726562500002,31.40849609374996],[130.2941406250001,31.45068359375003],[130.3219726562501,31.601464843750023],[130.18789062500005,31.768847656250017],[130.19443359375012,32.090771484374955],[130.64052734375005,32.61923828124998],[130.49785156250002,32.65693359375001],[130.547265625,32.83159179687499],[130.2375,33.177636718749966],[130.12685546875005,33.10483398437506],[130.175,32.851318359375],[130.32646484375002,32.852636718750006],[130.34042968750012,32.70185546875004],[130.05410156250005,32.770800781250045],[129.76855468749997,32.57099609375001],[129.82675781250006,32.72534179687503],[129.67910156250005,33.059960937499966],[129.99169921875003,32.85156249999997],[129.58007812500003,33.23627929687501],[129.61015625000002,33.34365234375005],[129.844140625,33.32177734375003],[129.82568359374997,33.43701171875006],[130.36503906250007,33.634472656249955],[130.4837890625,33.834619140624966],[130.715625,33.92778320312502],[130.953125,33.87202148437504],[131.17460937500007,33.602587890625045]]],[[[132.266015625,33.945166015625006],[132.44492187500006,33.91318359374998],[132.20878906250007,33.87285156250002],[132.266015625,33.945166015625006]]],[[[129.27949218750004,34.123388671875006],[129.18642578125,34.14501953125006],[129.21484374999997,34.320654296875034],[129.3371093750001,34.284765625],[129.27949218750004,34.123388671875006]]],[[[134.35742187500003,34.25634765625],[134.6375,34.22661132812499],[134.73886718750012,33.82050781250001],[134.37705078125012,33.60839843749997],[134.18164062500003,33.24721679687502],[133.95869140625004,33.44833984375006],[133.63203125000004,33.51098632812503],[133.28593750000007,33.35996093749998],[132.97724609375004,32.84199218749998],[132.80429687500006,32.75200195312502],[132.6417968750001,32.76245117187503],[132.70898437500003,32.90249023437505],[132.49511718749997,32.91660156249998],[132.41279296875004,33.43046875],[132.0326171875,33.339990234374994],[132.64306640624997,33.68994140624997],[132.93515625000006,34.09531250000006],[133.19306640625004,33.93320312499998],[133.58203124999997,34.01713867187502],[133.60263671875006,34.24384765625001],[133.94833984375006,34.34804687500002],[134.35742187500003,34.25634765625]]],[[[134.35185546875002,34.48364257812503],[134.25185546875,34.42304687500004],[134.18212890625003,34.51923828124998],[134.35185546875002,34.48364257812503]]],[[[134.9328125000001,34.28813476562499],[134.82441406250004,34.202929687500045],[134.66787109375005,34.294140624999955],[135.00468750000002,34.54404296874998],[134.9328125000001,34.28813476562499]]],[[[129.38564453125,34.35366210937502],[129.26669921875012,34.37045898437506],[129.45107421875005,34.68657226562499],[129.38564453125,34.35366210937502]]],[[[133.37050781250005,36.203857421875],[133.23925781249997,36.178759765625045],[133.20615234375006,36.293408203124955],[133.29570312500002,36.34013671874996],[133.37050781250005,36.203857421875]]],[[[138.34404296875007,37.822119140625006],[138.22519531250006,37.82939453124996],[138.25,38.078466796875006],[138.50361328125004,38.31591796875006],[138.45361328124997,38.07568359375006],[138.57519531249997,38.065527343750034],[138.34404296875007,37.822119140625006]]],[[[141.22929687500007,41.37265625],[141.45546875000005,41.404736328124955],[141.43046875000002,40.72333984374998],[141.7970703125001,40.29116210937502],[141.97695312500005,39.428808593750034],[141.90078125,39.111328125],[141.5462890625,38.762841796874966],[141.4674804687501,38.404150390625006],[141.10839843750003,38.33793945312502],[140.9621093750001,38.148876953124955],[141.00166015625004,37.11464843750002],[140.57353515625007,36.23134765625002],[140.87402343749997,35.72495117187506],[140.457421875,35.51025390625],[140.35468750000004,35.18144531249999],[139.8439453125001,34.914892578125034],[139.82646484375002,35.29667968750002],[140.096875,35.58515624999998],[139.83476562500002,35.658056640625006],[139.65000000000012,35.40913085937501],[139.675,35.149267578125006],[139.47441406250002,35.298535156249955],[139.24941406250005,35.27802734375004],[139.08603515625006,34.83916015624999],[138.8375,34.619238281250034],[138.80273437499997,34.97480468749998],[138.90361328125002,35.02524414062506],[138.71962890625,35.12407226562502],[138.18906250000012,34.596337890624994],[137.543359375,34.66420898437505],[137.06171875000004,34.58281249999999],[137.27519531250002,34.77250976562499],[136.96328125000005,34.83491210937501],[136.87128906250004,34.733105468749955],[136.89707031250006,35.03554687500002],[136.80419921874997,35.05029296875],[136.53300781250007,34.678369140624994],[136.8802734375,34.43359375000006],[136.8537109375001,34.324072265625034],[136.32988281250007,34.17685546875006],[135.91621093750004,33.561718749999955],[135.69531250000003,33.48696289062502],[135.4528320312501,33.55336914062505],[135.12792968749997,34.006982421874994],[135.10009765624997,34.288378906250045],[135.41591796875,34.61748046875002],[134.74003906250007,34.765234375],[134.246875,34.71386718750003],[133.96826171874997,34.52729492187504],[133.14238281250002,34.30244140624998],[132.65654296875007,34.24609375000003],[132.31259765625006,34.32495117187503],[132.14648437499997,33.83876953125002],[131.74052734375007,34.05205078125002],[130.91884765625,33.97573242187502],[130.88925781250012,34.261816406250034],[131.00419921875007,34.39257812500003],[131.35439453125,34.41318359375006],[132.92294921875006,35.511279296875045],[133.98125,35.50722656250002],[135.17431640625003,35.74707031250003],[135.32695312500002,35.52553710937502],[135.68027343750006,35.503125],[135.903125,35.60688476562498],[136.09531250000006,35.767626953125045],[136.06748046875006,36.11684570312505],[136.69814453125005,36.742041015625034],[136.84345703125004,37.38212890624999],[137.32265625,37.52207031249998],[136.89990234375003,37.11767578125],[137.01669921875006,36.83720703124999],[137.24628906250004,36.753173828125],[137.5140625,36.95156250000002],[138.31992187500012,37.21840820312502],[138.88505859375007,37.84394531250001],[139.36386718750006,38.09902343750002],[139.80195312500004,38.881591796875],[140.06474609375002,39.624414062499994],[139.99472656250006,39.855078125],[139.74150390625002,39.92084960937498],[140.01113281250005,40.26035156250006],[139.92285156250003,40.59843750000002],[140.28125,40.84609375000002],[140.3444335937501,41.203320312499955],[140.62763671875004,41.195410156250034],[140.74863281250012,40.830322265625],[140.93603515625003,40.940771484375034],[141.1185546875,40.88227539062501],[141.24423828125006,41.20561523437499],[140.80058593750002,41.138818359374966],[140.80185546875012,41.253662109375],[140.9369140625,41.50556640624998],[141.22929687500007,41.37265625]]],[[[139.48125,42.08100585937498],[139.43134765625004,42.19956054687498],[139.55839843750002,42.235205078125034],[139.48125,42.08100585937498]]],[[[141.29541015625003,45.11933593750001],[141.14531250000002,45.153906250000034],[141.19375,45.24785156249999],[141.29541015625003,45.11933593750001]]],[[[141.07275390624997,45.33286132812498],[141.03398437500007,45.26933593750002],[140.97167968749997,45.465478515624994],[141.07275390624997,45.33286132812498]]],[[[143.82431640625012,44.11699218749999],[144.71523437500005,43.92797851562503],[145.36953125000005,44.32739257812506],[145.13964843750003,43.6625],[145.34082031249997,43.30253906249999],[145.83300781249997,43.38593750000001],[144.92138671874997,43.00092773437498],[143.96933593750006,42.88139648437499],[143.42949218750002,42.41889648437498],[143.2365234375001,42.000195312499955],[141.85136718750007,42.57905273437501],[141.40664062500005,42.54692382812496],[140.98613281250002,42.34213867187498],[140.70976562500002,42.555615234374955],[140.48046875000003,42.559375],[140.32666015625003,42.29335937499999],[141.15097656250012,41.80507812499999],[140.99951171874997,41.73740234375006],[140.65986328125004,41.815576171874994],[140.3849609375001,41.51928710937503],[140.08515625000004,41.43408203125],[139.99531250000004,41.57641601562503],[140.10839843749997,41.912939453125034],[139.83544921874997,42.278076171875],[139.86015625000002,42.58173828125004],[140.43222656250012,42.95410156250006],[140.39238281250002,43.303125],[141.13818359374997,43.17993164062506],[141.37412109375006,43.279638671875006],[141.7609375000001,44.482519531250034],[141.58300781250003,45.15595703125001],[141.66796874999997,45.401269531249966],[141.93769531250004,45.509521484375],[142.88476562499997,44.670117187499955],[143.82431640625012,44.11699218749999]]]]},"properties":{"name":"Japan","childNum":28}},{"geometry":{"type":"Polygon","coordinates":[[[77.04863281249999,35.109912109374996],[76.927734375,35.346630859375],[76.88222656250002,35.4357421875],[76.81279296874999,35.571826171874996],[76.76689453124999,35.66171875],[76.87890625,35.61328125],[77.09003906250001,35.552050781249996],[77.29482421875002,35.508154296875],[77.44648437500001,35.4755859375],[77.57255859374999,35.471826171874994],[77.72402343750002,35.48056640625],[77.79941406250003,35.495898437499996],[77.42343750000003,35.302587890625],[77.16855468750003,35.171533203124994],[77.04863281249999,35.109912109374996]]]},"properties":{"name":"Siachen Glacier","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[50.184472656249994,44.854638671874994],[49.99511718750003,44.93696289062498],[50.10986328124997,45.08193359375002],[50.038867187500074,44.949121093749966],[50.184472656249994,44.854638671874994]]],[[[87.32285156250012,49.085791015625006],[86.8083007812501,49.04970703125002],[86.54941406250012,48.52861328125002],[85.7494140625,48.38505859374999],[85.52597656250006,47.915625],[85.65664062500005,47.254638671875],[85.484765625,47.06352539062496],[84.78613281249997,46.83071289062505],[84.66660156250006,46.97236328125004],[84.016015625,46.97050781250002],[83.02949218750004,47.18593750000002],[82.31523437500002,45.59492187499998],[82.61162109375007,45.424267578124955],[82.52148437500003,45.12548828125],[82.26660156249997,45.21909179687498],[81.94492187500006,45.16083984375001],[81.69199218750012,45.34936523437497],[80.05917968750012,45.006445312500006],[79.871875,44.88378906249997],[80.48154296875006,44.71464843749999],[80.35527343750002,44.09726562500006],[80.78574218750006,43.16157226562504],[80.39023437500006,43.043115234374966],[80.53896484375005,42.873486328124955],[80.20224609375012,42.73447265624998],[80.209375,42.190039062500006],[80.07128906249997,42.302978515625],[79.92109375000004,42.41313476562496],[79.49013671875,42.45756835937496],[79.42822265624997,42.483496093750006],[79.20302734375005,42.66601562499997],[79.16484375000007,42.759033203125],[79.1266601562501,42.775732421875034],[76.98808593750007,42.97358398437501],[76.64648437500003,42.928808593750034],[76.50917968750005,42.91889648437498],[75.9322265625,42.92851562499999],[75.84033203125003,42.9375],[75.78955078124997,42.93291015624999],[75.68173828125,42.83046875],[75.04765625000007,42.904394531250034],[74.20908203125006,43.24038085937502],[73.88603515625002,43.132568359375],[73.55625,43.002783203125006],[73.45019531249997,42.703027343749966],[73.421875,42.59350585937503],[73.49296875000007,42.409033203125034],[73.41162109375003,42.41977539062498],[73.316015625,42.46699218750001],[73.2829101562501,42.50410156250004],[72.85507812500006,42.561132812500006],[72.75292968750003,42.63789062500001],[72.54316406250004,42.67773437500006],[72.27578125,42.757666015625006],[71.76054687500002,42.82148437500004],[71.5142578125,42.766943359375006],[71.42207031250004,42.78315429687504],[71.25664062500002,42.733544921874966],[70.89287109375007,42.339990234374994],[70.94677734374997,42.24868164062505],[69.15361328125002,41.42524414062498],[68.58408203125,40.876269531250045],[68.57265625,40.62265624999998],[68.29189453125,40.656103515625034],[68.04765625000007,40.80927734374998],[68.11308593750007,41.02861328124999],[67.9357421875001,41.19658203125002],[66.70966796875004,41.17915039062501],[66.49863281250006,41.99487304687503],[66.00957031250007,42.00488281250003],[66.1002929687501,42.99082031249998],[65.80302734375002,42.87695312500006],[65.49619140625,43.310546875],[64.9054687500001,43.714697265625006],[64.44316406250007,43.55117187499999],[63.20703125000003,43.62797851562502],[61.99023437500003,43.492138671874955],[61.007910156250006,44.39379882812497],[58.555273437500006,45.55537109375001],[55.97568359375006,44.99492187499996],[55.97744140625005,41.32221679687504],[55.434375,41.296289062499994],[54.85380859375002,41.965185546875006],[54.120996093749994,42.335205078125],[53.0558593750001,42.14775390624999],[52.4938476562501,41.780371093750034],[52.59658203125005,42.760156249999966],[51.898242187500074,42.86962890624997],[51.61601562500002,43.15844726562503],[51.29541015624997,43.17412109375002],[51.30175781249997,43.48237304687501],[50.8307617187501,44.192773437499966],[50.331152343750006,44.32548828125002],[50.25292968749997,44.461523437500006],[50.409472656250074,44.6240234375],[51.543554687500006,44.53100585937506],[51.009375,44.92182617187501],[51.4157226562501,45.35786132812501],[53.20039062500004,45.33198242187498],[52.77382812499999,45.57275390625],[53.13525390625003,46.19165039062497],[53.069433593750006,46.85605468750006],[52.48320312500002,46.99067382812504],[52.13828125,46.82861328124997],[51.178027343750074,47.110156250000045],[49.886328125,46.59565429687504],[49.347460937500074,46.51914062499998],[49.232226562500074,46.33715820312503],[48.54121093750004,46.60561523437502],[48.558398437500074,46.75712890624999],[48.959375,46.77460937499998],[48.16699218750003,47.70878906249996],[47.48193359374997,47.80390624999998],[47.292382812499994,47.74091796875004],[47.06464843750004,48.23247070312499],[46.660937500000074,48.41225585937502],[46.70263671875003,48.80556640625002],[47.031347656250006,49.150292968749994],[46.80205078125002,49.36708984375002],[46.889550781249994,49.69697265625001],[47.42919921874997,50.35795898437502],[47.7057617187501,50.37797851562502],[48.33496093750003,49.858251953125006],[48.7589843750001,49.92832031250006],[48.625097656250006,50.61269531250005],[49.32343750000004,50.851708984374966],[49.49804687500003,51.08359375000006],[50.246875,51.28950195312498],[50.79394531249997,51.729199218749955],[51.16347656250005,51.6474609375],[51.344531250000074,51.47534179687503],[52.21914062499999,51.709375],[52.57119140625005,51.481640624999955],[53.33808593750004,51.48237304687504],[54.139746093750006,51.04077148437503],[54.555273437500006,50.535791015624994],[54.64160156250003,51.011572265625034],[55.68623046875004,50.582861328125006],[56.49140625000004,51.01953124999997],[57.01171874999997,51.06518554687503],[57.44218750000002,50.88886718749998],[57.83886718750003,51.091650390625006],[58.359179687500074,51.063818359375034],[58.88369140625005,50.694433593750006],[59.4523437500001,50.62041015625002],[59.523046875,50.492871093749955],[59.812402343749994,50.58203125],[60.05859374999997,50.850292968749955],[60.42480468749997,50.67915039062498],[60.94228515625005,50.69550781250004],[61.38945312500002,50.86103515625001],[61.55468750000003,51.32460937500005],[60.464746093749994,51.651171875000045],[60.03027343749997,51.93325195312505],[60.99453125000005,52.33686523437504],[60.77441406249997,52.67578124999997],[61.047460937500006,52.97246093750002],[62.08271484375004,53.00541992187499],[61.65986328125004,53.22846679687504],[61.19921874999997,53.28715820312502],[61.22890625,53.445898437500006],[61.53496093750002,53.52329101562506],[60.97949218749997,53.62172851562505],[61.231054687500006,54.01948242187498],[61.92871093750003,53.94648437500004],[64.46123046875002,54.38417968750002],[65.08837890624997,54.340185546875034],[65.476953125,54.62329101562497],[68.15585937500006,54.97670898437505],[68.20625,55.16093750000002],[68.9772460937501,55.389599609374955],[70.18242187500002,55.162451171875034],[70.73808593750007,55.30517578125],[71.18554687500003,54.59931640624998],[71.09316406250005,54.21220703124999],[72.00449218750006,54.20566406249998],[72.18603515625003,54.32563476562501],[72.44677734375003,53.94184570312498],[72.62226562500004,54.13432617187502],[73.22988281250005,53.957812500000045],[73.71240234375003,54.04238281250002],[73.30566406250003,53.707226562499955],[73.40693359375004,53.44755859374999],[73.85898437500006,53.61972656249998],[74.35156250000003,53.487646484375006],[74.45195312500007,53.64726562500002],[75.22021484374997,53.89379882812506],[75.43720703125004,54.08964843749999],[76.8373046875,54.4423828125],[76.65458984375007,54.14526367187503],[76.42167968750007,54.151513671874966],[76.48476562500005,54.02255859374998],[77.85996093750006,53.269189453124994],[79.98623046875,50.774560546874966],[80.42363281250002,50.94628906249997],[80.44804687500002,51.18334960937503],[80.73525390625,51.29340820312498],[81.12724609375002,51.19106445312502],[81.0714843750001,50.96875],[81.38828125000006,50.95649414062501],[81.46591796875006,50.73984375],[82.49394531250007,50.72758789062499],[82.76083984375012,50.89335937500002],[83.35732421875005,50.99458007812504],[83.94511718750007,50.774658203125],[84.32324218749997,50.239160156249966],[84.9894531250001,50.061425781249994],[85.2326171875001,49.61582031249998],[86.1808593750001,49.49931640624996],[86.67548828125004,49.77729492187501],[86.62646484374997,49.56269531250001],[87.32285156250012,49.085791015625006]]]]},"properties":{"name":"Kazakhstan","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[35.325292968750006,5.364892578124994],[35.745019531249994,5.343994140625],[35.80029296874997,5.156933593749983],[35.77929687499997,5.105566406250006],[35.756152343750074,4.950488281250031],[35.76308593750005,4.808007812500051],[36.02197265625003,4.468115234374991],[36.90556640625002,4.411474609374991],[37.15458984375002,4.254541015624994],[37.944921875,3.746728515625023],[38.0861328125001,3.648828124999966],[38.22529296875004,3.61899414062502],[38.45156250000005,3.604833984374977],[38.608007812500006,3.600097656249986],[39.49443359375002,3.45610351562496],[39.65751953125002,3.577832031249983],[39.79033203125002,3.754248046875034],[39.8421875,3.851464843750037],[40.765234375,4.273046875000034],[41.02080078125002,4.057470703124991],[41.22089843750004,3.943554687499969],[41.372460937499994,3.94619140624998],[41.48193359375003,3.96328125],[41.737695312499994,3.979052734375003],[41.88398437500004,3.977734375000011],[41.6134765625001,3.59047851562498],[41.34179687499997,3.20166015625],[40.964453125,2.814648437500026],[40.9787109375001,-0.870312500000011],[41.249804687500074,-1.220507812499946],[41.4269531250001,-1.449511718749974],[41.521875,-1.572265625000028],[41.53271484374997,-1.695312499999957],[41.26748046875005,-1.945019531250026],[40.889746093750006,-2.023535156250034],[40.89824218750002,-2.269921874999966],[40.64414062500006,-2.53945312499998],[40.22246093750002,-2.688378906250037],[40.1154296875001,-3.250585937499991],[39.8609375,-3.576757812500006],[39.49091796875004,-4.478417968750023],[39.221777343750006,-4.692382812500014],[37.608203125000074,-3.497070312500028],[37.643847656250074,-3.045410156250028],[33.90322265625005,-1.002050781250034],[33.94316406250002,0.173779296874969],[34.160937500000074,0.605175781250026],[34.4108398437501,0.867285156250034],[34.48173828125002,1.042138671875051],[34.79863281250002,1.24453125],[34.976464843749994,1.719628906250051],[34.97753906249997,1.861914062499991],[34.9640625000001,2.06240234374998],[34.8830078125001,2.417919921875026],[34.90576171875003,2.4796875],[34.44785156250006,3.163476562500037],[34.40722656249997,3.357519531250034],[34.39941406249997,3.412695312500006],[34.44179687499999,3.60625],[34.43769531250004,3.650585937499969],[34.392871093750074,3.691503906250048],[34.26708984375003,3.733154296875],[34.16503906250003,3.812988281250014],[34.18574218750004,3.869775390625037],[34.13203125000004,3.889160156249986],[33.97607421874997,4.220214843750028],[34.176855468750006,4.419091796875037],[34.38017578125002,4.620654296874974],[34.6398437500001,4.875488281250028],[34.878320312499994,5.109570312500026],[35.08447265624997,5.31186523437502],[35.268359375000074,5.492285156250006],[35.325292968750006,5.364892578124994]]]},"properties":{"name":"Kenya","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[72.63994140625002,39.385986328125],[72.22998046875,39.20751953125],[72.14736328125002,39.2607421875],[72.08417968750001,39.31064453125],[72.04277343750002,39.3521484375],[71.77861328125002,39.277978515624994],[71.73222656250002,39.422998046874994],[71.50332031250002,39.478808593749996],[71.51738281250002,39.553857421874994],[71.50302734375,39.582177734374994],[71.4703125,39.603662109374994],[70.79931640625,39.3947265625],[70.50117187500001,39.587353515625],[69.29765625000002,39.524804687499994],[69.2447265625,39.827099609375],[69.27880859375,39.917773437499996],[69.3072265625,39.968554687499996],[69.36542968750001,39.947070312499996],[69.43193359375002,39.909765625],[69.47626953125001,39.919726562499996],[69.47099609375002,39.990625],[69.46875,40.020751953125],[69.966796875,40.20224609375],[70.59921875,39.974511718749994],[70.990625,40.2548828125],[71.3046875,40.286914062499996],[71.69248046875,40.15234375],[72.13125,40.438623046874994],[72.3892578125,40.427392578124994],[72.40205078125001,40.578076171875],[72.6041015625,40.525439453124996],[73.13212890625002,40.82851562499999],[72.65830078125,40.869921875],[72.36406250000002,41.04345703125],[72.294921875,41.039941406249994],[72.21308593750001,41.0142578125],[72.18730468750002,41.025927734374996],[72.18095703125002,41.118457031249996],[72.16425781250001,41.173730468749994],[72.11542968750001,41.186572265624996],[72.05244140625001,41.16474609375],[71.95849609375,41.187060546874996],[71.87861328125001,41.19501953125],[71.8580078125,41.311376953125],[71.79248046875,41.413134765624996],[71.75771484375002,41.428027343749996],[71.70068359375,41.454003906249994],[71.66494140625002,41.5412109375],[71.6375,41.5341796875],[71.60224609375001,41.503271484375],[71.60625,41.367431640625],[71.54560546875001,41.308056640625],[71.5,41.307470703125],[71.4208984375,41.34189453125],[71.40839843750001,41.136035156249996],[71.39306640625,41.123388671875],[71.11074218750002,41.152636718749996],[70.86044921875,41.224902343749996],[70.734375,41.400537109374994],[70.18095703125002,41.571435546874994],[70.85664062500001,42.030810546874996],[71.0322265625,42.077783203124994],[71.228515625,42.162890625],[71.23232421875002,42.186279296875],[71.21269531250002,42.206445312499994],[71.12998046875,42.25],[71.03603515625002,42.28466796875],[70.97900390625,42.266552734375],[70.94677734375,42.248681640624994],[70.89287109375002,42.339990234374994],[71.25664062500002,42.733544921874994],[71.42207031250001,42.783154296875],[71.5142578125,42.766943359375],[71.76054687500002,42.821484375],[72.16181640625001,42.760693359375],[72.27578125000002,42.757666015625],[72.54316406250001,42.677734375],[72.7529296875,42.637890625],[72.855078125,42.5611328125],[73.28291015625001,42.5041015625],[73.316015625,42.4669921875],[73.41162109375,42.419775390625],[73.49296875000002,42.409033203125],[73.421875,42.593505859375],[73.4501953125,42.703027343749994],[73.55625,43.002783203125],[73.88603515625002,43.132568359375],[74.20908203125,43.240380859374994],[75.04765625000002,42.90439453125],[75.68173828125,42.83046875],[75.78955078125,42.932910156249996],[75.84033203125,42.9375],[75.9322265625,42.928515625],[76.50917968750002,42.918896484375],[76.646484375,42.92880859375],[76.98808593749999,42.973583984375],[79.12666015625001,42.775732421875],[79.20302734375002,42.666015625],[79.29550781250003,42.604833984375],[79.36777343750003,42.547216796875],[79.42822265625,42.48349609375],[79.92109375000001,42.413134765624996],[80.0712890625,42.302978515625],[80.209375,42.1900390625],[80.24619140625003,42.059814453125],[80.23515624999999,42.04345703125],[80.21621093750002,42.032421875],[79.90966796875,42.014990234375],[79.84042968750003,41.995751953124994],[79.76611328125,41.898876953125],[78.74257812500002,41.56005859375],[78.54316406250001,41.4595703125],[78.44287109375,41.417529296874996],[78.36240234375003,41.371630859374996],[78.34628906250003,41.2814453125],[78.12343750000002,41.075634765625],[77.95644531250002,41.050683593749994],[77.81523437499999,41.055615234375],[77.71933593750003,41.024316406249994],[77.58173828125001,40.9927734375],[76.98662109374999,41.03916015625],[76.90771484375,41.024169921875],[76.82402343749999,40.982324218749994],[76.70839843750002,40.818115234375],[76.6611328125,40.779638671875],[76.63984375000001,40.742236328124996],[76.62216796875003,40.662353515625],[76.57792968749999,40.577880859375],[76.48017578125001,40.449511718749996],[76.39638671875002,40.389794921874994],[76.31855468750001,40.35224609375],[76.25830078125,40.43076171875],[75.87197265625002,40.30322265625],[75.67714843750002,40.305810546874994],[75.55556640625002,40.6251953125],[75.52080078125002,40.6275390625],[75.24101562500002,40.480273437499996],[75.111328125,40.4541015625],[75.0044921875,40.449511718749996],[74.865625,40.493505859375],[74.80126953125,40.428515625],[74.83046875000002,40.32851562499999],[74.41191406250002,40.13720703125],[74.24267578125,40.092041015625],[74.08515625000001,40.07431640625],[73.99160156250002,40.043115234374994],[73.93876953125002,39.978808593749996],[73.88457031250002,39.8779296875],[73.85625,39.828662109374996],[73.83535156250002,39.800146484375],[73.83974609375002,39.762841796874994],[73.88251953125001,39.71455078125],[73.9146484375,39.606494140624996],[73.90712890625002,39.57851562499999],[73.87275390625001,39.53330078125],[73.82294921875001,39.48896484375],[73.71572265625002,39.462255859375],[73.63164062500002,39.448876953124994],[73.47041015625001,39.460595703124994],[73.38740234375001,39.442724609375],[73.33613281250001,39.412353515625],[73.2349609375,39.374560546874996],[73.10927734375002,39.3619140625],[72.63994140625002,39.385986328125]],[[70.66416015625,39.85546875],[70.56708984375001,39.866601562499994],[70.49775390625001,39.882421875],[70.48281250000002,39.882714843749994],[70.4892578125,39.863037109375],[70.5595703125,39.790917968749994],[70.61210937500002,39.786767578124994],[70.70166015625,39.82529296875],[70.66416015625,39.85546875]],[[71.20615234375,39.892578125],[71.22871093750001,40.048144531249996],[71.08037109375002,40.079882812499996],[71.02412109375001,40.149169921875],[71.00546875,40.152294921875],[70.96064453125001,40.08798828125],[71.04482421875002,39.992529296875],[71.04365234375001,39.976318359375],[71.01171875,39.8951171875],[71.06425781250002,39.884912109374994],[71.15625,39.883447265624994],[71.20615234375,39.892578125]]]},"properties":{"name":"Kyrgyzstan","childNum":3}},{"geometry":{"type":"Polygon","coordinates":[[[104.42636718750006,10.411230468749991],[103.87050781250005,10.655126953125034],[103.58710937500004,10.552197265625026],[103.54042968750005,10.668701171875043],[103.721875,10.890136718750043],[103.5324218750001,11.146679687499997],[103.35361328125006,10.921582031250054],[103.15283203124997,10.913720703125051],[103.12548828124997,11.460644531250011],[102.9486328125,11.773486328124974],[102.93388671875002,11.706689453125037],[102.73662109375007,12.089794921875011],[102.75566406250002,12.42626953125],[102.49960937500012,12.669970703125003],[102.33632812500005,13.560302734375014],[102.546875,13.585693359375043],[102.90927734375006,14.136718750000028],[103.19941406250004,14.332617187499977],[104.77900390625004,14.427832031250006],[105.07412109375005,14.227441406250037],[105.12597656250003,14.280957031250011],[105.16914062500004,14.336083984374966],[105.1833007812501,14.346240234374989],[105.18554687500003,14.319091796874972],[105.20703125000003,14.259375],[105.24570312500006,14.200537109374977],[105.35019531250006,14.109570312500011],[105.53154296875007,14.156152343749994],[105.73974609375003,14.084960937500057],[105.83144531250005,13.976611328125003],[105.9044921875001,13.924511718750054],[106.06679687500005,13.921191406250003],[106.12470703125004,14.049121093750031],[106.09667968749997,14.127099609375023],[106.00410156250004,14.262890624999983],[105.97890625,14.343017578125043],[106.00839843750012,14.357177734375],[106.1652343750001,14.372363281249989],[106.19072265625007,14.388134765624997],[106.22539062500002,14.476220703125009],[106.26796875,14.466210937500009],[106.35498046875003,14.454785156249997],[106.44697265625004,14.515039062500009],[106.50146484375003,14.578222656250006],[106.53115234375005,14.549414062499991],[106.5636718750001,14.505078125000026],[106.59921875000006,14.479394531250037],[106.66542968750005,14.441308593749994],[106.73818359375005,14.387744140625017],[106.78349609375002,14.335107421875037],[106.81992187500006,14.314697265625057],[106.91318359375006,14.329394531250031],[106.93808593750006,14.327343750000054],[106.99218750000003,14.391015624999966],[107.03017578125,14.425683593750009],[107.06240234375,14.415771484375043],[107.109375,14.416699218750054],[107.29267578125004,14.592382812500048],[107.37988281250003,14.555322265625051],[107.41474609375004,14.56289062499999],[107.51943359375005,14.705078125],[107.3314453125,14.126611328125009],[107.60546874999997,13.437792968750017],[107.47539062500002,13.030371093749963],[107.50644531250006,12.364550781250031],[107.39335937500002,12.260498046874972],[107.21210937500004,12.30400390624996],[106.70009765625,11.979296874999974],[106.41386718750002,11.9484375],[106.39921875000007,11.687011718750028],[106.0060546875001,11.758007812500011],[105.85146484375005,11.635009765625],[105.85605468750006,11.294287109375048],[106.16093750000002,11.037109375000057],[106.16396484375005,10.794921875],[105.85332031250007,10.86357421874996],[105.75507812500004,10.989990234375043],[105.40576171875003,10.95161132812504],[105.3146484375001,10.845166015625026],[105.04570312500002,10.911376953125014],[105.04638671874997,10.701660156250014],[104.85058593749997,10.534472656249974],[104.42636718750006,10.411230468749991]]]},"properties":{"name":"Cambodia","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-157.34213867187503,1.855566406250034],[-157.17578125,1.73984375],[-157.57895507812498,1.902050781249997],[-157.43583984374993,1.84726562500002],[-157.365185546875,1.94609375],[-157.44189453125003,2.025048828125009],[-157.321875,1.968554687500045],[-157.34213867187503,1.855566406250034]]],[[[-159.3390625,3.923535156249983],[-159.27475585937503,3.796582031250054],[-159.40903320312503,3.87324218750004],[-159.3390625,3.923535156249983]]]]},"properties":{"name":"Kiribati","childNum":2}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[126.32695312500002,33.2236328125],[126.16562500000012,33.31201171875],[126.33769531250002,33.46040039062501],[126.90117187500002,33.51513671874997],[126.87285156250002,33.34116210937498],[126.32695312500002,33.2236328125]]],[[[126.23369140625002,34.370507812499994],[126.12285156250002,34.443945312500034],[126.34384765625012,34.544921875],[126.23369140625002,34.370507812499994]]],[[[126.17197265625006,34.73115234375001],[126.00751953125004,34.86748046874999],[126.07841796875002,34.914843750000045],[126.17197265625006,34.73115234375001]]],[[[128.0658203125,34.80585937500004],[128.05468750000003,34.70805664062502],[127.87343750000005,34.73496093749998],[127.8322265625001,34.87451171875],[128.0658203125,34.80585937500004]]],[[[128.74101562500007,34.798535156249955],[128.64667968750004,34.73686523437502],[128.48925781250003,34.86528320312496],[128.66796875000003,35.0087890625],[128.74101562500007,34.798535156249955]]],[[[126.52070312500004,37.73681640625003],[126.516015625,37.60468750000001],[126.42333984375003,37.62363281250006],[126.41162109374997,37.82265625000002],[126.52070312500004,37.73681640625003]]],[[[128.37460937500012,38.6234375],[129.41826171875002,37.059033203124955],[129.40351562500004,36.052148437499994],[129.57285156250006,36.05053710937503],[129.4191406250001,35.49785156249996],[129.07675781250006,35.12270507812502],[128.5109375000001,35.10097656250002],[128.44394531250012,34.87036132812503],[128.03623046875006,35.02197265625],[127.71484374999997,34.95468749999998],[127.71542968750012,34.72104492187498],[127.40429687499997,34.823095703125006],[127.47910156250012,34.625244140625],[127.324609375,34.463281249999966],[127.17343750000006,34.54614257812497],[127.24707031249997,34.755126953125],[126.89746093749997,34.438867187499966],[126.75478515625005,34.511865234374994],[126.53144531250004,34.31425781249999],[126.26445312500002,34.67324218750002],[126.52451171875006,34.697900390624966],[126.59335937500012,34.824365234374994],[126.42070312500002,34.823388671874966],[126.29111328125012,35.154150390625034],[126.61406250000007,35.57099609375004],[126.4884765625001,35.647070312500006],[126.75302734375006,35.871972656249994],[126.5404296875,36.166162109374966],[126.4876953125,36.69379882812498],[126.18085937500004,36.69160156249998],[126.16054687500005,36.77192382812501],[126.48701171875004,37.00747070312502],[126.78447265625007,36.94843749999998],[126.87207031249997,36.82446289062506],[126.97685546875002,36.93940429687501],[126.74638671875002,37.19355468750001],[126.63388671875012,37.78183593750006],[127.09033203125003,38.28388671875001],[128.03896484375,38.30854492187498],[128.37460937500012,38.6234375]]]]},"properties":{"name":"Korea","childNum":7}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[48.27539062499997,29.624316406250017],[48.17968750000003,29.611425781250063],[48.081445312499994,29.798925781250063],[48.1847656250001,29.978857421875034],[48.348242187500006,29.78266601562504],[48.27539062499997,29.624316406250017]]],[[[48.442480468750006,28.542919921874983],[47.671289062499994,28.53315429687504],[47.433203125,28.989550781250017],[46.53144531250004,29.09624023437499],[46.69375,29.259667968749966],[46.76933593750002,29.347460937500017],[46.90585937500006,29.5375],[47.14824218750002,30.0009765625],[47.64375,30.097314453125023],[47.75390624999997,30.076611328124955],[47.97871093750004,29.98281250000005],[48.00566406250002,29.835791015625034],[48.143457031249994,29.57246093750001],[47.96962890625005,29.61669921874997],[47.72265624999997,29.393017578124955],[48.0514648437501,29.355371093750023],[48.442480468750006,28.542919921874983]]]]},"properties":{"name":"Kuwait","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[102.12744140625011,22.37919921874999],[102.58251953125006,21.904296875000057],[102.66201171875008,21.676025390625057],[102.73857421875005,21.677929687500125],[102.77109375000015,21.70966796875001],[102.79824218750014,21.797949218750034],[102.81591796875,21.807373046875],[102.94960937500008,21.681347656250068],[102.85117187500009,21.26591796874999],[102.8837890625,21.202587890625068],[103.1044921875,20.89165039062499],[103.21074218749999,20.840625],[103.46357421874995,20.779833984375102],[103.6350585937501,20.697070312500102],[104.10136718750005,20.945507812500125],[104.1953125,20.91396484375008],[104.349609375,20.82109374999999],[104.58320312500001,20.646679687499955],[104.53271484375,20.554882812500125],[104.47861328124998,20.529589843750102],[104.40781250000015,20.485742187500023],[104.36777343750015,20.441406250000057],[104.39218750000015,20.424755859375068],[104.49619140625003,20.41367187499992],[104.61884765624995,20.374511718750114],[104.65644531250001,20.328515624999966],[104.66191406250005,20.289013671875125],[104.67695312500007,20.224707031249977],[104.69873046875006,20.205322265625114],[104.84785156250007,20.202441406250045],[104.88867187500006,20.169091796875023],[104.92919921874994,20.082812500000045],[104.92792968750007,20.01811523437499],[104.81513671875001,19.90400390625001],[104.80175781250011,19.836132812500068],[104.74316406250006,19.754736328124977],[104.58789062500006,19.61875],[104.54628906250014,19.610546875000068],[104.25986328125003,19.685498046875068],[104.06279296875005,19.678417968750068],[104.03203124999999,19.67514648437492],[104.0134765625001,19.646484374999943],[104.05156250000005,19.564160156250068],[104.06289062500002,19.482568359375136],[104.02753906250013,19.420458984375102],[103.93203125000002,19.366064453125034],[103.89638671875002,19.339990234375023],[103.89160156249994,19.30498046874999],[105.146484375,18.650976562499977],[105.14541015625014,18.616796874999977],[105.08701171875015,18.49624023437508],[105.11455078125005,18.405273437500057],[105.45820312500007,18.154296875000057],[105.51855468750011,18.077441406250045],[105.58847656250015,17.983691406249932],[105.69140625,17.737841796874932],[106.00625,17.415283203124943],[106.26953125,17.216796875000057],[106.33339843750002,17.14370117187508],[106.42597656250007,17.00253906250009],[106.50224609374999,16.9541015625],[106.52597656250003,16.876611328125023],[106.53369140625,16.821044921875057],[106.54619140625005,16.650732421874977],[106.65644531250013,16.492626953125125],[106.73955078124999,16.452539062500136],[106.79160156250015,16.490332031249977],[106.83242187500008,16.526269531250023],[106.85107421875,16.515625],[106.89277343750013,16.396533203125102],[106.93066406250006,16.353125],[107.39638671875008,16.04301757812499],[107.39199218750008,15.951660156250057],[107.36064453125005,15.921728515624977],[107.18886718750008,15.838623046875114],[107.16591796875002,15.802490234375],[107.27939453125003,15.618701171875045],[107.33876953125002,15.560498046875125],[107.56425781249999,15.3916015625],[107.62167968750015,15.309863281250045],[107.653125,15.255224609375091],[107.63369140625008,15.18984375000008],[107.58964843749999,15.118457031250102],[107.55527343750009,15.057031250000023],[107.48037109375014,14.979882812500136],[107.5046875000001,14.91591796875008],[107.52451171875003,14.871826171874943],[107.51376953124998,14.817382812500057],[107.51943359375008,14.705078125000114],[107.46513671875005,14.664990234375125],[107.41474609375007,14.56289062500008],[107.37988281250006,14.555322265625136],[107.29267578125007,14.592382812500034],[107.109375,14.416699218749955],[107.06240234375008,14.415771484374943],[107.03017578125008,14.425683593750023],[106.99218749999994,14.39101562500008],[106.93808593750015,14.327343750000068],[106.91318359375003,14.329394531249932],[106.81992187500003,14.314697265624943],[106.7834960937501,14.335107421875023],[106.73818359375008,14.387744140625102],[106.66542968750002,14.441308593750023],[106.59921875000003,14.479394531250136],[106.56367187500007,14.505078125000011],[106.53115234375002,14.549414062499977],[106.50146484375,14.578222656250034],[106.22539062500005,14.476220703125023],[106.1907226562501,14.388134765625011],[106.16523437500007,14.372363281249989],[106.00839843750009,14.357177734375114],[105.97890625000014,14.343017578125057],[106.00410156250013,14.262890625000068],[106.09667968750011,14.127099609375136],[106.12470703124995,14.049121093750045],[106.06679687500008,13.921191406250102],[105.90449218750007,13.924511718750068],[105.83144531250008,13.976611328124989],[105.73974609375006,14.084960937500057],[105.5315429687501,14.156152343750023],[105.35019531250009,14.109570312500125],[105.24570312500015,14.200537109374977],[105.20703125000006,14.259375],[105.18554687499994,14.319091796875],[105.18330078125001,14.346240234374989],[105.24365234375006,14.367871093749955],[105.34218750000008,14.416699218749955],[105.42265624999993,14.471630859374955],[105.47558593750006,14.530126953124977],[105.49736328125005,14.590673828125034],[105.52304687500015,14.843310546874989],[105.54667968749999,14.932470703125034],[105.53339843750013,15.041601562500091],[105.49042968750007,15.127587890625023],[105.49042968750007,15.256591796875],[105.615625,15.488281249999943],[105.63886718750013,15.585937499999943],[105.64101562500002,15.656542968749932],[105.62207031250006,15.699951171875114],[105.39892578125011,15.829882812500102],[105.40625,15.987451171875023],[105.33066406250003,16.037890625000045],[105.1487304687501,16.09355468749999],[105.04716796874999,16.16025390625009],[104.81933593749994,16.466064453125057],[104.75058593750015,16.647558593750034],[104.74355468750014,16.884375],[104.75898437500013,17.0771484375],[104.81601562499998,17.30029296875],[104.73964843750008,17.461669921875],[104.428125,17.698974609375057],[104.32265625000002,17.815820312500023],[104.19619140625002,17.988378906250034],[104.04873046875002,18.216699218749966],[103.94960937500008,18.318994140625023],[103.89882812500002,18.295312500000023],[103.79228515624999,18.31650390625009],[103.62968750000005,18.382568359375057],[103.48798828124995,18.41816406250001],[103.36699218750005,18.42333984375],[103.28828124999995,18.408398437499955],[103.25175781249999,18.373486328125125],[103.24892578125014,18.338964843750034],[103.27958984374999,18.304980468750045],[103.26318359375,18.278466796875136],[103.19970703125006,18.25947265625001],[103.14853515625009,18.221728515624932],[103.09121093750014,18.13823242187499],[103.05136718750003,18.02851562500001],[102.80742187500005,17.945556640625],[102.71757812500005,17.892236328125136],[102.67519531250014,17.851757812500068],[102.68007812500008,17.824121093750136],[102.66064453125,17.8179687499999],[102.61679687500015,17.833349609375034],[102.59824218750009,17.926757812500057],[102.55253906249999,17.965087890625057],[102.4587890625001,17.984619140624943],[102.35185546874999,18.045947265625045],[102.14824218750005,18.203857421875057],[102.10146484375014,18.21064453125001],[102.03457031250002,18.169824218750023],[101.94746093750001,18.081494140624955],[101.87548828125011,18.046435546874932],[101.81865234375005,18.064648437500125],[101.77480468750002,18.033398437500125],[101.6875,17.889404296875114],[101.56367187500001,17.820507812500125],[101.55507812500002,17.812353515625034],[101.41367187500015,17.71875],[101.16748046875011,17.4990234375],[101.10517578125001,17.479541015625102],[100.9084960937501,17.583886718750023],[101.14394531250008,18.14262695312499],[101.1375,18.286865234375057],[101.0505859375001,18.407031250000045],[101.04697265625003,18.441992187500034],[101.28632812499995,18.977148437500034],[101.19755859374999,19.327929687500045],[101.22080078125015,19.486621093750045],[101.21191406250011,19.548339843750057],[100.51357421875008,19.553466796875],[100.39765625000013,19.756103515625057],[100.51953125000006,20.177929687500068],[100.31796875000003,20.385888671875136],[100.2180664062501,20.339599609375114],[100.13974609375015,20.245410156250102],[100.11494140625007,20.25766601562492],[100.12246093750002,20.316650390625057],[100.12968750000005,20.372216796875023],[100.1838867187501,20.589111328124943],[100.2493164062501,20.730273437499932],[100.32607421875008,20.795703124999932],[100.40742187499995,20.823242187500057],[100.56513671875013,20.82509765625008],[100.62294921875002,20.85957031250001],[100.61767578125,20.87924804687509],[100.54931640625011,20.884228515625068],[100.5222656250001,20.921923828125102],[100.53613281250006,20.992382812500068],[100.703125,21.25136718750008],[101.0803710937501,21.46865234375008],[101.13886718750013,21.567480468749977],[101.19667968750002,21.522070312499977],[101.17539062500009,21.407519531250102],[101.21992187500013,21.342431640625136],[101.21181640625008,21.278222656250023],[101.22441406249999,21.22373046874992],[101.24785156249993,21.197314453125045],[101.28144531250007,21.184130859375045],[101.44355468750001,21.230810546874977],[101.54238281250008,21.234277343750136],[101.70478515625013,21.150146484375057],[101.728125,21.15639648437508],[101.78349609374999,21.204150390625045],[101.8005859375001,21.212597656249955],[101.7229492187501,21.314941406250057],[101.74726562500007,21.60576171874999],[101.7439453125001,21.77797851562508],[101.73652343750001,21.826513671874977],[101.52451171874998,22.253662109375],[101.56787109375011,22.2763671875],[101.6199218750001,22.327441406250102],[101.67148437500009,22.462304687500023],[101.70751953125,22.486572265625],[101.73876953125011,22.495263671874966],[101.75996093750001,22.490332031250034],[101.841796875,22.388476562500102],[102.02441406250006,22.439208984375114],[102.09150390625007,22.412255859375136],[102.12744140625011,22.37919921874999]]]},"properties":{"name":"Lao PDR","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[35.869140625,33.43173828125],[35.411230468750006,33.07568359375],[35.10859375000001,33.08369140625],[35.64785156250002,34.2482421875],[35.97626953125001,34.629199218749996],[36.383886718750006,34.65791015625],[36.32988281250002,34.499609375],[36.50439453125,34.432373046875],[36.5849609375,34.221240234374996],[36.27783203125,33.92529296875],[36.36503906250002,33.83935546875],[35.98613281250002,33.75263671875],[36.03447265625002,33.58505859375],[35.869140625,33.43173828125]]]},"properties":{"name":"Lebanon","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-8.486425781249977,7.558496093749994],[-8.408740234374989,7.411816406249997],[-8.324511718749989,6.920019531249991],[-8.587890625,6.490527343749989],[-8.287109375,6.319042968749997],[-7.981591796874994,6.2861328125],[-7.888623046874983,6.23486328125],[-7.800927734374994,6.038916015624991],[-7.730371093749994,5.919042968749991],[-7.636132812499994,5.90771484375],[-7.454394531249989,5.84130859375],[-7.39990234375,5.550585937499989],[-7.585058593749977,4.916748046875],[-7.574658203124983,4.572314453124989],[-7.544970703124989,4.351318359375],[-8.259033203125,4.589990234374994],[-9.132177734374977,5.054638671874997],[-10.2763671875,6.07763671875],[-11.291601562499977,6.688232421875],[-11.507519531249983,6.906542968749989],[-11.267675781249977,7.232617187499997],[-10.878076171874994,7.538232421874994],[-10.6474609375,7.759375],[-10.570849609374989,8.071142578124991],[-10.516748046874994,8.125292968749989],[-10.359814453124983,8.187939453124997],[-10.283203125,8.485156249999989],[-10.233056640624994,8.488818359374989],[-10.147412109374983,8.519726562499997],[-10.064355468749994,8.429882812499997],[-9.781982421875,8.537695312499991],[-9.518261718749983,8.34609375],[-9.369140625,7.703808593749997],[-9.463818359374983,7.415869140624991],[-9.11757812499999,7.215917968749991],[-8.8896484375,7.2626953125],[-8.659765624999977,7.688378906249994],[-8.486425781249977,7.558496093749994]]]},"properties":{"name":"Liberia","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[25.150488281250006,31.654980468749997],[24.85273437500001,31.334814453125],[24.96142578125,30.678515625],[24.703222656250006,30.201074218749994],[24.980273437500017,29.181884765625],[24.980273437500017,25.5888671875],[24.980273437500017,21.995849609375],[24.9794921875,20.002587890624994],[23.980273437500017,19.99594726562499],[23.980273437500017,19.496630859375003],[20.14765625000001,21.38925781249999],[15.984082031250011,23.445214843749994],[14.97900390625,22.99619140624999],[14.215527343750011,22.619677734375003],[13.48125,23.18017578125],[11.967871093750006,23.517871093750003],[11.507617187500017,24.314355468749994],[10.686132812500006,24.55136718749999],[10.395898437500023,24.485595703125],[10.255859375,24.591015625],[10.000683593750011,25.332080078125003],[9.4482421875,26.067138671875],[9.491406250000011,26.333740234375],[9.883203125000023,26.630810546874997],[9.74755859375,27.330859375],[9.916015625,27.785693359374996],[9.805273437500006,29.176953125],[9.310253906250011,30.115234375],[9.51875,30.229394531249994],[9.89501953125,30.3873046875],[9.932519531250023,30.425341796874996],[10.059765625000011,30.580078125],[10.21640625,30.783203125],[10.114941406250011,31.463769531249994],[10.274609375000011,31.684960937499994],[10.475781250000011,31.736035156249997],[10.60888671875,31.929541015625],[10.826367187500011,32.0806640625],[11.005175781250017,32.172705078125],[11.168261718750017,32.256738281249994],[11.358007812500006,32.34521484375],[11.504980468750006,32.413671875],[11.535937500000017,32.47333984375],[11.533789062500006,32.524951171874996],[11.453906250000017,32.642578125],[11.453906250000017,32.781689453125],[11.459179687500011,32.897363281249994],[11.467187500000023,32.965722656249994],[11.504589843750011,33.181933593749996],[11.657128906250023,33.118896484375],[11.8134765625,33.093701171875],[12.279882812500006,32.858544921874994],[12.753515625,32.801074218749996],[13.283496093750017,32.9146484375],[15.176562500000017,32.391162109374996],[15.705957031250023,31.426416015624994],[17.830468750000023,30.927587890625],[18.669824218750023,30.415673828124994],[19.12373046875001,30.26611328125],[19.713281250000023,30.48837890625],[20.11152343750001,30.963720703125],[19.926367187500006,31.817529296874994],[20.121484375000023,32.21875],[20.62109375,32.58017578125],[21.63593750000001,32.937304687499996],[22.187402343750023,32.918261718749996],[23.090625,32.61875],[23.10625,32.331445312499994],[23.28632812500001,32.213818359375],[24.129687500000017,32.009228515625],[24.878515625,31.984277343749994],[25.150488281250006,31.654980468749997]]]},"properties":{"name":"Libya","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-60.89521484375,13.821972656249997],[-60.951416015625,13.717578125],[-61.073144531249994,13.865576171874991],[-60.908105468749994,14.09335937499999],[-60.89521484375,13.821972656249997]]]},"properties":{"name":"Saint Lucia","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[79.87480468750002,9.050732421875026],[79.90371093750005,8.975],[79.74765625000006,9.104589843749991],[79.87480468750002,9.050732421875026]]],[[[79.98232421875,9.812695312500011],[80.25283203125005,9.796337890625054],[80.71113281250004,9.366357421875023],[81.226953125,8.50551757812498],[81.37285156250002,8.431445312499989],[81.42216796875007,8.147851562500023],[81.87412109375012,7.288330078124986],[81.86142578125012,6.901269531249994],[81.63740234375004,6.425146484374991],[80.72412109375003,5.97905273437496],[80.26738281250007,6.009765625],[80.09531250000012,6.153173828125006],[79.859375,6.829296874999983],[79.71298828125012,8.18232421875004],[79.74980468750007,8.294238281250003],[79.78349609375007,8.018457031250051],[79.92890625000004,8.899218749999974],[80.09960937499997,9.209960937500043],[80.08632812500005,9.577832031250026],[80.42832031250006,9.480957031250014],[80.04580078125005,9.649902343749972],[79.98232421875,9.812695312500011]]]]},"properties":{"name":"Sri Lanka","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[28.646875,-30.1265625],[28.39208984375,-30.147558593750006],[28.128710937500017,-30.52509765625001],[28.05683593750001,-30.63105468750001],[27.753125,-30.6],[27.364062500000017,-30.27919921875001],[27.19355468750001,-29.94130859375001],[27.056933593750017,-29.625585937500006],[27.29453125,-29.519335937500003],[27.73554687500001,-28.940039062500006],[27.959863281250023,-28.873339843750003],[28.084375,-28.77998046875001],[28.23261718750001,-28.701269531250006],[28.471875,-28.615820312500006],[28.583398437500023,-28.594140625],[28.625781250000017,-28.58173828125001],[29.301367187500006,-29.08984375],[29.38671875,-29.31972656250001],[29.34882812500001,-29.441992187500006],[29.293554687500006,-29.56689453125],[29.1421875,-29.700976562500003],[29.098046875000023,-29.919042968750006],[28.646875,-30.1265625]]]},"properties":{"name":"Lesotho","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[20.957812500000074,55.27890625000006],[20.89980468750008,55.286669921875045],[21.11484375,55.61650390624999],[20.957812500000074,55.27890625000006]]],[[[25.573046875000017,54.139892578125],[25.497363281250045,54.17524414062501],[25.52734375000003,54.21513671874996],[25.505664062500045,54.26494140624999],[25.46113281250004,54.29277343749996],[25.179492187500017,54.214257812499966],[25.111425781250006,54.15493164062505],[25.04609375000004,54.13305664062503],[24.869531250000023,54.14516601562502],[24.82568359374997,54.118994140625006],[24.78925781250001,53.99824218750001],[24.768164062499977,53.97465820312499],[24.31796875,53.892968749999966],[24.236621093750045,53.91997070312496],[24.19130859375005,53.95043945312503],[23.559082031250057,53.91982421875002],[23.484667968750074,53.939794921875006],[23.453613281250057,54.14345703125002],[23.3701171875,54.20048828124999],[23.282324218750063,54.240332031250034],[23.17031250000008,54.28144531249998],[23.0875,54.299462890624994],[23.042187500000068,54.30419921875],[23.01552734375005,54.34833984375001],[22.976757812500068,54.36635742187505],[22.89394531250008,54.390527343749994],[22.82373046874997,54.39580078124999],[22.766210937499977,54.356787109375034],[22.679882812500068,54.493017578125006],[22.684472656250023,54.56293945312504],[22.82470703125,54.87128906249998],[22.56728515625005,55.05913085937496],[22.072363281250034,55.06367187499998],[21.235742187500023,55.26411132812498],[21.237890625000034,55.455029296874955],[21.06191406250005,55.81342773437498],[21.053808593750006,56.02294921875003],[21.04609375000004,56.07006835937503],[21.31464843750004,56.18813476562502],[21.65351562500004,56.314550781250006],[22.084570312500034,56.40673828125006],[22.875585937500063,56.39643554687501],[22.96826171875003,56.38041992187502],[23.042968750000057,56.324072265625006],[23.119824218749983,56.330664062500006],[23.195898437500034,56.36713867187498],[24.120703125000063,56.26425781249998],[24.90302734375001,56.398193359375],[25.069921875,56.20039062500004],[25.663183593750063,56.104833984375006],[26.593554687500074,55.66752929687502],[26.590820312500057,55.62265625],[26.56660156250001,55.546484375000034],[26.51923828125004,55.448144531249994],[26.469531250000045,55.371923828125006],[26.457617187500006,55.342480468749955],[26.49531250000004,55.31801757812502],[26.68125,55.30644531249999],[26.76015625000008,55.29335937499999],[26.775683593750045,55.27309570312502],[26.601171875000034,55.130175781250045],[26.291796875000074,55.13959960937501],[26.250781250000045,55.12451171875006],[26.175195312500023,55.003271484375034],[26.092968750000068,54.96230468750005],[25.964453124999977,54.947167968749966],[25.85927734375005,54.91928710937498],[25.722460937500074,54.71787109374998],[25.731640625000068,54.59038085937502],[25.72480468750001,54.564257812500045],[25.68515625,54.53579101562502],[25.62031250000004,54.46040039062501],[25.56757812500004,54.377050781250006],[25.54736328125,54.33183593750002],[25.55751953125005,54.310693359374994],[25.702539062499994,54.29296875],[25.765234374999977,54.179785156250034],[25.573046875000017,54.139892578125]]]]},"properties":{"name":"Lithuania","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[6.4873046875,49.798486328124994],[6.344335937500006,49.452734375],[6.181054687500023,49.498925781249994],[6.119921875000017,49.485205078125],[6.074121093750023,49.454638671874996],[6.011425781250011,49.445458984374994],[5.95947265625,49.454638671874996],[5.928906250000011,49.4775390625],[5.9013671875,49.48974609375],[5.823437500000011,49.505078125],[5.789746093750011,49.53828125],[5.776710379464286,49.639953962053575],[5.744042968750023,49.91962890625],[5.7880859375,49.961230468749996],[5.8173828125,50.0126953125],[5.866894531250011,50.0828125],[5.976269531250011,50.1671875],[6.089062500000011,50.154589843749996],[6.110058593750011,50.123779296875],[6.116503906250017,50.120996093749994],[6.109765625000023,50.034375],[6.13818359375,49.97431640625],[6.204882812500017,49.91513671875],[6.272327008928583,49.887234933035714],[6.4873046875,49.798486328124994]]]},"properties":{"name":"Luxembourg","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[28.14794921875,56.142919921875],[27.576757812500006,55.798779296875],[27.052539062500017,55.83056640625],[26.593554687500017,55.667529296874996],[25.663183593750006,56.104833984375],[25.069921875,56.200390625],[24.90302734375001,56.398193359375],[24.120703125,56.2642578125],[23.81269531250001,56.329248046875],[23.195898437500006,56.367138671875],[23.11982421875001,56.3306640625],[23.04296875,56.324072265625],[22.875585937500006,56.396435546875],[22.084570312500006,56.40673828125],[21.730566406250006,56.325976562499996],[21.65351562500001,56.31455078125],[21.31464843750001,56.188134765625],[21.04609375000001,56.070068359375],[21.0712890625,56.82373046875],[21.72871093750001,57.57099609375],[22.554589843750023,57.724267578125],[23.28730468750001,57.08974609375],[23.647753906250017,56.971044921875],[24.382617187500017,57.250048828124996],[24.322558593750017,57.87060546875],[24.3625,57.866162109375],[24.458886718750023,57.907861328125],[25.11103515625001,58.063427734375],[25.27265625000001,58.009375],[25.66015625,57.920166015625],[26.29804687500001,57.60107421875],[26.532617187500023,57.531005859375],[26.96601562500001,57.609130859375],[27.187109375,57.538330078125],[27.326562500000023,57.52548828125],[27.4697265625,57.5240234375],[27.538671875,57.42978515625],[27.796875,57.316943359374996],[27.82861328125,57.293310546875],[27.838281250000023,57.247705078125],[27.83027343750001,57.194482421875],[27.639453125000017,56.845654296875],[27.806054687500023,56.86708984375],[27.8486328125,56.85341796875],[27.89208984375,56.741064453125],[28.00751953125001,56.599853515625],[28.103125,56.545703125],[28.11083984375,56.510693359375],[28.169238281250017,56.386865234375],[28.191699218750017,56.315576171875],[28.202050781250023,56.260400390625],[28.14794921875,56.142919921875]]]},"properties":{"name":"Latvia","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[28.2125,45.450439453125],[28.07470703125,45.598974609375],[28.23945312500001,46.6408203125],[28.07177734375,46.978417968749994],[27.614062500000017,47.34052734375],[26.980761718750017,48.155029296875],[26.618945312500017,48.25986328125],[26.640429687500017,48.294140625],[26.847070312500023,48.387158203125],[26.90058593750001,48.371923828125],[27.228515625,48.371435546875],[27.549218750000023,48.477734375],[28.34052734375001,48.144433593749994],[28.42304687500001,48.146875],[29.125390625000023,47.96455078125],[29.134863281250006,47.489697265625],[29.455664062500006,47.292626953124994],[29.57197265625001,46.964013671874994],[29.7197265625,46.88291015625],[29.877832031250023,46.82890625],[29.942480468750006,46.723779296874994],[29.93476562500001,46.625],[29.92431640625,46.538867187499996],[30.13105468750001,46.423095703125],[30.07568359375,46.377832031249994],[29.878027343750006,46.360205078125],[29.837890625,46.350537109375],[29.458789062500017,46.453759765624994],[29.30488281250001,46.466601562499996],[29.22382812500001,46.376953125],[29.20458984375,46.379345703125],[29.20078125,46.50498046875],[29.18623046875001,46.523974609374996],[29.146289062500017,46.526904296874996],[28.958398437500023,46.45849609375],[28.92744140625001,46.424121093749996],[28.930566406250023,46.362255859375],[28.94375,46.288427734375],[29.00625,46.17646484375],[28.971875,46.12763671875],[28.94775390625,46.049951171874994],[28.849511718750023,45.978662109374994],[28.73876953125,45.937158203124994],[28.729296875000017,45.852001953125],[28.667578125,45.793847656249994],[28.562304687500017,45.735791015625],[28.491601562500023,45.665771484375],[28.4990234375,45.517724609374994],[28.310351562500017,45.498583984374996],[28.26484375000001,45.48388671875],[28.2125,45.450439453125]]]},"properties":{"name":"Moldova","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[49.936425781249994,-16.90292968750002],[49.82402343750002,-17.08652343750002],[50.02304687500006,-16.6953125],[49.936425781249994,-16.90292968750002]]],[[[48.3421875,-13.363867187500034],[48.21191406250003,-13.385253906249957],[48.191210937500074,-13.259960937500011],[48.308886718750074,-13.198242187499957],[48.3421875,-13.363867187500034]]],[[[49.53828125000004,-12.432128906250014],[49.9375,-13.072265624999957],[50.23535156249997,-14.732031249999963],[50.482714843750074,-15.385644531249994],[50.20898437499997,-15.960449218750028],[50.02041015625005,-15.801757812500028],[49.89257812500003,-15.457714843750011],[49.664355468750074,-15.521582031249977],[49.83906250000004,-16.486523437499997],[49.76718750000006,-16.815136718749983],[49.44931640625006,-17.240625],[49.477832031250074,-17.89853515624999],[49.362890625,-18.336328125],[47.934472656249994,-22.393945312500023],[47.55800781250005,-23.874609374999963],[47.17734375,-24.787207031249977],[46.72851562499997,-25.14990234374997],[46.15869140624997,-25.230371093750023],[45.5080078125001,-25.56318359374997],[45.2057617187501,-25.57050781250004],[44.0353515625001,-24.995703125],[43.670019531250006,-24.30029296875],[43.722265625,-23.529687500000037],[43.2648437500001,-22.38359375],[43.29052734374997,-21.93251953124998],[43.50185546875005,-21.356445312499957],[43.800195312499994,-21.179199218749986],[44.40468750000005,-19.922070312500026],[44.44882812500006,-19.42871093749997],[44.23876953124997,-19.075195312499986],[44.23310546875004,-18.740625],[44.04003906249997,-18.288476562500023],[43.979394531249994,-17.3916015625],[44.42138671874997,-16.70263671874997],[44.476171875,-16.217285156249957],[44.90917968749997,-16.174511718750026],[45.2228515625001,-15.95048828124996],[45.3421875,-16.03671875000002],[45.598242187500006,-15.992578125],[45.70019531249997,-15.813769531249989],[46.157519531250074,-15.738281249999972],[46.3996093750001,-15.924609375000017],[46.331445312499994,-15.713671875000031],[46.47509765625003,-15.513476562500003],[46.942285156249994,-15.219042968749974],[47.09921875,-15.43417968750002],[47.092578125000074,-15.150097656249969],[47.35195312500005,-14.766113281249986],[47.46474609375005,-14.713281249999966],[47.47832031250002,-15.009375],[47.77402343750006,-14.63671875],[47.964160156250074,-14.672558593750026],[47.773339843749994,-14.369921875],[47.995507812499994,-13.960449218749986],[47.88359375000002,-13.807519531250009],[47.94101562500006,-13.662402343750017],[48.03984375000002,-13.596289062499963],[48.25527343750005,-13.719335937499977],[48.796484375,-13.267480468750023],[48.91943359375003,-12.839062499999969],[48.78632812500004,-12.470898437500011],[48.931738281250006,-12.4390625],[49.20703124999997,-12.079589843749957],[49.53828125000004,-12.432128906250014]]]]},"properties":{"name":"Madagascar","childNum":3}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-91.68369140624998,18.677343750000034],[-91.81611328124995,18.675878906250006],[-91.53671874999998,18.760009765625],[-91.68369140624998,18.677343750000034]]],[[[-86.93964843750001,20.303320312500006],[-86.97797851562498,20.489794921875074],[-86.76328124999995,20.579052734374955],[-86.93964843750001,20.303320312500006]]],[[[-106.50224609374999,21.61083984375003],[-106.60703124999993,21.561474609374983],[-106.63935546874995,21.697851562499977],[-106.50224609374999,21.61083984375003]]],[[[-110.56738281249994,25.003466796875017],[-110.5388671875,24.89155273437504],[-110.69926757812499,25.081445312499994],[-110.56738281249994,25.003466796875017]]],[[[-112.05727539062498,24.545703125000017],[-112.29677734375002,24.789648437500063],[-112.15942382812501,25.28564453125003],[-112.19501953124998,24.841064453125057],[-112.05727539062498,24.545703125000017]]],[[[-111.10029296874998,26.020605468750006],[-111.224658203125,25.83588867187504],[-111.18291015625002,26.040625],[-111.10029296874998,26.020605468750006]]],[[[-115.17060546875001,28.06938476562496],[-115.35292968750002,28.103955078124983],[-115.23354492187495,28.36835937500004],[-115.17060546875001,28.06938476562496]]],[[[-112.20307617187503,29.00532226562504],[-112.27841796875,28.769335937500017],[-112.51406249999997,28.847607421874955],[-112.42353515625,29.203662109375017],[-112.28505859374994,29.240429687499955],[-112.20307617187503,29.00532226562504]]],[[[-113.15561523437502,29.05224609375],[-113.49633789062497,29.30761718749997],[-113.58720703125002,29.57304687499996],[-113.20214843749999,29.301855468750034],[-113.15561523437502,29.05224609375]]],[[[-97.14624023437494,25.961474609375045],[-97.66767578124995,24.389990234374977],[-97.84248046874995,22.510302734375017],[-97.76328124999998,22.105859374999966],[-97.31450195312496,21.56420898437503],[-97.40917968749997,21.272558593750034],[-97.38344726562497,21.56669921874999],[-97.75380859375002,22.02666015624999],[-97.18632812499996,20.717041015625],[-96.45605468749994,19.869775390624966],[-96.28955078124994,19.34375],[-95.778125,18.805517578125034],[-95.92036132812495,18.81958007812497],[-95.62680664062503,18.690576171874994],[-95.71982421874998,18.768359375000017],[-95.18183593749995,18.700732421875017],[-94.79814453124996,18.51459960937501],[-94.45976562499993,18.166650390624994],[-93.55234375,18.430468750000017],[-92.88476562499997,18.468652343749966],[-92.44101562499998,18.67529296874997],[-91.97377929687502,18.715869140625074],[-91.91357421875,18.52851562500001],[-91.53398437499993,18.45654296875],[-91.27524414062498,18.62446289062501],[-91.34306640624996,18.900585937499955],[-91.43666992187502,18.889794921874966],[-90.73925781249994,19.352246093749955],[-90.69316406249996,19.729882812499966],[-90.49169921874997,19.94677734375003],[-90.353125,21.009423828124966],[-89.81977539062495,21.274609374999983],[-88.46669921874997,21.569384765625017],[-88.0068359375,21.604052734375045],[-87.25087890625,21.44697265625004],[-87.18828124999993,21.546435546875045],[-87.36850585937498,21.57373046875],[-87.034765625,21.592236328124955],[-86.824072265625,21.421679687500017],[-86.77177734374999,21.150537109375023],[-86.92622070312493,20.786474609375034],[-87.42138671875,20.23139648437501],[-87.44174804687498,19.861523437499983],[-87.68769531249998,19.63710937499999],[-87.6453125,19.55390625000001],[-87.42475585937498,19.583349609375063],[-87.65869140625003,19.352343750000074],[-87.65576171874997,19.25786132812499],[-87.50107421874998,19.287792968749983],[-87.76181640624998,18.446142578125006],[-87.88198242187497,18.27387695312501],[-88.05644531249996,18.524462890625074],[-88.03173828125,18.838916015625017],[-88.29565429687494,18.47241210937503],[-88.52299804687499,18.445898437500063],[-88.80634765624998,17.965527343749983],[-89.13354492187503,17.970800781249977],[-89.16147460937503,17.81484375],[-90.98916015624997,17.81640624999997],[-90.99296874999993,17.25244140625],[-91.19550781249998,17.254101562499983],[-91.40961914062501,17.255859375],[-90.975830078125,16.867822265624994],[-90.710693359375,16.708105468750034],[-90.65996093749996,16.630908203125045],[-90.634375,16.565136718749955],[-90.63408203125002,16.51074218749997],[-90.57578124999995,16.467822265625017],[-90.47109374999994,16.439550781250034],[-90.41699218750003,16.391015625000023],[-90.41699218750003,16.351318359375],[-90.45014648437493,16.261376953124994],[-90.45986328124997,16.16235351562497],[-90.44716796874994,16.07270507812501],[-90.52197265625,16.07119140625005],[-90.70322265624998,16.07104492187503],[-90.97958984374998,16.07080078124997],[-91.433984375,16.070458984374994],[-91.736572265625,16.070166015625006],[-91.95722656250001,15.703222656250034],[-92.08212890624998,15.495556640625011],[-92.18715820312497,15.320898437499963],[-92.07480468749998,15.074218749999972],[-92.09873046874998,15.026757812499994],[-92.14423828125001,15.001953125],[-92.158544921875,14.963574218749997],[-92.23515625,14.545410156249986],[-93.91606445312493,16.053564453125006],[-94.374169921875,16.284765625000034],[-94.426416015625,16.22626953125001],[-94.00126953124996,16.018945312499966],[-94.66152343750002,16.20190429687503],[-94.58710937499995,16.315820312499966],[-94.79082031249999,16.28715820312499],[-94.85869140624996,16.41972656249999],[-95.02084960937503,16.277636718750017],[-94.79941406249995,16.20966796875001],[-95.134375,16.17695312500001],[-96.21357421874993,15.693066406250011],[-96.80795898437495,15.726416015624977],[-97.18466796874998,15.909277343750006],[-97.75478515624994,15.966845703125017],[-98.52031249999993,16.30483398437505],[-98.76220703125,16.534765624999977],[-99.69067382812499,16.719628906249994],[-100.847802734375,17.20048828124999],[-101.91870117187494,17.959765625000045],[-102.69956054687495,18.062841796875006],[-103.44160156249995,18.32539062500001],[-103.91245117187496,18.828466796875006],[-104.9384765625,19.309375],[-105.482080078125,19.97607421875003],[-105.66943359374997,20.385595703124977],[-105.26015625,20.579052734374955],[-105.32705078124994,20.752978515625045],[-105.51083984374999,20.808740234375023],[-105.23706054687499,21.119189453125045],[-105.20869140624998,21.490820312499977],[-105.43144531249997,21.618261718750006],[-105.64912109375001,21.988085937500045],[-105.64550781249999,22.32690429687497],[-105.79179687500003,22.627490234375017],[-106.93549804687497,23.88125],[-107.76494140625002,24.47192382812497],[-107.52724609375001,24.36005859375001],[-107.51191406249998,24.489160156250023],[-107.95117187499994,24.614892578124966],[-108.28076171874994,25.08154296875],[-108.05146484374995,25.067041015624994],[-108.69638671874998,25.382910156250034],[-108.78725585937502,25.53803710937501],[-109.02880859375003,25.48046875000003],[-108.886572265625,25.733447265625045],[-109.19648437499998,25.59252929687503],[-109.38496093750001,25.727148437500006],[-109.42563476562495,26.032568359375063],[-109.19970703125003,26.30522460937499],[-109.11669921874999,26.25273437499996],[-109.27626953125,26.533886718749955],[-109.48286132812498,26.710351562500023],[-109.75478515624995,26.702929687500017],[-109.94399414062495,27.079345703125057],[-110.37729492187495,27.233300781249966],[-110.59267578124995,27.544335937500023],[-110.52988281249995,27.864208984374983],[-111.12138671875002,27.966992187499983],[-112.16176757812495,29.018896484375034],[-113.05766601562496,30.651025390625023],[-113.04672851562495,31.17924804687499],[-113.62348632812494,31.34589843750001],[-113.75942382812501,31.557763671874994],[-113.94775390625001,31.62934570312501],[-114.14931640624995,31.507373046875045],[-114.93359374999994,31.900732421874977],[-114.78989257812498,31.647119140624994],[-114.88188476562499,31.156396484375023],[-114.55048828124997,30.02226562499999],[-113.75546875,29.367480468750017],[-113.49970703124995,28.92670898437501],[-113.20556640624997,28.798779296874955],[-113.09365234375001,28.511767578125017],[-112.870849609375,28.42421875000005],[-112.73403320312501,27.825976562500017],[-112.32919921874996,27.52343750000003],[-111.86264648437495,26.678515625000017],[-111.6994140625,26.58095703125005],[-111.79526367187499,26.8796875],[-111.56967773437495,26.707617187500006],[-111.29160156249996,25.78979492187497],[-110.68676757812501,24.867675781250057],[-110.65932617187502,24.34145507812505],[-110.36743164062497,24.100488281249994],[-110.30375976562497,24.339453125],[-110.02280273437502,24.17460937499999],[-109.6765625,23.66157226562501],[-109.42084960937495,23.480126953124994],[-109.49570312500002,23.159814453125023],[-110.00625,22.894042968750057],[-110.3626953125,23.60493164062501],[-111.68291015625002,24.555810546875023],[-111.80249023437494,24.542529296875074],[-112.07255859374999,24.84003906250001],[-112.06987304687497,25.572851562500006],[-112.37724609374997,26.21391601562496],[-113.02075195312499,26.58325195312497],[-113.15581054687496,26.94624023437504],[-113.27226562499997,26.79096679687501],[-113.59853515625001,26.721289062500034],[-113.84096679687502,26.966503906249983],[-114.44526367187503,27.218164062499994],[-114.53989257812495,27.431103515624955],[-114.99350585937499,27.736035156249983],[-115.03647460937495,27.84184570312496],[-114.57001953124995,27.78393554687497],[-114.30058593749995,27.87299804687501],[-114.30224609375003,27.775732421875006],[-114.0693359375,27.67568359375005],[-114.15839843750003,27.919677734375],[-114.26586914062499,27.934472656249994],[-114.04848632812502,28.42617187499999],[-114.93730468749999,29.35161132812496],[-115.67382812500003,29.756396484375017],[-116.06215820312501,30.80415039062504],[-116.29628906250001,30.97050781249999],[-116.33344726562494,31.202783203124994],[-116.66215820312495,31.56489257812504],[-116.72207031249998,31.734570312499955],[-116.62080078124995,31.85107421874997],[-116.84799804687496,31.997363281250045],[-117.12827148437495,32.533349609374994],[-114.72475585937495,32.71533203125003],[-114.83593749999994,32.50830078125003],[-111.0419921875,31.32421875000003],[-108.21445312499993,31.329443359375034],[-108.21181640625002,31.779345703125017],[-106.44541015624996,31.768408203125006],[-106.14804687499995,31.450927734375],[-104.97880859374996,30.645947265624955],[-104.50400390624995,29.677685546874955],[-104.110595703125,29.386132812499994],[-103.16831054687498,28.998193359374994],[-102.8919921875,29.216406250000034],[-102.61494140624994,29.75234375],[-102.26894531249998,29.871191406250034],[-101.44038085937503,29.77685546875],[-100.75458984375001,29.182519531249994],[-100.29604492187495,28.32768554687499],[-99.50532226562497,27.54833984375003],[-99.45654296874999,27.05668945312496],[-99.10776367187498,26.446923828124994],[-97.37563476562497,25.871826171875],[-97.14624023437494,25.961474609375045]]]]},"properties":{"name":"Mexico","childNum":10}},{"geometry":{"type":"Polygon","coordinates":[[[22.344042968750017,42.31396484375],[22.836816406250023,41.993603515625],[23.00361328125001,41.73984375],[22.916015625,41.336279296875],[22.78388671875001,41.331982421875],[22.72480468750001,41.178515625],[22.603613281250006,41.140185546874996],[22.493554687500023,41.118505859375],[22.184472656250023,41.158642578125],[21.99335937500001,41.13095703125],[21.77949218750001,40.950439453125],[21.627539062500006,40.896337890625],[21.57578125,40.868945312499996],[20.964257812500023,40.849902343749996],[20.709277343750017,40.928369140624994],[20.48896484375001,41.272607421874994],[20.566210937500017,41.873681640624994],[20.725,41.87353515625],[20.778125,42.071044921875],[21.05976562500001,42.171289062499994],[21.28662109375,42.100390625],[21.389550781250023,42.21982421875],[21.560839843750017,42.24765625],[21.5625,42.247509765625],[21.81464843750001,42.303125],[22.344042968750017,42.31396484375]]]},"properties":{"name":"Macedonia","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[4.227636718750006,19.142773437499997],[4.234667968750017,16.996386718750003],[4.121289062500011,16.357714843750003],[3.842968750000011,15.701708984375003],[3.5205078125,15.483105468749997],[3.504296875000023,15.356347656249994],[3.06015625,15.427197265624997],[3.001074218750006,15.340966796874994],[1.300195312500023,15.272265625],[0.947460937500011,14.982128906249997],[0.217480468750011,14.911474609374991],[-0.235888671874989,15.059423828124991],[-0.760449218749983,15.047753906249994],[-1.049560546875,14.81953125],[-1.97304687499999,14.45654296875],[-2.113232421874983,14.16845703125],[-2.586718749999989,14.227587890625003],[-2.873925781249994,13.950732421875003],[-2.950830078124994,13.6484375],[-3.248632812499977,13.658349609374994],[-3.3017578125,13.28076171875],[-3.527636718749989,13.182714843749991],[-3.947314453124989,13.402197265624991],[-4.151025390624994,13.306201171875003],[-4.328710937499977,13.119042968749994],[-4.227099609374989,12.793701171875],[-4.480615234374994,12.672216796874991],[-4.4287109375,12.337597656249997],[-4.699316406249977,12.076171875],[-5.288134765624989,11.827929687499989],[-5.250244140625,11.375781249999989],[-5.490478515625,11.042382812499994],[-5.523535156249977,10.426025390625],[-5.556591796874983,10.43994140625],[-5.694287109374983,10.43320312499999],[-5.843847656249977,10.389550781249994],[-5.896191406249983,10.354736328125],[-5.907568359374977,10.307226562499991],[-6.034570312499994,10.19482421875],[-6.1171875,10.201904296875],[-6.238378906249977,10.261621093749994],[-6.241308593749977,10.279199218749994],[-6.192626953125,10.369433593749989],[-6.190673828125,10.400292968749994],[-6.250244140625,10.717919921874994],[-6.482617187499983,10.561230468749997],[-6.564599609374994,10.58642578125],[-6.654150390624977,10.656445312499997],[-6.676367187499977,10.6337890625],[-6.686132812499977,10.578027343749994],[-6.691992187499977,10.512011718749989],[-6.669335937499994,10.3921875],[-6.693261718749994,10.349462890624991],[-6.950341796874994,10.342333984374989],[-7.01708984375,10.143261718749997],[-7.385058593749989,10.340136718749989],[-7.6611328125,10.427441406249997],[-7.990625,10.1625],[-8.007275390624983,10.321875],[-8.266650390624989,10.485986328124994],[-8.33740234375,10.990625],[-8.666699218749983,11.009472656249997],[-8.398535156249977,11.366552734374991],[-8.822021484375,11.673242187499994],[-8.818310546874983,11.922509765624994],[-9.043066406249977,12.40234375],[-9.395361328124977,12.464648437499989],[-9.358105468749983,12.255419921874989],[-9.754003906249977,12.029931640624994],[-10.274853515624983,12.212646484375],[-10.709228515625,11.898730468749989],[-10.933203124999977,12.205175781249991],[-11.30517578125,12.015429687499989],[-11.502197265625,12.198632812499994],[-11.389404296875,12.404394531249991],[-11.390380859375,12.941992187499991],[-11.634960937499983,13.369873046875],[-11.831689453124994,13.315820312499994],[-12.05419921875,13.633056640625],[-11.960888671874983,13.875292968750003],[-12.019189453124994,14.206494140624997],[-12.228417968749994,14.45859375],[-12.280615234374977,14.809033203124997],[-12.104687499999983,14.745361328125],[-12.08154296875,14.766357421875],[-12.021582031249977,14.804931640625],[-11.76015625,15.425537109375],[-11.675878906249977,15.512060546874991],[-11.502685546875,15.636816406249991],[-11.455224609374994,15.62539062499999],[-10.9482421875,15.151123046875],[-10.696582031249989,15.42265625],[-9.94140625,15.373779296875],[-9.446923828124994,15.458203125],[-9.447705078124983,15.574853515624994],[-9.426562499999989,15.623046875],[-9.3505859375,15.677392578124994],[-9.33544921875,15.525683593750003],[-9.293701171875,15.502832031249994],[-5.5125,15.496289062499997],[-5.359912109374989,16.282861328124994],[-5.509619140624977,16.442041015624994],[-5.628662109375,16.568652343750003],[-5.65625,16.8095703125],[-5.684765624999983,17.058251953124994],[-5.713183593749989,17.306884765625],[-5.74169921875,17.555566406249994],[-5.827099609374983,18.3015625],[-6.026416015624989,20.0421875],[-6.396582031249977,23.274804687499994],[-6.482031249999977,24.020800781250003],[-6.538964843749994,24.51816406249999],[-6.5673828125,24.766796875],[-6.594091796874977,24.99462890625],[-6.287207031249977,24.994824218749997],[-5.959814453124977,24.99497070312499],[-5.640771484374994,24.995166015625003],[-4.822607421874977,24.99560546875],[-1.947900390624994,23.124804687500003],[1.1455078125,21.102246093749997],[1.165722656250011,20.817431640625003],[1.610644531250017,20.555566406249994],[1.685449218750023,20.378369140624997],[3.130273437500023,19.85019531249999],[3.255859375,19.4109375],[3.119726562500006,19.103173828124994],[3.3564453125,18.986621093750003],[4.227636718750006,19.142773437499997]]]},"properties":{"name":"Mali","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[14.566210937499989,35.85273437499998],[14.436425781250023,35.82167968750005],[14.351269531250011,35.978417968749994],[14.566210937499989,35.85273437499998]]]},"properties":{"name":"Malta","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[98.18261718749997,9.933447265625006],[98.11806640625,9.877880859375054],[98.2916992187501,10.051318359375031],[98.18261718749997,9.933447265625006]]],[[[98.20976562500002,10.952734375],[98.27148437499997,10.73989257812498],[98.08046875000005,10.886621093750037],[98.20976562500002,10.952734375]]],[[[98.55380859375012,11.744873046875],[98.52841796875012,11.538671875],[98.43476562500004,11.567089843750026],[98.37646484374997,11.79150390625],[98.55380859375012,11.744873046875]]],[[[98.516015625,11.905029296875028],[98.46621093750005,12.08427734374996],[98.60957031250004,11.956640624999977],[98.516015625,11.905029296875028]]],[[[98.06611328125004,12.389794921875023],[98.00234375000005,12.279003906250011],[97.93867187500004,12.34609375],[98.06611328125004,12.389794921875023]]],[[[98.41396484375005,12.597949218749974],[98.45947265625003,12.473730468749991],[98.3138671875,12.335986328124989],[98.31210937500006,12.678173828124983],[98.41396484375005,12.597949218749974]]],[[[98.31542968749997,13.099072265625026],[98.30917968750012,12.934716796875023],[98.26533203125004,13.202246093749991],[98.31542968749997,13.099072265625026]]],[[[94.80488281250004,15.8193359375],[94.73349609375006,15.823046875000045],[94.82802734375005,15.933007812499966],[94.80488281250004,15.8193359375]]],[[[94.47675781250004,15.945947265625023],[94.41191406250007,15.848388671875057],[94.3878906250001,15.994140624999972],[94.60126953125004,16.205517578124983],[94.47675781250004,15.945947265625023]]],[[[97.575,16.253222656250017],[97.48037109375,16.305712890625045],[97.54199218749997,16.505078124999983],[97.575,16.253222656250017]]],[[[93.6908203125,18.68427734375004],[93.4875,18.867529296875063],[93.74472656250006,18.865527343750017],[93.6908203125,18.68427734375004]]],[[[93.71484374999997,19.558251953124994],[93.94570312500005,19.428613281249966],[93.90195312500012,19.33203125],[93.75585937500003,19.325683593750057],[93.64404296874997,19.49506835937501],[93.71484374999997,19.558251953124994]]],[[[93.49179687500012,19.892578125],[93.51328125000006,19.754785156249994],[93.41289062500002,19.950341796875023],[93.49179687500012,19.892578125]]],[[[93.01015625000005,19.923925781249977],[93.02324218750007,19.82885742187497],[92.91464843750006,20.086474609375045],[93.01015625000005,19.923925781249977]]],[[[101.1388671875001,21.567480468749977],[101.08037109375007,21.468652343749994],[100.703125,21.251367187499966],[100.613671875,21.059326171875],[100.56660156250004,21.038183593750063],[100.53613281250003,20.992382812499955],[100.52226562500007,20.92192382812499],[100.54931640624997,20.884228515624955],[100.61767578125003,20.879248046875006],[100.62294921875005,20.859570312499983],[100.5651367187501,20.825097656249994],[100.4074218750001,20.823242187500057],[100.32607421875005,20.795703125000045],[100.24931640625002,20.730273437500045],[100.18388671875002,20.589111328125057],[100.12968750000002,20.372216796874994],[100.12246093750005,20.316650390625057],[100.0036132812501,20.37958984375001],[99.9542968750001,20.415429687500023],[99.8903320312501,20.424414062499977],[99.72011718750005,20.32543945312497],[99.45888671875005,20.363037109375],[99.48593750000006,20.14985351562501],[99.07421875000003,20.09936523437503],[98.9166992187501,19.77290039062504],[98.37128906250004,19.68916015625004],[98.01503906250005,19.74951171874997],[97.816796875,19.459960937500057],[97.74589843750002,18.58818359374999],[97.37392578125,18.51796875],[97.63222656250005,18.290332031250074],[97.7064453125,17.79711914062503],[98.4388671875,16.975683593750034],[98.66074218750006,16.330419921875006],[98.83544921875003,16.417578125],[98.88828125000006,16.351904296875034],[98.81796875000012,16.180810546874994],[98.59238281250006,16.05068359375005],[98.55693359375007,15.367675781249986],[98.19101562500012,15.204101562499972],[98.20214843749997,14.97592773437502],[98.57001953125004,14.359912109375031],[99.13681640625006,13.716699218749994],[99.12392578125,13.030761718750043],[99.40507812500002,12.547900390625003],[99.61474609374997,11.781201171875026],[99.1901367187501,11.105273437499989],[98.7572265625,10.660937499999974],[98.70253906250005,10.19038085937504],[98.56259765625006,10.034960937499989],[98.46494140625006,10.675830078124989],[98.67558593750007,10.986914062500034],[98.74140625000004,11.591699218749966],[98.87597656250003,11.719726562500028],[98.63632812500006,11.738378906250006],[98.69628906250003,12.225244140624994],[98.6002929687501,12.2453125],[98.67871093749997,12.348486328124963],[98.57597656250002,13.161914062500031],[98.20039062500004,13.980175781250026],[98.14951171875012,13.647607421875037],[98.11064453125007,13.712890625000014],[98.10019531250006,14.161523437500023],[97.90976562500012,14.652685546874991],[98.01875,14.652587890625057],[97.81230468750007,14.858935546874989],[97.7103515625,15.875537109375074],[97.58427734375007,16.019580078125017],[97.72597656250005,16.56855468750004],[97.37587890625005,16.52294921874997],[97.20019531249997,17.095410156249983],[96.85146484375005,17.401025390624994],[96.90859375000005,17.03095703125001],[96.76542968750002,16.710351562499966],[96.43115234374997,16.504931640625045],[96.18906250000012,16.768310546875057],[96.32431640625006,16.444433593750063],[95.76328125000006,16.169042968750006],[95.38955078125005,15.722753906250034],[95.30146484375004,15.756152343749989],[95.34677734375012,16.09760742187501],[95.17695312500004,15.825683593750028],[94.9425781250001,15.818261718750023],[94.89316406250006,16.182812499999955],[94.66152343750005,15.904394531250006],[94.70332031250004,16.511914062499955],[94.4416015625001,16.094384765624966],[94.22382812500004,16.016455078125006],[94.58896484375006,17.5693359375],[94.17070312500007,18.73242187499997],[94.24570312500006,18.741162109374983],[94.07001953125004,18.893408203125006],[94.04492187500003,19.287402343750074],[93.92919921874997,18.89965820312503],[93.70546875000005,19.026904296875017],[93.49306640625005,19.369482421875006],[93.82490234375004,19.238476562499955],[93.99814453125006,19.440869140624983],[93.61171875000005,19.776074218749983],[93.70703125000003,19.912158203125074],[93.25,20.070117187500017],[93.12949218750012,19.858007812500063],[93.00195312499997,20.074853515624994],[93.06679687500005,20.377636718749955],[92.82832031250004,20.177587890625063],[92.89111328124997,20.34033203125],[92.73564453125007,20.56269531250001],[92.72285156250004,20.29560546875004],[92.32412109375,20.791845703125063],[92.17958984375005,21.293115234375023],[92.33056640624997,21.439794921874977],[92.63164062500002,21.306201171875045],[92.5934570312501,21.46733398437499],[92.58281250000002,21.940332031249994],[92.57490234375004,21.978076171875045],[92.68896484374997,22.130957031250006],[92.72099609375002,22.132421875000063],[92.77138671875,22.104785156250017],[92.9645507812501,22.003759765625034],[93.07060546875002,22.20942382812501],[93.16201171875,22.360205078125006],[93.07871093750006,22.71821289062501],[93.20390625000002,23.03701171875005],[93.34941406250007,23.08496093750003],[93.36601562500007,23.132519531249955],[93.32626953125006,24.064208984375057],[93.45214843750003,23.987402343750034],[93.68339843750007,24.00654296875004],[94.07480468750006,23.8720703125],[94.29306640625012,24.321875],[94.37724609375002,24.473730468750006],[94.49316406250003,24.637646484374983],[94.70371093750012,25.097851562499955],[94.55302734375007,25.215722656249994],[94.66777343750007,25.458886718749966],[94.99199218750002,25.77045898437504],[95.01523437500006,25.912939453125006],[95.0929687500001,25.98730468749997],[95.13242187500006,26.041259765625057],[95.12929687500005,26.070410156250034],[95.10839843749997,26.091406250000034],[95.06894531250006,26.19111328125001],[95.0597656250001,26.473974609375006],[95.20146484375007,26.641406250000017],[96.19082031250005,27.26127929687499],[96.79785156249997,27.29619140624999],[96.95341796875002,27.13330078125003],[97.10205078125003,27.11542968750004],[97.10371093750004,27.16333007812503],[96.90195312500012,27.439599609374994],[96.88359375000002,27.514843749999955],[96.96279296875,27.698291015625017],[97.04970703125005,27.760009765625],[97.34355468750002,27.982324218749994],[97.30273437499997,28.08598632812496],[97.3224609375001,28.21796875000004],[97.35644531249997,28.254492187500006],[97.43144531250002,28.353906250000023],[97.53789062500002,28.510205078124983],[97.59921875000006,28.51704101562504],[98.06162109375012,28.185888671874977],[98.29882812499997,27.550097656250045],[98.4525390625,27.6572265625],[98.65117187500007,27.572460937499983],[98.7384765625001,26.785742187500006],[98.68554687499997,26.189355468750023],[98.56406250000006,26.072412109374994],[98.65625,25.86357421874999],[98.33378906250007,25.586767578125006],[98.14287109375007,25.571093750000017],[98.01074218749997,25.292529296875017],[97.8195312500001,25.251855468749994],[97.73789062500006,24.869873046875057],[97.58330078125002,24.77480468750005],[97.53144531250004,24.49169921875003],[97.7082031250001,24.228759765625],[97.56455078125012,23.911035156250023],[98.2125,24.110644531250017],[98.83505859375006,24.121191406250034],[98.67675781250003,23.905078125000045],[98.8322265625001,23.624365234374977],[98.86376953125003,23.191259765625034],[99.41806640625006,23.069238281250023],[99.50712890625002,22.959130859374994],[99.19296875000006,22.12597656249997],[99.9176757812501,22.02802734375001],[99.94072265625007,21.75874023437504],[100.14765625000004,21.480517578125017],[100.60458984375012,21.471777343750006],[101.07978515625004,21.75585937499997],[101.1388671875001,21.567480468749977]]]]},"properties":{"name":"Myanmar","childNum":15}},{"geometry":{"type":"Polygon","coordinates":[[[19.21875,43.449951171875],[19.670996093750006,43.163964843749994],[20.344335937500006,42.827929687499996],[20.054296875,42.760058593749996],[20.06396484375,42.54726562499999],[19.78828125000001,42.476171875],[19.65449218750001,42.628564453124994],[19.280664062500023,42.17255859375],[19.342382812500006,41.869091796875],[18.436328125000017,42.559716796874994],[18.5458984375,42.6416015625],[18.46601562500001,42.777246093749994],[18.44384765625,42.96845703125],[18.46015625000001,42.997900390625],[18.48847656250001,43.012158203125],[18.623632812500006,43.027685546875],[18.621875,43.124609375],[18.674218750000023,43.230810546875],[18.74921875000001,43.283544921875],[18.85107421875,43.346337890624994],[18.934667968750006,43.339453125],[18.97871093750001,43.285400390625],[19.026660156250017,43.292431640625],[19.03671875,43.357324218749994],[18.940234375000017,43.496728515624994],[18.95068359375,43.526660156249996],[18.97421875,43.542333984375],[19.0283203125,43.532519531249996],[19.080078125,43.517724609374994],[19.11279296875,43.52773437499999],[19.164355468750017,43.535449218749996],[19.1943359375,43.53330078125],[19.21875,43.449951171875]]]},"properties":{"name":"Montenegro","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[111.878125,43.68017578125],[111.00722656250002,43.34140625],[110.400390625,42.773681640625],[109.44316406249999,42.455957031249994],[109.33984375,42.438378906249994],[108.68730468749999,42.41611328125],[108.17119140624999,42.447314453124996],[106.77001953125,42.288720703124994],[105.86757812500002,41.993994140625],[105.31435546875002,41.770898437499994],[105.19707031249999,41.738037109375],[105.11542968750001,41.66328125],[105.05058593749999,41.61591796875],[104.98203125000003,41.595507812499996],[104.49824218750001,41.65869140625],[104.49824218750001,41.877001953124996],[104.30517578125,41.846142578125],[103.99726562500001,41.79697265625],[103.71113281250001,41.751318359375],[103.07285156250003,42.00595703125],[102.5751953125,42.092089843749996],[102.15664062500002,42.158105468749994],[101.97294921874999,42.215869140624996],[101.65996093749999,42.500048828124996],[101.5791015625,42.52353515625],[101.49531250000001,42.53876953125],[101.09199218750001,42.551318359374996],[100.51904296875,42.616796875],[100.08632812500002,42.670751953125],[99.98378906250002,42.67734375],[99.46787109375003,42.568212890625],[97.20566406250003,42.789794921875],[96.38544921875001,42.720361328124994],[95.85957031250001,43.2759765625],[95.52558593750001,43.953955078125],[95.32558593750002,44.039355468749996],[95.35029296875001,44.278076171875],[94.71201171875003,44.350830078125],[93.51621093750003,44.944482421874994],[92.78789062499999,45.0357421875],[92.57890624999999,45.010986328125],[92.423828125,45.008935546874994],[92.17265624999999,45.03525390625],[92.02978515625,45.068505859374994],[91.584375,45.076513671875],[91.05,45.217431640624994],[90.87724609374999,45.19609375],[90.66181640625001,45.525244140625],[91.00175781249999,46.035791015624994],[90.99677734375001,46.10498046875],[90.94755859374999,46.177294921874996],[90.91152343750002,46.270654296874994],[90.98574218750002,46.7490234375],[90.91054687500002,46.883251953125],[90.86992187499999,46.954492187499994],[90.79902343750001,46.98515625],[90.71552734375001,47.003857421875],[90.49619140625003,47.28515625],[90.42519531250002,47.5041015625],[90.34746093749999,47.596972656249996],[90.33066406250003,47.655175781249994],[90.31328124999999,47.67617187499999],[90.19101562500003,47.702099609375],[90.10322265625001,47.745410156249996],[90.02792968750003,47.877685546875],[89.95869140625001,47.886328125],[89.91044921874999,47.8443359375],[89.83134765624999,47.823291015624996],[89.778125,47.827001953125],[89.56093750000002,48.003955078124996],[89.47919921875001,48.029052734375],[89.04765624999999,48.0025390625],[88.97109375000002,48.049951171874994],[88.91777343749999,48.089013671874994],[88.83828125000002,48.101708984374994],[88.68183593750001,48.170556640624994],[88.57597656249999,48.220166015625],[88.56679687500002,48.317431640624996],[88.51708984375,48.38447265625],[88.41396484375002,48.40341796875],[88.30996093750002,48.472070312499994],[87.97968750000001,48.555126953125],[88.06005859375,48.707177734374994],[87.83183593749999,48.791650390624994],[87.7431640625,48.881640625],[87.87216796875003,49.000146484374994],[87.81630859375002,49.0802734375],[87.8251953125,49.11630859375],[87.81425781249999,49.1623046875],[87.93476562500001,49.16455078125],[87.98808593749999,49.186914062499994],[88.02851562500001,49.219775390624996],[88.11572265625,49.256298828125],[88.19257812500001,49.451708984374996],[88.63320312500002,49.486132812499996],[88.83164062500003,49.4484375],[88.86386718750003,49.527636718749996],[88.90019531249999,49.539697265624994],[88.94541015625003,49.507666015625],[88.97060546875002,49.483740234375],[89.00839843750003,49.472802734374994],[89.10947265625003,49.501367187499994],[89.17998046874999,49.5322265625],[89.20292968749999,49.595703125],[89.24394531249999,49.62705078125],[89.39560546875003,49.6115234375],[89.475,49.66054687499999],[89.57919921875003,49.69970703125],[89.65410156249999,49.71748046875],[89.64384765624999,49.90302734375],[90.0537109375,50.09375],[90.65507812499999,50.22236328125],[90.71435546875,50.259423828124994],[90.7607421875,50.305957031249996],[91.02158203125003,50.415478515625],[91.23378906250002,50.452392578125],[91.30058593749999,50.46337890625],[91.3408203125,50.470068359375],[91.4150390625,50.468017578125],[91.44648437500001,50.52216796875],[91.80429687500003,50.693603515625],[92.10400390625,50.6919921875],[92.1923828125,50.700585937499994],[92.35478515624999,50.864160156249994],[92.42636718750003,50.803076171875],[92.62666015625001,50.68828125],[92.68134765625001,50.683203125],[92.73867187500002,50.7109375],[92.779296875,50.778662109375],[92.8564453125,50.789111328124996],[92.94130859375002,50.778222656249994],[93.103125,50.60390625],[94.25107421875003,50.556396484375],[94.35468750000001,50.221826171874994],[94.61474609375,50.023730468749996],[94.67548828125001,50.028076171875],[94.71806640624999,50.043261718749996],[94.93027343750003,50.04375],[95.11142578125003,49.935449218749994],[95.52265625000001,49.91123046875],[96.06552734375003,49.99873046875],[96.31503906250003,49.901123046875],[96.98574218750002,49.8828125],[97.20859375000003,49.730810546875],[97.35976562500002,49.741455078125],[97.58935546875,49.911474609375],[98.00390625,50.0142578125],[98.25029296874999,50.30244140625],[98.27949218750001,50.533251953124996],[98.14501953125,50.5685546875],[98.07890624999999,50.603808593749996],[98.02978515625,50.64462890625],[97.82529296875003,50.985253906249994],[98.103125,51.483544921874994],[98.64052734375002,51.801171875],[98.89316406250003,52.11728515625],[99.92167968749999,51.755517578125],[100.03457031250002,51.737109375],[100.23037109375002,51.729833984375],[100.46894531250001,51.72607421875],[100.53623046875003,51.7134765625],[101.38125,51.45263671875],[101.57089843750003,51.4671875],[101.82119140625002,51.421044921874994],[102.11152343750001,51.353466796875],[102.15566406250002,51.313769531249996],[102.16005859375002,51.26083984375],[102.14238281249999,51.216064453125],[102.15195312500003,51.10751953125],[102.19453125000001,51.050683593749994],[102.21503906250001,50.829443359375],[102.31660156250001,50.71845703125],[102.28837890624999,50.585107421874994],[103.30439453125001,50.20029296875],[103.63291015625003,50.138574218749994],[103.72324218750003,50.153857421874996],[103.80263671875002,50.176074218749996],[104.07871093750003,50.154248046875],[105.38359374999999,50.47373046875],[106.21787109375003,50.304589843749994],[106.36845703124999,50.317578125],[106.57441406250001,50.32880859375],[106.71113281250001,50.31259765625],[106.94130859375002,50.196679687499994],[107.04023437500001,50.086474609374996],[107.14306640625,50.033007812499996],[107.23330078125002,49.989404296874994],[107.34707031250002,49.986669921875],[107.63095703125003,49.98310546875],[107.91660156250003,49.947802734374996],[107.96542968750003,49.653515625],[108.40693359375001,49.396386718749994],[108.5224609375,49.34150390625],[108.61367187500002,49.322802734374996],[109.23671875000002,49.334912109375],[109.45371093750003,49.296337890625],[109.52871093750002,49.269873046875],[110.19990234375001,49.17041015625],[110.42783203125003,49.219970703125],[110.70976562499999,49.14296875],[110.82792968749999,49.166162109374994],[111.20419921875003,49.304296875],[111.33662109375001,49.35585937499999],[111.42929687500003,49.342626953125],[112.07968750000003,49.42421875],[112.49492187499999,49.53232421875],[112.69736328125003,49.507275390625],[112.80644531249999,49.523583984374994],[112.91484374999999,49.569238281249994],[113.05556640625002,49.616259765624996],[113.09208984374999,49.692529296874994],[113.16416015625003,49.797167968749996],[113.31904296875001,49.874316406249996],[113.44550781250001,49.9416015625],[113.57421875,50.00703125],[114.29707031250001,50.2744140625],[114.7431640625,50.233691406249996],[115.00332031250002,50.138574218749994],[115.27451171875003,49.948876953124994],[115.36503906249999,49.911767578124994],[115.42919921875,49.896484375],[115.58798828125003,49.886035156249996],[115.7177734375,49.880615234375],[115.79521484374999,49.905908203124994],[115.92597656250001,49.9521484375],[116.13457031249999,50.010791015624996],[116.216796875,50.00927734375],[116.35117187500003,49.978076171874996],[116.55117187500002,49.9203125],[116.68330078125001,49.823779296874996],[115.82050781250001,48.57724609375],[115.79169921875001,48.455712890624994],[115.79658203125001,48.346337890624994],[115.78554687500002,48.2482421875],[115.63945312499999,48.18623046875],[115.52509765625001,48.130859375],[115.61640625000001,47.874804687499996],[115.89824218749999,47.686914062499994],[115.99384765625001,47.71132812499999],[116.07480468750003,47.78955078125],[116.23115234375001,47.858203125],[116.31718749999999,47.85986328125],[116.37822265624999,47.844042968749996],[116.51347656249999,47.83955078125],[116.65195312500003,47.864501953125],[116.76054687499999,47.869775390624994],[116.90117187499999,47.853076171874996],[116.95166015625,47.836572265624994],[117.06972656250002,47.806396484375],[117.28593749999999,47.666357421875],[117.35078125000001,47.652197265625],[117.76835937499999,47.987890625],[118.49843750000002,47.983984375],[118.56777343750002,47.943261718749994],[118.69052734375003,47.822265625],[118.75996093750001,47.757617187499996],[118.88027343750002,47.72509765625],[119.017578125,47.685351562499996],[119.08193359375002,47.654150390625],[119.71113281250001,47.15],[119.89785156250002,46.8578125],[119.8671875,46.672167968749996],[119.74746093750002,46.627197265625],[119.70664062500003,46.606005859374996],[119.62021484375003,46.603955078125],[119.47402343750002,46.62666015625],[119.33183593749999,46.613818359374996],[119.162109375,46.638671875],[118.95712890625003,46.73486328125],[118.84394531250001,46.760205078125],[118.79033203124999,46.7470703125],[118.72294921874999,46.69189453125],[118.64873046874999,46.70166015625],[118.58046875000002,46.69189453125],[118.40439453125003,46.703173828124996],[118.30869140625003,46.717041015625],[118.15683593750003,46.678564453125],[118.0712890625,46.6666015625],[117.7412109375,46.5181640625],[117.546875,46.58828125],[117.43808593750003,46.586230468749996],[117.40556640624999,46.5708984375],[117.39218750000003,46.53759765625],[117.35634765625002,46.436669921874994],[117.35693359375,46.39130859375],[117.33339843750002,46.36201171875],[116.85908203125001,46.387939453125],[116.56259765625003,46.289794921875],[116.21298828125003,45.8869140625],[116.22910156250003,45.845751953124996],[116.240625,45.79599609375],[116.19765625000002,45.73935546875],[115.68105468750002,45.458251953125],[115.16259765625,45.390234375],[114.91923828124999,45.378271484375],[114.73876953125,45.41962890625],[114.56015625000003,45.389990234375],[114.41914062500001,45.202587890625],[114.16738281250002,45.049853515624996],[114.08027343750001,44.971142578125],[113.87705078125003,44.89619140625],[113.65263671874999,44.763476562499996],[113.58701171875003,44.745703125],[113.04941406250003,44.810351562499996],[112.70673828125001,44.883447265624994],[112.59677734375003,44.91767578125],[112.49931640624999,45.0109375],[112.41132812500001,45.058203125],[112.11289062500003,45.062939453125],[112.03261718750002,45.081640625],[111.89804687500003,45.0640625],[111.40224609375002,44.36728515625],[111.93173828125003,43.81494140625],[111.878125,43.68017578125]]]},"properties":{"name":"Mongolia","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[145.75195312499997,15.133154296874991],[145.71318359375007,15.215283203125026],[145.821875,15.265380859375014],[145.75195312499997,15.133154296874991]]]},"properties":{"name":"N. Mariana Is.","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[32.112890625,-26.839453125],[32.10595703125,-26.52001953125],[32.04140625000002,-26.28125],[32.060546875,-26.018359375],[31.9482421875,-25.957617187500006],[31.98583984375,-24.46064453125001],[31.799609375000017,-23.8921875],[31.54560546875001,-23.48232421875001],[31.287890625000017,-22.40205078125001],[31.429492187500017,-22.298828125],[32.429785156250006,-21.29707031250001],[32.353613281250006,-21.136523437500003],[32.49238281250001,-20.659765625],[32.992773437500006,-19.98486328125],[32.77763671875002,-19.388769531250006],[32.84980468750001,-19.10439453125001],[32.69970703125,-18.94091796875],[32.99306640625002,-18.35957031250001],[32.87626953125002,-16.88359375],[32.94804687500002,-16.71230468750001],[31.939843750000023,-16.428808593750006],[31.236230468750023,-16.02363281250001],[30.437792968750017,-15.995312500000011],[30.39609375,-15.64306640625],[30.231835937500023,-14.990332031250006],[33.201757812500006,-14.013378906250011],[33.63642578125001,-14.568164062500003],[34.375,-14.4248046875],[34.50527343750002,-14.59814453125],[34.54082031250002,-15.297265625],[34.24609375,-15.829394531250003],[34.528125,-16.319140625],[34.93339843750002,-16.760351562500006],[35.11210937500002,-16.898535156250006],[35.06464843750001,-17.07861328125],[35.124609375,-17.127246093750003],[35.20136718750001,-17.13105468750001],[35.272558593750006,-17.118457031250003],[35.29042968750002,-17.096972656250003],[35.28115234375002,-16.80781250000001],[35.22978515625002,-16.639257812500006],[35.178320312500006,-16.573339843750006],[35.16718750000001,-16.56025390625001],[35.242773437500006,-16.375390625],[35.358496093750006,-16.160546875],[35.59931640625001,-16.12587890625001],[35.70888671875002,-16.095800781250006],[35.75527343750002,-16.05830078125001],[35.79121093750001,-15.958691406250011],[35.89277343750001,-14.891796875000011],[35.86669921875,-14.86376953125],[35.84716796875,-14.6708984375],[35.6904296875,-14.465527343750011],[35.48847656250001,-14.201074218750009],[35.37578125000002,-14.058691406250006],[35.24746093750002,-13.896875],[35.01386718750001,-13.643457031250009],[34.61152343750001,-13.437890625],[34.54570312500002,-13.21630859375],[34.542578125,-13.108691406250003],[34.35781250000002,-12.164746093750011],[34.60625,-11.690039062500006],[34.65957031250002,-11.588671875],[34.82656250000002,-11.57568359375],[34.95947265625,-11.578125],[35.1826171875,-11.574804687500006],[35.41826171875002,-11.583203125000011],[35.50439453125,-11.604785156250003],[35.56435546875002,-11.60234375],[35.630957031250006,-11.58203125],[35.78544921875002,-11.452929687500003],[35.91132812500001,-11.4546875],[36.08222656250001,-11.537304687500011],[36.17548828125001,-11.609277343750009],[36.19130859375002,-11.670703125],[36.3056640625,-11.706347656250003],[36.97890625000002,-11.566992187500006],[37.37285156250002,-11.71044921875],[37.54169921875001,-11.675097656250003],[37.72480468750001,-11.580664062500006],[37.92021484375002,-11.294726562500003],[38.491796875,-11.413281250000011],[38.9875,-11.167285156250003],[39.81708984375001,-10.912402343750003],[39.98867187500002,-10.82080078125],[40.46357421875001,-10.46435546875],[40.61171875000002,-10.661523437500009],[40.48662109375002,-10.76513671875],[40.59716796875,-10.830664062500006],[40.40283203125,-11.33203125],[40.53154296875002,-12.004589843750011],[40.48710937500002,-12.4921875],[40.58085937500002,-12.635546875],[40.43681640625002,-12.983105468750011],[40.56875,-12.984667968750003],[40.595703125,-14.122851562500003],[40.715625,-14.214453125],[40.64609375,-14.538671875],[40.775,-14.421289062500009],[40.84453125000002,-14.718652343750009],[40.617773437500006,-15.115527343750003],[40.650976562500006,-15.260937500000011],[39.98359375000001,-16.22548828125001],[39.79091796875002,-16.29453125],[39.84462890625002,-16.435644531250006],[39.084375,-16.97285156250001],[38.14492187500002,-17.242773437500006],[37.24453125000002,-17.73994140625001],[36.93935546875002,-17.993457031250003],[36.40371093750002,-18.76972656250001],[36.26289062500001,-18.71962890625001],[36.23564453125002,-18.861328125],[35.85371093750001,-18.99335937500001],[34.947851562500006,-19.81269531250001],[34.6494140625,-19.70136718750001],[34.75576171875002,-19.82197265625001],[34.705078125,-20.473046875],[34.98232421875002,-20.80625],[35.267675781250006,-21.650976562500006],[35.31572265625002,-22.396875],[35.38300781250001,-22.45458984375],[35.45634765625002,-22.11591796875001],[35.53007812500002,-22.248144531250006],[35.57539062500001,-22.96308593750001],[35.37041015625002,-23.79824218750001],[35.5419921875,-23.82441406250001],[35.48964843750002,-24.065527343750006],[34.99208984375002,-24.65058593750001],[32.96113281250001,-25.49042968750001],[32.590429687500006,-26.00410156250001],[32.84882812500001,-26.26806640625],[32.95488281250002,-26.08359375],[32.93359375,-26.25234375],[32.88916015625,-26.83046875],[32.88613281250002,-26.84931640625001],[32.353515625,-26.861621093750003],[32.19960937500002,-26.83349609375],[32.112890625,-26.839453125]]]},"properties":{"name":"Mozambique","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-16.37333984374999,19.706445312499994],[-16.437548828124932,19.609277343749994],[-16.477001953124983,19.710351562499994],[-16.343652343749994,19.86621093750003],[-16.37333984374999,19.706445312499994]]],[[[-5.359912109374989,16.282861328124994],[-5.5125,15.496289062499983],[-9.293701171875,15.502832031249994],[-9.350585937499943,15.677392578125023],[-9.38535156249992,15.667626953124994],[-9.4265625,15.623046875000057],[-9.447705078124926,15.574853515624994],[-9.446923828124937,15.458203124999955],[-9.941406249999972,15.373779296874986],[-10.696582031249989,15.42265625],[-10.9482421875,15.151123046875014],[-11.455224609374994,15.62539062499999],[-11.760156249999937,15.425537109375057],[-11.828759765624966,15.244873046875014],[-11.872851562499989,14.995166015625031],[-12.02158203124992,14.804931640625],[-12.081542968749972,14.766357421875057],[-12.104687499999955,14.745361328125043],[-12.40869140625,14.889013671874991],[-12.735253906249994,15.13125],[-13.105273437499989,15.57177734375],[-13.40966796875,16.059179687500006],[-13.756640624999989,16.172509765624994],[-13.868457031249932,16.14814453125001],[-14.300097656249932,16.58027343750001],[-14.990625,16.676904296874994],[-15.768212890624994,16.485107421875],[-16.23901367187497,16.53129882812499],[-16.44101562499992,16.20454101562504],[-16.480078124999977,16.097216796875017],[-16.50205078124992,15.917333984375063],[-16.53525390624995,15.838378906250057],[-16.53574218749995,16.28681640625001],[-16.463623046875,16.60151367187501],[-16.030322265625017,17.88793945312497],[-16.213085937499926,19.003320312500023],[-16.51445312499996,19.361962890624994],[-16.305273437499977,19.51264648437504],[-16.44487304687499,19.47314453124997],[-16.21044921875003,20.227929687500023],[-16.42978515624995,20.652343750000057],[-16.622509765624955,20.634179687499994],[-16.87607421874992,21.086132812499955],[-16.998242187499926,21.039697265625023],[-17.048046874999955,20.80615234375003],[-17.06396484375,20.89882812499999],[-16.96455078125001,21.329248046875023],[-15.231201171875,21.331298828125],[-14.084667968749926,21.33271484375001],[-13.626025390624932,21.33325195312503],[-13.396728515624943,21.333544921875017],[-13.167431640624926,21.333789062500074],[-13.016210937499949,21.33393554687501],[-13.025097656249983,21.46679687499997],[-13.032226562500028,21.572070312500017],[-13.041748046875,21.71381835937504],[-13.051220703124983,21.854785156250074],[-13.094335937499977,22.49599609375005],[-13.153271484374983,22.820507812499983],[-13.031494140624943,23.000244140625],[-12.895996093749972,23.08955078125001],[-12.739599609375006,23.192724609375063],[-12.62041015624996,23.271337890625006],[-12.559375,23.290820312500045],[-12.372900390624977,23.318017578124994],[-12.023437499999943,23.467578125000017],[-12.016308593749983,23.97021484375],[-12.016308593749983,24.378662109375],[-12.016308593749983,24.923242187499994],[-12.016308593749983,25.059375],[-12.016308593749983,25.331689453124994],[-12.016308593749983,25.740136718749994],[-12.016308593749983,25.995410156250017],[-10.376123046874966,25.995458984375034],[-9.444531249999983,25.99550781250005],[-9.071923828124937,25.99550781250005],[-8.885644531249994,25.99550781250005],[-8.682226562499949,25.99550781250005],[-8.68212890625,26.109472656250006],[-8.68212890625,26.273193359375057],[-8.682324218749955,26.49770507812505],[-8.682617187500028,26.723144531250057],[-8.682861328124972,26.92133789062501],[-8.683349609375,27.285937500000045],[-4.822607421874949,24.99560546875],[-5.640771484374994,24.99516601562499],[-5.959814453124977,24.994970703125063],[-6.287207031249977,24.99482421875001],[-6.594091796874977,24.99462890624997],[-6.396582031249977,23.274804687499994],[-6.02641601562496,20.04218750000001],[-5.827099609374955,18.301562500000045],[-5.741699218749943,17.555566406250023],[-5.713183593750017,17.306884765625],[-5.684765624999983,17.058251953124966],[-5.628662109375028,16.568652343750045],[-5.50961914062492,16.442041015625023],[-5.359912109374989,16.282861328124994]]]]},"properties":{"name":"Mauritania","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[-62.1484375,16.74033203124999],[-62.221630859375,16.699511718750003],[-62.191357421875,16.804394531249997],[-62.1484375,16.74033203124999]]]},"properties":{"name":"Montserrat","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[57.65126953125002,-20.48486328125],[57.31767578125002,-20.42763671875001],[57.416015625,-20.18378906250001],[57.65654296875002,-19.98994140625001],[57.7919921875,-20.21259765625001],[57.65126953125002,-20.48486328125]]]},"properties":{"name":"Mauritius","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[34.95947265625003,-11.578125],[34.82656250000005,-11.575683593749972],[34.65957031250005,-11.58867187499996],[34.61855468750005,-11.620214843749991],[34.60625,-11.690039062500006],[34.3578125,-12.164746093749997],[34.542578125,-13.108691406250003],[34.54570312500002,-13.21630859375],[34.6115234375001,-13.437890625000023],[35.0138671875001,-13.64345703124998],[35.247460937499994,-13.896875],[35.37578125000002,-14.05869140625002],[35.48847656250004,-14.20107421874998],[35.69042968749997,-14.465527343750026],[35.84716796875003,-14.670898437500043],[35.8927734375001,-14.891796875000011],[35.7912109375001,-15.958691406250026],[35.75527343750005,-16.058300781249983],[35.708886718749994,-16.095800781249977],[35.5993164062501,-16.12587890624998],[35.35849609375006,-16.160546875000023],[35.242773437500006,-16.375390625],[35.16718750000004,-16.56025390625001],[35.178320312500006,-16.57333984375002],[35.22978515625002,-16.639257812500034],[35.281152343749994,-16.8078125],[35.29042968750005,-17.096972656250017],[35.27255859375006,-17.11845703124996],[35.2013671875001,-17.13105468750004],[35.124609375,-17.127246093749974],[35.06464843750004,-17.078613281250014],[35.11210937500002,-16.898535156250006],[34.93339843750002,-16.760351562500006],[34.528125,-16.319140625],[34.24609374999997,-15.829394531249974],[34.54082031250002,-15.297265625],[34.50527343750005,-14.598144531249957],[34.375,-14.4248046875],[33.63642578125004,-14.568164062499974],[33.148046875,-13.94091796875],[32.98125,-14.009375],[32.797460937500006,-13.6884765625],[32.67041015624997,-13.590429687500006],[32.96757812500002,-13.225],[32.97519531250006,-12.701367187499983],[33.51230468750006,-12.347753906249977],[33.340136718750074,-12.308300781250011],[33.25234375000005,-12.112597656250031],[33.3039062500001,-11.69082031249998],[33.23271484375002,-11.417675781250026],[33.26835937500002,-11.403906249999977],[33.379785156249994,-11.15791015625004],[33.29277343750002,-10.85234375],[33.661523437499994,-10.553125],[33.55371093749997,-10.391308593750011],[33.53759765624997,-10.351562499999986],[33.52890625,-10.234667968749974],[33.31152343750003,-10.037988281249966],[33.3371093750001,-9.954003906249994],[33.350976562499994,-9.862207031250037],[33.25,-9.759570312500003],[33.148046875,-9.603515625],[32.99599609375005,-9.622851562499946],[32.91992187500003,-9.407421875000026],[33.88886718750004,-9.670117187499983],[33.99560546875003,-9.495410156250003],[34.32089843750006,-9.731542968749977],[34.56992187500006,-10.241113281249966],[34.66708984375006,-10.792480468750028],[34.60791015624997,-11.08046875],[34.77382812500005,-11.341699218750009],[34.890625,-11.3935546875],[34.93701171874997,-11.463476562500034],[34.95947265625003,-11.578125]]]},"properties":{"name":"Malawi","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[111.38925781250006,2.415332031250031],[111.31152343749997,2.437597656250034],[111.33349609374997,2.768310546875],[111.38925781250006,2.415332031250031]]],[[[104.22158203125,2.731738281250003],[104.1291015625001,2.767236328125037],[104.18476562500004,2.871728515625009],[104.22158203125,2.731738281250003]]],[[[117.88476562499997,4.186132812500006],[117.64902343750012,4.168994140624974],[117.70800781249997,4.262402343749997],[117.88476562499997,4.186132812500006]]],[[[100.28896484375005,5.294726562499989],[100.19101562500006,5.28286132812498],[100.2455078125,5.467773437499986],[100.33886718749997,5.410058593750037],[100.28896484375005,5.294726562499989]]],[[[99.848046875,6.465722656249994],[99.9186523437501,6.358593750000011],[99.74375,6.263281249999963],[99.64628906250002,6.418359375000023],[99.848046875,6.465722656249994]]],[[[102.10107421874997,6.242236328125031],[102.34013671875002,6.172021484375023],[102.534375,5.862548828125028],[103.09707031250005,5.408447265624986],[103.41582031250007,4.85029296875004],[103.43945312499997,2.93310546875],[103.8122070312501,2.58046875],[104.21855468750002,1.722851562499997],[104.25009765625012,1.388574218750009],[104.11494140625004,1.412255859375037],[103.98144531250003,1.623632812500034],[103.99150390625002,1.454785156249997],[103.6945312500001,1.449658203125026],[103.48027343750007,1.329492187499966],[103.35683593750005,1.546142578125057],[102.72714843750012,1.855566406250034],[101.29550781250012,2.885205078125011],[101.29990234375012,3.253271484375034],[100.71542968750006,3.966210937499966],[100.79550781250012,4.023388671874983],[100.61455078125002,4.3734375],[100.34326171874997,5.984179687500031],[100.11914062499997,6.441992187500048],[100.26142578125004,6.682714843749963],[100.3454101562501,6.549902343750006],[100.75449218750012,6.460058593749991],[100.87392578125,6.24541015624996],[101.05351562500002,6.242578125],[100.98164062500004,5.771044921875045],[101.1139648437501,5.636767578125045],[101.5560546875,5.907763671875003],[101.67841796875004,5.778808593750028],[101.87363281250012,5.825292968749991],[102.10107421874997,6.242236328125031]]],[[[117.5744140625001,4.17060546875004],[117.10058593750003,4.337060546875023],[116.51474609375006,4.370800781249969],[115.86074218750005,4.348046875000037],[115.67880859375006,4.193017578124994],[115.45439453125002,3.034326171875009],[115.24697265625005,3.025927734374989],[115.117578125,2.89487304687502],[115.08076171875004,2.63422851562504],[115.1791015625,2.523193359374972],[114.78642578125002,2.250488281250014],[114.83056640625003,1.980029296874989],[114.5125,1.452001953124963],[113.90234375000003,1.434277343749997],[113.6222656250001,1.2359375],[113.00654296875004,1.433886718750003],[112.94296875000006,1.566992187500034],[112.47617187500006,1.559082031250028],[112.1857421875001,1.4390625],[112.078515625,1.143359374999974],[111.80898437500005,1.011669921874969],[111.10136718750002,1.050537109374986],[110.50576171875005,0.861962890625023],[109.65400390625004,1.614892578125023],[109.53896484375,1.89619140625004],[109.62890625000003,2.027539062499983],[109.86484375000012,1.764453125000031],[110.34921875000012,1.719726562499972],[111.22324218750012,1.395849609374991],[111.0287109375,1.557812500000026],[111.26816406250012,2.13974609375002],[111.20859375000012,2.379638671875043],[111.44384765625003,2.381542968749983],[111.5125,2.743017578124991],[112.98789062500006,3.161914062499974],[113.92392578125006,4.243212890625003],[114.0638671875,4.592675781249966],[114.65410156250007,4.037646484375045],[114.84023437500005,4.393212890625009],[114.74667968750006,4.718066406250017],[115.02675781250005,4.899707031249989],[115.10703125000006,4.390429687499974],[115.290625,4.352587890624989],[115.1400390625,4.899755859374991],[115.37490234375,4.932763671874966],[115.55449218750007,5.093554687500045],[115.41904296875012,5.413183593749963],[115.60390625,5.603417968749994],[115.74082031250012,5.533007812500045],[115.8771484375001,5.613525390625014],[116.74980468750007,6.977099609374989],[116.8498046875001,6.826708984374989],[116.78808593749997,6.606103515624994],[117.12851562500012,6.968896484375009],[117.2298828125,6.939990234374974],[117.29404296875006,6.676904296875023],[117.60966796875002,6.512646484375054],[117.69375,6.35],[117.64453124999997,6.001855468749994],[117.5011718750001,5.884667968750009],[118.00380859375,6.053320312499991],[118.11582031250006,5.8625],[117.93476562500004,5.7875],[117.97363281249997,5.70625],[118.35312500000012,5.80605468749998],[118.59482421875006,5.592089843750003],[119.22343750000007,5.412646484375031],[119.2663085937501,5.308105468750057],[119.21962890625,5.159814453125037],[118.9125,5.02290039062504],[118.26054687500007,4.988867187500034],[118.18535156250002,4.828515625000051],[118.5625,4.502148437499997],[118.54833984375003,4.379248046875006],[118.008203125,4.250244140625014],[117.6964843750001,4.342822265625045],[117.5744140625001,4.17060546875004]]],[[[117.14160156250003,7.168212890625028],[117.08066406250006,7.115283203124989],[117.06425781250007,7.26069335937504],[117.2640625,7.351660156250006],[117.26679687500004,7.220800781249991],[117.14160156250003,7.168212890625028]]]]},"properties":{"name":"Malaysia","childNum":8}},{"geometry":{"type":"Polygon","coordinates":[[[23.380664062500017,-17.640625],[24.27490234375,-17.481054687500006],[24.73291015625,-17.51777343750001],[25.001757812500017,-17.56855468750001],[25.2587890625,-17.793554687500006],[24.909082031250023,-17.821386718750006],[24.530566406250017,-18.052734375],[24.243945312500017,-18.0234375],[23.599707031250006,-18.4599609375],[23.219335937500006,-17.99970703125001],[20.97412109375,-18.31884765625],[20.9794921875,-21.9619140625],[19.977343750000017,-22.00019531250001],[19.98046875,-24.77675781250001],[19.98046875,-28.310351562500003],[19.98046875,-28.451269531250006],[19.539843750000017,-28.574609375],[19.31269531250001,-28.73330078125001],[19.24580078125001,-28.901660156250003],[19.16171875,-28.938769531250003],[18.310839843750017,-28.88623046875],[17.44794921875001,-28.69814453125001],[17.34785156250001,-28.50117187500001],[17.358691406250017,-28.26943359375001],[17.1884765625,-28.13251953125001],[17.05625,-28.031054687500003],[16.93330078125001,-28.069628906250003],[16.875292968750017,-28.1279296875],[16.841210937500023,-28.21894531250001],[16.81015625,-28.26455078125001],[16.7875,-28.39472656250001],[16.755761718750023,-28.4521484375],[16.62617187500001,-28.487890625],[16.487109375000017,-28.572851562500006],[16.447558593750017,-28.617578125],[15.719042968750017,-27.9658203125],[15.341503906250011,-27.386523437500003],[15.139062500000023,-26.50800781250001],[14.9677734375,-26.31806640625001],[14.837109375000011,-25.033203125],[14.5015625,-24.201953125],[14.462792968750023,-22.44912109375001],[13.450585937500023,-20.91669921875001],[13.168359375000023,-20.184667968750006],[12.458203125000011,-18.9267578125],[11.77587890625,-18.001757812500003],[11.733496093750006,-17.7509765625],[11.743066406250023,-17.24921875000001],[11.902539062500011,-17.2265625],[12.013964843750017,-17.168554687500006],[12.21337890625,-17.2099609375],[12.318457031250006,-17.21337890625],[12.359277343750023,-17.205859375],[12.548144531250017,-17.212695312500003],[13.179492187500017,-16.9716796875],[13.475976562500023,-17.0400390625],[14.017480468750023,-17.40888671875001],[16.1484375,-17.390234375],[18.396386718750023,-17.3994140625],[18.95527343750001,-17.803515625],[20.1943359375,-17.863671875],[20.745507812500023,-18.01972656250001],[22.32421875,-17.8375],[23.380664062500017,-17.640625]]]},"properties":{"name":"Namibia","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[167.54443359375003,-22.62324218750001],[167.44375,-22.63916015624997],[167.44345703125006,-22.541406250000037],[167.54443359375003,-22.62324218750001]]],[[[168.01093750000004,-21.429980468750017],[168.1390625,-21.44521484375001],[168.12070312500012,-21.615820312500034],[167.96679687500003,-21.641601562499957],[167.81542968749997,-21.392675781249963],[167.9884765625001,-21.337890624999986],[168.01093750000004,-21.429980468750017]]],[[[167.40087890625003,-21.16064453125003],[167.07265625,-20.99726562499997],[167.03271484374997,-20.922558593750026],[167.18945312500003,-20.803515625000017],[167.05576171875012,-20.720214843750014],[167.29794921875006,-20.732519531250034],[167.40087890625003,-21.16064453125003]]],[[[164.20234375000004,-20.246093749999957],[164.4359375,-20.282226562499957],[165.191796875,-20.768847656249974],[165.66279296875004,-21.267187499999977],[166.94238281250003,-22.09013671875003],[166.97031250000012,-22.32285156250002],[166.77412109375004,-22.37617187500004],[166.4679687500001,-22.256054687499997],[164.92744140625004,-21.289843749999974],[164.16972656250007,-20.48017578125004],[164.05966796875012,-20.141503906249966],[164.20234375000004,-20.246093749999957]]]]},"properties":{"name":"New Caledonia","childNum":4}},{"geometry":{"type":"Polygon","coordinates":[[[14.97900390625,22.99619140624999],[15.181835937500011,21.523388671874997],[15.607324218750023,20.954394531250003],[15.587109375000011,20.733300781249994],[15.963183593750017,20.34619140625],[15.735058593750011,19.904052734375],[15.474316406250011,16.908398437499997],[14.367968750000017,15.750146484374994],[13.4482421875,14.380664062500003],[13.505761718750023,14.134423828124994],[13.606347656250023,13.70458984375],[13.426953125000011,13.701757812499991],[13.323828125,13.670849609374997],[12.871679687500006,13.449023437500003],[12.65478515625,13.3265625],[12.463183593750017,13.09375],[10.958886718750023,13.371533203124997],[10.475878906250017,13.330224609374994],[10.229589843750006,13.281005859375],[10.184667968750006,13.270117187499991],[9.615917968750011,12.810644531249991],[9.201562500000023,12.821484375],[8.750585937500006,12.908154296874997],[8.4560546875,13.059667968749991],[8.095019531250017,13.291162109374994],[7.955761718750011,13.32275390625],[7.788671875,13.337890625],[7.056738281250006,13.000195312499997],[6.804296875,13.107666015625],[6.2998046875,13.658789062499991],[6.184277343750011,13.66367187499999],[5.838183593750017,13.765380859375],[5.491992187500017,13.872851562500003],[5.415820312500017,13.859179687500003],[5.361621093750017,13.836865234374997],[5.241894531250011,13.757226562499994],[4.664843750000017,13.733203125],[4.147558593750006,13.457714843749997],[3.947851562500006,12.775048828124994],[3.646679687500011,12.529980468749997],[3.595410156250011,11.6962890625],[2.805273437500006,12.383837890624989],[2.366015625000017,12.221923828125],[2.38916015625,11.897070312499991],[2.072949218750011,12.309375],[2.226269531250011,12.466064453125],[2.104589843750006,12.701269531249991],[1.56494140625,12.635400390624994],[0.9873046875,13.041894531249994],[0.988476562500011,13.36484375],[1.201171875,13.357519531249991],[0.6181640625,13.703417968750003],[0.42919921875,13.972119140624997],[0.382519531250011,14.245800781249997],[0.163867187500017,14.497216796874994],[0.217480468750011,14.911474609374991],[0.947460937500011,14.982128906249997],[1.300195312500023,15.272265625],[3.001074218750006,15.340966796874994],[3.06015625,15.427197265624997],[3.504296875000023,15.356347656249994],[3.5205078125,15.483105468749997],[3.842968750000011,15.701708984375003],[4.121289062500011,16.357714843750003],[4.234667968750017,16.996386718750003],[4.227636718750006,19.142773437499997],[5.836621093750011,19.479150390624994],[7.481738281250017,20.873095703125003],[11.967871093750006,23.517871093750003],[13.48125,23.18017578125],[14.215527343750011,22.619677734375003],[14.97900390625,22.99619140624999]]]},"properties":{"name":"Niger","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[7.30078125,4.418164062500026],[7.140429687500017,4.395117187500034],[7.227343750000045,4.527343749999972],[7.30078125,4.418164062500026]]],[[[6.804296875,13.107666015625],[7.056738281250006,13.00019531250004],[7.788671875,13.337890625],[7.955761718750011,13.322753906250028],[8.095019531250045,13.29116210937498],[8.750585937500034,12.908154296875026],[9.20156250000008,12.82148437500004],[9.615917968750011,12.810644531249963],[10.184667968750063,13.270117187499963],[10.229589843749977,13.281005859375043],[10.475878906250074,13.330224609375037],[10.958886718750051,13.371533203125011],[12.463183593750017,13.09375],[12.654785156250057,13.3265625],[13.426953125000068,13.701757812499963],[13.606347656250023,13.704589843750014],[13.932324218750011,13.258496093749997],[14.06396484375,13.078515625],[14.160058593750023,12.612792968749986],[14.184863281250017,12.447216796874997],[14.272851562500023,12.356494140624989],[14.518945312500051,12.298242187500023],[14.619726562500063,12.150976562500048],[14.559765625000011,11.492285156249963],[14.20234375000004,11.268164062499963],[14.143261718750068,11.248535156250043],[14.056738281250034,11.245019531250037],[13.981445312500057,11.21186523437504],[13.892089843750057,11.140087890624983],[13.699902343749983,10.873144531250048],[13.53535156250004,10.605078124999963],[13.414550781250028,10.171435546874989],[13.269921875000051,10.036181640624974],[13.198730468750028,9.563769531250003],[12.929492187500074,9.426269531249972],[12.87568359375004,9.303515625000017],[12.80654296875008,8.886621093749994],[12.7822265625,8.817871093750014],[12.651562500000011,8.667773437499989],[12.40351562500004,8.59555664062502],[12.311328125000074,8.419726562499989],[12.2333984375,8.282324218749977],[12.016015625000051,7.589746093750009],[11.809179687500006,7.345068359374991],[11.767382812500017,7.272265624999989],[11.861425781249977,7.11640625000004],[11.657519531250017,6.951562500000023],[11.580078125000057,6.88886718750004],[11.551660156250023,6.697265625],[11.153320312500057,6.437939453125011],[11.1064453125,6.457714843750054],[11.032519531250045,6.697900390625037],[10.954199218750006,6.7765625],[10.60625,7.063085937500006],[10.413183593750006,6.877734375],[10.293066406250034,6.876757812499974],[10.205468750000051,6.891601562499986],[10.185546874999972,6.91279296875004],[10.167773437500017,6.959179687499983],[10.143554687500057,6.99643554687502],[10.038867187500045,6.921386718750014],[9.874218750000068,6.803271484375017],[9.82070312500008,6.783935546874986],[9.779882812500034,6.760156250000023],[9.725585937499972,6.65],[9.659960937500017,6.531982421874986],[9.490234375,6.418652343749997],[8.997167968750006,5.917724609375],[8.715625,5.046875],[8.514843750000068,4.724707031250034],[8.23378906250008,4.907470703124972],[8.293066406250006,4.557617187500014],[7.644238281250068,4.525341796875011],[7.530761718750028,4.655175781249994],[7.284375,4.547656250000031],[7.076562500000051,4.716162109374991],[7.15468750000008,4.514404296875],[6.92324218750008,4.390673828125017],[6.767675781250006,4.724707031250034],[6.860351562500057,4.373339843750045],[6.633007812500011,4.340234375000051],[6.579980468750051,4.475976562499994],[6.554589843750023,4.34140625000002],[6.263671875,4.309423828124991],[6.270996093749972,4.432128906250028],[6.173339843749972,4.277392578125031],[5.970703125,4.338574218749983],[5.587792968750051,4.647216796874972],[5.448144531250023,4.945849609374974],[5.383300781250057,5.129003906249977],[5.475976562500023,5.153857421874989],[5.370019531250023,5.195019531250026],[5.367968750000045,5.337744140624963],[5.549707031250023,5.474218749999963],[5.385839843750034,5.401757812500037],[5.199218750000028,5.533544921874977],[5.456640624999977,5.61171875],[5.327343750000011,5.707519531249986],[5.112402343750034,5.64155273437504],[4.861035156250068,6.026318359374997],[4.431347656250011,6.348583984375026],[3.450781249999977,6.427050781250017],[3.71699218750004,6.597949218750017],[3.430175781250057,6.525],[3.335546875000063,6.396923828125011],[2.706445312500051,6.369238281249963],[2.735644531250045,6.595703125],[2.753710937499989,6.661767578124966],[2.774609374999983,6.711718750000017],[2.752929687500028,6.771630859374966],[2.731738281250045,6.852832031249989],[2.721386718750068,6.980273437500017],[2.75673828125008,7.067919921875017],[2.750488281250057,7.39506835937496],[2.765820312500068,7.422509765625051],[2.783984375000045,7.443408203125045],[2.78515625,7.476855468750017],[2.703125,8.371826171875],[2.774804687500023,9.048535156250026],[3.044921875,9.08383789062502],[3.325195312499972,9.778466796875051],[3.60205078125,10.004541015625009],[3.646582031250006,10.408984374999989],[3.771777343750017,10.417626953124966],[3.83447265625,10.607421875],[3.7568359375,10.76875],[3.71640625,11.07958984375],[3.695312499999972,11.12031250000004],[3.63886718750004,11.176855468750006],[3.487792968749972,11.395410156250037],[3.490527343750017,11.499218750000054],[3.55390625000004,11.631884765624989],[3.595410156250068,11.696289062500057],[3.664746093750068,11.762451171875028],[3.646679687500011,12.529980468749983],[3.947851562500006,12.775048828124994],[4.147558593750006,13.457714843749983],[4.664843750000045,13.733203124999974],[5.241894531250011,13.757226562499994],[5.361621093750074,13.836865234375054],[5.415820312500017,13.859179687499974],[5.491992187500074,13.872851562500003],[6.2998046875,13.658789062500006],[6.804296875,13.107666015625]]]]},"properties":{"name":"Nigeria","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[-83.6419921875,10.917236328125],[-83.71293945312499,10.785888671875],[-83.91928710937499,10.7353515625],[-84.6341796875,11.045605468749997],[-84.9091796875,10.9453125],[-85.5841796875,11.189453125],[-85.7443359375,11.06210937499999],[-87.670166015625,12.965673828124991],[-87.58505859374999,13.043310546874991],[-87.42436523437499,12.921142578125],[-87.33725585937499,12.979248046875],[-87.05917968749999,12.991455078125],[-87.00932617187499,13.0078125],[-86.918212890625,13.223583984374997],[-86.87353515625,13.266503906249994],[-86.792138671875,13.27978515625],[-86.72929687499999,13.284375],[-86.710693359375,13.313378906249994],[-86.76352539062499,13.63525390625],[-86.77060546874999,13.69873046875],[-86.758984375,13.746142578125003],[-86.733642578125,13.763476562500003],[-86.61025390625,13.774853515624997],[-86.376953125,13.755664062500003],[-86.33173828125,13.770068359375003],[-86.238232421875,13.899462890625003],[-86.15122070312499,13.994580078124997],[-86.0892578125,14.037207031249991],[-86.04038085937499,14.050146484374991],[-85.9837890625,13.965673828124991],[-85.78671875,13.844433593749997],[-85.75341796875,13.85205078125],[-85.73393554687499,13.858691406250003],[-85.727734375,13.876074218749991],[-85.731201171875,13.931835937499997],[-85.68193359374999,13.982568359374994],[-85.20834960937499,14.311816406250003],[-85.059375,14.582958984374997],[-84.86044921874999,14.809765625],[-84.645947265625,14.661083984374997],[-84.53764648437499,14.633398437499991],[-83.635498046875,14.876416015624997],[-83.5365234375,14.977001953124997],[-83.4150390625,15.008056640625],[-83.15751953124999,14.993066406249994],[-83.18535156249999,14.956396484374991],[-83.21591796874999,14.932373046875],[-83.27988281249999,14.812792968750003],[-83.344384765625,14.902099609375],[-83.413720703125,14.825341796874994],[-83.29921875,14.7490234375],[-83.187744140625,14.340087890625],[-83.4123046875,13.99648437499999],[-83.567333984375,13.3203125],[-83.5109375,12.411816406249997],[-83.627197265625,12.459326171874991],[-83.59335937499999,12.713085937499997],[-83.75424804687499,12.501953125],[-83.680419921875,12.024316406249994],[-83.7671875,12.059277343749997],[-83.82890624999999,11.861035156249997],[-83.70458984375,11.824560546874991],[-83.6517578125,11.642041015624997],[-83.86787109375,11.300048828125],[-83.6419921875,10.917236328125]]]},"properties":{"name":"Nicaragua","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-169.80341796875,-19.0830078125],[-169.94833984375,-19.072851562500006],[-169.834033203125,-18.96601562500001],[-169.80341796875,-19.0830078125]]]},"properties":{"name":"Niue","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-68.205810546875,12.144580078124989],[-68.25434570312495,12.032080078124977],[-68.36923828125,12.301953124999983],[-68.205810546875,12.144580078124989]]],[[[4.226171875000034,51.38647460937503],[3.902050781250011,51.20766601562502],[3.43251953125008,51.24575195312505],[3.35009765625,51.37768554687503],[4.226171875000034,51.38647460937503]]],[[[3.94912109375008,51.73945312500001],[4.07509765625008,51.648779296875006],[3.699023437500017,51.70991210937501],[3.94912109375008,51.73945312500001]]],[[[4.886132812500023,53.07070312500005],[4.70917968750004,53.036035156249994],[4.886425781249983,53.18330078124998],[4.886132812500023,53.07070312500005]]],[[[4.226171875000034,51.38647460937503],[3.448925781250068,51.54077148437503],[3.743945312500017,51.596044921875006],[4.27412109375004,51.47163085937498],[4.004785156250051,51.595849609374966],[4.182617187500057,51.61030273437498],[3.946875,51.810546875],[4.482812500000023,52.30917968749998],[4.76875,52.941308593749966],[5.061230468750068,52.96064453125001],[5.532031250000074,53.268701171874966],[6.062207031250068,53.407080078125006],[6.816210937500045,53.44116210937503],[7.197265625000028,53.28227539062499],[7.033007812500045,52.65136718749997],[6.710742187500045,52.61787109374998],[6.748828125000074,52.464013671874994],[7.035156250000057,52.38022460937498],[6.724511718749994,52.080224609374966],[6.800390625,51.96738281249998],[5.948730468750057,51.80268554687501],[6.198828125000034,51.45],[6.129980468750034,51.14741210937501],[5.857519531250034,51.030126953125006],[6.048437500000034,50.90488281250006],[5.993945312500017,50.75043945312504],[5.693554687500011,50.774755859375006],[5.796484375000034,51.153076171875],[5.214160156250045,51.278955078124966],[5.03095703125004,51.46909179687498],[4.226171875000034,51.38647460937503]]],[[[5.325781250000063,53.38574218750003],[5.190234375000074,53.39179687500001],[5.582617187500063,53.438085937500034],[5.325781250000063,53.38574218750003]]]]},"properties":{"name":"Netherlands","childNum":6,"cp":[5.0752777,52.358465]}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[5.085839843750023,60.30756835937501],[5.089062500000068,60.188769531250045],[4.95722656250004,60.44726562500006],[5.085839843750023,60.30756835937501]]],[[[4.958691406250068,61.084570312500034],[4.79902343750004,61.08271484375001],[4.861621093749989,61.19384765625],[4.958691406250068,61.084570312500034]]],[[[8.10273437500004,63.33759765625004],[7.804003906250017,63.413916015625034],[8.073535156250045,63.47080078124998],[8.10273437500004,63.33759765625004]]],[[[8.470800781250063,63.66713867187502],[8.287109375000028,63.68715820312502],[8.764648437500057,63.804638671874955],[8.78652343750008,63.703466796875034],[8.470800781250063,63.66713867187502]]],[[[11.2314453125,64.865869140625],[10.739843750000034,64.87031250000001],[11.02099609375,64.97871093749995],[11.2314453125,64.865869140625]]],[[[12.971777343750063,67.87412109375],[12.824023437500074,67.82124023437498],[13.068066406250068,68.07133789062505],[12.971777343750063,67.87412109375]]],[[[13.872851562500045,68.26533203125004],[14.096777343750034,68.218603515625],[13.229394531250051,67.995361328125],[13.300195312499994,68.16044921875007],[13.872851562500045,68.26533203125004]]],[[[15.207128906250006,68.943115234375],[15.222070312500023,68.61630859375003],[14.404687500000051,68.663232421875],[15.037792968750068,69.00053710937507],[15.207128906250006,68.943115234375]]],[[[15.760351562500006,68.56123046875001],[16.328906250000017,68.87631835937498],[16.519238281250068,68.63300781249998],[15.975292968750011,68.402490234375],[14.257519531249983,68.19077148437503],[15.412597656250028,68.61582031250003],[15.483007812500006,69.04345703125003],[16.04804687500001,69.30205078125002],[15.760351562500006,68.56123046875001]]],[[[17.503027343750034,69.59624023437502],[18.004101562500068,69.50498046874998],[17.95068359375003,69.19814453125],[17.487890625000063,69.19682617187499],[17.08251953124997,69.013671875],[16.81044921875008,69.07070312499997],[17.001757812500045,69.36191406250006],[17.36083984375003,69.38149414062497],[17.503027343750034,69.59624023437502]]],[[[29.956152343750006,69.79677734375002],[29.766210937500006,69.76752929687501],[29.835839843749994,69.90556640625005],[29.956152343750006,69.79677734375002]]],[[[20.779199218750023,70.08974609375002],[20.46425781250005,70.0765625],[20.492773437500006,70.20332031249995],[20.78603515625008,70.21953124999999],[20.779199218750023,70.08974609375002]]],[[[19.25507812500001,70.06640625000006],[19.607812500000023,70.019140625],[19.334765625000074,69.82026367187501],[18.784765625000034,69.57900390624997],[18.12988281250003,69.557861328125],[18.34931640625004,69.76787109374999],[18.67402343750004,69.78164062500002],[19.13271484375005,70.24414062500003],[19.25507812500001,70.06640625000006]]],[[[19.76748046875005,70.21669921875002],[20.005957031250034,70.07622070312502],[19.599023437499994,70.26616210937507],[19.76748046875005,70.21669921875002]]],[[[23.615332031250034,70.54931640625003],[23.15917968750003,70.28261718750005],[22.941015625000063,70.444580078125],[23.546679687500017,70.61708984374997],[23.615332031250034,70.54931640625003]]],[[[24.01757812500003,70.56738281249997],[23.716601562500074,70.561865234375],[23.778417968750063,70.74736328125005],[24.01757812500003,70.56738281249997]]],[[[23.440527343750063,70.81577148437503],[22.8291015625,70.54155273437505],[22.358691406250017,70.514794921875],[21.99453125000008,70.65712890624997],[23.440527343750063,70.81577148437503]]],[[[30.869726562500006,69.78344726562506],[30.860742187499994,69.53842773437503],[30.18017578124997,69.63583984375],[30.08730468750005,69.43286132812503],[29.38828125,69.29814453125005],[28.96582031250003,69.02197265625],[28.846289062500006,69.17690429687502],[29.33339843750005,69.47299804687503],[29.14160156250003,69.67143554687505],[27.747851562500045,70.06484375],[27.127539062500063,69.90649414062497],[26.525390625000057,69.91503906250003],[26.07246093750004,69.69155273437497],[25.748339843750017,68.99013671875],[24.94140625000003,68.59326171875006],[23.85400390625,68.80590820312503],[23.324023437500017,68.64897460937502],[22.410937500000074,68.719873046875],[21.59375,69.273583984375],[21.06611328125001,69.21411132812497],[21.065722656250017,69.04174804687503],[20.622167968750006,69.036865234375],[20.116699218750057,69.02089843750005],[20.348046875000023,68.84873046875003],[19.969824218750063,68.35639648437501],[18.303027343750045,68.55541992187497],[17.91669921875001,67.96489257812502],[17.324609375000023,68.10380859374999],[16.783593750000023,67.89501953125],[16.12744140625,67.42583007812507],[16.40351562500004,67.05498046875002],[15.422949218750006,66.48984374999998],[15.483789062500051,66.30595703124999],[14.543261718750045,66.12934570312498],[14.47968750000004,65.30146484374998],[13.650292968750023,64.58154296874997],[14.077636718750028,64.464013671875],[14.141210937500006,64.17353515624998],[13.960546875000063,64.01401367187498],[13.203515625000023,64.07509765625],[12.792773437500017,64],[12.175195312500051,63.595947265625],[11.999902343750051,63.29169921875001],[12.303515625000074,62.28559570312501],[12.155371093750006,61.720751953125045],[12.88076171875008,61.35229492187506],[12.706054687500028,61.059863281250074],[12.29414062500004,61.00268554687506],[12.588671874999989,60.450732421875045],[12.486132812500074,60.10678710937506],[11.680761718750034,59.59228515625003],[11.798144531250074,59.28989257812498],[11.64277343750004,58.92607421875002],[11.470703125000057,58.909521484375034],[11.388281250000063,59.036523437499966],[10.834472656250028,59.18393554687498],[10.595312500000063,59.764550781249966],[10.179394531250068,59.00927734375003],[9.842578125000017,58.95849609374997],[9.557226562500063,59.11269531250002],[9.65693359375004,58.97119140624997],[8.166113281250063,58.145312500000045],[7.0048828125,58.024218750000074],[6.877050781250006,58.15073242187498],[6.590527343750068,58.09731445312502],[6.659863281250068,58.26274414062499],[5.706835937500074,58.52363281250001],[5.55556640625008,58.975195312500006],[6.099023437500023,58.87026367187502],[6.363281250000028,59.00092773437501],[6.099414062500017,58.951953125000074],[5.88916015625,59.097949218750045],[5.951855468750068,59.299072265625],[6.415332031250074,59.547119140625],[5.17324218750008,59.16254882812498],[5.2421875,59.564306640625034],[5.472460937500017,59.713085937499955],[5.77216796875004,59.66093749999999],[6.216601562499989,59.818359375],[5.73046875,59.863085937500045],[6.348730468750006,60.35297851562504],[6.57363281250008,60.36059570312497],[6.526855468750057,60.152929687500034],[6.995703125,60.511962890625],[6.1533203125,60.34624023437499],[5.145800781250074,59.63881835937502],[5.205664062500006,60.087939453125045],[5.688574218749977,60.12319335937502],[5.285839843750011,60.20571289062505],[5.13710937500008,60.445605468750074],[5.648339843750051,60.68798828124997],[5.244042968750023,60.569580078125],[5.115820312500006,60.63598632812503],[5.008593750000017,61.038183593750006],[6.777832031250028,61.142431640625006],[7.038671875000063,60.952929687500045],[7.040136718750006,61.091162109375034],[7.604492187500057,61.210546875000034],[7.34658203125008,61.30058593749999],[7.442578125000011,61.43461914062502],[7.173535156250011,61.16596679687501],[6.599902343750017,61.28964843749998],[6.383496093750068,61.133886718750034],[5.451269531250034,61.10234375000002],[5.106738281250017,61.187548828125045],[5.002734375000074,61.43359375],[5.338671875000017,61.485498046874994],[4.927832031249977,61.71069335937506],[4.93007812499999,61.878320312499994],[6.01582031250004,61.7875],[6.730761718750045,61.86977539062505],[5.266894531250045,61.935595703125045],[5.143164062500063,62.159912109375],[5.908300781249977,62.41601562500003],[6.083496093750057,62.349609375],[6.580078125000057,62.407275390625045],[6.692382812500028,62.46806640624999],[6.136132812500051,62.40747070312497],[6.352929687500051,62.61113281249999],[7.653125,62.56401367187499],[7.538378906250074,62.67207031249998],[8.045507812500006,62.77124023437503],[6.734960937500006,62.72070312500003],[6.940429687500028,62.930468750000045],[7.571875,63.09951171875002],[8.100585937500028,63.090966796874966],[8.623144531250006,62.84624023437502],[8.158007812500017,63.16152343750005],[8.635546875000045,63.34233398437502],[8.360742187500023,63.498876953125034],[8.576171875000028,63.60117187499998],[9.135839843750006,63.593652343749966],[9.156054687500045,63.459326171875034],[9.696875,63.624560546875045],[10.020996093750028,63.39082031250004],[10.76015625000008,63.461279296875006],[10.725292968750068,63.625],[11.370703125000034,63.804833984374994],[11.175585937500074,63.89887695312498],[11.457617187500063,64.00297851562505],[11.306640625000028,64.04887695312499],[10.91425781250004,63.92109374999998],[10.934863281250045,63.770214843749955],[10.055078125000051,63.5126953125],[9.567285156250051,63.70615234374998],[10.565625,64.418310546875],[11.523828125000051,64.744384765625],[11.632910156250063,64.81391601562495],[11.296777343750051,64.75478515625],[11.489355468750034,64.975830078125],[12.15966796875,65.178955078125],[12.508398437499977,65.09941406250005],[12.915527343750057,65.33925781249997],[12.417578125000063,65.18408203124997],[12.133886718749977,65.27915039062498],[12.68886718750008,65.90219726562498],[13.033105468750051,65.95625],[12.783789062500063,66.10043945312506],[14.034179687500057,66.29755859374998],[13.118847656250011,66.23066406250004],[13.211425781250028,66.64082031250001],[13.959472656250028,66.79433593750002],[13.651562500000011,66.90708007812498],[14.10878906250008,67.11923828125003],[15.41572265625004,67.20244140625002],[14.441699218750045,67.27138671875005],[14.961914062500057,67.57426757812502],[15.59443359375004,67.34853515625005],[15.691503906250006,67.52138671875],[15.24873046875004,67.6021484375],[15.303906250000011,67.76528320312502],[14.854687500000068,67.66333007812506],[14.798925781250063,67.80932617187503],[15.13427734375,67.97270507812502],[15.621386718750017,67.94829101562502],[15.316015624999977,68.06875],[16.007910156250006,68.22871093750004],[16.312304687500017,67.88144531249998],[16.20380859375001,68.31674804687503],[17.552832031250063,68.42626953125006],[16.51435546875004,68.53256835937503],[18.101464843749994,69.15629882812499],[18.259765625,69.47060546875],[18.915917968750023,69.33559570312502],[18.614453125000068,69.49057617187498],[19.197265625000057,69.74785156249999],[19.722460937500017,69.78164062500002],[19.64150390625005,69.42402343750001],[20.324218750000057,69.94531249999997],[20.054492187500074,69.33266601562497],[20.486718750000023,69.54208984375],[20.739453124999983,69.52050781250003],[20.622070312500057,69.91391601562498],[21.163085937500057,69.88950195312498],[21.432910156250045,70.01318359375006],[21.974707031250034,69.83457031249998],[21.355761718750045,70.23339843749997],[22.321972656250068,70.264501953125],[22.684570312500057,70.374755859375],[23.35390625000008,69.98339843750003],[23.3291015625,70.20722656249995],[24.420019531250034,70.70200195312503],[24.263476562500017,70.82631835937497],[24.658007812500017,71.00102539062505],[25.264648437500057,70.843505859375],[25.768164062500063,70.85317382812502],[25.043847656250023,70.10903320312502],[26.66132812500004,70.93974609374999],[26.585058593750034,70.41000976562498],[26.989355468750063,70.51137695312502],[27.183691406250034,70.74404296875],[27.546484375000063,70.80400390625005],[27.23525390625008,70.94721679687498],[27.59707031250005,71.09130859375003],[28.392285156250068,70.97529296875004],[27.898046875,70.67792968750001],[28.271777343750017,70.66796875000003],[28.192968750000034,70.24858398437505],[28.83154296875003,70.86396484375001],[29.7375,70.646826171875],[30.065136718750097,70.70297851562498],[30.944140625000017,70.27441406249997],[30.262988281250074,70.12470703125004],[28.804296875000063,70.09252929687506],[29.601367187500017,69.97675781249998],[29.792089843750063,69.727880859375],[30.08828125,69.71757812500005],[30.237597656250017,69.86220703125002],[30.428320312500006,69.722265625],[30.869726562500006,69.78344726562506]]],[[[25.58632812500005,71.14208984375],[26.13378906250003,70.99580078125004],[25.582031250000057,70.960791015625],[25.31494140625,71.03413085937504],[25.58632812500005,71.14208984375]]],[[[-8.953564453124983,70.83916015625002],[-8.001367187499966,71.17768554687495],[-8.002099609374937,71.04125976562497],[-8.953564453124983,70.83916015625002]]],[[[19.219335937500006,74.39101562500002],[18.86123046875008,74.51416015624997],[19.182910156250045,74.51791992187503],[19.219335937500006,74.39101562500002]]],[[[21.60810546875004,78.59570312499997],[22.04316406250004,78.57695312500007],[22.29951171875004,78.22817382812497],[23.451953125000074,78.14946289062502],[23.11669921874997,77.99150390624999],[24.901855468750057,77.756591796875],[22.55371093750003,77.26665039062502],[22.685351562500045,77.55351562500002],[20.928125,77.45966796874998],[21.653125,77.92353515624998],[20.22792968750005,78.47783203125005],[21.60810546875004,78.59570312499997]]],[[[11.250292968750017,78.610693359375],[12.116406250000068,78.232568359375],[11.121289062500011,78.46328125],[10.558203125000063,78.90292968750003],[11.250292968750017,78.610693359375]]],[[[29.047070312500068,78.91206054687504],[29.69667968750005,78.90473632812495],[27.88906250000005,78.8521484375],[28.511132812500023,78.96733398437502],[29.047070312500068,78.91206054687504]]],[[[16.786718750000034,79.90673828125],[17.834570312499977,79.80004882812503],[17.66875,79.38593750000004],[18.39736328125008,79.60517578125001],[18.677832031250006,79.26171875000003],[19.893554687500057,79.05620117187499],[20.61103515625004,79.10664062499998],[21.388769531250034,78.74042968749998],[19.67675781250003,78.60957031249995],[16.700488281250045,76.57929687499995],[14.365820312500034,77.23447265625003],[13.995703125000034,77.50820312500002],[14.69501953125004,77.525048828125],[14.920800781250023,77.68881835937506],[17.033300781250006,77.79770507812503],[16.91406250000003,77.89799804687505],[14.089941406250063,77.77138671875],[13.680566406250051,78.028125],[14.307226562500006,78.00507812500001],[15.783886718750011,78.32705078125005],[17.00292968750003,78.36938476562497],[16.44863281250008,78.50356445312502],[16.78261718750008,78.66362304687505],[15.417382812500023,78.47324218749998],[15.384179687500023,78.77119140625001],[15.01630859375004,78.63012695312497],[14.689257812500017,78.720947265625],[14.638281250000034,78.41459960937502],[14.110449218750063,78.27089843749997],[13.150195312499989,78.2375],[11.365429687500011,78.95039062500004],[12.323437500000068,78.91425781249995],[12.083984375000028,79.26752929687498],[11.579785156250068,79.28349609375005],[11.208105468750034,79.12963867187503],[10.737597656250017,79.52016601562502],[10.804003906250045,79.79877929687504],[11.150390625,79.71699218749998],[11.702343750000011,79.82060546875005],[12.287792968750068,79.713134765625],[12.279980468749983,79.81596679687507],[13.692871093749972,79.860986328125],[13.777539062500011,79.71528320312498],[12.555371093750068,79.56948242187502],[13.333789062500017,79.57480468750006],[14.029589843750017,79.34414062500005],[14.59365234375008,79.79873046875002],[16.34375,78.97612304687502],[15.816113281250011,79.68183593750001],[16.245703125000034,80.04946289062502],[16.786718750000034,79.90673828125]]],[[[32.52597656250006,80.119140625],[31.48193359374997,80.10791015625003],[33.62929687499999,80.21743164062497],[32.52597656250006,80.119140625]]],[[[20.897851562500023,80.24995117187501],[22.289746093749983,80.04921874999997],[22.450781250000034,80.40224609375005],[23.00800781250004,80.473974609375],[23.114550781250074,80.18696289062498],[24.29755859375004,80.36040039062505],[26.86083984375,80.16000976562498],[27.19863281250008,79.90659179687506],[25.641210937500034,79.40302734374995],[23.94775390625,79.19428710937498],[22.903710937500023,79.23066406250001],[22.865527343750045,79.41186523437497],[20.861132812500017,79.39785156249997],[20.128222656250074,79.489599609375],[19.674609375000045,79.591162109375],[20.784082031250023,79.74858398437502],[18.725,79.7607421875],[18.25537109375,79.92919921875003],[18.855957031250057,80.03662109375],[17.91689453125005,80.14311523437502],[19.343359375000063,80.11640624999998],[19.733300781249994,80.47783203124999],[20.897851562500023,80.24995117187501]]]]},"properties":{"name":"Norway","childNum":27}},{"geometry":{"type":"Polygon","coordinates":[[[87.984375,27.133935546874994],[87.9931640625,27.086083984374994],[88.11103515625001,26.928466796875],[88.1572265625,26.807324218749997],[88.16152343750002,26.724804687499997],[88.11152343750001,26.58642578125],[88.05488281250001,26.430029296875],[88.02695312500003,26.39501953125],[87.9951171875,26.382373046874996],[87.28740234374999,26.360302734374997],[87.01640624999999,26.555419921875],[86.70136718750001,26.43505859375],[86.00732421875,26.649365234374997],[85.79453125000003,26.604150390624994],[85.7373046875,26.63974609375],[85.6484375,26.829003906249994],[85.56845703125003,26.83984375],[85.29296875,26.741015625],[85.19179687500002,26.766552734374997],[84.68535156249999,27.041015625],[84.65380859375,27.091699218749994],[84.65478515625,27.203662109374996],[84.64072265625003,27.249853515625],[84.61015624999999,27.298681640625],[84.48085937500002,27.348193359374996],[84.22978515624999,27.42783203125],[84.09101562500001,27.491357421874994],[83.82880859375001,27.377832031249994],[83.74697265625002,27.395947265624997],[83.55166015625002,27.456347656249996],[83.44716796875002,27.46533203125],[83.38398437500001,27.44482421875],[83.36943359374999,27.41025390625],[83.28974609375001,27.370996093749994],[82.7333984375,27.518994140624997],[82.71083984375002,27.5966796875],[82.67734375000003,27.6734375],[82.6298828125,27.687060546874996],[82.45136718750001,27.671826171874997],[82.28769531250003,27.756542968749997],[82.11191406250003,27.864941406249997],[82.03701171875002,27.900585937499997],[81.98769531250002,27.913769531249997],[81.94521484375002,27.899267578125],[81.896875,27.874462890624997],[81.85263671875003,27.867089843749994],[81.1689453125,28.335009765624996],[80.58701171875003,28.649609375],[80.51787109374999,28.665185546874994],[80.49580078125001,28.635791015624996],[80.47910156250003,28.604882812499994],[80.41855468750003,28.612011718749997],[80.32480468750003,28.66640625],[80.2265625,28.723339843749997],[80.07070312500002,28.83017578125],[80.05166015625002,28.8703125],[80.08457031250003,28.994189453124996],[80.13046875000003,29.100390625],[80.16953125000003,29.124316406249996],[80.23300781250003,29.194628906249996],[80.25595703125003,29.318017578124994],[80.2548828125,29.42333984375],[80.31689453125,29.572070312499996],[80.40185546875,29.730273437499996],[80.54902343750001,29.899804687499994],[80.81992187500003,30.119335937499997],[80.84814453125,30.13974609375],[80.90761718750002,30.171923828124996],[80.96611328124999,30.180029296875],[81.17714843750002,30.039892578125],[81.25507812500001,30.093310546874996],[81.41718750000001,30.337597656249997],[81.64189453124999,30.3875],[81.85488281250002,30.36240234375],[82.04335937500002,30.3267578125],[82.220703125,30.063867187499994],[83.15546875000001,29.612646484375],[83.58349609375,29.18359375],[83.93593750000002,29.279492187499997],[84.02197265625,29.253857421874997],[84.10136718749999,29.219970703125],[84.12783203125002,29.156298828124996],[84.17558593749999,29.036376953125],[84.22871093750001,28.911767578124994],[84.796875,28.560205078124994],[84.85507812500003,28.553613281249994],[85.06914062499999,28.609667968749996],[85.12636718750002,28.60263671875],[85.15908203125002,28.592236328124997],[85.16015625,28.571875],[85.12148437500002,28.484277343749994],[85.08857421875001,28.372265625],[85.12246093750002,28.315966796874996],[85.21210937500001,28.292626953124994],[85.41064453125,28.276025390624994],[85.67832031250003,28.27744140625],[85.75947265625001,28.220654296874997],[85.84023437500002,28.1353515625],[85.92167968749999,27.989697265624997],[85.9541015625,27.92822265625],[85.99453125000002,27.910400390625],[86.06416015625001,27.934716796874994],[86.07871093750003,28.08359375],[86.13701171874999,28.11435546875],[86.21796875000001,28.0220703125],[86.32861328125,27.959521484374996],[86.40869140625,27.928662109374997],[86.51689453124999,27.963525390624994],[86.55449218749999,28.085205078125],[86.61445312500001,28.10302734375],[86.69052734375003,28.094921875],[86.71962890625002,28.070654296875],[86.75039062500002,28.0220703125],[86.93378906250001,27.968457031249997],[87.02011718750003,27.928662109374997],[87.14140624999999,27.838330078124997],[87.29072265625001,27.821923828124994],[87.62255859375,27.815185546875],[87.86074218750002,27.886083984375],[88.10976562500002,27.87060546875],[87.984375,27.133935546874994]]]},"properties":{"name":"Nepal","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[169.17822265624997,-52.497265625],[169.12753906250006,-52.570312499999964],[169.02177734375002,-52.49541015624998],[169.17822265624997,-52.497265625]]],[[[166.22109375,-50.76152343749997],[166.2428710937501,-50.84570312499998],[165.88916015624997,-50.80771484374996],[166.10136718750002,-50.538964843750016],[166.26748046875005,-50.558593750000014],[166.22109375,-50.76152343749997]]],[[[168.14492187500005,-46.862207031249966],[168.04316406250004,-46.9326171875],[168.2409179687501,-47.070019531250026],[167.52197265624997,-47.258691406249994],[167.80078125000003,-46.90654296875002],[167.78398437500007,-46.699804687500006],[167.9557617187501,-46.69443359374998],[168.14492187500005,-46.862207031249966]]],[[[166.97949218749997,-45.17968750000003],[167.02265625000004,-45.299804687499986],[166.89267578125012,-45.24052734374999],[166.97949218749997,-45.17968750000003]]],[[[-176.17763671874997,-43.74033203124998],[-176.38173828124997,-43.86679687499998],[-176.40737304687497,-43.7609375],[-176.516552734375,-43.78476562499996],[-176.33359375000003,-44.02529296875004],[-176.51552734374997,-44.11660156249998],[-176.62934570312495,-44.036132812500014],[-176.55512695312504,-43.85195312499998],[-176.84765625000003,-43.82392578125004],[-176.56611328124995,-43.717578125000045],[-176.17763671874997,-43.74033203124998]]],[[[173.91464843750018,-40.86367187500004],[173.78085937500012,-40.921777343749966],[173.964453125,-40.71298828124998],[173.91464843750018,-40.86367187500004]]],[[[173.11533203125006,-41.27929687499997],[173.94716796875005,-40.92412109375],[173.79785156250003,-41.271972656249986],[173.99941406250005,-40.99326171874996],[174.30253906249996,-41.019531249999986],[174.03857421875003,-41.24189453125],[174.37011718750009,-41.1037109375],[174.06933593750009,-41.42949218750002],[174.08369140625015,-41.67080078124998],[174.2831054687501,-41.740625],[173.22119140624997,-42.976562499999986],[172.62402343749997,-43.27246093749996],[172.73476562500005,-43.35478515625003],[172.52666015625002,-43.464746093749966],[172.69345703125006,-43.444335937499986],[172.80703125000005,-43.620996093749994],[173.07324218750003,-43.676171874999966],[173.065625,-43.87460937499998],[172.50273437500002,-43.84365234374998],[172.48037109375,-43.726660156250034],[172.29658203125004,-43.867871093750026],[172.035546875,-43.70175781250002],[172.17978515625006,-43.895996093749986],[171.24072265624997,-44.26416015625003],[171.14628906250002,-44.9123046875],[170.99902343750003,-44.91142578124999],[171.11328125000003,-45.03925781250001],[170.7005859375,-45.68427734374997],[170.77626953125005,-45.870898437499974],[170.4191406250001,-45.94101562499996],[169.68662109375006,-46.55166015625002],[169.34228515625003,-46.62050781250001],[168.38212890625007,-46.60537109374995],[168.1891601562501,-46.362207031249966],[167.8419921875001,-46.366210937499986],[167.539453125,-46.14853515624996],[167.36894531250007,-46.24150390624999],[166.73154296875006,-46.19785156249998],[166.91669921875004,-45.95722656249998],[166.64990234374997,-46.04169921875004],[166.71796875000004,-45.88935546875001],[166.49316406249997,-45.9638671875],[166.48828124999997,-45.83183593750002],[167.0033203125,-45.71210937500004],[166.79765625000002,-45.64560546874999],[166.99082031250012,-45.531738281249986],[166.73398437500012,-45.54355468749999],[166.74306640625,-45.46845703124997],[166.91992187499997,-45.40791015624998],[166.86923828125006,-45.31123046875],[167.15566406250005,-45.410937499999974],[167.23007812500012,-45.29033203125],[167.02587890624997,-45.12363281249998],[167.25947265625004,-45.08222656249997],[167.19453125000004,-44.963476562500034],[167.41074218750006,-44.82792968750003],[167.4662109375,-44.958300781250045],[167.48496093750006,-44.77138671874998],[167.78701171875,-44.59501953125002],[167.90898437500002,-44.66474609375001],[167.85654296875012,-44.50068359374998],[168.45742187500005,-44.030566406250045],[169.17890625000004,-43.9130859375],[169.16953125000006,-43.77705078125],[169.83388671875,-43.53701171875004],[170.24023437499997,-43.163867187500045],[170.39609375000012,-43.18222656249996],[170.30283203125012,-43.10761718750004],[170.61181640625003,-43.091796875000014],[170.5236328125001,-43.00898437500001],[170.6654296875,-42.961230468749974],[170.73525390625005,-43.029785156249986],[170.96992187500004,-42.71835937499996],[171.01171875000003,-42.88505859374999],[171.027734375,-42.696093750000045],[171.31337890625005,-42.460156250000026],[171.48623046875,-41.7947265625],[171.94804687500002,-41.53867187499996],[172.13945312500002,-40.947265625000014],[172.640625,-40.51826171875001],[172.94365234375007,-40.51875],[172.73261718750004,-40.54375],[172.70439453125002,-40.6677734375],[172.988671875,-40.84824218749999],[173.11533203125006,-41.27929687499997]]],[[[175.54316406250015,-36.279296874999986],[175.34619140624997,-36.217773437499986],[175.3895507812501,-36.07773437499996],[175.54316406250015,-36.279296874999986]]],[[[173.26943359375,-34.93476562499998],[173.44785156250012,-34.844335937500034],[173.47265625000003,-34.94697265624998],[174.10400390625003,-35.14287109375002],[174.1431640625,-35.3],[174.32031250000003,-35.246679687500034],[174.58066406250018,-35.78554687500004],[174.39580078124996,-35.79736328124996],[174.8021484375,-36.30947265625001],[174.72246093750007,-36.84121093749998],[175.29951171875004,-36.99326171874996],[175.38535156250012,-37.206933593749966],[175.54248046874997,-37.2013671875],[175.46083984375005,-36.475683593750034],[175.77216796875004,-36.73515625],[176.10839843749997,-37.64511718749998],[177.27402343750012,-37.993457031249974],[178.0091796875,-37.55488281249998],[178.53623046875006,-37.69208984375004],[178.26767578125006,-38.551171875],[177.976171875,-38.72226562500005],[177.90878906250012,-39.23955078125],[177.52294921875003,-39.07382812499999],[177.07675781250012,-39.22177734375002],[176.93925781249996,-39.55527343750002],[177.10986328125009,-39.673144531250045],[176.8421875000001,-40.15781250000002],[175.98291015625003,-41.21328125000002],[175.30976562499998,-41.610644531249974],[175.16562500000012,-41.41738281249995],[174.88134765624997,-41.42402343749997],[174.8656250000001,-41.223046874999966],[174.63535156250012,-41.28945312499999],[175.1625,-40.62158203125],[175.25410156250004,-40.28935546875],[175.1559570312501,-40.11494140625],[175.00927734375009,-39.95214843749996],[173.93437500000013,-39.50908203125002],[173.76367187499997,-39.31875],[173.84433593750006,-39.13935546875001],[174.39843749999997,-38.96259765624998],[174.59736328124998,-38.78505859374995],[174.80166015625005,-37.895507812500014],[174.92802734375002,-37.80449218750003],[174.58583984374994,-37.09775390625002],[174.73427734375,-37.21523437499998],[174.92890625000004,-37.084765625000045],[174.78203125000013,-36.94375],[174.47558593750009,-36.94189453124997],[174.1888671875001,-36.492285156250034],[174.4015625000001,-36.60195312499999],[174.39277343750004,-36.24003906249999],[174.26787109375002,-36.16308593750003],[174.25371093749996,-36.24912109374998],[174.03642578125013,-36.12246093750001],[173.91445312499994,-35.908691406249986],[173.91728515625002,-36.01816406249999],[174.16640624999994,-36.327636718749986],[174.05468749999991,-36.35976562500004],[173.41220703125012,-35.542578125],[173.62617187500004,-35.31914062499996],[173.3763671875001,-35.50009765624996],[173.31396484375003,-35.44335937499996],[173.11669921874997,-35.205273437500026],[173.190625,-35.01621093749998],[172.70595703125005,-34.45517578124998],[173.04394531249997,-34.429101562499994],[172.96376953125,-34.53515625000003],[173.26943359375,-34.93476562499998]]]]},"properties":{"name":"New Zealand","childNum":9}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[58.722070312499994,20.21875],[58.640917968750074,20.210693359375057],[58.64121093750006,20.33735351562501],[58.884375,20.680566406250023],[58.95078125000006,20.516162109375017],[58.722070312499994,20.21875]]],[[[56.38798828125002,24.97919921875004],[56.640625,24.4703125],[57.12304687500003,23.980712890625],[58.773046875,23.517187499999977],[59.42939453125004,22.660839843749955],[59.82324218749997,22.50898437500004],[59.8,22.21992187500001],[59.37148437500005,21.498828125000017],[58.89570312500004,21.11279296874997],[58.47421875000006,20.406884765624966],[58.20898437500003,20.423974609374994],[58.245019531249994,20.599218749999977],[58.16943359375003,20.58950195312505],[57.86181640624997,20.24414062500003],[57.71416015625002,19.678417968749983],[57.81162109375006,19.01708984374997],[56.825976562500074,18.753515625],[56.3834960937501,17.98798828125001],[55.479101562500006,17.84326171875003],[55.25537109375003,17.58564453125004],[55.275195312500074,17.320898437500006],[55.06416015625004,17.038916015625034],[54.06816406250002,17.005517578124966],[53.60986328124997,16.75996093750004],[53.08564453125004,16.648388671874955],[51.977636718750006,18.996142578125074],[54.97734375000002,19.995947265625006],[55.64101562499999,22.001855468749994],[55.185839843750074,22.7041015625],[55.1999023437501,23.034765625000034],[55.53164062499999,23.81904296875001],[55.4684570312501,23.94111328125001],[55.98515625000002,24.063378906249966],[55.92861328125005,24.215136718750074],[55.76083984375006,24.24267578125],[55.795703125000074,24.868115234374955],[56.00058593750006,24.953222656249977],[56.06386718750005,24.73876953125],[56.38798828125002,24.97919921875004]]],[[[56.29785156250003,25.650683593750045],[56.144628906250006,25.690527343750006],[56.16748046875003,26.047460937499977],[56.08046875,26.06264648437505],[56.41308593749997,26.351171875000034],[56.29785156250003,25.650683593750045]]]]},"properties":{"name":"Oman","childNum":3}},{"geometry":{"type":"Polygon","coordinates":[[[73.08961802927895,36.86435907947333],[73.08203125000107,36.43949943991182],[72.31128647748268,35.77290936638241],[73.13410859949555,34.82510160558277],[73.19895048106557,33.88770931468204],[74.00809389139292,33.25375789331485],[73.98984375,33.22119140625],[74.30361328125002,32.991796875],[74.30546875000002,32.810449218749994],[74.35458984375,32.768701171874994],[74.58828125000002,32.753222656249996],[74.632421875,32.770898437499994],[74.66328125000001,32.757666015625],[74.64335937500002,32.607714843749996],[74.68574218750001,32.493798828124994],[74.78886718750002,32.4578125],[74.9873046875,32.462207031249996],[75.33349609375,32.279199218749994],[75.25410156250001,32.14033203125],[75.13876953125,32.104785156249996],[75.07148437500001,32.08935546875],[74.73945312500001,31.948828125],[74.6357421875,31.88974609375],[74.55556640625002,31.818554687499997],[74.5259765625,31.76513671875],[74.50996093750001,31.712939453124996],[74.58183593750002,31.52392578125],[74.59394531250001,31.465380859374996],[74.53496093750002,31.261376953124994],[74.51767578125,31.185595703124996],[74.6103515625,31.112841796874996],[74.62578125000002,31.06875],[74.6328125,31.03466796875],[74.509765625,30.959667968749997],[74.38037109375,30.893408203125],[74.33935546875,30.8935546875],[74.00898437500001,30.519677734374994],[73.89931640625002,30.435351562499996],[73.88271484375002,30.3521484375],[73.92460937500002,30.28164062499999],[73.93339843750002,30.222070312499994],[73.88652343750002,30.162011718749994],[73.8091796875,30.093359375],[73.38164062500002,29.934375],[72.9033203125,29.028759765624997],[72.34189453125,28.751904296874997],[72.2919921875,28.697265625],[72.128515625,28.346337890624994],[71.94804687500002,28.177294921874996],[71.88886718750001,28.0474609375],[71.87031250000001,27.9625],[71.54296875,27.869873046875],[71.18476562500001,27.831640625],[70.87490234375002,27.714453125],[70.79794921875,27.709619140624994],[70.69160156250001,27.768994140624997],[70.62910156250001,27.937451171874997],[70.40371093750002,28.025048828124994],[70.24433593750001,27.934130859374996],[70.1939453125,27.894873046875],[70.14453125,27.849023437499994],[70.0498046875,27.694726562499994],[69.89628906250002,27.4736328125],[69.56796875,27.174609375],[69.47001953125002,26.804443359375],[70.11464843750002,26.548046875],[70.14921875000002,26.347558593749994],[70.1001953125,25.910058593749994],[70.2646484375,25.70654296875],[70.3251953125,25.685742187499997],[70.44853515625002,25.681347656249997],[70.505859375,25.685302734375],[70.56953125000001,25.705957031249994],[70.6484375,25.666943359374997],[70.65205078125001,25.422900390625003],[70.87773437500002,25.06298828125],[70.95087890625001,24.8916015625],[71.02070312500001,24.75766601562499],[71.0478515625,24.687744140625],[71.00234375000002,24.65390625],[70.97636718750002,24.61875],[70.96982421875,24.571875],[71.04531250000002,24.429980468750003],[71.04404296875,24.400097656249997],[70.98281250000002,24.361035156249997],[70.928125,24.362353515625003],[70.88623046875,24.34375],[70.80507812500002,24.261962890625],[70.76728515625001,24.245410156250003],[70.71630859375,24.237988281249997],[70.65947265625002,24.24609375],[70.57929687500001,24.279052734375],[70.55585937500001,24.331103515625003],[70.5650390625,24.385791015625003],[70.54677734375002,24.41831054687499],[70.2890625,24.35629882812499],[70.0982421875,24.2875],[69.80517578125,24.165234375],[69.71621093750002,24.172607421875],[69.63417968750002,24.22519531249999],[69.5591796875,24.273095703124994],[69.44345703125,24.275390625],[69.23505859375001,24.268261718749997],[69.11953125000002,24.26865234374999],[69.05156250000002,24.286328125],[68.98457031250001,24.273095703124994],[68.90078125000002,24.292431640624997],[68.86347656250001,24.266503906249994],[68.82832031250001,24.26401367187499],[68.78115234375002,24.313720703125],[68.75898437500001,24.30722656249999],[68.73964843750002,24.2919921875],[68.728125,24.265625],[68.72412109375,23.96469726562499],[68.48867187500002,23.967236328124997],[68.38125,23.950878906249997],[68.28251953125002,23.927978515625],[68.1650390625,23.857324218749994],[68.11552734375002,23.753369140624997],[67.8599609375,23.90268554687499],[67.66845703125,23.810986328124997],[67.309375,24.1748046875],[67.171484375,24.756103515625],[66.70302734375002,24.8609375],[66.69863281250002,25.226318359375],[66.32421875,25.601806640625],[66.13115234375002,25.49326171874999],[66.46767578125002,25.4453125],[64.77666015625002,25.307324218749997],[64.65898437500002,25.18408203125],[64.059375,25.40292968749999],[63.556640625,25.353173828124994],[63.49140625000001,25.210839843749994],[61.56689453125,25.186328125],[61.587890625,25.20234375],[61.61542968750001,25.2861328125],[61.64013671875,25.584619140624994],[61.67138671875,25.6923828125],[61.66181640625001,25.751269531250003],[61.66865234375001,25.768994140624997],[61.73769531250002,25.82109375],[61.75439453125,25.84335937499999],[61.78076171875,25.995849609375],[61.80996093750002,26.165283203125],[61.842382812500006,26.225927734375],[62.1259765625,26.368994140625],[62.239355468750006,26.35703125],[62.31230468750002,26.490869140624994],[63.168066406250006,26.665576171874996],[63.186132812500006,26.837597656249997],[63.24160156250002,26.86474609375],[63.25039062500002,26.879248046875],[63.24208984375002,27.077685546874996],[63.30517578125,27.124560546874996],[63.30156250000002,27.15146484375],[63.25625,27.207910156249994],[63.19609375000002,27.243945312499996],[63.16679687500002,27.252490234374996],[62.75273437500002,27.265625],[62.782324218750006,27.800537109375],[62.7625,28.202050781249994],[61.88984375000001,28.546533203124994],[61.15214843750002,29.542724609375],[61.0341796875,29.663427734375],[60.843359375,29.858691406249996],[61.22441406250002,29.749414062499994],[62.0009765625,29.530419921874994],[62.4765625,29.408349609374994],[63.56757812500001,29.497998046874997],[64.09873046875,29.391943359375],[64.39375,29.544335937499994],[65.09550781250002,29.559472656249994],[66.23125,29.86572265625],[66.346875,30.802783203124996],[66.82929687500001,31.263671875],[67.45283203125001,31.234619140625],[67.737890625,31.343945312499997],[67.57822265625,31.506494140624994],[68.16103515625002,31.802978515625],[68.59765625,31.802978515625],[68.86894531250002,31.634228515624997],[69.279296875,31.936816406249996],[69.24140625000001,32.433544921875],[69.5015625,33.020068359374996],[70.26113281250002,33.289013671875],[69.8896484375,34.007275390625],[70.65400390625001,33.952294921874994],[71.05156250000002,34.049707031249994],[71.095703125,34.369433593749996],[70.965625,34.53037109375],[71.62050781250002,35.183007812499994],[71.57197265625001,35.546826171875],[71.18505859375,36.04208984375],[71.23291015625,36.12177734375],[72.24980468750002,36.734716796875],[73.08961802927895,36.86435907947333]]]},"properties":{"name":"Pakistan","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-81.60327148437497,7.332812499999989],[-81.85205078125003,7.453320312500026],[-81.812158203125,7.59238281250002],[-81.72875976562494,7.62119140625002],[-81.60327148437497,7.332812499999989]]],[[[-78.89833984375002,8.27426757812502],[-78.960595703125,8.435839843749989],[-78.88325195312495,8.460253906249989],[-78.89833984375002,8.27426757812502]]],[[[-77.37421874999993,8.65830078125002],[-77.47851562499994,8.498437500000037],[-77.19599609374995,7.972460937500003],[-77.53828124999995,7.56625976562502],[-77.76191406249995,7.698828125000034],[-77.90117187499999,7.229345703125048],[-78.42158203124995,8.060986328125011],[-78.28735351562497,8.091796874999972],[-78.14189453125002,8.386083984374977],[-77.76054687499993,8.133251953124983],[-78.09946289062498,8.496972656250009],[-78.22304687500002,8.396630859374994],[-78.39921874999993,8.505664062500003],[-78.40986328124998,8.35532226562502],[-78.51406249999997,8.628173828125],[-79.08637695312495,8.997167968750034],[-79.50708007812494,8.97006835937502],[-79.68745117187493,8.850976562500009],[-79.81591796875,8.639208984375031],[-79.75043945312498,8.595507812500017],[-80.458984375,8.213867187499972],[-80.45810546875,8.077050781249994],[-80.01123046875,7.500048828125031],[-80.66669921874995,7.225683593750006],[-80.90122070312503,7.277148437500017],[-81.06386718749994,7.89975585937502],[-81.26840820312495,7.625488281250014],[-81.50415039062503,7.721191406249972],[-81.72763671875,8.137548828124977],[-82.15986328124995,8.19482421875],[-82.23544921874998,8.311035156250057],[-82.67954101562503,8.321972656249969],[-82.86611328124994,8.246337890625014],[-82.87934570312498,8.07065429687502],[-83.02734375,8.337744140624991],[-82.86162109374999,8.453515625000037],[-82.84477539062493,8.489355468749963],[-82.85571289062494,8.635302734375031],[-82.91704101562502,8.740332031250034],[-82.88198242187497,8.805322265625037],[-82.72783203125002,8.916064453125031],[-82.78305664062498,8.990283203124974],[-82.88134765625003,9.055859375000011],[-82.94033203124997,9.060107421874989],[-82.93984374999994,9.449169921875026],[-82.92504882812494,9.469042968749989],[-82.88896484374999,9.481005859375017],[-82.86015625,9.511474609375014],[-82.84399414062497,9.570800781250014],[-82.801025390625,9.591796875000028],[-82.64409179687502,9.505859375000028],[-82.56357421875003,9.576660156249972],[-82.50034179687503,9.523242187500017],[-82.37080078124993,9.428564453124991],[-82.33974609375,9.209179687499983],[-82.18813476562502,9.191748046874977],[-82.24418945312499,9.031494140625014],[-82.07788085937503,8.93486328124996],[-81.78022460937495,8.957226562499983],[-81.89448242187495,9.140429687500003],[-81.35478515624996,8.78056640624996],[-80.83867187499999,8.887207031250014],[-80.12709960937497,9.20991210937504],[-79.57729492187497,9.597851562500026],[-78.08276367187494,9.236279296874997],[-77.37421874999993,8.65830078125002]]]]},"properties":{"name":"Panama","childNum":3}},{"geometry":{"type":"Polygon","coordinates":[[[-73.137353515625,-6.4658203125],[-73.75810546874999,-6.90576171875],[-73.79301757812499,-7.135058593750003],[-73.758203125,-7.172753906250009],[-73.72041015625,-7.309277343750011],[-73.964306640625,-7.37890625],[-73.95849609375,-7.506640625],[-73.98173828124999,-7.535742187500006],[-74.00205078124999,-7.556054687500009],[-73.98173828124999,-7.585058593750006],[-73.946875,-7.611230468750009],[-73.89462890624999,-7.65478515625],[-73.82207031249999,-7.738964843750011],[-73.76689453124999,-7.753515625],[-73.72041015625,-7.782519531250003],[-73.73203125,-7.875390625],[-73.54912109374999,-8.345800781250006],[-73.39814453125,-8.458984375],[-73.36040039062499,-8.479296875],[-73.351708984375,-8.51416015625],[-73.35673828124999,-8.566992187500006],[-73.30244140625,-8.654003906250011],[-73.203125,-8.719335937500006],[-73.0705078125,-8.8828125],[-72.9740234375,-8.9931640625],[-72.970361328125,-9.1201171875],[-73.08984375,-9.265722656250006],[-73.209423828125,-9.411425781250003],[-72.379052734375,-9.51015625],[-72.181591796875,-10.003710937500003],[-71.33940429687499,-9.988574218750003],[-71.11528320312499,-9.852441406250009],[-71.041748046875,-9.81875],[-70.6369140625,-9.478222656250011],[-70.60791015625,-9.463671875],[-70.54111328124999,-9.4375],[-70.57016601562499,-9.48984375],[-70.592236328125,-9.54345703125],[-70.59916992187499,-9.620507812500009],[-70.642333984375,-11.01025390625],[-70.59653320312499,-10.976855468750003],[-70.53325195312499,-10.946875],[-70.45087890625,-11.024804687500009],[-70.39228515625,-11.05859375],[-70.3419921875,-11.066699218750003],[-70.29038085937499,-11.064257812500003],[-70.22006835937499,-11.04765625],[-70.06630859375,-10.982421875],[-69.9603515625,-10.929882812500011],[-69.839794921875,-10.933398437500003],[-69.6740234375,-10.9541015625],[-69.57861328125,-10.951757812500006],[-68.68525390625,-12.501953125],[-68.97861328124999,-12.880078125000011],[-69.07412109375,-13.682812500000011],[-68.87089843749999,-14.169726562500003],[-69.35947265624999,-14.7953125],[-69.37470703125,-14.962988281250006],[-69.17246093749999,-15.236621093750003],[-69.4208984375,-15.640625],[-69.21757812499999,-16.14912109375001],[-68.8427734375,-16.337890625],[-69.03291015625,-16.47597656250001],[-69.020703125,-16.6421875],[-69.62485351562499,-17.2001953125],[-69.645703125,-17.24853515625],[-69.521923828125,-17.388964843750003],[-69.510986328125,-17.46035156250001],[-69.51108398437499,-17.5048828125],[-69.5109375,-17.50605468750001],[-69.58642578125,-17.5732421875],[-69.684765625,-17.64980468750001],[-69.85209960937499,-17.70380859375001],[-69.80258789062499,-17.990234375],[-69.92636718749999,-18.2060546875],[-70.41826171874999,-18.34560546875001],[-71.33696289062499,-17.68251953125001],[-71.5322265625,-17.29433593750001],[-72.46767578125,-16.708105468750006],[-73.727685546875,-16.20166015625],[-75.104248046875,-15.411914062500003],[-75.533642578125,-14.89921875],[-75.93388671874999,-14.63359375],[-76.37646484375,-13.863085937500003],[-76.259228515625,-13.802832031250006],[-76.2236328125,-13.371191406250006],[-76.83212890624999,-12.348730468750006],[-77.152734375,-12.060351562500003],[-77.2203125,-11.663378906250003],[-77.633203125,-11.287792968750011],[-77.736083984375,-10.83671875],[-78.18559570312499,-10.089062500000011],[-78.76225585937499,-8.616992187500003],[-79.37724609374999,-7.835546875],[-79.99497070312499,-6.768945312500009],[-81.142041015625,-6.056738281250006],[-81.164306640625,-5.875292968750003],[-80.9306640625,-5.8408203125],[-80.88193359374999,-5.635058593750003],[-81.33662109375,-4.66953125],[-81.283203125,-4.322265625],[-80.503662109375,-3.49609375],[-80.324658203125,-3.387890625000011],[-80.24375,-3.576757812500006],[-80.19414062499999,-3.905859375],[-80.23051757812499,-3.924023437500011],[-80.26689453124999,-3.948828125],[-80.30327148437499,-4.005078125000011],[-80.43720703125,-3.978613281250006],[-80.49013671875,-4.010058593750003],[-80.510009765625,-4.069531250000011],[-80.49345703124999,-4.119140625],[-80.4884765625,-4.16552734375],[-80.453759765625,-4.205175781250006],[-80.35288085937499,-4.20849609375],[-80.44384765625,-4.335839843750009],[-80.4884765625,-4.393652343750006],[-80.47856445312499,-4.430078125],[-80.42416992187499,-4.46142578125],[-80.38349609375,-4.463671875],[-80.293359375,-4.416796875],[-80.1974609375,-4.31103515625],[-80.13955078125,-4.296093750000011],[-80.06352539062499,-4.327539062500009],[-79.962890625,-4.390332031250011],[-79.8451171875,-4.445898437500006],[-79.797265625,-4.476367187500003],[-79.71098632812499,-4.467578125],[-79.63852539062499,-4.454882812500003],[-79.57768554687499,-4.500585937500006],[-79.51616210937499,-4.539160156250006],[-79.501904296875,-4.670605468750011],[-79.45576171875,-4.766210937500006],[-79.3994140625,-4.840039062500011],[-79.33095703125,-4.927832031250006],[-79.26811523437499,-4.957617187500006],[-79.186669921875,-4.958203125000011],[-79.07626953124999,-4.990625],[-79.03330078124999,-4.969140625],[-78.995263671875,-4.908007812500003],[-78.97539062499999,-4.873242187500011],[-78.919189453125,-4.8583984375],[-78.92578125,-4.770703125000011],[-78.9076171875,-4.714453125],[-78.8615234375,-4.6650390625],[-78.68603515625,-4.562402343750009],[-78.64799804687499,-4.248144531250006],[-78.345361328125,-3.397363281250009],[-78.240380859375,-3.472558593750009],[-77.860595703125,-2.981640625000011],[-76.6791015625,-2.562597656250006],[-76.089794921875,-2.133105468750003],[-75.570556640625,-1.53125],[-75.42041015625,-0.962207031250003],[-75.40805664062499,-0.92431640625],[-75.24960937499999,-0.951855468750011],[-75.259375,-0.590136718750003],[-75.42470703125,-0.408886718750011],[-75.49106445312499,-0.248339843750003],[-75.56059570312499,-0.200097656250009],[-75.63203125,-0.157617187500009],[-75.62626953124999,-0.122851562500003],[-75.340478515625,-0.1421875],[-75.13837890625,-0.050488281250011],[-74.8017578125,-0.200097656250009],[-74.78046875,-0.24453125],[-74.75537109375,-0.298632812500003],[-74.691650390625,-0.335253906250003],[-74.616357421875,-0.370019531250009],[-74.555078125,-0.429882812500011],[-74.5138671875,-0.470117187500009],[-74.46518554687499,-0.517675781250006],[-74.41787109375,-0.580664062500006],[-74.334423828125,-0.850878906250003],[-74.28388671875,-0.927832031250006],[-74.24638671874999,-0.970605468750009],[-74.05439453125,-1.028613281250003],[-73.98681640625,-1.09814453125],[-73.926953125,-1.125195312500011],[-73.86318359375,-1.196679687500009],[-73.664306640625,-1.248828125],[-73.4962890625,-1.693066406250011],[-73.19697265625,-1.830273437500011],[-73.1544921875,-2.278222656250009],[-72.9896484375,-2.339746093750009],[-72.94111328125,-2.39404296875],[-72.21845703125,-2.400488281250006],[-71.98427734375,-2.3265625],[-71.93247070312499,-2.288671875],[-71.86728515624999,-2.227734375000011],[-71.802734375,-2.166308593750003],[-71.75253906249999,-2.152734375],[-71.55947265625,-2.22421875],[-71.39697265625,-2.334082031250006],[-71.19638671874999,-2.313085937500006],[-71.11337890624999,-2.245410156250003],[-71.027294921875,-2.225781250000011],[-70.96855468749999,-2.206835937500003],[-70.70537109374999,-2.341992187500011],[-70.64799804687499,-2.40576171875],[-70.57587890625,-2.418261718750003],[-70.29462890625,-2.552539062500003],[-70.24443359374999,-2.606542968750006],[-70.16474609375,-2.639843750000011],[-70.095849609375,-2.658203125],[-70.735107421875,-3.781542968750003],[-70.5296875,-3.866406250000011],[-70.48583984375,-3.869335937500011],[-70.42109375,-3.849609375],[-70.37919921874999,-3.81875],[-70.339501953125,-3.814355468750009],[-70.2984375,-3.84423828125],[-70.24028320312499,-3.882714843750009],[-70.16752929687499,-4.050195312500009],[-70.0171875,-4.162011718750009],[-69.96591796874999,-4.2359375],[-69.97202148437499,-4.301171875],[-70.00395507812499,-4.327246093750006],[-70.05332031249999,-4.333105468750006],[-70.12880859375,-4.28662109375],[-70.23916015625,-4.301171875],[-70.31689453125,-4.246972656250009],[-70.34365234375,-4.193652343750003],[-70.40463867187499,-4.150097656250011],[-70.5306640625,-4.167578125],[-70.72158203125,-4.158886718750011],[-70.79951171875,-4.17333984375],[-70.97368164062499,-4.350488281250009],[-71.8447265625,-4.50439453125],[-72.256787109375,-4.748925781250009],[-72.35283203124999,-4.786035156250009],[-72.468994140625,-4.901269531250009],[-72.608349609375,-5.009570312500003],[-72.69873046875,-5.0671875],[-72.83193359375,-5.09375],[-72.88706054687499,-5.122753906250011],[-72.9798828125,-5.634863281250006],[-73.16289062499999,-5.933398437500003],[-73.209375,-6.028710937500009],[-73.235546875,-6.0984375],[-73.137353515625,-6.4658203125]]]},"properties":{"name":"Peru","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[120.250390625,5.256591796875043],[119.82148437500004,5.06953125000004],[120.1652343750001,5.332421875000037],[120.250390625,5.256591796875043]]],[[[121.159375,6.075634765625011],[121.41103515625005,5.939843749999966],[121.29443359374997,5.869970703125034],[120.8763671875,5.95263671875],[121.159375,6.075634765625011]]],[[[122.09287109375012,6.428320312500006],[121.95917968750004,6.415820312500045],[121.83203125000003,6.664062499999986],[122.0583007812501,6.740722656249972],[122.32353515625002,6.602246093750011],[122.09287109375012,6.428320312500006]]],[[[122.93710937500006,7.409130859374983],[122.80468750000003,7.315966796875017],[122.82216796875,7.428466796875014],[122.93710937500006,7.409130859374983]]],[[[117.07988281250007,7.883398437499977],[117.02832031249997,7.807519531249966],[116.96953125000007,7.894921875],[116.9935546875,8.050537109375014],[117.07705078125,8.069140624999974],[117.07988281250007,7.883398437499977]]],[[[117.35527343750002,8.21464843749996],[117.28701171875,8.191015625000034],[117.28085937500006,8.314990234374974],[117.35527343750002,8.21464843749996]]],[[[124.80664062500003,9.142626953125003],[124.66582031250002,9.132324218750043],[124.65332031250003,9.225830078125],[124.80664062500003,9.142626953125003]]],[[[123.69765625000005,9.237304687500028],[123.61445312500004,9.103320312499989],[123.49345703125002,9.192089843750054],[123.69765625000005,9.237304687500028]]],[[[126.00595703125006,9.320947265625009],[126.19335937499997,9.276708984374963],[126.30458984375,8.952050781249994],[126.13955078125005,8.59565429687504],[126.36533203125012,8.483886718750014],[126.45869140625004,8.20283203125004],[126.43535156250002,7.832812499999974],[126.57011718750002,7.677246093749986],[126.58154296875003,7.247753906249969],[126.1920898437501,6.852539062500014],[126.18935546875,6.309667968749991],[125.82441406250004,7.333300781249989],[125.68925781250007,7.263037109374977],[125.38066406250007,6.689941406250014],[125.58847656250012,6.465771484374997],[125.66796874999997,5.97866210937498],[125.34648437500002,5.598974609374977],[125.23154296875006,6.069531250000011],[124.92734375000006,5.875341796874977],[124.21279296875,6.233251953124977],[124.078125,6.404443359375037],[123.98525390625,6.993701171875003],[124.20664062500006,7.396435546874983],[123.66582031250002,7.817773437500023],[123.49306640625,7.80791015624996],[123.39091796875007,7.407519531250017],[123.09667968749997,7.700439453125],[122.8429687500001,7.529296875000043],[122.79179687500002,7.72246093749996],[122.61621093749997,7.763134765624983],[122.14248046875,6.949658203124997],[121.96425781250005,6.96821289062504],[121.92460937500002,7.199511718750003],[122.24335937500004,7.945117187500031],[122.91113281250003,8.156445312499997],[123.05058593750002,8.433935546875048],[123.43457031249997,8.70332031250004],[123.84921875000006,8.432714843749977],[123.79941406250006,8.049121093749989],[124.19765625,8.229541015624974],[124.40488281250006,8.599853515625014],[124.7311523437501,8.562988281250043],[124.86894531250002,8.972265625000034],[125.141015625,8.86875],[125.20966796875004,9.027148437500017],[125.49873046875004,9.014746093749977],[125.47128906250006,9.756787109374983],[126.00595703125006,9.320947265625009]]],[[[126.059375,9.766210937500034],[125.99121093750003,9.838525390625023],[126.07382812500006,10.059228515625051],[126.1725585937501,9.79995117187498],[126.059375,9.766210937500034]]],[[[124.59384765625006,9.787207031249963],[124.1224609375,9.599316406249969],[123.93564453125012,9.623974609375011],[123.81718750000002,9.817382812499986],[124.17285156250003,10.135205078124983],[124.33574218750002,10.159912109375043],[124.57714843749997,10.026708984374991],[124.59384765625006,9.787207031249963]]],[[[125.69023437500007,9.914453125000037],[125.49482421875004,10.118701171875003],[125.66679687500002,10.440136718750026],[125.69023437500007,9.914453125000037]]],[[[119.91621093750004,10.485986328125037],[119.79316406250004,10.455273437499997],[119.85205078124997,10.64013671875],[120.00839843750012,10.570117187500031],[119.91621093750004,10.485986328125037]]],[[[122.64951171875012,10.472705078125003],[122.53837890625002,10.424951171875037],[122.5375,10.607568359375023],[122.70126953125006,10.740625],[122.64951171875012,10.472705078125003]]],[[[123.13085937500003,9.064111328124994],[122.99472656250006,9.058837890624986],[122.8666015625,9.319824218750043],[122.5625,9.482812500000037],[122.39951171875006,9.823046874999989],[122.47148437500007,9.961523437500034],[122.85556640625006,10.0869140625],[122.81699218750012,10.503808593750023],[122.98330078125,10.886621093750037],[123.25664062500007,10.99394531249996],[123.51064453125005,10.923046875],[123.5675781250001,10.780761718750057],[123.16201171875,9.864257812500028],[123.1498046875,9.606152343750026],[123.32050781250004,9.27294921875],[123.13085937500003,9.064111328124994]]],[[[123.37031250000004,9.449609375000023],[123.38623046874997,9.967089843750017],[124.03886718750002,11.273535156249991],[124.00498046875012,10.40009765625004],[123.70048828125007,10.128320312500009],[123.37031250000004,9.449609375000023]]],[[[123.75703125000004,11.28330078125002],[123.815625,11.15073242187502],[123.73671875,11.151464843749991],[123.75703125000004,11.28330078125002]]],[[[117.31113281250012,8.439599609375051],[117.21855468750007,8.367285156249963],[117.34990234375002,8.713574218749997],[119.22382812500004,10.477294921875043],[119.30566406250003,10.9736328125],[119.55332031250012,11.31352539062496],[119.52666015625002,10.953173828125003],[119.68691406250005,10.500341796875034],[119.36933593750004,10.327294921875037],[119.19150390625012,10.061083984374989],[118.78212890625005,9.91611328125002],[118.4349609375,9.256005859375009],[117.31113281250012,8.439599609375051]]],[[[119.86142578125006,11.52534179687504],[119.83066406250012,11.375683593750011],[119.72998046874997,11.431933593750017],[119.86142578125006,11.52534179687504]]],[[[124.574609375,11.343066406250031],[124.92998046875002,11.372851562499974],[125.02656250000004,11.21171875],[125.01318359374997,10.785693359374989],[125.26845703125005,10.307714843750048],[125.14257812499997,10.189453125000028],[124.9875,10.36757812499998],[125.02656250000004,10.033105468749966],[124.78076171874997,10.16806640625002],[124.78671875000012,10.781396484375009],[124.66269531250006,10.961962890625017],[124.44550781250004,10.923583984375014],[124.33066406250012,11.535205078125003],[124.574609375,11.343066406250031]]],[[[124.60839843750003,11.492187500000043],[124.48349609375006,11.485839843749986],[124.36035156250003,11.665917968749994],[124.5109375000001,11.687109375000048],[124.60839843750003,11.492187500000043]]],[[[122.49619140625006,11.615087890625034],[122.83808593750004,11.595654296874983],[122.89453125000003,11.44130859374998],[123.15830078125012,11.53554687499999],[123.11953125,11.286816406250026],[122.8029296875001,10.99003906249996],[122.76992187500005,10.823828125000034],[121.95400390625,10.444384765625003],[122.10351562499997,11.64291992187502],[121.91601562499997,11.854345703125006],[122.02919921875005,11.895410156250023],[122.49619140625006,11.615087890625034]]],[[[120.03876953125004,11.703320312499969],[119.94492187500006,11.690722656249989],[119.86093750000006,11.953955078124963],[120.03593750000002,11.917236328125028],[120.03876953125004,11.703320312499969]]],[[[120.1,12.167675781249983],[120.22822265625004,12.219824218750034],[120.31455078125012,12.012402343749969],[120.01054687500002,12.008251953125011],[119.88574218749997,12.299853515625003],[120.1,12.167675781249983]]],[[[122.65449218750004,12.309033203125011],[122.42294921875006,12.455078125],[122.60361328125006,12.49160156249998],[122.65449218750004,12.309033203125011]]],[[[125.23955078125002,12.527880859375003],[125.32021484375,12.321826171875031],[125.53564453125003,12.191406250000028],[125.49179687500006,11.594335937499977],[125.57353515625002,11.238232421874997],[125.73564453125002,11.049609375000017],[125.23339843749997,11.145068359375017],[125.03427734375012,11.341259765625026],[124.91699218750003,11.558398437500031],[124.99501953125,11.764941406250003],[124.445703125,12.152783203124969],[124.29472656250007,12.569335937500014],[125.23955078125002,12.527880859375003]]],[[[123.71660156250007,12.287353515625028],[124.04033203125002,11.966796875],[124.04550781250012,11.752441406250028],[123.47373046875006,12.21665039062502],[123.15781250000012,11.925634765624963],[123.23642578125012,12.583496093750057],[123.71660156250007,12.287353515625028]]],[[[122.09404296875002,12.354882812500023],[122.01396484375002,12.105615234375037],[121.9232421875,12.331298828125014],[122.00156250000006,12.598535156250009],[122.14501953124997,12.652636718750017],[122.09404296875002,12.354882812500023]]],[[[123.77539062499997,12.453906250000031],[123.77910156250002,12.366259765625031],[123.62148437500005,12.67490234375002],[123.77539062499997,12.453906250000031]]],[[[123.28183593750006,12.85341796874998],[123.36718750000003,12.70083007812498],[122.95751953124997,13.107177734374986],[123.28183593750006,12.85341796874998]]],[[[120.70439453125002,13.479492187499986],[121.20273437500006,13.432324218749969],[121.52275390625007,13.131201171874991],[121.540625,12.63818359375],[121.39433593750002,12.300585937499974],[121.23671875000005,12.218798828125003],[120.92216796875002,12.51162109374998],[120.65136718749997,13.169140625],[120.33847656250012,13.412353515624986],[120.40126953125,13.517041015624997],[120.70439453125002,13.479492187499986]]],[[[121.91484375000002,13.540332031250031],[122.11455078125002,13.463183593750031],[122.00488281249997,13.204980468750009],[121.82919921875006,13.328613281249972],[121.91484375000002,13.540332031250031]]],[[[124.35361328125006,13.632226562500009],[124.17539062500012,13.531542968750017],[124.03886718750002,13.663134765625003],[124.22490234375007,14.077587890624969],[124.41718750000004,13.871044921874997],[124.35361328125006,13.632226562500009]]],[[[122.03349609375002,15.005029296875009],[121.93300781250005,14.656054687500045],[121.83984374999997,15.038134765625003],[122.03349609375002,15.005029296875009]]],[[[121.10156249999997,18.615283203125017],[121.84560546875,18.29541015625003],[122.03847656250005,18.32792968749999],[122.14667968750004,18.486572265625],[122.26552734375005,18.458837890625034],[122.15234374999997,17.664404296875006],[122.51914062500012,17.124853515625034],[122.13515625000005,16.18481445312503],[121.59531250000012,15.933251953125023],[121.60703125000006,15.669824218749994],[121.39228515625004,15.324414062499969],[121.69541015625006,14.7373046875],[121.62792968749997,14.581152343749977],[121.76660156249997,14.16806640625002],[122.21171875000002,13.930175781250057],[122.2875,13.996191406250006],[122.19970703125003,14.148046875000034],[122.6271484375001,14.317529296875009],[122.93417968750012,14.18808593750002],[123.101953125,13.750244140624986],[123.29697265625012,13.836425781250043],[123.32031249999997,14.061669921875023],[123.81572265625002,13.837109375000011],[123.80625000000012,13.721728515625045],[123.54960937500007,13.645751953125014],[123.81923828125,13.269482421875011],[123.78515625000003,13.110546875000054],[124.14277343750004,13.035791015625009],[124.0597656250001,12.567089843749997],[123.87783203125005,12.689697265625014],[123.94853515625007,12.916406250000023],[123.31093750000005,13.044091796875009],[123.16328125000004,13.44174804687502],[122.59521484374997,13.90761718749998],[122.46796875000004,13.886718749999986],[122.66787109375,13.395361328124991],[122.59990234375002,13.194140625000031],[122.37656250000012,13.520605468750006],[121.77792968750006,13.93764648437498],[121.50107421875006,13.8421875],[121.344140625,13.649121093749997],[121.09550781250007,13.679492187500045],[120.84072265625,13.884716796875026],[120.637109375,13.804492187500031],[120.61679687500006,14.188037109375003],[120.9220703125001,14.493115234374983],[120.94130859375,14.645068359375031],[120.58369140625004,14.88125],[120.58867187500002,14.483105468749983],[120.43876953125002,14.453369140624972],[120.25078125000002,14.793310546875034],[120.08212890625012,14.851074218749986],[119.77255859375012,16.25512695312503],[119.83076171875004,16.326562500000023],[120.15976562500012,16.047656250000045],[120.36875,16.109570312499955],[120.35839843749997,17.63818359375],[120.59970703125012,18.507861328125074],[121.10156249999997,18.615283203125017]]],[[[121.92167968750007,18.89472656250001],[121.82519531250003,18.842724609374983],[121.94335937500003,19.010449218749955],[121.92167968750007,18.89472656250001]]],[[[121.52089843750005,19.361962890624994],[121.53125,19.271337890625006],[121.37460937500006,19.356298828124977],[121.52089843750005,19.361962890624994]]]]},"properties":{"name":"Philippines","childNum":37}},{"geometry":{"type":"Polygon","coordinates":[[[134.5954101562501,7.382031249999969],[134.51572265625012,7.525781250000037],[134.65117187500002,7.712109374999983],[134.5954101562501,7.382031249999969]]]},"properties":{"name":"Palau","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[153.53613281249997,-11.476171874999949],[153.75986328125006,-11.586328125],[153.55371093749997,-11.630566406249969],[153.28681640625004,-11.516992187500009],[153.20361328124997,-11.32412109374998],[153.53613281249997,-11.476171874999949]]],[[[154.28076171874997,-11.36142578125002],[154.12119140625006,-11.425683593749966],[154.02343750000003,-11.347949218750031],[154.28076171874997,-11.36142578125002]]],[[[150.89873046875002,-10.565332031250023],[150.88466796875,-10.643457031250037],[150.78574218750006,-10.603417968749966],[150.89873046875002,-10.565332031250023]]],[[[151.08095703125,-10.020117187499963],[151.29648437500012,-9.956738281250026],[151.230859375,-10.194726562500009],[150.95917968750004,-10.092578124999989],[150.77607421875004,-9.70908203125002],[151.08095703125,-10.020117187499963]]],[[[150.52841796875006,-9.34658203124998],[150.78867187500006,-9.417968749999957],[150.89404296875003,-9.667480468749986],[150.43623046875004,-9.624609374999949],[150.5084960937501,-9.536132812499957],[150.43730468750007,-9.359960937500034],[150.52841796875006,-9.34658203124998]]],[[[150.3454101562501,-9.493847656249955],[150.10976562500005,-9.361914062499991],[150.20830078125002,-9.206347656250003],[150.32011718750007,-9.264160156249972],[150.3454101562501,-9.493847656249955]]],[[[152.63095703125012,-8.959375],[152.95292968750007,-9.07011718749996],[152.96689453125006,-9.208984375000014],[152.51513671874997,-9.009863281250034],[152.63095703125012,-8.959375]]],[[[151.10683593750005,-8.733496093749949],[151.12412109375012,-8.804882812500011],[151.00498046875006,-8.523828124999952],[151.117578125,-8.41884765624998],[151.10683593750005,-8.733496093749949]]],[[[143.58681640625005,-8.481738281250003],[143.321875,-8.367578125],[143.5814453125,-8.390917968749974],[143.58681640625005,-8.481738281250003]]],[[[148.02578125,-5.826367187500011],[147.78105468750007,-5.627246093749946],[147.7946289062501,-5.492382812500011],[148.05478515625006,-5.61152343750004],[148.02578125,-5.826367187500011]]],[[[155.95761718750006,-6.686816406249989],[155.71933593750012,-6.862792968749957],[155.34404296875007,-6.721679687499986],[155.20214843750003,-6.3076171875],[154.75927734375003,-5.931347656249997],[154.72929687500002,-5.444433593750006],[155.09384765625006,-5.620214843750034],[155.46699218750004,-6.145117187500034],[155.82255859375002,-6.38046875000002],[155.95761718750006,-6.686816406249989]]],[[[147.17626953124997,-5.431933593749946],[147.00585937499997,-5.30703125],[147.1310546875001,-5.190820312500037],[147.17626953124997,-5.431933593749946]]],[[[154.64726562500002,-5.43271484375002],[154.54003906250003,-5.11083984375],[154.63261718750007,-5.013867187499955],[154.72714843750006,-5.218066406249989],[154.64726562500002,-5.43271484375002]]],[[[146.01933593750007,-4.726171874999963],[145.88359375000007,-4.66748046875],[145.9958007812501,-4.539257812499983],[146.01933593750007,-4.726171874999963]]],[[[151.915625,-4.296777343749966],[152.11718749999997,-4.212207031249974],[152.40566406250005,-4.340722656249952],[152.35117187500006,-4.82216796874998],[151.98369140625007,-5.07441406250004],[152.14296875,-5.357031249999963],[152.07705078125,-5.458300781249989],[151.86542968750004,-5.564843750000023],[151.51513671874997,-5.552343749999963],[151.22929687500002,-5.919921874999986],[150.47353515625,-6.263378906249969],[149.65253906250004,-6.290429687499966],[149.38232421874997,-6.078125],[149.0990234375,-6.116992187499989],[148.33720703125007,-5.669433593750014],[148.43203125,-5.471777343749991],[149.35888671875003,-5.583984375000014],[149.8314453125,-5.524121093749997],[149.96279296875,-5.447753906249972],[150.0900390625001,-5.011816406249977],[150.1703125,-5.070605468749974],[150.0724609375001,-5.309570312499986],[150.18310546874997,-5.523632812499983],[150.90029296875005,-5.447167968750037],[151.32656250000005,-4.96035156249998],[151.67119140625007,-4.88330078125],[151.59306640625007,-4.200781249999949],[151.915625,-4.296777343749966]]],[[[152.67060546875004,-3.13339843750002],[152.64619140625004,-3.221191406249957],[152.54326171875002,-3.095605468749952],[152.63876953125012,-3.042773437500031],[152.67060546875004,-3.13339843750002]]],[[[140.97617187500012,-9.11875],[140.97519531250006,-6.90537109375002],[140.86230468749997,-6.740039062499989],[140.975,-6.346093750000023],[140.97353515625,-2.803417968750026],[140.97343750000007,-2.609765625],[142.90517578125,-3.32070312499998],[143.50898437500004,-3.431152343750014],[144.06640625000003,-3.80517578125],[144.4777343750001,-3.82529296875002],[145.08779296875,-4.349121093749972],[145.33457031250012,-4.385253906249972],[145.7669921875,-4.823046874999989],[145.74521484375012,-5.402441406249977],[147.56669921875002,-6.056933593750003],[147.80205078125002,-6.31523437499996],[147.84550781250007,-6.662402343749989],[147.11914062499997,-6.721679687499986],[146.95361328124997,-6.834082031249963],[147.19003906250012,-7.378125],[148.12675781250007,-8.103613281249963],[148.246875,-8.554296875000034],[148.45117187499997,-8.694531250000011],[148.58310546875006,-9.051757812499957],[149.19833984375006,-9.03125],[149.26318359374997,-9.497851562499974],[150.01103515625007,-9.688183593750026],[149.76123046874997,-9.805859375000011],[149.87441406250005,-10.012988281250031],[150.84951171875,-10.236035156249997],[150.44609375000007,-10.30732421875004],[150.6471679687501,-10.517968749999966],[150.31992187500012,-10.654882812499963],[150.0167968750001,-10.577148437500028],[149.75410156250004,-10.353027343750028],[147.76865234375012,-10.070117187500031],[147.01718750000006,-9.38789062500004],[146.96376953125,-9.059570312499943],[146.63085937499997,-8.951171874999972],[146.03320312499997,-8.076367187500011],[144.97382812500004,-7.802148437500009],[144.86425781249997,-7.631542968749983],[144.50986328125006,-7.567382812499972],[144.14287109375007,-7.757226562500009],[143.65488281250012,-7.460351562500009],[143.94228515625005,-7.944238281250009],[143.8333984375,-8.029101562499974],[143.51816406250006,-8.000683593749955],[143.61376953125003,-8.200390624999969],[142.52412109375004,-8.32167968749998],[142.34746093750002,-8.167480468750014],[142.20683593750002,-8.195800781250014],[142.47480468750004,-8.369433593750031],[142.79794921875006,-8.345019531250031],[143.11181640624997,-8.474511718750037],[143.37724609375007,-8.762207031250028],[143.36621093750003,-8.961035156250034],[142.6471679687501,-9.327832031249969],[142.22958984375012,-9.169921874999957],[141.13320312500005,-9.221289062500034],[140.97617187500012,-9.11875]]],[[[152.96582031249997,-4.756347656249986],[152.89169921875006,-4.832421875000023],[152.73994140625004,-4.635839843750034],[152.66816406250004,-4.131835937500028],[152.27939453125006,-3.582421875],[151.06679687500005,-2.829003906249994],[150.74609374999997,-2.73886718750002],[150.8253906250001,-2.572949218749969],[152.03291015625004,-3.25136718749998],[153.01679687500004,-4.105664062500026],[153.1325195312501,-4.352441406250037],[152.96582031249997,-4.756347656249986]]],[[[150.43662109375012,-2.66181640625004],[150.16572265625004,-2.660253906249991],[149.96162109375004,-2.473828125000026],[150.22714843750006,-2.384179687499966],[150.42949218750007,-2.47041015625004],[150.43662109375012,-2.66181640625004]]],[[[147.06757812500004,-1.96015625],[147.43808593750012,-2.05898437499998],[147.20634765625007,-2.181933593749974],[146.54648437500012,-2.20859375],[146.65625,-1.97402343749998],[147.06757812500004,-1.96015625]]],[[[149.76542968750007,-1.553027343750017],[149.54589843749997,-1.471679687499957],[149.58095703125005,-1.353222656249983],[149.76542968750007,-1.553027343750017]]]]},"properties":{"name":"Papua New Guinea","childNum":21}},{"geometry":{"type":"Polygon","coordinates":[[[23.484667968750017,53.939794921875],[23.915429687500023,52.770263671875],[23.175097656250017,52.28662109375],[23.652441406250006,52.040380859375],[23.605273437500017,51.517919921875],[23.664453125000023,51.31005859375],[24.095800781250006,50.87275390625],[23.9970703125,50.809375],[24.089941406250006,50.53046875],[23.97265625,50.410058593749994],[23.711718750000017,50.37734375],[23.03632812500001,49.899072265624994],[22.706152343750006,49.606201171875],[22.6494140625,49.539013671875],[22.66064453125,49.483691406249996],[22.71992187500001,49.353808593749996],[22.732421875,49.295166015625],[22.705664062500006,49.171191406249996],[22.847070312500023,49.08125],[22.538671875,49.072705078125],[22.473046875000023,49.081298828125],[22.020117187500006,49.209521484374996],[21.6396484375,49.411962890625],[21.079394531250017,49.418261718749996],[20.868457031250017,49.314697265625],[20.36298828125001,49.38525390625],[20.0576171875,49.181298828124994],[19.756640625000017,49.204394531249996],[19.77392578125,49.37216796875],[19.44160156250001,49.597705078124996],[19.1494140625,49.4],[18.83222656250001,49.510791015624996],[18.562402343750023,49.879345703125],[18.0283203125,50.03525390625],[17.874804687500017,49.972265625],[17.627050781250006,50.11640625],[17.702246093750006,50.307177734374996],[17.41523437500001,50.254785156249994],[16.88007812500001,50.427050781249996],[16.989648437500023,50.2369140625],[16.63916015625,50.1021484375],[16.210351562500023,50.423730468749994],[16.419726562500017,50.573632812499994],[16.2822265625,50.655615234375],[16.007226562500023,50.611621093749996],[14.99375,51.01435546875],[14.98291015625,50.886572265625],[14.895800781250017,50.861376953124996],[14.809375,50.858984375],[14.814257812500017,50.871630859374996],[14.91748046875,51.008740234375],[14.9638671875,51.095117187499994],[14.935546875,51.435351562499996],[14.905957031250011,51.463330078125],[14.724707031250006,51.523876953125],[14.7109375,51.544921875],[14.738671875000023,51.6271484375],[14.601660156250006,51.832373046875],[14.752539062500006,52.081835937499996],[14.679882812500011,52.25],[14.615625,52.277636718749996],[14.573925781250011,52.31416015625],[14.554589843750023,52.359667968749996],[14.569726562500023,52.431103515625],[14.619433593750017,52.528515625],[14.514062500000023,52.64560546875],[14.253710937500017,52.782519531249996],[14.128613281250011,52.878222656249996],[14.138867187500011,52.932861328125],[14.293164062500011,53.0267578125],[14.368554687500023,53.10556640625],[14.410937500000017,53.199023437499996],[14.412304687500011,53.216748046875],[14.41455078125,53.283496093749996],[14.258886718750006,53.729638671875],[14.58349609375,53.63935546875],[14.558398437500017,53.823193359375],[14.21142578125,53.950341796875],[16.186328125000017,54.290380859375],[16.55976562500001,54.55380859375],[18.32343750000001,54.838183593749996],[18.75927734375,54.6845703125],[18.43623046875001,54.7447265625],[18.83642578125,54.369580078125],[19.604394531250023,54.4591796875],[20.20820312500001,54.420751953125],[22.16845703125,54.35986328125],[22.731835937500023,54.35009765625],[22.766210937500006,54.356787109375],[22.82373046875,54.395800781249996],[22.893945312500023,54.39052734375],[22.97675781250001,54.366357421875],[23.015527343750023,54.34833984375],[23.04218750000001,54.30419921875],[23.0875,54.299462890625],[23.170312500000023,54.2814453125],[23.282324218750006,54.24033203125],[23.3701171875,54.200488281249996],[23.45361328125,54.14345703125],[23.484667968750017,53.939794921875]]]},"properties":{"name":"Poland","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-65.42558593749999,18.105615234374994],[-65.57221679687493,18.137304687499977],[-65.29487304687501,18.133349609375045],[-65.42558593749999,18.105615234374994]]],[[[-66.12939453125003,18.444921875000034],[-65.62880859375,18.381396484375045],[-65.62084960937497,18.242333984374966],[-65.97080078124995,17.974365234375],[-67.196875,17.994189453125045],[-67.2640625,18.364599609375006],[-67.15864257812501,18.499218749999983],[-66.12939453125003,18.444921875000034]]]]},"properties":{"name":"Puerto Rico","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[130.52695312500012,42.535400390625],[130.68730468750007,42.30253906249999],[130.2357421875,42.183203125000034],[129.75634765624997,41.712255859375006],[129.70869140625004,40.857324218749994],[129.34111328125002,40.72631835937506],[128.51123046874997,40.130224609375006],[127.56816406250002,39.78198242187503],[127.39453125000003,39.207910156249966],[127.78613281250003,39.084130859374966],[128.37460937500012,38.6234375],[128.03896484375,38.30854492187498],[127.09033203125003,38.28388671875001],[126.63388671875012,37.78183593750006],[126.36992187500007,37.87836914062501],[126.11669921875003,37.74291992187503],[125.76914062500006,37.98535156250003],[125.35781250000005,37.72480468749998],[125.31074218750004,37.843505859375],[124.98876953124997,37.93144531249999],[125.2067382812501,38.08154296875],[124.69091796874997,38.12919921875002],[125.06738281250003,38.556738281250006],[125.55449218750002,38.68623046875001],[125.16884765625,38.80551757812506],[125.40966796875003,39.28837890625002],[125.36083984375003,39.52661132812497],[124.77529296875,39.75805664062506],[124.63828125000006,39.61508789062506],[124.36210937500002,40.004052734374994],[124.8893554687501,40.459814453125006],[125.98906250000002,40.904638671875034],[126.74306640625,41.724853515625],[126.95478515625004,41.76948242187501],[127.17968750000003,41.531347656250006],[128.14941406249997,41.38774414062496],[128.28925781250004,41.60742187500006],[128.04521484375007,41.9875],[128.92343750000006,42.038232421874966],[129.3136718750001,42.41357421874997],[129.69785156250012,42.448144531249994],[129.89824218750002,42.998144531250034],[130.24033203125006,42.891796874999955],[130.24667968750012,42.744824218749955],[130.52695312500012,42.535400390625]]]},"properties":{"name":"Dem. Rep. Korea","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-17.190869140624926,32.86860351562498],[-16.693261718749966,32.75800781250001],[-17.018261718749926,32.66279296874998],[-17.226025390624983,32.76684570312503],[-17.190869140624926,32.86860351562498]]],[[[-25.64897460937499,37.840917968750006],[-25.18193359374996,37.837890625],[-25.19072265624999,37.764355468749955],[-25.73447265624992,37.76289062500001],[-25.845898437499983,37.89404296875],[-25.64897460937499,37.840917968750006]]],[[[-28.14726562499996,38.45268554687502],[-28.064794921875034,38.412744140624966],[-28.454492187500023,38.40864257812504],[-28.54882812499997,38.51855468750003],[-28.14726562499996,38.45268554687502]]],[[[-28.641308593749983,38.525],[-28.842041015625,38.5984375],[-28.69775390625,38.638476562500045],[-28.641308593749983,38.525]]],[[[-27.07524414062496,38.643457031249994],[-27.38593750000001,38.765820312499955],[-27.127001953125017,38.78984375],[-27.07524414062496,38.643457031249994]]],[[[-31.137109374999937,39.40693359375001],[-31.282958984375,39.39409179687496],[-31.260839843750034,39.49677734375001],[-31.137109374999937,39.40693359375001]]],[[[-7.406152343749937,37.17944335937497],[-7.834130859374994,37.005712890625034],[-8.597656249999943,37.12133789062506],[-8.997802734375028,37.03227539062502],[-8.814160156249983,37.43081054687502],[-8.881103515624943,38.44667968750005],[-8.668310546874949,38.42431640625003],[-8.798876953124989,38.518164062500034],[-9.213281249999937,38.44809570312498],[-9.250390624999966,38.65673828125003],[-9.021484374999943,38.746875],[-8.79160156249992,39.07817382812502],[-9.13579101562496,38.74277343749998],[-9.35673828124996,38.697900390624994],[-9.479736328124972,38.79877929687501],[-9.374755859374972,39.338281249999966],[-8.837841796874926,40.11567382812498],[-8.684619140624989,40.75253906250006],[-8.755419921874932,41.69838867187502],[-8.887597656249937,41.76459960937501],[-8.777148437500017,41.941064453124994],[-8.266064453124983,42.13740234375001],[-8.152490234374937,41.81196289062498],[-7.40361328124996,41.833691406249955],[-7.147119140625023,41.98115234374998],[-6.61826171874992,41.9423828125],[-6.542187499999955,41.672509765624994],[-6.2125,41.53203125],[-6.928466796874972,41.009130859375006],[-6.8101562499999,40.343115234375034],[-7.032617187499966,40.16791992187498],[-6.896093749999949,40.02182617187506],[-6.975390624999932,39.79838867187502],[-7.117675781249972,39.681689453125045],[-7.53569335937496,39.66157226562501],[-6.997949218749994,39.05644531250002],[-7.343017578124943,38.45742187500002],[-7.106396484374983,38.181005859375006],[-6.957568359374932,38.18789062499999],[-7.44394531249992,37.72827148437497],[-7.406152343749937,37.17944335937497]]]]},"properties":{"name":"Portugal","childNum":7,"cp":[-8.7440694,39.9251454]}},{"geometry":{"type":"Polygon","coordinates":[[[-58.15976562499999,-20.164648437500006],[-58.13779296874999,-20.2373046875],[-58.12460937499999,-20.29345703125],[-58.09150390625,-20.33320312500001],[-58.05844726562499,-20.38613281250001],[-58.025390625,-20.415820312500003],[-58.00224609374999,-20.465429687500006],[-57.97905273437499,-20.657324218750006],[-57.91513671874999,-20.69033203125001],[-57.830224609374994,-20.99794921875001],[-57.94267578124999,-21.79833984375],[-57.95590820312499,-22.109179687500003],[-56.77519531249999,-22.261328125],[-56.44780273437499,-22.076171875],[-56.39487304687499,-22.09267578125001],[-56.35185546874999,-22.17861328125001],[-56.246044921875,-22.2646484375],[-56.18984375,-22.28115234375001],[-55.99140625,-22.28115234375001],[-55.84916992187499,-22.3076171875],[-55.75327148437499,-22.41015625],[-55.74663085937499,-22.5126953125],[-55.61767578125,-22.671484375],[-55.53828125,-23.58095703125001],[-55.518457031249994,-23.627246093750003],[-55.458886718749994,-23.68671875000001],[-55.4423828125,-23.792578125],[-55.4423828125,-23.865332031250006],[-55.415917968749994,-23.95136718750001],[-55.36630859374999,-23.991015625],[-55.28691406249999,-24.004296875],[-55.1943359375,-24.01748046875001],[-55.08188476562499,-23.99765625],[-54.982666015625,-23.97451171875001],[-54.62548828125,-23.8125],[-54.44023437499999,-23.90175781250001],[-54.37080078125,-23.97119140625],[-54.24179687499999,-24.047265625],[-54.281005859375,-24.30605468750001],[-54.43623046875,-25.12128906250001],[-54.47314453125,-25.22021484375],[-54.610546875,-25.432714843750006],[-54.615869140624994,-25.57607421875001],[-54.63193359374999,-26.00576171875001],[-54.677734375,-26.30878906250001],[-54.934472656249994,-26.70253906250001],[-55.1359375,-26.93115234375],[-55.426660156249994,-27.00927734375],[-55.450634765625,-27.068359375],[-55.496728515624994,-27.115332031250006],[-55.564892578125,-27.15],[-55.59726562499999,-27.207617187500006],[-55.59379882812499,-27.2880859375],[-55.63291015624999,-27.35712890625001],[-55.71464843749999,-27.41484375],[-55.789990234375,-27.41640625],[-55.95146484374999,-27.32568359375],[-56.1640625,-27.32148437500001],[-56.437158203124994,-27.553808593750006],[-58.16826171874999,-27.2734375],[-58.60483398437499,-27.31435546875001],[-58.641748046874994,-27.19609375],[-58.618603515625,-27.132128906250003],[-58.222070312499994,-26.65],[-58.18149414062499,-26.307421875],[-57.943115234375,-26.05292968750001],[-57.563134765624994,-25.473730468750006],[-57.821679687499994,-25.13642578125001],[-59.187255859375,-24.562304687500003],[-59.892480468749994,-24.093554687500003],[-60.83984375,-23.85810546875001],[-61.084716796875,-23.65644531250001],[-61.79853515625,-23.18203125],[-62.21416015624999,-22.612402343750006],[-62.372509765625,-22.43916015625001],[-62.54155273437499,-22.349609375],[-62.6259765625,-22.29042968750001],[-62.62568359375,-22.261523437500003],[-62.65097656249999,-22.233691406250003],[-62.27666015624999,-21.066015625],[-62.276318359375,-20.5625],[-61.7568359375,-19.6453125],[-60.00737304687499,-19.29755859375001],[-59.09052734375,-19.286230468750006],[-58.18017578125,-19.81787109375],[-58.15976562499999,-20.164648437500006]]]},"properties":{"name":"Paraguay","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[34.34833984375004,31.292919921874955],[34.2453125000001,31.208300781250045],[34.2125,31.292285156250017],[34.198144531249994,31.322607421875063],[34.47734375000002,31.584863281250023],[34.52412109375004,31.541650390624994],[34.5255859375001,31.52563476562503],[34.34833984375004,31.292919921874955]]],[[[34.88046875,31.3681640625],[34.950976562500074,31.60229492187503],[35.20371093750006,31.75],[35.1271484375001,31.816748046875006],[35.05322265625003,31.83793945312496],[34.983007812500006,31.816796875000023],[34.9611328125001,31.823339843750006],[34.95380859375004,31.84125976562504],[34.98974609374997,31.913281249999955],[34.955957031249994,32.1609375],[35.01054687500002,32.33818359375002],[35.06503906250006,32.46044921875006],[35.19326171875005,32.53442382812503],[35.303808593750006,32.512939453125],[35.38671875000003,32.493017578125034],[35.402636718750074,32.45063476562501],[35.484375,32.40166015624999],[35.5514648437501,32.39550781250006],[35.57207031250002,32.237890625],[35.450585937499994,31.479296875000017],[34.88046875,31.3681640625]]]]},"properties":{"name":"Palestine","childNum":2}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-149.321533203125,-17.690039062499963],[-149.177685546875,-17.736621093750045],[-149.18178710937497,-17.86230468749997],[-149.34111328125,-17.732421874999986],[-149.57890624999993,-17.734960937499963],[-149.635009765625,-17.564257812500003],[-149.37919921874993,-17.522363281249994],[-149.321533203125,-17.690039062499963]]],[[[-143.44057617187497,-16.619726562499963],[-143.38618164062498,-16.668847656250023],[-143.55068359375002,-16.62109374999997],[-143.44057617187497,-16.619726562499963]]],[[[-139.02431640624997,-9.695214843750037],[-138.82734375,-9.74160156249998],[-139.13408203124996,-9.829492187500037],[-139.02431640624997,-9.695214843750037]]],[[[-140.075634765625,-9.425976562499983],[-140.14438476562498,-9.359375],[-140.07094726562497,-9.328125],[-140.075634765625,-9.425976562499983]]],[[[-140.07260742187503,-8.910449218750031],[-140.21743164062497,-8.929687499999957],[-140.24003906249993,-8.79755859375004],[-140.057666015625,-8.801464843750026],[-140.07260742187503,-8.910449218750031]]]]},"properties":{"name":"Fr. Polynesia","childNum":5}},{"geometry":{"type":"Polygon","coordinates":[[[51.26796875000002,24.607226562500003],[51.17802734375002,24.58671875],[51.093359375,24.564648437499997],[51.02275390625002,24.565234375],[50.96601562500001,24.573925781249997],[50.928320312500006,24.595117187499994],[50.85566406250001,24.679638671874997],[50.80439453125001,24.789257812499997],[50.8359375,24.850390625],[50.846777343750006,24.888574218749994],[50.75458984375001,25.39926757812499],[51.003125,25.9814453125],[51.262304687500006,26.153271484374997],[51.543066406250006,25.902392578125003],[51.4853515625,25.524707031250003],[51.60888671875,25.052880859374994],[51.42792968750001,24.668261718750003],[51.26796875000002,24.607226562500003]]]},"properties":{"name":"Qatar","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[28.2125,45.450439453125],[28.317675781250017,45.347119140625],[28.451269531250006,45.2921875],[28.78828125000001,45.240966796875],[28.78173828125,45.309863281249996],[28.894335937500017,45.289941406249994],[29.223535156250023,45.4029296875],[29.403710937500023,45.419677734375],[29.567675781250017,45.37080078125],[29.705859375000017,45.259912109374994],[29.557519531250023,44.843408203124994],[29.048242187500023,44.757568359375],[29.0953125,44.975048828125],[28.891503906250023,44.91865234375],[28.585351562500023,43.742236328124996],[28.221972656250017,43.772851562499994],[27.88427734375,43.987353515624996],[27.425390625,44.0205078125],[27.0869140625,44.167382812499994],[26.2158203125,44.007275390625],[25.4970703125,43.670800781249994],[22.919042968750006,43.83447265625],[22.868261718750006,43.947900390624994],[23.02851562500001,44.077978515625],[22.705078125,44.23779296875],[22.687890625000023,44.248291015625],[22.494531250000023,44.435449218749994],[22.554003906250017,44.540332031249996],[22.6201171875,44.562353515625],[22.70078125,44.555517578125],[22.734375,44.569921875],[22.72089843750001,44.605517578124996],[22.64208984375,44.6509765625],[22.49765625,44.70625],[22.350683593750006,44.676123046875],[22.200976562500017,44.560693359374994],[22.093066406250017,44.541943359375],[21.909277343750006,44.66611328125],[21.636132812500023,44.71044921875],[21.52314453125001,44.790087890624996],[21.36005859375001,44.82666015625],[21.35791015625,44.86181640625],[21.384375,44.870068359375],[21.442187500000017,44.873388671875],[21.519921875000023,44.880810546875],[21.532324218750006,44.900683593749996],[21.35703125,44.990771484374996],[21.465429687500006,45.171875],[21.431445312500017,45.192529296874994],[20.794042968750006,45.46787109375],[20.775,45.749804687499996],[20.760156250000023,45.758105468749996],[20.746875,45.748974609375],[20.727832031250017,45.73740234375],[20.709277343750017,45.735253906249994],[20.652734375000023,45.77939453125],[20.581152343750006,45.869482421875],[20.35859375000001,45.975488281249994],[20.241796875,46.10859375],[20.28095703125001,46.1330078125],[20.508105468750017,46.166943359375],[20.613671875000023,46.13349609375],[20.76025390625,46.246240234374994],[21.121679687500006,46.282421875],[21.99970703125001,47.505029296874994],[22.87666015625001,47.947265625],[23.054785156250006,48.00654296875],[23.139453125000017,48.08740234375],[23.20263671875,48.084521484374996],[23.408203125,47.989990234375],[23.628710937500017,47.995849609375],[24.578906250000017,47.931054687499994],[24.979101562500006,47.72412109375],[25.464257812500023,47.910791015624994],[25.689257812500017,47.932470703125],[25.90869140625,47.967578125],[26.162695312500006,47.992529296875],[26.236230468750023,48.064355468749994],[26.276953125,48.113232421875],[26.3056640625,48.203759765624994],[26.4423828125,48.22998046875],[26.618945312500017,48.25986328125],[26.980761718750017,48.155029296875],[27.614062500000017,47.34052734375],[28.07177734375,46.978417968749994],[28.23945312500001,46.6408203125],[28.07470703125,45.598974609375],[28.2125,45.450439453125]]]},"properties":{"name":"Romania","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[146.71396484375012,43.743798828124994],[146.62197265625,43.81298828125006],[146.88408203125002,43.82915039062496],[146.71396484375012,43.743798828124994]]],[[[146.20761718750006,44.49765625],[146.5677734375,44.44042968749997],[145.91406249999997,44.10371093750004],[145.58681640625,43.84511718750002],[145.5558593750001,43.66459960937502],[145.46171875000007,43.870898437500045],[146.20761718750006,44.49765625]]],[[[148.59951171875,45.317626953125],[147.91376953125004,44.99038085937502],[147.65781250000012,44.97714843749998],[146.89746093750003,44.404296875],[147.24658203124997,44.856054687500006],[147.88554687500007,45.22563476562499],[147.9240234375001,45.38330078125006],[148.05605468750005,45.26210937500005],[148.32421874999997,45.28242187500001],[148.8122070312501,45.510009765625],[148.83710937500004,45.36269531250002],[148.59951171875,45.317626953125]]],[[[149.68769531250004,45.64204101562501],[149.44707031250002,45.593359375000034],[149.9623046875,46.02192382812504],[150.553125,46.208544921875045],[149.68769531250004,45.64204101562501]]],[[[152.00205078125006,46.89716796874998],[151.72343750000007,46.82880859375001],[152.28886718750007,47.1421875],[152.00205078125006,46.89716796874998]]],[[[154.81044921875005,49.31201171875],[154.61093750000006,49.29404296874998],[154.82490234375004,49.64692382812501],[154.81044921875005,49.31201171875]]],[[[155.9210937500001,50.30219726562501],[155.39716796875004,50.04125976562497],[155.24306640625,50.09462890625002],[155.21835937500012,50.29785156250003],[155.68017578124997,50.400732421875034],[156.096875,50.771875],[155.9210937500001,50.30219726562501]]],[[[156.40507812500002,50.65761718750005],[156.16796874999997,50.73188476562498],[156.37646484374997,50.86210937499996],[156.4875,50.84296874999998],[156.40507812500002,50.65761718750005]]],[[[142.76103515625002,54.393945312499966],[143.32470703125003,52.96308593749998],[143.15556640625002,52.08374023437497],[143.29951171875004,51.632373046875045],[143.81601562500006,50.28261718750002],[144.71376953125,48.64028320312502],[144.04873046875,49.249169921874994],[143.73232421875,49.31201171875],[143.10498046875003,49.198828125000034],[142.57421874999997,48.07216796875002],[142.55693359375002,47.737890625000034],[143.21767578125005,46.79487304687504],[143.48564453125002,46.752050781250006],[143.58066406250012,46.360693359375034],[143.43164062500003,46.02866210937498],[143.28232421875006,46.55898437500002],[142.57802734375005,46.700781250000034],[142.07714843749997,45.91704101562499],[141.83037109375002,46.451074218749966],[142.03867187500012,47.140283203124966],[141.9640625000001,47.58745117187502],[142.18173828125012,48.01337890625001],[141.86630859375006,48.750097656250006],[142.1422851562501,49.56914062499999],[142.06601562500006,50.630468750000034],[142.20673828125004,51.22255859375002],[141.72236328125004,51.73632812499997],[141.66083984375004,52.27294921874997],[141.85556640625012,52.79350585937499],[141.82353515625007,53.33950195312502],[142.1419921875,53.49560546875003],[142.52617187500002,53.44746093749998],[142.70595703125,53.89570312499998],[142.33496093749997,54.28071289062501],[142.76103515625002,54.393945312499966]]],[[[137.17861328125005,55.100439453125034],[137.05527343750006,54.9267578125],[136.71464843750002,54.956152343750034],[137.17861328125005,55.100439453125034]]],[[[137.94052734375012,55.092626953125034],[138.20615234375012,55.03354492187498],[137.72148437500007,54.66323242187505],[137.46269531250002,54.873388671875034],[137.23291015624997,54.79057617187496],[137.5773437500001,55.19702148437497],[137.94052734375012,55.092626953125034]]],[[[21.235742187500023,55.26411132812498],[22.072363281250034,55.06367187499998],[22.56728515625005,55.05913085937496],[22.82470703125,54.87128906249998],[22.684472656250023,54.56293945312504],[22.679882812500068,54.493017578125006],[22.766210937499977,54.356787109375034],[22.168457031250057,54.35986328125006],[21.14052734375008,54.39179687499998],[19.604394531250023,54.45917968750004],[19.974511718750023,54.92119140625002],[20.520312500000017,54.994873046875],[20.89980468750008,55.286669921875045],[20.957812500000074,55.27890625000006],[20.594824218750006,54.982373046874955],[20.995898437500017,54.90268554687506],[21.18886718750008,54.93520507812502],[21.235742187500023,55.26411132812498]]],[[[166.65029296875005,54.83906249999998],[166.64511718750006,54.69409179687503],[165.75107421875006,55.294531250000034],[166.27578125000005,55.311962890624955],[166.24804687499997,55.16542968750002],[166.65029296875005,54.83906249999998]]],[[[150.58994140625006,59.01875],[150.47021484375003,59.05405273437498],[150.66621093750004,59.16015625000003],[150.58994140625006,59.01875]]],[[[163.63515625000005,58.603369140625006],[163.47138671875004,58.509375],[163.7609375000001,59.01503906250002],[164.57265625,59.22114257812501],[164.61572265624997,58.885595703125034],[163.63515625000005,58.603369140625006]]],[[[35.8161132812501,65.18208007812501],[35.77871093750005,64.97666015625],[35.52890625000006,65.15107421875001],[35.8161132812501,65.18208007812501]]],[[[70.02070312500004,66.502197265625],[69.65136718750003,66.56533203125],[69.50273437500002,66.75107421875],[70.07666015624997,66.69589843750003],[70.02070312500004,66.502197265625]]],[[[-179.79853515625,68.9404296875],[-178.873876953125,68.75410156249995],[-178.69262695312503,68.54599609375],[-178.09746093750002,68.4248046875],[-178.05581054687497,68.26489257812503],[-177.79677734374997,68.33798828125],[-178.37304687500003,68.56567382812503],[-177.52724609375002,68.29438476562501],[-177.58920898437503,68.22421875],[-175.34521484375,67.67807617187503],[-175.37470703124998,67.35737304687498],[-175.00268554687494,67.4375],[-174.849853515625,67.34887695312503],[-174.92490234375,66.62314453125006],[-174.503759765625,66.537939453125],[-174.39409179687496,66.34423828124997],[-174.084765625,66.47309570312504],[-174.06503906249998,66.22958984374998],[-173.77397460937502,66.43466796875003],[-174.23159179687497,66.63188476562505],[-174.08642578125,66.94287109375],[-174.55009765624993,67.090625],[-173.6796875,67.144775390625],[-173.15781249999998,67.06909179687503],[-173.32353515625,66.95483398437503],[-173.25893554687497,66.84008789062503],[-173.19301757812497,66.99360351562504],[-172.5201171875,66.952490234375],[-173.00751953125,67.06489257812498],[-171.79555664062502,66.93173828125003],[-170.50952148437503,66.34365234375005],[-170.604443359375,66.24892578125002],[-170.30122070312504,66.29404296874998],[-170.24394531250002,66.16928710937503],[-169.777880859375,66.14311523437505],[-169.83168945312497,65.99892578124997],[-170.54067382812497,65.86542968749995],[-170.66630859375,65.62153320312501],[-171.42153320312502,65.81035156250002],[-171.10585937500002,65.51103515625005],[-171.90712890625,65.495947265625],[-172.78330078124998,65.68105468749997],[-172.23281250000002,65.45571289062497],[-172.30927734375004,65.27563476562497],[-172.66191406249993,65.24853515625006],[-172.28603515625002,65.20571289062502],[-172.21318359375,65.04814453124999],[-173.08579101562498,64.81733398437495],[-172.80107421874996,64.79052734375],[-172.90087890624994,64.62885742187501],[-172.40146484374998,64.413916015625],[-172.73916015624997,64.41225585937502],[-172.90317382812498,64.52607421875004],[-172.96005859375003,64.32768554687502],[-173.27548828124998,64.2896484375],[-173.327490234375,64.53955078125003],[-173.72973632812497,64.36450195312497],[-174.57055664062503,64.7177734375],[-175.39511718749998,64.80239257812502],[-175.85385742187498,65.01083984375003],[-176.09326171875,65.471044921875],[-177.05625,65.613623046875],[-177.48876953125,65.50371093749999],[-178.4125,65.49555664062501],[-178.93906249999998,66.03276367187505],[-178.74672851562497,66.01367187500006],[-178.52656250000004,66.40156250000004],[-178.86811523437498,66.18706054687502],[-179.14340820312503,66.37504882812505],[-179.327197265625,66.16259765625003],[-179.68330078124998,66.18413085937505],[-179.78969726562497,65.90087890625],[-179.352099609375,65.51674804687497],[-180,65.06723632812498],[-180,65.31196289062501],[-180,65.55678710937497],[-180,65.80156250000002],[-180,66.04628906250002],[-180,66.29106445312499],[-180,66.53583984375004],[-180,66.78056640625005],[-180,67.02534179687501],[-180,67.27011718750006],[-180,67.51484374999998],[-180,67.75961914062503],[-180,68.00439453124997],[-180,68.24912109375],[-180,68.49389648437497],[-180,68.738671875],[-179.999951171875,68.98344726562505],[-179.79853515625,68.9404296875]]],[[[50.265234375,69.18559570312502],[49.62626953125002,68.85971679687498],[48.91035156250004,68.74306640625002],[48.4390625,68.80488281249998],[48.319921875,69.26923828125001],[48.8449218750001,69.49472656250003],[49.22519531250006,69.51123046875],[50.265234375,69.18559570312502]]],[[[161.46708984375002,68.90097656250003],[161.08281250000007,69.4056640625],[161.50517578125007,69.63945312500002],[161.46708984375002,68.90097656250003]]],[[[169.20078125000006,69.58046875],[168.34804687500005,69.66435546875005],[167.86474609375003,69.90107421875004],[168.35791015625003,70.01567382812502],[169.37480468750007,69.88261718749999],[169.20078125000006,69.58046875]]],[[[60.450488281250074,69.93486328124999],[60.44023437500002,69.72592773437506],[59.637011718750074,69.72104492187503],[59.50263671875004,69.86621093750003],[58.952734375,69.89277343750004],[58.51992187500005,70.31831054687504],[59.04804687500004,70.46049804687505],[60.450488281250074,69.93486328124999]]],[[[52.90332031250003,71.36499023437503],[53.19257812500004,71.21528320312498],[53.0226562500001,70.96870117187501],[52.24960937500006,71.28491210937506],[52.90332031250003,71.36499023437503]]],[[[178.8615234375001,70.826416015625],[178.68388671875013,71.10566406250004],[180,71.53774414062505],[180,70.993017578125],[178.8615234375001,70.826416015625]]],[[[137.95986328125005,71.50766601562503],[137.71181640625005,71.4232421875],[137.06406250000006,71.52988281250003],[137.816796875,71.58789062500006],[137.95986328125005,71.50766601562503]]],[[[-178.87646484375,71.57705078124997],[-178.13388671874998,71.46547851562497],[-177.523583984375,71.16689453125],[-179.415673828125,70.91899414062502],[-179.999951171875,70.993017578125],[-179.999951171875,71.53774414062505],[-178.87646484375,71.57705078124997]]],[[[77.6325195312501,72.291259765625],[76.87109374999997,72.317041015625],[77.74853515625003,72.63120117187506],[78.36513671875005,72.48242187500003],[77.6325195312501,72.291259765625]]],[[[79.50146484374997,72.72192382812497],[78.63320312500005,72.85073242187502],[79.16425781250004,73.0943359375],[79.50146484374997,72.72192382812497]]],[[[74.660546875,72.87343750000002],[74.18066406250003,72.975341796875],[74.19853515625002,73.10908203124998],[74.9615234375,73.0625],[74.660546875,72.87343750000002]]],[[[120.26132812500012,73.08984374999997],[119.79208984375006,73.04541015624997],[119.64042968750002,73.12431640625007],[120.26132812500012,73.08984374999997]]],[[[55.31982421875003,73.30830078124998],[56.42958984375005,73.201171875],[56.121679687500006,72.80659179687498],[55.40332031249997,72.54907226562503],[55.29785156249997,71.93535156250005],[56.45439453125002,71.10737304687504],[57.62539062500005,70.72880859374999],[57.14589843750005,70.58911132812506],[56.38574218749997,70.73413085937503],[56.49970703125004,70.56640625000003],[55.687304687500074,70.69218749999999],[54.60117187500006,70.68007812500002],[53.383593750000074,70.87353515625],[53.670507812500006,71.08691406250003],[54.155664062499994,71.12548828125],[53.40996093750002,71.34013671875002],[53.41162109375003,71.530126953125],[51.93789062500005,71.47470703124998],[51.511328125,71.64809570312497],[51.58251953124997,72.07119140625],[52.252050781250006,72.12973632812503],[52.66191406250002,72.33686523437495],[52.91660156250006,72.66889648437501],[52.5792968750001,72.791357421875],[53.3698242187501,72.91674804687506],[53.2511718750001,73.182958984375],[54.80390625000004,73.38764648437498],[55.31982421875003,73.30830078124998]]],[[[70.67392578125006,73.09501953125005],[70.04072265625004,73.03715820312507],[69.99589843750002,73.359375],[70.94023437500002,73.51440429687503],[71.6261718750001,73.17397460937497],[70.67392578125006,73.09501953125005]]],[[[142.18486328125007,73.89589843750005],[143.34375,73.56875],[143.45146484375007,73.231298828125],[141.59667968750003,73.31083984375005],[140.66279296875004,73.45200195312503],[139.785546875,73.35522460937503],[141.08476562500002,73.86586914062497],[142.18486328125007,73.89589843750005]]],[[[83.5490234375001,74.07177734375],[82.8177734375,74.09160156250005],[83.14980468750005,74.151611328125],[83.5490234375001,74.07177734375]]],[[[141.01025390625003,73.99946289062501],[140.40947265625002,73.92167968750005],[140.1935546875001,74.23671875000002],[141.03857421875003,74.24272460937502],[141.01025390625003,73.99946289062501]]],[[[113.38720703124997,74.40043945312499],[112.78242187500004,74.09506835937503],[111.50341796874997,74.35307617187502],[111.87978515625,74.36381835937499],[112.08447265624997,74.54897460937505],[113.38720703124997,74.40043945312499]]],[[[86.653125,74.981298828125],[87.05214843750005,74.982568359375],[86.92714843750005,74.83076171874998],[86.25859375000002,74.89350585937498],[86.653125,74.981298828125]]],[[[82.17236328125003,75.41938476562501],[81.97851562499997,75.24711914062499],[81.65478515625003,75.28891601562498],[81.71210937500004,75.45141601562506],[82.165625,75.515625],[82.17236328125003,75.41938476562501]]],[[[146.79521484375007,75.37075195312505],[148.43242187500002,75.41352539062495],[148.59013671875007,75.23637695312502],[150.82236328125006,75.15654296875002],[150.64628906250002,74.944580078125],[149.596875,74.77260742187505],[148.296875,74.80043945312502],[146.14853515625012,75.19829101562499],[146.5375,75.58178710937506],[146.79521484375007,75.37075195312505]]],[[[135.9486328125,75.40957031250005],[135.45195312500007,75.38955078124997],[135.6986328125,75.84526367187499],[136.16894531249997,75.60556640625],[135.9486328125,75.40957031250005]]],[[[140.04873046875,75.82895507812503],[140.81591796874997,75.63071289062498],[141.48544921875012,76.13715820312495],[142.66953125000012,75.86342773437497],[143.68583984375002,75.86367187500002],[145.35996093750006,75.53046874999998],[144.01972656250004,75.04467773437506],[143.1703125,75.11689453125001],[142.72949218749997,75.33764648437506],[142.941796875,75.71328125000002],[142.30791015625007,75.69169921875005],[142.19882812500006,75.39267578124998],[143.12792968749997,74.9703125],[142.47275390625006,74.82041015625],[141.98730468750003,74.99125976562499],[140.26787109375002,74.846923828125],[139.68125,74.96406249999995],[139.09912109374997,74.65654296875002],[138.09228515625003,74.79746093750003],[136.94765625000005,75.32553710937498],[137.28974609375004,75.34863281249997],[137.26884765625002,75.7494140625],[137.70654296875003,75.75957031250002],[137.56054687499997,75.95522460937502],[138.20761718750006,76.11494140624995],[138.91953125000006,76.19672851562501],[140.04873046875,75.82895507812503]]],[[[96.5324218750001,76.278125],[96.30058593750002,76.121728515625],[95.31113281250006,76.21474609375002],[95.37988281250003,76.2890625],[96.5324218750001,76.278125]]],[[[112.47802734375003,76.62089843749999],[112.531640625,76.450048828125],[111.96894531250004,76.62617187500001],[112.47802734375003,76.62089843749999]]],[[[149.15019531250002,76.65991210937506],[148.39863281250004,76.64824218750007],[149.4064453125001,76.78208007812498],[149.15019531250002,76.65991210937506]]],[[[67.7653320312501,76.23759765624999],[61.35595703124997,75.31484375000002],[60.27685546875003,75.00756835937503],[60.501367187499994,74.90463867187503],[59.67402343750004,74.61015624999999],[59.24013671875005,74.69296874999998],[59.040429687499994,74.48554687500001],[58.53466796875003,74.49892578124997],[58.6178710937501,74.22739257812498],[57.76738281250002,74.013818359375],[57.755957031250006,73.769189453125],[57.313085937500006,73.838037109375],[57.54257812500006,73.65820312500003],[56.96386718750003,73.36655273437503],[56.43037109375004,73.29721679687503],[55.00683593750003,73.45385742187506],[54.29990234375006,73.35097656249997],[53.7628906250001,73.76616210937499],[54.64267578125006,73.95957031250006],[55.34091796875006,74.41962890624998],[56.13710937500005,74.49609375000003],[55.5822265625001,74.627685546875],[56.4987304687501,74.95708007812505],[55.81005859374997,75.12490234374997],[56.03554687499999,75.19423828124997],[56.57031250000003,75.09775390625003],[56.8444335937501,75.351416015625],[57.606835937499994,75.34125976562498],[58.05830078125004,75.6630859375],[58.88125,75.85478515625007],[60.27929687499997,76.09624023437505],[60.94218750000002,76.07128906250003],[61.20166015624997,76.28203125000007],[62.97148437500002,76.23666992187498],[64.4634765625,76.37817382812503],[67.65185546874997,77.011572265625],[68.48574218750005,76.93369140625003],[68.94169921875002,76.707666015625],[67.7653320312501,76.23759765624999]]],[[[96.28544921875002,77.02666015625007],[95.27031250000007,77.01884765624999],[96.52841796875006,77.20551757812501],[96.28544921875002,77.02666015625007]]],[[[89.51425781250006,77.18881835937498],[89.14169921875012,77.22680664062497],[89.61621093749997,77.31103515625],[89.51425781250006,77.18881835937498]]],[[[130.68730468750007,42.30253906249999],[130.52695312500012,42.535400390625],[130.42480468749997,42.72705078124997],[131.06855468750004,42.90224609375005],[131.25732421875003,43.378076171874994],[131.2552734375,44.07158203124999],[130.9816406250001,44.844335937500034],[131.44687500000012,44.984033203124966],[131.85185546875002,45.32685546875001],[132.93603515624997,45.029931640624994],[133.1134765625001,45.130712890625006],[133.18603515625003,45.49482421875004],[133.43642578125,45.60468750000004],[133.86132812500003,46.24775390625004],[134.1676757812501,47.30219726562501],[134.75234375,47.71542968749998],[134.56601562500006,48.02250976562502],[134.66523437500004,48.25390625],[134.29335937500005,48.37343750000002],[133.46835937500006,48.09716796875003],[133.14404296875003,48.10566406249998],[132.7072265625001,47.94726562500006],[132.47626953125004,47.714990234374994],[130.96191406249997,47.70932617187498],[130.7326171875001,48.01923828124998],[130.80429687500012,48.34150390624998],[130.5521484375,48.602490234374955],[130.553125,48.861181640625006],[130.1959960937501,48.89165039062499],[129.49814453125012,49.38881835937502],[129.0651367187501,49.374658203124966],[128.70400390625,49.60014648437499],[127.99960937500006,49.56860351562506],[127.55078124999997,49.801806640625045],[127.590234375,50.20898437500003],[127.33720703125007,50.35014648437502],[127.30703125000005,50.70795898437501],[126.92480468749997,51.10014648437496],[126.34169921875,52.36201171875001],[125.64902343750012,53.042285156250045],[125.075,53.20366210937496],[124.81230468750002,53.133837890625045],[123.6078125,53.546533203124994],[120.98544921875012,53.28457031250002],[120.09453125000007,52.787207031250034],[120.0675781250001,52.632910156250034],[120.65615234375,52.56665039062503],[120.74980468750007,52.096533203125006],[120.06689453125003,51.60068359375006],[119.16367187500006,50.40600585937503],[119.34628906250012,50.278955078124994],[119.25986328125012,50.06640625000003],[118.4515625,49.84448242187503],[117.8734375,49.51347656250002],[116.6833007812501,49.82377929687499],[116.551171875,49.92031250000002],[116.35117187500012,49.97807617187499],[116.21679687500003,50.00927734375003],[116.13457031250002,50.01079101562499],[115.9259765625001,49.95214843750003],[115.79521484375002,49.90590820312502],[115.71777343750003,49.88061523437503],[115.58798828125006,49.88603515624996],[115.42919921874997,49.89648437499997],[115.36503906250002,49.911767578124966],[115.27451171875006,49.948876953124994],[115.00332031250005,50.138574218749994],[114.74316406249997,50.23369140625002],[114.29707031250004,50.27441406250006],[113.57421874999997,50.00703125000001],[113.44550781250004,49.94160156250001],[113.31904296875004,49.87431640624999],[113.16416015625012,49.79716796874999],[113.09208984375007,49.692529296874994],[113.05556640625,49.61625976562499],[112.91484375000002,49.569238281249994],[112.80644531250007,49.52358398437502],[112.69736328125012,49.50727539062498],[112.49492187500002,49.532324218750034],[112.07968750000006,49.42421875000002],[111.42929687500006,49.342626953125034],[111.3366210937501,49.355859374999966],[111.20419921875012,49.304296875000034],[110.82792968750002,49.16616210937505],[110.70976562500002,49.14296875000002],[110.42783203125006,49.219970703125],[110.32138671875012,49.215869140625045],[110.19990234375004,49.17041015625003],[109.5287109375,49.269873046875034],[109.45371093750012,49.29633789062501],[109.23671875000005,49.334912109374955],[108.61367187500005,49.32280273437499],[108.52246093750003,49.34150390624998],[108.4069335937501,49.39638671875005],[107.96542968750012,49.65351562500004],[107.91660156250012,49.947802734375045],[107.63095703125012,49.98310546875004],[107.3470703125,49.986669921875034],[107.23330078125,49.989404296874994],[107.14306640625003,50.03300781249999],[107.04023437500004,50.086474609375045],[106.94130859375005,50.19667968750002],[106.71113281250004,50.312597656250006],[106.57441406250004,50.32880859375004],[106.36845703125002,50.317578124999955],[106.21787109375006,50.304589843749966],[105.38359375000002,50.47373046874998],[104.07871093750012,50.15424804687498],[103.63291015625006,50.138574218749994],[103.49628906250004,50.16494140625005],[103.42119140625002,50.18706054687502],[103.3043945312501,50.200292968750034],[102.28837890625007,50.58510742187502],[102.31660156250004,50.71845703125001],[102.21503906250004,50.82944335937506],[102.19453125000004,51.05068359375002],[102.15195312500006,51.107519531250034],[102.14238281250007,51.21606445312503],[102.16005859375005,51.260839843750006],[102.1556640625,51.31376953124996],[102.1115234375001,51.353466796874955],[101.97919921875004,51.382226562499966],[101.82119140625,51.421044921874966],[101.57089843750006,51.46718750000005],[101.38125,51.45263671875],[100.53623046875006,51.713476562500034],[100.46894531250004,51.72607421875003],[100.23037109375,51.729833984375006],[100.0345703125,51.73710937499996],[99.92167968750002,51.755517578124994],[99.71923828124997,51.87163085937502],[98.89316406250006,52.11728515625006],[98.64052734375005,51.80117187500005],[98.103125,51.483544921874994],[97.82529296875012,50.985253906249994],[97.953125,50.85517578124998],[98.02978515625003,50.64462890624998],[98.07890625000002,50.60380859375002],[98.14501953124997,50.56855468750001],[98.22050781250007,50.55717773437502],[98.2794921875001,50.53325195312502],[98.25029296875002,50.30244140624998],[98.00390625000003,50.01425781249998],[97.35976562500005,49.741455078125],[97.20859375000006,49.73081054687506],[96.98574218750005,49.88281250000003],[96.31503906250012,49.90112304687503],[96.06552734375006,49.99873046875001],[95.52265625000004,49.911230468750034],[95.11142578125012,49.935449218749994],[94.93027343750006,50.04375],[94.8112304687501,50.04819335937506],[94.71806640625002,50.04326171875002],[94.67548828125004,50.02807617187506],[94.61474609375003,50.02373046874996],[94.56464843750004,50.08793945312499],[94.35468750000004,50.221826171874994],[94.25107421875006,50.55639648437503],[93.103125,50.60390625000002],[92.94130859375005,50.77822265625002],[92.85644531250003,50.78911132812502],[92.77929687500003,50.778662109375006],[92.738671875,50.71093749999997],[92.68134765625004,50.683203125],[92.6266601562501,50.68828124999999],[92.57890625000002,50.725439453125006],[92.42636718750006,50.803076171875006],[92.35478515625002,50.86416015625002],[92.29580078125,50.84980468750004],[92.19238281249997,50.700585937499994],[91.80429687500006,50.693603515625],[91.4464843750001,50.52216796874998],[91.41503906249997,50.46801757812506],[91.34082031249997,50.470068359375034],[91.30058593750002,50.46337890625],[91.2337890625,50.45239257812497],[91.02158203125012,50.41547851562501],[90.83808593750004,50.32373046874997],[90.76074218749997,50.30595703124999],[90.71435546874997,50.25942382812502],[90.65507812500007,50.22236328125001],[90.05371093750003,50.09375],[89.64384765625002,49.90302734374998],[89.65410156250007,49.71748046875001],[89.57919921875006,49.69970703125003],[89.475,49.66054687500005],[89.39560546875006,49.61152343750001],[89.24394531250007,49.62705078125006],[89.20292968750007,49.59570312499997],[89.17998046875002,49.5322265625],[89.10947265625012,49.50136718750002],[89.00839843750006,49.472802734374994],[88.97060546875,49.483740234375006],[88.94541015625012,49.50766601562498],[88.90019531250002,49.53969726562502],[88.86386718750006,49.52763671874996],[88.83164062500012,49.44843749999998],[88.633203125,49.486132812500045],[88.19257812500004,49.451708984375045],[88.13554687500002,49.38149414062502],[88.11572265624997,49.25629882812501],[88.0285156250001,49.219775390625045],[87.98808593750002,49.186914062499994],[87.9347656250001,49.16455078124997],[87.81425781250002,49.162304687499955],[87.7625,49.16582031249996],[87.5158203125001,49.122412109375006],[87.41669921875004,49.07661132812501],[87.32285156250012,49.085791015625006],[86.62646484374997,49.56269531250001],[86.67548828125004,49.77729492187501],[86.1808593750001,49.49931640624996],[85.2326171875001,49.61582031249998],[84.9894531250001,50.061425781249994],[84.32324218749997,50.239160156249966],[83.94511718750007,50.774658203125],[83.35732421875005,50.99458007812504],[82.76083984375012,50.89335937500002],[82.49394531250007,50.72758789062499],[81.46591796875006,50.73984375],[81.38828125000006,50.95649414062501],[81.0714843750001,50.96875],[81.12724609375002,51.19106445312502],[80.73525390625,51.29340820312498],[80.44804687500002,51.18334960937503],[80.42363281250002,50.94628906249997],[79.98623046875,50.774560546874966],[77.85996093750006,53.269189453124994],[76.48476562500005,54.02255859374998],[76.42167968750007,54.151513671874966],[76.65458984375007,54.14526367187503],[76.8373046875,54.4423828125],[75.43720703125004,54.08964843749999],[75.22021484374997,53.89379882812506],[74.45195312500007,53.64726562500002],[74.35156250000003,53.487646484375006],[73.85898437500006,53.61972656249998],[73.40693359375004,53.44755859374999],[73.30566406250003,53.707226562499955],[73.71240234375003,54.04238281250002],[73.22988281250005,53.957812500000045],[72.62226562500004,54.13432617187502],[72.44677734375003,53.94184570312498],[72.18603515625003,54.32563476562501],[72.00449218750006,54.20566406249998],[71.09316406250005,54.21220703124999],[71.18554687500003,54.59931640624998],[70.73808593750007,55.30517578125],[70.18242187500002,55.162451171875034],[68.9772460937501,55.389599609374955],[68.20625,55.16093750000002],[68.15585937500006,54.97670898437505],[65.476953125,54.62329101562497],[65.08837890624997,54.340185546875034],[64.46123046875002,54.38417968750002],[61.92871093750003,53.94648437500004],[61.231054687500006,54.01948242187498],[60.97949218749997,53.62172851562505],[61.53496093750002,53.52329101562506],[61.22890625,53.445898437500006],[61.19921874999997,53.28715820312502],[61.65986328125004,53.22846679687504],[62.08271484375004,53.00541992187499],[61.047460937500006,52.97246093750002],[60.77441406249997,52.67578124999997],[60.99453125000005,52.33686523437504],[60.03027343749997,51.93325195312505],[60.464746093749994,51.651171875000045],[61.55468750000003,51.32460937500005],[61.38945312500002,50.86103515625001],[60.94228515625005,50.69550781250004],[60.42480468749997,50.67915039062498],[60.05859374999997,50.850292968749955],[59.812402343749994,50.58203125],[59.523046875,50.492871093749955],[59.4523437500001,50.62041015625002],[58.88369140625005,50.694433593750006],[58.359179687500074,51.063818359375034],[57.83886718750003,51.091650390625006],[57.44218750000002,50.88886718749998],[57.01171874999997,51.06518554687503],[56.49140625000004,51.01953124999997],[55.68623046875004,50.582861328125006],[54.64160156250003,51.011572265625034],[54.555273437500006,50.535791015624994],[54.139746093750006,51.04077148437503],[53.33808593750004,51.48237304687504],[52.57119140625005,51.481640624999955],[52.21914062499999,51.709375],[51.344531250000074,51.47534179687503],[51.16347656250005,51.6474609375],[50.79394531249997,51.729199218749955],[50.246875,51.28950195312498],[49.49804687500003,51.08359375000006],[49.32343750000004,50.851708984374966],[48.625097656250006,50.61269531250005],[48.7589843750001,49.92832031250006],[48.33496093750003,49.858251953125006],[47.7057617187501,50.37797851562502],[47.42919921874997,50.35795898437502],[46.889550781249994,49.69697265625001],[46.80205078125002,49.36708984375002],[47.031347656250006,49.150292968749994],[46.70263671875003,48.80556640625002],[46.660937500000074,48.41225585937502],[47.06464843750004,48.23247070312499],[47.292382812499994,47.74091796875004],[47.48193359374997,47.80390624999998],[48.16699218750003,47.70878906249996],[48.959375,46.77460937499998],[48.558398437500074,46.75712890624999],[48.54121093750004,46.60561523437502],[49.232226562500074,46.33715820312503],[48.683691406250006,46.08618164062497],[48.72958984375006,45.896826171875034],[48.4870117187501,45.93486328124996],[47.63330078124997,45.58403320312499],[47.46328125,45.67968750000003],[47.5294921875001,45.530224609374955],[47.3512695312501,45.21772460937498],[46.7072265625001,44.503320312499994],[47.30703125000005,44.103125],[47.462792968749994,43.55502929687498],[47.64648437500003,43.88461914062498],[47.463183593750074,43.03505859375002],[48.572851562500006,41.84448242187503],[47.79101562499997,41.19926757812502],[47.31767578125002,41.28242187500001],[46.74931640625002,41.812597656250006],[46.42988281250004,41.890966796875006],[46.21269531250002,41.989892578124994],[45.63857421875005,42.20507812500003],[45.63427734374997,42.234716796875034],[45.72753906249997,42.47504882812498],[45.70527343750004,42.49809570312496],[45.56289062499999,42.53574218749998],[45.34375,42.52978515625003],[45.16025390625006,42.675],[45.07158203125002,42.69414062500002],[44.94335937499997,42.73027343750002],[44.870996093749994,42.75639648437499],[44.850488281249994,42.746826171875],[44.77109375000006,42.61679687499998],[44.69179687499999,42.709619140624966],[44.64433593750002,42.734716796875034],[44.50585937500003,42.748632812500006],[44.329492187499994,42.703515624999966],[44.10273437500004,42.616357421874994],[44.004687500000074,42.59560546875002],[43.95742187500005,42.56655273437505],[43.825976562500074,42.571533203125],[43.759863281250006,42.593847656250006],[43.738378906250006,42.61699218750002],[43.74990234375005,42.65751953125002],[43.79541015624997,42.702978515625034],[43.78261718750005,42.747021484374955],[43.62304687500003,42.80771484374998],[43.5578125000001,42.844482421875],[43.089160156250074,42.9890625],[43.00019531250004,43.04965820312506],[42.991601562499994,43.09150390624998],[42.76064453125005,43.169580078124966],[41.58056640624997,43.21923828124997],[41.460742187500074,43.276318359374955],[41.35820312500002,43.33339843750005],[41.08310546875006,43.37446289062498],[40.94199218750006,43.41806640624998],[40.801660156249994,43.479931640624955],[40.64804687500006,43.53388671875004],[40.084570312500006,43.553125],[40.02373046875002,43.48486328125],[39.873632812500006,43.47280273437502],[38.71728515624997,44.28808593750003],[38.18125,44.41967773437503],[37.851464843749994,44.698828125000034],[37.49511718750003,44.69526367187504],[37.20478515625004,44.97197265624999],[36.62763671875004,45.15131835937504],[36.941210937500074,45.289697265624994],[36.72041015625004,45.371875],[36.8659179687501,45.42705078124999],[37.21357421875004,45.272314453125006],[37.6471679687501,45.37719726562506],[37.61240234375006,45.56469726562506],[37.93310546875003,46.001708984375],[38.014257812500006,46.047753906249966],[38.07958984375003,45.93481445312506],[38.18359374999997,46.09482421875006],[38.49228515625006,46.09052734374998],[37.913867187500074,46.40649414062503],[37.766503906249994,46.63613281250002],[38.50097656249997,46.663671875000034],[38.43867187500004,46.813085937500006],[39.29345703125003,47.105761718750045],[39.19570312499999,47.268847656250045],[39.023730468750074,47.27221679687503],[38.928320312500006,47.175683593749994],[38.55244140625004,47.15034179687498],[38.7619140625001,47.261621093749994],[38.21435546875003,47.091455078124966],[38.36884765625004,47.609960937500006],[38.90029296875005,47.85512695312502],[39.77871093750005,47.88754882812506],[39.95791015625005,48.268896484375034],[39.8356445312501,48.54277343749996],[39.6447265625001,48.591210937499966],[39.792871093749994,48.807714843750034],[40.00361328125004,48.82207031250002],[39.68652343749997,49.007910156250034],[40.10878906250005,49.251562500000034],[40.080664062500006,49.576855468749955],[39.780566406250074,49.57202148437503],[39.17480468750003,49.85595703124997],[38.91835937499999,49.82470703125],[38.258593750000074,50.05234375],[38.046875,49.92001953125006],[37.42285156249997,50.411474609375006],[36.619433593750074,50.209228515625],[36.1164062500001,50.408544921875006],[35.59111328125002,50.36875],[35.31191406250005,51.043896484374955],[35.0640625,51.203417968750045],[34.21386718750003,51.25537109375006],[34.12109375000003,51.67915039062498],[34.397851562499994,51.780419921874994],[33.735253906249994,52.344775390625045],[32.435449218749994,52.307226562500034],[32.12226562500004,52.05058593749996],[31.763378906250097,52.10107421875003],[31.758593750000017,52.125830078125034],[31.690625,52.22065429687498],[31.64990234374997,52.26220703125],[31.60156250000003,52.284814453124994],[31.57734375000004,52.31230468749999],[31.585546875,52.532470703125],[31.56484375,52.75922851562501],[31.53515624999997,52.798242187499966],[31.442773437499994,52.86181640625003],[31.35302734374997,52.93344726562498],[31.295117187500097,52.98979492187499],[31.25878906249997,53.01669921875006],[31.364550781250017,53.13896484375002],[31.388378906250097,53.18481445312503],[31.41787109375005,53.196044921875],[31.849707031250006,53.106201171875],[32.14199218750005,53.091162109375034],[32.46933593750006,53.270312500000045],[32.578027343749994,53.312402343749994],[32.644433593749994,53.32890624999999],[32.70429687500004,53.33632812499999],[32.45097656250002,53.6533203125],[32.20039062500004,53.78125],[31.99218750000003,53.796875],[31.82080078124997,53.79194335937498],[31.754199218750017,53.81044921875002],[31.825292968750006,53.93500976562501],[31.837792968749994,54.00078124999999],[31.825976562500074,54.030712890624955],[31.79199218749997,54.05590820312503],[31.62841796874997,54.111181640625006],[31.403613281250017,54.195947265624966],[31.299121093750017,54.29169921875001],[31.184765625000097,54.452978515625006],[31.074804687500063,54.491796875],[31.154882812500063,54.610937500000034],[31.152148437500017,54.625341796875034],[31.12128906250004,54.64848632812496],[30.984179687500074,54.695898437500034],[30.79882812499997,54.78325195312499],[30.79101562499997,54.806005859375006],[30.804492187500074,54.8609375],[30.829882812500017,54.91499023437498],[30.977734375000097,55.05048828124998],[30.977734375000097,55.08779296875002],[30.958886718749994,55.13759765625005],[30.87744140625003,55.223437500000045],[30.81445312499997,55.27871093750002],[30.81054687499997,55.306982421875006],[30.82099609375004,55.330273437499955],[30.900585937500097,55.397412109374955],[30.906835937500063,55.57001953125004],[30.625585937500006,55.666259765625],[30.23359375000004,55.84521484375006],[30.04267578125004,55.83642578125003],[29.93701171874997,55.84526367187499],[29.881640625000074,55.83232421875002],[29.82392578125004,55.79511718749998],[29.74414062499997,55.770410156249994],[29.630078125000097,55.75117187499998],[29.482226562500074,55.6845703125],[29.412988281249994,55.72485351562506],[29.35341796875005,55.784375],[29.375,55.938720703125],[28.284277343750006,56.055908203125],[28.14794921875003,56.142919921875034],[28.202050781250023,56.260400390624994],[28.191699218750045,56.31557617187505],[28.169238281250017,56.386865234374994],[28.11083984375,56.51069335937501],[28.103125,56.545703125000045],[27.89208984375003,56.741064453125034],[27.88154296875001,56.82416992187501],[27.848632812500057,56.85341796875002],[27.806054687499994,56.86708984375005],[27.639453125000074,56.84565429687504],[27.83027343750004,57.19448242187505],[27.83828125000008,57.247705078124966],[27.82861328124997,57.293310546875006],[27.796875,57.316943359375045],[27.538671875000063,57.429785156250034],[27.51113281250005,57.508154296875006],[27.469726562500057,57.524023437500034],[27.35195312500005,57.528125],[27.4,57.66679687499999],[27.542089843750063,57.799414062500006],[27.778515625000068,57.87070312500006],[27.502441406250057,58.221337890624994],[27.434179687500006,58.787255859374994],[28.15107421875004,59.374414062499966],[28.0125,59.484277343749966],[28.05800781250008,59.781542968750045],[28.334570312500034,59.69252929687502],[28.518164062500034,59.849560546874955],[28.947265625000057,59.828759765624994],[29.147265625000045,59.999755859375],[30.12255859374997,59.873583984375074],[30.172656250000017,59.957128906250034],[29.72119140624997,60.19531249999997],[29.069140625000017,60.19145507812499],[28.643164062500006,60.375292968750045],[28.512792968750006,60.67729492187502],[27.797656250000074,60.53613281250003],[29.69013671875004,61.54609375000001],[31.18671875000004,62.48139648437504],[31.533984375000017,62.885400390624994],[31.180859375000097,63.208300781250074],[29.991503906250074,63.73515625000002],[30.50390625000003,64.02060546875],[30.513769531250006,64.2],[30.04189453125005,64.44335937499997],[30.072851562500063,64.76503906250005],[29.60419921875004,64.968408203125],[29.826953125000017,65.14506835937502],[29.608007812500006,65.248681640625],[29.715917968750063,65.62456054687502],[30.102734375000097,65.72626953125004],[29.066210937500045,66.89174804687497],[29.988085937500017,67.66826171874999],[29.343847656250006,68.06186523437506],[28.685156250000034,68.189794921875],[28.470703125000057,68.48837890625],[28.77285156250005,68.84003906249995],[28.414062500000057,68.90415039062506],[28.96582031250003,69.02197265625],[29.38828125,69.29814453125005],[30.08730468750005,69.43286132812503],[30.18017578124997,69.63583984375],[30.860742187499994,69.53842773437503],[30.869726562500006,69.78344726562506],[31.546972656250063,69.696923828125],[31.997949218749994,69.80991210937503],[31.98457031250004,69.95366210937499],[33.00781249999997,69.72211914062498],[32.91503906249997,69.60170898437497],[32.17675781250003,69.67402343749995],[32.37773437500002,69.47910156250003],[32.99980468750002,69.4701171875],[32.97890625000005,69.367333984375],[33.45429687500004,69.42817382812495],[33.14121093750006,69.068701171875],[33.684375,69.31025390625001],[35.85791015625003,69.19174804687503],[37.73056640625006,68.69213867187503],[38.43017578125003,68.35561523437505],[39.568945312500006,68.07172851562501],[39.82333984375006,68.05859375],[39.80927734375004,68.15083007812498],[40.38066406250002,67.831884765625],[40.96640625000006,67.71347656250003],[41.358789062499994,67.20966796874998],[41.18896484375003,66.82617187500003],[40.10332031250002,66.29995117187502],[38.65390625000006,66.06904296874995],[35.51347656250002,66.39580078125002],[34.82460937499999,66.61113281249999],[34.48261718750004,66.55034179687505],[34.4515625,66.651220703125],[33.15019531250002,66.84394531250001],[32.93046875000002,67.08681640625002],[31.895312500000074,67.16142578125002],[33.65595703125004,66.44262695312506],[33.36054687500004,66.32954101562501],[34.112695312499994,66.225244140625],[34.69179687500005,65.95185546874998],[34.77695312500006,65.76826171874998],[34.40644531250004,65.39575195312503],[35.03535156250004,64.44023437500005],[35.802050781250074,64.3353515625],[36.3649414062501,64.00283203125002],[37.44218750000002,63.813378906249966],[37.9679687500001,63.949121093749994],[38.0622070312501,64.09101562499995],[37.953710937500006,64.32011718749999],[37.183691406250006,64.40849609375007],[36.6242187500001,64.75053710937502],[36.534570312499994,64.93862304687497],[36.88281249999997,65.17236328124997],[39.7580078125001,64.57705078125002],[40.05781250000004,64.77075195312497],[40.44492187500006,64.7787109375],[39.7980468750001,65.349853515625],[39.816503906250006,65.59794921874999],[41.4757812500001,66.12343750000002],[42.21054687500006,66.51967773437502],[43.23320312500002,66.41552734375003],[43.653125,66.2509765625],[43.54189453125005,66.12338867187503],[43.84375,66.14238281249999],[44.10439453125005,66.00859374999999],[44.42929687500006,66.93774414062503],[43.7824218750001,67.25449218749998],[44.20468750000006,68.25375976562498],[43.33320312500004,68.67338867187502],[44.04804687500004,68.54882812499997],[45.891992187499994,68.47968750000001],[46.69042968750003,67.84882812500001],[45.52871093750005,67.75756835937497],[44.90214843750002,67.41313476562505],[45.56220703125004,67.18559570312507],[45.88535156250006,66.89106445312501],[46.4923828125001,66.80019531249997],[47.65585937500006,66.97592773437498],[47.87470703125004,67.58417968749998],[48.83320312500004,67.681494140625],[48.75429687500005,67.89594726562501],[49.15527343750003,67.87041015625005],[51.994726562500006,68.53876953124995],[52.3966796875001,68.35170898437505],[52.72265624999997,68.484033203125],[52.34404296875002,68.60815429687497],[53.80195312500004,68.99589843750002],[54.49121093750003,68.992333984375],[53.797656250000074,68.90747070312503],[53.9308593750001,68.43554687499997],[53.260546875000074,68.26748046875002],[54.476171875,68.29414062499995],[54.86132812500003,68.20185546874998],[55.418066406250006,68.56782226562501],[56.04365234375004,68.64887695312501],[57.126855468749994,68.55400390625005],[58.17304687500004,68.88974609375006],[59.0573242187501,69.00605468750004],[59.37050781250005,68.73837890625003],[59.09902343750005,68.4443359375],[59.725683593750006,68.35161132812502],[59.89599609374997,68.70634765624999],[60.489160156249994,68.72895507812498],[60.93359374999997,68.98676757812501],[60.17060546875004,69.59091796875],[60.90908203125005,69.84711914062495],[64.19042968750003,69.53466796875],[64.89628906250002,69.247802734375],[67.00244140625003,68.87358398437505],[68.37119140625006,68.31425781250005],[69.14052734375005,68.95063476562501],[68.54277343750002,68.96708984374999],[68.00585937499997,69.48002929687505],[67.62412109375,69.58442382812501],[67.06445312500003,69.69370117187498],[66.89667968750004,69.55380859374998],[67.28476562500006,70.73872070312498],[67.14335937500002,70.83754882812502],[66.70224609375006,70.81850585937497],[66.63964843749997,71.08139648437498],[68.2692382812501,71.68281250000001],[69.61181640625003,72.98193359375],[69.73828124999997,72.88496093749998],[71.5001953125001,72.91367187500003],[72.812109375,72.69140624999997],[72.57412109375,72.01254882812506],[71.86728515625,71.457373046875],[72.70449218750005,70.96323242187498],[72.5767578125,68.96870117187498],[73.59169921875005,68.48188476562501],[73.13945312500002,68.18134765624998],[73.06679687500005,67.766943359375],[71.84746093750002,67.00761718750005],[71.36523437500003,66.96152343749998],[71.53955078125003,66.68310546875],[70.72490234375007,66.51943359374997],[70.38281249999997,66.60249023437501],[70.69072265625002,66.74531249999998],[70.2833984375001,66.68579101562503],[69.8771484375001,66.84545898437506],[69.21777343749997,66.82861328125],[69.01347656250002,66.78833007812503],[69.19433593749997,66.57866210937505],[70.33945312500006,66.34238281250006],[71.35800781250006,66.35942382812505],[71.91699218749997,66.24672851562502],[72.32158203125002,66.33212890625],[72.4173828125,66.56079101562506],[73.79208984375,66.99531250000001],[74.07451171875007,67.41411132812499],[74.76953124999997,67.76635742187497],[74.39140625000007,68.42060546874995],[74.57958984375003,68.751220703125],[76.10751953125006,68.975732421875],[76.45917968750004,68.97827148437497],[77.2384765625001,68.46958007812498],[77.17441406250012,67.77851562499998],[77.77158203125006,67.57026367187501],[78.92246093750006,67.58911132812503],[77.58828125000005,67.75190429687498],[77.66484375000002,68.19038085937495],[77.99511718749997,68.25947265624998],[77.65068359375007,68.90302734375001],[76.00097656249997,69.23505859374998],[75.42001953125,69.23862304687498],[74.81484375,69.09057617187503],[73.83603515625006,69.143212890625],[73.578125,69.80297851562503],[74.34335937500006,70.57871093749998],[73.08623046875007,71.44492187500006],[73.67177734375,71.84506835937503],[74.99218749999997,72.14482421874999],[74.78681640625004,72.811865234375],[75.15244140625,72.85273437499998],[75.74140625000004,72.29624023437503],[75.273828125,71.95893554687495],[75.33203125000003,71.34174804687498],[76.92900390625002,71.12788085937504],[77.58964843750007,71.16791992187501],[78.32060546875002,70.93041992187503],[78.94218750000002,70.93378906250001],[79.08388671875,71.00200195312505],[78.58769531250007,70.993896484375],[78.21259765625004,71.26630859374998],[76.43339843750002,71.55249023437503],[76.03242187500004,71.91040039062503],[76.87138671875002,72.03300781250005],[77.77753906250004,71.83642578125006],[78.23242187500003,71.95229492187502],[78.01640625000007,72.092041015625],[77.49287109375004,72.07172851562504],[77.47158203125,72.19213867187506],[78.22539062500007,72.37744140625006],[79.4220703125001,72.38076171875002],[80.7625,72.08916015625002],[81.66162109374997,71.71596679687502],[82.75781250000003,71.76411132812498],[83.23359375000004,71.66816406249995],[82.32285156250006,71.26000976562503],[82.16318359375012,70.59814453125003],[82.22119140625003,70.39570312499998],[82.86914062499997,70.95483398437503],[83.03017578125,70.58051757812498],[82.6823242187501,70.21772460937498],[83.0807617187501,70.09301757812497],[83.07382812500012,70.276708984375],[83.73593750000006,70.54648437499998],[83.15126953125005,71.10361328124998],[83.534375,71.68393554687498],[83.20029296875012,71.87470703125004],[82.64541015625005,71.92524414062504],[82.09365234375,72.26542968750005],[80.82705078125005,72.48828124999997],[80.84160156250007,72.94916992187498],[80.4245117187501,73.23115234374998],[80.5832031250001,73.56845703125003],[85.20058593750005,73.72153320312506],[86.89296875,73.88710937500002],[85.79257812500012,73.438330078125],[86.67705078125002,73.10678710937503],[85.93896484374997,73.45649414062495],[87.12011718750003,73.61503906250002],[87.57119140625,73.81074218750001],[86.57109375000007,74.24375],[86.0013671875,74.316015625],[86.39580078125007,74.45009765624997],[86.89794921874997,74.32534179687497],[87.22968750000004,74.3638671875],[85.79101562499997,74.6451171875],[86.20126953125006,74.81621093750005],[86.65146484375012,74.68242187500005],[87.04179687500007,74.77885742187499],[87.46757812500002,75.01323242187505],[86.93906250000006,75.06811523437503],[87.00595703125012,75.16982421874997],[87.67138671874997,75.12958984375004],[90.18496093750005,75.59106445312497],[94.07519531249997,75.91289062499999],[92.89042968750002,75.90996093750002],[93.25927734375003,76.09877929687502],[95.57871093750012,76.13730468749998],[96.07548828125007,76.08198242187498],[95.65332031250003,75.89218750000003],[96.50859375000002,76.00556640624995],[96.49707031249997,75.89121093750003],[98.66201171875005,76.24267578125003],[99.77041015625,76.02875976562498],[99.5407226562501,75.79858398437497],[99.85136718750007,75.93027343749998],[99.8253906250001,76.13593749999995],[98.80566406250003,76.48066406250004],[100.84375,76.52519531250005],[101.59775390625006,76.43920898437503],[100.92802734375002,76.55673828124998],[100.98994140625004,76.99047851562497],[102.61015625000007,77.508544921875],[104.01455078125,77.73041992187501],[106.05957031249997,77.39052734375002],[104.20244140625002,77.101806640625],[106.9416015625001,77.034375],[107.42978515625006,76.92656250000002],[106.41357421874997,76.51225585937499],[107.72216796875003,76.52231445312498],[108.18164062500003,76.73784179687502],[111.39248046875,76.686669921875],[112.09394531250004,76.48032226562506],[111.94267578125002,76.38046875000003],[112.61953125,76.38354492187506],[112.65625,76.05356445312498],[113.2726562500001,76.25166015625001],[113.5638671875,75.89165039062502],[113.85722656250007,75.92128906250002],[113.56757812500004,75.56840820312499],[112.45302734375,75.83017578125003],[112.95566406250006,75.571923828125],[113.24296875000007,75.61142578125003],[113.72617187500012,75.45063476562498],[112.92490234375012,75.01503906249997],[109.84033203124997,74.32197265624998],[109.8102539062501,74.16918945312503],[108.19951171875002,73.69409179687497],[107.27109375000006,73.62104492187501],[106.67939453125004,73.3306640625],[106.1886718750001,73.3080078125],[105.14394531250005,72.77705078125001],[105.7082031250001,72.836669921875],[106.47792968750005,73.13940429687503],[107.750390625,73.17314453125007],[109.33105468749997,73.48745117187497],[109.85527343750002,73.47246093750002],[110.86816406249997,73.73071289062497],[109.70673828125004,73.74375],[110.2614257812501,74.01743164062503],[111.05625,73.93935546875002],[111.13085937500003,74.05283203125003],[111.55058593750007,74.02851562499998],[111.22812500000012,73.96855468750002],[111.40039062500003,73.827734375],[112.14726562500007,73.70893554687498],[112.79541015625003,73.74609375],[112.83593750000003,73.96206054687502],[113.03281250000006,73.91386718750007],[113.4162109375001,73.647607421875],[113.15693359375004,73.45957031249998],[113.49091796875004,73.34609375000002],[113.12783203125,72.8306640625],[113.66455078124997,72.63452148437503],[113.2155273437501,72.80585937500001],[113.88623046875003,73.34580078124998],[113.51035156250012,73.50498046874998],[115.33769531250007,73.70258789062501],[118.87089843750007,73.53789062500002],[118.45703124999997,73.46440429687507],[118.43027343750012,73.24653320312501],[119.750390625,72.97910156250006],[122.26015625,72.88056640624995],[122.75195312500003,72.906494140625],[122.61523437499997,73.02792968750006],[123.1603515625001,72.95488281250002],[123.62226562500004,73.19326171875],[123.49111328125005,73.666357421875],[124.54121093750004,73.75126953125007],[125.59853515625005,73.447412109375],[126.25449218750012,73.548193359375],[126.55253906250007,73.33491210937498],[127.03134765625006,73.54746093750003],[127.74033203125012,73.48154296875],[129.10058593750003,73.11235351562502],[128.5990234375,72.895166015625],[129.01728515625004,72.8724609375],[129.250390625,72.70517578125003],[128.41826171875002,72.53515625000003],[129.28134765625006,72.43769531249998],[129.41064453124997,72.16630859375002],[128.93496093750005,72.07949218750002],[127.8034179687501,72.43403320312504],[127.84140625000012,72.308251953125],[128.91142578125002,71.75532226562495],[129.21025390625007,71.91694335937501],[129.46083984375,71.73930664062499],[128.84326171875003,71.6634765625],[129.76191406250004,71.11953125000002],[130.53710937500003,70.89252929687495],[130.75712890625002,70.96235351562498],[131.02158203125006,70.74609374999997],[132.0353515625001,71.24404296875],[132.65390625000006,71.92597656250001],[133.6888671875,71.434228515625],[134.70273437500012,71.38681640625003],[135.55917968750006,71.6103515625],[136.09033203125003,71.61958007812501],[137.9396484375001,71.1333984375],[137.84404296875007,71.22680664062503],[138.31406250000006,71.32553710937498],[137.918359375,71.38408203124999],[138.23417968750007,71.596337890625],[138.78017578125,71.62900390624998],[139.209375,71.44477539062501],[139.98417968750007,71.49150390625005],[139.72294921875002,71.88496093749998],[139.35927734375005,71.95136718750001],[140.18769531250004,72.19130859374997],[139.17636718750006,72.16347656249997],[139.14082031250004,72.32973632812502],[139.60117187500012,72.49609374999997],[141.07929687500004,72.5869140625],[140.80820312500006,72.89096679687503],[142.06142578125005,72.72080078125],[146.25292968749997,72.442236328125],[146.234765625,72.34970703125],[144.77636718749997,72.38227539062495],[144.16923828125002,72.25878906250003],[144.29492187499997,72.19262695312497],[146.83183593750007,72.29541015625003],[146.11328125000003,71.94497070312497],[146.23027343750007,72.1375],[145.75859375000007,72.22587890624999],[145.75673828125005,71.94130859375002],[145.06396484374997,71.92607421875002],[145.18857421875012,71.69580078125],[146.07324218749997,71.80834960937503],[147.26181640625006,72.327880859375],[149.50156250000012,72.16430664062497],[150.01689453125002,71.89565429687505],[149.04873046875005,71.79575195312503],[148.9681640625,71.69047851562499],[150.59980468750004,71.5201171875],[150.09765624999997,71.22656249999997],[150.96777343749997,71.38046874999998],[151.58242187500005,71.28696289062503],[152.09277343749997,71.02329101562503],[151.76201171875002,70.98247070312499],[152.50878906250003,70.83447265625003],[156.68457031250003,71.09375],[158.03701171875005,71.03925781250001],[159.35068359375006,70.79072265625001],[160.00644531250006,70.30966796875006],[159.72939453125005,69.87021484375006],[160.91074218750012,69.60634765625002],[161.03554687500005,69.09819335937507],[161.30986328125007,68.98227539062498],[160.85605468750006,68.53833007812506],[161.565625,68.90517578125],[161.53691406250002,69.379541015625],[162.16601562499997,69.61157226562503],[163.20136718750004,69.71474609375],[166.82031250000003,69.49956054687505],[167.8568359375,69.72822265624998],[168.30302734375002,69.27148437500003],[169.31064453125006,69.07954101562498],[169.60986328124997,68.78603515624997],[170.53759765624997,68.82539062500001],[170.99541015625002,69.04531250000005],[170.58222656250004,69.58334960937506],[170.16093750000007,69.62656249999998],[170.48681640625003,70.107568359375],[173.27744140625006,69.823828125],[173.43867187500004,69.94682617187502],[175.92148437500012,69.89531250000002],[179.27265624999998,69.25966796875002],[180,68.98344726562505],[180,65.06723632812498],[178.51953125000003,64.60297851562498],[177.7486328125,64.71704101562503],[176.88085937499997,65.08193359375002],[176.34101562500015,65.04731445312501],[177.03730468750004,64.99965820312497],[177.22285156250004,64.861669921875],[177.06875,64.78666992187502],[176.06113281250012,64.96088867187498],[174.54882812500009,64.68388671875005],[176.0565429687501,64.90473632812498],[176.35097656250005,64.70512695312502],[176.14091796875007,64.58583984375005],[177.42744140625015,64.76337890624998],[177.43291015625002,64.44448242187502],[177.6875,64.30473632812507],[178.04472656250013,64.21958007812503],[178.22949218749991,64.36440429687497],[178.38144531250018,64.26088867187502],[178.73144531250003,63.667089843750006],[178.44042968750009,63.605566406250006],[178.74404296874994,63.39477539062503],[178.79296874999997,63.54033203125002],[179.38857421875,63.14721679687497],[179.25957031250002,63.00830078125],[179.5705078125001,62.6875],[179.12070312500012,62.32036132812499],[177.292578125,62.59902343750002],[177.33896484375006,62.781347656250034],[177.02353515625012,62.777246093749994],[177.15947265625007,62.56098632812498],[174.51435546875015,61.823632812499966],[173.6234375,61.716064453125],[173.13183593749997,61.40664062500002],[172.85654296875006,61.469189453124955],[172.90800781250002,61.311621093750006],[172.39609375000006,61.16738281250002],[172.39277343750004,61.061767578125],[170.60820312500007,60.434912109375034],[170.3509765625,59.965527343749955],[169.9826171875001,60.067089843749955],[169.2267578125001,60.59594726562497],[168.1375,60.57392578125001],[167.22675781250004,60.406298828125045],[166.27304687500012,59.85625],[166.13603515625007,59.979345703125034],[166.35214843750006,60.48481445312498],[165.08457031250006,60.09858398437498],[164.95371093750006,59.843603515625006],[164.52529296875,60.06127929687503],[164.11328125000003,59.89755859374998],[164.13505859375002,59.984375],[163.74384765625004,60.02802734374998],[163.36484375000012,59.78144531250004],[163.27285156250005,59.302587890625006],[162.14160156249997,58.44741210937502],[161.96005859375012,58.07690429687506],[162.39140625000002,57.717236328124955],[162.65429687499997,57.94824218750003],[163.22578125000004,57.790380859375034],[162.77929687500003,57.35761718749998],[162.79111328125012,56.875390624999966],[162.92207031250004,56.72265625000003],[163.2565429687501,56.68803710937499],[163.33554687500012,56.232519531250006],[163.04736328125003,56.044677734375],[162.84033203125003,56.065625],[162.628125,56.232275390625034],[163.03837890625002,56.521875],[162.67148437500006,56.49008789062498],[162.52822265625005,56.260693359374955],[162.08496093749997,56.08964843750002],[161.72392578125002,55.49614257812499],[162.10556640625006,54.75214843750004],[161.62480468750002,54.51625976562502],[160.77265625000004,54.54135742187498],[160.0744140625001,54.18916015625001],[159.84375,53.78364257812498],[160.02509765625004,53.129589843749955],[159.58593750000003,53.237695312499966],[158.74541015625002,52.90893554687506],[158.47207031250005,53.032373046874966],[158.6087890625,52.873632812500034],[158.49316406249997,52.383154296875034],[158.10351562500003,51.80961914062499],[156.84746093750002,51.006591796875],[156.74775390625004,50.969287109375045],[156.52119140625004,51.38027343750002],[156.36474609374997,52.509375],[156.11035156250003,52.86616210937504],[155.62031250000004,54.86455078125002],[155.5548828125001,55.348486328125034],[155.98251953125012,56.69521484375002],[156.8488281250001,57.290185546874994],[156.97675781250004,57.46630859375],[156.82988281250007,57.77963867187498],[157.4503906250001,57.79926757812498],[157.66640625000005,58.01977539062506],[158.27519531250007,58.00898437499998],[159.21064453125004,58.519433593749966],[159.8473632812501,59.127148437499955],[161.75351562500012,60.15229492187501],[162.06816406250002,60.466406250000034],[163.70996093749997,60.916796875000045],[163.55351562500002,61.02563476562503],[164.00546875000006,61.34379882812499],[163.80439453125004,61.46137695312498],[164.20722656250004,62.29223632812506],[164.59833984375004,62.470556640625034],[165.20810546875012,62.37397460937501],[165.41738281250005,62.447070312500045],[164.418359375,62.704638671875045],[163.33173828125004,62.550927734374994],[163.01767578125006,61.89106445312504],[163.25781249999997,61.69946289062497],[163.08525390625002,61.570556640625],[162.85595703125003,61.705029296874955],[162.39257812500003,61.662109375],[160.76660156249997,60.753320312499966],[160.17363281250002,60.638427734375],[160.37890625000003,61.02548828124998],[159.79042968750005,60.956640625],[160.309375,61.894384765625006],[159.55234375000012,61.71948242187497],[159.18925781250007,61.92939453125001],[158.07011718750002,61.75361328125001],[157.46933593750012,61.798925781250006],[157.0841796875001,61.67568359375002],[155.71611328125002,60.682373046875],[154.97080078125012,60.376660156249955],[154.29306640625006,59.833349609375034],[154.1498046875,59.52851562500001],[154.97128906250006,59.44960937500002],[155.16044921875002,59.19013671875001],[154.45800781250003,59.21655273437497],[154.01093750000004,59.075537109375006],[153.69521484375005,59.22475585937505],[153.36113281250002,59.214794921874955],[152.81787109375003,58.92626953124997],[152.31962890625002,59.03076171875003],[152.08789062499997,58.910449218750045],[151.32675781250006,58.875097656250034],[151.12109375000003,59.08251953125003],[152.26064453125,59.22358398437498],[151.34824218750012,59.561132812500006],[150.4835937500001,59.494384765625],[150.66728515625002,59.55634765625001],[149.64257812499997,59.770410156249994],[149.06523437500002,59.63051757812502],[149.20498046875,59.488183593749966],[148.79707031250004,59.532324218750006],[148.74414062499997,59.37353515624997],[148.96464843750007,59.36914062499997],[148.72666015625006,59.257910156250034],[148.25742187500006,59.414208984374994],[147.51445312500002,59.2685546875],[146.53720703125006,59.45698242187501],[146.0495117187501,59.17055664062502],[145.55458984375,59.413525390624955],[143.19218750000002,59.3701171875],[142.58027343750004,59.240136718749966],[140.79023437500004,58.30346679687503],[140.446875,57.81367187499998],[138.66210937500003,56.96552734375004],[137.69150390625006,56.13935546875004],[135.2625,54.94331054687498],[135.25771484375005,54.73149414062499],[135.85156249999997,54.583935546874955],[136.797265625,54.62099609375005],[136.71884765625006,53.804101562499994],[137.15537109375012,53.82167968750002],[137.14160156249997,54.182226562500006],[137.66601562500003,54.283300781250006],[137.3392578125,54.10053710937498],[137.83476562500002,53.94672851562498],[137.25371093750007,53.546142578125],[137.95048828125007,53.60356445312499],[138.52792968750012,53.959863281249994],[138.56914062500002,53.818798828124955],[138.24970703125004,53.524023437500034],[138.45068359375003,53.53701171875002],[138.69941406250004,53.869726562500034],[138.65722656249997,54.29833984375003],[139.31972656250005,54.19296874999998],[139.707421875,54.27714843749999],[140.68759765625012,53.59643554687503],[141.3737304687501,53.29277343749999],[141.18125,53.01528320312505],[140.83964843750002,53.087890625],[141.25585937499997,52.84013671874996],[141.13242187500006,52.435693359374994],[141.48525390625,52.17851562500002],[141.36689453125004,51.92065429687506],[140.93261718750003,51.61992187499999],[140.5208984375,50.80019531250005],[140.62451171874997,50.08242187500002],[140.46269531250002,49.911474609375006],[140.51718750000012,49.59614257812498],[140.17060546875004,48.52368164062497],[138.58681640625005,47.057226562500006],[138.33691406250003,46.543408203124955],[137.68544921875,45.81835937500003],[136.14228515625004,44.489111328125034],[135.87460937500012,44.37353515625003],[135.1310546875001,43.52573242187506],[134.01044921875004,42.94746093750001],[133.15996093750007,42.69697265624998],[132.70898437500003,42.875830078125006],[132.30380859375006,42.88330078125],[132.30957031249997,43.31352539062499],[131.8666015625,43.09516601562501],[131.93896484374997,43.30195312500004],[131.15830078125012,42.62602539062499],[130.709375,42.656396484374966],[130.8341796875001,42.52294921875006],[130.68730468750007,42.30253906249999]]],[[[107.69550781250004,78.13090820312505],[107.48164062500004,78.057763671875],[106.41552734375003,78.13984375000001],[107.69550781250004,78.13090820312505]]],[[[102.88476562499997,79.25395507812505],[102.4123046875001,78.83544921874997],[103.80078124999997,79.14926757812503],[104.45205078125005,78.880029296875],[105.14599609375003,78.81884765625006],[105.31259765625012,78.49990234375],[104.74179687500012,78.33974609374997],[102.79667968750007,78.18789062500002],[101.20410156249997,78.19194335937505],[99.50029296875002,77.97607421875003],[101.590625,79.350439453125],[102.25126953125002,79.25605468749995],[102.40488281250006,79.43320312499998],[102.88476562499997,79.25395507812505]]],[[[76.24892578125005,79.65107421874995],[77.58896484375012,79.50190429687504],[76.64951171875012,79.493408203125],[76.24892578125005,79.65107421874995]]],[[[92.68349609375005,79.685205078125],[91.37626953125007,79.83549804687505],[91.22929687500007,80.03071289062504],[93.803125,79.904541015625],[92.68349609375005,79.685205078125]]],[[[51.409277343750006,79.94423828125],[50.09140625,79.98056640625003],[50.93632812500002,80.09423828125],[51.409277343750006,79.94423828125]]],[[[59.68886718750005,79.95581054687506],[58.91923828125002,79.98461914062506],[59.54453125000006,80.11884765624995],[59.68886718750005,79.95581054687506]]],[[[97.67451171875004,80.15825195312499],[97.65166015625002,79.76064453125],[98.59648437500002,80.05219726562495],[100.0612304687501,79.77709960937506],[99.68066406250003,79.32333984374998],[99.04179687500007,79.29301757812502],[99.92929687500012,78.96142578124997],[98.41113281250003,78.78779296875004],[95.53105468750007,79.09809570312501],[95.02041015625005,79.05268554687498],[94.21875,79.40234375],[93.07080078124997,79.49531250000001],[94.98730468749997,80.096826171875],[95.28134765625012,80.030517578125],[97.67451171875004,80.15825195312499]]],[[[50.05175781250003,80.07431640625003],[49.55605468750005,80.15893554687503],[49.883691406249994,80.230224609375],[50.05175781250003,80.07431640625003]]],[[[57.07871093750006,80.35092773437498],[56.986914062500006,80.07148437499998],[55.811621093750006,80.08715820312497],[56.02441406250003,80.34130859374997],[57.07871093750006,80.35092773437498]]],[[[53.521386718749994,80.18520507812497],[52.34355468750002,80.213232421875],[52.85390625,80.40239257812499],[53.85166015625006,80.26835937500005],[53.521386718749994,80.18520507812497]]],[[[57.95625,80.12324218749995],[57.33232421875002,80.15810546875005],[57.075,80.49394531249999],[59.25546875000006,80.34321289062501],[58.39794921874997,80.31875],[57.95625,80.12324218749995]]],[[[54.41533203125002,80.47280273437502],[53.811914062499994,80.47622070312502],[53.87724609375002,80.60527343750002],[54.41533203125002,80.47280273437502]]],[[[47.441992187500006,80.853662109375],[48.44570312500005,80.80600585937506],[48.68359375000003,80.63325195312504],[47.7052734375001,80.76518554687499],[46.141406250000074,80.44672851562495],[45.969042968750074,80.56948242187502],[44.9049804687501,80.61127929687501],[47.441992187500006,80.853662109375]]],[[[62.167773437500074,80.83476562500005],[62.07578125000006,80.616943359375],[61.05126953124997,80.418603515625],[60.27832031249997,80.49443359374999],[59.649804687499994,80.43125],[59.59228515625003,80.81650390624998],[62.167773437500074,80.83476562500005]]],[[[50.278125,80.92724609374997],[51.70361328125003,80.68764648437502],[48.81103515625003,80.35371093750001],[48.97753906250003,80.16259765624997],[47.73730468749997,80.08168945312502],[47.89296875000005,80.23925781249997],[46.991015625000074,80.182763671875],[46.644433593749994,80.30034179687507],[47.89580078125002,80.52905273437503],[49.087792968749994,80.515771484375],[49.24433593750004,80.82138671875],[50.278125,80.92724609374997]]],[[[80.02666015625007,80.84814453125003],[79.09853515625005,80.81206054687505],[79.21738281250012,80.96035156249997],[80.27958984375007,80.94980468750003],[80.02666015625007,80.84814453125003]]],[[[61.1408203125001,80.95034179687497],[60.0783203125001,80.99916992187497],[61.45742187499999,81.10395507812501],[61.1408203125001,80.95034179687497]]],[[[54.71894531250004,81.11596679687497],[56.47226562500006,80.99824218749995],[57.58037109375002,80.75546874999998],[55.88339843750006,80.62841796875003],[54.66816406250004,80.73867187500002],[54.04541015624997,80.87197265625],[54.71894531250004,81.11596679687497]]],[[[58.62236328125002,81.04165039062502],[58.930566406249994,80.83168945312497],[58.28564453124997,80.76489257812503],[57.21093749999997,81.01708984374997],[58.04951171875004,81.11845703125002],[58.62236328125002,81.04165039062502]]],[[[63.37382812500002,80.70009765624997],[62.59257812500002,80.85302734375006],[64.80205078125002,81.197265625],[65.43740234375005,80.93071289062507],[63.37382812500002,80.70009765624997]]],[[[91.56718750000007,81.14121093750003],[91.2228515625001,81.063818359375],[89.90117187500002,81.17070312500002],[91.56718750000007,81.14121093750003]]],[[[96.52656250000004,81.0755859375],[97.86992187500007,80.76328125000006],[97.02539062499997,80.53554687500002],[97.29843750000006,80.27275390625005],[93.6546875,80.009619140625],[91.52382812500005,80.35854492187502],[93.2625,80.79125976562497],[92.59257812500007,80.780859375],[92.7103515625,80.87216796875003],[95.1595703125,81.27099609375003],[95.80068359375005,81.28046874999998],[96.52656250000004,81.0755859375]]],[[[57.81025390625004,81.54604492187502],[58.563867187499994,81.41840820312504],[57.858691406250074,81.36806640625],[57.76972656250004,81.16972656249999],[55.71669921875005,81.1884765625],[55.46601562500004,81.31118164062502],[57.81025390625004,81.54604492187502]]],[[[63.65097656250006,81.60932617187501],[62.10644531249997,81.679345703125],[63.709570312500006,81.68730468750002],[63.65097656250006,81.60932617187501]]],[[[58.29541015625003,81.715185546875],[58.13457031250002,81.82797851562498],[59.261816406250006,81.85419921874998],[59.35644531250003,81.75898437499995],[58.29541015625003,81.715185546875]]]]},"properties":{"name":"Russia","childNum":73}},{"geometry":{"type":"Polygon","coordinates":[[[30.50996093750001,-1.067285156250009],[30.47705078125,-1.0830078125],[30.47021484375,-1.131152343750003],[30.508105468750017,-1.208203125000011],[30.631933593750006,-1.367480468750003],[30.710742187500017,-1.396777343750003],[30.76220703125,-1.458691406250011],[30.812597656250006,-1.563085937500006],[30.8765625,-2.143359375],[30.85498046875,-2.265429687500003],[30.828710937500006,-2.338476562500006],[30.7625,-2.371679687500006],[30.71484375,-2.363476562500011],[30.656640625000023,-2.373828125],[30.593359375,-2.396777343750003],[30.553613281250023,-2.400097656250011],[30.408496093750017,-2.31298828125],[30.117285156250006,-2.416601562500006],[29.93017578125,-2.339550781250011],[29.8681640625,-2.71640625],[29.698046875000017,-2.794726562500003],[29.390234375,-2.80859375],[29.10205078125,-2.595703125],[29.01435546875001,-2.72021484375],[28.893945312500023,-2.635058593750003],[28.876367187500023,-2.400292968750009],[29.13154296875001,-2.195117187500003],[29.196582031250017,-1.719921875000011],[29.576953125000017,-1.387890625000011],[29.82539062500001,-1.335546875],[29.930078125000023,-1.469921875000011],[30.360253906250023,-1.074609375],[30.41230468750001,-1.063085937500006],[30.46992187500001,-1.066015625],[30.50996093750001,-1.067285156250009]]]},"properties":{"name":"Rwanda","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[41.98769531250005,16.715625],[42.059960937499994,16.803515625000017],[42.15781250000006,16.570703125000023],[41.80156250000002,16.778759765624955],[41.86044921875006,17.002539062499977],[41.98769531250005,16.715625]]],[[[46.53144531250004,29.09624023437499],[47.433203125,28.989550781250017],[47.671289062499994,28.53315429687504],[48.442480468750006,28.542919921874983],[48.80898437499999,27.895898437499966],[48.797167968750074,27.72431640625001],[49.2375,27.49272460937499],[49.17509765625002,27.43764648437505],[49.40527343749997,27.18095703124996],[50.149804687499994,26.66264648437499],[50.00810546875002,26.678515625000017],[50.21386718750003,26.30849609375005],[50.15546875000004,26.100537109374955],[50.03164062499999,26.11098632812505],[50.55791015625002,25.086669921875],[50.66689453125005,24.96381835937501],[50.72558593749997,24.869384765625057],[50.80439453125004,24.789257812499983],[50.928320312500006,24.595117187500023],[50.96601562500004,24.573925781249983],[51.022753906250074,24.56523437499999],[51.09335937500006,24.564648437499955],[51.178027343750074,24.586718750000017],[51.26796875,24.607226562500017],[51.33847656250006,24.564355468749994],[51.41123046875006,24.570800781250057],[51.30986328125002,24.340380859375017],[51.56835937500003,24.286181640625074],[51.592578125000074,24.07885742187503],[52.55507812500005,22.932812499999955],[55.104296875000074,22.621484375000023],[55.185839843750074,22.7041015625],[55.64101562499999,22.001855468749994],[54.97734375000002,19.995947265625006],[51.977636718750006,18.996142578125074],[49.04199218750003,18.58178710937503],[48.17216796875002,18.156933593749983],[47.57958984374997,17.448339843750034],[47.44179687499999,17.111865234375045],[47.14355468749997,16.946679687499966],[46.97568359375006,16.953466796875034],[46.72763671875006,17.26557617187501],[45.5353515625001,17.30205078124999],[45.14804687500006,17.427441406249955],[43.91699218749997,17.32470703124997],[43.41796875000003,17.516259765625023],[43.19091796875003,17.359375],[43.16503906249997,16.689404296874955],[42.79931640624997,16.37177734375001],[42.29394531249997,17.434960937499966],[41.75,17.88574218749997],[41.22949218750003,18.678417968749983],[40.75917968750005,19.755468750000034],[40.080664062500006,20.265917968750017],[39.728320312500074,20.390332031249955],[39.27607421875004,20.973974609375034],[39.093554687500074,21.31035156249999],[39.14707031250006,21.518994140624955],[38.98789062500006,21.88173828125005],[39.06201171874997,22.592187500000023],[38.46416015625002,23.71186523437504],[37.91972656250002,24.185400390625063],[37.54306640625006,24.291650390625023],[37.18085937500004,24.82001953125001],[37.26630859375004,24.960058593750034],[37.14882812499999,25.291113281249977],[35.18046875000002,28.03486328125004],[34.722070312499994,28.130664062500017],[34.625,28.064501953125017],[34.95078125,29.353515625],[36.068457031250006,29.200537109375006],[36.28281250000006,29.355371093750023],[36.47607421874997,29.49511718749997],[36.59179687500003,29.666113281250006],[36.703906250000074,29.831640624999977],[36.75527343750005,29.86601562499996],[37.46923828125003,29.995068359374955],[37.49072265625003,30.01171874999997],[37.55361328125005,30.14458007812496],[37.63359375000002,30.313281250000045],[37.64990234374997,30.330957031249994],[37.669726562500074,30.34814453125003],[37.862890625,30.44262695312503],[37.98007812500006,30.5],[37.47900390624997,31.007763671874955],[37.10527343750002,31.35517578125004],[36.95859375000006,31.491503906250017],[37.215625,31.55610351562501],[37.49335937500004,31.625878906250023],[38.111425781250006,31.78115234375005],[38.37548828124997,31.84746093749996],[38.962304687499994,31.99492187499999],[38.99707031249997,32.00747070312505],[39.145410156249994,32.12451171875],[39.36865234374997,32.09174804687498],[39.70410156250003,32.04252929687499],[40.02783203124997,31.995019531249994],[40.3693359375001,31.93896484375003],[40.47890625000005,31.89335937499999],[42.07441406250004,31.08037109374999],[43.77373046875002,29.84921875],[44.71650390625004,29.19360351562503],[46.35644531250003,29.06367187500001],[46.53144531250004,29.09624023437499]]]]},"properties":{"name":"Saudi Arabia","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[36.87138671875002,21.996728515624994],[36.92695312500001,21.58652343749999],[37.25859375000002,21.108544921874994],[37.25722656250002,21.03940429687499],[37.15058593750001,21.103759765625],[37.14111328125,20.98178710937499],[37.19316406250002,20.12070312499999],[37.471289062500006,18.820117187500003],[38.609472656250006,18.005078125],[38.422460937500006,17.823925781249997],[38.39716796875001,17.778369140625003],[38.38554687500002,17.751269531250003],[38.37373046875001,17.717333984375003],[38.34736328125001,17.68359375],[38.28984375000002,17.637011718750003],[38.26728515625001,17.61669921875],[38.253515625,17.584765625],[37.78242187500001,17.4580078125],[37.547460937500006,17.324121093749994],[37.51015625000002,17.288134765625003],[37.45292968750002,17.108691406250003],[37.41103515625002,17.06171875],[37.24882812500002,17.056884765625],[37.16953125,17.04140625],[37.0615234375,17.061279296875],[37.00898437500001,17.058886718750003],[36.995214843750006,17.020556640625003],[36.97578125000001,16.86655273437499],[36.97871093750001,16.800585937500003],[36.887792968750006,16.624658203124994],[36.91376953125001,16.296191406250003],[36.566015625,15.362109375],[36.4267578125,15.132080078125],[36.44814453125002,14.940087890624994],[36.470800781250006,14.736474609374994],[36.52431640625002,14.2568359375],[36.12519531250001,12.75703125],[35.67021484375002,12.623730468749997],[35.1123046875,11.816552734374994],[34.93144531250002,10.864794921874989],[34.77128906250002,10.746191406249991],[34.571875,10.880175781249989],[34.34394531250001,10.658642578124997],[34.31123046875001,10.190869140624997],[34.078125,9.461523437499991],[33.87148437500002,9.506152343749989],[33.96328125000002,9.861767578124997],[33.90703125000002,10.181445312499989],[33.13007812500001,10.745947265624991],[33.073339843750006,11.606103515624994],[33.199316406250006,12.21728515625],[32.721875,12.223095703124997],[32.73671875000002,12.009667968749994],[32.072265625,12.006738281249994],[32.338476562500006,11.710107421874994],[32.42080078125002,11.089111328125],[31.224902343750017,9.799267578124997],[30.75537109375,9.731201171875],[30.003027343750006,10.277392578124989],[29.60546875,10.065087890624994],[29.47314453125,9.768603515624989],[28.979589843750006,9.594189453124997],[28.844531250000017,9.326074218749994],[28.048925781250006,9.32861328125],[27.880859375,9.601611328124989],[27.07421875,9.613818359374989],[26.65869140625,9.484130859375],[25.91914062500001,10.169335937499994],[25.858203125000017,10.406494140625],[25.211718750000017,10.329931640624991],[25.066992187500006,10.293798828124991],[24.785253906250006,9.774658203125],[24.53193359375001,8.886914062499997],[24.147363281250023,8.665625],[23.53730468750001,8.815820312499994],[23.46826171875,9.11474609375],[23.62265625,9.340625],[23.646289062500017,9.822900390624994],[22.86005859375001,10.919677734375],[22.922656250000017,11.344873046874994],[22.591113281250017,11.579882812499989],[22.580957031250023,11.990136718749994],[22.472460937500017,12.067773437499994],[22.352343750000017,12.660449218749989],[21.928125,12.678125],[21.825292968750006,12.79052734375],[22.228125,13.32958984375],[22.1064453125,13.7998046875],[22.53857421875,14.161865234375],[22.38154296875001,14.550488281249997],[22.6708984375,14.722460937500003],[22.93232421875001,15.162109375],[22.933886718750017,15.533105468749994],[23.10517578125001,15.702539062499994],[23.970800781250006,15.721533203124991],[23.980273437500017,19.496630859375003],[23.980273437500017,19.99594726562499],[24.9794921875,20.002587890624994],[24.980273437500017,21.995849609375],[28.036425781250017,21.995361328125],[31.092675781250023,21.994873046875],[31.260644531250023,22.00229492187499],[31.400292968750023,22.202441406250003],[31.486132812500017,22.14780273437499],[31.434472656250023,21.995849609375],[36.87138671875002,21.996728515624994]]]},"properties":{"name":"Sudan","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[34.078125,9.461523437499991],[34.07275390625,8.545263671874991],[33.95332031250001,8.443505859374994],[33.28105468750002,8.437255859375],[32.99892578125002,7.899511718749991],[33.902441406250006,7.509521484375],[34.06425781250002,7.225732421874994],[34.71064453125001,6.660302734374994],[34.98359375000001,5.858300781249994],[35.26835937500002,5.492285156249991],[35.08447265625,5.311865234374991],[34.87832031250002,5.109570312499997],[34.63984375000001,4.87548828125],[34.38017578125002,4.620654296874989],[34.176855468750006,4.419091796874994],[33.97607421875,4.22021484375],[33.74160156250002,3.985253906249994],[33.568457031250006,3.81171875],[33.489355468750006,3.755078125],[32.99726562500001,3.880175781249989],[32.33574218750002,3.706201171874994],[32.13593750000001,3.519726562499997],[31.79804687500001,3.802636718749994],[31.547167968750017,3.677587890624991],[31.15234375,3.785595703124997],[30.83857421875001,3.49072265625],[30.757226562500023,3.62421875],[30.586718750000017,3.62421875],[30.50830078125,3.835693359375],[30.194921875,3.98193359375],[29.676855468750006,4.5869140625],[29.469628906250023,4.61181640625],[29.224902343750017,4.391894531249989],[28.72705078125,4.504980468749991],[28.427539062500017,4.324169921874997],[28.19208984375001,4.350244140624994],[27.7880859375,4.644677734374994],[27.4033203125,5.109179687499989],[27.143945312500023,5.722949218749989],[26.514257812500006,6.069238281249994],[26.30859375,6.455322265625],[26.36181640625,6.635302734374989],[25.27890625,7.427490234375],[25.18134765625001,7.557226562499991],[25.20039062500001,7.807910156249989],[24.853320312500017,8.137548828124991],[24.291406250000023,8.29140625],[24.147363281250023,8.665625],[24.53193359375001,8.886914062499997],[24.785253906250006,9.774658203125],[25.066992187500006,10.293798828124991],[25.211718750000017,10.329931640624991],[25.858203125000017,10.406494140625],[25.91914062500001,10.169335937499994],[26.65869140625,9.484130859375],[27.07421875,9.613818359374989],[27.880859375,9.601611328124989],[28.048925781250006,9.32861328125],[28.844531250000017,9.326074218749994],[28.979589843750006,9.594189453124997],[29.47314453125,9.768603515624989],[29.60546875,10.065087890624994],[30.003027343750006,10.277392578124989],[30.75537109375,9.731201171875],[31.224902343750017,9.799267578124997],[32.42080078125002,11.089111328125],[32.338476562500006,11.710107421874994],[32.072265625,12.006738281249994],[32.73671875000002,12.009667968749994],[32.721875,12.223095703124997],[33.199316406250006,12.21728515625],[33.073339843750006,11.606103515624994],[33.13007812500001,10.745947265624991],[33.90703125000002,10.181445312499989],[33.96328125000002,9.861767578124997],[33.87148437500002,9.506152343749989],[34.078125,9.461523437499991]]]},"properties":{"name":"S. Sudan","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-12.280615234374977,14.809033203124997],[-12.228417968749994,14.45859375],[-12.019189453124994,14.206494140624997],[-11.960888671874983,13.875292968750003],[-12.05419921875,13.633056640625],[-11.831689453124994,13.315820312499994],[-11.634960937499983,13.369873046875],[-11.390380859375,12.941992187499991],[-11.389404296875,12.404394531249991],[-12.399072265624994,12.340087890625],[-12.930712890624989,12.532275390624989],[-13.061279296875,12.489990234375],[-13.082910156249994,12.633544921875],[-13.729248046875,12.673925781249991],[-14.06484375,12.67529296875],[-14.349218749999977,12.676416015624994],[-15.196093749999989,12.679931640625],[-15.3779296875,12.588964843749991],[-15.574804687499977,12.490380859374994],[-15.839550781249983,12.43789062499999],[-16.144189453124994,12.45742187499999],[-16.24150390624999,12.443310546874997],[-16.41630859374999,12.36767578125],[-16.521337890624977,12.3486328125],[-16.656933593749983,12.364355468749991],[-16.711816406249994,12.354833984374991],[-16.76030273437499,12.52578125],[-16.44287109375,12.609472656249991],[-16.59765625,12.715283203124997],[-16.743896484375,12.58544921875],[-16.763330078124994,13.064160156249997],[-16.648779296874977,13.154150390624991],[-15.834277343749989,13.156445312499997],[-15.814404296874983,13.325146484374997],[-15.286230468749977,13.39599609375],[-15.151123046875,13.556494140624991],[-14.246777343749983,13.23583984375],[-13.826708984374989,13.4078125],[-13.977392578124977,13.54345703125],[-14.405468749999983,13.503710937500003],[-15.108349609374983,13.81210937499999],[-15.426855468749977,13.727001953124997],[-15.509667968749994,13.586230468750003],[-16.56230468749999,13.587304687499994],[-16.766943359374977,13.904931640624994],[-16.618115234374983,14.04052734375],[-16.791748046875,14.004150390625],[-17.168066406249977,14.640625],[-17.345800781249977,14.729296875],[-17.445019531249983,14.651611328125],[-17.53564453125,14.755126953125],[-17.147167968749983,14.922021484374994],[-16.843408203124994,15.293994140625003],[-16.570751953124983,15.734423828125003],[-16.535253906249977,15.83837890625],[-16.502050781249977,15.917333984374991],[-16.480078124999977,16.097216796875003],[-16.441015624999977,16.204541015624997],[-16.239013671875,16.531298828125003],[-15.768212890624994,16.485107421875],[-14.990625,16.676904296874994],[-14.300097656249989,16.580273437499997],[-13.868457031249989,16.148144531249997],[-13.756640624999989,16.172509765624994],[-13.40966796875,16.05917968749999],[-13.105273437499989,15.57177734375],[-12.735253906249994,15.13125],[-12.40869140625,14.889013671874991],[-12.280615234374977,14.809033203124997]]]},"properties":{"name":"Senegal","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[103.9697265625,1.331445312499994],[103.65019531249999,1.325537109374991],[103.81796875000003,1.447070312499989],[103.9697265625,1.331445312499994]]]},"properties":{"name":"Singapore","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-37.10332031249996,-54.065625],[-36.70380859375001,-54.10810546874999],[-36.64741210937498,-54.26230468749996],[-36.32646484374996,-54.251171875],[-35.79858398437497,-54.76347656250002],[-36.08549804687499,-54.86679687500001],[-36.885986328125,-54.33945312499996],[-37.63090820312496,-54.16748046875001],[-37.61884765625001,-54.04208984375004],[-38.017431640625034,-54.008007812500026],[-37.10332031249996,-54.065625]]]},"properties":{"name":"S. Geo. and S. Sandw. Is.","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-5.692138671874972,-15.997753906249997],[-5.782519531250017,-16.00400390625002],[-5.707861328124977,-15.90615234374998],[-5.692138671874972,-15.997753906249997]]]},"properties":{"name":"Saint Helena","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[160.57626953125006,-11.797851562500028],[160.44306640625004,-11.814941406249957],[159.98632812499997,-11.494726562500006],[160.57626953125006,-11.797851562500028]]],[[[166.13320312500005,-10.757812499999972],[165.90400390625004,-10.851464843749966],[165.79101562500003,-10.784765624999963],[166.02382812500005,-10.6611328125],[166.13320312500005,-10.757812499999972]]],[[[161.71533203124997,-10.387304687499991],[162.10537109375005,-10.45380859375004],[162.37333984375002,-10.823242187499986],[161.78681640625004,-10.716894531249991],[161.53789062500007,-10.566406249999972],[161.4870117187501,-10.361425781249963],[161.29394531250003,-10.326464843750031],[161.30478515625012,-10.204394531250031],[161.71533203124997,-10.387304687499991]]],[[[161.54785156249997,-9.625683593749997],[161.55380859375012,-9.769726562500026],[161.40976562500006,-9.681640625000028],[161.36416015625,-9.353417968750037],[161.54785156249997,-9.625683593749997]]],[[[159.75039062500005,-9.272656250000011],[159.97060546875,-9.433300781249969],[160.35458984375006,-9.421582031249983],[160.81894531250006,-9.862792968749986],[160.64921875000002,-9.92861328124998],[159.80273437499997,-9.763476562500003],[159.61230468749997,-9.470703124999943],[159.62558593750012,-9.311230468749969],[159.75039062500005,-9.272656250000011]]],[[[160.1681640625001,-8.995507812500037],[160.40751953125007,-9.140332031249969],[160.10537109375,-9.080761718749997],[160.1681640625001,-8.995507812500037]]],[[[159.18857421875006,-9.123535156250014],[159.03632812500004,-9.075],[159.12978515625,-8.99306640624998],[159.22841796875005,-9.029980468749955],[159.18857421875006,-9.123535156250014]]],[[[158.10791015625003,-8.684179687500034],[157.93759765625006,-8.73642578125002],[157.90927734375006,-8.565625],[158.10546874999997,-8.536816406250026],[158.10791015625003,-8.684179687500034]]],[[[157.38896484375002,-8.713476562499963],[157.2123046875,-8.565039062500006],[157.37949218750012,-8.420898437499943],[157.38896484375002,-8.713476562499963]]],[[[160.7494140625,-8.313964843750014],[160.99765625000006,-8.612011718749983],[160.94433593750003,-8.799023437499983],[161.15869140624997,-8.961816406250009],[161.36738281250004,-9.61123046874998],[160.77207031250012,-8.963867187499986],[160.7140625000001,-8.539257812499997],[160.59042968750006,-8.372753906249997],[160.7494140625,-8.313964843750014]]],[[[157.76347656250002,-8.242187499999957],[157.89843749999997,-8.506347656249943],[157.81933593750003,-8.612011718749983],[157.58789062500003,-8.445410156249963],[157.5580078125,-8.269921875],[157.30244140625004,-8.33330078124996],[157.21757812500002,-8.262792968749977],[157.490625,-7.965722656250037],[157.76347656250002,-8.242187499999957]]],[[[157.171875,-8.108105468749997],[156.95830078125002,-8.014355468749997],[157.02412109375004,-7.867871093749997],[157.18613281250006,-7.941210937500017],[157.171875,-8.108105468749997]]],[[[156.687890625,-7.92304687500004],[156.5109375000001,-7.707812499999974],[156.5609375,-7.574023437499989],[156.80908203124997,-7.722851562500026],[156.687890625,-7.92304687500004]]],[[[159.8791015625001,-8.534277343749949],[158.9440429687501,-8.04072265625004],[158.457421875,-7.544726562499974],[158.734375,-7.604296875000031],[159.43144531250002,-8.029003906249955],[159.84306640625002,-8.326953124999989],[159.8791015625001,-8.534277343749949]]],[[[155.83984374999997,-7.097167968750014],[155.67753906250002,-7.08896484375002],[155.73896484375004,-6.972949218750017],[155.83984374999997,-7.097167968750014]]],[[[157.48671875000005,-7.330371093750003],[157.44130859375,-7.425683593749966],[157.10156249999997,-7.323632812499966],[156.4525390625,-6.638281249999963],[157.03027343750003,-6.891992187499952],[157.19335937499997,-7.160351562499997],[157.48671875000005,-7.330371093750003]]]]},"properties":{"name":"Solomon Is.","childNum":16}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-12.526074218749926,7.436328125000017],[-12.951611328124926,7.570849609374989],[-12.615234374999972,7.63720703125],[-12.5125,7.582421875000037],[-12.526074218749926,7.436328125000017]]],[[[-10.758593749999989,9.385351562499991],[-10.682714843750006,9.289355468749974],[-10.687646484374937,9.261132812499994],[-10.749951171874926,9.12236328124996],[-10.747021484374955,9.095263671875045],[-10.726855468749932,9.081689453125023],[-10.615966796875,9.059179687499977],[-10.500537109375017,8.687548828125017],[-10.677343749999977,8.400585937499997],[-10.712109374999955,8.335253906250017],[-10.686962890624983,8.321679687500009],[-10.652636718749989,8.330273437499983],[-10.604003906249943,8.319482421874994],[-10.55771484374992,8.315673828125028],[-10.496435546874977,8.362109374999974],[-10.394433593749966,8.480957031250028],[-10.360058593749983,8.49550781249998],[-10.283203124999972,8.48515625],[-10.285742187499949,8.454101562499986],[-10.314648437499983,8.310839843750017],[-10.359814453124926,8.187939453125026],[-10.570849609374932,8.071142578125034],[-10.6474609375,7.759375],[-10.878076171874994,7.538232421874994],[-11.267675781249977,7.232617187499997],[-11.507519531249983,6.906542968750003],[-12.48564453124996,7.386279296875045],[-12.480273437499932,7.75327148437502],[-12.697607421874977,7.715869140625045],[-12.850878906249932,7.818701171875034],[-12.956933593749966,8.145312500000045],[-13.148974609374989,8.214599609375043],[-13.272753906249989,8.429736328124989],[-13.085009765624932,8.42475585937504],[-12.894091796874932,8.62978515624998],[-13.181835937499955,8.576904296875043],[-13.206933593749994,8.843115234375006],[-13.059472656249966,8.881152343750031],[-13.292675781249955,9.04921875],[-13.077294921874966,9.069628906249974],[-12.958789062499989,9.263330078124994],[-12.755859374999943,9.373583984374989],[-12.557861328125,9.704980468749994],[-12.427978515625028,9.898144531250011],[-12.142333984375,9.87539062499999],[-11.911083984374955,9.993017578124977],[-11.273632812499955,9.996533203124983],[-11.205664062499949,9.977734374999969],[-11.180859374999955,9.925341796875045],[-11.047460937499977,9.786328125000054],[-10.758593749999989,9.385351562499991]]]]},"properties":{"name":"Sierra Leone","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[-89.36259765624999,14.416015625],[-89.1205078125,14.370214843749991],[-88.51254882812499,13.978955078124997],[-88.504345703125,13.964208984374991],[-88.49765625,13.904541015625],[-88.482666015625,13.854248046875],[-88.44912109375,13.850976562499994],[-88.40849609374999,13.87539062499999],[-88.27622070312499,13.942675781250003],[-88.151025390625,13.987353515625003],[-87.99101562499999,13.879638671875],[-87.8919921875,13.894970703124997],[-87.80224609375,13.889990234374991],[-87.7314453125,13.841064453125],[-87.71533203125,13.812695312499997],[-87.781884765625,13.521386718749994],[-87.930859375,13.1806640625],[-88.68564453124999,13.281494140625],[-88.51201171874999,13.183935546874991],[-89.80419921875,13.560107421875003],[-90.09521484375,13.736523437499997],[-90.04814453124999,13.904052734375],[-89.54716796874999,14.241259765625003],[-89.5736328125,14.390087890624997],[-89.36259765624999,14.416015625]]]},"properties":{"name":"El Salvador","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-56.26708984374997,46.838476562500034],[-56.38476562499994,46.81943359375006],[-56.36464843749994,47.09897460937498],[-56.26708984374997,46.838476562500034]]]},"properties":{"name":"St. Pierre and Miquelon","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[6.659960937499989,0.120654296874989],[6.51972656250004,0.066308593750023],[6.468164062499994,0.22734375],[6.68691406250008,0.404394531249977],[6.75,0.24345703124996],[6.659960937499989,0.120654296874989]]],[[[7.423828125,1.567724609375006],[7.330664062500034,1.603369140624991],[7.414453125000051,1.699121093750037],[7.423828125,1.567724609375006]]]]},"properties":{"name":"S\xE3o Tom\xE9 and Principe","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[-54.03422851562499,3.62939453125],[-54.00957031249999,3.448535156249989],[-54.06318359375,3.353320312499989],[-54.18803710937499,3.178759765624989],[-54.203125,3.13818359375],[-54.17070312499999,2.993603515624997],[-54.18808593749999,2.874853515624991],[-54.1955078125,2.81787109375],[-54.256738281249994,2.713720703124991],[-54.402001953124994,2.461523437499991],[-54.53593749999999,2.343310546874989],[-54.56840820312499,2.342578124999989],[-54.604736328125,2.335791015624991],[-54.61625976562499,2.326757812499991],[-54.661865234375,2.327539062499994],[-54.697412109374994,2.359814453124997],[-54.72221679687499,2.441650390625],[-54.87607421874999,2.450390625],[-54.92656249999999,2.497363281249989],[-54.968408203124994,2.54833984375],[-54.978662109374994,2.59765625],[-55.005810546875,2.59296875],[-55.0703125,2.54833984375],[-55.11411132812499,2.539208984374994],[-55.1876953125,2.547509765624994],[-55.286035156249994,2.499658203124994],[-55.343994140625,2.48876953125],[-55.38535156249999,2.440625],[-55.73056640624999,2.406152343749994],[-55.957470703125,2.520458984374997],[-55.99350585937499,2.497509765624997],[-56.02036132812499,2.392773437499997],[-56.0451171875,2.364404296874994],[-56.087792968749994,2.34130859375],[-56.12939453125,2.299511718749997],[-56.1376953125,2.259033203125],[-56.073632812499994,2.236767578124997],[-56.02006835937499,2.158154296874997],[-55.96196289062499,2.095117187499994],[-55.91533203124999,2.03955078125],[-55.921630859375,1.976660156249991],[-55.929638671875,1.8875],[-56.01992187499999,1.842236328124997],[-56.4828125,1.942138671875],[-56.704345703125,2.036474609374991],[-57.19736328124999,2.853271484375],[-57.303662109375,3.377099609374994],[-57.646728515625,3.39453125],[-58.05429687499999,4.101660156249991],[-57.84599609374999,4.668164062499997],[-57.91704101562499,4.820410156249991],[-57.711083984374994,4.991064453124991],[-57.331005859375,5.020166015624994],[-57.20981445312499,5.195410156249991],[-57.3185546875,5.335351562499994],[-57.194775390625,5.5484375],[-56.96982421874999,5.992871093749997],[-56.235595703125,5.885351562499991],[-55.897607421874994,5.699316406249991],[-55.909912109375,5.892626953124989],[-55.648339843749994,5.985888671874989],[-54.83369140625,5.988330078124989],[-54.05419921875,5.807910156249989],[-54.08046875,5.502246093749989],[-54.4796875,4.836523437499991],[-54.350732421874994,4.054101562499994],[-54.03422851562499,3.62939453125]]]},"properties":{"name":"Suriname","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[22.538671875,49.072705078125],[22.52412109375001,49.031396484374994],[22.389453125000017,48.873486328125],[22.295214843750017,48.685839843749996],[22.142871093750017,48.568505859374994],[22.1318359375,48.405322265624996],[21.766992187500023,48.3380859375],[21.45136718750001,48.55224609375],[20.490039062500017,48.526904296874996],[20.333789062500017,48.295556640624994],[19.95039062500001,48.146630859374994],[19.625390625000023,48.223095703125],[18.791894531250023,48.000292968749996],[18.72421875,47.787158203124996],[17.76191406250001,47.770166015624994],[17.147363281250023,48.00595703125],[16.86542968750001,48.3869140625],[16.953125,48.598828125],[17.135644531250023,48.841064453125],[17.75849609375001,48.888134765625],[18.0859375,49.06513671875],[18.160937500000017,49.257373046874996],[18.83222656250001,49.510791015624996],[19.1494140625,49.4],[19.44160156250001,49.597705078124996],[19.77392578125,49.37216796875],[19.756640625000017,49.204394531249996],[20.0576171875,49.181298828124994],[20.36298828125001,49.38525390625],[20.868457031250017,49.314697265625],[21.079394531250017,49.418261718749996],[21.6396484375,49.411962890625],[22.020117187500006,49.209521484374996],[22.473046875000023,49.081298828125],[22.538671875,49.072705078125]]]},"properties":{"name":"Slovakia","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[16.516210937500006,46.499902343749994],[16.427636718750023,46.5244140625],[16.321191406250023,46.534619140625],[16.1064453125,46.382226562499994],[15.608984375,46.171923828124996],[15.592578125000017,46.139990234375],[15.596875,46.109228515625],[15.675585937500017,45.983691406249996],[15.652148437500017,45.862158203125],[15.277050781250011,45.7326171875],[15.353710937500011,45.659912109375],[15.283593750000023,45.5796875],[15.291210937500011,45.541552734374996],[15.32666015625,45.502294921875],[15.339453125,45.467041015625],[15.242089843750023,45.44140625],[15.110449218750006,45.45078125],[14.95458984375,45.499902343749994],[14.793066406250006,45.47822265625],[14.649511718750006,45.571484375],[14.591796875,45.651269531249994],[14.56884765625,45.6572265625],[14.548448660714302,45.628388671875],[14.507586495535731,45.59039341517857],[14.42734375,45.505761718749994],[14.369921875000017,45.4814453125],[13.878710937500017,45.428369140624994],[13.577929687500017,45.516894531249996],[13.8447265625,45.59287109375],[13.831152343750006,45.680419921875],[13.663476562500023,45.7919921875],[13.6005859375,45.979785156249996],[13.509179687500023,45.973779296874994],[13.487695312500023,45.987109375],[13.480273437500017,46.009228515625],[13.486425781250006,46.03955078125],[13.548046875000011,46.089111328125],[13.616601562500023,46.133105468749996],[13.634960937500011,46.157763671874996],[13.632519531250011,46.177050781249996],[13.420996093750006,46.212304687499994],[13.399511718750006,46.317529296874994],[13.563281250000017,46.415087890624996],[13.637109375000023,46.448535156249996],[13.6796875,46.462890625],[13.7,46.520263671875],[14.5498046875,46.399707031249996],[14.893261718750011,46.605908203125],[15.957617187500006,46.677636718749994],[16.093066406250017,46.86328125],[16.283593750000023,46.857275390625],[16.516210937500006,46.499902343749994]]]},"properties":{"name":"Slovenia","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[16.52851562500001,56.29052734375],[16.431640625,56.24375],[16.41230468750004,56.568994140624994],[17.02539062499997,57.345068359375006],[16.52851562500001,56.29052734375]]],[[[19.076464843750045,57.8359375],[18.813867187500023,57.70620117187502],[18.907910156250068,57.39833984375002],[18.146386718749994,56.920507812500006],[18.285351562500068,57.08320312500001],[18.136523437500045,57.55664062500003],[18.53740234374999,57.83056640625006],[18.90058593750001,57.91547851562504],[19.076464843750045,57.8359375]]],[[[19.156347656250063,57.92260742187497],[19.086523437500034,57.86499023437506],[19.134863281250034,57.98134765625002],[19.331445312500023,57.962890625],[19.156347656250063,57.92260742187497]]],[[[24.15546875000004,65.80527343750006],[23.102343750000074,65.73535156250003],[22.400976562500006,65.86210937499999],[22.254003906250006,65.59755859375002],[21.565527343750063,65.40810546874997],[21.609179687500074,65.261376953125],[21.410351562500068,65.31743164062505],[21.57392578125001,65.12578124999999],[21.138183593750057,64.80869140625006],[21.519628906250034,64.46308593749998],[20.76269531250003,63.86782226562505],[18.60644531250003,63.17827148437499],[18.31289062500008,62.996386718750045],[18.46308593750004,62.895849609375006],[18.170019531250034,62.789355468750074],[17.906640625000023,62.88676757812502],[18.037304687500068,62.60053710937498],[17.834472656250057,62.50273437500002],[17.410253906250063,62.508398437500034],[17.633691406249994,62.23300781250006],[17.374511718750057,61.866308593750034],[17.465429687500006,61.68447265625005],[17.196386718750006,61.72456054687504],[17.13076171875005,61.57573242187499],[17.25097656250003,60.70078125],[17.6611328125,60.53515625000003],[17.955761718750068,60.589794921874955],[18.85273437500001,60.02587890625],[18.970507812500045,59.757226562499994],[17.964257812500023,59.359375],[18.56025390625004,59.39448242187498],[18.285351562500068,59.109375],[16.978125,58.65415039062506],[16.214257812500023,58.636669921874955],[16.92382812499997,58.49257812499999],[16.651953125,58.43432617187503],[16.65224609375008,57.50068359374998],[16.348730468750063,56.70927734374996],[15.826660156250028,56.12495117187501],[14.782031250000017,56.16191406250002],[14.754785156250051,56.03315429687498],[14.401953125000034,55.97675781250004],[14.21503906250004,55.83261718749998],[14.341699218749994,55.52773437500002],[14.17373046875008,55.396630859374966],[12.885839843750063,55.41137695312506],[12.973925781250074,55.748144531250006],[12.471191406250057,56.29052734375],[12.801660156250051,56.263916015625],[12.65644531250004,56.44057617187502],[12.857421875000028,56.45239257812503],[12.883691406250051,56.61772460937496],[12.421484375000034,56.906396484374966],[11.449316406250063,58.118359374999955],[11.43154296875008,58.339990234374994],[11.24824218750004,58.369140625],[11.14716796875004,58.98862304687498],[11.19580078125,59.07827148437505],[11.388281250000063,59.036523437499966],[11.470703125000057,58.909521484375034],[11.64277343750004,58.92607421875002],[11.798144531250074,59.28989257812498],[11.680761718750034,59.59228515625003],[12.486132812500074,60.10678710937506],[12.588671874999989,60.450732421875045],[12.29414062500004,61.00268554687506],[12.706054687500028,61.059863281250074],[12.88076171875008,61.35229492187506],[12.155371093750006,61.720751953125045],[12.303515625000074,62.28559570312501],[11.999902343750051,63.29169921875001],[12.175195312500051,63.595947265625],[12.792773437500017,64],[13.203515625000023,64.07509765625],[13.960546875000063,64.01401367187498],[14.141210937500006,64.17353515624998],[14.077636718750028,64.464013671875],[13.650292968750023,64.58154296874997],[14.47968750000004,65.30146484374998],[14.543261718750045,66.12934570312498],[15.483789062500051,66.30595703124999],[15.422949218750006,66.48984374999998],[16.40351562500004,67.05498046875002],[16.12744140625,67.42583007812507],[16.783593750000023,67.89501953125],[17.324609375000023,68.10380859374999],[17.91669921875001,67.96489257812502],[18.303027343750045,68.55541992187497],[19.969824218750063,68.35639648437501],[20.348046875000023,68.84873046875003],[20.116699218750057,69.02089843750005],[20.622167968750006,69.036865234375],[21.99746093750005,68.52060546874998],[22.854101562500034,68.36733398437502],[23.63886718750004,67.95439453125002],[23.454882812500045,67.46025390625007],[23.733593750000068,67.42290039062499],[23.64150390625005,67.12939453124997],[23.988574218750045,66.81054687500003],[23.700292968750034,66.25263671874998],[24.15546875000004,65.80527343750006]]]]},"properties":{"name":"Sweden","childNum":4}},{"geometry":{"type":"Polygon","coordinates":[[[31.9482421875,-25.957617187500006],[32.060546875,-26.018359375],[32.04140625000002,-26.28125],[32.10595703125,-26.52001953125],[32.112890625,-26.839453125],[32.02480468750002,-26.811132812500006],[31.994726562500006,-26.817480468750006],[31.967187500000023,-26.96064453125001],[31.946093750000017,-27.173632812500003],[31.958398437500023,-27.30585937500001],[31.742578125000023,-27.30996093750001],[31.469531250000017,-27.295507812500006],[31.274023437500006,-27.238378906250006],[31.063378906250023,-27.1123046875],[30.938085937500006,-26.915820312500003],[30.88330078125,-26.79238281250001],[30.806738281250006,-26.785253906250006],[30.794335937500023,-26.764257812500006],[30.803320312500006,-26.41347656250001],[31.08808593750001,-25.98066406250001],[31.207324218750017,-25.843359375],[31.33515625000001,-25.75556640625001],[31.382617187500017,-25.74296875],[31.415136718750006,-25.74658203125],[31.921679687500017,-25.96875],[31.9482421875,-25.957617187500006]]]},"properties":{"name":"Swaziland","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[55.54033203125002,-4.693066406250011],[55.54296875,-4.785546875],[55.383398437500006,-4.609277343750009],[55.45576171875001,-4.558789062500011],[55.54033203125002,-4.693066406250011]]]},"properties":{"name":"Seychelles","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[42.358984375,37.10859375],[41.78857421875,36.59716796875],[41.41679687500002,36.5146484375],[41.295996093750006,36.383349609374996],[41.354101562500006,35.640429687499996],[41.19472656250002,34.768994140625],[40.98701171875001,34.429052734375],[38.773535156250006,33.372216796874994],[36.818359375,32.317285156249994],[36.3720703125,32.3869140625],[35.78730468750001,32.734912109374996],[35.91347656250002,32.94960937499999],[35.869140625,33.43173828125],[36.03447265625002,33.58505859375],[35.98613281250002,33.75263671875],[36.36503906250002,33.83935546875],[36.27783203125,33.92529296875],[36.5849609375,34.221240234374996],[36.50439453125,34.432373046875],[36.32988281250002,34.499609375],[36.383886718750006,34.65791015625],[35.97626953125001,34.629199218749996],[35.902441406250006,35.420703125],[35.76445312500002,35.571582031249996],[35.83964843750002,35.84921875],[35.892675781250006,35.916552734374996],[35.96757812500002,35.910058593749994],[36.12734375000002,35.831445312499994],[36.15361328125002,35.833886718749994],[36.34755859375002,36.003515625],[36.37539062500002,36.171240234375],[36.63671875,36.233984375],[36.64140625000002,36.263525390625],[36.5375,36.45742187499999],[36.54667968750002,36.50634765625],[36.596875,36.7013671875],[36.62841796875,36.777685546875],[36.65859375000002,36.802539062499996],[36.77656250000001,36.79267578125],[36.94179687500002,36.7583984375],[36.9853515625,36.702392578125],[37.06621093750002,36.652636718749996],[37.43632812500002,36.643310546875],[37.523535156250006,36.6783203125],[37.7203125,36.743701171874996],[37.90664062500002,36.79462890625],[38.19169921875002,36.9015625],[38.7666015625,36.693115234375],[38.90644531250001,36.694677734375],[39.1083984375,36.680566406249994],[39.35664062500001,36.681591796875],[39.50146484375,36.70224609375],[39.6865234375,36.738623046875],[40.01640625000002,36.826074218749994],[40.705664062500006,37.097705078124996],[41.886816406250006,37.156396484374994],[42.05986328125002,37.2060546875],[42.16787109375002,37.288623046874996],[42.202734375,37.29726562499999],[42.24755859375,37.2822265625],[42.2685546875,37.2765625],[42.31289062500002,37.22958984375],[42.358984375,37.10859375]]]},"properties":{"name":"Syria","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-72.3328125,21.85136718749999],[-72.14433593750002,21.79272460937503],[-72.33544921874994,21.758007812499983],[-72.3328125,21.85136718749999]]]},"properties":{"name":"Turks and Caicos Is.","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[23.980273437500017,19.496630859375003],[23.970800781250006,15.721533203124991],[23.10517578125001,15.702539062499994],[22.933886718750017,15.533105468749994],[22.93232421875001,15.162109375],[22.6708984375,14.722460937500003],[22.38154296875001,14.550488281249997],[22.53857421875,14.161865234375],[22.1064453125,13.7998046875],[22.228125,13.32958984375],[21.825292968750006,12.79052734375],[21.928125,12.678125],[22.352343750000017,12.660449218749989],[22.472460937500017,12.067773437499994],[22.580957031250023,11.990136718749994],[22.591113281250017,11.579882812499989],[22.922656250000017,11.344873046874994],[22.86005859375001,10.919677734375],[22.49384765625001,10.996240234374994],[21.771484375,10.642822265625],[21.682714843750006,10.289843749999989],[20.773242187500017,9.405664062499994],[20.342089843750017,9.127099609374994],[18.95625,8.938867187499994],[18.886035156250017,8.836035156249991],[19.108691406250017,8.656152343749994],[18.56416015625001,8.0458984375],[17.6494140625,7.98359375],[16.784765625,7.550976562499997],[16.545312500000023,7.865478515625],[16.37890625,7.683544921874997],[15.957617187500006,7.507568359375],[15.480078125,7.523779296874991],[15.5498046875,7.787890624999989],[15.1162109375,8.557324218749997],[14.332324218750017,9.20351562499999],[13.977246093750011,9.691552734374994],[14.243261718750006,9.979736328125],[15.654882812500006,10.0078125],[15.276074218750011,10.357373046874997],[15.132226562500023,10.648486328124989],[15.029882812500006,11.11367187499999],[15.08125,11.845507812499989],[14.847070312500023,12.502099609374994],[14.461718750000017,13.021777343749989],[14.244824218750011,13.07734375],[14.06396484375,13.07851562499999],[13.932324218750011,13.258496093749997],[13.606347656250023,13.70458984375],[13.505761718750023,14.134423828124994],[13.4482421875,14.380664062500003],[14.367968750000017,15.750146484374994],[15.474316406250011,16.908398437499997],[15.735058593750011,19.904052734375],[15.963183593750017,20.34619140625],[15.587109375000011,20.733300781249994],[15.607324218750023,20.954394531250003],[15.181835937500011,21.523388671874997],[14.97900390625,22.99619140624999],[15.984082031250011,23.445214843749994],[20.14765625000001,21.38925781249999],[23.980273437500017,19.496630859375003]]]},"properties":{"name":"Chad","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[0.900488281250006,10.993261718749991],[0.763378906250011,10.386669921874997],[1.330078125,9.996972656249994],[1.3857421875,9.361669921874991],[1.600195312500006,9.050048828125],[1.624707031250011,6.997314453125],[1.530957031250011,6.992431640625],[1.777929687500006,6.294628906249997],[1.62265625,6.216796875],[1.187207031250011,6.089404296874989],[0.736914062500006,6.452587890624997],[0.525585937500011,6.850927734374991],[0.634765625,7.353662109374994],[0.5,7.546875],[0.686328125000017,8.354882812499994],[0.37255859375,8.75927734375],[0.48876953125,8.851464843749994],[0.525683593750017,9.398486328124989],[0.2333984375,9.463525390624994],[0.342578125000017,9.604150390624994],[0.264550781250023,9.644726562499997],[0.380859375,10.291845703124991],[-0.08632812499999,10.673046875],[0.009423828125023,11.02099609375],[-0.068603515625,11.115625],[0.49267578125,10.954980468749994],[0.900488281250006,10.993261718749991]]]},"properties":{"name":"Togo","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[98.40908203125005,7.90205078125004],[98.2962890625,7.776074218750054],[98.32207031250007,8.166308593749974],[98.4349609375,8.085644531249969],[98.40908203125005,7.90205078125004]]],[[[100.070703125,9.58603515625002],[99.96240234375003,9.421630859375],[99.93955078125006,9.559960937500037],[100.070703125,9.58603515625002]]],[[[102.42675781250003,11.988720703125026],[102.30195312500004,11.98081054687502],[102.27744140625006,12.151855468750043],[102.42675781250003,11.988720703125026]]],[[[100.12246093750005,20.316650390625057],[100.11494140625004,20.257666015625034],[100.13974609375012,20.245410156250017],[100.31796875000006,20.38588867187505],[100.51953125000003,20.17792968750004],[100.39765625000004,19.756103515625],[100.51357421875005,19.553466796875],[101.21191406249997,19.54833984375003],[101.22080078125006,19.486621093750074],[101.19755859375007,19.327929687500074],[101.2863281250001,18.977148437500006],[101.04697265625012,18.441992187500063],[101.05058593750002,18.407031250000045],[101.1375,18.28686523437497],[101.14394531250005,18.14262695312499],[100.90849609375002,17.583886718750023],[100.95585937500002,17.541113281250006],[101.10517578125004,17.47954101562499],[101.16748046874997,17.49902343749997],[101.41367187500012,17.71875],[101.55507812500005,17.812353515625034],[101.56367187500004,17.82050781250001],[101.6875,17.889404296875],[101.77480468750005,18.03339843750004],[101.81865234375002,18.06464843750001],[101.87548828124997,18.046435546875017],[101.94746093750004,18.081494140624983],[102.03457031250005,18.169824218750023],[102.10146484375,18.210644531249983],[102.14824218750002,18.20385742187503],[102.35185546875002,18.045947265625017],[102.45878906250002,17.984619140625057],[102.55253906250007,17.96508789062497],[102.61679687500006,17.833349609375034],[102.66064453124997,17.817968750000034],[102.680078125,17.824121093750023],[103.05136718750006,18.02851562500001],[103.0912109375,18.13823242187499],[103.14853515625006,18.221728515625045],[103.19970703124997,18.259472656249983],[103.26318359374997,18.27846679687505],[103.27958984375002,18.304980468750017],[103.24892578125,18.338964843750034],[103.25175781250002,18.373486328124955],[103.2882812500001,18.408398437499955],[103.36699218750007,18.42333984374997],[103.48798828125004,18.418164062499983],[103.62968750000002,18.38256835937503],[103.79228515625002,18.316503906249977],[103.89882812500005,18.295312500000023],[103.949609375,18.31899414062505],[104.04873046875005,18.216699218749994],[104.19619140625005,17.988378906250006],[104.32265625,17.815820312500023],[104.428125,17.69897460937503],[104.7396484375,17.461669921875],[104.81601562500012,17.30029296874997],[104.75898437500004,17.0771484375],[104.7435546875,16.884375],[104.75058593750012,16.647558593750063],[104.81933593750003,16.46606445312503],[105.04716796875007,16.160253906249977],[105.14873046875007,16.09355468749999],[105.33066406250006,16.037890625000017],[105.40625,15.987451171875051],[105.39892578124997,15.829882812500017],[105.62207031250003,15.699951171875],[105.641015625,15.656542968750045],[105.6388671875001,15.585937500000057],[105.615625,15.488281250000057],[105.49042968750004,15.256591796875],[105.49042968750004,15.127587890625009],[105.5333984375001,15.041601562499991],[105.54667968750002,14.932470703124963],[105.52304687500012,14.843310546875003],[105.49736328125002,14.590673828124963],[105.47558593750003,14.530126953124977],[105.42265625000007,14.471630859375054],[105.34218750000005,14.416699218750054],[105.24365234375003,14.367871093750054],[105.1833007812501,14.346240234374989],[105.16914062500004,14.336083984374966],[105.12597656250003,14.280957031250011],[105.07412109375005,14.227441406250037],[104.77900390625004,14.427832031250006],[103.19941406250004,14.332617187499977],[102.90927734375006,14.136718750000028],[102.546875,13.585693359375043],[102.33632812500005,13.560302734375014],[102.49960937500012,12.669970703125003],[102.75566406250002,12.42626953125],[102.73662109375007,12.089794921875011],[102.93388671875002,11.706689453125037],[102.594140625,12.203027343749994],[102.54023437500004,12.109228515624977],[101.83574218750002,12.640380859375014],[100.89775390625007,12.653808593749986],[100.96269531250007,13.431982421874991],[100.60292968750005,13.568164062500017],[100.23564453125002,13.48447265625002],[99.99052734375007,13.243457031250031],[100.08994140625006,13.045654296874972],[99.96396484375006,12.690039062500006],[99.98906250000007,12.170800781249994],[99.16503906250003,10.319824218750028],[99.25390625000003,9.265234375000034],[99.83554687500012,9.288378906250031],[99.98955078125007,8.589208984374977],[100.129296875,8.428076171875006],[100.16347656250005,8.508398437500034],[100.27939453125006,8.268505859375011],[100.54521484375002,7.226904296874991],[100.43935546875005,7.280761718750043],[100.38037109375003,7.541503906250043],[100.28378906250006,7.551513671875043],[100.25664062500002,7.774902343749986],[100.16074218750012,7.599267578124994],[100.4235351562501,7.18784179687502],[101.01787109375002,6.860937500000034],[101.49794921875005,6.865283203125031],[102.10107421874997,6.242236328125031],[101.87363281250012,5.825292968749991],[101.67841796875004,5.778808593750028],[101.5560546875,5.907763671875003],[101.1139648437501,5.636767578125045],[100.98164062500004,5.771044921875045],[101.05351562500002,6.242578125],[100.87392578125,6.24541015624996],[100.75449218750012,6.460058593749991],[100.3454101562501,6.549902343750006],[100.26142578125004,6.682714843749963],[100.11914062499997,6.441992187500048],[99.69599609375004,6.87666015625004],[99.72031250000012,7.106201171875],[99.55302734375002,7.218798828125031],[99.59697265625002,7.355615234375009],[99.35859375000004,7.372216796875023],[99.26367187499997,7.619042968750037],[99.07763671874997,7.718066406250045],[99.05107421875002,7.887841796874994],[98.78867187500012,8.059814453125028],[98.703515625,8.256738281250009],[98.57919921875006,8.344287109374989],[98.42099609375006,8.17822265625],[98.30546875000007,8.226220703125009],[98.24179687500006,8.767871093750045],[98.70253906250005,10.19038085937504],[98.7572265625,10.660937499999974],[99.1901367187501,11.105273437499989],[99.61474609374997,11.781201171875026],[99.40507812500002,12.547900390625003],[99.12392578125,13.030761718750043],[99.13681640625006,13.716699218749994],[98.57001953125004,14.359912109375031],[98.20214843749997,14.97592773437502],[98.19101562500012,15.204101562499972],[98.55693359375007,15.367675781249986],[98.59238281250006,16.05068359375005],[98.81796875000012,16.180810546874994],[98.88828125000006,16.351904296875034],[98.83544921875003,16.417578125],[98.66074218750006,16.330419921875006],[98.4388671875,16.975683593750034],[97.7064453125,17.79711914062503],[97.63222656250005,18.290332031250074],[97.37392578125,18.51796875],[97.74589843750002,18.58818359374999],[97.816796875,19.459960937500057],[98.01503906250005,19.74951171874997],[98.37128906250004,19.68916015625004],[98.9166992187501,19.77290039062504],[99.07421875000003,20.09936523437503],[99.48593750000006,20.14985351562501],[99.45888671875005,20.363037109375],[99.72011718750005,20.32543945312497],[99.8903320312501,20.424414062499977],[99.9542968750001,20.415429687500023],[100.0036132812501,20.37958984375001],[100.12246093750005,20.316650390625057]]]]},"properties":{"name":"Thailand","childNum":4}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[70.66416015625,39.85546875],[70.55957031250003,39.790917968749994],[70.48925781250003,39.86303710937503],[70.48281250000005,39.88271484375005],[70.49775390625004,39.88242187499998],[70.56708984375004,39.86660156250005],[70.66416015625,39.85546875]]],[[[70.95800781250003,40.238867187500034],[70.59921875,39.974511718749994],[69.96679687499997,40.202246093750034],[69.46875,40.020751953125],[69.47099609375002,39.990625],[69.43193359375007,39.909765625000034],[69.36542968750004,39.94707031250002],[69.30722656250006,39.968554687500045],[69.27880859374997,39.91777343749999],[69.24472656250006,39.82709960937498],[69.29765625000007,39.52480468750005],[70.50117187500004,39.58735351562501],[70.79931640625003,39.39472656250001],[71.4703125,39.60366210937502],[71.50302734375006,39.58217773437502],[71.51738281250002,39.55385742187502],[71.50585937499997,39.51708984374997],[71.5033203125,39.47880859374999],[71.73222656250002,39.422998046874994],[71.77861328125007,39.27797851562502],[72.04277343750002,39.352148437500034],[72.08417968750004,39.310644531250034],[72.14736328125005,39.26074218749997],[72.22998046874997,39.20751953124997],[72.63994140625002,39.385986328125],[73.10927734375,39.36191406249998],[73.2349609375,39.37456054687499],[73.3361328125001,39.41235351562506],[73.38740234375004,39.442724609375034],[73.4704101562501,39.46059570312502],[73.63164062500007,39.44887695312502],[73.63632812500006,39.396679687499955],[73.60732421875,39.229199218749955],[73.8052734375,38.968652343749994],[73.69609375000007,38.85429687499996],[73.80166015625,38.60688476562501],[74.02558593750004,38.53984375000002],[74.27744140625,38.659765625000034],[74.81230468750002,38.46030273437498],[74.8942382812501,37.60141601562498],[75.11875,37.38569335937498],[74.89130859375004,37.231640624999955],[74.875390625,37.24199218750002],[74.83046875,37.28593750000002],[74.73056640625006,37.35703125],[74.659375,37.39448242187501],[74.34902343750005,37.41875],[74.25966796875005,37.41542968750002],[74.20351562500005,37.37246093750005],[74.16708984375,37.32944335937498],[73.74960937500006,37.23178710937498],[73.6535156250001,37.239355468750034],[73.62753906250006,37.261572265625006],[73.71728515625003,37.32944335937498],[73.7337890625,37.37578125000002],[73.72060546875,37.41875],[73.65712890625005,37.43046875],[73.6046875000001,37.44604492187503],[73.48134765625,37.4716796875],[73.38291015625006,37.462255859375034],[73.21113281250004,37.40849609375002],[72.89550781250003,37.26752929687498],[72.65742187500004,37.029052734375],[71.665625,36.696923828124994],[71.530859375,36.845117187499994],[71.43291015625007,37.12753906249998],[71.5822265625001,37.91010742187498],[71.55195312500004,37.93315429687496],[71.48779296874997,37.93188476562497],[71.38964843750003,37.90629882812502],[71.31992187500006,37.90185546875],[71.27851562500004,37.91840820312498],[71.33271484375004,38.170263671875034],[71.25585937499997,38.306982421875006],[70.7359375,38.42255859375001],[70.41777343750002,38.075439453125],[70.21464843750002,37.92441406250006],[70.19941406250004,37.88603515624996],[70.25498046875006,37.76538085937497],[70.25146484374997,37.66416015625006],[70.18867187500004,37.58247070312501],[70.11982421875004,37.54350585937499],[69.9849609375,37.566162109375],[69.8208984375,37.60957031250004],[69.62578125000002,37.59404296874999],[69.49208984375,37.55307617187498],[69.42011718750004,37.486718749999966],[69.39921875000007,37.39931640625002],[69.42968749999997,37.290869140625034],[69.414453125,37.20776367187497],[69.35380859375007,37.15004882812502],[69.3039062500001,37.11694335937503],[69.26484375000004,37.1083984375],[69.18017578125003,37.158300781250034],[68.96044921875003,37.32504882812498],[68.9118164062501,37.33393554687501],[68.88525390624997,37.32807617187498],[68.85537109375005,37.31684570312501],[68.83847656250006,37.30283203124998],[68.82373046874997,37.27070312500001],[68.78203125000002,37.25800781250001],[68.7232421875,37.26801757812501],[68.6691406250001,37.258398437500006],[68.3869140625001,37.1375],[68.29951171875004,37.08842773437502],[68.28476562500006,37.036328124999955],[68.2609375000001,37.01308593750002],[68.2121093750001,37.02153320312496],[68.0677734375,36.949804687500006],[67.95800781249997,36.972021484375006],[67.83447265624997,37.06420898437506],[67.75898437500004,37.172216796875034],[67.7980468750001,37.244970703125006],[67.81435546875005,37.48701171875004],[68.3502929687501,38.211035156250006],[68.08720703125002,38.47353515625002],[68.13251953125004,38.927636718749966],[67.69443359375006,38.99462890625003],[67.64833984375005,39.13105468750004],[67.3576171875001,39.216699218749994],[67.426171875,39.46557617187497],[67.71904296875007,39.62138671875002],[68.46328125,39.53671874999998],[68.63896484375007,39.8388671875],[68.86875,39.90747070312503],[68.80468750000003,40.05034179687499],[68.9720703125,40.08994140624998],[68.63066406250007,40.16708984374998],[69.27490234374997,40.19809570312498],[69.20625,40.566552734374994],[69.35722656250002,40.76738281249996],[69.71289062500003,40.65698242187503],[70.40195312500006,41.03510742187498],[70.75107421875006,40.721777343750006],[70.37158203125003,40.38413085937506],[70.653125,40.201171875],[70.95800781250003,40.238867187500034]]]]},"properties":{"name":"Tajikistan","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[66.52226562500007,37.34848632812506],[66.471875,37.3447265625],[65.7650390625,37.56914062499996],[65.55498046875002,37.25117187500004],[65.30361328125005,37.24677734375001],[65.08964843750007,37.237939453124994],[64.9515625,37.19355468750001],[64.81630859375005,37.13208007812503],[64.7824218750001,37.05927734375001],[64.60253906250003,36.554541015625034],[64.5658203125,36.427587890625034],[64.51103515625002,36.34067382812498],[64.184375,36.14892578125],[63.8625,36.012353515624994],[63.12998046875006,35.84619140624997],[63.169726562500074,35.678125],[63.05664062500003,35.44580078125003],[62.98027343750002,35.40917968750003],[62.85800781250006,35.34965820312499],[62.688085937500006,35.25532226562504],[62.3078125000001,35.17080078125005],[62.08964843750002,35.3796875],[61.62099609375005,35.43232421875004],[61.34472656249997,35.62949218750006],[61.26201171875002,35.61958007812498],[61.25214843750004,35.86762695312498],[61.15292968750006,35.97675781250001],[61.212011718750006,36.190527343750034],[61.11962890625003,36.64257812500003],[60.34130859375003,36.63764648437501],[60.06279296875002,36.962890625],[59.454980468749994,37.25283203125002],[59.30175781249997,37.51064453125005],[58.81542968750003,37.683496093749994],[58.261621093749994,37.665820312500045],[57.35371093750004,37.97333984374998],[57.1935546875001,38.216406250000034],[56.440625,38.249414062499994],[56.272070312500006,38.080419921875034],[55.38085937500003,38.051123046875034],[54.90009765625004,37.77792968750006],[54.6994140625001,37.47016601562498],[53.91416015625006,37.34355468750002],[53.86865234375003,38.949267578125045],[53.70458984375003,39.209570312500034],[53.33632812500005,39.34082031250006],[53.15664062499999,39.26499023437506],[53.23564453125002,39.608544921874966],[53.603125,39.546972656250034],[53.472265625,39.66879882812498],[53.48730468749997,39.909375],[52.9875,39.98759765625002],[53.03554687500005,39.7744140625],[52.80468749999997,40.054003906250045],[52.73369140625002,40.39873046875002],[52.943457031250006,41.03808593750006],[53.1452148437501,40.82495117187497],[53.61523437500003,40.818505859374994],[53.87001953125005,40.64868164062503],[54.37734375,40.693261718749966],[54.319433593750006,40.83457031249998],[54.68505859375003,40.873046875],[54.70371093750006,41.071142578125034],[54.094824218750006,41.51938476562506],[53.80468749999997,42.11762695312498],[53.16416015625006,42.09379882812502],[52.97001953125002,41.97622070312505],[52.81484375,41.711816406249994],[52.850390625000074,41.20029296875006],[52.4938476562501,41.780371093750034],[53.0558593750001,42.14775390624999],[54.120996093749994,42.335205078125],[54.85380859375002,41.965185546875006],[55.434375,41.296289062499994],[55.97744140625005,41.32221679687504],[57.01796875,41.26347656249996],[57.11884765625004,41.35029296874998],[56.96406250000004,41.856542968750006],[57.290625,42.123779296875],[57.814257812500074,42.18984375000005],[58.02890625,42.48764648437506],[58.474414062500074,42.29936523437496],[58.15156250000004,42.628076171874966],[58.477148437500006,42.66284179687503],[58.5890625000001,42.778466796874966],[59.35429687500002,42.32329101562496],[59.98515625000002,42.21171875],[59.94179687499999,41.97353515625002],[60.20078125000006,41.803125],[60.07558593750005,41.759667968749966],[60.089648437500074,41.39941406250003],[60.454980468749994,41.221630859374955],[61.2423828125001,41.18920898437503],[61.496972656249994,41.276074218749955],[61.90283203124997,41.09370117187501],[62.48320312500002,39.97563476562496],[63.76367187500003,39.16054687499999],[64.3099609375,38.97729492187497],[65.612890625,38.23857421875002],[65.97119140624997,38.244238281250006],[66.60625,37.98671875000005],[66.52558593750004,37.785742187500034],[66.51132812500006,37.59916992187496],[66.51064453125,37.45869140625004],[66.52226562500007,37.34848632812506]]]},"properties":{"name":"Turkmenistan","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[124.0363281250001,-9.341601562500031],[124.44443359375012,-9.190332031250023],[124.28232421875012,-9.427929687500026],[124.0363281250001,-9.341601562500031]]],[[[125.06816406250002,-9.511914062499997],[124.96015625000004,-9.213769531250009],[125.10048828125,-9.189843750000023],[125.14902343750012,-9.042578125000034],[124.93681640625007,-9.053417968750026],[124.92226562500005,-8.942480468749977],[125.17802734375002,-8.647851562499994],[125.38183593749997,-8.575390624999983],[126.61972656250006,-8.459472656249986],[126.96640625000012,-8.315722656250017],[127.29609375000004,-8.424511718749969],[126.91523437500004,-8.715234374999966],[125.40800781250002,-9.275781250000023],[125.06816406250002,-9.511914062499997]]],[[[125.64609375000006,-8.139941406250003],[125.5794921875,-8.311816406250017],[125.50712890625007,-8.275097656249997],[125.64609375000006,-8.139941406250003]]]]},"properties":{"name":"Timor-Leste","childNum":3}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-175.1619140625,-21.169335937500023],[-175.07817382812496,-21.129003906249977],[-175.15659179687495,-21.26367187499997],[-175.36235351562496,-21.106835937499994],[-175.1619140625,-21.169335937500023]]],[[[-173.953515625,-18.63935546875001],[-174.06914062500002,-18.640234375],[-173.96806640624993,-18.565332031250023],[-173.953515625,-18.63935546875001]]]]},"properties":{"name":"Tonga","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[-61.012109374999966,10.134326171874989],[-61.906103515625006,10.069140625000031],[-61.49931640624999,10.268554687499972],[-61.47827148437497,10.603369140624977],[-61.65117187499993,10.718066406249974],[-60.917626953124966,10.84023437499999],[-61.03374023437502,10.669873046875026],[-61.012109374999966,10.134326171874989]]]},"properties":{"name":"Trinidad and Tobago","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[10.957617187500063,33.72207031250005],[10.722070312500051,33.738916015624994],[10.745214843750063,33.88867187500006],[11.017871093749989,33.82333984374998],[10.957617187500063,33.72207031250005]]],[[[11.278027343750068,34.753808593749994],[11.123632812500063,34.68168945312496],[11.254882812500057,34.82031250000006],[11.278027343750068,34.753808593749994]]],[[[10.274609375000011,31.684960937499994],[10.114941406250068,31.46376953125005],[10.216406250000063,30.78320312500003],[10.05976562500004,30.58007812500003],[9.932519531250051,30.42534179687496],[9.895019531250028,30.387304687500034],[9.51875,30.229394531249994],[9.224023437500023,31.373681640624994],[9.160253906250006,31.621337890625],[9.044042968750034,32.072363281250034],[8.333398437500051,32.54360351562502],[8.1125,33.055322265624994],[7.877246093750017,33.172119140625],[7.534375,33.717919921874994],[7.513867187500068,34.080517578124955],[8.24560546875,34.73408203124998],[8.276855468750057,34.97949218749997],[8.312109375000063,35.084619140624994],[8.394238281250011,35.20385742187503],[8.318066406250011,35.654931640624994],[8.348730468750063,36.367968750000045],[8.207617187500006,36.518945312499994],[8.601269531250068,36.83393554687504],[8.576562500000023,36.93720703125001],[9.687988281250057,37.34038085937499],[9.838476562500063,37.30898437499999],[9.830273437499983,37.13535156250006],[9.875585937499977,37.25415039062503],[10.196386718750063,37.205859375000045],[10.293261718750074,36.781494140625],[10.412304687499983,36.73183593750002],[11.053906250000068,37.07250976562506],[11.12666015625004,36.874072265625045],[10.476562500000028,36.175146484375006],[10.590820312500028,35.88725585937499],[11.00429687500008,35.63383789062496],[11.120117187500057,35.24028320312499],[10.69091796875,34.67846679687503],[10.118359375000068,34.280078125000045],[10.049023437500068,34.056298828124994],[10.305273437500034,33.72827148437497],[10.713183593750017,33.68901367187496],[10.722753906250006,33.514404296875],[10.958007812500057,33.62631835937498],[11.257421875000034,33.30883789062506],[11.202636718749972,33.24921874999998],[11.50458984375004,33.181933593750045],[11.502441406250028,33.15556640624999],[11.467187500000051,32.96572265625005],[11.459179687500011,32.897363281249966],[11.453906250000017,32.64257812500003],[11.533789062500034,32.52495117187496],[11.535937500000017,32.47333984375001],[11.504980468750034,32.413671875000034],[11.358007812500006,32.34521484375003],[11.168261718750074,32.25673828125002],[11.005175781250074,32.17270507812506],[10.826367187500068,32.080664062500034],[10.771582031250006,32.02119140625001],[10.60888671875,31.929541015624977],[10.47578125000004,31.736035156249983],[10.274609375000011,31.684960937499994]]]]},"properties":{"name":"Tunisia","childNum":3}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[25.970019531250045,40.136328125],[25.6689453125,40.13588867187502],[25.918359375000023,40.23798828125004],[25.970019531250045,40.136328125]]],[[[43.43339843750002,41.155517578125],[43.43945312500003,41.10712890625001],[43.72265624999997,40.71953124999999],[43.56933593750003,40.48237304687498],[43.66621093750004,40.12636718750002],[44.28925781250004,40.040380859375006],[44.76826171875004,39.70351562500005],[44.81718750000002,39.65043945312496],[44.58710937500004,39.76855468750006],[44.3893554687501,39.422119140625],[44.02324218750002,39.37744140625006],[44.27167968750004,38.83603515625006],[44.2985351562501,38.38627929687499],[44.4499023437501,38.33422851562506],[44.21132812499999,37.908056640625006],[44.589941406250006,37.710351562499966],[44.574023437500074,37.435400390625006],[44.79414062500004,37.290380859375034],[44.76513671875003,37.142431640625006],[44.73095703124997,37.16528320312503],[44.66933593750005,37.17358398437503],[44.60595703124997,37.176025390625],[44.401953125,37.05849609375002],[44.325585937499994,37.0107421875],[44.28183593750006,36.97802734374997],[44.24570312500006,36.983300781249994],[44.20166015624997,37.05180664062502],[44.208398437499994,37.20263671875],[44.19179687499999,37.249853515625034],[44.15625,37.28295898437503],[44.11445312500004,37.30185546875006],[44.01318359375003,37.313525390625045],[43.83642578124997,37.223535156249994],[43.67578125000003,37.227246093749955],[43.09248046875004,37.36738281249998],[42.936621093750006,37.32475585937502],[42.77460937500004,37.371875],[42.74111328125005,37.361914062500034],[42.6354492187501,37.249267578125],[42.45585937500002,37.128710937500045],[42.358984375,37.10859375000004],[42.31289062499999,37.22958984374998],[42.26855468749997,37.276562499999955],[42.24755859375003,37.28222656250006],[42.20273437500006,37.29726562499999],[42.16787109375005,37.28862304687502],[42.059863281250074,37.2060546875],[41.886816406250006,37.156396484374994],[40.70566406250006,37.09770507812502],[40.4503906250001,37.00888671875006],[40.016406250000074,36.82607421875002],[39.68652343749997,36.73862304687506],[39.50146484374997,36.702246093750034],[39.35664062500004,36.68159179687498],[39.10839843749997,36.68056640625005],[38.90644531250004,36.69467773437498],[38.76660156249997,36.69311523437503],[38.19169921875002,36.90156250000004],[37.90664062500005,36.79462890625001],[37.7203125,36.74370117187502],[37.52353515625006,36.678320312500034],[37.436328125000074,36.643310546875],[37.327050781249994,36.64658203125006],[37.18740234375005,36.655908203124994],[37.066210937500074,36.652636718750045],[36.98535156250003,36.70239257812506],[36.94179687499999,36.758398437500006],[36.77656250000004,36.79267578124998],[36.65859375000005,36.80253906250002],[36.62841796875003,36.777685546875034],[36.596875,36.70136718750001],[36.546679687500074,36.50634765625],[36.5375,36.457421874999966],[36.63671874999997,36.233984375],[36.37539062499999,36.171240234375034],[36.347558593749994,36.003515625000034],[36.20195312500002,35.93754882812502],[36.15361328125002,35.83388671875005],[36.12734375,35.831445312499994],[35.967578125000074,35.91005859375002],[35.89267578125006,35.91655273437502],[35.81093750000005,36.30986328125002],[36.18847656250003,36.65898437499999],[36.048925781250006,36.91059570312501],[35.393164062500006,36.57519531249997],[34.70361328125003,36.81679687499999],[33.694726562499994,36.18198242187498],[32.794824218749994,36.03588867187497],[32.37773437500002,36.18364257812496],[32.02197265625003,36.53530273437502],[31.35253906249997,36.80107421874999],[30.64404296874997,36.86567382812501],[30.446093750000074,36.269873046875034],[29.6890625,36.15668945312498],[29.22363281249997,36.32446289062497],[28.96962890625008,36.71533203125003],[28.303710937500057,36.81196289062498],[28.01943359375005,36.63447265624998],[28.083984375000057,36.75146484375],[27.453906250000017,36.712158203125],[28.00537109375003,36.83198242187498],[28.242382812500068,37.029052734375],[27.262988281250045,36.97656250000003],[27.30019531250005,37.12685546875002],[27.53505859375005,37.16386718750002],[27.06796875,37.65791015625004],[27.224414062500074,37.725439453125006],[27.23242187500003,37.978662109374994],[26.29072265625001,38.27719726562498],[26.44130859375005,38.64121093749998],[26.67421875000008,38.33574218750002],[27.14423828125001,38.45195312499996],[26.906835937500034,38.48173828124999],[26.763671875,38.709619140624966],[27.013671875000057,38.88686523437502],[26.814941406250057,38.96098632812502],[26.853613281250034,39.115625],[26.68183593750004,39.292236328125],[26.89921874999999,39.549658203125034],[26.113085937500074,39.46738281249998],[26.101367187500074,39.56894531249998],[26.18134765625004,39.99008789062498],[26.738085937500045,40.40024414062506],[27.28457031250008,40.45561523437496],[27.4755859375,40.319921875000034],[27.72802734375,40.32880859374998],[27.84853515625005,40.38173828125002],[27.73183593750008,40.48149414062499],[27.87490234375008,40.512939453125],[27.989550781250074,40.48945312500001],[27.96259765625001,40.369873046875],[29.00712890624999,40.389746093750034],[28.787890625000017,40.534033203125034],[28.95800781250003,40.63056640624998],[29.849218750000063,40.760107421875006],[29.113867187499977,40.93784179687506],[29.14814453125004,41.221044921875034],[31.25488281249997,41.10761718750001],[31.45800781249997,41.32001953125004],[32.306445312500074,41.72958984374998],[33.38134765625003,42.01757812500003],[34.75048828124997,41.95683593749999],[35.006445312500006,42.06328125000002],[35.15488281250006,42.02753906250001],[35.12207031250003,41.89111328125003],[35.297753906249994,41.72851562500003],[35.558007812499994,41.63403320312506],[36.05175781249997,41.68256835937498],[36.40537109375006,41.27460937500001],[36.77773437499999,41.36347656250001],[37.066210937500074,41.184423828125034],[38.38105468750004,40.92451171875001],[39.426367187500006,41.10644531250003],[40.26523437500006,40.96132812500005],[41.08359375000006,41.26118164062504],[41.41435546875002,41.42363281249999],[41.510058593750074,41.51748046875002],[41.70175781250006,41.471582031249994],[41.77939453125006,41.44052734374998],[41.823535156250074,41.432373046875],[41.92578125000003,41.49565429687502],[42.46640625,41.43984375000002],[42.56738281249997,41.55927734375001],[42.590429687500006,41.57070312500002],[42.60683593750005,41.57880859374998],[42.682421875000074,41.58574218749999],[42.75410156250004,41.57890625000002],[42.787890625000074,41.56372070312503],[42.82167968750005,41.49238281249998],[42.90673828125003,41.46684570312502],[43.05712890625003,41.35283203124996],[43.149023437500006,41.30712890624997],[43.171289062499994,41.28793945312498],[43.14101562499999,41.26484374999998],[43.15283203124997,41.23642578125006],[43.20546875000005,41.19916992187501],[43.43339843750002,41.155517578125]]],[[[27.47480468750001,41.946875],[28.014453125000017,41.96904296874999],[28.197851562500063,41.55449218750002],[29.057226562500006,41.22973632812503],[28.95625,41.00820312499999],[28.172167968750074,41.08071289062502],[27.49941406250005,40.97314453124997],[27.258007812499983,40.687353515625006],[26.772070312500034,40.498046875],[26.202734375000034,40.07539062500004],[26.25380859375005,40.31469726562503],[26.792089843750034,40.626611328124994],[26.10546875000003,40.61132812499997],[26.03896484375008,40.726757812499955],[26.331054687500057,40.954492187499994],[26.330664062499977,41.23876953125],[26.62490234375008,41.401757812499994],[26.581347656250074,41.60126953125004],[26.320898437500034,41.716552734375],[26.3603515625,41.80156249999999],[26.51142578125004,41.82636718749998],[26.549707031250023,41.896728515625],[26.5796875,41.947949218749955],[26.615332031250063,41.964892578125045],[26.884863281250006,41.99184570312502],[26.96875,42.02685546875006],[27.01171875,42.05864257812496],[27.193359375000057,42.07709960937498],[27.24433593750004,42.09326171875],[27.294921875000057,42.079541015624955],[27.47480468750001,41.946875]]]]},"properties":{"name":"Turkey","childNum":3}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[39.71132812499999,-7.977441406250023],[39.602929687499994,-7.936132812499949],[39.907128906249994,-7.649218750000031],[39.71132812499999,-7.977441406250023]]],[[[39.49648437499999,-6.174609375],[39.573046875000074,-6.387402343750011],[39.48095703124997,-6.45371093750002],[39.18232421875004,-6.172558593750026],[39.30898437499999,-5.721972656249974],[39.49648437499999,-6.174609375]]],[[[39.86503906250002,-4.906152343750037],[39.74931640625002,-5.443847656249986],[39.646777343750074,-5.368554687500009],[39.6734375,-4.927050781250031],[39.86503906250002,-4.906152343750037]]],[[[33.90322265625005,-1.002050781250034],[37.643847656250074,-3.045410156250028],[37.608203125000074,-3.497070312500028],[39.221777343750006,-4.692382812500014],[38.80468750000003,-6.070117187500031],[38.87402343750003,-6.33125],[39.5460937500001,-7.024023437500034],[39.288476562499994,-7.517871093750003],[39.28701171875005,-7.787695312500006],[39.4284179687501,-7.81279296874996],[39.441015625,-8.011523437499946],[39.304003906250074,-8.44384765625],[39.451269531250006,-8.94296875],[39.64130859375004,-9.19248046875002],[39.72519531250006,-10.000488281249972],[40.46357421875004,-10.464355468749972],[39.98867187499999,-10.820800781250014],[39.81708984375004,-10.912402343750031],[38.9875,-11.167285156250003],[38.49179687500006,-11.413281250000026],[37.92021484375002,-11.294726562500031],[37.72480468750004,-11.58066406250002],[37.54169921875004,-11.675097656249974],[37.37285156250002,-11.710449218749986],[36.97890625000005,-11.566992187499977],[36.30566406250003,-11.706347656249946],[36.191308593749994,-11.670703124999974],[36.17548828125004,-11.60927734374998],[36.08222656250004,-11.537304687499969],[35.91132812500004,-11.45468750000002],[35.785449218750074,-11.452929687500017],[35.63095703125006,-11.582031250000028],[35.564355468749994,-11.602343749999989],[35.418261718750074,-11.583203125],[35.18261718750003,-11.574804687499977],[34.95947265625003,-11.578125],[34.93701171874997,-11.463476562500034],[34.890625,-11.3935546875],[34.77382812500005,-11.341699218750009],[34.60791015624997,-11.08046875],[34.66708984375006,-10.792480468750028],[34.56992187500006,-10.241113281249966],[34.32089843750006,-9.731542968749977],[33.99560546875003,-9.495410156250003],[33.88886718750004,-9.670117187499983],[32.91992187500003,-9.407421875000026],[32.75664062500002,-9.322265625],[31.94257812500004,-9.05400390624996],[31.91865234375004,-8.942187500000017],[31.886132812499994,-8.921972656249977],[31.81806640625004,-8.902246093749952],[31.673632812500017,-8.908789062499963],[31.55625,-8.80546875],[31.44921874999997,-8.65390625],[31.35058593750003,-8.607031250000034],[31.07636718750004,-8.611914062499963],[30.968359375000063,-8.550976562499983],[30.89199218750005,-8.473730468749963],[30.830664062500063,-8.385546875000031],[30.720898437500097,-8.104394531250037],[30.40673828125003,-7.460644531249983],[30.313183593750097,-7.203710937499949],[30.212695312500017,-7.037890625000017],[30.10625,-6.915039062500028],[29.961816406249994,-6.803125],[29.798144531250017,-6.691894531249957],[29.70966796875004,-6.61689453125004],[29.590625,-6.394433593750023],[29.540820312500017,-6.313867187500037],[29.50625,-6.172070312500011],[29.480078125,-6.025],[29.490820312500063,-5.96542968750002],[29.59638671875004,-5.775976562499963],[29.60703125,-5.722656250000028],[29.59414062500005,-5.650781250000037],[29.542382812499994,-5.499804687500017],[29.34277343749997,-4.983105468749997],[29.32343750000004,-4.898828124999966],[29.32568359374997,-4.835644531249969],[29.404199218749994,-4.49667968750002],[29.40322265625005,-4.449316406249963],[29.71777343750003,-4.45585937499996],[29.94726562499997,-4.307324218749983],[30.4,-3.65390625],[30.790234375000097,-3.274609375000011],[30.811132812500006,-3.116406250000011],[30.78027343750003,-2.984863281249957],[30.70947265624997,-2.977246093749997],[30.604296875000074,-2.935253906249969],[30.515039062499994,-2.917578125],[30.45556640625003,-2.893164062500006],[30.433496093749994,-2.874511718750028],[30.424023437500097,-2.82402343749996],[30.473339843750097,-2.6943359375],[30.42421875000005,-2.641601562500014],[30.441992187500006,-2.613476562499969],[30.53369140624997,-2.426269531250014],[30.55361328125005,-2.400097656250011],[30.593359375000063,-2.39677734374996],[30.65664062500005,-2.373828124999989],[30.71484375000003,-2.363476562500011],[30.7625,-2.371679687499991],[30.828710937500006,-2.338476562499977],[30.85498046874997,-2.265429687500017],[30.8765625,-2.143359375000017],[30.864648437499994,-2.044042968749949],[30.819140625000017,-1.967480468749983],[30.812597656250006,-1.56308593750002],[30.76220703124997,-1.458691406249983],[30.710742187500074,-1.396777343749974],[30.631933593750006,-1.36748046874996],[30.508105468750074,-1.208203125000026],[30.47021484374997,-1.13115234374996],[30.47705078124997,-1.0830078125],[30.509960937500097,-1.067285156249994],[30.51992187499999,-1.0625],[30.67275390625005,-1.051367187499949],[30.741992187500017,-1.007519531249997],[30.809179687500063,-0.994921875],[30.82363281250005,-0.999023437499943],[30.84472656250003,-1.002050781250034],[32.371875,-1.002050781250034],[33.90322265625005,-1.002050781250034]]]]},"properties":{"name":"Tanzania","childNum":4}},{"geometry":{"type":"Polygon","coordinates":[[[30.50996093750001,-1.067285156250009],[30.46992187500001,-1.066015625],[30.41230468750001,-1.063085937500006],[30.360253906250023,-1.074609375],[29.930078125000023,-1.469921875000011],[29.82539062500001,-1.335546875],[29.576953125000017,-1.387890625000011],[29.717675781250023,0.098339843749997],[29.934472656250023,0.4990234375],[29.94287109375,0.819238281249994],[31.252734375000017,2.044580078124994],[31.176367187500006,2.270068359374989],[30.728613281250006,2.455371093749989],[30.8466796875,2.847021484374991],[30.754003906250006,3.041796874999989],[30.90644531250001,3.408935546875],[30.83857421875001,3.49072265625],[31.15234375,3.785595703124997],[31.547167968750017,3.677587890624991],[31.79804687500001,3.802636718749994],[32.13593750000001,3.519726562499997],[32.33574218750002,3.706201171874994],[32.99726562500001,3.880175781249989],[33.489355468750006,3.755078125],[33.568457031250006,3.81171875],[33.74160156250002,3.985253906249994],[33.97607421875,4.22021484375],[34.13203125000001,3.88916015625],[34.18574218750001,3.869775390624994],[34.1650390625,3.81298828125],[34.26708984375,3.733154296875],[34.39287109375002,3.691503906249991],[34.43769531250001,3.650585937499997],[34.44179687500002,3.60625],[34.3994140625,3.412695312499991],[34.4072265625,3.357519531249991],[34.447851562500006,3.163476562499994],[34.90576171875,2.4796875],[34.88300781250001,2.417919921874997],[34.96406250000001,2.062402343749994],[34.9775390625,1.861914062499991],[34.97646484375002,1.719628906249994],[34.79863281250002,1.24453125],[34.48173828125002,1.042138671874994],[34.41083984375001,0.867285156249991],[34.16093750000002,0.605175781249997],[33.94316406250002,0.173779296874997],[33.90322265625002,-1.002050781250006],[32.371875,-1.002050781250006],[30.8447265625,-1.002050781250006],[30.823632812500023,-0.9990234375],[30.809179687500006,-0.994921875],[30.741992187500017,-1.007519531250011],[30.672753906250023,-1.051367187500006],[30.598730468750006,-1.069726562500009],[30.519921875000023,-1.0625],[30.50996093750001,-1.067285156250009]]]},"properties":{"name":"Uganda","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[32.01220703124997,46.20390624999999],[32.15009765625004,46.1546875],[31.56386718750005,46.25776367187504],[31.50878906250003,46.373144531250006],[32.01220703124997,46.20390624999999]]],[[[38.21435546875003,47.091455078124966],[37.54335937499999,47.07456054687498],[36.794824218749994,46.71440429687499],[36.55878906250004,46.76269531250006],[35.82714843749997,46.62431640625002],[35.01455078125005,46.10600585937502],[35.280175781249994,46.27949218750001],[35.23037109375005,46.440625],[34.84960937500003,46.189892578124955],[35.02285156250005,45.70097656250002],[35.45751953124997,45.316308593749994],[36.170507812500006,45.453076171874955],[36.575,45.3935546875],[36.39335937500002,45.06538085937501],[35.87011718750003,45.005322265624955],[35.472558593749994,45.098486328125006],[35.08769531250002,44.802636718749966],[34.46992187500004,44.7216796875],[33.909960937500074,44.387597656249966],[33.45068359374997,44.553662109374955],[33.55517578125003,45.09765625000003],[32.5080078125001,45.40380859375006],[33.664843750000074,45.94707031249996],[33.59414062500005,46.09624023437499],[33.42988281250004,46.05761718750003],[33.20224609375006,46.17573242187501],[32.47675781250004,46.08369140625001],[31.83125,46.28168945312501],[32.00849609375004,46.42998046875002],[31.554882812500097,46.554296875000034],[32.36132812499997,46.474951171875034],[32.578027343749994,46.615625],[32.04433593750005,46.642480468749966],[31.75917968750005,47.21284179687501],[31.872851562500017,46.649755859375034],[31.532128906249994,46.66474609374998],[31.56337890625005,46.77729492187501],[31.402929687500063,46.62880859375002],[30.796289062499994,46.55200195312503],[30.219042968750074,45.866748046875045],[29.62841796875003,45.722460937500045],[29.705859375000074,45.25991210937505],[29.567675781250074,45.37080078124998],[29.40371093750005,45.419677734375],[29.22353515625005,45.402929687500034],[28.894335937500017,45.28994140625002],[28.78173828125,45.30986328125002],[28.76660156250003,45.28623046874998],[28.78828125000001,45.240966796875],[28.451269531250006,45.292187499999955],[28.317675781250045,45.347119140624955],[28.2125,45.45043945312506],[28.26484375000004,45.48388671875003],[28.310351562500074,45.49858398437499],[28.499023437500057,45.517724609374994],[28.513769531250034,45.57241210937502],[28.49160156250005,45.66577148437503],[28.562304687500074,45.73579101562501],[28.667578125,45.79384765625002],[28.729296875000074,45.852001953124955],[28.73876953125003,45.937158203124994],[28.84951171875005,45.97866210937502],[28.94775390624997,46.049951171874966],[28.971875,46.12763671874998],[29.00625,46.17646484374998],[28.94375,46.28842773437506],[28.930566406250023,46.36225585937501],[28.92744140625001,46.42412109374999],[28.958398437500023,46.45849609374997],[29.146289062500017,46.52690429687496],[29.186230468750068,46.52397460937499],[29.20078125,46.504980468750034],[29.20458984374997,46.37934570312501],[29.223828125000097,46.37695312499997],[29.458789062500017,46.453759765624994],[29.83789062499997,46.35053710937501],[29.878027343750063,46.360205078125034],[30.07568359375003,46.377832031249966],[30.131054687500097,46.42309570312506],[29.92431640624997,46.53886718750002],[29.934765625000097,46.625],[29.942480468750063,46.72377929687502],[29.918066406250063,46.78242187499998],[29.877832031249994,46.828906250000045],[29.57197265625004,46.96401367187502],[29.455664062500006,47.292626953124994],[29.134863281250006,47.48969726562501],[29.125390625000023,47.96455078125001],[28.42304687500001,48.146875],[28.34052734375001,48.144433593749994],[27.54921875000008,48.47773437500004],[27.22851562500003,48.37143554687506],[26.90058593750001,48.37192382812506],[26.847070312500023,48.387158203124955],[26.640429687500045,48.29414062500001],[26.618945312500017,48.25986328125006],[26.4423828125,48.22998046875],[26.162695312500063,47.992529296875034],[25.90869140625,47.96757812500002],[25.689257812500045,47.93247070312506],[25.46425781250005,47.910791015624994],[24.979101562500063,47.72412109374997],[24.578906250000074,47.93105468750005],[23.628710937500017,47.995849609375],[23.40820312500003,47.98999023437506],[23.20263671875,48.084521484375045],[23.13945312499999,48.08740234375],[22.87666015625001,47.94726562500006],[22.769140625000063,48.109619140625],[22.582421875000023,48.134033203125],[22.253710937500017,48.407373046874994],[22.131835937500057,48.40532226562502],[22.142871093750017,48.568505859374966],[22.295214843750045,48.68583984374999],[22.389453125000045,48.87348632812501],[22.52412109375004,49.03139648437502],[22.538671875,49.07270507812501],[22.847070312500023,49.08125],[22.705664062500006,49.17119140624999],[22.6494140625,49.53901367187498],[22.706152343750006,49.60620117187497],[23.03632812500004,49.899072265624966],[23.711718750000045,50.377343749999966],[23.97265625,50.410058593749966],[24.089941406250006,50.53046874999998],[24.0947265625,50.617041015625034],[23.9970703125,50.809375],[24.095800781250063,50.87275390625001],[23.664453125000023,51.31005859375],[23.61376953125,51.525390625],[23.706835937500045,51.64130859374998],[23.79169921875001,51.63710937500002],[23.864257812500057,51.62397460937501],[23.951171875,51.58505859374998],[23.978320312500017,51.59130859375003],[24.12685546875008,51.664648437500034],[24.280078125000017,51.77470703124999],[24.361914062500006,51.86752929687498],[25.785742187500006,51.923828125],[26.77343750000003,51.77070312499998],[26.952832031249983,51.754003906250034],[27.074121093750023,51.760839843750006],[27.14199218750008,51.75205078124998],[27.29628906250008,51.59741210937503],[27.689746093750017,51.572412109374994],[27.7,51.47797851562501],[27.85859375000004,51.59238281250006],[28.532031250000017,51.56245117187501],[28.59902343750008,51.54262695312505],[28.647753906250074,51.45654296875],[28.690234375000017,51.43886718750005],[28.73125,51.43339843749999],[28.84951171875005,51.540185546874994],[28.927539062500045,51.56215820312502],[28.97773437500004,51.57177734375003],[29.01308593750005,51.59892578124996],[29.06074218750001,51.625439453124955],[29.102050781250057,51.627539062500034],[29.346484375000017,51.38256835937503],[30.160742187500006,51.477880859375006],[30.449511718750017,51.274316406249994],[30.63251953125004,51.35541992187501],[30.61171875000005,51.406347656250006],[30.602343750000017,51.47124023437499],[30.56074218750004,51.531494140625],[30.533007812500017,51.596337890624966],[30.583886718749994,51.68896484375003],[30.667285156250017,51.81411132812502],[30.755273437499994,51.89516601562502],[30.84570312500003,51.95307617187501],[30.980664062500097,52.04619140624996],[31.217968750000097,52.05024414062498],[31.345996093750074,52.10537109375002],[31.57373046875003,52.108105468749955],[31.763378906250097,52.10107421875003],[32.12226562500004,52.05058593749996],[32.435449218749994,52.307226562500034],[33.735253906249994,52.344775390625045],[34.397851562499994,51.780419921874994],[34.12109375000003,51.67915039062498],[34.21386718750003,51.25537109375006],[35.0640625,51.203417968750045],[35.31191406250005,51.043896484374955],[35.59111328125002,50.36875],[36.1164062500001,50.408544921875006],[36.619433593750074,50.209228515625],[37.42285156249997,50.411474609375006],[38.046875,49.92001953125006],[38.258593750000074,50.05234375],[38.91835937499999,49.82470703125],[39.17480468750003,49.85595703124997],[39.780566406250074,49.57202148437503],[40.080664062500006,49.576855468749955],[40.10878906250005,49.251562500000034],[39.68652343749997,49.007910156250034],[40.00361328125004,48.82207031250002],[39.792871093749994,48.807714843750034],[39.6447265625001,48.591210937499966],[39.8356445312501,48.54277343749996],[39.95791015625005,48.268896484375034],[39.77871093750005,47.88754882812506],[38.90029296875005,47.85512695312502],[38.36884765625004,47.609960937500006],[38.21435546875003,47.091455078124966]]]]},"properties":{"name":"Ukraine","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[-57.81059570312499,-30.85859375000001],[-57.872509765625,-30.59101562500001],[-57.831201171874994,-30.495214843750006],[-57.71269531249999,-30.38447265625001],[-57.65087890625,-30.295019531250006],[-57.645751953125,-30.226953125],[-57.60888671875,-30.187792968750003],[-57.55229492187499,-30.26123046875],[-57.21445312499999,-30.28339843750001],[-57.186914062499994,-30.26484375000001],[-57.120507812499994,-30.14443359375001],[-56.83271484375,-30.107226562500003],[-56.4072265625,-30.44746093750001],[-55.998974609375,-30.837207031250003],[-56.018457031249994,-30.99189453125001],[-56.00468749999999,-31.079199218750006],[-55.873681640624994,-31.069628906250003],[-55.6271484375,-30.85810546875001],[-55.60302734375,-30.85078125000001],[-55.55732421875,-30.8759765625],[-55.17353515625,-31.279589843750003],[-55.09116210937499,-31.31396484375],[-55.036035156249994,-31.27900390625001],[-54.587646484375,-31.48515625],[-54.22055664062499,-31.85517578125001],[-53.76171875,-32.05683593750001],[-53.601708984374994,-32.40302734375001],[-53.12558593749999,-32.73671875],[-53.2140625,-32.82109375],[-53.31010742187499,-32.92705078125],[-53.39521484375,-33.010351562500006],[-53.482861328125,-33.06855468750001],[-53.511865234374994,-33.10869140625],[-53.53134765624999,-33.1708984375],[-53.53134765624999,-33.65546875000001],[-53.37060546875,-33.7421875],[-53.419580078124994,-33.77919921875001],[-53.47246093749999,-33.84931640625001],[-53.53452148437499,-34.01748046875001],[-53.742919921875,-34.24951171875],[-53.785302734374994,-34.38037109375],[-54.16855468749999,-34.670703125],[-54.902294921875,-34.93281250000001],[-55.67314453124999,-34.77568359375],[-56.249951171875,-34.90126953125001],[-57.17070312499999,-34.45234375000001],[-57.8291015625,-34.47734375],[-58.40019531249999,-33.91240234375],[-58.363525390625,-33.18232421875001],[-58.08232421874999,-32.893652343750006],[-58.12958984375,-32.75722656250001],[-58.16220703124999,-32.566503906250006],[-58.201171875,-32.4716796875],[-58.123046875,-32.321875],[-58.11972656249999,-32.24892578125001],[-58.164794921875,-32.18486328125],[-58.177001953125,-32.11904296875001],[-58.15634765624999,-32.0515625],[-58.160400390625,-31.98652343750001],[-58.18901367187499,-31.92421875],[-58.16748046875,-31.87265625],[-58.04233398437499,-31.76923828125001],[-58.006982421874994,-31.68496093750001],[-58.053857421874994,-31.494921875],[-58.0333984375,-31.416601562500006],[-57.89335937499999,-31.1953125],[-57.868408203125,-31.10439453125001],[-57.88632812499999,-30.93740234375001],[-57.81059570312499,-30.85859375000001]]]},"properties":{"name":"Uruguay","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-155.58134765624996,19.012011718750017],[-155.88129882812495,19.07050781250001],[-156.04868164062498,19.749951171874983],[-155.82031249999997,20.01416015624997],[-155.83164062499998,20.27583007812501],[-155.198779296875,19.99438476562503],[-154.80419921875,19.524462890625045],[-155.58134765624996,19.012011718750017]]],[[[-156.84960937499997,20.772656249999955],[-156.97338867187497,20.757519531249983],[-157.0505859375,20.912451171875034],[-156.88056640624995,20.904833984375074],[-156.84960937499997,20.772656249999955]]],[[[-156.48681640624994,20.93256835937504],[-156.27753906250004,20.951269531250034],[-155.98984374999998,20.75712890624999],[-156.40878906249998,20.60517578125004],[-156.480078125,20.80122070312501],[-156.69775390625003,20.949072265625034],[-156.58540039062495,21.034326171874994],[-156.48681640624994,20.93256835937504]]],[[[-157.21362304687497,21.215380859375017],[-156.71215820312506,21.155078125000074],[-156.85986328125,21.05634765625004],[-157.29033203124996,21.112597656250017],[-157.21362304687497,21.215380859375017]]],[[[-157.79936523437502,21.456640625000034],[-157.63540039062502,21.30761718749997],[-158.11035156249994,21.318603515625],[-158.27314453125,21.585253906250045],[-157.9625,21.701367187499983],[-157.79936523437502,21.456640625000034]]],[[[-159.37275390625,21.93237304687497],[-159.60883789062495,21.909521484375034],[-159.78916015625003,22.041796875000074],[-159.57919921874998,22.22314453124997],[-159.35205078124997,22.219580078125034],[-159.37275390625,21.93237304687497]]],[[[-81.04418945312503,24.716796875000057],[-81.137353515625,24.710498046875017],[-80.93046875,24.75947265625004],[-81.04418945312503,24.716796875000057]]],[[[-80.3818359375,25.142285156249955],[-80.58056640624997,24.954248046875023],[-80.25708007812497,25.34760742187504],[-80.3818359375,25.142285156249955]]],[[[-97.17070312499996,26.159375],[-97.40209960937494,26.820507812499983],[-97.38598632812494,27.19648437500004],[-97.17070312499996,26.159375]]],[[[-80.18676757812497,27.278417968750034],[-80.17050781250003,27.20478515625004],[-80.43691406249994,27.850537109374955],[-80.18676757812497,27.278417968750034]]],[[[-91.793701171875,29.50073242187497],[-92.00664062499996,29.61030273437501],[-91.875244140625,29.640966796875034],[-91.793701171875,29.50073242187497]]],[[[-84.90791015624998,29.642626953125017],[-85.11674804687499,29.63281249999997],[-84.737158203125,29.732421875],[-84.90791015624998,29.642626953125017]]],[[[-89.22397460937498,30.084082031249977],[-89.34199218749995,30.062841796875006],[-89.18466796874995,30.168652343749983],[-89.22397460937498,30.084082031249977]]],[[[-118.34794921875002,33.3857421875],[-118.29746093750003,33.312109375],[-118.44628906249997,33.317089843749955],[-118.56943359375002,33.46416015624999],[-118.34794921875002,33.3857421875]]],[[[-120.04355468749995,33.918847656249994],[-120.25190429687494,34.01386718749998],[-120.07182617187493,34.026513671874966],[-120.04355468749995,33.918847656249994]]],[[[-119.88237304687497,34.07968749999998],[-119.54926757812497,34.02817382812506],[-119.80957031249997,33.9677734375],[-119.88237304687497,34.07968749999998]]],[[[-75.54414062499995,35.240087890625034],[-75.69008789062502,35.221582031249994],[-75.53637695312497,35.27861328124999],[-75.50351562500003,35.769140625],[-75.46474609374994,35.448632812499966],[-75.54414062499995,35.240087890625034]]],[[[-74.13320312500002,39.680761718750034],[-74.25048828125,39.529394531250006],[-74.10673828124996,39.74643554687498],[-74.13320312500002,39.680761718750034]]],[[[-72.50976562500003,40.98603515625001],[-72.58085937499996,40.92133789062498],[-71.90322265625,41.06069335937505],[-73.19428710937495,40.654199218749994],[-74.01489257812497,40.581201171874966],[-73.87924804687498,40.79165039062502],[-73.573828125,40.91962890624998],[-72.62509765624998,40.99184570312505],[-72.27412109374998,41.15302734375001],[-72.50976562500003,40.98603515625001]]],[[[-69.9779296875,41.26557617187504],[-70.23305664062502,41.28632812500001],[-70.04121093750001,41.3974609375],[-69.9779296875,41.26557617187504]]],[[[-70.50991210937502,41.376318359375034],[-70.82919921874995,41.35898437500006],[-70.61601562499996,41.45722656250001],[-70.50991210937502,41.376318359375034]]],[[[-71.24140625000001,41.49194335937497],[-71.34624023437496,41.469384765624994],[-71.23203124999995,41.654296875],[-71.24140625000001,41.49194335937497]]],[[[-68.18725585937497,44.33247070312501],[-68.41171875000003,44.294335937499966],[-68.29941406249998,44.456494140624955],[-68.18725585937497,44.33247070312501]]],[[[-122.394140625,47.39526367187503],[-122.50991210937497,47.358007812500006],[-122.486474609375,47.48876953125],[-122.394140625,47.39526367187503]]],[[[-122.57275390624999,48.15664062499999],[-122.38315429687499,47.923193359375034],[-122.74150390624999,48.22529296875004],[-122.62861328125,48.38422851562498],[-122.54243164062503,48.29399414062499],[-122.69702148437499,48.228662109374994],[-122.57275390624999,48.15664062499999]]],[[[-94.80346679687497,49.0029296875],[-94.71279296874997,48.863427734374994],[-94.62089843749999,48.74262695312501],[-93.85161132812496,48.607275390625034],[-93.70771484374995,48.52543945312499],[-93.37788085937498,48.61655273437498],[-93.25795898437497,48.62885742187501],[-92.83671875,48.567773437499994],[-92.50058593749995,48.43535156250002],[-92.41459960937493,48.276611328125],[-92.3484375,48.276611328125],[-92.00517578125002,48.301855468750006],[-91.38720703124997,48.05854492187498],[-91.04345703125003,48.19370117187498],[-90.84033203125003,48.20053710937506],[-90.79731445312495,48.13105468750001],[-89.4556640625,47.996240234374994],[-88.37817382812497,48.30307617187498],[-87.74389648437497,48.06054687500003],[-87.20800781249997,47.848486328125006],[-86.67216796874996,47.636425781249955],[-85.65224609375,47.21997070312503],[-85.07006835937497,46.97993164062498],[-84.87597656249994,46.89990234375003],[-84.66577148437503,46.54326171875002],[-84.44047851562496,46.49814453125006],[-84.12319335937497,46.50292968749997],[-83.97778320312503,46.08491210937498],[-83.61596679687503,46.116845703124994],[-83.46948242187503,45.99467773437499],[-83.59267578125,45.81713867187506],[-82.91933593749994,45.51796875000002],[-82.55107421874996,45.34736328125001],[-82.48505859374993,45.08374023437503],[-82.137841796875,43.570898437500034],[-82.19038085937495,43.47407226562501],[-82.54531249999997,42.62470703124998],[-83.10952148437497,42.25068359375001],[-83.141943359375,41.97587890624996],[-82.69003906249995,41.675195312499994],[-82.43906249999998,41.67485351562502],[-81.97416992187496,41.88872070312499],[-81.50732421874997,42.10346679687504],[-81.02822265624997,42.247167968750006],[-80.24755859375,42.36601562499996],[-79.17373046875,42.74853515625],[-78.91508789062496,42.90913085937504],[-78.98076171874993,42.98061523437502],[-79.02617187499996,43.01733398437506],[-79.066064453125,43.10610351562502],[-79.171875,43.466552734375],[-79.00249023437502,43.52714843749999],[-78.845556640625,43.58334960937498],[-78.72041015625001,43.62495117187501],[-78.45825195312497,43.63149414062502],[-77.596533203125,43.62861328124998],[-76.819970703125,43.62880859375002],[-76.18579101562503,44.24223632812502],[-75.81933593749997,44.468017578125],[-75.40126953124997,44.77226562499999],[-74.99614257812496,44.970117187499966],[-74.76245117187494,44.99907226562502],[-74.663232421875,45.00390625000003],[-71.51752929687495,45.00756835937497],[-71.327294921875,45.29008789062496],[-70.86503906249999,45.27070312500001],[-70.296240234375,45.90610351562506],[-70.00771484375002,46.70893554687501],[-69.24287109374998,47.46298828124998],[-69.0501953125,47.426611328125034],[-68.93720703124998,47.21123046875002],[-68.23549804687502,47.34594726562503],[-67.806787109375,47.08281249999999],[-67.80224609374994,45.7275390625],[-67.43266601562496,45.603125],[-67.366943359375,45.17377929687498],[-67.12485351562498,45.16943359375],[-66.98701171874995,44.82768554687502],[-67.191259765625,44.67558593750002],[-67.83906249999998,44.576269531250034],[-68.056640625,44.38432617187502],[-68.15205078124998,44.50200195312499],[-68.45058593749997,44.50761718749999],[-68.53251953124996,44.25864257812498],[-68.81191406249994,44.33935546875],[-68.76269531249994,44.57075195312498],[-69.22607421875003,43.98647460937505],[-69.52075195312503,43.89736328125002],[-69.55668945312496,43.982763671875006],[-69.62392578125,43.88061523437497],[-69.65288085937493,43.99389648437506],[-69.808349609375,43.772314453125034],[-69.965234375,43.855078125],[-70.17880859374998,43.76635742187506],[-70.73310546875001,43.07001953125004],[-70.82905273437493,42.82534179687502],[-70.61293945312497,42.623242187499955],[-71.04619140624993,42.331103515625045],[-70.73828125,42.228857421875006],[-70.42666015625002,41.75727539062501],[-70.00141601562498,41.82617187500003],[-70.24106445312495,42.09121093750002],[-70.10893554687496,42.07832031249998],[-69.97788085937498,41.961279296875006],[-69.94863281249997,41.67714843750005],[-70.65712890625,41.53422851562496],[-70.70112304687498,41.71484375],[-71.1685546875,41.489404296874994],[-71.14873046874996,41.74570312499998],[-71.27109375,41.68125],[-71.39013671875003,41.79531250000005],[-71.52285156249997,41.378955078125045],[-72.92470703125002,41.28515625000003],[-73.98710937499999,40.751367187499994],[-73.87197265625,41.05517578124997],[-73.96992187499995,41.24970703125001],[-73.92719726562495,40.914257812499955],[-74.26420898437496,40.52861328124999],[-73.972265625,40.40034179687498],[-74.079931640625,39.78813476562496],[-74.06459960937497,39.99311523437498],[-74.79448242187499,39.00190429687501],[-74.95429687499995,38.949951171875],[-74.89702148437502,39.14545898437504],[-75.52421874999999,39.49018554687501],[-75.421875,39.78969726562502],[-75.07416992187495,39.98349609375006],[-75.40063476562503,39.83159179687502],[-75.58759765625001,39.64077148437505],[-75.3921875,39.09277343750006],[-75.08867187499999,38.777539062499955],[-75.18710937499995,38.59111328124999],[-75.03876953124993,38.426367187500006],[-75.934375,37.15190429687496],[-75.97504882812498,37.3984375],[-75.65927734374995,37.953955078125034],[-75.850830078125,37.971582031249994],[-75.85869140624999,38.36206054687503],[-76.05122070312495,38.27954101562503],[-76.2646484375,38.436425781249994],[-76.26416015625,38.599951171875006],[-76.016943359375,38.62509765624998],[-76.21298828124998,38.75830078125003],[-76.34116210937498,38.70966796874998],[-76.16816406249998,38.85273437499998],[-76.32958984375,38.95278320312505],[-76.13520507812493,39.082128906250006],[-76.23569335937498,39.19160156250001],[-76.153125,39.315039062500034],[-75.87597656249997,39.3759765625],[-76.003125,39.41083984375001],[-75.87294921874997,39.510888671874966],[-75.95893554687498,39.58505859374998],[-76.2763671875,39.32275390625],[-76.330810546875,39.40390625],[-76.42089843749997,39.225],[-76.57041015624995,39.26933593749996],[-76.42758789062498,39.12602539062499],[-76.55854492187493,39.065234375000045],[-76.39409179687502,38.368994140625034],[-76.67734374999998,38.611962890624966],[-76.66855468749998,38.5375],[-76.34116210937498,38.08701171875006],[-76.86811523437495,38.39028320312502],[-76.88974609375,38.292089843750006],[-77.00117187499995,38.44526367187504],[-77.23251953125,38.40771484375003],[-77.03037109374995,38.88925781249998],[-77.26040039062502,38.6],[-77.27324218749996,38.35175781249998],[-77.04677734375002,38.356689453125],[-76.26425781250003,37.89355468749997],[-76.34414062499997,37.675683593749994],[-76.49248046874999,37.682226562500006],[-77.11108398437497,38.165673828124994],[-76.54946289062494,37.66914062500001],[-76.30556640625,37.57148437500001],[-76.26347656249996,37.35703125],[-76.40097656249998,37.386132812499994],[-76.45390624999993,37.27353515625006],[-76.75771484375002,37.50541992187496],[-76.28330078125,37.05268554687501],[-76.40087890624997,36.991308593750034],[-76.63090820312493,37.22172851562499],[-77.25087890624994,37.329199218750034],[-76.671875,37.172949218750006],[-76.48784179687502,36.89702148437499],[-75.99941406249997,36.91264648437499],[-75.53417968749997,35.81909179687506],[-75.94648437499995,36.65908203125002],[-75.99277343749995,36.47377929687502],[-75.82006835937494,36.11284179687502],[-76.14785156250002,36.279296875],[-76.15,36.14575195312497],[-76.27060546874998,36.18989257812501],[-76.22739257812498,36.11601562499996],[-76.559375,36.015332031249955],[-76.733642578125,36.229150390624994],[-76.726220703125,35.957617187500034],[-76.06977539062501,35.970312500000034],[-76.08359374999998,35.69052734375006],[-75.85390625,35.96015625000001],[-75.75883789062499,35.84326171875],[-75.77392578124997,35.64697265624997],[-76.17382812499997,35.354150390624994],[-76.489501953125,35.397021484375045],[-76.57719726562502,35.53232421874998],[-76.74140624999998,35.431494140625034],[-77.03999023437495,35.527392578125045],[-76.51293945312497,35.270410156249994],[-76.77915039062503,34.990332031250034],[-77.07026367187501,35.154638671875034],[-76.97495117187503,35.025195312500045],[-76.74497070312498,34.94096679687502],[-76.45673828124998,34.989355468750034],[-76.36220703125,34.9365234375],[-76.43979492187498,34.84291992187502],[-77.29624023437503,34.602929687499994],[-77.41225585937497,34.730810546875034],[-77.37978515625,34.526611328125],[-77.750732421875,34.28496093749996],[-77.92783203125,33.93974609374999],[-77.95327148437494,34.16899414062496],[-78.01333007812502,33.91181640624998],[-78.40585937499995,33.91757812499998],[-78.84145507812497,33.72407226562501],[-79.19379882812498,33.24414062500003],[-79.22646484375,33.40488281249998],[-79.27602539062497,33.135400390624966],[-79.80498046874999,32.78740234374996],[-79.93310546874997,32.81005859375006],[-79.94072265625002,32.667138671874966],[-80.36284179687496,32.500732421875],[-80.6341796875,32.51171875000003],[-80.474267578125,32.42275390625002],[-80.579345703125,32.28730468750004],[-80.80253906249999,32.44804687500002],[-80.69423828124997,32.21572265625002],[-81.11328124999997,31.87861328125001],[-81.06611328124995,31.787988281250023],[-81.259375,31.538916015624977],[-81.17543945312494,31.531298828125017],[-81.38095703124998,31.353271484375],[-81.28847656249997,31.263916015625],[-81.441748046875,31.19970703124997],[-81.5162109375,30.801806640625017],[-81.24951171875003,29.793798828125006],[-80.52412109374995,28.48608398437503],[-80.5849609375,28.271582031250034],[-80.456884765625,27.90068359374996],[-80.61000976562494,28.177587890624977],[-80.60693359375003,28.522900390624983],[-80.693505859375,28.34497070312497],[-80.68847656250003,28.578515625000023],[-80.83818359374999,28.757666015625034],[-80.74863281250003,28.381005859375023],[-80.050048828125,26.807714843750063],[-80.1263671875,25.83349609375],[-80.48466796874999,25.229833984375034],[-81.11049804687494,25.138037109374977],[-81.13603515624999,25.309667968750034],[-80.94042968750003,25.264208984375017],[-81.11333007812499,25.367236328125045],[-81.36494140625001,25.83105468750003],[-81.715478515625,25.98315429687503],[-81.95893554687495,26.489941406249983],[-81.82866210937496,26.68706054687499],[-82.03959960937496,26.552050781250017],[-82.01328125,26.96157226562505],[-82.24287109374998,26.848876953125],[-82.44135742187501,27.059667968750034],[-82.71459960937497,27.499609375000063],[-82.40576171874994,27.862890624999977],[-82.67519531249994,27.963769531250023],[-82.61098632812502,27.77724609375005],[-82.74287109374995,27.709375],[-82.84350585937494,27.845996093750017],[-82.65146484375,28.8875],[-83.69438476562502,29.92597656250001],[-84.04423828124996,30.10380859374999],[-84.30966796874995,30.064746093750045],[-84.38281250000003,29.90737304687505],[-85.31894531249995,29.680224609375045],[-85.413818359375,29.76757812499997],[-85.413818359375,29.842480468749955],[-85.31489257812493,29.758105468750017],[-85.35361328125,29.875732421875],[-85.67578125,30.121923828125063],[-85.60351562500003,30.286767578124966],[-85.75581054687495,30.1669921875],[-86.454443359375,30.39912109375004],[-86.12382812499999,30.40581054687499],[-86.25737304687502,30.493017578124977],[-87.201171875,30.339257812499994],[-86.98579101562498,30.43085937500001],[-86.99755859375,30.5703125],[-87.17060546874998,30.538769531249983],[-87.28105468750002,30.339257812499994],[-87.47578124999998,30.294287109375006],[-87.44829101562499,30.394140625],[-87.62226562499998,30.264746093750006],[-88.00595703124998,30.230908203124955],[-87.79028320312503,30.291796875000017],[-88.011328125,30.694189453125006],[-88.13544921874998,30.366601562499994],[-88.90522460937495,30.415136718750006],[-89.32055664062503,30.3453125],[-89.58847656249998,30.165966796874955],[-90.12597656249997,30.369091796874955],[-90.33198242187493,30.277587890625057],[-90.41303710937501,30.140332031249983],[-90.17534179687499,30.02910156249996],[-89.73745117187497,30.171972656250034],[-89.66503906249994,30.117041015625034],[-89.81518554687497,30.007275390624955],[-89.631689453125,29.90380859375003],[-89.400732421875,30.04604492187505],[-89.35444335937501,29.82021484375005],[-89.72089843749995,29.619287109374966],[-89.01572265625,29.202880859375057],[-89.15551757812497,29.01660156250003],[-89.23608398437494,29.081103515625017],[-89.37612304687497,28.981347656250023],[-89.44316406249996,29.194140625000045],[-90.15908203124997,29.537158203125017],[-90.05278320312499,29.336816406249966],[-90.21279296875,29.104931640624983],[-90.37919921874996,29.29511718750001],[-90.75102539062496,29.13085937500003],[-91.29013671875,29.288964843749994],[-91.15078124999994,29.317919921875045],[-91.24882812499993,29.56420898437503],[-91.51420898437499,29.55537109375001],[-91.8931640625,29.836035156249977],[-92.135498046875,29.699462890625057],[-92.08403320312499,29.59282226562499],[-92.26083984374995,29.55683593750004],[-93.17568359375,29.778955078124994],[-93.82646484374999,29.725146484375045],[-93.84145507812502,29.97973632812503],[-93.89047851562495,29.689355468750023],[-94.759619140625,29.384277343750057],[-94.52626953125,29.547949218750006],[-94.77827148437498,29.54785156249997],[-94.74194335937497,29.75],[-95.0228515625,29.70234375000001],[-94.88828125000003,29.37055664062501],[-95.27348632812499,28.96386718750003],[-96.23452148437502,28.488964843749983],[-96.01103515624996,28.631933593749977],[-96.44873046874997,28.594482421875],[-96.64003906249994,28.708789062500017],[-96.42109374999993,28.457324218750045],[-96.67636718749998,28.34130859375003],[-96.77353515624998,28.421630859375057],[-96.839501953125,28.194384765625017],[-97.156494140625,28.144335937500045],[-97.141259765625,28.060742187499983],[-97.034326171875,28.093847656250063],[-97.07309570312498,27.98608398437503],[-97.43149414062498,27.83720703124999],[-97.28872070312494,27.670605468749983],[-97.43911132812502,27.328271484374966],[-97.76845703124997,27.45751953125],[-97.69238281250003,27.287158203125017],[-97.48510742187497,27.237402343750006],[-97.55468749999994,26.96733398437496],[-97.43505859375,26.48583984375003],[-97.14624023437494,25.961474609375045],[-97.37563476562497,25.871826171875],[-99.10776367187498,26.446923828124994],[-99.45654296874999,27.05668945312496],[-99.50532226562497,27.54833984375003],[-100.29604492187495,28.32768554687499],[-100.75458984375001,29.182519531249994],[-101.44038085937503,29.77685546875],[-102.26894531249998,29.871191406250034],[-102.61494140624994,29.75234375],[-102.8919921875,29.216406250000034],[-103.16831054687498,28.998193359374994],[-104.110595703125,29.386132812499994],[-104.50400390624995,29.677685546874955],[-104.97880859374996,30.645947265624955],[-106.14804687499995,31.450927734375],[-106.44541015624996,31.768408203125006],[-108.21181640625002,31.779345703125017],[-108.21445312499993,31.329443359375034],[-111.0419921875,31.32421875000003],[-114.83593749999994,32.50830078125003],[-114.72475585937495,32.71533203125003],[-117.12827148437495,32.533349609374994],[-117.46743164062495,33.295507812500006],[-118.08051757812497,33.72216796874997],[-118.41044921874996,33.74394531249996],[-118.506201171875,34.01738281249999],[-119.14375,34.11201171874998],[-119.60605468749999,34.41801757812499],[-120.48120117187503,34.47163085937498],[-120.64467773437502,34.57998046875002],[-120.65908203124994,35.122412109375034],[-120.85737304687501,35.209667968749955],[-120.899609375,35.42509765624999],[-121.28383789062494,35.67631835937499],[-121.87739257812498,36.33105468749997],[-121.80742187499995,36.851220703124994],[-122.394921875,37.20751953125003],[-122.49921875000001,37.542626953124994],[-122.44560546875002,37.797998046874966],[-122.07050781249998,37.47827148437503],[-122.38544921875001,37.960595703124966],[-122.31425781249999,38.00732421874997],[-121.52534179687503,38.05590820312503],[-122.39335937499995,38.14482421875002],[-122.52133789062499,37.82641601562497],[-122.93198242187498,38.05546875000002],[-122.998779296875,37.98862304687498],[-122.90815429687501,38.19658203124999],[-123.701123046875,38.90727539062502],[-123.83291015624994,39.775488281250034],[-124.35654296875003,40.37109374999997],[-124.07192382812497,41.45952148437502],[-124.53964843750003,42.812890624999966],[-124.14873046874997,43.691748046875034],[-123.92934570312495,45.57695312499996],[-123.989306640625,46.21938476562502],[-123.22060546874998,46.153613281250045],[-123.46484375,46.27109374999998],[-124.07275390624996,46.279443359374994],[-124.04433593750002,46.605078125],[-123.946142578125,46.43256835937501],[-123.88916015625003,46.660009765625006],[-124.11254882812497,46.862695312499994],[-123.84287109375002,46.963183593750045],[-124.11171875,47.03520507812496],[-124.1392578125,46.95468749999998],[-124.376025390625,47.658642578124955],[-124.66308593749996,47.97412109375003],[-124.7099609375,48.38037109375],[-123.97578125,48.16845703125],[-122.97387695312499,48.07329101562496],[-122.77861328125,48.13759765625002],[-122.65664062500002,47.88115234374999],[-122.77841796874996,47.738427734374966],[-122.82138671875,47.79316406250001],[-123.1390625,47.386083984375034],[-122.92216796874993,47.40766601562498],[-123.066796875,47.39965820312506],[-123.04863281249995,47.479345703125034],[-122.53281250000002,47.919726562500045],[-122.67548828124995,47.612353515625045],[-122.57788085937496,47.29316406250001],[-122.76777343750001,47.21835937500006],[-122.82846679687503,47.336572265624994],[-123.02758789062501,47.13891601562503],[-122.70195312500002,47.11088867187502],[-122.35380859374996,47.37158203125],[-122.40180664062497,47.78427734374998],[-122.24199218750002,48.01074218750003],[-122.5169921875,48.15966796874997],[-122.40854492187502,48.29389648437498],[-122.66899414062496,48.465234374999966],[-122.49677734374995,48.50556640625001],[-122.51274414062502,48.66943359375],[-122.56201171875001,48.777978515624994],[-122.68593749999995,48.794287109375034],[-122.72246093750002,48.85302734375003],[-122.78876953125003,48.993017578125034],[-121.40722656249994,48.993017578125034],[-119.70170898437495,48.993017578125034],[-119.27534179687494,48.99306640625005],[-118.84892578124993,48.99306640625005],[-117.99619140625002,48.99306640625005],[-116.71704101562501,48.99306640625005],[-110.74765625,48.99306640625005],[-104.77832031249997,48.993115234374955],[-98.80898437499995,48.99316406249997],[-97.52983398437493,48.99316406249997],[-96.67705078124993,48.99316406249997],[-96.25068359374993,48.99316406249997],[-95.39790039062493,48.99316406249997],[-95.16206054687493,48.991748046875045],[-95.15527343749997,49.36967773437502],[-94.85434570312495,49.304589843749994],[-94.86040039062493,49.258593750000045],[-94.80346679687497,49.0029296875]]],[[[-176.28671874999998,51.79199218750006],[-176.34965820312502,51.733300781249994],[-176.41372070312502,51.840576171875],[-176.28671874999998,51.79199218750006]]],[[[-177.87905273437502,51.64970703125002],[-178.05888671875,51.67260742187497],[-177.98637695312493,51.76425781249998],[-178.16826171874996,51.90302734375001],[-177.644482421875,51.826269531250006],[-177.87905273437502,51.64970703125002]]],[[[-177.14819335937497,51.71674804687498],[-177.67021484375002,51.701074218749994],[-177.11005859375,51.92875976562502],[-177.14819335937497,51.71674804687498]]],[[[-176.593310546875,51.86669921875],[-176.45234374999995,51.735693359375034],[-176.96162109374998,51.60366210937505],[-176.69833984374998,51.986035156249955],[-176.593310546875,51.86669921875]]],[[[179.72773437500015,51.905419921874966],[179.50390625000003,51.97958984374998],[179.6271484375001,52.03041992187502],[179.72773437500015,51.905419921874966]]],[[[177.4154296875,51.88281249999997],[177.25029296875013,51.902929687500006],[177.6696289062501,52.10302734375],[177.4154296875,51.88281249999997]]],[[[-173.5533203125,52.13627929687502],[-173.02290039062504,52.07915039062502],[-173.83579101562498,52.048193359375006],[-173.99248046874993,52.12333984374996],[-173.5533203125,52.13627929687502]]],[[[-172.464794921875,52.27226562500002],[-172.61982421874998,52.27285156250005],[-172.47041015625,52.38803710937506],[-172.31362304687497,52.32958984375006],[-172.464794921875,52.27226562500002]]],[[[-174.67739257812502,52.035009765625006],[-175.29555664062502,52.022167968749955],[-174.30615234375,52.216162109375034],[-174.43554687499997,52.317236328125034],[-174.168896484375,52.42016601562503],[-174.04560546875,52.36723632812499],[-174.12065429687493,52.13520507812498],[-174.67739257812502,52.035009765625006]]],[[[173.72275390625018,52.35957031250004],[173.40234375000009,52.40478515625],[173.77607421875004,52.49511718750003],[173.72275390625018,52.35957031250004]]],[[[172.81181640625002,53.01298828125002],[173.43603515625003,52.85205078125],[172.93515625000012,52.752099609374966],[172.49482421875004,52.93789062499999],[172.81181640625002,53.01298828125002]]],[[[-167.96435546875003,53.345117187499994],[-169.088916015625,52.83203125],[-168.68984375000002,53.227246093749955],[-168.38041992187496,53.28344726562506],[-168.28769531249998,53.500146484374966],[-167.82807617187495,53.50795898437505],[-167.96435546875003,53.345117187499994]]],[[[-166.61533203124998,53.90092773437499],[-166.37231445312494,53.99897460937498],[-166.230859375,53.93261718750006],[-166.54560546875,53.726464843749966],[-166.354541015625,53.67353515625004],[-166.85097656249997,53.45288085937503],[-167.78085937500003,53.30024414062501],[-167.13608398437503,53.526464843750006],[-167.01572265625003,53.69838867187502],[-166.80898437500002,53.64614257812505],[-166.741259765625,53.71293945312496],[-167.10561523437497,53.813378906249994],[-167.03808593749997,53.9421875],[-166.67329101562498,54.00595703124998],[-166.61533203124998,53.90092773437499]]],[[[-165.841552734375,54.070654296875006],[-166.05664062500003,54.054345703124994],[-166.08774414062498,54.16914062500001],[-165.89287109375,54.20698242187498],[-165.69287109375,54.09990234375002],[-165.841552734375,54.070654296875006]]],[[[-165.56113281249998,54.13671874999997],[-165.55063476562498,54.28452148437498],[-165.40786132812502,54.19682617187496],[-165.56113281249998,54.13671874999997]]],[[[-162.29814453124993,54.847021484375006],[-162.43388671875,54.931542968749994],[-162.26459960937504,54.983496093750006],[-162.29814453124993,54.847021484375006]]],[[[-163.476025390625,54.98071289062497],[-163.37895507812496,54.81552734374998],[-163.083251953125,54.66899414062496],[-163.35810546874995,54.73569335937506],[-164.82343749999998,54.41909179687505],[-164.887646484375,54.60781250000002],[-164.47861328124998,54.906835937500006],[-163.80712890624997,55.04907226562503],[-163.476025390625,54.98071289062497]]],[[[-159.51513671875,55.15185546875003],[-159.617724609375,55.05732421875004],[-159.54506835937497,55.22597656250002],[-159.51513671875,55.15185546875003]]],[[[-131.33974609375002,55.079833984375],[-131.32954101562498,54.887744140625045],[-131.592236328125,55.02568359374999],[-131.5654296875,55.26411132812498],[-131.33974609375002,55.079833984375]]],[[[-159.87299804687495,55.128759765625034],[-160.22705078124997,54.92270507812506],[-160.17207031249995,55.123046875],[-159.88735351562497,55.27299804687502],[-159.87299804687495,55.128759765625034]]],[[[-132.86225585937504,54.894433593749966],[-132.61723632812493,54.892431640625006],[-132.70581054687497,54.684179687500034],[-133.42905273437498,55.30380859374998],[-133.097412109375,55.213720703125006],[-132.86225585937504,54.894433593749966]]],[[[-160.329296875,55.337695312500045],[-160.34331054687493,55.25878906250006],[-160.51748046875,55.33383789062506],[-160.329296875,55.337695312500045]]],[[[-160.68491210937498,55.314794921875006],[-160.552783203125,55.38076171875002],[-160.48754882812503,55.18486328124999],[-160.79506835937497,55.14521484375001],[-160.72392578124993,55.404638671875006],[-160.68491210937498,55.314794921875006]]],[[[-133.30507812500002,55.54375],[-133.6501953125,55.26928710937506],[-133.73710937500002,55.49692382812498],[-133.30507812500002,55.54375]]],[[[-155.56601562500003,55.82119140625005],[-155.73735351562493,55.82978515625001],[-155.59394531250004,55.92431640625],[-155.56601562500003,55.82119140625005]]],[[[-130.97915039062502,55.489160156249994],[-131.187890625,55.206298828125],[-131.44755859374996,55.40878906250006],[-131.7625,55.16582031250002],[-131.84609374999997,55.41625976562497],[-131.62495117187504,55.831689453124966],[-131.26923828125004,55.95537109375002],[-130.997802734375,55.727636718750006],[-130.97915039062502,55.489160156249994]]],[[[-133.56611328125,56.33920898437498],[-133.202978515625,56.31982421875003],[-133.096630859375,56.09003906250001],[-132.59760742187504,55.89501953125],[-132.17270507812498,55.48061523437502],[-132.51127929687493,55.59394531250001],[-132.63129882812495,55.47319335937502],[-132.41787109375002,55.48291015625006],[-132.20668945312497,55.22441406249996],[-131.97641601562498,55.208593750000034],[-132.06474609375002,54.713134765625],[-133.11855468750002,55.32763671875003],[-132.95888671875002,55.39555664062502],[-133.0333984375,55.589697265625034],[-133.68017578124994,55.78515625],[-133.24150390624993,55.920800781249994],[-133.371240234375,56.035888671875],[-133.74252929687498,55.96484375],[-133.530859375,56.145654296874966],[-133.56611328125,56.33920898437498]]],[[[-132.77988281249998,56.24726562499998],[-133.03500976562498,56.34091796875006],[-132.90205078124998,56.45375976562505],[-132.62910156249995,56.411914062500045],[-132.77988281249998,56.24726562499998]]],[[[-132.11235351562493,56.109375],[-132.13295898437497,55.94326171875005],[-132.28730468749995,55.92939453124998],[-132.65991210937503,56.07817382812499],[-132.379833984375,56.49877929687497],[-132.06689453125,56.24423828124998],[-132.11235351562493,56.109375]]],[[[-154.208642578125,56.51489257812497],[-154.32221679687504,56.570605468750045],[-154.11040039062496,56.602929687499966],[-154.208642578125,56.51489257812497]]],[[[-169.755224609375,56.63505859375002],[-169.47431640624998,56.59404296875002],[-169.6326171875,56.545703125000045],[-169.755224609375,56.63505859375002]]],[[[-132.746875,56.525683593750045],[-132.94804687500002,56.56723632812498],[-132.842529296875,56.79477539062506],[-132.56796875000003,56.57583007812505],[-132.746875,56.525683593750045]]],[[[-133.98959960937503,56.84497070312497],[-133.73837890625,56.65043945312496],[-133.94970703125,56.12773437499996],[-134.18959960937502,56.07695312500002],[-134.084375,56.456347656250045],[-134.37368164062502,56.838671875000045],[-134.14326171874998,56.93232421875001],[-133.98959960937503,56.84497070312497]]],[[[-133.36621093750006,57.003515625000034],[-132.99624023437497,56.93041992187497],[-132.95917968749998,56.67705078124996],[-133.03491210937494,56.62075195312505],[-133.32895507812498,56.83007812499997],[-133.158154296875,56.495166015625045],[-133.4841796875,56.45175781249998],[-133.979443359375,57.009570312500045],[-133.36621093750006,57.003515625000034]]],[[[-153.007080078125,57.12485351562498],[-153.37460937499998,57.05190429687505],[-153.285205078125,57.18505859375],[-152.90839843750004,57.152441406250006],[-153.007080078125,57.12485351562498]]],[[[-134.96977539062496,57.351416015625034],[-134.62070312499998,56.71831054687502],[-134.68188476562503,56.216162109375034],[-134.98056640625003,56.518945312499994],[-134.88344726562497,56.679052734375034],[-135.33061523437505,56.821875],[-135.19960937499997,57.02734375],[-135.45493164062503,57.24941406250005],[-135.81230468750002,57.00952148437503],[-135.82275390625,57.280419921874966],[-135.448681640625,57.534375],[-134.96977539062496,57.351416015625034]]],[[[-152.89804687499998,57.82392578125004],[-152.42875976562493,57.82568359375003],[-152.48261718749998,57.70332031249998],[-152.21621093749997,57.577001953125006],[-152.41220703125003,57.454785156249955],[-152.94077148437498,57.49809570312499],[-152.67905273437503,57.345117187499994],[-153.274365234375,57.22636718749996],[-153.732568359375,57.052343750000034],[-153.643310546875,56.960742187500045],[-154.02734375,56.77797851562502],[-153.793212890625,56.98950195312503],[-154.24375,57.143017578124955],[-154.33896484374998,56.9208984375],[-154.67319335937498,57.44609375],[-154.11616210937498,57.651220703125006],[-153.6876953125,57.30512695312504],[-153.841552734375,57.86284179687496],[-153.48793945312497,57.73095703125],[-153.21748046875004,57.79575195312506],[-153.16044921875,57.97197265624999],[-152.85039062499993,57.896777343750045],[-152.89804687499998,57.82392578125004]]],[[[-135.73037109375002,58.244238281250034],[-135.61323242187507,57.99184570312505],[-135.346630859375,58.12412109374998],[-134.9546875,58.01533203125004],[-134.97065429687495,57.817236328125006],[-135.33847656250003,57.768652343750034],[-134.97885742187503,57.724365234375],[-134.93149414062498,57.48115234375001],[-135.564208984375,57.66640625],[-135.691943359375,57.41992187500006],[-135.91079101562502,57.44658203124999],[-136.568603515625,57.97216796875003],[-136.32197265625,58.21889648437502],[-136.14375,58.098486328125006],[-136.09438476562502,58.198144531249966],[-135.73037109375002,58.244238281250034]]],[[[-134.68027343749998,58.16166992187499],[-134.24008789062498,58.143994140624955],[-133.82275390624997,57.62866210937503],[-134.29233398437498,58.044726562500074],[-133.91113281250003,57.3525390625],[-134.51601562499997,57.042578125],[-134.48676757812495,57.48203125],[-134.92348632812497,58.354638671874966],[-134.68027343749998,58.16166992187499]]],[[[-152.416943359375,58.360205078125034],[-151.974365234375,58.30986328124999],[-152.068896484375,58.17792968750001],[-152.26835937499993,58.25170898437506],[-152.30922851562502,58.133886718750034],[-152.5982421875,58.16259765625],[-152.92841796875004,57.99370117187499],[-153.38134765625003,58.08720703125002],[-152.976123046875,58.29702148437505],[-152.771875,58.278564453125],[-152.84111328125002,58.41640625000002],[-152.416943359375,58.360205078125034]]],[[[-152.486083984375,58.485009765624966],[-152.63662109375002,58.54169921874998],[-152.3955078125,58.619384765625],[-152.486083984375,58.485009765624966]]],[[[-160.918994140625,58.57709960937498],[-161.13149414062502,58.668212890625],[-160.71513671875005,58.79521484375002],[-160.918994140625,58.57709960937498]]],[[[-148.02177734375,60.06533203125005],[-148.271875,60.05327148437499],[-148.07958984375003,60.151660156250045],[-148.02177734375,60.06533203125005]]],[[[-147.735888671875,59.81323242187503],[-147.76806640625,59.94375],[-147.180859375,60.358251953125034],[-147.01987304687498,60.33222656249998],[-147.735888671875,59.81323242187503]]],[[[-166.13544921875,60.38354492187503],[-165.72968750000004,60.31420898437503],[-165.591796875,59.913134765625045],[-166.14873046874996,59.764111328124955],[-167.13886718749998,60.00854492187503],[-167.43642578125002,60.20664062500006],[-166.836328125,60.21699218750004],[-166.47568359374998,60.382763671874955],[-166.13544921875,60.38354492187503]]],[[[-146.3939453125,60.44965820312501],[-146.10224609374998,60.41118164062499],[-146.61831054687497,60.27368164062503],[-146.70253906249997,60.40854492187498],[-146.3939453125,60.44965820312501]]],[[[-147.658251953125,60.45048828124999],[-147.787841796875,60.17792968749998],[-147.89145507812498,60.299414062500034],[-147.658251953125,60.45048828124999]]],[[[-172.74223632812496,60.45737304687498],[-172.23208007812494,60.299121093750074],[-172.63574218750003,60.328857421875],[-173.04765625000002,60.56831054687501],[-172.74223632812496,60.45737304687498]]],[[[-171.46303710937494,63.640039062499994],[-171.03486328125,63.58549804687499],[-170.29936523437502,63.68061523437501],[-169.55454101562498,63.373486328124955],[-168.71601562500004,63.310595703125045],[-168.76132812500003,63.21376953125002],[-169.364697265625,63.17114257812506],[-169.67636718750003,62.95610351562502],[-169.81860351562494,63.122363281250045],[-170.84838867187494,63.44438476562502],[-171.63183593749997,63.351220703124966],[-171.74638671874993,63.703076171874955],[-171.46303710937494,63.640039062499994]]],[[[-141.00214843750004,68.77416992187506],[-141.00214843750004,67.89755859374998],[-141.00214843750004,66.43652343750006],[-141.00214843750004,65.55991210937498],[-141.00214843750004,64.09887695312506],[-141.00214843750004,63.22226562499998],[-141.00214843750004,61.761279296875045],[-141.00214843750004,60.884667968749994],[-141.00214843750004,60.30024414062504],[-140.76274414062505,60.259130859375006],[-140.525439453125,60.218359375000034],[-140.45283203125004,60.29970703125002],[-139.97329101562497,60.183154296875074],[-139.67631835937505,60.32832031249998],[-139.23476562499997,60.339746093749994],[-139.07924804687497,60.34370117187501],[-139.07924804687497,60.279443359374966],[-139.136962890625,60.17270507812498],[-139.18515624999998,60.083593750000034],[-138.86875,59.94575195312501],[-138.317626953125,59.611132812500074],[-137.59331054687493,59.22626953124998],[-137.52089843750002,58.91538085937498],[-137.43857421875003,58.903125],[-137.2775390625,58.988183593749994],[-137.126220703125,59.04096679687498],[-136.81328125000002,59.150048828124994],[-136.57875976562502,59.15224609375002],[-136.46635742187493,59.459082031250006],[-136.27797851562502,59.48032226562506],[-136.321826171875,59.604833984375034],[-135.70258789062504,59.72875976562506],[-135.36787109374998,59.743310546874994],[-135.051025390625,59.57866210937502],[-134.94375,59.28828125000001],[-134.67724609374997,59.19926757812499],[-134.39306640625,59.009179687499994],[-134.32963867187505,58.93969726562506],[-134.21850585937503,58.849902343750045],[-133.54638671874997,58.50346679687499],[-133.27529296875,58.22285156250004],[-133.00141601562495,57.948974609375],[-132.55048828125,57.499902343749994],[-132.44248046874998,57.40673828125003],[-132.30166015624997,57.27631835937501],[-132.232177734375,57.19853515624999],[-132.27939453124998,57.14536132812498],[-132.33798828124998,57.07944335937506],[-132.15703125,57.048193359375006],[-132.03154296875,57.02656250000004],[-132.062890625,56.95336914062503],[-132.104296875,56.856787109375006],[-131.86616210937495,56.792822265625006],[-131.82426757812496,56.589990234374994],[-131.471875,56.55673828125006],[-130.649072265625,56.26367187500003],[-130.47709960937496,56.230566406250034],[-130.413134765625,56.12250976562498],[-130.09785156249995,56.10927734375002],[-130.01406249999997,55.950537109375006],[-130.2140625,55.02587890625003],[-130.57534179687497,54.769677734374966],[-130.849609375,54.80761718750006],[-131.04785156249997,55.157666015624955],[-130.74819335937502,55.31801757812502],[-131.127685546875,55.96015625000001],[-131.032763671875,56.08808593749998],[-131.78417968749997,55.876562500000034],[-131.98339843749994,55.535009765625006],[-132.15541992187502,55.59956054687501],[-132.20751953124997,55.75341796875],[-131.84384765625003,56.16010742187498],[-131.55136718749998,56.206787109375],[-131.88789062500004,56.24165039062498],[-132.18203125000002,56.42065429687506],[-132.82460937500002,57.05581054687505],[-133.465869140625,57.17216796875002],[-133.64873046874993,57.64228515624998],[-133.11704101562498,57.56621093750002],[-133.535205078125,57.83295898437501],[-133.1943359375,57.87768554687506],[-133.559375,57.924462890624994],[-133.72231445312502,57.84423828125],[-134.03110351562498,58.072167968749966],[-133.87675781249996,58.51816406249998],[-134.20883789062503,58.232958984375045],[-134.77612304687506,58.45385742187503],[-135.36367187500002,59.41943359375],[-135.50234375000002,59.202294921874994],[-135.090234375,58.245849609375],[-135.57177734374994,58.41206054687504],[-135.89755859374998,58.40019531250002],[-136.04311523437497,58.82163085937498],[-135.82636718750004,58.89794921874997],[-136.0166015625,58.87397460937498],[-136.150048828125,59.04809570312503],[-136.22583007812497,58.765478515625006],[-136.98901367187503,59.03447265624999],[-137.05903320312498,58.87373046875001],[-136.613916015625,58.809277343749955],[-136.48374023437503,58.61767578125],[-136.224609375,58.602246093749955],[-136.06147460937495,58.45273437500006],[-136.607421875,58.24399414062498],[-137.54399414062502,58.58120117187502],[-138.51489257812503,59.16591796875005],[-139.77329101562498,59.52729492187504],[-139.51303710937498,59.698095703125006],[-139.5123046875,59.95356445312501],[-139.28671874999998,59.610937500000034],[-139.22080078125003,59.819873046875045],[-138.9880859375,59.83500976562502],[-139.43144531249996,60.012255859375074],[-140.41982421874997,59.71074218750002],[-141.40830078125,59.90278320312498],[-141.408740234375,60.11767578125006],[-141.67016601562497,59.969873046874966],[-142.94565429687503,60.09697265625002],[-144.14721679687494,60.01640625000002],[-144.185498046875,60.150732421875034],[-144.901318359375,60.335156249999955],[-144.69111328125,60.66909179687502],[-145.248291015625,60.38012695312506],[-145.898876953125,60.47817382812505],[-145.67490234374998,60.65112304687503],[-146.57045898437497,60.72915039062502],[-146.39199218749997,60.810839843750045],[-146.63842773437497,60.89731445312498],[-146.59912109374994,61.05351562500002],[-146.284912109375,61.11264648437498],[-147.89111328125,60.889892578125],[-148.00512695312494,60.96855468750002],[-147.75185546874997,61.218945312499955],[-148.34189453125,61.060400390625006],[-148.34443359374998,60.853564453125045],[-148.55615234374994,60.82700195312506],[-148.25673828124997,60.67529296874997],[-148.64013671875,60.48945312500004],[-148.11918945312502,60.57514648437498],[-147.96411132812494,60.48486328124997],[-148.430712890625,59.98911132812498],[-149.2666015625,59.99829101562497],[-149.395263671875,60.10576171875002],[-149.59804687500002,59.77045898437501],[-149.7138671875,59.91958007812502],[-149.80126953124994,59.737939453124966],[-150.00532226562507,59.78442382812503],[-150.19804687499996,59.56655273437505],[-150.60737304687504,59.56337890625002],[-150.934521484375,59.249121093750034],[-151.18276367187502,59.30078124999997],[-151.73818359375002,59.18852539062502],[-151.94951171875,59.26508789062498],[-151.88461914062503,59.386328125],[-151.39960937499995,59.51630859375001],[-151.04648437499998,59.771826171875034],[-151.45009765624997,59.65039062499997],[-151.85322265625,59.78208007812498],[-151.39599609375006,60.27446289062502],[-151.35644531249997,60.72294921874999],[-150.44125976562503,61.02358398437505],[-149.07509765624997,60.87641601562498],[-150.05327148437496,61.17109374999998],[-149.433544921875,61.50078125000002],[-149.97568359374998,61.27934570312502],[-150.61225585937495,61.301123046875006],[-151.59350585937494,60.979638671874966],[-152.54091796874997,60.265429687500045],[-153.025,60.29565429687497],[-152.660107421875,59.99721679687502],[-153.21123046875002,59.84272460937498],[-153.09360351562503,59.70913085937505],[-153.65253906250004,59.64702148437499],[-154.17832031250003,59.155566406250074],[-153.41826171875,58.9599609375],[-153.43759765625003,58.754833984374955],[-154.289013671875,58.30434570312502],[-154.247021484375,58.15942382812497],[-155.006884765625,58.01606445312501],[-155.77797851562497,57.56821289062498],[-156.43588867187498,57.359960937500006],[-156.62900390624998,57.00996093750001],[-158.41440429687498,56.435839843750045],[-158.5521484375,56.31269531249998],[-158.27563476562497,56.19624023437498],[-158.5046875,56.062109375],[-158.59116210937503,56.18452148437498],[-158.78984375000002,55.98691406250006],[-159.52324218749993,55.81000976562498],[-159.65966796875003,55.625927734374955],[-159.77138671874997,55.84111328125002],[-160.49931640625002,55.53730468750004],[-161.38193359374998,55.371289062499955],[-161.44379882812495,55.513281250000034],[-161.202099609375,55.54355468750006],[-161.51694335937503,55.61840820312503],[-162.073974609375,55.13930664062505],[-162.38637695312497,55.05234375],[-162.63037109375003,55.24667968749998],[-162.67436523437505,54.99658203125],[-162.86503906249996,54.954541015624955],[-163.11962890624997,55.06469726562503],[-163.131103515625,54.916552734375045],[-163.33530273437503,54.83916015624999],[-163.27880859374997,55.12182617187503],[-162.906591796875,55.19555664062503],[-161.69731445312502,55.9072265625],[-161.215625,56.02143554687498],[-160.8986328125,55.99365234375],[-161.00537109375,55.88715820312498],[-160.80283203125003,55.754443359375045],[-160.70634765625002,55.870458984375034],[-160.29169921875,55.80507812500005],[-160.53906250000006,56.00629882812501],[-160.30205078125,56.31411132812502],[-158.91801757812502,56.882177734375006],[-158.675146484375,56.79487304687498],[-158.66079101562502,57.03940429687498],[-158.32094726562497,57.29790039062499],[-157.84575195312496,57.52807617187497],[-157.4619140625,57.506201171875034],[-157.697216796875,57.679443359375],[-157.610888671875,58.050830078125074],[-157.19370117187498,58.19418945312506],[-157.48837890624998,58.25371093750002],[-157.52363281249998,58.421337890624955],[-156.97465820312496,58.736328125],[-156.80888671875005,59.13427734375],[-157.14204101562504,58.87763671875001],[-158.19091796875003,58.6142578125],[-158.50317382812494,58.85034179687497],[-158.42563476562498,58.99931640625002],[-158.080517578125,58.97744140625002],[-158.422802734375,59.08984375],[-158.67827148437502,58.92939453124998],[-158.80947265625002,58.973876953125],[-158.78862304687493,58.440966796875045],[-158.95068359375,58.404541015625],[-159.67026367187498,58.9111328125],[-159.92021484375,58.819873046875074],[-160.36313476562498,59.05117187500002],[-161.246826171875,58.799462890624994],[-161.36132812499994,58.66953124999998],[-162.144921875,58.64423828124998],[-161.724365234375,58.794287109375006],[-161.64438476562498,59.109667968750045],[-161.9810546875,59.14614257812502],[-161.82871093749998,59.588623046875],[-162.421337890625,60.28398437500002],[-161.96201171875003,60.695361328125045],[-162.68496093749997,60.268945312499966],[-162.57075195312495,59.98974609375],[-163.68037109374998,59.80151367187503],[-164.14282226562497,59.89677734374999],[-165.02651367187497,60.500634765624994],[-165.35380859375002,60.54121093750001],[-164.80517578125,60.89204101562498],[-164.31850585937497,60.77128906249999],[-164.37236328125002,60.59184570312502],[-163.999560546875,60.76606445312498],[-163.72998046874997,60.589990234374994],[-163.420947265625,60.757421875],[-163.90654296874996,60.85380859375002],[-163.58691406249994,60.902978515624994],[-163.74902343750003,60.9697265625],[-163.99462890624997,60.86469726562501],[-165.11484375,60.93281250000004],[-164.86899414062503,61.11176757812498],[-165.27978515624994,61.169628906249955],[-165.27363281250004,61.27485351562498],[-165.56586914062498,61.10234375000002],[-165.86396484375004,61.33569335937503],[-165.84531249999998,61.536230468750034],[-166.152734375,61.545947265625074],[-166.16811523437502,61.65083007812501],[-165.80893554687503,61.69609375000002],[-166.07880859375,61.803125],[-165.61279296875003,61.86928710937502],[-165.707275390625,62.10043945312506],[-165.19453125,62.47353515625002],[-164.75786132812493,62.496728515624966],[-164.589453125,62.709375],[-164.79267578125,62.623193359374966],[-164.79965820312503,62.918066406250006],[-164.384228515625,63.03046874999998],[-164.40903320312503,63.21503906250001],[-163.94287109375,63.247216796874994],[-163.61630859374998,63.125146484374994],[-163.73784179687496,63.016406250000045],[-163.504345703125,63.105859374999966],[-163.28784179687494,63.046435546875045],[-162.621484375,63.26582031249998],[-162.28281250000003,63.529199218749994],[-161.97397460937498,63.45292968749999],[-161.09970703125003,63.557910156250045],[-160.778564453125,63.818945312500034],[-160.987548828125,64.25126953125002],[-161.49072265625003,64.43378906249998],[-160.93193359374996,64.5791015625],[-160.855908203125,64.755615234375],[-161.13017578125005,64.92543945312505],[-161.759375,64.816259765625],[-162.80703124999997,64.37421875000001],[-163.20390625,64.65200195312502],[-163.14433593750002,64.423828125],[-163.71308593749998,64.588232421875],[-164.978759765625,64.45366210937502],[-166.1427734375,64.58276367187503],[-166.48139648437498,64.72807617187507],[-166.415234375,64.926513671875],[-166.92841796875,65.15708007812498],[-166.15703125,65.28583984375001],[-167.40400390625,65.42211914062497],[-168.08837890624997,65.65776367187502],[-166.39873046875002,66.14443359375005],[-165.62993164062496,66.131201171875],[-165.77617187500002,66.31904296875001],[-164.46049804687502,66.58842773437499],[-163.63823242187502,66.57465820312504],[-163.89394531249997,66.57587890625001],[-164.03374023437493,66.21552734374995],[-163.69536132812502,66.08383789062503],[-161.93369140625003,66.04287109374997],[-161.45541992187503,66.28139648437497],[-161.03427734375003,66.18881835937503],[-161.12031249999995,66.334326171875],[-161.91689453124997,66.41181640624998],[-162.54365234375004,66.80512695312501],[-162.36162109375,66.94731445312502],[-161.591015625,66.45952148437502],[-160.23168945312503,66.420263671875],[-160.360888671875,66.6125],[-160.864013671875,66.67084960937501],[-161.39804687499998,66.55185546875],[-161.85668945312497,66.70034179687497],[-161.719921875,67.02055664062502],[-163.5318359375,67.10258789062502],[-164.1251953125,67.60673828125007],[-166.786279296875,68.35961914062497],[-166.38051757812502,68.425146484375],[-166.20908203125,68.88535156250003],[-165.04394531249994,68.882470703125],[-163.867919921875,69.03666992187505],[-161.88095703125003,70.33173828125001],[-162.073876953125,70.16196289062498],[-160.9962890625,70.30458984375],[-160.11713867187495,70.59121093750002],[-159.86567382812498,70.27885742187499],[-159.81499023437496,70.49707031250003],[-159.38676757812493,70.52451171875003],[-160.081591796875,70.63486328125003],[-159.680908203125,70.786767578125],[-159.31450195312496,70.87851562500003],[-159.251171875,70.7484375],[-157.909375,70.860107421875],[-156.47021484374994,71.40766601562501],[-156.469970703125,71.29155273437507],[-155.57944335937503,71.12109374999997],[-156.14658203125,70.92783203125003],[-155.97353515625002,70.84199218749995],[-155.16684570312498,71.09921875000006],[-154.19521484375002,70.80112304687498],[-153.23291015625,70.93256835937504],[-152.49121093749994,70.88095703125],[-152.23291015625,70.81035156249999],[-152.39921875,70.62045898437503],[-151.76904296875,70.56015625],[-151.94467773437498,70.45209960937501],[-149.26943359374997,70.50078124999999],[-147.70537109375,70.21723632812495],[-145.82314453124997,70.16005859375002],[-145.19736328125003,70.00869140625002],[-143.218310546875,70.11625976562499],[-142.70786132812498,70.03378906249998],[-141.40791015625,69.65336914062502],[-141.00214843750004,69.65078125000002],[-141.00214843750004,68.77416992187506]]]]},"properties":{"name":"United States","childNum":76}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[71.20615234375006,39.892578125],[71.15625,39.88344726562502],[71.06425781250002,39.88491210937505],[71.01171874999997,39.895117187500006],[71.04365234375004,39.97631835937503],[71.04482421875005,39.992529296875034],[70.96064453125004,40.087988281250034],[71.00546875,40.15229492187498],[71.0241210937501,40.14916992187497],[71.08037109375007,40.07988281249999],[71.2287109375001,40.04814453124999],[71.20615234375006,39.892578125]]],[[[70.94677734374997,42.24868164062505],[70.97900390625003,42.26655273437504],[71.03603515625,42.28466796875],[71.12998046875006,42.25],[71.21269531250002,42.20644531250005],[71.23232421875005,42.18627929687503],[71.22851562499997,42.16289062499996],[70.18095703125007,41.571435546874994],[70.734375,41.400537109374994],[70.86044921875006,41.22490234375002],[71.11074218750005,41.152636718750045],[71.29882812500003,41.152490234374994],[71.39306640625003,41.123388671875034],[71.40839843750004,41.13603515625002],[71.42089843750003,41.341894531250034],[71.60625,41.367431640625],[71.66494140625,41.54121093749998],[71.70068359374997,41.454003906249966],[71.75771484375005,41.42802734375002],[71.79248046875003,41.41313476562499],[71.85800781250006,41.311376953125034],[71.8786132812501,41.195019531249955],[71.95849609375003,41.18706054687502],[72.05244140625004,41.16474609375001],[72.1154296875001,41.18657226562502],[72.1642578125001,41.173730468749966],[72.18095703125002,41.11845703124999],[72.18730468750002,41.02592773437499],[72.2130859375001,41.014257812500006],[72.36406250000002,41.04345703125],[72.65830078125,40.86992187499999],[73.13212890625002,40.82851562499999],[72.6041015625,40.52543945312499],[72.40205078125004,40.578076171874955],[72.3892578125,40.427392578124994],[72.13125,40.438623046874966],[71.69248046875,40.15234375],[71.30468749999997,40.28691406249996],[70.990625,40.2548828125],[70.95800781250003,40.238867187500034],[70.653125,40.201171875],[70.37158203125003,40.38413085937506],[70.75107421875006,40.721777343750006],[70.40195312500006,41.03510742187498],[69.71289062500003,40.65698242187503],[69.35722656250002,40.76738281249996],[69.20625,40.566552734374994],[69.27490234374997,40.19809570312498],[68.63066406250007,40.16708984374998],[68.9720703125,40.08994140624998],[68.80468750000003,40.05034179687499],[68.86875,39.90747070312503],[68.63896484375007,39.8388671875],[68.46328125,39.53671874999998],[67.71904296875007,39.62138671875002],[67.426171875,39.46557617187497],[67.3576171875001,39.216699218749994],[67.64833984375005,39.13105468750004],[67.69443359375006,38.99462890625003],[68.13251953125004,38.927636718749966],[68.08720703125002,38.47353515625002],[68.3502929687501,38.211035156250006],[67.81435546875005,37.48701171875004],[67.7980468750001,37.244970703125006],[67.75898437500004,37.172216796875034],[67.75292968749997,37.199804687500034],[67.7,37.227246093749955],[67.60742187499997,37.22250976562506],[67.5172851562501,37.26665039062499],[67.44169921875007,37.25800781250001],[67.3197265625,37.209570312500006],[67.1955078125001,37.23520507812498],[67.06884765624997,37.334814453125006],[66.82773437500006,37.37128906249998],[66.52226562500007,37.34848632812506],[66.51064453125,37.45869140625004],[66.51132812500006,37.59916992187496],[66.52558593750004,37.785742187500034],[66.60625,37.98671875000005],[65.97119140624997,38.244238281250006],[65.612890625,38.23857421875002],[64.3099609375,38.97729492187497],[63.76367187500003,39.16054687499999],[62.48320312500002,39.97563476562496],[61.90283203124997,41.09370117187501],[61.496972656249994,41.276074218749955],[61.2423828125001,41.18920898437503],[60.454980468749994,41.221630859374955],[60.089648437500074,41.39941406250003],[60.07558593750005,41.759667968749966],[60.20078125000006,41.803125],[59.94179687499999,41.97353515625002],[59.98515625000002,42.21171875],[59.35429687500002,42.32329101562496],[58.5890625000001,42.778466796874966],[58.477148437500006,42.66284179687503],[58.15156250000004,42.628076171874966],[58.474414062500074,42.29936523437496],[58.02890625,42.48764648437506],[57.814257812500074,42.18984375000005],[57.290625,42.123779296875],[56.96406250000004,41.856542968750006],[57.11884765625004,41.35029296874998],[57.01796875,41.26347656249996],[55.97744140625005,41.32221679687504],[55.97568359375006,44.99492187499996],[58.555273437500006,45.55537109375001],[61.007910156250006,44.39379882812497],[61.99023437500003,43.492138671874955],[63.20703125000003,43.62797851562502],[64.44316406250007,43.55117187499999],[64.9054687500001,43.714697265625006],[65.49619140625,43.310546875],[65.80302734375002,42.87695312500006],[66.1002929687501,42.99082031249998],[66.00957031250007,42.00488281250003],[66.49863281250006,41.99487304687503],[66.70966796875004,41.17915039062501],[67.9357421875001,41.19658203125002],[68.11308593750007,41.02861328124999],[68.04765625000007,40.80927734374998],[68.29189453125,40.656103515625034],[68.57265625,40.62265624999998],[68.58408203125,40.876269531250045],[69.15361328125002,41.42524414062498],[70.94677734374997,42.24868164062505]]]]},"properties":{"name":"Uzbekistan","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[-61.17451171875001,13.158105468749966],[-61.268457031249966,13.287695312499991],[-61.13896484374996,13.358740234374991],[-61.17451171875001,13.158105468749966]]]},"properties":{"name":"St. Vin. and Gren.","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-60.99790039062498,8.867333984374966],[-61.069189453125034,8.947314453125003],[-60.91582031249996,9.070312500000014],[-60.86142578124998,8.949609375000037],[-60.99790039062498,8.867333984374966]]],[[[-60.821191406249966,9.138378906250026],[-60.94140625000003,9.105566406250006],[-60.73583984374997,9.203320312500026],[-60.821191406249966,9.138378906250026]]],[[[-63.84936523437494,11.131005859374994],[-63.917626953124994,10.887548828125048],[-64.40234375,10.981591796875023],[-64.21367187500002,11.086132812499997],[-64.0283203125,11.00185546874998],[-63.84936523437494,11.131005859374994]]],[[[-60.742138671874926,5.202050781250037],[-60.71196289062499,5.191552734375023],[-60.671972656250034,5.164355468749989],[-60.603857421875006,4.94936523437498],[-61.00283203125002,4.535253906249991],[-61.28007812500002,4.516894531249974],[-61.82084960937496,4.197021484375],[-62.153125,4.098388671874986],[-62.41064453124994,4.156738281249972],[-62.71210937499998,4.01791992187502],[-62.85698242187502,3.593457031249969],[-63.33867187500002,3.943896484375045],[-64.02148437500003,3.929101562500051],[-64.19248046874995,4.126855468750009],[-64.57636718750001,4.139892578125],[-64.788671875,4.276025390625023],[-64.66899414062496,4.01181640625002],[-64.22109375000002,3.587402343749972],[-64.04658203124998,2.502392578124997],[-63.389257812500006,2.411914062500045],[-63.43251953124994,2.155566406250045],[-64.00849609374995,1.931591796874969],[-64.20502929687493,1.52949218750004],[-65.10375976562497,1.108105468749983],[-65.47338867187497,0.691259765624977],[-65.55605468750002,0.687988281250014],[-65.52299804687493,0.843408203124966],[-65.68144531249999,0.983447265624989],[-66.06005859375003,0.78535156250004],[-66.34711914062498,0.7671875],[-66.87602539062499,1.223046875000037],[-67.21083984375,2.390136718750043],[-67.61870117187496,2.793603515624994],[-67.85908203124998,2.793603515624994],[-67.3111328125,3.41586914062502],[-67.66162109375,3.864257812499986],[-67.85527343750002,4.506884765624989],[-67.82490234374995,5.270458984375026],[-67.47387695312503,5.929980468750003],[-67.48198242187499,6.18027343750002],[-67.85917968749999,6.289892578124963],[-68.47177734375,6.156542968749974],[-69.42714843749997,6.123974609374997],[-70.12919921874999,6.95361328125],[-70.73715820312503,7.090039062499997],[-71.12861328124993,6.98671875],[-72.00664062499993,7.032617187500023],[-72.20771484374995,7.37026367187498],[-72.47197265624996,7.524267578124991],[-72.39033203124995,8.287060546874969],[-72.66542968749994,8.62758789062498],[-72.79638671874997,9.10898437499999],[-73.05839843749999,9.259570312500031],[-73.36621093749997,9.194140625000017],[-73.00654296874998,9.789160156250006],[-72.86933593750001,10.49125976562496],[-72.690087890625,10.835839843749994],[-72.24848632812501,11.196435546875009],[-71.95810546875,11.66640625],[-71.31972656249997,11.861914062500048],[-71.95693359375002,11.569921874999977],[-71.835107421875,11.190332031250009],[-71.6416015625,11.013525390625048],[-71.73090820312498,10.994677734375017],[-71.59433593749995,10.657373046875051],[-72.11284179687499,9.815576171874966],[-71.61953124999994,9.047949218749991],[-71.24140625000001,9.160449218750003],[-71.08583984375002,9.348242187499977],[-71.05268554687501,9.705810546874986],[-71.49423828125,10.533203124999972],[-71.46953124999993,10.964160156250017],[-70.23251953124998,11.372998046874997],[-70.09711914062493,11.519775390624972],[-69.80478515624998,11.47421875000002],[-69.81733398437495,11.672070312499997],[-70.19257812499993,11.62460937500002],[-70.28652343749997,11.886035156249989],[-70.20278320312497,12.098388671874986],[-70.00395507812496,12.177880859375023],[-69.63159179687494,11.479931640625026],[-68.827978515625,11.431738281249977],[-68.39863281249995,11.160986328124977],[-68.29628906249997,10.689355468749994],[-68.13994140624999,10.492724609374989],[-66.24721679687497,10.632226562499994],[-65.85175781249995,10.257763671874997],[-65.12910156249998,10.070068359375043],[-64.85048828125,10.098095703124969],[-64.188330078125,10.457812499999989],[-63.73188476562501,10.503417968750043],[-64.24750976562498,10.54257812500002],[-64.298193359375,10.635156249999966],[-61.879492187500006,10.741015625000031],[-62.379980468750006,10.546875],[-62.91357421875,10.531494140624986],[-62.68583984374996,10.289794921875043],[-62.740576171875006,10.056152343750043],[-62.55034179687499,10.200439453125043],[-62.320410156250034,9.783056640625006],[-62.22114257812498,9.882568359375028],[-62.15336914062493,9.821777343749986],[-62.15532226562499,9.979248046875014],[-62.077099609374926,9.97504882812504],[-61.73593749999998,9.631201171874977],[-61.76591796874996,9.813818359374963],[-61.58886718749994,9.894531249999986],[-60.79248046874997,9.360742187500037],[-61.02314453124998,9.15458984374996],[-61.24726562499998,8.600341796875014],[-61.61870117187499,8.59746093749996],[-61.30400390624999,8.410400390625043],[-60.800976562499926,8.592138671875034],[-60.16748046875,8.616992187500031],[-60.01752929687501,8.549316406250014],[-59.83164062499998,8.305957031250003],[-59.84907226562498,8.248681640624966],[-59.96484375000003,8.191601562499969],[-59.99072265624997,8.16201171874998],[-60.032421874999926,8.053564453125006],[-60.51362304687501,7.813183593749969],[-60.71865234374994,7.535937499999974],[-60.606542968750006,7.320849609375031],[-60.63330078124997,7.211083984374966],[-60.58320312499998,7.156201171874969],[-60.523193359375,7.143701171875009],[-60.464941406250034,7.166552734375045],[-60.39238281249999,7.164550781249986],[-60.34506835937495,7.15],[-60.32548828124996,7.133984374999983],[-60.32207031249996,7.092041015625043],[-60.35209960937496,7.002880859374997],[-60.39501953125,6.945361328125003],[-60.717919921874966,6.768310546875],[-61.14560546874998,6.694531249999983],[-61.20361328124997,6.588378906250028],[-61.181591796874926,6.513378906250026],[-61.15102539062502,6.446533203124986],[-61.15229492187501,6.385107421875006],[-61.12871093749999,6.214306640625026],[-61.15947265624996,6.174414062499977],[-61.22495117187498,6.129199218750003],[-61.303125,6.049511718750026],[-61.39082031250001,5.938769531250017],[-61.376806640625006,5.906982421875028],[-61.167187499999926,5.674218750000037],[-60.95400390625002,5.437402343750023],[-60.742138671874926,5.202050781250037]]]]},"properties":{"name":"Venezuela","childNum":4}},{"geometry":{"type":"Polygon","coordinates":[[[-64.765625,17.794335937499994],[-64.58046874999994,17.750195312499983],[-64.88911132812495,17.701708984375045],[-64.765625,17.794335937499994]]]},"properties":{"name":"U.S. Virgin Is.","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[104.06396484375003,10.390820312500011],[104.01845703125,10.029199218749966],[103.84951171875005,10.371093749999986],[104.06396484375003,10.390820312500011]]],[[[107.52128906250007,20.926611328124977],[107.39921875000007,20.903466796874966],[107.55126953125003,21.034033203125006],[107.52128906250007,20.926611328124977]]],[[[107.60273437500004,21.21679687500003],[107.40351562500004,21.093652343749994],[107.47626953125004,21.268945312499994],[107.60273437500004,21.21679687500003]]],[[[107.97265624999997,21.507958984375023],[107.40996093750002,21.284814453125023],[107.35429687500007,21.055175781250057],[107.1647460937501,20.94873046875003],[106.68339843750007,21.000292968750074],[106.75341796875003,20.73505859375004],[106.55078124999997,20.52656250000001],[106.57285156250012,20.392187499999977],[105.98408203125004,19.939062500000034],[105.62177734375004,18.96630859375003],[105.88828125000006,18.502490234375045],[106.49902343749997,17.946435546874994],[106.47890625000005,17.719580078125063],[106.3705078125,17.746875],[107.83378906250002,16.322460937499983],[108.02939453125012,16.331103515625074],[108.82128906249997,15.377929687500028],[109.30332031250012,13.856445312500043],[109.271875,13.279345703124974],[109.42392578125006,12.955957031249994],[109.44492187500006,12.599609375000057],[109.33554687500012,12.751904296874997],[109.21894531250004,12.64580078124996],[109.30468750000003,12.391162109375045],[109.20683593750007,12.415380859375006],[109.1986328125,11.724853515625014],[109.03964843750012,11.592675781249994],[108.98671875,11.336376953124997],[108.09492187500004,10.897265624999989],[108.0013671875,10.720361328125009],[107.26152343750007,10.39838867187504],[107.00664062500002,10.66054687499998],[106.94746093750004,10.400341796874997],[106.72734375000007,10.535644531250028],[106.605859375,10.46494140625002],[106.74121093750003,10.444384765625003],[106.75742187500006,10.295800781250023],[106.46406250000004,10.298291015624997],[106.78525390625012,10.116455078124986],[106.59560546875005,9.859863281250028],[106.1364257812501,10.221679687500014],[106.56435546875005,9.715625],[106.48408203125004,9.559423828125006],[105.83095703125005,10.000732421875028],[106.15859375,9.59414062499998],[106.16835937500005,9.396728515625],[105.50097656249997,9.093212890624983],[105.11435546875006,8.629199218750031],[104.77041015625,8.59765625],[104.89628906250007,8.746630859374974],[104.81855468750004,8.801855468750034],[104.84521484375003,9.606152343750026],[105.08447265625003,9.99570312499999],[104.8019531250001,10.202734374999977],[104.66347656250005,10.169921875000043],[104.42636718750006,10.411230468749991],[104.85058593749997,10.534472656249974],[105.04638671874997,10.701660156250014],[105.04570312500002,10.911376953125014],[105.3146484375001,10.845166015625026],[105.40576171875003,10.95161132812504],[105.75507812500004,10.989990234375043],[105.85332031250007,10.86357421874996],[106.16396484375005,10.794921875],[106.16093750000002,11.037109375000057],[105.85605468750006,11.294287109375048],[105.85146484375005,11.635009765625],[106.0060546875001,11.758007812500011],[106.39921875000007,11.687011718750028],[106.41386718750002,11.9484375],[106.70009765625,11.979296874999974],[107.21210937500004,12.30400390624996],[107.39335937500002,12.260498046874972],[107.50644531250006,12.364550781250031],[107.47539062500002,13.030371093749963],[107.60546874999997,13.437792968750017],[107.3314453125,14.126611328125009],[107.51943359375005,14.705078125],[107.51376953125012,14.817382812500057],[107.52451171875012,14.871826171875043],[107.50468750000007,14.915917968749966],[107.48037109375,14.979882812500037],[107.55527343750006,15.057031250000023],[107.58964843750002,15.118457031250017],[107.63369140625005,15.18984375],[107.653125,15.255224609374991],[107.62167968750006,15.309863281250017],[107.56425781250002,15.391601562499972],[107.45957031250012,15.4658203125],[107.33876953125,15.560498046875011],[107.27939453125006,15.618701171875045],[107.16591796875005,15.802490234375028],[107.1888671875,15.838623046875],[107.36064453125002,15.921728515624977],[107.3919921875,15.951660156250028],[107.39638671875,16.04301757812499],[106.93066406249997,16.353125],[106.8927734375001,16.396533203125074],[106.85107421875003,16.515625],[106.83242187500005,16.526269531250023],[106.79160156250006,16.490332031250006],[106.73955078125007,16.452539062500023],[106.6564453125001,16.49262695312501],[106.54619140625002,16.650732421874977],[106.53369140625003,16.821044921875057],[106.52597656250006,16.876611328124994],[106.50224609375002,16.95410156249997],[106.26953125000003,17.21679687500003],[106.00625,17.415283203125057],[105.69140625000003,17.737841796875045],[105.58847656250012,17.983691406250045],[105.51855468749997,18.077441406250045],[105.45820312500004,18.15429687499997],[105.11455078125002,18.40527343750003],[105.08701171875006,18.496240234374994],[105.14541015625,18.616796875000063],[105.14648437500003,18.650976562500006],[103.89160156250003,19.304980468750017],[103.89638671875,19.339990234375023],[103.93203125,19.366064453125006],[104.0275390625001,19.42045898437499],[104.062890625,19.48256835937505],[104.05156250000007,19.564160156249955],[104.01347656250007,19.64648437500003],[104.03203125000002,19.675146484375006],[104.06279296875007,19.678417968749983],[104.25986328125006,19.685498046874983],[104.5462890625,19.61054687500001],[104.58789062500003,19.61875],[104.74316406250003,19.754736328124977],[104.80175781249997,19.83613281250004],[104.81513671875004,19.90400390625001],[104.9279296875001,20.01811523437499],[104.92919921875003,20.082812500000017],[104.88867187500003,20.169091796875023],[104.84785156250004,20.202441406250045],[104.69873046875003,20.20532226562503],[104.67695312500004,20.224707031249977],[104.66191406250007,20.28901367187501],[104.65644531250004,20.32851562499999],[104.6188476562501,20.37451171875003],[104.49619140625006,20.413671875],[104.39218750000012,20.424755859374955],[104.36777343750012,20.44140624999997],[104.40781250000012,20.48574218750005],[104.47861328125006,20.529589843750017],[104.53271484374997,20.55488281250001],[104.58320312500004,20.646679687499955],[104.34960937499997,20.821093750000074],[104.19531249999997,20.913964843749966],[104.10136718750002,20.94550781250001],[103.63505859375007,20.697070312500017],[103.46357421875004,20.779833984375017],[103.21074218750002,20.840625],[103.10449218749997,20.891650390625045],[102.88378906250003,21.202587890624983],[102.85117187500006,21.26591796874999],[102.94960937500005,21.681347656249983],[102.84521484374997,21.73476562500005],[102.81591796874997,21.807373046875],[102.7982421875,21.797949218750034],[102.77109375000006,21.709667968749983],[102.73857421875002,21.67792968750001],[102.66201171875005,21.67602539062497],[102.58251953125003,21.90429687500003],[102.12744140624997,22.379199218750045],[102.1759765625001,22.414648437500006],[102.2370117187501,22.466015624999983],[102.40644531250004,22.70800781249997],[102.47089843750004,22.75092773437501],[102.98193359374997,22.4482421875],[103.32666015625003,22.769775390625057],[103.49296875000007,22.587988281250034],[103.62021484375006,22.782031250000045],[103.94150390625006,22.540087890625045],[104.14306640624997,22.800146484375006],[104.37177734375004,22.704052734374983],[104.68730468750002,22.822216796874983],[104.86474609375003,23.136376953125023],[105.27539062500003,23.34521484375003],[105.8429687500001,22.922802734374955],[106.14843749999997,22.970068359375006],[106.2790039062501,22.857470703125045],[106.54179687500007,22.908349609375023],[106.78027343749997,22.778906250000034],[106.55039062500006,22.501367187499994],[106.66357421875003,21.97890625000005],[106.97099609375002,21.923925781250034],[107.35117187500012,21.60888671874997],[107.75927734374997,21.655029296875057],[107.97265624999997,21.507958984375023]]]]},"properties":{"name":"Vietnam","childNum":4}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[169.49130859375006,-19.54013671875002],[169.34726562500006,-19.623535156249957],[169.2174804687501,-19.476367187500003],[169.24746093750005,-19.3447265625],[169.49130859375006,-19.54013671875002]]],[[[169.334375,-18.940234375000017],[168.98691406250006,-18.87128906250001],[169.01582031250004,-18.64375],[169.14384765625002,-18.63105468750001],[169.334375,-18.940234375000017]]],[[[168.44580078124997,-17.54218750000004],[168.58496093750003,-17.695898437500006],[168.52460937500004,-17.798046875000026],[168.15820312500003,-17.710546874999963],[168.2731445312501,-17.552246093749957],[168.44580078124997,-17.54218750000004]]],[[[168.44677734375003,-16.778808593749957],[168.18144531250002,-16.804003906250017],[168.13535156250006,-16.636914062499997],[168.44677734375003,-16.778808593749957]]],[[[168.29667968750007,-16.33652343749999],[167.92900390625002,-16.22871093749997],[168.16386718750002,-16.081640625000034],[168.29667968750007,-16.33652343749999]]],[[[167.4125,-16.095898437499997],[167.83662109375004,-16.449707031249957],[167.44931640625012,-16.554980468750003],[167.34921875000006,-16.15449218750004],[167.15146484375006,-16.080468749999966],[167.19951171875002,-15.885058593750031],[167.33574218750007,-15.916699218749997],[167.4125,-16.095898437499997]]],[[[167.9113281250001,-15.435937500000023],[167.67421875,-15.4515625],[168.00253906250012,-15.283203124999986],[167.9113281250001,-15.435937500000023]]],[[[166.74580078125004,-14.826855468750011],[166.81015625000012,-15.15742187500004],[167.0755859375,-14.935644531249977],[167.20078125000012,-15.443066406249969],[167.0939453125001,-15.580859374999974],[166.75830078125003,-15.631152343750003],[166.63105468750004,-15.406054687499974],[166.56738281250003,-14.641796874999969],[166.74580078125004,-14.826855468750011]]],[[[167.58486328125,-14.260937500000011],[167.43027343750012,-14.294921875],[167.41074218750006,-14.19746093750004],[167.50644531250012,-14.142187499999977],[167.58486328125,-14.260937500000011]]],[[[167.48886718750006,-13.907226562499972],[167.3917968750001,-13.788378906250017],[167.48105468750006,-13.709472656250014],[167.48886718750006,-13.907226562499972]]]]},"properties":{"name":"Vanuatu","childNum":10}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-171.4541015625,-14.04648437500002],[-171.9119140625,-14.001660156250026],[-172.04589843750003,-13.857128906249983],[-171.60390624999997,-13.879199218750045],[-171.4541015625,-14.04648437500002]]],[[[-172.33349609375,-13.46523437499999],[-172.17685546874998,-13.68466796875002],[-172.224951171875,-13.804296874999963],[-172.535693359375,-13.791699218749983],[-172.77851562499998,-13.516796875000011],[-172.33349609375,-13.46523437499999]]]]},"properties":{"name":"Samoa","childNum":2}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[53.76318359374997,12.636816406249991],[54.18740234375005,12.664013671875026],[54.511132812499994,12.552783203125017],[54.12949218750006,12.360644531250045],[53.71884765625006,12.318994140624994],[53.31582031250005,12.533154296875011],[53.53496093750002,12.715771484374997],[53.76318359374997,12.636816406249991]]],[[[42.75585937500003,13.70429687500004],[42.689746093750074,13.673632812500017],[42.7941406250001,13.766113281250028],[42.75585937500003,13.70429687500004]]],[[[42.787402343750074,13.971484375000031],[42.69404296875004,14.007910156249991],[42.76210937500005,14.067480468750048],[42.787402343750074,13.971484375000031]]],[[[53.08564453125004,16.648388671874955],[52.327734375,16.293554687500063],[52.17402343750004,15.956835937500017],[52.2174804687501,15.655517578125],[51.3224609375001,15.22626953125004],[49.34990234375002,14.637792968749977],[48.66835937499999,14.050146484374977],[47.9899414062501,14.048095703125],[47.40771484374997,13.661621093750057],[46.78886718750002,13.465576171874986],[45.65732421875006,13.338720703124991],[45.03867187500006,12.815869140624969],[44.617773437500006,12.817236328124977],[44.00585937499997,12.607666015625],[43.634375,12.744482421874991],[43.487597656250074,12.69882812500002],[43.23193359375003,13.267089843750057],[43.2824218750001,13.692529296875037],[43.08906250000004,14.010986328125],[42.93642578125005,14.938574218749963],[42.85566406250004,15.132958984375037],[42.65781250000006,15.232812500000051],[42.79902343750004,15.326269531249991],[42.71718750000005,15.654638671875006],[42.83964843750002,16.032031250000074],[42.79931640624997,16.37177734375001],[43.16503906249997,16.689404296874955],[43.19091796875003,17.359375],[43.41796875000003,17.516259765625023],[43.91699218749997,17.32470703124997],[45.14804687500006,17.427441406249955],[45.5353515625001,17.30205078124999],[46.72763671875006,17.26557617187501],[46.97568359375006,16.953466796875034],[47.14355468749997,16.946679687499966],[47.44179687499999,17.111865234375045],[47.57958984374997,17.448339843750034],[48.17216796875002,18.156933593749983],[49.04199218750003,18.58178710937503],[51.977636718750006,18.996142578125074],[53.08564453125004,16.648388671874955]]]]},"properties":{"name":"Yemen","childNum":4}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[37.85693359375003,-46.94423828124998],[37.5900390625001,-46.90800781250006],[37.78955078124997,-46.8375],[37.85693359375003,-46.94423828124998]]],[[[31.799609375000017,-23.8921875],[31.98583984374997,-24.460644531249983],[31.921679687500017,-25.96875],[31.335156250000097,-25.755566406249997],[31.207324218750074,-25.843359375000034],[31.08808593750004,-25.980664062500026],[30.803320312500006,-26.41347656250001],[30.806738281250006,-26.78525390624999],[30.88330078124997,-26.792382812500023],[30.938085937500006,-26.91582031250003],[31.06337890625005,-27.1123046875],[31.274023437500063,-27.23837890625002],[31.469531250000017,-27.29550781250002],[31.74257812500005,-27.309960937500037],[31.95839843750005,-27.305859375],[31.946093750000017,-27.173632812499974],[31.96718750000005,-26.96064453125001],[31.994726562500006,-26.817480468749977],[32.024804687499994,-26.81113281250002],[32.112890625,-26.83945312500002],[32.19960937499999,-26.833496093749957],[32.35351562499997,-26.861621093750003],[32.7765625000001,-26.850976562499966],[32.88613281250005,-26.849316406249983],[32.53476562500006,-28.19970703125003],[32.285742187500006,-28.62148437499998],[31.335156250000097,-29.378125],[29.97119140625003,-31.322070312500017],[28.449414062500068,-32.62460937499999],[27.077441406250074,-33.52119140625004],[26.429492187500045,-33.75957031250002],[25.80585937500001,-33.737109374999974],[25.574218750000057,-34.03535156249998],[25.00292968750003,-33.97363281250003],[24.8271484375,-34.16894531250003],[24.595507812500074,-34.17451171875],[23.697851562500063,-33.99277343750002],[23.268164062500006,-34.08115234374999],[22.553808593750063,-34.01005859374999],[22.24550781250005,-34.06914062500003],[21.788964843750023,-34.37265624999996],[20.529882812500034,-34.4630859375],[20.020605468750006,-34.785742187500006],[19.298242187500023,-34.61503906249996],[19.330761718750068,-34.49238281250001],[19.098339843750068,-34.350097656249986],[18.831347656250017,-34.36406249999999],[18.75214843750004,-34.08261718750002],[18.50039062499999,-34.10927734375004],[18.46162109375001,-34.346875],[18.35205078124997,-34.1884765625],[18.43300781250005,-33.71728515625003],[17.851074218750057,-32.82744140625002],[17.96523437500005,-32.70859374999996],[18.125,-32.74912109374996],[18.325292968750034,-32.50498046874996],[18.21083984375008,-31.74248046874996],[17.34707031250005,-30.44482421875],[16.95,-29.40341796875002],[16.739453124999983,-29.009375],[16.447558593750045,-28.61757812499998],[16.755761718750023,-28.45214843750003],[16.7875,-28.39472656249997],[16.81015625,-28.264550781249994],[16.841210937500023,-28.21894531250004],[16.875292968750045,-28.12792968749997],[16.93330078125004,-28.06962890624999],[17.05625,-28.03105468750003],[17.1884765625,-28.13251953125001],[17.358691406250017,-28.269433593750023],[17.44794921875001,-28.698144531249966],[18.310839843750017,-28.88623046875],[19.16171875,-28.93876953124996],[19.245800781250068,-28.90166015625003],[19.31269531250004,-28.733300781250023],[19.539843750000017,-28.574609375000023],[19.98046875,-28.45126953125002],[19.98046875,-28.310351562500003],[19.98046875,-24.77675781249998],[20.430664062500057,-25.14707031250002],[20.79316406250001,-25.915625],[20.641406250000017,-26.7421875],[20.739843749999977,-26.84882812499997],[21.694726562500023,-26.840917968749963],[21.738085937500045,-26.806835937500026],[21.788281250000068,-26.710058593750034],[22.01093750000004,-26.635839843750006],[22.090917968749977,-26.580175781250034],[22.217578125000045,-26.38886718749997],[22.47089843750004,-26.219042968750003],[22.548632812500074,-26.178417968749997],[22.59765625000003,-26.13271484375001],[22.878808593750023,-25.457910156250023],[23.148730468750017,-25.288671875],[23.389257812500006,-25.291406250000023],[23.89375,-25.600878906250017],[23.96953124999999,-25.62607421874999],[24.192968750000034,-25.632910156249963],[24.33056640625,-25.742871093749983],[25.21337890625,-25.75625],[25.518164062500006,-25.66279296875001],[25.91210937499997,-24.747460937499966],[26.031835937500034,-24.70244140625003],[26.130859375000057,-24.671484375000034],[26.39716796875004,-24.61357421874996],[26.451757812500063,-24.582714843749983],[26.835058593750063,-24.240820312499963],[27.085546875000034,-23.577929687500003],[27.7685546875,-23.14892578125],[27.812597656250006,-23.108007812500006],[28.210156249999983,-22.693652343749974],[28.83984375000003,-22.480859374999966],[28.94580078125003,-22.39511718749999],[29.013476562500045,-22.27841796875002],[29.129882812500057,-22.21328125],[29.364843750000063,-22.19394531250005],[29.37744140625003,-22.19277343749998],[29.66308593749997,-22.146289062500017],[29.90234375000003,-22.184179687500006],[30.19042968750003,-22.291113281250034],[30.460156250000097,-22.329003906250023],[30.71162109375004,-22.297851562499986],[31.07343750000004,-22.30781249999997],[31.19726562499997,-22.344921874999983],[31.287890625000074,-22.402050781249983],[31.54560546875004,-23.48232421874998],[31.799609375000017,-23.8921875]],[[27.19355468750001,-29.94130859375001],[27.364062500000017,-30.27919921875001],[27.753125,-30.6],[28.05683593750001,-30.63105468750001],[28.128710937500017,-30.52509765625001],[28.39208984375003,-30.14755859375002],[28.646875,-30.1265625],[29.09804687500005,-29.919042968750006],[29.142187500000063,-29.70097656249999],[29.293554687500006,-29.56689453125003],[29.348828125000097,-29.441992187499977],[29.38671874999997,-29.319726562500023],[29.301367187500006,-29.08984375],[28.625781250000017,-28.581738281250054],[28.583398437499994,-28.59414062499999],[28.471875,-28.615820312499977],[28.23261718750004,-28.701269531249977],[28.084375,-28.779980468750026],[27.95986328125008,-28.87333984375003],[27.73554687500004,-28.940039062500034],[27.294531250000063,-29.519335937500017],[27.056933593750074,-29.62558593749999],[27.19355468750001,-29.94130859375001]]]]},"properties":{"name":"South Africa","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[33.148046875,-9.603515625],[33.25,-9.759570312500003],[33.35097656250002,-9.862207031250009],[33.33710937500001,-9.954003906250009],[33.3115234375,-10.037988281250009],[33.52890625,-10.234667968750003],[33.53759765625,-10.3515625],[33.5537109375,-10.391308593750011],[33.66152343750002,-10.553125],[33.29277343750002,-10.85234375],[33.37978515625002,-11.157910156250011],[33.26835937500002,-11.40390625],[33.23271484375002,-11.417675781250011],[33.22636718750002,-11.534863281250011],[33.30390625000001,-11.690820312500009],[33.25234375000002,-12.112597656250003],[33.34013671875002,-12.308300781250011],[33.512304687500006,-12.347753906250006],[32.975195312500006,-12.701367187500011],[32.96757812500002,-13.225],[32.67041015625,-13.590429687500006],[32.797460937500006,-13.6884765625],[32.98125,-14.009375],[33.148046875,-13.94091796875],[33.201757812500006,-14.013378906250011],[30.231835937500023,-14.990332031250006],[30.39609375,-15.64306640625],[29.4873046875,-15.69677734375],[28.9130859375,-15.98779296875],[28.760546875000017,-16.53212890625001],[27.932226562500006,-16.89619140625001],[27.020800781250017,-17.95839843750001],[26.779882812500006,-18.04150390625],[26.333398437500023,-17.929296875],[25.995898437500017,-17.969824218750006],[25.2587890625,-17.793554687500006],[25.001757812500017,-17.56855468750001],[24.73291015625,-17.51777343750001],[24.27490234375,-17.481054687500006],[23.380664062500017,-17.640625],[22.193945312500006,-16.628125],[21.979785156250017,-15.95556640625],[21.979394531250023,-14.440527343750006],[21.979296875000017,-14.11962890625],[21.979101562500006,-13.798730468750009],[21.978906250000023,-13.0009765625],[22.209570312500006,-13.0009765625],[23.843164062500023,-13.0009765625],[23.962988281250006,-12.988476562500011],[23.882421875,-12.799023437500011],[23.886523437500017,-12.743261718750006],[23.909375,-12.636132812500009],[23.98388671875,-11.725],[23.96650390625001,-10.871777343750011],[24.36572265625,-11.1298828125],[24.3779296875,-11.417089843750006],[25.28876953125001,-11.21240234375],[25.349414062500017,-11.623046875],[26.025976562500006,-11.89013671875],[26.824023437500017,-11.965234375],[27.1591796875,-11.579199218750006],[27.573828125,-12.22705078125],[28.412890625000017,-12.51806640625],[28.550878906250006,-12.836132812500011],[28.730078125,-12.925488281250011],[29.014257812500006,-13.368847656250011],[29.20185546875001,-13.398339843750009],[29.55419921875,-13.248925781250009],[29.775195312500017,-13.438085937500006],[29.79511718750001,-12.155468750000011],[29.508203125000023,-12.228222656250011],[29.48554687500001,-12.41845703125],[29.064355468750023,-12.348828125000011],[28.482519531250006,-11.812109375],[28.383398437500006,-11.566699218750003],[28.6455078125,-10.550195312500009],[28.60419921875001,-9.678808593750006],[28.400683593750017,-9.224804687500011],[28.869531250000023,-8.785839843750011],[28.89814453125001,-8.485449218750006],[30.75117187500001,-8.193652343750003],[30.830664062500006,-8.385546875],[30.891992187500023,-8.473730468750006],[30.968359375,-8.550976562500011],[31.07636718750001,-8.611914062500006],[31.3505859375,-8.60703125],[31.44921875,-8.65390625],[31.53486328125001,-8.71328125],[31.55625,-8.80546875],[31.673632812500017,-8.908789062500006],[31.91865234375001,-8.9421875],[31.921875,-9.019433593750009],[31.94257812500001,-9.054003906250003],[32.75664062500002,-9.322265625],[32.919921875,-9.407421875000011],[32.99599609375002,-9.622851562500003],[33.148046875,-9.603515625]]]},"properties":{"name":"Zambia","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[31.287890625000017,-22.40205078125001],[31.07343750000001,-22.30781250000001],[30.71162109375001,-22.2978515625],[30.46015625000001,-22.32900390625001],[30.1904296875,-22.291113281250006],[29.90234375,-22.184179687500006],[29.6630859375,-22.146289062500003],[29.37744140625,-22.19277343750001],[29.36484375,-22.193945312500006],[29.315234375000017,-22.15771484375],[29.237207031250023,-22.07949218750001],[29.042382812500023,-22.018359375],[29.02558593750001,-21.796875],[28.014062500000023,-21.55419921875],[27.66943359375,-21.064257812500003],[27.679296875,-20.503027343750006],[27.28076171875,-20.47871093750001],[27.17822265625,-20.10097656250001],[26.168066406250006,-19.53828125000001],[25.939355468750023,-18.93867187500001],[25.242285156250006,-17.969042968750003],[25.2587890625,-17.793554687500006],[25.995898437500017,-17.969824218750006],[26.333398437500023,-17.929296875],[26.779882812500006,-18.04150390625],[27.020800781250017,-17.95839843750001],[27.932226562500006,-16.89619140625001],[28.760546875000017,-16.53212890625001],[28.9130859375,-15.98779296875],[29.4873046875,-15.69677734375],[30.39609375,-15.64306640625],[30.437792968750017,-15.995312500000011],[31.236230468750023,-16.02363281250001],[31.939843750000023,-16.428808593750006],[32.94804687500002,-16.71230468750001],[32.87626953125002,-16.88359375],[32.99306640625002,-18.35957031250001],[32.69970703125,-18.94091796875],[32.84980468750001,-19.10439453125001],[32.77763671875002,-19.388769531250006],[32.992773437500006,-19.98486328125],[32.49238281250001,-20.659765625],[32.353613281250006,-21.136523437500003],[32.429785156250006,-21.29707031250001],[31.429492187500017,-22.298828125],[31.287890625000017,-22.40205078125001]]]},"properties":{"name":"Zimbabwe","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[74.00809389139292,33.25375789331485],[73.19660141888893,33.898124784580936],[73.13410859949555,34.82510160558277],[72.31128647748268,35.77290936638241],[73.08203125000107,36.43949943991182],[73.08961802927895,36.86435907947333],[73.116796875,36.868554687499994],[74.03886718750002,36.825732421874996],[74.54140625000002,37.02216796875],[74.69218750000002,37.0357421875],[74.8892578125,36.952441406249996],[74.94912109375002,36.968359375],[75.05390625000001,36.987158203125],[75.14521484375001,36.9732421875],[75.3466796875,36.913476562499994],[75.37685546875002,36.883691406249994],[75.42421875000002,36.738232421875],[75.46025390625002,36.725048828125],[75.57373046875,36.759326171874996],[75.66718750000001,36.741992187499996],[75.77216796875001,36.694921875],[75.84023437500002,36.649707031249996],[75.88496093750001,36.600732421874994],[75.93300781250002,36.52158203125],[75.95185546875001,36.45810546875],[75.97441406250002,36.382421875],[75.91230468750001,36.048974609374994],[76.07089843750003,35.9830078125],[76.14785156250002,35.829003906249994],[76.17783203125003,35.810546875],[76.25166015625001,35.8109375],[76.3857421875,35.837158203125],[76.50205078125003,35.878222656249996],[76.55126953125,35.887060546875],[76.5634765625,35.772998046874996],[76.6318359375,35.729394531249994],[76.7275390625,35.678662109375],[76.76689453124999,35.66171875],[76.81279296874999,35.571826171874996],[76.88222656250002,35.4357421875],[76.927734375,35.346630859375],[77.04863281249999,35.109912109374996],[77.00087890625002,34.991992187499996],[76.78291015625001,34.900195312499996],[76.75751953125001,34.877832031249994],[76.7490234375,34.847558593749994],[76.6962890625,34.786914062499996],[76.59443359375001,34.73583984375],[76.45673828125001,34.756103515625],[76.17246093750003,34.667724609375],[76.041015625,34.669921875],[75.93828125000002,34.612548828125],[75.86210937500002,34.56025390625],[75.70917968750001,34.503076171874994],[74.300390625,34.765380859375],[74.17197265625,34.7208984375],[74.05585937500001,34.6806640625],[73.96123046875002,34.653466796874994],[73.79453125,34.378222656249996],[73.80996093750002,34.325341796874994],[73.92460937500002,34.287841796875],[73.97236328125001,34.236621093749996],[73.9794921875,34.191308593749994],[73.90390625,34.1080078125],[73.94990234375001,34.018798828125],[74.24648437500002,33.990185546875],[73.97646484375002,33.7212890625],[74.15,33.506982421874994],[74.00809389139292,33.25375789331485]]]},"properties":{"name":"","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[78.49194250885338,32.53122786149202],[78.10154031239509,32.87658365066666],[77.71342088235082,32.6917648744551],[77.06655516561037,33.301666835953235],[76.62299010270264,33.32014871357439],[76.32728006076415,32.87658365066666],[75.73585997688717,32.78417426256088],[75.62496871116024,32.28516356678968],[75.32221348233018,32.28516356678968],[74.98730468749997,32.46220703124996],[74.78886718750013,32.4578125],[74.6857421875001,32.493798828124994],[74.66328125000004,32.75766601562495],[74.63242187499995,32.770898437500136],[74.58828125000011,32.7532226562501],[74.35458984375012,32.76870117187505],[74.30546875000007,32.81044921875002],[74.30361328125005,32.991796875000034],[73.98984375000006,33.22119140625006],[74.15,33.506982421874994],[73.97646484375016,33.72128906249998],[74.24648437500011,33.99018554687504],[73.9499023437501,34.018798828125],[73.90390625000012,34.10800781250006],[73.97949218750009,34.191308593749966],[73.97236328125004,34.23662109374996],[73.92460937500007,34.287841796875114],[73.80996093750016,34.32534179687511],[73.79453125000006,34.378222656250045],[73.96123046875007,34.653466796874994],[74.05585937500015,34.68066406250003],[74.17197265624995,34.72089843750004],[74.30039062500006,34.76538085937506],[75.70917968750004,34.50307617187508],[75.86210937500002,34.56025390625001],[75.93828125000019,34.612548828125],[76.04101562500014,34.66992187499997],[76.17246093750006,34.66772460937506],[76.4567382812501,34.756103515625114],[76.5944335937501,34.73583984375006],[76.69628906249997,34.78691406249999],[76.74902343750014,34.84755859375008],[76.7575195312501,34.87783203125005],[76.7829101562501,34.90019531249999],[77.00087890625011,34.99199218750002],[77.03066406250011,35.06235351562498],[77.04863281250007,35.109912109375074],[77.42343749999995,35.30258789062506],[77.57158203125002,35.37875976562495],[77.69697265625015,35.443261718750136],[77.79941406250006,35.49589843750002],[78.0426757812501,35.4797851562501],[78.07578125000006,35.13491210937502],[78.15849609375002,34.94648437499998],[78.32695312500007,34.60639648437498],[78.86484375000006,34.39033203125001],[78.93642578125,34.35195312500002],[78.97060546875011,34.22822265625004],[78.72666015625006,34.013378906249955],[78.78378906250006,33.80878906250004],[78.86503906250002,33.43110351562501],[78.94843750000004,33.346533203125006],[79.1125,33.22626953125001],[79.13515625000005,33.17192382812496],[79.10283203125007,33.05253906249996],[79.14550781250003,33.00146484375006],[79.16992187500003,32.497216796874994],[78.91894531249997,32.3582031250001],[78.75351562500012,32.49926757812506],[78.73671875,32.55839843750002],[78.49194250885338,32.53122786149202]]]]},"properties":{"name":"","childNum":1}}]}`);y5.registerMap("world",t5);const r5=u=>{const{areaStyleColors:e,dataLoaded:t,hasData:f,highlight:x,type:P,option:F,series:H,onChange:V,zoomStart:K,zoomEnd:X,title:e0,seriesConfig:Z=[],noDataComponent:Q=null,zoomColors:i0}=u,[J,c0]=(0,D.useState)(null),r0=(0,D.useRef)(null),o0=()=>{J&&J.resize()},g0={defaultOpts:(0,W0.fromJS)({title:{show:!0,text:e0,left:0},color:[],toolbox:{right:"0",orient:"horizontal",itemSize:15,showTitle:!0,feature:null},dataZoom:[{show:!0,start:0,end:100,orient:"horizontal",dataBackground:{lineStyle:{color:(i0==null?void 0:i0.lineStyle)||"#368493"},areaStyle:{color:(i0==null?void 0:i0.areaStyle)||"#368493"}},handleStyle:{color:(i0==null?void 0:i0.handleStyle)||"#368493"},textStyle:{color:(i0==null?void 0:i0.textStyle)||"#368493"},borderColor:"transparent",fillerColor:(i0==null?void 0:i0.fillerColor)||"rgba(54, 132, 147, 0.1)"}],legend:{show:!1},tooltip:{trigger:"axis",axisPointer:{type:"cross"}},grid:{left:"1%",right:"1%",bottom:"50px",top:"40px",containLabel:!0},xAxis:{boundaryGap:!1,type:"category",splitLine:{show:!0,lineStyle:{type:"dotted",color:"#F0F0F0"}},axisLine:{show:!1},axisTick:{show:!1},data:[]},yAxis:{min:"dataMin",boundaryGap:!0,axisPointer:{show:!0},splitLine:{lineStyle:{type:"dotted",color:"#F0F0F0"},show:!0},axisLabel:{show:!0},axisLine:{show:!0},axisTick:{show:!1},type:"value"},textStyle:{color:"#5a5a68"},series:[],animationEasing:"elasticOut"}),seriesDefault:(0,W0.fromJS)({data:[],type:"line",areaStyle:{opacity:1,color:e?new y5.graphic.LinearGradient(0,0,1,1,e.map((R0,U0)=>({offset:U0,color:R0}))):[]},smooth:!1,symbolSize:7,name:""})},y0={defaultOpts:(0,W0.fromJS)({tooltip:{trigger:"axis",formatter:"{b}: {c} ({d}%)"},legend:{orient:"horizontal",x:"left",y:"top",data:[]},color:[],series:[]}),seriesDefault:(0,W0.fromJS)({type:"pie",center:["50%","55%"],radius:["50%","75%"],avoidLabelOverlap:!1,animationType:"scale",animationEasing:"elasticOut",labelLine:{normal:{show:!0,smooth:.2,length:6,length2:6}},data:[]})},L0={defaultOpts:(0,W0.fromJS)({series:[]}),seriesDefault:(0,W0.fromJS)({type:"map",data:[]})},E0=(R0,U0,s5)=>{let J0={};switch(R0){case"pie":{J0=y0.defaultOpts.mergeDeep((0,W0.fromJS)(U0)).toJS(),s5.forEach(G0=>{J0.series.push(y0.seriesDefault.mergeDeep((0,W0.fromJS)(G0)).toJS())});break}case"geo":{J0=L0.defaultOpts.mergeDeep((0,W0.fromJS)(U0)).toJS(),s5.forEach(G0=>{J0.series.push(L0.seriesDefault.mergeDeep((0,W0.fromJS)(G0)).toJS())});break}default:{J0=g0.defaultOpts.mergeDeep((0,W0.fromJS)(U0)).toJS(),Array.isArray(U0.yAxis)&&(J0.yAxis=U0.yAxis),s5.forEach((G0,h5)=>{const u5=Object.assign({},g0.seriesDefault.toJS(),Z[h5],G0);J0.series.push(u5)});break}}return J0};(0,D.useEffect)(()=>(window.addEventListener("resize",o0),()=>{window.removeEventListener("resize",o0)}),[J]),(0,D.useEffect)(()=>{if(r0!=null&&r0.current)return c0(y5.init(r0.current)),()=>{J&&J.dispose()}},[r0.current]);const S0=R0=>{V&&V(R0)};(0,D.useEffect)(()=>{let R0;return J&&(R0=a0(S0,500),J.on("dataZoom",R0),J.on("restore",R0),J.on("click",R0),J.on("mousemove",U0=>{U0.data&&J.getZr().setCursorStyle("pointer")})),()=>{J&&(J.off("dataZoom",R0),J.off("restore",R0),J.off("click",R0))}},[J,V]);const B0=w(J),I0=w(F),v0=w(P),l0=w(H);(0,D.useEffect)(()=>{var R0,U0,s5,J0,G0,h5;J&&(!((U0=(R0=(0,W0.fromJS)(B0))==null?void 0:R0.equals)!=null&&U0.call(R0,(0,W0.fromJS)(J)))||!((J0=(s5=(0,W0.fromJS)(I0))==null?void 0:s5.equals)!=null&&J0.call(s5,(0,W0.fromJS)(F)))||v0!==P||!((h5=(G0=(0,W0.fromJS)(l0)).equals)!=null&&h5.call(G0,(0,W0.fromJS)(H))))&&(J.clear(),J.setOption(E0(P,F,H)),J.dispatchAction({type:"takeGlobalCursor",key:"dataZoomSelect",dataZoomSelectActive:!0}))},[J,F,H,P]),(0,D.useEffect)(()=>{J&&x&&(J.dispatchAction({type:"highlight",seriesIndex:x.seriesIndex,dataIndex:x.dataIndex}),J.dispatchAction({type:"showTip",seriesIndex:x.seriesIndex,dataIndex:x.dataIndex}))},[x]);const s0=w(K),C0=w(X);(0,D.useEffect)(()=>{J&&K!==-1&&X!==-1&&(s0!==K||C0!==X)&&J.dispatchAction({type:"dataZoom",startValue:K,endValue:X})},[K,X]);const T0=()=>{const{style:R0}=u,U0=R0||{};return U0.height||(U0.height="300px"),U0.width||(U0.width="100%"),U0},$0=()=>t&&(f===!1||f===!0)?f:!0,K0=()=>{const R0=["tyk-chart"];return t||R0.push("tyk-chart--loading-chart"),$0()||R0.push("tyk-chart--no-data"),R0.join(" ")};return R().createElement("div",{className:"tyk-chart__wrapper"},t?null:R().createElement(_0,null),R().createElement("div",{className:K0(),style:T0(),ref:r0}),$0()?null:Q?Q():R().createElement(D0,{theme:"info"},"No data to display"))};r5.propTypes={areaStyleColors:n().instanceOf(Array),dataLoaded:n().bool,hasData:n().bool,highlight:n().oneOfType([n().number,n().string,n().instanceOf(Array)]),noDataComponent:n().func,zoomStart:n().number,zoomEnd:n().number,zoomColors:n().instanceOf(Object),option:n().instanceOf(Object),onChange:n().func,style:n().instanceOf(Object),type:n().string,title:n().string,series:n().instanceOf(Array),seriesConfig:n().instanceOf(Object)};const n5=(0,D.memo)(r5);var Z0=O0(745);const V0=u=>{const{children:e,options:t,onClose:f,index:x}=u,P=Object.assign({theme:"success",delay:3e3},t);let F;const H=V=>{f(V),clearTimeout(F)};return B(()=>H(x),P.delay),R().createElement(D0,{className:"tyk-toast__message",theme:P.theme,onClose:()=>H(x)},e)};V0.propTypes={children:n().oneOfType([n().element,n().node,n().string]),options:n().instanceOf(Object),onClose:n().func,index:n().number};const d5=V0;var P5=Object.defineProperty,f9=Object.defineProperties,v6=Object.getOwnPropertyDescriptors,p9=Object.getOwnPropertySymbols,S1=Object.prototype.hasOwnProperty,_1=Object.prototype.propertyIsEnumerable,$1=(u,e,t)=>e in u?P5(u,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):u[e]=t,E1=(u,e)=>{for(var t in e||(e={}))S1.call(e,t)&&$1(u,t,e[t]);if(p9)for(var t of p9(e))_1.call(e,t)&&$1(u,t,e[t]);return u},y6=(u,e)=>f9(u,v6(e)),b6=u=>typeof u=="symbol"?u:u+"",w6=(u,e)=>{var t={};for(var f in u)S1.call(u,f)&&e.indexOf(f)<0&&(t[f]=u[f]);if(u!=null&&p9)for(var f of p9(u))e.indexOf(f)<0&&_1.call(u,f)&&(t[f]=u[f]);return t};const O1=u=>{const[e,t]=(0,D.useState)({}),{notify:f}=u,x=(F,H)=>{const V=Math.floor(Math.random()*1e6);t(K=>y6(E1({},K),{[V]:{message:F,options:H}}))};(0,D.useEffect)(()=>{f(x)},[e]);const P=F=>{const H=E1({},e);delete H[F],t(V=>{const K=V,{[F]:X}=K;return w6(K,[b6(F)])})};return R().createElement("div",{className:"tyk-toast__container"},Object.keys(e).map(F=>e[F]?R().createElement(d5,{options:e[F].options,onClose:P.bind(null,F),index:F,key:F},e[F].message):null))};O1.propTypes={notify:n().func};const C6=O1;var A6=Object.defineProperty,k6=Object.defineProperties,x6=Object.getOwnPropertyDescriptors,T1=Object.getOwnPropertySymbols,S6=Object.prototype.hasOwnProperty,_6=Object.prototype.propertyIsEnumerable,g2=(u,e,t)=>e in u?A6(u,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):u[e]=t,g9=(u,e)=>{for(var t in e||(e={}))S6.call(e,t)&&g2(u,t,e[t]);if(T1)for(var t of T1(e))_6.call(e,t)&&g2(u,t,e[t]);return u},m9=(u,e)=>k6(u,x6(e)),$6=(u,e,t)=>(g2(u,typeof e!="symbol"?e+"":e,t),t);class E6{constructor(){$6(this,"bindNotify",f=>{this.createNotification=f});const e=document.createElement("div");e.className="tyk-toast",document.body.appendChild(e),(0,Z0.s)(e).render(R().createElement(C6,{notify:this.bindNotify}))}notify(e,t){this.createNotification&&this.createNotification(e,t)}danger(e,t){this.notify(e,m9(g9({},t),{theme:"danger"}))}success(e,t){this.notify(e,m9(g9({},t),{theme:"success"}))}warning(e,t){this.notify(e,m9(g9({},t),{theme:"warning"}))}info(e,t){this.notify(e,m9(g9({},t),{theme:"info"}))}}const m2=new E6;var O6=Object.defineProperty,R1=Object.getOwnPropertySymbols,T6=Object.prototype.hasOwnProperty,R6=Object.prototype.propertyIsEnumerable,M1=(u,e,t)=>e in u?O6(u,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):u[e]=t,M6=(u,e)=>{for(var t in e||(e={}))T6.call(e,t)&&M1(u,t,e[t]);if(R1)for(var t of R1(e))R6.call(e,t)&&M1(u,t,e[t]);return u};const L1=u=>{const{display:e,copy:t,children:f,onCopy:x}=u,P=(0,D.createRef)(),F=(0,D.useCallback)(()=>{if(x&&x(),!window.navigator.clipboard){P.current.select(),document.execCommand("copy"),m2.notify("copied",{theme:"success"});return}window.navigator.clipboard.writeText(t),m2.notify("copied",{theme:"success"})},[x,P]);return R().createElement(D.Fragment,null,R().createElement(u.element,M6({onClick:F,onKeyUp:F},u),f||e),window.navigator.clipboard?null:R().createElement("textarea",{ref:P,className:"tyk-copy-to-clipboard",name:"copy",value:t},t))};L1.propTypes={onCopy:n().func,copy:n().string.isRequired,display:n().string,children:n().oneOfType([n().element,n().string,n().object,n().node])};const L6=L1;var v2=O0(137),r9=O0.n(v2);function P1({children:u}){return R().createElement("div",{className:"tyk-modal__footer"},u)}P1.propTypes={children:n().oneOfType([n().element,n().node,n().string])};const P6=P1;function I1({children:u}){return R().createElement("div",{className:"tyk-modal__body"},u)}I1.propTypes={children:n().oneOfType([n().element,n().node,n().string])};const I6=I1;var B6=Object.defineProperty,v9=Object.getOwnPropertySymbols,B1=Object.prototype.hasOwnProperty,F1=Object.prototype.propertyIsEnumerable,N1=(u,e,t)=>e in u?B6(u,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):u[e]=t,F6=(u,e)=>{for(var t in e||(e={}))B1.call(e,t)&&N1(u,t,e[t]);if(v9)for(var t of v9(e))F1.call(e,t)&&N1(u,t,e[t]);return u},N6=(u,e)=>{var t={};for(var f in u)B1.call(u,f)&&e.indexOf(f)<0&&(t[f]=u[f]);if(u!=null&&v9)for(var f of v9(u))e.indexOf(f)<0&&F1.call(u,f)&&(t[f]=u[f]);return t};function V5(u){var e=u,{children:t,theme:f="none",disableCloseCommands:x=!1,opened:P=!1,onClose:F=()=>{},size:H="md",className:V="",showBackdrop:K=!0}=e,X=N6(e,["children","theme","disableCloseCommands","opened","onClose","size","className","showBackdrop"]);const e0=["tyk-modal",`tyk-modal--theme-${f}`,P&&"opened"].concat(V.split(" ")).filter(Boolean).join(" "),Z=["tyk-modal__backdrop",P&&"opened"].filter(Boolean).join(" "),Q={success:"check",warning:"warning",danger:"delete"}[f];return R().createElement(R().Fragment,null,r9().createPortal(R().createElement(S.CSSTransition,{in:P,timeout:100,classNames:"appear"},R().createElement("div",F6({className:e0},X),R().createElement("div",{className:`tyk-modal__dialog tyk-modal--${H}`},R().createElement("div",{className:"tyk-modal__content"},f!=="none"&&R().createElement("div",{className:"tyk-modal__theme-header"},R().createElement(a,{family:"tykon",type:Q})),t)))),document.querySelector("body")),K&&r9().createPortal(R().createElement(S.CSSTransition,{in:P,timeout:100,classNames:"fade"},R().createElement("button",{className:Z,onClick:()=>!x&&F(),onKeyDown:()=>{},type:"button","aria-label":"Close"})),document.querySelector("body")))}V5.Body=I6,V5.Footer=P6,V5.Header=({children:u})=>(console.warn("%cModal.Header%c is deprecated.","font-weight: bold",""),R().createElement("div",{className:"tyk-modal__header"},u)),V5.Title=({children:u})=>(console.warn("%cModal.Title%c is deprecated.","font-weight: bold",""),R().createElement("h4",{className:"tyk-modal__title"},u)),V5.propTypes={children:n().oneOfType([n().element,n().node,n().string]),className:n().string,theme:n().string,disableCloseCommands:n().bool,opened:n().bool,onClose:n().func,size:n().string,showBackdrop:n().bool};const y9=V5;function D1(u){const{children:e,title:t,description:f,confirmBtnText:x="Confirm",cancelBtnText:P="Cancel"}=u,[F,H]=(0,D.useState)(!1),[V,K]=(0,D.useState)(null),[X,e0]=(0,D.useState)(null),Z=(c0,r0,o0)=>(...g0)=>{o0&&o0(...g0),H(!0),K(()=>()=>c0(...g0)),r0&&e0(()=>()=>r0(...g0))},Q=()=>{H(!1),K(null),e0(null)},i0=()=>{X&&X(),Q()},J=()=>{V(),Q()};return R().createElement(R().Fragment,null,e(Z),R().createElement(y9,{opened:F,onClose:i0},R().createElement(y9.Body,null,R().createElement("h4",null,t),f),R().createElement(y9.Footer,null,R().createElement(j0,{onClick:i0,theme:"default"},P),R().createElement(j0,{onClick:J,theme:"success"},x))))}D1.propTypes={confirmBtnText:n().string,cancelBtnText:n().string,title:n().string,description:n().string,children:n().oneOfType([n().element,n().string,n().object,n().node,n().func])};const D6=D1;function y2({children:u,className:e,showShadow:t}){const f=(0,D.useRef)(null),x=(0,D.useCallback)(()=>{const F=f.current;F&&(window.scrollY?F.classList.add("tyk-fixed-wrapper--scrolled"):F.classList.remove("tyk-fixed-wrapper--scrolled"))},[f.current]),P=(0,D.useCallback)(a0(x,100),[x]);return(0,D.useEffect)(()=>(t&&window.addEventListener("scroll",P),()=>{window.removeEventListener("scroll",P)}),[P,t]),R().createElement("div",{className:`tyk-fixed-wrapper ${e}`,ref:f},u)}y2.propTypes={children:n().oneOfType([n().element,n().node,n().string]),className:n().string,showShadow:n().bool},y2.defaultProps={className:""};const W6=y2;function b2({children:u,hasMore:e,initialLoad:t,loadMore:f,pageNumber:x,refChild:P}){const[F,H]=(0,D.useState)(!1),V=(0,D.useRef)(null),K=I(P);(0,D.useEffect)(()=>{t&&typeof f=="function"&&(H(!1),f(x))},[t]);const X=(0,D.useCallback)(()=>{if(!V.current)return!1;const{clientHeight:J,scrollTop:c0}=V.current;return e&&(J+Math.round(c0)===K.height||J>=K.height)},[V,K.height]),e0=(0,D.useCallback)(()=>{e&&typeof f=="function"?(f(x+1),H(!0)):H(!1)},[e,x]),Z=w(x),Q=(0,D.useCallback)(a0(()=>{X()&&Z<=x&&e0()},200),[e0,X]);(0,D.useEffect)(()=>{var J;return(J=V.current)==null||J.addEventListener("scroll",Q),()=>{var c0;return(c0=V.current)==null?void 0:c0.removeEventListener("scroll",Q)}},[V,Q]),(0,D.useEffect)(()=>{Z>0&&x===0&&(V.current.scrollTop=0)},[V,x]);const i0=w(K);return(0,D.useEffect)(()=>{K&&i0&&K.height!==i0.height&&F===!0&&H(!1)},[F,K.height]),(0,D.useEffect)(()=>{P&&K.heighte in u?H6(u,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):u[e]=t,V6=(u,e)=>{for(var t in e||(e={}))z6.call(e,t)&&H1(u,t,e[t]);if(W1)for(var t of W1(e))j6.call(e,t)&&H1(u,t,e[t]);return u};function z1({element:u,size:e="auto",forceDisplay:t="auto",displayAxis:f="auto",preferredPosition:x,offset:P=0,className:F,children:H,infiniteScrollerConfig:V},K){const X=(0,D.useRef)(null),e0=K||X,Z=(0,D.useRef)(null);function Q(){const J=u.current,c0=e0.current;if(!c0)return(x!=null?x:f==="vertical")?"bottom":"right";const{left:r0,top:o0}=J.getBoundingClientRect(),g0=o0,y0=window.innerHeight-o0-J.offsetHeight,L0=r0,E0=window.innerWidth-r0-J.offsetWidth,S0=g0>c0.scrollHeight,B0=y0>c0.scrollHeight,I0=L0>c0.offsetWidth,v0=E0>c0.offsetWidth,l0=r0+J.offsetWidth/2-c0.offsetWidth/2>0,s0=o0+J.offsetHeight/2-c0.scrollHeight/2>0;return f==="vertical"||f==="auto"&&(S0||B0)&&l0?x==="top"&&S0?"top":x==="bottom"&&B0||B0||y0>g0?"bottom":"top":f==="horizontal"?x==="left"&&I0?"left":x==="right"&&I0||v0||E0>L0?"right":"left":S0&&l0?"top":B0&&l0?"bottom":v0&&s0?"right":I0&&s0?"left":x!=null?x:"bottom"}function i0(){const J=t!=="auto"?t:Q(),c0=u.current,r0=e0.current;if(!c0||!r0)return;const o0=c0.getBoundingClientRect();if(J==="top"){const g0=o0.top-r0.offsetHeight-P;r0.style.top=`${g0}px`,r0.style.left=e==="auto"?`${o0.left+c0.offsetWidth/2-r0.offsetWidth/2}px`:`${o0.left}px`,e==="matchElement"?r0.style.width=`${c0.offsetWidth}px`:typeof e=="function"&&(r0.style.width=`${e(c0.offsetWidth)}px`),r0.style.maxHeight=`${o0.top-P}px`}if(J==="bottom"&&(r0.style.top=`${o0.bottom+P}px`,r0.style.left=e==="auto"?`${o0.left+c0.offsetWidth/2-r0.offsetWidth/2}px`:`${o0.left}px`,e==="matchElement"?r0.style.width=`${c0.offsetWidth}px`:typeof e=="function"&&(r0.style.width=`${e(c0.offsetWidth)}px`),r0.style.maxHeight=`${window.innerHeight-o0.bottom-P}px`),J==="left"){const g0=o0.top+c0.offsetHeight/2-r0.offsetHeight/2;r0.style.top=e==="auto"?`${g0}px`:`${o0.top}px`,r0.style.left=`${o0.left-r0.offsetWidth-P}px`,e==="matchElement"?r0.style.height=`${c0.offsetHeight}px`:typeof e=="function"&&(r0.style.height=`${e(c0.offsetHeight)}px`),r0.style.maxWidth=`${o0.left-P}px`}if(J==="right"){const g0=o0.top+c0.offsetHeight/2-r0.offsetHeight/2;r0.style.top=e==="auto"?`${g0}px`:`${o0.top}px`,r0.style.left=`${o0.left+c0.offsetWidth+P}px`,e==="matchElement"?r0.style.height=`${c0.offsetHeight}px`:typeof e=="function"&&(r0.style.height=`${e(c0.offsetHeight)}px`),r0.style.maxWidth=`${window.innerWidth-o0.left-c0.offsetWidth-P}px`}}return(0,D.useEffect)(()=>{window.requestAnimationFrame(function J(){i0(),window.requestAnimationFrame(J)})},[]),(0,v2.createPortal)(R().createElement("div",{className:`floating-container ${F||""}`,ref:e0},R().createElement(b9,V6({refChild:Z},V),R().createElement("div",{className:"floating-container__content-wrapper",ref:Z},H))),document.querySelector("body"))}z1.propTypes={element:n().instanceOf(Object),className:n().string,size:n().oneOfType([n().oneOf(["auto","matchElement"]),n().func]),offset:n().number,forceDisplay:n().oneOf(["auto","top","bottom","left","right"]),displayAxis:n().oneOf(["auto","vertical","horizontal"]),preferredPosition:n().oneOf(["top","bottom","left","right"]),infiniteScrollerConfig:n().instanceOf(Object)};const w9=(0,D.forwardRef)(z1);function j1({children:u}){return R().createElement("div",{className:"tyk-info-note"},R().createElement(D0,{theme:"info"},u))}j1.propTypes={children:n().oneOfType([n().element,n().node,n().string])};const U6=j1,w2=u=>{const{className:e,children:t}=u;return R().createElement("li",{className:e},t)};w2.propTypes={children:n().oneOfType([n().arrayOf(n().node),n().node,n().element,n().string]),className:n().string},w2.defaultProps={className:""};const G6=w2,C9=u=>{const{className:e,children:t,label:f,labelwidth:x,theme:P,style:F}=u,H=()=>{let K=["tyk-list"];return P&&K.push(`tyk-list--${P}`),e&&(K=K.concat(e.split(" "))),K.join(" ")},V=()=>{const K=(0,W0.fromJS)(F).toJS();return x&&(K.flexBasis=`calc(100% - ${x} - 20px)`),K};return R().createElement("div",{className:`tyk-list__wrapper ${x?"tyk-list--with-inline-label":""}`},f!==void 0?R().createElement("label",{style:{flexBasis:x||"auto"}},f):null,R().createElement("ul",{className:H(),style:V()},t))};C9.propTypes={children:n().oneOfType([n().arrayOf(n().node),n().node,n().element,n().string]),className:n().string,label:n().string,labelwidth:n().string,theme:n().string,style:n().instanceOf(Object)},C9.defaultProps={theme:"default",style:{}},C9.Item=G6;const C2=C9;function V1({align:u="center",children:e,left:t,right:f,title:x,pre:P,subtitle:F,withTabs:H}){const V=F?R().createElement("p",{className:"font-family-medium"},F):null;return R().createElement("section",{className:`tyk-nav-bar ${H?"tyk-nav-bar__with-tabs":""}`},R().createElement("div",{className:`tyk-nav-bar__wrapper tyk-nav-bar--align-${u}`},P&&R().createElement("div",{className:"tyk-nav-bar__pre"},P),x?R().createElement("div",null,R().createElement("h1",null,x),V):V,R().createElement("div",{className:"tyk-nav-bar__container"},t&&R().createElement("div",{className:"tyk-nav-bar__left"},t),f&&R().createElement("div",{className:"tyk-nav-bar__right"},f))),e)}V1.propTypes={align:n().string,children:n().oneOfType([n().arrayOf(n().node),n().node,n().element,n().string]),title:n().string,subtitle:n().string,pre:n().oneOfType([n().element,n().node]),left:n().oneOfType([n().element,n().node]),right:n().oneOfType([n().element,n().node]),withTabs:n().bool};const K6=V1;function U1({children:u}){return R().createElement("li",{className:"tyk-navigation-item"},u)}U1.propTypes={children:n().oneOfType([n().arrayOf(n().node),n().node,n().element,n().string])};const Y6=U1;function A2({children:u}){return R().createElement("ul",{className:"tyk-navigation"},u)}A2.propTypes={children:n().oneOfType([n().arrayOf(n().node),n().node,n().element,n().string])},A2.Item=Y6;const X6=A2,k2=(0,D.createContext)();var J6=Object.defineProperty,Q6=Object.defineProperties,q6=Object.getOwnPropertyDescriptors,A9=Object.getOwnPropertySymbols,G1=Object.prototype.hasOwnProperty,K1=Object.prototype.propertyIsEnumerable,Y1=(u,e,t)=>e in u?J6(u,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):u[e]=t,X1=(u,e)=>{for(var t in e||(e={}))G1.call(e,t)&&Y1(u,t,e[t]);if(A9)for(var t of A9(e))K1.call(e,t)&&Y1(u,t,e[t]);return u},J1=(u,e)=>Q6(u,q6(e)),Z6=(u,e)=>{var t={};for(var f in u)G1.call(u,f)&&e.indexOf(f)<0&&(t[f]=u[f]);if(u!=null&&A9)for(var f of A9(u))e.indexOf(f)<0&&K1.call(u,f)&&(t[f]=u[f]);return t};function Q1(u){var e=u,{children:t,noPadding:f,className:x}=e,P=Z6(e,["children","noPadding","className"]);const F=(0,D.useCallback)(()=>["tyk-panel__body",x,f&&"no-padding"].filter(Boolean).join(" "),[x,f]);return R().createElement(k2.Consumer,null,H=>H.collapsable?R().createElement(m0,J1(X1({},P),{collapsed:H.collapsed,className:F()}),t):R().createElement("div",J1(X1({},P),{className:F()}),t))}Q1.propTypes={children:n().oneOfType([n().element,n().node,n().string]),noPadding:n().bool,className:n().string};const e8=Q1,q1=u=>{const{children:e}=u;return R().createElement("div",{className:"tyk-panel__footer"},e)};q1.propTypes={children:n().oneOfType([n().element,n().node,n().string])};const t8=q1;var n8=Object.defineProperty,r8=(u,e,t)=>e in u?n8(u,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):u[e]=t,i8=(u,e,t)=>(r8(u,typeof e!="symbol"?e+"":e,t),t);class Z1 extends D.Component{getCssClasses(e){const{className:t}=this.props;let f=["tyk-panel__header"];return e.collapsable&&f.push("collapsable"),t&&(f=f.concat(t.split(" "))),f.join(" ")}render(){const{children:e}=this.props;return R().createElement(k2.Consumer,null,t=>{const f=t.theme==="blank"?"h3":"div",x=t.collapsed?"chevron-down":"chevron-up";return R().createElement(f,{className:this.getCssClasses(t),onClick:t.collapsable?t.onToggle:void 0},e,t.collapsable?R().createElement("div",{className:`collapsable__arrow-${t.collapsibleIconPosition}`},R().createElement(a,{type:x})):null)})}}i8(Z1,"propTypes",{children:n().oneOfType([n().element,n().node,n().string]).isRequired,className:n().string});const i9=u=>{const{children:e,className:t,collapsed:f,collapsable:x,theme:P,onToggleCollapse:F,collapsibleIconPosition:H="right"}=u,[V,K]=(0,D.useState)(f||!1);(0,D.useEffect)(()=>{f!==V&&K(f)},[f]);const X=()=>{let Z=["tyk-panel"];const Q=`tyk-panel--${P||"default"}`,i0=`tyk-panel__icon-collapse--${H}`;return Z.push(Q),Z.push(i0),t&&(Z=Z.concat(t.split(" "))),V&&Z.push("tyk-panel--collapsed"),Z.join(" ")},e0=()=>{K(!V),F&&F(!V)};return R().createElement("div",{className:X()},R().createElement(k2.Provider,{value:{collapsable:x,collapsed:V,onToggle:e0,theme:P,collapsibleIconPosition:H}},typeof e=="function"?e({toggleCollapse:e0}):e))};i9.propTypes={children:n().oneOfType([n().func,n().element,n().node,n().string]),className:n().string,collapsable:n().bool,collapsibleIconPosition:n().string,collapsed:n().bool,theme:n().string,onToggleCollapse:n().func},i9.Body=e8,i9.Footer=t8,i9.Header=Z1;const o8=i9,x2=u=>{const{children:e,className:t,theme:f}=u,x=()=>{let P=["tyk-pill",...f.split(" ").map(F=>`tyk-pill--${F}`)];return t&&(P=P.concat(t)),P.join(" ")};return R().createElement("div",{className:x()},e)};x2.propTypes={children:n().oneOfType([n().arrayOf(n().node),n().node,n().element,n().string]),className:n().string,theme:n().string},x2.defaultProps={theme:"default"};const e7=x2;var t7=(u,e,t)=>{if(!e.has(u))throw TypeError("Cannot "+t)},q0=(u,e,t)=>(t7(u,e,"read from private field"),t?t.call(u):e.get(u)),$5=(u,e,t)=>{if(e.has(u))throw TypeError("Cannot add the same private member more than once");e instanceof WeakSet?e.add(u):e.set(u,t)},C5=(u,e,t,f)=>(t7(u,e,"write to private field"),f?f.call(u,t):e.set(u,t),t),E5,O5,I5,T5,U5,G5,K5,Y5;class s8{constructor(){$5(this,E5,null),$5(this,O5,null),$5(this,I5,null),$5(this,T5,null),$5(this,U5,[]),$5(this,G5,[]),$5(this,K5,[]),$5(this,Y5,!1)}on(e,t){let f=null;e==="onHeightChange"?f=q0(this,U5):e==="onDragStart"?f=q0(this,G5):e==="onDragEnd"&&(f=q0(this,K5)),f&&this.addListener(f,t)}off(e,t){let f=null;e==="onHeightChange"?f=q0(this,U5):e==="onDragStart"?f=q0(this,G5):e==="onDragEnd"&&(f=q0(this,K5)),f&&this.removeListener(f,t)}setRefs(e,t,f){(q0(this,O5)||q0(this,I5)||q0(this,T5))&&this.unbindEvents(),C5(this,T5,e),C5(this,O5,t),C5(this,I5,f),C5(this,E5,null),this.bindEvents()}bindEvents(){this.ensureRefs("bindEvents"),q0(this,I5).addEventListener("mousedown",this.onMouseDown.bind(this)),document.addEventListener("mousemove",this.onMouseMove.bind(this)),document.addEventListener("mouseup",this.onMouseUp.bind(this))}getHeight(){return this.ensureRefs("getHeight"),q0(this,O5).getBoundingClientRect().height}onMouseDown(e){this.ensureRefs("onMouseDown"),C5(this,E5,{mouseDown:!0,initialRect:q0(this,O5).getBoundingClientRect(),initialEvent:e})}onMouseMove(e){if(this.ensureRefs("onMouseMove"),!q0(this,E5))return;if(!this.isPrimaryMouseButtonDown(e)){this.onMouseUp();return}q0(this,Y5)||(C5(this,Y5,!0),this.onDragStart.bind(this)());const f=q0(this,E5).initialEvent.y-e.y,x=Math.ceil(q0(this,E5).initialRect.height+f);this.setHeight(`${x}px`,"mousemove")}notifyListeners(e,t){e&&Array.isArray(e)&&e.length&&e.forEach(f=>{typeof f=="function"&&f(t)})}addListener(e,t){e&&Array.isArray(e)&&typeof t=="function"&&e.push(t)}removeListener(e,t){if(e&&Array.isArray(e)&&typeof t=="function"&&e.length){const f=e.indexOf(t);f>-1&&e.splice(f,1)}}onDragEnd(){q0(this,Y5)&&this.notifyListeners(q0(this,K5),this.getHeight())}onDragStart(){this.notifyListeners(q0(this,G5),this.getHeight())}isPrimaryMouseButtonDown(e){return(e.buttons!==void 0?e.buttons:e.which)===1}onMouseUp(){C5(this,E5,null),this.onDragEnd.bind(this)(),C5(this,Y5,!1)}setHeight(e){let t=e;this.ensureRefs("setHeight"),typeof t=="number"&&(t+="px"),q0(this,O5).style.height=t,this.notifyListeners(q0(this,U5),this.getHeight())}ensureRefs(e){if(!q0(this,O5)||!q0(this,I5)||!q0(this,T5))throw new Error(`${e}: Wrapper, panel, and gutter elements are required. Use setRefs method first.`)}isHidden(){return this.ensureRefs("isHidden"),q0(this,T5).style.visibility==="hidden"}hide(){this.ensureRefs("hide"),q0(this,T5).style.visibility="hidden"}show(){this.ensureRefs("show"),q0(this,T5).style.visibility="visible"}unbindEvents(){C5(this,U5,[]),C5(this,G5,[]),C5(this,K5,[]),q0(this,I5).removeEventListener("mousedown",this.onMouseDown.bind(this)),document.removeEventListener("mousemove",this.onMouseMove.bind(this)),document.removeEventListener("mouseup",this.onMouseUp.bind(this))}deinit(){this.unbindEvents()}}E5=new WeakMap,O5=new WeakMap,I5=new WeakMap,T5=new WeakMap,U5=new WeakMap,G5=new WeakMap,K5=new WeakMap,Y5=new WeakMap;const a8=()=>(0,D.useRef)(new s8).current;function S2({children:u}){return R().createElement(R().Fragment,null,u)}S2.propTypes={children:n().instanceOf({})};function _2({children:u}){return R().createElement(R().Fragment,null,u)}_2.propTypes={children:n().instanceOf({})};const $2=(...u)=>u.map(e=>(e||"").trim()).filter(Boolean).join(" "),k9=(0,D.forwardRef)(({children:u,height:e,onHeightChange:t=null,onDragStart:f=null,onDragEnd:x=null,style:P=null,parentSelector:F=null,contentStyle:H,contentClassName:V,gutterClassName:K,wrapperClassName:X},e0)=>{const Z=(0,D.useRef)(null),Q=(0,D.useRef)(null),i0=(0,D.useRef)(null),J=a8();(0,D.useEffect)(()=>{if(!(!Z.current||!Q.current||!i0.current)&&J)return J.setRefs(i0.current,Z.current,Q.current),J.on("onHeightChange",t),J.on("onDragStart",f),J.on("onDragEnd",x),J.setHeight(e,"initialize"),()=>{J.unbindEvents()}},[]),(0,D.useImperativeHandle)(e0,()=>{const y0=L0=>L0.bind(J);return{getHeight:y0(J.getHeight),setHeight:y0(J.setHeight),hide:y0(J.hide),show:y0(J.show),isHidden:y0(J.isHidden),deinit:y0(J.deinit),on:y0(J.on),off:y0(J.off)}},[]);let c0=null,r0=null;const o0=[];R().Children.forEach(u,y0=>{y0&&R().isValidElement(y0)&&(y0.type===S2?c0=y0:y0.type===_2?r0=y0:o0.push(y0))});const g0=R().createElement("div",{className:$2("tyk-ui-reveal-wrapper",X||"cem"),ref:i0,style:P},R().createElement("div",{className:"tyk-ui-reveal-wrapper__hole"}),R().createElement("div",{ref:Q,className:$2("tyk-ui-reveal-wrapper__gutter",K)},R().createElement("div",{className:"tyk-ui-reveal-wrapper__gutter__headerleft"},c0),R().createElement("div",{className:"tyk-ui-reveal-wrapper__gutter__logo"}," "),R().createElement("div",{className:"tyk-ui-reveal-wrapper__gutter__headerright"},r0)),R().createElement("div",{ref:Z,className:$2("tyk-ui-reveal-wrapper__panel",V),style:H},o0));if(F)return(0,v2.createPortal)(g0,document.querySelector(F))});k9.propTypes={children:n().instanceOf({}),height:n().string,onHeightChange:n().func,onDragStart:n().func,onDragEnd:n().func,parentSelector:n().string,style:n().instanceOf({}),contentStyle:n().instanceOf({}),contentClassName:n().string,gutterClassName:n().string,wrapperClassName:n().string},k9.HeaderLeft=S2,k9.HeaderRight=_2;const l8=k9,n7=(0,D.createContext)(),r7=(0,D.createContext)();var c8=Object.defineProperty,i7=Object.getOwnPropertySymbols,u8=Object.prototype.hasOwnProperty,h8=Object.prototype.propertyIsEnumerable,o7=(u,e,t)=>e in u?c8(u,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):u[e]=t,s7=(u,e)=>{for(var t in e||(e={}))u8.call(e,t)&&o7(u,t,e[t]);if(i7)for(var t of i7(e))h8.call(e,t)&&o7(u,t,e[t]);return u};const a7=u=>{const{addTab:e,hideTab:t,updateTab:f,showTab:x,children:P,selectedPath:F,tabData:H,tabsId:V,tabExists:K,path:X,rendered:e0,hideTabContent:Z,tabs:Q}=u;(0,D.useEffect)(()=>{const c0=s7({},H);K(X)||e(c0,X)},[H,X]);const i0=w(H);return(0,D.useEffect)(()=>{if(K(X)&&(H!=null&&H.title)&&((i0==null?void 0:i0.title)!==(H==null?void 0:H.title)||i0.selected!==H.selected)){const c0=s7({},H);f(c0,X)}},[H,X,i0,Q]),(0,D.useEffect)(()=>(x(X),()=>t(X)),[]),(0,D.useMemo)(()=>!Object.keys(Q).length||Z||Q[H.id].show===!1?!1:e0?F&&F.indexOf(H.id)>-1:K(X),[Z,e0,F,H,Q])?R().createElement("div",{key:H.id,className:"tyk-tab__content",style:{display:F&&F.indexOf(H.id)>-1?"block":"none"}},R().createElement(r7.Provider,{value:{path:X,tabsId:V}},P)):null};a7.propTypes={addTab:n().func,updateTab:n().func,hideTab:n().func,showTab:n().func,children:n().oneOfType([n().arrayOf(n().node),n().node,n().element,n().string]),path:n().instanceOf(Array),hideTabContent:n().bool,rendered:n().bool,selectedPath:n().instanceOf(Array),tabExists:n().func,tabsId:n().string,tabData:n().instanceOf(Object),tabs:n().instanceOf(Object)};const d8=a7,E2=u=>{const{id:e}=u,t=(0,D.useContext)(n7),f=(0,D.useContext)(r7),{tabExists:x,selectedPath:P,addTab:F,updateTab:H,hideTab:V,showTab:K,rendered:X,hideTabContent:e0,tabs:Z}=t,{children:Q}=u,[i0,J]=(0,D.useState)("");return(0,D.useEffect)(()=>{let c0;f&&i0?f.tabsId===t.id?c0=f.path.concat([e]):c0=[e]:c0=[e],J(c0)},[f]),i0?R().createElement(D.Fragment,null,R().createElement(d8,{addTab:F,updateTab:H,hideTab:V,showTab:K,tabExists:x,tabData:u,path:i0,tabsId:t.id,selectedPath:P,rendered:X,hideTabContent:e0,tabs:Z},Q)):null};E2.propTypes={children:n().oneOfType([n().arrayOf(n().node),n().node,n().element,n().string]),id:n().string},E2.defaultProps={};const f8=E2;var p8=Object.defineProperty,l7=Object.getOwnPropertySymbols,g8=Object.prototype.hasOwnProperty,m8=Object.prototype.propertyIsEnumerable,c7=(u,e,t)=>e in u?p8(u,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):u[e]=t,o9=(u,e)=>{for(var t in e||(e={}))g8.call(e,t)&&c7(u,t,e[t]);if(l7)for(var t of l7(e))m8.call(e,t)&&c7(u,t,e[t]);return u};const O2=u=>{const{children:e,className:t,id:f,onTabChange:x,type:P,hideTabContent:F}=u,[H,V]=(0,D.useState)({}),[K,X]=(0,D.useState)([]),[e0,Z]=(0,D.useState)(!1),[Q,i0]=(0,D.useState)(null);(0,D.useEffect)(()=>{X(Q)},[Q]);const J=(v0,l0,s0)=>{let C0=Object.assign({},v0);const T0=Object.assign({},s0),$0=l0.slice(0);for(;$0.length>1;)C0=C0[$0.shift()],C0||(C0={});return T0.tempPath=$0,C0[$0.shift()]=T0,C0},c0=(v0,l0)=>{let s0=Object.assign({},v0);const C0=l0.slice(0);for(;C0.length>1;)s0=s0[C0.shift()];const T0=C0.shift();return s0[T0].collapsed===void 0?s0[T0].collapsed=!0:s0[T0].collapsed=!s0[T0].collapsed,s0},r0=()=>{let v0=["tyk-tabs"];return v0.push(`tyk-tabs--${P||"default"}`),t&&(v0=v0.concat(t.split(" "))),v0.join(" ")},o0=(v0,l0)=>{const s0=v0.slice(0);let C0=!0;l0.collapsible&&(s0.push(Object.keys(l0.tabs)[0]),C0=!1),V(T0=>{let $0=Object.assign({},T0);return $0=c0($0,v0),$0}),X(s0),Z(C0),x&&x(l0)},g0=v0=>{const l0=[];return K&&K.indexOf(v0)>-1&&l0.push("active"),l0.join(" ")},y0=(v0,l0)=>v0?R().createElement("ul",null,Object.keys(v0).map((s0,C0)=>{const T0=l0?l0.concat([v0[s0].id]):[v0[s0].id],$0=v0[s0].collapsed?"chevron-up":"chevron-down";return v0[s0].show===!1?null:R().createElement("li",{className:g0(v0[s0].id),key:v0[s0].id},R().createElement("button",{type:"button",onClick:o0.bind(null,T0,v0[s0]),onKeyDown:o0.bind(null,T0,v0[s0]),tabIndex:C0},v0[s0].title,v0[s0].collapsible?R().createElement(a,{className:"collapsable-arrow",type:$0}):null),v0[s0].collapsible?R().createElement(m0,{collapsed:v0[s0].collapsed},y0(v0[s0].tabs,T0)):y0(v0[s0].tabs,T0))})):null,L0=(v0,l0)=>{V(s0=>J(o9({},s0),l0,v0)),v0.selected&&i0(l0)},E0=(v0,l0)=>{V(s0=>{const C0=o9({},s0);return C0[v0.id]=v0,C0}),v0.selected&&o0(l0,v0)},S0=v0=>{V(l0=>{const s0=o9({},l0);return s0[v0].show=!1,s0})},B0=v0=>{V(l0=>{const s0=o9({},l0);return s0[v0].show=!0,s0})},I0=v0=>{let l0=o9({},H);const s0=v0.slice(0);for(;s0.length>1;)l0=l0[s0.shift()];const C0=s0.shift();return!!(l0&&l0[C0])};return R().createElement("div",{className:r0()},y0(H),R().createElement(n7.Provider,{value:{id:f,addTab:L0,hideTab:S0,updateTab:E0,showTab:B0,tabExists:I0,selectedPath:K,rendered:e0,hideTabContent:F,tabs:H}},typeof e=="function"?e({hideTab:S0,showTab:B0}):e))};O2.propTypes={className:n().string,children:n().oneOfType([n().arrayOf(n().node),n().node,n().element,n().string]),hideTabContent:n().bool,id:n().string,onTabChange:n().func,type:n().string},O2.Tab=f8;const v8=O2;var y8=Object.defineProperty,x9=Object.getOwnPropertySymbols,u7=Object.prototype.hasOwnProperty,h7=Object.prototype.propertyIsEnumerable,d7=(u,e,t)=>e in u?y8(u,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):u[e]=t,T2=(u,e)=>{for(var t in e||(e={}))u7.call(e,t)&&d7(u,t,e[t]);if(x9)for(var t of x9(e))h7.call(e,t)&&d7(u,t,e[t]);return u},b8=(u,e)=>{var t={};for(var f in u)u7.call(u,f)&&e.indexOf(f)<0&&(t[f]=u[f]);if(u!=null&&x9)for(var f of x9(u))e.indexOf(f)<0&&h7.call(u,f)&&(t[f]=u[f]);return t};function f7(u){var e=u,{render:t,className:f,children:x,position:P="auto",style:F,icon:H=!1,closable:V,isOpened:K=!1,additionalClickParents:X=[]}=e,e0=b8(e,["render","className","children","position","style","icon","closable","isOpened","additionalClickParents"]);const[Z,Q]=(0,D.useState)(!1),i0=(0,D.useRef)(null),J=(0,D.useRef)(null),c0=V?{onClick:()=>Q(!0)}:{onMouseEnter:()=>Q(!0),onMouseLeave:()=>Q(!1),onFocus:()=>Q(!0),onBlur:()=>Q(!1)},r0=(0,D.useCallback)(g0=>{[...X,J.current].some(y0=>{var L0;return(L0=y0==null?void 0:y0.contains)==null?void 0:L0.call(y0,g0.target)})||Q(!1)},[X]);(0,D.useEffect)(()=>(document.addEventListener("click",r0,!0),()=>document.removeEventListener("click",r0,!0)),[r0]),(0,D.useEffect)(()=>{Q(K)},[K]);const o0=["tyk-tooltip",f].filter(Boolean).join(" ");return R().createElement("div",T2(T2({className:"tyk-tooltip__wrapper",style:T2({display:"inline-block"},F),ref:i0},c0),e0),x,Z&&R().createElement(w9,{element:i0,forceDisplay:P,preferredPosition:"top",offset:20},R().createElement("div",{className:o0,ref:J},H&&(H===!0?R().createElement(a,{family:"tykon",type:"help"}):H),R().createElement("div",{className:"tyk-tooltip__content"},t),V&&R().createElement(a,{family:"tykon",type:"x",onClick:g0=>{g0.stopPropagation(),Q(!1)}}))))}f7.propTypes={children:n().node.isRequired,style:n().instanceOf(Object),position:n().string,render:n().oneOfType([n().node,n().string]),className:n().string,icon:n().oneOfType([n().bool,n().node]),closable:n().bool,isOpened:n().bool,additionalClickParents:n().instanceOf(Array)};const R2=f7;function p7({text:u,limit:e,position:t}){return u.length>e?R().createElement(R2,{render:u,position:t},u.substring(0,e),"..."):u}p7.propTypes={text:n().string,limit:n().number,position:n().string};const w8=p7;var C8=Object.defineProperty,A8=(u,e,t)=>e in u?C8(u,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):u[e]=t,k8=(u,e,t)=>(A8(u,typeof e!="symbol"?e+"":e,t),t);const x8=(u,e,t)=>t<10||e<5&&u<5||e>t-5&&u>t-5||u>=e-2&&u<=e+2||[0,1,t-1,t].indexOf(u)>-1,M2=(u,e)=>{let t;const f=[];for(t=0;t<=u;t+=1)x8(t,e,u)&&(t>f[f.length-1]&&f.push("..."),f.push(t+1));return f};class S9 extends D.Component{constructor(e){super(e);const{value:t,totalNrOfPages:f}=this.props;this.state={prevProps:this.props,selectedPage:t||0,pagesArray:M2(f,t)},this.pageKey=0}static getDerivedStateFromProps(e,t){return e.value!==t.prevProps.value||e.totalNrOfPages!==t.prevProps.totalNrOfPages?{selectedPage:e.value,pagesArray:M2(e.totalNrOfPages,e.value)}:null}getPageCssClass(e){const{selectedPage:t}=this.state,f=[];return t===e&&f.push("active"),f.join(" ")}getPageKey(){return this.pageKey+=1,this.pageKey}goToPage(e){const{onChange:t,totalNrOfPages:f}=this.props;this.setState({selectedPage:e,pagesArray:M2(f,e)},()=>{t&&t(e)})}render(){const{totalNrOfPages:e}=this.props,{pagesArray:t,selectedPage:f}=this.state;return R().createElement(D.Fragment,null,e?R().createElement("ul",{className:"tyk-pagination"},f>0&&e>5?R().createElement("li",null,R().createElement("button",{onClick:this.goToPage.bind(this,f-1),type:"button"},"Previous")):null,t.map(x=>R().createElement("li",{key:this.getPageKey(),className:this.getPageCssClass(x-1)},x!=="..."?R().createElement("button",{onClick:this.goToPage.bind(this,x-1),type:"button"},x):R().createElement("span",null,x))),f5?R().createElement("li",null,R().createElement("button",{onClick:this.goToPage.bind(this,f+1),type:"button"},"Next")):null):null)}}k8(S9,"propTypes",{value:n().number,totalNrOfPages:n().number,onChange:n().func});const s9=(0,D.createContext)(),g7=({column:u})=>{const{sortable:e}=u,[t,f]=(0,D.useState)((e==null?void 0:e.default)||"ASC"),{state:x,sendMessage:P}=(0,D.useContext)(s9);return R().createElement("th",{key:u.id,onClick:e?()=>{P("sort",{column:u,sortOrder:t}),f(t==="ASC"?"DESC":"ASC")}:null,className:x.maxHeight?"fixed-header":""},u.name,u.sortable&&R().createElement("span",{className:"header-sort"},R().createElement(a,{family:"tykon",type:"arrowsort"})))};g7.propTypes={column:n().instanceOf(Object)};var S8=Object.defineProperty,_8=Object.defineProperties,$8=Object.getOwnPropertyDescriptors,m7=Object.getOwnPropertySymbols,E8=Object.prototype.hasOwnProperty,O8=Object.prototype.propertyIsEnumerable,v7=(u,e,t)=>e in u?S8(u,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):u[e]=t,T8=(u,e)=>{for(var t in e||(e={}))E8.call(e,t)&&v7(u,t,e[t]);if(m7)for(var t of m7(e))O8.call(e,t)&&v7(u,t,e[t]);return u},R8=(u,e)=>_8(u,$8(e));const M8=()=>{const[u,e]=(0,D.useState)(!1),{state:t,sendMessage:f}=(0,D.useContext)(s9),{columns:x,selectable:P}=t,F=()=>x.map(V=>R().createElement(g7,{key:V.id,column:V})),H=()=>{var V;if(!P)return;const K=P.type;return R().createElement("th",{className:t.maxHeight?"fixed-header":""},P!=null&&P.allowSelectAll?R().createElement("div",{className:P==null?void 0:P.style},R().createElement(K,R8(T8({},P.values),{onClick:()=>{e(!u),f("header.selectAll.click",u)},onChange:X=>{f("header.selectAll.change",X)}}),(V=P.values)==null?void 0:V.value)):P.name||"Select")};return R().createElement("thead",null,R().createElement("tr",null,P&&P.position==="LEFT"&&H(),F(),P&&P.position==="RIGHT"&&H()))};var L8=Object.defineProperty,P8=Object.defineProperties,I8=Object.getOwnPropertyDescriptors,_9=Object.getOwnPropertySymbols,y7=Object.prototype.hasOwnProperty,b7=Object.prototype.propertyIsEnumerable,L2=(u,e,t)=>e in u?L8(u,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):u[e]=t,w7=(u,e)=>{for(var t in e||(e={}))y7.call(e,t)&&L2(u,t,e[t]);if(_9)for(var t of _9(e))b7.call(e,t)&&L2(u,t,e[t]);return u},B8=(u,e)=>P8(u,I8(e)),F8=(u,e)=>{var t={};for(var f in u)y7.call(u,f)&&e.indexOf(f)<0&&(t[f]=u[f]);if(u!=null&&_9)for(var f of _9(u))e.indexOf(f)<0&&b7.call(u,f)&&(t[f]=u[f]);return t},N8=(u,e,t)=>(L2(u,typeof e!="symbol"?e+"":e,t),t);class $9 extends D.Component{getCssClasses(){const{inline:e,disabled:t,readOnly:f,theme:x="",wrapperClassName:P=""}=this.props,F=[P];return F.push("tyk-checkbox"),e&&F.push("tyk-checkbox--inline"),x.trim()&&F.push(...x.split(" ").map(H=>`tyk-checkbox--theme-${H}`)),(t||f)&&F.push("tyk-checkbox--is-disabled"),F.join(" ")}displayError(){const{error:e}=this.props;return e?R().createElement("p",{className:"tyk-form-control__error-message"},e):null}displayNote(){const{note:e}=this.props;return e?R().createElement("p",{className:"tyk-form-control__help-block"},e):null}render(){const e=this.props,{input:t,value:f,label:x}=e,P=F8(e,["input","value","label"]);return R().createElement("div",{className:this.getCssClasses()},R().createElement("div",{className:"tyk-form-control__wrapper"},R().createElement("label",null,R().createElement("input",B8(w7(w7({checked:t?t.value:f},t),P),{type:"checkbox"})),x),this.displayNote(),this.displayError()))}}N8($9,"propTypes",{disabled:n().bool,readOnly:n().bool,inline:n().bool,theme:n().string,error:n().oneOfType([n().string,n().bool]),note:n().string,input:n().instanceOf(Object),label:n().oneOfType([n().arrayOf(n().node),n().node,n().element,n().func,n().string]),name:n().string,value:n().oneOfType([n().string,n().bool]),checked:n().oneOfType([n().string,n().bool]),onChange:n().func,wrapperClassName:n().string});var D8=Object.defineProperty,C7=Object.getOwnPropertySymbols,W8=Object.prototype.hasOwnProperty,H8=Object.prototype.propertyIsEnumerable,A7=(u,e,t)=>e in u?D8(u,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):u[e]=t,P2=(u,e)=>{for(var t in e||(e={}))W8.call(e,t)&&A7(u,t,e[t]);if(C7)for(var t of C7(e))H8.call(e,t)&&A7(u,t,e[t]);return u};const k7=({col:u,row:e})=>{var t,f,x,P,F;if(!e.values[u.id])return R().createElement("td",null);if(u.type==="string")return R().createElement("td",P2({className:((t=e.values[u.id].styling)==null?void 0:t.className)||null},(f=e==null?void 0:e.values[u.id])==null?void 0:f.events),(x=e.values[u.id])==null?void 0:x.value);const H=u.type;return R().createElement("td",P2({className:((P=e.values[u.id].styling)==null?void 0:P.className)||null},(F=e==null?void 0:e.values[u.id])==null?void 0:F.events),R().createElement(H,P2({},e.values[u.id].props),e.values[u.id].children?e.values[u.id].children:null))};k7.propTypes={col:n().instanceOf(Object),row:n().instanceOf(Object),index:n().number};const x7=({row:u,index:e})=>{var t,f;const{state:x,sendMessage:P}=(0,D.useContext)(s9),{columns:F,selectable:H}=x,V=()=>R().createElement("td",null,R().createElement($9,{defaultChecked:u.selected,onChange:K=>P("row.selected",{index:e,selected:K})}));return R().createElement("tr",{onClick:(t=u.events)==null?void 0:t.onClick,className:(f=u.styling)==null?void 0:f.className},H&&H.position==="LEFT"&&V(),F.map(K=>R().createElement(k7,{key:K.id,col:K,row:u,index:e})),H&&H.position==="RIGHT"&&V())};x7.propTypes={row:n().instanceOf(Object),index:n().number};const z8=()=>{const{state:u}=(0,D.useContext)(s9),{rows:e}=u;return R().createElement("tbody",null,e.map((t,f)=>R().createElement(x7,{key:f,row:t,index:f})))};var j8=Object.defineProperty,V8=Object.defineProperties,U8=Object.getOwnPropertyDescriptors,S7=Object.getOwnPropertySymbols,G8=Object.prototype.hasOwnProperty,K8=Object.prototype.propertyIsEnumerable,_7=(u,e,t)=>e in u?j8(u,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):u[e]=t,B5=(u,e)=>{for(var t in e||(e={}))G8.call(e,t)&&_7(u,t,e[t]);if(S7)for(var t of S7(e))K8.call(e,t)&&_7(u,t,e[t]);return u},F5=(u,e)=>V8(u,U8(e));function I2({value:u,onChange:e,noDataMessage:t,loading:f,infiniteScrolling:x}){var P;const[F,H]=(0,D.useState)(null),[V,K]=(0,D.useState)("api"),X=(0,D.useRef)(null),e0=(o0,g0)=>{H(F5(B5({},F),{sort:{order:g0,col:o0}}))},Z=o0=>{H(F5(B5({},F),{rows:F.rows.map(g0=>F5(B5({},g0),{selected:o0}))}))},Q=o0=>{const{index:g0,selected:y0}=o0,L0=F.rows[g0];H(F5(B5({},F),{rows:[...F.rows.slice(0,g0),F5(B5({},L0),{selected:y0}),...F.rows.slice(g0+1)]}))},i0=o0=>{H(F5(B5({},F),{pagination:F5(B5({},F.pagination),{current:o0+1})}))},J={getState:()=>F,setState:o0=>H(o0)},c0=(o0,g0)=>{K(o0),o0==="sort"&&e0(g0.column.id,g0.sortOrder),o0==="header.selectAll.click"&&Z(g0),o0==="header.selectAll.change"&&Z(g0),o0==="row.selected"&&Q(g0),o0==="pagination.change"&&i0(g0)};if((0,D.useEffect)(()=>H(u),[u]),(0,D.useEffect)(()=>{e&&e(V,F,J),K("api")},[F]),!F)return R().createElement(_0,{position:"absolute"});if(F.rows<=0)return R().createElement(D0,{theme:"info"},t||"No Data Available");const r0=()=>R().createElement("table",{className:"tyk-table",ref:X},R().createElement(M8,null),R().createElement(z8,null));return R().createElement(s9.Provider,{value:{state:F,sendMessage:c0}},R().createElement("div",{className:`scrollable ${((P=F.styling)==null?void 0:P.className)||""}`,style:{height:F.maxHeight?F.maxHeight:"auto",position:"relative"}},f&&R().createElement(_0,{position:"absolute",withbackground:!0}),x&&F.pagination?R().createElement(b9,{refChild:X,hasMore:F.pagination.totalPages>F.pagination.current,loadMore:o0=>c0("pagination.change",o0),pageNumber:F.pagination.current-1,initialLoad:!1},r0()):r0()),F.pagination&&!x&&R().createElement("div",{className:"new-table-pagination"},R().createElement(S9,{value:F.pagination.current-1,nrItemsOnPage:F.pagination.perPage-1,totalNrOfPages:F.pagination.totalPages-1,onChange:o0=>c0("pagination.change",o0)})))}I2.propTypes={value:n().shape({columns:n().arrayOf(n().shape({id:n().string.isRequired,name:n().string,type:n().oneOfType([n().string,n().element,n().func]),sortable:n().oneOfType([n().bool,n().shape({default:n().string})])})),rows:n().arrayOf(n().shape({})),selectable:n().shape({}),pagination:n().shape({}),maxHeight:n().string,styling:n().shape({className:n().string})}).isRequired,onChange:n().func,noDataMessage:n().string,loading:n().bool,infiniteScrolling:n().bool},I2.defaultProps={loading:!1,infiniteScrolling:!1,noDataMessage:"No Data Available",onChange:null};const Y8=I2;var X8=Object.defineProperty,J8=Object.defineProperties,Q8=Object.getOwnPropertyDescriptors,E9=Object.getOwnPropertySymbols,$7=Object.prototype.hasOwnProperty,E7=Object.prototype.propertyIsEnumerable,B2=(u,e,t)=>e in u?X8(u,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):u[e]=t,q8=(u,e)=>{for(var t in e||(e={}))$7.call(e,t)&&B2(u,t,e[t]);if(E9)for(var t of E9(e))E7.call(e,t)&&B2(u,t,e[t]);return u},Z8=(u,e)=>J8(u,Q8(e)),ee=(u,e)=>{var t={};for(var f in u)$7.call(u,f)&&e.indexOf(f)<0&&(t[f]=u[f]);if(u!=null&&E9)for(var f of E9(u))e.indexOf(f)<0&&E7.call(u,f)&&(t[f]=u[f]);return t},te=(u,e,t)=>(B2(u,typeof e!="symbol"?e+"":e,t),t);class O7 extends D.PureComponent{getCssClasses(){const{align:e,className:t,offset:f,size:x}=this.props,P=x.split(" "),F=f?f.split(" "):[];let H=P.map(K=>`tyk-col--${K}`);const V=F.map(K=>`tyk-col--offset-${K}`);return e&&H.push(`tyk-col--align-${e}`),t&&(H=H.concat(t.split(" "))),H.push("tyk-col"),H=H.concat(V||[]),H.join(" ")}render(){const e=this.props,{children:t,id:f}=e,x=ee(e,["children","id"]);return R().createElement("div",Z8(q8({},x),{className:this.getCssClasses(),id:f}),t)}}te(O7,"propTypes",{align:n().string,className:n().string,id:n().string,size:n().string.isRequired,offset:n().string,children:n().oneOfType([n().element,n().string,n().object,n().node])});const O9=O7;var ne=Object.defineProperty,re=Object.defineProperties,ie=Object.getOwnPropertyDescriptors,T9=Object.getOwnPropertySymbols,T7=Object.prototype.hasOwnProperty,R7=Object.prototype.propertyIsEnumerable,F2=(u,e,t)=>e in u?ne(u,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):u[e]=t,oe=(u,e)=>{for(var t in e||(e={}))T7.call(e,t)&&F2(u,t,e[t]);if(T9)for(var t of T9(e))R7.call(e,t)&&F2(u,t,e[t]);return u},se=(u,e)=>re(u,ie(e)),ae=(u,e)=>{var t={};for(var f in u)T7.call(u,f)&&e.indexOf(f)<0&&(t[f]=u[f]);if(u!=null&&T9)for(var f of T9(u))e.indexOf(f)<0&&R7.call(u,f)&&(t[f]=u[f]);return t},le=(u,e,t)=>(F2(u,typeof e!="symbol"?e+"":e,t),t);class a9 extends D.PureComponent{getCssClasses(){const{className:e,nogutters:t}=this.props;let f=["tyk-row"];return t&&(f.push("no-gutters"),f.push("tyk-row--gutterless")),e&&(f=f.concat(e.split(" "))),f.join(" ")}render(){const e=this.props,{children:t,nogutters:f}=e,x=ae(e,["children","nogutters"]);return R().createElement("div",se(oe({},x),{className:this.getCssClasses()}),t)}}le(a9,"propTypes",{children:n().oneOfType([n().element,n().node]),className:n().string,nogutters:n().bool});const M7=(0,D.createContext)();function L7(u){const{customdropdownitem:e,children:t,eventKey:f,href:x,target:P,title:F,onClick:H}=u,V=(0,D.useCallback)((K,X)=>{K.onSelectItem(f,X),H&&H(f)},[]);return R().createElement(M7.Consumer,null,K=>R().createElement("li",{onClick:()=>V(K,u),onKeyUp:()=>{}},e?(0,D.cloneElement)(e,{}):R().createElement("a",{href:x,target:P},f&&K.selectedItem===f&&K.showCheckmark?R().createElement(a,{type:"check"}):null,R().createElement("span",null,F||t))))}L7.propTypes={children:n().oneOfType([n().element,n().node,n().string]),customdropdownitem:n().oneOfType([n().arrayOf(n().node),n().node,n().element]),eventKey:n().string,href:n().string,target:n().string,onClick:n().func,title:n().string};const ce=L7;var ue=Object.defineProperty,P7=Object.getOwnPropertySymbols,he=Object.prototype.hasOwnProperty,de=Object.prototype.propertyIsEnumerable,I7=(u,e,t)=>e in u?ue(u,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):u[e]=t,fe=(u,e)=>{for(var t in e||(e={}))he.call(e,t)&&I7(u,t,e[t]);if(P7)for(var t of P7(e))de.call(e,t)&&I7(u,t,e[t]);return u};class N5 extends D.Component{static isElemInRightView(e,t){const f=window.innerWidth;return e.getBoundingClientRect().left+t<=f}static isElemInBottomView(e,t){const f=window.innerHeight,x=e.getBoundingClientRect(),P=e.clientHeight;return x.top+P+t<=f}constructor(e){super(e);const{selectedItem:t,open:f}=this.props;this.state={opened:f,selectedItem:t||null},this.dropdownRef=(0,D.createRef)(),this.dropdownListRef=(0,D.createRef)(),this.dropdownButtonRef=(0,D.createRef)(),this.onSelectItem=this.onSelectItem.bind(this),this.toggleDropdown=this.toggleDropdown.bind(this),this.handleClickOutside=this.handleClickOutside.bind(this)}componentDidMount(){document.addEventListener("mousedown",this.handleClickOutside),this.dropdownListRef.current&&this.getStyles()}componentDidUpdate(e){const{open:t}=this.props,{opened:f}=this.state;this.dropdownListRef.current&&this.getStyles(),!e.open&&t===!0&&!f&&this.toggleDropdown(),e.open&&t===!1&&f&&this.closeDropdown()}componentWillUnmount(){document.removeEventListener("mousedown",this.handleClickOutside)}handleClickOutside(e){this.dropdownListRef.current&&!this.dropdownListRef.current.contains(e.target)&&this.dropdownRef.current&&!this.dropdownRef.current.contains(e.target)&&this.closeDropdown()}onSelectItem(e,t){const{closeOnSelect:f,onSelect:x}=this.props,P={selectedItem:e,selectedItemProps:t};f&&(P.opened=!1),this.setState(P),x&&typeof x=="function"&&x(e)}getStyles(){const{display:e,position:t,offset:f}=this.props,x=this.dropdownListRef.current;if(f){x.style.top=`${f.top}`,x.style.left=`${f.left}`;return}const P=Math.max(document.documentElement.scrollTop,document.body.scrollTop,window.scrollY),F=this.dropdownRef.current,H=F.clientHeight,V=x?x.clientHeight:0,K=x?x.clientWidth:0,X=F.getBoundingClientRect(),{left:e0,top:Z}=X;let Q=0,i0=e0;N5.isElemInBottomView(F,V)?Q=Z+P+H:Q=Z+P-V-5,N5.isElemInRightView(F,K)?i0=e0:i0=e0+F.clientWidth-K,t!=="relative"&&(x.style.top=`${Q}px`,e!=="block"&&(x.style.left=`${i0}px`)),e!=="block"&&(x.style.minWidth=`${this.dropdownButtonRef.current.clientWidth}px`)}getWrapperCssClasses(){const{btnGroup:e,btnGroupSize:t,className:f,btnTheme:x,wrapperClassName:P=""}=this.props;let F=[P,"tyk-dropdown"];return F.push(`theme-${x||"default"}`),f&&(F=F.concat(f.split(" "))),e&&(F.push("tyk-button-group"),F.push(t?`tyk-button-group--${t}`:"tyk-button-group--md")),F.join(" ")}getCssClasses(){const{opened:e}=this.state,{hasCustomContent:t,display:f,listclassnames:x,position:P,maxHeight:F}=this.props;let H=["tyk-dropdown-menu","tyk-dropdown"];return F&&H.push("tyk-dropdown--scrollable"),e&&H.push("opened"),x&&(H=H.concat(x.split(" "))),f&&H.push("tyk-dropdown--block"),t&&H.push("tyk-dropdown--custom"),P==="relative"&&H.push("tyk-dropdown--relative"),H.join(" ")}getBtnTitle(){const{btnTitle:e,stopButtonTextChange:t}=this.props,{selectedItemProps:f}=this.state;return!t&&f&&f.title?f.title:e}closeDropdown(){const{onClose:e}=this.props;this.setState({opened:!1},()=>{e&&e()})}toggleDropdown(){const{opened:e}=this.state;if(e){this.closeDropdown();return}this.setState({opened:!0})}render(){const{appendTo:e,btnClassName:t,btnSize:f,customBtnTitle:x,hasCustomContent:P,btnTheme:F,children:H,label:V,showDropdownIcon:K,showTriggerButton:X,showCheckmark:e0,disabled:Z=!1,maxHeight:Q}=this.props,{selectedItem:i0,opened:J}=this.state,c0=P?"div":"ul";return R().createElement("div",{className:this.getWrapperCssClasses(),ref:this.dropdownRef},V?R().createElement("label",{className:"font-family-medium"},V):null,X?R().createElement(j0,{className:`tyk-dropdown__trigger ${J?"tyk-dropdown__trigger--opened ":" "} ${t}`,theme:F||"default",onClick:this.toggleDropdown,iconType:K?"chevron-down":null,iconPosition:"right",size:f||"md",type:"button",disabled:Z,ref:this.dropdownButtonRef},x||this.getBtnTitle()):null,J?r9().createPortal(R().createElement(M7.Provider,{value:{onSelectItem:this.onSelectItem,selectedItem:i0,showCheckmark:e0}},J?R().createElement(c0,fe({className:this.getCssClasses(),ref:this.dropdownListRef},Q&&{style:{maxHeight:Q}}),typeof H=="function"?H({closeDropdown:this.closeDropdown.bind(this)}):H):null),document.querySelector(e||"body")):null)}}N5.propTypes={appendTo:n().string,children:n().oneOfType([n().element,n().node,n().string,n().func]),closeOnSelect:n().bool,btnClassName:n().string,btnSize:n().string,btnGroupSize:n().string,btnTheme:n().string,btnTitle:n().oneOfType([n().node,n().element,n().string]),customBtnTitle:n().oneOfType([n().node,n().element,n().string]),btnGroup:n().bool,className:n().string,display:n().string,disabled:n().bool,hasCustomContent:n().bool,label:n().oneOfType([n().arrayOf(n().node),n().node,n().element,n().func,n().string]),listclassnames:n().string,onClose:n().func,onSelect:n().func,open:n().bool,offset:n().instanceOf(Object),position:n().string,selectedItem:n().string,showDropdownIcon:n().bool,stopButtonTextChange:n().bool,showTriggerButton:n().bool,showCheckmark:n().bool,maxHeight:n().string,wrapperClassName:n().string},N5.defaultProps={closeOnSelect:!1,showDropdownIcon:!0,showTriggerButton:!0,showCheckmark:!0,open:!1},N5.Item=ce;const B7=N5;var pe=O0(239),ge=O0.n(pe);const me=require("react-ace");var ve=O0.n(me),vs=O0(395),ys=O0(576),bs=O0(7),ws=O0(549),Cs=O0(252),As=O0(202),ks=O0(711),xs=O0(604),Ss=O0(134),_s=O0(203);const ye=O0.p+"9c4ab5d453e67f8e3a66.js";var be=Object.defineProperty,we=Object.defineProperties,Ce=Object.getOwnPropertyDescriptors,F7=Object.getOwnPropertySymbols,Ae=Object.prototype.hasOwnProperty,ke=Object.prototype.propertyIsEnumerable,N7=(u,e,t)=>e in u?be(u,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):u[e]=t,N2=(u,e)=>{for(var t in e||(e={}))Ae.call(e,t)&&N7(u,t,e[t]);if(F7)for(var t of F7(e))ke.call(e,t)&&N7(u,t,e[t]);return u},xe=(u,e)=>we(u,Ce(e));ge().config.setModuleUrl("ace/mode/json_worker",ye);function D7(u){const{disabled:e,readOnly:t,disableValidation:f,id:x,error:P,label:F,labelwidth:H,note:V,onBlur:K,onChange:X,theme:e0,value:Z,setOptions:Q,wrapperClassName:i0}=u,J=["tyk-form-group",i0,...e0?e0.split(" ").map(E0=>`tyk-form-group--${E0}`):[],H&&"tyk-form-group--label-has-width",P&&"has-error"].filter(Boolean).join(" "),c0=N2(N2({},Q),f&&{useWorker:!1}),r0=(0,D.useCallback)(()=>P&&P!=="true"&&P!=="false"?R().createElement("p",{className:"tyk-form-control__error-message"},P):null,[P]),o0=(0,D.useCallback)(()=>H?{flexBasis:H}:{},[H]),g0=(0,D.useCallback)(()=>H?{flexBasis:`calc(100% - ${H} - 20px)`}:{},[H]),y0=(0,D.useCallback)(E0=>{X&&X(E0)},[X]),L0=(0,D.useCallback)(()=>{K&&K(Z)},[K,Z]);return R().createElement("div",{className:J},F?R().createElement("label",{htmlFor:x,style:o0()},F):null,R().createElement("div",{className:"tyk-form-control__wrapper",style:g0()},R().createElement(ve(),xe(N2({className:"tyk-form-control"},u),{onChange:y0,onBlur:L0,theme:"github",editorProps:{$blockScrolling:!0},readOnly:t||e,onLoad:E0=>{E0.container.style.resize="both",document.addEventListener("mouseup",()=>E0.resize())},setOptions:c0})),V?R().createElement("p",{className:"tyk-form-control__help-block"},V):null,r0()))}D7.propTypes={disabled:n().bool,readOnly:n().bool,disableValidation:n().bool,id:n().string,error:n().oneOfType([n().string,n().bool]),label:n().oneOfType([n().arrayOf(n().node),n().node,n().element,n().func,n().string]),labelwidth:n().string,mode:n().string,name:n().string,note:n().string,onBlur:n().func,onChange:n().func,theme:n().string,value:n().string,setOptions:n().instanceOf(Object),wrapperClassName:n().string};const D2=D7;var Se=Object.defineProperty,_e=Object.defineProperties,$e=Object.getOwnPropertyDescriptors,W7=Object.getOwnPropertySymbols,Ee=Object.prototype.hasOwnProperty,Oe=Object.prototype.propertyIsEnumerable,W2=(u,e,t)=>e in u?Se(u,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):u[e]=t,Te=(u,e)=>{for(var t in e||(e={}))Ee.call(e,t)&&W2(u,t,e[t]);if(W7)for(var t of W7(e))Oe.call(e,t)&&W2(u,t,e[t]);return u},Re=(u,e)=>_e(u,$e(e)),H7=(u,e,t)=>(W2(u,typeof e!="symbol"?e+"":e,t),t);const H2=(u,e,t)=>t||(u||e?[]:null),z2=class _5 extends D.Component{static closeList(){return{cursor:-1,opened:!1}}static openList(){return{opened:!0}}static filterByName(e,t){return e.name.toLowerCase().indexOf(t)>-1}constructor(e){super(e);const{multiple:t,tags:f,value:x}=e;this.state={cursor:-1,opened:!1,width:50,initialValue:x,stateSelectedValues:H2(t,f,x),searchText:"",tags:f},this.comboboxRef=(0,D.createRef)(),this.valuesListRef=(0,D.createRef)(),this.inputRef=(0,D.createRef)(),this.textRef=(0,D.createRef)(),this.focusInput=this.focusInput.bind(this),this.onKeyUp=this.onKeyUp.bind(this),_5.openList=_5.openList.bind(this),this.handleClickOutside=this.handleClickOutside.bind(this),this.handleItemsNavigation=this.handleItemsNavigation.bind(this),this.handleComboboxDropdownClick=this.handleComboboxDropdownClick.bind(this),this.handleListItemClick=this.handleListItemClick.bind(this),this.handlePillRemoveClick=this.handlePillRemoveClick.bind(this),this.manageSelectedTags=this.manageSelectedTags.bind(this)}componentDidMount(){const{tags:e}=this.props;e&&this.setInputWidth(),this.bindEvents()}componentWillUnmount(){this.unBindEvents()}static getDerivedStateFromProps(e,t){return JSON.stringify(e.value)!==JSON.stringify(t.initialValue)||e.tags!==t.tags?{initialValue:e.value,stateSelectedValues:H2(e.multiple,e.tags,e.value),tags:e.tags}:null}onKeyUp(e){const{tags:t,allowCustomValues:f}=this.props,{cursor:x,opened:P}=this.state,F=this.filterValues();let H=Object.assign({},this.getSearchText());t&&e.key!=="Escape"&&(H=Object.assign({},H,this.setInputWidth())),e.key==="Enter"&&(H=Object.assign({},H,this[t?"manageSelectedTags":"manageSelectedValues"](x))),f&&!e.key===" "&&t&&(H=Object.assign({},H,this.manageSelectedTags())),!P&&this.inputRef.current.value&&F&&F.length&&e.key!=="Escape"&&(H=Object.assign({},H,_5.openList())),e.key==="Escape"&&P&&(H=Object.assign({},H,_5.closeList())),P&&F&&!F.length&&(H=Object.assign({},H,_5.closeList())),this.setState(V=>Object.assign({},V,H))}getLabelStyles(){const{labelwidth:e}=this.props,t={};return e&&(t.flexBasis=e),t}getNonLabelWidth(){const{labelwidth:e}=this.props,t={};return e&&(t.flexBasis=`calc(100% - ${e} - 20px)`),t}setInputWidth(){return{width:50+this.textRef.current.offsetWidth}}getSelectedIndex(e){const{stateSelectedValues:t}=this.state;let f=-1;return Array.isArray(t)?t.forEach((x,P)=>{x.id===e.id&&(f=P)}):t&&t.id===e.id&&(f=0),f}getSearchText(){return{searchText:this.inputRef.current.value}}getListItemCssClasses(e,t){const f=[],{cursor:x}=this.state;return x===t&&f.push("active"),e.disabled&&f.push("disabled"),f.join(" ")}getComboboxListCssClass(){const{opened:e}=this.state,{tags:t,theme:f}=this.props,x=f?f.split(" "):[],P=["tyk-combobox__list"];return e&&P.push("tyk-combobox__list--opened"),t&&P.push("tyk-combobox__list--has-tags"),x.length&&x.forEach(F=>{P.push(`tyk-form-group--${F}`)}),P.join(" ")}getCssClasses(){const{error:e,disabled:t,theme:f,labelwidth:x}=this.props,P=["tyk-form-group","tyk-combobox"],F=f?f.split(" "):[];return e&&P.push("has-error"),x&&P.push("tyk-form-group--label-has-width"),F.length&&F.forEach(H=>{P.push(`tyk-form-group--${H}`)}),t&&P.push("disabled"),P.join(" ")}getInputError(){const{error:e}=this.props;return e&&e!=="true"&&e!=="false"?R().createElement("p",{className:"tyk-form-control__error-message"},e):null}getStyles(){const{scrollTop:e}=document.documentElement,t=this.comboboxRef.current,f=t.offsetHeight,x=t.offsetWidth,P=t.getBoundingClientRect(),{left:F}=P;let H=0;return H=P.top+e+f,{top:`${H-1}px`,left:`${F}px`,width:`${x}px`}}getComboboxDisplayData(){const{stateSelectedValues:e}=this.state,{multiple:t,placeholder:f,values:x}=this.props;return!e||e&&Array.isArray(e)&&!e.length||e&&!Array.isArray(e)&&!e.id?f:Array.isArray(e)&&t?e.reduce((P,F,H)=>P+F.name+(H!==e.length-1?", ":""),""):x&&x.length&&!Array.isArray(e)&&!e.name?x.filter(P=>P.id===e.id)[0].name:e.name}manageSelectedTags(e){const{max:t,allowCustomValues:f}=this.props,{stateSelectedValues:x}=this.state,P=this.filterValues(),F={id:this.inputRef.current.value,name:this.inputRef.current.value};if(f===!1&&e===-1)return null;const H=P[e]||F,V=this.getSelectedIndex(H);let K={};if(this.inputRef.current.value="",V>-1&&this.isInInitialValues(H))K=this.removeSelectedValue(V);else if(V===-1){if(t&&x.length>=t)return K;K=this.addSelectedValue(H)}return K}manageSelectedValues(e){const{stateSelectedValues:t}=this.state,{multiple:f,onChange:x,max:P}=this.props,F=this.filterValues(),H=F[e];let V;const K=this.getSelectedIndex(H);if(H&&f)if(K>-1)V=this.removeSelectedValue(K);else{if(P&&t.length>=P)return V;V=this.addSelectedValue(F[e])}else V={stateSelectedValues:K===-1?H:{id:null}},x&&typeof x=="function"&&x(K===-1?H:null);return V}removeSelectedValue(e){const{stateSelectedValues:t}=this.state,{onChange:f}=this.props,x=JSON.parse(JSON.stringify(t));return x.splice(e,1),f&&typeof f=="function"&&f(x.length?x:null),{stateSelectedValues:x,searchText:""}}addSelectedValue(e){const{stateSelectedValues:t}=this.state,{onChange:f}=this.props,x=JSON.parse(JSON.stringify(t));return x.push(e),f&&typeof f=="function"&&f(x.length?x:null),{stateSelectedValues:x,searchText:""}}isInInitialValues(e){const{values:t}=this.props;let f=!1;return t.forEach(x=>{e.id===x.id&&(f=!0)}),f}filterValues(){const{values:e,searchItem:t}=this.props;return this.inputRef.current?e.filter(x=>t?t(x,this.inputRef.current.value.toLowerCase()):_5.filterByName(x,this.inputRef.current.value.toLowerCase())):e}bindEvents(){document.addEventListener("mousedown",this.handleClickOutside)}unBindEvents(){document.removeEventListener("mousedown",this.handleClickOutside)}handleItemsNavigation(e){const{tags:t}=this.props;if(["ArrowDown","ArrowUp"].indexOf(e.key)===-1)return;const{cursor:f}=this.state,x=this.filterValues();let P;if(e.preventDefault(),e.key==="ArrowDown"&&(f===-1||f===x.length-1?P=0:f0?P=f-1:P=x.length-1),this.valuesListRef.current&&P>4){const F=(P-4)*38;this.valuesListRef.current.scrollTop=t?F:60+F}else this.valuesListRef.current&&(this.valuesListRef.current.scrollTop=0);this.setState(F=>Re(Te({},F),{opened:!0,cursor:P}))}handleListItemClick(e){if(this.props.values[e].disabled)return;const{multiple:f,tags:x}=this.props,P=x?"manageSelectedTags":"manageSelectedValues",F=Object.assign({},this.state,this[P](e));this.setState(H=>(!f&&!x&&(F.opened=!1),Object.assign({},H,F)))}handlePillRemoveClick(e){const{disabled:t}=this.props;if(t)return;const f=this.removeSelectedValue(e);this.setState(x=>Object.assign({},x,f))}handleClickOutside(e){this.valuesListRef.current&&!this.valuesListRef.current.contains(e.target)&&this.comboboxRef.current&&!this.comboboxRef.current.contains(e.target)&&this.setState(t=>Object.assign({},t,_5.closeList()))}handleComboboxDropdownClick(){const{disabled:e}=this.props;e||this.setState(t=>Object.assign({},t,_5.openList()))}reset(){const{multiple:e,tags:t,value:f}=this.props;this.setState({stateSelectedValues:H2(e,t,f)})}focusInput(){this.inputRef.current&&this.inputRef.current.focus()}render(){const{CustomListComponent:e,disabled:t,id:f,label:x,note:P,tags:F,max:H,placeholder:V}=this.props,{width:K,opened:X,searchText:e0,stateSelectedValues:Z}=this.state,Q=this.filterValues();return R().createElement(D.Fragment,null,R().createElement("div",{className:this.getCssClasses()},x?R().createElement("label",{htmlFor:f,style:this.getLabelStyles()},x):null,R().createElement("div",{className:"tyk-form-control__wrapper",style:this.getNonLabelWidth()},R().createElement("ul",{className:`tyk-form-control${F?" tyk-form-control--with-tags":""}`,onClick:this.focusInput,onKeyDown:()=>{},ref:this.comboboxRef},F?R().createElement(D.Fragment,null,(Z||[]).map((i0,J)=>R().createElement("li",{className:"pill",key:i0.id},R().createElement("button",{type:"button",onClick:this.handlePillRemoveClick.bind(this,J)},R().createElement(a,{type:"times"})),R().createElement("span",null,i0.name))),R().createElement("li",{className:"tyk-combobox__search-box",style:{width:!Z||!Z.length?"100%":"auto"}},(H===void 0||(Z==null?void 0:Z.length){i0.key==="Enter"&&i0.preventDefault()},onKeyUp:this.onKeyUp,onKeyDown:this.handleItemsNavigation,placeholder:!Z||!Z.length?V:"",ref:this.inputRef,style:{width:!Z||!Z.length?"100%":`${K}px`}}),R().createElement("span",{ref:this.textRef,style:{visbility:"hidden",position:"absolute",top:"-9999px"}},e0)),Q.length?R().createElement(j0,{className:"tyk-combobox--with-tags__button-down",iconType:"arrow-down",iconOnly:!0,onClick:this.handleComboboxDropdownClick}):null)):R().createElement("li",{className:"tyk-combobox__placeholder",onClick:this.handleComboboxDropdownClick,onKeyDown:()=>{}},this.getComboboxDisplayData(),R().createElement(a,{family:"tykon",type:"arrowdown"}))),P?R().createElement("p",{className:"tyk-form-control__help-block"},P):null,this.getInputError())),e?R().createElement(e,{ref:this.valuesListRef,className:this.getComboboxListCssClass(),getListItemCssClasses:this.getListItemCssClasses.bind(this),getSelectedIndex:this.getSelectedIndex.bind(this),filteredValues:Q,handleListItemClick:this.handleListItemClick.bind(this)}):X&&Q.length?r9().createPortal(R().createElement("ul",{className:this.getComboboxListCssClass(),ref:this.valuesListRef,style:this.getStyles()},F?null:R().createElement("li",{className:"combobox-search__container"},R().createElement("input",{autoFocus:X,className:"tyk-form-control",onKeyUp:this.onKeyUp,onKeyDown:this.handleItemsNavigation,key:"searchInput",ref:this.inputRef})),Q.map((i0,J)=>R().createElement("li",{className:this.getListItemCssClasses(i0,J),onClick:this.handleListItemClick.bind(this,J),onKeyDown:()=>{},key:i0.id},this.getSelectedIndex(i0)>-1?R().createElement(a,{type:"check"}):null,R().createElement("span",null," ",i0.name)))),document.querySelector("body")):null)}};H7(z2,"propTypes",{allowCustomValues:n().bool,CustomListComponent:n().elementType,searchItem:n().func,disabled:n().bool,error:n().string,id:n().string,label:n().oneOfType([n().arrayOf(n().node),n().node,n().element,n().func,n().string]),labelwidth:n().string,multiple:n().bool,max:n().number,note:n().oneOfType([n().node,n().element,n().string]),onChange:n().func,placeholder:n().string,tags:n().bool,theme:n().string,value:n().oneOfType([n().string,n().instanceOf(Object),n().instanceOf(Array)]),values:n().instanceOf(Array)}),H7(z2,"defaultProps",{allowCustomValues:!0});let j2=z2;function Me(u){const{value:e,max:t,tags:f,tagSeparators:x,addTagOnBlur:P,placeholder:F,disabled:H,renderValue:V,valueOverflow:K,focus:X,onMessage:e0,readOnly:Z}=u,Q=60,i0=(0,D.useRef)(null),J=(0,D.useRef)(null),[c0,r0]=(0,D.useState)(""),[o0,g0]=(0,D.useState)(`${Q+10}px`);function y0(l0){if(x.some(C0=>l0.slice(-1)===C0))return;const s0=J.current;s0.innerHTML=l0,g0(`${Math.max(s0.clientWidth,Q)+10}px`),r0(l0),e0("tag.input.change",l0)}function L0(l0,s0){if(f){if(s0===""&&l0==="Backspace"&&e.length){e0("tag.remove",e[e.length-1].id);return}if(l0==="Enter"){e0("tag.input.enter",s0),y0("");return}if(l0==="ArrowUp"){e0("tag.input.arrowUp");return}if(l0==="ArrowDown"){e0("tag.input.arrowDown");return}if(l0==="Escape"){e0("tag.input.escape");return}x.includes(l0)&&(e0("tag.add",s0),y0(""))}}function E0(){e0("text-value.click")}function S0(l0,s0=!1){if(Z)return l0||"-";const C0=["tyk-combobox2__text-value",`overflow-${K}`,s0&&"is-placeholder"].filter(Boolean).join(" ");return R().createElement("span",{className:C0,title:K==="single"?l0:void 0,role:"none",tabIndex:H?"-1":"0",onClick:E0,onKeyPress:E0},l0)}function B0(l0){return V(l0,{tags:f,tagSeparators:x,placeholder:F,disabled:H,renderValue:V,sendMessage:e0})}function I0(l0){return V?B0(l0):R().createElement(e7,{key:l0.id,theme:"combobox"},R().createElement("button",{type:"button",onClick:s0=>{s0.stopPropagation(),e0("tag.remove",l0.id)}},R().createElement(a,{type:"times"})),R().createElement("span",{title:l0.name},l0.name))}function v0(){return R().createElement(R().Fragment,null,e.map(I0),e.lengthy0(l0.target.value),onKeyDown:l0=>{l0.key==="Enter"&&l0.preventDefault(),L0(l0.key,l0.target.value)},onFocus:()=>e0("tag.input.focus"),onBlur:l0=>{e0("tag.input.blur",l0.target.value),P&&y0("")}}),R().createElement("span",{ref:J,style:{visbility:"hidden",position:"absolute",top:"-9999px"}})))}return(0,D.useEffect)(()=>{X&&i0.current&&i0.current.focus()},[X]),Z?R().createElement("div",{className:"tyk-form-control--readonly"},S0(e.map(l0=>l0.name).join(", "))):f?v0():V?e.length===0?S0(F,!0):e.map(B0):e.length===0?S0(F,!0):S0(e.map(l0=>l0.name).join(", "))}const z7=Me;function j7(u){const{listRef:e,tags:t,values:f,searchValue:x,activeItem:P,onMessage:F,renderListItem:H,selectAll:V,showSearch:K}=u;(0,D.useEffect)(()=>{if(!e.current)return;const Z=e.current.querySelector(".active");Z&&Z.scrollIntoView({block:"end"})},[P]);function X(Z){return H?H(Z,{tags:t,searchValue:x,sendMessage:F,activeItem:P}):R().createElement("li",{key:Z.id,title:Z.name,className:[Z.disabled&&"disabled",P&&Z.id===P.id&&"active"].filter(Boolean).join(" "),onClick:()=>!Z.disabled&&F("value.select",{item:Z}),onKeyPress:()=>{}},Z.selected&&R().createElement(a,{type:"check"}),R().createElement("span",{className:"item-name"},Z.name))}function e0(){var Z,Q,i0;const J=f.every(E0=>E0.selected),c0=f.every(E0=>!E0.selected),r0=(Z=V==null?void 0:V.label)!=null?Z:"Select All",o0=(Q=V==null?void 0:V.mode)!=null?Q:"select",g0=(i0=V==null?void 0:V.show)!=null?i0:"always",y0=V==null?void 0:V.render;return g0==="always"||(o0==="select"?!J:!c0)?y0?y0({label:r0,mode:o0,show:g0,isAllSelected:J,isNoneSelected:c0},F):R().createElement("li",{onClick:()=>F("value.select-all",o0==="select"?!J:c0),onKeyDown:()=>{}},(o0==="select"?J:c0)&&R().createElement(a,{type:"check"}),r0):null}return R().createElement(R().Fragment,null,!t&&K&&R().createElement("div",{className:"tyk-combobox2__combobox-search"},R().createElement("input",{autoFocus:!0,className:"tyk-form-control",value:x,onChange:Z=>F("search.change",Z.target.value),onKeyDown:Z=>{Z.key==="Escape"&&F("search.escape"),Z.key==="ArrowUp"&&F("search.arrowUp"),Z.key==="ArrowDown"&&F("search.arrowDown"),Z.key==="Enter"&&F("search.enter")}})),f.length>0&&R().createElement("ul",{ref:e,className:"tyk-combobox2__combobox-list"},!!V&&e0(),f.map(X)))}j7.propTypes={listRef:n().instanceOf(Object),tags:n().bool,values:n().instanceOf(Array),searchValue:n().string,activeItem:n().instanceOf(Object),onMessage:n().func,renderListItem:n().func,selectAll:n().oneOfType([n().bool,n().shape({label:n().oneOfType([n().arrayOf(n().node),n().node,n().element,n().func,n().string]),mode:n().oneOf(["select","unselect"]),show:n().oneOf(["always","notSameState"]),render:n().func})]),showSearch:n().bool};const Le=j7;var Pe=Object.defineProperty,Ie=Object.defineProperties,Be=Object.getOwnPropertyDescriptors,R9=Object.getOwnPropertySymbols,V7=Object.prototype.hasOwnProperty,U7=Object.prototype.propertyIsEnumerable,G7=(u,e,t)=>e in u?Pe(u,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):u[e]=t,v5=(u,e)=>{for(var t in e||(e={}))V7.call(e,t)&&G7(u,t,e[t]);if(R9)for(var t of R9(e))U7.call(e,t)&&G7(u,t,e[t]);return u},A5=(u,e)=>Ie(u,Be(e)),Fe=(u,e)=>{var t={};for(var f in u)V7.call(u,f)&&e.indexOf(f)<0&&(t[f]=u[f]);if(u!=null&&R9)for(var f of R9(u))e.indexOf(f)<0&&U7.call(u,f)&&(t[f]=u[f]);return t};function l9(u,e){let t=u;if(typeof u=="string"?t={id:u,name:u}:u.hasOwnProperty("name")||(t=A5(v5({},u),{name:u.id})),!e)return t;const f=e.find(x=>x.id===t.id);return f?v5(v5({},t),f):t}function K7(u,e){return u?Array.isArray(u)?u.map(t=>l9(t,e)):[l9(u,e)]:[]}function Y7(u){var e=u,{value:t,values:f=[],valueOverflow:x="single",label:P="",labelwidth:F,tags:H=!1,tagSeparators:V=[" ","Enter"],addTagOnBlur:K=!1,max:X,multiple:e0=!1,placeholder:Z="",theme:Q,note:i0="",error:J="",disabled:c0=!1,readOnly:r0=!1,allowCustomValues:o0=!0,searchItem:g0,renderValue:y0,renderListItem:L0,renderList:E0,CustomListComponent:S0,onBeforeChange:B0=()=>!0,onChange:I0=()=>{},floatingContainerConfig:v0,expandMode:l0,infiniteScrollerConfig:s0,displayDropdownTrigger:C0=!0,selectAll:T0,closeOnSelect:$0,showSearch:K0=!1,required:R0=!1,validateOnChange:U0=()=>{},wrapperClassName:s5=""}=e,J0=Fe(e,["value","values","valueOverflow","label","labelwidth","tags","tagSeparators","addTagOnBlur","max","multiple","placeholder","theme","note","error","disabled","readOnly","allowCustomValues","searchItem","renderValue","renderListItem","renderList","CustomListComponent","onBeforeChange","onChange","floatingContainerConfig","expandMode","infiniteScrollerConfig","displayDropdownTrigger","selectAll","closeOnSelect","showSearch","required","validateOnChange","wrapperClassName"]);const G0=e0?1/0:X||(H?1/0:1),h5=S0?(d0,{sendMessage:A0})=>R().createElement(S0,{filteredValues:d0,handleListItemClick:P0=>A0("value.select",{item:d0[P0]}),getListItemCssClasses:()=>{}}):E0,u5=(0,D.useRef)(null),z5=(0,D.useRef)(null),q5=(0,D.useRef)(null),c2=(0,D.useRef)(null),[a5,i5]=(0,D.useState)(K7(t,f)),[Q0,b5]=(0,D.useState)(f.map(d0=>l9(d0))),[M5,v1]=(0,D.useState)(""),[w5,Z5]=(0,D.useState)(null),[y1,l6]=(0,D.useState)(!1),[u2,ss]=(0,D.useState)(!1),[b1,as]=(0,D.useState)("");function c6(){return(Q?Q.split(" "):[]).map(A0=>`tyk-form-group--${A0}`)}function ls(){return[s5,"tyk-form-group","tyk-combobox2",...c6(),(J||b1)&&"has-error",F&&"tyk-form-group--label-has-width",c0&&"disabled",l0&&"is-expand-mode"].filter(Boolean).join(" ")}function h2(){const A0=g0||((e5,o5)=>{var t9,g6;return(g6=(t9=e5==null?void 0:e5.name)==null?void 0:t9.toLowerCase())==null?void 0:g6.includes(o5)});return Q0.filter(e5=>A0(e5,M5.toLowerCase()))}function j5(){l6(!0)}function h9(){l6(!1),H||e9(""),Z5(null)}function e9(d0){v1(d0),w5&&h2().every(A0=>A0.id!==w5.id)&&Z5(null),d0&&!y1&&j5()}function u6(d0,A0){const P0=U0(d0,A0);return as(P0),P0===void 0}function d2(d0){i5(d0),I0(G0===1&&!H?d0[0]||null:d0)}function w1(d0){if(!d0||a5.length>=G0||a5.some(({name:t9})=>t9===d0))return;const A0=Q0.findIndex(t9=>t9.name===d0);let P0,e5=[...a5],o5;A0===-1?o0&&(P0={id:d0,name:d0},e5=[...a5,P0]):(o5=[...Q0.slice(0,A0),A5(v5({},Q0[A0]),{selected:!0}),...Q0.slice(A0+1)],P0=Q0[A0],e5=[...a5,Q0[A0]]),u6(e5,P0)&&B0(a5,e5)&&(o5&&b5(o5),d2(e5))}function cs(d0){if(R0&&G0===1)return;const A0=Q0.findIndex(e5=>e5.id===d0),P0=a5.filter(e5=>e5.id!==d0);B0(a5,P0)&&(A0!==-1&&b5([...Q0.slice(0,A0),A5(v5({},Q0[A0]),{selected:!1}),...Q0.slice(A0+1)]),d2(P0))}function C1({id:d0}){const A0=Q0.find(o5=>o5.id===d0);let P0=a5,e5=Q0;A0.selected?(!R0||G0!==1)&&(P0=a5.filter(o5=>o5.id!==A0.id),e5=Q0.map(o5=>o5.id===A0.id?A5(v5({},o5),{selected:!1}):o5)):a5.lengtho5.id===A0.id?A5(v5({},o5),{selected:!0}):o5)):G0===1&&(P0=[A0],e5=Q0.map(o5=>A5(v5({},o5),{selected:o5.id===A0.id}))),u6(P0,A0)&&B0(a5,P0)&&(d2(P0),b5(e5)),(G0===1||$0)&&h9()}function us(d0){if(Q0.length>G0)return;const A0=d0?[...Q0]:[];B0(a5,A0)&&(d2(A0),b5(Q0.map(P0=>A5(v5({},P0),{selected:d0}))),$0&&h9())}function h6(){const d0=h2().filter(P0=>!P0.disabled);if(d0.length===0)return;if(w5===null||d0.length===1){Z5(d0[d0.length-1]);return}const A0=d0.findIndex(P0=>P0.id===w5.id);Z5(d0[A0>0?A0-1:d0.length-1])}function d6(){const d0=h2().filter(P0=>!P0.disabled);if(d0.length===0)return;if(w5===null||d0.length===1){Z5(d0[0]);return}const A0=d0.findIndex(P0=>P0.id===w5.id);Z5(d0[A0(window.addEventListener("click",p6,!0),()=>window.removeEventListener("click",p6,!0)),[]),(0,D.useEffect)(()=>{if(f.length){const d0=f.map(A0=>A5(v5({},l9(A0)),{selected:a5.some(P0=>P0.id===A0.id)}));b5(d0),i5(A0=>A0.map(P0=>d0.find(e5=>e5.id===P0.id)||P0))}else Q0.length&&b5([])},[f]),(0,D.useEffect)(()=>{const d0=K7(t,Q0);i5(d0),b5(A0=>A0.map(P0=>A5(v5({},l9(P0)),{selected:d0.some(e5=>e5.id===P0.id)})))},[t]),(0,D.useEffect)(()=>{if(!l0)return()=>{};const d0=z5.current.querySelector(".tyk-combobox2__current-values"),A0=()=>{d0.scrollTop=d0.scrollHeight},P0=new MutationObserver(A0),e5=new ResizeObserver(A0);return P0.observe(d0,{attributes:!0,childList:!0,subtree:!0}),e5.observe(d0),()=>{P0.disconnect(),e5.disconnect()}});const k1=h2(),fs=["tyk-combobox2__current-values",l0&&"expand-mode",`tyk-combobox2__current-values--${u2?"expanded":"collapsed"}`].join(" ");return R().createElement("div",A5(v5({ref:u5,tabIndex:c0?"-1":"0",onClickCapture:hs},J0),{className:ls()}),P&&R().createElement("label",{style:{flexBasis:F||"auto"}},P),!r0&&R().createElement("div",{className:"tyk-form-control__wrapper",style:{flexBasis:`calc(100% - ${F} - 20px)`}},R().createElement("div",{className:"tyk-form-control",ref:z5},R().createElement("div",{className:fs,onClick:j5,role:"none"},R().createElement(z7,{value:a5,max:G0,tags:H,tagSeparators:V,addTagOnBlur:K,allowCustomValues:o0,placeholder:Z,disabled:c0,valueOverflow:x,renderValue:y0,focus:y1,onMessage:A1,readOnly:r0})),C0&&R().createElement("div",{className:`tyk-combobox2__values-container-trigger${u2?" tyk-combobox2__values-container-trigger--expanded":""}`,role:"button",tabIndex:c0?-1:0,onClick:f6,onKeyPress:f6},l0?R().createElement(a,{type:u2?"compress-arrows-alt":"expand-arrows-alt"}):R().createElement(a,{family:"tykon",type:"arrowdown"}))),y1&&(!H||k1.length>0)&&R().createElement(w9,A5(v5({element:z5,size:"matchElement",className:`tyk-combobox2__combobox-dropdown tyk-form-group ${c6().join(" ")}`,ref:q5,displayAxis:"vertical"},v0),{infiniteScrollerConfig:s0}),h5?h5(k1,{tags:H,searchValue:M5,activeItem:w5,listRef:c2,sendMessage:A1}):R().createElement(Le,{listRef:c2,showSearch:K0,values:k1,tags:H,searchValue:M5,activeItem:w5,onMessage:A1,renderListItem:L0,selectAll:T0})),i0&&R().createElement("p",{className:"tyk-form-control__help-block"},i0),(J&&J!=="true"&&J!=="false"||!!b1)&&R().createElement("p",{className:"tyk-form-control__error-message"},J||b1)),r0&&R().createElement("div",null,R().createElement(z7,{value:a5,tags:H,renderValue:y0,readOnly:r0})))}Y7.propTypes={allowCustomValues:n().bool,CustomListComponent:n().elementType,searchItem:n().func,renderValue:n().func,renderListItem:n().func,renderList:n().func,disabled:n().bool,readOnly:n().bool,error:n().string,label:n().oneOfType([n().arrayOf(n().node),n().node,n().element,n().func,n().string]),labelwidth:n().string,max:n().number,multiple:n().bool,note:n().oneOfType([n().node,n().element,n().string]),onBeforeChange:n().func,onChange:n().func,placeholder:n().string,tags:n().bool,tagSeparators:n().arrayOf(n().string),addTagOnBlur:n().bool,theme:n().string,value:n().oneOfType([n().string,n().instanceOf(Array),n().instanceOf(Object)]),values:n().instanceOf(Array),floatingContainerConfig:n().instanceOf(Object),valueOverflow:n().oneOf(["single","multiple"]),expandMode:n().bool,infiniteScrollerConfig:n().instanceOf(Object),displayDropdownTrigger:n().bool,selectAll:n().oneOfType([n().bool,n().shape({label:n().oneOfType([n().arrayOf(n().node),n().node,n().element,n().func,n().string]),mode:n().oneOf(["select","unselect"]),show:n().oneOf(["always","notSameState"]),render:n().func})]),closeOnSelect:n().bool,showSearch:n().bool,required:n().bool,validateOnChange:n().func,wrapperClassName:n().string};const V2=Y7,Ne=require("flatpickr");var X7=O0.n(Ne),De=O0(379),We=O0.n(De),He=O0(795),ze=O0.n(He),je=O0(569),Ve=O0.n(je),Ue=O0(565),Ge=O0.n(Ue),Ke=O0(216),Ye=O0.n(Ke),Xe=O0(589),Je=O0.n(Xe),M9=O0(821),X5={};X5.styleTagTransform=Je(),X5.setAttributes=Ge(),X5.insert=Ve().bind(null,"head"),X5.domAPI=ze(),X5.insertStyleElement=Ye();var $s=We()(M9.Z,X5);const Es=M9.Z&&M9.Z.locals?M9.Z.locals:void 0;var Qe=Object.defineProperty,qe=Object.defineProperties,Ze=Object.getOwnPropertyDescriptors,J7=Object.getOwnPropertySymbols,et=Object.prototype.hasOwnProperty,tt=Object.prototype.propertyIsEnumerable,Q7=(u,e,t)=>e in u?Qe(u,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):u[e]=t,nt=(u,e)=>{for(var t in e||(e={}))et.call(e,t)&&Q7(u,t,e[t]);if(J7)for(var t of J7(e))tt.call(e,t)&&Q7(u,t,e[t]);return u},rt=(u,e)=>qe(u,Ze(e));function q7({children:u,disabled:e,readOnly:t=!1,error:f,id:x,label:P,labelwidth:F,note:H,onClose:V,onChange:K,onOpen:X,theme:e0,config:Z={},value:Q,wrapperClassName:i0=""}){const[J,c0]=(0,D.useState)(null),r0=(0,D.useRef)(null),o0=w(Q),g0=(0,D.useCallback)((l0,s0)=>{if(!l0)return!0;if(!Array.isArray(s0))return l0.getTime()!==s0.getTime();let C0=s0;return l0&&s0.length&&l0.length?(C0=s0.filter((T0,$0)=>T0.getTime()!==l0[$0].getTime()),C0.length>0):s0.length>0},[]),y0=(0,D.useCallback)(l0=>{const s0=Z.mode==="range"?l0:l0[0]||null;K&&(Z.mode==="range"?s0.length===2&&g0(o0,s0)&&K(s0):K(s0))},[o0,K,g0]);(0,D.useEffect)(()=>{if(r0&&r0.current&&!J){const l0=X7()(r0.current,rt(nt({},Z),{defaultDate:Q,onChange:y0,onClose:V,onOpen:X}));c0(l0)}return()=>{J&&J.destroy()}},[r0.current,J]),(0,D.useEffect)(()=>{if(J){let l0=Q;typeof Q=="string"?l0=new Date(Q):Array.isArray(Q)&&(l0=Q.map(s0=>typeof s0=="string"?new Date(s0):s0)),g0(o0,l0)&&(J.set("onChange",y0),Z.mode==="range"?l0&&l0.length===2&&J.setDate(l0,!0):J.setDate(l0,!0))}},[o0,Q,J]);const L0=["tyk-form-group","tyk-form-group--addon-right",i0,...e0?e0.split(" ").map(l0=>`tyk-form-group--${l0}`):[],F&&"tyk-form-group--label-has-width",f&&"has-error"].filter(Boolean).join(" "),E0=()=>F?{flexBasis:F}:{},S0=()=>F?{flexBasis:`calc(100% - ${F} - 20px)`}:{},B0=(0,D.useCallback)(()=>{J&&J.open()},[J]),I0=()=>f&&f!=="true"&&f!=="false"?R().createElement("p",{className:"tyk-form-control__error-message"},f):null,v0=()=>{let l0={},s0={};return Z&&Z.inline&&(l0={height:0,padding:0,width:0,visibility:"hidden"},s0={display:"none"}),R().createElement(R().Fragment,null,R().createElement("input",{disabled:e,className:"tyk-form-control","data-input":!0,type:"date",ref:r0,style:l0}),R().createElement("div",{className:"tyk-input-group__addon",onClick:B0,role:"button",onKeyUp:()=>{},tabIndex:0,style:s0},R().createElement(a,{type:"calendar"})))};return R().createElement(R().Fragment,null,u&&u.length?u({openCalendar:B0,ref:r0}):R().createElement("div",{className:L0},P?R().createElement("label",{htmlFor:x,style:E0()},P):null,!t&&R().createElement("div",{className:"tyk-form-control__wrapper flatpickr",style:S0()},R().createElement("div",{className:"tyk-input-group"},v0()),H?R().createElement("p",{className:"tyk-form-control__help-block"},H):null,I0())),R().createElement("div",{className:"tyk-form-control--readonly"},t&&!Q&&"-",t&&Q&&X7().formatDate(Q,Z.dateFormat||"d/m/Y")))}q7.propTypes={config:n().instanceOf(Object),children:n().oneOfType([n().element,n().node,n().string,n().func]),disabled:n().bool,readOnly:n().bool,id:n().string,label:n().oneOfType([n().arrayOf(n().node),n().node,n().element,n().func,n().string]),labelwidth:n().string,note:n().string,onChange:n().oneOfType([n().func,n().instanceOf(Array)]),onClose:n().oneOfType([n().func,n().instanceOf(Array)]),onOpen:n().oneOfType([n().func,n().instanceOf(Array)]),theme:n().string,error:n().string,value:n().oneOfType([n().instanceOf(Array),n().instanceOf(Object),n().string]),wrapperClassName:n().string};const U2=q7;function L9(u){"@babel/helpers - typeof";return L9=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},L9(u)}function p5(u,e){if(e.length1?"s":"")+" required, but only "+e.length+" present")}function Z7(u){return p5(1,arguments),u instanceof Date||L9(u)==="object"&&Object.prototype.toString.call(u)==="[object Date]"}function x5(u){p5(1,arguments);var e=Object.prototype.toString.call(u);return u instanceof Date||L9(u)==="object"&&e==="[object Date]"?new Date(u.getTime()):typeof u=="number"||e==="[object Number]"?new Date(u):((typeof u=="string"||e==="[object String]")&&typeof console!="undefined"&&(console.warn("Starting with v2.0.0-beta.1 date-fns doesn't accept strings as date arguments. Please use `parseISO` to parse strings. See: https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#string-arguments"),console.warn(new Error().stack)),new Date(NaN))}function it(u){if(p5(1,arguments),!Z7(u)&&typeof u!="number")return!1;var e=x5(u);return!isNaN(Number(e))}function D5(u){if(u===null||u===!0||u===!1)return NaN;var e=Number(u);return isNaN(e)?e:e<0?Math.ceil(e):Math.floor(e)}function ot(u,e){p5(2,arguments);var t=x5(u).getTime(),f=D5(e);return new Date(t+f)}function st(u,e){p5(2,arguments);var t=D5(e);return ot(u,-t)}var at=864e5;function lt(u){p5(1,arguments);var e=x5(u),t=e.getTime();e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0);var f=e.getTime(),x=t-f;return Math.floor(x/at)+1}function P9(u){p5(1,arguments);var e=1,t=x5(u),f=t.getUTCDay(),x=(f=x.getTime()?t+1:e.getTime()>=F.getTime()?t:t-1}function ct(u){p5(1,arguments);var e=e4(u),t=new Date(0);t.setUTCFullYear(e,0,4),t.setUTCHours(0,0,0,0);var f=P9(t);return f}var ut=6048e5;function ht(u){p5(1,arguments);var e=x5(u),t=P9(e).getTime()-ct(e).getTime();return Math.round(t/ut)+1}var t4={};function I9(){return t4}function Os(u){t4=u}function B9(u,e){var t,f,x,P,F,H,V,K;p5(1,arguments);var X=I9(),e0=D5((t=(f=(x=(P=e==null?void 0:e.weekStartsOn)!==null&&P!==void 0?P:e==null||(F=e.locale)===null||F===void 0||(H=F.options)===null||H===void 0?void 0:H.weekStartsOn)!==null&&x!==void 0?x:X.weekStartsOn)!==null&&f!==void 0?f:(V=X.locale)===null||V===void 0||(K=V.options)===null||K===void 0?void 0:K.weekStartsOn)!==null&&t!==void 0?t:0);if(!(e0>=0&&e0<=6))throw new RangeError("weekStartsOn must be between 0 and 6 inclusively");var Z=x5(u),Q=Z.getUTCDay(),i0=(Q=1&&Q<=7))throw new RangeError("firstWeekContainsDate must be between 1 and 7 inclusively");var i0=new Date(0);i0.setUTCFullYear(e0+1,0,Q),i0.setUTCHours(0,0,0,0);var J=B9(i0,e),c0=new Date(0);c0.setUTCFullYear(e0,0,Q),c0.setUTCHours(0,0,0,0);var r0=B9(c0,e);return X.getTime()>=J.getTime()?e0+1:X.getTime()>=r0.getTime()?e0:e0-1}function dt(u,e){var t,f,x,P,F,H,V,K;p5(1,arguments);var X=I9(),e0=D5((t=(f=(x=(P=e==null?void 0:e.firstWeekContainsDate)!==null&&P!==void 0?P:e==null||(F=e.locale)===null||F===void 0||(H=F.options)===null||H===void 0?void 0:H.firstWeekContainsDate)!==null&&x!==void 0?x:X.firstWeekContainsDate)!==null&&f!==void 0?f:(V=X.locale)===null||V===void 0||(K=V.options)===null||K===void 0?void 0:K.firstWeekContainsDate)!==null&&t!==void 0?t:1),Z=n4(u,e),Q=new Date(0);Q.setUTCFullYear(Z,0,e0),Q.setUTCHours(0,0,0,0);var i0=B9(Q,e);return i0}var ft=6048e5;function pt(u,e){p5(1,arguments);var t=x5(u),f=B9(t,e).getTime()-dt(t,e).getTime();return Math.round(f/ft)+1}function X0(u,e){for(var t=u<0?"-":"",f=Math.abs(u).toString();f.length0?f:1-f;return X0(t==="yy"?x%100:x,t.length)},M:function(e,t){var f=e.getUTCMonth();return t==="M"?String(f+1):X0(f+1,2)},d:function(e,t){return X0(e.getUTCDate(),t.length)},a:function(e,t){var f=e.getUTCHours()/12>=1?"pm":"am";switch(t){case"a":case"aa":return f.toUpperCase();case"aaa":return f;case"aaaaa":return f[0];case"aaaa":default:return f==="am"?"a.m.":"p.m."}},h:function(e,t){return X0(e.getUTCHours()%12||12,t.length)},H:function(e,t){return X0(e.getUTCHours(),t.length)},m:function(e,t){return X0(e.getUTCMinutes(),t.length)},s:function(e,t){return X0(e.getUTCSeconds(),t.length)},S:function(e,t){var f=t.length,x=e.getUTCMilliseconds(),P=Math.floor(x*Math.pow(10,f-3));return X0(P,t.length)}};const R5=gt;var J5={am:"am",pm:"pm",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},mt={G:function(e,t,f){var x=e.getUTCFullYear()>0?1:0;switch(t){case"G":case"GG":case"GGG":return f.era(x,{width:"abbreviated"});case"GGGGG":return f.era(x,{width:"narrow"});case"GGGG":default:return f.era(x,{width:"wide"})}},y:function(e,t,f){if(t==="yo"){var x=e.getUTCFullYear(),P=x>0?x:1-x;return f.ordinalNumber(P,{unit:"year"})}return R5.y(e,t)},Y:function(e,t,f,x){var P=n4(e,x),F=P>0?P:1-P;if(t==="YY"){var H=F%100;return X0(H,2)}return t==="Yo"?f.ordinalNumber(F,{unit:"year"}):X0(F,t.length)},R:function(e,t){var f=e4(e);return X0(f,t.length)},u:function(e,t){var f=e.getUTCFullYear();return X0(f,t.length)},Q:function(e,t,f){var x=Math.ceil((e.getUTCMonth()+1)/3);switch(t){case"Q":return String(x);case"QQ":return X0(x,2);case"Qo":return f.ordinalNumber(x,{unit:"quarter"});case"QQQ":return f.quarter(x,{width:"abbreviated",context:"formatting"});case"QQQQQ":return f.quarter(x,{width:"narrow",context:"formatting"});case"QQQQ":default:return f.quarter(x,{width:"wide",context:"formatting"})}},q:function(e,t,f){var x=Math.ceil((e.getUTCMonth()+1)/3);switch(t){case"q":return String(x);case"qq":return X0(x,2);case"qo":return f.ordinalNumber(x,{unit:"quarter"});case"qqq":return f.quarter(x,{width:"abbreviated",context:"standalone"});case"qqqqq":return f.quarter(x,{width:"narrow",context:"standalone"});case"qqqq":default:return f.quarter(x,{width:"wide",context:"standalone"})}},M:function(e,t,f){var x=e.getUTCMonth();switch(t){case"M":case"MM":return R5.M(e,t);case"Mo":return f.ordinalNumber(x+1,{unit:"month"});case"MMM":return f.month(x,{width:"abbreviated",context:"formatting"});case"MMMMM":return f.month(x,{width:"narrow",context:"formatting"});case"MMMM":default:return f.month(x,{width:"wide",context:"formatting"})}},L:function(e,t,f){var x=e.getUTCMonth();switch(t){case"L":return String(x+1);case"LL":return X0(x+1,2);case"Lo":return f.ordinalNumber(x+1,{unit:"month"});case"LLL":return f.month(x,{width:"abbreviated",context:"standalone"});case"LLLLL":return f.month(x,{width:"narrow",context:"standalone"});case"LLLL":default:return f.month(x,{width:"wide",context:"standalone"})}},w:function(e,t,f,x){var P=pt(e,x);return t==="wo"?f.ordinalNumber(P,{unit:"week"}):X0(P,t.length)},I:function(e,t,f){var x=ht(e);return t==="Io"?f.ordinalNumber(x,{unit:"week"}):X0(x,t.length)},d:function(e,t,f){return t==="do"?f.ordinalNumber(e.getUTCDate(),{unit:"date"}):R5.d(e,t)},D:function(e,t,f){var x=lt(e);return t==="Do"?f.ordinalNumber(x,{unit:"dayOfYear"}):X0(x,t.length)},E:function(e,t,f){var x=e.getUTCDay();switch(t){case"E":case"EE":case"EEE":return f.day(x,{width:"abbreviated",context:"formatting"});case"EEEEE":return f.day(x,{width:"narrow",context:"formatting"});case"EEEEEE":return f.day(x,{width:"short",context:"formatting"});case"EEEE":default:return f.day(x,{width:"wide",context:"formatting"})}},e:function(e,t,f,x){var P=e.getUTCDay(),F=(P-x.weekStartsOn+8)%7||7;switch(t){case"e":return String(F);case"ee":return X0(F,2);case"eo":return f.ordinalNumber(F,{unit:"day"});case"eee":return f.day(P,{width:"abbreviated",context:"formatting"});case"eeeee":return f.day(P,{width:"narrow",context:"formatting"});case"eeeeee":return f.day(P,{width:"short",context:"formatting"});case"eeee":default:return f.day(P,{width:"wide",context:"formatting"})}},c:function(e,t,f,x){var P=e.getUTCDay(),F=(P-x.weekStartsOn+8)%7||7;switch(t){case"c":return String(F);case"cc":return X0(F,t.length);case"co":return f.ordinalNumber(F,{unit:"day"});case"ccc":return f.day(P,{width:"abbreviated",context:"standalone"});case"ccccc":return f.day(P,{width:"narrow",context:"standalone"});case"cccccc":return f.day(P,{width:"short",context:"standalone"});case"cccc":default:return f.day(P,{width:"wide",context:"standalone"})}},i:function(e,t,f){var x=e.getUTCDay(),P=x===0?7:x;switch(t){case"i":return String(P);case"ii":return X0(P,t.length);case"io":return f.ordinalNumber(P,{unit:"day"});case"iii":return f.day(x,{width:"abbreviated",context:"formatting"});case"iiiii":return f.day(x,{width:"narrow",context:"formatting"});case"iiiiii":return f.day(x,{width:"short",context:"formatting"});case"iiii":default:return f.day(x,{width:"wide",context:"formatting"})}},a:function(e,t,f){var x=e.getUTCHours(),P=x/12>=1?"pm":"am";switch(t){case"a":case"aa":return f.dayPeriod(P,{width:"abbreviated",context:"formatting"});case"aaa":return f.dayPeriod(P,{width:"abbreviated",context:"formatting"}).toLowerCase();case"aaaaa":return f.dayPeriod(P,{width:"narrow",context:"formatting"});case"aaaa":default:return f.dayPeriod(P,{width:"wide",context:"formatting"})}},b:function(e,t,f){var x=e.getUTCHours(),P;switch(x===12?P=J5.noon:x===0?P=J5.midnight:P=x/12>=1?"pm":"am",t){case"b":case"bb":return f.dayPeriod(P,{width:"abbreviated",context:"formatting"});case"bbb":return f.dayPeriod(P,{width:"abbreviated",context:"formatting"}).toLowerCase();case"bbbbb":return f.dayPeriod(P,{width:"narrow",context:"formatting"});case"bbbb":default:return f.dayPeriod(P,{width:"wide",context:"formatting"})}},B:function(e,t,f){var x=e.getUTCHours(),P;switch(x>=17?P=J5.evening:x>=12?P=J5.afternoon:x>=4?P=J5.morning:P=J5.night,t){case"B":case"BB":case"BBB":return f.dayPeriod(P,{width:"abbreviated",context:"formatting"});case"BBBBB":return f.dayPeriod(P,{width:"narrow",context:"formatting"});case"BBBB":default:return f.dayPeriod(P,{width:"wide",context:"formatting"})}},h:function(e,t,f){if(t==="ho"){var x=e.getUTCHours()%12;return x===0&&(x=12),f.ordinalNumber(x,{unit:"hour"})}return R5.h(e,t)},H:function(e,t,f){return t==="Ho"?f.ordinalNumber(e.getUTCHours(),{unit:"hour"}):R5.H(e,t)},K:function(e,t,f){var x=e.getUTCHours()%12;return t==="Ko"?f.ordinalNumber(x,{unit:"hour"}):X0(x,t.length)},k:function(e,t,f){var x=e.getUTCHours();return x===0&&(x=24),t==="ko"?f.ordinalNumber(x,{unit:"hour"}):X0(x,t.length)},m:function(e,t,f){return t==="mo"?f.ordinalNumber(e.getUTCMinutes(),{unit:"minute"}):R5.m(e,t)},s:function(e,t,f){return t==="so"?f.ordinalNumber(e.getUTCSeconds(),{unit:"second"}):R5.s(e,t)},S:function(e,t){return R5.S(e,t)},X:function(e,t,f,x){var P=x._originalDate||e,F=P.getTimezoneOffset();if(F===0)return"Z";switch(t){case"X":return i4(F);case"XXXX":case"XX":return W5(F);case"XXXXX":case"XXX":default:return W5(F,":")}},x:function(e,t,f,x){var P=x._originalDate||e,F=P.getTimezoneOffset();switch(t){case"x":return i4(F);case"xxxx":case"xx":return W5(F);case"xxxxx":case"xxx":default:return W5(F,":")}},O:function(e,t,f,x){var P=x._originalDate||e,F=P.getTimezoneOffset();switch(t){case"O":case"OO":case"OOO":return"GMT"+r4(F,":");case"OOOO":default:return"GMT"+W5(F,":")}},z:function(e,t,f,x){var P=x._originalDate||e,F=P.getTimezoneOffset();switch(t){case"z":case"zz":case"zzz":return"GMT"+r4(F,":");case"zzzz":default:return"GMT"+W5(F,":")}},t:function(e,t,f,x){var P=x._originalDate||e,F=Math.floor(P.getTime()/1e3);return X0(F,t.length)},T:function(e,t,f,x){var P=x._originalDate||e,F=P.getTime();return X0(F,t.length)}};function r4(u,e){var t=u>0?"-":"+",f=Math.abs(u),x=Math.floor(f/60),P=f%60;if(P===0)return t+String(x);var F=e||"";return t+String(x)+F+X0(P,2)}function i4(u,e){if(u%60===0){var t=u>0?"-":"+";return t+X0(Math.abs(u)/60,2)}return W5(u,e)}function W5(u,e){var t=e||"",f=u>0?"-":"+",x=Math.abs(u),P=X0(Math.floor(x/60),2),F=X0(x%60,2);return f+P+t+F}const vt=mt;var o4=function(e,t){switch(e){case"P":return t.date({width:"short"});case"PP":return t.date({width:"medium"});case"PPP":return t.date({width:"long"});case"PPPP":default:return t.date({width:"full"})}},s4=function(e,t){switch(e){case"p":return t.time({width:"short"});case"pp":return t.time({width:"medium"});case"ppp":return t.time({width:"long"});case"pppp":default:return t.time({width:"full"})}},yt=function(e,t){var f=e.match(/(P+)(p+)?/)||[],x=f[1],P=f[2];if(!P)return o4(e,t);var F;switch(x){case"P":F=t.dateTime({width:"short"});break;case"PP":F=t.dateTime({width:"medium"});break;case"PPP":F=t.dateTime({width:"long"});break;case"PPPP":default:F=t.dateTime({width:"full"});break}return F.replace("{{date}}",o4(x,t)).replace("{{time}}",s4(P,t))},bt={p:s4,P:yt};const wt=bt;function Ct(u){var e=new Date(Date.UTC(u.getFullYear(),u.getMonth(),u.getDate(),u.getHours(),u.getMinutes(),u.getSeconds(),u.getMilliseconds()));return e.setUTCFullYear(u.getFullYear()),u.getTime()-e.getTime()}var At=["D","DD"],kt=["YY","YYYY"];function xt(u){return At.indexOf(u)!==-1}function St(u){return kt.indexOf(u)!==-1}function a4(u,e,t){if(u==="YYYY")throw new RangeError("Use `yyyy` instead of `YYYY` (in `".concat(e,"`) for formatting years to the input `").concat(t,"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md"));if(u==="YY")throw new RangeError("Use `yy` instead of `YY` (in `".concat(e,"`) for formatting years to the input `").concat(t,"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md"));if(u==="D")throw new RangeError("Use `d` instead of `D` (in `".concat(e,"`) for formatting days of the month to the input `").concat(t,"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md"));if(u==="DD")throw new RangeError("Use `dd` instead of `DD` (in `".concat(e,"`) for formatting days of the month to the input `").concat(t,"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md"))}var _t={lessThanXSeconds:{one:"less than a second",other:"less than {{count}} seconds"},xSeconds:{one:"1 second",other:"{{count}} seconds"},halfAMinute:"half a minute",lessThanXMinutes:{one:"less than a minute",other:"less than {{count}} minutes"},xMinutes:{one:"1 minute",other:"{{count}} minutes"},aboutXHours:{one:"about 1 hour",other:"about {{count}} hours"},xHours:{one:"1 hour",other:"{{count}} hours"},xDays:{one:"1 day",other:"{{count}} days"},aboutXWeeks:{one:"about 1 week",other:"about {{count}} weeks"},xWeeks:{one:"1 week",other:"{{count}} weeks"},aboutXMonths:{one:"about 1 month",other:"about {{count}} months"},xMonths:{one:"1 month",other:"{{count}} months"},aboutXYears:{one:"about 1 year",other:"about {{count}} years"},xYears:{one:"1 year",other:"{{count}} years"},overXYears:{one:"over 1 year",other:"over {{count}} years"},almostXYears:{one:"almost 1 year",other:"almost {{count}} years"}},$t=function(e,t,f){var x,P=_t[e];return typeof P=="string"?x=P:t===1?x=P.one:x=P.other.replace("{{count}}",t.toString()),f!=null&&f.addSuffix?f.comparison&&f.comparison>0?"in "+x:x+" ago":x};const Et=$t;function G2(u){return function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},t=e.width?String(e.width):u.defaultWidth,f=u.formats[t]||u.formats[u.defaultWidth];return f}}var Ot={full:"EEEE, MMMM do, y",long:"MMMM do, y",medium:"MMM d, y",short:"MM/dd/yyyy"},Tt={full:"h:mm:ss a zzzz",long:"h:mm:ss a z",medium:"h:mm:ss a",short:"h:mm a"},Rt={full:"{{date}} 'at' {{time}}",long:"{{date}} 'at' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},Mt={date:G2({formats:Ot,defaultWidth:"full"}),time:G2({formats:Tt,defaultWidth:"full"}),dateTime:G2({formats:Rt,defaultWidth:"full"})};const Lt=Mt;var Pt={lastWeek:"'last' eeee 'at' p",yesterday:"'yesterday at' p",today:"'today at' p",tomorrow:"'tomorrow at' p",nextWeek:"eeee 'at' p",other:"P"},It=function(e,t,f,x){return Pt[e]};const Bt=It;function c9(u){return function(e,t){var f=t!=null&&t.context?String(t.context):"standalone",x;if(f==="formatting"&&u.formattingValues){var P=u.defaultFormattingWidth||u.defaultWidth,F=t!=null&&t.width?String(t.width):P;x=u.formattingValues[F]||u.formattingValues[P]}else{var H=u.defaultWidth,V=t!=null&&t.width?String(t.width):u.defaultWidth;x=u.values[V]||u.values[H]}var K=u.argumentCallback?u.argumentCallback(e):e;return x[K]}}var Ft={narrow:["B","A"],abbreviated:["BC","AD"],wide:["Before Christ","Anno Domini"]},Nt={narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1st quarter","2nd quarter","3rd quarter","4th quarter"]},Dt={narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],wide:["January","February","March","April","May","June","July","August","September","October","November","December"]},Wt={narrow:["S","M","T","W","T","F","S"],short:["Su","Mo","Tu","We","Th","Fr","Sa"],abbreviated:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],wide:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},Ht={narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"}},zt={narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"}},jt=function(e,t){var f=Number(e),x=f%100;if(x>20||x<10)switch(x%10){case 1:return f+"st";case 2:return f+"nd";case 3:return f+"rd"}return f+"th"},Vt={ordinalNumber:jt,era:c9({values:Ft,defaultWidth:"wide"}),quarter:c9({values:Nt,defaultWidth:"wide",argumentCallback:function(e){return e-1}}),month:c9({values:Dt,defaultWidth:"wide"}),day:c9({values:Wt,defaultWidth:"wide"}),dayPeriod:c9({values:Ht,defaultWidth:"wide",formattingValues:zt,defaultFormattingWidth:"wide"})};const Ut=Vt;function u9(u){return function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},f=t.width,x=f&&u.matchPatterns[f]||u.matchPatterns[u.defaultMatchWidth],P=e.match(x);if(!P)return null;var F=P[0],H=f&&u.parsePatterns[f]||u.parsePatterns[u.defaultParseWidth],V=Array.isArray(H)?Kt(H,function(e0){return e0.test(F)}):Gt(H,function(e0){return e0.test(F)}),K;K=u.valueCallback?u.valueCallback(V):V,K=t.valueCallback?t.valueCallback(K):K;var X=e.slice(F.length);return{value:K,rest:X}}}function Gt(u,e){for(var t in u)if(u.hasOwnProperty(t)&&e(u[t]))return t}function Kt(u,e){for(var t=0;t1&&arguments[1]!==void 0?arguments[1]:{},f=e.match(u.matchPattern);if(!f)return null;var x=f[0],P=e.match(u.parsePattern);if(!P)return null;var F=u.valueCallback?u.valueCallback(P[0]):P[0];F=t.valueCallback?t.valueCallback(F):F;var H=e.slice(x.length);return{value:F,rest:H}}}var Xt=/^(\d+)(th|st|nd|rd)?/i,Jt=/\d+/i,Qt={narrow:/^(b|a)/i,abbreviated:/^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i,wide:/^(before christ|before common era|anno domini|common era)/i},qt={any:[/^b/i,/^(a|c)/i]},Zt={narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](th|st|nd|rd)? quarter/i},en={any:[/1/i,/2/i,/3/i,/4/i]},tn={narrow:/^[jfmasond]/i,abbreviated:/^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,wide:/^(january|february|march|april|may|june|july|august|september|october|november|december)/i},nn={narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^ap/i,/^may/i,/^jun/i,/^jul/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},rn={narrow:/^[smtwf]/i,short:/^(su|mo|tu|we|th|fr|sa)/i,abbreviated:/^(sun|mon|tue|wed|thu|fri|sat)/i,wide:/^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i},on={narrow:[/^s/i,/^m/i,/^t/i,/^w/i,/^t/i,/^f/i,/^s/i],any:[/^su/i,/^m/i,/^tu/i,/^w/i,/^th/i,/^f/i,/^sa/i]},sn={narrow:/^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,any:/^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i},an={any:{am:/^a/i,pm:/^p/i,midnight:/^mi/i,noon:/^no/i,morning:/morning/i,afternoon:/afternoon/i,evening:/evening/i,night:/night/i}},ln={ordinalNumber:Yt({matchPattern:Xt,parsePattern:Jt,valueCallback:function(e){return parseInt(e,10)}}),era:u9({matchPatterns:Qt,defaultMatchWidth:"wide",parsePatterns:qt,defaultParseWidth:"any"}),quarter:u9({matchPatterns:Zt,defaultMatchWidth:"wide",parsePatterns:en,defaultParseWidth:"any",valueCallback:function(e){return e+1}}),month:u9({matchPatterns:tn,defaultMatchWidth:"wide",parsePatterns:nn,defaultParseWidth:"any"}),day:u9({matchPatterns:rn,defaultMatchWidth:"wide",parsePatterns:on,defaultParseWidth:"any"}),dayPeriod:u9({matchPatterns:sn,defaultMatchWidth:"any",parsePatterns:an,defaultParseWidth:"any"})},cn={code:"en-US",formatDistance:Et,formatLong:Lt,formatRelative:Bt,localize:Ut,match:ln,options:{weekStartsOn:0,firstWeekContainsDate:1}};const un=cn;var hn=/[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g,dn=/P+p+|P+|p+|''|'(''|[^'])+('|$)|./g,fn=/^'([^]*?)'?$/,pn=/''/g,gn=/[a-zA-Z]/;function mn(u,e,t){var f,x,P,F,H,V,K,X,e0,Z,Q,i0,J,c0,r0,o0,g0,y0;p5(2,arguments);var L0=String(e),E0=I9(),S0=(f=(x=t==null?void 0:t.locale)!==null&&x!==void 0?x:E0.locale)!==null&&f!==void 0?f:un,B0=D5((P=(F=(H=(V=t==null?void 0:t.firstWeekContainsDate)!==null&&V!==void 0?V:t==null||(K=t.locale)===null||K===void 0||(X=K.options)===null||X===void 0?void 0:X.firstWeekContainsDate)!==null&&H!==void 0?H:E0.firstWeekContainsDate)!==null&&F!==void 0?F:(e0=E0.locale)===null||e0===void 0||(Z=e0.options)===null||Z===void 0?void 0:Z.firstWeekContainsDate)!==null&&P!==void 0?P:1);if(!(B0>=1&&B0<=7))throw new RangeError("firstWeekContainsDate must be between 1 and 7 inclusively");var I0=D5((Q=(i0=(J=(c0=t==null?void 0:t.weekStartsOn)!==null&&c0!==void 0?c0:t==null||(r0=t.locale)===null||r0===void 0||(o0=r0.options)===null||o0===void 0?void 0:o0.weekStartsOn)!==null&&J!==void 0?J:E0.weekStartsOn)!==null&&i0!==void 0?i0:(g0=E0.locale)===null||g0===void 0||(y0=g0.options)===null||y0===void 0?void 0:y0.weekStartsOn)!==null&&Q!==void 0?Q:0);if(!(I0>=0&&I0<=6))throw new RangeError("weekStartsOn must be between 0 and 6 inclusively");if(!S0.localize)throw new RangeError("locale must contain localize property");if(!S0.formatLong)throw new RangeError("locale must contain formatLong property");var v0=x5(u);if(!it(v0))throw new RangeError("Invalid time value");var l0=Ct(v0),s0=st(v0,l0),C0={firstWeekContainsDate:B0,weekStartsOn:I0,locale:S0,_originalDate:v0},T0=L0.match(dn).map(function($0){var K0=$0[0];if(K0==="p"||K0==="P"){var R0=wt[K0];return R0($0,S0.formatLong)}return $0}).join("").match(hn).map(function($0){if($0==="''")return"'";var K0=$0[0];if(K0==="'")return vn($0);var R0=vt[K0];if(R0)return!(t!=null&&t.useAdditionalWeekYearTokens)&&St($0)&&a4($0,e,String(u)),!(t!=null&&t.useAdditionalDayOfYearTokens)&&xt($0)&&a4($0,e,String(u)),R0(s0,$0,S0.localize,C0);if(K0.match(gn))throw new RangeError("Format string contains an unescaped latin alphabet character `"+K0+"`");return $0}).join("");return T0}function vn(u){var e=u.match(fn);return e?e[1].replace(pn,"'"):u}var yn=O0(590),l4=O0.n(yn),bn=Object.defineProperty,wn=Object.defineProperties,Cn=Object.getOwnPropertyDescriptors,F9=Object.getOwnPropertySymbols,c4=Object.prototype.hasOwnProperty,u4=Object.prototype.propertyIsEnumerable,K2=(u,e,t)=>e in u?bn(u,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):u[e]=t,An=(u,e)=>{for(var t in e||(e={}))c4.call(e,t)&&K2(u,t,e[t]);if(F9)for(var t of F9(e))u4.call(e,t)&&K2(u,t,e[t]);return u},kn=(u,e)=>wn(u,Cn(e)),xn=(u,e)=>{var t={};for(var f in u)c4.call(u,f)&&e.indexOf(f)<0&&(t[f]=u[f]);if(u!=null&&F9)for(var f of F9(u))e.indexOf(f)<0&&u4.call(u,f)&&(t[f]=u[f]);return t},Sn=(u,e,t)=>(K2(u,typeof e!="symbol"?e+"":e,t),t);const h4=class n9 extends D.Component{static getMainFormValue(e){const t=new Array(e.length);return e.forEach((f,x)=>{t[x]=f.props.value||void 0}),t}constructor(e){super(e);const{components:t}=e;this.submitButtonRef=(0,D.createRef)(),this.handleOnChange=this.handleOnChange.bind(this),this.submitForm=this.submitForm.bind(this),this.state={components:t,errors:{},mainError:null,mainFormValue:n9.getMainFormValue(t),refs:[]}}componentDidMount(){const{addValueOnFieldChange:e,getMainFormButtonWidth:t}=this.props;this.createRefs(),t&&t(e?0:this.submitButtonRef.current.clientWidth)}static getDerivedStateFromProps(e,t){const f={},{components:x}=e,{components:P}=t;return!l4()(x,P)&&!l4()(n9.getMainFormValue(x),n9.getMainFormValue(P))&&(f.mainFormValue=n9.getMainFormValue(x),f.components=x),f}getFormCssClasses(){const{noLabels:e}=this.props,t=["tyk-editable-list__form"];return e&&t.push("no-labels"),t.join(" ")}getButtonClassName(){const{buttonStyle:e,displayType:t}=this.props,f=[];return e&&f.push(e),t&&f.push(t),f.join(" ")}getComponentsError(e){const{error:t,errors:f,mainError:x}=this.state;return t||x?f[e.props.name]="true":!(t||x)&&f[e.props.name]==="true"&&delete f[e.props.name],f[e.props.name]?f[e.props.name].toString():void 0}createRefs(){const{components:e}=this.props,t=[];e.forEach(()=>{t.push((0,D.createRef)())}),this.setState({refs:t})}validateValue(e,t){const{mainError:f,errors:x}=this.state,{error:P,errorPersist:F}=this.props,H=t.validate?Object.keys(t.validate):[],V={errors:P||f?{}:Object.assign({},x)};let K=!0;if(F)return V;for(let X=0;X0?!0:(t.forEach((F,H)=>{P.errors=Object.assign({},P.errors,this.validateValue(x[H],F.props).errors)}),Object.keys(P.errors).length>0)}handleOnChange(e,t,f){const{addValueOnFieldChange:x}=this.props;let P=this.state;P=Object.assign({},P,this.validateValue(f,e.props)),P.errors[e.props.name]||(P.mainFormValue[t]=f,e.props.onChange&&e.props.onChange(f)),this.setState(F=>Object.assign({},F,P),()=>{x&&this.submitForm()})}resetForm(){const{refs:e}=this.state,{components:t}=this.props;e.forEach(f=>{var x;(x=f.current)!=null&&x.reset&&f.current.reset()}),this.setState({errors:{},mainError:null,mainFormValue:n9.getMainFormValue(t)})}showMainError(e){this.setState({mainError:e})}submitForm(){const{errors:e,mainFormValue:t}=this.state,{errorPersist:f,onSubmit:x,validate:P,validationmessage:F}=this.props;f&&(x(t),this.resetForm()),Object.keys(e).length===0&&x&&typeof x=="function"&&(P?P(t)?this.showMainError(F):(x(t),this.resetForm()):(x(t),this.resetForm()))}render(){const{addValueOnFieldChange:e,components:t,buttonName:f,disabled:x,displayType:P,error:F}=this.props,{mainError:H,refs:V,errors:K}=this.state;return R().createElement("div",null,R().createElement("div",{className:this.getFormCssClasses()},R().createElement(a9,null,t.map((X,e0)=>{const Z=X.name,Q=X.props,{onChange:i0,value:J}=Q,c0=xn(Q,["onChange","value"]);return R().createElement(O9,{size:`md-${X.size||"12"} lg-${X.size||"12"}`,key:X.props.name},R().createElement(Z,kn(An({disabled:x||X.props.disabled,onChange:this.handleOnChange.bind(this,X,e0)},c0),{label:P==="inline"?"":X.props.label,error:this.getComponentsError(X),ref:V[e0],value:J})))})),e?null:R().createElement("span",{className:this.getButtonClassName(),ref:this.submitButtonRef},R().createElement(j0,{disabled:this.hasMainFormErrors(K),className:"tyk-editable-list__submit-btn",onClick:this.submitForm,theme:"default",type:"button",size:P==="inline"?"sm":"md"},f||"ADD"))),F||H?R().createElement("div",{className:"tyk-editable-list-main-error"},R().createElement("p",{className:"error-message"},F||H)):null)}};Sn(h4,"propTypes",{addValueOnFieldChange:n().bool,noLabels:n().bool,buttonName:n().string,buttonStyle:n().string,components:n().instanceOf(Array),displayType:n().string,disabled:n().bool,getMainFormButtonWidth:n().func,error:n().string,errorPersist:n().bool,onSubmit:n().func,validate:n().func,validationmessage:n().string});let d4=h4;var _n=Object.defineProperty,$n=(u,e,t)=>e in u?_n(u,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):u[e]=t,En=(u,e,t)=>($n(u,typeof e!="symbol"?e+"":e,t),t);const f4=class d9 extends D.Component{static getItemListValue(e){let t=null;return typeof e=="string"&&(t=e),Object.prototype.toString.call(e)==="[object Object]"&&(t=e.name),Z7(e)&&(t=mn(e,"dd/MM/yyyy")),t}static getListItemCssClass(e){const t=[];return e==="inline"&&t.push("tyk-editable-list-item--inline"),t.join(" ")}constructor(e){super(e);const{value:t}=this.props;this.state={initialValue:t||"",value:t||[],buttonWidth:0},this.startIndex=1,this.handleFormSubmit=this.handleFormSubmit.bind(this),this.getMainFormButtonWidth=this.getMainFormButtonWidth.bind(this),this.dropdownListItemRef=(0,D.createRef)()}static getDerivedStateFromProps(e,t){const f={};return e.value&&JSON.stringify(e.value)!==JSON.stringify(t.initialValue)&&(f.value=e.value||[],f.initialValue=e.value||""),f.value?f:null}getListItemsCssClass(e){const{config:t}=this.props,f=["tyk-editable-list-items"];return f.push(t.displayType||"table"),e==="inline"&&f.push("tyk-editable-list-items--inline"),f.join(" ")}getFormInputKey(){return this.startIndex+=1,this.startIndex}getListItemText(e){const{config:t}=this.props;let f=null;switch(t.displayType){case"list":case"inline":{f=e.value.reduce((P,F,H)=>{const V=d9.getItemListValue(F);let K=", ";return H===e.value.length-1&&(K=""),P+V+K},"");break}default:f=R().createElement(a9,null,t.components.map((x,P)=>R().createElement(O9,{key:this.getFormInputKey(),size:`md-${x.size} lg-${x.size}`},d9.getItemListValue(e.value[P]))));break}return f}getMainFormButtonWidth(e){this.setState({buttonWidth:e})}setItemEditMode(e){const t=this.closeListItems();this.setState(f=>{const x=Object.assign({},f);return x.value=t,x.value[e].editMode=!x.value[e].editMode,x})}isInList(e,t){const{value:f}=this.state;let x=!1;return f.forEach((P,F)=>{JSON.stringify(P.value)===JSON.stringify(t)&&(e>=0&&F===e?x=!1:x=!0)}),x}addValues(e){const{value:t}=this.state,{config:f}=this.props,x={editMode:!1,value:e},P={value:t.slice(0)};return f.children&&(x.children=[]),P.value.push(x),P}removeListItem(e){let t;this.setState(f=>{const x=f.value.slice(0);return t=x.splice(e,1),{value:x}},()=>{this.triggerOnChange(e,t,null)})}handleFormSubmit(e){const t=this.addValues(e);this.setState(f=>Object.assign({},f,t),()=>{this.triggerOnChange(t.value.length-1,null,e)})}handleItemUpdate(e,t){let f;this.setState(x=>{const P=Object.assign({},x);return f=(0,W0.fromJS)(P.value[e].value).toJS(),P.value[e].value=t,P.value[e].editMode=!1,P},()=>{this.triggerOnChange(e,f,t)})}handleChildrenOnChange(e,t){let f;this.setState(x=>{const P=Object.assign({},x);return f=(0,W0.fromJS)(P.value[e].children).toJS(),P.value[e].children=t,P},()=>{this.triggerOnChange(e,f,t)})}closeListItems(){const{value:e}=this.state;return e.map(f=>{const x=Object.assign({},f);return x.editMode&&(x.editMode=!1),x})}triggerOnChange(e,t,f){const{onChange:x}=this.props,{value:P}=this.state;x&&typeof x=="function"&&x(P.length?P:null,e,t,f)}genListItem(e,t){const{config:f,disabled:x}=this.props,{buttonWidth:P,value:F}=this.state,H=(0,W0.fromJS)(f.components).toJS();return e.value.forEach((V,K)=>{H[K].props.value=V}),R().createElement("li",{key:t,className:d9.getListItemCssClass(f.displayType),ref:this.dropdownListItemRef},R().createElement("div",{className:`tyk-editable-list-item__text ${f.displayType||"table"}${e.editMode?" edit-mode-wrapper":""}`},e.editMode?R().createElement(D.Fragment,null,R().createElement(d4,{buttonName:"Update",noLabels:f.noLabels,disabled:x,displayType:f.displayType,components:H,onSubmit:this.handleItemUpdate.bind(this,t),validate:this.isInList.bind(this,t),validationmessage:"This value is already in the list"}),R().createElement("button",{type:"button",className:"tyk-editable-list-action__button on-edit",onClick:this.removeListItem.bind(this,t)},R().createElement(a,{type:"trash"}))):R().createElement(D.Fragment,null,this.getListItemText(e,t),R().createElement("div",{className:"tyk-editable-list-item__controls",style:{display:"block",width:f.displayType==="inline"?"auto":`${P+60}px`}},R().createElement("button",{disabled:x,type:"button",className:"tyk-editable-list-action__button",onClick:this.setItemEditMode.bind(this,t)},R().createElement(a,{type:"edit"})),R().createElement("button",{disabled:x,type:"button",className:"tyk-editable-list-action__button",onClick:this.removeListItem.bind(this,t)},R().createElement(a,{type:"trash"}))))),f.children?R().createElement(d9,{disabled:x,onChange:this.handleChildrenOnChange.bind(this,t),config:f.children.config,value:F[t]&&F[t].children||[]}):null)}genList(){const{config:e}=this.props,{buttonWidth:t,value:f}=this.state;return!f||f.length===0?null:R().createElement(D.Fragment,null,e.displayType==="table"||!e.displayType?R().createElement("div",{className:"tyk-editable-list__header",style:{paddingRight:`${t+60}px`}},R().createElement(a9,null,e.components.map((x,P)=>R().createElement(O9,{key:x.props.label||P,size:`md-${x.size||12} lg-${x.size||12}`},x.props.label)))):null,R().createElement("ul",{className:this.getListItemsCssClass(e.displayType)},f.map((x,P)=>this.genListItem(x,P))))}render(){const{addValueOnFieldChange:e,config:t,error:f,disabled:x,label:P}=this.props,F=document.querySelector(t.appendTo)||document.querySelector("body");return R().createElement("div",{className:"tyk-editable-list"},P?R().createElement("label",null,P):null,R().createElement(d4,{addValueOnFieldChange:e,components:t.components,buttonName:t.formButtonTitle,buttonStyle:t.formButtonStyle,disabled:x,error:f,errorPersist:!!f,noLabels:t.noLabels,onSubmit:this.handleFormSubmit,validate:this.isInList.bind(this,-1),validationmessage:"This value is already in the list",getMainFormButtonWidth:this.getMainFormButtonWidth}),t.appendTo?r9().createPortal(this.genList(),F):this.genList())}};En(f4,"propTypes",{addValueOnFieldChange:n().bool,disabled:n().bool,error:n().string,config:n().instanceOf(Object),onChange:n().func,label:n().oneOfType([n().arrayOf(n().node),n().node,n().element,n().func,n().string]),value:n().oneOfType([n().instanceOf(Array),n().instanceOf(Object)])});let Y2=f4;const p4=({label:u,addButtonName:e,onAddRow:t,disabled:f,readOnly:x})=>R().createElement("div",{className:"editable-list__header"},u?R().createElement("label",null,u):null,!f&&!x&&R().createElement(j0,{theme:"primary rounded-corners",onClick:t},e||"Add"));p4.propTypes={disabled:n().bool,readOnly:n().bool,onAddRow:n().func,addButtonName:n().string,label:n().oneOfType([n().string,n().element,n().node])};const On=p4,g4=({fields:u,readOnly:e})=>R().createElement("li",{className:"editable-list__item editable-list__item-header"},u.map(t=>{var f;return R().createElement("div",{className:`editable-list__item-cell editable-list__item--size-${(t==null?void 0:t.size)||12}`},(f=t==null?void 0:t.props)==null?void 0:f.label)}),R().createElement("div",{className:`editable-list__item-cell editable-list__item-action ${e&&"editable-list__item-action--read-only"}`},"Delete"));g4.propTypes={fields:n().instanceOf(Array),readOnly:n().bool};const Tn=g4;var Rn=Object.defineProperty,Mn=Object.defineProperties,Ln=Object.getOwnPropertyDescriptors,m4=Object.getOwnPropertySymbols,Pn=Object.prototype.hasOwnProperty,In=Object.prototype.propertyIsEnumerable,v4=(u,e,t)=>e in u?Rn(u,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):u[e]=t,Bn=(u,e)=>{for(var t in e||(e={}))Pn.call(e,t)&&v4(u,t,e[t]);if(m4)for(var t of m4(e))In.call(e,t)&&v4(u,t,e[t]);return u},Fn=(u,e)=>Mn(u,Ln(e));const y4=({fields:u,disabled:e,readOnly:t,errors:f,components:x,onChange:P,onDelete:F,value:H,rowIndex:V})=>R().createElement("li",{className:"editable-list__item"},x.map((K,X)=>{var e0,Z,Q;let i0=u[X],J=typeof i0=="function"?i0(V,X):i0;return R().createElement("div",{className:`editable-list__item-cell editable-list__item--size-${((e0=u[X])==null?void 0:e0.size)||12}`},R().createElement(K,Fn(Bn({},J==null?void 0:J.props),{label:"",value:H[X],onChange:P.bind(null,X),error:f==null?void 0:f[X],disabled:e||((Z=J==null?void 0:J.props)==null?void 0:Z.disabled),readOnly:t||((Q=J==null?void 0:J.props)==null?void 0:Q.readOnly)})))}),R().createElement("div",{className:`editable-list__item-cell editable-list__item-action ${t&&"editable-list__item-action--read-only"}`},R().createElement(j0,{iconOnly:!0,iconType:"trash-alt",theme:"primary-link",onClick:F,disabled:t||e})));y4.propTypes={disabled:n().bool,readOnly:n().bool,rowIndex:n().oneOfType([n().string,n().number]),fields:n().instanceOf(Array),errors:n().instanceOf(Array),components:n().instanceOf(Array),value:n().instanceOf(Array),onChange:n().func,onDelete:n().func};const Nn=y4,Dn=(u,e)=>{var t;return(t=e||[[void 0,void 0]])==null?void 0:t.map(f=>f==null?void 0:f.map((x,P)=>{var F,H;return((H=(F=u==null?void 0:u[P])==null?void 0:F.props)==null?void 0:H.validate)&&u[P].props.validate(x)}))};var Wn=Object.defineProperty,Hn=Object.defineProperties,zn=Object.getOwnPropertyDescriptors,N9=Object.getOwnPropertySymbols,b4=Object.prototype.hasOwnProperty,w4=Object.prototype.propertyIsEnumerable,C4=(u,e,t)=>e in u?Wn(u,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):u[e]=t,jn=(u,e)=>{for(var t in e||(e={}))b4.call(e,t)&&C4(u,t,e[t]);if(N9)for(var t of N9(e))w4.call(e,t)&&C4(u,t,e[t]);return u},Vn=(u,e)=>Hn(u,zn(e)),Un=(u,e)=>{var t={};for(var f in u)b4.call(u,f)&&e.indexOf(f)<0&&(t[f]=u[f]);if(u!=null&&N9)for(var f of N9(u))e.indexOf(f)<0&&w4.call(u,f)&&(t[f]=u[f]);return t};const Gn=u=>e=>{var t=e,{onChange:f,validate:x,error:P}=t,F=Un(t,["onChange","validate","error"]);const[H,V]=(0,D.useState)(null),K=(0,D.useCallback)(X=>{const e0=X!=null&&X.target?["radio","checkbox"].includes(X.target.type)?X.target.checked:X==null?void 0:X.target.value:X;let Z=!0;if(x&&typeof x=="function"){const Q=x(e0);Z=!Q,V(Q)}f(e0,Z)},[x,f]);return R().createElement(u,Vn(jn({},F),{onChange:K,error:H||P}))};let Kn=1;const Yn=u=>`${u}-${Kn++}`,A4=({addButtonName:u,disabled:e,readOnly:t,fields:f,label:x,error:P,value:F=[],onChange:H=()=>{},hideOnEmpty:V=!0,wrapperClassName:K=""})=>{const[X,e0]=(0,D.useState)(null),Z=(r0,o0,g0,y0)=>{var L0;const E0=F?[...F]:[];if(!F)E0[r0]=[...new Array(f.length)],E0[r0][o0]=g0;else{const S0=[...E0[r0]];S0[o0]=g0,E0[r0]=S0,E0[r0].id=F[r0].id}if((L0=X==null?void 0:X[r0])!=null&&L0[o0]&&y0){const S0=[...X],B0=[...S0[r0]];B0[o0]=null,S0[r0]=B0,e0(S0)}H(E0)},Q=r0=>{var o0;return!!((o0=r0==null?void 0:r0.flat())!=null&&o0.filter(Boolean).length)},i0=(0,D.useMemo)(()=>f.map(r0=>{let o0=typeof r0=="function"?r0():r0;return Gn((o0==null?void 0:o0.component)||R().createElement(R().Fragment,null))}),[]),J=()=>{const r0=Dn(f,F);if(Q(r0)){e0(r0);return}const o0=[...new Array(f.length)];o0.id=Yn("row"),H([...F&&F,o0])},c0=r0=>{if(!F)return;const o0=[...F];o0.splice(r0,1),H(o0)};return R().createElement("div",{className:`editable-list__wrapper tyk-form-group tyk-form-group--default ${P?"has-error":""} ${K}`},R().createElement(On,{disabled:e,readOnly:t,label:x,addButtonName:u,onAddRow:J}),F!=null&&F.length||!V?R().createElement("ul",{className:"editable-list__list"},(F||[[]]).map((r0,o0)=>R().createElement(R().Fragment,null,R().createElement(Nn,{key:r0.id||o0,rowIndex:o0,disabled:e,readOnly:t,fields:f,onChange:Z.bind(null,o0),onDelete:c0.bind(null,o0),value:r0,errors:X==null?void 0:X[o0],components:i0}))),R().createElement(Tn,{fields:f,readOnly:t})):null,P&&P!=="true"&&P!=="false"?R().createElement("p",{className:"tyk-form-control__error-message"},P):null)};A4.propTypes={disabled:n().bool,readOnly:n().bool,addButtonName:n().string,label:n().oneOfType([n().string,n().element,n().node]),fields:n().instanceOf(Array),onChange:n().func,value:n().oneOfType([n().instanceOf(Object),n().instanceOf(Array)]),error:n().string,hideOnEmpty:n().bool,wrapperClassName:n().string};const k4=A4;var Xn=Object.defineProperty,Jn=Object.defineProperties,Qn=Object.getOwnPropertyDescriptors,D9=Object.getOwnPropertySymbols,x4=Object.prototype.hasOwnProperty,S4=Object.prototype.propertyIsEnumerable,X2=(u,e,t)=>e in u?Xn(u,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):u[e]=t,qn=(u,e)=>{for(var t in e||(e={}))x4.call(e,t)&&X2(u,t,e[t]);if(D9)for(var t of D9(e))S4.call(e,t)&&X2(u,t,e[t]);return u},Zn=(u,e)=>Jn(u,Qn(e)),er=(u,e)=>{var t={};for(var f in u)x4.call(u,f)&&e.indexOf(f)<0&&(t[f]=u[f]);if(u!=null&&D9)for(var f of D9(u))e.indexOf(f)<0&&S4.call(u,f)&&(t[f]=u[f]);return t},tr=(u,e,t)=>(X2(u,typeof e!="symbol"?e+"":e,t),t);class W9 extends D.Component{constructor(e){super(e),this.handleOnChange=this.handleOnChange.bind(this),this.clearValue=this.clearValue.bind(this),this.fileInputRef=(0,D.createRef)()}getCssClasses(){const{error:e,theme:t,labelwidth:f,wrapperClassName:x=""}=this.props,P=[x,"tyk-form-group"],F=t?t.split(" "):[];return F.length&&F.forEach(H=>{P.push(`tyk-form-group--${H}`)}),f&&P.push("tyk-form-group--label-has-width"),e&&P.push("has-error"),P.join(" ")}getLabelStyles(){const{labelwidth:e}=this.props,t={};return e&&(t.flexBasis=e),t}getNonLabelWidth(){const{labelwidth:e}=this.props,t={};return e&&(t.flexBasis=`calc(100% - ${e} - 20px)`),t}getFileInputError(){const{error:e}=this.props;return e&&e!=="true"&&e!=="false"?R().createElement("p",{className:"tyk-form-control__error-message"},e):null}getFileInputComponent(){const e=this.props,{accept:t,value:f,onChange:x}=e,P=er(e,["accept","value","onChange"]);return R().createElement("div",{className:"tyk-file-input__wrapper",style:this.getNonLabelWidth()},R().createElement("input",Zn(qn({accept:t,className:"tyk-form-control"},P),{onChange:this.handleOnChange,ref:this.fileInputRef,type:"file"})),this.fileInputRef.current&&this.fileInputRef.current.files.length>0?R().createElement("button",{onClick:this.clearValue,type:"button"},R().createElement(a,{type:"times"})):null)}clearValue(){const{onChange:e}=this.props;this.fileInputRef.current.value="",e("")}handleOnChange(e){const{onChange:t}=this.props;t(e.target.files)}reset(){}render(){const{id:e,label:t,note:f}=this.props;return R().createElement(D.Fragment,null,R().createElement("div",{className:this.getCssClasses()},t?R().createElement("label",{htmlFor:e,style:this.getLabelStyles()},t):null,R().createElement("div",{className:"tyk-form-control__wrapper"},this.getFileInputComponent(),f?R().createElement("p",{className:"tyk-form-control__help-block"},f):null),this.getFileInputError()))}}tr(W9,"propTypes",{accept:n().string,disabled:n().bool,id:n().string,error:n().oneOfType([n().string,n().bool]),label:n().oneOfType([n().arrayOf(n().node),n().node,n().element,n().func,n().string]),labelwidth:n().string,name:n().string,note:n().string,onChange:n().func,placeholder:n().string,theme:n().string,value:n().instanceOf(Object),wrapperClassName:n().string});var nr=Object.defineProperty,rr=Object.defineProperties,ir=Object.getOwnPropertyDescriptors,H9=Object.getOwnPropertySymbols,_4=Object.prototype.hasOwnProperty,$4=Object.prototype.propertyIsEnumerable,J2=(u,e,t)=>e in u?nr(u,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):u[e]=t,or=(u,e)=>{for(var t in e||(e={}))_4.call(e,t)&&J2(u,t,e[t]);if(H9)for(var t of H9(e))$4.call(e,t)&&J2(u,t,e[t]);return u},sr=(u,e)=>rr(u,ir(e)),ar=(u,e)=>{var t={};for(var f in u)_4.call(u,f)&&e.indexOf(f)<0&&(t[f]=u[f]);if(u!=null&&H9)for(var f of H9(u))e.indexOf(f)<0&&$4.call(u,f)&&(t[f]=u[f]);return t},lr=(u,e,t)=>(J2(u,typeof e!="symbol"?e+"":e,t),t);const E4=class x1 extends D.Component{static getAddon(e){return R().createElement("div",{className:"tyk-input-group__addon"},e)}constructor(e){super(e);const{value:t}=this.props;this.state={initValue:t,stateValue:t},this.handleOnChange=this.handleOnChange.bind(this)}componentDidUpdate(e){const{isfield:t,value:f,onChange:x}=this.props;!t&&e.value!==f&&this.setState({stateValue:f},()=>{x&&x(f)})}getLabelStyles(){const{labelwidth:e}=this.props,t={};return e&&(t.flexBasis=e),t}getNonLabelWidth(){const{labelwidth:e}=this.props,t={};return e&&(t.flexBasis=`calc(100% - ${e} - 20px)`),t}getInputError(){const{error:e}=this.props;return e&&e!=="true"&&e!=="false"?R().createElement("p",{className:"tyk-form-control__error-message"},e):null}getCssClasses(){const{error:e,theme:t,labelwidth:f,inputgroupaddonleft:x,inputgroupaddonright:P}=this.props,F=["tyk-form-group"],H=t?t.split(" "):[];return H.length&&H.forEach(V=>{F.push(`tyk-form-group--${V}`)}),x&&F.push("tyk-form-group--addon-left"),P&&F.push("tyk-form-group--addon-right"),f&&F.push("tyk-form-group--label-has-width"),e&&F.push("has-error"),F.join(" ")}getInputGroupAddon(){const{inputgroupaddonleft:e,inputgroupaddonright:t}=this.props;return R().createElement("div",{className:"tyk-input-group"},e?x1.getAddon(e):null,this.getInputComponent(),t?x1.getAddon(t):null)}getInputComponent(){const e=this.props,{isfield:t,onChange:f,value:x}=e,P=ar(e,["isfield","onChange","value"]),{stateValue:F}=this.state;return R().createElement("input",sr(or({autoComplete:"off",className:"tyk-form-control"},P),{onChange:this.handleOnChange,value:t?x:F}))}reset(){const{initValue:e}=this.state;this.setState({stateValue:e})}handleOnChange(e){const{onChange:t,isfield:f}=this.props,x=e.target.value;f?t(x):this.setState({stateValue:x},()=>{t&&t(x)})}render(){const{label:e,id:t,inputgroupaddonleft:f,inputgroupaddonright:x,note:P,readOnly:F,value:H}=this.props;return R().createElement("div",{className:this.getCssClasses()},e?R().createElement("label",{htmlFor:t,style:this.getLabelStyles()},e):null,!F&&R().createElement("div",{className:"tyk-form-control__wrapper",style:this.getNonLabelWidth()},f||x?this.getInputGroupAddon():this.getInputComponent(),P?R().createElement("p",{className:"tyk-form-control__help-block"},P):null,this.getInputError()),F&&R().createElement("div",{className:"tyk-form-control--readonly"},H||"-"))}};lr(E4,"propTypes",{disabled:n().bool,readOnly:n().bool,id:n().string,isfield:n().bool,error:n().oneOfType([n().string,n().bool]),inputgroupaddonleft:n().oneOfType([n().element,n().node,n().string]),inputgroupaddonright:n().oneOfType([n().element,n().node,n().string]),label:n().oneOfType([n().string,n().element,n().node]),labelwidth:n().string,name:n().string,note:n().string,onChange:n().func,placeholder:n().string,theme:n().string,value:n().oneOfType([n().number,n().string])});let z9=E4;var cr=Object.defineProperty,ur=Object.defineProperties,hr=Object.getOwnPropertyDescriptors,j9=Object.getOwnPropertySymbols,O4=Object.prototype.hasOwnProperty,T4=Object.prototype.propertyIsEnumerable,R4=(u,e,t)=>e in u?cr(u,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):u[e]=t,Q2=(u,e)=>{for(var t in e||(e={}))O4.call(e,t)&&R4(u,t,e[t]);if(j9)for(var t of j9(e))T4.call(e,t)&&R4(u,t,e[t]);return u},dr=(u,e)=>ur(u,hr(e)),fr=(u,e)=>{var t={};for(var f in u)O4.call(u,f)&&e.indexOf(f)<0&&(t[f]=u[f]);if(u!=null&&j9)for(var f of j9(u))e.indexOf(f)<0&&T4.call(u,f)&&(t[f]=u[f]);return t};const M4=(0,D.forwardRef)((u,e)=>{var t=u,{error:f,onChange:x,readOnly:P,id:F,inputgroupaddonleft:H,inputgroupaddonright:V,label:K,labelwidth:X,note:e0,theme:Z,value:Q,wrapperClassName:i0=""}=t,J=fr(t,["error","onChange","readOnly","id","inputgroupaddonleft","inputgroupaddonright","label","labelwidth","note","theme","value","wrapperClassName"]);const c0=(0,D.useRef)();(0,D.useImperativeHandle)(e,()=>({focus:()=>{c0.current.focus()}}));const r0=I0=>R().createElement("div",{className:"tyk-input-group__addon"},I0),o0=()=>Q2({},X&&{flexBasis:X}),g0=()=>Q2({},X&&{flexBasis:`calc(100% - ${X} - 20px)`}),y0=()=>f&&f!=="true"&&f!=="false"?R().createElement("p",{className:"tyk-form-control__error-message"},f):null,L0=()=>{const I0=[i0,"tyk-form-group"],v0=Z?Z.split(" "):[];return v0.length&&v0.forEach(l0=>{I0.push(`tyk-form-group--${l0}`)}),H&&I0.push("tyk-form-group--addon-left"),V&&I0.push("tyk-form-group--addon-right"),X&&I0.push("tyk-form-group--label-has-width"),f&&I0.push("has-error"),I0.join(" ")},E0=I0=>{x(I0,I0.target.value)},S0=()=>R().createElement("input",dr(Q2({autoComplete:"off",className:"tyk-form-control"},J),{onChange:E0,value:Q,ref:c0})),B0=()=>R().createElement("div",{className:"tyk-input-group"},H?r0(H):null,S0(),V?r0(V):null);return R().createElement("div",{className:L0()},K?R().createElement("label",{htmlFor:F,style:o0()},K):null,!P&&R().createElement("div",{className:"tyk-form-control__wrapper",style:g0()},H||V?B0():S0(),e0?R().createElement("p",{className:"tyk-form-control__help-block"},e0):null,y0()),P&&R().createElement("div",{className:"tyk-form-control--readonly"},Q||"-"))});M4.propTypes={disabled:n().bool,readOnly:n().bool,id:n().string,error:n().oneOfType([n().string,n().bool]),inputgroupaddonleft:n().oneOfType([n().element,n().node,n().string]),inputgroupaddonright:n().oneOfType([n().element,n().node,n().string]),label:n().oneOfType([n().string,n().element,n().node]),labelwidth:n().string,name:n().string,note:n().string,onChange:n().func,placeholder:n().string,theme:n().string,value:n().oneOfType([n().number,n().string]),wrapperClassName:n().string};const L4=M4,P4=(0,D.createContext)();var pr=Object.defineProperty,gr=(u,e,t)=>e in u?pr(u,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):u[e]=t,mr=(u,e,t)=>(gr(u,typeof e!="symbol"?e+"":e,t),t);const vr=(u,e)=>u.detailsDisplayTemplate?u.detailsDisplayTemplate(e):JSON.stringify(e.details),yr=(u,e)=>{const{opened:t}=u;return t[e.id]?R().createElement(_0,{position:"relative"}):null};class I4 extends D.Component{isInSearchValue(e){const{searchValue:t,item:f}=this.props;if(e&&e.length>0){let x=e.slice(0);return x=x.filter(P=>f[P]&&f[P].search(t)>-1),x.length>0}return JSON.stringify(f).search(t)>-1}render(){const{item:e,itemType:t,onChange:f}=this.props;return R().createElement(D.Fragment,null,R().createElement(P4.Consumer,null,x=>this.isInSearchValue(x.fieldsToSearchOn)?R().createElement("li",null,R().createElement("div",null,R().createElement("span",{className:"tyk-multiselect-item__name"},x.itemDisplayTemplate?x.itemDisplayTemplate(e):JSON.stringify(e)),R().createElement("span",{className:"tyk-multiselect-item__controls"},R().createElement(j0,{iconType:t==="normal"?"plus":"minus",iconOnly:!0,onClick:f.bind(null,e),disabled:x.disabled||x.maxSelections&&x.maxSelections===x.nrSelectedItems&&t==="normal"}),R().createElement(j0,{iconType:x.opened[e.id]?"chevron-up":"chevron-down",iconOnly:!0,onClick:x.onGetItemDetails.bind(x.parentContext,e)}))),e.details?R().createElement(m0,{collapsed:!x.opened[e.id],className:"tyk-multiselect-item__details"},vr(x,e)):yr(x,e)):null))}}mr(I4,"propTypes",{item:n().instanceOf(Object),itemType:n().string,searchValue:n().string,onChange:n().func});const br=I4;var wr=Object.defineProperty,Cr=(u,e,t)=>e in u?wr(u,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):u[e]=t,B4=(u,e,t)=>(Cr(u,typeof e!="symbol"?e+"":e,t),t);class F4 extends D.Component{constructor(e){super(e),B4(this,"state",{searchValue:""}),this.searchOnChange=this.searchOnChange.bind(this),this.itemChanged=this.itemChanged.bind(this),this.itemIndex=0,this.itemsListRef=(0,D.createRef)()}getItemIndex(){return this.itemIndex+=1,this.itemIndex}getItemsList(){const{itemsPageNumber:e,itemsNrPages:t,loadMoreItems:f,serverLoad:x}=this.props;return x?R().createElement(b9,{refChild:this.itemsListRef,hasMore:t>e,loadMore:f,pageNumber:e},this.renderListItems()):this.renderListItems()}searchOnChange(e){const{onCustomSearch:t}=this.props;t?t(e):this.setState({searchValue:e})}itemChanged(e){const{items:t,onChange:f}=this.props;let x=(0,W0.fromJS)(t).toJS();x=x.filter(P=>e.id!==P.id),f(x,e)}renderListItems(){const{customSearch:e,items:t,panelType:f,serverLoad:x}=this.props,{searchValue:P}=this.state;return R().createElement("ul",{className:`tyk-multiselect__list${x?"":" tyk-multiselect__list--scroll"}`,ref:this.itemsListRef},t.map(F=>R().createElement(br,{itemType:f,key:this.getItemIndex(),onChange:this.itemChanged,searchValue:e?"":P,item:F})))}render(){const{inputPlaceholder:e,noItemsMessage:t,items:f}=this.props,{searchValue:x}=this.state;return R().createElement("div",{className:"tyk-multiselect__panel"},R().createElement(z9,{inputgroupaddonleft:R().createElement(a,{type:"search"}),name:"search",onChange:this.searchOnChange,placeholder:e,value:x}),f.length?this.getItemsList():R().createElement(D0,{theme:"info"},t))}}B4(F4,"propTypes",{customSearch:n().bool,onCustomSearch:n().func,panelType:n().string,onChange:n().func,items:n().instanceOf(Array),itemsPageNumber:n().number,itemsNrPages:n().number,inputPlaceholder:n().string,loadMoreItems:n().func,noItemsMessage:n().string,serverLoad:n().bool});const N4=F4;var Ar=Object.defineProperty,kr=(u,e,t)=>e in u?Ar(u,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):u[e]=t,D4=(u,e,t)=>(kr(u,typeof e!="symbol"?e+"":e,t),t);const xr=(u,e)=>e.filter(f=>!(u.filter(P=>P.id===f.id).length>0));class W4 extends D.Component{constructor(e){super(e),D4(this,"state",{opened:{}}),this.valueChange=this.valueChange.bind(this),this.itemsChange=this.itemsChange.bind(this)}onGetItemDetails(e){const{getItemDetails:t}=this.props;this.setState(f=>{const x=Object.assign({},f);return x.opened[e.id]=!x.opened[e.id],x},()=>{t&&t(e)})}getMultiselectError(){const{error:e}=this.props;return e&&e!=="true"&&e!=="false"?R().createElement("p",{className:"tyk-form-control__error-message"},e):null}getCssClasses(){const{error:e,wrapperClassName:t=""}=this.props,f=[t,"tyk-multiselect"];return e&&f.push("has-error"),f.join(" ")}itemsChange(e,t){const{value:f,onChange:x}=this.props,P=(0,W0.fromJS)(f).toJS();P.unshift(t),x(P,t,"added")}valueChange(e,t){const{items:f,onChange:x}=this.props;(0,W0.fromJS)(f).toJS().unshift(t),x(e,t,"removed")}render(){const{customSearch:e,entityNamePlural:t,disabled:f,itemDisplayTemplate:x,detailsDisplayTemplate:P,fieldsToSearchOn:F,items:H,itemsPageNumber:V,itemsNrPages:K,loadMoreItems:X,maxSelections:e0,note:Z,value:Q}=this.props,{opened:i0}=this.state;return R().createElement(D.Fragment,null,R().createElement("div",{className:this.getCssClasses()},R().createElement(P4.Provider,{value:{disabled:f,parentContext:this,itemDisplayTemplate:x,detailsDisplayTemplate:P,fieldsToSearchOn:F,maxSelections:e0,nrSelectedItems:Q.length,onGetItemDetails:this.onGetItemDetails,opened:i0}},R().createElement("div",{className:"tyk-multiselect__header"},R().createElement("div",null,Q.length," ","Selected"," ",t),R().createElement("div",null,"Select from existing",t)),R().createElement("div",{className:"tyk-multiselect__panel-wrapper"},R().createElement(N4,{inputPlaceholder:`Search through selected ${t}`,noItemsMessage:`Selected ${t} will show here`,items:Q,onChange:this.valueChange,panelType:"selected"}),R().createElement(N4,{inputPlaceholder:`Search existing ${t}`,noItemsMessage:`No ${t} to display`,entityNamePlural:t,customSearch:!!e,onCustomSearch:e,items:xr(Q,H),onChange:this.itemsChange,serverLoad:!!X,loadMoreItems:X,itemsPageNumber:V,itemsNrPages:K,panelType:"normal"})))),R().createElement("div",null,Z?R().createElement("p",{className:"tyk-form-control__help-block"},Z):null),this.getMultiselectError())}}D4(W4,"propTypes",{customSearch:n().func,disabled:n().bool,error:n().string,entityNamePlural:n().string,items:n().instanceOf(Array),itemDisplayTemplate:n().func,detailsDisplayTemplate:n().func,fieldsToSearchOn:n().instanceOf(Array),onChange:n().func,getItemDetails:n().func,itemsPageNumber:n().number,itemsNrPages:n().number,loadMoreItems:n().func,note:n().string,maxSelections:n().number,value:n().instanceOf(Array),wrapperClassName:n().string});const q2=W4;var Sr=Object.defineProperty,_r=Object.defineProperties,$r=Object.getOwnPropertyDescriptors,V9=Object.getOwnPropertySymbols,H4=Object.prototype.hasOwnProperty,z4=Object.prototype.propertyIsEnumerable,Z2=(u,e,t)=>e in u?Sr(u,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):u[e]=t,j4=(u,e)=>{for(var t in e||(e={}))H4.call(e,t)&&Z2(u,t,e[t]);if(V9)for(var t of V9(e))z4.call(e,t)&&Z2(u,t,e[t]);return u},Er=(u,e)=>_r(u,$r(e)),Or=(u,e)=>{var t={};for(var f in u)H4.call(u,f)&&e.indexOf(f)<0&&(t[f]=u[f]);if(u!=null&&V9)for(var f of V9(u))e.indexOf(f)<0&&z4.call(u,f)&&(t[f]=u[f]);return t},Tr=(u,e,t)=>(Z2(u,typeof e!="symbol"?e+"":e,t),t);class e1 extends D.Component{getCssClasses(){const{inline:e,nospace:t,theme:f="",disabled:x,readOnly:P,wrapperClassName:F=""}=this.props,H=[F];return e?H.push("tyk-radio--inline"):H.push("tyk-radio"),t&&H.push("no-margin"),f.trim()&&H.push(...f.split(" ").map(V=>`tyk-radio--theme-${V}`)),(P||x)&&H.push("tyk-radio--is-disabled"),H.join(" ")}render(){const e=this.props,{input:t,label:f,note:x,disabled:P,readOnly:F}=e,H=Or(e,["input","label","note","disabled","readOnly"]);return R().createElement("div",{className:this.getCssClasses()},R().createElement("label",null,R().createElement("input",Er(j4(j4({},t),H),{type:"radio",disabled:F||P})),f),R().createElement("p",{className:"tyk-form-control__help-block"},x))}}Tr(e1,"propTypes",{disabled:n().bool,readOnly:n().bool,inline:n().bool,theme:n().string,input:n().instanceOf(Object),label:n().oneOfType([n().arrayOf(n().node),n().node,n().element,n().func,n().string]),name:n().string,nospace:n().bool,value:n().string,note:n().oneOfType([n().string,n().element,n().node]),wrapperClassName:n().string});var Rr=Object.defineProperty,Mr=Object.defineProperties,Lr=Object.getOwnPropertyDescriptors,U9=Object.getOwnPropertySymbols,V4=Object.prototype.hasOwnProperty,U4=Object.prototype.propertyIsEnumerable,t1=(u,e,t)=>e in u?Rr(u,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):u[e]=t,Pr=(u,e)=>{for(var t in e||(e={}))V4.call(e,t)&&t1(u,t,e[t]);if(U9)for(var t of U9(e))U4.call(e,t)&&t1(u,t,e[t]);return u},Ir=(u,e)=>Mr(u,Lr(e)),Br=(u,e)=>{var t={};for(var f in u)V4.call(u,f)&&e.indexOf(f)<0&&(t[f]=u[f]);if(u!=null&&U9)for(var f of U9(u))e.indexOf(f)<0&&U4.call(u,f)&&(t[f]=u[f]);return t},Fr=(u,e,t)=>(t1(u,typeof e!="symbol"?e+"":e,t),t);class G9 extends D.Component{constructor(e){super(e);const{value:t}=this.props;this.state={initValue:t,stateValue:t},this.handleOnChange=this.handleOnChange.bind(this),this.handleOnBlur=this.handleOnBlur.bind(this)}componentDidUpdate(e){const{isfield:t,value:f,onChange:x}=this.props;!t&&e.value!==f&&this.setState({stateValue:f},()=>{x&&x(f)})}getSelectComponent(){const e=this.props,{isfield:t,options:f,onChange:x,onBlur:P,value:F}=e,H=Br(e,["isfield","options","onChange","onBlur","value"]),{stateValue:V}=this.state;let K="";return t&&F?K=F:V&&(K=V),R().createElement("select",Ir(Pr({className:"tyk-form-control tyk-select"},H),{onChange:this.handleOnChange,onBlur:this.handleOnBlur,value:K?K.id:""}),f.map(X=>R().createElement("option",{key:X.id,value:X.id},X.name)))}getSelectError(){const{error:e}=this.props;return e&&e!=="true"&&e!=="false"?R().createElement("p",{className:"tyk-form-control__error-message"},e):null}getCssClasses(){const{error:e,labelwidth:t,theme:f,wrapperClassName:x=""}=this.props,P=[x,"tyk-form-group"],F=f?f.split(" "):[];return F.length&&F.forEach(H=>{P.push(`tyk-form-group--${H}`)}),t&&P.push("tyk-form-group--label-has-width"),e&&P.push("has-error"),P.join(" ")}getLabelStyles(){const{labelwidth:e}=this.props,t={};return e&&(t.flexBasis=e),t}getNonLabelWidth(){const{labelwidth:e}=this.props,t={};return e&&(t.flexBasis=`calc(100% - ${e} - 20px)`),t}handleOnBlur(){const{value:e,onBlur:t}=this.props;t&&t(e)}handleOnChange(e){const{onChange:t,isfield:f,options:x}=this.props;let P=null;P=x.filter(F=>F.id===e.target.value),[P]=P,f?t(P.id?P:null):this.setState({stateValue:P},()=>{t(P.id?P:null)})}reset(){const{initValue:e}=this.state;this.setState({stateValue:e})}render(){const{label:e,id:t,note:f,readOnly:x,value:P}=this.props;return R().createElement(D.Fragment,null,R().createElement("div",{className:this.getCssClasses()},e?R().createElement("label",{htmlFor:t,style:this.getLabelStyles()},e):null,!x&&R().createElement("div",{className:"tyk-form-control__wrapper",style:this.getNonLabelWidth()},this.getSelectComponent(),f?R().createElement("p",{className:"tyk-form-control__help-block"},f):null,this.getSelectError()),x&&R().createElement("div",{className:"tyk-form-control--readonly"},P||"-")))}}Fr(G9,"propTypes",{disabled:n().bool,readOnly:n().bool,id:n().string,isfield:n().bool,error:n().oneOfType([n().string,n().bool]),options:n().instanceOf(Array),label:n().oneOfType([n().arrayOf(n().node),n().node,n().element,n().func,n().string]),labelwidth:n().string,name:n().string,note:n().string,onBlur:n().func,onChange:n().func,placeholder:n().string,theme:n().string,value:n().oneOfType([n().string,n().object]),wrapperClassName:n().string});var Nr=Object.defineProperty,Dr=Object.defineProperties,Wr=Object.getOwnPropertyDescriptors,G4=Object.getOwnPropertySymbols,Hr=Object.prototype.hasOwnProperty,zr=Object.prototype.propertyIsEnumerable,K4=(u,e,t)=>e in u?Nr(u,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):u[e]=t,jr=(u,e)=>{for(var t in e||(e={}))Hr.call(e,t)&&K4(u,t,e[t]);if(G4)for(var t of G4(e))zr.call(e,t)&&K4(u,t,e[t]);return u},Vr=(u,e)=>Dr(u,Wr(e));function n1(u){const{checkboxalticon:e,items:t,itemTemplate:f,value:x,noItemsMessage:P="No items in the list",onChange:F,theme:H,primaryKey:V,wrapperClassName:K=""}=u,X=Q=>{const i0=structuredClone(x),J=i0.findIndex(c0=>JSON.stringify(c0)===JSON.stringify(Array.isArray(c0)?Q.target.value.split(","):Q.target.value));if(Q.target.checked&&J===-1){const c0=Q.target.value.split(","),r0=c0.length>1?c0:Q.target.value;i0.push(r0)}else!Q.target.checked&&J>-1&&i0.splice(J,1);F&&F(i0)},e0=Q=>{const i0=[];return e&&i0.push("tyk-selectable-list__item--with-icon"),Q&&i0.push("tyk-selectable-list__item--active"),i0.join(" ")},Z=(Q,i0)=>!!Q.find(J=>JSON.stringify(i0)===JSON.stringify(J));return R().createElement(C2,Vr(jr({},u),{theme:H||"default",className:`tyk-selectable-list ${K}`}),t.length?t.map((Q,i0)=>R().createElement(C2.Item,{key:i0,className:e0(x.includes(Q[V]))},R().createElement("label",null,R().createElement("div",{className:"tyk-selectable-list__item"},f?f(Q):Q.name),R().createElement("input",{type:"checkbox",checked:Z(x,Q[V]),onChange:X.bind(Q),value:Q[V]}),e?R().createElement(a,{type:e}):null))):R().createElement("li",{className:"tyk-selectable-list__no-items-message"},R().createElement(D0,{theme:"info"},P)))}n1.propTypes={items:n().instanceOf(Array),itemTemplate:n().oneOfType([n().node,n().element,n().string,n().func]),value:n().instanceOf(Array),onChange:n().func,primaryKey:n().string,noItemsMessage:n().string,checkboxalticon:n().oneOfType([n().node,n().element,n().string]),theme:n().string,wrapperClassName:n().string},n1.defaultProps={items:[],primaryKey:"id",value:[]};const r1=n1;var Ur=Object.defineProperty,K9=Object.getOwnPropertySymbols,Y4=Object.prototype.hasOwnProperty,X4=Object.prototype.propertyIsEnumerable,J4=(u,e,t)=>e in u?Ur(u,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):u[e]=t,Q4=(u,e)=>{for(var t in e||(e={}))Y4.call(e,t)&&J4(u,t,e[t]);if(K9)for(var t of K9(e))X4.call(e,t)&&J4(u,t,e[t]);return u},Gr=(u,e)=>{var t={};for(var f in u)Y4.call(u,f)&&e.indexOf(f)<0&&(t[f]=u[f]);if(u!=null&&K9)for(var f of K9(u))e.indexOf(f)<0&&X4.call(u,f)&&(t[f]=u[f]);return t};function q4(u){var e=u,{id:t,input:f,label:x,note:P,error:F,theme:H,labelwidth:V,value:K,readOnly:X,wrapperClassName:e0}=e,Z=Gr(e,["id","input","label","note","error","theme","labelwidth","value","readOnly","wrapperClassName"]);const Q=["tyk-form-group",e0,...H?H.split(" ").map(r0=>`tyk-form-group--${r0}`):[],V&&"tyk-form-group--label-has-width",F&&"has-error"].filter(Boolean).join(" "),i0=()=>V?{flexBasis:V}:{},J=()=>V?{flexBasis:`calc(100% - ${V} - 20px)`}:{};function c0(){return F&&F!=="true"&&F!=="false"?R().createElement("p",{className:"tyk-form-control__error-message"},F):null}return R().createElement("div",{className:Q},x?R().createElement("label",{htmlFor:t,style:i0()},x):null,!X&&R().createElement("div",{className:"tyk-form-control__wrapper",style:J()},R().createElement("textarea",Q4(Q4({className:"tyk-form-control"},Z),f),K),P?R().createElement("p",{className:"tyk-form-control__help-block"},P):null,c0()),X&&R().createElement("div",{className:"tyk-form-control--readonly"},K||"-"))}q4.propTypes={disabled:n().bool,readOnly:n().bool,input:n().instanceOf(Object),error:n().string,label:n().oneOfType([n().arrayOf(n().node),n().node,n().element,n().func,n().string]),labelwidth:n().string,name:n().string,note:n().string,onChange:n().func,id:n().string,theme:n().string,value:n().string,wrapperClassName:n().string};const Z4=q4,e3=(0,D.createContext)();class Y9 extends D.Component{static getNotchCssClasses(e){return["tyk-toggle__item-notch",`tyk-toggle__item-notch--${e.type}`].join(" ")}constructor(e){super(e),this.itemRef=(0,D.createRef)()}componentDidMount(){const{context:e,value:t}=this.props;e.value===t&&e.saveSelectedRef(this.itemRef)}componentDidUpdate(e){const{context:t,value:f}=this.props;e.context.value!==t.value&&t.value===f&&t.saveSelectedRef(this.itemRef)}onChange(e){const{context:t,value:f}=this.props,{disabled:x,readOnly:P}=t;x||P||t.onItemSelected(t.type==="single"?!t.value:f,e)}render(){const{context:e,label:t,name:f,value:x}=this.props;return R().createElement("li",{className:`tyk-toggle__item ${e.value&&(e.type==="single"||e.value===x)?"tyk-toggle__item--active":""}`,ref:this.itemRef},R().createElement("label",null,R().createElement("input",{type:e.type==="single"?"checkbox":"radio",name:f,checked:e.value===x,onChange:this.onChange.bind(this),value:x}),t?R().createElement("span",null,t):R().createElement("span",{className:"empty-toggle"}," "),e.type==="single"?R().createElement("span",{className:Y9.getNotchCssClasses(e)}):null))}}Y9.propTypes={context:n().instanceOf(Object),label:n().oneOfType([n().arrayOf(n().node),n().node,n().element,n().func,n().string]),name:n().string,value:n().string};const Kr=Y9;var Yr=Object.defineProperty,Xr=Object.defineProperties,Jr=Object.getOwnPropertyDescriptors,t3=Object.getOwnPropertySymbols,Qr=Object.prototype.hasOwnProperty,qr=Object.prototype.propertyIsEnumerable,n3=(u,e,t)=>e in u?Yr(u,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):u[e]=t,Zr=(u,e)=>{for(var t in e||(e={}))Qr.call(e,t)&&n3(u,t,e[t]);if(t3)for(var t of t3(e))qr.call(e,t)&&n3(u,t,e[t]);return u},ei=(u,e)=>Xr(u,Jr(e));const r3=R().forwardRef((u,e)=>R().createElement(e3.Consumer,null,t=>R().createElement(Kr,ei(Zr({},u),{context:t,ref:e}),u.children)));r3.propTypes={children:n().oneOfType([n().arrayOf(n().node),n().node,n().element,n().string])};const ti=r3;function X9({className:u,disabled:e,readOnly:t,size:f,theme:x,direction:P,onDark:F,wrapperClassName:H="",onChange:V,labelwidth:K,label:X,separated:e0,children:Z,type:Q,value:i0,error:J}){const[c0,r0]=(0,D.useState)(null),o0=(0,D.useRef)(),g0=(0,D.useRef)(),y0=[H,u,"tyk-toggle",`tyk-toggle--disabled-${t||e}`,`tyk-toggle--${f||"md"}`,`tyk-toggle--${x}`,`tyk-toggle--${P}`,F&&"tyk-toggle--on-dark"].filter(Boolean).join(" "),L0=(0,D.useCallback)((I0,v0)=>{V&&V(I0,v0)},[V]),E0=(0,D.useCallback)(()=>K?{flexBasis:K}:{},[K]),S0=(0,D.useCallback)(()=>{if(!c0||e0)return{};const I0=c0.current.offsetWidth,v0=c0.current.getBoundingClientRect().left,l0=g0.current.getBoundingClientRect().left;return{left:`${v0-l0+4}px`,width:`${I0-8}px`}},[c0,e0]),B0=(0,D.useMemo)(()=>({disabled:e,readOnly:t,onItemSelected:L0,saveSelectedRef:r0,separated:e0,type:Q,value:i0}),[e,t,L0,e0,Q,i0]);return R().createElement(R().Fragment,null,R().createElement("div",{className:y0,ref:g0},R().createElement(e3.Provider,{value:B0},X?R().createElement("label",{className:"tyk-toggle__label",style:E0()},X):null,R().createElement("ul",{className:`tyk-toggle__list tyk-toggle__list--${Q} ${J&&"tyk-toggle__list--has-error"} tyk-toggle__list--${e0?"separated":"not-separated"}`},Z,Q==="multiple"&&!e0?R().createElement("li",{className:"tyk-toggle__notch",ref:o0,style:S0()}):null))),J&&R().createElement("p",{className:"tyk-form-control__error-message"},J))}X9.propTypes={children:n().oneOfType([n().arrayOf(n().node),n().node,n().element,n().string]),className:n().string,disabled:n().bool,readOnly:n().bool,error:n().string,onChange:n().func,label:n().oneOfType([n().arrayOf(n().node),n().node,n().element,n().func,n().string]),labelwidth:n().string,theme:n().string,type:n().string,size:n().string,separated:n().bool,direction:n().string,value:n().oneOfType([n().bool,n().string]),onDark:n().bool,wrapperClassName:n().string},X9.defaultProps={separated:!1,theme:"primary",type:"single",direction:"row"},X9.Item=ti;const i1=X9,g5=(u,e)=>{let t=u;return e.forEach(f=>{t=t.replaceAll(f.id,`__TOKEN__${f.id}__TOKEN__`)}),t},H5=(u,e)=>{setTimeout(()=>{u.current.setSelectionRange(e,e)},20)};function i3({setShowOptions:u,tokenValue:e,disabled:t,placeholder:f,tokens:x,dropdownTriggerKey:P,setStringBuilderHeight:F,stringBuilderHeight:H,setTokenString:V,tokenString:K,showOptions:X,options:e0,setTokenValue:Z,inputRef:Q,setInputInFocus:i0,invalidTokenRegex:J,name:c0,contextMaxLength:r0}){const[o0,g0]=(0,D.useState)(!1);(0,D.useEffect)(()=>{if(e){const s0=e.length>50?e.length/5:0;F(Q.current.scrollHeight+s0)}},[]);const y0=s0=>{const{selectionEnd:C0}=s0.target;if(C0===e.length)return;const T0=e.substring(0,C0),$0=e.slice(C0),K0=g5($0,e0);if(K0.startsWith("__TOKEN__")){const J0=K0.split(/__TOKEN__(.*?)__TOKEN__/g).filter(u5=>u5!=="")[0],G0=`${T0}${$0.substr(J0.length)}`,h5=g5(G0,e0);V(h5),H5(Q,C0);return}const R0=`${T0}${$0.substr(1)}`,U0=g5(R0,e0);V(U0),H5(Q,C0)},L0=s0=>{const{selectionEnd:C0}=s0.target;if(C0===e.length){const J0=x[(x==null?void 0:x.length)-2],G0=e.slice(-(J0==null?void 0:J0.length));if(J0===G0){s0.preventDefault(),V(K.slice(0,-`__TOKEN__${G0}__TOKEN__`.length));return}if(e.endsWith(" ")){const h5=e.match(J),u5=e.slice(0,-` ${h5[h5.length-1]} `.length),z5=g5(u5,e0);V(z5);return}V(K.slice(0,-1));return}const T0=e.substring(0,C0),$0=e.slice(C0),K0=g5(T0,e0);if(K0.endsWith("__TOKEN__")){s0.preventDefault();const J0=K0.split(/__TOKEN__(.*?)__TOKEN__/g),G0=J0[J0.length-2],h5=`${T0.slice(0,-G0.length)}${$0}`,u5=g5(h5,e0);V(u5),H5(Q,C0-G0.length);return}const R0=T0.match(J);if(R0!=null&&R0[0]&&R0.length===1){s0.preventDefault();const J0=`${T0.replaceAll(J,"").trim()}${$0}`,G0=g5(J0,e0);V(G0),H5(Q,C0-` ${R0[0]} `.length);return}const U0=`${T0.slice(0,-1)}${$0}`,s5=g5(U0,e0);V(s5),H5(Q,C0-1)},E0=(s0,C0)=>{if(C0-1===e.length){V(`${K}${s0}`);return}const T0=e.slice(0,C0-1)+s0+e.slice(C0-1),$0=g5(T0,e0);V($0)},S0=(s0,C0,T0)=>{const $0=["Delete","Backspace"];if(T0.length>1&&$0.indexOf(T0)===-1)return;const{selectionEnd:K0,selectionStart:R0}=s0.target,U0=T0.length>1?"":T0;if(C0.length>1){const s5=e.substring(0,R0)+U0+e.substring(K0),J0=g5(s5,e0);V(J0),H5(Q,U0.length?R0+1:R0)}},B0=s0=>{const{key:C0}=s0,{selectionEnd:T0,selectionStart:$0,value:K0}=s0.target,R0=K0.substring($0,T0);if(C0===P&&!X){s0.preventDefault(),u(!0);return}if(C0==="Enter"){s0.preventDefault();return}C0==="Backspace"&&(s0.preventDefault(),L0(s0)),C0==="Delete"&&(s0.preventDefault(),y0(s0)),s0.metaKey&&C0==="x"&&V(""),R0&&(s0.preventDefault(),S0(s0,R0,C0))},I0=s0=>{const{target:C0}=s0,{selectionStart:T0,value:$0}=C0;if(X&&u(!1),Z($0),$0&&!o0){const K0=$0.charAt(T0-1);E0(K0,T0)}g0(!1)},v0=s0=>{s0.preventDefault();const{clipboardData:C0}=s0,{selectionStart:T0,selectionEnd:$0}=s0.target;g0(!0);let K0=C0.getData("text/plain");if(T0!==$0){K0=e.slice(0,T0)+K0+e.slice($0,e.length);const U0=g5(K0,e0);V(U0);return}const R0=g5(K0,e0);E0(R0,T0)},l0=()=>{i0(!0)};return R().createElement("textarea",{spellCheck:!1,disabled:t,className:"string-builder__input",value:e,onChange:s0=>I0(s0),onKeyDown:s0=>B0(s0),placeholder:f,name:c0,ref:Q,style:{height:`${H}px`},maxLength:r0,onPaste:v0,onFocus:l0,onBlur:()=>i0(!1)})}i3.propTypes={setShowOptions:n().func,tokenValue:n().string,disabled:n().bool,placeholder:n().string,tokenString:n().string,stringBuilderHeight:n().number,dropdownTriggerKey:n().string,setStringBuilderHeight:n().func,setTokenString:n().func,setTokenValue:n().func,setInputInFocus:n().func,showOptions:n().bool,tokens:n().arrayOf(n().string),options:n().arrayOf(n().shape({id:n().string.isRequired,name:n().string.isRequired,className:n().string,desc:n().string})),inputRef:n().instanceOf(Object),invalidTokenRegex:n().instanceOf(RegExp),name:n().string,contextMaxLength:n().number};const o3=u=>{const{token:e,findInvalidTokenSubstitute:t}=u;return R().createElement("span",{role:"main",onClick:()=>t(e),onKeyDown:()=>{}},R().createElement(R2,{render:"invalid token detected",position:"top"},R().createElement("span",{className:"invalid_token"},`${e}`,R().createElement(a,{type:"exclamation-circle"}))))};o3.propTypes={token:n().string,findInvalidTokenSubstitute:n().func};const ni=o3,s3=u=>{const{tokens:e,options:t,disabled:f,invalidTokenRegex:x,findInvalidTokenSubstitute:P}=u,F=new Set(e).size!==e.length,H=e&&e.map(V=>{if(t){const K=t.find(X=>X.id===V);if(x&&!K){const X=V.replaceAll(" ","").split(x);if((X==null?void 0:X.length)>1)return R().createElement("span",{key:`${V}${F&&Math.random()}`},X.map(e0=>e0.match(x)?R().createElement(ni,{token:e0,findInvalidTokenSubstitute:P}):R().createElement("span",null,`${e0} `)))}if(K)return R().createElement("span",{key:`${V}${F&&Math.random()}`,className:`${K.className||"default-option-name"}`},K.id)}return R().createElement("span",{key:`${V}${F&&Math.random()}`},V)});return R().createElement("div",{className:`string-builder__styled ${f&&"string-builder__disabled"}`},H)};s3.propTypes={tokens:n().arrayOf(n().string),options:n().arrayOf(n().instanceOf(Object)),disabled:n().bool,invalidTokenRegex:n().instanceOf(RegExp),findInvalidTokenSubstitute:n().func};const a3=({options:u,showOptions:e,handleOptionSelection:t,containerRef:f,getThemeClasses:x,setShowOptions:P,allowSearch:F,initialSearchValue:H})=>{const[V,K]=(0,D.useState)(H),[X,e0]=(0,D.useState)(u);return(0,D.useEffect)(()=>{K(H)},[H]),(0,D.useEffect)(()=>{if(V===""){e0(u);return}const Z=u.filter(Q=>Q.name.toLowerCase().includes(V.toLowerCase()));e0(Z)},[V]),(0,D.useEffect)(()=>{e0(u)},[u]),e?R().createElement(R().Fragment,null,R().createElement(w9,{className:`string-builder-dropdown tyk-form-group ${x().join(" ")}`,element:f,size:"matchElement",displayAxis:"vertical"},F&&R().createElement("div",{className:"string-builder-search"},R().createElement("input",{autoFocus:!0,className:"tyk-form-control",value:V,placeholder:"Search parameter",onChange:Z=>{K(Z.target.value)},onKeyDown:Z=>{(Z.key==="Escape"||Z.key==="ArrowUp"||Z.key==="Enter")&&P(!1)}})),R().createElement("ul",{className:"string-builder-list"},X.map(Z=>R().createElement("li",{key:`${Z.id}${Math.random()}`,onMouseDown:()=>t(Z)},R().createElement("span",{className:`url-builder__options_name ${Z.className||"default-option-name"}`},Z.name),Z.desc&&R().createElement("span",{className:"url-builder__options_description"},"\xA0 : \xA0",Z.desc)))))):null};a3.propTypes={options:n().arrayOf(Object),showOptions:n().bool,handleOptionSelection:n().func,getThemeClasses:n().func,setShowOptions:n().func,containerRef:n().instanceOf(Object),allowSearch:n().bool,initialSearchValue:n().string};const l3=u=>{const{note:e,error:t,inputInFocus:f,stringBuilderHeight:x,dropdownTriggerKey:P}=u;return R().createElement("div",{className:"string-builder-footer",style:{marginTop:x?`${x-8}px`:"30px"}},f&&!t&&R().createElement("p",{className:"tyk-form-control__help-block"},R().createElement("span",null,"Enter",R().createElement("span",{className:"string_builder_trigger"},P),"to add any parameter")),e&&R().createElement("p",{className:"tyk-form-control__help-block"},e),t&&t!=="true"&&t!=="false"&&R().createElement("p",{className:"tyk-form-control__error-message"},t))};l3.propTypes={note:n().string,error:n().string,dropdownTriggerKey:n().string,inputInFocus:n().bool,stringBuilderHeight:n().number};function o1(u){const{options:e,onChange:t,value:f,theme:x,error:P,disabled:F,readOnly:H,note:V,label:K,labelwidth:X,placeholder:e0,allowSearch:Z,dropdownTriggerKey:Q,invalidTokenRegex:i0,name:J,wrapperClassName:c0=""}=u,[r0,o0]=(0,D.useState)(f),[g0,y0]=(0,D.useState)(),[L0,E0]=(0,D.useState)(!1),[S0,B0]=(0,D.useState)(g5(f,e)),[I0,v0]=(0,D.useState)(r0.length+5),[l0,s0]=(0,D.useState)([]),[C0,T0]=(0,D.useState)(),[$0,K0]=(0,D.useState)(!1),[R0,U0]=(0,D.useState)(""),[s5,J0]=(0,D.useState)(null),G0=w(S0),h5=(0,D.useRef)(),u5=(0,D.useRef)();(0,D.useEffect)(()=>{t&&t(r0.replaceAll(" ",""))},[r0]),(0,D.useEffect)(()=>{const i5=i0?f.replaceAll(i0," $& "):f;o0(()=>i5),B0(()=>g5(i5,e))},[f]),(0,D.useEffect)(()=>{const i5=S0.split(/__TOKEN__(.*?)__TOKEN__/g),Q0=i5.join("");s0(()=>i5),o0(()=>Q0),T0(()=>Q0)},[S0]),(0,D.useEffect)(()=>{if(I0-3i5),v0(()=>I0+25)}},[S0,r0]);const z5=i5=>{let Q0="";const{selectionStart:b5}=u5.current;G0&&G0!==f&&!s5&&(Q0=G0+r0.split(C0)[1]);let M5="";if(b5!==r0.length&&!s5){const v1=r0.slice(0,b5)+i5.id+r0.slice(b5);M5=g5(v1,e),H5(u5,b5+i5.id.length)}else M5=`${Q0||r0}__TOKEN__${i5.id}__TOKEN__`;s5&&(M5=S0.replace(` ${s5} `,`__TOKEN__${i5.id}__TOKEN__`),J0(()=>null),U0(()=>"")),B0(()=>M5),E0(()=>!1),setTimeout(()=>{u5.current.focus()},20)},q5=()=>(x?x.split(" "):[]).map(Q0=>`tyk-form-group--${Q0}`),c2=()=>["tyk-form-group",...q5(),P&&"has-error",F&&"disabled"].filter(Boolean).join(" "),a5=i5=>{J0(()=>i5),U0(()=>i5.replace(/[^a-zA-Z ]/g,"")),E0(()=>!0)};return R().createElement("div",{className:`string-builder ${c0}`,ref:h5},R().createElement("div",{className:c2()},K&&R().createElement("label",{style:{flexBasis:X||"auto"}},K),!H&&R().createElement("div",{className:"tyk-form-control__wrapper"},R().createElement("div",{className:`tyk-form-control ${F&&"string-builder__disabled"}`,style:{height:`${g0}px`}},R().createElement(i3,{setInputInFocus:K0,setShowOptions:E0,tokenValue:r0,disabled:F,placeholder:e0,allowSearch:Z,tokens:l0,dropdownTriggerKey:Q,setStringBuilderHeight:y0,stringBuilderHeight:g0,setTokenString:B0,tokenString:S0,showOptions:L0,options:e,setTokenValue:o0,inputRef:u5,invalidTokenRegex:i0,name:J,contextMaxLength:I0,setContentMaxLength:v0}),R().createElement(s3,{tokens:l0,options:e,disabled:F,invalidTokenRegex:i0,findInvalidTokenSubstitute:a5}),R().createElement(a3,{showOptions:L0,options:e,handleOptionSelection:z5,containerRef:h5,getThemeClasses:q5,setShowOptions:E0,allowSearch:Z,initialSearchValue:R0}),R().createElement(l3,{error:P,note:V,inputInFocus:$0,stringBuilderHeight:g0,dropdownTriggerKey:Q}))),H&&R().createElement("div",{className:"tyk-form-control--readonly"},f||"-")))}o1.propTypes={options:n().arrayOf(n().shape({id:n().string.isRequired,name:n().string.isRequired,className:n().string,desc:n().string})),onChange:n().func,value:n().string,disabled:n().bool,readOnly:n().bool,error:n().string,theme:n().string,note:n().string,label:n().oneOfType([n().arrayOf(n().node),n().node,n().element,n().func,n().string]),labelwidth:n().string,placeholder:n().string,dropdownTriggerKey:n().string,invalidTokenRegex:n().instanceOf(RegExp),allowSearch:n().bool,name:n().string,wrapperClassName:n().string},o1.defaultProps={onChange:null,value:"",options:[],theme:"default"};const c3=o1,u3={FORM_DEBOUNCE:200};function ri(u,e){u3[u]=e}const s1=u3;var ii=Object.defineProperty,oi=Object.defineProperties,si=Object.getOwnPropertyDescriptors,J9=Object.getOwnPropertySymbols,h3=Object.prototype.hasOwnProperty,d3=Object.prototype.propertyIsEnumerable,f3=(u,e,t)=>e in u?ii(u,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):u[e]=t,Q5=(u,e)=>{for(var t in e||(e={}))h3.call(e,t)&&f3(u,t,e[t]);if(J9)for(var t of J9(e))d3.call(e,t)&&f3(u,t,e[t]);return u},p3=(u,e)=>oi(u,si(e)),ai=(u,e)=>{var t={};for(var f in u)h3.call(u,f)&&e.indexOf(f)<0&&(t[f]=u[f]);if(u!=null&&J9)for(var f of J9(u))e.indexOf(f)<0&&d3.call(u,f)&&(t[f]=u[f]);return t};function g3(u,e){return e.split(/[\][.]/).filter(Boolean).reduce((f,x)=>f&&f[x],u)}function li(u,e){let t;return(...f)=>{clearTimeout(t),t=setTimeout(u,e,...f)}}const c5=(u,e)=>t=>{var f=t,{field:x,form:P}=f,F=ai(f,["field","form"]),H;const V=typeof s1.FORM_DEBOUNCE=="number"?s1.FORM_DEBOUNCE:200,[K,X]=(0,D.useState)(x.value),e0=Q5({getOnChangeProps:()=>({}),hasIsFieldProp:!1},e),Z=(0,D.useCallback)((()=>{const o0=y0=>y0();if(F.debounce===!1||s1.FORM_DEBOUNCE===!1&&!F.debounce)return o0;const g0=typeof F.debounce=="number"?F.debounce:V;return li(o0,g0)})(),[]),Q=o0=>o0&&o0.target?o0.target.nodeName==="INPUT"&&(o0.target.type==="checkbox"||o0.target.type==="radio")?o0.target.checked:o0.target.value:o0,i0=o0=>{const g0=Q(o0),y0=e0.getOnChangeProps(g0,x,P,F),L0=y0.value||F.value||g0;Z(()=>{typeof F.onChange=="function"&&F.onChange(L0),x.onChange({target:Q5({name:x.name,value:L0},y0)})}),X(L0)},J=(g3(P.touched,x.name)||!!P.submitCount)&&g3(P.errors,x.name),c0=typeof J=="string"?J:"";(0,D.useEffect)(()=>{X(x.value)},[x.value]),(H=P.status)!=null&&H.disabled&&(F.disabled=!0);const r0=Q5({},F);return delete r0.debounce,R().createElement(u,p3(Q5(Q5(p3(Q5({},x),{error:c0}),e0.hasIsFieldProp?{isfield:!0}:{}),r0),{checked:typeof F.value=="string"?x.value===F.value:x.value,onChange:i0,value:K,input:{value:K,onChange:i0}}))},ci=c5($9,{getOnChangeProps:u=>({checked:u})}),ui=c5(D2),hi=c5(j2),di=c5(V2),fi=c5(U2),pi=c5(Y2,{getOnChangeProps:u=>({value:u||[]})}),gi=c5(k4),mi=c5(W9),vi=c5(z9,{hasIsFieldProp:!0}),yi=c5(L4),bi=c5(q2),wi=c5(e1,{getOnChangeProps:(u,e,t,f)=>({checked:u===f.value,value:f.value})}),Ci=c5(G9,{hasIsFieldProp:!0}),Ai=c5(r1),ki=c5(Z4),xi=c5(i1),Si=c5(c3);var _i=Object.defineProperty,$i=Object.defineProperties,Ei=Object.getOwnPropertyDescriptors,Q9=Object.getOwnPropertySymbols,m3=Object.prototype.hasOwnProperty,v3=Object.prototype.propertyIsEnumerable,a1=(u,e,t)=>e in u?_i(u,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):u[e]=t,y3=(u,e)=>{for(var t in e||(e={}))m3.call(e,t)&&a1(u,t,e[t]);if(Q9)for(var t of Q9(e))v3.call(e,t)&&a1(u,t,e[t]);return u},Oi=(u,e)=>$i(u,Ei(e)),Ti=(u,e)=>{var t={};for(var f in u)m3.call(u,f)&&e.indexOf(f)<0&&(t[f]=u[f]);if(u!=null&&Q9)for(var f of Q9(u))e.indexOf(f)<0&&v3.call(u,f)&&(t[f]=u[f]);return t},Ri=(u,e,t)=>(a1(u,typeof e!="symbol"?e+"":e,t),t);class b3 extends D.Component{constructor(e){super(e),this.handleOnChange=this.handleOnChange.bind(this)}getInputError(){const{meta:e,validationmessages:t}=this.props,{touched:f,error:x,warning:P}=e;let F=null;return f&&x&&t[x]?F=t[x]:f&&P&&(F="warning"),F}handleOnChange(e){const{input:t}=this.prop,{onChange:f}=t;f((0,W0.fromJS)(e))}render(){const e=this.props,{input:t}=e,f=Ti(e,["input"]);return R().createElement(D2,Oi(y3(y3({},t),f),{error:this.getInputError()}))}}Ri(b3,"propTypes",{input:n().instanceOf(Object),meta:n().instanceOf(Object),validationmessages:n().instanceOf(Object)});var Mi=Object.defineProperty,Li=Object.defineProperties,Pi=Object.getOwnPropertyDescriptors,q9=Object.getOwnPropertySymbols,w3=Object.prototype.hasOwnProperty,C3=Object.prototype.propertyIsEnumerable,l1=(u,e,t)=>e in u?Mi(u,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):u[e]=t,Ii=(u,e)=>{for(var t in e||(e={}))w3.call(e,t)&&l1(u,t,e[t]);if(q9)for(var t of q9(e))C3.call(e,t)&&l1(u,t,e[t]);return u},Bi=(u,e)=>Li(u,Pi(e)),Fi=(u,e)=>{var t={};for(var f in u)w3.call(u,f)&&e.indexOf(f)<0&&(t[f]=u[f]);if(u!=null&&q9)for(var f of q9(u))e.indexOf(f)<0&&C3.call(u,f)&&(t[f]=u[f]);return t},Ni=(u,e,t)=>(l1(u,typeof e!="symbol"?e+"":e,t),t);class A3 extends D.Component{constructor(e){super(e),this.handleOnChange=this.handleOnChange.bind(this)}getComboboxError(){const{meta:e,validationmessages:t}=this.props,{touched:f,error:x,warning:P}=e;let F=null;return f&&x&&t[x]?F=t[x]:f&&P&&(F="warning"),F}handleOnChange(e){const{input:t}=this.props,{onChange:f}=t;f((0,W0.fromJS)(e))}render(){const e=Fi(this.props,[]);return R().createElement(j2,Bi(Ii({},e),{onChange:this.handleOnChange,value:e.input.value?e.input.value.toJS():e.input.value,error:this.getComboboxError()}))}}Ni(A3,"propTypes",{meta:n().instanceOf(Object),input:n().instanceOf(Object),validationmessages:n().instanceOf(Object)});var Di=Object.defineProperty,Wi=Object.defineProperties,Hi=Object.getOwnPropertyDescriptors,Z9=Object.getOwnPropertySymbols,k3=Object.prototype.hasOwnProperty,x3=Object.prototype.propertyIsEnumerable,c1=(u,e,t)=>e in u?Di(u,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):u[e]=t,zi=(u,e)=>{for(var t in e||(e={}))k3.call(e,t)&&c1(u,t,e[t]);if(Z9)for(var t of Z9(e))x3.call(e,t)&&c1(u,t,e[t]);return u},ji=(u,e)=>Wi(u,Hi(e)),Vi=(u,e)=>{var t={};for(var f in u)k3.call(u,f)&&e.indexOf(f)<0&&(t[f]=u[f]);if(u!=null&&Z9)for(var f of Z9(u))e.indexOf(f)<0&&x3.call(u,f)&&(t[f]=u[f]);return t},Ui=(u,e,t)=>(c1(u,typeof e!="symbol"?e+"":e,t),t);class S3 extends D.Component{constructor(e){super(e),this.handleOnChange=this.handleOnChange.bind(this)}handleOnChange(e){const{input:t}=this.props,{onChange:f}=t;f((0,W0.fromJS)(e))}render(){const e=this.props,{children:t,input:f}=e,x=Vi(e,["children","input"]);return R().createElement(B7,ji(zi({},x),{onSelect:this.handleOnChange,selectedItem:f.value}),t)}}Ui(S3,"propTypes",{children:n().oneOfType([n().arrayOf(n().node),n().node,n().element,n().string]),input:n().instanceOf(Object)});var Gi=Object.defineProperty,Ki=Object.defineProperties,Yi=Object.getOwnPropertyDescriptors,e2=Object.getOwnPropertySymbols,_3=Object.prototype.hasOwnProperty,$3=Object.prototype.propertyIsEnumerable,E3=(u,e,t)=>e in u?Gi(u,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):u[e]=t,O3=(u,e)=>{for(var t in e||(e={}))_3.call(e,t)&&E3(u,t,e[t]);if(e2)for(var t of e2(e))$3.call(e,t)&&E3(u,t,e[t]);return u},Xi=(u,e)=>Ki(u,Yi(e)),Ji=(u,e)=>{var t={};for(var f in u)_3.call(u,f)&&e.indexOf(f)<0&&(t[f]=u[f]);if(u!=null&&e2)for(var f of e2(u))e.indexOf(f)<0&&$3.call(u,f)&&(t[f]=u[f]);return t};const T3=u=>{const e=u,{input:t}=e,f=Ji(e,["input"]);return R().createElement(S9,Xi(O3(O3({},t),f),{onChange:t.onChange,value:t.value?t.value:0}))};T3.propTypes={input:n().instanceOf(Object)};const Qi=T3;var qi=Object.defineProperty,Zi=Object.defineProperties,eo=Object.getOwnPropertyDescriptors,R3=Object.getOwnPropertySymbols,to=Object.prototype.hasOwnProperty,no=Object.prototype.propertyIsEnumerable,M3=(u,e,t)=>e in u?qi(u,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):u[e]=t,ro=(u,e)=>{for(var t in e||(e={}))to.call(e,t)&&M3(u,t,e[t]);if(R3)for(var t of R3(e))no.call(e,t)&&M3(u,t,e[t]);return u},io=(u,e)=>Zi(u,eo(e));const L3=u=>{const{input:e,meta:t,validationmessages:f}=u,x=()=>{const{touched:F,error:H,warning:V}=t;let K=null;return F&&H&&f[H]?K=f[H]:F&&V&&(K="warning"),K},P=F=>{const{onChange:H}=e;H((0,W0.fromJS)(F))};return R().createElement(V2,io(ro({},u),{onChange:P,value:e.value?e.value.toJS():e.value,error:x()}))};L3.propTypes={meta:n().instanceOf(Object),input:n().instanceOf(Object),validationmessages:n().instanceOf(Object)};const oo=L3;var so=Object.defineProperty,ao=Object.defineProperties,lo=Object.getOwnPropertyDescriptors,t2=Object.getOwnPropertySymbols,P3=Object.prototype.hasOwnProperty,I3=Object.prototype.propertyIsEnumerable,B3=(u,e,t)=>e in u?so(u,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):u[e]=t,co=(u,e)=>{for(var t in e||(e={}))P3.call(e,t)&&B3(u,t,e[t]);if(t2)for(var t of t2(e))I3.call(e,t)&&B3(u,t,e[t]);return u},uo=(u,e)=>ao(u,lo(e)),ho=(u,e)=>{var t={};for(var f in u)P3.call(u,f)&&e.indexOf(f)<0&&(t[f]=u[f]);if(u!=null&&t2)for(var f of t2(u))e.indexOf(f)<0&&I3.call(u,f)&&(t[f]=u[f]);return t};const F3=u=>{const e=u,{input:t,meta:f,validationmessages:x}=e,P=ho(e,["input","meta","validationmessages"]),F=()=>{const{touched:V,error:K}=f;let X=null;return V&&K&&x[K]&&(X=x[K]),X},H=V=>{const{onChange:K}=t;K((0,W0.fromJS)(V))};return R().createElement(U2,uo(co({},P),{onChange:H,value:t.value?t.value.toJS():t.value,error:F()}))};F3.propTypes={meta:n().instanceOf(Object),input:n().instanceOf(Object),validationmessages:n().instanceOf(Object)};const fo=F3;var po=Object.defineProperty,go=Object.defineProperties,mo=Object.getOwnPropertyDescriptors,n2=Object.getOwnPropertySymbols,N3=Object.prototype.hasOwnProperty,D3=Object.prototype.propertyIsEnumerable,u1=(u,e,t)=>e in u?po(u,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):u[e]=t,vo=(u,e)=>{for(var t in e||(e={}))N3.call(e,t)&&u1(u,t,e[t]);if(n2)for(var t of n2(e))D3.call(e,t)&&u1(u,t,e[t]);return u},yo=(u,e)=>go(u,mo(e)),bo=(u,e)=>{var t={};for(var f in u)N3.call(u,f)&&e.indexOf(f)<0&&(t[f]=u[f]);if(u!=null&&n2)for(var f of n2(u))e.indexOf(f)<0&&D3.call(u,f)&&(t[f]=u[f]);return t},wo=(u,e,t)=>(u1(u,typeof e!="symbol"?e+"":e,t),t);class W3 extends D.Component{constructor(e){super(e),this.handleOnChange=this.handleOnChange.bind(this)}getEditableListError(){const{meta:e,validationmessages:t}=this.props,{touched:f,error:x}=e;let P=null;return f&&x&&t[x]&&(P=t[x]),P}handleOnChange(e){const{input:t}=this.props,{onChange:f}=t;f((0,W0.fromJS)(e))}render(){const e=bo(this.props,[]);return R().createElement(Y2,yo(vo({},e),{onChange:this.handleOnChange,value:e.input.value?e.input.value.toJS():null,error:this.getEditableListError()}))}}wo(W3,"propTypes",{input:n().instanceOf(Object),meta:n().instanceOf(Object),validationmessages:n().instanceOf(Object)});var Co=Object.defineProperty,Ao=Object.defineProperties,ko=Object.getOwnPropertyDescriptors,r2=Object.getOwnPropertySymbols,H3=Object.prototype.hasOwnProperty,z3=Object.prototype.propertyIsEnumerable,h1=(u,e,t)=>e in u?Co(u,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):u[e]=t,j3=(u,e)=>{for(var t in e||(e={}))H3.call(e,t)&&h1(u,t,e[t]);if(r2)for(var t of r2(e))z3.call(e,t)&&h1(u,t,e[t]);return u},xo=(u,e)=>Ao(u,ko(e)),So=(u,e)=>{var t={};for(var f in u)H3.call(u,f)&&e.indexOf(f)<0&&(t[f]=u[f]);if(u!=null&&r2)for(var f of r2(u))e.indexOf(f)<0&&z3.call(u,f)&&(t[f]=u[f]);return t},_o=(u,e,t)=>(h1(u,typeof e!="symbol"?e+"":e,t),t);class V3 extends D.Component{getInputError(){const{meta:e,validationmessages:t}=this.props,{touched:f,error:x,warning:P}=e;let F=null;return f&&x&&t[x]?F=t[x]:f&&P&&(F="warning"),F}render(){const e=this.props,{input:t}=e,f=So(e,["input"]);return R().createElement(W9,xo(j3(j3({},t),f),{error:this.getInputError()}))}}_o(V3,"propTypes",{input:n().instanceOf(Object),meta:n().instanceOf(Object),validationmessages:n().instanceOf(Object)});var $o=Object.defineProperty,Eo=Object.defineProperties,Oo=Object.getOwnPropertyDescriptors,i2=Object.getOwnPropertySymbols,U3=Object.prototype.hasOwnProperty,G3=Object.prototype.propertyIsEnumerable,d1=(u,e,t)=>e in u?$o(u,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):u[e]=t,K3=(u,e)=>{for(var t in e||(e={}))U3.call(e,t)&&d1(u,t,e[t]);if(i2)for(var t of i2(e))G3.call(e,t)&&d1(u,t,e[t]);return u},To=(u,e)=>Eo(u,Oo(e)),Ro=(u,e)=>{var t={};for(var f in u)U3.call(u,f)&&e.indexOf(f)<0&&(t[f]=u[f]);if(u!=null&&i2)for(var f of i2(u))e.indexOf(f)<0&&G3.call(u,f)&&(t[f]=u[f]);return t},Mo=(u,e,t)=>(d1(u,typeof e!="symbol"?e+"":e,t),t);class Y3 extends D.Component{getInputError(){const{meta:e,validationmessages:t}=this.props,{touched:f,error:x,warning:P}=e;let F=null;return f&&x&&t[x]?F=t[x]:f&&P&&(F="warning"),F}render(){const e=this.props,{input:t}=e,f=Ro(e,["input"]);return R().createElement(z9,To(K3(K3({},t),f),{isfield:!0,error:this.getInputError()}))}}Mo(Y3,"propTypes",{meta:n().instanceOf(Object),input:n().instanceOf(Object),validationmessages:n().instanceOf(Object)});var Lo=Object.defineProperty,Po=Object.defineProperties,Io=Object.getOwnPropertyDescriptors,o2=Object.getOwnPropertySymbols,X3=Object.prototype.hasOwnProperty,J3=Object.prototype.propertyIsEnumerable,f1=(u,e,t)=>e in u?Lo(u,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):u[e]=t,Bo=(u,e)=>{for(var t in e||(e={}))X3.call(e,t)&&f1(u,t,e[t]);if(o2)for(var t of o2(e))J3.call(e,t)&&f1(u,t,e[t]);return u},Fo=(u,e)=>Po(u,Io(e)),No=(u,e)=>{var t={};for(var f in u)X3.call(u,f)&&e.indexOf(f)<0&&(t[f]=u[f]);if(u!=null&&o2)for(var f of o2(u))e.indexOf(f)<0&&J3.call(u,f)&&(t[f]=u[f]);return t},Do=(u,e,t)=>(f1(u,typeof e!="symbol"?e+"":e,t),t);class Q3 extends D.Component{constructor(e){super(e),this.handleOnChange=this.handleOnChange.bind(this)}getMultiselectError(){const{meta:e,validationmessages:t}=this.props,{touched:f,error:x,warning:P}=e;let F=null;return f&&x&&t[x]?F=t[x]:f&&P&&(F="warning"),F}handleOnChange(e){const{input:t}=this.props,{onChange:f}=t;f((0,W0.fromJS)(e))}render(){const e=No(this.props,[]);return R().createElement(q2,Fo(Bo({},e),{onChange:this.handleOnChange,value:e.input.value?e.input.value.toJS():e.input.value,error:this.getMultiselectError()}))}}Do(Q3,"propTypes",{input:n().instanceOf(Object),meta:n().instanceOf(Object),validationmessages:n().instanceOf(Object)});var Wo=Object.defineProperty,Ho=Object.defineProperties,zo=Object.getOwnPropertyDescriptors,s2=Object.getOwnPropertySymbols,q3=Object.prototype.hasOwnProperty,Z3=Object.prototype.propertyIsEnumerable,p1=(u,e,t)=>e in u?Wo(u,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):u[e]=t,e6=(u,e)=>{for(var t in e||(e={}))q3.call(e,t)&&p1(u,t,e[t]);if(s2)for(var t of s2(e))Z3.call(e,t)&&p1(u,t,e[t]);return u},jo=(u,e)=>Ho(u,zo(e)),Vo=(u,e)=>{var t={};for(var f in u)q3.call(u,f)&&e.indexOf(f)<0&&(t[f]=u[f]);if(u!=null&&s2)for(var f of s2(u))e.indexOf(f)<0&&Z3.call(u,f)&&(t[f]=u[f]);return t},Uo=(u,e,t)=>(p1(u,typeof e!="symbol"?e+"":e,t),t);class t6 extends D.Component{constructor(e){super(e),this.handleEvent=this.handleEvent.bind(this)}getSelectError(){const{meta:e,validationmessages:t}=this.props,{touched:f,error:x,warning:P}=e;let F=null;return f&&x&&t[x]?F=t[x]:f&&P&&(F="warning"),F}handleEvent(e){const{input:t}=this.props,{onChange:f,value:x}=t;f((0,W0.fromJS)(e!==void 0?e:x))}render(){const e=this.props,{input:t}=e,f=Vo(e,["input"]);return R().createElement(G9,jo(e6(e6({},t),f),{isfield:!0,error:this.getSelectError(),onChange:this.handleEvent,onBlur:this.handleEvent,value:t.value?t.value.toJS():t.value}))}}Uo(t6,"propTypes",{input:n().instanceOf(Object),meta:n().instanceOf(Object),validationmessages:n().instanceOf(Object)});var Go=Object.defineProperty,Ko=Object.defineProperties,Yo=Object.getOwnPropertyDescriptors,a2=Object.getOwnPropertySymbols,n6=Object.prototype.hasOwnProperty,r6=Object.prototype.propertyIsEnumerable,g1=(u,e,t)=>e in u?Go(u,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):u[e]=t,Xo=(u,e)=>{for(var t in e||(e={}))n6.call(e,t)&&g1(u,t,e[t]);if(a2)for(var t of a2(e))r6.call(e,t)&&g1(u,t,e[t]);return u},Jo=(u,e)=>Ko(u,Yo(e)),Qo=(u,e)=>{var t={};for(var f in u)n6.call(u,f)&&e.indexOf(f)<0&&(t[f]=u[f]);if(u!=null&&a2)for(var f of a2(u))e.indexOf(f)<0&&r6.call(u,f)&&(t[f]=u[f]);return t},qo=(u,e,t)=>(g1(u,typeof e!="symbol"?e+"":e,t),t);class i6 extends D.Component{constructor(e){super(e),this.handleOnChange=this.handleOnChange.bind(this)}handleOnChange(e){const{input:t}=this.props;t.onChange((0,W0.fromJS)(e))}render(){const e=this.props,{children:t}=e,f=Qo(e,["children"]);return R().createElement(r1,Jo(Xo({},f),{onChange:this.handleOnChange,value:f.input.value?f.input.value.toJS():[]}))}}qo(i6,"propTypes",{children:n().oneOfType([n().node]),onChange:n().func,input:n().instanceOf(Object)});var Zo=Object.defineProperty,es=Object.defineProperties,ts=Object.getOwnPropertyDescriptors,l2=Object.getOwnPropertySymbols,o6=Object.prototype.hasOwnProperty,s6=Object.prototype.propertyIsEnumerable,m1=(u,e,t)=>e in u?Zo(u,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):u[e]=t,ns=(u,e)=>{for(var t in e||(e={}))o6.call(e,t)&&m1(u,t,e[t]);if(l2)for(var t of l2(e))s6.call(e,t)&&m1(u,t,e[t]);return u},rs=(u,e)=>es(u,ts(e)),is=(u,e)=>{var t={};for(var f in u)o6.call(u,f)&&e.indexOf(f)<0&&(t[f]=u[f]);if(u!=null&&l2)for(var f of l2(u))e.indexOf(f)<0&&s6.call(u,f)&&(t[f]=u[f]);return t},os=(u,e,t)=>(m1(u,typeof e!="symbol"?e+"":e,t),t);class a6 extends D.Component{constructor(e){super(e),this.handleOnChange=this.handleOnChange.bind(this)}handleOnChange(e){const{input:t}=this.props;t.onChange((0,W0.fromJS)(e))}render(){const e=this.props,{children:t}=e,f=is(e,["children"]);return R().createElement(i1,rs(ns({},f),{onChange:this.handleOnChange,value:f.input.value}),t)}}os(a6,"propTypes",{children:n().oneOfType([n().node]),onChange:n().func,input:n().instanceOf(Object)})})(),m6.exports=p2})()});gs();})(); + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +})(); + +module.exports = __webpack_exports__; +/******/ })() +; //# sourceMappingURL=tyk-ui.js.map \ No newline at end of file diff --git a/lib/tyk-ui.js.map b/lib/tyk-ui.js.map index 488e65d2..71c02e4e 100644 --- a/lib/tyk-ui.js.map +++ b/lib/tyk-ui.js.map @@ -1 +1 @@ -{"version":3,"file":"tyk-ui.js","mappings":"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EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,IAAK,GAAI,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,KAAM,GAAI,EAAG,GAAI,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,IAAK,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,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AAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;A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,2BACP,MAAO,+CACX,EAAG,CACC,MAAO,8BACP,MAAO,IACX,EAAG,CACC,MAAO,2BACP,MAAO,QACP,KAAM,uBACV,EAAG,CACC,MAAO,QACP,MAAO,IACP,KAAM,UACV,EAAG,CACC,aAAc,eAClB,CACJ,EACA,sBAAyB,CACrB,CACI,MAAO,oCACP,MAAO,2CACX,EAAG,CACC,MAAO,2BACP,MAAO,IACP,KAAM,OACV,EAAG,CACC,MAAO,2BACP,MAAO,GACX,EAAG,CACC,MAAO,QACP,MAAO,IACP,KAAM,UACV,EAAG,CACC,aAAc,+BAClB,CACJ,EACA,kBAAqB,CACjB,CACI,MAAO,SACP,MAAO,SACP,KAAM,CACF,CACI,MAAO,SACP,MAAO,MACP,KAAM,KACV,EAAG,CACC,QAAS,SACb,CACJ,CACJ,EAAG,CACC,MAAO,SACP,MAAO,SACP,KAAM,CACF,CACI,MAAO,SACP,MAAO,MACP,KAAM,KACV,EAAG,CACC,QAAS,UACb,CACJ,CACJ,EAAG,CACC,MAAO,oBACP,MAAO,6BACX,EAAG,CACC,MAAO,mBACP,MAAO,8CACX,EAAG,CACC,MAAO,mBACP,MAAO,8CACX,EAAG,CACC,MAAO,uBACP,MAAO,IACP,KAAM,oBACV,EAAG,CACC,MAAO,OACP,MAAO,MACX,EAAG,CACC,MAAO,uBACP,MAAO,GACX,EAAG,CACC,MAAO,QACP,MAAO,GACP,KAAM,UACV,CACJ,EACA,mBAAsB,CAClBA,EAAS,oBAAoB,EAC7B,CACI,MAAO,qBACP,MAAOJ,CACX,EAAG,CACC,MAAO,uBACP,MAAO,GACX,EAAG,CACC,MAAO,OACP,MAAO,MACX,EAAG,CACC,MAAO,uBACP,MAAO,GACX,EAAG,CACC,MAAO,QACP,MAAO,GACP,KAAM,UACV,CACJ,EACA,SAAY,CACR,CACI,MAAO,2BACP,MAAOG,CACX,EAAG,CACC,MAAO,SACP,MAAO,QACP,eAAgB,EACpB,EAAG,CACC,MAAO,SACP,MAAO,MACP,KAAM,UACV,EAAG,CACC,aAAc,QAClB,CACJ,EACA,QAAW,CACP,CACI,MAAO,2BACP,MAAOA,CACX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CV,EAAG,CACC,MAAO,SACP,MAAO,MACP,KAAM,OACV,EAAG,CACC,aAAc,QAClB,CAAC,EACL,QAAW,CAAC,CACJ,MAAO,2BACP,MAAOA,CACX,EAAG,CACC,MAAO,SACP,MAAO,QACP,KAAM,SACV,EAAG,CACC,MAAO,SACP,MAAO,MACP,KAAM,OACV,EAAG,CACC,aAAc,QAClB,CAAC,EACL,aAAgB,CAAC,CACT,MAAO,SACP,MAAO,OACP,KAAM,OACV,EAAG,CACC,aAAc,QAClB,CAAC,EACL,YAAe,CAAC,CACR,MAAO,SACP,MAAO,OACP,KAAM,OACV,EAAG,CACC,aAAc,QAClB,CAAC,EACL,YAAe,CAAC,CACR,MAAO,SACP,MAAO,QACP,KAAM,aACV,EAAG,CACC,MAAO,SACP,MAAO,MACP,KAAM,OACV,EAAG,CACC,aAAc,QAClB,CAAC,EACL,WAAc,CAAC,CACP,MAAO,SACP,MAAO,QACP,KAAM,YACV,EAAG,CACC,MAAO,SACP,MAAO,MACP,KAAM,OACV,EAAG,CACC,aAAc,QAClB,CAAC,EACL,WAAc,CAAC,CACP,MAAO,2BACP,MAAOA,CACX,EAAG,CACC,MAAO,SACP,MAAO,OACP,KAAM,OACV,EAAG,CACC,MAAO,eACP,MAAO,IACP,KAAM,kBACV,EAAG,CACC,aAAc,QAClB,CAAC,EACL,UAAa,CAAC,CACN,MAAO,2BACP,MAAOA,CACX,EAAG,CACC,MAAO,SACP,MAAO,OACP,KAAM,OACV,EAAG,CACC,MAAO,eACP,MAAO,IACP,KAAM,kBACV,EAAG,CACC,aAAc,QAClB,CAAC,EACL,UAAa,CAAC,CACN,MAAO,2BACP,MAAOA,CACX,EAAG,CACC,MAAO,SACP,MAAO,QACP,KAAM,WACV,EAAG,CACC,MAAO,SACP,MAAO,MACP,KAAM,OACV,EAAG,CACC,MAAO,eACP,MAAO,IACP,KAAM,kBACV,EAAG,CACC,aAAc,QAClB,CAAC,EACL,SAAY,CAAC,CACL,MAAO,2BACP,MAAOA,CACX,EAAG,CACC,MAAO,SACP,MAAO,MACP,KAAM,OACV,EAAG,CACC,MAAO,eACP,MAAO,IACP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","sources":["webpack://@tyk-technologies/tyk-ui/./node_modules/ace-builds/src-noconflict/ace.js","webpack://@tyk-technologies/tyk-ui/./node_modules/ace-builds/src-noconflict/ext-beautify.js","webpack://@tyk-technologies/tyk-ui/./node_modules/ace-builds/src-noconflict/ext-searchbox.js","webpack://@tyk-technologies/tyk-ui/./node_modules/ace-builds/src-noconflict/mode-css.js","webpack://@tyk-technologies/tyk-ui/./node_modules/ace-builds/src-noconflict/mode-golang.js","webpack://@tyk-technologies/tyk-ui/./node_modules/ace-builds/src-noconflict/mode-javascript.js","webpack://@tyk-technologies/tyk-ui/./node_modules/ace-builds/src-noconflict/mode-json.js","webpack://@tyk-technologies/tyk-ui/./node_modules/ace-builds/src-noconflict/mode-jsx.js","webpack://@tyk-technologies/tyk-ui/./node_modules/ace-builds/src-noconflict/mode-python.js","webpack://@tyk-technologies/tyk-ui/./node_modules/ace-builds/src-noconflict/mode-xml.js","webpack://@tyk-technologies/tyk-ui/./node_modules/ace-builds/src-noconflict/theme-github.js","webpack://@tyk-technologies/tyk-ui/./node_modules/flatpickr/dist/flatpickr.min.css","webpack://@tyk-technologies/tyk-ui/./node_modules/css-loader/dist/runtime/api.js","webpack://@tyk-technologies/tyk-ui/./node_modules/css-loader/dist/runtime/sourceMaps.js","webpack://@tyk-technologies/tyk-ui/./node_modules/react-dom/client.js","webpack://@tyk-technologies/tyk-ui/./node_modules/react-fast-compare/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js","webpack://@tyk-technologies/tyk-ui/./node_modules/style-loader/dist/runtime/insertBySelector.js","webpack://@tyk-technologies/tyk-ui/./node_modules/style-loader/dist/runtime/insertStyleElement.js","webpack://@tyk-technologies/tyk-ui/./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js","webpack://@tyk-technologies/tyk-ui/./node_modules/style-loader/dist/runtime/styleDomAPI.js","webpack://@tyk-technologies/tyk-ui/./node_modules/style-loader/dist/runtime/styleTagTransform.js","webpack://@tyk-technologies/tyk-ui/external commonjs2 \"react-dom\"","webpack://@tyk-technologies/tyk-ui/webpack/bootstrap","webpack://@tyk-technologies/tyk-ui/webpack/runtime/amd define","webpack://@tyk-technologies/tyk-ui/webpack/runtime/compat get default export","webpack://@tyk-technologies/tyk-ui/webpack/runtime/define property getters","webpack://@tyk-technologies/tyk-ui/webpack/runtime/hasOwnProperty shorthand","webpack://@tyk-technologies/tyk-ui/webpack/runtime/make namespace object","webpack://@tyk-technologies/tyk-ui/webpack/runtime/node module decorator","webpack://@tyk-technologies/tyk-ui/webpack/runtime/publicPath","webpack://@tyk-technologies/tyk-ui/webpack/runtime/nonce","webpack://@tyk-technologies/tyk-ui/external commonjs2 \"react\"","webpack://@tyk-technologies/tyk-ui/external commonjs2 \"prop-types\"","webpack://@tyk-technologies/tyk-ui/./src/components/Accordion/js/AccordionContext.js","webpack://@tyk-technologies/tyk-ui/./src/components/Accordion/js/AccordionItemContext.js","webpack://@tyk-technologies/tyk-ui/./src/components/Icon/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Accordion/js/AccordionItemTrigger.js","webpack://@tyk-technologies/tyk-ui/./src/components/Accordion/js/AccordionItem.js","webpack://@tyk-technologies/tyk-ui/./src/components/Accordion/js/AccordionItemHeader.js","webpack://@tyk-technologies/tyk-ui/external commonjs2 \"react-transition-group\"","webpack://@tyk-technologies/tyk-ui/./src/hooks/usePrevious/index.js","webpack://@tyk-technologies/tyk-ui/./src/hooks/useTimeout/index.js","webpack://@tyk-technologies/tyk-ui/./src/hooks/useInterval/index.js","webpack://@tyk-technologies/tyk-ui/./src/hooks/useEventListener/index.js","webpack://@tyk-technologies/tyk-ui/./src/hooks/useComponentSize/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Collapsible/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Accordion/js/AccordionItemContent.js","webpack://@tyk-technologies/tyk-ui/./src/components/Accordion/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Button/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/ButtonGroup/index.js","webpack://@tyk-technologies/tyk-ui/external commonjs2 \"echarts\"","webpack://@tyk-technologies/tyk-ui/external commonjs2 \"immutable\"","webpack://@tyk-technologies/tyk-ui/./src/utils/debounce/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Loader/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Message/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Chart/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Toast/js/ToastMessage.js","webpack://@tyk-technologies/tyk-ui/./src/components/Toast/js/ToastContainer.js","webpack://@tyk-technologies/tyk-ui/./src/components/Toast/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/CopyToClipboard/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Modal/js/ModalFooter.js","webpack://@tyk-technologies/tyk-ui/./src/components/Modal/js/ModalBody.js","webpack://@tyk-technologies/tyk-ui/./src/components/Modal/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Confirm/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/FixedWrapper/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/InfiniteScroller/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/FloatingContainer/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/InfoNote/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/List/js/ListItem.js","webpack://@tyk-technologies/tyk-ui/./src/components/List/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/NavBar/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Navigation/js/NavigationItem.js","webpack://@tyk-technologies/tyk-ui/./src/components/Navigation/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Panel/panel-context.js","webpack://@tyk-technologies/tyk-ui/./src/components/Panel/js/PanelBody.js","webpack://@tyk-technologies/tyk-ui/./src/components/Panel/js/PanelFooter.js","webpack://@tyk-technologies/tyk-ui/./src/components/Panel/js/PanelHeader.js","webpack://@tyk-technologies/tyk-ui/./src/components/Panel/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Pill/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/RevealPanel/js/RevealPanelService.js","webpack://@tyk-technologies/tyk-ui/./src/components/RevealPanel/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Tabs/tabs-context.js","webpack://@tyk-technologies/tyk-ui/./src/components/Tabs/js/TabContext.js","webpack://@tyk-technologies/tyk-ui/./src/components/Tabs/js/TabContent.js","webpack://@tyk-technologies/tyk-ui/./src/components/Tabs/js/Tab.js","webpack://@tyk-technologies/tyk-ui/./src/components/Tabs/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Tooltip/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/TextEllipsis/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Pagination/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Table/tableContext.js","webpack://@tyk-technologies/tyk-ui/./src/components/Table/js/header-cell.js","webpack://@tyk-technologies/tyk-ui/./src/components/Table/js/header.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Checkbox/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Table/js/cell.js","webpack://@tyk-technologies/tyk-ui/./src/components/Table/js/row.js","webpack://@tyk-technologies/tyk-ui/./src/components/Table/js/body.js","webpack://@tyk-technologies/tyk-ui/./src/components/Table/index.js","webpack://@tyk-technologies/tyk-ui/./src/layout/Column/index.js","webpack://@tyk-technologies/tyk-ui/./src/layout/Row/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Dropdown/dropdown-context.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Dropdown/js/DropdownItem.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Dropdown/index.js","webpack://@tyk-technologies/tyk-ui/external commonjs2 \"react-ace\"","webpack://@tyk-technologies/tyk-ui/./src/form/components/CodeEditor/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Combobox/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Combobox2/js/Value.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Combobox2/js/List.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Combobox2/index.js","webpack://@tyk-technologies/tyk-ui/external commonjs2 \"flatpickr\"","webpack://@tyk-technologies/tyk-ui/./node_modules/flatpickr/dist/flatpickr.min.css?e03b","webpack://@tyk-technologies/tyk-ui/./src/form/components/DatePicker/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/@babel/runtime/helpers/esm/typeof.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/requiredArgs/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/isDate/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/toDate/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/isValid/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/toInteger/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/addMilliseconds/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/subMilliseconds/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/getUTCDayOfYear/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/startOfUTCISOWeek/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/getUTCISOWeekYear/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/startOfUTCISOWeekYear/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/getUTCISOWeek/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/defaultOptions/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/startOfUTCWeek/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/getUTCWeekYear/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/startOfUTCWeekYear/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/getUTCWeek/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/addLeadingZeros/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/format/lightFormatters/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/format/formatters/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/format/longFormatters/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/getTimezoneOffsetInMilliseconds/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/protectedTokens/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/locale/en-US/_lib/formatDistance/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/locale/_lib/buildFormatLongFn/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/locale/en-US/_lib/formatLong/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/locale/en-US/_lib/formatRelative/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/locale/_lib/buildLocalizeFn/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/locale/en-US/_lib/localize/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/locale/_lib/buildMatchFn/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/locale/_lib/buildMatchPatternFn/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/locale/en-US/_lib/match/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/locale/en-US/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/defaultLocale/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/format/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/EditableList/js/EditableListForm.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/EditableList/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/EditableList2/Header.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/EditableList2/ListHeader.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/EditableList2/FieldsList.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/EditableList2/validate-values.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/EditableList2/with-validation.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/EditableList2/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/FileInput/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Input/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Input2/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Multiselect/js/MultiselectContext.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Multiselect/js/MultiselectItem.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Multiselect/js/MultiselectPanel.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Multiselect/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Radio/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Select/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/SelectableList/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Textarea/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Toggle/js/ToggleContext.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Toggle/js/ToggleItem.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Toggle/js/ToggleItemWrapper.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Toggle/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/StringBuilder/js/service.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/StringBuilder/js/string-input.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/StringBuilder/js/invalid-token.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/StringBuilder/js/tokenized-string.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/StringBuilder/js/options-list.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/StringBuilder/js/string-builder-footer.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/StringBuilder/index.js","webpack://@tyk-technologies/tyk-ui/./src/utils/config/config.js","webpack://@tyk-technologies/tyk-ui/./src/utils/formik/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikCheckbox/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikCodeEditor/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikCombobox/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikCombobox2/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikDatePicker/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikEditableList/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikEditableList2/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikFileInput/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikInput/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikInput2/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikMultiselect/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikRadio/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikSelect/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikSelectableList/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikTextarea/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikToggle/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikStringBuilder/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/redux-form/FieldCodeEditor/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/redux-form/FieldCombobox/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/redux-form/FieldDropdown/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/redux-form/FieldPagination/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/redux-form/FieldCombobox2/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/redux-form/FieldDatePicker/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/redux-form/FieldEditableList/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/redux-form/FieldFileInput/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/redux-form/FieldInput/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/redux-form/FieldMultiselect/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/redux-form/FieldSelect/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/redux-form/FieldSelectableList/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/redux-form/FieldToggle/index.js"],"sourcesContent":["/* ***** BEGIN LICENSE BLOCK *****\n * Distributed under the BSD license:\n *\n * Copyright (c) 2010, Ajax.org B.V.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright\n * notice, this list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright\n * notice, this list of conditions and the following disclaimer in the\n * documentation and/or other materials provided with the distribution.\n * * Neither the name of Ajax.org B.V. nor the\n * names of its contributors may be used to endorse or promote products\n * derived from this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\n * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY\n * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\n * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *\n * ***** END LICENSE BLOCK ***** */\n\n/**\n * Define a module along with a payload\n * @param module a name for the payload\n * @param payload a function to call with (require, exports, module) params\n */\n\n(function() {\n\nvar ACE_NAMESPACE = \"ace\";\n\nvar global = (function() { return this; })();\nif (!global && typeof window != \"undefined\") global = window; // strict mode\n\n\nif (!ACE_NAMESPACE && typeof requirejs !== \"undefined\")\n return;\n\n\nvar define = function(module, deps, payload) {\n if (typeof module !== \"string\") {\n if (define.original)\n define.original.apply(this, arguments);\n else {\n console.error(\"dropping module because define wasn\\'t a string.\");\n console.trace();\n }\n return;\n }\n if (arguments.length == 2)\n payload = deps;\n if (!define.modules[module]) {\n define.payloads[module] = payload;\n define.modules[module] = null;\n }\n};\n\ndefine.modules = {};\ndefine.payloads = {};\n\n/**\n * Get at functionality define()ed using the function above\n */\nvar _require = function(parentId, module, callback) {\n if (typeof module === \"string\") {\n var payload = lookup(parentId, module);\n if (payload != undefined) {\n callback && callback();\n return payload;\n }\n } else if (Object.prototype.toString.call(module) === \"[object Array]\") {\n var params = [];\n for (var i = 0, l = module.length; i < l; ++i) {\n var dep = lookup(parentId, module[i]);\n if (dep == undefined && require.original)\n return;\n params.push(dep);\n }\n return callback && callback.apply(null, params) || true;\n }\n};\n\nvar require = function(module, callback) {\n var packagedModule = _require(\"\", module, callback);\n if (packagedModule == undefined && require.original)\n return require.original.apply(this, arguments);\n return packagedModule;\n};\n\nvar normalizeModule = function(parentId, moduleName) {\n // normalize plugin requires\n if (moduleName.indexOf(\"!\") !== -1) {\n var chunks = moduleName.split(\"!\");\n return normalizeModule(parentId, chunks[0]) + \"!\" + normalizeModule(parentId, chunks[1]);\n }\n // normalize relative requires\n if (moduleName.charAt(0) == \".\") {\n var base = parentId.split(\"/\").slice(0, -1).join(\"/\");\n moduleName = base + \"/\" + moduleName;\n\n while(moduleName.indexOf(\".\") !== -1 && previous != moduleName) {\n var previous = moduleName;\n moduleName = moduleName.replace(/\\/\\.\\//, \"/\").replace(/[^\\/]+\\/\\.\\.\\//, \"\");\n }\n }\n return moduleName;\n};\n\n/**\n * Internal function to lookup moduleNames and resolve them by calling the\n * definition function if needed.\n */\nvar lookup = function(parentId, moduleName) {\n moduleName = normalizeModule(parentId, moduleName);\n\n var module = define.modules[moduleName];\n if (!module) {\n module = define.payloads[moduleName];\n if (typeof module === 'function') {\n var exports = {};\n var mod = {\n id: moduleName,\n uri: '',\n exports: exports,\n packaged: true\n };\n\n var req = function(module, callback) {\n return _require(moduleName, module, callback);\n };\n\n var returnValue = module(req, exports, mod);\n exports = returnValue || mod.exports;\n define.modules[moduleName] = exports;\n delete define.payloads[moduleName];\n }\n module = define.modules[moduleName] = exports || module;\n }\n return module;\n};\n\nfunction exportAce(ns) {\n var root = global;\n if (ns) {\n if (!global[ns])\n global[ns] = {};\n root = global[ns];\n }\n\n if (!root.define || !root.define.packaged) {\n define.original = root.define;\n root.define = define;\n root.define.packaged = true;\n }\n\n if (!root.require || !root.require.packaged) {\n require.original = root.require;\n root.require = require;\n root.require.packaged = true;\n }\n}\n\nexportAce(ACE_NAMESPACE);\n\n})();\n\nace.define(\"ace/lib/es6-shim\",[\"require\",\"exports\",\"module\"], function(require, exports, module){function defineProp(obj, name, val) {\n Object.defineProperty(obj, name, {\n value: val,\n enumerable: false,\n writable: true,\n configurable: true\n });\n}\nif (!String.prototype.startsWith) {\n defineProp(String.prototype, \"startsWith\", function (searchString, position) {\n position = position || 0;\n return this.lastIndexOf(searchString, position) === position;\n });\n}\nif (!String.prototype.endsWith) {\n defineProp(String.prototype, \"endsWith\", function (searchString, position) {\n var subjectString = this;\n if (position === undefined || position > subjectString.length) {\n position = subjectString.length;\n }\n position -= searchString.length;\n var lastIndex = subjectString.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n });\n}\nif (!String.prototype.repeat) {\n defineProp(String.prototype, \"repeat\", function (count) {\n var result = \"\";\n var string = this;\n while (count > 0) {\n if (count & 1)\n result += string;\n if ((count >>= 1))\n string += string;\n }\n return result;\n });\n}\nif (!String.prototype.includes) {\n defineProp(String.prototype, \"includes\", function (str, position) {\n return this.indexOf(str, position) != -1;\n });\n}\nif (!Object.assign) {\n Object.assign = function (target) {\n if (target === undefined || target === null) {\n throw new TypeError(\"Cannot convert undefined or null to object\");\n }\n var output = Object(target);\n for (var index = 1; index < arguments.length; index++) {\n var source = arguments[index];\n if (source !== undefined && source !== null) {\n Object.keys(source).forEach(function (key) {\n output[key] = source[key];\n });\n }\n }\n return output;\n };\n}\nif (!Object.values) {\n Object.values = function (o) {\n return Object.keys(o).map(function (k) {\n return o[k];\n });\n };\n}\nif (!Array.prototype.find) {\n defineProp(Array.prototype, \"find\", function (predicate) {\n var len = this.length;\n var thisArg = arguments[1];\n for (var k = 0; k < len; k++) {\n var kValue = this[k];\n if (predicate.call(thisArg, kValue, k, this)) {\n return kValue;\n }\n }\n });\n}\nif (!Array.prototype.findIndex) {\n defineProp(Array.prototype, \"findIndex\", function (predicate) {\n var len = this.length;\n var thisArg = arguments[1];\n for (var k = 0; k < len; k++) {\n var kValue = this[k];\n if (predicate.call(thisArg, kValue, k, this)) {\n return k;\n }\n }\n });\n}\nif (!Array.prototype.includes) {\n defineProp(Array.prototype, \"includes\", function (item, position) {\n return this.indexOf(item, position) != -1;\n });\n}\nif (!Array.prototype.fill) {\n defineProp(Array.prototype, \"fill\", function (value) {\n var O = this;\n var len = O.length >>> 0;\n var start = arguments[1];\n var relativeStart = start >> 0;\n var k = relativeStart < 0\n ? Math.max(len + relativeStart, 0)\n : Math.min(relativeStart, len);\n var end = arguments[2];\n var relativeEnd = end === undefined ? len : end >> 0;\n var final = relativeEnd < 0\n ? Math.max(len + relativeEnd, 0)\n : Math.min(relativeEnd, len);\n while (k < final) {\n O[k] = value;\n k++;\n }\n return O;\n });\n}\nif (!Array.of) {\n defineProp(Array, \"of\", function () {\n return Array.prototype.slice.call(arguments);\n });\n}\n\n});\n\nace.define(\"ace/lib/fixoldbrowsers\",[\"require\",\"exports\",\"module\",\"ace/lib/es6-shim\"], function(require, exports, module){// vim:set ts=4 sts=4 sw=4 st:\n\"use strict\";\nrequire(\"./es6-shim\");\n\n});\n\nace.define(\"ace/lib/deep_copy\",[\"require\",\"exports\",\"module\"], function(require, exports, module){exports.deepCopy = function deepCopy(obj) {\n if (typeof obj !== \"object\" || !obj)\n return obj;\n var copy;\n if (Array.isArray(obj)) {\n copy = [];\n for (var key = 0; key < obj.length; key++) {\n copy[key] = deepCopy(obj[key]);\n }\n return copy;\n }\n if (Object.prototype.toString.call(obj) !== \"[object Object]\")\n return obj;\n copy = {};\n for (var key in obj)\n copy[key] = deepCopy(obj[key]);\n return copy;\n};\n\n});\n\nace.define(\"ace/lib/lang\",[\"require\",\"exports\",\"module\",\"ace/lib/deep_copy\"], function(require, exports, module){\"use strict\";\nexports.last = function (a) {\n return a[a.length - 1];\n};\nexports.stringReverse = function (string) {\n return string.split(\"\").reverse().join(\"\");\n};\nexports.stringRepeat = function (string, count) {\n var result = '';\n while (count > 0) {\n if (count & 1)\n result += string;\n if (count >>= 1)\n string += string;\n }\n return result;\n};\nvar trimBeginRegexp = /^\\s\\s*/;\nvar trimEndRegexp = /\\s\\s*$/;\nexports.stringTrimLeft = function (string) {\n return string.replace(trimBeginRegexp, '');\n};\nexports.stringTrimRight = function (string) {\n return string.replace(trimEndRegexp, '');\n};\nexports.copyObject = function (obj) {\n var copy = {};\n for (var key in obj) {\n copy[key] = obj[key];\n }\n return copy;\n};\nexports.copyArray = function (array) {\n var copy = [];\n for (var i = 0, l = array.length; i < l; i++) {\n if (array[i] && typeof array[i] == \"object\")\n copy[i] = this.copyObject(array[i]);\n else\n copy[i] = array[i];\n }\n return copy;\n};\nexports.deepCopy = require(\"./deep_copy\").deepCopy;\nexports.arrayToMap = function (arr) {\n var map = {};\n for (var i = 0; i < arr.length; i++) {\n map[arr[i]] = 1;\n }\n return map;\n};\nexports.createMap = function (props) {\n var map = Object.create(null);\n for (var i in props) {\n map[i] = props[i];\n }\n return map;\n};\nexports.arrayRemove = function (array, value) {\n for (var i = 0; i <= array.length; i++) {\n if (value === array[i]) {\n array.splice(i, 1);\n }\n }\n};\nexports.escapeRegExp = function (str) {\n return str.replace(/([.*+?^${}()|[\\]\\/\\\\])/g, '\\\\$1');\n};\nexports.escapeHTML = function (str) {\n return (\"\" + str).replace(/&/g, \"&\").replace(/\"/g, \""\").replace(/'/g, \"'\").replace(/= 0)\n ? parseFloat((ua.match(/(?:MSIE |Trident\\/[0-9]+[\\.0-9]+;.*rv:)([0-9]+[\\.0-9]+)/) || [])[1])\n : parseFloat((ua.match(/(?:Trident\\/[0-9]+[\\.0-9]+;.*rv:)([0-9]+[\\.0-9]+)/) || [])[1]); // for ie\nexports.isOldIE = exports.isIE && exports.isIE < 9;\nexports.isGecko = exports.isMozilla = ua.match(/ Gecko\\/\\d+/);\nexports.isOpera = typeof opera == \"object\" && Object.prototype.toString.call(window.opera) == \"[object Opera]\";\nexports.isWebKit = parseFloat(ua.split(\"WebKit/\")[1]) || undefined;\nexports.isChrome = parseFloat(ua.split(\" Chrome/\")[1]) || undefined;\nexports.isEdge = parseFloat(ua.split(\" Edge/\")[1]) || undefined;\nexports.isAIR = ua.indexOf(\"AdobeAIR\") >= 0;\nexports.isAndroid = ua.indexOf(\"Android\") >= 0;\nexports.isChromeOS = ua.indexOf(\" CrOS \") >= 0;\nexports.isIOS = /iPad|iPhone|iPod/.test(ua) && !window.MSStream;\nif (exports.isIOS)\n exports.isMac = true;\nexports.isMobile = exports.isIOS || exports.isAndroid;\n\n});\n\nace.define(\"ace/lib/dom\",[\"require\",\"exports\",\"module\",\"ace/lib/useragent\"], function(require, exports, module){\"use strict\";\nvar useragent = require(\"./useragent\");\nvar XHTML_NS = \"http://www.w3.org/1999/xhtml\";\nexports.buildDom = function buildDom(arr, parent, refs) {\n if (typeof arr == \"string\" && arr) {\n var txt = document.createTextNode(arr);\n if (parent)\n parent.appendChild(txt);\n return txt;\n }\n if (!Array.isArray(arr)) {\n if (arr && arr.appendChild && parent)\n parent.appendChild(arr);\n return arr;\n }\n if (typeof arr[0] != \"string\" || !arr[0]) {\n var els = [];\n for (var i = 0; i < arr.length; i++) {\n var ch = buildDom(arr[i], parent, refs);\n ch && els.push(ch);\n }\n return els;\n }\n var el = document.createElement(arr[0]);\n var options = arr[1];\n var childIndex = 1;\n if (options && typeof options == \"object\" && !Array.isArray(options))\n childIndex = 2;\n for (var i = childIndex; i < arr.length; i++)\n buildDom(arr[i], el, refs);\n if (childIndex == 2) {\n Object.keys(options).forEach(function (n) {\n var val = options[n];\n if (n === \"class\") {\n el.className = Array.isArray(val) ? val.join(\" \") : val;\n }\n else if (typeof val == \"function\" || n == \"value\" || n[0] == \"$\") {\n el[n] = val;\n }\n else if (n === \"ref\") {\n if (refs)\n refs[val] = el;\n }\n else if (n === \"style\") {\n if (typeof val == \"string\")\n el.style.cssText = val;\n }\n else if (val != null) {\n el.setAttribute(n, val);\n }\n });\n }\n if (parent)\n parent.appendChild(el);\n return el;\n};\nexports.getDocumentHead = function (doc) {\n if (!doc)\n doc = document;\n return doc.head || doc.getElementsByTagName(\"head\")[0] || doc.documentElement;\n};\nexports.createElement = function (tag, ns) {\n return document.createElementNS ?\n document.createElementNS(ns || XHTML_NS, tag) :\n document.createElement(tag);\n};\nexports.removeChildren = function (element) {\n element.innerHTML = \"\";\n};\nexports.createTextNode = function (textContent, element) {\n var doc = element ? element.ownerDocument : document;\n return doc.createTextNode(textContent);\n};\nexports.createFragment = function (element) {\n var doc = element ? element.ownerDocument : document;\n return doc.createDocumentFragment();\n};\nexports.hasCssClass = function (el, name) {\n var classes = (el.className + \"\").split(/\\s+/g);\n return classes.indexOf(name) !== -1;\n};\nexports.addCssClass = function (el, name) {\n if (!exports.hasCssClass(el, name)) {\n el.className += \" \" + name;\n }\n};\nexports.removeCssClass = function (el, name) {\n var classes = el.className.split(/\\s+/g);\n while (true) {\n var index = classes.indexOf(name);\n if (index == -1) {\n break;\n }\n classes.splice(index, 1);\n }\n el.className = classes.join(\" \");\n};\nexports.toggleCssClass = function (el, name) {\n var classes = el.className.split(/\\s+/g), add = true;\n while (true) {\n var index = classes.indexOf(name);\n if (index == -1) {\n break;\n }\n add = false;\n classes.splice(index, 1);\n }\n if (add)\n classes.push(name);\n el.className = classes.join(\" \");\n return add;\n};\nexports.setCssClass = function (node, className, include) {\n if (include) {\n exports.addCssClass(node, className);\n }\n else {\n exports.removeCssClass(node, className);\n }\n};\nexports.hasCssString = function (id, doc) {\n var index = 0, sheets;\n doc = doc || document;\n if ((sheets = doc.querySelectorAll(\"style\"))) {\n while (index < sheets.length) {\n if (sheets[index++].id === id) {\n return true;\n }\n }\n }\n};\nexports.removeElementById = function (id, doc) {\n doc = doc || document;\n if (doc.getElementById(id)) {\n doc.getElementById(id).remove();\n }\n};\nvar strictCSP;\nvar cssCache = [];\nexports.useStrictCSP = function (value) {\n strictCSP = value;\n if (value == false)\n insertPendingStyles();\n else if (!cssCache)\n cssCache = [];\n};\nfunction insertPendingStyles() {\n var cache = cssCache;\n cssCache = null;\n cache && cache.forEach(function (item) {\n importCssString(item[0], item[1]);\n });\n}\nfunction importCssString(cssText, id, target) {\n if (typeof document == \"undefined\")\n return;\n if (cssCache) {\n if (target) {\n insertPendingStyles();\n }\n else if (target === false) {\n return cssCache.push([cssText, id]);\n }\n }\n if (strictCSP)\n return;\n var container = target;\n if (!target || !target.getRootNode) {\n container = document;\n }\n else {\n container = target.getRootNode();\n if (!container || container == target)\n container = document;\n }\n var doc = container.ownerDocument || container;\n if (id && exports.hasCssString(id, container))\n return null;\n if (id)\n cssText += \"\\n/*# sourceURL=ace/css/\" + id + \" */\";\n var style = exports.createElement(\"style\");\n style.appendChild(doc.createTextNode(cssText));\n if (id)\n style.id = id;\n if (container == doc)\n container = exports.getDocumentHead(doc);\n container.insertBefore(style, container.firstChild);\n}\nexports.importCssString = importCssString;\nexports.importCssStylsheet = function (uri, doc) {\n exports.buildDom([\"link\", { rel: \"stylesheet\", href: uri }], exports.getDocumentHead(doc));\n};\nexports.scrollbarWidth = function (doc) {\n var inner = exports.createElement(\"ace_inner\");\n inner.style.width = \"100%\";\n inner.style.minWidth = \"0px\";\n inner.style.height = \"200px\";\n inner.style.display = \"block\";\n var outer = exports.createElement(\"ace_outer\");\n var style = outer.style;\n style.position = \"absolute\";\n style.left = \"-10000px\";\n style.overflow = \"hidden\";\n style.width = \"200px\";\n style.minWidth = \"0px\";\n style.height = \"150px\";\n style.display = \"block\";\n outer.appendChild(inner);\n var body = (doc && doc.documentElement) || (document && document.documentElement);\n if (!body)\n return 0;\n body.appendChild(outer);\n var noScrollbar = inner.offsetWidth;\n style.overflow = \"scroll\";\n var withScrollbar = inner.offsetWidth;\n if (noScrollbar === withScrollbar) {\n withScrollbar = outer.clientWidth;\n }\n body.removeChild(outer);\n return noScrollbar - withScrollbar;\n};\nexports.computedStyle = function (element, style) {\n return window.getComputedStyle(element, \"\") || {};\n};\nexports.setStyle = function (styles, property, value) {\n if (styles[property] !== value) {\n styles[property] = value;\n }\n};\nexports.HAS_CSS_ANIMATION = false;\nexports.HAS_CSS_TRANSFORMS = false;\nexports.HI_DPI = useragent.isWin\n ? typeof window !== \"undefined\" && window.devicePixelRatio >= 1.5\n : true;\nif (useragent.isChromeOS)\n exports.HI_DPI = false;\nif (typeof document !== \"undefined\") {\n var div = document.createElement(\"div\");\n if (exports.HI_DPI && div.style.transform !== undefined)\n exports.HAS_CSS_TRANSFORMS = true;\n if (!useragent.isEdge && typeof div.style.animationName !== \"undefined\")\n exports.HAS_CSS_ANIMATION = true;\n div = null;\n}\nif (exports.HAS_CSS_TRANSFORMS) {\n exports.translate = function (element, tx, ty) {\n element.style.transform = \"translate(\" + Math.round(tx) + \"px, \" + Math.round(ty) + \"px)\";\n };\n}\nelse {\n exports.translate = function (element, tx, ty) {\n element.style.top = Math.round(ty) + \"px\";\n element.style.left = Math.round(tx) + \"px\";\n };\n}\n\n});\n\nace.define(\"ace/lib/net\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"], function(require, exports, module){/*\n * based on code from:\n *\n * @license RequireJS text 0.25.0 Copyright (c) 2010-2011, The Dojo Foundation All Rights Reserved.\n * Available via the MIT or new BSD license.\n * see: http://github.com/jrburke/requirejs for details\n */\n\"use strict\";\nvar dom = require(\"./dom\");\nexports.get = function (url, callback) {\n var xhr = new XMLHttpRequest();\n xhr.open('GET', url, true);\n xhr.onreadystatechange = function () {\n if (xhr.readyState === 4) {\n callback(xhr.responseText);\n }\n };\n xhr.send(null);\n};\nexports.loadScript = function (path, callback) {\n var head = dom.getDocumentHead();\n var s = document.createElement('script');\n s.src = path;\n head.appendChild(s);\n s.onload = s.onreadystatechange = function (_, isAbort) {\n if (isAbort || !s.readyState || s.readyState == \"loaded\" || s.readyState == \"complete\") {\n s = s.onload = s.onreadystatechange = null;\n if (!isAbort)\n callback();\n }\n };\n};\nexports.qualifyURL = function (url) {\n var a = document.createElement('a');\n a.href = url;\n return a.href;\n};\n\n});\n\nace.define(\"ace/lib/oop\",[\"require\",\"exports\",\"module\"], function(require, exports, module){\"use strict\";\nexports.inherits = function (ctor, superCtor) {\n ctor.super_ = superCtor;\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n};\nexports.mixin = function (obj, mixin) {\n for (var key in mixin) {\n obj[key] = mixin[key];\n }\n return obj;\n};\nexports.implement = function (proto, mixin) {\n exports.mixin(proto, mixin);\n};\n\n});\n\nace.define(\"ace/lib/event_emitter\",[\"require\",\"exports\",\"module\"], function(require, exports, module){\"use strict\";\nvar EventEmitter = {};\nvar stopPropagation = function () { this.propagationStopped = true; };\nvar preventDefault = function () { this.defaultPrevented = true; };\nEventEmitter._emit =\n EventEmitter._dispatchEvent = function (eventName, e) {\n this._eventRegistry || (this._eventRegistry = {});\n this._defaultHandlers || (this._defaultHandlers = {});\n var listeners = this._eventRegistry[eventName] || [];\n var defaultHandler = this._defaultHandlers[eventName];\n if (!listeners.length && !defaultHandler)\n return;\n if (typeof e != \"object\" || !e)\n e = {};\n if (!e.type)\n e.type = eventName;\n if (!e.stopPropagation)\n e.stopPropagation = stopPropagation;\n if (!e.preventDefault)\n e.preventDefault = preventDefault;\n listeners = listeners.slice();\n for (var i = 0; i < listeners.length; i++) {\n listeners[i](e, this);\n if (e.propagationStopped)\n break;\n }\n if (defaultHandler && !e.defaultPrevented)\n return defaultHandler(e, this);\n };\nEventEmitter._signal = function (eventName, e) {\n var listeners = (this._eventRegistry || {})[eventName];\n if (!listeners)\n return;\n listeners = listeners.slice();\n for (var i = 0; i < listeners.length; i++)\n listeners[i](e, this);\n};\nEventEmitter.once = function (eventName, callback) {\n var _self = this;\n this.on(eventName, function newCallback() {\n _self.off(eventName, newCallback);\n callback.apply(null, arguments);\n });\n if (!callback) {\n return new Promise(function (resolve) {\n callback = resolve;\n });\n }\n};\nEventEmitter.setDefaultHandler = function (eventName, callback) {\n var handlers = this._defaultHandlers;\n if (!handlers)\n handlers = this._defaultHandlers = { _disabled_: {} };\n if (handlers[eventName]) {\n var old = handlers[eventName];\n var disabled = handlers._disabled_[eventName];\n if (!disabled)\n handlers._disabled_[eventName] = disabled = [];\n disabled.push(old);\n var i = disabled.indexOf(callback);\n if (i != -1)\n disabled.splice(i, 1);\n }\n handlers[eventName] = callback;\n};\nEventEmitter.removeDefaultHandler = function (eventName, callback) {\n var handlers = this._defaultHandlers;\n if (!handlers)\n return;\n var disabled = handlers._disabled_[eventName];\n if (handlers[eventName] == callback) {\n if (disabled)\n this.setDefaultHandler(eventName, disabled.pop());\n }\n else if (disabled) {\n var i = disabled.indexOf(callback);\n if (i != -1)\n disabled.splice(i, 1);\n }\n};\nEventEmitter.on =\n EventEmitter.addEventListener = function (eventName, callback, capturing) {\n this._eventRegistry = this._eventRegistry || {};\n var listeners = this._eventRegistry[eventName];\n if (!listeners)\n listeners = this._eventRegistry[eventName] = [];\n if (listeners.indexOf(callback) == -1)\n listeners[capturing ? \"unshift\" : \"push\"](callback);\n return callback;\n };\nEventEmitter.off =\n EventEmitter.removeListener =\n EventEmitter.removeEventListener = function (eventName, callback) {\n this._eventRegistry = this._eventRegistry || {};\n var listeners = this._eventRegistry[eventName];\n if (!listeners)\n return;\n var index = listeners.indexOf(callback);\n if (index !== -1)\n listeners.splice(index, 1);\n };\nEventEmitter.removeAllListeners = function (eventName) {\n if (!eventName)\n this._eventRegistry = this._defaultHandlers = undefined;\n if (this._eventRegistry)\n this._eventRegistry[eventName] = undefined;\n if (this._defaultHandlers)\n this._defaultHandlers[eventName] = undefined;\n};\nexports.EventEmitter = EventEmitter;\n\n});\n\nace.define(\"ace/lib/report_error\",[\"require\",\"exports\",\"module\"], function(require, exports, module){exports.reportError = function reportError(msg, data) {\n var e = new Error(msg);\n e.data = data;\n if (typeof console == \"object\" && console.error)\n console.error(e);\n setTimeout(function () { throw e; });\n};\n\n});\n\nace.define(\"ace/lib/app_config\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/event_emitter\",\"ace/lib/report_error\"], function(require, exports, module){\"no use strict\";\nvar oop = require(\"./oop\");\nvar EventEmitter = require(\"./event_emitter\").EventEmitter;\nvar reportError = require(\"./report_error\").reportError;\nvar optionsProvider = {\n setOptions: function (optList) {\n Object.keys(optList).forEach(function (key) {\n this.setOption(key, optList[key]);\n }, this);\n },\n getOptions: function (optionNames) {\n var result = {};\n if (!optionNames) {\n var options = this.$options;\n optionNames = Object.keys(options).filter(function (key) {\n return !options[key].hidden;\n });\n }\n else if (!Array.isArray(optionNames)) {\n result = optionNames;\n optionNames = Object.keys(result);\n }\n optionNames.forEach(function (key) {\n result[key] = this.getOption(key);\n }, this);\n return result;\n },\n setOption: function (name, value) {\n if (this[\"$\" + name] === value)\n return;\n var opt = this.$options[name];\n if (!opt) {\n return warn('misspelled option \"' + name + '\"');\n }\n if (opt.forwardTo)\n return this[opt.forwardTo] && this[opt.forwardTo].setOption(name, value);\n if (!opt.handlesSet)\n this[\"$\" + name] = value;\n if (opt && opt.set)\n opt.set.call(this, value);\n },\n getOption: function (name) {\n var opt = this.$options[name];\n if (!opt) {\n return warn('misspelled option \"' + name + '\"');\n }\n if (opt.forwardTo)\n return this[opt.forwardTo] && this[opt.forwardTo].getOption(name);\n return opt && opt.get ? opt.get.call(this) : this[\"$\" + name];\n }\n};\nfunction warn(message) {\n if (typeof console != \"undefined\" && console.warn)\n console.warn.apply(console, arguments);\n}\nvar messages;\nvar AppConfig = /** @class */ (function () {\n function AppConfig() {\n this.$defaultOptions = {};\n }\n AppConfig.prototype.defineOptions = function (obj, path, options) {\n if (!obj.$options)\n this.$defaultOptions[path] = obj.$options = {};\n Object.keys(options).forEach(function (key) {\n var opt = options[key];\n if (typeof opt == \"string\")\n opt = { forwardTo: opt };\n opt.name || (opt.name = key);\n obj.$options[opt.name] = opt;\n if (\"initialValue\" in opt)\n obj[\"$\" + opt.name] = opt.initialValue;\n });\n oop.implement(obj, optionsProvider);\n return this;\n };\n AppConfig.prototype.resetOptions = function (obj) {\n Object.keys(obj.$options).forEach(function (key) {\n var opt = obj.$options[key];\n if (\"value\" in opt)\n obj.setOption(key, opt.value);\n });\n };\n AppConfig.prototype.setDefaultValue = function (path, name, value) {\n if (!path) {\n for (path in this.$defaultOptions)\n if (this.$defaultOptions[path][name])\n break;\n if (!this.$defaultOptions[path][name])\n return false;\n }\n var opts = this.$defaultOptions[path] || (this.$defaultOptions[path] = {});\n if (opts[name]) {\n if (opts.forwardTo)\n this.setDefaultValue(opts.forwardTo, name, value);\n else\n opts[name].value = value;\n }\n };\n AppConfig.prototype.setDefaultValues = function (path, optionHash) {\n Object.keys(optionHash).forEach(function (key) {\n this.setDefaultValue(path, key, optionHash[key]);\n }, this);\n };\n AppConfig.prototype.setMessages = function (value) {\n messages = value;\n };\n AppConfig.prototype.nls = function (string, params) {\n if (messages && !messages[string]) {\n warn(\"No message found for '\" + string + \"' in the provided messages, falling back to default English message.\");\n }\n var translated = messages && messages[string] || string;\n if (params) {\n translated = translated.replace(/\\$(\\$|[\\d]+)/g, function (_, name) {\n if (name == \"$\")\n return \"$\";\n return params[name];\n });\n }\n return translated;\n };\n return AppConfig;\n}());\nAppConfig.prototype.warn = warn;\nAppConfig.prototype.reportError = reportError;\noop.implement(AppConfig.prototype, EventEmitter);\nexports.AppConfig = AppConfig;\n\n});\n\nace.define(\"ace/theme/textmate-css\",[\"require\",\"exports\",\"module\"], function(require, exports, module){module.exports = \".ace-tm .ace_gutter {\\n background: #f0f0f0;\\n color: #333;\\n}\\n\\n.ace-tm .ace_print-margin {\\n width: 1px;\\n background: #e8e8e8;\\n}\\n\\n.ace-tm .ace_fold {\\n background-color: #6B72E6;\\n}\\n\\n.ace-tm {\\n background-color: #FFFFFF;\\n color: black;\\n}\\n\\n.ace-tm .ace_cursor {\\n color: black;\\n}\\n \\n.ace-tm .ace_invisible {\\n color: rgb(191, 191, 191);\\n}\\n\\n.ace-tm .ace_storage,\\n.ace-tm .ace_keyword {\\n color: blue;\\n}\\n\\n.ace-tm .ace_constant {\\n color: rgb(197, 6, 11);\\n}\\n\\n.ace-tm .ace_constant.ace_buildin {\\n color: rgb(88, 72, 246);\\n}\\n\\n.ace-tm .ace_constant.ace_language {\\n color: rgb(88, 92, 246);\\n}\\n\\n.ace-tm .ace_constant.ace_library {\\n color: rgb(6, 150, 14);\\n}\\n\\n.ace-tm .ace_invalid {\\n background-color: rgba(255, 0, 0, 0.1);\\n color: red;\\n}\\n\\n.ace-tm .ace_support.ace_function {\\n color: rgb(60, 76, 114);\\n}\\n\\n.ace-tm .ace_support.ace_constant {\\n color: rgb(6, 150, 14);\\n}\\n\\n.ace-tm .ace_support.ace_type,\\n.ace-tm .ace_support.ace_class {\\n color: rgb(109, 121, 222);\\n}\\n\\n.ace-tm .ace_keyword.ace_operator {\\n color: rgb(104, 118, 135);\\n}\\n\\n.ace-tm .ace_string {\\n color: rgb(3, 106, 7);\\n}\\n\\n.ace-tm .ace_comment {\\n color: rgb(76, 136, 107);\\n}\\n\\n.ace-tm .ace_comment.ace_doc {\\n color: rgb(0, 102, 255);\\n}\\n\\n.ace-tm .ace_comment.ace_doc.ace_tag {\\n color: rgb(128, 159, 191);\\n}\\n\\n.ace-tm .ace_constant.ace_numeric {\\n color: rgb(0, 0, 205);\\n}\\n\\n.ace-tm .ace_variable {\\n color: rgb(49, 132, 149);\\n}\\n\\n.ace-tm .ace_xml-pe {\\n color: rgb(104, 104, 91);\\n}\\n\\n.ace-tm .ace_entity.ace_name.ace_function {\\n color: #0000A2;\\n}\\n\\n\\n.ace-tm .ace_heading {\\n color: rgb(12, 7, 255);\\n}\\n\\n.ace-tm .ace_list {\\n color:rgb(185, 6, 144);\\n}\\n\\n.ace-tm .ace_meta.ace_tag {\\n color:rgb(0, 22, 142);\\n}\\n\\n.ace-tm .ace_string.ace_regex {\\n color: rgb(255, 0, 0)\\n}\\n\\n.ace-tm .ace_marker-layer .ace_selection {\\n background: rgb(181, 213, 255);\\n}\\n.ace-tm.ace_multiselect .ace_selection.ace_start {\\n box-shadow: 0 0 3px 0px white;\\n}\\n.ace-tm .ace_marker-layer .ace_step {\\n background: rgb(252, 255, 0);\\n}\\n\\n.ace-tm .ace_marker-layer .ace_stack {\\n background: rgb(164, 229, 101);\\n}\\n\\n.ace-tm .ace_marker-layer .ace_bracket {\\n margin: -1px 0 0 -1px;\\n border: 1px solid rgb(192, 192, 192);\\n}\\n\\n.ace-tm .ace_marker-layer .ace_active-line {\\n background: rgba(0, 0, 0, 0.07);\\n}\\n\\n.ace-tm .ace_gutter-active-line {\\n background-color : #dcdcdc;\\n}\\n\\n.ace-tm .ace_marker-layer .ace_selected-word {\\n background: rgb(250, 250, 255);\\n border: 1px solid rgb(200, 200, 250);\\n}\\n\\n.ace-tm .ace_indent-guide {\\n background: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==\\\") right repeat-y;\\n}\\n\\n.ace-tm .ace_indent-guide-active {\\n background: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAAZSURBVHjaYvj///9/hivKyv8BAAAA//8DACLqBhbvk+/eAAAAAElFTkSuQmCC\\\") right repeat-y;\\n}\\n\";\n\n});\n\nace.define(\"ace/theme/textmate\",[\"require\",\"exports\",\"module\",\"ace/theme/textmate-css\",\"ace/lib/dom\"], function(require, exports, module){\"use strict\";\nexports.isDark = false;\nexports.cssClass = \"ace-tm\";\nexports.cssText = require(\"./textmate-css\");\nexports.$id = \"ace/theme/textmate\";\nvar dom = require(\"../lib/dom\");\ndom.importCssString(exports.cssText, exports.cssClass, false);\n\n});\n\nace.define(\"ace/config\",[\"require\",\"exports\",\"module\",\"ace/lib/lang\",\"ace/lib/net\",\"ace/lib/dom\",\"ace/lib/app_config\",\"ace/theme/textmate\"], function(require, exports, module){\"no use strict\";\nvar lang = require(\"./lib/lang\");\nvar net = require(\"./lib/net\");\nvar dom = require(\"./lib/dom\");\nvar AppConfig = require(\"./lib/app_config\").AppConfig;\nmodule.exports = exports = new AppConfig();\nvar options = {\n packaged: false,\n workerPath: null,\n modePath: null,\n themePath: null,\n basePath: \"\",\n suffix: \".js\",\n $moduleUrls: {},\n loadWorkerFromBlob: true,\n sharedPopups: false,\n useStrictCSP: null\n};\nexports.get = function (key) {\n if (!options.hasOwnProperty(key))\n throw new Error(\"Unknown config key: \" + key);\n return options[key];\n};\nexports.set = function (key, value) {\n if (options.hasOwnProperty(key))\n options[key] = value;\n else if (this.setDefaultValue(\"\", key, value) == false)\n throw new Error(\"Unknown config key: \" + key);\n if (key == \"useStrictCSP\")\n dom.useStrictCSP(value);\n};\nexports.all = function () {\n return lang.copyObject(options);\n};\nexports.$modes = {};\nexports.moduleUrl = function (name, component) {\n if (options.$moduleUrls[name])\n return options.$moduleUrls[name];\n var parts = name.split(\"/\");\n component = component || parts[parts.length - 2] || \"\";\n var sep = component == \"snippets\" ? \"/\" : \"-\";\n var base = parts[parts.length - 1];\n if (component == \"worker\" && sep == \"-\") {\n var re = new RegExp(\"^\" + component + \"[\\\\-_]|[\\\\-_]\" + component + \"$\", \"g\");\n base = base.replace(re, \"\");\n }\n if ((!base || base == component) && parts.length > 1)\n base = parts[parts.length - 2];\n var path = options[component + \"Path\"];\n if (path == null) {\n path = options.basePath;\n }\n else if (sep == \"/\") {\n component = sep = \"\";\n }\n if (path && path.slice(-1) != \"/\")\n path += \"/\";\n return path + component + sep + base + this.get(\"suffix\");\n};\nexports.setModuleUrl = function (name, subst) {\n return options.$moduleUrls[name] = subst;\n};\nvar loader = function (moduleName, cb) {\n if (moduleName === \"ace/theme/textmate\" || moduleName === \"./theme/textmate\")\n return cb(null, require(\"./theme/textmate\"));\n if (customLoader)\n return customLoader(moduleName, cb);\n console.error(\"loader is not configured\");\n};\nvar customLoader;\nexports.setLoader = function (cb) {\n customLoader = cb;\n};\nexports.dynamicModules = Object.create(null);\nexports.$loading = {};\nexports.$loaded = {};\nexports.loadModule = function (moduleName, onLoad) {\n var loadedModule, moduleType;\n if (Array.isArray(moduleName)) {\n moduleType = moduleName[0];\n moduleName = moduleName[1];\n }\n var load = function (module) {\n if (module && !exports.$loading[moduleName])\n return onLoad && onLoad(module);\n if (!exports.$loading[moduleName])\n exports.$loading[moduleName] = [];\n exports.$loading[moduleName].push(onLoad);\n if (exports.$loading[moduleName].length > 1)\n return;\n var afterLoad = function () {\n loader(moduleName, function (err, module) {\n if (module)\n exports.$loaded[moduleName] = module;\n exports._emit(\"load.module\", { name: moduleName, module: module });\n var listeners = exports.$loading[moduleName];\n exports.$loading[moduleName] = null;\n listeners.forEach(function (onLoad) {\n onLoad && onLoad(module);\n });\n });\n };\n if (!exports.get(\"packaged\"))\n return afterLoad();\n net.loadScript(exports.moduleUrl(moduleName, moduleType), afterLoad);\n reportErrorIfPathIsNotConfigured();\n };\n if (exports.dynamicModules[moduleName]) {\n exports.dynamicModules[moduleName]().then(function (module) {\n if (module.default) {\n load(module.default);\n }\n else {\n load(module);\n }\n });\n }\n else {\n try {\n loadedModule = this.$require(moduleName);\n }\n catch (e) { }\n load(loadedModule || exports.$loaded[moduleName]);\n }\n};\nexports.$require = function (moduleName) {\n if (typeof module.require == \"function\") {\n var req = \"require\";\n return module[req](moduleName);\n }\n};\nexports.setModuleLoader = function (moduleName, onLoad) {\n exports.dynamicModules[moduleName] = onLoad;\n};\nvar reportErrorIfPathIsNotConfigured = function () {\n if (!options.basePath && !options.workerPath\n && !options.modePath && !options.themePath\n && !Object.keys(options.$moduleUrls).length) {\n console.error(\"Unable to infer path to ace from script src,\", \"use ace.config.set('basePath', 'path') to enable dynamic loading of modes and themes\", \"or with webpack use ace/webpack-resolver\");\n reportErrorIfPathIsNotConfigured = function () { };\n }\n};\nexports.version = \"1.31.2\";\n\n});\n\nace.define(\"ace/loader_build\",[\"require\",\"exports\",\"module\",\"ace/lib/fixoldbrowsers\",\"ace/config\"], function(require, exports, module) {\n\"use strict\";\n\nrequire(\"./lib/fixoldbrowsers\");\nvar config = require(\"./config\");\nconfig.setLoader(function(moduleName, cb) {\n require([moduleName], function(module) {\n cb(null, module);\n });\n});\n\nvar global = (function() {\n return this || typeof window != \"undefined\" && window;\n})();\n\nmodule.exports = function(ace) {\n config.init = init;\n config.$require = require;\n ace.require = require;\n\n if (typeof define === \"function\")\n ace.define = define;\n};\ninit(true);function init(packaged) {\n\n if (!global || !global.document)\n return;\n \n config.set(\"packaged\", packaged || require.packaged || module.packaged || (global.define && define.packaged));\n\n var scriptOptions = {};\n var scriptUrl = \"\";\n var currentScript = (document.currentScript || document._currentScript ); // native or polyfill\n var currentDocument = currentScript && currentScript.ownerDocument || document;\n \n if (currentScript && currentScript.src) {\n scriptUrl = currentScript.src.split(/[?#]/)[0].split(\"/\").slice(0, -1).join(\"/\") || \"\";\n }\n \n var scripts = currentDocument.getElementsByTagName(\"script\");\n for (var i=0; i [\" + this.end.row + \"/\" + this.end.column + \"]\");\n };\n Range.prototype.contains = function (row, column) {\n return this.compare(row, column) == 0;\n };\n Range.prototype.compareRange = function (range) {\n var cmp, end = range.end, start = range.start;\n cmp = this.compare(end.row, end.column);\n if (cmp == 1) {\n cmp = this.compare(start.row, start.column);\n if (cmp == 1) {\n return 2;\n }\n else if (cmp == 0) {\n return 1;\n }\n else {\n return 0;\n }\n }\n else if (cmp == -1) {\n return -2;\n }\n else {\n cmp = this.compare(start.row, start.column);\n if (cmp == -1) {\n return -1;\n }\n else if (cmp == 1) {\n return 42;\n }\n else {\n return 0;\n }\n }\n };\n Range.prototype.comparePoint = function (p) {\n return this.compare(p.row, p.column);\n };\n Range.prototype.containsRange = function (range) {\n return this.comparePoint(range.start) == 0 && this.comparePoint(range.end) == 0;\n };\n Range.prototype.intersects = function (range) {\n var cmp = this.compareRange(range);\n return (cmp == -1 || cmp == 0 || cmp == 1);\n };\n Range.prototype.isEnd = function (row, column) {\n return this.end.row == row && this.end.column == column;\n };\n Range.prototype.isStart = function (row, column) {\n return this.start.row == row && this.start.column == column;\n };\n Range.prototype.setStart = function (row, column) {\n if (typeof row == \"object\") {\n this.start.column = row.column;\n this.start.row = row.row;\n }\n else {\n this.start.row = row;\n this.start.column = column;\n }\n };\n Range.prototype.setEnd = function (row, column) {\n if (typeof row == \"object\") {\n this.end.column = row.column;\n this.end.row = row.row;\n }\n else {\n this.end.row = row;\n this.end.column = column;\n }\n };\n Range.prototype.inside = function (row, column) {\n if (this.compare(row, column) == 0) {\n if (this.isEnd(row, column) || this.isStart(row, column)) {\n return false;\n }\n else {\n return true;\n }\n }\n return false;\n };\n Range.prototype.insideStart = function (row, column) {\n if (this.compare(row, column) == 0) {\n if (this.isEnd(row, column)) {\n return false;\n }\n else {\n return true;\n }\n }\n return false;\n };\n Range.prototype.insideEnd = function (row, column) {\n if (this.compare(row, column) == 0) {\n if (this.isStart(row, column)) {\n return false;\n }\n else {\n return true;\n }\n }\n return false;\n };\n Range.prototype.compare = function (row, column) {\n if (!this.isMultiLine()) {\n if (row === this.start.row) {\n return column < this.start.column ? -1 : (column > this.end.column ? 1 : 0);\n }\n }\n if (row < this.start.row)\n return -1;\n if (row > this.end.row)\n return 1;\n if (this.start.row === row)\n return column >= this.start.column ? 0 : -1;\n if (this.end.row === row)\n return column <= this.end.column ? 0 : 1;\n return 0;\n };\n Range.prototype.compareStart = function (row, column) {\n if (this.start.row == row && this.start.column == column) {\n return -1;\n }\n else {\n return this.compare(row, column);\n }\n };\n Range.prototype.compareEnd = function (row, column) {\n if (this.end.row == row && this.end.column == column) {\n return 1;\n }\n else {\n return this.compare(row, column);\n }\n };\n Range.prototype.compareInside = function (row, column) {\n if (this.end.row == row && this.end.column == column) {\n return 1;\n }\n else if (this.start.row == row && this.start.column == column) {\n return -1;\n }\n else {\n return this.compare(row, column);\n }\n };\n Range.prototype.clipRows = function (firstRow, lastRow) {\n if (this.end.row > lastRow)\n var end = { row: lastRow + 1, column: 0 };\n else if (this.end.row < firstRow)\n var end = { row: firstRow, column: 0 };\n if (this.start.row > lastRow)\n var start = { row: lastRow + 1, column: 0 };\n else if (this.start.row < firstRow)\n var start = { row: firstRow, column: 0 };\n return Range.fromPoints(start || this.start, end || this.end);\n };\n Range.prototype.extend = function (row, column) {\n var cmp = this.compare(row, column);\n if (cmp == 0)\n return this;\n else if (cmp == -1)\n var start = { row: row, column: column };\n else\n var end = { row: row, column: column };\n return Range.fromPoints(start || this.start, end || this.end);\n };\n Range.prototype.isEmpty = function () {\n return (this.start.row === this.end.row && this.start.column === this.end.column);\n };\n Range.prototype.isMultiLine = function () {\n return (this.start.row !== this.end.row);\n };\n Range.prototype.clone = function () {\n return Range.fromPoints(this.start, this.end);\n };\n Range.prototype.collapseRows = function () {\n if (this.end.column == 0)\n return new Range(this.start.row, 0, Math.max(this.start.row, this.end.row - 1), 0);\n else\n return new Range(this.start.row, 0, this.end.row, 0);\n };\n Range.prototype.toScreenRange = function (session) {\n var screenPosStart = session.documentToScreenPosition(this.start);\n var screenPosEnd = session.documentToScreenPosition(this.end);\n return new Range(screenPosStart.row, screenPosStart.column, screenPosEnd.row, screenPosEnd.column);\n };\n Range.prototype.moveBy = function (row, column) {\n this.start.row += row;\n this.start.column += column;\n this.end.row += row;\n this.end.column += column;\n };\n return Range;\n}());\nRange.fromPoints = function (start, end) {\n return new Range(start.row, start.column, end.row, end.column);\n};\nRange.comparePoints = comparePoints;\nRange.comparePoints = function (p1, p2) {\n return p1.row - p2.row || p1.column - p2.column;\n};\nexports.Range = Range;\n\n});\n\nace.define(\"ace/lib/keys\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\"], function(require, exports, module){/*! @license\n==========================================================================\nSproutCore -- JavaScript Application Framework\ncopyright 2006-2009, Sprout Systems Inc., Apple Inc. and contributors.\n\nPermission is hereby granted, free of charge, to any person obtaining a\ncopy of this software and associated documentation files (the \"Software\"),\nto deal in the Software without restriction, including without limitation\nthe rights to use, copy, modify, merge, publish, distribute, sublicense,\nand/or sell copies of the Software, and to permit persons to whom the\nSoftware is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\nFROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n\nSproutCore and the SproutCore logo are trademarks of Sprout Systems, Inc.\n\nFor more information about SproutCore, visit http://www.sproutcore.com\n\n\n==========================================================================\n@license */\n\"use strict\";\nvar oop = require(\"./oop\");\nvar Keys = (function () {\n var ret = {\n MODIFIER_KEYS: {\n 16: 'Shift', 17: 'Ctrl', 18: 'Alt', 224: 'Meta',\n 91: 'MetaLeft', 92: 'MetaRight', 93: 'ContextMenu'\n },\n KEY_MODS: {\n \"ctrl\": 1, \"alt\": 2, \"option\": 2, \"shift\": 4,\n \"super\": 8, \"meta\": 8, \"command\": 8, \"cmd\": 8,\n \"control\": 1\n },\n FUNCTION_KEYS: {\n 8: \"Backspace\",\n 9: \"Tab\",\n 13: \"Return\",\n 19: \"Pause\",\n 27: \"Esc\",\n 32: \"Space\",\n 33: \"PageUp\",\n 34: \"PageDown\",\n 35: \"End\",\n 36: \"Home\",\n 37: \"Left\",\n 38: \"Up\",\n 39: \"Right\",\n 40: \"Down\",\n 44: \"Print\",\n 45: \"Insert\",\n 46: \"Delete\",\n 96: \"Numpad0\",\n 97: \"Numpad1\",\n 98: \"Numpad2\",\n 99: \"Numpad3\",\n 100: \"Numpad4\",\n 101: \"Numpad5\",\n 102: \"Numpad6\",\n 103: \"Numpad7\",\n 104: \"Numpad8\",\n 105: \"Numpad9\",\n '-13': \"NumpadEnter\",\n 112: \"F1\",\n 113: \"F2\",\n 114: \"F3\",\n 115: \"F4\",\n 116: \"F5\",\n 117: \"F6\",\n 118: \"F7\",\n 119: \"F8\",\n 120: \"F9\",\n 121: \"F10\",\n 122: \"F11\",\n 123: \"F12\",\n 144: \"Numlock\",\n 145: \"Scrolllock\"\n },\n PRINTABLE_KEYS: {\n 32: ' ', 48: '0', 49: '1', 50: '2', 51: '3', 52: '4', 53: '5',\n 54: '6', 55: '7', 56: '8', 57: '9', 59: ';', 61: '=', 65: 'a',\n 66: 'b', 67: 'c', 68: 'd', 69: 'e', 70: 'f', 71: 'g', 72: 'h',\n 73: 'i', 74: 'j', 75: 'k', 76: 'l', 77: 'm', 78: 'n', 79: 'o',\n 80: 'p', 81: 'q', 82: 'r', 83: 's', 84: 't', 85: 'u', 86: 'v',\n 87: 'w', 88: 'x', 89: 'y', 90: 'z', 107: '+', 109: '-', 110: '.',\n 186: ';', 187: '=', 188: ',', 189: '-', 190: '.', 191: '/', 192: '`',\n 219: '[', 220: '\\\\', 221: ']', 222: \"'\", 111: '/', 106: '*'\n }\n };\n ret.PRINTABLE_KEYS[173] = '-';\n var name, i;\n for (i in ret.FUNCTION_KEYS) {\n name = ret.FUNCTION_KEYS[i].toLowerCase();\n ret[name] = parseInt(i, 10);\n }\n for (i in ret.PRINTABLE_KEYS) {\n name = ret.PRINTABLE_KEYS[i].toLowerCase();\n ret[name] = parseInt(i, 10);\n }\n oop.mixin(ret, ret.MODIFIER_KEYS);\n oop.mixin(ret, ret.PRINTABLE_KEYS);\n oop.mixin(ret, ret.FUNCTION_KEYS);\n ret.enter = ret[\"return\"];\n ret.escape = ret.esc;\n ret.del = ret[\"delete\"];\n (function () {\n var mods = [\"cmd\", \"ctrl\", \"alt\", \"shift\"];\n for (var i = Math.pow(2, mods.length); i--;) {\n ret.KEY_MODS[i] = mods.filter(function (x) {\n return i & ret.KEY_MODS[x];\n }).join(\"-\") + \"-\";\n }\n })();\n ret.KEY_MODS[0] = \"\";\n ret.KEY_MODS[-1] = \"input-\";\n return ret;\n})();\noop.mixin(exports, Keys);\nexports.default = exports;\nexports.keyCodeToString = function (keyCode) {\n var keyString = Keys[keyCode];\n if (typeof keyString != \"string\")\n keyString = String.fromCharCode(keyCode);\n return keyString.toLowerCase();\n};\n\n});\n\nace.define(\"ace/lib/event\",[\"require\",\"exports\",\"module\",\"ace/lib/keys\",\"ace/lib/useragent\"], function(require, exports, module){\"use strict\";\nvar keys = require(\"./keys\");\nvar useragent = require(\"./useragent\");\nvar pressedKeys = null;\nvar ts = 0;\nvar activeListenerOptions;\nfunction detectListenerOptionsSupport() {\n activeListenerOptions = false;\n try {\n document.createComment(\"\").addEventListener(\"test\", function () { }, {\n get passive() {\n activeListenerOptions = { passive: false };\n }\n });\n }\n catch (e) { }\n}\nfunction getListenerOptions() {\n if (activeListenerOptions == undefined)\n detectListenerOptionsSupport();\n return activeListenerOptions;\n}\nfunction EventListener(elem, type, callback) {\n this.elem = elem;\n this.type = type;\n this.callback = callback;\n}\nEventListener.prototype.destroy = function () {\n removeListener(this.elem, this.type, this.callback);\n this.elem = this.type = this.callback = undefined;\n};\nvar addListener = exports.addListener = function (elem, type, callback, destroyer) {\n elem.addEventListener(type, callback, getListenerOptions());\n if (destroyer)\n destroyer.$toDestroy.push(new EventListener(elem, type, callback));\n};\nvar removeListener = exports.removeListener = function (elem, type, callback) {\n elem.removeEventListener(type, callback, getListenerOptions());\n};\nexports.stopEvent = function (e) {\n exports.stopPropagation(e);\n exports.preventDefault(e);\n return false;\n};\nexports.stopPropagation = function (e) {\n if (e.stopPropagation)\n e.stopPropagation();\n};\nexports.preventDefault = function (e) {\n if (e.preventDefault)\n e.preventDefault();\n};\nexports.getButton = function (e) {\n if (e.type == \"dblclick\")\n return 0;\n if (e.type == \"contextmenu\" || (useragent.isMac && (e.ctrlKey && !e.altKey && !e.shiftKey)))\n return 2;\n return e.button;\n};\nexports.capture = function (el, eventHandler, releaseCaptureHandler) {\n var ownerDocument = el && el.ownerDocument || document;\n function onMouseUp(e) {\n eventHandler && eventHandler(e);\n releaseCaptureHandler && releaseCaptureHandler(e);\n removeListener(ownerDocument, \"mousemove\", eventHandler);\n removeListener(ownerDocument, \"mouseup\", onMouseUp);\n removeListener(ownerDocument, \"dragstart\", onMouseUp);\n }\n addListener(ownerDocument, \"mousemove\", eventHandler);\n addListener(ownerDocument, \"mouseup\", onMouseUp);\n addListener(ownerDocument, \"dragstart\", onMouseUp);\n return onMouseUp;\n};\nexports.addMouseWheelListener = function (el, callback, destroyer) {\n addListener(el, \"wheel\", function (e) {\n var factor = 0.15;\n var deltaX = e.deltaX || 0;\n var deltaY = e.deltaY || 0;\n switch (e.deltaMode) {\n case e.DOM_DELTA_PIXEL:\n e.wheelX = deltaX * factor;\n e.wheelY = deltaY * factor;\n break;\n case e.DOM_DELTA_LINE:\n var linePixels = 15;\n e.wheelX = deltaX * linePixels;\n e.wheelY = deltaY * linePixels;\n break;\n case e.DOM_DELTA_PAGE:\n var pagePixels = 150;\n e.wheelX = deltaX * pagePixels;\n e.wheelY = deltaY * pagePixels;\n break;\n }\n callback(e);\n }, destroyer);\n};\nexports.addMultiMouseDownListener = function (elements, timeouts, eventHandler, callbackName, destroyer) {\n var clicks = 0;\n var startX, startY, timer;\n var eventNames = {\n 2: \"dblclick\",\n 3: \"tripleclick\",\n 4: \"quadclick\"\n };\n function onMousedown(e) {\n if (exports.getButton(e) !== 0) {\n clicks = 0;\n }\n else if (e.detail > 1) {\n clicks++;\n if (clicks > 4)\n clicks = 1;\n }\n else {\n clicks = 1;\n }\n if (useragent.isIE) {\n var isNewClick = Math.abs(e.clientX - startX) > 5 || Math.abs(e.clientY - startY) > 5;\n if (!timer || isNewClick)\n clicks = 1;\n if (timer)\n clearTimeout(timer);\n timer = setTimeout(function () { timer = null; }, timeouts[clicks - 1] || 600);\n if (clicks == 1) {\n startX = e.clientX;\n startY = e.clientY;\n }\n }\n e._clicks = clicks;\n eventHandler[callbackName](\"mousedown\", e);\n if (clicks > 4)\n clicks = 0;\n else if (clicks > 1)\n return eventHandler[callbackName](eventNames[clicks], e);\n }\n if (!Array.isArray(elements))\n elements = [elements];\n elements.forEach(function (el) {\n addListener(el, \"mousedown\", onMousedown, destroyer);\n });\n};\nvar getModifierHash = function (e) {\n return 0 | (e.ctrlKey ? 1 : 0) | (e.altKey ? 2 : 0) | (e.shiftKey ? 4 : 0) | (e.metaKey ? 8 : 0);\n};\nexports.getModifierString = function (e) {\n return keys.KEY_MODS[getModifierHash(e)];\n};\nfunction normalizeCommandKeys(callback, e, keyCode) {\n var hashId = getModifierHash(e);\n if (!useragent.isMac && pressedKeys) {\n if (e.getModifierState && (e.getModifierState(\"OS\") || e.getModifierState(\"Win\")))\n hashId |= 8;\n if (pressedKeys.altGr) {\n if ((3 & hashId) != 3)\n pressedKeys.altGr = 0;\n else\n return;\n }\n if (keyCode === 18 || keyCode === 17) {\n var location = \"location\" in e ? e.location : e.keyLocation;\n if (keyCode === 17 && location === 1) {\n if (pressedKeys[keyCode] == 1)\n ts = e.timeStamp;\n }\n else if (keyCode === 18 && hashId === 3 && location === 2) {\n var dt = e.timeStamp - ts;\n if (dt < 50)\n pressedKeys.altGr = true;\n }\n }\n }\n if (keyCode in keys.MODIFIER_KEYS) {\n keyCode = -1;\n }\n if (!hashId && keyCode === 13) {\n var location = \"location\" in e ? e.location : e.keyLocation;\n if (location === 3) {\n callback(e, hashId, -keyCode);\n if (e.defaultPrevented)\n return;\n }\n }\n if (useragent.isChromeOS && hashId & 8) {\n callback(e, hashId, keyCode);\n if (e.defaultPrevented)\n return;\n else\n hashId &= ~8;\n }\n if (!hashId && !(keyCode in keys.FUNCTION_KEYS) && !(keyCode in keys.PRINTABLE_KEYS)) {\n return false;\n }\n return callback(e, hashId, keyCode);\n}\nexports.addCommandKeyListener = function (el, callback, destroyer) {\n if (useragent.isOldGecko || (useragent.isOpera && !(\"KeyboardEvent\" in window))) {\n var lastKeyDownKeyCode = null;\n addListener(el, \"keydown\", function (e) {\n lastKeyDownKeyCode = e.keyCode;\n }, destroyer);\n addListener(el, \"keypress\", function (e) {\n return normalizeCommandKeys(callback, e, lastKeyDownKeyCode);\n }, destroyer);\n }\n else {\n var lastDefaultPrevented = null;\n addListener(el, \"keydown\", function (e) {\n pressedKeys[e.keyCode] = (pressedKeys[e.keyCode] || 0) + 1;\n var result = normalizeCommandKeys(callback, e, e.keyCode);\n lastDefaultPrevented = e.defaultPrevented;\n return result;\n }, destroyer);\n addListener(el, \"keypress\", function (e) {\n if (lastDefaultPrevented && (e.ctrlKey || e.altKey || e.shiftKey || e.metaKey)) {\n exports.stopEvent(e);\n lastDefaultPrevented = null;\n }\n }, destroyer);\n addListener(el, \"keyup\", function (e) {\n pressedKeys[e.keyCode] = null;\n }, destroyer);\n if (!pressedKeys) {\n resetPressedKeys();\n addListener(window, \"focus\", resetPressedKeys);\n }\n }\n};\nfunction resetPressedKeys() {\n pressedKeys = Object.create(null);\n}\nif (typeof window == \"object\" && window.postMessage && !useragent.isOldIE) {\n var postMessageId = 1;\n exports.nextTick = function (callback, win) {\n win = win || window;\n var messageName = \"zero-timeout-message-\" + (postMessageId++);\n var listener = function (e) {\n if (e.data == messageName) {\n exports.stopPropagation(e);\n removeListener(win, \"message\", listener);\n callback();\n }\n };\n addListener(win, \"message\", listener);\n win.postMessage(messageName, \"*\");\n };\n}\nexports.$idleBlocked = false;\nexports.onIdle = function (cb, timeout) {\n return setTimeout(function handler() {\n if (!exports.$idleBlocked) {\n cb();\n }\n else {\n setTimeout(handler, 100);\n }\n }, timeout);\n};\nexports.$idleBlockId = null;\nexports.blockIdle = function (delay) {\n if (exports.$idleBlockId)\n clearTimeout(exports.$idleBlockId);\n exports.$idleBlocked = true;\n exports.$idleBlockId = setTimeout(function () {\n exports.$idleBlocked = false;\n }, delay || 100);\n};\nexports.nextFrame = typeof window == \"object\" && (window.requestAnimationFrame\n || window.mozRequestAnimationFrame\n || window.webkitRequestAnimationFrame\n || window.msRequestAnimationFrame\n || window.oRequestAnimationFrame);\nif (exports.nextFrame)\n exports.nextFrame = exports.nextFrame.bind(window);\nelse\n exports.nextFrame = function (callback) {\n setTimeout(callback, 17);\n };\n\n});\n\nace.define(\"ace/clipboard\",[\"require\",\"exports\",\"module\"], function(require, exports, module){\"use strict\";\nvar $cancelT;\nmodule.exports = {\n lineMode: false,\n pasteCancelled: function () {\n if ($cancelT && $cancelT > Date.now() - 50)\n return true;\n return $cancelT = false;\n },\n cancel: function () {\n $cancelT = Date.now();\n }\n};\n\n});\n\nace.define(\"ace/keyboard/textinput\",[\"require\",\"exports\",\"module\",\"ace/lib/event\",\"ace/config\",\"ace/lib/useragent\",\"ace/lib/dom\",\"ace/lib/lang\",\"ace/clipboard\",\"ace/lib/keys\"], function(require, exports, module){\"use strict\";\nvar event = require(\"../lib/event\");\nvar nls = require(\"../config\").nls;\nvar useragent = require(\"../lib/useragent\");\nvar dom = require(\"../lib/dom\");\nvar lang = require(\"../lib/lang\");\nvar clipboard = require(\"../clipboard\");\nvar BROKEN_SETDATA = useragent.isChrome < 18;\nvar USE_IE_MIME_TYPE = useragent.isIE;\nvar HAS_FOCUS_ARGS = useragent.isChrome > 63;\nvar MAX_LINE_LENGTH = 400;\nvar KEYS = require(\"../lib/keys\");\nvar MODS = KEYS.KEY_MODS;\nvar isIOS = useragent.isIOS;\nvar valueResetRegex = isIOS ? /\\s/ : /\\n/;\nvar isMobile = useragent.isMobile;\nvar TextInput = function (parentNode, host) {\n var text = dom.createElement(\"textarea\");\n text.className = \"ace_text-input\";\n text.setAttribute(\"wrap\", \"off\");\n text.setAttribute(\"autocorrect\", \"off\");\n text.setAttribute(\"autocapitalize\", \"off\");\n text.setAttribute(\"spellcheck\", false);\n text.style.opacity = \"0\";\n parentNode.insertBefore(text, parentNode.firstChild);\n var copied = false;\n var pasted = false;\n var inComposition = false;\n var sendingText = false;\n var tempStyle = '';\n if (!isMobile)\n text.style.fontSize = \"1px\";\n var commandMode = false;\n var ignoreFocusEvents = false;\n var lastValue = \"\";\n var lastSelectionStart = 0;\n var lastSelectionEnd = 0;\n var lastRestoreEnd = 0;\n var rowStart = Number.MAX_SAFE_INTEGER;\n var rowEnd = Number.MIN_SAFE_INTEGER;\n var numberOfExtraLines = 0;\n try {\n var isFocused = document.activeElement === text;\n }\n catch (e) { }\n this.setNumberOfExtraLines = function (number) {\n rowStart = Number.MAX_SAFE_INTEGER;\n rowEnd = Number.MIN_SAFE_INTEGER;\n if (number < 0) {\n numberOfExtraLines = 0;\n return;\n }\n numberOfExtraLines = number;\n };\n this.setAriaOptions = function (options) {\n if (options.activeDescendant) {\n text.setAttribute(\"aria-haspopup\", \"true\");\n text.setAttribute(\"aria-autocomplete\", options.inline ? \"both\" : \"list\");\n text.setAttribute(\"aria-activedescendant\", options.activeDescendant);\n }\n else {\n text.setAttribute(\"aria-haspopup\", \"false\");\n text.setAttribute(\"aria-autocomplete\", \"both\");\n text.removeAttribute(\"aria-activedescendant\");\n }\n if (options.role) {\n text.setAttribute(\"role\", options.role);\n }\n if (options.setLabel) {\n text.setAttribute(\"aria-roledescription\", nls(\"editor\"));\n if (host.session) {\n var row = host.session.selection.cursor.row;\n text.setAttribute(\"aria-label\", nls(\"Cursor at row $0\", [row + 1]));\n }\n }\n };\n this.setAriaOptions({ role: \"textbox\" });\n event.addListener(text, \"blur\", function (e) {\n if (ignoreFocusEvents)\n return;\n host.onBlur(e);\n isFocused = false;\n }, host);\n event.addListener(text, \"focus\", function (e) {\n if (ignoreFocusEvents)\n return;\n isFocused = true;\n if (useragent.isEdge) {\n try {\n if (!document.hasFocus())\n return;\n }\n catch (e) { }\n }\n host.onFocus(e);\n if (useragent.isEdge)\n setTimeout(resetSelection);\n else\n resetSelection();\n }, host);\n this.$focusScroll = false;\n this.focus = function () {\n this.setAriaOptions({\n setLabel: host.renderer.enableKeyboardAccessibility\n });\n if (tempStyle || HAS_FOCUS_ARGS || this.$focusScroll == \"browser\")\n return text.focus({ preventScroll: true });\n var top = text.style.top;\n text.style.position = \"fixed\";\n text.style.top = \"0px\";\n try {\n var isTransformed = text.getBoundingClientRect().top != 0;\n }\n catch (e) {\n return;\n }\n var ancestors = [];\n if (isTransformed) {\n var t = text.parentElement;\n while (t && t.nodeType == 1) {\n ancestors.push(t);\n t.setAttribute(\"ace_nocontext\", true);\n if (!t.parentElement && t.getRootNode)\n t = t.getRootNode().host;\n else\n t = t.parentElement;\n }\n }\n text.focus({ preventScroll: true });\n if (isTransformed) {\n ancestors.forEach(function (p) {\n p.removeAttribute(\"ace_nocontext\");\n });\n }\n setTimeout(function () {\n text.style.position = \"\";\n if (text.style.top == \"0px\")\n text.style.top = top;\n }, 0);\n };\n this.blur = function () {\n text.blur();\n };\n this.isFocused = function () {\n return isFocused;\n };\n host.on(\"beforeEndOperation\", function () {\n var curOp = host.curOp;\n var commandName = curOp && curOp.command && curOp.command.name;\n if (commandName == \"insertstring\")\n return;\n var isUserAction = commandName && (curOp.docChanged || curOp.selectionChanged);\n if (inComposition && isUserAction) {\n lastValue = text.value = \"\";\n onCompositionEnd();\n }\n resetSelection();\n });\n var positionToSelection = function (row, column) {\n var selection = column;\n for (var i = 1; i <= row - rowStart && i < 2 * numberOfExtraLines + 1; i++) {\n selection += host.session.getLine(row - i).length + 1;\n }\n return selection;\n };\n var resetSelection = isIOS\n ? function (value) {\n if (!isFocused || (copied && !value) || sendingText)\n return;\n if (!value)\n value = \"\";\n var newValue = \"\\n ab\" + value + \"cde fg\\n\";\n if (newValue != text.value)\n text.value = lastValue = newValue;\n var selectionStart = 4;\n var selectionEnd = 4 + (value.length || (host.selection.isEmpty() ? 0 : 1));\n if (lastSelectionStart != selectionStart || lastSelectionEnd != selectionEnd) {\n text.setSelectionRange(selectionStart, selectionEnd);\n }\n lastSelectionStart = selectionStart;\n lastSelectionEnd = selectionEnd;\n }\n : function () {\n if (inComposition || sendingText)\n return;\n if (!isFocused && !afterContextMenu)\n return;\n inComposition = true;\n var selectionStart = 0;\n var selectionEnd = 0;\n var line = \"\";\n if (host.session) {\n var selection = host.selection;\n var range = selection.getRange();\n var row = selection.cursor.row;\n if (row === rowEnd + 1) {\n rowStart = rowEnd + 1;\n rowEnd = rowStart + 2 * numberOfExtraLines;\n }\n else if (row === rowStart - 1) {\n rowEnd = rowStart - 1;\n rowStart = rowEnd - 2 * numberOfExtraLines;\n }\n else if (row < rowStart - 1 || row > rowEnd + 1) {\n rowStart = row > numberOfExtraLines ? row - numberOfExtraLines : 0;\n rowEnd = row > numberOfExtraLines ? row + numberOfExtraLines : 2 * numberOfExtraLines;\n }\n var lines = [];\n for (var i = rowStart; i <= rowEnd; i++) {\n lines.push(host.session.getLine(i));\n }\n line = lines.join('\\n');\n selectionStart = positionToSelection(range.start.row, range.start.column);\n selectionEnd = positionToSelection(range.end.row, range.end.column);\n if (range.start.row < rowStart) {\n var prevLine = host.session.getLine(rowStart - 1);\n selectionStart = range.start.row < rowStart - 1 ? 0 : selectionStart;\n selectionEnd += prevLine.length + 1;\n line = prevLine + \"\\n\" + line;\n }\n else if (range.end.row > rowEnd) {\n var nextLine = host.session.getLine(rowEnd + 1);\n selectionEnd = range.end.row > rowEnd + 1 ? nextLine.length : range.end.column;\n selectionEnd += line.length + 1;\n line = line + \"\\n\" + nextLine;\n }\n else if (isMobile && row > 0) {\n line = \"\\n\" + line;\n selectionEnd += 1;\n selectionStart += 1;\n }\n if (line.length > MAX_LINE_LENGTH) {\n if (selectionStart < MAX_LINE_LENGTH && selectionEnd < MAX_LINE_LENGTH) {\n line = line.slice(0, MAX_LINE_LENGTH);\n }\n else {\n line = \"\\n\";\n if (selectionStart == selectionEnd) {\n selectionStart = selectionEnd = 0;\n }\n else {\n selectionStart = 0;\n selectionEnd = 1;\n }\n }\n }\n var newValue = line + \"\\n\\n\";\n if (newValue != lastValue) {\n text.value = lastValue = newValue;\n lastSelectionStart = lastSelectionEnd = newValue.length;\n }\n }\n if (afterContextMenu) {\n lastSelectionStart = text.selectionStart;\n lastSelectionEnd = text.selectionEnd;\n }\n if (lastSelectionEnd != selectionEnd\n || lastSelectionStart != selectionStart\n || text.selectionEnd != lastSelectionEnd // on ie edge selectionEnd changes silently after the initialization\n ) {\n try {\n text.setSelectionRange(selectionStart, selectionEnd);\n lastSelectionStart = selectionStart;\n lastSelectionEnd = selectionEnd;\n }\n catch (e) { }\n }\n inComposition = false;\n };\n this.resetSelection = resetSelection;\n if (isFocused)\n host.onFocus();\n var isAllSelected = function (text) {\n return text.selectionStart === 0 && text.selectionEnd >= lastValue.length\n && text.value === lastValue && lastValue\n && text.selectionEnd !== lastSelectionEnd;\n };\n var onSelect = function (e) {\n if (inComposition)\n return;\n if (copied) {\n copied = false;\n }\n else if (isAllSelected(text)) {\n host.selectAll();\n resetSelection();\n }\n else if (isMobile && text.selectionStart != lastSelectionStart) {\n resetSelection();\n }\n };\n var inputHandler = null;\n this.setInputHandler = function (cb) { inputHandler = cb; };\n this.getInputHandler = function () { return inputHandler; };\n var afterContextMenu = false;\n var sendText = function (value, fromInput) {\n if (afterContextMenu)\n afterContextMenu = false;\n if (pasted) {\n resetSelection();\n if (value)\n host.onPaste(value);\n pasted = false;\n return \"\";\n }\n else {\n var selectionStart = text.selectionStart;\n var selectionEnd = text.selectionEnd;\n var extendLeft = lastSelectionStart;\n var extendRight = lastValue.length - lastSelectionEnd;\n var inserted = value;\n var restoreStart = value.length - selectionStart;\n var restoreEnd = value.length - selectionEnd;\n var i = 0;\n while (extendLeft > 0 && lastValue[i] == value[i]) {\n i++;\n extendLeft--;\n }\n inserted = inserted.slice(i);\n i = 1;\n while (extendRight > 0 && lastValue.length - i > lastSelectionStart - 1 && lastValue[lastValue.length - i] == value[value.length - i]) {\n i++;\n extendRight--;\n }\n restoreStart -= i - 1;\n restoreEnd -= i - 1;\n var endIndex = inserted.length - i + 1;\n if (endIndex < 0) {\n extendLeft = -endIndex;\n endIndex = 0;\n }\n inserted = inserted.slice(0, endIndex);\n if (!fromInput && !inserted && !restoreStart && !extendLeft && !extendRight && !restoreEnd)\n return \"\";\n sendingText = true;\n var shouldReset = false;\n if (useragent.isAndroid && inserted == \". \") {\n inserted = \" \";\n shouldReset = true;\n }\n if (inserted && !extendLeft && !extendRight && !restoreStart && !restoreEnd || commandMode) {\n host.onTextInput(inserted);\n }\n else {\n host.onTextInput(inserted, {\n extendLeft: extendLeft,\n extendRight: extendRight,\n restoreStart: restoreStart,\n restoreEnd: restoreEnd\n });\n }\n sendingText = false;\n lastValue = value;\n lastSelectionStart = selectionStart;\n lastSelectionEnd = selectionEnd;\n lastRestoreEnd = restoreEnd;\n return shouldReset ? \"\\n\" : inserted;\n }\n };\n var onInput = function (e) {\n if (inComposition)\n return onCompositionUpdate();\n if (e && e.inputType) {\n if (e.inputType == \"historyUndo\")\n return host.execCommand(\"undo\");\n if (e.inputType == \"historyRedo\")\n return host.execCommand(\"redo\");\n }\n var data = text.value;\n var inserted = sendText(data, true);\n if (data.length > MAX_LINE_LENGTH + 100\n || valueResetRegex.test(inserted)\n || isMobile && lastSelectionStart < 1 && lastSelectionStart == lastSelectionEnd) {\n resetSelection();\n }\n };\n var handleClipboardData = function (e, data, forceIEMime) {\n var clipboardData = e.clipboardData || window.clipboardData;\n if (!clipboardData || BROKEN_SETDATA)\n return;\n var mime = USE_IE_MIME_TYPE || forceIEMime ? \"Text\" : \"text/plain\";\n try {\n if (data) {\n return clipboardData.setData(mime, data) !== false;\n }\n else {\n return clipboardData.getData(mime);\n }\n }\n catch (e) {\n if (!forceIEMime)\n return handleClipboardData(e, data, true);\n }\n };\n var doCopy = function (e, isCut) {\n var data = host.getCopyText();\n if (!data)\n return event.preventDefault(e);\n if (handleClipboardData(e, data)) {\n if (isIOS) {\n resetSelection(data);\n copied = data;\n setTimeout(function () {\n copied = false;\n }, 10);\n }\n isCut ? host.onCut() : host.onCopy();\n event.preventDefault(e);\n }\n else {\n copied = true;\n text.value = data;\n text.select();\n setTimeout(function () {\n copied = false;\n resetSelection();\n isCut ? host.onCut() : host.onCopy();\n });\n }\n };\n var onCut = function (e) {\n doCopy(e, true);\n };\n var onCopy = function (e) {\n doCopy(e, false);\n };\n var onPaste = function (e) {\n var data = handleClipboardData(e);\n if (clipboard.pasteCancelled())\n return;\n if (typeof data == \"string\") {\n if (data)\n host.onPaste(data, e);\n if (useragent.isIE)\n setTimeout(resetSelection);\n event.preventDefault(e);\n }\n else {\n text.value = \"\";\n pasted = true;\n }\n };\n event.addCommandKeyListener(text, host.onCommandKey.bind(host), host);\n event.addListener(text, \"select\", onSelect, host);\n event.addListener(text, \"input\", onInput, host);\n event.addListener(text, \"cut\", onCut, host);\n event.addListener(text, \"copy\", onCopy, host);\n event.addListener(text, \"paste\", onPaste, host);\n if (!('oncut' in text) || !('oncopy' in text) || !('onpaste' in text)) {\n event.addListener(parentNode, \"keydown\", function (e) {\n if ((useragent.isMac && !e.metaKey) || !e.ctrlKey)\n return;\n switch (e.keyCode) {\n case 67:\n onCopy(e);\n break;\n case 86:\n onPaste(e);\n break;\n case 88:\n onCut(e);\n break;\n }\n }, host);\n }\n var onCompositionStart = function (e) {\n if (inComposition || !host.onCompositionStart || host.$readOnly)\n return;\n inComposition = {};\n if (commandMode)\n return;\n if (e.data)\n inComposition.useTextareaForIME = false;\n setTimeout(onCompositionUpdate, 0);\n host._signal(\"compositionStart\");\n host.on(\"mousedown\", cancelComposition);\n var range = host.getSelectionRange();\n range.end.row = range.start.row;\n range.end.column = range.start.column;\n inComposition.markerRange = range;\n inComposition.selectionStart = lastSelectionStart;\n host.onCompositionStart(inComposition);\n if (inComposition.useTextareaForIME) {\n lastValue = text.value = \"\";\n lastSelectionStart = 0;\n lastSelectionEnd = 0;\n }\n else {\n if (text.msGetInputContext)\n inComposition.context = text.msGetInputContext();\n if (text.getInputContext)\n inComposition.context = text.getInputContext();\n }\n };\n var onCompositionUpdate = function () {\n if (!inComposition || !host.onCompositionUpdate || host.$readOnly)\n return;\n if (commandMode)\n return cancelComposition();\n if (inComposition.useTextareaForIME) {\n host.onCompositionUpdate(text.value);\n }\n else {\n var data = text.value;\n sendText(data);\n if (inComposition.markerRange) {\n if (inComposition.context) {\n inComposition.markerRange.start.column = inComposition.selectionStart\n = inComposition.context.compositionStartOffset;\n }\n inComposition.markerRange.end.column = inComposition.markerRange.start.column\n + lastSelectionEnd - inComposition.selectionStart + lastRestoreEnd;\n }\n }\n };\n var onCompositionEnd = function (e) {\n if (!host.onCompositionEnd || host.$readOnly)\n return;\n inComposition = false;\n host.onCompositionEnd();\n host.off(\"mousedown\", cancelComposition);\n if (e)\n onInput();\n };\n function cancelComposition() {\n ignoreFocusEvents = true;\n text.blur();\n text.focus();\n ignoreFocusEvents = false;\n }\n var syncComposition = lang.delayedCall(onCompositionUpdate, 50).schedule.bind(null, null);\n function onKeyup(e) {\n if (e.keyCode == 27 && text.value.length < text.selectionStart) {\n if (!inComposition)\n lastValue = text.value;\n lastSelectionStart = lastSelectionEnd = -1;\n resetSelection();\n }\n syncComposition();\n }\n event.addListener(text, \"compositionstart\", onCompositionStart, host);\n event.addListener(text, \"compositionupdate\", onCompositionUpdate, host);\n event.addListener(text, \"keyup\", onKeyup, host);\n event.addListener(text, \"keydown\", syncComposition, host);\n event.addListener(text, \"compositionend\", onCompositionEnd, host);\n this.getElement = function () {\n return text;\n };\n this.setCommandMode = function (value) {\n commandMode = value;\n text.readOnly = false;\n };\n this.setReadOnly = function (readOnly) {\n if (!commandMode)\n text.readOnly = readOnly;\n };\n this.setCopyWithEmptySelection = function (value) {\n };\n this.onContextMenu = function (e) {\n afterContextMenu = true;\n resetSelection();\n host._emit(\"nativecontextmenu\", { target: host, domEvent: e });\n this.moveToMouse(e, true);\n };\n this.moveToMouse = function (e, bringToFront) {\n if (!tempStyle)\n tempStyle = text.style.cssText;\n text.style.cssText = (bringToFront ? \"z-index:100000;\" : \"\")\n + (useragent.isIE ? \"opacity:0.1;\" : \"\")\n + \"text-indent: -\" + (lastSelectionStart + lastSelectionEnd) * host.renderer.characterWidth * 0.5 + \"px;\";\n var rect = host.container.getBoundingClientRect();\n var style = dom.computedStyle(host.container);\n var top = rect.top + (parseInt(style.borderTopWidth) || 0);\n var left = rect.left + (parseInt(rect.borderLeftWidth) || 0);\n var maxTop = rect.bottom - top - text.clientHeight - 2;\n var move = function (e) {\n dom.translate(text, e.clientX - left - 2, Math.min(e.clientY - top - 2, maxTop));\n };\n move(e);\n if (e.type != \"mousedown\")\n return;\n host.renderer.$isMousePressed = true;\n clearTimeout(closeTimeout);\n if (useragent.isWin)\n event.capture(host.container, move, onContextMenuClose);\n };\n this.onContextMenuClose = onContextMenuClose;\n var closeTimeout;\n function onContextMenuClose() {\n clearTimeout(closeTimeout);\n closeTimeout = setTimeout(function () {\n if (tempStyle) {\n text.style.cssText = tempStyle;\n tempStyle = '';\n }\n host.renderer.$isMousePressed = false;\n if (host.renderer.$keepTextAreaAtCursor)\n host.renderer.$moveTextAreaToCursor();\n }, 0);\n }\n var onContextMenu = function (e) {\n host.textInput.onContextMenu(e);\n onContextMenuClose();\n };\n event.addListener(text, \"mouseup\", onContextMenu, host);\n event.addListener(text, \"mousedown\", function (e) {\n e.preventDefault();\n onContextMenuClose();\n }, host);\n event.addListener(host.renderer.scroller, \"contextmenu\", onContextMenu, host);\n event.addListener(text, \"contextmenu\", onContextMenu, host);\n if (isIOS)\n addIosSelectionHandler(parentNode, host, text);\n function addIosSelectionHandler(parentNode, host, text) {\n var typingResetTimeout = null;\n var typing = false;\n text.addEventListener(\"keydown\", function (e) {\n if (typingResetTimeout)\n clearTimeout(typingResetTimeout);\n typing = true;\n }, true);\n text.addEventListener(\"keyup\", function (e) {\n typingResetTimeout = setTimeout(function () {\n typing = false;\n }, 100);\n }, true);\n var detectArrowKeys = function (e) {\n if (document.activeElement !== text)\n return;\n if (typing || inComposition || host.$mouseHandler.isMousePressed)\n return;\n if (copied) {\n return;\n }\n var selectionStart = text.selectionStart;\n var selectionEnd = text.selectionEnd;\n var key = null;\n var modifier = 0;\n if (selectionStart == 0) {\n key = KEYS.up;\n }\n else if (selectionStart == 1) {\n key = KEYS.home;\n }\n else if (selectionEnd > lastSelectionEnd && lastValue[selectionEnd] == \"\\n\") {\n key = KEYS.end;\n }\n else if (selectionStart < lastSelectionStart && lastValue[selectionStart - 1] == \" \") {\n key = KEYS.left;\n modifier = MODS.option;\n }\n else if (selectionStart < lastSelectionStart\n || (selectionStart == lastSelectionStart\n && lastSelectionEnd != lastSelectionStart\n && selectionStart == selectionEnd)) {\n key = KEYS.left;\n }\n else if (selectionEnd > lastSelectionEnd && lastValue.slice(0, selectionEnd).split(\"\\n\").length > 2) {\n key = KEYS.down;\n }\n else if (selectionEnd > lastSelectionEnd && lastValue[selectionEnd - 1] == \" \") {\n key = KEYS.right;\n modifier = MODS.option;\n }\n else if (selectionEnd > lastSelectionEnd\n || (selectionEnd == lastSelectionEnd\n && lastSelectionEnd != lastSelectionStart\n && selectionStart == selectionEnd)) {\n key = KEYS.right;\n }\n if (selectionStart !== selectionEnd)\n modifier |= MODS.shift;\n if (key) {\n var result = host.onCommandKey({}, modifier, key);\n if (!result && host.commands) {\n key = KEYS.keyCodeToString(key);\n var command = host.commands.findKeyCommand(modifier, key);\n if (command)\n host.execCommand(command);\n }\n lastSelectionStart = selectionStart;\n lastSelectionEnd = selectionEnd;\n resetSelection(\"\");\n }\n };\n document.addEventListener(\"selectionchange\", detectArrowKeys);\n host.on(\"destroy\", function () {\n document.removeEventListener(\"selectionchange\", detectArrowKeys);\n });\n }\n this.destroy = function () {\n if (text.parentElement)\n text.parentElement.removeChild(text);\n };\n};\nexports.TextInput = TextInput;\nexports.$setUserAgentForTests = function (_isMobile, _isIOS) {\n isMobile = _isMobile;\n isIOS = _isIOS;\n};\n\n});\n\nace.define(\"ace/mouse/default_handlers\",[\"require\",\"exports\",\"module\",\"ace/lib/useragent\"], function(require, exports, module){\"use strict\";\nvar useragent = require(\"../lib/useragent\");\nvar DRAG_OFFSET = 0; // pixels\nvar SCROLL_COOLDOWN_T = 550; // milliseconds\nvar DefaultHandlers = /** @class */ (function () {\n function DefaultHandlers(mouseHandler) {\n mouseHandler.$clickSelection = null;\n var editor = mouseHandler.editor;\n editor.setDefaultHandler(\"mousedown\", this.onMouseDown.bind(mouseHandler));\n editor.setDefaultHandler(\"dblclick\", this.onDoubleClick.bind(mouseHandler));\n editor.setDefaultHandler(\"tripleclick\", this.onTripleClick.bind(mouseHandler));\n editor.setDefaultHandler(\"quadclick\", this.onQuadClick.bind(mouseHandler));\n editor.setDefaultHandler(\"mousewheel\", this.onMouseWheel.bind(mouseHandler));\n var exports = [\"select\", \"startSelect\", \"selectEnd\", \"selectAllEnd\", \"selectByWordsEnd\",\n \"selectByLinesEnd\", \"dragWait\", \"dragWaitEnd\", \"focusWait\"];\n exports.forEach(function (x) {\n mouseHandler[x] = this[x];\n }, this);\n mouseHandler.selectByLines = this.extendSelectionBy.bind(mouseHandler, \"getLineRange\");\n mouseHandler.selectByWords = this.extendSelectionBy.bind(mouseHandler, \"getWordRange\");\n }\n DefaultHandlers.prototype.onMouseDown = function (ev) {\n var inSelection = ev.inSelection();\n var pos = ev.getDocumentPosition();\n this.mousedownEvent = ev;\n var editor = this.editor;\n var button = ev.getButton();\n if (button !== 0) {\n var selectionRange = editor.getSelectionRange();\n var selectionEmpty = selectionRange.isEmpty();\n if (selectionEmpty || button == 1)\n editor.selection.moveToPosition(pos);\n if (button == 2) {\n editor.textInput.onContextMenu(ev.domEvent);\n if (!useragent.isMozilla)\n ev.preventDefault();\n }\n return;\n }\n this.mousedownEvent.time = Date.now();\n if (inSelection && !editor.isFocused()) {\n editor.focus();\n if (this.$focusTimeout && !this.$clickSelection && !editor.inMultiSelectMode) {\n this.setState(\"focusWait\");\n this.captureMouse(ev);\n return;\n }\n }\n this.captureMouse(ev);\n this.startSelect(pos, ev.domEvent._clicks > 1);\n return ev.preventDefault();\n };\n DefaultHandlers.prototype.startSelect = function (pos, waitForClickSelection) {\n pos = pos || this.editor.renderer.screenToTextCoordinates(this.x, this.y);\n var editor = this.editor;\n if (!this.mousedownEvent)\n return;\n if (this.mousedownEvent.getShiftKey())\n editor.selection.selectToPosition(pos);\n else if (!waitForClickSelection)\n editor.selection.moveToPosition(pos);\n if (!waitForClickSelection)\n this.select();\n editor.setStyle(\"ace_selecting\");\n this.setState(\"select\");\n };\n DefaultHandlers.prototype.select = function () {\n var anchor, editor = this.editor;\n var cursor = editor.renderer.screenToTextCoordinates(this.x, this.y);\n if (this.$clickSelection) {\n var cmp = this.$clickSelection.comparePoint(cursor);\n if (cmp == -1) {\n anchor = this.$clickSelection.end;\n }\n else if (cmp == 1) {\n anchor = this.$clickSelection.start;\n }\n else {\n var orientedRange = calcRangeOrientation(this.$clickSelection, cursor);\n cursor = orientedRange.cursor;\n anchor = orientedRange.anchor;\n }\n editor.selection.setSelectionAnchor(anchor.row, anchor.column);\n }\n editor.selection.selectToPosition(cursor);\n editor.renderer.scrollCursorIntoView();\n };\n DefaultHandlers.prototype.extendSelectionBy = function (unitName) {\n var anchor, editor = this.editor;\n var cursor = editor.renderer.screenToTextCoordinates(this.x, this.y);\n var range = editor.selection[unitName](cursor.row, cursor.column);\n if (this.$clickSelection) {\n var cmpStart = this.$clickSelection.comparePoint(range.start);\n var cmpEnd = this.$clickSelection.comparePoint(range.end);\n if (cmpStart == -1 && cmpEnd <= 0) {\n anchor = this.$clickSelection.end;\n if (range.end.row != cursor.row || range.end.column != cursor.column)\n cursor = range.start;\n }\n else if (cmpEnd == 1 && cmpStart >= 0) {\n anchor = this.$clickSelection.start;\n if (range.start.row != cursor.row || range.start.column != cursor.column)\n cursor = range.end;\n }\n else if (cmpStart == -1 && cmpEnd == 1) {\n cursor = range.end;\n anchor = range.start;\n }\n else {\n var orientedRange = calcRangeOrientation(this.$clickSelection, cursor);\n cursor = orientedRange.cursor;\n anchor = orientedRange.anchor;\n }\n editor.selection.setSelectionAnchor(anchor.row, anchor.column);\n }\n editor.selection.selectToPosition(cursor);\n editor.renderer.scrollCursorIntoView();\n };\n DefaultHandlers.prototype.selectByLinesEnd = function () {\n this.$clickSelection = null;\n this.editor.unsetStyle(\"ace_selecting\");\n };\n DefaultHandlers.prototype.focusWait = function () {\n var distance = calcDistance(this.mousedownEvent.x, this.mousedownEvent.y, this.x, this.y);\n var time = Date.now();\n if (distance > DRAG_OFFSET || time - this.mousedownEvent.time > this.$focusTimeout)\n this.startSelect(this.mousedownEvent.getDocumentPosition());\n };\n DefaultHandlers.prototype.onDoubleClick = function (ev) {\n var pos = ev.getDocumentPosition();\n var editor = this.editor;\n var session = editor.session;\n var range = session.getBracketRange(pos);\n if (range) {\n if (range.isEmpty()) {\n range.start.column--;\n range.end.column++;\n }\n this.setState(\"select\");\n }\n else {\n range = editor.selection.getWordRange(pos.row, pos.column);\n this.setState(\"selectByWords\");\n }\n this.$clickSelection = range;\n this.select();\n };\n DefaultHandlers.prototype.onTripleClick = function (ev) {\n var pos = ev.getDocumentPosition();\n var editor = this.editor;\n this.setState(\"selectByLines\");\n var range = editor.getSelectionRange();\n if (range.isMultiLine() && range.contains(pos.row, pos.column)) {\n this.$clickSelection = editor.selection.getLineRange(range.start.row);\n this.$clickSelection.end = editor.selection.getLineRange(range.end.row).end;\n }\n else {\n this.$clickSelection = editor.selection.getLineRange(pos.row);\n }\n this.select();\n };\n DefaultHandlers.prototype.onQuadClick = function (ev) {\n var editor = this.editor;\n editor.selectAll();\n this.$clickSelection = editor.getSelectionRange();\n this.setState(\"selectAll\");\n };\n DefaultHandlers.prototype.onMouseWheel = function (ev) {\n if (ev.getAccelKey())\n return;\n if (ev.getShiftKey() && ev.wheelY && !ev.wheelX) {\n ev.wheelX = ev.wheelY;\n ev.wheelY = 0;\n }\n var editor = this.editor;\n if (!this.$lastScroll)\n this.$lastScroll = { t: 0, vx: 0, vy: 0, allowed: 0 };\n var prevScroll = this.$lastScroll;\n var t = ev.domEvent.timeStamp;\n var dt = t - prevScroll.t;\n var vx = dt ? ev.wheelX / dt : prevScroll.vx;\n var vy = dt ? ev.wheelY / dt : prevScroll.vy;\n if (dt < SCROLL_COOLDOWN_T) {\n vx = (vx + prevScroll.vx) / 2;\n vy = (vy + prevScroll.vy) / 2;\n }\n var direction = Math.abs(vx / vy);\n var canScroll = false;\n if (direction >= 1 && editor.renderer.isScrollableBy(ev.wheelX * ev.speed, 0))\n canScroll = true;\n if (direction <= 1 && editor.renderer.isScrollableBy(0, ev.wheelY * ev.speed))\n canScroll = true;\n if (canScroll) {\n prevScroll.allowed = t;\n }\n else if (t - prevScroll.allowed < SCROLL_COOLDOWN_T) {\n var isSlower = Math.abs(vx) <= 1.5 * Math.abs(prevScroll.vx)\n && Math.abs(vy) <= 1.5 * Math.abs(prevScroll.vy);\n if (isSlower) {\n canScroll = true;\n prevScroll.allowed = t;\n }\n else {\n prevScroll.allowed = 0;\n }\n }\n prevScroll.t = t;\n prevScroll.vx = vx;\n prevScroll.vy = vy;\n if (canScroll) {\n editor.renderer.scrollBy(ev.wheelX * ev.speed, ev.wheelY * ev.speed);\n return ev.stop();\n }\n };\n return DefaultHandlers;\n}());\nDefaultHandlers.prototype.selectEnd = DefaultHandlers.prototype.selectByLinesEnd;\nDefaultHandlers.prototype.selectAllEnd = DefaultHandlers.prototype.selectByLinesEnd;\nDefaultHandlers.prototype.selectByWordsEnd = DefaultHandlers.prototype.selectByLinesEnd;\nexports.DefaultHandlers = DefaultHandlers;\nfunction calcDistance(ax, ay, bx, by) {\n return Math.sqrt(Math.pow(bx - ax, 2) + Math.pow(by - ay, 2));\n}\nfunction calcRangeOrientation(range, cursor) {\n if (range.start.row == range.end.row)\n var cmp = 2 * cursor.column - range.start.column - range.end.column;\n else if (range.start.row == range.end.row - 1 && !range.start.column && !range.end.column)\n var cmp = cursor.column - 4;\n else\n var cmp = 2 * cursor.row - range.start.row - range.end.row;\n if (cmp < 0)\n return { cursor: range.start, anchor: range.end };\n else\n return { cursor: range.end, anchor: range.start };\n}\n\n});\n\nace.define(\"ace/tooltip\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar dom = require(\"./lib/dom\");\nvar Range = require(\"./range\").Range;\nvar CLASSNAME = \"ace_tooltip\";\nvar Tooltip = /** @class */ (function () {\n function Tooltip(parentNode) {\n this.isOpen = false;\n this.$element = null;\n this.$parentNode = parentNode;\n }\n Tooltip.prototype.$init = function () {\n this.$element = dom.createElement(\"div\");\n this.$element.className = CLASSNAME;\n this.$element.style.display = \"none\";\n this.$parentNode.appendChild(this.$element);\n return this.$element;\n };\n Tooltip.prototype.getElement = function () {\n return this.$element || this.$init();\n };\n Tooltip.prototype.setText = function (text) {\n this.getElement().textContent = text;\n };\n Tooltip.prototype.setHtml = function (html) {\n this.getElement().innerHTML = html;\n };\n Tooltip.prototype.setPosition = function (x, y) {\n this.getElement().style.left = x + \"px\";\n this.getElement().style.top = y + \"px\";\n };\n Tooltip.prototype.setClassName = function (className) {\n dom.addCssClass(this.getElement(), className);\n };\n Tooltip.prototype.setTheme = function (theme) {\n this.$element.className = CLASSNAME + \" \" +\n (theme.isDark ? \"ace_dark \" : \"\") + (theme.cssClass || \"\");\n };\n Tooltip.prototype.show = function (text, x, y) {\n if (text != null)\n this.setText(text);\n if (x != null && y != null)\n this.setPosition(x, y);\n if (!this.isOpen) {\n this.getElement().style.display = \"block\";\n this.isOpen = true;\n }\n };\n Tooltip.prototype.hide = function () {\n if (this.isOpen) {\n this.getElement().style.display = \"none\";\n this.getElement().className = CLASSNAME;\n this.isOpen = false;\n }\n };\n Tooltip.prototype.getHeight = function () {\n return this.getElement().offsetHeight;\n };\n Tooltip.prototype.getWidth = function () {\n return this.getElement().offsetWidth;\n };\n Tooltip.prototype.destroy = function () {\n this.isOpen = false;\n if (this.$element && this.$element.parentNode) {\n this.$element.parentNode.removeChild(this.$element);\n }\n };\n return Tooltip;\n}());\nvar PopupManager = /** @class */ (function () {\n function PopupManager() {\n this.popups = [];\n }\n PopupManager.prototype.addPopup = function (popup) {\n this.popups.push(popup);\n this.updatePopups();\n };\n PopupManager.prototype.removePopup = function (popup) {\n var index = this.popups.indexOf(popup);\n if (index !== -1) {\n this.popups.splice(index, 1);\n this.updatePopups();\n }\n };\n PopupManager.prototype.updatePopups = function () {\n var e_1, _a, e_2, _b;\n this.popups.sort(function (a, b) { return b.priority - a.priority; });\n var visiblepopups = [];\n try {\n for (var _c = __values(this.popups), _d = _c.next(); !_d.done; _d = _c.next()) {\n var popup = _d.value;\n var shouldDisplay = true;\n try {\n for (var visiblepopups_1 = (e_2 = void 0, __values(visiblepopups)), visiblepopups_1_1 = visiblepopups_1.next(); !visiblepopups_1_1.done; visiblepopups_1_1 = visiblepopups_1.next()) {\n var visiblePopup = visiblepopups_1_1.value;\n if (this.doPopupsOverlap(visiblePopup, popup)) {\n shouldDisplay = false;\n break;\n }\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (visiblepopups_1_1 && !visiblepopups_1_1.done && (_b = visiblepopups_1.return)) _b.call(visiblepopups_1);\n }\n finally { if (e_2) throw e_2.error; }\n }\n if (shouldDisplay) {\n visiblepopups.push(popup);\n }\n else {\n popup.hide();\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_d && !_d.done && (_a = _c.return)) _a.call(_c);\n }\n finally { if (e_1) throw e_1.error; }\n }\n };\n PopupManager.prototype.doPopupsOverlap = function (popupA, popupB) {\n var rectA = popupA.getElement().getBoundingClientRect();\n var rectB = popupB.getElement().getBoundingClientRect();\n return (rectA.left < rectB.right && rectA.right > rectB.left && rectA.top < rectB.bottom && rectA.bottom\n > rectB.top);\n };\n return PopupManager;\n}());\nvar popupManager = new PopupManager();\nexports.popupManager = popupManager;\nexports.Tooltip = Tooltip;\nvar HoverTooltip = /** @class */ (function (_super) {\n __extends(HoverTooltip, _super);\n function HoverTooltip(parentNode) {\n if (parentNode === void 0) { parentNode = document.body; }\n var _this = _super.call(this, parentNode) || this;\n _this.timeout = undefined;\n _this.lastT = 0;\n _this.idleTime = 350;\n _this.lastEvent = undefined;\n _this.onMouseOut = _this.onMouseOut.bind(_this);\n _this.onMouseMove = _this.onMouseMove.bind(_this);\n _this.waitForHover = _this.waitForHover.bind(_this);\n _this.hide = _this.hide.bind(_this);\n var el = _this.getElement();\n el.style.whiteSpace = \"pre-wrap\";\n el.style.pointerEvents = \"auto\";\n el.addEventListener(\"mouseout\", _this.onMouseOut);\n el.tabIndex = -1;\n el.addEventListener(\"blur\", function () {\n if (!el.contains(document.activeElement))\n this.hide();\n }.bind(_this));\n return _this;\n }\n HoverTooltip.prototype.addToEditor = function (editor) {\n editor.on(\"mousemove\", this.onMouseMove);\n editor.on(\"mousedown\", this.hide);\n editor.renderer.getMouseEventTarget().addEventListener(\"mouseout\", this.onMouseOut, true);\n };\n HoverTooltip.prototype.removeFromEditor = function (editor) {\n editor.off(\"mousemove\", this.onMouseMove);\n editor.off(\"mousedown\", this.hide);\n editor.renderer.getMouseEventTarget().removeEventListener(\"mouseout\", this.onMouseOut, true);\n if (this.timeout) {\n clearTimeout(this.timeout);\n this.timeout = null;\n }\n };\n HoverTooltip.prototype.onMouseMove = function (e, editor) {\n this.lastEvent = e;\n this.lastT = Date.now();\n var isMousePressed = editor.$mouseHandler.isMousePressed;\n if (this.isOpen) {\n var pos = this.lastEvent && this.lastEvent.getDocumentPosition();\n if (!this.range\n || !this.range.contains(pos.row, pos.column)\n || isMousePressed\n || this.isOutsideOfText(this.lastEvent)) {\n this.hide();\n }\n }\n if (this.timeout || isMousePressed)\n return;\n this.lastEvent = e;\n this.timeout = setTimeout(this.waitForHover, this.idleTime);\n };\n HoverTooltip.prototype.waitForHover = function () {\n if (this.timeout)\n clearTimeout(this.timeout);\n var dt = Date.now() - this.lastT;\n if (this.idleTime - dt > 10) {\n this.timeout = setTimeout(this.waitForHover, this.idleTime - dt);\n return;\n }\n this.timeout = null;\n if (this.lastEvent && !this.isOutsideOfText(this.lastEvent)) {\n this.$gatherData(this.lastEvent, this.lastEvent.editor);\n }\n };\n HoverTooltip.prototype.isOutsideOfText = function (e) {\n var editor = e.editor;\n var docPos = e.getDocumentPosition();\n var line = editor.session.getLine(docPos.row);\n if (docPos.column == line.length) {\n var screenPos = editor.renderer.pixelToScreenCoordinates(e.clientX, e.clientY);\n var clippedPos = editor.session.documentToScreenPosition(docPos.row, docPos.column);\n if (clippedPos.column != screenPos.column\n || clippedPos.row != screenPos.row) {\n return true;\n }\n }\n return false;\n };\n HoverTooltip.prototype.setDataProvider = function (value) {\n this.$gatherData = value;\n };\n HoverTooltip.prototype.showForRange = function (editor, range, domNode, startingEvent) {\n if (startingEvent && startingEvent != this.lastEvent)\n return;\n if (this.isOpen && document.activeElement == this.getElement())\n return;\n var renderer = editor.renderer;\n if (!this.isOpen) {\n popupManager.addPopup(this);\n this.$registerCloseEvents();\n this.setTheme(renderer.theme);\n }\n this.isOpen = true;\n this.addMarker(range, editor.session);\n this.range = Range.fromPoints(range.start, range.end);\n var element = this.getElement();\n element.innerHTML = \"\";\n element.appendChild(domNode);\n element.style.display = \"block\";\n var position = renderer.textToScreenCoordinates(range.start.row, range.start.column);\n var labelHeight = element.clientHeight;\n var rect = renderer.scroller.getBoundingClientRect();\n var isAbove = true;\n if (position.pageY - labelHeight < 0) {\n isAbove = false;\n }\n if (isAbove) {\n position.pageY -= labelHeight;\n }\n else {\n position.pageY += renderer.lineHeight;\n }\n element.style.maxWidth = rect.width - (position.pageX - rect.left) + \"px\";\n this.setPosition(position.pageX, position.pageY);\n };\n HoverTooltip.prototype.addMarker = function (range, session) {\n if (this.marker) {\n this.$markerSession.removeMarker(this.marker);\n }\n this.$markerSession = session;\n this.marker = session && session.addMarker(range, \"ace_highlight-marker\", \"text\");\n };\n HoverTooltip.prototype.hide = function (e) {\n if (!e && document.activeElement == this.getElement())\n return;\n if (e && e.target && (e.type != \"keydown\" || e.ctrlKey || e.metaKey) && this.$element.contains(e.target))\n return;\n this.lastEvent = null;\n if (this.timeout)\n clearTimeout(this.timeout);\n this.timeout = null;\n this.addMarker(null);\n if (this.isOpen) {\n this.$removeCloseEvents();\n this.getElement().style.display = \"none\";\n this.isOpen = false;\n popupManager.removePopup(this);\n }\n };\n HoverTooltip.prototype.$registerCloseEvents = function () {\n window.addEventListener(\"keydown\", this.hide, true);\n window.addEventListener(\"mousewheel\", this.hide, true);\n window.addEventListener(\"mousedown\", this.hide, true);\n };\n HoverTooltip.prototype.$removeCloseEvents = function () {\n window.removeEventListener(\"keydown\", this.hide, true);\n window.removeEventListener(\"mousewheel\", this.hide, true);\n window.removeEventListener(\"mousedown\", this.hide, true);\n };\n HoverTooltip.prototype.onMouseOut = function (e) {\n if (this.timeout) {\n clearTimeout(this.timeout);\n this.timeout = null;\n }\n this.lastEvent = null;\n if (!this.isOpen)\n return;\n if (!e.relatedTarget || e.relatedTarget == this.getElement())\n return;\n if (e && e.currentTarget.contains(e.relatedTarget))\n return;\n if (!e.relatedTarget.classList.contains(\"ace_content\"))\n this.hide();\n };\n return HoverTooltip;\n}(Tooltip));\nexports.HoverTooltip = HoverTooltip;\n\n});\n\nace.define(\"ace/mouse/default_gutter_handler\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\",\"ace/lib/event\",\"ace/tooltip\",\"ace/config\"], function(require, exports, module){\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar dom = require(\"../lib/dom\");\nvar event = require(\"../lib/event\");\nvar Tooltip = require(\"../tooltip\").Tooltip;\nvar nls = require(\"../config\").nls;\nfunction GutterHandler(mouseHandler) {\n var editor = mouseHandler.editor;\n var gutter = editor.renderer.$gutterLayer;\n var tooltip = new GutterTooltip(editor);\n mouseHandler.editor.setDefaultHandler(\"guttermousedown\", function (e) {\n if (!editor.isFocused() || e.getButton() != 0)\n return;\n var gutterRegion = gutter.getRegion(e);\n if (gutterRegion == \"foldWidgets\")\n return;\n var row = e.getDocumentPosition().row;\n var selection = editor.session.selection;\n if (e.getShiftKey())\n selection.selectTo(row, 0);\n else {\n if (e.domEvent.detail == 2) {\n editor.selectAll();\n return e.preventDefault();\n }\n mouseHandler.$clickSelection = editor.selection.getLineRange(row);\n }\n mouseHandler.setState(\"selectByLines\");\n mouseHandler.captureMouse(e);\n return e.preventDefault();\n });\n var tooltipTimeout, mouseEvent;\n function showTooltip() {\n var row = mouseEvent.getDocumentPosition().row;\n var maxRow = editor.session.getLength();\n if (row == maxRow) {\n var screenRow = editor.renderer.pixelToScreenCoordinates(0, mouseEvent.y).row;\n var pos = mouseEvent.$pos;\n if (screenRow > editor.session.documentToScreenRow(pos.row, pos.column))\n return hideTooltip();\n }\n tooltip.showTooltip(row);\n if (!tooltip.isOpen)\n return;\n editor.on(\"mousewheel\", hideTooltip);\n if (mouseHandler.$tooltipFollowsMouse) {\n moveTooltip(mouseEvent);\n }\n else {\n var gutterRow = mouseEvent.getGutterRow();\n var gutterCell = gutter.$lines.get(gutterRow);\n if (gutterCell) {\n var gutterElement = gutterCell.element.querySelector(\".ace_gutter_annotation\");\n var rect = gutterElement.getBoundingClientRect();\n var style = tooltip.getElement().style;\n style.left = rect.right + \"px\";\n style.top = rect.bottom + \"px\";\n }\n else {\n moveTooltip(mouseEvent);\n }\n }\n }\n function hideTooltip() {\n if (tooltipTimeout)\n tooltipTimeout = clearTimeout(tooltipTimeout);\n if (tooltip.isOpen) {\n tooltip.hideTooltip();\n editor.off(\"mousewheel\", hideTooltip);\n }\n }\n function moveTooltip(e) {\n tooltip.setPosition(e.x, e.y);\n }\n mouseHandler.editor.setDefaultHandler(\"guttermousemove\", function (e) {\n var target = e.domEvent.target || e.domEvent.srcElement;\n if (dom.hasCssClass(target, \"ace_fold-widget\"))\n return hideTooltip();\n if (tooltip.isOpen && mouseHandler.$tooltipFollowsMouse)\n moveTooltip(e);\n mouseEvent = e;\n if (tooltipTimeout)\n return;\n tooltipTimeout = setTimeout(function () {\n tooltipTimeout = null;\n if (mouseEvent && !mouseHandler.isMousePressed)\n showTooltip();\n else\n hideTooltip();\n }, 50);\n });\n event.addListener(editor.renderer.$gutter, \"mouseout\", function (e) {\n mouseEvent = null;\n if (!tooltip.isOpen || tooltipTimeout)\n return;\n tooltipTimeout = setTimeout(function () {\n tooltipTimeout = null;\n hideTooltip();\n }, 50);\n }, editor);\n editor.on(\"changeSession\", hideTooltip);\n editor.on(\"input\", hideTooltip);\n}\nexports.GutterHandler = GutterHandler;\nvar GutterTooltip = /** @class */ (function (_super) {\n __extends(GutterTooltip, _super);\n function GutterTooltip(editor) {\n var _this = _super.call(this, editor.container) || this;\n _this.editor = editor;\n return _this;\n }\n GutterTooltip.prototype.setPosition = function (x, y) {\n var windowWidth = window.innerWidth || document.documentElement.clientWidth;\n var windowHeight = window.innerHeight || document.documentElement.clientHeight;\n var width = this.getWidth();\n var height = this.getHeight();\n x += 15;\n y += 15;\n if (x + width > windowWidth) {\n x -= (x + width) - windowWidth;\n }\n if (y + height > windowHeight) {\n y -= 20 + height;\n }\n Tooltip.prototype.setPosition.call(this, x, y);\n };\n Object.defineProperty(GutterTooltip, \"annotationLabels\", {\n get: function () {\n return {\n error: { singular: nls(\"error\"), plural: nls(\"errors\") },\n warning: { singular: nls(\"warning\"), plural: nls(\"warnings\") },\n info: { singular: nls(\"information message\"), plural: nls(\"information messages\") }\n };\n },\n enumerable: false,\n configurable: true\n });\n GutterTooltip.prototype.showTooltip = function (row) {\n var gutter = this.editor.renderer.$gutterLayer;\n var annotationsInRow = gutter.$annotations[row];\n var annotation;\n if (annotationsInRow)\n annotation = { text: Array.from(annotationsInRow.text), type: Array.from(annotationsInRow.type) };\n else\n annotation = { text: [], type: [] };\n var fold = gutter.session.getFoldLine(row);\n if (fold && gutter.$showFoldedAnnotations) {\n var annotationsInFold = { error: [], warning: [], info: [] };\n var mostSevereAnnotationInFoldType;\n for (var i = row + 1; i <= fold.end.row; i++) {\n if (!gutter.$annotations[i])\n continue;\n for (var j = 0; j < gutter.$annotations[i].text.length; j++) {\n var annotationType = gutter.$annotations[i].type[j];\n annotationsInFold[annotationType].push(gutter.$annotations[i].text[j]);\n if (annotationType === \"error\") {\n mostSevereAnnotationInFoldType = \"error_fold\";\n continue;\n }\n if (annotationType === \"warning\") {\n mostSevereAnnotationInFoldType = \"warning_fold\";\n continue;\n }\n }\n }\n if (mostSevereAnnotationInFoldType === \"error_fold\" || mostSevereAnnotationInFoldType === \"warning_fold\") {\n var summaryFoldedAnnotations = \"\".concat(GutterTooltip.annotationsToSummaryString(annotationsInFold), \" in folded code.\");\n annotation.text.push(summaryFoldedAnnotations);\n annotation.type.push(mostSevereAnnotationInFoldType);\n }\n }\n if (annotation.text.length === 0)\n return this.hide();\n var annotationMessages = { error: [], warning: [], info: [] };\n var iconClassName = gutter.$useSvgGutterIcons ? \"ace_icon_svg\" : \"ace_icon\";\n for (var i = 0; i < annotation.text.length; i++) {\n var line = \" \").concat(annotation.text[i]);\n annotationMessages[annotation.type[i].replace(\"_fold\", \"\")].push(line);\n }\n var tooltipContent = [].concat(annotationMessages.error, annotationMessages.warning, annotationMessages.info).join(\"
    \");\n this.setHtml(tooltipContent);\n this.$element.setAttribute(\"aria-live\", \"polite\");\n if (!this.isOpen) {\n this.setTheme(this.editor.renderer.theme);\n this.setClassName(\"ace_gutter-tooltip\");\n }\n this.show();\n this.editor._signal(\"showGutterTooltip\", this);\n };\n GutterTooltip.prototype.hideTooltip = function () {\n this.$element.removeAttribute(\"aria-live\");\n this.hide();\n this.editor._signal(\"hideGutterTooltip\", this);\n };\n GutterTooltip.annotationsToSummaryString = function (annotations) {\n var e_1, _a;\n var summary = [];\n var annotationTypes = ['error', 'warning', 'info'];\n try {\n for (var annotationTypes_1 = __values(annotationTypes), annotationTypes_1_1 = annotationTypes_1.next(); !annotationTypes_1_1.done; annotationTypes_1_1 = annotationTypes_1.next()) {\n var annotationType = annotationTypes_1_1.value;\n if (!annotations[annotationType].length)\n continue;\n var label = annotations[annotationType].length === 1 ? GutterTooltip.annotationLabels[annotationType].singular : GutterTooltip.annotationLabels[annotationType].plural;\n summary.push(\"\".concat(annotations[annotationType].length, \" \").concat(label));\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (annotationTypes_1_1 && !annotationTypes_1_1.done && (_a = annotationTypes_1.return)) _a.call(annotationTypes_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return summary.join(\", \");\n };\n return GutterTooltip;\n}(Tooltip));\nexports.GutterTooltip = GutterTooltip;\n\n});\n\nace.define(\"ace/mouse/mouse_event\",[\"require\",\"exports\",\"module\",\"ace/lib/event\",\"ace/lib/useragent\"], function(require, exports, module){\"use strict\";\nvar event = require(\"../lib/event\");\nvar useragent = require(\"../lib/useragent\");\nvar MouseEvent = /** @class */ (function () {\n function MouseEvent(domEvent, editor) {\n this.domEvent = domEvent;\n this.editor = editor;\n this.x = this.clientX = domEvent.clientX;\n this.y = this.clientY = domEvent.clientY;\n this.$pos = null;\n this.$inSelection = null;\n this.propagationStopped = false;\n this.defaultPrevented = false;\n }\n MouseEvent.prototype.stopPropagation = function () {\n event.stopPropagation(this.domEvent);\n this.propagationStopped = true;\n };\n MouseEvent.prototype.preventDefault = function () {\n event.preventDefault(this.domEvent);\n this.defaultPrevented = true;\n };\n MouseEvent.prototype.stop = function () {\n this.stopPropagation();\n this.preventDefault();\n };\n MouseEvent.prototype.getDocumentPosition = function () {\n if (this.$pos)\n return this.$pos;\n this.$pos = this.editor.renderer.screenToTextCoordinates(this.clientX, this.clientY);\n return this.$pos;\n };\n MouseEvent.prototype.getGutterRow = function () {\n var documentRow = this.getDocumentPosition().row;\n var screenRow = this.editor.session.documentToScreenRow(documentRow, 0);\n var screenTopRow = this.editor.session.documentToScreenRow(this.editor.renderer.$gutterLayer.$lines.get(0).row, 0);\n return screenRow - screenTopRow;\n };\n MouseEvent.prototype.inSelection = function () {\n if (this.$inSelection !== null)\n return this.$inSelection;\n var editor = this.editor;\n var selectionRange = editor.getSelectionRange();\n if (selectionRange.isEmpty())\n this.$inSelection = false;\n else {\n var pos = this.getDocumentPosition();\n this.$inSelection = selectionRange.contains(pos.row, pos.column);\n }\n return this.$inSelection;\n };\n MouseEvent.prototype.getButton = function () {\n return event.getButton(this.domEvent);\n };\n MouseEvent.prototype.getShiftKey = function () {\n return this.domEvent.shiftKey;\n };\n MouseEvent.prototype.getAccelKey = function () {\n return useragent.isMac ? this.domEvent.metaKey : this.domEvent.ctrlKey;\n };\n return MouseEvent;\n}());\nexports.MouseEvent = MouseEvent;\n\n});\n\nace.define(\"ace/mouse/dragdrop_handler\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\",\"ace/lib/event\",\"ace/lib/useragent\"], function(require, exports, module){\"use strict\";\nvar dom = require(\"../lib/dom\");\nvar event = require(\"../lib/event\");\nvar useragent = require(\"../lib/useragent\");\nvar AUTOSCROLL_DELAY = 200;\nvar SCROLL_CURSOR_DELAY = 200;\nvar SCROLL_CURSOR_HYSTERESIS = 5;\nfunction DragdropHandler(mouseHandler) {\n var editor = mouseHandler.editor;\n var dragImage = dom.createElement(\"div\");\n dragImage.style.cssText = \"top:-100px;position:absolute;z-index:2147483647;opacity:0.5\";\n dragImage.textContent = \"\\xa0\";\n var exports = [\"dragWait\", \"dragWaitEnd\", \"startDrag\", \"dragReadyEnd\", \"onMouseDrag\"];\n exports.forEach(function (x) {\n mouseHandler[x] = this[x];\n }, this);\n editor.on(\"mousedown\", this.onMouseDown.bind(mouseHandler));\n var mouseTarget = editor.container;\n var dragSelectionMarker, x, y;\n var timerId, range;\n var dragCursor, counter = 0;\n var dragOperation;\n var isInternal;\n var autoScrollStartTime;\n var cursorMovedTime;\n var cursorPointOnCaretMoved;\n this.onDragStart = function (e) {\n if (this.cancelDrag || !mouseTarget.draggable) {\n var self = this;\n setTimeout(function () {\n self.startSelect();\n self.captureMouse(e);\n }, 0);\n return e.preventDefault();\n }\n range = editor.getSelectionRange();\n var dataTransfer = e.dataTransfer;\n dataTransfer.effectAllowed = editor.getReadOnly() ? \"copy\" : \"copyMove\";\n editor.container.appendChild(dragImage);\n dataTransfer.setDragImage && dataTransfer.setDragImage(dragImage, 0, 0);\n setTimeout(function () {\n editor.container.removeChild(dragImage);\n });\n dataTransfer.clearData();\n dataTransfer.setData(\"Text\", editor.session.getTextRange());\n isInternal = true;\n this.setState(\"drag\");\n };\n this.onDragEnd = function (e) {\n mouseTarget.draggable = false;\n isInternal = false;\n this.setState(null);\n if (!editor.getReadOnly()) {\n var dropEffect = e.dataTransfer.dropEffect;\n if (!dragOperation && dropEffect == \"move\")\n editor.session.remove(editor.getSelectionRange());\n editor.$resetCursorStyle();\n }\n this.editor.unsetStyle(\"ace_dragging\");\n this.editor.renderer.setCursorStyle(\"\");\n };\n this.onDragEnter = function (e) {\n if (editor.getReadOnly() || !canAccept(e.dataTransfer))\n return;\n x = e.clientX;\n y = e.clientY;\n if (!dragSelectionMarker)\n addDragMarker();\n counter++;\n e.dataTransfer.dropEffect = dragOperation = getDropEffect(e);\n return event.preventDefault(e);\n };\n this.onDragOver = function (e) {\n if (editor.getReadOnly() || !canAccept(e.dataTransfer))\n return;\n x = e.clientX;\n y = e.clientY;\n if (!dragSelectionMarker) {\n addDragMarker();\n counter++;\n }\n if (onMouseMoveTimer !== null)\n onMouseMoveTimer = null;\n e.dataTransfer.dropEffect = dragOperation = getDropEffect(e);\n return event.preventDefault(e);\n };\n this.onDragLeave = function (e) {\n counter--;\n if (counter <= 0 && dragSelectionMarker) {\n clearDragMarker();\n dragOperation = null;\n return event.preventDefault(e);\n }\n };\n this.onDrop = function (e) {\n if (!dragCursor)\n return;\n var dataTransfer = e.dataTransfer;\n if (isInternal) {\n switch (dragOperation) {\n case \"move\":\n if (range.contains(dragCursor.row, dragCursor.column)) {\n range = {\n start: dragCursor,\n end: dragCursor\n };\n }\n else {\n range = editor.moveText(range, dragCursor);\n }\n break;\n case \"copy\":\n range = editor.moveText(range, dragCursor, true);\n break;\n }\n }\n else {\n var dropData = dataTransfer.getData('Text');\n range = {\n start: dragCursor,\n end: editor.session.insert(dragCursor, dropData)\n };\n editor.focus();\n dragOperation = null;\n }\n clearDragMarker();\n return event.preventDefault(e);\n };\n event.addListener(mouseTarget, \"dragstart\", this.onDragStart.bind(mouseHandler), editor);\n event.addListener(mouseTarget, \"dragend\", this.onDragEnd.bind(mouseHandler), editor);\n event.addListener(mouseTarget, \"dragenter\", this.onDragEnter.bind(mouseHandler), editor);\n event.addListener(mouseTarget, \"dragover\", this.onDragOver.bind(mouseHandler), editor);\n event.addListener(mouseTarget, \"dragleave\", this.onDragLeave.bind(mouseHandler), editor);\n event.addListener(mouseTarget, \"drop\", this.onDrop.bind(mouseHandler), editor);\n function scrollCursorIntoView(cursor, prevCursor) {\n var now = Date.now();\n var vMovement = !prevCursor || cursor.row != prevCursor.row;\n var hMovement = !prevCursor || cursor.column != prevCursor.column;\n if (!cursorMovedTime || vMovement || hMovement) {\n editor.moveCursorToPosition(cursor);\n cursorMovedTime = now;\n cursorPointOnCaretMoved = { x: x, y: y };\n }\n else {\n var distance = calcDistance(cursorPointOnCaretMoved.x, cursorPointOnCaretMoved.y, x, y);\n if (distance > SCROLL_CURSOR_HYSTERESIS) {\n cursorMovedTime = null;\n }\n else if (now - cursorMovedTime >= SCROLL_CURSOR_DELAY) {\n editor.renderer.scrollCursorIntoView();\n cursorMovedTime = null;\n }\n }\n }\n function autoScroll(cursor, prevCursor) {\n var now = Date.now();\n var lineHeight = editor.renderer.layerConfig.lineHeight;\n var characterWidth = editor.renderer.layerConfig.characterWidth;\n var editorRect = editor.renderer.scroller.getBoundingClientRect();\n var offsets = {\n x: {\n left: x - editorRect.left,\n right: editorRect.right - x\n },\n y: {\n top: y - editorRect.top,\n bottom: editorRect.bottom - y\n }\n };\n var nearestXOffset = Math.min(offsets.x.left, offsets.x.right);\n var nearestYOffset = Math.min(offsets.y.top, offsets.y.bottom);\n var scrollCursor = { row: cursor.row, column: cursor.column };\n if (nearestXOffset / characterWidth <= 2) {\n scrollCursor.column += (offsets.x.left < offsets.x.right ? -3 : +2);\n }\n if (nearestYOffset / lineHeight <= 1) {\n scrollCursor.row += (offsets.y.top < offsets.y.bottom ? -1 : +1);\n }\n var vScroll = cursor.row != scrollCursor.row;\n var hScroll = cursor.column != scrollCursor.column;\n var vMovement = !prevCursor || cursor.row != prevCursor.row;\n if (vScroll || (hScroll && !vMovement)) {\n if (!autoScrollStartTime)\n autoScrollStartTime = now;\n else if (now - autoScrollStartTime >= AUTOSCROLL_DELAY)\n editor.renderer.scrollCursorIntoView(scrollCursor);\n }\n else {\n autoScrollStartTime = null;\n }\n }\n function onDragInterval() {\n var prevCursor = dragCursor;\n dragCursor = editor.renderer.screenToTextCoordinates(x, y);\n scrollCursorIntoView(dragCursor, prevCursor);\n autoScroll(dragCursor, prevCursor);\n }\n function addDragMarker() {\n range = editor.selection.toOrientedRange();\n dragSelectionMarker = editor.session.addMarker(range, \"ace_selection\", editor.getSelectionStyle());\n editor.clearSelection();\n if (editor.isFocused())\n editor.renderer.$cursorLayer.setBlinking(false);\n clearInterval(timerId);\n onDragInterval();\n timerId = setInterval(onDragInterval, 20);\n counter = 0;\n event.addListener(document, \"mousemove\", onMouseMove);\n }\n function clearDragMarker() {\n clearInterval(timerId);\n editor.session.removeMarker(dragSelectionMarker);\n dragSelectionMarker = null;\n editor.selection.fromOrientedRange(range);\n if (editor.isFocused() && !isInternal)\n editor.$resetCursorStyle();\n range = null;\n dragCursor = null;\n counter = 0;\n autoScrollStartTime = null;\n cursorMovedTime = null;\n event.removeListener(document, \"mousemove\", onMouseMove);\n }\n var onMouseMoveTimer = null;\n function onMouseMove() {\n if (onMouseMoveTimer == null) {\n onMouseMoveTimer = setTimeout(function () {\n if (onMouseMoveTimer != null && dragSelectionMarker)\n clearDragMarker();\n }, 20);\n }\n }\n function canAccept(dataTransfer) {\n var types = dataTransfer.types;\n return !types || Array.prototype.some.call(types, function (type) {\n return type == 'text/plain' || type == 'Text';\n });\n }\n function getDropEffect(e) {\n var copyAllowed = ['copy', 'copymove', 'all', 'uninitialized'];\n var moveAllowed = ['move', 'copymove', 'linkmove', 'all', 'uninitialized'];\n var copyModifierState = useragent.isMac ? e.altKey : e.ctrlKey;\n var effectAllowed = \"uninitialized\";\n try {\n effectAllowed = e.dataTransfer.effectAllowed.toLowerCase();\n }\n catch (e) { }\n var dropEffect = \"none\";\n if (copyModifierState && copyAllowed.indexOf(effectAllowed) >= 0)\n dropEffect = \"copy\";\n else if (moveAllowed.indexOf(effectAllowed) >= 0)\n dropEffect = \"move\";\n else if (copyAllowed.indexOf(effectAllowed) >= 0)\n dropEffect = \"copy\";\n return dropEffect;\n }\n}\n(function () {\n this.dragWait = function () {\n var interval = Date.now() - this.mousedownEvent.time;\n if (interval > this.editor.getDragDelay())\n this.startDrag();\n };\n this.dragWaitEnd = function () {\n var target = this.editor.container;\n target.draggable = false;\n this.startSelect(this.mousedownEvent.getDocumentPosition());\n this.selectEnd();\n };\n this.dragReadyEnd = function (e) {\n this.editor.$resetCursorStyle();\n this.editor.unsetStyle(\"ace_dragging\");\n this.editor.renderer.setCursorStyle(\"\");\n this.dragWaitEnd();\n };\n this.startDrag = function () {\n this.cancelDrag = false;\n var editor = this.editor;\n var target = editor.container;\n target.draggable = true;\n editor.renderer.$cursorLayer.setBlinking(false);\n editor.setStyle(\"ace_dragging\");\n var cursorStyle = useragent.isWin ? \"default\" : \"move\";\n editor.renderer.setCursorStyle(cursorStyle);\n this.setState(\"dragReady\");\n };\n this.onMouseDrag = function (e) {\n var target = this.editor.container;\n if (useragent.isIE && this.state == \"dragReady\") {\n var distance = calcDistance(this.mousedownEvent.x, this.mousedownEvent.y, this.x, this.y);\n if (distance > 3)\n target.dragDrop();\n }\n if (this.state === \"dragWait\") {\n var distance = calcDistance(this.mousedownEvent.x, this.mousedownEvent.y, this.x, this.y);\n if (distance > 0) {\n target.draggable = false;\n this.startSelect(this.mousedownEvent.getDocumentPosition());\n }\n }\n };\n this.onMouseDown = function (e) {\n if (!this.$dragEnabled)\n return;\n this.mousedownEvent = e;\n var editor = this.editor;\n var inSelection = e.inSelection();\n var button = e.getButton();\n var clickCount = e.domEvent.detail || 1;\n if (clickCount === 1 && button === 0 && inSelection) {\n if (e.editor.inMultiSelectMode && (e.getAccelKey() || e.getShiftKey()))\n return;\n this.mousedownEvent.time = Date.now();\n var eventTarget = e.domEvent.target || e.domEvent.srcElement;\n if (\"unselectable\" in eventTarget)\n eventTarget.unselectable = \"on\";\n if (editor.getDragDelay()) {\n if (useragent.isWebKit) {\n this.cancelDrag = true;\n var mouseTarget = editor.container;\n mouseTarget.draggable = true;\n }\n this.setState(\"dragWait\");\n }\n else {\n this.startDrag();\n }\n this.captureMouse(e, this.onMouseDrag.bind(this));\n e.defaultPrevented = true;\n }\n };\n}).call(DragdropHandler.prototype);\nfunction calcDistance(ax, ay, bx, by) {\n return Math.sqrt(Math.pow(bx - ax, 2) + Math.pow(by - ay, 2));\n}\nexports.DragdropHandler = DragdropHandler;\n\n});\n\nace.define(\"ace/mouse/touch_handler\",[\"require\",\"exports\",\"module\",\"ace/mouse/mouse_event\",\"ace/lib/event\",\"ace/lib/dom\"], function(require, exports, module){\"use strict\";\nvar MouseEvent = require(\"./mouse_event\").MouseEvent;\nvar event = require(\"../lib/event\");\nvar dom = require(\"../lib/dom\");\nexports.addTouchListeners = function (el, editor) {\n var mode = \"scroll\";\n var startX;\n var startY;\n var touchStartT;\n var lastT;\n var longTouchTimer;\n var animationTimer;\n var animationSteps = 0;\n var pos;\n var clickCount = 0;\n var vX = 0;\n var vY = 0;\n var pressed;\n var contextMenu;\n function createContextMenu() {\n var clipboard = window.navigator && window.navigator.clipboard;\n var isOpen = false;\n var updateMenu = function () {\n var selected = editor.getCopyText();\n var hasUndo = editor.session.getUndoManager().hasUndo();\n contextMenu.replaceChild(dom.buildDom(isOpen ? [\"span\",\n !selected && [\"span\", { class: \"ace_mobile-button\", action: \"selectall\" }, \"Select All\"],\n selected && [\"span\", { class: \"ace_mobile-button\", action: \"copy\" }, \"Copy\"],\n selected && [\"span\", { class: \"ace_mobile-button\", action: \"cut\" }, \"Cut\"],\n clipboard && [\"span\", { class: \"ace_mobile-button\", action: \"paste\" }, \"Paste\"],\n hasUndo && [\"span\", { class: \"ace_mobile-button\", action: \"undo\" }, \"Undo\"],\n [\"span\", { class: \"ace_mobile-button\", action: \"find\" }, \"Find\"],\n [\"span\", { class: \"ace_mobile-button\", action: \"openCommandPalette\" }, \"Palette\"]\n ] : [\"span\"]), contextMenu.firstChild);\n };\n var handleClick = function (e) {\n var action = e.target.getAttribute(\"action\");\n if (action == \"more\" || !isOpen) {\n isOpen = !isOpen;\n return updateMenu();\n }\n if (action == \"paste\") {\n clipboard.readText().then(function (text) {\n editor.execCommand(action, text);\n });\n }\n else if (action) {\n if (action == \"cut\" || action == \"copy\") {\n if (clipboard)\n clipboard.writeText(editor.getCopyText());\n else\n document.execCommand(\"copy\");\n }\n editor.execCommand(action);\n }\n contextMenu.firstChild.style.display = \"none\";\n isOpen = false;\n if (action != \"openCommandPalette\")\n editor.focus();\n };\n contextMenu = dom.buildDom([\"div\",\n {\n class: \"ace_mobile-menu\",\n ontouchstart: function (e) {\n mode = \"menu\";\n e.stopPropagation();\n e.preventDefault();\n editor.textInput.focus();\n },\n ontouchend: function (e) {\n e.stopPropagation();\n e.preventDefault();\n handleClick(e);\n },\n onclick: handleClick\n },\n [\"span\"],\n [\"span\", { class: \"ace_mobile-button\", action: \"more\" }, \"...\"]\n ], editor.container);\n }\n function showContextMenu() {\n if (!contextMenu)\n createContextMenu();\n var cursor = editor.selection.cursor;\n var pagePos = editor.renderer.textToScreenCoordinates(cursor.row, cursor.column);\n var leftOffset = editor.renderer.textToScreenCoordinates(0, 0).pageX;\n var scrollLeft = editor.renderer.scrollLeft;\n var rect = editor.container.getBoundingClientRect();\n contextMenu.style.top = pagePos.pageY - rect.top - 3 + \"px\";\n if (pagePos.pageX - rect.left < rect.width - 70) {\n contextMenu.style.left = \"\";\n contextMenu.style.right = \"10px\";\n }\n else {\n contextMenu.style.right = \"\";\n contextMenu.style.left = leftOffset + scrollLeft - rect.left + \"px\";\n }\n contextMenu.style.display = \"\";\n contextMenu.firstChild.style.display = \"none\";\n editor.on(\"input\", hideContextMenu);\n }\n function hideContextMenu(e) {\n if (contextMenu)\n contextMenu.style.display = \"none\";\n editor.off(\"input\", hideContextMenu);\n }\n function handleLongTap() {\n longTouchTimer = null;\n clearTimeout(longTouchTimer);\n var range = editor.selection.getRange();\n var inSelection = range.contains(pos.row, pos.column);\n if (range.isEmpty() || !inSelection) {\n editor.selection.moveToPosition(pos);\n editor.selection.selectWord();\n }\n mode = \"wait\";\n showContextMenu();\n }\n function switchToSelectionMode() {\n longTouchTimer = null;\n clearTimeout(longTouchTimer);\n editor.selection.moveToPosition(pos);\n var range = clickCount >= 2\n ? editor.selection.getLineRange(pos.row)\n : editor.session.getBracketRange(pos);\n if (range && !range.isEmpty()) {\n editor.selection.setRange(range);\n }\n else {\n editor.selection.selectWord();\n }\n mode = \"wait\";\n }\n event.addListener(el, \"contextmenu\", function (e) {\n if (!pressed)\n return;\n var textarea = editor.textInput.getElement();\n textarea.focus();\n }, editor);\n event.addListener(el, \"touchstart\", function (e) {\n var touches = e.touches;\n if (longTouchTimer || touches.length > 1) {\n clearTimeout(longTouchTimer);\n longTouchTimer = null;\n touchStartT = -1;\n mode = \"zoom\";\n return;\n }\n pressed = editor.$mouseHandler.isMousePressed = true;\n var h = editor.renderer.layerConfig.lineHeight;\n var w = editor.renderer.layerConfig.lineHeight;\n var t = e.timeStamp;\n lastT = t;\n var touchObj = touches[0];\n var x = touchObj.clientX;\n var y = touchObj.clientY;\n if (Math.abs(startX - x) + Math.abs(startY - y) > h)\n touchStartT = -1;\n startX = e.clientX = x;\n startY = e.clientY = y;\n vX = vY = 0;\n var ev = new MouseEvent(e, editor);\n pos = ev.getDocumentPosition();\n if (t - touchStartT < 500 && touches.length == 1 && !animationSteps) {\n clickCount++;\n e.preventDefault();\n e.button = 0;\n switchToSelectionMode();\n }\n else {\n clickCount = 0;\n var cursor = editor.selection.cursor;\n var anchor = editor.selection.isEmpty() ? cursor : editor.selection.anchor;\n var cursorPos = editor.renderer.$cursorLayer.getPixelPosition(cursor, true);\n var anchorPos = editor.renderer.$cursorLayer.getPixelPosition(anchor, true);\n var rect = editor.renderer.scroller.getBoundingClientRect();\n var offsetTop = editor.renderer.layerConfig.offset;\n var offsetLeft = editor.renderer.scrollLeft;\n var weightedDistance = function (x, y) {\n x = x / w;\n y = y / h - 0.75;\n return x * x + y * y;\n };\n if (e.clientX < rect.left) {\n mode = \"zoom\";\n return;\n }\n var diff1 = weightedDistance(e.clientX - rect.left - cursorPos.left + offsetLeft, e.clientY - rect.top - cursorPos.top + offsetTop);\n var diff2 = weightedDistance(e.clientX - rect.left - anchorPos.left + offsetLeft, e.clientY - rect.top - anchorPos.top + offsetTop);\n if (diff1 < 3.5 && diff2 < 3.5)\n mode = diff1 > diff2 ? \"cursor\" : \"anchor\";\n if (diff2 < 3.5)\n mode = \"anchor\";\n else if (diff1 < 3.5)\n mode = \"cursor\";\n else\n mode = \"scroll\";\n longTouchTimer = setTimeout(handleLongTap, 450);\n }\n touchStartT = t;\n }, editor);\n event.addListener(el, \"touchend\", function (e) {\n pressed = editor.$mouseHandler.isMousePressed = false;\n if (animationTimer)\n clearInterval(animationTimer);\n if (mode == \"zoom\") {\n mode = \"\";\n animationSteps = 0;\n }\n else if (longTouchTimer) {\n editor.selection.moveToPosition(pos);\n animationSteps = 0;\n showContextMenu();\n }\n else if (mode == \"scroll\") {\n animate();\n hideContextMenu();\n }\n else {\n showContextMenu();\n }\n clearTimeout(longTouchTimer);\n longTouchTimer = null;\n }, editor);\n event.addListener(el, \"touchmove\", function (e) {\n if (longTouchTimer) {\n clearTimeout(longTouchTimer);\n longTouchTimer = null;\n }\n var touches = e.touches;\n if (touches.length > 1 || mode == \"zoom\")\n return;\n var touchObj = touches[0];\n var wheelX = startX - touchObj.clientX;\n var wheelY = startY - touchObj.clientY;\n if (mode == \"wait\") {\n if (wheelX * wheelX + wheelY * wheelY > 4)\n mode = \"cursor\";\n else\n return e.preventDefault();\n }\n startX = touchObj.clientX;\n startY = touchObj.clientY;\n e.clientX = touchObj.clientX;\n e.clientY = touchObj.clientY;\n var t = e.timeStamp;\n var dt = t - lastT;\n lastT = t;\n if (mode == \"scroll\") {\n var mouseEvent = new MouseEvent(e, editor);\n mouseEvent.speed = 1;\n mouseEvent.wheelX = wheelX;\n mouseEvent.wheelY = wheelY;\n if (10 * Math.abs(wheelX) < Math.abs(wheelY))\n wheelX = 0;\n if (10 * Math.abs(wheelY) < Math.abs(wheelX))\n wheelY = 0;\n if (dt != 0) {\n vX = wheelX / dt;\n vY = wheelY / dt;\n }\n editor._emit(\"mousewheel\", mouseEvent);\n if (!mouseEvent.propagationStopped) {\n vX = vY = 0;\n }\n }\n else {\n var ev = new MouseEvent(e, editor);\n var pos = ev.getDocumentPosition();\n if (mode == \"cursor\")\n editor.selection.moveCursorToPosition(pos);\n else if (mode == \"anchor\")\n editor.selection.setSelectionAnchor(pos.row, pos.column);\n editor.renderer.scrollCursorIntoView(pos);\n e.preventDefault();\n }\n }, editor);\n function animate() {\n animationSteps += 60;\n animationTimer = setInterval(function () {\n if (animationSteps-- <= 0) {\n clearInterval(animationTimer);\n animationTimer = null;\n }\n if (Math.abs(vX) < 0.01)\n vX = 0;\n if (Math.abs(vY) < 0.01)\n vY = 0;\n if (animationSteps < 20)\n vX = 0.9 * vX;\n if (animationSteps < 20)\n vY = 0.9 * vY;\n var oldScrollTop = editor.session.getScrollTop();\n editor.renderer.scrollBy(10 * vX, 10 * vY);\n if (oldScrollTop == editor.session.getScrollTop())\n animationSteps = 0;\n }, 10);\n }\n};\n\n});\n\nace.define(\"ace/mouse/mouse_handler\",[\"require\",\"exports\",\"module\",\"ace/lib/event\",\"ace/lib/useragent\",\"ace/mouse/default_handlers\",\"ace/mouse/default_gutter_handler\",\"ace/mouse/mouse_event\",\"ace/mouse/dragdrop_handler\",\"ace/mouse/touch_handler\",\"ace/config\"], function(require, exports, module){\"use strict\";\nvar event = require(\"../lib/event\");\nvar useragent = require(\"../lib/useragent\");\nvar DefaultHandlers = require(\"./default_handlers\").DefaultHandlers;\nvar DefaultGutterHandler = require(\"./default_gutter_handler\").GutterHandler;\nvar MouseEvent = require(\"./mouse_event\").MouseEvent;\nvar DragdropHandler = require(\"./dragdrop_handler\").DragdropHandler;\nvar addTouchListeners = require(\"./touch_handler\").addTouchListeners;\nvar config = require(\"../config\");\nvar MouseHandler = /** @class */ (function () {\n function MouseHandler(editor) {\n var _self = this;\n this.editor = editor;\n new DefaultHandlers(this);\n new DefaultGutterHandler(this);\n new DragdropHandler(this);\n var focusEditor = function (e) {\n var windowBlurred = !document.hasFocus || !document.hasFocus()\n || !editor.isFocused() && document.activeElement == (editor.textInput && editor.textInput.getElement());\n if (windowBlurred)\n window.focus();\n editor.focus();\n setTimeout(function () {\n if (!editor.isFocused())\n editor.focus();\n });\n };\n var mouseTarget = editor.renderer.getMouseEventTarget();\n event.addListener(mouseTarget, \"click\", this.onMouseEvent.bind(this, \"click\"), editor);\n event.addListener(mouseTarget, \"mousemove\", this.onMouseMove.bind(this, \"mousemove\"), editor);\n event.addMultiMouseDownListener([\n mouseTarget,\n editor.renderer.scrollBarV && editor.renderer.scrollBarV.inner,\n editor.renderer.scrollBarH && editor.renderer.scrollBarH.inner,\n editor.textInput && editor.textInput.getElement()\n ].filter(Boolean), [400, 300, 250], this, \"onMouseEvent\", editor);\n event.addMouseWheelListener(editor.container, this.onMouseWheel.bind(this, \"mousewheel\"), editor);\n addTouchListeners(editor.container, editor);\n var gutterEl = editor.renderer.$gutter;\n event.addListener(gutterEl, \"mousedown\", this.onMouseEvent.bind(this, \"guttermousedown\"), editor);\n event.addListener(gutterEl, \"click\", this.onMouseEvent.bind(this, \"gutterclick\"), editor);\n event.addListener(gutterEl, \"dblclick\", this.onMouseEvent.bind(this, \"gutterdblclick\"), editor);\n event.addListener(gutterEl, \"mousemove\", this.onMouseEvent.bind(this, \"guttermousemove\"), editor);\n event.addListener(mouseTarget, \"mousedown\", focusEditor, editor);\n event.addListener(gutterEl, \"mousedown\", focusEditor, editor);\n if (useragent.isIE && editor.renderer.scrollBarV) {\n event.addListener(editor.renderer.scrollBarV.element, \"mousedown\", focusEditor, editor);\n event.addListener(editor.renderer.scrollBarH.element, \"mousedown\", focusEditor, editor);\n }\n editor.on(\"mousemove\", function (e) {\n if (_self.state || _self.$dragDelay || !_self.$dragEnabled)\n return;\n var character = editor.renderer.screenToTextCoordinates(e.x, e.y);\n var range = editor.session.selection.getRange();\n var renderer = editor.renderer;\n if (!range.isEmpty() && range.insideStart(character.row, character.column)) {\n renderer.setCursorStyle(\"default\");\n }\n else {\n renderer.setCursorStyle(\"\");\n }\n }, editor);\n }\n MouseHandler.prototype.onMouseEvent = function (name, e) {\n if (!this.editor.session)\n return;\n this.editor._emit(name, new MouseEvent(e, this.editor));\n };\n MouseHandler.prototype.onMouseMove = function (name, e) {\n var listeners = this.editor._eventRegistry && this.editor._eventRegistry.mousemove;\n if (!listeners || !listeners.length)\n return;\n this.editor._emit(name, new MouseEvent(e, this.editor));\n };\n MouseHandler.prototype.onMouseWheel = function (name, e) {\n var mouseEvent = new MouseEvent(e, this.editor);\n mouseEvent.speed = this.$scrollSpeed * 2;\n mouseEvent.wheelX = e.wheelX;\n mouseEvent.wheelY = e.wheelY;\n this.editor._emit(name, mouseEvent);\n };\n MouseHandler.prototype.setState = function (state) {\n this.state = state;\n };\n MouseHandler.prototype.captureMouse = function (ev, mouseMoveHandler) {\n this.x = ev.x;\n this.y = ev.y;\n this.isMousePressed = true;\n var editor = this.editor;\n var renderer = this.editor.renderer;\n renderer.$isMousePressed = true;\n var self = this;\n var onMouseMove = function (e) {\n if (!e)\n return;\n if (useragent.isWebKit && !e.which && self.releaseMouse)\n return self.releaseMouse();\n self.x = e.clientX;\n self.y = e.clientY;\n mouseMoveHandler && mouseMoveHandler(e);\n self.mouseEvent = new MouseEvent(e, self.editor);\n self.$mouseMoved = true;\n };\n var onCaptureEnd = function (e) {\n editor.off(\"beforeEndOperation\", onOperationEnd);\n clearInterval(timerId);\n if (editor.session)\n onCaptureInterval();\n self[self.state + \"End\"] && self[self.state + \"End\"](e);\n self.state = \"\";\n self.isMousePressed = renderer.$isMousePressed = false;\n if (renderer.$keepTextAreaAtCursor)\n renderer.$moveTextAreaToCursor();\n self.$onCaptureMouseMove = self.releaseMouse = null;\n e && self.onMouseEvent(\"mouseup\", e);\n editor.endOperation();\n };\n var onCaptureInterval = function () {\n self[self.state] && self[self.state]();\n self.$mouseMoved = false;\n };\n if (useragent.isOldIE && ev.domEvent.type == \"dblclick\") {\n return setTimeout(function () { onCaptureEnd(ev); });\n }\n var onOperationEnd = function (e) {\n if (!self.releaseMouse)\n return;\n if (editor.curOp.command.name && editor.curOp.selectionChanged) {\n self[self.state + \"End\"] && self[self.state + \"End\"]();\n self.state = \"\";\n self.releaseMouse();\n }\n };\n editor.on(\"beforeEndOperation\", onOperationEnd);\n editor.startOperation({ command: { name: \"mouse\" } });\n self.$onCaptureMouseMove = onMouseMove;\n self.releaseMouse = event.capture(this.editor.container, onMouseMove, onCaptureEnd);\n var timerId = setInterval(onCaptureInterval, 20);\n };\n MouseHandler.prototype.cancelContextMenu = function () {\n var stop = function (e) {\n if (e && e.domEvent && e.domEvent.type != \"contextmenu\")\n return;\n this.editor.off(\"nativecontextmenu\", stop);\n if (e && e.domEvent)\n event.stopEvent(e.domEvent);\n }.bind(this);\n setTimeout(stop, 10);\n this.editor.on(\"nativecontextmenu\", stop);\n };\n MouseHandler.prototype.destroy = function () {\n if (this.releaseMouse)\n this.releaseMouse();\n };\n return MouseHandler;\n}());\nMouseHandler.prototype.releaseMouse = null;\nconfig.defineOptions(MouseHandler.prototype, \"mouseHandler\", {\n scrollSpeed: { initialValue: 2 },\n dragDelay: { initialValue: (useragent.isMac ? 150 : 0) },\n dragEnabled: { initialValue: true },\n focusTimeout: { initialValue: 0 },\n tooltipFollowsMouse: { initialValue: true }\n});\nexports.MouseHandler = MouseHandler;\n\n});\n\nace.define(\"ace/mouse/fold_handler\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"], function(require, exports, module){\"use strict\";\nvar dom = require(\"../lib/dom\");\nvar FoldHandler = /** @class */ (function () {\n function FoldHandler(editor) {\n editor.on(\"click\", function (e) {\n var position = e.getDocumentPosition();\n var session = editor.session;\n var fold = session.getFoldAt(position.row, position.column, 1);\n if (fold) {\n if (e.getAccelKey())\n session.removeFold(fold);\n else\n session.expandFold(fold);\n e.stop();\n }\n var target = e.domEvent && e.domEvent.target;\n if (target && dom.hasCssClass(target, \"ace_inline_button\")) {\n if (dom.hasCssClass(target, \"ace_toggle_wrap\")) {\n session.setOption(\"wrap\", !session.getUseWrapMode());\n editor.renderer.scrollCursorIntoView();\n }\n }\n });\n editor.on(\"gutterclick\", function (e) {\n var gutterRegion = editor.renderer.$gutterLayer.getRegion(e);\n if (gutterRegion == \"foldWidgets\") {\n var row = e.getDocumentPosition().row;\n var session = editor.session;\n if (session.foldWidgets && session.foldWidgets[row])\n editor.session.onFoldWidgetClick(row, e);\n if (!editor.isFocused())\n editor.focus();\n e.stop();\n }\n });\n editor.on(\"gutterdblclick\", function (e) {\n var gutterRegion = editor.renderer.$gutterLayer.getRegion(e);\n if (gutterRegion == \"foldWidgets\") {\n var row = e.getDocumentPosition().row;\n var session = editor.session;\n var data = session.getParentFoldRangeData(row, true);\n var range = data.range || data.firstRange;\n if (range) {\n row = range.start.row;\n var fold = session.getFoldAt(row, session.getLine(row).length, 1);\n if (fold) {\n session.removeFold(fold);\n }\n else {\n session.addFold(\"...\", range);\n editor.renderer.scrollCursorIntoView({ row: range.start.row, column: 0 });\n }\n }\n e.stop();\n }\n });\n }\n return FoldHandler;\n}());\nexports.FoldHandler = FoldHandler;\n\n});\n\nace.define(\"ace/keyboard/keybinding\",[\"require\",\"exports\",\"module\",\"ace/lib/keys\",\"ace/lib/event\"], function(require, exports, module){\"use strict\";\nvar keyUtil = require(\"../lib/keys\");\nvar event = require(\"../lib/event\");\nvar KeyBinding = /** @class */ (function () {\n function KeyBinding(editor) {\n this.$editor = editor;\n this.$data = { editor: editor };\n this.$handlers = [];\n this.setDefaultHandler(editor.commands);\n }\n KeyBinding.prototype.setDefaultHandler = function (kb) {\n this.removeKeyboardHandler(this.$defaultHandler);\n this.$defaultHandler = kb;\n this.addKeyboardHandler(kb, 0);\n };\n KeyBinding.prototype.setKeyboardHandler = function (kb) {\n var h = this.$handlers;\n if (h[h.length - 1] == kb)\n return;\n while (h[h.length - 1] && h[h.length - 1] != this.$defaultHandler)\n this.removeKeyboardHandler(h[h.length - 1]);\n this.addKeyboardHandler(kb, 1);\n };\n KeyBinding.prototype.addKeyboardHandler = function (kb, pos) {\n if (!kb)\n return;\n if (typeof kb == \"function\" && !kb.handleKeyboard)\n kb.handleKeyboard = kb;\n var i = this.$handlers.indexOf(kb);\n if (i != -1)\n this.$handlers.splice(i, 1);\n if (pos == undefined)\n this.$handlers.push(kb);\n else\n this.$handlers.splice(pos, 0, kb);\n if (i == -1 && kb.attach)\n kb.attach(this.$editor);\n };\n KeyBinding.prototype.removeKeyboardHandler = function (kb) {\n var i = this.$handlers.indexOf(kb);\n if (i == -1)\n return false;\n this.$handlers.splice(i, 1);\n kb.detach && kb.detach(this.$editor);\n return true;\n };\n KeyBinding.prototype.getKeyboardHandler = function () {\n return this.$handlers[this.$handlers.length - 1];\n };\n KeyBinding.prototype.getStatusText = function () {\n var data = this.$data;\n var editor = data.editor;\n return this.$handlers.map(function (h) {\n return h.getStatusText && h.getStatusText(editor, data) || \"\";\n }).filter(Boolean).join(\" \");\n };\n KeyBinding.prototype.$callKeyboardHandlers = function (hashId, keyString, keyCode, e) {\n var toExecute;\n var success = false;\n var commands = this.$editor.commands;\n for (var i = this.$handlers.length; i--;) {\n toExecute = this.$handlers[i].handleKeyboard(this.$data, hashId, keyString, keyCode, e);\n if (!toExecute || !toExecute.command)\n continue;\n if (toExecute.command == \"null\") {\n success = true;\n }\n else {\n success = commands.exec(toExecute.command, this.$editor, toExecute.args, e);\n }\n if (success && e && hashId != -1 &&\n toExecute.passEvent != true && toExecute.command.passEvent != true) {\n event.stopEvent(e);\n }\n if (success)\n break;\n }\n if (!success && hashId == -1) {\n toExecute = { command: \"insertstring\" };\n success = commands.exec(\"insertstring\", this.$editor, keyString);\n }\n if (success && this.$editor._signal)\n this.$editor._signal(\"keyboardActivity\", toExecute);\n return success;\n };\n KeyBinding.prototype.onCommandKey = function (e, hashId, keyCode) {\n var keyString = keyUtil.keyCodeToString(keyCode);\n return this.$callKeyboardHandlers(hashId, keyString, keyCode, e);\n };\n KeyBinding.prototype.onTextInput = function (text) {\n return this.$callKeyboardHandlers(-1, text);\n };\n return KeyBinding;\n}());\nexports.KeyBinding = KeyBinding;\n\n});\n\nace.define(\"ace/lib/bidiutil\",[\"require\",\"exports\",\"module\"], function(require, exports, module){\"use strict\";\nvar ArabicAlefBetIntervalsBegine = ['\\u0621', '\\u0641'];\nvar ArabicAlefBetIntervalsEnd = ['\\u063A', '\\u064a'];\nvar dir = 0, hiLevel = 0;\nvar lastArabic = false, hasUBAT_AL = false, hasUBAT_B = false, hasUBAT_S = false, hasBlockSep = false, hasSegSep = false;\nvar impTab_LTR = [ [0, 3, 0, 1, 0, 0, 0], [0, 3, 0, 1, 2, 2, 0], [0, 3, 0, 0x11, 2, 0, 1], [0, 3, 5, 5, 4, 1, 0], [0, 3, 0x15, 0x15, 4, 0, 1], [0, 3, 5, 5, 4, 2, 0]\n];\nvar impTab_RTL = [ [2, 0, 1, 1, 0, 1, 0], [2, 0, 1, 1, 0, 2, 0], [2, 0, 2, 1, 3, 2, 0], [2, 0, 2, 0x21, 3, 1, 1]\n];\nvar LTR = 0, RTL = 1;\nvar L = 0;\nvar R = 1;\nvar EN = 2;\nvar AN = 3;\nvar ON = 4;\nvar B = 5;\nvar S = 6;\nvar AL = 7;\nvar WS = 8;\nvar CS = 9;\nvar ES = 10;\nvar ET = 11;\nvar NSM = 12;\nvar LRE = 13;\nvar RLE = 14;\nvar PDF = 15;\nvar LRO = 16;\nvar RLO = 17;\nvar BN = 18;\nvar UnicodeTBL00 = [\n BN, BN, BN, BN, BN, BN, BN, BN, BN, S, B, S, WS, B, BN, BN,\n BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, B, B, B, S,\n WS, ON, ON, ET, ET, ET, ON, ON, ON, ON, ON, ES, CS, ES, CS, CS,\n EN, EN, EN, EN, EN, EN, EN, EN, EN, EN, CS, ON, ON, ON, ON, ON,\n ON, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L,\n L, L, L, L, L, L, L, L, L, L, L, ON, ON, ON, ON, ON,\n ON, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L,\n L, L, L, L, L, L, L, L, L, L, L, ON, ON, ON, ON, BN,\n BN, BN, BN, BN, BN, B, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN,\n BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN,\n CS, ON, ET, ET, ET, ET, ON, ON, ON, ON, L, ON, ON, BN, ON, ON,\n ET, ET, EN, EN, ON, L, ON, ON, ON, EN, L, ON, ON, ON, ON, ON\n];\nvar UnicodeTBL20 = [\n WS, WS, WS, WS, WS, WS, WS, WS, WS, WS, WS, BN, BN, BN, L, R,\n ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON,\n ON, ON, ON, ON, ON, ON, ON, ON, WS, B, LRE, RLE, PDF, LRO, RLO, CS,\n ET, ET, ET, ET, ET, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON,\n ON, ON, ON, ON, CS, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON,\n ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, WS\n];\nfunction _computeLevels(chars, levels, len, charTypes) {\n var impTab = dir ? impTab_RTL : impTab_LTR, prevState = null, newClass = null, newLevel = null, newState = 0, action = null, cond = null, condPos = -1, i = null, ix = null, classes = [];\n if (!charTypes) {\n for (i = 0, charTypes = []; i < len; i++) {\n charTypes[i] = _getCharacterType(chars[i]);\n }\n }\n hiLevel = dir;\n lastArabic = false;\n hasUBAT_AL = false;\n hasUBAT_B = false;\n hasUBAT_S = false;\n for (ix = 0; ix < len; ix++) {\n prevState = newState;\n classes[ix] = newClass = _getCharClass(chars, charTypes, classes, ix);\n newState = impTab[prevState][newClass];\n action = newState & 0xF0;\n newState &= 0x0F;\n levels[ix] = newLevel = impTab[newState][5];\n if (action > 0) {\n if (action == 0x10) {\n for (i = condPos; i < ix; i++) {\n levels[i] = 1;\n }\n condPos = -1;\n }\n else {\n condPos = -1;\n }\n }\n cond = impTab[newState][6];\n if (cond) {\n if (condPos == -1) {\n condPos = ix;\n }\n }\n else {\n if (condPos > -1) {\n for (i = condPos; i < ix; i++) {\n levels[i] = newLevel;\n }\n condPos = -1;\n }\n }\n if (charTypes[ix] == B) {\n levels[ix] = 0;\n }\n hiLevel |= newLevel;\n }\n if (hasUBAT_S) {\n for (i = 0; i < len; i++) {\n if (charTypes[i] == S) {\n levels[i] = dir;\n for (var j = i - 1; j >= 0; j--) {\n if (charTypes[j] == WS) {\n levels[j] = dir;\n }\n else {\n break;\n }\n }\n }\n }\n }\n}\nfunction _invertLevel(lev, levels, _array) {\n if (hiLevel < lev) {\n return;\n }\n if (lev == 1 && dir == RTL && !hasUBAT_B) {\n _array.reverse();\n return;\n }\n var len = _array.length, start = 0, end, lo, hi, tmp;\n while (start < len) {\n if (levels[start] >= lev) {\n end = start + 1;\n while (end < len && levels[end] >= lev) {\n end++;\n }\n for (lo = start, hi = end - 1; lo < hi; lo++, hi--) {\n tmp = _array[lo];\n _array[lo] = _array[hi];\n _array[hi] = tmp;\n }\n start = end;\n }\n start++;\n }\n}\nfunction _getCharClass(chars, types, classes, ix) {\n var cType = types[ix], wType, nType, len, i;\n switch (cType) {\n case L:\n case R:\n lastArabic = false;\n case ON:\n case AN:\n return cType;\n case EN:\n return lastArabic ? AN : EN;\n case AL:\n lastArabic = true;\n hasUBAT_AL = true;\n return R;\n case WS:\n return ON;\n case CS:\n if (ix < 1 || (ix + 1) >= types.length ||\n ((wType = classes[ix - 1]) != EN && wType != AN) ||\n ((nType = types[ix + 1]) != EN && nType != AN)) {\n return ON;\n }\n if (lastArabic) {\n nType = AN;\n }\n return nType == wType ? nType : ON;\n case ES:\n wType = ix > 0 ? classes[ix - 1] : B;\n if (wType == EN && (ix + 1) < types.length && types[ix + 1] == EN) {\n return EN;\n }\n return ON;\n case ET:\n if (ix > 0 && classes[ix - 1] == EN) {\n return EN;\n }\n if (lastArabic) {\n return ON;\n }\n i = ix + 1;\n len = types.length;\n while (i < len && types[i] == ET) {\n i++;\n }\n if (i < len && types[i] == EN) {\n return EN;\n }\n return ON;\n case NSM:\n len = types.length;\n i = ix + 1;\n while (i < len && types[i] == NSM) {\n i++;\n }\n if (i < len) {\n var c = chars[ix], rtlCandidate = (c >= 0x0591 && c <= 0x08FF) || c == 0xFB1E;\n wType = types[i];\n if (rtlCandidate && (wType == R || wType == AL)) {\n return R;\n }\n }\n if (ix < 1 || (wType = types[ix - 1]) == B) {\n return ON;\n }\n return classes[ix - 1];\n case B:\n lastArabic = false;\n hasUBAT_B = true;\n return dir;\n case S:\n hasUBAT_S = true;\n return ON;\n case LRE:\n case RLE:\n case LRO:\n case RLO:\n case PDF:\n lastArabic = false;\n case BN:\n return ON;\n }\n}\nfunction _getCharacterType(ch) {\n var uc = ch.charCodeAt(0), hi = uc >> 8;\n if (hi == 0) {\n return ((uc > 0x00BF) ? L : UnicodeTBL00[uc]);\n }\n else if (hi == 5) {\n return (/[\\u0591-\\u05f4]/.test(ch) ? R : L);\n }\n else if (hi == 6) {\n if (/[\\u0610-\\u061a\\u064b-\\u065f\\u06d6-\\u06e4\\u06e7-\\u06ed]/.test(ch))\n return NSM;\n else if (/[\\u0660-\\u0669\\u066b-\\u066c]/.test(ch))\n return AN;\n else if (uc == 0x066A)\n return ET;\n else if (/[\\u06f0-\\u06f9]/.test(ch))\n return EN;\n else\n return AL;\n }\n else if (hi == 0x20 && uc <= 0x205F) {\n return UnicodeTBL20[uc & 0xFF];\n }\n else if (hi == 0xFE) {\n return (uc >= 0xFE70 ? AL : ON);\n }\n return ON;\n}\nfunction _isArabicDiacritics(ch) {\n return (ch >= '\\u064b' && ch <= '\\u0655');\n}\nexports.L = L;\nexports.R = R;\nexports.EN = EN;\nexports.ON_R = 3;\nexports.AN = 4;\nexports.R_H = 5;\nexports.B = 6;\nexports.RLE = 7;\nexports.DOT = \"\\xB7\";\nexports.doBidiReorder = function (text, textCharTypes, isRtl) {\n if (text.length < 2)\n return {};\n var chars = text.split(\"\"), logicalFromVisual = new Array(chars.length), bidiLevels = new Array(chars.length), levels = [];\n dir = isRtl ? RTL : LTR;\n _computeLevels(chars, levels, chars.length, textCharTypes);\n for (var i = 0; i < logicalFromVisual.length; logicalFromVisual[i] = i, i++)\n ;\n _invertLevel(2, levels, logicalFromVisual);\n _invertLevel(1, levels, logicalFromVisual);\n for (var i = 0; i < logicalFromVisual.length - 1; i++) { //fix levels to reflect character width\n if (textCharTypes[i] === AN) {\n levels[i] = exports.AN;\n }\n else if (levels[i] === R && ((textCharTypes[i] > AL && textCharTypes[i] < LRE)\n || textCharTypes[i] === ON || textCharTypes[i] === BN)) {\n levels[i] = exports.ON_R;\n }\n else if ((i > 0 && chars[i - 1] === '\\u0644') && /\\u0622|\\u0623|\\u0625|\\u0627/.test(chars[i])) {\n levels[i - 1] = levels[i] = exports.R_H;\n i++;\n }\n }\n if (chars[chars.length - 1] === exports.DOT)\n levels[chars.length - 1] = exports.B;\n if (chars[0] === '\\u202B')\n levels[0] = exports.RLE;\n for (var i = 0; i < logicalFromVisual.length; i++) {\n bidiLevels[i] = levels[logicalFromVisual[i]];\n }\n return { 'logicalFromVisual': logicalFromVisual, 'bidiLevels': bidiLevels };\n};\nexports.hasBidiCharacters = function (text, textCharTypes) {\n var ret = false;\n for (var i = 0; i < text.length; i++) {\n textCharTypes[i] = _getCharacterType(text.charAt(i));\n if (!ret && (textCharTypes[i] == R || textCharTypes[i] == AL || textCharTypes[i] == AN))\n ret = true;\n }\n return ret;\n};\nexports.getVisualFromLogicalIdx = function (logIdx, rowMap) {\n for (var i = 0; i < rowMap.logicalFromVisual.length; i++) {\n if (rowMap.logicalFromVisual[i] == logIdx)\n return i;\n }\n return 0;\n};\n\n});\n\nace.define(\"ace/bidihandler\",[\"require\",\"exports\",\"module\",\"ace/lib/bidiutil\",\"ace/lib/lang\"], function(require, exports, module){\"use strict\";\nvar bidiUtil = require(\"./lib/bidiutil\");\nvar lang = require(\"./lib/lang\");\nvar bidiRE = /[\\u0590-\\u05f4\\u0600-\\u06ff\\u0700-\\u08ac\\u202B]/;\nvar BidiHandler = /** @class */ (function () {\n function BidiHandler(session) {\n this.session = session;\n this.bidiMap = {};\n this.currentRow = null;\n this.bidiUtil = bidiUtil;\n this.charWidths = [];\n this.EOL = \"\\xAC\";\n this.showInvisibles = true;\n this.isRtlDir = false;\n this.$isRtl = false;\n this.line = \"\";\n this.wrapIndent = 0;\n this.EOF = \"\\xB6\";\n this.RLE = \"\\u202B\";\n this.contentWidth = 0;\n this.fontMetrics = null;\n this.rtlLineOffset = 0;\n this.wrapOffset = 0;\n this.isMoveLeftOperation = false;\n this.seenBidi = bidiRE.test(session.getValue());\n }\n BidiHandler.prototype.isBidiRow = function (screenRow, docRow, splitIndex) {\n if (!this.seenBidi)\n return false;\n if (screenRow !== this.currentRow) {\n this.currentRow = screenRow;\n this.updateRowLine(docRow, splitIndex);\n this.updateBidiMap();\n }\n return this.bidiMap.bidiLevels;\n };\n BidiHandler.prototype.onChange = function (delta) {\n if (!this.seenBidi) {\n if (delta.action == \"insert\" && bidiRE.test(delta.lines.join(\"\\n\"))) {\n this.seenBidi = true;\n this.currentRow = null;\n }\n }\n else {\n this.currentRow = null;\n }\n };\n BidiHandler.prototype.getDocumentRow = function () {\n var docRow = 0;\n var rowCache = this.session.$screenRowCache;\n if (rowCache.length) {\n var index = this.session.$getRowCacheIndex(rowCache, this.currentRow);\n if (index >= 0)\n docRow = this.session.$docRowCache[index];\n }\n return docRow;\n };\n BidiHandler.prototype.getSplitIndex = function () {\n var splitIndex = 0;\n var rowCache = this.session.$screenRowCache;\n if (rowCache.length) {\n var currentIndex, prevIndex = this.session.$getRowCacheIndex(rowCache, this.currentRow);\n while (this.currentRow - splitIndex > 0) {\n currentIndex = this.session.$getRowCacheIndex(rowCache, this.currentRow - splitIndex - 1);\n if (currentIndex !== prevIndex)\n break;\n prevIndex = currentIndex;\n splitIndex++;\n }\n }\n else {\n splitIndex = this.currentRow;\n }\n return splitIndex;\n };\n BidiHandler.prototype.updateRowLine = function (docRow, splitIndex) {\n if (docRow === undefined)\n docRow = this.getDocumentRow();\n var isLastRow = (docRow === this.session.getLength() - 1), endOfLine = isLastRow ? this.EOF : this.EOL;\n this.wrapIndent = 0;\n this.line = this.session.getLine(docRow);\n this.isRtlDir = this.$isRtl || this.line.charAt(0) === this.RLE;\n if (this.session.$useWrapMode) {\n var splits = this.session.$wrapData[docRow];\n if (splits) {\n if (splitIndex === undefined)\n splitIndex = this.getSplitIndex();\n if (splitIndex > 0 && splits.length) {\n this.wrapIndent = splits.indent;\n this.wrapOffset = this.wrapIndent * this.charWidths[bidiUtil.L];\n this.line = (splitIndex < splits.length) ?\n this.line.substring(splits[splitIndex - 1], splits[splitIndex]) :\n this.line.substring(splits[splits.length - 1]);\n }\n else {\n this.line = this.line.substring(0, splits[splitIndex]);\n }\n if (splitIndex == splits.length) {\n this.line += (this.showInvisibles) ? endOfLine : bidiUtil.DOT;\n }\n }\n }\n else {\n this.line += this.showInvisibles ? endOfLine : bidiUtil.DOT;\n }\n var session = this.session, shift = 0, size;\n this.line = this.line.replace(/\\t|[\\u1100-\\u2029, \\u202F-\\uFFE6]/g, function (ch, i) {\n if (ch === '\\t' || session.isFullWidth(ch.charCodeAt(0))) {\n size = (ch === '\\t') ? session.getScreenTabSize(i + shift) : 2;\n shift += size - 1;\n return lang.stringRepeat(bidiUtil.DOT, size);\n }\n return ch;\n });\n if (this.isRtlDir) {\n this.fontMetrics.$main.textContent = (this.line.charAt(this.line.length - 1) == bidiUtil.DOT) ? this.line.substr(0, this.line.length - 1) : this.line;\n this.rtlLineOffset = this.contentWidth - this.fontMetrics.$main.getBoundingClientRect().width;\n }\n };\n BidiHandler.prototype.updateBidiMap = function () {\n var textCharTypes = [];\n if (bidiUtil.hasBidiCharacters(this.line, textCharTypes) || this.isRtlDir) {\n this.bidiMap = bidiUtil.doBidiReorder(this.line, textCharTypes, this.isRtlDir);\n }\n else {\n this.bidiMap = {};\n }\n };\n BidiHandler.prototype.markAsDirty = function () {\n this.currentRow = null;\n };\n BidiHandler.prototype.updateCharacterWidths = function (fontMetrics) {\n if (this.characterWidth === fontMetrics.$characterSize.width)\n return;\n this.fontMetrics = fontMetrics;\n var characterWidth = this.characterWidth = fontMetrics.$characterSize.width;\n var bidiCharWidth = fontMetrics.$measureCharWidth(\"\\u05d4\");\n this.charWidths[bidiUtil.L] = this.charWidths[bidiUtil.EN] = this.charWidths[bidiUtil.ON_R] = characterWidth;\n this.charWidths[bidiUtil.R] = this.charWidths[bidiUtil.AN] = bidiCharWidth;\n this.charWidths[bidiUtil.R_H] = bidiCharWidth * 0.45;\n this.charWidths[bidiUtil.B] = this.charWidths[bidiUtil.RLE] = 0;\n this.currentRow = null;\n };\n BidiHandler.prototype.setShowInvisibles = function (showInvisibles) {\n this.showInvisibles = showInvisibles;\n this.currentRow = null;\n };\n BidiHandler.prototype.setEolChar = function (eolChar) {\n this.EOL = eolChar;\n };\n BidiHandler.prototype.setContentWidth = function (width) {\n this.contentWidth = width;\n };\n BidiHandler.prototype.isRtlLine = function (row) {\n if (this.$isRtl)\n return true;\n if (row != undefined)\n return (this.session.getLine(row).charAt(0) == this.RLE);\n else\n return this.isRtlDir;\n };\n BidiHandler.prototype.setRtlDirection = function (editor, isRtlDir) {\n var cursor = editor.getCursorPosition();\n for (var row = editor.selection.getSelectionAnchor().row; row <= cursor.row; row++) {\n if (!isRtlDir && editor.session.getLine(row).charAt(0) === editor.session.$bidiHandler.RLE)\n editor.session.doc.removeInLine(row, 0, 1);\n else if (isRtlDir && editor.session.getLine(row).charAt(0) !== editor.session.$bidiHandler.RLE)\n editor.session.doc.insert({ column: 0, row: row }, editor.session.$bidiHandler.RLE);\n }\n };\n BidiHandler.prototype.getPosLeft = function (col) {\n col -= this.wrapIndent;\n var leftBoundary = (this.line.charAt(0) === this.RLE) ? 1 : 0;\n var logicalIdx = (col > leftBoundary) ? (this.session.getOverwrite() ? col : col - 1) : leftBoundary;\n var visualIdx = bidiUtil.getVisualFromLogicalIdx(logicalIdx, this.bidiMap), levels = this.bidiMap.bidiLevels, left = 0;\n if (!this.session.getOverwrite() && col <= leftBoundary && levels[visualIdx] % 2 !== 0)\n visualIdx++;\n for (var i = 0; i < visualIdx; i++) {\n left += this.charWidths[levels[i]];\n }\n if (!this.session.getOverwrite() && (col > leftBoundary) && (levels[visualIdx] % 2 === 0))\n left += this.charWidths[levels[visualIdx]];\n if (this.wrapIndent)\n left += this.isRtlDir ? (-1 * this.wrapOffset) : this.wrapOffset;\n if (this.isRtlDir)\n left += this.rtlLineOffset;\n return left;\n };\n BidiHandler.prototype.getSelections = function (startCol, endCol) {\n var map = this.bidiMap, levels = map.bidiLevels, level, selections = [], offset = 0, selColMin = Math.min(startCol, endCol) - this.wrapIndent, selColMax = Math.max(startCol, endCol) - this.wrapIndent, isSelected = false, isSelectedPrev = false, selectionStart = 0;\n if (this.wrapIndent)\n offset += this.isRtlDir ? (-1 * this.wrapOffset) : this.wrapOffset;\n for (var logIdx, visIdx = 0; visIdx < levels.length; visIdx++) {\n logIdx = map.logicalFromVisual[visIdx];\n level = levels[visIdx];\n isSelected = (logIdx >= selColMin) && (logIdx < selColMax);\n if (isSelected && !isSelectedPrev) {\n selectionStart = offset;\n }\n else if (!isSelected && isSelectedPrev) {\n selections.push({ left: selectionStart, width: offset - selectionStart });\n }\n offset += this.charWidths[level];\n isSelectedPrev = isSelected;\n }\n if (isSelected && (visIdx === levels.length)) {\n selections.push({ left: selectionStart, width: offset - selectionStart });\n }\n if (this.isRtlDir) {\n for (var i = 0; i < selections.length; i++) {\n selections[i].left += this.rtlLineOffset;\n }\n }\n return selections;\n };\n BidiHandler.prototype.offsetToCol = function (posX) {\n if (this.isRtlDir)\n posX -= this.rtlLineOffset;\n var logicalIdx = 0, posX = Math.max(posX, 0), offset = 0, visualIdx = 0, levels = this.bidiMap.bidiLevels, charWidth = this.charWidths[levels[visualIdx]];\n if (this.wrapIndent)\n posX -= this.isRtlDir ? (-1 * this.wrapOffset) : this.wrapOffset;\n while (posX > offset + charWidth / 2) {\n offset += charWidth;\n if (visualIdx === levels.length - 1) {\n charWidth = 0;\n break;\n }\n charWidth = this.charWidths[levels[++visualIdx]];\n }\n if (visualIdx > 0 && (levels[visualIdx - 1] % 2 !== 0) && (levels[visualIdx] % 2 === 0)) {\n if (posX < offset)\n visualIdx--;\n logicalIdx = this.bidiMap.logicalFromVisual[visualIdx];\n }\n else if (visualIdx > 0 && (levels[visualIdx - 1] % 2 === 0) && (levels[visualIdx] % 2 !== 0)) {\n logicalIdx = 1 + ((posX > offset) ? this.bidiMap.logicalFromVisual[visualIdx]\n : this.bidiMap.logicalFromVisual[visualIdx - 1]);\n }\n else if ((this.isRtlDir && visualIdx === levels.length - 1 && charWidth === 0 && (levels[visualIdx - 1] % 2 === 0))\n || (!this.isRtlDir && visualIdx === 0 && (levels[visualIdx] % 2 !== 0))) {\n logicalIdx = 1 + this.bidiMap.logicalFromVisual[visualIdx];\n }\n else {\n if (visualIdx > 0 && (levels[visualIdx - 1] % 2 !== 0) && charWidth !== 0)\n visualIdx--;\n logicalIdx = this.bidiMap.logicalFromVisual[visualIdx];\n }\n if (logicalIdx === 0 && this.isRtlDir)\n logicalIdx++;\n return (logicalIdx + this.wrapIndent);\n };\n return BidiHandler;\n}());\nexports.BidiHandler = BidiHandler;\n\n});\n\nace.define(\"ace/selection\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/lib/event_emitter\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"./lib/oop\");\nvar lang = require(\"./lib/lang\");\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar Range = require(\"./range\").Range;\nvar Selection = /** @class */ (function () {\n function Selection(session) {\n this.session = session;\n this.doc = session.getDocument();\n this.clearSelection();\n this.cursor = this.lead = this.doc.createAnchor(0, 0);\n this.anchor = this.doc.createAnchor(0, 0);\n this.$silent = false;\n var self = this;\n this.cursor.on(\"change\", function (e) {\n self.$cursorChanged = true;\n if (!self.$silent)\n self._emit(\"changeCursor\");\n if (!self.$isEmpty && !self.$silent)\n self._emit(\"changeSelection\");\n if (!self.$keepDesiredColumnOnChange && e.old.column != e.value.column)\n self.$desiredColumn = null;\n });\n this.anchor.on(\"change\", function () {\n self.$anchorChanged = true;\n if (!self.$isEmpty && !self.$silent)\n self._emit(\"changeSelection\");\n });\n }\n Selection.prototype.isEmpty = function () {\n return this.$isEmpty || (this.anchor.row == this.lead.row &&\n this.anchor.column == this.lead.column);\n };\n Selection.prototype.isMultiLine = function () {\n return !this.$isEmpty && this.anchor.row != this.cursor.row;\n };\n Selection.prototype.getCursor = function () {\n return this.lead.getPosition();\n };\n Selection.prototype.setAnchor = function (row, column) {\n this.$isEmpty = false;\n this.anchor.setPosition(row, column);\n };\n Selection.prototype.getAnchor = function () {\n if (this.$isEmpty)\n return this.getSelectionLead();\n return this.anchor.getPosition();\n };\n Selection.prototype.getSelectionLead = function () {\n return this.lead.getPosition();\n };\n Selection.prototype.isBackwards = function () {\n var anchor = this.anchor;\n var lead = this.lead;\n return (anchor.row > lead.row || (anchor.row == lead.row && anchor.column > lead.column));\n };\n Selection.prototype.getRange = function () {\n var anchor = this.anchor;\n var lead = this.lead;\n if (this.$isEmpty)\n return Range.fromPoints(lead, lead);\n return this.isBackwards()\n ? Range.fromPoints(lead, anchor)\n : Range.fromPoints(anchor, lead);\n };\n Selection.prototype.clearSelection = function () {\n if (!this.$isEmpty) {\n this.$isEmpty = true;\n this._emit(\"changeSelection\");\n }\n };\n Selection.prototype.selectAll = function () {\n this.$setSelection(0, 0, Number.MAX_VALUE, Number.MAX_VALUE);\n };\n Selection.prototype.setRange = function (range, reverse) {\n var start = reverse ? range.end : range.start;\n var end = reverse ? range.start : range.end;\n this.$setSelection(start.row, start.column, end.row, end.column);\n };\n Selection.prototype.$setSelection = function (anchorRow, anchorColumn, cursorRow, cursorColumn) {\n if (this.$silent)\n return;\n var wasEmpty = this.$isEmpty;\n var wasMultiselect = this.inMultiSelectMode;\n this.$silent = true;\n this.$cursorChanged = this.$anchorChanged = false;\n this.anchor.setPosition(anchorRow, anchorColumn);\n this.cursor.setPosition(cursorRow, cursorColumn);\n this.$isEmpty = !Range.comparePoints(this.anchor, this.cursor);\n this.$silent = false;\n if (this.$cursorChanged)\n this._emit(\"changeCursor\");\n if (this.$cursorChanged || this.$anchorChanged || wasEmpty != this.$isEmpty || wasMultiselect)\n this._emit(\"changeSelection\");\n };\n Selection.prototype.$moveSelection = function (mover) {\n var lead = this.lead;\n if (this.$isEmpty)\n this.setSelectionAnchor(lead.row, lead.column);\n mover.call(this);\n };\n Selection.prototype.selectTo = function (row, column) {\n this.$moveSelection(function () {\n this.moveCursorTo(row, column);\n });\n };\n Selection.prototype.selectToPosition = function (pos) {\n this.$moveSelection(function () {\n this.moveCursorToPosition(pos);\n });\n };\n Selection.prototype.moveTo = function (row, column) {\n this.clearSelection();\n this.moveCursorTo(row, column);\n };\n Selection.prototype.moveToPosition = function (pos) {\n this.clearSelection();\n this.moveCursorToPosition(pos);\n };\n Selection.prototype.selectUp = function () {\n this.$moveSelection(this.moveCursorUp);\n };\n Selection.prototype.selectDown = function () {\n this.$moveSelection(this.moveCursorDown);\n };\n Selection.prototype.selectRight = function () {\n this.$moveSelection(this.moveCursorRight);\n };\n Selection.prototype.selectLeft = function () {\n this.$moveSelection(this.moveCursorLeft);\n };\n Selection.prototype.selectLineStart = function () {\n this.$moveSelection(this.moveCursorLineStart);\n };\n Selection.prototype.selectLineEnd = function () {\n this.$moveSelection(this.moveCursorLineEnd);\n };\n Selection.prototype.selectFileEnd = function () {\n this.$moveSelection(this.moveCursorFileEnd);\n };\n Selection.prototype.selectFileStart = function () {\n this.$moveSelection(this.moveCursorFileStart);\n };\n Selection.prototype.selectWordRight = function () {\n this.$moveSelection(this.moveCursorWordRight);\n };\n Selection.prototype.selectWordLeft = function () {\n this.$moveSelection(this.moveCursorWordLeft);\n };\n Selection.prototype.getWordRange = function (row, column) {\n if (typeof column == \"undefined\") {\n var cursor = row || this.lead;\n row = cursor.row;\n column = cursor.column;\n }\n return this.session.getWordRange(row, column);\n };\n Selection.prototype.selectWord = function () {\n this.setSelectionRange(this.getWordRange());\n };\n Selection.prototype.selectAWord = function () {\n var cursor = this.getCursor();\n var range = this.session.getAWordRange(cursor.row, cursor.column);\n this.setSelectionRange(range);\n };\n Selection.prototype.getLineRange = function (row, excludeLastChar) {\n var rowStart = typeof row == \"number\" ? row : this.lead.row;\n var rowEnd;\n var foldLine = this.session.getFoldLine(rowStart);\n if (foldLine) {\n rowStart = foldLine.start.row;\n rowEnd = foldLine.end.row;\n }\n else {\n rowEnd = rowStart;\n }\n if (excludeLastChar === true)\n return new Range(rowStart, 0, rowEnd, this.session.getLine(rowEnd).length);\n else\n return new Range(rowStart, 0, rowEnd + 1, 0);\n };\n Selection.prototype.selectLine = function () {\n this.setSelectionRange(this.getLineRange());\n };\n Selection.prototype.moveCursorUp = function () {\n this.moveCursorBy(-1, 0);\n };\n Selection.prototype.moveCursorDown = function () {\n this.moveCursorBy(1, 0);\n };\n Selection.prototype.wouldMoveIntoSoftTab = function (cursor, tabSize, direction) {\n var start = cursor.column;\n var end = cursor.column + tabSize;\n if (direction < 0) {\n start = cursor.column - tabSize;\n end = cursor.column;\n }\n return this.session.isTabStop(cursor) && this.doc.getLine(cursor.row).slice(start, end).split(\" \").length - 1 == tabSize;\n };\n Selection.prototype.moveCursorLeft = function () {\n var cursor = this.lead.getPosition(), fold;\n if (fold = this.session.getFoldAt(cursor.row, cursor.column, -1)) {\n this.moveCursorTo(fold.start.row, fold.start.column);\n }\n else if (cursor.column === 0) {\n if (cursor.row > 0) {\n this.moveCursorTo(cursor.row - 1, this.doc.getLine(cursor.row - 1).length);\n }\n }\n else {\n var tabSize = this.session.getTabSize();\n if (this.wouldMoveIntoSoftTab(cursor, tabSize, -1) && !this.session.getNavigateWithinSoftTabs()) {\n this.moveCursorBy(0, -tabSize);\n }\n else {\n this.moveCursorBy(0, -1);\n }\n }\n };\n Selection.prototype.moveCursorRight = function () {\n var cursor = this.lead.getPosition(), fold;\n if (fold = this.session.getFoldAt(cursor.row, cursor.column, 1)) {\n this.moveCursorTo(fold.end.row, fold.end.column);\n }\n else if (this.lead.column == this.doc.getLine(this.lead.row).length) {\n if (this.lead.row < this.doc.getLength() - 1) {\n this.moveCursorTo(this.lead.row + 1, 0);\n }\n }\n else {\n var tabSize = this.session.getTabSize();\n var cursor = this.lead;\n if (this.wouldMoveIntoSoftTab(cursor, tabSize, 1) && !this.session.getNavigateWithinSoftTabs()) {\n this.moveCursorBy(0, tabSize);\n }\n else {\n this.moveCursorBy(0, 1);\n }\n }\n };\n Selection.prototype.moveCursorLineStart = function () {\n var row = this.lead.row;\n var column = this.lead.column;\n var screenRow = this.session.documentToScreenRow(row, column);\n var firstColumnPosition = this.session.screenToDocumentPosition(screenRow, 0);\n var beforeCursor = this.session.getDisplayLine(row, null, firstColumnPosition.row, firstColumnPosition.column);\n var leadingSpace = beforeCursor.match(/^\\s*/);\n if (leadingSpace[0].length != column && !this.session.$useEmacsStyleLineStart)\n firstColumnPosition.column += leadingSpace[0].length;\n this.moveCursorToPosition(firstColumnPosition);\n };\n Selection.prototype.moveCursorLineEnd = function () {\n var lead = this.lead;\n var lineEnd = this.session.getDocumentLastRowColumnPosition(lead.row, lead.column);\n if (this.lead.column == lineEnd.column) {\n var line = this.session.getLine(lineEnd.row);\n if (lineEnd.column == line.length) {\n var textEnd = line.search(/\\s+$/);\n if (textEnd > 0)\n lineEnd.column = textEnd;\n }\n }\n this.moveCursorTo(lineEnd.row, lineEnd.column);\n };\n Selection.prototype.moveCursorFileEnd = function () {\n var row = this.doc.getLength() - 1;\n var column = this.doc.getLine(row).length;\n this.moveCursorTo(row, column);\n };\n Selection.prototype.moveCursorFileStart = function () {\n this.moveCursorTo(0, 0);\n };\n Selection.prototype.moveCursorLongWordRight = function () {\n var row = this.lead.row;\n var column = this.lead.column;\n var line = this.doc.getLine(row);\n var rightOfCursor = line.substring(column);\n this.session.nonTokenRe.lastIndex = 0;\n this.session.tokenRe.lastIndex = 0;\n var fold = this.session.getFoldAt(row, column, 1);\n if (fold) {\n this.moveCursorTo(fold.end.row, fold.end.column);\n return;\n }\n if (this.session.nonTokenRe.exec(rightOfCursor)) {\n column += this.session.nonTokenRe.lastIndex;\n this.session.nonTokenRe.lastIndex = 0;\n rightOfCursor = line.substring(column);\n }\n if (column >= line.length) {\n this.moveCursorTo(row, line.length);\n this.moveCursorRight();\n if (row < this.doc.getLength() - 1)\n this.moveCursorWordRight();\n return;\n }\n if (this.session.tokenRe.exec(rightOfCursor)) {\n column += this.session.tokenRe.lastIndex;\n this.session.tokenRe.lastIndex = 0;\n }\n this.moveCursorTo(row, column);\n };\n Selection.prototype.moveCursorLongWordLeft = function () {\n var row = this.lead.row;\n var column = this.lead.column;\n var fold;\n if (fold = this.session.getFoldAt(row, column, -1)) {\n this.moveCursorTo(fold.start.row, fold.start.column);\n return;\n }\n var str = this.session.getFoldStringAt(row, column, -1);\n if (str == null) {\n str = this.doc.getLine(row).substring(0, column);\n }\n var leftOfCursor = lang.stringReverse(str);\n this.session.nonTokenRe.lastIndex = 0;\n this.session.tokenRe.lastIndex = 0;\n if (this.session.nonTokenRe.exec(leftOfCursor)) {\n column -= this.session.nonTokenRe.lastIndex;\n leftOfCursor = leftOfCursor.slice(this.session.nonTokenRe.lastIndex);\n this.session.nonTokenRe.lastIndex = 0;\n }\n if (column <= 0) {\n this.moveCursorTo(row, 0);\n this.moveCursorLeft();\n if (row > 0)\n this.moveCursorWordLeft();\n return;\n }\n if (this.session.tokenRe.exec(leftOfCursor)) {\n column -= this.session.tokenRe.lastIndex;\n this.session.tokenRe.lastIndex = 0;\n }\n this.moveCursorTo(row, column);\n };\n Selection.prototype.$shortWordEndIndex = function (rightOfCursor) {\n var index = 0, ch;\n var whitespaceRe = /\\s/;\n var tokenRe = this.session.tokenRe;\n tokenRe.lastIndex = 0;\n if (this.session.tokenRe.exec(rightOfCursor)) {\n index = this.session.tokenRe.lastIndex;\n }\n else {\n while ((ch = rightOfCursor[index]) && whitespaceRe.test(ch))\n index++;\n if (index < 1) {\n tokenRe.lastIndex = 0;\n while ((ch = rightOfCursor[index]) && !tokenRe.test(ch)) {\n tokenRe.lastIndex = 0;\n index++;\n if (whitespaceRe.test(ch)) {\n if (index > 2) {\n index--;\n break;\n }\n else {\n while ((ch = rightOfCursor[index]) && whitespaceRe.test(ch))\n index++;\n if (index > 2)\n break;\n }\n }\n }\n }\n }\n tokenRe.lastIndex = 0;\n return index;\n };\n Selection.prototype.moveCursorShortWordRight = function () {\n var row = this.lead.row;\n var column = this.lead.column;\n var line = this.doc.getLine(row);\n var rightOfCursor = line.substring(column);\n var fold = this.session.getFoldAt(row, column, 1);\n if (fold)\n return this.moveCursorTo(fold.end.row, fold.end.column);\n if (column == line.length) {\n var l = this.doc.getLength();\n do {\n row++;\n rightOfCursor = this.doc.getLine(row);\n } while (row < l && /^\\s*$/.test(rightOfCursor));\n if (!/^\\s+/.test(rightOfCursor))\n rightOfCursor = \"\";\n column = 0;\n }\n var index = this.$shortWordEndIndex(rightOfCursor);\n this.moveCursorTo(row, column + index);\n };\n Selection.prototype.moveCursorShortWordLeft = function () {\n var row = this.lead.row;\n var column = this.lead.column;\n var fold;\n if (fold = this.session.getFoldAt(row, column, -1))\n return this.moveCursorTo(fold.start.row, fold.start.column);\n var line = this.session.getLine(row).substring(0, column);\n if (column === 0) {\n do {\n row--;\n line = this.doc.getLine(row);\n } while (row > 0 && /^\\s*$/.test(line));\n column = line.length;\n if (!/\\s+$/.test(line))\n line = \"\";\n }\n var leftOfCursor = lang.stringReverse(line);\n var index = this.$shortWordEndIndex(leftOfCursor);\n return this.moveCursorTo(row, column - index);\n };\n Selection.prototype.moveCursorWordRight = function () {\n if (this.session.$selectLongWords)\n this.moveCursorLongWordRight();\n else\n this.moveCursorShortWordRight();\n };\n Selection.prototype.moveCursorWordLeft = function () {\n if (this.session.$selectLongWords)\n this.moveCursorLongWordLeft();\n else\n this.moveCursorShortWordLeft();\n };\n Selection.prototype.moveCursorBy = function (rows, chars) {\n var screenPos = this.session.documentToScreenPosition(this.lead.row, this.lead.column);\n var offsetX;\n if (chars === 0) {\n if (rows !== 0) {\n if (this.session.$bidiHandler.isBidiRow(screenPos.row, this.lead.row)) {\n offsetX = this.session.$bidiHandler.getPosLeft(screenPos.column);\n screenPos.column = Math.round(offsetX / this.session.$bidiHandler.charWidths[0]);\n }\n else {\n offsetX = screenPos.column * this.session.$bidiHandler.charWidths[0];\n }\n }\n if (this.$desiredColumn)\n screenPos.column = this.$desiredColumn;\n else\n this.$desiredColumn = screenPos.column;\n }\n if (rows != 0 && this.session.lineWidgets && this.session.lineWidgets[this.lead.row]) {\n var widget = this.session.lineWidgets[this.lead.row];\n if (rows < 0)\n rows -= widget.rowsAbove || 0;\n else if (rows > 0)\n rows += widget.rowCount - (widget.rowsAbove || 0);\n }\n var docPos = this.session.screenToDocumentPosition(screenPos.row + rows, screenPos.column, offsetX);\n if (rows !== 0 && chars === 0 && docPos.row === this.lead.row && docPos.column === this.lead.column) {\n }\n this.moveCursorTo(docPos.row, docPos.column + chars, chars === 0);\n };\n Selection.prototype.moveCursorToPosition = function (position) {\n this.moveCursorTo(position.row, position.column);\n };\n Selection.prototype.moveCursorTo = function (row, column, keepDesiredColumn) {\n var fold = this.session.getFoldAt(row, column, 1);\n if (fold) {\n row = fold.start.row;\n column = fold.start.column;\n }\n this.$keepDesiredColumnOnChange = true;\n var line = this.session.getLine(row);\n if (/[\\uDC00-\\uDFFF]/.test(line.charAt(column)) && line.charAt(column - 1)) {\n if (this.lead.row == row && this.lead.column == column + 1)\n column = column - 1;\n else\n column = column + 1;\n }\n this.lead.setPosition(row, column);\n this.$keepDesiredColumnOnChange = false;\n if (!keepDesiredColumn)\n this.$desiredColumn = null;\n };\n Selection.prototype.moveCursorToScreen = function (row, column, keepDesiredColumn) {\n var pos = this.session.screenToDocumentPosition(row, column);\n this.moveCursorTo(pos.row, pos.column, keepDesiredColumn);\n };\n Selection.prototype.detach = function () {\n this.lead.detach();\n this.anchor.detach();\n };\n Selection.prototype.fromOrientedRange = function (range) {\n this.setSelectionRange(range, range.cursor == range.start);\n this.$desiredColumn = range.desiredColumn || this.$desiredColumn;\n };\n Selection.prototype.toOrientedRange = function (range) {\n var r = this.getRange();\n if (range) {\n range.start.column = r.start.column;\n range.start.row = r.start.row;\n range.end.column = r.end.column;\n range.end.row = r.end.row;\n }\n else {\n range = r;\n }\n range.cursor = this.isBackwards() ? range.start : range.end;\n range.desiredColumn = this.$desiredColumn;\n return range;\n };\n Selection.prototype.getRangeOfMovements = function (func) {\n var start = this.getCursor();\n try {\n func(this);\n var end = this.getCursor();\n return Range.fromPoints(start, end);\n }\n catch (e) {\n return Range.fromPoints(start, start);\n }\n finally {\n this.moveCursorToPosition(start);\n }\n };\n Selection.prototype.toJSON = function () {\n if (this.rangeCount) {\n var data = this.ranges.map(function (r) {\n var r1 = r.clone();\n r1.isBackwards = r.cursor == r.start;\n return r1;\n });\n }\n else {\n var data = this.getRange();\n data.isBackwards = this.isBackwards();\n }\n return data;\n };\n Selection.prototype.fromJSON = function (data) {\n if (data.start == undefined) {\n if (this.rangeList && data.length > 1) {\n this.toSingleRange(data[0]);\n for (var i = data.length; i--;) {\n var r = Range.fromPoints(data[i].start, data[i].end);\n if (data[i].isBackwards)\n r.cursor = r.start;\n this.addRange(r, true);\n }\n return;\n }\n else {\n data = data[0];\n }\n }\n if (this.rangeList)\n this.toSingleRange(data);\n this.setSelectionRange(data, data.isBackwards);\n };\n Selection.prototype.isEqual = function (data) {\n if ((data.length || this.rangeCount) && data.length != this.rangeCount)\n return false;\n if (!data.length || !this.ranges)\n return this.getRange().isEqual(data);\n for (var i = this.ranges.length; i--;) {\n if (!this.ranges[i].isEqual(data[i]))\n return false;\n }\n return true;\n };\n return Selection;\n}());\nSelection.prototype.setSelectionAnchor = Selection.prototype.setAnchor;\nSelection.prototype.getSelectionAnchor = Selection.prototype.getAnchor;\nSelection.prototype.setSelectionRange = Selection.prototype.setRange;\noop.implement(Selection.prototype, EventEmitter);\nexports.Selection = Selection;\n\n});\n\nace.define(\"ace/tokenizer\",[\"require\",\"exports\",\"module\",\"ace/lib/report_error\"], function(require, exports, module){\"use strict\";\nvar reportError = require(\"./lib/report_error\").reportError;\nvar MAX_TOKEN_COUNT = 2000;\nvar Tokenizer = /** @class */ (function () {\n function Tokenizer(rules) {\n this.states = rules;\n this.regExps = {};\n this.matchMappings = {};\n for (var key in this.states) {\n var state = this.states[key];\n var ruleRegExps = [];\n var matchTotal = 0;\n var mapping = this.matchMappings[key] = { defaultToken: \"text\" };\n var flag = \"g\";\n var splitterRurles = [];\n for (var i = 0; i < state.length; i++) {\n var rule = state[i];\n if (rule.defaultToken)\n mapping.defaultToken = rule.defaultToken;\n if (rule.caseInsensitive && flag.indexOf(\"i\") === -1)\n flag += \"i\";\n if (rule.unicode && flag.indexOf(\"u\") === -1)\n flag += \"u\";\n if (rule.regex == null)\n continue;\n if (rule.regex instanceof RegExp)\n rule.regex = rule.regex.toString().slice(1, -1);\n var adjustedregex = rule.regex;\n var matchcount = new RegExp(\"(?:(\" + adjustedregex + \")|(.))\").exec(\"a\").length - 2;\n if (Array.isArray(rule.token)) {\n if (rule.token.length == 1 || matchcount == 1) {\n rule.token = rule.token[0];\n }\n else if (matchcount - 1 != rule.token.length) {\n this.reportError(\"number of classes and regexp groups doesn't match\", {\n rule: rule,\n groupCount: matchcount - 1\n });\n rule.token = rule.token[0];\n }\n else {\n rule.tokenArray = rule.token;\n rule.token = null;\n rule.onMatch = this.$arrayTokens;\n }\n }\n else if (typeof rule.token == \"function\" && !rule.onMatch) {\n if (matchcount > 1)\n rule.onMatch = this.$applyToken;\n else\n rule.onMatch = rule.token;\n }\n if (matchcount > 1) {\n if (/\\\\\\d/.test(rule.regex)) {\n adjustedregex = rule.regex.replace(/\\\\([0-9]+)/g, function (match, digit) {\n return \"\\\\\" + (parseInt(digit, 10) + matchTotal + 1);\n });\n }\n else {\n matchcount = 1;\n adjustedregex = this.removeCapturingGroups(rule.regex);\n }\n if (!rule.splitRegex && typeof rule.token != \"string\")\n splitterRurles.push(rule); // flag will be known only at the very end\n }\n mapping[matchTotal] = i;\n matchTotal += matchcount;\n ruleRegExps.push(adjustedregex);\n if (!rule.onMatch)\n rule.onMatch = null;\n }\n if (!ruleRegExps.length) {\n mapping[0] = 0;\n ruleRegExps.push(\"$\");\n }\n splitterRurles.forEach(function (rule) {\n rule.splitRegex = this.createSplitterRegexp(rule.regex, flag);\n }, this);\n this.regExps[key] = new RegExp(\"(\" + ruleRegExps.join(\")|(\") + \")|($)\", flag);\n }\n }\n Tokenizer.prototype.$setMaxTokenCount = function (m) {\n MAX_TOKEN_COUNT = m | 0;\n };\n Tokenizer.prototype.$applyToken = function (str) {\n var values = this.splitRegex.exec(str).slice(1);\n var types = this.token.apply(this, values);\n if (typeof types === \"string\")\n return [{ type: types, value: str }];\n var tokens = [];\n for (var i = 0, l = types.length; i < l; i++) {\n if (values[i])\n tokens[tokens.length] = {\n type: types[i],\n value: values[i]\n };\n }\n return tokens;\n };\n Tokenizer.prototype.$arrayTokens = function (str) {\n if (!str)\n return [];\n var values = this.splitRegex.exec(str);\n if (!values)\n return \"text\";\n var tokens = [];\n var types = this.tokenArray;\n for (var i = 0, l = types.length; i < l; i++) {\n if (values[i + 1])\n tokens[tokens.length] = {\n type: types[i],\n value: values[i + 1]\n };\n }\n return tokens;\n };\n Tokenizer.prototype.removeCapturingGroups = function (src) {\n var r = src.replace(/\\\\.|\\[(?:\\\\.|[^\\\\\\]])*|\\(\\?[:=!<]|(\\()/g, function (x, y) { return y ? \"(?:\" : x; });\n return r;\n };\n Tokenizer.prototype.createSplitterRegexp = function (src, flag) {\n if (src.indexOf(\"(?=\") != -1) {\n var stack = 0;\n var inChClass = false;\n var lastCapture = {};\n src.replace(/(\\\\.)|(\\((?:\\?[=!])?)|(\\))|([\\[\\]])/g, function (m, esc, parenOpen, parenClose, square, index) {\n if (inChClass) {\n inChClass = square != \"]\";\n }\n else if (square) {\n inChClass = true;\n }\n else if (parenClose) {\n if (stack == lastCapture.stack) {\n lastCapture.end = index + 1;\n lastCapture.stack = -1;\n }\n stack--;\n }\n else if (parenOpen) {\n stack++;\n if (parenOpen.length != 1) {\n lastCapture.stack = stack;\n lastCapture.start = index;\n }\n }\n return m;\n });\n if (lastCapture.end != null && /^\\)*$/.test(src.substr(lastCapture.end)))\n src = src.substring(0, lastCapture.start) + src.substr(lastCapture.end);\n }\n if (src.charAt(0) != \"^\")\n src = \"^\" + src;\n if (src.charAt(src.length - 1) != \"$\")\n src += \"$\";\n return new RegExp(src, (flag || \"\").replace(\"g\", \"\"));\n };\n Tokenizer.prototype.getLineTokens = function (line, startState) {\n if (startState && typeof startState != \"string\") {\n var stack = startState.slice(0);\n startState = stack[0];\n if (startState === \"#tmp\") {\n stack.shift();\n startState = stack.shift();\n }\n }\n else\n var stack = [];\n var currentState = startState || \"start\";\n var state = this.states[currentState];\n if (!state) {\n currentState = \"start\";\n state = this.states[currentState];\n }\n var mapping = this.matchMappings[currentState];\n var re = this.regExps[currentState];\n re.lastIndex = 0;\n var match, tokens = [];\n var lastIndex = 0;\n var matchAttempts = 0;\n var token = { type: null, value: \"\" };\n while (match = re.exec(line)) {\n var type = mapping.defaultToken;\n var rule = null;\n var value = match[0];\n var index = re.lastIndex;\n if (index - value.length > lastIndex) {\n var skipped = line.substring(lastIndex, index - value.length);\n if (token.type == type) {\n token.value += skipped;\n }\n else {\n if (token.type)\n tokens.push(token);\n token = { type: type, value: skipped };\n }\n }\n for (var i = 0; i < match.length - 2; i++) {\n if (match[i + 1] === undefined)\n continue;\n rule = state[mapping[i]];\n if (rule.onMatch)\n type = rule.onMatch(value, currentState, stack, line);\n else\n type = rule.token;\n if (rule.next) {\n if (typeof rule.next == \"string\") {\n currentState = rule.next;\n }\n else {\n currentState = rule.next(currentState, stack);\n }\n state = this.states[currentState];\n if (!state) {\n this.reportError(\"state doesn't exist\", currentState);\n currentState = \"start\";\n state = this.states[currentState];\n }\n mapping = this.matchMappings[currentState];\n lastIndex = index;\n re = this.regExps[currentState];\n re.lastIndex = index;\n }\n if (rule.consumeLineEnd)\n lastIndex = index;\n break;\n }\n if (value) {\n if (typeof type === \"string\") {\n if ((!rule || rule.merge !== false) && token.type === type) {\n token.value += value;\n }\n else {\n if (token.type)\n tokens.push(token);\n token = { type: type, value: value };\n }\n }\n else if (type) {\n if (token.type)\n tokens.push(token);\n token = { type: null, value: \"\" };\n for (var i = 0; i < type.length; i++)\n tokens.push(type[i]);\n }\n }\n if (lastIndex == line.length)\n break;\n lastIndex = index;\n if (matchAttempts++ > MAX_TOKEN_COUNT) {\n if (matchAttempts > 2 * line.length) {\n this.reportError(\"infinite loop with in ace tokenizer\", {\n startState: startState,\n line: line\n });\n }\n while (lastIndex < line.length) {\n if (token.type)\n tokens.push(token);\n token = {\n value: line.substring(lastIndex, lastIndex += 500),\n type: \"overflow\"\n };\n }\n currentState = \"start\";\n stack = [];\n break;\n }\n }\n if (token.type)\n tokens.push(token);\n if (stack.length > 1) {\n if (stack[0] !== currentState)\n stack.unshift(\"#tmp\", currentState);\n }\n return {\n tokens: tokens,\n state: stack.length ? stack : currentState\n };\n };\n return Tokenizer;\n}());\nTokenizer.prototype.reportError = reportError;\nexports.Tokenizer = Tokenizer;\n\n});\n\nace.define(\"ace/mode/text_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/deep_copy\"], function(require, exports, module){\"use strict\";\nvar deepCopy = require(\"../lib/deep_copy\").deepCopy;\nvar TextHighlightRules = function () {\n this.$rules = {\n \"start\": [{\n token: \"empty_line\",\n regex: '^$'\n }, {\n defaultToken: \"text\"\n }]\n };\n};\n(function () {\n this.addRules = function (rules, prefix) {\n if (!prefix) {\n for (var key in rules)\n this.$rules[key] = rules[key];\n return;\n }\n for (var key in rules) {\n var state = rules[key];\n for (var i = 0; i < state.length; i++) {\n var rule = state[i];\n if (rule.next || rule.onMatch) {\n if (typeof rule.next == \"string\") {\n if (rule.next.indexOf(prefix) !== 0)\n rule.next = prefix + rule.next;\n }\n if (rule.nextState && rule.nextState.indexOf(prefix) !== 0)\n rule.nextState = prefix + rule.nextState;\n }\n }\n this.$rules[prefix + key] = state;\n }\n };\n this.getRules = function () {\n return this.$rules;\n };\n this.embedRules = function (HighlightRules, prefix, escapeRules, states, append) {\n var embedRules = typeof HighlightRules == \"function\"\n ? new HighlightRules().getRules()\n : HighlightRules;\n if (states) {\n for (var i = 0; i < states.length; i++)\n states[i] = prefix + states[i];\n }\n else {\n states = [];\n for (var key in embedRules)\n states.push(prefix + key);\n }\n this.addRules(embedRules, prefix);\n if (escapeRules) {\n var addRules = Array.prototype[append ? \"push\" : \"unshift\"];\n for (var i = 0; i < states.length; i++)\n addRules.apply(this.$rules[states[i]], deepCopy(escapeRules));\n }\n if (!this.$embeds)\n this.$embeds = [];\n this.$embeds.push(prefix);\n };\n this.getEmbeds = function () {\n return this.$embeds;\n };\n var pushState = function (currentState, stack) {\n if (currentState != \"start\" || stack.length)\n stack.unshift(this.nextState, currentState);\n return this.nextState;\n };\n var popState = function (currentState, stack) {\n stack.shift();\n return stack.shift() || \"start\";\n };\n this.normalizeRules = function () {\n var id = 0;\n var rules = this.$rules;\n function processState(key) {\n var state = rules[key];\n state.processed = true;\n for (var i = 0; i < state.length; i++) {\n var rule = state[i];\n var toInsert = null;\n if (Array.isArray(rule)) {\n toInsert = rule;\n rule = {};\n }\n if (!rule.regex && rule.start) {\n rule.regex = rule.start;\n if (!rule.next)\n rule.next = [];\n rule.next.push({\n defaultToken: rule.token\n }, {\n token: rule.token + \".end\",\n regex: rule.end || rule.start,\n next: \"pop\"\n });\n rule.token = rule.token + \".start\";\n rule.push = true;\n }\n var next = rule.next || rule.push;\n if (next && Array.isArray(next)) {\n var stateName = rule.stateName;\n if (!stateName) {\n stateName = rule.token;\n if (typeof stateName != \"string\")\n stateName = stateName[0] || \"\";\n if (rules[stateName])\n stateName += id++;\n }\n rules[stateName] = next;\n rule.next = stateName;\n processState(stateName);\n }\n else if (next == \"pop\") {\n rule.next = popState;\n }\n if (rule.push) {\n rule.nextState = rule.next || rule.push;\n rule.next = pushState;\n delete rule.push;\n }\n if (rule.rules) {\n for (var r in rule.rules) {\n if (rules[r]) {\n if (rules[r].push)\n rules[r].push.apply(rules[r], rule.rules[r]);\n }\n else {\n rules[r] = rule.rules[r];\n }\n }\n }\n var includeName = typeof rule == \"string\" ? rule : rule.include;\n if (includeName) {\n if (includeName === \"$self\")\n includeName = \"start\";\n if (Array.isArray(includeName))\n toInsert = includeName.map(function (x) { return rules[x]; });\n else\n toInsert = rules[includeName];\n }\n if (toInsert) {\n var args = [i, 1].concat(toInsert);\n if (rule.noEscape)\n args = args.filter(function (x) { return !x.next; });\n state.splice.apply(state, args);\n i--;\n }\n if (rule.keywordMap) {\n rule.token = this.createKeywordMapper(rule.keywordMap, rule.defaultToken || \"text\", rule.caseInsensitive);\n delete rule.defaultToken;\n }\n }\n }\n Object.keys(rules).forEach(processState, this);\n };\n this.createKeywordMapper = function (map, defaultToken, ignoreCase, splitChar) {\n var keywords = Object.create(null);\n this.$keywordList = [];\n Object.keys(map).forEach(function (className) {\n var a = map[className];\n var list = a.split(splitChar || \"|\");\n for (var i = list.length; i--;) {\n var word = list[i];\n this.$keywordList.push(word);\n if (ignoreCase)\n word = word.toLowerCase();\n keywords[word] = className;\n }\n }, this);\n map = null;\n return ignoreCase\n ? function (value) { return keywords[value.toLowerCase()] || defaultToken; }\n : function (value) { return keywords[value] || defaultToken; };\n };\n this.getKeywords = function () {\n return this.$keywords;\n };\n}).call(TextHighlightRules.prototype);\nexports.TextHighlightRules = TextHighlightRules;\n\n});\n\nace.define(\"ace/mode/behaviour\",[\"require\",\"exports\",\"module\"], function(require, exports, module){\"use strict\";\nvar Behaviour = function () {\n this.$behaviours = {};\n};\n(function () {\n this.add = function (name, action, callback) {\n switch (undefined) {\n case this.$behaviours:\n this.$behaviours = {};\n case this.$behaviours[name]:\n this.$behaviours[name] = {};\n }\n this.$behaviours[name][action] = callback;\n };\n this.addBehaviours = function (behaviours) {\n for (var key in behaviours) {\n for (var action in behaviours[key]) {\n this.add(key, action, behaviours[key][action]);\n }\n }\n };\n this.remove = function (name) {\n if (this.$behaviours && this.$behaviours[name]) {\n delete this.$behaviours[name];\n }\n };\n this.inherit = function (mode, filter) {\n if (typeof mode === \"function\") {\n var behaviours = new mode().getBehaviours(filter);\n }\n else {\n var behaviours = mode.getBehaviours(filter);\n }\n this.addBehaviours(behaviours);\n };\n this.getBehaviours = function (filter) {\n if (!filter) {\n return this.$behaviours;\n }\n else {\n var ret = {};\n for (var i = 0; i < filter.length; i++) {\n if (this.$behaviours[filter[i]]) {\n ret[filter[i]] = this.$behaviours[filter[i]];\n }\n }\n return ret;\n }\n };\n}).call(Behaviour.prototype);\nexports.Behaviour = Behaviour;\n\n});\n\nace.define(\"ace/token_iterator\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar Range = require(\"./range\").Range;\nvar TokenIterator = /** @class */ (function () {\n function TokenIterator(session, initialRow, initialColumn) {\n this.$session = session;\n this.$row = initialRow;\n this.$rowTokens = session.getTokens(initialRow);\n var token = session.getTokenAt(initialRow, initialColumn);\n this.$tokenIndex = token ? token.index : -1;\n }\n TokenIterator.prototype.stepBackward = function () {\n this.$tokenIndex -= 1;\n while (this.$tokenIndex < 0) {\n this.$row -= 1;\n if (this.$row < 0) {\n this.$row = 0;\n return null;\n }\n this.$rowTokens = this.$session.getTokens(this.$row);\n this.$tokenIndex = this.$rowTokens.length - 1;\n }\n return this.$rowTokens[this.$tokenIndex];\n };\n TokenIterator.prototype.stepForward = function () {\n this.$tokenIndex += 1;\n var rowCount;\n while (this.$tokenIndex >= this.$rowTokens.length) {\n this.$row += 1;\n if (!rowCount)\n rowCount = this.$session.getLength();\n if (this.$row >= rowCount) {\n this.$row = rowCount - 1;\n return null;\n }\n this.$rowTokens = this.$session.getTokens(this.$row);\n this.$tokenIndex = 0;\n }\n return this.$rowTokens[this.$tokenIndex];\n };\n TokenIterator.prototype.getCurrentToken = function () {\n return this.$rowTokens[this.$tokenIndex];\n };\n TokenIterator.prototype.getCurrentTokenRow = function () {\n return this.$row;\n };\n TokenIterator.prototype.getCurrentTokenColumn = function () {\n var rowTokens = this.$rowTokens;\n var tokenIndex = this.$tokenIndex;\n var column = rowTokens[tokenIndex].start;\n if (column !== undefined)\n return column;\n column = 0;\n while (tokenIndex > 0) {\n tokenIndex -= 1;\n column += rowTokens[tokenIndex].value.length;\n }\n return column;\n };\n TokenIterator.prototype.getCurrentTokenPosition = function () {\n return { row: this.$row, column: this.getCurrentTokenColumn() };\n };\n TokenIterator.prototype.getCurrentTokenRange = function () {\n var token = this.$rowTokens[this.$tokenIndex];\n var column = this.getCurrentTokenColumn();\n return new Range(this.$row, column, this.$row, column + token.value.length);\n };\n return TokenIterator;\n}());\nexports.TokenIterator = TokenIterator;\n\n});\n\nace.define(\"ace/mode/behaviour/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/behaviour\",\"ace/token_iterator\",\"ace/lib/lang\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../../lib/oop\");\nvar Behaviour = require(\"../behaviour\").Behaviour;\nvar TokenIterator = require(\"../../token_iterator\").TokenIterator;\nvar lang = require(\"../../lib/lang\");\nvar SAFE_INSERT_IN_TOKENS = [\"text\", \"paren.rparen\", \"rparen\", \"paren\", \"punctuation.operator\"];\nvar SAFE_INSERT_BEFORE_TOKENS = [\"text\", \"paren.rparen\", \"rparen\", \"paren\", \"punctuation.operator\", \"comment\"];\nvar context;\nvar contextCache = {};\nvar defaultQuotes = { '\"': '\"', \"'\": \"'\" };\nvar initContext = function (editor) {\n var id = -1;\n if (editor.multiSelect) {\n id = editor.selection.index;\n if (contextCache.rangeCount != editor.multiSelect.rangeCount)\n contextCache = { rangeCount: editor.multiSelect.rangeCount };\n }\n if (contextCache[id])\n return context = contextCache[id];\n context = contextCache[id] = {\n autoInsertedBrackets: 0,\n autoInsertedRow: -1,\n autoInsertedLineEnd: \"\",\n maybeInsertedBrackets: 0,\n maybeInsertedRow: -1,\n maybeInsertedLineStart: \"\",\n maybeInsertedLineEnd: \"\"\n };\n};\nvar getWrapped = function (selection, selected, opening, closing) {\n var rowDiff = selection.end.row - selection.start.row;\n return {\n text: opening + selected + closing,\n selection: [\n 0,\n selection.start.column + 1,\n rowDiff,\n selection.end.column + (rowDiff ? 0 : 1)\n ]\n };\n};\nvar CstyleBehaviour = function (options) {\n options = options || {};\n this.add(\"braces\", \"insertion\", function (state, action, editor, session, text) {\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n if (text == '{') {\n initContext(editor);\n var selection = editor.getSelectionRange();\n var selected = session.doc.getTextRange(selection);\n if (selected !== \"\" && selected !== \"{\" && editor.getWrapBehavioursEnabled()) {\n return getWrapped(selection, selected, '{', '}');\n }\n else if (CstyleBehaviour.isSaneInsertion(editor, session)) {\n if (/[\\]\\}\\)]/.test(line[cursor.column]) || editor.inMultiSelectMode || options.braces) {\n CstyleBehaviour.recordAutoInsert(editor, session, \"}\");\n return {\n text: '{}',\n selection: [1, 1]\n };\n }\n else {\n CstyleBehaviour.recordMaybeInsert(editor, session, \"{\");\n return {\n text: '{',\n selection: [1, 1]\n };\n }\n }\n }\n else if (text == '}') {\n initContext(editor);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n if (rightChar == '}') {\n var matching = session.$findOpeningBracket('}', { column: cursor.column + 1, row: cursor.row });\n if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) {\n CstyleBehaviour.popAutoInsertedClosing();\n return {\n text: '',\n selection: [1, 1]\n };\n }\n }\n }\n else if (text == \"\\n\" || text == \"\\r\\n\") {\n initContext(editor);\n var closing = \"\";\n if (CstyleBehaviour.isMaybeInsertedClosing(cursor, line)) {\n closing = lang.stringRepeat(\"}\", context.maybeInsertedBrackets);\n CstyleBehaviour.clearMaybeInsertedClosing();\n }\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n if (rightChar === '}') {\n var openBracePos = session.findMatchingBracket({ row: cursor.row, column: cursor.column + 1 }, '}');\n if (!openBracePos)\n return null;\n var next_indent = this.$getIndent(session.getLine(openBracePos.row));\n }\n else if (closing) {\n var next_indent = this.$getIndent(line);\n }\n else {\n CstyleBehaviour.clearMaybeInsertedClosing();\n return;\n }\n var indent = next_indent + session.getTabString();\n return {\n text: '\\n' + indent + '\\n' + next_indent + closing,\n selection: [1, indent.length, 1, indent.length]\n };\n }\n else {\n CstyleBehaviour.clearMaybeInsertedClosing();\n }\n });\n this.add(\"braces\", \"deletion\", function (state, action, editor, session, range) {\n var selected = session.doc.getTextRange(range);\n if (!range.isMultiLine() && selected == '{') {\n initContext(editor);\n var line = session.doc.getLine(range.start.row);\n var rightChar = line.substring(range.end.column, range.end.column + 1);\n if (rightChar == '}') {\n range.end.column++;\n return range;\n }\n else {\n context.maybeInsertedBrackets--;\n }\n }\n });\n this.add(\"parens\", \"insertion\", function (state, action, editor, session, text) {\n if (text == '(') {\n initContext(editor);\n var selection = editor.getSelectionRange();\n var selected = session.doc.getTextRange(selection);\n if (selected !== \"\" && editor.getWrapBehavioursEnabled()) {\n return getWrapped(selection, selected, '(', ')');\n }\n else if (CstyleBehaviour.isSaneInsertion(editor, session)) {\n CstyleBehaviour.recordAutoInsert(editor, session, \")\");\n return {\n text: '()',\n selection: [1, 1]\n };\n }\n }\n else if (text == ')') {\n initContext(editor);\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n if (rightChar == ')') {\n var matching = session.$findOpeningBracket(')', { column: cursor.column + 1, row: cursor.row });\n if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) {\n CstyleBehaviour.popAutoInsertedClosing();\n return {\n text: '',\n selection: [1, 1]\n };\n }\n }\n }\n });\n this.add(\"parens\", \"deletion\", function (state, action, editor, session, range) {\n var selected = session.doc.getTextRange(range);\n if (!range.isMultiLine() && selected == '(') {\n initContext(editor);\n var line = session.doc.getLine(range.start.row);\n var rightChar = line.substring(range.start.column + 1, range.start.column + 2);\n if (rightChar == ')') {\n range.end.column++;\n return range;\n }\n }\n });\n this.add(\"brackets\", \"insertion\", function (state, action, editor, session, text) {\n if (text == '[') {\n initContext(editor);\n var selection = editor.getSelectionRange();\n var selected = session.doc.getTextRange(selection);\n if (selected !== \"\" && editor.getWrapBehavioursEnabled()) {\n return getWrapped(selection, selected, '[', ']');\n }\n else if (CstyleBehaviour.isSaneInsertion(editor, session)) {\n CstyleBehaviour.recordAutoInsert(editor, session, \"]\");\n return {\n text: '[]',\n selection: [1, 1]\n };\n }\n }\n else if (text == ']') {\n initContext(editor);\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n if (rightChar == ']') {\n var matching = session.$findOpeningBracket(']', { column: cursor.column + 1, row: cursor.row });\n if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) {\n CstyleBehaviour.popAutoInsertedClosing();\n return {\n text: '',\n selection: [1, 1]\n };\n }\n }\n }\n });\n this.add(\"brackets\", \"deletion\", function (state, action, editor, session, range) {\n var selected = session.doc.getTextRange(range);\n if (!range.isMultiLine() && selected == '[') {\n initContext(editor);\n var line = session.doc.getLine(range.start.row);\n var rightChar = line.substring(range.start.column + 1, range.start.column + 2);\n if (rightChar == ']') {\n range.end.column++;\n return range;\n }\n }\n });\n this.add(\"string_dquotes\", \"insertion\", function (state, action, editor, session, text) {\n var quotes = session.$mode.$quotes || defaultQuotes;\n if (text.length == 1 && quotes[text]) {\n if (this.lineCommentStart && this.lineCommentStart.indexOf(text) != -1)\n return;\n initContext(editor);\n var quote = text;\n var selection = editor.getSelectionRange();\n var selected = session.doc.getTextRange(selection);\n if (selected !== \"\" && (selected.length != 1 || !quotes[selected]) && editor.getWrapBehavioursEnabled()) {\n return getWrapped(selection, selected, quote, quote);\n }\n else if (!selected) {\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n var leftChar = line.substring(cursor.column - 1, cursor.column);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n var token = session.getTokenAt(cursor.row, cursor.column);\n var rightToken = session.getTokenAt(cursor.row, cursor.column + 1);\n if (leftChar == \"\\\\\" && token && /escape/.test(token.type))\n return null;\n var stringBefore = token && /string|escape/.test(token.type);\n var stringAfter = !rightToken || /string|escape/.test(rightToken.type);\n var pair;\n if (rightChar == quote) {\n pair = stringBefore !== stringAfter;\n if (pair && /string\\.end/.test(rightToken.type))\n pair = false;\n }\n else {\n if (stringBefore && !stringAfter)\n return null; // wrap string with different quote\n if (stringBefore && stringAfter)\n return null; // do not pair quotes inside strings\n var wordRe = session.$mode.tokenRe;\n wordRe.lastIndex = 0;\n var isWordBefore = wordRe.test(leftChar);\n wordRe.lastIndex = 0;\n var isWordAfter = wordRe.test(rightChar);\n var pairQuotesAfter = session.$mode.$pairQuotesAfter;\n var shouldPairQuotes = pairQuotesAfter && pairQuotesAfter[quote] && pairQuotesAfter[quote].test(leftChar);\n if ((!shouldPairQuotes && isWordBefore) || isWordAfter)\n return null; // before or after alphanumeric\n if (rightChar && !/[\\s;,.})\\]\\\\]/.test(rightChar))\n return null; // there is rightChar and it isn't closing\n var charBefore = line[cursor.column - 2];\n if (leftChar == quote && (charBefore == quote || wordRe.test(charBefore)))\n return null;\n pair = true;\n }\n return {\n text: pair ? quote + quote : \"\",\n selection: [1, 1]\n };\n }\n }\n });\n this.add(\"string_dquotes\", \"deletion\", function (state, action, editor, session, range) {\n var quotes = session.$mode.$quotes || defaultQuotes;\n var selected = session.doc.getTextRange(range);\n if (!range.isMultiLine() && quotes.hasOwnProperty(selected)) {\n initContext(editor);\n var line = session.doc.getLine(range.start.row);\n var rightChar = line.substring(range.start.column + 1, range.start.column + 2);\n if (rightChar == selected) {\n range.end.column++;\n return range;\n }\n }\n });\n if (options.closeDocComment !== false) {\n this.add(\"doc comment end\", \"insertion\", function (state, action, editor, session, text) {\n if (state === \"doc-start\" && (text === \"\\n\" || text === \"\\r\\n\") && editor.selection.isEmpty()) {\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n var nextLine = session.doc.getLine(cursor.row + 1);\n var indent = this.$getIndent(line);\n if (/\\s*\\*/.test(nextLine)) {\n if (/^\\s*\\*/.test(line)) {\n return {\n text: text + indent + \"* \",\n selection: [1, 3 + indent.length, 1, 3 + indent.length]\n };\n }\n else {\n return {\n text: text + indent + \" * \",\n selection: [1, 3 + indent.length, 1, 3 + indent.length]\n };\n }\n }\n if (/\\/\\*\\*/.test(line.substring(0, cursor.column))) {\n return {\n text: text + indent + \" * \" + text + \" \" + indent + \"*/\",\n selection: [1, 4 + indent.length, 1, 4 + indent.length]\n };\n }\n }\n });\n }\n};\nCstyleBehaviour.isSaneInsertion = function (editor, session) {\n var cursor = editor.getCursorPosition();\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n if (!this.$matchTokenType(iterator.getCurrentToken() || \"text\", SAFE_INSERT_IN_TOKENS)) {\n if (/[)}\\]]/.test(editor.session.getLine(cursor.row)[cursor.column]))\n return true;\n var iterator2 = new TokenIterator(session, cursor.row, cursor.column + 1);\n if (!this.$matchTokenType(iterator2.getCurrentToken() || \"text\", SAFE_INSERT_IN_TOKENS))\n return false;\n }\n iterator.stepForward();\n return iterator.getCurrentTokenRow() !== cursor.row ||\n this.$matchTokenType(iterator.getCurrentToken() || \"text\", SAFE_INSERT_BEFORE_TOKENS);\n};\nCstyleBehaviour.$matchTokenType = function (token, types) {\n return types.indexOf(token.type || token) > -1;\n};\nCstyleBehaviour.recordAutoInsert = function (editor, session, bracket) {\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n if (!this.isAutoInsertedClosing(cursor, line, context.autoInsertedLineEnd[0]))\n context.autoInsertedBrackets = 0;\n context.autoInsertedRow = cursor.row;\n context.autoInsertedLineEnd = bracket + line.substr(cursor.column);\n context.autoInsertedBrackets++;\n};\nCstyleBehaviour.recordMaybeInsert = function (editor, session, bracket) {\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n if (!this.isMaybeInsertedClosing(cursor, line))\n context.maybeInsertedBrackets = 0;\n context.maybeInsertedRow = cursor.row;\n context.maybeInsertedLineStart = line.substr(0, cursor.column) + bracket;\n context.maybeInsertedLineEnd = line.substr(cursor.column);\n context.maybeInsertedBrackets++;\n};\nCstyleBehaviour.isAutoInsertedClosing = function (cursor, line, bracket) {\n return context.autoInsertedBrackets > 0 &&\n cursor.row === context.autoInsertedRow &&\n bracket === context.autoInsertedLineEnd[0] &&\n line.substr(cursor.column) === context.autoInsertedLineEnd;\n};\nCstyleBehaviour.isMaybeInsertedClosing = function (cursor, line) {\n return context.maybeInsertedBrackets > 0 &&\n cursor.row === context.maybeInsertedRow &&\n line.substr(cursor.column) === context.maybeInsertedLineEnd &&\n line.substr(0, cursor.column) == context.maybeInsertedLineStart;\n};\nCstyleBehaviour.popAutoInsertedClosing = function () {\n context.autoInsertedLineEnd = context.autoInsertedLineEnd.substr(1);\n context.autoInsertedBrackets--;\n};\nCstyleBehaviour.clearMaybeInsertedClosing = function () {\n if (context) {\n context.maybeInsertedBrackets = 0;\n context.maybeInsertedRow = -1;\n }\n};\noop.inherits(CstyleBehaviour, Behaviour);\nexports.CstyleBehaviour = CstyleBehaviour;\n\n});\n\nace.define(\"ace/unicode\",[\"require\",\"exports\",\"module\"], function(require, exports, module){\"use strict\";\nvar wordChars = [48, 9, 8, 25, 5, 0, 2, 25, 48, 0, 11, 0, 5, 0, 6, 22, 2, 30, 2, 457, 5, 11, 15, 4, 8, 0, 2, 0, 18, 116, 2, 1, 3, 3, 9, 0, 2, 2, 2, 0, 2, 19, 2, 82, 2, 138, 2, 4, 3, 155, 12, 37, 3, 0, 8, 38, 10, 44, 2, 0, 2, 1, 2, 1, 2, 0, 9, 26, 6, 2, 30, 10, 7, 61, 2, 9, 5, 101, 2, 7, 3, 9, 2, 18, 3, 0, 17, 58, 3, 100, 15, 53, 5, 0, 6, 45, 211, 57, 3, 18, 2, 5, 3, 11, 3, 9, 2, 1, 7, 6, 2, 2, 2, 7, 3, 1, 3, 21, 2, 6, 2, 0, 4, 3, 3, 8, 3, 1, 3, 3, 9, 0, 5, 1, 2, 4, 3, 11, 16, 2, 2, 5, 5, 1, 3, 21, 2, 6, 2, 1, 2, 1, 2, 1, 3, 0, 2, 4, 5, 1, 3, 2, 4, 0, 8, 3, 2, 0, 8, 15, 12, 2, 2, 8, 2, 2, 2, 21, 2, 6, 2, 1, 2, 4, 3, 9, 2, 2, 2, 2, 3, 0, 16, 3, 3, 9, 18, 2, 2, 7, 3, 1, 3, 21, 2, 6, 2, 1, 2, 4, 3, 8, 3, 1, 3, 2, 9, 1, 5, 1, 2, 4, 3, 9, 2, 0, 17, 1, 2, 5, 4, 2, 2, 3, 4, 1, 2, 0, 2, 1, 4, 1, 4, 2, 4, 11, 5, 4, 4, 2, 2, 3, 3, 0, 7, 0, 15, 9, 18, 2, 2, 7, 2, 2, 2, 22, 2, 9, 2, 4, 4, 7, 2, 2, 2, 3, 8, 1, 2, 1, 7, 3, 3, 9, 19, 1, 2, 7, 2, 2, 2, 22, 2, 9, 2, 4, 3, 8, 2, 2, 2, 3, 8, 1, 8, 0, 2, 3, 3, 9, 19, 1, 2, 7, 2, 2, 2, 22, 2, 15, 4, 7, 2, 2, 2, 3, 10, 0, 9, 3, 3, 9, 11, 5, 3, 1, 2, 17, 4, 23, 2, 8, 2, 0, 3, 6, 4, 0, 5, 5, 2, 0, 2, 7, 19, 1, 14, 57, 6, 14, 2, 9, 40, 1, 2, 0, 3, 1, 2, 0, 3, 0, 7, 3, 2, 6, 2, 2, 2, 0, 2, 0, 3, 1, 2, 12, 2, 2, 3, 4, 2, 0, 2, 5, 3, 9, 3, 1, 35, 0, 24, 1, 7, 9, 12, 0, 2, 0, 2, 0, 5, 9, 2, 35, 5, 19, 2, 5, 5, 7, 2, 35, 10, 0, 58, 73, 7, 77, 3, 37, 11, 42, 2, 0, 4, 328, 2, 3, 3, 6, 2, 0, 2, 3, 3, 40, 2, 3, 3, 32, 2, 3, 3, 6, 2, 0, 2, 3, 3, 14, 2, 56, 2, 3, 3, 66, 5, 0, 33, 15, 17, 84, 13, 619, 3, 16, 2, 25, 6, 74, 22, 12, 2, 6, 12, 20, 12, 19, 13, 12, 2, 2, 2, 1, 13, 51, 3, 29, 4, 0, 5, 1, 3, 9, 34, 2, 3, 9, 7, 87, 9, 42, 6, 69, 11, 28, 4, 11, 5, 11, 11, 39, 3, 4, 12, 43, 5, 25, 7, 10, 38, 27, 5, 62, 2, 28, 3, 10, 7, 9, 14, 0, 89, 75, 5, 9, 18, 8, 13, 42, 4, 11, 71, 55, 9, 9, 4, 48, 83, 2, 2, 30, 14, 230, 23, 280, 3, 5, 3, 37, 3, 5, 3, 7, 2, 0, 2, 0, 2, 0, 2, 30, 3, 52, 2, 6, 2, 0, 4, 2, 2, 6, 4, 3, 3, 5, 5, 12, 6, 2, 2, 6, 67, 1, 20, 0, 29, 0, 14, 0, 17, 4, 60, 12, 5, 0, 4, 11, 18, 0, 5, 0, 3, 9, 2, 0, 4, 4, 7, 0, 2, 0, 2, 0, 2, 3, 2, 10, 3, 3, 6, 4, 5, 0, 53, 1, 2684, 46, 2, 46, 2, 132, 7, 6, 15, 37, 11, 53, 10, 0, 17, 22, 10, 6, 2, 6, 2, 6, 2, 6, 2, 6, 2, 6, 2, 6, 2, 6, 2, 31, 48, 0, 470, 1, 36, 5, 2, 4, 6, 1, 5, 85, 3, 1, 3, 2, 2, 89, 2, 3, 6, 40, 4, 93, 18, 23, 57, 15, 513, 6581, 75, 20939, 53, 1164, 68, 45, 3, 268, 4, 27, 21, 31, 3, 13, 13, 1, 2, 24, 9, 69, 11, 1, 38, 8, 3, 102, 3, 1, 111, 44, 25, 51, 13, 68, 12, 9, 7, 23, 4, 0, 5, 45, 3, 35, 13, 28, 4, 64, 15, 10, 39, 54, 10, 13, 3, 9, 7, 22, 4, 1, 5, 66, 25, 2, 227, 42, 2, 1, 3, 9, 7, 11171, 13, 22, 5, 48, 8453, 301, 3, 61, 3, 105, 39, 6, 13, 4, 6, 11, 2, 12, 2, 4, 2, 0, 2, 1, 2, 1, 2, 107, 34, 362, 19, 63, 3, 53, 41, 11, 5, 15, 17, 6, 13, 1, 25, 2, 33, 4, 2, 134, 20, 9, 8, 25, 5, 0, 2, 25, 12, 88, 4, 5, 3, 5, 3, 5, 3, 2];\nvar code = 0;\nvar str = [];\nfor (var i = 0; i < wordChars.length; i += 2) {\n str.push(code += wordChars[i]);\n if (wordChars[i + 1])\n str.push(45, code += wordChars[i + 1]);\n}\nexports.wordChars = String.fromCharCode.apply(null, str);\n\n});\n\nace.define(\"ace/mode/text\",[\"require\",\"exports\",\"module\",\"ace/config\",\"ace/tokenizer\",\"ace/mode/text_highlight_rules\",\"ace/mode/behaviour/cstyle\",\"ace/unicode\",\"ace/lib/lang\",\"ace/token_iterator\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar config = require(\"../config\");\nvar Tokenizer = require(\"../tokenizer\").Tokenizer;\nvar TextHighlightRules = require(\"./text_highlight_rules\").TextHighlightRules;\nvar CstyleBehaviour = require(\"./behaviour/cstyle\").CstyleBehaviour;\nvar unicode = require(\"../unicode\");\nvar lang = require(\"../lib/lang\");\nvar TokenIterator = require(\"../token_iterator\").TokenIterator;\nvar Range = require(\"../range\").Range;\nvar Mode = function () {\n this.HighlightRules = TextHighlightRules;\n};\n(function () {\n this.$defaultBehaviour = new CstyleBehaviour();\n this.tokenRe = new RegExp(\"^[\" + unicode.wordChars + \"\\\\$_]+\", \"g\");\n this.nonTokenRe = new RegExp(\"^(?:[^\" + unicode.wordChars + \"\\\\$_]|\\\\s])+\", \"g\");\n this.getTokenizer = function () {\n if (!this.$tokenizer) {\n this.$highlightRules = this.$highlightRules || new this.HighlightRules(this.$highlightRuleConfig);\n this.$tokenizer = new Tokenizer(this.$highlightRules.getRules());\n }\n return this.$tokenizer;\n };\n this.lineCommentStart = \"\";\n this.blockComment = \"\";\n this.toggleCommentLines = function (state, session, startRow, endRow) {\n var doc = session.doc;\n var ignoreBlankLines = true;\n var shouldRemove = true;\n var minIndent = Infinity;\n var tabSize = session.getTabSize();\n var insertAtTabStop = false;\n if (!this.lineCommentStart) {\n if (!this.blockComment)\n return false;\n var lineCommentStart = this.blockComment.start;\n var lineCommentEnd = this.blockComment.end;\n var regexpStart = new RegExp(\"^(\\\\s*)(?:\" + lang.escapeRegExp(lineCommentStart) + \")\");\n var regexpEnd = new RegExp(\"(?:\" + lang.escapeRegExp(lineCommentEnd) + \")\\\\s*$\");\n var comment = function (line, i) {\n if (testRemove(line, i))\n return;\n if (!ignoreBlankLines || /\\S/.test(line)) {\n doc.insertInLine({ row: i, column: line.length }, lineCommentEnd);\n doc.insertInLine({ row: i, column: minIndent }, lineCommentStart);\n }\n };\n var uncomment = function (line, i) {\n var m;\n if (m = line.match(regexpEnd))\n doc.removeInLine(i, line.length - m[0].length, line.length);\n if (m = line.match(regexpStart))\n doc.removeInLine(i, m[1].length, m[0].length);\n };\n var testRemove = function (line, row) {\n if (regexpStart.test(line))\n return true;\n var tokens = session.getTokens(row);\n for (var i = 0; i < tokens.length; i++) {\n if (tokens[i].type === \"comment\")\n return true;\n }\n };\n }\n else {\n if (Array.isArray(this.lineCommentStart)) {\n var regexpStart = this.lineCommentStart.map(lang.escapeRegExp).join(\"|\");\n var lineCommentStart = this.lineCommentStart[0];\n }\n else {\n var regexpStart = lang.escapeRegExp(this.lineCommentStart);\n var lineCommentStart = this.lineCommentStart;\n }\n regexpStart = new RegExp(\"^(\\\\s*)(?:\" + regexpStart + \") ?\");\n insertAtTabStop = session.getUseSoftTabs();\n var uncomment = function (line, i) {\n var m = line.match(regexpStart);\n if (!m)\n return;\n var start = m[1].length, end = m[0].length;\n if (!shouldInsertSpace(line, start, end) && m[0][end - 1] == \" \")\n end--;\n doc.removeInLine(i, start, end);\n };\n var commentWithSpace = lineCommentStart + \" \";\n var comment = function (line, i) {\n if (!ignoreBlankLines || /\\S/.test(line)) {\n if (shouldInsertSpace(line, minIndent, minIndent))\n doc.insertInLine({ row: i, column: minIndent }, commentWithSpace);\n else\n doc.insertInLine({ row: i, column: minIndent }, lineCommentStart);\n }\n };\n var testRemove = function (line, i) {\n return regexpStart.test(line);\n };\n var shouldInsertSpace = function (line, before, after) {\n var spaces = 0;\n while (before-- && line.charAt(before) == \" \")\n spaces++;\n if (spaces % tabSize != 0)\n return false;\n var spaces = 0;\n while (line.charAt(after++) == \" \")\n spaces++;\n if (tabSize > 2)\n return spaces % tabSize != tabSize - 1;\n else\n return spaces % tabSize == 0;\n };\n }\n function iter(fun) {\n for (var i = startRow; i <= endRow; i++)\n fun(doc.getLine(i), i);\n }\n var minEmptyLength = Infinity;\n iter(function (line, i) {\n var indent = line.search(/\\S/);\n if (indent !== -1) {\n if (indent < minIndent)\n minIndent = indent;\n if (shouldRemove && !testRemove(line, i))\n shouldRemove = false;\n }\n else if (minEmptyLength > line.length) {\n minEmptyLength = line.length;\n }\n });\n if (minIndent == Infinity) {\n minIndent = minEmptyLength;\n ignoreBlankLines = false;\n shouldRemove = false;\n }\n if (insertAtTabStop && minIndent % tabSize != 0)\n minIndent = Math.floor(minIndent / tabSize) * tabSize;\n iter(shouldRemove ? uncomment : comment);\n };\n this.toggleBlockComment = function (state, session, range, cursor) {\n var comment = this.blockComment;\n if (!comment)\n return;\n if (!comment.start && comment[0])\n comment = comment[0];\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n var token = iterator.getCurrentToken();\n var sel = session.selection;\n var initialRange = session.selection.toOrientedRange();\n var startRow, colDiff;\n if (token && /comment/.test(token.type)) {\n var startRange, endRange;\n while (token && /comment/.test(token.type)) {\n var i = token.value.indexOf(comment.start);\n if (i != -1) {\n var row = iterator.getCurrentTokenRow();\n var column = iterator.getCurrentTokenColumn() + i;\n startRange = new Range(row, column, row, column + comment.start.length);\n break;\n }\n token = iterator.stepBackward();\n }\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n var token = iterator.getCurrentToken();\n while (token && /comment/.test(token.type)) {\n var i = token.value.indexOf(comment.end);\n if (i != -1) {\n var row = iterator.getCurrentTokenRow();\n var column = iterator.getCurrentTokenColumn() + i;\n endRange = new Range(row, column, row, column + comment.end.length);\n break;\n }\n token = iterator.stepForward();\n }\n if (endRange)\n session.remove(endRange);\n if (startRange) {\n session.remove(startRange);\n startRow = startRange.start.row;\n colDiff = -comment.start.length;\n }\n }\n else {\n colDiff = comment.start.length;\n startRow = range.start.row;\n session.insert(range.end, comment.end);\n session.insert(range.start, comment.start);\n }\n if (initialRange.start.row == startRow)\n initialRange.start.column += colDiff;\n if (initialRange.end.row == startRow)\n initialRange.end.column += colDiff;\n session.selection.fromOrientedRange(initialRange);\n };\n this.getNextLineIndent = function (state, line, tab) {\n return this.$getIndent(line);\n };\n this.checkOutdent = function (state, line, input) {\n return false;\n };\n this.autoOutdent = function (state, doc, row) {\n };\n this.$getIndent = function (line) {\n return line.match(/^\\s*/)[0];\n };\n this.createWorker = function (session) {\n return null;\n };\n this.createModeDelegates = function (mapping) {\n this.$embeds = [];\n this.$modes = {};\n for (var i in mapping) {\n if (mapping[i]) {\n var Mode = mapping[i];\n var id = Mode.prototype.$id;\n var mode = config.$modes[id];\n if (!mode)\n config.$modes[id] = mode = new Mode();\n if (!config.$modes[i])\n config.$modes[i] = mode;\n this.$embeds.push(i);\n this.$modes[i] = mode;\n }\n }\n var delegations = [\"toggleBlockComment\", \"toggleCommentLines\", \"getNextLineIndent\",\n \"checkOutdent\", \"autoOutdent\", \"transformAction\", \"getCompletions\"];\n for (var i = 0; i < delegations.length; i++) {\n (function (scope) {\n var functionName = delegations[i];\n var defaultHandler = scope[functionName];\n scope[delegations[i]] = function () {\n return this.$delegator(functionName, arguments, defaultHandler);\n };\n }(this));\n }\n };\n this.$delegator = function (method, args, defaultHandler) {\n var state = args[0] || \"start\";\n if (typeof state != \"string\") {\n if (Array.isArray(state[2])) {\n var language = state[2][state[2].length - 1];\n var mode = this.$modes[language];\n if (mode)\n return mode[method].apply(mode, [state[1]].concat([].slice.call(args, 1)));\n }\n state = state[0] || \"start\";\n }\n for (var i = 0; i < this.$embeds.length; i++) {\n if (!this.$modes[this.$embeds[i]])\n continue;\n var split = state.split(this.$embeds[i]);\n if (!split[0] && split[1]) {\n args[0] = split[1];\n var mode = this.$modes[this.$embeds[i]];\n return mode[method].apply(mode, args);\n }\n }\n var ret = defaultHandler.apply(this, args);\n return defaultHandler ? ret : undefined;\n };\n this.transformAction = function (state, action, editor, session, param) {\n if (this.$behaviour) {\n var behaviours = this.$behaviour.getBehaviours();\n for (var key in behaviours) {\n if (behaviours[key][action]) {\n var ret = behaviours[key][action].apply(this, arguments);\n if (ret) {\n return ret;\n }\n }\n }\n }\n };\n this.getKeywords = function (append) {\n if (!this.completionKeywords) {\n var rules = this.$tokenizer.rules;\n var completionKeywords = [];\n for (var rule in rules) {\n var ruleItr = rules[rule];\n for (var r = 0, l = ruleItr.length; r < l; r++) {\n if (typeof ruleItr[r].token === \"string\") {\n if (/keyword|support|storage/.test(ruleItr[r].token))\n completionKeywords.push(ruleItr[r].regex);\n }\n else if (typeof ruleItr[r].token === \"object\") {\n for (var a = 0, aLength = ruleItr[r].token.length; a < aLength; a++) {\n if (/keyword|support|storage/.test(ruleItr[r].token[a])) {\n var rule = ruleItr[r].regex.match(/\\(.+?\\)/g)[a];\n completionKeywords.push(rule.substr(1, rule.length - 2));\n }\n }\n }\n }\n }\n this.completionKeywords = completionKeywords;\n }\n if (!append)\n return this.$keywordList;\n return completionKeywords.concat(this.$keywordList || []);\n };\n this.$createKeywordList = function () {\n if (!this.$highlightRules)\n this.getTokenizer();\n return this.$keywordList = this.$highlightRules.$keywordList || [];\n };\n this.getCompletions = function (state, session, pos, prefix) {\n var keywords = this.$keywordList || this.$createKeywordList();\n return keywords.map(function (word) {\n return {\n name: word,\n value: word,\n score: 0,\n meta: \"keyword\"\n };\n });\n };\n this.$id = \"ace/mode/text\";\n}).call(Mode.prototype);\nexports.Mode = Mode;\n\n});\n\nace.define(\"ace/apply_delta\",[\"require\",\"exports\",\"module\"], function(require, exports, module){\"use strict\";\nfunction throwDeltaError(delta, errorText) {\n console.log(\"Invalid Delta:\", delta);\n throw \"Invalid Delta: \" + errorText;\n}\nfunction positionInDocument(docLines, position) {\n return position.row >= 0 && position.row < docLines.length &&\n position.column >= 0 && position.column <= docLines[position.row].length;\n}\nfunction validateDelta(docLines, delta) {\n if (delta.action != \"insert\" && delta.action != \"remove\")\n throwDeltaError(delta, \"delta.action must be 'insert' or 'remove'\");\n if (!(delta.lines instanceof Array))\n throwDeltaError(delta, \"delta.lines must be an Array\");\n if (!delta.start || !delta.end)\n throwDeltaError(delta, \"delta.start/end must be an present\");\n var start = delta.start;\n if (!positionInDocument(docLines, delta.start))\n throwDeltaError(delta, \"delta.start must be contained in document\");\n var end = delta.end;\n if (delta.action == \"remove\" && !positionInDocument(docLines, end))\n throwDeltaError(delta, \"delta.end must contained in document for 'remove' actions\");\n var numRangeRows = end.row - start.row;\n var numRangeLastLineChars = (end.column - (numRangeRows == 0 ? start.column : 0));\n if (numRangeRows != delta.lines.length - 1 || delta.lines[numRangeRows].length != numRangeLastLineChars)\n throwDeltaError(delta, \"delta.range must match delta lines\");\n}\nexports.applyDelta = function (docLines, delta, doNotValidate) {\n var row = delta.start.row;\n var startColumn = delta.start.column;\n var line = docLines[row] || \"\";\n switch (delta.action) {\n case \"insert\":\n var lines = delta.lines;\n if (lines.length === 1) {\n docLines[row] = line.substring(0, startColumn) + delta.lines[0] + line.substring(startColumn);\n }\n else {\n var args = [row, 1].concat(delta.lines);\n docLines.splice.apply(docLines, args);\n docLines[row] = line.substring(0, startColumn) + docLines[row];\n docLines[row + delta.lines.length - 1] += line.substring(startColumn);\n }\n break;\n case \"remove\":\n var endColumn = delta.end.column;\n var endRow = delta.end.row;\n if (row === endRow) {\n docLines[row] = line.substring(0, startColumn) + line.substring(endColumn);\n }\n else {\n docLines.splice(row, endRow - row + 1, line.substring(0, startColumn) + docLines[endRow].substring(endColumn));\n }\n break;\n }\n};\n\n});\n\nace.define(\"ace/anchor\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/event_emitter\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"./lib/oop\");\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar Anchor = /** @class */ (function () {\n function Anchor(doc, row, column) {\n this.$onChange = this.onChange.bind(this);\n this.attach(doc);\n if (typeof column == \"undefined\")\n this.setPosition(row.row, row.column);\n else\n this.setPosition(row, column);\n }\n Anchor.prototype.getPosition = function () {\n return this.$clipPositionToDocument(this.row, this.column);\n };\n Anchor.prototype.getDocument = function () {\n return this.document;\n };\n Anchor.prototype.onChange = function (delta) {\n if (delta.start.row == delta.end.row && delta.start.row != this.row)\n return;\n if (delta.start.row > this.row)\n return;\n var point = $getTransformedPoint(delta, { row: this.row, column: this.column }, this.$insertRight);\n this.setPosition(point.row, point.column, true);\n };\n Anchor.prototype.setPosition = function (row, column, noClip) {\n var pos;\n if (noClip) {\n pos = {\n row: row,\n column: column\n };\n }\n else {\n pos = this.$clipPositionToDocument(row, column);\n }\n if (this.row == pos.row && this.column == pos.column)\n return;\n var old = {\n row: this.row,\n column: this.column\n };\n this.row = pos.row;\n this.column = pos.column;\n this._signal(\"change\", {\n old: old,\n value: pos\n });\n };\n Anchor.prototype.detach = function () {\n this.document.off(\"change\", this.$onChange);\n };\n Anchor.prototype.attach = function (doc) {\n this.document = doc || this.document;\n this.document.on(\"change\", this.$onChange);\n };\n Anchor.prototype.$clipPositionToDocument = function (row, column) {\n var pos = {};\n if (row >= this.document.getLength()) {\n pos.row = Math.max(0, this.document.getLength() - 1);\n pos.column = this.document.getLine(pos.row).length;\n }\n else if (row < 0) {\n pos.row = 0;\n pos.column = 0;\n }\n else {\n pos.row = row;\n pos.column = Math.min(this.document.getLine(pos.row).length, Math.max(0, column));\n }\n if (column < 0)\n pos.column = 0;\n return pos;\n };\n return Anchor;\n}());\nAnchor.prototype.$insertRight = false;\noop.implement(Anchor.prototype, EventEmitter);\nfunction $pointsInOrder(point1, point2, equalPointsInOrder) {\n var bColIsAfter = equalPointsInOrder ? point1.column <= point2.column : point1.column < point2.column;\n return (point1.row < point2.row) || (point1.row == point2.row && bColIsAfter);\n}\nfunction $getTransformedPoint(delta, point, moveIfEqual) {\n var deltaIsInsert = delta.action == \"insert\";\n var deltaRowShift = (deltaIsInsert ? 1 : -1) * (delta.end.row - delta.start.row);\n var deltaColShift = (deltaIsInsert ? 1 : -1) * (delta.end.column - delta.start.column);\n var deltaStart = delta.start;\n var deltaEnd = deltaIsInsert ? deltaStart : delta.end; // Collapse insert range.\n if ($pointsInOrder(point, deltaStart, moveIfEqual)) {\n return {\n row: point.row,\n column: point.column\n };\n }\n if ($pointsInOrder(deltaEnd, point, !moveIfEqual)) {\n return {\n row: point.row + deltaRowShift,\n column: point.column + (point.row == deltaEnd.row ? deltaColShift : 0)\n };\n }\n return {\n row: deltaStart.row,\n column: deltaStart.column\n };\n}\nexports.Anchor = Anchor;\n\n});\n\nace.define(\"ace/document\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/apply_delta\",\"ace/lib/event_emitter\",\"ace/range\",\"ace/anchor\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"./lib/oop\");\nvar applyDelta = require(\"./apply_delta\").applyDelta;\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar Range = require(\"./range\").Range;\nvar Anchor = require(\"./anchor\").Anchor;\nvar Document = /** @class */ (function () {\n function Document(textOrLines) {\n this.$lines = [\"\"];\n if (textOrLines.length === 0) {\n this.$lines = [\"\"];\n }\n else if (Array.isArray(textOrLines)) {\n this.insertMergedLines({ row: 0, column: 0 }, textOrLines);\n }\n else {\n this.insert({ row: 0, column: 0 }, textOrLines);\n }\n }\n Document.prototype.setValue = function (text) {\n var len = this.getLength() - 1;\n this.remove(new Range(0, 0, len, this.getLine(len).length));\n this.insert({ row: 0, column: 0 }, text || \"\");\n };\n Document.prototype.getValue = function () {\n return this.getAllLines().join(this.getNewLineCharacter());\n };\n Document.prototype.createAnchor = function (row, column) {\n return new Anchor(this, row, column);\n };\n Document.prototype.$detectNewLine = function (text) {\n var match = text.match(/^.*?(\\r\\n|\\r|\\n)/m);\n this.$autoNewLine = match ? match[1] : \"\\n\";\n this._signal(\"changeNewLineMode\");\n };\n Document.prototype.getNewLineCharacter = function () {\n switch (this.$newLineMode) {\n case \"windows\":\n return \"\\r\\n\";\n case \"unix\":\n return \"\\n\";\n default:\n return this.$autoNewLine || \"\\n\";\n }\n };\n Document.prototype.setNewLineMode = function (newLineMode) {\n if (this.$newLineMode === newLineMode)\n return;\n this.$newLineMode = newLineMode;\n this._signal(\"changeNewLineMode\");\n };\n Document.prototype.getNewLineMode = function () {\n return this.$newLineMode;\n };\n Document.prototype.isNewLine = function (text) {\n return (text == \"\\r\\n\" || text == \"\\r\" || text == \"\\n\");\n };\n Document.prototype.getLine = function (row) {\n return this.$lines[row] || \"\";\n };\n Document.prototype.getLines = function (firstRow, lastRow) {\n return this.$lines.slice(firstRow, lastRow + 1);\n };\n Document.prototype.getAllLines = function () {\n return this.getLines(0, this.getLength());\n };\n Document.prototype.getLength = function () {\n return this.$lines.length;\n };\n Document.prototype.getTextRange = function (range) {\n return this.getLinesForRange(range).join(this.getNewLineCharacter());\n };\n Document.prototype.getLinesForRange = function (range) {\n var lines;\n if (range.start.row === range.end.row) {\n lines = [this.getLine(range.start.row).substring(range.start.column, range.end.column)];\n }\n else {\n lines = this.getLines(range.start.row, range.end.row);\n lines[0] = (lines[0] || \"\").substring(range.start.column);\n var l = lines.length - 1;\n if (range.end.row - range.start.row == l)\n lines[l] = lines[l].substring(0, range.end.column);\n }\n return lines;\n };\n Document.prototype.insertLines = function (row, lines) {\n console.warn(\"Use of document.insertLines is deprecated. Use the insertFullLines method instead.\");\n return this.insertFullLines(row, lines);\n };\n Document.prototype.removeLines = function (firstRow, lastRow) {\n console.warn(\"Use of document.removeLines is deprecated. Use the removeFullLines method instead.\");\n return this.removeFullLines(firstRow, lastRow);\n };\n Document.prototype.insertNewLine = function (position) {\n console.warn(\"Use of document.insertNewLine is deprecated. Use insertMergedLines(position, ['', '']) instead.\");\n return this.insertMergedLines(position, [\"\", \"\"]);\n };\n Document.prototype.insert = function (position, text) {\n if (this.getLength() <= 1)\n this.$detectNewLine(text);\n return this.insertMergedLines(position, this.$split(text));\n };\n Document.prototype.insertInLine = function (position, text) {\n var start = this.clippedPos(position.row, position.column);\n var end = this.pos(position.row, position.column + text.length);\n this.applyDelta({\n start: start,\n end: end,\n action: \"insert\",\n lines: [text]\n }, true);\n return this.clonePos(end);\n };\n Document.prototype.clippedPos = function (row, column) {\n var length = this.getLength();\n if (row === undefined) {\n row = length;\n }\n else if (row < 0) {\n row = 0;\n }\n else if (row >= length) {\n row = length - 1;\n column = undefined;\n }\n var line = this.getLine(row);\n if (column == undefined)\n column = line.length;\n column = Math.min(Math.max(column, 0), line.length);\n return { row: row, column: column };\n };\n Document.prototype.clonePos = function (pos) {\n return { row: pos.row, column: pos.column };\n };\n Document.prototype.pos = function (row, column) {\n return { row: row, column: column };\n };\n Document.prototype.$clipPosition = function (position) {\n var length = this.getLength();\n if (position.row >= length) {\n position.row = Math.max(0, length - 1);\n position.column = this.getLine(length - 1).length;\n }\n else {\n position.row = Math.max(0, position.row);\n position.column = Math.min(Math.max(position.column, 0), this.getLine(position.row).length);\n }\n return position;\n };\n Document.prototype.insertFullLines = function (row, lines) {\n row = Math.min(Math.max(row, 0), this.getLength());\n var column = 0;\n if (row < this.getLength()) {\n lines = lines.concat([\"\"]);\n column = 0;\n }\n else {\n lines = [\"\"].concat(lines);\n row--;\n column = this.$lines[row].length;\n }\n this.insertMergedLines({ row: row, column: column }, lines);\n };\n Document.prototype.insertMergedLines = function (position, lines) {\n var start = this.clippedPos(position.row, position.column);\n var end = {\n row: start.row + lines.length - 1,\n column: (lines.length == 1 ? start.column : 0) + lines[lines.length - 1].length\n };\n this.applyDelta({\n start: start,\n end: end,\n action: \"insert\",\n lines: lines\n });\n return this.clonePos(end);\n };\n Document.prototype.remove = function (range) {\n var start = this.clippedPos(range.start.row, range.start.column);\n var end = this.clippedPos(range.end.row, range.end.column);\n this.applyDelta({\n start: start,\n end: end,\n action: \"remove\",\n lines: this.getLinesForRange({ start: start, end: end })\n });\n return this.clonePos(start);\n };\n Document.prototype.removeInLine = function (row, startColumn, endColumn) {\n var start = this.clippedPos(row, startColumn);\n var end = this.clippedPos(row, endColumn);\n this.applyDelta({\n start: start,\n end: end,\n action: \"remove\",\n lines: this.getLinesForRange({ start: start, end: end })\n }, true);\n return this.clonePos(start);\n };\n Document.prototype.removeFullLines = function (firstRow, lastRow) {\n firstRow = Math.min(Math.max(0, firstRow), this.getLength() - 1);\n lastRow = Math.min(Math.max(0, lastRow), this.getLength() - 1);\n var deleteFirstNewLine = lastRow == this.getLength() - 1 && firstRow > 0;\n var deleteLastNewLine = lastRow < this.getLength() - 1;\n var startRow = (deleteFirstNewLine ? firstRow - 1 : firstRow);\n var startCol = (deleteFirstNewLine ? this.getLine(startRow).length : 0);\n var endRow = (deleteLastNewLine ? lastRow + 1 : lastRow);\n var endCol = (deleteLastNewLine ? 0 : this.getLine(endRow).length);\n var range = new Range(startRow, startCol, endRow, endCol);\n var deletedLines = this.$lines.slice(firstRow, lastRow + 1);\n this.applyDelta({\n start: range.start,\n end: range.end,\n action: \"remove\",\n lines: this.getLinesForRange(range)\n });\n return deletedLines;\n };\n Document.prototype.removeNewLine = function (row) {\n if (row < this.getLength() - 1 && row >= 0) {\n this.applyDelta({\n start: this.pos(row, this.getLine(row).length),\n end: this.pos(row + 1, 0),\n action: \"remove\",\n lines: [\"\", \"\"]\n });\n }\n };\n Document.prototype.replace = function (range, text) {\n if (!(range instanceof Range))\n range = Range.fromPoints(range.start, range.end);\n if (text.length === 0 && range.isEmpty())\n return range.start;\n if (text == this.getTextRange(range))\n return range.end;\n this.remove(range);\n var end;\n if (text) {\n end = this.insert(range.start, text);\n }\n else {\n end = range.start;\n }\n return end;\n };\n Document.prototype.applyDeltas = function (deltas) {\n for (var i = 0; i < deltas.length; i++) {\n this.applyDelta(deltas[i]);\n }\n };\n Document.prototype.revertDeltas = function (deltas) {\n for (var i = deltas.length - 1; i >= 0; i--) {\n this.revertDelta(deltas[i]);\n }\n };\n Document.prototype.applyDelta = function (delta, doNotValidate) {\n var isInsert = delta.action == \"insert\";\n if (isInsert ? delta.lines.length <= 1 && !delta.lines[0]\n : !Range.comparePoints(delta.start, delta.end)) {\n return;\n }\n if (isInsert && delta.lines.length > 20000) {\n this.$splitAndapplyLargeDelta(delta, 20000);\n }\n else {\n applyDelta(this.$lines, delta, doNotValidate);\n this._signal(\"change\", delta);\n }\n };\n Document.prototype.$safeApplyDelta = function (delta) {\n var docLength = this.$lines.length;\n if (delta.action == \"remove\" && delta.start.row < docLength && delta.end.row < docLength\n || delta.action == \"insert\" && delta.start.row <= docLength) {\n this.applyDelta(delta);\n }\n };\n Document.prototype.$splitAndapplyLargeDelta = function (delta, MAX) {\n var lines = delta.lines;\n var l = lines.length - MAX + 1;\n var row = delta.start.row;\n var column = delta.start.column;\n for (var from = 0, to = 0; from < l; from = to) {\n to += MAX - 1;\n var chunk = lines.slice(from, to);\n chunk.push(\"\");\n this.applyDelta({\n start: this.pos(row + from, column),\n end: this.pos(row + to, column = 0),\n action: delta.action,\n lines: chunk\n }, true);\n }\n delta.lines = lines.slice(from);\n delta.start.row = row + from;\n delta.start.column = column;\n this.applyDelta(delta, true);\n };\n Document.prototype.revertDelta = function (delta) {\n this.$safeApplyDelta({\n start: this.clonePos(delta.start),\n end: this.clonePos(delta.end),\n action: (delta.action == \"insert\" ? \"remove\" : \"insert\"),\n lines: delta.lines.slice()\n });\n };\n Document.prototype.indexToPosition = function (index, startRow) {\n var lines = this.$lines || this.getAllLines();\n var newlineLength = this.getNewLineCharacter().length;\n for (var i = startRow || 0, l = lines.length; i < l; i++) {\n index -= lines[i].length + newlineLength;\n if (index < 0)\n return { row: i, column: index + lines[i].length + newlineLength };\n }\n return { row: l - 1, column: index + lines[l - 1].length + newlineLength };\n };\n Document.prototype.positionToIndex = function (pos, startRow) {\n var lines = this.$lines || this.getAllLines();\n var newlineLength = this.getNewLineCharacter().length;\n var index = 0;\n var row = Math.min(pos.row, lines.length);\n for (var i = startRow || 0; i < row; ++i)\n index += lines[i].length + newlineLength;\n return index + pos.column;\n };\n Document.prototype.$split = function (text) {\n return text.split(/\\r\\n|\\r|\\n/);\n };\n return Document;\n}());\nDocument.prototype.$autoNewLine = \"\";\nDocument.prototype.$newLineMode = \"auto\";\noop.implement(Document.prototype, EventEmitter);\nexports.Document = Document;\n\n});\n\nace.define(\"ace/background_tokenizer\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/event_emitter\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"./lib/oop\");\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar BackgroundTokenizer = /** @class */ (function () {\n function BackgroundTokenizer(tokenizer, editor) {\n this.running = false;\n this.lines = [];\n this.states = [];\n this.currentLine = 0;\n this.tokenizer = tokenizer;\n var self = this;\n this.$worker = function () {\n if (!self.running) {\n return;\n }\n var workerStart = new Date();\n var currentLine = self.currentLine;\n var endLine = -1;\n var doc = self.doc;\n var startLine = currentLine;\n while (self.lines[currentLine])\n currentLine++;\n var len = doc.getLength();\n var processedLines = 0;\n self.running = false;\n while (currentLine < len) {\n self.$tokenizeRow(currentLine);\n endLine = currentLine;\n do {\n currentLine++;\n } while (self.lines[currentLine]);\n processedLines++;\n if ((processedLines % 5 === 0) && (new Date() - workerStart) > 20) {\n self.running = setTimeout(self.$worker, 20);\n break;\n }\n }\n self.currentLine = currentLine;\n if (endLine == -1)\n endLine = currentLine;\n if (startLine <= endLine)\n self.fireUpdateEvent(startLine, endLine);\n };\n }\n BackgroundTokenizer.prototype.setTokenizer = function (tokenizer) {\n this.tokenizer = tokenizer;\n this.lines = [];\n this.states = [];\n this.start(0);\n };\n BackgroundTokenizer.prototype.setDocument = function (doc) {\n this.doc = doc;\n this.lines = [];\n this.states = [];\n this.stop();\n };\n BackgroundTokenizer.prototype.fireUpdateEvent = function (firstRow, lastRow) {\n var data = {\n first: firstRow,\n last: lastRow\n };\n this._signal(\"update\", { data: data });\n };\n BackgroundTokenizer.prototype.start = function (startRow) {\n this.currentLine = Math.min(startRow || 0, this.currentLine, this.doc.getLength());\n this.lines.splice(this.currentLine, this.lines.length);\n this.states.splice(this.currentLine, this.states.length);\n this.stop();\n this.running = setTimeout(this.$worker, 700);\n };\n BackgroundTokenizer.prototype.scheduleStart = function () {\n if (!this.running)\n this.running = setTimeout(this.$worker, 700);\n };\n BackgroundTokenizer.prototype.$updateOnChange = function (delta) {\n var startRow = delta.start.row;\n var len = delta.end.row - startRow;\n if (len === 0) {\n this.lines[startRow] = null;\n }\n else if (delta.action == \"remove\") {\n this.lines.splice(startRow, len + 1, null);\n this.states.splice(startRow, len + 1, null);\n }\n else {\n var args = Array(len + 1);\n args.unshift(startRow, 1);\n this.lines.splice.apply(this.lines, args);\n this.states.splice.apply(this.states, args);\n }\n this.currentLine = Math.min(startRow, this.currentLine, this.doc.getLength());\n this.stop();\n };\n BackgroundTokenizer.prototype.stop = function () {\n if (this.running)\n clearTimeout(this.running);\n this.running = false;\n };\n BackgroundTokenizer.prototype.getTokens = function (row) {\n return this.lines[row] || this.$tokenizeRow(row);\n };\n BackgroundTokenizer.prototype.getState = function (row) {\n if (this.currentLine == row)\n this.$tokenizeRow(row);\n return this.states[row] || \"start\";\n };\n BackgroundTokenizer.prototype.$tokenizeRow = function (row) {\n var line = this.doc.getLine(row);\n var state = this.states[row - 1];\n var data = this.tokenizer.getLineTokens(line, state, row);\n if (this.states[row] + \"\" !== data.state + \"\") {\n this.states[row] = data.state;\n this.lines[row + 1] = null;\n if (this.currentLine > row + 1)\n this.currentLine = row + 1;\n }\n else if (this.currentLine == row) {\n this.currentLine = row + 1;\n }\n return this.lines[row] = data.tokens;\n };\n BackgroundTokenizer.prototype.cleanup = function () {\n this.running = false;\n this.lines = [];\n this.states = [];\n this.currentLine = 0;\n this.removeAllListeners();\n };\n return BackgroundTokenizer;\n}());\noop.implement(BackgroundTokenizer.prototype, EventEmitter);\nexports.BackgroundTokenizer = BackgroundTokenizer;\n\n});\n\nace.define(\"ace/search_highlight\",[\"require\",\"exports\",\"module\",\"ace/lib/lang\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar lang = require(\"./lib/lang\");\nvar Range = require(\"./range\").Range;\nvar SearchHighlight = /** @class */ (function () {\n function SearchHighlight(regExp, clazz, type) {\n if (type === void 0) { type = \"text\"; }\n this.setRegexp(regExp);\n this.clazz = clazz;\n this.type = type;\n }\n SearchHighlight.prototype.setRegexp = function (regExp) {\n if (this.regExp + \"\" == regExp + \"\")\n return;\n this.regExp = regExp;\n this.cache = [];\n };\n SearchHighlight.prototype.update = function (html, markerLayer, session, config) {\n if (!this.regExp)\n return;\n var start = config.firstRow, end = config.lastRow;\n var renderedMarkerRanges = {};\n for (var i = start; i <= end; i++) {\n var ranges = this.cache[i];\n if (ranges == null) {\n ranges = lang.getMatchOffsets(session.getLine(i), this.regExp);\n if (ranges.length > this.MAX_RANGES)\n ranges = ranges.slice(0, this.MAX_RANGES);\n ranges = ranges.map(function (match) {\n return new Range(i, match.offset, i, match.offset + match.length);\n });\n this.cache[i] = ranges.length ? ranges : \"\";\n }\n for (var j = ranges.length; j--;) {\n var rangeToAddMarkerTo = ranges[j].toScreenRange(session);\n var rangeAsString = rangeToAddMarkerTo.toString();\n if (renderedMarkerRanges[rangeAsString])\n continue;\n renderedMarkerRanges[rangeAsString] = true;\n markerLayer.drawSingleLineMarker(html, rangeToAddMarkerTo, this.clazz, config);\n }\n }\n };\n return SearchHighlight;\n}());\nSearchHighlight.prototype.MAX_RANGES = 500;\nexports.SearchHighlight = SearchHighlight;\n\n});\n\nace.define(\"ace/undomanager\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar UndoManager = /** @class */ (function () {\n function UndoManager() {\n this.$maxRev = 0;\n this.$fromUndo = false;\n this.$undoDepth = Infinity;\n this.reset();\n }\n UndoManager.prototype.addSession = function (session) {\n this.$session = session;\n };\n UndoManager.prototype.add = function (delta, allowMerge, session) {\n if (this.$fromUndo)\n return;\n if (delta == this.$lastDelta)\n return;\n if (!this.$keepRedoStack)\n this.$redoStack.length = 0;\n if (allowMerge === false || !this.lastDeltas) {\n this.lastDeltas = [];\n var undoStackLength = this.$undoStack.length;\n if (undoStackLength > this.$undoDepth - 1) {\n this.$undoStack.splice(0, undoStackLength - this.$undoDepth + 1);\n }\n this.$undoStack.push(this.lastDeltas);\n delta.id = this.$rev = ++this.$maxRev;\n }\n if (delta.action == \"remove\" || delta.action == \"insert\")\n this.$lastDelta = delta;\n this.lastDeltas.push(delta);\n };\n UndoManager.prototype.addSelection = function (selection, rev) {\n this.selections.push({\n value: selection,\n rev: rev || this.$rev\n });\n };\n UndoManager.prototype.startNewGroup = function () {\n this.lastDeltas = null;\n return this.$rev;\n };\n UndoManager.prototype.markIgnored = function (from, to) {\n if (to == null)\n to = this.$rev + 1;\n var stack = this.$undoStack;\n for (var i = stack.length; i--;) {\n var delta = stack[i][0];\n if (delta.id <= from)\n break;\n if (delta.id < to)\n delta.ignore = true;\n }\n this.lastDeltas = null;\n };\n UndoManager.prototype.getSelection = function (rev, after) {\n var stack = this.selections;\n for (var i = stack.length; i--;) {\n var selection = stack[i];\n if (selection.rev < rev) {\n if (after)\n selection = stack[i + 1];\n return selection;\n }\n }\n };\n UndoManager.prototype.getRevision = function () {\n return this.$rev;\n };\n UndoManager.prototype.getDeltas = function (from, to) {\n if (to == null)\n to = this.$rev + 1;\n var stack = this.$undoStack;\n var end = null, start = 0;\n for (var i = stack.length; i--;) {\n var delta = stack[i][0];\n if (delta.id < to && !end)\n end = i + 1;\n if (delta.id <= from) {\n start = i + 1;\n break;\n }\n }\n return stack.slice(start, end);\n };\n UndoManager.prototype.getChangedRanges = function (from, to) {\n if (to == null)\n to = this.$rev + 1;\n };\n UndoManager.prototype.getChangedLines = function (from, to) {\n if (to == null)\n to = this.$rev + 1;\n };\n UndoManager.prototype.undo = function (session, dontSelect) {\n this.lastDeltas = null;\n var stack = this.$undoStack;\n if (!rearrangeUndoStack(stack, stack.length))\n return;\n if (!session)\n session = this.$session;\n if (this.$redoStackBaseRev !== this.$rev && this.$redoStack.length)\n this.$redoStack = [];\n this.$fromUndo = true;\n var deltaSet = stack.pop();\n var undoSelectionRange = null;\n if (deltaSet) {\n undoSelectionRange = session.undoChanges(deltaSet, dontSelect);\n this.$redoStack.push(deltaSet);\n this.$syncRev();\n }\n this.$fromUndo = false;\n return undoSelectionRange;\n };\n UndoManager.prototype.redo = function (session, dontSelect) {\n this.lastDeltas = null;\n if (!session)\n session = this.$session;\n this.$fromUndo = true;\n if (this.$redoStackBaseRev != this.$rev) {\n var diff = this.getDeltas(this.$redoStackBaseRev, this.$rev + 1);\n rebaseRedoStack(this.$redoStack, diff);\n this.$redoStackBaseRev = this.$rev;\n this.$redoStack.forEach(function (x) {\n x[0].id = ++this.$maxRev;\n }, this);\n }\n var deltaSet = this.$redoStack.pop();\n var redoSelectionRange = null;\n if (deltaSet) {\n redoSelectionRange = session.redoChanges(deltaSet, dontSelect);\n this.$undoStack.push(deltaSet);\n this.$syncRev();\n }\n this.$fromUndo = false;\n return redoSelectionRange;\n };\n UndoManager.prototype.$syncRev = function () {\n var stack = this.$undoStack;\n var nextDelta = stack[stack.length - 1];\n var id = nextDelta && nextDelta[0].id || 0;\n this.$redoStackBaseRev = id;\n this.$rev = id;\n };\n UndoManager.prototype.reset = function () {\n this.lastDeltas = null;\n this.$lastDelta = null;\n this.$undoStack = [];\n this.$redoStack = [];\n this.$rev = 0;\n this.mark = 0;\n this.$redoStackBaseRev = this.$rev;\n this.selections = [];\n };\n UndoManager.prototype.canUndo = function () {\n return this.$undoStack.length > 0;\n };\n UndoManager.prototype.canRedo = function () {\n return this.$redoStack.length > 0;\n };\n UndoManager.prototype.bookmark = function (rev) {\n if (rev == undefined)\n rev = this.$rev;\n this.mark = rev;\n };\n UndoManager.prototype.isAtBookmark = function () {\n return this.$rev === this.mark;\n };\n UndoManager.prototype.toJSON = function () {\n return {\n $redoStack: this.$redoStack,\n $undoStack: this.$undoStack\n };\n };\n UndoManager.prototype.fromJSON = function (json) {\n this.reset();\n this.$undoStack = json.$undoStack;\n this.$redoStack = json.$redoStack;\n };\n UndoManager.prototype.$prettyPrint = function (delta) {\n if (delta)\n return stringifyDelta(delta);\n return stringifyDelta(this.$undoStack) + \"\\n---\\n\" + stringifyDelta(this.$redoStack);\n };\n return UndoManager;\n}());\nUndoManager.prototype.hasUndo = UndoManager.prototype.canUndo;\nUndoManager.prototype.hasRedo = UndoManager.prototype.canRedo;\nUndoManager.prototype.isClean = UndoManager.prototype.isAtBookmark;\nUndoManager.prototype.markClean = UndoManager.prototype.bookmark;\nfunction rearrangeUndoStack(stack, pos) {\n for (var i = pos; i--;) {\n var deltaSet = stack[i];\n if (deltaSet && !deltaSet[0].ignore) {\n while (i < pos - 1) {\n var swapped = swapGroups(stack[i], stack[i + 1]);\n stack[i] = swapped[0];\n stack[i + 1] = swapped[1];\n i++;\n }\n return true;\n }\n }\n}\nvar Range = require(\"./range\").Range;\nvar cmp = Range.comparePoints;\nvar comparePoints = Range.comparePoints;\nfunction $updateMarkers(delta) {\n var isInsert = delta.action == \"insert\";\n var start = delta.start;\n var end = delta.end;\n var rowShift = (end.row - start.row) * (isInsert ? 1 : -1);\n var colShift = (end.column - start.column) * (isInsert ? 1 : -1);\n if (isInsert)\n end = start;\n for (var i in this.marks) {\n var point = this.marks[i];\n var cmp = comparePoints(point, start);\n if (cmp < 0) {\n continue; // delta starts after the range\n }\n if (cmp === 0) {\n if (isInsert) {\n if (point.bias == 1) {\n cmp = 1;\n }\n else {\n point.bias == -1;\n continue;\n }\n }\n }\n var cmp2 = isInsert ? cmp : comparePoints(point, end);\n if (cmp2 > 0) {\n point.row += rowShift;\n point.column += point.row == end.row ? colShift : 0;\n continue;\n }\n if (!isInsert && cmp2 <= 0) {\n point.row = start.row;\n point.column = start.column;\n if (cmp2 === 0)\n point.bias = 1;\n }\n }\n}\nfunction clonePos(pos) {\n return { row: pos.row, column: pos.column };\n}\nfunction cloneDelta(d) {\n return {\n start: clonePos(d.start),\n end: clonePos(d.end),\n action: d.action,\n lines: d.lines.slice()\n };\n}\nfunction stringifyDelta(d) {\n d = d || this;\n if (Array.isArray(d)) {\n return d.map(stringifyDelta).join(\"\\n\");\n }\n var type = \"\";\n if (d.action) {\n type = d.action == \"insert\" ? \"+\" : \"-\";\n type += \"[\" + d.lines + \"]\";\n }\n else if (d.value) {\n if (Array.isArray(d.value)) {\n type = d.value.map(stringifyRange).join(\"\\n\");\n }\n else {\n type = stringifyRange(d.value);\n }\n }\n if (d.start) {\n type += stringifyRange(d);\n }\n if (d.id || d.rev) {\n type += \"\\t(\" + (d.id || d.rev) + \")\";\n }\n return type;\n}\nfunction stringifyRange(r) {\n return r.start.row + \":\" + r.start.column\n + \"=>\" + r.end.row + \":\" + r.end.column;\n}\nfunction swap(d1, d2) {\n var i1 = d1.action == \"insert\";\n var i2 = d2.action == \"insert\";\n if (i1 && i2) {\n if (cmp(d2.start, d1.end) >= 0) {\n shift(d2, d1, -1);\n }\n else if (cmp(d2.start, d1.start) <= 0) {\n shift(d1, d2, +1);\n }\n else {\n return null;\n }\n }\n else if (i1 && !i2) {\n if (cmp(d2.start, d1.end) >= 0) {\n shift(d2, d1, -1);\n }\n else if (cmp(d2.end, d1.start) <= 0) {\n shift(d1, d2, -1);\n }\n else {\n return null;\n }\n }\n else if (!i1 && i2) {\n if (cmp(d2.start, d1.start) >= 0) {\n shift(d2, d1, +1);\n }\n else if (cmp(d2.start, d1.start) <= 0) {\n shift(d1, d2, +1);\n }\n else {\n return null;\n }\n }\n else if (!i1 && !i2) {\n if (cmp(d2.start, d1.start) >= 0) {\n shift(d2, d1, +1);\n }\n else if (cmp(d2.end, d1.start) <= 0) {\n shift(d1, d2, -1);\n }\n else {\n return null;\n }\n }\n return [d2, d1];\n}\nfunction swapGroups(ds1, ds2) {\n for (var i = ds1.length; i--;) {\n for (var j = 0; j < ds2.length; j++) {\n if (!swap(ds1[i], ds2[j])) {\n while (i < ds1.length) {\n while (j--) {\n swap(ds2[j], ds1[i]);\n }\n j = ds2.length;\n i++;\n }\n return [ds1, ds2];\n }\n }\n }\n ds1.selectionBefore = ds2.selectionBefore =\n ds1.selectionAfter = ds2.selectionAfter = null;\n return [ds2, ds1];\n}\nfunction xform(d1, c1) {\n var i1 = d1.action == \"insert\";\n var i2 = c1.action == \"insert\";\n if (i1 && i2) {\n if (cmp(d1.start, c1.start) < 0) {\n shift(c1, d1, 1);\n }\n else {\n shift(d1, c1, 1);\n }\n }\n else if (i1 && !i2) {\n if (cmp(d1.start, c1.end) >= 0) {\n shift(d1, c1, -1);\n }\n else if (cmp(d1.start, c1.start) <= 0) {\n shift(c1, d1, +1);\n }\n else {\n shift(d1, Range.fromPoints(c1.start, d1.start), -1);\n shift(c1, d1, +1);\n }\n }\n else if (!i1 && i2) {\n if (cmp(c1.start, d1.end) >= 0) {\n shift(c1, d1, -1);\n }\n else if (cmp(c1.start, d1.start) <= 0) {\n shift(d1, c1, +1);\n }\n else {\n shift(c1, Range.fromPoints(d1.start, c1.start), -1);\n shift(d1, c1, +1);\n }\n }\n else if (!i1 && !i2) {\n if (cmp(c1.start, d1.end) >= 0) {\n shift(c1, d1, -1);\n }\n else if (cmp(c1.end, d1.start) <= 0) {\n shift(d1, c1, -1);\n }\n else {\n var before, after;\n if (cmp(d1.start, c1.start) < 0) {\n before = d1;\n d1 = splitDelta(d1, c1.start);\n }\n if (cmp(d1.end, c1.end) > 0) {\n after = splitDelta(d1, c1.end);\n }\n shiftPos(c1.end, d1.start, d1.end, -1);\n if (after && !before) {\n d1.lines = after.lines;\n d1.start = after.start;\n d1.end = after.end;\n after = d1;\n }\n return [c1, before, after].filter(Boolean);\n }\n }\n return [c1, d1];\n}\nfunction shift(d1, d2, dir) {\n shiftPos(d1.start, d2.start, d2.end, dir);\n shiftPos(d1.end, d2.start, d2.end, dir);\n}\nfunction shiftPos(pos, start, end, dir) {\n if (pos.row == (dir == 1 ? start : end).row) {\n pos.column += dir * (end.column - start.column);\n }\n pos.row += dir * (end.row - start.row);\n}\nfunction splitDelta(c, pos) {\n var lines = c.lines;\n var end = c.end;\n c.end = clonePos(pos);\n var rowsBefore = c.end.row - c.start.row;\n var otherLines = lines.splice(rowsBefore, lines.length);\n var col = rowsBefore ? pos.column : pos.column - c.start.column;\n lines.push(otherLines[0].substring(0, col));\n otherLines[0] = otherLines[0].substr(col);\n var rest = {\n start: clonePos(pos),\n end: end,\n lines: otherLines,\n action: c.action\n };\n return rest;\n}\nfunction moveDeltasByOne(redoStack, d) {\n d = cloneDelta(d);\n for (var j = redoStack.length; j--;) {\n var deltaSet = redoStack[j];\n for (var i = 0; i < deltaSet.length; i++) {\n var x = deltaSet[i];\n var xformed = xform(x, d);\n d = xformed[0];\n if (xformed.length != 2) {\n if (xformed[2]) {\n deltaSet.splice(i + 1, 1, xformed[1], xformed[2]);\n i++;\n }\n else if (!xformed[1]) {\n deltaSet.splice(i, 1);\n i--;\n }\n }\n }\n if (!deltaSet.length) {\n redoStack.splice(j, 1);\n }\n }\n return redoStack;\n}\nfunction rebaseRedoStack(redoStack, deltaSets) {\n for (var i = 0; i < deltaSets.length; i++) {\n var deltas = deltaSets[i];\n for (var j = 0; j < deltas.length; j++) {\n moveDeltasByOne(redoStack, deltas[j]);\n }\n }\n}\nexports.UndoManager = UndoManager;\n\n});\n\nace.define(\"ace/edit_session/fold_line\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar Range = require(\"../range\").Range;\nvar FoldLine = /** @class */ (function () {\n function FoldLine(foldData, folds) {\n this.foldData = foldData;\n if (Array.isArray(folds)) {\n this.folds = folds;\n }\n else {\n folds = this.folds = [folds];\n }\n var last = folds[folds.length - 1];\n this.range = new Range(folds[0].start.row, folds[0].start.column, last.end.row, last.end.column);\n this.start = this.range.start;\n this.end = this.range.end;\n this.folds.forEach(function (fold) {\n fold.setFoldLine(this);\n }, this);\n }\n FoldLine.prototype.shiftRow = function (shift) {\n this.start.row += shift;\n this.end.row += shift;\n this.folds.forEach(function (fold) {\n fold.start.row += shift;\n fold.end.row += shift;\n });\n };\n FoldLine.prototype.addFold = function (fold) {\n if (fold.sameRow) {\n if (fold.start.row < this.startRow || fold.endRow > this.endRow) {\n throw new Error(\"Can't add a fold to this FoldLine as it has no connection\");\n }\n this.folds.push(fold);\n this.folds.sort(function (a, b) {\n return -a.range.compareEnd(b.start.row, b.start.column);\n });\n if (this.range.compareEnd(fold.start.row, fold.start.column) > 0) {\n this.end.row = fold.end.row;\n this.end.column = fold.end.column;\n }\n else if (this.range.compareStart(fold.end.row, fold.end.column) < 0) {\n this.start.row = fold.start.row;\n this.start.column = fold.start.column;\n }\n }\n else if (fold.start.row == this.end.row) {\n this.folds.push(fold);\n this.end.row = fold.end.row;\n this.end.column = fold.end.column;\n }\n else if (fold.end.row == this.start.row) {\n this.folds.unshift(fold);\n this.start.row = fold.start.row;\n this.start.column = fold.start.column;\n }\n else {\n throw new Error(\"Trying to add fold to FoldRow that doesn't have a matching row\");\n }\n fold.foldLine = this;\n };\n FoldLine.prototype.containsRow = function (row) {\n return row >= this.start.row && row <= this.end.row;\n };\n FoldLine.prototype.walk = function (callback, endRow, endColumn) {\n var lastEnd = 0, folds = this.folds, fold, cmp, stop, isNewRow = true;\n if (endRow == null) {\n endRow = this.end.row;\n endColumn = this.end.column;\n }\n for (var i = 0; i < folds.length; i++) {\n fold = folds[i];\n cmp = fold.range.compareStart(endRow, endColumn);\n if (cmp == -1) {\n callback(null, endRow, endColumn, lastEnd, isNewRow);\n return;\n }\n stop = callback(null, fold.start.row, fold.start.column, lastEnd, isNewRow);\n stop = !stop && callback(fold.placeholder, fold.start.row, fold.start.column, lastEnd);\n if (stop || cmp === 0) {\n return;\n }\n isNewRow = !fold.sameRow;\n lastEnd = fold.end.column;\n }\n callback(null, endRow, endColumn, lastEnd, isNewRow);\n };\n FoldLine.prototype.getNextFoldTo = function (row, column) {\n var fold, cmp;\n for (var i = 0; i < this.folds.length; i++) {\n fold = this.folds[i];\n cmp = fold.range.compareEnd(row, column);\n if (cmp == -1) {\n return {\n fold: fold,\n kind: \"after\"\n };\n }\n else if (cmp === 0) {\n return {\n fold: fold,\n kind: \"inside\"\n };\n }\n }\n return null;\n };\n FoldLine.prototype.addRemoveChars = function (row, column, len) {\n var ret = this.getNextFoldTo(row, column), fold, folds;\n if (ret) {\n fold = ret.fold;\n if (ret.kind == \"inside\"\n && fold.start.column != column\n && fold.start.row != row) {\n window.console && window.console.log(row, column, fold);\n }\n else if (fold.start.row == row) {\n folds = this.folds;\n var i = folds.indexOf(fold);\n if (i === 0) {\n this.start.column += len;\n }\n for (i; i < folds.length; i++) {\n fold = folds[i];\n fold.start.column += len;\n if (!fold.sameRow) {\n return;\n }\n fold.end.column += len;\n }\n this.end.column += len;\n }\n }\n };\n FoldLine.prototype.split = function (row, column) {\n var pos = this.getNextFoldTo(row, column);\n if (!pos || pos.kind == \"inside\")\n return null;\n var fold = pos.fold;\n var folds = this.folds;\n var foldData = this.foldData;\n var i = folds.indexOf(fold);\n var foldBefore = folds[i - 1];\n this.end.row = foldBefore.end.row;\n this.end.column = foldBefore.end.column;\n folds = folds.splice(i, folds.length - i);\n var newFoldLine = new FoldLine(foldData, folds);\n foldData.splice(foldData.indexOf(this) + 1, 0, newFoldLine);\n return newFoldLine;\n };\n FoldLine.prototype.merge = function (foldLineNext) {\n var folds = foldLineNext.folds;\n for (var i = 0; i < folds.length; i++) {\n this.addFold(folds[i]);\n }\n var foldData = this.foldData;\n foldData.splice(foldData.indexOf(foldLineNext), 1);\n };\n FoldLine.prototype.toString = function () {\n var ret = [this.range.toString() + \": [\"];\n this.folds.forEach(function (fold) {\n ret.push(\" \" + fold.toString());\n });\n ret.push(\"]\");\n return ret.join(\"\\n\");\n };\n FoldLine.prototype.idxToPosition = function (idx) {\n var lastFoldEndColumn = 0;\n for (var i = 0; i < this.folds.length; i++) {\n var fold = this.folds[i];\n idx -= fold.start.column - lastFoldEndColumn;\n if (idx < 0) {\n return {\n row: fold.start.row,\n column: fold.start.column + idx\n };\n }\n idx -= fold.placeholder.length;\n if (idx < 0) {\n return fold.start;\n }\n lastFoldEndColumn = fold.end.column;\n }\n return {\n row: this.end.row,\n column: this.end.column + idx\n };\n };\n return FoldLine;\n}());\nexports.FoldLine = FoldLine;\n\n});\n\nace.define(\"ace/range_list\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar Range = require(\"./range\").Range;\nvar comparePoints = Range.comparePoints;\nvar RangeList = /** @class */ (function () {\n function RangeList() {\n this.ranges = [];\n this.$bias = 1;\n }\n RangeList.prototype.pointIndex = function (pos, excludeEdges, startIndex) {\n var list = this.ranges;\n for (var i = startIndex || 0; i < list.length; i++) {\n var range = list[i];\n var cmpEnd = comparePoints(pos, range.end);\n if (cmpEnd > 0)\n continue;\n var cmpStart = comparePoints(pos, range.start);\n if (cmpEnd === 0)\n return excludeEdges && cmpStart !== 0 ? -i - 2 : i;\n if (cmpStart > 0 || (cmpStart === 0 && !excludeEdges))\n return i;\n return -i - 1;\n }\n return -i - 1;\n };\n RangeList.prototype.add = function (range) {\n var excludeEdges = !range.isEmpty();\n var startIndex = this.pointIndex(range.start, excludeEdges);\n if (startIndex < 0)\n startIndex = -startIndex - 1;\n var endIndex = this.pointIndex(range.end, excludeEdges, startIndex);\n if (endIndex < 0)\n endIndex = -endIndex - 1;\n else\n endIndex++;\n return this.ranges.splice(startIndex, endIndex - startIndex, range);\n };\n RangeList.prototype.addList = function (list) {\n var removed = [];\n for (var i = list.length; i--;) {\n removed.push.apply(removed, this.add(list[i]));\n }\n return removed;\n };\n RangeList.prototype.substractPoint = function (pos) {\n var i = this.pointIndex(pos);\n if (i >= 0)\n return this.ranges.splice(i, 1);\n };\n RangeList.prototype.merge = function () {\n var removed = [];\n var list = this.ranges;\n list = list.sort(function (a, b) {\n return comparePoints(a.start, b.start);\n });\n var next = list[0], range;\n for (var i = 1; i < list.length; i++) {\n range = next;\n next = list[i];\n var cmp = comparePoints(range.end, next.start);\n if (cmp < 0)\n continue;\n if (cmp == 0 && !range.isEmpty() && !next.isEmpty())\n continue;\n if (comparePoints(range.end, next.end) < 0) {\n range.end.row = next.end.row;\n range.end.column = next.end.column;\n }\n list.splice(i, 1);\n removed.push(next);\n next = range;\n i--;\n }\n this.ranges = list;\n return removed;\n };\n RangeList.prototype.contains = function (row, column) {\n return this.pointIndex({ row: row, column: column }) >= 0;\n };\n RangeList.prototype.containsPoint = function (pos) {\n return this.pointIndex(pos) >= 0;\n };\n RangeList.prototype.rangeAtPoint = function (pos) {\n var i = this.pointIndex(pos);\n if (i >= 0)\n return this.ranges[i];\n };\n RangeList.prototype.clipRows = function (startRow, endRow) {\n var list = this.ranges;\n if (list[0].start.row > endRow || list[list.length - 1].start.row < startRow)\n return [];\n var startIndex = this.pointIndex({ row: startRow, column: 0 });\n if (startIndex < 0)\n startIndex = -startIndex - 1;\n var endIndex = this.pointIndex({ row: endRow, column: 0 }, startIndex);\n if (endIndex < 0)\n endIndex = -endIndex - 1;\n var clipped = [];\n for (var i = startIndex; i < endIndex; i++) {\n clipped.push(list[i]);\n }\n return clipped;\n };\n RangeList.prototype.removeAll = function () {\n return this.ranges.splice(0, this.ranges.length);\n };\n RangeList.prototype.attach = function (session) {\n if (this.session)\n this.detach();\n this.session = session;\n this.onChange = this.$onChange.bind(this);\n this.session.on('change', this.onChange);\n };\n RangeList.prototype.detach = function () {\n if (!this.session)\n return;\n this.session.removeListener('change', this.onChange);\n this.session = null;\n };\n RangeList.prototype.$onChange = function (delta) {\n var start = delta.start;\n var end = delta.end;\n var startRow = start.row;\n var endRow = end.row;\n var ranges = this.ranges;\n for (var i = 0, n = ranges.length; i < n; i++) {\n var r = ranges[i];\n if (r.end.row >= startRow)\n break;\n }\n if (delta.action == \"insert\") {\n var lineDif = endRow - startRow;\n var colDiff = -start.column + end.column;\n for (; i < n; i++) {\n var r = ranges[i];\n if (r.start.row > startRow)\n break;\n if (r.start.row == startRow && r.start.column >= start.column) {\n if (r.start.column == start.column && this.$bias <= 0) {\n }\n else {\n r.start.column += colDiff;\n r.start.row += lineDif;\n }\n }\n if (r.end.row == startRow && r.end.column >= start.column) {\n if (r.end.column == start.column && this.$bias < 0) {\n continue;\n }\n if (r.end.column == start.column && colDiff > 0 && i < n - 1) {\n if (r.end.column > r.start.column && r.end.column == ranges[i + 1].start.column)\n r.end.column -= colDiff;\n }\n r.end.column += colDiff;\n r.end.row += lineDif;\n }\n }\n }\n else {\n var lineDif = startRow - endRow;\n var colDiff = start.column - end.column;\n for (; i < n; i++) {\n var r = ranges[i];\n if (r.start.row > endRow)\n break;\n if (r.end.row < endRow\n && (startRow < r.end.row\n || startRow == r.end.row && start.column < r.end.column)) {\n r.end.row = startRow;\n r.end.column = start.column;\n }\n else if (r.end.row == endRow) {\n if (r.end.column <= end.column) {\n if (lineDif || r.end.column > start.column) {\n r.end.column = start.column;\n r.end.row = start.row;\n }\n }\n else {\n r.end.column += colDiff;\n r.end.row += lineDif;\n }\n }\n else if (r.end.row > endRow) {\n r.end.row += lineDif;\n }\n if (r.start.row < endRow\n && (startRow < r.start.row\n || startRow == r.start.row && start.column < r.start.column)) {\n r.start.row = startRow;\n r.start.column = start.column;\n }\n else if (r.start.row == endRow) {\n if (r.start.column <= end.column) {\n if (lineDif || r.start.column > start.column) {\n r.start.column = start.column;\n r.start.row = start.row;\n }\n }\n else {\n r.start.column += colDiff;\n r.start.row += lineDif;\n }\n }\n else if (r.start.row > endRow) {\n r.start.row += lineDif;\n }\n }\n }\n if (lineDif != 0 && i < n) {\n for (; i < n; i++) {\n var r = ranges[i];\n r.start.row += lineDif;\n r.end.row += lineDif;\n }\n }\n };\n return RangeList;\n}());\nRangeList.prototype.comparePoints = comparePoints;\nexports.RangeList = RangeList;\n\n});\n\nace.define(\"ace/edit_session/fold\",[\"require\",\"exports\",\"module\",\"ace/range_list\"], function(require, exports, module){\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar RangeList = require(\"../range_list\").RangeList;\nvar Fold = /** @class */ (function (_super) {\n __extends(Fold, _super);\n function Fold(range, placeholder) {\n var _this = _super.call(this) || this;\n _this.foldLine = null;\n _this.placeholder = placeholder;\n _this.range = range;\n _this.start = range.start;\n _this.end = range.end;\n _this.sameRow = range.start.row == range.end.row;\n _this.subFolds = _this.ranges = [];\n return _this;\n }\n Fold.prototype.toString = function () {\n return '\"' + this.placeholder + '\" ' + this.range.toString();\n };\n Fold.prototype.setFoldLine = function (foldLine) {\n this.foldLine = foldLine;\n this.subFolds.forEach(function (fold) {\n fold.setFoldLine(foldLine);\n });\n };\n Fold.prototype.clone = function () {\n var range = this.range.clone();\n var fold = new Fold(range, this.placeholder);\n this.subFolds.forEach(function (subFold) {\n fold.subFolds.push(subFold.clone());\n });\n fold.collapseChildren = this.collapseChildren;\n return fold;\n };\n Fold.prototype.addSubFold = function (fold) {\n if (this.range.isEqual(fold))\n return;\n consumeRange(fold, this.start);\n var row = fold.start.row, column = fold.start.column;\n for (var i = 0, cmp = -1; i < this.subFolds.length; i++) {\n cmp = this.subFolds[i].range.compare(row, column);\n if (cmp != 1)\n break;\n }\n var afterStart = this.subFolds[i];\n var firstConsumed = 0;\n if (cmp == 0) {\n if (afterStart.range.containsRange(fold))\n return afterStart.addSubFold(fold);\n else\n firstConsumed = 1;\n }\n var row = fold.range.end.row, column = fold.range.end.column;\n for (var j = i, cmp = -1; j < this.subFolds.length; j++) {\n cmp = this.subFolds[j].range.compare(row, column);\n if (cmp != 1)\n break;\n }\n if (cmp == 0)\n j++;\n var consumedFolds = this.subFolds.splice(i, j - i, fold);\n var last = cmp == 0 ? consumedFolds.length - 1 : consumedFolds.length;\n for (var k = firstConsumed; k < last; k++) {\n fold.addSubFold(consumedFolds[k]);\n }\n fold.setFoldLine(this.foldLine);\n return fold;\n };\n Fold.prototype.restoreRange = function (range) {\n return restoreRange(range, this.start);\n };\n return Fold;\n}(RangeList));\nfunction consumePoint(point, anchor) {\n point.row -= anchor.row;\n if (point.row == 0)\n point.column -= anchor.column;\n}\nfunction consumeRange(range, anchor) {\n consumePoint(range.start, anchor);\n consumePoint(range.end, anchor);\n}\nfunction restorePoint(point, anchor) {\n if (point.row == 0)\n point.column += anchor.column;\n point.row += anchor.row;\n}\nfunction restoreRange(range, anchor) {\n restorePoint(range.start, anchor);\n restorePoint(range.end, anchor);\n}\nexports.Fold = Fold;\n\n});\n\nace.define(\"ace/edit_session/folding\",[\"require\",\"exports\",\"module\",\"ace/range\",\"ace/edit_session/fold_line\",\"ace/edit_session/fold\",\"ace/token_iterator\",\"ace/mouse/mouse_event\"], function(require, exports, module){\"use strict\";\nvar Range = require(\"../range\").Range;\nvar FoldLine = require(\"./fold_line\").FoldLine;\nvar Fold = require(\"./fold\").Fold;\nvar TokenIterator = require(\"../token_iterator\").TokenIterator;\nvar MouseEvent = require(\"../mouse/mouse_event\").MouseEvent;\nfunction Folding() {\n this.getFoldAt = function (row, column, side) {\n var foldLine = this.getFoldLine(row);\n if (!foldLine)\n return null;\n var folds = foldLine.folds;\n for (var i = 0; i < folds.length; i++) {\n var range = folds[i].range;\n if (range.contains(row, column)) {\n if (side == 1 && range.isEnd(row, column) && !range.isEmpty()) {\n continue;\n }\n else if (side == -1 && range.isStart(row, column) && !range.isEmpty()) {\n continue;\n }\n return folds[i];\n }\n }\n };\n this.getFoldsInRange = function (range) {\n var start = range.start;\n var end = range.end;\n var foldLines = this.$foldData;\n var foundFolds = [];\n start.column += 1;\n end.column -= 1;\n for (var i = 0; i < foldLines.length; i++) {\n var cmp = foldLines[i].range.compareRange(range);\n if (cmp == 2) {\n continue;\n }\n else if (cmp == -2) {\n break;\n }\n var folds = foldLines[i].folds;\n for (var j = 0; j < folds.length; j++) {\n var fold = folds[j];\n cmp = fold.range.compareRange(range);\n if (cmp == -2) {\n break;\n }\n else if (cmp == 2) {\n continue;\n }\n else \n if (cmp == 42) {\n break;\n }\n foundFolds.push(fold);\n }\n }\n start.column -= 1;\n end.column += 1;\n return foundFolds;\n };\n this.getFoldsInRangeList = function (ranges) {\n if (Array.isArray(ranges)) {\n var folds = [];\n ranges.forEach(function (range) {\n folds = folds.concat(this.getFoldsInRange(range));\n }, this);\n }\n else {\n var folds = this.getFoldsInRange(ranges);\n }\n return folds;\n };\n this.getAllFolds = function () {\n var folds = [];\n var foldLines = this.$foldData;\n for (var i = 0; i < foldLines.length; i++)\n for (var j = 0; j < foldLines[i].folds.length; j++)\n folds.push(foldLines[i].folds[j]);\n return folds;\n };\n this.getFoldStringAt = function (row, column, trim, foldLine) {\n foldLine = foldLine || this.getFoldLine(row);\n if (!foldLine)\n return null;\n var lastFold = {\n end: { column: 0 }\n };\n var str, fold;\n for (var i = 0; i < foldLine.folds.length; i++) {\n fold = foldLine.folds[i];\n var cmp = fold.range.compareEnd(row, column);\n if (cmp == -1) {\n str = this\n .getLine(fold.start.row)\n .substring(lastFold.end.column, fold.start.column);\n break;\n }\n else if (cmp === 0) {\n return null;\n }\n lastFold = fold;\n }\n if (!str)\n str = this.getLine(fold.start.row).substring(lastFold.end.column);\n if (trim == -1)\n return str.substring(0, column - lastFold.end.column);\n else if (trim == 1)\n return str.substring(column - lastFold.end.column);\n else\n return str;\n };\n this.getFoldLine = function (docRow, startFoldLine) {\n var foldData = this.$foldData;\n var i = 0;\n if (startFoldLine)\n i = foldData.indexOf(startFoldLine);\n if (i == -1)\n i = 0;\n for (i; i < foldData.length; i++) {\n var foldLine = foldData[i];\n if (foldLine.start.row <= docRow && foldLine.end.row >= docRow) {\n return foldLine;\n }\n else if (foldLine.end.row > docRow) {\n return null;\n }\n }\n return null;\n };\n this.getNextFoldLine = function (docRow, startFoldLine) {\n var foldData = this.$foldData;\n var i = 0;\n if (startFoldLine)\n i = foldData.indexOf(startFoldLine);\n if (i == -1)\n i = 0;\n for (i; i < foldData.length; i++) {\n var foldLine = foldData[i];\n if (foldLine.end.row >= docRow) {\n return foldLine;\n }\n }\n return null;\n };\n this.getFoldedRowCount = function (first, last) {\n var foldData = this.$foldData, rowCount = last - first + 1;\n for (var i = 0; i < foldData.length; i++) {\n var foldLine = foldData[i], end = foldLine.end.row, start = foldLine.start.row;\n if (end >= last) {\n if (start < last) {\n if (start >= first)\n rowCount -= last - start;\n else\n rowCount = 0; // in one fold\n }\n break;\n }\n else if (end >= first) {\n if (start >= first) // fold inside range\n rowCount -= end - start;\n else\n rowCount -= end - first + 1;\n }\n }\n return rowCount;\n };\n this.$addFoldLine = function (foldLine) {\n this.$foldData.push(foldLine);\n this.$foldData.sort(function (a, b) {\n return a.start.row - b.start.row;\n });\n return foldLine;\n };\n this.addFold = function (placeholder, range) {\n var foldData = this.$foldData;\n var added = false;\n var fold;\n if (placeholder instanceof Fold)\n fold = placeholder;\n else {\n fold = new Fold(range, placeholder);\n fold.collapseChildren = range.collapseChildren;\n }\n this.$clipRangeToDocument(fold.range);\n var startRow = fold.start.row;\n var startColumn = fold.start.column;\n var endRow = fold.end.row;\n var endColumn = fold.end.column;\n var startFold = this.getFoldAt(startRow, startColumn, 1);\n var endFold = this.getFoldAt(endRow, endColumn, -1);\n if (startFold && endFold == startFold)\n return startFold.addSubFold(fold);\n if (startFold && !startFold.range.isStart(startRow, startColumn))\n this.removeFold(startFold);\n if (endFold && !endFold.range.isEnd(endRow, endColumn))\n this.removeFold(endFold);\n var folds = this.getFoldsInRange(fold.range);\n if (folds.length > 0) {\n this.removeFolds(folds);\n if (!fold.collapseChildren) {\n folds.forEach(function (subFold) {\n fold.addSubFold(subFold);\n });\n }\n }\n for (var i = 0; i < foldData.length; i++) {\n var foldLine = foldData[i];\n if (endRow == foldLine.start.row) {\n foldLine.addFold(fold);\n added = true;\n break;\n }\n else if (startRow == foldLine.end.row) {\n foldLine.addFold(fold);\n added = true;\n if (!fold.sameRow) {\n var foldLineNext = foldData[i + 1];\n if (foldLineNext && foldLineNext.start.row == endRow) {\n foldLine.merge(foldLineNext);\n break;\n }\n }\n break;\n }\n else if (endRow <= foldLine.start.row) {\n break;\n }\n }\n if (!added)\n foldLine = this.$addFoldLine(new FoldLine(this.$foldData, fold));\n if (this.$useWrapMode)\n this.$updateWrapData(foldLine.start.row, foldLine.start.row);\n else\n this.$updateRowLengthCache(foldLine.start.row, foldLine.start.row);\n this.$modified = true;\n this._signal(\"changeFold\", { data: fold, action: \"add\" });\n return fold;\n };\n this.addFolds = function (folds) {\n folds.forEach(function (fold) {\n this.addFold(fold);\n }, this);\n };\n this.removeFold = function (fold) {\n var foldLine = fold.foldLine;\n var startRow = foldLine.start.row;\n var endRow = foldLine.end.row;\n var foldLines = this.$foldData;\n var folds = foldLine.folds;\n if (folds.length == 1) {\n foldLines.splice(foldLines.indexOf(foldLine), 1);\n }\n else \n if (foldLine.range.isEnd(fold.end.row, fold.end.column)) {\n folds.pop();\n foldLine.end.row = folds[folds.length - 1].end.row;\n foldLine.end.column = folds[folds.length - 1].end.column;\n }\n else \n if (foldLine.range.isStart(fold.start.row, fold.start.column)) {\n folds.shift();\n foldLine.start.row = folds[0].start.row;\n foldLine.start.column = folds[0].start.column;\n }\n else \n if (fold.sameRow) {\n folds.splice(folds.indexOf(fold), 1);\n }\n else \n {\n var newFoldLine = foldLine.split(fold.start.row, fold.start.column);\n folds = newFoldLine.folds;\n folds.shift();\n newFoldLine.start.row = folds[0].start.row;\n newFoldLine.start.column = folds[0].start.column;\n }\n if (!this.$updating) {\n if (this.$useWrapMode)\n this.$updateWrapData(startRow, endRow);\n else\n this.$updateRowLengthCache(startRow, endRow);\n }\n this.$modified = true;\n this._signal(\"changeFold\", { data: fold, action: \"remove\" });\n };\n this.removeFolds = function (folds) {\n var cloneFolds = [];\n for (var i = 0; i < folds.length; i++) {\n cloneFolds.push(folds[i]);\n }\n cloneFolds.forEach(function (fold) {\n this.removeFold(fold);\n }, this);\n this.$modified = true;\n };\n this.expandFold = function (fold) {\n this.removeFold(fold);\n fold.subFolds.forEach(function (subFold) {\n fold.restoreRange(subFold);\n this.addFold(subFold);\n }, this);\n if (fold.collapseChildren > 0) {\n this.foldAll(fold.start.row + 1, fold.end.row, fold.collapseChildren - 1);\n }\n fold.subFolds = [];\n };\n this.expandFolds = function (folds) {\n folds.forEach(function (fold) {\n this.expandFold(fold);\n }, this);\n };\n this.unfold = function (location, expandInner) {\n var range, folds;\n if (location == null) {\n range = new Range(0, 0, this.getLength(), 0);\n if (expandInner == null)\n expandInner = true;\n }\n else if (typeof location == \"number\") {\n range = new Range(location, 0, location, this.getLine(location).length);\n }\n else if (\"row\" in location) {\n range = Range.fromPoints(location, location);\n }\n else if (Array.isArray(location)) {\n folds = [];\n location.forEach(function (range) {\n folds = folds.concat(this.unfold(range));\n }, this);\n return folds;\n }\n else {\n range = location;\n }\n folds = this.getFoldsInRangeList(range);\n var outermostFolds = folds;\n while (folds.length == 1\n && Range.comparePoints(folds[0].start, range.start) < 0\n && Range.comparePoints(folds[0].end, range.end) > 0) {\n this.expandFolds(folds);\n folds = this.getFoldsInRangeList(range);\n }\n if (expandInner != false) {\n this.removeFolds(folds);\n }\n else {\n this.expandFolds(folds);\n }\n if (outermostFolds.length)\n return outermostFolds;\n };\n this.isRowFolded = function (docRow, startFoldRow) {\n return !!this.getFoldLine(docRow, startFoldRow);\n };\n this.getRowFoldEnd = function (docRow, startFoldRow) {\n var foldLine = this.getFoldLine(docRow, startFoldRow);\n return foldLine ? foldLine.end.row : docRow;\n };\n this.getRowFoldStart = function (docRow, startFoldRow) {\n var foldLine = this.getFoldLine(docRow, startFoldRow);\n return foldLine ? foldLine.start.row : docRow;\n };\n this.getFoldDisplayLine = function (foldLine, endRow, endColumn, startRow, startColumn) {\n if (startRow == null)\n startRow = foldLine.start.row;\n if (startColumn == null)\n startColumn = 0;\n if (endRow == null)\n endRow = foldLine.end.row;\n if (endColumn == null)\n endColumn = this.getLine(endRow).length;\n var doc = this.doc;\n var textLine = \"\";\n foldLine.walk(function (placeholder, row, column, lastColumn) {\n if (row < startRow)\n return;\n if (row == startRow) {\n if (column < startColumn)\n return;\n lastColumn = Math.max(startColumn, lastColumn);\n }\n if (placeholder != null) {\n textLine += placeholder;\n }\n else {\n textLine += doc.getLine(row).substring(lastColumn, column);\n }\n }, endRow, endColumn);\n return textLine;\n };\n this.getDisplayLine = function (row, endColumn, startRow, startColumn) {\n var foldLine = this.getFoldLine(row);\n if (!foldLine) {\n var line;\n line = this.doc.getLine(row);\n return line.substring(startColumn || 0, endColumn || line.length);\n }\n else {\n return this.getFoldDisplayLine(foldLine, row, endColumn, startRow, startColumn);\n }\n };\n this.$cloneFoldData = function () {\n var fd = [];\n fd = this.$foldData.map(function (foldLine) {\n var folds = foldLine.folds.map(function (fold) {\n return fold.clone();\n });\n return new FoldLine(fd, folds);\n });\n return fd;\n };\n this.toggleFold = function (tryToUnfold) {\n var selection = this.selection;\n var range = selection.getRange();\n var fold;\n var bracketPos;\n if (range.isEmpty()) {\n var cursor = range.start;\n fold = this.getFoldAt(cursor.row, cursor.column);\n if (fold) {\n this.expandFold(fold);\n return;\n }\n else if (bracketPos = this.findMatchingBracket(cursor)) {\n if (range.comparePoint(bracketPos) == 1) {\n range.end = bracketPos;\n }\n else {\n range.start = bracketPos;\n range.start.column++;\n range.end.column--;\n }\n }\n else if (bracketPos = this.findMatchingBracket({ row: cursor.row, column: cursor.column + 1 })) {\n if (range.comparePoint(bracketPos) == 1)\n range.end = bracketPos;\n else\n range.start = bracketPos;\n range.start.column++;\n }\n else {\n range = this.getCommentFoldRange(cursor.row, cursor.column) || range;\n }\n }\n else {\n var folds = this.getFoldsInRange(range);\n if (tryToUnfold && folds.length) {\n this.expandFolds(folds);\n return;\n }\n else if (folds.length == 1) {\n fold = folds[0];\n }\n }\n if (!fold)\n fold = this.getFoldAt(range.start.row, range.start.column);\n if (fold && fold.range.toString() == range.toString()) {\n this.expandFold(fold);\n return;\n }\n var placeholder = \"...\";\n if (!range.isMultiLine()) {\n placeholder = this.getTextRange(range);\n if (placeholder.length < 4)\n return;\n placeholder = placeholder.trim().substring(0, 2) + \"..\";\n }\n this.addFold(placeholder, range);\n };\n this.getCommentFoldRange = function (row, column, dir) {\n var iterator = new TokenIterator(this, row, column);\n var token = iterator.getCurrentToken();\n var type = token && token.type;\n if (token && /^comment|string/.test(type)) {\n type = type.match(/comment|string/)[0];\n if (type == \"comment\")\n type += \"|doc-start|\\\\.doc\";\n var re = new RegExp(type);\n var range = new Range();\n if (dir != 1) {\n do {\n token = iterator.stepBackward();\n } while (token && re.test(token.type) && !/^comment.end/.test(token.type));\n token = iterator.stepForward();\n }\n range.start.row = iterator.getCurrentTokenRow();\n range.start.column = iterator.getCurrentTokenColumn() + (/^comment.start/.test(token.type) ? token.value.length : 2);\n iterator = new TokenIterator(this, row, column);\n if (dir != -1) {\n var lastRow = -1;\n do {\n token = iterator.stepForward();\n if (lastRow == -1) {\n var state = this.getState(iterator.$row);\n if (!re.test(state))\n lastRow = iterator.$row;\n }\n else if (iterator.$row > lastRow) {\n break;\n }\n } while (token && re.test(token.type) && !/^comment.start/.test(token.type));\n token = iterator.stepBackward();\n }\n else\n token = iterator.getCurrentToken();\n range.end.row = iterator.getCurrentTokenRow();\n range.end.column = iterator.getCurrentTokenColumn();\n if (!/^comment.end/.test(token.type)) {\n range.end.column += token.value.length - 2;\n }\n return range;\n }\n };\n this.foldAll = function (startRow, endRow, depth, test) {\n if (depth == undefined)\n depth = 100000; // JSON.stringify doesn't hanle Infinity\n var foldWidgets = this.foldWidgets;\n if (!foldWidgets)\n return; // mode doesn't support folding\n endRow = endRow || this.getLength();\n startRow = startRow || 0;\n for (var row = startRow; row < endRow; row++) {\n if (foldWidgets[row] == null)\n foldWidgets[row] = this.getFoldWidget(row);\n if (foldWidgets[row] != \"start\")\n continue;\n if (test && !test(row))\n continue;\n var range = this.getFoldWidgetRange(row);\n if (range && range.isMultiLine()\n && range.end.row <= endRow\n && range.start.row >= startRow) {\n row = range.end.row;\n range.collapseChildren = depth;\n this.addFold(\"...\", range);\n }\n }\n };\n this.foldToLevel = function (level) {\n this.foldAll();\n while (level-- > 0)\n this.unfold(null, false);\n };\n this.foldAllComments = function () {\n var session = this;\n this.foldAll(null, null, null, function (row) {\n var tokens = session.getTokens(row);\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n if (token.type == \"text\" && /^\\s+$/.test(token.value))\n continue;\n if (/comment/.test(token.type))\n return true;\n return false;\n }\n });\n };\n this.$foldStyles = {\n \"manual\": 1,\n \"markbegin\": 1,\n \"markbeginend\": 1\n };\n this.$foldStyle = \"markbegin\";\n this.setFoldStyle = function (style) {\n if (!this.$foldStyles[style])\n throw new Error(\"invalid fold style: \" + style + \"[\" + Object.keys(this.$foldStyles).join(\", \") + \"]\");\n if (this.$foldStyle == style)\n return;\n this.$foldStyle = style;\n if (style == \"manual\")\n this.unfold();\n var mode = this.$foldMode;\n this.$setFolding(null);\n this.$setFolding(mode);\n };\n this.$setFolding = function (foldMode) {\n if (this.$foldMode == foldMode)\n return;\n this.$foldMode = foldMode;\n this.off('change', this.$updateFoldWidgets);\n this.off('tokenizerUpdate', this.$tokenizerUpdateFoldWidgets);\n this._signal(\"changeAnnotation\");\n if (!foldMode || this.$foldStyle == \"manual\") {\n this.foldWidgets = null;\n return;\n }\n this.foldWidgets = [];\n this.getFoldWidget = foldMode.getFoldWidget.bind(foldMode, this, this.$foldStyle);\n this.getFoldWidgetRange = foldMode.getFoldWidgetRange.bind(foldMode, this, this.$foldStyle);\n this.$updateFoldWidgets = this.updateFoldWidgets.bind(this);\n this.$tokenizerUpdateFoldWidgets = this.tokenizerUpdateFoldWidgets.bind(this);\n this.on('change', this.$updateFoldWidgets);\n this.on('tokenizerUpdate', this.$tokenizerUpdateFoldWidgets);\n };\n this.getParentFoldRangeData = function (row, ignoreCurrent) {\n var fw = this.foldWidgets;\n if (!fw || (ignoreCurrent && fw[row]))\n return {};\n var i = row - 1, firstRange;\n while (i >= 0) {\n var c = fw[i];\n if (c == null)\n c = fw[i] = this.getFoldWidget(i);\n if (c == \"start\") {\n var range = this.getFoldWidgetRange(i);\n if (!firstRange)\n firstRange = range;\n if (range && range.end.row >= row)\n break;\n }\n i--;\n }\n return {\n range: i !== -1 && range,\n firstRange: firstRange\n };\n };\n this.onFoldWidgetClick = function (row, e) {\n if (e instanceof MouseEvent)\n e = e.domEvent;\n var options = {\n children: e.shiftKey,\n all: e.ctrlKey || e.metaKey,\n siblings: e.altKey\n };\n var range = this.$toggleFoldWidget(row, options);\n if (!range) {\n var el = (e.target || e.srcElement);\n if (el && /ace_fold-widget/.test(el.className))\n el.className += \" ace_invalid\";\n }\n };\n this.$toggleFoldWidget = function (row, options) {\n if (!this.getFoldWidget)\n return;\n var type = this.getFoldWidget(row);\n var line = this.getLine(row);\n var dir = type === \"end\" ? -1 : 1;\n var fold = this.getFoldAt(row, dir === -1 ? 0 : line.length, dir);\n if (fold) {\n if (options.children || options.all)\n this.removeFold(fold);\n else\n this.expandFold(fold);\n return fold;\n }\n var range = this.getFoldWidgetRange(row, true);\n if (range && !range.isMultiLine()) {\n fold = this.getFoldAt(range.start.row, range.start.column, 1);\n if (fold && range.isEqual(fold.range)) {\n this.removeFold(fold);\n return fold;\n }\n }\n if (options.siblings) {\n var data = this.getParentFoldRangeData(row);\n if (data.range) {\n var startRow = data.range.start.row + 1;\n var endRow = data.range.end.row;\n }\n this.foldAll(startRow, endRow, options.all ? 10000 : 0);\n }\n else if (options.children) {\n endRow = range ? range.end.row : this.getLength();\n this.foldAll(row + 1, endRow, options.all ? 10000 : 0);\n }\n else if (range) {\n if (options.all)\n range.collapseChildren = 10000;\n this.addFold(\"...\", range);\n }\n return range;\n };\n this.toggleFoldWidget = function (toggleParent) {\n var row = this.selection.getCursor().row;\n row = this.getRowFoldStart(row);\n var range = this.$toggleFoldWidget(row, {});\n if (range)\n return;\n var data = this.getParentFoldRangeData(row, true);\n range = data.range || data.firstRange;\n if (range) {\n row = range.start.row;\n var fold = this.getFoldAt(row, this.getLine(row).length, 1);\n if (fold) {\n this.removeFold(fold);\n }\n else {\n this.addFold(\"...\", range);\n }\n }\n };\n this.updateFoldWidgets = function (delta) {\n var firstRow = delta.start.row;\n var len = delta.end.row - firstRow;\n if (len === 0) {\n this.foldWidgets[firstRow] = null;\n }\n else if (delta.action == 'remove') {\n this.foldWidgets.splice(firstRow, len + 1, null);\n }\n else {\n var args = Array(len + 1);\n args.unshift(firstRow, 1);\n this.foldWidgets.splice.apply(this.foldWidgets, args);\n }\n };\n this.tokenizerUpdateFoldWidgets = function (e) {\n var rows = e.data;\n if (rows.first != rows.last) {\n if (this.foldWidgets.length > rows.first)\n this.foldWidgets.splice(rows.first, this.foldWidgets.length);\n }\n };\n}\nexports.Folding = Folding;\n\n});\n\nace.define(\"ace/edit_session/bracket_match\",[\"require\",\"exports\",\"module\",\"ace/token_iterator\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar TokenIterator = require(\"../token_iterator\").TokenIterator;\nvar Range = require(\"../range\").Range;\nfunction BracketMatch() {\n this.findMatchingBracket = function (position, chr) {\n if (position.column == 0)\n return null;\n var charBeforeCursor = chr || this.getLine(position.row).charAt(position.column - 1);\n if (charBeforeCursor == \"\")\n return null;\n var match = charBeforeCursor.match(/([\\(\\[\\{])|([\\)\\]\\}])/);\n if (!match)\n return null;\n if (match[1])\n return this.$findClosingBracket(match[1], position);\n else\n return this.$findOpeningBracket(match[2], position);\n };\n this.getBracketRange = function (pos) {\n var line = this.getLine(pos.row);\n var before = true, range;\n var chr = line.charAt(pos.column - 1);\n var match = chr && chr.match(/([\\(\\[\\{])|([\\)\\]\\}])/);\n if (!match) {\n chr = line.charAt(pos.column);\n pos = { row: pos.row, column: pos.column + 1 };\n match = chr && chr.match(/([\\(\\[\\{])|([\\)\\]\\}])/);\n before = false;\n }\n if (!match)\n return null;\n if (match[1]) {\n var bracketPos = this.$findClosingBracket(match[1], pos);\n if (!bracketPos)\n return null;\n range = Range.fromPoints(pos, bracketPos);\n if (!before) {\n range.end.column++;\n range.start.column--;\n }\n range.cursor = range.end;\n }\n else {\n var bracketPos = this.$findOpeningBracket(match[2], pos);\n if (!bracketPos)\n return null;\n range = Range.fromPoints(bracketPos, pos);\n if (!before) {\n range.start.column++;\n range.end.column--;\n }\n range.cursor = range.start;\n }\n return range;\n };\n this.getMatchingBracketRanges = function (pos, isBackwards) {\n var line = this.getLine(pos.row);\n var bracketsRegExp = /([\\(\\[\\{])|([\\)\\]\\}])/;\n var chr = !isBackwards && line.charAt(pos.column - 1);\n var match = chr && chr.match(bracketsRegExp);\n if (!match) {\n chr = (isBackwards === undefined || isBackwards) && line.charAt(pos.column);\n pos = {\n row: pos.row,\n column: pos.column + 1\n };\n match = chr && chr.match(bracketsRegExp);\n }\n if (!match)\n return null;\n var startRange = new Range(pos.row, pos.column - 1, pos.row, pos.column);\n var bracketPos = match[1] ? this.$findClosingBracket(match[1], pos)\n : this.$findOpeningBracket(match[2], pos);\n if (!bracketPos)\n return [startRange];\n var endRange = new Range(bracketPos.row, bracketPos.column, bracketPos.row, bracketPos.column + 1);\n return [startRange, endRange];\n };\n this.$brackets = {\n \")\": \"(\",\n \"(\": \")\",\n \"]\": \"[\",\n \"[\": \"]\",\n \"{\": \"}\",\n \"}\": \"{\",\n \"<\": \">\",\n \">\": \"<\"\n };\n this.$findOpeningBracket = function (bracket, position, typeRe) {\n var openBracket = this.$brackets[bracket];\n var depth = 1;\n var iterator = new TokenIterator(this, position.row, position.column);\n var token = iterator.getCurrentToken();\n if (!token)\n token = iterator.stepForward();\n if (!token)\n return;\n if (!typeRe) {\n typeRe = new RegExp(\"(\\\\.?\" +\n token.type.replace(\".\", \"\\\\.\").replace(\"rparen\", \".paren\")\n .replace(/\\b(?:end)\\b/, \"(?:start|begin|end)\")\n .replace(/-close\\b/, \"-(close|open)\")\n + \")+\");\n }\n var valueIndex = position.column - iterator.getCurrentTokenColumn() - 2;\n var value = token.value;\n while (true) {\n while (valueIndex >= 0) {\n var chr = value.charAt(valueIndex);\n if (chr == openBracket) {\n depth -= 1;\n if (depth == 0) {\n return { row: iterator.getCurrentTokenRow(),\n column: valueIndex + iterator.getCurrentTokenColumn() };\n }\n }\n else if (chr == bracket) {\n depth += 1;\n }\n valueIndex -= 1;\n }\n do {\n token = iterator.stepBackward();\n } while (token && !typeRe.test(token.type));\n if (token == null)\n break;\n value = token.value;\n valueIndex = value.length - 1;\n }\n return null;\n };\n this.$findClosingBracket = function (bracket, position, typeRe) {\n var closingBracket = this.$brackets[bracket];\n var depth = 1;\n var iterator = new TokenIterator(this, position.row, position.column);\n var token = iterator.getCurrentToken();\n if (!token)\n token = iterator.stepForward();\n if (!token)\n return;\n if (!typeRe) {\n typeRe = new RegExp(\"(\\\\.?\" +\n token.type.replace(\".\", \"\\\\.\").replace(\"lparen\", \".paren\")\n .replace(/\\b(?:start|begin)\\b/, \"(?:start|begin|end)\")\n .replace(/-open\\b/, \"-(close|open)\")\n + \")+\");\n }\n var valueIndex = position.column - iterator.getCurrentTokenColumn();\n while (true) {\n var value = token.value;\n var valueLength = value.length;\n while (valueIndex < valueLength) {\n var chr = value.charAt(valueIndex);\n if (chr == closingBracket) {\n depth -= 1;\n if (depth == 0) {\n return { row: iterator.getCurrentTokenRow(),\n column: valueIndex + iterator.getCurrentTokenColumn() };\n }\n }\n else if (chr == bracket) {\n depth += 1;\n }\n valueIndex += 1;\n }\n do {\n token = iterator.stepForward();\n } while (token && !typeRe.test(token.type));\n if (token == null)\n break;\n valueIndex = 0;\n }\n return null;\n };\n this.getMatchingTags = function (pos) {\n var iterator = new TokenIterator(this, pos.row, pos.column);\n var token = this.$findTagName(iterator);\n if (!token)\n return;\n var prevToken = iterator.stepBackward();\n if (prevToken.value === '<') {\n return this.$findClosingTag(iterator, token);\n }\n else {\n return this.$findOpeningTag(iterator, token);\n }\n };\n this.$findTagName = function (iterator) {\n var token = iterator.getCurrentToken();\n var found = false;\n var backward = false;\n if (token && token.type.indexOf('tag-name') === -1) {\n do {\n if (backward)\n token = iterator.stepBackward();\n else\n token = iterator.stepForward();\n if (token) {\n if (token.value === \"/>\") {\n backward = true;\n }\n else if (token.type.indexOf('tag-name') !== -1) {\n found = true;\n }\n }\n } while (token && !found);\n }\n return token;\n };\n this.$findClosingTag = function (iterator, token) {\n var prevToken;\n var currentTag = token.value;\n var tag = token.value;\n var depth = 0;\n var openTagStart = new Range(iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn(), iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() + 1);\n token = iterator.stepForward();\n var openTagName = new Range(iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn(), iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() + token.value.length);\n var foundOpenTagEnd = false;\n do {\n prevToken = token;\n token = iterator.stepForward();\n if (token) {\n if (token.value === '>' && !foundOpenTagEnd) {\n var openTagEnd = new Range(iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn(), iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() + 1); //Range for `>`\n foundOpenTagEnd = true;\n }\n if (token.type.indexOf('tag-name') !== -1) {\n currentTag = token.value;\n if (tag === currentTag) {\n if (prevToken.value === '<') {\n depth++;\n }\n else if (prevToken.value === '') {\n var closeTagEnd = new Range(iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn(), iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() + 1); //Range for >\n }\n else {\n return;\n }\n }\n }\n }\n }\n else if (tag === currentTag && token.value === '/>') { // self-closing tag\n depth--;\n if (depth < 0) { //found self-closing tag end\n var closeTagStart = new Range(iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn(), iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() + 2);\n var closeTagName = closeTagStart;\n var closeTagEnd = closeTagName;\n var openTagEnd = new Range(openTagName.end.row, openTagName.end.column, openTagName.end.row, openTagName.end.column + 1);\n }\n }\n }\n } while (token && depth >= 0);\n if (openTagStart && openTagEnd && closeTagStart && closeTagEnd && openTagName && closeTagName) {\n return {\n openTag: new Range(openTagStart.start.row, openTagStart.start.column, openTagEnd.end.row, openTagEnd.end.column),\n closeTag: new Range(closeTagStart.start.row, closeTagStart.start.column, closeTagEnd.end.row, closeTagEnd.end.column),\n openTagName: openTagName,\n closeTagName: closeTagName\n };\n }\n };\n this.$findOpeningTag = function (iterator, token) {\n var prevToken = iterator.getCurrentToken();\n var tag = token.value;\n var depth = 0;\n var startRow = iterator.getCurrentTokenRow();\n var startColumn = iterator.getCurrentTokenColumn();\n var endColumn = startColumn + 2;\n var closeTagStart = new Range(startRow, startColumn, startRow, endColumn); //Range for \")\n return;\n var closeTagEnd = new Range(iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn(), iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() + 1); //Range for >\n iterator.stepBackward();\n iterator.stepBackward();\n do {\n token = prevToken;\n startRow = iterator.getCurrentTokenRow();\n startColumn = iterator.getCurrentTokenColumn();\n endColumn = startColumn + token.value.length;\n prevToken = iterator.stepBackward();\n if (token) {\n if (token.type.indexOf('tag-name') !== -1) {\n if (tag === token.value) {\n if (prevToken.value === '<') {\n depth++;\n if (depth > 0) { //found opening tag\n var openTagName = new Range(startRow, startColumn, startRow, endColumn);\n var openTagStart = new Range(iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn(), iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() + 1); //Range for <\n do {\n token = iterator.stepForward();\n } while (token && token.value !== '>');\n var openTagEnd = new Range(iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn(), iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() + 1); //Range for >\n }\n }\n else if (prevToken.value === '') { // self-closing tag\n var stepCount = 0;\n var tmpToken = prevToken;\n while (tmpToken) {\n if (tmpToken.type.indexOf('tag-name') !== -1 && tmpToken.value === tag) {\n depth--;\n break;\n }\n else if (tmpToken.value === '<') {\n break;\n }\n tmpToken = iterator.stepBackward();\n stepCount++;\n }\n for (var i = 0; i < stepCount; i++) {\n iterator.stepForward();\n }\n }\n }\n } while (prevToken && depth <= 0);\n if (openTagStart && openTagEnd && closeTagStart && closeTagEnd && openTagName && closeTagName) {\n return {\n openTag: new Range(openTagStart.start.row, openTagStart.start.column, openTagEnd.end.row, openTagEnd.end.column),\n closeTag: new Range(closeTagStart.start.row, closeTagStart.start.column, closeTagEnd.end.row, closeTagEnd.end.column),\n openTagName: openTagName,\n closeTagName: closeTagName\n };\n }\n };\n}\nexports.BracketMatch = BracketMatch;\n\n});\n\nace.define(\"ace/edit_session\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/bidihandler\",\"ace/config\",\"ace/lib/event_emitter\",\"ace/selection\",\"ace/mode/text\",\"ace/range\",\"ace/document\",\"ace/background_tokenizer\",\"ace/search_highlight\",\"ace/undomanager\",\"ace/edit_session/folding\",\"ace/edit_session/bracket_match\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"./lib/oop\");\nvar lang = require(\"./lib/lang\");\nvar BidiHandler = require(\"./bidihandler\").BidiHandler;\nvar config = require(\"./config\");\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar Selection = require(\"./selection\").Selection;\nvar TextMode = require(\"./mode/text\").Mode;\nvar Range = require(\"./range\").Range;\nvar Document = require(\"./document\").Document;\nvar BackgroundTokenizer = require(\"./background_tokenizer\").BackgroundTokenizer;\nvar SearchHighlight = require(\"./search_highlight\").SearchHighlight;\nvar UndoManager = require(\"./undomanager\").UndoManager;\nvar EditSession = /** @class */ (function () {\n function EditSession(text, mode) {\n this.$breakpoints = [];\n this.$decorations = [];\n this.$frontMarkers = {};\n this.$backMarkers = {};\n this.$markerId = 1;\n this.$undoSelect = true;\n this.$foldData = [];\n this.id = \"session\" + (++EditSession.$uid);\n this.$foldData.toString = function () {\n return this.join(\"\\n\");\n };\n this.bgTokenizer = new BackgroundTokenizer((new TextMode()).getTokenizer(), this);\n var _self = this;\n this.bgTokenizer.on(\"update\", function (e) {\n _self._signal(\"tokenizerUpdate\", e);\n });\n this.on(\"changeFold\", this.onChangeFold.bind(this));\n this.$onChange = this.onChange.bind(this);\n if (typeof text != \"object\" || !text.getLine)\n text = new Document(text);\n this.setDocument(text);\n this.selection = new Selection(this);\n this.$bidiHandler = new BidiHandler(this);\n config.resetOptions(this);\n this.setMode(mode);\n config._signal(\"session\", this);\n this.destroyed = false;\n }\n EditSession.prototype.setDocument = function (doc) {\n if (this.doc)\n this.doc.off(\"change\", this.$onChange);\n this.doc = doc;\n doc.on(\"change\", this.$onChange, true);\n this.bgTokenizer.setDocument(this.getDocument());\n this.resetCaches();\n };\n EditSession.prototype.getDocument = function () {\n return this.doc;\n };\n EditSession.prototype.$resetRowCache = function (docRow) {\n if (!docRow) {\n this.$docRowCache = [];\n this.$screenRowCache = [];\n return;\n }\n var l = this.$docRowCache.length;\n var i = this.$getRowCacheIndex(this.$docRowCache, docRow) + 1;\n if (l > i) {\n this.$docRowCache.splice(i, l);\n this.$screenRowCache.splice(i, l);\n }\n };\n EditSession.prototype.$getRowCacheIndex = function (cacheArray, val) {\n var low = 0;\n var hi = cacheArray.length - 1;\n while (low <= hi) {\n var mid = (low + hi) >> 1;\n var c = cacheArray[mid];\n if (val > c)\n low = mid + 1;\n else if (val < c)\n hi = mid - 1;\n else\n return mid;\n }\n return low - 1;\n };\n EditSession.prototype.resetCaches = function () {\n this.$modified = true;\n this.$wrapData = [];\n this.$rowLengthCache = [];\n this.$resetRowCache(0);\n if (!this.destroyed)\n this.bgTokenizer.start(0);\n };\n EditSession.prototype.onChangeFold = function (e) {\n var fold = e.data;\n this.$resetRowCache(fold.start.row);\n };\n EditSession.prototype.onChange = function (delta) {\n this.$modified = true;\n this.$bidiHandler.onChange(delta);\n this.$resetRowCache(delta.start.row);\n var removedFolds = this.$updateInternalDataOnChange(delta);\n if (!this.$fromUndo && this.$undoManager) {\n if (removedFolds && removedFolds.length) {\n this.$undoManager.add({\n action: \"removeFolds\",\n folds: removedFolds\n }, this.mergeUndoDeltas);\n this.mergeUndoDeltas = true;\n }\n this.$undoManager.add(delta, this.mergeUndoDeltas);\n this.mergeUndoDeltas = true;\n this.$informUndoManager.schedule();\n }\n this.bgTokenizer.$updateOnChange(delta);\n this._signal(\"change\", delta);\n };\n EditSession.prototype.setValue = function (text) {\n this.doc.setValue(text);\n this.selection.moveTo(0, 0);\n this.$resetRowCache(0);\n this.setUndoManager(this.$undoManager);\n this.getUndoManager().reset();\n };\n EditSession.fromJSON = function (session) {\n session = JSON.parse(session);\n var undoManager = new UndoManager();\n undoManager.$undoStack = session.history.undo;\n undoManager.$redoStack = session.history.redo;\n undoManager.mark = session.history.mark;\n undoManager.$rev = session.history.rev;\n var editSession = new EditSession(session.value);\n session.folds.forEach(function (fold) {\n editSession.addFold(\"...\", Range.fromPoints(fold.start, fold.end));\n });\n editSession.setAnnotations(session.annotations);\n editSession.setBreakpoints(session.breakpoints);\n editSession.setMode(session.mode);\n editSession.setScrollLeft(session.scrollLeft);\n editSession.setScrollTop(session.scrollTop);\n editSession.setUndoManager(undoManager);\n editSession.selection.fromJSON(session.selection);\n return editSession;\n };\n EditSession.prototype.toJSON = function () {\n return {\n annotations: this.$annotations,\n breakpoints: this.$breakpoints,\n folds: this.getAllFolds().map(function (fold) {\n return fold.range;\n }),\n history: this.getUndoManager(),\n mode: this.$mode.$id,\n scrollLeft: this.$scrollLeft,\n scrollTop: this.$scrollTop,\n selection: this.selection.toJSON(),\n value: this.doc.getValue()\n };\n };\n EditSession.prototype.toString = function () {\n return this.doc.getValue();\n };\n EditSession.prototype.getSelection = function () {\n return this.selection;\n };\n EditSession.prototype.getState = function (row) {\n return this.bgTokenizer.getState(row);\n };\n EditSession.prototype.getTokens = function (row) {\n return this.bgTokenizer.getTokens(row);\n };\n EditSession.prototype.getTokenAt = function (row, column) {\n var tokens = this.bgTokenizer.getTokens(row);\n var token, c = 0;\n if (column == null) {\n var i = tokens.length - 1;\n c = this.getLine(row).length;\n }\n else {\n for (var i = 0; i < tokens.length; i++) {\n c += tokens[i].value.length;\n if (c >= column)\n break;\n }\n }\n token = tokens[i];\n if (!token)\n return null;\n token.index = i;\n token.start = c - token.value.length;\n return token;\n };\n EditSession.prototype.setUndoManager = function (undoManager) {\n this.$undoManager = undoManager;\n if (this.$informUndoManager)\n this.$informUndoManager.cancel();\n if (undoManager) {\n var self = this;\n undoManager.addSession(this);\n this.$syncInformUndoManager = function () {\n self.$informUndoManager.cancel();\n self.mergeUndoDeltas = false;\n };\n this.$informUndoManager = lang.delayedCall(this.$syncInformUndoManager);\n }\n else {\n this.$syncInformUndoManager = function () { };\n }\n };\n EditSession.prototype.markUndoGroup = function () {\n if (this.$syncInformUndoManager)\n this.$syncInformUndoManager();\n };\n EditSession.prototype.getUndoManager = function () {\n return this.$undoManager || this.$defaultUndoManager;\n };\n EditSession.prototype.getTabString = function () {\n if (this.getUseSoftTabs()) {\n return lang.stringRepeat(\" \", this.getTabSize());\n }\n else {\n return \"\\t\";\n }\n };\n EditSession.prototype.setUseSoftTabs = function (val) {\n this.setOption(\"useSoftTabs\", val);\n };\n EditSession.prototype.getUseSoftTabs = function () {\n return this.$useSoftTabs && !this.$mode.$indentWithTabs;\n };\n EditSession.prototype.setTabSize = function (tabSize) {\n this.setOption(\"tabSize\", tabSize);\n };\n EditSession.prototype.getTabSize = function () {\n return this.$tabSize;\n };\n EditSession.prototype.isTabStop = function (position) {\n return this.$useSoftTabs && (position.column % this.$tabSize === 0);\n };\n EditSession.prototype.setNavigateWithinSoftTabs = function (navigateWithinSoftTabs) {\n this.setOption(\"navigateWithinSoftTabs\", navigateWithinSoftTabs);\n };\n EditSession.prototype.getNavigateWithinSoftTabs = function () {\n return this.$navigateWithinSoftTabs;\n };\n EditSession.prototype.setOverwrite = function (overwrite) {\n this.setOption(\"overwrite\", overwrite);\n };\n EditSession.prototype.getOverwrite = function () {\n return this.$overwrite;\n };\n EditSession.prototype.toggleOverwrite = function () {\n this.setOverwrite(!this.$overwrite);\n };\n EditSession.prototype.addGutterDecoration = function (row, className) {\n if (!this.$decorations[row])\n this.$decorations[row] = \"\";\n this.$decorations[row] += \" \" + className;\n this._signal(\"changeBreakpoint\", {});\n };\n EditSession.prototype.removeGutterDecoration = function (row, className) {\n this.$decorations[row] = (this.$decorations[row] || \"\").replace(\" \" + className, \"\");\n this._signal(\"changeBreakpoint\", {});\n };\n EditSession.prototype.getBreakpoints = function () {\n return this.$breakpoints;\n };\n EditSession.prototype.setBreakpoints = function (rows) {\n this.$breakpoints = [];\n for (var i = 0; i < rows.length; i++) {\n this.$breakpoints[rows[i]] = \"ace_breakpoint\";\n }\n this._signal(\"changeBreakpoint\", {});\n };\n EditSession.prototype.clearBreakpoints = function () {\n this.$breakpoints = [];\n this._signal(\"changeBreakpoint\", {});\n };\n EditSession.prototype.setBreakpoint = function (row, className) {\n if (className === undefined)\n className = \"ace_breakpoint\";\n if (className)\n this.$breakpoints[row] = className;\n else\n delete this.$breakpoints[row];\n this._signal(\"changeBreakpoint\", {});\n };\n EditSession.prototype.clearBreakpoint = function (row) {\n delete this.$breakpoints[row];\n this._signal(\"changeBreakpoint\", {});\n };\n EditSession.prototype.addMarker = function (range, clazz, type, inFront) {\n var id = this.$markerId++;\n var marker = {\n range: range,\n type: type || \"line\",\n renderer: typeof type == \"function\" ? type : null,\n clazz: clazz,\n inFront: !!inFront,\n id: id\n };\n if (inFront) {\n this.$frontMarkers[id] = marker;\n this._signal(\"changeFrontMarker\");\n }\n else {\n this.$backMarkers[id] = marker;\n this._signal(\"changeBackMarker\");\n }\n return id;\n };\n EditSession.prototype.addDynamicMarker = function (marker, inFront) {\n if (!marker.update)\n return;\n var id = this.$markerId++;\n marker.id = id;\n marker.inFront = !!inFront;\n if (inFront) {\n this.$frontMarkers[id] = marker;\n this._signal(\"changeFrontMarker\");\n }\n else {\n this.$backMarkers[id] = marker;\n this._signal(\"changeBackMarker\");\n }\n return marker;\n };\n EditSession.prototype.removeMarker = function (markerId) {\n var marker = this.$frontMarkers[markerId] || this.$backMarkers[markerId];\n if (!marker)\n return;\n var markers = marker.inFront ? this.$frontMarkers : this.$backMarkers;\n delete (markers[markerId]);\n this._signal(marker.inFront ? \"changeFrontMarker\" : \"changeBackMarker\");\n };\n EditSession.prototype.getMarkers = function (inFront) {\n return inFront ? this.$frontMarkers : this.$backMarkers;\n };\n EditSession.prototype.highlight = function (re) {\n if (!this.$searchHighlight) {\n var highlight = new SearchHighlight(null, \"ace_selected-word\", \"text\");\n this.$searchHighlight = this.addDynamicMarker(highlight);\n }\n this.$searchHighlight.setRegexp(re);\n };\n EditSession.prototype.highlightLines = function (startRow, endRow, clazz, inFront) {\n if (typeof endRow != \"number\") {\n clazz = endRow;\n endRow = startRow;\n }\n if (!clazz)\n clazz = \"ace_step\";\n var range = new Range(startRow, 0, endRow, Infinity);\n range.id = this.addMarker(range, clazz, \"fullLine\", inFront);\n return range;\n };\n EditSession.prototype.setAnnotations = function (annotations) {\n this.$annotations = annotations;\n this._signal(\"changeAnnotation\", {});\n };\n EditSession.prototype.getAnnotations = function () {\n return this.$annotations || [];\n };\n EditSession.prototype.clearAnnotations = function () {\n this.setAnnotations([]);\n };\n EditSession.prototype.$detectNewLine = function (text) {\n var match = text.match(/^.*?(\\r?\\n)/m);\n if (match) {\n this.$autoNewLine = match[1];\n }\n else {\n this.$autoNewLine = \"\\n\";\n }\n };\n EditSession.prototype.getWordRange = function (row, column) {\n var line = this.getLine(row);\n var inToken = false;\n if (column > 0)\n inToken = !!line.charAt(column - 1).match(this.tokenRe);\n if (!inToken)\n inToken = !!line.charAt(column).match(this.tokenRe);\n if (inToken)\n var re = this.tokenRe;\n else if (/^\\s+$/.test(line.slice(column - 1, column + 1)))\n var re = /\\s/;\n else\n var re = this.nonTokenRe;\n var start = column;\n if (start > 0) {\n do {\n start--;\n } while (start >= 0 && line.charAt(start).match(re));\n start++;\n }\n var end = column;\n while (end < line.length && line.charAt(end).match(re)) {\n end++;\n }\n return new Range(row, start, row, end);\n };\n EditSession.prototype.getAWordRange = function (row, column) {\n var wordRange = this.getWordRange(row, column);\n var line = this.getLine(wordRange.end.row);\n while (line.charAt(wordRange.end.column).match(/[ \\t]/)) {\n wordRange.end.column += 1;\n }\n return wordRange;\n };\n EditSession.prototype.setNewLineMode = function (newLineMode) {\n this.doc.setNewLineMode(newLineMode);\n };\n EditSession.prototype.getNewLineMode = function () {\n return this.doc.getNewLineMode();\n };\n EditSession.prototype.setUseWorker = function (useWorker) { this.setOption(\"useWorker\", useWorker); };\n EditSession.prototype.getUseWorker = function () { return this.$useWorker; };\n EditSession.prototype.onReloadTokenizer = function (e) {\n var rows = e.data;\n this.bgTokenizer.start(rows.first);\n this._signal(\"tokenizerUpdate\", e);\n };\n EditSession.prototype.setMode = function (mode, cb) {\n if (mode && typeof mode === \"object\") {\n if (mode.getTokenizer)\n return this.$onChangeMode(mode);\n var options = mode;\n var path = options.path;\n }\n else {\n path = mode || \"ace/mode/text\";\n }\n if (!this.$modes[\"ace/mode/text\"])\n this.$modes[\"ace/mode/text\"] = new TextMode();\n if (this.$modes[path] && !options) {\n this.$onChangeMode(this.$modes[path]);\n cb && cb();\n return;\n }\n this.$modeId = path;\n config.loadModule([\"mode\", path], function (m) {\n if (this.$modeId !== path)\n return cb && cb();\n if (this.$modes[path] && !options) {\n this.$onChangeMode(this.$modes[path]);\n }\n else if (m && m.Mode) {\n m = new m.Mode(options);\n if (!options) {\n this.$modes[path] = m;\n m.$id = path;\n }\n this.$onChangeMode(m);\n }\n cb && cb();\n }.bind(this));\n if (!this.$mode)\n this.$onChangeMode(this.$modes[\"ace/mode/text\"], true);\n };\n EditSession.prototype.$onChangeMode = function (mode, $isPlaceholder) {\n if (!$isPlaceholder)\n this.$modeId = mode.$id;\n if (this.$mode === mode)\n return;\n var oldMode = this.$mode;\n this.$mode = mode;\n this.$stopWorker();\n if (this.$useWorker)\n this.$startWorker();\n var tokenizer = mode.getTokenizer();\n if (tokenizer.on !== undefined) {\n var onReloadTokenizer = this.onReloadTokenizer.bind(this);\n tokenizer.on(\"update\", onReloadTokenizer);\n }\n this.bgTokenizer.setTokenizer(tokenizer);\n this.bgTokenizer.setDocument(this.getDocument());\n this.tokenRe = mode.tokenRe;\n this.nonTokenRe = mode.nonTokenRe;\n if (!$isPlaceholder) {\n if (mode.attachToSession)\n mode.attachToSession(this);\n this.$options.wrapMethod.set.call(this, this.$wrapMethod);\n this.$setFolding(mode.foldingRules);\n this.bgTokenizer.start(0);\n this._emit(\"changeMode\", { oldMode: oldMode, mode: mode });\n }\n };\n EditSession.prototype.$stopWorker = function () {\n if (this.$worker) {\n this.$worker.terminate();\n this.$worker = null;\n }\n };\n EditSession.prototype.$startWorker = function () {\n try {\n this.$worker = this.$mode.createWorker(this);\n }\n catch (e) {\n config.warn(\"Could not load worker\", e);\n this.$worker = null;\n }\n };\n EditSession.prototype.getMode = function () {\n return this.$mode;\n };\n EditSession.prototype.setScrollTop = function (scrollTop) {\n if (this.$scrollTop === scrollTop || isNaN(scrollTop))\n return;\n this.$scrollTop = scrollTop;\n this._signal(\"changeScrollTop\", scrollTop);\n };\n EditSession.prototype.getScrollTop = function () {\n return this.$scrollTop;\n };\n EditSession.prototype.setScrollLeft = function (scrollLeft) {\n if (this.$scrollLeft === scrollLeft || isNaN(scrollLeft))\n return;\n this.$scrollLeft = scrollLeft;\n this._signal(\"changeScrollLeft\", scrollLeft);\n };\n EditSession.prototype.getScrollLeft = function () {\n return this.$scrollLeft;\n };\n EditSession.prototype.getScreenWidth = function () {\n this.$computeWidth();\n if (this.lineWidgets)\n return Math.max(this.getLineWidgetMaxWidth(), this.screenWidth);\n return this.screenWidth;\n };\n EditSession.prototype.getLineWidgetMaxWidth = function () {\n if (this.lineWidgetsWidth != null)\n return this.lineWidgetsWidth;\n var width = 0;\n this.lineWidgets.forEach(function (w) {\n if (w && w.screenWidth > width)\n width = w.screenWidth;\n });\n return this.lineWidgetWidth = width;\n };\n EditSession.prototype.$computeWidth = function (force) {\n if (this.$modified || force) {\n this.$modified = false;\n if (this.$useWrapMode)\n return this.screenWidth = this.$wrapLimit;\n var lines = this.doc.getAllLines();\n var cache = this.$rowLengthCache;\n var longestScreenLine = 0;\n var foldIndex = 0;\n var foldLine = this.$foldData[foldIndex];\n var foldStart = foldLine ? foldLine.start.row : Infinity;\n var len = lines.length;\n for (var i = 0; i < len; i++) {\n if (i > foldStart) {\n i = foldLine.end.row + 1;\n if (i >= len)\n break;\n foldLine = this.$foldData[foldIndex++];\n foldStart = foldLine ? foldLine.start.row : Infinity;\n }\n if (cache[i] == null)\n cache[i] = this.$getStringScreenWidth(lines[i])[0];\n if (cache[i] > longestScreenLine)\n longestScreenLine = cache[i];\n }\n this.screenWidth = longestScreenLine;\n }\n };\n EditSession.prototype.getLine = function (row) {\n return this.doc.getLine(row);\n };\n EditSession.prototype.getLines = function (firstRow, lastRow) {\n return this.doc.getLines(firstRow, lastRow);\n };\n EditSession.prototype.getLength = function () {\n return this.doc.getLength();\n };\n EditSession.prototype.getTextRange = function (range) {\n return this.doc.getTextRange(range || this.selection.getRange());\n };\n EditSession.prototype.insert = function (position, text) {\n return this.doc.insert(position, text);\n };\n EditSession.prototype.remove = function (range) {\n return this.doc.remove(range);\n };\n EditSession.prototype.removeFullLines = function (firstRow, lastRow) {\n return this.doc.removeFullLines(firstRow, lastRow);\n };\n EditSession.prototype.undoChanges = function (deltas, dontSelect) {\n if (!deltas.length)\n return;\n this.$fromUndo = true;\n for (var i = deltas.length - 1; i != -1; i--) {\n var delta = deltas[i];\n if (delta.action == \"insert\" || delta.action == \"remove\") {\n this.doc.revertDelta(delta);\n }\n else if (delta.folds) {\n this.addFolds(delta.folds);\n }\n }\n if (!dontSelect && this.$undoSelect) {\n if (deltas.selectionBefore)\n this.selection.fromJSON(deltas.selectionBefore);\n else\n this.selection.setRange(this.$getUndoSelection(deltas, true));\n }\n this.$fromUndo = false;\n };\n EditSession.prototype.redoChanges = function (deltas, dontSelect) {\n if (!deltas.length)\n return;\n this.$fromUndo = true;\n for (var i = 0; i < deltas.length; i++) {\n var delta = deltas[i];\n if (delta.action == \"insert\" || delta.action == \"remove\") {\n this.doc.$safeApplyDelta(delta);\n }\n }\n if (!dontSelect && this.$undoSelect) {\n if (deltas.selectionAfter)\n this.selection.fromJSON(deltas.selectionAfter);\n else\n this.selection.setRange(this.$getUndoSelection(deltas, false));\n }\n this.$fromUndo = false;\n };\n EditSession.prototype.setUndoSelect = function (enable) {\n this.$undoSelect = enable;\n };\n EditSession.prototype.$getUndoSelection = function (deltas, isUndo) {\n function isInsert(delta) {\n return isUndo ? delta.action !== \"insert\" : delta.action === \"insert\";\n }\n var range, point;\n for (var i = 0; i < deltas.length; i++) {\n var delta = deltas[i];\n if (!delta.start)\n continue; // skip folds\n if (!range) {\n if (isInsert(delta)) {\n range = Range.fromPoints(delta.start, delta.end);\n }\n else {\n range = Range.fromPoints(delta.start, delta.start);\n }\n continue;\n }\n if (isInsert(delta)) {\n point = delta.start;\n if (range.compare(point.row, point.column) == -1) {\n range.setStart(point);\n }\n point = delta.end;\n if (range.compare(point.row, point.column) == 1) {\n range.setEnd(point);\n }\n }\n else {\n point = delta.start;\n if (range.compare(point.row, point.column) == -1) {\n range = Range.fromPoints(delta.start, delta.start);\n }\n }\n }\n return range;\n };\n EditSession.prototype.replace = function (range, text) {\n return this.doc.replace(range, text);\n };\n EditSession.prototype.moveText = function (fromRange, toPosition, copy) {\n var text = this.getTextRange(fromRange);\n var folds = this.getFoldsInRange(fromRange);\n var toRange = Range.fromPoints(toPosition, toPosition);\n if (!copy) {\n this.remove(fromRange);\n var rowDiff = fromRange.start.row - fromRange.end.row;\n var collDiff = rowDiff ? -fromRange.end.column : fromRange.start.column - fromRange.end.column;\n if (collDiff) {\n if (toRange.start.row == fromRange.end.row && toRange.start.column > fromRange.end.column)\n toRange.start.column += collDiff;\n if (toRange.end.row == fromRange.end.row && toRange.end.column > fromRange.end.column)\n toRange.end.column += collDiff;\n }\n if (rowDiff && toRange.start.row >= fromRange.end.row) {\n toRange.start.row += rowDiff;\n toRange.end.row += rowDiff;\n }\n }\n toRange.end = this.insert(toRange.start, text);\n if (folds.length) {\n var oldStart = fromRange.start;\n var newStart = toRange.start;\n var rowDiff = newStart.row - oldStart.row;\n var collDiff = newStart.column - oldStart.column;\n this.addFolds(folds.map(function (x) {\n x = x.clone();\n if (x.start.row == oldStart.row)\n x.start.column += collDiff;\n if (x.end.row == oldStart.row)\n x.end.column += collDiff;\n x.start.row += rowDiff;\n x.end.row += rowDiff;\n return x;\n }));\n }\n return toRange;\n };\n EditSession.prototype.indentRows = function (startRow, endRow, indentString) {\n indentString = indentString.replace(/\\t/g, this.getTabString());\n for (var row = startRow; row <= endRow; row++)\n this.doc.insertInLine({ row: row, column: 0 }, indentString);\n };\n EditSession.prototype.outdentRows = function (range) {\n var rowRange = range.collapseRows();\n var deleteRange = new Range(0, 0, 0, 0);\n var size = this.getTabSize();\n for (var i = rowRange.start.row; i <= rowRange.end.row; ++i) {\n var line = this.getLine(i);\n deleteRange.start.row = i;\n deleteRange.end.row = i;\n for (var j = 0; j < size; ++j)\n if (line.charAt(j) != ' ')\n break;\n if (j < size && line.charAt(j) == '\\t') {\n deleteRange.start.column = j;\n deleteRange.end.column = j + 1;\n }\n else {\n deleteRange.start.column = 0;\n deleteRange.end.column = j;\n }\n this.remove(deleteRange);\n }\n };\n EditSession.prototype.$moveLines = function (firstRow, lastRow, dir) {\n firstRow = this.getRowFoldStart(firstRow);\n lastRow = this.getRowFoldEnd(lastRow);\n if (dir < 0) {\n var row = this.getRowFoldStart(firstRow + dir);\n if (row < 0)\n return 0;\n var diff = row - firstRow;\n }\n else if (dir > 0) {\n var row = this.getRowFoldEnd(lastRow + dir);\n if (row > this.doc.getLength() - 1)\n return 0;\n var diff = row - lastRow;\n }\n else {\n firstRow = this.$clipRowToDocument(firstRow);\n lastRow = this.$clipRowToDocument(lastRow);\n var diff = lastRow - firstRow + 1;\n }\n var range = new Range(firstRow, 0, lastRow, Number.MAX_VALUE);\n var folds = this.getFoldsInRange(range).map(function (x) {\n x = x.clone();\n x.start.row += diff;\n x.end.row += diff;\n return x;\n });\n var lines = dir == 0\n ? this.doc.getLines(firstRow, lastRow)\n : this.doc.removeFullLines(firstRow, lastRow);\n this.doc.insertFullLines(firstRow + diff, lines);\n folds.length && this.addFolds(folds);\n return diff;\n };\n EditSession.prototype.moveLinesUp = function (firstRow, lastRow) {\n return this.$moveLines(firstRow, lastRow, -1);\n };\n EditSession.prototype.moveLinesDown = function (firstRow, lastRow) {\n return this.$moveLines(firstRow, lastRow, 1);\n };\n EditSession.prototype.duplicateLines = function (firstRow, lastRow) {\n return this.$moveLines(firstRow, lastRow, 0);\n };\n EditSession.prototype.$clipRowToDocument = function (row) {\n return Math.max(0, Math.min(row, this.doc.getLength() - 1));\n };\n EditSession.prototype.$clipColumnToRow = function (row, column) {\n if (column < 0)\n return 0;\n return Math.min(this.doc.getLine(row).length, column);\n };\n EditSession.prototype.$clipPositionToDocument = function (row, column) {\n column = Math.max(0, column);\n if (row < 0) {\n row = 0;\n column = 0;\n }\n else {\n var len = this.doc.getLength();\n if (row >= len) {\n row = len - 1;\n column = this.doc.getLine(len - 1).length;\n }\n else {\n column = Math.min(this.doc.getLine(row).length, column);\n }\n }\n return {\n row: row,\n column: column\n };\n };\n EditSession.prototype.$clipRangeToDocument = function (range) {\n if (range.start.row < 0) {\n range.start.row = 0;\n range.start.column = 0;\n }\n else {\n range.start.column = this.$clipColumnToRow(range.start.row, range.start.column);\n }\n var len = this.doc.getLength() - 1;\n if (range.end.row > len) {\n range.end.row = len;\n range.end.column = this.doc.getLine(len).length;\n }\n else {\n range.end.column = this.$clipColumnToRow(range.end.row, range.end.column);\n }\n return range;\n };\n EditSession.prototype.setUseWrapMode = function (useWrapMode) {\n if (useWrapMode != this.$useWrapMode) {\n this.$useWrapMode = useWrapMode;\n this.$modified = true;\n this.$resetRowCache(0);\n if (useWrapMode) {\n var len = this.getLength();\n this.$wrapData = Array(len);\n this.$updateWrapData(0, len - 1);\n }\n this._signal(\"changeWrapMode\");\n }\n };\n EditSession.prototype.getUseWrapMode = function () {\n return this.$useWrapMode;\n };\n EditSession.prototype.setWrapLimitRange = function (min, max) {\n if (this.$wrapLimitRange.min !== min || this.$wrapLimitRange.max !== max) {\n this.$wrapLimitRange = { min: min, max: max };\n this.$modified = true;\n this.$bidiHandler.markAsDirty();\n if (this.$useWrapMode)\n this._signal(\"changeWrapMode\");\n }\n };\n EditSession.prototype.adjustWrapLimit = function (desiredLimit, $printMargin) {\n var limits = this.$wrapLimitRange;\n if (limits.max < 0)\n limits = { min: $printMargin, max: $printMargin };\n var wrapLimit = this.$constrainWrapLimit(desiredLimit, limits.min, limits.max);\n if (wrapLimit != this.$wrapLimit && wrapLimit > 1) {\n this.$wrapLimit = wrapLimit;\n this.$modified = true;\n if (this.$useWrapMode) {\n this.$updateWrapData(0, this.getLength() - 1);\n this.$resetRowCache(0);\n this._signal(\"changeWrapLimit\");\n }\n return true;\n }\n return false;\n };\n EditSession.prototype.$constrainWrapLimit = function (wrapLimit, min, max) {\n if (min)\n wrapLimit = Math.max(min, wrapLimit);\n if (max)\n wrapLimit = Math.min(max, wrapLimit);\n return wrapLimit;\n };\n EditSession.prototype.getWrapLimit = function () {\n return this.$wrapLimit;\n };\n EditSession.prototype.setWrapLimit = function (limit) {\n this.setWrapLimitRange(limit, limit);\n };\n EditSession.prototype.getWrapLimitRange = function () {\n return {\n min: this.$wrapLimitRange.min,\n max: this.$wrapLimitRange.max\n };\n };\n EditSession.prototype.$updateInternalDataOnChange = function (delta) {\n var useWrapMode = this.$useWrapMode;\n var action = delta.action;\n var start = delta.start;\n var end = delta.end;\n var firstRow = start.row;\n var lastRow = end.row;\n var len = lastRow - firstRow;\n var removedFolds = null;\n this.$updating = true;\n if (len != 0) {\n if (action === \"remove\") {\n this[useWrapMode ? \"$wrapData\" : \"$rowLengthCache\"].splice(firstRow, len);\n var foldLines = this.$foldData;\n removedFolds = this.getFoldsInRange(delta);\n this.removeFolds(removedFolds);\n var foldLine = this.getFoldLine(end.row);\n var idx = 0;\n if (foldLine) {\n foldLine.addRemoveChars(end.row, end.column, start.column - end.column);\n foldLine.shiftRow(-len);\n var foldLineBefore = this.getFoldLine(firstRow);\n if (foldLineBefore && foldLineBefore !== foldLine) {\n foldLineBefore.merge(foldLine);\n foldLine = foldLineBefore;\n }\n idx = foldLines.indexOf(foldLine) + 1;\n }\n for (idx; idx < foldLines.length; idx++) {\n var foldLine = foldLines[idx];\n if (foldLine.start.row >= end.row) {\n foldLine.shiftRow(-len);\n }\n }\n lastRow = firstRow;\n }\n else {\n var args = Array(len);\n args.unshift(firstRow, 0);\n var arr = useWrapMode ? this.$wrapData : this.$rowLengthCache;\n arr.splice.apply(arr, args);\n var foldLines = this.$foldData;\n var foldLine = this.getFoldLine(firstRow);\n var idx = 0;\n if (foldLine) {\n var cmp = foldLine.range.compareInside(start.row, start.column);\n if (cmp == 0) {\n foldLine = foldLine.split(start.row, start.column);\n if (foldLine) {\n foldLine.shiftRow(len);\n foldLine.addRemoveChars(lastRow, 0, end.column - start.column);\n }\n }\n else \n if (cmp == -1) {\n foldLine.addRemoveChars(firstRow, 0, end.column - start.column);\n foldLine.shiftRow(len);\n }\n idx = foldLines.indexOf(foldLine) + 1;\n }\n for (idx; idx < foldLines.length; idx++) {\n var foldLine = foldLines[idx];\n if (foldLine.start.row >= firstRow) {\n foldLine.shiftRow(len);\n }\n }\n }\n }\n else {\n len = Math.abs(delta.start.column - delta.end.column);\n if (action === \"remove\") {\n removedFolds = this.getFoldsInRange(delta);\n this.removeFolds(removedFolds);\n len = -len;\n }\n var foldLine = this.getFoldLine(firstRow);\n if (foldLine) {\n foldLine.addRemoveChars(firstRow, start.column, len);\n }\n }\n if (useWrapMode && this.$wrapData.length != this.doc.getLength()) {\n console.error(\"doc.getLength() and $wrapData.length have to be the same!\");\n }\n this.$updating = false;\n if (useWrapMode)\n this.$updateWrapData(firstRow, lastRow);\n else\n this.$updateRowLengthCache(firstRow, lastRow);\n return removedFolds;\n };\n EditSession.prototype.$updateRowLengthCache = function (firstRow, lastRow, b) {\n this.$rowLengthCache[firstRow] = null;\n this.$rowLengthCache[lastRow] = null;\n };\n EditSession.prototype.$updateWrapData = function (firstRow, lastRow) {\n var lines = this.doc.getAllLines();\n var tabSize = this.getTabSize();\n var wrapData = this.$wrapData;\n var wrapLimit = this.$wrapLimit;\n var tokens;\n var foldLine;\n var row = firstRow;\n lastRow = Math.min(lastRow, lines.length - 1);\n while (row <= lastRow) {\n foldLine = this.getFoldLine(row, foldLine);\n if (!foldLine) {\n tokens = this.$getDisplayTokens(lines[row]);\n wrapData[row] = this.$computeWrapSplits(tokens, wrapLimit, tabSize);\n row++;\n }\n else {\n tokens = [];\n foldLine.walk(function (placeholder, row, column, lastColumn) {\n var walkTokens;\n if (placeholder != null) {\n walkTokens = this.$getDisplayTokens(placeholder, tokens.length);\n walkTokens[0] = PLACEHOLDER_START;\n for (var i = 1; i < walkTokens.length; i++) {\n walkTokens[i] = PLACEHOLDER_BODY;\n }\n }\n else {\n walkTokens = this.$getDisplayTokens(lines[row].substring(lastColumn, column), tokens.length);\n }\n tokens = tokens.concat(walkTokens);\n }.bind(this), foldLine.end.row, lines[foldLine.end.row].length + 1);\n wrapData[foldLine.start.row] = this.$computeWrapSplits(tokens, wrapLimit, tabSize);\n row = foldLine.end.row + 1;\n }\n }\n };\n EditSession.prototype.$computeWrapSplits = function (tokens, wrapLimit, tabSize) {\n if (tokens.length == 0) {\n return [];\n }\n var splits = [];\n var displayLength = tokens.length;\n var lastSplit = 0, lastDocSplit = 0;\n var isCode = this.$wrapAsCode;\n var indentedSoftWrap = this.$indentedSoftWrap;\n var maxIndent = wrapLimit <= Math.max(2 * tabSize, 8)\n || indentedSoftWrap === false ? 0 : Math.floor(wrapLimit / 2);\n function getWrapIndent() {\n var indentation = 0;\n if (maxIndent === 0)\n return indentation;\n if (indentedSoftWrap) {\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n if (token == SPACE)\n indentation += 1;\n else if (token == TAB)\n indentation += tabSize;\n else if (token == TAB_SPACE)\n continue;\n else\n break;\n }\n }\n if (isCode && indentedSoftWrap !== false)\n indentation += tabSize;\n return Math.min(indentation, maxIndent);\n }\n function addSplit(screenPos) {\n var len = screenPos - lastSplit;\n for (var i = lastSplit; i < screenPos; i++) {\n var ch = tokens[i];\n if (ch === 12 || ch === 2)\n len -= 1;\n }\n if (!splits.length) {\n indent = getWrapIndent();\n splits.indent = indent;\n }\n lastDocSplit += len;\n splits.push(lastDocSplit);\n lastSplit = screenPos;\n }\n var indent = 0;\n while (displayLength - lastSplit > wrapLimit - indent) {\n var split = lastSplit + wrapLimit - indent;\n if (tokens[split - 1] >= SPACE && tokens[split] >= SPACE) {\n addSplit(split);\n continue;\n }\n if (tokens[split] == PLACEHOLDER_START || tokens[split] == PLACEHOLDER_BODY) {\n for (split; split != lastSplit - 1; split--) {\n if (tokens[split] == PLACEHOLDER_START) {\n break;\n }\n }\n if (split > lastSplit) {\n addSplit(split);\n continue;\n }\n split = lastSplit + wrapLimit;\n for (split; split < tokens.length; split++) {\n if (tokens[split] != PLACEHOLDER_BODY) {\n break;\n }\n }\n if (split == tokens.length) {\n break; // Breaks the while-loop.\n }\n addSplit(split);\n continue;\n }\n var minSplit = Math.max(split - (wrapLimit - (wrapLimit >> 2)), lastSplit - 1);\n while (split > minSplit && tokens[split] < PLACEHOLDER_START) {\n split--;\n }\n if (isCode) {\n while (split > minSplit && tokens[split] < PLACEHOLDER_START) {\n split--;\n }\n while (split > minSplit && tokens[split] == PUNCTUATION) {\n split--;\n }\n }\n else {\n while (split > minSplit && tokens[split] < SPACE) {\n split--;\n }\n }\n if (split > minSplit) {\n addSplit(++split);\n continue;\n }\n split = lastSplit + wrapLimit;\n if (tokens[split] == CHAR_EXT)\n split--;\n addSplit(split - indent);\n }\n return splits;\n };\n EditSession.prototype.$getDisplayTokens = function (str, offset) {\n var arr = [];\n var tabSize;\n offset = offset || 0;\n for (var i = 0; i < str.length; i++) {\n var c = str.charCodeAt(i);\n if (c == 9) {\n tabSize = this.getScreenTabSize(arr.length + offset);\n arr.push(TAB);\n for (var n = 1; n < tabSize; n++) {\n arr.push(TAB_SPACE);\n }\n }\n else if (c == 32) {\n arr.push(SPACE);\n }\n else if ((c > 39 && c < 48) || (c > 57 && c < 64)) {\n arr.push(PUNCTUATION);\n }\n else if (c >= 0x1100 && isFullWidth(c)) {\n arr.push(CHAR, CHAR_EXT);\n }\n else {\n arr.push(CHAR);\n }\n }\n return arr;\n };\n EditSession.prototype.$getStringScreenWidth = function (str, maxScreenColumn, screenColumn) {\n if (maxScreenColumn == 0)\n return [0, 0];\n if (maxScreenColumn == null)\n maxScreenColumn = Infinity;\n screenColumn = screenColumn || 0;\n var c, column;\n for (column = 0; column < str.length; column++) {\n c = str.charCodeAt(column);\n if (c == 9) {\n screenColumn += this.getScreenTabSize(screenColumn);\n }\n else if (c >= 0x1100 && isFullWidth(c)) {\n screenColumn += 2;\n }\n else {\n screenColumn += 1;\n }\n if (screenColumn > maxScreenColumn) {\n break;\n }\n }\n return [screenColumn, column];\n };\n EditSession.prototype.getRowLength = function (row) {\n var h = 1;\n if (this.lineWidgets)\n h += this.lineWidgets[row] && this.lineWidgets[row].rowCount || 0;\n if (!this.$useWrapMode || !this.$wrapData[row])\n return h;\n else\n return this.$wrapData[row].length + h;\n };\n EditSession.prototype.getRowLineCount = function (row) {\n if (!this.$useWrapMode || !this.$wrapData[row]) {\n return 1;\n }\n else {\n return this.$wrapData[row].length + 1;\n }\n };\n EditSession.prototype.getRowWrapIndent = function (screenRow) {\n if (this.$useWrapMode) {\n var pos = this.screenToDocumentPosition(screenRow, Number.MAX_VALUE);\n var splits = this.$wrapData[pos.row];\n return splits.length && splits[0] < pos.column ? splits.indent : 0;\n }\n else {\n return 0;\n }\n };\n EditSession.prototype.getScreenLastRowColumn = function (screenRow) {\n var pos = this.screenToDocumentPosition(screenRow, Number.MAX_VALUE);\n return this.documentToScreenColumn(pos.row, pos.column);\n };\n EditSession.prototype.getDocumentLastRowColumn = function (docRow, docColumn) {\n var screenRow = this.documentToScreenRow(docRow, docColumn);\n return this.getScreenLastRowColumn(screenRow);\n };\n EditSession.prototype.getDocumentLastRowColumnPosition = function (docRow, docColumn) {\n var screenRow = this.documentToScreenRow(docRow, docColumn);\n return this.screenToDocumentPosition(screenRow, Number.MAX_VALUE / 10);\n };\n EditSession.prototype.getRowSplitData = function (row) {\n if (!this.$useWrapMode) {\n return undefined;\n }\n else {\n return this.$wrapData[row];\n }\n };\n EditSession.prototype.getScreenTabSize = function (screenColumn) {\n return this.$tabSize - (screenColumn % this.$tabSize | 0);\n };\n EditSession.prototype.screenToDocumentRow = function (screenRow, screenColumn) {\n return this.screenToDocumentPosition(screenRow, screenColumn).row;\n };\n EditSession.prototype.screenToDocumentColumn = function (screenRow, screenColumn) {\n return this.screenToDocumentPosition(screenRow, screenColumn).column;\n };\n EditSession.prototype.screenToDocumentPosition = function (screenRow, screenColumn, offsetX) {\n if (screenRow < 0)\n return { row: 0, column: 0 };\n var line;\n var docRow = 0;\n var docColumn = 0;\n var column;\n var row = 0;\n var rowLength = 0;\n var rowCache = this.$screenRowCache;\n var i = this.$getRowCacheIndex(rowCache, screenRow);\n var l = rowCache.length;\n if (l && i >= 0) {\n var row = rowCache[i];\n var docRow = this.$docRowCache[i];\n var doCache = screenRow > rowCache[l - 1];\n }\n else {\n var doCache = !l;\n }\n var maxRow = this.getLength() - 1;\n var foldLine = this.getNextFoldLine(docRow);\n var foldStart = foldLine ? foldLine.start.row : Infinity;\n while (row <= screenRow) {\n rowLength = this.getRowLength(docRow);\n if (row + rowLength > screenRow || docRow >= maxRow) {\n break;\n }\n else {\n row += rowLength;\n docRow++;\n if (docRow > foldStart) {\n docRow = foldLine.end.row + 1;\n foldLine = this.getNextFoldLine(docRow, foldLine);\n foldStart = foldLine ? foldLine.start.row : Infinity;\n }\n }\n if (doCache) {\n this.$docRowCache.push(docRow);\n this.$screenRowCache.push(row);\n }\n }\n if (foldLine && foldLine.start.row <= docRow) {\n line = this.getFoldDisplayLine(foldLine);\n docRow = foldLine.start.row;\n }\n else if (row + rowLength <= screenRow || docRow > maxRow) {\n return {\n row: maxRow,\n column: this.getLine(maxRow).length\n };\n }\n else {\n line = this.getLine(docRow);\n foldLine = null;\n }\n var wrapIndent = 0, splitIndex = Math.floor(screenRow - row);\n if (this.$useWrapMode) {\n var splits = this.$wrapData[docRow];\n if (splits) {\n column = splits[splitIndex];\n if (splitIndex > 0 && splits.length) {\n wrapIndent = splits.indent;\n docColumn = splits[splitIndex - 1] || splits[splits.length - 1];\n line = line.substring(docColumn);\n }\n }\n }\n if (offsetX !== undefined && this.$bidiHandler.isBidiRow(row + splitIndex, docRow, splitIndex))\n screenColumn = this.$bidiHandler.offsetToCol(offsetX);\n docColumn += this.$getStringScreenWidth(line, screenColumn - wrapIndent)[1];\n if (this.$useWrapMode && docColumn >= column)\n docColumn = column - 1;\n if (foldLine)\n return foldLine.idxToPosition(docColumn);\n return { row: docRow, column: docColumn };\n };\n EditSession.prototype.documentToScreenPosition = function (docRow, docColumn) {\n if (typeof docColumn === \"undefined\")\n var pos = this.$clipPositionToDocument(docRow.row, docRow.column);\n else\n pos = this.$clipPositionToDocument(docRow, docColumn);\n docRow = pos.row;\n docColumn = pos.column;\n var screenRow = 0;\n var foldStartRow = null;\n var fold = null;\n fold = this.getFoldAt(docRow, docColumn, 1);\n if (fold) {\n docRow = fold.start.row;\n docColumn = fold.start.column;\n }\n var rowEnd, row = 0;\n var rowCache = this.$docRowCache;\n var i = this.$getRowCacheIndex(rowCache, docRow);\n var l = rowCache.length;\n if (l && i >= 0) {\n var row = rowCache[i];\n var screenRow = this.$screenRowCache[i];\n var doCache = docRow > rowCache[l - 1];\n }\n else {\n var doCache = !l;\n }\n var foldLine = this.getNextFoldLine(row);\n var foldStart = foldLine ? foldLine.start.row : Infinity;\n while (row < docRow) {\n if (row >= foldStart) {\n rowEnd = foldLine.end.row + 1;\n if (rowEnd > docRow)\n break;\n foldLine = this.getNextFoldLine(rowEnd, foldLine);\n foldStart = foldLine ? foldLine.start.row : Infinity;\n }\n else {\n rowEnd = row + 1;\n }\n screenRow += this.getRowLength(row);\n row = rowEnd;\n if (doCache) {\n this.$docRowCache.push(row);\n this.$screenRowCache.push(screenRow);\n }\n }\n var textLine = \"\";\n if (foldLine && row >= foldStart) {\n textLine = this.getFoldDisplayLine(foldLine, docRow, docColumn);\n foldStartRow = foldLine.start.row;\n }\n else {\n textLine = this.getLine(docRow).substring(0, docColumn);\n foldStartRow = docRow;\n }\n var wrapIndent = 0;\n if (this.$useWrapMode) {\n var wrapRow = this.$wrapData[foldStartRow];\n if (wrapRow) {\n var screenRowOffset = 0;\n while (textLine.length >= wrapRow[screenRowOffset]) {\n screenRow++;\n screenRowOffset++;\n }\n textLine = textLine.substring(wrapRow[screenRowOffset - 1] || 0, textLine.length);\n wrapIndent = screenRowOffset > 0 ? wrapRow.indent : 0;\n }\n }\n if (this.lineWidgets && this.lineWidgets[row] && this.lineWidgets[row].rowsAbove)\n screenRow += this.lineWidgets[row].rowsAbove;\n return {\n row: screenRow,\n column: wrapIndent + this.$getStringScreenWidth(textLine)[0]\n };\n };\n EditSession.prototype.documentToScreenColumn = function (row, docColumn) {\n return this.documentToScreenPosition(row, docColumn).column;\n };\n EditSession.prototype.documentToScreenRow = function (docRow, docColumn) {\n return this.documentToScreenPosition(docRow, docColumn).row;\n };\n EditSession.prototype.getScreenLength = function () {\n var screenRows = 0;\n var fold = null;\n if (!this.$useWrapMode) {\n screenRows = this.getLength();\n var foldData = this.$foldData;\n for (var i = 0; i < foldData.length; i++) {\n fold = foldData[i];\n screenRows -= fold.end.row - fold.start.row;\n }\n }\n else {\n var lastRow = this.$wrapData.length;\n var row = 0, i = 0;\n var fold = this.$foldData[i++];\n var foldStart = fold ? fold.start.row : Infinity;\n while (row < lastRow) {\n var splits = this.$wrapData[row];\n screenRows += splits ? splits.length + 1 : 1;\n row++;\n if (row > foldStart) {\n row = fold.end.row + 1;\n fold = this.$foldData[i++];\n foldStart = fold ? fold.start.row : Infinity;\n }\n }\n }\n if (this.lineWidgets)\n screenRows += this.$getWidgetScreenLength();\n return screenRows;\n };\n EditSession.prototype.$setFontMetrics = function (fm) {\n if (!this.$enableVarChar)\n return;\n this.$getStringScreenWidth = function (str, maxScreenColumn, screenColumn) {\n if (maxScreenColumn === 0)\n return [0, 0];\n if (!maxScreenColumn)\n maxScreenColumn = Infinity;\n screenColumn = screenColumn || 0;\n var c, column;\n for (column = 0; column < str.length; column++) {\n c = str.charAt(column);\n if (c === \"\\t\") {\n screenColumn += this.getScreenTabSize(screenColumn);\n }\n else {\n screenColumn += fm.getCharacterWidth(c);\n }\n if (screenColumn > maxScreenColumn) {\n break;\n }\n }\n return [screenColumn, column];\n };\n };\n EditSession.prototype.destroy = function () {\n if (!this.destroyed) {\n this.bgTokenizer.setDocument(null);\n this.bgTokenizer.cleanup();\n this.destroyed = true;\n }\n this.$stopWorker();\n this.removeAllListeners();\n if (this.doc) {\n this.doc.off(\"change\", this.$onChange);\n }\n this.selection.detach();\n };\n return EditSession;\n}());\nEditSession.$uid = 0;\nEditSession.prototype.$modes = config.$modes;\nEditSession.prototype.getValue = EditSession.prototype.toString;\nEditSession.prototype.$defaultUndoManager = {\n undo: function () { },\n redo: function () { },\n hasUndo: function () { },\n hasRedo: function () { },\n reset: function () { },\n add: function () { },\n addSelection: function () { },\n startNewGroup: function () { },\n addSession: function () { }\n};\nEditSession.prototype.$overwrite = false;\nEditSession.prototype.$mode = null;\nEditSession.prototype.$modeId = null;\nEditSession.prototype.$scrollTop = 0;\nEditSession.prototype.$scrollLeft = 0;\nEditSession.prototype.$wrapLimit = 80;\nEditSession.prototype.$useWrapMode = false;\nEditSession.prototype.$wrapLimitRange = {\n min: null,\n max: null\n};\nEditSession.prototype.lineWidgets = null;\nEditSession.prototype.isFullWidth = isFullWidth;\noop.implement(EditSession.prototype, EventEmitter);\nvar CHAR = 1, CHAR_EXT = 2, PLACEHOLDER_START = 3, PLACEHOLDER_BODY = 4, PUNCTUATION = 9, SPACE = 10, TAB = 11, TAB_SPACE = 12;\nfunction isFullWidth(c) {\n if (c < 0x1100)\n return false;\n return c >= 0x1100 && c <= 0x115F ||\n c >= 0x11A3 && c <= 0x11A7 ||\n c >= 0x11FA && c <= 0x11FF ||\n c >= 0x2329 && c <= 0x232A ||\n c >= 0x2E80 && c <= 0x2E99 ||\n c >= 0x2E9B && c <= 0x2EF3 ||\n c >= 0x2F00 && c <= 0x2FD5 ||\n c >= 0x2FF0 && c <= 0x2FFB ||\n c >= 0x3000 && c <= 0x303E ||\n c >= 0x3041 && c <= 0x3096 ||\n c >= 0x3099 && c <= 0x30FF ||\n c >= 0x3105 && c <= 0x312D ||\n c >= 0x3131 && c <= 0x318E ||\n c >= 0x3190 && c <= 0x31BA ||\n c >= 0x31C0 && c <= 0x31E3 ||\n c >= 0x31F0 && c <= 0x321E ||\n c >= 0x3220 && c <= 0x3247 ||\n c >= 0x3250 && c <= 0x32FE ||\n c >= 0x3300 && c <= 0x4DBF ||\n c >= 0x4E00 && c <= 0xA48C ||\n c >= 0xA490 && c <= 0xA4C6 ||\n c >= 0xA960 && c <= 0xA97C ||\n c >= 0xAC00 && c <= 0xD7A3 ||\n c >= 0xD7B0 && c <= 0xD7C6 ||\n c >= 0xD7CB && c <= 0xD7FB ||\n c >= 0xF900 && c <= 0xFAFF ||\n c >= 0xFE10 && c <= 0xFE19 ||\n c >= 0xFE30 && c <= 0xFE52 ||\n c >= 0xFE54 && c <= 0xFE66 ||\n c >= 0xFE68 && c <= 0xFE6B ||\n c >= 0xFF01 && c <= 0xFF60 ||\n c >= 0xFFE0 && c <= 0xFFE6;\n}\nrequire(\"./edit_session/folding\").Folding.call(EditSession.prototype);\nrequire(\"./edit_session/bracket_match\").BracketMatch.call(EditSession.prototype);\nconfig.defineOptions(EditSession.prototype, \"session\", {\n wrap: {\n set: function (value) {\n if (!value || value == \"off\")\n value = false;\n else if (value == \"free\")\n value = true;\n else if (value == \"printMargin\")\n value = -1;\n else if (typeof value == \"string\")\n value = parseInt(value, 10) || false;\n if (this.$wrap == value)\n return;\n this.$wrap = value;\n if (!value) {\n this.setUseWrapMode(false);\n }\n else {\n var col = typeof value == \"number\" ? value : null;\n this.setWrapLimitRange(col, col);\n this.setUseWrapMode(true);\n }\n },\n get: function () {\n if (this.getUseWrapMode()) {\n if (this.$wrap == -1)\n return \"printMargin\";\n if (!this.getWrapLimitRange().min)\n return \"free\";\n return this.$wrap;\n }\n return \"off\";\n },\n handlesSet: true\n },\n wrapMethod: {\n set: function (val) {\n val = val == \"auto\"\n ? this.$mode.type != \"text\"\n : val != \"text\";\n if (val != this.$wrapAsCode) {\n this.$wrapAsCode = val;\n if (this.$useWrapMode) {\n this.$useWrapMode = false;\n this.setUseWrapMode(true);\n }\n }\n },\n initialValue: \"auto\"\n },\n indentedSoftWrap: {\n set: function () {\n if (this.$useWrapMode) {\n this.$useWrapMode = false;\n this.setUseWrapMode(true);\n }\n },\n initialValue: true\n },\n firstLineNumber: {\n set: function () { this._signal(\"changeBreakpoint\"); },\n initialValue: 1\n },\n useWorker: {\n set: function (useWorker) {\n this.$useWorker = useWorker;\n this.$stopWorker();\n if (useWorker)\n this.$startWorker();\n },\n initialValue: true\n },\n useSoftTabs: { initialValue: true },\n tabSize: {\n set: function (tabSize) {\n tabSize = parseInt(tabSize);\n if (tabSize > 0 && this.$tabSize !== tabSize) {\n this.$modified = true;\n this.$rowLengthCache = [];\n this.$tabSize = tabSize;\n this._signal(\"changeTabSize\");\n }\n },\n initialValue: 4,\n handlesSet: true\n },\n navigateWithinSoftTabs: { initialValue: false },\n foldStyle: {\n set: function (val) { this.setFoldStyle(val); },\n handlesSet: true\n },\n overwrite: {\n set: function (val) { this._signal(\"changeOverwrite\"); },\n initialValue: false\n },\n newLineMode: {\n set: function (val) { this.doc.setNewLineMode(val); },\n get: function () { return this.doc.getNewLineMode(); },\n handlesSet: true\n },\n mode: {\n set: function (val) { this.setMode(val); },\n get: function () { return this.$modeId; },\n handlesSet: true\n }\n});\nexports.EditSession = EditSession;\n\n});\n\nace.define(\"ace/search\",[\"require\",\"exports\",\"module\",\"ace/lib/lang\",\"ace/lib/oop\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar lang = require(\"./lib/lang\");\nvar oop = require(\"./lib/oop\");\nvar Range = require(\"./range\").Range;\nvar Search = /** @class */ (function () {\n function Search() {\n this.$options = {};\n }\n Search.prototype.set = function (options) {\n oop.mixin(this.$options, options);\n return this;\n };\n Search.prototype.getOptions = function () {\n return lang.copyObject(this.$options);\n };\n Search.prototype.setOptions = function (options) {\n this.$options = options;\n };\n Search.prototype.find = function (session) {\n var options = this.$options;\n var iterator = this.$matchIterator(session, options);\n if (!iterator)\n return false;\n var firstRange = null;\n iterator.forEach(function (sr, sc, er, ec) {\n firstRange = new Range(sr, sc, er, ec);\n if (sc == ec && options.start && options.start.start\n && options.skipCurrent != false && firstRange.isEqual(options.start)) {\n firstRange = null;\n return false;\n }\n return true;\n });\n return firstRange;\n };\n Search.prototype.findAll = function (session) {\n var options = this.$options;\n if (!options.needle)\n return [];\n this.$assembleRegExp(options);\n var range = options.range;\n var lines = range\n ? session.getLines(range.start.row, range.end.row)\n : session.doc.getAllLines();\n var ranges = [];\n var re = options.re;\n if (options.$isMultiLine) {\n var len = re.length;\n var maxRow = lines.length - len;\n var prevRange;\n outer: for (var row = re.offset || 0; row <= maxRow; row++) {\n for (var j = 0; j < len; j++)\n if (lines[row + j].search(re[j]) == -1)\n continue outer;\n var startLine = lines[row];\n var line = lines[row + len - 1];\n var startIndex = startLine.length - startLine.match(re[0])[0].length;\n var endIndex = line.match(re[len - 1])[0].length;\n if (prevRange && prevRange.end.row === row &&\n prevRange.end.column > startIndex) {\n continue;\n }\n ranges.push(prevRange = new Range(row, startIndex, row + len - 1, endIndex));\n if (len > 2)\n row = row + len - 2;\n }\n }\n else {\n for (var i = 0; i < lines.length; i++) {\n var matches = lang.getMatchOffsets(lines[i], re);\n for (var j = 0; j < matches.length; j++) {\n var match = matches[j];\n ranges.push(new Range(i, match.offset, i, match.offset + match.length));\n }\n }\n }\n if (range) {\n var startColumn = range.start.column;\n var endColumn = range.end.column;\n var i = 0, j = ranges.length - 1;\n while (i < j && ranges[i].start.column < startColumn && ranges[i].start.row == 0)\n i++;\n var endRow = range.end.row - range.start.row;\n while (i < j && ranges[j].end.column > endColumn && ranges[j].end.row == endRow)\n j--;\n ranges = ranges.slice(i, j + 1);\n for (i = 0, j = ranges.length; i < j; i++) {\n ranges[i].start.row += range.start.row;\n ranges[i].end.row += range.start.row;\n }\n }\n return ranges;\n };\n Search.prototype.replace = function (input, replacement) {\n var options = this.$options;\n var re = this.$assembleRegExp(options);\n if (options.$isMultiLine)\n return replacement;\n if (!re)\n return;\n var match = re.exec(input);\n if (!match || match[0].length != input.length)\n return null;\n replacement = input.replace(re, replacement);\n if (options.preserveCase) {\n replacement = replacement.split(\"\");\n for (var i = Math.min(input.length, input.length); i--;) {\n var ch = input[i];\n if (ch && ch.toLowerCase() != ch)\n replacement[i] = replacement[i].toUpperCase();\n else\n replacement[i] = replacement[i].toLowerCase();\n }\n replacement = replacement.join(\"\");\n }\n return replacement;\n };\n Search.prototype.$assembleRegExp = function (options, $disableFakeMultiline) {\n if (options.needle instanceof RegExp)\n return options.re = options.needle;\n var needle = options.needle;\n if (!options.needle)\n return options.re = false;\n if (options.$supportsUnicodeFlag === undefined) {\n options.$supportsUnicodeFlag = lang.supportsUnicodeFlag();\n }\n try {\n new RegExp(needle, \"u\");\n }\n catch (e) {\n options.$supportsUnicodeFlag = false; //left for backward compatibility with previous versions for cases like /ab\\{2}/gu\n }\n if (!options.regExp)\n needle = lang.escapeRegExp(needle);\n if (options.wholeWord)\n needle = addWordBoundary(needle, options);\n var modifier = options.caseSensitive ? \"gm\" : \"gmi\";\n if (options.$supportsUnicodeFlag) {\n modifier += \"u\";\n }\n options.$isMultiLine = !$disableFakeMultiline && /[\\n\\r]/.test(needle);\n if (options.$isMultiLine)\n return options.re = this.$assembleMultilineRegExp(needle, modifier);\n try {\n var re = new RegExp(needle, modifier);\n }\n catch (e) {\n re = false;\n }\n return options.re = re;\n };\n Search.prototype.$assembleMultilineRegExp = function (needle, modifier) {\n var parts = needle.replace(/\\r\\n|\\r|\\n/g, \"$\\n^\").split(\"\\n\");\n var re = [];\n for (var i = 0; i < parts.length; i++)\n try {\n re.push(new RegExp(parts[i], modifier));\n }\n catch (e) {\n return false;\n }\n return re;\n };\n Search.prototype.$matchIterator = function (session, options) {\n var re = this.$assembleRegExp(options);\n if (!re)\n return false;\n var backwards = options.backwards == true;\n var skipCurrent = options.skipCurrent != false;\n var range = options.range;\n var start = options.start;\n if (!start)\n start = range ? range[backwards ? \"end\" : \"start\"] : session.selection.getRange();\n if (start.start)\n start = start[skipCurrent != backwards ? \"end\" : \"start\"];\n var firstRow = range ? range.start.row : 0;\n var lastRow = range ? range.end.row : session.getLength() - 1;\n if (backwards) {\n var forEach = function (callback) {\n var row = start.row;\n if (forEachInLine(row, start.column, callback))\n return;\n for (row--; row >= firstRow; row--)\n if (forEachInLine(row, Number.MAX_VALUE, callback))\n return;\n if (options.wrap == false)\n return;\n for (row = lastRow, firstRow = start.row; row >= firstRow; row--)\n if (forEachInLine(row, Number.MAX_VALUE, callback))\n return;\n };\n }\n else {\n var forEach = function (callback) {\n var row = start.row;\n if (forEachInLine(row, start.column, callback))\n return;\n for (row = row + 1; row <= lastRow; row++)\n if (forEachInLine(row, 0, callback))\n return;\n if (options.wrap == false)\n return;\n for (row = firstRow, lastRow = start.row; row <= lastRow; row++)\n if (forEachInLine(row, 0, callback))\n return;\n };\n }\n if (options.$isMultiLine) {\n var len = re.length;\n var forEachInLine = function (row, offset, callback) {\n var startRow = backwards ? row - len + 1 : row;\n if (startRow < 0 || startRow + len > session.getLength())\n return;\n var line = session.getLine(startRow);\n var startIndex = line.search(re[0]);\n if (!backwards && startIndex < offset || startIndex === -1)\n return;\n for (var i = 1; i < len; i++) {\n line = session.getLine(startRow + i);\n if (line.search(re[i]) == -1)\n return;\n }\n var endIndex = line.match(re[len - 1])[0].length;\n if (backwards && endIndex > offset)\n return;\n if (callback(startRow, startIndex, startRow + len - 1, endIndex))\n return true;\n };\n }\n else if (backwards) {\n var forEachInLine = function (row, endIndex, callback) {\n var line = session.getLine(row);\n var matches = [];\n var m, last = 0;\n re.lastIndex = 0;\n while ((m = re.exec(line))) {\n var length = m[0].length;\n last = m.index;\n if (!length) {\n if (last >= line.length)\n break;\n re.lastIndex = last += 1;\n }\n if (m.index + length > endIndex)\n break;\n matches.push(m.index, length);\n }\n for (var i = matches.length - 1; i >= 0; i -= 2) {\n var column = matches[i - 1];\n var length = matches[i];\n if (callback(row, column, row, column + length))\n return true;\n }\n };\n }\n else {\n var forEachInLine = function (row, startIndex, callback) {\n var line = session.getLine(row);\n var last;\n var m;\n re.lastIndex = startIndex;\n while ((m = re.exec(line))) {\n var length = m[0].length;\n last = m.index;\n if (callback(row, last, row, last + length))\n return true;\n if (!length) {\n re.lastIndex = last += 1;\n if (last >= line.length)\n return false;\n }\n }\n };\n }\n return { forEach: forEach };\n };\n return Search;\n}());\nfunction addWordBoundary(needle, options) {\n var supportsLookbehind = lang.supportsLookbehind();\n function wordBoundary(c, firstChar) {\n if (firstChar === void 0) { firstChar = true; }\n var wordRegExp = supportsLookbehind && options.$supportsUnicodeFlag ? new RegExp(\"[\\\\p{L}\\\\p{N}_]\", \"u\") : new RegExp(\"\\\\w\");\n if (wordRegExp.test(c) || options.regExp) {\n if (supportsLookbehind && options.$supportsUnicodeFlag) {\n if (firstChar)\n return \"(?<=^|[^\\\\p{L}\\\\p{N}_])\";\n return \"(?=[^\\\\p{L}\\\\p{N}_]|$)\";\n }\n return \"\\\\b\";\n }\n return \"\";\n }\n var needleArray = Array.from(needle);\n var firstChar = needleArray[0];\n var lastChar = needleArray[needleArray.length - 1];\n return wordBoundary(firstChar) + needle + wordBoundary(lastChar, false);\n}\nexports.Search = Search;\n\n});\n\nace.define(\"ace/keyboard/hash_handler\",[\"require\",\"exports\",\"module\",\"ace/lib/keys\",\"ace/lib/useragent\"], function(require, exports, module){\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar keyUtil = require(\"../lib/keys\");\nvar useragent = require(\"../lib/useragent\");\nvar KEY_MODS = keyUtil.KEY_MODS;\nvar MultiHashHandler = /** @class */ (function () {\n function MultiHashHandler(config, platform) {\n this.$init(config, platform, false);\n }\n MultiHashHandler.prototype.$init = function (config, platform, $singleCommand) {\n this.platform = platform || (useragent.isMac ? \"mac\" : \"win\");\n this.commands = {};\n this.commandKeyBinding = {};\n this.addCommands(config);\n this.$singleCommand = $singleCommand;\n };\n MultiHashHandler.prototype.addCommand = function (command) {\n if (this.commands[command.name])\n this.removeCommand(command);\n this.commands[command.name] = command;\n if (command.bindKey)\n this._buildKeyHash(command);\n };\n MultiHashHandler.prototype.removeCommand = function (command, keepCommand) {\n var name = command && (typeof command === 'string' ? command : command.name);\n command = this.commands[name];\n if (!keepCommand)\n delete this.commands[name];\n var ckb = this.commandKeyBinding;\n for (var keyId in ckb) {\n var cmdGroup = ckb[keyId];\n if (cmdGroup == command) {\n delete ckb[keyId];\n }\n else if (Array.isArray(cmdGroup)) {\n var i = cmdGroup.indexOf(command);\n if (i != -1) {\n cmdGroup.splice(i, 1);\n if (cmdGroup.length == 1)\n ckb[keyId] = cmdGroup[0];\n }\n }\n }\n };\n MultiHashHandler.prototype.bindKey = function (key, command, position) {\n if (typeof key == \"object\" && key) {\n if (position == undefined)\n position = key.position;\n key = key[this.platform];\n }\n if (!key)\n return;\n if (typeof command == \"function\")\n return this.addCommand({ exec: command, bindKey: key, name: command.name || key });\n key.split(\"|\").forEach(function (keyPart) {\n var chain = \"\";\n if (keyPart.indexOf(\" \") != -1) {\n var parts = keyPart.split(/\\s+/);\n keyPart = parts.pop();\n parts.forEach(function (keyPart) {\n var binding = this.parseKeys(keyPart);\n var id = KEY_MODS[binding.hashId] + binding.key;\n chain += (chain ? \" \" : \"\") + id;\n this._addCommandToBinding(chain, \"chainKeys\");\n }, this);\n chain += \" \";\n }\n var binding = this.parseKeys(keyPart);\n var id = KEY_MODS[binding.hashId] + binding.key;\n this._addCommandToBinding(chain + id, command, position);\n }, this);\n };\n MultiHashHandler.prototype._addCommandToBinding = function (keyId, command, position) {\n var ckb = this.commandKeyBinding, i;\n if (!command) {\n delete ckb[keyId];\n }\n else if (!ckb[keyId] || this.$singleCommand) {\n ckb[keyId] = command;\n }\n else {\n if (!Array.isArray(ckb[keyId])) {\n ckb[keyId] = [ckb[keyId]];\n }\n else if ((i = ckb[keyId].indexOf(command)) != -1) {\n ckb[keyId].splice(i, 1);\n }\n if (typeof position != \"number\") {\n position = getPosition(command);\n }\n var commands = ckb[keyId];\n for (i = 0; i < commands.length; i++) {\n var other = commands[i];\n var otherPos = getPosition(other);\n if (otherPos > position)\n break;\n }\n commands.splice(i, 0, command);\n }\n };\n MultiHashHandler.prototype.addCommands = function (commands) {\n commands && Object.keys(commands).forEach(function (name) {\n var command = commands[name];\n if (!command)\n return;\n if (typeof command === \"string\")\n return this.bindKey(command, name);\n if (typeof command === \"function\")\n command = { exec: command };\n if (typeof command !== \"object\")\n return;\n if (!command.name)\n command.name = name;\n this.addCommand(command);\n }, this);\n };\n MultiHashHandler.prototype.removeCommands = function (commands) {\n Object.keys(commands).forEach(function (name) {\n this.removeCommand(commands[name]);\n }, this);\n };\n MultiHashHandler.prototype.bindKeys = function (keyList) {\n Object.keys(keyList).forEach(function (key) {\n this.bindKey(key, keyList[key]);\n }, this);\n };\n MultiHashHandler.prototype._buildKeyHash = function (command) {\n this.bindKey(command.bindKey, command);\n };\n MultiHashHandler.prototype.parseKeys = function (keys) {\n var parts = keys.toLowerCase().split(/[\\-\\+]([\\-\\+])?/).filter(function (x) { return x; });\n var key = parts.pop();\n var keyCode = keyUtil[key];\n if (keyUtil.FUNCTION_KEYS[keyCode])\n key = keyUtil.FUNCTION_KEYS[keyCode].toLowerCase();\n else if (!parts.length)\n return { key: key, hashId: -1 };\n else if (parts.length == 1 && parts[0] == \"shift\")\n return { key: key.toUpperCase(), hashId: -1 };\n var hashId = 0;\n for (var i = parts.length; i--;) {\n var modifier = keyUtil.KEY_MODS[parts[i]];\n if (modifier == null) {\n if (typeof console != \"undefined\")\n console.error(\"invalid modifier \" + parts[i] + \" in \" + keys);\n return false;\n }\n hashId |= modifier;\n }\n return { key: key, hashId: hashId };\n };\n MultiHashHandler.prototype.findKeyCommand = function (hashId, keyString) {\n var key = KEY_MODS[hashId] + keyString;\n return this.commandKeyBinding[key];\n };\n MultiHashHandler.prototype.handleKeyboard = function (data, hashId, keyString, keyCode) {\n if (keyCode < 0)\n return;\n var key = KEY_MODS[hashId] + keyString;\n var command = this.commandKeyBinding[key];\n if (data.$keyChain) {\n data.$keyChain += \" \" + key;\n command = this.commandKeyBinding[data.$keyChain] || command;\n }\n if (command) {\n if (command == \"chainKeys\" || command[command.length - 1] == \"chainKeys\") {\n data.$keyChain = data.$keyChain || key;\n return { command: \"null\" };\n }\n }\n if (data.$keyChain) {\n if ((!hashId || hashId == 4) && keyString.length == 1)\n data.$keyChain = data.$keyChain.slice(0, -key.length - 1); // wait for input\n else if (hashId == -1 || keyCode > 0)\n data.$keyChain = \"\"; // reset keyChain\n }\n return { command: command };\n };\n MultiHashHandler.prototype.getStatusText = function (editor, data) {\n return data.$keyChain || \"\";\n };\n return MultiHashHandler;\n}());\nfunction getPosition(command) {\n return typeof command == \"object\" && command.bindKey\n && command.bindKey.position\n || (command.isDefault ? -100 : 0);\n}\nvar HashHandler = /** @class */ (function (_super) {\n __extends(HashHandler, _super);\n function HashHandler(config, platform) {\n var _this = _super.call(this, config, platform) || this;\n _this.$singleCommand = true;\n return _this;\n }\n return HashHandler;\n}(MultiHashHandler));\nHashHandler.call = function (thisArg, config, platform) {\n MultiHashHandler.prototype.$init.call(thisArg, config, platform, true);\n};\nMultiHashHandler.call = function (thisArg, config, platform) {\n MultiHashHandler.prototype.$init.call(thisArg, config, platform, false);\n};\nexports.HashHandler = HashHandler;\nexports.MultiHashHandler = MultiHashHandler;\n\n});\n\nace.define(\"ace/commands/command_manager\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/keyboard/hash_handler\",\"ace/lib/event_emitter\"], function(require, exports, module){\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar oop = require(\"../lib/oop\");\nvar MultiHashHandler = require(\"../keyboard/hash_handler\").MultiHashHandler;\nvar EventEmitter = require(\"../lib/event_emitter\").EventEmitter;\nvar CommandManager = /** @class */ (function (_super) {\n __extends(CommandManager, _super);\n function CommandManager(platform, commands) {\n var _this = _super.call(this, commands, platform) || this;\n _this.byName = _this.commands;\n _this.setDefaultHandler(\"exec\", function (e) {\n if (!e.args) {\n return e.command.exec(e.editor, {}, e.event, true);\n }\n return e.command.exec(e.editor, e.args, e.event, false);\n });\n return _this;\n }\n CommandManager.prototype.exec = function (command, editor, args) {\n if (Array.isArray(command)) {\n for (var i = command.length; i--;) {\n if (this.exec(command[i], editor, args))\n return true;\n }\n return false;\n }\n if (typeof command === \"string\")\n command = this.commands[command];\n if (!command)\n return false;\n if (editor && editor.$readOnly && !command.readOnly)\n return false;\n if (this.$checkCommandState != false && command.isAvailable && !command.isAvailable(editor))\n return false;\n var e = { editor: editor, command: command, args: args };\n e.returnValue = this._emit(\"exec\", e);\n this._signal(\"afterExec\", e);\n return e.returnValue === false ? false : true;\n };\n CommandManager.prototype.toggleRecording = function (editor) {\n if (this.$inReplay)\n return;\n editor && editor._emit(\"changeStatus\");\n if (this.recording) {\n this.macro.pop();\n this.off(\"exec\", this.$addCommandToMacro);\n if (!this.macro.length)\n this.macro = this.oldMacro;\n return this.recording = false;\n }\n if (!this.$addCommandToMacro) {\n this.$addCommandToMacro = function (e) {\n this.macro.push([e.command, e.args]);\n }.bind(this);\n }\n this.oldMacro = this.macro;\n this.macro = [];\n this.on(\"exec\", this.$addCommandToMacro);\n return this.recording = true;\n };\n CommandManager.prototype.replay = function (editor) {\n if (this.$inReplay || !this.macro)\n return;\n if (this.recording)\n return this.toggleRecording(editor);\n try {\n this.$inReplay = true;\n this.macro.forEach(function (x) {\n if (typeof x == \"string\")\n this.exec(x, editor);\n else\n this.exec(x[0], editor, x[1]);\n }, this);\n }\n finally {\n this.$inReplay = false;\n }\n };\n CommandManager.prototype.trimMacro = function (m) {\n return m.map(function (x) {\n if (typeof x[0] != \"string\")\n x[0] = x[0].name;\n if (!x[1])\n x = x[0];\n return x;\n });\n };\n return CommandManager;\n}(MultiHashHandler));\noop.implement(CommandManager.prototype, EventEmitter);\nexports.CommandManager = CommandManager;\n\n});\n\nace.define(\"ace/commands/default_commands\",[\"require\",\"exports\",\"module\",\"ace/lib/lang\",\"ace/config\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar lang = require(\"../lib/lang\");\nvar config = require(\"../config\");\nvar Range = require(\"../range\").Range;\nfunction bindKey(win, mac) {\n return { win: win, mac: mac };\n}\nexports.commands = [{\n name: \"showSettingsMenu\",\n description: \"Show settings menu\",\n bindKey: bindKey(\"Ctrl-,\", \"Command-,\"),\n exec: function (editor) {\n config.loadModule(\"ace/ext/settings_menu\", function (module) {\n module.init(editor);\n editor.showSettingsMenu();\n });\n },\n readOnly: true\n }, {\n name: \"goToNextError\",\n description: \"Go to next error\",\n bindKey: bindKey(\"Alt-E\", \"F4\"),\n exec: function (editor) {\n config.loadModule(\"ace/ext/error_marker\", function (module) {\n module.showErrorMarker(editor, 1);\n });\n },\n scrollIntoView: \"animate\",\n readOnly: true\n }, {\n name: \"goToPreviousError\",\n description: \"Go to previous error\",\n bindKey: bindKey(\"Alt-Shift-E\", \"Shift-F4\"),\n exec: function (editor) {\n config.loadModule(\"ace/ext/error_marker\", function (module) {\n module.showErrorMarker(editor, -1);\n });\n },\n scrollIntoView: \"animate\",\n readOnly: true\n }, {\n name: \"selectall\",\n description: \"Select all\",\n bindKey: bindKey(\"Ctrl-A\", \"Command-A\"),\n exec: function (editor) { editor.selectAll(); },\n readOnly: true\n }, {\n name: \"centerselection\",\n description: \"Center selection\",\n bindKey: bindKey(null, \"Ctrl-L\"),\n exec: function (editor) { editor.centerSelection(); },\n readOnly: true\n }, {\n name: \"gotoline\",\n description: \"Go to line...\",\n bindKey: bindKey(\"Ctrl-L\", \"Command-L\"),\n exec: function (editor, line) {\n if (typeof line === \"number\" && !isNaN(line))\n editor.gotoLine(line);\n editor.prompt({ $type: \"gotoLine\" });\n },\n readOnly: true\n }, {\n name: \"fold\",\n bindKey: bindKey(\"Alt-L|Ctrl-F1\", \"Command-Alt-L|Command-F1\"),\n exec: function (editor) { editor.session.toggleFold(false); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"center\",\n readOnly: true\n }, {\n name: \"unfold\",\n bindKey: bindKey(\"Alt-Shift-L|Ctrl-Shift-F1\", \"Command-Alt-Shift-L|Command-Shift-F1\"),\n exec: function (editor) { editor.session.toggleFold(true); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"center\",\n readOnly: true\n }, {\n name: \"toggleFoldWidget\",\n description: \"Toggle fold widget\",\n bindKey: bindKey(\"F2\", \"F2\"),\n exec: function (editor) { editor.session.toggleFoldWidget(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"center\",\n readOnly: true\n }, {\n name: \"toggleParentFoldWidget\",\n description: \"Toggle parent fold widget\",\n bindKey: bindKey(\"Alt-F2\", \"Alt-F2\"),\n exec: function (editor) { editor.session.toggleFoldWidget(true); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"center\",\n readOnly: true\n }, {\n name: \"foldall\",\n description: \"Fold all\",\n bindKey: bindKey(null, \"Ctrl-Command-Option-0\"),\n exec: function (editor) { editor.session.foldAll(); },\n scrollIntoView: \"center\",\n readOnly: true\n }, {\n name: \"foldAllComments\",\n description: \"Fold all comments\",\n bindKey: bindKey(null, \"Ctrl-Command-Option-0\"),\n exec: function (editor) { editor.session.foldAllComments(); },\n scrollIntoView: \"center\",\n readOnly: true\n }, {\n name: \"foldOther\",\n description: \"Fold other\",\n bindKey: bindKey(\"Alt-0\", \"Command-Option-0\"),\n exec: function (editor) {\n editor.session.foldAll();\n editor.session.unfold(editor.selection.getAllRanges());\n },\n scrollIntoView: \"center\",\n readOnly: true\n }, {\n name: \"unfoldall\",\n description: \"Unfold all\",\n bindKey: bindKey(\"Alt-Shift-0\", \"Command-Option-Shift-0\"),\n exec: function (editor) { editor.session.unfold(); },\n scrollIntoView: \"center\",\n readOnly: true\n }, {\n name: \"findnext\",\n description: \"Find next\",\n bindKey: bindKey(\"Ctrl-K\", \"Command-G\"),\n exec: function (editor) { editor.findNext(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"center\",\n readOnly: true\n }, {\n name: \"findprevious\",\n description: \"Find previous\",\n bindKey: bindKey(\"Ctrl-Shift-K\", \"Command-Shift-G\"),\n exec: function (editor) { editor.findPrevious(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"center\",\n readOnly: true\n }, {\n name: \"selectOrFindNext\",\n description: \"Select or find next\",\n bindKey: bindKey(\"Alt-K\", \"Ctrl-G\"),\n exec: function (editor) {\n if (editor.selection.isEmpty())\n editor.selection.selectWord();\n else\n editor.findNext();\n },\n readOnly: true\n }, {\n name: \"selectOrFindPrevious\",\n description: \"Select or find previous\",\n bindKey: bindKey(\"Alt-Shift-K\", \"Ctrl-Shift-G\"),\n exec: function (editor) {\n if (editor.selection.isEmpty())\n editor.selection.selectWord();\n else\n editor.findPrevious();\n },\n readOnly: true\n }, {\n name: \"find\",\n description: \"Find\",\n bindKey: bindKey(\"Ctrl-F\", \"Command-F\"),\n exec: function (editor) {\n config.loadModule(\"ace/ext/searchbox\", function (e) { e.Search(editor); });\n },\n readOnly: true\n }, {\n name: \"overwrite\",\n description: \"Overwrite\",\n bindKey: \"Insert\",\n exec: function (editor) { editor.toggleOverwrite(); },\n readOnly: true\n }, {\n name: \"selecttostart\",\n description: \"Select to start\",\n bindKey: bindKey(\"Ctrl-Shift-Home\", \"Command-Shift-Home|Command-Shift-Up\"),\n exec: function (editor) { editor.getSelection().selectFileStart(); },\n multiSelectAction: \"forEach\",\n readOnly: true,\n scrollIntoView: \"animate\",\n aceCommandGroup: \"fileJump\"\n }, {\n name: \"gotostart\",\n description: \"Go to start\",\n bindKey: bindKey(\"Ctrl-Home\", \"Command-Home|Command-Up\"),\n exec: function (editor) { editor.navigateFileStart(); },\n multiSelectAction: \"forEach\",\n readOnly: true,\n scrollIntoView: \"animate\",\n aceCommandGroup: \"fileJump\"\n }, {\n name: \"selectup\",\n description: \"Select up\",\n bindKey: bindKey(\"Shift-Up\", \"Shift-Up|Ctrl-Shift-P\"),\n exec: function (editor) { editor.getSelection().selectUp(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"golineup\",\n description: \"Go line up\",\n bindKey: bindKey(\"Up\", \"Up|Ctrl-P\"),\n exec: function (editor, args) { editor.navigateUp(args.times); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"selecttoend\",\n description: \"Select to end\",\n bindKey: bindKey(\"Ctrl-Shift-End\", \"Command-Shift-End|Command-Shift-Down\"),\n exec: function (editor) { editor.getSelection().selectFileEnd(); },\n multiSelectAction: \"forEach\",\n readOnly: true,\n scrollIntoView: \"animate\",\n aceCommandGroup: \"fileJump\"\n }, {\n name: \"gotoend\",\n description: \"Go to end\",\n bindKey: bindKey(\"Ctrl-End\", \"Command-End|Command-Down\"),\n exec: function (editor) { editor.navigateFileEnd(); },\n multiSelectAction: \"forEach\",\n readOnly: true,\n scrollIntoView: \"animate\",\n aceCommandGroup: \"fileJump\"\n }, {\n name: \"selectdown\",\n description: \"Select down\",\n bindKey: bindKey(\"Shift-Down\", \"Shift-Down|Ctrl-Shift-N\"),\n exec: function (editor) { editor.getSelection().selectDown(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"golinedown\",\n description: \"Go line down\",\n bindKey: bindKey(\"Down\", \"Down|Ctrl-N\"),\n exec: function (editor, args) { editor.navigateDown(args.times); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"selectwordleft\",\n description: \"Select word left\",\n bindKey: bindKey(\"Ctrl-Shift-Left\", \"Option-Shift-Left\"),\n exec: function (editor) { editor.getSelection().selectWordLeft(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"gotowordleft\",\n description: \"Go to word left\",\n bindKey: bindKey(\"Ctrl-Left\", \"Option-Left\"),\n exec: function (editor) { editor.navigateWordLeft(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"selecttolinestart\",\n description: \"Select to line start\",\n bindKey: bindKey(\"Alt-Shift-Left\", \"Command-Shift-Left|Ctrl-Shift-A\"),\n exec: function (editor) { editor.getSelection().selectLineStart(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"gotolinestart\",\n description: \"Go to line start\",\n bindKey: bindKey(\"Alt-Left|Home\", \"Command-Left|Home|Ctrl-A\"),\n exec: function (editor) { editor.navigateLineStart(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"selectleft\",\n description: \"Select left\",\n bindKey: bindKey(\"Shift-Left\", \"Shift-Left|Ctrl-Shift-B\"),\n exec: function (editor) { editor.getSelection().selectLeft(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"gotoleft\",\n description: \"Go to left\",\n bindKey: bindKey(\"Left\", \"Left|Ctrl-B\"),\n exec: function (editor, args) { editor.navigateLeft(args.times); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"selectwordright\",\n description: \"Select word right\",\n bindKey: bindKey(\"Ctrl-Shift-Right\", \"Option-Shift-Right\"),\n exec: function (editor) { editor.getSelection().selectWordRight(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"gotowordright\",\n description: \"Go to word right\",\n bindKey: bindKey(\"Ctrl-Right\", \"Option-Right\"),\n exec: function (editor) { editor.navigateWordRight(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"selecttolineend\",\n description: \"Select to line end\",\n bindKey: bindKey(\"Alt-Shift-Right\", \"Command-Shift-Right|Shift-End|Ctrl-Shift-E\"),\n exec: function (editor) { editor.getSelection().selectLineEnd(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"gotolineend\",\n description: \"Go to line end\",\n bindKey: bindKey(\"Alt-Right|End\", \"Command-Right|End|Ctrl-E\"),\n exec: function (editor) { editor.navigateLineEnd(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"selectright\",\n description: \"Select right\",\n bindKey: bindKey(\"Shift-Right\", \"Shift-Right\"),\n exec: function (editor) { editor.getSelection().selectRight(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"gotoright\",\n description: \"Go to right\",\n bindKey: bindKey(\"Right\", \"Right|Ctrl-F\"),\n exec: function (editor, args) { editor.navigateRight(args.times); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"selectpagedown\",\n description: \"Select page down\",\n bindKey: \"Shift-PageDown\",\n exec: function (editor) { editor.selectPageDown(); },\n readOnly: true\n }, {\n name: \"pagedown\",\n description: \"Page down\",\n bindKey: bindKey(null, \"Option-PageDown\"),\n exec: function (editor) { editor.scrollPageDown(); },\n readOnly: true\n }, {\n name: \"gotopagedown\",\n description: \"Go to page down\",\n bindKey: bindKey(\"PageDown\", \"PageDown|Ctrl-V\"),\n exec: function (editor) { editor.gotoPageDown(); },\n readOnly: true\n }, {\n name: \"selectpageup\",\n description: \"Select page up\",\n bindKey: \"Shift-PageUp\",\n exec: function (editor) { editor.selectPageUp(); },\n readOnly: true\n }, {\n name: \"pageup\",\n description: \"Page up\",\n bindKey: bindKey(null, \"Option-PageUp\"),\n exec: function (editor) { editor.scrollPageUp(); },\n readOnly: true\n }, {\n name: \"gotopageup\",\n description: \"Go to page up\",\n bindKey: \"PageUp\",\n exec: function (editor) { editor.gotoPageUp(); },\n readOnly: true\n }, {\n name: \"scrollup\",\n description: \"Scroll up\",\n bindKey: bindKey(\"Ctrl-Up\", null),\n exec: function (e) { e.renderer.scrollBy(0, -2 * e.renderer.layerConfig.lineHeight); },\n readOnly: true\n }, {\n name: \"scrolldown\",\n description: \"Scroll down\",\n bindKey: bindKey(\"Ctrl-Down\", null),\n exec: function (e) { e.renderer.scrollBy(0, 2 * e.renderer.layerConfig.lineHeight); },\n readOnly: true\n }, {\n name: \"selectlinestart\",\n description: \"Select line start\",\n bindKey: \"Shift-Home\",\n exec: function (editor) { editor.getSelection().selectLineStart(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"selectlineend\",\n description: \"Select line end\",\n bindKey: \"Shift-End\",\n exec: function (editor) { editor.getSelection().selectLineEnd(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"togglerecording\",\n description: \"Toggle recording\",\n bindKey: bindKey(\"Ctrl-Alt-E\", \"Command-Option-E\"),\n exec: function (editor) { editor.commands.toggleRecording(editor); },\n readOnly: true\n }, {\n name: \"replaymacro\",\n description: \"Replay macro\",\n bindKey: bindKey(\"Ctrl-Shift-E\", \"Command-Shift-E\"),\n exec: function (editor) { editor.commands.replay(editor); },\n readOnly: true\n }, {\n name: \"jumptomatching\",\n description: \"Jump to matching\",\n bindKey: bindKey(\"Ctrl-\\\\|Ctrl-P\", \"Command-\\\\\"),\n exec: function (editor) { editor.jumpToMatching(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"animate\",\n readOnly: true\n }, {\n name: \"selecttomatching\",\n description: \"Select to matching\",\n bindKey: bindKey(\"Ctrl-Shift-\\\\|Ctrl-Shift-P\", \"Command-Shift-\\\\\"),\n exec: function (editor) { editor.jumpToMatching(true); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"animate\",\n readOnly: true\n }, {\n name: \"expandToMatching\",\n description: \"Expand to matching\",\n bindKey: bindKey(\"Ctrl-Shift-M\", \"Ctrl-Shift-M\"),\n exec: function (editor) { editor.jumpToMatching(true, true); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"animate\",\n readOnly: true\n }, {\n name: \"passKeysToBrowser\",\n description: \"Pass keys to browser\",\n bindKey: bindKey(null, null),\n exec: function () { },\n passEvent: true,\n readOnly: true\n }, {\n name: \"copy\",\n description: \"Copy\",\n exec: function (editor) {\n },\n readOnly: true\n },\n {\n name: \"cut\",\n description: \"Cut\",\n exec: function (editor) {\n var cutLine = editor.$copyWithEmptySelection && editor.selection.isEmpty();\n var range = cutLine ? editor.selection.getLineRange() : editor.selection.getRange();\n editor._emit(\"cut\", range);\n if (!range.isEmpty())\n editor.session.remove(range);\n editor.clearSelection();\n },\n scrollIntoView: \"cursor\",\n multiSelectAction: \"forEach\"\n }, {\n name: \"paste\",\n description: \"Paste\",\n exec: function (editor, args) {\n editor.$handlePaste(args);\n },\n scrollIntoView: \"cursor\"\n }, {\n name: \"removeline\",\n description: \"Remove line\",\n bindKey: bindKey(\"Ctrl-D\", \"Command-D\"),\n exec: function (editor) { editor.removeLines(); },\n scrollIntoView: \"cursor\",\n multiSelectAction: \"forEachLine\"\n }, {\n name: \"duplicateSelection\",\n description: \"Duplicate selection\",\n bindKey: bindKey(\"Ctrl-Shift-D\", \"Command-Shift-D\"),\n exec: function (editor) { editor.duplicateSelection(); },\n scrollIntoView: \"cursor\",\n multiSelectAction: \"forEach\"\n }, {\n name: \"sortlines\",\n description: \"Sort lines\",\n bindKey: bindKey(\"Ctrl-Alt-S\", \"Command-Alt-S\"),\n exec: function (editor) { editor.sortLines(); },\n scrollIntoView: \"selection\",\n multiSelectAction: \"forEachLine\"\n }, {\n name: \"togglecomment\",\n description: \"Toggle comment\",\n bindKey: bindKey(\"Ctrl-/\", \"Command-/\"),\n exec: function (editor) { editor.toggleCommentLines(); },\n multiSelectAction: \"forEachLine\",\n scrollIntoView: \"selectionPart\"\n }, {\n name: \"toggleBlockComment\",\n description: \"Toggle block comment\",\n bindKey: bindKey(\"Ctrl-Shift-/\", \"Command-Shift-/\"),\n exec: function (editor) { editor.toggleBlockComment(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"selectionPart\"\n }, {\n name: \"modifyNumberUp\",\n description: \"Modify number up\",\n bindKey: bindKey(\"Ctrl-Shift-Up\", \"Alt-Shift-Up\"),\n exec: function (editor) { editor.modifyNumber(1); },\n scrollIntoView: \"cursor\",\n multiSelectAction: \"forEach\"\n }, {\n name: \"modifyNumberDown\",\n description: \"Modify number down\",\n bindKey: bindKey(\"Ctrl-Shift-Down\", \"Alt-Shift-Down\"),\n exec: function (editor) { editor.modifyNumber(-1); },\n scrollIntoView: \"cursor\",\n multiSelectAction: \"forEach\"\n }, {\n name: \"replace\",\n description: \"Replace\",\n bindKey: bindKey(\"Ctrl-H\", \"Command-Option-F\"),\n exec: function (editor) {\n config.loadModule(\"ace/ext/searchbox\", function (e) { e.Search(editor, true); });\n }\n }, {\n name: \"undo\",\n description: \"Undo\",\n bindKey: bindKey(\"Ctrl-Z\", \"Command-Z\"),\n exec: function (editor) { editor.undo(); }\n }, {\n name: \"redo\",\n description: \"Redo\",\n bindKey: bindKey(\"Ctrl-Shift-Z|Ctrl-Y\", \"Command-Shift-Z|Command-Y\"),\n exec: function (editor) { editor.redo(); }\n }, {\n name: \"copylinesup\",\n description: \"Copy lines up\",\n bindKey: bindKey(\"Alt-Shift-Up\", \"Command-Option-Up\"),\n exec: function (editor) { editor.copyLinesUp(); },\n scrollIntoView: \"cursor\"\n }, {\n name: \"movelinesup\",\n description: \"Move lines up\",\n bindKey: bindKey(\"Alt-Up\", \"Option-Up\"),\n exec: function (editor) { editor.moveLinesUp(); },\n scrollIntoView: \"cursor\"\n }, {\n name: \"copylinesdown\",\n description: \"Copy lines down\",\n bindKey: bindKey(\"Alt-Shift-Down\", \"Command-Option-Down\"),\n exec: function (editor) { editor.copyLinesDown(); },\n scrollIntoView: \"cursor\"\n }, {\n name: \"movelinesdown\",\n description: \"Move lines down\",\n bindKey: bindKey(\"Alt-Down\", \"Option-Down\"),\n exec: function (editor) { editor.moveLinesDown(); },\n scrollIntoView: \"cursor\"\n }, {\n name: \"del\",\n description: \"Delete\",\n bindKey: bindKey(\"Delete\", \"Delete|Ctrl-D|Shift-Delete\"),\n exec: function (editor) { editor.remove(\"right\"); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"backspace\",\n description: \"Backspace\",\n bindKey: bindKey(\"Shift-Backspace|Backspace\", \"Ctrl-Backspace|Shift-Backspace|Backspace|Ctrl-H\"),\n exec: function (editor) { editor.remove(\"left\"); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"cut_or_delete\",\n description: \"Cut or delete\",\n bindKey: bindKey(\"Shift-Delete\", null),\n exec: function (editor) {\n if (editor.selection.isEmpty()) {\n editor.remove(\"left\");\n }\n else {\n return false;\n }\n },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"removetolinestart\",\n description: \"Remove to line start\",\n bindKey: bindKey(\"Alt-Backspace\", \"Command-Backspace\"),\n exec: function (editor) { editor.removeToLineStart(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"removetolineend\",\n description: \"Remove to line end\",\n bindKey: bindKey(\"Alt-Delete\", \"Ctrl-K|Command-Delete\"),\n exec: function (editor) { editor.removeToLineEnd(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"removetolinestarthard\",\n description: \"Remove to line start hard\",\n bindKey: bindKey(\"Ctrl-Shift-Backspace\", null),\n exec: function (editor) {\n var range = editor.selection.getRange();\n range.start.column = 0;\n editor.session.remove(range);\n },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"removetolineendhard\",\n description: \"Remove to line end hard\",\n bindKey: bindKey(\"Ctrl-Shift-Delete\", null),\n exec: function (editor) {\n var range = editor.selection.getRange();\n range.end.column = Number.MAX_VALUE;\n editor.session.remove(range);\n },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"removewordleft\",\n description: \"Remove word left\",\n bindKey: bindKey(\"Ctrl-Backspace\", \"Alt-Backspace|Ctrl-Alt-Backspace\"),\n exec: function (editor) { editor.removeWordLeft(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"removewordright\",\n description: \"Remove word right\",\n bindKey: bindKey(\"Ctrl-Delete\", \"Alt-Delete\"),\n exec: function (editor) { editor.removeWordRight(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"outdent\",\n description: \"Outdent\",\n bindKey: bindKey(\"Shift-Tab\", \"Shift-Tab\"),\n exec: function (editor) { editor.blockOutdent(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"selectionPart\"\n }, {\n name: \"indent\",\n description: \"Indent\",\n bindKey: bindKey(\"Tab\", \"Tab\"),\n exec: function (editor) { editor.indent(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"selectionPart\"\n }, {\n name: \"blockoutdent\",\n description: \"Block outdent\",\n bindKey: bindKey(\"Ctrl-[\", \"Ctrl-[\"),\n exec: function (editor) { editor.blockOutdent(); },\n multiSelectAction: \"forEachLine\",\n scrollIntoView: \"selectionPart\"\n }, {\n name: \"blockindent\",\n description: \"Block indent\",\n bindKey: bindKey(\"Ctrl-]\", \"Ctrl-]\"),\n exec: function (editor) { editor.blockIndent(); },\n multiSelectAction: \"forEachLine\",\n scrollIntoView: \"selectionPart\"\n }, {\n name: \"insertstring\",\n description: \"Insert string\",\n exec: function (editor, str) { editor.insert(str); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"inserttext\",\n description: \"Insert text\",\n exec: function (editor, args) {\n editor.insert(lang.stringRepeat(args.text || \"\", args.times || 1));\n },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"splitline\",\n description: \"Split line\",\n bindKey: bindKey(null, \"Ctrl-O\"),\n exec: function (editor) { editor.splitLine(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"transposeletters\",\n description: \"Transpose letters\",\n bindKey: bindKey(\"Alt-Shift-X\", \"Ctrl-T\"),\n exec: function (editor) { editor.transposeLetters(); },\n multiSelectAction: function (editor) { editor.transposeSelections(1); },\n scrollIntoView: \"cursor\"\n }, {\n name: \"touppercase\",\n description: \"To uppercase\",\n bindKey: bindKey(\"Ctrl-U\", \"Ctrl-U\"),\n exec: function (editor) { editor.toUpperCase(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"tolowercase\",\n description: \"To lowercase\",\n bindKey: bindKey(\"Ctrl-Shift-U\", \"Ctrl-Shift-U\"),\n exec: function (editor) { editor.toLowerCase(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"autoindent\",\n description: \"Auto Indent\",\n bindKey: bindKey(null, null),\n exec: function (editor) { editor.autoIndent(); },\n multiSelectAction: \"forEachLine\",\n scrollIntoView: \"animate\"\n }, {\n name: \"expandtoline\",\n description: \"Expand to line\",\n bindKey: bindKey(\"Ctrl-Shift-L\", \"Command-Shift-L\"),\n exec: function (editor) {\n var range = editor.selection.getRange();\n range.start.column = range.end.column = 0;\n range.end.row++;\n editor.selection.setRange(range, false);\n },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"openlink\",\n bindKey: bindKey(\"Ctrl+F3\", \"F3\"),\n exec: function (editor) { editor.openLink(); }\n }, {\n name: \"joinlines\",\n description: \"Join lines\",\n bindKey: bindKey(null, null),\n exec: function (editor) {\n var isBackwards = editor.selection.isBackwards();\n var selectionStart = isBackwards ? editor.selection.getSelectionLead() : editor.selection.getSelectionAnchor();\n var selectionEnd = isBackwards ? editor.selection.getSelectionAnchor() : editor.selection.getSelectionLead();\n var firstLineEndCol = editor.session.doc.getLine(selectionStart.row).length;\n var selectedText = editor.session.doc.getTextRange(editor.selection.getRange());\n var selectedCount = selectedText.replace(/\\n\\s*/, \" \").length;\n var insertLine = editor.session.doc.getLine(selectionStart.row);\n for (var i = selectionStart.row + 1; i <= selectionEnd.row + 1; i++) {\n var curLine = lang.stringTrimLeft(lang.stringTrimRight(editor.session.doc.getLine(i)));\n if (curLine.length !== 0) {\n curLine = \" \" + curLine;\n }\n insertLine += curLine;\n }\n if (selectionEnd.row + 1 < (editor.session.doc.getLength() - 1)) {\n insertLine += editor.session.doc.getNewLineCharacter();\n }\n editor.clearSelection();\n editor.session.doc.replace(new Range(selectionStart.row, 0, selectionEnd.row + 2, 0), insertLine);\n if (selectedCount > 0) {\n editor.selection.moveCursorTo(selectionStart.row, selectionStart.column);\n editor.selection.selectTo(selectionStart.row, selectionStart.column + selectedCount);\n }\n else {\n firstLineEndCol = editor.session.doc.getLine(selectionStart.row).length > firstLineEndCol ? (firstLineEndCol + 1) : firstLineEndCol;\n editor.selection.moveCursorTo(selectionStart.row, firstLineEndCol);\n }\n },\n multiSelectAction: \"forEach\",\n readOnly: true\n }, {\n name: \"invertSelection\",\n description: \"Invert selection\",\n bindKey: bindKey(null, null),\n exec: function (editor) {\n var endRow = editor.session.doc.getLength() - 1;\n var endCol = editor.session.doc.getLine(endRow).length;\n var ranges = editor.selection.rangeList.ranges;\n var newRanges = [];\n if (ranges.length < 1) {\n ranges = [editor.selection.getRange()];\n }\n for (var i = 0; i < ranges.length; i++) {\n if (i == (ranges.length - 1)) {\n if (!(ranges[i].end.row === endRow && ranges[i].end.column === endCol)) {\n newRanges.push(new Range(ranges[i].end.row, ranges[i].end.column, endRow, endCol));\n }\n }\n if (i === 0) {\n if (!(ranges[i].start.row === 0 && ranges[i].start.column === 0)) {\n newRanges.push(new Range(0, 0, ranges[i].start.row, ranges[i].start.column));\n }\n }\n else {\n newRanges.push(new Range(ranges[i - 1].end.row, ranges[i - 1].end.column, ranges[i].start.row, ranges[i].start.column));\n }\n }\n editor.exitMultiSelectMode();\n editor.clearSelection();\n for (var i = 0; i < newRanges.length; i++) {\n editor.selection.addRange(newRanges[i], false);\n }\n },\n readOnly: true,\n scrollIntoView: \"none\"\n }, {\n name: \"addLineAfter\",\n description: \"Add new line after the current line\",\n exec: function (editor) {\n editor.selection.clearSelection();\n editor.navigateLineEnd();\n editor.insert(\"\\n\");\n },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"addLineBefore\",\n description: \"Add new line before the current line\",\n exec: function (editor) {\n editor.selection.clearSelection();\n var cursor = editor.getCursorPosition();\n editor.selection.moveTo(cursor.row - 1, Number.MAX_VALUE);\n editor.insert(\"\\n\");\n if (cursor.row === 0)\n editor.navigateUp();\n },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"openCommandPallete\",\n exec: function (editor) {\n console.warn(\"This is an obsolete command. Please use `openCommandPalette` instead.\");\n editor.prompt({ $type: \"commands\" });\n },\n readOnly: true\n }, {\n name: \"openCommandPalette\",\n description: \"Open command palette\",\n bindKey: bindKey(\"F1\", \"F1\"),\n exec: function (editor) {\n editor.prompt({ $type: \"commands\" });\n },\n readOnly: true\n }, {\n name: \"modeSelect\",\n description: \"Change language mode...\",\n bindKey: bindKey(null, null),\n exec: function (editor) {\n editor.prompt({ $type: \"modes\" });\n },\n readOnly: true\n }];\nfor (var i = 1; i < 9; i++) {\n exports.commands.push({\n name: \"foldToLevel\" + i,\n description: \"Fold To Level \" + i,\n level: i,\n exec: function (editor) { editor.session.foldToLevel(this.level); },\n scrollIntoView: \"center\",\n readOnly: true\n });\n}\n\n});\n\nace.define(\"ace/line_widgets\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"], function(require, exports, module){\"use strict\";\nvar dom = require(\"./lib/dom\");\nvar LineWidgets = /** @class */ (function () {\n function LineWidgets(session) {\n this.session = session;\n this.session.widgetManager = this;\n this.session.getRowLength = this.getRowLength;\n this.session.$getWidgetScreenLength = this.$getWidgetScreenLength;\n this.updateOnChange = this.updateOnChange.bind(this);\n this.renderWidgets = this.renderWidgets.bind(this);\n this.measureWidgets = this.measureWidgets.bind(this);\n this.session._changedWidgets = [];\n this.$onChangeEditor = this.$onChangeEditor.bind(this);\n this.session.on(\"change\", this.updateOnChange);\n this.session.on(\"changeFold\", this.updateOnFold);\n this.session.on(\"changeEditor\", this.$onChangeEditor);\n }\n LineWidgets.prototype.getRowLength = function (row) {\n var h;\n if (this.lineWidgets)\n h = this.lineWidgets[row] && this.lineWidgets[row].rowCount || 0;\n else\n h = 0;\n if (!this.$useWrapMode || !this.$wrapData[row]) {\n return 1 + h;\n }\n else {\n return this.$wrapData[row].length + 1 + h;\n }\n };\n LineWidgets.prototype.$getWidgetScreenLength = function () {\n var screenRows = 0;\n this.lineWidgets.forEach(function (w) {\n if (w && w.rowCount && !w.hidden)\n screenRows += w.rowCount;\n });\n return screenRows;\n };\n LineWidgets.prototype.$onChangeEditor = function (e) {\n this.attach(e.editor);\n };\n LineWidgets.prototype.attach = function (editor) {\n if (editor && editor.widgetManager && editor.widgetManager != this)\n editor.widgetManager.detach();\n if (this.editor == editor)\n return;\n this.detach();\n this.editor = editor;\n if (editor) {\n editor.widgetManager = this;\n editor.renderer.on(\"beforeRender\", this.measureWidgets);\n editor.renderer.on(\"afterRender\", this.renderWidgets);\n }\n };\n LineWidgets.prototype.detach = function (e) {\n var editor = this.editor;\n if (!editor)\n return;\n this.editor = null;\n editor.widgetManager = null;\n editor.renderer.off(\"beforeRender\", this.measureWidgets);\n editor.renderer.off(\"afterRender\", this.renderWidgets);\n var lineWidgets = this.session.lineWidgets;\n lineWidgets && lineWidgets.forEach(function (w) {\n if (w && w.el && w.el.parentNode) {\n w._inDocument = false;\n w.el.parentNode.removeChild(w.el);\n }\n });\n };\n LineWidgets.prototype.updateOnFold = function (e, session) {\n var lineWidgets = session.lineWidgets;\n if (!lineWidgets || !e.action)\n return;\n var fold = e.data;\n var start = fold.start.row;\n var end = fold.end.row;\n var hide = e.action == \"add\";\n for (var i = start + 1; i < end; i++) {\n if (lineWidgets[i])\n lineWidgets[i].hidden = hide;\n }\n if (lineWidgets[end]) {\n if (hide) {\n if (!lineWidgets[start])\n lineWidgets[start] = lineWidgets[end];\n else\n lineWidgets[end].hidden = hide;\n }\n else {\n if (lineWidgets[start] == lineWidgets[end])\n lineWidgets[start] = undefined;\n lineWidgets[end].hidden = hide;\n }\n }\n };\n LineWidgets.prototype.updateOnChange = function (delta) {\n var lineWidgets = this.session.lineWidgets;\n if (!lineWidgets)\n return;\n var startRow = delta.start.row;\n var len = delta.end.row - startRow;\n if (len === 0) {\n }\n else if (delta.action == \"remove\") {\n var removed = lineWidgets.splice(startRow + 1, len);\n if (!lineWidgets[startRow] && removed[removed.length - 1]) {\n lineWidgets[startRow] = removed.pop();\n }\n removed.forEach(function (w) {\n w && this.removeLineWidget(w);\n }, this);\n this.$updateRows();\n }\n else {\n var args = new Array(len);\n if (lineWidgets[startRow] && lineWidgets[startRow].column != null) {\n if (delta.start.column > lineWidgets[startRow].column)\n startRow++;\n }\n args.unshift(startRow, 0);\n lineWidgets.splice.apply(lineWidgets, args);\n this.$updateRows();\n }\n };\n LineWidgets.prototype.$updateRows = function () {\n var lineWidgets = this.session.lineWidgets;\n if (!lineWidgets)\n return;\n var noWidgets = true;\n lineWidgets.forEach(function (w, i) {\n if (w) {\n noWidgets = false;\n w.row = i;\n while (w.$oldWidget) {\n w.$oldWidget.row = i;\n w = w.$oldWidget;\n }\n }\n });\n if (noWidgets)\n this.session.lineWidgets = null;\n };\n LineWidgets.prototype.$registerLineWidget = function (w) {\n if (!this.session.lineWidgets)\n this.session.lineWidgets = new Array(this.session.getLength());\n var old = this.session.lineWidgets[w.row];\n if (old) {\n w.$oldWidget = old;\n if (old.el && old.el.parentNode) {\n old.el.parentNode.removeChild(old.el);\n old._inDocument = false;\n }\n }\n this.session.lineWidgets[w.row] = w;\n return w;\n };\n LineWidgets.prototype.addLineWidget = function (w) {\n this.$registerLineWidget(w);\n w.session = this.session;\n if (!this.editor)\n return w;\n var renderer = this.editor.renderer;\n if (w.html && !w.el) {\n w.el = dom.createElement(\"div\");\n w.el.innerHTML = w.html;\n }\n if (w.text && !w.el) {\n w.el = dom.createElement(\"div\");\n w.el.textContent = w.text;\n }\n if (w.el) {\n dom.addCssClass(w.el, \"ace_lineWidgetContainer\");\n if (w.className) {\n dom.addCssClass(w.el, w.className);\n }\n w.el.style.position = \"absolute\";\n w.el.style.zIndex = 5;\n renderer.container.appendChild(w.el);\n w._inDocument = true;\n if (!w.coverGutter) {\n w.el.style.zIndex = 3;\n }\n if (w.pixelHeight == null) {\n w.pixelHeight = w.el.offsetHeight;\n }\n }\n if (w.rowCount == null) {\n w.rowCount = w.pixelHeight / renderer.layerConfig.lineHeight;\n }\n var fold = this.session.getFoldAt(w.row, 0);\n w.$fold = fold;\n if (fold) {\n var lineWidgets = this.session.lineWidgets;\n if (w.row == fold.end.row && !lineWidgets[fold.start.row])\n lineWidgets[fold.start.row] = w;\n else\n w.hidden = true;\n }\n this.session._emit(\"changeFold\", { data: { start: { row: w.row } } });\n this.$updateRows();\n this.renderWidgets(null, renderer);\n this.onWidgetChanged(w);\n return w;\n };\n LineWidgets.prototype.removeLineWidget = function (w) {\n w._inDocument = false;\n w.session = null;\n if (w.el && w.el.parentNode)\n w.el.parentNode.removeChild(w.el);\n if (w.editor && w.editor.destroy)\n try {\n w.editor.destroy();\n }\n catch (e) { }\n if (this.session.lineWidgets) {\n var w1 = this.session.lineWidgets[w.row];\n if (w1 == w) {\n this.session.lineWidgets[w.row] = w.$oldWidget;\n if (w.$oldWidget)\n this.onWidgetChanged(w.$oldWidget);\n }\n else {\n while (w1) {\n if (w1.$oldWidget == w) {\n w1.$oldWidget = w.$oldWidget;\n break;\n }\n w1 = w1.$oldWidget;\n }\n }\n }\n this.session._emit(\"changeFold\", { data: { start: { row: w.row } } });\n this.$updateRows();\n };\n LineWidgets.prototype.getWidgetsAtRow = function (row) {\n var lineWidgets = this.session.lineWidgets;\n var w = lineWidgets && lineWidgets[row];\n var list = [];\n while (w) {\n list.push(w);\n w = w.$oldWidget;\n }\n return list;\n };\n LineWidgets.prototype.onWidgetChanged = function (w) {\n this.session._changedWidgets.push(w);\n this.editor && this.editor.renderer.updateFull();\n };\n LineWidgets.prototype.measureWidgets = function (e, renderer) {\n var changedWidgets = this.session._changedWidgets;\n var config = renderer.layerConfig;\n if (!changedWidgets || !changedWidgets.length)\n return;\n var min = Infinity;\n for (var i = 0; i < changedWidgets.length; i++) {\n var w = changedWidgets[i];\n if (!w || !w.el)\n continue;\n if (w.session != this.session)\n continue;\n if (!w._inDocument) {\n if (this.session.lineWidgets[w.row] != w)\n continue;\n w._inDocument = true;\n renderer.container.appendChild(w.el);\n }\n w.h = w.el.offsetHeight;\n if (!w.fixedWidth) {\n w.w = w.el.offsetWidth;\n w.screenWidth = Math.ceil(w.w / config.characterWidth);\n }\n var rowCount = w.h / config.lineHeight;\n if (w.coverLine) {\n rowCount -= this.session.getRowLineCount(w.row);\n if (rowCount < 0)\n rowCount = 0;\n }\n if (w.rowCount != rowCount) {\n w.rowCount = rowCount;\n if (w.row < min)\n min = w.row;\n }\n }\n if (min != Infinity) {\n this.session._emit(\"changeFold\", { data: { start: { row: min } } });\n this.session.lineWidgetWidth = null;\n }\n this.session._changedWidgets = [];\n };\n LineWidgets.prototype.renderWidgets = function (e, renderer) {\n var config = renderer.layerConfig;\n var lineWidgets = this.session.lineWidgets;\n if (!lineWidgets)\n return;\n var first = Math.min(this.firstRow, config.firstRow);\n var last = Math.max(this.lastRow, config.lastRow, lineWidgets.length);\n while (first > 0 && !lineWidgets[first])\n first--;\n this.firstRow = config.firstRow;\n this.lastRow = config.lastRow;\n renderer.$cursorLayer.config = config;\n for (var i = first; i <= last; i++) {\n var w = lineWidgets[i];\n if (!w || !w.el)\n continue;\n if (w.hidden) {\n w.el.style.top = -100 - (w.pixelHeight || 0) + \"px\";\n continue;\n }\n if (!w._inDocument) {\n w._inDocument = true;\n renderer.container.appendChild(w.el);\n }\n var top = renderer.$cursorLayer.getPixelPosition({ row: i, column: 0 }, true).top;\n if (!w.coverLine)\n top += config.lineHeight * this.session.getRowLineCount(w.row);\n w.el.style.top = top - config.offset + \"px\";\n var left = w.coverGutter ? 0 : renderer.gutterWidth;\n if (!w.fixedWidth)\n left -= renderer.scrollLeft;\n w.el.style.left = left + \"px\";\n if (w.fullWidth && w.screenWidth) {\n w.el.style.minWidth = config.width + 2 * config.padding + \"px\";\n }\n if (w.fixedWidth) {\n w.el.style.right = renderer.scrollBar.getWidth() + \"px\";\n }\n else {\n w.el.style.right = \"\";\n }\n }\n };\n return LineWidgets;\n}());\nexports.LineWidgets = LineWidgets;\n\n});\n\nace.define(\"ace/keyboard/gutter_handler\",[\"require\",\"exports\",\"module\",\"ace/lib/keys\",\"ace/mouse/default_gutter_handler\"], function(require, exports, module){\"use strict\";\nvar keys = require('../lib/keys');\nvar GutterTooltip = require(\"../mouse/default_gutter_handler\").GutterTooltip;\nvar GutterKeyboardHandler = /** @class */ (function () {\n function GutterKeyboardHandler(editor) {\n this.editor = editor;\n this.gutterLayer = editor.renderer.$gutterLayer;\n this.element = editor.renderer.$gutter;\n this.lines = editor.renderer.$gutterLayer.$lines;\n this.activeRowIndex = null;\n this.activeLane = null;\n this.annotationTooltip = new GutterTooltip(this.editor);\n }\n GutterKeyboardHandler.prototype.addListener = function () {\n this.element.addEventListener(\"keydown\", this.$onGutterKeyDown.bind(this));\n this.element.addEventListener(\"focusout\", this.$blurGutter.bind(this));\n this.editor.on(\"mousewheel\", this.$blurGutter.bind(this));\n };\n GutterKeyboardHandler.prototype.removeListener = function () {\n this.element.removeEventListener(\"keydown\", this.$onGutterKeyDown.bind(this));\n this.element.removeEventListener(\"focusout\", this.$blurGutter.bind(this));\n this.editor.off(\"mousewheel\", this.$blurGutter.bind(this));\n };\n GutterKeyboardHandler.prototype.$onGutterKeyDown = function (e) {\n if (this.annotationTooltip.isOpen) {\n e.preventDefault();\n if (e.keyCode === keys[\"escape\"])\n this.annotationTooltip.hideTooltip();\n return;\n }\n if (e.target === this.element) {\n if (e.keyCode != keys[\"enter\"]) {\n return;\n }\n e.preventDefault();\n var row = this.editor.getCursorPosition().row;\n if (!this.editor.isRowVisible(row))\n this.editor.scrollToLine(row, true, true);\n setTimeout(function () {\n var index = this.$rowToRowIndex(this.gutterLayer.$cursorCell.row);\n var nearestFoldIndex = this.$findNearestFoldWidget(index);\n var nearestAnnotationIndex = this.$findNearestAnnotation(index);\n if (nearestFoldIndex === null && nearestAnnotationIndex === null)\n return;\n if (nearestFoldIndex === null && nearestAnnotationIndex !== null) {\n this.activeRowIndex = nearestAnnotationIndex;\n this.activeLane = \"annotation\";\n this.$focusAnnotation(this.activeRowIndex);\n return;\n }\n if (nearestFoldIndex !== null && nearestAnnotationIndex === null) {\n this.activeRowIndex = nearestFoldIndex;\n this.activeLane = \"fold\";\n this.$focusFoldWidget(this.activeRowIndex);\n return;\n }\n if (Math.abs(nearestAnnotationIndex - index) < Math.abs(nearestFoldIndex - index)) {\n this.activeRowIndex = nearestAnnotationIndex;\n this.activeLane = \"annotation\";\n this.$focusAnnotation(this.activeRowIndex);\n return;\n }\n else {\n this.activeRowIndex = nearestFoldIndex;\n this.activeLane = \"fold\";\n this.$focusFoldWidget(this.activeRowIndex);\n return;\n }\n }.bind(this), 10);\n return;\n }\n this.$handleGutterKeyboardInteraction(e);\n setTimeout(function () {\n this.editor._signal(\"gutterkeydown\", new GutterKeyboardEvent(e, this));\n }.bind(this), 10);\n };\n GutterKeyboardHandler.prototype.$handleGutterKeyboardInteraction = function (e) {\n if (e.keyCode === keys[\"tab\"]) {\n e.preventDefault();\n return;\n }\n if (e.keyCode === keys[\"escape\"]) {\n e.preventDefault();\n this.$blurGutter();\n this.element.focus();\n this.lane = null;\n return;\n }\n if (e.keyCode === keys[\"up\"]) {\n e.preventDefault();\n switch (this.activeLane) {\n case \"fold\":\n this.$moveFoldWidgetUp();\n break;\n case \"annotation\":\n this.$moveAnnotationUp();\n break;\n }\n return;\n }\n if (e.keyCode === keys[\"down\"]) {\n e.preventDefault();\n switch (this.activeLane) {\n case \"fold\":\n this.$moveFoldWidgetDown();\n break;\n case \"annotation\":\n this.$moveAnnotationDown();\n break;\n }\n return;\n }\n if (e.keyCode === keys[\"left\"]) {\n e.preventDefault();\n this.$switchLane(\"annotation\");\n return;\n }\n if (e.keyCode === keys[\"right\"]) {\n e.preventDefault();\n this.$switchLane(\"fold\");\n return;\n }\n if (e.keyCode === keys[\"enter\"] || e.keyCode === keys[\"space\"]) {\n e.preventDefault();\n switch (this.activeLane) {\n case \"fold\":\n if (this.gutterLayer.session.foldWidgets[this.$rowIndexToRow(this.activeRowIndex)] === 'start') {\n var rowFoldingWidget = this.$rowIndexToRow(this.activeRowIndex);\n this.editor.session.onFoldWidgetClick(this.$rowIndexToRow(this.activeRowIndex), e);\n setTimeout(function () {\n if (this.$rowIndexToRow(this.activeRowIndex) !== rowFoldingWidget) {\n this.$blurFoldWidget(this.activeRowIndex);\n this.activeRowIndex = this.$rowToRowIndex(rowFoldingWidget);\n this.$focusFoldWidget(this.activeRowIndex);\n }\n }.bind(this), 10);\n break;\n }\n else if (this.gutterLayer.session.foldWidgets[this.$rowIndexToRow(this.activeRowIndex)] === 'end') {\n break;\n }\n return;\n case \"annotation\":\n var gutterElement = this.lines.cells[this.activeRowIndex].element.childNodes[2];\n var rect = gutterElement.getBoundingClientRect();\n var style = this.annotationTooltip.getElement().style;\n style.left = rect.right + \"px\";\n style.top = rect.bottom + \"px\";\n this.annotationTooltip.showTooltip(this.$rowIndexToRow(this.activeRowIndex));\n break;\n }\n return;\n }\n };\n GutterKeyboardHandler.prototype.$blurGutter = function () {\n if (this.activeRowIndex !== null) {\n switch (this.activeLane) {\n case \"fold\":\n this.$blurFoldWidget(this.activeRowIndex);\n break;\n case \"annotation\":\n this.$blurAnnotation(this.activeRowIndex);\n break;\n }\n }\n if (this.annotationTooltip.isOpen)\n this.annotationTooltip.hideTooltip();\n return;\n };\n GutterKeyboardHandler.prototype.$isFoldWidgetVisible = function (index) {\n var isRowFullyVisible = this.editor.isRowFullyVisible(this.$rowIndexToRow(index));\n var isIconVisible = this.$getFoldWidget(index).style.display !== \"none\";\n return isRowFullyVisible && isIconVisible;\n };\n GutterKeyboardHandler.prototype.$isAnnotationVisible = function (index) {\n var isRowFullyVisible = this.editor.isRowFullyVisible(this.$rowIndexToRow(index));\n var isIconVisible = this.$getAnnotation(index).style.display !== \"none\";\n return isRowFullyVisible && isIconVisible;\n };\n GutterKeyboardHandler.prototype.$getFoldWidget = function (index) {\n var cell = this.lines.get(index);\n var element = cell.element;\n return element.childNodes[1];\n };\n GutterKeyboardHandler.prototype.$getAnnotation = function (index) {\n var cell = this.lines.get(index);\n var element = cell.element;\n return element.childNodes[2];\n };\n GutterKeyboardHandler.prototype.$findNearestFoldWidget = function (index) {\n if (this.$isFoldWidgetVisible(index))\n return index;\n var i = 0;\n while (index - i > 0 || index + i < this.lines.getLength() - 1) {\n i++;\n if (index - i >= 0 && this.$isFoldWidgetVisible(index - i))\n return index - i;\n if (index + i <= this.lines.getLength() - 1 && this.$isFoldWidgetVisible(index + i))\n return index + i;\n }\n return null;\n };\n GutterKeyboardHandler.prototype.$findNearestAnnotation = function (index) {\n if (this.$isAnnotationVisible(index))\n return index;\n var i = 0;\n while (index - i > 0 || index + i < this.lines.getLength() - 1) {\n i++;\n if (index - i >= 0 && this.$isAnnotationVisible(index - i))\n return index - i;\n if (index + i <= this.lines.getLength() - 1 && this.$isAnnotationVisible(index + i))\n return index + i;\n }\n return null;\n };\n GutterKeyboardHandler.prototype.$focusFoldWidget = function (index) {\n if (index == null)\n return;\n var foldWidget = this.$getFoldWidget(index);\n foldWidget.classList.add(this.editor.renderer.keyboardFocusClassName);\n foldWidget.focus();\n };\n GutterKeyboardHandler.prototype.$focusAnnotation = function (index) {\n if (index == null)\n return;\n var annotation = this.$getAnnotation(index);\n annotation.classList.add(this.editor.renderer.keyboardFocusClassName);\n annotation.focus();\n };\n GutterKeyboardHandler.prototype.$blurFoldWidget = function (index) {\n var foldWidget = this.$getFoldWidget(index);\n foldWidget.classList.remove(this.editor.renderer.keyboardFocusClassName);\n foldWidget.blur();\n };\n GutterKeyboardHandler.prototype.$blurAnnotation = function (index) {\n var annotation = this.$getAnnotation(index);\n annotation.classList.remove(this.editor.renderer.keyboardFocusClassName);\n annotation.blur();\n };\n GutterKeyboardHandler.prototype.$moveFoldWidgetUp = function () {\n var index = this.activeRowIndex;\n while (index > 0) {\n index--;\n if (this.$isFoldWidgetVisible(index)) {\n this.$blurFoldWidget(this.activeRowIndex);\n this.activeRowIndex = index;\n this.$focusFoldWidget(this.activeRowIndex);\n return;\n }\n }\n return;\n };\n GutterKeyboardHandler.prototype.$moveFoldWidgetDown = function () {\n var index = this.activeRowIndex;\n while (index < this.lines.getLength() - 1) {\n index++;\n if (this.$isFoldWidgetVisible(index)) {\n this.$blurFoldWidget(this.activeRowIndex);\n this.activeRowIndex = index;\n this.$focusFoldWidget(this.activeRowIndex);\n return;\n }\n }\n return;\n };\n GutterKeyboardHandler.prototype.$moveAnnotationUp = function () {\n var index = this.activeRowIndex;\n while (index > 0) {\n index--;\n if (this.$isAnnotationVisible(index)) {\n this.$blurAnnotation(this.activeRowIndex);\n this.activeRowIndex = index;\n this.$focusAnnotation(this.activeRowIndex);\n return;\n }\n }\n return;\n };\n GutterKeyboardHandler.prototype.$moveAnnotationDown = function () {\n var index = this.activeRowIndex;\n while (index < this.lines.getLength() - 1) {\n index++;\n if (this.$isAnnotationVisible(index)) {\n this.$blurAnnotation(this.activeRowIndex);\n this.activeRowIndex = index;\n this.$focusAnnotation(this.activeRowIndex);\n return;\n }\n }\n return;\n };\n GutterKeyboardHandler.prototype.$switchLane = function (desinationLane) {\n switch (desinationLane) {\n case \"annotation\":\n if (this.activeLane === \"annotation\") {\n break;\n }\n var annotationIndex = this.$findNearestAnnotation(this.activeRowIndex);\n if (annotationIndex == null) {\n break;\n }\n this.activeLane = \"annotation\";\n this.$blurFoldWidget(this.activeRowIndex);\n this.activeRowIndex = annotationIndex;\n this.$focusAnnotation(this.activeRowIndex);\n break;\n case \"fold\":\n if (this.activeLane === \"fold\") {\n break;\n }\n var foldWidgetIndex = this.$findNearestFoldWidget(this.activeRowIndex);\n if (foldWidgetIndex == null) {\n break;\n }\n this.activeLane = \"fold\";\n this.$blurAnnotation(this.activeRowIndex);\n this.activeRowIndex = foldWidgetIndex;\n this.$focusFoldWidget(this.activeRowIndex);\n break;\n }\n return;\n };\n GutterKeyboardHandler.prototype.$rowIndexToRow = function (index) {\n var cell = this.lines.get(index);\n if (cell)\n return cell.row;\n return null;\n };\n GutterKeyboardHandler.prototype.$rowToRowIndex = function (row) {\n for (var i = 0; i < this.lines.getLength(); i++) {\n var cell = this.lines.get(i);\n if (cell.row == row)\n return i;\n }\n return null;\n };\n return GutterKeyboardHandler;\n}());\nexports.GutterKeyboardHandler = GutterKeyboardHandler;\nvar GutterKeyboardEvent = /** @class */ (function () {\n function GutterKeyboardEvent(domEvent, gutterKeyboardHandler) {\n this.gutterKeyboardHandler = gutterKeyboardHandler;\n this.domEvent = domEvent;\n }\n GutterKeyboardEvent.prototype.getKey = function () {\n return keys.keyCodeToString(this.domEvent.keyCode);\n };\n GutterKeyboardEvent.prototype.getRow = function () {\n return this.gutterKeyboardHandler.$rowIndexToRow(this.gutterKeyboardHandler.activeRowIndex);\n };\n GutterKeyboardEvent.prototype.isInAnnotationLane = function () {\n return this.gutterKeyboardHandler.activeLane === \"annotation\";\n };\n GutterKeyboardEvent.prototype.isInFoldLane = function () {\n return this.gutterKeyboardHandler.activeLane === \"fold\";\n };\n return GutterKeyboardEvent;\n}());\nexports.GutterKeyboardEvent = GutterKeyboardEvent;\n\n});\n\nace.define(\"ace/editor\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/dom\",\"ace/lib/lang\",\"ace/lib/useragent\",\"ace/keyboard/textinput\",\"ace/mouse/mouse_handler\",\"ace/mouse/fold_handler\",\"ace/keyboard/keybinding\",\"ace/edit_session\",\"ace/search\",\"ace/range\",\"ace/lib/event_emitter\",\"ace/commands/command_manager\",\"ace/commands/default_commands\",\"ace/config\",\"ace/token_iterator\",\"ace/line_widgets\",\"ace/keyboard/gutter_handler\",\"ace/config\",\"ace/clipboard\",\"ace/lib/keys\"], function(require, exports, module){\"use strict\";\nvar __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar oop = require(\"./lib/oop\");\nvar dom = require(\"./lib/dom\");\nvar lang = require(\"./lib/lang\");\nvar useragent = require(\"./lib/useragent\");\nvar TextInput = require(\"./keyboard/textinput\").TextInput;\nvar MouseHandler = require(\"./mouse/mouse_handler\").MouseHandler;\nvar FoldHandler = require(\"./mouse/fold_handler\").FoldHandler;\nvar KeyBinding = require(\"./keyboard/keybinding\").KeyBinding;\nvar EditSession = require(\"./edit_session\").EditSession;\nvar Search = require(\"./search\").Search;\nvar Range = require(\"./range\").Range;\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar CommandManager = require(\"./commands/command_manager\").CommandManager;\nvar defaultCommands = require(\"./commands/default_commands\").commands;\nvar config = require(\"./config\");\nvar TokenIterator = require(\"./token_iterator\").TokenIterator;\nvar LineWidgets = require(\"./line_widgets\").LineWidgets;\nvar GutterKeyboardHandler = require(\"./keyboard/gutter_handler\").GutterKeyboardHandler;\nvar nls = require(\"./config\").nls;\nvar clipboard = require(\"./clipboard\");\nvar keys = require('./lib/keys');\nvar Editor = /** @class */ (function () {\n function Editor(renderer, session, options) {\n this.$toDestroy = [];\n var container = renderer.getContainerElement();\n this.container = container;\n this.renderer = renderer;\n this.id = \"editor\" + (++Editor.$uid);\n this.commands = new CommandManager(useragent.isMac ? \"mac\" : \"win\", defaultCommands);\n if (typeof document == \"object\") {\n this.textInput = new TextInput(renderer.getTextAreaContainer(), this);\n this.renderer.textarea = this.textInput.getElement();\n this.$mouseHandler = new MouseHandler(this);\n new FoldHandler(this);\n }\n this.keyBinding = new KeyBinding(this);\n this.$search = new Search().set({\n wrap: true\n });\n this.$historyTracker = this.$historyTracker.bind(this);\n this.commands.on(\"exec\", this.$historyTracker);\n this.$initOperationListeners();\n this._$emitInputEvent = lang.delayedCall(function () {\n this._signal(\"input\", {});\n if (this.session && !this.session.destroyed)\n this.session.bgTokenizer.scheduleStart();\n }.bind(this));\n this.on(\"change\", function (_, _self) {\n _self._$emitInputEvent.schedule(31);\n });\n this.setSession(session || options && options.session || new EditSession(\"\"));\n config.resetOptions(this);\n if (options)\n this.setOptions(options);\n config._signal(\"editor\", this);\n }\n Editor.prototype.$initOperationListeners = function () {\n this.commands.on(\"exec\", this.startOperation.bind(this), true);\n this.commands.on(\"afterExec\", this.endOperation.bind(this), true);\n this.$opResetTimer = lang.delayedCall(this.endOperation.bind(this, true));\n this.on(\"change\", function () {\n if (!this.curOp) {\n this.startOperation();\n this.curOp.selectionBefore = this.$lastSel;\n }\n this.curOp.docChanged = true;\n }.bind(this), true);\n this.on(\"changeSelection\", function () {\n if (!this.curOp) {\n this.startOperation();\n this.curOp.selectionBefore = this.$lastSel;\n }\n this.curOp.selectionChanged = true;\n }.bind(this), true);\n };\n Editor.prototype.startOperation = function (commandEvent) {\n if (this.curOp) {\n if (!commandEvent || this.curOp.command)\n return;\n this.prevOp = this.curOp;\n }\n if (!commandEvent) {\n this.previousCommand = null;\n commandEvent = {};\n }\n this.$opResetTimer.schedule();\n this.curOp = this.session.curOp = {\n command: commandEvent.command || {},\n args: commandEvent.args,\n scrollTop: this.renderer.scrollTop\n };\n this.curOp.selectionBefore = this.selection.toJSON();\n };\n Editor.prototype.endOperation = function (e) {\n if (this.curOp && this.session) {\n if (e && e.returnValue === false || !this.session)\n return (this.curOp = null);\n if (e == true && this.curOp.command && this.curOp.command.name == \"mouse\")\n return;\n this._signal(\"beforeEndOperation\");\n if (!this.curOp)\n return;\n var command = this.curOp.command;\n var scrollIntoView = command && command.scrollIntoView;\n if (scrollIntoView) {\n switch (scrollIntoView) {\n case \"center-animate\":\n scrollIntoView = \"animate\";\n case \"center\":\n this.renderer.scrollCursorIntoView(null, 0.5);\n break;\n case \"animate\":\n case \"cursor\":\n this.renderer.scrollCursorIntoView();\n break;\n case \"selectionPart\":\n var range = this.selection.getRange();\n var config = this.renderer.layerConfig;\n if (range.start.row >= config.lastRow || range.end.row <= config.firstRow) {\n this.renderer.scrollSelectionIntoView(this.selection.anchor, this.selection.lead);\n }\n break;\n default:\n break;\n }\n if (scrollIntoView == \"animate\")\n this.renderer.animateScrolling(this.curOp.scrollTop);\n }\n var sel = this.selection.toJSON();\n this.curOp.selectionAfter = sel;\n this.$lastSel = this.selection.toJSON();\n this.session.getUndoManager().addSelection(sel);\n this.prevOp = this.curOp;\n this.curOp = null;\n }\n };\n Editor.prototype.$historyTracker = function (e) {\n if (!this.$mergeUndoDeltas)\n return;\n var prev = this.prevOp;\n var mergeableCommands = this.$mergeableCommands;\n var shouldMerge = prev.command && (e.command.name == prev.command.name);\n if (e.command.name == \"insertstring\") {\n var text = e.args;\n if (this.mergeNextCommand === undefined)\n this.mergeNextCommand = true;\n shouldMerge = shouldMerge\n && this.mergeNextCommand // previous command allows to coalesce with\n && (!/\\s/.test(text) || /\\s/.test(prev.args)); // previous insertion was of same type\n this.mergeNextCommand = true;\n }\n else {\n shouldMerge = shouldMerge\n && mergeableCommands.indexOf(e.command.name) !== -1; // the command is mergeable\n }\n if (this.$mergeUndoDeltas != \"always\"\n && Date.now() - this.sequenceStartTime > 2000) {\n shouldMerge = false; // the sequence is too long\n }\n if (shouldMerge)\n this.session.mergeUndoDeltas = true;\n else if (mergeableCommands.indexOf(e.command.name) !== -1)\n this.sequenceStartTime = Date.now();\n };\n Editor.prototype.setKeyboardHandler = function (keyboardHandler, cb) {\n if (keyboardHandler && typeof keyboardHandler === \"string\" && keyboardHandler != \"ace\") {\n this.$keybindingId = keyboardHandler;\n var _self = this;\n config.loadModule([\"keybinding\", keyboardHandler], function (module) {\n if (_self.$keybindingId == keyboardHandler)\n _self.keyBinding.setKeyboardHandler(module && module.handler);\n cb && cb();\n });\n }\n else {\n this.$keybindingId = null;\n this.keyBinding.setKeyboardHandler(keyboardHandler);\n cb && cb();\n }\n };\n Editor.prototype.getKeyboardHandler = function () {\n return this.keyBinding.getKeyboardHandler();\n };\n Editor.prototype.setSession = function (session) {\n if (this.session == session)\n return;\n if (this.curOp)\n this.endOperation();\n this.curOp = {};\n var oldSession = this.session;\n if (oldSession) {\n this.session.off(\"change\", this.$onDocumentChange);\n this.session.off(\"changeMode\", this.$onChangeMode);\n this.session.off(\"tokenizerUpdate\", this.$onTokenizerUpdate);\n this.session.off(\"changeTabSize\", this.$onChangeTabSize);\n this.session.off(\"changeWrapLimit\", this.$onChangeWrapLimit);\n this.session.off(\"changeWrapMode\", this.$onChangeWrapMode);\n this.session.off(\"changeFold\", this.$onChangeFold);\n this.session.off(\"changeFrontMarker\", this.$onChangeFrontMarker);\n this.session.off(\"changeBackMarker\", this.$onChangeBackMarker);\n this.session.off(\"changeBreakpoint\", this.$onChangeBreakpoint);\n this.session.off(\"changeAnnotation\", this.$onChangeAnnotation);\n this.session.off(\"changeOverwrite\", this.$onCursorChange);\n this.session.off(\"changeScrollTop\", this.$onScrollTopChange);\n this.session.off(\"changeScrollLeft\", this.$onScrollLeftChange);\n var selection = this.session.getSelection();\n selection.off(\"changeCursor\", this.$onCursorChange);\n selection.off(\"changeSelection\", this.$onSelectionChange);\n }\n this.session = session;\n if (session) {\n this.$onDocumentChange = this.onDocumentChange.bind(this);\n session.on(\"change\", this.$onDocumentChange);\n this.renderer.setSession(session);\n this.$onChangeMode = this.onChangeMode.bind(this);\n session.on(\"changeMode\", this.$onChangeMode);\n this.$onTokenizerUpdate = this.onTokenizerUpdate.bind(this);\n session.on(\"tokenizerUpdate\", this.$onTokenizerUpdate);\n this.$onChangeTabSize = this.renderer.onChangeTabSize.bind(this.renderer);\n session.on(\"changeTabSize\", this.$onChangeTabSize);\n this.$onChangeWrapLimit = this.onChangeWrapLimit.bind(this);\n session.on(\"changeWrapLimit\", this.$onChangeWrapLimit);\n this.$onChangeWrapMode = this.onChangeWrapMode.bind(this);\n session.on(\"changeWrapMode\", this.$onChangeWrapMode);\n this.$onChangeFold = this.onChangeFold.bind(this);\n session.on(\"changeFold\", this.$onChangeFold);\n this.$onChangeFrontMarker = this.onChangeFrontMarker.bind(this);\n this.session.on(\"changeFrontMarker\", this.$onChangeFrontMarker);\n this.$onChangeBackMarker = this.onChangeBackMarker.bind(this);\n this.session.on(\"changeBackMarker\", this.$onChangeBackMarker);\n this.$onChangeBreakpoint = this.onChangeBreakpoint.bind(this);\n this.session.on(\"changeBreakpoint\", this.$onChangeBreakpoint);\n this.$onChangeAnnotation = this.onChangeAnnotation.bind(this);\n this.session.on(\"changeAnnotation\", this.$onChangeAnnotation);\n this.$onCursorChange = this.onCursorChange.bind(this);\n this.session.on(\"changeOverwrite\", this.$onCursorChange);\n this.$onScrollTopChange = this.onScrollTopChange.bind(this);\n this.session.on(\"changeScrollTop\", this.$onScrollTopChange);\n this.$onScrollLeftChange = this.onScrollLeftChange.bind(this);\n this.session.on(\"changeScrollLeft\", this.$onScrollLeftChange);\n this.selection = session.getSelection();\n this.selection.on(\"changeCursor\", this.$onCursorChange);\n this.$onSelectionChange = this.onSelectionChange.bind(this);\n this.selection.on(\"changeSelection\", this.$onSelectionChange);\n this.onChangeMode();\n this.onCursorChange();\n this.onScrollTopChange();\n this.onScrollLeftChange();\n this.onSelectionChange();\n this.onChangeFrontMarker();\n this.onChangeBackMarker();\n this.onChangeBreakpoint();\n this.onChangeAnnotation();\n this.session.getUseWrapMode() && this.renderer.adjustWrapLimit();\n this.renderer.updateFull();\n }\n else {\n this.selection = null;\n this.renderer.setSession(session);\n }\n this._signal(\"changeSession\", {\n session: session,\n oldSession: oldSession\n });\n this.curOp = null;\n oldSession && oldSession._signal(\"changeEditor\", { oldEditor: this });\n session && session._signal(\"changeEditor\", { editor: this });\n if (session && !session.destroyed)\n session.bgTokenizer.scheduleStart();\n };\n Editor.prototype.getSession = function () {\n return this.session;\n };\n Editor.prototype.setValue = function (val, cursorPos) {\n this.session.doc.setValue(val);\n if (!cursorPos)\n this.selectAll();\n else if (cursorPos == 1)\n this.navigateFileEnd();\n else if (cursorPos == -1)\n this.navigateFileStart();\n return val;\n };\n Editor.prototype.getValue = function () {\n return this.session.getValue();\n };\n Editor.prototype.getSelection = function () {\n return this.selection;\n };\n Editor.prototype.resize = function (force) {\n this.renderer.onResize(force);\n };\n Editor.prototype.setTheme = function (theme, cb) {\n this.renderer.setTheme(theme, cb);\n };\n Editor.prototype.getTheme = function () {\n return this.renderer.getTheme();\n };\n Editor.prototype.setStyle = function (style) {\n this.renderer.setStyle(style);\n };\n Editor.prototype.unsetStyle = function (style) {\n this.renderer.unsetStyle(style);\n };\n Editor.prototype.getFontSize = function () {\n return this.getOption(\"fontSize\") ||\n dom.computedStyle(this.container).fontSize;\n };\n Editor.prototype.setFontSize = function (size) {\n this.setOption(\"fontSize\", size);\n };\n Editor.prototype.$highlightBrackets = function () {\n if (this.$highlightPending) {\n return;\n }\n var self = this;\n this.$highlightPending = true;\n setTimeout(function () {\n self.$highlightPending = false;\n var session = self.session;\n if (!session || session.destroyed)\n return;\n if (session.$bracketHighlight) {\n session.$bracketHighlight.markerIds.forEach(function (id) {\n session.removeMarker(id);\n });\n session.$bracketHighlight = null;\n }\n var pos = self.getCursorPosition();\n var handler = self.getKeyboardHandler();\n var isBackwards = handler && handler.$getDirectionForHighlight && handler.$getDirectionForHighlight(self);\n var ranges = session.getMatchingBracketRanges(pos, isBackwards);\n if (!ranges) {\n var iterator = new TokenIterator(session, pos.row, pos.column);\n var token = iterator.getCurrentToken();\n if (token && /\\b(?:tag-open|tag-name)/.test(token.type)) {\n var tagNamesRanges = session.getMatchingTags(pos);\n if (tagNamesRanges)\n ranges = [tagNamesRanges.openTagName, tagNamesRanges.closeTagName];\n }\n }\n if (!ranges && session.$mode.getMatching)\n ranges = session.$mode.getMatching(self.session);\n if (!ranges) {\n if (self.getHighlightIndentGuides())\n self.renderer.$textLayer.$highlightIndentGuide();\n return;\n }\n var markerType = \"ace_bracket\";\n if (!Array.isArray(ranges)) {\n ranges = [ranges];\n }\n else if (ranges.length == 1) {\n markerType = \"ace_error_bracket\";\n }\n if (ranges.length == 2) {\n if (Range.comparePoints(ranges[0].end, ranges[1].start) == 0)\n ranges = [Range.fromPoints(ranges[0].start, ranges[1].end)];\n else if (Range.comparePoints(ranges[0].start, ranges[1].end) == 0)\n ranges = [Range.fromPoints(ranges[1].start, ranges[0].end)];\n }\n session.$bracketHighlight = {\n ranges: ranges,\n markerIds: ranges.map(function (range) {\n return session.addMarker(range, markerType, \"text\");\n })\n };\n if (self.getHighlightIndentGuides())\n self.renderer.$textLayer.$highlightIndentGuide();\n }, 50);\n };\n Editor.prototype.focus = function () {\n this.textInput.focus();\n };\n Editor.prototype.isFocused = function () {\n return this.textInput.isFocused();\n };\n Editor.prototype.blur = function () {\n this.textInput.blur();\n };\n Editor.prototype.onFocus = function (e) {\n if (this.$isFocused)\n return;\n this.$isFocused = true;\n this.renderer.showCursor();\n this.renderer.visualizeFocus();\n this._emit(\"focus\", e);\n };\n Editor.prototype.onBlur = function (e) {\n if (!this.$isFocused)\n return;\n this.$isFocused = false;\n this.renderer.hideCursor();\n this.renderer.visualizeBlur();\n this._emit(\"blur\", e);\n };\n Editor.prototype.$cursorChange = function () {\n this.renderer.updateCursor();\n this.$highlightBrackets();\n this.$updateHighlightActiveLine();\n };\n Editor.prototype.onDocumentChange = function (delta) {\n var wrap = this.session.$useWrapMode;\n var lastRow = (delta.start.row == delta.end.row ? delta.end.row : Infinity);\n this.renderer.updateLines(delta.start.row, lastRow, wrap);\n this._signal(\"change\", delta);\n this.$cursorChange();\n };\n Editor.prototype.onTokenizerUpdate = function (e) {\n var rows = e.data;\n this.renderer.updateLines(rows.first, rows.last);\n };\n Editor.prototype.onScrollTopChange = function () {\n this.renderer.scrollToY(this.session.getScrollTop());\n };\n Editor.prototype.onScrollLeftChange = function () {\n this.renderer.scrollToX(this.session.getScrollLeft());\n };\n Editor.prototype.onCursorChange = function () {\n this.$cursorChange();\n this._signal(\"changeSelection\");\n };\n Editor.prototype.$updateHighlightActiveLine = function () {\n var session = this.getSession();\n var highlight;\n if (this.$highlightActiveLine) {\n if (this.$selectionStyle != \"line\" || !this.selection.isMultiLine())\n highlight = this.getCursorPosition();\n if (this.renderer.theme && this.renderer.theme.$selectionColorConflict && !this.selection.isEmpty())\n highlight = false;\n if (this.renderer.$maxLines && this.session.getLength() === 1 && !(this.renderer.$minLines > 1))\n highlight = false;\n }\n if (session.$highlightLineMarker && !highlight) {\n session.removeMarker(session.$highlightLineMarker.id);\n session.$highlightLineMarker = null;\n }\n else if (!session.$highlightLineMarker && highlight) {\n var range = new Range(highlight.row, highlight.column, highlight.row, Infinity);\n range.id = session.addMarker(range, \"ace_active-line\", \"screenLine\");\n session.$highlightLineMarker = range;\n }\n else if (highlight) {\n session.$highlightLineMarker.start.row = highlight.row;\n session.$highlightLineMarker.end.row = highlight.row;\n session.$highlightLineMarker.start.column = highlight.column;\n session._signal(\"changeBackMarker\");\n }\n };\n Editor.prototype.onSelectionChange = function (e) {\n var session = this.session;\n if (session.$selectionMarker) {\n session.removeMarker(session.$selectionMarker);\n }\n session.$selectionMarker = null;\n if (!this.selection.isEmpty()) {\n var range = this.selection.getRange();\n var style = this.getSelectionStyle();\n session.$selectionMarker = session.addMarker(range, \"ace_selection\", style);\n }\n else {\n this.$updateHighlightActiveLine();\n }\n var re = this.$highlightSelectedWord && this.$getSelectionHighLightRegexp();\n this.session.highlight(re);\n this._signal(\"changeSelection\");\n };\n Editor.prototype.$getSelectionHighLightRegexp = function () {\n var session = this.session;\n var selection = this.getSelectionRange();\n if (selection.isEmpty() || selection.isMultiLine())\n return;\n var startColumn = selection.start.column;\n var endColumn = selection.end.column;\n var line = session.getLine(selection.start.row);\n var needle = line.substring(startColumn, endColumn);\n if (needle.length > 5000 || !/[\\w\\d]/.test(needle))\n return;\n var re = this.$search.$assembleRegExp({\n wholeWord: true,\n caseSensitive: true,\n needle: needle\n });\n var wordWithBoundary = line.substring(startColumn - 1, endColumn + 1);\n if (!re.test(wordWithBoundary))\n return;\n return re;\n };\n Editor.prototype.onChangeFrontMarker = function () {\n this.renderer.updateFrontMarkers();\n };\n Editor.prototype.onChangeBackMarker = function () {\n this.renderer.updateBackMarkers();\n };\n Editor.prototype.onChangeBreakpoint = function () {\n this.renderer.updateBreakpoints();\n };\n Editor.prototype.onChangeAnnotation = function () {\n this.renderer.setAnnotations(this.session.getAnnotations());\n };\n Editor.prototype.onChangeMode = function (e) {\n this.renderer.updateText();\n this._emit(\"changeMode\", e);\n };\n Editor.prototype.onChangeWrapLimit = function () {\n this.renderer.updateFull();\n };\n Editor.prototype.onChangeWrapMode = function () {\n this.renderer.onResize(true);\n };\n Editor.prototype.onChangeFold = function () {\n this.$updateHighlightActiveLine();\n this.renderer.updateFull();\n };\n Editor.prototype.getSelectedText = function () {\n return this.session.getTextRange(this.getSelectionRange());\n };\n Editor.prototype.getCopyText = function () {\n var text = this.getSelectedText();\n var nl = this.session.doc.getNewLineCharacter();\n var copyLine = false;\n if (!text && this.$copyWithEmptySelection) {\n copyLine = true;\n var ranges = this.selection.getAllRanges();\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i];\n if (i && ranges[i - 1].start.row == range.start.row)\n continue;\n text += this.session.getLine(range.start.row) + nl;\n }\n }\n var e = { text: text };\n this._signal(\"copy\", e);\n clipboard.lineMode = copyLine ? e.text : false;\n return e.text;\n };\n Editor.prototype.onCopy = function () {\n this.commands.exec(\"copy\", this);\n };\n Editor.prototype.onCut = function () {\n this.commands.exec(\"cut\", this);\n };\n Editor.prototype.onPaste = function (text, event) {\n var e = { text: text, event: event };\n this.commands.exec(\"paste\", this, e);\n };\n Editor.prototype.$handlePaste = function (e) {\n if (typeof e == \"string\")\n e = { text: e };\n this._signal(\"paste\", e);\n var text = e.text;\n var lineMode = text === clipboard.lineMode;\n var session = this.session;\n if (!this.inMultiSelectMode || this.inVirtualSelectionMode) {\n if (lineMode)\n session.insert({ row: this.selection.lead.row, column: 0 }, text);\n else\n this.insert(text);\n }\n else if (lineMode) {\n this.selection.rangeList.ranges.forEach(function (range) {\n session.insert({ row: range.start.row, column: 0 }, text);\n });\n }\n else {\n var lines = text.split(/\\r\\n|\\r|\\n/);\n var ranges = this.selection.rangeList.ranges;\n var isFullLine = lines.length == 2 && (!lines[0] || !lines[1]);\n if (lines.length != ranges.length || isFullLine)\n return this.commands.exec(\"insertstring\", this, text);\n for (var i = ranges.length; i--;) {\n var range = ranges[i];\n if (!range.isEmpty())\n session.remove(range);\n session.insert(range.start, lines[i]);\n }\n }\n };\n Editor.prototype.execCommand = function (command, args) {\n return this.commands.exec(command, this, args);\n };\n Editor.prototype.insert = function (text, pasted) {\n var session = this.session;\n var mode = session.getMode();\n var cursor = this.getCursorPosition();\n if (this.getBehavioursEnabled() && !pasted) {\n var transform = mode.transformAction(session.getState(cursor.row), 'insertion', this, session, text);\n if (transform) {\n if (text !== transform.text) {\n if (!this.inVirtualSelectionMode) {\n this.session.mergeUndoDeltas = false;\n this.mergeNextCommand = false;\n }\n }\n text = transform.text;\n }\n }\n if (text == \"\\t\")\n text = this.session.getTabString();\n if (!this.selection.isEmpty()) {\n var range = this.getSelectionRange();\n cursor = this.session.remove(range);\n this.clearSelection();\n }\n else if (this.session.getOverwrite() && text.indexOf(\"\\n\") == -1) {\n var range = new Range.fromPoints(cursor, cursor);\n range.end.column += text.length;\n this.session.remove(range);\n }\n if (text == \"\\n\" || text == \"\\r\\n\") {\n var line = session.getLine(cursor.row);\n if (cursor.column > line.search(/\\S|$/)) {\n var d = line.substr(cursor.column).search(/\\S|$/);\n session.doc.removeInLine(cursor.row, cursor.column, cursor.column + d);\n }\n }\n this.clearSelection();\n var start = cursor.column;\n var lineState = session.getState(cursor.row);\n var line = session.getLine(cursor.row);\n var shouldOutdent = mode.checkOutdent(lineState, line, text);\n session.insert(cursor, text);\n if (transform && transform.selection) {\n if (transform.selection.length == 2) { // Transform relative to the current column\n this.selection.setSelectionRange(new Range(cursor.row, start + transform.selection[0], cursor.row, start + transform.selection[1]));\n }\n else { // Transform relative to the current row.\n this.selection.setSelectionRange(new Range(cursor.row + transform.selection[0], transform.selection[1], cursor.row + transform.selection[2], transform.selection[3]));\n }\n }\n if (this.$enableAutoIndent) {\n if (session.getDocument().isNewLine(text)) {\n var lineIndent = mode.getNextLineIndent(lineState, line.slice(0, cursor.column), session.getTabString());\n session.insert({ row: cursor.row + 1, column: 0 }, lineIndent);\n }\n if (shouldOutdent)\n mode.autoOutdent(lineState, session, cursor.row);\n }\n };\n Editor.prototype.autoIndent = function () {\n var session = this.session;\n var mode = session.getMode();\n var startRow, endRow;\n if (this.selection.isEmpty()) {\n startRow = 0;\n endRow = session.doc.getLength() - 1;\n }\n else {\n var selectedRange = this.getSelectionRange();\n startRow = selectedRange.start.row;\n endRow = selectedRange.end.row;\n }\n var prevLineState = \"\";\n var prevLine = \"\";\n var lineIndent = \"\";\n var line, currIndent, range;\n var tab = session.getTabString();\n for (var row = startRow; row <= endRow; row++) {\n if (row > 0) {\n prevLineState = session.getState(row - 1);\n prevLine = session.getLine(row - 1);\n lineIndent = mode.getNextLineIndent(prevLineState, prevLine, tab);\n }\n line = session.getLine(row);\n currIndent = mode.$getIndent(line);\n if (lineIndent !== currIndent) {\n if (currIndent.length > 0) {\n range = new Range(row, 0, row, currIndent.length);\n session.remove(range);\n }\n if (lineIndent.length > 0) {\n session.insert({ row: row, column: 0 }, lineIndent);\n }\n }\n mode.autoOutdent(prevLineState, session, row);\n }\n };\n Editor.prototype.onTextInput = function (text, composition) {\n if (!composition)\n return this.keyBinding.onTextInput(text);\n this.startOperation({ command: { name: \"insertstring\" } });\n var applyComposition = this.applyComposition.bind(this, text, composition);\n if (this.selection.rangeCount)\n this.forEachSelection(applyComposition);\n else\n applyComposition();\n this.endOperation();\n };\n Editor.prototype.applyComposition = function (text, composition) {\n if (composition.extendLeft || composition.extendRight) {\n var r = this.selection.getRange();\n r.start.column -= composition.extendLeft;\n r.end.column += composition.extendRight;\n if (r.start.column < 0) {\n r.start.row--;\n r.start.column += this.session.getLine(r.start.row).length + 1;\n }\n this.selection.setRange(r);\n if (!text && !r.isEmpty())\n this.remove();\n }\n if (text || !this.selection.isEmpty())\n this.insert(text, true);\n if (composition.restoreStart || composition.restoreEnd) {\n var r = this.selection.getRange();\n r.start.column -= composition.restoreStart;\n r.end.column -= composition.restoreEnd;\n this.selection.setRange(r);\n }\n };\n Editor.prototype.onCommandKey = function (e, hashId, keyCode) {\n return this.keyBinding.onCommandKey(e, hashId, keyCode);\n };\n Editor.prototype.setOverwrite = function (overwrite) {\n this.session.setOverwrite(overwrite);\n };\n Editor.prototype.getOverwrite = function () {\n return this.session.getOverwrite();\n };\n Editor.prototype.toggleOverwrite = function () {\n this.session.toggleOverwrite();\n };\n Editor.prototype.setScrollSpeed = function (speed) {\n this.setOption(\"scrollSpeed\", speed);\n };\n Editor.prototype.getScrollSpeed = function () {\n return this.getOption(\"scrollSpeed\");\n };\n Editor.prototype.setDragDelay = function (dragDelay) {\n this.setOption(\"dragDelay\", dragDelay);\n };\n Editor.prototype.getDragDelay = function () {\n return this.getOption(\"dragDelay\");\n };\n Editor.prototype.setSelectionStyle = function (val) {\n this.setOption(\"selectionStyle\", val);\n };\n Editor.prototype.getSelectionStyle = function () {\n return this.getOption(\"selectionStyle\");\n };\n Editor.prototype.setHighlightActiveLine = function (shouldHighlight) {\n this.setOption(\"highlightActiveLine\", shouldHighlight);\n };\n Editor.prototype.getHighlightActiveLine = function () {\n return this.getOption(\"highlightActiveLine\");\n };\n Editor.prototype.setHighlightGutterLine = function (shouldHighlight) {\n this.setOption(\"highlightGutterLine\", shouldHighlight);\n };\n Editor.prototype.getHighlightGutterLine = function () {\n return this.getOption(\"highlightGutterLine\");\n };\n Editor.prototype.setHighlightSelectedWord = function (shouldHighlight) {\n this.setOption(\"highlightSelectedWord\", shouldHighlight);\n };\n Editor.prototype.getHighlightSelectedWord = function () {\n return this.$highlightSelectedWord;\n };\n Editor.prototype.setAnimatedScroll = function (shouldAnimate) {\n this.renderer.setAnimatedScroll(shouldAnimate);\n };\n Editor.prototype.getAnimatedScroll = function () {\n return this.renderer.getAnimatedScroll();\n };\n Editor.prototype.setShowInvisibles = function (showInvisibles) {\n this.renderer.setShowInvisibles(showInvisibles);\n };\n Editor.prototype.getShowInvisibles = function () {\n return this.renderer.getShowInvisibles();\n };\n Editor.prototype.setDisplayIndentGuides = function (display) {\n this.renderer.setDisplayIndentGuides(display);\n };\n Editor.prototype.getDisplayIndentGuides = function () {\n return this.renderer.getDisplayIndentGuides();\n };\n Editor.prototype.setHighlightIndentGuides = function (highlight) {\n this.renderer.setHighlightIndentGuides(highlight);\n };\n Editor.prototype.getHighlightIndentGuides = function () {\n return this.renderer.getHighlightIndentGuides();\n };\n Editor.prototype.setShowPrintMargin = function (showPrintMargin) {\n this.renderer.setShowPrintMargin(showPrintMargin);\n };\n Editor.prototype.getShowPrintMargin = function () {\n return this.renderer.getShowPrintMargin();\n };\n Editor.prototype.setPrintMarginColumn = function (showPrintMargin) {\n this.renderer.setPrintMarginColumn(showPrintMargin);\n };\n Editor.prototype.getPrintMarginColumn = function () {\n return this.renderer.getPrintMarginColumn();\n };\n Editor.prototype.setReadOnly = function (readOnly) {\n this.setOption(\"readOnly\", readOnly);\n };\n Editor.prototype.getReadOnly = function () {\n return this.getOption(\"readOnly\");\n };\n Editor.prototype.setBehavioursEnabled = function (enabled) {\n this.setOption(\"behavioursEnabled\", enabled);\n };\n Editor.prototype.getBehavioursEnabled = function () {\n return this.getOption(\"behavioursEnabled\");\n };\n Editor.prototype.setWrapBehavioursEnabled = function (enabled) {\n this.setOption(\"wrapBehavioursEnabled\", enabled);\n };\n Editor.prototype.getWrapBehavioursEnabled = function () {\n return this.getOption(\"wrapBehavioursEnabled\");\n };\n Editor.prototype.setShowFoldWidgets = function (show) {\n this.setOption(\"showFoldWidgets\", show);\n };\n Editor.prototype.getShowFoldWidgets = function () {\n return this.getOption(\"showFoldWidgets\");\n };\n Editor.prototype.setFadeFoldWidgets = function (fade) {\n this.setOption(\"fadeFoldWidgets\", fade);\n };\n Editor.prototype.getFadeFoldWidgets = function () {\n return this.getOption(\"fadeFoldWidgets\");\n };\n Editor.prototype.remove = function (dir) {\n if (this.selection.isEmpty()) {\n if (dir == \"left\")\n this.selection.selectLeft();\n else\n this.selection.selectRight();\n }\n var range = this.getSelectionRange();\n if (this.getBehavioursEnabled()) {\n var session = this.session;\n var state = session.getState(range.start.row);\n var new_range = session.getMode().transformAction(state, 'deletion', this, session, range);\n if (range.end.column === 0) {\n var text = session.getTextRange(range);\n if (text[text.length - 1] == \"\\n\") {\n var line = session.getLine(range.end.row);\n if (/^\\s+$/.test(line)) {\n range.end.column = line.length;\n }\n }\n }\n if (new_range)\n range = new_range;\n }\n this.session.remove(range);\n this.clearSelection();\n };\n Editor.prototype.removeWordRight = function () {\n if (this.selection.isEmpty())\n this.selection.selectWordRight();\n this.session.remove(this.getSelectionRange());\n this.clearSelection();\n };\n Editor.prototype.removeWordLeft = function () {\n if (this.selection.isEmpty())\n this.selection.selectWordLeft();\n this.session.remove(this.getSelectionRange());\n this.clearSelection();\n };\n Editor.prototype.removeToLineStart = function () {\n if (this.selection.isEmpty())\n this.selection.selectLineStart();\n if (this.selection.isEmpty())\n this.selection.selectLeft();\n this.session.remove(this.getSelectionRange());\n this.clearSelection();\n };\n Editor.prototype.removeToLineEnd = function () {\n if (this.selection.isEmpty())\n this.selection.selectLineEnd();\n var range = this.getSelectionRange();\n if (range.start.column == range.end.column && range.start.row == range.end.row) {\n range.end.column = 0;\n range.end.row++;\n }\n this.session.remove(range);\n this.clearSelection();\n };\n Editor.prototype.splitLine = function () {\n if (!this.selection.isEmpty()) {\n this.session.remove(this.getSelectionRange());\n this.clearSelection();\n }\n var cursor = this.getCursorPosition();\n this.insert(\"\\n\");\n this.moveCursorToPosition(cursor);\n };\n Editor.prototype.setGhostText = function (text, position) {\n if (!this.session.widgetManager) {\n this.session.widgetManager = new LineWidgets(this.session);\n this.session.widgetManager.attach(this);\n }\n this.renderer.setGhostText(text, position);\n };\n Editor.prototype.removeGhostText = function () {\n if (!this.session.widgetManager)\n return;\n this.renderer.removeGhostText();\n };\n Editor.prototype.transposeLetters = function () {\n if (!this.selection.isEmpty()) {\n return;\n }\n var cursor = this.getCursorPosition();\n var column = cursor.column;\n if (column === 0)\n return;\n var line = this.session.getLine(cursor.row);\n var swap, range;\n if (column < line.length) {\n swap = line.charAt(column) + line.charAt(column - 1);\n range = new Range(cursor.row, column - 1, cursor.row, column + 1);\n }\n else {\n swap = line.charAt(column - 1) + line.charAt(column - 2);\n range = new Range(cursor.row, column - 2, cursor.row, column);\n }\n this.session.replace(range, swap);\n this.session.selection.moveToPosition(range.end);\n };\n Editor.prototype.toLowerCase = function () {\n var originalRange = this.getSelectionRange();\n if (this.selection.isEmpty()) {\n this.selection.selectWord();\n }\n var range = this.getSelectionRange();\n var text = this.session.getTextRange(range);\n this.session.replace(range, text.toLowerCase());\n this.selection.setSelectionRange(originalRange);\n };\n Editor.prototype.toUpperCase = function () {\n var originalRange = this.getSelectionRange();\n if (this.selection.isEmpty()) {\n this.selection.selectWord();\n }\n var range = this.getSelectionRange();\n var text = this.session.getTextRange(range);\n this.session.replace(range, text.toUpperCase());\n this.selection.setSelectionRange(originalRange);\n };\n Editor.prototype.indent = function () {\n var session = this.session;\n var range = this.getSelectionRange();\n if (range.start.row < range.end.row) {\n var rows = this.$getSelectedRows();\n session.indentRows(rows.first, rows.last, \"\\t\");\n return;\n }\n else if (range.start.column < range.end.column) {\n var text = session.getTextRange(range);\n if (!/^\\s+$/.test(text)) {\n var rows = this.$getSelectedRows();\n session.indentRows(rows.first, rows.last, \"\\t\");\n return;\n }\n }\n var line = session.getLine(range.start.row);\n var position = range.start;\n var size = session.getTabSize();\n var column = session.documentToScreenColumn(position.row, position.column);\n if (this.session.getUseSoftTabs()) {\n var count = (size - column % size);\n var indentString = lang.stringRepeat(\" \", count);\n }\n else {\n var count = column % size;\n while (line[range.start.column - 1] == \" \" && count) {\n range.start.column--;\n count--;\n }\n this.selection.setSelectionRange(range);\n indentString = \"\\t\";\n }\n return this.insert(indentString);\n };\n Editor.prototype.blockIndent = function () {\n var rows = this.$getSelectedRows();\n this.session.indentRows(rows.first, rows.last, \"\\t\");\n };\n Editor.prototype.blockOutdent = function () {\n var selection = this.session.getSelection();\n this.session.outdentRows(selection.getRange());\n };\n Editor.prototype.sortLines = function () {\n var rows = this.$getSelectedRows();\n var session = this.session;\n var lines = [];\n for (var i = rows.first; i <= rows.last; i++)\n lines.push(session.getLine(i));\n lines.sort(function (a, b) {\n if (a.toLowerCase() < b.toLowerCase())\n return -1;\n if (a.toLowerCase() > b.toLowerCase())\n return 1;\n return 0;\n });\n var deleteRange = new Range(0, 0, 0, 0);\n for (var i = rows.first; i <= rows.last; i++) {\n var line = session.getLine(i);\n deleteRange.start.row = i;\n deleteRange.end.row = i;\n deleteRange.end.column = line.length;\n session.replace(deleteRange, lines[i - rows.first]);\n }\n };\n Editor.prototype.toggleCommentLines = function () {\n var state = this.session.getState(this.getCursorPosition().row);\n var rows = this.$getSelectedRows();\n this.session.getMode().toggleCommentLines(state, this.session, rows.first, rows.last);\n };\n Editor.prototype.toggleBlockComment = function () {\n var cursor = this.getCursorPosition();\n var state = this.session.getState(cursor.row);\n var range = this.getSelectionRange();\n this.session.getMode().toggleBlockComment(state, this.session, range, cursor);\n };\n Editor.prototype.getNumberAt = function (row, column) {\n var _numberRx = /[\\-]?[0-9]+(?:\\.[0-9]+)?/g;\n _numberRx.lastIndex = 0;\n var s = this.session.getLine(row);\n while (_numberRx.lastIndex < column) {\n var m = _numberRx.exec(s);\n if (m.index <= column && m.index + m[0].length >= column) {\n var number = {\n value: m[0],\n start: m.index,\n end: m.index + m[0].length\n };\n return number;\n }\n }\n return null;\n };\n Editor.prototype.modifyNumber = function (amount) {\n var row = this.selection.getCursor().row;\n var column = this.selection.getCursor().column;\n var charRange = new Range(row, column - 1, row, column);\n var c = this.session.getTextRange(charRange);\n if (!isNaN(parseFloat(c)) && isFinite(c)) {\n var nr = this.getNumberAt(row, column);\n if (nr) {\n var fp = nr.value.indexOf(\".\") >= 0 ? nr.start + nr.value.indexOf(\".\") + 1 : nr.end;\n var decimals = nr.start + nr.value.length - fp;\n var t = parseFloat(nr.value);\n t *= Math.pow(10, decimals);\n if (fp !== nr.end && column < fp) {\n amount *= Math.pow(10, nr.end - column - 1);\n }\n else {\n amount *= Math.pow(10, nr.end - column);\n }\n t += amount;\n t /= Math.pow(10, decimals);\n var nnr = t.toFixed(decimals);\n var replaceRange = new Range(row, nr.start, row, nr.end);\n this.session.replace(replaceRange, nnr);\n this.moveCursorTo(row, Math.max(nr.start + 1, column + nnr.length - nr.value.length));\n }\n }\n else {\n this.toggleWord();\n }\n };\n Editor.prototype.toggleWord = function () {\n var row = this.selection.getCursor().row;\n var column = this.selection.getCursor().column;\n this.selection.selectWord();\n var currentState = this.getSelectedText();\n var currWordStart = this.selection.getWordRange().start.column;\n var wordParts = currentState.replace(/([a-z]+|[A-Z]+)(?=[A-Z_]|$)/g, '$1 ').split(/\\s/);\n var delta = column - currWordStart - 1;\n if (delta < 0)\n delta = 0;\n var curLength = 0, itLength = 0;\n var that = this;\n if (currentState.match(/[A-Za-z0-9_]+/)) {\n wordParts.forEach(function (item, i) {\n itLength = curLength + item.length;\n if (delta >= curLength && delta <= itLength) {\n currentState = item;\n that.selection.clearSelection();\n that.moveCursorTo(row, curLength + currWordStart);\n that.selection.selectTo(row, itLength + currWordStart);\n }\n curLength = itLength;\n });\n }\n var wordPairs = this.$toggleWordPairs;\n var reg;\n for (var i = 0; i < wordPairs.length; i++) {\n var item = wordPairs[i];\n for (var j = 0; j <= 1; j++) {\n var negate = +!j;\n var firstCondition = currentState.match(new RegExp('^\\\\s?_?(' + lang.escapeRegExp(item[j]) + ')\\\\s?$', 'i'));\n if (firstCondition) {\n var secondCondition = currentState.match(new RegExp('([_]|^|\\\\s)(' + lang.escapeRegExp(firstCondition[1]) + ')($|\\\\s)', 'g'));\n if (secondCondition) {\n reg = currentState.replace(new RegExp(lang.escapeRegExp(item[j]), 'i'), function (result) {\n var res = item[negate];\n if (result.toUpperCase() == result) {\n res = res.toUpperCase();\n }\n else if (result.charAt(0).toUpperCase() == result.charAt(0)) {\n res = res.substr(0, 0) + item[negate].charAt(0).toUpperCase() + res.substr(1);\n }\n return res;\n });\n this.insert(reg);\n reg = \"\";\n }\n }\n }\n }\n };\n Editor.prototype.findLinkAt = function (row, column) {\n var e_1, _a;\n var line = this.session.getLine(row);\n var wordParts = line.split(/((?:https?|ftp):\\/\\/[\\S]+)/);\n var columnPosition = column;\n if (columnPosition < 0)\n columnPosition = 0;\n var previousPosition = 0, currentPosition = 0, match;\n try {\n for (var wordParts_1 = __values(wordParts), wordParts_1_1 = wordParts_1.next(); !wordParts_1_1.done; wordParts_1_1 = wordParts_1.next()) {\n var item = wordParts_1_1.value;\n currentPosition = previousPosition + item.length;\n if (columnPosition >= previousPosition && columnPosition <= currentPosition) {\n if (item.match(/((?:https?|ftp):\\/\\/[\\S]+)/)) {\n match = item.replace(/[\\s:.,'\";}\\]]+$/, \"\");\n break;\n }\n }\n previousPosition = currentPosition;\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (wordParts_1_1 && !wordParts_1_1.done && (_a = wordParts_1.return)) _a.call(wordParts_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return match;\n };\n Editor.prototype.openLink = function () {\n var cursor = this.selection.getCursor();\n var url = this.findLinkAt(cursor.row, cursor.column);\n if (url)\n window.open(url, '_blank');\n return url != null;\n };\n Editor.prototype.removeLines = function () {\n var rows = this.$getSelectedRows();\n this.session.removeFullLines(rows.first, rows.last);\n this.clearSelection();\n };\n Editor.prototype.duplicateSelection = function () {\n var sel = this.selection;\n var doc = this.session;\n var range = sel.getRange();\n var reverse = sel.isBackwards();\n if (range.isEmpty()) {\n var row = range.start.row;\n doc.duplicateLines(row, row);\n }\n else {\n var point = reverse ? range.start : range.end;\n var endPoint = doc.insert(point, doc.getTextRange(range), false);\n range.start = point;\n range.end = endPoint;\n sel.setSelectionRange(range, reverse);\n }\n };\n Editor.prototype.moveLinesDown = function () {\n this.$moveLines(1, false);\n };\n Editor.prototype.moveLinesUp = function () {\n this.$moveLines(-1, false);\n };\n Editor.prototype.moveText = function (range, toPosition, copy) {\n return this.session.moveText(range, toPosition, copy);\n };\n Editor.prototype.copyLinesUp = function () {\n this.$moveLines(-1, true);\n };\n Editor.prototype.copyLinesDown = function () {\n this.$moveLines(1, true);\n };\n Editor.prototype.$moveLines = function (dir, copy) {\n var rows, moved;\n var selection = this.selection;\n if (!selection.inMultiSelectMode || this.inVirtualSelectionMode) {\n var range = selection.toOrientedRange();\n rows = this.$getSelectedRows(range);\n moved = this.session.$moveLines(rows.first, rows.last, copy ? 0 : dir);\n if (copy && dir == -1)\n moved = 0;\n range.moveBy(moved, 0);\n selection.fromOrientedRange(range);\n }\n else {\n var ranges = selection.rangeList.ranges;\n selection.rangeList.detach(this.session);\n this.inVirtualSelectionMode = true;\n var diff = 0;\n var totalDiff = 0;\n var l = ranges.length;\n for (var i = 0; i < l; i++) {\n var rangeIndex = i;\n ranges[i].moveBy(diff, 0);\n rows = this.$getSelectedRows(ranges[i]);\n var first = rows.first;\n var last = rows.last;\n while (++i < l) {\n if (totalDiff)\n ranges[i].moveBy(totalDiff, 0);\n var subRows = this.$getSelectedRows(ranges[i]);\n if (copy && subRows.first != last)\n break;\n else if (!copy && subRows.first > last + 1)\n break;\n last = subRows.last;\n }\n i--;\n diff = this.session.$moveLines(first, last, copy ? 0 : dir);\n if (copy && dir == -1)\n rangeIndex = i + 1;\n while (rangeIndex <= i) {\n ranges[rangeIndex].moveBy(diff, 0);\n rangeIndex++;\n }\n if (!copy)\n diff = 0;\n totalDiff += diff;\n }\n selection.fromOrientedRange(selection.ranges[0]);\n selection.rangeList.attach(this.session);\n this.inVirtualSelectionMode = false;\n }\n };\n Editor.prototype.$getSelectedRows = function (range) {\n range = (range || this.getSelectionRange()).collapseRows();\n return {\n first: this.session.getRowFoldStart(range.start.row),\n last: this.session.getRowFoldEnd(range.end.row)\n };\n };\n Editor.prototype.onCompositionStart = function (compositionState) {\n this.renderer.showComposition(compositionState);\n };\n Editor.prototype.onCompositionUpdate = function (text) {\n this.renderer.setCompositionText(text);\n };\n Editor.prototype.onCompositionEnd = function () {\n this.renderer.hideComposition();\n };\n Editor.prototype.getFirstVisibleRow = function () {\n return this.renderer.getFirstVisibleRow();\n };\n Editor.prototype.getLastVisibleRow = function () {\n return this.renderer.getLastVisibleRow();\n };\n Editor.prototype.isRowVisible = function (row) {\n return (row >= this.getFirstVisibleRow() && row <= this.getLastVisibleRow());\n };\n Editor.prototype.isRowFullyVisible = function (row) {\n return (row >= this.renderer.getFirstFullyVisibleRow() && row <= this.renderer.getLastFullyVisibleRow());\n };\n Editor.prototype.$getVisibleRowCount = function () {\n return this.renderer.getScrollBottomRow() - this.renderer.getScrollTopRow() + 1;\n };\n Editor.prototype.$moveByPage = function (dir, select) {\n var renderer = this.renderer;\n var config = this.renderer.layerConfig;\n var rows = dir * Math.floor(config.height / config.lineHeight);\n if (select === true) {\n this.selection.$moveSelection(function () {\n this.moveCursorBy(rows, 0);\n });\n }\n else if (select === false) {\n this.selection.moveCursorBy(rows, 0);\n this.selection.clearSelection();\n }\n var scrollTop = renderer.scrollTop;\n renderer.scrollBy(0, rows * config.lineHeight);\n if (select != null)\n renderer.scrollCursorIntoView(null, 0.5);\n renderer.animateScrolling(scrollTop);\n };\n Editor.prototype.selectPageDown = function () {\n this.$moveByPage(1, true);\n };\n Editor.prototype.selectPageUp = function () {\n this.$moveByPage(-1, true);\n };\n Editor.prototype.gotoPageDown = function () {\n this.$moveByPage(1, false);\n };\n Editor.prototype.gotoPageUp = function () {\n this.$moveByPage(-1, false);\n };\n Editor.prototype.scrollPageDown = function () {\n this.$moveByPage(1);\n };\n Editor.prototype.scrollPageUp = function () {\n this.$moveByPage(-1);\n };\n Editor.prototype.scrollToRow = function (row) {\n this.renderer.scrollToRow(row);\n };\n Editor.prototype.scrollToLine = function (line, center, animate, callback) {\n this.renderer.scrollToLine(line, center, animate, callback);\n };\n Editor.prototype.centerSelection = function () {\n var range = this.getSelectionRange();\n var pos = {\n row: Math.floor(range.start.row + (range.end.row - range.start.row) / 2),\n column: Math.floor(range.start.column + (range.end.column - range.start.column) / 2)\n };\n this.renderer.alignCursor(pos, 0.5);\n };\n Editor.prototype.getCursorPosition = function () {\n return this.selection.getCursor();\n };\n Editor.prototype.getCursorPositionScreen = function () {\n return this.session.documentToScreenPosition(this.getCursorPosition());\n };\n Editor.prototype.getSelectionRange = function () {\n return this.selection.getRange();\n };\n Editor.prototype.selectAll = function () {\n this.selection.selectAll();\n };\n Editor.prototype.clearSelection = function () {\n this.selection.clearSelection();\n };\n Editor.prototype.moveCursorTo = function (row, column) {\n this.selection.moveCursorTo(row, column);\n };\n Editor.prototype.moveCursorToPosition = function (pos) {\n this.selection.moveCursorToPosition(pos);\n };\n Editor.prototype.jumpToMatching = function (select, expand) {\n var cursor = this.getCursorPosition();\n var iterator = new TokenIterator(this.session, cursor.row, cursor.column);\n var prevToken = iterator.getCurrentToken();\n var tokenCount = 0;\n if (prevToken && prevToken.type.indexOf('tag-name') !== -1) {\n prevToken = iterator.stepBackward();\n }\n var token = prevToken || iterator.stepForward();\n if (!token)\n return;\n var matchType;\n var found = false;\n var depth = {};\n var i = cursor.column - token.start;\n var bracketType;\n var brackets = {\n \")\": \"(\",\n \"(\": \"(\",\n \"]\": \"[\",\n \"[\": \"[\",\n \"{\": \"{\",\n \"}\": \"{\"\n };\n do {\n if (token.value.match(/[{}()\\[\\]]/g)) {\n for (; i < token.value.length && !found; i++) {\n if (!brackets[token.value[i]]) {\n continue;\n }\n bracketType = brackets[token.value[i]] + '.' + token.type.replace(\"rparen\", \"lparen\");\n if (isNaN(depth[bracketType])) {\n depth[bracketType] = 0;\n }\n switch (token.value[i]) {\n case '(':\n case '[':\n case '{':\n depth[bracketType]++;\n break;\n case ')':\n case ']':\n case '}':\n depth[bracketType]--;\n if (depth[bracketType] === -1) {\n matchType = 'bracket';\n found = true;\n }\n break;\n }\n }\n }\n else if (token.type.indexOf('tag-name') !== -1) {\n if (isNaN(depth[token.value])) {\n depth[token.value] = 0;\n }\n if (prevToken.value === '<' && tokenCount > 1) {\n depth[token.value]++;\n }\n else if (prevToken.value === '= 0; --i) {\n if (this.$tryReplace(ranges[i], replacement)) {\n replaced++;\n }\n }\n this.selection.setSelectionRange(selection);\n return replaced;\n };\n Editor.prototype.$tryReplace = function (range, replacement) {\n var input = this.session.getTextRange(range);\n replacement = this.$search.replace(input, replacement);\n if (replacement !== null) {\n range.end = this.session.replace(range, replacement);\n return range;\n }\n else {\n return null;\n }\n };\n Editor.prototype.getLastSearchOptions = function () {\n return this.$search.getOptions();\n };\n Editor.prototype.find = function (needle, options, animate) {\n if (!options)\n options = {};\n if (typeof needle == \"string\" || needle instanceof RegExp)\n options.needle = needle;\n else if (typeof needle == \"object\")\n oop.mixin(options, needle);\n var range = this.selection.getRange();\n if (options.needle == null) {\n needle = this.session.getTextRange(range)\n || this.$search.$options.needle;\n if (!needle) {\n range = this.session.getWordRange(range.start.row, range.start.column);\n needle = this.session.getTextRange(range);\n }\n this.$search.set({ needle: needle });\n }\n this.$search.set(options);\n if (!options.start)\n this.$search.set({ start: range });\n var newRange = this.$search.find(this.session);\n if (options.preventScroll)\n return newRange;\n if (newRange) {\n this.revealRange(newRange, animate);\n return newRange;\n }\n if (options.backwards)\n range.start = range.end;\n else\n range.end = range.start;\n this.selection.setRange(range);\n };\n Editor.prototype.findNext = function (options, animate) {\n this.find({ skipCurrent: true, backwards: false }, options, animate);\n };\n Editor.prototype.findPrevious = function (options, animate) {\n this.find(options, { skipCurrent: true, backwards: true }, animate);\n };\n Editor.prototype.revealRange = function (range, animate) {\n this.session.unfold(range);\n this.selection.setSelectionRange(range);\n var scrollTop = this.renderer.scrollTop;\n this.renderer.scrollSelectionIntoView(range.start, range.end, 0.5);\n if (animate !== false)\n this.renderer.animateScrolling(scrollTop);\n };\n Editor.prototype.undo = function () {\n this.session.getUndoManager().undo(this.session);\n this.renderer.scrollCursorIntoView(null, 0.5);\n };\n Editor.prototype.redo = function () {\n this.session.getUndoManager().redo(this.session);\n this.renderer.scrollCursorIntoView(null, 0.5);\n };\n Editor.prototype.destroy = function () {\n if (this.$toDestroy) {\n this.$toDestroy.forEach(function (el) {\n el.destroy();\n });\n this.$toDestroy = null;\n }\n if (this.$mouseHandler)\n this.$mouseHandler.destroy();\n this.renderer.destroy();\n this._signal(\"destroy\", this);\n if (this.session)\n this.session.destroy();\n if (this._$emitInputEvent)\n this._$emitInputEvent.cancel();\n this.removeAllListeners();\n };\n Editor.prototype.setAutoScrollEditorIntoView = function (enable) {\n if (!enable)\n return;\n var rect;\n var self = this;\n var shouldScroll = false;\n if (!this.$scrollAnchor)\n this.$scrollAnchor = document.createElement(\"div\");\n var scrollAnchor = this.$scrollAnchor;\n scrollAnchor.style.cssText = \"position:absolute\";\n this.container.insertBefore(scrollAnchor, this.container.firstChild);\n var onChangeSelection = this.on(\"changeSelection\", function () {\n shouldScroll = true;\n });\n var onBeforeRender = this.renderer.on(\"beforeRender\", function () {\n if (shouldScroll)\n rect = self.renderer.container.getBoundingClientRect();\n });\n var onAfterRender = this.renderer.on(\"afterRender\", function () {\n if (shouldScroll && rect && (self.isFocused()\n || self.searchBox && self.searchBox.isFocused())) {\n var renderer = self.renderer;\n var pos = renderer.$cursorLayer.$pixelPos;\n var config = renderer.layerConfig;\n var top = pos.top - config.offset;\n if (pos.top >= 0 && top + rect.top < 0) {\n shouldScroll = true;\n }\n else if (pos.top < config.height &&\n pos.top + rect.top + config.lineHeight > window.innerHeight) {\n shouldScroll = false;\n }\n else {\n shouldScroll = null;\n }\n if (shouldScroll != null) {\n scrollAnchor.style.top = top + \"px\";\n scrollAnchor.style.left = pos.left + \"px\";\n scrollAnchor.style.height = config.lineHeight + \"px\";\n scrollAnchor.scrollIntoView(shouldScroll);\n }\n shouldScroll = rect = null;\n }\n });\n this.setAutoScrollEditorIntoView = function (enable) {\n if (enable)\n return;\n delete this.setAutoScrollEditorIntoView;\n this.off(\"changeSelection\", onChangeSelection);\n this.renderer.off(\"afterRender\", onAfterRender);\n this.renderer.off(\"beforeRender\", onBeforeRender);\n };\n };\n Editor.prototype.$resetCursorStyle = function () {\n var style = this.$cursorStyle || \"ace\";\n var cursorLayer = this.renderer.$cursorLayer;\n if (!cursorLayer)\n return;\n cursorLayer.setSmoothBlinking(/smooth/.test(style));\n cursorLayer.isBlinking = !this.$readOnly && style != \"wide\";\n dom.setCssClass(cursorLayer.element, \"ace_slim-cursors\", /slim/.test(style));\n };\n Editor.prototype.prompt = function (message, options, callback) {\n var editor = this;\n config.loadModule(\"ace/ext/prompt\", function (module) {\n module.prompt(editor, message, options, callback);\n });\n };\n return Editor;\n}());\nEditor.$uid = 0;\nEditor.prototype.curOp = null;\nEditor.prototype.prevOp = {};\nEditor.prototype.$mergeableCommands = [\"backspace\", \"del\", \"insertstring\"];\nEditor.prototype.$toggleWordPairs = [\n [\"first\", \"last\"],\n [\"true\", \"false\"],\n [\"yes\", \"no\"],\n [\"width\", \"height\"],\n [\"top\", \"bottom\"],\n [\"right\", \"left\"],\n [\"on\", \"off\"],\n [\"x\", \"y\"],\n [\"get\", \"set\"],\n [\"max\", \"min\"],\n [\"horizontal\", \"vertical\"],\n [\"show\", \"hide\"],\n [\"add\", \"remove\"],\n [\"up\", \"down\"],\n [\"before\", \"after\"],\n [\"even\", \"odd\"],\n [\"in\", \"out\"],\n [\"inside\", \"outside\"],\n [\"next\", \"previous\"],\n [\"increase\", \"decrease\"],\n [\"attach\", \"detach\"],\n [\"&&\", \"||\"],\n [\"==\", \"!=\"]\n];\noop.implement(Editor.prototype, EventEmitter);\nconfig.defineOptions(Editor.prototype, \"editor\", {\n selectionStyle: {\n set: function (style) {\n this.onSelectionChange();\n this._signal(\"changeSelectionStyle\", { data: style });\n },\n initialValue: \"line\"\n },\n highlightActiveLine: {\n set: function () { this.$updateHighlightActiveLine(); },\n initialValue: true\n },\n highlightSelectedWord: {\n set: function (shouldHighlight) { this.$onSelectionChange(); },\n initialValue: true\n },\n readOnly: {\n set: function (readOnly) {\n this.textInput.setReadOnly(readOnly);\n this.$resetCursorStyle();\n },\n initialValue: false\n },\n copyWithEmptySelection: {\n set: function (value) {\n this.textInput.setCopyWithEmptySelection(value);\n },\n initialValue: false\n },\n cursorStyle: {\n set: function (val) { this.$resetCursorStyle(); },\n values: [\"ace\", \"slim\", \"smooth\", \"wide\"],\n initialValue: \"ace\"\n },\n mergeUndoDeltas: {\n values: [false, true, \"always\"],\n initialValue: true\n },\n behavioursEnabled: { initialValue: true },\n wrapBehavioursEnabled: { initialValue: true },\n enableAutoIndent: { initialValue: true },\n autoScrollEditorIntoView: {\n set: function (val) { this.setAutoScrollEditorIntoView(val); }\n },\n keyboardHandler: {\n set: function (val) { this.setKeyboardHandler(val); },\n get: function () { return this.$keybindingId; },\n handlesSet: true\n },\n value: {\n set: function (val) { this.session.setValue(val); },\n get: function () { return this.getValue(); },\n handlesSet: true,\n hidden: true\n },\n session: {\n set: function (val) { this.setSession(val); },\n get: function () { return this.session; },\n handlesSet: true,\n hidden: true\n },\n showLineNumbers: {\n set: function (show) {\n this.renderer.$gutterLayer.setShowLineNumbers(show);\n this.renderer.$loop.schedule(this.renderer.CHANGE_GUTTER);\n if (show && this.$relativeLineNumbers)\n relativeNumberRenderer.attach(this);\n else\n relativeNumberRenderer.detach(this);\n },\n initialValue: true\n },\n relativeLineNumbers: {\n set: function (value) {\n if (this.$showLineNumbers && value)\n relativeNumberRenderer.attach(this);\n else\n relativeNumberRenderer.detach(this);\n }\n },\n placeholder: {\n set: function (message) {\n if (!this.$updatePlaceholder) {\n this.$updatePlaceholder = function () {\n var hasValue = this.session && (this.renderer.$composition ||\n this.session.getLength() > 1 || this.session.getLine(0).length > 0);\n if (hasValue && this.renderer.placeholderNode) {\n this.renderer.off(\"afterRender\", this.$updatePlaceholder);\n dom.removeCssClass(this.container, \"ace_hasPlaceholder\");\n this.renderer.placeholderNode.remove();\n this.renderer.placeholderNode = null;\n }\n else if (!hasValue && !this.renderer.placeholderNode) {\n this.renderer.on(\"afterRender\", this.$updatePlaceholder);\n dom.addCssClass(this.container, \"ace_hasPlaceholder\");\n var el = dom.createElement(\"div\");\n el.className = \"ace_placeholder\";\n el.textContent = this.$placeholder || \"\";\n this.renderer.placeholderNode = el;\n this.renderer.content.appendChild(this.renderer.placeholderNode);\n }\n else if (!hasValue && this.renderer.placeholderNode) {\n this.renderer.placeholderNode.textContent = this.$placeholder || \"\";\n }\n }.bind(this);\n this.on(\"input\", this.$updatePlaceholder);\n }\n this.$updatePlaceholder();\n }\n },\n enableKeyboardAccessibility: {\n set: function (value) {\n var blurCommand = {\n name: \"blurTextInput\",\n description: \"Set focus to the editor content div to allow tabbing through the page\",\n bindKey: \"Esc\",\n exec: function (editor) {\n editor.blur();\n editor.renderer.scroller.focus();\n },\n readOnly: true\n };\n var focusOnEnterKeyup = function (e) {\n if (e.target == this.renderer.scroller && e.keyCode === keys['enter']) {\n e.preventDefault();\n var row = this.getCursorPosition().row;\n if (!this.isRowVisible(row))\n this.scrollToLine(row, true, true);\n this.focus();\n }\n };\n var gutterKeyboardHandler;\n if (value) {\n this.renderer.enableKeyboardAccessibility = true;\n this.renderer.keyboardFocusClassName = \"ace_keyboard-focus\";\n this.textInput.getElement().setAttribute(\"tabindex\", -1);\n this.textInput.setNumberOfExtraLines(useragent.isWin ? 3 : 0);\n this.renderer.scroller.setAttribute(\"tabindex\", 0);\n this.renderer.scroller.setAttribute(\"role\", \"group\");\n this.renderer.scroller.setAttribute(\"aria-roledescription\", nls(\"editor\"));\n this.renderer.scroller.classList.add(this.renderer.keyboardFocusClassName);\n this.renderer.scroller.setAttribute(\"aria-label\", nls(\"Editor content, press Enter to start editing, press Escape to exit\"));\n this.renderer.scroller.addEventListener(\"keyup\", focusOnEnterKeyup.bind(this));\n this.commands.addCommand(blurCommand);\n this.renderer.$gutter.setAttribute(\"tabindex\", 0);\n this.renderer.$gutter.setAttribute(\"aria-hidden\", false);\n this.renderer.$gutter.setAttribute(\"role\", \"group\");\n this.renderer.$gutter.setAttribute(\"aria-roledescription\", nls(\"editor\"));\n this.renderer.$gutter.setAttribute(\"aria-label\", nls(\"Editor gutter, press Enter to interact with controls using arrow keys, press Escape to exit\"));\n this.renderer.$gutter.classList.add(this.renderer.keyboardFocusClassName);\n this.renderer.content.setAttribute(\"aria-hidden\", true);\n if (!gutterKeyboardHandler)\n gutterKeyboardHandler = new GutterKeyboardHandler(this);\n gutterKeyboardHandler.addListener();\n }\n else {\n this.renderer.enableKeyboardAccessibility = false;\n this.textInput.getElement().setAttribute(\"tabindex\", 0);\n this.textInput.setNumberOfExtraLines(0);\n this.renderer.scroller.setAttribute(\"tabindex\", -1);\n this.renderer.scroller.removeAttribute(\"role\");\n this.renderer.scroller.removeAttribute(\"aria-roledescription\");\n this.renderer.scroller.classList.remove(this.renderer.keyboardFocusClassName);\n this.renderer.scroller.removeAttribute(\"aria-label\");\n this.renderer.scroller.removeEventListener(\"keyup\", focusOnEnterKeyup.bind(this));\n this.commands.removeCommand(blurCommand);\n this.renderer.content.removeAttribute(\"aria-hidden\");\n this.renderer.$gutter.setAttribute(\"tabindex\", -1);\n this.renderer.$gutter.setAttribute(\"aria-hidden\", true);\n this.renderer.$gutter.removeAttribute(\"role\");\n this.renderer.$gutter.removeAttribute(\"aria-roledescription\");\n this.renderer.$gutter.removeAttribute(\"aria-label\");\n this.renderer.$gutter.classList.remove(this.renderer.keyboardFocusClassName);\n if (gutterKeyboardHandler)\n gutterKeyboardHandler.removeListener();\n }\n },\n initialValue: false\n },\n customScrollbar: \"renderer\",\n hScrollBarAlwaysVisible: \"renderer\",\n vScrollBarAlwaysVisible: \"renderer\",\n highlightGutterLine: \"renderer\",\n animatedScroll: \"renderer\",\n showInvisibles: \"renderer\",\n showPrintMargin: \"renderer\",\n printMarginColumn: \"renderer\",\n printMargin: \"renderer\",\n fadeFoldWidgets: \"renderer\",\n showFoldWidgets: \"renderer\",\n displayIndentGuides: \"renderer\",\n highlightIndentGuides: \"renderer\",\n showGutter: \"renderer\",\n fontSize: \"renderer\",\n fontFamily: \"renderer\",\n maxLines: \"renderer\",\n minLines: \"renderer\",\n scrollPastEnd: \"renderer\",\n fixedWidthGutter: \"renderer\",\n theme: \"renderer\",\n hasCssTransforms: \"renderer\",\n maxPixelHeight: \"renderer\",\n useTextareaForIME: \"renderer\",\n useResizeObserver: \"renderer\",\n useSvgGutterIcons: \"renderer\",\n showFoldedAnnotations: \"renderer\",\n scrollSpeed: \"$mouseHandler\",\n dragDelay: \"$mouseHandler\",\n dragEnabled: \"$mouseHandler\",\n focusTimeout: \"$mouseHandler\",\n tooltipFollowsMouse: \"$mouseHandler\",\n firstLineNumber: \"session\",\n overwrite: \"session\",\n newLineMode: \"session\",\n useWorker: \"session\",\n useSoftTabs: \"session\",\n navigateWithinSoftTabs: \"session\",\n tabSize: \"session\",\n wrap: \"session\",\n indentedSoftWrap: \"session\",\n foldStyle: \"session\",\n mode: \"session\"\n});\nvar relativeNumberRenderer = {\n getText: function (session, row) {\n return (Math.abs(session.selection.lead.row - row) || (row + 1 + (row < 9 ? \"\\xb7\" : \"\"))) + \"\";\n },\n getWidth: function (session, lastLineNumber, config) {\n return Math.max(lastLineNumber.toString().length, (config.lastRow + 1).toString().length, 2) * config.characterWidth;\n },\n update: function (e, editor) {\n editor.renderer.$loop.schedule(editor.renderer.CHANGE_GUTTER);\n },\n attach: function (editor) {\n editor.renderer.$gutterLayer.$renderer = this;\n editor.on(\"changeSelection\", this.update);\n this.update(null, editor);\n },\n detach: function (editor) {\n if (editor.renderer.$gutterLayer.$renderer == this)\n editor.renderer.$gutterLayer.$renderer = null;\n editor.off(\"changeSelection\", this.update);\n this.update(null, editor);\n }\n};\nexports.Editor = Editor;\n\n});\n\nace.define(\"ace/layer/lines\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"], function(require, exports, module){\"use strict\";\nvar dom = require(\"../lib/dom\");\nvar Lines = /** @class */ (function () {\n function Lines(element, canvasHeight) {\n this.element = element;\n this.canvasHeight = canvasHeight || 500000;\n this.element.style.height = (this.canvasHeight * 2) + \"px\";\n this.cells = [];\n this.cellCache = [];\n this.$offsetCoefficient = 0;\n }\n Lines.prototype.moveContainer = function (config) {\n dom.translate(this.element, 0, -((config.firstRowScreen * config.lineHeight) % this.canvasHeight) - config.offset * this.$offsetCoefficient);\n };\n Lines.prototype.pageChanged = function (oldConfig, newConfig) {\n return (Math.floor((oldConfig.firstRowScreen * oldConfig.lineHeight) / this.canvasHeight) !==\n Math.floor((newConfig.firstRowScreen * newConfig.lineHeight) / this.canvasHeight));\n };\n Lines.prototype.computeLineTop = function (row, config, session) {\n var screenTop = config.firstRowScreen * config.lineHeight;\n var screenPage = Math.floor(screenTop / this.canvasHeight);\n var lineTop = session.documentToScreenRow(row, 0) * config.lineHeight;\n return lineTop - (screenPage * this.canvasHeight);\n };\n Lines.prototype.computeLineHeight = function (row, config, session) {\n return config.lineHeight * session.getRowLineCount(row);\n };\n Lines.prototype.getLength = function () {\n return this.cells.length;\n };\n Lines.prototype.get = function (index) {\n return this.cells[index];\n };\n Lines.prototype.shift = function () {\n this.$cacheCell(this.cells.shift());\n };\n Lines.prototype.pop = function () {\n this.$cacheCell(this.cells.pop());\n };\n Lines.prototype.push = function (cell) {\n if (Array.isArray(cell)) {\n this.cells.push.apply(this.cells, cell);\n var fragment = dom.createFragment(this.element);\n for (var i = 0; i < cell.length; i++) {\n fragment.appendChild(cell[i].element);\n }\n this.element.appendChild(fragment);\n }\n else {\n this.cells.push(cell);\n this.element.appendChild(cell.element);\n }\n };\n Lines.prototype.unshift = function (cell) {\n if (Array.isArray(cell)) {\n this.cells.unshift.apply(this.cells, cell);\n var fragment = dom.createFragment(this.element);\n for (var i = 0; i < cell.length; i++) {\n fragment.appendChild(cell[i].element);\n }\n if (this.element.firstChild)\n this.element.insertBefore(fragment, this.element.firstChild);\n else\n this.element.appendChild(fragment);\n }\n else {\n this.cells.unshift(cell);\n this.element.insertAdjacentElement(\"afterbegin\", cell.element);\n }\n };\n Lines.prototype.last = function () {\n if (this.cells.length)\n return this.cells[this.cells.length - 1];\n else\n return null;\n };\n Lines.prototype.$cacheCell = function (cell) {\n if (!cell)\n return;\n cell.element.remove();\n this.cellCache.push(cell);\n };\n Lines.prototype.createCell = function (row, config, session, initElement) {\n var cell = this.cellCache.pop();\n if (!cell) {\n var element = dom.createElement(\"div\");\n if (initElement)\n initElement(element);\n this.element.appendChild(element);\n cell = {\n element: element,\n text: \"\",\n row: row\n };\n }\n cell.row = row;\n return cell;\n };\n return Lines;\n}());\nexports.Lines = Lines;\n\n});\n\nace.define(\"ace/layer/gutter\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/lib/event_emitter\",\"ace/layer/lines\",\"ace/config\"], function(require, exports, module){\"use strict\";\nvar dom = require(\"../lib/dom\");\nvar oop = require(\"../lib/oop\");\nvar lang = require(\"../lib/lang\");\nvar EventEmitter = require(\"../lib/event_emitter\").EventEmitter;\nvar Lines = require(\"./lines\").Lines;\nvar nls = require(\"../config\").nls;\nvar Gutter = /** @class */ (function () {\n function Gutter(parentEl) {\n this.element = dom.createElement(\"div\");\n this.element.className = \"ace_layer ace_gutter-layer\";\n parentEl.appendChild(this.element);\n this.setShowFoldWidgets(this.$showFoldWidgets);\n this.gutterWidth = 0;\n this.$annotations = [];\n this.$updateAnnotations = this.$updateAnnotations.bind(this);\n this.$lines = new Lines(this.element);\n this.$lines.$offsetCoefficient = 1;\n }\n Gutter.prototype.setSession = function (session) {\n if (this.session)\n this.session.off(\"change\", this.$updateAnnotations);\n this.session = session;\n if (session)\n session.on(\"change\", this.$updateAnnotations);\n };\n Gutter.prototype.addGutterDecoration = function (row, className) {\n if (window.console)\n console.warn && console.warn(\"deprecated use session.addGutterDecoration\");\n this.session.addGutterDecoration(row, className);\n };\n Gutter.prototype.removeGutterDecoration = function (row, className) {\n if (window.console)\n console.warn && console.warn(\"deprecated use session.removeGutterDecoration\");\n this.session.removeGutterDecoration(row, className);\n };\n Gutter.prototype.setAnnotations = function (annotations) {\n this.$annotations = [];\n for (var i = 0; i < annotations.length; i++) {\n var annotation = annotations[i];\n var row = annotation.row;\n var rowInfo = this.$annotations[row];\n if (!rowInfo)\n rowInfo = this.$annotations[row] = { text: [], type: [] };\n var annoText = annotation.text;\n var annoType = annotation.type;\n annoText = annoText ? lang.escapeHTML(annoText) : annotation.html || \"\";\n if (rowInfo.text.indexOf(annoText) === -1) {\n rowInfo.text.push(annoText);\n rowInfo.type.push(annoType);\n }\n var className = annotation.className;\n if (className)\n rowInfo.className = className;\n else if (annoType == \"error\")\n rowInfo.className = \" ace_error\";\n else if (annoType == \"warning\" && rowInfo.className != \" ace_error\")\n rowInfo.className = \" ace_warning\";\n else if (annoType == \"info\" && (!rowInfo.className))\n rowInfo.className = \" ace_info\";\n }\n };\n Gutter.prototype.$updateAnnotations = function (delta) {\n if (!this.$annotations.length)\n return;\n var firstRow = delta.start.row;\n var len = delta.end.row - firstRow;\n if (len === 0) {\n }\n else if (delta.action == 'remove') {\n this.$annotations.splice(firstRow, len + 1, null);\n }\n else {\n var args = new Array(len + 1);\n args.unshift(firstRow, 1);\n this.$annotations.splice.apply(this.$annotations, args);\n }\n };\n Gutter.prototype.update = function (config) {\n this.config = config;\n var session = this.session;\n var firstRow = config.firstRow;\n var lastRow = Math.min(config.lastRow + config.gutterOffset, // needed to compensate for hor scollbar\n session.getLength() - 1);\n this.oldLastRow = lastRow;\n this.config = config;\n this.$lines.moveContainer(config);\n this.$updateCursorRow();\n var fold = session.getNextFoldLine(firstRow);\n var foldStart = fold ? fold.start.row : Infinity;\n var cell = null;\n var index = -1;\n var row = firstRow;\n while (true) {\n if (row > foldStart) {\n row = fold.end.row + 1;\n fold = session.getNextFoldLine(row, fold);\n foldStart = fold ? fold.start.row : Infinity;\n }\n if (row > lastRow) {\n while (this.$lines.getLength() > index + 1)\n this.$lines.pop();\n break;\n }\n cell = this.$lines.get(++index);\n if (cell) {\n cell.row = row;\n }\n else {\n cell = this.$lines.createCell(row, config, this.session, onCreateCell);\n this.$lines.push(cell);\n }\n this.$renderCell(cell, config, fold, row);\n row++;\n }\n this._signal(\"afterRender\");\n this.$updateGutterWidth(config);\n };\n Gutter.prototype.$updateGutterWidth = function (config) {\n var session = this.session;\n var gutterRenderer = session.gutterRenderer || this.$renderer;\n var firstLineNumber = session.$firstLineNumber;\n var lastLineText = this.$lines.last() ? this.$lines.last().text : \"\";\n if (this.$fixedWidth || session.$useWrapMode)\n lastLineText = session.getLength() + firstLineNumber - 1;\n var gutterWidth = gutterRenderer\n ? gutterRenderer.getWidth(session, lastLineText, config)\n : lastLineText.toString().length * config.characterWidth;\n var padding = this.$padding || this.$computePadding();\n gutterWidth += padding.left + padding.right;\n if (gutterWidth !== this.gutterWidth && !isNaN(gutterWidth)) {\n this.gutterWidth = gutterWidth;\n this.element.parentNode.style.width =\n this.element.style.width = Math.ceil(this.gutterWidth) + \"px\";\n this._signal(\"changeGutterWidth\", gutterWidth);\n }\n };\n Gutter.prototype.$updateCursorRow = function () {\n if (!this.$highlightGutterLine)\n return;\n var position = this.session.selection.getCursor();\n if (this.$cursorRow === position.row)\n return;\n this.$cursorRow = position.row;\n };\n Gutter.prototype.updateLineHighlight = function () {\n if (!this.$highlightGutterLine)\n return;\n var row = this.session.selection.cursor.row;\n this.$cursorRow = row;\n if (this.$cursorCell && this.$cursorCell.row == row)\n return;\n if (this.$cursorCell)\n this.$cursorCell.element.className = this.$cursorCell.element.className.replace(\"ace_gutter-active-line \", \"\");\n var cells = this.$lines.cells;\n this.$cursorCell = null;\n for (var i = 0; i < cells.length; i++) {\n var cell = cells[i];\n if (cell.row >= this.$cursorRow) {\n if (cell.row > this.$cursorRow) {\n var fold = this.session.getFoldLine(this.$cursorRow);\n if (i > 0 && fold && fold.start.row == cells[i - 1].row)\n cell = cells[i - 1];\n else\n break;\n }\n cell.element.className = \"ace_gutter-active-line \" + cell.element.className;\n this.$cursorCell = cell;\n break;\n }\n }\n };\n Gutter.prototype.scrollLines = function (config) {\n var oldConfig = this.config;\n this.config = config;\n this.$updateCursorRow();\n if (this.$lines.pageChanged(oldConfig, config))\n return this.update(config);\n this.$lines.moveContainer(config);\n var lastRow = Math.min(config.lastRow + config.gutterOffset, // needed to compensate for hor scollbar\n this.session.getLength() - 1);\n var oldLastRow = this.oldLastRow;\n this.oldLastRow = lastRow;\n if (!oldConfig || oldLastRow < config.firstRow)\n return this.update(config);\n if (lastRow < oldConfig.firstRow)\n return this.update(config);\n if (oldConfig.firstRow < config.firstRow)\n for (var row = this.session.getFoldedRowCount(oldConfig.firstRow, config.firstRow - 1); row > 0; row--)\n this.$lines.shift();\n if (oldLastRow > lastRow)\n for (var row = this.session.getFoldedRowCount(lastRow + 1, oldLastRow); row > 0; row--)\n this.$lines.pop();\n if (config.firstRow < oldConfig.firstRow) {\n this.$lines.unshift(this.$renderLines(config, config.firstRow, oldConfig.firstRow - 1));\n }\n if (lastRow > oldLastRow) {\n this.$lines.push(this.$renderLines(config, oldLastRow + 1, lastRow));\n }\n this.updateLineHighlight();\n this._signal(\"afterRender\");\n this.$updateGutterWidth(config);\n };\n Gutter.prototype.$renderLines = function (config, firstRow, lastRow) {\n var fragment = [];\n var row = firstRow;\n var foldLine = this.session.getNextFoldLine(row);\n var foldStart = foldLine ? foldLine.start.row : Infinity;\n while (true) {\n if (row > foldStart) {\n row = foldLine.end.row + 1;\n foldLine = this.session.getNextFoldLine(row, foldLine);\n foldStart = foldLine ? foldLine.start.row : Infinity;\n }\n if (row > lastRow)\n break;\n var cell = this.$lines.createCell(row, config, this.session, onCreateCell);\n this.$renderCell(cell, config, foldLine, row);\n fragment.push(cell);\n row++;\n }\n return fragment;\n };\n Gutter.prototype.$renderCell = function (cell, config, fold, row) {\n var element = cell.element;\n var session = this.session;\n var textNode = element.childNodes[0];\n var foldWidget = element.childNodes[1];\n var annotationNode = element.childNodes[2];\n var annotationIconNode = annotationNode.firstChild;\n var firstLineNumber = session.$firstLineNumber;\n var breakpoints = session.$breakpoints;\n var decorations = session.$decorations;\n var gutterRenderer = session.gutterRenderer || this.$renderer;\n var foldWidgets = this.$showFoldWidgets && session.foldWidgets;\n var foldStart = fold ? fold.start.row : Number.MAX_VALUE;\n var lineHeight = config.lineHeight + \"px\";\n var className = this.$useSvgGutterIcons ? \"ace_gutter-cell_svg-icons \" : \"ace_gutter-cell \";\n var iconClassName = this.$useSvgGutterIcons ? \"ace_icon_svg\" : \"ace_icon\";\n var rowText = (gutterRenderer\n ? gutterRenderer.getText(session, row)\n : row + firstLineNumber).toString();\n if (this.$highlightGutterLine) {\n if (row == this.$cursorRow || (fold && row < this.$cursorRow && row >= foldStart && this.$cursorRow <= fold.end.row)) {\n className += \"ace_gutter-active-line \";\n if (this.$cursorCell != cell) {\n if (this.$cursorCell)\n this.$cursorCell.element.className = this.$cursorCell.element.className.replace(\"ace_gutter-active-line \", \"\");\n this.$cursorCell = cell;\n }\n }\n }\n if (breakpoints[row])\n className += breakpoints[row];\n if (decorations[row])\n className += decorations[row];\n if (this.$annotations[row] && row !== foldStart)\n className += this.$annotations[row].className;\n if (foldWidgets) {\n var c = foldWidgets[row];\n if (c == null)\n c = foldWidgets[row] = session.getFoldWidget(row);\n }\n if (c) {\n var foldClass = \"ace_fold-widget ace_\" + c;\n var isClosedFold = c == \"start\" && row == foldStart && row < fold.end.row;\n if (isClosedFold) {\n foldClass += \" ace_closed\";\n var foldAnnotationClass = '';\n var annotationInFold = false;\n for (var i = row + 1; i <= fold.end.row; i++) {\n if (!this.$annotations[i])\n continue;\n if (this.$annotations[i].className === \" ace_error\") {\n annotationInFold = true;\n foldAnnotationClass = \" ace_error_fold\";\n break;\n }\n if (this.$annotations[i].className === \" ace_warning\") {\n annotationInFold = true;\n foldAnnotationClass = \" ace_warning_fold\";\n continue;\n }\n }\n className += foldAnnotationClass;\n }\n else\n foldClass += \" ace_open\";\n if (foldWidget.className != foldClass)\n foldWidget.className = foldClass;\n dom.setStyle(foldWidget.style, \"height\", lineHeight);\n dom.setStyle(foldWidget.style, \"display\", \"inline-block\");\n foldWidget.setAttribute(\"role\", \"button\");\n foldWidget.setAttribute(\"tabindex\", \"-1\");\n var foldRange = session.getFoldWidgetRange(row);\n if (foldRange)\n foldWidget.setAttribute(\"aria-label\", nls(\"Toggle code folding, rows $0 through $1\", [foldRange.start.row + 1, foldRange.end.row + 1]));\n else {\n if (fold)\n foldWidget.setAttribute(\"aria-label\", nls(\"Toggle code folding, rows $0 through $1\", [fold.start.row + 1, fold.end.row + 1]));\n else\n foldWidget.setAttribute(\"aria-label\", nls(\"Toggle code folding, row $0\", [row + 1]));\n }\n if (isClosedFold) {\n foldWidget.setAttribute(\"aria-expanded\", \"false\");\n foldWidget.setAttribute(\"title\", nls(\"Unfold code\"));\n }\n else {\n foldWidget.setAttribute(\"aria-expanded\", \"true\");\n foldWidget.setAttribute(\"title\", nls(\"Fold code\"));\n }\n }\n else {\n if (foldWidget) {\n dom.setStyle(foldWidget.style, \"display\", \"none\");\n foldWidget.setAttribute(\"tabindex\", \"0\");\n foldWidget.removeAttribute(\"role\");\n foldWidget.removeAttribute(\"aria-label\");\n }\n }\n if (annotationInFold && this.$showFoldedAnnotations) {\n annotationNode.className = \"ace_gutter_annotation\";\n annotationIconNode.className = iconClassName;\n annotationIconNode.className += foldAnnotationClass;\n dom.setStyle(annotationIconNode.style, \"height\", lineHeight);\n dom.setStyle(annotationNode.style, \"display\", \"block\");\n dom.setStyle(annotationNode.style, \"height\", lineHeight);\n annotationNode.setAttribute(\"aria-label\", nls(\"Read annotations row $0\", [rowText]));\n annotationNode.setAttribute(\"tabindex\", \"-1\");\n annotationNode.setAttribute(\"role\", \"button\");\n }\n else if (this.$annotations[row]) {\n annotationNode.className = \"ace_gutter_annotation\";\n annotationIconNode.className = iconClassName;\n if (this.$useSvgGutterIcons)\n annotationIconNode.className += this.$annotations[row].className;\n else\n element.classList.add(this.$annotations[row].className.replace(\" \", \"\"));\n dom.setStyle(annotationIconNode.style, \"height\", lineHeight);\n dom.setStyle(annotationNode.style, \"display\", \"block\");\n dom.setStyle(annotationNode.style, \"height\", lineHeight);\n annotationNode.setAttribute(\"aria-label\", nls(\"Read annotations row $0\", [rowText]));\n annotationNode.setAttribute(\"tabindex\", \"-1\");\n annotationNode.setAttribute(\"role\", \"button\");\n }\n else {\n dom.setStyle(annotationNode.style, \"display\", \"none\");\n annotationNode.removeAttribute(\"aria-label\");\n annotationNode.removeAttribute(\"role\");\n annotationNode.setAttribute(\"tabindex\", \"0\");\n }\n if (rowText !== textNode.data) {\n textNode.data = rowText;\n }\n if (element.className != className)\n element.className = className;\n dom.setStyle(cell.element.style, \"height\", this.$lines.computeLineHeight(row, config, session) + \"px\");\n dom.setStyle(cell.element.style, \"top\", this.$lines.computeLineTop(row, config, session) + \"px\");\n cell.text = rowText;\n if (annotationNode.style.display === \"none\" && foldWidget.style.display === \"none\")\n cell.element.setAttribute(\"aria-hidden\", true);\n else\n cell.element.setAttribute(\"aria-hidden\", false);\n return cell;\n };\n Gutter.prototype.setHighlightGutterLine = function (highlightGutterLine) {\n this.$highlightGutterLine = highlightGutterLine;\n };\n Gutter.prototype.setShowLineNumbers = function (show) {\n this.$renderer = !show && {\n getWidth: function () { return 0; },\n getText: function () { return \"\"; }\n };\n };\n Gutter.prototype.getShowLineNumbers = function () {\n return this.$showLineNumbers;\n };\n Gutter.prototype.setShowFoldWidgets = function (show) {\n if (show)\n dom.addCssClass(this.element, \"ace_folding-enabled\");\n else\n dom.removeCssClass(this.element, \"ace_folding-enabled\");\n this.$showFoldWidgets = show;\n this.$padding = null;\n };\n Gutter.prototype.getShowFoldWidgets = function () {\n return this.$showFoldWidgets;\n };\n Gutter.prototype.$computePadding = function () {\n if (!this.element.firstChild)\n return { left: 0, right: 0 };\n var style = dom.computedStyle(this.element.firstChild);\n this.$padding = {};\n this.$padding.left = (parseInt(style.borderLeftWidth) || 0)\n + (parseInt(style.paddingLeft) || 0) + 1;\n this.$padding.right = (parseInt(style.borderRightWidth) || 0)\n + (parseInt(style.paddingRight) || 0);\n return this.$padding;\n };\n Gutter.prototype.getRegion = function (point) {\n var padding = this.$padding || this.$computePadding();\n var rect = this.element.getBoundingClientRect();\n if (point.x < padding.left + rect.left)\n return \"markers\";\n if (this.$showFoldWidgets && point.x > rect.right - padding.right)\n return \"foldWidgets\";\n };\n return Gutter;\n}());\nGutter.prototype.$fixedWidth = false;\nGutter.prototype.$highlightGutterLine = true;\nGutter.prototype.$renderer = \"\";\nGutter.prototype.$showLineNumbers = true;\nGutter.prototype.$showFoldWidgets = true;\noop.implement(Gutter.prototype, EventEmitter);\nfunction onCreateCell(element) {\n var textNode = document.createTextNode('');\n element.appendChild(textNode);\n var foldWidget = dom.createElement(\"span\");\n element.appendChild(foldWidget);\n var annotationNode = dom.createElement(\"span\");\n element.appendChild(annotationNode);\n var annotationIconNode = dom.createElement(\"span\");\n annotationNode.appendChild(annotationIconNode);\n return element;\n}\nexports.Gutter = Gutter;\n\n});\n\nace.define(\"ace/layer/marker\",[\"require\",\"exports\",\"module\",\"ace/range\",\"ace/lib/dom\"], function(require, exports, module){\"use strict\";\nvar Range = require(\"../range\").Range;\nvar dom = require(\"../lib/dom\");\nvar Marker = /** @class */ (function () {\n function Marker(parentEl) {\n this.element = dom.createElement(\"div\");\n this.element.className = \"ace_layer ace_marker-layer\";\n parentEl.appendChild(this.element);\n }\n Marker.prototype.setPadding = function (padding) {\n this.$padding = padding;\n };\n Marker.prototype.setSession = function (session) {\n this.session = session;\n };\n Marker.prototype.setMarkers = function (markers) {\n this.markers = markers;\n };\n Marker.prototype.elt = function (className, css) {\n var x = this.i != -1 && this.element.childNodes[this.i];\n if (!x) {\n x = document.createElement(\"div\");\n this.element.appendChild(x);\n this.i = -1;\n }\n else {\n this.i++;\n }\n x.style.cssText = css;\n x.className = className;\n };\n Marker.prototype.update = function (config) {\n if (!config)\n return;\n this.config = config;\n this.i = 0;\n var html;\n for (var key in this.markers) {\n var marker = this.markers[key];\n if (!marker.range) {\n marker.update(html, this, this.session, config);\n continue;\n }\n var range = marker.range.clipRows(config.firstRow, config.lastRow);\n if (range.isEmpty())\n continue;\n range = range.toScreenRange(this.session);\n if (marker.renderer) {\n var top = this.$getTop(range.start.row, config);\n var left = this.$padding + range.start.column * config.characterWidth;\n marker.renderer(html, range, left, top, config);\n }\n else if (marker.type == \"fullLine\") {\n this.drawFullLineMarker(html, range, marker.clazz, config);\n }\n else if (marker.type == \"screenLine\") {\n this.drawScreenLineMarker(html, range, marker.clazz, config);\n }\n else if (range.isMultiLine()) {\n if (marker.type == \"text\")\n this.drawTextMarker(html, range, marker.clazz, config);\n else\n this.drawMultiLineMarker(html, range, marker.clazz, config);\n }\n else {\n this.drawSingleLineMarker(html, range, marker.clazz + \" ace_start\" + \" ace_br15\", config);\n }\n }\n if (this.i != -1) {\n while (this.i < this.element.childElementCount)\n this.element.removeChild(this.element.lastChild);\n }\n };\n Marker.prototype.$getTop = function (row, layerConfig) {\n return (row - layerConfig.firstRowScreen) * layerConfig.lineHeight;\n };\n Marker.prototype.drawTextMarker = function (stringBuilder, range, clazz, layerConfig, extraStyle) {\n var session = this.session;\n var start = range.start.row;\n var end = range.end.row;\n var row = start;\n var prev = 0;\n var curr = 0;\n var next = session.getScreenLastRowColumn(row);\n var lineRange = new Range(row, range.start.column, row, curr);\n for (; row <= end; row++) {\n lineRange.start.row = lineRange.end.row = row;\n lineRange.start.column = row == start ? range.start.column : session.getRowWrapIndent(row);\n lineRange.end.column = next;\n prev = curr;\n curr = next;\n next = row + 1 < end ? session.getScreenLastRowColumn(row + 1) : row == end ? 0 : range.end.column;\n this.drawSingleLineMarker(stringBuilder, lineRange, clazz + (row == start ? \" ace_start\" : \"\") + \" ace_br\"\n + getBorderClass(row == start || row == start + 1 && range.start.column, prev < curr, curr > next, row == end), layerConfig, row == end ? 0 : 1, extraStyle);\n }\n };\n Marker.prototype.drawMultiLineMarker = function (stringBuilder, range, clazz, config, extraStyle) {\n var padding = this.$padding;\n var height = config.lineHeight;\n var top = this.$getTop(range.start.row, config);\n var left = padding + range.start.column * config.characterWidth;\n extraStyle = extraStyle || \"\";\n if (this.session.$bidiHandler.isBidiRow(range.start.row)) {\n var range1 = range.clone();\n range1.end.row = range1.start.row;\n range1.end.column = this.session.getLine(range1.start.row).length;\n this.drawBidiSingleLineMarker(stringBuilder, range1, clazz + \" ace_br1 ace_start\", config, null, extraStyle);\n }\n else {\n this.elt(clazz + \" ace_br1 ace_start\", \"height:\" + height + \"px;\" + \"right:0;\" + \"top:\" + top + \"px;left:\" + left + \"px;\" + (extraStyle || \"\"));\n }\n if (this.session.$bidiHandler.isBidiRow(range.end.row)) {\n var range1 = range.clone();\n range1.start.row = range1.end.row;\n range1.start.column = 0;\n this.drawBidiSingleLineMarker(stringBuilder, range1, clazz + \" ace_br12\", config, null, extraStyle);\n }\n else {\n top = this.$getTop(range.end.row, config);\n var width = range.end.column * config.characterWidth;\n this.elt(clazz + \" ace_br12\", \"height:\" + height + \"px;\" +\n \"width:\" + width + \"px;\" +\n \"top:\" + top + \"px;\" +\n \"left:\" + padding + \"px;\" + (extraStyle || \"\"));\n }\n height = (range.end.row - range.start.row - 1) * config.lineHeight;\n if (height <= 0)\n return;\n top = this.$getTop(range.start.row + 1, config);\n var radiusClass = (range.start.column ? 1 : 0) | (range.end.column ? 0 : 8);\n this.elt(clazz + (radiusClass ? \" ace_br\" + radiusClass : \"\"), \"height:\" + height + \"px;\" +\n \"right:0;\" +\n \"top:\" + top + \"px;\" +\n \"left:\" + padding + \"px;\" + (extraStyle || \"\"));\n };\n Marker.prototype.drawSingleLineMarker = function (stringBuilder, range, clazz, config, extraLength, extraStyle) {\n if (this.session.$bidiHandler.isBidiRow(range.start.row))\n return this.drawBidiSingleLineMarker(stringBuilder, range, clazz, config, extraLength, extraStyle);\n var height = config.lineHeight;\n var width = (range.end.column + (extraLength || 0) - range.start.column) * config.characterWidth;\n var top = this.$getTop(range.start.row, config);\n var left = this.$padding + range.start.column * config.characterWidth;\n this.elt(clazz, \"height:\" + height + \"px;\" +\n \"width:\" + width + \"px;\" +\n \"top:\" + top + \"px;\" +\n \"left:\" + left + \"px;\" + (extraStyle || \"\"));\n };\n Marker.prototype.drawBidiSingleLineMarker = function (stringBuilder, range, clazz, config, extraLength, extraStyle) {\n var height = config.lineHeight, top = this.$getTop(range.start.row, config), padding = this.$padding;\n var selections = this.session.$bidiHandler.getSelections(range.start.column, range.end.column);\n selections.forEach(function (selection) {\n this.elt(clazz, \"height:\" + height + \"px;\" +\n \"width:\" + (selection.width + (extraLength || 0)) + \"px;\" +\n \"top:\" + top + \"px;\" +\n \"left:\" + (padding + selection.left) + \"px;\" + (extraStyle || \"\"));\n }, this);\n };\n Marker.prototype.drawFullLineMarker = function (stringBuilder, range, clazz, config, extraStyle) {\n var top = this.$getTop(range.start.row, config);\n var height = config.lineHeight;\n if (range.start.row != range.end.row)\n height += this.$getTop(range.end.row, config) - top;\n this.elt(clazz, \"height:\" + height + \"px;\" +\n \"top:\" + top + \"px;\" +\n \"left:0;right:0;\" + (extraStyle || \"\"));\n };\n Marker.prototype.drawScreenLineMarker = function (stringBuilder, range, clazz, config, extraStyle) {\n var top = this.$getTop(range.start.row, config);\n var height = config.lineHeight;\n this.elt(clazz, \"height:\" + height + \"px;\" +\n \"top:\" + top + \"px;\" +\n \"left:0;right:0;\" + (extraStyle || \"\"));\n };\n return Marker;\n}());\nMarker.prototype.$padding = 0;\nfunction getBorderClass(tl, tr, br, bl) {\n return (tl ? 1 : 0) | (tr ? 2 : 0) | (br ? 4 : 0) | (bl ? 8 : 0);\n}\nexports.Marker = Marker;\n\n});\n\nace.define(\"ace/layer/text_util\",[\"require\",\"exports\",\"module\"], function(require, exports, module){// Tokens for which Ace just uses a simple TextNode and does not add any special className.\nvar textTokens = new Set([\"text\", \"rparen\", \"lparen\"]);\nexports.isTextToken = function (tokenType) {\n return textTokens.has(tokenType);\n};\n\n});\n\nace.define(\"ace/layer/text\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/dom\",\"ace/lib/lang\",\"ace/layer/lines\",\"ace/lib/event_emitter\",\"ace/config\",\"ace/layer/text_util\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar dom = require(\"../lib/dom\");\nvar lang = require(\"../lib/lang\");\nvar Lines = require(\"./lines\").Lines;\nvar EventEmitter = require(\"../lib/event_emitter\").EventEmitter;\nvar nls = require(\"../config\").nls;\nvar isTextToken = require(\"./text_util\").isTextToken;\nvar Text = /** @class */ (function () {\n function Text(parentEl) {\n this.dom = dom;\n this.element = this.dom.createElement(\"div\");\n this.element.className = \"ace_layer ace_text-layer\";\n parentEl.appendChild(this.element);\n this.$updateEolChar = this.$updateEolChar.bind(this);\n this.$lines = new Lines(this.element);\n }\n Text.prototype.$updateEolChar = function () {\n var doc = this.session.doc;\n var unixMode = doc.getNewLineCharacter() == \"\\n\" && doc.getNewLineMode() != \"windows\";\n var EOL_CHAR = unixMode ? this.EOL_CHAR_LF : this.EOL_CHAR_CRLF;\n if (this.EOL_CHAR != EOL_CHAR) {\n this.EOL_CHAR = EOL_CHAR;\n return true;\n }\n };\n Text.prototype.setPadding = function (padding) {\n this.$padding = padding;\n this.element.style.margin = \"0 \" + padding + \"px\";\n };\n Text.prototype.getLineHeight = function () {\n return this.$fontMetrics.$characterSize.height || 0;\n };\n Text.prototype.getCharacterWidth = function () {\n return this.$fontMetrics.$characterSize.width || 0;\n };\n Text.prototype.$setFontMetrics = function (measure) {\n this.$fontMetrics = measure;\n this.$fontMetrics.on(\"changeCharacterSize\", function (e) {\n this._signal(\"changeCharacterSize\", e);\n }.bind(this));\n this.$pollSizeChanges();\n };\n Text.prototype.checkForSizeChanges = function () {\n this.$fontMetrics.checkForSizeChanges();\n };\n Text.prototype.$pollSizeChanges = function () {\n return this.$pollSizeChangesTimer = this.$fontMetrics.$pollSizeChanges();\n };\n Text.prototype.setSession = function (session) {\n this.session = session;\n if (session)\n this.$computeTabString();\n };\n Text.prototype.setShowInvisibles = function (showInvisibles) {\n if (this.showInvisibles == showInvisibles)\n return false;\n this.showInvisibles = showInvisibles;\n if (typeof showInvisibles == \"string\") {\n this.showSpaces = /tab/i.test(showInvisibles);\n this.showTabs = /space/i.test(showInvisibles);\n this.showEOL = /eol/i.test(showInvisibles);\n }\n else {\n this.showSpaces = this.showTabs = this.showEOL = showInvisibles;\n }\n this.$computeTabString();\n return true;\n };\n Text.prototype.setDisplayIndentGuides = function (display) {\n if (this.displayIndentGuides == display)\n return false;\n this.displayIndentGuides = display;\n this.$computeTabString();\n return true;\n };\n Text.prototype.setHighlightIndentGuides = function (highlight) {\n if (this.$highlightIndentGuides === highlight)\n return false;\n this.$highlightIndentGuides = highlight;\n return highlight;\n };\n Text.prototype.$computeTabString = function () {\n var tabSize = this.session.getTabSize();\n this.tabSize = tabSize;\n var tabStr = this.$tabStrings = [0];\n for (var i = 1; i < tabSize + 1; i++) {\n if (this.showTabs) {\n var span = this.dom.createElement(\"span\");\n span.className = \"ace_invisible ace_invisible_tab\";\n span.textContent = lang.stringRepeat(this.TAB_CHAR, i);\n tabStr.push(span);\n }\n else {\n tabStr.push(this.dom.createTextNode(lang.stringRepeat(\" \", i), this.element));\n }\n }\n if (this.displayIndentGuides) {\n this.$indentGuideRe = /\\s\\S| \\t|\\t |\\s$/;\n var className = \"ace_indent-guide\";\n var spaceClass = this.showSpaces ? \" ace_invisible ace_invisible_space\" : \"\";\n var spaceContent = this.showSpaces\n ? lang.stringRepeat(this.SPACE_CHAR, this.tabSize)\n : lang.stringRepeat(\" \", this.tabSize);\n var tabClass = this.showTabs ? \" ace_invisible ace_invisible_tab\" : \"\";\n var tabContent = this.showTabs\n ? lang.stringRepeat(this.TAB_CHAR, this.tabSize)\n : spaceContent;\n var span = this.dom.createElement(\"span\");\n span.className = className + spaceClass;\n span.textContent = spaceContent;\n this.$tabStrings[\" \"] = span;\n var span = this.dom.createElement(\"span\");\n span.className = className + tabClass;\n span.textContent = tabContent;\n this.$tabStrings[\"\\t\"] = span;\n }\n };\n Text.prototype.updateLines = function (config, firstRow, lastRow) {\n if (this.config.lastRow != config.lastRow ||\n this.config.firstRow != config.firstRow) {\n return this.update(config);\n }\n this.config = config;\n var first = Math.max(firstRow, config.firstRow);\n var last = Math.min(lastRow, config.lastRow);\n var lineElements = this.element.childNodes;\n var lineElementsIdx = 0;\n for (var row = config.firstRow; row < first; row++) {\n var foldLine = this.session.getFoldLine(row);\n if (foldLine) {\n if (foldLine.containsRow(first)) {\n first = foldLine.start.row;\n break;\n }\n else {\n row = foldLine.end.row;\n }\n }\n lineElementsIdx++;\n }\n var heightChanged = false;\n var row = first;\n var foldLine = this.session.getNextFoldLine(row);\n var foldStart = foldLine ? foldLine.start.row : Infinity;\n while (true) {\n if (row > foldStart) {\n row = foldLine.end.row + 1;\n foldLine = this.session.getNextFoldLine(row, foldLine);\n foldStart = foldLine ? foldLine.start.row : Infinity;\n }\n if (row > last)\n break;\n var lineElement = lineElements[lineElementsIdx++];\n if (lineElement) {\n this.dom.removeChildren(lineElement);\n this.$renderLine(lineElement, row, row == foldStart ? foldLine : false);\n if (heightChanged)\n lineElement.style.top = this.$lines.computeLineTop(row, config, this.session) + \"px\";\n var height = (config.lineHeight * this.session.getRowLength(row)) + \"px\";\n if (lineElement.style.height != height) {\n heightChanged = true;\n lineElement.style.height = height;\n }\n }\n row++;\n }\n if (heightChanged) {\n while (lineElementsIdx < this.$lines.cells.length) {\n var cell = this.$lines.cells[lineElementsIdx++];\n cell.element.style.top = this.$lines.computeLineTop(cell.row, config, this.session) + \"px\";\n }\n }\n };\n Text.prototype.scrollLines = function (config) {\n var oldConfig = this.config;\n this.config = config;\n if (this.$lines.pageChanged(oldConfig, config))\n return this.update(config);\n this.$lines.moveContainer(config);\n var lastRow = config.lastRow;\n var oldLastRow = oldConfig ? oldConfig.lastRow : -1;\n if (!oldConfig || oldLastRow < config.firstRow)\n return this.update(config);\n if (lastRow < oldConfig.firstRow)\n return this.update(config);\n if (!oldConfig || oldConfig.lastRow < config.firstRow)\n return this.update(config);\n if (config.lastRow < oldConfig.firstRow)\n return this.update(config);\n if (oldConfig.firstRow < config.firstRow)\n for (var row = this.session.getFoldedRowCount(oldConfig.firstRow, config.firstRow - 1); row > 0; row--)\n this.$lines.shift();\n if (oldConfig.lastRow > config.lastRow)\n for (var row = this.session.getFoldedRowCount(config.lastRow + 1, oldConfig.lastRow); row > 0; row--)\n this.$lines.pop();\n if (config.firstRow < oldConfig.firstRow) {\n this.$lines.unshift(this.$renderLinesFragment(config, config.firstRow, oldConfig.firstRow - 1));\n }\n if (config.lastRow > oldConfig.lastRow) {\n this.$lines.push(this.$renderLinesFragment(config, oldConfig.lastRow + 1, config.lastRow));\n }\n this.$highlightIndentGuide();\n };\n Text.prototype.$renderLinesFragment = function (config, firstRow, lastRow) {\n var fragment = [];\n var row = firstRow;\n var foldLine = this.session.getNextFoldLine(row);\n var foldStart = foldLine ? foldLine.start.row : Infinity;\n while (true) {\n if (row > foldStart) {\n row = foldLine.end.row + 1;\n foldLine = this.session.getNextFoldLine(row, foldLine);\n foldStart = foldLine ? foldLine.start.row : Infinity;\n }\n if (row > lastRow)\n break;\n var line = this.$lines.createCell(row, config, this.session);\n var lineEl = line.element;\n this.dom.removeChildren(lineEl);\n dom.setStyle(lineEl.style, \"height\", this.$lines.computeLineHeight(row, config, this.session) + \"px\");\n dom.setStyle(lineEl.style, \"top\", this.$lines.computeLineTop(row, config, this.session) + \"px\");\n this.$renderLine(lineEl, row, row == foldStart ? foldLine : false);\n if (this.$useLineGroups()) {\n lineEl.className = \"ace_line_group\";\n }\n else {\n lineEl.className = \"ace_line\";\n }\n fragment.push(line);\n row++;\n }\n return fragment;\n };\n Text.prototype.update = function (config) {\n this.$lines.moveContainer(config);\n this.config = config;\n var firstRow = config.firstRow;\n var lastRow = config.lastRow;\n var lines = this.$lines;\n while (lines.getLength())\n lines.pop();\n lines.push(this.$renderLinesFragment(config, firstRow, lastRow));\n };\n Text.prototype.$renderToken = function (parent, screenColumn, token, value) {\n var self = this;\n var re = /(\\t)|( +)|([\\x00-\\x1f\\x80-\\xa0\\xad\\u1680\\u180E\\u2000-\\u200f\\u2028\\u2029\\u202F\\u205F\\uFEFF\\uFFF9-\\uFFFC\\u2066\\u2067\\u2068\\u202A\\u202B\\u202D\\u202E\\u202C\\u2069]+)|(\\u3000)|([\\u1100-\\u115F\\u11A3-\\u11A7\\u11FA-\\u11FF\\u2329-\\u232A\\u2E80-\\u2E99\\u2E9B-\\u2EF3\\u2F00-\\u2FD5\\u2FF0-\\u2FFB\\u3001-\\u303E\\u3041-\\u3096\\u3099-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u3190-\\u31BA\\u31C0-\\u31E3\\u31F0-\\u321E\\u3220-\\u3247\\u3250-\\u32FE\\u3300-\\u4DBF\\u4E00-\\uA48C\\uA490-\\uA4C6\\uA960-\\uA97C\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFAFF\\uFE10-\\uFE19\\uFE30-\\uFE52\\uFE54-\\uFE66\\uFE68-\\uFE6B\\uFF01-\\uFF60\\uFFE0-\\uFFE6]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF])/g;\n var valueFragment = this.dom.createFragment(this.element);\n var m;\n var i = 0;\n while (m = re.exec(value)) {\n var tab = m[1];\n var simpleSpace = m[2];\n var controlCharacter = m[3];\n var cjkSpace = m[4];\n var cjk = m[5];\n if (!self.showSpaces && simpleSpace)\n continue;\n var before = i != m.index ? value.slice(i, m.index) : \"\";\n i = m.index + m[0].length;\n if (before) {\n valueFragment.appendChild(this.dom.createTextNode(before, this.element));\n }\n if (tab) {\n var tabSize = self.session.getScreenTabSize(screenColumn + m.index);\n valueFragment.appendChild(self.$tabStrings[tabSize].cloneNode(true));\n screenColumn += tabSize - 1;\n }\n else if (simpleSpace) {\n if (self.showSpaces) {\n var span = this.dom.createElement(\"span\");\n span.className = \"ace_invisible ace_invisible_space\";\n span.textContent = lang.stringRepeat(self.SPACE_CHAR, simpleSpace.length);\n valueFragment.appendChild(span);\n }\n else {\n valueFragment.appendChild(this.dom.createTextNode(simpleSpace, this.element));\n }\n }\n else if (controlCharacter) {\n var span = this.dom.createElement(\"span\");\n span.className = \"ace_invisible ace_invisible_space ace_invalid\";\n span.textContent = lang.stringRepeat(self.SPACE_CHAR, controlCharacter.length);\n valueFragment.appendChild(span);\n }\n else if (cjkSpace) {\n screenColumn += 1;\n var span = this.dom.createElement(\"span\");\n span.style.width = (self.config.characterWidth * 2) + \"px\";\n span.className = self.showSpaces ? \"ace_cjk ace_invisible ace_invisible_space\" : \"ace_cjk\";\n span.textContent = self.showSpaces ? self.SPACE_CHAR : cjkSpace;\n valueFragment.appendChild(span);\n }\n else if (cjk) {\n screenColumn += 1;\n var span = this.dom.createElement(\"span\");\n span.style.width = (self.config.characterWidth * 2) + \"px\";\n span.className = \"ace_cjk\";\n span.textContent = cjk;\n valueFragment.appendChild(span);\n }\n }\n valueFragment.appendChild(this.dom.createTextNode(i ? value.slice(i) : value, this.element));\n if (!isTextToken(token.type)) {\n var classes = \"ace_\" + token.type.replace(/\\./g, \" ace_\");\n var span = this.dom.createElement(\"span\");\n if (token.type == \"fold\") {\n span.style.width = (token.value.length * this.config.characterWidth) + \"px\";\n span.setAttribute(\"title\", nls(\"Unfold code\"));\n }\n span.className = classes;\n span.appendChild(valueFragment);\n parent.appendChild(span);\n }\n else {\n parent.appendChild(valueFragment);\n }\n return screenColumn + value.length;\n };\n Text.prototype.renderIndentGuide = function (parent, value, max) {\n var cols = value.search(this.$indentGuideRe);\n if (cols <= 0 || cols >= max)\n return value;\n if (value[0] == \" \") {\n cols -= cols % this.tabSize;\n var count = cols / this.tabSize;\n for (var i = 0; i < count; i++) {\n parent.appendChild(this.$tabStrings[\" \"].cloneNode(true));\n }\n this.$highlightIndentGuide();\n return value.substr(cols);\n }\n else if (value[0] == \"\\t\") {\n for (var i = 0; i < cols; i++) {\n parent.appendChild(this.$tabStrings[\"\\t\"].cloneNode(true));\n }\n this.$highlightIndentGuide();\n return value.substr(cols);\n }\n this.$highlightIndentGuide();\n return value;\n };\n Text.prototype.$highlightIndentGuide = function () {\n if (!this.$highlightIndentGuides || !this.displayIndentGuides)\n return;\n this.$highlightIndentGuideMarker = {\n indentLevel: undefined,\n start: undefined,\n end: undefined,\n dir: undefined\n };\n var lines = this.session.doc.$lines;\n if (!lines)\n return;\n var cursor = this.session.selection.getCursor();\n var initialIndent = /^\\s*/.exec(this.session.doc.getLine(cursor.row))[0].length;\n var elementIndentLevel = Math.floor(initialIndent / this.tabSize);\n this.$highlightIndentGuideMarker = {\n indentLevel: elementIndentLevel,\n start: cursor.row\n };\n var bracketHighlight = this.session.$bracketHighlight;\n if (bracketHighlight) {\n var ranges = this.session.$bracketHighlight.ranges;\n for (var i = 0; i < ranges.length; i++) {\n if (cursor.row !== ranges[i].start.row) {\n this.$highlightIndentGuideMarker.end = ranges[i].start.row;\n if (cursor.row > ranges[i].start.row) {\n this.$highlightIndentGuideMarker.dir = -1;\n }\n else {\n this.$highlightIndentGuideMarker.dir = 1;\n }\n break;\n }\n }\n }\n if (!this.$highlightIndentGuideMarker.end) {\n if (lines[cursor.row] !== '' && cursor.column === lines[cursor.row].length) {\n this.$highlightIndentGuideMarker.dir = 1;\n for (var i = cursor.row + 1; i < lines.length; i++) {\n var line = lines[i];\n var currentIndent = /^\\s*/.exec(line)[0].length;\n if (line !== '') {\n this.$highlightIndentGuideMarker.end = i;\n if (currentIndent <= initialIndent)\n break;\n }\n }\n }\n }\n this.$renderHighlightIndentGuide();\n };\n Text.prototype.$clearActiveIndentGuide = function () {\n var cells = this.$lines.cells;\n for (var i = 0; i < cells.length; i++) {\n var cell = cells[i];\n var childNodes = cell.element.childNodes;\n if (childNodes.length > 0) {\n for (var j = 0; j < childNodes.length; j++) {\n if (childNodes[j].classList && childNodes[j].classList.contains(\"ace_indent-guide-active\")) {\n childNodes[j].classList.remove(\"ace_indent-guide-active\");\n break;\n }\n }\n }\n }\n };\n Text.prototype.$setIndentGuideActive = function (cell, indentLevel) {\n var line = this.session.doc.getLine(cell.row);\n if (line !== \"\") {\n var childNodes = cell.element.childNodes;\n if (childNodes) {\n var node = childNodes[indentLevel - 1];\n if (node && node.classList && node.classList.contains(\"ace_indent-guide\"))\n node.classList.add(\"ace_indent-guide-active\");\n }\n }\n };\n Text.prototype.$renderHighlightIndentGuide = function () {\n if (!this.$lines)\n return;\n var cells = this.$lines.cells;\n this.$clearActiveIndentGuide();\n var indentLevel = this.$highlightIndentGuideMarker.indentLevel;\n if (indentLevel !== 0) {\n if (this.$highlightIndentGuideMarker.dir === 1) {\n for (var i = 0; i < cells.length; i++) {\n var cell = cells[i];\n if (this.$highlightIndentGuideMarker.end && cell.row >= this.$highlightIndentGuideMarker.start\n + 1) {\n if (cell.row >= this.$highlightIndentGuideMarker.end)\n break;\n this.$setIndentGuideActive(cell, indentLevel);\n }\n }\n }\n else {\n for (var i = cells.length - 1; i >= 0; i--) {\n var cell = cells[i];\n if (this.$highlightIndentGuideMarker.end && cell.row < this.$highlightIndentGuideMarker.start) {\n if (cell.row <= this.$highlightIndentGuideMarker.end)\n break;\n this.$setIndentGuideActive(cell, indentLevel);\n }\n }\n }\n }\n };\n Text.prototype.$createLineElement = function (parent) {\n var lineEl = this.dom.createElement(\"div\");\n lineEl.className = \"ace_line\";\n lineEl.style.height = this.config.lineHeight + \"px\";\n return lineEl;\n };\n Text.prototype.$renderWrappedLine = function (parent, tokens, splits) {\n var chars = 0;\n var split = 0;\n var splitChars = splits[0];\n var screenColumn = 0;\n var lineEl = this.$createLineElement();\n parent.appendChild(lineEl);\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n var value = token.value;\n if (i == 0 && this.displayIndentGuides) {\n chars = value.length;\n value = this.renderIndentGuide(lineEl, value, splitChars);\n if (!value)\n continue;\n chars -= value.length;\n }\n if (chars + value.length < splitChars) {\n screenColumn = this.$renderToken(lineEl, screenColumn, token, value);\n chars += value.length;\n }\n else {\n while (chars + value.length >= splitChars) {\n screenColumn = this.$renderToken(lineEl, screenColumn, token, value.substring(0, splitChars - chars));\n value = value.substring(splitChars - chars);\n chars = splitChars;\n lineEl = this.$createLineElement();\n parent.appendChild(lineEl);\n lineEl.appendChild(this.dom.createTextNode(lang.stringRepeat(\"\\xa0\", splits.indent), this.element));\n split++;\n screenColumn = 0;\n splitChars = splits[split] || Number.MAX_VALUE;\n }\n if (value.length != 0) {\n chars += value.length;\n screenColumn = this.$renderToken(lineEl, screenColumn, token, value);\n }\n }\n }\n if (splits[splits.length - 1] > this.MAX_LINE_LENGTH)\n this.$renderOverflowMessage(lineEl, screenColumn, null, \"\", true);\n };\n Text.prototype.$renderSimpleLine = function (parent, tokens) {\n var screenColumn = 0;\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n var value = token.value;\n if (i == 0 && this.displayIndentGuides) {\n value = this.renderIndentGuide(parent, value);\n if (!value)\n continue;\n }\n if (screenColumn + value.length > this.MAX_LINE_LENGTH)\n return this.$renderOverflowMessage(parent, screenColumn, token, value);\n screenColumn = this.$renderToken(parent, screenColumn, token, value);\n }\n };\n Text.prototype.$renderOverflowMessage = function (parent, screenColumn, token, value, hide) {\n token && this.$renderToken(parent, screenColumn, token, value.slice(0, this.MAX_LINE_LENGTH - screenColumn));\n var overflowEl = this.dom.createElement(\"span\");\n overflowEl.className = \"ace_inline_button ace_keyword ace_toggle_wrap\";\n overflowEl.textContent = hide ? \"\" : \"\";\n parent.appendChild(overflowEl);\n };\n Text.prototype.$renderLine = function (parent, row, foldLine) {\n if (!foldLine && foldLine != false)\n foldLine = this.session.getFoldLine(row);\n if (foldLine)\n var tokens = this.$getFoldLineTokens(row, foldLine);\n else\n var tokens = this.session.getTokens(row);\n var lastLineEl = parent;\n if (tokens.length) {\n var splits = this.session.getRowSplitData(row);\n if (splits && splits.length) {\n this.$renderWrappedLine(parent, tokens, splits);\n var lastLineEl = parent.lastChild;\n }\n else {\n var lastLineEl = parent;\n if (this.$useLineGroups()) {\n lastLineEl = this.$createLineElement();\n parent.appendChild(lastLineEl);\n }\n this.$renderSimpleLine(lastLineEl, tokens);\n }\n }\n else if (this.$useLineGroups()) {\n lastLineEl = this.$createLineElement();\n parent.appendChild(lastLineEl);\n }\n if (this.showEOL && lastLineEl) {\n if (foldLine)\n row = foldLine.end.row;\n var invisibleEl = this.dom.createElement(\"span\");\n invisibleEl.className = \"ace_invisible ace_invisible_eol\";\n invisibleEl.textContent = row == this.session.getLength() - 1 ? this.EOF_CHAR : this.EOL_CHAR;\n lastLineEl.appendChild(invisibleEl);\n }\n };\n Text.prototype.$getFoldLineTokens = function (row, foldLine) {\n var session = this.session;\n var renderTokens = [];\n function addTokens(tokens, from, to) {\n var idx = 0, col = 0;\n while ((col + tokens[idx].value.length) < from) {\n col += tokens[idx].value.length;\n idx++;\n if (idx == tokens.length)\n return;\n }\n if (col != from) {\n var value = tokens[idx].value.substring(from - col);\n if (value.length > (to - from))\n value = value.substring(0, to - from);\n renderTokens.push({\n type: tokens[idx].type,\n value: value\n });\n col = from + value.length;\n idx += 1;\n }\n while (col < to && idx < tokens.length) {\n var value = tokens[idx].value;\n if (value.length + col > to) {\n renderTokens.push({\n type: tokens[idx].type,\n value: value.substring(0, to - col)\n });\n }\n else\n renderTokens.push(tokens[idx]);\n col += value.length;\n idx += 1;\n }\n }\n var tokens = session.getTokens(row);\n foldLine.walk(function (placeholder, row, column, lastColumn, isNewRow) {\n if (placeholder != null) {\n renderTokens.push({\n type: \"fold\",\n value: placeholder\n });\n }\n else {\n if (isNewRow)\n tokens = session.getTokens(row);\n if (tokens.length)\n addTokens(tokens, lastColumn, column);\n }\n }, foldLine.end.row, this.session.getLine(foldLine.end.row).length);\n return renderTokens;\n };\n Text.prototype.$useLineGroups = function () {\n return this.session.getUseWrapMode();\n };\n return Text;\n}());\nText.prototype.EOF_CHAR = \"\\xB6\";\nText.prototype.EOL_CHAR_LF = \"\\xAC\";\nText.prototype.EOL_CHAR_CRLF = \"\\xa4\";\nText.prototype.EOL_CHAR = Text.prototype.EOL_CHAR_LF;\nText.prototype.TAB_CHAR = \"\\u2014\"; //\"\\u21E5\";\nText.prototype.SPACE_CHAR = \"\\xB7\";\nText.prototype.$padding = 0;\nText.prototype.MAX_LINE_LENGTH = 10000;\nText.prototype.showInvisibles = false;\nText.prototype.showSpaces = false;\nText.prototype.showTabs = false;\nText.prototype.showEOL = false;\nText.prototype.displayIndentGuides = true;\nText.prototype.$highlightIndentGuides = true;\nText.prototype.$tabStrings = [];\nText.prototype.destroy = {};\nText.prototype.onChangeTabSize = Text.prototype.$computeTabString;\noop.implement(Text.prototype, EventEmitter);\nexports.Text = Text;\n\n});\n\nace.define(\"ace/layer/cursor\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"], function(require, exports, module){\"use strict\";\nvar dom = require(\"../lib/dom\");\nvar Cursor = /** @class */ (function () {\n function Cursor(parentEl) {\n this.element = dom.createElement(\"div\");\n this.element.className = \"ace_layer ace_cursor-layer\";\n parentEl.appendChild(this.element);\n this.isVisible = false;\n this.isBlinking = true;\n this.blinkInterval = 1000;\n this.smoothBlinking = false;\n this.cursors = [];\n this.cursor = this.addCursor();\n dom.addCssClass(this.element, \"ace_hidden-cursors\");\n this.$updateCursors = this.$updateOpacity.bind(this);\n }\n Cursor.prototype.$updateOpacity = function (val) {\n var cursors = this.cursors;\n for (var i = cursors.length; i--;)\n dom.setStyle(cursors[i].style, \"opacity\", val ? \"\" : \"0\");\n };\n Cursor.prototype.$startCssAnimation = function () {\n var cursors = this.cursors;\n for (var i = cursors.length; i--;)\n cursors[i].style.animationDuration = this.blinkInterval + \"ms\";\n this.$isAnimating = true;\n setTimeout(function () {\n if (this.$isAnimating) {\n dom.addCssClass(this.element, \"ace_animate-blinking\");\n }\n }.bind(this));\n };\n Cursor.prototype.$stopCssAnimation = function () {\n this.$isAnimating = false;\n dom.removeCssClass(this.element, \"ace_animate-blinking\");\n };\n Cursor.prototype.setPadding = function (padding) {\n this.$padding = padding;\n };\n Cursor.prototype.setSession = function (session) {\n this.session = session;\n };\n Cursor.prototype.setBlinking = function (blinking) {\n if (blinking != this.isBlinking) {\n this.isBlinking = blinking;\n this.restartTimer();\n }\n };\n Cursor.prototype.setBlinkInterval = function (blinkInterval) {\n if (blinkInterval != this.blinkInterval) {\n this.blinkInterval = blinkInterval;\n this.restartTimer();\n }\n };\n Cursor.prototype.setSmoothBlinking = function (smoothBlinking) {\n if (smoothBlinking != this.smoothBlinking) {\n this.smoothBlinking = smoothBlinking;\n dom.setCssClass(this.element, \"ace_smooth-blinking\", smoothBlinking);\n this.$updateCursors(true);\n this.restartTimer();\n }\n };\n Cursor.prototype.addCursor = function () {\n var el = dom.createElement(\"div\");\n el.className = \"ace_cursor\";\n this.element.appendChild(el);\n this.cursors.push(el);\n return el;\n };\n Cursor.prototype.removeCursor = function () {\n if (this.cursors.length > 1) {\n var el = this.cursors.pop();\n el.parentNode.removeChild(el);\n return el;\n }\n };\n Cursor.prototype.hideCursor = function () {\n this.isVisible = false;\n dom.addCssClass(this.element, \"ace_hidden-cursors\");\n this.restartTimer();\n };\n Cursor.prototype.showCursor = function () {\n this.isVisible = true;\n dom.removeCssClass(this.element, \"ace_hidden-cursors\");\n this.restartTimer();\n };\n Cursor.prototype.restartTimer = function () {\n var update = this.$updateCursors;\n clearInterval(this.intervalId);\n clearTimeout(this.timeoutId);\n this.$stopCssAnimation();\n if (this.smoothBlinking) {\n this.$isSmoothBlinking = false;\n dom.removeCssClass(this.element, \"ace_smooth-blinking\");\n }\n update(true);\n if (!this.isBlinking || !this.blinkInterval || !this.isVisible) {\n this.$stopCssAnimation();\n return;\n }\n if (this.smoothBlinking) {\n this.$isSmoothBlinking = true;\n setTimeout(function () {\n if (this.$isSmoothBlinking) {\n dom.addCssClass(this.element, \"ace_smooth-blinking\");\n }\n }.bind(this));\n }\n if (dom.HAS_CSS_ANIMATION) {\n this.$startCssAnimation();\n }\n else {\n var blink = function () {\n this.timeoutId = setTimeout(function () {\n update(false);\n }, 0.6 * this.blinkInterval);\n }.bind(this);\n this.intervalId = setInterval(function () {\n update(true);\n blink();\n }, this.blinkInterval);\n blink();\n }\n };\n Cursor.prototype.getPixelPosition = function (position, onScreen) {\n if (!this.config || !this.session)\n return { left: 0, top: 0 };\n if (!position)\n position = this.session.selection.getCursor();\n var pos = this.session.documentToScreenPosition(position);\n var cursorLeft = this.$padding + (this.session.$bidiHandler.isBidiRow(pos.row, position.row)\n ? this.session.$bidiHandler.getPosLeft(pos.column)\n : pos.column * this.config.characterWidth);\n var cursorTop = (pos.row - (onScreen ? this.config.firstRowScreen : 0)) *\n this.config.lineHeight;\n return { left: cursorLeft, top: cursorTop };\n };\n Cursor.prototype.isCursorInView = function (pixelPos, config) {\n return pixelPos.top >= 0 && pixelPos.top < config.maxHeight;\n };\n Cursor.prototype.update = function (config) {\n this.config = config;\n var selections = this.session.$selectionMarkers;\n var i = 0, cursorIndex = 0;\n if (selections === undefined || selections.length === 0) {\n selections = [{ cursor: null }];\n }\n for (var i = 0, n = selections.length; i < n; i++) {\n var pixelPos = this.getPixelPosition(selections[i].cursor, true);\n if ((pixelPos.top > config.height + config.offset ||\n pixelPos.top < 0) && i > 1) {\n continue;\n }\n var element = this.cursors[cursorIndex++] || this.addCursor();\n var style = element.style;\n if (!this.drawCursor) {\n if (!this.isCursorInView(pixelPos, config)) {\n dom.setStyle(style, \"display\", \"none\");\n }\n else {\n dom.setStyle(style, \"display\", \"block\");\n dom.translate(element, pixelPos.left, pixelPos.top);\n dom.setStyle(style, \"width\", Math.round(config.characterWidth) + \"px\");\n dom.setStyle(style, \"height\", config.lineHeight + \"px\");\n }\n }\n else {\n this.drawCursor(element, pixelPos, config, selections[i], this.session);\n }\n }\n while (this.cursors.length > cursorIndex)\n this.removeCursor();\n var overwrite = this.session.getOverwrite();\n this.$setOverwrite(overwrite);\n this.$pixelPos = pixelPos;\n this.restartTimer();\n };\n Cursor.prototype.$setOverwrite = function (overwrite) {\n if (overwrite != this.overwrite) {\n this.overwrite = overwrite;\n if (overwrite)\n dom.addCssClass(this.element, \"ace_overwrite-cursors\");\n else\n dom.removeCssClass(this.element, \"ace_overwrite-cursors\");\n }\n };\n Cursor.prototype.destroy = function () {\n clearInterval(this.intervalId);\n clearTimeout(this.timeoutId);\n };\n return Cursor;\n}());\nCursor.prototype.$padding = 0;\nCursor.prototype.drawCursor = null;\nexports.Cursor = Cursor;\n\n});\n\nace.define(\"ace/scrollbar\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/dom\",\"ace/lib/event\",\"ace/lib/event_emitter\"], function(require, exports, module){\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar oop = require(\"./lib/oop\");\nvar dom = require(\"./lib/dom\");\nvar event = require(\"./lib/event\");\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar MAX_SCROLL_H = 0x8000;\nvar Scrollbar = /** @class */ (function () {\n function Scrollbar(parent, classSuffix) {\n this.element = dom.createElement(\"div\");\n this.element.className = \"ace_scrollbar ace_scrollbar\" + classSuffix;\n this.inner = dom.createElement(\"div\");\n this.inner.className = \"ace_scrollbar-inner\";\n this.inner.textContent = \"\\xa0\";\n this.element.appendChild(this.inner);\n parent.appendChild(this.element);\n this.setVisible(false);\n this.skipEvent = false;\n event.addListener(this.element, \"scroll\", this.onScroll.bind(this));\n event.addListener(this.element, \"mousedown\", event.preventDefault);\n }\n Scrollbar.prototype.setVisible = function (isVisible) {\n this.element.style.display = isVisible ? \"\" : \"none\";\n this.isVisible = isVisible;\n this.coeff = 1;\n };\n return Scrollbar;\n}());\noop.implement(Scrollbar.prototype, EventEmitter);\nvar VScrollBar = /** @class */ (function (_super) {\n __extends(VScrollBar, _super);\n function VScrollBar(parent, renderer) {\n var _this = _super.call(this, parent, '-v') || this;\n _this.scrollTop = 0;\n _this.scrollHeight = 0;\n renderer.$scrollbarWidth =\n _this.width = dom.scrollbarWidth(parent.ownerDocument);\n _this.inner.style.width =\n _this.element.style.width = (_this.width || 15) + 5 + \"px\";\n _this.$minWidth = 0;\n return _this;\n }\n VScrollBar.prototype.onScroll = function () {\n if (!this.skipEvent) {\n this.scrollTop = this.element.scrollTop;\n if (this.coeff != 1) {\n var h = this.element.clientHeight / this.scrollHeight;\n this.scrollTop = this.scrollTop * (1 - h) / (this.coeff - h);\n }\n this._emit(\"scroll\", { data: this.scrollTop });\n }\n this.skipEvent = false;\n };\n VScrollBar.prototype.getWidth = function () {\n return Math.max(this.isVisible ? this.width : 0, this.$minWidth || 0);\n };\n VScrollBar.prototype.setHeight = function (height) {\n this.element.style.height = height + \"px\";\n };\n VScrollBar.prototype.setScrollHeight = function (height) {\n this.scrollHeight = height;\n if (height > MAX_SCROLL_H) {\n this.coeff = MAX_SCROLL_H / height;\n height = MAX_SCROLL_H;\n }\n else if (this.coeff != 1) {\n this.coeff = 1;\n }\n this.inner.style.height = height + \"px\";\n };\n VScrollBar.prototype.setScrollTop = function (scrollTop) {\n if (this.scrollTop != scrollTop) {\n this.skipEvent = true;\n this.scrollTop = scrollTop;\n this.element.scrollTop = scrollTop * this.coeff;\n }\n };\n return VScrollBar;\n}(Scrollbar));\nVScrollBar.prototype.setInnerHeight = VScrollBar.prototype.setScrollHeight;\nvar HScrollBar = /** @class */ (function (_super) {\n __extends(HScrollBar, _super);\n function HScrollBar(parent, renderer) {\n var _this = _super.call(this, parent, '-h') || this;\n _this.scrollLeft = 0;\n _this.height = renderer.$scrollbarWidth;\n _this.inner.style.height =\n _this.element.style.height = (_this.height || 15) + 5 + \"px\";\n return _this;\n }\n HScrollBar.prototype.onScroll = function () {\n if (!this.skipEvent) {\n this.scrollLeft = this.element.scrollLeft;\n this._emit(\"scroll\", { data: this.scrollLeft });\n }\n this.skipEvent = false;\n };\n HScrollBar.prototype.getHeight = function () {\n return this.isVisible ? this.height : 0;\n };\n HScrollBar.prototype.setWidth = function (width) {\n this.element.style.width = width + \"px\";\n };\n HScrollBar.prototype.setInnerWidth = function (width) {\n this.inner.style.width = width + \"px\";\n };\n HScrollBar.prototype.setScrollWidth = function (width) {\n this.inner.style.width = width + \"px\";\n };\n HScrollBar.prototype.setScrollLeft = function (scrollLeft) {\n if (this.scrollLeft != scrollLeft) {\n this.skipEvent = true;\n this.scrollLeft = this.element.scrollLeft = scrollLeft;\n }\n };\n return HScrollBar;\n}(Scrollbar));\nexports.ScrollBar = VScrollBar; // backward compatibility\nexports.ScrollBarV = VScrollBar; // backward compatibility\nexports.ScrollBarH = HScrollBar; // backward compatibility\nexports.VScrollBar = VScrollBar;\nexports.HScrollBar = HScrollBar;\n\n});\n\nace.define(\"ace/scrollbar_custom\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/dom\",\"ace/lib/event\",\"ace/lib/event_emitter\"], function(require, exports, module){\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar oop = require(\"./lib/oop\");\nvar dom = require(\"./lib/dom\");\nvar event = require(\"./lib/event\");\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\ndom.importCssString(\".ace_editor>.ace_sb-v div, .ace_editor>.ace_sb-h div{\\n position: absolute;\\n background: rgba(128, 128, 128, 0.6);\\n -moz-box-sizing: border-box;\\n box-sizing: border-box;\\n border: 1px solid #bbb;\\n border-radius: 2px;\\n z-index: 8;\\n}\\n.ace_editor>.ace_sb-v, .ace_editor>.ace_sb-h {\\n position: absolute;\\n z-index: 6;\\n background: none;\\n overflow: hidden!important;\\n}\\n.ace_editor>.ace_sb-v {\\n z-index: 6;\\n right: 0;\\n top: 0;\\n width: 12px;\\n}\\n.ace_editor>.ace_sb-v div {\\n z-index: 8;\\n right: 0;\\n width: 100%;\\n}\\n.ace_editor>.ace_sb-h {\\n bottom: 0;\\n left: 0;\\n height: 12px;\\n}\\n.ace_editor>.ace_sb-h div {\\n bottom: 0;\\n height: 100%;\\n}\\n.ace_editor>.ace_sb_grabbed {\\n z-index: 8;\\n background: #000;\\n}\", \"ace_scrollbar.css\", false);\nvar ScrollBar = /** @class */ (function () {\n function ScrollBar(parent, classSuffix) {\n this.element = dom.createElement(\"div\");\n this.element.className = \"ace_sb\" + classSuffix;\n this.inner = dom.createElement(\"div\");\n this.inner.className = \"\";\n this.element.appendChild(this.inner);\n this.VScrollWidth = 12;\n this.HScrollHeight = 12;\n parent.appendChild(this.element);\n this.setVisible(false);\n this.skipEvent = false;\n event.addMultiMouseDownListener(this.element, [500, 300, 300], this, \"onMouseDown\");\n }\n ScrollBar.prototype.setVisible = function (isVisible) {\n this.element.style.display = isVisible ? \"\" : \"none\";\n this.isVisible = isVisible;\n this.coeff = 1;\n };\n return ScrollBar;\n}());\noop.implement(ScrollBar.prototype, EventEmitter);\nvar VScrollBar = /** @class */ (function (_super) {\n __extends(VScrollBar, _super);\n function VScrollBar(parent, renderer) {\n var _this = _super.call(this, parent, '-v') || this;\n _this.scrollTop = 0;\n _this.scrollHeight = 0;\n _this.parent = parent;\n _this.width = _this.VScrollWidth;\n _this.renderer = renderer;\n _this.inner.style.width = _this.element.style.width = (_this.width || 15) + \"px\";\n _this.$minWidth = 0;\n return _this;\n }\n VScrollBar.prototype.onMouseDown = function (eType, e) {\n if (eType !== \"mousedown\")\n return;\n if (event.getButton(e) !== 0 || e.detail === 2) {\n return;\n }\n if (e.target === this.inner) {\n var self = this;\n var mousePageY = e.clientY;\n var onMouseMove = function (e) {\n mousePageY = e.clientY;\n };\n var onMouseUp = function () {\n clearInterval(timerId);\n };\n var startY = e.clientY;\n var startTop = this.thumbTop;\n var onScrollInterval = function () {\n if (mousePageY === undefined)\n return;\n var scrollTop = self.scrollTopFromThumbTop(startTop + mousePageY - startY);\n if (scrollTop === self.scrollTop)\n return;\n self._emit(\"scroll\", { data: scrollTop });\n };\n event.capture(this.inner, onMouseMove, onMouseUp);\n var timerId = setInterval(onScrollInterval, 20);\n return event.preventDefault(e);\n }\n var top = e.clientY - this.element.getBoundingClientRect().top - this.thumbHeight / 2;\n this._emit(\"scroll\", { data: this.scrollTopFromThumbTop(top) });\n return event.preventDefault(e);\n };\n VScrollBar.prototype.getHeight = function () {\n return this.height;\n };\n VScrollBar.prototype.scrollTopFromThumbTop = function (thumbTop) {\n var scrollTop = thumbTop * (this.pageHeight - this.viewHeight) / (this.slideHeight - this.thumbHeight);\n scrollTop = scrollTop >> 0;\n if (scrollTop < 0) {\n scrollTop = 0;\n }\n else if (scrollTop > this.pageHeight - this.viewHeight) {\n scrollTop = this.pageHeight - this.viewHeight;\n }\n return scrollTop;\n };\n VScrollBar.prototype.getWidth = function () {\n return Math.max(this.isVisible ? this.width : 0, this.$minWidth || 0);\n };\n VScrollBar.prototype.setHeight = function (height) {\n this.height = Math.max(0, height);\n this.slideHeight = this.height;\n this.viewHeight = this.height;\n this.setScrollHeight(this.pageHeight, true);\n };\n VScrollBar.prototype.setScrollHeight = function (height, force) {\n if (this.pageHeight === height && !force)\n return;\n this.pageHeight = height;\n this.thumbHeight = this.slideHeight * this.viewHeight / this.pageHeight;\n if (this.thumbHeight > this.slideHeight)\n this.thumbHeight = this.slideHeight;\n if (this.thumbHeight < 15)\n this.thumbHeight = 15;\n this.inner.style.height = this.thumbHeight + \"px\";\n if (this.scrollTop > (this.pageHeight - this.viewHeight)) {\n this.scrollTop = (this.pageHeight - this.viewHeight);\n if (this.scrollTop < 0)\n this.scrollTop = 0;\n this._emit(\"scroll\", { data: this.scrollTop });\n }\n };\n VScrollBar.prototype.setScrollTop = function (scrollTop) {\n this.scrollTop = scrollTop;\n if (scrollTop < 0)\n scrollTop = 0;\n this.thumbTop = scrollTop * (this.slideHeight - this.thumbHeight) / (this.pageHeight - this.viewHeight);\n this.inner.style.top = this.thumbTop + \"px\";\n };\n return VScrollBar;\n}(ScrollBar));\nVScrollBar.prototype.setInnerHeight = VScrollBar.prototype.setScrollHeight;\nvar HScrollBar = /** @class */ (function (_super) {\n __extends(HScrollBar, _super);\n function HScrollBar(parent, renderer) {\n var _this = _super.call(this, parent, '-h') || this;\n _this.scrollLeft = 0;\n _this.scrollWidth = 0;\n _this.height = _this.HScrollHeight;\n _this.inner.style.height = _this.element.style.height = (_this.height || 12) + \"px\";\n _this.renderer = renderer;\n return _this;\n }\n HScrollBar.prototype.onMouseDown = function (eType, e) {\n if (eType !== \"mousedown\")\n return;\n if (event.getButton(e) !== 0 || e.detail === 2) {\n return;\n }\n if (e.target === this.inner) {\n var self = this;\n var mousePageX = e.clientX;\n var onMouseMove = function (e) {\n mousePageX = e.clientX;\n };\n var onMouseUp = function () {\n clearInterval(timerId);\n };\n var startX = e.clientX;\n var startLeft = this.thumbLeft;\n var onScrollInterval = function () {\n if (mousePageX === undefined)\n return;\n var scrollLeft = self.scrollLeftFromThumbLeft(startLeft + mousePageX - startX);\n if (scrollLeft === self.scrollLeft)\n return;\n self._emit(\"scroll\", { data: scrollLeft });\n };\n event.capture(this.inner, onMouseMove, onMouseUp);\n var timerId = setInterval(onScrollInterval, 20);\n return event.preventDefault(e);\n }\n var left = e.clientX - this.element.getBoundingClientRect().left - this.thumbWidth / 2;\n this._emit(\"scroll\", { data: this.scrollLeftFromThumbLeft(left) });\n return event.preventDefault(e);\n };\n HScrollBar.prototype.getHeight = function () {\n return this.isVisible ? this.height : 0;\n };\n HScrollBar.prototype.scrollLeftFromThumbLeft = function (thumbLeft) {\n var scrollLeft = thumbLeft * (this.pageWidth - this.viewWidth) / (this.slideWidth - this.thumbWidth);\n scrollLeft = scrollLeft >> 0;\n if (scrollLeft < 0) {\n scrollLeft = 0;\n }\n else if (scrollLeft > this.pageWidth - this.viewWidth) {\n scrollLeft = this.pageWidth - this.viewWidth;\n }\n return scrollLeft;\n };\n HScrollBar.prototype.setWidth = function (width) {\n this.width = Math.max(0, width);\n this.element.style.width = this.width + \"px\";\n this.slideWidth = this.width;\n this.viewWidth = this.width;\n this.setScrollWidth(this.pageWidth, true);\n };\n HScrollBar.prototype.setScrollWidth = function (width, force) {\n if (this.pageWidth === width && !force)\n return;\n this.pageWidth = width;\n this.thumbWidth = this.slideWidth * this.viewWidth / this.pageWidth;\n if (this.thumbWidth > this.slideWidth)\n this.thumbWidth = this.slideWidth;\n if (this.thumbWidth < 15)\n this.thumbWidth = 15;\n this.inner.style.width = this.thumbWidth + \"px\";\n if (this.scrollLeft > (this.pageWidth - this.viewWidth)) {\n this.scrollLeft = (this.pageWidth - this.viewWidth);\n if (this.scrollLeft < 0)\n this.scrollLeft = 0;\n this._emit(\"scroll\", { data: this.scrollLeft });\n }\n };\n HScrollBar.prototype.setScrollLeft = function (scrollLeft) {\n this.scrollLeft = scrollLeft;\n if (scrollLeft < 0)\n scrollLeft = 0;\n this.thumbLeft = scrollLeft * (this.slideWidth - this.thumbWidth) / (this.pageWidth - this.viewWidth);\n this.inner.style.left = (this.thumbLeft) + \"px\";\n };\n return HScrollBar;\n}(ScrollBar));\nHScrollBar.prototype.setInnerWidth = HScrollBar.prototype.setScrollWidth;\nexports.ScrollBar = VScrollBar; // backward compatibility\nexports.ScrollBarV = VScrollBar; // backward compatibility\nexports.ScrollBarH = HScrollBar; // backward compatibility\nexports.VScrollBar = VScrollBar;\nexports.HScrollBar = HScrollBar;\n\n});\n\nace.define(\"ace/renderloop\",[\"require\",\"exports\",\"module\",\"ace/lib/event\"], function(require, exports, module){\"use strict\";\nvar event = require(\"./lib/event\");\nvar RenderLoop = /** @class */ (function () {\n function RenderLoop(onRender, win) {\n this.onRender = onRender;\n this.pending = false;\n this.changes = 0;\n this.$recursionLimit = 2;\n this.window = win || window;\n var _self = this;\n this._flush = function (ts) {\n _self.pending = false;\n var changes = _self.changes;\n if (changes) {\n event.blockIdle(100);\n _self.changes = 0;\n _self.onRender(changes);\n }\n if (_self.changes) {\n if (_self.$recursionLimit-- < 0)\n return;\n _self.schedule();\n }\n else {\n _self.$recursionLimit = 2;\n }\n };\n }\n RenderLoop.prototype.schedule = function (change) {\n this.changes = this.changes | change;\n if (this.changes && !this.pending) {\n event.nextFrame(this._flush);\n this.pending = true;\n }\n };\n RenderLoop.prototype.clear = function (change) {\n var changes = this.changes;\n this.changes = 0;\n return changes;\n };\n return RenderLoop;\n}());\nexports.RenderLoop = RenderLoop;\n\n});\n\nace.define(\"ace/layer/font_metrics\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/dom\",\"ace/lib/lang\",\"ace/lib/event\",\"ace/lib/useragent\",\"ace/lib/event_emitter\"], function(require, exports, module){var oop = require(\"../lib/oop\");\nvar dom = require(\"../lib/dom\");\nvar lang = require(\"../lib/lang\");\nvar event = require(\"../lib/event\");\nvar useragent = require(\"../lib/useragent\");\nvar EventEmitter = require(\"../lib/event_emitter\").EventEmitter;\nvar CHAR_COUNT = 512;\nvar USE_OBSERVER = typeof ResizeObserver == \"function\";\nvar L = 200;\nvar FontMetrics = /** @class */ (function () {\n function FontMetrics(parentEl) {\n this.el = dom.createElement(\"div\");\n this.$setMeasureNodeStyles(this.el.style, true);\n this.$main = dom.createElement(\"div\");\n this.$setMeasureNodeStyles(this.$main.style);\n this.$measureNode = dom.createElement(\"div\");\n this.$setMeasureNodeStyles(this.$measureNode.style);\n this.el.appendChild(this.$main);\n this.el.appendChild(this.$measureNode);\n parentEl.appendChild(this.el);\n this.$measureNode.textContent = lang.stringRepeat(\"X\", CHAR_COUNT);\n this.$characterSize = { width: 0, height: 0 };\n if (USE_OBSERVER)\n this.$addObserver();\n else\n this.checkForSizeChanges();\n }\n FontMetrics.prototype.$setMeasureNodeStyles = function (style, isRoot) {\n style.width = style.height = \"auto\";\n style.left = style.top = \"0px\";\n style.visibility = \"hidden\";\n style.position = \"absolute\";\n style.whiteSpace = \"pre\";\n if (useragent.isIE < 8) {\n style[\"font-family\"] = \"inherit\";\n }\n else {\n style.font = \"inherit\";\n }\n style.overflow = isRoot ? \"hidden\" : \"visible\";\n };\n FontMetrics.prototype.checkForSizeChanges = function (size) {\n if (size === undefined)\n size = this.$measureSizes();\n if (size && (this.$characterSize.width !== size.width || this.$characterSize.height !== size.height)) {\n this.$measureNode.style.fontWeight = \"bold\";\n var boldSize = this.$measureSizes();\n this.$measureNode.style.fontWeight = \"\";\n this.$characterSize = size;\n this.charSizes = Object.create(null);\n this.allowBoldFonts = boldSize && boldSize.width === size.width && boldSize.height === size.height;\n this._emit(\"changeCharacterSize\", { data: size });\n }\n };\n FontMetrics.prototype.$addObserver = function () {\n var self = this;\n this.$observer = new window.ResizeObserver(function (e) {\n self.checkForSizeChanges();\n });\n this.$observer.observe(this.$measureNode);\n };\n FontMetrics.prototype.$pollSizeChanges = function () {\n if (this.$pollSizeChangesTimer || this.$observer)\n return this.$pollSizeChangesTimer;\n var self = this;\n return this.$pollSizeChangesTimer = event.onIdle(function cb() {\n self.checkForSizeChanges();\n event.onIdle(cb, 500);\n }, 500);\n };\n FontMetrics.prototype.setPolling = function (val) {\n if (val) {\n this.$pollSizeChanges();\n }\n else if (this.$pollSizeChangesTimer) {\n clearInterval(this.$pollSizeChangesTimer);\n this.$pollSizeChangesTimer = 0;\n }\n };\n FontMetrics.prototype.$measureSizes = function (node) {\n var size = {\n height: (node || this.$measureNode).clientHeight,\n width: (node || this.$measureNode).clientWidth / CHAR_COUNT\n };\n if (size.width === 0 || size.height === 0)\n return null;\n return size;\n };\n FontMetrics.prototype.$measureCharWidth = function (ch) {\n this.$main.textContent = lang.stringRepeat(ch, CHAR_COUNT);\n var rect = this.$main.getBoundingClientRect();\n return rect.width / CHAR_COUNT;\n };\n FontMetrics.prototype.getCharacterWidth = function (ch) {\n var w = this.charSizes[ch];\n if (w === undefined) {\n w = this.charSizes[ch] = this.$measureCharWidth(ch) / this.$characterSize.width;\n }\n return w;\n };\n FontMetrics.prototype.destroy = function () {\n clearInterval(this.$pollSizeChangesTimer);\n if (this.$observer)\n this.$observer.disconnect();\n if (this.el && this.el.parentNode)\n this.el.parentNode.removeChild(this.el);\n };\n FontMetrics.prototype.$getZoom = function (element) {\n if (!element || !element.parentElement)\n return 1;\n return (window.getComputedStyle(element).zoom || 1) * this.$getZoom(element.parentElement);\n };\n FontMetrics.prototype.$initTransformMeasureNodes = function () {\n var t = function (t, l) {\n return [\"div\", {\n style: \"position: absolute;top:\" + t + \"px;left:\" + l + \"px;\"\n }];\n };\n this.els = dom.buildDom([t(0, 0), t(L, 0), t(0, L), t(L, L)], this.el);\n };\n FontMetrics.prototype.transformCoordinates = function (clientPos, elPos) {\n if (clientPos) {\n var zoom = this.$getZoom(this.el);\n clientPos = mul(1 / zoom, clientPos);\n }\n function solve(l1, l2, r) {\n var det = l1[1] * l2[0] - l1[0] * l2[1];\n return [\n (-l2[1] * r[0] + l2[0] * r[1]) / det,\n (+l1[1] * r[0] - l1[0] * r[1]) / det\n ];\n }\n function sub(a, b) { return [a[0] - b[0], a[1] - b[1]]; }\n function add(a, b) { return [a[0] + b[0], a[1] + b[1]]; }\n function mul(a, b) { return [a * b[0], a * b[1]]; }\n if (!this.els)\n this.$initTransformMeasureNodes();\n function p(el) {\n var r = el.getBoundingClientRect();\n return [r.left, r.top];\n }\n var a = p(this.els[0]);\n var b = p(this.els[1]);\n var c = p(this.els[2]);\n var d = p(this.els[3]);\n var h = solve(sub(d, b), sub(d, c), sub(add(b, c), add(d, a)));\n var m1 = mul(1 + h[0], sub(b, a));\n var m2 = mul(1 + h[1], sub(c, a));\n if (elPos) {\n var x = elPos;\n var k = h[0] * x[0] / L + h[1] * x[1] / L + 1;\n var ut = add(mul(x[0], m1), mul(x[1], m2));\n return add(mul(1 / k / L, ut), a);\n }\n var u = sub(clientPos, a);\n var f = solve(sub(m1, mul(h[0], u)), sub(m2, mul(h[1], u)), u);\n return mul(L, f);\n };\n return FontMetrics;\n}());\nFontMetrics.prototype.$characterSize = { width: 0, height: 0 };\noop.implement(FontMetrics.prototype, EventEmitter);\nexports.FontMetrics = FontMetrics;\n\n});\n\nace.define(\"ace/css/editor-css\",[\"require\",\"exports\",\"module\"], function(require, exports, module){/*\nstyles = []\nfor (var i = 1; i < 16; i++) {\n styles.push(\".ace_br\" + i + \"{\" + (\n [\"top-left\", \"top-right\", \"bottom-right\", \"bottom-left\"]\n ).map(function(x, j) {\n return i & (1< .ace_line, .ace_text-layer > .ace_line_group {\\n contain: style size layout;\\n position: absolute;\\n top: 0;\\n left: 0;\\n right: 0;\\n}\\n\\n.ace_hidpi .ace_text-layer,\\n.ace_hidpi .ace_gutter-layer,\\n.ace_hidpi .ace_content,\\n.ace_hidpi .ace_gutter {\\n contain: strict;\\n}\\n.ace_hidpi .ace_text-layer > .ace_line, \\n.ace_hidpi .ace_text-layer > .ace_line_group {\\n contain: strict;\\n}\\n\\n.ace_cjk {\\n display: inline-block;\\n text-align: center;\\n}\\n\\n.ace_cursor-layer {\\n z-index: 4;\\n}\\n\\n.ace_cursor {\\n z-index: 4;\\n position: absolute;\\n box-sizing: border-box;\\n border-left: 2px solid;\\n /* workaround for smooth cursor repaintng whole screen in chrome */\\n transform: translatez(0);\\n}\\n\\n.ace_multiselect .ace_cursor {\\n border-left-width: 1px;\\n}\\n\\n.ace_slim-cursors .ace_cursor {\\n border-left-width: 1px;\\n}\\n\\n.ace_overwrite-cursors .ace_cursor {\\n border-left-width: 0;\\n border-bottom: 1px solid;\\n}\\n\\n.ace_hidden-cursors .ace_cursor {\\n opacity: 0.2;\\n}\\n\\n.ace_hasPlaceholder .ace_hidden-cursors .ace_cursor {\\n opacity: 0;\\n}\\n\\n.ace_smooth-blinking .ace_cursor {\\n transition: opacity 0.18s;\\n}\\n\\n.ace_animate-blinking .ace_cursor {\\n animation-duration: 1000ms;\\n animation-timing-function: step-end;\\n animation-name: blink-ace-animate;\\n animation-iteration-count: infinite;\\n}\\n\\n.ace_animate-blinking.ace_smooth-blinking .ace_cursor {\\n animation-duration: 1000ms;\\n animation-timing-function: ease-in-out;\\n animation-name: blink-ace-animate-smooth;\\n}\\n \\n@keyframes blink-ace-animate {\\n from, to { opacity: 1; }\\n 60% { opacity: 0; }\\n}\\n\\n@keyframes blink-ace-animate-smooth {\\n from, to { opacity: 1; }\\n 45% { opacity: 1; }\\n 60% { opacity: 0; }\\n 85% { opacity: 0; }\\n}\\n\\n.ace_marker-layer .ace_step, .ace_marker-layer .ace_stack {\\n position: absolute;\\n z-index: 3;\\n}\\n\\n.ace_marker-layer .ace_selection {\\n position: absolute;\\n z-index: 5;\\n}\\n\\n.ace_marker-layer .ace_bracket {\\n position: absolute;\\n z-index: 6;\\n}\\n\\n.ace_marker-layer .ace_error_bracket {\\n position: absolute;\\n border-bottom: 1px solid #DE5555;\\n border-radius: 0;\\n}\\n\\n.ace_marker-layer .ace_active-line {\\n position: absolute;\\n z-index: 2;\\n}\\n\\n.ace_marker-layer .ace_selected-word {\\n position: absolute;\\n z-index: 4;\\n box-sizing: border-box;\\n}\\n\\n.ace_line .ace_fold {\\n box-sizing: border-box;\\n\\n display: inline-block;\\n height: 11px;\\n margin-top: -2px;\\n vertical-align: middle;\\n\\n background-image:\\n url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII=\\\"),\\n url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACJJREFUeNpi+P//fxgTAwPDBxDxD078RSX+YeEyDFMCIMAAI3INmXiwf2YAAAAASUVORK5CYII=\\\");\\n background-repeat: no-repeat, repeat-x;\\n background-position: center center, top left;\\n color: transparent;\\n\\n border: 1px solid black;\\n border-radius: 2px;\\n\\n cursor: pointer;\\n pointer-events: auto;\\n}\\n\\n.ace_dark .ace_fold {\\n}\\n\\n.ace_fold:hover{\\n background-image:\\n url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII=\\\"),\\n url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACBJREFUeNpi+P//fz4TAwPDZxDxD5X4i5fLMEwJgAADAEPVDbjNw87ZAAAAAElFTkSuQmCC\\\");\\n}\\n\\n.ace_tooltip {\\n background-color: #f5f5f5;\\n border: 1px solid gray;\\n border-radius: 1px;\\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);\\n color: black;\\n max-width: 100%;\\n padding: 3px 4px;\\n position: fixed;\\n z-index: 999999;\\n box-sizing: border-box;\\n cursor: default;\\n white-space: pre;\\n word-wrap: break-word;\\n line-height: normal;\\n font-style: normal;\\n font-weight: normal;\\n letter-spacing: normal;\\n pointer-events: none;\\n}\\n\\n.ace_tooltip.ace_dark {\\n background-color: #636363;\\n color: #fff;\\n}\\n\\n.ace_tooltip:focus {\\n outline: 1px solid #5E9ED6;\\n}\\n\\n.ace_icon {\\n display: inline-block;\\n width: 18px;\\n vertical-align: top;\\n}\\n\\n.ace_icon_svg {\\n display: inline-block;\\n width: 12px;\\n vertical-align: top;\\n -webkit-mask-repeat: no-repeat;\\n -webkit-mask-size: 12px;\\n -webkit-mask-position: center;\\n}\\n\\n.ace_folding-enabled > .ace_gutter-cell, .ace_folding-enabled > .ace_gutter-cell_svg-icons {\\n padding-right: 13px;\\n}\\n\\n.ace_fold-widget {\\n box-sizing: border-box;\\n\\n margin: 0 -12px 0 1px;\\n display: none;\\n width: 11px;\\n vertical-align: top;\\n\\n background-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42mWKsQ0AMAzC8ixLlrzQjzmBiEjp0A6WwBCSPgKAXoLkqSot7nN3yMwR7pZ32NzpKkVoDBUxKAAAAABJRU5ErkJggg==\\\");\\n background-repeat: no-repeat;\\n background-position: center;\\n\\n border-radius: 3px;\\n \\n border: 1px solid transparent;\\n cursor: pointer;\\n}\\n\\n.ace_folding-enabled .ace_fold-widget {\\n display: inline-block; \\n}\\n\\n.ace_fold-widget.ace_end {\\n background-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42m3HwQkAMAhD0YzsRchFKI7sAikeWkrxwScEB0nh5e7KTPWimZki4tYfVbX+MNl4pyZXejUO1QAAAABJRU5ErkJggg==\\\");\\n}\\n\\n.ace_fold-widget.ace_closed {\\n background-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAGCAYAAAAG5SQMAAAAOUlEQVR42jXKwQkAMAgDwKwqKD4EwQ26sSOkVWjgIIHAzPiCgaqiqnJHZnKICBERHN194O5b9vbLuAVRL+l0YWnZAAAAAElFTkSuQmCCXA==\\\");\\n}\\n\\n.ace_fold-widget:hover {\\n border: 1px solid rgba(0, 0, 0, 0.3);\\n background-color: rgba(255, 255, 255, 0.2);\\n box-shadow: 0 1px 1px rgba(255, 255, 255, 0.7);\\n}\\n\\n.ace_fold-widget:active {\\n border: 1px solid rgba(0, 0, 0, 0.4);\\n background-color: rgba(0, 0, 0, 0.05);\\n box-shadow: 0 1px 1px rgba(255, 255, 255, 0.8);\\n}\\n/**\\n * Dark version for fold widgets\\n */\\n.ace_dark .ace_fold-widget {\\n background-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHklEQVQIW2P4//8/AzoGEQ7oGCaLLAhWiSwB146BAQCSTPYocqT0AAAAAElFTkSuQmCC\\\");\\n}\\n.ace_dark .ace_fold-widget.ace_end {\\n background-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAH0lEQVQIW2P4//8/AxQ7wNjIAjDMgC4AxjCVKBirIAAF0kz2rlhxpAAAAABJRU5ErkJggg==\\\");\\n}\\n.ace_dark .ace_fold-widget.ace_closed {\\n background-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAFCAYAAACAcVaiAAAAHElEQVQIW2P4//+/AxAzgDADlOOAznHAKgPWAwARji8UIDTfQQAAAABJRU5ErkJggg==\\\");\\n}\\n.ace_dark .ace_fold-widget:hover {\\n box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);\\n background-color: rgba(255, 255, 255, 0.1);\\n}\\n.ace_dark .ace_fold-widget:active {\\n box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);\\n}\\n\\n.ace_inline_button {\\n border: 1px solid lightgray;\\n display: inline-block;\\n margin: -1px 8px;\\n padding: 0 5px;\\n pointer-events: auto;\\n cursor: pointer;\\n}\\n.ace_inline_button:hover {\\n border-color: gray;\\n background: rgba(200,200,200,0.2);\\n display: inline-block;\\n pointer-events: auto;\\n}\\n\\n.ace_fold-widget.ace_invalid {\\n background-color: #FFB4B4;\\n border-color: #DE5555;\\n}\\n\\n.ace_fade-fold-widgets .ace_fold-widget {\\n transition: opacity 0.4s ease 0.05s;\\n opacity: 0;\\n}\\n\\n.ace_fade-fold-widgets:hover .ace_fold-widget {\\n transition: opacity 0.05s ease 0.05s;\\n opacity:1;\\n}\\n\\n.ace_underline {\\n text-decoration: underline;\\n}\\n\\n.ace_bold {\\n font-weight: bold;\\n}\\n\\n.ace_nobold .ace_bold {\\n font-weight: normal;\\n}\\n\\n.ace_italic {\\n font-style: italic;\\n}\\n\\n\\n.ace_error-marker {\\n background-color: rgba(255, 0, 0,0.2);\\n position: absolute;\\n z-index: 9;\\n}\\n\\n.ace_highlight-marker {\\n background-color: rgba(255, 255, 0,0.2);\\n position: absolute;\\n z-index: 8;\\n}\\n\\n.ace_mobile-menu {\\n position: absolute;\\n line-height: 1.5;\\n border-radius: 4px;\\n -ms-user-select: none;\\n -moz-user-select: none;\\n -webkit-user-select: none;\\n user-select: none;\\n background: white;\\n box-shadow: 1px 3px 2px grey;\\n border: 1px solid #dcdcdc;\\n color: black;\\n}\\n.ace_dark > .ace_mobile-menu {\\n background: #333;\\n color: #ccc;\\n box-shadow: 1px 3px 2px grey;\\n border: 1px solid #444;\\n\\n}\\n.ace_mobile-button {\\n padding: 2px;\\n cursor: pointer;\\n overflow: hidden;\\n}\\n.ace_mobile-button:hover {\\n background-color: #eee;\\n opacity:1;\\n}\\n.ace_mobile-button:active {\\n background-color: #ddd;\\n}\\n\\n.ace_placeholder {\\n font-family: arial;\\n transform: scale(0.9);\\n transform-origin: left;\\n white-space: pre;\\n opacity: 0.7;\\n margin: 0 10px;\\n}\\n\\n.ace_ghost_text {\\n opacity: 0.5;\\n font-style: italic;\\n white-space: pre;\\n}\\n\\n.ace_screenreader-only {\\n position:absolute;\\n left:-10000px;\\n top:auto;\\n width:1px;\\n height:1px;\\n overflow:hidden;\\n}\";\n\n});\n\nace.define(\"ace/layer/decorators\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\",\"ace/lib/oop\",\"ace/lib/event_emitter\"], function(require, exports, module){\"use strict\";\nvar dom = require(\"../lib/dom\");\nvar oop = require(\"../lib/oop\");\nvar EventEmitter = require(\"../lib/event_emitter\").EventEmitter;\nvar Decorator = /** @class */ (function () {\n function Decorator(parent, renderer) {\n this.canvas = dom.createElement(\"canvas\");\n this.renderer = renderer;\n this.pixelRatio = 1;\n this.maxHeight = renderer.layerConfig.maxHeight;\n this.lineHeight = renderer.layerConfig.lineHeight;\n this.canvasHeight = parent.parent.scrollHeight;\n this.heightRatio = this.canvasHeight / this.maxHeight;\n this.canvasWidth = parent.width;\n this.minDecorationHeight = (2 * this.pixelRatio) | 0;\n this.halfMinDecorationHeight = (this.minDecorationHeight / 2) | 0;\n this.canvas.width = this.canvasWidth;\n this.canvas.height = this.canvasHeight;\n this.canvas.style.top = 0 + \"px\";\n this.canvas.style.right = 0 + \"px\";\n this.canvas.style.zIndex = 7 + \"px\";\n this.canvas.style.position = \"absolute\";\n this.colors = {};\n this.colors.dark = {\n \"error\": \"rgba(255, 18, 18, 1)\",\n \"warning\": \"rgba(18, 136, 18, 1)\",\n \"info\": \"rgba(18, 18, 136, 1)\"\n };\n this.colors.light = {\n \"error\": \"rgb(255,51,51)\",\n \"warning\": \"rgb(32,133,72)\",\n \"info\": \"rgb(35,68,138)\"\n };\n parent.element.appendChild(this.canvas);\n }\n Decorator.prototype.$updateDecorators = function (config) {\n var colors = (this.renderer.theme.isDark === true) ? this.colors.dark : this.colors.light;\n if (config) {\n this.maxHeight = config.maxHeight;\n this.lineHeight = config.lineHeight;\n this.canvasHeight = config.height;\n var allLineHeight = (config.lastRow + 1) * this.lineHeight;\n if (allLineHeight < this.canvasHeight) {\n this.heightRatio = 1;\n }\n else {\n this.heightRatio = this.canvasHeight / this.maxHeight;\n }\n }\n var ctx = this.canvas.getContext(\"2d\");\n function compare(a, b) {\n if (a.priority < b.priority)\n return -1;\n if (a.priority > b.priority)\n return 1;\n return 0;\n }\n var annotations = this.renderer.session.$annotations;\n ctx.clearRect(0, 0, this.canvas.width, this.canvas.height);\n if (annotations) {\n var priorities = {\n \"info\": 1,\n \"warning\": 2,\n \"error\": 3\n };\n annotations.forEach(function (item) {\n item.priority = priorities[item.type] || null;\n });\n annotations = annotations.sort(compare);\n var foldData = this.renderer.session.$foldData;\n for (var i = 0; i < annotations.length; i++) {\n var row = annotations[i].row;\n var compensateFold = this.compensateFoldRows(row, foldData);\n var currentY = Math.round((row - compensateFold) * this.lineHeight * this.heightRatio);\n var y1 = Math.round(((row - compensateFold) * this.lineHeight * this.heightRatio));\n var y2 = Math.round((((row - compensateFold) * this.lineHeight + this.lineHeight) * this.heightRatio));\n var height = y2 - y1;\n if (height < this.minDecorationHeight) {\n var yCenter = ((y1 + y2) / 2) | 0;\n if (yCenter < this.halfMinDecorationHeight) {\n yCenter = this.halfMinDecorationHeight;\n }\n else if (yCenter + this.halfMinDecorationHeight > this.canvasHeight) {\n yCenter = this.canvasHeight - this.halfMinDecorationHeight;\n }\n y1 = Math.round(yCenter - this.halfMinDecorationHeight);\n y2 = Math.round(yCenter + this.halfMinDecorationHeight);\n }\n ctx.fillStyle = colors[annotations[i].type] || null;\n ctx.fillRect(0, currentY, this.canvasWidth, y2 - y1);\n }\n }\n var cursor = this.renderer.session.selection.getCursor();\n if (cursor) {\n var compensateFold = this.compensateFoldRows(cursor.row, foldData);\n var currentY = Math.round((cursor.row - compensateFold) * this.lineHeight * this.heightRatio);\n ctx.fillStyle = \"rgba(0, 0, 0, 0.5)\";\n ctx.fillRect(0, currentY, this.canvasWidth, 2);\n }\n };\n Decorator.prototype.compensateFoldRows = function (row, foldData) {\n var compensateFold = 0;\n if (foldData && foldData.length > 0) {\n for (var j = 0; j < foldData.length; j++) {\n if (row > foldData[j].start.row && row < foldData[j].end.row) {\n compensateFold += row - foldData[j].start.row;\n }\n else if (row >= foldData[j].end.row) {\n compensateFold += foldData[j].end.row - foldData[j].start.row;\n }\n }\n }\n return compensateFold;\n };\n return Decorator;\n}());\noop.implement(Decorator.prototype, EventEmitter);\nexports.Decorator = Decorator;\n\n});\n\nace.define(\"ace/virtual_renderer\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/dom\",\"ace/lib/lang\",\"ace/config\",\"ace/layer/gutter\",\"ace/layer/marker\",\"ace/layer/text\",\"ace/layer/cursor\",\"ace/scrollbar\",\"ace/scrollbar\",\"ace/scrollbar_custom\",\"ace/scrollbar_custom\",\"ace/renderloop\",\"ace/layer/font_metrics\",\"ace/lib/event_emitter\",\"ace/css/editor-css\",\"ace/layer/decorators\",\"ace/lib/useragent\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"./lib/oop\");\nvar dom = require(\"./lib/dom\");\nvar lang = require(\"./lib/lang\");\nvar config = require(\"./config\");\nvar GutterLayer = require(\"./layer/gutter\").Gutter;\nvar MarkerLayer = require(\"./layer/marker\").Marker;\nvar TextLayer = require(\"./layer/text\").Text;\nvar CursorLayer = require(\"./layer/cursor\").Cursor;\nvar HScrollBar = require(\"./scrollbar\").HScrollBar;\nvar VScrollBar = require(\"./scrollbar\").VScrollBar;\nvar HScrollBarCustom = require(\"./scrollbar_custom\").HScrollBar;\nvar VScrollBarCustom = require(\"./scrollbar_custom\").VScrollBar;\nvar RenderLoop = require(\"./renderloop\").RenderLoop;\nvar FontMetrics = require(\"./layer/font_metrics\").FontMetrics;\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar editorCss = require(\"./css/editor-css\");\nvar Decorator = require(\"./layer/decorators\").Decorator;\nvar useragent = require(\"./lib/useragent\");\ndom.importCssString(editorCss, \"ace_editor.css\", false);\nvar VirtualRenderer = /** @class */ (function () {\n function VirtualRenderer(container, theme) {\n var _self = this;\n this.container = container || dom.createElement(\"div\");\n dom.addCssClass(this.container, \"ace_editor\");\n if (dom.HI_DPI)\n dom.addCssClass(this.container, \"ace_hidpi\");\n this.setTheme(theme);\n if (config.get(\"useStrictCSP\") == null)\n config.set(\"useStrictCSP\", false);\n this.$gutter = dom.createElement(\"div\");\n this.$gutter.className = \"ace_gutter\";\n this.container.appendChild(this.$gutter);\n this.$gutter.setAttribute(\"aria-hidden\", true);\n this.scroller = dom.createElement(\"div\");\n this.scroller.className = \"ace_scroller\";\n this.container.appendChild(this.scroller);\n this.content = dom.createElement(\"div\");\n this.content.className = \"ace_content\";\n this.scroller.appendChild(this.content);\n this.$gutterLayer = new GutterLayer(this.$gutter);\n this.$gutterLayer.on(\"changeGutterWidth\", this.onGutterResize.bind(this));\n this.$markerBack = new MarkerLayer(this.content);\n var textLayer = this.$textLayer = new TextLayer(this.content);\n this.canvas = textLayer.element;\n this.$markerFront = new MarkerLayer(this.content);\n this.$cursorLayer = new CursorLayer(this.content);\n this.$horizScroll = false;\n this.$vScroll = false;\n this.scrollBar =\n this.scrollBarV = new VScrollBar(this.container, this);\n this.scrollBarH = new HScrollBar(this.container, this);\n this.scrollBarV.on(\"scroll\", function (e) {\n if (!_self.$scrollAnimation)\n _self.session.setScrollTop(e.data - _self.scrollMargin.top);\n });\n this.scrollBarH.on(\"scroll\", function (e) {\n if (!_self.$scrollAnimation)\n _self.session.setScrollLeft(e.data - _self.scrollMargin.left);\n });\n this.scrollTop = 0;\n this.scrollLeft = 0;\n this.cursorPos = {\n row: 0,\n column: 0\n };\n this.$fontMetrics = new FontMetrics(this.container);\n this.$textLayer.$setFontMetrics(this.$fontMetrics);\n this.$textLayer.on(\"changeCharacterSize\", function (e) {\n _self.updateCharacterSize();\n _self.onResize(true, _self.gutterWidth, _self.$size.width, _self.$size.height);\n _self._signal(\"changeCharacterSize\", e);\n });\n this.$size = {\n width: 0,\n height: 0,\n scrollerHeight: 0,\n scrollerWidth: 0,\n $dirty: true\n };\n this.layerConfig = {\n width: 1,\n padding: 0,\n firstRow: 0,\n firstRowScreen: 0,\n lastRow: 0,\n lineHeight: 0,\n characterWidth: 0,\n minHeight: 1,\n maxHeight: 1,\n offset: 0,\n height: 1,\n gutterOffset: 1\n };\n this.scrollMargin = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0,\n v: 0,\n h: 0\n };\n this.margin = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0,\n v: 0,\n h: 0\n };\n this.$keepTextAreaAtCursor = !useragent.isIOS;\n this.$loop = new RenderLoop(this.$renderChanges.bind(this), this.container.ownerDocument.defaultView);\n this.$loop.schedule(this.CHANGE_FULL);\n this.updateCharacterSize();\n this.setPadding(4);\n this.$addResizeObserver();\n config.resetOptions(this);\n config._signal(\"renderer\", this);\n }\n VirtualRenderer.prototype.updateCharacterSize = function () {\n if (this.$textLayer.allowBoldFonts != this.$allowBoldFonts) {\n this.$allowBoldFonts = this.$textLayer.allowBoldFonts;\n this.setStyle(\"ace_nobold\", !this.$allowBoldFonts);\n }\n this.layerConfig.characterWidth =\n this.characterWidth = this.$textLayer.getCharacterWidth();\n this.layerConfig.lineHeight =\n this.lineHeight = this.$textLayer.getLineHeight();\n this.$updatePrintMargin();\n dom.setStyle(this.scroller.style, \"line-height\", this.lineHeight + \"px\");\n };\n VirtualRenderer.prototype.setSession = function (session) {\n if (this.session)\n this.session.doc.off(\"changeNewLineMode\", this.onChangeNewLineMode);\n this.session = session;\n if (session && this.scrollMargin.top && session.getScrollTop() <= 0)\n session.setScrollTop(-this.scrollMargin.top);\n this.$cursorLayer.setSession(session);\n this.$markerBack.setSession(session);\n this.$markerFront.setSession(session);\n this.$gutterLayer.setSession(session);\n this.$textLayer.setSession(session);\n if (!session)\n return;\n this.$loop.schedule(this.CHANGE_FULL);\n this.session.$setFontMetrics(this.$fontMetrics);\n this.scrollBarH.scrollLeft = this.scrollBarV.scrollTop = null;\n this.onChangeNewLineMode = this.onChangeNewLineMode.bind(this);\n this.onChangeNewLineMode();\n this.session.doc.on(\"changeNewLineMode\", this.onChangeNewLineMode);\n };\n VirtualRenderer.prototype.updateLines = function (firstRow, lastRow, force) {\n if (lastRow === undefined)\n lastRow = Infinity;\n if (!this.$changedLines) {\n this.$changedLines = {\n firstRow: firstRow,\n lastRow: lastRow\n };\n }\n else {\n if (this.$changedLines.firstRow > firstRow)\n this.$changedLines.firstRow = firstRow;\n if (this.$changedLines.lastRow < lastRow)\n this.$changedLines.lastRow = lastRow;\n }\n if (this.$changedLines.lastRow < this.layerConfig.firstRow) {\n if (force)\n this.$changedLines.lastRow = this.layerConfig.lastRow;\n else\n return;\n }\n if (this.$changedLines.firstRow > this.layerConfig.lastRow)\n return;\n this.$loop.schedule(this.CHANGE_LINES);\n };\n VirtualRenderer.prototype.onChangeNewLineMode = function () {\n this.$loop.schedule(this.CHANGE_TEXT);\n this.$textLayer.$updateEolChar();\n this.session.$bidiHandler.setEolChar(this.$textLayer.EOL_CHAR);\n };\n VirtualRenderer.prototype.onChangeTabSize = function () {\n this.$loop.schedule(this.CHANGE_TEXT | this.CHANGE_MARKER);\n this.$textLayer.onChangeTabSize();\n };\n VirtualRenderer.prototype.updateText = function () {\n this.$loop.schedule(this.CHANGE_TEXT);\n };\n VirtualRenderer.prototype.updateFull = function (force) {\n if (force)\n this.$renderChanges(this.CHANGE_FULL, true);\n else\n this.$loop.schedule(this.CHANGE_FULL);\n };\n VirtualRenderer.prototype.updateFontSize = function () {\n this.$textLayer.checkForSizeChanges();\n };\n VirtualRenderer.prototype.$updateSizeAsync = function () {\n if (this.$loop.pending)\n this.$size.$dirty = true;\n else\n this.onResize();\n };\n VirtualRenderer.prototype.onResize = function (force, gutterWidth, width, height) {\n if (this.resizing > 2)\n return;\n else if (this.resizing > 0)\n this.resizing++;\n else\n this.resizing = force ? 1 : 0;\n var el = this.container;\n if (!height)\n height = el.clientHeight || el.scrollHeight;\n if (!width)\n width = el.clientWidth || el.scrollWidth;\n var changes = this.$updateCachedSize(force, gutterWidth, width, height);\n if (this.$resizeTimer)\n this.$resizeTimer.cancel();\n if (!this.$size.scrollerHeight || (!width && !height))\n return this.resizing = 0;\n if (force)\n this.$gutterLayer.$padding = null;\n if (force)\n this.$renderChanges(changes | this.$changes, true);\n else\n this.$loop.schedule(changes | this.$changes);\n if (this.resizing)\n this.resizing = 0;\n this.scrollBarH.scrollLeft = this.scrollBarV.scrollTop = null;\n if (this.$customScrollbar) {\n this.$updateCustomScrollbar(true);\n }\n };\n VirtualRenderer.prototype.$updateCachedSize = function (force, gutterWidth, width, height) {\n height -= (this.$extraHeight || 0);\n var changes = 0;\n var size = this.$size;\n var oldSize = {\n width: size.width,\n height: size.height,\n scrollerHeight: size.scrollerHeight,\n scrollerWidth: size.scrollerWidth\n };\n if (height && (force || size.height != height)) {\n size.height = height;\n changes |= this.CHANGE_SIZE;\n size.scrollerHeight = size.height;\n if (this.$horizScroll)\n size.scrollerHeight -= this.scrollBarH.getHeight();\n this.scrollBarV.setHeight(size.scrollerHeight);\n this.scrollBarV.element.style.bottom = this.scrollBarH.getHeight() + \"px\";\n changes = changes | this.CHANGE_SCROLL;\n }\n if (width && (force || size.width != width)) {\n changes |= this.CHANGE_SIZE;\n size.width = width;\n if (gutterWidth == null)\n gutterWidth = this.$showGutter ? this.$gutter.offsetWidth : 0;\n this.gutterWidth = gutterWidth;\n dom.setStyle(this.scrollBarH.element.style, \"left\", gutterWidth + \"px\");\n dom.setStyle(this.scroller.style, \"left\", gutterWidth + this.margin.left + \"px\");\n size.scrollerWidth = Math.max(0, width - gutterWidth - this.scrollBarV.getWidth() - this.margin.h);\n dom.setStyle(this.$gutter.style, \"left\", this.margin.left + \"px\");\n var right = this.scrollBarV.getWidth() + \"px\";\n dom.setStyle(this.scrollBarH.element.style, \"right\", right);\n dom.setStyle(this.scroller.style, \"right\", right);\n dom.setStyle(this.scroller.style, \"bottom\", this.scrollBarH.getHeight());\n this.scrollBarH.setWidth(size.scrollerWidth);\n if (this.session && this.session.getUseWrapMode() && this.adjustWrapLimit() || force) {\n changes |= this.CHANGE_FULL;\n }\n }\n size.$dirty = !width || !height;\n if (changes)\n this._signal(\"resize\", oldSize);\n return changes;\n };\n VirtualRenderer.prototype.onGutterResize = function (width) {\n var gutterWidth = this.$showGutter ? width : 0;\n if (gutterWidth != this.gutterWidth)\n this.$changes |= this.$updateCachedSize(true, gutterWidth, this.$size.width, this.$size.height);\n if (this.session.getUseWrapMode() && this.adjustWrapLimit()) {\n this.$loop.schedule(this.CHANGE_FULL);\n }\n else if (this.$size.$dirty) {\n this.$loop.schedule(this.CHANGE_FULL);\n }\n else {\n this.$computeLayerConfig();\n }\n };\n VirtualRenderer.prototype.adjustWrapLimit = function () {\n var availableWidth = this.$size.scrollerWidth - this.$padding * 2;\n var limit = Math.floor(availableWidth / this.characterWidth);\n return this.session.adjustWrapLimit(limit, this.$showPrintMargin && this.$printMarginColumn);\n };\n VirtualRenderer.prototype.setAnimatedScroll = function (shouldAnimate) {\n this.setOption(\"animatedScroll\", shouldAnimate);\n };\n VirtualRenderer.prototype.getAnimatedScroll = function () {\n return this.$animatedScroll;\n };\n VirtualRenderer.prototype.setShowInvisibles = function (showInvisibles) {\n this.setOption(\"showInvisibles\", showInvisibles);\n this.session.$bidiHandler.setShowInvisibles(showInvisibles);\n };\n VirtualRenderer.prototype.getShowInvisibles = function () {\n return this.getOption(\"showInvisibles\");\n };\n VirtualRenderer.prototype.getDisplayIndentGuides = function () {\n return this.getOption(\"displayIndentGuides\");\n };\n VirtualRenderer.prototype.setDisplayIndentGuides = function (display) {\n this.setOption(\"displayIndentGuides\", display);\n };\n VirtualRenderer.prototype.getHighlightIndentGuides = function () {\n return this.getOption(\"highlightIndentGuides\");\n };\n VirtualRenderer.prototype.setHighlightIndentGuides = function (highlight) {\n this.setOption(\"highlightIndentGuides\", highlight);\n };\n VirtualRenderer.prototype.setShowPrintMargin = function (showPrintMargin) {\n this.setOption(\"showPrintMargin\", showPrintMargin);\n };\n VirtualRenderer.prototype.getShowPrintMargin = function () {\n return this.getOption(\"showPrintMargin\");\n };\n VirtualRenderer.prototype.setPrintMarginColumn = function (showPrintMargin) {\n this.setOption(\"printMarginColumn\", showPrintMargin);\n };\n VirtualRenderer.prototype.getPrintMarginColumn = function () {\n return this.getOption(\"printMarginColumn\");\n };\n VirtualRenderer.prototype.getShowGutter = function () {\n return this.getOption(\"showGutter\");\n };\n VirtualRenderer.prototype.setShowGutter = function (show) {\n return this.setOption(\"showGutter\", show);\n };\n VirtualRenderer.prototype.getFadeFoldWidgets = function () {\n return this.getOption(\"fadeFoldWidgets\");\n };\n VirtualRenderer.prototype.setFadeFoldWidgets = function (show) {\n this.setOption(\"fadeFoldWidgets\", show);\n };\n VirtualRenderer.prototype.setHighlightGutterLine = function (shouldHighlight) {\n this.setOption(\"highlightGutterLine\", shouldHighlight);\n };\n VirtualRenderer.prototype.getHighlightGutterLine = function () {\n return this.getOption(\"highlightGutterLine\");\n };\n VirtualRenderer.prototype.$updatePrintMargin = function () {\n if (!this.$showPrintMargin && !this.$printMarginEl)\n return;\n if (!this.$printMarginEl) {\n var containerEl = dom.createElement(\"div\");\n containerEl.className = \"ace_layer ace_print-margin-layer\";\n this.$printMarginEl = dom.createElement(\"div\");\n this.$printMarginEl.className = \"ace_print-margin\";\n containerEl.appendChild(this.$printMarginEl);\n this.content.insertBefore(containerEl, this.content.firstChild);\n }\n var style = this.$printMarginEl.style;\n style.left = Math.round(this.characterWidth * this.$printMarginColumn + this.$padding) + \"px\";\n style.visibility = this.$showPrintMargin ? \"visible\" : \"hidden\";\n if (this.session && this.session.$wrap == -1)\n this.adjustWrapLimit();\n };\n VirtualRenderer.prototype.getContainerElement = function () {\n return this.container;\n };\n VirtualRenderer.prototype.getMouseEventTarget = function () {\n return this.scroller;\n };\n VirtualRenderer.prototype.getTextAreaContainer = function () {\n return this.container;\n };\n VirtualRenderer.prototype.$moveTextAreaToCursor = function () {\n if (this.$isMousePressed)\n return;\n var style = this.textarea.style;\n var composition = this.$composition;\n if (!this.$keepTextAreaAtCursor && !composition) {\n dom.translate(this.textarea, -100, 0);\n return;\n }\n var pixelPos = this.$cursorLayer.$pixelPos;\n if (!pixelPos)\n return;\n if (composition && composition.markerRange)\n pixelPos = this.$cursorLayer.getPixelPosition(composition.markerRange.start, true);\n var config = this.layerConfig;\n var posTop = pixelPos.top;\n var posLeft = pixelPos.left;\n posTop -= config.offset;\n var h = composition && composition.useTextareaForIME || useragent.isMobile ? this.lineHeight : 1;\n if (posTop < 0 || posTop > config.height - h) {\n dom.translate(this.textarea, 0, 0);\n return;\n }\n var w = 1;\n var maxTop = this.$size.height - h;\n if (!composition) {\n posTop += this.lineHeight;\n }\n else {\n if (composition.useTextareaForIME) {\n var val = this.textarea.value;\n w = this.characterWidth * (this.session.$getStringScreenWidth(val)[0]);\n }\n else {\n posTop += this.lineHeight + 2;\n }\n }\n posLeft -= this.scrollLeft;\n if (posLeft > this.$size.scrollerWidth - w)\n posLeft = this.$size.scrollerWidth - w;\n posLeft += this.gutterWidth + this.margin.left;\n dom.setStyle(style, \"height\", h + \"px\");\n dom.setStyle(style, \"width\", w + \"px\");\n dom.translate(this.textarea, Math.min(posLeft, this.$size.scrollerWidth - w), Math.min(posTop, maxTop));\n };\n VirtualRenderer.prototype.getFirstVisibleRow = function () {\n return this.layerConfig.firstRow;\n };\n VirtualRenderer.prototype.getFirstFullyVisibleRow = function () {\n return this.layerConfig.firstRow + (this.layerConfig.offset === 0 ? 0 : 1);\n };\n VirtualRenderer.prototype.getLastFullyVisibleRow = function () {\n var config = this.layerConfig;\n var lastRow = config.lastRow;\n var top = this.session.documentToScreenRow(lastRow, 0) * config.lineHeight;\n if (top - this.session.getScrollTop() > config.height - config.lineHeight)\n return lastRow - 1;\n return lastRow;\n };\n VirtualRenderer.prototype.getLastVisibleRow = function () {\n return this.layerConfig.lastRow;\n };\n VirtualRenderer.prototype.setPadding = function (padding) {\n this.$padding = padding;\n this.$textLayer.setPadding(padding);\n this.$cursorLayer.setPadding(padding);\n this.$markerFront.setPadding(padding);\n this.$markerBack.setPadding(padding);\n this.$loop.schedule(this.CHANGE_FULL);\n this.$updatePrintMargin();\n };\n VirtualRenderer.prototype.setScrollMargin = function (top, bottom, left, right) {\n var sm = this.scrollMargin;\n sm.top = top | 0;\n sm.bottom = bottom | 0;\n sm.right = right | 0;\n sm.left = left | 0;\n sm.v = sm.top + sm.bottom;\n sm.h = sm.left + sm.right;\n if (sm.top && this.scrollTop <= 0 && this.session)\n this.session.setScrollTop(-sm.top);\n this.updateFull();\n };\n VirtualRenderer.prototype.setMargin = function (top, bottom, left, right) {\n var sm = this.margin;\n sm.top = top | 0;\n sm.bottom = bottom | 0;\n sm.right = right | 0;\n sm.left = left | 0;\n sm.v = sm.top + sm.bottom;\n sm.h = sm.left + sm.right;\n this.$updateCachedSize(true, this.gutterWidth, this.$size.width, this.$size.height);\n this.updateFull();\n };\n VirtualRenderer.prototype.getHScrollBarAlwaysVisible = function () {\n return this.$hScrollBarAlwaysVisible;\n };\n VirtualRenderer.prototype.setHScrollBarAlwaysVisible = function (alwaysVisible) {\n this.setOption(\"hScrollBarAlwaysVisible\", alwaysVisible);\n };\n VirtualRenderer.prototype.getVScrollBarAlwaysVisible = function () {\n return this.$vScrollBarAlwaysVisible;\n };\n VirtualRenderer.prototype.setVScrollBarAlwaysVisible = function (alwaysVisible) {\n this.setOption(\"vScrollBarAlwaysVisible\", alwaysVisible);\n };\n VirtualRenderer.prototype.$updateScrollBarV = function () {\n var scrollHeight = this.layerConfig.maxHeight;\n var scrollerHeight = this.$size.scrollerHeight;\n if (!this.$maxLines && this.$scrollPastEnd) {\n scrollHeight -= (scrollerHeight - this.lineHeight) * this.$scrollPastEnd;\n if (this.scrollTop > scrollHeight - scrollerHeight) {\n scrollHeight = this.scrollTop + scrollerHeight;\n this.scrollBarV.scrollTop = null;\n }\n }\n this.scrollBarV.setScrollHeight(scrollHeight + this.scrollMargin.v);\n this.scrollBarV.setScrollTop(this.scrollTop + this.scrollMargin.top);\n };\n VirtualRenderer.prototype.$updateScrollBarH = function () {\n this.scrollBarH.setScrollWidth(this.layerConfig.width + 2 * this.$padding + this.scrollMargin.h);\n this.scrollBarH.setScrollLeft(this.scrollLeft + this.scrollMargin.left);\n };\n VirtualRenderer.prototype.freeze = function () {\n this.$frozen = true;\n };\n VirtualRenderer.prototype.unfreeze = function () {\n this.$frozen = false;\n };\n VirtualRenderer.prototype.$renderChanges = function (changes, force) {\n if (this.$changes) {\n changes |= this.$changes;\n this.$changes = 0;\n }\n if ((!this.session || !this.container.offsetWidth || this.$frozen) || (!changes && !force)) {\n this.$changes |= changes;\n return;\n }\n if (this.$size.$dirty) {\n this.$changes |= changes;\n return this.onResize(true);\n }\n if (!this.lineHeight) {\n this.$textLayer.checkForSizeChanges();\n }\n this._signal(\"beforeRender\", changes);\n if (this.session && this.session.$bidiHandler)\n this.session.$bidiHandler.updateCharacterWidths(this.$fontMetrics);\n var config = this.layerConfig;\n if (changes & this.CHANGE_FULL ||\n changes & this.CHANGE_SIZE ||\n changes & this.CHANGE_TEXT ||\n changes & this.CHANGE_LINES ||\n changes & this.CHANGE_SCROLL ||\n changes & this.CHANGE_H_SCROLL) {\n changes |= this.$computeLayerConfig() | this.$loop.clear();\n if (config.firstRow != this.layerConfig.firstRow && config.firstRowScreen == this.layerConfig.firstRowScreen) {\n var st = this.scrollTop + (config.firstRow - Math.max(this.layerConfig.firstRow, 0)) * this.lineHeight;\n if (st > 0) {\n this.scrollTop = st;\n changes = changes | this.CHANGE_SCROLL;\n changes |= this.$computeLayerConfig() | this.$loop.clear();\n }\n }\n config = this.layerConfig;\n this.$updateScrollBarV();\n if (changes & this.CHANGE_H_SCROLL)\n this.$updateScrollBarH();\n dom.translate(this.content, -this.scrollLeft, -config.offset);\n var width = config.width + 2 * this.$padding + \"px\";\n var height = config.minHeight + \"px\";\n dom.setStyle(this.content.style, \"width\", width);\n dom.setStyle(this.content.style, \"height\", height);\n }\n if (changes & this.CHANGE_H_SCROLL) {\n dom.translate(this.content, -this.scrollLeft, -config.offset);\n this.scroller.className = this.scrollLeft <= 0 ? \"ace_scroller \" : \"ace_scroller ace_scroll-left \";\n if (this.enableKeyboardAccessibility)\n this.scroller.className += this.keyboardFocusClassName;\n }\n if (changes & this.CHANGE_FULL) {\n this.$changedLines = null;\n this.$textLayer.update(config);\n if (this.$showGutter)\n this.$gutterLayer.update(config);\n if (this.$customScrollbar) {\n this.$scrollDecorator.$updateDecorators(config);\n }\n this.$markerBack.update(config);\n this.$markerFront.update(config);\n this.$cursorLayer.update(config);\n this.$moveTextAreaToCursor();\n this._signal(\"afterRender\", changes);\n return;\n }\n if (changes & this.CHANGE_SCROLL) {\n this.$changedLines = null;\n if (changes & this.CHANGE_TEXT || changes & this.CHANGE_LINES)\n this.$textLayer.update(config);\n else\n this.$textLayer.scrollLines(config);\n if (this.$showGutter) {\n if (changes & this.CHANGE_GUTTER || changes & this.CHANGE_LINES)\n this.$gutterLayer.update(config);\n else\n this.$gutterLayer.scrollLines(config);\n }\n if (this.$customScrollbar) {\n this.$scrollDecorator.$updateDecorators(config);\n }\n this.$markerBack.update(config);\n this.$markerFront.update(config);\n this.$cursorLayer.update(config);\n this.$moveTextAreaToCursor();\n this._signal(\"afterRender\", changes);\n return;\n }\n if (changes & this.CHANGE_TEXT) {\n this.$changedLines = null;\n this.$textLayer.update(config);\n if (this.$showGutter)\n this.$gutterLayer.update(config);\n if (this.$customScrollbar) {\n this.$scrollDecorator.$updateDecorators(config);\n }\n }\n else if (changes & this.CHANGE_LINES) {\n if (this.$updateLines() || (changes & this.CHANGE_GUTTER) && this.$showGutter)\n this.$gutterLayer.update(config);\n if (this.$customScrollbar) {\n this.$scrollDecorator.$updateDecorators(config);\n }\n }\n else if (changes & this.CHANGE_TEXT || changes & this.CHANGE_GUTTER) {\n if (this.$showGutter)\n this.$gutterLayer.update(config);\n if (this.$customScrollbar) {\n this.$scrollDecorator.$updateDecorators(config);\n }\n }\n else if (changes & this.CHANGE_CURSOR) {\n if (this.$highlightGutterLine)\n this.$gutterLayer.updateLineHighlight(config);\n if (this.$customScrollbar) {\n this.$scrollDecorator.$updateDecorators(config);\n }\n }\n if (changes & this.CHANGE_CURSOR) {\n this.$cursorLayer.update(config);\n this.$moveTextAreaToCursor();\n }\n if (changes & (this.CHANGE_MARKER | this.CHANGE_MARKER_FRONT)) {\n this.$markerFront.update(config);\n }\n if (changes & (this.CHANGE_MARKER | this.CHANGE_MARKER_BACK)) {\n this.$markerBack.update(config);\n }\n this._signal(\"afterRender\", changes);\n };\n VirtualRenderer.prototype.$autosize = function () {\n var height = this.session.getScreenLength() * this.lineHeight;\n var maxHeight = this.$maxLines * this.lineHeight;\n var desiredHeight = Math.min(maxHeight, Math.max((this.$minLines || 1) * this.lineHeight, height)) + this.scrollMargin.v + (this.$extraHeight || 0);\n if (this.$horizScroll)\n desiredHeight += this.scrollBarH.getHeight();\n if (this.$maxPixelHeight && desiredHeight > this.$maxPixelHeight)\n desiredHeight = this.$maxPixelHeight;\n var hideScrollbars = desiredHeight <= 2 * this.lineHeight;\n var vScroll = !hideScrollbars && height > maxHeight;\n if (desiredHeight != this.desiredHeight ||\n this.$size.height != this.desiredHeight || vScroll != this.$vScroll) {\n if (vScroll != this.$vScroll) {\n this.$vScroll = vScroll;\n this.scrollBarV.setVisible(vScroll);\n }\n var w = this.container.clientWidth;\n this.container.style.height = desiredHeight + \"px\";\n this.$updateCachedSize(true, this.$gutterWidth, w, desiredHeight);\n this.desiredHeight = desiredHeight;\n this._signal(\"autosize\");\n }\n };\n VirtualRenderer.prototype.$computeLayerConfig = function () {\n var session = this.session;\n var size = this.$size;\n var hideScrollbars = size.height <= 2 * this.lineHeight;\n var screenLines = this.session.getScreenLength();\n var maxHeight = screenLines * this.lineHeight;\n var longestLine = this.$getLongestLine();\n var horizScroll = !hideScrollbars && (this.$hScrollBarAlwaysVisible ||\n size.scrollerWidth - longestLine - 2 * this.$padding < 0);\n var hScrollChanged = this.$horizScroll !== horizScroll;\n if (hScrollChanged) {\n this.$horizScroll = horizScroll;\n this.scrollBarH.setVisible(horizScroll);\n }\n var vScrollBefore = this.$vScroll; // autosize can change vscroll value in which case we need to update longestLine\n if (this.$maxLines && this.lineHeight > 1)\n this.$autosize();\n var minHeight = size.scrollerHeight + this.lineHeight;\n var scrollPastEnd = !this.$maxLines && this.$scrollPastEnd\n ? (size.scrollerHeight - this.lineHeight) * this.$scrollPastEnd\n : 0;\n maxHeight += scrollPastEnd;\n var sm = this.scrollMargin;\n this.session.setScrollTop(Math.max(-sm.top, Math.min(this.scrollTop, maxHeight - size.scrollerHeight + sm.bottom)));\n this.session.setScrollLeft(Math.max(-sm.left, Math.min(this.scrollLeft, longestLine + 2 * this.$padding - size.scrollerWidth + sm.right)));\n var vScroll = !hideScrollbars && (this.$vScrollBarAlwaysVisible ||\n size.scrollerHeight - maxHeight + scrollPastEnd < 0 || this.scrollTop > sm.top);\n var vScrollChanged = vScrollBefore !== vScroll;\n if (vScrollChanged) {\n this.$vScroll = vScroll;\n this.scrollBarV.setVisible(vScroll);\n }\n var offset = this.scrollTop % this.lineHeight;\n var lineCount = Math.ceil(minHeight / this.lineHeight) - 1;\n var firstRow = Math.max(0, Math.round((this.scrollTop - offset) / this.lineHeight));\n var lastRow = firstRow + lineCount;\n var firstRowScreen, firstRowHeight;\n var lineHeight = this.lineHeight;\n firstRow = session.screenToDocumentRow(firstRow, 0);\n var foldLine = session.getFoldLine(firstRow);\n if (foldLine) {\n firstRow = foldLine.start.row;\n }\n firstRowScreen = session.documentToScreenRow(firstRow, 0);\n firstRowHeight = session.getRowLength(firstRow) * lineHeight;\n lastRow = Math.min(session.screenToDocumentRow(lastRow, 0), session.getLength() - 1);\n minHeight = size.scrollerHeight + session.getRowLength(lastRow) * lineHeight +\n firstRowHeight;\n offset = this.scrollTop - firstRowScreen * lineHeight;\n var changes = 0;\n if (this.layerConfig.width != longestLine || hScrollChanged)\n changes = this.CHANGE_H_SCROLL;\n if (hScrollChanged || vScrollChanged) {\n changes |= this.$updateCachedSize(true, this.gutterWidth, size.width, size.height);\n this._signal(\"scrollbarVisibilityChanged\");\n if (vScrollChanged)\n longestLine = this.$getLongestLine();\n }\n this.layerConfig = {\n width: longestLine,\n padding: this.$padding,\n firstRow: firstRow,\n firstRowScreen: firstRowScreen,\n lastRow: lastRow,\n lineHeight: lineHeight,\n characterWidth: this.characterWidth,\n minHeight: minHeight,\n maxHeight: maxHeight,\n offset: offset,\n gutterOffset: lineHeight ? Math.max(0, Math.ceil((offset + size.height - size.scrollerHeight) / lineHeight)) : 0,\n height: this.$size.scrollerHeight\n };\n if (this.session.$bidiHandler)\n this.session.$bidiHandler.setContentWidth(longestLine - this.$padding);\n return changes;\n };\n VirtualRenderer.prototype.$updateLines = function () {\n if (!this.$changedLines)\n return;\n var firstRow = this.$changedLines.firstRow;\n var lastRow = this.$changedLines.lastRow;\n this.$changedLines = null;\n var layerConfig = this.layerConfig;\n if (firstRow > layerConfig.lastRow + 1) {\n return;\n }\n if (lastRow < layerConfig.firstRow) {\n return;\n }\n if (lastRow === Infinity) {\n if (this.$showGutter)\n this.$gutterLayer.update(layerConfig);\n this.$textLayer.update(layerConfig);\n return;\n }\n this.$textLayer.updateLines(layerConfig, firstRow, lastRow);\n return true;\n };\n VirtualRenderer.prototype.$getLongestLine = function () {\n var charCount = this.session.getScreenWidth();\n if (this.showInvisibles && !this.session.$useWrapMode)\n charCount += 1;\n if (this.$textLayer && charCount > this.$textLayer.MAX_LINE_LENGTH)\n charCount = this.$textLayer.MAX_LINE_LENGTH + 30;\n return Math.max(this.$size.scrollerWidth - 2 * this.$padding, Math.round(charCount * this.characterWidth));\n };\n VirtualRenderer.prototype.updateFrontMarkers = function () {\n this.$markerFront.setMarkers(this.session.getMarkers(true));\n this.$loop.schedule(this.CHANGE_MARKER_FRONT);\n };\n VirtualRenderer.prototype.updateBackMarkers = function () {\n this.$markerBack.setMarkers(this.session.getMarkers());\n this.$loop.schedule(this.CHANGE_MARKER_BACK);\n };\n VirtualRenderer.prototype.addGutterDecoration = function (row, className) {\n this.$gutterLayer.addGutterDecoration(row, className);\n };\n VirtualRenderer.prototype.removeGutterDecoration = function (row, className) {\n this.$gutterLayer.removeGutterDecoration(row, className);\n };\n VirtualRenderer.prototype.updateBreakpoints = function (rows) {\n this.$loop.schedule(this.CHANGE_GUTTER);\n };\n VirtualRenderer.prototype.setAnnotations = function (annotations) {\n this.$gutterLayer.setAnnotations(annotations);\n this.$loop.schedule(this.CHANGE_GUTTER);\n };\n VirtualRenderer.prototype.updateCursor = function () {\n this.$loop.schedule(this.CHANGE_CURSOR);\n };\n VirtualRenderer.prototype.hideCursor = function () {\n this.$cursorLayer.hideCursor();\n };\n VirtualRenderer.prototype.showCursor = function () {\n this.$cursorLayer.showCursor();\n };\n VirtualRenderer.prototype.scrollSelectionIntoView = function (anchor, lead, offset) {\n this.scrollCursorIntoView(anchor, offset);\n this.scrollCursorIntoView(lead, offset);\n };\n VirtualRenderer.prototype.scrollCursorIntoView = function (cursor, offset, $viewMargin) {\n if (this.$size.scrollerHeight === 0)\n return;\n var pos = this.$cursorLayer.getPixelPosition(cursor);\n var newLeft = pos.left;\n var newTop = pos.top;\n var topMargin = $viewMargin && $viewMargin.top || 0;\n var bottomMargin = $viewMargin && $viewMargin.bottom || 0;\n if (this.$scrollAnimation) {\n this.$stopAnimation = true;\n }\n var currentTop = this.$scrollAnimation ? this.session.getScrollTop() : this.scrollTop;\n if (currentTop + topMargin > newTop) {\n if (offset && currentTop + topMargin > newTop + this.lineHeight)\n newTop -= offset * this.$size.scrollerHeight;\n if (newTop === 0)\n newTop = -this.scrollMargin.top;\n this.session.setScrollTop(newTop);\n }\n else if (currentTop + this.$size.scrollerHeight - bottomMargin < newTop + this.lineHeight) {\n if (offset && currentTop + this.$size.scrollerHeight - bottomMargin < newTop - this.lineHeight)\n newTop += offset * this.$size.scrollerHeight;\n this.session.setScrollTop(newTop + this.lineHeight + bottomMargin - this.$size.scrollerHeight);\n }\n var currentLeft = this.scrollLeft;\n var twoCharsWidth = 2 * this.layerConfig.characterWidth;\n if (newLeft - twoCharsWidth < currentLeft) {\n newLeft -= twoCharsWidth;\n if (newLeft < this.$padding + twoCharsWidth) {\n newLeft = -this.scrollMargin.left;\n }\n this.session.setScrollLeft(newLeft);\n }\n else {\n newLeft += twoCharsWidth;\n if (currentLeft + this.$size.scrollerWidth < newLeft + this.characterWidth) {\n this.session.setScrollLeft(Math.round(newLeft + this.characterWidth - this.$size.scrollerWidth));\n }\n else if (currentLeft <= this.$padding && newLeft - currentLeft < this.characterWidth) {\n this.session.setScrollLeft(0);\n }\n }\n };\n VirtualRenderer.prototype.getScrollTop = function () {\n return this.session.getScrollTop();\n };\n VirtualRenderer.prototype.getScrollLeft = function () {\n return this.session.getScrollLeft();\n };\n VirtualRenderer.prototype.getScrollTopRow = function () {\n return this.scrollTop / this.lineHeight;\n };\n VirtualRenderer.prototype.getScrollBottomRow = function () {\n return Math.max(0, Math.floor((this.scrollTop + this.$size.scrollerHeight) / this.lineHeight) - 1);\n };\n VirtualRenderer.prototype.scrollToRow = function (row) {\n this.session.setScrollTop(row * this.lineHeight);\n };\n VirtualRenderer.prototype.alignCursor = function (cursor, alignment) {\n if (typeof cursor == \"number\")\n cursor = { row: cursor, column: 0 };\n var pos = this.$cursorLayer.getPixelPosition(cursor);\n var h = this.$size.scrollerHeight - this.lineHeight;\n var offset = pos.top - h * (alignment || 0);\n this.session.setScrollTop(offset);\n return offset;\n };\n VirtualRenderer.prototype.$calcSteps = function (fromValue, toValue) {\n var i = 0;\n var l = this.STEPS;\n var steps = [];\n var func = function (t, x_min, dx) {\n return dx * (Math.pow(t - 1, 3) + 1) + x_min;\n };\n for (i = 0; i < l; ++i)\n steps.push(func(i / this.STEPS, fromValue, toValue - fromValue));\n return steps;\n };\n VirtualRenderer.prototype.scrollToLine = function (line, center, animate, callback) {\n var pos = this.$cursorLayer.getPixelPosition({ row: line, column: 0 });\n var offset = pos.top;\n if (center)\n offset -= this.$size.scrollerHeight / 2;\n var initialScroll = this.scrollTop;\n this.session.setScrollTop(offset);\n if (animate !== false)\n this.animateScrolling(initialScroll, callback);\n };\n VirtualRenderer.prototype.animateScrolling = function (fromValue, callback) {\n var toValue = this.scrollTop;\n if (!this.$animatedScroll)\n return;\n var _self = this;\n if (fromValue == toValue)\n return;\n if (this.$scrollAnimation) {\n var oldSteps = this.$scrollAnimation.steps;\n if (oldSteps.length) {\n fromValue = oldSteps[0];\n if (fromValue == toValue)\n return;\n }\n }\n var steps = _self.$calcSteps(fromValue, toValue);\n this.$scrollAnimation = { from: fromValue, to: toValue, steps: steps };\n clearInterval(this.$timer);\n _self.session.setScrollTop(steps.shift());\n _self.session.$scrollTop = toValue;\n function endAnimation() {\n _self.$timer = clearInterval(_self.$timer);\n _self.$scrollAnimation = null;\n _self.$stopAnimation = false;\n callback && callback();\n }\n this.$timer = setInterval(function () {\n if (_self.$stopAnimation) {\n endAnimation();\n return;\n }\n if (!_self.session)\n return clearInterval(_self.$timer);\n if (steps.length) {\n _self.session.setScrollTop(steps.shift());\n _self.session.$scrollTop = toValue;\n }\n else if (toValue != null) {\n _self.session.$scrollTop = -1;\n _self.session.setScrollTop(toValue);\n toValue = null;\n }\n else {\n endAnimation();\n }\n }, 10);\n };\n VirtualRenderer.prototype.scrollToY = function (scrollTop) {\n if (this.scrollTop !== scrollTop) {\n this.$loop.schedule(this.CHANGE_SCROLL);\n this.scrollTop = scrollTop;\n }\n };\n VirtualRenderer.prototype.scrollToX = function (scrollLeft) {\n if (this.scrollLeft !== scrollLeft)\n this.scrollLeft = scrollLeft;\n this.$loop.schedule(this.CHANGE_H_SCROLL);\n };\n VirtualRenderer.prototype.scrollTo = function (x, y) {\n this.session.setScrollTop(y);\n this.session.setScrollLeft(x);\n };\n VirtualRenderer.prototype.scrollBy = function (deltaX, deltaY) {\n deltaY && this.session.setScrollTop(this.session.getScrollTop() + deltaY);\n deltaX && this.session.setScrollLeft(this.session.getScrollLeft() + deltaX);\n };\n VirtualRenderer.prototype.isScrollableBy = function (deltaX, deltaY) {\n if (deltaY < 0 && this.session.getScrollTop() >= 1 - this.scrollMargin.top)\n return true;\n if (deltaY > 0 && this.session.getScrollTop() + this.$size.scrollerHeight\n - this.layerConfig.maxHeight < -1 + this.scrollMargin.bottom)\n return true;\n if (deltaX < 0 && this.session.getScrollLeft() >= 1 - this.scrollMargin.left)\n return true;\n if (deltaX > 0 && this.session.getScrollLeft() + this.$size.scrollerWidth\n - this.layerConfig.width < -1 + this.scrollMargin.right)\n return true;\n };\n VirtualRenderer.prototype.pixelToScreenCoordinates = function (x, y) {\n var canvasPos;\n if (this.$hasCssTransforms) {\n canvasPos = { top: 0, left: 0 };\n var p = this.$fontMetrics.transformCoordinates([x, y]);\n x = p[1] - this.gutterWidth - this.margin.left;\n y = p[0];\n }\n else {\n canvasPos = this.scroller.getBoundingClientRect();\n }\n var offsetX = x + this.scrollLeft - canvasPos.left - this.$padding;\n var offset = offsetX / this.characterWidth;\n var row = Math.floor((y + this.scrollTop - canvasPos.top) / this.lineHeight);\n var col = this.$blockCursor ? Math.floor(offset) : Math.round(offset);\n return { row: row, column: col, side: offset - col > 0 ? 1 : -1, offsetX: offsetX };\n };\n VirtualRenderer.prototype.screenToTextCoordinates = function (x, y) {\n var canvasPos;\n if (this.$hasCssTransforms) {\n canvasPos = { top: 0, left: 0 };\n var p = this.$fontMetrics.transformCoordinates([x, y]);\n x = p[1] - this.gutterWidth - this.margin.left;\n y = p[0];\n }\n else {\n canvasPos = this.scroller.getBoundingClientRect();\n }\n var offsetX = x + this.scrollLeft - canvasPos.left - this.$padding;\n var offset = offsetX / this.characterWidth;\n var col = this.$blockCursor ? Math.floor(offset) : Math.round(offset);\n var row = Math.floor((y + this.scrollTop - canvasPos.top) / this.lineHeight);\n return this.session.screenToDocumentPosition(row, Math.max(col, 0), offsetX);\n };\n VirtualRenderer.prototype.textToScreenCoordinates = function (row, column) {\n var canvasPos = this.scroller.getBoundingClientRect();\n var pos = this.session.documentToScreenPosition(row, column);\n var x = this.$padding + (this.session.$bidiHandler.isBidiRow(pos.row, row)\n ? this.session.$bidiHandler.getPosLeft(pos.column)\n : Math.round(pos.column * this.characterWidth));\n var y = pos.row * this.lineHeight;\n return {\n pageX: canvasPos.left + x - this.scrollLeft,\n pageY: canvasPos.top + y - this.scrollTop\n };\n };\n VirtualRenderer.prototype.visualizeFocus = function () {\n dom.addCssClass(this.container, \"ace_focus\");\n };\n VirtualRenderer.prototype.visualizeBlur = function () {\n dom.removeCssClass(this.container, \"ace_focus\");\n };\n VirtualRenderer.prototype.showComposition = function (composition) {\n this.$composition = composition;\n if (!composition.cssText) {\n composition.cssText = this.textarea.style.cssText;\n }\n if (composition.useTextareaForIME == undefined)\n composition.useTextareaForIME = this.$useTextareaForIME;\n if (this.$useTextareaForIME) {\n dom.addCssClass(this.textarea, \"ace_composition\");\n this.textarea.style.cssText = \"\";\n this.$moveTextAreaToCursor();\n this.$cursorLayer.element.style.display = \"none\";\n }\n else {\n composition.markerId = this.session.addMarker(composition.markerRange, \"ace_composition_marker\", \"text\");\n }\n };\n VirtualRenderer.prototype.setCompositionText = function (text) {\n var cursor = this.session.selection.cursor;\n this.addToken(text, \"composition_placeholder\", cursor.row, cursor.column);\n this.$moveTextAreaToCursor();\n };\n VirtualRenderer.prototype.hideComposition = function () {\n if (!this.$composition)\n return;\n if (this.$composition.markerId)\n this.session.removeMarker(this.$composition.markerId);\n dom.removeCssClass(this.textarea, \"ace_composition\");\n this.textarea.style.cssText = this.$composition.cssText;\n var cursor = this.session.selection.cursor;\n this.removeExtraToken(cursor.row, cursor.column);\n this.$composition = null;\n this.$cursorLayer.element.style.display = \"\";\n };\n VirtualRenderer.prototype.setGhostText = function (text, position) {\n var cursor = this.session.selection.cursor;\n var insertPosition = position || { row: cursor.row, column: cursor.column };\n this.removeGhostText();\n var textLines = text.split(\"\\n\");\n this.addToken(textLines[0], \"ghost_text\", insertPosition.row, insertPosition.column);\n this.$ghostText = {\n text: text,\n position: {\n row: insertPosition.row,\n column: insertPosition.column\n }\n };\n if (textLines.length > 1) {\n this.$ghostTextWidget = {\n text: textLines.slice(1).join(\"\\n\"),\n row: insertPosition.row,\n column: insertPosition.column,\n className: \"ace_ghost_text\"\n };\n this.session.widgetManager.addLineWidget(this.$ghostTextWidget);\n }\n };\n VirtualRenderer.prototype.removeGhostText = function () {\n if (!this.$ghostText)\n return;\n var position = this.$ghostText.position;\n this.removeExtraToken(position.row, position.column);\n if (this.$ghostTextWidget) {\n this.session.widgetManager.removeLineWidget(this.$ghostTextWidget);\n this.$ghostTextWidget = null;\n }\n this.$ghostText = null;\n };\n VirtualRenderer.prototype.addToken = function (text, type, row, column) {\n var session = this.session;\n session.bgTokenizer.lines[row] = null;\n var newToken = { type: type, value: text };\n var tokens = session.getTokens(row);\n if (column == null || !tokens.length) {\n tokens.push(newToken);\n }\n else {\n var l = 0;\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n l += token.value.length;\n if (column <= l) {\n var diff = token.value.length - (l - column);\n var before = token.value.slice(0, diff);\n var after = token.value.slice(diff);\n tokens.splice(i, 1, { type: token.type, value: before }, newToken, { type: token.type, value: after });\n break;\n }\n }\n }\n this.updateLines(row, row);\n };\n VirtualRenderer.prototype.removeExtraToken = function (row, column) {\n this.session.bgTokenizer.lines[row] = null;\n this.updateLines(row, row);\n };\n VirtualRenderer.prototype.setTheme = function (theme, cb) {\n var _self = this;\n this.$themeId = theme;\n _self._dispatchEvent('themeChange', { theme: theme });\n if (!theme || typeof theme == \"string\") {\n var moduleName = theme || this.$options.theme.initialValue;\n config.loadModule([\"theme\", moduleName], afterLoad);\n }\n else {\n afterLoad(theme);\n }\n function afterLoad(module) {\n if (_self.$themeId != theme)\n return cb && cb();\n if (!module || !module.cssClass)\n throw new Error(\"couldn't load module \" + theme + \" or it didn't call define\");\n if (module.$id)\n _self.$themeId = module.$id;\n dom.importCssString(module.cssText, module.cssClass, _self.container);\n if (_self.theme)\n dom.removeCssClass(_self.container, _self.theme.cssClass);\n var padding = \"padding\" in module ? module.padding\n : \"padding\" in (_self.theme || {}) ? 4 : _self.$padding;\n if (_self.$padding && padding != _self.$padding)\n _self.setPadding(padding);\n _self.$theme = module.cssClass;\n _self.theme = module;\n dom.addCssClass(_self.container, module.cssClass);\n dom.setCssClass(_self.container, \"ace_dark\", module.isDark);\n if (_self.$size) {\n _self.$size.width = 0;\n _self.$updateSizeAsync();\n }\n _self._dispatchEvent('themeLoaded', { theme: module });\n cb && cb();\n }\n };\n VirtualRenderer.prototype.getTheme = function () {\n return this.$themeId;\n };\n VirtualRenderer.prototype.setStyle = function (style, include) {\n dom.setCssClass(this.container, style, include !== false);\n };\n VirtualRenderer.prototype.unsetStyle = function (style) {\n dom.removeCssClass(this.container, style);\n };\n VirtualRenderer.prototype.setCursorStyle = function (style) {\n dom.setStyle(this.scroller.style, \"cursor\", style);\n };\n VirtualRenderer.prototype.setMouseCursor = function (cursorStyle) {\n dom.setStyle(this.scroller.style, \"cursor\", cursorStyle);\n };\n VirtualRenderer.prototype.attachToShadowRoot = function () {\n dom.importCssString(editorCss, \"ace_editor.css\", this.container);\n };\n VirtualRenderer.prototype.destroy = function () {\n this.freeze();\n this.$fontMetrics.destroy();\n this.$cursorLayer.destroy();\n this.removeAllListeners();\n this.container.textContent = \"\";\n this.setOption(\"useResizeObserver\", false);\n };\n VirtualRenderer.prototype.$updateCustomScrollbar = function (val) {\n var _self = this;\n this.$horizScroll = this.$vScroll = null;\n this.scrollBarV.element.remove();\n this.scrollBarH.element.remove();\n if (this.$scrollDecorator) {\n delete this.$scrollDecorator;\n }\n if (val === true) {\n this.scrollBarV = new VScrollBarCustom(this.container, this);\n this.scrollBarH = new HScrollBarCustom(this.container, this);\n this.scrollBarV.setHeight(this.$size.scrollerHeight);\n this.scrollBarH.setWidth(this.$size.scrollerWidth);\n this.scrollBarV.addEventListener(\"scroll\", function (e) {\n if (!_self.$scrollAnimation)\n _self.session.setScrollTop(e.data - _self.scrollMargin.top);\n });\n this.scrollBarH.addEventListener(\"scroll\", function (e) {\n if (!_self.$scrollAnimation)\n _self.session.setScrollLeft(e.data - _self.scrollMargin.left);\n });\n this.$scrollDecorator = new Decorator(this.scrollBarV, this);\n this.$scrollDecorator.$updateDecorators();\n }\n else {\n this.scrollBarV = new VScrollBar(this.container, this);\n this.scrollBarH = new HScrollBar(this.container, this);\n this.scrollBarV.addEventListener(\"scroll\", function (e) {\n if (!_self.$scrollAnimation)\n _self.session.setScrollTop(e.data - _self.scrollMargin.top);\n });\n this.scrollBarH.addEventListener(\"scroll\", function (e) {\n if (!_self.$scrollAnimation)\n _self.session.setScrollLeft(e.data - _self.scrollMargin.left);\n });\n }\n };\n VirtualRenderer.prototype.$addResizeObserver = function () {\n if (!window.ResizeObserver || this.$resizeObserver)\n return;\n var self = this;\n this.$resizeTimer = lang.delayedCall(function () {\n if (!self.destroyed)\n self.onResize();\n }, 50);\n this.$resizeObserver = new window.ResizeObserver(function (e) {\n var w = e[0].contentRect.width;\n var h = e[0].contentRect.height;\n if (Math.abs(self.$size.width - w) > 1\n || Math.abs(self.$size.height - h) > 1) {\n self.$resizeTimer.delay();\n }\n else {\n self.$resizeTimer.cancel();\n }\n });\n this.$resizeObserver.observe(this.container);\n };\n return VirtualRenderer;\n}());\nVirtualRenderer.prototype.CHANGE_CURSOR = 1;\nVirtualRenderer.prototype.CHANGE_MARKER = 2;\nVirtualRenderer.prototype.CHANGE_GUTTER = 4;\nVirtualRenderer.prototype.CHANGE_SCROLL = 8;\nVirtualRenderer.prototype.CHANGE_LINES = 16;\nVirtualRenderer.prototype.CHANGE_TEXT = 32;\nVirtualRenderer.prototype.CHANGE_SIZE = 64;\nVirtualRenderer.prototype.CHANGE_MARKER_BACK = 128;\nVirtualRenderer.prototype.CHANGE_MARKER_FRONT = 256;\nVirtualRenderer.prototype.CHANGE_FULL = 512;\nVirtualRenderer.prototype.CHANGE_H_SCROLL = 1024;\nVirtualRenderer.prototype.$changes = 0;\nVirtualRenderer.prototype.$padding = null;\nVirtualRenderer.prototype.$frozen = false;\nVirtualRenderer.prototype.STEPS = 8;\noop.implement(VirtualRenderer.prototype, EventEmitter);\nconfig.defineOptions(VirtualRenderer.prototype, \"renderer\", {\n useResizeObserver: {\n set: function (value) {\n if (!value && this.$resizeObserver) {\n this.$resizeObserver.disconnect();\n this.$resizeTimer.cancel();\n this.$resizeTimer = this.$resizeObserver = null;\n }\n else if (value && !this.$resizeObserver) {\n this.$addResizeObserver();\n }\n }\n },\n animatedScroll: { initialValue: false },\n showInvisibles: {\n set: function (value) {\n if (this.$textLayer.setShowInvisibles(value))\n this.$loop.schedule(this.CHANGE_TEXT);\n },\n initialValue: false\n },\n showPrintMargin: {\n set: function () { this.$updatePrintMargin(); },\n initialValue: true\n },\n printMarginColumn: {\n set: function () { this.$updatePrintMargin(); },\n initialValue: 80\n },\n printMargin: {\n set: function (val) {\n if (typeof val == \"number\")\n this.$printMarginColumn = val;\n this.$showPrintMargin = !!val;\n this.$updatePrintMargin();\n },\n get: function () {\n return this.$showPrintMargin && this.$printMarginColumn;\n }\n },\n showGutter: {\n set: function (show) {\n this.$gutter.style.display = show ? \"block\" : \"none\";\n this.$loop.schedule(this.CHANGE_FULL);\n this.onGutterResize();\n },\n initialValue: true\n },\n useSvgGutterIcons: {\n set: function (value) {\n this.$gutterLayer.$useSvgGutterIcons = value;\n },\n initialValue: false\n },\n showFoldedAnnotations: {\n set: function (value) {\n this.$gutterLayer.$showFoldedAnnotations = value;\n },\n initialValue: false\n },\n fadeFoldWidgets: {\n set: function (show) {\n dom.setCssClass(this.$gutter, \"ace_fade-fold-widgets\", show);\n },\n initialValue: false\n },\n showFoldWidgets: {\n set: function (show) {\n this.$gutterLayer.setShowFoldWidgets(show);\n this.$loop.schedule(this.CHANGE_GUTTER);\n },\n initialValue: true\n },\n displayIndentGuides: {\n set: function (show) {\n if (this.$textLayer.setDisplayIndentGuides(show))\n this.$loop.schedule(this.CHANGE_TEXT);\n },\n initialValue: true\n },\n highlightIndentGuides: {\n set: function (show) {\n if (this.$textLayer.setHighlightIndentGuides(show) == true) {\n this.$textLayer.$highlightIndentGuide();\n }\n else {\n this.$textLayer.$clearActiveIndentGuide(this.$textLayer.$lines.cells);\n }\n },\n initialValue: true\n },\n highlightGutterLine: {\n set: function (shouldHighlight) {\n this.$gutterLayer.setHighlightGutterLine(shouldHighlight);\n this.$loop.schedule(this.CHANGE_GUTTER);\n },\n initialValue: true\n },\n hScrollBarAlwaysVisible: {\n set: function (val) {\n if (!this.$hScrollBarAlwaysVisible || !this.$horizScroll)\n this.$loop.schedule(this.CHANGE_SCROLL);\n },\n initialValue: false\n },\n vScrollBarAlwaysVisible: {\n set: function (val) {\n if (!this.$vScrollBarAlwaysVisible || !this.$vScroll)\n this.$loop.schedule(this.CHANGE_SCROLL);\n },\n initialValue: false\n },\n fontSize: {\n set: function (size) {\n if (typeof size == \"number\")\n size = size + \"px\";\n this.container.style.fontSize = size;\n this.updateFontSize();\n },\n initialValue: 12\n },\n fontFamily: {\n set: function (name) {\n this.container.style.fontFamily = name;\n this.updateFontSize();\n }\n },\n maxLines: {\n set: function (val) {\n this.updateFull();\n }\n },\n minLines: {\n set: function (val) {\n if (!(this.$minLines < 0x1ffffffffffff))\n this.$minLines = 0;\n this.updateFull();\n }\n },\n maxPixelHeight: {\n set: function (val) {\n this.updateFull();\n },\n initialValue: 0\n },\n scrollPastEnd: {\n set: function (val) {\n val = +val || 0;\n if (this.$scrollPastEnd == val)\n return;\n this.$scrollPastEnd = val;\n this.$loop.schedule(this.CHANGE_SCROLL);\n },\n initialValue: 0,\n handlesSet: true\n },\n fixedWidthGutter: {\n set: function (val) {\n this.$gutterLayer.$fixedWidth = !!val;\n this.$loop.schedule(this.CHANGE_GUTTER);\n }\n },\n customScrollbar: {\n set: function (val) {\n this.$updateCustomScrollbar(val);\n },\n initialValue: false\n },\n theme: {\n set: function (val) { this.setTheme(val); },\n get: function () { return this.$themeId || this.theme; },\n initialValue: \"./theme/textmate\",\n handlesSet: true\n },\n hasCssTransforms: {},\n useTextareaForIME: {\n initialValue: !useragent.isMobile && !useragent.isIE\n }\n});\nexports.VirtualRenderer = VirtualRenderer;\n\n});\n\nace.define(\"ace/worker/worker_client\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/net\",\"ace/lib/event_emitter\",\"ace/config\"], function(require, exports, module) {\n\"use strict\";\n\nvar oop = require(\"../lib/oop\");\nvar net = require(\"../lib/net\");\nvar EventEmitter = require(\"../lib/event_emitter\").EventEmitter;\nvar config = require(\"../config\");\n\nfunction $workerBlob(workerUrl) {\n var script = \"importScripts('\" + net.qualifyURL(workerUrl) + \"');\";\n try {\n return new Blob([script], {\"type\": \"application/javascript\"});\n } catch (e) { // Backwards-compatibility\n var BlobBuilder = window.BlobBuilder || window.WebKitBlobBuilder || window.MozBlobBuilder;\n var blobBuilder = new BlobBuilder();\n blobBuilder.append(script);\n return blobBuilder.getBlob(\"application/javascript\");\n }\n}\n\nfunction createWorker(workerUrl) {\n if (typeof Worker == \"undefined\")\n return { postMessage: function() {}, terminate: function() {} };\n if (config.get(\"loadWorkerFromBlob\")) {\n var blob = $workerBlob(workerUrl);\n var URL = window.URL || window.webkitURL;\n var blobURL = URL.createObjectURL(blob);\n return new Worker(blobURL);\n }\n return new Worker(workerUrl);\n}\n\nvar WorkerClient = function(worker) {\n if (!worker.postMessage)\n worker = this.$createWorkerFromOldConfig.apply(this, arguments);\n\n this.$worker = worker;\n this.$sendDeltaQueue = this.$sendDeltaQueue.bind(this);\n this.changeListener = this.changeListener.bind(this);\n this.onMessage = this.onMessage.bind(this);\n\n this.callbackId = 1;\n this.callbacks = {};\n\n this.$worker.onmessage = this.onMessage;\n};\n\n(function(){\n\n oop.implement(this, EventEmitter);\n\n this.$createWorkerFromOldConfig = function(topLevelNamespaces, mod, classname, workerUrl, importScripts) {\n if (require.nameToUrl && !require.toUrl)\n require.toUrl = require.nameToUrl;\n\n if (config.get(\"packaged\") || !require.toUrl) {\n workerUrl = workerUrl || config.moduleUrl(mod, \"worker\");\n } else {\n var normalizePath = this.$normalizePath;\n workerUrl = workerUrl || normalizePath(require.toUrl(\"ace/worker/worker.js\", null, \"_\"));\n\n var tlns = {};\n topLevelNamespaces.forEach(function(ns) {\n tlns[ns] = normalizePath(require.toUrl(ns, null, \"_\").replace(/(\\.js)?(\\?.*)?$/, \"\"));\n });\n }\n\n this.$worker = createWorker(workerUrl);\n if (importScripts) {\n this.send(\"importScripts\", importScripts);\n }\n this.$worker.postMessage({\n init : true,\n tlns : tlns,\n module : mod,\n classname : classname\n });\n return this.$worker;\n };\n\n this.onMessage = function(e) {\n var msg = e.data;\n switch (msg.type) {\n case \"event\":\n this._signal(msg.name, {data: msg.data});\n break;\n case \"call\":\n var callback = this.callbacks[msg.id];\n if (callback) {\n callback(msg.data);\n delete this.callbacks[msg.id];\n }\n break;\n case \"error\":\n this.reportError(msg.data);\n break;\n case \"log\":\n window.console && console.log && console.log.apply(console, msg.data);\n break;\n }\n };\n \n this.reportError = function(err) {\n window.console && console.error && console.error(err);\n };\n\n this.$normalizePath = function(path) {\n return net.qualifyURL(path);\n };\n\n this.terminate = function() {\n this._signal(\"terminate\", {});\n this.deltaQueue = null;\n this.$worker.terminate();\n this.$worker.onerror = function(e) {\n e.preventDefault();\n };\n this.$worker = null;\n if (this.$doc)\n this.$doc.off(\"change\", this.changeListener);\n this.$doc = null;\n };\n\n this.send = function(cmd, args) {\n this.$worker.postMessage({command: cmd, args: args});\n };\n\n this.call = function(cmd, args, callback) {\n if (callback) {\n var id = this.callbackId++;\n this.callbacks[id] = callback;\n args.push(id);\n }\n this.send(cmd, args);\n };\n\n this.emit = function(event, data) {\n try {\n if (data.data && data.data.err)\n data.data.err = {message: data.data.err.message, stack: data.data.err.stack, code: data.data.err.code};\n this.$worker && this.$worker.postMessage({event: event, data: {data: data.data}});\n }\n catch(ex) {\n console.error(ex.stack);\n }\n };\n\n this.attachToDocument = function(doc) {\n if (this.$doc)\n this.terminate();\n\n this.$doc = doc;\n this.call(\"setValue\", [doc.getValue()]);\n doc.on(\"change\", this.changeListener, true);\n };\n\n this.changeListener = function(delta) {\n if (!this.deltaQueue) {\n this.deltaQueue = [];\n setTimeout(this.$sendDeltaQueue, 0);\n }\n if (delta.action == \"insert\")\n this.deltaQueue.push(delta.start, delta.lines);\n else\n this.deltaQueue.push(delta.start, delta.end);\n };\n\n this.$sendDeltaQueue = function() {\n var q = this.deltaQueue;\n if (!q) return;\n this.deltaQueue = null;\n if (q.length > 50 && q.length > this.$doc.getLength() >> 1) {\n this.call(\"setValue\", [this.$doc.getValue()]);\n } else\n this.emit(\"change\", {data: q});\n };\n\n}).call(WorkerClient.prototype);\n\n\nvar UIWorkerClient = function(topLevelNamespaces, mod, classname) {\n var main = null;\n var emitSync = false;\n var sender = Object.create(EventEmitter);\n\n var messageBuffer = [];\n var workerClient = new WorkerClient({\n messageBuffer: messageBuffer,\n terminate: function() {},\n postMessage: function(e) {\n messageBuffer.push(e);\n if (!main) return;\n if (emitSync)\n setTimeout(processNext);\n else\n processNext();\n }\n });\n\n workerClient.setEmitSync = function(val) { emitSync = val; };\n\n var processNext = function() {\n var msg = messageBuffer.shift();\n if (msg.command)\n main[msg.command].apply(main, msg.args);\n else if (msg.event)\n sender._signal(msg.event, msg.data);\n };\n\n sender.postMessage = function(msg) {\n workerClient.onMessage({data: msg});\n };\n sender.callback = function(data, callbackId) {\n this.postMessage({type: \"call\", id: callbackId, data: data});\n };\n sender.emit = function(name, data) {\n this.postMessage({type: \"event\", name: name, data: data});\n };\n\n config.loadModule([\"worker\", mod], function(Main) {\n main = new Main[classname](sender);\n while (messageBuffer.length)\n processNext();\n });\n\n return workerClient;\n};\n\nexports.UIWorkerClient = UIWorkerClient;\nexports.WorkerClient = WorkerClient;\nexports.createWorker = createWorker;\n\n\n});\n\nace.define(\"ace/placeholder\",[\"require\",\"exports\",\"module\",\"ace/range\",\"ace/lib/event_emitter\",\"ace/lib/oop\"], function(require, exports, module){\"use strict\";\nvar Range = require(\"./range\").Range;\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar oop = require(\"./lib/oop\");\nvar PlaceHolder = /** @class */ (function () {\n function PlaceHolder(session, length, pos, others, mainClass, othersClass) {\n var _self = this;\n this.length = length;\n this.session = session;\n this.doc = session.getDocument();\n this.mainClass = mainClass;\n this.othersClass = othersClass;\n this.$onUpdate = this.onUpdate.bind(this);\n this.doc.on(\"change\", this.$onUpdate, true);\n this.$others = others;\n this.$onCursorChange = function () {\n setTimeout(function () {\n _self.onCursorChange();\n });\n };\n this.$pos = pos;\n var undoStack = session.getUndoManager().$undoStack || session.getUndoManager().$undostack || { length: -1 };\n this.$undoStackDepth = undoStack.length;\n this.setup();\n session.selection.on(\"changeCursor\", this.$onCursorChange);\n }\n PlaceHolder.prototype.setup = function () {\n var _self = this;\n var doc = this.doc;\n var session = this.session;\n this.selectionBefore = session.selection.toJSON();\n if (session.selection.inMultiSelectMode)\n session.selection.toSingleRange();\n this.pos = doc.createAnchor(this.$pos.row, this.$pos.column);\n var pos = this.pos;\n pos.$insertRight = true;\n pos.detach();\n pos.markerId = session.addMarker(new Range(pos.row, pos.column, pos.row, pos.column + this.length), this.mainClass, null, false);\n this.others = [];\n this.$others.forEach(function (other) {\n var anchor = doc.createAnchor(other.row, other.column);\n anchor.$insertRight = true;\n anchor.detach();\n _self.others.push(anchor);\n });\n session.setUndoSelect(false);\n };\n PlaceHolder.prototype.showOtherMarkers = function () {\n if (this.othersActive)\n return;\n var session = this.session;\n var _self = this;\n this.othersActive = true;\n this.others.forEach(function (anchor) {\n anchor.markerId = session.addMarker(new Range(anchor.row, anchor.column, anchor.row, anchor.column + _self.length), _self.othersClass, null, false);\n });\n };\n PlaceHolder.prototype.hideOtherMarkers = function () {\n if (!this.othersActive)\n return;\n this.othersActive = false;\n for (var i = 0; i < this.others.length; i++) {\n this.session.removeMarker(this.others[i].markerId);\n }\n };\n PlaceHolder.prototype.onUpdate = function (delta) {\n if (this.$updating)\n return this.updateAnchors(delta);\n var range = delta;\n if (range.start.row !== range.end.row)\n return;\n if (range.start.row !== this.pos.row)\n return;\n this.$updating = true;\n var lengthDiff = delta.action === \"insert\" ? range.end.column - range.start.column : range.start.column - range.end.column;\n var inMainRange = range.start.column >= this.pos.column && range.start.column <= this.pos.column + this.length + 1;\n var distanceFromStart = range.start.column - this.pos.column;\n this.updateAnchors(delta);\n if (inMainRange)\n this.length += lengthDiff;\n if (inMainRange && !this.session.$fromUndo) {\n if (delta.action === 'insert') {\n for (var i = this.others.length - 1; i >= 0; i--) {\n var otherPos = this.others[i];\n var newPos = { row: otherPos.row, column: otherPos.column + distanceFromStart };\n this.doc.insertMergedLines(newPos, delta.lines);\n }\n }\n else if (delta.action === 'remove') {\n for (var i = this.others.length - 1; i >= 0; i--) {\n var otherPos = this.others[i];\n var newPos = { row: otherPos.row, column: otherPos.column + distanceFromStart };\n this.doc.remove(new Range(newPos.row, newPos.column, newPos.row, newPos.column - lengthDiff));\n }\n }\n }\n this.$updating = false;\n this.updateMarkers();\n };\n PlaceHolder.prototype.updateAnchors = function (delta) {\n this.pos.onChange(delta);\n for (var i = this.others.length; i--;)\n this.others[i].onChange(delta);\n this.updateMarkers();\n };\n PlaceHolder.prototype.updateMarkers = function () {\n if (this.$updating)\n return;\n var _self = this;\n var session = this.session;\n var updateMarker = function (pos, className) {\n session.removeMarker(pos.markerId);\n pos.markerId = session.addMarker(new Range(pos.row, pos.column, pos.row, pos.column + _self.length), className, null, false);\n };\n updateMarker(this.pos, this.mainClass);\n for (var i = this.others.length; i--;)\n updateMarker(this.others[i], this.othersClass);\n };\n PlaceHolder.prototype.onCursorChange = function (event) {\n if (this.$updating || !this.session)\n return;\n var pos = this.session.selection.getCursor();\n if (pos.row === this.pos.row && pos.column >= this.pos.column && pos.column <= this.pos.column + this.length) {\n this.showOtherMarkers();\n this._emit(\"cursorEnter\", event);\n }\n else {\n this.hideOtherMarkers();\n this._emit(\"cursorLeave\", event);\n }\n };\n PlaceHolder.prototype.detach = function () {\n this.session.removeMarker(this.pos && this.pos.markerId);\n this.hideOtherMarkers();\n this.doc.off(\"change\", this.$onUpdate);\n this.session.selection.off(\"changeCursor\", this.$onCursorChange);\n this.session.setUndoSelect(true);\n this.session = null;\n };\n PlaceHolder.prototype.cancel = function () {\n if (this.$undoStackDepth === -1)\n return;\n var undoManager = this.session.getUndoManager();\n var undosRequired = (undoManager.$undoStack || undoManager.$undostack).length - this.$undoStackDepth;\n for (var i = 0; i < undosRequired; i++) {\n undoManager.undo(this.session, true);\n }\n if (this.selectionBefore)\n this.session.selection.fromJSON(this.selectionBefore);\n };\n return PlaceHolder;\n}());\noop.implement(PlaceHolder.prototype, EventEmitter);\nexports.PlaceHolder = PlaceHolder;\n\n});\n\nace.define(\"ace/mouse/multi_select_handler\",[\"require\",\"exports\",\"module\",\"ace/lib/event\",\"ace/lib/useragent\"], function(require, exports, module){var event = require(\"../lib/event\");\nvar useragent = require(\"../lib/useragent\");\nfunction isSamePoint(p1, p2) {\n return p1.row == p2.row && p1.column == p2.column;\n}\nfunction onMouseDown(e) {\n var ev = e.domEvent;\n var alt = ev.altKey;\n var shift = ev.shiftKey;\n var ctrl = ev.ctrlKey;\n var accel = e.getAccelKey();\n var button = e.getButton();\n if (ctrl && useragent.isMac)\n button = ev.button;\n if (e.editor.inMultiSelectMode && button == 2) {\n e.editor.textInput.onContextMenu(e.domEvent);\n return;\n }\n if (!ctrl && !alt && !accel) {\n if (button === 0 && e.editor.inMultiSelectMode)\n e.editor.exitMultiSelectMode();\n return;\n }\n if (button !== 0)\n return;\n var editor = e.editor;\n var selection = editor.selection;\n var isMultiSelect = editor.inMultiSelectMode;\n var pos = e.getDocumentPosition();\n var cursor = selection.getCursor();\n var inSelection = e.inSelection() || (selection.isEmpty() && isSamePoint(pos, cursor));\n var mouseX = e.x, mouseY = e.y;\n var onMouseSelection = function (e) {\n mouseX = e.clientX;\n mouseY = e.clientY;\n };\n var session = editor.session;\n var screenAnchor = editor.renderer.pixelToScreenCoordinates(mouseX, mouseY);\n var screenCursor = screenAnchor;\n var selectionMode;\n if (editor.$mouseHandler.$enableJumpToDef) {\n if (ctrl && alt || accel && alt)\n selectionMode = shift ? \"block\" : \"add\";\n else if (alt && editor.$blockSelectEnabled)\n selectionMode = \"block\";\n }\n else {\n if (accel && !alt) {\n selectionMode = \"add\";\n if (!isMultiSelect && shift)\n return;\n }\n else if (alt && editor.$blockSelectEnabled) {\n selectionMode = \"block\";\n }\n }\n if (selectionMode && useragent.isMac && ev.ctrlKey) {\n editor.$mouseHandler.cancelContextMenu();\n }\n if (selectionMode == \"add\") {\n if (!isMultiSelect && inSelection)\n return; // dragging\n if (!isMultiSelect) {\n var range = selection.toOrientedRange();\n editor.addSelectionMarker(range);\n }\n var oldRange = selection.rangeList.rangeAtPoint(pos);\n editor.inVirtualSelectionMode = true;\n if (shift) {\n oldRange = null;\n range = selection.ranges[0] || range;\n editor.removeSelectionMarker(range);\n }\n editor.once(\"mouseup\", function () {\n var tmpSel = selection.toOrientedRange();\n if (oldRange && tmpSel.isEmpty() && isSamePoint(oldRange.cursor, tmpSel.cursor))\n selection.substractPoint(tmpSel.cursor);\n else {\n if (shift) {\n selection.substractPoint(range.cursor);\n }\n else if (range) {\n editor.removeSelectionMarker(range);\n selection.addRange(range);\n }\n selection.addRange(tmpSel);\n }\n editor.inVirtualSelectionMode = false;\n });\n }\n else if (selectionMode == \"block\") {\n e.stop();\n editor.inVirtualSelectionMode = true;\n var initialRange;\n var rectSel = [];\n var blockSelect = function () {\n var newCursor = editor.renderer.pixelToScreenCoordinates(mouseX, mouseY);\n var cursor = session.screenToDocumentPosition(newCursor.row, newCursor.column, newCursor.offsetX);\n if (isSamePoint(screenCursor, newCursor) && isSamePoint(cursor, selection.lead))\n return;\n screenCursor = newCursor;\n editor.selection.moveToPosition(cursor);\n editor.renderer.scrollCursorIntoView();\n editor.removeSelectionMarkers(rectSel);\n rectSel = selection.rectangularRangeBlock(screenCursor, screenAnchor);\n if (editor.$mouseHandler.$clickSelection && rectSel.length == 1 && rectSel[0].isEmpty())\n rectSel[0] = editor.$mouseHandler.$clickSelection.clone();\n rectSel.forEach(editor.addSelectionMarker, editor);\n editor.updateSelectionMarkers();\n };\n if (isMultiSelect && !accel) {\n selection.toSingleRange();\n }\n else if (!isMultiSelect && accel) {\n initialRange = selection.toOrientedRange();\n editor.addSelectionMarker(initialRange);\n }\n if (shift)\n screenAnchor = session.documentToScreenPosition(selection.lead);\n else\n selection.moveToPosition(pos);\n screenCursor = { row: -1, column: -1 };\n var onMouseSelectionEnd = function (e) {\n blockSelect();\n clearInterval(timerId);\n editor.removeSelectionMarkers(rectSel);\n if (!rectSel.length)\n rectSel = [selection.toOrientedRange()];\n if (initialRange) {\n editor.removeSelectionMarker(initialRange);\n selection.toSingleRange(initialRange);\n }\n for (var i = 0; i < rectSel.length; i++)\n selection.addRange(rectSel[i]);\n editor.inVirtualSelectionMode = false;\n editor.$mouseHandler.$clickSelection = null;\n };\n var onSelectionInterval = blockSelect;\n event.capture(editor.container, onMouseSelection, onMouseSelectionEnd);\n var timerId = setInterval(function () { onSelectionInterval(); }, 20);\n return e.preventDefault();\n }\n}\nexports.onMouseDown = onMouseDown;\n\n});\n\nace.define(\"ace/commands/multi_select_commands\",[\"require\",\"exports\",\"module\",\"ace/keyboard/hash_handler\"], function(require, exports, module){// commands to enter multiselect mode\nexports.defaultCommands = [{\n name: \"addCursorAbove\",\n description: \"Add cursor above\",\n exec: function (editor) { editor.selectMoreLines(-1); },\n bindKey: { win: \"Ctrl-Alt-Up\", mac: \"Ctrl-Alt-Up\" },\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"addCursorBelow\",\n description: \"Add cursor below\",\n exec: function (editor) { editor.selectMoreLines(1); },\n bindKey: { win: \"Ctrl-Alt-Down\", mac: \"Ctrl-Alt-Down\" },\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"addCursorAboveSkipCurrent\",\n description: \"Add cursor above (skip current)\",\n exec: function (editor) { editor.selectMoreLines(-1, true); },\n bindKey: { win: \"Ctrl-Alt-Shift-Up\", mac: \"Ctrl-Alt-Shift-Up\" },\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"addCursorBelowSkipCurrent\",\n description: \"Add cursor below (skip current)\",\n exec: function (editor) { editor.selectMoreLines(1, true); },\n bindKey: { win: \"Ctrl-Alt-Shift-Down\", mac: \"Ctrl-Alt-Shift-Down\" },\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"selectMoreBefore\",\n description: \"Select more before\",\n exec: function (editor) { editor.selectMore(-1); },\n bindKey: { win: \"Ctrl-Alt-Left\", mac: \"Ctrl-Alt-Left\" },\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"selectMoreAfter\",\n description: \"Select more after\",\n exec: function (editor) { editor.selectMore(1); },\n bindKey: { win: \"Ctrl-Alt-Right\", mac: \"Ctrl-Alt-Right\" },\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"selectNextBefore\",\n description: \"Select next before\",\n exec: function (editor) { editor.selectMore(-1, true); },\n bindKey: { win: \"Ctrl-Alt-Shift-Left\", mac: \"Ctrl-Alt-Shift-Left\" },\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"selectNextAfter\",\n description: \"Select next after\",\n exec: function (editor) { editor.selectMore(1, true); },\n bindKey: { win: \"Ctrl-Alt-Shift-Right\", mac: \"Ctrl-Alt-Shift-Right\" },\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"toggleSplitSelectionIntoLines\",\n description: \"Split selection into lines\",\n exec: function (editor) {\n if (editor.multiSelect.rangeCount > 1)\n editor.multiSelect.joinSelections();\n else\n editor.multiSelect.splitIntoLines();\n },\n bindKey: { win: \"Ctrl-Alt-L\", mac: \"Ctrl-Alt-L\" },\n readOnly: true\n }, {\n name: \"splitSelectionIntoLines\",\n description: \"Split into lines\",\n exec: function (editor) { editor.multiSelect.splitIntoLines(); },\n readOnly: true\n }, {\n name: \"alignCursors\",\n description: \"Align cursors\",\n exec: function (editor) { editor.alignCursors(); },\n bindKey: { win: \"Ctrl-Alt-A\", mac: \"Ctrl-Alt-A\" },\n scrollIntoView: \"cursor\"\n }, {\n name: \"findAll\",\n description: \"Find all\",\n exec: function (editor) { editor.findAll(); },\n bindKey: { win: \"Ctrl-Alt-K\", mac: \"Ctrl-Alt-G\" },\n scrollIntoView: \"cursor\",\n readOnly: true\n }];\nexports.multiSelectCommands = [{\n name: \"singleSelection\",\n description: \"Single selection\",\n bindKey: \"esc\",\n exec: function (editor) { editor.exitMultiSelectMode(); },\n scrollIntoView: \"cursor\",\n readOnly: true,\n isAvailable: function (editor) { return editor && editor.inMultiSelectMode; }\n }];\nvar HashHandler = require(\"../keyboard/hash_handler\").HashHandler;\nexports.keyboardHandler = new HashHandler(exports.multiSelectCommands);\n\n});\n\nace.define(\"ace/multi_select\",[\"require\",\"exports\",\"module\",\"ace/range_list\",\"ace/range\",\"ace/selection\",\"ace/mouse/multi_select_handler\",\"ace/lib/event\",\"ace/lib/lang\",\"ace/commands/multi_select_commands\",\"ace/search\",\"ace/edit_session\",\"ace/editor\",\"ace/config\"], function(require, exports, module){var RangeList = require(\"./range_list\").RangeList;\nvar Range = require(\"./range\").Range;\nvar Selection = require(\"./selection\").Selection;\nvar onMouseDown = require(\"./mouse/multi_select_handler\").onMouseDown;\nvar event = require(\"./lib/event\");\nvar lang = require(\"./lib/lang\");\nvar commands = require(\"./commands/multi_select_commands\");\nexports.commands = commands.defaultCommands.concat(commands.multiSelectCommands);\nvar Search = require(\"./search\").Search;\nvar search = new Search();\nfunction find(session, needle, dir) {\n search.$options.wrap = true;\n search.$options.needle = needle;\n search.$options.backwards = dir == -1;\n return search.find(session);\n}\nvar EditSession = require(\"./edit_session\").EditSession;\n(function () {\n this.getSelectionMarkers = function () {\n return this.$selectionMarkers;\n };\n}).call(EditSession.prototype);\n(function () {\n this.ranges = null;\n this.rangeList = null;\n this.addRange = function (range, $blockChangeEvents) {\n if (!range)\n return;\n if (!this.inMultiSelectMode && this.rangeCount === 0) {\n var oldRange = this.toOrientedRange();\n this.rangeList.add(oldRange);\n this.rangeList.add(range);\n if (this.rangeList.ranges.length != 2) {\n this.rangeList.removeAll();\n return $blockChangeEvents || this.fromOrientedRange(range);\n }\n this.rangeList.removeAll();\n this.rangeList.add(oldRange);\n this.$onAddRange(oldRange);\n }\n if (!range.cursor)\n range.cursor = range.end;\n var removed = this.rangeList.add(range);\n this.$onAddRange(range);\n if (removed.length)\n this.$onRemoveRange(removed);\n if (this.rangeCount > 1 && !this.inMultiSelectMode) {\n this._signal(\"multiSelect\");\n this.inMultiSelectMode = true;\n this.session.$undoSelect = false;\n this.rangeList.attach(this.session);\n }\n return $blockChangeEvents || this.fromOrientedRange(range);\n };\n this.toSingleRange = function (range) {\n range = range || this.ranges[0];\n var removed = this.rangeList.removeAll();\n if (removed.length)\n this.$onRemoveRange(removed);\n range && this.fromOrientedRange(range);\n };\n this.substractPoint = function (pos) {\n var removed = this.rangeList.substractPoint(pos);\n if (removed) {\n this.$onRemoveRange(removed);\n return removed[0];\n }\n };\n this.mergeOverlappingRanges = function () {\n var removed = this.rangeList.merge();\n if (removed.length)\n this.$onRemoveRange(removed);\n };\n this.$onAddRange = function (range) {\n this.rangeCount = this.rangeList.ranges.length;\n this.ranges.unshift(range);\n this._signal(\"addRange\", { range: range });\n };\n this.$onRemoveRange = function (removed) {\n this.rangeCount = this.rangeList.ranges.length;\n if (this.rangeCount == 1 && this.inMultiSelectMode) {\n var lastRange = this.rangeList.ranges.pop();\n removed.push(lastRange);\n this.rangeCount = 0;\n }\n for (var i = removed.length; i--;) {\n var index = this.ranges.indexOf(removed[i]);\n this.ranges.splice(index, 1);\n }\n this._signal(\"removeRange\", { ranges: removed });\n if (this.rangeCount === 0 && this.inMultiSelectMode) {\n this.inMultiSelectMode = false;\n this._signal(\"singleSelect\");\n this.session.$undoSelect = true;\n this.rangeList.detach(this.session);\n }\n lastRange = lastRange || this.ranges[0];\n if (lastRange && !lastRange.isEqual(this.getRange()))\n this.fromOrientedRange(lastRange);\n };\n this.$initRangeList = function () {\n if (this.rangeList)\n return;\n this.rangeList = new RangeList();\n this.ranges = [];\n this.rangeCount = 0;\n };\n this.getAllRanges = function () {\n return this.rangeCount ? this.rangeList.ranges.concat() : [this.getRange()];\n };\n this.splitIntoLines = function () {\n var ranges = this.ranges.length ? this.ranges : [this.getRange()];\n var newRanges = [];\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i];\n var row = range.start.row;\n var endRow = range.end.row;\n if (row === endRow) {\n newRanges.push(range.clone());\n }\n else {\n newRanges.push(new Range(row, range.start.column, row, this.session.getLine(row).length));\n while (++row < endRow)\n newRanges.push(this.getLineRange(row, true));\n newRanges.push(new Range(endRow, 0, endRow, range.end.column));\n }\n if (i == 0 && !this.isBackwards())\n newRanges = newRanges.reverse();\n }\n this.toSingleRange();\n for (var i = newRanges.length; i--;)\n this.addRange(newRanges[i]);\n };\n this.joinSelections = function () {\n var ranges = this.rangeList.ranges;\n var lastRange = ranges[ranges.length - 1];\n var range = Range.fromPoints(ranges[0].start, lastRange.end);\n this.toSingleRange();\n this.setSelectionRange(range, lastRange.cursor == lastRange.start);\n };\n this.toggleBlockSelection = function () {\n if (this.rangeCount > 1) {\n var ranges = this.rangeList.ranges;\n var lastRange = ranges[ranges.length - 1];\n var range = Range.fromPoints(ranges[0].start, lastRange.end);\n this.toSingleRange();\n this.setSelectionRange(range, lastRange.cursor == lastRange.start);\n }\n else {\n var cursor = this.session.documentToScreenPosition(this.cursor);\n var anchor = this.session.documentToScreenPosition(this.anchor);\n var rectSel = this.rectangularRangeBlock(cursor, anchor);\n rectSel.forEach(this.addRange, this);\n }\n };\n this.rectangularRangeBlock = function (screenCursor, screenAnchor, includeEmptyLines) {\n var rectSel = [];\n var xBackwards = screenCursor.column < screenAnchor.column;\n if (xBackwards) {\n var startColumn = screenCursor.column;\n var endColumn = screenAnchor.column;\n var startOffsetX = screenCursor.offsetX;\n var endOffsetX = screenAnchor.offsetX;\n }\n else {\n var startColumn = screenAnchor.column;\n var endColumn = screenCursor.column;\n var startOffsetX = screenAnchor.offsetX;\n var endOffsetX = screenCursor.offsetX;\n }\n var yBackwards = screenCursor.row < screenAnchor.row;\n if (yBackwards) {\n var startRow = screenCursor.row;\n var endRow = screenAnchor.row;\n }\n else {\n var startRow = screenAnchor.row;\n var endRow = screenCursor.row;\n }\n if (startColumn < 0)\n startColumn = 0;\n if (startRow < 0)\n startRow = 0;\n if (startRow == endRow)\n includeEmptyLines = true;\n var docEnd;\n for (var row = startRow; row <= endRow; row++) {\n var range = Range.fromPoints(this.session.screenToDocumentPosition(row, startColumn, startOffsetX), this.session.screenToDocumentPosition(row, endColumn, endOffsetX));\n if (range.isEmpty()) {\n if (docEnd && isSamePoint(range.end, docEnd))\n break;\n docEnd = range.end;\n }\n range.cursor = xBackwards ? range.start : range.end;\n rectSel.push(range);\n }\n if (yBackwards)\n rectSel.reverse();\n if (!includeEmptyLines) {\n var end = rectSel.length - 1;\n while (rectSel[end].isEmpty() && end > 0)\n end--;\n if (end > 0) {\n var start = 0;\n while (rectSel[start].isEmpty())\n start++;\n }\n for (var i = end; i >= start; i--) {\n if (rectSel[i].isEmpty())\n rectSel.splice(i, 1);\n }\n }\n return rectSel;\n };\n}).call(Selection.prototype);\nvar Editor = require(\"./editor\").Editor;\n(function () {\n this.updateSelectionMarkers = function () {\n this.renderer.updateCursor();\n this.renderer.updateBackMarkers();\n };\n this.addSelectionMarker = function (orientedRange) {\n if (!orientedRange.cursor)\n orientedRange.cursor = orientedRange.end;\n var style = this.getSelectionStyle();\n orientedRange.marker = this.session.addMarker(orientedRange, \"ace_selection\", style);\n this.session.$selectionMarkers.push(orientedRange);\n this.session.selectionMarkerCount = this.session.$selectionMarkers.length;\n return orientedRange;\n };\n this.removeSelectionMarker = function (range) {\n if (!range.marker)\n return;\n this.session.removeMarker(range.marker);\n var index = this.session.$selectionMarkers.indexOf(range);\n if (index != -1)\n this.session.$selectionMarkers.splice(index, 1);\n this.session.selectionMarkerCount = this.session.$selectionMarkers.length;\n };\n this.removeSelectionMarkers = function (ranges) {\n var markerList = this.session.$selectionMarkers;\n for (var i = ranges.length; i--;) {\n var range = ranges[i];\n if (!range.marker)\n continue;\n this.session.removeMarker(range.marker);\n var index = markerList.indexOf(range);\n if (index != -1)\n markerList.splice(index, 1);\n }\n this.session.selectionMarkerCount = markerList.length;\n };\n this.$onAddRange = function (e) {\n this.addSelectionMarker(e.range);\n this.renderer.updateCursor();\n this.renderer.updateBackMarkers();\n };\n this.$onRemoveRange = function (e) {\n this.removeSelectionMarkers(e.ranges);\n this.renderer.updateCursor();\n this.renderer.updateBackMarkers();\n };\n this.$onMultiSelect = function (e) {\n if (this.inMultiSelectMode)\n return;\n this.inMultiSelectMode = true;\n this.setStyle(\"ace_multiselect\");\n this.keyBinding.addKeyboardHandler(commands.keyboardHandler);\n this.commands.setDefaultHandler(\"exec\", this.$onMultiSelectExec);\n this.renderer.updateCursor();\n this.renderer.updateBackMarkers();\n };\n this.$onSingleSelect = function (e) {\n if (this.session.multiSelect.inVirtualMode)\n return;\n this.inMultiSelectMode = false;\n this.unsetStyle(\"ace_multiselect\");\n this.keyBinding.removeKeyboardHandler(commands.keyboardHandler);\n this.commands.removeDefaultHandler(\"exec\", this.$onMultiSelectExec);\n this.renderer.updateCursor();\n this.renderer.updateBackMarkers();\n this._emit(\"changeSelection\");\n };\n this.$onMultiSelectExec = function (e) {\n var command = e.command;\n var editor = e.editor;\n if (!editor.multiSelect)\n return;\n if (!command.multiSelectAction) {\n var result = command.exec(editor, e.args || {});\n editor.multiSelect.addRange(editor.multiSelect.toOrientedRange());\n editor.multiSelect.mergeOverlappingRanges();\n }\n else if (command.multiSelectAction == \"forEach\") {\n result = editor.forEachSelection(command, e.args);\n }\n else if (command.multiSelectAction == \"forEachLine\") {\n result = editor.forEachSelection(command, e.args, true);\n }\n else if (command.multiSelectAction == \"single\") {\n editor.exitMultiSelectMode();\n result = command.exec(editor, e.args || {});\n }\n else {\n result = command.multiSelectAction(editor, e.args || {});\n }\n return result;\n };\n this.forEachSelection = function (cmd, args, options) {\n if (this.inVirtualSelectionMode)\n return;\n var keepOrder = options && options.keepOrder;\n var $byLines = options == true || options && options.$byLines;\n var session = this.session;\n var selection = this.selection;\n var rangeList = selection.rangeList;\n var ranges = (keepOrder ? selection : rangeList).ranges;\n var result;\n if (!ranges.length)\n return cmd.exec ? cmd.exec(this, args || {}) : cmd(this, args || {});\n var reg = selection._eventRegistry;\n selection._eventRegistry = {};\n var tmpSel = new Selection(session);\n this.inVirtualSelectionMode = true;\n for (var i = ranges.length; i--;) {\n if ($byLines) {\n while (i > 0 && ranges[i].start.row == ranges[i - 1].end.row)\n i--;\n }\n tmpSel.fromOrientedRange(ranges[i]);\n tmpSel.index = i;\n this.selection = session.selection = tmpSel;\n var cmdResult = cmd.exec ? cmd.exec(this, args || {}) : cmd(this, args || {});\n if (!result && cmdResult !== undefined)\n result = cmdResult;\n tmpSel.toOrientedRange(ranges[i]);\n }\n tmpSel.detach();\n this.selection = session.selection = selection;\n this.inVirtualSelectionMode = false;\n selection._eventRegistry = reg;\n selection.mergeOverlappingRanges();\n if (selection.ranges[0])\n selection.fromOrientedRange(selection.ranges[0]);\n var anim = this.renderer.$scrollAnimation;\n this.onCursorChange();\n this.onSelectionChange();\n if (anim && anim.from == anim.to)\n this.renderer.animateScrolling(anim.from);\n return result;\n };\n this.exitMultiSelectMode = function () {\n if (!this.inMultiSelectMode || this.inVirtualSelectionMode)\n return;\n this.multiSelect.toSingleRange();\n };\n this.getSelectedText = function () {\n var text = \"\";\n if (this.inMultiSelectMode && !this.inVirtualSelectionMode) {\n var ranges = this.multiSelect.rangeList.ranges;\n var buf = [];\n for (var i = 0; i < ranges.length; i++) {\n buf.push(this.session.getTextRange(ranges[i]));\n }\n var nl = this.session.getDocument().getNewLineCharacter();\n text = buf.join(nl);\n if (text.length == (buf.length - 1) * nl.length)\n text = \"\";\n }\n else if (!this.selection.isEmpty()) {\n text = this.session.getTextRange(this.getSelectionRange());\n }\n return text;\n };\n this.$checkMultiselectChange = function (e, anchor) {\n if (this.inMultiSelectMode && !this.inVirtualSelectionMode) {\n var range = this.multiSelect.ranges[0];\n if (this.multiSelect.isEmpty() && anchor == this.multiSelect.anchor)\n return;\n var pos = anchor == this.multiSelect.anchor\n ? range.cursor == range.start ? range.end : range.start\n : range.cursor;\n if (pos.row != anchor.row\n || this.session.$clipPositionToDocument(pos.row, pos.column).column != anchor.column)\n this.multiSelect.toSingleRange(this.multiSelect.toOrientedRange());\n else\n this.multiSelect.mergeOverlappingRanges();\n }\n };\n this.findAll = function (needle, options, additive) {\n options = options || {};\n options.needle = needle || options.needle;\n if (options.needle == undefined) {\n var range = this.selection.isEmpty()\n ? this.selection.getWordRange()\n : this.selection.getRange();\n options.needle = this.session.getTextRange(range);\n }\n this.$search.set(options);\n var ranges = this.$search.findAll(this.session);\n if (!ranges.length)\n return 0;\n var selection = this.multiSelect;\n if (!additive)\n selection.toSingleRange(ranges[0]);\n for (var i = ranges.length; i--;)\n selection.addRange(ranges[i], true);\n if (range && selection.rangeList.rangeAtPoint(range.start))\n selection.addRange(range, true);\n return ranges.length;\n };\n this.selectMoreLines = function (dir, skip) {\n var range = this.selection.toOrientedRange();\n var isBackwards = range.cursor == range.end;\n var screenLead = this.session.documentToScreenPosition(range.cursor);\n if (this.selection.$desiredColumn)\n screenLead.column = this.selection.$desiredColumn;\n var lead = this.session.screenToDocumentPosition(screenLead.row + dir, screenLead.column);\n if (!range.isEmpty()) {\n var screenAnchor = this.session.documentToScreenPosition(isBackwards ? range.end : range.start);\n var anchor = this.session.screenToDocumentPosition(screenAnchor.row + dir, screenAnchor.column);\n }\n else {\n var anchor = lead;\n }\n if (isBackwards) {\n var newRange = Range.fromPoints(lead, anchor);\n newRange.cursor = newRange.start;\n }\n else {\n var newRange = Range.fromPoints(anchor, lead);\n newRange.cursor = newRange.end;\n }\n newRange.desiredColumn = screenLead.column;\n if (!this.selection.inMultiSelectMode) {\n this.selection.addRange(range);\n }\n else {\n if (skip)\n var toRemove = range.cursor;\n }\n this.selection.addRange(newRange);\n if (toRemove)\n this.selection.substractPoint(toRemove);\n };\n this.transposeSelections = function (dir) {\n var session = this.session;\n var sel = session.multiSelect;\n var all = sel.ranges;\n for (var i = all.length; i--;) {\n var range = all[i];\n if (range.isEmpty()) {\n var tmp = session.getWordRange(range.start.row, range.start.column);\n range.start.row = tmp.start.row;\n range.start.column = tmp.start.column;\n range.end.row = tmp.end.row;\n range.end.column = tmp.end.column;\n }\n }\n sel.mergeOverlappingRanges();\n var words = [];\n for (var i = all.length; i--;) {\n var range = all[i];\n words.unshift(session.getTextRange(range));\n }\n if (dir < 0)\n words.unshift(words.pop());\n else\n words.push(words.shift());\n for (var i = all.length; i--;) {\n var range = all[i];\n var tmp = range.clone();\n session.replace(range, words[i]);\n range.start.row = tmp.start.row;\n range.start.column = tmp.start.column;\n }\n sel.fromOrientedRange(sel.ranges[0]);\n };\n this.selectMore = function (dir, skip, stopAtFirst) {\n var session = this.session;\n var sel = session.multiSelect;\n var range = sel.toOrientedRange();\n if (range.isEmpty()) {\n range = session.getWordRange(range.start.row, range.start.column);\n range.cursor = dir == -1 ? range.start : range.end;\n this.multiSelect.addRange(range);\n if (stopAtFirst)\n return;\n }\n var needle = session.getTextRange(range);\n var newRange = find(session, needle, dir);\n if (newRange) {\n newRange.cursor = dir == -1 ? newRange.start : newRange.end;\n this.session.unfold(newRange);\n this.multiSelect.addRange(newRange);\n this.renderer.scrollCursorIntoView(null, 0.5);\n }\n if (skip)\n this.multiSelect.substractPoint(range.cursor);\n };\n this.alignCursors = function () {\n var session = this.session;\n var sel = session.multiSelect;\n var ranges = sel.ranges;\n var row = -1;\n var sameRowRanges = ranges.filter(function (r) {\n if (r.cursor.row == row)\n return true;\n row = r.cursor.row;\n });\n if (!ranges.length || sameRowRanges.length == ranges.length - 1) {\n var range = this.selection.getRange();\n var fr = range.start.row, lr = range.end.row;\n var guessRange = fr == lr;\n if (guessRange) {\n var max = this.session.getLength();\n var line;\n do {\n line = this.session.getLine(lr);\n } while (/[=:]/.test(line) && ++lr < max);\n do {\n line = this.session.getLine(fr);\n } while (/[=:]/.test(line) && --fr > 0);\n if (fr < 0)\n fr = 0;\n if (lr >= max)\n lr = max - 1;\n }\n var lines = this.session.removeFullLines(fr, lr);\n lines = this.$reAlignText(lines, guessRange);\n this.session.insert({ row: fr, column: 0 }, lines.join(\"\\n\") + \"\\n\");\n if (!guessRange) {\n range.start.column = 0;\n range.end.column = lines[lines.length - 1].length;\n }\n this.selection.setRange(range);\n }\n else {\n sameRowRanges.forEach(function (r) {\n sel.substractPoint(r.cursor);\n });\n var maxCol = 0;\n var minSpace = Infinity;\n var spaceOffsets = ranges.map(function (r) {\n var p = r.cursor;\n var line = session.getLine(p.row);\n var spaceOffset = line.substr(p.column).search(/\\S/g);\n if (spaceOffset == -1)\n spaceOffset = 0;\n if (p.column > maxCol)\n maxCol = p.column;\n if (spaceOffset < minSpace)\n minSpace = spaceOffset;\n return spaceOffset;\n });\n ranges.forEach(function (r, i) {\n var p = r.cursor;\n var l = maxCol - p.column;\n var d = spaceOffsets[i] - minSpace;\n if (l > d)\n session.insert(p, lang.stringRepeat(\" \", l - d));\n else\n session.remove(new Range(p.row, p.column, p.row, p.column - l + d));\n r.start.column = r.end.column = maxCol;\n r.start.row = r.end.row = p.row;\n r.cursor = r.end;\n });\n sel.fromOrientedRange(ranges[0]);\n this.renderer.updateCursor();\n this.renderer.updateBackMarkers();\n }\n };\n this.$reAlignText = function (lines, forceLeft) {\n var isLeftAligned = true, isRightAligned = true;\n var startW, textW, endW;\n return lines.map(function (line) {\n var m = line.match(/(\\s*)(.*?)(\\s*)([=:].*)/);\n if (!m)\n return [line];\n if (startW == null) {\n startW = m[1].length;\n textW = m[2].length;\n endW = m[3].length;\n return m;\n }\n if (startW + textW + endW != m[1].length + m[2].length + m[3].length)\n isRightAligned = false;\n if (startW != m[1].length)\n isLeftAligned = false;\n if (startW > m[1].length)\n startW = m[1].length;\n if (textW < m[2].length)\n textW = m[2].length;\n if (endW > m[3].length)\n endW = m[3].length;\n return m;\n }).map(forceLeft ? alignLeft :\n isLeftAligned ? isRightAligned ? alignRight : alignLeft : unAlign);\n function spaces(n) {\n return lang.stringRepeat(\" \", n);\n }\n function alignLeft(m) {\n return !m[2] ? m[0] : spaces(startW) + m[2]\n + spaces(textW - m[2].length + endW)\n + m[4].replace(/^([=:])\\s+/, \"$1 \");\n }\n function alignRight(m) {\n return !m[2] ? m[0] : spaces(startW + textW - m[2].length) + m[2]\n + spaces(endW)\n + m[4].replace(/^([=:])\\s+/, \"$1 \");\n }\n function unAlign(m) {\n return !m[2] ? m[0] : spaces(startW) + m[2]\n + spaces(endW)\n + m[4].replace(/^([=:])\\s+/, \"$1 \");\n }\n };\n}).call(Editor.prototype);\nfunction isSamePoint(p1, p2) {\n return p1.row == p2.row && p1.column == p2.column;\n}\nexports.onSessionChange = function (e) {\n var session = e.session;\n if (session && !session.multiSelect) {\n session.$selectionMarkers = [];\n session.selection.$initRangeList();\n session.multiSelect = session.selection;\n }\n this.multiSelect = session && session.multiSelect;\n var oldSession = e.oldSession;\n if (oldSession) {\n oldSession.multiSelect.off(\"addRange\", this.$onAddRange);\n oldSession.multiSelect.off(\"removeRange\", this.$onRemoveRange);\n oldSession.multiSelect.off(\"multiSelect\", this.$onMultiSelect);\n oldSession.multiSelect.off(\"singleSelect\", this.$onSingleSelect);\n oldSession.multiSelect.lead.off(\"change\", this.$checkMultiselectChange);\n oldSession.multiSelect.anchor.off(\"change\", this.$checkMultiselectChange);\n }\n if (session) {\n session.multiSelect.on(\"addRange\", this.$onAddRange);\n session.multiSelect.on(\"removeRange\", this.$onRemoveRange);\n session.multiSelect.on(\"multiSelect\", this.$onMultiSelect);\n session.multiSelect.on(\"singleSelect\", this.$onSingleSelect);\n session.multiSelect.lead.on(\"change\", this.$checkMultiselectChange);\n session.multiSelect.anchor.on(\"change\", this.$checkMultiselectChange);\n }\n if (session && this.inMultiSelectMode != session.selection.inMultiSelectMode) {\n if (session.selection.inMultiSelectMode)\n this.$onMultiSelect();\n else\n this.$onSingleSelect();\n }\n};\nfunction MultiSelect(editor) {\n if (editor.$multiselectOnSessionChange)\n return;\n editor.$onAddRange = editor.$onAddRange.bind(editor);\n editor.$onRemoveRange = editor.$onRemoveRange.bind(editor);\n editor.$onMultiSelect = editor.$onMultiSelect.bind(editor);\n editor.$onSingleSelect = editor.$onSingleSelect.bind(editor);\n editor.$multiselectOnSessionChange = exports.onSessionChange.bind(editor);\n editor.$checkMultiselectChange = editor.$checkMultiselectChange.bind(editor);\n editor.$multiselectOnSessionChange(editor);\n editor.on(\"changeSession\", editor.$multiselectOnSessionChange);\n editor.on(\"mousedown\", onMouseDown);\n editor.commands.addCommands(commands.defaultCommands);\n addAltCursorListeners(editor);\n}\nfunction addAltCursorListeners(editor) {\n if (!editor.textInput)\n return;\n var el = editor.textInput.getElement();\n var altCursor = false;\n event.addListener(el, \"keydown\", function (e) {\n var altDown = e.keyCode == 18 && !(e.ctrlKey || e.shiftKey || e.metaKey);\n if (editor.$blockSelectEnabled && altDown) {\n if (!altCursor) {\n editor.renderer.setMouseCursor(\"crosshair\");\n altCursor = true;\n }\n }\n else if (altCursor) {\n reset();\n }\n }, editor);\n event.addListener(el, \"keyup\", reset, editor);\n event.addListener(el, \"blur\", reset, editor);\n function reset(e) {\n if (altCursor) {\n editor.renderer.setMouseCursor(\"\");\n altCursor = false;\n }\n }\n}\nexports.MultiSelect = MultiSelect;\nrequire(\"./config\").defineOptions(Editor.prototype, \"editor\", {\n enableMultiselect: {\n set: function (val) {\n MultiSelect(this);\n if (val) {\n this.on(\"mousedown\", onMouseDown);\n }\n else {\n this.off(\"mousedown\", onMouseDown);\n }\n },\n value: true\n },\n enableBlockSelect: {\n set: function (val) {\n this.$blockSelectEnabled = val;\n },\n value: true\n }\n});\n\n});\n\nace.define(\"ace/mode/folding/fold_mode\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar Range = require(\"../../range\").Range;\nvar FoldMode = exports.FoldMode = function () { };\n(function () {\n this.foldingStartMarker = null;\n this.foldingStopMarker = null;\n this.getFoldWidget = function (session, foldStyle, row) {\n var line = session.getLine(row);\n if (this.foldingStartMarker.test(line))\n return \"start\";\n if (foldStyle == \"markbeginend\"\n && this.foldingStopMarker\n && this.foldingStopMarker.test(line))\n return \"end\";\n return \"\";\n };\n this.getFoldWidgetRange = function (session, foldStyle, row) {\n return null;\n };\n this.indentationBlock = function (session, row, column) {\n var re = /\\S/;\n var line = session.getLine(row);\n var startLevel = line.search(re);\n if (startLevel == -1)\n return;\n var startColumn = column || line.length;\n var maxRow = session.getLength();\n var startRow = row;\n var endRow = row;\n while (++row < maxRow) {\n var level = session.getLine(row).search(re);\n if (level == -1)\n continue;\n if (level <= startLevel) {\n var token = session.getTokenAt(row, 0);\n if (!token || token.type !== \"string\")\n break;\n }\n endRow = row;\n }\n if (endRow > startRow) {\n var endColumn = session.getLine(endRow).length;\n return new Range(startRow, startColumn, endRow, endColumn);\n }\n };\n this.openingBracketBlock = function (session, bracket, row, column, typeRe) {\n var start = { row: row, column: column + 1 };\n var end = session.$findClosingBracket(bracket, start, typeRe);\n if (!end)\n return;\n var fw = session.foldWidgets[end.row];\n if (fw == null)\n fw = session.getFoldWidget(end.row);\n if (fw == \"start\" && end.row > start.row) {\n end.row--;\n end.column = session.getLine(end.row).length;\n }\n return Range.fromPoints(start, end);\n };\n this.closingBracketBlock = function (session, bracket, row, column, typeRe) {\n var end = { row: row, column: column };\n var start = session.$findOpeningBracket(bracket, end);\n if (!start)\n return;\n start.column++;\n end.column--;\n return Range.fromPoints(start, end);\n };\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/ext/error_marker\",[\"require\",\"exports\",\"module\",\"ace/line_widgets\",\"ace/lib/dom\",\"ace/range\",\"ace/config\"], function(require, exports, module){\"use strict\";\nvar LineWidgets = require(\"../line_widgets\").LineWidgets;\nvar dom = require(\"../lib/dom\");\nvar Range = require(\"../range\").Range;\nvar nls = require(\"../config\").nls;\nfunction binarySearch(array, needle, comparator) {\n var first = 0;\n var last = array.length - 1;\n while (first <= last) {\n var mid = (first + last) >> 1;\n var c = comparator(needle, array[mid]);\n if (c > 0)\n first = mid + 1;\n else if (c < 0)\n last = mid - 1;\n else\n return mid;\n }\n return -(first + 1);\n}\nfunction findAnnotations(session, row, dir) {\n var annotations = session.getAnnotations().sort(Range.comparePoints);\n if (!annotations.length)\n return;\n var i = binarySearch(annotations, { row: row, column: -1 }, Range.comparePoints);\n if (i < 0)\n i = -i - 1;\n if (i >= annotations.length)\n i = dir > 0 ? 0 : annotations.length - 1;\n else if (i === 0 && dir < 0)\n i = annotations.length - 1;\n var annotation = annotations[i];\n if (!annotation || !dir)\n return;\n if (annotation.row === row) {\n do {\n annotation = annotations[i += dir];\n } while (annotation && annotation.row === row);\n if (!annotation)\n return annotations.slice();\n }\n var matched = [];\n row = annotation.row;\n do {\n matched[dir < 0 ? \"unshift\" : \"push\"](annotation);\n annotation = annotations[i += dir];\n } while (annotation && annotation.row == row);\n return matched.length && matched;\n}\nexports.showErrorMarker = function (editor, dir) {\n var session = editor.session;\n if (!session.widgetManager) {\n session.widgetManager = new LineWidgets(session);\n session.widgetManager.attach(editor);\n }\n var pos = editor.getCursorPosition();\n var row = pos.row;\n var oldWidget = session.widgetManager.getWidgetsAtRow(row).filter(function (w) {\n return w.type == \"errorMarker\";\n })[0];\n if (oldWidget) {\n oldWidget.destroy();\n }\n else {\n row -= dir;\n }\n var annotations = findAnnotations(session, row, dir);\n var gutterAnno;\n if (annotations) {\n var annotation = annotations[0];\n pos.column = (annotation.pos && typeof annotation.column != \"number\"\n ? annotation.pos.sc\n : annotation.column) || 0;\n pos.row = annotation.row;\n gutterAnno = editor.renderer.$gutterLayer.$annotations[pos.row];\n }\n else if (oldWidget) {\n return;\n }\n else {\n gutterAnno = {\n text: [nls(\"Looks good!\")],\n className: \"ace_ok\"\n };\n }\n editor.session.unfold(pos.row);\n editor.selection.moveToPosition(pos);\n var w = {\n row: pos.row,\n fixedWidth: true,\n coverGutter: true,\n el: dom.createElement(\"div\"),\n type: \"errorMarker\"\n };\n var el = w.el.appendChild(dom.createElement(\"div\"));\n var arrow = w.el.appendChild(dom.createElement(\"div\"));\n arrow.className = \"error_widget_arrow \" + gutterAnno.className;\n var left = editor.renderer.$cursorLayer\n .getPixelPosition(pos).left;\n arrow.style.left = left + editor.renderer.gutterWidth - 5 + \"px\";\n w.el.className = \"error_widget_wrapper\";\n el.className = \"error_widget \" + gutterAnno.className;\n el.innerHTML = gutterAnno.text.join(\"
    \");\n el.appendChild(dom.createElement(\"div\"));\n var kb = function (_, hashId, keyString) {\n if (hashId === 0 && (keyString === \"esc\" || keyString === \"return\")) {\n w.destroy();\n return { command: \"null\" };\n }\n };\n w.destroy = function () {\n if (editor.$mouseHandler.isMousePressed)\n return;\n editor.keyBinding.removeKeyboardHandler(kb);\n session.widgetManager.removeLineWidget(w);\n editor.off(\"changeSelection\", w.destroy);\n editor.off(\"changeSession\", w.destroy);\n editor.off(\"mouseup\", w.destroy);\n editor.off(\"change\", w.destroy);\n };\n editor.keyBinding.addKeyboardHandler(kb);\n editor.on(\"changeSelection\", w.destroy);\n editor.on(\"changeSession\", w.destroy);\n editor.on(\"mouseup\", w.destroy);\n editor.on(\"change\", w.destroy);\n editor.session.widgetManager.addLineWidget(w);\n w.el.onmousedown = editor.focus.bind(editor);\n editor.renderer.scrollCursorIntoView(null, 0.5, { bottom: w.el.offsetHeight });\n};\ndom.importCssString(\"\\n .error_widget_wrapper {\\n background: inherit;\\n color: inherit;\\n border:none\\n }\\n .error_widget {\\n border-top: solid 2px;\\n border-bottom: solid 2px;\\n margin: 5px 0;\\n padding: 10px 40px;\\n white-space: pre-wrap;\\n }\\n .error_widget.ace_error, .error_widget_arrow.ace_error{\\n border-color: #ff5a5a\\n }\\n .error_widget.ace_warning, .error_widget_arrow.ace_warning{\\n border-color: #F1D817\\n }\\n .error_widget.ace_info, .error_widget_arrow.ace_info{\\n border-color: #5a5a5a\\n }\\n .error_widget.ace_ok, .error_widget_arrow.ace_ok{\\n border-color: #5aaa5a\\n }\\n .error_widget_arrow {\\n position: absolute;\\n border: solid 5px;\\n border-top-color: transparent!important;\\n border-right-color: transparent!important;\\n border-left-color: transparent!important;\\n top: -5px;\\n }\\n\", \"error_marker.css\", false);\n\n});\n\nace.define(\"ace/ace\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\",\"ace/range\",\"ace/editor\",\"ace/edit_session\",\"ace/undomanager\",\"ace/virtual_renderer\",\"ace/worker/worker_client\",\"ace/keyboard/hash_handler\",\"ace/placeholder\",\"ace/multi_select\",\"ace/mode/folding/fold_mode\",\"ace/theme/textmate\",\"ace/ext/error_marker\",\"ace/config\",\"ace/loader_build\"], function(require, exports, module){/**\n * The main class required to set up an Ace instance in the browser.\n *\n * @class Ace\n **/\n\"use strict\";\nrequire(\"./loader_build\")(exports)\nvar dom = require(\"./lib/dom\");\nvar Range = require(\"./range\").Range;\nvar Editor = require(\"./editor\").Editor;\nvar EditSession = require(\"./edit_session\").EditSession;\nvar UndoManager = require(\"./undomanager\").UndoManager;\nvar Renderer = require(\"./virtual_renderer\").VirtualRenderer;\nrequire(\"./worker/worker_client\");\nrequire(\"./keyboard/hash_handler\");\nrequire(\"./placeholder\");\nrequire(\"./multi_select\");\nrequire(\"./mode/folding/fold_mode\");\nrequire(\"./theme/textmate\");\nrequire(\"./ext/error_marker\");\nexports.config = require(\"./config\");\nexports.edit = function (el, options) {\n if (typeof el == \"string\") {\n var _id = el;\n el = document.getElementById(_id);\n if (!el)\n throw new Error(\"ace.edit can't find div #\" + _id);\n }\n if (el && el.env && el.env.editor instanceof Editor)\n return el.env.editor;\n var value = \"\";\n if (el && /input|textarea/i.test(el.tagName)) {\n var oldNode = el;\n value = oldNode.value;\n el = dom.createElement(\"pre\");\n oldNode.parentNode.replaceChild(el, oldNode);\n }\n else if (el) {\n value = el.textContent;\n el.innerHTML = \"\";\n }\n var doc = exports.createEditSession(value);\n var editor = new Editor(new Renderer(el), doc, options);\n var env = {\n document: doc,\n editor: editor,\n onResize: editor.resize.bind(editor, null)\n };\n if (oldNode)\n env.textarea = oldNode;\n editor.on(\"destroy\", function () {\n env.editor.container.env = null; // prevent memory leak on old ie\n });\n editor.container.env = editor.env = env;\n return editor;\n};\nexports.createEditSession = function (text, mode) {\n var doc = new EditSession(text, mode);\n doc.setUndoManager(new UndoManager());\n return doc;\n};\nexports.Range = Range;\nexports.Editor = Editor;\nexports.EditSession = EditSession;\nexports.UndoManager = UndoManager;\nexports.VirtualRenderer = Renderer;\nexports.version = exports.config.version;\n\n}); (function() {\n ace.require([\"ace/ace\"], function(a) {\n if (a) {\n a.config.init(true);\n a.define = ace.define;\n }\n var global = (function () {\n return this;\n })();\n if (!global && typeof window != \"undefined\") global = window; // can happen in strict mode\n if (!global && typeof self != \"undefined\") global = self; // can happen in webworker\n \n if (!global.ace)\n global.ace = a;\n for (var key in a) if (a.hasOwnProperty(key))\n global.ace[key] = a[key];\n global.ace[\"default\"] = global.ace;\n if (typeof module == \"object\" && typeof exports == \"object\" && module) {\n module.exports = global.ace;\n }\n });\n })();\n ","ace.define(\"ace/ext/beautify\",[\"require\",\"exports\",\"module\",\"ace/token_iterator\"], function(require, exports, module){// [WIP]\n\"use strict\";\nvar TokenIterator = require(\"../token_iterator\").TokenIterator;\nfunction is(token, type) {\n return token.type.lastIndexOf(type + \".xml\") > -1;\n}\nexports.singletonTags = [\"area\", \"base\", \"br\", \"col\", \"command\", \"embed\", \"hr\", \"html\", \"img\", \"input\", \"keygen\", \"link\", \"meta\", \"param\", \"source\", \"track\", \"wbr\"];\nexports.blockTags = [\"article\", \"aside\", \"blockquote\", \"body\", \"div\", \"dl\", \"fieldset\", \"footer\", \"form\", \"head\", \"header\", \"html\", \"nav\", \"ol\", \"p\", \"script\", \"section\", \"style\", \"table\", \"tbody\", \"tfoot\", \"thead\", \"ul\"];\nexports.formatOptions = {\n lineBreaksAfterCommasInCurlyBlock: true\n};\nexports.beautify = function (session) {\n var iterator = new TokenIterator(session, 0, 0);\n var token = iterator.getCurrentToken();\n var tabString = session.getTabString();\n var singletonTags = exports.singletonTags;\n var blockTags = exports.blockTags;\n var formatOptions = exports.formatOptions || {};\n var nextToken;\n var breakBefore = false;\n var spaceBefore = false;\n var spaceAfter = false;\n var code = \"\";\n var value = \"\";\n var tagName = \"\";\n var depth = 0;\n var lastDepth = 0;\n var lastIndent = 0;\n var indent = 0;\n var unindent = 0;\n var roundDepth = 0;\n var curlyDepth = 0;\n var row;\n var curRow = 0;\n var rowsToAdd = 0;\n var rowTokens = [];\n var abort = false;\n var i;\n var indentNextLine = false;\n var inTag = false;\n var inCSS = false;\n var inBlock = false;\n var levels = { 0: 0 };\n var parents = [];\n var caseBody = false;\n var trimNext = function () {\n if (nextToken && nextToken.value && nextToken.type !== 'string.regexp')\n nextToken.value = nextToken.value.replace(/^\\s*/, \"\");\n };\n var trimLine = function () {\n var end = code.length - 1;\n while (true) {\n if (end == 0)\n break;\n if (code[end] !== \" \")\n break;\n end = end - 1;\n }\n code = code.slice(0, end + 1);\n };\n var trimCode = function () {\n code = code.trimRight();\n breakBefore = false;\n };\n while (token !== null) {\n curRow = iterator.getCurrentTokenRow();\n rowTokens = iterator.$rowTokens;\n nextToken = iterator.stepForward();\n if (typeof token !== \"undefined\") {\n value = token.value;\n unindent = 0;\n inCSS = (tagName === \"style\" || session.$modeId === \"ace/mode/css\");\n if (is(token, \"tag-open\")) {\n inTag = true;\n if (nextToken)\n inBlock = (blockTags.indexOf(nextToken.value) !== -1);\n if (value === \" 0; rowsToAdd--)\n code += \"\\n\";\n breakBefore = true;\n if (!is(token, \"comment\") && !token.type.match(/^(comment|string)$/))\n value = value.trimLeft();\n }\n if (value) {\n if (token.type === \"keyword\" && value.match(/^(if|else|elseif|for|foreach|while|switch)$/)) {\n parents[depth] = value;\n trimNext();\n spaceAfter = true;\n if (value.match(/^(else|elseif)$/)) {\n if (code.match(/\\}[\\s]*$/)) {\n trimCode();\n spaceBefore = true;\n }\n }\n }\n else if (token.type === \"paren.lparen\") {\n trimNext();\n if (value.substr(-1) === \"{\") {\n spaceAfter = true;\n indentNextLine = false;\n if (!inTag)\n rowsToAdd = 1;\n }\n if (value.substr(0, 1) === \"{\") {\n spaceBefore = true;\n if (code.substr(-1) !== '[' && code.trimRight().substr(-1) === '[') {\n trimCode();\n spaceBefore = false;\n }\n else if (code.trimRight().substr(-1) === ')') {\n trimCode();\n }\n else {\n trimLine();\n }\n }\n }\n else if (token.type === \"paren.rparen\") {\n unindent = 1;\n if (value.substr(0, 1) === \"}\") {\n if (parents[depth - 1] === 'case')\n unindent++;\n if (code.trimRight().substr(-1) === '{') {\n trimCode();\n }\n else {\n spaceBefore = true;\n if (inCSS)\n rowsToAdd += 2;\n }\n }\n if (value.substr(0, 1) === \"]\") {\n if (code.substr(-1) !== '}' && code.trimRight().substr(-1) === '}') {\n spaceBefore = false;\n indent++;\n trimCode();\n }\n }\n if (value.substr(0, 1) === \")\") {\n if (code.substr(-1) !== '(' && code.trimRight().substr(-1) === '(') {\n spaceBefore = false;\n indent++;\n trimCode();\n }\n }\n trimLine();\n }\n else if ((token.type === \"keyword.operator\" || token.type === \"keyword\") && value.match(/^(=|==|===|!=|!==|&&|\\|\\||and|or|xor|\\+=|.=|>|>=|<|<=|=>)$/)) {\n trimCode();\n trimNext();\n spaceBefore = true;\n spaceAfter = true;\n }\n else if (token.type === \"punctuation.operator\" && value === ';') {\n trimCode();\n trimNext();\n spaceAfter = true;\n if (inCSS)\n rowsToAdd++;\n }\n else if (token.type === \"punctuation.operator\" && value.match(/^(:|,)$/)) {\n trimCode();\n trimNext();\n if (value.match(/^(,)$/) && curlyDepth > 0 && roundDepth === 0 && formatOptions.lineBreaksAfterCommasInCurlyBlock) {\n rowsToAdd++;\n }\n else {\n spaceAfter = true;\n breakBefore = false;\n }\n }\n else if (token.type === \"support.php_tag\" && value === \"?>\" && !breakBefore) {\n trimCode();\n spaceBefore = true;\n }\n else if (is(token, \"attribute-name\") && code.substr(-1).match(/^\\s$/)) {\n spaceBefore = true;\n }\n else if (is(token, \"attribute-equals\")) {\n trimLine();\n trimNext();\n }\n else if (is(token, \"tag-close\")) {\n trimLine();\n if (value === \"/>\")\n spaceBefore = true;\n }\n else if (token.type === \"keyword\" && value.match(/^(case|default)$/)) {\n if (caseBody)\n unindent = 1;\n }\n if (breakBefore && !(token.type.match(/^(comment)$/) && !value.substr(0, 1).match(/^[/#]$/)) && !(token.type.match(/^(string)$/) && !value.substr(0, 1).match(/^['\"@]$/))) {\n indent = lastIndent;\n if (depth > lastDepth) {\n indent++;\n for (i = depth; i > lastDepth; i--)\n levels[i] = indent;\n }\n else if (depth < lastDepth)\n indent = levels[depth];\n lastDepth = depth;\n lastIndent = indent;\n if (unindent)\n indent -= unindent;\n if (indentNextLine && !roundDepth) {\n indent++;\n indentNextLine = false;\n }\n for (i = 0; i < indent; i++)\n code += tabString;\n }\n if (token.type === \"keyword\" && value.match(/^(case|default)$/)) {\n if (caseBody === false) {\n parents[depth] = value;\n depth++;\n caseBody = true;\n }\n }\n else if (token.type === \"keyword\" && value.match(/^(break)$/)) {\n if (parents[depth - 1] && parents[depth - 1].match(/^(case|default)$/)) {\n depth--;\n caseBody = false;\n }\n }\n if (token.type === \"paren.lparen\") {\n roundDepth += (value.match(/\\(/g) || []).length;\n curlyDepth += (value.match(/\\{/g) || []).length;\n depth += value.length;\n }\n if (token.type === \"keyword\" && value.match(/^(if|else|elseif|for|while)$/)) {\n indentNextLine = true;\n roundDepth = 0;\n }\n else if (!roundDepth && value.trim() && token.type !== \"comment\")\n indentNextLine = false;\n if (token.type === \"paren.rparen\") {\n roundDepth -= (value.match(/\\)/g) || []).length;\n curlyDepth -= (value.match(/\\}/g) || []).length;\n for (i = 0; i < value.length; i++) {\n depth--;\n if (value.substr(i, 1) === '}' && parents[depth] === 'case') {\n depth--;\n }\n }\n }\n if (token.type == \"text\")\n value = value.replace(/\\s+$/, \" \");\n if (spaceBefore && !breakBefore) {\n trimLine();\n if (code.substr(-1) !== \"\\n\")\n code += \" \";\n }\n code += value;\n if (spaceAfter)\n code += \" \";\n breakBefore = false;\n spaceBefore = false;\n spaceAfter = false;\n if ((is(token, \"tag-close\") && (inBlock || blockTags.indexOf(tagName) !== -1)) || (is(token, \"doctype\") && value === \">\")) {\n if (inBlock && nextToken && nextToken.value === \"\") {\n depth--;\n }\n }\n if (is(token, \"tag-name\")) {\n tagName = value;\n }\n row = curRow;\n }\n }\n token = nextToken;\n }\n code = code.trim();\n session.doc.setValue(code);\n};\nexports.commands = [{\n name: \"beautify\",\n description: \"Format selection (Beautify)\",\n exec: function (editor) {\n exports.beautify(editor.session);\n },\n bindKey: \"Ctrl-Shift-B\"\n }];\n\n}); (function() {\n ace.require([\"ace/ext/beautify\"], function(m) {\n if (typeof module == \"object\" && typeof exports == \"object\" && module) {\n module.exports = m;\n }\n });\n })();\n ","ace.define(\"ace/ext/searchbox-css\",[\"require\",\"exports\",\"module\"], function(require, exports, module){module.exports = \"\\n\\n/* ------------------------------------------------------------------------------------------\\n * Editor Search Form\\n * --------------------------------------------------------------------------------------- */\\n.ace_search {\\n background-color: #ddd;\\n color: #666;\\n border: 1px solid #cbcbcb;\\n border-top: 0 none;\\n overflow: hidden;\\n margin: 0;\\n padding: 4px 6px 0 4px;\\n position: absolute;\\n top: 0;\\n z-index: 99;\\n white-space: normal;\\n}\\n.ace_search.left {\\n border-left: 0 none;\\n border-radius: 0px 0px 5px 0px;\\n left: 0;\\n}\\n.ace_search.right {\\n border-radius: 0px 0px 0px 5px;\\n border-right: 0 none;\\n right: 0;\\n}\\n\\n.ace_search_form, .ace_replace_form {\\n margin: 0 20px 4px 0;\\n overflow: hidden;\\n line-height: 1.9;\\n}\\n.ace_replace_form {\\n margin-right: 0;\\n}\\n.ace_search_form.ace_nomatch {\\n outline: 1px solid red;\\n}\\n\\n.ace_search_field {\\n border-radius: 3px 0 0 3px;\\n background-color: white;\\n color: black;\\n border: 1px solid #cbcbcb;\\n border-right: 0 none;\\n outline: 0;\\n padding: 0;\\n font-size: inherit;\\n margin: 0;\\n line-height: inherit;\\n padding: 0 6px;\\n min-width: 17em;\\n vertical-align: top;\\n min-height: 1.8em;\\n box-sizing: content-box;\\n}\\n.ace_searchbtn {\\n border: 1px solid #cbcbcb;\\n line-height: inherit;\\n display: inline-block;\\n padding: 0 6px;\\n background: #fff;\\n border-right: 0 none;\\n border-left: 1px solid #dcdcdc;\\n cursor: pointer;\\n margin: 0;\\n position: relative;\\n color: #666;\\n}\\n.ace_searchbtn:last-child {\\n border-radius: 0 3px 3px 0;\\n border-right: 1px solid #cbcbcb;\\n}\\n.ace_searchbtn:disabled {\\n background: none;\\n cursor: default;\\n}\\n.ace_searchbtn:hover {\\n background-color: #eef1f6;\\n}\\n.ace_searchbtn.prev, .ace_searchbtn.next {\\n padding: 0px 0.7em\\n}\\n.ace_searchbtn.prev:after, .ace_searchbtn.next:after {\\n content: \\\"\\\";\\n border: solid 2px #888;\\n width: 0.5em;\\n height: 0.5em;\\n border-width: 2px 0 0 2px;\\n display:inline-block;\\n transform: rotate(-45deg);\\n}\\n.ace_searchbtn.next:after {\\n border-width: 0 2px 2px 0 ;\\n}\\n.ace_searchbtn_close {\\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAcCAYAAABRVo5BAAAAZ0lEQVR42u2SUQrAMAhDvazn8OjZBilCkYVVxiis8H4CT0VrAJb4WHT3C5xU2a2IQZXJjiQIRMdkEoJ5Q2yMqpfDIo+XY4k6h+YXOyKqTIj5REaxloNAd0xiKmAtsTHqW8sR2W5f7gCu5nWFUpVjZwAAAABJRU5ErkJggg==) no-repeat 50% 0;\\n border-radius: 50%;\\n border: 0 none;\\n color: #656565;\\n cursor: pointer;\\n font: 16px/16px Arial;\\n padding: 0;\\n height: 14px;\\n width: 14px;\\n top: 9px;\\n right: 7px;\\n position: absolute;\\n}\\n.ace_searchbtn_close:hover {\\n background-color: #656565;\\n background-position: 50% 100%;\\n color: white;\\n}\\n\\n.ace_button {\\n margin-left: 2px;\\n cursor: pointer;\\n -webkit-user-select: none;\\n -moz-user-select: none;\\n -o-user-select: none;\\n -ms-user-select: none;\\n user-select: none;\\n overflow: hidden;\\n opacity: 0.7;\\n border: 1px solid rgba(100,100,100,0.23);\\n padding: 1px;\\n box-sizing: border-box!important;\\n color: black;\\n}\\n\\n.ace_button:hover {\\n background-color: #eee;\\n opacity:1;\\n}\\n.ace_button:active {\\n background-color: #ddd;\\n}\\n\\n.ace_button.checked {\\n border-color: #3399ff;\\n opacity:1;\\n}\\n\\n.ace_search_options{\\n margin-bottom: 3px;\\n text-align: right;\\n -webkit-user-select: none;\\n -moz-user-select: none;\\n -o-user-select: none;\\n -ms-user-select: none;\\n user-select: none;\\n clear: both;\\n}\\n\\n.ace_search_counter {\\n float: left;\\n font-family: arial;\\n padding: 0 8px;\\n}\";\n\n});\n\nace.define(\"ace/ext/searchbox\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\",\"ace/lib/lang\",\"ace/lib/event\",\"ace/ext/searchbox-css\",\"ace/keyboard/hash_handler\",\"ace/lib/keys\",\"ace/config\"], function(require, exports, module){\"use strict\";\nvar dom = require(\"../lib/dom\");\nvar lang = require(\"../lib/lang\");\nvar event = require(\"../lib/event\");\nvar searchboxCss = require(\"./searchbox-css\");\nvar HashHandler = require(\"../keyboard/hash_handler\").HashHandler;\nvar keyUtil = require(\"../lib/keys\");\nvar nls = require(\"../config\").nls;\nvar MAX_COUNT = 999;\ndom.importCssString(searchboxCss, \"ace_searchbox\", false);\nvar SearchBox = /** @class */ (function () {\n function SearchBox(editor, range, showReplaceForm) {\n var div = dom.createElement(\"div\");\n dom.buildDom([\"div\", { class: \"ace_search right\" },\n [\"span\", { action: \"hide\", class: \"ace_searchbtn_close\" }],\n [\"div\", { class: \"ace_search_form\" },\n [\"input\", { class: \"ace_search_field\", placeholder: nls(\"Search for\"), spellcheck: \"false\" }],\n [\"span\", { action: \"findPrev\", class: \"ace_searchbtn prev\" }, \"\\u200b\"],\n [\"span\", { action: \"findNext\", class: \"ace_searchbtn next\" }, \"\\u200b\"],\n [\"span\", { action: \"findAll\", class: \"ace_searchbtn\", title: \"Alt-Enter\" }, nls(\"All\")]\n ],\n [\"div\", { class: \"ace_replace_form\" },\n [\"input\", { class: \"ace_search_field\", placeholder: nls(\"Replace with\"), spellcheck: \"false\" }],\n [\"span\", { action: \"replaceAndFindNext\", class: \"ace_searchbtn\" }, nls(\"Replace\")],\n [\"span\", { action: \"replaceAll\", class: \"ace_searchbtn\" }, nls(\"All\")]\n ],\n [\"div\", { class: \"ace_search_options\" },\n [\"span\", { action: \"toggleReplace\", class: \"ace_button\", title: nls(\"Toggle Replace mode\"),\n style: \"float:left;margin-top:-2px;padding:0 5px;\" }, \"+\"],\n [\"span\", { class: \"ace_search_counter\" }],\n [\"span\", { action: \"toggleRegexpMode\", class: \"ace_button\", title: nls(\"RegExp Search\") }, \".*\"],\n [\"span\", { action: \"toggleCaseSensitive\", class: \"ace_button\", title: nls(\"CaseSensitive Search\") }, \"Aa\"],\n [\"span\", { action: \"toggleWholeWords\", class: \"ace_button\", title: nls(\"Whole Word Search\") }, \"\\\\b\"],\n [\"span\", { action: \"searchInSelection\", class: \"ace_button\", title: nls(\"Search In Selection\") }, \"S\"]\n ]\n ], div);\n this.element = div.firstChild;\n this.setSession = this.setSession.bind(this);\n this.$init();\n this.setEditor(editor);\n dom.importCssString(searchboxCss, \"ace_searchbox\", editor.container);\n }\n SearchBox.prototype.setEditor = function (editor) {\n editor.searchBox = this;\n editor.renderer.scroller.appendChild(this.element);\n this.editor = editor;\n };\n SearchBox.prototype.setSession = function (e) {\n this.searchRange = null;\n this.$syncOptions(true);\n };\n SearchBox.prototype.$initElements = function (sb) {\n this.searchBox = sb.querySelector(\".ace_search_form\");\n this.replaceBox = sb.querySelector(\".ace_replace_form\");\n this.searchOption = sb.querySelector(\"[action=searchInSelection]\");\n this.replaceOption = sb.querySelector(\"[action=toggleReplace]\");\n this.regExpOption = sb.querySelector(\"[action=toggleRegexpMode]\");\n this.caseSensitiveOption = sb.querySelector(\"[action=toggleCaseSensitive]\");\n this.wholeWordOption = sb.querySelector(\"[action=toggleWholeWords]\");\n this.searchInput = this.searchBox.querySelector(\".ace_search_field\");\n this.replaceInput = this.replaceBox.querySelector(\".ace_search_field\");\n this.searchCounter = sb.querySelector(\".ace_search_counter\");\n };\n SearchBox.prototype.$init = function () {\n var sb = this.element;\n this.$initElements(sb);\n var _this = this;\n event.addListener(sb, \"mousedown\", function (e) {\n setTimeout(function () {\n _this.activeInput.focus();\n }, 0);\n event.stopPropagation(e);\n });\n event.addListener(sb, \"click\", function (e) {\n var t = e.target || e.srcElement;\n var action = t.getAttribute(\"action\");\n if (action && _this[action])\n _this[action]();\n else if (_this.$searchBarKb.commands[action])\n _this.$searchBarKb.commands[action].exec(_this);\n event.stopPropagation(e);\n });\n event.addCommandKeyListener(sb, function (e, hashId, keyCode) {\n var keyString = keyUtil.keyCodeToString(keyCode);\n var command = _this.$searchBarKb.findKeyCommand(hashId, keyString);\n if (command && command.exec) {\n command.exec(_this);\n event.stopEvent(e);\n }\n });\n this.$onChange = lang.delayedCall(function () {\n _this.find(false, false);\n });\n event.addListener(this.searchInput, \"input\", function () {\n _this.$onChange.schedule(20);\n });\n event.addListener(this.searchInput, \"focus\", function () {\n _this.activeInput = _this.searchInput;\n _this.searchInput.value && _this.highlight();\n });\n event.addListener(this.replaceInput, \"focus\", function () {\n _this.activeInput = _this.replaceInput;\n _this.searchInput.value && _this.highlight();\n });\n };\n SearchBox.prototype.setSearchRange = function (range) {\n this.searchRange = range;\n if (range) {\n this.searchRangeMarker = this.editor.session.addMarker(range, \"ace_active-line\");\n }\n else if (this.searchRangeMarker) {\n this.editor.session.removeMarker(this.searchRangeMarker);\n this.searchRangeMarker = null;\n }\n };\n SearchBox.prototype.$syncOptions = function (preventScroll) {\n dom.setCssClass(this.replaceOption, \"checked\", this.searchRange);\n dom.setCssClass(this.searchOption, \"checked\", this.searchOption.checked);\n this.replaceOption.textContent = this.replaceOption.checked ? \"-\" : \"+\";\n dom.setCssClass(this.regExpOption, \"checked\", this.regExpOption.checked);\n dom.setCssClass(this.wholeWordOption, \"checked\", this.wholeWordOption.checked);\n dom.setCssClass(this.caseSensitiveOption, \"checked\", this.caseSensitiveOption.checked);\n var readOnly = this.editor.getReadOnly();\n this.replaceOption.style.display = readOnly ? \"none\" : \"\";\n this.replaceBox.style.display = this.replaceOption.checked && !readOnly ? \"\" : \"none\";\n this.find(false, false, preventScroll);\n };\n SearchBox.prototype.highlight = function (re) {\n this.editor.session.highlight(re || this.editor.$search.$options.re);\n this.editor.renderer.updateBackMarkers();\n };\n SearchBox.prototype.find = function (skipCurrent, backwards, preventScroll) {\n var range = this.editor.find(this.searchInput.value, {\n skipCurrent: skipCurrent,\n backwards: backwards,\n wrap: true,\n regExp: this.regExpOption.checked,\n caseSensitive: this.caseSensitiveOption.checked,\n wholeWord: this.wholeWordOption.checked,\n preventScroll: preventScroll,\n range: this.searchRange\n });\n var noMatch = !range && this.searchInput.value;\n dom.setCssClass(this.searchBox, \"ace_nomatch\", noMatch);\n this.editor._emit(\"findSearchBox\", { match: !noMatch });\n this.highlight();\n this.updateCounter();\n };\n SearchBox.prototype.updateCounter = function () {\n var editor = this.editor;\n var regex = editor.$search.$options.re;\n var all = 0;\n var before = 0;\n if (regex) {\n var value = this.searchRange\n ? editor.session.getTextRange(this.searchRange)\n : editor.getValue();\n var offset = editor.session.doc.positionToIndex(editor.selection.anchor);\n if (this.searchRange)\n offset -= editor.session.doc.positionToIndex(this.searchRange.start);\n var last = regex.lastIndex = 0;\n var m;\n while ((m = regex.exec(value))) {\n all++;\n last = m.index;\n if (last <= offset)\n before++;\n if (all > MAX_COUNT)\n break;\n if (!m[0]) {\n regex.lastIndex = last += 1;\n if (last >= value.length)\n break;\n }\n }\n }\n this.searchCounter.textContent = nls(\"$0 of $1\", [before, (all > MAX_COUNT ? MAX_COUNT + \"+\" : all)]);\n };\n SearchBox.prototype.findNext = function () {\n this.find(true, false);\n };\n SearchBox.prototype.findPrev = function () {\n this.find(true, true);\n };\n SearchBox.prototype.findAll = function () {\n var range = this.editor.findAll(this.searchInput.value, {\n regExp: this.regExpOption.checked,\n caseSensitive: this.caseSensitiveOption.checked,\n wholeWord: this.wholeWordOption.checked\n });\n var noMatch = !range && this.searchInput.value;\n dom.setCssClass(this.searchBox, \"ace_nomatch\", noMatch);\n this.editor._emit(\"findSearchBox\", { match: !noMatch });\n this.highlight();\n this.hide();\n };\n SearchBox.prototype.replace = function () {\n if (!this.editor.getReadOnly())\n this.editor.replace(this.replaceInput.value);\n };\n SearchBox.prototype.replaceAndFindNext = function () {\n if (!this.editor.getReadOnly()) {\n this.editor.replace(this.replaceInput.value);\n this.findNext();\n }\n };\n SearchBox.prototype.replaceAll = function () {\n if (!this.editor.getReadOnly())\n this.editor.replaceAll(this.replaceInput.value);\n };\n SearchBox.prototype.hide = function () {\n this.active = false;\n this.setSearchRange(null);\n this.editor.off(\"changeSession\", this.setSession);\n this.element.style.display = \"none\";\n this.editor.keyBinding.removeKeyboardHandler(this.$closeSearchBarKb);\n this.editor.focus();\n };\n SearchBox.prototype.show = function (value, isReplace) {\n this.active = true;\n this.editor.on(\"changeSession\", this.setSession);\n this.element.style.display = \"\";\n this.replaceOption.checked = isReplace;\n if (value)\n this.searchInput.value = value;\n this.searchInput.focus();\n this.searchInput.select();\n this.editor.keyBinding.addKeyboardHandler(this.$closeSearchBarKb);\n this.$syncOptions(true);\n };\n SearchBox.prototype.isFocused = function () {\n var el = document.activeElement;\n return el == this.searchInput || el == this.replaceInput;\n };\n return SearchBox;\n}());\nvar $searchBarKb = new HashHandler();\n$searchBarKb.bindKeys({\n \"Ctrl-f|Command-f\": function (sb) {\n var isReplace = sb.isReplace = !sb.isReplace;\n sb.replaceBox.style.display = isReplace ? \"\" : \"none\";\n sb.replaceOption.checked = false;\n sb.$syncOptions();\n sb.searchInput.focus();\n },\n \"Ctrl-H|Command-Option-F\": function (sb) {\n if (sb.editor.getReadOnly())\n return;\n sb.replaceOption.checked = true;\n sb.$syncOptions();\n sb.replaceInput.focus();\n },\n \"Ctrl-G|Command-G\": function (sb) {\n sb.findNext();\n },\n \"Ctrl-Shift-G|Command-Shift-G\": function (sb) {\n sb.findPrev();\n },\n \"esc\": function (sb) {\n setTimeout(function () { sb.hide(); });\n },\n \"Return\": function (sb) {\n if (sb.activeInput == sb.replaceInput)\n sb.replace();\n sb.findNext();\n },\n \"Shift-Return\": function (sb) {\n if (sb.activeInput == sb.replaceInput)\n sb.replace();\n sb.findPrev();\n },\n \"Alt-Return\": function (sb) {\n if (sb.activeInput == sb.replaceInput)\n sb.replaceAll();\n sb.findAll();\n },\n \"Tab\": function (sb) {\n (sb.activeInput == sb.replaceInput ? sb.searchInput : sb.replaceInput).focus();\n }\n});\n$searchBarKb.addCommands([{\n name: \"toggleRegexpMode\",\n bindKey: { win: \"Alt-R|Alt-/\", mac: \"Ctrl-Alt-R|Ctrl-Alt-/\" },\n exec: function (sb) {\n sb.regExpOption.checked = !sb.regExpOption.checked;\n sb.$syncOptions();\n }\n }, {\n name: \"toggleCaseSensitive\",\n bindKey: { win: \"Alt-C|Alt-I\", mac: \"Ctrl-Alt-R|Ctrl-Alt-I\" },\n exec: function (sb) {\n sb.caseSensitiveOption.checked = !sb.caseSensitiveOption.checked;\n sb.$syncOptions();\n }\n }, {\n name: \"toggleWholeWords\",\n bindKey: { win: \"Alt-B|Alt-W\", mac: \"Ctrl-Alt-B|Ctrl-Alt-W\" },\n exec: function (sb) {\n sb.wholeWordOption.checked = !sb.wholeWordOption.checked;\n sb.$syncOptions();\n }\n }, {\n name: \"toggleReplace\",\n exec: function (sb) {\n sb.replaceOption.checked = !sb.replaceOption.checked;\n sb.$syncOptions();\n }\n }, {\n name: \"searchInSelection\",\n exec: function (sb) {\n sb.searchOption.checked = !sb.searchRange;\n sb.setSearchRange(sb.searchOption.checked && sb.editor.getSelectionRange());\n sb.$syncOptions();\n }\n }]);\nvar $closeSearchBarKb = new HashHandler([{\n bindKey: \"Esc\",\n name: \"closeSearchBar\",\n exec: function (editor) {\n editor.searchBox.hide();\n }\n }]);\nSearchBox.prototype.$searchBarKb = $searchBarKb;\nSearchBox.prototype.$closeSearchBarKb = $closeSearchBarKb;\nexports.SearchBox = SearchBox;\nexports.Search = function (editor, isReplace) {\n var sb = editor.searchBox || new SearchBox(editor);\n sb.show(editor.session.getTextRange(), isReplace);\n};\n\n}); (function() {\n ace.require([\"ace/ext/searchbox\"], function(m) {\n if (typeof module == \"object\" && typeof exports == \"object\" && module) {\n module.exports = m;\n }\n });\n })();\n ","ace.define(\"ace/mode/css_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/mode/text_highlight_rules\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar lang = require(\"../lib/lang\");\nvar TextHighlightRules = require(\"./text_highlight_rules\").TextHighlightRules;\nvar supportType = exports.supportType = \"align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index\";\nvar supportFunction = exports.supportFunction = \"rgb|rgba|url|attr|counter|counters\";\nvar supportConstant = exports.supportConstant = \"absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|flex-end|flex-start|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom\";\nvar supportConstantColor = exports.supportConstantColor = \"aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|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|green|greenyellow|grey|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|magenta|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|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen\";\nvar supportConstantFonts = exports.supportConstantFonts = \"arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace\";\nvar numRe = exports.numRe = \"\\\\-?(?:(?:[0-9]+(?:\\\\.[0-9]+)?)|(?:\\\\.[0-9]+))\";\nvar pseudoElements = exports.pseudoElements = \"(\\\\:+)\\\\b(after|before|first-letter|first-line|moz-selection|selection)\\\\b\";\nvar pseudoClasses = exports.pseudoClasses = \"(:)\\\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\\\b\";\nvar CssHighlightRules = function () {\n var keywordMapper = this.createKeywordMapper({\n \"support.function\": supportFunction,\n \"support.constant\": supportConstant,\n \"support.type\": supportType,\n \"support.constant.color\": supportConstantColor,\n \"support.constant.fonts\": supportConstantFonts\n }, \"text\", true);\n this.$rules = {\n \"start\": [{\n include: [\"strings\", \"url\", \"comments\"]\n }, {\n token: \"paren.lparen\",\n regex: \"\\\\{\",\n next: \"ruleset\"\n }, {\n token: \"paren.rparen\",\n regex: \"\\\\}\"\n }, {\n token: \"string\",\n regex: \"@(?!viewport)\",\n next: \"media\"\n }, {\n token: \"keyword\",\n regex: \"#[a-z0-9-_]+\"\n }, {\n token: \"keyword\",\n regex: \"%\"\n }, {\n token: \"variable\",\n regex: \"\\\\.[a-z0-9-_]+\"\n }, {\n token: \"string\",\n regex: \":[a-z0-9-_]+\"\n }, {\n token: \"constant.numeric\",\n regex: numRe\n }, {\n token: \"constant\",\n regex: \"[a-z0-9-_]+\"\n }, {\n caseInsensitive: true\n }],\n \"media\": [{\n include: [\"strings\", \"url\", \"comments\"]\n }, {\n token: \"paren.lparen\",\n regex: \"\\\\{\",\n next: \"start\"\n }, {\n token: \"paren.rparen\",\n regex: \"\\\\}\",\n next: \"start\"\n }, {\n token: \"string\",\n regex: \";\",\n next: \"start\"\n }, {\n token: \"keyword\",\n regex: \"(?:media|supports|document|charset|import|namespace|media|supports|document\"\n + \"|page|font|keyframes|viewport|counter-style|font-feature-values\"\n + \"|swash|ornaments|annotation|stylistic|styleset|character-variant)\"\n }],\n \"comments\": [{\n token: \"comment\",\n regex: \"\\\\/\\\\*\",\n push: [{\n token: \"comment\",\n regex: \"\\\\*\\\\/\",\n next: \"pop\"\n }, {\n defaultToken: \"comment\"\n }]\n }],\n \"ruleset\": [{\n regex: \"-(webkit|ms|moz|o)-\",\n token: \"text\"\n }, {\n token: \"punctuation.operator\",\n regex: \"[:;]\"\n }, {\n token: \"paren.rparen\",\n regex: \"\\\\}\",\n next: \"start\"\n }, {\n include: [\"strings\", \"url\", \"comments\"]\n }, {\n token: [\"constant.numeric\", \"keyword\"],\n regex: \"(\" + numRe + \")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)\"\n }, {\n token: \"constant.numeric\",\n regex: numRe\n }, {\n token: \"constant.numeric\",\n regex: \"#[a-f0-9]{6}\"\n }, {\n token: \"constant.numeric\",\n regex: \"#[a-f0-9]{3}\"\n }, {\n token: [\"punctuation\", \"entity.other.attribute-name.pseudo-element.css\"],\n regex: pseudoElements\n }, {\n token: [\"punctuation\", \"entity.other.attribute-name.pseudo-class.css\"],\n regex: pseudoClasses\n }, {\n include: \"url\"\n }, {\n token: keywordMapper,\n regex: \"\\\\-?[a-zA-Z_][a-zA-Z0-9_\\\\-]*\"\n }, {\n caseInsensitive: true\n }],\n url: [{\n token: \"support.function\",\n regex: \"(?:url(:?-prefix)?|domain|regexp)\\\\(\",\n push: [{\n token: \"support.function\",\n regex: \"\\\\)\",\n next: \"pop\"\n }, {\n defaultToken: \"string\"\n }]\n }],\n strings: [{\n token: \"string.start\",\n regex: \"'\",\n push: [{\n token: \"string.end\",\n regex: \"'|$\",\n next: \"pop\"\n }, {\n include: \"escapes\"\n }, {\n token: \"constant.language.escape\",\n regex: /\\\\$/,\n consumeLineEnd: true\n }, {\n defaultToken: \"string\"\n }]\n }, {\n token: \"string.start\",\n regex: '\"',\n push: [{\n token: \"string.end\",\n regex: '\"|$',\n next: \"pop\"\n }, {\n include: \"escapes\"\n }, {\n token: \"constant.language.escape\",\n regex: /\\\\$/,\n consumeLineEnd: true\n }, {\n defaultToken: \"string\"\n }]\n }],\n escapes: [{\n token: \"constant.language.escape\",\n regex: /\\\\([a-fA-F\\d]{1,6}|[^a-fA-F\\d])/\n }]\n };\n this.normalizeRules();\n};\noop.inherits(CssHighlightRules, TextHighlightRules);\nexports.CssHighlightRules = CssHighlightRules;\n\n});\n\nace.define(\"ace/mode/matching_brace_outdent\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar Range = require(\"../range\").Range;\nvar MatchingBraceOutdent = function () { };\n(function () {\n this.checkOutdent = function (line, input) {\n if (!/^\\s+$/.test(line))\n return false;\n return /^\\s*\\}/.test(input);\n };\n this.autoOutdent = function (doc, row) {\n var line = doc.getLine(row);\n var match = line.match(/^(\\s*\\})/);\n if (!match)\n return 0;\n var column = match[1].length;\n var openBracePos = doc.findMatchingBracket({ row: row, column: column });\n if (!openBracePos || openBracePos.row == row)\n return 0;\n var indent = this.$getIndent(doc.getLine(openBracePos.row));\n doc.replace(new Range(row, 0, row, column - 1), indent);\n };\n this.$getIndent = function (line) {\n return line.match(/^\\s*/)[0];\n };\n}).call(MatchingBraceOutdent.prototype);\nexports.MatchingBraceOutdent = MatchingBraceOutdent;\n\n});\n\nace.define(\"ace/mode/css_completions\",[\"require\",\"exports\",\"module\"], function(require, exports, module){\"use strict\";\nvar propertyMap = {\n \"background\": { \"#$0\": 1 },\n \"background-color\": { \"#$0\": 1, \"transparent\": 1, \"fixed\": 1 },\n \"background-image\": { \"url('/$0')\": 1 },\n \"background-repeat\": { \"repeat\": 1, \"repeat-x\": 1, \"repeat-y\": 1, \"no-repeat\": 1, \"inherit\": 1 },\n \"background-position\": { \"bottom\": 2, \"center\": 2, \"left\": 2, \"right\": 2, \"top\": 2, \"inherit\": 2 },\n \"background-attachment\": { \"scroll\": 1, \"fixed\": 1 },\n \"background-size\": { \"cover\": 1, \"contain\": 1 },\n \"background-clip\": { \"border-box\": 1, \"padding-box\": 1, \"content-box\": 1 },\n \"background-origin\": { \"border-box\": 1, \"padding-box\": 1, \"content-box\": 1 },\n \"border\": { \"solid $0\": 1, \"dashed $0\": 1, \"dotted $0\": 1, \"#$0\": 1 },\n \"border-color\": { \"#$0\": 1 },\n \"border-style\": { \"solid\": 2, \"dashed\": 2, \"dotted\": 2, \"double\": 2, \"groove\": 2, \"hidden\": 2, \"inherit\": 2, \"inset\": 2, \"none\": 2, \"outset\": 2, \"ridged\": 2 },\n \"border-collapse\": { \"collapse\": 1, \"separate\": 1 },\n \"bottom\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"clear\": { \"left\": 1, \"right\": 1, \"both\": 1, \"none\": 1 },\n \"color\": { \"#$0\": 1, \"rgb(#$00,0,0)\": 1 },\n \"cursor\": { \"default\": 1, \"pointer\": 1, \"move\": 1, \"text\": 1, \"wait\": 1, \"help\": 1, \"progress\": 1, \"n-resize\": 1, \"ne-resize\": 1, \"e-resize\": 1, \"se-resize\": 1, \"s-resize\": 1, \"sw-resize\": 1, \"w-resize\": 1, \"nw-resize\": 1 },\n \"display\": { \"none\": 1, \"block\": 1, \"inline\": 1, \"inline-block\": 1, \"table-cell\": 1 },\n \"empty-cells\": { \"show\": 1, \"hide\": 1 },\n \"float\": { \"left\": 1, \"right\": 1, \"none\": 1 },\n \"font-family\": { \"Arial\": 2, \"Comic Sans MS\": 2, \"Consolas\": 2, \"Courier New\": 2, \"Courier\": 2, \"Georgia\": 2, \"Monospace\": 2, \"Sans-Serif\": 2, \"Segoe UI\": 2, \"Tahoma\": 2, \"Times New Roman\": 2, \"Trebuchet MS\": 2, \"Verdana\": 1 },\n \"font-size\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"font-weight\": { \"bold\": 1, \"normal\": 1 },\n \"font-style\": { \"italic\": 1, \"normal\": 1 },\n \"font-variant\": { \"normal\": 1, \"small-caps\": 1 },\n \"height\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"left\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"letter-spacing\": { \"normal\": 1 },\n \"line-height\": { \"normal\": 1 },\n \"list-style-type\": { \"none\": 1, \"disc\": 1, \"circle\": 1, \"square\": 1, \"decimal\": 1, \"decimal-leading-zero\": 1, \"lower-roman\": 1, \"upper-roman\": 1, \"lower-greek\": 1, \"lower-latin\": 1, \"upper-latin\": 1, \"georgian\": 1, \"lower-alpha\": 1, \"upper-alpha\": 1 },\n \"margin\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"margin-right\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"margin-left\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"margin-top\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"margin-bottom\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"max-height\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"max-width\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"min-height\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"min-width\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"overflow\": { \"hidden\": 1, \"visible\": 1, \"auto\": 1, \"scroll\": 1 },\n \"overflow-x\": { \"hidden\": 1, \"visible\": 1, \"auto\": 1, \"scroll\": 1 },\n \"overflow-y\": { \"hidden\": 1, \"visible\": 1, \"auto\": 1, \"scroll\": 1 },\n \"padding\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"padding-top\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"padding-right\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"padding-bottom\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"padding-left\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"page-break-after\": { \"auto\": 1, \"always\": 1, \"avoid\": 1, \"left\": 1, \"right\": 1 },\n \"page-break-before\": { \"auto\": 1, \"always\": 1, \"avoid\": 1, \"left\": 1, \"right\": 1 },\n \"position\": { \"absolute\": 1, \"relative\": 1, \"fixed\": 1, \"static\": 1 },\n \"right\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"table-layout\": { \"fixed\": 1, \"auto\": 1 },\n \"text-decoration\": { \"none\": 1, \"underline\": 1, \"line-through\": 1, \"blink\": 1 },\n \"text-align\": { \"left\": 1, \"right\": 1, \"center\": 1, \"justify\": 1 },\n \"text-transform\": { \"capitalize\": 1, \"uppercase\": 1, \"lowercase\": 1, \"none\": 1 },\n \"top\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"vertical-align\": { \"top\": 1, \"bottom\": 1 },\n \"visibility\": { \"hidden\": 1, \"visible\": 1 },\n \"white-space\": { \"nowrap\": 1, \"normal\": 1, \"pre\": 1, \"pre-line\": 1, \"pre-wrap\": 1 },\n \"width\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"word-spacing\": { \"normal\": 1 },\n \"filter\": { \"alpha(opacity=$0100)\": 1 },\n \"text-shadow\": { \"$02px 2px 2px #777\": 1 },\n \"text-overflow\": { \"ellipsis-word\": 1, \"clip\": 1, \"ellipsis\": 1 },\n \"-moz-border-radius\": 1,\n \"-moz-border-radius-topright\": 1,\n \"-moz-border-radius-bottomright\": 1,\n \"-moz-border-radius-topleft\": 1,\n \"-moz-border-radius-bottomleft\": 1,\n \"-webkit-border-radius\": 1,\n \"-webkit-border-top-right-radius\": 1,\n \"-webkit-border-top-left-radius\": 1,\n \"-webkit-border-bottom-right-radius\": 1,\n \"-webkit-border-bottom-left-radius\": 1,\n \"-moz-box-shadow\": 1,\n \"-webkit-box-shadow\": 1,\n \"transform\": { \"rotate($00deg)\": 1, \"skew($00deg)\": 1 },\n \"-moz-transform\": { \"rotate($00deg)\": 1, \"skew($00deg)\": 1 },\n \"-webkit-transform\": { \"rotate($00deg)\": 1, \"skew($00deg)\": 1 }\n};\nvar CssCompletions = function () {\n};\n(function () {\n this.completionsDefined = false;\n this.defineCompletions = function () {\n if (document) {\n var style = document.createElement('c').style;\n for (var i in style) {\n if (typeof style[i] !== 'string')\n continue;\n var name = i.replace(/[A-Z]/g, function (x) {\n return '-' + x.toLowerCase();\n });\n if (!propertyMap.hasOwnProperty(name))\n propertyMap[name] = 1;\n }\n }\n this.completionsDefined = true;\n };\n this.getCompletions = function (state, session, pos, prefix) {\n if (!this.completionsDefined) {\n this.defineCompletions();\n }\n if (state === 'ruleset' || session.$mode.$id == \"ace/mode/scss\") {\n var line = session.getLine(pos.row).substr(0, pos.column);\n var inParens = /\\([^)]*$/.test(line);\n if (inParens) {\n line = line.substr(line.lastIndexOf('(') + 1);\n }\n if (/:[^;]+$/.test(line)) {\n /([\\w\\-]+):[^:]*$/.test(line);\n return this.getPropertyValueCompletions(state, session, pos, prefix);\n }\n else {\n return this.getPropertyCompletions(state, session, pos, prefix, inParens);\n }\n }\n return [];\n };\n this.getPropertyCompletions = function (state, session, pos, prefix, skipSemicolon) {\n skipSemicolon = skipSemicolon || false;\n var properties = Object.keys(propertyMap);\n return properties.map(function (property) {\n return {\n caption: property,\n snippet: property + ': $0' + (skipSemicolon ? '' : ';'),\n meta: \"property\",\n score: 1000000\n };\n });\n };\n this.getPropertyValueCompletions = function (state, session, pos, prefix) {\n var line = session.getLine(pos.row).substr(0, pos.column);\n var property = (/([\\w\\-]+):[^:]*$/.exec(line) || {})[1];\n if (!property)\n return [];\n var values = [];\n if (property in propertyMap && typeof propertyMap[property] === \"object\") {\n values = Object.keys(propertyMap[property]);\n }\n return values.map(function (value) {\n return {\n caption: value,\n snippet: value,\n meta: \"property value\",\n score: 1000000\n };\n });\n };\n}).call(CssCompletions.prototype);\nexports.CssCompletions = CssCompletions;\n\n});\n\nace.define(\"ace/mode/behaviour/css\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/behaviour\",\"ace/mode/behaviour/cstyle\",\"ace/token_iterator\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../../lib/oop\");\nvar Behaviour = require(\"../behaviour\").Behaviour;\nvar CstyleBehaviour = require(\"./cstyle\").CstyleBehaviour;\nvar TokenIterator = require(\"../../token_iterator\").TokenIterator;\nvar CssBehaviour = function () {\n this.inherit(CstyleBehaviour);\n this.add(\"colon\", \"insertion\", function (state, action, editor, session, text) {\n if (text === ':' && editor.selection.isEmpty()) {\n var cursor = editor.getCursorPosition();\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n var token = iterator.getCurrentToken();\n if (token && token.value.match(/\\s+/)) {\n token = iterator.stepBackward();\n }\n if (token && token.type === 'support.type') {\n var line = session.doc.getLine(cursor.row);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n if (rightChar === ':') {\n return {\n text: '',\n selection: [1, 1]\n };\n }\n if (/^(\\s+[^;]|\\s*$)/.test(line.substring(cursor.column))) {\n return {\n text: ':;',\n selection: [1, 1]\n };\n }\n }\n }\n });\n this.add(\"colon\", \"deletion\", function (state, action, editor, session, range) {\n var selected = session.doc.getTextRange(range);\n if (!range.isMultiLine() && selected === ':') {\n var cursor = editor.getCursorPosition();\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n var token = iterator.getCurrentToken();\n if (token && token.value.match(/\\s+/)) {\n token = iterator.stepBackward();\n }\n if (token && token.type === 'support.type') {\n var line = session.doc.getLine(range.start.row);\n var rightChar = line.substring(range.end.column, range.end.column + 1);\n if (rightChar === ';') {\n range.end.column++;\n return range;\n }\n }\n }\n });\n this.add(\"semicolon\", \"insertion\", function (state, action, editor, session, text) {\n if (text === ';' && editor.selection.isEmpty()) {\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n if (rightChar === ';') {\n return {\n text: '',\n selection: [1, 1]\n };\n }\n }\n });\n this.add(\"!important\", \"insertion\", function (state, action, editor, session, text) {\n if (text === '!' && editor.selection.isEmpty()) {\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n if (/^\\s*(;|}|$)/.test(line.substring(cursor.column))) {\n return {\n text: '!important',\n selection: [10, 10]\n };\n }\n }\n });\n};\noop.inherits(CssBehaviour, CstyleBehaviour);\nexports.CssBehaviour = CssBehaviour;\n\n});\n\nace.define(\"ace/mode/folding/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/range\",\"ace/mode/folding/fold_mode\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../../lib/oop\");\nvar Range = require(\"../../range\").Range;\nvar BaseFoldMode = require(\"./fold_mode\").FoldMode;\nvar FoldMode = exports.FoldMode = function (commentRegex) {\n if (commentRegex) {\n this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.start));\n this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.end));\n }\n};\noop.inherits(FoldMode, BaseFoldMode);\n(function () {\n this.foldingStartMarker = /([\\{\\[\\(])[^\\}\\]\\)]*$|^\\s*(\\/\\*)/;\n this.foldingStopMarker = /^[^\\[\\{\\(]*([\\}\\]\\)])|^[\\s\\*]*(\\*\\/)/;\n this.singleLineBlockCommentRe = /^\\s*(\\/\\*).*\\*\\/\\s*$/;\n this.tripleStarBlockCommentRe = /^\\s*(\\/\\*\\*\\*).*\\*\\/\\s*$/;\n this.startRegionRe = /^\\s*(\\/\\*|\\/\\/)#?region\\b/;\n this._getFoldWidgetBase = this.getFoldWidget;\n this.getFoldWidget = function (session, foldStyle, row) {\n var line = session.getLine(row);\n if (this.singleLineBlockCommentRe.test(line)) {\n if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line))\n return \"\";\n }\n var fw = this._getFoldWidgetBase(session, foldStyle, row);\n if (!fw && this.startRegionRe.test(line))\n return \"start\"; // lineCommentRegionStart\n return fw;\n };\n this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) {\n var line = session.getLine(row);\n if (this.startRegionRe.test(line))\n return this.getCommentRegionBlock(session, line, row);\n var match = line.match(this.foldingStartMarker);\n if (match) {\n var i = match.index;\n if (match[1])\n return this.openingBracketBlock(session, match[1], row, i);\n var range = session.getCommentFoldRange(row, i + match[0].length, 1);\n if (range && !range.isMultiLine()) {\n if (forceMultiline) {\n range = this.getSectionRange(session, row);\n }\n else if (foldStyle != \"all\")\n range = null;\n }\n return range;\n }\n if (foldStyle === \"markbegin\")\n return;\n var match = line.match(this.foldingStopMarker);\n if (match) {\n var i = match.index + match[0].length;\n if (match[1])\n return this.closingBracketBlock(session, match[1], row, i);\n return session.getCommentFoldRange(row, i, -1);\n }\n };\n this.getSectionRange = function (session, row) {\n var line = session.getLine(row);\n var startIndent = line.search(/\\S/);\n var startRow = row;\n var startColumn = line.length;\n row = row + 1;\n var endRow = row;\n var maxRow = session.getLength();\n while (++row < maxRow) {\n line = session.getLine(row);\n var indent = line.search(/\\S/);\n if (indent === -1)\n continue;\n if (startIndent > indent)\n break;\n var subRange = this.getFoldWidgetRange(session, \"all\", row);\n if (subRange) {\n if (subRange.start.row <= startRow) {\n break;\n }\n else if (subRange.isMultiLine()) {\n row = subRange.end.row;\n }\n else if (startIndent == indent) {\n break;\n }\n }\n endRow = row;\n }\n return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);\n };\n this.getCommentRegionBlock = function (session, line, row) {\n var startColumn = line.search(/\\s*$/);\n var maxRow = session.getLength();\n var startRow = row;\n var re = /^\\s*(?:\\/\\*|\\/\\/|--)#?(end)?region\\b/;\n var depth = 1;\n while (++row < maxRow) {\n line = session.getLine(row);\n var m = re.exec(line);\n if (!m)\n continue;\n if (m[1])\n depth--;\n else\n depth++;\n if (!depth)\n break;\n }\n var endRow = row;\n if (endRow > startRow) {\n return new Range(startRow, startColumn, endRow, line.length);\n }\n };\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/css\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/css_highlight_rules\",\"ace/mode/matching_brace_outdent\",\"ace/worker/worker_client\",\"ace/mode/css_completions\",\"ace/mode/behaviour/css\",\"ace/mode/folding/cstyle\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar TextMode = require(\"./text\").Mode;\nvar CssHighlightRules = require(\"./css_highlight_rules\").CssHighlightRules;\nvar MatchingBraceOutdent = require(\"./matching_brace_outdent\").MatchingBraceOutdent;\nvar WorkerClient = require(\"../worker/worker_client\").WorkerClient;\nvar CssCompletions = require(\"./css_completions\").CssCompletions;\nvar CssBehaviour = require(\"./behaviour/css\").CssBehaviour;\nvar CStyleFoldMode = require(\"./folding/cstyle\").FoldMode;\nvar Mode = function () {\n this.HighlightRules = CssHighlightRules;\n this.$outdent = new MatchingBraceOutdent();\n this.$behaviour = new CssBehaviour();\n this.$completer = new CssCompletions();\n this.foldingRules = new CStyleFoldMode();\n};\noop.inherits(Mode, TextMode);\n(function () {\n this.foldingRules = \"cStyle\";\n this.blockComment = { start: \"/*\", end: \"*/\" };\n this.getNextLineIndent = function (state, line, tab) {\n var indent = this.$getIndent(line);\n var tokens = this.getTokenizer().getLineTokens(line, state).tokens;\n if (tokens.length && tokens[tokens.length - 1].type == \"comment\") {\n return indent;\n }\n var match = line.match(/^.*\\{\\s*$/);\n if (match) {\n indent += tab;\n }\n return indent;\n };\n this.checkOutdent = function (state, line, input) {\n return this.$outdent.checkOutdent(line, input);\n };\n this.autoOutdent = function (state, doc, row) {\n this.$outdent.autoOutdent(doc, row);\n };\n this.getCompletions = function (state, session, pos, prefix) {\n return this.$completer.getCompletions(state, session, pos, prefix);\n };\n this.createWorker = function (session) {\n var worker = new WorkerClient([\"ace\"], \"ace/mode/css_worker\", \"Worker\");\n worker.attachToDocument(session.getDocument());\n worker.on(\"annotate\", function (e) {\n session.setAnnotations(e.data);\n });\n worker.on(\"terminate\", function () {\n session.clearAnnotations();\n });\n return worker;\n };\n this.$id = \"ace/mode/css\";\n this.snippetFileId = \"ace/snippets/css\";\n}).call(Mode.prototype);\nexports.Mode = Mode;\n\n}); (function() {\n ace.require([\"ace/mode/css\"], function(m) {\n if (typeof module == \"object\" && typeof exports == \"object\" && module) {\n module.exports = m;\n }\n });\n })();\n ","ace.define(\"ace/mode/doc_comment_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar TextHighlightRules = require(\"./text_highlight_rules\").TextHighlightRules;\nvar DocCommentHighlightRules = function () {\n this.$rules = {\n \"start\": [\n {\n token: \"comment.doc.tag\",\n regex: \"@\\\\w+(?=\\\\s|$)\"\n }, DocCommentHighlightRules.getTagRule(), {\n defaultToken: \"comment.doc\",\n caseInsensitive: true\n }\n ]\n };\n};\noop.inherits(DocCommentHighlightRules, TextHighlightRules);\nDocCommentHighlightRules.getTagRule = function (start) {\n return {\n token: \"comment.doc.tag.storage.type\",\n regex: \"\\\\b(?:TODO|FIXME|XXX|HACK)\\\\b\"\n };\n};\nDocCommentHighlightRules.getStartRule = function (start) {\n return {\n token: \"comment.doc\",\n regex: \"\\\\/\\\\*(?=\\\\*)\",\n next: start\n };\n};\nDocCommentHighlightRules.getEndRule = function (start) {\n return {\n token: \"comment.doc\",\n regex: \"\\\\*\\\\/\",\n next: start\n };\n};\nexports.DocCommentHighlightRules = DocCommentHighlightRules;\n\n});\n\nace.define(\"ace/mode/golang_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/doc_comment_highlight_rules\",\"ace/mode/text_highlight_rules\"], function(require, exports, module){var oop = require(\"../lib/oop\");\nvar DocCommentHighlightRules = require(\"./doc_comment_highlight_rules\").DocCommentHighlightRules;\nvar TextHighlightRules = require(\"./text_highlight_rules\").TextHighlightRules;\nvar GolangHighlightRules = function () {\n var keywords = (\"else|break|case|return|goto|if|const|select|\" +\n \"continue|struct|default|switch|for|range|\" +\n \"func|import|package|chan|defer|fallthrough|go|interface|map|range|\" +\n \"select|type|var\");\n var builtinTypes = (\"string|uint8|uint16|uint32|uint64|int8|int16|int32|int64|float32|\" +\n \"float64|complex64|complex128|byte|rune|uint|int|uintptr|bool|error\");\n var builtinFunctions = (\"new|close|cap|copy|panic|panicln|print|println|len|make|delete|real|recover|imag|append\");\n var builtinConstants = (\"nil|true|false|iota\");\n var keywordMapper = this.createKeywordMapper({\n \"keyword\": keywords,\n \"constant.language\": builtinConstants,\n \"support.function\": builtinFunctions,\n \"support.type\": builtinTypes\n }, \"\");\n var stringEscapeRe = \"\\\\\\\\(?:[0-7]{3}|x\\\\h{2}|u{4}|U\\\\h{6}|[abfnrtv'\\\"\\\\\\\\])\".replace(/\\\\h/g, \"[a-fA-F\\\\d]\");\n this.$rules = {\n \"start\": [\n {\n token: \"comment\",\n regex: \"\\\\/\\\\/.*$\"\n },\n DocCommentHighlightRules.getStartRule(\"doc-start\"),\n {\n token: \"comment.start\",\n regex: \"\\\\/\\\\*\",\n next: \"comment\"\n }, {\n token: \"string\",\n regex: /\"(?:[^\"\\\\]|\\\\.)*?\"/\n }, {\n token: \"string\",\n regex: '`',\n next: \"bqstring\"\n }, {\n token: \"constant.numeric\",\n regex: \"'(?:[^\\\\'\\uD800-\\uDBFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|\" + stringEscapeRe.replace('\"', '') + \")'\"\n }, {\n token: \"constant.numeric\",\n regex: \"0[xX][0-9a-fA-F]+\\\\b\"\n }, {\n token: \"constant.numeric\",\n regex: \"[+-]?\\\\d+(?:(?:\\\\.\\\\d*)?(?:[eE][+-]?\\\\d+)?)?\\\\b\"\n }, {\n token: [\"keyword\", \"text\", \"entity.name.function\"],\n regex: \"(func)(\\\\s+)([a-zA-Z_$][a-zA-Z0-9_$]*)\\\\b\"\n }, {\n token: function (val) {\n if (val[val.length - 1] == \"(\") {\n return [{\n type: keywordMapper(val.slice(0, -1)) || \"support.function\",\n value: val.slice(0, -1)\n }, {\n type: \"paren.lparen\",\n value: val.slice(-1)\n }];\n }\n return keywordMapper(val) || \"identifier\";\n },\n regex: \"[a-zA-Z_$][a-zA-Z0-9_$]*\\\\b\\\\(?\"\n }, {\n token: \"keyword.operator\",\n regex: \"!|\\\\$|%|&|\\\\*|\\\\-\\\\-|\\\\-|\\\\+\\\\+|\\\\+|~|==|=|!=|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\\\|\\\\||\\\\?\\\\:|\\\\*=|%=|\\\\+=|\\\\-=|&=|\\\\^=\"\n }, {\n token: \"punctuation.operator\",\n regex: \"\\\\?|\\\\:|\\\\,|\\\\;|\\\\.\"\n }, {\n token: \"paren.lparen\",\n regex: \"[[({]\"\n }, {\n token: \"paren.rparen\",\n regex: \"[\\\\])}]\"\n }, {\n token: \"text\",\n regex: \"\\\\s+\"\n }\n ],\n \"comment\": [\n {\n token: \"comment.end\",\n regex: \"\\\\*\\\\/\",\n next: \"start\"\n }, {\n defaultToken: \"comment\"\n }\n ],\n \"bqstring\": [\n {\n token: \"string\",\n regex: '`',\n next: \"start\"\n }, {\n defaultToken: \"string\"\n }\n ]\n };\n this.embedRules(DocCommentHighlightRules, \"doc-\", [DocCommentHighlightRules.getEndRule(\"start\")]);\n};\noop.inherits(GolangHighlightRules, TextHighlightRules);\nexports.GolangHighlightRules = GolangHighlightRules;\n\n});\n\nace.define(\"ace/mode/matching_brace_outdent\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar Range = require(\"../range\").Range;\nvar MatchingBraceOutdent = function () { };\n(function () {\n this.checkOutdent = function (line, input) {\n if (!/^\\s+$/.test(line))\n return false;\n return /^\\s*\\}/.test(input);\n };\n this.autoOutdent = function (doc, row) {\n var line = doc.getLine(row);\n var match = line.match(/^(\\s*\\})/);\n if (!match)\n return 0;\n var column = match[1].length;\n var openBracePos = doc.findMatchingBracket({ row: row, column: column });\n if (!openBracePos || openBracePos.row == row)\n return 0;\n var indent = this.$getIndent(doc.getLine(openBracePos.row));\n doc.replace(new Range(row, 0, row, column - 1), indent);\n };\n this.$getIndent = function (line) {\n return line.match(/^\\s*/)[0];\n };\n}).call(MatchingBraceOutdent.prototype);\nexports.MatchingBraceOutdent = MatchingBraceOutdent;\n\n});\n\nace.define(\"ace/mode/folding/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/range\",\"ace/mode/folding/fold_mode\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../../lib/oop\");\nvar Range = require(\"../../range\").Range;\nvar BaseFoldMode = require(\"./fold_mode\").FoldMode;\nvar FoldMode = exports.FoldMode = function (commentRegex) {\n if (commentRegex) {\n this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.start));\n this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.end));\n }\n};\noop.inherits(FoldMode, BaseFoldMode);\n(function () {\n this.foldingStartMarker = /([\\{\\[\\(])[^\\}\\]\\)]*$|^\\s*(\\/\\*)/;\n this.foldingStopMarker = /^[^\\[\\{\\(]*([\\}\\]\\)])|^[\\s\\*]*(\\*\\/)/;\n this.singleLineBlockCommentRe = /^\\s*(\\/\\*).*\\*\\/\\s*$/;\n this.tripleStarBlockCommentRe = /^\\s*(\\/\\*\\*\\*).*\\*\\/\\s*$/;\n this.startRegionRe = /^\\s*(\\/\\*|\\/\\/)#?region\\b/;\n this._getFoldWidgetBase = this.getFoldWidget;\n this.getFoldWidget = function (session, foldStyle, row) {\n var line = session.getLine(row);\n if (this.singleLineBlockCommentRe.test(line)) {\n if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line))\n return \"\";\n }\n var fw = this._getFoldWidgetBase(session, foldStyle, row);\n if (!fw && this.startRegionRe.test(line))\n return \"start\"; // lineCommentRegionStart\n return fw;\n };\n this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) {\n var line = session.getLine(row);\n if (this.startRegionRe.test(line))\n return this.getCommentRegionBlock(session, line, row);\n var match = line.match(this.foldingStartMarker);\n if (match) {\n var i = match.index;\n if (match[1])\n return this.openingBracketBlock(session, match[1], row, i);\n var range = session.getCommentFoldRange(row, i + match[0].length, 1);\n if (range && !range.isMultiLine()) {\n if (forceMultiline) {\n range = this.getSectionRange(session, row);\n }\n else if (foldStyle != \"all\")\n range = null;\n }\n return range;\n }\n if (foldStyle === \"markbegin\")\n return;\n var match = line.match(this.foldingStopMarker);\n if (match) {\n var i = match.index + match[0].length;\n if (match[1])\n return this.closingBracketBlock(session, match[1], row, i);\n return session.getCommentFoldRange(row, i, -1);\n }\n };\n this.getSectionRange = function (session, row) {\n var line = session.getLine(row);\n var startIndent = line.search(/\\S/);\n var startRow = row;\n var startColumn = line.length;\n row = row + 1;\n var endRow = row;\n var maxRow = session.getLength();\n while (++row < maxRow) {\n line = session.getLine(row);\n var indent = line.search(/\\S/);\n if (indent === -1)\n continue;\n if (startIndent > indent)\n break;\n var subRange = this.getFoldWidgetRange(session, \"all\", row);\n if (subRange) {\n if (subRange.start.row <= startRow) {\n break;\n }\n else if (subRange.isMultiLine()) {\n row = subRange.end.row;\n }\n else if (startIndent == indent) {\n break;\n }\n }\n endRow = row;\n }\n return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);\n };\n this.getCommentRegionBlock = function (session, line, row) {\n var startColumn = line.search(/\\s*$/);\n var maxRow = session.getLength();\n var startRow = row;\n var re = /^\\s*(?:\\/\\*|\\/\\/|--)#?(end)?region\\b/;\n var depth = 1;\n while (++row < maxRow) {\n line = session.getLine(row);\n var m = re.exec(line);\n if (!m)\n continue;\n if (m[1])\n depth--;\n else\n depth++;\n if (!depth)\n break;\n }\n var endRow = row;\n if (endRow > startRow) {\n return new Range(startRow, startColumn, endRow, line.length);\n }\n };\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/golang\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/golang_highlight_rules\",\"ace/mode/matching_brace_outdent\",\"ace/mode/folding/cstyle\"], function(require, exports, module){var oop = require(\"../lib/oop\");\nvar TextMode = require(\"./text\").Mode;\nvar GolangHighlightRules = require(\"./golang_highlight_rules\").GolangHighlightRules;\nvar MatchingBraceOutdent = require(\"./matching_brace_outdent\").MatchingBraceOutdent;\nvar CStyleFoldMode = require(\"./folding/cstyle\").FoldMode;\nvar Mode = function () {\n this.HighlightRules = GolangHighlightRules;\n this.$outdent = new MatchingBraceOutdent();\n this.foldingRules = new CStyleFoldMode();\n this.$behaviour = this.$defaultBehaviour;\n};\noop.inherits(Mode, TextMode);\n(function () {\n this.lineCommentStart = \"//\";\n this.blockComment = { start: \"/*\", end: \"*/\" };\n this.getNextLineIndent = function (state, line, tab) {\n var indent = this.$getIndent(line);\n var tokenizedLine = this.getTokenizer().getLineTokens(line, state);\n var tokens = tokenizedLine.tokens;\n var endState = tokenizedLine.state;\n if (tokens.length && tokens[tokens.length - 1].type == \"comment\") {\n return indent;\n }\n if (state == \"start\") {\n var match = line.match(/^.*[\\{\\(\\[]\\s*$/);\n if (match) {\n indent += tab;\n }\n }\n return indent;\n }; //end getNextLineIndent\n this.checkOutdent = function (state, line, input) {\n return this.$outdent.checkOutdent(line, input);\n };\n this.autoOutdent = function (state, doc, row) {\n this.$outdent.autoOutdent(doc, row);\n };\n this.$id = \"ace/mode/golang\";\n}).call(Mode.prototype);\nexports.Mode = Mode;\n\n}); (function() {\n ace.require([\"ace/mode/golang\"], function(m) {\n if (typeof module == \"object\" && typeof exports == \"object\" && module) {\n module.exports = m;\n }\n });\n })();\n ","ace.define(\"ace/mode/jsdoc_comment_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar TextHighlightRules = require(\"./text_highlight_rules\").TextHighlightRules;\nvar JsDocCommentHighlightRules = function () {\n this.$rules = {\n \"start\": [\n {\n token: [\"comment.doc.tag\", \"comment.doc.text\", \"lparen.doc\"],\n regex: \"(@(?:param|member|typedef|property|namespace|var|const|callback))(\\\\s*)({)\",\n push: [\n {\n token: \"lparen.doc\",\n regex: \"{\",\n push: [\n {\n include: \"doc-syntax\"\n }, {\n token: \"rparen.doc\",\n regex: \"}|(?=$)\",\n next: \"pop\"\n }\n ]\n }, {\n token: [\"rparen.doc\", \"text.doc\", \"variable.parameter.doc\", \"lparen.doc\", \"variable.parameter.doc\", \"rparen.doc\"],\n regex: /(})(\\s*)(?:([\\w=:\\/\\.]+)|(?:(\\[)([\\w=:\\/\\.]+)(\\])))/,\n next: \"pop\"\n }, {\n token: \"rparen.doc\",\n regex: \"}|(?=$)\",\n next: \"pop\"\n }, {\n include: \"doc-syntax\"\n }, {\n defaultToken: \"text.doc\"\n }\n ]\n }, {\n token: [\"comment.doc.tag\", \"text.doc\", \"lparen.doc\"],\n regex: \"(@(?:returns?|yields|type|this|suppress|public|protected|private|package|modifies|\"\n + \"implements|external|exception|throws|enum|define|extends))(\\\\s*)({)\",\n push: [\n {\n token: \"lparen.doc\",\n regex: \"{\",\n push: [\n {\n include: \"doc-syntax\"\n }, {\n token: \"rparen.doc\",\n regex: \"}|(?=$)\",\n next: \"pop\"\n }\n ]\n }, {\n token: \"rparen.doc\",\n regex: \"}|(?=$)\",\n next: \"pop\"\n }, {\n include: \"doc-syntax\"\n }, {\n defaultToken: \"text.doc\"\n }\n ]\n }, {\n token: [\"comment.doc.tag\", \"text.doc\", \"variable.parameter.doc\"],\n regex: \"(@(?:alias|memberof|instance|module|name|lends|namespace|external|this|template|\"\n + \"requires|param|implements|function|extends|typedef|mixes|constructor|var|\"\n + \"memberof\\\\!|event|listens|exports|class|constructs|interface|emits|fires|\"\n + \"throws|const|callback|borrows|augments))(\\\\s+)(\\\\w[\\\\w#\\.:\\/~\\\"\\\\-]*)?\"\n }, {\n token: [\"comment.doc.tag\", \"text.doc\", \"variable.parameter.doc\"],\n regex: \"(@method)(\\\\s+)(\\\\w[\\\\w\\.\\\\(\\\\)]*)\"\n }, {\n token: \"comment.doc.tag\",\n regex: \"@access\\\\s+(?:private|public|protected)\"\n }, {\n token: \"comment.doc.tag\",\n regex: \"@kind\\\\s+(?:class|constant|event|external|file|function|member|mixin|module|namespace|typedef)\"\n }, {\n token: \"comment.doc.tag\",\n regex: \"@\\\\w+(?=\\\\s|$)\"\n },\n JsDocCommentHighlightRules.getTagRule(),\n {\n defaultToken: \"comment.doc\",\n caseInsensitive: true\n }\n ],\n \"doc-syntax\": [{\n token: \"operator.doc\",\n regex: /[|:]/\n }, {\n token: \"paren.doc\",\n regex: /[\\[\\]]/\n }]\n };\n this.normalizeRules();\n};\noop.inherits(JsDocCommentHighlightRules, TextHighlightRules);\nJsDocCommentHighlightRules.getTagRule = function (start) {\n return {\n token: \"comment.doc.tag.storage.type\",\n regex: \"\\\\b(?:TODO|FIXME|XXX|HACK)\\\\b\"\n };\n};\nJsDocCommentHighlightRules.getStartRule = function (start) {\n return {\n token: \"comment.doc\",\n regex: \"\\\\/\\\\*(?=\\\\*)\",\n next: start\n };\n};\nJsDocCommentHighlightRules.getEndRule = function (start) {\n return {\n token: \"comment.doc\",\n regex: \"\\\\*\\\\/\",\n next: start\n };\n};\nexports.JsDocCommentHighlightRules = JsDocCommentHighlightRules;\n\n});\n\nace.define(\"ace/mode/javascript_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/jsdoc_comment_highlight_rules\",\"ace/mode/text_highlight_rules\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar DocCommentHighlightRules = require(\"./jsdoc_comment_highlight_rules\").JsDocCommentHighlightRules;\nvar TextHighlightRules = require(\"./text_highlight_rules\").TextHighlightRules;\nvar identifierRe = \"[a-zA-Z\\\\$_\\u00a1-\\uffff][a-zA-Z\\\\d\\\\$_\\u00a1-\\uffff]*\";\nvar JavaScriptHighlightRules = function (options) {\n var keywordMapper = this.createKeywordMapper({\n \"variable.language\": \"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Symbol|\" + // Constructors\n \"Namespace|QName|XML|XMLList|\" + // E4X\n \"ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|\" +\n \"Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|\" +\n \"Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|\" + // Errors\n \"SyntaxError|TypeError|URIError|\" +\n \"decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|\" + // Non-constructor functions\n \"isNaN|parseFloat|parseInt|\" +\n \"JSON|Math|\" + // Other\n \"this|arguments|prototype|window|document\",\n \"keyword\": \"const|yield|import|get|set|async|await|\" +\n \"break|case|catch|continue|default|delete|do|else|finally|for|function|\" +\n \"if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|\" +\n \"__parent__|__count__|escape|unescape|with|__proto__|\" +\n \"class|enum|extends|super|export|implements|private|public|interface|package|protected|static|constructor\",\n \"storage.type\": \"const|let|var|function\",\n \"constant.language\": \"null|Infinity|NaN|undefined\",\n \"support.function\": \"alert\",\n \"constant.language.boolean\": \"true|false\"\n }, \"identifier\");\n var kwBeforeRe = \"case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void\";\n var escapedRe = \"\\\\\\\\(?:x[0-9a-fA-F]{2}|\" + // hex\n \"u[0-9a-fA-F]{4}|\" + // unicode\n \"u{[0-9a-fA-F]{1,6}}|\" + // es6 unicode\n \"[0-2][0-7]{0,2}|\" + // oct\n \"3[0-7][0-7]?|\" + // oct\n \"[4-7][0-7]?|\" + //oct\n \".)\";\n this.$rules = {\n \"no_regex\": [\n DocCommentHighlightRules.getStartRule(\"doc-start\"),\n comments(\"no_regex\"),\n {\n token: \"string\",\n regex: \"'(?=.)\",\n next: \"qstring\"\n }, {\n token: \"string\",\n regex: '\"(?=.)',\n next: \"qqstring\"\n }, {\n token: \"constant.numeric\",\n regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\\b/\n }, {\n token: \"constant.numeric\",\n regex: /(?:\\d\\d*(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+\\b)?/\n }, {\n token: [\n \"storage.type\", \"punctuation.operator\", \"support.function\",\n \"punctuation.operator\", \"entity.name.function\", \"text\", \"keyword.operator\"\n ],\n regex: \"(\" + identifierRe + \")(\\\\.)(prototype)(\\\\.)(\" + identifierRe + \")(\\\\s*)(=)\",\n next: \"function_arguments\"\n }, {\n token: [\n \"storage.type\", \"punctuation.operator\", \"entity.name.function\", \"text\",\n \"keyword.operator\", \"text\", \"storage.type\", \"text\", \"paren.lparen\"\n ],\n regex: \"(\" + identifierRe + \")(\\\\.)(\" + identifierRe + \")(\\\\s*)(=)(\\\\s*)(function\\\\*?)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token: [\n \"entity.name.function\", \"text\", \"keyword.operator\", \"text\", \"storage.type\",\n \"text\", \"paren.lparen\"\n ],\n regex: \"(\" + identifierRe + \")(\\\\s*)(=)(\\\\s*)(function\\\\*?)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token: [\n \"storage.type\", \"punctuation.operator\", \"entity.name.function\", \"text\",\n \"keyword.operator\", \"text\",\n \"storage.type\", \"text\", \"entity.name.function\", \"text\", \"paren.lparen\"\n ],\n regex: \"(\" + identifierRe + \")(\\\\.)(\" + identifierRe + \")(\\\\s*)(=)(\\\\s*)(function\\\\*?)(\\\\s+)(\\\\w+)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token: [\n \"storage.type\", \"text\", \"entity.name.function\", \"text\", \"paren.lparen\"\n ],\n regex: \"(function\\\\*?)(\\\\s+)(\" + identifierRe + \")(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token: [\n \"entity.name.function\", \"text\", \"punctuation.operator\",\n \"text\", \"storage.type\", \"text\", \"paren.lparen\"\n ],\n regex: \"(\" + identifierRe + \")(\\\\s*)(:)(\\\\s*)(function\\\\*?)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token: [\n \"text\", \"text\", \"storage.type\", \"text\", \"paren.lparen\"\n ],\n regex: \"(:)(\\\\s*)(function\\\\*?)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token: \"keyword\",\n regex: \"from(?=\\\\s*('|\\\"))\"\n }, {\n token: \"keyword\",\n regex: \"(?:\" + kwBeforeRe + \")\\\\b\",\n next: \"start\"\n }, {\n token: \"support.constant\",\n regex: /that\\b/\n }, {\n token: [\"storage.type\", \"punctuation.operator\", \"support.function.firebug\"],\n regex: /(console)(\\.)(warn|info|log|error|time|trace|timeEnd|assert)\\b/\n }, {\n token: keywordMapper,\n regex: identifierRe\n }, {\n token: \"punctuation.operator\",\n regex: /[.](?![.])/,\n next: \"property\"\n }, {\n token: \"storage.type\",\n regex: /=>/,\n next: \"start\"\n }, {\n token: \"keyword.operator\",\n regex: /--|\\+\\+|\\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\\|\\||\\?:|[!$%&*+\\-~\\/^]=?/,\n next: \"start\"\n }, {\n token: \"punctuation.operator\",\n regex: /[?:,;.]/,\n next: \"start\"\n }, {\n token: \"paren.lparen\",\n regex: /[\\[({]/,\n next: \"start\"\n }, {\n token: \"paren.rparen\",\n regex: /[\\])}]/\n }, {\n token: \"comment\",\n regex: /^#!.*$/\n }\n ],\n property: [{\n token: \"text\",\n regex: \"\\\\s+\"\n }, {\n token: [\n \"storage.type\", \"punctuation.operator\", \"entity.name.function\", \"text\",\n \"keyword.operator\", \"text\",\n \"storage.type\", \"text\", \"entity.name.function\", \"text\", \"paren.lparen\"\n ],\n regex: \"(\" + identifierRe + \")(\\\\.)(\" + identifierRe + \")(\\\\s*)(=)(\\\\s*)(function\\\\*?)(?:(\\\\s+)(\\\\w+))?(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token: \"punctuation.operator\",\n regex: /[.](?![.])/\n }, {\n token: \"support.function\",\n regex: /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|lter|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward|rEach)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\\b(?=\\()/\n }, {\n token: \"support.function.dom\",\n regex: /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\\b(?=\\()/\n }, {\n token: \"support.constant\",\n regex: /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\\b/\n }, {\n token: \"identifier\",\n regex: identifierRe\n }, {\n regex: \"\",\n token: \"empty\",\n next: \"no_regex\"\n }\n ],\n \"start\": [\n DocCommentHighlightRules.getStartRule(\"doc-start\"),\n comments(\"start\"),\n {\n token: \"string.regexp\",\n regex: \"\\\\/\",\n next: \"regex\"\n }, {\n token: \"text\",\n regex: \"\\\\s+|^$\",\n next: \"start\"\n }, {\n token: \"empty\",\n regex: \"\",\n next: \"no_regex\"\n }\n ],\n \"regex\": [\n {\n token: \"regexp.keyword.operator\",\n regex: \"\\\\\\\\(?:u[\\\\da-fA-F]{4}|x[\\\\da-fA-F]{2}|.)\"\n }, {\n token: \"string.regexp\",\n regex: \"/[sxngimy]*\",\n next: \"no_regex\"\n }, {\n token: \"invalid\",\n regex: /\\{\\d+\\b,?\\d*\\}[+*]|[+*$^?][+*]|[$^][?]|\\?{3,}/\n }, {\n token: \"constant.language.escape\",\n regex: /\\(\\?[:=!]|\\)|\\{\\d+\\b,?\\d*\\}|[+*]\\?|[()$^+*?.]/\n }, {\n token: \"constant.language.delimiter\",\n regex: /\\|/\n }, {\n token: \"constant.language.escape\",\n regex: /\\[\\^?/,\n next: \"regex_character_class\"\n }, {\n token: \"empty\",\n regex: \"$\",\n next: \"no_regex\"\n }, {\n defaultToken: \"string.regexp\"\n }\n ],\n \"regex_character_class\": [\n {\n token: \"regexp.charclass.keyword.operator\",\n regex: \"\\\\\\\\(?:u[\\\\da-fA-F]{4}|x[\\\\da-fA-F]{2}|.)\"\n }, {\n token: \"constant.language.escape\",\n regex: \"]\",\n next: \"regex\"\n }, {\n token: \"constant.language.escape\",\n regex: \"-\"\n }, {\n token: \"empty\",\n regex: \"$\",\n next: \"no_regex\"\n }, {\n defaultToken: \"string.regexp.charachterclass\"\n }\n ],\n \"default_parameter\": [\n {\n token: \"string\",\n regex: \"'(?=.)\",\n push: [\n {\n token: \"string\",\n regex: \"'|$\",\n next: \"pop\"\n }, {\n include: \"qstring\"\n }\n ]\n }, {\n token: \"string\",\n regex: '\"(?=.)',\n push: [\n {\n token: \"string\",\n regex: '\"|$',\n next: \"pop\"\n }, {\n include: \"qqstring\"\n }\n ]\n }, {\n token: \"constant.language\",\n regex: \"null|Infinity|NaN|undefined\"\n }, {\n token: \"constant.numeric\",\n regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\\b/\n }, {\n token: \"constant.numeric\",\n regex: /(?:\\d\\d*(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+\\b)?/\n }, {\n token: \"punctuation.operator\",\n regex: \",\",\n next: \"function_arguments\"\n }, {\n token: \"text\",\n regex: \"\\\\s+\"\n }, {\n token: \"punctuation.operator\",\n regex: \"$\"\n }, {\n token: \"empty\",\n regex: \"\",\n next: \"no_regex\"\n }\n ],\n \"function_arguments\": [\n comments(\"function_arguments\"),\n {\n token: \"variable.parameter\",\n regex: identifierRe\n }, {\n token: \"punctuation.operator\",\n regex: \",\"\n }, {\n token: \"text\",\n regex: \"\\\\s+\"\n }, {\n token: \"punctuation.operator\",\n regex: \"$\"\n }, {\n token: \"empty\",\n regex: \"\",\n next: \"no_regex\"\n }\n ],\n \"qqstring\": [\n {\n token: \"constant.language.escape\",\n regex: escapedRe\n }, {\n token: \"string\",\n regex: \"\\\\\\\\$\",\n consumeLineEnd: true\n }, {\n token: \"string\",\n regex: '\"|$',\n next: \"no_regex\"\n }, {\n defaultToken: \"string\"\n }\n ],\n \"qstring\": [\n {\n token: \"constant.language.escape\",\n regex: escapedRe\n }, {\n token: \"string\",\n regex: \"\\\\\\\\$\",\n consumeLineEnd: true\n }, {\n token: \"string\",\n regex: \"'|$\",\n next: \"no_regex\"\n }, {\n defaultToken: \"string\"\n }\n ]\n };\n if (!options || !options.noES6) {\n this.$rules.no_regex.unshift({\n regex: \"[{}]\", onMatch: function (val, state, stack) {\n this.next = val == \"{\" ? this.nextState : \"\";\n if (val == \"{\" && stack.length) {\n stack.unshift(\"start\", state);\n }\n else if (val == \"}\" && stack.length) {\n stack.shift();\n this.next = stack.shift();\n if (this.next.indexOf(\"string\") != -1 || this.next.indexOf(\"jsx\") != -1)\n return \"paren.quasi.end\";\n }\n return val == \"{\" ? \"paren.lparen\" : \"paren.rparen\";\n },\n nextState: \"start\"\n }, {\n token: \"string.quasi.start\",\n regex: /`/,\n push: [{\n token: \"constant.language.escape\",\n regex: escapedRe\n }, {\n token: \"paren.quasi.start\",\n regex: /\\${/,\n push: \"start\"\n }, {\n token: \"string.quasi.end\",\n regex: /`/,\n next: \"pop\"\n }, {\n defaultToken: \"string.quasi\"\n }]\n }, {\n token: [\"variable.parameter\", \"text\"],\n regex: \"(\" + identifierRe + \")(\\\\s*)(?=\\\\=>)\"\n }, {\n token: \"paren.lparen\",\n regex: \"(\\\\()(?=.+\\\\s*=>)\",\n next: \"function_arguments\"\n }, {\n token: \"variable.language\",\n regex: \"(?:(?:(?:Weak)?(?:Set|Map))|Promise)\\\\b\"\n });\n this.$rules[\"function_arguments\"].unshift({\n token: \"keyword.operator\",\n regex: \"=\",\n next: \"default_parameter\"\n }, {\n token: \"keyword.operator\",\n regex: \"\\\\.{3}\"\n });\n this.$rules[\"property\"].unshift({\n token: \"support.function\",\n regex: \"(findIndex|repeat|startsWith|endsWith|includes|isSafeInteger|trunc|cbrt|log2|log10|sign|then|catch|\"\n + \"finally|resolve|reject|race|any|all|allSettled|keys|entries|isInteger)\\\\b(?=\\\\()\"\n }, {\n token: \"constant.language\",\n regex: \"(?:MAX_SAFE_INTEGER|MIN_SAFE_INTEGER|EPSILON)\\\\b\"\n });\n if (!options || options.jsx != false)\n JSX.call(this);\n }\n this.embedRules(DocCommentHighlightRules, \"doc-\", [DocCommentHighlightRules.getEndRule(\"no_regex\")]);\n this.normalizeRules();\n};\noop.inherits(JavaScriptHighlightRules, TextHighlightRules);\nfunction JSX() {\n var tagRegex = identifierRe.replace(\"\\\\d\", \"\\\\d\\\\-\");\n var jsxTag = {\n onMatch: function (val, state, stack) {\n var offset = val.charAt(1) == \"/\" ? 2 : 1;\n if (offset == 1) {\n if (state != this.nextState)\n stack.unshift(this.next, this.nextState, 0);\n else\n stack.unshift(this.next);\n stack[2]++;\n }\n else if (offset == 2) {\n if (state == this.nextState) {\n stack[1]--;\n if (!stack[1] || stack[1] < 0) {\n stack.shift();\n stack.shift();\n }\n }\n }\n return [{\n type: \"meta.tag.punctuation.\" + (offset == 1 ? \"\" : \"end-\") + \"tag-open.xml\",\n value: val.slice(0, offset)\n }, {\n type: \"meta.tag.tag-name.xml\",\n value: val.substr(offset)\n }];\n },\n regex: \"\",\n onMatch: function (value, currentState, stack) {\n if (currentState == stack[0])\n stack.shift();\n if (value.length == 2) {\n if (stack[0] == this.nextState)\n stack[1]--;\n if (!stack[1] || stack[1] < 0) {\n stack.splice(0, 2);\n }\n }\n this.next = stack[0] || \"start\";\n return [{ type: this.token, value: value }];\n },\n nextState: \"jsx\"\n },\n jsxJsRule,\n comments(\"jsxAttributes\"),\n {\n token: \"entity.other.attribute-name.xml\",\n regex: tagRegex\n }, {\n token: \"keyword.operator.attribute-equals.xml\",\n regex: \"=\"\n }, {\n token: \"text.tag-whitespace.xml\",\n regex: \"\\\\s+\"\n }, {\n token: \"string.attribute-value.xml\",\n regex: \"'\",\n stateName: \"jsx_attr_q\",\n push: [\n { token: \"string.attribute-value.xml\", regex: \"'\", next: \"pop\" },\n { include: \"reference\" },\n { defaultToken: \"string.attribute-value.xml\" }\n ]\n }, {\n token: \"string.attribute-value.xml\",\n regex: '\"',\n stateName: \"jsx_attr_qq\",\n push: [\n { token: \"string.attribute-value.xml\", regex: '\"', next: \"pop\" },\n { include: \"reference\" },\n { defaultToken: \"string.attribute-value.xml\" }\n ]\n },\n jsxTag\n ];\n this.$rules.reference = [{\n token: \"constant.language.escape.reference.xml\",\n regex: \"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\\\.-]+;)\"\n }];\n}\nfunction comments(next) {\n return [\n {\n token: \"comment\",\n regex: /\\/\\*/,\n next: [\n DocCommentHighlightRules.getTagRule(),\n { token: \"comment\", regex: \"\\\\*\\\\/\", next: next || \"pop\" },\n { defaultToken: \"comment\", caseInsensitive: true }\n ]\n }, {\n token: \"comment\",\n regex: \"\\\\/\\\\/\",\n next: [\n DocCommentHighlightRules.getTagRule(),\n { token: \"comment\", regex: \"$|^\", next: next || \"pop\" },\n { defaultToken: \"comment\", caseInsensitive: true }\n ]\n }\n ];\n}\nexports.JavaScriptHighlightRules = JavaScriptHighlightRules;\n\n});\n\nace.define(\"ace/mode/matching_brace_outdent\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar Range = require(\"../range\").Range;\nvar MatchingBraceOutdent = function () { };\n(function () {\n this.checkOutdent = function (line, input) {\n if (!/^\\s+$/.test(line))\n return false;\n return /^\\s*\\}/.test(input);\n };\n this.autoOutdent = function (doc, row) {\n var line = doc.getLine(row);\n var match = line.match(/^(\\s*\\})/);\n if (!match)\n return 0;\n var column = match[1].length;\n var openBracePos = doc.findMatchingBracket({ row: row, column: column });\n if (!openBracePos || openBracePos.row == row)\n return 0;\n var indent = this.$getIndent(doc.getLine(openBracePos.row));\n doc.replace(new Range(row, 0, row, column - 1), indent);\n };\n this.$getIndent = function (line) {\n return line.match(/^\\s*/)[0];\n };\n}).call(MatchingBraceOutdent.prototype);\nexports.MatchingBraceOutdent = MatchingBraceOutdent;\n\n});\n\nace.define(\"ace/mode/folding/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/range\",\"ace/mode/folding/fold_mode\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../../lib/oop\");\nvar Range = require(\"../../range\").Range;\nvar BaseFoldMode = require(\"./fold_mode\").FoldMode;\nvar FoldMode = exports.FoldMode = function (commentRegex) {\n if (commentRegex) {\n this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.start));\n this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.end));\n }\n};\noop.inherits(FoldMode, BaseFoldMode);\n(function () {\n this.foldingStartMarker = /([\\{\\[\\(])[^\\}\\]\\)]*$|^\\s*(\\/\\*)/;\n this.foldingStopMarker = /^[^\\[\\{\\(]*([\\}\\]\\)])|^[\\s\\*]*(\\*\\/)/;\n this.singleLineBlockCommentRe = /^\\s*(\\/\\*).*\\*\\/\\s*$/;\n this.tripleStarBlockCommentRe = /^\\s*(\\/\\*\\*\\*).*\\*\\/\\s*$/;\n this.startRegionRe = /^\\s*(\\/\\*|\\/\\/)#?region\\b/;\n this._getFoldWidgetBase = this.getFoldWidget;\n this.getFoldWidget = function (session, foldStyle, row) {\n var line = session.getLine(row);\n if (this.singleLineBlockCommentRe.test(line)) {\n if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line))\n return \"\";\n }\n var fw = this._getFoldWidgetBase(session, foldStyle, row);\n if (!fw && this.startRegionRe.test(line))\n return \"start\"; // lineCommentRegionStart\n return fw;\n };\n this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) {\n var line = session.getLine(row);\n if (this.startRegionRe.test(line))\n return this.getCommentRegionBlock(session, line, row);\n var match = line.match(this.foldingStartMarker);\n if (match) {\n var i = match.index;\n if (match[1])\n return this.openingBracketBlock(session, match[1], row, i);\n var range = session.getCommentFoldRange(row, i + match[0].length, 1);\n if (range && !range.isMultiLine()) {\n if (forceMultiline) {\n range = this.getSectionRange(session, row);\n }\n else if (foldStyle != \"all\")\n range = null;\n }\n return range;\n }\n if (foldStyle === \"markbegin\")\n return;\n var match = line.match(this.foldingStopMarker);\n if (match) {\n var i = match.index + match[0].length;\n if (match[1])\n return this.closingBracketBlock(session, match[1], row, i);\n return session.getCommentFoldRange(row, i, -1);\n }\n };\n this.getSectionRange = function (session, row) {\n var line = session.getLine(row);\n var startIndent = line.search(/\\S/);\n var startRow = row;\n var startColumn = line.length;\n row = row + 1;\n var endRow = row;\n var maxRow = session.getLength();\n while (++row < maxRow) {\n line = session.getLine(row);\n var indent = line.search(/\\S/);\n if (indent === -1)\n continue;\n if (startIndent > indent)\n break;\n var subRange = this.getFoldWidgetRange(session, \"all\", row);\n if (subRange) {\n if (subRange.start.row <= startRow) {\n break;\n }\n else if (subRange.isMultiLine()) {\n row = subRange.end.row;\n }\n else if (startIndent == indent) {\n break;\n }\n }\n endRow = row;\n }\n return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);\n };\n this.getCommentRegionBlock = function (session, line, row) {\n var startColumn = line.search(/\\s*$/);\n var maxRow = session.getLength();\n var startRow = row;\n var re = /^\\s*(?:\\/\\*|\\/\\/|--)#?(end)?region\\b/;\n var depth = 1;\n while (++row < maxRow) {\n line = session.getLine(row);\n var m = re.exec(line);\n if (!m)\n continue;\n if (m[1])\n depth--;\n else\n depth++;\n if (!depth)\n break;\n }\n var endRow = row;\n if (endRow > startRow) {\n return new Range(startRow, startColumn, endRow, line.length);\n }\n };\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/javascript\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/javascript_highlight_rules\",\"ace/mode/matching_brace_outdent\",\"ace/worker/worker_client\",\"ace/mode/behaviour/cstyle\",\"ace/mode/folding/cstyle\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar TextMode = require(\"./text\").Mode;\nvar JavaScriptHighlightRules = require(\"./javascript_highlight_rules\").JavaScriptHighlightRules;\nvar MatchingBraceOutdent = require(\"./matching_brace_outdent\").MatchingBraceOutdent;\nvar WorkerClient = require(\"../worker/worker_client\").WorkerClient;\nvar CstyleBehaviour = require(\"./behaviour/cstyle\").CstyleBehaviour;\nvar CStyleFoldMode = require(\"./folding/cstyle\").FoldMode;\nvar Mode = function () {\n this.HighlightRules = JavaScriptHighlightRules;\n this.$outdent = new MatchingBraceOutdent();\n this.$behaviour = new CstyleBehaviour();\n this.foldingRules = new CStyleFoldMode();\n};\noop.inherits(Mode, TextMode);\n(function () {\n this.lineCommentStart = \"//\";\n this.blockComment = { start: \"/*\", end: \"*/\" };\n this.$quotes = { '\"': '\"', \"'\": \"'\", \"`\": \"`\" };\n this.$pairQuotesAfter = {\n \"`\": /\\w/\n };\n this.getNextLineIndent = function (state, line, tab) {\n var indent = this.$getIndent(line);\n var tokenizedLine = this.getTokenizer().getLineTokens(line, state);\n var tokens = tokenizedLine.tokens;\n var endState = tokenizedLine.state;\n if (tokens.length && tokens[tokens.length - 1].type == \"comment\") {\n return indent;\n }\n if (state == \"start\" || state == \"no_regex\") {\n var match = line.match(/^.*(?:\\bcase\\b.*:|[\\{\\(\\[])\\s*$/);\n if (match) {\n indent += tab;\n }\n }\n else if (state == \"doc-start\") {\n if (endState == \"start\" || endState == \"no_regex\") {\n return \"\";\n }\n var match = line.match(/^\\s*(\\/?)\\*/);\n if (match) {\n if (match[1]) {\n indent += \" \";\n }\n indent += \"* \";\n }\n }\n return indent;\n };\n this.checkOutdent = function (state, line, input) {\n return this.$outdent.checkOutdent(line, input);\n };\n this.autoOutdent = function (state, doc, row) {\n this.$outdent.autoOutdent(doc, row);\n };\n this.createWorker = function (session) {\n var worker = new WorkerClient([\"ace\"], \"ace/mode/javascript_worker\", \"JavaScriptWorker\");\n worker.attachToDocument(session.getDocument());\n worker.on(\"annotate\", function (results) {\n session.setAnnotations(results.data);\n });\n worker.on(\"terminate\", function () {\n session.clearAnnotations();\n });\n return worker;\n };\n this.$id = \"ace/mode/javascript\";\n this.snippetFileId = \"ace/snippets/javascript\";\n}).call(Mode.prototype);\nexports.Mode = Mode;\n\n}); (function() {\n ace.require([\"ace/mode/javascript\"], function(m) {\n if (typeof module == \"object\" && typeof exports == \"object\" && module) {\n module.exports = m;\n }\n });\n })();\n ","ace.define(\"ace/mode/json_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar TextHighlightRules = require(\"./text_highlight_rules\").TextHighlightRules;\nvar JsonHighlightRules = function () {\n this.$rules = {\n \"start\": [\n {\n token: \"variable\",\n regex: '[\"](?:(?:\\\\\\\\.)|(?:[^\"\\\\\\\\]))*?[\"]\\\\s*(?=:)'\n }, {\n token: \"string\",\n regex: '\"',\n next: \"string\"\n }, {\n token: \"constant.numeric\",\n regex: \"0[xX][0-9a-fA-F]+\\\\b\"\n }, {\n token: \"constant.numeric\",\n regex: \"[+-]?\\\\d+(?:(?:\\\\.\\\\d*)?(?:[eE][+-]?\\\\d+)?)?\\\\b\"\n }, {\n token: \"constant.language.boolean\",\n regex: \"(?:true|false)\\\\b\"\n }, {\n token: \"text\",\n regex: \"['](?:(?:\\\\\\\\.)|(?:[^'\\\\\\\\]))*?[']\"\n }, {\n token: \"comment\",\n regex: \"\\\\/\\\\/.*$\"\n }, {\n token: \"comment.start\",\n regex: \"\\\\/\\\\*\",\n next: \"comment\"\n }, {\n token: \"paren.lparen\",\n regex: \"[[({]\"\n }, {\n token: \"paren.rparen\",\n regex: \"[\\\\])}]\"\n }, {\n token: \"punctuation.operator\",\n regex: /[,]/\n }, {\n token: \"text\",\n regex: \"\\\\s+\"\n }\n ],\n \"string\": [\n {\n token: \"constant.language.escape\",\n regex: /\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|[\"\\\\\\/bfnrt])/\n }, {\n token: \"string\",\n regex: '\"|$',\n next: \"start\"\n }, {\n defaultToken: \"string\"\n }\n ],\n \"comment\": [\n {\n token: \"comment.end\",\n regex: \"\\\\*\\\\/\",\n next: \"start\"\n }, {\n defaultToken: \"comment\"\n }\n ]\n };\n};\noop.inherits(JsonHighlightRules, TextHighlightRules);\nexports.JsonHighlightRules = JsonHighlightRules;\n\n});\n\nace.define(\"ace/mode/matching_brace_outdent\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar Range = require(\"../range\").Range;\nvar MatchingBraceOutdent = function () { };\n(function () {\n this.checkOutdent = function (line, input) {\n if (!/^\\s+$/.test(line))\n return false;\n return /^\\s*\\}/.test(input);\n };\n this.autoOutdent = function (doc, row) {\n var line = doc.getLine(row);\n var match = line.match(/^(\\s*\\})/);\n if (!match)\n return 0;\n var column = match[1].length;\n var openBracePos = doc.findMatchingBracket({ row: row, column: column });\n if (!openBracePos || openBracePos.row == row)\n return 0;\n var indent = this.$getIndent(doc.getLine(openBracePos.row));\n doc.replace(new Range(row, 0, row, column - 1), indent);\n };\n this.$getIndent = function (line) {\n return line.match(/^\\s*/)[0];\n };\n}).call(MatchingBraceOutdent.prototype);\nexports.MatchingBraceOutdent = MatchingBraceOutdent;\n\n});\n\nace.define(\"ace/mode/folding/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/range\",\"ace/mode/folding/fold_mode\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../../lib/oop\");\nvar Range = require(\"../../range\").Range;\nvar BaseFoldMode = require(\"./fold_mode\").FoldMode;\nvar FoldMode = exports.FoldMode = function (commentRegex) {\n if (commentRegex) {\n this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.start));\n this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.end));\n }\n};\noop.inherits(FoldMode, BaseFoldMode);\n(function () {\n this.foldingStartMarker = /([\\{\\[\\(])[^\\}\\]\\)]*$|^\\s*(\\/\\*)/;\n this.foldingStopMarker = /^[^\\[\\{\\(]*([\\}\\]\\)])|^[\\s\\*]*(\\*\\/)/;\n this.singleLineBlockCommentRe = /^\\s*(\\/\\*).*\\*\\/\\s*$/;\n this.tripleStarBlockCommentRe = /^\\s*(\\/\\*\\*\\*).*\\*\\/\\s*$/;\n this.startRegionRe = /^\\s*(\\/\\*|\\/\\/)#?region\\b/;\n this._getFoldWidgetBase = this.getFoldWidget;\n this.getFoldWidget = function (session, foldStyle, row) {\n var line = session.getLine(row);\n if (this.singleLineBlockCommentRe.test(line)) {\n if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line))\n return \"\";\n }\n var fw = this._getFoldWidgetBase(session, foldStyle, row);\n if (!fw && this.startRegionRe.test(line))\n return \"start\"; // lineCommentRegionStart\n return fw;\n };\n this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) {\n var line = session.getLine(row);\n if (this.startRegionRe.test(line))\n return this.getCommentRegionBlock(session, line, row);\n var match = line.match(this.foldingStartMarker);\n if (match) {\n var i = match.index;\n if (match[1])\n return this.openingBracketBlock(session, match[1], row, i);\n var range = session.getCommentFoldRange(row, i + match[0].length, 1);\n if (range && !range.isMultiLine()) {\n if (forceMultiline) {\n range = this.getSectionRange(session, row);\n }\n else if (foldStyle != \"all\")\n range = null;\n }\n return range;\n }\n if (foldStyle === \"markbegin\")\n return;\n var match = line.match(this.foldingStopMarker);\n if (match) {\n var i = match.index + match[0].length;\n if (match[1])\n return this.closingBracketBlock(session, match[1], row, i);\n return session.getCommentFoldRange(row, i, -1);\n }\n };\n this.getSectionRange = function (session, row) {\n var line = session.getLine(row);\n var startIndent = line.search(/\\S/);\n var startRow = row;\n var startColumn = line.length;\n row = row + 1;\n var endRow = row;\n var maxRow = session.getLength();\n while (++row < maxRow) {\n line = session.getLine(row);\n var indent = line.search(/\\S/);\n if (indent === -1)\n continue;\n if (startIndent > indent)\n break;\n var subRange = this.getFoldWidgetRange(session, \"all\", row);\n if (subRange) {\n if (subRange.start.row <= startRow) {\n break;\n }\n else if (subRange.isMultiLine()) {\n row = subRange.end.row;\n }\n else if (startIndent == indent) {\n break;\n }\n }\n endRow = row;\n }\n return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);\n };\n this.getCommentRegionBlock = function (session, line, row) {\n var startColumn = line.search(/\\s*$/);\n var maxRow = session.getLength();\n var startRow = row;\n var re = /^\\s*(?:\\/\\*|\\/\\/|--)#?(end)?region\\b/;\n var depth = 1;\n while (++row < maxRow) {\n line = session.getLine(row);\n var m = re.exec(line);\n if (!m)\n continue;\n if (m[1])\n depth--;\n else\n depth++;\n if (!depth)\n break;\n }\n var endRow = row;\n if (endRow > startRow) {\n return new Range(startRow, startColumn, endRow, line.length);\n }\n };\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/json\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/json_highlight_rules\",\"ace/mode/matching_brace_outdent\",\"ace/mode/folding/cstyle\",\"ace/worker/worker_client\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar TextMode = require(\"./text\").Mode;\nvar HighlightRules = require(\"./json_highlight_rules\").JsonHighlightRules;\nvar MatchingBraceOutdent = require(\"./matching_brace_outdent\").MatchingBraceOutdent;\nvar CStyleFoldMode = require(\"./folding/cstyle\").FoldMode;\nvar WorkerClient = require(\"../worker/worker_client\").WorkerClient;\nvar Mode = function () {\n this.HighlightRules = HighlightRules;\n this.$outdent = new MatchingBraceOutdent();\n this.$behaviour = this.$defaultBehaviour;\n this.foldingRules = new CStyleFoldMode();\n};\noop.inherits(Mode, TextMode);\n(function () {\n this.lineCommentStart = \"//\";\n this.blockComment = { start: \"/*\", end: \"*/\" };\n this.getNextLineIndent = function (state, line, tab) {\n var indent = this.$getIndent(line);\n if (state == \"start\") {\n var match = line.match(/^.*[\\{\\(\\[]\\s*$/);\n if (match) {\n indent += tab;\n }\n }\n return indent;\n };\n this.checkOutdent = function (state, line, input) {\n return this.$outdent.checkOutdent(line, input);\n };\n this.autoOutdent = function (state, doc, row) {\n this.$outdent.autoOutdent(doc, row);\n };\n this.createWorker = function (session) {\n var worker = new WorkerClient([\"ace\"], \"ace/mode/json_worker\", \"JsonWorker\");\n worker.attachToDocument(session.getDocument());\n worker.on(\"annotate\", function (e) {\n session.setAnnotations(e.data);\n });\n worker.on(\"terminate\", function () {\n session.clearAnnotations();\n });\n return worker;\n };\n this.$id = \"ace/mode/json\";\n}).call(Mode.prototype);\nexports.Mode = Mode;\n\n}); (function() {\n ace.require([\"ace/mode/json\"], function(m) {\n if (typeof module == \"object\" && typeof exports == \"object\" && module) {\n module.exports = m;\n }\n });\n })();\n ","ace.define(\"ace/mode/doc_comment_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar TextHighlightRules = require(\"./text_highlight_rules\").TextHighlightRules;\nvar DocCommentHighlightRules = function () {\n this.$rules = {\n \"start\": [\n {\n token: \"comment.doc.tag\",\n regex: \"@\\\\w+(?=\\\\s|$)\"\n }, DocCommentHighlightRules.getTagRule(), {\n defaultToken: \"comment.doc\",\n caseInsensitive: true\n }\n ]\n };\n};\noop.inherits(DocCommentHighlightRules, TextHighlightRules);\nDocCommentHighlightRules.getTagRule = function (start) {\n return {\n token: \"comment.doc.tag.storage.type\",\n regex: \"\\\\b(?:TODO|FIXME|XXX|HACK)\\\\b\"\n };\n};\nDocCommentHighlightRules.getStartRule = function (start) {\n return {\n token: \"comment.doc\",\n regex: \"\\\\/\\\\*(?=\\\\*)\",\n next: start\n };\n};\nDocCommentHighlightRules.getEndRule = function (start) {\n return {\n token: \"comment.doc\",\n regex: \"\\\\*\\\\/\",\n next: start\n };\n};\nexports.DocCommentHighlightRules = DocCommentHighlightRules;\n\n});\n\nace.define(\"ace/mode/jsx_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/mode/doc_comment_highlight_rules\",\"ace/mode/text_highlight_rules\"], function(require, exports, module){var oop = require(\"../lib/oop\");\nvar lang = require(\"../lib/lang\");\nvar DocCommentHighlightRules = require(\"./doc_comment_highlight_rules\").DocCommentHighlightRules;\nvar TextHighlightRules = require(\"./text_highlight_rules\").TextHighlightRules;\nvar JsxHighlightRules = function () {\n var keywords = lang.arrayToMap((\"break|do|instanceof|typeof|case|else|new|var|catch|finally|return|void|continue|for|switch|default|while|function|this|\" +\n \"if|throw|\" +\n \"delete|in|try|\" +\n \"class|extends|super|import|from|into|implements|interface|static|mixin|override|abstract|final|\" +\n \"number|int|string|boolean|variant|\" +\n \"log|assert\").split(\"|\"));\n var buildinConstants = lang.arrayToMap((\"null|true|false|NaN|Infinity|__FILE__|__LINE__|undefined\").split(\"|\"));\n var reserved = lang.arrayToMap((\"debugger|with|\" +\n \"const|export|\" +\n \"let|private|public|yield|protected|\" +\n \"extern|native|as|operator|__fake__|__readonly__\").split(\"|\"));\n var identifierRe = \"[a-zA-Z_][a-zA-Z0-9_]*\\\\b\";\n this.$rules = {\n \"start\": [\n {\n token: \"comment\",\n regex: \"\\\\/\\\\/.*$\"\n },\n DocCommentHighlightRules.getStartRule(\"doc-start\"),\n {\n token: \"comment\",\n regex: \"\\\\/\\\\*\",\n next: \"comment\"\n }, {\n token: \"string.regexp\",\n regex: \"[/](?:(?:\\\\[(?:\\\\\\\\]|[^\\\\]])+\\\\])|(?:\\\\\\\\/|[^\\\\]/]))*[/]\\\\w*\\\\s*(?=[).,;]|$)\"\n }, {\n token: \"string\",\n regex: '[\"](?:(?:\\\\\\\\.)|(?:[^\"\\\\\\\\]))*?[\"]'\n }, {\n token: \"string\",\n regex: \"['](?:(?:\\\\\\\\.)|(?:[^'\\\\\\\\]))*?[']\"\n }, {\n token: \"constant.numeric\",\n regex: \"0[xX][0-9a-fA-F]+\\\\b\"\n }, {\n token: \"constant.numeric\",\n regex: \"[+-]?\\\\d+(?:(?:\\\\.\\\\d*)?(?:[eE][+-]?\\\\d+)?)?\\\\b\"\n }, {\n token: \"constant.language.boolean\",\n regex: \"(?:true|false)\\\\b\"\n }, {\n token: [\n \"storage.type\",\n \"text\",\n \"entity.name.function\"\n ],\n regex: \"(function)(\\\\s+)(\" + identifierRe + \")\"\n }, {\n token: function (value) {\n if (value == \"this\")\n return \"variable.language\";\n else if (value == \"function\")\n return \"storage.type\";\n else if (keywords.hasOwnProperty(value) || reserved.hasOwnProperty(value))\n return \"keyword\";\n else if (buildinConstants.hasOwnProperty(value))\n return \"constant.language\";\n else if (/^_?[A-Z][a-zA-Z0-9_]*$/.test(value))\n return \"language.support.class\";\n else\n return \"identifier\";\n },\n regex: identifierRe\n }, {\n token: \"keyword.operator\",\n regex: \"!|%|&|\\\\*|\\\\-\\\\-|\\\\-|\\\\+\\\\+|\\\\+|~|==|=|!=|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\\\|\\\\||\\\\?\\\\:|\\\\*=|%=|\\\\+=|\\\\-=|&=|\\\\^=|\\\\b(?:in|instanceof|new|delete|typeof|void)\"\n }, {\n token: \"punctuation.operator\",\n regex: \"\\\\?|\\\\:|\\\\,|\\\\;|\\\\.\"\n }, {\n token: \"paren.lparen\",\n regex: \"[[({<]\"\n }, {\n token: \"paren.rparen\",\n regex: \"[\\\\])}>]\"\n }, {\n token: \"text\",\n regex: \"\\\\s+\"\n }\n ],\n \"comment\": [\n {\n token: \"comment\",\n regex: \"\\\\*\\\\/\",\n next: \"start\"\n }, {\n defaultToken: \"comment\"\n }\n ]\n };\n this.embedRules(DocCommentHighlightRules, \"doc-\", [DocCommentHighlightRules.getEndRule(\"start\")]);\n};\noop.inherits(JsxHighlightRules, TextHighlightRules);\nexports.JsxHighlightRules = JsxHighlightRules;\n\n});\n\nace.define(\"ace/mode/matching_brace_outdent\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar Range = require(\"../range\").Range;\nvar MatchingBraceOutdent = function () { };\n(function () {\n this.checkOutdent = function (line, input) {\n if (!/^\\s+$/.test(line))\n return false;\n return /^\\s*\\}/.test(input);\n };\n this.autoOutdent = function (doc, row) {\n var line = doc.getLine(row);\n var match = line.match(/^(\\s*\\})/);\n if (!match)\n return 0;\n var column = match[1].length;\n var openBracePos = doc.findMatchingBracket({ row: row, column: column });\n if (!openBracePos || openBracePos.row == row)\n return 0;\n var indent = this.$getIndent(doc.getLine(openBracePos.row));\n doc.replace(new Range(row, 0, row, column - 1), indent);\n };\n this.$getIndent = function (line) {\n return line.match(/^\\s*/)[0];\n };\n}).call(MatchingBraceOutdent.prototype);\nexports.MatchingBraceOutdent = MatchingBraceOutdent;\n\n});\n\nace.define(\"ace/mode/folding/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/range\",\"ace/mode/folding/fold_mode\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../../lib/oop\");\nvar Range = require(\"../../range\").Range;\nvar BaseFoldMode = require(\"./fold_mode\").FoldMode;\nvar FoldMode = exports.FoldMode = function (commentRegex) {\n if (commentRegex) {\n this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.start));\n this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.end));\n }\n};\noop.inherits(FoldMode, BaseFoldMode);\n(function () {\n this.foldingStartMarker = /([\\{\\[\\(])[^\\}\\]\\)]*$|^\\s*(\\/\\*)/;\n this.foldingStopMarker = /^[^\\[\\{\\(]*([\\}\\]\\)])|^[\\s\\*]*(\\*\\/)/;\n this.singleLineBlockCommentRe = /^\\s*(\\/\\*).*\\*\\/\\s*$/;\n this.tripleStarBlockCommentRe = /^\\s*(\\/\\*\\*\\*).*\\*\\/\\s*$/;\n this.startRegionRe = /^\\s*(\\/\\*|\\/\\/)#?region\\b/;\n this._getFoldWidgetBase = this.getFoldWidget;\n this.getFoldWidget = function (session, foldStyle, row) {\n var line = session.getLine(row);\n if (this.singleLineBlockCommentRe.test(line)) {\n if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line))\n return \"\";\n }\n var fw = this._getFoldWidgetBase(session, foldStyle, row);\n if (!fw && this.startRegionRe.test(line))\n return \"start\"; // lineCommentRegionStart\n return fw;\n };\n this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) {\n var line = session.getLine(row);\n if (this.startRegionRe.test(line))\n return this.getCommentRegionBlock(session, line, row);\n var match = line.match(this.foldingStartMarker);\n if (match) {\n var i = match.index;\n if (match[1])\n return this.openingBracketBlock(session, match[1], row, i);\n var range = session.getCommentFoldRange(row, i + match[0].length, 1);\n if (range && !range.isMultiLine()) {\n if (forceMultiline) {\n range = this.getSectionRange(session, row);\n }\n else if (foldStyle != \"all\")\n range = null;\n }\n return range;\n }\n if (foldStyle === \"markbegin\")\n return;\n var match = line.match(this.foldingStopMarker);\n if (match) {\n var i = match.index + match[0].length;\n if (match[1])\n return this.closingBracketBlock(session, match[1], row, i);\n return session.getCommentFoldRange(row, i, -1);\n }\n };\n this.getSectionRange = function (session, row) {\n var line = session.getLine(row);\n var startIndent = line.search(/\\S/);\n var startRow = row;\n var startColumn = line.length;\n row = row + 1;\n var endRow = row;\n var maxRow = session.getLength();\n while (++row < maxRow) {\n line = session.getLine(row);\n var indent = line.search(/\\S/);\n if (indent === -1)\n continue;\n if (startIndent > indent)\n break;\n var subRange = this.getFoldWidgetRange(session, \"all\", row);\n if (subRange) {\n if (subRange.start.row <= startRow) {\n break;\n }\n else if (subRange.isMultiLine()) {\n row = subRange.end.row;\n }\n else if (startIndent == indent) {\n break;\n }\n }\n endRow = row;\n }\n return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);\n };\n this.getCommentRegionBlock = function (session, line, row) {\n var startColumn = line.search(/\\s*$/);\n var maxRow = session.getLength();\n var startRow = row;\n var re = /^\\s*(?:\\/\\*|\\/\\/|--)#?(end)?region\\b/;\n var depth = 1;\n while (++row < maxRow) {\n line = session.getLine(row);\n var m = re.exec(line);\n if (!m)\n continue;\n if (m[1])\n depth--;\n else\n depth++;\n if (!depth)\n break;\n }\n var endRow = row;\n if (endRow > startRow) {\n return new Range(startRow, startColumn, endRow, line.length);\n }\n };\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/jsx\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/jsx_highlight_rules\",\"ace/mode/matching_brace_outdent\",\"ace/mode/folding/cstyle\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar TextMode = require(\"./text\").Mode;\nvar JsxHighlightRules = require(\"./jsx_highlight_rules\").JsxHighlightRules;\nvar MatchingBraceOutdent = require(\"./matching_brace_outdent\").MatchingBraceOutdent;\nvar CStyleFoldMode = require(\"./folding/cstyle\").FoldMode;\nfunction Mode() {\n this.HighlightRules = JsxHighlightRules;\n this.$outdent = new MatchingBraceOutdent();\n this.$behaviour = this.$defaultBehaviour;\n this.foldingRules = new CStyleFoldMode();\n}\noop.inherits(Mode, TextMode);\n(function () {\n this.lineCommentStart = \"//\";\n this.blockComment = { start: \"/*\", end: \"*/\" };\n this.getNextLineIndent = function (state, line, tab) {\n var indent = this.$getIndent(line);\n var tokenizedLine = this.getTokenizer().getLineTokens(line, state);\n var tokens = tokenizedLine.tokens;\n if (tokens.length && tokens[tokens.length - 1].type == \"comment\") {\n return indent;\n }\n if (state == \"start\") {\n var match = line.match(/^.*[\\{\\(\\[]\\s*$/);\n if (match) {\n indent += tab;\n }\n }\n return indent;\n };\n this.checkOutdent = function (state, line, input) {\n return this.$outdent.checkOutdent(line, input);\n };\n this.autoOutdent = function (state, doc, row) {\n this.$outdent.autoOutdent(doc, row);\n };\n this.$id = \"ace/mode/jsx\";\n}).call(Mode.prototype);\nexports.Mode = Mode;\n\n}); (function() {\n ace.require([\"ace/mode/jsx\"], function(m) {\n if (typeof module == \"object\" && typeof exports == \"object\" && module) {\n module.exports = m;\n }\n });\n })();\n ","ace.define(\"ace/mode/python_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(require, exports, module){/*\n * TODO: python delimiters\n */\n\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar TextHighlightRules = require(\"./text_highlight_rules\").TextHighlightRules;\nvar PythonHighlightRules = function () {\n var keywords = (\"and|as|assert|break|class|continue|def|del|elif|else|except|exec|\" +\n \"finally|for|from|global|if|import|in|is|lambda|not|or|pass|print|\" +\n \"raise|return|try|while|with|yield|async|await|nonlocal\");\n var builtinConstants = (\"True|False|None|NotImplemented|Ellipsis|__debug__\");\n var builtinFunctions = (\"abs|divmod|input|open|staticmethod|all|enumerate|int|ord|str|any|\" +\n \"eval|isinstance|pow|sum|basestring|execfile|issubclass|print|super|\" +\n \"binfile|bin|iter|property|tuple|bool|filter|len|range|type|bytearray|\" +\n \"float|list|raw_input|unichr|callable|format|locals|reduce|unicode|\" +\n \"chr|frozenset|long|reload|vars|classmethod|getattr|map|repr|xrange|\" +\n \"cmp|globals|max|reversed|zip|compile|hasattr|memoryview|round|\" +\n \"__import__|complex|hash|min|apply|delattr|help|next|setattr|set|\" +\n \"buffer|dict|hex|object|slice|coerce|dir|id|oct|sorted|intern|\" +\n \"ascii|breakpoint|bytes\");\n var keywordMapper = this.createKeywordMapper({\n \"invalid.deprecated\": \"debugger\",\n \"support.function\": builtinFunctions,\n \"variable.language\": \"self|cls\",\n \"constant.language\": builtinConstants,\n \"keyword\": keywords\n }, \"identifier\");\n var strPre = \"[uU]?\";\n var strRawPre = \"[rR]\";\n var strFormatPre = \"[fF]\";\n var strRawFormatPre = \"(?:[rR][fF]|[fF][rR])\";\n var decimalInteger = \"(?:(?:[1-9]\\\\d*)|(?:0))\";\n var octInteger = \"(?:0[oO]?[0-7]+)\";\n var hexInteger = \"(?:0[xX][\\\\dA-Fa-f]+)\";\n var binInteger = \"(?:0[bB][01]+)\";\n var integer = \"(?:\" + decimalInteger + \"|\" + octInteger + \"|\" + hexInteger + \"|\" + binInteger + \")\";\n var exponent = \"(?:[eE][+-]?\\\\d+)\";\n var fraction = \"(?:\\\\.\\\\d+)\";\n var intPart = \"(?:\\\\d+)\";\n var pointFloat = \"(?:(?:\" + intPart + \"?\" + fraction + \")|(?:\" + intPart + \"\\\\.))\";\n var exponentFloat = \"(?:(?:\" + pointFloat + \"|\" + intPart + \")\" + exponent + \")\";\n var floatNumber = \"(?:\" + exponentFloat + \"|\" + pointFloat + \")\";\n var stringEscape = \"\\\\\\\\(x[0-9A-Fa-f]{2}|[0-7]{3}|[\\\\\\\\abfnrtv'\\\"]|U[0-9A-Fa-f]{8}|u[0-9A-Fa-f]{4})\";\n this.$rules = {\n \"start\": [{\n token: \"comment\",\n regex: \"#.*$\"\n }, {\n token: \"string\",\n regex: strPre + '\"{3}',\n next: \"qqstring3\"\n }, {\n token: \"string\",\n regex: strPre + '\"(?=.)',\n next: \"qqstring\"\n }, {\n token: \"string\",\n regex: strPre + \"'{3}\",\n next: \"qstring3\"\n }, {\n token: \"string\",\n regex: strPre + \"'(?=.)\",\n next: \"qstring\"\n }, {\n token: \"string\",\n regex: strRawPre + '\"{3}',\n next: \"rawqqstring3\"\n }, {\n token: \"string\",\n regex: strRawPre + '\"(?=.)',\n next: \"rawqqstring\"\n }, {\n token: \"string\",\n regex: strRawPre + \"'{3}\",\n next: \"rawqstring3\"\n }, {\n token: \"string\",\n regex: strRawPre + \"'(?=.)\",\n next: \"rawqstring\"\n }, {\n token: \"string\",\n regex: strFormatPre + '\"{3}',\n next: \"fqqstring3\"\n }, {\n token: \"string\",\n regex: strFormatPre + '\"(?=.)',\n next: \"fqqstring\"\n }, {\n token: \"string\",\n regex: strFormatPre + \"'{3}\",\n next: \"fqstring3\"\n }, {\n token: \"string\",\n regex: strFormatPre + \"'(?=.)\",\n next: \"fqstring\"\n }, {\n token: \"string\",\n regex: strRawFormatPre + '\"{3}',\n next: \"rfqqstring3\"\n }, {\n token: \"string\",\n regex: strRawFormatPre + '\"(?=.)',\n next: \"rfqqstring\"\n }, {\n token: \"string\",\n regex: strRawFormatPre + \"'{3}\",\n next: \"rfqstring3\"\n }, {\n token: \"string\",\n regex: strRawFormatPre + \"'(?=.)\",\n next: \"rfqstring\"\n }, {\n token: \"keyword.operator\",\n regex: \"\\\\+|\\\\-|\\\\*|\\\\*\\\\*|\\\\/|\\\\/\\\\/|%|@|<<|>>|&|\\\\||\\\\^|~|<|>|<=|=>|==|!=|<>|=\"\n }, {\n token: \"punctuation\",\n regex: \",|:|;|\\\\->|\\\\+=|\\\\-=|\\\\*=|\\\\/=|\\\\/\\\\/=|%=|@=|&=|\\\\|=|^=|>>=|<<=|\\\\*\\\\*=\"\n }, {\n token: \"paren.lparen\",\n regex: \"[\\\\[\\\\(\\\\{]\"\n }, {\n token: \"paren.rparen\",\n regex: \"[\\\\]\\\\)\\\\}]\"\n }, {\n token: [\"keyword\", \"text\", \"entity.name.function\"],\n regex: \"(def|class)(\\\\s+)([\\\\u00BF-\\\\u1FFF\\\\u2C00-\\\\uD7FF\\\\w]+)\"\n }, {\n token: \"text\",\n regex: \"\\\\s+\"\n }, {\n include: \"constants\"\n }],\n \"qqstring3\": [{\n token: \"constant.language.escape\",\n regex: stringEscape\n }, {\n token: \"string\",\n regex: '\"{3}',\n next: \"start\"\n }, {\n defaultToken: \"string\"\n }],\n \"qstring3\": [{\n token: \"constant.language.escape\",\n regex: stringEscape\n }, {\n token: \"string\",\n regex: \"'{3}\",\n next: \"start\"\n }, {\n defaultToken: \"string\"\n }],\n \"qqstring\": [{\n token: \"constant.language.escape\",\n regex: stringEscape\n }, {\n token: \"string\",\n regex: \"\\\\\\\\$\",\n next: \"qqstring\"\n }, {\n token: \"string\",\n regex: '\"|$',\n next: \"start\"\n }, {\n defaultToken: \"string\"\n }],\n \"qstring\": [{\n token: \"constant.language.escape\",\n regex: stringEscape\n }, {\n token: \"string\",\n regex: \"\\\\\\\\$\",\n next: \"qstring\"\n }, {\n token: \"string\",\n regex: \"'|$\",\n next: \"start\"\n }, {\n defaultToken: \"string\"\n }],\n \"rawqqstring3\": [{\n token: \"string\",\n regex: '\"{3}',\n next: \"start\"\n }, {\n defaultToken: \"string\"\n }],\n \"rawqstring3\": [{\n token: \"string\",\n regex: \"'{3}\",\n next: \"start\"\n }, {\n defaultToken: \"string\"\n }],\n \"rawqqstring\": [{\n token: \"string\",\n regex: \"\\\\\\\\$\",\n next: \"rawqqstring\"\n }, {\n token: \"string\",\n regex: '\"|$',\n next: \"start\"\n }, {\n defaultToken: \"string\"\n }],\n \"rawqstring\": [{\n token: \"string\",\n regex: \"\\\\\\\\$\",\n next: \"rawqstring\"\n }, {\n token: \"string\",\n regex: \"'|$\",\n next: \"start\"\n }, {\n defaultToken: \"string\"\n }],\n \"fqqstring3\": [{\n token: \"constant.language.escape\",\n regex: stringEscape\n }, {\n token: \"string\",\n regex: '\"{3}',\n next: \"start\"\n }, {\n token: \"paren.lparen\",\n regex: \"{\",\n push: \"fqstringParRules\"\n }, {\n defaultToken: \"string\"\n }],\n \"fqstring3\": [{\n token: \"constant.language.escape\",\n regex: stringEscape\n }, {\n token: \"string\",\n regex: \"'{3}\",\n next: \"start\"\n }, {\n token: \"paren.lparen\",\n regex: \"{\",\n push: \"fqstringParRules\"\n }, {\n defaultToken: \"string\"\n }],\n \"fqqstring\": [{\n token: \"constant.language.escape\",\n regex: stringEscape\n }, {\n token: \"string\",\n regex: \"\\\\\\\\$\",\n next: \"fqqstring\"\n }, {\n token: \"string\",\n regex: '\"|$',\n next: \"start\"\n }, {\n token: \"paren.lparen\",\n regex: \"{\",\n push: \"fqstringParRules\"\n }, {\n defaultToken: \"string\"\n }],\n \"fqstring\": [{\n token: \"constant.language.escape\",\n regex: stringEscape\n }, {\n token: \"string\",\n regex: \"'|$\",\n next: \"start\"\n }, {\n token: \"paren.lparen\",\n regex: \"{\",\n push: \"fqstringParRules\"\n }, {\n defaultToken: \"string\"\n }],\n \"rfqqstring3\": [{\n token: \"string\",\n regex: '\"{3}',\n next: \"start\"\n }, {\n token: \"paren.lparen\",\n regex: \"{\",\n push: \"fqstringParRules\"\n }, {\n defaultToken: \"string\"\n }],\n \"rfqstring3\": [{\n token: \"string\",\n regex: \"'{3}\",\n next: \"start\"\n }, {\n token: \"paren.lparen\",\n regex: \"{\",\n push: \"fqstringParRules\"\n }, {\n defaultToken: \"string\"\n }],\n \"rfqqstring\": [{\n token: \"string\",\n regex: \"\\\\\\\\$\",\n next: \"rfqqstring\"\n }, {\n token: \"string\",\n regex: '\"|$',\n next: \"start\"\n }, {\n token: \"paren.lparen\",\n regex: \"{\",\n push: \"fqstringParRules\"\n }, {\n defaultToken: \"string\"\n }],\n \"rfqstring\": [{\n token: \"string\",\n regex: \"'|$\",\n next: \"start\"\n }, {\n token: \"paren.lparen\",\n regex: \"{\",\n push: \"fqstringParRules\"\n }, {\n defaultToken: \"string\"\n }],\n \"fqstringParRules\": [{\n token: \"paren.lparen\",\n regex: \"[\\\\[\\\\(]\"\n }, {\n token: \"paren.rparen\",\n regex: \"[\\\\]\\\\)]\"\n }, {\n token: \"string\",\n regex: \"\\\\s+\"\n }, {\n token: \"string\",\n regex: \"'[^']*'\"\n }, {\n token: \"string\",\n regex: '\"[^\"]*\"'\n }, {\n token: \"function.support\",\n regex: \"(!s|!r|!a)\"\n }, {\n include: \"constants\"\n }, {\n token: 'paren.rparen',\n regex: \"}\",\n next: 'pop'\n }, {\n token: 'paren.lparen',\n regex: \"{\",\n push: \"fqstringParRules\"\n }],\n \"constants\": [{\n token: \"constant.numeric\",\n regex: \"(?:\" + floatNumber + \"|\\\\d+)[jJ]\\\\b\"\n }, {\n token: \"constant.numeric\",\n regex: floatNumber\n }, {\n token: \"constant.numeric\",\n regex: integer + \"[lL]\\\\b\"\n }, {\n token: \"constant.numeric\",\n regex: integer + \"\\\\b\"\n }, {\n token: [\"punctuation\", \"function.support\"],\n regex: \"(\\\\.)([a-zA-Z_]+)\\\\b\"\n }, {\n token: keywordMapper,\n regex: \"[a-zA-Z_$][a-zA-Z0-9_$]*\\\\b\"\n }]\n };\n this.normalizeRules();\n};\noop.inherits(PythonHighlightRules, TextHighlightRules);\nexports.PythonHighlightRules = PythonHighlightRules;\n\n});\n\nace.define(\"ace/mode/folding/pythonic\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/folding/fold_mode\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../../lib/oop\");\nvar BaseFoldMode = require(\"./fold_mode\").FoldMode;\nvar FoldMode = exports.FoldMode = function (markers) {\n this.foldingStartMarker = new RegExp(\"([\\\\[{])(?:\\\\s*)$|(\" + markers + \")(?:\\\\s*)(?:#.*)?$\");\n};\noop.inherits(FoldMode, BaseFoldMode);\n(function () {\n this.getFoldWidgetRange = function (session, foldStyle, row) {\n var line = session.getLine(row);\n var match = line.match(this.foldingStartMarker);\n if (match) {\n if (match[1])\n return this.openingBracketBlock(session, match[1], row, match.index);\n if (match[2])\n return this.indentationBlock(session, row, match.index + match[2].length);\n return this.indentationBlock(session, row);\n }\n };\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/python\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/python_highlight_rules\",\"ace/mode/folding/pythonic\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar TextMode = require(\"./text\").Mode;\nvar PythonHighlightRules = require(\"./python_highlight_rules\").PythonHighlightRules;\nvar PythonFoldMode = require(\"./folding/pythonic\").FoldMode;\nvar Range = require(\"../range\").Range;\nvar Mode = function () {\n this.HighlightRules = PythonHighlightRules;\n this.foldingRules = new PythonFoldMode(\"\\\\:\");\n this.$behaviour = this.$defaultBehaviour;\n};\noop.inherits(Mode, TextMode);\n(function () {\n this.lineCommentStart = \"#\";\n this.$pairQuotesAfter = {\n \"'\": /[ruf]/i,\n '\"': /[ruf]/i\n };\n this.getNextLineIndent = function (state, line, tab) {\n var indent = this.$getIndent(line);\n var tokenizedLine = this.getTokenizer().getLineTokens(line, state);\n var tokens = tokenizedLine.tokens;\n if (tokens.length && tokens[tokens.length - 1].type == \"comment\") {\n return indent;\n }\n if (state == \"start\") {\n var match = line.match(/^.*[\\{\\(\\[:]\\s*$/);\n if (match) {\n indent += tab;\n }\n }\n return indent;\n };\n var outdents = {\n \"pass\": 1,\n \"return\": 1,\n \"raise\": 1,\n \"break\": 1,\n \"continue\": 1\n };\n this.checkOutdent = function (state, line, input) {\n if (input !== \"\\r\\n\" && input !== \"\\r\" && input !== \"\\n\")\n return false;\n var tokens = this.getTokenizer().getLineTokens(line.trim(), state).tokens;\n if (!tokens)\n return false;\n do {\n var last = tokens.pop();\n } while (last && (last.type == \"comment\" || (last.type == \"text\" && last.value.match(/^\\s+$/))));\n if (!last)\n return false;\n return (last.type == \"keyword\" && outdents[last.value]);\n };\n this.autoOutdent = function (state, doc, row) {\n row += 1;\n var indent = this.$getIndent(doc.getLine(row));\n var tab = doc.getTabString();\n if (indent.slice(-tab.length) == tab)\n doc.remove(new Range(row, indent.length - tab.length, row, indent.length));\n };\n this.$id = \"ace/mode/python\";\n this.snippetFileId = \"ace/snippets/python\";\n}).call(Mode.prototype);\nexports.Mode = Mode;\n\n}); (function() {\n ace.require([\"ace/mode/python\"], function(m) {\n if (typeof module == \"object\" && typeof exports == \"object\" && module) {\n module.exports = m;\n }\n });\n })();\n ","ace.define(\"ace/mode/xml_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar TextHighlightRules = require(\"./text_highlight_rules\").TextHighlightRules;\nvar XmlHighlightRules = function (normalize) {\n var tagRegex = \"[_:a-zA-Z\\xc0-\\uffff][-_:.a-zA-Z0-9\\xc0-\\uffff]*\";\n this.$rules = {\n start: [\n { token: \"string.cdata.xml\", regex: \"<\\\\!\\\\[CDATA\\\\[\", next: \"cdata\" },\n {\n token: [\"punctuation.instruction.xml\", \"keyword.instruction.xml\"],\n regex: \"(<\\\\?)(\" + tagRegex + \")\", next: \"processing_instruction\"\n },\n { token: \"comment.start.xml\", regex: \"<\\\\!--\", next: \"comment\" },\n {\n token: [\"xml-pe.doctype.xml\", \"xml-pe.doctype.xml\"],\n regex: \"(<\\\\!)(DOCTYPE)(?=[\\\\s])\", next: \"doctype\", caseInsensitive: true\n },\n { include: \"tag\" },\n { token: \"text.end-tag-open.xml\", regex: \"\",\n next: \"start\"\n }],\n doctype: [\n { include: \"whitespace\" },\n { include: \"string\" },\n { token: \"xml-pe.doctype.xml\", regex: \">\", next: \"start\" },\n { token: \"xml-pe.xml\", regex: \"[-_a-zA-Z0-9:]+\" },\n { token: \"punctuation.int-subset\", regex: \"\\\\[\", push: \"int_subset\" }\n ],\n int_subset: [{\n token: \"text.xml\",\n regex: \"\\\\s+\"\n }, {\n token: \"punctuation.int-subset.xml\",\n regex: \"]\",\n next: \"pop\"\n }, {\n token: [\"punctuation.markup-decl.xml\", \"keyword.markup-decl.xml\"],\n regex: \"(<\\\\!)(\" + tagRegex + \")\",\n push: [{\n token: \"text\",\n regex: \"\\\\s+\"\n },\n {\n token: \"punctuation.markup-decl.xml\",\n regex: \">\",\n next: \"pop\"\n },\n { include: \"string\" }]\n }],\n cdata: [\n { token: \"string.cdata.xml\", regex: \"\\\\]\\\\]>\", next: \"start\" },\n { token: \"text.xml\", regex: \"\\\\s+\" },\n { token: \"text.xml\", regex: \"(?:[^\\\\]]|\\\\](?!\\\\]>))+\" }\n ],\n comment: [\n { token: \"comment.end.xml\", regex: \"-->\", next: \"start\" },\n { defaultToken: \"comment.xml\" }\n ],\n reference: [{\n token: \"constant.language.escape.reference.xml\",\n regex: \"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\\\.-]+;)\"\n }],\n attr_reference: [{\n token: \"constant.language.escape.reference.attribute-value.xml\",\n regex: \"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\\\.-]+;)\"\n }],\n tag: [{\n token: [\"meta.tag.punctuation.tag-open.xml\", \"meta.tag.punctuation.end-tag-open.xml\", \"meta.tag.tag-name.xml\"],\n regex: \"(?:(<)|(\", next: \"start\" }\n ]\n }],\n tag_whitespace: [\n { token: \"text.tag-whitespace.xml\", regex: \"\\\\s+\" }\n ],\n whitespace: [\n { token: \"text.whitespace.xml\", regex: \"\\\\s+\" }\n ],\n string: [{\n token: \"string.xml\",\n regex: \"'\",\n push: [\n { token: \"string.xml\", regex: \"'\", next: \"pop\" },\n { defaultToken: \"string.xml\" }\n ]\n }, {\n token: \"string.xml\",\n regex: '\"',\n push: [\n { token: \"string.xml\", regex: '\"', next: \"pop\" },\n { defaultToken: \"string.xml\" }\n ]\n }],\n attributes: [{\n token: \"entity.other.attribute-name.xml\",\n regex: tagRegex\n }, {\n token: \"keyword.operator.attribute-equals.xml\",\n regex: \"=\"\n }, {\n include: \"tag_whitespace\"\n }, {\n include: \"attribute_value\"\n }],\n attribute_value: [{\n token: \"string.attribute-value.xml\",\n regex: \"'\",\n push: [\n { token: \"string.attribute-value.xml\", regex: \"'\", next: \"pop\" },\n { include: \"attr_reference\" },\n { defaultToken: \"string.attribute-value.xml\" }\n ]\n }, {\n token: \"string.attribute-value.xml\",\n regex: '\"',\n push: [\n { token: \"string.attribute-value.xml\", regex: '\"', next: \"pop\" },\n { include: \"attr_reference\" },\n { defaultToken: \"string.attribute-value.xml\" }\n ]\n }]\n };\n if (this.constructor === XmlHighlightRules)\n this.normalizeRules();\n};\n(function () {\n this.embedTagRules = function (HighlightRules, prefix, tag) {\n this.$rules.tag.unshift({\n token: [\"meta.tag.punctuation.tag-open.xml\", \"meta.tag.\" + tag + \".tag-name.xml\"],\n regex: \"(<)(\" + tag + \"(?=\\\\s|>|$))\",\n next: [\n { include: \"attributes\" },\n { token: \"meta.tag.punctuation.tag-close.xml\", regex: \"/?>\", next: prefix + \"start\" }\n ]\n });\n this.$rules[tag + \"-end\"] = [\n { include: \"attributes\" },\n { token: \"meta.tag.punctuation.tag-close.xml\", regex: \"/?>\", next: \"start\",\n onMatch: function (value, currentState, stack) {\n stack.splice(0);\n return this.token;\n } }\n ];\n this.embedRules(HighlightRules, prefix, [{\n token: [\"meta.tag.punctuation.end-tag-open.xml\", \"meta.tag.\" + tag + \".tag-name.xml\"],\n regex: \"(|$))\",\n next: tag + \"-end\"\n }, {\n token: \"string.cdata.xml\",\n regex: \"<\\\\!\\\\[CDATA\\\\[\"\n }, {\n token: \"string.cdata.xml\",\n regex: \"\\\\]\\\\]>\"\n }]);\n };\n}).call(TextHighlightRules.prototype);\noop.inherits(XmlHighlightRules, TextHighlightRules);\nexports.XmlHighlightRules = XmlHighlightRules;\n\n});\n\nace.define(\"ace/mode/behaviour/xml\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/behaviour\",\"ace/token_iterator\",\"ace/lib/lang\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../../lib/oop\");\nvar Behaviour = require(\"../behaviour\").Behaviour;\nvar TokenIterator = require(\"../../token_iterator\").TokenIterator;\nvar lang = require(\"../../lib/lang\");\nfunction is(token, type) {\n return token && token.type.lastIndexOf(type + \".xml\") > -1;\n}\nvar XmlBehaviour = function () {\n this.add(\"string_dquotes\", \"insertion\", function (state, action, editor, session, text) {\n if (text == '\"' || text == \"'\") {\n var quote = text;\n var selected = session.doc.getTextRange(editor.getSelectionRange());\n if (selected !== \"\" && selected !== \"'\" && selected != '\"' && editor.getWrapBehavioursEnabled()) {\n return {\n text: quote + selected + quote,\n selection: false\n };\n }\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n var token = iterator.getCurrentToken();\n if (rightChar == quote && (is(token, \"attribute-value\") || is(token, \"string\"))) {\n return {\n text: \"\",\n selection: [1, 1]\n };\n }\n if (!token)\n token = iterator.stepBackward();\n if (!token)\n return;\n while (is(token, \"tag-whitespace\") || is(token, \"whitespace\")) {\n token = iterator.stepBackward();\n }\n var rightSpace = !rightChar || rightChar.match(/\\s/);\n if (is(token, \"attribute-equals\") && (rightSpace || rightChar == '>') || (is(token, \"decl-attribute-equals\") && (rightSpace || rightChar == '?'))) {\n return {\n text: quote + quote,\n selection: [1, 1]\n };\n }\n }\n });\n this.add(\"string_dquotes\", \"deletion\", function (state, action, editor, session, range) {\n var selected = session.doc.getTextRange(range);\n if (!range.isMultiLine() && (selected == '\"' || selected == \"'\")) {\n var line = session.doc.getLine(range.start.row);\n var rightChar = line.substring(range.start.column + 1, range.start.column + 2);\n if (rightChar == selected) {\n range.end.column++;\n return range;\n }\n }\n });\n this.add(\"autoclosing\", \"insertion\", function (state, action, editor, session, text) {\n if (text == '>') {\n var position = editor.getSelectionRange().start;\n var iterator = new TokenIterator(session, position.row, position.column);\n var token = iterator.getCurrentToken() || iterator.stepBackward();\n if (!token || !(is(token, \"tag-name\") || is(token, \"tag-whitespace\") || is(token, \"attribute-name\") || is(token, \"attribute-equals\") || is(token, \"attribute-value\")))\n return;\n if (is(token, \"reference.attribute-value\"))\n return;\n if (is(token, \"attribute-value\")) {\n var tokenEndColumn = iterator.getCurrentTokenColumn() + token.value.length;\n if (position.column < tokenEndColumn)\n return;\n if (position.column == tokenEndColumn) {\n var nextToken = iterator.stepForward();\n if (nextToken && is(nextToken, \"attribute-value\"))\n return;\n iterator.stepBackward();\n }\n }\n if (/^\\s*>/.test(session.getLine(position.row).slice(position.column)))\n return;\n while (!is(token, \"tag-name\")) {\n token = iterator.stepBackward();\n if (token.value == \"<\") {\n token = iterator.stepForward();\n break;\n }\n }\n var tokenRow = iterator.getCurrentTokenRow();\n var tokenColumn = iterator.getCurrentTokenColumn();\n if (is(iterator.stepBackward(), \"end-tag-open\"))\n return;\n var element = token.value;\n if (tokenRow == position.row)\n element = element.substring(0, position.column - tokenColumn);\n if (this.voidElements.hasOwnProperty(element.toLowerCase()))\n return;\n return {\n text: \">\" + \"\",\n selection: [1, 1]\n };\n }\n });\n this.add(\"autoindent\", \"insertion\", function (state, action, editor, session, text) {\n if (text == \"\\n\") {\n var cursor = editor.getCursorPosition();\n var line = session.getLine(cursor.row);\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n var token = iterator.getCurrentToken();\n if (token && token.type.indexOf(\"tag-close\") !== -1) {\n if (token.value == \"/>\")\n return;\n while (token && token.type.indexOf(\"tag-name\") === -1) {\n token = iterator.stepBackward();\n }\n if (!token) {\n return;\n }\n var tag = token.value;\n var row = iterator.getCurrentTokenRow();\n token = iterator.stepBackward();\n if (!token || token.type.indexOf(\"end-tag\") !== -1) {\n return;\n }\n if (this.voidElements && !this.voidElements[tag]) {\n var nextToken = session.getTokenAt(cursor.row, cursor.column + 1);\n var line = session.getLine(row);\n var nextIndent = this.$getIndent(line);\n var indent = nextIndent + session.getTabString();\n if (nextToken && nextToken.value === \" -1;\n}\n(function () {\n this.getFoldWidget = function (session, foldStyle, row) {\n var tag = this._getFirstTagInLine(session, row);\n if (!tag)\n return this.getCommentFoldWidget(session, row);\n if (tag.closing || (!tag.tagName && tag.selfClosing))\n return foldStyle === \"markbeginend\" ? \"end\" : \"\";\n if (!tag.tagName || tag.selfClosing || this.voidElements.hasOwnProperty(tag.tagName.toLowerCase()))\n return \"\";\n if (this._findEndTagInLine(session, row, tag.tagName, tag.end.column))\n return \"\";\n return \"start\";\n };\n this.getCommentFoldWidget = function (session, row) {\n if (/comment/.test(session.getState(row)) && /';\n break;\n }\n }\n return tag;\n }\n else if (is(token, \"tag-close\")) {\n tag.selfClosing = token.value == '/>';\n return tag;\n }\n tag.start.column += token.value.length;\n }\n return null;\n };\n this._findEndTagInLine = function (session, row, tagName, startColumn) {\n var tokens = session.getTokens(row);\n var column = 0;\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n column += token.value.length;\n if (column < startColumn)\n continue;\n if (is(token, \"end-tag-open\")) {\n token = tokens[i + 1];\n if (token && token.value == tagName)\n return true;\n }\n }\n return false;\n };\n this.getFoldWidgetRange = function (session, foldStyle, row) {\n var tags = session.getMatchingTags({ row: row, column: 0 });\n if (tags) {\n return new Range(tags.openTag.end.row, tags.openTag.end.column, tags.closeTag.start.row, tags.closeTag.start.column);\n }\n else {\n return this.getCommentFoldWidget(session, row)\n && session.getCommentFoldRange(row, session.getLine(row).length);\n }\n };\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/xml\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/mode/text\",\"ace/mode/xml_highlight_rules\",\"ace/mode/behaviour/xml\",\"ace/mode/folding/xml\",\"ace/worker/worker_client\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar lang = require(\"../lib/lang\");\nvar TextMode = require(\"./text\").Mode;\nvar XmlHighlightRules = require(\"./xml_highlight_rules\").XmlHighlightRules;\nvar XmlBehaviour = require(\"./behaviour/xml\").XmlBehaviour;\nvar XmlFoldMode = require(\"./folding/xml\").FoldMode;\nvar WorkerClient = require(\"../worker/worker_client\").WorkerClient;\nvar Mode = function () {\n this.HighlightRules = XmlHighlightRules;\n this.$behaviour = new XmlBehaviour();\n this.foldingRules = new XmlFoldMode();\n};\noop.inherits(Mode, TextMode);\n(function () {\n this.voidElements = lang.arrayToMap([]);\n this.blockComment = { start: \"\" };\n this.createWorker = function (session) {\n var worker = new WorkerClient([\"ace\"], \"ace/mode/xml_worker\", \"Worker\");\n worker.attachToDocument(session.getDocument());\n worker.on(\"error\", function (e) {\n session.setAnnotations(e.data);\n });\n worker.on(\"terminate\", function () {\n session.clearAnnotations();\n });\n return worker;\n };\n this.$id = \"ace/mode/xml\";\n}).call(Mode.prototype);\nexports.Mode = Mode;\n\n}); (function() {\n ace.require([\"ace/mode/xml\"], function(m) {\n if (typeof module == \"object\" && typeof exports == \"object\" && module) {\n module.exports = m;\n }\n });\n })();\n ","ace.define(\"ace/theme/github-css\",[\"require\",\"exports\",\"module\"], function(require, exports, module){module.exports = \"/* CSS style content from github's default pygments highlighter template.\\n Cursor and selection styles from textmate.css. */\\n.ace-github .ace_gutter {\\n background: #e8e8e8;\\n color: #AAA;\\n}\\n\\n.ace-github {\\n background: #fff;\\n color: #000;\\n}\\n\\n.ace-github .ace_keyword {\\n font-weight: bold;\\n}\\n\\n.ace-github .ace_string {\\n color: #D14;\\n}\\n\\n.ace-github .ace_variable.ace_class {\\n color: teal;\\n}\\n\\n.ace-github .ace_constant.ace_numeric {\\n color: #099;\\n}\\n\\n.ace-github .ace_constant.ace_buildin {\\n color: #0086B3;\\n}\\n\\n.ace-github .ace_support.ace_function {\\n color: #0086B3;\\n}\\n\\n.ace-github .ace_comment {\\n color: #998;\\n font-style: italic;\\n}\\n\\n.ace-github .ace_variable.ace_language {\\n color: #0086B3;\\n}\\n\\n.ace-github .ace_paren {\\n font-weight: bold;\\n}\\n\\n.ace-github .ace_boolean {\\n font-weight: bold;\\n}\\n\\n.ace-github .ace_string.ace_regexp {\\n color: #009926;\\n font-weight: normal;\\n}\\n\\n.ace-github .ace_variable.ace_instance {\\n color: teal;\\n}\\n\\n.ace-github .ace_constant.ace_language {\\n font-weight: bold;\\n}\\n\\n.ace-github .ace_cursor {\\n color: black;\\n}\\n\\n.ace-github.ace_focus .ace_marker-layer .ace_active-line {\\n background: rgb(255, 255, 204);\\n}\\n.ace-github .ace_marker-layer .ace_active-line {\\n background: rgb(245, 245, 245);\\n}\\n\\n.ace-github .ace_marker-layer .ace_selection {\\n background: rgb(181, 213, 255);\\n}\\n\\n.ace-github.ace_multiselect .ace_selection.ace_start {\\n box-shadow: 0 0 3px 0px white;\\n}\\n/* bold keywords cause cursor issues for some fonts */\\n/* this disables bold style for editor and keeps for static highlighter */\\n.ace-github.ace_nobold .ace_line > span {\\n font-weight: normal !important;\\n}\\n\\n.ace-github .ace_marker-layer .ace_step {\\n background: rgb(252, 255, 0);\\n}\\n\\n.ace-github .ace_marker-layer .ace_stack {\\n background: rgb(164, 229, 101);\\n}\\n\\n.ace-github .ace_marker-layer .ace_bracket {\\n margin: -1px 0 0 -1px;\\n border: 1px solid rgb(192, 192, 192);\\n}\\n\\n.ace-github .ace_gutter-active-line {\\n background-color : rgba(0, 0, 0, 0.07);\\n}\\n\\n.ace-github .ace_marker-layer .ace_selected-word {\\n background: rgb(250, 250, 255);\\n border: 1px solid rgb(200, 200, 250);\\n}\\n\\n.ace-github .ace_invisible {\\n color: #BFBFBF\\n}\\n\\n.ace-github .ace_print-margin {\\n width: 1px;\\n background: #e8e8e8;\\n}\\n\\n.ace-github .ace_indent-guide {\\n background: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==\\\") right repeat-y;\\n}\\n\\n.ace-github .ace_indent-guide-active {\\n background: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAAZSURBVHjaYvj///9/hivKyv8BAAAA//8DACLqBhbvk+/eAAAAAElFTkSuQmCC\\\") right repeat-y;\\n}\\n\";\n\n});\n\nace.define(\"ace/theme/github\",[\"require\",\"exports\",\"module\",\"ace/theme/github-css\",\"ace/lib/dom\"], function(require, exports, module){exports.isDark = false;\nexports.cssClass = \"ace-github\";\nexports.cssText = require(\"./github-css\");\nvar dom = require(\"../lib/dom\");\ndom.importCssString(exports.cssText, exports.cssClass, false);\n\n}); (function() {\n ace.require([\"ace/theme/github\"], function(m) {\n if (typeof module == \"object\" && typeof exports == \"object\" && module) {\n module.exports = m;\n }\n });\n })();\n ","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.flatpickr-calendar{background:transparent;opacity:0;display:none;text-align:center;visibility:hidden;padding:0;-webkit-animation:none;animation:none;direction:ltr;border:0;font-size:14px;line-height:24px;border-radius:5px;position:absolute;width:307.875px;-webkit-box-sizing:border-box;box-sizing:border-box;-ms-touch-action:manipulation;touch-action:manipulation;background:#fff;-webkit-box-shadow:1px 0 0 #e6e6e6,-1px 0 0 #e6e6e6,0 1px 0 #e6e6e6,0 -1px 0 #e6e6e6,0 3px 13px rgba(0,0,0,0.08);box-shadow:1px 0 0 #e6e6e6,-1px 0 0 #e6e6e6,0 1px 0 #e6e6e6,0 -1px 0 #e6e6e6,0 3px 13px rgba(0,0,0,0.08)}.flatpickr-calendar.open,.flatpickr-calendar.inline{opacity:1;max-height:640px;visibility:visible}.flatpickr-calendar.open{display:inline-block;z-index:99999}.flatpickr-calendar.animate.open{-webkit-animation:fpFadeInDown 300ms cubic-bezier(.23,1,.32,1);animation:fpFadeInDown 300ms cubic-bezier(.23,1,.32,1)}.flatpickr-calendar.inline{display:block;position:relative;top:2px}.flatpickr-calendar.static{position:absolute;top:calc(100% + 2px)}.flatpickr-calendar.static.open{z-index:999;display:block}.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+1) .flatpickr-day.inRange:nth-child(7n+7){-webkit-box-shadow:none !important;box-shadow:none !important}.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+2) .flatpickr-day.inRange:nth-child(7n+1){-webkit-box-shadow:-2px 0 0 #e6e6e6,5px 0 0 #e6e6e6;box-shadow:-2px 0 0 #e6e6e6,5px 0 0 #e6e6e6}.flatpickr-calendar .hasWeeks .dayContainer,.flatpickr-calendar .hasTime .dayContainer{border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.flatpickr-calendar .hasWeeks .dayContainer{border-left:0}.flatpickr-calendar.hasTime .flatpickr-time{height:40px;border-top:1px solid #e6e6e6}.flatpickr-calendar.noCalendar.hasTime .flatpickr-time{height:auto}.flatpickr-calendar:before,.flatpickr-calendar:after{position:absolute;display:block;pointer-events:none;border:solid transparent;content:'';height:0;width:0;left:22px}.flatpickr-calendar.rightMost:before,.flatpickr-calendar.arrowRight:before,.flatpickr-calendar.rightMost:after,.flatpickr-calendar.arrowRight:after{left:auto;right:22px}.flatpickr-calendar.arrowCenter:before,.flatpickr-calendar.arrowCenter:after{left:50%;right:50%}.flatpickr-calendar:before{border-width:5px;margin:0 -5px}.flatpickr-calendar:after{border-width:4px;margin:0 -4px}.flatpickr-calendar.arrowTop:before,.flatpickr-calendar.arrowTop:after{bottom:100%}.flatpickr-calendar.arrowTop:before{border-bottom-color:#e6e6e6}.flatpickr-calendar.arrowTop:after{border-bottom-color:#fff}.flatpickr-calendar.arrowBottom:before,.flatpickr-calendar.arrowBottom:after{top:100%}.flatpickr-calendar.arrowBottom:before{border-top-color:#e6e6e6}.flatpickr-calendar.arrowBottom:after{border-top-color:#fff}.flatpickr-calendar:focus{outline:0}.flatpickr-wrapper{position:relative;display:inline-block}.flatpickr-months{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.flatpickr-months .flatpickr-month{background:transparent;color:rgba(0,0,0,0.9);fill:rgba(0,0,0,0.9);height:34px;line-height:1;text-align:center;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:hidden;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}.flatpickr-months .flatpickr-prev-month,.flatpickr-months .flatpickr-next-month{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;text-decoration:none;cursor:pointer;position:absolute;top:0;height:34px;padding:10px;z-index:3;color:rgba(0,0,0,0.9);fill:rgba(0,0,0,0.9)}.flatpickr-months .flatpickr-prev-month.flatpickr-disabled,.flatpickr-months .flatpickr-next-month.flatpickr-disabled{display:none}.flatpickr-months .flatpickr-prev-month i,.flatpickr-months .flatpickr-next-month i{position:relative}.flatpickr-months .flatpickr-prev-month.flatpickr-prev-month,.flatpickr-months .flatpickr-next-month.flatpickr-prev-month{/*\n /*rtl:begin:ignore*/left:0/*\n /*rtl:end:ignore*/}/*\n /*rtl:begin:ignore*/\n/*\n /*rtl:end:ignore*/\n.flatpickr-months .flatpickr-prev-month.flatpickr-next-month,.flatpickr-months .flatpickr-next-month.flatpickr-next-month{/*\n /*rtl:begin:ignore*/right:0/*\n /*rtl:end:ignore*/}/*\n /*rtl:begin:ignore*/\n/*\n /*rtl:end:ignore*/\n.flatpickr-months .flatpickr-prev-month:hover,.flatpickr-months .flatpickr-next-month:hover{color:#959ea9}.flatpickr-months .flatpickr-prev-month:hover svg,.flatpickr-months .flatpickr-next-month:hover svg{fill:#f64747}.flatpickr-months .flatpickr-prev-month svg,.flatpickr-months .flatpickr-next-month svg{width:14px;height:14px}.flatpickr-months .flatpickr-prev-month svg path,.flatpickr-months .flatpickr-next-month svg path{-webkit-transition:fill .1s;transition:fill .1s;fill:inherit}.numInputWrapper{position:relative;height:auto}.numInputWrapper input,.numInputWrapper span{display:inline-block}.numInputWrapper input{width:100%}.numInputWrapper input::-ms-clear{display:none}.numInputWrapper input::-webkit-outer-spin-button,.numInputWrapper input::-webkit-inner-spin-button{margin:0;-webkit-appearance:none}.numInputWrapper span{position:absolute;right:0;width:14px;padding:0 4px 0 2px;height:50%;line-height:50%;opacity:0;cursor:pointer;border:1px solid rgba(57,57,57,0.15);-webkit-box-sizing:border-box;box-sizing:border-box}.numInputWrapper span:hover{background:rgba(0,0,0,0.1)}.numInputWrapper span:active{background:rgba(0,0,0,0.2)}.numInputWrapper span:after{display:block;content:\"\";position:absolute}.numInputWrapper span.arrowUp{top:0;border-bottom:0}.numInputWrapper span.arrowUp:after{border-left:4px solid transparent;border-right:4px solid transparent;border-bottom:4px solid rgba(57,57,57,0.6);top:26%}.numInputWrapper span.arrowDown{top:50%}.numInputWrapper span.arrowDown:after{border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px solid rgba(57,57,57,0.6);top:40%}.numInputWrapper span svg{width:inherit;height:auto}.numInputWrapper span svg path{fill:rgba(0,0,0,0.5)}.numInputWrapper:hover{background:rgba(0,0,0,0.05)}.numInputWrapper:hover span{opacity:1}.flatpickr-current-month{font-size:135%;line-height:inherit;font-weight:300;color:inherit;position:absolute;width:75%;left:12.5%;padding:7.48px 0 0 0;line-height:1;height:34px;display:inline-block;text-align:center;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.flatpickr-current-month span.cur-month{font-family:inherit;font-weight:700;color:inherit;display:inline-block;margin-left:.5ch;padding:0}.flatpickr-current-month span.cur-month:hover{background:rgba(0,0,0,0.05)}.flatpickr-current-month .numInputWrapper{width:6ch;width:7ch\\\\0;display:inline-block}.flatpickr-current-month .numInputWrapper span.arrowUp:after{border-bottom-color:rgba(0,0,0,0.9)}.flatpickr-current-month .numInputWrapper span.arrowDown:after{border-top-color:rgba(0,0,0,0.9)}.flatpickr-current-month input.cur-year{background:transparent;-webkit-box-sizing:border-box;box-sizing:border-box;color:inherit;cursor:text;padding:0 0 0 .5ch;margin:0;display:inline-block;font-size:inherit;font-family:inherit;font-weight:300;line-height:inherit;height:auto;border:0;border-radius:0;vertical-align:initial;-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.flatpickr-current-month input.cur-year:focus{outline:0}.flatpickr-current-month input.cur-year[disabled],.flatpickr-current-month input.cur-year[disabled]:hover{font-size:100%;color:rgba(0,0,0,0.5);background:transparent;pointer-events:none}.flatpickr-current-month .flatpickr-monthDropdown-months{appearance:menulist;background:transparent;border:none;border-radius:0;box-sizing:border-box;color:inherit;cursor:pointer;font-size:inherit;font-family:inherit;font-weight:300;height:auto;line-height:inherit;margin:-1px 0 0 0;outline:none;padding:0 0 0 .5ch;position:relative;vertical-align:initial;-webkit-box-sizing:border-box;-webkit-appearance:menulist;-moz-appearance:menulist;width:auto}.flatpickr-current-month .flatpickr-monthDropdown-months:focus,.flatpickr-current-month .flatpickr-monthDropdown-months:active{outline:none}.flatpickr-current-month .flatpickr-monthDropdown-months:hover{background:rgba(0,0,0,0.05)}.flatpickr-current-month .flatpickr-monthDropdown-months .flatpickr-monthDropdown-month{background-color:transparent;outline:none;padding:0}.flatpickr-weekdays{background:transparent;text-align:center;overflow:hidden;width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;height:28px}.flatpickr-weekdays .flatpickr-weekdaycontainer{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}span.flatpickr-weekday{cursor:default;font-size:90%;background:transparent;color:rgba(0,0,0,0.54);line-height:1;margin:0;text-align:center;display:block;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;font-weight:bolder}.dayContainer,.flatpickr-weeks{padding:1px 0 0 0}.flatpickr-days{position:relative;overflow:hidden;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:flex-start;width:307.875px}.flatpickr-days:focus{outline:0}.dayContainer{padding:0;outline:0;text-align:left;width:307.875px;min-width:307.875px;max-width:307.875px;-webkit-box-sizing:border-box;box-sizing:border-box;display:inline-block;display:-ms-flexbox;display:-webkit-box;display:-webkit-flex;display:flex;-webkit-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-wrap:wrap;-ms-flex-pack:justify;-webkit-justify-content:space-around;justify-content:space-around;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}.dayContainer + .dayContainer{-webkit-box-shadow:-1px 0 0 #e6e6e6;box-shadow:-1px 0 0 #e6e6e6}.flatpickr-day{background:none;border:1px solid transparent;border-radius:150px;-webkit-box-sizing:border-box;box-sizing:border-box;color:#393939;cursor:pointer;font-weight:400;width:14.2857143%;-webkit-flex-basis:14.2857143%;-ms-flex-preferred-size:14.2857143%;flex-basis:14.2857143%;max-width:39px;height:39px;line-height:39px;margin:0;display:inline-block;position:relative;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;text-align:center}.flatpickr-day.inRange,.flatpickr-day.prevMonthDay.inRange,.flatpickr-day.nextMonthDay.inRange,.flatpickr-day.today.inRange,.flatpickr-day.prevMonthDay.today.inRange,.flatpickr-day.nextMonthDay.today.inRange,.flatpickr-day:hover,.flatpickr-day.prevMonthDay:hover,.flatpickr-day.nextMonthDay:hover,.flatpickr-day:focus,.flatpickr-day.prevMonthDay:focus,.flatpickr-day.nextMonthDay:focus{cursor:pointer;outline:0;background:#e6e6e6;border-color:#e6e6e6}.flatpickr-day.today{border-color:#959ea9}.flatpickr-day.today:hover,.flatpickr-day.today:focus{border-color:#959ea9;background:#959ea9;color:#fff}.flatpickr-day.selected,.flatpickr-day.startRange,.flatpickr-day.endRange,.flatpickr-day.selected.inRange,.flatpickr-day.startRange.inRange,.flatpickr-day.endRange.inRange,.flatpickr-day.selected:focus,.flatpickr-day.startRange:focus,.flatpickr-day.endRange:focus,.flatpickr-day.selected:hover,.flatpickr-day.startRange:hover,.flatpickr-day.endRange:hover,.flatpickr-day.selected.prevMonthDay,.flatpickr-day.startRange.prevMonthDay,.flatpickr-day.endRange.prevMonthDay,.flatpickr-day.selected.nextMonthDay,.flatpickr-day.startRange.nextMonthDay,.flatpickr-day.endRange.nextMonthDay{background:#569ff7;-webkit-box-shadow:none;box-shadow:none;color:#fff;border-color:#569ff7}.flatpickr-day.selected.startRange,.flatpickr-day.startRange.startRange,.flatpickr-day.endRange.startRange{border-radius:50px 0 0 50px}.flatpickr-day.selected.endRange,.flatpickr-day.startRange.endRange,.flatpickr-day.endRange.endRange{border-radius:0 50px 50px 0}.flatpickr-day.selected.startRange + .endRange:not(:nth-child(7n+1)),.flatpickr-day.startRange.startRange + .endRange:not(:nth-child(7n+1)),.flatpickr-day.endRange.startRange + .endRange:not(:nth-child(7n+1)){-webkit-box-shadow:-10px 0 0 #569ff7;box-shadow:-10px 0 0 #569ff7}.flatpickr-day.selected.startRange.endRange,.flatpickr-day.startRange.startRange.endRange,.flatpickr-day.endRange.startRange.endRange{border-radius:50px}.flatpickr-day.inRange{border-radius:0;-webkit-box-shadow:-5px 0 0 #e6e6e6,5px 0 0 #e6e6e6;box-shadow:-5px 0 0 #e6e6e6,5px 0 0 #e6e6e6}.flatpickr-day.flatpickr-disabled,.flatpickr-day.flatpickr-disabled:hover,.flatpickr-day.prevMonthDay,.flatpickr-day.nextMonthDay,.flatpickr-day.notAllowed,.flatpickr-day.notAllowed.prevMonthDay,.flatpickr-day.notAllowed.nextMonthDay{color:rgba(57,57,57,0.3);background:transparent;border-color:transparent;cursor:default}.flatpickr-day.flatpickr-disabled,.flatpickr-day.flatpickr-disabled:hover{cursor:not-allowed;color:rgba(57,57,57,0.1)}.flatpickr-day.week.selected{border-radius:0;-webkit-box-shadow:-5px 0 0 #569ff7,5px 0 0 #569ff7;box-shadow:-5px 0 0 #569ff7,5px 0 0 #569ff7}.flatpickr-day.hidden{visibility:hidden}.rangeMode .flatpickr-day{margin-top:1px}.flatpickr-weekwrapper{float:left}.flatpickr-weekwrapper .flatpickr-weeks{padding:0 12px;-webkit-box-shadow:1px 0 0 #e6e6e6;box-shadow:1px 0 0 #e6e6e6}.flatpickr-weekwrapper .flatpickr-weekday{float:none;width:100%;line-height:28px}.flatpickr-weekwrapper span.flatpickr-day,.flatpickr-weekwrapper span.flatpickr-day:hover{display:block;width:100%;max-width:none;color:rgba(57,57,57,0.3);background:transparent;cursor:default;border:none}.flatpickr-innerContainer{display:block;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden}.flatpickr-rContainer{display:inline-block;padding:0;-webkit-box-sizing:border-box;box-sizing:border-box}.flatpickr-time{text-align:center;outline:0;display:block;height:0;line-height:40px;max-height:40px;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.flatpickr-time:after{content:\"\";display:table;clear:both}.flatpickr-time .numInputWrapper{-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;width:40%;height:40px;float:left}.flatpickr-time .numInputWrapper span.arrowUp:after{border-bottom-color:#393939}.flatpickr-time .numInputWrapper span.arrowDown:after{border-top-color:#393939}.flatpickr-time.hasSeconds .numInputWrapper{width:26%}.flatpickr-time.time24hr .numInputWrapper{width:49%}.flatpickr-time input{background:transparent;-webkit-box-shadow:none;box-shadow:none;border:0;border-radius:0;text-align:center;margin:0;padding:0;height:inherit;line-height:inherit;color:#393939;font-size:14px;position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.flatpickr-time input.flatpickr-hour{font-weight:bold}.flatpickr-time input.flatpickr-minute,.flatpickr-time input.flatpickr-second{font-weight:400}.flatpickr-time input:focus{outline:0;border:0}.flatpickr-time .flatpickr-time-separator,.flatpickr-time .flatpickr-am-pm{height:inherit;float:left;line-height:inherit;color:#393939;font-weight:bold;width:2%;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-align-self:center;-ms-flex-item-align:center;align-self:center}.flatpickr-time .flatpickr-am-pm{outline:0;width:18%;cursor:pointer;text-align:center;font-weight:400}.flatpickr-time input:hover,.flatpickr-time .flatpickr-am-pm:hover,.flatpickr-time input:focus,.flatpickr-time .flatpickr-am-pm:focus{background:#eee}.flatpickr-input[readonly]{cursor:pointer}@-webkit-keyframes fpFadeInDown{from{opacity:0;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@keyframes fpFadeInDown{from{opacity:0;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/flatpickr/dist/flatpickr.min.css\"],\"names\":[],\"mappings\":\"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\",\"sourcesContent\":[\".flatpickr-calendar{background:transparent;opacity:0;display:none;text-align:center;visibility:hidden;padding:0;-webkit-animation:none;animation:none;direction:ltr;border:0;font-size:14px;line-height:24px;border-radius:5px;position:absolute;width:307.875px;-webkit-box-sizing:border-box;box-sizing:border-box;-ms-touch-action:manipulation;touch-action:manipulation;background:#fff;-webkit-box-shadow:1px 0 0 #e6e6e6,-1px 0 0 #e6e6e6,0 1px 0 #e6e6e6,0 -1px 0 #e6e6e6,0 3px 13px rgba(0,0,0,0.08);box-shadow:1px 0 0 #e6e6e6,-1px 0 0 #e6e6e6,0 1px 0 #e6e6e6,0 -1px 0 #e6e6e6,0 3px 13px rgba(0,0,0,0.08)}.flatpickr-calendar.open,.flatpickr-calendar.inline{opacity:1;max-height:640px;visibility:visible}.flatpickr-calendar.open{display:inline-block;z-index:99999}.flatpickr-calendar.animate.open{-webkit-animation:fpFadeInDown 300ms cubic-bezier(.23,1,.32,1);animation:fpFadeInDown 300ms cubic-bezier(.23,1,.32,1)}.flatpickr-calendar.inline{display:block;position:relative;top:2px}.flatpickr-calendar.static{position:absolute;top:calc(100% + 2px)}.flatpickr-calendar.static.open{z-index:999;display:block}.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+1) .flatpickr-day.inRange:nth-child(7n+7){-webkit-box-shadow:none !important;box-shadow:none !important}.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+2) .flatpickr-day.inRange:nth-child(7n+1){-webkit-box-shadow:-2px 0 0 #e6e6e6,5px 0 0 #e6e6e6;box-shadow:-2px 0 0 #e6e6e6,5px 0 0 #e6e6e6}.flatpickr-calendar .hasWeeks .dayContainer,.flatpickr-calendar .hasTime .dayContainer{border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.flatpickr-calendar .hasWeeks .dayContainer{border-left:0}.flatpickr-calendar.hasTime .flatpickr-time{height:40px;border-top:1px solid #e6e6e6}.flatpickr-calendar.noCalendar.hasTime .flatpickr-time{height:auto}.flatpickr-calendar:before,.flatpickr-calendar:after{position:absolute;display:block;pointer-events:none;border:solid transparent;content:'';height:0;width:0;left:22px}.flatpickr-calendar.rightMost:before,.flatpickr-calendar.arrowRight:before,.flatpickr-calendar.rightMost:after,.flatpickr-calendar.arrowRight:after{left:auto;right:22px}.flatpickr-calendar.arrowCenter:before,.flatpickr-calendar.arrowCenter:after{left:50%;right:50%}.flatpickr-calendar:before{border-width:5px;margin:0 -5px}.flatpickr-calendar:after{border-width:4px;margin:0 -4px}.flatpickr-calendar.arrowTop:before,.flatpickr-calendar.arrowTop:after{bottom:100%}.flatpickr-calendar.arrowTop:before{border-bottom-color:#e6e6e6}.flatpickr-calendar.arrowTop:after{border-bottom-color:#fff}.flatpickr-calendar.arrowBottom:before,.flatpickr-calendar.arrowBottom:after{top:100%}.flatpickr-calendar.arrowBottom:before{border-top-color:#e6e6e6}.flatpickr-calendar.arrowBottom:after{border-top-color:#fff}.flatpickr-calendar:focus{outline:0}.flatpickr-wrapper{position:relative;display:inline-block}.flatpickr-months{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.flatpickr-months .flatpickr-month{background:transparent;color:rgba(0,0,0,0.9);fill:rgba(0,0,0,0.9);height:34px;line-height:1;text-align:center;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:hidden;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}.flatpickr-months .flatpickr-prev-month,.flatpickr-months .flatpickr-next-month{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;text-decoration:none;cursor:pointer;position:absolute;top:0;height:34px;padding:10px;z-index:3;color:rgba(0,0,0,0.9);fill:rgba(0,0,0,0.9)}.flatpickr-months .flatpickr-prev-month.flatpickr-disabled,.flatpickr-months .flatpickr-next-month.flatpickr-disabled{display:none}.flatpickr-months .flatpickr-prev-month i,.flatpickr-months .flatpickr-next-month i{position:relative}.flatpickr-months .flatpickr-prev-month.flatpickr-prev-month,.flatpickr-months .flatpickr-next-month.flatpickr-prev-month{/*\\n /*rtl:begin:ignore*/left:0/*\\n /*rtl:end:ignore*/}/*\\n /*rtl:begin:ignore*/\\n/*\\n /*rtl:end:ignore*/\\n.flatpickr-months .flatpickr-prev-month.flatpickr-next-month,.flatpickr-months .flatpickr-next-month.flatpickr-next-month{/*\\n /*rtl:begin:ignore*/right:0/*\\n /*rtl:end:ignore*/}/*\\n /*rtl:begin:ignore*/\\n/*\\n /*rtl:end:ignore*/\\n.flatpickr-months .flatpickr-prev-month:hover,.flatpickr-months .flatpickr-next-month:hover{color:#959ea9}.flatpickr-months .flatpickr-prev-month:hover svg,.flatpickr-months .flatpickr-next-month:hover svg{fill:#f64747}.flatpickr-months .flatpickr-prev-month svg,.flatpickr-months .flatpickr-next-month svg{width:14px;height:14px}.flatpickr-months .flatpickr-prev-month svg path,.flatpickr-months .flatpickr-next-month svg path{-webkit-transition:fill .1s;transition:fill .1s;fill:inherit}.numInputWrapper{position:relative;height:auto}.numInputWrapper input,.numInputWrapper span{display:inline-block}.numInputWrapper input{width:100%}.numInputWrapper input::-ms-clear{display:none}.numInputWrapper input::-webkit-outer-spin-button,.numInputWrapper input::-webkit-inner-spin-button{margin:0;-webkit-appearance:none}.numInputWrapper span{position:absolute;right:0;width:14px;padding:0 4px 0 2px;height:50%;line-height:50%;opacity:0;cursor:pointer;border:1px solid rgba(57,57,57,0.15);-webkit-box-sizing:border-box;box-sizing:border-box}.numInputWrapper span:hover{background:rgba(0,0,0,0.1)}.numInputWrapper span:active{background:rgba(0,0,0,0.2)}.numInputWrapper span:after{display:block;content:\\\"\\\";position:absolute}.numInputWrapper span.arrowUp{top:0;border-bottom:0}.numInputWrapper span.arrowUp:after{border-left:4px solid transparent;border-right:4px solid transparent;border-bottom:4px solid rgba(57,57,57,0.6);top:26%}.numInputWrapper span.arrowDown{top:50%}.numInputWrapper span.arrowDown:after{border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px solid rgba(57,57,57,0.6);top:40%}.numInputWrapper span svg{width:inherit;height:auto}.numInputWrapper span svg path{fill:rgba(0,0,0,0.5)}.numInputWrapper:hover{background:rgba(0,0,0,0.05)}.numInputWrapper:hover span{opacity:1}.flatpickr-current-month{font-size:135%;line-height:inherit;font-weight:300;color:inherit;position:absolute;width:75%;left:12.5%;padding:7.48px 0 0 0;line-height:1;height:34px;display:inline-block;text-align:center;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.flatpickr-current-month span.cur-month{font-family:inherit;font-weight:700;color:inherit;display:inline-block;margin-left:.5ch;padding:0}.flatpickr-current-month span.cur-month:hover{background:rgba(0,0,0,0.05)}.flatpickr-current-month .numInputWrapper{width:6ch;width:7ch\\\\0;display:inline-block}.flatpickr-current-month .numInputWrapper span.arrowUp:after{border-bottom-color:rgba(0,0,0,0.9)}.flatpickr-current-month .numInputWrapper span.arrowDown:after{border-top-color:rgba(0,0,0,0.9)}.flatpickr-current-month input.cur-year{background:transparent;-webkit-box-sizing:border-box;box-sizing:border-box;color:inherit;cursor:text;padding:0 0 0 .5ch;margin:0;display:inline-block;font-size:inherit;font-family:inherit;font-weight:300;line-height:inherit;height:auto;border:0;border-radius:0;vertical-align:initial;-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.flatpickr-current-month input.cur-year:focus{outline:0}.flatpickr-current-month input.cur-year[disabled],.flatpickr-current-month input.cur-year[disabled]:hover{font-size:100%;color:rgba(0,0,0,0.5);background:transparent;pointer-events:none}.flatpickr-current-month .flatpickr-monthDropdown-months{appearance:menulist;background:transparent;border:none;border-radius:0;box-sizing:border-box;color:inherit;cursor:pointer;font-size:inherit;font-family:inherit;font-weight:300;height:auto;line-height:inherit;margin:-1px 0 0 0;outline:none;padding:0 0 0 .5ch;position:relative;vertical-align:initial;-webkit-box-sizing:border-box;-webkit-appearance:menulist;-moz-appearance:menulist;width:auto}.flatpickr-current-month .flatpickr-monthDropdown-months:focus,.flatpickr-current-month .flatpickr-monthDropdown-months:active{outline:none}.flatpickr-current-month .flatpickr-monthDropdown-months:hover{background:rgba(0,0,0,0.05)}.flatpickr-current-month .flatpickr-monthDropdown-months .flatpickr-monthDropdown-month{background-color:transparent;outline:none;padding:0}.flatpickr-weekdays{background:transparent;text-align:center;overflow:hidden;width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;height:28px}.flatpickr-weekdays .flatpickr-weekdaycontainer{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}span.flatpickr-weekday{cursor:default;font-size:90%;background:transparent;color:rgba(0,0,0,0.54);line-height:1;margin:0;text-align:center;display:block;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;font-weight:bolder}.dayContainer,.flatpickr-weeks{padding:1px 0 0 0}.flatpickr-days{position:relative;overflow:hidden;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:flex-start;width:307.875px}.flatpickr-days:focus{outline:0}.dayContainer{padding:0;outline:0;text-align:left;width:307.875px;min-width:307.875px;max-width:307.875px;-webkit-box-sizing:border-box;box-sizing:border-box;display:inline-block;display:-ms-flexbox;display:-webkit-box;display:-webkit-flex;display:flex;-webkit-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-wrap:wrap;-ms-flex-pack:justify;-webkit-justify-content:space-around;justify-content:space-around;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}.dayContainer + .dayContainer{-webkit-box-shadow:-1px 0 0 #e6e6e6;box-shadow:-1px 0 0 #e6e6e6}.flatpickr-day{background:none;border:1px solid transparent;border-radius:150px;-webkit-box-sizing:border-box;box-sizing:border-box;color:#393939;cursor:pointer;font-weight:400;width:14.2857143%;-webkit-flex-basis:14.2857143%;-ms-flex-preferred-size:14.2857143%;flex-basis:14.2857143%;max-width:39px;height:39px;line-height:39px;margin:0;display:inline-block;position:relative;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;text-align:center}.flatpickr-day.inRange,.flatpickr-day.prevMonthDay.inRange,.flatpickr-day.nextMonthDay.inRange,.flatpickr-day.today.inRange,.flatpickr-day.prevMonthDay.today.inRange,.flatpickr-day.nextMonthDay.today.inRange,.flatpickr-day:hover,.flatpickr-day.prevMonthDay:hover,.flatpickr-day.nextMonthDay:hover,.flatpickr-day:focus,.flatpickr-day.prevMonthDay:focus,.flatpickr-day.nextMonthDay:focus{cursor:pointer;outline:0;background:#e6e6e6;border-color:#e6e6e6}.flatpickr-day.today{border-color:#959ea9}.flatpickr-day.today:hover,.flatpickr-day.today:focus{border-color:#959ea9;background:#959ea9;color:#fff}.flatpickr-day.selected,.flatpickr-day.startRange,.flatpickr-day.endRange,.flatpickr-day.selected.inRange,.flatpickr-day.startRange.inRange,.flatpickr-day.endRange.inRange,.flatpickr-day.selected:focus,.flatpickr-day.startRange:focus,.flatpickr-day.endRange:focus,.flatpickr-day.selected:hover,.flatpickr-day.startRange:hover,.flatpickr-day.endRange:hover,.flatpickr-day.selected.prevMonthDay,.flatpickr-day.startRange.prevMonthDay,.flatpickr-day.endRange.prevMonthDay,.flatpickr-day.selected.nextMonthDay,.flatpickr-day.startRange.nextMonthDay,.flatpickr-day.endRange.nextMonthDay{background:#569ff7;-webkit-box-shadow:none;box-shadow:none;color:#fff;border-color:#569ff7}.flatpickr-day.selected.startRange,.flatpickr-day.startRange.startRange,.flatpickr-day.endRange.startRange{border-radius:50px 0 0 50px}.flatpickr-day.selected.endRange,.flatpickr-day.startRange.endRange,.flatpickr-day.endRange.endRange{border-radius:0 50px 50px 0}.flatpickr-day.selected.startRange + .endRange:not(:nth-child(7n+1)),.flatpickr-day.startRange.startRange + .endRange:not(:nth-child(7n+1)),.flatpickr-day.endRange.startRange + .endRange:not(:nth-child(7n+1)){-webkit-box-shadow:-10px 0 0 #569ff7;box-shadow:-10px 0 0 #569ff7}.flatpickr-day.selected.startRange.endRange,.flatpickr-day.startRange.startRange.endRange,.flatpickr-day.endRange.startRange.endRange{border-radius:50px}.flatpickr-day.inRange{border-radius:0;-webkit-box-shadow:-5px 0 0 #e6e6e6,5px 0 0 #e6e6e6;box-shadow:-5px 0 0 #e6e6e6,5px 0 0 #e6e6e6}.flatpickr-day.flatpickr-disabled,.flatpickr-day.flatpickr-disabled:hover,.flatpickr-day.prevMonthDay,.flatpickr-day.nextMonthDay,.flatpickr-day.notAllowed,.flatpickr-day.notAllowed.prevMonthDay,.flatpickr-day.notAllowed.nextMonthDay{color:rgba(57,57,57,0.3);background:transparent;border-color:transparent;cursor:default}.flatpickr-day.flatpickr-disabled,.flatpickr-day.flatpickr-disabled:hover{cursor:not-allowed;color:rgba(57,57,57,0.1)}.flatpickr-day.week.selected{border-radius:0;-webkit-box-shadow:-5px 0 0 #569ff7,5px 0 0 #569ff7;box-shadow:-5px 0 0 #569ff7,5px 0 0 #569ff7}.flatpickr-day.hidden{visibility:hidden}.rangeMode .flatpickr-day{margin-top:1px}.flatpickr-weekwrapper{float:left}.flatpickr-weekwrapper .flatpickr-weeks{padding:0 12px;-webkit-box-shadow:1px 0 0 #e6e6e6;box-shadow:1px 0 0 #e6e6e6}.flatpickr-weekwrapper .flatpickr-weekday{float:none;width:100%;line-height:28px}.flatpickr-weekwrapper span.flatpickr-day,.flatpickr-weekwrapper span.flatpickr-day:hover{display:block;width:100%;max-width:none;color:rgba(57,57,57,0.3);background:transparent;cursor:default;border:none}.flatpickr-innerContainer{display:block;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden}.flatpickr-rContainer{display:inline-block;padding:0;-webkit-box-sizing:border-box;box-sizing:border-box}.flatpickr-time{text-align:center;outline:0;display:block;height:0;line-height:40px;max-height:40px;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.flatpickr-time:after{content:\\\"\\\";display:table;clear:both}.flatpickr-time .numInputWrapper{-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;width:40%;height:40px;float:left}.flatpickr-time .numInputWrapper span.arrowUp:after{border-bottom-color:#393939}.flatpickr-time .numInputWrapper span.arrowDown:after{border-top-color:#393939}.flatpickr-time.hasSeconds .numInputWrapper{width:26%}.flatpickr-time.time24hr .numInputWrapper{width:49%}.flatpickr-time input{background:transparent;-webkit-box-shadow:none;box-shadow:none;border:0;border-radius:0;text-align:center;margin:0;padding:0;height:inherit;line-height:inherit;color:#393939;font-size:14px;position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.flatpickr-time input.flatpickr-hour{font-weight:bold}.flatpickr-time input.flatpickr-minute,.flatpickr-time input.flatpickr-second{font-weight:400}.flatpickr-time input:focus{outline:0;border:0}.flatpickr-time .flatpickr-time-separator,.flatpickr-time .flatpickr-am-pm{height:inherit;float:left;line-height:inherit;color:#393939;font-weight:bold;width:2%;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-align-self:center;-ms-flex-item-align:center;align-self:center}.flatpickr-time .flatpickr-am-pm{outline:0;width:18%;cursor:pointer;text-align:center;font-weight:400}.flatpickr-time input:hover,.flatpickr-time .flatpickr-am-pm:hover,.flatpickr-time input:focus,.flatpickr-time .flatpickr-am-pm:focus{background:#eee}.flatpickr-input[readonly]{cursor:pointer}@-webkit-keyframes fpFadeInDown{from{opacity:0;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@keyframes fpFadeInDown{from{opacity:0;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","\"use strict\";\n\n/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n*/\nmodule.exports = function (cssWithMappingToString) {\n var list = [];\n\n // return the list of modules as css string\n list.toString = function toString() {\n return this.map(function (item) {\n var content = \"\";\n var needLayer = typeof item[5] !== \"undefined\";\n if (item[4]) {\n content += \"@supports (\".concat(item[4], \") {\");\n }\n if (item[2]) {\n content += \"@media \".concat(item[2], \" {\");\n }\n if (needLayer) {\n content += \"@layer\".concat(item[5].length > 0 ? \" \".concat(item[5]) : \"\", \" {\");\n }\n content += cssWithMappingToString(item);\n if (needLayer) {\n content += \"}\";\n }\n if (item[2]) {\n content += \"}\";\n }\n if (item[4]) {\n content += \"}\";\n }\n return content;\n }).join(\"\");\n };\n\n // import a list of modules into the list\n list.i = function i(modules, media, dedupe, supports, layer) {\n if (typeof modules === \"string\") {\n modules = [[null, modules, undefined]];\n }\n var alreadyImportedModules = {};\n if (dedupe) {\n for (var k = 0; k < this.length; k++) {\n var id = this[k][0];\n if (id != null) {\n alreadyImportedModules[id] = true;\n }\n }\n }\n for (var _k = 0; _k < modules.length; _k++) {\n var item = [].concat(modules[_k]);\n if (dedupe && alreadyImportedModules[item[0]]) {\n continue;\n }\n if (typeof layer !== \"undefined\") {\n if (typeof item[5] === \"undefined\") {\n item[5] = layer;\n } else {\n item[1] = \"@layer\".concat(item[5].length > 0 ? \" \".concat(item[5]) : \"\", \" {\").concat(item[1], \"}\");\n item[5] = layer;\n }\n }\n if (media) {\n if (!item[2]) {\n item[2] = media;\n } else {\n item[1] = \"@media \".concat(item[2], \" {\").concat(item[1], \"}\");\n item[2] = media;\n }\n }\n if (supports) {\n if (!item[4]) {\n item[4] = \"\".concat(supports);\n } else {\n item[1] = \"@supports (\".concat(item[4], \") {\").concat(item[1], \"}\");\n item[4] = supports;\n }\n }\n list.push(item);\n }\n };\n return list;\n};","\"use strict\";\n\nmodule.exports = function (item) {\n var content = item[1];\n var cssMapping = item[3];\n if (!cssMapping) {\n return content;\n }\n if (typeof btoa === \"function\") {\n var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(cssMapping))));\n var data = \"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(base64);\n var sourceMapping = \"/*# \".concat(data, \" */\");\n return [content].concat([sourceMapping]).join(\"\\n\");\n }\n return [content].join(\"\\n\");\n};","'use strict';\n\nvar m = require('react-dom');\nif (process.env.NODE_ENV === 'production') {\n exports.createRoot = m.createRoot;\n exports.hydrateRoot = m.hydrateRoot;\n} else {\n var i = m.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\n exports.createRoot = function(c, o) {\n i.usingClientEntryPoint = true;\n try {\n return m.createRoot(c, o);\n } finally {\n i.usingClientEntryPoint = false;\n }\n };\n exports.hydrateRoot = function(c, h, o) {\n i.usingClientEntryPoint = true;\n try {\n return m.hydrateRoot(c, h, o);\n } finally {\n i.usingClientEntryPoint = false;\n }\n };\n}\n","/* global Map:readonly, Set:readonly, ArrayBuffer:readonly */\n\nvar hasElementType = typeof Element !== 'undefined';\nvar hasMap = typeof Map === 'function';\nvar hasSet = typeof Set === 'function';\nvar hasArrayBuffer = typeof ArrayBuffer === 'function' && !!ArrayBuffer.isView;\n\n// Note: We **don't** need `envHasBigInt64Array` in fde es6/index.js\n\nfunction equal(a, b) {\n // START: fast-deep-equal es6/index.js 3.1.3\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n // START: Modifications:\n // 1. Extra `has &&` helpers in initial condition allow es6 code\n // to co-exist with es5.\n // 2. Replace `for of` with es5 compliant iteration using `for`.\n // Basically, take:\n //\n // ```js\n // for (i of a.entries())\n // if (!b.has(i[0])) return false;\n // ```\n //\n // ... and convert to:\n //\n // ```js\n // it = a.entries();\n // while (!(i = it.next()).done)\n // if (!b.has(i.value[0])) return false;\n // ```\n //\n // **Note**: `i` access switches to `i.value`.\n var it;\n if (hasMap && (a instanceof Map) && (b instanceof Map)) {\n if (a.size !== b.size) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!b.has(i.value[0])) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!equal(i.value[1], b.get(i.value[0]))) return false;\n return true;\n }\n\n if (hasSet && (a instanceof Set) && (b instanceof Set)) {\n if (a.size !== b.size) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!b.has(i.value[0])) return false;\n return true;\n }\n // END: Modifications\n\n if (hasArrayBuffer && ArrayBuffer.isView(a) && ArrayBuffer.isView(b)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (a[i] !== b[i]) return false;\n return true;\n }\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n // START: Modifications:\n // Apply guards for `Object.create(null)` handling. See:\n // - https://github.com/FormidableLabs/react-fast-compare/issues/64\n // - https://github.com/epoberezkin/fast-deep-equal/issues/49\n if (a.valueOf !== Object.prototype.valueOf && typeof a.valueOf === 'function' && typeof b.valueOf === 'function') return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString && typeof a.toString === 'function' && typeof b.toString === 'function') return a.toString() === b.toString();\n // END: Modifications\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n // END: fast-deep-equal\n\n // START: react-fast-compare\n // custom handling for DOM elements\n if (hasElementType && a instanceof Element) return false;\n\n // custom handling for React/Preact\n for (i = length; i-- !== 0;) {\n if ((keys[i] === '_owner' || keys[i] === '__v' || keys[i] === '__o') && a.$$typeof) {\n // React-specific: avoid traversing React elements' _owner\n // Preact-specific: avoid traversing Preact elements' __v and __o\n // __v = $_original / $_vnode\n // __o = $_owner\n // These properties contain circular references and are not needed when\n // comparing the actual elements (and not their owners)\n // .$$typeof and ._store on just reasonable markers of elements\n\n continue;\n }\n\n // all other properties should be traversed as usual\n if (!equal(a[keys[i]], b[keys[i]])) return false;\n }\n // END: react-fast-compare\n\n // START: fast-deep-equal\n return true;\n }\n\n return a !== a && b !== b;\n}\n// end fast-deep-equal\n\nmodule.exports = function isEqual(a, b) {\n try {\n return equal(a, b);\n } catch (error) {\n if (((error.message || '').match(/stack|recursion/i))) {\n // warn on circular references, don't crash\n // browsers give this different errors name and messages:\n // chrome/safari: \"RangeError\", \"Maximum call stack size exceeded\"\n // firefox: \"InternalError\", too much recursion\"\n // edge: \"Error\", \"Out of stack space\"\n console.warn('react-fast-compare cannot handle circular refs');\n return false;\n }\n // some other error. we should definitely know about these\n throw error;\n }\n};\n","\"use strict\";\n\nvar stylesInDOM = [];\nfunction getIndexByIdentifier(identifier) {\n var result = -1;\n for (var i = 0; i < stylesInDOM.length; i++) {\n if (stylesInDOM[i].identifier === identifier) {\n result = i;\n break;\n }\n }\n return result;\n}\nfunction modulesToDom(list, options) {\n var idCountMap = {};\n var identifiers = [];\n for (var i = 0; i < list.length; i++) {\n var item = list[i];\n var id = options.base ? item[0] + options.base : item[0];\n var count = idCountMap[id] || 0;\n var identifier = \"\".concat(id, \" \").concat(count);\n idCountMap[id] = count + 1;\n var indexByIdentifier = getIndexByIdentifier(identifier);\n var obj = {\n css: item[1],\n media: item[2],\n sourceMap: item[3],\n supports: item[4],\n layer: item[5]\n };\n if (indexByIdentifier !== -1) {\n stylesInDOM[indexByIdentifier].references++;\n stylesInDOM[indexByIdentifier].updater(obj);\n } else {\n var updater = addElementStyle(obj, options);\n options.byIndex = i;\n stylesInDOM.splice(i, 0, {\n identifier: identifier,\n updater: updater,\n references: 1\n });\n }\n identifiers.push(identifier);\n }\n return identifiers;\n}\nfunction addElementStyle(obj, options) {\n var api = options.domAPI(options);\n api.update(obj);\n var updater = function updater(newObj) {\n if (newObj) {\n if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap && newObj.supports === obj.supports && newObj.layer === obj.layer) {\n return;\n }\n api.update(obj = newObj);\n } else {\n api.remove();\n }\n };\n return updater;\n}\nmodule.exports = function (list, options) {\n options = options || {};\n list = list || [];\n var lastIdentifiers = modulesToDom(list, options);\n return function update(newList) {\n newList = newList || [];\n for (var i = 0; i < lastIdentifiers.length; i++) {\n var identifier = lastIdentifiers[i];\n var index = getIndexByIdentifier(identifier);\n stylesInDOM[index].references--;\n }\n var newLastIdentifiers = modulesToDom(newList, options);\n for (var _i = 0; _i < lastIdentifiers.length; _i++) {\n var _identifier = lastIdentifiers[_i];\n var _index = getIndexByIdentifier(_identifier);\n if (stylesInDOM[_index].references === 0) {\n stylesInDOM[_index].updater();\n stylesInDOM.splice(_index, 1);\n }\n }\n lastIdentifiers = newLastIdentifiers;\n };\n};","\"use strict\";\n\nvar memo = {};\n\n/* istanbul ignore next */\nfunction getTarget(target) {\n if (typeof memo[target] === \"undefined\") {\n var styleTarget = document.querySelector(target);\n\n // Special case to return head of iframe instead of iframe itself\n if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {\n try {\n // This will throw an exception if access to iframe is blocked\n // due to cross-origin restrictions\n styleTarget = styleTarget.contentDocument.head;\n } catch (e) {\n // istanbul ignore next\n styleTarget = null;\n }\n }\n memo[target] = styleTarget;\n }\n return memo[target];\n}\n\n/* istanbul ignore next */\nfunction insertBySelector(insert, style) {\n var target = getTarget(insert);\n if (!target) {\n throw new Error(\"Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.\");\n }\n target.appendChild(style);\n}\nmodule.exports = insertBySelector;","\"use strict\";\n\n/* istanbul ignore next */\nfunction insertStyleElement(options) {\n var element = document.createElement(\"style\");\n options.setAttributes(element, options.attributes);\n options.insert(element, options.options);\n return element;\n}\nmodule.exports = insertStyleElement;","\"use strict\";\n\n/* istanbul ignore next */\nfunction setAttributesWithoutAttributes(styleElement) {\n var nonce = typeof __webpack_nonce__ !== \"undefined\" ? __webpack_nonce__ : null;\n if (nonce) {\n styleElement.setAttribute(\"nonce\", nonce);\n }\n}\nmodule.exports = setAttributesWithoutAttributes;","\"use strict\";\n\n/* istanbul ignore next */\nfunction apply(styleElement, options, obj) {\n var css = \"\";\n if (obj.supports) {\n css += \"@supports (\".concat(obj.supports, \") {\");\n }\n if (obj.media) {\n css += \"@media \".concat(obj.media, \" {\");\n }\n var needLayer = typeof obj.layer !== \"undefined\";\n if (needLayer) {\n css += \"@layer\".concat(obj.layer.length > 0 ? \" \".concat(obj.layer) : \"\", \" {\");\n }\n css += obj.css;\n if (needLayer) {\n css += \"}\";\n }\n if (obj.media) {\n css += \"}\";\n }\n if (obj.supports) {\n css += \"}\";\n }\n var sourceMap = obj.sourceMap;\n if (sourceMap && typeof btoa !== \"undefined\") {\n css += \"\\n/*# sourceMappingURL=data:application/json;base64,\".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), \" */\");\n }\n\n // For old IE\n /* istanbul ignore if */\n options.styleTagTransform(css, styleElement, options.options);\n}\nfunction removeStyleElement(styleElement) {\n // istanbul ignore if\n if (styleElement.parentNode === null) {\n return false;\n }\n styleElement.parentNode.removeChild(styleElement);\n}\n\n/* istanbul ignore next */\nfunction domAPI(options) {\n if (typeof document === \"undefined\") {\n return {\n update: function update() {},\n remove: function remove() {}\n };\n }\n var styleElement = options.insertStyleElement(options);\n return {\n update: function update(obj) {\n apply(styleElement, options, obj);\n },\n remove: function remove() {\n removeStyleElement(styleElement);\n }\n };\n}\nmodule.exports = domAPI;","\"use strict\";\n\n/* istanbul ignore next */\nfunction styleTagTransform(css, styleElement) {\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}\nmodule.exports = styleTagTransform;","module.exports = require(\"react-dom\");","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","__webpack_require__.amdD = function () {\n\tthrow new Error('define cannot be used indirect');\n};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.p = \"\";","__webpack_require__.nc = undefined;","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"react\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"prop-types\");","import { createContext } from 'react';\n\nconst AccordionContext = createContext();\n\nexport default AccordionContext;\n","import { createContext } from 'react';\n\nconst AccordionItemContext = createContext();\n\nexport default AccordionItemContext;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nfunction Icon({\n className,\n family,\n type,\n ...rest\n}) {\n function getCSSClasses() {\n const fontFamily = family || 'fa';\n\n return [\n 'tyk-icon',\n fontFamily,\n `${fontFamily}-${type}`,\n className,\n ].filter(Boolean).join(' ');\n }\n\n return ;\n}\n\nIcon.propTypes = {\n className: PropTypes.string,\n family: PropTypes.string,\n type: PropTypes.string.isRequired,\n};\n\nexport default Icon;\n","import React, { useContext } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Icon from '../../Icon';\nimport AccordionItemContext from './AccordionItemContext';\n\nfunction ItemTrigger({ wrap }) {\n const { collapsed, disabled, toggleChange } = useContext(AccordionItemContext);\n\n const iconType = collapsed ? 'chevron-down' : 'chevron-up';\n const classes = [\n 'tyk-accordion__trigger',\n disabled && 'tyk-accordion__trigger--disabled',\n ].filter(Boolean).join(' ');\n const trigger = (\n \n \n \n );\n\n return wrap\n ?
    {trigger}
    \n : trigger;\n}\n\nItemTrigger.propTypes = {\n wrap: PropTypes.bool,\n};\n\nexport default ItemTrigger;\n","import React, {\n useMemo, useState, useContext, forwardRef,\n} from 'react';\nimport PropTypes from 'prop-types';\n\nimport AccordionContext from './AccordionContext';\nimport AccordionItemContext from './AccordionItemContext';\nimport ItemTrigger from './AccordionItemTrigger';\n\nfunction AccordionItem({\n collapsed: collapsedProp,\n children,\n className,\n disabled,\n}, ref) {\n const { arrow } = useContext(AccordionContext);\n const [collapsed, setCollapsed] = useState(collapsedProp);\n\n const toggleChange = () => {\n if (disabled) {\n return;\n }\n\n setCollapsed(!collapsed);\n };\n\n const classes = useMemo(() => [\n 'tyk-accordion__item',\n arrow.expandToContent\n ? `tyk-accordion__item--trigger-position-${arrow.position}`\n : 'tyk-accordion__item--trigger-in-header',\n className,\n collapsed === false && 'tyk-accordion__item--active',\n ].filter(Boolean).join(' '), [arrow, className, collapsed]);\n\n const contextValue = useMemo(() => ({\n collapsed,\n disabled,\n toggleChange,\n }), [collapsed, disabled, toggleChange]);\n\n return (\n
    \n \n {arrow.expandToContent && (\n \n )}\n {children}\n \n
    \n );\n}\n\nAccordionItem.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n collapsed: PropTypes.bool,\n className: PropTypes.string,\n disabled: PropTypes.bool,\n};\n\nAccordionItem.defaultProps = {\n collapsed: false,\n};\n\nexport default forwardRef(AccordionItem);\n","import React, { useContext } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Icon from '../../Icon';\nimport AccordionContext from './AccordionContext';\nimport AccordionItemContext from './AccordionItemContext';\nimport ItemTrigger from './AccordionItemTrigger';\n\nfunction AccordionItemHeader({ className, children }) {\n const { collapsed, disabled, toggleChange } = useContext(AccordionItemContext);\n const { usearrowastrigger, arrow } = useContext(AccordionContext);\n const iconType = collapsed ? 'chevron-down' : 'chevron-up';\n const classes = [\n 'tyk-accordion__item-header',\n usearrowastrigger && 'tyk-accordion__arrow-trigger',\n className,\n ].filter(Boolean).join(' ');\n\n return (\n
    \n {\n !usearrowastrigger\n ? (\n \n {children}\n \n \n )\n : (\n <>\n {!arrow.expandToContent && arrow.position === 'left' && (\n \n )}\n
    {children}
    \n {!arrow.expandToContent && arrow.position === 'right' && (\n \n )}\n \n )\n }\n
    \n );\n}\n\nAccordionItemHeader.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n className: PropTypes.string,\n};\n\nexport default AccordionItemHeader;\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"react-transition-group\");","import { useEffect, useRef } from 'react';\n\nconst usePrevious = (value) => {\n const ref = useRef();\n useEffect(() => {\n ref.current = value;\n }, [value]);\n return ref.current;\n};\n\n/** @component */\nexport default usePrevious;\n","import { useEffect, useRef } from 'react';\n\nconst useTimeout = (callback, delay) => {\n const savedCallback = useRef();\n\n useEffect(() => {\n savedCallback.current = callback;\n },\n [callback]);\n\n useEffect(() => {\n function tick() {\n savedCallback.current();\n }\n if (delay !== null) {\n const id = setTimeout(tick, delay);\n return () => clearTimeout(id);\n }\n\n return () => {};\n },\n [delay]);\n};\n\n/** @component */\nexport default useTimeout;\n","import { useEffect, useRef } from 'react';\n\n/** @component */\nexport default function useInterval(callback, delay, ...args) {\n const savedCallback = useRef();\n\n useEffect(() => {\n savedCallback.current = callback;\n }, [callback]);\n\n /* eslint-disable consistent-return */\n useEffect(() => {\n function tick() {\n savedCallback.current(...args);\n }\n if (delay !== null && delay !== undefined) {\n const id = setInterval(tick, delay);\n return () => clearInterval(id);\n }\n }, [delay]);\n /* eslint-disable consistent-return */\n}\n","import { useEffect, useRef } from 'react';\n\nconst useEventListener = (eventName, handler, element) => {\n const savedHandler = useRef();\n useEffect(() => {\n savedHandler.current = handler;\n }, [handler]);\n\n useEffect(() => {\n const isSupported = element?.addEventListener;\n if (!isSupported) {\n // eslint-disable-next-line consistent-return\n return;\n }\n\n const eventListener = (event) => savedHandler.current(event);\n element.addEventListener(eventName, eventListener);\n\n // eslint-disable-next-line consistent-return\n return () => {\n element.removeEventListener(eventName, eventListener);\n };\n }, [eventName, element]);\n};\n\n/** @component */\nexport default useEventListener;\n","import { useCallback, useState, useLayoutEffect } from 'react';\n\nconst getSize = (el) => {\n if (!el) {\n return {\n width: 0,\n height: 0,\n };\n }\n\n return {\n width: el.offsetWidth,\n height: el.offsetHeight,\n };\n};\n\nconst useComponentSize = (ref) => {\n const [ComponentSize, setComponentSize] = useState(getSize(ref ? ref.current : {}));\n const handleResize = useCallback(() => {\n if (ref.current) {\n setComponentSize(getSize(ref.current));\n }\n }, [ref]);\n\n useLayoutEffect(() => {\n handleResize();\n\n let resizeObserver = new ResizeObserver(() => {\n handleResize();\n });\n resizeObserver.observe(ref.current);\n\n return () => {\n resizeObserver.disconnect(ref.current);\n resizeObserver = null;\n };\n }, [ref.current]);\n\n return ComponentSize;\n};\n\n/** @component */\nexport default useComponentSize;\n","import React, {\n useRef, useState, useCallback, useEffect,\n} from 'react';\nimport PropTypes from 'prop-types';\nimport { CSSTransition } from 'react-transition-group';\nimport { useEventListener, useComponentSize } from '../../hooks';\n\n/**\n * Collapsible is a component that helps you to collapse/expand any type of content\n */\nfunction Collapsible({\n className,\n collapsed,\n children,\n ...rest\n}) {\n const contentContainer = useRef(null);\n const collapseWrapper = useRef(null);\n const refContainerSize = useComponentSize(contentContainer);\n const [contentContainerStyle, setContentContainerStyle] = useState({\n // eslint-disable-next-line\n height: (collapsed) ? 0 : 'auto',\n });\n\n const setHeight = (height) => {\n setContentContainerStyle({\n height: `${height}px`,\n });\n };\n\n const getHeight = () => (contentContainer.current ? contentContainer.current.clientHeight : 0);\n\n const onEnter = () => {\n setHeight(getHeight());\n };\n\n const onExit = () => {\n setHeight(0);\n };\n\n useEffect(() => {\n if (!collapsed\n && refContainerSize?.height\n && contentContainerStyle.height !== refContainerSize?.height\n ) {\n setHeight(refContainerSize.height);\n }\n }, [refContainerSize.height]);\n\n const onWindowResize = useCallback(() => {\n if (!collapsed && contentContainer.current) {\n setHeight(getHeight());\n collapseWrapper.current.style.height = `${getHeight()}px`;\n }\n }, [collapsed, contentContainer.current]);\n\n useEventListener('resize', onWindowResize, window);\n\n return (\n \n \n \n { children }\n \n \n \n );\n}\n\nCollapsible.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]),\n /** Describes if the content of Collapsible should be hidden or not */\n collapsed: PropTypes.bool,\n /** CSS classes that can be passed to the Collapsible element */\n className: PropTypes.string,\n};\n\nexport default Collapsible;\n","import React, { useContext } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Collapsible from '../../Collapsible';\nimport AccordionItemContext from './AccordionItemContext';\n\nfunction AccordionItemContent({ children, className }) {\n const { collapsed } = useContext(AccordionItemContext);\n\n const classes = [\n 'tyk-accordion__item-content',\n className,\n ].filter(Boolean).join(' ');\n\n return (\n
    \n \n { children }\n \n
    \n );\n}\n\nAccordionItemContent.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n className: PropTypes.string,\n};\n\nexport default AccordionItemContent;\n","import React, { useMemo } from 'react';\nimport PropTypes from 'prop-types';\nimport AccordionItem from './js/AccordionItem';\nimport AccordionItemHeader from './js/AccordionItemHeader';\nimport AccordionItemContent from './js/AccordionItemContent';\nimport AccordionContext from './js/AccordionContext';\n\nfunction Accordion({\n className,\n children,\n usearrowastrigger,\n arrow = { position: 'right', expandToContent: false },\n}) {\n const classes = [\n 'tyk-accordion',\n className,\n ].filter(Boolean).join(' ');\n\n const contextValue = useMemo(() => ({\n usearrowastrigger,\n arrow,\n }), [usearrowastrigger, arrow]);\n\n return (\n
    \n \n {children}\n \n
    \n );\n}\n\nAccordion.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n className: PropTypes.string,\n usearrowastrigger: PropTypes.bool,\n arrow: PropTypes.shape({\n position: PropTypes.oneOf(['left', 'right']),\n expandToContent: PropTypes.bool,\n }),\n};\n\nAccordion.defaultProps = {\n usearrowastrigger: false,\n};\n\n// For Readme.md : Start\nAccordion.Item = AccordionItem;\nAccordion.Item.Header = AccordionItemHeader;\nAccordion.Item.Content = AccordionItemContent;\n// For Readme.md : End\n\nexport default Accordion;\n","import React, { Fragment, cloneElement } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Icon from '../Icon';\n\n/**\n * Button component.\n */\nconst Button = React.forwardRef((props, ref) => {\n const {\n customButton,\n children,\n iconType,\n iconFamily,\n iconPosition,\n iconOnly,\n id,\n className,\n disabled,\n display,\n href,\n onClick,\n noStyle,\n size,\n theme,\n type,\n ...rest\n } = props;\n\n const getCssClasses = () => {\n const cssClasses = ['tyk-button'].concat(className ? className.split(' ') : []);\n const sizeClass = (size) ? `tyk-button--${size}` : 'tyk-button--md';\n const disabledClass = (disabled) ? 'disabled' : '';\n const displayClass = display || '';\n const themeClass = theme ? `tyk-button--${theme}` : '';\n const iconOnlyClass = iconOnly ? 'tyk-button--icon-only' : '';\n const noStyleClass = noStyle ? 'tyk-button--no-style' : '';\n\n cssClasses.push(iconOnlyClass);\n cssClasses.push(themeClass);\n cssClasses.push(sizeClass);\n cssClasses.push(disabledClass);\n cssClasses.push(displayClass);\n cssClasses.push(noStyleClass);\n\n if (iconType) {\n cssClasses.push(`icon-${iconPosition || 'left'}`);\n }\n\n return cssClasses.join(' ');\n };\n\n const getButtonIcon = (position) => {\n const iPos = iconPosition || 'left';\n\n return (\n (iconType && iPos === position)\n ? \n : null\n );\n };\n\n const getButtonType = () => {\n let buttonType;\n\n if (customButton) {\n return (\n \n { cloneElement(customButton, {\n className: getCssClasses(),\n disabled,\n })\n }\n \n );\n }\n\n if (href) {\n buttonType = (\n \n { getButtonIcon('left') }\n { children }\n { getButtonIcon('right') }\n \n );\n } else {\n buttonType = (\n // eslint-disable-next-line react/button-has-type\n \n { getButtonIcon('left') }\n { children && {children} }\n { getButtonIcon('right') }\n \n );\n }\n\n return buttonType;\n };\n\n\n return (\n getButtonType()\n );\n});\n\nButton.propTypes = {\n /**\n * Content of a button. Can be a DOM element or a React component\n */\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n customButton: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n ]),\n className: PropTypes.string,\n /**\n * Display type: inline/block. Default is inline\n */\n display: PropTypes.string,\n /**\n * Sets the button disabled state\n */\n disabled: PropTypes.bool,\n /**\n * Having this property set the button will become a link\n */\n id: PropTypes.string,\n href: PropTypes.string,\n iconPosition: PropTypes.string, // left or right\n iconFamily: PropTypes.string,\n iconOnly: PropTypes.bool,\n iconType: PropTypes.string,\n noStyle: PropTypes.bool,\n /**\n * Callback function, called when the button si clicked\n */\n onClick: PropTypes.func,\n /**\n * Describes the appearence of the button (ex: primary, danger, primary-outline etc.)\n */\n theme: PropTypes.string,\n /**\n * Type of the button (ex: button, submit etc.)\n */\n type: PropTypes.string,\n /**\n * Describes the size of the button (sm, md, lg). Default one is md\n */\n size: PropTypes.string,\n};\n\nButton.defaultProps = {\n theme: '',\n type: 'button',\n};\n\nexport default Button;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\n/**\n * Tyk button component.\n */\nfunction ButtonGroup({\n className,\n children,\n label,\n}) {\n return (\n
    \n {Boolean(label) && (\n \n )}\n
    \n {children}\n
    \n
    \n );\n}\n\nButtonGroup.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n className: PropTypes.string,\n /**\n * Label that will sit above the button group\n */\n label: PropTypes.string,\n};\n\nexport default ButtonGroup;\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"echarts\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"immutable\");","export default (func, wait, immediate) => {\n let timeout;\n return function debouncer(...args) {\n const context = this;\n const later = () => {\n timeout = null;\n if (!immediate) {\n func.apply(context, args);\n }\n };\n const callNow = immediate && !timeout;\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n if (callNow) {\n func.apply(context, args);\n }\n };\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nfunction Loader({ className, position = 'relative', withbackground = false }) {\n const classes = [\n 'loading',\n position,\n className,\n ].filter(Boolean).join(' ');\n\n const loader = (\n
    \n
    \n
    \n
    \n
    \n
    \n );\n\n return withbackground\n ?
    {loader}
    \n : loader;\n}\n\nLoader.propTypes = {\n /** add a class to loader */\n className: PropTypes.string,\n /** position of loader (absolute / relative) */\n position: PropTypes.string,\n /** defines weather loader should be renders with or without background */\n withbackground: PropTypes.bool,\n};\n\nexport default Loader;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport Icon from '../Icon';\n\n/**\n * The Message component is used to highlight important content to the users.\n *\n * If the content you are displaying needs immediate attention or is a feedback,\n * consider using `toast` instead\n */\nfunction Message({\n children, theme, onClose, noMargin, className,\n}) {\n function getCssClasses() {\n return [\n 'tyk-message',\n `tyk-message--${theme || 'info'}`,\n noMargin && 'no-margin',\n className,\n ].filter(Boolean).join(' ');\n }\n\n const iconType = theme === 'success' ? 'check' : 'warning';\n\n return (\n
    \n \n
    \n { children }\n
    \n {onClose && (\n \n )}\n
    \n );\n}\n\nMessage.propTypes = {\n /** Set theme for message (eg. default, success, danger, etc) */\n theme: PropTypes.string,\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]),\n /** add a class to loader */\n className: PropTypes.string,\n /** Removes margins by adding `no-margin` class */\n noMargin: PropTypes.bool,\n /** Callback for clicking on the \"x\" */\n onClose: PropTypes.func,\n};\n\nexport default Message;\n","import React, {\n useState, useEffect, useRef, memo,\n} from 'react';\nimport PropTypes from 'prop-types';\nimport * as echarts from 'echarts';\nimport { fromJS } from 'immutable';\n\nimport debounce from '../../utils/debounce';\nimport { usePrevious } from '../../hooks';\nimport Loader from '../Loader';\nimport Message from '../Message';\nimport worldMap from './maps/world.json';\n\necharts.registerMap('world', worldMap);\n\nconst Chart = (props) => {\n const {\n areaStyleColors,\n dataLoaded,\n hasData,\n highlight,\n type,\n option,\n series,\n onChange,\n zoomStart,\n zoomEnd,\n title,\n seriesConfig = [],\n noDataComponent = null,\n zoomColors,\n } = props;\n const [tykChartInstance, setTykChartInstance] = useState(null);\n const chartWrapperRef = useRef(null);\n const onResize = () => {\n if (tykChartInstance) {\n tykChartInstance.resize();\n }\n };\n\n const lineBarChart = {\n defaultOpts: fromJS({\n title: {\n show: true,\n text: title,\n left: 0,\n },\n color: [],\n toolbox: {\n right: '0',\n orient: 'horizontal',\n itemSize: 15,\n showTitle: true,\n feature: null,\n },\n dataZoom: [{\n show: true,\n start: 0,\n end: 100,\n orient: 'horizontal',\n dataBackground: {\n lineStyle: {\n color: zoomColors?.lineStyle || '#368493',\n },\n areaStyle: {\n color: zoomColors?.areaStyle || '#368493',\n },\n },\n handleStyle: {\n color: zoomColors?.handleStyle || '#368493',\n },\n textStyle: {\n color: zoomColors?.textStyle || '#368493',\n },\n borderColor: 'transparent',\n fillerColor: zoomColors?.fillerColor || 'rgba(54, 132, 147, 0.1)',\n }],\n legend: {\n show: false,\n // data: [],\n // right: '1%',\n },\n tooltip: {\n trigger: 'axis',\n axisPointer: {\n type: 'cross',\n },\n },\n grid: {\n left: '1%',\n right: '1%',\n bottom: '50px',\n top: '40px',\n containLabel: true,\n },\n xAxis: {\n boundaryGap: false,\n type: 'category',\n splitLine: {\n show: true,\n lineStyle: {\n type: 'dotted',\n color: '#F0F0F0',\n },\n },\n axisLine: {\n show: false,\n },\n axisTick: {\n show: false,\n },\n data: [],\n },\n yAxis: {\n min: 'dataMin',\n boundaryGap: true,\n axisPointer: {\n show: true,\n },\n splitLine: {\n lineStyle: {\n type: 'dotted',\n color: '#F0F0F0',\n },\n show: true,\n },\n axisLabel: {\n show: true,\n },\n axisLine: {\n show: true,\n },\n axisTick: {\n show: false,\n },\n type: 'value',\n },\n textStyle: {\n color: '#5a5a68',\n },\n series: [],\n animationEasing: 'elasticOut',\n }),\n seriesDefault: fromJS({\n data: [],\n type: 'line',\n areaStyle: {\n opacity: 1,\n color: areaStyleColors ? new echarts.graphic.LinearGradient(0, 0, 1, 1,\n areaStyleColors.map((color, index) => ({\n offset: index,\n color,\n }))) : [],\n },\n smooth: false,\n symbolSize: 7,\n name: '',\n }),\n };\n\n const pieChart = {\n defaultOpts: fromJS({\n tooltip: {\n trigger: 'axis',\n formatter: '{b}: {c} ({d}%)',\n },\n legend: {\n orient: 'horizontal',\n x: 'left',\n y: 'top',\n data: [],\n },\n color: [],\n series: [],\n }),\n seriesDefault: fromJS({\n type: 'pie',\n center: [\n '50%',\n '55%',\n ],\n radius: [\n '50%',\n '75%',\n ],\n avoidLabelOverlap: false,\n animationType: 'scale',\n animationEasing: 'elasticOut',\n labelLine: {\n normal: {\n show: true,\n smooth: 0.2,\n length: 6,\n length2: 6,\n },\n },\n data: [],\n }),\n };\n\n const geoChart = {\n defaultOpts: fromJS({\n series: [],\n }),\n seriesDefault: fromJS({\n type: 'map',\n data: [],\n }),\n };\n\n const buildChartOptions = (selectedType, selectedOptions, selectedSeries) => {\n let finalOpts = {};\n switch (selectedType) {\n case 'pie': {\n finalOpts = pieChart.defaultOpts.mergeDeep(fromJS(selectedOptions)).toJS();\n\n selectedSeries.forEach((entry) => {\n finalOpts.series.push(pieChart.seriesDefault.mergeDeep(fromJS(entry)).toJS());\n });\n\n break;\n }\n\n case 'geo': {\n finalOpts = geoChart.defaultOpts.mergeDeep(fromJS(selectedOptions)).toJS();\n\n selectedSeries.forEach((entry) => {\n finalOpts.series.push(geoChart.seriesDefault.mergeDeep(fromJS(entry)).toJS());\n });\n\n break;\n }\n\n default: {\n finalOpts = lineBarChart.defaultOpts.mergeDeep(fromJS(selectedOptions)).toJS();\n if (Array.isArray(selectedOptions.yAxis)) {\n finalOpts.yAxis = selectedOptions.yAxis;\n }\n\n selectedSeries.forEach((entry, index) => {\n const seriesData = Object.assign(\n {},\n lineBarChart.seriesDefault.toJS(),\n seriesConfig[index], entry,\n );\n finalOpts.series.push(seriesData);\n });\n break;\n }\n }\n return finalOpts;\n };\n\n useEffect(() => {\n window.addEventListener('resize', onResize);\n\n return () => {\n window.removeEventListener('resize', onResize);\n };\n }, [tykChartInstance]);\n\n useEffect(() => {\n\n if (!chartWrapperRef?.current) {\n return;\n }\n\n setTykChartInstance(echarts.init(chartWrapperRef.current));\n return () => {\n if (tykChartInstance) {\n tykChartInstance.dispose();\n }\n };\n }, [chartWrapperRef.current]);\n\n const eventCallBack = (e) => {\n if (onChange) {\n onChange(e);\n }\n };\n\n useEffect(() => {\n let debouncedMethod;\n if (tykChartInstance) {\n debouncedMethod = debounce(eventCallBack, 500);\n tykChartInstance.on('dataZoom', debouncedMethod);\n tykChartInstance.on('restore', debouncedMethod);\n tykChartInstance.on('click', debouncedMethod);\n\n tykChartInstance.on('mousemove', (params) => {\n if (params.data) {\n tykChartInstance.getZr().setCursorStyle('pointer');\n }\n });\n }\n\n return () => {\n if (tykChartInstance) {\n tykChartInstance.off('dataZoom', debouncedMethod);\n tykChartInstance.off('restore', debouncedMethod);\n tykChartInstance.off('click', debouncedMethod);\n }\n };\n }, [tykChartInstance, onChange]);\n\n const prevInstance = usePrevious(tykChartInstance);\n const prevOption = usePrevious(option);\n const prevType = usePrevious(type);\n const prevSeries = usePrevious(series);\n useEffect(() => {\n if (\n tykChartInstance\n && (\n !fromJS(prevInstance)?.equals?.(fromJS(tykChartInstance))\n || !fromJS(prevOption)?.equals?.(fromJS(option))\n || (prevType !== type)\n || !fromJS(prevSeries).equals?.(fromJS(series))\n )\n ) {\n tykChartInstance.clear();\n tykChartInstance.setOption(buildChartOptions(type, option, series));\n tykChartInstance.dispatchAction({\n type: 'takeGlobalCursor',\n key: 'dataZoomSelect',\n dataZoomSelectActive: true,\n });\n }\n }, [tykChartInstance, option, series, type]);\n\n useEffect(() => {\n if (tykChartInstance && highlight) {\n tykChartInstance.dispatchAction({\n type: 'highlight',\n seriesIndex: highlight.seriesIndex,\n dataIndex: highlight.dataIndex,\n });\n tykChartInstance.dispatchAction({\n type: 'showTip',\n seriesIndex: highlight.seriesIndex,\n dataIndex: highlight.dataIndex,\n });\n }\n }, [highlight]);\n\n\n const prevZoomStart = usePrevious(zoomStart);\n const prevZoomEnd = usePrevious(zoomEnd);\n useEffect(() => {\n if (\n tykChartInstance\n && zoomStart !== -1\n && zoomEnd !== -1\n && (\n prevZoomStart !== zoomStart\n || prevZoomEnd !== zoomEnd\n )\n ) {\n tykChartInstance.dispatchAction({\n type: 'dataZoom',\n startValue: zoomStart,\n endValue: zoomEnd,\n });\n }\n }, [zoomStart, zoomEnd]);\n\n const getStyle = () => {\n const { style } = props;\n const tempStyle = style || {};\n\n if (!tempStyle.height) {\n tempStyle.height = '300px';\n }\n if (!tempStyle.width) {\n tempStyle.width = '100%';\n }\n return tempStyle;\n };\n\n const chartHasData = () => (\n (dataLoaded && (hasData === false || hasData === true)) ? hasData : true\n );\n\n const getCssClasses = () => {\n const cssClasses = ['tyk-chart'];\n\n if (!dataLoaded) {\n cssClasses.push('tyk-chart--loading-chart');\n }\n\n if (!chartHasData()) {\n cssClasses.push('tyk-chart--no-data');\n }\n\n return cssClasses.join(' ');\n };\n\n return (\n
    \n {\n !dataLoaded\n ? \n : null\n }\n \n {\n /* eslint-disable-next-line no-nested-ternary */\n chartHasData()\n ? null\n : noDataComponent\n ? noDataComponent()\n : (\n \n No data to display\n \n )\n }\n
    \n );\n};\n\nChart.propTypes = {\n areaStyleColors: PropTypes.instanceOf(Array),\n dataLoaded: PropTypes.bool,\n hasData: PropTypes.bool,\n highlight: PropTypes.oneOfType([\n PropTypes.number,\n PropTypes.string,\n PropTypes.instanceOf(Array),\n ]),\n noDataComponent: PropTypes.func,\n zoomStart: PropTypes.number,\n zoomEnd: PropTypes.number,\n zoomColors: PropTypes.instanceOf(Object),\n option: PropTypes.instanceOf(Object),\n onChange: PropTypes.func,\n style: PropTypes.instanceOf(Object),\n type: PropTypes.string,\n title: PropTypes.string,\n series: PropTypes.instanceOf(Array),\n seriesConfig: PropTypes.instanceOf(Object),\n};\n\nexport default memo(Chart);\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport Message from '../../Message';\nimport { useTimeout } from '../../../hooks';\n\nconst ToastMessage = (props) => {\n const {\n children,\n options,\n onClose,\n index,\n } = props;\n const opts = Object.assign({\n theme: 'success',\n delay: 3000,\n }, options);\n let timer;\n\n const handleClose = (itemIndex) => {\n onClose(itemIndex);\n clearTimeout(timer);\n };\n\n useTimeout(() => handleClose(index), opts.delay);\n\n return (\n handleClose(index)}\n >\n {children}\n \n );\n};\n\nToastMessage.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]),\n options: PropTypes.instanceOf(Object),\n onClose: PropTypes.func,\n index: PropTypes.number,\n};\n\nexport default ToastMessage;\n","import React, {\n useEffect, useState,\n} from 'react';\nimport PropTypes from 'prop-types';\n\nimport ToastMessage from './ToastMessage';\n\nconst ToastContainer = (props) => {\n const [messages, setMessages] = useState({});\n const {\n notify,\n } = props;\n\n const updateNotifications = (message, options) => {\n const msgID = Math.floor(Math.random() * 1000000);\n \n setMessages((prevMessages) => ({\n ...prevMessages,\n [msgID]: {\n message,\n options,\n }\n }));\n };\n\n useEffect(() => {\n notify(updateNotifications);\n }, [messages]);\n\n const onMessageClosed = (index) => {\n const tempMessages = {...messages};\n delete tempMessages[index];\n setMessages((prevMessages) => {\n const { [index]: messageToBeRemoved, ...restMessages } = prevMessages;\n return restMessages;\n });\n };\n\n return (\n
    \n {\n Object.keys(messages).map((msgID) => (\n messages[msgID]\n ? (\n \n {messages[msgID].message}\n \n )\n : null\n ))\n }\n
    \n );\n};\n\nToastContainer.propTypes = {\n notify: PropTypes.func,\n};\n\nexport default ToastContainer;\n","import React from 'react';\nimport { createRoot } from 'react-dom/client';\nimport ToastContainer from './js/ToastContainer';\n/**\n * Toast is a service that displays dialogs\n * on the bottom right part of the screen.\n *\n * The dialogs can have one of the Tyk UI themes, so that\n * it would match it's purpose (i.e success message, error message)\n *\n */\nclass ToastCreator {\n constructor() {\n const el = document.createElement('div');\n el.className = 'tyk-toast';\n document.body.appendChild(el);\n const root = createRoot(el);\n root.render();\n }\n\n bindNotify = (fn) => {\n this.createNotification = fn;\n };\n\n notify(message, options) {\n if (this.createNotification) {\n this.createNotification(message, options);\n }\n }\n\n danger(message, options) {\n this.notify(message, { ...options, theme: 'danger' });\n }\n\n success(message, options) {\n this.notify(message, { ...options, theme: 'success' });\n }\n\n warning(message, options) {\n this.notify(message, { ...options, theme: 'warning' });\n }\n\n info(message, options) {\n this.notify(message, { ...options, theme: 'info' });\n }\n}\n\nconst toast = new ToastCreator();\n\nexport default toast;\n","import React, { Fragment, createRef, useCallback } from 'react';\nimport PropTypes from 'prop-types';\n\nimport toast from '../Toast';\n\n/**\n * - CopyToClipboard is used to copy string for a user.\n * - Can be used normally with a text or a custom components (Eg. Button, Icon, etc)\n */\n\nconst CopyToClipboard = (props) => {\n const {\n display, copy, children, onCopy,\n } = props;\n const txtRef = createRef();\n const handleClick = useCallback(() => {\n if (onCopy) {\n onCopy();\n }\n\n if (!window.navigator.clipboard) {\n txtRef.current.select();\n document.execCommand('copy');\n toast.notify('copied', { theme: 'success' });\n return;\n }\n window.navigator.clipboard.writeText(copy);\n toast.notify('copied', { theme: 'success' });\n }, [onCopy, txtRef]);\n\n return (\n \n \n {children || display}\n \n {!window.navigator.clipboard ? (\n \n ) : null}\n \n );\n};\n\nCopyToClipboard.propTypes = {\n /** Callback function executed after text is copied */\n onCopy: PropTypes.func,\n /** Text to be copied */\n copy: PropTypes.string.isRequired,\n /** Text to be displayed */\n display: PropTypes.string,\n /** Children of custom element if you are using any custom element */\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.string,\n PropTypes.object,\n PropTypes.node,\n ]),\n};\n\nexport default CopyToClipboard;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nfunction ModalFooter({ children }) {\n return (\n
    \n { children }\n
    \n );\n}\n\nModalFooter.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]),\n};\n\nexport default ModalFooter;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nfunction ModalBody({ children }) {\n return (\n
    \n { children }\n
    \n );\n}\n\nModalBody.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]),\n};\n\nexport default ModalBody;\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport { CSSTransition } from 'react-transition-group';\n\nimport Icon from '../Icon';\nimport ModalFooter from './js/ModalFooter';\nimport ModalBody from './js/ModalBody';\n\n/**\n * Modals add dialogs confirmation boxes, notifications, or completely custom content\n * - only one Modal can be opened at a time\n * - are unmounted when Modal is closed\n */\nfunction Modal({\n children,\n theme = 'none',\n disableCloseCommands = false,\n opened = false,\n onClose = () => {},\n size = 'md',\n className = '',\n showBackdrop = true,\n ...restProps\n}) {\n const modalClasses = [\n 'tyk-modal',\n `tyk-modal--theme-${theme}`,\n opened && 'opened',\n ].concat(className.split(' ')).filter(Boolean).join(' ');\n\n const backdropClasses = [\n 'tyk-modal__backdrop',\n opened && 'opened',\n ].filter(Boolean).join(' ');\n\n const themeIcon = {\n success: 'check',\n warning: 'warning',\n danger: 'delete',\n }[theme];\n\n return (\n <>\n {\n ReactDOM.createPortal(\n \n
    \n
    \n
    \n {theme !== 'none' && (\n
    \n \n
    \n )}\n { children }\n
    \n
    \n
    \n ,\n document.querySelector('body'),\n )\n }\n {showBackdrop && ReactDOM.createPortal(\n \n !disableCloseCommands && onClose()}\n onKeyDown={() => {}}\n type=\"button\"\n aria-label=\"Close\"\n />\n ,\n document.querySelector('body'),\n )}\n \n );\n}\n\nModal.Body = ModalBody;\nModal.Footer = ModalFooter;\n/* eslint-disable-next-line */\nModal.Header = ({ children }) => {\n console.warn('%cModal.Header%c is deprecated.', 'font-weight: bold', '');\n return (\n
    \n { children }\n
    \n );\n};\n/* eslint-disable-next-line */\nModal.Title = ({ children }) => {\n console.warn('%cModal.Title%c is deprecated.', 'font-weight: bold', '');\n return (\n

    \n { children }\n

    \n );\n};\n\nModal.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]),\n className: PropTypes.string,\n /** one of \"success\", \"warning\", \"danger\", \"none\"; default is \"none\" */\n theme: PropTypes.string,\n /** If set on true, the Modal won't close when clicking on the overlay or by pressing ESC key */\n disableCloseCommands: PropTypes.bool,\n /** If true the Modal will be by default opened */\n opened: PropTypes.bool,\n /** Callback method when the Modal is closed */\n onClose: PropTypes.func,\n /** Width of the Moda: md or lg */\n size: PropTypes.string,\n showBackdrop: PropTypes.bool,\n};\n\nexport default Modal;\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Button from '../Button';\nimport Modal from '../Modal';\n\n/**\n * Confirm component can be used to open a dialog () before a specific action\n */\nfunction Confirm(props) {\n const {\n children,\n title,\n description,\n confirmBtnText = 'Confirm',\n cancelBtnText = 'Cancel',\n } = props;\n const [open, setOpen] = useState(false);\n const [callback, setCallback] = useState(null);\n const [cancelCallback, setCancelCallback] = useState(null);\n\n const show = (callbackFunc, cancelCallbackFunc, beforeCallback) => (...args) => {\n if (beforeCallback) {\n beforeCallback(...args);\n }\n setOpen(true);\n setCallback(() => () => callbackFunc(...args));\n if (cancelCallbackFunc) {\n setCancelCallback(() => () => cancelCallbackFunc(...args));\n }\n };\n\n const hide = () => {\n setOpen(false);\n setCallback(null);\n setCancelCallback(null);\n };\n\n const cancel = () => {\n if (cancelCallback) {\n cancelCallback();\n }\n hide();\n };\n\n const confirm = () => {\n callback();\n hide();\n };\n\n return (\n <>\n {children(show)}\n \n \n

    {title}

    \n {description}\n
    \n \n \n {cancelBtnText}\n \n \n {confirmBtnText}\n \n \n
    \n \n );\n}\n\nConfirm.propTypes = {\n /** Sets the text for primary / confirmation button on opened modal */\n confirmBtnText: PropTypes.string,\n /** Sets the text for danger / abort button on opened modal */\n cancelBtnText: PropTypes.string,\n /** Sets the title for the opened modal */\n title: PropTypes.string,\n /** Sets the description for the opened modal */\n description: PropTypes.string,\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.string,\n PropTypes.object,\n PropTypes.node,\n PropTypes.func,\n ]),\n};\n\nexport default Confirm;\n","import React, { useCallback, useEffect, useRef } from 'react';\nimport PropTypes from 'prop-types';\n\nimport debounce from '../../utils/debounce';\n/**\n * FixedWrapper component, keeps all its children in a fix position on the page,\n * even if the scroll position changes\n * i.e: The top navigation bar of a page sits within FixedWrapper component\n */\nfunction FixedWrapper({ children, className, showShadow }) {\n const fixedWrapperRef = useRef(null);\n\n const attachShadow = useCallback(() => {\n const element = fixedWrapperRef.current;\n\n if (!element) {\n return;\n }\n\n if (window.scrollY) {\n element.classList.add('tyk-fixed-wrapper--scrolled');\n } else {\n element.classList.remove('tyk-fixed-wrapper--scrolled');\n }\n }, [fixedWrapperRef.current]);\n\n const debouncedAttachShadow = useCallback(debounce(attachShadow, 100), [attachShadow]);\n\n useEffect(() => {\n if (showShadow) {\n window.addEventListener('scroll', debouncedAttachShadow);\n }\n\n return () => {\n window.removeEventListener('scroll', debouncedAttachShadow);\n };\n }, [debouncedAttachShadow, showShadow]);\n\n return (\n
    \n { children }\n
    \n );\n}\n\nFixedWrapper.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]),\n /** Css classes that can be passed to the FixedWraper element */\n className: PropTypes.string,\n /** If true, bottom shadow on the FixedWrapper component\n * is being displayed when scroll happens\n */\n showShadow: PropTypes.bool,\n};\n\nFixedWrapper.defaultProps = {\n className: '',\n};\n\nexport default FixedWrapper;\n","import React, {\n useEffect, useState, useRef, useCallback,\n} from 'react';\nimport { PropTypes } from 'prop-types';\n\nimport debounce from '../../utils/debounce';\nimport { usePrevious, useComponentSize } from '../../hooks';\nimport Loader from '../Loader';\n\nfunction InfiniteScroller({\n children,\n hasMore,\n initialLoad,\n loadMore,\n pageNumber,\n refChild,\n}) {\n const [showLoader, setShowLoader] = useState(false);\n const containerRef = useRef(null);\n const refChildSize = useComponentSize(refChild);\n\n useEffect(() => {\n if (initialLoad && typeof loadMore === 'function') {\n setShowLoader(false);\n loadMore(pageNumber);\n }\n }, [initialLoad]);\n\n const shouldLoad = useCallback(() => {\n if (!containerRef.current) return false;\n const { clientHeight, scrollTop } = containerRef.current;\n\n return (\n hasMore\n && (\n (clientHeight + Math.round(scrollTop) === refChildSize.height)\n || (clientHeight >= refChildSize.height)\n )\n );\n }, [containerRef, refChildSize.height]);\n\n const loadMoreData = useCallback(() => {\n if (hasMore && typeof loadMore === 'function') {\n loadMore(pageNumber + 1);\n setShowLoader(true);\n } else {\n setShowLoader(false);\n }\n }, [hasMore, pageNumber]);\n\n const prevPageNumber = usePrevious(pageNumber);\n const scrollHandler = useCallback(debounce(() => {\n if (shouldLoad() && prevPageNumber <= pageNumber) {\n loadMoreData();\n }\n }, 200), [loadMoreData, shouldLoad]);\n\n useEffect(() => {\n containerRef.current?.addEventListener('scroll', scrollHandler);\n return () => containerRef.current?.removeEventListener('scroll', scrollHandler);\n }, [containerRef, scrollHandler]);\n\n // if content resets (page number resets) scroll to top\n useEffect(() => {\n if (prevPageNumber > 0 && pageNumber === 0) {\n containerRef.current.scrollTop = 0;\n }\n }, [containerRef, pageNumber]);\n\n const prevRefChildSize = usePrevious(refChildSize);\n useEffect(() => {\n if (\n refChildSize && prevRefChildSize\n && refChildSize.height !== prevRefChildSize.height\n && showLoader === true\n ) {\n setShowLoader(false);\n }\n }, [showLoader, refChildSize.height]);\n\n useEffect(() => {\n if (\n refChild && refChildSize.height < containerRef.current.clientHeight\n && refChildSize.height\n && hasMore\n ) {\n loadMoreData();\n }\n }, [containerRef, refChildSize, refChild, hasMore]);\n\n return (\n
    \n \n { children }\n
    \n {showLoader && (\n \n )}\n
    \n );\n}\n\nInfiniteScroller.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n hasMore: PropTypes.bool,\n initialLoad: PropTypes.bool,\n pageNumber: PropTypes.number,\n loadMore: PropTypes.func,\n refChild: PropTypes.instanceOf(Object),\n};\n\nInfiniteScroller.defaultProps = {\n hasMore: true,\n};\n\nexport default InfiniteScroller;\n","import React, {\n useEffect, useRef, forwardRef,\n} from 'react';\nimport { createPortal } from 'react-dom';\nimport PropTypes from 'prop-types';\nimport InfiniteScroller from '../InfiniteScroller';\n\n/**\n * It displays a container relative to another element.\n * Meant to be used for dropdowns, tooltips, and other similar components.\n */\nfunction FloatingContainer({\n element,\n size = 'auto',\n forceDisplay = 'auto',\n displayAxis = 'auto',\n preferredPosition,\n offset = 0,\n className,\n children,\n infiniteScrollerConfig,\n}, ref) {\n const localRef = useRef(null);\n const floatingContainerRef = ref || localRef;\n const contentWrapperRef = useRef(null);\n\n function determineDisplay() {\n const target = element.current;\n const container = floatingContainerRef.current;\n if (!container) return preferredPosition ?? displayAxis === 'vertical' ? 'bottom' : 'right';\n\n const { left, top } = target.getBoundingClientRect();\n const topSpace = top;\n const bottomSpace = window.innerHeight - top - target.offsetHeight;\n const leftSpace = left;\n const rightSpace = window.innerWidth - left - target.offsetWidth;\n const hasTopSpace = topSpace > container.scrollHeight;\n const hasBottomSpace = bottomSpace > container.scrollHeight;\n const hasLeftSpace = leftSpace > container.offsetWidth;\n const hasRightSpace = rightSpace > container.offsetWidth;\n const positionedVerticallyFitsInViewport = left + target.offsetWidth / 2 - container.offsetWidth / 2 > 0; // eslint-disable-line max-len\n const positionedHorizontallyFitsInViewport = top + target.offsetHeight / 2 - container.scrollHeight / 2 > 0; // eslint-disable-line max-len\n\n if (\n displayAxis === 'vertical'\n || (\n displayAxis === 'auto'\n && (hasTopSpace || hasBottomSpace)\n && positionedVerticallyFitsInViewport\n )\n ) {\n if (preferredPosition === 'top' && hasTopSpace) return 'top';\n if (preferredPosition === 'bottom' && hasBottomSpace) return 'bottom';\n return hasBottomSpace || bottomSpace > topSpace ? 'bottom' : 'top';\n }\n\n if (displayAxis === 'horizontal') {\n if (preferredPosition === 'left' && hasLeftSpace) return 'left';\n if (preferredPosition === 'right' && hasLeftSpace) return 'right';\n return hasRightSpace || rightSpace > leftSpace ? 'right' : 'left';\n }\n\n if (hasTopSpace && positionedVerticallyFitsInViewport) return 'top';\n if (hasBottomSpace && positionedVerticallyFitsInViewport) return 'bottom';\n if (hasRightSpace && positionedHorizontallyFitsInViewport) return 'right';\n if (hasLeftSpace && positionedHorizontallyFitsInViewport) return 'left';\n return preferredPosition ?? 'bottom';\n }\n\n function adjustPosition() {\n const display = forceDisplay !== 'auto' ? forceDisplay : determineDisplay();\n const target = element.current;\n const container = floatingContainerRef.current;\n\n if (!target || !container) return;\n\n const targetPosition = target.getBoundingClientRect();\n\n if (display === 'top') {\n const topPos = targetPosition.top - container.offsetHeight - offset;\n container.style.top = `${topPos}px`;\n container.style.left = (size === 'auto'\n ? `${targetPosition.left + target.offsetWidth / 2 - container.offsetWidth / 2}px`\n : `${targetPosition.left}px`);\n\n if (size === 'matchElement') {\n container.style.width = `${target.offsetWidth}px`;\n } else if (typeof size === 'function') {\n container.style.width = `${size(target.offsetWidth)}px`;\n }\n container.style.maxHeight = `${targetPosition.top - offset}px`;\n }\n\n if (display === 'bottom') {\n container.style.top = `${targetPosition.bottom + offset}px`;\n container.style.left = size === 'auto'\n ? `${targetPosition.left + target.offsetWidth / 2 - container.offsetWidth / 2}px`\n : `${targetPosition.left}px`;\n if (size === 'matchElement') {\n container.style.width = `${target.offsetWidth}px`;\n } else if (typeof size === 'function') {\n container.style.width = `${size(target.offsetWidth)}px`;\n }\n container.style.maxHeight = `${window.innerHeight - targetPosition.bottom - offset}px`;\n }\n\n if (display === 'left') {\n const topPos = targetPosition.top + target.offsetHeight / 2 - container.offsetHeight / 2;\n container.style.top = size === 'auto'\n ? `${topPos}px`\n : `${targetPosition.top}px`;\n container.style.left = `${targetPosition.left - container.offsetWidth - offset}px`;\n if (size === 'matchElement') {\n container.style.height = `${target.offsetHeight}px`;\n } else if (typeof size === 'function') {\n container.style.height = `${size(target.offsetHeight)}px`;\n }\n container.style.maxWidth = `${targetPosition.left - offset}px`;\n }\n\n if (display === 'right') {\n const topPos = targetPosition.top + target.offsetHeight / 2 - container.offsetHeight / 2;\n container.style.top = size === 'auto'\n ? `${topPos}px`\n : `${targetPosition.top}px`;\n container.style.left = `${targetPosition.left + target.offsetWidth + offset}px`;\n if (size === 'matchElement') {\n container.style.height = `${target.offsetHeight}px`;\n } else if (typeof size === 'function') {\n container.style.height = `${size(target.offsetHeight)}px`;\n }\n container.style.maxWidth = `${window.innerWidth - targetPosition.left - target.offsetWidth - offset}px`;\n }\n }\n\n useEffect(() => {\n window.requestAnimationFrame(function schedulePositionUpdate() {\n adjustPosition();\n window.requestAnimationFrame(schedulePositionUpdate);\n });\n }, []);\n\n return createPortal(\n \n \n \n {children}\n
    \n \n
    ,\n document.querySelector('body'),\n );\n}\n\nFloatingContainer.propTypes = {\n /** A DOM element that the floating container will be displayed relative to. */\n element: PropTypes.instanceOf(Object),\n className: PropTypes.string,\n /** The size of the container.\n * If `auto` the size will be determined by its contents.\n * If `matchElement` it will take the width or the height of the element depending\n * on the `displayAxis` prop.\n * It can also be a function that returns a number representing the width\n * or the height in pixels.\n */\n size: PropTypes.oneOfType([\n PropTypes.oneOf(['auto', 'matchElement']),\n PropTypes.func,\n ]),\n /**\n * The distance between the element and the floating container.\n * It can be positive or negative.\n */\n offset: PropTypes.number,\n /**\n * If `auto` the component will try to determine where to display the container relative to the\n * element (top, bottom, left, right).\n * It can also be one of top, bottom, left, right, to force the floating container to always be\n * displayed in that position.\n */\n forceDisplay: PropTypes.oneOf(['auto', 'top', 'bottom', 'left', 'right']),\n /**\n * It can be `auto`, `vertical` or `horizontal`. It specifies the axis where\n * it will be displayed when `forceDisplay` is `auto`.\n */\n displayAxis: PropTypes.oneOf(['auto', 'vertical', 'horizontal']),\n /**\n * If there is space on both sides of the axis preffer this side.\n */\n preferredPosition: PropTypes.oneOf(['top', 'bottom', 'left', 'right']),\n /**\n * Configuration object that will be passed to the infinite scroller component.\n */\n infiniteScrollerConfig: PropTypes.instanceOf(Object),\n};\n\nexport default forwardRef(FloatingContainer);\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport Message from '../Message';\n\nfunction InfoNote({ children }) {\n return (\n
    \n \n { children }\n \n
    \n );\n}\n\nInfoNote.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]),\n};\n\nexport default InfoNote;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nconst ListItem = (props) => {\n const {\n className,\n children,\n } = props;\n\n return (\n
  • \n {children}\n
  • \n );\n};\n\nListItem.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n className: PropTypes.string,\n};\n\nListItem.defaultProps = {\n className: '',\n};\n\nexport default ListItem;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { fromJS } from 'immutable';\nimport ListItem from './js/ListItem';\n\nconst List = (props) => {\n const {\n className,\n children,\n label,\n labelwidth,\n theme,\n style,\n } = props;\n\n const getCssClasses = () => {\n let cssClasses = ['tyk-list'];\n\n if (theme) {\n cssClasses.push(`tyk-list--${theme}`);\n }\n\n if (className) {\n cssClasses = cssClasses.concat(className.split(' '));\n }\n\n return cssClasses.join(' ');\n };\n\n const getListStyle = () => {\n const styleCopy = fromJS(style).toJS();\n if (labelwidth) {\n styleCopy.flexBasis = `calc(100% - ${labelwidth} - 20px)`;\n }\n\n return styleCopy;\n };\n\n return (\n
    \n {\n label !== undefined\n ? (\n \n )\n : null\n }\n
      \n {children}\n
    \n
    \n );\n};\n\nList.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n className: PropTypes.string,\n label: PropTypes.string,\n labelwidth: PropTypes.string,\n theme: PropTypes.string,\n style: PropTypes.instanceOf(Object),\n};\n\nList.defaultProps = {\n theme: 'default',\n style: {},\n};\n\n\nList.Item = ListItem;\n\n\nexport default List;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nfunction NavBar({\n align = 'center',\n children,\n left,\n right,\n title,\n pre,\n subtitle,\n withTabs,\n}) {\n const subtitleContent = subtitle ?

    { subtitle }

    : null;\n return (\n
    \n
    \n {pre && (\n
    {pre}
    \n )}\n {\n title\n ? (\n
    \n

    { title }

    \n { subtitleContent }\n
    \n )\n : subtitleContent\n }\n
    \n {left && (\n
    { left }
    \n )}\n {right && (\n
    { right }
    \n )}\n
    \n
    \n { children }\n
    \n );\n}\n\nNavBar.propTypes = {\n align: PropTypes.string,\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n title: PropTypes.string,\n subtitle: PropTypes.string,\n pre: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n ]),\n left: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n ]),\n right: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n ]),\n withTabs: PropTypes.bool,\n};\n\nexport default NavBar;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nfunction NavigationItem({ children }) {\n return (\n
  • \n {children}\n
  • \n );\n}\n\nNavigationItem.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n};\n\nexport default NavigationItem;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport NavigationItem from './js/NavigationItem';\n\nfunction Navigation({ children }) {\n return (\n
      \n {children}\n
    \n );\n}\n\nNavigation.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n};\n\nNavigation.Item = NavigationItem;\n\nexport default Navigation;\n","import { createContext } from 'react';\n\nexport const PortalContext = createContext();\n","import React, { useCallback } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Collapsible from '../../Collapsible';\nimport { PortalContext } from '../panel-context';\n\nfunction PanelBody({\n children,\n noPadding,\n className,\n ...rest\n}) {\n const getCssClasses = useCallback(\n () => [\n 'tyk-panel__body',\n className,\n noPadding && 'no-padding',\n ].filter(Boolean).join(' '),\n [className, noPadding],\n );\n\n return (\n \n {\n (portalContext) => (\n portalContext.collapsable\n ? (\n \n { children }\n \n )\n : (\n \n { children }\n
    \n )\n )\n }\n \n );\n}\n\nPanelBody.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]),\n noPadding: PropTypes.bool,\n className: PropTypes.string,\n};\n\nexport default PanelBody;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nconst PanelFooter = (props) => {\n const { children } = props;\n return (\n
    \n { children }\n
    \n );\n};\n\nPanelFooter.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]),\n};\n\nexport default PanelFooter;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Icon from '../../Icon';\nimport { PortalContext } from '../panel-context';\n\nexport default class PanelHeader extends Component {\n static propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]).isRequired,\n className: PropTypes.string,\n }\n\n getCssClasses(props) {\n const { className } = this.props;\n let cssClasses = ['tyk-panel__header'];\n\n if (props.collapsable) {\n cssClasses.push('collapsable');\n }\n\n if (className) {\n cssClasses = cssClasses.concat(className.split(' '));\n }\n\n return cssClasses.join(' ');\n }\n\n render() {\n const {\n children,\n } = this.props;\n\n return (\n \n {\n (portalContext) => {\n const HeaderTag = portalContext.theme === 'blank' ? 'h3' : 'div';\n const iconType = portalContext.collapsed ? 'chevron-down' : 'chevron-up';\n\n return (\n \n { children }\n {\n portalContext.collapsable\n ?
    \n : null\n }\n \n );\n }\n }\n
    \n );\n }\n}\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport PanelBody from './js/PanelBody';\nimport PanelFooter from './js/PanelFooter';\nimport PanelHeader from './js/PanelHeader';\n\n\nimport { PortalContext } from './panel-context';\n\n\nconst Panel = (props) => {\n const {\n children,\n className,\n collapsed,\n collapsable,\n theme,\n onToggleCollapse,\n collapsibleIconPosition = 'right',\n } = props;\n const [collapsedState, setCollapsedState] = useState(collapsed || false);\n\n useEffect(() => {\n if (collapsed !== collapsedState) {\n setCollapsedState(collapsed);\n }\n }, [collapsed]);\n\n const getCssClasses = () => {\n let cssClasses = ['tyk-panel'];\n const panelTheme = `tyk-panel--${theme || 'default'}`;\n const collapsbleIconPosition = `tyk-panel__icon-collapse--${collapsibleIconPosition}`;\n\n cssClasses.push(panelTheme);\n cssClasses.push(collapsbleIconPosition);\n\n if (className) {\n cssClasses = cssClasses.concat(className.split(' '));\n }\n\n if (collapsedState) {\n cssClasses.push('tyk-panel--collapsed');\n }\n\n return cssClasses.join(' ');\n };\n\n const handleToggle = () => {\n setCollapsedState(!collapsedState);\n\n if (onToggleCollapse) {\n onToggleCollapse(!collapsedState);\n }\n };\n\n return (\n
    \n \n {\n (typeof children === 'function')\n ? children({\n toggleCollapse: handleToggle,\n })\n : children\n }\n \n
    \n );\n};\n\nPanel.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.func,\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]),\n className: PropTypes.string,\n collapsable: PropTypes.bool,\n collapsibleIconPosition: PropTypes.string,\n collapsed: PropTypes.bool,\n theme: PropTypes.string,\n onToggleCollapse: PropTypes.func,\n};\n\n\nPanel.Body = PanelBody;\nPanel.Footer = PanelFooter;\nPanel.Header = PanelHeader;\n\nexport default Panel;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n/**\n * Pill\n *\n */\nconst Pill = (props) => {\n const {\n children,\n className,\n theme,\n } = props;\n\n const getCssClasses = () => {\n let cssClasses = ['tyk-pill', ...theme.split(' ').map(t => `tyk-pill--${t}`)];\n\n if (className) {\n cssClasses = cssClasses.concat(className);\n }\n\n return cssClasses.join(' ');\n };\n\n return (\n
    \n {children}\n
    \n );\n};\n\nPill.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n /** Css classes that can be passed to the Pill element */\n className: PropTypes.string,\n /** Theme that can be applied to a Pill */\n theme: PropTypes.string,\n};\n\nPill.defaultProps = {\n theme: 'default',\n};\n\nexport default Pill;\n","import { useRef } from 'react';\n\n/**\n * RevealPanelService is a class that manages the resizing of a panel element.\n * It provides methods to set the panel's height, hide and show it, and attach\n * event listeners for resizing.\n */\nclass RevealPanelService {\n #state = null; // Private state for mouse interactions.\n\n #panel = null; // The panel element to be resized.\n\n #gutter = null; // The gutter element used for resizing.\n\n #wrapper = null; // The wrapper element that contains the panel and gutter.\n\n #onHeightChangeCallbacks = []; // Callback function to be executed when the panel is resized.\n\n #onDragStartCallbacks = []; // Callback function to be executed when the panel is resized.\n\n #onDragEndCallbacks = []; // Callback function to be executed when the panel is resized.\n\n #dragStarted = false;\n /**\n * Sets a callback function to be executed when the panel is resized.\n * @param {function} callback - The callback function to be called on panel resize.\n */\n\n on(eventName, listener) {\n let list = null;\n if (eventName === 'onHeightChange') {\n list = this.#onHeightChangeCallbacks;\n } else if (eventName === 'onDragStart') {\n list = this.#onDragStartCallbacks;\n } else if (eventName === 'onDragEnd') {\n list = this.#onDragEndCallbacks;\n }\n\n if (list) {\n this.addListener(list, listener);\n }\n }\n\n off(eventName, listener) {\n let list = null;\n if (eventName === 'onHeightChange') {\n list = this.#onHeightChangeCallbacks;\n } else if (eventName === 'onDragStart') {\n list = this.#onDragStartCallbacks;\n } else if (eventName === 'onDragEnd') {\n list = this.#onDragEndCallbacks;\n }\n\n if (list) {\n this.removeListener(list, listener);\n }\n }\n\n /**\n * Sets the panel, gutter, and wrapper elements to be controlled by this class.\n * @param {HTMLElement} wrapper - The wrapper element containing the panel and gutter.\n * @param {HTMLElement} panel - The panel element to be resized.\n * @param {HTMLElement} gutter - The gutter element used for resizing.\n */\n setRefs(wrapper, panel, gutter) {\n if (this.#panel || this.#gutter || this.#wrapper) {\n this.unbindEvents();\n }\n this.#wrapper = wrapper;\n this.#panel = panel;\n this.#gutter = gutter;\n this.#state = null;\n this.bindEvents();\n }\n\n /**\n * Attaches event listeners for panel resizing.\n */\n bindEvents() {\n this.ensureRefs('bindEvents');\n this.#gutter.addEventListener('mousedown', this.onMouseDown.bind(this));\n document.addEventListener('mousemove', this.onMouseMove.bind(this));\n document.addEventListener('mouseup', this.onMouseUp.bind(this));\n }\n\n /**\n * Gets the current height of the panel.\n * @returns {number} - The height of the panel in pixels.\n */\n getHeight() {\n this.ensureRefs('getHeight');\n const size = this.#panel.getBoundingClientRect();\n return size.height;\n }\n\n /**\n * Handles the mouse down event, initiating the resizing process.\n * @param {MouseEvent} e - The mouse event object.\n */\n onMouseDown(e) {\n this.ensureRefs('onMouseDown');\n this.#state = {\n mouseDown: true,\n initialRect: this.#panel.getBoundingClientRect(),\n initialEvent: e,\n };\n }\n\n /**\n * Handles the mouse move event, adjusting the panel's height during resizing.\n * @param {MouseEvent} e - The mouse event object.\n */\n onMouseMove(e) {\n this.ensureRefs('onMouseMove');\n\n if (!this.#state) {\n return;\n }\n\n const isButtonDown = this.isPrimaryMouseButtonDown(e);\n if (!isButtonDown) {\n this.onMouseUp();\n return;\n }\n\n if (!this.#dragStarted) {\n this.#dragStarted = true;\n this.onDragStart.bind(this)();\n }\n\n const newY = this.#state.initialEvent.y - e.y;\n const finalHeight = Math.ceil(this.#state.initialRect.height + newY);\n this.setHeight(`${finalHeight}px`, 'mousemove');\n }\n\n // eslint-disable-next-line class-methods-use-this\n notifyListeners(list, value) {\n if (list && Array.isArray(list) && list.length) {\n list.forEach((fn) => {\n if (typeof fn === 'function') {\n fn(value);\n }\n });\n }\n }\n\n // eslint-disable-next-line class-methods-use-this\n addListener(list, listener) {\n if (list && Array.isArray(list) && typeof listener === 'function') {\n list.push(listener);\n }\n }\n\n // eslint-disable-next-line class-methods-use-this\n removeListener(list, listener) {\n if (list && Array.isArray(list) && typeof listener === 'function' && list.length) {\n const index = list.indexOf(listener);\n\n if (index > -1) {\n list.splice(index, 1);\n }\n }\n }\n\n onDragEnd() {\n if (this.#dragStarted) {\n this.notifyListeners(this.#onDragEndCallbacks, this.getHeight());\n }\n }\n\n onDragStart() {\n this.notifyListeners(this.#onDragStartCallbacks, this.getHeight());\n }\n\n // eslint-disable-next-line class-methods-use-this\n isPrimaryMouseButtonDown(e) {\n const flags = e.buttons !== undefined ? e.buttons : e.which;\n // eslint-disable-next-line no-bitwise\n const isDown = flags === 1;\n return isDown;\n }\n\n /**\n * Resets the state after the mouse up event, ending the resizing process.\n */\n onMouseUp() {\n this.#state = null;\n this.onDragEnd.bind(this)();\n this.#dragStarted = false;\n }\n\n /**\n * Sets the height of the panel.\n * @param {string} height - The new height value as a CSS string (e.g., \"100px\").\n */\n setHeight(height) {\n let heightVal = height;\n this.ensureRefs('setHeight');\n\n if (typeof heightVal === 'number') {\n heightVal += 'px';\n }\n\n this.#panel.style.height = heightVal;\n\n this.notifyListeners(this.#onHeightChangeCallbacks, this.getHeight());\n }\n\n /**\n * Ensures that the required elements (wrapper, panel, and gutter) are set.\n * Throws an error if they are missing.\n */\n ensureRefs(reason) {\n if (!this.#panel || !this.#gutter || !this.#wrapper) {\n throw new Error(\n `${reason}: Wrapper, panel, and gutter elements are required. Use setRefs method first.`,\n );\n }\n }\n\n /**\n * Checks if the panel is hidden.\n * @returns {boolean} - True if the panel is hidden; false otherwise.\n */\n isHidden() {\n this.ensureRefs('isHidden');\n return this.#wrapper.style.visibility === 'hidden';\n }\n\n /**\n * Hides the panel by setting its visibility to \"hidden\".\n */\n hide() {\n this.ensureRefs('hide');\n this.#wrapper.style.visibility = 'hidden';\n }\n\n /**\n * Shows the panel by setting its visibility to \"visible\".\n */\n show() {\n this.ensureRefs('show');\n this.#wrapper.style.visibility = 'visible';\n }\n\n /**\n * Unbinds the event listeners added for resizing.\n */\n unbindEvents() {\n this.#onHeightChangeCallbacks = [];\n this.#onDragStartCallbacks = [];\n this.#onDragEndCallbacks = [];\n this.#gutter.removeEventListener('mousedown', this.onMouseDown.bind(this));\n document.removeEventListener('mousemove', this.onMouseMove.bind(this));\n document.removeEventListener('mouseup', this.onMouseUp.bind(this));\n }\n\n deinit() {\n this.unbindEvents();\n }\n}\n\nexport const useRevealPanelService = () => {\n const revealPanelServiceRef = useRef(new RevealPanelService());\n return revealPanelServiceRef.current;\n};\n","import React, {\n useEffect,\n useRef,\n useImperativeHandle,\n forwardRef,\n} from 'react';\nimport PropTypes from 'prop-types';\nimport { createPortal } from 'react-dom';\nimport { useRevealPanelService } from './js/RevealPanelService';\n\nfunction RevealPanelHeaderLeft({ children }) {\n // eslint-disable-next-line react/jsx-no-useless-fragment\n return <>{children};\n}\n\nRevealPanelHeaderLeft.propTypes = {\n children: PropTypes.instanceOf({}),\n};\n\nfunction RevealPanelHeaderRight({ children }) {\n // eslint-disable-next-line react/jsx-no-useless-fragment\n return <>{children};\n}\n\nRevealPanelHeaderRight.propTypes = {\n children: PropTypes.instanceOf({}),\n};\n\nconst mergeClasses = (...classNames) => classNames.map((it) => (it || '').trim()).filter(Boolean).join(' ');\n\nconst RevealPanel = forwardRef(({\n children,\n height,\n onHeightChange = null,\n onDragStart = null,\n onDragEnd = null,\n style = null,\n parentSelector = null,\n contentStyle,\n contentClassName,\n gutterClassName,\n wrapperClassName,\n// eslint-disable-next-line consistent-return\n}, ref) => {\n const panelRef = useRef(null);\n const gutterRef = useRef(null);\n const wrapperRef = useRef(null);\n\n const panelService = useRevealPanelService();\n\n useEffect(() => {\n if (!panelRef.current || !gutterRef.current || !wrapperRef.current) {\n return;\n }\n\n if (!panelService) {\n return;\n }\n\n panelService.setRefs(wrapperRef.current, panelRef.current, gutterRef.current);\n panelService.on('onHeightChange', onHeightChange);\n panelService.on('onDragStart', onDragStart);\n panelService.on('onDragEnd', onDragEnd);\n panelService.setHeight(height, 'initialize');\n\n // eslint-disable-next-line consistent-return\n return () => {\n panelService.unbindEvents();\n };\n }, []);\n\n useImperativeHandle(\n ref,\n () => {\n // bind this context\n const bind = (func) => func.bind(panelService);\n\n return {\n getHeight: bind(panelService.getHeight),\n setHeight: bind(panelService.setHeight),\n hide: bind(panelService.hide),\n show: bind(panelService.show),\n isHidden: bind(panelService.isHidden),\n deinit: bind(panelService.deinit),\n on: bind(panelService.on),\n off: bind(panelService.off),\n };\n },\n [],\n );\n\n let headerLeft = null;\n let headerRight = null;\n const contents = [];\n\n React.Children.forEach(children, (child) => {\n if (child && React.isValidElement(child)) {\n if (child.type === RevealPanelHeaderLeft) {\n headerLeft = child;\n } else if (child.type === RevealPanelHeaderRight) {\n headerRight = child;\n } else {\n contents.push(child);\n }\n }\n });\n\n const element = (\n
    \n
    \n
    \n\n
    {headerLeft}
    \n
    \n
    {headerRight}
    \n\n
    \n
    \n {contents}\n
    \n
    \n );\n\n if (parentSelector) {\n return createPortal(element, document.querySelector(parentSelector));\n }\n});\n\nRevealPanel.propTypes = {\n children: PropTypes.instanceOf({}),\n height: PropTypes.string,\n onHeightChange: PropTypes.func,\n onDragStart: PropTypes.func,\n onDragEnd: PropTypes.func,\n parentSelector: PropTypes.string,\n style: PropTypes.instanceOf({}),\n contentStyle: PropTypes.instanceOf({}),\n contentClassName: PropTypes.string,\n gutterClassName: PropTypes.string,\n wrapperClassName: PropTypes.string,\n};\n\nRevealPanel.HeaderLeft = RevealPanelHeaderLeft;\nRevealPanel.HeaderRight = RevealPanelHeaderRight;\n\nexport default RevealPanel;\n","import { createContext } from 'react';\n\nexport const TabsContext = createContext();\n","import { createContext } from 'react';\n\nexport default createContext();\n","import React, { useEffect, useMemo } from 'react';\nimport PropTypes from 'prop-types';\n\nimport TabContext from './TabContext';\nimport { usePrevious } from '../../../hooks';\n\nconst TabContent = (props) => {\n const {\n addTab,\n hideTab,\n updateTab,\n showTab,\n children,\n selectedPath,\n tabData,\n tabsId,\n tabExists,\n path,\n rendered,\n hideTabContent,\n tabs,\n } = props;\n\n useEffect(() => {\n const tempTabData = { ...tabData };\n\n if (!tabExists(path)) {\n addTab(tempTabData, path);\n }\n }, [tabData, path]);\n\n const prevTabData = usePrevious(tabData);\n useEffect(() => {\n if (\n tabExists(path) && tabData?.title\n && (prevTabData?.title !== tabData?.title || prevTabData.selected !== tabData.selected)\n ) {\n const tempTabData = { ...tabData };\n updateTab(tempTabData, path);\n }\n }, [tabData, path, prevTabData, tabs]);\n\n useEffect(() => {\n showTab(path);\n return () => hideTab(path);\n }, []);\n\n const shouldRender = useMemo(() => {\n if (!Object.keys(tabs).length) {\n return false;\n }\n\n if (hideTabContent || tabs[tabData.id].show === false) {\n return false;\n }\n\n if (!rendered) {\n return tabExists(path);\n }\n return selectedPath && selectedPath.indexOf(tabData.id) > -1;\n }, [hideTabContent, rendered, selectedPath, tabData, tabs]);\n\n return (\n (\n shouldRender\n ? (\n
    -1 ? 'block' : 'none' }}>\n \n {children}\n \n
    \n )\n : null\n )\n );\n};\n\nTabContent.propTypes = {\n addTab: PropTypes.func,\n updateTab: PropTypes.func,\n hideTab: PropTypes.func,\n showTab: PropTypes.func,\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n path: PropTypes.instanceOf(Array),\n hideTabContent: PropTypes.bool,\n rendered: PropTypes.bool,\n selectedPath: PropTypes.instanceOf(Array),\n tabExists: PropTypes.func,\n tabsId: PropTypes.string,\n tabData: PropTypes.instanceOf(Object),\n tabs: PropTypes.instanceOf(Object),\n};\n\nexport default TabContent;\n","import React, {\n Fragment, useContext, useEffect, useState,\n} from 'react';\nimport PropTypes from 'prop-types';\nimport { TabsContext } from '../tabs-context';\nimport TabContext from './TabContext';\nimport TabContent from './TabContent';\n\nconst Tab = (props) => {\n const { id } = props;\n const tabsContext = useContext(TabsContext);\n const tabContext = useContext(TabContext);\n const {\n tabExists,\n selectedPath,\n addTab,\n updateTab,\n hideTab,\n showTab,\n rendered,\n hideTabContent,\n tabs,\n } = tabsContext;\n const {\n children,\n } = props;\n const [path, setPath] = useState('');\n\n useEffect(() => {\n let tempPath;\n if (tabContext && path) {\n if (tabContext.tabsId === tabsContext.id) {\n tempPath = tabContext.path.concat([id]);\n } else {\n tempPath = [id];\n }\n } else {\n tempPath = [id];\n }\n setPath(tempPath);\n }, [tabContext]);\n\n if (!path) {\n return null;\n }\n\n return (\n \n \n {children}\n \n \n );\n};\n\nTab.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n id: PropTypes.string,\n};\n\nTab.defaultProps = {};\n\nexport default Tab;\n","\nimport React, {\n useEffect, useState,\n} from 'react';\nimport PropTypes from 'prop-types';\nimport Tab from './js/Tab';\n\nimport Collapsible from '../Collapsible';\nimport Icon from '../Icon';\nimport { TabsContext } from './tabs-context';\n\nconst Tabs = (props) => {\n const {\n children,\n className,\n id,\n onTabChange,\n type,\n hideTabContent,\n } = props;\n const [tabs, setTabs] = useState({});\n const [selectedPath, setSelectedPath] = useState([]);\n const [rendered, setRendered] = useState(false);\n const [initialPath, setInitialPath] = useState(null);\n\n useEffect(() => {\n setSelectedPath(initialPath);\n }, [initialPath]);\n\n const updateTabsList = (tabsState, path, tabData) => {\n let tempTabsState = Object.assign({}, tabsState);\n const tempTabData = Object.assign({}, tabData);\n const tempPath = path.slice(0);\n\n while (tempPath.length > 1) {\n tempTabsState = tempTabsState[tempPath.shift()];\n\n if (!tempTabsState) {\n tempTabsState = {};\n }\n }\n\n tempTabData.tempPath = tempPath;\n tempTabsState[tempPath.shift()] = tempTabData;\n\n return tempTabsState;\n };\n\n const toggleTab = (tabsState, path) => {\n let tempTabsState = Object.assign({}, tabsState);\n const tempPath = path.slice(0);\n\n while (tempPath.length > 1) {\n tempTabsState = tempTabsState[tempPath.shift()];\n }\n\n const key = tempPath.shift();\n if (tempTabsState[key].collapsed === undefined) {\n tempTabsState[key].collapsed = true;\n } else {\n tempTabsState[key].collapsed = !tempTabsState[key].collapsed;\n }\n\n return tempTabsState;\n };\n\n const getCssClasses = () => {\n let cssClasses = ['tyk-tabs'];\n\n cssClasses.push(`tyk-tabs--${type || 'default'}`);\n\n if (className) {\n cssClasses = cssClasses.concat(className.split(' '));\n }\n\n return cssClasses.join(' ');\n };\n\n const setCurrentSelectedPath = (path, tabData) => {\n const tempPath = path.slice(0);\n let tempRendered = true;\n\n if (tabData.collapsible) {\n tempPath.push(Object.keys(tabData.tabs)[0]);\n tempRendered = false;\n }\n\n setTabs((prevTabs) => {\n let tempTabs = Object.assign({}, prevTabs);\n\n tempTabs = toggleTab(tempTabs, path);\n\n return tempTabs;\n });\n setSelectedPath(tempPath);\n setRendered(tempRendered);\n\n if (onTabChange) {\n onTabChange(tabData);\n }\n };\n\n const getTabCssClass = (tabId) => {\n const cssClasses = [];\n\n if (selectedPath && selectedPath.indexOf(tabId) > -1) {\n cssClasses.push('active');\n }\n\n return cssClasses.join(' ');\n };\n\n const genTabs = (currentTabs, path) => {\n if (!currentTabs) {\n return null;\n }\n\n return (\n
      \n {\n Object.keys(currentTabs).map((tabId, index) => {\n const tempPath = path ? path.concat([currentTabs[tabId].id]) : [currentTabs[tabId].id];\n const iconType = currentTabs[tabId].collapsed ? 'chevron-up' : 'chevron-down';\n\n if (currentTabs[tabId].show === false) {\n return null;\n }\n\n return (\n
    • \n \n { currentTabs[tabId].title }\n {\n currentTabs[tabId].collapsible\n ? \n : null\n }\n \n {\n currentTabs[tabId].collapsible\n ? (\n \n {genTabs(currentTabs[tabId].tabs, tempPath)}\n \n )\n : genTabs(currentTabs[tabId].tabs, tempPath)\n }\n
    • \n );\n })\n }\n
    \n );\n };\n\n const addTab = (tabData, path) => {\n setTabs(prevTabs => updateTabsList({ ...prevTabs }, path, tabData));\n\n if (tabData.selected) {\n setInitialPath(path);\n }\n };\n\n const updateTab = (tabData, path) => {\n setTabs((prevTabs) => {\n const tempTabs = { ...prevTabs };\n tempTabs[tabData.id] = tabData;\n return tempTabs;\n });\n\n if (tabData.selected) {\n setCurrentSelectedPath(path, tabData);\n }\n };\n\n const hideTab = (path) => {\n setTabs((prevTabs) => {\n const tempTabs = { ...prevTabs };\n tempTabs[path].show = false;\n\n return tempTabs;\n });\n };\n\n const showTab = (path) => {\n setTabs((prevTabs) => {\n const tempTabs = { ...prevTabs };\n\n tempTabs[path].show = true;\n\n return tempTabs;\n });\n };\n\n const tabExists = (path) => {\n let tempTabs = { ...tabs };\n const tempPath = path.slice(0);\n while (tempPath.length > 1) {\n tempTabs = tempTabs[tempPath.shift()];\n }\n\n const key = tempPath.shift();\n\n return !!(tempTabs && tempTabs[key]);\n };\n\n return (\n
    \n {genTabs(tabs)}\n \n {\n (typeof children === 'function')\n ? children({\n hideTab,\n showTab,\n })\n : children\n }\n \n
    \n );\n};\n\nTabs.propTypes = {\n className: PropTypes.string,\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n hideTabContent: PropTypes.bool,\n id: PropTypes.string,\n onTabChange: PropTypes.func,\n type: PropTypes.string,\n};\n\n\nTabs.Tab = Tab;\n\nexport default Tabs;\n","import React, {\n useCallback, useEffect, useRef, useState,\n} from 'react';\nimport PropTypes from 'prop-types';\n\nimport FloatingContainer from '../FloatingContainer';\nimport Icon from '../Icon';\n\nfunction Tooltip({\n render,\n className,\n children,\n position = 'auto',\n style,\n icon = false,\n closable,\n isOpened = false,\n additionalClickParents = [],\n ...props\n}) {\n const [isActive, setIsActive] = useState(false);\n const wrapperRef = useRef(null);\n const tooltipRef = useRef(null);\n const activeEvents = closable\n ? {\n onClick: () => setIsActive(true),\n }\n : {\n onMouseEnter: () => setIsActive(true),\n onMouseLeave: () => setIsActive(false),\n onFocus: () => setIsActive(true),\n onBlur: () => setIsActive(false),\n };\n\n const handleDocumentClick = useCallback((e) => {\n if ([...additionalClickParents, tooltipRef.current].some((p) => p?.contains?.(e.target))) {\n return;\n }\n setIsActive(false);\n }, [additionalClickParents]);\n\n useEffect(() => {\n document.addEventListener('click', handleDocumentClick, true);\n return () => document.removeEventListener('click', handleDocumentClick, true);\n }, [handleDocumentClick]);\n\n useEffect(() => {\n setIsActive(isOpened);\n }, [isOpened]);\n\n const classes = ['tyk-tooltip', className].filter(Boolean).join(' ');\n return (\n \n {children}\n {isActive && (\n \n
    \n {icon && (\n icon === true ? (\n \n ) : (\n icon\n )\n )}\n
    \n {render}\n
    \n {closable && (\n {\n e.stopPropagation();\n setIsActive(false);\n }}\n />\n )}\n
    \n \n )}\n
    \n );\n}\n\nTooltip.propTypes = {\n children: PropTypes.node.isRequired,\n /** custom styles to apply on hovered element */\n style: PropTypes.instanceOf(Object),\n /** describes where the tooltip should be displayed in relation\n * whith the hovered element: top, bottom, left, right\n */\n position: PropTypes.string,\n /** content of the tooltip, can be a string or a React node element */\n render: PropTypes.oneOfType([\n PropTypes.node,\n PropTypes.string,\n ]),\n /** additional tooltip classes */\n className: PropTypes.string,\n /** if `true` displays the \"question mark\" icon;\n * optionally you can pass a different icon\n */\n icon: PropTypes.oneOfType([\n PropTypes.bool,\n PropTypes.node,\n ]),\n /** if `true` the tooltip is activated on click and an \"x\" is displayed to close it;\n * if `false` the tooltip is activated on hover and it closes when no longer hovering\n */\n closable: PropTypes.bool,\n /** handles the `isActive` state of the tooltip from outside */\n isOpened: PropTypes.bool,\n /** Additional dom elements to check if the document click was inside of them.\n * Useful when you want to open the tooltip after an interaction\n * with an element not inside the tooltip root.\n */\n additionalClickParents: PropTypes.instanceOf(Array),\n};\n\nexport default Tooltip;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Tooltip from '../Tooltip';\n/**\n * TextEllipsis component helps you to hide a part of a text,\n * but displaying it when it's being hovered.\n * The entire text is displayed with the help of Tooltip component\n */\n\nfunction TextEllipsis({ text, limit, position }) {\n return (\n text.length > limit\n ? (\n \n {text.substring(0, limit)}\n ...\n \n )\n : text\n );\n}\n\nTextEllipsis.propTypes = {\n /** Text to be shrinked by TextEllipsis */\n text: PropTypes.string,\n /** Number of characters that TextEllipsis would leave visible */\n limit: PropTypes.number,\n /** tooltip position */\n position: PropTypes.string,\n};\n\nexport default TextEllipsis;\n","import React, { Component, Fragment } from 'react';\nimport PropTypes from 'prop-types';\n\nconst shouldShowPage = (currentNr, pageNr, totalNrOfPages) => {\n const basePageNr = 5;\n const minimumNrOfPages = 10;\n\n if (totalNrOfPages < minimumNrOfPages) {\n return true;\n }\n\n if (\n pageNr < basePageNr\n && currentNr < basePageNr\n ) {\n return true;\n }\n\n if (\n pageNr > totalNrOfPages - basePageNr\n && currentNr > totalNrOfPages - basePageNr\n ) {\n return true;\n }\n\n if (\n currentNr >= pageNr - 2\n && currentNr <= pageNr + 2\n ) {\n return true;\n }\n\n if ([0, 1, totalNrOfPages - 1, totalNrOfPages].indexOf(currentNr) > -1) {\n return true;\n }\n\n return false;\n};\n\nconst getPagesArr = (nrOfPages, selectedPage) => {\n let i; const\n pagesArr = [];\n\n for (i = 0; i <= nrOfPages; i += 1) {\n if (shouldShowPage(i, selectedPage, nrOfPages)) {\n if (i > pagesArr[pagesArr.length - 1]) {\n pagesArr.push('...');\n }\n pagesArr.push(i + 1);\n }\n }\n\n return pagesArr;\n};\n\nexport default class Pagination extends Component {\n static propTypes = {\n value: PropTypes.number,\n totalNrOfPages: PropTypes.number,\n onChange: PropTypes.func,\n };\n\n constructor(props) {\n super(props);\n const {\n value,\n totalNrOfPages,\n } = this.props;\n\n this.state = {\n prevProps: this.props,\n selectedPage: value || 0,\n pagesArray: getPagesArr(totalNrOfPages, value),\n };\n\n this.pageKey = 0;\n }\n\n static getDerivedStateFromProps(nextProps, prevState) {\n if (\n nextProps.value !== prevState.prevProps.value\n || nextProps.totalNrOfPages !== prevState.prevProps.totalNrOfPages\n ) {\n return {\n selectedPage: nextProps.value,\n pagesArray: getPagesArr(nextProps.totalNrOfPages, nextProps.value),\n };\n }\n\n return null;\n }\n\n getPageCssClass(pageNr) {\n const { selectedPage } = this.state;\n const cssClasses = [];\n\n if (selectedPage === pageNr) {\n cssClasses.push('active');\n }\n\n return cssClasses.join(' ');\n }\n\n getPageKey() {\n this.pageKey += 1;\n\n return this.pageKey;\n }\n\n goToPage(pageNr) {\n const { onChange, totalNrOfPages } = this.props;\n this.setState({\n selectedPage: pageNr,\n pagesArray: getPagesArr(totalNrOfPages, pageNr),\n }, () => {\n if (onChange) {\n onChange(pageNr);\n }\n });\n }\n\n render() {\n const { totalNrOfPages } = this.props;\n const { pagesArray, selectedPage } = this.state;\n\n return (\n \n {\n totalNrOfPages\n ? (\n
      \n {\n selectedPage > 0 && totalNrOfPages > 5\n ? (\n
    • \n \n
    • \n )\n : null\n }\n {\n pagesArray.map(pageNr => (\n
    • \n {\n pageNr !== '...'\n ? \n : { pageNr }\n }\n
    • \n ))\n }\n {\n selectedPage < totalNrOfPages && totalNrOfPages > 5\n ? (\n
    • \n \n
    • \n )\n : null\n }\n
    \n )\n : null\n }\n
    \n );\n }\n}\n","import { createContext } from 'react';\n\nexport const tableContext = createContext();\n","import React, { useState, useContext } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { tableContext } from '../tableContext';\nimport Icon from '../../Icon';\n\nexport const HeaderCell = ({ column }) => {\n const { sortable } = column;\n const [sortOrder, setSortOrder] = useState(sortable?.default || 'ASC');\n const { state, sendMessage } = useContext(tableContext);\n return (\n {\n sendMessage('sort', { column, sortOrder });\n setSortOrder(sortOrder === 'ASC' ? 'DESC' : 'ASC');\n } : null}\n className={state.maxHeight ? 'fixed-header' : ''}\n >\n {column.name}\n {column.sortable && (\n \n \n \n )}\n \n );\n};\n\nHeaderCell.propTypes = {\n column: PropTypes.instanceOf(Object),\n};\n","import React, { useContext, useState } from 'react';\nimport { HeaderCell } from './header-cell';\nimport { tableContext } from '../tableContext';\n\nexport const Header = () => {\n const [selectAll, setSelectAll] = useState(false);\n const { state, sendMessage } = useContext(tableContext);\n const { columns, selectable } = state;\n\n const generateHeaders = () => columns.map(column => (\n \n ));\n\n const generateSelectable = () => {\n if (!selectable) {\n return;\n }\n const Component = selectable.type;\n // eslint-disable-next-line consistent-return\n return (\n \n {selectable?.allowSelectAll ? (\n
    \n {\n setSelectAll(!selectAll);\n sendMessage('header.selectAll.click', selectAll);\n }}\n onChange={(v) => {\n sendMessage('header.selectAll.change', v);\n }}\n >\n {selectable.values?.value}\n \n
    \n ) : (\n selectable.name || 'Select'\n )}\n \n );\n };\n\n return (\n \n \n {selectable && selectable.position === 'LEFT' && generateSelectable()}\n {generateHeaders()}\n {selectable && selectable.position === 'RIGHT' && generateSelectable()}\n \n \n );\n};\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\n\n/**\n * - Checkboxes are used when a user needs to select one or more values from a series of options.\n * - They can be also be used as a binary toggle but consider radio instead.\n * - Can be used with Formik respectively (FormikCheckbox)\n */\nexport default class Checkbox extends Component {\n static propTypes = {\n /** Disable a checkbox */\n disabled: PropTypes.bool,\n /** Readonly prop behaves the same as disable on checkboxes */\n readOnly: PropTypes.bool,\n /** Align checkbox with in same line with other elements */\n inline: PropTypes.bool,\n /** Set a theme for checkbox */\n theme: PropTypes.string,\n /** Set an error state for checkbox if boolean will show just icon without message */\n error: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.bool,\n ]),\n /** Adds additional information under the checkbox element */\n note: PropTypes.string,\n input: PropTypes.instanceOf(Object),\n /** Adds a label to checkbox */\n label: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.func,\n PropTypes.string,\n ]),\n /** Set a name for checkbox */\n name: PropTypes.string,\n /** Set initial value for checkbox */\n value: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.bool,\n ]),\n /** Make checkbox checked by default */\n checked: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.bool,\n ]),\n /** Callback function executed on change of checkbox */\n onChange: PropTypes.func,\n /** CSS classes added to the wrapper of the component */\n wrapperClassName: PropTypes.string,\n };\n\n getCssClasses() {\n const {\n inline, disabled, readOnly, theme = '', wrapperClassName = '',\n } = this.props;\n\n const cssClasses = [wrapperClassName];\n\n cssClasses.push('tyk-checkbox');\n\n if (inline) {\n cssClasses.push('tyk-checkbox--inline');\n }\n\n if (theme.trim()) {\n cssClasses.push(...theme.split(' ').map(t => `tyk-checkbox--theme-${t}`));\n }\n\n if (disabled || readOnly) {\n cssClasses.push('tyk-checkbox--is-disabled');\n }\n\n return cssClasses.join(' ');\n }\n\n displayError() {\n const { error } = this.props;\n if (!error) return null;\n\n return (\n

    \n {error}\n

    \n );\n }\n\n displayNote() {\n const { note } = this.props;\n if (!note) return null;\n\n return (\n

    \n {note}\n

    \n );\n }\n\n render() {\n const {\n input, value, label, ...rest\n } = this.props;\n return (\n \n
    \n \n {this.displayNote()}\n {this.displayError()}\n
    \n \n );\n }\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nexport const Cell = ({ col, row }) => {\n if (!row.values[col.id]) {\n return ;\n }\n\n if (col.type === 'string') {\n return (\n // eslint-disable-next-line jsx-a11y/click-events-have-key-events\n \n {row.values[col.id]?.value}\n \n );\n }\n const Component = col.type;\n return (\n \n \n {row.values[col.id].children ? row.values[col.id].children : null}\n
    \n \n );\n};\n\nCell.propTypes = {\n col: PropTypes.instanceOf(Object),\n row: PropTypes.instanceOf(Object),\n index: PropTypes.number,\n};\n","import React, { useContext } from 'react';\nimport PropTypes from 'prop-types';\nimport Checkbox from '../../../form/components/Checkbox';\nimport { Cell } from './cell';\nimport { tableContext } from '../tableContext';\n\nexport const Row = ({ row, index }) => {\n const { state, sendMessage } = useContext(tableContext);\n const { columns, selectable } = state;\n\n const SelectableCheckbox = () => (\n \n sendMessage('row.selected', { index, selected: v })}\n />\n \n );\n\n return (\n \n {selectable && selectable.position === 'LEFT' && SelectableCheckbox()}\n {columns.map(col => (\n \n ))}\n {selectable && selectable.position === 'RIGHT' && SelectableCheckbox()}\n \n );\n};\n\nRow.propTypes = {\n row: PropTypes.instanceOf(Object),\n index: PropTypes.number,\n};\n","import React, { useContext } from 'react';\nimport { tableContext } from '../tableContext';\nimport { Row } from './row';\n\n\nexport const Body = () => {\n const { state } = useContext(tableContext);\n const { rows } = state;\n\n return (\n \n {\n // eslint-disable-next-line react/no-array-index-key\n rows.map((row, i) => )\n }\n \n );\n};\n","import React, { useState, useEffect, useRef } from 'react';\nimport PropTypes from 'prop-types';\nimport Message from '../Message';\nimport Pagination from '../../form/components/Pagination';\nimport Loader from '../Loader';\nimport InfiniteScroller from '../InfiniteScroller';\nimport { Header } from './js/header';\nimport { Body } from './js/body';\nimport { tableContext } from './tableContext';\n\n/**\n * This is tyk's table component used to render a data in a tabular view.\n * See the example configuration object below to understand how to hydrate the table component\n */\n\nfunction Table({\n value, onChange, noDataMessage, loading, infiniteScrolling,\n}) {\n const [state, setState] = useState(null);\n const [onChangeMsg, setOnChangeMsg] = useState('api');\n const itemsListRef = useRef(null);\n const sortRows = (col, sortOrder) => {\n setState({\n ...state,\n sort: {\n order: sortOrder,\n col,\n },\n });\n };\n\n const selectAllRows = (data) => {\n setState({\n ...state,\n rows: state.rows.map((row) => ({ ...row, selected: data })),\n });\n };\n\n const selectRow = (data) => {\n const { index, selected } = data;\n const selectedRow = state.rows[index];\n \n setState({\n ...state,\n rows: [\n ...state.rows.slice(0, index),\n { ...selectedRow, selected },\n ...state.rows.slice(index + 1),\n ],\n });\n };\n\n const setPagination = (data) => {\n setState({\n ...state,\n pagination: {\n ...state.pagination,\n current: data + 1,\n },\n });\n };\n\n const api = {\n getState: () => state,\n setState: (newState) => setState(newState),\n };\n\n const sendMessage = (message, data) => {\n setOnChangeMsg(message);\n if (message === 'sort') {\n sortRows(data.column.id, data.sortOrder);\n }\n\n if (message === 'header.selectAll.click') {\n selectAllRows(data);\n }\n\n if (message === 'header.selectAll.change') {\n selectAllRows(data);\n }\n\n if (message === 'row.selected') {\n selectRow(data);\n }\n\n if (message === 'pagination.change') {\n setPagination(data);\n }\n };\n\n useEffect(() => setState(value), [value]);\n useEffect(() => {\n if (onChange) {\n onChange(onChangeMsg, state, api);\n }\n setOnChangeMsg('api');\n }, [state]);\n\n if (!state) {\n return ;\n }\n\n if (state.rows <= 0) {\n return {noDataMessage || 'No Data Available'};\n }\n\n const getTable = () => (\n \n
    \n \n
    \n );\n\n\n return (\n \n
    \n {\n loading && \n }\n {\n infiniteScrolling && state.pagination\n ? (\n state.pagination.current}\n loadMore={(num) => sendMessage('pagination.change', num)}\n pageNumber={state.pagination.current - 1}\n initialLoad={false}\n >\n { getTable() }\n \n )\n : getTable()\n }\n
    \n {state.pagination && !infiniteScrolling && (\n
    \n sendMessage('pagination.change', num)}\n />\n
    \n )}\n
    \n );\n}\n\nTable.propTypes = {\n /** Configuration object used to render the component */\n value: PropTypes.shape({\n /** Configuration for table columns */\n columns: PropTypes.arrayOf(PropTypes.shape({\n /** Unique id of the column */\n id: PropTypes.string.isRequired,\n /** Name of the column */\n name: PropTypes.string,\n /** Type of column, String by default */\n type: PropTypes.oneOfType([\n /** Just renders cell data of type strings */\n PropTypes.string,\n /** Render cell of elements (eg. Input / Button) */\n PropTypes.element,\n /** Render a custom function/component */\n PropTypes.func,\n ]),\n sortable: PropTypes.oneOfType([\n /** Make Column sortable */\n PropTypes.bool,\n /** Configure sorting behaviour */\n PropTypes.shape({\n /** Set default sorting direction ASC / DESC */\n default: PropTypes.string,\n }),\n ]),\n })),\n /** Configuration for table rows */\n rows: PropTypes.arrayOf(PropTypes.shape({})),\n /** Configuration to make table rows selectable */\n selectable: PropTypes.shape({}),\n /** Renders pagination for table if the object is missing / empty no pagination is rendered. */\n pagination: PropTypes.shape({}),\n /** Sets maximum height for table container. */\n maxHeight: PropTypes.string,\n /** Styling for the table container. */\n styling: PropTypes.shape({\n /** It's recommended to add styles to a class and pass the class in this object */\n className: PropTypes.string,\n }),\n }).isRequired,\n /** Callback executed with message and value when there are changes on table */\n onChange: PropTypes.func,\n /** Renders a component with the given message when `config.rows` is empty */\n noDataMessage: PropTypes.string,\n /** Show placeholder loader */\n loading: PropTypes.bool,\n /** Adds infinite scroller on page and calls `onChange` with `pagination.change` message */\n infiniteScrolling: PropTypes.bool,\n};\n\nTable.defaultProps = {\n loading: false,\n infiniteScrolling: false,\n noDataMessage: 'No Data Available',\n onChange: null,\n};\n\nexport default Table;\n","import React, { PureComponent } from 'react';\nimport PropTypes from 'prop-types';\n\n/**\n * Column component.\n */\nclass Column extends PureComponent {\n static propTypes = {\n /**\n * This property describes how the column element will be aligned vertically\n * within a Row: bottom, center, top\n */\n align: PropTypes.string,\n /** Css classes that can be passed to the column element */\n className: PropTypes.string,\n /**\n * ID that can be passed to the column element\n */\n id: PropTypes.string,\n /**\n * Specifies the size of the column within a Row (values must be between 1 - 12)\n */\n size: PropTypes.string.isRequired,\n /**\n * Specifies the left gap a column can have within a Row (values must be between 1 - 12)\n */\n offset: PropTypes.string,\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.string,\n PropTypes.object,\n PropTypes.node,\n ]),\n };\n\n getCssClasses() {\n const {\n align, className, offset, size,\n } = this.props;\n const colSize = size.split(' ');\n const colOffsets = offset ? offset.split(' ') : [];\n\n let cssClasses = colSize.map(cSize => `tyk-col--${cSize}`);\n const offsets = colOffsets.map(cOffset => `tyk-col--offset-${cOffset}`);\n\n if (align) {\n cssClasses.push(`tyk-col--align-${align}`);\n }\n\n if (className) {\n cssClasses = cssClasses.concat(className.split(' '));\n }\n\n cssClasses.push('tyk-col');\n cssClasses = cssClasses.concat(offsets || []);\n\n return cssClasses.join(' ');\n }\n\n render() {\n const { children, id, ...props } = this.props;\n\n return (\n
    \n { children }\n
    \n );\n }\n}\n\nexport default Column;\n","import React, { PureComponent } from 'react';\nimport PropTypes from 'prop-types';\n\n\n/** Row component which must be always present as a wrapper for Columns */\nexport default class Row extends PureComponent {\n static propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n ]),\n /** Css classes that can be passed to the Row element */\n className: PropTypes.string,\n /** Removes all the spaces between column */\n nogutters: PropTypes.bool,\n }\n\n getCssClasses() {\n const { className, nogutters } = this.props;\n let cssClass = ['tyk-row'];\n\n if (nogutters) {\n cssClass.push('no-gutters');\n cssClass.push('tyk-row--gutterless');\n }\n\n if (className) {\n cssClass = cssClass.concat(className.split(' '));\n }\n\n return cssClass.join(' ');\n }\n\n render() {\n const {\n children,\n nogutters,\n ...rest\n } = this.props;\n\n return (\n
    \n { children }\n
    \n );\n }\n}\n","import { createContext } from 'react';\n\nexport const DropdownContext = createContext();\n","import React, { cloneElement, useCallback } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { DropdownContext } from '../dropdown-context';\nimport Icon from '../../../../components/Icon';\n\nfunction DropdownItem(props) {\n const {\n customdropdownitem,\n children,\n eventKey,\n href,\n target,\n title,\n onClick,\n } = props;\n const dropdownItemCLick = useCallback((dropdownContext, itemProps) => {\n dropdownContext.onSelectItem(eventKey, itemProps);\n\n if (onClick) onClick(eventKey);\n }, []);\n\n return (\n \n {\n (dropdownContext) => (\n dropdownItemCLick(dropdownContext, props)}\n onKeyUp={() => {}}\n >\n {\n customdropdownitem\n ? cloneElement(customdropdownitem, {})\n : (\n \n {\n eventKey\n && dropdownContext.selectedItem === eventKey\n && dropdownContext.showCheckmark\n ? \n : null\n }\n \n {title || children}\n \n \n )\n }\n \n )\n }\n \n );\n}\n\nDropdownItem.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]),\n customdropdownitem: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n ]),\n eventKey: PropTypes.string,\n href: PropTypes.string,\n target: PropTypes.string,\n onClick: PropTypes.func,\n title: PropTypes.string,\n};\n\nexport default DropdownItem;\n","import React, {\n Component, createRef,\n} from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport DropdownItem from './js/DropdownItem';\nimport Button from '../../../components/Button';\nimport { DropdownContext } from './dropdown-context';\n\nclass Dropdown extends Component {\n static isElemInRightView(el, dropdownWidth) {\n const windowWidth = window.innerWidth;\n const offset = el.getBoundingClientRect();\n const elemRight = offset.left + dropdownWidth;\n\n return elemRight <= windowWidth;\n }\n\n static isElemInBottomView(el, dropdownHeight) {\n const windowHeight = window.innerHeight;\n const offset = el.getBoundingClientRect();\n const elHeight = el.clientHeight;\n const elemBottom = offset.top + elHeight + dropdownHeight;\n\n return elemBottom <= windowHeight;\n }\n\n constructor(props) {\n super(props);\n\n const {\n selectedItem,\n open,\n } = this.props;\n\n this.state = {\n opened: open,\n selectedItem: selectedItem || null,\n };\n\n this.dropdownRef = createRef();\n this.dropdownListRef = createRef();\n this.dropdownButtonRef = createRef();\n this.onSelectItem = this.onSelectItem.bind(this);\n this.toggleDropdown = this.toggleDropdown.bind(this);\n this.handleClickOutside = this.handleClickOutside.bind(this);\n }\n\n componentDidMount() {\n document.addEventListener('mousedown', this.handleClickOutside);\n\n if (this.dropdownListRef.current) {\n this.getStyles();\n }\n }\n\n componentDidUpdate(prevProps) {\n const {\n open,\n } = this.props;\n const {\n opened,\n } = this.state;\n\n if (this.dropdownListRef.current) {\n this.getStyles();\n }\n\n if (\n !prevProps.open\n && open === true\n && !opened\n ) {\n this.toggleDropdown();\n }\n\n if (\n prevProps.open\n && open === false\n && opened\n ) {\n this.closeDropdown();\n }\n }\n\n componentWillUnmount() {\n document.removeEventListener('mousedown', this.handleClickOutside);\n }\n\n handleClickOutside(event) {\n if (\n this.dropdownListRef.current && !this.dropdownListRef.current.contains(event.target)\n && this.dropdownRef.current && !this.dropdownRef.current.contains(event.target)\n ) {\n this.closeDropdown();\n }\n }\n\n onSelectItem(itemId, itemProps) {\n const { closeOnSelect, onSelect } = this.props;\n const changes = {\n selectedItem: itemId,\n selectedItemProps: itemProps,\n };\n\n if (closeOnSelect) {\n changes.opened = false;\n }\n\n this.setState(changes);\n\n if (onSelect && typeof onSelect === 'function') {\n onSelect(itemId);\n }\n }\n\n getStyles() {\n const {\n display,\n position,\n offset,\n } = this.props;\n\n const dropdownEl = this.dropdownListRef.current;\n\n if (offset) {\n dropdownEl.style.top = `${offset.top}`;\n dropdownEl.style.left = `${offset.left}`;\n return;\n }\n\n const scrollTop = Math.max(\n document.documentElement.scrollTop,\n document.body.scrollTop,\n window.scrollY,\n );\n const el = this.dropdownRef.current;\n const elHeight = el.clientHeight;\n const dropdownHeight = dropdownEl ? dropdownEl.clientHeight : 0;\n const dropdownWidth = dropdownEl ? dropdownEl.clientWidth : 0;\n const offsetPosition = el.getBoundingClientRect();\n const { left, top } = offsetPosition;\n let customTop = 0;\n let customLeft = left;\n\n // calculate top position, depending on the element position on the page\n if (Dropdown.isElemInBottomView(el, dropdownHeight)) {\n customTop = top + scrollTop + elHeight;\n } else {\n customTop = top + scrollTop - dropdownHeight - 5;\n }\n\n if (Dropdown.isElemInRightView(el, dropdownWidth)) {\n customLeft = left;\n } else {\n customLeft = left + el.clientWidth - dropdownWidth;\n }\n\n if (position !== 'relative') {\n dropdownEl.style.top = `${customTop}px`;\n if (display !== 'block') {\n dropdownEl.style.left = `${customLeft}px`;\n }\n }\n if (display !== 'block') {\n dropdownEl.style.minWidth = `${this.dropdownButtonRef.current.clientWidth}px`;\n }\n }\n\n getWrapperCssClasses() {\n const {\n btnGroup,\n btnGroupSize,\n className,\n btnTheme,\n wrapperClassName = '',\n } = this.props;\n let cssClasses = [wrapperClassName, 'tyk-dropdown'];\n\n cssClasses.push(`theme-${btnTheme || 'default'}`);\n\n if (className) {\n cssClasses = cssClasses.concat(className.split(' '));\n }\n\n if (btnGroup) {\n cssClasses.push('tyk-button-group');\n cssClasses.push(btnGroupSize ? `tyk-button-group--${btnGroupSize}` : 'tyk-button-group--md');\n }\n\n return cssClasses.join(' ');\n }\n\n getCssClasses() {\n const {\n opened,\n } = this.state;\n const {\n hasCustomContent,\n display,\n listclassnames,\n position,\n maxHeight,\n } = this.props;\n let cssClasses = ['tyk-dropdown-menu', 'tyk-dropdown'];\n\n if (maxHeight) {\n cssClasses.push('tyk-dropdown--scrollable');\n }\n\n if (opened) {\n cssClasses.push('opened');\n }\n\n if (listclassnames) {\n cssClasses = cssClasses.concat(listclassnames.split(' '));\n }\n\n if (display) {\n cssClasses.push('tyk-dropdown--block');\n }\n\n if (hasCustomContent) {\n cssClasses.push('tyk-dropdown--custom');\n }\n\n if (position === 'relative') {\n cssClasses.push('tyk-dropdown--relative');\n }\n\n return cssClasses.join(' ');\n }\n\n getBtnTitle() {\n const { btnTitle, stopButtonTextChange } = this.props;\n const { selectedItemProps } = this.state;\n\n if (!stopButtonTextChange && selectedItemProps && selectedItemProps.title) {\n return selectedItemProps.title;\n }\n\n return btnTitle;\n }\n\n closeDropdown() {\n const { onClose } = this.props;\n\n this.setState({\n opened: false,\n }, () => {\n if (onClose) {\n onClose();\n }\n });\n }\n\n toggleDropdown() {\n const {\n opened,\n } = this.state;\n if (opened) {\n this.closeDropdown();\n\n return;\n }\n\n this.setState({\n opened: true,\n });\n }\n\n render() {\n const {\n appendTo,\n btnClassName,\n btnSize,\n customBtnTitle,\n hasCustomContent,\n btnTheme,\n children,\n label,\n showDropdownIcon,\n showTriggerButton,\n showCheckmark,\n disabled = false,\n maxHeight,\n } = this.props;\n const {\n selectedItem,\n opened,\n } = this.state;\n const DropdownWrapperTag = hasCustomContent ? 'div' : 'ul';\n return (\n \n {\n label\n ? (\n \n )\n : null\n }\n {\n showTriggerButton\n ? (\n \n { customBtnTitle || this.getBtnTitle() }\n \n )\n : null\n }\n {\n opened\n ? ReactDOM.createPortal(\n \n {\n opened\n ? (\n \n {\n (typeof children === 'function')\n ? children({\n closeDropdown: this.closeDropdown.bind(this),\n })\n : children\n }\n \n )\n : null\n }\n ,\n document.querySelector(appendTo || 'body'),\n )\n : null\n }\n \n );\n }\n}\n\nDropdown.propTypes = {\n appendTo: PropTypes.string,\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n PropTypes.func,\n ]),\n closeOnSelect: PropTypes.bool,\n btnClassName: PropTypes.string,\n btnSize: PropTypes.string,\n btnGroupSize: PropTypes.string,\n btnTheme: PropTypes.string,\n btnTitle: PropTypes.oneOfType([\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n customBtnTitle: PropTypes.oneOfType([\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n btnGroup: PropTypes.bool,\n className: PropTypes.string,\n display: PropTypes.string,\n disabled: PropTypes.bool,\n hasCustomContent: PropTypes.bool,\n label: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.func,\n PropTypes.string,\n ]),\n listclassnames: PropTypes.string,\n onClose: PropTypes.func,\n onSelect: PropTypes.func,\n open: PropTypes.bool,\n offset: PropTypes.instanceOf(Object),\n position: PropTypes.string,\n selectedItem: PropTypes.string,\n showDropdownIcon: PropTypes.bool,\n stopButtonTextChange: PropTypes.bool,\n showTriggerButton: PropTypes.bool,\n showCheckmark: PropTypes.bool,\n maxHeight: PropTypes.string,\n wrapperClassName: PropTypes.string,\n};\n\nDropdown.defaultProps = {\n closeOnSelect: false,\n showDropdownIcon: true,\n showTriggerButton: true,\n showCheckmark: true,\n open: false,\n};\n\nDropdown.Item = DropdownItem;\n\nexport default Dropdown;\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"react-ace\");","import React, { useCallback } from 'react';\nimport PropTypes from 'prop-types';\n\nimport ace from 'ace-builds/src-noconflict/ace';\nimport AceEditor from 'react-ace';\nimport 'ace-builds/src-noconflict/mode-javascript';\nimport 'ace-builds/src-noconflict/mode-golang';\nimport 'ace-builds/src-noconflict/mode-python';\nimport 'ace-builds/src-noconflict/mode-css';\nimport 'ace-builds/src-noconflict/mode-json';\nimport 'ace-builds/src-noconflict/mode-xml';\nimport 'ace-builds/src-noconflict/mode-jsx';\nimport 'ace-builds/src-noconflict/ext-searchbox';\nimport 'ace-builds/src-noconflict/ext-beautify';\nimport 'ace-builds/src-noconflict/theme-github';\nimport jsonWorker from 'ace-builds/src-noconflict/worker-json';\n\nace.config.setModuleUrl('ace/mode/json_worker', jsonWorker);\n\nfunction CodeEditor(props) {\n const {\n disabled,\n readOnly,\n disableValidation,\n id,\n error,\n label,\n labelwidth,\n note,\n onBlur,\n onChange,\n theme,\n value,\n setOptions,\n wrapperClassName,\n } = props;\n const classes = [\n 'tyk-form-group',\n wrapperClassName,\n ...(theme ? theme.split(' ').map((t) => `tyk-form-group--${t}`) : []),\n labelwidth && 'tyk-form-group--label-has-width',\n error && 'has-error',\n ].filter(Boolean).join(' ');\n\n const finalSetOptions = {\n ...setOptions,\n ...disableValidation && { useWorker: false },\n };\n\n const getCodeEditorError = useCallback(() => (\n error && error !== 'true' && error !== 'false'\n ? (\n

    \n {error}\n

    \n )\n : null\n ), [error]);\n\n const getLabelStyles = useCallback(() => {\n if (labelwidth) return { flexBasis: labelwidth };\n return {};\n }, [labelwidth]);\n\n const getNonLabelWidth = useCallback(() => {\n if (labelwidth) return { flexBasis: `calc(100% - ${labelwidth} - 20px)` };\n return {};\n }, [labelwidth]);\n\n const handleOnChange = useCallback((newValue) => {\n if (onChange) onChange(newValue);\n }, [onChange]);\n\n const handleOnBlur = useCallback(() => {\n if (onBlur) onBlur(value);\n }, [onBlur, value]);\n\n return (\n
    \n {\n label\n ? \n : null\n }\n
    \n {\n // eslint-disable-next-line\n editorInstance.container.style.resize = 'both';\n // mouseup = css resize end\n document.addEventListener('mouseup', () => (\n editorInstance.resize()\n ));\n }}\n setOptions={finalSetOptions}\n />\n {\n note\n ?

    { note }

    \n : null\n }\n { getCodeEditorError() }\n
    \n
    \n );\n}\n\nCodeEditor.propTypes = {\n disabled: PropTypes.bool,\n readOnly: PropTypes.bool,\n disableValidation: PropTypes.bool,\n id: PropTypes.string,\n error: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.bool,\n ]),\n label: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.func,\n PropTypes.string,\n ]),\n labelwidth: PropTypes.string,\n mode: PropTypes.string,\n name: PropTypes.string,\n note: PropTypes.string,\n onBlur: PropTypes.func,\n onChange: PropTypes.func,\n theme: PropTypes.string,\n value: PropTypes.string,\n setOptions: PropTypes.instanceOf(Object),\n wrapperClassName: PropTypes.string,\n};\n\nexport default CodeEditor;\n","import React, { Component, Fragment, createRef } from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\n\nimport Icon from '../../../components/Icon';\nimport Button from '../../../components/Button';\n\nconst getStateSelectedValues = (multiple, tags, value) => {\n if (!value) {\n return (multiple || tags) ? [] : null;\n }\n\n return value;\n};\n\nexport default class Combobox extends Component {\n static closeList() {\n return {\n cursor: -1,\n opened: false,\n };\n }\n\n static openList() {\n return {\n opened: true,\n };\n }\n\n static filterByName(itemValue, inputValue) {\n return itemValue.name.toLowerCase().indexOf(inputValue) > -1;\n }\n\n static propTypes = {\n allowCustomValues: PropTypes.bool,\n CustomListComponent: PropTypes.elementType,\n searchItem: PropTypes.func,\n disabled: PropTypes.bool,\n error: PropTypes.string,\n id: PropTypes.string,\n label: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.func,\n PropTypes.string,\n ]),\n labelwidth: PropTypes.string,\n multiple: PropTypes.bool,\n max: PropTypes.number,\n note: PropTypes.oneOfType([\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n onChange: PropTypes.func,\n placeholder: PropTypes.string,\n tags: PropTypes.bool,\n theme: PropTypes.string,\n value: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.instanceOf(Object),\n PropTypes.instanceOf(Array),\n ]),\n values: PropTypes.instanceOf(Array),\n };\n\n static defaultProps = {\n allowCustomValues: true,\n };\n\n constructor(props) {\n super(props);\n const {\n multiple,\n tags,\n value,\n } = props;\n\n this.state = {\n cursor: -1,\n opened: false,\n width: 50,\n initialValue: value,\n stateSelectedValues: getStateSelectedValues(multiple, tags, value),\n searchText: '',\n tags,\n };\n\n this.comboboxRef = createRef();\n this.valuesListRef = createRef();\n this.inputRef = createRef();\n this.textRef = createRef();\n\n this.focusInput = this.focusInput.bind(this);\n this.onKeyUp = this.onKeyUp.bind(this);\n Combobox.openList = Combobox.openList.bind(this);\n this.handleClickOutside = this.handleClickOutside.bind(this);\n this.handleItemsNavigation = this.handleItemsNavigation.bind(this);\n this.handleComboboxDropdownClick = this.handleComboboxDropdownClick.bind(this);\n this.handleListItemClick = this.handleListItemClick.bind(this);\n this.handlePillRemoveClick = this.handlePillRemoveClick.bind(this);\n this.manageSelectedTags = this.manageSelectedTags.bind(this);\n }\n\n componentDidMount() {\n const { tags } = this.props;\n\n if (tags) {\n this.setInputWidth();\n }\n\n this.bindEvents();\n }\n\n componentWillUnmount() {\n this.unBindEvents();\n }\n\n static getDerivedStateFromProps(nextProps, prevState) {\n if (\n JSON.stringify(nextProps.value) !== JSON.stringify(prevState.initialValue)\n || nextProps.tags !== prevState.tags\n ) {\n return {\n initialValue: nextProps.value,\n stateSelectedValues: getStateSelectedValues(\n nextProps.multiple,\n nextProps.tags,\n nextProps.value,\n ),\n tags: nextProps.tags,\n };\n }\n\n return null;\n }\n\n onKeyUp(e) {\n const { tags, allowCustomValues } = this.props;\n const { cursor, opened } = this.state;\n const filteredValues = this.filterValues();\n let tempState = Object.assign({}, this.getSearchText());\n\n if (tags && e.key !== 'Escape') {\n tempState = Object.assign({}, tempState, this.setInputWidth());\n }\n\n if (e.key === 'Enter') {\n const methodName = (tags) ? 'manageSelectedTags' : 'manageSelectedValues';\n tempState = Object.assign({}, tempState, this[methodName](cursor));\n }\n\n if (allowCustomValues && !e.key === ' ' && tags) {\n tempState = Object.assign({}, tempState, this.manageSelectedTags());\n }\n\n if (\n !opened\n && this.inputRef.current.value\n && filteredValues\n && filteredValues.length\n && e.key !== 'Escape'\n ) {\n tempState = Object.assign({}, tempState, Combobox.openList());\n }\n\n if (e.key === 'Escape' && opened) {\n tempState = Object.assign({}, tempState, Combobox.closeList());\n }\n\n if (opened && filteredValues && !filteredValues.length) {\n tempState = Object.assign({}, tempState, Combobox.closeList());\n }\n\n this.setState(previousState => Object.assign({}, previousState, tempState));\n }\n\n getLabelStyles() {\n const { labelwidth } = this.props;\n const styles = {};\n\n if (labelwidth) {\n styles.flexBasis = labelwidth;\n }\n\n return styles;\n }\n\n getNonLabelWidth() {\n const { labelwidth } = this.props;\n const styles = {};\n\n if (labelwidth) {\n styles.flexBasis = `calc(100% - ${labelwidth} - 20px)`;\n }\n\n return styles;\n }\n\n setInputWidth() {\n return {\n width: 50 + this.textRef.current.offsetWidth,\n };\n }\n\n getSelectedIndex(value) {\n const { stateSelectedValues } = this.state;\n let position = -1;\n\n if (Array.isArray(stateSelectedValues)) {\n stateSelectedValues.forEach((item, index) => {\n if (item.id === value.id) {\n position = index;\n }\n });\n } else if (stateSelectedValues) {\n if (stateSelectedValues.id === value.id) {\n position = 0;\n }\n }\n\n return position;\n }\n\n getSearchText() {\n return {\n searchText: this.inputRef.current.value,\n };\n }\n\n getListItemCssClasses(value, index) {\n const cssClasses = [];\n const {\n cursor,\n } = this.state;\n\n if (cursor === index) {\n cssClasses.push('active');\n }\n\n if (value.disabled) {\n cssClasses.push('disabled');\n }\n\n return cssClasses.join(' ');\n }\n\n getComboboxListCssClass() {\n const { opened } = this.state;\n const { tags, theme } = this.props;\n const themes = theme ? theme.split(' ') : [];\n\n const cssClasses = ['tyk-combobox__list'];\n\n if (opened) {\n cssClasses.push('tyk-combobox__list--opened');\n }\n\n if (tags) {\n cssClasses.push('tyk-combobox__list--has-tags');\n }\n\n if (themes.length) {\n themes.forEach((iTheme) => {\n cssClasses.push(`tyk-form-group--${iTheme}`);\n });\n }\n\n return cssClasses.join(' ');\n }\n\n getCssClasses() {\n const {\n error, disabled, theme, labelwidth,\n } = this.props;\n const cssClasses = ['tyk-form-group', 'tyk-combobox'];\n const themes = theme ? theme.split(' ') : [];\n\n if (error) {\n cssClasses.push('has-error');\n }\n\n if (labelwidth) {\n cssClasses.push('tyk-form-group--label-has-width');\n }\n\n if (themes.length) {\n themes.forEach((iTheme) => {\n cssClasses.push(`tyk-form-group--${iTheme}`);\n });\n }\n\n if (disabled) {\n cssClasses.push('disabled');\n }\n\n return cssClasses.join(' ');\n }\n\n getInputError() {\n const { error } = this.props;\n\n return (error && error !== 'true' && error !== 'false')\n ? (\n \n { error }\n

    \n )\n : null;\n }\n\n getStyles() {\n const { scrollTop } = document.documentElement;\n const el = this.comboboxRef.current;\n const elHeight = el.offsetHeight;\n const elWidth = el.offsetWidth;\n\n const offset = el.getBoundingClientRect();\n const { left } = offset;\n let top = 0;\n\n top = offset.top + scrollTop + elHeight;\n\n return {\n top: `${top - 1}px`,\n left: `${left}px`,\n width: `${elWidth}px`,\n };\n }\n\n getComboboxDisplayData() {\n const { stateSelectedValues } = this.state;\n const { multiple, placeholder, values } = this.props;\n\n if (!stateSelectedValues) {\n return placeholder;\n }\n\n if (stateSelectedValues && Array.isArray(stateSelectedValues) && !stateSelectedValues.length) {\n return placeholder;\n }\n\n if (stateSelectedValues && !Array.isArray(stateSelectedValues) && !stateSelectedValues.id) {\n return placeholder;\n }\n\n if (Array.isArray(stateSelectedValues) && multiple) {\n return stateSelectedValues.reduce((prevValue, value, index) => prevValue + value.name + ((index !== stateSelectedValues.length - 1) ? ', ' : ''), '');\n }\n\n if (\n values\n && values.length\n && !Array.isArray(stateSelectedValues) && !stateSelectedValues.name\n ) {\n return values.filter(value => value.id === stateSelectedValues.id)[0].name;\n }\n\n return stateSelectedValues.name;\n }\n\n manageSelectedTags(index) {\n const { max, allowCustomValues } = this.props;\n const { stateSelectedValues } = this.state;\n const filteredValues = this.filterValues();\n const value = { id: this.inputRef.current.value, name: this.inputRef.current.value };\n\n if (allowCustomValues === false && index === -1) {\n return null;\n }\n\n const tempValue = filteredValues[index] || value;\n const selectedIndex = this.getSelectedIndex(tempValue);\n let selectedValues = {};\n\n this.inputRef.current.value = '';\n\n if (selectedIndex > -1 && this.isInInitialValues(tempValue)) {\n selectedValues = this.removeSelectedValue(selectedIndex);\n } else if (selectedIndex === -1) {\n if (max && stateSelectedValues.length >= max) {\n return selectedValues;\n }\n selectedValues = this.addSelectedValue(tempValue);\n }\n\n return selectedValues;\n }\n\n manageSelectedValues(index) {\n const { stateSelectedValues } = this.state;\n const {\n multiple, onChange, max,\n } = this.props;\n const filteredValues = this.filterValues();\n const tempSelectedValues = filteredValues[index];\n let selectedValues;\n const selectedIndex = this.getSelectedIndex(tempSelectedValues);\n\n if (tempSelectedValues && multiple) {\n if (selectedIndex > -1) {\n selectedValues = this.removeSelectedValue(selectedIndex);\n } else {\n if (max && stateSelectedValues.length >= max) {\n return selectedValues;\n }\n selectedValues = this.addSelectedValue(filteredValues[index]);\n }\n\n // tempSelectedValues = stateSelectedValues;\n } else {\n selectedValues = {\n stateSelectedValues: (selectedIndex === -1) ? tempSelectedValues : { id: null },\n };\n\n if (onChange && typeof onChange === 'function') {\n onChange((selectedIndex === -1) ? tempSelectedValues : null);\n }\n }\n\n return selectedValues;\n }\n\n removeSelectedValue(index) {\n const { stateSelectedValues } = this.state;\n const { onChange } = this.props;\n const tempStateSelectedValues = JSON.parse(JSON.stringify(stateSelectedValues));\n\n tempStateSelectedValues.splice(index, 1);\n\n if (onChange && typeof onChange === 'function') {\n onChange(tempStateSelectedValues.length ? tempStateSelectedValues : null);\n }\n\n return {\n stateSelectedValues: tempStateSelectedValues,\n searchText: '',\n };\n }\n\n addSelectedValue(value) {\n const { stateSelectedValues } = this.state;\n const { onChange } = this.props;\n const tempStateSelectedValues = JSON.parse(JSON.stringify(stateSelectedValues));\n\n tempStateSelectedValues.push(value);\n\n if (onChange && typeof onChange === 'function') {\n onChange(tempStateSelectedValues.length ? tempStateSelectedValues : null);\n }\n\n return {\n stateSelectedValues: tempStateSelectedValues,\n searchText: '',\n };\n }\n\n isInInitialValues(value) {\n const { values } = this.props;\n let ok = false;\n\n values.forEach((item) => {\n if (value.id === item.id) {\n ok = true;\n }\n });\n\n return ok;\n }\n\n filterValues() {\n const { values, searchItem } = this.props;\n\n if (!this.inputRef.current) {\n return values;\n }\n\n const arr = values\n .filter(\n value => (searchItem\n ? searchItem(value, this.inputRef.current.value.toLowerCase())\n : Combobox.filterByName(value, this.inputRef.current.value.toLowerCase())),\n );\n\n return arr;\n }\n\n bindEvents() {\n document.addEventListener('mousedown', this.handleClickOutside);\n }\n\n unBindEvents() {\n document.removeEventListener('mousedown', this.handleClickOutside);\n }\n\n handleItemsNavigation(e) {\n const { tags } = this.props;\n if (['ArrowDown', 'ArrowUp'].indexOf(e.key) === -1) {\n return;\n }\n\n const { cursor } = this.state;\n const filteredValues = this.filterValues();\n let cursorNext;\n\n e.preventDefault();\n\n if (e.key === 'ArrowDown') {\n if (cursor === -1 || cursor === filteredValues.length - 1) {\n cursorNext = 0;\n } else if (cursor < filteredValues.length - 1) {\n cursorNext = cursor + 1;\n }\n }\n\n if (e.key === 'ArrowUp') {\n if (cursor > 0) {\n cursorNext = cursor - 1;\n } else {\n cursorNext = filteredValues.length - 1;\n }\n }\n\n if (this.valuesListRef.current && cursorNext > 4) {\n const scrollTop = (cursorNext - 4) * 38;\n\n this.valuesListRef.current.scrollTop = (!tags) ? 60 + scrollTop : scrollTop;\n } else if (this.valuesListRef.current) {\n this.valuesListRef.current.scrollTop = 0;\n }\n\n this.setState(previousState => ({\n ...previousState,\n opened: true,\n cursor: cursorNext,\n }));\n }\n\n handleListItemClick(index) {\n // eslint-disable-next-line react/destructuring-assignment\n const clickedValue = this.props.values[index];\n if (clickedValue.disabled) return;\n\n const { multiple, tags } = this.props;\n\n const methodName = (tags) ? 'manageSelectedTags' : 'manageSelectedValues';\n const tempState = Object.assign({}, this.state, this[methodName](index));\n\n this.setState((previousState) => {\n if (!multiple && !tags) {\n tempState.opened = false;\n }\n\n return Object.assign({}, previousState, tempState);\n });\n }\n\n handlePillRemoveClick(index) {\n const { disabled } = this.props;\n\n if (disabled) {\n return;\n }\n\n const tempState = this.removeSelectedValue(index);\n\n this.setState(previousState => Object.assign({}, previousState, tempState));\n }\n\n handleClickOutside(event) {\n if (\n this.valuesListRef.current && !this.valuesListRef.current.contains(event.target)\n && this.comboboxRef.current && !this.comboboxRef.current.contains(event.target)\n ) {\n this.setState(previousState => Object.assign({}, previousState, Combobox.closeList()));\n }\n }\n\n handleComboboxDropdownClick() {\n const { disabled } = this.props;\n\n if (disabled) {\n return;\n }\n\n this.setState(previousState => Object.assign({}, previousState, Combobox.openList()));\n }\n\n reset() {\n const { multiple, tags, value } = this.props;\n\n this.setState({\n stateSelectedValues: getStateSelectedValues(multiple, tags, value),\n });\n }\n\n focusInput() {\n if (this.inputRef.current) {\n this.inputRef.current.focus();\n }\n }\n\n render() {\n const {\n CustomListComponent,\n disabled,\n id,\n label,\n note,\n tags,\n max,\n placeholder,\n } = this.props;\n const {\n width, opened, searchText, stateSelectedValues,\n } = this.state;\n\n const filteredValues = this.filterValues();\n\n return (\n \n
    \n {\n label\n ? \n : null\n }\n \n {}}\n ref={this.comboboxRef}\n >\n {\n tags\n ? (\n \n {\n (stateSelectedValues || []).map((value, index) => (\n
  • \n \n { value.name }\n
  • \n ))\n }\n \n {(max === undefined || stateSelectedValues?.length < max) && (\n <>\n {\n if (e.key === 'Enter') {\n e.preventDefault();\n }\n }}\n onKeyUp={this.onKeyUp}\n onKeyDown={this.handleItemsNavigation}\n placeholder={(!stateSelectedValues || !stateSelectedValues.length) ? placeholder : ''}\n ref={this.inputRef}\n style={{\n width: (!stateSelectedValues || !stateSelectedValues.length) ? '100%' : `${width}px`,\n }}\n />\n \n { searchText }\n \n \n )}\n {\n filteredValues.length\n ? (\n \n )\n : null\n }\n \n
    \n )\n : (\n {}}\n >\n { this.getComboboxDisplayData() }\n \n \n )\n }\n \n {\n note\n ?

    { note }

    \n : null\n }\n { this.getInputError() }\n
    \n \n {\n // eslint-disable-next-line no-nested-ternary\n !CustomListComponent\n ? opened && filteredValues.length\n ? ReactDOM.createPortal(\n \n {\n !tags\n ? (\n
  • \n \n
  • \n )\n : null\n }\n {\n filteredValues\n .map((value, index) => (\n {}}\n key={value.id}\n >\n {\n (this.getSelectedIndex(value) > -1)\n ? \n : null\n }\n \n {' '}\n { value.name }\n \n \n ))\n }\n ,\n document.querySelector('body'),\n )\n : null\n : (\n \n )\n }\n
    \n );\n }\n}\n","import React, { useState, useRef, useEffect } from 'react';\nimport Icon from '../../../../components/Icon';\nimport Pill from '../../../../components/Pill';\n\nfunction Value(props) {\n const {\n value,\n max,\n tags,\n tagSeparators,\n addTagOnBlur,\n placeholder,\n disabled,\n renderValue,\n valueOverflow,\n focus,\n onMessage: sendMessage,\n readOnly,\n } = props;\n const INPUT_MIN_WIDTH = 60;\n const inputRef = useRef(null);\n const dummyElementRef = useRef(null);\n const [inputValue, setInputValue] = useState('');\n const [inputWidth, setInputWidth] = useState(`${INPUT_MIN_WIDTH + 10}px`);\n\n function entryFieldOnChange(val) {\n if (tagSeparators.some(ts => val.slice(-1) === ts)) return;\n const dummy = dummyElementRef.current;\n dummy.innerHTML = val;\n setInputWidth(`${Math.max(dummy.clientWidth, INPUT_MIN_WIDTH) + 10}px`);\n setInputValue(val);\n sendMessage('tag.input.change', val);\n }\n\n function entryFieldOnKeyDown(key, val) {\n if (!tags) return;\n if (val === '' && key === 'Backspace' && value.length) {\n sendMessage('tag.remove', value[value.length - 1].id);\n return;\n }\n if (key === 'Enter') {\n sendMessage('tag.input.enter', val);\n entryFieldOnChange('');\n return;\n }\n if (key === 'ArrowUp') {\n sendMessage('tag.input.arrowUp');\n return;\n }\n if (key === 'ArrowDown') {\n sendMessage('tag.input.arrowDown');\n return;\n }\n if (key === 'Escape') {\n sendMessage('tag.input.escape');\n return;\n }\n if (tagSeparators.includes(key)) {\n sendMessage('tag.add', val);\n entryFieldOnChange('');\n }\n }\n\n function triggerAction() {\n sendMessage('text-value.click');\n }\n\n function textValue(val, isPlaceholder = false) {\n if (readOnly) return val || '-';\n\n const classes = [\n 'tyk-combobox2__text-value',\n `overflow-${valueOverflow}`,\n isPlaceholder && 'is-placeholder',\n ].filter(Boolean).join(' ');\n return (\n \n {val}\n \n );\n }\n\n function renderCustomValue(v) {\n const config = {\n tags,\n tagSeparators,\n placeholder,\n disabled,\n renderValue,\n sendMessage,\n };\n return renderValue(v, config);\n }\n\n function renderTag(v) {\n if (renderValue) return renderCustomValue(v);\n\n return (\n \n {\n e.stopPropagation();\n sendMessage('tag.remove', v.id);\n }}\n >\n \n \n { v.name }\n \n );\n }\n\n function getTags() {\n return (\n <>\n {value.map(renderTag)}\n {value.length < max && (\n <>\n entryFieldOnChange(e.target.value)}\n onKeyDown={(e) => {\n if (e.key === 'Enter') e.preventDefault();\n entryFieldOnKeyDown(e.key, e.target.value);\n }}\n onFocus={() => sendMessage('tag.input.focus')}\n onBlur={(e) => {\n sendMessage('tag.input.blur', e.target.value);\n if (addTagOnBlur) entryFieldOnChange('');\n }}\n />\n \n \n )}\n \n );\n }\n\n useEffect(() => {\n if (focus && inputRef.current) inputRef.current.focus();\n }, [focus]);\n\n if (readOnly) {\n return
    {textValue(value.map(v => v.name).join(', '))}
    ;\n }\n\n if (tags) return getTags();\n if (renderValue) {\n return value.length === 0 ? textValue(placeholder, true) : value.map(renderCustomValue);\n }\n return value.length === 0\n ? textValue(placeholder, true)\n : textValue(value.map(v => v.name).join(', '));\n}\n\nexport default Value;\n","import React, { useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport Icon from '../../../../components/Icon';\n\nfunction List(props) {\n const {\n listRef,\n tags,\n values,\n searchValue,\n activeItem,\n onMessage: sendMessage,\n renderListItem,\n selectAll,\n showSearch,\n } = props;\n\n useEffect(() => {\n if (!listRef.current) return;\n const activeElement = listRef.current.querySelector('.active');\n if (activeElement) activeElement.scrollIntoView({ block: 'end' });\n }, [activeItem]);\n\n function renderItem(item) {\n if (renderListItem) {\n return renderListItem(item, {\n tags, searchValue, sendMessage, activeItem,\n });\n }\n\n return (\n !item.disabled && sendMessage('value.select', { item })}\n onKeyPress={() => {}}\n >\n {item.selected && }\n {item.name}\n \n );\n }\n\n function renderSelectAllOption() {\n const isAllSelected = values.every(v => v.selected);\n const isNoneSelected = values.every(v => !v.selected);\n const label = selectAll?.label ?? 'Select All';\n const mode = selectAll?.mode ?? 'select';\n const show = selectAll?.show ?? 'always';\n const render = selectAll?.render;\n\n const shouldRenderOption = show === 'always' || (mode === 'select' ? !isAllSelected : !isNoneSelected);\n if (!shouldRenderOption) return null;\n\n if (render) {\n return render({\n label,\n mode,\n show,\n isAllSelected,\n isNoneSelected,\n }, sendMessage);\n }\n return (\n sendMessage('value.select-all', mode === 'select' ? !isAllSelected : isNoneSelected)}\n onKeyDown={() => {}}\n >\n {(mode === 'select' ? isAllSelected : isNoneSelected) && }\n {label}\n \n );\n }\n\n return (\n <>\n {!tags && showSearch && (\n
    \n sendMessage('search.change', e.target.value)}\n onKeyDown={(e) => {\n if (e.key === 'Escape') sendMessage('search.escape');\n if (e.key === 'ArrowUp') sendMessage('search.arrowUp');\n if (e.key === 'ArrowDown') sendMessage('search.arrowDown');\n if (e.key === 'Enter') sendMessage('search.enter');\n }}\n />\n
    \n )}\n {values.length > 0 && (\n
      \n {Boolean(selectAll) && (\n renderSelectAllOption()\n )}\n {values.map(renderItem)}\n
    \n )}\n \n );\n}\n\nList.propTypes = {\n listRef: PropTypes.instanceOf(Object),\n tags: PropTypes.bool,\n values: PropTypes.instanceOf(Array),\n searchValue: PropTypes.string,\n activeItem: PropTypes.instanceOf(Object),\n onMessage: PropTypes.func,\n renderListItem: PropTypes.func,\n selectAll: PropTypes.oneOfType([\n PropTypes.bool,\n PropTypes.shape({\n label: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.func,\n PropTypes.string,\n ]),\n mode: PropTypes.oneOf(['select', 'unselect']),\n show: PropTypes.oneOf(['always', 'notSameState']),\n render: PropTypes.func,\n }),\n ]),\n showSearch: PropTypes.bool,\n};\n\nexport default List;\n","import React, { useState, useRef, useEffect } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Icon from '../../../components/Icon';\nimport FloatingContainer from '../../../components/FloatingContainer';\n\nimport Value from './js/Value';\nimport List from './js/List';\n\nfunction normalizeValue(value, values) {\n let v = value;\n if (typeof value === 'string') v = { id: value, name: value };\n else if (!value.hasOwnProperty('name')) v = { ...value, name: value.id }; // eslint-disable-line no-prototype-builtins\n if (!values) return v;\n const existingVal = values.find((ev) => ev.id === v.id);\n return existingVal ? { ...v, ...existingVal } : v;\n}\n\nfunction getValueFromProp(value, values) {\n if (!value) return [];\n if (Array.isArray(value)) return value.map((v) => normalizeValue(v, values));\n return [normalizeValue(value, values)];\n}\n\n/**\n * Dropdown-like component that can display selected values as regular text,\n * tags, or in a custom way.\n * You can select values from a list or type in new ones.\n */\nfunction Combobox2({\n value: propValue,\n values: propValues = [],\n valueOverflow = 'single',\n label = '',\n labelwidth,\n tags = false,\n tagSeparators = [' ', 'Enter'],\n addTagOnBlur = false,\n max: maxProp,\n multiple = false,\n placeholder = '',\n theme,\n note = '',\n error = '',\n disabled = false,\n readOnly = false,\n allowCustomValues = true,\n searchItem: matchItemFn,\n renderValue,\n renderListItem,\n renderList: renderListProp,\n CustomListComponent,\n onBeforeChange = () => true,\n onChange = () => {},\n floatingContainerConfig,\n expandMode,\n infiniteScrollerConfig,\n displayDropdownTrigger = true,\n selectAll,\n closeOnSelect,\n showSearch = false,\n required = false,\n validateOnChange = () => {},\n wrapperClassName = '',\n ...restProps\n}) {\n const max = multiple ? Infinity : maxProp || (tags ? Infinity : 1);\n const renderList = CustomListComponent\n ? (values, { sendMessage }) => (\n sendMessage('value.select', { item: values[index] })}\n getListItemCssClasses={() => {}}\n />\n )\n : renderListProp;\n\n const rootRef = useRef(null);\n const comboboxControlRef = useRef(null);\n const dropdownRef = useRef(null);\n const listRef = useRef(null);\n\n const [value, setValue] = useState(getValueFromProp(propValue, propValues));\n const [values, setValues] = useState(propValues.map((v) => normalizeValue(v)));\n const [searchValue, setSearchValue] = useState('');\n const [activeItem, setActiveItem] = useState(null);\n const [isOpened, setIsOpened] = useState(false);\n const [valuesExpanded, setValuesExpanded] = useState(false);\n const [localValidationError, setLocalValidationError] = useState('');\n\n function getThemeClasses() {\n const themes = theme ? theme.split(' ') : [];\n return themes.map((iTheme) => `tyk-form-group--${iTheme}`);\n }\n\n function getCssClasses() {\n return [\n wrapperClassName,\n 'tyk-form-group',\n 'tyk-combobox2',\n ...getThemeClasses(),\n (error || localValidationError) && 'has-error',\n labelwidth && 'tyk-form-group--label-has-width',\n disabled && 'disabled',\n expandMode && 'is-expand-mode',\n ].filter(Boolean).join(' ');\n }\n\n function getFilteredValues() {\n const defaultFn = (v, s) => v?.name?.toLowerCase()?.includes(s);\n const fn = matchItemFn || defaultFn;\n const filteredValues = values.filter((v) => fn(v, searchValue.toLowerCase()));\n return filteredValues;\n }\n\n function openDropdown() {\n setIsOpened(true);\n }\n\n function closeDropdown() {\n setIsOpened(false);\n if (!tags) updateSearchValue('');\n setActiveItem(null);\n }\n\n function updateSearchValue(newSearchValue) {\n setSearchValue(newSearchValue);\n if (activeItem && getFilteredValues().every((fv) => fv.id !== activeItem.id)) {\n setActiveItem(null);\n }\n if (newSearchValue && !isOpened) openDropdown();\n }\n\n function isValidValue(newValues, lastValue) {\n const localError = validateOnChange(newValues, lastValue);\n setLocalValidationError(localError);\n return localError === undefined;\n }\n\n function updateValue(newValues) {\n setValue(newValues);\n onChange(max === 1 && !tags ? (newValues[0] || null) : newValues);\n }\n\n function addTag(val) {\n if (!val) return;\n if (value.length >= max) return;\n if (value.some(({ name }) => name === val)) return;\n\n const listValueIndex = values.findIndex((lv) => lv.name === val);\n let newValue;\n let finalValue = [...value];\n let selectedValues;\n\n if (listValueIndex === -1) {\n if (allowCustomValues) {\n newValue = { id: val, name: val };\n finalValue = [...value, newValue];\n }\n } else {\n selectedValues = [\n ...values.slice(0, listValueIndex),\n { ...values[listValueIndex], selected: true },\n ...values.slice(listValueIndex + 1),\n ];\n newValue = values[listValueIndex];\n finalValue = [...value, values[listValueIndex]];\n }\n\n if (isValidValue(finalValue, newValue) && onBeforeChange(value, finalValue)) {\n if (selectedValues) {\n setValues(selectedValues);\n }\n updateValue(finalValue);\n }\n }\n\n function removeTag(id) {\n if (required && max === 1) return;\n\n const listValueIndex = values.findIndex((lv) => lv.id === id);\n const newValue = value.filter((v) => v.id !== id);\n\n if (!onBeforeChange(value, newValue)) return;\n\n if (listValueIndex !== -1) {\n setValues([\n ...values.slice(0, listValueIndex),\n { ...values[listValueIndex], selected: false },\n ...values.slice(listValueIndex + 1),\n ]);\n }\n updateValue(newValue);\n }\n\n function selectValue({ id }) {\n const val = values.find((v) => v.id === id);\n let finalValue = value;\n let selectedValues = values;\n\n if (val.selected) {\n if (!required || max !== 1) {\n finalValue = value.filter((v) => v.id !== val.id);\n selectedValues = values.map((v) => (v.id === val.id ? { ...v, selected: false } : v));\n }\n } else if (value.length < max) {\n finalValue = [...value, val];\n selectedValues = values.map((v) => (v.id === val.id ? { ...v, selected: true } : v));\n } else if (max === 1) {\n finalValue = [val];\n selectedValues = values.map((v) => ({ ...v, selected: v.id === val.id }));\n }\n\n if (isValidValue(finalValue, val) && onBeforeChange(value, finalValue)) {\n updateValue(finalValue);\n setValues(selectedValues);\n }\n\n if (max === 1 || closeOnSelect) {\n closeDropdown();\n }\n }\n\n function selectAllValues(selected) {\n if (values.length > max) return;\n const newValue = selected ? [...values] : [];\n\n if (!onBeforeChange(value, newValue)) return;\n\n updateValue(newValue);\n setValues(values.map((v) => ({ ...v, selected })));\n if (closeOnSelect) closeDropdown();\n }\n\n function moveUpActiveItem() {\n const visibleItems = getFilteredValues().filter((v) => !v.disabled);\n if (visibleItems.length === 0) return;\n if (activeItem === null || visibleItems.length === 1) {\n setActiveItem(visibleItems[visibleItems.length - 1]);\n return;\n }\n const activeIndex = visibleItems.findIndex((v) => v.id === activeItem.id);\n setActiveItem(visibleItems[activeIndex > 0 ? activeIndex - 1 : visibleItems.length - 1]);\n }\n\n function moveDownActiveItem() {\n const visibleItems = getFilteredValues().filter((v) => !v.disabled);\n if (visibleItems.length === 0) return;\n if (activeItem === null || visibleItems.length === 1) {\n setActiveItem(visibleItems[0]);\n return;\n }\n const activeIndex = visibleItems.findIndex((v) => v.id === activeItem.id);\n setActiveItem(visibleItems[activeIndex < visibleItems.length - 1 ? activeIndex + 1 : 0]);\n }\n\n function executeTriggerAction() {\n if (expandMode) {\n setValuesExpanded(!valuesExpanded);\n } else {\n openDropdown();\n }\n }\n\n function handleDocumentClick(e) {\n const isClickInside = (rootRef.current && rootRef.current.contains(e.target))\n || (dropdownRef.current && dropdownRef.current.contains(e.target));\n if (!isClickInside) {\n closeDropdown();\n }\n }\n\n function onClickCapture(e) {\n if (!disabled) return;\n if (!expandMode) {\n e.stopPropagation();\n return;\n }\n\n const triggerElement = rootRef.current.querySelector('.tyk-combobox2__values-container-trigger');\n if (!triggerElement) return;\n\n const isClickOnTrigger = triggerElement === e.target || triggerElement.contains(e.target);\n if (!isClickOnTrigger) e.stopPropagation();\n }\n\n function onTagMessage(message, data) {\n if (message === 'add') {\n addTag(data);\n updateSearchValue('');\n }\n\n if (message === 'remove') removeTag(data);\n\n if (message === 'input.change') updateSearchValue(data);\n\n if (message === 'input.enter') {\n if (activeItem) {\n selectValue(activeItem);\n } else if (tagSeparators.includes('Enter')) {\n addTag(data);\n updateSearchValue('');\n }\n }\n\n if (message === 'input.arrowUp') {\n openDropdown();\n moveUpActiveItem();\n }\n\n if (message === 'input.arrowDown') {\n openDropdown();\n moveDownActiveItem();\n }\n\n if (message === 'input.escape') closeDropdown();\n\n if (message === 'input.blur' && addTagOnBlur) {\n addTag(data);\n updateSearchValue('');\n }\n\n if (message === 'input.focus') {\n openDropdown();\n }\n }\n\n function onMessage(message, data) {\n if (message.startsWith('tag.')) onTagMessage(message.slice(4), data);\n\n if (message === 'value.select') selectValue(data.item);\n\n if (message === 'value.select-all') selectAllValues(data);\n\n if (message === 'text-value.click') openDropdown();\n\n if (message === 'search.change') updateSearchValue(data);\n\n if (message === 'search.escape') closeDropdown();\n\n if (message === 'search.arrowUp') moveUpActiveItem();\n\n if (message === 'search.arrowDown') moveDownActiveItem();\n\n if (message === 'search.enter') {\n if (activeItem) selectValue(activeItem);\n }\n }\n\n useEffect(() => {\n window.addEventListener('click', handleDocumentClick, true);\n return () => window.removeEventListener('click', handleDocumentClick, true);\n }, []);\n\n useEffect(() => {\n if (propValues.length) {\n const newValues = propValues.map((v) => ({\n ...normalizeValue(v),\n selected: value.some((sv) => sv.id === v.id),\n }));\n setValues(newValues);\n setValue((val) => val.map((v) => newValues.find((nv) => nv.id === v.id) || v));\n } else if (values.length) {\n setValues([]);\n }\n }, [propValues]);\n\n useEffect(() => {\n const newValue = getValueFromProp(propValue, values);\n setValue(newValue);\n setValues((vals) => vals.map((v) => ({\n ...normalizeValue(v),\n selected: newValue.some((nv) => nv.id === v.id),\n })));\n }, [propValue]);\n\n useEffect(() => {\n if (!expandMode) return () => {};\n\n const valuesElement = comboboxControlRef.current.querySelector('.tyk-combobox2__current-values');\n const updateScroll = () => {\n valuesElement.scrollTop = valuesElement.scrollHeight;\n };\n /* eslint-disable-next-line no-undef */\n const mobserver = new MutationObserver(updateScroll);\n const robserver = new ResizeObserver(updateScroll);\n\n mobserver.observe(valuesElement, { attributes: true, childList: true, subtree: true });\n robserver.observe(valuesElement);\n\n return () => {\n mobserver.disconnect();\n robserver.disconnect();\n };\n });\n\n const filteredValues = getFilteredValues();\n const currentValuesClasses = [\n 'tyk-combobox2__current-values',\n expandMode && 'expand-mode',\n `tyk-combobox2__current-values--${valuesExpanded ? 'expanded' : 'collapsed'}`,\n ].join(' ');\n return (\n \n {label && (\n \n )}\n {!readOnly && (\n \n
    \n \n \n
    \n {displayDropdownTrigger && (\n \n {expandMode\n ? (\n \n )\n : (\n \n )}\n \n )}\n \n {isOpened && (!tags || filteredValues.length > 0) && (\n \n {renderList ? (\n renderList(filteredValues, {\n tags,\n searchValue,\n activeItem,\n listRef,\n sendMessage: onMessage,\n })\n ) : (\n \n )}\n \n )}\n {note && (\n

    {note}

    \n )}\n {((error && error !== 'true' && error !== 'false') || Boolean(localValidationError)) && (\n

    {error || localValidationError}

    \n )}\n \n )}\n {readOnly && (\n
    \n \n
    \n )}\n \n );\n}\n\nCombobox2.propTypes = {\n /** If `true` it allows entering values that are not in the list. */\n allowCustomValues: PropTypes.bool,\n /** Alias for `renderList`\n * used for backwards compatibility with the old Combobox component. */\n CustomListComponent: PropTypes.elementType,\n /** A function used for filtering elements displayed in the list when typing in. */\n searchItem: PropTypes.func,\n /** A custom component that will be used to display a value. */\n renderValue: PropTypes.func,\n /** A custom component that will be used to display an item in the dropdown list. */\n renderListItem: PropTypes.func,\n /** A custom component that will be used to display the entire content of the dropdown. */\n renderList: PropTypes.func,\n disabled: PropTypes.bool,\n /** hides the UI form element and displayes just the value as text */\n readOnly: PropTypes.bool,\n error: PropTypes.string,\n label: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.func,\n PropTypes.string,\n ]),\n labelwidth: PropTypes.string,\n /** The maximum number of values that can be selected/added. */\n max: PropTypes.number,\n /** Shorthand for max=Infinity */\n multiple: PropTypes.bool,\n note: PropTypes.oneOfType([\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n /**\n * Callback called before changing the value of the component.\n * The value change will succeed only if the callback's return value is truthy.\n * The callback is called with two arguments: 1) the previous value, 2) the next value */\n onBeforeChange: PropTypes.func,\n onChange: PropTypes.func,\n placeholder: PropTypes.string,\n /** Enables the display of values as `Pill` components that can be\n * removed without opening the dropdown. */\n tags: PropTypes.bool,\n /** A list of characters that will trigger the creation of a tag when typed. */\n tagSeparators: PropTypes.arrayOf(PropTypes.string),\n /** If set to true a tag will be created whenever the component loses focus\n * and there is something typed in. */\n addTagOnBlur: PropTypes.bool,\n theme: PropTypes.string,\n /** The value of the component. It can be a string, an array,\n * or an object with an `id` property. */\n value: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.instanceOf(Array),\n PropTypes.instanceOf(Object),\n ]),\n /** An array of selectable values. */\n values: PropTypes.instanceOf(Array),\n /** Config object passed to the internal floating container component. */\n floatingContainerConfig: PropTypes.instanceOf(Object),\n /** If set to `single` it will display the values on a single line\n * with an ellipsis at the end. */\n valueOverflow: PropTypes.oneOf(['single', 'multiple']),\n /**\n * If set to `true` whenever the user clicks on the dropdown trigger\n * the selected values container\n * will expand to show all selected values instead of opening the dropdown.\n */\n expandMode: PropTypes.bool,\n /** Config object passed to the internal infinite scroller component. */\n infiniteScrollerConfig: PropTypes.instanceOf(Object),\n /** Toggles the display of the dropdown trigger. */\n displayDropdownTrigger: PropTypes.bool,\n /**\n * If a boolean it will toggle the select all functionality from the dropdown.\n * It can also be an object with the shape `{ label, show, mode, render }`.\n * label - A string displayed as the select all option\n * show - It can be one of `['always', 'notSameState']`.\n * `always` means the option will always be displayed.\n * `notSameState` means it will be displayed only if the list items are\n * not all with the same state (depending on the `mode` value)\n * mode - It can be one of `['select', 'unselect']` and makes sense only\n * when the `show` property is `notSameState`\n * `select` means the select all option will only be displayed if not all\n * items are selected\n * `unselect` means the option will be displayed if no items are selected\n */\n selectAll: PropTypes.oneOfType([\n PropTypes.bool,\n PropTypes.shape({\n label: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.func,\n PropTypes.string,\n ]),\n mode: PropTypes.oneOf(['select', 'unselect']),\n show: PropTypes.oneOf(['always', 'notSameState']),\n render: PropTypes.func,\n }),\n ]),\n /** It `true` the dropdown will close after selecting a value. */\n closeOnSelect: PropTypes.bool,\n /** Toggles the display of the search input from the dropdown. */\n showSearch: PropTypes.bool,\n /** If it is required and can only select one value once you have something\n * selected you will not be able to deselect */\n required: PropTypes.bool,\n /** Validates newly added value before adding it to the selected values.\n * Returns an error string in case of error otherwise it returns undefined\n */\n validateOnChange: PropTypes.func,\n wrapperClassName: PropTypes.string,\n};\n\nexport default Combobox2;\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"flatpickr\");","\n import API from \"!../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../css-loader/dist/cjs.js!./flatpickr.min.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../css-loader/dist/cjs.js!./flatpickr.min.css\";\n export default content && content.locals ? content.locals : undefined;\n","import React, {\n useEffect, useState, useRef, useCallback,\n} from 'react';\nimport PropTypes from 'prop-types';\nimport flatpickr from 'flatpickr';\nimport 'flatpickr/dist/flatpickr.min.css';\n\nimport Icon from '../../../components/Icon';\nimport { usePrevious } from '../../../hooks';\n\nfunction DatePicker({\n children,\n disabled,\n readOnly = false,\n error,\n id,\n label,\n labelwidth,\n note,\n onClose,\n onChange,\n onOpen,\n theme,\n config = {},\n value,\n wrapperClassName = '',\n}) {\n const [pickerInstance, setPickerInstance] = useState(null);\n const dateRef = useRef(null);\n\n const prevValue = usePrevious(value);\n\n const hasValueChanged = useCallback((prevDate, currentDate) => {\n if (!prevDate) return true;\n if (!Array.isArray(currentDate)) return prevDate.getTime() !== currentDate.getTime();\n\n let diffDates = currentDate;\n\n if (prevDate && currentDate.length && prevDate.length) {\n diffDates = currentDate.filter((date, index) => date.getTime() !== prevDate[index].getTime());\n\n return diffDates.length > 0;\n }\n\n return currentDate.length > 0;\n }, []);\n\n const onDateChange = useCallback((dateValue) => {\n const finalValue = config.mode === 'range' ? dateValue : dateValue[0] || null;\n\n if (!onChange) return;\n\n if (config.mode === 'range') {\n if (finalValue.length === 2 && hasValueChanged(prevValue, finalValue)) {\n onChange(finalValue);\n }\n } else {\n onChange(finalValue);\n }\n }, [prevValue, onChange, hasValueChanged]);\n\n useEffect(() => {\n if (dateRef && dateRef.current && !pickerInstance) {\n const instance = flatpickr(dateRef.current, {\n ...config, defaultDate: value, onChange: onDateChange, onClose, onOpen,\n });\n setPickerInstance(instance);\n }\n\n return () => {\n if (pickerInstance) {\n pickerInstance.destroy();\n }\n };\n }, [dateRef.current, pickerInstance]);\n\n useEffect(() => {\n if (pickerInstance) {\n let tempValue = value;\n\n if (typeof value === 'string') {\n tempValue = new Date(value);\n } else if (Array.isArray(value)) {\n tempValue = value.map((date) => (typeof date === 'string' ? new Date(date) : date));\n }\n\n if (hasValueChanged(prevValue, tempValue)) {\n pickerInstance.set('onChange', onDateChange);\n if (config.mode === 'range') {\n if (tempValue && tempValue.length === 2) {\n pickerInstance.setDate(tempValue, true);\n }\n } else {\n pickerInstance.setDate(tempValue, true);\n }\n }\n }\n }, [prevValue, value, pickerInstance]);\n\n const classes = [\n 'tyk-form-group',\n 'tyk-form-group--addon-right',\n wrapperClassName,\n ...(theme ? theme.split(' ').map((t) => `tyk-form-group--${t}`) : []),\n labelwidth && 'tyk-form-group--label-has-width',\n error && 'has-error',\n ].filter(Boolean).join(' ');\n\n const getLabelStyles = () => {\n if (labelwidth) return { flexBasis: labelwidth };\n return {};\n };\n\n const getNonLabelWidth = () => {\n if (labelwidth) return { flexBasis: `calc(100% - ${labelwidth} - 20px)` };\n return {};\n };\n\n const openCalendar = useCallback(() => {\n if (!pickerInstance) return;\n\n pickerInstance.open();\n }, [pickerInstance]);\n\n const getInputError = () => (\n (error && error !== 'true' && error !== 'false')\n ? (\n

    \n { error }\n

    \n )\n : null\n );\n\n const getInputField = () => {\n let inputStyle = {};\n let addonStyle = {};\n\n if (config && config.inline) {\n inputStyle = {\n height: 0,\n padding: 0,\n width: 0,\n visibility: 'hidden',\n };\n\n addonStyle = {\n display: 'none',\n };\n }\n return (\n <>\n \n {}}\n tabIndex={0}\n style={addonStyle}\n >\n \n \n \n );\n };\n\n return (\n <>\n {\n children && children.length\n ? children({ openCalendar, ref: dateRef })\n : (\n
    \n {\n label\n ? \n : null\n }\n {!readOnly && (\n \n
    \n {getInputField()}\n
    \n {\n note\n ?

    { note }

    \n : null\n }\n { getInputError() }\n
    \n )}\n \n )\n }\n
    \n {readOnly && !value && '-'}\n {readOnly && value && flatpickr.formatDate(value, config.dateFormat || 'd/m/Y')}\n
    \n \n );\n}\n\nDatePicker.propTypes = {\n config: PropTypes.instanceOf(Object),\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n PropTypes.func,\n ]),\n disabled: PropTypes.bool,\n readOnly: PropTypes.bool,\n id: PropTypes.string,\n label: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.func,\n PropTypes.string,\n ]),\n labelwidth: PropTypes.string,\n note: PropTypes.string,\n onChange: PropTypes.oneOfType([\n PropTypes.func,\n PropTypes.instanceOf(Array),\n ]),\n onClose: PropTypes.oneOfType([\n PropTypes.func,\n PropTypes.instanceOf(Array),\n ]),\n onOpen: PropTypes.oneOfType([\n PropTypes.func,\n PropTypes.instanceOf(Array),\n ]),\n theme: PropTypes.string,\n error: PropTypes.string,\n value: PropTypes.oneOfType([\n PropTypes.instanceOf(Array),\n PropTypes.instanceOf(Object),\n PropTypes.string,\n ]),\n wrapperClassName: PropTypes.string,\n};\n\nexport default DatePicker;\n","export default function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}","export default function requiredArgs(required, args) {\n if (args.length < required) {\n throw new TypeError(required + ' argument' + (required > 1 ? 's' : '') + ' required, but only ' + args.length + ' present');\n }\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isDate\n * @category Common Helpers\n * @summary Is the given value a date?\n *\n * @description\n * Returns true if the given value is an instance of Date. The function works for dates transferred across iframes.\n *\n * @param {*} value - the value to check\n * @returns {boolean} true if the given value is a date\n * @throws {TypeError} 1 arguments required\n *\n * @example\n * // For a valid date:\n * const result = isDate(new Date())\n * //=> true\n *\n * @example\n * // For an invalid date:\n * const result = isDate(new Date(NaN))\n * //=> true\n *\n * @example\n * // For some value:\n * const result = isDate('2014-02-31')\n * //=> false\n *\n * @example\n * // For an object:\n * const result = isDate({})\n * //=> false\n */\nexport default function isDate(value) {\n requiredArgs(1, arguments);\n return value instanceof Date || _typeof(value) === 'object' && Object.prototype.toString.call(value) === '[object Date]';\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n *\n * @param {Date|Number} argument - the value to convert\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Clone the date:\n * const result = toDate(new Date(2014, 1, 11, 11, 30, 30))\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert the timestamp to date:\n * const result = toDate(1392098430000)\n * //=> Tue Feb 11 2014 11:30:30\n */\nexport default function toDate(argument) {\n requiredArgs(1, arguments);\n var argStr = Object.prototype.toString.call(argument);\n\n // Clone the date\n if (argument instanceof Date || _typeof(argument) === 'object' && argStr === '[object Date]') {\n // Prevent the date to lose the milliseconds when passed to new Date() in IE10\n return new Date(argument.getTime());\n } else if (typeof argument === 'number' || argStr === '[object Number]') {\n return new Date(argument);\n } else {\n if ((typeof argument === 'string' || argStr === '[object String]') && typeof console !== 'undefined') {\n // eslint-disable-next-line no-console\n console.warn(\"Starting with v2.0.0-beta.1 date-fns doesn't accept strings as date arguments. Please use `parseISO` to parse strings. See: https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#string-arguments\");\n // eslint-disable-next-line no-console\n console.warn(new Error().stack);\n }\n return new Date(NaN);\n }\n}","import isDate from \"../isDate/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isValid\n * @category Common Helpers\n * @summary Is the given date valid?\n *\n * @description\n * Returns false if argument is Invalid Date and true otherwise.\n * Argument is converted to Date using `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * Invalid Date is a Date, whose time value is NaN.\n *\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @param {*} date - the date to check\n * @returns {Boolean} the date is valid\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // For the valid date:\n * const result = isValid(new Date(2014, 1, 31))\n * //=> true\n *\n * @example\n * // For the value, convertable into a date:\n * const result = isValid(1393804800000)\n * //=> true\n *\n * @example\n * // For the invalid date:\n * const result = isValid(new Date(''))\n * //=> false\n */\nexport default function isValid(dirtyDate) {\n requiredArgs(1, arguments);\n if (!isDate(dirtyDate) && typeof dirtyDate !== 'number') {\n return false;\n }\n var date = toDate(dirtyDate);\n return !isNaN(Number(date));\n}","export default function toInteger(dirtyNumber) {\n if (dirtyNumber === null || dirtyNumber === true || dirtyNumber === false) {\n return NaN;\n }\n var number = Number(dirtyNumber);\n if (isNaN(number)) {\n return number;\n }\n return number < 0 ? Math.ceil(number) : Math.floor(number);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addMilliseconds\n * @category Millisecond Helpers\n * @summary Add the specified number of milliseconds to the given date.\n *\n * @description\n * Add the specified number of milliseconds to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the milliseconds added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 750 milliseconds to 10 July 2014 12:45:30.000:\n * const result = addMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:30.750\n */\nexport default function addMilliseconds(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var timestamp = toDate(dirtyDate).getTime();\n var amount = toInteger(dirtyAmount);\n return new Date(timestamp + amount);\n}","import addMilliseconds from \"../addMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\n/**\n * @name subMilliseconds\n * @category Millisecond Helpers\n * @summary Subtract the specified number of milliseconds from the given date.\n *\n * @description\n * Subtract the specified number of milliseconds from the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the milliseconds subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 750 milliseconds from 10 July 2014 12:45:30.000:\n * const result = subMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:29.250\n */\nexport default function subMilliseconds(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMilliseconds(dirtyDate, -amount);\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_DAY = 86400000;\nexport default function getUTCDayOfYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var timestamp = date.getTime();\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n var startOfYearTimestamp = date.getTime();\n var difference = timestamp - startOfYearTimestamp;\n return Math.floor(difference / MILLISECONDS_IN_DAY) + 1;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nexport default function startOfUTCISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n var weekStartsOn = 1;\n var date = toDate(dirtyDate);\n var day = date.getUTCDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setUTCDate(date.getUTCDate() - diff);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nexport default function getUTCISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getUTCFullYear();\n var fourthOfJanuaryOfNextYear = new Date(0);\n fourthOfJanuaryOfNextYear.setUTCFullYear(year + 1, 0, 4);\n fourthOfJanuaryOfNextYear.setUTCHours(0, 0, 0, 0);\n var startOfNextYear = startOfUTCISOWeek(fourthOfJanuaryOfNextYear);\n var fourthOfJanuaryOfThisYear = new Date(0);\n fourthOfJanuaryOfThisYear.setUTCFullYear(year, 0, 4);\n fourthOfJanuaryOfThisYear.setUTCHours(0, 0, 0, 0);\n var startOfThisYear = startOfUTCISOWeek(fourthOfJanuaryOfThisYear);\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}","import getUTCISOWeekYear from \"../getUTCISOWeekYear/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nexport default function startOfUTCISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var year = getUTCISOWeekYear(dirtyDate);\n var fourthOfJanuary = new Date(0);\n fourthOfJanuary.setUTCFullYear(year, 0, 4);\n fourthOfJanuary.setUTCHours(0, 0, 0, 0);\n var date = startOfUTCISOWeek(fourthOfJanuary);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nimport startOfUTCISOWeekYear from \"../startOfUTCISOWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000;\nexport default function getUTCISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var diff = startOfUTCISOWeek(date).getTime() - startOfUTCISOWeekYear(date).getTime();\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","var defaultOptions = {};\nexport function getDefaultOptions() {\n return defaultOptions;\n}\nexport function setDefaultOptions(newOptions) {\n defaultOptions = newOptions;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nimport { getDefaultOptions } from \"../defaultOptions/index.js\";\nexport default function startOfUTCWeek(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$weekStartsOn, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(1, arguments);\n var defaultOptions = getDefaultOptions();\n var weekStartsOn = toInteger((_ref = (_ref2 = (_ref3 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.weekStartsOn) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.weekStartsOn) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.weekStartsOn) !== null && _ref !== void 0 ? _ref : 0);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n var date = toDate(dirtyDate);\n var day = date.getUTCDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setUTCDate(date.getUTCDate() - diff);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nimport { getDefaultOptions } from \"../defaultOptions/index.js\";\nexport default function getUTCWeekYear(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$firstWeekCon, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getUTCFullYear();\n var defaultOptions = getDefaultOptions();\n var firstWeekContainsDate = toInteger((_ref = (_ref2 = (_ref3 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref !== void 0 ? _ref : 1);\n\n // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n var firstWeekOfNextYear = new Date(0);\n firstWeekOfNextYear.setUTCFullYear(year + 1, 0, firstWeekContainsDate);\n firstWeekOfNextYear.setUTCHours(0, 0, 0, 0);\n var startOfNextYear = startOfUTCWeek(firstWeekOfNextYear, options);\n var firstWeekOfThisYear = new Date(0);\n firstWeekOfThisYear.setUTCFullYear(year, 0, firstWeekContainsDate);\n firstWeekOfThisYear.setUTCHours(0, 0, 0, 0);\n var startOfThisYear = startOfUTCWeek(firstWeekOfThisYear, options);\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}","import getUTCWeekYear from \"../getUTCWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nimport { getDefaultOptions } from \"../defaultOptions/index.js\";\nexport default function startOfUTCWeekYear(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$firstWeekCon, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(1, arguments);\n var defaultOptions = getDefaultOptions();\n var firstWeekContainsDate = toInteger((_ref = (_ref2 = (_ref3 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref !== void 0 ? _ref : 1);\n var year = getUTCWeekYear(dirtyDate, options);\n var firstWeek = new Date(0);\n firstWeek.setUTCFullYear(year, 0, firstWeekContainsDate);\n firstWeek.setUTCHours(0, 0, 0, 0);\n var date = startOfUTCWeek(firstWeek, options);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport startOfUTCWeekYear from \"../startOfUTCWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000;\nexport default function getUTCWeek(dirtyDate, options) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var diff = startOfUTCWeek(date, options).getTime() - startOfUTCWeekYear(date, options).getTime();\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","export default function addLeadingZeros(number, targetLength) {\n var sign = number < 0 ? '-' : '';\n var output = Math.abs(number).toString();\n while (output.length < targetLength) {\n output = '0' + output;\n }\n return sign + output;\n}","import addLeadingZeros from \"../../addLeadingZeros/index.js\";\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | |\n * | d | Day of month | D | |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | m | Minute | M | Month |\n * | s | Second | S | Fraction of second |\n * | y | Year (abs) | Y | |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n */\nvar formatters = {\n // Year\n y: function y(date, token) {\n // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_tokens\n // | Year | y | yy | yyy | yyyy | yyyyy |\n // |----------|-------|----|-------|-------|-------|\n // | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n // | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n // | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n // | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n\n var signedYear = date.getUTCFullYear();\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n var year = signedYear > 0 ? signedYear : 1 - signedYear;\n return addLeadingZeros(token === 'yy' ? year % 100 : year, token.length);\n },\n // Month\n M: function M(date, token) {\n var month = date.getUTCMonth();\n return token === 'M' ? String(month + 1) : addLeadingZeros(month + 1, 2);\n },\n // Day of the month\n d: function d(date, token) {\n return addLeadingZeros(date.getUTCDate(), token.length);\n },\n // AM or PM\n a: function a(date, token) {\n var dayPeriodEnumValue = date.getUTCHours() / 12 >= 1 ? 'pm' : 'am';\n switch (token) {\n case 'a':\n case 'aa':\n return dayPeriodEnumValue.toUpperCase();\n case 'aaa':\n return dayPeriodEnumValue;\n case 'aaaaa':\n return dayPeriodEnumValue[0];\n case 'aaaa':\n default:\n return dayPeriodEnumValue === 'am' ? 'a.m.' : 'p.m.';\n }\n },\n // Hour [1-12]\n h: function h(date, token) {\n return addLeadingZeros(date.getUTCHours() % 12 || 12, token.length);\n },\n // Hour [0-23]\n H: function H(date, token) {\n return addLeadingZeros(date.getUTCHours(), token.length);\n },\n // Minute\n m: function m(date, token) {\n return addLeadingZeros(date.getUTCMinutes(), token.length);\n },\n // Second\n s: function s(date, token) {\n return addLeadingZeros(date.getUTCSeconds(), token.length);\n },\n // Fraction of second\n S: function S(date, token) {\n var numberOfDigits = token.length;\n var milliseconds = date.getUTCMilliseconds();\n var fractionalSeconds = Math.floor(milliseconds * Math.pow(10, numberOfDigits - 3));\n return addLeadingZeros(fractionalSeconds, token.length);\n }\n};\nexport default formatters;","import getUTCDayOfYear from \"../../../_lib/getUTCDayOfYear/index.js\";\nimport getUTCISOWeek from \"../../../_lib/getUTCISOWeek/index.js\";\nimport getUTCISOWeekYear from \"../../../_lib/getUTCISOWeekYear/index.js\";\nimport getUTCWeek from \"../../../_lib/getUTCWeek/index.js\";\nimport getUTCWeekYear from \"../../../_lib/getUTCWeekYear/index.js\";\nimport addLeadingZeros from \"../../addLeadingZeros/index.js\";\nimport lightFormatters from \"../lightFormatters/index.js\";\nvar dayPeriodEnum = {\n am: 'am',\n pm: 'pm',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n};\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O | Timezone (GMT) |\n * | p! | Long localized time | P! | Long localized date |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `format` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n * - `P` is long localized date format\n * - `p` is long localized time format\n */\n\nvar formatters = {\n // Era\n G: function G(date, token, localize) {\n var era = date.getUTCFullYear() > 0 ? 1 : 0;\n switch (token) {\n // AD, BC\n case 'G':\n case 'GG':\n case 'GGG':\n return localize.era(era, {\n width: 'abbreviated'\n });\n // A, B\n case 'GGGGG':\n return localize.era(era, {\n width: 'narrow'\n });\n // Anno Domini, Before Christ\n case 'GGGG':\n default:\n return localize.era(era, {\n width: 'wide'\n });\n }\n },\n // Year\n y: function y(date, token, localize) {\n // Ordinal number\n if (token === 'yo') {\n var signedYear = date.getUTCFullYear();\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n var year = signedYear > 0 ? signedYear : 1 - signedYear;\n return localize.ordinalNumber(year, {\n unit: 'year'\n });\n }\n return lightFormatters.y(date, token);\n },\n // Local week-numbering year\n Y: function Y(date, token, localize, options) {\n var signedWeekYear = getUTCWeekYear(date, options);\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n var weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear;\n\n // Two digit year\n if (token === 'YY') {\n var twoDigitYear = weekYear % 100;\n return addLeadingZeros(twoDigitYear, 2);\n }\n\n // Ordinal number\n if (token === 'Yo') {\n return localize.ordinalNumber(weekYear, {\n unit: 'year'\n });\n }\n\n // Padding\n return addLeadingZeros(weekYear, token.length);\n },\n // ISO week-numbering year\n R: function R(date, token) {\n var isoWeekYear = getUTCISOWeekYear(date);\n\n // Padding\n return addLeadingZeros(isoWeekYear, token.length);\n },\n // Extended year. This is a single number designating the year of this calendar system.\n // The main difference between `y` and `u` localizers are B.C. years:\n // | Year | `y` | `u` |\n // |------|-----|-----|\n // | AC 1 | 1 | 1 |\n // | BC 1 | 1 | 0 |\n // | BC 2 | 2 | -1 |\n // Also `yy` always returns the last two digits of a year,\n // while `uu` pads single digit years to 2 characters and returns other years unchanged.\n u: function u(date, token) {\n var year = date.getUTCFullYear();\n return addLeadingZeros(year, token.length);\n },\n // Quarter\n Q: function Q(date, token, localize) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case 'Q':\n return String(quarter);\n // 01, 02, 03, 04\n case 'QQ':\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n case 'Qo':\n return localize.ordinalNumber(quarter, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n case 'QQQ':\n return localize.quarter(quarter, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case 'QQQQQ':\n return localize.quarter(quarter, {\n width: 'narrow',\n context: 'formatting'\n });\n // 1st quarter, 2nd quarter, ...\n case 'QQQQ':\n default:\n return localize.quarter(quarter, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone quarter\n q: function q(date, token, localize) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case 'q':\n return String(quarter);\n // 01, 02, 03, 04\n case 'qq':\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n case 'qo':\n return localize.ordinalNumber(quarter, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n case 'qqq':\n return localize.quarter(quarter, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case 'qqqqq':\n return localize.quarter(quarter, {\n width: 'narrow',\n context: 'standalone'\n });\n // 1st quarter, 2nd quarter, ...\n case 'qqqq':\n default:\n return localize.quarter(quarter, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // Month\n M: function M(date, token, localize) {\n var month = date.getUTCMonth();\n switch (token) {\n case 'M':\n case 'MM':\n return lightFormatters.M(date, token);\n // 1st, 2nd, ..., 12th\n case 'Mo':\n return localize.ordinalNumber(month + 1, {\n unit: 'month'\n });\n // Jan, Feb, ..., Dec\n case 'MMM':\n return localize.month(month, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // J, F, ..., D\n case 'MMMMM':\n return localize.month(month, {\n width: 'narrow',\n context: 'formatting'\n });\n // January, February, ..., December\n case 'MMMM':\n default:\n return localize.month(month, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone month\n L: function L(date, token, localize) {\n var month = date.getUTCMonth();\n switch (token) {\n // 1, 2, ..., 12\n case 'L':\n return String(month + 1);\n // 01, 02, ..., 12\n case 'LL':\n return addLeadingZeros(month + 1, 2);\n // 1st, 2nd, ..., 12th\n case 'Lo':\n return localize.ordinalNumber(month + 1, {\n unit: 'month'\n });\n // Jan, Feb, ..., Dec\n case 'LLL':\n return localize.month(month, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // J, F, ..., D\n case 'LLLLL':\n return localize.month(month, {\n width: 'narrow',\n context: 'standalone'\n });\n // January, February, ..., December\n case 'LLLL':\n default:\n return localize.month(month, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // Local week of year\n w: function w(date, token, localize, options) {\n var week = getUTCWeek(date, options);\n if (token === 'wo') {\n return localize.ordinalNumber(week, {\n unit: 'week'\n });\n }\n return addLeadingZeros(week, token.length);\n },\n // ISO week of year\n I: function I(date, token, localize) {\n var isoWeek = getUTCISOWeek(date);\n if (token === 'Io') {\n return localize.ordinalNumber(isoWeek, {\n unit: 'week'\n });\n }\n return addLeadingZeros(isoWeek, token.length);\n },\n // Day of the month\n d: function d(date, token, localize) {\n if (token === 'do') {\n return localize.ordinalNumber(date.getUTCDate(), {\n unit: 'date'\n });\n }\n return lightFormatters.d(date, token);\n },\n // Day of year\n D: function D(date, token, localize) {\n var dayOfYear = getUTCDayOfYear(date);\n if (token === 'Do') {\n return localize.ordinalNumber(dayOfYear, {\n unit: 'dayOfYear'\n });\n }\n return addLeadingZeros(dayOfYear, token.length);\n },\n // Day of week\n E: function E(date, token, localize) {\n var dayOfWeek = date.getUTCDay();\n switch (token) {\n // Tue\n case 'E':\n case 'EE':\n case 'EEE':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n case 'EEEEE':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n case 'EEEEEE':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n case 'EEEE':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Local day of week\n e: function e(date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n switch (token) {\n // Numerical value (Nth day of week with current locale or weekStartsOn)\n case 'e':\n return String(localDayOfWeek);\n // Padded numerical value\n case 'ee':\n return addLeadingZeros(localDayOfWeek, 2);\n // 1st, 2nd, ..., 7th\n case 'eo':\n return localize.ordinalNumber(localDayOfWeek, {\n unit: 'day'\n });\n case 'eee':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n case 'eeeee':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n case 'eeeeee':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n case 'eeee':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone local day of week\n c: function c(date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n switch (token) {\n // Numerical value (same as in `e`)\n case 'c':\n return String(localDayOfWeek);\n // Padded numerical value\n case 'cc':\n return addLeadingZeros(localDayOfWeek, token.length);\n // 1st, 2nd, ..., 7th\n case 'co':\n return localize.ordinalNumber(localDayOfWeek, {\n unit: 'day'\n });\n case 'ccc':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // T\n case 'ccccc':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'standalone'\n });\n // Tu\n case 'cccccc':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'standalone'\n });\n // Tuesday\n case 'cccc':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // ISO day of week\n i: function i(date, token, localize) {\n var dayOfWeek = date.getUTCDay();\n var isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek;\n switch (token) {\n // 2\n case 'i':\n return String(isoDayOfWeek);\n // 02\n case 'ii':\n return addLeadingZeros(isoDayOfWeek, token.length);\n // 2nd\n case 'io':\n return localize.ordinalNumber(isoDayOfWeek, {\n unit: 'day'\n });\n // Tue\n case 'iii':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n case 'iiiii':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n case 'iiiiii':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n case 'iiii':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // AM or PM\n a: function a(date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n switch (token) {\n case 'a':\n case 'aa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n case 'aaa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n }).toLowerCase();\n case 'aaaaa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'aaaa':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // AM, PM, midnight, noon\n b: function b(date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue;\n if (hours === 12) {\n dayPeriodEnumValue = dayPeriodEnum.noon;\n } else if (hours === 0) {\n dayPeriodEnumValue = dayPeriodEnum.midnight;\n } else {\n dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n }\n switch (token) {\n case 'b':\n case 'bb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n case 'bbb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n }).toLowerCase();\n case 'bbbbb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'bbbb':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // in the morning, in the afternoon, in the evening, at night\n B: function B(date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue;\n if (hours >= 17) {\n dayPeriodEnumValue = dayPeriodEnum.evening;\n } else if (hours >= 12) {\n dayPeriodEnumValue = dayPeriodEnum.afternoon;\n } else if (hours >= 4) {\n dayPeriodEnumValue = dayPeriodEnum.morning;\n } else {\n dayPeriodEnumValue = dayPeriodEnum.night;\n }\n switch (token) {\n case 'B':\n case 'BB':\n case 'BBB':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n case 'BBBBB':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'BBBB':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Hour [1-12]\n h: function h(date, token, localize) {\n if (token === 'ho') {\n var hours = date.getUTCHours() % 12;\n if (hours === 0) hours = 12;\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n return lightFormatters.h(date, token);\n },\n // Hour [0-23]\n H: function H(date, token, localize) {\n if (token === 'Ho') {\n return localize.ordinalNumber(date.getUTCHours(), {\n unit: 'hour'\n });\n }\n return lightFormatters.H(date, token);\n },\n // Hour [0-11]\n K: function K(date, token, localize) {\n var hours = date.getUTCHours() % 12;\n if (token === 'Ko') {\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n return addLeadingZeros(hours, token.length);\n },\n // Hour [1-24]\n k: function k(date, token, localize) {\n var hours = date.getUTCHours();\n if (hours === 0) hours = 24;\n if (token === 'ko') {\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n return addLeadingZeros(hours, token.length);\n },\n // Minute\n m: function m(date, token, localize) {\n if (token === 'mo') {\n return localize.ordinalNumber(date.getUTCMinutes(), {\n unit: 'minute'\n });\n }\n return lightFormatters.m(date, token);\n },\n // Second\n s: function s(date, token, localize) {\n if (token === 'so') {\n return localize.ordinalNumber(date.getUTCSeconds(), {\n unit: 'second'\n });\n }\n return lightFormatters.s(date, token);\n },\n // Fraction of second\n S: function S(date, token) {\n return lightFormatters.S(date, token);\n },\n // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)\n X: function X(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n if (timezoneOffset === 0) {\n return 'Z';\n }\n switch (token) {\n // Hours and optional minutes\n case 'X':\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XX`\n case 'XXXX':\n case 'XX':\n // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XXX`\n case 'XXXXX':\n case 'XXX': // Hours and minutes with `:` delimiter\n default:\n return formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)\n x: function x(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n switch (token) {\n // Hours and optional minutes\n case 'x':\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xx`\n case 'xxxx':\n case 'xx':\n // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xxx`\n case 'xxxxx':\n case 'xxx': // Hours and minutes with `:` delimiter\n default:\n return formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (GMT)\n O: function O(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n switch (token) {\n // Short\n case 'O':\n case 'OO':\n case 'OOO':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n // Long\n case 'OOOO':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (specific non-location)\n z: function z(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n switch (token) {\n // Short\n case 'z':\n case 'zz':\n case 'zzz':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n // Long\n case 'zzzz':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':');\n }\n },\n // Seconds timestamp\n t: function t(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timestamp = Math.floor(originalDate.getTime() / 1000);\n return addLeadingZeros(timestamp, token.length);\n },\n // Milliseconds timestamp\n T: function T(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timestamp = originalDate.getTime();\n return addLeadingZeros(timestamp, token.length);\n }\n};\nfunction formatTimezoneShort(offset, dirtyDelimiter) {\n var sign = offset > 0 ? '-' : '+';\n var absOffset = Math.abs(offset);\n var hours = Math.floor(absOffset / 60);\n var minutes = absOffset % 60;\n if (minutes === 0) {\n return sign + String(hours);\n }\n var delimiter = dirtyDelimiter || '';\n return sign + String(hours) + delimiter + addLeadingZeros(minutes, 2);\n}\nfunction formatTimezoneWithOptionalMinutes(offset, dirtyDelimiter) {\n if (offset % 60 === 0) {\n var sign = offset > 0 ? '-' : '+';\n return sign + addLeadingZeros(Math.abs(offset) / 60, 2);\n }\n return formatTimezone(offset, dirtyDelimiter);\n}\nfunction formatTimezone(offset, dirtyDelimiter) {\n var delimiter = dirtyDelimiter || '';\n var sign = offset > 0 ? '-' : '+';\n var absOffset = Math.abs(offset);\n var hours = addLeadingZeros(Math.floor(absOffset / 60), 2);\n var minutes = addLeadingZeros(absOffset % 60, 2);\n return sign + hours + delimiter + minutes;\n}\nexport default formatters;","var dateLongFormatter = function dateLongFormatter(pattern, formatLong) {\n switch (pattern) {\n case 'P':\n return formatLong.date({\n width: 'short'\n });\n case 'PP':\n return formatLong.date({\n width: 'medium'\n });\n case 'PPP':\n return formatLong.date({\n width: 'long'\n });\n case 'PPPP':\n default:\n return formatLong.date({\n width: 'full'\n });\n }\n};\nvar timeLongFormatter = function timeLongFormatter(pattern, formatLong) {\n switch (pattern) {\n case 'p':\n return formatLong.time({\n width: 'short'\n });\n case 'pp':\n return formatLong.time({\n width: 'medium'\n });\n case 'ppp':\n return formatLong.time({\n width: 'long'\n });\n case 'pppp':\n default:\n return formatLong.time({\n width: 'full'\n });\n }\n};\nvar dateTimeLongFormatter = function dateTimeLongFormatter(pattern, formatLong) {\n var matchResult = pattern.match(/(P+)(p+)?/) || [];\n var datePattern = matchResult[1];\n var timePattern = matchResult[2];\n if (!timePattern) {\n return dateLongFormatter(pattern, formatLong);\n }\n var dateTimeFormat;\n switch (datePattern) {\n case 'P':\n dateTimeFormat = formatLong.dateTime({\n width: 'short'\n });\n break;\n case 'PP':\n dateTimeFormat = formatLong.dateTime({\n width: 'medium'\n });\n break;\n case 'PPP':\n dateTimeFormat = formatLong.dateTime({\n width: 'long'\n });\n break;\n case 'PPPP':\n default:\n dateTimeFormat = formatLong.dateTime({\n width: 'full'\n });\n break;\n }\n return dateTimeFormat.replace('{{date}}', dateLongFormatter(datePattern, formatLong)).replace('{{time}}', timeLongFormatter(timePattern, formatLong));\n};\nvar longFormatters = {\n p: timeLongFormatter,\n P: dateTimeLongFormatter\n};\nexport default longFormatters;","/**\n * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds.\n * They usually appear for dates that denote time before the timezones were introduced\n * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891\n * and GMT+01:00:00 after that date)\n *\n * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above,\n * which would lead to incorrect calculations.\n *\n * This function returns the timezone offset in milliseconds that takes seconds in account.\n */\nexport default function getTimezoneOffsetInMilliseconds(date) {\n var utcDate = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds()));\n utcDate.setUTCFullYear(date.getFullYear());\n return date.getTime() - utcDate.getTime();\n}","var protectedDayOfYearTokens = ['D', 'DD'];\nvar protectedWeekYearTokens = ['YY', 'YYYY'];\nexport function isProtectedDayOfYearToken(token) {\n return protectedDayOfYearTokens.indexOf(token) !== -1;\n}\nexport function isProtectedWeekYearToken(token) {\n return protectedWeekYearTokens.indexOf(token) !== -1;\n}\nexport function throwProtectedError(token, format, input) {\n if (token === 'YYYY') {\n throw new RangeError(\"Use `yyyy` instead of `YYYY` (in `\".concat(format, \"`) for formatting years to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n } else if (token === 'YY') {\n throw new RangeError(\"Use `yy` instead of `YY` (in `\".concat(format, \"`) for formatting years to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n } else if (token === 'D') {\n throw new RangeError(\"Use `d` instead of `D` (in `\".concat(format, \"`) for formatting days of the month to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n } else if (token === 'DD') {\n throw new RangeError(\"Use `dd` instead of `DD` (in `\".concat(format, \"`) for formatting days of the month to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n }\n}","var formatDistanceLocale = {\n lessThanXSeconds: {\n one: 'less than a second',\n other: 'less than {{count}} seconds'\n },\n xSeconds: {\n one: '1 second',\n other: '{{count}} seconds'\n },\n halfAMinute: 'half a minute',\n lessThanXMinutes: {\n one: 'less than a minute',\n other: 'less than {{count}} minutes'\n },\n xMinutes: {\n one: '1 minute',\n other: '{{count}} minutes'\n },\n aboutXHours: {\n one: 'about 1 hour',\n other: 'about {{count}} hours'\n },\n xHours: {\n one: '1 hour',\n other: '{{count}} hours'\n },\n xDays: {\n one: '1 day',\n other: '{{count}} days'\n },\n aboutXWeeks: {\n one: 'about 1 week',\n other: 'about {{count}} weeks'\n },\n xWeeks: {\n one: '1 week',\n other: '{{count}} weeks'\n },\n aboutXMonths: {\n one: 'about 1 month',\n other: 'about {{count}} months'\n },\n xMonths: {\n one: '1 month',\n other: '{{count}} months'\n },\n aboutXYears: {\n one: 'about 1 year',\n other: 'about {{count}} years'\n },\n xYears: {\n one: '1 year',\n other: '{{count}} years'\n },\n overXYears: {\n one: 'over 1 year',\n other: 'over {{count}} years'\n },\n almostXYears: {\n one: 'almost 1 year',\n other: 'almost {{count}} years'\n }\n};\nvar formatDistance = function formatDistance(token, count, options) {\n var result;\n var tokenValue = formatDistanceLocale[token];\n if (typeof tokenValue === 'string') {\n result = tokenValue;\n } else if (count === 1) {\n result = tokenValue.one;\n } else {\n result = tokenValue.other.replace('{{count}}', count.toString());\n }\n if (options !== null && options !== void 0 && options.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return 'in ' + result;\n } else {\n return result + ' ago';\n }\n }\n return result;\n};\nexport default formatDistance;","export default function buildFormatLongFn(args) {\n return function () {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n // TODO: Remove String()\n var width = options.width ? String(options.width) : args.defaultWidth;\n var format = args.formats[width] || args.formats[args.defaultWidth];\n return format;\n };\n}","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\nvar dateFormats = {\n full: 'EEEE, MMMM do, y',\n long: 'MMMM do, y',\n medium: 'MMM d, y',\n short: 'MM/dd/yyyy'\n};\nvar timeFormats = {\n full: 'h:mm:ss a zzzz',\n long: 'h:mm:ss a z',\n medium: 'h:mm:ss a',\n short: 'h:mm a'\n};\nvar dateTimeFormats = {\n full: \"{{date}} 'at' {{time}}\",\n long: \"{{date}} 'at' {{time}}\",\n medium: '{{date}}, {{time}}',\n short: '{{date}}, {{time}}'\n};\nvar formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: 'full'\n }),\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: 'full'\n }),\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: 'full'\n })\n};\nexport default formatLong;","var formatRelativeLocale = {\n lastWeek: \"'last' eeee 'at' p\",\n yesterday: \"'yesterday at' p\",\n today: \"'today at' p\",\n tomorrow: \"'tomorrow at' p\",\n nextWeek: \"eeee 'at' p\",\n other: 'P'\n};\nvar formatRelative = function formatRelative(token, _date, _baseDate, _options) {\n return formatRelativeLocale[token];\n};\nexport default formatRelative;","export default function buildLocalizeFn(args) {\n return function (dirtyIndex, options) {\n var context = options !== null && options !== void 0 && options.context ? String(options.context) : 'standalone';\n var valuesArray;\n if (context === 'formatting' && args.formattingValues) {\n var defaultWidth = args.defaultFormattingWidth || args.defaultWidth;\n var width = options !== null && options !== void 0 && options.width ? String(options.width) : defaultWidth;\n valuesArray = args.formattingValues[width] || args.formattingValues[defaultWidth];\n } else {\n var _defaultWidth = args.defaultWidth;\n var _width = options !== null && options !== void 0 && options.width ? String(options.width) : args.defaultWidth;\n valuesArray = args.values[_width] || args.values[_defaultWidth];\n }\n var index = args.argumentCallback ? args.argumentCallback(dirtyIndex) : dirtyIndex;\n // @ts-ignore: For some reason TypeScript just don't want to match it, no matter how hard we try. I challenge you to try to remove it!\n return valuesArray[index];\n };\n}","import buildLocalizeFn from \"../../../_lib/buildLocalizeFn/index.js\";\nvar eraValues = {\n narrow: ['B', 'A'],\n abbreviated: ['BC', 'AD'],\n wide: ['Before Christ', 'Anno Domini']\n};\nvar quarterValues = {\n narrow: ['1', '2', '3', '4'],\n abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'],\n wide: ['1st quarter', '2nd quarter', '3rd quarter', '4th quarter']\n};\n\n// Note: in English, the names of days of the week and months are capitalized.\n// If you are making a new locale based on this one, check if the same is true for the language you're working on.\n// Generally, formatted dates should look like they are in the middle of a sentence,\n// e.g. in Spanish language the weekdays and months should be in the lowercase.\nvar monthValues = {\n narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],\n abbreviated: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n wide: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']\n};\nvar dayValues = {\n narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],\n short: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n abbreviated: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n wide: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']\n};\nvar dayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n }\n};\nvar formattingDayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n }\n};\nvar ordinalNumber = function ordinalNumber(dirtyNumber, _options) {\n var number = Number(dirtyNumber);\n\n // If ordinal numbers depend on context, for example,\n // if they are different for different grammatical genders,\n // use `options.unit`.\n //\n // `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',\n // 'day', 'hour', 'minute', 'second'.\n\n var rem100 = number % 100;\n if (rem100 > 20 || rem100 < 10) {\n switch (rem100 % 10) {\n case 1:\n return number + 'st';\n case 2:\n return number + 'nd';\n case 3:\n return number + 'rd';\n }\n }\n return number + 'th';\n};\nvar localize = {\n ordinalNumber: ordinalNumber,\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: 'wide'\n }),\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: 'wide',\n argumentCallback: function argumentCallback(quarter) {\n return quarter - 1;\n }\n }),\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: 'wide'\n }),\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: 'wide'\n }),\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: 'wide',\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: 'wide'\n })\n};\nexport default localize;","export default function buildMatchFn(args) {\n return function (string) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var width = options.width;\n var matchPattern = width && args.matchPatterns[width] || args.matchPatterns[args.defaultMatchWidth];\n var matchResult = string.match(matchPattern);\n if (!matchResult) {\n return null;\n }\n var matchedString = matchResult[0];\n var parsePatterns = width && args.parsePatterns[width] || args.parsePatterns[args.defaultParseWidth];\n var key = Array.isArray(parsePatterns) ? findIndex(parsePatterns, function (pattern) {\n return pattern.test(matchedString);\n }) : findKey(parsePatterns, function (pattern) {\n return pattern.test(matchedString);\n });\n var value;\n value = args.valueCallback ? args.valueCallback(key) : key;\n value = options.valueCallback ? options.valueCallback(value) : value;\n var rest = string.slice(matchedString.length);\n return {\n value: value,\n rest: rest\n };\n };\n}\nfunction findKey(object, predicate) {\n for (var key in object) {\n if (object.hasOwnProperty(key) && predicate(object[key])) {\n return key;\n }\n }\n return undefined;\n}\nfunction findIndex(array, predicate) {\n for (var key = 0; key < array.length; key++) {\n if (predicate(array[key])) {\n return key;\n }\n }\n return undefined;\n}","export default function buildMatchPatternFn(args) {\n return function (string) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var matchResult = string.match(args.matchPattern);\n if (!matchResult) return null;\n var matchedString = matchResult[0];\n var parseResult = string.match(args.parsePattern);\n if (!parseResult) return null;\n var value = args.valueCallback ? args.valueCallback(parseResult[0]) : parseResult[0];\n value = options.valueCallback ? options.valueCallback(value) : value;\n var rest = string.slice(matchedString.length);\n return {\n value: value,\n rest: rest\n };\n };\n}","import buildMatchFn from \"../../../_lib/buildMatchFn/index.js\";\nimport buildMatchPatternFn from \"../../../_lib/buildMatchPatternFn/index.js\";\nvar matchOrdinalNumberPattern = /^(\\d+)(th|st|nd|rd)?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n narrow: /^(b|a)/i,\n abbreviated: /^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)/i,\n wide: /^(before christ|before common era|anno domini|common era)/i\n};\nvar parseEraPatterns = {\n any: [/^b/i, /^(a|c)/i]\n};\nvar matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^q[1234]/i,\n wide: /^[1234](th|st|nd|rd)? quarter/i\n};\nvar parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i]\n};\nvar matchMonthPatterns = {\n narrow: /^[jfmasond]/i,\n abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,\n wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i\n};\nvar parseMonthPatterns = {\n narrow: [/^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],\n any: [/^ja/i, /^f/i, /^mar/i, /^ap/i, /^may/i, /^jun/i, /^jul/i, /^au/i, /^s/i, /^o/i, /^n/i, /^d/i]\n};\nvar matchDayPatterns = {\n narrow: /^[smtwf]/i,\n short: /^(su|mo|tu|we|th|fr|sa)/i,\n abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,\n wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i\n};\nvar parseDayPatterns = {\n narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],\n any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i]\n};\nvar matchDayPeriodPatterns = {\n narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,\n any: /^([ap]\\.?\\s?m\\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i\n};\nvar parseDayPeriodPatterns = {\n any: {\n am: /^a/i,\n pm: /^p/i,\n midnight: /^mi/i,\n noon: /^no/i,\n morning: /morning/i,\n afternoon: /afternoon/i,\n evening: /evening/i,\n night: /night/i\n }\n};\nvar match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: function valueCallback(value) {\n return parseInt(value, 10);\n }\n }),\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseEraPatterns,\n defaultParseWidth: 'any'\n }),\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: 'any',\n valueCallback: function valueCallback(index) {\n return index + 1;\n }\n }),\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: 'any'\n }),\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseDayPatterns,\n defaultParseWidth: 'any'\n }),\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: 'any',\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: 'any'\n })\n};\nexport default match;","import formatDistance from \"./_lib/formatDistance/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\nimport formatRelative from \"./_lib/formatRelative/index.js\";\nimport localize from \"./_lib/localize/index.js\";\nimport match from \"./_lib/match/index.js\";\n/**\n * @type {Locale}\n * @category Locales\n * @summary English locale (United States).\n * @language English\n * @iso-639-2 eng\n * @author Sasha Koss [@kossnocorp]{@link https://github.com/kossnocorp}\n * @author Lesha Koss [@leshakoss]{@link https://github.com/leshakoss}\n */\nvar locale = {\n code: 'en-US',\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 0 /* Sunday */,\n firstWeekContainsDate: 1\n }\n};\nexport default locale;","import defaultLocale from \"../../locale/en-US/index.js\";\nexport default defaultLocale;","import isValid from \"../isValid/index.js\";\nimport subMilliseconds from \"../subMilliseconds/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport formatters from \"../_lib/format/formatters/index.js\";\nimport longFormatters from \"../_lib/format/longFormatters/index.js\";\nimport getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport { isProtectedDayOfYearToken, isProtectedWeekYearToken, throwProtectedError } from \"../_lib/protectedTokens/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getDefaultOptions } from \"../_lib/defaultOptions/index.js\";\nimport defaultLocale from \"../_lib/defaultLocale/index.js\"; // This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\nvar formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g;\n\n// This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\nvar longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\nvar escapedStringRegExp = /^'([^]*?)'?$/;\nvar doubleQuoteRegExp = /''/g;\nvar unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n\n/**\n * @name format\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format. The result may vary by locale.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * The characters wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n * (see the last example)\n *\n * Format of the string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 7 below the table).\n *\n * Accepted patterns:\n * | Unit | Pattern | Result examples | Notes |\n * |---------------------------------|---------|-----------------------------------|-------|\n * | Era | G..GGG | AD, BC | |\n * | | GGGG | Anno Domini, Before Christ | 2 |\n * | | GGGGG | A, B | |\n * | Calendar year | y | 44, 1, 1900, 2017 | 5 |\n * | | yo | 44th, 1st, 0th, 17th | 5,7 |\n * | | yy | 44, 01, 00, 17 | 5 |\n * | | yyy | 044, 001, 1900, 2017 | 5 |\n * | | yyyy | 0044, 0001, 1900, 2017 | 5 |\n * | | yyyyy | ... | 3,5 |\n * | Local week-numbering year | Y | 44, 1, 1900, 2017 | 5 |\n * | | Yo | 44th, 1st, 1900th, 2017th | 5,7 |\n * | | YY | 44, 01, 00, 17 | 5,8 |\n * | | YYY | 044, 001, 1900, 2017 | 5 |\n * | | YYYY | 0044, 0001, 1900, 2017 | 5,8 |\n * | | YYYYY | ... | 3,5 |\n * | ISO week-numbering year | R | -43, 0, 1, 1900, 2017 | 5,7 |\n * | | RR | -43, 00, 01, 1900, 2017 | 5,7 |\n * | | RRR | -043, 000, 001, 1900, 2017 | 5,7 |\n * | | RRRR | -0043, 0000, 0001, 1900, 2017 | 5,7 |\n * | | RRRRR | ... | 3,5,7 |\n * | Extended year | u | -43, 0, 1, 1900, 2017 | 5 |\n * | | uu | -43, 01, 1900, 2017 | 5 |\n * | | uuu | -043, 001, 1900, 2017 | 5 |\n * | | uuuu | -0043, 0001, 1900, 2017 | 5 |\n * | | uuuuu | ... | 3,5 |\n * | Quarter (formatting) | Q | 1, 2, 3, 4 | |\n * | | Qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | QQ | 01, 02, 03, 04 | |\n * | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | q | 1, 2, 3, 4 | |\n * | | qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | qq | 01, 02, 03, 04 | |\n * | | qqq | Q1, Q2, Q3, Q4 | |\n * | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | qqqqq | 1, 2, 3, 4 | 4 |\n * | Month (formatting) | M | 1, 2, ..., 12 | |\n * | | Mo | 1st, 2nd, ..., 12th | 7 |\n * | | MM | 01, 02, ..., 12 | |\n * | | MMM | Jan, Feb, ..., Dec | |\n * | | MMMM | January, February, ..., December | 2 |\n * | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | L | 1, 2, ..., 12 | |\n * | | Lo | 1st, 2nd, ..., 12th | 7 |\n * | | LL | 01, 02, ..., 12 | |\n * | | LLL | Jan, Feb, ..., Dec | |\n * | | LLLL | January, February, ..., December | 2 |\n * | | LLLLL | J, F, ..., D | |\n * | Local week of year | w | 1, 2, ..., 53 | |\n * | | wo | 1st, 2nd, ..., 53th | 7 |\n * | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | I | 1, 2, ..., 53 | 7 |\n * | | Io | 1st, 2nd, ..., 53th | 7 |\n * | | II | 01, 02, ..., 53 | 7 |\n * | Day of month | d | 1, 2, ..., 31 | |\n * | | do | 1st, 2nd, ..., 31st | 7 |\n * | | dd | 01, 02, ..., 31 | |\n * | Day of year | D | 1, 2, ..., 365, 366 | 9 |\n * | | Do | 1st, 2nd, ..., 365th, 366th | 7 |\n * | | DD | 01, 02, ..., 365, 366 | 9 |\n * | | DDD | 001, 002, ..., 365, 366 | |\n * | | DDDD | ... | 3 |\n * | Day of week (formatting) | E..EEE | Mon, Tue, Wed, ..., Sun | |\n * | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | EEEEE | M, T, W, T, F, S, S | |\n * | | EEEEEE | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | ISO day of week (formatting) | i | 1, 2, 3, ..., 7 | 7 |\n * | | io | 1st, 2nd, ..., 7th | 7 |\n * | | ii | 01, 02, ..., 07 | 7 |\n * | | iii | Mon, Tue, Wed, ..., Sun | 7 |\n * | | iiii | Monday, Tuesday, ..., Sunday | 2,7 |\n * | | iiiii | M, T, W, T, F, S, S | 7 |\n * | | iiiiii | Mo, Tu, We, Th, Fr, Sa, Su | 7 |\n * | Local day of week (formatting) | e | 2, 3, 4, ..., 1 | |\n * | | eo | 2nd, 3rd, ..., 1st | 7 |\n * | | ee | 02, 03, ..., 01 | |\n * | | eee | Mon, Tue, Wed, ..., Sun | |\n * | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | eeeee | M, T, W, T, F, S, S | |\n * | | eeeeee | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | Local day of week (stand-alone) | c | 2, 3, 4, ..., 1 | |\n * | | co | 2nd, 3rd, ..., 1st | 7 |\n * | | cc | 02, 03, ..., 01 | |\n * | | ccc | Mon, Tue, Wed, ..., Sun | |\n * | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | ccccc | M, T, W, T, F, S, S | |\n * | | cccccc | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | AM, PM | a..aa | AM, PM | |\n * | | aaa | am, pm | |\n * | | aaaa | a.m., p.m. | 2 |\n * | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | b..bb | AM, PM, noon, midnight | |\n * | | bbb | am, pm, noon, midnight | |\n * | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | bbbbb | a, p, n, mi | |\n * | Flexible day period | B..BBB | at night, in the morning, ... | |\n * | | BBBB | at night, in the morning, ... | 2 |\n * | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | h | 1, 2, ..., 11, 12 | |\n * | | ho | 1st, 2nd, ..., 11th, 12th | 7 |\n * | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | H | 0, 1, 2, ..., 23 | |\n * | | Ho | 0th, 1st, 2nd, ..., 23rd | 7 |\n * | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | K | 1, 2, ..., 11, 0 | |\n * | | Ko | 1st, 2nd, ..., 11th, 0th | 7 |\n * | | KK | 01, 02, ..., 11, 00 | |\n * | Hour [1-24] | k | 24, 1, 2, ..., 23 | |\n * | | ko | 24th, 1st, 2nd, ..., 23rd | 7 |\n * | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | m | 0, 1, ..., 59 | |\n * | | mo | 0th, 1st, ..., 59th | 7 |\n * | | mm | 00, 01, ..., 59 | |\n * | Second | s | 0, 1, ..., 59 | |\n * | | so | 0th, 1st, ..., 59th | 7 |\n * | | ss | 00, 01, ..., 59 | |\n * | Fraction of second | S | 0, 1, ..., 9 | |\n * | | SS | 00, 01, ..., 99 | |\n * | | SSS | 000, 001, ..., 999 | |\n * | | SSSS | ... | 3 |\n * | Timezone (ISO-8601 w/ Z) | X | -08, +0530, Z | |\n * | | XX | -0800, +0530, Z | |\n * | | XXX | -08:00, +05:30, Z | |\n * | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | x | -08, +0530, +00 | |\n * | | xx | -0800, +0530, +0000 | |\n * | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Timezone (GMT) | O...OOO | GMT-8, GMT+5:30, GMT+0 | |\n * | | OOOO | GMT-08:00, GMT+05:30, GMT+00:00 | 2 |\n * | Timezone (specific non-locat.) | z...zzz | GMT-8, GMT+5:30, GMT+0 | 6 |\n * | | zzzz | GMT-08:00, GMT+05:30, GMT+00:00 | 2,6 |\n * | Seconds timestamp | t | 512969520 | 7 |\n * | | tt | ... | 3,7 |\n * | Milliseconds timestamp | T | 512969520900 | 7 |\n * | | TT | ... | 3,7 |\n * | Long localized date | P | 04/29/1453 | 7 |\n * | | PP | Apr 29, 1453 | 7 |\n * | | PPP | April 29th, 1453 | 7 |\n * | | PPPP | Friday, April 29th, 1453 | 2,7 |\n * | Long localized time | p | 12:00 AM | 7 |\n * | | pp | 12:00:00 AM | 7 |\n * | | ppp | 12:00:00 AM GMT+2 | 7 |\n * | | pppp | 12:00:00 AM GMT+02:00 | 2,7 |\n * | Combination of date and time | Pp | 04/29/1453, 12:00 AM | 7 |\n * | | PPpp | Apr 29, 1453, 12:00:00 AM | 7 |\n * | | PPPppp | April 29th, 1453 at ... | 7 |\n * | | PPPPpppp| Friday, April 29th, 1453 at ... | 2,7 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table (e.g. `EEEEEEEEEEE`)\n * the output will be the same as default pattern for this unit, usually\n * the longest one (in case of ISO weekdays, `EEEE`). Default patterns for units\n * are marked with \"2\" in the last column of the table.\n *\n * `format(new Date(2017, 10, 6), 'MMM') //=> 'Nov'`\n *\n * `format(new Date(2017, 10, 6), 'MMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMM') //=> 'N'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMMM') //=> 'November'`\n *\n * 3. Some patterns could be unlimited length (such as `yyyyyyyy`).\n * The output will be padded with zeros to match the length of the pattern.\n *\n * `format(new Date(2017, 10, 6), 'yyyyyyyy') //=> '00002017'`\n *\n * 4. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 5. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` always returns the last two digits of a year,\n * while `uu` pads single digit years to 2 characters and returns other years unchanged:\n *\n * | Year | `yy` | `uu` |\n * |------|------|------|\n * | 1 | 01 | 01 |\n * | 14 | 14 | 14 |\n * | 376 | 76 | 376 |\n * | 1453 | 53 | 1453 |\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [getISOWeekYear]{@link https://date-fns.org/docs/getISOWeekYear}\n * and [getWeekYear]{@link https://date-fns.org/docs/getWeekYear}).\n *\n * 6. Specific non-location timezones are currently unavailable in `date-fns`,\n * so right now these tokens fall back to GMT timezones.\n *\n * 7. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `t`: seconds timestamp\n * - `T`: milliseconds timestamp\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 8. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n * You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 9. `D` and `DD` tokens represent days of the year but they are often confused with days of the month.\n * You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * @param {Date|Number} date - the original date\n * @param {String} format - the string of tokens\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {Number} [options.firstWeekContainsDate=1] - the day of January, which is\n * @param {Boolean} [options.useAdditionalWeekYearTokens=false] - if true, allows usage of the week-numbering year tokens `YY` and `YYYY`;\n * see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @param {Boolean} [options.useAdditionalDayOfYearTokens=false] - if true, allows usage of the day of year tokens `D` and `DD`;\n * see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @returns {String} the formatted date string\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `options.locale` must contain `localize` property\n * @throws {RangeError} `options.locale` must contain `formatLong` property\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} format string contains an unescaped latin alphabet character\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * const result = format(new Date(2014, 1, 11), 'MM/dd/yyyy')\n * //=> '02/11/2014'\n *\n * @example\n * // Represent 2 July 2014 in Esperanto:\n * import { eoLocale } from 'date-fns/locale/eo'\n * const result = format(new Date(2014, 6, 2), \"do 'de' MMMM yyyy\", {\n * locale: eoLocale\n * })\n * //=> '2-a de julio 2014'\n *\n * @example\n * // Escape string by single quote characters:\n * const result = format(new Date(2014, 6, 2, 15), \"h 'o''clock'\")\n * //=> \"3 o'clock\"\n */\n\nexport default function format(dirtyDate, dirtyFormatStr, options) {\n var _ref, _options$locale, _ref2, _ref3, _ref4, _options$firstWeekCon, _options$locale2, _options$locale2$opti, _defaultOptions$local, _defaultOptions$local2, _ref5, _ref6, _ref7, _options$weekStartsOn, _options$locale3, _options$locale3$opti, _defaultOptions$local3, _defaultOptions$local4;\n requiredArgs(2, arguments);\n var formatStr = String(dirtyFormatStr);\n var defaultOptions = getDefaultOptions();\n var locale = (_ref = (_options$locale = options === null || options === void 0 ? void 0 : options.locale) !== null && _options$locale !== void 0 ? _options$locale : defaultOptions.locale) !== null && _ref !== void 0 ? _ref : defaultLocale;\n var firstWeekContainsDate = toInteger((_ref2 = (_ref3 = (_ref4 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale2 = options.locale) === null || _options$locale2 === void 0 ? void 0 : (_options$locale2$opti = _options$locale2.options) === null || _options$locale2$opti === void 0 ? void 0 : _options$locale2$opti.firstWeekContainsDate) !== null && _ref4 !== void 0 ? _ref4 : defaultOptions.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : 1);\n\n // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n var weekStartsOn = toInteger((_ref5 = (_ref6 = (_ref7 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale3 = options.locale) === null || _options$locale3 === void 0 ? void 0 : (_options$locale3$opti = _options$locale3.options) === null || _options$locale3$opti === void 0 ? void 0 : _options$locale3$opti.weekStartsOn) !== null && _ref7 !== void 0 ? _ref7 : defaultOptions.weekStartsOn) !== null && _ref6 !== void 0 ? _ref6 : (_defaultOptions$local3 = defaultOptions.locale) === null || _defaultOptions$local3 === void 0 ? void 0 : (_defaultOptions$local4 = _defaultOptions$local3.options) === null || _defaultOptions$local4 === void 0 ? void 0 : _defaultOptions$local4.weekStartsOn) !== null && _ref5 !== void 0 ? _ref5 : 0);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n if (!locale.localize) {\n throw new RangeError('locale must contain localize property');\n }\n if (!locale.formatLong) {\n throw new RangeError('locale must contain formatLong property');\n }\n var originalDate = toDate(dirtyDate);\n if (!isValid(originalDate)) {\n throw new RangeError('Invalid time value');\n }\n\n // Convert the date in system timezone to the same date in UTC+00:00 timezone.\n // This ensures that when UTC functions will be implemented, locales will be compatible with them.\n // See an issue about UTC functions: https://github.com/date-fns/date-fns/issues/376\n var timezoneOffset = getTimezoneOffsetInMilliseconds(originalDate);\n var utcDate = subMilliseconds(originalDate, timezoneOffset);\n var formatterOptions = {\n firstWeekContainsDate: firstWeekContainsDate,\n weekStartsOn: weekStartsOn,\n locale: locale,\n _originalDate: originalDate\n };\n var result = formatStr.match(longFormattingTokensRegExp).map(function (substring) {\n var firstCharacter = substring[0];\n if (firstCharacter === 'p' || firstCharacter === 'P') {\n var longFormatter = longFormatters[firstCharacter];\n return longFormatter(substring, locale.formatLong);\n }\n return substring;\n }).join('').match(formattingTokensRegExp).map(function (substring) {\n // Replace two single quote characters with one single quote character\n if (substring === \"''\") {\n return \"'\";\n }\n var firstCharacter = substring[0];\n if (firstCharacter === \"'\") {\n return cleanEscapedString(substring);\n }\n var formatter = formatters[firstCharacter];\n if (formatter) {\n if (!(options !== null && options !== void 0 && options.useAdditionalWeekYearTokens) && isProtectedWeekYearToken(substring)) {\n throwProtectedError(substring, dirtyFormatStr, String(dirtyDate));\n }\n if (!(options !== null && options !== void 0 && options.useAdditionalDayOfYearTokens) && isProtectedDayOfYearToken(substring)) {\n throwProtectedError(substring, dirtyFormatStr, String(dirtyDate));\n }\n return formatter(utcDate, substring, locale.localize, formatterOptions);\n }\n if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n throw new RangeError('Format string contains an unescaped latin alphabet character `' + firstCharacter + '`');\n }\n return substring;\n }).join('');\n return result;\n}\nfunction cleanEscapedString(input) {\n var matched = input.match(escapedStringRegExp);\n if (!matched) {\n return input;\n }\n return matched[1].replace(doubleQuoteRegExp, \"'\");\n}","import React, { Component, createRef } from 'react';\nimport isEqual from 'react-fast-compare';\nimport PropTypes from 'prop-types';\n\nimport Column from '../../../../layout/Column';\nimport Row from '../../../../layout/Row';\nimport Button from '../../../../components/Button';\n\nexport default class EditableListForm extends Component {\n static propTypes = {\n addValueOnFieldChange: PropTypes.bool,\n noLabels: PropTypes.bool,\n buttonName: PropTypes.string,\n buttonStyle: PropTypes.string,\n components: PropTypes.instanceOf(Array),\n displayType: PropTypes.string,\n disabled: PropTypes.bool,\n getMainFormButtonWidth: PropTypes.func,\n error: PropTypes.string,\n errorPersist: PropTypes.bool,\n onSubmit: PropTypes.func,\n validate: PropTypes.func,\n validationmessage: PropTypes.string,\n };\n\n static getMainFormValue(components) {\n const mainFormValue = new Array(components.length);\n\n components.forEach((component, index) => {\n mainFormValue[index] = component.props.value || undefined;\n });\n\n return mainFormValue;\n }\n\n constructor(props) {\n super(props);\n const {\n components,\n } = props;\n\n this.submitButtonRef = createRef();\n this.handleOnChange = this.handleOnChange.bind(this);\n this.submitForm = this.submitForm.bind(this);\n\n this.state = {\n components,\n errors: {},\n mainError: null,\n mainFormValue: EditableListForm.getMainFormValue(components),\n refs: [],\n };\n }\n\n componentDidMount() {\n const {\n addValueOnFieldChange,\n getMainFormButtonWidth,\n } = this.props;\n this.createRefs();\n\n if (getMainFormButtonWidth) {\n getMainFormButtonWidth(\n !addValueOnFieldChange\n ? this.submitButtonRef.current.clientWidth\n : 0,\n );\n }\n }\n\n static getDerivedStateFromProps(nextProps, prevState) {\n const state = {};\n const {\n components: propsComponents,\n } = nextProps;\n\n const {\n components: stateComponents,\n } = prevState;\n if (\n !isEqual(propsComponents, stateComponents)\n && !isEqual(\n EditableListForm.getMainFormValue(propsComponents),\n EditableListForm.getMainFormValue(stateComponents),\n )\n ) {\n state.mainFormValue = EditableListForm.getMainFormValue(propsComponents);\n state.components = propsComponents;\n }\n\n return state;\n }\n\n getFormCssClasses() {\n const { noLabels } = this.props;\n const cssClasses = ['tyk-editable-list__form'];\n\n if (noLabels) {\n cssClasses.push('no-labels');\n }\n\n return cssClasses.join(' ');\n }\n\n getButtonClassName() {\n const { buttonStyle, displayType } = this.props;\n const cssClasses = [];\n\n if (buttonStyle) {\n cssClasses.push(buttonStyle);\n }\n\n if (displayType) {\n cssClasses.push(displayType);\n }\n\n return cssClasses.join(' ');\n }\n\n getComponentsError(component) {\n const {\n error,\n errors,\n mainError,\n } = this.state;\n\n if (error || mainError) {\n errors[component.props.name] = 'true';\n } else if (!(error || mainError) && errors[component.props.name] === 'true') {\n delete errors[component.props.name];\n }\n\n return errors[component.props.name] ? errors[component.props.name].toString() : undefined;\n }\n\n createRefs() {\n const { components } = this.props;\n const refs = [];\n\n components.forEach(() => {\n refs.push(createRef());\n });\n\n this.setState({\n refs,\n });\n }\n\n validateValue(value, props) {\n const { mainError, errors } = this.state;\n const { error, errorPersist } = this.props;\n\n const validatorsNames = props.validate ? Object.keys(props.validate) : [];\n // if there is a general form error don't take field errors into consideration\n const tempState = {\n errors: (error || mainError) ? {} : Object.assign({}, errors),\n };\n let ok = true;\n\n // if the error should stay after changing fields values don't take actions\n if (errorPersist) {\n return tempState;\n }\n\n // validate each field from the form\n for (let i = 0; i < validatorsNames.length; i += 1) {\n const validator = props.validate[validatorsNames[i]];\n if (validator(value)) {\n tempState.errors[props.name] = props.validationmessages[validatorsNames[i]];\n ok = false;\n break;\n }\n }\n\n // if the field is ok delete its error\n if (ok) {\n delete tempState.errors[props.name];\n }\n\n tempState.mainError = null;\n\n return tempState;\n }\n\n hasMainFormErrors(errors) {\n const { components, errorPersist } = this.props;\n const { mainFormValue } = this.state;\n const tempState = {\n errors: Object.assign({}, errors),\n };\n\n if (errorPersist && mainFormValue.indexOf(undefined) === -1) {\n return false;\n }\n\n if (Object.keys(tempState.errors).length > 0) {\n return true;\n }\n\n components.forEach((component, index) => {\n tempState.errors = Object.assign(\n {},\n tempState.errors,\n this.validateValue(mainFormValue[index], component.props).errors,\n );\n });\n\n return Object.keys(tempState.errors).length > 0;\n }\n\n handleOnChange(component, index, value) {\n const { addValueOnFieldChange } = this.props;\n let tempState = this.state;\n\n tempState = Object.assign({}, tempState, this.validateValue(value, component.props));\n\n if (!tempState.errors[component.props.name]) {\n tempState.mainFormValue[index] = value;\n\n if (component.props.onChange) {\n component.props.onChange(value);\n }\n }\n\n this.setState(previousState => Object.assign({}, previousState, tempState), () => {\n if (addValueOnFieldChange) {\n this.submitForm();\n }\n });\n }\n\n resetForm() {\n const { refs } = this.state;\n const {\n components,\n } = this.props;\n\n refs.forEach((ref) => {\n if (ref.current?.reset) {\n ref.current.reset();\n }\n });\n\n this.setState({\n errors: {},\n mainError: null,\n mainFormValue: EditableListForm.getMainFormValue(components),\n });\n }\n\n showMainError(error) {\n this.setState({\n mainError: error,\n });\n }\n\n submitForm() {\n const { errors, mainFormValue } = this.state;\n const {\n errorPersist, onSubmit, validate, validationmessage,\n } = this.props;\n\n if (errorPersist) {\n onSubmit(mainFormValue);\n this.resetForm();\n }\n\n if (\n Object.keys(errors).length === 0\n && (onSubmit && typeof onSubmit === 'function')\n ) {\n if (validate) {\n if (validate(mainFormValue)) {\n this.showMainError(validationmessage);\n } else {\n onSubmit(mainFormValue);\n this.resetForm();\n }\n } else {\n onSubmit(mainFormValue);\n this.resetForm();\n }\n }\n }\n\n render() {\n const {\n addValueOnFieldChange, components, buttonName, disabled, displayType, error,\n } = this.props;\n const {\n mainError, refs, errors,\n } = this.state;\n\n return (\n
    \n
    \n \n {\n components.map((component, index) => {\n const ComponentName = component.name;\n const {\n onChange, value, ...rest\n } = component.props;\n\n return (\n \n \n \n );\n })\n }\n \n {\n !addValueOnFieldChange\n ? (\n \n \n { buttonName || 'ADD' }\n \n \n )\n : null\n }\n
    \n {\n error || mainError\n ? (\n
    \n

    \n { error || mainError }\n

    \n
    \n )\n : null\n }\n
    \n );\n }\n}\n","import React, { Component, Fragment, createRef } from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport { fromJS } from 'immutable';\n\nimport format from 'date-fns/format';\nimport isDate from 'date-fns/isDate';\n\nimport EditableListForm from './js/EditableListForm';\nimport Column from '../../../layout/Column';\nimport Icon from '../../../components/Icon';\nimport Row from '../../../layout/Row';\n\nexport default class EditableList extends Component {\n static propTypes = {\n addValueOnFieldChange: PropTypes.bool,\n disabled: PropTypes.bool,\n error: PropTypes.string,\n config: PropTypes.instanceOf(Object),\n onChange: PropTypes.func,\n label: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.func,\n PropTypes.string,\n ]),\n value: PropTypes.oneOfType([\n PropTypes.instanceOf(Array),\n PropTypes.instanceOf(Object),\n ]),\n };\n\n static getItemListValue(itemValue) {\n let tempValue = null;\n\n if (typeof itemValue === 'string') {\n tempValue = itemValue;\n }\n\n if (Object.prototype.toString.call(itemValue) === '[object Object]') {\n tempValue = itemValue.name;\n }\n\n if (isDate(itemValue)) {\n tempValue = format(itemValue, 'dd/MM/yyyy');\n }\n\n return tempValue;\n }\n\n static getListItemCssClass(displayType) {\n const cssClasses = [];\n\n if (displayType === 'inline') {\n cssClasses.push('tyk-editable-list-item--inline');\n }\n\n return cssClasses.join(' ');\n }\n\n constructor(props) {\n super(props);\n const {\n value,\n } = this.props;\n\n this.state = {\n initialValue: value || '',\n value: value || [],\n buttonWidth: 0,\n };\n\n this.startIndex = 1;\n\n this.handleFormSubmit = this.handleFormSubmit.bind(this);\n this.getMainFormButtonWidth = this.getMainFormButtonWidth.bind(this);\n this.dropdownListItemRef = createRef();\n }\n\n static getDerivedStateFromProps(nextProps, prevState) {\n const state = {};\n\n if (\n nextProps.value && JSON.stringify(nextProps.value)\n !== JSON.stringify(prevState.initialValue)\n ) {\n state.value = nextProps.value || [];\n state.initialValue = nextProps.value || '';\n }\n\n return state.value ? state : null;\n }\n\n getListItemsCssClass(displayType) {\n const { config } = this.props;\n const cssClasses = ['tyk-editable-list-items'];\n\n cssClasses.push(config.displayType || 'table');\n\n if (displayType === 'inline') {\n cssClasses.push('tyk-editable-list-items--inline');\n }\n\n return cssClasses.join(' ');\n }\n\n getFormInputKey() {\n this.startIndex += 1;\n return this.startIndex;\n }\n\n // generate list item value's based on the display types\n // table, inline, list\n getListItemText(itemData) {\n const { config } = this.props;\n let value = null;\n\n switch (config.displayType) {\n case 'list':\n case 'inline': {\n const itemText = itemData.value.reduce((prevValue, itemValue, index) => {\n const tempValue = EditableList.getItemListValue(itemValue);\n let separator = ', ';\n\n if (index === itemData.value.length - 1) {\n separator = '';\n }\n\n return prevValue + tempValue + separator;\n }, '');\n\n value = itemText;\n\n break;\n }\n default:\n value = (\n \n {\n config.components.map((component, index) => (\n \n { EditableList.getItemListValue(itemData.value[index]) }\n \n ))\n }\n \n );\n\n break;\n }\n\n return value;\n }\n\n getMainFormButtonWidth(value) {\n this.setState({\n buttonWidth: value,\n });\n }\n\n setItemEditMode(index) {\n const newValues = this.closeListItems();\n\n this.setState((previousState) => {\n const tempState = Object.assign({}, previousState);\n tempState.value = newValues;\n tempState.value[index].editMode = !tempState.value[index].editMode;\n\n return tempState;\n });\n }\n\n isInList(index, itemValue) {\n const { value } = this.state;\n let ok = false;\n\n value.forEach((item, itemIndex) => {\n if (JSON.stringify(item.value) === JSON.stringify(itemValue)) {\n if (index >= 0 && itemIndex === index) {\n ok = false;\n } else {\n ok = true;\n }\n }\n });\n\n return ok;\n }\n\n addValues(newValue) {\n const { value } = this.state;\n const { config } = this.props;\n const itemValue = {\n editMode: false,\n value: newValue,\n };\n const tempState = {\n value: value.slice(0),\n };\n\n if (config.children) {\n itemValue.children = [];\n }\n\n tempState.value.push(itemValue);\n\n return tempState;\n }\n\n removeListItem(index) {\n let removedItem;\n this.setState((previousState) => {\n const valueArr = previousState.value.slice(0);\n removedItem = valueArr.splice(index, 1);\n\n return {\n value: valueArr,\n };\n }, () => {\n this.triggerOnChange(index, removedItem, null);\n });\n }\n\n handleFormSubmit(value) {\n const tempState = this.addValues(value);\n this.setState(previousState => Object.assign({}, previousState, tempState), () => {\n this.triggerOnChange(tempState.value.length - 1, null, value);\n });\n }\n\n handleItemUpdate(index, value) {\n let prevValue;\n this.setState((previousState) => {\n const tempState = Object.assign({}, previousState);\n prevValue = fromJS(tempState.value[index].value).toJS();\n tempState.value[index].value = value;\n tempState.value[index].editMode = false;\n\n return tempState;\n }, () => {\n this.triggerOnChange(index, prevValue, value);\n });\n }\n\n handleChildrenOnChange(index, value) {\n let prevValue;\n this.setState((previousState) => {\n const tempState = Object.assign({}, previousState);\n prevValue = fromJS(tempState.value[index].children).toJS();\n tempState.value[index].children = value;\n\n return tempState;\n }, () => {\n this.triggerOnChange(index, prevValue, value);\n });\n }\n\n closeListItems() {\n const { value } = this.state;\n\n const newValues = value.map((itemValue) => {\n const tempItemValue = Object.assign({}, itemValue);\n\n if (tempItemValue.editMode) {\n tempItemValue.editMode = false;\n return tempItemValue;\n }\n\n return tempItemValue;\n });\n\n return newValues;\n }\n\n triggerOnChange(index, prevValue, nextValue) {\n const { onChange } = this.props;\n const { value } = this.state;\n\n if (onChange && typeof onChange === 'function') {\n onChange(((value.length) ? value : null), index, prevValue, nextValue);\n }\n }\n\n genListItem(itemData, index) {\n const { config, disabled } = this.props;\n const { buttonWidth, value } = this.state;\n\n const clonedComponents = fromJS(config.components).toJS();\n\n itemData.value.forEach((itemValue, itemIndex) => {\n clonedComponents[itemIndex].props.value = itemValue;\n });\n\n return (\n \n \n {\n !itemData.editMode\n ? (\n \n { this.getListItemText(itemData, index) }\n \n \n \n \n \n )\n : (\n \n \n \n \n )\n }\n \n {\n config.children\n ? (\n \n )\n : null\n }\n \n );\n }\n\n genList() {\n const { config } = this.props;\n const { buttonWidth, value } = this.state;\n\n if (!value || value.length === 0) {\n return null;\n }\n\n return (\n \n {\n config.displayType === 'table' || !config.displayType\n ? (\n \n \n {\n config.components.map((component, index) => (\n \n { component.props.label }\n \n ))\n }\n \n \n )\n : null\n }\n
      \n {\n value.map((itemData, index) => this.genListItem(itemData, index))\n }\n
    \n
    \n );\n }\n\n render() {\n const {\n addValueOnFieldChange, config, error, disabled, label,\n } = this.props;\n const appendToElement = document.querySelector(config.appendTo) || document.querySelector('body');\n\n return (\n
    \n {\n label\n ? \n : null\n }\n \n {\n config.appendTo\n ? ReactDOM.createPortal(\n this.genList(),\n appendToElement,\n )\n : this.genList()\n }\n
    \n );\n }\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport Button from '../../../components/Button';\n\nconst Header = ({\n label, addButtonName, onAddRow, disabled, readOnly,\n}) => (\n
    \n {\n label\n ? \n : null\n }\n {!disabled && !readOnly && (\n \n {addButtonName || 'Add'}\n \n )}\n
    \n);\n\nHeader.propTypes = {\n disabled: PropTypes.bool,\n readOnly: PropTypes.bool,\n onAddRow: PropTypes.func,\n addButtonName: PropTypes.string,\n label: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.element,\n PropTypes.node,\n ]),\n};\n\nexport default Header;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nconst ListHeader = ({\n fields,\n readOnly,\n}) => (\n
  • \n {\n fields.map(field => (\n
    {field?.props?.label}
    \n ))\n }\n
    Delete
    \n
  • \n);\n\nListHeader.propTypes = {\n fields: PropTypes.instanceOf(Array),\n readOnly: PropTypes.bool,\n};\n\nexport default ListHeader;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Button from '../../../components/Button';\n\nconst FieldsList = ({\n fields,\n disabled,\n readOnly,\n errors,\n components,\n onChange,\n onDelete,\n value,\n rowIndex,\n}) => (\n
  • \n {\n components.map((Component, index) => {\n let field = fields[index];\n let tempField = typeof field === 'function' ? field(rowIndex, index) : field;\n return (\n /* eslint-disable-next-line */\n
    \n \n
    \n );\n })\n }\n
    \n \n
    \n
  • \n);\n\nFieldsList.propTypes = {\n disabled: PropTypes.bool,\n readOnly: PropTypes.bool,\n rowIndex: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number,\n ]),\n fields: PropTypes.instanceOf(Array),\n errors: PropTypes.instanceOf(Array),\n components: PropTypes.instanceOf(Array),\n value: PropTypes.instanceOf(Array),\n onChange: PropTypes.func,\n onDelete: PropTypes.func,\n};\n\nexport default FieldsList;\n","const validateValues = (fields, rowValues) => (rowValues || [[undefined, undefined]])?.map(\n colValue => colValue?.map(\n (value, index) => fields?.[index]?.props?.validate\n && fields[index].props.validate(value),\n ),\n);\n\nexport default validateValues;\n","import React, { useCallback, useState } from 'react';\n\nconst withValidation = Component => ({\n onChange,\n validate,\n error,\n ...rest\n}) => {\n const [internalError, setInternalError] = useState(null);\n const onFieldChange = useCallback((event) => {\n /* eslint-disable-next-line */\n const value = event?.target\n ? ['radio', 'checkbox'].includes(event.target.type)\n ? event.target.checked\n : event?.target.value\n : event;\n\n let isValid = true;\n if (validate && typeof validate === 'function') {\n const errorMsg = validate(value);\n isValid = !errorMsg;\n setInternalError(errorMsg);\n }\n\n onChange(value, isValid);\n }, [validate, onChange]);\n\n return ;\n};\n\nexport default withValidation;\n","import React, { useMemo, useState } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Header from './Header';\nimport ListHeader from './ListHeader';\nimport FieldsList from './FieldsList';\nimport validateValues from './validate-values';\nimport withValidation from './with-validation';\n\nlet id = 1;\n/* eslint-disable-next-line */\nconst getUID = prefix => `${prefix}-${id++}`;\n\n/**\n * Editable list is a component, that lists rows of form elements (can have n elements on a row),\n * and stores the values of all the rows in an Array list\n */\nconst EditableList2 = ({\n addButtonName,\n disabled,\n readOnly,\n fields,\n label,\n error,\n value = [],\n onChange = () => {},\n hideOnEmpty = true,\n wrapperClassName = '',\n}) => {\n const [internalErrors, setInteranlErrors] = useState(null);\n\n const updateRowValue = (rowIndex, fieldIndex, componentValue, isValid) => {\n const tempValueArr = !value ? [] : [...value];\n\n if (!value) {\n tempValueArr[rowIndex] = [...new Array(fields.length)];\n tempValueArr[rowIndex][fieldIndex] = componentValue;\n } else {\n const tempValue = [...tempValueArr[rowIndex]];\n tempValue[fieldIndex] = componentValue;\n tempValueArr[rowIndex] = tempValue;\n tempValueArr[rowIndex].id = value[rowIndex].id;\n }\n\n if (internalErrors?.[rowIndex]?.[fieldIndex] && isValid) {\n const tempErrors = [...internalErrors];\n const tempFieldError = [...tempErrors[rowIndex]];\n tempFieldError[fieldIndex] = null;\n tempErrors[rowIndex] = tempFieldError;\n setInteranlErrors(tempErrors);\n }\n onChange(tempValueArr);\n };\n\n const hasErrors = errors => Boolean(errors?.flat()?.filter(Boolean).length);\n\n const Components = useMemo(\n () => fields.map(field => {\n let tempField = typeof field === 'function' ? field() : field;\n\n return withValidation(tempField?.component || <>)\n }),\n [],\n );\n\n const onAddRow = () => {\n const errors = validateValues(fields, value);\n\n if (hasErrors(errors)) {\n setInteranlErrors(errors);\n return;\n }\n\n const newValue = [...new Array(fields.length)];\n newValue.id = getUID('row');\n\n onChange([\n ...value && value,\n newValue,\n ]);\n };\n\n const deleteRow = (index) => {\n if (!value) {\n return;\n }\n const tempValue = [...value];\n tempValue.splice(index, 1);\n onChange(tempValue);\n };\n\n return (\n
    \n \n {value?.length || !hideOnEmpty ? (\n
      \n {(value || [[]]).map((v, i) => (\n <>\n \n \n ))}\n \n
    \n ) : null}\n {error && error !== 'true' && error !== 'false' ? (\n

    {error}

    \n ) : null}\n
    \n );\n};\n\nEditableList2.propTypes = {\n /** Sets Editable list in edit mode.\n * If enabled all fields are disabled, the add button is hidden and delete button is disabled\n * */\n disabled: PropTypes.bool,\n /** Sets Editable list in read only mode.\n * If enabled all fields are displaying just the value,\n * the add button is hidden and delete button is disabled\n */\n readOnly: PropTypes.bool,\n /** Name of the Add button. By default has 'Add value' */\n addButtonName: PropTypes.string,\n /** Label of Editable list, is displayed above the list and inline with the Add button */\n label: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.element,\n PropTypes.node,\n ]),\n /** Array of form elements that you want the list to have\n * Each field is an object points to the Form element component that you want to use,\n * the props you want to apply on it,\n * and the size (as in width, it's like columns system, between 1 and 12)\n * Example:\n * ...\n * fields={[\n {\n component: Input2,\n styles: {\n width: \"200px\",\n },\n size: 4,\n props: {\n name: 'input',\n label: 'Claim name',\n theme: 'default rounded-corners',\n placeholder: 'Enter claim name',\n validate: formikRequired('This field is required')\n }\n },\n {\n component: Combobox2,\n size: 8,\n props: comboboxProps\n }\n ]}\n */\n fields: PropTypes.instanceOf(Array),\n /** onChange function is called everytime the value of editable list changes */\n onChange: PropTypes.func,\n /** value of editable list, wich is an Array (List of row values)\n * of Arrays (List of column values,\n * each column will have the value format depending on the component type)\n */\n value: PropTypes.oneOfType([\n PropTypes.instanceOf(Object),\n PropTypes.instanceOf(Array),\n ]),\n error: PropTypes.string,\n hideOnEmpty: PropTypes.bool,\n wrapperClassName: PropTypes.string,\n};\n\nexport default EditableList2;\n","import React, { Component, Fragment, createRef } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Icon from '../../../components/Icon';\n\nexport default class FileInput extends Component {\n static propTypes = {\n accept: PropTypes.string,\n disabled: PropTypes.bool,\n id: PropTypes.string,\n error: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.bool,\n ]),\n label: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.func,\n PropTypes.string,\n ]),\n labelwidth: PropTypes.string,\n name: PropTypes.string,\n note: PropTypes.string,\n onChange: PropTypes.func,\n placeholder: PropTypes.string,\n theme: PropTypes.string,\n value: PropTypes.instanceOf(Object),\n wrapperClassName: PropTypes.string,\n }\n\n constructor(props) {\n super(props);\n\n this.handleOnChange = this.handleOnChange.bind(this);\n this.clearValue = this.clearValue.bind(this);\n this.fileInputRef = createRef();\n }\n\n getCssClasses() {\n const {\n error, theme, labelwidth, wrapperClassName = '',\n } = this.props;\n const cssClasses = [wrapperClassName, 'tyk-form-group'];\n const themes = theme ? theme.split(' ') : [];\n\n if (themes.length) {\n themes.forEach((iTheme) => {\n cssClasses.push(`tyk-form-group--${iTheme}`);\n });\n }\n\n if (labelwidth) {\n cssClasses.push('tyk-form-group--label-has-width');\n }\n\n if (error) {\n cssClasses.push('has-error');\n }\n\n return cssClasses.join(' ');\n }\n\n getLabelStyles() {\n const { labelwidth } = this.props;\n const styles = {};\n\n if (labelwidth) {\n styles.flexBasis = labelwidth;\n }\n\n return styles;\n }\n\n getNonLabelWidth() {\n const { labelwidth } = this.props;\n const styles = {};\n\n if (labelwidth) {\n styles.flexBasis = `calc(100% - ${labelwidth} - 20px)`;\n }\n\n return styles;\n }\n\n getFileInputError() {\n const { error } = this.props;\n\n return (error && error !== 'true' && error !== 'false')\n ? (\n \n { error }\n

    \n )\n : null;\n }\n\n getFileInputComponent() {\n const {\n accept, value: omitValue, onChange, ...rest\n } = this.props;\n\n return (\n \n \n {\n this.fileInputRef.current && this.fileInputRef.current.files.length > 0\n ? (\n \n \n \n )\n : null\n }\n \n );\n }\n\n clearValue() {\n const { onChange } = this.props;\n this.fileInputRef.current.value = '';\n onChange('');\n }\n\n handleOnChange(e) {\n const { onChange } = this.props;\n\n onChange(e.target.files);\n }\n\n // eslint-disable-next-line class-methods-use-this\n reset() {}\n\n render() {\n const {\n id,\n label,\n note,\n } = this.props;\n\n return (\n \n
    \n {\n label\n ? \n : null\n }\n
    \n { this.getFileInputComponent() }\n {\n note\n ?

    { note }

    \n : null\n }\n
    \n { this.getFileInputError() }\n
    \n
    \n );\n }\n}\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\nexport default class Input extends Component {\n static propTypes = {\n disabled: PropTypes.bool,\n readOnly: PropTypes.bool,\n id: PropTypes.string,\n isfield: PropTypes.bool,\n error: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.bool,\n ]),\n inputgroupaddonleft: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]),\n inputgroupaddonright: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]),\n label: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.element,\n PropTypes.node,\n ]),\n labelwidth: PropTypes.string,\n name: PropTypes.string,\n note: PropTypes.string,\n onChange: PropTypes.func,\n placeholder: PropTypes.string,\n theme: PropTypes.string,\n value: PropTypes.oneOfType([\n PropTypes.number,\n PropTypes.string,\n ]),\n }\n\n static getAddon(content) {\n return (\n
    \n { content }\n
    \n );\n }\n\n constructor(props) {\n super(props);\n const {\n value,\n } = this.props;\n\n this.state = {\n initValue: value,\n stateValue: value,\n };\n\n this.handleOnChange = this.handleOnChange.bind(this);\n }\n\n componentDidUpdate(prevProps) {\n const {\n isfield,\n value,\n onChange,\n } = this.props;\n\n if (!isfield && prevProps.value !== value) {\n /* eslint-disable react/no-did-update-set-state */\n this.setState({\n stateValue: value,\n }, () => {\n if (onChange) {\n onChange(value);\n }\n });\n }\n }\n\n getLabelStyles() {\n const { labelwidth } = this.props;\n const styles = {};\n\n if (labelwidth) {\n styles.flexBasis = labelwidth;\n }\n\n return styles;\n }\n\n getNonLabelWidth() {\n const { labelwidth } = this.props;\n const styles = {};\n\n if (labelwidth) {\n styles.flexBasis = `calc(100% - ${labelwidth} - 20px)`;\n }\n\n return styles;\n }\n\n getInputError() {\n const { error } = this.props;\n\n return (error && error !== 'true' && error !== 'false')\n ? (\n \n { error }\n

    \n )\n : null;\n }\n\n getCssClasses() {\n const {\n error,\n theme,\n labelwidth,\n inputgroupaddonleft,\n inputgroupaddonright,\n } = this.props;\n const cssClasses = ['tyk-form-group'];\n const themes = theme ? theme.split(' ') : [];\n\n if (themes.length) {\n themes.forEach((iTheme) => {\n cssClasses.push(`tyk-form-group--${iTheme}`);\n });\n }\n\n if (inputgroupaddonleft) {\n cssClasses.push('tyk-form-group--addon-left');\n }\n\n if (inputgroupaddonright) {\n cssClasses.push('tyk-form-group--addon-right');\n }\n\n if (labelwidth) {\n cssClasses.push('tyk-form-group--label-has-width');\n }\n\n if (error) {\n cssClasses.push('has-error');\n }\n\n return cssClasses.join(' ');\n }\n\n getInputGroupAddon() {\n const {\n inputgroupaddonleft,\n inputgroupaddonright,\n } = this.props;\n\n return (\n
    \n {\n inputgroupaddonleft\n ? Input.getAddon(inputgroupaddonleft)\n : null\n }\n { this.getInputComponent() }\n {\n inputgroupaddonright\n ? Input.getAddon(inputgroupaddonright)\n : null\n }\n
    \n );\n }\n\n getInputComponent() {\n const {\n isfield, onChange, value, ...rest\n } = this.props;\n const { stateValue } = this.state;\n return (\n \n );\n }\n\n reset() {\n const { initValue } = this.state;\n\n this.setState({\n stateValue: initValue,\n });\n }\n\n handleOnChange(e) {\n const { onChange, isfield } = this.props;\n const inputValue = e.target.value;\n\n if (!isfield) {\n this.setState({\n stateValue: inputValue,\n }, () => {\n if (onChange) {\n onChange(inputValue);\n }\n });\n } else {\n onChange(inputValue);\n }\n }\n\n render() {\n const {\n label,\n id,\n inputgroupaddonleft,\n inputgroupaddonright,\n note,\n readOnly,\n value,\n } = this.props;\n\n return (\n
    \n {\n label\n ? \n : null\n }\n {!readOnly && (\n \n {\n inputgroupaddonleft || inputgroupaddonright\n ? this.getInputGroupAddon()\n : this.getInputComponent()\n }\n {\n note\n ?

    { note }

    \n : null\n }\n { this.getInputError() }\n
    \n )}\n {\n readOnly &&
    {value || '-'}
    \n }\n \n );\n }\n}\n","import React, { useImperativeHandle, useRef, forwardRef } from 'react';\nimport PropTypes from 'prop-types';\n\nconst Input2 = forwardRef(({\n error,\n onChange,\n readOnly,\n id,\n inputgroupaddonleft,\n inputgroupaddonright,\n label,\n labelwidth,\n note,\n theme,\n value,\n wrapperClassName = '',\n ...rest\n}, ref) => {\n const inputRef = useRef();\n\n useImperativeHandle(ref, () => ({\n focus: () => {\n inputRef.current.focus();\n },\n }));\n\n const getAddon = content => (\n
    \n { content }\n
    \n );\n\n const getLabelStyles = () => ({\n ...labelwidth && {\n flexBasis: labelwidth,\n },\n });\n\n const getNonLabelWidth = () => ({\n ...labelwidth && {\n flexBasis: `calc(100% - ${labelwidth} - 20px)`,\n },\n });\n\n const getInputError = () => (\n (error && error !== 'true' && error !== 'false')\n ? (\n \n { error }\n

    \n )\n : null\n );\n\n const getCssClasses = () => {\n const cssClasses = [wrapperClassName, 'tyk-form-group'];\n const themes = theme ? theme.split(' ') : [];\n\n if (themes.length) {\n themes.forEach((iTheme) => {\n cssClasses.push(`tyk-form-group--${iTheme}`);\n });\n }\n\n if (inputgroupaddonleft) {\n cssClasses.push('tyk-form-group--addon-left');\n }\n\n if (inputgroupaddonright) {\n cssClasses.push('tyk-form-group--addon-right');\n }\n\n if (labelwidth) {\n cssClasses.push('tyk-form-group--label-has-width');\n }\n\n if (error) {\n cssClasses.push('has-error');\n }\n\n return cssClasses.join(' ');\n };\n\n const handleOnChange = (e) => {\n onChange(e, e.target.value);\n };\n\n const getInputElement = () => (\n \n );\n\n const getInputGroupAddon = () => (\n
    \n {\n inputgroupaddonleft\n ? getAddon(inputgroupaddonleft)\n : null\n }\n { getInputElement() }\n {\n inputgroupaddonright\n ? getAddon(inputgroupaddonright)\n : null\n }\n
    \n );\n\n return (\n
    \n {\n label\n ? \n : null\n }\n {!readOnly && (\n \n {\n inputgroupaddonleft || inputgroupaddonright\n ? getInputGroupAddon()\n : getInputElement()\n }\n {\n note\n ?

    { note }

    \n : null\n }\n { getInputError() }\n
    \n )}\n {\n readOnly && (\n
    \n {value || '-'}\n
    \n )\n }\n \n );\n});\n\nInput2.propTypes = {\n disabled: PropTypes.bool,\n readOnly: PropTypes.bool,\n id: PropTypes.string,\n error: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.bool,\n ]),\n inputgroupaddonleft: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]),\n inputgroupaddonright: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]),\n label: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.element,\n PropTypes.node,\n ]),\n labelwidth: PropTypes.string,\n name: PropTypes.string,\n note: PropTypes.string,\n onChange: PropTypes.func,\n placeholder: PropTypes.string,\n theme: PropTypes.string,\n value: PropTypes.oneOfType([\n PropTypes.number,\n PropTypes.string,\n ]),\n wrapperClassName: PropTypes.string,\n};\n\nexport default Input2;\n","import { createContext } from 'react';\n\nconst MultiselectContext = createContext();\n\nexport default MultiselectContext;\n","import React, { Component, Fragment } from 'react';\nimport PropTypes from 'prop-types';\n\nimport MultiselectContext from './MultiselectContext';\nimport Button from '../../../../components/Button';\nimport Collapsible from '../../../../components/Collapsible';\nimport Loader from '../../../../components/Loader';\n\nconst getItemContent = (context, item) => (\n context.detailsDisplayTemplate\n ? context.detailsDisplayTemplate(item)\n : JSON.stringify(item.details)\n);\n\nconst getItemLoader = (context, item) => {\n const { opened } = context;\n\n return opened[item.id]\n ? \n : null;\n};\n\nclass MultiselectItem extends Component {\n static propTypes = {\n item: PropTypes.instanceOf(Object),\n itemType: PropTypes.string,\n searchValue: PropTypes.string,\n onChange: PropTypes.func,\n };\n\n isInSearchValue(fieldsToSearchOn) {\n const { searchValue, item } = this.props;\n\n if (fieldsToSearchOn && fieldsToSearchOn.length > 0) {\n let fields = fieldsToSearchOn.slice(0);\n\n fields = fields.filter(key => item[key] && item[key].search(searchValue) > -1);\n\n return fields.length > 0;\n }\n\n return JSON.stringify(item).search(searchValue) > -1;\n }\n\n render() {\n const {\n item,\n itemType,\n onChange,\n } = this.props;\n\n return (\n \n \n {\n context => (\n this.isInSearchValue(context.fieldsToSearchOn)\n ? (\n
  • \n
    \n \n {\n context.itemDisplayTemplate\n ? context.itemDisplayTemplate(item)\n : JSON.stringify(item)\n }\n \n \n \n \n \n
    \n {\n item.details\n ? (\n \n {getItemContent(context, item)}\n \n )\n : getItemLoader(context, item)\n }\n
  • \n )\n : null\n )\n }\n
    \n
    \n );\n }\n}\n\nexport default MultiselectItem;\n","import React, { Component, createRef } from 'react';\nimport PropTypes from 'prop-types';\nimport { fromJS } from 'immutable';\n\nimport Input from '../../Input';\nimport Icon from '../../../../components/Icon';\nimport Message from '../../../../components/Message';\nimport InfiniteScroller from '../../../../components/InfiniteScroller';\nimport MultiselectItem from './MultiselectItem';\n\nclass MultiselectPanel extends Component {\n static propTypes = {\n customSearch: PropTypes.bool,\n onCustomSearch: PropTypes.func,\n panelType: PropTypes.string,\n onChange: PropTypes.func,\n items: PropTypes.instanceOf(Array),\n itemsPageNumber: PropTypes.number,\n itemsNrPages: PropTypes.number,\n inputPlaceholder: PropTypes.string,\n loadMoreItems: PropTypes.func,\n noItemsMessage: PropTypes.string,\n serverLoad: PropTypes.bool,\n };\n\n state = {\n searchValue: '',\n };\n\n constructor(props) {\n super(props);\n\n this.searchOnChange = this.searchOnChange.bind(this);\n this.itemChanged = this.itemChanged.bind(this);\n this.itemIndex = 0;\n this.itemsListRef = createRef();\n }\n\n getItemIndex() {\n this.itemIndex += 1;\n\n return this.itemIndex;\n }\n\n getItemsList() {\n const {\n itemsPageNumber,\n itemsNrPages,\n loadMoreItems,\n serverLoad,\n } = this.props;\n\n return (\n serverLoad\n ? (\n itemsPageNumber}\n loadMore={loadMoreItems}\n pageNumber={itemsPageNumber}\n >\n { this.renderListItems() }\n \n )\n : this.renderListItems()\n );\n }\n\n searchOnChange(value) {\n const { onCustomSearch } = this.props;\n\n if (!onCustomSearch) {\n this.setState({\n searchValue: value,\n });\n } else {\n onCustomSearch(value);\n }\n }\n\n itemChanged(item) {\n const { items, onChange } = this.props;\n\n let cloneItems = fromJS(items).toJS();\n cloneItems = cloneItems.filter(clonedItem => item.id !== clonedItem.id);\n\n onChange(cloneItems, item);\n }\n\n renderListItems() {\n const {\n customSearch, items, panelType, serverLoad,\n } = this.props;\n const { searchValue } = this.state;\n return (\n \n {\n items.map(item => (\n \n ))\n }\n \n );\n }\n\n render() {\n const {\n inputPlaceholder,\n noItemsMessage,\n items,\n } = this.props;\n const { searchValue } = this.state;\n\n return (\n
    \n \n }\n name=\"search\"\n onChange={this.searchOnChange}\n placeholder={inputPlaceholder}\n value={searchValue}\n />\n {\n items.length\n ? this.getItemsList()\n : (\n \n { noItemsMessage }\n \n )\n }\n
    \n );\n }\n}\n\nexport default MultiselectPanel;\n","import React, { Component, Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport { fromJS } from 'immutable';\n\nimport MultiselectPanel from './js/MultiselectPanel';\nimport MultiselectContext from './js/MultiselectContext';\n\nconst diffObjects = (value, items) => {\n const newItems = items.filter((item) => {\n const isCommon = value.filter(selectedItem => selectedItem.id === item.id).length > 0;\n\n return !isCommon;\n });\n\n return newItems;\n};\n\nclass Multiselect extends Component {\n static propTypes = {\n customSearch: PropTypes.func,\n disabled: PropTypes.bool,\n error: PropTypes.string,\n entityNamePlural: PropTypes.string,\n items: PropTypes.instanceOf(Array),\n itemDisplayTemplate: PropTypes.func,\n detailsDisplayTemplate: PropTypes.func,\n fieldsToSearchOn: PropTypes.instanceOf(Array),\n onChange: PropTypes.func,\n getItemDetails: PropTypes.func,\n itemsPageNumber: PropTypes.number,\n itemsNrPages: PropTypes.number,\n loadMoreItems: PropTypes.func,\n note: PropTypes.string,\n maxSelections: PropTypes.number,\n value: PropTypes.instanceOf(Array),\n wrapperClassName: PropTypes.string,\n };\n\n state = {\n opened: {},\n };\n\n constructor(props) {\n super(props);\n\n this.valueChange = this.valueChange.bind(this);\n this.itemsChange = this.itemsChange.bind(this);\n }\n\n onGetItemDetails(item) {\n const { getItemDetails } = this.props;\n\n this.setState((prevState) => {\n const tempState = Object.assign({}, prevState);\n tempState.opened[item.id] = !tempState.opened[item.id];\n\n return tempState;\n }, () => {\n if (getItemDetails) {\n getItemDetails(item);\n }\n });\n }\n\n getMultiselectError() {\n const { error } = this.props;\n\n return (error && error !== 'true' && error !== 'false')\n ? (\n \n { error }\n

    \n )\n : null;\n }\n\n getCssClasses() {\n const { error, wrapperClassName = '' } = this.props;\n const cssClasses = [wrapperClassName, 'tyk-multiselect'];\n\n if (error) {\n cssClasses.push('has-error');\n }\n\n return cssClasses.join(' ');\n }\n\n itemsChange(allItems, item) {\n const { value, onChange } = this.props;\n const valueClone = fromJS(value).toJS();\n\n valueClone.unshift(item);\n\n onChange(valueClone, item, 'added');\n }\n\n valueChange(value, item) {\n const { items, onChange } = this.props;\n const allItemsClone = fromJS(items).toJS();\n\n allItemsClone.unshift(item);\n\n onChange(value, item, 'removed');\n }\n\n render() {\n const {\n customSearch,\n entityNamePlural,\n disabled,\n itemDisplayTemplate,\n detailsDisplayTemplate,\n fieldsToSearchOn,\n items,\n itemsPageNumber,\n itemsNrPages,\n loadMoreItems,\n maxSelections,\n note,\n value,\n } = this.props;\n const { opened } = this.state;\n\n return (\n \n
    \n \n
    \n
    \n { value.length }\n {' '}\n Selected\n {' '}\n { entityNamePlural }\n
    \n
    \n Select from existing\n { entityNamePlural }\n
    \n
    \n
    \n \n \n
    \n \n
    \n
    \n {\n note\n ?

    { note }

    \n : null\n }\n
    \n { this.getMultiselectError() }\n
    \n );\n }\n}\n\nexport default Multiselect;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\n\n/**\n * Radio can be used when a user needs to select at most one value from a multiple options.\n */\nexport default class Radio extends Component {\n static propTypes = {\n /** Used to disable the element */\n disabled: PropTypes.bool,\n /** Readonly prop behaves the same as disabled on radio elements */\n readOnly: PropTypes.bool,\n /** Align radio with in same line with other elements */\n inline: PropTypes.bool,\n /** Set a theme for radio */\n theme: PropTypes.string,\n input: PropTypes.instanceOf(Object),\n /** Adds label to the radio input */\n label: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.func,\n PropTypes.string,\n ]),\n /** Set name for the radio input */\n name: PropTypes.string,\n /** If set to true removes margin by adding `no-margin` class */\n nospace: PropTypes.bool,\n /** Set initial value for the radio input */\n value: PropTypes.string,\n /** Add note at the bottom of the radio input */\n note: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.element,\n PropTypes.node,\n ]),\n wrapperClassName: PropTypes.string,\n };\n\n getCssClasses() {\n const {\n inline, nospace, theme = '', disabled, readOnly, wrapperClassName = '',\n } = this.props;\n const cssClasses = [wrapperClassName];\n\n if (inline) {\n cssClasses.push('tyk-radio--inline');\n } else {\n cssClasses.push('tyk-radio');\n }\n\n if (nospace) {\n cssClasses.push('no-margin');\n }\n\n if (theme.trim()) {\n cssClasses.push(...theme.split(' ').map(t => `tyk-radio--theme-${t}`));\n }\n\n if (readOnly || disabled) {\n cssClasses.push('tyk-radio--is-disabled');\n }\n\n return cssClasses.join(' ');\n }\n\n render() {\n const {\n input, label, note, disabled, readOnly, ...rest\n } = this.props;\n return (\n \n \n

    {note}

    \n \n );\n }\n}\n","import React, { Component, Fragment } from 'react';\nimport PropTypes from 'prop-types';\n\nexport default class Select extends Component {\n static propTypes = {\n disabled: PropTypes.bool,\n readOnly: PropTypes.bool,\n id: PropTypes.string,\n isfield: PropTypes.bool,\n error: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.bool,\n ]),\n options: PropTypes.instanceOf(Array),\n label: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.func,\n PropTypes.string,\n ]),\n labelwidth: PropTypes.string,\n name: PropTypes.string,\n note: PropTypes.string,\n onBlur: PropTypes.func,\n onChange: PropTypes.func,\n placeholder: PropTypes.string,\n theme: PropTypes.string,\n value: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.object,\n ]),\n wrapperClassName: PropTypes.string,\n }\n\n constructor(props) {\n super(props);\n const {\n value,\n } = this.props;\n\n this.state = {\n initValue: value,\n stateValue: value,\n };\n\n this.handleOnChange = this.handleOnChange.bind(this);\n this.handleOnBlur = this.handleOnBlur.bind(this);\n }\n\n componentDidUpdate(prevProps) {\n const {\n isfield,\n value,\n onChange,\n } = this.props;\n\n if (!isfield && prevProps.value !== value) {\n /* eslint-disable react/no-did-update-set-state */\n this.setState({\n stateValue: value,\n }, () => {\n if (onChange) {\n onChange(value);\n }\n });\n }\n }\n\n getSelectComponent() {\n const {\n isfield, options, onChange, onBlur, value, ...rest\n } = this.props;\n const {\n stateValue,\n } = this.state;\n\n let selectValue = '';\n\n if (isfield && value) {\n selectValue = value;\n } else if (stateValue) {\n selectValue = stateValue;\n }\n\n return (\n \n {\n options.map(option => )\n }\n \n );\n }\n\n getSelectError() {\n const { error } = this.props;\n\n return (error && error !== 'true' && error !== 'false')\n ? (\n \n { error }\n

    \n )\n : null;\n }\n\n getCssClasses() {\n const {\n error, labelwidth, theme, wrapperClassName = '',\n } = this.props;\n const cssClasses = [wrapperClassName, 'tyk-form-group'];\n const themes = theme ? theme.split(' ') : [];\n\n if (themes.length) {\n themes.forEach((iTheme) => {\n cssClasses.push(`tyk-form-group--${iTheme}`);\n });\n }\n\n if (labelwidth) {\n cssClasses.push('tyk-form-group--label-has-width');\n }\n\n if (error) {\n cssClasses.push('has-error');\n }\n\n return cssClasses.join(' ');\n }\n\n getLabelStyles() {\n const { labelwidth } = this.props;\n const styles = {};\n\n if (labelwidth) {\n styles.flexBasis = labelwidth;\n }\n\n return styles;\n }\n\n getNonLabelWidth() {\n const { labelwidth } = this.props;\n const styles = {};\n\n if (labelwidth) {\n styles.flexBasis = `calc(100% - ${labelwidth} - 20px)`;\n }\n\n return styles;\n }\n\n handleOnBlur() {\n const { value, onBlur } = this.props;\n\n if (onBlur) {\n onBlur(value);\n }\n }\n\n handleOnChange(e) {\n const {\n onChange,\n isfield,\n options,\n } = this.props;\n let selectedValue = null;\n\n selectedValue = options.filter(option => option.id === e.target.value);\n [selectedValue] = selectedValue;\n\n if (!isfield) {\n this.setState({\n stateValue: selectedValue,\n }, () => {\n onChange(selectedValue.id ? selectedValue : null);\n });\n } else {\n onChange(selectedValue.id ? selectedValue : null);\n }\n }\n\n reset() {\n const { initValue } = this.state;\n\n this.setState({\n stateValue: initValue,\n });\n }\n\n render() {\n const {\n label,\n id,\n note,\n readOnly,\n value,\n } = this.props;\n\n return (\n \n
    \n {\n label\n ? \n : null\n }\n {!readOnly && (\n \n {\n this.getSelectComponent()\n }\n {\n note\n ?

    { note }

    \n : null\n }\n { this.getSelectError() }\n
    \n )}\n {readOnly &&
    {value || '-'}
    }\n \n
    \n );\n }\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport Message from '../../../components/Message';\nimport List from '../../../components/List';\nimport Icon from '../../../components/Icon';\n\nfunction SelectableList(props) {\n const {\n checkboxalticon,\n items,\n itemTemplate,\n value,\n noItemsMessage = 'No items in the list',\n onChange,\n theme,\n primaryKey,\n wrapperClassName = '',\n } = props;\n\n const handleOnSelect = (event) => {\n const newSelectedItems = structuredClone(value);\n const elemPosition = newSelectedItems.findIndex(\n (id) => JSON.stringify(id) === JSON.stringify(\n Array.isArray(id)\n ? event.target.value.split(',')\n : event.target.value,\n ),\n );\n\n if (event.target.checked && elemPosition === -1) {\n const tempValue = event.target.value.split(',');\n const finalValue = tempValue.length > 1 ? tempValue : event.target.value;\n\n newSelectedItems.push(finalValue);\n } else if (!event.target.checked && elemPosition > -1) {\n newSelectedItems.splice(elemPosition, 1);\n }\n\n if (onChange) {\n onChange(newSelectedItems);\n }\n };\n\n const getListItemCssClassName = (isActive) => {\n const cssClasses = [];\n\n if (checkboxalticon) {\n cssClasses.push('tyk-selectable-list__item--with-icon');\n }\n\n if (isActive) {\n cssClasses.push('tyk-selectable-list__item--active');\n }\n\n return cssClasses.join(' ');\n };\n\n const isChecked = (inputValue, itemValue) => Boolean(\n inputValue.find((tvalue) => JSON.stringify(itemValue) === JSON.stringify(tvalue)),\n );\n\n return (\n \n {\n !items.length\n ? (\n
  • \n \n {noItemsMessage}\n \n
  • \n )\n : items.map((item, index) => (\n \n \n \n ))\n }\n
    \n );\n}\n\nSelectableList.propTypes = {\n items: PropTypes.instanceOf(Array),\n itemTemplate: PropTypes.oneOfType([\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n PropTypes.func,\n ]),\n value: PropTypes.instanceOf(Array),\n onChange: PropTypes.func,\n primaryKey: PropTypes.string,\n noItemsMessage: PropTypes.string,\n checkboxalticon: PropTypes.oneOfType([\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n theme: PropTypes.string,\n wrapperClassName: PropTypes.string,\n};\n\nSelectableList.defaultProps = {\n items: [],\n primaryKey: 'id',\n value: [],\n};\n\nexport default SelectableList;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nfunction Textarea({\n id,\n input,\n label,\n note,\n error,\n theme,\n labelwidth,\n value,\n readOnly,\n wrapperClassName,\n ...rest\n}) {\n const classes = [\n 'tyk-form-group',\n wrapperClassName,\n ...(theme ? theme.split(' ').map((t) => `tyk-form-group--${t}`) : []),\n labelwidth && 'tyk-form-group--label-has-width',\n error && 'has-error',\n ].filter(Boolean).join(' ');\n\n const getLabelStyles = () => {\n if (labelwidth) return { flexBasis: labelwidth };\n return {};\n };\n\n const getNonLabelWidth = () => {\n if (labelwidth) return { flexBasis: `calc(100% - ${labelwidth} - 20px)` };\n return {};\n };\n\n function getTextareaError() {\n return (error && error !== 'true' && error !== 'false')\n ? (\n

    \n { error }\n

    \n )\n : null;\n }\n\n return (\n
    \n {\n label\n ? \n : null\n }\n {!readOnly && (\n \n \n { value }\n \n {\n note\n ?

    { note }

    \n : null\n }\n {getTextareaError()}\n
    \n )}\n {readOnly &&
    {value || '-'}
    }\n \n );\n}\n\nTextarea.propTypes = {\n /** Disable the component */\n disabled: PropTypes.bool,\n /** Displays only the text value of the component, or \"-\" if no value is set */\n readOnly: PropTypes.bool,\n input: PropTypes.instanceOf(Object),\n /** Set an error message for the component and the component is rendered in the error state */\n error: PropTypes.string,\n /** Adds a label to the component */\n label: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.func,\n PropTypes.string,\n ]),\n /** Sets the width of the label */\n labelwidth: PropTypes.string,\n /** Set a name for the component */\n name: PropTypes.string,\n /** Adds additional information under the component */\n note: PropTypes.string,\n /** Callback function executed on value change */\n onChange: PropTypes.func,\n id: PropTypes.string,\n /** Set a theme for the component */\n theme: PropTypes.string,\n /** Set the value of the component */\n value: PropTypes.string,\n /** CSS classes added to the wrapper of the component */\n wrapperClassName: PropTypes.string,\n};\n\nexport default Textarea;\n","import { createContext } from 'react';\n\nconst ToggleContext = createContext();\n\nexport default ToggleContext;\n","import React, { Component, createRef } from 'react';\nimport PropTypes from 'prop-types';\n\nclass ToggleItem extends Component {\n static getNotchCssClasses(context) {\n return ['tyk-toggle__item-notch', `tyk-toggle__item-notch--${context.type}`].join(' ');\n }\n\n constructor(props) {\n super(props);\n\n this.itemRef = createRef();\n }\n\n componentDidMount() {\n const { context, value } = this.props;\n\n if (context.value === value) {\n context.saveSelectedRef(this.itemRef);\n }\n }\n\n componentDidUpdate(prevProps) {\n const { context, value } = this.props;\n\n if (prevProps.context.value !== context.value && context.value === value) {\n context.saveSelectedRef(this.itemRef);\n }\n }\n\n onChange(event) {\n const { context, value } = this.props;\n const { disabled, readOnly } = context;\n\n if (disabled || readOnly) {\n return;\n }\n\n context.onItemSelected(context.type === 'single' ? !context.value : value, event);\n }\n\n render() {\n const {\n context, label, name, value,\n } = this.props;\n return (\n
  • \n \n
  • \n );\n }\n}\n\nToggleItem.propTypes = {\n context: PropTypes.instanceOf(Object),\n label: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.func,\n PropTypes.string,\n ]),\n name: PropTypes.string,\n value: PropTypes.string,\n};\n\nexport default ToggleItem;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport ToggleContext from './ToggleContext';\nimport ToggleItem from './ToggleItem';\n\nconst ToggleItemWrapper = React.forwardRef((props, ref) => (\n \n {(context) => (\n \n {props.children}\n \n )}\n \n));\n\nToggleItemWrapper.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n};\n\nexport default ToggleItemWrapper;\n","import React, {\n useCallback, useMemo, useRef, useState,\n} from 'react';\nimport PropTypes from 'prop-types';\n\nimport ToggleContext from './js/ToggleContext';\nimport ToggleItemWrapper from './js/ToggleItemWrapper';\n\nfunction Toggle({\n className,\n disabled,\n readOnly,\n size,\n theme,\n direction,\n onDark,\n wrapperClassName = '',\n onChange,\n labelwidth,\n label,\n separated,\n children,\n type,\n value,\n error,\n}) {\n const [selectedRef, setSelectedRef] = useState(null);\n const notchRef = useRef();\n const toggleRef = useRef();\n\n const classes = [\n wrapperClassName,\n className,\n 'tyk-toggle',\n `tyk-toggle--disabled-${readOnly || disabled}`,\n `tyk-toggle--${size || 'md'}`,\n `tyk-toggle--${theme}`,\n `tyk-toggle--${direction}`,\n onDark && 'tyk-toggle--on-dark',\n ].filter(Boolean).join(' ');\n\n const onItemSelected = useCallback((itemValue, event) => {\n if (!onChange) return;\n onChange(itemValue, event);\n }, [onChange]);\n\n const getLabelStyles = useCallback(() => {\n if (labelwidth) return { flexBasis: labelwidth };\n return {};\n }, [labelwidth]);\n\n const positionNotch = useCallback(() => {\n if (!selectedRef || separated) {\n return {};\n }\n\n const selectedWidth = selectedRef.current.offsetWidth;\n const selectedOffset = selectedRef.current.getBoundingClientRect().left;\n const toggleOffset = toggleRef.current.getBoundingClientRect().left;\n const left = selectedOffset - toggleOffset;\n\n return {\n left: `${left + 4}px`,\n width: `${selectedWidth - 8}px`,\n };\n }, [selectedRef, separated]);\n\n const contextValue = useMemo(() => ({\n disabled,\n readOnly,\n onItemSelected,\n saveSelectedRef: setSelectedRef,\n separated,\n type,\n value,\n }), [disabled, readOnly, onItemSelected, separated, type, value]);\n\n return (\n <>\n
    \n \n {\n label\n ? \n : null\n }\n
      \n { children }\n {\n type === 'multiple' && !separated\n ?
    • \n : null\n }\n
    \n \n
    \n {\n error && (\n

    \n { error }\n

    \n )\n }\n \n );\n}\n\nToggle.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n className: PropTypes.string,\n disabled: PropTypes.bool,\n readOnly: PropTypes.bool,\n error: PropTypes.string,\n onChange: PropTypes.func,\n label: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.func,\n PropTypes.string,\n ]),\n labelwidth: PropTypes.string,\n theme: PropTypes.string,\n type: PropTypes.string, // single || multiple\n size: PropTypes.string,\n separated: PropTypes.bool,\n direction: PropTypes.string,\n value: PropTypes.oneOfType([\n PropTypes.bool,\n PropTypes.string,\n ]),\n onDark: PropTypes.bool,\n wrapperClassName: PropTypes.string,\n};\n\nToggle.defaultProps = {\n separated: false,\n theme: 'primary',\n type: 'single',\n direction: 'row',\n};\n\nToggle.Item = ToggleItemWrapper;\n\nexport default Toggle;\n","export const stringToTokenString = (value, options) => {\n let tempStr = value;\n options.forEach((option) => {\n tempStr = tempStr.replaceAll(option.id, `__TOKEN__${option.id}__TOKEN__`);\n });\n return tempStr;\n};\n\n\nexport const setCursorPos = (ref, pos) => {\n setTimeout(() => {\n ref.current.setSelectionRange(pos, pos);\n }, 20);\n};\n","import React, { useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { stringToTokenString, setCursorPos } from './service';\n\nfunction StringInput({\n setShowOptions,\n tokenValue,\n disabled,\n placeholder,\n tokens,\n dropdownTriggerKey,\n setStringBuilderHeight,\n stringBuilderHeight,\n setTokenString,\n tokenString,\n showOptions,\n options,\n setTokenValue,\n inputRef,\n setInputInFocus,\n invalidTokenRegex,\n name,\n contextMaxLength,\n}) {\n const [isPasteEvent, setIsPasteEvent] = useState(false);\n\n useEffect(() => {\n // Set height if initial value exists\n if (tokenValue) {\n const tokenLen = tokenValue.length > 50 ? tokenValue.length / 5 : 0;\n setStringBuilderHeight(inputRef.current.scrollHeight + tokenLen);\n }\n }, []);\n\n /**\n *\n * @param {*} e : Event\n * Handle delete event (fn + delete on mac)\n */\n\n const handleDelete = (e) => {\n const { selectionEnd } = e.target;\n if (selectionEnd === tokenValue.length) {\n // - Cursor is at the end of input\n return;\n }\n\n const stringBeforeCursor = tokenValue.substring(0, selectionEnd);\n const stringAfterCursor = tokenValue.slice(selectionEnd);\n\n const tokenStringForStringAfterCursor = stringToTokenString(\n stringAfterCursor,\n options,\n );\n if (tokenStringForStringAfterCursor.startsWith('__TOKEN__')) {\n // If string before delete is a token\n const splitTokens = tokenStringForStringAfterCursor.split(/__TOKEN__(.*?)__TOKEN__/g).filter((t) => t !== '');\n const firstToken = splitTokens[0];\n const newTokenValue = `${stringBeforeCursor}${stringAfterCursor.substr(firstToken.length)}`;\n const newTokenizedString = stringToTokenString(newTokenValue, options);\n setTokenString(newTokenizedString);\n setCursorPos(inputRef, selectionEnd);\n return;\n }\n const newTokenValue = `${stringBeforeCursor}${stringAfterCursor.substr(1)}`;\n const newTokenizedString = stringToTokenString(newTokenValue, options);\n setTokenString(newTokenizedString);\n setCursorPos(inputRef, selectionEnd);\n };\n\n /**\n *\n * @param {*} e : Event\n * Handle backspace event\n * - If the last thing added by user was a token prevent default and\n * remove the entire token instead of single character, else continue with default behaviour\n * - Also handles if the string is manipulated from middle\n */\n const handleBackSpace = (e) => {\n const { selectionEnd } = e.target;\n\n // -- START :: Handle backspacing when cursor is at the end of the string\n if (selectionEnd === tokenValue.length) {\n const lastToken = tokens[tokens?.length - 2];\n const lastCharsInString = tokenValue.slice(-lastToken?.length);\n if (lastToken === lastCharsInString) {\n e.preventDefault();\n setTokenString(\n tokenString.slice(0, -`__TOKEN__${lastCharsInString}__TOKEN__`.length),\n );\n return;\n }\n if (tokenValue.endsWith(' ')) {\n const invalidToken = tokenValue.match(invalidTokenRegex);\n const newTokenValue = tokenValue.slice(0, -` ${invalidToken[invalidToken.length - 1]} `.length);\n const newTokenStr = stringToTokenString(newTokenValue, options);\n setTokenString(newTokenStr);\n return;\n }\n setTokenString(tokenString.slice(0, -1));\n return;\n }\n // -- END :: Handle backspacing when cursor is at the end of the string\n\n // -- START :: Handle backspacing when cursor is in between\n const stringBeforeCursor = tokenValue.substring(0, selectionEnd);\n const stringAfterCursor = tokenValue.slice(selectionEnd);\n\n const tokenStringForStringBeforeCursor = stringToTokenString(stringBeforeCursor, options);\n\n // -- IF the string before cursor is a token\n if (tokenStringForStringBeforeCursor.endsWith('__TOKEN__')) {\n e.preventDefault();\n const splitTokens = tokenStringForStringBeforeCursor.split(/__TOKEN__(.*?)__TOKEN__/g);\n const lastToken = splitTokens[splitTokens.length - 2];\n const newTokenValue = `${stringBeforeCursor.slice(0, -(lastToken.length))}${stringAfterCursor}`;\n const newTokenizedString = stringToTokenString(newTokenValue, options);\n setTokenString(newTokenizedString);\n setCursorPos(inputRef, selectionEnd - lastToken.length);\n return;\n }\n\n const invalidToken = stringBeforeCursor.match(invalidTokenRegex);\n // If Token is Invalid Token\n if (invalidToken?.[0] && invalidToken.length === 1) {\n e.preventDefault();\n const newTokenValue = `${stringBeforeCursor.replaceAll(invalidTokenRegex, '').trim()}${stringAfterCursor}`;\n const newTokenizedString = stringToTokenString(newTokenValue, options);\n setTokenString(newTokenizedString);\n setCursorPos(inputRef, selectionEnd - ` ${invalidToken[0]} `.length);\n return;\n }\n\n const newTokenValue = `${stringBeforeCursor.slice(\n 0,\n -1,\n )}${stringAfterCursor}`;\n const newTokenizedString = stringToTokenString(newTokenValue, options);\n setTokenString(newTokenizedString);\n setCursorPos(inputRef, selectionEnd - 1);\n // -- END :: Handle backspacing when cursor is in between\n };\n\n const addCharacterToTokenString = (text, selectionStart) => {\n // Cursor is at end\n if (selectionStart - 1 === tokenValue.length) {\n setTokenString(`${tokenString}${text}`);\n return;\n }\n\n // Cursor is in middle of string\n const newTokenValue = tokenValue.slice(0, selectionStart - 1)\n + text\n + tokenValue.slice(selectionStart - 1);\n\n const newTokenizedString = stringToTokenString(newTokenValue, options);\n setTokenString(newTokenizedString);\n };\n\n // -- START :: Handle highlighted text deletion / replacement\n const handleTextSelection = (e, selectedText, key) => {\n const allowedKeys = ['Delete', 'Backspace'];\n if (key.length > 1 && allowedKeys.indexOf(key) === -1) {\n return;\n }\n const { selectionEnd, selectionStart } = e.target;\n const substitute = key.length > 1 ? '' : key;\n if (selectedText.length > 1) {\n const newStr = tokenValue.substring(0, selectionStart)\n + substitute\n + tokenValue.substring(selectionEnd);\n const newTokenStr = stringToTokenString(newStr, options);\n setTokenString(newTokenStr);\n setCursorPos(inputRef, substitute.length ? selectionStart + 1 : selectionStart);\n }\n };\n // -- END :: Handle highlighted text deletion / replacement\n\n const handleKeyDown = (e) => {\n const { key } = e;\n const { selectionEnd, selectionStart, value } = e.target;\n const selectedText = value.substring(selectionStart, selectionEnd);\n\n if (key === dropdownTriggerKey && !showOptions) {\n e.preventDefault();\n setShowOptions(true);\n return;\n }\n if (key === 'Enter') {\n e.preventDefault();\n return;\n }\n if (key === 'Backspace') {\n e.preventDefault();\n handleBackSpace(e);\n }\n if (key === 'Delete') {\n e.preventDefault();\n handleDelete(e);\n }\n if (e.metaKey && key === 'x') {\n setTokenString('');\n }\n if (selectedText) {\n e.preventDefault();\n handleTextSelection(e, selectedText, key);\n }\n };\n\n const handleOnChange = (e) => {\n const { target } = e;\n const { selectionStart, value } = target;\n\n if (showOptions) {\n setShowOptions(false);\n }\n setTokenValue(value);\n if (value && !isPasteEvent) {\n const text = value.charAt(selectionStart - 1);\n addCharacterToTokenString(text, selectionStart);\n }\n setIsPasteEvent(false);\n };\n\n const handlePasteEvent = (e) => {\n e.preventDefault();\n const { clipboardData } = e;\n const { selectionStart, selectionEnd } = e.target;\n setIsPasteEvent(true);\n let pasteString = clipboardData.getData('text/plain');\n if (selectionStart !== selectionEnd) {\n pasteString = tokenValue.slice(0, selectionStart)\n + pasteString\n + tokenValue.slice(selectionEnd, tokenValue.length);\n const newTokenString = stringToTokenString(pasteString, options);\n setTokenString(newTokenString);\n return;\n }\n const newTokenString = stringToTokenString(pasteString, options);\n addCharacterToTokenString(newTokenString, selectionStart);\n };\n\n const handleOnFocus = () => {\n setInputInFocus(true);\n };\n\n return (\n handleOnChange(e)}\n onKeyDown={(e) => handleKeyDown(e)}\n placeholder={placeholder}\n name={name}\n ref={inputRef}\n style={{ height: `${stringBuilderHeight}px` }}\n maxLength={contextMaxLength}\n onPaste={handlePasteEvent}\n onFocus={handleOnFocus}\n onBlur={() => setInputInFocus(false)}\n />\n );\n}\n\nStringInput.propTypes = {\n setShowOptions: PropTypes.func,\n tokenValue: PropTypes.string,\n disabled: PropTypes.bool,\n placeholder: PropTypes.string,\n tokenString: PropTypes.string,\n stringBuilderHeight: PropTypes.number,\n dropdownTriggerKey: PropTypes.string,\n setStringBuilderHeight: PropTypes.func,\n setTokenString: PropTypes.func,\n setTokenValue: PropTypes.func,\n setInputInFocus: PropTypes.func,\n showOptions: PropTypes.bool,\n tokens: PropTypes.arrayOf(PropTypes.string),\n options: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.string.isRequired,\n name: PropTypes.string.isRequired,\n className: PropTypes.string,\n desc: PropTypes.string,\n }),\n ),\n inputRef: PropTypes.instanceOf(Object),\n invalidTokenRegex: PropTypes.instanceOf(RegExp),\n name: PropTypes.string,\n contextMaxLength: PropTypes.number,\n};\n\nexport { StringInput };\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Tooltip from '../../../../components/Tooltip';\nimport Icon from '../../../../components/Icon';\n\n\nconst InvalidToken = (props) => {\n const { token, findInvalidTokenSubstitute } = props;\n return (\n findInvalidTokenSubstitute(token)}\n onKeyDown={() => {}}\n >\n \n \n {`${token}`}\n \n \n \n \n );\n};\n\nInvalidToken.propTypes = {\n token: PropTypes.string,\n findInvalidTokenSubstitute: PropTypes.func,\n};\n\nexport default InvalidToken;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport InvalidToken from './invalid-token';\n\nexport const TokenizedString = (props) => {\n const {\n tokens,\n options,\n disabled,\n invalidTokenRegex,\n findInvalidTokenSubstitute,\n } = props;\n\n /**\n * hasDuplicates : used to avoid duplicate keys in map :\n * having duplicate tokens causes invalid unpredictable react renders.\n * eg: http://alpaha.com/{{.agruments.id}}/id={{.arguments.id}}\n * `{{.arguments.id}}` is repeated twice : maybe edge case but quite possible\n */\n\n const hasDuplicates = new Set(tokens).size !== tokens.length;\n\n const allTokens = tokens\n && tokens.map((token) => {\n if (options) {\n const matchedOption = options.find(option => option.id === token);\n // if invalid token\n if (invalidTokenRegex && !matchedOption) {\n const matchedTokens = token.replaceAll(' ', '').split(invalidTokenRegex);\n if (matchedTokens?.length > 1) {\n return (\n \n {matchedTokens.map((tkn) => {\n if (tkn.match(invalidTokenRegex)) {\n return (\n \n );\n }\n return ({`${tkn} `});\n })}\n \n );\n }\n }\n // if token matches option\n\n if (matchedOption) {\n return (\n \n {matchedOption.id}\n \n );\n }\n }\n return (\n {token}\n );\n });\n return (\n \n {allTokens}\n \n );\n};\n\nTokenizedString.propTypes = {\n tokens: PropTypes.arrayOf(PropTypes.string),\n options: PropTypes.arrayOf(PropTypes.instanceOf(Object)),\n disabled: PropTypes.bool,\n invalidTokenRegex: PropTypes.instanceOf(RegExp),\n findInvalidTokenSubstitute: PropTypes.func,\n};\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\n\nimport FloatingContainer from '../../../../components/FloatingContainer';\n\nexport const OptionsList = ({\n options,\n showOptions,\n handleOptionSelection,\n containerRef,\n getThemeClasses,\n setShowOptions,\n allowSearch,\n initialSearchValue,\n}) => {\n const [filterValue, setFilterValue] = useState(initialSearchValue);\n const [filteredOptions, setFilteredOptions] = useState(options);\n\n useEffect(() => {\n setFilterValue(initialSearchValue);\n }, [initialSearchValue]);\n\n useEffect(() => {\n if (filterValue === '') {\n setFilteredOptions(options);\n return;\n }\n const newFilteredOptions = options.filter(\n option => option.name.toLowerCase().includes(filterValue.toLowerCase()),\n );\n setFilteredOptions(newFilteredOptions);\n }, [filterValue]);\n\n useEffect(() => {\n setFilteredOptions(options);\n }, [options]);\n\n if (!showOptions) {\n return null;\n }\n\n return (\n <>\n \n {allowSearch && (\n
    \n {\n setFilterValue(e.target.value);\n }}\n onKeyDown={(e) => {\n if (\n e.key === 'Escape'\n || e.key === 'ArrowUp'\n // || e.key === 'ArrowDown'\n || e.key === 'Enter'\n ) {\n setShowOptions(false);\n }\n }}\n />\n
    \n )}\n
      \n {filteredOptions.map(option => (\n handleOptionSelection(option)}\n >\n \n {option.name}\n \n {option.desc && (\n \n   :  \n {option.desc}\n \n )}\n \n ))}\n
    \n \n \n );\n};\n\nOptionsList.propTypes = {\n options: PropTypes.arrayOf(Object),\n showOptions: PropTypes.bool,\n handleOptionSelection: PropTypes.func,\n getThemeClasses: PropTypes.func,\n setShowOptions: PropTypes.func,\n containerRef: PropTypes.instanceOf(Object),\n allowSearch: PropTypes.bool,\n initialSearchValue: PropTypes.string,\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nexport const StringBuilderFooter = (props) => {\n const {\n note, error, inputInFocus, stringBuilderHeight, dropdownTriggerKey,\n } = props;\n return (\n \n {inputInFocus && !error && (\n

    \n \n Enter\n {dropdownTriggerKey}\n to add any parameter\n \n

    \n )}\n {note &&

    {note}

    }\n {error && error !== 'true' && error !== 'false' && (\n

    {error}

    \n )}\n \n );\n};\n\nStringBuilderFooter.propTypes = {\n note: PropTypes.string,\n error: PropTypes.string,\n dropdownTriggerKey: PropTypes.string,\n inputInFocus: PropTypes.bool,\n stringBuilderHeight: PropTypes.number,\n};\n","import React, { useEffect, useState, useRef } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { usePrevious } from '../../../hooks';\n\nimport { StringInput } from './js/string-input';\nimport { TokenizedString } from './js/tokenized-string';\nimport { OptionsList } from './js/options-list';\nimport { StringBuilderFooter } from './js/string-builder-footer';\nimport { stringToTokenString, setCursorPos } from './js/service';\n\n/**\n * - String builder component used to build one single string using the given options.\n * - This component can be useful from UX perspective,\n * when user needs to build any string which might contain complex values which are error prone.\n * - `` abstracts the complex values by supplying them\n * as selectable options in more user friendly format with description for user.\n * - Wire-frames : https://miro.com/app/board/o9J_kipLWwA=/\n */\n\nfunction StringBuilder(props) {\n const {\n options,\n onChange,\n value,\n theme,\n error,\n disabled,\n readOnly,\n note,\n label,\n labelwidth,\n placeholder,\n allowSearch,\n dropdownTriggerKey,\n invalidTokenRegex,\n name,\n wrapperClassName = '',\n } = props;\n const [tokenValue, setTokenValue] = useState(value);\n const [stringBuilderHeight, setStringBuilderHeight] = useState();\n const [showOptions, setShowOptions] = useState(false);\n const [tokenString, setTokenString] = useState(stringToTokenString(value, options));\n const [contextMaxLength, setContentMaxLength] = useState(\n tokenValue.length + 5,\n );\n const [tokens, setTokens] = useState([]);\n const [prevTokenValue, setPrevTokenValue] = useState();\n const [inputInFocus, setInputInFocus] = useState(false);\n const [initialSearchValue, setInitialSearchValue] = useState('');\n const [selectedInvalidToken, setSelectedInvalidToken] = useState(null);\n\n const prevTokenString = usePrevious(tokenString);\n\n const containerRef = useRef();\n const inputRef = useRef();\n\n // Execute callback on value change\n useEffect(() => {\n if (onChange) {\n onChange(tokenValue.replaceAll(' ', ''));\n }\n }, [tokenValue]);\n\n useEffect(() => {\n const tempVal = invalidTokenRegex ? value.replaceAll(invalidTokenRegex, ' $& ') : value;\n setTokenValue(() => tempVal);\n setTokenString(() => stringToTokenString(tempVal, options));\n }, [value]);\n\n /**\n * Split string into tokens and set string value w/o __TOKEN__\n * Tokens are used to render a styled tokens using ``\n */\n useEffect(() => {\n const splitTokens = tokenString.split(/__TOKEN__(.*?)__TOKEN__/g);\n const splitTokensStr = splitTokens.join('');\n setTokens(() => splitTokens);\n setTokenValue(() => splitTokensStr);\n setPrevTokenValue(() => splitTokensStr);\n }, [tokenString]);\n\n useEffect(() => {\n // Auto Grow Input\n if (contextMaxLength - 3 < tokenValue.length) {\n const newHeight = inputRef.current.scrollHeight + 3;\n setStringBuilderHeight(() => newHeight);\n setContentMaxLength(() => contextMaxLength + 25);\n }\n }, [tokenString, tokenValue]);\n\n /**\n *\n * @param {*} option : Option object for selected option from dropdown\n * When user selects an option append and prepend `__TOKEN__` to detect the token,\n * so they can be styled or manipulated later\n */\n const handleOptionSelection = (option) => {\n let newInput = '';\n const { selectionStart } = inputRef.current;\n if (prevTokenString && prevTokenString !== value && !selectedInvalidToken) {\n /* eslint prefer-destructuring: [\"error\", {VariableDeclarator: {object: true}}] */\n newInput = prevTokenString + tokenValue.split(prevTokenValue)[1];\n }\n let tokenizedString = '';\n // Adding token in Middle\n if (selectionStart !== tokenValue.length && !selectedInvalidToken) {\n const newTokenValue = tokenValue.slice(0, selectionStart)\n + option.id\n + tokenValue.slice(selectionStart);\n tokenizedString = stringToTokenString(newTokenValue, options);\n setCursorPos(inputRef, selectionStart + option.id.length);\n } else {\n tokenizedString = `${newInput || tokenValue}__TOKEN__${\n option.id\n }__TOKEN__`;\n }\n if (selectedInvalidToken) {\n tokenizedString = tokenString.replace(\n ` ${selectedInvalidToken} `,\n `__TOKEN__${option.id}__TOKEN__`,\n );\n setSelectedInvalidToken(() => null);\n setInitialSearchValue(() => '');\n }\n setTokenString(() => tokenizedString);\n setShowOptions(() => false);\n setTimeout(() => {\n inputRef.current.focus();\n }, 20);\n };\n\n const getThemeClasses = () => {\n const themes = theme ? theme.split(' ') : [];\n return themes.map((iTheme) => `tyk-form-group--${iTheme}`);\n };\n\n const getCssClasses = () => [\n 'tyk-form-group',\n ...getThemeClasses(),\n error && 'has-error',\n disabled && 'disabled',\n ]\n .filter(Boolean)\n .join(' ');\n\n const findInvalidTokenSubstitute = (invalidToken) => {\n setSelectedInvalidToken(() => invalidToken);\n setInitialSearchValue(() => invalidToken.replace(/[^a-zA-Z ]/g, ''));\n setShowOptions(() => true);\n };\n\n return (\n
    \n
    \n {label && (\n \n )}\n {!readOnly && (\n
    \n \n \n \n \n \n
    \n
    \n )}\n {\n readOnly &&
    {value || '-'}
    \n }\n
    \n \n );\n}\n\nStringBuilder.propTypes = {\n /** Options to render in the list */\n options: PropTypes.arrayOf(\n PropTypes.shape({\n /** id is the value that will be appended to the string on selection */\n id: PropTypes.string.isRequired,\n /** name of option (view) */\n name: PropTypes.string.isRequired,\n /** to style / highlight the token */\n className: PropTypes.string,\n /** description of option */\n desc: PropTypes.string,\n }),\n ),\n /** Callback executed on change of string value */\n onChange: PropTypes.func,\n /** Initial value */\n value: PropTypes.string,\n /** Disable input */\n disabled: PropTypes.bool,\n /** Read Only prop removes the form element and displays just the value */\n readOnly: PropTypes.bool,\n /** Show error state (w/ or w/o message) */\n error: PropTypes.string,\n /** Component theme */\n theme: PropTypes.string,\n /** Footnote for component */\n note: PropTypes.string,\n /** Label for component */\n label: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.func,\n PropTypes.string,\n ]),\n /** Label Width for component */\n labelwidth: PropTypes.string,\n /** Placeholder for component */\n placeholder: PropTypes.string,\n /** Key To trigger dropdown */\n dropdownTriggerKey: PropTypes.string,\n /** Regex to detect invalid tokens in the value */\n invalidTokenRegex: PropTypes.instanceOf(RegExp),\n /** Allow users to search from options */\n allowSearch: PropTypes.bool,\n name: PropTypes.string,\n wrapperClassName: PropTypes.string,\n};\n\nStringBuilder.defaultProps = {\n onChange: null,\n value: '',\n options: [],\n theme: 'default',\n};\n\nexport default StringBuilder;\n","const config = {\n FORM_DEBOUNCE: 200,\n};\n\nexport function setConfig(key, val) {\n config[key] = val;\n}\n\nexport default config;\n","import React, { useCallback, useEffect, useState } from 'react';\n\nimport config from '../config/config';\n\nfunction getValueFromPath(obj, path) {\n // turn 'aaa.qqq[2].bbb[5][3].mmm' into ['aaa', 'qqq', '2', 'bbb', '5', '3', 'mmm']\n const indexes = path.split(/[\\][.]/).filter(Boolean);\n return indexes.reduce((acc, v) => (acc ? acc[v] : acc), obj);\n}\n\nfunction debounce(f, limit) {\n let timeoutId;\n return (...args) => {\n clearTimeout(timeoutId);\n timeoutId = setTimeout(f, limit, ...args);\n };\n}\n\n/* eslint-disable react/prop-types, react/function-component-definition */\n/**\n * A wrapper function that \"prepares\" a tyk-ui form component to be used with the formik library.\n * It handles things like setting the value of the component, change events, error state,\n * and also has a default debounce time for when the change event is triggered.\n */\nconst wrapper = (Component, options) => ({ field, form, ...properties }) => {\n const DEFAULT_DEBOUNCE_TIME_MS = typeof config.FORM_DEBOUNCE === 'number' ? config.FORM_DEBOUNCE : 200;\n const [myValue, setMyValue] = useState(field.value);\n const opts = {\n getOnChangeProps: () => ({}),\n hasIsFieldProp: false,\n ...options,\n };\n\n const executeDebounced = useCallback((() => {\n const fn = (f) => f();\n if (\n properties.debounce === false\n || (config.FORM_DEBOUNCE === false && !properties.debounce)\n ) {\n return fn;\n }\n const timeout = typeof properties.debounce === 'number'\n ? properties.debounce\n : DEFAULT_DEBOUNCE_TIME_MS;\n return debounce(fn, timeout);\n })(), []);\n\n const getValue = (v) => {\n if (v && v.target) {\n if (v.target.nodeName === 'INPUT' && (v.target.type === 'checkbox' || v.target.type === 'radio')) {\n return v.target.checked;\n }\n return v.target.value;\n }\n return v;\n };\n\n const onChange = (valueOrEvent) => {\n const value = getValue(valueOrEvent);\n const onChangeProps = opts.getOnChangeProps(value, field, form, properties);\n\n const newValue = onChangeProps.value || properties.value || value;\n executeDebounced(() => {\n if (typeof properties.onChange === 'function') {\n properties.onChange(newValue);\n }\n field.onChange({ target: { name: field.name, value: newValue, ...onChangeProps } });\n });\n setMyValue(newValue);\n };\n\n const formError = (getValueFromPath(form.touched, field.name) || Boolean(form.submitCount))\n && getValueFromPath(form.errors, field.name);\n const error = typeof formError === 'string' ? formError : '';\n\n useEffect(() => {\n setMyValue(field.value);\n }, [field.value]);\n\n // eslint-disable-next-line no-param-reassign\n if (form.status?.disabled) properties.disabled = true;\n\n const componentProps = { ...properties };\n delete componentProps.debounce;\n\n return (\n \n );\n};\n\nexport default wrapper;\n","import wrapper from '../../../utils/formik';\nimport Checkbox from '../../components/Checkbox';\n\nexport default wrapper(Checkbox, {\n getOnChangeProps: (value) => ({\n checked: value,\n }),\n});\n","import wrapper from '../../../utils/formik';\nimport CodeEditor from '../../components/CodeEditor';\n\nexport default wrapper(CodeEditor);\n","import wrapper from '../../../utils/formik';\nimport Combobox from '../../components/Combobox';\n\nexport default wrapper(Combobox);\n","import wrapper from '../../../utils/formik';\nimport Combobox2 from '../../components/Combobox2';\n\nexport default wrapper(Combobox2);\n","import wrapper from '../../../utils/formik';\nimport DatePicker from '../../components/DatePicker';\n\nexport default wrapper(DatePicker);\n","import wrapper from '../../../utils/formik';\nimport EditableList from '../../components/EditableList';\n\nexport default wrapper(EditableList, {\n getOnChangeProps: value => ({ value: value || [] }),\n});\n","import wrapper from '../../../utils/formik';\nimport EditableList2 from '../../components/EditableList2';\n\nexport default wrapper(EditableList2);\n","import wrapper from '../../../utils/formik';\nimport FileInput from '../../components/FileInput';\n\nexport default wrapper(FileInput);\n","import wrapper from '../../../utils/formik';\nimport Input from '../../components/Input';\n\nexport default wrapper(Input, { hasIsFieldProp: true });\n","import wrapper from '../../../utils/formik';\nimport Input2 from '../../components/Input2';\n\nexport default wrapper(Input2);\n","import wrapper from '../../../utils/formik';\nimport MultiSelect from '../../components/Multiselect';\n\nexport default wrapper(MultiSelect);\n","import wrapper from '../../../utils/formik';\nimport Radio from '../../components/Radio';\n\nexport default wrapper(Radio, {\n getOnChangeProps: (value, field, form, properties) => ({\n checked: value === properties.value,\n value: properties.value,\n }),\n});\n","import wrapper from '../../../utils/formik';\nimport Select from '../../components/Select';\n\nexport default wrapper(Select, { hasIsFieldProp: true });\n","import wrapper from '../../../utils/formik';\nimport SelectableList from '../../components/SelectableList';\n\nexport default wrapper(SelectableList);\n","import wrapper from '../../../utils/formik';\nimport Textarea from '../../components/Textarea';\n\nexport default wrapper(Textarea);\n","import wrapper from '../../../utils/formik';\nimport Toggle from '../../components/Toggle';\n\nexport default wrapper(Toggle);\n","import wrapper from '../../../utils/formik';\nimport StringBuilder from '../../components/StringBuilder';\n\nexport default wrapper(StringBuilder);\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { fromJS } from 'immutable';\n\nimport CodeEditor from '../../components/CodeEditor';\n\nexport default class FieldCodeEditor extends Component {\n static propTypes = {\n input: PropTypes.instanceOf(Object),\n meta: PropTypes.instanceOf(Object),\n validationmessages: PropTypes.instanceOf(Object),\n };\n\n constructor(props) {\n super(props);\n\n this.handleOnChange = this.handleOnChange.bind(this);\n }\n\n getInputError() {\n const { meta, validationmessages } = this.props;\n const { touched, error, warning } = meta;\n let message = null;\n\n if (touched && error && validationmessages[error]) {\n message = validationmessages[error];\n } else if (touched && warning) {\n message = 'warning';\n }\n\n return message;\n }\n\n handleOnChange(value) {\n const { input } = this.prop;\n const { onChange } = input;\n\n onChange(fromJS(value));\n }\n\n render() {\n const { input, ...rest } = this.props;\n\n return (\n \n );\n }\n}\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { fromJS } from 'immutable';\n\nimport Combobox from '../../components/Combobox';\n\nexport default class FieldCombobox extends Component {\n static propTypes = {\n meta: PropTypes.instanceOf(Object),\n input: PropTypes.instanceOf(Object),\n validationmessages: PropTypes.instanceOf(Object),\n }\n\n constructor(props) {\n super(props);\n\n this.handleOnChange = this.handleOnChange.bind(this);\n }\n\n getComboboxError() {\n const { meta, validationmessages } = this.props;\n const { touched, error, warning } = meta;\n let message = null;\n\n if (touched && error && validationmessages[error]) {\n message = validationmessages[error];\n } else if (touched && warning) {\n message = 'warning';\n }\n\n return message;\n }\n\n handleOnChange(value) {\n const { input } = this.props;\n const { onChange } = input;\n\n onChange(fromJS(value));\n }\n\n render() {\n const { ...props } = this.props;\n\n return (\n \n );\n }\n}\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { fromJS } from 'immutable';\n\nimport Dropdown from '../../components/Dropdown';\n\nexport default class FieldDropdown extends Component {\n static propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n input: PropTypes.instanceOf(Object),\n };\n\n constructor(props) {\n super(props);\n\n this.handleOnChange = this.handleOnChange.bind(this);\n }\n\n handleOnChange(value) {\n const { input } = this.props;\n const { onChange } = input;\n\n onChange(fromJS(value));\n }\n\n render() {\n const {\n children,\n input,\n ...rest\n } = this.props;\n\n return (\n \n {children}\n \n );\n }\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport Pagination from '../../components/Pagination';\n\nconst FieldPagination = (props) => {\n const { input, ...rest } = props;\n\n return (\n \n );\n};\n\nFieldPagination.propTypes = {\n input: PropTypes.instanceOf(Object),\n};\n\nexport default FieldPagination;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { fromJS } from 'immutable';\n\nimport Combobox2 from '../../components/Combobox2';\n\nconst FieldCombobox2 = (props) => {\n const { input, meta, validationmessages } = props;\n\n const getComboboxError = () => {\n const { touched, error, warning } = meta;\n let message = null;\n\n if (touched && error && validationmessages[error]) {\n message = validationmessages[error];\n } else if (touched && warning) {\n message = 'warning';\n }\n return message;\n };\n\n const handleOnChange = (value) => {\n const { onChange } = input;\n onChange(fromJS(value));\n };\n\n return (\n \n );\n};\n\nFieldCombobox2.propTypes = {\n meta: PropTypes.instanceOf(Object),\n input: PropTypes.instanceOf(Object),\n validationmessages: PropTypes.instanceOf(Object),\n};\n\nexport default FieldCombobox2;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { fromJS } from 'immutable';\n\nimport DatePicker from '../../components/DatePicker';\n\nconst FormDatePicker = (props) => {\n const {\n input,\n meta,\n validationmessages,\n ...rest\n } = props;\n\n const getDatePickerError = () => {\n const { touched, error } = meta;\n let message = null;\n\n if (touched && error && validationmessages[error]) {\n message = validationmessages[error];\n }\n\n return message;\n };\n\n const handleOnChange = (value) => {\n const { onChange } = input;\n\n onChange(fromJS(value));\n };\n\n return (\n \n );\n};\n\nFormDatePicker.propTypes = {\n meta: PropTypes.instanceOf(Object),\n input: PropTypes.instanceOf(Object),\n validationmessages: PropTypes.instanceOf(Object),\n};\n\nexport default FormDatePicker;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { fromJS } from 'immutable';\n\nimport EditableList from '../../components/EditableList';\n\nexport default class FieldEditableList extends Component {\n static propTypes = {\n input: PropTypes.instanceOf(Object),\n meta: PropTypes.instanceOf(Object),\n validationmessages: PropTypes.instanceOf(Object),\n };\n\n constructor(props) {\n super(props);\n\n this.handleOnChange = this.handleOnChange.bind(this);\n }\n\n getEditableListError() {\n const { meta, validationmessages } = this.props;\n const { touched, error } = meta;\n let message = null;\n\n if (touched && error && validationmessages[error]) {\n message = validationmessages[error];\n }\n\n return message;\n }\n\n handleOnChange(value) {\n const { input } = this.props;\n const { onChange } = input;\n\n onChange(fromJS(value));\n }\n\n render() {\n const { ...props } = this.props;\n\n return (\n \n );\n }\n}\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\nimport FileInput from '../../components/FileInput';\n\nexport default class FieldFileInput extends Component {\n static propTypes = {\n input: PropTypes.instanceOf(Object),\n meta: PropTypes.instanceOf(Object),\n validationmessages: PropTypes.instanceOf(Object),\n };\n\n getInputError() {\n const { meta, validationmessages } = this.props;\n const { touched, error, warning } = meta;\n let message = null;\n\n if (touched && error && validationmessages[error]) {\n message = validationmessages[error];\n } else if (touched && warning) {\n message = 'warning';\n }\n\n return message;\n }\n\n render() {\n const { input, ...rest } = this.props;\n\n return (\n \n );\n }\n}\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Input from '../../components/Input';\n\nexport default class FieldInput extends Component {\n static propTypes = {\n meta: PropTypes.instanceOf(Object),\n input: PropTypes.instanceOf(Object),\n validationmessages: PropTypes.instanceOf(Object),\n }\n\n getInputError() {\n const { meta, validationmessages } = this.props;\n const { touched, error, warning } = meta;\n let message = null;\n\n if (touched && error && validationmessages[error]) {\n message = validationmessages[error];\n } else if (touched && warning) {\n message = 'warning';\n }\n\n return message;\n }\n\n render() {\n const { input, ...rest } = this.props;\n\n return (\n \n );\n }\n}\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { fromJS } from 'immutable';\n\nimport Multiselect from '../../components/Multiselect';\n\nexport default class FieldMultiselect extends Component {\n static propTypes = {\n input: PropTypes.instanceOf(Object),\n meta: PropTypes.instanceOf(Object),\n validationmessages: PropTypes.instanceOf(Object),\n }\n\n constructor(props) {\n super(props);\n\n this.handleOnChange = this.handleOnChange.bind(this);\n }\n\n getMultiselectError() {\n const { meta, validationmessages } = this.props;\n const { touched, error, warning } = meta;\n let message = null;\n\n if (touched && error && validationmessages[error]) {\n message = validationmessages[error];\n } else if (touched && warning) {\n message = 'warning';\n }\n\n return message;\n }\n\n handleOnChange(value) {\n const { input } = this.props;\n const { onChange } = input;\n\n onChange(fromJS(value));\n }\n\n render() {\n const { ...props } = this.props;\n\n return (\n \n );\n }\n}\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { fromJS } from 'immutable';\n\nimport Select from '../../components/Select';\n\nexport default class FieldSelect extends Component {\n static propTypes = {\n input: PropTypes.instanceOf(Object),\n meta: PropTypes.instanceOf(Object),\n validationmessages: PropTypes.instanceOf(Object),\n };\n\n constructor(props) {\n super(props);\n\n this.handleEvent = this.handleEvent.bind(this);\n }\n\n getSelectError() {\n const { meta, validationmessages } = this.props;\n const { touched, error, warning } = meta;\n let message = null;\n\n if (touched && error && validationmessages[error]) {\n message = validationmessages[error];\n } else if (touched && warning) {\n message = 'warning';\n }\n\n return message;\n }\n\n handleEvent(selectValue) {\n const { input } = this.props;\n const { onChange, value } = input;\n\n onChange(fromJS(selectValue !== undefined ? selectValue : value));\n }\n\n render() {\n const { input, ...rest } = this.props;\n\n return (\n \n );\n }\n}\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { fromJS } from 'immutable';\n\nimport SelectableList from '../../components/SelectableList';\n\nexport default class FieldSelectableList extends Component {\n static propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.node,\n ]),\n onChange: PropTypes.func,\n input: PropTypes.instanceOf(Object),\n };\n\n constructor(props) {\n super(props);\n\n this.handleOnChange = this.handleOnChange.bind(this);\n }\n\n handleOnChange(value) {\n const { input } = this.props;\n\n input.onChange(fromJS(value));\n }\n\n render() {\n const { children, ...props } = this.props;\n\n return (\n \n );\n }\n}\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { fromJS } from 'immutable';\n\nimport Toggle from '../../components/Toggle';\n\nexport default class FieldToggle extends Component {\n static propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.node,\n ]),\n onChange: PropTypes.func,\n input: PropTypes.instanceOf(Object),\n };\n\n constructor(props) {\n super(props);\n\n this.handleOnChange = this.handleOnChange.bind(this);\n }\n\n handleOnChange(value) {\n const { input } = this.props;\n\n input.onChange(fromJS(value));\n }\n\n render() {\n const { children, ...props } = this.props;\n\n return (\n \n {children}\n \n );\n }\n}\n"],"names":["ACE_NAMESPACE","global","define","module","deps","payload","_require","parentId","callback","lookup","params","i","l","dep","require","packagedModule","normalizeModule","moduleName","chunks","base","previous","exports","mod","req","returnValue","exportAce","ns","root","defineProp","obj","name","val","searchString","position","subjectString","lastIndex","count","result","string","str","target","output","index","source","key","o","k","predicate","len","thisArg","kValue","item","value","O","start","relativeStart","end","relativeEnd","final","deepCopy","copy","a","trimBeginRegexp","trimEndRegexp","array","arr","map","props","regExp","matches","fcn","timer","deferred","timeout","defaultTimeout","_self","e","error","_navigator","os","ua","appName","useragent","XHTML_NS","buildDom","parent","refs","txt","els","ch","el","options","childIndex","n","doc","tag","element","textContent","classes","add","node","className","include","id","sheets","strictCSP","cssCache","insertPendingStyles","cache","importCssString","cssText","container","style","uri","inner","outer","body","noScrollbar","withScrollbar","styles","property","div","tx","ty","dom","url","xhr","path","head","s","_","isAbort","ctor","superCtor","mixin","proto","EventEmitter","stopPropagation","preventDefault","eventName","listeners","defaultHandler","newCallback","resolve","handlers","old","disabled","capturing","msg","data","oop","reportError","optionsProvider","optList","optionNames","opt","warn","message","messages","AppConfig","opts","optionHash","translated","lang","net","component","parts","sep","re","subst","loader","cb","customLoader","onLoad","loadedModule","moduleType","load","afterLoad","err","reportErrorIfPathIsNotConfigured","config","ace","init","packaged","scriptOptions","scriptUrl","currentScript","currentDocument","scripts","script","src","attributes","j","attr","deHyphenate","m","m1","comparePoints","p1","p2","Range","startRow","startColumn","endRow","endColumn","range","row","column","cmp","p","firstRow","lastRow","session","screenPosStart","screenPosEnd","Keys","ret","mods","x","keyCode","keyString","keys","pressedKeys","ts","activeListenerOptions","detectListenerOptionsSupport","getListenerOptions","EventListener","elem","type","removeListener","addListener","destroyer","eventHandler","releaseCaptureHandler","ownerDocument","onMouseUp","factor","deltaX","deltaY","linePixels","pagePixels","elements","timeouts","callbackName","clicks","startX","startY","eventNames","onMousedown","isNewClick","getModifierHash","normalizeCommandKeys","hashId","location","dt","lastKeyDownKeyCode","lastDefaultPrevented","resetPressedKeys","postMessageId","win","messageName","listener","handler","delay","$cancelT","event","nls","clipboard","BROKEN_SETDATA","USE_IE_MIME_TYPE","HAS_FOCUS_ARGS","MAX_LINE_LENGTH","KEYS","MODS","isIOS","valueResetRegex","isMobile","TextInput","parentNode","host","text","copied","pasted","inComposition","sendingText","tempStyle","commandMode","ignoreFocusEvents","lastValue","lastSelectionStart","lastSelectionEnd","lastRestoreEnd","rowStart","rowEnd","numberOfExtraLines","isFocused","number","resetSelection","top","isTransformed","ancestors","t","curOp","commandName","isUserAction","onCompositionEnd","positionToSelection","selection","newValue","selectionStart","selectionEnd","afterContextMenu","line","lines","prevLine","nextLine","isAllSelected","onSelect","inputHandler","sendText","fromInput","extendLeft","extendRight","inserted","restoreStart","restoreEnd","endIndex","shouldReset","onInput","onCompositionUpdate","handleClipboardData","forceIEMime","clipboardData","mime","doCopy","isCut","onCut","onCopy","onPaste","onCompositionStart","cancelComposition","syncComposition","onKeyup","readOnly","bringToFront","rect","left","maxTop","move","closeTimeout","onContextMenuClose","onContextMenu","addIosSelectionHandler","typingResetTimeout","typing","detectArrowKeys","modifier","command","_isMobile","_isIOS","DRAG_OFFSET","SCROLL_COOLDOWN_T","DefaultHandlers","mouseHandler","editor","ev","inSelection","pos","button","selectionRange","selectionEmpty","waitForClickSelection","anchor","cursor","orientedRange","calcRangeOrientation","unitName","cmpStart","cmpEnd","distance","calcDistance","time","prevScroll","vx","vy","direction","canScroll","isSlower","ax","ay","bx","by","__extends","extendStatics","d","b","__","__values","CLASSNAME","Tooltip","html","y","theme","PopupManager","popup","e_1","_a","e_2","_b","visiblepopups","_c","_d","shouldDisplay","visiblepopups_1","visiblepopups_1_1","visiblePopup","e_2_1","e_1_1","popupA","popupB","rectA","rectB","popupManager","HoverTooltip","_super","_this","isMousePressed","docPos","screenPos","clippedPos","domNode","startingEvent","renderer","labelHeight","isAbove","GutterHandler","gutter","tooltip","GutterTooltip","gutterRegion","tooltipTimeout","mouseEvent","showTooltip","maxRow","screenRow","hideTooltip","moveTooltip","gutterRow","gutterCell","gutterElement","windowWidth","windowHeight","width","height","annotationsInRow","annotation","fold","annotationsInFold","mostSevereAnnotationInFoldType","annotationType","summaryFoldedAnnotations","annotationMessages","iconClassName","tooltipContent","annotations","summary","annotationTypes","annotationTypes_1","annotationTypes_1_1","label","MouseEvent","domEvent","documentRow","screenTopRow","AUTOSCROLL_DELAY","SCROLL_CURSOR_DELAY","SCROLL_CURSOR_HYSTERESIS","DragdropHandler","dragImage","mouseTarget","dragSelectionMarker","timerId","dragCursor","counter","dragOperation","isInternal","autoScrollStartTime","cursorMovedTime","cursorPointOnCaretMoved","self","dataTransfer","dropEffect","canAccept","addDragMarker","getDropEffect","onMouseMoveTimer","clearDragMarker","dropData","scrollCursorIntoView","prevCursor","now","vMovement","hMovement","autoScroll","lineHeight","characterWidth","editorRect","offsets","nearestXOffset","nearestYOffset","scrollCursor","vScroll","hScroll","onDragInterval","onMouseMove","types","copyAllowed","moveAllowed","copyModifierState","effectAllowed","interval","cursorStyle","clickCount","eventTarget","mode","touchStartT","lastT","longTouchTimer","animationTimer","animationSteps","vX","vY","pressed","contextMenu","createContextMenu","isOpen","updateMenu","selected","hasUndo","handleClick","action","showContextMenu","pagePos","leftOffset","scrollLeft","hideContextMenu","handleLongTap","switchToSelectionMode","textarea","touches","h","w","touchObj","cursorPos","anchorPos","offsetTop","offsetLeft","weightedDistance","diff1","diff2","animate","wheelX","wheelY","oldScrollTop","DefaultGutterHandler","addTouchListeners","MouseHandler","focusEditor","windowBlurred","gutterEl","character","state","mouseMoveHandler","onCaptureEnd","onOperationEnd","onCaptureInterval","stop","FoldHandler","keyUtil","KeyBinding","kb","toExecute","success","commands","ArabicAlefBetIntervalsBegine","ArabicAlefBetIntervalsEnd","dir","hiLevel","lastArabic","hasUBAT_AL","hasUBAT_B","hasUBAT_S","hasBlockSep","hasSegSep","impTab_LTR","impTab_RTL","LTR","RTL","L","R","EN","AN","ON","B","S","AL","WS","CS","ES","ET","NSM","LRE","RLE","PDF","LRO","RLO","BN","UnicodeTBL00","UnicodeTBL20","_computeLevels","chars","levels","charTypes","impTab","prevState","newClass","newLevel","newState","cond","condPos","ix","_getCharacterType","_getCharClass","_invertLevel","lev","_array","lo","hi","tmp","cType","wType","nType","c","rtlCandidate","uc","_isArabicDiacritics","textCharTypes","isRtl","logicalFromVisual","bidiLevels","logIdx","rowMap","bidiUtil","bidiRE","BidiHandler","docRow","splitIndex","delta","rowCache","currentIndex","prevIndex","isLastRow","endOfLine","splits","shift","size","fontMetrics","bidiCharWidth","showInvisibles","eolChar","isRtlDir","col","leftBoundary","logicalIdx","visualIdx","startCol","endCol","level","selections","offset","selColMin","selColMax","isSelected","isSelectedPrev","visIdx","posX","charWidth","Selection","lead","reverse","anchorRow","anchorColumn","cursorRow","cursorColumn","wasEmpty","wasMultiselect","mover","excludeLastChar","foldLine","tabSize","firstColumnPosition","beforeCursor","leadingSpace","lineEnd","textEnd","rightOfCursor","leftOfCursor","whitespaceRe","tokenRe","rows","offsetX","widget","keepDesiredColumn","r","func","r1","MAX_TOKEN_COUNT","Tokenizer","rules","ruleRegExps","matchTotal","mapping","flag","splitterRurles","rule","adjustedregex","matchcount","match","digit","values","tokens","stack","inChClass","lastCapture","esc","parenOpen","parenClose","square","startState","currentState","matchAttempts","token","skipped","TextHighlightRules","prefix","HighlightRules","escapeRules","states","append","embedRules","addRules","pushState","popState","processState","toInsert","next","stateName","includeName","args","defaultToken","ignoreCase","splitChar","keywords","list","word","Behaviour","behaviours","filter","TokenIterator","initialRow","initialColumn","rowCount","rowTokens","tokenIndex","SAFE_INSERT_IN_TOKENS","SAFE_INSERT_BEFORE_TOKENS","context","contextCache","defaultQuotes","initContext","getWrapped","opening","closing","rowDiff","CstyleBehaviour","rightChar","matching","openBracePos","next_indent","indent","quotes","quote","leftChar","rightToken","stringBefore","stringAfter","pair","wordRe","isWordBefore","isWordAfter","pairQuotesAfter","shouldPairQuotes","charBefore","iterator","iterator2","bracket","wordChars","code","unicode","Mode","ignoreBlankLines","shouldRemove","minIndent","insertAtTabStop","regexpStart","lineCommentStart","uncomment","shouldInsertSpace","commentWithSpace","comment","testRemove","before","after","spaces","lineCommentEnd","regexpEnd","iter","fun","minEmptyLength","sel","initialRange","colDiff","startRange","endRange","tab","input","delegations","scope","functionName","method","language","split","param","completionKeywords","ruleItr","aLength","throwDeltaError","errorText","positionInDocument","docLines","validateDelta","numRangeRows","numRangeLastLineChars","doNotValidate","Anchor","point","$getTransformedPoint","noClip","$pointsInOrder","point1","point2","equalPointsInOrder","bColIsAfter","moveIfEqual","deltaIsInsert","deltaRowShift","deltaColShift","deltaStart","deltaEnd","applyDelta","Document","textOrLines","newLineMode","length","deleteFirstNewLine","deleteLastNewLine","deletedLines","deltas","isInsert","docLength","MAX","from","to","chunk","newlineLength","BackgroundTokenizer","tokenizer","workerStart","currentLine","endLine","startLine","processedLines","SearchHighlight","clazz","markerLayer","renderedMarkerRanges","ranges","rangeToAddMarkerTo","rangeAsString","UndoManager","allowMerge","undoStackLength","rev","dontSelect","rearrangeUndoStack","deltaSet","undoSelectionRange","diff","rebaseRedoStack","redoSelectionRange","nextDelta","json","stringifyDelta","swapped","swapGroups","$updateMarkers","rowShift","colShift","cmp2","clonePos","cloneDelta","stringifyRange","swap","d1","d2","i1","i2","ds1","ds2","xform","c1","splitDelta","shiftPos","rowsBefore","otherLines","rest","moveDeltasByOne","redoStack","xformed","deltaSets","FoldLine","foldData","folds","last","lastEnd","isNewRow","foldBefore","newFoldLine","foldLineNext","idx","lastFoldEndColumn","RangeList","excludeEdges","startIndex","removed","clipped","lineDif","Fold","placeholder","subFold","consumeRange","afterStart","firstConsumed","consumedFolds","restoreRange","consumePoint","restorePoint","Folding","side","foldLines","foundFolds","trim","lastFold","startFoldLine","first","added","startFold","endFold","cloneFolds","expandInner","outermostFolds","startFoldRow","textLine","lastColumn","fd","tryToUnfold","bracketPos","depth","test","foldWidgets","foldMode","ignoreCurrent","fw","firstRange","toggleParent","BracketMatch","chr","charBeforeCursor","isBackwards","bracketsRegExp","typeRe","openBracket","valueIndex","closingBracket","valueLength","prevToken","found","backward","currentTag","openTagStart","openTagName","foundOpenTagEnd","openTagEnd","closeTagStart","closeTagName","closeTagEnd","stepCount","tmpToken","TextMode","EditSession","cacheArray","low","mid","removedFolds","undoManager","editSession","navigateWithinSoftTabs","overwrite","inFront","marker","markerId","markers","highlight","inToken","wordRange","useWorker","$isPlaceholder","oldMode","onReloadTokenizer","scrollTop","force","longestScreenLine","foldIndex","foldStart","enable","isUndo","fromRange","toPosition","toRange","collDiff","oldStart","newStart","indentString","rowRange","deleteRange","useWrapMode","min","max","desiredLimit","$printMargin","limits","wrapLimit","limit","foldLineBefore","wrapData","walkTokens","PLACEHOLDER_START","PLACEHOLDER_BODY","displayLength","lastSplit","lastDocSplit","isCode","indentedSoftWrap","maxIndent","getWrapIndent","indentation","SPACE","TAB","TAB_SPACE","addSplit","minSplit","PUNCTUATION","CHAR_EXT","isFullWidth","CHAR","maxScreenColumn","screenColumn","docColumn","rowLength","doCache","wrapIndent","foldStartRow","wrapRow","screenRowOffset","screenRows","fm","Search","sr","sc","er","ec","prevRange","replacement","$disableFakeMultiline","needle","addWordBoundary","backwards","skipCurrent","forEach","forEachInLine","supportsLookbehind","wordBoundary","firstChar","wordRegExp","needleArray","lastChar","KEY_MODS","MultiHashHandler","platform","$singleCommand","keepCommand","ckb","keyId","cmdGroup","keyPart","chain","binding","getPosition","other","otherPos","keyList","HashHandler","CommandManager","bindKey","mac","cutLine","firstLineEndCol","selectedText","selectedCount","insertLine","curLine","newRanges","LineWidgets","lineWidgets","hide","noWidgets","w1","changedWidgets","GutterKeyboardHandler","nearestFoldIndex","nearestAnnotationIndex","GutterKeyboardEvent","rowFoldingWidget","isRowFullyVisible","isIconVisible","cell","foldWidget","desinationLane","annotationIndex","foldWidgetIndex","gutterKeyboardHandler","defaultCommands","Editor","commandEvent","scrollIntoView","prev","mergeableCommands","shouldMerge","keyboardHandler","oldSession","tagNamesRanges","markerType","wrap","wordWithBoundary","nl","copyLine","lineMode","isFullLine","transform","lineState","shouldOutdent","lineIndent","selectedRange","prevLineState","currIndent","composition","applyComposition","speed","dragDelay","shouldHighlight","shouldAnimate","display","showPrintMargin","enabled","show","fade","new_range","originalRange","_numberRx","amount","charRange","nr","fp","decimals","nnr","replaceRange","currWordStart","wordParts","curLength","itLength","that","wordPairs","reg","negate","firstCondition","secondCondition","res","columnPosition","previousPosition","currentPosition","wordParts_1","wordParts_1_1","endPoint","moved","totalDiff","rangeIndex","subRows","compositionState","select","center","expand","tokenCount","matchType","bracketType","brackets","tagsRanges","lineNumber","times","replaced","newRange","shouldScroll","scrollAnchor","onChangeSelection","onBeforeRender","onAfterRender","cursorLayer","relativeNumberRenderer","hasValue","blurCommand","focusOnEnterKeyup","lastLineNumber","Lines","canvasHeight","oldConfig","newConfig","screenTop","screenPage","lineTop","fragment","initElement","Gutter","parentEl","rowInfo","annoText","annoType","onCreateCell","gutterRenderer","firstLineNumber","lastLineText","gutterWidth","padding","cells","oldLastRow","textNode","annotationNode","annotationIconNode","breakpoints","decorations","rowText","foldClass","isClosedFold","foldAnnotationClass","annotationInFold","foldRange","highlightGutterLine","Marker","css","layerConfig","stringBuilder","extraStyle","curr","lineRange","getBorderClass","range1","radiusClass","extraLength","tl","tr","br","bl","textTokens","tokenType","isTextToken","Text","unixMode","EOL_CHAR","measure","tabStr","span","spaceClass","spaceContent","tabClass","tabContent","lineElements","lineElementsIdx","heightChanged","lineElement","lineEl","valueFragment","simpleSpace","controlCharacter","cjkSpace","cjk","cols","initialIndent","elementIndentLevel","bracketHighlight","currentIndent","childNodes","indentLevel","splitChars","overflowEl","lastLineEl","invisibleEl","renderTokens","addTokens","Cursor","cursors","blinking","blinkInterval","smoothBlinking","update","blink","onScreen","cursorLeft","cursorTop","pixelPos","cursorIndex","MAX_SCROLL_H","Scrollbar","classSuffix","isVisible","VScrollBar","HScrollBar","ScrollBar","eType","mousePageY","startTop","onScrollInterval","thumbTop","mousePageX","startLeft","thumbLeft","RenderLoop","onRender","changes","change","CHAR_COUNT","USE_OBSERVER","FontMetrics","isRoot","boldSize","clientPos","elPos","zoom","mul","solve","l1","l2","det","sub","m2","ut","u","f","Decorator","colors","allLineHeight","ctx","compare","priorities","compensateFold","currentY","y1","y2","yCenter","GutterLayer","MarkerLayer","TextLayer","CursorLayer","HScrollBarCustom","VScrollBarCustom","editorCss","VirtualRenderer","textLayer","oldSize","right","availableWidth","containerEl","posTop","posLeft","bottom","sm","alwaysVisible","scrollHeight","scrollerHeight","st","maxHeight","desiredHeight","hideScrollbars","screenLines","longestLine","horizScroll","hScrollChanged","vScrollBefore","minHeight","scrollPastEnd","vScrollChanged","lineCount","firstRowScreen","firstRowHeight","charCount","$viewMargin","newLeft","newTop","topMargin","bottomMargin","currentTop","currentLeft","twoCharsWidth","alignment","fromValue","toValue","steps","x_min","dx","initialScroll","oldSteps","endAnimation","canvasPos","insertPosition","textLines","newToken","$workerBlob","workerUrl","BlobBuilder","blobBuilder","createWorker","blob","URL","blobURL","WorkerClient","worker","topLevelNamespaces","classname","importScripts","normalizePath","tlns","cmd","ex","q","UIWorkerClient","main","emitSync","sender","messageBuffer","workerClient","processNext","callbackId","Main","PlaceHolder","others","mainClass","othersClass","undoStack","lengthDiff","inMainRange","distanceFromStart","newPos","updateMarker","undosRequired","isSamePoint","onMouseDown","alt","ctrl","accel","isMultiSelect","mouseX","mouseY","onMouseSelection","screenAnchor","screenCursor","selectionMode","oldRange","tmpSel","rectSel","blockSelect","newCursor","onMouseSelectionEnd","onSelectionInterval","search","find","$blockChangeEvents","lastRange","includeEmptyLines","xBackwards","startOffsetX","endOffsetX","yBackwards","docEnd","markerList","keepOrder","$byLines","rangeList","cmdResult","anim","buf","additive","skip","screenLead","toRemove","all","words","stopAtFirst","sameRowRanges","fr","lr","guessRange","maxCol","minSpace","spaceOffsets","spaceOffset","forceLeft","isLeftAligned","isRightAligned","startW","textW","endW","alignLeft","alignRight","unAlign","MultiSelect","addAltCursorListeners","altCursor","altDown","reset","FoldMode","foldStyle","startLevel","binarySearch","comparator","findAnnotations","matched","oldWidget","gutterAnno","arrow","Renderer","_id","oldNode","env","is","tabString","singletonTags","blockTags","formatOptions","nextToken","breakBefore","spaceBefore","spaceAfter","tagName","lastDepth","lastIndent","unindent","roundDepth","curlyDepth","curRow","rowsToAdd","abort","indentNextLine","inTag","inCSS","inBlock","parents","caseBody","trimNext","trimLine","trimCode","searchboxCss","MAX_COUNT","SearchBox","showReplaceForm","sb","preventScroll","noMatch","regex","isReplace","$searchBarKb","$closeSearchBarKb","supportType","supportFunction","supportConstant","supportConstantColor","supportConstantFonts","numRe","pseudoElements","pseudoClasses","CssHighlightRules","keywordMapper","MatchingBraceOutdent","propertyMap","CssCompletions","inParens","skipSemicolon","properties","CssBehaviour","BaseFoldMode","commentRegex","forceMultiline","startIndent","subRange","CStyleFoldMode","DocCommentHighlightRules","GolangHighlightRules","builtinTypes","builtinFunctions","builtinConstants","stringEscapeRe","tokenizedLine","endState","JsDocCommentHighlightRules","identifierRe","JavaScriptHighlightRules","kwBeforeRe","escapedRe","comments","JSX","tagRegex","jsxTag","jsxJsRule","results","JsonHighlightRules","JsxHighlightRules","buildinConstants","reserved","PythonHighlightRules","strPre","strRawPre","strFormatPre","strRawFormatPre","decimalInteger","octInteger","hexInteger","binInteger","integer","exponent","fraction","intPart","pointFloat","exponentFloat","floatNumber","stringEscape","PythonFoldMode","outdents","XmlHighlightRules","normalize","XmlBehaviour","rightSpace","tokenEndColumn","tokenRow","tokenColumn","nextIndent","voidElements","optionalEndTags","Tag","tags","XmlFoldMode","___CSS_LOADER_EXPORT___","cssWithMappingToString","content","needLayer","modules","media","dedupe","supports","layer","alreadyImportedModules","_k","cssMapping","base64","sourceMapping","hasElementType","hasMap","hasSet","hasArrayBuffer","equal","it","stylesInDOM","getIndexByIdentifier","identifier","modulesToDom","idCountMap","identifiers","indexByIdentifier","updater","addElementStyle","api","newObj","lastIdentifiers","newList","newLastIdentifiers","_i","_identifier","_index","memo","getTarget","styleTarget","insertBySelector","insert","insertStyleElement","setAttributesWithoutAttributes","styleElement","nonce","apply","sourceMap","removeStyleElement","domAPI","styleTagTransform","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","getter","definition","prop","Icon","family","getCSSClasses","fontFamily","ItemTrigger","collapsed","toggleChange","iconType","trigger","AccordionItem","collapsedProp","children","ref","setCollapsed","contextValue","AccordionItemHeader","usearrowastrigger","savedCallback","tick","useInterval","savedHandler","eventListener","getSize","ComponentSize","setComponentSize","handleResize","resizeObserver","Collapsible","contentContainer","collapseWrapper","refContainerSize","contentContainerStyle","setContentContainerStyle","setHeight","getHeight","onEnter","onExit","onWindowResize","AccordionItemContent","Accordion","Button","customButton","iconFamily","iconPosition","iconOnly","href","onClick","noStyle","getCssClasses","cssClasses","sizeClass","disabledClass","displayClass","themeClass","iconOnlyClass","noStyleClass","getButtonIcon","buttonType","ButtonGroup","wait","immediate","later","callNow","Loader","withbackground","Message","onClose","noMargin","Chart","areaStyleColors","dataLoaded","hasData","option","series","onChange","zoomStart","zoomEnd","title","seriesConfig","noDataComponent","zoomColors","tykChartInstance","setTykChartInstance","chartWrapperRef","onResize","lineBarChart","color","pieChart","geoChart","buildChartOptions","selectedType","selectedOptions","selectedSeries","finalOpts","entry","seriesData","eventCallBack","debouncedMethod","debounce","prevInstance","prevOption","prevType","prevSeries","prevZoomStart","prevZoomEnd","getStyle","chartHasData","ToastMessage","handleClose","itemIndex","ToastContainer","setMessages","notify","updateNotifications","msgID","prevMessages","onMessageClosed","tempMessages","messageToBeRemoved","ToastCreator","fn","CopyToClipboard","txtRef","ModalFooter","ModalBody","Modal","disableCloseCommands","opened","showBackdrop","restProps","modalClasses","backdropClasses","themeIcon","Confirm","description","confirmBtnText","cancelBtnText","open","setOpen","setCallback","cancelCallback","setCancelCallback","callbackFunc","cancelCallbackFunc","beforeCallback","cancel","confirm","FixedWrapper","showShadow","fixedWrapperRef","attachShadow","debouncedAttachShadow","InfiniteScroller","hasMore","initialLoad","loadMore","pageNumber","refChild","showLoader","setShowLoader","containerRef","refChildSize","shouldLoad","clientHeight","loadMoreData","prevPageNumber","scrollHandler","prevRefChildSize","FloatingContainer","forceDisplay","displayAxis","preferredPosition","infiniteScrollerConfig","localRef","floatingContainerRef","contentWrapperRef","determineDisplay","topSpace","bottomSpace","leftSpace","hasTopSpace","hasBottomSpace","hasLeftSpace","hasRightSpace","positionedVerticallyFitsInViewport","positionedHorizontallyFitsInViewport","adjustPosition","targetPosition","topPos","schedulePositionUpdate","InfoNote","ListItem","List","labelwidth","getListStyle","styleCopy","NavBar","align","pre","subtitle","withTabs","subtitleContent","NavigationItem","Navigation","PortalContext","PanelBody","noPadding","portalContext","PanelFooter","PanelHeader","HeaderTag","Panel","collapsable","onToggleCollapse","collapsibleIconPosition","collapsedState","setCollapsedState","panelTheme","collapsbleIconPosition","handleToggle","Pill","RevealPanelService","wrapper","panel","newY","finalHeight","heightVal","reason","useRevealPanelService","RevealPanelHeaderLeft","RevealPanelHeaderRight","mergeClasses","classNames","RevealPanel","onHeightChange","onDragStart","onDragEnd","parentSelector","contentStyle","contentClassName","gutterClassName","wrapperClassName","panelRef","gutterRef","wrapperRef","panelService","bind","headerLeft","headerRight","contents","child","TabsContext","TabContent","addTab","hideTab","updateTab","showTab","selectedPath","tabData","tabsId","tabExists","rendered","hideTabContent","tabs","tempTabData","prevTabData","TabContext","Tab","tabsContext","tabContext","setPath","tempPath","Tabs","onTabChange","setTabs","setSelectedPath","setRendered","initialPath","setInitialPath","updateTabsList","tabsState","tempTabsState","toggleTab","setCurrentSelectedPath","tempRendered","prevTabs","tempTabs","getTabCssClass","tabId","genTabs","currentTabs","render","icon","closable","isOpened","additionalClickParents","isActive","setIsActive","tooltipRef","activeEvents","handleDocumentClick","TextEllipsis","shouldShowPage","currentNr","pageNr","totalNrOfPages","getPagesArr","nrOfPages","selectedPage","pagesArr","Pagination","nextProps","pagesArray","tableContext","HeaderCell","sortable","sortOrder","setSortOrder","sendMessage","Header","selectAll","setSelectAll","columns","selectable","generateHeaders","generateSelectable","Component","v","Checkbox","inline","note","Cell","Row","SelectableCheckbox","Body","Table","noDataMessage","loading","infiniteScrolling","setState","onChangeMsg","setOnChangeMsg","itemsListRef","sortRows","selectAllRows","selectRow","selectedRow","setPagination","getTable","num","Column","colSize","colOffsets","cSize","cOffset","nogutters","cssClass","DropdownContext","DropdownItem","customdropdownitem","eventKey","dropdownItemCLick","dropdownContext","itemProps","Dropdown","dropdownWidth","dropdownHeight","elHeight","selectedItem","prevProps","itemId","closeOnSelect","dropdownEl","offsetPosition","customTop","customLeft","btnGroup","btnGroupSize","btnTheme","hasCustomContent","listclassnames","btnTitle","stopButtonTextChange","selectedItemProps","appendTo","btnClassName","btnSize","customBtnTitle","showDropdownIcon","showTriggerButton","showCheckmark","DropdownWrapperTag","CodeEditor","disableValidation","onBlur","setOptions","finalSetOptions","getCodeEditorError","getLabelStyles","getNonLabelWidth","handleOnChange","handleOnBlur","editorInstance","getStateSelectedValues","multiple","itemValue","inputValue","allowCustomValues","filteredValues","tempState","previousState","stateSelectedValues","themes","iTheme","elWidth","prevValue","tempValue","selectedIndex","selectedValues","tempSelectedValues","tempStateSelectedValues","ok","searchItem","cursorNext","methodName","CustomListComponent","searchText","Combobox","Value","tagSeparators","addTagOnBlur","renderValue","valueOverflow","focus","INPUT_MIN_WIDTH","inputRef","dummyElementRef","setInputValue","inputWidth","setInputWidth","entryFieldOnChange","dummy","entryFieldOnKeyDown","triggerAction","textValue","isPlaceholder","renderCustomValue","renderTag","getTags","listRef","searchValue","activeItem","renderListItem","showSearch","activeElement","renderItem","renderSelectAllOption","isNoneSelected","normalizeValue","existingVal","getValueFromProp","Combobox2","propValue","propValues","maxProp","matchItemFn","renderListProp","onBeforeChange","floatingContainerConfig","expandMode","displayDropdownTrigger","required","validateOnChange","renderList","rootRef","comboboxControlRef","dropdownRef","setValue","setValues","setSearchValue","setActiveItem","setIsOpened","valuesExpanded","setValuesExpanded","localValidationError","setLocalValidationError","getThemeClasses","getFilteredValues","openDropdown","closeDropdown","updateSearchValue","newSearchValue","fv","isValidValue","newValues","localError","updateValue","addTag","listValueIndex","lv","finalValue","removeTag","selectValue","selectAllValues","moveUpActiveItem","visibleItems","activeIndex","moveDownActiveItem","executeTriggerAction","onClickCapture","triggerElement","onTagMessage","onMessage","sv","nv","vals","valuesElement","updateScroll","mobserver","robserver","currentValuesClasses","DatePicker","onOpen","pickerInstance","setPickerInstance","dateRef","hasValueChanged","prevDate","currentDate","diffDates","date","onDateChange","dateValue","instance","openCalendar","getInputError","getInputField","inputStyle","addonStyle","_typeof","requiredArgs","isDate","toDate","argument","argStr","isValid","dirtyDate","toInteger","dirtyNumber","addMilliseconds","dirtyAmount","timestamp","subMilliseconds","MILLISECONDS_IN_DAY","getUTCDayOfYear","startOfYearTimestamp","difference","startOfUTCISOWeek","weekStartsOn","day","getUTCISOWeekYear","year","fourthOfJanuaryOfNextYear","startOfNextYear","fourthOfJanuaryOfThisYear","startOfThisYear","startOfUTCISOWeekYear","fourthOfJanuary","MILLISECONDS_IN_WEEK","getUTCISOWeek","defaultOptions","getDefaultOptions","setDefaultOptions","newOptions","startOfUTCWeek","_ref","_ref2","_ref3","_options$weekStartsOn","_options$locale","_options$locale$optio","_defaultOptions$local","_defaultOptions$local2","getUTCWeekYear","_options$firstWeekCon","firstWeekContainsDate","firstWeekOfNextYear","firstWeekOfThisYear","startOfUTCWeekYear","firstWeek","getUTCWeek","addLeadingZeros","targetLength","sign","formatters","signedYear","month","dayPeriodEnumValue","numberOfDigits","milliseconds","fractionalSeconds","dayPeriodEnum","localize","era","lightFormatters","signedWeekYear","weekYear","twoDigitYear","isoWeekYear","quarter","week","isoWeek","dayOfYear","dayOfWeek","localDayOfWeek","isoDayOfWeek","hours","_localize","originalDate","timezoneOffset","formatTimezoneWithOptionalMinutes","formatTimezone","formatTimezoneShort","dirtyDelimiter","absOffset","minutes","delimiter","dateLongFormatter","pattern","formatLong","timeLongFormatter","dateTimeLongFormatter","matchResult","datePattern","timePattern","dateTimeFormat","longFormatters","getTimezoneOffsetInMilliseconds","utcDate","protectedDayOfYearTokens","protectedWeekYearTokens","isProtectedDayOfYearToken","isProtectedWeekYearToken","throwProtectedError","format","formatDistanceLocale","formatDistance","tokenValue","buildFormatLongFn","dateFormats","timeFormats","dateTimeFormats","formatRelativeLocale","formatRelative","_date","_baseDate","_options","buildLocalizeFn","dirtyIndex","valuesArray","defaultWidth","_defaultWidth","_width","eraValues","quarterValues","monthValues","dayValues","dayPeriodValues","formattingDayPeriodValues","ordinalNumber","rem100","buildMatchFn","matchPattern","matchedString","parsePatterns","findIndex","findKey","object","buildMatchPatternFn","parseResult","matchOrdinalNumberPattern","parseOrdinalNumberPattern","matchEraPatterns","parseEraPatterns","matchQuarterPatterns","parseQuarterPatterns","matchMonthPatterns","parseMonthPatterns","matchDayPatterns","parseDayPatterns","matchDayPeriodPatterns","parseDayPeriodPatterns","locale","formattingTokensRegExp","longFormattingTokensRegExp","escapedStringRegExp","doubleQuoteRegExp","unescapedLatinCharacterRegExp","dirtyFormatStr","_ref4","_options$locale2","_options$locale2$opti","_ref5","_ref6","_ref7","_options$locale3","_options$locale3$opti","_defaultOptions$local3","_defaultOptions$local4","formatStr","defaultLocale","formatterOptions","substring","firstCharacter","longFormatter","cleanEscapedString","formatter","components","mainFormValue","addValueOnFieldChange","getMainFormButtonWidth","propsComponents","stateComponents","noLabels","buttonStyle","displayType","errors","mainError","errorPersist","validatorsNames","validator","onSubmit","validate","validationmessage","buttonName","ComponentName","EditableListForm","itemData","separator","removedItem","valueArr","tempItemValue","nextValue","buttonWidth","clonedComponents","appendToElement","EditableList","addButtonName","onAddRow","ListHeader","fields","field","FieldsList","onDelete","rowIndex","tempField","rowValues","colValue","internalError","setInternalError","onFieldChange","errorMsg","getUID","EditableList2","hideOnEmpty","internalErrors","setInteranlErrors","updateRowValue","fieldIndex","componentValue","tempValueArr","tempErrors","tempFieldError","hasErrors","Components","deleteRow","FileInput","accept","omitValue","isfield","inputgroupaddonleft","inputgroupaddonright","stateValue","initValue","Input","Input2","getAddon","getInputElement","getInputGroupAddon","getItemContent","getItemLoader","MultiselectItem","fieldsToSearchOn","itemType","MultiselectPanel","itemsPageNumber","itemsNrPages","loadMoreItems","serverLoad","onCustomSearch","items","cloneItems","clonedItem","customSearch","panelType","inputPlaceholder","noItemsMessage","diffObjects","Multiselect","getItemDetails","allItems","valueClone","entityNamePlural","itemDisplayTemplate","detailsDisplayTemplate","maxSelections","Radio","nospace","Select","selectedValue","SelectableList","checkboxalticon","itemTemplate","primaryKey","handleOnSelect","newSelectedItems","elemPosition","getListItemCssClassName","isChecked","tvalue","Textarea","getTextareaError","ToggleItem","ToggleItemWrapper","Toggle","onDark","separated","selectedRef","setSelectedRef","notchRef","toggleRef","onItemSelected","positionNotch","selectedWidth","selectedOffset","toggleOffset","stringToTokenString","tempStr","setCursorPos","StringInput","setShowOptions","dropdownTriggerKey","setStringBuilderHeight","stringBuilderHeight","setTokenString","tokenString","showOptions","setTokenValue","setInputInFocus","invalidTokenRegex","contextMaxLength","isPasteEvent","setIsPasteEvent","tokenLen","handleDelete","stringBeforeCursor","stringAfterCursor","tokenStringForStringAfterCursor","firstToken","newTokenValue","newTokenizedString","handleBackSpace","lastToken","lastCharsInString","invalidToken","newTokenStr","tokenStringForStringBeforeCursor","splitTokens","addCharacterToTokenString","handleTextSelection","allowedKeys","substitute","newStr","handleKeyDown","handlePasteEvent","pasteString","newTokenString","handleOnFocus","InvalidToken","findInvalidTokenSubstitute","TokenizedString","hasDuplicates","allTokens","matchedOption","matchedTokens","tkn","OptionsList","handleOptionSelection","allowSearch","initialSearchValue","filterValue","setFilterValue","filteredOptions","setFilteredOptions","newFilteredOptions","StringBuilderFooter","inputInFocus","StringBuilder","setContentMaxLength","setTokens","prevTokenValue","setPrevTokenValue","setInitialSearchValue","selectedInvalidToken","setSelectedInvalidToken","prevTokenString","tempVal","splitTokensStr","newHeight","newInput","tokenizedString","setConfig","getValueFromPath","acc","timeoutId","form","DEFAULT_DEBOUNCE_TIME_MS","myValue","setMyValue","executeDebounced","getValue","valueOrEvent","onChangeProps","formError","componentProps","FieldCodeEditor","meta","validationmessages","touched","warning","FieldCombobox","FieldDropdown","FieldPagination","FieldCombobox2","getComboboxError","FormDatePicker","getDatePickerError","FieldEditableList","FieldFileInput","FieldInput","FieldMultiselect","FieldSelect","FieldSelectableList","FieldToggle"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"tyk-ui.js","mappings":";;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA,2BAA2B,cAAc;AACzC,8DAA8D;;;AAG9D;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA,2CAA2C,OAAO;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,CAAC;;AAED,iGAAiG;AACjG;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,0BAA0B;AACtD;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,SAAS;AACjC;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,wBAAwB,SAAS;AACjC;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA,CAAC;;AAED,0HAA0H;AAC1H;AACA;;AAEA,CAAC;;AAED,kGAAkG;AAClG;AACA;AACA;AACA;AACA;AACA,0BAA0B,kBAAkB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,iHAAiH;AACjH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,OAAO;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,gBAAgB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,mBAAmB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC;AAClC;AACA;AACA,0CAA0C,uBAAuB,uBAAuB,uBAAuB;AAC/G;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,kGAAkG;AAClG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iEAAiE;AACjE,2DAA2D,qCAAqC;AAChG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,gHAAgH;AAChH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,gBAAgB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,gBAAgB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,8BAA8B;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,0GAA0G;AAC1G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,4FAA4F;AAC5F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,sGAAsG;AACtG;AACA,oCAAoC;AACpC,mCAAmC;AACnC;AACA;AACA,wDAAwD;AACxD,4DAA4D;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,sBAAsB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C;AAC9C;AACA;AACA;AACA,oBAAoB,sBAAsB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,6CAA6C;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,qGAAqG;AACrG;AACA;AACA;AACA;AACA,6BAA6B,UAAU;AACvC;;AAEA,CAAC;;AAED,gKAAgK;AAChK;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iFAAiF;AACjF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;;AAEA,CAAC;;AAED,uGAAuG,uCAAuC,wBAAwB,gBAAgB,GAAG,+BAA+B,eAAe,wBAAwB,GAAG,uBAAuB,gCAAgC,GAAG,aAAa,8BAA8B,iBAAiB,GAAG,yBAAyB,iBAAiB,GAAG,oCAAoC,8BAA8B,GAAG,iDAAiD,gBAAgB,GAAG,2BAA2B,2BAA2B,GAAG,uCAAuC,4BAA4B,GAAG,wCAAwC,4BAA4B,GAAG,uCAAuC,2BAA2B,GAAG,0BAA0B,2CAA2C,eAAe,GAAG,uCAAuC,4BAA4B,GAAG,uCAAuC,2BAA2B,GAAG,oEAAoE,8BAA8B,GAAG,uCAAuC,8BAA8B,GAAG,yBAAyB,0BAA0B,GAAG,0BAA0B,6BAA6B,GAAG,kCAAkC,4BAA4B,GAAG,0CAA0C,8BAA8B,GAAG,uCAAuC,0BAA0B,GAAG,2BAA2B,6BAA6B,GAAG,yBAAyB,6BAA6B,GAAG,+CAA+C,mBAAmB,GAAG,4BAA4B,2BAA2B,GAAG,uBAAuB,2BAA2B,GAAG,+BAA+B,0BAA0B,GAAG,mCAAmC,4BAA4B,8CAA8C,mCAAmC,GAAG,oDAAoD,kCAAkC,GAAG,uCAAuC,iCAAiC,GAAG,0CAA0C,mCAAmC,GAAG,4CAA4C,0BAA0B,yCAAyC,GAAG,gDAAgD,oCAAoC,GAAG,qCAAqC,iCAAiC,GAAG,kDAAkD,mCAAmC,yCAAyC,GAAG,+BAA+B,qCAAqC,kIAAkI,GAAG,sCAAsC,qCAAqC,8NAA8N,GAAG;;AAE9nG,CAAC;;AAED,0IAA0I;AAC1I;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,gLAAgL;AAChL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,kCAAkC;AACjF;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,CAAC;;AAED;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;;AAEA,QAAQ,IAA4B;AACpC,qBAAqB,wBAAM;AAC3B;AACA,WAAW;;AAEX;AACA;AACA;AACA,gGAAgG,wBAAM;;AAEtG;AACA;AACA,8EAA8E;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,kBAAkB;AACpC;;AAEA;AACA;AACA;;AAEA;AACA,2CAA2C,OAAO;AAClD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,kDAAkD,0BAA0B;AAC5E;AACA,CAAC;;AAED,0FAA0F;AAC1F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA,wBAAwB;AACxB;AACA,0BAA0B;AAC1B;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,2GAA2G;AAC3G;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,sDAAsD;AACtD;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,IAAI;AACnD;AACA;AACA,aAAa;AACb;AACA,KAAK;AACL;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,iIAAiI;AACjI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2EAA2E;AAC3E;AACA,0CAA0C;AAC1C;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,eAAe;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,8FAA8F;AAC9F;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA,CAAC;;AAED,oNAAoN;AACpN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,iBAAiB;AAC3C;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,gCAAgC,qBAAqB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,qBAAqB;AAC1C;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,wBAAwB,uDAAuD;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,aAAa;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C;AAC3C,yCAAyC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,2BAA2B;AACrE;AACA;AACA;AACA;AACA;AACA,6DAA6D;AAC7D,6CAA6C;AAC7C,oHAAoH;AACpH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,+HAA+H;AAC/H;AACA,qBAAqB;AACrB,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;;AAEA,CAAC;;AAED,sIAAsI;AACtI;AACA;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,iCAAiC;AAC5E;AACA;AACA,iEAAiE,UAAU;AAC3E;AACA;AACA;AACA,oIAAoI,yBAAyB;AAC7J;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,QAAQ;AACxC;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,QAAQ;AAChC;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;AAEA,CAAC;;AAED,0KAA0K;AAC1K;AACA;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,+CAA+C;AACxE,2BAA2B,mDAAmD;AAC9E,wBAAwB;AACxB;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA,2BAA2B;AAC3B;AACA;AACA,sCAAsC;AACtC;AACA,kCAAkC,mBAAmB;AACrD;AACA;AACA,gCAAgC,wCAAwC;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC;AACnC;AACA,wBAAwB,4BAA4B;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oHAAoH,2BAA2B;AAC/I;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,QAAQ;AAChC;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA,CAAC;AACD;;AAEA,CAAC;;AAED,0IAA0I;AAC1I;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;AAEA,CAAC;;AAED,6JAA6J;AAC7J;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,kBAAkB,mBAAmB;AAC/E;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;;AAEA,CAAC;;AAED,8JAA8J;AAC9J;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,iDAAiD;AACzF,uCAAuC,4CAA4C;AACnF,uCAAuC,2CAA2C;AAClF,wCAAwC,6CAA6C;AACrF,sCAAsC,4CAA4C;AAClF,2BAA2B,4CAA4C;AACvE,2BAA2B,0DAA0D;AACrF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,aAAa;AACb;AACA,uBAAuB,4CAA4C;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA,CAAC;;AAED,wSAAwS;AACxS;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,mBAAmB;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,WAAW,iBAAiB;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA,mBAAmB,iBAAiB;AACpC,iBAAiB,2CAA2C;AAC5D,mBAAmB,oBAAoB;AACvC,oBAAoB,iBAAiB;AACrC,2BAA2B;AAC3B,CAAC;AACD;;AAEA,CAAC;;AAED,qHAAqH;AACrH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D,iCAAiC;AAChG;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,CAAC;AACD;;AAEA,CAAC;;AAED,uIAAuI;AACvI;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,4CAA4C,IAAI;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;AAEA,CAAC;;AAED,iGAAiG;AACjG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,SAAS;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,UAAU;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,QAAQ;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,QAAQ;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,SAAS;AAC7B;AACA;AACA,oCAAoC,QAAQ;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,SAAS;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,8BAA8B;AAClD;AACA;AACA;AACA,oBAAoB,kCAAkC,OAAO;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,8BAA8B;AAClD;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,oBAAoB,iBAAiB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,qCAAqC;AACzD;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,kIAAkI;AAClI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kEAAkE,mBAAmB;AACrF;AACA;AACA;AACA,4CAA4C,qBAAqB;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,eAAe;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,wBAAwB;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,sDAAsD;AACxF;AACA;AACA;AACA;AACA;AACA,8BAA8B,sDAAsD;AACpF;AACA;AACA,4BAA4B,uBAAuB;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;AAEA,CAAC;;AAED,+JAA+J;AAC/J;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,IAAI;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,IAAI;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,qHAAqH;AACrH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD;AACtD;AACA;AACA,4BAA4B,kBAAkB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,yBAAyB;AAC/C;AACA,0CAA0C,OAAO;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,OAAO;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yFAAyF,uBAAuB;AAChH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;AACA,4BAA4B,sBAAsB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B,oCAAoC,iBAAiB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;;AAEA,CAAC;;AAED,kIAAkI;AAClI;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,kBAAkB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,mBAAmB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,mBAAmB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,kBAAkB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kEAAkE,kBAAkB;AACpF;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D,iBAAiB;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,IAAI;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,iCAAiC;AACjC,iCAAiC;AACjC;AACA;AACA;AACA;AACA,CAAC;AACD;;AAEA,CAAC;;AAED,mGAAmG;AACnG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,mBAAmB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;AAEA,CAAC;;AAED,+GAA+G;AAC/G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;AAEA,CAAC;;AAED,iLAAiL;AACjL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA,kDAAkD;AAClD,yDAAyD,KAAK;AAC9D;AACA;AACA,0BAA0B;AAC1B,wEAAwE;AACxE;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA,yEAAyE;AACzE;AACA,gCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA,+BAA+B;AAC/B,6DAA6D,KAAK,4CAA4C;AAC9G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C;AAC9C;AACA;AACA;AACA,gCAAgC;AAChC,iEAAiE,4CAA4C,IAAI;AACjH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,kDAAkD;AAClD;AACA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kEAAkE,4CAA4C;AAC9G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kEAAkE,4CAA4C;AAC9G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC,2CAA2C,GAAG;AAC9C,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,4FAA4F;AAC5F;AACA;AACA;AACA,gBAAgB,sBAAsB;AACtC;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,qPAAqP;AACrP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,6BAA6B;AACpE,uCAAuC,2BAA2B;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,mBAAmB;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,2BAA2B;AACtE;AACA,2CAA2C,2BAA2B;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,aAAa;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,wBAAwB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,yBAAyB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,OAAO;AAC3D;AACA;AACA;AACA;AACA;AACA,2EAA2E,aAAa;AACxF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,CAAC;AACD;;AAEA,CAAC;;AAED,gGAAgG;AAChG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,iIAAiI;AACjI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,oCAAoC;AACtF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2DAA2D;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,8KAA8K;AAC9K;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,mBAAmB;AACxD;AACA;AACA,0BAA0B,mBAAmB;AAC7C;AACA;AACA;AACA;AACA;AACA,sBAAsB,mBAAmB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,0BAA0B;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,wBAAwB;AACnE,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,wBAAwB;AACnE,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,mBAAmB;AAC3C;AACA;AACA;AACA;AACA,wCAAwC,QAAQ;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,UAAU;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,sDAAsD,OAAO;AAC7D;AACA;AACA,yBAAyB;AACzB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,SAAS;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;;AAEA,CAAC;;AAED,+IAA+I;AAC/I;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,YAAY;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;;AAEA,CAAC;;AAED,gIAAgI;AAChI;AACA;AACA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,UAAU;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,wCAAwC,IAAI;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;;AAEA,CAAC;;AAED,4GAA4G;AAC5G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,IAAI;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,IAAI;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,IAAI;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,sBAAsB,IAAI;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,IAAI;AACjC,wBAAwB,gBAAgB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,IAAI;AACvC;AACA,wBAAwB,qBAAqB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,sBAAsB;AAC1C;AACA,wBAAwB,mBAAmB;AAC3C;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,uHAAuH;AACvH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,kBAAkB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,uBAAuB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,kBAAkB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,kBAAkB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,wBAAwB,uBAAuB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;AAEA,CAAC;;AAED,2GAA2G;AAC3G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,iBAAiB;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,IAAI;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,wBAAwB,iBAAiB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,0BAA0B;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,0BAA0B;AACrE;AACA;AACA,yCAAyC,wBAAwB;AACjE;AACA;AACA;AACA,iCAAiC,cAAc;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,OAAO;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,OAAO;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,OAAO;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,OAAO;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;;AAEA,CAAC;;AAED,uHAAuH;AACvH;AACA;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,0BAA0B;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,0BAA0B;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,UAAU;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,uNAAuN;AACvN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,kBAAkB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,sBAAsB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,kBAAkB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,sBAAsB;AAC9C,4BAA4B,+BAA+B;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA,wBAAwB,2BAA2B;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,qBAAqB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,qBAAqB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,qBAAqB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,wBAAwB,qBAAqB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,2BAA2B;AAChE;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,8BAA8B;AACnE;AACA;AACA;AACA,wBAAwB,kBAAkB;AAC1C;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D,4CAA4C;AACzG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;AACA,oBAAoB;AACpB;AACA;AACA,iCAAiC,cAAc;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,mBAAmB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,gJAAgJ;AAChJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,WAAW;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,WAAW;AACzD;AACA;AACA,oBAAoB;AACpB,8CAA8C,WAAW;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,WAAW;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,KAAK;AACf,UAAU,KAAK;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sLAAsL;AACtL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C;AAC7C;AACA,qMAAqM;AACrM;AACA;AACA;AACA;AACA,uMAAuM;AACvM;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uEAAuE;AACvE;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mFAAmF;AACnF;AACA;AACA;AACA;AACA;AACA,2KAA2K;AAC3K;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C;AAC7C;AACA,oMAAoM;AACpM;AACA;AACA,kCAAkC;AAClC,kMAAkM;AAClM;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,eAAe;AACnD;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,gXAAgX;AAChX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,mBAAmB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C;AAC3C;AACA;AACA;AACA,2CAA2C;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,iBAAiB;AACzC;AACA;AACA,2CAA2C;AAC3C;AACA;AACA;AACA,2CAA2C;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C;AAC3C;AACA;AACA;AACA,2CAA2C;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gEAAgE;AAChE,uDAAuD;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,8BAA8B;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,SAAS;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,SAAS;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,mBAAmB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,mBAAmB;AAC3C;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,iCAAiC,eAAe;AAChD,oCAAoC,qBAAqB;AACzD;AACA;AACA;AACA;AACA;AACA,yCAAyC,uBAAuB;AAChE;AACA;AACA;AACA,4BAA4B,UAAU;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,wBAAwB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,wBAAwB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,uBAAuB;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,mBAAmB;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,eAAe;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,wBAAwB;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,uBAAuB;AACnD;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,gBAAgB;AACxC;AACA;AACA;AACA;AACA,gCAAgC,aAAa;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,qBAAqB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,qBAAqB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,qBAAqB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,yBAAyB;AACzB,yBAAyB;AACzB,4BAA4B;AAC5B,4BAA4B;AAC5B,0BAA0B;AAC1B,wBAAwB;AACxB,iCAAiC;AACjC,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA,2BAA2B,mCAAmC;AAC9D;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL,mBAAmB,oBAAoB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL,8BAA8B,qBAAqB;AACnD;AACA,8BAA8B,yBAAyB;AACvD;AACA,KAAK;AACL;AACA,8BAA8B,kCAAkC;AAChE;AACA,KAAK;AACL;AACA,8BAA8B,+BAA+B;AAC7D,2BAA2B,mCAAmC;AAC9D;AACA,KAAK;AACL;AACA,8BAA8B,oBAAoB;AAClD,2BAA2B,sBAAsB;AACjD;AACA;AACA,CAAC;AACD;;AAEA,CAAC;;AAED,oIAAoI;AACpI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,eAAe;AACjE,gCAAgC,SAAS;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,kBAAkB;AAC9C;AACA,gCAAgC,oBAAoB;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,OAAO;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D,IAAI;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,6EAA6E,EAAE;AACjI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,kBAAkB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,iBAAiB;AAC7C;AACA;AACA;AACA;AACA,0DAA0D,iBAAiB;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,gBAAgB;AACpD;AACA;AACA;AACA;AACA,0DAA0D,gBAAgB;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,SAAS;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,QAAQ;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,CAAC;AACD;AACA;AACA;AACA,oCAAoC;AACpC,+FAA+F,EAAE,IAAI,EAAE;AACvG;AACA;AACA;AACA,wCAAwC,EAAE,IAAI,EAAE;AAChD,iCAAiC,EAAE,IAAI,EAAE;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,6IAA6I;AAC7I;AACA;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,wDAAwD;AAC7F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,qBAAqB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,sFAAsF,WAAW;AACjG;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,qBAAqB;AACrB;AACA,mCAAmC,IAAI;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA,2EAA2E;AAC3E;AACA,qCAAqC;AACrC;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,+KAA+K;AAC/K;AACA;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD;AAClD;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,yCAAyC,IAAI;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,CAAC;AACD;AACA;;AAEA,CAAC;;AAED,sJAAsJ;AACtJ;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,qBAAqB;AACvD;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,2BAA2B;AAC7D;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,mBAAmB;AAC/C,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA,kCAAkC,mCAAmC;AACrE;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,kCAAkC,kCAAkC;AACpE;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,oCAAoC;AACtE;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,wCAAwC;AAC1E;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,2BAA2B;AAC7D;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,mCAAmC;AACrE;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,0BAA0B;AAC5D;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,oBAAoB;AACtD;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,wBAAwB;AAC1D;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,kEAAkE,mBAAmB;AACrF,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,2BAA2B;AAC7D;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,0CAA0C;AAC5E;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,6BAA6B;AAC/D;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,mCAAmC;AACrE;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,wCAAwC,gCAAgC;AACxE;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,wCAAwC;AAC1E;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,2BAA2B;AAC7D;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,qCAAqC;AACvE;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,wCAAwC,kCAAkC;AAC1E;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,yCAAyC;AAC3E;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,4BAA4B;AAC9D;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,0CAA0C;AAC5E;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,6BAA6B;AAC/D;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,qCAAqC;AACvE;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,wCAAwC,kCAAkC;AAC1E;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,0CAA0C;AAC5E;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,6BAA6B;AAC/D;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,wCAAwC;AAC1E;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,2BAA2B;AAC7D;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,sCAAsC;AACxE;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,wCAAwC,mCAAmC;AAC3E;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,0BAA0B;AAC5D;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,0BAA0B;AAC5D;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,wBAAwB;AAC1D;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,wBAAwB;AAC1D;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,wBAAwB;AAC1D;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,sBAAsB;AACxD;AACA,KAAK;AACL;AACA;AACA;AACA,6BAA6B,iEAAiE;AAC9F;AACA,KAAK;AACL;AACA;AACA;AACA,6BAA6B,gEAAgE;AAC7F;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,0CAA0C;AAC5E;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,wCAAwC;AAC1E;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,0CAA0C;AAC5E;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,iCAAiC;AACnE;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,0BAA0B;AAC5D;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,8BAA8B;AAChE;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,oCAAoC;AACtE;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,uBAAuB;AACzD;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,8BAA8B;AAChE;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,qBAAqB;AACvD;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,8BAA8B;AAChE;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,8BAA8B;AAChE;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,yBAAyB;AAC3D;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,0BAA0B;AAC5D;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,kEAAkE,yBAAyB;AAC3F;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC;AAClC,KAAK;AACL;AACA;AACA;AACA,kCAAkC;AAClC,KAAK;AACL;AACA;AACA;AACA,kCAAkC,uBAAuB;AACzD;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,uBAAuB;AACzD;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,yBAAyB;AAC3D;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,yBAAyB;AAC3D;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,yBAAyB;AAC3D;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,wBAAwB;AAC1D;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,6BAA6B;AAC/D;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,2BAA2B;AAC7D;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,0BAA0B;AAC5D;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,2BAA2B;AAC7D;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,wBAAwB;AAC1D;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,kBAAkB;AACpD;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,wBAAwB;AAC1D;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,uBAAuB;AACzD;AACA;AACA,KAAK;AACL;AACA;AACA,uCAAuC,qBAAqB;AAC5D;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,qBAAqB;AACvD;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,4BAA4B;AAC9D,+CAA+C,gCAAgC;AAC/E;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,uBAAuB;AACzD;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,uBAAuB;AACzD;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,sBAAsB;AACxD;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,kCAAkC;AAClC,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,2BAA2B;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,mBAAmB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,sBAAsB;AAClD;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,4BAA4B,mBAAmB;AAC/C,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,4BAA4B,mBAAmB;AAC/C,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,4BAA4B,gBAAgB;AAC5C,SAAS;AACT;AACA,KAAK;AACL,gBAAgB,OAAO;AACvB;AACA;AACA;AACA;AACA,kCAAkC,yCAAyC;AAC3E;AACA;AACA,KAAK;AACL;;AAEA,CAAC;;AAED,+GAA+G;AAC/G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,SAAS;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,QAAQ,SAAS,gBAAgB;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,QAAQ,SAAS,gBAAgB;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,2BAA2B;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,QAAQ,SAAS,cAAc;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,WAAW;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D,mBAAmB;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;AAEA,CAAC;;AAED,8JAA8J;AAC9J;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,4BAA4B;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;AAEA,CAAC;;AAED,kgBAAkgB;AAClgB;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA,qEAAqE;AACrE;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,2DAA2D,iBAAiB;AAC5E,qDAAqD,cAAc;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,mBAAmB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,yCAAyC;AAC1E;AACA;AACA;AACA;AACA;AACA,iCAAiC,iCAAiC;AAClE,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,IAAI;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD;AACnD;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,gCAAgC;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,eAAe;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,qBAAqB;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,WAAW,wBAAwB;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,gBAAgB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,iCAAiC,gBAAgB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,wBAAwB,sBAAsB;AAC9C;AACA,4BAA4B,QAAQ;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4FAA4F,qBAAqB;AACjH;AACA;AACA;AACA;AACA,wDAAwD;AACxD;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,QAAQ;AAChC;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,OAAO;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,KAAK;AACnB,cAAc,KAAK;AACnB;AACA;AACA,sCAAsC;AACtC,uBAAuB,kCAAkC;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,0CAA0C;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,QAAQ;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,gBAAgB;AAC/C;AACA;AACA;AACA,+BAA+B,cAAc;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,qCAAqC;AACzD;AACA;AACA,6BAA6B,oCAAoC;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,aAAa;AAChE,SAAS;AACT;AACA,KAAK;AACL;AACA,2BAA2B,oCAAoC;AAC/D;AACA,KAAK;AACL;AACA,0CAA0C,4BAA4B;AACtE;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA,8BAA8B,2BAA2B;AACzD;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL,yBAAyB,oBAAoB;AAC7C,6BAA6B,oBAAoB;AACjD,wBAAwB,oBAAoB;AAC5C;AACA,8BAA8B;AAC9B,KAAK;AACL;AACA,8BAA8B,+BAA+B;AAC7D,2BAA2B,4BAA4B;AACvD;AACA,KAAK;AACL;AACA,8BAA8B,6BAA6B;AAC3D,2BAA2B,yBAAyB;AACpD;AACA;AACA,KAAK;AACL;AACA,8BAA8B,uBAAuB;AACrD,2BAA2B,sBAAsB;AACjD;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,8GAA8G;AAC9G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,iBAAiB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,iBAAiB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;AAEA,CAAC;;AAED,mMAAmM;AACnM;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,wBAAwB;AAChD;AACA;AACA;AACA;AACA,qDAAqD;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,kBAAkB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oGAAoG,SAAS;AAC7G;AACA;AACA,oFAAoF,SAAS;AAC7F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,mBAAmB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,WAAW;AAC/C,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,2HAA2H;AAC3H;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,YAAY;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4EAA4E,aAAa,uBAAuB,oBAAoB;AACpI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mEAAmE;AACnE,uCAAuC;AACvC,mCAAmC;AACnC,wCAAwC;AACxC;AACA;AACA;AACA;AACA;AACA;AACA,gGAAgG;AAChG,qBAAqB;AACrB,+BAA+B;AAC/B,oCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD;AACjD,mCAAmC;AACnC,+BAA+B;AAC/B,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA,qDAAqD;AACrD,wEAAwE;AACxE,mCAAmC;AACnC,2DAA2D;AAC3D,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD;AACjD,+BAA+B;AAC/B,oBAAoB,QAAQ;AAC5B;AACA;AACA;AACA;AACA,iDAAiD;AACjD,+BAA+B;AAC/B,oBAAoB,QAAQ;AAC5B;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,oGAAoG;AACpG;AACA;AACA;AACA;;AAEA,CAAC;;AAED,uNAAuN;AACvN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,iBAAiB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,aAAa;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oGAAoG,SAAS;AAC7G;AACA;AACA,kGAAkG,SAAS;AAC3G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,WAAW;AACvC;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,UAAU;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,mBAAmB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,kBAAkB;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,kBAAkB;AAC1C;AACA;AACA;AACA,gCAAgC,uBAAuB;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,kBAAkB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,QAAQ;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,mBAAmB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,mBAAmB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,+GAA+G;AAC/G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,IAAI;AACzC;AACA;AACA;AACA;AACA,qCAAqC,IAAI;AACzC;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,cAAc;AAC1C;AACA,+CAA+C,OAAO;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;;AAEA,CAAC;;AAED,kKAAkK;AAClK;AACA;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,sBAAsB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,uBAAuB;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,gCAAgC;AAChC,iCAAiC;AACjC,iCAAiC;AACjC;AACA;;AAEA,CAAC;;AAED,yKAAyK;AACzK;AACA;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,0EAA0E,uBAAuB,yCAAyC,gCAAgC,2BAA2B,2BAA2B,uBAAuB,eAAe,GAAG,gDAAgD,uBAAuB,eAAe,qBAAqB,+BAA+B,GAAG,yBAAyB,eAAe,aAAa,WAAW,gBAAgB,GAAG,6BAA6B,eAAe,aAAa,gBAAgB,GAAG,yBAAyB,cAAc,YAAY,iBAAiB,GAAG,6BAA6B,cAAc,iBAAiB,GAAG,+BAA+B,eAAe,qBAAqB,GAAG;AACjwB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,iBAAiB;AACxD;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,uCAAuC;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,sBAAsB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,kBAAkB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,0CAA0C;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,uBAAuB;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,gCAAgC;AAChC,iCAAiC;AACjC,iCAAiC;AACjC;AACA;;AAEA,CAAC;;AAED,+GAA+G;AAC/G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;AAEA,CAAC;;AAED,8MAA8M;AAC9M;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,YAAY;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,gBAAgB,iBAAiB;AAChF,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B,6BAA6B;AAC7B,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,yCAAyC;AACzC;AACA;;AAEA,CAAC;;AAED,mGAAmG;AACnG;AACA,gBAAgB,QAAQ;AACxB,kCAAkC;AAClC;AACA;AACA,0DAA0D;AAC1D,KAAK,gCAAgC;AACrC;AACA;AACA;AACA,8BAA8B,iCAAiC,YAAY,iCAAiC,YAAY,iCAAiC,iCAAiC,YAAY,iCAAiC,YAAY,iCAAiC,iCAAiC,YAAY,iCAAiC,iCAAiC,YAAY,iCAAiC,iCAAiC,iCAAiC,YAAY,iCAAiC,YAAY,iCAAiC,iCAAiC,YAAY,iCAAiC,iCAAiC,YAAY,iCAAiC,iCAAiC,iCAAiC,YAAY,iCAAiC,iCAAiC,YA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B,GAAG,4BAA4B,6BAA6B,gBAAgB,GAAG,6BAA6B,6BAA6B,GAAG,sBAAsB,yBAAyB,4BAA4B,6BAA6B,uBAAuB,mBAAmB,qBAAqB,GAAG,qBAAqB,mBAAmB,yBAAyB,uBAAuB,GAAG,4BAA4B,wBAAwB,oBAAoB,eAAe,gBAAgB,iBAAiB,sBAAsB,GAAG;;AAE15sB,CAAC;;AAED,yJAAyJ;AACzJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,4BAA4B,wBAAwB;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,qBAAqB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;;AAEA,CAAC;;AAED,ubAAub;AACvb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,OAAO;AAC3B;AACA;AACA;AACA;AACA,uDAAuD,sBAAsB;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,mBAAmB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,iCAAiC,cAAc,gCAAgC;AACzH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,cAAc;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,eAAe;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,sBAAsB,qBAAqB;AAC3C;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA,2BAA2B,4BAA4B;AACvD;AACA,KAAK;AACL;AACA,2BAA2B,4BAA4B;AACvD;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA,8BAA8B,qBAAqB;AACnD,2BAA2B,qCAAqC;AAChE;AACA;AACA,KAAK;AACL,wBAAwB;AACxB;AACA;AACA;AACA,CAAC;AACD;;AAEA,CAAC;;AAED;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,qEAAqE;AACrE;AACA,mCAAmC,iCAAiC;AACpE,MAAM,YAAY;AAClB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAiB,0BAA0B;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA,wCAAwC,eAAe;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,kCAAkC,yBAAyB;AAC3D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iCAAiC;AACjC,0DAA0D,qBAAqB,iBAAiB;AAChG;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV,iCAAiC,QAAQ;AACzC;;AAEA,CAAC;;;AAGD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL,+CAA+C;;AAE/C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,gCAAgC,UAAU;AAC1C;AACA;AACA,0BAA0B,yCAAyC;AACnE;AACA;AACA,0BAA0B,sCAAsC;AAChE;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;;;AAGA,CAAC;;AAED,kJAAkJ;AAClJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,wGAAwG;AACxG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,wBAAwB,wBAAwB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,QAAQ;AAC7D;AACA,mCAAmC;AACnC;AACA;AACA;AACA;AACA,qDAAqD,QAAQ;AAC7D;AACA,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,IAAI;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,IAAI;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,mBAAmB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;;AAEA,CAAC;;AAED,mJAAmJ;AACnJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,oBAAoB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,wBAAwB;AACxE;AACA;AACA;AACA;;AAEA,CAAC;;AAED,+IAA+I;AAC/I;AACA;AACA;AACA,kCAAkC,6BAA6B;AAC/D,mBAAmB,wCAAwC;AAC3D;AACA;AACA,KAAK;AACL;AACA;AACA,kCAAkC,4BAA4B;AAC9D,mBAAmB,4CAA4C;AAC/D;AACA;AACA,KAAK;AACL;AACA;AACA,kCAAkC,mCAAmC;AACrE,mBAAmB,oDAAoD;AACvE;AACA;AACA,KAAK;AACL;AACA;AACA,kCAAkC,kCAAkC;AACpE,mBAAmB,wDAAwD;AAC3E;AACA;AACA,KAAK;AACL;AACA;AACA,kCAAkC,wBAAwB;AAC1D,mBAAmB,4CAA4C;AAC/D;AACA;AACA,KAAK;AACL;AACA;AACA,kCAAkC,uBAAuB;AACzD,mBAAmB,8CAA8C;AACjE;AACA;AACA,KAAK;AACL;AACA;AACA,kCAAkC,8BAA8B;AAChE,mBAAmB,wDAAwD;AAC3E;AACA;AACA,KAAK;AACL;AACA;AACA,kCAAkC,6BAA6B;AAC/D,mBAAmB,0DAA0D;AAC7E;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,mBAAmB,sCAAsC;AACzD;AACA,KAAK;AACL;AACA;AACA,kCAAkC,sCAAsC;AACxE;AACA,KAAK;AACL;AACA;AACA,kCAAkC,wBAAwB;AAC1D,mBAAmB,sCAAsC;AACzD;AACA,KAAK;AACL;AACA;AACA,kCAAkC,mBAAmB;AACrD,mBAAmB,sCAAsC;AACzD;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,kCAAkC,+BAA+B;AACjE;AACA;AACA,yCAAyC;AACzC,KAAK;AACL;AACA;;AAEA,CAAC;;AAED,6SAA6S;AAC7S;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,cAAc;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,IAAI;AACzC;AACA;AACA;AACA,sCAAsC,iBAAiB;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,mBAAmB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,IAAI;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,eAAe;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,YAAY;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD;AACtD;AACA;AACA,mEAAmE;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD,wBAAwB;AAC/E;AACA;AACA;AACA;AACA,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gEAAgE,wBAAwB;AACxF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,mBAAmB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,IAAI;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,IAAI;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,IAAI;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,oBAAoB;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,CAAC;;AAED,CAAC;;AAED,uHAAuH;AACvH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED,CAAC;;AAED,+JAA+J;AAC/J;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,sBAAsB;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,2BAA2B;AACjF;AACA,kDAAkD,8BAA8B,yBAAyB,4BAA4B,qBAAqB,gCAAgC,mCAAmC,wBAAwB,6BAA6B,gCAAgC,OAAO,6DAA6D,sCAAsC,iEAAiE,sCAAsC,2DAA2D,sCAAsC,uDAAuD,sCAAsC,2BAA2B,6BAA6B,4BAA4B,kDAAkD,oDAAoD,mDAAmD,oBAAoB,OAAO;;AAEz8B,CAAC;;AAED,gYAAgY;AAChY;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC;AACzC,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC,cAAc;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,kFAAkF;AAClF,8EAA8E;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,KAAuD;AAC/E;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;;;;;;;;ACjipBA,sHAAsH;AACtH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wGAAwG;AACxG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,eAAe;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA,iDAAiD;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD;AACjD;AACA;AACA,8DAA8D;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,uCAAuC;AACzF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8EAA8E;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,eAAe;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,YAAY;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD;AAClD,gCAAgC,kBAAkB;AAClD;AACA,qDAAqD;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;;AAEL,CAAC,kBAAkB;AACnB;AACA,4BAA4B,KAAuD;AACnF;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB;;;;;;;;ACzUA,sGAAsG,wPAAwP,6BAA6B,kBAAkB,gCAAgC,yBAAyB,uBAAuB,gBAAgB,6BAA6B,yBAAyB,aAAa,kBAAkB,0BAA0B,GAAG,oBAAoB,0BAA0B,qCAAqC,cAAc,GAAG,qBAAqB,qCAAqC,2BAA2B,eAAe,GAAG,yCAAyC,2BAA2B,uBAAuB,uBAAuB,GAAG,qBAAqB,sBAAsB,GAAG,gCAAgC,6BAA6B,GAAG,uBAAuB,iCAAiC,8BAA8B,mBAAmB,gCAAgC,2BAA2B,iBAAiB,iBAAiB,yBAAyB,gBAAgB,2BAA2B,qBAAqB,sBAAsB,0BAA0B,wBAAwB,8BAA8B,GAAG,kBAAkB,gCAAgC,2BAA2B,4BAA4B,qBAAqB,uBAAuB,2BAA2B,qCAAqC,sBAAsB,gBAAgB,yBAAyB,kBAAkB,GAAG,6BAA6B,iCAAiC,sCAAsC,GAAG,2BAA2B,uBAAuB,sBAAsB,GAAG,wBAAwB,gCAAgC,GAAG,4CAA4C,4BAA4B,wDAAwD,qBAAqB,8BAA8B,oBAAoB,qBAAqB,kCAAkC,4BAA4B,iCAAiC,GAAG,6BAA6B,kCAAkC,GAAG,wBAAwB,qCAAqC,iPAAiP,yBAAyB,qBAAqB,qBAAqB,sBAAsB,4BAA4B,iBAAiB,mBAAmB,kBAAkB,eAAe,iBAAiB,yBAAyB,GAAG,8BAA8B,gCAAgC,oCAAoC,mBAAmB,GAAG,iBAAiB,uBAAuB,sBAAsB,gCAAgC,6BAA6B,2BAA2B,4BAA4B,wBAAwB,uBAAuB,mBAAmB,+CAA+C,mBAAmB,0CAA0C,mBAAmB,GAAG,uBAAuB,6BAA6B,gBAAgB,GAAG,sBAAsB,6BAA6B,GAAG,yBAAyB,4BAA4B,gBAAgB,GAAG,wBAAwB,yBAAyB,wBAAwB,gCAAgC,6BAA6B,2BAA2B,4BAA4B,wBAAwB,kBAAkB,GAAG,yBAAyB,kBAAkB,yBAAyB,qBAAqB,GAAG;;AAEzzH,CAAC;;AAED,+NAA+N;AAC/N;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,2BAA2B;AAC1D,uBAAuB,8CAA8C;AACrE,sBAAsB,0BAA0B;AAChD,4BAA4B,gFAAgF;AAC5G,2BAA2B,iDAAiD;AAC5E,2BAA2B,iDAAiD;AAC5E,2BAA2B,+DAA+D;AAC1F;AACA,sBAAsB,2BAA2B;AACjD,4BAA4B,kFAAkF;AAC9G,2BAA2B,sDAAsD;AACjF,2BAA2B,8CAA8C;AACzE;AACA,sBAAsB,6BAA6B;AACnD,2BAA2B;AAC3B,2CAA2C,gBAAgB,cAAc,GAAG;AAC5E,2BAA2B,6BAA6B;AACxD,2BAA2B,8EAA8E;AACzG,2BAA2B,wFAAwF;AACnH,2BAA2B,kFAAkF;AAC7G,2BAA2B,qFAAqF;AAChH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,6CAA6C,iBAAiB;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,6CAA6C,iBAAiB;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA,iCAAiC,YAAY;AAC7C,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,CAAC;AACD;AACA;AACA,mBAAmB,kDAAkD;AACrE;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,mBAAmB,kDAAkD;AACrE;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,mBAAmB,kDAAkD;AACrE;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC,kBAAkB;AACnB;AACA,4BAA4B,KAAuD;AACnF;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB;;;;;;;;ACtVA,0KAA0K;AAC1K;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,aAAa;AACb;AACA,2BAA2B;AAC3B;AACA,aAAa;AACb;AACA,2BAA2B;AAC3B,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA,2BAA2B;AAC3B;AACA,aAAa;AACb;AACA,2BAA2B;AAC3B;AACA,aAAa;AACb;AACA,yBAAyB;AACzB;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,qBAAqB;AACrB,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA,2BAA2B;AAC3B,aAAa;AACb;AACA,2BAA2B;AAC3B;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA,kCAAkC,EAAE;AACpC,aAAa;AACb;AACA,kCAAkC,EAAE;AACpC,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,qBAAqB;AACrB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,qBAAqB;AACrB;AACA;AACA;AACA,qBAAqB;AACrB;AACA,qBAAqB;AACrB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,qBAAqB;AACrB;AACA;AACA;AACA,qBAAqB;AACrB;AACA,qBAAqB;AACrB,aAAa;AACb;AACA;AACA,sCAAsC,IAAI;AAC1C,aAAa;AACb;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,4HAA4H;AAC5H;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA,uCAAuC;AACvC;AACA;AACA;AACA,qDAAqD,0BAA0B;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;AAEA,CAAC;;AAED,yGAAyG;AACzG;AACA,oBAAoB,UAAU;AAC9B,0BAA0B,wCAAwC;AAClE,0BAA0B,iBAAiB;AAC3C,2BAA2B,yEAAyE;AACpG,6BAA6B,yEAAyE;AACtG,+BAA+B,yBAAyB;AACxD,yBAAyB,0BAA0B;AACnD,yBAAyB,qDAAqD;AAC9E,2BAA2B,qDAAqD;AAChF,gBAAgB,yDAAyD;AACzE,sBAAsB,UAAU;AAChC,sBAAsB,4IAA4I;AAClK,yBAAyB,8BAA8B;AACvD,gBAAgB,0BAA0B;AAC1C,eAAe,6CAA6C;AAC5D,eAAe,8BAA8B;AAC7C,gBAAgB,mNAAmN;AACnO,iBAAiB,wEAAwE;AACzF,qBAAqB,sBAAsB;AAC3C,eAAe,kCAAkC;AACjD,qBAAqB,iNAAiN;AACtO,mBAAmB,0BAA0B;AAC7C,qBAAqB,wBAAwB;AAC7C,oBAAoB,0BAA0B;AAC9C,sBAAsB,8BAA8B;AACpD,gBAAgB,0BAA0B;AAC1C,cAAc,0BAA0B;AACxC,wBAAwB,aAAa;AACrC,qBAAqB,aAAa;AAClC,yBAAyB,sOAAsO;AAC/P,gBAAgB,0BAA0B;AAC1C,sBAAsB,0BAA0B;AAChD,qBAAqB,0BAA0B;AAC/C,oBAAoB,0BAA0B;AAC9C,uBAAuB,0BAA0B;AACjD,oBAAoB,0BAA0B;AAC9C,mBAAmB,0BAA0B;AAC7C,oBAAoB,0BAA0B;AAC9C,mBAAmB,0BAA0B;AAC7C,kBAAkB,mDAAmD;AACrE,oBAAoB,mDAAmD;AACvE,oBAAoB,mDAAmD;AACvE,iBAAiB,0BAA0B;AAC3C,qBAAqB,0BAA0B;AAC/C,uBAAuB,0BAA0B;AACjD,wBAAwB,0BAA0B;AAClD,sBAAsB,0BAA0B;AAChD,0BAA0B,2DAA2D;AACrF,2BAA2B,2DAA2D;AACtF,kBAAkB,uDAAuD;AACzE,eAAe,0BAA0B;AACzC,sBAAsB,uBAAuB;AAC7C,yBAAyB,0DAA0D;AACnF,oBAAoB,kDAAkD;AACtE,wBAAwB,4DAA4D;AACpF,aAAa,0BAA0B;AACvC,wBAAwB,uBAAuB;AAC/C,oBAAoB,2BAA2B;AAC/C,qBAAqB,kEAAkE;AACvF,eAAe,0BAA0B;AACzC,sBAAsB,aAAa;AACnC,gBAAgB,2BAA2B;AAC3C,qBAAqB,yBAAyB;AAC9C,uBAAuB,8CAA8C;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,wCAAwC;AAC3D,wBAAwB,wCAAwC;AAChE,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAqE;AACrE;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,2DAA2D;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,CAAC;AACD;;AAEA,CAAC;;AAED,2LAA2L;AAC3L;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,uBAAuB;AACvB;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,uBAAuB,EAAE;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA,CAAC;;AAED,+JAA+J;AAC/J;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,UAAU;AAC7C,qCAAqC,QAAQ;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED,CAAC;;AAED,qSAAqS;AACrS;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,CAAC;AACD;;AAEA,CAAC,kBAAkB;AACnB;AACA,4BAA4B,KAAuD;AACnF;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB;;;;;;;;ACpnBA,mKAAmK;AACnK;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,qMAAqM;AACrM;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,uCAAuC,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE;AAC9D;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA,6BAA6B;AAC7B;AACA;AACA,iBAAiB;AACjB;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA,uCAAuC;AACvC,aAAa;AACb;AACA,4BAA4B;AAC5B,aAAa;AACb;AACA,8BAA8B;AAC9B,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,4HAA4H;AAC5H;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA,uCAAuC;AACvC;AACA;AACA;AACA,qDAAqD,0BAA0B;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;AAEA,CAAC;;AAED,+JAA+J;AAC/J;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,UAAU;AAC7C,qCAAqC,QAAQ;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED,CAAC;;AAED,4NAA4N;AAC5N;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C;AAC1C;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;AAEA,CAAC,kBAAkB;AACnB;AACA,4BAA4B,KAAuD;AACnF;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB;;;;;;;;ACpVA,qKAAqK;AACrK;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iGAAiG;AACjG;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA,6BAA6B;AAC7B;AACA,yCAAyC;AACzC;AACA;AACA;AACA,qBAAqB;AACrB;AACA,kCAAkC;AAClC;AACA,qBAAqB;AACrB;AACA,iCAAiC;AACjC;AACA,qBAAqB;AACrB;AACA,qBAAqB;AACrB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,yFAAyF;AACzF;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA,6BAA6B;AAC7B;AACA,yCAAyC;AACzC;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iCAAiC;AACjC;AACA,qBAAqB;AACrB;AACA,qBAAqB;AACrB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,2MAA2M;AAC3M;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,yCAAyC,EAAE;AAC3C,sBAAsB,EAAE;AACxB,WAAW,YAAY,KAAK;AAC5B,oBAAoB,IAAI;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA,mCAAmC,EAAE;AACrC;AACA,aAAa;AACb;AACA,6BAA6B;AAC7B;AACA,aAAa;AACb;AACA,6BAA6B;AAC7B;AACA,aAAa;AACb;AACA,6BAA6B;AAC7B,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,EAAE,cAAc,EAAE;AAC9D,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA,0BAA0B,YAAY,4BAA4B,GAAG;AACrE,aAAa;AACb;AACA,uCAAuC,YAAY;AACnD,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,EAAE,cAAc,EAAE;AAC9D,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB,qCAAqC;AACrC,6BAA6B;AAC7B;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,+BAA+B;AAC/B;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,wBAAwB,EAAE;AAC1B,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,sBAAsB;AAChC,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,gCAAgC;AAC1D,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,kBAAkB,8DAA8D;AAChF,kBAAkB,sBAAsB;AACxC,kBAAkB;AAClB;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,kBAAkB,8DAA8D;AAChF,kBAAkB,sBAAsB;AACxC,kBAAkB;AAClB;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,gCAAgC,qBAAqB,yBAAyB;AAC9E,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,wDAAwD;AAC1E,kBAAkB;AAClB;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,kBAAkB,qDAAqD;AACvE,kBAAkB;AAClB;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,4HAA4H;AAC5H;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA,uCAAuC;AACvC;AACA;AACA;AACA,qDAAqD,0BAA0B;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;AAEA,CAAC;;AAED,+JAA+J;AAC/J;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,UAAU;AAC7C,qCAAqC,QAAQ;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED,CAAC;;AAED,2RAA2R;AAC3R;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,CAAC;AACD;;AAEA,CAAC,kBAAkB;AACnB;AACA,4BAA4B,KAAuD;AACnF;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB;;;;;;;;ACp3BA,4JAA4J;AAC5J;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA,4BAA4B;AAC5B,aAAa;AACb;AACA,8BAA8B;AAC9B,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,EAAE,cAAc,EAAE;AAC5D,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,4HAA4H;AAC5H;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA,uCAAuC;AACvC;AACA;AACA;AACA,qDAAqD,0BAA0B;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;AAEA,CAAC;;AAED,+JAA+J;AAC/J;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,UAAU;AAC7C,qCAAqC,QAAQ;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED,CAAC;;AAED,mPAAmP;AACnP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA,0CAA0C;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,CAAC;AACD;;AAEA,CAAC,kBAAkB;AACnB;AACA,4BAA4B,KAAuD;AACnF;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB;;;;;;;;AClRA,mKAAmK;AACnK;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,iNAAiN;AACjN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,gGAAgG;AAChG,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA,uCAAuC;AACvC,aAAa;AACb;AACA,4BAA4B;AAC5B,aAAa;AACb;AACA,8BAA8B;AAC9B,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,4HAA4H;AAC5H;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA,uCAAuC;AACvC;AACA;AACA;AACA,qDAAqD,0BAA0B;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;AAEA,CAAC;;AAED,+JAA+J;AAC/J;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,UAAU;AAC7C,qCAAqC,QAAQ;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED,CAAC;;AAED,sNAAsN;AACtN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;AAEA,CAAC,kBAAkB;AACnB;AACA,4BAA4B,KAAuD;AACnF;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB;;;;;;;;ACjVA,8JAA8J;AAC9J;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,EAAE,OAAO,EAAE,+BAA+B,EAAE,cAAc,EAAE;AACtG;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,mCAAmC,EAAE;AACrC;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA,mCAAmC,EAAE;AACrC;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA,sCAAsC,EAAE;AACxC;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA,sCAAsC,EAAE;AACxC;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA,yCAAyC,EAAE;AAC3C;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA,yCAAyC,EAAE;AAC3C;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA,4CAA4C,EAAE;AAC9C;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA,4CAA4C,EAAE;AAC9C;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA,6BAA6B;AAC7B,aAAa;AACb;AACA,kCAAkC;AAClC,aAAa;AACb;AACA,kCAAkC;AAClC,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA,0BAA0B,EAAE;AAC5B;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA,0BAA0B,EAAE;AAC5B;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,0BAA0B,EAAE;AAC5B;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,0BAA0B,EAAE;AAC5B;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA,0BAA0B,EAAE;AAC5B;AACA,aAAa;AACb;AACA,yBAAyB;AACzB;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA,0BAA0B,EAAE;AAC5B;AACA,aAAa;AACb;AACA,yBAAyB;AACzB;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA,yBAAyB;AACzB;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA,yBAAyB;AACzB;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,0BAA0B,EAAE;AAC5B;AACA,aAAa;AACb;AACA,yBAAyB;AACzB;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,0BAA0B,EAAE;AAC5B;AACA,aAAa;AACb;AACA,yBAAyB;AACzB;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA,yBAAyB;AACzB;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,yBAAyB;AACzB;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,yBAAyB;AACzB;AACA,aAAa;AACb;AACA,yBAAyB;AACzB;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,qJAAqJ;AACrJ;AACA;AACA;AACA,gDAAgD;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED,CAAC;;AAED,wMAAwM;AACxM;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;AAEA,CAAC,kBAAkB;AACnB;AACA,4BAA4B,KAAuD;AACnF;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB;;;;;;;;AC3dA,2JAA2J;AAC3J;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,oEAAoE;AAClF;AACA;AACA;AACA,aAAa;AACb,cAAc,8DAA8D;AAC5E;AACA;AACA;AACA,aAAa;AACb,cAAc,gBAAgB;AAC9B,cAAc,6CAA6C;AAC3D,cAAc,wCAAwC;AACtD,cAAc,sBAAsB;AACpC,cAAc;AACd;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA,cAAc,uBAAuB;AACrC,cAAc,mBAAmB;AACjC,cAAc,wDAAwD;AACtE,cAAc,+CAA+C;AAC7D,cAAc;AACd;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,qBAAqB;AACrB,sBAAsB,mBAAmB;AACzC,aAAa;AACb;AACA,cAAc,4DAA4D;AAC1E,cAAc,kCAAkC;AAChD,cAAc;AACd;AACA;AACA,cAAc,uDAAuD;AACrE,cAAc;AACd;AACA;AACA;AACA,oCAAoC,qBAAqB,yBAAyB;AAClF,aAAa;AACb;AACA;AACA,oCAAoC,qBAAqB,yBAAyB;AAClF,aAAa;AACb;AACA;AACA;AACA;AACA,sBAAsB,uBAAuB;AAC7C,sBAAsB;AACtB;AACA,aAAa;AACb;AACA,cAAc;AACd;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA,sBAAsB,8CAA8C;AACpE,sBAAsB;AACtB;AACA,aAAa;AACb;AACA;AACA;AACA,sBAAsB,8CAA8C;AACpE,sBAAsB;AACtB;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,sBAAsB,8DAA8D;AACpF,sBAAsB,2BAA2B;AACjD,sBAAsB;AACtB;AACA,aAAa;AACb;AACA;AACA;AACA,sBAAsB,8DAA8D;AACpF,sBAAsB,2BAA2B;AACjD,sBAAsB;AACtB;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,uBAAuB;AACzC,kBAAkB;AAClB;AACA,SAAS;AACT;AACA,cAAc,uBAAuB;AACrC,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA,CAAC;AACD;AACA;;AAEA,CAAC;;AAED,8KAA8K;AAC9K;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA,CAAC;;AAED,4JAA4J;AAC5J;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,mBAAmB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,mBAAmB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA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AAQ,mBAAO,CAAC,GAAW;AAC3B,IAAI,IAAqC;AACzC,EAAE,SAAkB;AACpB,EAAE,yBAAmB;AACrB,EAAE,KAAK,UAkBN;;;;;;;;ACxBD;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,uBAAuB,UAAU;AACjC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,uBAAuB,UAAU;AACjC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,qBAAqB,UAAU;AAC/B;AACA;;AAEA;AACA;AACA;;AAEA;AACA,qBAAqB,UAAU;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC1Ia;;AAEb;AACA;AACA;AACA,kBAAkB,wBAAwB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,iBAAiB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,4BAA4B;AAChD;AACA;AACA;AACA;AACA;AACA,qBAAqB,6BAA6B;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACnFa;;AAEb;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACjCa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACTa;;AAEb;AACA;AACA,cAAc,KAAwC,GAAG,sBAAiB,GAAG,CAAI;AACjF;AACA;AACA;AACA;AACA;;;;;;;;ACTa;;AAEb;AACA;AACA;AACA;AACA,kDAAkD;AAClD;AACA;AACA,0CAA0C;AAC1C;AACA;AACA;AACA,iFAAiF;AACjF;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,yDAAyD;AACzD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC5Da;;AAEb;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACbA;;;;;;UCAA;UACA;;UAEA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;;UAEA;UACA;;UAEA;UACA;;UAEA;UACA;UACA;;;;;WCzBA;WACA;WACA;;;;;WCFA;WACA;WACA;WACA;WACA;WACA,iCAAiC,WAAW;WAC5C;WACA;;;;;WCPA;WACA;WACA;WACA;WACA,yCAAyC,wCAAwC;WACjF;WACA;WACA;;;;;WCPA;;;;;WCAA;WACA;WACA;WACA,uDAAuD,iBAAiB;WACxE;WACA,gDAAgD,aAAa;WAC7D;;;;;WCNA;WACA;WACA;WACA;WACA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A;AACA,kCAAkC,OAAO;AACzC;AACA;AACA,IAAI;AACJ;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnDwC;AACA;AACiB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8DAA8D;AAC9D;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa,SAAS;AACtB,YAAY,WAAW;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe;AACf,EAAE,YAAY;AACd,OAAO,MAAM;AACb;AACA;AACA,aAAa,MAAM;AACnB;AACA;;ACzCe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACTmD;AACX;AACiB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,WAAW,QAAQ;AACnB,aAAa,MAAM;AACnB,YAAY,WAAW;AACvB;AACA;AACA;AACA;AACA;AACA;AACe;AACf,EAAE,YAAY;AACd,kBAAkB,MAAM;AACxB,eAAe,SAAS;AACxB;AACA;;AC1B0D;AACD;AACN;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,WAAW,QAAQ;AACnB,aAAa,MAAM;AACnB,YAAY,WAAW;AACvB;AACA;AACA;AACA;AACA;AACA;AACe;AACf,EAAE,YAAY;AACd,eAAe,SAAS;AACxB,SAAS,eAAe;AACxB;;ACzB2C;AACS;AACpD;AACe;AACf,EAAE,YAAY;AACd,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;;ACZ2C;AACS;AACrC;AACf,EAAE,YAAY;AACd;AACA,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;;ACX2C;AACS;AACU;AAC/C;AACf,EAAE,YAAY;AACd,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA,wBAAwB,iBAAiB;AACzC;AACA;AACA;AACA,wBAAwB,iBAAiB;AACzC;AACA;AACA,IAAI;AACJ;AACA,IAAI;AACJ;AACA;AACA;;ACtB8D;AACA;AACV;AACrC;AACf,EAAE,YAAY;AACd,aAAa,iBAAiB;AAC9B;AACA;AACA;AACA,aAAa,iBAAiB;AAC9B;AACA;;ACX2C;AACmB;AACQ;AAClB;AACpD;AACe;AACf,EAAE,YAAY;AACd,aAAa,MAAM;AACnB,aAAa,iBAAiB,mBAAmB,qBAAqB;;AAEtE;AACA;AACA;AACA;AACA;;ACdA;AACO;AACP;AACA;AACO;AACP;AACA;;ACN2C;AACS;AACN;AACiB;AAChD;AACf;AACA,EAAE,YAAY;AACd,uBAAuB,iBAAiB;AACxC,qBAAqB,SAAS;;AAE9B;AACA;AACA;AACA;AACA,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;;ACpB2C;AACS;AACI;AACV;AACiB;AAChD;AACf;AACA,EAAE,YAAY;AACd,aAAa,MAAM;AACnB;AACA,uBAAuB,iBAAiB;AACxC,8BAA8B,SAAS;;AAEvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,cAAc;AACtC;AACA;AACA;AACA,wBAAwB,cAAc;AACtC;AACA;AACA,IAAI;AACJ;AACA,IAAI;AACJ;AACA;AACA;;AChCwD;AACJ;AACI;AACV;AACiB;AAChD;AACf;AACA,EAAE,YAAY;AACd,uBAAuB,iBAAiB;AACxC,8BAA8B,SAAS;AACvC,aAAa,cAAc;AAC3B;AACA;AACA;AACA,aAAa,cAAc;AAC3B;AACA;;AChB2C;AACa;AACQ;AACZ;AACpD,IAAI,+BAAoB;AACT;AACf,EAAE,YAAY;AACd,aAAa,MAAM;AACnB,aAAa,cAAc,4BAA4B,kBAAkB;;AAEzE;AACA;AACA;AACA,2BAA2B,+BAAoB;AAC/C;;ACde;AACf;AACA;AACA;AACA;AACA;AACA;AACA;;ACP6D;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,eAAe;AAC1B,GAAG;AACH;AACA;AACA;AACA,+CAA+C,eAAe;AAC9D,GAAG;AACH;AACA;AACA,WAAW,eAAe;AAC1B,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,WAAW,eAAe;AAC1B,GAAG;AACH;AACA;AACA,WAAW,eAAe;AAC1B,GAAG;AACH;AACA;AACA,WAAW,eAAe;AAC1B,GAAG;AACH;AACA;AACA,WAAW,eAAe;AAC1B,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,WAAW,eAAe;AAC1B;AACA;AACA,sDAAe,UAAU;;AC/E4C;AACJ;AACQ;AACd;AACQ;AACN;AACH;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,IAAI,qBAAU;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,WAAW,eAAe;AAC1B,GAAG;AACH;AACA;AACA,yBAAyB,cAAc;AACvC;AACA;;AAEA;AACA;AACA;AACA,aAAa,eAAe;AAC5B;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA,WAAW,eAAe;AAC1B,GAAG;AACH;AACA;AACA,sBAAsB,iBAAiB;;AAEvC;AACA,WAAW,eAAe;AAC1B,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,eAAe;AAC1B,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,eAAe;AAC9B;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,qCAAqC;AACrC;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,eAAe;AAC9B;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,qCAAqC;AACrC;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,eAAe;AAC9B;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,eAAe;AAC9B;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,GAAG;AACH;AACA;AACA,eAAe,UAAU;AACzB;AACA;AACA;AACA,OAAO;AACP;AACA,WAAW,eAAe;AAC1B,GAAG;AACH;AACA;AACA,kBAAkB,aAAa;AAC/B;AACA;AACA;AACA,OAAO;AACP;AACA,WAAW,eAAe;AAC1B,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,WAAW,eAAe;AAC1B,GAAG;AACH;AACA;AACA,oBAAoB,eAAe;AACnC;AACA;AACA;AACA,OAAO;AACP;AACA,WAAW,eAAe;AAC1B,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,eAAe;AAC9B;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,eAAe;AAC9B;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,eAAe;AAC9B;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,WAAW,eAAe;AAC1B,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,WAAW,eAAe;AAC1B,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,WAAW,eAAe;AAC1B,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,WAAW,eAAe;AAC1B,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,WAAW,eAAe;AAC1B,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,WAAW,eAAe;AAC1B,GAAG;AACH;AACA;AACA,WAAW,eAAe;AAC1B,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,WAAW,eAAe;AAC1B,GAAG;AACH;AACA;AACA;AACA;AACA,WAAW,eAAe;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,eAAe;AAC3D;AACA;AACA;AACA;AACA,kBAAkB,eAAe;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,eAAe;AAC7B,gBAAgB,eAAe;AAC/B;AACA;AACA,wDAAe,qBAAU;;ACnwBzB;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,mCAAmC,MAAM,0DAA0D,MAAM;AACzG;AACA;AACA;AACA;AACA;AACA,4DAAe,cAAc;;AC/E7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe;AACf;AACA;AACA;AACA;;ACfA;AACA;AACO;AACP;AACA;AACO;AACP;AACA;AACO;AACP;AACA,yIAAyI;AACzI,IAAI;AACJ,qIAAqI;AACrI,IAAI;AACJ,+IAA+I;AAC/I,IAAI;AACJ,iJAAiJ;AACjJ;AACA;;AClBA;AACA;AACA;AACA,wBAAwB,QAAQ;AAChC,GAAG;AACH;AACA;AACA,cAAc,QAAQ;AACtB,GAAG;AACH;AACA;AACA;AACA,wBAAwB,QAAQ;AAChC,GAAG;AACH;AACA;AACA,cAAc,QAAQ;AACtB,GAAG;AACH;AACA;AACA,oBAAoB,QAAQ;AAC5B,GAAG;AACH;AACA;AACA,cAAc,QAAQ;AACtB,GAAG;AACH;AACA;AACA,cAAc,QAAQ;AACtB,GAAG;AACH;AACA;AACA,oBAAoB,QAAQ;AAC5B,GAAG;AACH;AACA;AACA,cAAc,QAAQ;AACtB,GAAG;AACH;AACA;AACA,oBAAoB,QAAQ;AAC5B,GAAG;AACH;AACA;AACA,cAAc,QAAQ;AACtB,GAAG;AACH;AACA;AACA,oBAAoB,QAAQ;AAC5B,GAAG;AACH;AACA;AACA,cAAc,QAAQ;AACtB,GAAG;AACH;AACA;AACA,mBAAmB,QAAQ;AAC3B,GAAG;AACH;AACA;AACA,qBAAqB,QAAQ;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA,IAAI;AACJ,yCAAyC,OAAO;AAChD;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA,0DAAe,cAAc;;AClFd;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACRyE;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO,OAAO,MAAM;AAC/B,WAAW,OAAO,OAAO,MAAM;AAC/B,aAAa,MAAM,IAAI,MAAM;AAC7B,YAAY,MAAM,IAAI,MAAM;AAC5B;AACA;AACA,QAAQ,iBAAiB;AACzB;AACA;AACA,GAAG;AACH,QAAQ,iBAAiB;AACzB;AACA;AACA,GAAG;AACH,YAAY,iBAAiB;AAC7B;AACA;AACA,GAAG;AACH;AACA,sDAAe,UAAU;;ACjCzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAAe,cAAc;;ACXd;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBqE;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,eAAe;AACtB;AACA;AACA,GAAG;AACH,WAAW,eAAe;AAC1B;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,SAAS,eAAe;AACxB;AACA;AACA,GAAG;AACH,OAAO,eAAe;AACtB;AACA;AACA,GAAG;AACH,aAAa,eAAe;AAC5B;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,oDAAe,QAAQ;;AC9IR;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,oBAAoB;AACxC;AACA;AACA;AACA;AACA;AACA;;ACzCe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChB+D;AACc;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,mBAAmB;AACpC;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,OAAO,YAAY;AACnB;AACA;AACA;AACA;AACA,GAAG;AACH,WAAW,YAAY;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,SAAS,YAAY;AACrB;AACA;AACA;AACA;AACA,GAAG;AACH,OAAO,YAAY;AACnB;AACA;AACA;AACA;AACA,GAAG;AACH,aAAa,YAAY;AACzB;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,iDAAe,KAAK;;ACjGwC;AACR;AACQ;AACZ;AACN;AAC1C;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,oCAAoC;AACpC,mCAAmC;AACnC;AACA;AACA;AACA,kBAAkB,mBAAc;AAChC,cAAc,eAAU;AACxB,kBAAkB,mBAAc;AAChC,YAAY,aAAQ;AACpB,SAAS,UAAK;AACd;AACA;AACA;AACA;AACA;AACA,4CAAe,MAAM;;AC1BmC;AACxD,oDAAe,KAAa;;ACDc;AACgB;AAClB;AACoB;AACQ;AAC2B;AAC6B;AACzE;AACM;AACW;AACT,CAAC;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,WAAW;AAC5D;AACA,iDAAiD,WAAW;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oEAAoE;AACpE,wBAAwB,4CAA4C;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,QAAQ,iEAAiE;AACpF,WAAW,eAAe;AAC1B,WAAW,QAAQ;AACnB,WAAW,SAAS;AACpB;AACA,WAAW,SAAS;AACpB;AACA,aAAa,QAAQ;AACrB,YAAY,WAAW;AACvB,YAAY,YAAY;AACxB,YAAY,YAAY;AACxB,YAAY,YAAY;AACxB,YAAY,YAAY;AACxB,YAAY,YAAY;AACxB,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eAAe,OAAO;AACpB,UAAM,EAAE,MAAM,IAAI,KAAK;AAEvB,UAAM,SAAS,6CAAM,CAAC,KAAK,CAAC;AAAA,EAC9B;AAAA,EAEA,SAAS;AACP,UAA+B,UAAK,OAA5B,WA5BZ,IA4BmC,IAAV,4BAAU,IAAV,CAAb;AAER,WACE;AAAA,MAAC,iBAAM;AAAN,2DACK,QADL;AAAA,QAEC,UAAU,KAAK;AAAA,QACf,OAAO,MAAM,MAAM;AAAA;AAAA,MAElB;AAAA,IACH;AAAA,EAEJ;AACF;AAjCE,wBADmB,aACZ,aAAY;AAAA,EACjB,UAAU,uCAAmB,CAAC;AAAA,IAC5B,oCAAc;AAAJ,EACZ,CAAC;AAAA,EACD,UAAU,oCAAc;AAAJ,EACpB,OAAO,wCAAoB,CAAC,MAAM;AACpC;;;ACbK;AAG8B;AACH;AACK;AACA;AACN;AACU;AACR;AACK;AACK;AACb;AACY;AACR;AACJ;AACE;AACC;AACF;AACC;AACI;AACL;AACD;AACO;AACP;AACQ;AACP;AACE;AACF;AAGC;AACH;AAGK;AACA;AACE;AACF;AACC;AACC;AACE;AACC;AACJ;AACJ;AACC;AACK;AACN;AACC;AACQ;AACN;AACF;AACI;AACG;AAIC;AACE;AACF;AACC;AACC;AACE;AACC;AACJ;AACJ;AACC;AACK;AACN;AACC;AACQ;AACN;AACF;AACO;AACN;AAIE;AACF;AACA;AACE;AACD;AACC;AACE;AACH;AACJ;AACM;AACL;AACQ;AACR;AAGA;AACD;AACC;AACK;AACA;AAClB","sources":["webpack://@tyk-technologies/tyk-ui/./node_modules/ace-builds/src-noconflict/ace.js","webpack://@tyk-technologies/tyk-ui/./node_modules/ace-builds/src-noconflict/ext-beautify.js","webpack://@tyk-technologies/tyk-ui/./node_modules/ace-builds/src-noconflict/ext-searchbox.js","webpack://@tyk-technologies/tyk-ui/./node_modules/ace-builds/src-noconflict/mode-css.js","webpack://@tyk-technologies/tyk-ui/./node_modules/ace-builds/src-noconflict/mode-golang.js","webpack://@tyk-technologies/tyk-ui/./node_modules/ace-builds/src-noconflict/mode-javascript.js","webpack://@tyk-technologies/tyk-ui/./node_modules/ace-builds/src-noconflict/mode-json.js","webpack://@tyk-technologies/tyk-ui/./node_modules/ace-builds/src-noconflict/mode-jsx.js","webpack://@tyk-technologies/tyk-ui/./node_modules/ace-builds/src-noconflict/mode-python.js","webpack://@tyk-technologies/tyk-ui/./node_modules/ace-builds/src-noconflict/mode-xml.js","webpack://@tyk-technologies/tyk-ui/./node_modules/ace-builds/src-noconflict/theme-github.js","webpack://@tyk-technologies/tyk-ui/./node_modules/flatpickr/dist/flatpickr.min.css","webpack://@tyk-technologies/tyk-ui/./node_modules/css-loader/dist/runtime/api.js","webpack://@tyk-technologies/tyk-ui/./node_modules/css-loader/dist/runtime/sourceMaps.js","webpack://@tyk-technologies/tyk-ui/./node_modules/react-dom/client.js","webpack://@tyk-technologies/tyk-ui/./node_modules/react-fast-compare/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js","webpack://@tyk-technologies/tyk-ui/./node_modules/style-loader/dist/runtime/insertBySelector.js","webpack://@tyk-technologies/tyk-ui/./node_modules/style-loader/dist/runtime/insertStyleElement.js","webpack://@tyk-technologies/tyk-ui/./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js","webpack://@tyk-technologies/tyk-ui/./node_modules/style-loader/dist/runtime/styleDomAPI.js","webpack://@tyk-technologies/tyk-ui/./node_modules/style-loader/dist/runtime/styleTagTransform.js","webpack://@tyk-technologies/tyk-ui/external commonjs2 \"react-dom\"","webpack://@tyk-technologies/tyk-ui/webpack/bootstrap","webpack://@tyk-technologies/tyk-ui/webpack/runtime/amd define","webpack://@tyk-technologies/tyk-ui/webpack/runtime/compat get default export","webpack://@tyk-technologies/tyk-ui/webpack/runtime/define property getters","webpack://@tyk-technologies/tyk-ui/webpack/runtime/hasOwnProperty shorthand","webpack://@tyk-technologies/tyk-ui/webpack/runtime/make namespace object","webpack://@tyk-technologies/tyk-ui/webpack/runtime/node module decorator","webpack://@tyk-technologies/tyk-ui/webpack/runtime/publicPath","webpack://@tyk-technologies/tyk-ui/webpack/runtime/nonce","webpack://@tyk-technologies/tyk-ui/external commonjs2 \"react\"","webpack://@tyk-technologies/tyk-ui/external commonjs2 \"prop-types\"","webpack://@tyk-technologies/tyk-ui/./src/components/Accordion/js/AccordionContext.js","webpack://@tyk-technologies/tyk-ui/./src/components/Accordion/js/AccordionItemContext.js","webpack://@tyk-technologies/tyk-ui/./src/components/Icon/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Accordion/js/AccordionItemTrigger.js","webpack://@tyk-technologies/tyk-ui/./src/components/Accordion/js/AccordionItem.js","webpack://@tyk-technologies/tyk-ui/./src/components/Accordion/js/AccordionItemHeader.js","webpack://@tyk-technologies/tyk-ui/external commonjs2 \"react-transition-group\"","webpack://@tyk-technologies/tyk-ui/./src/hooks/usePrevious/index.js","webpack://@tyk-technologies/tyk-ui/./src/hooks/useTimeout/index.js","webpack://@tyk-technologies/tyk-ui/./src/hooks/useInterval/index.js","webpack://@tyk-technologies/tyk-ui/./src/hooks/useEventListener/index.js","webpack://@tyk-technologies/tyk-ui/./src/hooks/useComponentSize/index.js","webpack://@tyk-technologies/tyk-ui/./src/hooks/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Collapsible/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Accordion/js/AccordionItemContent.js","webpack://@tyk-technologies/tyk-ui/./src/components/Accordion/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Button/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/ButtonGroup/index.js","webpack://@tyk-technologies/tyk-ui/external commonjs2 \"echarts\"","webpack://@tyk-technologies/tyk-ui/external commonjs2 \"immutable\"","webpack://@tyk-technologies/tyk-ui/./src/utils/debounce/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Loader/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Message/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Chart/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Toast/js/ToastMessage.js","webpack://@tyk-technologies/tyk-ui/./src/components/Toast/js/ToastContainer.js","webpack://@tyk-technologies/tyk-ui/./src/components/Toast/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/CopyToClipboard/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Modal/js/ModalFooter.js","webpack://@tyk-technologies/tyk-ui/./src/components/Modal/js/ModalBody.js","webpack://@tyk-technologies/tyk-ui/./src/components/Modal/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Confirm/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/FixedWrapper/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/InfiniteScroller/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/FloatingContainer/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/InfoNote/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/List/js/ListItem.js","webpack://@tyk-technologies/tyk-ui/./src/components/List/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/NavBar/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Navigation/js/NavigationItem.js","webpack://@tyk-technologies/tyk-ui/./src/components/Navigation/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Panel/panel-context.js","webpack://@tyk-technologies/tyk-ui/./src/components/Panel/js/PanelBody.js","webpack://@tyk-technologies/tyk-ui/./src/components/Panel/js/PanelFooter.js","webpack://@tyk-technologies/tyk-ui/./src/components/Panel/js/PanelHeader.js","webpack://@tyk-technologies/tyk-ui/./src/components/Panel/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Pill/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/RevealPanel/js/RevealPanelService.js","webpack://@tyk-technologies/tyk-ui/./src/components/RevealPanel/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Tabs/tabs-context.js","webpack://@tyk-technologies/tyk-ui/./src/components/Tabs/js/TabContext.js","webpack://@tyk-technologies/tyk-ui/./src/components/Tabs/js/TabContent.js","webpack://@tyk-technologies/tyk-ui/./src/components/Tabs/js/Tab.js","webpack://@tyk-technologies/tyk-ui/./src/components/Tabs/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Tooltip/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/TextEllipsis/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Pagination/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Table/tableContext.js","webpack://@tyk-technologies/tyk-ui/./src/components/Table/js/header-cell.js","webpack://@tyk-technologies/tyk-ui/./src/components/Table/js/header.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Checkbox/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Table/js/cell.js","webpack://@tyk-technologies/tyk-ui/./src/components/Table/js/row.js","webpack://@tyk-technologies/tyk-ui/./src/components/Table/js/body.js","webpack://@tyk-technologies/tyk-ui/./src/components/Table/index.js","webpack://@tyk-technologies/tyk-ui/./src/layout/Column/index.js","webpack://@tyk-technologies/tyk-ui/./src/layout/Row/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Dropdown/dropdown-context.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Dropdown/js/DropdownItem.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Dropdown/index.js","webpack://@tyk-technologies/tyk-ui/external commonjs2 \"react-ace\"","webpack://@tyk-technologies/tyk-ui/./src/form/components/CodeEditor/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Combobox/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Combobox2/js/Value.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Combobox2/js/List.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Combobox2/index.js","webpack://@tyk-technologies/tyk-ui/external commonjs2 \"flatpickr\"","webpack://@tyk-technologies/tyk-ui/./node_modules/flatpickr/dist/flatpickr.min.css?e03b","webpack://@tyk-technologies/tyk-ui/./src/form/components/DatePicker/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/@babel/runtime/helpers/esm/typeof.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/requiredArgs/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/isDate/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/toDate/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/isValid/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/toInteger/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/addMilliseconds/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/subMilliseconds/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/getUTCDayOfYear/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/startOfUTCISOWeek/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/getUTCISOWeekYear/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/startOfUTCISOWeekYear/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/getUTCISOWeek/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/defaultOptions/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/startOfUTCWeek/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/getUTCWeekYear/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/startOfUTCWeekYear/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/getUTCWeek/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/addLeadingZeros/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/format/lightFormatters/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/format/formatters/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/format/longFormatters/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/getTimezoneOffsetInMilliseconds/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/protectedTokens/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/locale/en-US/_lib/formatDistance/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/locale/_lib/buildFormatLongFn/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/locale/en-US/_lib/formatLong/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/locale/en-US/_lib/formatRelative/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/locale/_lib/buildLocalizeFn/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/locale/en-US/_lib/localize/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/locale/_lib/buildMatchFn/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/locale/_lib/buildMatchPatternFn/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/locale/en-US/_lib/match/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/locale/en-US/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/defaultLocale/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/format/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/EditableList/js/EditableListForm.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/EditableList/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/EditableList2/Header.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/EditableList2/ListHeader.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/EditableList2/FieldsList.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/EditableList2/validate-values.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/EditableList2/with-validation.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/EditableList2/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/FileInput/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Input/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Input2/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Multiselect/js/MultiselectContext.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Multiselect/js/MultiselectItem.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Multiselect/js/MultiselectPanel.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Multiselect/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Radio/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Select/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/SelectableList/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Textarea/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Toggle/js/ToggleContext.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Toggle/js/ToggleItem.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Toggle/js/ToggleItemWrapper.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Toggle/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/StringBuilder/js/service.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/StringBuilder/js/string-input.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/StringBuilder/js/invalid-token.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/StringBuilder/js/tokenized-string.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/StringBuilder/js/options-list.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/StringBuilder/js/string-builder-footer.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/StringBuilder/index.js","webpack://@tyk-technologies/tyk-ui/./src/utils/config/config.js","webpack://@tyk-technologies/tyk-ui/./src/utils/formik/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikCheckbox/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikCodeEditor/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikCombobox/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikCombobox2/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikDatePicker/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikEditableList/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikEditableList2/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikFileInput/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikInput/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikInput2/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikMultiselect/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikRadio/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikSelect/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikSelectableList/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikTextarea/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikToggle/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikStringBuilder/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/redux-form/FieldCodeEditor/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/redux-form/FieldCombobox/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/redux-form/FieldDropdown/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/redux-form/FieldPagination/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/redux-form/FieldCombobox2/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/redux-form/FieldDatePicker/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/redux-form/FieldEditableList/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/redux-form/FieldFileInput/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/redux-form/FieldInput/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/redux-form/FieldMultiselect/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/redux-form/FieldSelect/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/redux-form/FieldSelectableList/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/redux-form/FieldToggle/index.js","webpack://@tyk-technologies/tyk-ui/./src/index.js"],"sourcesContent":["/* ***** BEGIN LICENSE BLOCK *****\n * Distributed under the BSD license:\n *\n * Copyright (c) 2010, Ajax.org B.V.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright\n * notice, this list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright\n * notice, this list of conditions and the following disclaimer in the\n * documentation and/or other materials provided with the distribution.\n * * Neither the name of Ajax.org B.V. nor the\n * names of its contributors may be used to endorse or promote products\n * derived from this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\n * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY\n * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\n * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *\n * ***** END LICENSE BLOCK ***** */\n\n/**\n * Define a module along with a payload\n * @param module a name for the payload\n * @param payload a function to call with (require, exports, module) params\n */\n\n(function() {\n\nvar ACE_NAMESPACE = \"ace\";\n\nvar global = (function() { return this; })();\nif (!global && typeof window != \"undefined\") global = window; // strict mode\n\n\nif (!ACE_NAMESPACE && typeof requirejs !== \"undefined\")\n return;\n\n\nvar define = function(module, deps, payload) {\n if (typeof module !== \"string\") {\n if (define.original)\n define.original.apply(this, arguments);\n else {\n console.error(\"dropping module because define wasn\\'t a string.\");\n console.trace();\n }\n return;\n }\n if (arguments.length == 2)\n payload = deps;\n if (!define.modules[module]) {\n define.payloads[module] = payload;\n define.modules[module] = null;\n }\n};\n\ndefine.modules = {};\ndefine.payloads = {};\n\n/**\n * Get at functionality define()ed using the function above\n */\nvar _require = function(parentId, module, callback) {\n if (typeof module === \"string\") {\n var payload = lookup(parentId, module);\n if (payload != undefined) {\n callback && callback();\n return payload;\n }\n } else if (Object.prototype.toString.call(module) === \"[object Array]\") {\n var params = [];\n for (var i = 0, l = module.length; i < l; ++i) {\n var dep = lookup(parentId, module[i]);\n if (dep == undefined && require.original)\n return;\n params.push(dep);\n }\n return callback && callback.apply(null, params) || true;\n }\n};\n\nvar require = function(module, callback) {\n var packagedModule = _require(\"\", module, callback);\n if (packagedModule == undefined && require.original)\n return require.original.apply(this, arguments);\n return packagedModule;\n};\n\nvar normalizeModule = function(parentId, moduleName) {\n // normalize plugin requires\n if (moduleName.indexOf(\"!\") !== -1) {\n var chunks = moduleName.split(\"!\");\n return normalizeModule(parentId, chunks[0]) + \"!\" + normalizeModule(parentId, chunks[1]);\n }\n // normalize relative requires\n if (moduleName.charAt(0) == \".\") {\n var base = parentId.split(\"/\").slice(0, -1).join(\"/\");\n moduleName = base + \"/\" + moduleName;\n\n while(moduleName.indexOf(\".\") !== -1 && previous != moduleName) {\n var previous = moduleName;\n moduleName = moduleName.replace(/\\/\\.\\//, \"/\").replace(/[^\\/]+\\/\\.\\.\\//, \"\");\n }\n }\n return moduleName;\n};\n\n/**\n * Internal function to lookup moduleNames and resolve them by calling the\n * definition function if needed.\n */\nvar lookup = function(parentId, moduleName) {\n moduleName = normalizeModule(parentId, moduleName);\n\n var module = define.modules[moduleName];\n if (!module) {\n module = define.payloads[moduleName];\n if (typeof module === 'function') {\n var exports = {};\n var mod = {\n id: moduleName,\n uri: '',\n exports: exports,\n packaged: true\n };\n\n var req = function(module, callback) {\n return _require(moduleName, module, callback);\n };\n\n var returnValue = module(req, exports, mod);\n exports = returnValue || mod.exports;\n define.modules[moduleName] = exports;\n delete define.payloads[moduleName];\n }\n module = define.modules[moduleName] = exports || module;\n }\n return module;\n};\n\nfunction exportAce(ns) {\n var root = global;\n if (ns) {\n if (!global[ns])\n global[ns] = {};\n root = global[ns];\n }\n\n if (!root.define || !root.define.packaged) {\n define.original = root.define;\n root.define = define;\n root.define.packaged = true;\n }\n\n if (!root.require || !root.require.packaged) {\n require.original = root.require;\n root.require = require;\n root.require.packaged = true;\n }\n}\n\nexportAce(ACE_NAMESPACE);\n\n})();\n\nace.define(\"ace/lib/es6-shim\",[\"require\",\"exports\",\"module\"], function(require, exports, module){function defineProp(obj, name, val) {\n Object.defineProperty(obj, name, {\n value: val,\n enumerable: false,\n writable: true,\n configurable: true\n });\n}\nif (!String.prototype.startsWith) {\n defineProp(String.prototype, \"startsWith\", function (searchString, position) {\n position = position || 0;\n return this.lastIndexOf(searchString, position) === position;\n });\n}\nif (!String.prototype.endsWith) {\n defineProp(String.prototype, \"endsWith\", function (searchString, position) {\n var subjectString = this;\n if (position === undefined || position > subjectString.length) {\n position = subjectString.length;\n }\n position -= searchString.length;\n var lastIndex = subjectString.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n });\n}\nif (!String.prototype.repeat) {\n defineProp(String.prototype, \"repeat\", function (count) {\n var result = \"\";\n var string = this;\n while (count > 0) {\n if (count & 1)\n result += string;\n if ((count >>= 1))\n string += string;\n }\n return result;\n });\n}\nif (!String.prototype.includes) {\n defineProp(String.prototype, \"includes\", function (str, position) {\n return this.indexOf(str, position) != -1;\n });\n}\nif (!Object.assign) {\n Object.assign = function (target) {\n if (target === undefined || target === null) {\n throw new TypeError(\"Cannot convert undefined or null to object\");\n }\n var output = Object(target);\n for (var index = 1; index < arguments.length; index++) {\n var source = arguments[index];\n if (source !== undefined && source !== null) {\n Object.keys(source).forEach(function (key) {\n output[key] = source[key];\n });\n }\n }\n return output;\n };\n}\nif (!Object.values) {\n Object.values = function (o) {\n return Object.keys(o).map(function (k) {\n return o[k];\n });\n };\n}\nif (!Array.prototype.find) {\n defineProp(Array.prototype, \"find\", function (predicate) {\n var len = this.length;\n var thisArg = arguments[1];\n for (var k = 0; k < len; k++) {\n var kValue = this[k];\n if (predicate.call(thisArg, kValue, k, this)) {\n return kValue;\n }\n }\n });\n}\nif (!Array.prototype.findIndex) {\n defineProp(Array.prototype, \"findIndex\", function (predicate) {\n var len = this.length;\n var thisArg = arguments[1];\n for (var k = 0; k < len; k++) {\n var kValue = this[k];\n if (predicate.call(thisArg, kValue, k, this)) {\n return k;\n }\n }\n });\n}\nif (!Array.prototype.includes) {\n defineProp(Array.prototype, \"includes\", function (item, position) {\n return this.indexOf(item, position) != -1;\n });\n}\nif (!Array.prototype.fill) {\n defineProp(Array.prototype, \"fill\", function (value) {\n var O = this;\n var len = O.length >>> 0;\n var start = arguments[1];\n var relativeStart = start >> 0;\n var k = relativeStart < 0\n ? Math.max(len + relativeStart, 0)\n : Math.min(relativeStart, len);\n var end = arguments[2];\n var relativeEnd = end === undefined ? len : end >> 0;\n var final = relativeEnd < 0\n ? Math.max(len + relativeEnd, 0)\n : Math.min(relativeEnd, len);\n while (k < final) {\n O[k] = value;\n k++;\n }\n return O;\n });\n}\nif (!Array.of) {\n defineProp(Array, \"of\", function () {\n return Array.prototype.slice.call(arguments);\n });\n}\n\n});\n\nace.define(\"ace/lib/fixoldbrowsers\",[\"require\",\"exports\",\"module\",\"ace/lib/es6-shim\"], function(require, exports, module){// vim:set ts=4 sts=4 sw=4 st:\n\"use strict\";\nrequire(\"./es6-shim\");\n\n});\n\nace.define(\"ace/lib/deep_copy\",[\"require\",\"exports\",\"module\"], function(require, exports, module){exports.deepCopy = function deepCopy(obj) {\n if (typeof obj !== \"object\" || !obj)\n return obj;\n var copy;\n if (Array.isArray(obj)) {\n copy = [];\n for (var key = 0; key < obj.length; key++) {\n copy[key] = deepCopy(obj[key]);\n }\n return copy;\n }\n if (Object.prototype.toString.call(obj) !== \"[object Object]\")\n return obj;\n copy = {};\n for (var key in obj)\n copy[key] = deepCopy(obj[key]);\n return copy;\n};\n\n});\n\nace.define(\"ace/lib/lang\",[\"require\",\"exports\",\"module\",\"ace/lib/deep_copy\"], function(require, exports, module){\"use strict\";\nexports.last = function (a) {\n return a[a.length - 1];\n};\nexports.stringReverse = function (string) {\n return string.split(\"\").reverse().join(\"\");\n};\nexports.stringRepeat = function (string, count) {\n var result = '';\n while (count > 0) {\n if (count & 1)\n result += string;\n if (count >>= 1)\n string += string;\n }\n return result;\n};\nvar trimBeginRegexp = /^\\s\\s*/;\nvar trimEndRegexp = /\\s\\s*$/;\nexports.stringTrimLeft = function (string) {\n return string.replace(trimBeginRegexp, '');\n};\nexports.stringTrimRight = function (string) {\n return string.replace(trimEndRegexp, '');\n};\nexports.copyObject = function (obj) {\n var copy = {};\n for (var key in obj) {\n copy[key] = obj[key];\n }\n return copy;\n};\nexports.copyArray = function (array) {\n var copy = [];\n for (var i = 0, l = array.length; i < l; i++) {\n if (array[i] && typeof array[i] == \"object\")\n copy[i] = this.copyObject(array[i]);\n else\n copy[i] = array[i];\n }\n return copy;\n};\nexports.deepCopy = require(\"./deep_copy\").deepCopy;\nexports.arrayToMap = function (arr) {\n var map = {};\n for (var i = 0; i < arr.length; i++) {\n map[arr[i]] = 1;\n }\n return map;\n};\nexports.createMap = function (props) {\n var map = Object.create(null);\n for (var i in props) {\n map[i] = props[i];\n }\n return map;\n};\nexports.arrayRemove = function (array, value) {\n for (var i = 0; i <= array.length; i++) {\n if (value === array[i]) {\n array.splice(i, 1);\n }\n }\n};\nexports.escapeRegExp = function (str) {\n return str.replace(/([.*+?^${}()|[\\]\\/\\\\])/g, '\\\\$1');\n};\nexports.escapeHTML = function (str) {\n return (\"\" + str).replace(/&/g, \"&\").replace(/\"/g, \""\").replace(/'/g, \"'\").replace(/ 0xffff ? 2 : 1;\n};\n\n});\n\nace.define(\"ace/lib/useragent\",[\"require\",\"exports\",\"module\"], function(require, exports, module){\"use strict\";\nexports.OS = {\n LINUX: \"LINUX\",\n MAC: \"MAC\",\n WINDOWS: \"WINDOWS\"\n};\nexports.getOS = function () {\n if (exports.isMac) {\n return exports.OS.MAC;\n }\n else if (exports.isLinux) {\n return exports.OS.LINUX;\n }\n else {\n return exports.OS.WINDOWS;\n }\n};\nvar _navigator = typeof navigator == \"object\" ? navigator : {};\nvar os = (/mac|win|linux/i.exec(_navigator.platform) || [\"other\"])[0].toLowerCase();\nvar ua = _navigator.userAgent || \"\";\nvar appName = _navigator.appName || \"\";\nexports.isWin = (os == \"win\");\nexports.isMac = (os == \"mac\");\nexports.isLinux = (os == \"linux\");\nexports.isIE =\n (appName == \"Microsoft Internet Explorer\" || appName.indexOf(\"MSAppHost\") >= 0)\n ? parseFloat((ua.match(/(?:MSIE |Trident\\/[0-9]+[\\.0-9]+;.*rv:)([0-9]+[\\.0-9]+)/) || [])[1])\n : parseFloat((ua.match(/(?:Trident\\/[0-9]+[\\.0-9]+;.*rv:)([0-9]+[\\.0-9]+)/) || [])[1]); // for ie\nexports.isOldIE = exports.isIE && exports.isIE < 9;\nexports.isGecko = exports.isMozilla = ua.match(/ Gecko\\/\\d+/);\nexports.isOpera = typeof opera == \"object\" && Object.prototype.toString.call(window.opera) == \"[object Opera]\";\nexports.isWebKit = parseFloat(ua.split(\"WebKit/\")[1]) || undefined;\nexports.isChrome = parseFloat(ua.split(\" Chrome/\")[1]) || undefined;\nexports.isSafari = parseFloat(ua.split(\" Safari/\")[1]) && !exports.isChrome || undefined;\nexports.isEdge = parseFloat(ua.split(\" Edge/\")[1]) || undefined;\nexports.isAIR = ua.indexOf(\"AdobeAIR\") >= 0;\nexports.isAndroid = ua.indexOf(\"Android\") >= 0;\nexports.isChromeOS = ua.indexOf(\" CrOS \") >= 0;\nexports.isIOS = /iPad|iPhone|iPod/.test(ua) && !window.MSStream;\nif (exports.isIOS)\n exports.isMac = true;\nexports.isMobile = exports.isIOS || exports.isAndroid;\n\n});\n\nace.define(\"ace/lib/dom\",[\"require\",\"exports\",\"module\",\"ace/lib/useragent\"], function(require, exports, module){\"use strict\";\nvar useragent = require(\"./useragent\");\nvar XHTML_NS = \"http://www.w3.org/1999/xhtml\";\nexports.buildDom = function buildDom(arr, parent, refs) {\n if (typeof arr == \"string\" && arr) {\n var txt = document.createTextNode(arr);\n if (parent)\n parent.appendChild(txt);\n return txt;\n }\n if (!Array.isArray(arr)) {\n if (arr && arr.appendChild && parent)\n parent.appendChild(arr);\n return arr;\n }\n if (typeof arr[0] != \"string\" || !arr[0]) {\n var els = [];\n for (var i = 0; i < arr.length; i++) {\n var ch = buildDom(arr[i], parent, refs);\n ch && els.push(ch);\n }\n return els;\n }\n var el = document.createElement(arr[0]);\n var options = arr[1];\n var childIndex = 1;\n if (options && typeof options == \"object\" && !Array.isArray(options))\n childIndex = 2;\n for (var i = childIndex; i < arr.length; i++)\n buildDom(arr[i], el, refs);\n if (childIndex == 2) {\n Object.keys(options).forEach(function (n) {\n var val = options[n];\n if (n === \"class\") {\n el.className = Array.isArray(val) ? val.join(\" \") : val;\n }\n else if (typeof val == \"function\" || n == \"value\" || n[0] == \"$\") {\n el[n] = val;\n }\n else if (n === \"ref\") {\n if (refs)\n refs[val] = el;\n }\n else if (n === \"style\") {\n if (typeof val == \"string\")\n el.style.cssText = val;\n }\n else if (val != null) {\n el.setAttribute(n, val);\n }\n });\n }\n if (parent)\n parent.appendChild(el);\n return el;\n};\nexports.getDocumentHead = function (doc) {\n if (!doc)\n doc = document;\n return doc.head || doc.getElementsByTagName(\"head\")[0] || doc.documentElement;\n};\nexports.createElement = function (tag, ns) {\n return document.createElementNS ?\n document.createElementNS(ns || XHTML_NS, tag) :\n document.createElement(tag);\n};\nexports.removeChildren = function (element) {\n element.innerHTML = \"\";\n};\nexports.createTextNode = function (textContent, element) {\n var doc = element ? element.ownerDocument : document;\n return doc.createTextNode(textContent);\n};\nexports.createFragment = function (element) {\n var doc = element ? element.ownerDocument : document;\n return doc.createDocumentFragment();\n};\nexports.hasCssClass = function (el, name) {\n var classes = (el.className + \"\").split(/\\s+/g);\n return classes.indexOf(name) !== -1;\n};\nexports.addCssClass = function (el, name) {\n if (!exports.hasCssClass(el, name)) {\n el.className += \" \" + name;\n }\n};\nexports.removeCssClass = function (el, name) {\n var classes = el.className.split(/\\s+/g);\n while (true) {\n var index = classes.indexOf(name);\n if (index == -1) {\n break;\n }\n classes.splice(index, 1);\n }\n el.className = classes.join(\" \");\n};\nexports.toggleCssClass = function (el, name) {\n var classes = el.className.split(/\\s+/g), add = true;\n while (true) {\n var index = classes.indexOf(name);\n if (index == -1) {\n break;\n }\n add = false;\n classes.splice(index, 1);\n }\n if (add)\n classes.push(name);\n el.className = classes.join(\" \");\n return add;\n};\nexports.setCssClass = function (node, className, include) {\n if (include) {\n exports.addCssClass(node, className);\n }\n else {\n exports.removeCssClass(node, className);\n }\n};\nexports.hasCssString = function (id, doc) {\n var index = 0, sheets;\n doc = doc || document;\n if ((sheets = doc.querySelectorAll(\"style\"))) {\n while (index < sheets.length) {\n if (sheets[index++].id === id) {\n return true;\n }\n }\n }\n};\nexports.removeElementById = function (id, doc) {\n doc = doc || document;\n if (doc.getElementById(id)) {\n doc.getElementById(id).remove();\n }\n};\nvar strictCSP;\nvar cssCache = [];\nexports.useStrictCSP = function (value) {\n strictCSP = value;\n if (value == false)\n insertPendingStyles();\n else if (!cssCache)\n cssCache = [];\n};\nfunction insertPendingStyles() {\n var cache = cssCache;\n cssCache = null;\n cache && cache.forEach(function (item) {\n importCssString(item[0], item[1]);\n });\n}\nfunction importCssString(cssText, id, target) {\n if (typeof document == \"undefined\")\n return;\n if (cssCache) {\n if (target) {\n insertPendingStyles();\n }\n else if (target === false) {\n return cssCache.push([cssText, id]);\n }\n }\n if (strictCSP)\n return;\n var container = target;\n if (!target || !target.getRootNode) {\n container = document;\n }\n else {\n container = target.getRootNode();\n if (!container || container == target)\n container = document;\n }\n var doc = container.ownerDocument || container;\n if (id && exports.hasCssString(id, container))\n return null;\n if (id)\n cssText += \"\\n/*# sourceURL=ace/css/\" + id + \" */\";\n var style = exports.createElement(\"style\");\n style.appendChild(doc.createTextNode(cssText));\n if (id)\n style.id = id;\n if (container == doc)\n container = exports.getDocumentHead(doc);\n container.insertBefore(style, container.firstChild);\n}\nexports.importCssString = importCssString;\nexports.importCssStylsheet = function (uri, doc) {\n exports.buildDom([\"link\", { rel: \"stylesheet\", href: uri }], exports.getDocumentHead(doc));\n};\nexports.scrollbarWidth = function (doc) {\n var inner = exports.createElement(\"ace_inner\");\n inner.style.width = \"100%\";\n inner.style.minWidth = \"0px\";\n inner.style.height = \"200px\";\n inner.style.display = \"block\";\n var outer = exports.createElement(\"ace_outer\");\n var style = outer.style;\n style.position = \"absolute\";\n style.left = \"-10000px\";\n style.overflow = \"hidden\";\n style.width = \"200px\";\n style.minWidth = \"0px\";\n style.height = \"150px\";\n style.display = \"block\";\n outer.appendChild(inner);\n var body = (doc && doc.documentElement) || (document && document.documentElement);\n if (!body)\n return 0;\n body.appendChild(outer);\n var noScrollbar = inner.offsetWidth;\n style.overflow = \"scroll\";\n var withScrollbar = inner.offsetWidth;\n if (noScrollbar === withScrollbar) {\n withScrollbar = outer.clientWidth;\n }\n body.removeChild(outer);\n return noScrollbar - withScrollbar;\n};\nexports.computedStyle = function (element, style) {\n return window.getComputedStyle(element, \"\") || {};\n};\nexports.setStyle = function (styles, property, value) {\n if (styles[property] !== value) {\n styles[property] = value;\n }\n};\nexports.HAS_CSS_ANIMATION = false;\nexports.HAS_CSS_TRANSFORMS = false;\nexports.HI_DPI = useragent.isWin\n ? typeof window !== \"undefined\" && window.devicePixelRatio >= 1.5\n : true;\nif (useragent.isChromeOS)\n exports.HI_DPI = false;\nif (typeof document !== \"undefined\") {\n var div = document.createElement(\"div\");\n if (exports.HI_DPI && div.style.transform !== undefined)\n exports.HAS_CSS_TRANSFORMS = true;\n if (!useragent.isEdge && typeof div.style.animationName !== \"undefined\")\n exports.HAS_CSS_ANIMATION = true;\n div = null;\n}\nif (exports.HAS_CSS_TRANSFORMS) {\n exports.translate = function (element, tx, ty) {\n element.style.transform = \"translate(\" + Math.round(tx) + \"px, \" + Math.round(ty) + \"px)\";\n };\n}\nelse {\n exports.translate = function (element, tx, ty) {\n element.style.top = Math.round(ty) + \"px\";\n element.style.left = Math.round(tx) + \"px\";\n };\n}\n\n});\n\nace.define(\"ace/lib/net\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"], function(require, exports, module){/*\n * based on code from:\n *\n * @license RequireJS text 0.25.0 Copyright (c) 2010-2011, The Dojo Foundation All Rights Reserved.\n * Available via the MIT or new BSD license.\n * see: http://github.com/jrburke/requirejs for details\n */\n\"use strict\";\nvar dom = require(\"./dom\");\nexports.get = function (url, callback) {\n var xhr = new XMLHttpRequest();\n xhr.open('GET', url, true);\n xhr.onreadystatechange = function () {\n if (xhr.readyState === 4) {\n callback(xhr.responseText);\n }\n };\n xhr.send(null);\n};\nexports.loadScript = function (path, callback) {\n var head = dom.getDocumentHead();\n var s = document.createElement('script');\n s.src = path;\n head.appendChild(s);\n s.onload = s.onreadystatechange = function (_, isAbort) {\n if (isAbort || !s.readyState || s.readyState == \"loaded\" || s.readyState == \"complete\") {\n s = s.onload = s.onreadystatechange = null;\n if (!isAbort)\n callback();\n }\n };\n};\nexports.qualifyURL = function (url) {\n var a = document.createElement('a');\n a.href = url;\n return a.href;\n};\n\n});\n\nace.define(\"ace/lib/oop\",[\"require\",\"exports\",\"module\"], function(require, exports, module){\"use strict\";\nexports.inherits = function (ctor, superCtor) {\n ctor.super_ = superCtor;\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n};\nexports.mixin = function (obj, mixin) {\n for (var key in mixin) {\n obj[key] = mixin[key];\n }\n return obj;\n};\nexports.implement = function (proto, mixin) {\n exports.mixin(proto, mixin);\n};\n\n});\n\nace.define(\"ace/lib/event_emitter\",[\"require\",\"exports\",\"module\"], function(require, exports, module){\"use strict\";\nvar EventEmitter = {};\nvar stopPropagation = function () { this.propagationStopped = true; };\nvar preventDefault = function () { this.defaultPrevented = true; };\nEventEmitter._emit =\n EventEmitter._dispatchEvent = function (eventName, e) {\n this._eventRegistry || (this._eventRegistry = {});\n this._defaultHandlers || (this._defaultHandlers = {});\n var listeners = this._eventRegistry[eventName] || [];\n var defaultHandler = this._defaultHandlers[eventName];\n if (!listeners.length && !defaultHandler)\n return;\n if (typeof e != \"object\" || !e)\n e = {};\n if (!e.type)\n e.type = eventName;\n if (!e.stopPropagation)\n e.stopPropagation = stopPropagation;\n if (!e.preventDefault)\n e.preventDefault = preventDefault;\n listeners = listeners.slice();\n for (var i = 0; i < listeners.length; i++) {\n listeners[i](e, this);\n if (e.propagationStopped)\n break;\n }\n if (defaultHandler && !e.defaultPrevented)\n return defaultHandler(e, this);\n };\nEventEmitter._signal = function (eventName, e) {\n var listeners = (this._eventRegistry || {})[eventName];\n if (!listeners)\n return;\n listeners = listeners.slice();\n for (var i = 0; i < listeners.length; i++)\n listeners[i](e, this);\n};\nEventEmitter.once = function (eventName, callback) {\n var _self = this;\n this.on(eventName, function newCallback() {\n _self.off(eventName, newCallback);\n callback.apply(null, arguments);\n });\n if (!callback) {\n return new Promise(function (resolve) {\n callback = resolve;\n });\n }\n};\nEventEmitter.setDefaultHandler = function (eventName, callback) {\n var handlers = this._defaultHandlers;\n if (!handlers)\n handlers = this._defaultHandlers = { _disabled_: {} };\n if (handlers[eventName]) {\n var old = handlers[eventName];\n var disabled = handlers._disabled_[eventName];\n if (!disabled)\n handlers._disabled_[eventName] = disabled = [];\n disabled.push(old);\n var i = disabled.indexOf(callback);\n if (i != -1)\n disabled.splice(i, 1);\n }\n handlers[eventName] = callback;\n};\nEventEmitter.removeDefaultHandler = function (eventName, callback) {\n var handlers = this._defaultHandlers;\n if (!handlers)\n return;\n var disabled = handlers._disabled_[eventName];\n if (handlers[eventName] == callback) {\n if (disabled)\n this.setDefaultHandler(eventName, disabled.pop());\n }\n else if (disabled) {\n var i = disabled.indexOf(callback);\n if (i != -1)\n disabled.splice(i, 1);\n }\n};\nEventEmitter.on =\n EventEmitter.addEventListener = function (eventName, callback, capturing) {\n this._eventRegistry = this._eventRegistry || {};\n var listeners = this._eventRegistry[eventName];\n if (!listeners)\n listeners = this._eventRegistry[eventName] = [];\n if (listeners.indexOf(callback) == -1)\n listeners[capturing ? \"unshift\" : \"push\"](callback);\n return callback;\n };\nEventEmitter.off =\n EventEmitter.removeListener =\n EventEmitter.removeEventListener = function (eventName, callback) {\n this._eventRegistry = this._eventRegistry || {};\n var listeners = this._eventRegistry[eventName];\n if (!listeners)\n return;\n var index = listeners.indexOf(callback);\n if (index !== -1)\n listeners.splice(index, 1);\n };\nEventEmitter.removeAllListeners = function (eventName) {\n if (!eventName)\n this._eventRegistry = this._defaultHandlers = undefined;\n if (this._eventRegistry)\n this._eventRegistry[eventName] = undefined;\n if (this._defaultHandlers)\n this._defaultHandlers[eventName] = undefined;\n};\nexports.EventEmitter = EventEmitter;\n\n});\n\nace.define(\"ace/lib/report_error\",[\"require\",\"exports\",\"module\"], function(require, exports, module){exports.reportError = function reportError(msg, data) {\n var e = new Error(msg);\n e.data = data;\n if (typeof console == \"object\" && console.error)\n console.error(e);\n setTimeout(function () { throw e; });\n};\n\n});\n\nace.define(\"ace/lib/app_config\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/event_emitter\",\"ace/lib/report_error\"], function(require, exports, module){\"no use strict\";\nvar oop = require(\"./oop\");\nvar EventEmitter = require(\"./event_emitter\").EventEmitter;\nvar reportError = require(\"./report_error\").reportError;\nvar optionsProvider = {\n setOptions: function (optList) {\n Object.keys(optList).forEach(function (key) {\n this.setOption(key, optList[key]);\n }, this);\n },\n getOptions: function (optionNames) {\n var result = {};\n if (!optionNames) {\n var options = this.$options;\n optionNames = Object.keys(options).filter(function (key) {\n return !options[key].hidden;\n });\n }\n else if (!Array.isArray(optionNames)) {\n result = optionNames;\n optionNames = Object.keys(result);\n }\n optionNames.forEach(function (key) {\n result[key] = this.getOption(key);\n }, this);\n return result;\n },\n setOption: function (name, value) {\n if (this[\"$\" + name] === value)\n return;\n var opt = this.$options[name];\n if (!opt) {\n return warn('misspelled option \"' + name + '\"');\n }\n if (opt.forwardTo)\n return this[opt.forwardTo] && this[opt.forwardTo].setOption(name, value);\n if (!opt.handlesSet)\n this[\"$\" + name] = value;\n if (opt && opt.set)\n opt.set.call(this, value);\n },\n getOption: function (name) {\n var opt = this.$options[name];\n if (!opt) {\n return warn('misspelled option \"' + name + '\"');\n }\n if (opt.forwardTo)\n return this[opt.forwardTo] && this[opt.forwardTo].getOption(name);\n return opt && opt.get ? opt.get.call(this) : this[\"$\" + name];\n }\n};\nfunction warn(message) {\n if (typeof console != \"undefined\" && console.warn)\n console.warn.apply(console, arguments);\n}\nvar messages;\nvar AppConfig = /** @class */ (function () {\n function AppConfig() {\n this.$defaultOptions = {};\n }\n AppConfig.prototype.defineOptions = function (obj, path, options) {\n if (!obj.$options)\n this.$defaultOptions[path] = obj.$options = {};\n Object.keys(options).forEach(function (key) {\n var opt = options[key];\n if (typeof opt == \"string\")\n opt = { forwardTo: opt };\n opt.name || (opt.name = key);\n obj.$options[opt.name] = opt;\n if (\"initialValue\" in opt)\n obj[\"$\" + opt.name] = opt.initialValue;\n });\n oop.implement(obj, optionsProvider);\n return this;\n };\n AppConfig.prototype.resetOptions = function (obj) {\n Object.keys(obj.$options).forEach(function (key) {\n var opt = obj.$options[key];\n if (\"value\" in opt)\n obj.setOption(key, opt.value);\n });\n };\n AppConfig.prototype.setDefaultValue = function (path, name, value) {\n if (!path) {\n for (path in this.$defaultOptions)\n if (this.$defaultOptions[path][name])\n break;\n if (!this.$defaultOptions[path][name])\n return false;\n }\n var opts = this.$defaultOptions[path] || (this.$defaultOptions[path] = {});\n if (opts[name]) {\n if (opts.forwardTo)\n this.setDefaultValue(opts.forwardTo, name, value);\n else\n opts[name].value = value;\n }\n };\n AppConfig.prototype.setDefaultValues = function (path, optionHash) {\n Object.keys(optionHash).forEach(function (key) {\n this.setDefaultValue(path, key, optionHash[key]);\n }, this);\n };\n AppConfig.prototype.setMessages = function (value) {\n messages = value;\n };\n AppConfig.prototype.nls = function (string, params) {\n if (messages && !messages[string]) {\n warn(\"No message found for '\" + string + \"' in the provided messages, falling back to default English message.\");\n }\n var translated = messages && messages[string] || string;\n if (params) {\n translated = translated.replace(/\\$(\\$|[\\d]+)/g, function (_, name) {\n if (name == \"$\")\n return \"$\";\n return params[name];\n });\n }\n return translated;\n };\n return AppConfig;\n}());\nAppConfig.prototype.warn = warn;\nAppConfig.prototype.reportError = reportError;\noop.implement(AppConfig.prototype, EventEmitter);\nexports.AppConfig = AppConfig;\n\n});\n\nace.define(\"ace/theme/textmate-css\",[\"require\",\"exports\",\"module\"], function(require, exports, module){module.exports = \".ace-tm .ace_gutter {\\n background: #f0f0f0;\\n color: #333;\\n}\\n\\n.ace-tm .ace_print-margin {\\n width: 1px;\\n background: #e8e8e8;\\n}\\n\\n.ace-tm .ace_fold {\\n background-color: #6B72E6;\\n}\\n\\n.ace-tm {\\n background-color: #FFFFFF;\\n color: black;\\n}\\n\\n.ace-tm .ace_cursor {\\n color: black;\\n}\\n \\n.ace-tm .ace_invisible {\\n color: rgb(191, 191, 191);\\n}\\n\\n.ace-tm .ace_storage,\\n.ace-tm .ace_keyword {\\n color: blue;\\n}\\n\\n.ace-tm .ace_constant {\\n color: rgb(197, 6, 11);\\n}\\n\\n.ace-tm .ace_constant.ace_buildin {\\n color: rgb(88, 72, 246);\\n}\\n\\n.ace-tm .ace_constant.ace_language {\\n color: rgb(88, 92, 246);\\n}\\n\\n.ace-tm .ace_constant.ace_library {\\n color: rgb(6, 150, 14);\\n}\\n\\n.ace-tm .ace_invalid {\\n background-color: rgba(255, 0, 0, 0.1);\\n color: red;\\n}\\n\\n.ace-tm .ace_support.ace_function {\\n color: rgb(60, 76, 114);\\n}\\n\\n.ace-tm .ace_support.ace_constant {\\n color: rgb(6, 150, 14);\\n}\\n\\n.ace-tm .ace_support.ace_type,\\n.ace-tm .ace_support.ace_class {\\n color: rgb(109, 121, 222);\\n}\\n\\n.ace-tm .ace_keyword.ace_operator {\\n color: rgb(104, 118, 135);\\n}\\n\\n.ace-tm .ace_string {\\n color: rgb(3, 106, 7);\\n}\\n\\n.ace-tm .ace_comment {\\n color: rgb(76, 136, 107);\\n}\\n\\n.ace-tm .ace_comment.ace_doc {\\n color: rgb(0, 102, 255);\\n}\\n\\n.ace-tm .ace_comment.ace_doc.ace_tag {\\n color: rgb(128, 159, 191);\\n}\\n\\n.ace-tm .ace_constant.ace_numeric {\\n color: rgb(0, 0, 205);\\n}\\n\\n.ace-tm .ace_variable {\\n color: rgb(49, 132, 149);\\n}\\n\\n.ace-tm .ace_xml-pe {\\n color: rgb(104, 104, 91);\\n}\\n\\n.ace-tm .ace_entity.ace_name.ace_function {\\n color: #0000A2;\\n}\\n\\n\\n.ace-tm .ace_heading {\\n color: rgb(12, 7, 255);\\n}\\n\\n.ace-tm .ace_list {\\n color:rgb(185, 6, 144);\\n}\\n\\n.ace-tm .ace_meta.ace_tag {\\n color:rgb(0, 22, 142);\\n}\\n\\n.ace-tm .ace_string.ace_regex {\\n color: rgb(255, 0, 0)\\n}\\n\\n.ace-tm .ace_marker-layer .ace_selection {\\n background: rgb(181, 213, 255);\\n}\\n.ace-tm.ace_multiselect .ace_selection.ace_start {\\n box-shadow: 0 0 3px 0px white;\\n}\\n.ace-tm .ace_marker-layer .ace_step {\\n background: rgb(252, 255, 0);\\n}\\n\\n.ace-tm .ace_marker-layer .ace_stack {\\n background: rgb(164, 229, 101);\\n}\\n\\n.ace-tm .ace_marker-layer .ace_bracket {\\n margin: -1px 0 0 -1px;\\n border: 1px solid rgb(192, 192, 192);\\n}\\n\\n.ace-tm .ace_marker-layer .ace_active-line {\\n background: rgba(0, 0, 0, 0.07);\\n}\\n\\n.ace-tm .ace_gutter-active-line {\\n background-color : #dcdcdc;\\n}\\n\\n.ace-tm .ace_marker-layer .ace_selected-word {\\n background: rgb(250, 250, 255);\\n border: 1px solid rgb(200, 200, 250);\\n}\\n\\n.ace-tm .ace_indent-guide {\\n background: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==\\\") right repeat-y;\\n}\\n\\n.ace-tm .ace_indent-guide-active {\\n background: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAAZSURBVHjaYvj///9/hivKyv8BAAAA//8DACLqBhbvk+/eAAAAAElFTkSuQmCC\\\") right repeat-y;\\n}\\n\";\n\n});\n\nace.define(\"ace/theme/textmate\",[\"require\",\"exports\",\"module\",\"ace/theme/textmate-css\",\"ace/lib/dom\"], function(require, exports, module){\"use strict\";\nexports.isDark = false;\nexports.cssClass = \"ace-tm\";\nexports.cssText = require(\"./textmate-css\");\nexports.$id = \"ace/theme/textmate\";\nvar dom = require(\"../lib/dom\");\ndom.importCssString(exports.cssText, exports.cssClass, false);\n\n});\n\nace.define(\"ace/config\",[\"require\",\"exports\",\"module\",\"ace/lib/lang\",\"ace/lib/net\",\"ace/lib/dom\",\"ace/lib/app_config\",\"ace/theme/textmate\"], function(require, exports, module){\"no use strict\";\nvar lang = require(\"./lib/lang\");\nvar net = require(\"./lib/net\");\nvar dom = require(\"./lib/dom\");\nvar AppConfig = require(\"./lib/app_config\").AppConfig;\nmodule.exports = exports = new AppConfig();\nvar options = {\n packaged: false,\n workerPath: null,\n modePath: null,\n themePath: null,\n basePath: \"\",\n suffix: \".js\",\n $moduleUrls: {},\n loadWorkerFromBlob: true,\n sharedPopups: false,\n useStrictCSP: null\n};\nexports.get = function (key) {\n if (!options.hasOwnProperty(key))\n throw new Error(\"Unknown config key: \" + key);\n return options[key];\n};\nexports.set = function (key, value) {\n if (options.hasOwnProperty(key))\n options[key] = value;\n else if (this.setDefaultValue(\"\", key, value) == false)\n throw new Error(\"Unknown config key: \" + key);\n if (key == \"useStrictCSP\")\n dom.useStrictCSP(value);\n};\nexports.all = function () {\n return lang.copyObject(options);\n};\nexports.$modes = {};\nexports.moduleUrl = function (name, component) {\n if (options.$moduleUrls[name])\n return options.$moduleUrls[name];\n var parts = name.split(\"/\");\n component = component || parts[parts.length - 2] || \"\";\n var sep = component == \"snippets\" ? \"/\" : \"-\";\n var base = parts[parts.length - 1];\n if (component == \"worker\" && sep == \"-\") {\n var re = new RegExp(\"^\" + component + \"[\\\\-_]|[\\\\-_]\" + component + \"$\", \"g\");\n base = base.replace(re, \"\");\n }\n if ((!base || base == component) && parts.length > 1)\n base = parts[parts.length - 2];\n var path = options[component + \"Path\"];\n if (path == null) {\n path = options.basePath;\n }\n else if (sep == \"/\") {\n component = sep = \"\";\n }\n if (path && path.slice(-1) != \"/\")\n path += \"/\";\n return path + component + sep + base + this.get(\"suffix\");\n};\nexports.setModuleUrl = function (name, subst) {\n return options.$moduleUrls[name] = subst;\n};\nvar loader = function (moduleName, cb) {\n if (moduleName === \"ace/theme/textmate\" || moduleName === \"./theme/textmate\")\n return cb(null, require(\"./theme/textmate\"));\n if (customLoader)\n return customLoader(moduleName, cb);\n console.error(\"loader is not configured\");\n};\nvar customLoader;\nexports.setLoader = function (cb) {\n customLoader = cb;\n};\nexports.dynamicModules = Object.create(null);\nexports.$loading = {};\nexports.$loaded = {};\nexports.loadModule = function (moduleName, onLoad) {\n var loadedModule, moduleType;\n if (Array.isArray(moduleName)) {\n moduleType = moduleName[0];\n moduleName = moduleName[1];\n }\n var load = function (module) {\n if (module && !exports.$loading[moduleName])\n return onLoad && onLoad(module);\n if (!exports.$loading[moduleName])\n exports.$loading[moduleName] = [];\n exports.$loading[moduleName].push(onLoad);\n if (exports.$loading[moduleName].length > 1)\n return;\n var afterLoad = function () {\n loader(moduleName, function (err, module) {\n if (module)\n exports.$loaded[moduleName] = module;\n exports._emit(\"load.module\", { name: moduleName, module: module });\n var listeners = exports.$loading[moduleName];\n exports.$loading[moduleName] = null;\n listeners.forEach(function (onLoad) {\n onLoad && onLoad(module);\n });\n });\n };\n if (!exports.get(\"packaged\"))\n return afterLoad();\n net.loadScript(exports.moduleUrl(moduleName, moduleType), afterLoad);\n reportErrorIfPathIsNotConfigured();\n };\n if (exports.dynamicModules[moduleName]) {\n exports.dynamicModules[moduleName]().then(function (module) {\n if (module.default) {\n load(module.default);\n }\n else {\n load(module);\n }\n });\n }\n else {\n try {\n loadedModule = this.$require(moduleName);\n }\n catch (e) { }\n load(loadedModule || exports.$loaded[moduleName]);\n }\n};\nexports.$require = function (moduleName) {\n if (typeof module.require == \"function\") {\n var req = \"require\";\n return module[req](moduleName);\n }\n};\nexports.setModuleLoader = function (moduleName, onLoad) {\n exports.dynamicModules[moduleName] = onLoad;\n};\nvar reportErrorIfPathIsNotConfigured = function () {\n if (!options.basePath && !options.workerPath\n && !options.modePath && !options.themePath\n && !Object.keys(options.$moduleUrls).length) {\n console.error(\"Unable to infer path to ace from script src,\", \"use ace.config.set('basePath', 'path') to enable dynamic loading of modes and themes\", \"or with webpack use ace/webpack-resolver\");\n reportErrorIfPathIsNotConfigured = function () { };\n }\n};\nexports.version = \"1.32.0\";\n\n});\n\nace.define(\"ace/loader_build\",[\"require\",\"exports\",\"module\",\"ace/lib/fixoldbrowsers\",\"ace/config\"], function(require, exports, module) {\n\"use strict\";\n\nrequire(\"./lib/fixoldbrowsers\");\nvar config = require(\"./config\");\nconfig.setLoader(function(moduleName, cb) {\n require([moduleName], function(module) {\n cb(null, module);\n });\n});\n\nvar global = (function() {\n return this || typeof window != \"undefined\" && window;\n})();\n\nmodule.exports = function(ace) {\n config.init = init;\n config.$require = require;\n ace.require = require;\n\n if (typeof define === \"function\")\n ace.define = define;\n};\ninit(true);function init(packaged) {\n\n if (!global || !global.document)\n return;\n \n config.set(\"packaged\", packaged || require.packaged || module.packaged || (global.define && define.packaged));\n\n var scriptOptions = {};\n var scriptUrl = \"\";\n var currentScript = (document.currentScript || document._currentScript ); // native or polyfill\n var currentDocument = currentScript && currentScript.ownerDocument || document;\n \n if (currentScript && currentScript.src) {\n scriptUrl = currentScript.src.split(/[?#]/)[0].split(\"/\").slice(0, -1).join(\"/\") || \"\";\n }\n \n var scripts = currentDocument.getElementsByTagName(\"script\");\n for (var i=0; i [\" + this.end.row + \"/\" + this.end.column + \"]\");\n };\n Range.prototype.contains = function (row, column) {\n return this.compare(row, column) == 0;\n };\n Range.prototype.compareRange = function (range) {\n var cmp, end = range.end, start = range.start;\n cmp = this.compare(end.row, end.column);\n if (cmp == 1) {\n cmp = this.compare(start.row, start.column);\n if (cmp == 1) {\n return 2;\n }\n else if (cmp == 0) {\n return 1;\n }\n else {\n return 0;\n }\n }\n else if (cmp == -1) {\n return -2;\n }\n else {\n cmp = this.compare(start.row, start.column);\n if (cmp == -1) {\n return -1;\n }\n else if (cmp == 1) {\n return 42;\n }\n else {\n return 0;\n }\n }\n };\n Range.prototype.comparePoint = function (p) {\n return this.compare(p.row, p.column);\n };\n Range.prototype.containsRange = function (range) {\n return this.comparePoint(range.start) == 0 && this.comparePoint(range.end) == 0;\n };\n Range.prototype.intersects = function (range) {\n var cmp = this.compareRange(range);\n return (cmp == -1 || cmp == 0 || cmp == 1);\n };\n Range.prototype.isEnd = function (row, column) {\n return this.end.row == row && this.end.column == column;\n };\n Range.prototype.isStart = function (row, column) {\n return this.start.row == row && this.start.column == column;\n };\n Range.prototype.setStart = function (row, column) {\n if (typeof row == \"object\") {\n this.start.column = row.column;\n this.start.row = row.row;\n }\n else {\n this.start.row = row;\n this.start.column = column;\n }\n };\n Range.prototype.setEnd = function (row, column) {\n if (typeof row == \"object\") {\n this.end.column = row.column;\n this.end.row = row.row;\n }\n else {\n this.end.row = row;\n this.end.column = column;\n }\n };\n Range.prototype.inside = function (row, column) {\n if (this.compare(row, column) == 0) {\n if (this.isEnd(row, column) || this.isStart(row, column)) {\n return false;\n }\n else {\n return true;\n }\n }\n return false;\n };\n Range.prototype.insideStart = function (row, column) {\n if (this.compare(row, column) == 0) {\n if (this.isEnd(row, column)) {\n return false;\n }\n else {\n return true;\n }\n }\n return false;\n };\n Range.prototype.insideEnd = function (row, column) {\n if (this.compare(row, column) == 0) {\n if (this.isStart(row, column)) {\n return false;\n }\n else {\n return true;\n }\n }\n return false;\n };\n Range.prototype.compare = function (row, column) {\n if (!this.isMultiLine()) {\n if (row === this.start.row) {\n return column < this.start.column ? -1 : (column > this.end.column ? 1 : 0);\n }\n }\n if (row < this.start.row)\n return -1;\n if (row > this.end.row)\n return 1;\n if (this.start.row === row)\n return column >= this.start.column ? 0 : -1;\n if (this.end.row === row)\n return column <= this.end.column ? 0 : 1;\n return 0;\n };\n Range.prototype.compareStart = function (row, column) {\n if (this.start.row == row && this.start.column == column) {\n return -1;\n }\n else {\n return this.compare(row, column);\n }\n };\n Range.prototype.compareEnd = function (row, column) {\n if (this.end.row == row && this.end.column == column) {\n return 1;\n }\n else {\n return this.compare(row, column);\n }\n };\n Range.prototype.compareInside = function (row, column) {\n if (this.end.row == row && this.end.column == column) {\n return 1;\n }\n else if (this.start.row == row && this.start.column == column) {\n return -1;\n }\n else {\n return this.compare(row, column);\n }\n };\n Range.prototype.clipRows = function (firstRow, lastRow) {\n if (this.end.row > lastRow)\n var end = { row: lastRow + 1, column: 0 };\n else if (this.end.row < firstRow)\n var end = { row: firstRow, column: 0 };\n if (this.start.row > lastRow)\n var start = { row: lastRow + 1, column: 0 };\n else if (this.start.row < firstRow)\n var start = { row: firstRow, column: 0 };\n return Range.fromPoints(start || this.start, end || this.end);\n };\n Range.prototype.extend = function (row, column) {\n var cmp = this.compare(row, column);\n if (cmp == 0)\n return this;\n else if (cmp == -1)\n var start = { row: row, column: column };\n else\n var end = { row: row, column: column };\n return Range.fromPoints(start || this.start, end || this.end);\n };\n Range.prototype.isEmpty = function () {\n return (this.start.row === this.end.row && this.start.column === this.end.column);\n };\n Range.prototype.isMultiLine = function () {\n return (this.start.row !== this.end.row);\n };\n Range.prototype.clone = function () {\n return Range.fromPoints(this.start, this.end);\n };\n Range.prototype.collapseRows = function () {\n if (this.end.column == 0)\n return new Range(this.start.row, 0, Math.max(this.start.row, this.end.row - 1), 0);\n else\n return new Range(this.start.row, 0, this.end.row, 0);\n };\n Range.prototype.toScreenRange = function (session) {\n var screenPosStart = session.documentToScreenPosition(this.start);\n var screenPosEnd = session.documentToScreenPosition(this.end);\n return new Range(screenPosStart.row, screenPosStart.column, screenPosEnd.row, screenPosEnd.column);\n };\n Range.prototype.moveBy = function (row, column) {\n this.start.row += row;\n this.start.column += column;\n this.end.row += row;\n this.end.column += column;\n };\n return Range;\n}());\nRange.fromPoints = function (start, end) {\n return new Range(start.row, start.column, end.row, end.column);\n};\nRange.comparePoints = comparePoints;\nRange.comparePoints = function (p1, p2) {\n return p1.row - p2.row || p1.column - p2.column;\n};\nexports.Range = Range;\n\n});\n\nace.define(\"ace/lib/keys\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\"], function(require, exports, module){/*! @license\n==========================================================================\nSproutCore -- JavaScript Application Framework\ncopyright 2006-2009, Sprout Systems Inc., Apple Inc. and contributors.\n\nPermission is hereby granted, free of charge, to any person obtaining a\ncopy of this software and associated documentation files (the \"Software\"),\nto deal in the Software without restriction, including without limitation\nthe rights to use, copy, modify, merge, publish, distribute, sublicense,\nand/or sell copies of the Software, and to permit persons to whom the\nSoftware is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\nFROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n\nSproutCore and the SproutCore logo are trademarks of Sprout Systems, Inc.\n\nFor more information about SproutCore, visit http://www.sproutcore.com\n\n\n==========================================================================\n@license */\n\"use strict\";\nvar oop = require(\"./oop\");\nvar Keys = (function () {\n var ret = {\n MODIFIER_KEYS: {\n 16: 'Shift', 17: 'Ctrl', 18: 'Alt', 224: 'Meta',\n 91: 'MetaLeft', 92: 'MetaRight', 93: 'ContextMenu'\n },\n KEY_MODS: {\n \"ctrl\": 1, \"alt\": 2, \"option\": 2, \"shift\": 4,\n \"super\": 8, \"meta\": 8, \"command\": 8, \"cmd\": 8,\n \"control\": 1\n },\n FUNCTION_KEYS: {\n 8: \"Backspace\",\n 9: \"Tab\",\n 13: \"Return\",\n 19: \"Pause\",\n 27: \"Esc\",\n 32: \"Space\",\n 33: \"PageUp\",\n 34: \"PageDown\",\n 35: \"End\",\n 36: \"Home\",\n 37: \"Left\",\n 38: \"Up\",\n 39: \"Right\",\n 40: \"Down\",\n 44: \"Print\",\n 45: \"Insert\",\n 46: \"Delete\",\n 96: \"Numpad0\",\n 97: \"Numpad1\",\n 98: \"Numpad2\",\n 99: \"Numpad3\",\n 100: \"Numpad4\",\n 101: \"Numpad5\",\n 102: \"Numpad6\",\n 103: \"Numpad7\",\n 104: \"Numpad8\",\n 105: \"Numpad9\",\n '-13': \"NumpadEnter\",\n 112: \"F1\",\n 113: \"F2\",\n 114: \"F3\",\n 115: \"F4\",\n 116: \"F5\",\n 117: \"F6\",\n 118: \"F7\",\n 119: \"F8\",\n 120: \"F9\",\n 121: \"F10\",\n 122: \"F11\",\n 123: \"F12\",\n 144: \"Numlock\",\n 145: \"Scrolllock\"\n },\n PRINTABLE_KEYS: {\n 32: ' ', 48: '0', 49: '1', 50: '2', 51: '3', 52: '4', 53: '5',\n 54: '6', 55: '7', 56: '8', 57: '9', 59: ';', 61: '=', 65: 'a',\n 66: 'b', 67: 'c', 68: 'd', 69: 'e', 70: 'f', 71: 'g', 72: 'h',\n 73: 'i', 74: 'j', 75: 'k', 76: 'l', 77: 'm', 78: 'n', 79: 'o',\n 80: 'p', 81: 'q', 82: 'r', 83: 's', 84: 't', 85: 'u', 86: 'v',\n 87: 'w', 88: 'x', 89: 'y', 90: 'z', 107: '+', 109: '-', 110: '.',\n 186: ';', 187: '=', 188: ',', 189: '-', 190: '.', 191: '/', 192: '`',\n 219: '[', 220: '\\\\', 221: ']', 222: \"'\", 111: '/', 106: '*'\n }\n };\n ret.PRINTABLE_KEYS[173] = '-';\n var name, i;\n for (i in ret.FUNCTION_KEYS) {\n name = ret.FUNCTION_KEYS[i].toLowerCase();\n ret[name] = parseInt(i, 10);\n }\n for (i in ret.PRINTABLE_KEYS) {\n name = ret.PRINTABLE_KEYS[i].toLowerCase();\n ret[name] = parseInt(i, 10);\n }\n oop.mixin(ret, ret.MODIFIER_KEYS);\n oop.mixin(ret, ret.PRINTABLE_KEYS);\n oop.mixin(ret, ret.FUNCTION_KEYS);\n ret.enter = ret[\"return\"];\n ret.escape = ret.esc;\n ret.del = ret[\"delete\"];\n (function () {\n var mods = [\"cmd\", \"ctrl\", \"alt\", \"shift\"];\n for (var i = Math.pow(2, mods.length); i--;) {\n ret.KEY_MODS[i] = mods.filter(function (x) {\n return i & ret.KEY_MODS[x];\n }).join(\"-\") + \"-\";\n }\n })();\n ret.KEY_MODS[0] = \"\";\n ret.KEY_MODS[-1] = \"input-\";\n return ret;\n})();\noop.mixin(exports, Keys);\nexports.default = exports;\nexports.keyCodeToString = function (keyCode) {\n var keyString = Keys[keyCode];\n if (typeof keyString != \"string\")\n keyString = String.fromCharCode(keyCode);\n return keyString.toLowerCase();\n};\n\n});\n\nace.define(\"ace/lib/event\",[\"require\",\"exports\",\"module\",\"ace/lib/keys\",\"ace/lib/useragent\"], function(require, exports, module){\"use strict\";\nvar keys = require(\"./keys\");\nvar useragent = require(\"./useragent\");\nvar pressedKeys = null;\nvar ts = 0;\nvar activeListenerOptions;\nfunction detectListenerOptionsSupport() {\n activeListenerOptions = false;\n try {\n document.createComment(\"\").addEventListener(\"test\", function () { }, {\n get passive() {\n activeListenerOptions = { passive: false };\n }\n });\n }\n catch (e) { }\n}\nfunction getListenerOptions() {\n if (activeListenerOptions == undefined)\n detectListenerOptionsSupport();\n return activeListenerOptions;\n}\nfunction EventListener(elem, type, callback) {\n this.elem = elem;\n this.type = type;\n this.callback = callback;\n}\nEventListener.prototype.destroy = function () {\n removeListener(this.elem, this.type, this.callback);\n this.elem = this.type = this.callback = undefined;\n};\nvar addListener = exports.addListener = function (elem, type, callback, destroyer) {\n elem.addEventListener(type, callback, getListenerOptions());\n if (destroyer)\n destroyer.$toDestroy.push(new EventListener(elem, type, callback));\n};\nvar removeListener = exports.removeListener = function (elem, type, callback) {\n elem.removeEventListener(type, callback, getListenerOptions());\n};\nexports.stopEvent = function (e) {\n exports.stopPropagation(e);\n exports.preventDefault(e);\n return false;\n};\nexports.stopPropagation = function (e) {\n if (e.stopPropagation)\n e.stopPropagation();\n};\nexports.preventDefault = function (e) {\n if (e.preventDefault)\n e.preventDefault();\n};\nexports.getButton = function (e) {\n if (e.type == \"dblclick\")\n return 0;\n if (e.type == \"contextmenu\" || (useragent.isMac && (e.ctrlKey && !e.altKey && !e.shiftKey)))\n return 2;\n return e.button;\n};\nexports.capture = function (el, eventHandler, releaseCaptureHandler) {\n var ownerDocument = el && el.ownerDocument || document;\n function onMouseUp(e) {\n eventHandler && eventHandler(e);\n releaseCaptureHandler && releaseCaptureHandler(e);\n removeListener(ownerDocument, \"mousemove\", eventHandler);\n removeListener(ownerDocument, \"mouseup\", onMouseUp);\n removeListener(ownerDocument, \"dragstart\", onMouseUp);\n }\n addListener(ownerDocument, \"mousemove\", eventHandler);\n addListener(ownerDocument, \"mouseup\", onMouseUp);\n addListener(ownerDocument, \"dragstart\", onMouseUp);\n return onMouseUp;\n};\nexports.addMouseWheelListener = function (el, callback, destroyer) {\n addListener(el, \"wheel\", function (e) {\n var factor = 0.15;\n var deltaX = e.deltaX || 0;\n var deltaY = e.deltaY || 0;\n switch (e.deltaMode) {\n case e.DOM_DELTA_PIXEL:\n e.wheelX = deltaX * factor;\n e.wheelY = deltaY * factor;\n break;\n case e.DOM_DELTA_LINE:\n var linePixels = 15;\n e.wheelX = deltaX * linePixels;\n e.wheelY = deltaY * linePixels;\n break;\n case e.DOM_DELTA_PAGE:\n var pagePixels = 150;\n e.wheelX = deltaX * pagePixels;\n e.wheelY = deltaY * pagePixels;\n break;\n }\n callback(e);\n }, destroyer);\n};\nexports.addMultiMouseDownListener = function (elements, timeouts, eventHandler, callbackName, destroyer) {\n var clicks = 0;\n var startX, startY, timer;\n var eventNames = {\n 2: \"dblclick\",\n 3: \"tripleclick\",\n 4: \"quadclick\"\n };\n function onMousedown(e) {\n if (exports.getButton(e) !== 0) {\n clicks = 0;\n }\n else if (e.detail > 1) {\n clicks++;\n if (clicks > 4)\n clicks = 1;\n }\n else {\n clicks = 1;\n }\n if (useragent.isIE) {\n var isNewClick = Math.abs(e.clientX - startX) > 5 || Math.abs(e.clientY - startY) > 5;\n if (!timer || isNewClick)\n clicks = 1;\n if (timer)\n clearTimeout(timer);\n timer = setTimeout(function () { timer = null; }, timeouts[clicks - 1] || 600);\n if (clicks == 1) {\n startX = e.clientX;\n startY = e.clientY;\n }\n }\n e._clicks = clicks;\n eventHandler[callbackName](\"mousedown\", e);\n if (clicks > 4)\n clicks = 0;\n else if (clicks > 1)\n return eventHandler[callbackName](eventNames[clicks], e);\n }\n if (!Array.isArray(elements))\n elements = [elements];\n elements.forEach(function (el) {\n addListener(el, \"mousedown\", onMousedown, destroyer);\n });\n};\nvar getModifierHash = function (e) {\n return 0 | (e.ctrlKey ? 1 : 0) | (e.altKey ? 2 : 0) | (e.shiftKey ? 4 : 0) | (e.metaKey ? 8 : 0);\n};\nexports.getModifierString = function (e) {\n return keys.KEY_MODS[getModifierHash(e)];\n};\nfunction normalizeCommandKeys(callback, e, keyCode) {\n var hashId = getModifierHash(e);\n if (!useragent.isMac && pressedKeys) {\n if (e.getModifierState && (e.getModifierState(\"OS\") || e.getModifierState(\"Win\")))\n hashId |= 8;\n if (pressedKeys.altGr) {\n if ((3 & hashId) != 3)\n pressedKeys.altGr = 0;\n else\n return;\n }\n if (keyCode === 18 || keyCode === 17) {\n var location = \"location\" in e ? e.location : e.keyLocation;\n if (keyCode === 17 && location === 1) {\n if (pressedKeys[keyCode] == 1)\n ts = e.timeStamp;\n }\n else if (keyCode === 18 && hashId === 3 && location === 2) {\n var dt = e.timeStamp - ts;\n if (dt < 50)\n pressedKeys.altGr = true;\n }\n }\n }\n if (keyCode in keys.MODIFIER_KEYS) {\n keyCode = -1;\n }\n if (!hashId && keyCode === 13) {\n var location = \"location\" in e ? e.location : e.keyLocation;\n if (location === 3) {\n callback(e, hashId, -keyCode);\n if (e.defaultPrevented)\n return;\n }\n }\n if (useragent.isChromeOS && hashId & 8) {\n callback(e, hashId, keyCode);\n if (e.defaultPrevented)\n return;\n else\n hashId &= ~8;\n }\n if (!hashId && !(keyCode in keys.FUNCTION_KEYS) && !(keyCode in keys.PRINTABLE_KEYS)) {\n return false;\n }\n return callback(e, hashId, keyCode);\n}\nexports.addCommandKeyListener = function (el, callback, destroyer) {\n if (useragent.isOldGecko || (useragent.isOpera && !(\"KeyboardEvent\" in window))) {\n var lastKeyDownKeyCode = null;\n addListener(el, \"keydown\", function (e) {\n lastKeyDownKeyCode = e.keyCode;\n }, destroyer);\n addListener(el, \"keypress\", function (e) {\n return normalizeCommandKeys(callback, e, lastKeyDownKeyCode);\n }, destroyer);\n }\n else {\n var lastDefaultPrevented = null;\n addListener(el, \"keydown\", function (e) {\n pressedKeys[e.keyCode] = (pressedKeys[e.keyCode] || 0) + 1;\n var result = normalizeCommandKeys(callback, e, e.keyCode);\n lastDefaultPrevented = e.defaultPrevented;\n return result;\n }, destroyer);\n addListener(el, \"keypress\", function (e) {\n if (lastDefaultPrevented && (e.ctrlKey || e.altKey || e.shiftKey || e.metaKey)) {\n exports.stopEvent(e);\n lastDefaultPrevented = null;\n }\n }, destroyer);\n addListener(el, \"keyup\", function (e) {\n pressedKeys[e.keyCode] = null;\n }, destroyer);\n if (!pressedKeys) {\n resetPressedKeys();\n addListener(window, \"focus\", resetPressedKeys);\n }\n }\n};\nfunction resetPressedKeys() {\n pressedKeys = Object.create(null);\n}\nif (typeof window == \"object\" && window.postMessage && !useragent.isOldIE) {\n var postMessageId = 1;\n exports.nextTick = function (callback, win) {\n win = win || window;\n var messageName = \"zero-timeout-message-\" + (postMessageId++);\n var listener = function (e) {\n if (e.data == messageName) {\n exports.stopPropagation(e);\n removeListener(win, \"message\", listener);\n callback();\n }\n };\n addListener(win, \"message\", listener);\n win.postMessage(messageName, \"*\");\n };\n}\nexports.$idleBlocked = false;\nexports.onIdle = function (cb, timeout) {\n return setTimeout(function handler() {\n if (!exports.$idleBlocked) {\n cb();\n }\n else {\n setTimeout(handler, 100);\n }\n }, timeout);\n};\nexports.$idleBlockId = null;\nexports.blockIdle = function (delay) {\n if (exports.$idleBlockId)\n clearTimeout(exports.$idleBlockId);\n exports.$idleBlocked = true;\n exports.$idleBlockId = setTimeout(function () {\n exports.$idleBlocked = false;\n }, delay || 100);\n};\nexports.nextFrame = typeof window == \"object\" && (window.requestAnimationFrame\n || window.mozRequestAnimationFrame\n || window.webkitRequestAnimationFrame\n || window.msRequestAnimationFrame\n || window.oRequestAnimationFrame);\nif (exports.nextFrame)\n exports.nextFrame = exports.nextFrame.bind(window);\nelse\n exports.nextFrame = function (callback) {\n setTimeout(callback, 17);\n };\n\n});\n\nace.define(\"ace/clipboard\",[\"require\",\"exports\",\"module\"], function(require, exports, module){\"use strict\";\nvar $cancelT;\nmodule.exports = {\n lineMode: false,\n pasteCancelled: function () {\n if ($cancelT && $cancelT > Date.now() - 50)\n return true;\n return $cancelT = false;\n },\n cancel: function () {\n $cancelT = Date.now();\n }\n};\n\n});\n\nace.define(\"ace/keyboard/textinput\",[\"require\",\"exports\",\"module\",\"ace/lib/event\",\"ace/config\",\"ace/lib/useragent\",\"ace/lib/dom\",\"ace/lib/lang\",\"ace/clipboard\",\"ace/lib/keys\"], function(require, exports, module){\"use strict\";\nvar event = require(\"../lib/event\");\nvar nls = require(\"../config\").nls;\nvar useragent = require(\"../lib/useragent\");\nvar dom = require(\"../lib/dom\");\nvar lang = require(\"../lib/lang\");\nvar clipboard = require(\"../clipboard\");\nvar BROKEN_SETDATA = useragent.isChrome < 18;\nvar USE_IE_MIME_TYPE = useragent.isIE;\nvar HAS_FOCUS_ARGS = useragent.isChrome > 63;\nvar MAX_LINE_LENGTH = 400;\nvar KEYS = require(\"../lib/keys\");\nvar MODS = KEYS.KEY_MODS;\nvar isIOS = useragent.isIOS;\nvar valueResetRegex = isIOS ? /\\s/ : /\\n/;\nvar isMobile = useragent.isMobile;\nvar TextInput = function (parentNode, host) {\n var text = dom.createElement(\"textarea\");\n text.className = \"ace_text-input\";\n text.setAttribute(\"wrap\", \"off\");\n text.setAttribute(\"autocorrect\", \"off\");\n text.setAttribute(\"autocapitalize\", \"off\");\n text.setAttribute(\"spellcheck\", false);\n text.style.opacity = \"0\";\n parentNode.insertBefore(text, parentNode.firstChild);\n var copied = false;\n var pasted = false;\n var inComposition = false;\n var sendingText = false;\n var tempStyle = '';\n if (!isMobile)\n text.style.fontSize = \"1px\";\n var commandMode = false;\n var ignoreFocusEvents = false;\n var lastValue = \"\";\n var lastSelectionStart = 0;\n var lastSelectionEnd = 0;\n var lastRestoreEnd = 0;\n var rowStart = Number.MAX_SAFE_INTEGER;\n var rowEnd = Number.MIN_SAFE_INTEGER;\n var numberOfExtraLines = 0;\n try {\n var isFocused = document.activeElement === text;\n }\n catch (e) { }\n this.setNumberOfExtraLines = function (number) {\n rowStart = Number.MAX_SAFE_INTEGER;\n rowEnd = Number.MIN_SAFE_INTEGER;\n if (number < 0) {\n numberOfExtraLines = 0;\n return;\n }\n numberOfExtraLines = number;\n };\n this.setAriaOptions = function (options) {\n if (options.activeDescendant) {\n text.setAttribute(\"aria-haspopup\", \"true\");\n text.setAttribute(\"aria-autocomplete\", options.inline ? \"both\" : \"list\");\n text.setAttribute(\"aria-activedescendant\", options.activeDescendant);\n }\n else {\n text.setAttribute(\"aria-haspopup\", \"false\");\n text.setAttribute(\"aria-autocomplete\", \"both\");\n text.removeAttribute(\"aria-activedescendant\");\n }\n if (options.role) {\n text.setAttribute(\"role\", options.role);\n }\n if (options.setLabel) {\n text.setAttribute(\"aria-roledescription\", nls(\"editor\"));\n if (host.session) {\n var row = host.session.selection.cursor.row;\n text.setAttribute(\"aria-label\", nls(\"Cursor at row $0\", [row + 1]));\n }\n }\n };\n this.setAriaOptions({ role: \"textbox\" });\n event.addListener(text, \"blur\", function (e) {\n if (ignoreFocusEvents)\n return;\n host.onBlur(e);\n isFocused = false;\n }, host);\n event.addListener(text, \"focus\", function (e) {\n if (ignoreFocusEvents)\n return;\n isFocused = true;\n if (useragent.isEdge) {\n try {\n if (!document.hasFocus())\n return;\n }\n catch (e) { }\n }\n host.onFocus(e);\n if (useragent.isEdge)\n setTimeout(resetSelection);\n else\n resetSelection();\n }, host);\n this.$focusScroll = false;\n this.focus = function () {\n this.setAriaOptions({\n setLabel: host.renderer.enableKeyboardAccessibility\n });\n if (tempStyle || HAS_FOCUS_ARGS || this.$focusScroll == \"browser\")\n return text.focus({ preventScroll: true });\n var top = text.style.top;\n text.style.position = \"fixed\";\n text.style.top = \"0px\";\n try {\n var isTransformed = text.getBoundingClientRect().top != 0;\n }\n catch (e) {\n return;\n }\n var ancestors = [];\n if (isTransformed) {\n var t = text.parentElement;\n while (t && t.nodeType == 1) {\n ancestors.push(t);\n t.setAttribute(\"ace_nocontext\", true);\n if (!t.parentElement && t.getRootNode)\n t = t.getRootNode().host;\n else\n t = t.parentElement;\n }\n }\n text.focus({ preventScroll: true });\n if (isTransformed) {\n ancestors.forEach(function (p) {\n p.removeAttribute(\"ace_nocontext\");\n });\n }\n setTimeout(function () {\n text.style.position = \"\";\n if (text.style.top == \"0px\")\n text.style.top = top;\n }, 0);\n };\n this.blur = function () {\n text.blur();\n };\n this.isFocused = function () {\n return isFocused;\n };\n host.on(\"beforeEndOperation\", function () {\n var curOp = host.curOp;\n var commandName = curOp && curOp.command && curOp.command.name;\n if (commandName == \"insertstring\")\n return;\n var isUserAction = commandName && (curOp.docChanged || curOp.selectionChanged);\n if (inComposition && isUserAction) {\n lastValue = text.value = \"\";\n onCompositionEnd();\n }\n resetSelection();\n });\n var positionToSelection = function (row, column) {\n var selection = column;\n for (var i = 1; i <= row - rowStart && i < 2 * numberOfExtraLines + 1; i++) {\n selection += host.session.getLine(row - i).length + 1;\n }\n return selection;\n };\n var resetSelection = isIOS\n ? function (value) {\n if (!isFocused || (copied && !value) || sendingText)\n return;\n if (!value)\n value = \"\";\n var newValue = \"\\n ab\" + value + \"cde fg\\n\";\n if (newValue != text.value)\n text.value = lastValue = newValue;\n var selectionStart = 4;\n var selectionEnd = 4 + (value.length || (host.selection.isEmpty() ? 0 : 1));\n if (lastSelectionStart != selectionStart || lastSelectionEnd != selectionEnd) {\n text.setSelectionRange(selectionStart, selectionEnd);\n }\n lastSelectionStart = selectionStart;\n lastSelectionEnd = selectionEnd;\n }\n : function () {\n if (inComposition || sendingText)\n return;\n if (!isFocused && !afterContextMenu)\n return;\n inComposition = true;\n var selectionStart = 0;\n var selectionEnd = 0;\n var line = \"\";\n if (host.session) {\n var selection = host.selection;\n var range = selection.getRange();\n var row = selection.cursor.row;\n if (row === rowEnd + 1) {\n rowStart = rowEnd + 1;\n rowEnd = rowStart + 2 * numberOfExtraLines;\n }\n else if (row === rowStart - 1) {\n rowEnd = rowStart - 1;\n rowStart = rowEnd - 2 * numberOfExtraLines;\n }\n else if (row < rowStart - 1 || row > rowEnd + 1) {\n rowStart = row > numberOfExtraLines ? row - numberOfExtraLines : 0;\n rowEnd = row > numberOfExtraLines ? row + numberOfExtraLines : 2 * numberOfExtraLines;\n }\n var lines = [];\n for (var i = rowStart; i <= rowEnd; i++) {\n lines.push(host.session.getLine(i));\n }\n line = lines.join('\\n');\n selectionStart = positionToSelection(range.start.row, range.start.column);\n selectionEnd = positionToSelection(range.end.row, range.end.column);\n if (range.start.row < rowStart) {\n var prevLine = host.session.getLine(rowStart - 1);\n selectionStart = range.start.row < rowStart - 1 ? 0 : selectionStart;\n selectionEnd += prevLine.length + 1;\n line = prevLine + \"\\n\" + line;\n }\n else if (range.end.row > rowEnd) {\n var nextLine = host.session.getLine(rowEnd + 1);\n selectionEnd = range.end.row > rowEnd + 1 ? nextLine.length : range.end.column;\n selectionEnd += line.length + 1;\n line = line + \"\\n\" + nextLine;\n }\n else if (isMobile && row > 0) {\n line = \"\\n\" + line;\n selectionEnd += 1;\n selectionStart += 1;\n }\n if (line.length > MAX_LINE_LENGTH) {\n if (selectionStart < MAX_LINE_LENGTH && selectionEnd < MAX_LINE_LENGTH) {\n line = line.slice(0, MAX_LINE_LENGTH);\n }\n else {\n line = \"\\n\";\n if (selectionStart == selectionEnd) {\n selectionStart = selectionEnd = 0;\n }\n else {\n selectionStart = 0;\n selectionEnd = 1;\n }\n }\n }\n var newValue = line + \"\\n\\n\";\n if (newValue != lastValue) {\n text.value = lastValue = newValue;\n lastSelectionStart = lastSelectionEnd = newValue.length;\n }\n }\n if (afterContextMenu) {\n lastSelectionStart = text.selectionStart;\n lastSelectionEnd = text.selectionEnd;\n }\n if (lastSelectionEnd != selectionEnd\n || lastSelectionStart != selectionStart\n || text.selectionEnd != lastSelectionEnd // on ie edge selectionEnd changes silently after the initialization\n ) {\n try {\n text.setSelectionRange(selectionStart, selectionEnd);\n lastSelectionStart = selectionStart;\n lastSelectionEnd = selectionEnd;\n }\n catch (e) { }\n }\n inComposition = false;\n };\n this.resetSelection = resetSelection;\n if (isFocused)\n host.onFocus();\n var isAllSelected = function (text) {\n return text.selectionStart === 0 && text.selectionEnd >= lastValue.length\n && text.value === lastValue && lastValue\n && text.selectionEnd !== lastSelectionEnd;\n };\n var onSelect = function (e) {\n if (inComposition)\n return;\n if (copied) {\n copied = false;\n }\n else if (isAllSelected(text)) {\n host.selectAll();\n resetSelection();\n }\n else if (isMobile && text.selectionStart != lastSelectionStart) {\n resetSelection();\n }\n };\n var inputHandler = null;\n this.setInputHandler = function (cb) { inputHandler = cb; };\n this.getInputHandler = function () { return inputHandler; };\n var afterContextMenu = false;\n var sendText = function (value, fromInput) {\n if (afterContextMenu)\n afterContextMenu = false;\n if (pasted) {\n resetSelection();\n if (value)\n host.onPaste(value);\n pasted = false;\n return \"\";\n }\n else {\n var selectionStart = text.selectionStart;\n var selectionEnd = text.selectionEnd;\n var extendLeft = lastSelectionStart;\n var extendRight = lastValue.length - lastSelectionEnd;\n var inserted = value;\n var restoreStart = value.length - selectionStart;\n var restoreEnd = value.length - selectionEnd;\n var i = 0;\n while (extendLeft > 0 && lastValue[i] == value[i]) {\n i++;\n extendLeft--;\n }\n inserted = inserted.slice(i);\n i = 1;\n while (extendRight > 0 && lastValue.length - i > lastSelectionStart - 1 && lastValue[lastValue.length - i] == value[value.length - i]) {\n i++;\n extendRight--;\n }\n restoreStart -= i - 1;\n restoreEnd -= i - 1;\n var endIndex = inserted.length - i + 1;\n if (endIndex < 0) {\n extendLeft = -endIndex;\n endIndex = 0;\n }\n inserted = inserted.slice(0, endIndex);\n if (!fromInput && !inserted && !restoreStart && !extendLeft && !extendRight && !restoreEnd)\n return \"\";\n sendingText = true;\n var shouldReset = false;\n if (useragent.isAndroid && inserted == \". \") {\n inserted = \" \";\n shouldReset = true;\n }\n if (inserted && !extendLeft && !extendRight && !restoreStart && !restoreEnd || commandMode) {\n host.onTextInput(inserted);\n }\n else {\n host.onTextInput(inserted, {\n extendLeft: extendLeft,\n extendRight: extendRight,\n restoreStart: restoreStart,\n restoreEnd: restoreEnd\n });\n }\n sendingText = false;\n lastValue = value;\n lastSelectionStart = selectionStart;\n lastSelectionEnd = selectionEnd;\n lastRestoreEnd = restoreEnd;\n return shouldReset ? \"\\n\" : inserted;\n }\n };\n var onInput = function (e) {\n if (inComposition)\n return onCompositionUpdate();\n if (e && e.inputType) {\n if (e.inputType == \"historyUndo\")\n return host.execCommand(\"undo\");\n if (e.inputType == \"historyRedo\")\n return host.execCommand(\"redo\");\n }\n var data = text.value;\n var inserted = sendText(data, true);\n if (data.length > MAX_LINE_LENGTH + 100\n || valueResetRegex.test(inserted)\n || isMobile && lastSelectionStart < 1 && lastSelectionStart == lastSelectionEnd) {\n resetSelection();\n }\n };\n var handleClipboardData = function (e, data, forceIEMime) {\n var clipboardData = e.clipboardData || window.clipboardData;\n if (!clipboardData || BROKEN_SETDATA)\n return;\n var mime = USE_IE_MIME_TYPE || forceIEMime ? \"Text\" : \"text/plain\";\n try {\n if (data) {\n return clipboardData.setData(mime, data) !== false;\n }\n else {\n return clipboardData.getData(mime);\n }\n }\n catch (e) {\n if (!forceIEMime)\n return handleClipboardData(e, data, true);\n }\n };\n var doCopy = function (e, isCut) {\n var data = host.getCopyText();\n if (!data)\n return event.preventDefault(e);\n if (handleClipboardData(e, data)) {\n if (isIOS) {\n resetSelection(data);\n copied = data;\n setTimeout(function () {\n copied = false;\n }, 10);\n }\n isCut ? host.onCut() : host.onCopy();\n event.preventDefault(e);\n }\n else {\n copied = true;\n text.value = data;\n text.select();\n setTimeout(function () {\n copied = false;\n resetSelection();\n isCut ? host.onCut() : host.onCopy();\n });\n }\n };\n var onCut = function (e) {\n doCopy(e, true);\n };\n var onCopy = function (e) {\n doCopy(e, false);\n };\n var onPaste = function (e) {\n var data = handleClipboardData(e);\n if (clipboard.pasteCancelled())\n return;\n if (typeof data == \"string\") {\n if (data)\n host.onPaste(data, e);\n if (useragent.isIE)\n setTimeout(resetSelection);\n event.preventDefault(e);\n }\n else {\n text.value = \"\";\n pasted = true;\n }\n };\n event.addCommandKeyListener(text, host.onCommandKey.bind(host), host);\n event.addListener(text, \"select\", onSelect, host);\n event.addListener(text, \"input\", onInput, host);\n event.addListener(text, \"cut\", onCut, host);\n event.addListener(text, \"copy\", onCopy, host);\n event.addListener(text, \"paste\", onPaste, host);\n if (!('oncut' in text) || !('oncopy' in text) || !('onpaste' in text)) {\n event.addListener(parentNode, \"keydown\", function (e) {\n if ((useragent.isMac && !e.metaKey) || !e.ctrlKey)\n return;\n switch (e.keyCode) {\n case 67:\n onCopy(e);\n break;\n case 86:\n onPaste(e);\n break;\n case 88:\n onCut(e);\n break;\n }\n }, host);\n }\n var onCompositionStart = function (e) {\n if (inComposition || !host.onCompositionStart || host.$readOnly)\n return;\n inComposition = {};\n if (commandMode)\n return;\n if (e.data)\n inComposition.useTextareaForIME = false;\n setTimeout(onCompositionUpdate, 0);\n host._signal(\"compositionStart\");\n host.on(\"mousedown\", cancelComposition);\n var range = host.getSelectionRange();\n range.end.row = range.start.row;\n range.end.column = range.start.column;\n inComposition.markerRange = range;\n inComposition.selectionStart = lastSelectionStart;\n host.onCompositionStart(inComposition);\n if (inComposition.useTextareaForIME) {\n lastValue = text.value = \"\";\n lastSelectionStart = 0;\n lastSelectionEnd = 0;\n }\n else {\n if (text.msGetInputContext)\n inComposition.context = text.msGetInputContext();\n if (text.getInputContext)\n inComposition.context = text.getInputContext();\n }\n };\n var onCompositionUpdate = function () {\n if (!inComposition || !host.onCompositionUpdate || host.$readOnly)\n return;\n if (commandMode)\n return cancelComposition();\n if (inComposition.useTextareaForIME) {\n host.onCompositionUpdate(text.value);\n }\n else {\n var data = text.value;\n sendText(data);\n if (inComposition.markerRange) {\n if (inComposition.context) {\n inComposition.markerRange.start.column = inComposition.selectionStart\n = inComposition.context.compositionStartOffset;\n }\n inComposition.markerRange.end.column = inComposition.markerRange.start.column\n + lastSelectionEnd - inComposition.selectionStart + lastRestoreEnd;\n }\n }\n };\n var onCompositionEnd = function (e) {\n if (!host.onCompositionEnd || host.$readOnly)\n return;\n inComposition = false;\n host.onCompositionEnd();\n host.off(\"mousedown\", cancelComposition);\n if (e)\n onInput();\n };\n function cancelComposition() {\n ignoreFocusEvents = true;\n text.blur();\n text.focus();\n ignoreFocusEvents = false;\n }\n var syncComposition = lang.delayedCall(onCompositionUpdate, 50).schedule.bind(null, null);\n function onKeyup(e) {\n if (e.keyCode == 27 && text.value.length < text.selectionStart) {\n if (!inComposition)\n lastValue = text.value;\n lastSelectionStart = lastSelectionEnd = -1;\n resetSelection();\n }\n syncComposition();\n }\n event.addListener(text, \"compositionstart\", onCompositionStart, host);\n event.addListener(text, \"compositionupdate\", onCompositionUpdate, host);\n event.addListener(text, \"keyup\", onKeyup, host);\n event.addListener(text, \"keydown\", syncComposition, host);\n event.addListener(text, \"compositionend\", onCompositionEnd, host);\n this.getElement = function () {\n return text;\n };\n this.setCommandMode = function (value) {\n commandMode = value;\n text.readOnly = false;\n };\n this.setReadOnly = function (readOnly) {\n if (!commandMode)\n text.readOnly = readOnly;\n };\n this.setCopyWithEmptySelection = function (value) {\n };\n this.onContextMenu = function (e) {\n afterContextMenu = true;\n resetSelection();\n host._emit(\"nativecontextmenu\", { target: host, domEvent: e });\n this.moveToMouse(e, true);\n };\n this.moveToMouse = function (e, bringToFront) {\n if (!tempStyle)\n tempStyle = text.style.cssText;\n text.style.cssText = (bringToFront ? \"z-index:100000;\" : \"\")\n + (useragent.isIE ? \"opacity:0.1;\" : \"\")\n + \"text-indent: -\" + (lastSelectionStart + lastSelectionEnd) * host.renderer.characterWidth * 0.5 + \"px;\";\n var rect = host.container.getBoundingClientRect();\n var style = dom.computedStyle(host.container);\n var top = rect.top + (parseInt(style.borderTopWidth) || 0);\n var left = rect.left + (parseInt(rect.borderLeftWidth) || 0);\n var maxTop = rect.bottom - top - text.clientHeight - 2;\n var move = function (e) {\n dom.translate(text, e.clientX - left - 2, Math.min(e.clientY - top - 2, maxTop));\n };\n move(e);\n if (e.type != \"mousedown\")\n return;\n host.renderer.$isMousePressed = true;\n clearTimeout(closeTimeout);\n if (useragent.isWin)\n event.capture(host.container, move, onContextMenuClose);\n };\n this.onContextMenuClose = onContextMenuClose;\n var closeTimeout;\n function onContextMenuClose() {\n clearTimeout(closeTimeout);\n closeTimeout = setTimeout(function () {\n if (tempStyle) {\n text.style.cssText = tempStyle;\n tempStyle = '';\n }\n host.renderer.$isMousePressed = false;\n if (host.renderer.$keepTextAreaAtCursor)\n host.renderer.$moveTextAreaToCursor();\n }, 0);\n }\n var onContextMenu = function (e) {\n host.textInput.onContextMenu(e);\n onContextMenuClose();\n };\n event.addListener(text, \"mouseup\", onContextMenu, host);\n event.addListener(text, \"mousedown\", function (e) {\n e.preventDefault();\n onContextMenuClose();\n }, host);\n event.addListener(host.renderer.scroller, \"contextmenu\", onContextMenu, host);\n event.addListener(text, \"contextmenu\", onContextMenu, host);\n if (isIOS)\n addIosSelectionHandler(parentNode, host, text);\n function addIosSelectionHandler(parentNode, host, text) {\n var typingResetTimeout = null;\n var typing = false;\n text.addEventListener(\"keydown\", function (e) {\n if (typingResetTimeout)\n clearTimeout(typingResetTimeout);\n typing = true;\n }, true);\n text.addEventListener(\"keyup\", function (e) {\n typingResetTimeout = setTimeout(function () {\n typing = false;\n }, 100);\n }, true);\n var detectArrowKeys = function (e) {\n if (document.activeElement !== text)\n return;\n if (typing || inComposition || host.$mouseHandler.isMousePressed)\n return;\n if (copied) {\n return;\n }\n var selectionStart = text.selectionStart;\n var selectionEnd = text.selectionEnd;\n var key = null;\n var modifier = 0;\n if (selectionStart == 0) {\n key = KEYS.up;\n }\n else if (selectionStart == 1) {\n key = KEYS.home;\n }\n else if (selectionEnd > lastSelectionEnd && lastValue[selectionEnd] == \"\\n\") {\n key = KEYS.end;\n }\n else if (selectionStart < lastSelectionStart && lastValue[selectionStart - 1] == \" \") {\n key = KEYS.left;\n modifier = MODS.option;\n }\n else if (selectionStart < lastSelectionStart\n || (selectionStart == lastSelectionStart\n && lastSelectionEnd != lastSelectionStart\n && selectionStart == selectionEnd)) {\n key = KEYS.left;\n }\n else if (selectionEnd > lastSelectionEnd && lastValue.slice(0, selectionEnd).split(\"\\n\").length > 2) {\n key = KEYS.down;\n }\n else if (selectionEnd > lastSelectionEnd && lastValue[selectionEnd - 1] == \" \") {\n key = KEYS.right;\n modifier = MODS.option;\n }\n else if (selectionEnd > lastSelectionEnd\n || (selectionEnd == lastSelectionEnd\n && lastSelectionEnd != lastSelectionStart\n && selectionStart == selectionEnd)) {\n key = KEYS.right;\n }\n if (selectionStart !== selectionEnd)\n modifier |= MODS.shift;\n if (key) {\n var result = host.onCommandKey({}, modifier, key);\n if (!result && host.commands) {\n key = KEYS.keyCodeToString(key);\n var command = host.commands.findKeyCommand(modifier, key);\n if (command)\n host.execCommand(command);\n }\n lastSelectionStart = selectionStart;\n lastSelectionEnd = selectionEnd;\n resetSelection(\"\");\n }\n };\n document.addEventListener(\"selectionchange\", detectArrowKeys);\n host.on(\"destroy\", function () {\n document.removeEventListener(\"selectionchange\", detectArrowKeys);\n });\n }\n this.destroy = function () {\n if (text.parentElement)\n text.parentElement.removeChild(text);\n };\n};\nexports.TextInput = TextInput;\nexports.$setUserAgentForTests = function (_isMobile, _isIOS) {\n isMobile = _isMobile;\n isIOS = _isIOS;\n};\n\n});\n\nace.define(\"ace/mouse/default_handlers\",[\"require\",\"exports\",\"module\",\"ace/lib/useragent\"], function(require, exports, module){\"use strict\";\nvar useragent = require(\"../lib/useragent\");\nvar DRAG_OFFSET = 0; // pixels\nvar SCROLL_COOLDOWN_T = 550; // milliseconds\nvar DefaultHandlers = /** @class */ (function () {\n function DefaultHandlers(mouseHandler) {\n mouseHandler.$clickSelection = null;\n var editor = mouseHandler.editor;\n editor.setDefaultHandler(\"mousedown\", this.onMouseDown.bind(mouseHandler));\n editor.setDefaultHandler(\"dblclick\", this.onDoubleClick.bind(mouseHandler));\n editor.setDefaultHandler(\"tripleclick\", this.onTripleClick.bind(mouseHandler));\n editor.setDefaultHandler(\"quadclick\", this.onQuadClick.bind(mouseHandler));\n editor.setDefaultHandler(\"mousewheel\", this.onMouseWheel.bind(mouseHandler));\n var exports = [\"select\", \"startSelect\", \"selectEnd\", \"selectAllEnd\", \"selectByWordsEnd\",\n \"selectByLinesEnd\", \"dragWait\", \"dragWaitEnd\", \"focusWait\"];\n exports.forEach(function (x) {\n mouseHandler[x] = this[x];\n }, this);\n mouseHandler.selectByLines = this.extendSelectionBy.bind(mouseHandler, \"getLineRange\");\n mouseHandler.selectByWords = this.extendSelectionBy.bind(mouseHandler, \"getWordRange\");\n }\n DefaultHandlers.prototype.onMouseDown = function (ev) {\n var inSelection = ev.inSelection();\n var pos = ev.getDocumentPosition();\n this.mousedownEvent = ev;\n var editor = this.editor;\n var button = ev.getButton();\n if (button !== 0) {\n var selectionRange = editor.getSelectionRange();\n var selectionEmpty = selectionRange.isEmpty();\n if (selectionEmpty || button == 1)\n editor.selection.moveToPosition(pos);\n if (button == 2) {\n editor.textInput.onContextMenu(ev.domEvent);\n if (!useragent.isMozilla)\n ev.preventDefault();\n }\n return;\n }\n this.mousedownEvent.time = Date.now();\n if (inSelection && !editor.isFocused()) {\n editor.focus();\n if (this.$focusTimeout && !this.$clickSelection && !editor.inMultiSelectMode) {\n this.setState(\"focusWait\");\n this.captureMouse(ev);\n return;\n }\n }\n this.captureMouse(ev);\n this.startSelect(pos, ev.domEvent._clicks > 1);\n return ev.preventDefault();\n };\n DefaultHandlers.prototype.startSelect = function (pos, waitForClickSelection) {\n pos = pos || this.editor.renderer.screenToTextCoordinates(this.x, this.y);\n var editor = this.editor;\n if (!this.mousedownEvent)\n return;\n if (this.mousedownEvent.getShiftKey())\n editor.selection.selectToPosition(pos);\n else if (!waitForClickSelection)\n editor.selection.moveToPosition(pos);\n if (!waitForClickSelection)\n this.select();\n editor.setStyle(\"ace_selecting\");\n this.setState(\"select\");\n };\n DefaultHandlers.prototype.select = function () {\n var anchor, editor = this.editor;\n var cursor = editor.renderer.screenToTextCoordinates(this.x, this.y);\n if (this.$clickSelection) {\n var cmp = this.$clickSelection.comparePoint(cursor);\n if (cmp == -1) {\n anchor = this.$clickSelection.end;\n }\n else if (cmp == 1) {\n anchor = this.$clickSelection.start;\n }\n else {\n var orientedRange = calcRangeOrientation(this.$clickSelection, cursor);\n cursor = orientedRange.cursor;\n anchor = orientedRange.anchor;\n }\n editor.selection.setSelectionAnchor(anchor.row, anchor.column);\n }\n editor.selection.selectToPosition(cursor);\n editor.renderer.scrollCursorIntoView();\n };\n DefaultHandlers.prototype.extendSelectionBy = function (unitName) {\n var anchor, editor = this.editor;\n var cursor = editor.renderer.screenToTextCoordinates(this.x, this.y);\n var range = editor.selection[unitName](cursor.row, cursor.column);\n if (this.$clickSelection) {\n var cmpStart = this.$clickSelection.comparePoint(range.start);\n var cmpEnd = this.$clickSelection.comparePoint(range.end);\n if (cmpStart == -1 && cmpEnd <= 0) {\n anchor = this.$clickSelection.end;\n if (range.end.row != cursor.row || range.end.column != cursor.column)\n cursor = range.start;\n }\n else if (cmpEnd == 1 && cmpStart >= 0) {\n anchor = this.$clickSelection.start;\n if (range.start.row != cursor.row || range.start.column != cursor.column)\n cursor = range.end;\n }\n else if (cmpStart == -1 && cmpEnd == 1) {\n cursor = range.end;\n anchor = range.start;\n }\n else {\n var orientedRange = calcRangeOrientation(this.$clickSelection, cursor);\n cursor = orientedRange.cursor;\n anchor = orientedRange.anchor;\n }\n editor.selection.setSelectionAnchor(anchor.row, anchor.column);\n }\n editor.selection.selectToPosition(cursor);\n editor.renderer.scrollCursorIntoView();\n };\n DefaultHandlers.prototype.selectByLinesEnd = function () {\n this.$clickSelection = null;\n this.editor.unsetStyle(\"ace_selecting\");\n };\n DefaultHandlers.prototype.focusWait = function () {\n var distance = calcDistance(this.mousedownEvent.x, this.mousedownEvent.y, this.x, this.y);\n var time = Date.now();\n if (distance > DRAG_OFFSET || time - this.mousedownEvent.time > this.$focusTimeout)\n this.startSelect(this.mousedownEvent.getDocumentPosition());\n };\n DefaultHandlers.prototype.onDoubleClick = function (ev) {\n var pos = ev.getDocumentPosition();\n var editor = this.editor;\n var session = editor.session;\n var range = session.getBracketRange(pos);\n if (range) {\n if (range.isEmpty()) {\n range.start.column--;\n range.end.column++;\n }\n this.setState(\"select\");\n }\n else {\n range = editor.selection.getWordRange(pos.row, pos.column);\n this.setState(\"selectByWords\");\n }\n this.$clickSelection = range;\n this.select();\n };\n DefaultHandlers.prototype.onTripleClick = function (ev) {\n var pos = ev.getDocumentPosition();\n var editor = this.editor;\n this.setState(\"selectByLines\");\n var range = editor.getSelectionRange();\n if (range.isMultiLine() && range.contains(pos.row, pos.column)) {\n this.$clickSelection = editor.selection.getLineRange(range.start.row);\n this.$clickSelection.end = editor.selection.getLineRange(range.end.row).end;\n }\n else {\n this.$clickSelection = editor.selection.getLineRange(pos.row);\n }\n this.select();\n };\n DefaultHandlers.prototype.onQuadClick = function (ev) {\n var editor = this.editor;\n editor.selectAll();\n this.$clickSelection = editor.getSelectionRange();\n this.setState(\"selectAll\");\n };\n DefaultHandlers.prototype.onMouseWheel = function (ev) {\n if (ev.getAccelKey())\n return;\n if (ev.getShiftKey() && ev.wheelY && !ev.wheelX) {\n ev.wheelX = ev.wheelY;\n ev.wheelY = 0;\n }\n var editor = this.editor;\n if (!this.$lastScroll)\n this.$lastScroll = { t: 0, vx: 0, vy: 0, allowed: 0 };\n var prevScroll = this.$lastScroll;\n var t = ev.domEvent.timeStamp;\n var dt = t - prevScroll.t;\n var vx = dt ? ev.wheelX / dt : prevScroll.vx;\n var vy = dt ? ev.wheelY / dt : prevScroll.vy;\n if (dt < SCROLL_COOLDOWN_T) {\n vx = (vx + prevScroll.vx) / 2;\n vy = (vy + prevScroll.vy) / 2;\n }\n var direction = Math.abs(vx / vy);\n var canScroll = false;\n if (direction >= 1 && editor.renderer.isScrollableBy(ev.wheelX * ev.speed, 0))\n canScroll = true;\n if (direction <= 1 && editor.renderer.isScrollableBy(0, ev.wheelY * ev.speed))\n canScroll = true;\n if (canScroll) {\n prevScroll.allowed = t;\n }\n else if (t - prevScroll.allowed < SCROLL_COOLDOWN_T) {\n var isSlower = Math.abs(vx) <= 1.5 * Math.abs(prevScroll.vx)\n && Math.abs(vy) <= 1.5 * Math.abs(prevScroll.vy);\n if (isSlower) {\n canScroll = true;\n prevScroll.allowed = t;\n }\n else {\n prevScroll.allowed = 0;\n }\n }\n prevScroll.t = t;\n prevScroll.vx = vx;\n prevScroll.vy = vy;\n if (canScroll) {\n editor.renderer.scrollBy(ev.wheelX * ev.speed, ev.wheelY * ev.speed);\n return ev.stop();\n }\n };\n return DefaultHandlers;\n}());\nDefaultHandlers.prototype.selectEnd = DefaultHandlers.prototype.selectByLinesEnd;\nDefaultHandlers.prototype.selectAllEnd = DefaultHandlers.prototype.selectByLinesEnd;\nDefaultHandlers.prototype.selectByWordsEnd = DefaultHandlers.prototype.selectByLinesEnd;\nexports.DefaultHandlers = DefaultHandlers;\nfunction calcDistance(ax, ay, bx, by) {\n return Math.sqrt(Math.pow(bx - ax, 2) + Math.pow(by - ay, 2));\n}\nfunction calcRangeOrientation(range, cursor) {\n if (range.start.row == range.end.row)\n var cmp = 2 * cursor.column - range.start.column - range.end.column;\n else if (range.start.row == range.end.row - 1 && !range.start.column && !range.end.column)\n var cmp = cursor.column - 4;\n else\n var cmp = 2 * cursor.row - range.start.row - range.end.row;\n if (cmp < 0)\n return { cursor: range.start, anchor: range.end };\n else\n return { cursor: range.end, anchor: range.start };\n}\n\n});\n\nace.define(\"ace/tooltip\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\",\"ace/lib/event\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar dom = require(\"./lib/dom\");\nvar event = require(\"./lib/event\");\nvar Range = require(\"./range\").Range;\nvar CLASSNAME = \"ace_tooltip\";\nvar Tooltip = /** @class */ (function () {\n function Tooltip(parentNode) {\n this.isOpen = false;\n this.$element = null;\n this.$parentNode = parentNode;\n }\n Tooltip.prototype.$init = function () {\n this.$element = dom.createElement(\"div\");\n this.$element.className = CLASSNAME;\n this.$element.style.display = \"none\";\n this.$parentNode.appendChild(this.$element);\n return this.$element;\n };\n Tooltip.prototype.getElement = function () {\n return this.$element || this.$init();\n };\n Tooltip.prototype.setText = function (text) {\n this.getElement().textContent = text;\n };\n Tooltip.prototype.setHtml = function (html) {\n this.getElement().innerHTML = html;\n };\n Tooltip.prototype.setPosition = function (x, y) {\n this.getElement().style.left = x + \"px\";\n this.getElement().style.top = y + \"px\";\n };\n Tooltip.prototype.setClassName = function (className) {\n dom.addCssClass(this.getElement(), className);\n };\n Tooltip.prototype.setTheme = function (theme) {\n this.$element.className = CLASSNAME + \" \" +\n (theme.isDark ? \"ace_dark \" : \"\") + (theme.cssClass || \"\");\n };\n Tooltip.prototype.show = function (text, x, y) {\n if (text != null)\n this.setText(text);\n if (x != null && y != null)\n this.setPosition(x, y);\n if (!this.isOpen) {\n this.getElement().style.display = \"block\";\n this.isOpen = true;\n }\n };\n Tooltip.prototype.hide = function () {\n if (this.isOpen) {\n this.getElement().style.display = \"none\";\n this.getElement().className = CLASSNAME;\n this.isOpen = false;\n }\n };\n Tooltip.prototype.getHeight = function () {\n return this.getElement().offsetHeight;\n };\n Tooltip.prototype.getWidth = function () {\n return this.getElement().offsetWidth;\n };\n Tooltip.prototype.destroy = function () {\n this.isOpen = false;\n if (this.$element && this.$element.parentNode) {\n this.$element.parentNode.removeChild(this.$element);\n }\n };\n return Tooltip;\n}());\nvar PopupManager = /** @class */ (function () {\n function PopupManager() {\n this.popups = [];\n }\n PopupManager.prototype.addPopup = function (popup) {\n this.popups.push(popup);\n this.updatePopups();\n };\n PopupManager.prototype.removePopup = function (popup) {\n var index = this.popups.indexOf(popup);\n if (index !== -1) {\n this.popups.splice(index, 1);\n this.updatePopups();\n }\n };\n PopupManager.prototype.updatePopups = function () {\n var e_1, _a, e_2, _b;\n this.popups.sort(function (a, b) { return b.priority - a.priority; });\n var visiblepopups = [];\n try {\n for (var _c = __values(this.popups), _d = _c.next(); !_d.done; _d = _c.next()) {\n var popup = _d.value;\n var shouldDisplay = true;\n try {\n for (var visiblepopups_1 = (e_2 = void 0, __values(visiblepopups)), visiblepopups_1_1 = visiblepopups_1.next(); !visiblepopups_1_1.done; visiblepopups_1_1 = visiblepopups_1.next()) {\n var visiblePopup = visiblepopups_1_1.value;\n if (this.doPopupsOverlap(visiblePopup, popup)) {\n shouldDisplay = false;\n break;\n }\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (visiblepopups_1_1 && !visiblepopups_1_1.done && (_b = visiblepopups_1.return)) _b.call(visiblepopups_1);\n }\n finally { if (e_2) throw e_2.error; }\n }\n if (shouldDisplay) {\n visiblepopups.push(popup);\n }\n else {\n popup.hide();\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_d && !_d.done && (_a = _c.return)) _a.call(_c);\n }\n finally { if (e_1) throw e_1.error; }\n }\n };\n PopupManager.prototype.doPopupsOverlap = function (popupA, popupB) {\n var rectA = popupA.getElement().getBoundingClientRect();\n var rectB = popupB.getElement().getBoundingClientRect();\n return (rectA.left < rectB.right && rectA.right > rectB.left && rectA.top < rectB.bottom && rectA.bottom\n > rectB.top);\n };\n return PopupManager;\n}());\nvar popupManager = new PopupManager();\nexports.popupManager = popupManager;\nexports.Tooltip = Tooltip;\nvar HoverTooltip = /** @class */ (function (_super) {\n __extends(HoverTooltip, _super);\n function HoverTooltip(parentNode) {\n if (parentNode === void 0) { parentNode = document.body; }\n var _this = _super.call(this, parentNode) || this;\n _this.timeout = undefined;\n _this.lastT = 0;\n _this.idleTime = 350;\n _this.lastEvent = undefined;\n _this.onMouseOut = _this.onMouseOut.bind(_this);\n _this.onMouseMove = _this.onMouseMove.bind(_this);\n _this.waitForHover = _this.waitForHover.bind(_this);\n _this.hide = _this.hide.bind(_this);\n var el = _this.getElement();\n el.style.whiteSpace = \"pre-wrap\";\n el.style.pointerEvents = \"auto\";\n el.addEventListener(\"mouseout\", _this.onMouseOut);\n el.tabIndex = -1;\n el.addEventListener(\"blur\", function () {\n if (!el.contains(document.activeElement))\n this.hide();\n }.bind(_this));\n el.addEventListener(\"wheel\", event.stopPropagation);\n return _this;\n }\n HoverTooltip.prototype.addToEditor = function (editor) {\n editor.on(\"mousemove\", this.onMouseMove);\n editor.on(\"mousedown\", this.hide);\n editor.renderer.getMouseEventTarget().addEventListener(\"mouseout\", this.onMouseOut, true);\n };\n HoverTooltip.prototype.removeFromEditor = function (editor) {\n editor.off(\"mousemove\", this.onMouseMove);\n editor.off(\"mousedown\", this.hide);\n editor.renderer.getMouseEventTarget().removeEventListener(\"mouseout\", this.onMouseOut, true);\n if (this.timeout) {\n clearTimeout(this.timeout);\n this.timeout = null;\n }\n };\n HoverTooltip.prototype.onMouseMove = function (e, editor) {\n this.lastEvent = e;\n this.lastT = Date.now();\n var isMousePressed = editor.$mouseHandler.isMousePressed;\n if (this.isOpen) {\n var pos = this.lastEvent && this.lastEvent.getDocumentPosition();\n if (!this.range\n || !this.range.contains(pos.row, pos.column)\n || isMousePressed\n || this.isOutsideOfText(this.lastEvent)) {\n this.hide();\n }\n }\n if (this.timeout || isMousePressed)\n return;\n this.lastEvent = e;\n this.timeout = setTimeout(this.waitForHover, this.idleTime);\n };\n HoverTooltip.prototype.waitForHover = function () {\n if (this.timeout)\n clearTimeout(this.timeout);\n var dt = Date.now() - this.lastT;\n if (this.idleTime - dt > 10) {\n this.timeout = setTimeout(this.waitForHover, this.idleTime - dt);\n return;\n }\n this.timeout = null;\n if (this.lastEvent && !this.isOutsideOfText(this.lastEvent)) {\n this.$gatherData(this.lastEvent, this.lastEvent.editor);\n }\n };\n HoverTooltip.prototype.isOutsideOfText = function (e) {\n var editor = e.editor;\n var docPos = e.getDocumentPosition();\n var line = editor.session.getLine(docPos.row);\n if (docPos.column == line.length) {\n var screenPos = editor.renderer.pixelToScreenCoordinates(e.clientX, e.clientY);\n var clippedPos = editor.session.documentToScreenPosition(docPos.row, docPos.column);\n if (clippedPos.column != screenPos.column\n || clippedPos.row != screenPos.row) {\n return true;\n }\n }\n return false;\n };\n HoverTooltip.prototype.setDataProvider = function (value) {\n this.$gatherData = value;\n };\n HoverTooltip.prototype.showForRange = function (editor, range, domNode, startingEvent) {\n var MARGIN = 10;\n if (startingEvent && startingEvent != this.lastEvent)\n return;\n if (this.isOpen && document.activeElement == this.getElement())\n return;\n var renderer = editor.renderer;\n if (!this.isOpen) {\n popupManager.addPopup(this);\n this.$registerCloseEvents();\n this.setTheme(renderer.theme);\n }\n this.isOpen = true;\n this.addMarker(range, editor.session);\n this.range = Range.fromPoints(range.start, range.end);\n var position = renderer.textToScreenCoordinates(range.start.row, range.start.column);\n var rect = renderer.scroller.getBoundingClientRect();\n if (position.pageX < rect.left)\n position.pageX = rect.left;\n var element = this.getElement();\n element.innerHTML = \"\";\n element.appendChild(domNode);\n element.style.maxHeight = \"\";\n element.style.display = \"block\";\n var labelHeight = element.clientHeight;\n var labelWidth = element.clientWidth;\n var spaceBelow = window.innerHeight - position.pageY - renderer.lineHeight;\n var isAbove = true;\n if (position.pageY - labelHeight < 0 && position.pageY < spaceBelow) {\n isAbove = false;\n }\n element.style.maxHeight = (isAbove ? position.pageY : spaceBelow) - MARGIN + \"px\";\n element.style.top = isAbove ? \"\" : position.pageY + renderer.lineHeight + \"px\";\n element.style.bottom = isAbove ? window.innerHeight - position.pageY + \"px\" : \"\";\n element.style.left = Math.min(position.pageX, window.innerWidth - labelWidth - MARGIN) + \"px\";\n };\n HoverTooltip.prototype.addMarker = function (range, session) {\n if (this.marker) {\n this.$markerSession.removeMarker(this.marker);\n }\n this.$markerSession = session;\n this.marker = session && session.addMarker(range, \"ace_highlight-marker\", \"text\");\n };\n HoverTooltip.prototype.hide = function (e) {\n if (!e && document.activeElement == this.getElement())\n return;\n if (e && e.target && (e.type != \"keydown\" || e.ctrlKey || e.metaKey) && this.$element.contains(e.target))\n return;\n this.lastEvent = null;\n if (this.timeout)\n clearTimeout(this.timeout);\n this.timeout = null;\n this.addMarker(null);\n if (this.isOpen) {\n this.$removeCloseEvents();\n this.getElement().style.display = \"none\";\n this.isOpen = false;\n popupManager.removePopup(this);\n }\n };\n HoverTooltip.prototype.$registerCloseEvents = function () {\n window.addEventListener(\"keydown\", this.hide, true);\n window.addEventListener(\"wheel\", this.hide, true);\n window.addEventListener(\"mousedown\", this.hide, true);\n };\n HoverTooltip.prototype.$removeCloseEvents = function () {\n window.removeEventListener(\"keydown\", this.hide, true);\n window.removeEventListener(\"wheel\", this.hide, true);\n window.removeEventListener(\"mousedown\", this.hide, true);\n };\n HoverTooltip.prototype.onMouseOut = function (e) {\n if (this.timeout) {\n clearTimeout(this.timeout);\n this.timeout = null;\n }\n this.lastEvent = null;\n if (!this.isOpen)\n return;\n if (!e.relatedTarget || this.getElement().contains(e.relatedTarget))\n return;\n if (e && e.currentTarget.contains(e.relatedTarget))\n return;\n if (!e.relatedTarget.classList.contains(\"ace_content\"))\n this.hide();\n };\n return HoverTooltip;\n}(Tooltip));\nexports.HoverTooltip = HoverTooltip;\n\n});\n\nace.define(\"ace/mouse/default_gutter_handler\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\",\"ace/lib/event\",\"ace/tooltip\",\"ace/config\"], function(require, exports, module){\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar dom = require(\"../lib/dom\");\nvar event = require(\"../lib/event\");\nvar Tooltip = require(\"../tooltip\").Tooltip;\nvar nls = require(\"../config\").nls;\nfunction GutterHandler(mouseHandler) {\n var editor = mouseHandler.editor;\n var gutter = editor.renderer.$gutterLayer;\n var tooltip = new GutterTooltip(editor);\n mouseHandler.editor.setDefaultHandler(\"guttermousedown\", function (e) {\n if (!editor.isFocused() || e.getButton() != 0)\n return;\n var gutterRegion = gutter.getRegion(e);\n if (gutterRegion == \"foldWidgets\")\n return;\n var row = e.getDocumentPosition().row;\n var selection = editor.session.selection;\n if (e.getShiftKey())\n selection.selectTo(row, 0);\n else {\n if (e.domEvent.detail == 2) {\n editor.selectAll();\n return e.preventDefault();\n }\n mouseHandler.$clickSelection = editor.selection.getLineRange(row);\n }\n mouseHandler.setState(\"selectByLines\");\n mouseHandler.captureMouse(e);\n return e.preventDefault();\n });\n var tooltipTimeout, mouseEvent;\n function showTooltip() {\n var row = mouseEvent.getDocumentPosition().row;\n var maxRow = editor.session.getLength();\n if (row == maxRow) {\n var screenRow = editor.renderer.pixelToScreenCoordinates(0, mouseEvent.y).row;\n var pos = mouseEvent.$pos;\n if (screenRow > editor.session.documentToScreenRow(pos.row, pos.column))\n return hideTooltip();\n }\n tooltip.showTooltip(row);\n if (!tooltip.isOpen)\n return;\n editor.on(\"mousewheel\", hideTooltip);\n if (mouseHandler.$tooltipFollowsMouse) {\n moveTooltip(mouseEvent);\n }\n else {\n var gutterRow = mouseEvent.getGutterRow();\n var gutterCell = gutter.$lines.get(gutterRow);\n if (gutterCell) {\n var gutterElement = gutterCell.element.querySelector(\".ace_gutter_annotation\");\n var rect = gutterElement.getBoundingClientRect();\n var style = tooltip.getElement().style;\n style.left = rect.right + \"px\";\n style.top = rect.bottom + \"px\";\n }\n else {\n moveTooltip(mouseEvent);\n }\n }\n }\n function hideTooltip() {\n if (tooltipTimeout)\n tooltipTimeout = clearTimeout(tooltipTimeout);\n if (tooltip.isOpen) {\n tooltip.hideTooltip();\n editor.off(\"mousewheel\", hideTooltip);\n }\n }\n function moveTooltip(e) {\n tooltip.setPosition(e.x, e.y);\n }\n mouseHandler.editor.setDefaultHandler(\"guttermousemove\", function (e) {\n var target = e.domEvent.target || e.domEvent.srcElement;\n if (dom.hasCssClass(target, \"ace_fold-widget\"))\n return hideTooltip();\n if (tooltip.isOpen && mouseHandler.$tooltipFollowsMouse)\n moveTooltip(e);\n mouseEvent = e;\n if (tooltipTimeout)\n return;\n tooltipTimeout = setTimeout(function () {\n tooltipTimeout = null;\n if (mouseEvent && !mouseHandler.isMousePressed)\n showTooltip();\n else\n hideTooltip();\n }, 50);\n });\n event.addListener(editor.renderer.$gutter, \"mouseout\", function (e) {\n mouseEvent = null;\n if (!tooltip.isOpen || tooltipTimeout)\n return;\n tooltipTimeout = setTimeout(function () {\n tooltipTimeout = null;\n hideTooltip();\n }, 50);\n }, editor);\n editor.on(\"changeSession\", hideTooltip);\n editor.on(\"input\", hideTooltip);\n}\nexports.GutterHandler = GutterHandler;\nvar GutterTooltip = /** @class */ (function (_super) {\n __extends(GutterTooltip, _super);\n function GutterTooltip(editor) {\n var _this = _super.call(this, editor.container) || this;\n _this.editor = editor;\n return _this;\n }\n GutterTooltip.prototype.setPosition = function (x, y) {\n var windowWidth = window.innerWidth || document.documentElement.clientWidth;\n var windowHeight = window.innerHeight || document.documentElement.clientHeight;\n var width = this.getWidth();\n var height = this.getHeight();\n x += 15;\n y += 15;\n if (x + width > windowWidth) {\n x -= (x + width) - windowWidth;\n }\n if (y + height > windowHeight) {\n y -= 20 + height;\n }\n Tooltip.prototype.setPosition.call(this, x, y);\n };\n Object.defineProperty(GutterTooltip, \"annotationLabels\", {\n get: function () {\n return {\n error: { singular: nls(\"error\"), plural: nls(\"errors\") },\n warning: { singular: nls(\"warning\"), plural: nls(\"warnings\") },\n info: { singular: nls(\"information message\"), plural: nls(\"information messages\") }\n };\n },\n enumerable: false,\n configurable: true\n });\n GutterTooltip.prototype.showTooltip = function (row) {\n var gutter = this.editor.renderer.$gutterLayer;\n var annotationsInRow = gutter.$annotations[row];\n var annotation;\n if (annotationsInRow)\n annotation = { text: Array.from(annotationsInRow.text), type: Array.from(annotationsInRow.type) };\n else\n annotation = { text: [], type: [] };\n var fold = gutter.session.getFoldLine(row);\n if (fold && gutter.$showFoldedAnnotations) {\n var annotationsInFold = { error: [], warning: [], info: [] };\n var mostSevereAnnotationInFoldType;\n for (var i = row + 1; i <= fold.end.row; i++) {\n if (!gutter.$annotations[i])\n continue;\n for (var j = 0; j < gutter.$annotations[i].text.length; j++) {\n var annotationType = gutter.$annotations[i].type[j];\n annotationsInFold[annotationType].push(gutter.$annotations[i].text[j]);\n if (annotationType === \"error\") {\n mostSevereAnnotationInFoldType = \"error_fold\";\n continue;\n }\n if (annotationType === \"warning\") {\n mostSevereAnnotationInFoldType = \"warning_fold\";\n continue;\n }\n }\n }\n if (mostSevereAnnotationInFoldType === \"error_fold\" || mostSevereAnnotationInFoldType === \"warning_fold\") {\n var summaryFoldedAnnotations = \"\".concat(GutterTooltip.annotationsToSummaryString(annotationsInFold), \" in folded code.\");\n annotation.text.push(summaryFoldedAnnotations);\n annotation.type.push(mostSevereAnnotationInFoldType);\n }\n }\n if (annotation.text.length === 0)\n return this.hide();\n var annotationMessages = { error: [], warning: [], info: [] };\n var iconClassName = gutter.$useSvgGutterIcons ? \"ace_icon_svg\" : \"ace_icon\";\n for (var i = 0; i < annotation.text.length; i++) {\n var line = \" \").concat(annotation.text[i]);\n annotationMessages[annotation.type[i].replace(\"_fold\", \"\")].push(line);\n }\n var tooltipContent = [].concat(annotationMessages.error, annotationMessages.warning, annotationMessages.info).join(\"
    \");\n this.setHtml(tooltipContent);\n this.$element.setAttribute(\"aria-live\", \"polite\");\n if (!this.isOpen) {\n this.setTheme(this.editor.renderer.theme);\n this.setClassName(\"ace_gutter-tooltip\");\n }\n this.show();\n this.editor._signal(\"showGutterTooltip\", this);\n };\n GutterTooltip.prototype.hideTooltip = function () {\n this.$element.removeAttribute(\"aria-live\");\n this.hide();\n this.editor._signal(\"hideGutterTooltip\", this);\n };\n GutterTooltip.annotationsToSummaryString = function (annotations) {\n var e_1, _a;\n var summary = [];\n var annotationTypes = ['error', 'warning', 'info'];\n try {\n for (var annotationTypes_1 = __values(annotationTypes), annotationTypes_1_1 = annotationTypes_1.next(); !annotationTypes_1_1.done; annotationTypes_1_1 = annotationTypes_1.next()) {\n var annotationType = annotationTypes_1_1.value;\n if (!annotations[annotationType].length)\n continue;\n var label = annotations[annotationType].length === 1 ? GutterTooltip.annotationLabels[annotationType].singular : GutterTooltip.annotationLabels[annotationType].plural;\n summary.push(\"\".concat(annotations[annotationType].length, \" \").concat(label));\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (annotationTypes_1_1 && !annotationTypes_1_1.done && (_a = annotationTypes_1.return)) _a.call(annotationTypes_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return summary.join(\", \");\n };\n return GutterTooltip;\n}(Tooltip));\nexports.GutterTooltip = GutterTooltip;\n\n});\n\nace.define(\"ace/mouse/mouse_event\",[\"require\",\"exports\",\"module\",\"ace/lib/event\",\"ace/lib/useragent\"], function(require, exports, module){\"use strict\";\nvar event = require(\"../lib/event\");\nvar useragent = require(\"../lib/useragent\");\nvar MouseEvent = /** @class */ (function () {\n function MouseEvent(domEvent, editor) {\n this.domEvent = domEvent;\n this.editor = editor;\n this.x = this.clientX = domEvent.clientX;\n this.y = this.clientY = domEvent.clientY;\n this.$pos = null;\n this.$inSelection = null;\n this.propagationStopped = false;\n this.defaultPrevented = false;\n }\n MouseEvent.prototype.stopPropagation = function () {\n event.stopPropagation(this.domEvent);\n this.propagationStopped = true;\n };\n MouseEvent.prototype.preventDefault = function () {\n event.preventDefault(this.domEvent);\n this.defaultPrevented = true;\n };\n MouseEvent.prototype.stop = function () {\n this.stopPropagation();\n this.preventDefault();\n };\n MouseEvent.prototype.getDocumentPosition = function () {\n if (this.$pos)\n return this.$pos;\n this.$pos = this.editor.renderer.screenToTextCoordinates(this.clientX, this.clientY);\n return this.$pos;\n };\n MouseEvent.prototype.getGutterRow = function () {\n var documentRow = this.getDocumentPosition().row;\n var screenRow = this.editor.session.documentToScreenRow(documentRow, 0);\n var screenTopRow = this.editor.session.documentToScreenRow(this.editor.renderer.$gutterLayer.$lines.get(0).row, 0);\n return screenRow - screenTopRow;\n };\n MouseEvent.prototype.inSelection = function () {\n if (this.$inSelection !== null)\n return this.$inSelection;\n var editor = this.editor;\n var selectionRange = editor.getSelectionRange();\n if (selectionRange.isEmpty())\n this.$inSelection = false;\n else {\n var pos = this.getDocumentPosition();\n this.$inSelection = selectionRange.contains(pos.row, pos.column);\n }\n return this.$inSelection;\n };\n MouseEvent.prototype.getButton = function () {\n return event.getButton(this.domEvent);\n };\n MouseEvent.prototype.getShiftKey = function () {\n return this.domEvent.shiftKey;\n };\n MouseEvent.prototype.getAccelKey = function () {\n return useragent.isMac ? this.domEvent.metaKey : this.domEvent.ctrlKey;\n };\n return MouseEvent;\n}());\nexports.MouseEvent = MouseEvent;\n\n});\n\nace.define(\"ace/mouse/dragdrop_handler\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\",\"ace/lib/event\",\"ace/lib/useragent\"], function(require, exports, module){\"use strict\";\nvar dom = require(\"../lib/dom\");\nvar event = require(\"../lib/event\");\nvar useragent = require(\"../lib/useragent\");\nvar AUTOSCROLL_DELAY = 200;\nvar SCROLL_CURSOR_DELAY = 200;\nvar SCROLL_CURSOR_HYSTERESIS = 5;\nfunction DragdropHandler(mouseHandler) {\n var editor = mouseHandler.editor;\n var dragImage = dom.createElement(\"div\");\n dragImage.style.cssText = \"top:-100px;position:absolute;z-index:2147483647;opacity:0.5\";\n dragImage.textContent = \"\\xa0\";\n var exports = [\"dragWait\", \"dragWaitEnd\", \"startDrag\", \"dragReadyEnd\", \"onMouseDrag\"];\n exports.forEach(function (x) {\n mouseHandler[x] = this[x];\n }, this);\n editor.on(\"mousedown\", this.onMouseDown.bind(mouseHandler));\n var mouseTarget = editor.container;\n var dragSelectionMarker, x, y;\n var timerId, range;\n var dragCursor, counter = 0;\n var dragOperation;\n var isInternal;\n var autoScrollStartTime;\n var cursorMovedTime;\n var cursorPointOnCaretMoved;\n this.onDragStart = function (e) {\n if (this.cancelDrag || !mouseTarget.draggable) {\n var self = this;\n setTimeout(function () {\n self.startSelect();\n self.captureMouse(e);\n }, 0);\n return e.preventDefault();\n }\n range = editor.getSelectionRange();\n var dataTransfer = e.dataTransfer;\n dataTransfer.effectAllowed = editor.getReadOnly() ? \"copy\" : \"copyMove\";\n editor.container.appendChild(dragImage);\n dataTransfer.setDragImage && dataTransfer.setDragImage(dragImage, 0, 0);\n setTimeout(function () {\n editor.container.removeChild(dragImage);\n });\n dataTransfer.clearData();\n dataTransfer.setData(\"Text\", editor.session.getTextRange());\n isInternal = true;\n this.setState(\"drag\");\n };\n this.onDragEnd = function (e) {\n mouseTarget.draggable = false;\n isInternal = false;\n this.setState(null);\n if (!editor.getReadOnly()) {\n var dropEffect = e.dataTransfer.dropEffect;\n if (!dragOperation && dropEffect == \"move\")\n editor.session.remove(editor.getSelectionRange());\n editor.$resetCursorStyle();\n }\n this.editor.unsetStyle(\"ace_dragging\");\n this.editor.renderer.setCursorStyle(\"\");\n };\n this.onDragEnter = function (e) {\n if (editor.getReadOnly() || !canAccept(e.dataTransfer))\n return;\n x = e.clientX;\n y = e.clientY;\n if (!dragSelectionMarker)\n addDragMarker();\n counter++;\n e.dataTransfer.dropEffect = dragOperation = getDropEffect(e);\n return event.preventDefault(e);\n };\n this.onDragOver = function (e) {\n if (editor.getReadOnly() || !canAccept(e.dataTransfer))\n return;\n x = e.clientX;\n y = e.clientY;\n if (!dragSelectionMarker) {\n addDragMarker();\n counter++;\n }\n if (onMouseMoveTimer !== null)\n onMouseMoveTimer = null;\n e.dataTransfer.dropEffect = dragOperation = getDropEffect(e);\n return event.preventDefault(e);\n };\n this.onDragLeave = function (e) {\n counter--;\n if (counter <= 0 && dragSelectionMarker) {\n clearDragMarker();\n dragOperation = null;\n return event.preventDefault(e);\n }\n };\n this.onDrop = function (e) {\n if (!dragCursor)\n return;\n var dataTransfer = e.dataTransfer;\n if (isInternal) {\n switch (dragOperation) {\n case \"move\":\n if (range.contains(dragCursor.row, dragCursor.column)) {\n range = {\n start: dragCursor,\n end: dragCursor\n };\n }\n else {\n range = editor.moveText(range, dragCursor);\n }\n break;\n case \"copy\":\n range = editor.moveText(range, dragCursor, true);\n break;\n }\n }\n else {\n var dropData = dataTransfer.getData('Text');\n range = {\n start: dragCursor,\n end: editor.session.insert(dragCursor, dropData)\n };\n editor.focus();\n dragOperation = null;\n }\n clearDragMarker();\n return event.preventDefault(e);\n };\n event.addListener(mouseTarget, \"dragstart\", this.onDragStart.bind(mouseHandler), editor);\n event.addListener(mouseTarget, \"dragend\", this.onDragEnd.bind(mouseHandler), editor);\n event.addListener(mouseTarget, \"dragenter\", this.onDragEnter.bind(mouseHandler), editor);\n event.addListener(mouseTarget, \"dragover\", this.onDragOver.bind(mouseHandler), editor);\n event.addListener(mouseTarget, \"dragleave\", this.onDragLeave.bind(mouseHandler), editor);\n event.addListener(mouseTarget, \"drop\", this.onDrop.bind(mouseHandler), editor);\n function scrollCursorIntoView(cursor, prevCursor) {\n var now = Date.now();\n var vMovement = !prevCursor || cursor.row != prevCursor.row;\n var hMovement = !prevCursor || cursor.column != prevCursor.column;\n if (!cursorMovedTime || vMovement || hMovement) {\n editor.moveCursorToPosition(cursor);\n cursorMovedTime = now;\n cursorPointOnCaretMoved = { x: x, y: y };\n }\n else {\n var distance = calcDistance(cursorPointOnCaretMoved.x, cursorPointOnCaretMoved.y, x, y);\n if (distance > SCROLL_CURSOR_HYSTERESIS) {\n cursorMovedTime = null;\n }\n else if (now - cursorMovedTime >= SCROLL_CURSOR_DELAY) {\n editor.renderer.scrollCursorIntoView();\n cursorMovedTime = null;\n }\n }\n }\n function autoScroll(cursor, prevCursor) {\n var now = Date.now();\n var lineHeight = editor.renderer.layerConfig.lineHeight;\n var characterWidth = editor.renderer.layerConfig.characterWidth;\n var editorRect = editor.renderer.scroller.getBoundingClientRect();\n var offsets = {\n x: {\n left: x - editorRect.left,\n right: editorRect.right - x\n },\n y: {\n top: y - editorRect.top,\n bottom: editorRect.bottom - y\n }\n };\n var nearestXOffset = Math.min(offsets.x.left, offsets.x.right);\n var nearestYOffset = Math.min(offsets.y.top, offsets.y.bottom);\n var scrollCursor = { row: cursor.row, column: cursor.column };\n if (nearestXOffset / characterWidth <= 2) {\n scrollCursor.column += (offsets.x.left < offsets.x.right ? -3 : +2);\n }\n if (nearestYOffset / lineHeight <= 1) {\n scrollCursor.row += (offsets.y.top < offsets.y.bottom ? -1 : +1);\n }\n var vScroll = cursor.row != scrollCursor.row;\n var hScroll = cursor.column != scrollCursor.column;\n var vMovement = !prevCursor || cursor.row != prevCursor.row;\n if (vScroll || (hScroll && !vMovement)) {\n if (!autoScrollStartTime)\n autoScrollStartTime = now;\n else if (now - autoScrollStartTime >= AUTOSCROLL_DELAY)\n editor.renderer.scrollCursorIntoView(scrollCursor);\n }\n else {\n autoScrollStartTime = null;\n }\n }\n function onDragInterval() {\n var prevCursor = dragCursor;\n dragCursor = editor.renderer.screenToTextCoordinates(x, y);\n scrollCursorIntoView(dragCursor, prevCursor);\n autoScroll(dragCursor, prevCursor);\n }\n function addDragMarker() {\n range = editor.selection.toOrientedRange();\n dragSelectionMarker = editor.session.addMarker(range, \"ace_selection\", editor.getSelectionStyle());\n editor.clearSelection();\n if (editor.isFocused())\n editor.renderer.$cursorLayer.setBlinking(false);\n clearInterval(timerId);\n onDragInterval();\n timerId = setInterval(onDragInterval, 20);\n counter = 0;\n event.addListener(document, \"mousemove\", onMouseMove);\n }\n function clearDragMarker() {\n clearInterval(timerId);\n editor.session.removeMarker(dragSelectionMarker);\n dragSelectionMarker = null;\n editor.selection.fromOrientedRange(range);\n if (editor.isFocused() && !isInternal)\n editor.$resetCursorStyle();\n range = null;\n dragCursor = null;\n counter = 0;\n autoScrollStartTime = null;\n cursorMovedTime = null;\n event.removeListener(document, \"mousemove\", onMouseMove);\n }\n var onMouseMoveTimer = null;\n function onMouseMove() {\n if (onMouseMoveTimer == null) {\n onMouseMoveTimer = setTimeout(function () {\n if (onMouseMoveTimer != null && dragSelectionMarker)\n clearDragMarker();\n }, 20);\n }\n }\n function canAccept(dataTransfer) {\n var types = dataTransfer.types;\n return !types || Array.prototype.some.call(types, function (type) {\n return type == 'text/plain' || type == 'Text';\n });\n }\n function getDropEffect(e) {\n var copyAllowed = ['copy', 'copymove', 'all', 'uninitialized'];\n var moveAllowed = ['move', 'copymove', 'linkmove', 'all', 'uninitialized'];\n var copyModifierState = useragent.isMac ? e.altKey : e.ctrlKey;\n var effectAllowed = \"uninitialized\";\n try {\n effectAllowed = e.dataTransfer.effectAllowed.toLowerCase();\n }\n catch (e) { }\n var dropEffect = \"none\";\n if (copyModifierState && copyAllowed.indexOf(effectAllowed) >= 0)\n dropEffect = \"copy\";\n else if (moveAllowed.indexOf(effectAllowed) >= 0)\n dropEffect = \"move\";\n else if (copyAllowed.indexOf(effectAllowed) >= 0)\n dropEffect = \"copy\";\n return dropEffect;\n }\n}\n(function () {\n this.dragWait = function () {\n var interval = Date.now() - this.mousedownEvent.time;\n if (interval > this.editor.getDragDelay())\n this.startDrag();\n };\n this.dragWaitEnd = function () {\n var target = this.editor.container;\n target.draggable = false;\n this.startSelect(this.mousedownEvent.getDocumentPosition());\n this.selectEnd();\n };\n this.dragReadyEnd = function (e) {\n this.editor.$resetCursorStyle();\n this.editor.unsetStyle(\"ace_dragging\");\n this.editor.renderer.setCursorStyle(\"\");\n this.dragWaitEnd();\n };\n this.startDrag = function () {\n this.cancelDrag = false;\n var editor = this.editor;\n var target = editor.container;\n target.draggable = true;\n editor.renderer.$cursorLayer.setBlinking(false);\n editor.setStyle(\"ace_dragging\");\n var cursorStyle = useragent.isWin ? \"default\" : \"move\";\n editor.renderer.setCursorStyle(cursorStyle);\n this.setState(\"dragReady\");\n };\n this.onMouseDrag = function (e) {\n var target = this.editor.container;\n if (useragent.isIE && this.state == \"dragReady\") {\n var distance = calcDistance(this.mousedownEvent.x, this.mousedownEvent.y, this.x, this.y);\n if (distance > 3)\n target.dragDrop();\n }\n if (this.state === \"dragWait\") {\n var distance = calcDistance(this.mousedownEvent.x, this.mousedownEvent.y, this.x, this.y);\n if (distance > 0) {\n target.draggable = false;\n this.startSelect(this.mousedownEvent.getDocumentPosition());\n }\n }\n };\n this.onMouseDown = function (e) {\n if (!this.$dragEnabled)\n return;\n this.mousedownEvent = e;\n var editor = this.editor;\n var inSelection = e.inSelection();\n var button = e.getButton();\n var clickCount = e.domEvent.detail || 1;\n if (clickCount === 1 && button === 0 && inSelection) {\n if (e.editor.inMultiSelectMode && (e.getAccelKey() || e.getShiftKey()))\n return;\n this.mousedownEvent.time = Date.now();\n var eventTarget = e.domEvent.target || e.domEvent.srcElement;\n if (\"unselectable\" in eventTarget)\n eventTarget.unselectable = \"on\";\n if (editor.getDragDelay()) {\n if (useragent.isWebKit) {\n this.cancelDrag = true;\n var mouseTarget = editor.container;\n mouseTarget.draggable = true;\n }\n this.setState(\"dragWait\");\n }\n else {\n this.startDrag();\n }\n this.captureMouse(e, this.onMouseDrag.bind(this));\n e.defaultPrevented = true;\n }\n };\n}).call(DragdropHandler.prototype);\nfunction calcDistance(ax, ay, bx, by) {\n return Math.sqrt(Math.pow(bx - ax, 2) + Math.pow(by - ay, 2));\n}\nexports.DragdropHandler = DragdropHandler;\n\n});\n\nace.define(\"ace/mouse/touch_handler\",[\"require\",\"exports\",\"module\",\"ace/mouse/mouse_event\",\"ace/lib/event\",\"ace/lib/dom\"], function(require, exports, module){\"use strict\";\nvar MouseEvent = require(\"./mouse_event\").MouseEvent;\nvar event = require(\"../lib/event\");\nvar dom = require(\"../lib/dom\");\nexports.addTouchListeners = function (el, editor) {\n var mode = \"scroll\";\n var startX;\n var startY;\n var touchStartT;\n var lastT;\n var longTouchTimer;\n var animationTimer;\n var animationSteps = 0;\n var pos;\n var clickCount = 0;\n var vX = 0;\n var vY = 0;\n var pressed;\n var contextMenu;\n function createContextMenu() {\n var clipboard = window.navigator && window.navigator.clipboard;\n var isOpen = false;\n var updateMenu = function () {\n var selected = editor.getCopyText();\n var hasUndo = editor.session.getUndoManager().hasUndo();\n contextMenu.replaceChild(dom.buildDom(isOpen ? [\"span\",\n !selected && [\"span\", { class: \"ace_mobile-button\", action: \"selectall\" }, \"Select All\"],\n selected && [\"span\", { class: \"ace_mobile-button\", action: \"copy\" }, \"Copy\"],\n selected && [\"span\", { class: \"ace_mobile-button\", action: \"cut\" }, \"Cut\"],\n clipboard && [\"span\", { class: \"ace_mobile-button\", action: \"paste\" }, \"Paste\"],\n hasUndo && [\"span\", { class: \"ace_mobile-button\", action: \"undo\" }, \"Undo\"],\n [\"span\", { class: \"ace_mobile-button\", action: \"find\" }, \"Find\"],\n [\"span\", { class: \"ace_mobile-button\", action: \"openCommandPalette\" }, \"Palette\"]\n ] : [\"span\"]), contextMenu.firstChild);\n };\n var handleClick = function (e) {\n var action = e.target.getAttribute(\"action\");\n if (action == \"more\" || !isOpen) {\n isOpen = !isOpen;\n return updateMenu();\n }\n if (action == \"paste\") {\n clipboard.readText().then(function (text) {\n editor.execCommand(action, text);\n });\n }\n else if (action) {\n if (action == \"cut\" || action == \"copy\") {\n if (clipboard)\n clipboard.writeText(editor.getCopyText());\n else\n document.execCommand(\"copy\");\n }\n editor.execCommand(action);\n }\n contextMenu.firstChild.style.display = \"none\";\n isOpen = false;\n if (action != \"openCommandPalette\")\n editor.focus();\n };\n contextMenu = dom.buildDom([\"div\",\n {\n class: \"ace_mobile-menu\",\n ontouchstart: function (e) {\n mode = \"menu\";\n e.stopPropagation();\n e.preventDefault();\n editor.textInput.focus();\n },\n ontouchend: function (e) {\n e.stopPropagation();\n e.preventDefault();\n handleClick(e);\n },\n onclick: handleClick\n },\n [\"span\"],\n [\"span\", { class: \"ace_mobile-button\", action: \"more\" }, \"...\"]\n ], editor.container);\n }\n function showContextMenu() {\n if (!contextMenu)\n createContextMenu();\n var cursor = editor.selection.cursor;\n var pagePos = editor.renderer.textToScreenCoordinates(cursor.row, cursor.column);\n var leftOffset = editor.renderer.textToScreenCoordinates(0, 0).pageX;\n var scrollLeft = editor.renderer.scrollLeft;\n var rect = editor.container.getBoundingClientRect();\n contextMenu.style.top = pagePos.pageY - rect.top - 3 + \"px\";\n if (pagePos.pageX - rect.left < rect.width - 70) {\n contextMenu.style.left = \"\";\n contextMenu.style.right = \"10px\";\n }\n else {\n contextMenu.style.right = \"\";\n contextMenu.style.left = leftOffset + scrollLeft - rect.left + \"px\";\n }\n contextMenu.style.display = \"\";\n contextMenu.firstChild.style.display = \"none\";\n editor.on(\"input\", hideContextMenu);\n }\n function hideContextMenu(e) {\n if (contextMenu)\n contextMenu.style.display = \"none\";\n editor.off(\"input\", hideContextMenu);\n }\n function handleLongTap() {\n longTouchTimer = null;\n clearTimeout(longTouchTimer);\n var range = editor.selection.getRange();\n var inSelection = range.contains(pos.row, pos.column);\n if (range.isEmpty() || !inSelection) {\n editor.selection.moveToPosition(pos);\n editor.selection.selectWord();\n }\n mode = \"wait\";\n showContextMenu();\n }\n function switchToSelectionMode() {\n longTouchTimer = null;\n clearTimeout(longTouchTimer);\n editor.selection.moveToPosition(pos);\n var range = clickCount >= 2\n ? editor.selection.getLineRange(pos.row)\n : editor.session.getBracketRange(pos);\n if (range && !range.isEmpty()) {\n editor.selection.setRange(range);\n }\n else {\n editor.selection.selectWord();\n }\n mode = \"wait\";\n }\n event.addListener(el, \"contextmenu\", function (e) {\n if (!pressed)\n return;\n var textarea = editor.textInput.getElement();\n textarea.focus();\n }, editor);\n event.addListener(el, \"touchstart\", function (e) {\n var touches = e.touches;\n if (longTouchTimer || touches.length > 1) {\n clearTimeout(longTouchTimer);\n longTouchTimer = null;\n touchStartT = -1;\n mode = \"zoom\";\n return;\n }\n pressed = editor.$mouseHandler.isMousePressed = true;\n var h = editor.renderer.layerConfig.lineHeight;\n var w = editor.renderer.layerConfig.lineHeight;\n var t = e.timeStamp;\n lastT = t;\n var touchObj = touches[0];\n var x = touchObj.clientX;\n var y = touchObj.clientY;\n if (Math.abs(startX - x) + Math.abs(startY - y) > h)\n touchStartT = -1;\n startX = e.clientX = x;\n startY = e.clientY = y;\n vX = vY = 0;\n var ev = new MouseEvent(e, editor);\n pos = ev.getDocumentPosition();\n if (t - touchStartT < 500 && touches.length == 1 && !animationSteps) {\n clickCount++;\n e.preventDefault();\n e.button = 0;\n switchToSelectionMode();\n }\n else {\n clickCount = 0;\n var cursor = editor.selection.cursor;\n var anchor = editor.selection.isEmpty() ? cursor : editor.selection.anchor;\n var cursorPos = editor.renderer.$cursorLayer.getPixelPosition(cursor, true);\n var anchorPos = editor.renderer.$cursorLayer.getPixelPosition(anchor, true);\n var rect = editor.renderer.scroller.getBoundingClientRect();\n var offsetTop = editor.renderer.layerConfig.offset;\n var offsetLeft = editor.renderer.scrollLeft;\n var weightedDistance = function (x, y) {\n x = x / w;\n y = y / h - 0.75;\n return x * x + y * y;\n };\n if (e.clientX < rect.left) {\n mode = \"zoom\";\n return;\n }\n var diff1 = weightedDistance(e.clientX - rect.left - cursorPos.left + offsetLeft, e.clientY - rect.top - cursorPos.top + offsetTop);\n var diff2 = weightedDistance(e.clientX - rect.left - anchorPos.left + offsetLeft, e.clientY - rect.top - anchorPos.top + offsetTop);\n if (diff1 < 3.5 && diff2 < 3.5)\n mode = diff1 > diff2 ? \"cursor\" : \"anchor\";\n if (diff2 < 3.5)\n mode = \"anchor\";\n else if (diff1 < 3.5)\n mode = \"cursor\";\n else\n mode = \"scroll\";\n longTouchTimer = setTimeout(handleLongTap, 450);\n }\n touchStartT = t;\n }, editor);\n event.addListener(el, \"touchend\", function (e) {\n pressed = editor.$mouseHandler.isMousePressed = false;\n if (animationTimer)\n clearInterval(animationTimer);\n if (mode == \"zoom\") {\n mode = \"\";\n animationSteps = 0;\n }\n else if (longTouchTimer) {\n editor.selection.moveToPosition(pos);\n animationSteps = 0;\n showContextMenu();\n }\n else if (mode == \"scroll\") {\n animate();\n hideContextMenu();\n }\n else {\n showContextMenu();\n }\n clearTimeout(longTouchTimer);\n longTouchTimer = null;\n }, editor);\n event.addListener(el, \"touchmove\", function (e) {\n if (longTouchTimer) {\n clearTimeout(longTouchTimer);\n longTouchTimer = null;\n }\n var touches = e.touches;\n if (touches.length > 1 || mode == \"zoom\")\n return;\n var touchObj = touches[0];\n var wheelX = startX - touchObj.clientX;\n var wheelY = startY - touchObj.clientY;\n if (mode == \"wait\") {\n if (wheelX * wheelX + wheelY * wheelY > 4)\n mode = \"cursor\";\n else\n return e.preventDefault();\n }\n startX = touchObj.clientX;\n startY = touchObj.clientY;\n e.clientX = touchObj.clientX;\n e.clientY = touchObj.clientY;\n var t = e.timeStamp;\n var dt = t - lastT;\n lastT = t;\n if (mode == \"scroll\") {\n var mouseEvent = new MouseEvent(e, editor);\n mouseEvent.speed = 1;\n mouseEvent.wheelX = wheelX;\n mouseEvent.wheelY = wheelY;\n if (10 * Math.abs(wheelX) < Math.abs(wheelY))\n wheelX = 0;\n if (10 * Math.abs(wheelY) < Math.abs(wheelX))\n wheelY = 0;\n if (dt != 0) {\n vX = wheelX / dt;\n vY = wheelY / dt;\n }\n editor._emit(\"mousewheel\", mouseEvent);\n if (!mouseEvent.propagationStopped) {\n vX = vY = 0;\n }\n }\n else {\n var ev = new MouseEvent(e, editor);\n var pos = ev.getDocumentPosition();\n if (mode == \"cursor\")\n editor.selection.moveCursorToPosition(pos);\n else if (mode == \"anchor\")\n editor.selection.setSelectionAnchor(pos.row, pos.column);\n editor.renderer.scrollCursorIntoView(pos);\n e.preventDefault();\n }\n }, editor);\n function animate() {\n animationSteps += 60;\n animationTimer = setInterval(function () {\n if (animationSteps-- <= 0) {\n clearInterval(animationTimer);\n animationTimer = null;\n }\n if (Math.abs(vX) < 0.01)\n vX = 0;\n if (Math.abs(vY) < 0.01)\n vY = 0;\n if (animationSteps < 20)\n vX = 0.9 * vX;\n if (animationSteps < 20)\n vY = 0.9 * vY;\n var oldScrollTop = editor.session.getScrollTop();\n editor.renderer.scrollBy(10 * vX, 10 * vY);\n if (oldScrollTop == editor.session.getScrollTop())\n animationSteps = 0;\n }, 10);\n }\n};\n\n});\n\nace.define(\"ace/mouse/mouse_handler\",[\"require\",\"exports\",\"module\",\"ace/lib/event\",\"ace/lib/useragent\",\"ace/mouse/default_handlers\",\"ace/mouse/default_gutter_handler\",\"ace/mouse/mouse_event\",\"ace/mouse/dragdrop_handler\",\"ace/mouse/touch_handler\",\"ace/config\"], function(require, exports, module){\"use strict\";\nvar event = require(\"../lib/event\");\nvar useragent = require(\"../lib/useragent\");\nvar DefaultHandlers = require(\"./default_handlers\").DefaultHandlers;\nvar DefaultGutterHandler = require(\"./default_gutter_handler\").GutterHandler;\nvar MouseEvent = require(\"./mouse_event\").MouseEvent;\nvar DragdropHandler = require(\"./dragdrop_handler\").DragdropHandler;\nvar addTouchListeners = require(\"./touch_handler\").addTouchListeners;\nvar config = require(\"../config\");\nvar MouseHandler = /** @class */ (function () {\n function MouseHandler(editor) {\n var _self = this;\n this.editor = editor;\n new DefaultHandlers(this);\n new DefaultGutterHandler(this);\n new DragdropHandler(this);\n var focusEditor = function (e) {\n var windowBlurred = !document.hasFocus || !document.hasFocus()\n || !editor.isFocused() && document.activeElement == (editor.textInput && editor.textInput.getElement());\n if (windowBlurred)\n window.focus();\n editor.focus();\n setTimeout(function () {\n if (!editor.isFocused())\n editor.focus();\n });\n };\n var mouseTarget = editor.renderer.getMouseEventTarget();\n event.addListener(mouseTarget, \"click\", this.onMouseEvent.bind(this, \"click\"), editor);\n event.addListener(mouseTarget, \"mousemove\", this.onMouseMove.bind(this, \"mousemove\"), editor);\n event.addMultiMouseDownListener([\n mouseTarget,\n editor.renderer.scrollBarV && editor.renderer.scrollBarV.inner,\n editor.renderer.scrollBarH && editor.renderer.scrollBarH.inner,\n editor.textInput && editor.textInput.getElement()\n ].filter(Boolean), [400, 300, 250], this, \"onMouseEvent\", editor);\n event.addMouseWheelListener(editor.container, this.onMouseWheel.bind(this, \"mousewheel\"), editor);\n addTouchListeners(editor.container, editor);\n var gutterEl = editor.renderer.$gutter;\n event.addListener(gutterEl, \"mousedown\", this.onMouseEvent.bind(this, \"guttermousedown\"), editor);\n event.addListener(gutterEl, \"click\", this.onMouseEvent.bind(this, \"gutterclick\"), editor);\n event.addListener(gutterEl, \"dblclick\", this.onMouseEvent.bind(this, \"gutterdblclick\"), editor);\n event.addListener(gutterEl, \"mousemove\", this.onMouseEvent.bind(this, \"guttermousemove\"), editor);\n event.addListener(mouseTarget, \"mousedown\", focusEditor, editor);\n event.addListener(gutterEl, \"mousedown\", focusEditor, editor);\n if (useragent.isIE && editor.renderer.scrollBarV) {\n event.addListener(editor.renderer.scrollBarV.element, \"mousedown\", focusEditor, editor);\n event.addListener(editor.renderer.scrollBarH.element, \"mousedown\", focusEditor, editor);\n }\n editor.on(\"mousemove\", function (e) {\n if (_self.state || _self.$dragDelay || !_self.$dragEnabled)\n return;\n var character = editor.renderer.screenToTextCoordinates(e.x, e.y);\n var range = editor.session.selection.getRange();\n var renderer = editor.renderer;\n if (!range.isEmpty() && range.insideStart(character.row, character.column)) {\n renderer.setCursorStyle(\"default\");\n }\n else {\n renderer.setCursorStyle(\"\");\n }\n }, editor);\n }\n MouseHandler.prototype.onMouseEvent = function (name, e) {\n if (!this.editor.session)\n return;\n this.editor._emit(name, new MouseEvent(e, this.editor));\n };\n MouseHandler.prototype.onMouseMove = function (name, e) {\n var listeners = this.editor._eventRegistry && this.editor._eventRegistry.mousemove;\n if (!listeners || !listeners.length)\n return;\n this.editor._emit(name, new MouseEvent(e, this.editor));\n };\n MouseHandler.prototype.onMouseWheel = function (name, e) {\n var mouseEvent = new MouseEvent(e, this.editor);\n mouseEvent.speed = this.$scrollSpeed * 2;\n mouseEvent.wheelX = e.wheelX;\n mouseEvent.wheelY = e.wheelY;\n this.editor._emit(name, mouseEvent);\n };\n MouseHandler.prototype.setState = function (state) {\n this.state = state;\n };\n MouseHandler.prototype.captureMouse = function (ev, mouseMoveHandler) {\n this.x = ev.x;\n this.y = ev.y;\n this.isMousePressed = true;\n var editor = this.editor;\n var renderer = this.editor.renderer;\n renderer.$isMousePressed = true;\n var self = this;\n var onMouseMove = function (e) {\n if (!e)\n return;\n if (useragent.isWebKit && !e.which && self.releaseMouse)\n return self.releaseMouse();\n self.x = e.clientX;\n self.y = e.clientY;\n mouseMoveHandler && mouseMoveHandler(e);\n self.mouseEvent = new MouseEvent(e, self.editor);\n self.$mouseMoved = true;\n };\n var onCaptureEnd = function (e) {\n editor.off(\"beforeEndOperation\", onOperationEnd);\n clearInterval(timerId);\n if (editor.session)\n onCaptureInterval();\n self[self.state + \"End\"] && self[self.state + \"End\"](e);\n self.state = \"\";\n self.isMousePressed = renderer.$isMousePressed = false;\n if (renderer.$keepTextAreaAtCursor)\n renderer.$moveTextAreaToCursor();\n self.$onCaptureMouseMove = self.releaseMouse = null;\n e && self.onMouseEvent(\"mouseup\", e);\n editor.endOperation();\n };\n var onCaptureInterval = function () {\n self[self.state] && self[self.state]();\n self.$mouseMoved = false;\n };\n if (useragent.isOldIE && ev.domEvent.type == \"dblclick\") {\n return setTimeout(function () { onCaptureEnd(ev); });\n }\n var onOperationEnd = function (e) {\n if (!self.releaseMouse)\n return;\n if (editor.curOp.command.name && editor.curOp.selectionChanged) {\n self[self.state + \"End\"] && self[self.state + \"End\"]();\n self.state = \"\";\n self.releaseMouse();\n }\n };\n editor.on(\"beforeEndOperation\", onOperationEnd);\n editor.startOperation({ command: { name: \"mouse\" } });\n self.$onCaptureMouseMove = onMouseMove;\n self.releaseMouse = event.capture(this.editor.container, onMouseMove, onCaptureEnd);\n var timerId = setInterval(onCaptureInterval, 20);\n };\n MouseHandler.prototype.cancelContextMenu = function () {\n var stop = function (e) {\n if (e && e.domEvent && e.domEvent.type != \"contextmenu\")\n return;\n this.editor.off(\"nativecontextmenu\", stop);\n if (e && e.domEvent)\n event.stopEvent(e.domEvent);\n }.bind(this);\n setTimeout(stop, 10);\n this.editor.on(\"nativecontextmenu\", stop);\n };\n MouseHandler.prototype.destroy = function () {\n if (this.releaseMouse)\n this.releaseMouse();\n };\n return MouseHandler;\n}());\nMouseHandler.prototype.releaseMouse = null;\nconfig.defineOptions(MouseHandler.prototype, \"mouseHandler\", {\n scrollSpeed: { initialValue: 2 },\n dragDelay: { initialValue: (useragent.isMac ? 150 : 0) },\n dragEnabled: { initialValue: true },\n focusTimeout: { initialValue: 0 },\n tooltipFollowsMouse: { initialValue: true }\n});\nexports.MouseHandler = MouseHandler;\n\n});\n\nace.define(\"ace/mouse/fold_handler\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"], function(require, exports, module){\"use strict\";\nvar dom = require(\"../lib/dom\");\nvar FoldHandler = /** @class */ (function () {\n function FoldHandler(editor) {\n editor.on(\"click\", function (e) {\n var position = e.getDocumentPosition();\n var session = editor.session;\n var fold = session.getFoldAt(position.row, position.column, 1);\n if (fold) {\n if (e.getAccelKey())\n session.removeFold(fold);\n else\n session.expandFold(fold);\n e.stop();\n }\n var target = e.domEvent && e.domEvent.target;\n if (target && dom.hasCssClass(target, \"ace_inline_button\")) {\n if (dom.hasCssClass(target, \"ace_toggle_wrap\")) {\n session.setOption(\"wrap\", !session.getUseWrapMode());\n editor.renderer.scrollCursorIntoView();\n }\n }\n });\n editor.on(\"gutterclick\", function (e) {\n var gutterRegion = editor.renderer.$gutterLayer.getRegion(e);\n if (gutterRegion == \"foldWidgets\") {\n var row = e.getDocumentPosition().row;\n var session = editor.session;\n if (session.foldWidgets && session.foldWidgets[row])\n editor.session.onFoldWidgetClick(row, e);\n if (!editor.isFocused())\n editor.focus();\n e.stop();\n }\n });\n editor.on(\"gutterdblclick\", function (e) {\n var gutterRegion = editor.renderer.$gutterLayer.getRegion(e);\n if (gutterRegion == \"foldWidgets\") {\n var row = e.getDocumentPosition().row;\n var session = editor.session;\n var data = session.getParentFoldRangeData(row, true);\n var range = data.range || data.firstRange;\n if (range) {\n row = range.start.row;\n var fold = session.getFoldAt(row, session.getLine(row).length, 1);\n if (fold) {\n session.removeFold(fold);\n }\n else {\n session.addFold(\"...\", range);\n editor.renderer.scrollCursorIntoView({ row: range.start.row, column: 0 });\n }\n }\n e.stop();\n }\n });\n }\n return FoldHandler;\n}());\nexports.FoldHandler = FoldHandler;\n\n});\n\nace.define(\"ace/keyboard/keybinding\",[\"require\",\"exports\",\"module\",\"ace/lib/keys\",\"ace/lib/event\"], function(require, exports, module){\"use strict\";\nvar keyUtil = require(\"../lib/keys\");\nvar event = require(\"../lib/event\");\nvar KeyBinding = /** @class */ (function () {\n function KeyBinding(editor) {\n this.$editor = editor;\n this.$data = { editor: editor };\n this.$handlers = [];\n this.setDefaultHandler(editor.commands);\n }\n KeyBinding.prototype.setDefaultHandler = function (kb) {\n this.removeKeyboardHandler(this.$defaultHandler);\n this.$defaultHandler = kb;\n this.addKeyboardHandler(kb, 0);\n };\n KeyBinding.prototype.setKeyboardHandler = function (kb) {\n var h = this.$handlers;\n if (h[h.length - 1] == kb)\n return;\n while (h[h.length - 1] && h[h.length - 1] != this.$defaultHandler)\n this.removeKeyboardHandler(h[h.length - 1]);\n this.addKeyboardHandler(kb, 1);\n };\n KeyBinding.prototype.addKeyboardHandler = function (kb, pos) {\n if (!kb)\n return;\n if (typeof kb == \"function\" && !kb.handleKeyboard)\n kb.handleKeyboard = kb;\n var i = this.$handlers.indexOf(kb);\n if (i != -1)\n this.$handlers.splice(i, 1);\n if (pos == undefined)\n this.$handlers.push(kb);\n else\n this.$handlers.splice(pos, 0, kb);\n if (i == -1 && kb.attach)\n kb.attach(this.$editor);\n };\n KeyBinding.prototype.removeKeyboardHandler = function (kb) {\n var i = this.$handlers.indexOf(kb);\n if (i == -1)\n return false;\n this.$handlers.splice(i, 1);\n kb.detach && kb.detach(this.$editor);\n return true;\n };\n KeyBinding.prototype.getKeyboardHandler = function () {\n return this.$handlers[this.$handlers.length - 1];\n };\n KeyBinding.prototype.getStatusText = function () {\n var data = this.$data;\n var editor = data.editor;\n return this.$handlers.map(function (h) {\n return h.getStatusText && h.getStatusText(editor, data) || \"\";\n }).filter(Boolean).join(\" \");\n };\n KeyBinding.prototype.$callKeyboardHandlers = function (hashId, keyString, keyCode, e) {\n var toExecute;\n var success = false;\n var commands = this.$editor.commands;\n for (var i = this.$handlers.length; i--;) {\n toExecute = this.$handlers[i].handleKeyboard(this.$data, hashId, keyString, keyCode, e);\n if (!toExecute || !toExecute.command)\n continue;\n if (toExecute.command == \"null\") {\n success = true;\n }\n else {\n success = commands.exec(toExecute.command, this.$editor, toExecute.args, e);\n }\n if (success && e && hashId != -1 &&\n toExecute.passEvent != true && toExecute.command.passEvent != true) {\n event.stopEvent(e);\n }\n if (success)\n break;\n }\n if (!success && hashId == -1) {\n toExecute = { command: \"insertstring\" };\n success = commands.exec(\"insertstring\", this.$editor, keyString);\n }\n if (success && this.$editor._signal)\n this.$editor._signal(\"keyboardActivity\", toExecute);\n return success;\n };\n KeyBinding.prototype.onCommandKey = function (e, hashId, keyCode) {\n var keyString = keyUtil.keyCodeToString(keyCode);\n return this.$callKeyboardHandlers(hashId, keyString, keyCode, e);\n };\n KeyBinding.prototype.onTextInput = function (text) {\n return this.$callKeyboardHandlers(-1, text);\n };\n return KeyBinding;\n}());\nexports.KeyBinding = KeyBinding;\n\n});\n\nace.define(\"ace/lib/bidiutil\",[\"require\",\"exports\",\"module\"], function(require, exports, module){\"use strict\";\nvar ArabicAlefBetIntervalsBegine = ['\\u0621', '\\u0641'];\nvar ArabicAlefBetIntervalsEnd = ['\\u063A', '\\u064a'];\nvar dir = 0, hiLevel = 0;\nvar lastArabic = false, hasUBAT_AL = false, hasUBAT_B = false, hasUBAT_S = false, hasBlockSep = false, hasSegSep = false;\nvar impTab_LTR = [ [0, 3, 0, 1, 0, 0, 0], [0, 3, 0, 1, 2, 2, 0], [0, 3, 0, 0x11, 2, 0, 1], [0, 3, 5, 5, 4, 1, 0], [0, 3, 0x15, 0x15, 4, 0, 1], [0, 3, 5, 5, 4, 2, 0]\n];\nvar impTab_RTL = [ [2, 0, 1, 1, 0, 1, 0], [2, 0, 1, 1, 0, 2, 0], [2, 0, 2, 1, 3, 2, 0], [2, 0, 2, 0x21, 3, 1, 1]\n];\nvar LTR = 0, RTL = 1;\nvar L = 0;\nvar R = 1;\nvar EN = 2;\nvar AN = 3;\nvar ON = 4;\nvar B = 5;\nvar S = 6;\nvar AL = 7;\nvar WS = 8;\nvar CS = 9;\nvar ES = 10;\nvar ET = 11;\nvar NSM = 12;\nvar LRE = 13;\nvar RLE = 14;\nvar PDF = 15;\nvar LRO = 16;\nvar RLO = 17;\nvar BN = 18;\nvar UnicodeTBL00 = [\n BN, BN, BN, BN, BN, BN, BN, BN, BN, S, B, S, WS, B, BN, BN,\n BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, B, B, B, S,\n WS, ON, ON, ET, ET, ET, ON, ON, ON, ON, ON, ES, CS, ES, CS, CS,\n EN, EN, EN, EN, EN, EN, EN, EN, EN, EN, CS, ON, ON, ON, ON, ON,\n ON, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L,\n L, L, L, L, L, L, L, L, L, L, L, ON, ON, ON, ON, ON,\n ON, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L,\n L, L, L, L, L, L, L, L, L, L, L, ON, ON, ON, ON, BN,\n BN, BN, BN, BN, BN, B, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN,\n BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN,\n CS, ON, ET, ET, ET, ET, ON, ON, ON, ON, L, ON, ON, BN, ON, ON,\n ET, ET, EN, EN, ON, L, ON, ON, ON, EN, L, ON, ON, ON, ON, ON\n];\nvar UnicodeTBL20 = [\n WS, WS, WS, WS, WS, WS, WS, WS, WS, WS, WS, BN, BN, BN, L, R,\n ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON,\n ON, ON, ON, ON, ON, ON, ON, ON, WS, B, LRE, RLE, PDF, LRO, RLO, CS,\n ET, ET, ET, ET, ET, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON,\n ON, ON, ON, ON, CS, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON,\n ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, WS\n];\nfunction _computeLevels(chars, levels, len, charTypes) {\n var impTab = dir ? impTab_RTL : impTab_LTR, prevState = null, newClass = null, newLevel = null, newState = 0, action = null, cond = null, condPos = -1, i = null, ix = null, classes = [];\n if (!charTypes) {\n for (i = 0, charTypes = []; i < len; i++) {\n charTypes[i] = _getCharacterType(chars[i]);\n }\n }\n hiLevel = dir;\n lastArabic = false;\n hasUBAT_AL = false;\n hasUBAT_B = false;\n hasUBAT_S = false;\n for (ix = 0; ix < len; ix++) {\n prevState = newState;\n classes[ix] = newClass = _getCharClass(chars, charTypes, classes, ix);\n newState = impTab[prevState][newClass];\n action = newState & 0xF0;\n newState &= 0x0F;\n levels[ix] = newLevel = impTab[newState][5];\n if (action > 0) {\n if (action == 0x10) {\n for (i = condPos; i < ix; i++) {\n levels[i] = 1;\n }\n condPos = -1;\n }\n else {\n condPos = -1;\n }\n }\n cond = impTab[newState][6];\n if (cond) {\n if (condPos == -1) {\n condPos = ix;\n }\n }\n else {\n if (condPos > -1) {\n for (i = condPos; i < ix; i++) {\n levels[i] = newLevel;\n }\n condPos = -1;\n }\n }\n if (charTypes[ix] == B) {\n levels[ix] = 0;\n }\n hiLevel |= newLevel;\n }\n if (hasUBAT_S) {\n for (i = 0; i < len; i++) {\n if (charTypes[i] == S) {\n levels[i] = dir;\n for (var j = i - 1; j >= 0; j--) {\n if (charTypes[j] == WS) {\n levels[j] = dir;\n }\n else {\n break;\n }\n }\n }\n }\n }\n}\nfunction _invertLevel(lev, levels, _array) {\n if (hiLevel < lev) {\n return;\n }\n if (lev == 1 && dir == RTL && !hasUBAT_B) {\n _array.reverse();\n return;\n }\n var len = _array.length, start = 0, end, lo, hi, tmp;\n while (start < len) {\n if (levels[start] >= lev) {\n end = start + 1;\n while (end < len && levels[end] >= lev) {\n end++;\n }\n for (lo = start, hi = end - 1; lo < hi; lo++, hi--) {\n tmp = _array[lo];\n _array[lo] = _array[hi];\n _array[hi] = tmp;\n }\n start = end;\n }\n start++;\n }\n}\nfunction _getCharClass(chars, types, classes, ix) {\n var cType = types[ix], wType, nType, len, i;\n switch (cType) {\n case L:\n case R:\n lastArabic = false;\n case ON:\n case AN:\n return cType;\n case EN:\n return lastArabic ? AN : EN;\n case AL:\n lastArabic = true;\n hasUBAT_AL = true;\n return R;\n case WS:\n return ON;\n case CS:\n if (ix < 1 || (ix + 1) >= types.length ||\n ((wType = classes[ix - 1]) != EN && wType != AN) ||\n ((nType = types[ix + 1]) != EN && nType != AN)) {\n return ON;\n }\n if (lastArabic) {\n nType = AN;\n }\n return nType == wType ? nType : ON;\n case ES:\n wType = ix > 0 ? classes[ix - 1] : B;\n if (wType == EN && (ix + 1) < types.length && types[ix + 1] == EN) {\n return EN;\n }\n return ON;\n case ET:\n if (ix > 0 && classes[ix - 1] == EN) {\n return EN;\n }\n if (lastArabic) {\n return ON;\n }\n i = ix + 1;\n len = types.length;\n while (i < len && types[i] == ET) {\n i++;\n }\n if (i < len && types[i] == EN) {\n return EN;\n }\n return ON;\n case NSM:\n len = types.length;\n i = ix + 1;\n while (i < len && types[i] == NSM) {\n i++;\n }\n if (i < len) {\n var c = chars[ix], rtlCandidate = (c >= 0x0591 && c <= 0x08FF) || c == 0xFB1E;\n wType = types[i];\n if (rtlCandidate && (wType == R || wType == AL)) {\n return R;\n }\n }\n if (ix < 1 || (wType = types[ix - 1]) == B) {\n return ON;\n }\n return classes[ix - 1];\n case B:\n lastArabic = false;\n hasUBAT_B = true;\n return dir;\n case S:\n hasUBAT_S = true;\n return ON;\n case LRE:\n case RLE:\n case LRO:\n case RLO:\n case PDF:\n lastArabic = false;\n case BN:\n return ON;\n }\n}\nfunction _getCharacterType(ch) {\n var uc = ch.charCodeAt(0), hi = uc >> 8;\n if (hi == 0) {\n return ((uc > 0x00BF) ? L : UnicodeTBL00[uc]);\n }\n else if (hi == 5) {\n return (/[\\u0591-\\u05f4]/.test(ch) ? R : L);\n }\n else if (hi == 6) {\n if (/[\\u0610-\\u061a\\u064b-\\u065f\\u06d6-\\u06e4\\u06e7-\\u06ed]/.test(ch))\n return NSM;\n else if (/[\\u0660-\\u0669\\u066b-\\u066c]/.test(ch))\n return AN;\n else if (uc == 0x066A)\n return ET;\n else if (/[\\u06f0-\\u06f9]/.test(ch))\n return EN;\n else\n return AL;\n }\n else if (hi == 0x20 && uc <= 0x205F) {\n return UnicodeTBL20[uc & 0xFF];\n }\n else if (hi == 0xFE) {\n return (uc >= 0xFE70 ? AL : ON);\n }\n return ON;\n}\nfunction _isArabicDiacritics(ch) {\n return (ch >= '\\u064b' && ch <= '\\u0655');\n}\nexports.L = L;\nexports.R = R;\nexports.EN = EN;\nexports.ON_R = 3;\nexports.AN = 4;\nexports.R_H = 5;\nexports.B = 6;\nexports.RLE = 7;\nexports.DOT = \"\\xB7\";\nexports.doBidiReorder = function (text, textCharTypes, isRtl) {\n if (text.length < 2)\n return {};\n var chars = text.split(\"\"), logicalFromVisual = new Array(chars.length), bidiLevels = new Array(chars.length), levels = [];\n dir = isRtl ? RTL : LTR;\n _computeLevels(chars, levels, chars.length, textCharTypes);\n for (var i = 0; i < logicalFromVisual.length; logicalFromVisual[i] = i, i++)\n ;\n _invertLevel(2, levels, logicalFromVisual);\n _invertLevel(1, levels, logicalFromVisual);\n for (var i = 0; i < logicalFromVisual.length - 1; i++) { //fix levels to reflect character width\n if (textCharTypes[i] === AN) {\n levels[i] = exports.AN;\n }\n else if (levels[i] === R && ((textCharTypes[i] > AL && textCharTypes[i] < LRE)\n || textCharTypes[i] === ON || textCharTypes[i] === BN)) {\n levels[i] = exports.ON_R;\n }\n else if ((i > 0 && chars[i - 1] === '\\u0644') && /\\u0622|\\u0623|\\u0625|\\u0627/.test(chars[i])) {\n levels[i - 1] = levels[i] = exports.R_H;\n i++;\n }\n }\n if (chars[chars.length - 1] === exports.DOT)\n levels[chars.length - 1] = exports.B;\n if (chars[0] === '\\u202B')\n levels[0] = exports.RLE;\n for (var i = 0; i < logicalFromVisual.length; i++) {\n bidiLevels[i] = levels[logicalFromVisual[i]];\n }\n return { 'logicalFromVisual': logicalFromVisual, 'bidiLevels': bidiLevels };\n};\nexports.hasBidiCharacters = function (text, textCharTypes) {\n var ret = false;\n for (var i = 0; i < text.length; i++) {\n textCharTypes[i] = _getCharacterType(text.charAt(i));\n if (!ret && (textCharTypes[i] == R || textCharTypes[i] == AL || textCharTypes[i] == AN))\n ret = true;\n }\n return ret;\n};\nexports.getVisualFromLogicalIdx = function (logIdx, rowMap) {\n for (var i = 0; i < rowMap.logicalFromVisual.length; i++) {\n if (rowMap.logicalFromVisual[i] == logIdx)\n return i;\n }\n return 0;\n};\n\n});\n\nace.define(\"ace/bidihandler\",[\"require\",\"exports\",\"module\",\"ace/lib/bidiutil\",\"ace/lib/lang\"], function(require, exports, module){\"use strict\";\nvar bidiUtil = require(\"./lib/bidiutil\");\nvar lang = require(\"./lib/lang\");\nvar bidiRE = /[\\u0590-\\u05f4\\u0600-\\u06ff\\u0700-\\u08ac\\u202B]/;\nvar BidiHandler = /** @class */ (function () {\n function BidiHandler(session) {\n this.session = session;\n this.bidiMap = {};\n this.currentRow = null;\n this.bidiUtil = bidiUtil;\n this.charWidths = [];\n this.EOL = \"\\xAC\";\n this.showInvisibles = true;\n this.isRtlDir = false;\n this.$isRtl = false;\n this.line = \"\";\n this.wrapIndent = 0;\n this.EOF = \"\\xB6\";\n this.RLE = \"\\u202B\";\n this.contentWidth = 0;\n this.fontMetrics = null;\n this.rtlLineOffset = 0;\n this.wrapOffset = 0;\n this.isMoveLeftOperation = false;\n this.seenBidi = bidiRE.test(session.getValue());\n }\n BidiHandler.prototype.isBidiRow = function (screenRow, docRow, splitIndex) {\n if (!this.seenBidi)\n return false;\n if (screenRow !== this.currentRow) {\n this.currentRow = screenRow;\n this.updateRowLine(docRow, splitIndex);\n this.updateBidiMap();\n }\n return this.bidiMap.bidiLevels;\n };\n BidiHandler.prototype.onChange = function (delta) {\n if (!this.seenBidi) {\n if (delta.action == \"insert\" && bidiRE.test(delta.lines.join(\"\\n\"))) {\n this.seenBidi = true;\n this.currentRow = null;\n }\n }\n else {\n this.currentRow = null;\n }\n };\n BidiHandler.prototype.getDocumentRow = function () {\n var docRow = 0;\n var rowCache = this.session.$screenRowCache;\n if (rowCache.length) {\n var index = this.session.$getRowCacheIndex(rowCache, this.currentRow);\n if (index >= 0)\n docRow = this.session.$docRowCache[index];\n }\n return docRow;\n };\n BidiHandler.prototype.getSplitIndex = function () {\n var splitIndex = 0;\n var rowCache = this.session.$screenRowCache;\n if (rowCache.length) {\n var currentIndex, prevIndex = this.session.$getRowCacheIndex(rowCache, this.currentRow);\n while (this.currentRow - splitIndex > 0) {\n currentIndex = this.session.$getRowCacheIndex(rowCache, this.currentRow - splitIndex - 1);\n if (currentIndex !== prevIndex)\n break;\n prevIndex = currentIndex;\n splitIndex++;\n }\n }\n else {\n splitIndex = this.currentRow;\n }\n return splitIndex;\n };\n BidiHandler.prototype.updateRowLine = function (docRow, splitIndex) {\n if (docRow === undefined)\n docRow = this.getDocumentRow();\n var isLastRow = (docRow === this.session.getLength() - 1), endOfLine = isLastRow ? this.EOF : this.EOL;\n this.wrapIndent = 0;\n this.line = this.session.getLine(docRow);\n this.isRtlDir = this.$isRtl || this.line.charAt(0) === this.RLE;\n if (this.session.$useWrapMode) {\n var splits = this.session.$wrapData[docRow];\n if (splits) {\n if (splitIndex === undefined)\n splitIndex = this.getSplitIndex();\n if (splitIndex > 0 && splits.length) {\n this.wrapIndent = splits.indent;\n this.wrapOffset = this.wrapIndent * this.charWidths[bidiUtil.L];\n this.line = (splitIndex < splits.length) ?\n this.line.substring(splits[splitIndex - 1], splits[splitIndex]) :\n this.line.substring(splits[splits.length - 1]);\n }\n else {\n this.line = this.line.substring(0, splits[splitIndex]);\n }\n if (splitIndex == splits.length) {\n this.line += (this.showInvisibles) ? endOfLine : bidiUtil.DOT;\n }\n }\n }\n else {\n this.line += this.showInvisibles ? endOfLine : bidiUtil.DOT;\n }\n var session = this.session, shift = 0, size;\n this.line = this.line.replace(/\\t|[\\u1100-\\u2029, \\u202F-\\uFFE6]/g, function (ch, i) {\n if (ch === '\\t' || session.isFullWidth(ch.charCodeAt(0))) {\n size = (ch === '\\t') ? session.getScreenTabSize(i + shift) : 2;\n shift += size - 1;\n return lang.stringRepeat(bidiUtil.DOT, size);\n }\n return ch;\n });\n if (this.isRtlDir) {\n this.fontMetrics.$main.textContent = (this.line.charAt(this.line.length - 1) == bidiUtil.DOT) ? this.line.substr(0, this.line.length - 1) : this.line;\n this.rtlLineOffset = this.contentWidth - this.fontMetrics.$main.getBoundingClientRect().width;\n }\n };\n BidiHandler.prototype.updateBidiMap = function () {\n var textCharTypes = [];\n if (bidiUtil.hasBidiCharacters(this.line, textCharTypes) || this.isRtlDir) {\n this.bidiMap = bidiUtil.doBidiReorder(this.line, textCharTypes, this.isRtlDir);\n }\n else {\n this.bidiMap = {};\n }\n };\n BidiHandler.prototype.markAsDirty = function () {\n this.currentRow = null;\n };\n BidiHandler.prototype.updateCharacterWidths = function (fontMetrics) {\n if (this.characterWidth === fontMetrics.$characterSize.width)\n return;\n this.fontMetrics = fontMetrics;\n var characterWidth = this.characterWidth = fontMetrics.$characterSize.width;\n var bidiCharWidth = fontMetrics.$measureCharWidth(\"\\u05d4\");\n this.charWidths[bidiUtil.L] = this.charWidths[bidiUtil.EN] = this.charWidths[bidiUtil.ON_R] = characterWidth;\n this.charWidths[bidiUtil.R] = this.charWidths[bidiUtil.AN] = bidiCharWidth;\n this.charWidths[bidiUtil.R_H] = bidiCharWidth * 0.45;\n this.charWidths[bidiUtil.B] = this.charWidths[bidiUtil.RLE] = 0;\n this.currentRow = null;\n };\n BidiHandler.prototype.setShowInvisibles = function (showInvisibles) {\n this.showInvisibles = showInvisibles;\n this.currentRow = null;\n };\n BidiHandler.prototype.setEolChar = function (eolChar) {\n this.EOL = eolChar;\n };\n BidiHandler.prototype.setContentWidth = function (width) {\n this.contentWidth = width;\n };\n BidiHandler.prototype.isRtlLine = function (row) {\n if (this.$isRtl)\n return true;\n if (row != undefined)\n return (this.session.getLine(row).charAt(0) == this.RLE);\n else\n return this.isRtlDir;\n };\n BidiHandler.prototype.setRtlDirection = function (editor, isRtlDir) {\n var cursor = editor.getCursorPosition();\n for (var row = editor.selection.getSelectionAnchor().row; row <= cursor.row; row++) {\n if (!isRtlDir && editor.session.getLine(row).charAt(0) === editor.session.$bidiHandler.RLE)\n editor.session.doc.removeInLine(row, 0, 1);\n else if (isRtlDir && editor.session.getLine(row).charAt(0) !== editor.session.$bidiHandler.RLE)\n editor.session.doc.insert({ column: 0, row: row }, editor.session.$bidiHandler.RLE);\n }\n };\n BidiHandler.prototype.getPosLeft = function (col) {\n col -= this.wrapIndent;\n var leftBoundary = (this.line.charAt(0) === this.RLE) ? 1 : 0;\n var logicalIdx = (col > leftBoundary) ? (this.session.getOverwrite() ? col : col - 1) : leftBoundary;\n var visualIdx = bidiUtil.getVisualFromLogicalIdx(logicalIdx, this.bidiMap), levels = this.bidiMap.bidiLevels, left = 0;\n if (!this.session.getOverwrite() && col <= leftBoundary && levels[visualIdx] % 2 !== 0)\n visualIdx++;\n for (var i = 0; i < visualIdx; i++) {\n left += this.charWidths[levels[i]];\n }\n if (!this.session.getOverwrite() && (col > leftBoundary) && (levels[visualIdx] % 2 === 0))\n left += this.charWidths[levels[visualIdx]];\n if (this.wrapIndent)\n left += this.isRtlDir ? (-1 * this.wrapOffset) : this.wrapOffset;\n if (this.isRtlDir)\n left += this.rtlLineOffset;\n return left;\n };\n BidiHandler.prototype.getSelections = function (startCol, endCol) {\n var map = this.bidiMap, levels = map.bidiLevels, level, selections = [], offset = 0, selColMin = Math.min(startCol, endCol) - this.wrapIndent, selColMax = Math.max(startCol, endCol) - this.wrapIndent, isSelected = false, isSelectedPrev = false, selectionStart = 0;\n if (this.wrapIndent)\n offset += this.isRtlDir ? (-1 * this.wrapOffset) : this.wrapOffset;\n for (var logIdx, visIdx = 0; visIdx < levels.length; visIdx++) {\n logIdx = map.logicalFromVisual[visIdx];\n level = levels[visIdx];\n isSelected = (logIdx >= selColMin) && (logIdx < selColMax);\n if (isSelected && !isSelectedPrev) {\n selectionStart = offset;\n }\n else if (!isSelected && isSelectedPrev) {\n selections.push({ left: selectionStart, width: offset - selectionStart });\n }\n offset += this.charWidths[level];\n isSelectedPrev = isSelected;\n }\n if (isSelected && (visIdx === levels.length)) {\n selections.push({ left: selectionStart, width: offset - selectionStart });\n }\n if (this.isRtlDir) {\n for (var i = 0; i < selections.length; i++) {\n selections[i].left += this.rtlLineOffset;\n }\n }\n return selections;\n };\n BidiHandler.prototype.offsetToCol = function (posX) {\n if (this.isRtlDir)\n posX -= this.rtlLineOffset;\n var logicalIdx = 0, posX = Math.max(posX, 0), offset = 0, visualIdx = 0, levels = this.bidiMap.bidiLevels, charWidth = this.charWidths[levels[visualIdx]];\n if (this.wrapIndent)\n posX -= this.isRtlDir ? (-1 * this.wrapOffset) : this.wrapOffset;\n while (posX > offset + charWidth / 2) {\n offset += charWidth;\n if (visualIdx === levels.length - 1) {\n charWidth = 0;\n break;\n }\n charWidth = this.charWidths[levels[++visualIdx]];\n }\n if (visualIdx > 0 && (levels[visualIdx - 1] % 2 !== 0) && (levels[visualIdx] % 2 === 0)) {\n if (posX < offset)\n visualIdx--;\n logicalIdx = this.bidiMap.logicalFromVisual[visualIdx];\n }\n else if (visualIdx > 0 && (levels[visualIdx - 1] % 2 === 0) && (levels[visualIdx] % 2 !== 0)) {\n logicalIdx = 1 + ((posX > offset) ? this.bidiMap.logicalFromVisual[visualIdx]\n : this.bidiMap.logicalFromVisual[visualIdx - 1]);\n }\n else if ((this.isRtlDir && visualIdx === levels.length - 1 && charWidth === 0 && (levels[visualIdx - 1] % 2 === 0))\n || (!this.isRtlDir && visualIdx === 0 && (levels[visualIdx] % 2 !== 0))) {\n logicalIdx = 1 + this.bidiMap.logicalFromVisual[visualIdx];\n }\n else {\n if (visualIdx > 0 && (levels[visualIdx - 1] % 2 !== 0) && charWidth !== 0)\n visualIdx--;\n logicalIdx = this.bidiMap.logicalFromVisual[visualIdx];\n }\n if (logicalIdx === 0 && this.isRtlDir)\n logicalIdx++;\n return (logicalIdx + this.wrapIndent);\n };\n return BidiHandler;\n}());\nexports.BidiHandler = BidiHandler;\n\n});\n\nace.define(\"ace/selection\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/lib/event_emitter\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"./lib/oop\");\nvar lang = require(\"./lib/lang\");\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar Range = require(\"./range\").Range;\nvar Selection = /** @class */ (function () {\n function Selection(session) {\n this.session = session;\n this.doc = session.getDocument();\n this.clearSelection();\n this.cursor = this.lead = this.doc.createAnchor(0, 0);\n this.anchor = this.doc.createAnchor(0, 0);\n this.$silent = false;\n var self = this;\n this.cursor.on(\"change\", function (e) {\n self.$cursorChanged = true;\n if (!self.$silent)\n self._emit(\"changeCursor\");\n if (!self.$isEmpty && !self.$silent)\n self._emit(\"changeSelection\");\n if (!self.$keepDesiredColumnOnChange && e.old.column != e.value.column)\n self.$desiredColumn = null;\n });\n this.anchor.on(\"change\", function () {\n self.$anchorChanged = true;\n if (!self.$isEmpty && !self.$silent)\n self._emit(\"changeSelection\");\n });\n }\n Selection.prototype.isEmpty = function () {\n return this.$isEmpty || (this.anchor.row == this.lead.row &&\n this.anchor.column == this.lead.column);\n };\n Selection.prototype.isMultiLine = function () {\n return !this.$isEmpty && this.anchor.row != this.cursor.row;\n };\n Selection.prototype.getCursor = function () {\n return this.lead.getPosition();\n };\n Selection.prototype.setAnchor = function (row, column) {\n this.$isEmpty = false;\n this.anchor.setPosition(row, column);\n };\n Selection.prototype.getAnchor = function () {\n if (this.$isEmpty)\n return this.getSelectionLead();\n return this.anchor.getPosition();\n };\n Selection.prototype.getSelectionLead = function () {\n return this.lead.getPosition();\n };\n Selection.prototype.isBackwards = function () {\n var anchor = this.anchor;\n var lead = this.lead;\n return (anchor.row > lead.row || (anchor.row == lead.row && anchor.column > lead.column));\n };\n Selection.prototype.getRange = function () {\n var anchor = this.anchor;\n var lead = this.lead;\n if (this.$isEmpty)\n return Range.fromPoints(lead, lead);\n return this.isBackwards()\n ? Range.fromPoints(lead, anchor)\n : Range.fromPoints(anchor, lead);\n };\n Selection.prototype.clearSelection = function () {\n if (!this.$isEmpty) {\n this.$isEmpty = true;\n this._emit(\"changeSelection\");\n }\n };\n Selection.prototype.selectAll = function () {\n this.$setSelection(0, 0, Number.MAX_VALUE, Number.MAX_VALUE);\n };\n Selection.prototype.setRange = function (range, reverse) {\n var start = reverse ? range.end : range.start;\n var end = reverse ? range.start : range.end;\n this.$setSelection(start.row, start.column, end.row, end.column);\n };\n Selection.prototype.$setSelection = function (anchorRow, anchorColumn, cursorRow, cursorColumn) {\n if (this.$silent)\n return;\n var wasEmpty = this.$isEmpty;\n var wasMultiselect = this.inMultiSelectMode;\n this.$silent = true;\n this.$cursorChanged = this.$anchorChanged = false;\n this.anchor.setPosition(anchorRow, anchorColumn);\n this.cursor.setPosition(cursorRow, cursorColumn);\n this.$isEmpty = !Range.comparePoints(this.anchor, this.cursor);\n this.$silent = false;\n if (this.$cursorChanged)\n this._emit(\"changeCursor\");\n if (this.$cursorChanged || this.$anchorChanged || wasEmpty != this.$isEmpty || wasMultiselect)\n this._emit(\"changeSelection\");\n };\n Selection.prototype.$moveSelection = function (mover) {\n var lead = this.lead;\n if (this.$isEmpty)\n this.setSelectionAnchor(lead.row, lead.column);\n mover.call(this);\n };\n Selection.prototype.selectTo = function (row, column) {\n this.$moveSelection(function () {\n this.moveCursorTo(row, column);\n });\n };\n Selection.prototype.selectToPosition = function (pos) {\n this.$moveSelection(function () {\n this.moveCursorToPosition(pos);\n });\n };\n Selection.prototype.moveTo = function (row, column) {\n this.clearSelection();\n this.moveCursorTo(row, column);\n };\n Selection.prototype.moveToPosition = function (pos) {\n this.clearSelection();\n this.moveCursorToPosition(pos);\n };\n Selection.prototype.selectUp = function () {\n this.$moveSelection(this.moveCursorUp);\n };\n Selection.prototype.selectDown = function () {\n this.$moveSelection(this.moveCursorDown);\n };\n Selection.prototype.selectRight = function () {\n this.$moveSelection(this.moveCursorRight);\n };\n Selection.prototype.selectLeft = function () {\n this.$moveSelection(this.moveCursorLeft);\n };\n Selection.prototype.selectLineStart = function () {\n this.$moveSelection(this.moveCursorLineStart);\n };\n Selection.prototype.selectLineEnd = function () {\n this.$moveSelection(this.moveCursorLineEnd);\n };\n Selection.prototype.selectFileEnd = function () {\n this.$moveSelection(this.moveCursorFileEnd);\n };\n Selection.prototype.selectFileStart = function () {\n this.$moveSelection(this.moveCursorFileStart);\n };\n Selection.prototype.selectWordRight = function () {\n this.$moveSelection(this.moveCursorWordRight);\n };\n Selection.prototype.selectWordLeft = function () {\n this.$moveSelection(this.moveCursorWordLeft);\n };\n Selection.prototype.getWordRange = function (row, column) {\n if (typeof column == \"undefined\") {\n var cursor = row || this.lead;\n row = cursor.row;\n column = cursor.column;\n }\n return this.session.getWordRange(row, column);\n };\n Selection.prototype.selectWord = function () {\n this.setSelectionRange(this.getWordRange());\n };\n Selection.prototype.selectAWord = function () {\n var cursor = this.getCursor();\n var range = this.session.getAWordRange(cursor.row, cursor.column);\n this.setSelectionRange(range);\n };\n Selection.prototype.getLineRange = function (row, excludeLastChar) {\n var rowStart = typeof row == \"number\" ? row : this.lead.row;\n var rowEnd;\n var foldLine = this.session.getFoldLine(rowStart);\n if (foldLine) {\n rowStart = foldLine.start.row;\n rowEnd = foldLine.end.row;\n }\n else {\n rowEnd = rowStart;\n }\n if (excludeLastChar === true)\n return new Range(rowStart, 0, rowEnd, this.session.getLine(rowEnd).length);\n else\n return new Range(rowStart, 0, rowEnd + 1, 0);\n };\n Selection.prototype.selectLine = function () {\n this.setSelectionRange(this.getLineRange());\n };\n Selection.prototype.moveCursorUp = function () {\n this.moveCursorBy(-1, 0);\n };\n Selection.prototype.moveCursorDown = function () {\n this.moveCursorBy(1, 0);\n };\n Selection.prototype.wouldMoveIntoSoftTab = function (cursor, tabSize, direction) {\n var start = cursor.column;\n var end = cursor.column + tabSize;\n if (direction < 0) {\n start = cursor.column - tabSize;\n end = cursor.column;\n }\n return this.session.isTabStop(cursor) && this.doc.getLine(cursor.row).slice(start, end).split(\" \").length - 1 == tabSize;\n };\n Selection.prototype.moveCursorLeft = function () {\n var cursor = this.lead.getPosition(), fold;\n if (fold = this.session.getFoldAt(cursor.row, cursor.column, -1)) {\n this.moveCursorTo(fold.start.row, fold.start.column);\n }\n else if (cursor.column === 0) {\n if (cursor.row > 0) {\n this.moveCursorTo(cursor.row - 1, this.doc.getLine(cursor.row - 1).length);\n }\n }\n else {\n var tabSize = this.session.getTabSize();\n if (this.wouldMoveIntoSoftTab(cursor, tabSize, -1) && !this.session.getNavigateWithinSoftTabs()) {\n this.moveCursorBy(0, -tabSize);\n }\n else {\n this.moveCursorBy(0, -1);\n }\n }\n };\n Selection.prototype.moveCursorRight = function () {\n var cursor = this.lead.getPosition(), fold;\n if (fold = this.session.getFoldAt(cursor.row, cursor.column, 1)) {\n this.moveCursorTo(fold.end.row, fold.end.column);\n }\n else if (this.lead.column == this.doc.getLine(this.lead.row).length) {\n if (this.lead.row < this.doc.getLength() - 1) {\n this.moveCursorTo(this.lead.row + 1, 0);\n }\n }\n else {\n var tabSize = this.session.getTabSize();\n var cursor = this.lead;\n if (this.wouldMoveIntoSoftTab(cursor, tabSize, 1) && !this.session.getNavigateWithinSoftTabs()) {\n this.moveCursorBy(0, tabSize);\n }\n else {\n this.moveCursorBy(0, 1);\n }\n }\n };\n Selection.prototype.moveCursorLineStart = function () {\n var row = this.lead.row;\n var column = this.lead.column;\n var screenRow = this.session.documentToScreenRow(row, column);\n var firstColumnPosition = this.session.screenToDocumentPosition(screenRow, 0);\n var beforeCursor = this.session.getDisplayLine(row, null, firstColumnPosition.row, firstColumnPosition.column);\n var leadingSpace = beforeCursor.match(/^\\s*/);\n if (leadingSpace[0].length != column && !this.session.$useEmacsStyleLineStart)\n firstColumnPosition.column += leadingSpace[0].length;\n this.moveCursorToPosition(firstColumnPosition);\n };\n Selection.prototype.moveCursorLineEnd = function () {\n var lead = this.lead;\n var lineEnd = this.session.getDocumentLastRowColumnPosition(lead.row, lead.column);\n if (this.lead.column == lineEnd.column) {\n var line = this.session.getLine(lineEnd.row);\n if (lineEnd.column == line.length) {\n var textEnd = line.search(/\\s+$/);\n if (textEnd > 0)\n lineEnd.column = textEnd;\n }\n }\n this.moveCursorTo(lineEnd.row, lineEnd.column);\n };\n Selection.prototype.moveCursorFileEnd = function () {\n var row = this.doc.getLength() - 1;\n var column = this.doc.getLine(row).length;\n this.moveCursorTo(row, column);\n };\n Selection.prototype.moveCursorFileStart = function () {\n this.moveCursorTo(0, 0);\n };\n Selection.prototype.moveCursorLongWordRight = function () {\n var row = this.lead.row;\n var column = this.lead.column;\n var line = this.doc.getLine(row);\n var rightOfCursor = line.substring(column);\n this.session.nonTokenRe.lastIndex = 0;\n this.session.tokenRe.lastIndex = 0;\n var fold = this.session.getFoldAt(row, column, 1);\n if (fold) {\n this.moveCursorTo(fold.end.row, fold.end.column);\n return;\n }\n if (this.session.nonTokenRe.exec(rightOfCursor)) {\n column += this.session.nonTokenRe.lastIndex;\n this.session.nonTokenRe.lastIndex = 0;\n rightOfCursor = line.substring(column);\n }\n if (column >= line.length) {\n this.moveCursorTo(row, line.length);\n this.moveCursorRight();\n if (row < this.doc.getLength() - 1)\n this.moveCursorWordRight();\n return;\n }\n if (this.session.tokenRe.exec(rightOfCursor)) {\n column += this.session.tokenRe.lastIndex;\n this.session.tokenRe.lastIndex = 0;\n }\n this.moveCursorTo(row, column);\n };\n Selection.prototype.moveCursorLongWordLeft = function () {\n var row = this.lead.row;\n var column = this.lead.column;\n var fold;\n if (fold = this.session.getFoldAt(row, column, -1)) {\n this.moveCursorTo(fold.start.row, fold.start.column);\n return;\n }\n var str = this.session.getFoldStringAt(row, column, -1);\n if (str == null) {\n str = this.doc.getLine(row).substring(0, column);\n }\n var leftOfCursor = lang.stringReverse(str);\n this.session.nonTokenRe.lastIndex = 0;\n this.session.tokenRe.lastIndex = 0;\n if (this.session.nonTokenRe.exec(leftOfCursor)) {\n column -= this.session.nonTokenRe.lastIndex;\n leftOfCursor = leftOfCursor.slice(this.session.nonTokenRe.lastIndex);\n this.session.nonTokenRe.lastIndex = 0;\n }\n if (column <= 0) {\n this.moveCursorTo(row, 0);\n this.moveCursorLeft();\n if (row > 0)\n this.moveCursorWordLeft();\n return;\n }\n if (this.session.tokenRe.exec(leftOfCursor)) {\n column -= this.session.tokenRe.lastIndex;\n this.session.tokenRe.lastIndex = 0;\n }\n this.moveCursorTo(row, column);\n };\n Selection.prototype.$shortWordEndIndex = function (rightOfCursor) {\n var index = 0, ch;\n var whitespaceRe = /\\s/;\n var tokenRe = this.session.tokenRe;\n tokenRe.lastIndex = 0;\n if (this.session.tokenRe.exec(rightOfCursor)) {\n index = this.session.tokenRe.lastIndex;\n }\n else {\n while ((ch = rightOfCursor[index]) && whitespaceRe.test(ch))\n index++;\n if (index < 1) {\n tokenRe.lastIndex = 0;\n while ((ch = rightOfCursor[index]) && !tokenRe.test(ch)) {\n tokenRe.lastIndex = 0;\n index++;\n if (whitespaceRe.test(ch)) {\n if (index > 2) {\n index--;\n break;\n }\n else {\n while ((ch = rightOfCursor[index]) && whitespaceRe.test(ch))\n index++;\n if (index > 2)\n break;\n }\n }\n }\n }\n }\n tokenRe.lastIndex = 0;\n return index;\n };\n Selection.prototype.moveCursorShortWordRight = function () {\n var row = this.lead.row;\n var column = this.lead.column;\n var line = this.doc.getLine(row);\n var rightOfCursor = line.substring(column);\n var fold = this.session.getFoldAt(row, column, 1);\n if (fold)\n return this.moveCursorTo(fold.end.row, fold.end.column);\n if (column == line.length) {\n var l = this.doc.getLength();\n do {\n row++;\n rightOfCursor = this.doc.getLine(row);\n } while (row < l && /^\\s*$/.test(rightOfCursor));\n if (!/^\\s+/.test(rightOfCursor))\n rightOfCursor = \"\";\n column = 0;\n }\n var index = this.$shortWordEndIndex(rightOfCursor);\n this.moveCursorTo(row, column + index);\n };\n Selection.prototype.moveCursorShortWordLeft = function () {\n var row = this.lead.row;\n var column = this.lead.column;\n var fold;\n if (fold = this.session.getFoldAt(row, column, -1))\n return this.moveCursorTo(fold.start.row, fold.start.column);\n var line = this.session.getLine(row).substring(0, column);\n if (column === 0) {\n do {\n row--;\n line = this.doc.getLine(row);\n } while (row > 0 && /^\\s*$/.test(line));\n column = line.length;\n if (!/\\s+$/.test(line))\n line = \"\";\n }\n var leftOfCursor = lang.stringReverse(line);\n var index = this.$shortWordEndIndex(leftOfCursor);\n return this.moveCursorTo(row, column - index);\n };\n Selection.prototype.moveCursorWordRight = function () {\n if (this.session.$selectLongWords)\n this.moveCursorLongWordRight();\n else\n this.moveCursorShortWordRight();\n };\n Selection.prototype.moveCursorWordLeft = function () {\n if (this.session.$selectLongWords)\n this.moveCursorLongWordLeft();\n else\n this.moveCursorShortWordLeft();\n };\n Selection.prototype.moveCursorBy = function (rows, chars) {\n var screenPos = this.session.documentToScreenPosition(this.lead.row, this.lead.column);\n var offsetX;\n if (chars === 0) {\n if (rows !== 0) {\n if (this.session.$bidiHandler.isBidiRow(screenPos.row, this.lead.row)) {\n offsetX = this.session.$bidiHandler.getPosLeft(screenPos.column);\n screenPos.column = Math.round(offsetX / this.session.$bidiHandler.charWidths[0]);\n }\n else {\n offsetX = screenPos.column * this.session.$bidiHandler.charWidths[0];\n }\n }\n if (this.$desiredColumn)\n screenPos.column = this.$desiredColumn;\n else\n this.$desiredColumn = screenPos.column;\n }\n if (rows != 0 && this.session.lineWidgets && this.session.lineWidgets[this.lead.row]) {\n var widget = this.session.lineWidgets[this.lead.row];\n if (rows < 0)\n rows -= widget.rowsAbove || 0;\n else if (rows > 0)\n rows += widget.rowCount - (widget.rowsAbove || 0);\n }\n var docPos = this.session.screenToDocumentPosition(screenPos.row + rows, screenPos.column, offsetX);\n if (rows !== 0 && chars === 0 && docPos.row === this.lead.row && docPos.column === this.lead.column) {\n }\n this.moveCursorTo(docPos.row, docPos.column + chars, chars === 0);\n };\n Selection.prototype.moveCursorToPosition = function (position) {\n this.moveCursorTo(position.row, position.column);\n };\n Selection.prototype.moveCursorTo = function (row, column, keepDesiredColumn) {\n var fold = this.session.getFoldAt(row, column, 1);\n if (fold) {\n row = fold.start.row;\n column = fold.start.column;\n }\n this.$keepDesiredColumnOnChange = true;\n var line = this.session.getLine(row);\n if (/[\\uDC00-\\uDFFF]/.test(line.charAt(column)) && line.charAt(column - 1)) {\n if (this.lead.row == row && this.lead.column == column + 1)\n column = column - 1;\n else\n column = column + 1;\n }\n this.lead.setPosition(row, column);\n this.$keepDesiredColumnOnChange = false;\n if (!keepDesiredColumn)\n this.$desiredColumn = null;\n };\n Selection.prototype.moveCursorToScreen = function (row, column, keepDesiredColumn) {\n var pos = this.session.screenToDocumentPosition(row, column);\n this.moveCursorTo(pos.row, pos.column, keepDesiredColumn);\n };\n Selection.prototype.detach = function () {\n this.lead.detach();\n this.anchor.detach();\n };\n Selection.prototype.fromOrientedRange = function (range) {\n this.setSelectionRange(range, range.cursor == range.start);\n this.$desiredColumn = range.desiredColumn || this.$desiredColumn;\n };\n Selection.prototype.toOrientedRange = function (range) {\n var r = this.getRange();\n if (range) {\n range.start.column = r.start.column;\n range.start.row = r.start.row;\n range.end.column = r.end.column;\n range.end.row = r.end.row;\n }\n else {\n range = r;\n }\n range.cursor = this.isBackwards() ? range.start : range.end;\n range.desiredColumn = this.$desiredColumn;\n return range;\n };\n Selection.prototype.getRangeOfMovements = function (func) {\n var start = this.getCursor();\n try {\n func(this);\n var end = this.getCursor();\n return Range.fromPoints(start, end);\n }\n catch (e) {\n return Range.fromPoints(start, start);\n }\n finally {\n this.moveCursorToPosition(start);\n }\n };\n Selection.prototype.toJSON = function () {\n if (this.rangeCount) {\n var data = this.ranges.map(function (r) {\n var r1 = r.clone();\n r1.isBackwards = r.cursor == r.start;\n return r1;\n });\n }\n else {\n var data = this.getRange();\n data.isBackwards = this.isBackwards();\n }\n return data;\n };\n Selection.prototype.fromJSON = function (data) {\n if (data.start == undefined) {\n if (this.rangeList && data.length > 1) {\n this.toSingleRange(data[0]);\n for (var i = data.length; i--;) {\n var r = Range.fromPoints(data[i].start, data[i].end);\n if (data[i].isBackwards)\n r.cursor = r.start;\n this.addRange(r, true);\n }\n return;\n }\n else {\n data = data[0];\n }\n }\n if (this.rangeList)\n this.toSingleRange(data);\n this.setSelectionRange(data, data.isBackwards);\n };\n Selection.prototype.isEqual = function (data) {\n if ((data.length || this.rangeCount) && data.length != this.rangeCount)\n return false;\n if (!data.length || !this.ranges)\n return this.getRange().isEqual(data);\n for (var i = this.ranges.length; i--;) {\n if (!this.ranges[i].isEqual(data[i]))\n return false;\n }\n return true;\n };\n return Selection;\n}());\nSelection.prototype.setSelectionAnchor = Selection.prototype.setAnchor;\nSelection.prototype.getSelectionAnchor = Selection.prototype.getAnchor;\nSelection.prototype.setSelectionRange = Selection.prototype.setRange;\noop.implement(Selection.prototype, EventEmitter);\nexports.Selection = Selection;\n\n});\n\nace.define(\"ace/tokenizer\",[\"require\",\"exports\",\"module\",\"ace/lib/report_error\"], function(require, exports, module){\"use strict\";\nvar reportError = require(\"./lib/report_error\").reportError;\nvar MAX_TOKEN_COUNT = 2000;\nvar Tokenizer = /** @class */ (function () {\n function Tokenizer(rules) {\n this.states = rules;\n this.regExps = {};\n this.matchMappings = {};\n for (var key in this.states) {\n var state = this.states[key];\n var ruleRegExps = [];\n var matchTotal = 0;\n var mapping = this.matchMappings[key] = { defaultToken: \"text\" };\n var flag = \"g\";\n var splitterRurles = [];\n for (var i = 0; i < state.length; i++) {\n var rule = state[i];\n if (rule.defaultToken)\n mapping.defaultToken = rule.defaultToken;\n if (rule.caseInsensitive && flag.indexOf(\"i\") === -1)\n flag += \"i\";\n if (rule.unicode && flag.indexOf(\"u\") === -1)\n flag += \"u\";\n if (rule.regex == null)\n continue;\n if (rule.regex instanceof RegExp)\n rule.regex = rule.regex.toString().slice(1, -1);\n var adjustedregex = rule.regex;\n var matchcount = new RegExp(\"(?:(\" + adjustedregex + \")|(.))\").exec(\"a\").length - 2;\n if (Array.isArray(rule.token)) {\n if (rule.token.length == 1 || matchcount == 1) {\n rule.token = rule.token[0];\n }\n else if (matchcount - 1 != rule.token.length) {\n this.reportError(\"number of classes and regexp groups doesn't match\", {\n rule: rule,\n groupCount: matchcount - 1\n });\n rule.token = rule.token[0];\n }\n else {\n rule.tokenArray = rule.token;\n rule.token = null;\n rule.onMatch = this.$arrayTokens;\n }\n }\n else if (typeof rule.token == \"function\" && !rule.onMatch) {\n if (matchcount > 1)\n rule.onMatch = this.$applyToken;\n else\n rule.onMatch = rule.token;\n }\n if (matchcount > 1) {\n if (/\\\\\\d/.test(rule.regex)) {\n adjustedregex = rule.regex.replace(/\\\\([0-9]+)/g, function (match, digit) {\n return \"\\\\\" + (parseInt(digit, 10) + matchTotal + 1);\n });\n }\n else {\n matchcount = 1;\n adjustedregex = this.removeCapturingGroups(rule.regex);\n }\n if (!rule.splitRegex && typeof rule.token != \"string\")\n splitterRurles.push(rule); // flag will be known only at the very end\n }\n mapping[matchTotal] = i;\n matchTotal += matchcount;\n ruleRegExps.push(adjustedregex);\n if (!rule.onMatch)\n rule.onMatch = null;\n }\n if (!ruleRegExps.length) {\n mapping[0] = 0;\n ruleRegExps.push(\"$\");\n }\n splitterRurles.forEach(function (rule) {\n rule.splitRegex = this.createSplitterRegexp(rule.regex, flag);\n }, this);\n this.regExps[key] = new RegExp(\"(\" + ruleRegExps.join(\")|(\") + \")|($)\", flag);\n }\n }\n Tokenizer.prototype.$setMaxTokenCount = function (m) {\n MAX_TOKEN_COUNT = m | 0;\n };\n Tokenizer.prototype.$applyToken = function (str) {\n var values = this.splitRegex.exec(str).slice(1);\n var types = this.token.apply(this, values);\n if (typeof types === \"string\")\n return [{ type: types, value: str }];\n var tokens = [];\n for (var i = 0, l = types.length; i < l; i++) {\n if (values[i])\n tokens[tokens.length] = {\n type: types[i],\n value: values[i]\n };\n }\n return tokens;\n };\n Tokenizer.prototype.$arrayTokens = function (str) {\n if (!str)\n return [];\n var values = this.splitRegex.exec(str);\n if (!values)\n return \"text\";\n var tokens = [];\n var types = this.tokenArray;\n for (var i = 0, l = types.length; i < l; i++) {\n if (values[i + 1])\n tokens[tokens.length] = {\n type: types[i],\n value: values[i + 1]\n };\n }\n return tokens;\n };\n Tokenizer.prototype.removeCapturingGroups = function (src) {\n var r = src.replace(/\\\\.|\\[(?:\\\\.|[^\\\\\\]])*|\\(\\?[:=!<]|(\\()/g, function (x, y) { return y ? \"(?:\" : x; });\n return r;\n };\n Tokenizer.prototype.createSplitterRegexp = function (src, flag) {\n if (src.indexOf(\"(?=\") != -1) {\n var stack = 0;\n var inChClass = false;\n var lastCapture = {};\n src.replace(/(\\\\.)|(\\((?:\\?[=!])?)|(\\))|([\\[\\]])/g, function (m, esc, parenOpen, parenClose, square, index) {\n if (inChClass) {\n inChClass = square != \"]\";\n }\n else if (square) {\n inChClass = true;\n }\n else if (parenClose) {\n if (stack == lastCapture.stack) {\n lastCapture.end = index + 1;\n lastCapture.stack = -1;\n }\n stack--;\n }\n else if (parenOpen) {\n stack++;\n if (parenOpen.length != 1) {\n lastCapture.stack = stack;\n lastCapture.start = index;\n }\n }\n return m;\n });\n if (lastCapture.end != null && /^\\)*$/.test(src.substr(lastCapture.end)))\n src = src.substring(0, lastCapture.start) + src.substr(lastCapture.end);\n }\n if (src.charAt(0) != \"^\")\n src = \"^\" + src;\n if (src.charAt(src.length - 1) != \"$\")\n src += \"$\";\n return new RegExp(src, (flag || \"\").replace(\"g\", \"\"));\n };\n Tokenizer.prototype.getLineTokens = function (line, startState) {\n if (startState && typeof startState != \"string\") {\n var stack = startState.slice(0);\n startState = stack[0];\n if (startState === \"#tmp\") {\n stack.shift();\n startState = stack.shift();\n }\n }\n else\n var stack = [];\n var currentState = startState || \"start\";\n var state = this.states[currentState];\n if (!state) {\n currentState = \"start\";\n state = this.states[currentState];\n }\n var mapping = this.matchMappings[currentState];\n var re = this.regExps[currentState];\n re.lastIndex = 0;\n var match, tokens = [];\n var lastIndex = 0;\n var matchAttempts = 0;\n var token = { type: null, value: \"\" };\n while (match = re.exec(line)) {\n var type = mapping.defaultToken;\n var rule = null;\n var value = match[0];\n var index = re.lastIndex;\n if (index - value.length > lastIndex) {\n var skipped = line.substring(lastIndex, index - value.length);\n if (token.type == type) {\n token.value += skipped;\n }\n else {\n if (token.type)\n tokens.push(token);\n token = { type: type, value: skipped };\n }\n }\n for (var i = 0; i < match.length - 2; i++) {\n if (match[i + 1] === undefined)\n continue;\n rule = state[mapping[i]];\n if (rule.onMatch)\n type = rule.onMatch(value, currentState, stack, line);\n else\n type = rule.token;\n if (rule.next) {\n if (typeof rule.next == \"string\") {\n currentState = rule.next;\n }\n else {\n currentState = rule.next(currentState, stack);\n }\n state = this.states[currentState];\n if (!state) {\n this.reportError(\"state doesn't exist\", currentState);\n currentState = \"start\";\n state = this.states[currentState];\n }\n mapping = this.matchMappings[currentState];\n lastIndex = index;\n re = this.regExps[currentState];\n re.lastIndex = index;\n }\n if (rule.consumeLineEnd)\n lastIndex = index;\n break;\n }\n if (value) {\n if (typeof type === \"string\") {\n if ((!rule || rule.merge !== false) && token.type === type) {\n token.value += value;\n }\n else {\n if (token.type)\n tokens.push(token);\n token = { type: type, value: value };\n }\n }\n else if (type) {\n if (token.type)\n tokens.push(token);\n token = { type: null, value: \"\" };\n for (var i = 0; i < type.length; i++)\n tokens.push(type[i]);\n }\n }\n if (lastIndex == line.length)\n break;\n lastIndex = index;\n if (matchAttempts++ > MAX_TOKEN_COUNT) {\n if (matchAttempts > 2 * line.length) {\n this.reportError(\"infinite loop with in ace tokenizer\", {\n startState: startState,\n line: line\n });\n }\n while (lastIndex < line.length) {\n if (token.type)\n tokens.push(token);\n token = {\n value: line.substring(lastIndex, lastIndex += 500),\n type: \"overflow\"\n };\n }\n currentState = \"start\";\n stack = [];\n break;\n }\n }\n if (token.type)\n tokens.push(token);\n if (stack.length > 1) {\n if (stack[0] !== currentState)\n stack.unshift(\"#tmp\", currentState);\n }\n return {\n tokens: tokens,\n state: stack.length ? stack : currentState\n };\n };\n return Tokenizer;\n}());\nTokenizer.prototype.reportError = reportError;\nexports.Tokenizer = Tokenizer;\n\n});\n\nace.define(\"ace/mode/text_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/deep_copy\"], function(require, exports, module){\"use strict\";\nvar deepCopy = require(\"../lib/deep_copy\").deepCopy;\nvar TextHighlightRules = function () {\n this.$rules = {\n \"start\": [{\n token: \"empty_line\",\n regex: '^$'\n }, {\n defaultToken: \"text\"\n }]\n };\n};\n(function () {\n this.addRules = function (rules, prefix) {\n if (!prefix) {\n for (var key in rules)\n this.$rules[key] = rules[key];\n return;\n }\n for (var key in rules) {\n var state = rules[key];\n for (var i = 0; i < state.length; i++) {\n var rule = state[i];\n if (rule.next || rule.onMatch) {\n if (typeof rule.next == \"string\") {\n if (rule.next.indexOf(prefix) !== 0)\n rule.next = prefix + rule.next;\n }\n if (rule.nextState && rule.nextState.indexOf(prefix) !== 0)\n rule.nextState = prefix + rule.nextState;\n }\n }\n this.$rules[prefix + key] = state;\n }\n };\n this.getRules = function () {\n return this.$rules;\n };\n this.embedRules = function (HighlightRules, prefix, escapeRules, states, append) {\n var embedRules = typeof HighlightRules == \"function\"\n ? new HighlightRules().getRules()\n : HighlightRules;\n if (states) {\n for (var i = 0; i < states.length; i++)\n states[i] = prefix + states[i];\n }\n else {\n states = [];\n for (var key in embedRules)\n states.push(prefix + key);\n }\n this.addRules(embedRules, prefix);\n if (escapeRules) {\n var addRules = Array.prototype[append ? \"push\" : \"unshift\"];\n for (var i = 0; i < states.length; i++)\n addRules.apply(this.$rules[states[i]], deepCopy(escapeRules));\n }\n if (!this.$embeds)\n this.$embeds = [];\n this.$embeds.push(prefix);\n };\n this.getEmbeds = function () {\n return this.$embeds;\n };\n var pushState = function (currentState, stack) {\n if (currentState != \"start\" || stack.length)\n stack.unshift(this.nextState, currentState);\n return this.nextState;\n };\n var popState = function (currentState, stack) {\n stack.shift();\n return stack.shift() || \"start\";\n };\n this.normalizeRules = function () {\n var id = 0;\n var rules = this.$rules;\n function processState(key) {\n var state = rules[key];\n state.processed = true;\n for (var i = 0; i < state.length; i++) {\n var rule = state[i];\n var toInsert = null;\n if (Array.isArray(rule)) {\n toInsert = rule;\n rule = {};\n }\n if (!rule.regex && rule.start) {\n rule.regex = rule.start;\n if (!rule.next)\n rule.next = [];\n rule.next.push({\n defaultToken: rule.token\n }, {\n token: rule.token + \".end\",\n regex: rule.end || rule.start,\n next: \"pop\"\n });\n rule.token = rule.token + \".start\";\n rule.push = true;\n }\n var next = rule.next || rule.push;\n if (next && Array.isArray(next)) {\n var stateName = rule.stateName;\n if (!stateName) {\n stateName = rule.token;\n if (typeof stateName != \"string\")\n stateName = stateName[0] || \"\";\n if (rules[stateName])\n stateName += id++;\n }\n rules[stateName] = next;\n rule.next = stateName;\n processState(stateName);\n }\n else if (next == \"pop\") {\n rule.next = popState;\n }\n if (rule.push) {\n rule.nextState = rule.next || rule.push;\n rule.next = pushState;\n delete rule.push;\n }\n if (rule.rules) {\n for (var r in rule.rules) {\n if (rules[r]) {\n if (rules[r].push)\n rules[r].push.apply(rules[r], rule.rules[r]);\n }\n else {\n rules[r] = rule.rules[r];\n }\n }\n }\n var includeName = typeof rule == \"string\" ? rule : rule.include;\n if (includeName) {\n if (includeName === \"$self\")\n includeName = \"start\";\n if (Array.isArray(includeName))\n toInsert = includeName.map(function (x) { return rules[x]; });\n else\n toInsert = rules[includeName];\n }\n if (toInsert) {\n var args = [i, 1].concat(toInsert);\n if (rule.noEscape)\n args = args.filter(function (x) { return !x.next; });\n state.splice.apply(state, args);\n i--;\n }\n if (rule.keywordMap) {\n rule.token = this.createKeywordMapper(rule.keywordMap, rule.defaultToken || \"text\", rule.caseInsensitive);\n delete rule.defaultToken;\n }\n }\n }\n Object.keys(rules).forEach(processState, this);\n };\n this.createKeywordMapper = function (map, defaultToken, ignoreCase, splitChar) {\n var keywords = Object.create(null);\n this.$keywordList = [];\n Object.keys(map).forEach(function (className) {\n var a = map[className];\n var list = a.split(splitChar || \"|\");\n for (var i = list.length; i--;) {\n var word = list[i];\n this.$keywordList.push(word);\n if (ignoreCase)\n word = word.toLowerCase();\n keywords[word] = className;\n }\n }, this);\n map = null;\n return ignoreCase\n ? function (value) { return keywords[value.toLowerCase()] || defaultToken; }\n : function (value) { return keywords[value] || defaultToken; };\n };\n this.getKeywords = function () {\n return this.$keywords;\n };\n}).call(TextHighlightRules.prototype);\nexports.TextHighlightRules = TextHighlightRules;\n\n});\n\nace.define(\"ace/mode/behaviour\",[\"require\",\"exports\",\"module\"], function(require, exports, module){\"use strict\";\nvar Behaviour = function () {\n this.$behaviours = {};\n};\n(function () {\n this.add = function (name, action, callback) {\n switch (undefined) {\n case this.$behaviours:\n this.$behaviours = {};\n case this.$behaviours[name]:\n this.$behaviours[name] = {};\n }\n this.$behaviours[name][action] = callback;\n };\n this.addBehaviours = function (behaviours) {\n for (var key in behaviours) {\n for (var action in behaviours[key]) {\n this.add(key, action, behaviours[key][action]);\n }\n }\n };\n this.remove = function (name) {\n if (this.$behaviours && this.$behaviours[name]) {\n delete this.$behaviours[name];\n }\n };\n this.inherit = function (mode, filter) {\n if (typeof mode === \"function\") {\n var behaviours = new mode().getBehaviours(filter);\n }\n else {\n var behaviours = mode.getBehaviours(filter);\n }\n this.addBehaviours(behaviours);\n };\n this.getBehaviours = function (filter) {\n if (!filter) {\n return this.$behaviours;\n }\n else {\n var ret = {};\n for (var i = 0; i < filter.length; i++) {\n if (this.$behaviours[filter[i]]) {\n ret[filter[i]] = this.$behaviours[filter[i]];\n }\n }\n return ret;\n }\n };\n}).call(Behaviour.prototype);\nexports.Behaviour = Behaviour;\n\n});\n\nace.define(\"ace/token_iterator\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar Range = require(\"./range\").Range;\nvar TokenIterator = /** @class */ (function () {\n function TokenIterator(session, initialRow, initialColumn) {\n this.$session = session;\n this.$row = initialRow;\n this.$rowTokens = session.getTokens(initialRow);\n var token = session.getTokenAt(initialRow, initialColumn);\n this.$tokenIndex = token ? token.index : -1;\n }\n TokenIterator.prototype.stepBackward = function () {\n this.$tokenIndex -= 1;\n while (this.$tokenIndex < 0) {\n this.$row -= 1;\n if (this.$row < 0) {\n this.$row = 0;\n return null;\n }\n this.$rowTokens = this.$session.getTokens(this.$row);\n this.$tokenIndex = this.$rowTokens.length - 1;\n }\n return this.$rowTokens[this.$tokenIndex];\n };\n TokenIterator.prototype.stepForward = function () {\n this.$tokenIndex += 1;\n var rowCount;\n while (this.$tokenIndex >= this.$rowTokens.length) {\n this.$row += 1;\n if (!rowCount)\n rowCount = this.$session.getLength();\n if (this.$row >= rowCount) {\n this.$row = rowCount - 1;\n return null;\n }\n this.$rowTokens = this.$session.getTokens(this.$row);\n this.$tokenIndex = 0;\n }\n return this.$rowTokens[this.$tokenIndex];\n };\n TokenIterator.prototype.getCurrentToken = function () {\n return this.$rowTokens[this.$tokenIndex];\n };\n TokenIterator.prototype.getCurrentTokenRow = function () {\n return this.$row;\n };\n TokenIterator.prototype.getCurrentTokenColumn = function () {\n var rowTokens = this.$rowTokens;\n var tokenIndex = this.$tokenIndex;\n var column = rowTokens[tokenIndex].start;\n if (column !== undefined)\n return column;\n column = 0;\n while (tokenIndex > 0) {\n tokenIndex -= 1;\n column += rowTokens[tokenIndex].value.length;\n }\n return column;\n };\n TokenIterator.prototype.getCurrentTokenPosition = function () {\n return { row: this.$row, column: this.getCurrentTokenColumn() };\n };\n TokenIterator.prototype.getCurrentTokenRange = function () {\n var token = this.$rowTokens[this.$tokenIndex];\n var column = this.getCurrentTokenColumn();\n return new Range(this.$row, column, this.$row, column + token.value.length);\n };\n return TokenIterator;\n}());\nexports.TokenIterator = TokenIterator;\n\n});\n\nace.define(\"ace/mode/behaviour/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/behaviour\",\"ace/token_iterator\",\"ace/lib/lang\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../../lib/oop\");\nvar Behaviour = require(\"../behaviour\").Behaviour;\nvar TokenIterator = require(\"../../token_iterator\").TokenIterator;\nvar lang = require(\"../../lib/lang\");\nvar SAFE_INSERT_IN_TOKENS = [\"text\", \"paren.rparen\", \"rparen\", \"paren\", \"punctuation.operator\"];\nvar SAFE_INSERT_BEFORE_TOKENS = [\"text\", \"paren.rparen\", \"rparen\", \"paren\", \"punctuation.operator\", \"comment\"];\nvar context;\nvar contextCache = {};\nvar defaultQuotes = { '\"': '\"', \"'\": \"'\" };\nvar initContext = function (editor) {\n var id = -1;\n if (editor.multiSelect) {\n id = editor.selection.index;\n if (contextCache.rangeCount != editor.multiSelect.rangeCount)\n contextCache = { rangeCount: editor.multiSelect.rangeCount };\n }\n if (contextCache[id])\n return context = contextCache[id];\n context = contextCache[id] = {\n autoInsertedBrackets: 0,\n autoInsertedRow: -1,\n autoInsertedLineEnd: \"\",\n maybeInsertedBrackets: 0,\n maybeInsertedRow: -1,\n maybeInsertedLineStart: \"\",\n maybeInsertedLineEnd: \"\"\n };\n};\nvar getWrapped = function (selection, selected, opening, closing) {\n var rowDiff = selection.end.row - selection.start.row;\n return {\n text: opening + selected + closing,\n selection: [\n 0,\n selection.start.column + 1,\n rowDiff,\n selection.end.column + (rowDiff ? 0 : 1)\n ]\n };\n};\nvar CstyleBehaviour = function (options) {\n options = options || {};\n this.add(\"braces\", \"insertion\", function (state, action, editor, session, text) {\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n if (text == '{') {\n initContext(editor);\n var selection = editor.getSelectionRange();\n var selected = session.doc.getTextRange(selection);\n if (selected !== \"\" && selected !== \"{\" && editor.getWrapBehavioursEnabled()) {\n return getWrapped(selection, selected, '{', '}');\n }\n else if (CstyleBehaviour.isSaneInsertion(editor, session)) {\n if (/[\\]\\}\\)]/.test(line[cursor.column]) || editor.inMultiSelectMode || options.braces) {\n CstyleBehaviour.recordAutoInsert(editor, session, \"}\");\n return {\n text: '{}',\n selection: [1, 1]\n };\n }\n else {\n CstyleBehaviour.recordMaybeInsert(editor, session, \"{\");\n return {\n text: '{',\n selection: [1, 1]\n };\n }\n }\n }\n else if (text == '}') {\n initContext(editor);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n if (rightChar == '}') {\n var matching = session.$findOpeningBracket('}', { column: cursor.column + 1, row: cursor.row });\n if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) {\n CstyleBehaviour.popAutoInsertedClosing();\n return {\n text: '',\n selection: [1, 1]\n };\n }\n }\n }\n else if (text == \"\\n\" || text == \"\\r\\n\") {\n initContext(editor);\n var closing = \"\";\n if (CstyleBehaviour.isMaybeInsertedClosing(cursor, line)) {\n closing = lang.stringRepeat(\"}\", context.maybeInsertedBrackets);\n CstyleBehaviour.clearMaybeInsertedClosing();\n }\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n if (rightChar === '}') {\n var openBracePos = session.findMatchingBracket({ row: cursor.row, column: cursor.column + 1 }, '}');\n if (!openBracePos)\n return null;\n var next_indent = this.$getIndent(session.getLine(openBracePos.row));\n }\n else if (closing) {\n var next_indent = this.$getIndent(line);\n }\n else {\n CstyleBehaviour.clearMaybeInsertedClosing();\n return;\n }\n var indent = next_indent + session.getTabString();\n return {\n text: '\\n' + indent + '\\n' + next_indent + closing,\n selection: [1, indent.length, 1, indent.length]\n };\n }\n else {\n CstyleBehaviour.clearMaybeInsertedClosing();\n }\n });\n this.add(\"braces\", \"deletion\", function (state, action, editor, session, range) {\n var selected = session.doc.getTextRange(range);\n if (!range.isMultiLine() && selected == '{') {\n initContext(editor);\n var line = session.doc.getLine(range.start.row);\n var rightChar = line.substring(range.end.column, range.end.column + 1);\n if (rightChar == '}') {\n range.end.column++;\n return range;\n }\n else {\n context.maybeInsertedBrackets--;\n }\n }\n });\n this.add(\"parens\", \"insertion\", function (state, action, editor, session, text) {\n if (text == '(') {\n initContext(editor);\n var selection = editor.getSelectionRange();\n var selected = session.doc.getTextRange(selection);\n if (selected !== \"\" && editor.getWrapBehavioursEnabled()) {\n return getWrapped(selection, selected, '(', ')');\n }\n else if (CstyleBehaviour.isSaneInsertion(editor, session)) {\n CstyleBehaviour.recordAutoInsert(editor, session, \")\");\n return {\n text: '()',\n selection: [1, 1]\n };\n }\n }\n else if (text == ')') {\n initContext(editor);\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n if (rightChar == ')') {\n var matching = session.$findOpeningBracket(')', { column: cursor.column + 1, row: cursor.row });\n if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) {\n CstyleBehaviour.popAutoInsertedClosing();\n return {\n text: '',\n selection: [1, 1]\n };\n }\n }\n }\n });\n this.add(\"parens\", \"deletion\", function (state, action, editor, session, range) {\n var selected = session.doc.getTextRange(range);\n if (!range.isMultiLine() && selected == '(') {\n initContext(editor);\n var line = session.doc.getLine(range.start.row);\n var rightChar = line.substring(range.start.column + 1, range.start.column + 2);\n if (rightChar == ')') {\n range.end.column++;\n return range;\n }\n }\n });\n this.add(\"brackets\", \"insertion\", function (state, action, editor, session, text) {\n if (text == '[') {\n initContext(editor);\n var selection = editor.getSelectionRange();\n var selected = session.doc.getTextRange(selection);\n if (selected !== \"\" && editor.getWrapBehavioursEnabled()) {\n return getWrapped(selection, selected, '[', ']');\n }\n else if (CstyleBehaviour.isSaneInsertion(editor, session)) {\n CstyleBehaviour.recordAutoInsert(editor, session, \"]\");\n return {\n text: '[]',\n selection: [1, 1]\n };\n }\n }\n else if (text == ']') {\n initContext(editor);\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n if (rightChar == ']') {\n var matching = session.$findOpeningBracket(']', { column: cursor.column + 1, row: cursor.row });\n if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) {\n CstyleBehaviour.popAutoInsertedClosing();\n return {\n text: '',\n selection: [1, 1]\n };\n }\n }\n }\n });\n this.add(\"brackets\", \"deletion\", function (state, action, editor, session, range) {\n var selected = session.doc.getTextRange(range);\n if (!range.isMultiLine() && selected == '[') {\n initContext(editor);\n var line = session.doc.getLine(range.start.row);\n var rightChar = line.substring(range.start.column + 1, range.start.column + 2);\n if (rightChar == ']') {\n range.end.column++;\n return range;\n }\n }\n });\n this.add(\"string_dquotes\", \"insertion\", function (state, action, editor, session, text) {\n var quotes = session.$mode.$quotes || defaultQuotes;\n if (text.length == 1 && quotes[text]) {\n if (this.lineCommentStart && this.lineCommentStart.indexOf(text) != -1)\n return;\n initContext(editor);\n var quote = text;\n var selection = editor.getSelectionRange();\n var selected = session.doc.getTextRange(selection);\n if (selected !== \"\" && (selected.length != 1 || !quotes[selected]) && editor.getWrapBehavioursEnabled()) {\n return getWrapped(selection, selected, quote, quote);\n }\n else if (!selected) {\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n var leftChar = line.substring(cursor.column - 1, cursor.column);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n var token = session.getTokenAt(cursor.row, cursor.column);\n var rightToken = session.getTokenAt(cursor.row, cursor.column + 1);\n if (leftChar == \"\\\\\" && token && /escape/.test(token.type))\n return null;\n var stringBefore = token && /string|escape/.test(token.type);\n var stringAfter = !rightToken || /string|escape/.test(rightToken.type);\n var pair;\n if (rightChar == quote) {\n pair = stringBefore !== stringAfter;\n if (pair && /string\\.end/.test(rightToken.type))\n pair = false;\n }\n else {\n if (stringBefore && !stringAfter)\n return null; // wrap string with different quote\n if (stringBefore && stringAfter)\n return null; // do not pair quotes inside strings\n var wordRe = session.$mode.tokenRe;\n wordRe.lastIndex = 0;\n var isWordBefore = wordRe.test(leftChar);\n wordRe.lastIndex = 0;\n var isWordAfter = wordRe.test(rightChar);\n var pairQuotesAfter = session.$mode.$pairQuotesAfter;\n var shouldPairQuotes = pairQuotesAfter && pairQuotesAfter[quote] && pairQuotesAfter[quote].test(leftChar);\n if ((!shouldPairQuotes && isWordBefore) || isWordAfter)\n return null; // before or after alphanumeric\n if (rightChar && !/[\\s;,.})\\]\\\\]/.test(rightChar))\n return null; // there is rightChar and it isn't closing\n var charBefore = line[cursor.column - 2];\n if (leftChar == quote && (charBefore == quote || wordRe.test(charBefore)))\n return null;\n pair = true;\n }\n return {\n text: pair ? quote + quote : \"\",\n selection: [1, 1]\n };\n }\n }\n });\n this.add(\"string_dquotes\", \"deletion\", function (state, action, editor, session, range) {\n var quotes = session.$mode.$quotes || defaultQuotes;\n var selected = session.doc.getTextRange(range);\n if (!range.isMultiLine() && quotes.hasOwnProperty(selected)) {\n initContext(editor);\n var line = session.doc.getLine(range.start.row);\n var rightChar = line.substring(range.start.column + 1, range.start.column + 2);\n if (rightChar == selected) {\n range.end.column++;\n return range;\n }\n }\n });\n if (options.closeDocComment !== false) {\n this.add(\"doc comment end\", \"insertion\", function (state, action, editor, session, text) {\n if (state === \"doc-start\" && (text === \"\\n\" || text === \"\\r\\n\") && editor.selection.isEmpty()) {\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n var nextLine = session.doc.getLine(cursor.row + 1);\n var indent = this.$getIndent(line);\n if (/\\s*\\*/.test(nextLine)) {\n if (/^\\s*\\*/.test(line)) {\n return {\n text: text + indent + \"* \",\n selection: [1, 3 + indent.length, 1, 3 + indent.length]\n };\n }\n else {\n return {\n text: text + indent + \" * \",\n selection: [1, 3 + indent.length, 1, 3 + indent.length]\n };\n }\n }\n if (/\\/\\*\\*/.test(line.substring(0, cursor.column))) {\n return {\n text: text + indent + \" * \" + text + \" \" + indent + \"*/\",\n selection: [1, 4 + indent.length, 1, 4 + indent.length]\n };\n }\n }\n });\n }\n};\nCstyleBehaviour.isSaneInsertion = function (editor, session) {\n var cursor = editor.getCursorPosition();\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n if (!this.$matchTokenType(iterator.getCurrentToken() || \"text\", SAFE_INSERT_IN_TOKENS)) {\n if (/[)}\\]]/.test(editor.session.getLine(cursor.row)[cursor.column]))\n return true;\n var iterator2 = new TokenIterator(session, cursor.row, cursor.column + 1);\n if (!this.$matchTokenType(iterator2.getCurrentToken() || \"text\", SAFE_INSERT_IN_TOKENS))\n return false;\n }\n iterator.stepForward();\n return iterator.getCurrentTokenRow() !== cursor.row ||\n this.$matchTokenType(iterator.getCurrentToken() || \"text\", SAFE_INSERT_BEFORE_TOKENS);\n};\nCstyleBehaviour.$matchTokenType = function (token, types) {\n return types.indexOf(token.type || token) > -1;\n};\nCstyleBehaviour.recordAutoInsert = function (editor, session, bracket) {\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n if (!this.isAutoInsertedClosing(cursor, line, context.autoInsertedLineEnd[0]))\n context.autoInsertedBrackets = 0;\n context.autoInsertedRow = cursor.row;\n context.autoInsertedLineEnd = bracket + line.substr(cursor.column);\n context.autoInsertedBrackets++;\n};\nCstyleBehaviour.recordMaybeInsert = function (editor, session, bracket) {\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n if (!this.isMaybeInsertedClosing(cursor, line))\n context.maybeInsertedBrackets = 0;\n context.maybeInsertedRow = cursor.row;\n context.maybeInsertedLineStart = line.substr(0, cursor.column) + bracket;\n context.maybeInsertedLineEnd = line.substr(cursor.column);\n context.maybeInsertedBrackets++;\n};\nCstyleBehaviour.isAutoInsertedClosing = function (cursor, line, bracket) {\n return context.autoInsertedBrackets > 0 &&\n cursor.row === context.autoInsertedRow &&\n bracket === context.autoInsertedLineEnd[0] &&\n line.substr(cursor.column) === context.autoInsertedLineEnd;\n};\nCstyleBehaviour.isMaybeInsertedClosing = function (cursor, line) {\n return context.maybeInsertedBrackets > 0 &&\n cursor.row === context.maybeInsertedRow &&\n line.substr(cursor.column) === context.maybeInsertedLineEnd &&\n line.substr(0, cursor.column) == context.maybeInsertedLineStart;\n};\nCstyleBehaviour.popAutoInsertedClosing = function () {\n context.autoInsertedLineEnd = context.autoInsertedLineEnd.substr(1);\n context.autoInsertedBrackets--;\n};\nCstyleBehaviour.clearMaybeInsertedClosing = function () {\n if (context) {\n context.maybeInsertedBrackets = 0;\n context.maybeInsertedRow = -1;\n }\n};\noop.inherits(CstyleBehaviour, Behaviour);\nexports.CstyleBehaviour = CstyleBehaviour;\n\n});\n\nace.define(\"ace/unicode\",[\"require\",\"exports\",\"module\"], function(require, exports, module){\"use strict\";\nvar wordChars = [48, 9, 8, 25, 5, 0, 2, 25, 48, 0, 11, 0, 5, 0, 6, 22, 2, 30, 2, 457, 5, 11, 15, 4, 8, 0, 2, 0, 18, 116, 2, 1, 3, 3, 9, 0, 2, 2, 2, 0, 2, 19, 2, 82, 2, 138, 2, 4, 3, 155, 12, 37, 3, 0, 8, 38, 10, 44, 2, 0, 2, 1, 2, 1, 2, 0, 9, 26, 6, 2, 30, 10, 7, 61, 2, 9, 5, 101, 2, 7, 3, 9, 2, 18, 3, 0, 17, 58, 3, 100, 15, 53, 5, 0, 6, 45, 211, 57, 3, 18, 2, 5, 3, 11, 3, 9, 2, 1, 7, 6, 2, 2, 2, 7, 3, 1, 3, 21, 2, 6, 2, 0, 4, 3, 3, 8, 3, 1, 3, 3, 9, 0, 5, 1, 2, 4, 3, 11, 16, 2, 2, 5, 5, 1, 3, 21, 2, 6, 2, 1, 2, 1, 2, 1, 3, 0, 2, 4, 5, 1, 3, 2, 4, 0, 8, 3, 2, 0, 8, 15, 12, 2, 2, 8, 2, 2, 2, 21, 2, 6, 2, 1, 2, 4, 3, 9, 2, 2, 2, 2, 3, 0, 16, 3, 3, 9, 18, 2, 2, 7, 3, 1, 3, 21, 2, 6, 2, 1, 2, 4, 3, 8, 3, 1, 3, 2, 9, 1, 5, 1, 2, 4, 3, 9, 2, 0, 17, 1, 2, 5, 4, 2, 2, 3, 4, 1, 2, 0, 2, 1, 4, 1, 4, 2, 4, 11, 5, 4, 4, 2, 2, 3, 3, 0, 7, 0, 15, 9, 18, 2, 2, 7, 2, 2, 2, 22, 2, 9, 2, 4, 4, 7, 2, 2, 2, 3, 8, 1, 2, 1, 7, 3, 3, 9, 19, 1, 2, 7, 2, 2, 2, 22, 2, 9, 2, 4, 3, 8, 2, 2, 2, 3, 8, 1, 8, 0, 2, 3, 3, 9, 19, 1, 2, 7, 2, 2, 2, 22, 2, 15, 4, 7, 2, 2, 2, 3, 10, 0, 9, 3, 3, 9, 11, 5, 3, 1, 2, 17, 4, 23, 2, 8, 2, 0, 3, 6, 4, 0, 5, 5, 2, 0, 2, 7, 19, 1, 14, 57, 6, 14, 2, 9, 40, 1, 2, 0, 3, 1, 2, 0, 3, 0, 7, 3, 2, 6, 2, 2, 2, 0, 2, 0, 3, 1, 2, 12, 2, 2, 3, 4, 2, 0, 2, 5, 3, 9, 3, 1, 35, 0, 24, 1, 7, 9, 12, 0, 2, 0, 2, 0, 5, 9, 2, 35, 5, 19, 2, 5, 5, 7, 2, 35, 10, 0, 58, 73, 7, 77, 3, 37, 11, 42, 2, 0, 4, 328, 2, 3, 3, 6, 2, 0, 2, 3, 3, 40, 2, 3, 3, 32, 2, 3, 3, 6, 2, 0, 2, 3, 3, 14, 2, 56, 2, 3, 3, 66, 5, 0, 33, 15, 17, 84, 13, 619, 3, 16, 2, 25, 6, 74, 22, 12, 2, 6, 12, 20, 12, 19, 13, 12, 2, 2, 2, 1, 13, 51, 3, 29, 4, 0, 5, 1, 3, 9, 34, 2, 3, 9, 7, 87, 9, 42, 6, 69, 11, 28, 4, 11, 5, 11, 11, 39, 3, 4, 12, 43, 5, 25, 7, 10, 38, 27, 5, 62, 2, 28, 3, 10, 7, 9, 14, 0, 89, 75, 5, 9, 18, 8, 13, 42, 4, 11, 71, 55, 9, 9, 4, 48, 83, 2, 2, 30, 14, 230, 23, 280, 3, 5, 3, 37, 3, 5, 3, 7, 2, 0, 2, 0, 2, 0, 2, 30, 3, 52, 2, 6, 2, 0, 4, 2, 2, 6, 4, 3, 3, 5, 5, 12, 6, 2, 2, 6, 67, 1, 20, 0, 29, 0, 14, 0, 17, 4, 60, 12, 5, 0, 4, 11, 18, 0, 5, 0, 3, 9, 2, 0, 4, 4, 7, 0, 2, 0, 2, 0, 2, 3, 2, 10, 3, 3, 6, 4, 5, 0, 53, 1, 2684, 46, 2, 46, 2, 132, 7, 6, 15, 37, 11, 53, 10, 0, 17, 22, 10, 6, 2, 6, 2, 6, 2, 6, 2, 6, 2, 6, 2, 6, 2, 6, 2, 31, 48, 0, 470, 1, 36, 5, 2, 4, 6, 1, 5, 85, 3, 1, 3, 2, 2, 89, 2, 3, 6, 40, 4, 93, 18, 23, 57, 15, 513, 6581, 75, 20939, 53, 1164, 68, 45, 3, 268, 4, 27, 21, 31, 3, 13, 13, 1, 2, 24, 9, 69, 11, 1, 38, 8, 3, 102, 3, 1, 111, 44, 25, 51, 13, 68, 12, 9, 7, 23, 4, 0, 5, 45, 3, 35, 13, 28, 4, 64, 15, 10, 39, 54, 10, 13, 3, 9, 7, 22, 4, 1, 5, 66, 25, 2, 227, 42, 2, 1, 3, 9, 7, 11171, 13, 22, 5, 48, 8453, 301, 3, 61, 3, 105, 39, 6, 13, 4, 6, 11, 2, 12, 2, 4, 2, 0, 2, 1, 2, 1, 2, 107, 34, 362, 19, 63, 3, 53, 41, 11, 5, 15, 17, 6, 13, 1, 25, 2, 33, 4, 2, 134, 20, 9, 8, 25, 5, 0, 2, 25, 12, 88, 4, 5, 3, 5, 3, 5, 3, 2];\nvar code = 0;\nvar str = [];\nfor (var i = 0; i < wordChars.length; i += 2) {\n str.push(code += wordChars[i]);\n if (wordChars[i + 1])\n str.push(45, code += wordChars[i + 1]);\n}\nexports.wordChars = String.fromCharCode.apply(null, str);\n\n});\n\nace.define(\"ace/mode/text\",[\"require\",\"exports\",\"module\",\"ace/config\",\"ace/tokenizer\",\"ace/mode/text_highlight_rules\",\"ace/mode/behaviour/cstyle\",\"ace/unicode\",\"ace/lib/lang\",\"ace/token_iterator\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar config = require(\"../config\");\nvar Tokenizer = require(\"../tokenizer\").Tokenizer;\nvar TextHighlightRules = require(\"./text_highlight_rules\").TextHighlightRules;\nvar CstyleBehaviour = require(\"./behaviour/cstyle\").CstyleBehaviour;\nvar unicode = require(\"../unicode\");\nvar lang = require(\"../lib/lang\");\nvar TokenIterator = require(\"../token_iterator\").TokenIterator;\nvar Range = require(\"../range\").Range;\nvar Mode = function () {\n this.HighlightRules = TextHighlightRules;\n};\n(function () {\n this.$defaultBehaviour = new CstyleBehaviour();\n this.tokenRe = new RegExp(\"^[\" + unicode.wordChars + \"\\\\$_]+\", \"g\");\n this.nonTokenRe = new RegExp(\"^(?:[^\" + unicode.wordChars + \"\\\\$_]|\\\\s])+\", \"g\");\n this.getTokenizer = function () {\n if (!this.$tokenizer) {\n this.$highlightRules = this.$highlightRules || new this.HighlightRules(this.$highlightRuleConfig);\n this.$tokenizer = new Tokenizer(this.$highlightRules.getRules());\n }\n return this.$tokenizer;\n };\n this.lineCommentStart = \"\";\n this.blockComment = \"\";\n this.toggleCommentLines = function (state, session, startRow, endRow) {\n var doc = session.doc;\n var ignoreBlankLines = true;\n var shouldRemove = true;\n var minIndent = Infinity;\n var tabSize = session.getTabSize();\n var insertAtTabStop = false;\n if (!this.lineCommentStart) {\n if (!this.blockComment)\n return false;\n var lineCommentStart = this.blockComment.start;\n var lineCommentEnd = this.blockComment.end;\n var regexpStart = new RegExp(\"^(\\\\s*)(?:\" + lang.escapeRegExp(lineCommentStart) + \")\");\n var regexpEnd = new RegExp(\"(?:\" + lang.escapeRegExp(lineCommentEnd) + \")\\\\s*$\");\n var comment = function (line, i) {\n if (testRemove(line, i))\n return;\n if (!ignoreBlankLines || /\\S/.test(line)) {\n doc.insertInLine({ row: i, column: line.length }, lineCommentEnd);\n doc.insertInLine({ row: i, column: minIndent }, lineCommentStart);\n }\n };\n var uncomment = function (line, i) {\n var m;\n if (m = line.match(regexpEnd))\n doc.removeInLine(i, line.length - m[0].length, line.length);\n if (m = line.match(regexpStart))\n doc.removeInLine(i, m[1].length, m[0].length);\n };\n var testRemove = function (line, row) {\n if (regexpStart.test(line))\n return true;\n var tokens = session.getTokens(row);\n for (var i = 0; i < tokens.length; i++) {\n if (tokens[i].type === \"comment\")\n return true;\n }\n };\n }\n else {\n if (Array.isArray(this.lineCommentStart)) {\n var regexpStart = this.lineCommentStart.map(lang.escapeRegExp).join(\"|\");\n var lineCommentStart = this.lineCommentStart[0];\n }\n else {\n var regexpStart = lang.escapeRegExp(this.lineCommentStart);\n var lineCommentStart = this.lineCommentStart;\n }\n regexpStart = new RegExp(\"^(\\\\s*)(?:\" + regexpStart + \") ?\");\n insertAtTabStop = session.getUseSoftTabs();\n var uncomment = function (line, i) {\n var m = line.match(regexpStart);\n if (!m)\n return;\n var start = m[1].length, end = m[0].length;\n if (!shouldInsertSpace(line, start, end) && m[0][end - 1] == \" \")\n end--;\n doc.removeInLine(i, start, end);\n };\n var commentWithSpace = lineCommentStart + \" \";\n var comment = function (line, i) {\n if (!ignoreBlankLines || /\\S/.test(line)) {\n if (shouldInsertSpace(line, minIndent, minIndent))\n doc.insertInLine({ row: i, column: minIndent }, commentWithSpace);\n else\n doc.insertInLine({ row: i, column: minIndent }, lineCommentStart);\n }\n };\n var testRemove = function (line, i) {\n return regexpStart.test(line);\n };\n var shouldInsertSpace = function (line, before, after) {\n var spaces = 0;\n while (before-- && line.charAt(before) == \" \")\n spaces++;\n if (spaces % tabSize != 0)\n return false;\n var spaces = 0;\n while (line.charAt(after++) == \" \")\n spaces++;\n if (tabSize > 2)\n return spaces % tabSize != tabSize - 1;\n else\n return spaces % tabSize == 0;\n };\n }\n function iter(fun) {\n for (var i = startRow; i <= endRow; i++)\n fun(doc.getLine(i), i);\n }\n var minEmptyLength = Infinity;\n iter(function (line, i) {\n var indent = line.search(/\\S/);\n if (indent !== -1) {\n if (indent < minIndent)\n minIndent = indent;\n if (shouldRemove && !testRemove(line, i))\n shouldRemove = false;\n }\n else if (minEmptyLength > line.length) {\n minEmptyLength = line.length;\n }\n });\n if (minIndent == Infinity) {\n minIndent = minEmptyLength;\n ignoreBlankLines = false;\n shouldRemove = false;\n }\n if (insertAtTabStop && minIndent % tabSize != 0)\n minIndent = Math.floor(minIndent / tabSize) * tabSize;\n iter(shouldRemove ? uncomment : comment);\n };\n this.toggleBlockComment = function (state, session, range, cursor) {\n var comment = this.blockComment;\n if (!comment)\n return;\n if (!comment.start && comment[0])\n comment = comment[0];\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n var token = iterator.getCurrentToken();\n var sel = session.selection;\n var initialRange = session.selection.toOrientedRange();\n var startRow, colDiff;\n if (token && /comment/.test(token.type)) {\n var startRange, endRange;\n while (token && /comment/.test(token.type)) {\n var i = token.value.indexOf(comment.start);\n if (i != -1) {\n var row = iterator.getCurrentTokenRow();\n var column = iterator.getCurrentTokenColumn() + i;\n startRange = new Range(row, column, row, column + comment.start.length);\n break;\n }\n token = iterator.stepBackward();\n }\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n var token = iterator.getCurrentToken();\n while (token && /comment/.test(token.type)) {\n var i = token.value.indexOf(comment.end);\n if (i != -1) {\n var row = iterator.getCurrentTokenRow();\n var column = iterator.getCurrentTokenColumn() + i;\n endRange = new Range(row, column, row, column + comment.end.length);\n break;\n }\n token = iterator.stepForward();\n }\n if (endRange)\n session.remove(endRange);\n if (startRange) {\n session.remove(startRange);\n startRow = startRange.start.row;\n colDiff = -comment.start.length;\n }\n }\n else {\n colDiff = comment.start.length;\n startRow = range.start.row;\n session.insert(range.end, comment.end);\n session.insert(range.start, comment.start);\n }\n if (initialRange.start.row == startRow)\n initialRange.start.column += colDiff;\n if (initialRange.end.row == startRow)\n initialRange.end.column += colDiff;\n session.selection.fromOrientedRange(initialRange);\n };\n this.getNextLineIndent = function (state, line, tab) {\n return this.$getIndent(line);\n };\n this.checkOutdent = function (state, line, input) {\n return false;\n };\n this.autoOutdent = function (state, doc, row) {\n };\n this.$getIndent = function (line) {\n return line.match(/^\\s*/)[0];\n };\n this.createWorker = function (session) {\n return null;\n };\n this.createModeDelegates = function (mapping) {\n this.$embeds = [];\n this.$modes = {};\n for (var i in mapping) {\n if (mapping[i]) {\n var Mode = mapping[i];\n var id = Mode.prototype.$id;\n var mode = config.$modes[id];\n if (!mode)\n config.$modes[id] = mode = new Mode();\n if (!config.$modes[i])\n config.$modes[i] = mode;\n this.$embeds.push(i);\n this.$modes[i] = mode;\n }\n }\n var delegations = [\"toggleBlockComment\", \"toggleCommentLines\", \"getNextLineIndent\",\n \"checkOutdent\", \"autoOutdent\", \"transformAction\", \"getCompletions\"];\n for (var i = 0; i < delegations.length; i++) {\n (function (scope) {\n var functionName = delegations[i];\n var defaultHandler = scope[functionName];\n scope[delegations[i]] = function () {\n return this.$delegator(functionName, arguments, defaultHandler);\n };\n }(this));\n }\n };\n this.$delegator = function (method, args, defaultHandler) {\n var state = args[0] || \"start\";\n if (typeof state != \"string\") {\n if (Array.isArray(state[2])) {\n var language = state[2][state[2].length - 1];\n var mode = this.$modes[language];\n if (mode)\n return mode[method].apply(mode, [state[1]].concat([].slice.call(args, 1)));\n }\n state = state[0] || \"start\";\n }\n for (var i = 0; i < this.$embeds.length; i++) {\n if (!this.$modes[this.$embeds[i]])\n continue;\n var split = state.split(this.$embeds[i]);\n if (!split[0] && split[1]) {\n args[0] = split[1];\n var mode = this.$modes[this.$embeds[i]];\n return mode[method].apply(mode, args);\n }\n }\n var ret = defaultHandler.apply(this, args);\n return defaultHandler ? ret : undefined;\n };\n this.transformAction = function (state, action, editor, session, param) {\n if (this.$behaviour) {\n var behaviours = this.$behaviour.getBehaviours();\n for (var key in behaviours) {\n if (behaviours[key][action]) {\n var ret = behaviours[key][action].apply(this, arguments);\n if (ret) {\n return ret;\n }\n }\n }\n }\n };\n this.getKeywords = function (append) {\n if (!this.completionKeywords) {\n var rules = this.$tokenizer.rules;\n var completionKeywords = [];\n for (var rule in rules) {\n var ruleItr = rules[rule];\n for (var r = 0, l = ruleItr.length; r < l; r++) {\n if (typeof ruleItr[r].token === \"string\") {\n if (/keyword|support|storage/.test(ruleItr[r].token))\n completionKeywords.push(ruleItr[r].regex);\n }\n else if (typeof ruleItr[r].token === \"object\") {\n for (var a = 0, aLength = ruleItr[r].token.length; a < aLength; a++) {\n if (/keyword|support|storage/.test(ruleItr[r].token[a])) {\n var rule = ruleItr[r].regex.match(/\\(.+?\\)/g)[a];\n completionKeywords.push(rule.substr(1, rule.length - 2));\n }\n }\n }\n }\n }\n this.completionKeywords = completionKeywords;\n }\n if (!append)\n return this.$keywordList;\n return completionKeywords.concat(this.$keywordList || []);\n };\n this.$createKeywordList = function () {\n if (!this.$highlightRules)\n this.getTokenizer();\n return this.$keywordList = this.$highlightRules.$keywordList || [];\n };\n this.getCompletions = function (state, session, pos, prefix) {\n var keywords = this.$keywordList || this.$createKeywordList();\n return keywords.map(function (word) {\n return {\n name: word,\n value: word,\n score: 0,\n meta: \"keyword\"\n };\n });\n };\n this.$id = \"ace/mode/text\";\n}).call(Mode.prototype);\nexports.Mode = Mode;\n\n});\n\nace.define(\"ace/apply_delta\",[\"require\",\"exports\",\"module\"], function(require, exports, module){\"use strict\";\nfunction throwDeltaError(delta, errorText) {\n console.log(\"Invalid Delta:\", delta);\n throw \"Invalid Delta: \" + errorText;\n}\nfunction positionInDocument(docLines, position) {\n return position.row >= 0 && position.row < docLines.length &&\n position.column >= 0 && position.column <= docLines[position.row].length;\n}\nfunction validateDelta(docLines, delta) {\n if (delta.action != \"insert\" && delta.action != \"remove\")\n throwDeltaError(delta, \"delta.action must be 'insert' or 'remove'\");\n if (!(delta.lines instanceof Array))\n throwDeltaError(delta, \"delta.lines must be an Array\");\n if (!delta.start || !delta.end)\n throwDeltaError(delta, \"delta.start/end must be an present\");\n var start = delta.start;\n if (!positionInDocument(docLines, delta.start))\n throwDeltaError(delta, \"delta.start must be contained in document\");\n var end = delta.end;\n if (delta.action == \"remove\" && !positionInDocument(docLines, end))\n throwDeltaError(delta, \"delta.end must contained in document for 'remove' actions\");\n var numRangeRows = end.row - start.row;\n var numRangeLastLineChars = (end.column - (numRangeRows == 0 ? start.column : 0));\n if (numRangeRows != delta.lines.length - 1 || delta.lines[numRangeRows].length != numRangeLastLineChars)\n throwDeltaError(delta, \"delta.range must match delta lines\");\n}\nexports.applyDelta = function (docLines, delta, doNotValidate) {\n var row = delta.start.row;\n var startColumn = delta.start.column;\n var line = docLines[row] || \"\";\n switch (delta.action) {\n case \"insert\":\n var lines = delta.lines;\n if (lines.length === 1) {\n docLines[row] = line.substring(0, startColumn) + delta.lines[0] + line.substring(startColumn);\n }\n else {\n var args = [row, 1].concat(delta.lines);\n docLines.splice.apply(docLines, args);\n docLines[row] = line.substring(0, startColumn) + docLines[row];\n docLines[row + delta.lines.length - 1] += line.substring(startColumn);\n }\n break;\n case \"remove\":\n var endColumn = delta.end.column;\n var endRow = delta.end.row;\n if (row === endRow) {\n docLines[row] = line.substring(0, startColumn) + line.substring(endColumn);\n }\n else {\n docLines.splice(row, endRow - row + 1, line.substring(0, startColumn) + docLines[endRow].substring(endColumn));\n }\n break;\n }\n};\n\n});\n\nace.define(\"ace/anchor\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/event_emitter\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"./lib/oop\");\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar Anchor = /** @class */ (function () {\n function Anchor(doc, row, column) {\n this.$onChange = this.onChange.bind(this);\n this.attach(doc);\n if (typeof column == \"undefined\")\n this.setPosition(row.row, row.column);\n else\n this.setPosition(row, column);\n }\n Anchor.prototype.getPosition = function () {\n return this.$clipPositionToDocument(this.row, this.column);\n };\n Anchor.prototype.getDocument = function () {\n return this.document;\n };\n Anchor.prototype.onChange = function (delta) {\n if (delta.start.row == delta.end.row && delta.start.row != this.row)\n return;\n if (delta.start.row > this.row)\n return;\n var point = $getTransformedPoint(delta, { row: this.row, column: this.column }, this.$insertRight);\n this.setPosition(point.row, point.column, true);\n };\n Anchor.prototype.setPosition = function (row, column, noClip) {\n var pos;\n if (noClip) {\n pos = {\n row: row,\n column: column\n };\n }\n else {\n pos = this.$clipPositionToDocument(row, column);\n }\n if (this.row == pos.row && this.column == pos.column)\n return;\n var old = {\n row: this.row,\n column: this.column\n };\n this.row = pos.row;\n this.column = pos.column;\n this._signal(\"change\", {\n old: old,\n value: pos\n });\n };\n Anchor.prototype.detach = function () {\n this.document.off(\"change\", this.$onChange);\n };\n Anchor.prototype.attach = function (doc) {\n this.document = doc || this.document;\n this.document.on(\"change\", this.$onChange);\n };\n Anchor.prototype.$clipPositionToDocument = function (row, column) {\n var pos = {};\n if (row >= this.document.getLength()) {\n pos.row = Math.max(0, this.document.getLength() - 1);\n pos.column = this.document.getLine(pos.row).length;\n }\n else if (row < 0) {\n pos.row = 0;\n pos.column = 0;\n }\n else {\n pos.row = row;\n pos.column = Math.min(this.document.getLine(pos.row).length, Math.max(0, column));\n }\n if (column < 0)\n pos.column = 0;\n return pos;\n };\n return Anchor;\n}());\nAnchor.prototype.$insertRight = false;\noop.implement(Anchor.prototype, EventEmitter);\nfunction $pointsInOrder(point1, point2, equalPointsInOrder) {\n var bColIsAfter = equalPointsInOrder ? point1.column <= point2.column : point1.column < point2.column;\n return (point1.row < point2.row) || (point1.row == point2.row && bColIsAfter);\n}\nfunction $getTransformedPoint(delta, point, moveIfEqual) {\n var deltaIsInsert = delta.action == \"insert\";\n var deltaRowShift = (deltaIsInsert ? 1 : -1) * (delta.end.row - delta.start.row);\n var deltaColShift = (deltaIsInsert ? 1 : -1) * (delta.end.column - delta.start.column);\n var deltaStart = delta.start;\n var deltaEnd = deltaIsInsert ? deltaStart : delta.end; // Collapse insert range.\n if ($pointsInOrder(point, deltaStart, moveIfEqual)) {\n return {\n row: point.row,\n column: point.column\n };\n }\n if ($pointsInOrder(deltaEnd, point, !moveIfEqual)) {\n return {\n row: point.row + deltaRowShift,\n column: point.column + (point.row == deltaEnd.row ? deltaColShift : 0)\n };\n }\n return {\n row: deltaStart.row,\n column: deltaStart.column\n };\n}\nexports.Anchor = Anchor;\n\n});\n\nace.define(\"ace/document\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/apply_delta\",\"ace/lib/event_emitter\",\"ace/range\",\"ace/anchor\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"./lib/oop\");\nvar applyDelta = require(\"./apply_delta\").applyDelta;\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar Range = require(\"./range\").Range;\nvar Anchor = require(\"./anchor\").Anchor;\nvar Document = /** @class */ (function () {\n function Document(textOrLines) {\n this.$lines = [\"\"];\n if (textOrLines.length === 0) {\n this.$lines = [\"\"];\n }\n else if (Array.isArray(textOrLines)) {\n this.insertMergedLines({ row: 0, column: 0 }, textOrLines);\n }\n else {\n this.insert({ row: 0, column: 0 }, textOrLines);\n }\n }\n Document.prototype.setValue = function (text) {\n var len = this.getLength() - 1;\n this.remove(new Range(0, 0, len, this.getLine(len).length));\n this.insert({ row: 0, column: 0 }, text || \"\");\n };\n Document.prototype.getValue = function () {\n return this.getAllLines().join(this.getNewLineCharacter());\n };\n Document.prototype.createAnchor = function (row, column) {\n return new Anchor(this, row, column);\n };\n Document.prototype.$detectNewLine = function (text) {\n var match = text.match(/^.*?(\\r\\n|\\r|\\n)/m);\n this.$autoNewLine = match ? match[1] : \"\\n\";\n this._signal(\"changeNewLineMode\");\n };\n Document.prototype.getNewLineCharacter = function () {\n switch (this.$newLineMode) {\n case \"windows\":\n return \"\\r\\n\";\n case \"unix\":\n return \"\\n\";\n default:\n return this.$autoNewLine || \"\\n\";\n }\n };\n Document.prototype.setNewLineMode = function (newLineMode) {\n if (this.$newLineMode === newLineMode)\n return;\n this.$newLineMode = newLineMode;\n this._signal(\"changeNewLineMode\");\n };\n Document.prototype.getNewLineMode = function () {\n return this.$newLineMode;\n };\n Document.prototype.isNewLine = function (text) {\n return (text == \"\\r\\n\" || text == \"\\r\" || text == \"\\n\");\n };\n Document.prototype.getLine = function (row) {\n return this.$lines[row] || \"\";\n };\n Document.prototype.getLines = function (firstRow, lastRow) {\n return this.$lines.slice(firstRow, lastRow + 1);\n };\n Document.prototype.getAllLines = function () {\n return this.getLines(0, this.getLength());\n };\n Document.prototype.getLength = function () {\n return this.$lines.length;\n };\n Document.prototype.getTextRange = function (range) {\n return this.getLinesForRange(range).join(this.getNewLineCharacter());\n };\n Document.prototype.getLinesForRange = function (range) {\n var lines;\n if (range.start.row === range.end.row) {\n lines = [this.getLine(range.start.row).substring(range.start.column, range.end.column)];\n }\n else {\n lines = this.getLines(range.start.row, range.end.row);\n lines[0] = (lines[0] || \"\").substring(range.start.column);\n var l = lines.length - 1;\n if (range.end.row - range.start.row == l)\n lines[l] = lines[l].substring(0, range.end.column);\n }\n return lines;\n };\n Document.prototype.insertLines = function (row, lines) {\n console.warn(\"Use of document.insertLines is deprecated. Use the insertFullLines method instead.\");\n return this.insertFullLines(row, lines);\n };\n Document.prototype.removeLines = function (firstRow, lastRow) {\n console.warn(\"Use of document.removeLines is deprecated. Use the removeFullLines method instead.\");\n return this.removeFullLines(firstRow, lastRow);\n };\n Document.prototype.insertNewLine = function (position) {\n console.warn(\"Use of document.insertNewLine is deprecated. Use insertMergedLines(position, ['', '']) instead.\");\n return this.insertMergedLines(position, [\"\", \"\"]);\n };\n Document.prototype.insert = function (position, text) {\n if (this.getLength() <= 1)\n this.$detectNewLine(text);\n return this.insertMergedLines(position, this.$split(text));\n };\n Document.prototype.insertInLine = function (position, text) {\n var start = this.clippedPos(position.row, position.column);\n var end = this.pos(position.row, position.column + text.length);\n this.applyDelta({\n start: start,\n end: end,\n action: \"insert\",\n lines: [text]\n }, true);\n return this.clonePos(end);\n };\n Document.prototype.clippedPos = function (row, column) {\n var length = this.getLength();\n if (row === undefined) {\n row = length;\n }\n else if (row < 0) {\n row = 0;\n }\n else if (row >= length) {\n row = length - 1;\n column = undefined;\n }\n var line = this.getLine(row);\n if (column == undefined)\n column = line.length;\n column = Math.min(Math.max(column, 0), line.length);\n return { row: row, column: column };\n };\n Document.prototype.clonePos = function (pos) {\n return { row: pos.row, column: pos.column };\n };\n Document.prototype.pos = function (row, column) {\n return { row: row, column: column };\n };\n Document.prototype.$clipPosition = function (position) {\n var length = this.getLength();\n if (position.row >= length) {\n position.row = Math.max(0, length - 1);\n position.column = this.getLine(length - 1).length;\n }\n else {\n position.row = Math.max(0, position.row);\n position.column = Math.min(Math.max(position.column, 0), this.getLine(position.row).length);\n }\n return position;\n };\n Document.prototype.insertFullLines = function (row, lines) {\n row = Math.min(Math.max(row, 0), this.getLength());\n var column = 0;\n if (row < this.getLength()) {\n lines = lines.concat([\"\"]);\n column = 0;\n }\n else {\n lines = [\"\"].concat(lines);\n row--;\n column = this.$lines[row].length;\n }\n this.insertMergedLines({ row: row, column: column }, lines);\n };\n Document.prototype.insertMergedLines = function (position, lines) {\n var start = this.clippedPos(position.row, position.column);\n var end = {\n row: start.row + lines.length - 1,\n column: (lines.length == 1 ? start.column : 0) + lines[lines.length - 1].length\n };\n this.applyDelta({\n start: start,\n end: end,\n action: \"insert\",\n lines: lines\n });\n return this.clonePos(end);\n };\n Document.prototype.remove = function (range) {\n var start = this.clippedPos(range.start.row, range.start.column);\n var end = this.clippedPos(range.end.row, range.end.column);\n this.applyDelta({\n start: start,\n end: end,\n action: \"remove\",\n lines: this.getLinesForRange({ start: start, end: end })\n });\n return this.clonePos(start);\n };\n Document.prototype.removeInLine = function (row, startColumn, endColumn) {\n var start = this.clippedPos(row, startColumn);\n var end = this.clippedPos(row, endColumn);\n this.applyDelta({\n start: start,\n end: end,\n action: \"remove\",\n lines: this.getLinesForRange({ start: start, end: end })\n }, true);\n return this.clonePos(start);\n };\n Document.prototype.removeFullLines = function (firstRow, lastRow) {\n firstRow = Math.min(Math.max(0, firstRow), this.getLength() - 1);\n lastRow = Math.min(Math.max(0, lastRow), this.getLength() - 1);\n var deleteFirstNewLine = lastRow == this.getLength() - 1 && firstRow > 0;\n var deleteLastNewLine = lastRow < this.getLength() - 1;\n var startRow = (deleteFirstNewLine ? firstRow - 1 : firstRow);\n var startCol = (deleteFirstNewLine ? this.getLine(startRow).length : 0);\n var endRow = (deleteLastNewLine ? lastRow + 1 : lastRow);\n var endCol = (deleteLastNewLine ? 0 : this.getLine(endRow).length);\n var range = new Range(startRow, startCol, endRow, endCol);\n var deletedLines = this.$lines.slice(firstRow, lastRow + 1);\n this.applyDelta({\n start: range.start,\n end: range.end,\n action: \"remove\",\n lines: this.getLinesForRange(range)\n });\n return deletedLines;\n };\n Document.prototype.removeNewLine = function (row) {\n if (row < this.getLength() - 1 && row >= 0) {\n this.applyDelta({\n start: this.pos(row, this.getLine(row).length),\n end: this.pos(row + 1, 0),\n action: \"remove\",\n lines: [\"\", \"\"]\n });\n }\n };\n Document.prototype.replace = function (range, text) {\n if (!(range instanceof Range))\n range = Range.fromPoints(range.start, range.end);\n if (text.length === 0 && range.isEmpty())\n return range.start;\n if (text == this.getTextRange(range))\n return range.end;\n this.remove(range);\n var end;\n if (text) {\n end = this.insert(range.start, text);\n }\n else {\n end = range.start;\n }\n return end;\n };\n Document.prototype.applyDeltas = function (deltas) {\n for (var i = 0; i < deltas.length; i++) {\n this.applyDelta(deltas[i]);\n }\n };\n Document.prototype.revertDeltas = function (deltas) {\n for (var i = deltas.length - 1; i >= 0; i--) {\n this.revertDelta(deltas[i]);\n }\n };\n Document.prototype.applyDelta = function (delta, doNotValidate) {\n var isInsert = delta.action == \"insert\";\n if (isInsert ? delta.lines.length <= 1 && !delta.lines[0]\n : !Range.comparePoints(delta.start, delta.end)) {\n return;\n }\n if (isInsert && delta.lines.length > 20000) {\n this.$splitAndapplyLargeDelta(delta, 20000);\n }\n else {\n applyDelta(this.$lines, delta, doNotValidate);\n this._signal(\"change\", delta);\n }\n };\n Document.prototype.$safeApplyDelta = function (delta) {\n var docLength = this.$lines.length;\n if (delta.action == \"remove\" && delta.start.row < docLength && delta.end.row < docLength\n || delta.action == \"insert\" && delta.start.row <= docLength) {\n this.applyDelta(delta);\n }\n };\n Document.prototype.$splitAndapplyLargeDelta = function (delta, MAX) {\n var lines = delta.lines;\n var l = lines.length - MAX + 1;\n var row = delta.start.row;\n var column = delta.start.column;\n for (var from = 0, to = 0; from < l; from = to) {\n to += MAX - 1;\n var chunk = lines.slice(from, to);\n chunk.push(\"\");\n this.applyDelta({\n start: this.pos(row + from, column),\n end: this.pos(row + to, column = 0),\n action: delta.action,\n lines: chunk\n }, true);\n }\n delta.lines = lines.slice(from);\n delta.start.row = row + from;\n delta.start.column = column;\n this.applyDelta(delta, true);\n };\n Document.prototype.revertDelta = function (delta) {\n this.$safeApplyDelta({\n start: this.clonePos(delta.start),\n end: this.clonePos(delta.end),\n action: (delta.action == \"insert\" ? \"remove\" : \"insert\"),\n lines: delta.lines.slice()\n });\n };\n Document.prototype.indexToPosition = function (index, startRow) {\n var lines = this.$lines || this.getAllLines();\n var newlineLength = this.getNewLineCharacter().length;\n for (var i = startRow || 0, l = lines.length; i < l; i++) {\n index -= lines[i].length + newlineLength;\n if (index < 0)\n return { row: i, column: index + lines[i].length + newlineLength };\n }\n return { row: l - 1, column: index + lines[l - 1].length + newlineLength };\n };\n Document.prototype.positionToIndex = function (pos, startRow) {\n var lines = this.$lines || this.getAllLines();\n var newlineLength = this.getNewLineCharacter().length;\n var index = 0;\n var row = Math.min(pos.row, lines.length);\n for (var i = startRow || 0; i < row; ++i)\n index += lines[i].length + newlineLength;\n return index + pos.column;\n };\n Document.prototype.$split = function (text) {\n return text.split(/\\r\\n|\\r|\\n/);\n };\n return Document;\n}());\nDocument.prototype.$autoNewLine = \"\";\nDocument.prototype.$newLineMode = \"auto\";\noop.implement(Document.prototype, EventEmitter);\nexports.Document = Document;\n\n});\n\nace.define(\"ace/background_tokenizer\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/event_emitter\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"./lib/oop\");\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar BackgroundTokenizer = /** @class */ (function () {\n function BackgroundTokenizer(tokenizer, editor) {\n this.running = false;\n this.lines = [];\n this.states = [];\n this.currentLine = 0;\n this.tokenizer = tokenizer;\n var self = this;\n this.$worker = function () {\n if (!self.running) {\n return;\n }\n var workerStart = new Date();\n var currentLine = self.currentLine;\n var endLine = -1;\n var doc = self.doc;\n var startLine = currentLine;\n while (self.lines[currentLine])\n currentLine++;\n var len = doc.getLength();\n var processedLines = 0;\n self.running = false;\n while (currentLine < len) {\n self.$tokenizeRow(currentLine);\n endLine = currentLine;\n do {\n currentLine++;\n } while (self.lines[currentLine]);\n processedLines++;\n if ((processedLines % 5 === 0) && (new Date() - workerStart) > 20) {\n self.running = setTimeout(self.$worker, 20);\n break;\n }\n }\n self.currentLine = currentLine;\n if (endLine == -1)\n endLine = currentLine;\n if (startLine <= endLine)\n self.fireUpdateEvent(startLine, endLine);\n };\n }\n BackgroundTokenizer.prototype.setTokenizer = function (tokenizer) {\n this.tokenizer = tokenizer;\n this.lines = [];\n this.states = [];\n this.start(0);\n };\n BackgroundTokenizer.prototype.setDocument = function (doc) {\n this.doc = doc;\n this.lines = [];\n this.states = [];\n this.stop();\n };\n BackgroundTokenizer.prototype.fireUpdateEvent = function (firstRow, lastRow) {\n var data = {\n first: firstRow,\n last: lastRow\n };\n this._signal(\"update\", { data: data });\n };\n BackgroundTokenizer.prototype.start = function (startRow) {\n this.currentLine = Math.min(startRow || 0, this.currentLine, this.doc.getLength());\n this.lines.splice(this.currentLine, this.lines.length);\n this.states.splice(this.currentLine, this.states.length);\n this.stop();\n this.running = setTimeout(this.$worker, 700);\n };\n BackgroundTokenizer.prototype.scheduleStart = function () {\n if (!this.running)\n this.running = setTimeout(this.$worker, 700);\n };\n BackgroundTokenizer.prototype.$updateOnChange = function (delta) {\n var startRow = delta.start.row;\n var len = delta.end.row - startRow;\n if (len === 0) {\n this.lines[startRow] = null;\n }\n else if (delta.action == \"remove\") {\n this.lines.splice(startRow, len + 1, null);\n this.states.splice(startRow, len + 1, null);\n }\n else {\n var args = Array(len + 1);\n args.unshift(startRow, 1);\n this.lines.splice.apply(this.lines, args);\n this.states.splice.apply(this.states, args);\n }\n this.currentLine = Math.min(startRow, this.currentLine, this.doc.getLength());\n this.stop();\n };\n BackgroundTokenizer.prototype.stop = function () {\n if (this.running)\n clearTimeout(this.running);\n this.running = false;\n };\n BackgroundTokenizer.prototype.getTokens = function (row) {\n return this.lines[row] || this.$tokenizeRow(row);\n };\n BackgroundTokenizer.prototype.getState = function (row) {\n if (this.currentLine == row)\n this.$tokenizeRow(row);\n return this.states[row] || \"start\";\n };\n BackgroundTokenizer.prototype.$tokenizeRow = function (row) {\n var line = this.doc.getLine(row);\n var state = this.states[row - 1];\n var data = this.tokenizer.getLineTokens(line, state, row);\n if (this.states[row] + \"\" !== data.state + \"\") {\n this.states[row] = data.state;\n this.lines[row + 1] = null;\n if (this.currentLine > row + 1)\n this.currentLine = row + 1;\n }\n else if (this.currentLine == row) {\n this.currentLine = row + 1;\n }\n return this.lines[row] = data.tokens;\n };\n BackgroundTokenizer.prototype.cleanup = function () {\n this.running = false;\n this.lines = [];\n this.states = [];\n this.currentLine = 0;\n this.removeAllListeners();\n };\n return BackgroundTokenizer;\n}());\noop.implement(BackgroundTokenizer.prototype, EventEmitter);\nexports.BackgroundTokenizer = BackgroundTokenizer;\n\n});\n\nace.define(\"ace/search_highlight\",[\"require\",\"exports\",\"module\",\"ace/lib/lang\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar lang = require(\"./lib/lang\");\nvar Range = require(\"./range\").Range;\nvar SearchHighlight = /** @class */ (function () {\n function SearchHighlight(regExp, clazz, type) {\n if (type === void 0) { type = \"text\"; }\n this.setRegexp(regExp);\n this.clazz = clazz;\n this.type = type;\n }\n SearchHighlight.prototype.setRegexp = function (regExp) {\n if (this.regExp + \"\" == regExp + \"\")\n return;\n this.regExp = regExp;\n this.cache = [];\n };\n SearchHighlight.prototype.update = function (html, markerLayer, session, config) {\n if (!this.regExp)\n return;\n var start = config.firstRow, end = config.lastRow;\n var renderedMarkerRanges = {};\n for (var i = start; i <= end; i++) {\n var ranges = this.cache[i];\n if (ranges == null) {\n ranges = lang.getMatchOffsets(session.getLine(i), this.regExp);\n if (ranges.length > this.MAX_RANGES)\n ranges = ranges.slice(0, this.MAX_RANGES);\n ranges = ranges.map(function (match) {\n return new Range(i, match.offset, i, match.offset + match.length);\n });\n this.cache[i] = ranges.length ? ranges : \"\";\n }\n for (var j = ranges.length; j--;) {\n var rangeToAddMarkerTo = ranges[j].toScreenRange(session);\n var rangeAsString = rangeToAddMarkerTo.toString();\n if (renderedMarkerRanges[rangeAsString])\n continue;\n renderedMarkerRanges[rangeAsString] = true;\n markerLayer.drawSingleLineMarker(html, rangeToAddMarkerTo, this.clazz, config);\n }\n }\n };\n return SearchHighlight;\n}());\nSearchHighlight.prototype.MAX_RANGES = 500;\nexports.SearchHighlight = SearchHighlight;\n\n});\n\nace.define(\"ace/undomanager\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar UndoManager = /** @class */ (function () {\n function UndoManager() {\n this.$maxRev = 0;\n this.$fromUndo = false;\n this.$undoDepth = Infinity;\n this.reset();\n }\n UndoManager.prototype.addSession = function (session) {\n this.$session = session;\n };\n UndoManager.prototype.add = function (delta, allowMerge, session) {\n if (this.$fromUndo)\n return;\n if (delta == this.$lastDelta)\n return;\n if (!this.$keepRedoStack)\n this.$redoStack.length = 0;\n if (allowMerge === false || !this.lastDeltas) {\n this.lastDeltas = [];\n var undoStackLength = this.$undoStack.length;\n if (undoStackLength > this.$undoDepth - 1) {\n this.$undoStack.splice(0, undoStackLength - this.$undoDepth + 1);\n }\n this.$undoStack.push(this.lastDeltas);\n delta.id = this.$rev = ++this.$maxRev;\n }\n if (delta.action == \"remove\" || delta.action == \"insert\")\n this.$lastDelta = delta;\n this.lastDeltas.push(delta);\n };\n UndoManager.prototype.addSelection = function (selection, rev) {\n this.selections.push({\n value: selection,\n rev: rev || this.$rev\n });\n };\n UndoManager.prototype.startNewGroup = function () {\n this.lastDeltas = null;\n return this.$rev;\n };\n UndoManager.prototype.markIgnored = function (from, to) {\n if (to == null)\n to = this.$rev + 1;\n var stack = this.$undoStack;\n for (var i = stack.length; i--;) {\n var delta = stack[i][0];\n if (delta.id <= from)\n break;\n if (delta.id < to)\n delta.ignore = true;\n }\n this.lastDeltas = null;\n };\n UndoManager.prototype.getSelection = function (rev, after) {\n var stack = this.selections;\n for (var i = stack.length; i--;) {\n var selection = stack[i];\n if (selection.rev < rev) {\n if (after)\n selection = stack[i + 1];\n return selection;\n }\n }\n };\n UndoManager.prototype.getRevision = function () {\n return this.$rev;\n };\n UndoManager.prototype.getDeltas = function (from, to) {\n if (to == null)\n to = this.$rev + 1;\n var stack = this.$undoStack;\n var end = null, start = 0;\n for (var i = stack.length; i--;) {\n var delta = stack[i][0];\n if (delta.id < to && !end)\n end = i + 1;\n if (delta.id <= from) {\n start = i + 1;\n break;\n }\n }\n return stack.slice(start, end);\n };\n UndoManager.prototype.getChangedRanges = function (from, to) {\n if (to == null)\n to = this.$rev + 1;\n };\n UndoManager.prototype.getChangedLines = function (from, to) {\n if (to == null)\n to = this.$rev + 1;\n };\n UndoManager.prototype.undo = function (session, dontSelect) {\n this.lastDeltas = null;\n var stack = this.$undoStack;\n if (!rearrangeUndoStack(stack, stack.length))\n return;\n if (!session)\n session = this.$session;\n if (this.$redoStackBaseRev !== this.$rev && this.$redoStack.length)\n this.$redoStack = [];\n this.$fromUndo = true;\n var deltaSet = stack.pop();\n var undoSelectionRange = null;\n if (deltaSet) {\n undoSelectionRange = session.undoChanges(deltaSet, dontSelect);\n this.$redoStack.push(deltaSet);\n this.$syncRev();\n }\n this.$fromUndo = false;\n return undoSelectionRange;\n };\n UndoManager.prototype.redo = function (session, dontSelect) {\n this.lastDeltas = null;\n if (!session)\n session = this.$session;\n this.$fromUndo = true;\n if (this.$redoStackBaseRev != this.$rev) {\n var diff = this.getDeltas(this.$redoStackBaseRev, this.$rev + 1);\n rebaseRedoStack(this.$redoStack, diff);\n this.$redoStackBaseRev = this.$rev;\n this.$redoStack.forEach(function (x) {\n x[0].id = ++this.$maxRev;\n }, this);\n }\n var deltaSet = this.$redoStack.pop();\n var redoSelectionRange = null;\n if (deltaSet) {\n redoSelectionRange = session.redoChanges(deltaSet, dontSelect);\n this.$undoStack.push(deltaSet);\n this.$syncRev();\n }\n this.$fromUndo = false;\n return redoSelectionRange;\n };\n UndoManager.prototype.$syncRev = function () {\n var stack = this.$undoStack;\n var nextDelta = stack[stack.length - 1];\n var id = nextDelta && nextDelta[0].id || 0;\n this.$redoStackBaseRev = id;\n this.$rev = id;\n };\n UndoManager.prototype.reset = function () {\n this.lastDeltas = null;\n this.$lastDelta = null;\n this.$undoStack = [];\n this.$redoStack = [];\n this.$rev = 0;\n this.mark = 0;\n this.$redoStackBaseRev = this.$rev;\n this.selections = [];\n };\n UndoManager.prototype.canUndo = function () {\n return this.$undoStack.length > 0;\n };\n UndoManager.prototype.canRedo = function () {\n return this.$redoStack.length > 0;\n };\n UndoManager.prototype.bookmark = function (rev) {\n if (rev == undefined)\n rev = this.$rev;\n this.mark = rev;\n };\n UndoManager.prototype.isAtBookmark = function () {\n return this.$rev === this.mark;\n };\n UndoManager.prototype.toJSON = function () {\n return {\n $redoStack: this.$redoStack,\n $undoStack: this.$undoStack\n };\n };\n UndoManager.prototype.fromJSON = function (json) {\n this.reset();\n this.$undoStack = json.$undoStack;\n this.$redoStack = json.$redoStack;\n };\n UndoManager.prototype.$prettyPrint = function (delta) {\n if (delta)\n return stringifyDelta(delta);\n return stringifyDelta(this.$undoStack) + \"\\n---\\n\" + stringifyDelta(this.$redoStack);\n };\n return UndoManager;\n}());\nUndoManager.prototype.hasUndo = UndoManager.prototype.canUndo;\nUndoManager.prototype.hasRedo = UndoManager.prototype.canRedo;\nUndoManager.prototype.isClean = UndoManager.prototype.isAtBookmark;\nUndoManager.prototype.markClean = UndoManager.prototype.bookmark;\nfunction rearrangeUndoStack(stack, pos) {\n for (var i = pos; i--;) {\n var deltaSet = stack[i];\n if (deltaSet && !deltaSet[0].ignore) {\n while (i < pos - 1) {\n var swapped = swapGroups(stack[i], stack[i + 1]);\n stack[i] = swapped[0];\n stack[i + 1] = swapped[1];\n i++;\n }\n return true;\n }\n }\n}\nvar Range = require(\"./range\").Range;\nvar cmp = Range.comparePoints;\nvar comparePoints = Range.comparePoints;\nfunction $updateMarkers(delta) {\n var isInsert = delta.action == \"insert\";\n var start = delta.start;\n var end = delta.end;\n var rowShift = (end.row - start.row) * (isInsert ? 1 : -1);\n var colShift = (end.column - start.column) * (isInsert ? 1 : -1);\n if (isInsert)\n end = start;\n for (var i in this.marks) {\n var point = this.marks[i];\n var cmp = comparePoints(point, start);\n if (cmp < 0) {\n continue; // delta starts after the range\n }\n if (cmp === 0) {\n if (isInsert) {\n if (point.bias == 1) {\n cmp = 1;\n }\n else {\n point.bias == -1;\n continue;\n }\n }\n }\n var cmp2 = isInsert ? cmp : comparePoints(point, end);\n if (cmp2 > 0) {\n point.row += rowShift;\n point.column += point.row == end.row ? colShift : 0;\n continue;\n }\n if (!isInsert && cmp2 <= 0) {\n point.row = start.row;\n point.column = start.column;\n if (cmp2 === 0)\n point.bias = 1;\n }\n }\n}\nfunction clonePos(pos) {\n return { row: pos.row, column: pos.column };\n}\nfunction cloneDelta(d) {\n return {\n start: clonePos(d.start),\n end: clonePos(d.end),\n action: d.action,\n lines: d.lines.slice()\n };\n}\nfunction stringifyDelta(d) {\n d = d || this;\n if (Array.isArray(d)) {\n return d.map(stringifyDelta).join(\"\\n\");\n }\n var type = \"\";\n if (d.action) {\n type = d.action == \"insert\" ? \"+\" : \"-\";\n type += \"[\" + d.lines + \"]\";\n }\n else if (d.value) {\n if (Array.isArray(d.value)) {\n type = d.value.map(stringifyRange).join(\"\\n\");\n }\n else {\n type = stringifyRange(d.value);\n }\n }\n if (d.start) {\n type += stringifyRange(d);\n }\n if (d.id || d.rev) {\n type += \"\\t(\" + (d.id || d.rev) + \")\";\n }\n return type;\n}\nfunction stringifyRange(r) {\n return r.start.row + \":\" + r.start.column\n + \"=>\" + r.end.row + \":\" + r.end.column;\n}\nfunction swap(d1, d2) {\n var i1 = d1.action == \"insert\";\n var i2 = d2.action == \"insert\";\n if (i1 && i2) {\n if (cmp(d2.start, d1.end) >= 0) {\n shift(d2, d1, -1);\n }\n else if (cmp(d2.start, d1.start) <= 0) {\n shift(d1, d2, +1);\n }\n else {\n return null;\n }\n }\n else if (i1 && !i2) {\n if (cmp(d2.start, d1.end) >= 0) {\n shift(d2, d1, -1);\n }\n else if (cmp(d2.end, d1.start) <= 0) {\n shift(d1, d2, -1);\n }\n else {\n return null;\n }\n }\n else if (!i1 && i2) {\n if (cmp(d2.start, d1.start) >= 0) {\n shift(d2, d1, +1);\n }\n else if (cmp(d2.start, d1.start) <= 0) {\n shift(d1, d2, +1);\n }\n else {\n return null;\n }\n }\n else if (!i1 && !i2) {\n if (cmp(d2.start, d1.start) >= 0) {\n shift(d2, d1, +1);\n }\n else if (cmp(d2.end, d1.start) <= 0) {\n shift(d1, d2, -1);\n }\n else {\n return null;\n }\n }\n return [d2, d1];\n}\nfunction swapGroups(ds1, ds2) {\n for (var i = ds1.length; i--;) {\n for (var j = 0; j < ds2.length; j++) {\n if (!swap(ds1[i], ds2[j])) {\n while (i < ds1.length) {\n while (j--) {\n swap(ds2[j], ds1[i]);\n }\n j = ds2.length;\n i++;\n }\n return [ds1, ds2];\n }\n }\n }\n ds1.selectionBefore = ds2.selectionBefore =\n ds1.selectionAfter = ds2.selectionAfter = null;\n return [ds2, ds1];\n}\nfunction xform(d1, c1) {\n var i1 = d1.action == \"insert\";\n var i2 = c1.action == \"insert\";\n if (i1 && i2) {\n if (cmp(d1.start, c1.start) < 0) {\n shift(c1, d1, 1);\n }\n else {\n shift(d1, c1, 1);\n }\n }\n else if (i1 && !i2) {\n if (cmp(d1.start, c1.end) >= 0) {\n shift(d1, c1, -1);\n }\n else if (cmp(d1.start, c1.start) <= 0) {\n shift(c1, d1, +1);\n }\n else {\n shift(d1, Range.fromPoints(c1.start, d1.start), -1);\n shift(c1, d1, +1);\n }\n }\n else if (!i1 && i2) {\n if (cmp(c1.start, d1.end) >= 0) {\n shift(c1, d1, -1);\n }\n else if (cmp(c1.start, d1.start) <= 0) {\n shift(d1, c1, +1);\n }\n else {\n shift(c1, Range.fromPoints(d1.start, c1.start), -1);\n shift(d1, c1, +1);\n }\n }\n else if (!i1 && !i2) {\n if (cmp(c1.start, d1.end) >= 0) {\n shift(c1, d1, -1);\n }\n else if (cmp(c1.end, d1.start) <= 0) {\n shift(d1, c1, -1);\n }\n else {\n var before, after;\n if (cmp(d1.start, c1.start) < 0) {\n before = d1;\n d1 = splitDelta(d1, c1.start);\n }\n if (cmp(d1.end, c1.end) > 0) {\n after = splitDelta(d1, c1.end);\n }\n shiftPos(c1.end, d1.start, d1.end, -1);\n if (after && !before) {\n d1.lines = after.lines;\n d1.start = after.start;\n d1.end = after.end;\n after = d1;\n }\n return [c1, before, after].filter(Boolean);\n }\n }\n return [c1, d1];\n}\nfunction shift(d1, d2, dir) {\n shiftPos(d1.start, d2.start, d2.end, dir);\n shiftPos(d1.end, d2.start, d2.end, dir);\n}\nfunction shiftPos(pos, start, end, dir) {\n if (pos.row == (dir == 1 ? start : end).row) {\n pos.column += dir * (end.column - start.column);\n }\n pos.row += dir * (end.row - start.row);\n}\nfunction splitDelta(c, pos) {\n var lines = c.lines;\n var end = c.end;\n c.end = clonePos(pos);\n var rowsBefore = c.end.row - c.start.row;\n var otherLines = lines.splice(rowsBefore, lines.length);\n var col = rowsBefore ? pos.column : pos.column - c.start.column;\n lines.push(otherLines[0].substring(0, col));\n otherLines[0] = otherLines[0].substr(col);\n var rest = {\n start: clonePos(pos),\n end: end,\n lines: otherLines,\n action: c.action\n };\n return rest;\n}\nfunction moveDeltasByOne(redoStack, d) {\n d = cloneDelta(d);\n for (var j = redoStack.length; j--;) {\n var deltaSet = redoStack[j];\n for (var i = 0; i < deltaSet.length; i++) {\n var x = deltaSet[i];\n var xformed = xform(x, d);\n d = xformed[0];\n if (xformed.length != 2) {\n if (xformed[2]) {\n deltaSet.splice(i + 1, 1, xformed[1], xformed[2]);\n i++;\n }\n else if (!xformed[1]) {\n deltaSet.splice(i, 1);\n i--;\n }\n }\n }\n if (!deltaSet.length) {\n redoStack.splice(j, 1);\n }\n }\n return redoStack;\n}\nfunction rebaseRedoStack(redoStack, deltaSets) {\n for (var i = 0; i < deltaSets.length; i++) {\n var deltas = deltaSets[i];\n for (var j = 0; j < deltas.length; j++) {\n moveDeltasByOne(redoStack, deltas[j]);\n }\n }\n}\nexports.UndoManager = UndoManager;\n\n});\n\nace.define(\"ace/edit_session/fold_line\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar Range = require(\"../range\").Range;\nvar FoldLine = /** @class */ (function () {\n function FoldLine(foldData, folds) {\n this.foldData = foldData;\n if (Array.isArray(folds)) {\n this.folds = folds;\n }\n else {\n folds = this.folds = [folds];\n }\n var last = folds[folds.length - 1];\n this.range = new Range(folds[0].start.row, folds[0].start.column, last.end.row, last.end.column);\n this.start = this.range.start;\n this.end = this.range.end;\n this.folds.forEach(function (fold) {\n fold.setFoldLine(this);\n }, this);\n }\n FoldLine.prototype.shiftRow = function (shift) {\n this.start.row += shift;\n this.end.row += shift;\n this.folds.forEach(function (fold) {\n fold.start.row += shift;\n fold.end.row += shift;\n });\n };\n FoldLine.prototype.addFold = function (fold) {\n if (fold.sameRow) {\n if (fold.start.row < this.startRow || fold.endRow > this.endRow) {\n throw new Error(\"Can't add a fold to this FoldLine as it has no connection\");\n }\n this.folds.push(fold);\n this.folds.sort(function (a, b) {\n return -a.range.compareEnd(b.start.row, b.start.column);\n });\n if (this.range.compareEnd(fold.start.row, fold.start.column) > 0) {\n this.end.row = fold.end.row;\n this.end.column = fold.end.column;\n }\n else if (this.range.compareStart(fold.end.row, fold.end.column) < 0) {\n this.start.row = fold.start.row;\n this.start.column = fold.start.column;\n }\n }\n else if (fold.start.row == this.end.row) {\n this.folds.push(fold);\n this.end.row = fold.end.row;\n this.end.column = fold.end.column;\n }\n else if (fold.end.row == this.start.row) {\n this.folds.unshift(fold);\n this.start.row = fold.start.row;\n this.start.column = fold.start.column;\n }\n else {\n throw new Error(\"Trying to add fold to FoldRow that doesn't have a matching row\");\n }\n fold.foldLine = this;\n };\n FoldLine.prototype.containsRow = function (row) {\n return row >= this.start.row && row <= this.end.row;\n };\n FoldLine.prototype.walk = function (callback, endRow, endColumn) {\n var lastEnd = 0, folds = this.folds, fold, cmp, stop, isNewRow = true;\n if (endRow == null) {\n endRow = this.end.row;\n endColumn = this.end.column;\n }\n for (var i = 0; i < folds.length; i++) {\n fold = folds[i];\n cmp = fold.range.compareStart(endRow, endColumn);\n if (cmp == -1) {\n callback(null, endRow, endColumn, lastEnd, isNewRow);\n return;\n }\n stop = callback(null, fold.start.row, fold.start.column, lastEnd, isNewRow);\n stop = !stop && callback(fold.placeholder, fold.start.row, fold.start.column, lastEnd);\n if (stop || cmp === 0) {\n return;\n }\n isNewRow = !fold.sameRow;\n lastEnd = fold.end.column;\n }\n callback(null, endRow, endColumn, lastEnd, isNewRow);\n };\n FoldLine.prototype.getNextFoldTo = function (row, column) {\n var fold, cmp;\n for (var i = 0; i < this.folds.length; i++) {\n fold = this.folds[i];\n cmp = fold.range.compareEnd(row, column);\n if (cmp == -1) {\n return {\n fold: fold,\n kind: \"after\"\n };\n }\n else if (cmp === 0) {\n return {\n fold: fold,\n kind: \"inside\"\n };\n }\n }\n return null;\n };\n FoldLine.prototype.addRemoveChars = function (row, column, len) {\n var ret = this.getNextFoldTo(row, column), fold, folds;\n if (ret) {\n fold = ret.fold;\n if (ret.kind == \"inside\"\n && fold.start.column != column\n && fold.start.row != row) {\n window.console && window.console.log(row, column, fold);\n }\n else if (fold.start.row == row) {\n folds = this.folds;\n var i = folds.indexOf(fold);\n if (i === 0) {\n this.start.column += len;\n }\n for (i; i < folds.length; i++) {\n fold = folds[i];\n fold.start.column += len;\n if (!fold.sameRow) {\n return;\n }\n fold.end.column += len;\n }\n this.end.column += len;\n }\n }\n };\n FoldLine.prototype.split = function (row, column) {\n var pos = this.getNextFoldTo(row, column);\n if (!pos || pos.kind == \"inside\")\n return null;\n var fold = pos.fold;\n var folds = this.folds;\n var foldData = this.foldData;\n var i = folds.indexOf(fold);\n var foldBefore = folds[i - 1];\n this.end.row = foldBefore.end.row;\n this.end.column = foldBefore.end.column;\n folds = folds.splice(i, folds.length - i);\n var newFoldLine = new FoldLine(foldData, folds);\n foldData.splice(foldData.indexOf(this) + 1, 0, newFoldLine);\n return newFoldLine;\n };\n FoldLine.prototype.merge = function (foldLineNext) {\n var folds = foldLineNext.folds;\n for (var i = 0; i < folds.length; i++) {\n this.addFold(folds[i]);\n }\n var foldData = this.foldData;\n foldData.splice(foldData.indexOf(foldLineNext), 1);\n };\n FoldLine.prototype.toString = function () {\n var ret = [this.range.toString() + \": [\"];\n this.folds.forEach(function (fold) {\n ret.push(\" \" + fold.toString());\n });\n ret.push(\"]\");\n return ret.join(\"\\n\");\n };\n FoldLine.prototype.idxToPosition = function (idx) {\n var lastFoldEndColumn = 0;\n for (var i = 0; i < this.folds.length; i++) {\n var fold = this.folds[i];\n idx -= fold.start.column - lastFoldEndColumn;\n if (idx < 0) {\n return {\n row: fold.start.row,\n column: fold.start.column + idx\n };\n }\n idx -= fold.placeholder.length;\n if (idx < 0) {\n return fold.start;\n }\n lastFoldEndColumn = fold.end.column;\n }\n return {\n row: this.end.row,\n column: this.end.column + idx\n };\n };\n return FoldLine;\n}());\nexports.FoldLine = FoldLine;\n\n});\n\nace.define(\"ace/range_list\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar Range = require(\"./range\").Range;\nvar comparePoints = Range.comparePoints;\nvar RangeList = /** @class */ (function () {\n function RangeList() {\n this.ranges = [];\n this.$bias = 1;\n }\n RangeList.prototype.pointIndex = function (pos, excludeEdges, startIndex) {\n var list = this.ranges;\n for (var i = startIndex || 0; i < list.length; i++) {\n var range = list[i];\n var cmpEnd = comparePoints(pos, range.end);\n if (cmpEnd > 0)\n continue;\n var cmpStart = comparePoints(pos, range.start);\n if (cmpEnd === 0)\n return excludeEdges && cmpStart !== 0 ? -i - 2 : i;\n if (cmpStart > 0 || (cmpStart === 0 && !excludeEdges))\n return i;\n return -i - 1;\n }\n return -i - 1;\n };\n RangeList.prototype.add = function (range) {\n var excludeEdges = !range.isEmpty();\n var startIndex = this.pointIndex(range.start, excludeEdges);\n if (startIndex < 0)\n startIndex = -startIndex - 1;\n var endIndex = this.pointIndex(range.end, excludeEdges, startIndex);\n if (endIndex < 0)\n endIndex = -endIndex - 1;\n else\n endIndex++;\n return this.ranges.splice(startIndex, endIndex - startIndex, range);\n };\n RangeList.prototype.addList = function (list) {\n var removed = [];\n for (var i = list.length; i--;) {\n removed.push.apply(removed, this.add(list[i]));\n }\n return removed;\n };\n RangeList.prototype.substractPoint = function (pos) {\n var i = this.pointIndex(pos);\n if (i >= 0)\n return this.ranges.splice(i, 1);\n };\n RangeList.prototype.merge = function () {\n var removed = [];\n var list = this.ranges;\n list = list.sort(function (a, b) {\n return comparePoints(a.start, b.start);\n });\n var next = list[0], range;\n for (var i = 1; i < list.length; i++) {\n range = next;\n next = list[i];\n var cmp = comparePoints(range.end, next.start);\n if (cmp < 0)\n continue;\n if (cmp == 0 && !range.isEmpty() && !next.isEmpty())\n continue;\n if (comparePoints(range.end, next.end) < 0) {\n range.end.row = next.end.row;\n range.end.column = next.end.column;\n }\n list.splice(i, 1);\n removed.push(next);\n next = range;\n i--;\n }\n this.ranges = list;\n return removed;\n };\n RangeList.prototype.contains = function (row, column) {\n return this.pointIndex({ row: row, column: column }) >= 0;\n };\n RangeList.prototype.containsPoint = function (pos) {\n return this.pointIndex(pos) >= 0;\n };\n RangeList.prototype.rangeAtPoint = function (pos) {\n var i = this.pointIndex(pos);\n if (i >= 0)\n return this.ranges[i];\n };\n RangeList.prototype.clipRows = function (startRow, endRow) {\n var list = this.ranges;\n if (list[0].start.row > endRow || list[list.length - 1].start.row < startRow)\n return [];\n var startIndex = this.pointIndex({ row: startRow, column: 0 });\n if (startIndex < 0)\n startIndex = -startIndex - 1;\n var endIndex = this.pointIndex({ row: endRow, column: 0 }, startIndex);\n if (endIndex < 0)\n endIndex = -endIndex - 1;\n var clipped = [];\n for (var i = startIndex; i < endIndex; i++) {\n clipped.push(list[i]);\n }\n return clipped;\n };\n RangeList.prototype.removeAll = function () {\n return this.ranges.splice(0, this.ranges.length);\n };\n RangeList.prototype.attach = function (session) {\n if (this.session)\n this.detach();\n this.session = session;\n this.onChange = this.$onChange.bind(this);\n this.session.on('change', this.onChange);\n };\n RangeList.prototype.detach = function () {\n if (!this.session)\n return;\n this.session.removeListener('change', this.onChange);\n this.session = null;\n };\n RangeList.prototype.$onChange = function (delta) {\n var start = delta.start;\n var end = delta.end;\n var startRow = start.row;\n var endRow = end.row;\n var ranges = this.ranges;\n for (var i = 0, n = ranges.length; i < n; i++) {\n var r = ranges[i];\n if (r.end.row >= startRow)\n break;\n }\n if (delta.action == \"insert\") {\n var lineDif = endRow - startRow;\n var colDiff = -start.column + end.column;\n for (; i < n; i++) {\n var r = ranges[i];\n if (r.start.row > startRow)\n break;\n if (r.start.row == startRow && r.start.column >= start.column) {\n if (r.start.column == start.column && this.$bias <= 0) {\n }\n else {\n r.start.column += colDiff;\n r.start.row += lineDif;\n }\n }\n if (r.end.row == startRow && r.end.column >= start.column) {\n if (r.end.column == start.column && this.$bias < 0) {\n continue;\n }\n if (r.end.column == start.column && colDiff > 0 && i < n - 1) {\n if (r.end.column > r.start.column && r.end.column == ranges[i + 1].start.column)\n r.end.column -= colDiff;\n }\n r.end.column += colDiff;\n r.end.row += lineDif;\n }\n }\n }\n else {\n var lineDif = startRow - endRow;\n var colDiff = start.column - end.column;\n for (; i < n; i++) {\n var r = ranges[i];\n if (r.start.row > endRow)\n break;\n if (r.end.row < endRow\n && (startRow < r.end.row\n || startRow == r.end.row && start.column < r.end.column)) {\n r.end.row = startRow;\n r.end.column = start.column;\n }\n else if (r.end.row == endRow) {\n if (r.end.column <= end.column) {\n if (lineDif || r.end.column > start.column) {\n r.end.column = start.column;\n r.end.row = start.row;\n }\n }\n else {\n r.end.column += colDiff;\n r.end.row += lineDif;\n }\n }\n else if (r.end.row > endRow) {\n r.end.row += lineDif;\n }\n if (r.start.row < endRow\n && (startRow < r.start.row\n || startRow == r.start.row && start.column < r.start.column)) {\n r.start.row = startRow;\n r.start.column = start.column;\n }\n else if (r.start.row == endRow) {\n if (r.start.column <= end.column) {\n if (lineDif || r.start.column > start.column) {\n r.start.column = start.column;\n r.start.row = start.row;\n }\n }\n else {\n r.start.column += colDiff;\n r.start.row += lineDif;\n }\n }\n else if (r.start.row > endRow) {\n r.start.row += lineDif;\n }\n }\n }\n if (lineDif != 0 && i < n) {\n for (; i < n; i++) {\n var r = ranges[i];\n r.start.row += lineDif;\n r.end.row += lineDif;\n }\n }\n };\n return RangeList;\n}());\nRangeList.prototype.comparePoints = comparePoints;\nexports.RangeList = RangeList;\n\n});\n\nace.define(\"ace/edit_session/fold\",[\"require\",\"exports\",\"module\",\"ace/range_list\"], function(require, exports, module){\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar RangeList = require(\"../range_list\").RangeList;\nvar Fold = /** @class */ (function (_super) {\n __extends(Fold, _super);\n function Fold(range, placeholder) {\n var _this = _super.call(this) || this;\n _this.foldLine = null;\n _this.placeholder = placeholder;\n _this.range = range;\n _this.start = range.start;\n _this.end = range.end;\n _this.sameRow = range.start.row == range.end.row;\n _this.subFolds = _this.ranges = [];\n return _this;\n }\n Fold.prototype.toString = function () {\n return '\"' + this.placeholder + '\" ' + this.range.toString();\n };\n Fold.prototype.setFoldLine = function (foldLine) {\n this.foldLine = foldLine;\n this.subFolds.forEach(function (fold) {\n fold.setFoldLine(foldLine);\n });\n };\n Fold.prototype.clone = function () {\n var range = this.range.clone();\n var fold = new Fold(range, this.placeholder);\n this.subFolds.forEach(function (subFold) {\n fold.subFolds.push(subFold.clone());\n });\n fold.collapseChildren = this.collapseChildren;\n return fold;\n };\n Fold.prototype.addSubFold = function (fold) {\n if (this.range.isEqual(fold))\n return;\n consumeRange(fold, this.start);\n var row = fold.start.row, column = fold.start.column;\n for (var i = 0, cmp = -1; i < this.subFolds.length; i++) {\n cmp = this.subFolds[i].range.compare(row, column);\n if (cmp != 1)\n break;\n }\n var afterStart = this.subFolds[i];\n var firstConsumed = 0;\n if (cmp == 0) {\n if (afterStart.range.containsRange(fold))\n return afterStart.addSubFold(fold);\n else\n firstConsumed = 1;\n }\n var row = fold.range.end.row, column = fold.range.end.column;\n for (var j = i, cmp = -1; j < this.subFolds.length; j++) {\n cmp = this.subFolds[j].range.compare(row, column);\n if (cmp != 1)\n break;\n }\n if (cmp == 0)\n j++;\n var consumedFolds = this.subFolds.splice(i, j - i, fold);\n var last = cmp == 0 ? consumedFolds.length - 1 : consumedFolds.length;\n for (var k = firstConsumed; k < last; k++) {\n fold.addSubFold(consumedFolds[k]);\n }\n fold.setFoldLine(this.foldLine);\n return fold;\n };\n Fold.prototype.restoreRange = function (range) {\n return restoreRange(range, this.start);\n };\n return Fold;\n}(RangeList));\nfunction consumePoint(point, anchor) {\n point.row -= anchor.row;\n if (point.row == 0)\n point.column -= anchor.column;\n}\nfunction consumeRange(range, anchor) {\n consumePoint(range.start, anchor);\n consumePoint(range.end, anchor);\n}\nfunction restorePoint(point, anchor) {\n if (point.row == 0)\n point.column += anchor.column;\n point.row += anchor.row;\n}\nfunction restoreRange(range, anchor) {\n restorePoint(range.start, anchor);\n restorePoint(range.end, anchor);\n}\nexports.Fold = Fold;\n\n});\n\nace.define(\"ace/edit_session/folding\",[\"require\",\"exports\",\"module\",\"ace/range\",\"ace/edit_session/fold_line\",\"ace/edit_session/fold\",\"ace/token_iterator\",\"ace/mouse/mouse_event\"], function(require, exports, module){\"use strict\";\nvar Range = require(\"../range\").Range;\nvar FoldLine = require(\"./fold_line\").FoldLine;\nvar Fold = require(\"./fold\").Fold;\nvar TokenIterator = require(\"../token_iterator\").TokenIterator;\nvar MouseEvent = require(\"../mouse/mouse_event\").MouseEvent;\nfunction Folding() {\n this.getFoldAt = function (row, column, side) {\n var foldLine = this.getFoldLine(row);\n if (!foldLine)\n return null;\n var folds = foldLine.folds;\n for (var i = 0; i < folds.length; i++) {\n var range = folds[i].range;\n if (range.contains(row, column)) {\n if (side == 1 && range.isEnd(row, column) && !range.isEmpty()) {\n continue;\n }\n else if (side == -1 && range.isStart(row, column) && !range.isEmpty()) {\n continue;\n }\n return folds[i];\n }\n }\n };\n this.getFoldsInRange = function (range) {\n var start = range.start;\n var end = range.end;\n var foldLines = this.$foldData;\n var foundFolds = [];\n start.column += 1;\n end.column -= 1;\n for (var i = 0; i < foldLines.length; i++) {\n var cmp = foldLines[i].range.compareRange(range);\n if (cmp == 2) {\n continue;\n }\n else if (cmp == -2) {\n break;\n }\n var folds = foldLines[i].folds;\n for (var j = 0; j < folds.length; j++) {\n var fold = folds[j];\n cmp = fold.range.compareRange(range);\n if (cmp == -2) {\n break;\n }\n else if (cmp == 2) {\n continue;\n }\n else \n if (cmp == 42) {\n break;\n }\n foundFolds.push(fold);\n }\n }\n start.column -= 1;\n end.column += 1;\n return foundFolds;\n };\n this.getFoldsInRangeList = function (ranges) {\n if (Array.isArray(ranges)) {\n var folds = [];\n ranges.forEach(function (range) {\n folds = folds.concat(this.getFoldsInRange(range));\n }, this);\n }\n else {\n var folds = this.getFoldsInRange(ranges);\n }\n return folds;\n };\n this.getAllFolds = function () {\n var folds = [];\n var foldLines = this.$foldData;\n for (var i = 0; i < foldLines.length; i++)\n for (var j = 0; j < foldLines[i].folds.length; j++)\n folds.push(foldLines[i].folds[j]);\n return folds;\n };\n this.getFoldStringAt = function (row, column, trim, foldLine) {\n foldLine = foldLine || this.getFoldLine(row);\n if (!foldLine)\n return null;\n var lastFold = {\n end: { column: 0 }\n };\n var str, fold;\n for (var i = 0; i < foldLine.folds.length; i++) {\n fold = foldLine.folds[i];\n var cmp = fold.range.compareEnd(row, column);\n if (cmp == -1) {\n str = this\n .getLine(fold.start.row)\n .substring(lastFold.end.column, fold.start.column);\n break;\n }\n else if (cmp === 0) {\n return null;\n }\n lastFold = fold;\n }\n if (!str)\n str = this.getLine(fold.start.row).substring(lastFold.end.column);\n if (trim == -1)\n return str.substring(0, column - lastFold.end.column);\n else if (trim == 1)\n return str.substring(column - lastFold.end.column);\n else\n return str;\n };\n this.getFoldLine = function (docRow, startFoldLine) {\n var foldData = this.$foldData;\n var i = 0;\n if (startFoldLine)\n i = foldData.indexOf(startFoldLine);\n if (i == -1)\n i = 0;\n for (i; i < foldData.length; i++) {\n var foldLine = foldData[i];\n if (foldLine.start.row <= docRow && foldLine.end.row >= docRow) {\n return foldLine;\n }\n else if (foldLine.end.row > docRow) {\n return null;\n }\n }\n return null;\n };\n this.getNextFoldLine = function (docRow, startFoldLine) {\n var foldData = this.$foldData;\n var i = 0;\n if (startFoldLine)\n i = foldData.indexOf(startFoldLine);\n if (i == -1)\n i = 0;\n for (i; i < foldData.length; i++) {\n var foldLine = foldData[i];\n if (foldLine.end.row >= docRow) {\n return foldLine;\n }\n }\n return null;\n };\n this.getFoldedRowCount = function (first, last) {\n var foldData = this.$foldData, rowCount = last - first + 1;\n for (var i = 0; i < foldData.length; i++) {\n var foldLine = foldData[i], end = foldLine.end.row, start = foldLine.start.row;\n if (end >= last) {\n if (start < last) {\n if (start >= first)\n rowCount -= last - start;\n else\n rowCount = 0; // in one fold\n }\n break;\n }\n else if (end >= first) {\n if (start >= first) // fold inside range\n rowCount -= end - start;\n else\n rowCount -= end - first + 1;\n }\n }\n return rowCount;\n };\n this.$addFoldLine = function (foldLine) {\n this.$foldData.push(foldLine);\n this.$foldData.sort(function (a, b) {\n return a.start.row - b.start.row;\n });\n return foldLine;\n };\n this.addFold = function (placeholder, range) {\n var foldData = this.$foldData;\n var added = false;\n var fold;\n if (placeholder instanceof Fold)\n fold = placeholder;\n else {\n fold = new Fold(range, placeholder);\n fold.collapseChildren = range.collapseChildren;\n }\n this.$clipRangeToDocument(fold.range);\n var startRow = fold.start.row;\n var startColumn = fold.start.column;\n var endRow = fold.end.row;\n var endColumn = fold.end.column;\n var startFold = this.getFoldAt(startRow, startColumn, 1);\n var endFold = this.getFoldAt(endRow, endColumn, -1);\n if (startFold && endFold == startFold)\n return startFold.addSubFold(fold);\n if (startFold && !startFold.range.isStart(startRow, startColumn))\n this.removeFold(startFold);\n if (endFold && !endFold.range.isEnd(endRow, endColumn))\n this.removeFold(endFold);\n var folds = this.getFoldsInRange(fold.range);\n if (folds.length > 0) {\n this.removeFolds(folds);\n if (!fold.collapseChildren) {\n folds.forEach(function (subFold) {\n fold.addSubFold(subFold);\n });\n }\n }\n for (var i = 0; i < foldData.length; i++) {\n var foldLine = foldData[i];\n if (endRow == foldLine.start.row) {\n foldLine.addFold(fold);\n added = true;\n break;\n }\n else if (startRow == foldLine.end.row) {\n foldLine.addFold(fold);\n added = true;\n if (!fold.sameRow) {\n var foldLineNext = foldData[i + 1];\n if (foldLineNext && foldLineNext.start.row == endRow) {\n foldLine.merge(foldLineNext);\n break;\n }\n }\n break;\n }\n else if (endRow <= foldLine.start.row) {\n break;\n }\n }\n if (!added)\n foldLine = this.$addFoldLine(new FoldLine(this.$foldData, fold));\n if (this.$useWrapMode)\n this.$updateWrapData(foldLine.start.row, foldLine.start.row);\n else\n this.$updateRowLengthCache(foldLine.start.row, foldLine.start.row);\n this.$modified = true;\n this._signal(\"changeFold\", { data: fold, action: \"add\" });\n return fold;\n };\n this.addFolds = function (folds) {\n folds.forEach(function (fold) {\n this.addFold(fold);\n }, this);\n };\n this.removeFold = function (fold) {\n var foldLine = fold.foldLine;\n var startRow = foldLine.start.row;\n var endRow = foldLine.end.row;\n var foldLines = this.$foldData;\n var folds = foldLine.folds;\n if (folds.length == 1) {\n foldLines.splice(foldLines.indexOf(foldLine), 1);\n }\n else \n if (foldLine.range.isEnd(fold.end.row, fold.end.column)) {\n folds.pop();\n foldLine.end.row = folds[folds.length - 1].end.row;\n foldLine.end.column = folds[folds.length - 1].end.column;\n }\n else \n if (foldLine.range.isStart(fold.start.row, fold.start.column)) {\n folds.shift();\n foldLine.start.row = folds[0].start.row;\n foldLine.start.column = folds[0].start.column;\n }\n else \n if (fold.sameRow) {\n folds.splice(folds.indexOf(fold), 1);\n }\n else \n {\n var newFoldLine = foldLine.split(fold.start.row, fold.start.column);\n folds = newFoldLine.folds;\n folds.shift();\n newFoldLine.start.row = folds[0].start.row;\n newFoldLine.start.column = folds[0].start.column;\n }\n if (!this.$updating) {\n if (this.$useWrapMode)\n this.$updateWrapData(startRow, endRow);\n else\n this.$updateRowLengthCache(startRow, endRow);\n }\n this.$modified = true;\n this._signal(\"changeFold\", { data: fold, action: \"remove\" });\n };\n this.removeFolds = function (folds) {\n var cloneFolds = [];\n for (var i = 0; i < folds.length; i++) {\n cloneFolds.push(folds[i]);\n }\n cloneFolds.forEach(function (fold) {\n this.removeFold(fold);\n }, this);\n this.$modified = true;\n };\n this.expandFold = function (fold) {\n this.removeFold(fold);\n fold.subFolds.forEach(function (subFold) {\n fold.restoreRange(subFold);\n this.addFold(subFold);\n }, this);\n if (fold.collapseChildren > 0) {\n this.foldAll(fold.start.row + 1, fold.end.row, fold.collapseChildren - 1);\n }\n fold.subFolds = [];\n };\n this.expandFolds = function (folds) {\n folds.forEach(function (fold) {\n this.expandFold(fold);\n }, this);\n };\n this.unfold = function (location, expandInner) {\n var range, folds;\n if (location == null) {\n range = new Range(0, 0, this.getLength(), 0);\n if (expandInner == null)\n expandInner = true;\n }\n else if (typeof location == \"number\") {\n range = new Range(location, 0, location, this.getLine(location).length);\n }\n else if (\"row\" in location) {\n range = Range.fromPoints(location, location);\n }\n else if (Array.isArray(location)) {\n folds = [];\n location.forEach(function (range) {\n folds = folds.concat(this.unfold(range));\n }, this);\n return folds;\n }\n else {\n range = location;\n }\n folds = this.getFoldsInRangeList(range);\n var outermostFolds = folds;\n while (folds.length == 1\n && Range.comparePoints(folds[0].start, range.start) < 0\n && Range.comparePoints(folds[0].end, range.end) > 0) {\n this.expandFolds(folds);\n folds = this.getFoldsInRangeList(range);\n }\n if (expandInner != false) {\n this.removeFolds(folds);\n }\n else {\n this.expandFolds(folds);\n }\n if (outermostFolds.length)\n return outermostFolds;\n };\n this.isRowFolded = function (docRow, startFoldRow) {\n return !!this.getFoldLine(docRow, startFoldRow);\n };\n this.getRowFoldEnd = function (docRow, startFoldRow) {\n var foldLine = this.getFoldLine(docRow, startFoldRow);\n return foldLine ? foldLine.end.row : docRow;\n };\n this.getRowFoldStart = function (docRow, startFoldRow) {\n var foldLine = this.getFoldLine(docRow, startFoldRow);\n return foldLine ? foldLine.start.row : docRow;\n };\n this.getFoldDisplayLine = function (foldLine, endRow, endColumn, startRow, startColumn) {\n if (startRow == null)\n startRow = foldLine.start.row;\n if (startColumn == null)\n startColumn = 0;\n if (endRow == null)\n endRow = foldLine.end.row;\n if (endColumn == null)\n endColumn = this.getLine(endRow).length;\n var doc = this.doc;\n var textLine = \"\";\n foldLine.walk(function (placeholder, row, column, lastColumn) {\n if (row < startRow)\n return;\n if (row == startRow) {\n if (column < startColumn)\n return;\n lastColumn = Math.max(startColumn, lastColumn);\n }\n if (placeholder != null) {\n textLine += placeholder;\n }\n else {\n textLine += doc.getLine(row).substring(lastColumn, column);\n }\n }, endRow, endColumn);\n return textLine;\n };\n this.getDisplayLine = function (row, endColumn, startRow, startColumn) {\n var foldLine = this.getFoldLine(row);\n if (!foldLine) {\n var line;\n line = this.doc.getLine(row);\n return line.substring(startColumn || 0, endColumn || line.length);\n }\n else {\n return this.getFoldDisplayLine(foldLine, row, endColumn, startRow, startColumn);\n }\n };\n this.$cloneFoldData = function () {\n var fd = [];\n fd = this.$foldData.map(function (foldLine) {\n var folds = foldLine.folds.map(function (fold) {\n return fold.clone();\n });\n return new FoldLine(fd, folds);\n });\n return fd;\n };\n this.toggleFold = function (tryToUnfold) {\n var selection = this.selection;\n var range = selection.getRange();\n var fold;\n var bracketPos;\n if (range.isEmpty()) {\n var cursor = range.start;\n fold = this.getFoldAt(cursor.row, cursor.column);\n if (fold) {\n this.expandFold(fold);\n return;\n }\n else if (bracketPos = this.findMatchingBracket(cursor)) {\n if (range.comparePoint(bracketPos) == 1) {\n range.end = bracketPos;\n }\n else {\n range.start = bracketPos;\n range.start.column++;\n range.end.column--;\n }\n }\n else if (bracketPos = this.findMatchingBracket({ row: cursor.row, column: cursor.column + 1 })) {\n if (range.comparePoint(bracketPos) == 1)\n range.end = bracketPos;\n else\n range.start = bracketPos;\n range.start.column++;\n }\n else {\n range = this.getCommentFoldRange(cursor.row, cursor.column) || range;\n }\n }\n else {\n var folds = this.getFoldsInRange(range);\n if (tryToUnfold && folds.length) {\n this.expandFolds(folds);\n return;\n }\n else if (folds.length == 1) {\n fold = folds[0];\n }\n }\n if (!fold)\n fold = this.getFoldAt(range.start.row, range.start.column);\n if (fold && fold.range.toString() == range.toString()) {\n this.expandFold(fold);\n return;\n }\n var placeholder = \"...\";\n if (!range.isMultiLine()) {\n placeholder = this.getTextRange(range);\n if (placeholder.length < 4)\n return;\n placeholder = placeholder.trim().substring(0, 2) + \"..\";\n }\n this.addFold(placeholder, range);\n };\n this.getCommentFoldRange = function (row, column, dir) {\n var iterator = new TokenIterator(this, row, column);\n var token = iterator.getCurrentToken();\n var type = token && token.type;\n if (token && /^comment|string/.test(type)) {\n type = type.match(/comment|string/)[0];\n if (type == \"comment\")\n type += \"|doc-start|\\\\.doc\";\n var re = new RegExp(type);\n var range = new Range();\n if (dir != 1) {\n do {\n token = iterator.stepBackward();\n } while (token && re.test(token.type) && !/^comment.end/.test(token.type));\n token = iterator.stepForward();\n }\n range.start.row = iterator.getCurrentTokenRow();\n range.start.column = iterator.getCurrentTokenColumn() + (/^comment.start/.test(token.type) ? token.value.length : 2);\n iterator = new TokenIterator(this, row, column);\n if (dir != -1) {\n var lastRow = -1;\n do {\n token = iterator.stepForward();\n if (lastRow == -1) {\n var state = this.getState(iterator.$row);\n if (!re.test(state))\n lastRow = iterator.$row;\n }\n else if (iterator.$row > lastRow) {\n break;\n }\n } while (token && re.test(token.type) && !/^comment.start/.test(token.type));\n token = iterator.stepBackward();\n }\n else\n token = iterator.getCurrentToken();\n range.end.row = iterator.getCurrentTokenRow();\n range.end.column = iterator.getCurrentTokenColumn();\n if (!/^comment.end/.test(token.type)) {\n range.end.column += token.value.length - 2;\n }\n return range;\n }\n };\n this.foldAll = function (startRow, endRow, depth, test) {\n if (depth == undefined)\n depth = 100000; // JSON.stringify doesn't hanle Infinity\n var foldWidgets = this.foldWidgets;\n if (!foldWidgets)\n return; // mode doesn't support folding\n endRow = endRow || this.getLength();\n startRow = startRow || 0;\n for (var row = startRow; row < endRow; row++) {\n if (foldWidgets[row] == null)\n foldWidgets[row] = this.getFoldWidget(row);\n if (foldWidgets[row] != \"start\")\n continue;\n if (test && !test(row))\n continue;\n var range = this.getFoldWidgetRange(row);\n if (range && range.isMultiLine()\n && range.end.row <= endRow\n && range.start.row >= startRow) {\n row = range.end.row;\n range.collapseChildren = depth;\n this.addFold(\"...\", range);\n }\n }\n };\n this.foldToLevel = function (level) {\n this.foldAll();\n while (level-- > 0)\n this.unfold(null, false);\n };\n this.foldAllComments = function () {\n var session = this;\n this.foldAll(null, null, null, function (row) {\n var tokens = session.getTokens(row);\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n if (token.type == \"text\" && /^\\s+$/.test(token.value))\n continue;\n if (/comment/.test(token.type))\n return true;\n return false;\n }\n });\n };\n this.$foldStyles = {\n \"manual\": 1,\n \"markbegin\": 1,\n \"markbeginend\": 1\n };\n this.$foldStyle = \"markbegin\";\n this.setFoldStyle = function (style) {\n if (!this.$foldStyles[style])\n throw new Error(\"invalid fold style: \" + style + \"[\" + Object.keys(this.$foldStyles).join(\", \") + \"]\");\n if (this.$foldStyle == style)\n return;\n this.$foldStyle = style;\n if (style == \"manual\")\n this.unfold();\n var mode = this.$foldMode;\n this.$setFolding(null);\n this.$setFolding(mode);\n };\n this.$setFolding = function (foldMode) {\n if (this.$foldMode == foldMode)\n return;\n this.$foldMode = foldMode;\n this.off('change', this.$updateFoldWidgets);\n this.off('tokenizerUpdate', this.$tokenizerUpdateFoldWidgets);\n this._signal(\"changeAnnotation\");\n if (!foldMode || this.$foldStyle == \"manual\") {\n this.foldWidgets = null;\n return;\n }\n this.foldWidgets = [];\n this.getFoldWidget = foldMode.getFoldWidget.bind(foldMode, this, this.$foldStyle);\n this.getFoldWidgetRange = foldMode.getFoldWidgetRange.bind(foldMode, this, this.$foldStyle);\n this.$updateFoldWidgets = this.updateFoldWidgets.bind(this);\n this.$tokenizerUpdateFoldWidgets = this.tokenizerUpdateFoldWidgets.bind(this);\n this.on('change', this.$updateFoldWidgets);\n this.on('tokenizerUpdate', this.$tokenizerUpdateFoldWidgets);\n };\n this.getParentFoldRangeData = function (row, ignoreCurrent) {\n var fw = this.foldWidgets;\n if (!fw || (ignoreCurrent && fw[row]))\n return {};\n var i = row - 1, firstRange;\n while (i >= 0) {\n var c = fw[i];\n if (c == null)\n c = fw[i] = this.getFoldWidget(i);\n if (c == \"start\") {\n var range = this.getFoldWidgetRange(i);\n if (!firstRange)\n firstRange = range;\n if (range && range.end.row >= row)\n break;\n }\n i--;\n }\n return {\n range: i !== -1 && range,\n firstRange: firstRange\n };\n };\n this.onFoldWidgetClick = function (row, e) {\n if (e instanceof MouseEvent)\n e = e.domEvent;\n var options = {\n children: e.shiftKey,\n all: e.ctrlKey || e.metaKey,\n siblings: e.altKey\n };\n var range = this.$toggleFoldWidget(row, options);\n if (!range) {\n var el = (e.target || e.srcElement);\n if (el && /ace_fold-widget/.test(el.className))\n el.className += \" ace_invalid\";\n }\n };\n this.$toggleFoldWidget = function (row, options) {\n if (!this.getFoldWidget)\n return;\n var type = this.getFoldWidget(row);\n var line = this.getLine(row);\n var dir = type === \"end\" ? -1 : 1;\n var fold = this.getFoldAt(row, dir === -1 ? 0 : line.length, dir);\n if (fold) {\n if (options.children || options.all)\n this.removeFold(fold);\n else\n this.expandFold(fold);\n return fold;\n }\n var range = this.getFoldWidgetRange(row, true);\n if (range && !range.isMultiLine()) {\n fold = this.getFoldAt(range.start.row, range.start.column, 1);\n if (fold && range.isEqual(fold.range)) {\n this.removeFold(fold);\n return fold;\n }\n }\n if (options.siblings) {\n var data = this.getParentFoldRangeData(row);\n if (data.range) {\n var startRow = data.range.start.row + 1;\n var endRow = data.range.end.row;\n }\n this.foldAll(startRow, endRow, options.all ? 10000 : 0);\n }\n else if (options.children) {\n endRow = range ? range.end.row : this.getLength();\n this.foldAll(row + 1, endRow, options.all ? 10000 : 0);\n }\n else if (range) {\n if (options.all)\n range.collapseChildren = 10000;\n this.addFold(\"...\", range);\n }\n return range;\n };\n this.toggleFoldWidget = function (toggleParent) {\n var row = this.selection.getCursor().row;\n row = this.getRowFoldStart(row);\n var range = this.$toggleFoldWidget(row, {});\n if (range)\n return;\n var data = this.getParentFoldRangeData(row, true);\n range = data.range || data.firstRange;\n if (range) {\n row = range.start.row;\n var fold = this.getFoldAt(row, this.getLine(row).length, 1);\n if (fold) {\n this.removeFold(fold);\n }\n else {\n this.addFold(\"...\", range);\n }\n }\n };\n this.updateFoldWidgets = function (delta) {\n var firstRow = delta.start.row;\n var len = delta.end.row - firstRow;\n if (len === 0) {\n this.foldWidgets[firstRow] = null;\n }\n else if (delta.action == 'remove') {\n this.foldWidgets.splice(firstRow, len + 1, null);\n }\n else {\n var args = Array(len + 1);\n args.unshift(firstRow, 1);\n this.foldWidgets.splice.apply(this.foldWidgets, args);\n }\n };\n this.tokenizerUpdateFoldWidgets = function (e) {\n var rows = e.data;\n if (rows.first != rows.last) {\n if (this.foldWidgets.length > rows.first)\n this.foldWidgets.splice(rows.first, this.foldWidgets.length);\n }\n };\n}\nexports.Folding = Folding;\n\n});\n\nace.define(\"ace/edit_session/bracket_match\",[\"require\",\"exports\",\"module\",\"ace/token_iterator\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar TokenIterator = require(\"../token_iterator\").TokenIterator;\nvar Range = require(\"../range\").Range;\nfunction BracketMatch() {\n this.findMatchingBracket = function (position, chr) {\n if (position.column == 0)\n return null;\n var charBeforeCursor = chr || this.getLine(position.row).charAt(position.column - 1);\n if (charBeforeCursor == \"\")\n return null;\n var match = charBeforeCursor.match(/([\\(\\[\\{])|([\\)\\]\\}])/);\n if (!match)\n return null;\n if (match[1])\n return this.$findClosingBracket(match[1], position);\n else\n return this.$findOpeningBracket(match[2], position);\n };\n this.getBracketRange = function (pos) {\n var line = this.getLine(pos.row);\n var before = true, range;\n var chr = line.charAt(pos.column - 1);\n var match = chr && chr.match(/([\\(\\[\\{])|([\\)\\]\\}])/);\n if (!match) {\n chr = line.charAt(pos.column);\n pos = { row: pos.row, column: pos.column + 1 };\n match = chr && chr.match(/([\\(\\[\\{])|([\\)\\]\\}])/);\n before = false;\n }\n if (!match)\n return null;\n if (match[1]) {\n var bracketPos = this.$findClosingBracket(match[1], pos);\n if (!bracketPos)\n return null;\n range = Range.fromPoints(pos, bracketPos);\n if (!before) {\n range.end.column++;\n range.start.column--;\n }\n range.cursor = range.end;\n }\n else {\n var bracketPos = this.$findOpeningBracket(match[2], pos);\n if (!bracketPos)\n return null;\n range = Range.fromPoints(bracketPos, pos);\n if (!before) {\n range.start.column++;\n range.end.column--;\n }\n range.cursor = range.start;\n }\n return range;\n };\n this.getMatchingBracketRanges = function (pos, isBackwards) {\n var line = this.getLine(pos.row);\n var bracketsRegExp = /([\\(\\[\\{])|([\\)\\]\\}])/;\n var chr = !isBackwards && line.charAt(pos.column - 1);\n var match = chr && chr.match(bracketsRegExp);\n if (!match) {\n chr = (isBackwards === undefined || isBackwards) && line.charAt(pos.column);\n pos = {\n row: pos.row,\n column: pos.column + 1\n };\n match = chr && chr.match(bracketsRegExp);\n }\n if (!match)\n return null;\n var startRange = new Range(pos.row, pos.column - 1, pos.row, pos.column);\n var bracketPos = match[1] ? this.$findClosingBracket(match[1], pos)\n : this.$findOpeningBracket(match[2], pos);\n if (!bracketPos)\n return [startRange];\n var endRange = new Range(bracketPos.row, bracketPos.column, bracketPos.row, bracketPos.column + 1);\n return [startRange, endRange];\n };\n this.$brackets = {\n \")\": \"(\",\n \"(\": \")\",\n \"]\": \"[\",\n \"[\": \"]\",\n \"{\": \"}\",\n \"}\": \"{\",\n \"<\": \">\",\n \">\": \"<\"\n };\n this.$findOpeningBracket = function (bracket, position, typeRe) {\n var openBracket = this.$brackets[bracket];\n var depth = 1;\n var iterator = new TokenIterator(this, position.row, position.column);\n var token = iterator.getCurrentToken();\n if (!token)\n token = iterator.stepForward();\n if (!token)\n return;\n if (!typeRe) {\n typeRe = new RegExp(\"(\\\\.?\" +\n token.type.replace(\".\", \"\\\\.\").replace(\"rparen\", \".paren\")\n .replace(/\\b(?:end)\\b/, \"(?:start|begin|end)\")\n .replace(/-close\\b/, \"-(close|open)\")\n + \")+\");\n }\n var valueIndex = position.column - iterator.getCurrentTokenColumn() - 2;\n var value = token.value;\n while (true) {\n while (valueIndex >= 0) {\n var chr = value.charAt(valueIndex);\n if (chr == openBracket) {\n depth -= 1;\n if (depth == 0) {\n return { row: iterator.getCurrentTokenRow(),\n column: valueIndex + iterator.getCurrentTokenColumn() };\n }\n }\n else if (chr == bracket) {\n depth += 1;\n }\n valueIndex -= 1;\n }\n do {\n token = iterator.stepBackward();\n } while (token && !typeRe.test(token.type));\n if (token == null)\n break;\n value = token.value;\n valueIndex = value.length - 1;\n }\n return null;\n };\n this.$findClosingBracket = function (bracket, position, typeRe) {\n var closingBracket = this.$brackets[bracket];\n var depth = 1;\n var iterator = new TokenIterator(this, position.row, position.column);\n var token = iterator.getCurrentToken();\n if (!token)\n token = iterator.stepForward();\n if (!token)\n return;\n if (!typeRe) {\n typeRe = new RegExp(\"(\\\\.?\" +\n token.type.replace(\".\", \"\\\\.\").replace(\"lparen\", \".paren\")\n .replace(/\\b(?:start|begin)\\b/, \"(?:start|begin|end)\")\n .replace(/-open\\b/, \"-(close|open)\")\n + \")+\");\n }\n var valueIndex = position.column - iterator.getCurrentTokenColumn();\n while (true) {\n var value = token.value;\n var valueLength = value.length;\n while (valueIndex < valueLength) {\n var chr = value.charAt(valueIndex);\n if (chr == closingBracket) {\n depth -= 1;\n if (depth == 0) {\n return { row: iterator.getCurrentTokenRow(),\n column: valueIndex + iterator.getCurrentTokenColumn() };\n }\n }\n else if (chr == bracket) {\n depth += 1;\n }\n valueIndex += 1;\n }\n do {\n token = iterator.stepForward();\n } while (token && !typeRe.test(token.type));\n if (token == null)\n break;\n valueIndex = 0;\n }\n return null;\n };\n this.getMatchingTags = function (pos) {\n var iterator = new TokenIterator(this, pos.row, pos.column);\n var token = this.$findTagName(iterator);\n if (!token)\n return;\n var prevToken = iterator.stepBackward();\n if (prevToken.value === '<') {\n return this.$findClosingTag(iterator, token);\n }\n else {\n return this.$findOpeningTag(iterator, token);\n }\n };\n this.$findTagName = function (iterator) {\n var token = iterator.getCurrentToken();\n var found = false;\n var backward = false;\n if (token && token.type.indexOf('tag-name') === -1) {\n do {\n if (backward)\n token = iterator.stepBackward();\n else\n token = iterator.stepForward();\n if (token) {\n if (token.value === \"/>\") {\n backward = true;\n }\n else if (token.type.indexOf('tag-name') !== -1) {\n found = true;\n }\n }\n } while (token && !found);\n }\n return token;\n };\n this.$findClosingTag = function (iterator, token) {\n var prevToken;\n var currentTag = token.value;\n var tag = token.value;\n var depth = 0;\n var openTagStart = new Range(iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn(), iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() + 1);\n token = iterator.stepForward();\n var openTagName = new Range(iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn(), iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() + token.value.length);\n var foundOpenTagEnd = false;\n do {\n prevToken = token;\n token = iterator.stepForward();\n if (token) {\n if (token.value === '>' && !foundOpenTagEnd) {\n var openTagEnd = new Range(iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn(), iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() + 1); //Range for `>`\n foundOpenTagEnd = true;\n }\n if (token.type.indexOf('tag-name') !== -1) {\n currentTag = token.value;\n if (tag === currentTag) {\n if (prevToken.value === '<') {\n depth++;\n }\n else if (prevToken.value === '') {\n var closeTagEnd = new Range(iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn(), iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() + 1); //Range for >\n }\n else {\n return;\n }\n }\n }\n }\n }\n else if (tag === currentTag && token.value === '/>') { // self-closing tag\n depth--;\n if (depth < 0) { //found self-closing tag end\n var closeTagStart = new Range(iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn(), iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() + 2);\n var closeTagName = closeTagStart;\n var closeTagEnd = closeTagName;\n var openTagEnd = new Range(openTagName.end.row, openTagName.end.column, openTagName.end.row, openTagName.end.column + 1);\n }\n }\n }\n } while (token && depth >= 0);\n if (openTagStart && openTagEnd && closeTagStart && closeTagEnd && openTagName && closeTagName) {\n return {\n openTag: new Range(openTagStart.start.row, openTagStart.start.column, openTagEnd.end.row, openTagEnd.end.column),\n closeTag: new Range(closeTagStart.start.row, closeTagStart.start.column, closeTagEnd.end.row, closeTagEnd.end.column),\n openTagName: openTagName,\n closeTagName: closeTagName\n };\n }\n };\n this.$findOpeningTag = function (iterator, token) {\n var prevToken = iterator.getCurrentToken();\n var tag = token.value;\n var depth = 0;\n var startRow = iterator.getCurrentTokenRow();\n var startColumn = iterator.getCurrentTokenColumn();\n var endColumn = startColumn + 2;\n var closeTagStart = new Range(startRow, startColumn, startRow, endColumn); //Range for \")\n return;\n var closeTagEnd = new Range(iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn(), iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() + 1); //Range for >\n iterator.stepBackward();\n iterator.stepBackward();\n do {\n token = prevToken;\n startRow = iterator.getCurrentTokenRow();\n startColumn = iterator.getCurrentTokenColumn();\n endColumn = startColumn + token.value.length;\n prevToken = iterator.stepBackward();\n if (token) {\n if (token.type.indexOf('tag-name') !== -1) {\n if (tag === token.value) {\n if (prevToken.value === '<') {\n depth++;\n if (depth > 0) { //found opening tag\n var openTagName = new Range(startRow, startColumn, startRow, endColumn);\n var openTagStart = new Range(iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn(), iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() + 1); //Range for <\n do {\n token = iterator.stepForward();\n } while (token && token.value !== '>');\n var openTagEnd = new Range(iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn(), iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() + 1); //Range for >\n }\n }\n else if (prevToken.value === '') { // self-closing tag\n var stepCount = 0;\n var tmpToken = prevToken;\n while (tmpToken) {\n if (tmpToken.type.indexOf('tag-name') !== -1 && tmpToken.value === tag) {\n depth--;\n break;\n }\n else if (tmpToken.value === '<') {\n break;\n }\n tmpToken = iterator.stepBackward();\n stepCount++;\n }\n for (var i = 0; i < stepCount; i++) {\n iterator.stepForward();\n }\n }\n }\n } while (prevToken && depth <= 0);\n if (openTagStart && openTagEnd && closeTagStart && closeTagEnd && openTagName && closeTagName) {\n return {\n openTag: new Range(openTagStart.start.row, openTagStart.start.column, openTagEnd.end.row, openTagEnd.end.column),\n closeTag: new Range(closeTagStart.start.row, closeTagStart.start.column, closeTagEnd.end.row, closeTagEnd.end.column),\n openTagName: openTagName,\n closeTagName: closeTagName\n };\n }\n };\n}\nexports.BracketMatch = BracketMatch;\n\n});\n\nace.define(\"ace/edit_session\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/bidihandler\",\"ace/config\",\"ace/lib/event_emitter\",\"ace/selection\",\"ace/mode/text\",\"ace/range\",\"ace/document\",\"ace/background_tokenizer\",\"ace/search_highlight\",\"ace/undomanager\",\"ace/edit_session/folding\",\"ace/edit_session/bracket_match\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"./lib/oop\");\nvar lang = require(\"./lib/lang\");\nvar BidiHandler = require(\"./bidihandler\").BidiHandler;\nvar config = require(\"./config\");\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar Selection = require(\"./selection\").Selection;\nvar TextMode = require(\"./mode/text\").Mode;\nvar Range = require(\"./range\").Range;\nvar Document = require(\"./document\").Document;\nvar BackgroundTokenizer = require(\"./background_tokenizer\").BackgroundTokenizer;\nvar SearchHighlight = require(\"./search_highlight\").SearchHighlight;\nvar UndoManager = require(\"./undomanager\").UndoManager;\nvar EditSession = /** @class */ (function () {\n function EditSession(text, mode) {\n this.$breakpoints = [];\n this.$decorations = [];\n this.$frontMarkers = {};\n this.$backMarkers = {};\n this.$markerId = 1;\n this.$undoSelect = true;\n this.$foldData = [];\n this.id = \"session\" + (++EditSession.$uid);\n this.$foldData.toString = function () {\n return this.join(\"\\n\");\n };\n this.bgTokenizer = new BackgroundTokenizer((new TextMode()).getTokenizer(), this);\n var _self = this;\n this.bgTokenizer.on(\"update\", function (e) {\n _self._signal(\"tokenizerUpdate\", e);\n });\n this.on(\"changeFold\", this.onChangeFold.bind(this));\n this.$onChange = this.onChange.bind(this);\n if (typeof text != \"object\" || !text.getLine)\n text = new Document(text);\n this.setDocument(text);\n this.selection = new Selection(this);\n this.$bidiHandler = new BidiHandler(this);\n config.resetOptions(this);\n this.setMode(mode);\n config._signal(\"session\", this);\n this.destroyed = false;\n }\n EditSession.prototype.setDocument = function (doc) {\n if (this.doc)\n this.doc.off(\"change\", this.$onChange);\n this.doc = doc;\n doc.on(\"change\", this.$onChange, true);\n this.bgTokenizer.setDocument(this.getDocument());\n this.resetCaches();\n };\n EditSession.prototype.getDocument = function () {\n return this.doc;\n };\n EditSession.prototype.$resetRowCache = function (docRow) {\n if (!docRow) {\n this.$docRowCache = [];\n this.$screenRowCache = [];\n return;\n }\n var l = this.$docRowCache.length;\n var i = this.$getRowCacheIndex(this.$docRowCache, docRow) + 1;\n if (l > i) {\n this.$docRowCache.splice(i, l);\n this.$screenRowCache.splice(i, l);\n }\n };\n EditSession.prototype.$getRowCacheIndex = function (cacheArray, val) {\n var low = 0;\n var hi = cacheArray.length - 1;\n while (low <= hi) {\n var mid = (low + hi) >> 1;\n var c = cacheArray[mid];\n if (val > c)\n low = mid + 1;\n else if (val < c)\n hi = mid - 1;\n else\n return mid;\n }\n return low - 1;\n };\n EditSession.prototype.resetCaches = function () {\n this.$modified = true;\n this.$wrapData = [];\n this.$rowLengthCache = [];\n this.$resetRowCache(0);\n if (!this.destroyed)\n this.bgTokenizer.start(0);\n };\n EditSession.prototype.onChangeFold = function (e) {\n var fold = e.data;\n this.$resetRowCache(fold.start.row);\n };\n EditSession.prototype.onChange = function (delta) {\n this.$modified = true;\n this.$bidiHandler.onChange(delta);\n this.$resetRowCache(delta.start.row);\n var removedFolds = this.$updateInternalDataOnChange(delta);\n if (!this.$fromUndo && this.$undoManager) {\n if (removedFolds && removedFolds.length) {\n this.$undoManager.add({\n action: \"removeFolds\",\n folds: removedFolds\n }, this.mergeUndoDeltas);\n this.mergeUndoDeltas = true;\n }\n this.$undoManager.add(delta, this.mergeUndoDeltas);\n this.mergeUndoDeltas = true;\n this.$informUndoManager.schedule();\n }\n this.bgTokenizer.$updateOnChange(delta);\n this._signal(\"change\", delta);\n };\n EditSession.prototype.setValue = function (text) {\n this.doc.setValue(text);\n this.selection.moveTo(0, 0);\n this.$resetRowCache(0);\n this.setUndoManager(this.$undoManager);\n this.getUndoManager().reset();\n };\n EditSession.fromJSON = function (session) {\n session = JSON.parse(session);\n var undoManager = new UndoManager();\n undoManager.$undoStack = session.history.undo;\n undoManager.$redoStack = session.history.redo;\n undoManager.mark = session.history.mark;\n undoManager.$rev = session.history.rev;\n var editSession = new EditSession(session.value);\n session.folds.forEach(function (fold) {\n editSession.addFold(\"...\", Range.fromPoints(fold.start, fold.end));\n });\n editSession.setAnnotations(session.annotations);\n editSession.setBreakpoints(session.breakpoints);\n editSession.setMode(session.mode);\n editSession.setScrollLeft(session.scrollLeft);\n editSession.setScrollTop(session.scrollTop);\n editSession.setUndoManager(undoManager);\n editSession.selection.fromJSON(session.selection);\n return editSession;\n };\n EditSession.prototype.toJSON = function () {\n return {\n annotations: this.$annotations,\n breakpoints: this.$breakpoints,\n folds: this.getAllFolds().map(function (fold) {\n return fold.range;\n }),\n history: this.getUndoManager(),\n mode: this.$mode.$id,\n scrollLeft: this.$scrollLeft,\n scrollTop: this.$scrollTop,\n selection: this.selection.toJSON(),\n value: this.doc.getValue()\n };\n };\n EditSession.prototype.toString = function () {\n return this.doc.getValue();\n };\n EditSession.prototype.getSelection = function () {\n return this.selection;\n };\n EditSession.prototype.getState = function (row) {\n return this.bgTokenizer.getState(row);\n };\n EditSession.prototype.getTokens = function (row) {\n return this.bgTokenizer.getTokens(row);\n };\n EditSession.prototype.getTokenAt = function (row, column) {\n var tokens = this.bgTokenizer.getTokens(row);\n var token, c = 0;\n if (column == null) {\n var i = tokens.length - 1;\n c = this.getLine(row).length;\n }\n else {\n for (var i = 0; i < tokens.length; i++) {\n c += tokens[i].value.length;\n if (c >= column)\n break;\n }\n }\n token = tokens[i];\n if (!token)\n return null;\n token.index = i;\n token.start = c - token.value.length;\n return token;\n };\n EditSession.prototype.setUndoManager = function (undoManager) {\n this.$undoManager = undoManager;\n if (this.$informUndoManager)\n this.$informUndoManager.cancel();\n if (undoManager) {\n var self = this;\n undoManager.addSession(this);\n this.$syncInformUndoManager = function () {\n self.$informUndoManager.cancel();\n self.mergeUndoDeltas = false;\n };\n this.$informUndoManager = lang.delayedCall(this.$syncInformUndoManager);\n }\n else {\n this.$syncInformUndoManager = function () { };\n }\n };\n EditSession.prototype.markUndoGroup = function () {\n if (this.$syncInformUndoManager)\n this.$syncInformUndoManager();\n };\n EditSession.prototype.getUndoManager = function () {\n return this.$undoManager || this.$defaultUndoManager;\n };\n EditSession.prototype.getTabString = function () {\n if (this.getUseSoftTabs()) {\n return lang.stringRepeat(\" \", this.getTabSize());\n }\n else {\n return \"\\t\";\n }\n };\n EditSession.prototype.setUseSoftTabs = function (val) {\n this.setOption(\"useSoftTabs\", val);\n };\n EditSession.prototype.getUseSoftTabs = function () {\n return this.$useSoftTabs && !this.$mode.$indentWithTabs;\n };\n EditSession.prototype.setTabSize = function (tabSize) {\n this.setOption(\"tabSize\", tabSize);\n };\n EditSession.prototype.getTabSize = function () {\n return this.$tabSize;\n };\n EditSession.prototype.isTabStop = function (position) {\n return this.$useSoftTabs && (position.column % this.$tabSize === 0);\n };\n EditSession.prototype.setNavigateWithinSoftTabs = function (navigateWithinSoftTabs) {\n this.setOption(\"navigateWithinSoftTabs\", navigateWithinSoftTabs);\n };\n EditSession.prototype.getNavigateWithinSoftTabs = function () {\n return this.$navigateWithinSoftTabs;\n };\n EditSession.prototype.setOverwrite = function (overwrite) {\n this.setOption(\"overwrite\", overwrite);\n };\n EditSession.prototype.getOverwrite = function () {\n return this.$overwrite;\n };\n EditSession.prototype.toggleOverwrite = function () {\n this.setOverwrite(!this.$overwrite);\n };\n EditSession.prototype.addGutterDecoration = function (row, className) {\n if (!this.$decorations[row])\n this.$decorations[row] = \"\";\n this.$decorations[row] += \" \" + className;\n this._signal(\"changeBreakpoint\", {});\n };\n EditSession.prototype.removeGutterDecoration = function (row, className) {\n this.$decorations[row] = (this.$decorations[row] || \"\").replace(\" \" + className, \"\");\n this._signal(\"changeBreakpoint\", {});\n };\n EditSession.prototype.getBreakpoints = function () {\n return this.$breakpoints;\n };\n EditSession.prototype.setBreakpoints = function (rows) {\n this.$breakpoints = [];\n for (var i = 0; i < rows.length; i++) {\n this.$breakpoints[rows[i]] = \"ace_breakpoint\";\n }\n this._signal(\"changeBreakpoint\", {});\n };\n EditSession.prototype.clearBreakpoints = function () {\n this.$breakpoints = [];\n this._signal(\"changeBreakpoint\", {});\n };\n EditSession.prototype.setBreakpoint = function (row, className) {\n if (className === undefined)\n className = \"ace_breakpoint\";\n if (className)\n this.$breakpoints[row] = className;\n else\n delete this.$breakpoints[row];\n this._signal(\"changeBreakpoint\", {});\n };\n EditSession.prototype.clearBreakpoint = function (row) {\n delete this.$breakpoints[row];\n this._signal(\"changeBreakpoint\", {});\n };\n EditSession.prototype.addMarker = function (range, clazz, type, inFront) {\n var id = this.$markerId++;\n var marker = {\n range: range,\n type: type || \"line\",\n renderer: typeof type == \"function\" ? type : null,\n clazz: clazz,\n inFront: !!inFront,\n id: id\n };\n if (inFront) {\n this.$frontMarkers[id] = marker;\n this._signal(\"changeFrontMarker\");\n }\n else {\n this.$backMarkers[id] = marker;\n this._signal(\"changeBackMarker\");\n }\n return id;\n };\n EditSession.prototype.addDynamicMarker = function (marker, inFront) {\n if (!marker.update)\n return;\n var id = this.$markerId++;\n marker.id = id;\n marker.inFront = !!inFront;\n if (inFront) {\n this.$frontMarkers[id] = marker;\n this._signal(\"changeFrontMarker\");\n }\n else {\n this.$backMarkers[id] = marker;\n this._signal(\"changeBackMarker\");\n }\n return marker;\n };\n EditSession.prototype.removeMarker = function (markerId) {\n var marker = this.$frontMarkers[markerId] || this.$backMarkers[markerId];\n if (!marker)\n return;\n var markers = marker.inFront ? this.$frontMarkers : this.$backMarkers;\n delete (markers[markerId]);\n this._signal(marker.inFront ? \"changeFrontMarker\" : \"changeBackMarker\");\n };\n EditSession.prototype.getMarkers = function (inFront) {\n return inFront ? this.$frontMarkers : this.$backMarkers;\n };\n EditSession.prototype.highlight = function (re) {\n if (!this.$searchHighlight) {\n var highlight = new SearchHighlight(null, \"ace_selected-word\", \"text\");\n this.$searchHighlight = this.addDynamicMarker(highlight);\n }\n this.$searchHighlight.setRegexp(re);\n };\n EditSession.prototype.highlightLines = function (startRow, endRow, clazz, inFront) {\n if (typeof endRow != \"number\") {\n clazz = endRow;\n endRow = startRow;\n }\n if (!clazz)\n clazz = \"ace_step\";\n var range = new Range(startRow, 0, endRow, Infinity);\n range.id = this.addMarker(range, clazz, \"fullLine\", inFront);\n return range;\n };\n EditSession.prototype.setAnnotations = function (annotations) {\n this.$annotations = annotations;\n this._signal(\"changeAnnotation\", {});\n };\n EditSession.prototype.getAnnotations = function () {\n return this.$annotations || [];\n };\n EditSession.prototype.clearAnnotations = function () {\n this.setAnnotations([]);\n };\n EditSession.prototype.$detectNewLine = function (text) {\n var match = text.match(/^.*?(\\r?\\n)/m);\n if (match) {\n this.$autoNewLine = match[1];\n }\n else {\n this.$autoNewLine = \"\\n\";\n }\n };\n EditSession.prototype.getWordRange = function (row, column) {\n var line = this.getLine(row);\n var inToken = false;\n if (column > 0)\n inToken = !!line.charAt(column - 1).match(this.tokenRe);\n if (!inToken)\n inToken = !!line.charAt(column).match(this.tokenRe);\n if (inToken)\n var re = this.tokenRe;\n else if (/^\\s+$/.test(line.slice(column - 1, column + 1)))\n var re = /\\s/;\n else\n var re = this.nonTokenRe;\n var start = column;\n if (start > 0) {\n do {\n start--;\n } while (start >= 0 && line.charAt(start).match(re));\n start++;\n }\n var end = column;\n while (end < line.length && line.charAt(end).match(re)) {\n end++;\n }\n return new Range(row, start, row, end);\n };\n EditSession.prototype.getAWordRange = function (row, column) {\n var wordRange = this.getWordRange(row, column);\n var line = this.getLine(wordRange.end.row);\n while (line.charAt(wordRange.end.column).match(/[ \\t]/)) {\n wordRange.end.column += 1;\n }\n return wordRange;\n };\n EditSession.prototype.setNewLineMode = function (newLineMode) {\n this.doc.setNewLineMode(newLineMode);\n };\n EditSession.prototype.getNewLineMode = function () {\n return this.doc.getNewLineMode();\n };\n EditSession.prototype.setUseWorker = function (useWorker) { this.setOption(\"useWorker\", useWorker); };\n EditSession.prototype.getUseWorker = function () { return this.$useWorker; };\n EditSession.prototype.onReloadTokenizer = function (e) {\n var rows = e.data;\n this.bgTokenizer.start(rows.first);\n this._signal(\"tokenizerUpdate\", e);\n };\n EditSession.prototype.setMode = function (mode, cb) {\n if (mode && typeof mode === \"object\") {\n if (mode.getTokenizer)\n return this.$onChangeMode(mode);\n var options = mode;\n var path = options.path;\n }\n else {\n path = mode || \"ace/mode/text\";\n }\n if (!this.$modes[\"ace/mode/text\"])\n this.$modes[\"ace/mode/text\"] = new TextMode();\n if (this.$modes[path] && !options) {\n this.$onChangeMode(this.$modes[path]);\n cb && cb();\n return;\n }\n this.$modeId = path;\n config.loadModule([\"mode\", path], function (m) {\n if (this.$modeId !== path)\n return cb && cb();\n if (this.$modes[path] && !options) {\n this.$onChangeMode(this.$modes[path]);\n }\n else if (m && m.Mode) {\n m = new m.Mode(options);\n if (!options) {\n this.$modes[path] = m;\n m.$id = path;\n }\n this.$onChangeMode(m);\n }\n cb && cb();\n }.bind(this));\n if (!this.$mode)\n this.$onChangeMode(this.$modes[\"ace/mode/text\"], true);\n };\n EditSession.prototype.$onChangeMode = function (mode, $isPlaceholder) {\n if (!$isPlaceholder)\n this.$modeId = mode.$id;\n if (this.$mode === mode)\n return;\n var oldMode = this.$mode;\n this.$mode = mode;\n this.$stopWorker();\n if (this.$useWorker)\n this.$startWorker();\n var tokenizer = mode.getTokenizer();\n if (tokenizer.on !== undefined) {\n var onReloadTokenizer = this.onReloadTokenizer.bind(this);\n tokenizer.on(\"update\", onReloadTokenizer);\n }\n this.bgTokenizer.setTokenizer(tokenizer);\n this.bgTokenizer.setDocument(this.getDocument());\n this.tokenRe = mode.tokenRe;\n this.nonTokenRe = mode.nonTokenRe;\n if (!$isPlaceholder) {\n if (mode.attachToSession)\n mode.attachToSession(this);\n this.$options.wrapMethod.set.call(this, this.$wrapMethod);\n this.$setFolding(mode.foldingRules);\n this.bgTokenizer.start(0);\n this._emit(\"changeMode\", { oldMode: oldMode, mode: mode });\n }\n };\n EditSession.prototype.$stopWorker = function () {\n if (this.$worker) {\n this.$worker.terminate();\n this.$worker = null;\n }\n };\n EditSession.prototype.$startWorker = function () {\n try {\n this.$worker = this.$mode.createWorker(this);\n }\n catch (e) {\n config.warn(\"Could not load worker\", e);\n this.$worker = null;\n }\n };\n EditSession.prototype.getMode = function () {\n return this.$mode;\n };\n EditSession.prototype.setScrollTop = function (scrollTop) {\n if (this.$scrollTop === scrollTop || isNaN(scrollTop))\n return;\n this.$scrollTop = scrollTop;\n this._signal(\"changeScrollTop\", scrollTop);\n };\n EditSession.prototype.getScrollTop = function () {\n return this.$scrollTop;\n };\n EditSession.prototype.setScrollLeft = function (scrollLeft) {\n if (this.$scrollLeft === scrollLeft || isNaN(scrollLeft))\n return;\n this.$scrollLeft = scrollLeft;\n this._signal(\"changeScrollLeft\", scrollLeft);\n };\n EditSession.prototype.getScrollLeft = function () {\n return this.$scrollLeft;\n };\n EditSession.prototype.getScreenWidth = function () {\n this.$computeWidth();\n if (this.lineWidgets)\n return Math.max(this.getLineWidgetMaxWidth(), this.screenWidth);\n return this.screenWidth;\n };\n EditSession.prototype.getLineWidgetMaxWidth = function () {\n if (this.lineWidgetsWidth != null)\n return this.lineWidgetsWidth;\n var width = 0;\n this.lineWidgets.forEach(function (w) {\n if (w && w.screenWidth > width)\n width = w.screenWidth;\n });\n return this.lineWidgetWidth = width;\n };\n EditSession.prototype.$computeWidth = function (force) {\n if (this.$modified || force) {\n this.$modified = false;\n if (this.$useWrapMode)\n return this.screenWidth = this.$wrapLimit;\n var lines = this.doc.getAllLines();\n var cache = this.$rowLengthCache;\n var longestScreenLine = 0;\n var foldIndex = 0;\n var foldLine = this.$foldData[foldIndex];\n var foldStart = foldLine ? foldLine.start.row : Infinity;\n var len = lines.length;\n for (var i = 0; i < len; i++) {\n if (i > foldStart) {\n i = foldLine.end.row + 1;\n if (i >= len)\n break;\n foldLine = this.$foldData[foldIndex++];\n foldStart = foldLine ? foldLine.start.row : Infinity;\n }\n if (cache[i] == null)\n cache[i] = this.$getStringScreenWidth(lines[i])[0];\n if (cache[i] > longestScreenLine)\n longestScreenLine = cache[i];\n }\n this.screenWidth = longestScreenLine;\n }\n };\n EditSession.prototype.getLine = function (row) {\n return this.doc.getLine(row);\n };\n EditSession.prototype.getLines = function (firstRow, lastRow) {\n return this.doc.getLines(firstRow, lastRow);\n };\n EditSession.prototype.getLength = function () {\n return this.doc.getLength();\n };\n EditSession.prototype.getTextRange = function (range) {\n return this.doc.getTextRange(range || this.selection.getRange());\n };\n EditSession.prototype.insert = function (position, text) {\n return this.doc.insert(position, text);\n };\n EditSession.prototype.remove = function (range) {\n return this.doc.remove(range);\n };\n EditSession.prototype.removeFullLines = function (firstRow, lastRow) {\n return this.doc.removeFullLines(firstRow, lastRow);\n };\n EditSession.prototype.undoChanges = function (deltas, dontSelect) {\n if (!deltas.length)\n return;\n this.$fromUndo = true;\n for (var i = deltas.length - 1; i != -1; i--) {\n var delta = deltas[i];\n if (delta.action == \"insert\" || delta.action == \"remove\") {\n this.doc.revertDelta(delta);\n }\n else if (delta.folds) {\n this.addFolds(delta.folds);\n }\n }\n if (!dontSelect && this.$undoSelect) {\n if (deltas.selectionBefore)\n this.selection.fromJSON(deltas.selectionBefore);\n else\n this.selection.setRange(this.$getUndoSelection(deltas, true));\n }\n this.$fromUndo = false;\n };\n EditSession.prototype.redoChanges = function (deltas, dontSelect) {\n if (!deltas.length)\n return;\n this.$fromUndo = true;\n for (var i = 0; i < deltas.length; i++) {\n var delta = deltas[i];\n if (delta.action == \"insert\" || delta.action == \"remove\") {\n this.doc.$safeApplyDelta(delta);\n }\n }\n if (!dontSelect && this.$undoSelect) {\n if (deltas.selectionAfter)\n this.selection.fromJSON(deltas.selectionAfter);\n else\n this.selection.setRange(this.$getUndoSelection(deltas, false));\n }\n this.$fromUndo = false;\n };\n EditSession.prototype.setUndoSelect = function (enable) {\n this.$undoSelect = enable;\n };\n EditSession.prototype.$getUndoSelection = function (deltas, isUndo) {\n function isInsert(delta) {\n return isUndo ? delta.action !== \"insert\" : delta.action === \"insert\";\n }\n var range, point;\n for (var i = 0; i < deltas.length; i++) {\n var delta = deltas[i];\n if (!delta.start)\n continue; // skip folds\n if (!range) {\n if (isInsert(delta)) {\n range = Range.fromPoints(delta.start, delta.end);\n }\n else {\n range = Range.fromPoints(delta.start, delta.start);\n }\n continue;\n }\n if (isInsert(delta)) {\n point = delta.start;\n if (range.compare(point.row, point.column) == -1) {\n range.setStart(point);\n }\n point = delta.end;\n if (range.compare(point.row, point.column) == 1) {\n range.setEnd(point);\n }\n }\n else {\n point = delta.start;\n if (range.compare(point.row, point.column) == -1) {\n range = Range.fromPoints(delta.start, delta.start);\n }\n }\n }\n return range;\n };\n EditSession.prototype.replace = function (range, text) {\n return this.doc.replace(range, text);\n };\n EditSession.prototype.moveText = function (fromRange, toPosition, copy) {\n var text = this.getTextRange(fromRange);\n var folds = this.getFoldsInRange(fromRange);\n var toRange = Range.fromPoints(toPosition, toPosition);\n if (!copy) {\n this.remove(fromRange);\n var rowDiff = fromRange.start.row - fromRange.end.row;\n var collDiff = rowDiff ? -fromRange.end.column : fromRange.start.column - fromRange.end.column;\n if (collDiff) {\n if (toRange.start.row == fromRange.end.row && toRange.start.column > fromRange.end.column)\n toRange.start.column += collDiff;\n if (toRange.end.row == fromRange.end.row && toRange.end.column > fromRange.end.column)\n toRange.end.column += collDiff;\n }\n if (rowDiff && toRange.start.row >= fromRange.end.row) {\n toRange.start.row += rowDiff;\n toRange.end.row += rowDiff;\n }\n }\n toRange.end = this.insert(toRange.start, text);\n if (folds.length) {\n var oldStart = fromRange.start;\n var newStart = toRange.start;\n var rowDiff = newStart.row - oldStart.row;\n var collDiff = newStart.column - oldStart.column;\n this.addFolds(folds.map(function (x) {\n x = x.clone();\n if (x.start.row == oldStart.row)\n x.start.column += collDiff;\n if (x.end.row == oldStart.row)\n x.end.column += collDiff;\n x.start.row += rowDiff;\n x.end.row += rowDiff;\n return x;\n }));\n }\n return toRange;\n };\n EditSession.prototype.indentRows = function (startRow, endRow, indentString) {\n indentString = indentString.replace(/\\t/g, this.getTabString());\n for (var row = startRow; row <= endRow; row++)\n this.doc.insertInLine({ row: row, column: 0 }, indentString);\n };\n EditSession.prototype.outdentRows = function (range) {\n var rowRange = range.collapseRows();\n var deleteRange = new Range(0, 0, 0, 0);\n var size = this.getTabSize();\n for (var i = rowRange.start.row; i <= rowRange.end.row; ++i) {\n var line = this.getLine(i);\n deleteRange.start.row = i;\n deleteRange.end.row = i;\n for (var j = 0; j < size; ++j)\n if (line.charAt(j) != ' ')\n break;\n if (j < size && line.charAt(j) == '\\t') {\n deleteRange.start.column = j;\n deleteRange.end.column = j + 1;\n }\n else {\n deleteRange.start.column = 0;\n deleteRange.end.column = j;\n }\n this.remove(deleteRange);\n }\n };\n EditSession.prototype.$moveLines = function (firstRow, lastRow, dir) {\n firstRow = this.getRowFoldStart(firstRow);\n lastRow = this.getRowFoldEnd(lastRow);\n if (dir < 0) {\n var row = this.getRowFoldStart(firstRow + dir);\n if (row < 0)\n return 0;\n var diff = row - firstRow;\n }\n else if (dir > 0) {\n var row = this.getRowFoldEnd(lastRow + dir);\n if (row > this.doc.getLength() - 1)\n return 0;\n var diff = row - lastRow;\n }\n else {\n firstRow = this.$clipRowToDocument(firstRow);\n lastRow = this.$clipRowToDocument(lastRow);\n var diff = lastRow - firstRow + 1;\n }\n var range = new Range(firstRow, 0, lastRow, Number.MAX_VALUE);\n var folds = this.getFoldsInRange(range).map(function (x) {\n x = x.clone();\n x.start.row += diff;\n x.end.row += diff;\n return x;\n });\n var lines = dir == 0\n ? this.doc.getLines(firstRow, lastRow)\n : this.doc.removeFullLines(firstRow, lastRow);\n this.doc.insertFullLines(firstRow + diff, lines);\n folds.length && this.addFolds(folds);\n return diff;\n };\n EditSession.prototype.moveLinesUp = function (firstRow, lastRow) {\n return this.$moveLines(firstRow, lastRow, -1);\n };\n EditSession.prototype.moveLinesDown = function (firstRow, lastRow) {\n return this.$moveLines(firstRow, lastRow, 1);\n };\n EditSession.prototype.duplicateLines = function (firstRow, lastRow) {\n return this.$moveLines(firstRow, lastRow, 0);\n };\n EditSession.prototype.$clipRowToDocument = function (row) {\n return Math.max(0, Math.min(row, this.doc.getLength() - 1));\n };\n EditSession.prototype.$clipColumnToRow = function (row, column) {\n if (column < 0)\n return 0;\n return Math.min(this.doc.getLine(row).length, column);\n };\n EditSession.prototype.$clipPositionToDocument = function (row, column) {\n column = Math.max(0, column);\n if (row < 0) {\n row = 0;\n column = 0;\n }\n else {\n var len = this.doc.getLength();\n if (row >= len) {\n row = len - 1;\n column = this.doc.getLine(len - 1).length;\n }\n else {\n column = Math.min(this.doc.getLine(row).length, column);\n }\n }\n return {\n row: row,\n column: column\n };\n };\n EditSession.prototype.$clipRangeToDocument = function (range) {\n if (range.start.row < 0) {\n range.start.row = 0;\n range.start.column = 0;\n }\n else {\n range.start.column = this.$clipColumnToRow(range.start.row, range.start.column);\n }\n var len = this.doc.getLength() - 1;\n if (range.end.row > len) {\n range.end.row = len;\n range.end.column = this.doc.getLine(len).length;\n }\n else {\n range.end.column = this.$clipColumnToRow(range.end.row, range.end.column);\n }\n return range;\n };\n EditSession.prototype.setUseWrapMode = function (useWrapMode) {\n if (useWrapMode != this.$useWrapMode) {\n this.$useWrapMode = useWrapMode;\n this.$modified = true;\n this.$resetRowCache(0);\n if (useWrapMode) {\n var len = this.getLength();\n this.$wrapData = Array(len);\n this.$updateWrapData(0, len - 1);\n }\n this._signal(\"changeWrapMode\");\n }\n };\n EditSession.prototype.getUseWrapMode = function () {\n return this.$useWrapMode;\n };\n EditSession.prototype.setWrapLimitRange = function (min, max) {\n if (this.$wrapLimitRange.min !== min || this.$wrapLimitRange.max !== max) {\n this.$wrapLimitRange = { min: min, max: max };\n this.$modified = true;\n this.$bidiHandler.markAsDirty();\n if (this.$useWrapMode)\n this._signal(\"changeWrapMode\");\n }\n };\n EditSession.prototype.adjustWrapLimit = function (desiredLimit, $printMargin) {\n var limits = this.$wrapLimitRange;\n if (limits.max < 0)\n limits = { min: $printMargin, max: $printMargin };\n var wrapLimit = this.$constrainWrapLimit(desiredLimit, limits.min, limits.max);\n if (wrapLimit != this.$wrapLimit && wrapLimit > 1) {\n this.$wrapLimit = wrapLimit;\n this.$modified = true;\n if (this.$useWrapMode) {\n this.$updateWrapData(0, this.getLength() - 1);\n this.$resetRowCache(0);\n this._signal(\"changeWrapLimit\");\n }\n return true;\n }\n return false;\n };\n EditSession.prototype.$constrainWrapLimit = function (wrapLimit, min, max) {\n if (min)\n wrapLimit = Math.max(min, wrapLimit);\n if (max)\n wrapLimit = Math.min(max, wrapLimit);\n return wrapLimit;\n };\n EditSession.prototype.getWrapLimit = function () {\n return this.$wrapLimit;\n };\n EditSession.prototype.setWrapLimit = function (limit) {\n this.setWrapLimitRange(limit, limit);\n };\n EditSession.prototype.getWrapLimitRange = function () {\n return {\n min: this.$wrapLimitRange.min,\n max: this.$wrapLimitRange.max\n };\n };\n EditSession.prototype.$updateInternalDataOnChange = function (delta) {\n var useWrapMode = this.$useWrapMode;\n var action = delta.action;\n var start = delta.start;\n var end = delta.end;\n var firstRow = start.row;\n var lastRow = end.row;\n var len = lastRow - firstRow;\n var removedFolds = null;\n this.$updating = true;\n if (len != 0) {\n if (action === \"remove\") {\n this[useWrapMode ? \"$wrapData\" : \"$rowLengthCache\"].splice(firstRow, len);\n var foldLines = this.$foldData;\n removedFolds = this.getFoldsInRange(delta);\n this.removeFolds(removedFolds);\n var foldLine = this.getFoldLine(end.row);\n var idx = 0;\n if (foldLine) {\n foldLine.addRemoveChars(end.row, end.column, start.column - end.column);\n foldLine.shiftRow(-len);\n var foldLineBefore = this.getFoldLine(firstRow);\n if (foldLineBefore && foldLineBefore !== foldLine) {\n foldLineBefore.merge(foldLine);\n foldLine = foldLineBefore;\n }\n idx = foldLines.indexOf(foldLine) + 1;\n }\n for (idx; idx < foldLines.length; idx++) {\n var foldLine = foldLines[idx];\n if (foldLine.start.row >= end.row) {\n foldLine.shiftRow(-len);\n }\n }\n lastRow = firstRow;\n }\n else {\n var args = Array(len);\n args.unshift(firstRow, 0);\n var arr = useWrapMode ? this.$wrapData : this.$rowLengthCache;\n arr.splice.apply(arr, args);\n var foldLines = this.$foldData;\n var foldLine = this.getFoldLine(firstRow);\n var idx = 0;\n if (foldLine) {\n var cmp = foldLine.range.compareInside(start.row, start.column);\n if (cmp == 0) {\n foldLine = foldLine.split(start.row, start.column);\n if (foldLine) {\n foldLine.shiftRow(len);\n foldLine.addRemoveChars(lastRow, 0, end.column - start.column);\n }\n }\n else \n if (cmp == -1) {\n foldLine.addRemoveChars(firstRow, 0, end.column - start.column);\n foldLine.shiftRow(len);\n }\n idx = foldLines.indexOf(foldLine) + 1;\n }\n for (idx; idx < foldLines.length; idx++) {\n var foldLine = foldLines[idx];\n if (foldLine.start.row >= firstRow) {\n foldLine.shiftRow(len);\n }\n }\n }\n }\n else {\n len = Math.abs(delta.start.column - delta.end.column);\n if (action === \"remove\") {\n removedFolds = this.getFoldsInRange(delta);\n this.removeFolds(removedFolds);\n len = -len;\n }\n var foldLine = this.getFoldLine(firstRow);\n if (foldLine) {\n foldLine.addRemoveChars(firstRow, start.column, len);\n }\n }\n if (useWrapMode && this.$wrapData.length != this.doc.getLength()) {\n console.error(\"doc.getLength() and $wrapData.length have to be the same!\");\n }\n this.$updating = false;\n if (useWrapMode)\n this.$updateWrapData(firstRow, lastRow);\n else\n this.$updateRowLengthCache(firstRow, lastRow);\n return removedFolds;\n };\n EditSession.prototype.$updateRowLengthCache = function (firstRow, lastRow, b) {\n this.$rowLengthCache[firstRow] = null;\n this.$rowLengthCache[lastRow] = null;\n };\n EditSession.prototype.$updateWrapData = function (firstRow, lastRow) {\n var lines = this.doc.getAllLines();\n var tabSize = this.getTabSize();\n var wrapData = this.$wrapData;\n var wrapLimit = this.$wrapLimit;\n var tokens;\n var foldLine;\n var row = firstRow;\n lastRow = Math.min(lastRow, lines.length - 1);\n while (row <= lastRow) {\n foldLine = this.getFoldLine(row, foldLine);\n if (!foldLine) {\n tokens = this.$getDisplayTokens(lines[row]);\n wrapData[row] = this.$computeWrapSplits(tokens, wrapLimit, tabSize);\n row++;\n }\n else {\n tokens = [];\n foldLine.walk(function (placeholder, row, column, lastColumn) {\n var walkTokens;\n if (placeholder != null) {\n walkTokens = this.$getDisplayTokens(placeholder, tokens.length);\n walkTokens[0] = PLACEHOLDER_START;\n for (var i = 1; i < walkTokens.length; i++) {\n walkTokens[i] = PLACEHOLDER_BODY;\n }\n }\n else {\n walkTokens = this.$getDisplayTokens(lines[row].substring(lastColumn, column), tokens.length);\n }\n tokens = tokens.concat(walkTokens);\n }.bind(this), foldLine.end.row, lines[foldLine.end.row].length + 1);\n wrapData[foldLine.start.row] = this.$computeWrapSplits(tokens, wrapLimit, tabSize);\n row = foldLine.end.row + 1;\n }\n }\n };\n EditSession.prototype.$computeWrapSplits = function (tokens, wrapLimit, tabSize) {\n if (tokens.length == 0) {\n return [];\n }\n var splits = [];\n var displayLength = tokens.length;\n var lastSplit = 0, lastDocSplit = 0;\n var isCode = this.$wrapAsCode;\n var indentedSoftWrap = this.$indentedSoftWrap;\n var maxIndent = wrapLimit <= Math.max(2 * tabSize, 8)\n || indentedSoftWrap === false ? 0 : Math.floor(wrapLimit / 2);\n function getWrapIndent() {\n var indentation = 0;\n if (maxIndent === 0)\n return indentation;\n if (indentedSoftWrap) {\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n if (token == SPACE)\n indentation += 1;\n else if (token == TAB)\n indentation += tabSize;\n else if (token == TAB_SPACE)\n continue;\n else\n break;\n }\n }\n if (isCode && indentedSoftWrap !== false)\n indentation += tabSize;\n return Math.min(indentation, maxIndent);\n }\n function addSplit(screenPos) {\n var len = screenPos - lastSplit;\n for (var i = lastSplit; i < screenPos; i++) {\n var ch = tokens[i];\n if (ch === 12 || ch === 2)\n len -= 1;\n }\n if (!splits.length) {\n indent = getWrapIndent();\n splits.indent = indent;\n }\n lastDocSplit += len;\n splits.push(lastDocSplit);\n lastSplit = screenPos;\n }\n var indent = 0;\n while (displayLength - lastSplit > wrapLimit - indent) {\n var split = lastSplit + wrapLimit - indent;\n if (tokens[split - 1] >= SPACE && tokens[split] >= SPACE) {\n addSplit(split);\n continue;\n }\n if (tokens[split] == PLACEHOLDER_START || tokens[split] == PLACEHOLDER_BODY) {\n for (split; split != lastSplit - 1; split--) {\n if (tokens[split] == PLACEHOLDER_START) {\n break;\n }\n }\n if (split > lastSplit) {\n addSplit(split);\n continue;\n }\n split = lastSplit + wrapLimit;\n for (split; split < tokens.length; split++) {\n if (tokens[split] != PLACEHOLDER_BODY) {\n break;\n }\n }\n if (split == tokens.length) {\n break; // Breaks the while-loop.\n }\n addSplit(split);\n continue;\n }\n var minSplit = Math.max(split - (wrapLimit - (wrapLimit >> 2)), lastSplit - 1);\n while (split > minSplit && tokens[split] < PLACEHOLDER_START) {\n split--;\n }\n if (isCode) {\n while (split > minSplit && tokens[split] < PLACEHOLDER_START) {\n split--;\n }\n while (split > minSplit && tokens[split] == PUNCTUATION) {\n split--;\n }\n }\n else {\n while (split > minSplit && tokens[split] < SPACE) {\n split--;\n }\n }\n if (split > minSplit) {\n addSplit(++split);\n continue;\n }\n split = lastSplit + wrapLimit;\n if (tokens[split] == CHAR_EXT)\n split--;\n addSplit(split - indent);\n }\n return splits;\n };\n EditSession.prototype.$getDisplayTokens = function (str, offset) {\n var arr = [];\n var tabSize;\n offset = offset || 0;\n for (var i = 0; i < str.length; i++) {\n var c = str.charCodeAt(i);\n if (c == 9) {\n tabSize = this.getScreenTabSize(arr.length + offset);\n arr.push(TAB);\n for (var n = 1; n < tabSize; n++) {\n arr.push(TAB_SPACE);\n }\n }\n else if (c == 32) {\n arr.push(SPACE);\n }\n else if ((c > 39 && c < 48) || (c > 57 && c < 64)) {\n arr.push(PUNCTUATION);\n }\n else if (c >= 0x1100 && isFullWidth(c)) {\n arr.push(CHAR, CHAR_EXT);\n }\n else {\n arr.push(CHAR);\n }\n }\n return arr;\n };\n EditSession.prototype.$getStringScreenWidth = function (str, maxScreenColumn, screenColumn) {\n if (maxScreenColumn == 0)\n return [0, 0];\n if (maxScreenColumn == null)\n maxScreenColumn = Infinity;\n screenColumn = screenColumn || 0;\n var c, column;\n for (column = 0; column < str.length; column++) {\n c = str.charCodeAt(column);\n if (c == 9) {\n screenColumn += this.getScreenTabSize(screenColumn);\n }\n else if (c >= 0x1100 && isFullWidth(c)) {\n screenColumn += 2;\n }\n else {\n screenColumn += 1;\n }\n if (screenColumn > maxScreenColumn) {\n break;\n }\n }\n return [screenColumn, column];\n };\n EditSession.prototype.getRowLength = function (row) {\n var h = 1;\n if (this.lineWidgets)\n h += this.lineWidgets[row] && this.lineWidgets[row].rowCount || 0;\n if (!this.$useWrapMode || !this.$wrapData[row])\n return h;\n else\n return this.$wrapData[row].length + h;\n };\n EditSession.prototype.getRowLineCount = function (row) {\n if (!this.$useWrapMode || !this.$wrapData[row]) {\n return 1;\n }\n else {\n return this.$wrapData[row].length + 1;\n }\n };\n EditSession.prototype.getRowWrapIndent = function (screenRow) {\n if (this.$useWrapMode) {\n var pos = this.screenToDocumentPosition(screenRow, Number.MAX_VALUE);\n var splits = this.$wrapData[pos.row];\n return splits.length && splits[0] < pos.column ? splits.indent : 0;\n }\n else {\n return 0;\n }\n };\n EditSession.prototype.getScreenLastRowColumn = function (screenRow) {\n var pos = this.screenToDocumentPosition(screenRow, Number.MAX_VALUE);\n return this.documentToScreenColumn(pos.row, pos.column);\n };\n EditSession.prototype.getDocumentLastRowColumn = function (docRow, docColumn) {\n var screenRow = this.documentToScreenRow(docRow, docColumn);\n return this.getScreenLastRowColumn(screenRow);\n };\n EditSession.prototype.getDocumentLastRowColumnPosition = function (docRow, docColumn) {\n var screenRow = this.documentToScreenRow(docRow, docColumn);\n return this.screenToDocumentPosition(screenRow, Number.MAX_VALUE / 10);\n };\n EditSession.prototype.getRowSplitData = function (row) {\n if (!this.$useWrapMode) {\n return undefined;\n }\n else {\n return this.$wrapData[row];\n }\n };\n EditSession.prototype.getScreenTabSize = function (screenColumn) {\n return this.$tabSize - (screenColumn % this.$tabSize | 0);\n };\n EditSession.prototype.screenToDocumentRow = function (screenRow, screenColumn) {\n return this.screenToDocumentPosition(screenRow, screenColumn).row;\n };\n EditSession.prototype.screenToDocumentColumn = function (screenRow, screenColumn) {\n return this.screenToDocumentPosition(screenRow, screenColumn).column;\n };\n EditSession.prototype.screenToDocumentPosition = function (screenRow, screenColumn, offsetX) {\n if (screenRow < 0)\n return { row: 0, column: 0 };\n var line;\n var docRow = 0;\n var docColumn = 0;\n var column;\n var row = 0;\n var rowLength = 0;\n var rowCache = this.$screenRowCache;\n var i = this.$getRowCacheIndex(rowCache, screenRow);\n var l = rowCache.length;\n if (l && i >= 0) {\n var row = rowCache[i];\n var docRow = this.$docRowCache[i];\n var doCache = screenRow > rowCache[l - 1];\n }\n else {\n var doCache = !l;\n }\n var maxRow = this.getLength() - 1;\n var foldLine = this.getNextFoldLine(docRow);\n var foldStart = foldLine ? foldLine.start.row : Infinity;\n while (row <= screenRow) {\n rowLength = this.getRowLength(docRow);\n if (row + rowLength > screenRow || docRow >= maxRow) {\n break;\n }\n else {\n row += rowLength;\n docRow++;\n if (docRow > foldStart) {\n docRow = foldLine.end.row + 1;\n foldLine = this.getNextFoldLine(docRow, foldLine);\n foldStart = foldLine ? foldLine.start.row : Infinity;\n }\n }\n if (doCache) {\n this.$docRowCache.push(docRow);\n this.$screenRowCache.push(row);\n }\n }\n if (foldLine && foldLine.start.row <= docRow) {\n line = this.getFoldDisplayLine(foldLine);\n docRow = foldLine.start.row;\n }\n else if (row + rowLength <= screenRow || docRow > maxRow) {\n return {\n row: maxRow,\n column: this.getLine(maxRow).length\n };\n }\n else {\n line = this.getLine(docRow);\n foldLine = null;\n }\n var wrapIndent = 0, splitIndex = Math.floor(screenRow - row);\n if (this.$useWrapMode) {\n var splits = this.$wrapData[docRow];\n if (splits) {\n column = splits[splitIndex];\n if (splitIndex > 0 && splits.length) {\n wrapIndent = splits.indent;\n docColumn = splits[splitIndex - 1] || splits[splits.length - 1];\n line = line.substring(docColumn);\n }\n }\n }\n if (offsetX !== undefined && this.$bidiHandler.isBidiRow(row + splitIndex, docRow, splitIndex))\n screenColumn = this.$bidiHandler.offsetToCol(offsetX);\n docColumn += this.$getStringScreenWidth(line, screenColumn - wrapIndent)[1];\n if (this.$useWrapMode && docColumn >= column)\n docColumn = column - 1;\n if (foldLine)\n return foldLine.idxToPosition(docColumn);\n return { row: docRow, column: docColumn };\n };\n EditSession.prototype.documentToScreenPosition = function (docRow, docColumn) {\n if (typeof docColumn === \"undefined\")\n var pos = this.$clipPositionToDocument(docRow.row, docRow.column);\n else\n pos = this.$clipPositionToDocument(docRow, docColumn);\n docRow = pos.row;\n docColumn = pos.column;\n var screenRow = 0;\n var foldStartRow = null;\n var fold = null;\n fold = this.getFoldAt(docRow, docColumn, 1);\n if (fold) {\n docRow = fold.start.row;\n docColumn = fold.start.column;\n }\n var rowEnd, row = 0;\n var rowCache = this.$docRowCache;\n var i = this.$getRowCacheIndex(rowCache, docRow);\n var l = rowCache.length;\n if (l && i >= 0) {\n var row = rowCache[i];\n var screenRow = this.$screenRowCache[i];\n var doCache = docRow > rowCache[l - 1];\n }\n else {\n var doCache = !l;\n }\n var foldLine = this.getNextFoldLine(row);\n var foldStart = foldLine ? foldLine.start.row : Infinity;\n while (row < docRow) {\n if (row >= foldStart) {\n rowEnd = foldLine.end.row + 1;\n if (rowEnd > docRow)\n break;\n foldLine = this.getNextFoldLine(rowEnd, foldLine);\n foldStart = foldLine ? foldLine.start.row : Infinity;\n }\n else {\n rowEnd = row + 1;\n }\n screenRow += this.getRowLength(row);\n row = rowEnd;\n if (doCache) {\n this.$docRowCache.push(row);\n this.$screenRowCache.push(screenRow);\n }\n }\n var textLine = \"\";\n if (foldLine && row >= foldStart) {\n textLine = this.getFoldDisplayLine(foldLine, docRow, docColumn);\n foldStartRow = foldLine.start.row;\n }\n else {\n textLine = this.getLine(docRow).substring(0, docColumn);\n foldStartRow = docRow;\n }\n var wrapIndent = 0;\n if (this.$useWrapMode) {\n var wrapRow = this.$wrapData[foldStartRow];\n if (wrapRow) {\n var screenRowOffset = 0;\n while (textLine.length >= wrapRow[screenRowOffset]) {\n screenRow++;\n screenRowOffset++;\n }\n textLine = textLine.substring(wrapRow[screenRowOffset - 1] || 0, textLine.length);\n wrapIndent = screenRowOffset > 0 ? wrapRow.indent : 0;\n }\n }\n if (this.lineWidgets && this.lineWidgets[row] && this.lineWidgets[row].rowsAbove)\n screenRow += this.lineWidgets[row].rowsAbove;\n return {\n row: screenRow,\n column: wrapIndent + this.$getStringScreenWidth(textLine)[0]\n };\n };\n EditSession.prototype.documentToScreenColumn = function (row, docColumn) {\n return this.documentToScreenPosition(row, docColumn).column;\n };\n EditSession.prototype.documentToScreenRow = function (docRow, docColumn) {\n return this.documentToScreenPosition(docRow, docColumn).row;\n };\n EditSession.prototype.getScreenLength = function () {\n var screenRows = 0;\n var fold = null;\n if (!this.$useWrapMode) {\n screenRows = this.getLength();\n var foldData = this.$foldData;\n for (var i = 0; i < foldData.length; i++) {\n fold = foldData[i];\n screenRows -= fold.end.row - fold.start.row;\n }\n }\n else {\n var lastRow = this.$wrapData.length;\n var row = 0, i = 0;\n var fold = this.$foldData[i++];\n var foldStart = fold ? fold.start.row : Infinity;\n while (row < lastRow) {\n var splits = this.$wrapData[row];\n screenRows += splits ? splits.length + 1 : 1;\n row++;\n if (row > foldStart) {\n row = fold.end.row + 1;\n fold = this.$foldData[i++];\n foldStart = fold ? fold.start.row : Infinity;\n }\n }\n }\n if (this.lineWidgets)\n screenRows += this.$getWidgetScreenLength();\n return screenRows;\n };\n EditSession.prototype.$setFontMetrics = function (fm) {\n if (!this.$enableVarChar)\n return;\n this.$getStringScreenWidth = function (str, maxScreenColumn, screenColumn) {\n if (maxScreenColumn === 0)\n return [0, 0];\n if (!maxScreenColumn)\n maxScreenColumn = Infinity;\n screenColumn = screenColumn || 0;\n var c, column;\n for (column = 0; column < str.length; column++) {\n c = str.charAt(column);\n if (c === \"\\t\") {\n screenColumn += this.getScreenTabSize(screenColumn);\n }\n else {\n screenColumn += fm.getCharacterWidth(c);\n }\n if (screenColumn > maxScreenColumn) {\n break;\n }\n }\n return [screenColumn, column];\n };\n };\n EditSession.prototype.destroy = function () {\n if (!this.destroyed) {\n this.bgTokenizer.setDocument(null);\n this.bgTokenizer.cleanup();\n this.destroyed = true;\n }\n this.$stopWorker();\n this.removeAllListeners();\n if (this.doc) {\n this.doc.off(\"change\", this.$onChange);\n }\n this.selection.detach();\n };\n return EditSession;\n}());\nEditSession.$uid = 0;\nEditSession.prototype.$modes = config.$modes;\nEditSession.prototype.getValue = EditSession.prototype.toString;\nEditSession.prototype.$defaultUndoManager = {\n undo: function () { },\n redo: function () { },\n hasUndo: function () { },\n hasRedo: function () { },\n reset: function () { },\n add: function () { },\n addSelection: function () { },\n startNewGroup: function () { },\n addSession: function () { }\n};\nEditSession.prototype.$overwrite = false;\nEditSession.prototype.$mode = null;\nEditSession.prototype.$modeId = null;\nEditSession.prototype.$scrollTop = 0;\nEditSession.prototype.$scrollLeft = 0;\nEditSession.prototype.$wrapLimit = 80;\nEditSession.prototype.$useWrapMode = false;\nEditSession.prototype.$wrapLimitRange = {\n min: null,\n max: null\n};\nEditSession.prototype.lineWidgets = null;\nEditSession.prototype.isFullWidth = isFullWidth;\noop.implement(EditSession.prototype, EventEmitter);\nvar CHAR = 1, CHAR_EXT = 2, PLACEHOLDER_START = 3, PLACEHOLDER_BODY = 4, PUNCTUATION = 9, SPACE = 10, TAB = 11, TAB_SPACE = 12;\nfunction isFullWidth(c) {\n if (c < 0x1100)\n return false;\n return c >= 0x1100 && c <= 0x115F ||\n c >= 0x11A3 && c <= 0x11A7 ||\n c >= 0x11FA && c <= 0x11FF ||\n c >= 0x2329 && c <= 0x232A ||\n c >= 0x2E80 && c <= 0x2E99 ||\n c >= 0x2E9B && c <= 0x2EF3 ||\n c >= 0x2F00 && c <= 0x2FD5 ||\n c >= 0x2FF0 && c <= 0x2FFB ||\n c >= 0x3000 && c <= 0x303E ||\n c >= 0x3041 && c <= 0x3096 ||\n c >= 0x3099 && c <= 0x30FF ||\n c >= 0x3105 && c <= 0x312D ||\n c >= 0x3131 && c <= 0x318E ||\n c >= 0x3190 && c <= 0x31BA ||\n c >= 0x31C0 && c <= 0x31E3 ||\n c >= 0x31F0 && c <= 0x321E ||\n c >= 0x3220 && c <= 0x3247 ||\n c >= 0x3250 && c <= 0x32FE ||\n c >= 0x3300 && c <= 0x4DBF ||\n c >= 0x4E00 && c <= 0xA48C ||\n c >= 0xA490 && c <= 0xA4C6 ||\n c >= 0xA960 && c <= 0xA97C ||\n c >= 0xAC00 && c <= 0xD7A3 ||\n c >= 0xD7B0 && c <= 0xD7C6 ||\n c >= 0xD7CB && c <= 0xD7FB ||\n c >= 0xF900 && c <= 0xFAFF ||\n c >= 0xFE10 && c <= 0xFE19 ||\n c >= 0xFE30 && c <= 0xFE52 ||\n c >= 0xFE54 && c <= 0xFE66 ||\n c >= 0xFE68 && c <= 0xFE6B ||\n c >= 0xFF01 && c <= 0xFF60 ||\n c >= 0xFFE0 && c <= 0xFFE6;\n}\nrequire(\"./edit_session/folding\").Folding.call(EditSession.prototype);\nrequire(\"./edit_session/bracket_match\").BracketMatch.call(EditSession.prototype);\nconfig.defineOptions(EditSession.prototype, \"session\", {\n wrap: {\n set: function (value) {\n if (!value || value == \"off\")\n value = false;\n else if (value == \"free\")\n value = true;\n else if (value == \"printMargin\")\n value = -1;\n else if (typeof value == \"string\")\n value = parseInt(value, 10) || false;\n if (this.$wrap == value)\n return;\n this.$wrap = value;\n if (!value) {\n this.setUseWrapMode(false);\n }\n else {\n var col = typeof value == \"number\" ? value : null;\n this.setWrapLimitRange(col, col);\n this.setUseWrapMode(true);\n }\n },\n get: function () {\n if (this.getUseWrapMode()) {\n if (this.$wrap == -1)\n return \"printMargin\";\n if (!this.getWrapLimitRange().min)\n return \"free\";\n return this.$wrap;\n }\n return \"off\";\n },\n handlesSet: true\n },\n wrapMethod: {\n set: function (val) {\n val = val == \"auto\"\n ? this.$mode.type != \"text\"\n : val != \"text\";\n if (val != this.$wrapAsCode) {\n this.$wrapAsCode = val;\n if (this.$useWrapMode) {\n this.$useWrapMode = false;\n this.setUseWrapMode(true);\n }\n }\n },\n initialValue: \"auto\"\n },\n indentedSoftWrap: {\n set: function () {\n if (this.$useWrapMode) {\n this.$useWrapMode = false;\n this.setUseWrapMode(true);\n }\n },\n initialValue: true\n },\n firstLineNumber: {\n set: function () { this._signal(\"changeBreakpoint\"); },\n initialValue: 1\n },\n useWorker: {\n set: function (useWorker) {\n this.$useWorker = useWorker;\n this.$stopWorker();\n if (useWorker)\n this.$startWorker();\n },\n initialValue: true\n },\n useSoftTabs: { initialValue: true },\n tabSize: {\n set: function (tabSize) {\n tabSize = parseInt(tabSize);\n if (tabSize > 0 && this.$tabSize !== tabSize) {\n this.$modified = true;\n this.$rowLengthCache = [];\n this.$tabSize = tabSize;\n this._signal(\"changeTabSize\");\n }\n },\n initialValue: 4,\n handlesSet: true\n },\n navigateWithinSoftTabs: { initialValue: false },\n foldStyle: {\n set: function (val) { this.setFoldStyle(val); },\n handlesSet: true\n },\n overwrite: {\n set: function (val) { this._signal(\"changeOverwrite\"); },\n initialValue: false\n },\n newLineMode: {\n set: function (val) { this.doc.setNewLineMode(val); },\n get: function () { return this.doc.getNewLineMode(); },\n handlesSet: true\n },\n mode: {\n set: function (val) { this.setMode(val); },\n get: function () { return this.$modeId; },\n handlesSet: true\n }\n});\nexports.EditSession = EditSession;\n\n});\n\nace.define(\"ace/search\",[\"require\",\"exports\",\"module\",\"ace/lib/lang\",\"ace/lib/oop\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar lang = require(\"./lib/lang\");\nvar oop = require(\"./lib/oop\");\nvar Range = require(\"./range\").Range;\nvar Search = /** @class */ (function () {\n function Search() {\n this.$options = {};\n }\n Search.prototype.set = function (options) {\n oop.mixin(this.$options, options);\n return this;\n };\n Search.prototype.getOptions = function () {\n return lang.copyObject(this.$options);\n };\n Search.prototype.setOptions = function (options) {\n this.$options = options;\n };\n Search.prototype.find = function (session) {\n var options = this.$options;\n var iterator = this.$matchIterator(session, options);\n if (!iterator)\n return false;\n var firstRange = null;\n iterator.forEach(function (sr, sc, er, ec) {\n firstRange = new Range(sr, sc, er, ec);\n if (sc == ec && options.start && options.start.start\n && options.skipCurrent != false && firstRange.isEqual(options.start)) {\n firstRange = null;\n return false;\n }\n return true;\n });\n return firstRange;\n };\n Search.prototype.findAll = function (session) {\n var options = this.$options;\n if (!options.needle)\n return [];\n this.$assembleRegExp(options);\n var range = options.range;\n var lines = range\n ? session.getLines(range.start.row, range.end.row)\n : session.doc.getAllLines();\n var ranges = [];\n var re = options.re;\n if (options.$isMultiLine) {\n var len = re.length;\n var maxRow = lines.length - len;\n var prevRange;\n outer: for (var row = re.offset || 0; row <= maxRow; row++) {\n for (var j = 0; j < len; j++)\n if (lines[row + j].search(re[j]) == -1)\n continue outer;\n var startLine = lines[row];\n var line = lines[row + len - 1];\n var startIndex = startLine.length - startLine.match(re[0])[0].length;\n var endIndex = line.match(re[len - 1])[0].length;\n if (prevRange && prevRange.end.row === row &&\n prevRange.end.column > startIndex) {\n continue;\n }\n ranges.push(prevRange = new Range(row, startIndex, row + len - 1, endIndex));\n if (len > 2)\n row = row + len - 2;\n }\n }\n else {\n for (var i = 0; i < lines.length; i++) {\n var matches = lang.getMatchOffsets(lines[i], re);\n for (var j = 0; j < matches.length; j++) {\n var match = matches[j];\n ranges.push(new Range(i, match.offset, i, match.offset + match.length));\n }\n }\n }\n if (range) {\n var startColumn = range.start.column;\n var endColumn = range.end.column;\n var i = 0, j = ranges.length - 1;\n while (i < j && ranges[i].start.column < startColumn && ranges[i].start.row == 0)\n i++;\n var endRow = range.end.row - range.start.row;\n while (i < j && ranges[j].end.column > endColumn && ranges[j].end.row == endRow)\n j--;\n ranges = ranges.slice(i, j + 1);\n for (i = 0, j = ranges.length; i < j; i++) {\n ranges[i].start.row += range.start.row;\n ranges[i].end.row += range.start.row;\n }\n }\n return ranges;\n };\n Search.prototype.replace = function (input, replacement) {\n var options = this.$options;\n var re = this.$assembleRegExp(options);\n if (options.$isMultiLine)\n return replacement;\n if (!re)\n return;\n var match = re.exec(input);\n if (!match || match[0].length != input.length)\n return null;\n replacement = input.replace(re, replacement);\n if (options.preserveCase) {\n replacement = replacement.split(\"\");\n for (var i = Math.min(input.length, input.length); i--;) {\n var ch = input[i];\n if (ch && ch.toLowerCase() != ch)\n replacement[i] = replacement[i].toUpperCase();\n else\n replacement[i] = replacement[i].toLowerCase();\n }\n replacement = replacement.join(\"\");\n }\n return replacement;\n };\n Search.prototype.$assembleRegExp = function (options, $disableFakeMultiline) {\n if (options.needle instanceof RegExp)\n return options.re = options.needle;\n var needle = options.needle;\n if (!options.needle)\n return options.re = false;\n if (!options.regExp)\n needle = lang.escapeRegExp(needle);\n var modifier = options.caseSensitive ? \"gm\" : \"gmi\";\n try {\n new RegExp(needle, \"u\");\n options.$supportsUnicodeFlag = true;\n modifier += \"u\";\n }\n catch (e) {\n options.$supportsUnicodeFlag = false; //left for backward compatibility with previous versions for cases like /ab\\{2}/gu\n }\n if (options.wholeWord)\n needle = addWordBoundary(needle, options);\n options.$isMultiLine = !$disableFakeMultiline && /[\\n\\r]/.test(needle);\n if (options.$isMultiLine)\n return options.re = this.$assembleMultilineRegExp(needle, modifier);\n try {\n var re = new RegExp(needle, modifier);\n }\n catch (e) {\n re = false;\n }\n return options.re = re;\n };\n Search.prototype.$assembleMultilineRegExp = function (needle, modifier) {\n var parts = needle.replace(/\\r\\n|\\r|\\n/g, \"$\\n^\").split(\"\\n\");\n var re = [];\n for (var i = 0; i < parts.length; i++)\n try {\n re.push(new RegExp(parts[i], modifier));\n }\n catch (e) {\n return false;\n }\n return re;\n };\n Search.prototype.$matchIterator = function (session, options) {\n var re = this.$assembleRegExp(options);\n if (!re)\n return false;\n var backwards = options.backwards == true;\n var skipCurrent = options.skipCurrent != false;\n var supportsUnicodeFlag = re.unicode;\n var range = options.range;\n var start = options.start;\n if (!start)\n start = range ? range[backwards ? \"end\" : \"start\"] : session.selection.getRange();\n if (start.start)\n start = start[skipCurrent != backwards ? \"end\" : \"start\"];\n var firstRow = range ? range.start.row : 0;\n var lastRow = range ? range.end.row : session.getLength() - 1;\n if (backwards) {\n var forEach = function (callback) {\n var row = start.row;\n if (forEachInLine(row, start.column, callback))\n return;\n for (row--; row >= firstRow; row--)\n if (forEachInLine(row, Number.MAX_VALUE, callback))\n return;\n if (options.wrap == false)\n return;\n for (row = lastRow, firstRow = start.row; row >= firstRow; row--)\n if (forEachInLine(row, Number.MAX_VALUE, callback))\n return;\n };\n }\n else {\n var forEach = function (callback) {\n var row = start.row;\n if (forEachInLine(row, start.column, callback))\n return;\n for (row = row + 1; row <= lastRow; row++)\n if (forEachInLine(row, 0, callback))\n return;\n if (options.wrap == false)\n return;\n for (row = firstRow, lastRow = start.row; row <= lastRow; row++)\n if (forEachInLine(row, 0, callback))\n return;\n };\n }\n if (options.$isMultiLine) {\n var len = re.length;\n var forEachInLine = function (row, offset, callback) {\n var startRow = backwards ? row - len + 1 : row;\n if (startRow < 0 || startRow + len > session.getLength())\n return;\n var line = session.getLine(startRow);\n var startIndex = line.search(re[0]);\n if (!backwards && startIndex < offset || startIndex === -1)\n return;\n for (var i = 1; i < len; i++) {\n line = session.getLine(startRow + i);\n if (line.search(re[i]) == -1)\n return;\n }\n var endIndex = line.match(re[len - 1])[0].length;\n if (backwards && endIndex > offset)\n return;\n if (callback(startRow, startIndex, startRow + len - 1, endIndex))\n return true;\n };\n }\n else if (backwards) {\n var forEachInLine = function (row, endIndex, callback) {\n var line = session.getLine(row);\n var matches = [];\n var m, last = 0;\n re.lastIndex = 0;\n while ((m = re.exec(line))) {\n var length = m[0].length;\n last = m.index;\n if (!length) {\n if (last >= line.length)\n break;\n re.lastIndex = last += lang.skipEmptyMatch(line, last, supportsUnicodeFlag);\n }\n if (m.index + length > endIndex)\n break;\n matches.push(m.index, length);\n }\n for (var i = matches.length - 1; i >= 0; i -= 2) {\n var column = matches[i - 1];\n var length = matches[i];\n if (callback(row, column, row, column + length))\n return true;\n }\n };\n }\n else {\n var forEachInLine = function (row, startIndex, callback) {\n var line = session.getLine(row);\n var last;\n var m;\n re.lastIndex = startIndex;\n while ((m = re.exec(line))) {\n var length = m[0].length;\n last = m.index;\n if (callback(row, last, row, last + length))\n return true;\n if (!length) {\n re.lastIndex = last += lang.skipEmptyMatch(line, last, supportsUnicodeFlag);\n if (last >= line.length)\n return false;\n }\n }\n };\n }\n return { forEach: forEach };\n };\n return Search;\n}());\nfunction addWordBoundary(needle, options) {\n var supportsLookbehind = lang.supportsLookbehind();\n function wordBoundary(c, firstChar) {\n if (firstChar === void 0) { firstChar = true; }\n var wordRegExp = supportsLookbehind && options.$supportsUnicodeFlag ? new RegExp(\"[\\\\p{L}\\\\p{N}_]\", \"u\") : new RegExp(\"\\\\w\");\n if (wordRegExp.test(c) || options.regExp) {\n if (supportsLookbehind && options.$supportsUnicodeFlag) {\n if (firstChar)\n return \"(?<=^|[^\\\\p{L}\\\\p{N}_])\";\n return \"(?=[^\\\\p{L}\\\\p{N}_]|$)\";\n }\n return \"\\\\b\";\n }\n return \"\";\n }\n var needleArray = Array.from(needle);\n var firstChar = needleArray[0];\n var lastChar = needleArray[needleArray.length - 1];\n return wordBoundary(firstChar) + needle + wordBoundary(lastChar, false);\n}\nexports.Search = Search;\n\n});\n\nace.define(\"ace/keyboard/hash_handler\",[\"require\",\"exports\",\"module\",\"ace/lib/keys\",\"ace/lib/useragent\"], function(require, exports, module){\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar keyUtil = require(\"../lib/keys\");\nvar useragent = require(\"../lib/useragent\");\nvar KEY_MODS = keyUtil.KEY_MODS;\nvar MultiHashHandler = /** @class */ (function () {\n function MultiHashHandler(config, platform) {\n this.$init(config, platform, false);\n }\n MultiHashHandler.prototype.$init = function (config, platform, $singleCommand) {\n this.platform = platform || (useragent.isMac ? \"mac\" : \"win\");\n this.commands = {};\n this.commandKeyBinding = {};\n this.addCommands(config);\n this.$singleCommand = $singleCommand;\n };\n MultiHashHandler.prototype.addCommand = function (command) {\n if (this.commands[command.name])\n this.removeCommand(command);\n this.commands[command.name] = command;\n if (command.bindKey)\n this._buildKeyHash(command);\n };\n MultiHashHandler.prototype.removeCommand = function (command, keepCommand) {\n var name = command && (typeof command === 'string' ? command : command.name);\n command = this.commands[name];\n if (!keepCommand)\n delete this.commands[name];\n var ckb = this.commandKeyBinding;\n for (var keyId in ckb) {\n var cmdGroup = ckb[keyId];\n if (cmdGroup == command) {\n delete ckb[keyId];\n }\n else if (Array.isArray(cmdGroup)) {\n var i = cmdGroup.indexOf(command);\n if (i != -1) {\n cmdGroup.splice(i, 1);\n if (cmdGroup.length == 1)\n ckb[keyId] = cmdGroup[0];\n }\n }\n }\n };\n MultiHashHandler.prototype.bindKey = function (key, command, position) {\n if (typeof key == \"object\" && key) {\n if (position == undefined)\n position = key.position;\n key = key[this.platform];\n }\n if (!key)\n return;\n if (typeof command == \"function\")\n return this.addCommand({ exec: command, bindKey: key, name: command.name || key });\n key.split(\"|\").forEach(function (keyPart) {\n var chain = \"\";\n if (keyPart.indexOf(\" \") != -1) {\n var parts = keyPart.split(/\\s+/);\n keyPart = parts.pop();\n parts.forEach(function (keyPart) {\n var binding = this.parseKeys(keyPart);\n var id = KEY_MODS[binding.hashId] + binding.key;\n chain += (chain ? \" \" : \"\") + id;\n this._addCommandToBinding(chain, \"chainKeys\");\n }, this);\n chain += \" \";\n }\n var binding = this.parseKeys(keyPart);\n var id = KEY_MODS[binding.hashId] + binding.key;\n this._addCommandToBinding(chain + id, command, position);\n }, this);\n };\n MultiHashHandler.prototype._addCommandToBinding = function (keyId, command, position) {\n var ckb = this.commandKeyBinding, i;\n if (!command) {\n delete ckb[keyId];\n }\n else if (!ckb[keyId] || this.$singleCommand) {\n ckb[keyId] = command;\n }\n else {\n if (!Array.isArray(ckb[keyId])) {\n ckb[keyId] = [ckb[keyId]];\n }\n else if ((i = ckb[keyId].indexOf(command)) != -1) {\n ckb[keyId].splice(i, 1);\n }\n if (typeof position != \"number\") {\n position = getPosition(command);\n }\n var commands = ckb[keyId];\n for (i = 0; i < commands.length; i++) {\n var other = commands[i];\n var otherPos = getPosition(other);\n if (otherPos > position)\n break;\n }\n commands.splice(i, 0, command);\n }\n };\n MultiHashHandler.prototype.addCommands = function (commands) {\n commands && Object.keys(commands).forEach(function (name) {\n var command = commands[name];\n if (!command)\n return;\n if (typeof command === \"string\")\n return this.bindKey(command, name);\n if (typeof command === \"function\")\n command = { exec: command };\n if (typeof command !== \"object\")\n return;\n if (!command.name)\n command.name = name;\n this.addCommand(command);\n }, this);\n };\n MultiHashHandler.prototype.removeCommands = function (commands) {\n Object.keys(commands).forEach(function (name) {\n this.removeCommand(commands[name]);\n }, this);\n };\n MultiHashHandler.prototype.bindKeys = function (keyList) {\n Object.keys(keyList).forEach(function (key) {\n this.bindKey(key, keyList[key]);\n }, this);\n };\n MultiHashHandler.prototype._buildKeyHash = function (command) {\n this.bindKey(command.bindKey, command);\n };\n MultiHashHandler.prototype.parseKeys = function (keys) {\n var parts = keys.toLowerCase().split(/[\\-\\+]([\\-\\+])?/).filter(function (x) { return x; });\n var key = parts.pop();\n var keyCode = keyUtil[key];\n if (keyUtil.FUNCTION_KEYS[keyCode])\n key = keyUtil.FUNCTION_KEYS[keyCode].toLowerCase();\n else if (!parts.length)\n return { key: key, hashId: -1 };\n else if (parts.length == 1 && parts[0] == \"shift\")\n return { key: key.toUpperCase(), hashId: -1 };\n var hashId = 0;\n for (var i = parts.length; i--;) {\n var modifier = keyUtil.KEY_MODS[parts[i]];\n if (modifier == null) {\n if (typeof console != \"undefined\")\n console.error(\"invalid modifier \" + parts[i] + \" in \" + keys);\n return false;\n }\n hashId |= modifier;\n }\n return { key: key, hashId: hashId };\n };\n MultiHashHandler.prototype.findKeyCommand = function (hashId, keyString) {\n var key = KEY_MODS[hashId] + keyString;\n return this.commandKeyBinding[key];\n };\n MultiHashHandler.prototype.handleKeyboard = function (data, hashId, keyString, keyCode) {\n if (keyCode < 0)\n return;\n var key = KEY_MODS[hashId] + keyString;\n var command = this.commandKeyBinding[key];\n if (data.$keyChain) {\n data.$keyChain += \" \" + key;\n command = this.commandKeyBinding[data.$keyChain] || command;\n }\n if (command) {\n if (command == \"chainKeys\" || command[command.length - 1] == \"chainKeys\") {\n data.$keyChain = data.$keyChain || key;\n return { command: \"null\" };\n }\n }\n if (data.$keyChain) {\n if ((!hashId || hashId == 4) && keyString.length == 1)\n data.$keyChain = data.$keyChain.slice(0, -key.length - 1); // wait for input\n else if (hashId == -1 || keyCode > 0)\n data.$keyChain = \"\"; // reset keyChain\n }\n return { command: command };\n };\n MultiHashHandler.prototype.getStatusText = function (editor, data) {\n return data.$keyChain || \"\";\n };\n return MultiHashHandler;\n}());\nfunction getPosition(command) {\n return typeof command == \"object\" && command.bindKey\n && command.bindKey.position\n || (command.isDefault ? -100 : 0);\n}\nvar HashHandler = /** @class */ (function (_super) {\n __extends(HashHandler, _super);\n function HashHandler(config, platform) {\n var _this = _super.call(this, config, platform) || this;\n _this.$singleCommand = true;\n return _this;\n }\n return HashHandler;\n}(MultiHashHandler));\nHashHandler.call = function (thisArg, config, platform) {\n MultiHashHandler.prototype.$init.call(thisArg, config, platform, true);\n};\nMultiHashHandler.call = function (thisArg, config, platform) {\n MultiHashHandler.prototype.$init.call(thisArg, config, platform, false);\n};\nexports.HashHandler = HashHandler;\nexports.MultiHashHandler = MultiHashHandler;\n\n});\n\nace.define(\"ace/commands/command_manager\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/keyboard/hash_handler\",\"ace/lib/event_emitter\"], function(require, exports, module){\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar oop = require(\"../lib/oop\");\nvar MultiHashHandler = require(\"../keyboard/hash_handler\").MultiHashHandler;\nvar EventEmitter = require(\"../lib/event_emitter\").EventEmitter;\nvar CommandManager = /** @class */ (function (_super) {\n __extends(CommandManager, _super);\n function CommandManager(platform, commands) {\n var _this = _super.call(this, commands, platform) || this;\n _this.byName = _this.commands;\n _this.setDefaultHandler(\"exec\", function (e) {\n if (!e.args) {\n return e.command.exec(e.editor, {}, e.event, true);\n }\n return e.command.exec(e.editor, e.args, e.event, false);\n });\n return _this;\n }\n CommandManager.prototype.exec = function (command, editor, args) {\n if (Array.isArray(command)) {\n for (var i = command.length; i--;) {\n if (this.exec(command[i], editor, args))\n return true;\n }\n return false;\n }\n if (typeof command === \"string\")\n command = this.commands[command];\n if (!command)\n return false;\n if (editor && editor.$readOnly && !command.readOnly)\n return false;\n if (this.$checkCommandState != false && command.isAvailable && !command.isAvailable(editor))\n return false;\n var e = { editor: editor, command: command, args: args };\n e.returnValue = this._emit(\"exec\", e);\n this._signal(\"afterExec\", e);\n return e.returnValue === false ? false : true;\n };\n CommandManager.prototype.toggleRecording = function (editor) {\n if (this.$inReplay)\n return;\n editor && editor._emit(\"changeStatus\");\n if (this.recording) {\n this.macro.pop();\n this.off(\"exec\", this.$addCommandToMacro);\n if (!this.macro.length)\n this.macro = this.oldMacro;\n return this.recording = false;\n }\n if (!this.$addCommandToMacro) {\n this.$addCommandToMacro = function (e) {\n this.macro.push([e.command, e.args]);\n }.bind(this);\n }\n this.oldMacro = this.macro;\n this.macro = [];\n this.on(\"exec\", this.$addCommandToMacro);\n return this.recording = true;\n };\n CommandManager.prototype.replay = function (editor) {\n if (this.$inReplay || !this.macro)\n return;\n if (this.recording)\n return this.toggleRecording(editor);\n try {\n this.$inReplay = true;\n this.macro.forEach(function (x) {\n if (typeof x == \"string\")\n this.exec(x, editor);\n else\n this.exec(x[0], editor, x[1]);\n }, this);\n }\n finally {\n this.$inReplay = false;\n }\n };\n CommandManager.prototype.trimMacro = function (m) {\n return m.map(function (x) {\n if (typeof x[0] != \"string\")\n x[0] = x[0].name;\n if (!x[1])\n x = x[0];\n return x;\n });\n };\n return CommandManager;\n}(MultiHashHandler));\noop.implement(CommandManager.prototype, EventEmitter);\nexports.CommandManager = CommandManager;\n\n});\n\nace.define(\"ace/commands/default_commands\",[\"require\",\"exports\",\"module\",\"ace/lib/lang\",\"ace/config\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar lang = require(\"../lib/lang\");\nvar config = require(\"../config\");\nvar Range = require(\"../range\").Range;\nfunction bindKey(win, mac) {\n return { win: win, mac: mac };\n}\nexports.commands = [{\n name: \"showSettingsMenu\",\n description: \"Show settings menu\",\n bindKey: bindKey(\"Ctrl-,\", \"Command-,\"),\n exec: function (editor) {\n config.loadModule(\"ace/ext/settings_menu\", function (module) {\n module.init(editor);\n editor.showSettingsMenu();\n });\n },\n readOnly: true\n }, {\n name: \"goToNextError\",\n description: \"Go to next error\",\n bindKey: bindKey(\"Alt-E\", \"F4\"),\n exec: function (editor) {\n config.loadModule(\"ace/ext/error_marker\", function (module) {\n module.showErrorMarker(editor, 1);\n });\n },\n scrollIntoView: \"animate\",\n readOnly: true\n }, {\n name: \"goToPreviousError\",\n description: \"Go to previous error\",\n bindKey: bindKey(\"Alt-Shift-E\", \"Shift-F4\"),\n exec: function (editor) {\n config.loadModule(\"ace/ext/error_marker\", function (module) {\n module.showErrorMarker(editor, -1);\n });\n },\n scrollIntoView: \"animate\",\n readOnly: true\n }, {\n name: \"selectall\",\n description: \"Select all\",\n bindKey: bindKey(\"Ctrl-A\", \"Command-A\"),\n exec: function (editor) { editor.selectAll(); },\n readOnly: true\n }, {\n name: \"centerselection\",\n description: \"Center selection\",\n bindKey: bindKey(null, \"Ctrl-L\"),\n exec: function (editor) { editor.centerSelection(); },\n readOnly: true\n }, {\n name: \"gotoline\",\n description: \"Go to line...\",\n bindKey: bindKey(\"Ctrl-L\", \"Command-L\"),\n exec: function (editor, line) {\n if (typeof line === \"number\" && !isNaN(line))\n editor.gotoLine(line);\n editor.prompt({ $type: \"gotoLine\" });\n },\n readOnly: true\n }, {\n name: \"fold\",\n bindKey: bindKey(\"Alt-L|Ctrl-F1\", \"Command-Alt-L|Command-F1\"),\n exec: function (editor) { editor.session.toggleFold(false); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"center\",\n readOnly: true\n }, {\n name: \"unfold\",\n bindKey: bindKey(\"Alt-Shift-L|Ctrl-Shift-F1\", \"Command-Alt-Shift-L|Command-Shift-F1\"),\n exec: function (editor) { editor.session.toggleFold(true); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"center\",\n readOnly: true\n }, {\n name: \"toggleFoldWidget\",\n description: \"Toggle fold widget\",\n bindKey: bindKey(\"F2\", \"F2\"),\n exec: function (editor) { editor.session.toggleFoldWidget(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"center\",\n readOnly: true\n }, {\n name: \"toggleParentFoldWidget\",\n description: \"Toggle parent fold widget\",\n bindKey: bindKey(\"Alt-F2\", \"Alt-F2\"),\n exec: function (editor) { editor.session.toggleFoldWidget(true); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"center\",\n readOnly: true\n }, {\n name: \"foldall\",\n description: \"Fold all\",\n bindKey: bindKey(null, \"Ctrl-Command-Option-0\"),\n exec: function (editor) { editor.session.foldAll(); },\n scrollIntoView: \"center\",\n readOnly: true\n }, {\n name: \"foldAllComments\",\n description: \"Fold all comments\",\n bindKey: bindKey(null, \"Ctrl-Command-Option-0\"),\n exec: function (editor) { editor.session.foldAllComments(); },\n scrollIntoView: \"center\",\n readOnly: true\n }, {\n name: \"foldOther\",\n description: \"Fold other\",\n bindKey: bindKey(\"Alt-0\", \"Command-Option-0\"),\n exec: function (editor) {\n editor.session.foldAll();\n editor.session.unfold(editor.selection.getAllRanges());\n },\n scrollIntoView: \"center\",\n readOnly: true\n }, {\n name: \"unfoldall\",\n description: \"Unfold all\",\n bindKey: bindKey(\"Alt-Shift-0\", \"Command-Option-Shift-0\"),\n exec: function (editor) { editor.session.unfold(); },\n scrollIntoView: \"center\",\n readOnly: true\n }, {\n name: \"findnext\",\n description: \"Find next\",\n bindKey: bindKey(\"Ctrl-K\", \"Command-G\"),\n exec: function (editor) { editor.findNext(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"center\",\n readOnly: true\n }, {\n name: \"findprevious\",\n description: \"Find previous\",\n bindKey: bindKey(\"Ctrl-Shift-K\", \"Command-Shift-G\"),\n exec: function (editor) { editor.findPrevious(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"center\",\n readOnly: true\n }, {\n name: \"selectOrFindNext\",\n description: \"Select or find next\",\n bindKey: bindKey(\"Alt-K\", \"Ctrl-G\"),\n exec: function (editor) {\n if (editor.selection.isEmpty())\n editor.selection.selectWord();\n else\n editor.findNext();\n },\n readOnly: true\n }, {\n name: \"selectOrFindPrevious\",\n description: \"Select or find previous\",\n bindKey: bindKey(\"Alt-Shift-K\", \"Ctrl-Shift-G\"),\n exec: function (editor) {\n if (editor.selection.isEmpty())\n editor.selection.selectWord();\n else\n editor.findPrevious();\n },\n readOnly: true\n }, {\n name: \"find\",\n description: \"Find\",\n bindKey: bindKey(\"Ctrl-F\", \"Command-F\"),\n exec: function (editor) {\n config.loadModule(\"ace/ext/searchbox\", function (e) { e.Search(editor); });\n },\n readOnly: true\n }, {\n name: \"overwrite\",\n description: \"Overwrite\",\n bindKey: \"Insert\",\n exec: function (editor) { editor.toggleOverwrite(); },\n readOnly: true\n }, {\n name: \"selecttostart\",\n description: \"Select to start\",\n bindKey: bindKey(\"Ctrl-Shift-Home\", \"Command-Shift-Home|Command-Shift-Up\"),\n exec: function (editor) { editor.getSelection().selectFileStart(); },\n multiSelectAction: \"forEach\",\n readOnly: true,\n scrollIntoView: \"animate\",\n aceCommandGroup: \"fileJump\"\n }, {\n name: \"gotostart\",\n description: \"Go to start\",\n bindKey: bindKey(\"Ctrl-Home\", \"Command-Home|Command-Up\"),\n exec: function (editor) { editor.navigateFileStart(); },\n multiSelectAction: \"forEach\",\n readOnly: true,\n scrollIntoView: \"animate\",\n aceCommandGroup: \"fileJump\"\n }, {\n name: \"selectup\",\n description: \"Select up\",\n bindKey: bindKey(\"Shift-Up\", \"Shift-Up|Ctrl-Shift-P\"),\n exec: function (editor) { editor.getSelection().selectUp(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"golineup\",\n description: \"Go line up\",\n bindKey: bindKey(\"Up\", \"Up|Ctrl-P\"),\n exec: function (editor, args) { editor.navigateUp(args.times); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"selecttoend\",\n description: \"Select to end\",\n bindKey: bindKey(\"Ctrl-Shift-End\", \"Command-Shift-End|Command-Shift-Down\"),\n exec: function (editor) { editor.getSelection().selectFileEnd(); },\n multiSelectAction: \"forEach\",\n readOnly: true,\n scrollIntoView: \"animate\",\n aceCommandGroup: \"fileJump\"\n }, {\n name: \"gotoend\",\n description: \"Go to end\",\n bindKey: bindKey(\"Ctrl-End\", \"Command-End|Command-Down\"),\n exec: function (editor) { editor.navigateFileEnd(); },\n multiSelectAction: \"forEach\",\n readOnly: true,\n scrollIntoView: \"animate\",\n aceCommandGroup: \"fileJump\"\n }, {\n name: \"selectdown\",\n description: \"Select down\",\n bindKey: bindKey(\"Shift-Down\", \"Shift-Down|Ctrl-Shift-N\"),\n exec: function (editor) { editor.getSelection().selectDown(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"golinedown\",\n description: \"Go line down\",\n bindKey: bindKey(\"Down\", \"Down|Ctrl-N\"),\n exec: function (editor, args) { editor.navigateDown(args.times); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"selectwordleft\",\n description: \"Select word left\",\n bindKey: bindKey(\"Ctrl-Shift-Left\", \"Option-Shift-Left\"),\n exec: function (editor) { editor.getSelection().selectWordLeft(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"gotowordleft\",\n description: \"Go to word left\",\n bindKey: bindKey(\"Ctrl-Left\", \"Option-Left\"),\n exec: function (editor) { editor.navigateWordLeft(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"selecttolinestart\",\n description: \"Select to line start\",\n bindKey: bindKey(\"Alt-Shift-Left\", \"Command-Shift-Left|Ctrl-Shift-A\"),\n exec: function (editor) { editor.getSelection().selectLineStart(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"gotolinestart\",\n description: \"Go to line start\",\n bindKey: bindKey(\"Alt-Left|Home\", \"Command-Left|Home|Ctrl-A\"),\n exec: function (editor) { editor.navigateLineStart(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"selectleft\",\n description: \"Select left\",\n bindKey: bindKey(\"Shift-Left\", \"Shift-Left|Ctrl-Shift-B\"),\n exec: function (editor) { editor.getSelection().selectLeft(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"gotoleft\",\n description: \"Go to left\",\n bindKey: bindKey(\"Left\", \"Left|Ctrl-B\"),\n exec: function (editor, args) { editor.navigateLeft(args.times); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"selectwordright\",\n description: \"Select word right\",\n bindKey: bindKey(\"Ctrl-Shift-Right\", \"Option-Shift-Right\"),\n exec: function (editor) { editor.getSelection().selectWordRight(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"gotowordright\",\n description: \"Go to word right\",\n bindKey: bindKey(\"Ctrl-Right\", \"Option-Right\"),\n exec: function (editor) { editor.navigateWordRight(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"selecttolineend\",\n description: \"Select to line end\",\n bindKey: bindKey(\"Alt-Shift-Right\", \"Command-Shift-Right|Shift-End|Ctrl-Shift-E\"),\n exec: function (editor) { editor.getSelection().selectLineEnd(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"gotolineend\",\n description: \"Go to line end\",\n bindKey: bindKey(\"Alt-Right|End\", \"Command-Right|End|Ctrl-E\"),\n exec: function (editor) { editor.navigateLineEnd(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"selectright\",\n description: \"Select right\",\n bindKey: bindKey(\"Shift-Right\", \"Shift-Right\"),\n exec: function (editor) { editor.getSelection().selectRight(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"gotoright\",\n description: \"Go to right\",\n bindKey: bindKey(\"Right\", \"Right|Ctrl-F\"),\n exec: function (editor, args) { editor.navigateRight(args.times); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"selectpagedown\",\n description: \"Select page down\",\n bindKey: \"Shift-PageDown\",\n exec: function (editor) { editor.selectPageDown(); },\n readOnly: true\n }, {\n name: \"pagedown\",\n description: \"Page down\",\n bindKey: bindKey(null, \"Option-PageDown\"),\n exec: function (editor) { editor.scrollPageDown(); },\n readOnly: true\n }, {\n name: \"gotopagedown\",\n description: \"Go to page down\",\n bindKey: bindKey(\"PageDown\", \"PageDown|Ctrl-V\"),\n exec: function (editor) { editor.gotoPageDown(); },\n readOnly: true\n }, {\n name: \"selectpageup\",\n description: \"Select page up\",\n bindKey: \"Shift-PageUp\",\n exec: function (editor) { editor.selectPageUp(); },\n readOnly: true\n }, {\n name: \"pageup\",\n description: \"Page up\",\n bindKey: bindKey(null, \"Option-PageUp\"),\n exec: function (editor) { editor.scrollPageUp(); },\n readOnly: true\n }, {\n name: \"gotopageup\",\n description: \"Go to page up\",\n bindKey: \"PageUp\",\n exec: function (editor) { editor.gotoPageUp(); },\n readOnly: true\n }, {\n name: \"scrollup\",\n description: \"Scroll up\",\n bindKey: bindKey(\"Ctrl-Up\", null),\n exec: function (e) { e.renderer.scrollBy(0, -2 * e.renderer.layerConfig.lineHeight); },\n readOnly: true\n }, {\n name: \"scrolldown\",\n description: \"Scroll down\",\n bindKey: bindKey(\"Ctrl-Down\", null),\n exec: function (e) { e.renderer.scrollBy(0, 2 * e.renderer.layerConfig.lineHeight); },\n readOnly: true\n }, {\n name: \"selectlinestart\",\n description: \"Select line start\",\n bindKey: \"Shift-Home\",\n exec: function (editor) { editor.getSelection().selectLineStart(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"selectlineend\",\n description: \"Select line end\",\n bindKey: \"Shift-End\",\n exec: function (editor) { editor.getSelection().selectLineEnd(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"togglerecording\",\n description: \"Toggle recording\",\n bindKey: bindKey(\"Ctrl-Alt-E\", \"Command-Option-E\"),\n exec: function (editor) { editor.commands.toggleRecording(editor); },\n readOnly: true\n }, {\n name: \"replaymacro\",\n description: \"Replay macro\",\n bindKey: bindKey(\"Ctrl-Shift-E\", \"Command-Shift-E\"),\n exec: function (editor) { editor.commands.replay(editor); },\n readOnly: true\n }, {\n name: \"jumptomatching\",\n description: \"Jump to matching\",\n bindKey: bindKey(\"Ctrl-\\\\|Ctrl-P\", \"Command-\\\\\"),\n exec: function (editor) { editor.jumpToMatching(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"animate\",\n readOnly: true\n }, {\n name: \"selecttomatching\",\n description: \"Select to matching\",\n bindKey: bindKey(\"Ctrl-Shift-\\\\|Ctrl-Shift-P\", \"Command-Shift-\\\\\"),\n exec: function (editor) { editor.jumpToMatching(true); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"animate\",\n readOnly: true\n }, {\n name: \"expandToMatching\",\n description: \"Expand to matching\",\n bindKey: bindKey(\"Ctrl-Shift-M\", \"Ctrl-Shift-M\"),\n exec: function (editor) { editor.jumpToMatching(true, true); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"animate\",\n readOnly: true\n }, {\n name: \"passKeysToBrowser\",\n description: \"Pass keys to browser\",\n bindKey: bindKey(null, null),\n exec: function () { },\n passEvent: true,\n readOnly: true\n }, {\n name: \"copy\",\n description: \"Copy\",\n exec: function (editor) {\n },\n readOnly: true\n },\n {\n name: \"cut\",\n description: \"Cut\",\n exec: function (editor) {\n var cutLine = editor.$copyWithEmptySelection && editor.selection.isEmpty();\n var range = cutLine ? editor.selection.getLineRange() : editor.selection.getRange();\n editor._emit(\"cut\", range);\n if (!range.isEmpty())\n editor.session.remove(range);\n editor.clearSelection();\n },\n scrollIntoView: \"cursor\",\n multiSelectAction: \"forEach\"\n }, {\n name: \"paste\",\n description: \"Paste\",\n exec: function (editor, args) {\n editor.$handlePaste(args);\n },\n scrollIntoView: \"cursor\"\n }, {\n name: \"removeline\",\n description: \"Remove line\",\n bindKey: bindKey(\"Ctrl-D\", \"Command-D\"),\n exec: function (editor) { editor.removeLines(); },\n scrollIntoView: \"cursor\",\n multiSelectAction: \"forEachLine\"\n }, {\n name: \"duplicateSelection\",\n description: \"Duplicate selection\",\n bindKey: bindKey(\"Ctrl-Shift-D\", \"Command-Shift-D\"),\n exec: function (editor) { editor.duplicateSelection(); },\n scrollIntoView: \"cursor\",\n multiSelectAction: \"forEach\"\n }, {\n name: \"sortlines\",\n description: \"Sort lines\",\n bindKey: bindKey(\"Ctrl-Alt-S\", \"Command-Alt-S\"),\n exec: function (editor) { editor.sortLines(); },\n scrollIntoView: \"selection\",\n multiSelectAction: \"forEachLine\"\n }, {\n name: \"togglecomment\",\n description: \"Toggle comment\",\n bindKey: bindKey(\"Ctrl-/\", \"Command-/\"),\n exec: function (editor) { editor.toggleCommentLines(); },\n multiSelectAction: \"forEachLine\",\n scrollIntoView: \"selectionPart\"\n }, {\n name: \"toggleBlockComment\",\n description: \"Toggle block comment\",\n bindKey: bindKey(\"Ctrl-Shift-/\", \"Command-Shift-/\"),\n exec: function (editor) { editor.toggleBlockComment(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"selectionPart\"\n }, {\n name: \"modifyNumberUp\",\n description: \"Modify number up\",\n bindKey: bindKey(\"Ctrl-Shift-Up\", \"Alt-Shift-Up\"),\n exec: function (editor) { editor.modifyNumber(1); },\n scrollIntoView: \"cursor\",\n multiSelectAction: \"forEach\"\n }, {\n name: \"modifyNumberDown\",\n description: \"Modify number down\",\n bindKey: bindKey(\"Ctrl-Shift-Down\", \"Alt-Shift-Down\"),\n exec: function (editor) { editor.modifyNumber(-1); },\n scrollIntoView: \"cursor\",\n multiSelectAction: \"forEach\"\n }, {\n name: \"replace\",\n description: \"Replace\",\n bindKey: bindKey(\"Ctrl-H\", \"Command-Option-F\"),\n exec: function (editor) {\n config.loadModule(\"ace/ext/searchbox\", function (e) { e.Search(editor, true); });\n }\n }, {\n name: \"undo\",\n description: \"Undo\",\n bindKey: bindKey(\"Ctrl-Z\", \"Command-Z\"),\n exec: function (editor) { editor.undo(); }\n }, {\n name: \"redo\",\n description: \"Redo\",\n bindKey: bindKey(\"Ctrl-Shift-Z|Ctrl-Y\", \"Command-Shift-Z|Command-Y\"),\n exec: function (editor) { editor.redo(); }\n }, {\n name: \"copylinesup\",\n description: \"Copy lines up\",\n bindKey: bindKey(\"Alt-Shift-Up\", \"Command-Option-Up\"),\n exec: function (editor) { editor.copyLinesUp(); },\n scrollIntoView: \"cursor\"\n }, {\n name: \"movelinesup\",\n description: \"Move lines up\",\n bindKey: bindKey(\"Alt-Up\", \"Option-Up\"),\n exec: function (editor) { editor.moveLinesUp(); },\n scrollIntoView: \"cursor\"\n }, {\n name: \"copylinesdown\",\n description: \"Copy lines down\",\n bindKey: bindKey(\"Alt-Shift-Down\", \"Command-Option-Down\"),\n exec: function (editor) { editor.copyLinesDown(); },\n scrollIntoView: \"cursor\"\n }, {\n name: \"movelinesdown\",\n description: \"Move lines down\",\n bindKey: bindKey(\"Alt-Down\", \"Option-Down\"),\n exec: function (editor) { editor.moveLinesDown(); },\n scrollIntoView: \"cursor\"\n }, {\n name: \"del\",\n description: \"Delete\",\n bindKey: bindKey(\"Delete\", \"Delete|Ctrl-D|Shift-Delete\"),\n exec: function (editor) { editor.remove(\"right\"); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"backspace\",\n description: \"Backspace\",\n bindKey: bindKey(\"Shift-Backspace|Backspace\", \"Ctrl-Backspace|Shift-Backspace|Backspace|Ctrl-H\"),\n exec: function (editor) { editor.remove(\"left\"); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"cut_or_delete\",\n description: \"Cut or delete\",\n bindKey: bindKey(\"Shift-Delete\", null),\n exec: function (editor) {\n if (editor.selection.isEmpty()) {\n editor.remove(\"left\");\n }\n else {\n return false;\n }\n },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"removetolinestart\",\n description: \"Remove to line start\",\n bindKey: bindKey(\"Alt-Backspace\", \"Command-Backspace\"),\n exec: function (editor) { editor.removeToLineStart(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"removetolineend\",\n description: \"Remove to line end\",\n bindKey: bindKey(\"Alt-Delete\", \"Ctrl-K|Command-Delete\"),\n exec: function (editor) { editor.removeToLineEnd(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"removetolinestarthard\",\n description: \"Remove to line start hard\",\n bindKey: bindKey(\"Ctrl-Shift-Backspace\", null),\n exec: function (editor) {\n var range = editor.selection.getRange();\n range.start.column = 0;\n editor.session.remove(range);\n },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"removetolineendhard\",\n description: \"Remove to line end hard\",\n bindKey: bindKey(\"Ctrl-Shift-Delete\", null),\n exec: function (editor) {\n var range = editor.selection.getRange();\n range.end.column = Number.MAX_VALUE;\n editor.session.remove(range);\n },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"removewordleft\",\n description: \"Remove word left\",\n bindKey: bindKey(\"Ctrl-Backspace\", \"Alt-Backspace|Ctrl-Alt-Backspace\"),\n exec: function (editor) { editor.removeWordLeft(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"removewordright\",\n description: \"Remove word right\",\n bindKey: bindKey(\"Ctrl-Delete\", \"Alt-Delete\"),\n exec: function (editor) { editor.removeWordRight(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"outdent\",\n description: \"Outdent\",\n bindKey: bindKey(\"Shift-Tab\", \"Shift-Tab\"),\n exec: function (editor) { editor.blockOutdent(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"selectionPart\"\n }, {\n name: \"indent\",\n description: \"Indent\",\n bindKey: bindKey(\"Tab\", \"Tab\"),\n exec: function (editor) { editor.indent(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"selectionPart\"\n }, {\n name: \"blockoutdent\",\n description: \"Block outdent\",\n bindKey: bindKey(\"Ctrl-[\", \"Ctrl-[\"),\n exec: function (editor) { editor.blockOutdent(); },\n multiSelectAction: \"forEachLine\",\n scrollIntoView: \"selectionPart\"\n }, {\n name: \"blockindent\",\n description: \"Block indent\",\n bindKey: bindKey(\"Ctrl-]\", \"Ctrl-]\"),\n exec: function (editor) { editor.blockIndent(); },\n multiSelectAction: \"forEachLine\",\n scrollIntoView: \"selectionPart\"\n }, {\n name: \"insertstring\",\n description: \"Insert string\",\n exec: function (editor, str) { editor.insert(str); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"inserttext\",\n description: \"Insert text\",\n exec: function (editor, args) {\n editor.insert(lang.stringRepeat(args.text || \"\", args.times || 1));\n },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"splitline\",\n description: \"Split line\",\n bindKey: bindKey(null, \"Ctrl-O\"),\n exec: function (editor) { editor.splitLine(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"transposeletters\",\n description: \"Transpose letters\",\n bindKey: bindKey(\"Alt-Shift-X\", \"Ctrl-T\"),\n exec: function (editor) { editor.transposeLetters(); },\n multiSelectAction: function (editor) { editor.transposeSelections(1); },\n scrollIntoView: \"cursor\"\n }, {\n name: \"touppercase\",\n description: \"To uppercase\",\n bindKey: bindKey(\"Ctrl-U\", \"Ctrl-U\"),\n exec: function (editor) { editor.toUpperCase(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"tolowercase\",\n description: \"To lowercase\",\n bindKey: bindKey(\"Ctrl-Shift-U\", \"Ctrl-Shift-U\"),\n exec: function (editor) { editor.toLowerCase(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"autoindent\",\n description: \"Auto Indent\",\n bindKey: bindKey(null, null),\n exec: function (editor) { editor.autoIndent(); },\n multiSelectAction: \"forEachLine\",\n scrollIntoView: \"animate\"\n }, {\n name: \"expandtoline\",\n description: \"Expand to line\",\n bindKey: bindKey(\"Ctrl-Shift-L\", \"Command-Shift-L\"),\n exec: function (editor) {\n var range = editor.selection.getRange();\n range.start.column = range.end.column = 0;\n range.end.row++;\n editor.selection.setRange(range, false);\n },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"openlink\",\n bindKey: bindKey(\"Ctrl+F3\", \"F3\"),\n exec: function (editor) { editor.openLink(); }\n }, {\n name: \"joinlines\",\n description: \"Join lines\",\n bindKey: bindKey(null, null),\n exec: function (editor) {\n var isBackwards = editor.selection.isBackwards();\n var selectionStart = isBackwards ? editor.selection.getSelectionLead() : editor.selection.getSelectionAnchor();\n var selectionEnd = isBackwards ? editor.selection.getSelectionAnchor() : editor.selection.getSelectionLead();\n var firstLineEndCol = editor.session.doc.getLine(selectionStart.row).length;\n var selectedText = editor.session.doc.getTextRange(editor.selection.getRange());\n var selectedCount = selectedText.replace(/\\n\\s*/, \" \").length;\n var insertLine = editor.session.doc.getLine(selectionStart.row);\n for (var i = selectionStart.row + 1; i <= selectionEnd.row + 1; i++) {\n var curLine = lang.stringTrimLeft(lang.stringTrimRight(editor.session.doc.getLine(i)));\n if (curLine.length !== 0) {\n curLine = \" \" + curLine;\n }\n insertLine += curLine;\n }\n if (selectionEnd.row + 1 < (editor.session.doc.getLength() - 1)) {\n insertLine += editor.session.doc.getNewLineCharacter();\n }\n editor.clearSelection();\n editor.session.doc.replace(new Range(selectionStart.row, 0, selectionEnd.row + 2, 0), insertLine);\n if (selectedCount > 0) {\n editor.selection.moveCursorTo(selectionStart.row, selectionStart.column);\n editor.selection.selectTo(selectionStart.row, selectionStart.column + selectedCount);\n }\n else {\n firstLineEndCol = editor.session.doc.getLine(selectionStart.row).length > firstLineEndCol ? (firstLineEndCol + 1) : firstLineEndCol;\n editor.selection.moveCursorTo(selectionStart.row, firstLineEndCol);\n }\n },\n multiSelectAction: \"forEach\",\n readOnly: true\n }, {\n name: \"invertSelection\",\n description: \"Invert selection\",\n bindKey: bindKey(null, null),\n exec: function (editor) {\n var endRow = editor.session.doc.getLength() - 1;\n var endCol = editor.session.doc.getLine(endRow).length;\n var ranges = editor.selection.rangeList.ranges;\n var newRanges = [];\n if (ranges.length < 1) {\n ranges = [editor.selection.getRange()];\n }\n for (var i = 0; i < ranges.length; i++) {\n if (i == (ranges.length - 1)) {\n if (!(ranges[i].end.row === endRow && ranges[i].end.column === endCol)) {\n newRanges.push(new Range(ranges[i].end.row, ranges[i].end.column, endRow, endCol));\n }\n }\n if (i === 0) {\n if (!(ranges[i].start.row === 0 && ranges[i].start.column === 0)) {\n newRanges.push(new Range(0, 0, ranges[i].start.row, ranges[i].start.column));\n }\n }\n else {\n newRanges.push(new Range(ranges[i - 1].end.row, ranges[i - 1].end.column, ranges[i].start.row, ranges[i].start.column));\n }\n }\n editor.exitMultiSelectMode();\n editor.clearSelection();\n for (var i = 0; i < newRanges.length; i++) {\n editor.selection.addRange(newRanges[i], false);\n }\n },\n readOnly: true,\n scrollIntoView: \"none\"\n }, {\n name: \"addLineAfter\",\n description: \"Add new line after the current line\",\n exec: function (editor) {\n editor.selection.clearSelection();\n editor.navigateLineEnd();\n editor.insert(\"\\n\");\n },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"addLineBefore\",\n description: \"Add new line before the current line\",\n exec: function (editor) {\n editor.selection.clearSelection();\n var cursor = editor.getCursorPosition();\n editor.selection.moveTo(cursor.row - 1, Number.MAX_VALUE);\n editor.insert(\"\\n\");\n if (cursor.row === 0)\n editor.navigateUp();\n },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"openCommandPallete\",\n exec: function (editor) {\n console.warn(\"This is an obsolete command. Please use `openCommandPalette` instead.\");\n editor.prompt({ $type: \"commands\" });\n },\n readOnly: true\n }, {\n name: \"openCommandPalette\",\n description: \"Open command palette\",\n bindKey: bindKey(\"F1\", \"F1\"),\n exec: function (editor) {\n editor.prompt({ $type: \"commands\" });\n },\n readOnly: true\n }, {\n name: \"modeSelect\",\n description: \"Change language mode...\",\n bindKey: bindKey(null, null),\n exec: function (editor) {\n editor.prompt({ $type: \"modes\" });\n },\n readOnly: true\n }];\nfor (var i = 1; i < 9; i++) {\n exports.commands.push({\n name: \"foldToLevel\" + i,\n description: \"Fold To Level \" + i,\n level: i,\n exec: function (editor) { editor.session.foldToLevel(this.level); },\n scrollIntoView: \"center\",\n readOnly: true\n });\n}\n\n});\n\nace.define(\"ace/line_widgets\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"], function(require, exports, module){\"use strict\";\nvar dom = require(\"./lib/dom\");\nvar LineWidgets = /** @class */ (function () {\n function LineWidgets(session) {\n this.session = session;\n this.session.widgetManager = this;\n this.session.getRowLength = this.getRowLength;\n this.session.$getWidgetScreenLength = this.$getWidgetScreenLength;\n this.updateOnChange = this.updateOnChange.bind(this);\n this.renderWidgets = this.renderWidgets.bind(this);\n this.measureWidgets = this.measureWidgets.bind(this);\n this.session._changedWidgets = [];\n this.$onChangeEditor = this.$onChangeEditor.bind(this);\n this.session.on(\"change\", this.updateOnChange);\n this.session.on(\"changeFold\", this.updateOnFold);\n this.session.on(\"changeEditor\", this.$onChangeEditor);\n }\n LineWidgets.prototype.getRowLength = function (row) {\n var h;\n if (this.lineWidgets)\n h = this.lineWidgets[row] && this.lineWidgets[row].rowCount || 0;\n else\n h = 0;\n if (!this.$useWrapMode || !this.$wrapData[row]) {\n return 1 + h;\n }\n else {\n return this.$wrapData[row].length + 1 + h;\n }\n };\n LineWidgets.prototype.$getWidgetScreenLength = function () {\n var screenRows = 0;\n this.lineWidgets.forEach(function (w) {\n if (w && w.rowCount && !w.hidden)\n screenRows += w.rowCount;\n });\n return screenRows;\n };\n LineWidgets.prototype.$onChangeEditor = function (e) {\n this.attach(e.editor);\n };\n LineWidgets.prototype.attach = function (editor) {\n if (editor && editor.widgetManager && editor.widgetManager != this)\n editor.widgetManager.detach();\n if (this.editor == editor)\n return;\n this.detach();\n this.editor = editor;\n if (editor) {\n editor.widgetManager = this;\n editor.renderer.on(\"beforeRender\", this.measureWidgets);\n editor.renderer.on(\"afterRender\", this.renderWidgets);\n }\n };\n LineWidgets.prototype.detach = function (e) {\n var editor = this.editor;\n if (!editor)\n return;\n this.editor = null;\n editor.widgetManager = null;\n editor.renderer.off(\"beforeRender\", this.measureWidgets);\n editor.renderer.off(\"afterRender\", this.renderWidgets);\n var lineWidgets = this.session.lineWidgets;\n lineWidgets && lineWidgets.forEach(function (w) {\n if (w && w.el && w.el.parentNode) {\n w._inDocument = false;\n w.el.parentNode.removeChild(w.el);\n }\n });\n };\n LineWidgets.prototype.updateOnFold = function (e, session) {\n var lineWidgets = session.lineWidgets;\n if (!lineWidgets || !e.action)\n return;\n var fold = e.data;\n var start = fold.start.row;\n var end = fold.end.row;\n var hide = e.action == \"add\";\n for (var i = start + 1; i < end; i++) {\n if (lineWidgets[i])\n lineWidgets[i].hidden = hide;\n }\n if (lineWidgets[end]) {\n if (hide) {\n if (!lineWidgets[start])\n lineWidgets[start] = lineWidgets[end];\n else\n lineWidgets[end].hidden = hide;\n }\n else {\n if (lineWidgets[start] == lineWidgets[end])\n lineWidgets[start] = undefined;\n lineWidgets[end].hidden = hide;\n }\n }\n };\n LineWidgets.prototype.updateOnChange = function (delta) {\n var lineWidgets = this.session.lineWidgets;\n if (!lineWidgets)\n return;\n var startRow = delta.start.row;\n var len = delta.end.row - startRow;\n if (len === 0) {\n }\n else if (delta.action == \"remove\") {\n var removed = lineWidgets.splice(startRow + 1, len);\n if (!lineWidgets[startRow] && removed[removed.length - 1]) {\n lineWidgets[startRow] = removed.pop();\n }\n removed.forEach(function (w) {\n w && this.removeLineWidget(w);\n }, this);\n this.$updateRows();\n }\n else {\n var args = new Array(len);\n if (lineWidgets[startRow] && lineWidgets[startRow].column != null) {\n if (delta.start.column > lineWidgets[startRow].column)\n startRow++;\n }\n args.unshift(startRow, 0);\n lineWidgets.splice.apply(lineWidgets, args);\n this.$updateRows();\n }\n };\n LineWidgets.prototype.$updateRows = function () {\n var lineWidgets = this.session.lineWidgets;\n if (!lineWidgets)\n return;\n var noWidgets = true;\n lineWidgets.forEach(function (w, i) {\n if (w) {\n noWidgets = false;\n w.row = i;\n while (w.$oldWidget) {\n w.$oldWidget.row = i;\n w = w.$oldWidget;\n }\n }\n });\n if (noWidgets)\n this.session.lineWidgets = null;\n };\n LineWidgets.prototype.$registerLineWidget = function (w) {\n if (!this.session.lineWidgets)\n this.session.lineWidgets = new Array(this.session.getLength());\n var old = this.session.lineWidgets[w.row];\n if (old) {\n w.$oldWidget = old;\n if (old.el && old.el.parentNode) {\n old.el.parentNode.removeChild(old.el);\n old._inDocument = false;\n }\n }\n this.session.lineWidgets[w.row] = w;\n return w;\n };\n LineWidgets.prototype.addLineWidget = function (w) {\n this.$registerLineWidget(w);\n w.session = this.session;\n if (!this.editor)\n return w;\n var renderer = this.editor.renderer;\n if (w.html && !w.el) {\n w.el = dom.createElement(\"div\");\n w.el.innerHTML = w.html;\n }\n if (w.text && !w.el) {\n w.el = dom.createElement(\"div\");\n w.el.textContent = w.text;\n }\n if (w.el) {\n dom.addCssClass(w.el, \"ace_lineWidgetContainer\");\n if (w.className) {\n dom.addCssClass(w.el, w.className);\n }\n w.el.style.position = \"absolute\";\n w.el.style.zIndex = 5;\n renderer.container.appendChild(w.el);\n w._inDocument = true;\n if (!w.coverGutter) {\n w.el.style.zIndex = 3;\n }\n if (w.pixelHeight == null) {\n w.pixelHeight = w.el.offsetHeight;\n }\n }\n if (w.rowCount == null) {\n w.rowCount = w.pixelHeight / renderer.layerConfig.lineHeight;\n }\n var fold = this.session.getFoldAt(w.row, 0);\n w.$fold = fold;\n if (fold) {\n var lineWidgets = this.session.lineWidgets;\n if (w.row == fold.end.row && !lineWidgets[fold.start.row])\n lineWidgets[fold.start.row] = w;\n else\n w.hidden = true;\n }\n this.session._emit(\"changeFold\", { data: { start: { row: w.row } } });\n this.$updateRows();\n this.renderWidgets(null, renderer);\n this.onWidgetChanged(w);\n return w;\n };\n LineWidgets.prototype.removeLineWidget = function (w) {\n w._inDocument = false;\n w.session = null;\n if (w.el && w.el.parentNode)\n w.el.parentNode.removeChild(w.el);\n if (w.editor && w.editor.destroy)\n try {\n w.editor.destroy();\n }\n catch (e) { }\n if (this.session.lineWidgets) {\n var w1 = this.session.lineWidgets[w.row];\n if (w1 == w) {\n this.session.lineWidgets[w.row] = w.$oldWidget;\n if (w.$oldWidget)\n this.onWidgetChanged(w.$oldWidget);\n }\n else {\n while (w1) {\n if (w1.$oldWidget == w) {\n w1.$oldWidget = w.$oldWidget;\n break;\n }\n w1 = w1.$oldWidget;\n }\n }\n }\n this.session._emit(\"changeFold\", { data: { start: { row: w.row } } });\n this.$updateRows();\n };\n LineWidgets.prototype.getWidgetsAtRow = function (row) {\n var lineWidgets = this.session.lineWidgets;\n var w = lineWidgets && lineWidgets[row];\n var list = [];\n while (w) {\n list.push(w);\n w = w.$oldWidget;\n }\n return list;\n };\n LineWidgets.prototype.onWidgetChanged = function (w) {\n this.session._changedWidgets.push(w);\n this.editor && this.editor.renderer.updateFull();\n };\n LineWidgets.prototype.measureWidgets = function (e, renderer) {\n var changedWidgets = this.session._changedWidgets;\n var config = renderer.layerConfig;\n if (!changedWidgets || !changedWidgets.length)\n return;\n var min = Infinity;\n for (var i = 0; i < changedWidgets.length; i++) {\n var w = changedWidgets[i];\n if (!w || !w.el)\n continue;\n if (w.session != this.session)\n continue;\n if (!w._inDocument) {\n if (this.session.lineWidgets[w.row] != w)\n continue;\n w._inDocument = true;\n renderer.container.appendChild(w.el);\n }\n w.h = w.el.offsetHeight;\n if (!w.fixedWidth) {\n w.w = w.el.offsetWidth;\n w.screenWidth = Math.ceil(w.w / config.characterWidth);\n }\n var rowCount = w.h / config.lineHeight;\n if (w.coverLine) {\n rowCount -= this.session.getRowLineCount(w.row);\n if (rowCount < 0)\n rowCount = 0;\n }\n if (w.rowCount != rowCount) {\n w.rowCount = rowCount;\n if (w.row < min)\n min = w.row;\n }\n }\n if (min != Infinity) {\n this.session._emit(\"changeFold\", { data: { start: { row: min } } });\n this.session.lineWidgetWidth = null;\n }\n this.session._changedWidgets = [];\n };\n LineWidgets.prototype.renderWidgets = function (e, renderer) {\n var config = renderer.layerConfig;\n var lineWidgets = this.session.lineWidgets;\n if (!lineWidgets)\n return;\n var first = Math.min(this.firstRow, config.firstRow);\n var last = Math.max(this.lastRow, config.lastRow, lineWidgets.length);\n while (first > 0 && !lineWidgets[first])\n first--;\n this.firstRow = config.firstRow;\n this.lastRow = config.lastRow;\n renderer.$cursorLayer.config = config;\n for (var i = first; i <= last; i++) {\n var w = lineWidgets[i];\n if (!w || !w.el)\n continue;\n if (w.hidden) {\n w.el.style.top = -100 - (w.pixelHeight || 0) + \"px\";\n continue;\n }\n if (!w._inDocument) {\n w._inDocument = true;\n renderer.container.appendChild(w.el);\n }\n var top = renderer.$cursorLayer.getPixelPosition({ row: i, column: 0 }, true).top;\n if (!w.coverLine)\n top += config.lineHeight * this.session.getRowLineCount(w.row);\n w.el.style.top = top - config.offset + \"px\";\n var left = w.coverGutter ? 0 : renderer.gutterWidth;\n if (!w.fixedWidth)\n left -= renderer.scrollLeft;\n w.el.style.left = left + \"px\";\n if (w.fullWidth && w.screenWidth) {\n w.el.style.minWidth = config.width + 2 * config.padding + \"px\";\n }\n if (w.fixedWidth) {\n w.el.style.right = renderer.scrollBar.getWidth() + \"px\";\n }\n else {\n w.el.style.right = \"\";\n }\n }\n };\n return LineWidgets;\n}());\nexports.LineWidgets = LineWidgets;\n\n});\n\nace.define(\"ace/keyboard/gutter_handler\",[\"require\",\"exports\",\"module\",\"ace/lib/keys\",\"ace/mouse/default_gutter_handler\"], function(require, exports, module){\"use strict\";\nvar keys = require('../lib/keys');\nvar GutterTooltip = require(\"../mouse/default_gutter_handler\").GutterTooltip;\nvar GutterKeyboardHandler = /** @class */ (function () {\n function GutterKeyboardHandler(editor) {\n this.editor = editor;\n this.gutterLayer = editor.renderer.$gutterLayer;\n this.element = editor.renderer.$gutter;\n this.lines = editor.renderer.$gutterLayer.$lines;\n this.activeRowIndex = null;\n this.activeLane = null;\n this.annotationTooltip = new GutterTooltip(this.editor);\n }\n GutterKeyboardHandler.prototype.addListener = function () {\n this.element.addEventListener(\"keydown\", this.$onGutterKeyDown.bind(this));\n this.element.addEventListener(\"focusout\", this.$blurGutter.bind(this));\n this.editor.on(\"mousewheel\", this.$blurGutter.bind(this));\n };\n GutterKeyboardHandler.prototype.removeListener = function () {\n this.element.removeEventListener(\"keydown\", this.$onGutterKeyDown.bind(this));\n this.element.removeEventListener(\"focusout\", this.$blurGutter.bind(this));\n this.editor.off(\"mousewheel\", this.$blurGutter.bind(this));\n };\n GutterKeyboardHandler.prototype.$onGutterKeyDown = function (e) {\n if (this.annotationTooltip.isOpen) {\n e.preventDefault();\n if (e.keyCode === keys[\"escape\"])\n this.annotationTooltip.hideTooltip();\n return;\n }\n if (e.target === this.element) {\n if (e.keyCode != keys[\"enter\"]) {\n return;\n }\n e.preventDefault();\n var row = this.editor.getCursorPosition().row;\n if (!this.editor.isRowVisible(row))\n this.editor.scrollToLine(row, true, true);\n setTimeout(function () {\n var index = this.$rowToRowIndex(this.gutterLayer.$cursorCell.row);\n var nearestFoldIndex = this.$findNearestFoldWidget(index);\n var nearestAnnotationIndex = this.$findNearestAnnotation(index);\n if (nearestFoldIndex === null && nearestAnnotationIndex === null)\n return;\n if (nearestFoldIndex === null && nearestAnnotationIndex !== null) {\n this.activeRowIndex = nearestAnnotationIndex;\n this.activeLane = \"annotation\";\n this.$focusAnnotation(this.activeRowIndex);\n return;\n }\n if (nearestFoldIndex !== null && nearestAnnotationIndex === null) {\n this.activeRowIndex = nearestFoldIndex;\n this.activeLane = \"fold\";\n this.$focusFoldWidget(this.activeRowIndex);\n return;\n }\n if (Math.abs(nearestAnnotationIndex - index) < Math.abs(nearestFoldIndex - index)) {\n this.activeRowIndex = nearestAnnotationIndex;\n this.activeLane = \"annotation\";\n this.$focusAnnotation(this.activeRowIndex);\n return;\n }\n else {\n this.activeRowIndex = nearestFoldIndex;\n this.activeLane = \"fold\";\n this.$focusFoldWidget(this.activeRowIndex);\n return;\n }\n }.bind(this), 10);\n return;\n }\n this.$handleGutterKeyboardInteraction(e);\n setTimeout(function () {\n this.editor._signal(\"gutterkeydown\", new GutterKeyboardEvent(e, this));\n }.bind(this), 10);\n };\n GutterKeyboardHandler.prototype.$handleGutterKeyboardInteraction = function (e) {\n if (e.keyCode === keys[\"tab\"]) {\n e.preventDefault();\n return;\n }\n if (e.keyCode === keys[\"escape\"]) {\n e.preventDefault();\n this.$blurGutter();\n this.element.focus();\n this.lane = null;\n return;\n }\n if (e.keyCode === keys[\"up\"]) {\n e.preventDefault();\n switch (this.activeLane) {\n case \"fold\":\n this.$moveFoldWidgetUp();\n break;\n case \"annotation\":\n this.$moveAnnotationUp();\n break;\n }\n return;\n }\n if (e.keyCode === keys[\"down\"]) {\n e.preventDefault();\n switch (this.activeLane) {\n case \"fold\":\n this.$moveFoldWidgetDown();\n break;\n case \"annotation\":\n this.$moveAnnotationDown();\n break;\n }\n return;\n }\n if (e.keyCode === keys[\"left\"]) {\n e.preventDefault();\n this.$switchLane(\"annotation\");\n return;\n }\n if (e.keyCode === keys[\"right\"]) {\n e.preventDefault();\n this.$switchLane(\"fold\");\n return;\n }\n if (e.keyCode === keys[\"enter\"] || e.keyCode === keys[\"space\"]) {\n e.preventDefault();\n switch (this.activeLane) {\n case \"fold\":\n if (this.gutterLayer.session.foldWidgets[this.$rowIndexToRow(this.activeRowIndex)] === 'start') {\n var rowFoldingWidget = this.$rowIndexToRow(this.activeRowIndex);\n this.editor.session.onFoldWidgetClick(this.$rowIndexToRow(this.activeRowIndex), e);\n setTimeout(function () {\n if (this.$rowIndexToRow(this.activeRowIndex) !== rowFoldingWidget) {\n this.$blurFoldWidget(this.activeRowIndex);\n this.activeRowIndex = this.$rowToRowIndex(rowFoldingWidget);\n this.$focusFoldWidget(this.activeRowIndex);\n }\n }.bind(this), 10);\n break;\n }\n else if (this.gutterLayer.session.foldWidgets[this.$rowIndexToRow(this.activeRowIndex)] === 'end') {\n break;\n }\n return;\n case \"annotation\":\n var gutterElement = this.lines.cells[this.activeRowIndex].element.childNodes[2];\n var rect = gutterElement.getBoundingClientRect();\n var style = this.annotationTooltip.getElement().style;\n style.left = rect.right + \"px\";\n style.top = rect.bottom + \"px\";\n this.annotationTooltip.showTooltip(this.$rowIndexToRow(this.activeRowIndex));\n break;\n }\n return;\n }\n };\n GutterKeyboardHandler.prototype.$blurGutter = function () {\n if (this.activeRowIndex !== null) {\n switch (this.activeLane) {\n case \"fold\":\n this.$blurFoldWidget(this.activeRowIndex);\n break;\n case \"annotation\":\n this.$blurAnnotation(this.activeRowIndex);\n break;\n }\n }\n if (this.annotationTooltip.isOpen)\n this.annotationTooltip.hideTooltip();\n return;\n };\n GutterKeyboardHandler.prototype.$isFoldWidgetVisible = function (index) {\n var isRowFullyVisible = this.editor.isRowFullyVisible(this.$rowIndexToRow(index));\n var isIconVisible = this.$getFoldWidget(index).style.display !== \"none\";\n return isRowFullyVisible && isIconVisible;\n };\n GutterKeyboardHandler.prototype.$isAnnotationVisible = function (index) {\n var isRowFullyVisible = this.editor.isRowFullyVisible(this.$rowIndexToRow(index));\n var isIconVisible = this.$getAnnotation(index).style.display !== \"none\";\n return isRowFullyVisible && isIconVisible;\n };\n GutterKeyboardHandler.prototype.$getFoldWidget = function (index) {\n var cell = this.lines.get(index);\n var element = cell.element;\n return element.childNodes[1];\n };\n GutterKeyboardHandler.prototype.$getAnnotation = function (index) {\n var cell = this.lines.get(index);\n var element = cell.element;\n return element.childNodes[2];\n };\n GutterKeyboardHandler.prototype.$findNearestFoldWidget = function (index) {\n if (this.$isFoldWidgetVisible(index))\n return index;\n var i = 0;\n while (index - i > 0 || index + i < this.lines.getLength() - 1) {\n i++;\n if (index - i >= 0 && this.$isFoldWidgetVisible(index - i))\n return index - i;\n if (index + i <= this.lines.getLength() - 1 && this.$isFoldWidgetVisible(index + i))\n return index + i;\n }\n return null;\n };\n GutterKeyboardHandler.prototype.$findNearestAnnotation = function (index) {\n if (this.$isAnnotationVisible(index))\n return index;\n var i = 0;\n while (index - i > 0 || index + i < this.lines.getLength() - 1) {\n i++;\n if (index - i >= 0 && this.$isAnnotationVisible(index - i))\n return index - i;\n if (index + i <= this.lines.getLength() - 1 && this.$isAnnotationVisible(index + i))\n return index + i;\n }\n return null;\n };\n GutterKeyboardHandler.prototype.$focusFoldWidget = function (index) {\n if (index == null)\n return;\n var foldWidget = this.$getFoldWidget(index);\n foldWidget.classList.add(this.editor.renderer.keyboardFocusClassName);\n foldWidget.focus();\n };\n GutterKeyboardHandler.prototype.$focusAnnotation = function (index) {\n if (index == null)\n return;\n var annotation = this.$getAnnotation(index);\n annotation.classList.add(this.editor.renderer.keyboardFocusClassName);\n annotation.focus();\n };\n GutterKeyboardHandler.prototype.$blurFoldWidget = function (index) {\n var foldWidget = this.$getFoldWidget(index);\n foldWidget.classList.remove(this.editor.renderer.keyboardFocusClassName);\n foldWidget.blur();\n };\n GutterKeyboardHandler.prototype.$blurAnnotation = function (index) {\n var annotation = this.$getAnnotation(index);\n annotation.classList.remove(this.editor.renderer.keyboardFocusClassName);\n annotation.blur();\n };\n GutterKeyboardHandler.prototype.$moveFoldWidgetUp = function () {\n var index = this.activeRowIndex;\n while (index > 0) {\n index--;\n if (this.$isFoldWidgetVisible(index)) {\n this.$blurFoldWidget(this.activeRowIndex);\n this.activeRowIndex = index;\n this.$focusFoldWidget(this.activeRowIndex);\n return;\n }\n }\n return;\n };\n GutterKeyboardHandler.prototype.$moveFoldWidgetDown = function () {\n var index = this.activeRowIndex;\n while (index < this.lines.getLength() - 1) {\n index++;\n if (this.$isFoldWidgetVisible(index)) {\n this.$blurFoldWidget(this.activeRowIndex);\n this.activeRowIndex = index;\n this.$focusFoldWidget(this.activeRowIndex);\n return;\n }\n }\n return;\n };\n GutterKeyboardHandler.prototype.$moveAnnotationUp = function () {\n var index = this.activeRowIndex;\n while (index > 0) {\n index--;\n if (this.$isAnnotationVisible(index)) {\n this.$blurAnnotation(this.activeRowIndex);\n this.activeRowIndex = index;\n this.$focusAnnotation(this.activeRowIndex);\n return;\n }\n }\n return;\n };\n GutterKeyboardHandler.prototype.$moveAnnotationDown = function () {\n var index = this.activeRowIndex;\n while (index < this.lines.getLength() - 1) {\n index++;\n if (this.$isAnnotationVisible(index)) {\n this.$blurAnnotation(this.activeRowIndex);\n this.activeRowIndex = index;\n this.$focusAnnotation(this.activeRowIndex);\n return;\n }\n }\n return;\n };\n GutterKeyboardHandler.prototype.$switchLane = function (desinationLane) {\n switch (desinationLane) {\n case \"annotation\":\n if (this.activeLane === \"annotation\") {\n break;\n }\n var annotationIndex = this.$findNearestAnnotation(this.activeRowIndex);\n if (annotationIndex == null) {\n break;\n }\n this.activeLane = \"annotation\";\n this.$blurFoldWidget(this.activeRowIndex);\n this.activeRowIndex = annotationIndex;\n this.$focusAnnotation(this.activeRowIndex);\n break;\n case \"fold\":\n if (this.activeLane === \"fold\") {\n break;\n }\n var foldWidgetIndex = this.$findNearestFoldWidget(this.activeRowIndex);\n if (foldWidgetIndex == null) {\n break;\n }\n this.activeLane = \"fold\";\n this.$blurAnnotation(this.activeRowIndex);\n this.activeRowIndex = foldWidgetIndex;\n this.$focusFoldWidget(this.activeRowIndex);\n break;\n }\n return;\n };\n GutterKeyboardHandler.prototype.$rowIndexToRow = function (index) {\n var cell = this.lines.get(index);\n if (cell)\n return cell.row;\n return null;\n };\n GutterKeyboardHandler.prototype.$rowToRowIndex = function (row) {\n for (var i = 0; i < this.lines.getLength(); i++) {\n var cell = this.lines.get(i);\n if (cell.row == row)\n return i;\n }\n return null;\n };\n return GutterKeyboardHandler;\n}());\nexports.GutterKeyboardHandler = GutterKeyboardHandler;\nvar GutterKeyboardEvent = /** @class */ (function () {\n function GutterKeyboardEvent(domEvent, gutterKeyboardHandler) {\n this.gutterKeyboardHandler = gutterKeyboardHandler;\n this.domEvent = domEvent;\n }\n GutterKeyboardEvent.prototype.getKey = function () {\n return keys.keyCodeToString(this.domEvent.keyCode);\n };\n GutterKeyboardEvent.prototype.getRow = function () {\n return this.gutterKeyboardHandler.$rowIndexToRow(this.gutterKeyboardHandler.activeRowIndex);\n };\n GutterKeyboardEvent.prototype.isInAnnotationLane = function () {\n return this.gutterKeyboardHandler.activeLane === \"annotation\";\n };\n GutterKeyboardEvent.prototype.isInFoldLane = function () {\n return this.gutterKeyboardHandler.activeLane === \"fold\";\n };\n return GutterKeyboardEvent;\n}());\nexports.GutterKeyboardEvent = GutterKeyboardEvent;\n\n});\n\nace.define(\"ace/editor\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/dom\",\"ace/lib/lang\",\"ace/lib/useragent\",\"ace/keyboard/textinput\",\"ace/mouse/mouse_handler\",\"ace/mouse/fold_handler\",\"ace/keyboard/keybinding\",\"ace/edit_session\",\"ace/search\",\"ace/range\",\"ace/lib/event_emitter\",\"ace/commands/command_manager\",\"ace/commands/default_commands\",\"ace/config\",\"ace/token_iterator\",\"ace/line_widgets\",\"ace/keyboard/gutter_handler\",\"ace/config\",\"ace/clipboard\",\"ace/lib/keys\"], function(require, exports, module){\"use strict\";\nvar __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar oop = require(\"./lib/oop\");\nvar dom = require(\"./lib/dom\");\nvar lang = require(\"./lib/lang\");\nvar useragent = require(\"./lib/useragent\");\nvar TextInput = require(\"./keyboard/textinput\").TextInput;\nvar MouseHandler = require(\"./mouse/mouse_handler\").MouseHandler;\nvar FoldHandler = require(\"./mouse/fold_handler\").FoldHandler;\nvar KeyBinding = require(\"./keyboard/keybinding\").KeyBinding;\nvar EditSession = require(\"./edit_session\").EditSession;\nvar Search = require(\"./search\").Search;\nvar Range = require(\"./range\").Range;\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar CommandManager = require(\"./commands/command_manager\").CommandManager;\nvar defaultCommands = require(\"./commands/default_commands\").commands;\nvar config = require(\"./config\");\nvar TokenIterator = require(\"./token_iterator\").TokenIterator;\nvar LineWidgets = require(\"./line_widgets\").LineWidgets;\nvar GutterKeyboardHandler = require(\"./keyboard/gutter_handler\").GutterKeyboardHandler;\nvar nls = require(\"./config\").nls;\nvar clipboard = require(\"./clipboard\");\nvar keys = require('./lib/keys');\nvar Editor = /** @class */ (function () {\n function Editor(renderer, session, options) {\n this.$toDestroy = [];\n var container = renderer.getContainerElement();\n this.container = container;\n this.renderer = renderer;\n this.id = \"editor\" + (++Editor.$uid);\n this.commands = new CommandManager(useragent.isMac ? \"mac\" : \"win\", defaultCommands);\n if (typeof document == \"object\") {\n this.textInput = new TextInput(renderer.getTextAreaContainer(), this);\n this.renderer.textarea = this.textInput.getElement();\n this.$mouseHandler = new MouseHandler(this);\n new FoldHandler(this);\n }\n this.keyBinding = new KeyBinding(this);\n this.$search = new Search().set({\n wrap: true\n });\n this.$historyTracker = this.$historyTracker.bind(this);\n this.commands.on(\"exec\", this.$historyTracker);\n this.$initOperationListeners();\n this._$emitInputEvent = lang.delayedCall(function () {\n this._signal(\"input\", {});\n if (this.session && !this.session.destroyed)\n this.session.bgTokenizer.scheduleStart();\n }.bind(this));\n this.on(\"change\", function (_, _self) {\n _self._$emitInputEvent.schedule(31);\n });\n this.setSession(session || options && options.session || new EditSession(\"\"));\n config.resetOptions(this);\n if (options)\n this.setOptions(options);\n config._signal(\"editor\", this);\n }\n Editor.prototype.$initOperationListeners = function () {\n this.commands.on(\"exec\", this.startOperation.bind(this), true);\n this.commands.on(\"afterExec\", this.endOperation.bind(this), true);\n this.$opResetTimer = lang.delayedCall(this.endOperation.bind(this, true));\n this.on(\"change\", function () {\n if (!this.curOp) {\n this.startOperation();\n this.curOp.selectionBefore = this.$lastSel;\n }\n this.curOp.docChanged = true;\n }.bind(this), true);\n this.on(\"changeSelection\", function () {\n if (!this.curOp) {\n this.startOperation();\n this.curOp.selectionBefore = this.$lastSel;\n }\n this.curOp.selectionChanged = true;\n }.bind(this), true);\n };\n Editor.prototype.startOperation = function (commandEvent) {\n if (this.curOp) {\n if (!commandEvent || this.curOp.command)\n return;\n this.prevOp = this.curOp;\n }\n if (!commandEvent) {\n this.previousCommand = null;\n commandEvent = {};\n }\n this.$opResetTimer.schedule();\n this.curOp = this.session.curOp = {\n command: commandEvent.command || {},\n args: commandEvent.args,\n scrollTop: this.renderer.scrollTop\n };\n this.curOp.selectionBefore = this.selection.toJSON();\n };\n Editor.prototype.endOperation = function (e) {\n if (this.curOp && this.session) {\n if (e && e.returnValue === false || !this.session)\n return (this.curOp = null);\n if (e == true && this.curOp.command && this.curOp.command.name == \"mouse\")\n return;\n this._signal(\"beforeEndOperation\");\n if (!this.curOp)\n return;\n var command = this.curOp.command;\n var scrollIntoView = command && command.scrollIntoView;\n if (scrollIntoView) {\n switch (scrollIntoView) {\n case \"center-animate\":\n scrollIntoView = \"animate\";\n case \"center\":\n this.renderer.scrollCursorIntoView(null, 0.5);\n break;\n case \"animate\":\n case \"cursor\":\n this.renderer.scrollCursorIntoView();\n break;\n case \"selectionPart\":\n var range = this.selection.getRange();\n var config = this.renderer.layerConfig;\n if (range.start.row >= config.lastRow || range.end.row <= config.firstRow) {\n this.renderer.scrollSelectionIntoView(this.selection.anchor, this.selection.lead);\n }\n break;\n default:\n break;\n }\n if (scrollIntoView == \"animate\")\n this.renderer.animateScrolling(this.curOp.scrollTop);\n }\n var sel = this.selection.toJSON();\n this.curOp.selectionAfter = sel;\n this.$lastSel = this.selection.toJSON();\n this.session.getUndoManager().addSelection(sel);\n this.prevOp = this.curOp;\n this.curOp = null;\n }\n };\n Editor.prototype.$historyTracker = function (e) {\n if (!this.$mergeUndoDeltas)\n return;\n var prev = this.prevOp;\n var mergeableCommands = this.$mergeableCommands;\n var shouldMerge = prev.command && (e.command.name == prev.command.name);\n if (e.command.name == \"insertstring\") {\n var text = e.args;\n if (this.mergeNextCommand === undefined)\n this.mergeNextCommand = true;\n shouldMerge = shouldMerge\n && this.mergeNextCommand // previous command allows to coalesce with\n && (!/\\s/.test(text) || /\\s/.test(prev.args)); // previous insertion was of same type\n this.mergeNextCommand = true;\n }\n else {\n shouldMerge = shouldMerge\n && mergeableCommands.indexOf(e.command.name) !== -1; // the command is mergeable\n }\n if (this.$mergeUndoDeltas != \"always\"\n && Date.now() - this.sequenceStartTime > 2000) {\n shouldMerge = false; // the sequence is too long\n }\n if (shouldMerge)\n this.session.mergeUndoDeltas = true;\n else if (mergeableCommands.indexOf(e.command.name) !== -1)\n this.sequenceStartTime = Date.now();\n };\n Editor.prototype.setKeyboardHandler = function (keyboardHandler, cb) {\n if (keyboardHandler && typeof keyboardHandler === \"string\" && keyboardHandler != \"ace\") {\n this.$keybindingId = keyboardHandler;\n var _self = this;\n config.loadModule([\"keybinding\", keyboardHandler], function (module) {\n if (_self.$keybindingId == keyboardHandler)\n _self.keyBinding.setKeyboardHandler(module && module.handler);\n cb && cb();\n });\n }\n else {\n this.$keybindingId = null;\n this.keyBinding.setKeyboardHandler(keyboardHandler);\n cb && cb();\n }\n };\n Editor.prototype.getKeyboardHandler = function () {\n return this.keyBinding.getKeyboardHandler();\n };\n Editor.prototype.setSession = function (session) {\n if (this.session == session)\n return;\n if (this.curOp)\n this.endOperation();\n this.curOp = {};\n var oldSession = this.session;\n if (oldSession) {\n this.session.off(\"change\", this.$onDocumentChange);\n this.session.off(\"changeMode\", this.$onChangeMode);\n this.session.off(\"tokenizerUpdate\", this.$onTokenizerUpdate);\n this.session.off(\"changeTabSize\", this.$onChangeTabSize);\n this.session.off(\"changeWrapLimit\", this.$onChangeWrapLimit);\n this.session.off(\"changeWrapMode\", this.$onChangeWrapMode);\n this.session.off(\"changeFold\", this.$onChangeFold);\n this.session.off(\"changeFrontMarker\", this.$onChangeFrontMarker);\n this.session.off(\"changeBackMarker\", this.$onChangeBackMarker);\n this.session.off(\"changeBreakpoint\", this.$onChangeBreakpoint);\n this.session.off(\"changeAnnotation\", this.$onChangeAnnotation);\n this.session.off(\"changeOverwrite\", this.$onCursorChange);\n this.session.off(\"changeScrollTop\", this.$onScrollTopChange);\n this.session.off(\"changeScrollLeft\", this.$onScrollLeftChange);\n var selection = this.session.getSelection();\n selection.off(\"changeCursor\", this.$onCursorChange);\n selection.off(\"changeSelection\", this.$onSelectionChange);\n }\n this.session = session;\n if (session) {\n this.$onDocumentChange = this.onDocumentChange.bind(this);\n session.on(\"change\", this.$onDocumentChange);\n this.renderer.setSession(session);\n this.$onChangeMode = this.onChangeMode.bind(this);\n session.on(\"changeMode\", this.$onChangeMode);\n this.$onTokenizerUpdate = this.onTokenizerUpdate.bind(this);\n session.on(\"tokenizerUpdate\", this.$onTokenizerUpdate);\n this.$onChangeTabSize = this.renderer.onChangeTabSize.bind(this.renderer);\n session.on(\"changeTabSize\", this.$onChangeTabSize);\n this.$onChangeWrapLimit = this.onChangeWrapLimit.bind(this);\n session.on(\"changeWrapLimit\", this.$onChangeWrapLimit);\n this.$onChangeWrapMode = this.onChangeWrapMode.bind(this);\n session.on(\"changeWrapMode\", this.$onChangeWrapMode);\n this.$onChangeFold = this.onChangeFold.bind(this);\n session.on(\"changeFold\", this.$onChangeFold);\n this.$onChangeFrontMarker = this.onChangeFrontMarker.bind(this);\n this.session.on(\"changeFrontMarker\", this.$onChangeFrontMarker);\n this.$onChangeBackMarker = this.onChangeBackMarker.bind(this);\n this.session.on(\"changeBackMarker\", this.$onChangeBackMarker);\n this.$onChangeBreakpoint = this.onChangeBreakpoint.bind(this);\n this.session.on(\"changeBreakpoint\", this.$onChangeBreakpoint);\n this.$onChangeAnnotation = this.onChangeAnnotation.bind(this);\n this.session.on(\"changeAnnotation\", this.$onChangeAnnotation);\n this.$onCursorChange = this.onCursorChange.bind(this);\n this.session.on(\"changeOverwrite\", this.$onCursorChange);\n this.$onScrollTopChange = this.onScrollTopChange.bind(this);\n this.session.on(\"changeScrollTop\", this.$onScrollTopChange);\n this.$onScrollLeftChange = this.onScrollLeftChange.bind(this);\n this.session.on(\"changeScrollLeft\", this.$onScrollLeftChange);\n this.selection = session.getSelection();\n this.selection.on(\"changeCursor\", this.$onCursorChange);\n this.$onSelectionChange = this.onSelectionChange.bind(this);\n this.selection.on(\"changeSelection\", this.$onSelectionChange);\n this.onChangeMode();\n this.onCursorChange();\n this.onScrollTopChange();\n this.onScrollLeftChange();\n this.onSelectionChange();\n this.onChangeFrontMarker();\n this.onChangeBackMarker();\n this.onChangeBreakpoint();\n this.onChangeAnnotation();\n this.session.getUseWrapMode() && this.renderer.adjustWrapLimit();\n this.renderer.updateFull();\n }\n else {\n this.selection = null;\n this.renderer.setSession(session);\n }\n this._signal(\"changeSession\", {\n session: session,\n oldSession: oldSession\n });\n this.curOp = null;\n oldSession && oldSession._signal(\"changeEditor\", { oldEditor: this });\n session && session._signal(\"changeEditor\", { editor: this });\n if (session && !session.destroyed)\n session.bgTokenizer.scheduleStart();\n };\n Editor.prototype.getSession = function () {\n return this.session;\n };\n Editor.prototype.setValue = function (val, cursorPos) {\n this.session.doc.setValue(val);\n if (!cursorPos)\n this.selectAll();\n else if (cursorPos == 1)\n this.navigateFileEnd();\n else if (cursorPos == -1)\n this.navigateFileStart();\n return val;\n };\n Editor.prototype.getValue = function () {\n return this.session.getValue();\n };\n Editor.prototype.getSelection = function () {\n return this.selection;\n };\n Editor.prototype.resize = function (force) {\n this.renderer.onResize(force);\n };\n Editor.prototype.setTheme = function (theme, cb) {\n this.renderer.setTheme(theme, cb);\n };\n Editor.prototype.getTheme = function () {\n return this.renderer.getTheme();\n };\n Editor.prototype.setStyle = function (style) {\n this.renderer.setStyle(style);\n };\n Editor.prototype.unsetStyle = function (style) {\n this.renderer.unsetStyle(style);\n };\n Editor.prototype.getFontSize = function () {\n return this.getOption(\"fontSize\") ||\n dom.computedStyle(this.container).fontSize;\n };\n Editor.prototype.setFontSize = function (size) {\n this.setOption(\"fontSize\", size);\n };\n Editor.prototype.$highlightBrackets = function () {\n if (this.$highlightPending) {\n return;\n }\n var self = this;\n this.$highlightPending = true;\n setTimeout(function () {\n self.$highlightPending = false;\n var session = self.session;\n if (!session || session.destroyed)\n return;\n if (session.$bracketHighlight) {\n session.$bracketHighlight.markerIds.forEach(function (id) {\n session.removeMarker(id);\n });\n session.$bracketHighlight = null;\n }\n var pos = self.getCursorPosition();\n var handler = self.getKeyboardHandler();\n var isBackwards = handler && handler.$getDirectionForHighlight && handler.$getDirectionForHighlight(self);\n var ranges = session.getMatchingBracketRanges(pos, isBackwards);\n if (!ranges) {\n var iterator = new TokenIterator(session, pos.row, pos.column);\n var token = iterator.getCurrentToken();\n if (token && /\\b(?:tag-open|tag-name)/.test(token.type)) {\n var tagNamesRanges = session.getMatchingTags(pos);\n if (tagNamesRanges)\n ranges = [tagNamesRanges.openTagName, tagNamesRanges.closeTagName];\n }\n }\n if (!ranges && session.$mode.getMatching)\n ranges = session.$mode.getMatching(self.session);\n if (!ranges) {\n if (self.getHighlightIndentGuides())\n self.renderer.$textLayer.$highlightIndentGuide();\n return;\n }\n var markerType = \"ace_bracket\";\n if (!Array.isArray(ranges)) {\n ranges = [ranges];\n }\n else if (ranges.length == 1) {\n markerType = \"ace_error_bracket\";\n }\n if (ranges.length == 2) {\n if (Range.comparePoints(ranges[0].end, ranges[1].start) == 0)\n ranges = [Range.fromPoints(ranges[0].start, ranges[1].end)];\n else if (Range.comparePoints(ranges[0].start, ranges[1].end) == 0)\n ranges = [Range.fromPoints(ranges[1].start, ranges[0].end)];\n }\n session.$bracketHighlight = {\n ranges: ranges,\n markerIds: ranges.map(function (range) {\n return session.addMarker(range, markerType, \"text\");\n })\n };\n if (self.getHighlightIndentGuides())\n self.renderer.$textLayer.$highlightIndentGuide();\n }, 50);\n };\n Editor.prototype.focus = function () {\n this.textInput.focus();\n };\n Editor.prototype.isFocused = function () {\n return this.textInput.isFocused();\n };\n Editor.prototype.blur = function () {\n this.textInput.blur();\n };\n Editor.prototype.onFocus = function (e) {\n if (this.$isFocused)\n return;\n this.$isFocused = true;\n this.renderer.showCursor();\n this.renderer.visualizeFocus();\n this._emit(\"focus\", e);\n };\n Editor.prototype.onBlur = function (e) {\n if (!this.$isFocused)\n return;\n this.$isFocused = false;\n this.renderer.hideCursor();\n this.renderer.visualizeBlur();\n this._emit(\"blur\", e);\n };\n Editor.prototype.$cursorChange = function () {\n this.renderer.updateCursor();\n this.$highlightBrackets();\n this.$updateHighlightActiveLine();\n };\n Editor.prototype.onDocumentChange = function (delta) {\n var wrap = this.session.$useWrapMode;\n var lastRow = (delta.start.row == delta.end.row ? delta.end.row : Infinity);\n this.renderer.updateLines(delta.start.row, lastRow, wrap);\n this._signal(\"change\", delta);\n this.$cursorChange();\n };\n Editor.prototype.onTokenizerUpdate = function (e) {\n var rows = e.data;\n this.renderer.updateLines(rows.first, rows.last);\n };\n Editor.prototype.onScrollTopChange = function () {\n this.renderer.scrollToY(this.session.getScrollTop());\n };\n Editor.prototype.onScrollLeftChange = function () {\n this.renderer.scrollToX(this.session.getScrollLeft());\n };\n Editor.prototype.onCursorChange = function () {\n this.$cursorChange();\n this._signal(\"changeSelection\");\n };\n Editor.prototype.$updateHighlightActiveLine = function () {\n var session = this.getSession();\n var highlight;\n if (this.$highlightActiveLine) {\n if (this.$selectionStyle != \"line\" || !this.selection.isMultiLine())\n highlight = this.getCursorPosition();\n if (this.renderer.theme && this.renderer.theme.$selectionColorConflict && !this.selection.isEmpty())\n highlight = false;\n if (this.renderer.$maxLines && this.session.getLength() === 1 && !(this.renderer.$minLines > 1))\n highlight = false;\n }\n if (session.$highlightLineMarker && !highlight) {\n session.removeMarker(session.$highlightLineMarker.id);\n session.$highlightLineMarker = null;\n }\n else if (!session.$highlightLineMarker && highlight) {\n var range = new Range(highlight.row, highlight.column, highlight.row, Infinity);\n range.id = session.addMarker(range, \"ace_active-line\", \"screenLine\");\n session.$highlightLineMarker = range;\n }\n else if (highlight) {\n session.$highlightLineMarker.start.row = highlight.row;\n session.$highlightLineMarker.end.row = highlight.row;\n session.$highlightLineMarker.start.column = highlight.column;\n session._signal(\"changeBackMarker\");\n }\n };\n Editor.prototype.onSelectionChange = function (e) {\n var session = this.session;\n if (session.$selectionMarker) {\n session.removeMarker(session.$selectionMarker);\n }\n session.$selectionMarker = null;\n if (!this.selection.isEmpty()) {\n var range = this.selection.getRange();\n var style = this.getSelectionStyle();\n session.$selectionMarker = session.addMarker(range, \"ace_selection\", style);\n }\n else {\n this.$updateHighlightActiveLine();\n }\n var re = this.$highlightSelectedWord && this.$getSelectionHighLightRegexp();\n this.session.highlight(re);\n this._signal(\"changeSelection\");\n };\n Editor.prototype.$getSelectionHighLightRegexp = function () {\n var session = this.session;\n var selection = this.getSelectionRange();\n if (selection.isEmpty() || selection.isMultiLine())\n return;\n var startColumn = selection.start.column;\n var endColumn = selection.end.column;\n var line = session.getLine(selection.start.row);\n var needle = line.substring(startColumn, endColumn);\n if (needle.length > 5000 || !/[\\w\\d]/.test(needle))\n return;\n var re = this.$search.$assembleRegExp({\n wholeWord: true,\n caseSensitive: true,\n needle: needle\n });\n var wordWithBoundary = line.substring(startColumn - 1, endColumn + 1);\n if (!re.test(wordWithBoundary))\n return;\n return re;\n };\n Editor.prototype.onChangeFrontMarker = function () {\n this.renderer.updateFrontMarkers();\n };\n Editor.prototype.onChangeBackMarker = function () {\n this.renderer.updateBackMarkers();\n };\n Editor.prototype.onChangeBreakpoint = function () {\n this.renderer.updateBreakpoints();\n };\n Editor.prototype.onChangeAnnotation = function () {\n this.renderer.setAnnotations(this.session.getAnnotations());\n };\n Editor.prototype.onChangeMode = function (e) {\n this.renderer.updateText();\n this._emit(\"changeMode\", e);\n };\n Editor.prototype.onChangeWrapLimit = function () {\n this.renderer.updateFull();\n };\n Editor.prototype.onChangeWrapMode = function () {\n this.renderer.onResize(true);\n };\n Editor.prototype.onChangeFold = function () {\n this.$updateHighlightActiveLine();\n this.renderer.updateFull();\n };\n Editor.prototype.getSelectedText = function () {\n return this.session.getTextRange(this.getSelectionRange());\n };\n Editor.prototype.getCopyText = function () {\n var text = this.getSelectedText();\n var nl = this.session.doc.getNewLineCharacter();\n var copyLine = false;\n if (!text && this.$copyWithEmptySelection) {\n copyLine = true;\n var ranges = this.selection.getAllRanges();\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i];\n if (i && ranges[i - 1].start.row == range.start.row)\n continue;\n text += this.session.getLine(range.start.row) + nl;\n }\n }\n var e = { text: text };\n this._signal(\"copy\", e);\n clipboard.lineMode = copyLine ? e.text : false;\n return e.text;\n };\n Editor.prototype.onCopy = function () {\n this.commands.exec(\"copy\", this);\n };\n Editor.prototype.onCut = function () {\n this.commands.exec(\"cut\", this);\n };\n Editor.prototype.onPaste = function (text, event) {\n var e = { text: text, event: event };\n this.commands.exec(\"paste\", this, e);\n };\n Editor.prototype.$handlePaste = function (e) {\n if (typeof e == \"string\")\n e = { text: e };\n this._signal(\"paste\", e);\n var text = e.text;\n var lineMode = text === clipboard.lineMode;\n var session = this.session;\n if (!this.inMultiSelectMode || this.inVirtualSelectionMode) {\n if (lineMode)\n session.insert({ row: this.selection.lead.row, column: 0 }, text);\n else\n this.insert(text);\n }\n else if (lineMode) {\n this.selection.rangeList.ranges.forEach(function (range) {\n session.insert({ row: range.start.row, column: 0 }, text);\n });\n }\n else {\n var lines = text.split(/\\r\\n|\\r|\\n/);\n var ranges = this.selection.rangeList.ranges;\n var isFullLine = lines.length == 2 && (!lines[0] || !lines[1]);\n if (lines.length != ranges.length || isFullLine)\n return this.commands.exec(\"insertstring\", this, text);\n for (var i = ranges.length; i--;) {\n var range = ranges[i];\n if (!range.isEmpty())\n session.remove(range);\n session.insert(range.start, lines[i]);\n }\n }\n };\n Editor.prototype.execCommand = function (command, args) {\n return this.commands.exec(command, this, args);\n };\n Editor.prototype.insert = function (text, pasted) {\n var session = this.session;\n var mode = session.getMode();\n var cursor = this.getCursorPosition();\n if (this.getBehavioursEnabled() && !pasted) {\n var transform = mode.transformAction(session.getState(cursor.row), 'insertion', this, session, text);\n if (transform) {\n if (text !== transform.text) {\n if (!this.inVirtualSelectionMode) {\n this.session.mergeUndoDeltas = false;\n this.mergeNextCommand = false;\n }\n }\n text = transform.text;\n }\n }\n if (text == \"\\t\")\n text = this.session.getTabString();\n if (!this.selection.isEmpty()) {\n var range = this.getSelectionRange();\n cursor = this.session.remove(range);\n this.clearSelection();\n }\n else if (this.session.getOverwrite() && text.indexOf(\"\\n\") == -1) {\n var range = new Range.fromPoints(cursor, cursor);\n range.end.column += text.length;\n this.session.remove(range);\n }\n if (text == \"\\n\" || text == \"\\r\\n\") {\n var line = session.getLine(cursor.row);\n if (cursor.column > line.search(/\\S|$/)) {\n var d = line.substr(cursor.column).search(/\\S|$/);\n session.doc.removeInLine(cursor.row, cursor.column, cursor.column + d);\n }\n }\n this.clearSelection();\n var start = cursor.column;\n var lineState = session.getState(cursor.row);\n var line = session.getLine(cursor.row);\n var shouldOutdent = mode.checkOutdent(lineState, line, text);\n session.insert(cursor, text);\n if (transform && transform.selection) {\n if (transform.selection.length == 2) { // Transform relative to the current column\n this.selection.setSelectionRange(new Range(cursor.row, start + transform.selection[0], cursor.row, start + transform.selection[1]));\n }\n else { // Transform relative to the current row.\n this.selection.setSelectionRange(new Range(cursor.row + transform.selection[0], transform.selection[1], cursor.row + transform.selection[2], transform.selection[3]));\n }\n }\n if (this.$enableAutoIndent) {\n if (session.getDocument().isNewLine(text)) {\n var lineIndent = mode.getNextLineIndent(lineState, line.slice(0, cursor.column), session.getTabString());\n session.insert({ row: cursor.row + 1, column: 0 }, lineIndent);\n }\n if (shouldOutdent)\n mode.autoOutdent(lineState, session, cursor.row);\n }\n };\n Editor.prototype.autoIndent = function () {\n var session = this.session;\n var mode = session.getMode();\n var startRow, endRow;\n if (this.selection.isEmpty()) {\n startRow = 0;\n endRow = session.doc.getLength() - 1;\n }\n else {\n var selectedRange = this.getSelectionRange();\n startRow = selectedRange.start.row;\n endRow = selectedRange.end.row;\n }\n var prevLineState = \"\";\n var prevLine = \"\";\n var lineIndent = \"\";\n var line, currIndent, range;\n var tab = session.getTabString();\n for (var row = startRow; row <= endRow; row++) {\n if (row > 0) {\n prevLineState = session.getState(row - 1);\n prevLine = session.getLine(row - 1);\n lineIndent = mode.getNextLineIndent(prevLineState, prevLine, tab);\n }\n line = session.getLine(row);\n currIndent = mode.$getIndent(line);\n if (lineIndent !== currIndent) {\n if (currIndent.length > 0) {\n range = new Range(row, 0, row, currIndent.length);\n session.remove(range);\n }\n if (lineIndent.length > 0) {\n session.insert({ row: row, column: 0 }, lineIndent);\n }\n }\n mode.autoOutdent(prevLineState, session, row);\n }\n };\n Editor.prototype.onTextInput = function (text, composition) {\n if (!composition)\n return this.keyBinding.onTextInput(text);\n this.startOperation({ command: { name: \"insertstring\" } });\n var applyComposition = this.applyComposition.bind(this, text, composition);\n if (this.selection.rangeCount)\n this.forEachSelection(applyComposition);\n else\n applyComposition();\n this.endOperation();\n };\n Editor.prototype.applyComposition = function (text, composition) {\n if (composition.extendLeft || composition.extendRight) {\n var r = this.selection.getRange();\n r.start.column -= composition.extendLeft;\n r.end.column += composition.extendRight;\n if (r.start.column < 0) {\n r.start.row--;\n r.start.column += this.session.getLine(r.start.row).length + 1;\n }\n this.selection.setRange(r);\n if (!text && !r.isEmpty())\n this.remove();\n }\n if (text || !this.selection.isEmpty())\n this.insert(text, true);\n if (composition.restoreStart || composition.restoreEnd) {\n var r = this.selection.getRange();\n r.start.column -= composition.restoreStart;\n r.end.column -= composition.restoreEnd;\n this.selection.setRange(r);\n }\n };\n Editor.prototype.onCommandKey = function (e, hashId, keyCode) {\n return this.keyBinding.onCommandKey(e, hashId, keyCode);\n };\n Editor.prototype.setOverwrite = function (overwrite) {\n this.session.setOverwrite(overwrite);\n };\n Editor.prototype.getOverwrite = function () {\n return this.session.getOverwrite();\n };\n Editor.prototype.toggleOverwrite = function () {\n this.session.toggleOverwrite();\n };\n Editor.prototype.setScrollSpeed = function (speed) {\n this.setOption(\"scrollSpeed\", speed);\n };\n Editor.prototype.getScrollSpeed = function () {\n return this.getOption(\"scrollSpeed\");\n };\n Editor.prototype.setDragDelay = function (dragDelay) {\n this.setOption(\"dragDelay\", dragDelay);\n };\n Editor.prototype.getDragDelay = function () {\n return this.getOption(\"dragDelay\");\n };\n Editor.prototype.setSelectionStyle = function (val) {\n this.setOption(\"selectionStyle\", val);\n };\n Editor.prototype.getSelectionStyle = function () {\n return this.getOption(\"selectionStyle\");\n };\n Editor.prototype.setHighlightActiveLine = function (shouldHighlight) {\n this.setOption(\"highlightActiveLine\", shouldHighlight);\n };\n Editor.prototype.getHighlightActiveLine = function () {\n return this.getOption(\"highlightActiveLine\");\n };\n Editor.prototype.setHighlightGutterLine = function (shouldHighlight) {\n this.setOption(\"highlightGutterLine\", shouldHighlight);\n };\n Editor.prototype.getHighlightGutterLine = function () {\n return this.getOption(\"highlightGutterLine\");\n };\n Editor.prototype.setHighlightSelectedWord = function (shouldHighlight) {\n this.setOption(\"highlightSelectedWord\", shouldHighlight);\n };\n Editor.prototype.getHighlightSelectedWord = function () {\n return this.$highlightSelectedWord;\n };\n Editor.prototype.setAnimatedScroll = function (shouldAnimate) {\n this.renderer.setAnimatedScroll(shouldAnimate);\n };\n Editor.prototype.getAnimatedScroll = function () {\n return this.renderer.getAnimatedScroll();\n };\n Editor.prototype.setShowInvisibles = function (showInvisibles) {\n this.renderer.setShowInvisibles(showInvisibles);\n };\n Editor.prototype.getShowInvisibles = function () {\n return this.renderer.getShowInvisibles();\n };\n Editor.prototype.setDisplayIndentGuides = function (display) {\n this.renderer.setDisplayIndentGuides(display);\n };\n Editor.prototype.getDisplayIndentGuides = function () {\n return this.renderer.getDisplayIndentGuides();\n };\n Editor.prototype.setHighlightIndentGuides = function (highlight) {\n this.renderer.setHighlightIndentGuides(highlight);\n };\n Editor.prototype.getHighlightIndentGuides = function () {\n return this.renderer.getHighlightIndentGuides();\n };\n Editor.prototype.setShowPrintMargin = function (showPrintMargin) {\n this.renderer.setShowPrintMargin(showPrintMargin);\n };\n Editor.prototype.getShowPrintMargin = function () {\n return this.renderer.getShowPrintMargin();\n };\n Editor.prototype.setPrintMarginColumn = function (showPrintMargin) {\n this.renderer.setPrintMarginColumn(showPrintMargin);\n };\n Editor.prototype.getPrintMarginColumn = function () {\n return this.renderer.getPrintMarginColumn();\n };\n Editor.prototype.setReadOnly = function (readOnly) {\n this.setOption(\"readOnly\", readOnly);\n };\n Editor.prototype.getReadOnly = function () {\n return this.getOption(\"readOnly\");\n };\n Editor.prototype.setBehavioursEnabled = function (enabled) {\n this.setOption(\"behavioursEnabled\", enabled);\n };\n Editor.prototype.getBehavioursEnabled = function () {\n return this.getOption(\"behavioursEnabled\");\n };\n Editor.prototype.setWrapBehavioursEnabled = function (enabled) {\n this.setOption(\"wrapBehavioursEnabled\", enabled);\n };\n Editor.prototype.getWrapBehavioursEnabled = function () {\n return this.getOption(\"wrapBehavioursEnabled\");\n };\n Editor.prototype.setShowFoldWidgets = function (show) {\n this.setOption(\"showFoldWidgets\", show);\n };\n Editor.prototype.getShowFoldWidgets = function () {\n return this.getOption(\"showFoldWidgets\");\n };\n Editor.prototype.setFadeFoldWidgets = function (fade) {\n this.setOption(\"fadeFoldWidgets\", fade);\n };\n Editor.prototype.getFadeFoldWidgets = function () {\n return this.getOption(\"fadeFoldWidgets\");\n };\n Editor.prototype.remove = function (dir) {\n if (this.selection.isEmpty()) {\n if (dir == \"left\")\n this.selection.selectLeft();\n else\n this.selection.selectRight();\n }\n var range = this.getSelectionRange();\n if (this.getBehavioursEnabled()) {\n var session = this.session;\n var state = session.getState(range.start.row);\n var new_range = session.getMode().transformAction(state, 'deletion', this, session, range);\n if (range.end.column === 0) {\n var text = session.getTextRange(range);\n if (text[text.length - 1] == \"\\n\") {\n var line = session.getLine(range.end.row);\n if (/^\\s+$/.test(line)) {\n range.end.column = line.length;\n }\n }\n }\n if (new_range)\n range = new_range;\n }\n this.session.remove(range);\n this.clearSelection();\n };\n Editor.prototype.removeWordRight = function () {\n if (this.selection.isEmpty())\n this.selection.selectWordRight();\n this.session.remove(this.getSelectionRange());\n this.clearSelection();\n };\n Editor.prototype.removeWordLeft = function () {\n if (this.selection.isEmpty())\n this.selection.selectWordLeft();\n this.session.remove(this.getSelectionRange());\n this.clearSelection();\n };\n Editor.prototype.removeToLineStart = function () {\n if (this.selection.isEmpty())\n this.selection.selectLineStart();\n if (this.selection.isEmpty())\n this.selection.selectLeft();\n this.session.remove(this.getSelectionRange());\n this.clearSelection();\n };\n Editor.prototype.removeToLineEnd = function () {\n if (this.selection.isEmpty())\n this.selection.selectLineEnd();\n var range = this.getSelectionRange();\n if (range.start.column == range.end.column && range.start.row == range.end.row) {\n range.end.column = 0;\n range.end.row++;\n }\n this.session.remove(range);\n this.clearSelection();\n };\n Editor.prototype.splitLine = function () {\n if (!this.selection.isEmpty()) {\n this.session.remove(this.getSelectionRange());\n this.clearSelection();\n }\n var cursor = this.getCursorPosition();\n this.insert(\"\\n\");\n this.moveCursorToPosition(cursor);\n };\n Editor.prototype.setGhostText = function (text, position) {\n if (!this.session.widgetManager) {\n this.session.widgetManager = new LineWidgets(this.session);\n this.session.widgetManager.attach(this);\n }\n this.renderer.setGhostText(text, position);\n };\n Editor.prototype.removeGhostText = function () {\n if (!this.session.widgetManager)\n return;\n this.renderer.removeGhostText();\n };\n Editor.prototype.transposeLetters = function () {\n if (!this.selection.isEmpty()) {\n return;\n }\n var cursor = this.getCursorPosition();\n var column = cursor.column;\n if (column === 0)\n return;\n var line = this.session.getLine(cursor.row);\n var swap, range;\n if (column < line.length) {\n swap = line.charAt(column) + line.charAt(column - 1);\n range = new Range(cursor.row, column - 1, cursor.row, column + 1);\n }\n else {\n swap = line.charAt(column - 1) + line.charAt(column - 2);\n range = new Range(cursor.row, column - 2, cursor.row, column);\n }\n this.session.replace(range, swap);\n this.session.selection.moveToPosition(range.end);\n };\n Editor.prototype.toLowerCase = function () {\n var originalRange = this.getSelectionRange();\n if (this.selection.isEmpty()) {\n this.selection.selectWord();\n }\n var range = this.getSelectionRange();\n var text = this.session.getTextRange(range);\n this.session.replace(range, text.toLowerCase());\n this.selection.setSelectionRange(originalRange);\n };\n Editor.prototype.toUpperCase = function () {\n var originalRange = this.getSelectionRange();\n if (this.selection.isEmpty()) {\n this.selection.selectWord();\n }\n var range = this.getSelectionRange();\n var text = this.session.getTextRange(range);\n this.session.replace(range, text.toUpperCase());\n this.selection.setSelectionRange(originalRange);\n };\n Editor.prototype.indent = function () {\n var session = this.session;\n var range = this.getSelectionRange();\n if (range.start.row < range.end.row) {\n var rows = this.$getSelectedRows();\n session.indentRows(rows.first, rows.last, \"\\t\");\n return;\n }\n else if (range.start.column < range.end.column) {\n var text = session.getTextRange(range);\n if (!/^\\s+$/.test(text)) {\n var rows = this.$getSelectedRows();\n session.indentRows(rows.first, rows.last, \"\\t\");\n return;\n }\n }\n var line = session.getLine(range.start.row);\n var position = range.start;\n var size = session.getTabSize();\n var column = session.documentToScreenColumn(position.row, position.column);\n if (this.session.getUseSoftTabs()) {\n var count = (size - column % size);\n var indentString = lang.stringRepeat(\" \", count);\n }\n else {\n var count = column % size;\n while (line[range.start.column - 1] == \" \" && count) {\n range.start.column--;\n count--;\n }\n this.selection.setSelectionRange(range);\n indentString = \"\\t\";\n }\n return this.insert(indentString);\n };\n Editor.prototype.blockIndent = function () {\n var rows = this.$getSelectedRows();\n this.session.indentRows(rows.first, rows.last, \"\\t\");\n };\n Editor.prototype.blockOutdent = function () {\n var selection = this.session.getSelection();\n this.session.outdentRows(selection.getRange());\n };\n Editor.prototype.sortLines = function () {\n var rows = this.$getSelectedRows();\n var session = this.session;\n var lines = [];\n for (var i = rows.first; i <= rows.last; i++)\n lines.push(session.getLine(i));\n lines.sort(function (a, b) {\n if (a.toLowerCase() < b.toLowerCase())\n return -1;\n if (a.toLowerCase() > b.toLowerCase())\n return 1;\n return 0;\n });\n var deleteRange = new Range(0, 0, 0, 0);\n for (var i = rows.first; i <= rows.last; i++) {\n var line = session.getLine(i);\n deleteRange.start.row = i;\n deleteRange.end.row = i;\n deleteRange.end.column = line.length;\n session.replace(deleteRange, lines[i - rows.first]);\n }\n };\n Editor.prototype.toggleCommentLines = function () {\n var state = this.session.getState(this.getCursorPosition().row);\n var rows = this.$getSelectedRows();\n this.session.getMode().toggleCommentLines(state, this.session, rows.first, rows.last);\n };\n Editor.prototype.toggleBlockComment = function () {\n var cursor = this.getCursorPosition();\n var state = this.session.getState(cursor.row);\n var range = this.getSelectionRange();\n this.session.getMode().toggleBlockComment(state, this.session, range, cursor);\n };\n Editor.prototype.getNumberAt = function (row, column) {\n var _numberRx = /[\\-]?[0-9]+(?:\\.[0-9]+)?/g;\n _numberRx.lastIndex = 0;\n var s = this.session.getLine(row);\n while (_numberRx.lastIndex < column) {\n var m = _numberRx.exec(s);\n if (m.index <= column && m.index + m[0].length >= column) {\n var number = {\n value: m[0],\n start: m.index,\n end: m.index + m[0].length\n };\n return number;\n }\n }\n return null;\n };\n Editor.prototype.modifyNumber = function (amount) {\n var row = this.selection.getCursor().row;\n var column = this.selection.getCursor().column;\n var charRange = new Range(row, column - 1, row, column);\n var c = this.session.getTextRange(charRange);\n if (!isNaN(parseFloat(c)) && isFinite(c)) {\n var nr = this.getNumberAt(row, column);\n if (nr) {\n var fp = nr.value.indexOf(\".\") >= 0 ? nr.start + nr.value.indexOf(\".\") + 1 : nr.end;\n var decimals = nr.start + nr.value.length - fp;\n var t = parseFloat(nr.value);\n t *= Math.pow(10, decimals);\n if (fp !== nr.end && column < fp) {\n amount *= Math.pow(10, nr.end - column - 1);\n }\n else {\n amount *= Math.pow(10, nr.end - column);\n }\n t += amount;\n t /= Math.pow(10, decimals);\n var nnr = t.toFixed(decimals);\n var replaceRange = new Range(row, nr.start, row, nr.end);\n this.session.replace(replaceRange, nnr);\n this.moveCursorTo(row, Math.max(nr.start + 1, column + nnr.length - nr.value.length));\n }\n }\n else {\n this.toggleWord();\n }\n };\n Editor.prototype.toggleWord = function () {\n var row = this.selection.getCursor().row;\n var column = this.selection.getCursor().column;\n this.selection.selectWord();\n var currentState = this.getSelectedText();\n var currWordStart = this.selection.getWordRange().start.column;\n var wordParts = currentState.replace(/([a-z]+|[A-Z]+)(?=[A-Z_]|$)/g, '$1 ').split(/\\s/);\n var delta = column - currWordStart - 1;\n if (delta < 0)\n delta = 0;\n var curLength = 0, itLength = 0;\n var that = this;\n if (currentState.match(/[A-Za-z0-9_]+/)) {\n wordParts.forEach(function (item, i) {\n itLength = curLength + item.length;\n if (delta >= curLength && delta <= itLength) {\n currentState = item;\n that.selection.clearSelection();\n that.moveCursorTo(row, curLength + currWordStart);\n that.selection.selectTo(row, itLength + currWordStart);\n }\n curLength = itLength;\n });\n }\n var wordPairs = this.$toggleWordPairs;\n var reg;\n for (var i = 0; i < wordPairs.length; i++) {\n var item = wordPairs[i];\n for (var j = 0; j <= 1; j++) {\n var negate = +!j;\n var firstCondition = currentState.match(new RegExp('^\\\\s?_?(' + lang.escapeRegExp(item[j]) + ')\\\\s?$', 'i'));\n if (firstCondition) {\n var secondCondition = currentState.match(new RegExp('([_]|^|\\\\s)(' + lang.escapeRegExp(firstCondition[1]) + ')($|\\\\s)', 'g'));\n if (secondCondition) {\n reg = currentState.replace(new RegExp(lang.escapeRegExp(item[j]), 'i'), function (result) {\n var res = item[negate];\n if (result.toUpperCase() == result) {\n res = res.toUpperCase();\n }\n else if (result.charAt(0).toUpperCase() == result.charAt(0)) {\n res = res.substr(0, 0) + item[negate].charAt(0).toUpperCase() + res.substr(1);\n }\n return res;\n });\n this.insert(reg);\n reg = \"\";\n }\n }\n }\n }\n };\n Editor.prototype.findLinkAt = function (row, column) {\n var e_1, _a;\n var line = this.session.getLine(row);\n var wordParts = line.split(/((?:https?|ftp):\\/\\/[\\S]+)/);\n var columnPosition = column;\n if (columnPosition < 0)\n columnPosition = 0;\n var previousPosition = 0, currentPosition = 0, match;\n try {\n for (var wordParts_1 = __values(wordParts), wordParts_1_1 = wordParts_1.next(); !wordParts_1_1.done; wordParts_1_1 = wordParts_1.next()) {\n var item = wordParts_1_1.value;\n currentPosition = previousPosition + item.length;\n if (columnPosition >= previousPosition && columnPosition <= currentPosition) {\n if (item.match(/((?:https?|ftp):\\/\\/[\\S]+)/)) {\n match = item.replace(/[\\s:.,'\";}\\]]+$/, \"\");\n break;\n }\n }\n previousPosition = currentPosition;\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (wordParts_1_1 && !wordParts_1_1.done && (_a = wordParts_1.return)) _a.call(wordParts_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return match;\n };\n Editor.prototype.openLink = function () {\n var cursor = this.selection.getCursor();\n var url = this.findLinkAt(cursor.row, cursor.column);\n if (url)\n window.open(url, '_blank');\n return url != null;\n };\n Editor.prototype.removeLines = function () {\n var rows = this.$getSelectedRows();\n this.session.removeFullLines(rows.first, rows.last);\n this.clearSelection();\n };\n Editor.prototype.duplicateSelection = function () {\n var sel = this.selection;\n var doc = this.session;\n var range = sel.getRange();\n var reverse = sel.isBackwards();\n if (range.isEmpty()) {\n var row = range.start.row;\n doc.duplicateLines(row, row);\n }\n else {\n var point = reverse ? range.start : range.end;\n var endPoint = doc.insert(point, doc.getTextRange(range), false);\n range.start = point;\n range.end = endPoint;\n sel.setSelectionRange(range, reverse);\n }\n };\n Editor.prototype.moveLinesDown = function () {\n this.$moveLines(1, false);\n };\n Editor.prototype.moveLinesUp = function () {\n this.$moveLines(-1, false);\n };\n Editor.prototype.moveText = function (range, toPosition, copy) {\n return this.session.moveText(range, toPosition, copy);\n };\n Editor.prototype.copyLinesUp = function () {\n this.$moveLines(-1, true);\n };\n Editor.prototype.copyLinesDown = function () {\n this.$moveLines(1, true);\n };\n Editor.prototype.$moveLines = function (dir, copy) {\n var rows, moved;\n var selection = this.selection;\n if (!selection.inMultiSelectMode || this.inVirtualSelectionMode) {\n var range = selection.toOrientedRange();\n rows = this.$getSelectedRows(range);\n moved = this.session.$moveLines(rows.first, rows.last, copy ? 0 : dir);\n if (copy && dir == -1)\n moved = 0;\n range.moveBy(moved, 0);\n selection.fromOrientedRange(range);\n }\n else {\n var ranges = selection.rangeList.ranges;\n selection.rangeList.detach(this.session);\n this.inVirtualSelectionMode = true;\n var diff = 0;\n var totalDiff = 0;\n var l = ranges.length;\n for (var i = 0; i < l; i++) {\n var rangeIndex = i;\n ranges[i].moveBy(diff, 0);\n rows = this.$getSelectedRows(ranges[i]);\n var first = rows.first;\n var last = rows.last;\n while (++i < l) {\n if (totalDiff)\n ranges[i].moveBy(totalDiff, 0);\n var subRows = this.$getSelectedRows(ranges[i]);\n if (copy && subRows.first != last)\n break;\n else if (!copy && subRows.first > last + 1)\n break;\n last = subRows.last;\n }\n i--;\n diff = this.session.$moveLines(first, last, copy ? 0 : dir);\n if (copy && dir == -1)\n rangeIndex = i + 1;\n while (rangeIndex <= i) {\n ranges[rangeIndex].moveBy(diff, 0);\n rangeIndex++;\n }\n if (!copy)\n diff = 0;\n totalDiff += diff;\n }\n selection.fromOrientedRange(selection.ranges[0]);\n selection.rangeList.attach(this.session);\n this.inVirtualSelectionMode = false;\n }\n };\n Editor.prototype.$getSelectedRows = function (range) {\n range = (range || this.getSelectionRange()).collapseRows();\n return {\n first: this.session.getRowFoldStart(range.start.row),\n last: this.session.getRowFoldEnd(range.end.row)\n };\n };\n Editor.prototype.onCompositionStart = function (compositionState) {\n this.renderer.showComposition(compositionState);\n };\n Editor.prototype.onCompositionUpdate = function (text) {\n this.renderer.setCompositionText(text);\n };\n Editor.prototype.onCompositionEnd = function () {\n this.renderer.hideComposition();\n };\n Editor.prototype.getFirstVisibleRow = function () {\n return this.renderer.getFirstVisibleRow();\n };\n Editor.prototype.getLastVisibleRow = function () {\n return this.renderer.getLastVisibleRow();\n };\n Editor.prototype.isRowVisible = function (row) {\n return (row >= this.getFirstVisibleRow() && row <= this.getLastVisibleRow());\n };\n Editor.prototype.isRowFullyVisible = function (row) {\n return (row >= this.renderer.getFirstFullyVisibleRow() && row <= this.renderer.getLastFullyVisibleRow());\n };\n Editor.prototype.$getVisibleRowCount = function () {\n return this.renderer.getScrollBottomRow() - this.renderer.getScrollTopRow() + 1;\n };\n Editor.prototype.$moveByPage = function (dir, select) {\n var renderer = this.renderer;\n var config = this.renderer.layerConfig;\n var rows = dir * Math.floor(config.height / config.lineHeight);\n if (select === true) {\n this.selection.$moveSelection(function () {\n this.moveCursorBy(rows, 0);\n });\n }\n else if (select === false) {\n this.selection.moveCursorBy(rows, 0);\n this.selection.clearSelection();\n }\n var scrollTop = renderer.scrollTop;\n renderer.scrollBy(0, rows * config.lineHeight);\n if (select != null)\n renderer.scrollCursorIntoView(null, 0.5);\n renderer.animateScrolling(scrollTop);\n };\n Editor.prototype.selectPageDown = function () {\n this.$moveByPage(1, true);\n };\n Editor.prototype.selectPageUp = function () {\n this.$moveByPage(-1, true);\n };\n Editor.prototype.gotoPageDown = function () {\n this.$moveByPage(1, false);\n };\n Editor.prototype.gotoPageUp = function () {\n this.$moveByPage(-1, false);\n };\n Editor.prototype.scrollPageDown = function () {\n this.$moveByPage(1);\n };\n Editor.prototype.scrollPageUp = function () {\n this.$moveByPage(-1);\n };\n Editor.prototype.scrollToRow = function (row) {\n this.renderer.scrollToRow(row);\n };\n Editor.prototype.scrollToLine = function (line, center, animate, callback) {\n this.renderer.scrollToLine(line, center, animate, callback);\n };\n Editor.prototype.centerSelection = function () {\n var range = this.getSelectionRange();\n var pos = {\n row: Math.floor(range.start.row + (range.end.row - range.start.row) / 2),\n column: Math.floor(range.start.column + (range.end.column - range.start.column) / 2)\n };\n this.renderer.alignCursor(pos, 0.5);\n };\n Editor.prototype.getCursorPosition = function () {\n return this.selection.getCursor();\n };\n Editor.prototype.getCursorPositionScreen = function () {\n return this.session.documentToScreenPosition(this.getCursorPosition());\n };\n Editor.prototype.getSelectionRange = function () {\n return this.selection.getRange();\n };\n Editor.prototype.selectAll = function () {\n this.selection.selectAll();\n };\n Editor.prototype.clearSelection = function () {\n this.selection.clearSelection();\n };\n Editor.prototype.moveCursorTo = function (row, column) {\n this.selection.moveCursorTo(row, column);\n };\n Editor.prototype.moveCursorToPosition = function (pos) {\n this.selection.moveCursorToPosition(pos);\n };\n Editor.prototype.jumpToMatching = function (select, expand) {\n var cursor = this.getCursorPosition();\n var iterator = new TokenIterator(this.session, cursor.row, cursor.column);\n var prevToken = iterator.getCurrentToken();\n var tokenCount = 0;\n if (prevToken && prevToken.type.indexOf('tag-name') !== -1) {\n prevToken = iterator.stepBackward();\n }\n var token = prevToken || iterator.stepForward();\n if (!token)\n return;\n var matchType;\n var found = false;\n var depth = {};\n var i = cursor.column - token.start;\n var bracketType;\n var brackets = {\n \")\": \"(\",\n \"(\": \"(\",\n \"]\": \"[\",\n \"[\": \"[\",\n \"{\": \"{\",\n \"}\": \"{\"\n };\n do {\n if (token.value.match(/[{}()\\[\\]]/g)) {\n for (; i < token.value.length && !found; i++) {\n if (!brackets[token.value[i]]) {\n continue;\n }\n bracketType = brackets[token.value[i]] + '.' + token.type.replace(\"rparen\", \"lparen\");\n if (isNaN(depth[bracketType])) {\n depth[bracketType] = 0;\n }\n switch (token.value[i]) {\n case '(':\n case '[':\n case '{':\n depth[bracketType]++;\n break;\n case ')':\n case ']':\n case '}':\n depth[bracketType]--;\n if (depth[bracketType] === -1) {\n matchType = 'bracket';\n found = true;\n }\n break;\n }\n }\n }\n else if (token.type.indexOf('tag-name') !== -1) {\n if (isNaN(depth[token.value])) {\n depth[token.value] = 0;\n }\n if (prevToken.value === '<' && tokenCount > 1) {\n depth[token.value]++;\n }\n else if (prevToken.value === '= 0; --i) {\n if (this.$tryReplace(ranges[i], replacement)) {\n replaced++;\n }\n }\n this.selection.setSelectionRange(selection);\n return replaced;\n };\n Editor.prototype.$tryReplace = function (range, replacement) {\n var input = this.session.getTextRange(range);\n replacement = this.$search.replace(input, replacement);\n if (replacement !== null) {\n range.end = this.session.replace(range, replacement);\n return range;\n }\n else {\n return null;\n }\n };\n Editor.prototype.getLastSearchOptions = function () {\n return this.$search.getOptions();\n };\n Editor.prototype.find = function (needle, options, animate) {\n if (!options)\n options = {};\n if (typeof needle == \"string\" || needle instanceof RegExp)\n options.needle = needle;\n else if (typeof needle == \"object\")\n oop.mixin(options, needle);\n var range = this.selection.getRange();\n if (options.needle == null) {\n needle = this.session.getTextRange(range)\n || this.$search.$options.needle;\n if (!needle) {\n range = this.session.getWordRange(range.start.row, range.start.column);\n needle = this.session.getTextRange(range);\n }\n this.$search.set({ needle: needle });\n }\n this.$search.set(options);\n if (!options.start)\n this.$search.set({ start: range });\n var newRange = this.$search.find(this.session);\n if (options.preventScroll)\n return newRange;\n if (newRange) {\n this.revealRange(newRange, animate);\n return newRange;\n }\n if (options.backwards)\n range.start = range.end;\n else\n range.end = range.start;\n this.selection.setRange(range);\n };\n Editor.prototype.findNext = function (options, animate) {\n this.find({ skipCurrent: true, backwards: false }, options, animate);\n };\n Editor.prototype.findPrevious = function (options, animate) {\n this.find(options, { skipCurrent: true, backwards: true }, animate);\n };\n Editor.prototype.revealRange = function (range, animate) {\n this.session.unfold(range);\n this.selection.setSelectionRange(range);\n var scrollTop = this.renderer.scrollTop;\n this.renderer.scrollSelectionIntoView(range.start, range.end, 0.5);\n if (animate !== false)\n this.renderer.animateScrolling(scrollTop);\n };\n Editor.prototype.undo = function () {\n this.session.getUndoManager().undo(this.session);\n this.renderer.scrollCursorIntoView(null, 0.5);\n };\n Editor.prototype.redo = function () {\n this.session.getUndoManager().redo(this.session);\n this.renderer.scrollCursorIntoView(null, 0.5);\n };\n Editor.prototype.destroy = function () {\n if (this.$toDestroy) {\n this.$toDestroy.forEach(function (el) {\n el.destroy();\n });\n this.$toDestroy = null;\n }\n if (this.$mouseHandler)\n this.$mouseHandler.destroy();\n this.renderer.destroy();\n this._signal(\"destroy\", this);\n if (this.session)\n this.session.destroy();\n if (this._$emitInputEvent)\n this._$emitInputEvent.cancel();\n this.removeAllListeners();\n };\n Editor.prototype.setAutoScrollEditorIntoView = function (enable) {\n if (!enable)\n return;\n var rect;\n var self = this;\n var shouldScroll = false;\n if (!this.$scrollAnchor)\n this.$scrollAnchor = document.createElement(\"div\");\n var scrollAnchor = this.$scrollAnchor;\n scrollAnchor.style.cssText = \"position:absolute\";\n this.container.insertBefore(scrollAnchor, this.container.firstChild);\n var onChangeSelection = this.on(\"changeSelection\", function () {\n shouldScroll = true;\n });\n var onBeforeRender = this.renderer.on(\"beforeRender\", function () {\n if (shouldScroll)\n rect = self.renderer.container.getBoundingClientRect();\n });\n var onAfterRender = this.renderer.on(\"afterRender\", function () {\n if (shouldScroll && rect && (self.isFocused()\n || self.searchBox && self.searchBox.isFocused())) {\n var renderer = self.renderer;\n var pos = renderer.$cursorLayer.$pixelPos;\n var config = renderer.layerConfig;\n var top = pos.top - config.offset;\n if (pos.top >= 0 && top + rect.top < 0) {\n shouldScroll = true;\n }\n else if (pos.top < config.height &&\n pos.top + rect.top + config.lineHeight > window.innerHeight) {\n shouldScroll = false;\n }\n else {\n shouldScroll = null;\n }\n if (shouldScroll != null) {\n scrollAnchor.style.top = top + \"px\";\n scrollAnchor.style.left = pos.left + \"px\";\n scrollAnchor.style.height = config.lineHeight + \"px\";\n scrollAnchor.scrollIntoView(shouldScroll);\n }\n shouldScroll = rect = null;\n }\n });\n this.setAutoScrollEditorIntoView = function (enable) {\n if (enable)\n return;\n delete this.setAutoScrollEditorIntoView;\n this.off(\"changeSelection\", onChangeSelection);\n this.renderer.off(\"afterRender\", onAfterRender);\n this.renderer.off(\"beforeRender\", onBeforeRender);\n };\n };\n Editor.prototype.$resetCursorStyle = function () {\n var style = this.$cursorStyle || \"ace\";\n var cursorLayer = this.renderer.$cursorLayer;\n if (!cursorLayer)\n return;\n cursorLayer.setSmoothBlinking(/smooth/.test(style));\n cursorLayer.isBlinking = !this.$readOnly && style != \"wide\";\n dom.setCssClass(cursorLayer.element, \"ace_slim-cursors\", /slim/.test(style));\n };\n Editor.prototype.prompt = function (message, options, callback) {\n var editor = this;\n config.loadModule(\"ace/ext/prompt\", function (module) {\n module.prompt(editor, message, options, callback);\n });\n };\n return Editor;\n}());\nEditor.$uid = 0;\nEditor.prototype.curOp = null;\nEditor.prototype.prevOp = {};\nEditor.prototype.$mergeableCommands = [\"backspace\", \"del\", \"insertstring\"];\nEditor.prototype.$toggleWordPairs = [\n [\"first\", \"last\"],\n [\"true\", \"false\"],\n [\"yes\", \"no\"],\n [\"width\", \"height\"],\n [\"top\", \"bottom\"],\n [\"right\", \"left\"],\n [\"on\", \"off\"],\n [\"x\", \"y\"],\n [\"get\", \"set\"],\n [\"max\", \"min\"],\n [\"horizontal\", \"vertical\"],\n [\"show\", \"hide\"],\n [\"add\", \"remove\"],\n [\"up\", \"down\"],\n [\"before\", \"after\"],\n [\"even\", \"odd\"],\n [\"in\", \"out\"],\n [\"inside\", \"outside\"],\n [\"next\", \"previous\"],\n [\"increase\", \"decrease\"],\n [\"attach\", \"detach\"],\n [\"&&\", \"||\"],\n [\"==\", \"!=\"]\n];\noop.implement(Editor.prototype, EventEmitter);\nconfig.defineOptions(Editor.prototype, \"editor\", {\n selectionStyle: {\n set: function (style) {\n this.onSelectionChange();\n this._signal(\"changeSelectionStyle\", { data: style });\n },\n initialValue: \"line\"\n },\n highlightActiveLine: {\n set: function () { this.$updateHighlightActiveLine(); },\n initialValue: true\n },\n highlightSelectedWord: {\n set: function (shouldHighlight) { this.$onSelectionChange(); },\n initialValue: true\n },\n readOnly: {\n set: function (readOnly) {\n this.textInput.setReadOnly(readOnly);\n this.$resetCursorStyle();\n },\n initialValue: false\n },\n copyWithEmptySelection: {\n set: function (value) {\n this.textInput.setCopyWithEmptySelection(value);\n },\n initialValue: false\n },\n cursorStyle: {\n set: function (val) { this.$resetCursorStyle(); },\n values: [\"ace\", \"slim\", \"smooth\", \"wide\"],\n initialValue: \"ace\"\n },\n mergeUndoDeltas: {\n values: [false, true, \"always\"],\n initialValue: true\n },\n behavioursEnabled: { initialValue: true },\n wrapBehavioursEnabled: { initialValue: true },\n enableAutoIndent: { initialValue: true },\n autoScrollEditorIntoView: {\n set: function (val) { this.setAutoScrollEditorIntoView(val); }\n },\n keyboardHandler: {\n set: function (val) { this.setKeyboardHandler(val); },\n get: function () { return this.$keybindingId; },\n handlesSet: true\n },\n value: {\n set: function (val) { this.session.setValue(val); },\n get: function () { return this.getValue(); },\n handlesSet: true,\n hidden: true\n },\n session: {\n set: function (val) { this.setSession(val); },\n get: function () { return this.session; },\n handlesSet: true,\n hidden: true\n },\n showLineNumbers: {\n set: function (show) {\n this.renderer.$gutterLayer.setShowLineNumbers(show);\n this.renderer.$loop.schedule(this.renderer.CHANGE_GUTTER);\n if (show && this.$relativeLineNumbers)\n relativeNumberRenderer.attach(this);\n else\n relativeNumberRenderer.detach(this);\n },\n initialValue: true\n },\n relativeLineNumbers: {\n set: function (value) {\n if (this.$showLineNumbers && value)\n relativeNumberRenderer.attach(this);\n else\n relativeNumberRenderer.detach(this);\n }\n },\n placeholder: {\n set: function (message) {\n if (!this.$updatePlaceholder) {\n this.$updatePlaceholder = function () {\n var hasValue = this.session && (this.renderer.$composition ||\n this.session.getLength() > 1 || this.session.getLine(0).length > 0);\n if (hasValue && this.renderer.placeholderNode) {\n this.renderer.off(\"afterRender\", this.$updatePlaceholder);\n dom.removeCssClass(this.container, \"ace_hasPlaceholder\");\n this.renderer.placeholderNode.remove();\n this.renderer.placeholderNode = null;\n }\n else if (!hasValue && !this.renderer.placeholderNode) {\n this.renderer.on(\"afterRender\", this.$updatePlaceholder);\n dom.addCssClass(this.container, \"ace_hasPlaceholder\");\n var el = dom.createElement(\"div\");\n el.className = \"ace_placeholder\";\n el.textContent = this.$placeholder || \"\";\n this.renderer.placeholderNode = el;\n this.renderer.content.appendChild(this.renderer.placeholderNode);\n }\n else if (!hasValue && this.renderer.placeholderNode) {\n this.renderer.placeholderNode.textContent = this.$placeholder || \"\";\n }\n }.bind(this);\n this.on(\"input\", this.$updatePlaceholder);\n }\n this.$updatePlaceholder();\n }\n },\n enableKeyboardAccessibility: {\n set: function (value) {\n var blurCommand = {\n name: \"blurTextInput\",\n description: \"Set focus to the editor content div to allow tabbing through the page\",\n bindKey: \"Esc\",\n exec: function (editor) {\n editor.blur();\n editor.renderer.scroller.focus();\n },\n readOnly: true\n };\n var focusOnEnterKeyup = function (e) {\n if (e.target == this.renderer.scroller && e.keyCode === keys['enter']) {\n e.preventDefault();\n var row = this.getCursorPosition().row;\n if (!this.isRowVisible(row))\n this.scrollToLine(row, true, true);\n this.focus();\n }\n };\n var gutterKeyboardHandler;\n if (value) {\n this.renderer.enableKeyboardAccessibility = true;\n this.renderer.keyboardFocusClassName = \"ace_keyboard-focus\";\n this.textInput.getElement().setAttribute(\"tabindex\", -1);\n this.textInput.setNumberOfExtraLines(useragent.isWin ? 3 : 0);\n this.renderer.scroller.setAttribute(\"tabindex\", 0);\n this.renderer.scroller.setAttribute(\"role\", \"group\");\n this.renderer.scroller.setAttribute(\"aria-roledescription\", nls(\"editor\"));\n this.renderer.scroller.classList.add(this.renderer.keyboardFocusClassName);\n this.renderer.scroller.setAttribute(\"aria-label\", nls(\"Editor content, press Enter to start editing, press Escape to exit\"));\n this.renderer.scroller.addEventListener(\"keyup\", focusOnEnterKeyup.bind(this));\n this.commands.addCommand(blurCommand);\n this.renderer.$gutter.setAttribute(\"tabindex\", 0);\n this.renderer.$gutter.setAttribute(\"aria-hidden\", false);\n this.renderer.$gutter.setAttribute(\"role\", \"group\");\n this.renderer.$gutter.setAttribute(\"aria-roledescription\", nls(\"editor\"));\n this.renderer.$gutter.setAttribute(\"aria-label\", nls(\"Editor gutter, press Enter to interact with controls using arrow keys, press Escape to exit\"));\n this.renderer.$gutter.classList.add(this.renderer.keyboardFocusClassName);\n this.renderer.content.setAttribute(\"aria-hidden\", true);\n if (!gutterKeyboardHandler)\n gutterKeyboardHandler = new GutterKeyboardHandler(this);\n gutterKeyboardHandler.addListener();\n }\n else {\n this.renderer.enableKeyboardAccessibility = false;\n this.textInput.getElement().setAttribute(\"tabindex\", 0);\n this.textInput.setNumberOfExtraLines(0);\n this.renderer.scroller.setAttribute(\"tabindex\", -1);\n this.renderer.scroller.removeAttribute(\"role\");\n this.renderer.scroller.removeAttribute(\"aria-roledescription\");\n this.renderer.scroller.classList.remove(this.renderer.keyboardFocusClassName);\n this.renderer.scroller.removeAttribute(\"aria-label\");\n this.renderer.scroller.removeEventListener(\"keyup\", focusOnEnterKeyup.bind(this));\n this.commands.removeCommand(blurCommand);\n this.renderer.content.removeAttribute(\"aria-hidden\");\n this.renderer.$gutter.setAttribute(\"tabindex\", -1);\n this.renderer.$gutter.setAttribute(\"aria-hidden\", true);\n this.renderer.$gutter.removeAttribute(\"role\");\n this.renderer.$gutter.removeAttribute(\"aria-roledescription\");\n this.renderer.$gutter.removeAttribute(\"aria-label\");\n this.renderer.$gutter.classList.remove(this.renderer.keyboardFocusClassName);\n if (gutterKeyboardHandler)\n gutterKeyboardHandler.removeListener();\n }\n },\n initialValue: false\n },\n customScrollbar: \"renderer\",\n hScrollBarAlwaysVisible: \"renderer\",\n vScrollBarAlwaysVisible: \"renderer\",\n highlightGutterLine: \"renderer\",\n animatedScroll: \"renderer\",\n showInvisibles: \"renderer\",\n showPrintMargin: \"renderer\",\n printMarginColumn: \"renderer\",\n printMargin: \"renderer\",\n fadeFoldWidgets: \"renderer\",\n showFoldWidgets: \"renderer\",\n displayIndentGuides: \"renderer\",\n highlightIndentGuides: \"renderer\",\n showGutter: \"renderer\",\n fontSize: \"renderer\",\n fontFamily: \"renderer\",\n maxLines: \"renderer\",\n minLines: \"renderer\",\n scrollPastEnd: \"renderer\",\n fixedWidthGutter: \"renderer\",\n theme: \"renderer\",\n hasCssTransforms: \"renderer\",\n maxPixelHeight: \"renderer\",\n useTextareaForIME: \"renderer\",\n useResizeObserver: \"renderer\",\n useSvgGutterIcons: \"renderer\",\n showFoldedAnnotations: \"renderer\",\n scrollSpeed: \"$mouseHandler\",\n dragDelay: \"$mouseHandler\",\n dragEnabled: \"$mouseHandler\",\n focusTimeout: \"$mouseHandler\",\n tooltipFollowsMouse: \"$mouseHandler\",\n firstLineNumber: \"session\",\n overwrite: \"session\",\n newLineMode: \"session\",\n useWorker: \"session\",\n useSoftTabs: \"session\",\n navigateWithinSoftTabs: \"session\",\n tabSize: \"session\",\n wrap: \"session\",\n indentedSoftWrap: \"session\",\n foldStyle: \"session\",\n mode: \"session\"\n});\nvar relativeNumberRenderer = {\n getText: function (session, row) {\n return (Math.abs(session.selection.lead.row - row) || (row + 1 + (row < 9 ? \"\\xb7\" : \"\"))) + \"\";\n },\n getWidth: function (session, lastLineNumber, config) {\n return Math.max(lastLineNumber.toString().length, (config.lastRow + 1).toString().length, 2) * config.characterWidth;\n },\n update: function (e, editor) {\n editor.renderer.$loop.schedule(editor.renderer.CHANGE_GUTTER);\n },\n attach: function (editor) {\n editor.renderer.$gutterLayer.$renderer = this;\n editor.on(\"changeSelection\", this.update);\n this.update(null, editor);\n },\n detach: function (editor) {\n if (editor.renderer.$gutterLayer.$renderer == this)\n editor.renderer.$gutterLayer.$renderer = null;\n editor.off(\"changeSelection\", this.update);\n this.update(null, editor);\n }\n};\nexports.Editor = Editor;\n\n});\n\nace.define(\"ace/layer/lines\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"], function(require, exports, module){\"use strict\";\nvar dom = require(\"../lib/dom\");\nvar Lines = /** @class */ (function () {\n function Lines(element, canvasHeight) {\n this.element = element;\n this.canvasHeight = canvasHeight || 500000;\n this.element.style.height = (this.canvasHeight * 2) + \"px\";\n this.cells = [];\n this.cellCache = [];\n this.$offsetCoefficient = 0;\n }\n Lines.prototype.moveContainer = function (config) {\n dom.translate(this.element, 0, -((config.firstRowScreen * config.lineHeight) % this.canvasHeight) - config.offset * this.$offsetCoefficient);\n };\n Lines.prototype.pageChanged = function (oldConfig, newConfig) {\n return (Math.floor((oldConfig.firstRowScreen * oldConfig.lineHeight) / this.canvasHeight) !==\n Math.floor((newConfig.firstRowScreen * newConfig.lineHeight) / this.canvasHeight));\n };\n Lines.prototype.computeLineTop = function (row, config, session) {\n var screenTop = config.firstRowScreen * config.lineHeight;\n var screenPage = Math.floor(screenTop / this.canvasHeight);\n var lineTop = session.documentToScreenRow(row, 0) * config.lineHeight;\n return lineTop - (screenPage * this.canvasHeight);\n };\n Lines.prototype.computeLineHeight = function (row, config, session) {\n return config.lineHeight * session.getRowLineCount(row);\n };\n Lines.prototype.getLength = function () {\n return this.cells.length;\n };\n Lines.prototype.get = function (index) {\n return this.cells[index];\n };\n Lines.prototype.shift = function () {\n this.$cacheCell(this.cells.shift());\n };\n Lines.prototype.pop = function () {\n this.$cacheCell(this.cells.pop());\n };\n Lines.prototype.push = function (cell) {\n if (Array.isArray(cell)) {\n this.cells.push.apply(this.cells, cell);\n var fragment = dom.createFragment(this.element);\n for (var i = 0; i < cell.length; i++) {\n fragment.appendChild(cell[i].element);\n }\n this.element.appendChild(fragment);\n }\n else {\n this.cells.push(cell);\n this.element.appendChild(cell.element);\n }\n };\n Lines.prototype.unshift = function (cell) {\n if (Array.isArray(cell)) {\n this.cells.unshift.apply(this.cells, cell);\n var fragment = dom.createFragment(this.element);\n for (var i = 0; i < cell.length; i++) {\n fragment.appendChild(cell[i].element);\n }\n if (this.element.firstChild)\n this.element.insertBefore(fragment, this.element.firstChild);\n else\n this.element.appendChild(fragment);\n }\n else {\n this.cells.unshift(cell);\n this.element.insertAdjacentElement(\"afterbegin\", cell.element);\n }\n };\n Lines.prototype.last = function () {\n if (this.cells.length)\n return this.cells[this.cells.length - 1];\n else\n return null;\n };\n Lines.prototype.$cacheCell = function (cell) {\n if (!cell)\n return;\n cell.element.remove();\n this.cellCache.push(cell);\n };\n Lines.prototype.createCell = function (row, config, session, initElement) {\n var cell = this.cellCache.pop();\n if (!cell) {\n var element = dom.createElement(\"div\");\n if (initElement)\n initElement(element);\n this.element.appendChild(element);\n cell = {\n element: element,\n text: \"\",\n row: row\n };\n }\n cell.row = row;\n return cell;\n };\n return Lines;\n}());\nexports.Lines = Lines;\n\n});\n\nace.define(\"ace/layer/gutter\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/lib/event_emitter\",\"ace/layer/lines\",\"ace/config\"], function(require, exports, module){\"use strict\";\nvar dom = require(\"../lib/dom\");\nvar oop = require(\"../lib/oop\");\nvar lang = require(\"../lib/lang\");\nvar EventEmitter = require(\"../lib/event_emitter\").EventEmitter;\nvar Lines = require(\"./lines\").Lines;\nvar nls = require(\"../config\").nls;\nvar Gutter = /** @class */ (function () {\n function Gutter(parentEl) {\n this.element = dom.createElement(\"div\");\n this.element.className = \"ace_layer ace_gutter-layer\";\n parentEl.appendChild(this.element);\n this.setShowFoldWidgets(this.$showFoldWidgets);\n this.gutterWidth = 0;\n this.$annotations = [];\n this.$updateAnnotations = this.$updateAnnotations.bind(this);\n this.$lines = new Lines(this.element);\n this.$lines.$offsetCoefficient = 1;\n }\n Gutter.prototype.setSession = function (session) {\n if (this.session)\n this.session.off(\"change\", this.$updateAnnotations);\n this.session = session;\n if (session)\n session.on(\"change\", this.$updateAnnotations);\n };\n Gutter.prototype.addGutterDecoration = function (row, className) {\n if (window.console)\n console.warn && console.warn(\"deprecated use session.addGutterDecoration\");\n this.session.addGutterDecoration(row, className);\n };\n Gutter.prototype.removeGutterDecoration = function (row, className) {\n if (window.console)\n console.warn && console.warn(\"deprecated use session.removeGutterDecoration\");\n this.session.removeGutterDecoration(row, className);\n };\n Gutter.prototype.setAnnotations = function (annotations) {\n this.$annotations = [];\n for (var i = 0; i < annotations.length; i++) {\n var annotation = annotations[i];\n var row = annotation.row;\n var rowInfo = this.$annotations[row];\n if (!rowInfo)\n rowInfo = this.$annotations[row] = { text: [], type: [] };\n var annoText = annotation.text;\n var annoType = annotation.type;\n annoText = annoText ? lang.escapeHTML(annoText) : annotation.html || \"\";\n if (rowInfo.text.indexOf(annoText) === -1) {\n rowInfo.text.push(annoText);\n rowInfo.type.push(annoType);\n }\n var className = annotation.className;\n if (className)\n rowInfo.className = className;\n else if (annoType == \"error\")\n rowInfo.className = \" ace_error\";\n else if (annoType == \"warning\" && rowInfo.className != \" ace_error\")\n rowInfo.className = \" ace_warning\";\n else if (annoType == \"info\" && (!rowInfo.className))\n rowInfo.className = \" ace_info\";\n }\n };\n Gutter.prototype.$updateAnnotations = function (delta) {\n if (!this.$annotations.length)\n return;\n var firstRow = delta.start.row;\n var len = delta.end.row - firstRow;\n if (len === 0) {\n }\n else if (delta.action == 'remove') {\n this.$annotations.splice(firstRow, len + 1, null);\n }\n else {\n var args = new Array(len + 1);\n args.unshift(firstRow, 1);\n this.$annotations.splice.apply(this.$annotations, args);\n }\n };\n Gutter.prototype.update = function (config) {\n this.config = config;\n var session = this.session;\n var firstRow = config.firstRow;\n var lastRow = Math.min(config.lastRow + config.gutterOffset, // needed to compensate for hor scollbar\n session.getLength() - 1);\n this.oldLastRow = lastRow;\n this.config = config;\n this.$lines.moveContainer(config);\n this.$updateCursorRow();\n var fold = session.getNextFoldLine(firstRow);\n var foldStart = fold ? fold.start.row : Infinity;\n var cell = null;\n var index = -1;\n var row = firstRow;\n while (true) {\n if (row > foldStart) {\n row = fold.end.row + 1;\n fold = session.getNextFoldLine(row, fold);\n foldStart = fold ? fold.start.row : Infinity;\n }\n if (row > lastRow) {\n while (this.$lines.getLength() > index + 1)\n this.$lines.pop();\n break;\n }\n cell = this.$lines.get(++index);\n if (cell) {\n cell.row = row;\n }\n else {\n cell = this.$lines.createCell(row, config, this.session, onCreateCell);\n this.$lines.push(cell);\n }\n this.$renderCell(cell, config, fold, row);\n row++;\n }\n this._signal(\"afterRender\");\n this.$updateGutterWidth(config);\n };\n Gutter.prototype.$updateGutterWidth = function (config) {\n var session = this.session;\n var gutterRenderer = session.gutterRenderer || this.$renderer;\n var firstLineNumber = session.$firstLineNumber;\n var lastLineText = this.$lines.last() ? this.$lines.last().text : \"\";\n if (this.$fixedWidth || session.$useWrapMode)\n lastLineText = session.getLength() + firstLineNumber - 1;\n var gutterWidth = gutterRenderer\n ? gutterRenderer.getWidth(session, lastLineText, config)\n : lastLineText.toString().length * config.characterWidth;\n var padding = this.$padding || this.$computePadding();\n gutterWidth += padding.left + padding.right;\n if (gutterWidth !== this.gutterWidth && !isNaN(gutterWidth)) {\n this.gutterWidth = gutterWidth;\n this.element.parentNode.style.width =\n this.element.style.width = Math.ceil(this.gutterWidth) + \"px\";\n this._signal(\"changeGutterWidth\", gutterWidth);\n }\n };\n Gutter.prototype.$updateCursorRow = function () {\n if (!this.$highlightGutterLine)\n return;\n var position = this.session.selection.getCursor();\n if (this.$cursorRow === position.row)\n return;\n this.$cursorRow = position.row;\n };\n Gutter.prototype.updateLineHighlight = function () {\n if (!this.$highlightGutterLine)\n return;\n var row = this.session.selection.cursor.row;\n this.$cursorRow = row;\n if (this.$cursorCell && this.$cursorCell.row == row)\n return;\n if (this.$cursorCell)\n this.$cursorCell.element.className = this.$cursorCell.element.className.replace(\"ace_gutter-active-line \", \"\");\n var cells = this.$lines.cells;\n this.$cursorCell = null;\n for (var i = 0; i < cells.length; i++) {\n var cell = cells[i];\n if (cell.row >= this.$cursorRow) {\n if (cell.row > this.$cursorRow) {\n var fold = this.session.getFoldLine(this.$cursorRow);\n if (i > 0 && fold && fold.start.row == cells[i - 1].row)\n cell = cells[i - 1];\n else\n break;\n }\n cell.element.className = \"ace_gutter-active-line \" + cell.element.className;\n this.$cursorCell = cell;\n break;\n }\n }\n };\n Gutter.prototype.scrollLines = function (config) {\n var oldConfig = this.config;\n this.config = config;\n this.$updateCursorRow();\n if (this.$lines.pageChanged(oldConfig, config))\n return this.update(config);\n this.$lines.moveContainer(config);\n var lastRow = Math.min(config.lastRow + config.gutterOffset, // needed to compensate for hor scollbar\n this.session.getLength() - 1);\n var oldLastRow = this.oldLastRow;\n this.oldLastRow = lastRow;\n if (!oldConfig || oldLastRow < config.firstRow)\n return this.update(config);\n if (lastRow < oldConfig.firstRow)\n return this.update(config);\n if (oldConfig.firstRow < config.firstRow)\n for (var row = this.session.getFoldedRowCount(oldConfig.firstRow, config.firstRow - 1); row > 0; row--)\n this.$lines.shift();\n if (oldLastRow > lastRow)\n for (var row = this.session.getFoldedRowCount(lastRow + 1, oldLastRow); row > 0; row--)\n this.$lines.pop();\n if (config.firstRow < oldConfig.firstRow) {\n this.$lines.unshift(this.$renderLines(config, config.firstRow, oldConfig.firstRow - 1));\n }\n if (lastRow > oldLastRow) {\n this.$lines.push(this.$renderLines(config, oldLastRow + 1, lastRow));\n }\n this.updateLineHighlight();\n this._signal(\"afterRender\");\n this.$updateGutterWidth(config);\n };\n Gutter.prototype.$renderLines = function (config, firstRow, lastRow) {\n var fragment = [];\n var row = firstRow;\n var foldLine = this.session.getNextFoldLine(row);\n var foldStart = foldLine ? foldLine.start.row : Infinity;\n while (true) {\n if (row > foldStart) {\n row = foldLine.end.row + 1;\n foldLine = this.session.getNextFoldLine(row, foldLine);\n foldStart = foldLine ? foldLine.start.row : Infinity;\n }\n if (row > lastRow)\n break;\n var cell = this.$lines.createCell(row, config, this.session, onCreateCell);\n this.$renderCell(cell, config, foldLine, row);\n fragment.push(cell);\n row++;\n }\n return fragment;\n };\n Gutter.prototype.$renderCell = function (cell, config, fold, row) {\n var element = cell.element;\n var session = this.session;\n var textNode = element.childNodes[0];\n var foldWidget = element.childNodes[1];\n var annotationNode = element.childNodes[2];\n var annotationIconNode = annotationNode.firstChild;\n var firstLineNumber = session.$firstLineNumber;\n var breakpoints = session.$breakpoints;\n var decorations = session.$decorations;\n var gutterRenderer = session.gutterRenderer || this.$renderer;\n var foldWidgets = this.$showFoldWidgets && session.foldWidgets;\n var foldStart = fold ? fold.start.row : Number.MAX_VALUE;\n var lineHeight = config.lineHeight + \"px\";\n var className = this.$useSvgGutterIcons ? \"ace_gutter-cell_svg-icons \" : \"ace_gutter-cell \";\n var iconClassName = this.$useSvgGutterIcons ? \"ace_icon_svg\" : \"ace_icon\";\n var rowText = (gutterRenderer\n ? gutterRenderer.getText(session, row)\n : row + firstLineNumber).toString();\n if (this.$highlightGutterLine) {\n if (row == this.$cursorRow || (fold && row < this.$cursorRow && row >= foldStart && this.$cursorRow <= fold.end.row)) {\n className += \"ace_gutter-active-line \";\n if (this.$cursorCell != cell) {\n if (this.$cursorCell)\n this.$cursorCell.element.className = this.$cursorCell.element.className.replace(\"ace_gutter-active-line \", \"\");\n this.$cursorCell = cell;\n }\n }\n }\n if (breakpoints[row])\n className += breakpoints[row];\n if (decorations[row])\n className += decorations[row];\n if (this.$annotations[row] && row !== foldStart)\n className += this.$annotations[row].className;\n if (foldWidgets) {\n var c = foldWidgets[row];\n if (c == null)\n c = foldWidgets[row] = session.getFoldWidget(row);\n }\n if (c) {\n var foldClass = \"ace_fold-widget ace_\" + c;\n var isClosedFold = c == \"start\" && row == foldStart && row < fold.end.row;\n if (isClosedFold) {\n foldClass += \" ace_closed\";\n var foldAnnotationClass = '';\n var annotationInFold = false;\n for (var i = row + 1; i <= fold.end.row; i++) {\n if (!this.$annotations[i])\n continue;\n if (this.$annotations[i].className === \" ace_error\") {\n annotationInFold = true;\n foldAnnotationClass = \" ace_error_fold\";\n break;\n }\n if (this.$annotations[i].className === \" ace_warning\") {\n annotationInFold = true;\n foldAnnotationClass = \" ace_warning_fold\";\n continue;\n }\n }\n className += foldAnnotationClass;\n }\n else\n foldClass += \" ace_open\";\n if (foldWidget.className != foldClass)\n foldWidget.className = foldClass;\n dom.setStyle(foldWidget.style, \"height\", lineHeight);\n dom.setStyle(foldWidget.style, \"display\", \"inline-block\");\n foldWidget.setAttribute(\"role\", \"button\");\n foldWidget.setAttribute(\"tabindex\", \"-1\");\n var foldRange = session.getFoldWidgetRange(row);\n if (foldRange)\n foldWidget.setAttribute(\"aria-label\", nls(\"Toggle code folding, rows $0 through $1\", [foldRange.start.row + 1, foldRange.end.row + 1]));\n else {\n if (fold)\n foldWidget.setAttribute(\"aria-label\", nls(\"Toggle code folding, rows $0 through $1\", [fold.start.row + 1, fold.end.row + 1]));\n else\n foldWidget.setAttribute(\"aria-label\", nls(\"Toggle code folding, row $0\", [row + 1]));\n }\n if (isClosedFold) {\n foldWidget.setAttribute(\"aria-expanded\", \"false\");\n foldWidget.setAttribute(\"title\", nls(\"Unfold code\"));\n }\n else {\n foldWidget.setAttribute(\"aria-expanded\", \"true\");\n foldWidget.setAttribute(\"title\", nls(\"Fold code\"));\n }\n }\n else {\n if (foldWidget) {\n dom.setStyle(foldWidget.style, \"display\", \"none\");\n foldWidget.setAttribute(\"tabindex\", \"0\");\n foldWidget.removeAttribute(\"role\");\n foldWidget.removeAttribute(\"aria-label\");\n }\n }\n if (annotationInFold && this.$showFoldedAnnotations) {\n annotationNode.className = \"ace_gutter_annotation\";\n annotationIconNode.className = iconClassName;\n annotationIconNode.className += foldAnnotationClass;\n dom.setStyle(annotationIconNode.style, \"height\", lineHeight);\n dom.setStyle(annotationNode.style, \"display\", \"block\");\n dom.setStyle(annotationNode.style, \"height\", lineHeight);\n annotationNode.setAttribute(\"aria-label\", nls(\"Read annotations row $0\", [rowText]));\n annotationNode.setAttribute(\"tabindex\", \"-1\");\n annotationNode.setAttribute(\"role\", \"button\");\n }\n else if (this.$annotations[row]) {\n annotationNode.className = \"ace_gutter_annotation\";\n annotationIconNode.className = iconClassName;\n if (this.$useSvgGutterIcons)\n annotationIconNode.className += this.$annotations[row].className;\n else\n element.classList.add(this.$annotations[row].className.replace(\" \", \"\"));\n dom.setStyle(annotationIconNode.style, \"height\", lineHeight);\n dom.setStyle(annotationNode.style, \"display\", \"block\");\n dom.setStyle(annotationNode.style, \"height\", lineHeight);\n annotationNode.setAttribute(\"aria-label\", nls(\"Read annotations row $0\", [rowText]));\n annotationNode.setAttribute(\"tabindex\", \"-1\");\n annotationNode.setAttribute(\"role\", \"button\");\n }\n else {\n dom.setStyle(annotationNode.style, \"display\", \"none\");\n annotationNode.removeAttribute(\"aria-label\");\n annotationNode.removeAttribute(\"role\");\n annotationNode.setAttribute(\"tabindex\", \"0\");\n }\n if (rowText !== textNode.data) {\n textNode.data = rowText;\n }\n if (element.className != className)\n element.className = className;\n dom.setStyle(cell.element.style, \"height\", this.$lines.computeLineHeight(row, config, session) + \"px\");\n dom.setStyle(cell.element.style, \"top\", this.$lines.computeLineTop(row, config, session) + \"px\");\n cell.text = rowText;\n if (annotationNode.style.display === \"none\" && foldWidget.style.display === \"none\")\n cell.element.setAttribute(\"aria-hidden\", true);\n else\n cell.element.setAttribute(\"aria-hidden\", false);\n return cell;\n };\n Gutter.prototype.setHighlightGutterLine = function (highlightGutterLine) {\n this.$highlightGutterLine = highlightGutterLine;\n };\n Gutter.prototype.setShowLineNumbers = function (show) {\n this.$renderer = !show && {\n getWidth: function () { return 0; },\n getText: function () { return \"\"; }\n };\n };\n Gutter.prototype.getShowLineNumbers = function () {\n return this.$showLineNumbers;\n };\n Gutter.prototype.setShowFoldWidgets = function (show) {\n if (show)\n dom.addCssClass(this.element, \"ace_folding-enabled\");\n else\n dom.removeCssClass(this.element, \"ace_folding-enabled\");\n this.$showFoldWidgets = show;\n this.$padding = null;\n };\n Gutter.prototype.getShowFoldWidgets = function () {\n return this.$showFoldWidgets;\n };\n Gutter.prototype.$computePadding = function () {\n if (!this.element.firstChild)\n return { left: 0, right: 0 };\n var style = dom.computedStyle(this.element.firstChild);\n this.$padding = {};\n this.$padding.left = (parseInt(style.borderLeftWidth) || 0)\n + (parseInt(style.paddingLeft) || 0) + 1;\n this.$padding.right = (parseInt(style.borderRightWidth) || 0)\n + (parseInt(style.paddingRight) || 0);\n return this.$padding;\n };\n Gutter.prototype.getRegion = function (point) {\n var padding = this.$padding || this.$computePadding();\n var rect = this.element.getBoundingClientRect();\n if (point.x < padding.left + rect.left)\n return \"markers\";\n if (this.$showFoldWidgets && point.x > rect.right - padding.right)\n return \"foldWidgets\";\n };\n return Gutter;\n}());\nGutter.prototype.$fixedWidth = false;\nGutter.prototype.$highlightGutterLine = true;\nGutter.prototype.$renderer = \"\";\nGutter.prototype.$showLineNumbers = true;\nGutter.prototype.$showFoldWidgets = true;\noop.implement(Gutter.prototype, EventEmitter);\nfunction onCreateCell(element) {\n var textNode = document.createTextNode('');\n element.appendChild(textNode);\n var foldWidget = dom.createElement(\"span\");\n element.appendChild(foldWidget);\n var annotationNode = dom.createElement(\"span\");\n element.appendChild(annotationNode);\n var annotationIconNode = dom.createElement(\"span\");\n annotationNode.appendChild(annotationIconNode);\n return element;\n}\nexports.Gutter = Gutter;\n\n});\n\nace.define(\"ace/layer/marker\",[\"require\",\"exports\",\"module\",\"ace/range\",\"ace/lib/dom\"], function(require, exports, module){\"use strict\";\nvar Range = require(\"../range\").Range;\nvar dom = require(\"../lib/dom\");\nvar Marker = /** @class */ (function () {\n function Marker(parentEl) {\n this.element = dom.createElement(\"div\");\n this.element.className = \"ace_layer ace_marker-layer\";\n parentEl.appendChild(this.element);\n }\n Marker.prototype.setPadding = function (padding) {\n this.$padding = padding;\n };\n Marker.prototype.setSession = function (session) {\n this.session = session;\n };\n Marker.prototype.setMarkers = function (markers) {\n this.markers = markers;\n };\n Marker.prototype.elt = function (className, css) {\n var x = this.i != -1 && this.element.childNodes[this.i];\n if (!x) {\n x = document.createElement(\"div\");\n this.element.appendChild(x);\n this.i = -1;\n }\n else {\n this.i++;\n }\n x.style.cssText = css;\n x.className = className;\n };\n Marker.prototype.update = function (config) {\n if (!config)\n return;\n this.config = config;\n this.i = 0;\n var html;\n for (var key in this.markers) {\n var marker = this.markers[key];\n if (!marker.range) {\n marker.update(html, this, this.session, config);\n continue;\n }\n var range = marker.range.clipRows(config.firstRow, config.lastRow);\n if (range.isEmpty())\n continue;\n range = range.toScreenRange(this.session);\n if (marker.renderer) {\n var top = this.$getTop(range.start.row, config);\n var left = this.$padding + range.start.column * config.characterWidth;\n marker.renderer(html, range, left, top, config);\n }\n else if (marker.type == \"fullLine\") {\n this.drawFullLineMarker(html, range, marker.clazz, config);\n }\n else if (marker.type == \"screenLine\") {\n this.drawScreenLineMarker(html, range, marker.clazz, config);\n }\n else if (range.isMultiLine()) {\n if (marker.type == \"text\")\n this.drawTextMarker(html, range, marker.clazz, config);\n else\n this.drawMultiLineMarker(html, range, marker.clazz, config);\n }\n else {\n this.drawSingleLineMarker(html, range, marker.clazz + \" ace_start\" + \" ace_br15\", config);\n }\n }\n if (this.i != -1) {\n while (this.i < this.element.childElementCount)\n this.element.removeChild(this.element.lastChild);\n }\n };\n Marker.prototype.$getTop = function (row, layerConfig) {\n return (row - layerConfig.firstRowScreen) * layerConfig.lineHeight;\n };\n Marker.prototype.drawTextMarker = function (stringBuilder, range, clazz, layerConfig, extraStyle) {\n var session = this.session;\n var start = range.start.row;\n var end = range.end.row;\n var row = start;\n var prev = 0;\n var curr = 0;\n var next = session.getScreenLastRowColumn(row);\n var lineRange = new Range(row, range.start.column, row, curr);\n for (; row <= end; row++) {\n lineRange.start.row = lineRange.end.row = row;\n lineRange.start.column = row == start ? range.start.column : session.getRowWrapIndent(row);\n lineRange.end.column = next;\n prev = curr;\n curr = next;\n next = row + 1 < end ? session.getScreenLastRowColumn(row + 1) : row == end ? 0 : range.end.column;\n this.drawSingleLineMarker(stringBuilder, lineRange, clazz + (row == start ? \" ace_start\" : \"\") + \" ace_br\"\n + getBorderClass(row == start || row == start + 1 && range.start.column, prev < curr, curr > next, row == end), layerConfig, row == end ? 0 : 1, extraStyle);\n }\n };\n Marker.prototype.drawMultiLineMarker = function (stringBuilder, range, clazz, config, extraStyle) {\n var padding = this.$padding;\n var height = config.lineHeight;\n var top = this.$getTop(range.start.row, config);\n var left = padding + range.start.column * config.characterWidth;\n extraStyle = extraStyle || \"\";\n if (this.session.$bidiHandler.isBidiRow(range.start.row)) {\n var range1 = range.clone();\n range1.end.row = range1.start.row;\n range1.end.column = this.session.getLine(range1.start.row).length;\n this.drawBidiSingleLineMarker(stringBuilder, range1, clazz + \" ace_br1 ace_start\", config, null, extraStyle);\n }\n else {\n this.elt(clazz + \" ace_br1 ace_start\", \"height:\" + height + \"px;\" + \"right:0;\" + \"top:\" + top + \"px;left:\" + left + \"px;\" + (extraStyle || \"\"));\n }\n if (this.session.$bidiHandler.isBidiRow(range.end.row)) {\n var range1 = range.clone();\n range1.start.row = range1.end.row;\n range1.start.column = 0;\n this.drawBidiSingleLineMarker(stringBuilder, range1, clazz + \" ace_br12\", config, null, extraStyle);\n }\n else {\n top = this.$getTop(range.end.row, config);\n var width = range.end.column * config.characterWidth;\n this.elt(clazz + \" ace_br12\", \"height:\" + height + \"px;\" +\n \"width:\" + width + \"px;\" +\n \"top:\" + top + \"px;\" +\n \"left:\" + padding + \"px;\" + (extraStyle || \"\"));\n }\n height = (range.end.row - range.start.row - 1) * config.lineHeight;\n if (height <= 0)\n return;\n top = this.$getTop(range.start.row + 1, config);\n var radiusClass = (range.start.column ? 1 : 0) | (range.end.column ? 0 : 8);\n this.elt(clazz + (radiusClass ? \" ace_br\" + radiusClass : \"\"), \"height:\" + height + \"px;\" +\n \"right:0;\" +\n \"top:\" + top + \"px;\" +\n \"left:\" + padding + \"px;\" + (extraStyle || \"\"));\n };\n Marker.prototype.drawSingleLineMarker = function (stringBuilder, range, clazz, config, extraLength, extraStyle) {\n if (this.session.$bidiHandler.isBidiRow(range.start.row))\n return this.drawBidiSingleLineMarker(stringBuilder, range, clazz, config, extraLength, extraStyle);\n var height = config.lineHeight;\n var width = (range.end.column + (extraLength || 0) - range.start.column) * config.characterWidth;\n var top = this.$getTop(range.start.row, config);\n var left = this.$padding + range.start.column * config.characterWidth;\n this.elt(clazz, \"height:\" + height + \"px;\" +\n \"width:\" + width + \"px;\" +\n \"top:\" + top + \"px;\" +\n \"left:\" + left + \"px;\" + (extraStyle || \"\"));\n };\n Marker.prototype.drawBidiSingleLineMarker = function (stringBuilder, range, clazz, config, extraLength, extraStyle) {\n var height = config.lineHeight, top = this.$getTop(range.start.row, config), padding = this.$padding;\n var selections = this.session.$bidiHandler.getSelections(range.start.column, range.end.column);\n selections.forEach(function (selection) {\n this.elt(clazz, \"height:\" + height + \"px;\" +\n \"width:\" + (selection.width + (extraLength || 0)) + \"px;\" +\n \"top:\" + top + \"px;\" +\n \"left:\" + (padding + selection.left) + \"px;\" + (extraStyle || \"\"));\n }, this);\n };\n Marker.prototype.drawFullLineMarker = function (stringBuilder, range, clazz, config, extraStyle) {\n var top = this.$getTop(range.start.row, config);\n var height = config.lineHeight;\n if (range.start.row != range.end.row)\n height += this.$getTop(range.end.row, config) - top;\n this.elt(clazz, \"height:\" + height + \"px;\" +\n \"top:\" + top + \"px;\" +\n \"left:0;right:0;\" + (extraStyle || \"\"));\n };\n Marker.prototype.drawScreenLineMarker = function (stringBuilder, range, clazz, config, extraStyle) {\n var top = this.$getTop(range.start.row, config);\n var height = config.lineHeight;\n this.elt(clazz, \"height:\" + height + \"px;\" +\n \"top:\" + top + \"px;\" +\n \"left:0;right:0;\" + (extraStyle || \"\"));\n };\n return Marker;\n}());\nMarker.prototype.$padding = 0;\nfunction getBorderClass(tl, tr, br, bl) {\n return (tl ? 1 : 0) | (tr ? 2 : 0) | (br ? 4 : 0) | (bl ? 8 : 0);\n}\nexports.Marker = Marker;\n\n});\n\nace.define(\"ace/layer/text_util\",[\"require\",\"exports\",\"module\"], function(require, exports, module){// Tokens for which Ace just uses a simple TextNode and does not add any special className.\nvar textTokens = new Set([\"text\", \"rparen\", \"lparen\"]);\nexports.isTextToken = function (tokenType) {\n return textTokens.has(tokenType);\n};\n\n});\n\nace.define(\"ace/layer/text\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/dom\",\"ace/lib/lang\",\"ace/layer/lines\",\"ace/lib/event_emitter\",\"ace/config\",\"ace/layer/text_util\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar dom = require(\"../lib/dom\");\nvar lang = require(\"../lib/lang\");\nvar Lines = require(\"./lines\").Lines;\nvar EventEmitter = require(\"../lib/event_emitter\").EventEmitter;\nvar nls = require(\"../config\").nls;\nvar isTextToken = require(\"./text_util\").isTextToken;\nvar Text = /** @class */ (function () {\n function Text(parentEl) {\n this.dom = dom;\n this.element = this.dom.createElement(\"div\");\n this.element.className = \"ace_layer ace_text-layer\";\n parentEl.appendChild(this.element);\n this.$updateEolChar = this.$updateEolChar.bind(this);\n this.$lines = new Lines(this.element);\n }\n Text.prototype.$updateEolChar = function () {\n var doc = this.session.doc;\n var unixMode = doc.getNewLineCharacter() == \"\\n\" && doc.getNewLineMode() != \"windows\";\n var EOL_CHAR = unixMode ? this.EOL_CHAR_LF : this.EOL_CHAR_CRLF;\n if (this.EOL_CHAR != EOL_CHAR) {\n this.EOL_CHAR = EOL_CHAR;\n return true;\n }\n };\n Text.prototype.setPadding = function (padding) {\n this.$padding = padding;\n this.element.style.margin = \"0 \" + padding + \"px\";\n };\n Text.prototype.getLineHeight = function () {\n return this.$fontMetrics.$characterSize.height || 0;\n };\n Text.prototype.getCharacterWidth = function () {\n return this.$fontMetrics.$characterSize.width || 0;\n };\n Text.prototype.$setFontMetrics = function (measure) {\n this.$fontMetrics = measure;\n this.$fontMetrics.on(\"changeCharacterSize\", function (e) {\n this._signal(\"changeCharacterSize\", e);\n }.bind(this));\n this.$pollSizeChanges();\n };\n Text.prototype.checkForSizeChanges = function () {\n this.$fontMetrics.checkForSizeChanges();\n };\n Text.prototype.$pollSizeChanges = function () {\n return this.$pollSizeChangesTimer = this.$fontMetrics.$pollSizeChanges();\n };\n Text.prototype.setSession = function (session) {\n this.session = session;\n if (session)\n this.$computeTabString();\n };\n Text.prototype.setShowInvisibles = function (showInvisibles) {\n if (this.showInvisibles == showInvisibles)\n return false;\n this.showInvisibles = showInvisibles;\n if (typeof showInvisibles == \"string\") {\n this.showSpaces = /tab/i.test(showInvisibles);\n this.showTabs = /space/i.test(showInvisibles);\n this.showEOL = /eol/i.test(showInvisibles);\n }\n else {\n this.showSpaces = this.showTabs = this.showEOL = showInvisibles;\n }\n this.$computeTabString();\n return true;\n };\n Text.prototype.setDisplayIndentGuides = function (display) {\n if (this.displayIndentGuides == display)\n return false;\n this.displayIndentGuides = display;\n this.$computeTabString();\n return true;\n };\n Text.prototype.setHighlightIndentGuides = function (highlight) {\n if (this.$highlightIndentGuides === highlight)\n return false;\n this.$highlightIndentGuides = highlight;\n return highlight;\n };\n Text.prototype.$computeTabString = function () {\n var tabSize = this.session.getTabSize();\n this.tabSize = tabSize;\n var tabStr = this.$tabStrings = [0];\n for (var i = 1; i < tabSize + 1; i++) {\n if (this.showTabs) {\n var span = this.dom.createElement(\"span\");\n span.className = \"ace_invisible ace_invisible_tab\";\n span.textContent = lang.stringRepeat(this.TAB_CHAR, i);\n tabStr.push(span);\n }\n else {\n tabStr.push(this.dom.createTextNode(lang.stringRepeat(\" \", i), this.element));\n }\n }\n if (this.displayIndentGuides) {\n this.$indentGuideRe = /\\s\\S| \\t|\\t |\\s$/;\n var className = \"ace_indent-guide\";\n var spaceClass = this.showSpaces ? \" ace_invisible ace_invisible_space\" : \"\";\n var spaceContent = this.showSpaces\n ? lang.stringRepeat(this.SPACE_CHAR, this.tabSize)\n : lang.stringRepeat(\" \", this.tabSize);\n var tabClass = this.showTabs ? \" ace_invisible ace_invisible_tab\" : \"\";\n var tabContent = this.showTabs\n ? lang.stringRepeat(this.TAB_CHAR, this.tabSize)\n : spaceContent;\n var span = this.dom.createElement(\"span\");\n span.className = className + spaceClass;\n span.textContent = spaceContent;\n this.$tabStrings[\" \"] = span;\n var span = this.dom.createElement(\"span\");\n span.className = className + tabClass;\n span.textContent = tabContent;\n this.$tabStrings[\"\\t\"] = span;\n }\n };\n Text.prototype.updateLines = function (config, firstRow, lastRow) {\n if (this.config.lastRow != config.lastRow ||\n this.config.firstRow != config.firstRow) {\n return this.update(config);\n }\n this.config = config;\n var first = Math.max(firstRow, config.firstRow);\n var last = Math.min(lastRow, config.lastRow);\n var lineElements = this.element.childNodes;\n var lineElementsIdx = 0;\n for (var row = config.firstRow; row < first; row++) {\n var foldLine = this.session.getFoldLine(row);\n if (foldLine) {\n if (foldLine.containsRow(first)) {\n first = foldLine.start.row;\n break;\n }\n else {\n row = foldLine.end.row;\n }\n }\n lineElementsIdx++;\n }\n var heightChanged = false;\n var row = first;\n var foldLine = this.session.getNextFoldLine(row);\n var foldStart = foldLine ? foldLine.start.row : Infinity;\n while (true) {\n if (row > foldStart) {\n row = foldLine.end.row + 1;\n foldLine = this.session.getNextFoldLine(row, foldLine);\n foldStart = foldLine ? foldLine.start.row : Infinity;\n }\n if (row > last)\n break;\n var lineElement = lineElements[lineElementsIdx++];\n if (lineElement) {\n this.dom.removeChildren(lineElement);\n this.$renderLine(lineElement, row, row == foldStart ? foldLine : false);\n if (heightChanged)\n lineElement.style.top = this.$lines.computeLineTop(row, config, this.session) + \"px\";\n var height = (config.lineHeight * this.session.getRowLength(row)) + \"px\";\n if (lineElement.style.height != height) {\n heightChanged = true;\n lineElement.style.height = height;\n }\n }\n row++;\n }\n if (heightChanged) {\n while (lineElementsIdx < this.$lines.cells.length) {\n var cell = this.$lines.cells[lineElementsIdx++];\n cell.element.style.top = this.$lines.computeLineTop(cell.row, config, this.session) + \"px\";\n }\n }\n };\n Text.prototype.scrollLines = function (config) {\n var oldConfig = this.config;\n this.config = config;\n if (this.$lines.pageChanged(oldConfig, config))\n return this.update(config);\n this.$lines.moveContainer(config);\n var lastRow = config.lastRow;\n var oldLastRow = oldConfig ? oldConfig.lastRow : -1;\n if (!oldConfig || oldLastRow < config.firstRow)\n return this.update(config);\n if (lastRow < oldConfig.firstRow)\n return this.update(config);\n if (!oldConfig || oldConfig.lastRow < config.firstRow)\n return this.update(config);\n if (config.lastRow < oldConfig.firstRow)\n return this.update(config);\n if (oldConfig.firstRow < config.firstRow)\n for (var row = this.session.getFoldedRowCount(oldConfig.firstRow, config.firstRow - 1); row > 0; row--)\n this.$lines.shift();\n if (oldConfig.lastRow > config.lastRow)\n for (var row = this.session.getFoldedRowCount(config.lastRow + 1, oldConfig.lastRow); row > 0; row--)\n this.$lines.pop();\n if (config.firstRow < oldConfig.firstRow) {\n this.$lines.unshift(this.$renderLinesFragment(config, config.firstRow, oldConfig.firstRow - 1));\n }\n if (config.lastRow > oldConfig.lastRow) {\n this.$lines.push(this.$renderLinesFragment(config, oldConfig.lastRow + 1, config.lastRow));\n }\n this.$highlightIndentGuide();\n };\n Text.prototype.$renderLinesFragment = function (config, firstRow, lastRow) {\n var fragment = [];\n var row = firstRow;\n var foldLine = this.session.getNextFoldLine(row);\n var foldStart = foldLine ? foldLine.start.row : Infinity;\n while (true) {\n if (row > foldStart) {\n row = foldLine.end.row + 1;\n foldLine = this.session.getNextFoldLine(row, foldLine);\n foldStart = foldLine ? foldLine.start.row : Infinity;\n }\n if (row > lastRow)\n break;\n var line = this.$lines.createCell(row, config, this.session);\n var lineEl = line.element;\n this.dom.removeChildren(lineEl);\n dom.setStyle(lineEl.style, \"height\", this.$lines.computeLineHeight(row, config, this.session) + \"px\");\n dom.setStyle(lineEl.style, \"top\", this.$lines.computeLineTop(row, config, this.session) + \"px\");\n this.$renderLine(lineEl, row, row == foldStart ? foldLine : false);\n if (this.$useLineGroups()) {\n lineEl.className = \"ace_line_group\";\n }\n else {\n lineEl.className = \"ace_line\";\n }\n fragment.push(line);\n row++;\n }\n return fragment;\n };\n Text.prototype.update = function (config) {\n this.$lines.moveContainer(config);\n this.config = config;\n var firstRow = config.firstRow;\n var lastRow = config.lastRow;\n var lines = this.$lines;\n while (lines.getLength())\n lines.pop();\n lines.push(this.$renderLinesFragment(config, firstRow, lastRow));\n };\n Text.prototype.$renderToken = function (parent, screenColumn, token, value) {\n var self = this;\n var re = /(\\t)|( +)|([\\x00-\\x1f\\x80-\\xa0\\xad\\u1680\\u180E\\u2000-\\u200f\\u2028\\u2029\\u202F\\u205F\\uFEFF\\uFFF9-\\uFFFC\\u2066\\u2067\\u2068\\u202A\\u202B\\u202D\\u202E\\u202C\\u2069]+)|(\\u3000)|([\\u1100-\\u115F\\u11A3-\\u11A7\\u11FA-\\u11FF\\u2329-\\u232A\\u2E80-\\u2E99\\u2E9B-\\u2EF3\\u2F00-\\u2FD5\\u2FF0-\\u2FFB\\u3001-\\u303E\\u3041-\\u3096\\u3099-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u3190-\\u31BA\\u31C0-\\u31E3\\u31F0-\\u321E\\u3220-\\u3247\\u3250-\\u32FE\\u3300-\\u4DBF\\u4E00-\\uA48C\\uA490-\\uA4C6\\uA960-\\uA97C\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFAFF\\uFE10-\\uFE19\\uFE30-\\uFE52\\uFE54-\\uFE66\\uFE68-\\uFE6B\\uFF01-\\uFF60\\uFFE0-\\uFFE6]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF])/g;\n var valueFragment = this.dom.createFragment(this.element);\n var m;\n var i = 0;\n while (m = re.exec(value)) {\n var tab = m[1];\n var simpleSpace = m[2];\n var controlCharacter = m[3];\n var cjkSpace = m[4];\n var cjk = m[5];\n if (!self.showSpaces && simpleSpace)\n continue;\n var before = i != m.index ? value.slice(i, m.index) : \"\";\n i = m.index + m[0].length;\n if (before) {\n valueFragment.appendChild(this.dom.createTextNode(before, this.element));\n }\n if (tab) {\n var tabSize = self.session.getScreenTabSize(screenColumn + m.index);\n valueFragment.appendChild(self.$tabStrings[tabSize].cloneNode(true));\n screenColumn += tabSize - 1;\n }\n else if (simpleSpace) {\n if (self.showSpaces) {\n var span = this.dom.createElement(\"span\");\n span.className = \"ace_invisible ace_invisible_space\";\n span.textContent = lang.stringRepeat(self.SPACE_CHAR, simpleSpace.length);\n valueFragment.appendChild(span);\n }\n else {\n valueFragment.appendChild(this.dom.createTextNode(simpleSpace, this.element));\n }\n }\n else if (controlCharacter) {\n var span = this.dom.createElement(\"span\");\n span.className = \"ace_invisible ace_invisible_space ace_invalid\";\n span.textContent = lang.stringRepeat(self.SPACE_CHAR, controlCharacter.length);\n valueFragment.appendChild(span);\n }\n else if (cjkSpace) {\n screenColumn += 1;\n var span = this.dom.createElement(\"span\");\n span.style.width = (self.config.characterWidth * 2) + \"px\";\n span.className = self.showSpaces ? \"ace_cjk ace_invisible ace_invisible_space\" : \"ace_cjk\";\n span.textContent = self.showSpaces ? self.SPACE_CHAR : cjkSpace;\n valueFragment.appendChild(span);\n }\n else if (cjk) {\n screenColumn += 1;\n var span = this.dom.createElement(\"span\");\n span.style.width = (self.config.characterWidth * 2) + \"px\";\n span.className = \"ace_cjk\";\n span.textContent = cjk;\n valueFragment.appendChild(span);\n }\n }\n valueFragment.appendChild(this.dom.createTextNode(i ? value.slice(i) : value, this.element));\n if (!isTextToken(token.type)) {\n var classes = \"ace_\" + token.type.replace(/\\./g, \" ace_\");\n var span = this.dom.createElement(\"span\");\n if (token.type == \"fold\") {\n span.style.width = (token.value.length * this.config.characterWidth) + \"px\";\n span.setAttribute(\"title\", nls(\"Unfold code\"));\n }\n span.className = classes;\n span.appendChild(valueFragment);\n parent.appendChild(span);\n }\n else {\n parent.appendChild(valueFragment);\n }\n return screenColumn + value.length;\n };\n Text.prototype.renderIndentGuide = function (parent, value, max) {\n var cols = value.search(this.$indentGuideRe);\n if (cols <= 0 || cols >= max)\n return value;\n if (value[0] == \" \") {\n cols -= cols % this.tabSize;\n var count = cols / this.tabSize;\n for (var i = 0; i < count; i++) {\n parent.appendChild(this.$tabStrings[\" \"].cloneNode(true));\n }\n this.$highlightIndentGuide();\n return value.substr(cols);\n }\n else if (value[0] == \"\\t\") {\n for (var i = 0; i < cols; i++) {\n parent.appendChild(this.$tabStrings[\"\\t\"].cloneNode(true));\n }\n this.$highlightIndentGuide();\n return value.substr(cols);\n }\n this.$highlightIndentGuide();\n return value;\n };\n Text.prototype.$highlightIndentGuide = function () {\n if (!this.$highlightIndentGuides || !this.displayIndentGuides)\n return;\n this.$highlightIndentGuideMarker = {\n indentLevel: undefined,\n start: undefined,\n end: undefined,\n dir: undefined\n };\n var lines = this.session.doc.$lines;\n if (!lines)\n return;\n var cursor = this.session.selection.getCursor();\n var initialIndent = /^\\s*/.exec(this.session.doc.getLine(cursor.row))[0].length;\n var elementIndentLevel = Math.floor(initialIndent / this.tabSize);\n this.$highlightIndentGuideMarker = {\n indentLevel: elementIndentLevel,\n start: cursor.row\n };\n var bracketHighlight = this.session.$bracketHighlight;\n if (bracketHighlight) {\n var ranges = this.session.$bracketHighlight.ranges;\n for (var i = 0; i < ranges.length; i++) {\n if (cursor.row !== ranges[i].start.row) {\n this.$highlightIndentGuideMarker.end = ranges[i].start.row;\n if (cursor.row > ranges[i].start.row) {\n this.$highlightIndentGuideMarker.dir = -1;\n }\n else {\n this.$highlightIndentGuideMarker.dir = 1;\n }\n break;\n }\n }\n }\n if (!this.$highlightIndentGuideMarker.end) {\n if (lines[cursor.row] !== '' && cursor.column === lines[cursor.row].length) {\n this.$highlightIndentGuideMarker.dir = 1;\n for (var i = cursor.row + 1; i < lines.length; i++) {\n var line = lines[i];\n var currentIndent = /^\\s*/.exec(line)[0].length;\n if (line !== '') {\n this.$highlightIndentGuideMarker.end = i;\n if (currentIndent <= initialIndent)\n break;\n }\n }\n }\n }\n this.$renderHighlightIndentGuide();\n };\n Text.prototype.$clearActiveIndentGuide = function () {\n var cells = this.$lines.cells;\n for (var i = 0; i < cells.length; i++) {\n var cell = cells[i];\n var childNodes = cell.element.childNodes;\n if (childNodes.length > 0) {\n for (var j = 0; j < childNodes.length; j++) {\n if (childNodes[j].classList && childNodes[j].classList.contains(\"ace_indent-guide-active\")) {\n childNodes[j].classList.remove(\"ace_indent-guide-active\");\n break;\n }\n }\n }\n }\n };\n Text.prototype.$setIndentGuideActive = function (cell, indentLevel) {\n var line = this.session.doc.getLine(cell.row);\n if (line !== \"\") {\n var childNodes = cell.element.childNodes;\n if (childNodes) {\n var node = childNodes[indentLevel - 1];\n if (node && node.classList && node.classList.contains(\"ace_indent-guide\"))\n node.classList.add(\"ace_indent-guide-active\");\n }\n }\n };\n Text.prototype.$renderHighlightIndentGuide = function () {\n if (!this.$lines)\n return;\n var cells = this.$lines.cells;\n this.$clearActiveIndentGuide();\n var indentLevel = this.$highlightIndentGuideMarker.indentLevel;\n if (indentLevel !== 0) {\n if (this.$highlightIndentGuideMarker.dir === 1) {\n for (var i = 0; i < cells.length; i++) {\n var cell = cells[i];\n if (this.$highlightIndentGuideMarker.end && cell.row >= this.$highlightIndentGuideMarker.start\n + 1) {\n if (cell.row >= this.$highlightIndentGuideMarker.end)\n break;\n this.$setIndentGuideActive(cell, indentLevel);\n }\n }\n }\n else {\n for (var i = cells.length - 1; i >= 0; i--) {\n var cell = cells[i];\n if (this.$highlightIndentGuideMarker.end && cell.row < this.$highlightIndentGuideMarker.start) {\n if (cell.row <= this.$highlightIndentGuideMarker.end)\n break;\n this.$setIndentGuideActive(cell, indentLevel);\n }\n }\n }\n }\n };\n Text.prototype.$createLineElement = function (parent) {\n var lineEl = this.dom.createElement(\"div\");\n lineEl.className = \"ace_line\";\n lineEl.style.height = this.config.lineHeight + \"px\";\n return lineEl;\n };\n Text.prototype.$renderWrappedLine = function (parent, tokens, splits) {\n var chars = 0;\n var split = 0;\n var splitChars = splits[0];\n var screenColumn = 0;\n var lineEl = this.$createLineElement();\n parent.appendChild(lineEl);\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n var value = token.value;\n if (i == 0 && this.displayIndentGuides) {\n chars = value.length;\n value = this.renderIndentGuide(lineEl, value, splitChars);\n if (!value)\n continue;\n chars -= value.length;\n }\n if (chars + value.length < splitChars) {\n screenColumn = this.$renderToken(lineEl, screenColumn, token, value);\n chars += value.length;\n }\n else {\n while (chars + value.length >= splitChars) {\n screenColumn = this.$renderToken(lineEl, screenColumn, token, value.substring(0, splitChars - chars));\n value = value.substring(splitChars - chars);\n chars = splitChars;\n lineEl = this.$createLineElement();\n parent.appendChild(lineEl);\n lineEl.appendChild(this.dom.createTextNode(lang.stringRepeat(\"\\xa0\", splits.indent), this.element));\n split++;\n screenColumn = 0;\n splitChars = splits[split] || Number.MAX_VALUE;\n }\n if (value.length != 0) {\n chars += value.length;\n screenColumn = this.$renderToken(lineEl, screenColumn, token, value);\n }\n }\n }\n if (splits[splits.length - 1] > this.MAX_LINE_LENGTH)\n this.$renderOverflowMessage(lineEl, screenColumn, null, \"\", true);\n };\n Text.prototype.$renderSimpleLine = function (parent, tokens) {\n var screenColumn = 0;\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n var value = token.value;\n if (i == 0 && this.displayIndentGuides) {\n value = this.renderIndentGuide(parent, value);\n if (!value)\n continue;\n }\n if (screenColumn + value.length > this.MAX_LINE_LENGTH)\n return this.$renderOverflowMessage(parent, screenColumn, token, value);\n screenColumn = this.$renderToken(parent, screenColumn, token, value);\n }\n };\n Text.prototype.$renderOverflowMessage = function (parent, screenColumn, token, value, hide) {\n token && this.$renderToken(parent, screenColumn, token, value.slice(0, this.MAX_LINE_LENGTH - screenColumn));\n var overflowEl = this.dom.createElement(\"span\");\n overflowEl.className = \"ace_inline_button ace_keyword ace_toggle_wrap\";\n overflowEl.textContent = hide ? \"\" : \"\";\n parent.appendChild(overflowEl);\n };\n Text.prototype.$renderLine = function (parent, row, foldLine) {\n if (!foldLine && foldLine != false)\n foldLine = this.session.getFoldLine(row);\n if (foldLine)\n var tokens = this.$getFoldLineTokens(row, foldLine);\n else\n var tokens = this.session.getTokens(row);\n var lastLineEl = parent;\n if (tokens.length) {\n var splits = this.session.getRowSplitData(row);\n if (splits && splits.length) {\n this.$renderWrappedLine(parent, tokens, splits);\n var lastLineEl = parent.lastChild;\n }\n else {\n var lastLineEl = parent;\n if (this.$useLineGroups()) {\n lastLineEl = this.$createLineElement();\n parent.appendChild(lastLineEl);\n }\n this.$renderSimpleLine(lastLineEl, tokens);\n }\n }\n else if (this.$useLineGroups()) {\n lastLineEl = this.$createLineElement();\n parent.appendChild(lastLineEl);\n }\n if (this.showEOL && lastLineEl) {\n if (foldLine)\n row = foldLine.end.row;\n var invisibleEl = this.dom.createElement(\"span\");\n invisibleEl.className = \"ace_invisible ace_invisible_eol\";\n invisibleEl.textContent = row == this.session.getLength() - 1 ? this.EOF_CHAR : this.EOL_CHAR;\n lastLineEl.appendChild(invisibleEl);\n }\n };\n Text.prototype.$getFoldLineTokens = function (row, foldLine) {\n var session = this.session;\n var renderTokens = [];\n function addTokens(tokens, from, to) {\n var idx = 0, col = 0;\n while ((col + tokens[idx].value.length) < from) {\n col += tokens[idx].value.length;\n idx++;\n if (idx == tokens.length)\n return;\n }\n if (col != from) {\n var value = tokens[idx].value.substring(from - col);\n if (value.length > (to - from))\n value = value.substring(0, to - from);\n renderTokens.push({\n type: tokens[idx].type,\n value: value\n });\n col = from + value.length;\n idx += 1;\n }\n while (col < to && idx < tokens.length) {\n var value = tokens[idx].value;\n if (value.length + col > to) {\n renderTokens.push({\n type: tokens[idx].type,\n value: value.substring(0, to - col)\n });\n }\n else\n renderTokens.push(tokens[idx]);\n col += value.length;\n idx += 1;\n }\n }\n var tokens = session.getTokens(row);\n foldLine.walk(function (placeholder, row, column, lastColumn, isNewRow) {\n if (placeholder != null) {\n renderTokens.push({\n type: \"fold\",\n value: placeholder\n });\n }\n else {\n if (isNewRow)\n tokens = session.getTokens(row);\n if (tokens.length)\n addTokens(tokens, lastColumn, column);\n }\n }, foldLine.end.row, this.session.getLine(foldLine.end.row).length);\n return renderTokens;\n };\n Text.prototype.$useLineGroups = function () {\n return this.session.getUseWrapMode();\n };\n return Text;\n}());\nText.prototype.EOF_CHAR = \"\\xB6\";\nText.prototype.EOL_CHAR_LF = \"\\xAC\";\nText.prototype.EOL_CHAR_CRLF = \"\\xa4\";\nText.prototype.EOL_CHAR = Text.prototype.EOL_CHAR_LF;\nText.prototype.TAB_CHAR = \"\\u2014\"; //\"\\u21E5\";\nText.prototype.SPACE_CHAR = \"\\xB7\";\nText.prototype.$padding = 0;\nText.prototype.MAX_LINE_LENGTH = 10000;\nText.prototype.showInvisibles = false;\nText.prototype.showSpaces = false;\nText.prototype.showTabs = false;\nText.prototype.showEOL = false;\nText.prototype.displayIndentGuides = true;\nText.prototype.$highlightIndentGuides = true;\nText.prototype.$tabStrings = [];\nText.prototype.destroy = {};\nText.prototype.onChangeTabSize = Text.prototype.$computeTabString;\noop.implement(Text.prototype, EventEmitter);\nexports.Text = Text;\n\n});\n\nace.define(\"ace/layer/cursor\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"], function(require, exports, module){\"use strict\";\nvar dom = require(\"../lib/dom\");\nvar Cursor = /** @class */ (function () {\n function Cursor(parentEl) {\n this.element = dom.createElement(\"div\");\n this.element.className = \"ace_layer ace_cursor-layer\";\n parentEl.appendChild(this.element);\n this.isVisible = false;\n this.isBlinking = true;\n this.blinkInterval = 1000;\n this.smoothBlinking = false;\n this.cursors = [];\n this.cursor = this.addCursor();\n dom.addCssClass(this.element, \"ace_hidden-cursors\");\n this.$updateCursors = this.$updateOpacity.bind(this);\n }\n Cursor.prototype.$updateOpacity = function (val) {\n var cursors = this.cursors;\n for (var i = cursors.length; i--;)\n dom.setStyle(cursors[i].style, \"opacity\", val ? \"\" : \"0\");\n };\n Cursor.prototype.$startCssAnimation = function () {\n var cursors = this.cursors;\n for (var i = cursors.length; i--;)\n cursors[i].style.animationDuration = this.blinkInterval + \"ms\";\n this.$isAnimating = true;\n setTimeout(function () {\n if (this.$isAnimating) {\n dom.addCssClass(this.element, \"ace_animate-blinking\");\n }\n }.bind(this));\n };\n Cursor.prototype.$stopCssAnimation = function () {\n this.$isAnimating = false;\n dom.removeCssClass(this.element, \"ace_animate-blinking\");\n };\n Cursor.prototype.setPadding = function (padding) {\n this.$padding = padding;\n };\n Cursor.prototype.setSession = function (session) {\n this.session = session;\n };\n Cursor.prototype.setBlinking = function (blinking) {\n if (blinking != this.isBlinking) {\n this.isBlinking = blinking;\n this.restartTimer();\n }\n };\n Cursor.prototype.setBlinkInterval = function (blinkInterval) {\n if (blinkInterval != this.blinkInterval) {\n this.blinkInterval = blinkInterval;\n this.restartTimer();\n }\n };\n Cursor.prototype.setSmoothBlinking = function (smoothBlinking) {\n if (smoothBlinking != this.smoothBlinking) {\n this.smoothBlinking = smoothBlinking;\n dom.setCssClass(this.element, \"ace_smooth-blinking\", smoothBlinking);\n this.$updateCursors(true);\n this.restartTimer();\n }\n };\n Cursor.prototype.addCursor = function () {\n var el = dom.createElement(\"div\");\n el.className = \"ace_cursor\";\n this.element.appendChild(el);\n this.cursors.push(el);\n return el;\n };\n Cursor.prototype.removeCursor = function () {\n if (this.cursors.length > 1) {\n var el = this.cursors.pop();\n el.parentNode.removeChild(el);\n return el;\n }\n };\n Cursor.prototype.hideCursor = function () {\n this.isVisible = false;\n dom.addCssClass(this.element, \"ace_hidden-cursors\");\n this.restartTimer();\n };\n Cursor.prototype.showCursor = function () {\n this.isVisible = true;\n dom.removeCssClass(this.element, \"ace_hidden-cursors\");\n this.restartTimer();\n };\n Cursor.prototype.restartTimer = function () {\n var update = this.$updateCursors;\n clearInterval(this.intervalId);\n clearTimeout(this.timeoutId);\n this.$stopCssAnimation();\n if (this.smoothBlinking) {\n this.$isSmoothBlinking = false;\n dom.removeCssClass(this.element, \"ace_smooth-blinking\");\n }\n update(true);\n if (!this.isBlinking || !this.blinkInterval || !this.isVisible) {\n this.$stopCssAnimation();\n return;\n }\n if (this.smoothBlinking) {\n this.$isSmoothBlinking = true;\n setTimeout(function () {\n if (this.$isSmoothBlinking) {\n dom.addCssClass(this.element, \"ace_smooth-blinking\");\n }\n }.bind(this));\n }\n if (dom.HAS_CSS_ANIMATION) {\n this.$startCssAnimation();\n }\n else {\n var blink = function () {\n this.timeoutId = setTimeout(function () {\n update(false);\n }, 0.6 * this.blinkInterval);\n }.bind(this);\n this.intervalId = setInterval(function () {\n update(true);\n blink();\n }, this.blinkInterval);\n blink();\n }\n };\n Cursor.prototype.getPixelPosition = function (position, onScreen) {\n if (!this.config || !this.session)\n return { left: 0, top: 0 };\n if (!position)\n position = this.session.selection.getCursor();\n var pos = this.session.documentToScreenPosition(position);\n var cursorLeft = this.$padding + (this.session.$bidiHandler.isBidiRow(pos.row, position.row)\n ? this.session.$bidiHandler.getPosLeft(pos.column)\n : pos.column * this.config.characterWidth);\n var cursorTop = (pos.row - (onScreen ? this.config.firstRowScreen : 0)) *\n this.config.lineHeight;\n return { left: cursorLeft, top: cursorTop };\n };\n Cursor.prototype.isCursorInView = function (pixelPos, config) {\n return pixelPos.top >= 0 && pixelPos.top < config.maxHeight;\n };\n Cursor.prototype.update = function (config) {\n this.config = config;\n var selections = this.session.$selectionMarkers;\n var i = 0, cursorIndex = 0;\n if (selections === undefined || selections.length === 0) {\n selections = [{ cursor: null }];\n }\n for (var i = 0, n = selections.length; i < n; i++) {\n var pixelPos = this.getPixelPosition(selections[i].cursor, true);\n if ((pixelPos.top > config.height + config.offset ||\n pixelPos.top < 0) && i > 1) {\n continue;\n }\n var element = this.cursors[cursorIndex++] || this.addCursor();\n var style = element.style;\n if (!this.drawCursor) {\n if (!this.isCursorInView(pixelPos, config)) {\n dom.setStyle(style, \"display\", \"none\");\n }\n else {\n dom.setStyle(style, \"display\", \"block\");\n dom.translate(element, pixelPos.left, pixelPos.top);\n dom.setStyle(style, \"width\", Math.round(config.characterWidth) + \"px\");\n dom.setStyle(style, \"height\", config.lineHeight + \"px\");\n }\n }\n else {\n this.drawCursor(element, pixelPos, config, selections[i], this.session);\n }\n }\n while (this.cursors.length > cursorIndex)\n this.removeCursor();\n var overwrite = this.session.getOverwrite();\n this.$setOverwrite(overwrite);\n this.$pixelPos = pixelPos;\n this.restartTimer();\n };\n Cursor.prototype.$setOverwrite = function (overwrite) {\n if (overwrite != this.overwrite) {\n this.overwrite = overwrite;\n if (overwrite)\n dom.addCssClass(this.element, \"ace_overwrite-cursors\");\n else\n dom.removeCssClass(this.element, \"ace_overwrite-cursors\");\n }\n };\n Cursor.prototype.destroy = function () {\n clearInterval(this.intervalId);\n clearTimeout(this.timeoutId);\n };\n return Cursor;\n}());\nCursor.prototype.$padding = 0;\nCursor.prototype.drawCursor = null;\nexports.Cursor = Cursor;\n\n});\n\nace.define(\"ace/scrollbar\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/dom\",\"ace/lib/event\",\"ace/lib/event_emitter\"], function(require, exports, module){\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar oop = require(\"./lib/oop\");\nvar dom = require(\"./lib/dom\");\nvar event = require(\"./lib/event\");\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar MAX_SCROLL_H = 0x8000;\nvar Scrollbar = /** @class */ (function () {\n function Scrollbar(parent, classSuffix) {\n this.element = dom.createElement(\"div\");\n this.element.className = \"ace_scrollbar ace_scrollbar\" + classSuffix;\n this.inner = dom.createElement(\"div\");\n this.inner.className = \"ace_scrollbar-inner\";\n this.inner.textContent = \"\\xa0\";\n this.element.appendChild(this.inner);\n parent.appendChild(this.element);\n this.setVisible(false);\n this.skipEvent = false;\n event.addListener(this.element, \"scroll\", this.onScroll.bind(this));\n event.addListener(this.element, \"mousedown\", event.preventDefault);\n }\n Scrollbar.prototype.setVisible = function (isVisible) {\n this.element.style.display = isVisible ? \"\" : \"none\";\n this.isVisible = isVisible;\n this.coeff = 1;\n };\n return Scrollbar;\n}());\noop.implement(Scrollbar.prototype, EventEmitter);\nvar VScrollBar = /** @class */ (function (_super) {\n __extends(VScrollBar, _super);\n function VScrollBar(parent, renderer) {\n var _this = _super.call(this, parent, '-v') || this;\n _this.scrollTop = 0;\n _this.scrollHeight = 0;\n renderer.$scrollbarWidth =\n _this.width = dom.scrollbarWidth(parent.ownerDocument);\n _this.inner.style.width =\n _this.element.style.width = (_this.width || 15) + 5 + \"px\";\n _this.$minWidth = 0;\n return _this;\n }\n VScrollBar.prototype.onScroll = function () {\n if (!this.skipEvent) {\n this.scrollTop = this.element.scrollTop;\n if (this.coeff != 1) {\n var h = this.element.clientHeight / this.scrollHeight;\n this.scrollTop = this.scrollTop * (1 - h) / (this.coeff - h);\n }\n this._emit(\"scroll\", { data: this.scrollTop });\n }\n this.skipEvent = false;\n };\n VScrollBar.prototype.getWidth = function () {\n return Math.max(this.isVisible ? this.width : 0, this.$minWidth || 0);\n };\n VScrollBar.prototype.setHeight = function (height) {\n this.element.style.height = height + \"px\";\n };\n VScrollBar.prototype.setScrollHeight = function (height) {\n this.scrollHeight = height;\n if (height > MAX_SCROLL_H) {\n this.coeff = MAX_SCROLL_H / height;\n height = MAX_SCROLL_H;\n }\n else if (this.coeff != 1) {\n this.coeff = 1;\n }\n this.inner.style.height = height + \"px\";\n };\n VScrollBar.prototype.setScrollTop = function (scrollTop) {\n if (this.scrollTop != scrollTop) {\n this.skipEvent = true;\n this.scrollTop = scrollTop;\n this.element.scrollTop = scrollTop * this.coeff;\n }\n };\n return VScrollBar;\n}(Scrollbar));\nVScrollBar.prototype.setInnerHeight = VScrollBar.prototype.setScrollHeight;\nvar HScrollBar = /** @class */ (function (_super) {\n __extends(HScrollBar, _super);\n function HScrollBar(parent, renderer) {\n var _this = _super.call(this, parent, '-h') || this;\n _this.scrollLeft = 0;\n _this.height = renderer.$scrollbarWidth;\n _this.inner.style.height =\n _this.element.style.height = (_this.height || 15) + 5 + \"px\";\n return _this;\n }\n HScrollBar.prototype.onScroll = function () {\n if (!this.skipEvent) {\n this.scrollLeft = this.element.scrollLeft;\n this._emit(\"scroll\", { data: this.scrollLeft });\n }\n this.skipEvent = false;\n };\n HScrollBar.prototype.getHeight = function () {\n return this.isVisible ? this.height : 0;\n };\n HScrollBar.prototype.setWidth = function (width) {\n this.element.style.width = width + \"px\";\n };\n HScrollBar.prototype.setInnerWidth = function (width) {\n this.inner.style.width = width + \"px\";\n };\n HScrollBar.prototype.setScrollWidth = function (width) {\n this.inner.style.width = width + \"px\";\n };\n HScrollBar.prototype.setScrollLeft = function (scrollLeft) {\n if (this.scrollLeft != scrollLeft) {\n this.skipEvent = true;\n this.scrollLeft = this.element.scrollLeft = scrollLeft;\n }\n };\n return HScrollBar;\n}(Scrollbar));\nexports.ScrollBar = VScrollBar; // backward compatibility\nexports.ScrollBarV = VScrollBar; // backward compatibility\nexports.ScrollBarH = HScrollBar; // backward compatibility\nexports.VScrollBar = VScrollBar;\nexports.HScrollBar = HScrollBar;\n\n});\n\nace.define(\"ace/scrollbar_custom\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/dom\",\"ace/lib/event\",\"ace/lib/event_emitter\"], function(require, exports, module){\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar oop = require(\"./lib/oop\");\nvar dom = require(\"./lib/dom\");\nvar event = require(\"./lib/event\");\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\ndom.importCssString(\".ace_editor>.ace_sb-v div, .ace_editor>.ace_sb-h div{\\n position: absolute;\\n background: rgba(128, 128, 128, 0.6);\\n -moz-box-sizing: border-box;\\n box-sizing: border-box;\\n border: 1px solid #bbb;\\n border-radius: 2px;\\n z-index: 8;\\n}\\n.ace_editor>.ace_sb-v, .ace_editor>.ace_sb-h {\\n position: absolute;\\n z-index: 6;\\n background: none;\\n overflow: hidden!important;\\n}\\n.ace_editor>.ace_sb-v {\\n z-index: 6;\\n right: 0;\\n top: 0;\\n width: 12px;\\n}\\n.ace_editor>.ace_sb-v div {\\n z-index: 8;\\n right: 0;\\n width: 100%;\\n}\\n.ace_editor>.ace_sb-h {\\n bottom: 0;\\n left: 0;\\n height: 12px;\\n}\\n.ace_editor>.ace_sb-h div {\\n bottom: 0;\\n height: 100%;\\n}\\n.ace_editor>.ace_sb_grabbed {\\n z-index: 8;\\n background: #000;\\n}\", \"ace_scrollbar.css\", false);\nvar ScrollBar = /** @class */ (function () {\n function ScrollBar(parent, classSuffix) {\n this.element = dom.createElement(\"div\");\n this.element.className = \"ace_sb\" + classSuffix;\n this.inner = dom.createElement(\"div\");\n this.inner.className = \"\";\n this.element.appendChild(this.inner);\n this.VScrollWidth = 12;\n this.HScrollHeight = 12;\n parent.appendChild(this.element);\n this.setVisible(false);\n this.skipEvent = false;\n event.addMultiMouseDownListener(this.element, [500, 300, 300], this, \"onMouseDown\");\n }\n ScrollBar.prototype.setVisible = function (isVisible) {\n this.element.style.display = isVisible ? \"\" : \"none\";\n this.isVisible = isVisible;\n this.coeff = 1;\n };\n return ScrollBar;\n}());\noop.implement(ScrollBar.prototype, EventEmitter);\nvar VScrollBar = /** @class */ (function (_super) {\n __extends(VScrollBar, _super);\n function VScrollBar(parent, renderer) {\n var _this = _super.call(this, parent, '-v') || this;\n _this.scrollTop = 0;\n _this.scrollHeight = 0;\n _this.parent = parent;\n _this.width = _this.VScrollWidth;\n _this.renderer = renderer;\n _this.inner.style.width = _this.element.style.width = (_this.width || 15) + \"px\";\n _this.$minWidth = 0;\n return _this;\n }\n VScrollBar.prototype.onMouseDown = function (eType, e) {\n if (eType !== \"mousedown\")\n return;\n if (event.getButton(e) !== 0 || e.detail === 2) {\n return;\n }\n if (e.target === this.inner) {\n var self = this;\n var mousePageY = e.clientY;\n var onMouseMove = function (e) {\n mousePageY = e.clientY;\n };\n var onMouseUp = function () {\n clearInterval(timerId);\n };\n var startY = e.clientY;\n var startTop = this.thumbTop;\n var onScrollInterval = function () {\n if (mousePageY === undefined)\n return;\n var scrollTop = self.scrollTopFromThumbTop(startTop + mousePageY - startY);\n if (scrollTop === self.scrollTop)\n return;\n self._emit(\"scroll\", { data: scrollTop });\n };\n event.capture(this.inner, onMouseMove, onMouseUp);\n var timerId = setInterval(onScrollInterval, 20);\n return event.preventDefault(e);\n }\n var top = e.clientY - this.element.getBoundingClientRect().top - this.thumbHeight / 2;\n this._emit(\"scroll\", { data: this.scrollTopFromThumbTop(top) });\n return event.preventDefault(e);\n };\n VScrollBar.prototype.getHeight = function () {\n return this.height;\n };\n VScrollBar.prototype.scrollTopFromThumbTop = function (thumbTop) {\n var scrollTop = thumbTop * (this.pageHeight - this.viewHeight) / (this.slideHeight - this.thumbHeight);\n scrollTop = scrollTop >> 0;\n if (scrollTop < 0) {\n scrollTop = 0;\n }\n else if (scrollTop > this.pageHeight - this.viewHeight) {\n scrollTop = this.pageHeight - this.viewHeight;\n }\n return scrollTop;\n };\n VScrollBar.prototype.getWidth = function () {\n return Math.max(this.isVisible ? this.width : 0, this.$minWidth || 0);\n };\n VScrollBar.prototype.setHeight = function (height) {\n this.height = Math.max(0, height);\n this.slideHeight = this.height;\n this.viewHeight = this.height;\n this.setScrollHeight(this.pageHeight, true);\n };\n VScrollBar.prototype.setScrollHeight = function (height, force) {\n if (this.pageHeight === height && !force)\n return;\n this.pageHeight = height;\n this.thumbHeight = this.slideHeight * this.viewHeight / this.pageHeight;\n if (this.thumbHeight > this.slideHeight)\n this.thumbHeight = this.slideHeight;\n if (this.thumbHeight < 15)\n this.thumbHeight = 15;\n this.inner.style.height = this.thumbHeight + \"px\";\n if (this.scrollTop > (this.pageHeight - this.viewHeight)) {\n this.scrollTop = (this.pageHeight - this.viewHeight);\n if (this.scrollTop < 0)\n this.scrollTop = 0;\n this._emit(\"scroll\", { data: this.scrollTop });\n }\n };\n VScrollBar.prototype.setScrollTop = function (scrollTop) {\n this.scrollTop = scrollTop;\n if (scrollTop < 0)\n scrollTop = 0;\n this.thumbTop = scrollTop * (this.slideHeight - this.thumbHeight) / (this.pageHeight - this.viewHeight);\n this.inner.style.top = this.thumbTop + \"px\";\n };\n return VScrollBar;\n}(ScrollBar));\nVScrollBar.prototype.setInnerHeight = VScrollBar.prototype.setScrollHeight;\nvar HScrollBar = /** @class */ (function (_super) {\n __extends(HScrollBar, _super);\n function HScrollBar(parent, renderer) {\n var _this = _super.call(this, parent, '-h') || this;\n _this.scrollLeft = 0;\n _this.scrollWidth = 0;\n _this.height = _this.HScrollHeight;\n _this.inner.style.height = _this.element.style.height = (_this.height || 12) + \"px\";\n _this.renderer = renderer;\n return _this;\n }\n HScrollBar.prototype.onMouseDown = function (eType, e) {\n if (eType !== \"mousedown\")\n return;\n if (event.getButton(e) !== 0 || e.detail === 2) {\n return;\n }\n if (e.target === this.inner) {\n var self = this;\n var mousePageX = e.clientX;\n var onMouseMove = function (e) {\n mousePageX = e.clientX;\n };\n var onMouseUp = function () {\n clearInterval(timerId);\n };\n var startX = e.clientX;\n var startLeft = this.thumbLeft;\n var onScrollInterval = function () {\n if (mousePageX === undefined)\n return;\n var scrollLeft = self.scrollLeftFromThumbLeft(startLeft + mousePageX - startX);\n if (scrollLeft === self.scrollLeft)\n return;\n self._emit(\"scroll\", { data: scrollLeft });\n };\n event.capture(this.inner, onMouseMove, onMouseUp);\n var timerId = setInterval(onScrollInterval, 20);\n return event.preventDefault(e);\n }\n var left = e.clientX - this.element.getBoundingClientRect().left - this.thumbWidth / 2;\n this._emit(\"scroll\", { data: this.scrollLeftFromThumbLeft(left) });\n return event.preventDefault(e);\n };\n HScrollBar.prototype.getHeight = function () {\n return this.isVisible ? this.height : 0;\n };\n HScrollBar.prototype.scrollLeftFromThumbLeft = function (thumbLeft) {\n var scrollLeft = thumbLeft * (this.pageWidth - this.viewWidth) / (this.slideWidth - this.thumbWidth);\n scrollLeft = scrollLeft >> 0;\n if (scrollLeft < 0) {\n scrollLeft = 0;\n }\n else if (scrollLeft > this.pageWidth - this.viewWidth) {\n scrollLeft = this.pageWidth - this.viewWidth;\n }\n return scrollLeft;\n };\n HScrollBar.prototype.setWidth = function (width) {\n this.width = Math.max(0, width);\n this.element.style.width = this.width + \"px\";\n this.slideWidth = this.width;\n this.viewWidth = this.width;\n this.setScrollWidth(this.pageWidth, true);\n };\n HScrollBar.prototype.setScrollWidth = function (width, force) {\n if (this.pageWidth === width && !force)\n return;\n this.pageWidth = width;\n this.thumbWidth = this.slideWidth * this.viewWidth / this.pageWidth;\n if (this.thumbWidth > this.slideWidth)\n this.thumbWidth = this.slideWidth;\n if (this.thumbWidth < 15)\n this.thumbWidth = 15;\n this.inner.style.width = this.thumbWidth + \"px\";\n if (this.scrollLeft > (this.pageWidth - this.viewWidth)) {\n this.scrollLeft = (this.pageWidth - this.viewWidth);\n if (this.scrollLeft < 0)\n this.scrollLeft = 0;\n this._emit(\"scroll\", { data: this.scrollLeft });\n }\n };\n HScrollBar.prototype.setScrollLeft = function (scrollLeft) {\n this.scrollLeft = scrollLeft;\n if (scrollLeft < 0)\n scrollLeft = 0;\n this.thumbLeft = scrollLeft * (this.slideWidth - this.thumbWidth) / (this.pageWidth - this.viewWidth);\n this.inner.style.left = (this.thumbLeft) + \"px\";\n };\n return HScrollBar;\n}(ScrollBar));\nHScrollBar.prototype.setInnerWidth = HScrollBar.prototype.setScrollWidth;\nexports.ScrollBar = VScrollBar; // backward compatibility\nexports.ScrollBarV = VScrollBar; // backward compatibility\nexports.ScrollBarH = HScrollBar; // backward compatibility\nexports.VScrollBar = VScrollBar;\nexports.HScrollBar = HScrollBar;\n\n});\n\nace.define(\"ace/renderloop\",[\"require\",\"exports\",\"module\",\"ace/lib/event\"], function(require, exports, module){\"use strict\";\nvar event = require(\"./lib/event\");\nvar RenderLoop = /** @class */ (function () {\n function RenderLoop(onRender, win) {\n this.onRender = onRender;\n this.pending = false;\n this.changes = 0;\n this.$recursionLimit = 2;\n this.window = win || window;\n var _self = this;\n this._flush = function (ts) {\n _self.pending = false;\n var changes = _self.changes;\n if (changes) {\n event.blockIdle(100);\n _self.changes = 0;\n _self.onRender(changes);\n }\n if (_self.changes) {\n if (_self.$recursionLimit-- < 0)\n return;\n _self.schedule();\n }\n else {\n _self.$recursionLimit = 2;\n }\n };\n }\n RenderLoop.prototype.schedule = function (change) {\n this.changes = this.changes | change;\n if (this.changes && !this.pending) {\n event.nextFrame(this._flush);\n this.pending = true;\n }\n };\n RenderLoop.prototype.clear = function (change) {\n var changes = this.changes;\n this.changes = 0;\n return changes;\n };\n return RenderLoop;\n}());\nexports.RenderLoop = RenderLoop;\n\n});\n\nace.define(\"ace/layer/font_metrics\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/dom\",\"ace/lib/lang\",\"ace/lib/event\",\"ace/lib/useragent\",\"ace/lib/event_emitter\"], function(require, exports, module){var oop = require(\"../lib/oop\");\nvar dom = require(\"../lib/dom\");\nvar lang = require(\"../lib/lang\");\nvar event = require(\"../lib/event\");\nvar useragent = require(\"../lib/useragent\");\nvar EventEmitter = require(\"../lib/event_emitter\").EventEmitter;\nvar CHAR_COUNT = 512;\nvar USE_OBSERVER = typeof ResizeObserver == \"function\";\nvar L = 200;\nvar FontMetrics = /** @class */ (function () {\n function FontMetrics(parentEl) {\n this.el = dom.createElement(\"div\");\n this.$setMeasureNodeStyles(this.el.style, true);\n this.$main = dom.createElement(\"div\");\n this.$setMeasureNodeStyles(this.$main.style);\n this.$measureNode = dom.createElement(\"div\");\n this.$setMeasureNodeStyles(this.$measureNode.style);\n this.el.appendChild(this.$main);\n this.el.appendChild(this.$measureNode);\n parentEl.appendChild(this.el);\n this.$measureNode.textContent = lang.stringRepeat(\"X\", CHAR_COUNT);\n this.$characterSize = { width: 0, height: 0 };\n if (USE_OBSERVER)\n this.$addObserver();\n else\n this.checkForSizeChanges();\n }\n FontMetrics.prototype.$setMeasureNodeStyles = function (style, isRoot) {\n style.width = style.height = \"auto\";\n style.left = style.top = \"0px\";\n style.visibility = \"hidden\";\n style.position = \"absolute\";\n style.whiteSpace = \"pre\";\n if (useragent.isIE < 8) {\n style[\"font-family\"] = \"inherit\";\n }\n else {\n style.font = \"inherit\";\n }\n style.overflow = isRoot ? \"hidden\" : \"visible\";\n };\n FontMetrics.prototype.checkForSizeChanges = function (size) {\n if (size === undefined)\n size = this.$measureSizes();\n if (size && (this.$characterSize.width !== size.width || this.$characterSize.height !== size.height)) {\n this.$measureNode.style.fontWeight = \"bold\";\n var boldSize = this.$measureSizes();\n this.$measureNode.style.fontWeight = \"\";\n this.$characterSize = size;\n this.charSizes = Object.create(null);\n this.allowBoldFonts = boldSize && boldSize.width === size.width && boldSize.height === size.height;\n this._emit(\"changeCharacterSize\", { data: size });\n }\n };\n FontMetrics.prototype.$addObserver = function () {\n var self = this;\n this.$observer = new window.ResizeObserver(function (e) {\n self.checkForSizeChanges();\n });\n this.$observer.observe(this.$measureNode);\n };\n FontMetrics.prototype.$pollSizeChanges = function () {\n if (this.$pollSizeChangesTimer || this.$observer)\n return this.$pollSizeChangesTimer;\n var self = this;\n return this.$pollSizeChangesTimer = event.onIdle(function cb() {\n self.checkForSizeChanges();\n event.onIdle(cb, 500);\n }, 500);\n };\n FontMetrics.prototype.setPolling = function (val) {\n if (val) {\n this.$pollSizeChanges();\n }\n else if (this.$pollSizeChangesTimer) {\n clearInterval(this.$pollSizeChangesTimer);\n this.$pollSizeChangesTimer = 0;\n }\n };\n FontMetrics.prototype.$measureSizes = function (node) {\n var size = {\n height: (node || this.$measureNode).clientHeight,\n width: (node || this.$measureNode).clientWidth / CHAR_COUNT\n };\n if (size.width === 0 || size.height === 0)\n return null;\n return size;\n };\n FontMetrics.prototype.$measureCharWidth = function (ch) {\n this.$main.textContent = lang.stringRepeat(ch, CHAR_COUNT);\n var rect = this.$main.getBoundingClientRect();\n return rect.width / CHAR_COUNT;\n };\n FontMetrics.prototype.getCharacterWidth = function (ch) {\n var w = this.charSizes[ch];\n if (w === undefined) {\n w = this.charSizes[ch] = this.$measureCharWidth(ch) / this.$characterSize.width;\n }\n return w;\n };\n FontMetrics.prototype.destroy = function () {\n clearInterval(this.$pollSizeChangesTimer);\n if (this.$observer)\n this.$observer.disconnect();\n if (this.el && this.el.parentNode)\n this.el.parentNode.removeChild(this.el);\n };\n FontMetrics.prototype.$getZoom = function (element) {\n if (!element || !element.parentElement)\n return 1;\n return (window.getComputedStyle(element).zoom || 1) * this.$getZoom(element.parentElement);\n };\n FontMetrics.prototype.$initTransformMeasureNodes = function () {\n var t = function (t, l) {\n return [\"div\", {\n style: \"position: absolute;top:\" + t + \"px;left:\" + l + \"px;\"\n }];\n };\n this.els = dom.buildDom([t(0, 0), t(L, 0), t(0, L), t(L, L)], this.el);\n };\n FontMetrics.prototype.transformCoordinates = function (clientPos, elPos) {\n if (clientPos) {\n var zoom = this.$getZoom(this.el);\n clientPos = mul(1 / zoom, clientPos);\n }\n function solve(l1, l2, r) {\n var det = l1[1] * l2[0] - l1[0] * l2[1];\n return [\n (-l2[1] * r[0] + l2[0] * r[1]) / det,\n (+l1[1] * r[0] - l1[0] * r[1]) / det\n ];\n }\n function sub(a, b) { return [a[0] - b[0], a[1] - b[1]]; }\n function add(a, b) { return [a[0] + b[0], a[1] + b[1]]; }\n function mul(a, b) { return [a * b[0], a * b[1]]; }\n if (!this.els)\n this.$initTransformMeasureNodes();\n function p(el) {\n var r = el.getBoundingClientRect();\n return [r.left, r.top];\n }\n var a = p(this.els[0]);\n var b = p(this.els[1]);\n var c = p(this.els[2]);\n var d = p(this.els[3]);\n var h = solve(sub(d, b), sub(d, c), sub(add(b, c), add(d, a)));\n var m1 = mul(1 + h[0], sub(b, a));\n var m2 = mul(1 + h[1], sub(c, a));\n if (elPos) {\n var x = elPos;\n var k = h[0] * x[0] / L + h[1] * x[1] / L + 1;\n var ut = add(mul(x[0], m1), mul(x[1], m2));\n return add(mul(1 / k / L, ut), a);\n }\n var u = sub(clientPos, a);\n var f = solve(sub(m1, mul(h[0], u)), sub(m2, mul(h[1], u)), u);\n return mul(L, f);\n };\n return FontMetrics;\n}());\nFontMetrics.prototype.$characterSize = { width: 0, height: 0 };\noop.implement(FontMetrics.prototype, EventEmitter);\nexports.FontMetrics = FontMetrics;\n\n});\n\nace.define(\"ace/css/editor-css\",[\"require\",\"exports\",\"module\"], function(require, exports, module){/*\nstyles = []\nfor (var i = 1; i < 16; i++) {\n styles.push(\".ace_br\" + i + \"{\" + (\n [\"top-left\", \"top-right\", \"bottom-right\", \"bottom-left\"]\n ).map(function(x, j) {\n return i & (1< .ace_line, .ace_text-layer > .ace_line_group {\\n contain: style size layout;\\n position: absolute;\\n top: 0;\\n left: 0;\\n right: 0;\\n}\\n\\n.ace_hidpi .ace_text-layer,\\n.ace_hidpi .ace_gutter-layer,\\n.ace_hidpi .ace_content,\\n.ace_hidpi .ace_gutter {\\n contain: strict;\\n}\\n.ace_hidpi .ace_text-layer > .ace_line, \\n.ace_hidpi .ace_text-layer > .ace_line_group {\\n contain: strict;\\n}\\n\\n.ace_cjk {\\n display: inline-block;\\n text-align: center;\\n}\\n\\n.ace_cursor-layer {\\n z-index: 4;\\n}\\n\\n.ace_cursor {\\n z-index: 4;\\n position: absolute;\\n box-sizing: border-box;\\n border-left: 2px solid;\\n /* workaround for smooth cursor repaintng whole screen in chrome */\\n transform: translatez(0);\\n}\\n\\n.ace_multiselect .ace_cursor {\\n border-left-width: 1px;\\n}\\n\\n.ace_slim-cursors .ace_cursor {\\n border-left-width: 1px;\\n}\\n\\n.ace_overwrite-cursors .ace_cursor {\\n border-left-width: 0;\\n border-bottom: 1px solid;\\n}\\n\\n.ace_hidden-cursors .ace_cursor {\\n opacity: 0.2;\\n}\\n\\n.ace_hasPlaceholder .ace_hidden-cursors .ace_cursor {\\n opacity: 0;\\n}\\n\\n.ace_smooth-blinking .ace_cursor {\\n transition: opacity 0.18s;\\n}\\n\\n.ace_animate-blinking .ace_cursor {\\n animation-duration: 1000ms;\\n animation-timing-function: step-end;\\n animation-name: blink-ace-animate;\\n animation-iteration-count: infinite;\\n}\\n\\n.ace_animate-blinking.ace_smooth-blinking .ace_cursor {\\n animation-duration: 1000ms;\\n animation-timing-function: ease-in-out;\\n animation-name: blink-ace-animate-smooth;\\n}\\n \\n@keyframes blink-ace-animate {\\n from, to { opacity: 1; }\\n 60% { opacity: 0; }\\n}\\n\\n@keyframes blink-ace-animate-smooth {\\n from, to { opacity: 1; }\\n 45% { opacity: 1; }\\n 60% { opacity: 0; }\\n 85% { opacity: 0; }\\n}\\n\\n.ace_marker-layer .ace_step, .ace_marker-layer .ace_stack {\\n position: absolute;\\n z-index: 3;\\n}\\n\\n.ace_marker-layer .ace_selection {\\n position: absolute;\\n z-index: 5;\\n}\\n\\n.ace_marker-layer .ace_bracket {\\n position: absolute;\\n z-index: 6;\\n}\\n\\n.ace_marker-layer .ace_error_bracket {\\n position: absolute;\\n border-bottom: 1px solid #DE5555;\\n border-radius: 0;\\n}\\n\\n.ace_marker-layer .ace_active-line {\\n position: absolute;\\n z-index: 2;\\n}\\n\\n.ace_marker-layer .ace_selected-word {\\n position: absolute;\\n z-index: 4;\\n box-sizing: border-box;\\n}\\n\\n.ace_line .ace_fold {\\n box-sizing: border-box;\\n\\n display: inline-block;\\n height: 11px;\\n margin-top: -2px;\\n vertical-align: middle;\\n\\n background-image:\\n url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII=\\\"),\\n url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACJJREFUeNpi+P//fxgTAwPDBxDxD078RSX+YeEyDFMCIMAAI3INmXiwf2YAAAAASUVORK5CYII=\\\");\\n background-repeat: no-repeat, repeat-x;\\n background-position: center center, top left;\\n color: transparent;\\n\\n border: 1px solid black;\\n border-radius: 2px;\\n\\n cursor: pointer;\\n pointer-events: auto;\\n}\\n\\n.ace_dark .ace_fold {\\n}\\n\\n.ace_fold:hover{\\n background-image:\\n url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII=\\\"),\\n url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACBJREFUeNpi+P//fz4TAwPDZxDxD5X4i5fLMEwJgAADAEPVDbjNw87ZAAAAAElFTkSuQmCC\\\");\\n}\\n\\n.ace_tooltip {\\n background-color: #f5f5f5;\\n border: 1px solid gray;\\n border-radius: 1px;\\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);\\n color: black;\\n max-width: 100%;\\n padding: 3px 4px;\\n position: fixed;\\n z-index: 999999;\\n box-sizing: border-box;\\n cursor: default;\\n white-space: pre-wrap;\\n word-wrap: break-word;\\n line-height: normal;\\n font-style: normal;\\n font-weight: normal;\\n letter-spacing: normal;\\n pointer-events: none;\\n overflow: auto;\\n max-width: min(60em, 66vw);\\n}\\n.ace_tooltip pre {\\n white-space: pre-wrap;\\n}\\n\\n.ace_tooltip.ace_dark {\\n background-color: #636363;\\n color: #fff;\\n}\\n\\n.ace_tooltip:focus {\\n outline: 1px solid #5E9ED6;\\n}\\n\\n.ace_icon {\\n display: inline-block;\\n width: 18px;\\n vertical-align: top;\\n}\\n\\n.ace_icon_svg {\\n display: inline-block;\\n width: 12px;\\n vertical-align: top;\\n -webkit-mask-repeat: no-repeat;\\n -webkit-mask-size: 12px;\\n -webkit-mask-position: center;\\n}\\n\\n.ace_folding-enabled > .ace_gutter-cell, .ace_folding-enabled > .ace_gutter-cell_svg-icons {\\n padding-right: 13px;\\n}\\n\\n.ace_fold-widget {\\n box-sizing: border-box;\\n\\n margin: 0 -12px 0 1px;\\n display: none;\\n width: 11px;\\n vertical-align: top;\\n\\n background-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42mWKsQ0AMAzC8ixLlrzQjzmBiEjp0A6WwBCSPgKAXoLkqSot7nN3yMwR7pZ32NzpKkVoDBUxKAAAAABJRU5ErkJggg==\\\");\\n background-repeat: no-repeat;\\n background-position: center;\\n\\n border-radius: 3px;\\n \\n border: 1px solid transparent;\\n cursor: pointer;\\n}\\n\\n.ace_folding-enabled .ace_fold-widget {\\n display: inline-block; \\n}\\n\\n.ace_fold-widget.ace_end {\\n background-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42m3HwQkAMAhD0YzsRchFKI7sAikeWkrxwScEB0nh5e7KTPWimZki4tYfVbX+MNl4pyZXejUO1QAAAABJRU5ErkJggg==\\\");\\n}\\n\\n.ace_fold-widget.ace_closed {\\n background-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAGCAYAAAAG5SQMAAAAOUlEQVR42jXKwQkAMAgDwKwqKD4EwQ26sSOkVWjgIIHAzPiCgaqiqnJHZnKICBERHN194O5b9vbLuAVRL+l0YWnZAAAAAElFTkSuQmCCXA==\\\");\\n}\\n\\n.ace_fold-widget:hover {\\n border: 1px solid rgba(0, 0, 0, 0.3);\\n background-color: rgba(255, 255, 255, 0.2);\\n box-shadow: 0 1px 1px rgba(255, 255, 255, 0.7);\\n}\\n\\n.ace_fold-widget:active {\\n border: 1px solid rgba(0, 0, 0, 0.4);\\n background-color: rgba(0, 0, 0, 0.05);\\n box-shadow: 0 1px 1px rgba(255, 255, 255, 0.8);\\n}\\n/**\\n * Dark version for fold widgets\\n */\\n.ace_dark .ace_fold-widget {\\n background-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHklEQVQIW2P4//8/AzoGEQ7oGCaLLAhWiSwB146BAQCSTPYocqT0AAAAAElFTkSuQmCC\\\");\\n}\\n.ace_dark .ace_fold-widget.ace_end {\\n background-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAH0lEQVQIW2P4//8/AxQ7wNjIAjDMgC4AxjCVKBirIAAF0kz2rlhxpAAAAABJRU5ErkJggg==\\\");\\n}\\n.ace_dark .ace_fold-widget.ace_closed {\\n background-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAFCAYAAACAcVaiAAAAHElEQVQIW2P4//+/AxAzgDADlOOAznHAKgPWAwARji8UIDTfQQAAAABJRU5ErkJggg==\\\");\\n}\\n.ace_dark .ace_fold-widget:hover {\\n box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);\\n background-color: rgba(255, 255, 255, 0.1);\\n}\\n.ace_dark .ace_fold-widget:active {\\n box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);\\n}\\n\\n.ace_inline_button {\\n border: 1px solid lightgray;\\n display: inline-block;\\n margin: -1px 8px;\\n padding: 0 5px;\\n pointer-events: auto;\\n cursor: pointer;\\n}\\n.ace_inline_button:hover {\\n border-color: gray;\\n background: rgba(200,200,200,0.2);\\n display: inline-block;\\n pointer-events: auto;\\n}\\n\\n.ace_fold-widget.ace_invalid {\\n background-color: #FFB4B4;\\n border-color: #DE5555;\\n}\\n\\n.ace_fade-fold-widgets .ace_fold-widget {\\n transition: opacity 0.4s ease 0.05s;\\n opacity: 0;\\n}\\n\\n.ace_fade-fold-widgets:hover .ace_fold-widget {\\n transition: opacity 0.05s ease 0.05s;\\n opacity:1;\\n}\\n\\n.ace_underline {\\n text-decoration: underline;\\n}\\n\\n.ace_bold {\\n font-weight: bold;\\n}\\n\\n.ace_nobold .ace_bold {\\n font-weight: normal;\\n}\\n\\n.ace_italic {\\n font-style: italic;\\n}\\n\\n\\n.ace_error-marker {\\n background-color: rgba(255, 0, 0,0.2);\\n position: absolute;\\n z-index: 9;\\n}\\n\\n.ace_highlight-marker {\\n background-color: rgba(255, 255, 0,0.2);\\n position: absolute;\\n z-index: 8;\\n}\\n\\n.ace_mobile-menu {\\n position: absolute;\\n line-height: 1.5;\\n border-radius: 4px;\\n -ms-user-select: none;\\n -moz-user-select: none;\\n -webkit-user-select: none;\\n user-select: none;\\n background: white;\\n box-shadow: 1px 3px 2px grey;\\n border: 1px solid #dcdcdc;\\n color: black;\\n}\\n.ace_dark > .ace_mobile-menu {\\n background: #333;\\n color: #ccc;\\n box-shadow: 1px 3px 2px grey;\\n border: 1px solid #444;\\n\\n}\\n.ace_mobile-button {\\n padding: 2px;\\n cursor: pointer;\\n overflow: hidden;\\n}\\n.ace_mobile-button:hover {\\n background-color: #eee;\\n opacity:1;\\n}\\n.ace_mobile-button:active {\\n background-color: #ddd;\\n}\\n\\n.ace_placeholder {\\n font-family: arial;\\n transform: scale(0.9);\\n transform-origin: left;\\n white-space: pre;\\n opacity: 0.7;\\n margin: 0 10px;\\n}\\n\\n.ace_ghost_text {\\n opacity: 0.5;\\n font-style: italic;\\n white-space: pre;\\n}\\n\\n.ace_screenreader-only {\\n position:absolute;\\n left:-10000px;\\n top:auto;\\n width:1px;\\n height:1px;\\n overflow:hidden;\\n}\";\n\n});\n\nace.define(\"ace/layer/decorators\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\",\"ace/lib/oop\",\"ace/lib/event_emitter\"], function(require, exports, module){\"use strict\";\nvar dom = require(\"../lib/dom\");\nvar oop = require(\"../lib/oop\");\nvar EventEmitter = require(\"../lib/event_emitter\").EventEmitter;\nvar Decorator = /** @class */ (function () {\n function Decorator(parent, renderer) {\n this.canvas = dom.createElement(\"canvas\");\n this.renderer = renderer;\n this.pixelRatio = 1;\n this.maxHeight = renderer.layerConfig.maxHeight;\n this.lineHeight = renderer.layerConfig.lineHeight;\n this.canvasHeight = parent.parent.scrollHeight;\n this.heightRatio = this.canvasHeight / this.maxHeight;\n this.canvasWidth = parent.width;\n this.minDecorationHeight = (2 * this.pixelRatio) | 0;\n this.halfMinDecorationHeight = (this.minDecorationHeight / 2) | 0;\n this.canvas.width = this.canvasWidth;\n this.canvas.height = this.canvasHeight;\n this.canvas.style.top = 0 + \"px\";\n this.canvas.style.right = 0 + \"px\";\n this.canvas.style.zIndex = 7 + \"px\";\n this.canvas.style.position = \"absolute\";\n this.colors = {};\n this.colors.dark = {\n \"error\": \"rgba(255, 18, 18, 1)\",\n \"warning\": \"rgba(18, 136, 18, 1)\",\n \"info\": \"rgba(18, 18, 136, 1)\"\n };\n this.colors.light = {\n \"error\": \"rgb(255,51,51)\",\n \"warning\": \"rgb(32,133,72)\",\n \"info\": \"rgb(35,68,138)\"\n };\n parent.element.appendChild(this.canvas);\n }\n Decorator.prototype.$updateDecorators = function (config) {\n var colors = (this.renderer.theme.isDark === true) ? this.colors.dark : this.colors.light;\n if (config) {\n this.maxHeight = config.maxHeight;\n this.lineHeight = config.lineHeight;\n this.canvasHeight = config.height;\n var allLineHeight = (config.lastRow + 1) * this.lineHeight;\n if (allLineHeight < this.canvasHeight) {\n this.heightRatio = 1;\n }\n else {\n this.heightRatio = this.canvasHeight / this.maxHeight;\n }\n }\n var ctx = this.canvas.getContext(\"2d\");\n function compare(a, b) {\n if (a.priority < b.priority)\n return -1;\n if (a.priority > b.priority)\n return 1;\n return 0;\n }\n var annotations = this.renderer.session.$annotations;\n ctx.clearRect(0, 0, this.canvas.width, this.canvas.height);\n if (annotations) {\n var priorities = {\n \"info\": 1,\n \"warning\": 2,\n \"error\": 3\n };\n annotations.forEach(function (item) {\n item.priority = priorities[item.type] || null;\n });\n annotations = annotations.sort(compare);\n var foldData = this.renderer.session.$foldData;\n for (var i = 0; i < annotations.length; i++) {\n var row = annotations[i].row;\n var compensateFold = this.compensateFoldRows(row, foldData);\n var currentY = Math.round((row - compensateFold) * this.lineHeight * this.heightRatio);\n var y1 = Math.round(((row - compensateFold) * this.lineHeight * this.heightRatio));\n var y2 = Math.round((((row - compensateFold) * this.lineHeight + this.lineHeight) * this.heightRatio));\n var height = y2 - y1;\n if (height < this.minDecorationHeight) {\n var yCenter = ((y1 + y2) / 2) | 0;\n if (yCenter < this.halfMinDecorationHeight) {\n yCenter = this.halfMinDecorationHeight;\n }\n else if (yCenter + this.halfMinDecorationHeight > this.canvasHeight) {\n yCenter = this.canvasHeight - this.halfMinDecorationHeight;\n }\n y1 = Math.round(yCenter - this.halfMinDecorationHeight);\n y2 = Math.round(yCenter + this.halfMinDecorationHeight);\n }\n ctx.fillStyle = colors[annotations[i].type] || null;\n ctx.fillRect(0, currentY, this.canvasWidth, y2 - y1);\n }\n }\n var cursor = this.renderer.session.selection.getCursor();\n if (cursor) {\n var compensateFold = this.compensateFoldRows(cursor.row, foldData);\n var currentY = Math.round((cursor.row - compensateFold) * this.lineHeight * this.heightRatio);\n ctx.fillStyle = \"rgba(0, 0, 0, 0.5)\";\n ctx.fillRect(0, currentY, this.canvasWidth, 2);\n }\n };\n Decorator.prototype.compensateFoldRows = function (row, foldData) {\n var compensateFold = 0;\n if (foldData && foldData.length > 0) {\n for (var j = 0; j < foldData.length; j++) {\n if (row > foldData[j].start.row && row < foldData[j].end.row) {\n compensateFold += row - foldData[j].start.row;\n }\n else if (row >= foldData[j].end.row) {\n compensateFold += foldData[j].end.row - foldData[j].start.row;\n }\n }\n }\n return compensateFold;\n };\n return Decorator;\n}());\noop.implement(Decorator.prototype, EventEmitter);\nexports.Decorator = Decorator;\n\n});\n\nace.define(\"ace/virtual_renderer\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/dom\",\"ace/lib/lang\",\"ace/config\",\"ace/layer/gutter\",\"ace/layer/marker\",\"ace/layer/text\",\"ace/layer/cursor\",\"ace/scrollbar\",\"ace/scrollbar\",\"ace/scrollbar_custom\",\"ace/scrollbar_custom\",\"ace/renderloop\",\"ace/layer/font_metrics\",\"ace/lib/event_emitter\",\"ace/css/editor-css\",\"ace/layer/decorators\",\"ace/lib/useragent\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"./lib/oop\");\nvar dom = require(\"./lib/dom\");\nvar lang = require(\"./lib/lang\");\nvar config = require(\"./config\");\nvar GutterLayer = require(\"./layer/gutter\").Gutter;\nvar MarkerLayer = require(\"./layer/marker\").Marker;\nvar TextLayer = require(\"./layer/text\").Text;\nvar CursorLayer = require(\"./layer/cursor\").Cursor;\nvar HScrollBar = require(\"./scrollbar\").HScrollBar;\nvar VScrollBar = require(\"./scrollbar\").VScrollBar;\nvar HScrollBarCustom = require(\"./scrollbar_custom\").HScrollBar;\nvar VScrollBarCustom = require(\"./scrollbar_custom\").VScrollBar;\nvar RenderLoop = require(\"./renderloop\").RenderLoop;\nvar FontMetrics = require(\"./layer/font_metrics\").FontMetrics;\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar editorCss = require(\"./css/editor-css\");\nvar Decorator = require(\"./layer/decorators\").Decorator;\nvar useragent = require(\"./lib/useragent\");\ndom.importCssString(editorCss, \"ace_editor.css\", false);\nvar VirtualRenderer = /** @class */ (function () {\n function VirtualRenderer(container, theme) {\n var _self = this;\n this.container = container || dom.createElement(\"div\");\n dom.addCssClass(this.container, \"ace_editor\");\n if (dom.HI_DPI)\n dom.addCssClass(this.container, \"ace_hidpi\");\n this.setTheme(theme);\n if (config.get(\"useStrictCSP\") == null)\n config.set(\"useStrictCSP\", false);\n this.$gutter = dom.createElement(\"div\");\n this.$gutter.className = \"ace_gutter\";\n this.container.appendChild(this.$gutter);\n this.$gutter.setAttribute(\"aria-hidden\", true);\n this.scroller = dom.createElement(\"div\");\n this.scroller.className = \"ace_scroller\";\n this.container.appendChild(this.scroller);\n this.content = dom.createElement(\"div\");\n this.content.className = \"ace_content\";\n this.scroller.appendChild(this.content);\n this.$gutterLayer = new GutterLayer(this.$gutter);\n this.$gutterLayer.on(\"changeGutterWidth\", this.onGutterResize.bind(this));\n this.$markerBack = new MarkerLayer(this.content);\n var textLayer = this.$textLayer = new TextLayer(this.content);\n this.canvas = textLayer.element;\n this.$markerFront = new MarkerLayer(this.content);\n this.$cursorLayer = new CursorLayer(this.content);\n this.$horizScroll = false;\n this.$vScroll = false;\n this.scrollBar =\n this.scrollBarV = new VScrollBar(this.container, this);\n this.scrollBarH = new HScrollBar(this.container, this);\n this.scrollBarV.on(\"scroll\", function (e) {\n if (!_self.$scrollAnimation)\n _self.session.setScrollTop(e.data - _self.scrollMargin.top);\n });\n this.scrollBarH.on(\"scroll\", function (e) {\n if (!_self.$scrollAnimation)\n _self.session.setScrollLeft(e.data - _self.scrollMargin.left);\n });\n this.scrollTop = 0;\n this.scrollLeft = 0;\n this.cursorPos = {\n row: 0,\n column: 0\n };\n this.$fontMetrics = new FontMetrics(this.container);\n this.$textLayer.$setFontMetrics(this.$fontMetrics);\n this.$textLayer.on(\"changeCharacterSize\", function (e) {\n _self.updateCharacterSize();\n _self.onResize(true, _self.gutterWidth, _self.$size.width, _self.$size.height);\n _self._signal(\"changeCharacterSize\", e);\n });\n this.$size = {\n width: 0,\n height: 0,\n scrollerHeight: 0,\n scrollerWidth: 0,\n $dirty: true\n };\n this.layerConfig = {\n width: 1,\n padding: 0,\n firstRow: 0,\n firstRowScreen: 0,\n lastRow: 0,\n lineHeight: 0,\n characterWidth: 0,\n minHeight: 1,\n maxHeight: 1,\n offset: 0,\n height: 1,\n gutterOffset: 1\n };\n this.scrollMargin = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0,\n v: 0,\n h: 0\n };\n this.margin = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0,\n v: 0,\n h: 0\n };\n this.$keepTextAreaAtCursor = !useragent.isIOS;\n this.$loop = new RenderLoop(this.$renderChanges.bind(this), this.container.ownerDocument.defaultView);\n this.$loop.schedule(this.CHANGE_FULL);\n this.updateCharacterSize();\n this.setPadding(4);\n this.$addResizeObserver();\n config.resetOptions(this);\n config._signal(\"renderer\", this);\n }\n VirtualRenderer.prototype.updateCharacterSize = function () {\n if (this.$textLayer.allowBoldFonts != this.$allowBoldFonts) {\n this.$allowBoldFonts = this.$textLayer.allowBoldFonts;\n this.setStyle(\"ace_nobold\", !this.$allowBoldFonts);\n }\n this.layerConfig.characterWidth =\n this.characterWidth = this.$textLayer.getCharacterWidth();\n this.layerConfig.lineHeight =\n this.lineHeight = this.$textLayer.getLineHeight();\n this.$updatePrintMargin();\n dom.setStyle(this.scroller.style, \"line-height\", this.lineHeight + \"px\");\n };\n VirtualRenderer.prototype.setSession = function (session) {\n if (this.session)\n this.session.doc.off(\"changeNewLineMode\", this.onChangeNewLineMode);\n this.session = session;\n if (session && this.scrollMargin.top && session.getScrollTop() <= 0)\n session.setScrollTop(-this.scrollMargin.top);\n this.$cursorLayer.setSession(session);\n this.$markerBack.setSession(session);\n this.$markerFront.setSession(session);\n this.$gutterLayer.setSession(session);\n this.$textLayer.setSession(session);\n if (!session)\n return;\n this.$loop.schedule(this.CHANGE_FULL);\n this.session.$setFontMetrics(this.$fontMetrics);\n this.scrollBarH.scrollLeft = this.scrollBarV.scrollTop = null;\n this.onChangeNewLineMode = this.onChangeNewLineMode.bind(this);\n this.onChangeNewLineMode();\n this.session.doc.on(\"changeNewLineMode\", this.onChangeNewLineMode);\n };\n VirtualRenderer.prototype.updateLines = function (firstRow, lastRow, force) {\n if (lastRow === undefined)\n lastRow = Infinity;\n if (!this.$changedLines) {\n this.$changedLines = {\n firstRow: firstRow,\n lastRow: lastRow\n };\n }\n else {\n if (this.$changedLines.firstRow > firstRow)\n this.$changedLines.firstRow = firstRow;\n if (this.$changedLines.lastRow < lastRow)\n this.$changedLines.lastRow = lastRow;\n }\n if (this.$changedLines.lastRow < this.layerConfig.firstRow) {\n if (force)\n this.$changedLines.lastRow = this.layerConfig.lastRow;\n else\n return;\n }\n if (this.$changedLines.firstRow > this.layerConfig.lastRow)\n return;\n this.$loop.schedule(this.CHANGE_LINES);\n };\n VirtualRenderer.prototype.onChangeNewLineMode = function () {\n this.$loop.schedule(this.CHANGE_TEXT);\n this.$textLayer.$updateEolChar();\n this.session.$bidiHandler.setEolChar(this.$textLayer.EOL_CHAR);\n };\n VirtualRenderer.prototype.onChangeTabSize = function () {\n this.$loop.schedule(this.CHANGE_TEXT | this.CHANGE_MARKER);\n this.$textLayer.onChangeTabSize();\n };\n VirtualRenderer.prototype.updateText = function () {\n this.$loop.schedule(this.CHANGE_TEXT);\n };\n VirtualRenderer.prototype.updateFull = function (force) {\n if (force)\n this.$renderChanges(this.CHANGE_FULL, true);\n else\n this.$loop.schedule(this.CHANGE_FULL);\n };\n VirtualRenderer.prototype.updateFontSize = function () {\n this.$textLayer.checkForSizeChanges();\n };\n VirtualRenderer.prototype.$updateSizeAsync = function () {\n if (this.$loop.pending)\n this.$size.$dirty = true;\n else\n this.onResize();\n };\n VirtualRenderer.prototype.onResize = function (force, gutterWidth, width, height) {\n if (this.resizing > 2)\n return;\n else if (this.resizing > 0)\n this.resizing++;\n else\n this.resizing = force ? 1 : 0;\n var el = this.container;\n if (!height)\n height = el.clientHeight || el.scrollHeight;\n if (!width)\n width = el.clientWidth || el.scrollWidth;\n var changes = this.$updateCachedSize(force, gutterWidth, width, height);\n if (this.$resizeTimer)\n this.$resizeTimer.cancel();\n if (!this.$size.scrollerHeight || (!width && !height))\n return this.resizing = 0;\n if (force)\n this.$gutterLayer.$padding = null;\n if (force)\n this.$renderChanges(changes | this.$changes, true);\n else\n this.$loop.schedule(changes | this.$changes);\n if (this.resizing)\n this.resizing = 0;\n this.scrollBarH.scrollLeft = this.scrollBarV.scrollTop = null;\n if (this.$customScrollbar) {\n this.$updateCustomScrollbar(true);\n }\n };\n VirtualRenderer.prototype.$updateCachedSize = function (force, gutterWidth, width, height) {\n height -= (this.$extraHeight || 0);\n var changes = 0;\n var size = this.$size;\n var oldSize = {\n width: size.width,\n height: size.height,\n scrollerHeight: size.scrollerHeight,\n scrollerWidth: size.scrollerWidth\n };\n if (height && (force || size.height != height)) {\n size.height = height;\n changes |= this.CHANGE_SIZE;\n size.scrollerHeight = size.height;\n if (this.$horizScroll)\n size.scrollerHeight -= this.scrollBarH.getHeight();\n this.scrollBarV.setHeight(size.scrollerHeight);\n this.scrollBarV.element.style.bottom = this.scrollBarH.getHeight() + \"px\";\n changes = changes | this.CHANGE_SCROLL;\n }\n if (width && (force || size.width != width)) {\n changes |= this.CHANGE_SIZE;\n size.width = width;\n if (gutterWidth == null)\n gutterWidth = this.$showGutter ? this.$gutter.offsetWidth : 0;\n this.gutterWidth = gutterWidth;\n dom.setStyle(this.scrollBarH.element.style, \"left\", gutterWidth + \"px\");\n dom.setStyle(this.scroller.style, \"left\", gutterWidth + this.margin.left + \"px\");\n size.scrollerWidth = Math.max(0, width - gutterWidth - this.scrollBarV.getWidth() - this.margin.h);\n dom.setStyle(this.$gutter.style, \"left\", this.margin.left + \"px\");\n var right = this.scrollBarV.getWidth() + \"px\";\n dom.setStyle(this.scrollBarH.element.style, \"right\", right);\n dom.setStyle(this.scroller.style, \"right\", right);\n dom.setStyle(this.scroller.style, \"bottom\", this.scrollBarH.getHeight());\n this.scrollBarH.setWidth(size.scrollerWidth);\n if (this.session && this.session.getUseWrapMode() && this.adjustWrapLimit() || force) {\n changes |= this.CHANGE_FULL;\n }\n }\n size.$dirty = !width || !height;\n if (changes)\n this._signal(\"resize\", oldSize);\n return changes;\n };\n VirtualRenderer.prototype.onGutterResize = function (width) {\n var gutterWidth = this.$showGutter ? width : 0;\n if (gutterWidth != this.gutterWidth)\n this.$changes |= this.$updateCachedSize(true, gutterWidth, this.$size.width, this.$size.height);\n if (this.session.getUseWrapMode() && this.adjustWrapLimit()) {\n this.$loop.schedule(this.CHANGE_FULL);\n }\n else if (this.$size.$dirty) {\n this.$loop.schedule(this.CHANGE_FULL);\n }\n else {\n this.$computeLayerConfig();\n }\n };\n VirtualRenderer.prototype.adjustWrapLimit = function () {\n var availableWidth = this.$size.scrollerWidth - this.$padding * 2;\n var limit = Math.floor(availableWidth / this.characterWidth);\n return this.session.adjustWrapLimit(limit, this.$showPrintMargin && this.$printMarginColumn);\n };\n VirtualRenderer.prototype.setAnimatedScroll = function (shouldAnimate) {\n this.setOption(\"animatedScroll\", shouldAnimate);\n };\n VirtualRenderer.prototype.getAnimatedScroll = function () {\n return this.$animatedScroll;\n };\n VirtualRenderer.prototype.setShowInvisibles = function (showInvisibles) {\n this.setOption(\"showInvisibles\", showInvisibles);\n this.session.$bidiHandler.setShowInvisibles(showInvisibles);\n };\n VirtualRenderer.prototype.getShowInvisibles = function () {\n return this.getOption(\"showInvisibles\");\n };\n VirtualRenderer.prototype.getDisplayIndentGuides = function () {\n return this.getOption(\"displayIndentGuides\");\n };\n VirtualRenderer.prototype.setDisplayIndentGuides = function (display) {\n this.setOption(\"displayIndentGuides\", display);\n };\n VirtualRenderer.prototype.getHighlightIndentGuides = function () {\n return this.getOption(\"highlightIndentGuides\");\n };\n VirtualRenderer.prototype.setHighlightIndentGuides = function (highlight) {\n this.setOption(\"highlightIndentGuides\", highlight);\n };\n VirtualRenderer.prototype.setShowPrintMargin = function (showPrintMargin) {\n this.setOption(\"showPrintMargin\", showPrintMargin);\n };\n VirtualRenderer.prototype.getShowPrintMargin = function () {\n return this.getOption(\"showPrintMargin\");\n };\n VirtualRenderer.prototype.setPrintMarginColumn = function (showPrintMargin) {\n this.setOption(\"printMarginColumn\", showPrintMargin);\n };\n VirtualRenderer.prototype.getPrintMarginColumn = function () {\n return this.getOption(\"printMarginColumn\");\n };\n VirtualRenderer.prototype.getShowGutter = function () {\n return this.getOption(\"showGutter\");\n };\n VirtualRenderer.prototype.setShowGutter = function (show) {\n return this.setOption(\"showGutter\", show);\n };\n VirtualRenderer.prototype.getFadeFoldWidgets = function () {\n return this.getOption(\"fadeFoldWidgets\");\n };\n VirtualRenderer.prototype.setFadeFoldWidgets = function (show) {\n this.setOption(\"fadeFoldWidgets\", show);\n };\n VirtualRenderer.prototype.setHighlightGutterLine = function (shouldHighlight) {\n this.setOption(\"highlightGutterLine\", shouldHighlight);\n };\n VirtualRenderer.prototype.getHighlightGutterLine = function () {\n return this.getOption(\"highlightGutterLine\");\n };\n VirtualRenderer.prototype.$updatePrintMargin = function () {\n if (!this.$showPrintMargin && !this.$printMarginEl)\n return;\n if (!this.$printMarginEl) {\n var containerEl = dom.createElement(\"div\");\n containerEl.className = \"ace_layer ace_print-margin-layer\";\n this.$printMarginEl = dom.createElement(\"div\");\n this.$printMarginEl.className = \"ace_print-margin\";\n containerEl.appendChild(this.$printMarginEl);\n this.content.insertBefore(containerEl, this.content.firstChild);\n }\n var style = this.$printMarginEl.style;\n style.left = Math.round(this.characterWidth * this.$printMarginColumn + this.$padding) + \"px\";\n style.visibility = this.$showPrintMargin ? \"visible\" : \"hidden\";\n if (this.session && this.session.$wrap == -1)\n this.adjustWrapLimit();\n };\n VirtualRenderer.prototype.getContainerElement = function () {\n return this.container;\n };\n VirtualRenderer.prototype.getMouseEventTarget = function () {\n return this.scroller;\n };\n VirtualRenderer.prototype.getTextAreaContainer = function () {\n return this.container;\n };\n VirtualRenderer.prototype.$moveTextAreaToCursor = function () {\n if (this.$isMousePressed)\n return;\n var style = this.textarea.style;\n var composition = this.$composition;\n if (!this.$keepTextAreaAtCursor && !composition) {\n dom.translate(this.textarea, -100, 0);\n return;\n }\n var pixelPos = this.$cursorLayer.$pixelPos;\n if (!pixelPos)\n return;\n if (composition && composition.markerRange)\n pixelPos = this.$cursorLayer.getPixelPosition(composition.markerRange.start, true);\n var config = this.layerConfig;\n var posTop = pixelPos.top;\n var posLeft = pixelPos.left;\n posTop -= config.offset;\n var h = composition && composition.useTextareaForIME || useragent.isMobile ? this.lineHeight : 1;\n if (posTop < 0 || posTop > config.height - h) {\n dom.translate(this.textarea, 0, 0);\n return;\n }\n var w = 1;\n var maxTop = this.$size.height - h;\n if (!composition) {\n posTop += this.lineHeight;\n }\n else {\n if (composition.useTextareaForIME) {\n var val = this.textarea.value;\n w = this.characterWidth * (this.session.$getStringScreenWidth(val)[0]);\n }\n else {\n posTop += this.lineHeight + 2;\n }\n }\n posLeft -= this.scrollLeft;\n if (posLeft > this.$size.scrollerWidth - w)\n posLeft = this.$size.scrollerWidth - w;\n posLeft += this.gutterWidth + this.margin.left;\n dom.setStyle(style, \"height\", h + \"px\");\n dom.setStyle(style, \"width\", w + \"px\");\n dom.translate(this.textarea, Math.min(posLeft, this.$size.scrollerWidth - w), Math.min(posTop, maxTop));\n };\n VirtualRenderer.prototype.getFirstVisibleRow = function () {\n return this.layerConfig.firstRow;\n };\n VirtualRenderer.prototype.getFirstFullyVisibleRow = function () {\n return this.layerConfig.firstRow + (this.layerConfig.offset === 0 ? 0 : 1);\n };\n VirtualRenderer.prototype.getLastFullyVisibleRow = function () {\n var config = this.layerConfig;\n var lastRow = config.lastRow;\n var top = this.session.documentToScreenRow(lastRow, 0) * config.lineHeight;\n if (top - this.session.getScrollTop() > config.height - config.lineHeight)\n return lastRow - 1;\n return lastRow;\n };\n VirtualRenderer.prototype.getLastVisibleRow = function () {\n return this.layerConfig.lastRow;\n };\n VirtualRenderer.prototype.setPadding = function (padding) {\n this.$padding = padding;\n this.$textLayer.setPadding(padding);\n this.$cursorLayer.setPadding(padding);\n this.$markerFront.setPadding(padding);\n this.$markerBack.setPadding(padding);\n this.$loop.schedule(this.CHANGE_FULL);\n this.$updatePrintMargin();\n };\n VirtualRenderer.prototype.setScrollMargin = function (top, bottom, left, right) {\n var sm = this.scrollMargin;\n sm.top = top | 0;\n sm.bottom = bottom | 0;\n sm.right = right | 0;\n sm.left = left | 0;\n sm.v = sm.top + sm.bottom;\n sm.h = sm.left + sm.right;\n if (sm.top && this.scrollTop <= 0 && this.session)\n this.session.setScrollTop(-sm.top);\n this.updateFull();\n };\n VirtualRenderer.prototype.setMargin = function (top, bottom, left, right) {\n var sm = this.margin;\n sm.top = top | 0;\n sm.bottom = bottom | 0;\n sm.right = right | 0;\n sm.left = left | 0;\n sm.v = sm.top + sm.bottom;\n sm.h = sm.left + sm.right;\n this.$updateCachedSize(true, this.gutterWidth, this.$size.width, this.$size.height);\n this.updateFull();\n };\n VirtualRenderer.prototype.getHScrollBarAlwaysVisible = function () {\n return this.$hScrollBarAlwaysVisible;\n };\n VirtualRenderer.prototype.setHScrollBarAlwaysVisible = function (alwaysVisible) {\n this.setOption(\"hScrollBarAlwaysVisible\", alwaysVisible);\n };\n VirtualRenderer.prototype.getVScrollBarAlwaysVisible = function () {\n return this.$vScrollBarAlwaysVisible;\n };\n VirtualRenderer.prototype.setVScrollBarAlwaysVisible = function (alwaysVisible) {\n this.setOption(\"vScrollBarAlwaysVisible\", alwaysVisible);\n };\n VirtualRenderer.prototype.$updateScrollBarV = function () {\n var scrollHeight = this.layerConfig.maxHeight;\n var scrollerHeight = this.$size.scrollerHeight;\n if (!this.$maxLines && this.$scrollPastEnd) {\n scrollHeight -= (scrollerHeight - this.lineHeight) * this.$scrollPastEnd;\n if (this.scrollTop > scrollHeight - scrollerHeight) {\n scrollHeight = this.scrollTop + scrollerHeight;\n this.scrollBarV.scrollTop = null;\n }\n }\n this.scrollBarV.setScrollHeight(scrollHeight + this.scrollMargin.v);\n this.scrollBarV.setScrollTop(this.scrollTop + this.scrollMargin.top);\n };\n VirtualRenderer.prototype.$updateScrollBarH = function () {\n this.scrollBarH.setScrollWidth(this.layerConfig.width + 2 * this.$padding + this.scrollMargin.h);\n this.scrollBarH.setScrollLeft(this.scrollLeft + this.scrollMargin.left);\n };\n VirtualRenderer.prototype.freeze = function () {\n this.$frozen = true;\n };\n VirtualRenderer.prototype.unfreeze = function () {\n this.$frozen = false;\n };\n VirtualRenderer.prototype.$renderChanges = function (changes, force) {\n if (this.$changes) {\n changes |= this.$changes;\n this.$changes = 0;\n }\n if ((!this.session || !this.container.offsetWidth || this.$frozen) || (!changes && !force)) {\n this.$changes |= changes;\n return;\n }\n if (this.$size.$dirty) {\n this.$changes |= changes;\n return this.onResize(true);\n }\n if (!this.lineHeight) {\n this.$textLayer.checkForSizeChanges();\n }\n this._signal(\"beforeRender\", changes);\n if (this.session && this.session.$bidiHandler)\n this.session.$bidiHandler.updateCharacterWidths(this.$fontMetrics);\n var config = this.layerConfig;\n if (changes & this.CHANGE_FULL ||\n changes & this.CHANGE_SIZE ||\n changes & this.CHANGE_TEXT ||\n changes & this.CHANGE_LINES ||\n changes & this.CHANGE_SCROLL ||\n changes & this.CHANGE_H_SCROLL) {\n changes |= this.$computeLayerConfig() | this.$loop.clear();\n if (config.firstRow != this.layerConfig.firstRow && config.firstRowScreen == this.layerConfig.firstRowScreen) {\n var st = this.scrollTop + (config.firstRow - Math.max(this.layerConfig.firstRow, 0)) * this.lineHeight;\n if (st > 0) {\n this.scrollTop = st;\n changes = changes | this.CHANGE_SCROLL;\n changes |= this.$computeLayerConfig() | this.$loop.clear();\n }\n }\n config = this.layerConfig;\n this.$updateScrollBarV();\n if (changes & this.CHANGE_H_SCROLL)\n this.$updateScrollBarH();\n dom.translate(this.content, -this.scrollLeft, -config.offset);\n var width = config.width + 2 * this.$padding + \"px\";\n var height = config.minHeight + \"px\";\n dom.setStyle(this.content.style, \"width\", width);\n dom.setStyle(this.content.style, \"height\", height);\n }\n if (changes & this.CHANGE_H_SCROLL) {\n dom.translate(this.content, -this.scrollLeft, -config.offset);\n this.scroller.className = this.scrollLeft <= 0 ? \"ace_scroller \" : \"ace_scroller ace_scroll-left \";\n if (this.enableKeyboardAccessibility)\n this.scroller.className += this.keyboardFocusClassName;\n }\n if (changes & this.CHANGE_FULL) {\n this.$changedLines = null;\n this.$textLayer.update(config);\n if (this.$showGutter)\n this.$gutterLayer.update(config);\n if (this.$customScrollbar) {\n this.$scrollDecorator.$updateDecorators(config);\n }\n this.$markerBack.update(config);\n this.$markerFront.update(config);\n this.$cursorLayer.update(config);\n this.$moveTextAreaToCursor();\n this._signal(\"afterRender\", changes);\n return;\n }\n if (changes & this.CHANGE_SCROLL) {\n this.$changedLines = null;\n if (changes & this.CHANGE_TEXT || changes & this.CHANGE_LINES)\n this.$textLayer.update(config);\n else\n this.$textLayer.scrollLines(config);\n if (this.$showGutter) {\n if (changes & this.CHANGE_GUTTER || changes & this.CHANGE_LINES)\n this.$gutterLayer.update(config);\n else\n this.$gutterLayer.scrollLines(config);\n }\n if (this.$customScrollbar) {\n this.$scrollDecorator.$updateDecorators(config);\n }\n this.$markerBack.update(config);\n this.$markerFront.update(config);\n this.$cursorLayer.update(config);\n this.$moveTextAreaToCursor();\n this._signal(\"afterRender\", changes);\n return;\n }\n if (changes & this.CHANGE_TEXT) {\n this.$changedLines = null;\n this.$textLayer.update(config);\n if (this.$showGutter)\n this.$gutterLayer.update(config);\n if (this.$customScrollbar) {\n this.$scrollDecorator.$updateDecorators(config);\n }\n }\n else if (changes & this.CHANGE_LINES) {\n if (this.$updateLines() || (changes & this.CHANGE_GUTTER) && this.$showGutter)\n this.$gutterLayer.update(config);\n if (this.$customScrollbar) {\n this.$scrollDecorator.$updateDecorators(config);\n }\n }\n else if (changes & this.CHANGE_TEXT || changes & this.CHANGE_GUTTER) {\n if (this.$showGutter)\n this.$gutterLayer.update(config);\n if (this.$customScrollbar) {\n this.$scrollDecorator.$updateDecorators(config);\n }\n }\n else if (changes & this.CHANGE_CURSOR) {\n if (this.$highlightGutterLine)\n this.$gutterLayer.updateLineHighlight(config);\n if (this.$customScrollbar) {\n this.$scrollDecorator.$updateDecorators(config);\n }\n }\n if (changes & this.CHANGE_CURSOR) {\n this.$cursorLayer.update(config);\n this.$moveTextAreaToCursor();\n }\n if (changes & (this.CHANGE_MARKER | this.CHANGE_MARKER_FRONT)) {\n this.$markerFront.update(config);\n }\n if (changes & (this.CHANGE_MARKER | this.CHANGE_MARKER_BACK)) {\n this.$markerBack.update(config);\n }\n this._signal(\"afterRender\", changes);\n };\n VirtualRenderer.prototype.$autosize = function () {\n var height = this.session.getScreenLength() * this.lineHeight;\n var maxHeight = this.$maxLines * this.lineHeight;\n var desiredHeight = Math.min(maxHeight, Math.max((this.$minLines || 1) * this.lineHeight, height)) + this.scrollMargin.v + (this.$extraHeight || 0);\n if (this.$horizScroll)\n desiredHeight += this.scrollBarH.getHeight();\n if (this.$maxPixelHeight && desiredHeight > this.$maxPixelHeight)\n desiredHeight = this.$maxPixelHeight;\n var hideScrollbars = desiredHeight <= 2 * this.lineHeight;\n var vScroll = !hideScrollbars && height > maxHeight;\n if (desiredHeight != this.desiredHeight ||\n this.$size.height != this.desiredHeight || vScroll != this.$vScroll) {\n if (vScroll != this.$vScroll) {\n this.$vScroll = vScroll;\n this.scrollBarV.setVisible(vScroll);\n }\n var w = this.container.clientWidth;\n this.container.style.height = desiredHeight + \"px\";\n this.$updateCachedSize(true, this.$gutterWidth, w, desiredHeight);\n this.desiredHeight = desiredHeight;\n this._signal(\"autosize\");\n }\n };\n VirtualRenderer.prototype.$computeLayerConfig = function () {\n var session = this.session;\n var size = this.$size;\n var hideScrollbars = size.height <= 2 * this.lineHeight;\n var screenLines = this.session.getScreenLength();\n var maxHeight = screenLines * this.lineHeight;\n var longestLine = this.$getLongestLine();\n var horizScroll = !hideScrollbars && (this.$hScrollBarAlwaysVisible ||\n size.scrollerWidth - longestLine - 2 * this.$padding < 0);\n var hScrollChanged = this.$horizScroll !== horizScroll;\n if (hScrollChanged) {\n this.$horizScroll = horizScroll;\n this.scrollBarH.setVisible(horizScroll);\n }\n var vScrollBefore = this.$vScroll; // autosize can change vscroll value in which case we need to update longestLine\n if (this.$maxLines && this.lineHeight > 1)\n this.$autosize();\n var minHeight = size.scrollerHeight + this.lineHeight;\n var scrollPastEnd = !this.$maxLines && this.$scrollPastEnd\n ? (size.scrollerHeight - this.lineHeight) * this.$scrollPastEnd\n : 0;\n maxHeight += scrollPastEnd;\n var sm = this.scrollMargin;\n this.session.setScrollTop(Math.max(-sm.top, Math.min(this.scrollTop, maxHeight - size.scrollerHeight + sm.bottom)));\n this.session.setScrollLeft(Math.max(-sm.left, Math.min(this.scrollLeft, longestLine + 2 * this.$padding - size.scrollerWidth + sm.right)));\n var vScroll = !hideScrollbars && (this.$vScrollBarAlwaysVisible ||\n size.scrollerHeight - maxHeight + scrollPastEnd < 0 || this.scrollTop > sm.top);\n var vScrollChanged = vScrollBefore !== vScroll;\n if (vScrollChanged) {\n this.$vScroll = vScroll;\n this.scrollBarV.setVisible(vScroll);\n }\n var offset = this.scrollTop % this.lineHeight;\n var lineCount = Math.ceil(minHeight / this.lineHeight) - 1;\n var firstRow = Math.max(0, Math.round((this.scrollTop - offset) / this.lineHeight));\n var lastRow = firstRow + lineCount;\n var firstRowScreen, firstRowHeight;\n var lineHeight = this.lineHeight;\n firstRow = session.screenToDocumentRow(firstRow, 0);\n var foldLine = session.getFoldLine(firstRow);\n if (foldLine) {\n firstRow = foldLine.start.row;\n }\n firstRowScreen = session.documentToScreenRow(firstRow, 0);\n firstRowHeight = session.getRowLength(firstRow) * lineHeight;\n lastRow = Math.min(session.screenToDocumentRow(lastRow, 0), session.getLength() - 1);\n minHeight = size.scrollerHeight + session.getRowLength(lastRow) * lineHeight +\n firstRowHeight;\n offset = this.scrollTop - firstRowScreen * lineHeight;\n var changes = 0;\n if (this.layerConfig.width != longestLine || hScrollChanged)\n changes = this.CHANGE_H_SCROLL;\n if (hScrollChanged || vScrollChanged) {\n changes |= this.$updateCachedSize(true, this.gutterWidth, size.width, size.height);\n this._signal(\"scrollbarVisibilityChanged\");\n if (vScrollChanged)\n longestLine = this.$getLongestLine();\n }\n this.layerConfig = {\n width: longestLine,\n padding: this.$padding,\n firstRow: firstRow,\n firstRowScreen: firstRowScreen,\n lastRow: lastRow,\n lineHeight: lineHeight,\n characterWidth: this.characterWidth,\n minHeight: minHeight,\n maxHeight: maxHeight,\n offset: offset,\n gutterOffset: lineHeight ? Math.max(0, Math.ceil((offset + size.height - size.scrollerHeight) / lineHeight)) : 0,\n height: this.$size.scrollerHeight\n };\n if (this.session.$bidiHandler)\n this.session.$bidiHandler.setContentWidth(longestLine - this.$padding);\n return changes;\n };\n VirtualRenderer.prototype.$updateLines = function () {\n if (!this.$changedLines)\n return;\n var firstRow = this.$changedLines.firstRow;\n var lastRow = this.$changedLines.lastRow;\n this.$changedLines = null;\n var layerConfig = this.layerConfig;\n if (firstRow > layerConfig.lastRow + 1) {\n return;\n }\n if (lastRow < layerConfig.firstRow) {\n return;\n }\n if (lastRow === Infinity) {\n if (this.$showGutter)\n this.$gutterLayer.update(layerConfig);\n this.$textLayer.update(layerConfig);\n return;\n }\n this.$textLayer.updateLines(layerConfig, firstRow, lastRow);\n return true;\n };\n VirtualRenderer.prototype.$getLongestLine = function () {\n var charCount = this.session.getScreenWidth();\n if (this.showInvisibles && !this.session.$useWrapMode)\n charCount += 1;\n if (this.$textLayer && charCount > this.$textLayer.MAX_LINE_LENGTH)\n charCount = this.$textLayer.MAX_LINE_LENGTH + 30;\n return Math.max(this.$size.scrollerWidth - 2 * this.$padding, Math.round(charCount * this.characterWidth));\n };\n VirtualRenderer.prototype.updateFrontMarkers = function () {\n this.$markerFront.setMarkers(this.session.getMarkers(true));\n this.$loop.schedule(this.CHANGE_MARKER_FRONT);\n };\n VirtualRenderer.prototype.updateBackMarkers = function () {\n this.$markerBack.setMarkers(this.session.getMarkers());\n this.$loop.schedule(this.CHANGE_MARKER_BACK);\n };\n VirtualRenderer.prototype.addGutterDecoration = function (row, className) {\n this.$gutterLayer.addGutterDecoration(row, className);\n };\n VirtualRenderer.prototype.removeGutterDecoration = function (row, className) {\n this.$gutterLayer.removeGutterDecoration(row, className);\n };\n VirtualRenderer.prototype.updateBreakpoints = function (rows) {\n this.$loop.schedule(this.CHANGE_GUTTER);\n };\n VirtualRenderer.prototype.setAnnotations = function (annotations) {\n this.$gutterLayer.setAnnotations(annotations);\n this.$loop.schedule(this.CHANGE_GUTTER);\n };\n VirtualRenderer.prototype.updateCursor = function () {\n this.$loop.schedule(this.CHANGE_CURSOR);\n };\n VirtualRenderer.prototype.hideCursor = function () {\n this.$cursorLayer.hideCursor();\n };\n VirtualRenderer.prototype.showCursor = function () {\n this.$cursorLayer.showCursor();\n };\n VirtualRenderer.prototype.scrollSelectionIntoView = function (anchor, lead, offset) {\n this.scrollCursorIntoView(anchor, offset);\n this.scrollCursorIntoView(lead, offset);\n };\n VirtualRenderer.prototype.scrollCursorIntoView = function (cursor, offset, $viewMargin) {\n if (this.$size.scrollerHeight === 0)\n return;\n var pos = this.$cursorLayer.getPixelPosition(cursor);\n var newLeft = pos.left;\n var newTop = pos.top;\n var topMargin = $viewMargin && $viewMargin.top || 0;\n var bottomMargin = $viewMargin && $viewMargin.bottom || 0;\n if (this.$scrollAnimation) {\n this.$stopAnimation = true;\n }\n var currentTop = this.$scrollAnimation ? this.session.getScrollTop() : this.scrollTop;\n if (currentTop + topMargin > newTop) {\n if (offset && currentTop + topMargin > newTop + this.lineHeight)\n newTop -= offset * this.$size.scrollerHeight;\n if (newTop === 0)\n newTop = -this.scrollMargin.top;\n this.session.setScrollTop(newTop);\n }\n else if (currentTop + this.$size.scrollerHeight - bottomMargin < newTop + this.lineHeight) {\n if (offset && currentTop + this.$size.scrollerHeight - bottomMargin < newTop - this.lineHeight)\n newTop += offset * this.$size.scrollerHeight;\n this.session.setScrollTop(newTop + this.lineHeight + bottomMargin - this.$size.scrollerHeight);\n }\n var currentLeft = this.scrollLeft;\n var twoCharsWidth = 2 * this.layerConfig.characterWidth;\n if (newLeft - twoCharsWidth < currentLeft) {\n newLeft -= twoCharsWidth;\n if (newLeft < this.$padding + twoCharsWidth) {\n newLeft = -this.scrollMargin.left;\n }\n this.session.setScrollLeft(newLeft);\n }\n else {\n newLeft += twoCharsWidth;\n if (currentLeft + this.$size.scrollerWidth < newLeft + this.characterWidth) {\n this.session.setScrollLeft(Math.round(newLeft + this.characterWidth - this.$size.scrollerWidth));\n }\n else if (currentLeft <= this.$padding && newLeft - currentLeft < this.characterWidth) {\n this.session.setScrollLeft(0);\n }\n }\n };\n VirtualRenderer.prototype.getScrollTop = function () {\n return this.session.getScrollTop();\n };\n VirtualRenderer.prototype.getScrollLeft = function () {\n return this.session.getScrollLeft();\n };\n VirtualRenderer.prototype.getScrollTopRow = function () {\n return this.scrollTop / this.lineHeight;\n };\n VirtualRenderer.prototype.getScrollBottomRow = function () {\n return Math.max(0, Math.floor((this.scrollTop + this.$size.scrollerHeight) / this.lineHeight) - 1);\n };\n VirtualRenderer.prototype.scrollToRow = function (row) {\n this.session.setScrollTop(row * this.lineHeight);\n };\n VirtualRenderer.prototype.alignCursor = function (cursor, alignment) {\n if (typeof cursor == \"number\")\n cursor = { row: cursor, column: 0 };\n var pos = this.$cursorLayer.getPixelPosition(cursor);\n var h = this.$size.scrollerHeight - this.lineHeight;\n var offset = pos.top - h * (alignment || 0);\n this.session.setScrollTop(offset);\n return offset;\n };\n VirtualRenderer.prototype.$calcSteps = function (fromValue, toValue) {\n var i = 0;\n var l = this.STEPS;\n var steps = [];\n var func = function (t, x_min, dx) {\n return dx * (Math.pow(t - 1, 3) + 1) + x_min;\n };\n for (i = 0; i < l; ++i)\n steps.push(func(i / this.STEPS, fromValue, toValue - fromValue));\n return steps;\n };\n VirtualRenderer.prototype.scrollToLine = function (line, center, animate, callback) {\n var pos = this.$cursorLayer.getPixelPosition({ row: line, column: 0 });\n var offset = pos.top;\n if (center)\n offset -= this.$size.scrollerHeight / 2;\n var initialScroll = this.scrollTop;\n this.session.setScrollTop(offset);\n if (animate !== false)\n this.animateScrolling(initialScroll, callback);\n };\n VirtualRenderer.prototype.animateScrolling = function (fromValue, callback) {\n var toValue = this.scrollTop;\n if (!this.$animatedScroll)\n return;\n var _self = this;\n if (fromValue == toValue)\n return;\n if (this.$scrollAnimation) {\n var oldSteps = this.$scrollAnimation.steps;\n if (oldSteps.length) {\n fromValue = oldSteps[0];\n if (fromValue == toValue)\n return;\n }\n }\n var steps = _self.$calcSteps(fromValue, toValue);\n this.$scrollAnimation = { from: fromValue, to: toValue, steps: steps };\n clearInterval(this.$timer);\n _self.session.setScrollTop(steps.shift());\n _self.session.$scrollTop = toValue;\n function endAnimation() {\n _self.$timer = clearInterval(_self.$timer);\n _self.$scrollAnimation = null;\n _self.$stopAnimation = false;\n callback && callback();\n }\n this.$timer = setInterval(function () {\n if (_self.$stopAnimation) {\n endAnimation();\n return;\n }\n if (!_self.session)\n return clearInterval(_self.$timer);\n if (steps.length) {\n _self.session.setScrollTop(steps.shift());\n _self.session.$scrollTop = toValue;\n }\n else if (toValue != null) {\n _self.session.$scrollTop = -1;\n _self.session.setScrollTop(toValue);\n toValue = null;\n }\n else {\n endAnimation();\n }\n }, 10);\n };\n VirtualRenderer.prototype.scrollToY = function (scrollTop) {\n if (this.scrollTop !== scrollTop) {\n this.$loop.schedule(this.CHANGE_SCROLL);\n this.scrollTop = scrollTop;\n }\n };\n VirtualRenderer.prototype.scrollToX = function (scrollLeft) {\n if (this.scrollLeft !== scrollLeft)\n this.scrollLeft = scrollLeft;\n this.$loop.schedule(this.CHANGE_H_SCROLL);\n };\n VirtualRenderer.prototype.scrollTo = function (x, y) {\n this.session.setScrollTop(y);\n this.session.setScrollLeft(x);\n };\n VirtualRenderer.prototype.scrollBy = function (deltaX, deltaY) {\n deltaY && this.session.setScrollTop(this.session.getScrollTop() + deltaY);\n deltaX && this.session.setScrollLeft(this.session.getScrollLeft() + deltaX);\n };\n VirtualRenderer.prototype.isScrollableBy = function (deltaX, deltaY) {\n if (deltaY < 0 && this.session.getScrollTop() >= 1 - this.scrollMargin.top)\n return true;\n if (deltaY > 0 && this.session.getScrollTop() + this.$size.scrollerHeight\n - this.layerConfig.maxHeight < -1 + this.scrollMargin.bottom)\n return true;\n if (deltaX < 0 && this.session.getScrollLeft() >= 1 - this.scrollMargin.left)\n return true;\n if (deltaX > 0 && this.session.getScrollLeft() + this.$size.scrollerWidth\n - this.layerConfig.width < -1 + this.scrollMargin.right)\n return true;\n };\n VirtualRenderer.prototype.pixelToScreenCoordinates = function (x, y) {\n var canvasPos;\n if (this.$hasCssTransforms) {\n canvasPos = { top: 0, left: 0 };\n var p = this.$fontMetrics.transformCoordinates([x, y]);\n x = p[1] - this.gutterWidth - this.margin.left;\n y = p[0];\n }\n else {\n canvasPos = this.scroller.getBoundingClientRect();\n }\n var offsetX = x + this.scrollLeft - canvasPos.left - this.$padding;\n var offset = offsetX / this.characterWidth;\n var row = Math.floor((y + this.scrollTop - canvasPos.top) / this.lineHeight);\n var col = this.$blockCursor ? Math.floor(offset) : Math.round(offset);\n return { row: row, column: col, side: offset - col > 0 ? 1 : -1, offsetX: offsetX };\n };\n VirtualRenderer.prototype.screenToTextCoordinates = function (x, y) {\n var canvasPos;\n if (this.$hasCssTransforms) {\n canvasPos = { top: 0, left: 0 };\n var p = this.$fontMetrics.transformCoordinates([x, y]);\n x = p[1] - this.gutterWidth - this.margin.left;\n y = p[0];\n }\n else {\n canvasPos = this.scroller.getBoundingClientRect();\n }\n var offsetX = x + this.scrollLeft - canvasPos.left - this.$padding;\n var offset = offsetX / this.characterWidth;\n var col = this.$blockCursor ? Math.floor(offset) : Math.round(offset);\n var row = Math.floor((y + this.scrollTop - canvasPos.top) / this.lineHeight);\n return this.session.screenToDocumentPosition(row, Math.max(col, 0), offsetX);\n };\n VirtualRenderer.prototype.textToScreenCoordinates = function (row, column) {\n var canvasPos = this.scroller.getBoundingClientRect();\n var pos = this.session.documentToScreenPosition(row, column);\n var x = this.$padding + (this.session.$bidiHandler.isBidiRow(pos.row, row)\n ? this.session.$bidiHandler.getPosLeft(pos.column)\n : Math.round(pos.column * this.characterWidth));\n var y = pos.row * this.lineHeight;\n return {\n pageX: canvasPos.left + x - this.scrollLeft,\n pageY: canvasPos.top + y - this.scrollTop\n };\n };\n VirtualRenderer.prototype.visualizeFocus = function () {\n dom.addCssClass(this.container, \"ace_focus\");\n };\n VirtualRenderer.prototype.visualizeBlur = function () {\n dom.removeCssClass(this.container, \"ace_focus\");\n };\n VirtualRenderer.prototype.showComposition = function (composition) {\n this.$composition = composition;\n if (!composition.cssText) {\n composition.cssText = this.textarea.style.cssText;\n }\n if (composition.useTextareaForIME == undefined)\n composition.useTextareaForIME = this.$useTextareaForIME;\n if (this.$useTextareaForIME) {\n dom.addCssClass(this.textarea, \"ace_composition\");\n this.textarea.style.cssText = \"\";\n this.$moveTextAreaToCursor();\n this.$cursorLayer.element.style.display = \"none\";\n }\n else {\n composition.markerId = this.session.addMarker(composition.markerRange, \"ace_composition_marker\", \"text\");\n }\n };\n VirtualRenderer.prototype.setCompositionText = function (text) {\n var cursor = this.session.selection.cursor;\n this.addToken(text, \"composition_placeholder\", cursor.row, cursor.column);\n this.$moveTextAreaToCursor();\n };\n VirtualRenderer.prototype.hideComposition = function () {\n if (!this.$composition)\n return;\n if (this.$composition.markerId)\n this.session.removeMarker(this.$composition.markerId);\n dom.removeCssClass(this.textarea, \"ace_composition\");\n this.textarea.style.cssText = this.$composition.cssText;\n var cursor = this.session.selection.cursor;\n this.removeExtraToken(cursor.row, cursor.column);\n this.$composition = null;\n this.$cursorLayer.element.style.display = \"\";\n };\n VirtualRenderer.prototype.setGhostText = function (text, position) {\n var cursor = this.session.selection.cursor;\n var insertPosition = position || { row: cursor.row, column: cursor.column };\n this.removeGhostText();\n var textLines = text.split(\"\\n\");\n this.addToken(textLines[0], \"ghost_text\", insertPosition.row, insertPosition.column);\n this.$ghostText = {\n text: text,\n position: {\n row: insertPosition.row,\n column: insertPosition.column\n }\n };\n if (textLines.length > 1) {\n this.$ghostTextWidget = {\n text: textLines.slice(1).join(\"\\n\"),\n row: insertPosition.row,\n column: insertPosition.column,\n className: \"ace_ghost_text\"\n };\n this.session.widgetManager.addLineWidget(this.$ghostTextWidget);\n var pixelPosition = this.$cursorLayer.getPixelPosition(insertPosition, true);\n var el = this.container;\n var height = el.getBoundingClientRect().height;\n var ghostTextHeight = textLines.length * this.lineHeight;\n var fitsY = ghostTextHeight < height - pixelPosition.top;\n if (fitsY)\n return;\n if (ghostTextHeight < height) {\n this.scrollBy(0, (textLines.length - 1) * this.lineHeight);\n }\n else {\n this.scrollBy(0, pixelPosition.top);\n }\n }\n };\n VirtualRenderer.prototype.removeGhostText = function () {\n if (!this.$ghostText)\n return;\n var position = this.$ghostText.position;\n this.removeExtraToken(position.row, position.column);\n if (this.$ghostTextWidget) {\n this.session.widgetManager.removeLineWidget(this.$ghostTextWidget);\n this.$ghostTextWidget = null;\n }\n this.$ghostText = null;\n };\n VirtualRenderer.prototype.addToken = function (text, type, row, column) {\n var session = this.session;\n session.bgTokenizer.lines[row] = null;\n var newToken = { type: type, value: text };\n var tokens = session.getTokens(row);\n if (column == null || !tokens.length) {\n tokens.push(newToken);\n }\n else {\n var l = 0;\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n l += token.value.length;\n if (column <= l) {\n var diff = token.value.length - (l - column);\n var before = token.value.slice(0, diff);\n var after = token.value.slice(diff);\n tokens.splice(i, 1, { type: token.type, value: before }, newToken, { type: token.type, value: after });\n break;\n }\n }\n }\n this.updateLines(row, row);\n };\n VirtualRenderer.prototype.removeExtraToken = function (row, column) {\n this.session.bgTokenizer.lines[row] = null;\n this.updateLines(row, row);\n };\n VirtualRenderer.prototype.setTheme = function (theme, cb) {\n var _self = this;\n this.$themeId = theme;\n _self._dispatchEvent('themeChange', { theme: theme });\n if (!theme || typeof theme == \"string\") {\n var moduleName = theme || this.$options.theme.initialValue;\n config.loadModule([\"theme\", moduleName], afterLoad);\n }\n else {\n afterLoad(theme);\n }\n function afterLoad(module) {\n if (_self.$themeId != theme)\n return cb && cb();\n if (!module || !module.cssClass)\n throw new Error(\"couldn't load module \" + theme + \" or it didn't call define\");\n if (module.$id)\n _self.$themeId = module.$id;\n dom.importCssString(module.cssText, module.cssClass, _self.container);\n if (_self.theme)\n dom.removeCssClass(_self.container, _self.theme.cssClass);\n var padding = \"padding\" in module ? module.padding\n : \"padding\" in (_self.theme || {}) ? 4 : _self.$padding;\n if (_self.$padding && padding != _self.$padding)\n _self.setPadding(padding);\n _self.$theme = module.cssClass;\n _self.theme = module;\n dom.addCssClass(_self.container, module.cssClass);\n dom.setCssClass(_self.container, \"ace_dark\", module.isDark);\n if (_self.$size) {\n _self.$size.width = 0;\n _self.$updateSizeAsync();\n }\n _self._dispatchEvent('themeLoaded', { theme: module });\n cb && cb();\n }\n };\n VirtualRenderer.prototype.getTheme = function () {\n return this.$themeId;\n };\n VirtualRenderer.prototype.setStyle = function (style, include) {\n dom.setCssClass(this.container, style, include !== false);\n };\n VirtualRenderer.prototype.unsetStyle = function (style) {\n dom.removeCssClass(this.container, style);\n };\n VirtualRenderer.prototype.setCursorStyle = function (style) {\n dom.setStyle(this.scroller.style, \"cursor\", style);\n };\n VirtualRenderer.prototype.setMouseCursor = function (cursorStyle) {\n dom.setStyle(this.scroller.style, \"cursor\", cursorStyle);\n };\n VirtualRenderer.prototype.attachToShadowRoot = function () {\n dom.importCssString(editorCss, \"ace_editor.css\", this.container);\n };\n VirtualRenderer.prototype.destroy = function () {\n this.freeze();\n this.$fontMetrics.destroy();\n this.$cursorLayer.destroy();\n this.removeAllListeners();\n this.container.textContent = \"\";\n this.setOption(\"useResizeObserver\", false);\n };\n VirtualRenderer.prototype.$updateCustomScrollbar = function (val) {\n var _self = this;\n this.$horizScroll = this.$vScroll = null;\n this.scrollBarV.element.remove();\n this.scrollBarH.element.remove();\n if (this.$scrollDecorator) {\n delete this.$scrollDecorator;\n }\n if (val === true) {\n this.scrollBarV = new VScrollBarCustom(this.container, this);\n this.scrollBarH = new HScrollBarCustom(this.container, this);\n this.scrollBarV.setHeight(this.$size.scrollerHeight);\n this.scrollBarH.setWidth(this.$size.scrollerWidth);\n this.scrollBarV.addEventListener(\"scroll\", function (e) {\n if (!_self.$scrollAnimation)\n _self.session.setScrollTop(e.data - _self.scrollMargin.top);\n });\n this.scrollBarH.addEventListener(\"scroll\", function (e) {\n if (!_self.$scrollAnimation)\n _self.session.setScrollLeft(e.data - _self.scrollMargin.left);\n });\n this.$scrollDecorator = new Decorator(this.scrollBarV, this);\n this.$scrollDecorator.$updateDecorators();\n }\n else {\n this.scrollBarV = new VScrollBar(this.container, this);\n this.scrollBarH = new HScrollBar(this.container, this);\n this.scrollBarV.addEventListener(\"scroll\", function (e) {\n if (!_self.$scrollAnimation)\n _self.session.setScrollTop(e.data - _self.scrollMargin.top);\n });\n this.scrollBarH.addEventListener(\"scroll\", function (e) {\n if (!_self.$scrollAnimation)\n _self.session.setScrollLeft(e.data - _self.scrollMargin.left);\n });\n }\n };\n VirtualRenderer.prototype.$addResizeObserver = function () {\n if (!window.ResizeObserver || this.$resizeObserver)\n return;\n var self = this;\n this.$resizeTimer = lang.delayedCall(function () {\n if (!self.destroyed)\n self.onResize();\n }, 50);\n this.$resizeObserver = new window.ResizeObserver(function (e) {\n var w = e[0].contentRect.width;\n var h = e[0].contentRect.height;\n if (Math.abs(self.$size.width - w) > 1\n || Math.abs(self.$size.height - h) > 1) {\n self.$resizeTimer.delay();\n }\n else {\n self.$resizeTimer.cancel();\n }\n });\n this.$resizeObserver.observe(this.container);\n };\n return VirtualRenderer;\n}());\nVirtualRenderer.prototype.CHANGE_CURSOR = 1;\nVirtualRenderer.prototype.CHANGE_MARKER = 2;\nVirtualRenderer.prototype.CHANGE_GUTTER = 4;\nVirtualRenderer.prototype.CHANGE_SCROLL = 8;\nVirtualRenderer.prototype.CHANGE_LINES = 16;\nVirtualRenderer.prototype.CHANGE_TEXT = 32;\nVirtualRenderer.prototype.CHANGE_SIZE = 64;\nVirtualRenderer.prototype.CHANGE_MARKER_BACK = 128;\nVirtualRenderer.prototype.CHANGE_MARKER_FRONT = 256;\nVirtualRenderer.prototype.CHANGE_FULL = 512;\nVirtualRenderer.prototype.CHANGE_H_SCROLL = 1024;\nVirtualRenderer.prototype.$changes = 0;\nVirtualRenderer.prototype.$padding = null;\nVirtualRenderer.prototype.$frozen = false;\nVirtualRenderer.prototype.STEPS = 8;\noop.implement(VirtualRenderer.prototype, EventEmitter);\nconfig.defineOptions(VirtualRenderer.prototype, \"renderer\", {\n useResizeObserver: {\n set: function (value) {\n if (!value && this.$resizeObserver) {\n this.$resizeObserver.disconnect();\n this.$resizeTimer.cancel();\n this.$resizeTimer = this.$resizeObserver = null;\n }\n else if (value && !this.$resizeObserver) {\n this.$addResizeObserver();\n }\n }\n },\n animatedScroll: { initialValue: false },\n showInvisibles: {\n set: function (value) {\n if (this.$textLayer.setShowInvisibles(value))\n this.$loop.schedule(this.CHANGE_TEXT);\n },\n initialValue: false\n },\n showPrintMargin: {\n set: function () { this.$updatePrintMargin(); },\n initialValue: true\n },\n printMarginColumn: {\n set: function () { this.$updatePrintMargin(); },\n initialValue: 80\n },\n printMargin: {\n set: function (val) {\n if (typeof val == \"number\")\n this.$printMarginColumn = val;\n this.$showPrintMargin = !!val;\n this.$updatePrintMargin();\n },\n get: function () {\n return this.$showPrintMargin && this.$printMarginColumn;\n }\n },\n showGutter: {\n set: function (show) {\n this.$gutter.style.display = show ? \"block\" : \"none\";\n this.$loop.schedule(this.CHANGE_FULL);\n this.onGutterResize();\n },\n initialValue: true\n },\n useSvgGutterIcons: {\n set: function (value) {\n this.$gutterLayer.$useSvgGutterIcons = value;\n },\n initialValue: false\n },\n showFoldedAnnotations: {\n set: function (value) {\n this.$gutterLayer.$showFoldedAnnotations = value;\n },\n initialValue: false\n },\n fadeFoldWidgets: {\n set: function (show) {\n dom.setCssClass(this.$gutter, \"ace_fade-fold-widgets\", show);\n },\n initialValue: false\n },\n showFoldWidgets: {\n set: function (show) {\n this.$gutterLayer.setShowFoldWidgets(show);\n this.$loop.schedule(this.CHANGE_GUTTER);\n },\n initialValue: true\n },\n displayIndentGuides: {\n set: function (show) {\n if (this.$textLayer.setDisplayIndentGuides(show))\n this.$loop.schedule(this.CHANGE_TEXT);\n },\n initialValue: true\n },\n highlightIndentGuides: {\n set: function (show) {\n if (this.$textLayer.setHighlightIndentGuides(show) == true) {\n this.$textLayer.$highlightIndentGuide();\n }\n else {\n this.$textLayer.$clearActiveIndentGuide(this.$textLayer.$lines.cells);\n }\n },\n initialValue: true\n },\n highlightGutterLine: {\n set: function (shouldHighlight) {\n this.$gutterLayer.setHighlightGutterLine(shouldHighlight);\n this.$loop.schedule(this.CHANGE_GUTTER);\n },\n initialValue: true\n },\n hScrollBarAlwaysVisible: {\n set: function (val) {\n if (!this.$hScrollBarAlwaysVisible || !this.$horizScroll)\n this.$loop.schedule(this.CHANGE_SCROLL);\n },\n initialValue: false\n },\n vScrollBarAlwaysVisible: {\n set: function (val) {\n if (!this.$vScrollBarAlwaysVisible || !this.$vScroll)\n this.$loop.schedule(this.CHANGE_SCROLL);\n },\n initialValue: false\n },\n fontSize: {\n set: function (size) {\n if (typeof size == \"number\")\n size = size + \"px\";\n this.container.style.fontSize = size;\n this.updateFontSize();\n },\n initialValue: 12\n },\n fontFamily: {\n set: function (name) {\n this.container.style.fontFamily = name;\n this.updateFontSize();\n }\n },\n maxLines: {\n set: function (val) {\n this.updateFull();\n }\n },\n minLines: {\n set: function (val) {\n if (!(this.$minLines < 0x1ffffffffffff))\n this.$minLines = 0;\n this.updateFull();\n }\n },\n maxPixelHeight: {\n set: function (val) {\n this.updateFull();\n },\n initialValue: 0\n },\n scrollPastEnd: {\n set: function (val) {\n val = +val || 0;\n if (this.$scrollPastEnd == val)\n return;\n this.$scrollPastEnd = val;\n this.$loop.schedule(this.CHANGE_SCROLL);\n },\n initialValue: 0,\n handlesSet: true\n },\n fixedWidthGutter: {\n set: function (val) {\n this.$gutterLayer.$fixedWidth = !!val;\n this.$loop.schedule(this.CHANGE_GUTTER);\n }\n },\n customScrollbar: {\n set: function (val) {\n this.$updateCustomScrollbar(val);\n },\n initialValue: false\n },\n theme: {\n set: function (val) { this.setTheme(val); },\n get: function () { return this.$themeId || this.theme; },\n initialValue: \"./theme/textmate\",\n handlesSet: true\n },\n hasCssTransforms: {},\n useTextareaForIME: {\n initialValue: !useragent.isMobile && !useragent.isIE\n }\n});\nexports.VirtualRenderer = VirtualRenderer;\n\n});\n\nace.define(\"ace/worker/worker_client\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/net\",\"ace/lib/event_emitter\",\"ace/config\"], function(require, exports, module) {\n\"use strict\";\n\nvar oop = require(\"../lib/oop\");\nvar net = require(\"../lib/net\");\nvar EventEmitter = require(\"../lib/event_emitter\").EventEmitter;\nvar config = require(\"../config\");\n\nfunction $workerBlob(workerUrl) {\n var script = \"importScripts('\" + net.qualifyURL(workerUrl) + \"');\";\n try {\n return new Blob([script], {\"type\": \"application/javascript\"});\n } catch (e) { // Backwards-compatibility\n var BlobBuilder = window.BlobBuilder || window.WebKitBlobBuilder || window.MozBlobBuilder;\n var blobBuilder = new BlobBuilder();\n blobBuilder.append(script);\n return blobBuilder.getBlob(\"application/javascript\");\n }\n}\n\nfunction createWorker(workerUrl) {\n if (typeof Worker == \"undefined\")\n return { postMessage: function() {}, terminate: function() {} };\n if (config.get(\"loadWorkerFromBlob\")) {\n var blob = $workerBlob(workerUrl);\n var URL = window.URL || window.webkitURL;\n var blobURL = URL.createObjectURL(blob);\n return new Worker(blobURL);\n }\n return new Worker(workerUrl);\n}\n\nvar WorkerClient = function(worker) {\n if (!worker.postMessage)\n worker = this.$createWorkerFromOldConfig.apply(this, arguments);\n\n this.$worker = worker;\n this.$sendDeltaQueue = this.$sendDeltaQueue.bind(this);\n this.changeListener = this.changeListener.bind(this);\n this.onMessage = this.onMessage.bind(this);\n\n this.callbackId = 1;\n this.callbacks = {};\n\n this.$worker.onmessage = this.onMessage;\n};\n\n(function(){\n\n oop.implement(this, EventEmitter);\n\n this.$createWorkerFromOldConfig = function(topLevelNamespaces, mod, classname, workerUrl, importScripts) {\n if (require.nameToUrl && !require.toUrl)\n require.toUrl = require.nameToUrl;\n\n if (config.get(\"packaged\") || !require.toUrl) {\n workerUrl = workerUrl || config.moduleUrl(mod, \"worker\");\n } else {\n var normalizePath = this.$normalizePath;\n workerUrl = workerUrl || normalizePath(require.toUrl(\"ace/worker/worker.js\", null, \"_\"));\n\n var tlns = {};\n topLevelNamespaces.forEach(function(ns) {\n tlns[ns] = normalizePath(require.toUrl(ns, null, \"_\").replace(/(\\.js)?(\\?.*)?$/, \"\"));\n });\n }\n\n this.$worker = createWorker(workerUrl);\n if (importScripts) {\n this.send(\"importScripts\", importScripts);\n }\n this.$worker.postMessage({\n init : true,\n tlns : tlns,\n module : mod,\n classname : classname\n });\n return this.$worker;\n };\n\n this.onMessage = function(e) {\n var msg = e.data;\n switch (msg.type) {\n case \"event\":\n this._signal(msg.name, {data: msg.data});\n break;\n case \"call\":\n var callback = this.callbacks[msg.id];\n if (callback) {\n callback(msg.data);\n delete this.callbacks[msg.id];\n }\n break;\n case \"error\":\n this.reportError(msg.data);\n break;\n case \"log\":\n window.console && console.log && console.log.apply(console, msg.data);\n break;\n }\n };\n \n this.reportError = function(err) {\n window.console && console.error && console.error(err);\n };\n\n this.$normalizePath = function(path) {\n return net.qualifyURL(path);\n };\n\n this.terminate = function() {\n this._signal(\"terminate\", {});\n this.deltaQueue = null;\n this.$worker.terminate();\n this.$worker.onerror = function(e) {\n e.preventDefault();\n };\n this.$worker = null;\n if (this.$doc)\n this.$doc.off(\"change\", this.changeListener);\n this.$doc = null;\n };\n\n this.send = function(cmd, args) {\n this.$worker.postMessage({command: cmd, args: args});\n };\n\n this.call = function(cmd, args, callback) {\n if (callback) {\n var id = this.callbackId++;\n this.callbacks[id] = callback;\n args.push(id);\n }\n this.send(cmd, args);\n };\n\n this.emit = function(event, data) {\n try {\n if (data.data && data.data.err)\n data.data.err = {message: data.data.err.message, stack: data.data.err.stack, code: data.data.err.code};\n this.$worker && this.$worker.postMessage({event: event, data: {data: data.data}});\n }\n catch(ex) {\n console.error(ex.stack);\n }\n };\n\n this.attachToDocument = function(doc) {\n if (this.$doc)\n this.terminate();\n\n this.$doc = doc;\n this.call(\"setValue\", [doc.getValue()]);\n doc.on(\"change\", this.changeListener, true);\n };\n\n this.changeListener = function(delta) {\n if (!this.deltaQueue) {\n this.deltaQueue = [];\n setTimeout(this.$sendDeltaQueue, 0);\n }\n if (delta.action == \"insert\")\n this.deltaQueue.push(delta.start, delta.lines);\n else\n this.deltaQueue.push(delta.start, delta.end);\n };\n\n this.$sendDeltaQueue = function() {\n var q = this.deltaQueue;\n if (!q) return;\n this.deltaQueue = null;\n if (q.length > 50 && q.length > this.$doc.getLength() >> 1) {\n this.call(\"setValue\", [this.$doc.getValue()]);\n } else\n this.emit(\"change\", {data: q});\n };\n\n}).call(WorkerClient.prototype);\n\n\nvar UIWorkerClient = function(topLevelNamespaces, mod, classname) {\n var main = null;\n var emitSync = false;\n var sender = Object.create(EventEmitter);\n\n var messageBuffer = [];\n var workerClient = new WorkerClient({\n messageBuffer: messageBuffer,\n terminate: function() {},\n postMessage: function(e) {\n messageBuffer.push(e);\n if (!main) return;\n if (emitSync)\n setTimeout(processNext);\n else\n processNext();\n }\n });\n\n workerClient.setEmitSync = function(val) { emitSync = val; };\n\n var processNext = function() {\n var msg = messageBuffer.shift();\n if (msg.command)\n main[msg.command].apply(main, msg.args);\n else if (msg.event)\n sender._signal(msg.event, msg.data);\n };\n\n sender.postMessage = function(msg) {\n workerClient.onMessage({data: msg});\n };\n sender.callback = function(data, callbackId) {\n this.postMessage({type: \"call\", id: callbackId, data: data});\n };\n sender.emit = function(name, data) {\n this.postMessage({type: \"event\", name: name, data: data});\n };\n\n config.loadModule([\"worker\", mod], function(Main) {\n main = new Main[classname](sender);\n while (messageBuffer.length)\n processNext();\n });\n\n return workerClient;\n};\n\nexports.UIWorkerClient = UIWorkerClient;\nexports.WorkerClient = WorkerClient;\nexports.createWorker = createWorker;\n\n\n});\n\nace.define(\"ace/placeholder\",[\"require\",\"exports\",\"module\",\"ace/range\",\"ace/lib/event_emitter\",\"ace/lib/oop\"], function(require, exports, module){\"use strict\";\nvar Range = require(\"./range\").Range;\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar oop = require(\"./lib/oop\");\nvar PlaceHolder = /** @class */ (function () {\n function PlaceHolder(session, length, pos, others, mainClass, othersClass) {\n var _self = this;\n this.length = length;\n this.session = session;\n this.doc = session.getDocument();\n this.mainClass = mainClass;\n this.othersClass = othersClass;\n this.$onUpdate = this.onUpdate.bind(this);\n this.doc.on(\"change\", this.$onUpdate, true);\n this.$others = others;\n this.$onCursorChange = function () {\n setTimeout(function () {\n _self.onCursorChange();\n });\n };\n this.$pos = pos;\n var undoStack = session.getUndoManager().$undoStack || session.getUndoManager().$undostack || { length: -1 };\n this.$undoStackDepth = undoStack.length;\n this.setup();\n session.selection.on(\"changeCursor\", this.$onCursorChange);\n }\n PlaceHolder.prototype.setup = function () {\n var _self = this;\n var doc = this.doc;\n var session = this.session;\n this.selectionBefore = session.selection.toJSON();\n if (session.selection.inMultiSelectMode)\n session.selection.toSingleRange();\n this.pos = doc.createAnchor(this.$pos.row, this.$pos.column);\n var pos = this.pos;\n pos.$insertRight = true;\n pos.detach();\n pos.markerId = session.addMarker(new Range(pos.row, pos.column, pos.row, pos.column + this.length), this.mainClass, null, false);\n this.others = [];\n this.$others.forEach(function (other) {\n var anchor = doc.createAnchor(other.row, other.column);\n anchor.$insertRight = true;\n anchor.detach();\n _self.others.push(anchor);\n });\n session.setUndoSelect(false);\n };\n PlaceHolder.prototype.showOtherMarkers = function () {\n if (this.othersActive)\n return;\n var session = this.session;\n var _self = this;\n this.othersActive = true;\n this.others.forEach(function (anchor) {\n anchor.markerId = session.addMarker(new Range(anchor.row, anchor.column, anchor.row, anchor.column + _self.length), _self.othersClass, null, false);\n });\n };\n PlaceHolder.prototype.hideOtherMarkers = function () {\n if (!this.othersActive)\n return;\n this.othersActive = false;\n for (var i = 0; i < this.others.length; i++) {\n this.session.removeMarker(this.others[i].markerId);\n }\n };\n PlaceHolder.prototype.onUpdate = function (delta) {\n if (this.$updating)\n return this.updateAnchors(delta);\n var range = delta;\n if (range.start.row !== range.end.row)\n return;\n if (range.start.row !== this.pos.row)\n return;\n this.$updating = true;\n var lengthDiff = delta.action === \"insert\" ? range.end.column - range.start.column : range.start.column - range.end.column;\n var inMainRange = range.start.column >= this.pos.column && range.start.column <= this.pos.column + this.length + 1;\n var distanceFromStart = range.start.column - this.pos.column;\n this.updateAnchors(delta);\n if (inMainRange)\n this.length += lengthDiff;\n if (inMainRange && !this.session.$fromUndo) {\n if (delta.action === 'insert') {\n for (var i = this.others.length - 1; i >= 0; i--) {\n var otherPos = this.others[i];\n var newPos = { row: otherPos.row, column: otherPos.column + distanceFromStart };\n this.doc.insertMergedLines(newPos, delta.lines);\n }\n }\n else if (delta.action === 'remove') {\n for (var i = this.others.length - 1; i >= 0; i--) {\n var otherPos = this.others[i];\n var newPos = { row: otherPos.row, column: otherPos.column + distanceFromStart };\n this.doc.remove(new Range(newPos.row, newPos.column, newPos.row, newPos.column - lengthDiff));\n }\n }\n }\n this.$updating = false;\n this.updateMarkers();\n };\n PlaceHolder.prototype.updateAnchors = function (delta) {\n this.pos.onChange(delta);\n for (var i = this.others.length; i--;)\n this.others[i].onChange(delta);\n this.updateMarkers();\n };\n PlaceHolder.prototype.updateMarkers = function () {\n if (this.$updating)\n return;\n var _self = this;\n var session = this.session;\n var updateMarker = function (pos, className) {\n session.removeMarker(pos.markerId);\n pos.markerId = session.addMarker(new Range(pos.row, pos.column, pos.row, pos.column + _self.length), className, null, false);\n };\n updateMarker(this.pos, this.mainClass);\n for (var i = this.others.length; i--;)\n updateMarker(this.others[i], this.othersClass);\n };\n PlaceHolder.prototype.onCursorChange = function (event) {\n if (this.$updating || !this.session)\n return;\n var pos = this.session.selection.getCursor();\n if (pos.row === this.pos.row && pos.column >= this.pos.column && pos.column <= this.pos.column + this.length) {\n this.showOtherMarkers();\n this._emit(\"cursorEnter\", event);\n }\n else {\n this.hideOtherMarkers();\n this._emit(\"cursorLeave\", event);\n }\n };\n PlaceHolder.prototype.detach = function () {\n this.session.removeMarker(this.pos && this.pos.markerId);\n this.hideOtherMarkers();\n this.doc.off(\"change\", this.$onUpdate);\n this.session.selection.off(\"changeCursor\", this.$onCursorChange);\n this.session.setUndoSelect(true);\n this.session = null;\n };\n PlaceHolder.prototype.cancel = function () {\n if (this.$undoStackDepth === -1)\n return;\n var undoManager = this.session.getUndoManager();\n var undosRequired = (undoManager.$undoStack || undoManager.$undostack).length - this.$undoStackDepth;\n for (var i = 0; i < undosRequired; i++) {\n undoManager.undo(this.session, true);\n }\n if (this.selectionBefore)\n this.session.selection.fromJSON(this.selectionBefore);\n };\n return PlaceHolder;\n}());\noop.implement(PlaceHolder.prototype, EventEmitter);\nexports.PlaceHolder = PlaceHolder;\n\n});\n\nace.define(\"ace/mouse/multi_select_handler\",[\"require\",\"exports\",\"module\",\"ace/lib/event\",\"ace/lib/useragent\"], function(require, exports, module){var event = require(\"../lib/event\");\nvar useragent = require(\"../lib/useragent\");\nfunction isSamePoint(p1, p2) {\n return p1.row == p2.row && p1.column == p2.column;\n}\nfunction onMouseDown(e) {\n var ev = e.domEvent;\n var alt = ev.altKey;\n var shift = ev.shiftKey;\n var ctrl = ev.ctrlKey;\n var accel = e.getAccelKey();\n var button = e.getButton();\n if (ctrl && useragent.isMac)\n button = ev.button;\n if (e.editor.inMultiSelectMode && button == 2) {\n e.editor.textInput.onContextMenu(e.domEvent);\n return;\n }\n if (!ctrl && !alt && !accel) {\n if (button === 0 && e.editor.inMultiSelectMode)\n e.editor.exitMultiSelectMode();\n return;\n }\n if (button !== 0)\n return;\n var editor = e.editor;\n var selection = editor.selection;\n var isMultiSelect = editor.inMultiSelectMode;\n var pos = e.getDocumentPosition();\n var cursor = selection.getCursor();\n var inSelection = e.inSelection() || (selection.isEmpty() && isSamePoint(pos, cursor));\n var mouseX = e.x, mouseY = e.y;\n var onMouseSelection = function (e) {\n mouseX = e.clientX;\n mouseY = e.clientY;\n };\n var session = editor.session;\n var screenAnchor = editor.renderer.pixelToScreenCoordinates(mouseX, mouseY);\n var screenCursor = screenAnchor;\n var selectionMode;\n if (editor.$mouseHandler.$enableJumpToDef) {\n if (ctrl && alt || accel && alt)\n selectionMode = shift ? \"block\" : \"add\";\n else if (alt && editor.$blockSelectEnabled)\n selectionMode = \"block\";\n }\n else {\n if (accel && !alt) {\n selectionMode = \"add\";\n if (!isMultiSelect && shift)\n return;\n }\n else if (alt && editor.$blockSelectEnabled) {\n selectionMode = \"block\";\n }\n }\n if (selectionMode && useragent.isMac && ev.ctrlKey) {\n editor.$mouseHandler.cancelContextMenu();\n }\n if (selectionMode == \"add\") {\n if (!isMultiSelect && inSelection)\n return; // dragging\n if (!isMultiSelect) {\n var range = selection.toOrientedRange();\n editor.addSelectionMarker(range);\n }\n var oldRange = selection.rangeList.rangeAtPoint(pos);\n editor.inVirtualSelectionMode = true;\n if (shift) {\n oldRange = null;\n range = selection.ranges[0] || range;\n editor.removeSelectionMarker(range);\n }\n editor.once(\"mouseup\", function () {\n var tmpSel = selection.toOrientedRange();\n if (oldRange && tmpSel.isEmpty() && isSamePoint(oldRange.cursor, tmpSel.cursor))\n selection.substractPoint(tmpSel.cursor);\n else {\n if (shift) {\n selection.substractPoint(range.cursor);\n }\n else if (range) {\n editor.removeSelectionMarker(range);\n selection.addRange(range);\n }\n selection.addRange(tmpSel);\n }\n editor.inVirtualSelectionMode = false;\n });\n }\n else if (selectionMode == \"block\") {\n e.stop();\n editor.inVirtualSelectionMode = true;\n var initialRange;\n var rectSel = [];\n var blockSelect = function () {\n var newCursor = editor.renderer.pixelToScreenCoordinates(mouseX, mouseY);\n var cursor = session.screenToDocumentPosition(newCursor.row, newCursor.column, newCursor.offsetX);\n if (isSamePoint(screenCursor, newCursor) && isSamePoint(cursor, selection.lead))\n return;\n screenCursor = newCursor;\n editor.selection.moveToPosition(cursor);\n editor.renderer.scrollCursorIntoView();\n editor.removeSelectionMarkers(rectSel);\n rectSel = selection.rectangularRangeBlock(screenCursor, screenAnchor);\n if (editor.$mouseHandler.$clickSelection && rectSel.length == 1 && rectSel[0].isEmpty())\n rectSel[0] = editor.$mouseHandler.$clickSelection.clone();\n rectSel.forEach(editor.addSelectionMarker, editor);\n editor.updateSelectionMarkers();\n };\n if (isMultiSelect && !accel) {\n selection.toSingleRange();\n }\n else if (!isMultiSelect && accel) {\n initialRange = selection.toOrientedRange();\n editor.addSelectionMarker(initialRange);\n }\n if (shift)\n screenAnchor = session.documentToScreenPosition(selection.lead);\n else\n selection.moveToPosition(pos);\n screenCursor = { row: -1, column: -1 };\n var onMouseSelectionEnd = function (e) {\n blockSelect();\n clearInterval(timerId);\n editor.removeSelectionMarkers(rectSel);\n if (!rectSel.length)\n rectSel = [selection.toOrientedRange()];\n if (initialRange) {\n editor.removeSelectionMarker(initialRange);\n selection.toSingleRange(initialRange);\n }\n for (var i = 0; i < rectSel.length; i++)\n selection.addRange(rectSel[i]);\n editor.inVirtualSelectionMode = false;\n editor.$mouseHandler.$clickSelection = null;\n };\n var onSelectionInterval = blockSelect;\n event.capture(editor.container, onMouseSelection, onMouseSelectionEnd);\n var timerId = setInterval(function () { onSelectionInterval(); }, 20);\n return e.preventDefault();\n }\n}\nexports.onMouseDown = onMouseDown;\n\n});\n\nace.define(\"ace/commands/multi_select_commands\",[\"require\",\"exports\",\"module\",\"ace/keyboard/hash_handler\"], function(require, exports, module){// commands to enter multiselect mode\nexports.defaultCommands = [{\n name: \"addCursorAbove\",\n description: \"Add cursor above\",\n exec: function (editor) { editor.selectMoreLines(-1); },\n bindKey: { win: \"Ctrl-Alt-Up\", mac: \"Ctrl-Alt-Up\" },\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"addCursorBelow\",\n description: \"Add cursor below\",\n exec: function (editor) { editor.selectMoreLines(1); },\n bindKey: { win: \"Ctrl-Alt-Down\", mac: \"Ctrl-Alt-Down\" },\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"addCursorAboveSkipCurrent\",\n description: \"Add cursor above (skip current)\",\n exec: function (editor) { editor.selectMoreLines(-1, true); },\n bindKey: { win: \"Ctrl-Alt-Shift-Up\", mac: \"Ctrl-Alt-Shift-Up\" },\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"addCursorBelowSkipCurrent\",\n description: \"Add cursor below (skip current)\",\n exec: function (editor) { editor.selectMoreLines(1, true); },\n bindKey: { win: \"Ctrl-Alt-Shift-Down\", mac: \"Ctrl-Alt-Shift-Down\" },\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"selectMoreBefore\",\n description: \"Select more before\",\n exec: function (editor) { editor.selectMore(-1); },\n bindKey: { win: \"Ctrl-Alt-Left\", mac: \"Ctrl-Alt-Left\" },\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"selectMoreAfter\",\n description: \"Select more after\",\n exec: function (editor) { editor.selectMore(1); },\n bindKey: { win: \"Ctrl-Alt-Right\", mac: \"Ctrl-Alt-Right\" },\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"selectNextBefore\",\n description: \"Select next before\",\n exec: function (editor) { editor.selectMore(-1, true); },\n bindKey: { win: \"Ctrl-Alt-Shift-Left\", mac: \"Ctrl-Alt-Shift-Left\" },\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"selectNextAfter\",\n description: \"Select next after\",\n exec: function (editor) { editor.selectMore(1, true); },\n bindKey: { win: \"Ctrl-Alt-Shift-Right\", mac: \"Ctrl-Alt-Shift-Right\" },\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"toggleSplitSelectionIntoLines\",\n description: \"Split selection into lines\",\n exec: function (editor) {\n if (editor.multiSelect.rangeCount > 1)\n editor.multiSelect.joinSelections();\n else\n editor.multiSelect.splitIntoLines();\n },\n bindKey: { win: \"Ctrl-Alt-L\", mac: \"Ctrl-Alt-L\" },\n readOnly: true\n }, {\n name: \"splitSelectionIntoLines\",\n description: \"Split into lines\",\n exec: function (editor) { editor.multiSelect.splitIntoLines(); },\n readOnly: true\n }, {\n name: \"alignCursors\",\n description: \"Align cursors\",\n exec: function (editor) { editor.alignCursors(); },\n bindKey: { win: \"Ctrl-Alt-A\", mac: \"Ctrl-Alt-A\" },\n scrollIntoView: \"cursor\"\n }, {\n name: \"findAll\",\n description: \"Find all\",\n exec: function (editor) { editor.findAll(); },\n bindKey: { win: \"Ctrl-Alt-K\", mac: \"Ctrl-Alt-G\" },\n scrollIntoView: \"cursor\",\n readOnly: true\n }];\nexports.multiSelectCommands = [{\n name: \"singleSelection\",\n description: \"Single selection\",\n bindKey: \"esc\",\n exec: function (editor) { editor.exitMultiSelectMode(); },\n scrollIntoView: \"cursor\",\n readOnly: true,\n isAvailable: function (editor) { return editor && editor.inMultiSelectMode; }\n }];\nvar HashHandler = require(\"../keyboard/hash_handler\").HashHandler;\nexports.keyboardHandler = new HashHandler(exports.multiSelectCommands);\n\n});\n\nace.define(\"ace/multi_select\",[\"require\",\"exports\",\"module\",\"ace/range_list\",\"ace/range\",\"ace/selection\",\"ace/mouse/multi_select_handler\",\"ace/lib/event\",\"ace/lib/lang\",\"ace/commands/multi_select_commands\",\"ace/search\",\"ace/edit_session\",\"ace/editor\",\"ace/config\"], function(require, exports, module){var RangeList = require(\"./range_list\").RangeList;\nvar Range = require(\"./range\").Range;\nvar Selection = require(\"./selection\").Selection;\nvar onMouseDown = require(\"./mouse/multi_select_handler\").onMouseDown;\nvar event = require(\"./lib/event\");\nvar lang = require(\"./lib/lang\");\nvar commands = require(\"./commands/multi_select_commands\");\nexports.commands = commands.defaultCommands.concat(commands.multiSelectCommands);\nvar Search = require(\"./search\").Search;\nvar search = new Search();\nfunction find(session, needle, dir) {\n search.$options.wrap = true;\n search.$options.needle = needle;\n search.$options.backwards = dir == -1;\n return search.find(session);\n}\nvar EditSession = require(\"./edit_session\").EditSession;\n(function () {\n this.getSelectionMarkers = function () {\n return this.$selectionMarkers;\n };\n}).call(EditSession.prototype);\n(function () {\n this.ranges = null;\n this.rangeList = null;\n this.addRange = function (range, $blockChangeEvents) {\n if (!range)\n return;\n if (!this.inMultiSelectMode && this.rangeCount === 0) {\n var oldRange = this.toOrientedRange();\n this.rangeList.add(oldRange);\n this.rangeList.add(range);\n if (this.rangeList.ranges.length != 2) {\n this.rangeList.removeAll();\n return $blockChangeEvents || this.fromOrientedRange(range);\n }\n this.rangeList.removeAll();\n this.rangeList.add(oldRange);\n this.$onAddRange(oldRange);\n }\n if (!range.cursor)\n range.cursor = range.end;\n var removed = this.rangeList.add(range);\n this.$onAddRange(range);\n if (removed.length)\n this.$onRemoveRange(removed);\n if (this.rangeCount > 1 && !this.inMultiSelectMode) {\n this._signal(\"multiSelect\");\n this.inMultiSelectMode = true;\n this.session.$undoSelect = false;\n this.rangeList.attach(this.session);\n }\n return $blockChangeEvents || this.fromOrientedRange(range);\n };\n this.toSingleRange = function (range) {\n range = range || this.ranges[0];\n var removed = this.rangeList.removeAll();\n if (removed.length)\n this.$onRemoveRange(removed);\n range && this.fromOrientedRange(range);\n };\n this.substractPoint = function (pos) {\n var removed = this.rangeList.substractPoint(pos);\n if (removed) {\n this.$onRemoveRange(removed);\n return removed[0];\n }\n };\n this.mergeOverlappingRanges = function () {\n var removed = this.rangeList.merge();\n if (removed.length)\n this.$onRemoveRange(removed);\n };\n this.$onAddRange = function (range) {\n this.rangeCount = this.rangeList.ranges.length;\n this.ranges.unshift(range);\n this._signal(\"addRange\", { range: range });\n };\n this.$onRemoveRange = function (removed) {\n this.rangeCount = this.rangeList.ranges.length;\n if (this.rangeCount == 1 && this.inMultiSelectMode) {\n var lastRange = this.rangeList.ranges.pop();\n removed.push(lastRange);\n this.rangeCount = 0;\n }\n for (var i = removed.length; i--;) {\n var index = this.ranges.indexOf(removed[i]);\n this.ranges.splice(index, 1);\n }\n this._signal(\"removeRange\", { ranges: removed });\n if (this.rangeCount === 0 && this.inMultiSelectMode) {\n this.inMultiSelectMode = false;\n this._signal(\"singleSelect\");\n this.session.$undoSelect = true;\n this.rangeList.detach(this.session);\n }\n lastRange = lastRange || this.ranges[0];\n if (lastRange && !lastRange.isEqual(this.getRange()))\n this.fromOrientedRange(lastRange);\n };\n this.$initRangeList = function () {\n if (this.rangeList)\n return;\n this.rangeList = new RangeList();\n this.ranges = [];\n this.rangeCount = 0;\n };\n this.getAllRanges = function () {\n return this.rangeCount ? this.rangeList.ranges.concat() : [this.getRange()];\n };\n this.splitIntoLines = function () {\n var ranges = this.ranges.length ? this.ranges : [this.getRange()];\n var newRanges = [];\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i];\n var row = range.start.row;\n var endRow = range.end.row;\n if (row === endRow) {\n newRanges.push(range.clone());\n }\n else {\n newRanges.push(new Range(row, range.start.column, row, this.session.getLine(row).length));\n while (++row < endRow)\n newRanges.push(this.getLineRange(row, true));\n newRanges.push(new Range(endRow, 0, endRow, range.end.column));\n }\n if (i == 0 && !this.isBackwards())\n newRanges = newRanges.reverse();\n }\n this.toSingleRange();\n for (var i = newRanges.length; i--;)\n this.addRange(newRanges[i]);\n };\n this.joinSelections = function () {\n var ranges = this.rangeList.ranges;\n var lastRange = ranges[ranges.length - 1];\n var range = Range.fromPoints(ranges[0].start, lastRange.end);\n this.toSingleRange();\n this.setSelectionRange(range, lastRange.cursor == lastRange.start);\n };\n this.toggleBlockSelection = function () {\n if (this.rangeCount > 1) {\n var ranges = this.rangeList.ranges;\n var lastRange = ranges[ranges.length - 1];\n var range = Range.fromPoints(ranges[0].start, lastRange.end);\n this.toSingleRange();\n this.setSelectionRange(range, lastRange.cursor == lastRange.start);\n }\n else {\n var cursor = this.session.documentToScreenPosition(this.cursor);\n var anchor = this.session.documentToScreenPosition(this.anchor);\n var rectSel = this.rectangularRangeBlock(cursor, anchor);\n rectSel.forEach(this.addRange, this);\n }\n };\n this.rectangularRangeBlock = function (screenCursor, screenAnchor, includeEmptyLines) {\n var rectSel = [];\n var xBackwards = screenCursor.column < screenAnchor.column;\n if (xBackwards) {\n var startColumn = screenCursor.column;\n var endColumn = screenAnchor.column;\n var startOffsetX = screenCursor.offsetX;\n var endOffsetX = screenAnchor.offsetX;\n }\n else {\n var startColumn = screenAnchor.column;\n var endColumn = screenCursor.column;\n var startOffsetX = screenAnchor.offsetX;\n var endOffsetX = screenCursor.offsetX;\n }\n var yBackwards = screenCursor.row < screenAnchor.row;\n if (yBackwards) {\n var startRow = screenCursor.row;\n var endRow = screenAnchor.row;\n }\n else {\n var startRow = screenAnchor.row;\n var endRow = screenCursor.row;\n }\n if (startColumn < 0)\n startColumn = 0;\n if (startRow < 0)\n startRow = 0;\n if (startRow == endRow)\n includeEmptyLines = true;\n var docEnd;\n for (var row = startRow; row <= endRow; row++) {\n var range = Range.fromPoints(this.session.screenToDocumentPosition(row, startColumn, startOffsetX), this.session.screenToDocumentPosition(row, endColumn, endOffsetX));\n if (range.isEmpty()) {\n if (docEnd && isSamePoint(range.end, docEnd))\n break;\n docEnd = range.end;\n }\n range.cursor = xBackwards ? range.start : range.end;\n rectSel.push(range);\n }\n if (yBackwards)\n rectSel.reverse();\n if (!includeEmptyLines) {\n var end = rectSel.length - 1;\n while (rectSel[end].isEmpty() && end > 0)\n end--;\n if (end > 0) {\n var start = 0;\n while (rectSel[start].isEmpty())\n start++;\n }\n for (var i = end; i >= start; i--) {\n if (rectSel[i].isEmpty())\n rectSel.splice(i, 1);\n }\n }\n return rectSel;\n };\n}).call(Selection.prototype);\nvar Editor = require(\"./editor\").Editor;\n(function () {\n this.updateSelectionMarkers = function () {\n this.renderer.updateCursor();\n this.renderer.updateBackMarkers();\n };\n this.addSelectionMarker = function (orientedRange) {\n if (!orientedRange.cursor)\n orientedRange.cursor = orientedRange.end;\n var style = this.getSelectionStyle();\n orientedRange.marker = this.session.addMarker(orientedRange, \"ace_selection\", style);\n this.session.$selectionMarkers.push(orientedRange);\n this.session.selectionMarkerCount = this.session.$selectionMarkers.length;\n return orientedRange;\n };\n this.removeSelectionMarker = function (range) {\n if (!range.marker)\n return;\n this.session.removeMarker(range.marker);\n var index = this.session.$selectionMarkers.indexOf(range);\n if (index != -1)\n this.session.$selectionMarkers.splice(index, 1);\n this.session.selectionMarkerCount = this.session.$selectionMarkers.length;\n };\n this.removeSelectionMarkers = function (ranges) {\n var markerList = this.session.$selectionMarkers;\n for (var i = ranges.length; i--;) {\n var range = ranges[i];\n if (!range.marker)\n continue;\n this.session.removeMarker(range.marker);\n var index = markerList.indexOf(range);\n if (index != -1)\n markerList.splice(index, 1);\n }\n this.session.selectionMarkerCount = markerList.length;\n };\n this.$onAddRange = function (e) {\n this.addSelectionMarker(e.range);\n this.renderer.updateCursor();\n this.renderer.updateBackMarkers();\n };\n this.$onRemoveRange = function (e) {\n this.removeSelectionMarkers(e.ranges);\n this.renderer.updateCursor();\n this.renderer.updateBackMarkers();\n };\n this.$onMultiSelect = function (e) {\n if (this.inMultiSelectMode)\n return;\n this.inMultiSelectMode = true;\n this.setStyle(\"ace_multiselect\");\n this.keyBinding.addKeyboardHandler(commands.keyboardHandler);\n this.commands.setDefaultHandler(\"exec\", this.$onMultiSelectExec);\n this.renderer.updateCursor();\n this.renderer.updateBackMarkers();\n };\n this.$onSingleSelect = function (e) {\n if (this.session.multiSelect.inVirtualMode)\n return;\n this.inMultiSelectMode = false;\n this.unsetStyle(\"ace_multiselect\");\n this.keyBinding.removeKeyboardHandler(commands.keyboardHandler);\n this.commands.removeDefaultHandler(\"exec\", this.$onMultiSelectExec);\n this.renderer.updateCursor();\n this.renderer.updateBackMarkers();\n this._emit(\"changeSelection\");\n };\n this.$onMultiSelectExec = function (e) {\n var command = e.command;\n var editor = e.editor;\n if (!editor.multiSelect)\n return;\n if (!command.multiSelectAction) {\n var result = command.exec(editor, e.args || {});\n editor.multiSelect.addRange(editor.multiSelect.toOrientedRange());\n editor.multiSelect.mergeOverlappingRanges();\n }\n else if (command.multiSelectAction == \"forEach\") {\n result = editor.forEachSelection(command, e.args);\n }\n else if (command.multiSelectAction == \"forEachLine\") {\n result = editor.forEachSelection(command, e.args, true);\n }\n else if (command.multiSelectAction == \"single\") {\n editor.exitMultiSelectMode();\n result = command.exec(editor, e.args || {});\n }\n else {\n result = command.multiSelectAction(editor, e.args || {});\n }\n return result;\n };\n this.forEachSelection = function (cmd, args, options) {\n if (this.inVirtualSelectionMode)\n return;\n var keepOrder = options && options.keepOrder;\n var $byLines = options == true || options && options.$byLines;\n var session = this.session;\n var selection = this.selection;\n var rangeList = selection.rangeList;\n var ranges = (keepOrder ? selection : rangeList).ranges;\n var result;\n if (!ranges.length)\n return cmd.exec ? cmd.exec(this, args || {}) : cmd(this, args || {});\n var reg = selection._eventRegistry;\n selection._eventRegistry = {};\n var tmpSel = new Selection(session);\n this.inVirtualSelectionMode = true;\n for (var i = ranges.length; i--;) {\n if ($byLines) {\n while (i > 0 && ranges[i].start.row == ranges[i - 1].end.row)\n i--;\n }\n tmpSel.fromOrientedRange(ranges[i]);\n tmpSel.index = i;\n this.selection = session.selection = tmpSel;\n var cmdResult = cmd.exec ? cmd.exec(this, args || {}) : cmd(this, args || {});\n if (!result && cmdResult !== undefined)\n result = cmdResult;\n tmpSel.toOrientedRange(ranges[i]);\n }\n tmpSel.detach();\n this.selection = session.selection = selection;\n this.inVirtualSelectionMode = false;\n selection._eventRegistry = reg;\n selection.mergeOverlappingRanges();\n if (selection.ranges[0])\n selection.fromOrientedRange(selection.ranges[0]);\n var anim = this.renderer.$scrollAnimation;\n this.onCursorChange();\n this.onSelectionChange();\n if (anim && anim.from == anim.to)\n this.renderer.animateScrolling(anim.from);\n return result;\n };\n this.exitMultiSelectMode = function () {\n if (!this.inMultiSelectMode || this.inVirtualSelectionMode)\n return;\n this.multiSelect.toSingleRange();\n };\n this.getSelectedText = function () {\n var text = \"\";\n if (this.inMultiSelectMode && !this.inVirtualSelectionMode) {\n var ranges = this.multiSelect.rangeList.ranges;\n var buf = [];\n for (var i = 0; i < ranges.length; i++) {\n buf.push(this.session.getTextRange(ranges[i]));\n }\n var nl = this.session.getDocument().getNewLineCharacter();\n text = buf.join(nl);\n if (text.length == (buf.length - 1) * nl.length)\n text = \"\";\n }\n else if (!this.selection.isEmpty()) {\n text = this.session.getTextRange(this.getSelectionRange());\n }\n return text;\n };\n this.$checkMultiselectChange = function (e, anchor) {\n if (this.inMultiSelectMode && !this.inVirtualSelectionMode) {\n var range = this.multiSelect.ranges[0];\n if (this.multiSelect.isEmpty() && anchor == this.multiSelect.anchor)\n return;\n var pos = anchor == this.multiSelect.anchor\n ? range.cursor == range.start ? range.end : range.start\n : range.cursor;\n if (pos.row != anchor.row\n || this.session.$clipPositionToDocument(pos.row, pos.column).column != anchor.column)\n this.multiSelect.toSingleRange(this.multiSelect.toOrientedRange());\n else\n this.multiSelect.mergeOverlappingRanges();\n }\n };\n this.findAll = function (needle, options, additive) {\n options = options || {};\n options.needle = needle || options.needle;\n if (options.needle == undefined) {\n var range = this.selection.isEmpty()\n ? this.selection.getWordRange()\n : this.selection.getRange();\n options.needle = this.session.getTextRange(range);\n }\n this.$search.set(options);\n var ranges = this.$search.findAll(this.session);\n if (!ranges.length)\n return 0;\n var selection = this.multiSelect;\n if (!additive)\n selection.toSingleRange(ranges[0]);\n for (var i = ranges.length; i--;)\n selection.addRange(ranges[i], true);\n if (range && selection.rangeList.rangeAtPoint(range.start))\n selection.addRange(range, true);\n return ranges.length;\n };\n this.selectMoreLines = function (dir, skip) {\n var range = this.selection.toOrientedRange();\n var isBackwards = range.cursor == range.end;\n var screenLead = this.session.documentToScreenPosition(range.cursor);\n if (this.selection.$desiredColumn)\n screenLead.column = this.selection.$desiredColumn;\n var lead = this.session.screenToDocumentPosition(screenLead.row + dir, screenLead.column);\n if (!range.isEmpty()) {\n var screenAnchor = this.session.documentToScreenPosition(isBackwards ? range.end : range.start);\n var anchor = this.session.screenToDocumentPosition(screenAnchor.row + dir, screenAnchor.column);\n }\n else {\n var anchor = lead;\n }\n if (isBackwards) {\n var newRange = Range.fromPoints(lead, anchor);\n newRange.cursor = newRange.start;\n }\n else {\n var newRange = Range.fromPoints(anchor, lead);\n newRange.cursor = newRange.end;\n }\n newRange.desiredColumn = screenLead.column;\n if (!this.selection.inMultiSelectMode) {\n this.selection.addRange(range);\n }\n else {\n if (skip)\n var toRemove = range.cursor;\n }\n this.selection.addRange(newRange);\n if (toRemove)\n this.selection.substractPoint(toRemove);\n };\n this.transposeSelections = function (dir) {\n var session = this.session;\n var sel = session.multiSelect;\n var all = sel.ranges;\n for (var i = all.length; i--;) {\n var range = all[i];\n if (range.isEmpty()) {\n var tmp = session.getWordRange(range.start.row, range.start.column);\n range.start.row = tmp.start.row;\n range.start.column = tmp.start.column;\n range.end.row = tmp.end.row;\n range.end.column = tmp.end.column;\n }\n }\n sel.mergeOverlappingRanges();\n var words = [];\n for (var i = all.length; i--;) {\n var range = all[i];\n words.unshift(session.getTextRange(range));\n }\n if (dir < 0)\n words.unshift(words.pop());\n else\n words.push(words.shift());\n for (var i = all.length; i--;) {\n var range = all[i];\n var tmp = range.clone();\n session.replace(range, words[i]);\n range.start.row = tmp.start.row;\n range.start.column = tmp.start.column;\n }\n sel.fromOrientedRange(sel.ranges[0]);\n };\n this.selectMore = function (dir, skip, stopAtFirst) {\n var session = this.session;\n var sel = session.multiSelect;\n var range = sel.toOrientedRange();\n if (range.isEmpty()) {\n range = session.getWordRange(range.start.row, range.start.column);\n range.cursor = dir == -1 ? range.start : range.end;\n this.multiSelect.addRange(range);\n if (stopAtFirst)\n return;\n }\n var needle = session.getTextRange(range);\n var newRange = find(session, needle, dir);\n if (newRange) {\n newRange.cursor = dir == -1 ? newRange.start : newRange.end;\n this.session.unfold(newRange);\n this.multiSelect.addRange(newRange);\n this.renderer.scrollCursorIntoView(null, 0.5);\n }\n if (skip)\n this.multiSelect.substractPoint(range.cursor);\n };\n this.alignCursors = function () {\n var session = this.session;\n var sel = session.multiSelect;\n var ranges = sel.ranges;\n var row = -1;\n var sameRowRanges = ranges.filter(function (r) {\n if (r.cursor.row == row)\n return true;\n row = r.cursor.row;\n });\n if (!ranges.length || sameRowRanges.length == ranges.length - 1) {\n var range = this.selection.getRange();\n var fr = range.start.row, lr = range.end.row;\n var guessRange = fr == lr;\n if (guessRange) {\n var max = this.session.getLength();\n var line;\n do {\n line = this.session.getLine(lr);\n } while (/[=:]/.test(line) && ++lr < max);\n do {\n line = this.session.getLine(fr);\n } while (/[=:]/.test(line) && --fr > 0);\n if (fr < 0)\n fr = 0;\n if (lr >= max)\n lr = max - 1;\n }\n var lines = this.session.removeFullLines(fr, lr);\n lines = this.$reAlignText(lines, guessRange);\n this.session.insert({ row: fr, column: 0 }, lines.join(\"\\n\") + \"\\n\");\n if (!guessRange) {\n range.start.column = 0;\n range.end.column = lines[lines.length - 1].length;\n }\n this.selection.setRange(range);\n }\n else {\n sameRowRanges.forEach(function (r) {\n sel.substractPoint(r.cursor);\n });\n var maxCol = 0;\n var minSpace = Infinity;\n var spaceOffsets = ranges.map(function (r) {\n var p = r.cursor;\n var line = session.getLine(p.row);\n var spaceOffset = line.substr(p.column).search(/\\S/g);\n if (spaceOffset == -1)\n spaceOffset = 0;\n if (p.column > maxCol)\n maxCol = p.column;\n if (spaceOffset < minSpace)\n minSpace = spaceOffset;\n return spaceOffset;\n });\n ranges.forEach(function (r, i) {\n var p = r.cursor;\n var l = maxCol - p.column;\n var d = spaceOffsets[i] - minSpace;\n if (l > d)\n session.insert(p, lang.stringRepeat(\" \", l - d));\n else\n session.remove(new Range(p.row, p.column, p.row, p.column - l + d));\n r.start.column = r.end.column = maxCol;\n r.start.row = r.end.row = p.row;\n r.cursor = r.end;\n });\n sel.fromOrientedRange(ranges[0]);\n this.renderer.updateCursor();\n this.renderer.updateBackMarkers();\n }\n };\n this.$reAlignText = function (lines, forceLeft) {\n var isLeftAligned = true, isRightAligned = true;\n var startW, textW, endW;\n return lines.map(function (line) {\n var m = line.match(/(\\s*)(.*?)(\\s*)([=:].*)/);\n if (!m)\n return [line];\n if (startW == null) {\n startW = m[1].length;\n textW = m[2].length;\n endW = m[3].length;\n return m;\n }\n if (startW + textW + endW != m[1].length + m[2].length + m[3].length)\n isRightAligned = false;\n if (startW != m[1].length)\n isLeftAligned = false;\n if (startW > m[1].length)\n startW = m[1].length;\n if (textW < m[2].length)\n textW = m[2].length;\n if (endW > m[3].length)\n endW = m[3].length;\n return m;\n }).map(forceLeft ? alignLeft :\n isLeftAligned ? isRightAligned ? alignRight : alignLeft : unAlign);\n function spaces(n) {\n return lang.stringRepeat(\" \", n);\n }\n function alignLeft(m) {\n return !m[2] ? m[0] : spaces(startW) + m[2]\n + spaces(textW - m[2].length + endW)\n + m[4].replace(/^([=:])\\s+/, \"$1 \");\n }\n function alignRight(m) {\n return !m[2] ? m[0] : spaces(startW + textW - m[2].length) + m[2]\n + spaces(endW)\n + m[4].replace(/^([=:])\\s+/, \"$1 \");\n }\n function unAlign(m) {\n return !m[2] ? m[0] : spaces(startW) + m[2]\n + spaces(endW)\n + m[4].replace(/^([=:])\\s+/, \"$1 \");\n }\n };\n}).call(Editor.prototype);\nfunction isSamePoint(p1, p2) {\n return p1.row == p2.row && p1.column == p2.column;\n}\nexports.onSessionChange = function (e) {\n var session = e.session;\n if (session && !session.multiSelect) {\n session.$selectionMarkers = [];\n session.selection.$initRangeList();\n session.multiSelect = session.selection;\n }\n this.multiSelect = session && session.multiSelect;\n var oldSession = e.oldSession;\n if (oldSession) {\n oldSession.multiSelect.off(\"addRange\", this.$onAddRange);\n oldSession.multiSelect.off(\"removeRange\", this.$onRemoveRange);\n oldSession.multiSelect.off(\"multiSelect\", this.$onMultiSelect);\n oldSession.multiSelect.off(\"singleSelect\", this.$onSingleSelect);\n oldSession.multiSelect.lead.off(\"change\", this.$checkMultiselectChange);\n oldSession.multiSelect.anchor.off(\"change\", this.$checkMultiselectChange);\n }\n if (session) {\n session.multiSelect.on(\"addRange\", this.$onAddRange);\n session.multiSelect.on(\"removeRange\", this.$onRemoveRange);\n session.multiSelect.on(\"multiSelect\", this.$onMultiSelect);\n session.multiSelect.on(\"singleSelect\", this.$onSingleSelect);\n session.multiSelect.lead.on(\"change\", this.$checkMultiselectChange);\n session.multiSelect.anchor.on(\"change\", this.$checkMultiselectChange);\n }\n if (session && this.inMultiSelectMode != session.selection.inMultiSelectMode) {\n if (session.selection.inMultiSelectMode)\n this.$onMultiSelect();\n else\n this.$onSingleSelect();\n }\n};\nfunction MultiSelect(editor) {\n if (editor.$multiselectOnSessionChange)\n return;\n editor.$onAddRange = editor.$onAddRange.bind(editor);\n editor.$onRemoveRange = editor.$onRemoveRange.bind(editor);\n editor.$onMultiSelect = editor.$onMultiSelect.bind(editor);\n editor.$onSingleSelect = editor.$onSingleSelect.bind(editor);\n editor.$multiselectOnSessionChange = exports.onSessionChange.bind(editor);\n editor.$checkMultiselectChange = editor.$checkMultiselectChange.bind(editor);\n editor.$multiselectOnSessionChange(editor);\n editor.on(\"changeSession\", editor.$multiselectOnSessionChange);\n editor.on(\"mousedown\", onMouseDown);\n editor.commands.addCommands(commands.defaultCommands);\n addAltCursorListeners(editor);\n}\nfunction addAltCursorListeners(editor) {\n if (!editor.textInput)\n return;\n var el = editor.textInput.getElement();\n var altCursor = false;\n event.addListener(el, \"keydown\", function (e) {\n var altDown = e.keyCode == 18 && !(e.ctrlKey || e.shiftKey || e.metaKey);\n if (editor.$blockSelectEnabled && altDown) {\n if (!altCursor) {\n editor.renderer.setMouseCursor(\"crosshair\");\n altCursor = true;\n }\n }\n else if (altCursor) {\n reset();\n }\n }, editor);\n event.addListener(el, \"keyup\", reset, editor);\n event.addListener(el, \"blur\", reset, editor);\n function reset(e) {\n if (altCursor) {\n editor.renderer.setMouseCursor(\"\");\n altCursor = false;\n }\n }\n}\nexports.MultiSelect = MultiSelect;\nrequire(\"./config\").defineOptions(Editor.prototype, \"editor\", {\n enableMultiselect: {\n set: function (val) {\n MultiSelect(this);\n if (val) {\n this.on(\"mousedown\", onMouseDown);\n }\n else {\n this.off(\"mousedown\", onMouseDown);\n }\n },\n value: true\n },\n enableBlockSelect: {\n set: function (val) {\n this.$blockSelectEnabled = val;\n },\n value: true\n }\n});\n\n});\n\nace.define(\"ace/mode/folding/fold_mode\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar Range = require(\"../../range\").Range;\nvar FoldMode = exports.FoldMode = function () { };\n(function () {\n this.foldingStartMarker = null;\n this.foldingStopMarker = null;\n this.getFoldWidget = function (session, foldStyle, row) {\n var line = session.getLine(row);\n if (this.foldingStartMarker.test(line))\n return \"start\";\n if (foldStyle == \"markbeginend\"\n && this.foldingStopMarker\n && this.foldingStopMarker.test(line))\n return \"end\";\n return \"\";\n };\n this.getFoldWidgetRange = function (session, foldStyle, row) {\n return null;\n };\n this.indentationBlock = function (session, row, column) {\n var re = /\\S/;\n var line = session.getLine(row);\n var startLevel = line.search(re);\n if (startLevel == -1)\n return;\n var startColumn = column || line.length;\n var maxRow = session.getLength();\n var startRow = row;\n var endRow = row;\n while (++row < maxRow) {\n var level = session.getLine(row).search(re);\n if (level == -1)\n continue;\n if (level <= startLevel) {\n var token = session.getTokenAt(row, 0);\n if (!token || token.type !== \"string\")\n break;\n }\n endRow = row;\n }\n if (endRow > startRow) {\n var endColumn = session.getLine(endRow).length;\n return new Range(startRow, startColumn, endRow, endColumn);\n }\n };\n this.openingBracketBlock = function (session, bracket, row, column, typeRe) {\n var start = { row: row, column: column + 1 };\n var end = session.$findClosingBracket(bracket, start, typeRe);\n if (!end)\n return;\n var fw = session.foldWidgets[end.row];\n if (fw == null)\n fw = session.getFoldWidget(end.row);\n if (fw == \"start\" && end.row > start.row) {\n end.row--;\n end.column = session.getLine(end.row).length;\n }\n return Range.fromPoints(start, end);\n };\n this.closingBracketBlock = function (session, bracket, row, column, typeRe) {\n var end = { row: row, column: column };\n var start = session.$findOpeningBracket(bracket, end);\n if (!start)\n return;\n start.column++;\n end.column--;\n return Range.fromPoints(start, end);\n };\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/ext/error_marker\",[\"require\",\"exports\",\"module\",\"ace/line_widgets\",\"ace/lib/dom\",\"ace/range\",\"ace/config\"], function(require, exports, module){\"use strict\";\nvar LineWidgets = require(\"../line_widgets\").LineWidgets;\nvar dom = require(\"../lib/dom\");\nvar Range = require(\"../range\").Range;\nvar nls = require(\"../config\").nls;\nfunction binarySearch(array, needle, comparator) {\n var first = 0;\n var last = array.length - 1;\n while (first <= last) {\n var mid = (first + last) >> 1;\n var c = comparator(needle, array[mid]);\n if (c > 0)\n first = mid + 1;\n else if (c < 0)\n last = mid - 1;\n else\n return mid;\n }\n return -(first + 1);\n}\nfunction findAnnotations(session, row, dir) {\n var annotations = session.getAnnotations().sort(Range.comparePoints);\n if (!annotations.length)\n return;\n var i = binarySearch(annotations, { row: row, column: -1 }, Range.comparePoints);\n if (i < 0)\n i = -i - 1;\n if (i >= annotations.length)\n i = dir > 0 ? 0 : annotations.length - 1;\n else if (i === 0 && dir < 0)\n i = annotations.length - 1;\n var annotation = annotations[i];\n if (!annotation || !dir)\n return;\n if (annotation.row === row) {\n do {\n annotation = annotations[i += dir];\n } while (annotation && annotation.row === row);\n if (!annotation)\n return annotations.slice();\n }\n var matched = [];\n row = annotation.row;\n do {\n matched[dir < 0 ? \"unshift\" : \"push\"](annotation);\n annotation = annotations[i += dir];\n } while (annotation && annotation.row == row);\n return matched.length && matched;\n}\nexports.showErrorMarker = function (editor, dir) {\n var session = editor.session;\n if (!session.widgetManager) {\n session.widgetManager = new LineWidgets(session);\n session.widgetManager.attach(editor);\n }\n var pos = editor.getCursorPosition();\n var row = pos.row;\n var oldWidget = session.widgetManager.getWidgetsAtRow(row).filter(function (w) {\n return w.type == \"errorMarker\";\n })[0];\n if (oldWidget) {\n oldWidget.destroy();\n }\n else {\n row -= dir;\n }\n var annotations = findAnnotations(session, row, dir);\n var gutterAnno;\n if (annotations) {\n var annotation = annotations[0];\n pos.column = (annotation.pos && typeof annotation.column != \"number\"\n ? annotation.pos.sc\n : annotation.column) || 0;\n pos.row = annotation.row;\n gutterAnno = editor.renderer.$gutterLayer.$annotations[pos.row];\n }\n else if (oldWidget) {\n return;\n }\n else {\n gutterAnno = {\n text: [nls(\"Looks good!\")],\n className: \"ace_ok\"\n };\n }\n editor.session.unfold(pos.row);\n editor.selection.moveToPosition(pos);\n var w = {\n row: pos.row,\n fixedWidth: true,\n coverGutter: true,\n el: dom.createElement(\"div\"),\n type: \"errorMarker\"\n };\n var el = w.el.appendChild(dom.createElement(\"div\"));\n var arrow = w.el.appendChild(dom.createElement(\"div\"));\n arrow.className = \"error_widget_arrow \" + gutterAnno.className;\n var left = editor.renderer.$cursorLayer\n .getPixelPosition(pos).left;\n arrow.style.left = left + editor.renderer.gutterWidth - 5 + \"px\";\n w.el.className = \"error_widget_wrapper\";\n el.className = \"error_widget \" + gutterAnno.className;\n el.innerHTML = gutterAnno.text.join(\"
    \");\n el.appendChild(dom.createElement(\"div\"));\n var kb = function (_, hashId, keyString) {\n if (hashId === 0 && (keyString === \"esc\" || keyString === \"return\")) {\n w.destroy();\n return { command: \"null\" };\n }\n };\n w.destroy = function () {\n if (editor.$mouseHandler.isMousePressed)\n return;\n editor.keyBinding.removeKeyboardHandler(kb);\n session.widgetManager.removeLineWidget(w);\n editor.off(\"changeSelection\", w.destroy);\n editor.off(\"changeSession\", w.destroy);\n editor.off(\"mouseup\", w.destroy);\n editor.off(\"change\", w.destroy);\n };\n editor.keyBinding.addKeyboardHandler(kb);\n editor.on(\"changeSelection\", w.destroy);\n editor.on(\"changeSession\", w.destroy);\n editor.on(\"mouseup\", w.destroy);\n editor.on(\"change\", w.destroy);\n editor.session.widgetManager.addLineWidget(w);\n w.el.onmousedown = editor.focus.bind(editor);\n editor.renderer.scrollCursorIntoView(null, 0.5, { bottom: w.el.offsetHeight });\n};\ndom.importCssString(\"\\n .error_widget_wrapper {\\n background: inherit;\\n color: inherit;\\n border:none\\n }\\n .error_widget {\\n border-top: solid 2px;\\n border-bottom: solid 2px;\\n margin: 5px 0;\\n padding: 10px 40px;\\n white-space: pre-wrap;\\n }\\n .error_widget.ace_error, .error_widget_arrow.ace_error{\\n border-color: #ff5a5a\\n }\\n .error_widget.ace_warning, .error_widget_arrow.ace_warning{\\n border-color: #F1D817\\n }\\n .error_widget.ace_info, .error_widget_arrow.ace_info{\\n border-color: #5a5a5a\\n }\\n .error_widget.ace_ok, .error_widget_arrow.ace_ok{\\n border-color: #5aaa5a\\n }\\n .error_widget_arrow {\\n position: absolute;\\n border: solid 5px;\\n border-top-color: transparent!important;\\n border-right-color: transparent!important;\\n border-left-color: transparent!important;\\n top: -5px;\\n }\\n\", \"error_marker.css\", false);\n\n});\n\nace.define(\"ace/ace\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\",\"ace/range\",\"ace/editor\",\"ace/edit_session\",\"ace/undomanager\",\"ace/virtual_renderer\",\"ace/worker/worker_client\",\"ace/keyboard/hash_handler\",\"ace/placeholder\",\"ace/multi_select\",\"ace/mode/folding/fold_mode\",\"ace/theme/textmate\",\"ace/ext/error_marker\",\"ace/config\",\"ace/loader_build\"], function(require, exports, module){/**\n * The main class required to set up an Ace instance in the browser.\n *\n * @class Ace\n **/\n\"use strict\";\nrequire(\"./loader_build\")(exports)\nvar dom = require(\"./lib/dom\");\nvar Range = require(\"./range\").Range;\nvar Editor = require(\"./editor\").Editor;\nvar EditSession = require(\"./edit_session\").EditSession;\nvar UndoManager = require(\"./undomanager\").UndoManager;\nvar Renderer = require(\"./virtual_renderer\").VirtualRenderer;\nrequire(\"./worker/worker_client\");\nrequire(\"./keyboard/hash_handler\");\nrequire(\"./placeholder\");\nrequire(\"./multi_select\");\nrequire(\"./mode/folding/fold_mode\");\nrequire(\"./theme/textmate\");\nrequire(\"./ext/error_marker\");\nexports.config = require(\"./config\");\nexports.edit = function (el, options) {\n if (typeof el == \"string\") {\n var _id = el;\n el = document.getElementById(_id);\n if (!el)\n throw new Error(\"ace.edit can't find div #\" + _id);\n }\n if (el && el.env && el.env.editor instanceof Editor)\n return el.env.editor;\n var value = \"\";\n if (el && /input|textarea/i.test(el.tagName)) {\n var oldNode = el;\n value = oldNode.value;\n el = dom.createElement(\"pre\");\n oldNode.parentNode.replaceChild(el, oldNode);\n }\n else if (el) {\n value = el.textContent;\n el.innerHTML = \"\";\n }\n var doc = exports.createEditSession(value);\n var editor = new Editor(new Renderer(el), doc, options);\n var env = {\n document: doc,\n editor: editor,\n onResize: editor.resize.bind(editor, null)\n };\n if (oldNode)\n env.textarea = oldNode;\n editor.on(\"destroy\", function () {\n env.editor.container.env = null; // prevent memory leak on old ie\n });\n editor.container.env = editor.env = env;\n return editor;\n};\nexports.createEditSession = function (text, mode) {\n var doc = new EditSession(text, mode);\n doc.setUndoManager(new UndoManager());\n return doc;\n};\nexports.Range = Range;\nexports.Editor = Editor;\nexports.EditSession = EditSession;\nexports.UndoManager = UndoManager;\nexports.VirtualRenderer = Renderer;\nexports.version = exports.config.version;\n\n}); (function() {\n ace.require([\"ace/ace\"], function(a) {\n if (a) {\n a.config.init(true);\n a.define = ace.define;\n }\n var global = (function () {\n return this;\n })();\n if (!global && typeof window != \"undefined\") global = window; // can happen in strict mode\n if (!global && typeof self != \"undefined\") global = self; // can happen in webworker\n \n if (!global.ace)\n global.ace = a;\n for (var key in a) if (a.hasOwnProperty(key))\n global.ace[key] = a[key];\n global.ace[\"default\"] = global.ace;\n if (typeof module == \"object\" && typeof exports == \"object\" && module) {\n module.exports = global.ace;\n }\n });\n })();\n ","ace.define(\"ace/ext/beautify\",[\"require\",\"exports\",\"module\",\"ace/token_iterator\"], function(require, exports, module){// [WIP]\n\"use strict\";\nvar TokenIterator = require(\"../token_iterator\").TokenIterator;\nfunction is(token, type) {\n return token.type.lastIndexOf(type + \".xml\") > -1;\n}\nexports.singletonTags = [\"area\", \"base\", \"br\", \"col\", \"command\", \"embed\", \"hr\", \"html\", \"img\", \"input\", \"keygen\", \"link\", \"meta\", \"param\", \"source\", \"track\", \"wbr\"];\nexports.blockTags = [\"article\", \"aside\", \"blockquote\", \"body\", \"div\", \"dl\", \"fieldset\", \"footer\", \"form\", \"head\", \"header\", \"html\", \"nav\", \"ol\", \"p\", \"script\", \"section\", \"style\", \"table\", \"tbody\", \"tfoot\", \"thead\", \"ul\"];\nexports.formatOptions = {\n lineBreaksAfterCommasInCurlyBlock: true\n};\nexports.beautify = function (session) {\n var iterator = new TokenIterator(session, 0, 0);\n var token = iterator.getCurrentToken();\n var tabString = session.getTabString();\n var singletonTags = exports.singletonTags;\n var blockTags = exports.blockTags;\n var formatOptions = exports.formatOptions || {};\n var nextToken;\n var breakBefore = false;\n var spaceBefore = false;\n var spaceAfter = false;\n var code = \"\";\n var value = \"\";\n var tagName = \"\";\n var depth = 0;\n var lastDepth = 0;\n var lastIndent = 0;\n var indent = 0;\n var unindent = 0;\n var roundDepth = 0;\n var curlyDepth = 0;\n var row;\n var curRow = 0;\n var rowsToAdd = 0;\n var rowTokens = [];\n var abort = false;\n var i;\n var indentNextLine = false;\n var inTag = false;\n var inCSS = false;\n var inBlock = false;\n var levels = { 0: 0 };\n var parents = [];\n var caseBody = false;\n var trimNext = function () {\n if (nextToken && nextToken.value && nextToken.type !== 'string.regexp')\n nextToken.value = nextToken.value.replace(/^\\s*/, \"\");\n };\n var trimLine = function () {\n var end = code.length - 1;\n while (true) {\n if (end == 0)\n break;\n if (code[end] !== \" \")\n break;\n end = end - 1;\n }\n code = code.slice(0, end + 1);\n };\n var trimCode = function () {\n code = code.trimRight();\n breakBefore = false;\n };\n while (token !== null) {\n curRow = iterator.getCurrentTokenRow();\n rowTokens = iterator.$rowTokens;\n nextToken = iterator.stepForward();\n if (typeof token !== \"undefined\") {\n value = token.value;\n unindent = 0;\n inCSS = (tagName === \"style\" || session.$modeId === \"ace/mode/css\");\n if (is(token, \"tag-open\")) {\n inTag = true;\n if (nextToken)\n inBlock = (blockTags.indexOf(nextToken.value) !== -1);\n if (value === \" 0; rowsToAdd--)\n code += \"\\n\";\n breakBefore = true;\n if (!is(token, \"comment\") && !token.type.match(/^(comment|string)$/))\n value = value.trimLeft();\n }\n if (value) {\n if (token.type === \"keyword\" && value.match(/^(if|else|elseif|for|foreach|while|switch)$/)) {\n parents[depth] = value;\n trimNext();\n spaceAfter = true;\n if (value.match(/^(else|elseif)$/)) {\n if (code.match(/\\}[\\s]*$/)) {\n trimCode();\n spaceBefore = true;\n }\n }\n }\n else if (token.type === \"paren.lparen\") {\n trimNext();\n if (value.substr(-1) === \"{\") {\n spaceAfter = true;\n indentNextLine = false;\n if (!inTag)\n rowsToAdd = 1;\n }\n if (value.substr(0, 1) === \"{\") {\n spaceBefore = true;\n if (code.substr(-1) !== '[' && code.trimRight().substr(-1) === '[') {\n trimCode();\n spaceBefore = false;\n }\n else if (code.trimRight().substr(-1) === ')') {\n trimCode();\n }\n else {\n trimLine();\n }\n }\n }\n else if (token.type === \"paren.rparen\") {\n unindent = 1;\n if (value.substr(0, 1) === \"}\") {\n if (parents[depth - 1] === 'case')\n unindent++;\n if (code.trimRight().substr(-1) === '{') {\n trimCode();\n }\n else {\n spaceBefore = true;\n if (inCSS)\n rowsToAdd += 2;\n }\n }\n if (value.substr(0, 1) === \"]\") {\n if (code.substr(-1) !== '}' && code.trimRight().substr(-1) === '}') {\n spaceBefore = false;\n indent++;\n trimCode();\n }\n }\n if (value.substr(0, 1) === \")\") {\n if (code.substr(-1) !== '(' && code.trimRight().substr(-1) === '(') {\n spaceBefore = false;\n indent++;\n trimCode();\n }\n }\n trimLine();\n }\n else if ((token.type === \"keyword.operator\" || token.type === \"keyword\") && value.match(/^(=|==|===|!=|!==|&&|\\|\\||and|or|xor|\\+=|.=|>|>=|<|<=|=>)$/)) {\n trimCode();\n trimNext();\n spaceBefore = true;\n spaceAfter = true;\n }\n else if (token.type === \"punctuation.operator\" && value === ';') {\n trimCode();\n trimNext();\n spaceAfter = true;\n if (inCSS)\n rowsToAdd++;\n }\n else if (token.type === \"punctuation.operator\" && value.match(/^(:|,)$/)) {\n trimCode();\n trimNext();\n if (value.match(/^(,)$/) && curlyDepth > 0 && roundDepth === 0 && formatOptions.lineBreaksAfterCommasInCurlyBlock) {\n rowsToAdd++;\n }\n else {\n spaceAfter = true;\n breakBefore = false;\n }\n }\n else if (token.type === \"support.php_tag\" && value === \"?>\" && !breakBefore) {\n trimCode();\n spaceBefore = true;\n }\n else if (is(token, \"attribute-name\") && code.substr(-1).match(/^\\s$/)) {\n spaceBefore = true;\n }\n else if (is(token, \"attribute-equals\")) {\n trimLine();\n trimNext();\n }\n else if (is(token, \"tag-close\")) {\n trimLine();\n if (value === \"/>\")\n spaceBefore = true;\n }\n else if (token.type === \"keyword\" && value.match(/^(case|default)$/)) {\n if (caseBody)\n unindent = 1;\n }\n if (breakBefore && !(token.type.match(/^(comment)$/) && !value.substr(0, 1).match(/^[/#]$/)) && !(token.type.match(/^(string)$/) && !value.substr(0, 1).match(/^['\"@]$/))) {\n indent = lastIndent;\n if (depth > lastDepth) {\n indent++;\n for (i = depth; i > lastDepth; i--)\n levels[i] = indent;\n }\n else if (depth < lastDepth)\n indent = levels[depth];\n lastDepth = depth;\n lastIndent = indent;\n if (unindent)\n indent -= unindent;\n if (indentNextLine && !roundDepth) {\n indent++;\n indentNextLine = false;\n }\n for (i = 0; i < indent; i++)\n code += tabString;\n }\n if (token.type === \"keyword\" && value.match(/^(case|default)$/)) {\n if (caseBody === false) {\n parents[depth] = value;\n depth++;\n caseBody = true;\n }\n }\n else if (token.type === \"keyword\" && value.match(/^(break)$/)) {\n if (parents[depth - 1] && parents[depth - 1].match(/^(case|default)$/)) {\n depth--;\n caseBody = false;\n }\n }\n if (token.type === \"paren.lparen\") {\n roundDepth += (value.match(/\\(/g) || []).length;\n curlyDepth += (value.match(/\\{/g) || []).length;\n depth += value.length;\n }\n if (token.type === \"keyword\" && value.match(/^(if|else|elseif|for|while)$/)) {\n indentNextLine = true;\n roundDepth = 0;\n }\n else if (!roundDepth && value.trim() && token.type !== \"comment\")\n indentNextLine = false;\n if (token.type === \"paren.rparen\") {\n roundDepth -= (value.match(/\\)/g) || []).length;\n curlyDepth -= (value.match(/\\}/g) || []).length;\n for (i = 0; i < value.length; i++) {\n depth--;\n if (value.substr(i, 1) === '}' && parents[depth] === 'case') {\n depth--;\n }\n }\n }\n if (token.type == \"text\")\n value = value.replace(/\\s+$/, \" \");\n if (spaceBefore && !breakBefore) {\n trimLine();\n if (code.substr(-1) !== \"\\n\")\n code += \" \";\n }\n code += value;\n if (spaceAfter)\n code += \" \";\n breakBefore = false;\n spaceBefore = false;\n spaceAfter = false;\n if ((is(token, \"tag-close\") && (inBlock || blockTags.indexOf(tagName) !== -1)) || (is(token, \"doctype\") && value === \">\")) {\n if (inBlock && nextToken && nextToken.value === \"\") {\n depth--;\n }\n }\n if (is(token, \"tag-name\")) {\n tagName = value;\n }\n row = curRow;\n }\n }\n token = nextToken;\n }\n code = code.trim();\n session.doc.setValue(code);\n};\nexports.commands = [{\n name: \"beautify\",\n description: \"Format selection (Beautify)\",\n exec: function (editor) {\n exports.beautify(editor.session);\n },\n bindKey: \"Ctrl-Shift-B\"\n }];\n\n}); (function() {\n ace.require([\"ace/ext/beautify\"], function(m) {\n if (typeof module == \"object\" && typeof exports == \"object\" && module) {\n module.exports = m;\n }\n });\n })();\n ","ace.define(\"ace/ext/searchbox-css\",[\"require\",\"exports\",\"module\"], function(require, exports, module){module.exports = \"\\n\\n/* ------------------------------------------------------------------------------------------\\n * Editor Search Form\\n * --------------------------------------------------------------------------------------- */\\n.ace_search {\\n background-color: #ddd;\\n color: #666;\\n border: 1px solid #cbcbcb;\\n border-top: 0 none;\\n overflow: hidden;\\n margin: 0;\\n padding: 4px 6px 0 4px;\\n position: absolute;\\n top: 0;\\n z-index: 99;\\n white-space: normal;\\n}\\n.ace_search.left {\\n border-left: 0 none;\\n border-radius: 0px 0px 5px 0px;\\n left: 0;\\n}\\n.ace_search.right {\\n border-radius: 0px 0px 0px 5px;\\n border-right: 0 none;\\n right: 0;\\n}\\n\\n.ace_search_form, .ace_replace_form {\\n margin: 0 20px 4px 0;\\n overflow: hidden;\\n line-height: 1.9;\\n}\\n.ace_replace_form {\\n margin-right: 0;\\n}\\n.ace_search_form.ace_nomatch {\\n outline: 1px solid red;\\n}\\n\\n.ace_search_field {\\n border-radius: 3px 0 0 3px;\\n background-color: white;\\n color: black;\\n border: 1px solid #cbcbcb;\\n border-right: 0 none;\\n outline: 0;\\n padding: 0;\\n font-size: inherit;\\n margin: 0;\\n line-height: inherit;\\n padding: 0 6px;\\n min-width: 17em;\\n vertical-align: top;\\n min-height: 1.8em;\\n box-sizing: content-box;\\n}\\n.ace_searchbtn {\\n border: 1px solid #cbcbcb;\\n line-height: inherit;\\n display: inline-block;\\n padding: 0 6px;\\n background: #fff;\\n border-right: 0 none;\\n border-left: 1px solid #dcdcdc;\\n cursor: pointer;\\n margin: 0;\\n position: relative;\\n color: #666;\\n}\\n.ace_searchbtn:last-child {\\n border-radius: 0 3px 3px 0;\\n border-right: 1px solid #cbcbcb;\\n}\\n.ace_searchbtn:disabled {\\n background: none;\\n cursor: default;\\n}\\n.ace_searchbtn:hover {\\n background-color: #eef1f6;\\n}\\n.ace_searchbtn.prev, .ace_searchbtn.next {\\n padding: 0px 0.7em\\n}\\n.ace_searchbtn.prev:after, .ace_searchbtn.next:after {\\n content: \\\"\\\";\\n border: solid 2px #888;\\n width: 0.5em;\\n height: 0.5em;\\n border-width: 2px 0 0 2px;\\n display:inline-block;\\n transform: rotate(-45deg);\\n}\\n.ace_searchbtn.next:after {\\n border-width: 0 2px 2px 0 ;\\n}\\n.ace_searchbtn_close {\\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAcCAYAAABRVo5BAAAAZ0lEQVR42u2SUQrAMAhDvazn8OjZBilCkYVVxiis8H4CT0VrAJb4WHT3C5xU2a2IQZXJjiQIRMdkEoJ5Q2yMqpfDIo+XY4k6h+YXOyKqTIj5REaxloNAd0xiKmAtsTHqW8sR2W5f7gCu5nWFUpVjZwAAAABJRU5ErkJggg==) no-repeat 50% 0;\\n border-radius: 50%;\\n border: 0 none;\\n color: #656565;\\n cursor: pointer;\\n font: 16px/16px Arial;\\n padding: 0;\\n height: 14px;\\n width: 14px;\\n top: 9px;\\n right: 7px;\\n position: absolute;\\n}\\n.ace_searchbtn_close:hover {\\n background-color: #656565;\\n background-position: 50% 100%;\\n color: white;\\n}\\n\\n.ace_button {\\n margin-left: 2px;\\n cursor: pointer;\\n -webkit-user-select: none;\\n -moz-user-select: none;\\n -o-user-select: none;\\n -ms-user-select: none;\\n user-select: none;\\n overflow: hidden;\\n opacity: 0.7;\\n border: 1px solid rgba(100,100,100,0.23);\\n padding: 1px;\\n box-sizing: border-box!important;\\n color: black;\\n}\\n\\n.ace_button:hover {\\n background-color: #eee;\\n opacity:1;\\n}\\n.ace_button:active {\\n background-color: #ddd;\\n}\\n\\n.ace_button.checked {\\n border-color: #3399ff;\\n opacity:1;\\n}\\n\\n.ace_search_options{\\n margin-bottom: 3px;\\n text-align: right;\\n -webkit-user-select: none;\\n -moz-user-select: none;\\n -o-user-select: none;\\n -ms-user-select: none;\\n user-select: none;\\n clear: both;\\n}\\n\\n.ace_search_counter {\\n float: left;\\n font-family: arial;\\n padding: 0 8px;\\n}\";\n\n});\n\nace.define(\"ace/ext/searchbox\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\",\"ace/lib/lang\",\"ace/lib/event\",\"ace/ext/searchbox-css\",\"ace/keyboard/hash_handler\",\"ace/lib/keys\",\"ace/config\"], function(require, exports, module){\"use strict\";\nvar dom = require(\"../lib/dom\");\nvar lang = require(\"../lib/lang\");\nvar event = require(\"../lib/event\");\nvar searchboxCss = require(\"./searchbox-css\");\nvar HashHandler = require(\"../keyboard/hash_handler\").HashHandler;\nvar keyUtil = require(\"../lib/keys\");\nvar nls = require(\"../config\").nls;\nvar MAX_COUNT = 999;\ndom.importCssString(searchboxCss, \"ace_searchbox\", false);\nvar SearchBox = /** @class */ (function () {\n function SearchBox(editor, range, showReplaceForm) {\n var div = dom.createElement(\"div\");\n dom.buildDom([\"div\", { class: \"ace_search right\" },\n [\"span\", { action: \"hide\", class: \"ace_searchbtn_close\" }],\n [\"div\", { class: \"ace_search_form\" },\n [\"input\", { class: \"ace_search_field\", placeholder: nls(\"Search for\"), spellcheck: \"false\" }],\n [\"span\", { action: \"findPrev\", class: \"ace_searchbtn prev\" }, \"\\u200b\"],\n [\"span\", { action: \"findNext\", class: \"ace_searchbtn next\" }, \"\\u200b\"],\n [\"span\", { action: \"findAll\", class: \"ace_searchbtn\", title: \"Alt-Enter\" }, nls(\"All\")]\n ],\n [\"div\", { class: \"ace_replace_form\" },\n [\"input\", { class: \"ace_search_field\", placeholder: nls(\"Replace with\"), spellcheck: \"false\" }],\n [\"span\", { action: \"replaceAndFindNext\", class: \"ace_searchbtn\" }, nls(\"Replace\")],\n [\"span\", { action: \"replaceAll\", class: \"ace_searchbtn\" }, nls(\"All\")]\n ],\n [\"div\", { class: \"ace_search_options\" },\n [\"span\", { action: \"toggleReplace\", class: \"ace_button\", title: nls(\"Toggle Replace mode\"),\n style: \"float:left;margin-top:-2px;padding:0 5px;\" }, \"+\"],\n [\"span\", { class: \"ace_search_counter\" }],\n [\"span\", { action: \"toggleRegexpMode\", class: \"ace_button\", title: nls(\"RegExp Search\") }, \".*\"],\n [\"span\", { action: \"toggleCaseSensitive\", class: \"ace_button\", title: nls(\"CaseSensitive Search\") }, \"Aa\"],\n [\"span\", { action: \"toggleWholeWords\", class: \"ace_button\", title: nls(\"Whole Word Search\") }, \"\\\\b\"],\n [\"span\", { action: \"searchInSelection\", class: \"ace_button\", title: nls(\"Search In Selection\") }, \"S\"]\n ]\n ], div);\n this.element = div.firstChild;\n this.setSession = this.setSession.bind(this);\n this.$init();\n this.setEditor(editor);\n dom.importCssString(searchboxCss, \"ace_searchbox\", editor.container);\n }\n SearchBox.prototype.setEditor = function (editor) {\n editor.searchBox = this;\n editor.renderer.scroller.appendChild(this.element);\n this.editor = editor;\n };\n SearchBox.prototype.setSession = function (e) {\n this.searchRange = null;\n this.$syncOptions(true);\n };\n SearchBox.prototype.$initElements = function (sb) {\n this.searchBox = sb.querySelector(\".ace_search_form\");\n this.replaceBox = sb.querySelector(\".ace_replace_form\");\n this.searchOption = sb.querySelector(\"[action=searchInSelection]\");\n this.replaceOption = sb.querySelector(\"[action=toggleReplace]\");\n this.regExpOption = sb.querySelector(\"[action=toggleRegexpMode]\");\n this.caseSensitiveOption = sb.querySelector(\"[action=toggleCaseSensitive]\");\n this.wholeWordOption = sb.querySelector(\"[action=toggleWholeWords]\");\n this.searchInput = this.searchBox.querySelector(\".ace_search_field\");\n this.replaceInput = this.replaceBox.querySelector(\".ace_search_field\");\n this.searchCounter = sb.querySelector(\".ace_search_counter\");\n };\n SearchBox.prototype.$init = function () {\n var sb = this.element;\n this.$initElements(sb);\n var _this = this;\n event.addListener(sb, \"mousedown\", function (e) {\n setTimeout(function () {\n _this.activeInput.focus();\n }, 0);\n event.stopPropagation(e);\n });\n event.addListener(sb, \"click\", function (e) {\n var t = e.target || e.srcElement;\n var action = t.getAttribute(\"action\");\n if (action && _this[action])\n _this[action]();\n else if (_this.$searchBarKb.commands[action])\n _this.$searchBarKb.commands[action].exec(_this);\n event.stopPropagation(e);\n });\n event.addCommandKeyListener(sb, function (e, hashId, keyCode) {\n var keyString = keyUtil.keyCodeToString(keyCode);\n var command = _this.$searchBarKb.findKeyCommand(hashId, keyString);\n if (command && command.exec) {\n command.exec(_this);\n event.stopEvent(e);\n }\n });\n this.$onChange = lang.delayedCall(function () {\n _this.find(false, false);\n });\n event.addListener(this.searchInput, \"input\", function () {\n _this.$onChange.schedule(20);\n });\n event.addListener(this.searchInput, \"focus\", function () {\n _this.activeInput = _this.searchInput;\n _this.searchInput.value && _this.highlight();\n });\n event.addListener(this.replaceInput, \"focus\", function () {\n _this.activeInput = _this.replaceInput;\n _this.searchInput.value && _this.highlight();\n });\n };\n SearchBox.prototype.setSearchRange = function (range) {\n this.searchRange = range;\n if (range) {\n this.searchRangeMarker = this.editor.session.addMarker(range, \"ace_active-line\");\n }\n else if (this.searchRangeMarker) {\n this.editor.session.removeMarker(this.searchRangeMarker);\n this.searchRangeMarker = null;\n }\n };\n SearchBox.prototype.$syncOptions = function (preventScroll) {\n dom.setCssClass(this.replaceOption, \"checked\", this.searchRange);\n dom.setCssClass(this.searchOption, \"checked\", this.searchOption.checked);\n this.replaceOption.textContent = this.replaceOption.checked ? \"-\" : \"+\";\n dom.setCssClass(this.regExpOption, \"checked\", this.regExpOption.checked);\n dom.setCssClass(this.wholeWordOption, \"checked\", this.wholeWordOption.checked);\n dom.setCssClass(this.caseSensitiveOption, \"checked\", this.caseSensitiveOption.checked);\n var readOnly = this.editor.getReadOnly();\n this.replaceOption.style.display = readOnly ? \"none\" : \"\";\n this.replaceBox.style.display = this.replaceOption.checked && !readOnly ? \"\" : \"none\";\n this.find(false, false, preventScroll);\n };\n SearchBox.prototype.highlight = function (re) {\n this.editor.session.highlight(re || this.editor.$search.$options.re);\n this.editor.renderer.updateBackMarkers();\n };\n SearchBox.prototype.find = function (skipCurrent, backwards, preventScroll) {\n var range = this.editor.find(this.searchInput.value, {\n skipCurrent: skipCurrent,\n backwards: backwards,\n wrap: true,\n regExp: this.regExpOption.checked,\n caseSensitive: this.caseSensitiveOption.checked,\n wholeWord: this.wholeWordOption.checked,\n preventScroll: preventScroll,\n range: this.searchRange\n });\n var noMatch = !range && this.searchInput.value;\n dom.setCssClass(this.searchBox, \"ace_nomatch\", noMatch);\n this.editor._emit(\"findSearchBox\", { match: !noMatch });\n this.highlight();\n this.updateCounter();\n };\n SearchBox.prototype.updateCounter = function () {\n var editor = this.editor;\n var regex = editor.$search.$options.re;\n var supportsUnicodeFlag = regex.unicode;\n var all = 0;\n var before = 0;\n if (regex) {\n var value = this.searchRange\n ? editor.session.getTextRange(this.searchRange)\n : editor.getValue();\n var offset = editor.session.doc.positionToIndex(editor.selection.anchor);\n if (this.searchRange)\n offset -= editor.session.doc.positionToIndex(this.searchRange.start);\n var last = regex.lastIndex = 0;\n var m;\n while ((m = regex.exec(value))) {\n all++;\n last = m.index;\n if (last <= offset)\n before++;\n if (all > MAX_COUNT)\n break;\n if (!m[0]) {\n regex.lastIndex = last += lang.skipEmptyMatch(value, last, supportsUnicodeFlag);\n if (last >= value.length)\n break;\n }\n }\n }\n this.searchCounter.textContent = nls(\"$0 of $1\", [before, (all > MAX_COUNT ? MAX_COUNT + \"+\" : all)]);\n };\n SearchBox.prototype.findNext = function () {\n this.find(true, false);\n };\n SearchBox.prototype.findPrev = function () {\n this.find(true, true);\n };\n SearchBox.prototype.findAll = function () {\n var range = this.editor.findAll(this.searchInput.value, {\n regExp: this.regExpOption.checked,\n caseSensitive: this.caseSensitiveOption.checked,\n wholeWord: this.wholeWordOption.checked\n });\n var noMatch = !range && this.searchInput.value;\n dom.setCssClass(this.searchBox, \"ace_nomatch\", noMatch);\n this.editor._emit(\"findSearchBox\", { match: !noMatch });\n this.highlight();\n this.hide();\n };\n SearchBox.prototype.replace = function () {\n if (!this.editor.getReadOnly())\n this.editor.replace(this.replaceInput.value);\n };\n SearchBox.prototype.replaceAndFindNext = function () {\n if (!this.editor.getReadOnly()) {\n this.editor.replace(this.replaceInput.value);\n this.findNext();\n }\n };\n SearchBox.prototype.replaceAll = function () {\n if (!this.editor.getReadOnly())\n this.editor.replaceAll(this.replaceInput.value);\n };\n SearchBox.prototype.hide = function () {\n this.active = false;\n this.setSearchRange(null);\n this.editor.off(\"changeSession\", this.setSession);\n this.element.style.display = \"none\";\n this.editor.keyBinding.removeKeyboardHandler(this.$closeSearchBarKb);\n this.editor.focus();\n };\n SearchBox.prototype.show = function (value, isReplace) {\n this.active = true;\n this.editor.on(\"changeSession\", this.setSession);\n this.element.style.display = \"\";\n this.replaceOption.checked = isReplace;\n if (value)\n this.searchInput.value = value;\n this.searchInput.focus();\n this.searchInput.select();\n this.editor.keyBinding.addKeyboardHandler(this.$closeSearchBarKb);\n this.$syncOptions(true);\n };\n SearchBox.prototype.isFocused = function () {\n var el = document.activeElement;\n return el == this.searchInput || el == this.replaceInput;\n };\n return SearchBox;\n}());\nvar $searchBarKb = new HashHandler();\n$searchBarKb.bindKeys({\n \"Ctrl-f|Command-f\": function (sb) {\n var isReplace = sb.isReplace = !sb.isReplace;\n sb.replaceBox.style.display = isReplace ? \"\" : \"none\";\n sb.replaceOption.checked = false;\n sb.$syncOptions();\n sb.searchInput.focus();\n },\n \"Ctrl-H|Command-Option-F\": function (sb) {\n if (sb.editor.getReadOnly())\n return;\n sb.replaceOption.checked = true;\n sb.$syncOptions();\n sb.replaceInput.focus();\n },\n \"Ctrl-G|Command-G\": function (sb) {\n sb.findNext();\n },\n \"Ctrl-Shift-G|Command-Shift-G\": function (sb) {\n sb.findPrev();\n },\n \"esc\": function (sb) {\n setTimeout(function () { sb.hide(); });\n },\n \"Return\": function (sb) {\n if (sb.activeInput == sb.replaceInput)\n sb.replace();\n sb.findNext();\n },\n \"Shift-Return\": function (sb) {\n if (sb.activeInput == sb.replaceInput)\n sb.replace();\n sb.findPrev();\n },\n \"Alt-Return\": function (sb) {\n if (sb.activeInput == sb.replaceInput)\n sb.replaceAll();\n sb.findAll();\n },\n \"Tab\": function (sb) {\n (sb.activeInput == sb.replaceInput ? sb.searchInput : sb.replaceInput).focus();\n }\n});\n$searchBarKb.addCommands([{\n name: \"toggleRegexpMode\",\n bindKey: { win: \"Alt-R|Alt-/\", mac: \"Ctrl-Alt-R|Ctrl-Alt-/\" },\n exec: function (sb) {\n sb.regExpOption.checked = !sb.regExpOption.checked;\n sb.$syncOptions();\n }\n }, {\n name: \"toggleCaseSensitive\",\n bindKey: { win: \"Alt-C|Alt-I\", mac: \"Ctrl-Alt-R|Ctrl-Alt-I\" },\n exec: function (sb) {\n sb.caseSensitiveOption.checked = !sb.caseSensitiveOption.checked;\n sb.$syncOptions();\n }\n }, {\n name: \"toggleWholeWords\",\n bindKey: { win: \"Alt-B|Alt-W\", mac: \"Ctrl-Alt-B|Ctrl-Alt-W\" },\n exec: function (sb) {\n sb.wholeWordOption.checked = !sb.wholeWordOption.checked;\n sb.$syncOptions();\n }\n }, {\n name: \"toggleReplace\",\n exec: function (sb) {\n sb.replaceOption.checked = !sb.replaceOption.checked;\n sb.$syncOptions();\n }\n }, {\n name: \"searchInSelection\",\n exec: function (sb) {\n sb.searchOption.checked = !sb.searchRange;\n sb.setSearchRange(sb.searchOption.checked && sb.editor.getSelectionRange());\n sb.$syncOptions();\n }\n }]);\nvar $closeSearchBarKb = new HashHandler([{\n bindKey: \"Esc\",\n name: \"closeSearchBar\",\n exec: function (editor) {\n editor.searchBox.hide();\n }\n }]);\nSearchBox.prototype.$searchBarKb = $searchBarKb;\nSearchBox.prototype.$closeSearchBarKb = $closeSearchBarKb;\nexports.SearchBox = SearchBox;\nexports.Search = function (editor, isReplace) {\n var sb = editor.searchBox || new SearchBox(editor);\n sb.show(editor.session.getTextRange(), isReplace);\n};\n\n}); (function() {\n ace.require([\"ace/ext/searchbox\"], function(m) {\n if (typeof module == \"object\" && typeof exports == \"object\" && module) {\n module.exports = m;\n }\n });\n })();\n ","ace.define(\"ace/mode/css_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/mode/text_highlight_rules\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar lang = require(\"../lib/lang\");\nvar TextHighlightRules = require(\"./text_highlight_rules\").TextHighlightRules;\nvar supportType = exports.supportType = \"align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index\";\nvar supportFunction = exports.supportFunction = \"rgb|rgba|url|attr|counter|counters\";\nvar supportConstant = exports.supportConstant = \"absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|flex-end|flex-start|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom\";\nvar supportConstantColor = exports.supportConstantColor = \"aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|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|green|greenyellow|grey|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|magenta|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|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen\";\nvar supportConstantFonts = exports.supportConstantFonts = \"arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace\";\nvar numRe = exports.numRe = \"\\\\-?(?:(?:[0-9]+(?:\\\\.[0-9]+)?)|(?:\\\\.[0-9]+))\";\nvar pseudoElements = exports.pseudoElements = \"(\\\\:+)\\\\b(after|before|first-letter|first-line|moz-selection|selection)\\\\b\";\nvar pseudoClasses = exports.pseudoClasses = \"(:)\\\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\\\b\";\nvar CssHighlightRules = function () {\n var keywordMapper = this.createKeywordMapper({\n \"support.function\": supportFunction,\n \"support.constant\": supportConstant,\n \"support.type\": supportType,\n \"support.constant.color\": supportConstantColor,\n \"support.constant.fonts\": supportConstantFonts\n }, \"text\", true);\n this.$rules = {\n \"start\": [{\n include: [\"strings\", \"url\", \"comments\"]\n }, {\n token: \"paren.lparen\",\n regex: \"\\\\{\",\n next: \"ruleset\"\n }, {\n token: \"paren.rparen\",\n regex: \"\\\\}\"\n }, {\n token: \"string\",\n regex: \"@(?!viewport)\",\n next: \"media\"\n }, {\n token: \"keyword\",\n regex: \"#[a-z0-9-_]+\"\n }, {\n token: \"keyword\",\n regex: \"%\"\n }, {\n token: \"variable\",\n regex: \"\\\\.[a-z0-9-_]+\"\n }, {\n token: \"string\",\n regex: \":[a-z0-9-_]+\"\n }, {\n token: \"constant.numeric\",\n regex: numRe\n }, {\n token: \"constant\",\n regex: \"[a-z0-9-_]+\"\n }, {\n caseInsensitive: true\n }],\n \"media\": [{\n include: [\"strings\", \"url\", \"comments\"]\n }, {\n token: \"paren.lparen\",\n regex: \"\\\\{\",\n next: \"start\"\n }, {\n token: \"paren.rparen\",\n regex: \"\\\\}\",\n next: \"start\"\n }, {\n token: \"string\",\n regex: \";\",\n next: \"start\"\n }, {\n token: \"keyword\",\n regex: \"(?:media|supports|document|charset|import|namespace|media|supports|document\"\n + \"|page|font|keyframes|viewport|counter-style|font-feature-values\"\n + \"|swash|ornaments|annotation|stylistic|styleset|character-variant)\"\n }],\n \"comments\": [{\n token: \"comment\",\n regex: \"\\\\/\\\\*\",\n push: [{\n token: \"comment\",\n regex: \"\\\\*\\\\/\",\n next: \"pop\"\n }, {\n defaultToken: \"comment\"\n }]\n }],\n \"ruleset\": [{\n regex: \"-(webkit|ms|moz|o)-\",\n token: \"text\"\n }, {\n token: \"punctuation.operator\",\n regex: \"[:;]\"\n }, {\n token: \"paren.rparen\",\n regex: \"\\\\}\",\n next: \"start\"\n }, {\n include: [\"strings\", \"url\", \"comments\"]\n }, {\n token: [\"constant.numeric\", \"keyword\"],\n regex: \"(\" + numRe + \")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)\"\n }, {\n token: \"constant.numeric\",\n regex: numRe\n }, {\n token: \"constant.numeric\",\n regex: \"#[a-f0-9]{6}\"\n }, {\n token: \"constant.numeric\",\n regex: \"#[a-f0-9]{3}\"\n }, {\n token: [\"punctuation\", \"entity.other.attribute-name.pseudo-element.css\"],\n regex: pseudoElements\n }, {\n token: [\"punctuation\", \"entity.other.attribute-name.pseudo-class.css\"],\n regex: pseudoClasses\n }, {\n include: \"url\"\n }, {\n token: keywordMapper,\n regex: \"\\\\-?[a-zA-Z_][a-zA-Z0-9_\\\\-]*\"\n }, {\n caseInsensitive: true\n }],\n url: [{\n token: \"support.function\",\n regex: \"(?:url(:?-prefix)?|domain|regexp)\\\\(\",\n push: [{\n token: \"support.function\",\n regex: \"\\\\)\",\n next: \"pop\"\n }, {\n defaultToken: \"string\"\n }]\n }],\n strings: [{\n token: \"string.start\",\n regex: \"'\",\n push: [{\n token: \"string.end\",\n regex: \"'|$\",\n next: \"pop\"\n }, {\n include: \"escapes\"\n }, {\n token: \"constant.language.escape\",\n regex: /\\\\$/,\n consumeLineEnd: true\n }, {\n defaultToken: \"string\"\n }]\n }, {\n token: \"string.start\",\n regex: '\"',\n push: [{\n token: \"string.end\",\n regex: '\"|$',\n next: \"pop\"\n }, {\n include: \"escapes\"\n }, {\n token: \"constant.language.escape\",\n regex: /\\\\$/,\n consumeLineEnd: true\n }, {\n defaultToken: \"string\"\n }]\n }],\n escapes: [{\n token: \"constant.language.escape\",\n regex: /\\\\([a-fA-F\\d]{1,6}|[^a-fA-F\\d])/\n }]\n };\n this.normalizeRules();\n};\noop.inherits(CssHighlightRules, TextHighlightRules);\nexports.CssHighlightRules = CssHighlightRules;\n\n});\n\nace.define(\"ace/mode/matching_brace_outdent\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar Range = require(\"../range\").Range;\nvar MatchingBraceOutdent = function () { };\n(function () {\n this.checkOutdent = function (line, input) {\n if (!/^\\s+$/.test(line))\n return false;\n return /^\\s*\\}/.test(input);\n };\n this.autoOutdent = function (doc, row) {\n var line = doc.getLine(row);\n var match = line.match(/^(\\s*\\})/);\n if (!match)\n return 0;\n var column = match[1].length;\n var openBracePos = doc.findMatchingBracket({ row: row, column: column });\n if (!openBracePos || openBracePos.row == row)\n return 0;\n var indent = this.$getIndent(doc.getLine(openBracePos.row));\n doc.replace(new Range(row, 0, row, column - 1), indent);\n };\n this.$getIndent = function (line) {\n return line.match(/^\\s*/)[0];\n };\n}).call(MatchingBraceOutdent.prototype);\nexports.MatchingBraceOutdent = MatchingBraceOutdent;\n\n});\n\nace.define(\"ace/mode/css_completions\",[\"require\",\"exports\",\"module\"], function(require, exports, module){\"use strict\";\nvar propertyMap = {\n \"background\": { \"#$0\": 1 },\n \"background-color\": { \"#$0\": 1, \"transparent\": 1, \"fixed\": 1 },\n \"background-image\": { \"url('/$0')\": 1 },\n \"background-repeat\": { \"repeat\": 1, \"repeat-x\": 1, \"repeat-y\": 1, \"no-repeat\": 1, \"inherit\": 1 },\n \"background-position\": { \"bottom\": 2, \"center\": 2, \"left\": 2, \"right\": 2, \"top\": 2, \"inherit\": 2 },\n \"background-attachment\": { \"scroll\": 1, \"fixed\": 1 },\n \"background-size\": { \"cover\": 1, \"contain\": 1 },\n \"background-clip\": { \"border-box\": 1, \"padding-box\": 1, \"content-box\": 1 },\n \"background-origin\": { \"border-box\": 1, \"padding-box\": 1, \"content-box\": 1 },\n \"border\": { \"solid $0\": 1, \"dashed $0\": 1, \"dotted $0\": 1, \"#$0\": 1 },\n \"border-color\": { \"#$0\": 1 },\n \"border-style\": { \"solid\": 2, \"dashed\": 2, \"dotted\": 2, \"double\": 2, \"groove\": 2, \"hidden\": 2, \"inherit\": 2, \"inset\": 2, \"none\": 2, \"outset\": 2, \"ridged\": 2 },\n \"border-collapse\": { \"collapse\": 1, \"separate\": 1 },\n \"bottom\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"clear\": { \"left\": 1, \"right\": 1, \"both\": 1, \"none\": 1 },\n \"color\": { \"#$0\": 1, \"rgb(#$00,0,0)\": 1 },\n \"cursor\": { \"default\": 1, \"pointer\": 1, \"move\": 1, \"text\": 1, \"wait\": 1, \"help\": 1, \"progress\": 1, \"n-resize\": 1, \"ne-resize\": 1, \"e-resize\": 1, \"se-resize\": 1, \"s-resize\": 1, \"sw-resize\": 1, \"w-resize\": 1, \"nw-resize\": 1 },\n \"display\": { \"none\": 1, \"block\": 1, \"inline\": 1, \"inline-block\": 1, \"table-cell\": 1 },\n \"empty-cells\": { \"show\": 1, \"hide\": 1 },\n \"float\": { \"left\": 1, \"right\": 1, \"none\": 1 },\n \"font-family\": { \"Arial\": 2, \"Comic Sans MS\": 2, \"Consolas\": 2, \"Courier New\": 2, \"Courier\": 2, \"Georgia\": 2, \"Monospace\": 2, \"Sans-Serif\": 2, \"Segoe UI\": 2, \"Tahoma\": 2, \"Times New Roman\": 2, \"Trebuchet MS\": 2, \"Verdana\": 1 },\n \"font-size\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"font-weight\": { \"bold\": 1, \"normal\": 1 },\n \"font-style\": { \"italic\": 1, \"normal\": 1 },\n \"font-variant\": { \"normal\": 1, \"small-caps\": 1 },\n \"height\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"left\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"letter-spacing\": { \"normal\": 1 },\n \"line-height\": { \"normal\": 1 },\n \"list-style-type\": { \"none\": 1, \"disc\": 1, \"circle\": 1, \"square\": 1, \"decimal\": 1, \"decimal-leading-zero\": 1, \"lower-roman\": 1, \"upper-roman\": 1, \"lower-greek\": 1, \"lower-latin\": 1, \"upper-latin\": 1, \"georgian\": 1, \"lower-alpha\": 1, \"upper-alpha\": 1 },\n \"margin\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"margin-right\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"margin-left\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"margin-top\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"margin-bottom\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"max-height\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"max-width\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"min-height\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"min-width\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"overflow\": { \"hidden\": 1, \"visible\": 1, \"auto\": 1, \"scroll\": 1 },\n \"overflow-x\": { \"hidden\": 1, \"visible\": 1, \"auto\": 1, \"scroll\": 1 },\n \"overflow-y\": { \"hidden\": 1, \"visible\": 1, \"auto\": 1, \"scroll\": 1 },\n \"padding\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"padding-top\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"padding-right\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"padding-bottom\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"padding-left\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"page-break-after\": { \"auto\": 1, \"always\": 1, \"avoid\": 1, \"left\": 1, \"right\": 1 },\n \"page-break-before\": { \"auto\": 1, \"always\": 1, \"avoid\": 1, \"left\": 1, \"right\": 1 },\n \"position\": { \"absolute\": 1, \"relative\": 1, \"fixed\": 1, \"static\": 1 },\n \"right\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"table-layout\": { \"fixed\": 1, \"auto\": 1 },\n \"text-decoration\": { \"none\": 1, \"underline\": 1, \"line-through\": 1, \"blink\": 1 },\n \"text-align\": { \"left\": 1, \"right\": 1, \"center\": 1, \"justify\": 1 },\n \"text-transform\": { \"capitalize\": 1, \"uppercase\": 1, \"lowercase\": 1, \"none\": 1 },\n \"top\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"vertical-align\": { \"top\": 1, \"bottom\": 1 },\n \"visibility\": { \"hidden\": 1, \"visible\": 1 },\n \"white-space\": { \"nowrap\": 1, \"normal\": 1, \"pre\": 1, \"pre-line\": 1, \"pre-wrap\": 1 },\n \"width\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"word-spacing\": { \"normal\": 1 },\n \"filter\": { \"alpha(opacity=$0100)\": 1 },\n \"text-shadow\": { \"$02px 2px 2px #777\": 1 },\n \"text-overflow\": { \"ellipsis-word\": 1, \"clip\": 1, \"ellipsis\": 1 },\n \"-moz-border-radius\": 1,\n \"-moz-border-radius-topright\": 1,\n \"-moz-border-radius-bottomright\": 1,\n \"-moz-border-radius-topleft\": 1,\n \"-moz-border-radius-bottomleft\": 1,\n \"-webkit-border-radius\": 1,\n \"-webkit-border-top-right-radius\": 1,\n \"-webkit-border-top-left-radius\": 1,\n \"-webkit-border-bottom-right-radius\": 1,\n \"-webkit-border-bottom-left-radius\": 1,\n \"-moz-box-shadow\": 1,\n \"-webkit-box-shadow\": 1,\n \"transform\": { \"rotate($00deg)\": 1, \"skew($00deg)\": 1 },\n \"-moz-transform\": { \"rotate($00deg)\": 1, \"skew($00deg)\": 1 },\n \"-webkit-transform\": { \"rotate($00deg)\": 1, \"skew($00deg)\": 1 }\n};\nvar CssCompletions = function () {\n};\n(function () {\n this.completionsDefined = false;\n this.defineCompletions = function () {\n if (document) {\n var style = document.createElement('c').style;\n for (var i in style) {\n if (typeof style[i] !== 'string')\n continue;\n var name = i.replace(/[A-Z]/g, function (x) {\n return '-' + x.toLowerCase();\n });\n if (!propertyMap.hasOwnProperty(name))\n propertyMap[name] = 1;\n }\n }\n this.completionsDefined = true;\n };\n this.getCompletions = function (state, session, pos, prefix) {\n if (!this.completionsDefined) {\n this.defineCompletions();\n }\n if (state === 'ruleset' || session.$mode.$id == \"ace/mode/scss\") {\n var line = session.getLine(pos.row).substr(0, pos.column);\n var inParens = /\\([^)]*$/.test(line);\n if (inParens) {\n line = line.substr(line.lastIndexOf('(') + 1);\n }\n if (/:[^;]+$/.test(line)) {\n /([\\w\\-]+):[^:]*$/.test(line);\n return this.getPropertyValueCompletions(state, session, pos, prefix);\n }\n else {\n return this.getPropertyCompletions(state, session, pos, prefix, inParens);\n }\n }\n return [];\n };\n this.getPropertyCompletions = function (state, session, pos, prefix, skipSemicolon) {\n skipSemicolon = skipSemicolon || false;\n var properties = Object.keys(propertyMap);\n return properties.map(function (property) {\n return {\n caption: property,\n snippet: property + ': $0' + (skipSemicolon ? '' : ';'),\n meta: \"property\",\n score: 1000000\n };\n });\n };\n this.getPropertyValueCompletions = function (state, session, pos, prefix) {\n var line = session.getLine(pos.row).substr(0, pos.column);\n var property = (/([\\w\\-]+):[^:]*$/.exec(line) || {})[1];\n if (!property)\n return [];\n var values = [];\n if (property in propertyMap && typeof propertyMap[property] === \"object\") {\n values = Object.keys(propertyMap[property]);\n }\n return values.map(function (value) {\n return {\n caption: value,\n snippet: value,\n meta: \"property value\",\n score: 1000000\n };\n });\n };\n}).call(CssCompletions.prototype);\nexports.CssCompletions = CssCompletions;\n\n});\n\nace.define(\"ace/mode/behaviour/css\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/behaviour\",\"ace/mode/behaviour/cstyle\",\"ace/token_iterator\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../../lib/oop\");\nvar Behaviour = require(\"../behaviour\").Behaviour;\nvar CstyleBehaviour = require(\"./cstyle\").CstyleBehaviour;\nvar TokenIterator = require(\"../../token_iterator\").TokenIterator;\nvar CssBehaviour = function () {\n this.inherit(CstyleBehaviour);\n this.add(\"colon\", \"insertion\", function (state, action, editor, session, text) {\n if (text === ':' && editor.selection.isEmpty()) {\n var cursor = editor.getCursorPosition();\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n var token = iterator.getCurrentToken();\n if (token && token.value.match(/\\s+/)) {\n token = iterator.stepBackward();\n }\n if (token && token.type === 'support.type') {\n var line = session.doc.getLine(cursor.row);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n if (rightChar === ':') {\n return {\n text: '',\n selection: [1, 1]\n };\n }\n if (/^(\\s+[^;]|\\s*$)/.test(line.substring(cursor.column))) {\n return {\n text: ':;',\n selection: [1, 1]\n };\n }\n }\n }\n });\n this.add(\"colon\", \"deletion\", function (state, action, editor, session, range) {\n var selected = session.doc.getTextRange(range);\n if (!range.isMultiLine() && selected === ':') {\n var cursor = editor.getCursorPosition();\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n var token = iterator.getCurrentToken();\n if (token && token.value.match(/\\s+/)) {\n token = iterator.stepBackward();\n }\n if (token && token.type === 'support.type') {\n var line = session.doc.getLine(range.start.row);\n var rightChar = line.substring(range.end.column, range.end.column + 1);\n if (rightChar === ';') {\n range.end.column++;\n return range;\n }\n }\n }\n });\n this.add(\"semicolon\", \"insertion\", function (state, action, editor, session, text) {\n if (text === ';' && editor.selection.isEmpty()) {\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n if (rightChar === ';') {\n return {\n text: '',\n selection: [1, 1]\n };\n }\n }\n });\n this.add(\"!important\", \"insertion\", function (state, action, editor, session, text) {\n if (text === '!' && editor.selection.isEmpty()) {\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n if (/^\\s*(;|}|$)/.test(line.substring(cursor.column))) {\n return {\n text: '!important',\n selection: [10, 10]\n };\n }\n }\n });\n};\noop.inherits(CssBehaviour, CstyleBehaviour);\nexports.CssBehaviour = CssBehaviour;\n\n});\n\nace.define(\"ace/mode/folding/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/range\",\"ace/mode/folding/fold_mode\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../../lib/oop\");\nvar Range = require(\"../../range\").Range;\nvar BaseFoldMode = require(\"./fold_mode\").FoldMode;\nvar FoldMode = exports.FoldMode = function (commentRegex) {\n if (commentRegex) {\n this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.start));\n this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.end));\n }\n};\noop.inherits(FoldMode, BaseFoldMode);\n(function () {\n this.foldingStartMarker = /([\\{\\[\\(])[^\\}\\]\\)]*$|^\\s*(\\/\\*)/;\n this.foldingStopMarker = /^[^\\[\\{\\(]*([\\}\\]\\)])|^[\\s\\*]*(\\*\\/)/;\n this.singleLineBlockCommentRe = /^\\s*(\\/\\*).*\\*\\/\\s*$/;\n this.tripleStarBlockCommentRe = /^\\s*(\\/\\*\\*\\*).*\\*\\/\\s*$/;\n this.startRegionRe = /^\\s*(\\/\\*|\\/\\/)#?region\\b/;\n this._getFoldWidgetBase = this.getFoldWidget;\n this.getFoldWidget = function (session, foldStyle, row) {\n var line = session.getLine(row);\n if (this.singleLineBlockCommentRe.test(line)) {\n if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line))\n return \"\";\n }\n var fw = this._getFoldWidgetBase(session, foldStyle, row);\n if (!fw && this.startRegionRe.test(line))\n return \"start\"; // lineCommentRegionStart\n return fw;\n };\n this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) {\n var line = session.getLine(row);\n if (this.startRegionRe.test(line))\n return this.getCommentRegionBlock(session, line, row);\n var match = line.match(this.foldingStartMarker);\n if (match) {\n var i = match.index;\n if (match[1])\n return this.openingBracketBlock(session, match[1], row, i);\n var range = session.getCommentFoldRange(row, i + match[0].length, 1);\n if (range && !range.isMultiLine()) {\n if (forceMultiline) {\n range = this.getSectionRange(session, row);\n }\n else if (foldStyle != \"all\")\n range = null;\n }\n return range;\n }\n if (foldStyle === \"markbegin\")\n return;\n var match = line.match(this.foldingStopMarker);\n if (match) {\n var i = match.index + match[0].length;\n if (match[1])\n return this.closingBracketBlock(session, match[1], row, i);\n return session.getCommentFoldRange(row, i, -1);\n }\n };\n this.getSectionRange = function (session, row) {\n var line = session.getLine(row);\n var startIndent = line.search(/\\S/);\n var startRow = row;\n var startColumn = line.length;\n row = row + 1;\n var endRow = row;\n var maxRow = session.getLength();\n while (++row < maxRow) {\n line = session.getLine(row);\n var indent = line.search(/\\S/);\n if (indent === -1)\n continue;\n if (startIndent > indent)\n break;\n var subRange = this.getFoldWidgetRange(session, \"all\", row);\n if (subRange) {\n if (subRange.start.row <= startRow) {\n break;\n }\n else if (subRange.isMultiLine()) {\n row = subRange.end.row;\n }\n else if (startIndent == indent) {\n break;\n }\n }\n endRow = row;\n }\n return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);\n };\n this.getCommentRegionBlock = function (session, line, row) {\n var startColumn = line.search(/\\s*$/);\n var maxRow = session.getLength();\n var startRow = row;\n var re = /^\\s*(?:\\/\\*|\\/\\/|--)#?(end)?region\\b/;\n var depth = 1;\n while (++row < maxRow) {\n line = session.getLine(row);\n var m = re.exec(line);\n if (!m)\n continue;\n if (m[1])\n depth--;\n else\n depth++;\n if (!depth)\n break;\n }\n var endRow = row;\n if (endRow > startRow) {\n return new Range(startRow, startColumn, endRow, line.length);\n }\n };\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/css\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/css_highlight_rules\",\"ace/mode/matching_brace_outdent\",\"ace/worker/worker_client\",\"ace/mode/css_completions\",\"ace/mode/behaviour/css\",\"ace/mode/folding/cstyle\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar TextMode = require(\"./text\").Mode;\nvar CssHighlightRules = require(\"./css_highlight_rules\").CssHighlightRules;\nvar MatchingBraceOutdent = require(\"./matching_brace_outdent\").MatchingBraceOutdent;\nvar WorkerClient = require(\"../worker/worker_client\").WorkerClient;\nvar CssCompletions = require(\"./css_completions\").CssCompletions;\nvar CssBehaviour = require(\"./behaviour/css\").CssBehaviour;\nvar CStyleFoldMode = require(\"./folding/cstyle\").FoldMode;\nvar Mode = function () {\n this.HighlightRules = CssHighlightRules;\n this.$outdent = new MatchingBraceOutdent();\n this.$behaviour = new CssBehaviour();\n this.$completer = new CssCompletions();\n this.foldingRules = new CStyleFoldMode();\n};\noop.inherits(Mode, TextMode);\n(function () {\n this.foldingRules = \"cStyle\";\n this.blockComment = { start: \"/*\", end: \"*/\" };\n this.getNextLineIndent = function (state, line, tab) {\n var indent = this.$getIndent(line);\n var tokens = this.getTokenizer().getLineTokens(line, state).tokens;\n if (tokens.length && tokens[tokens.length - 1].type == \"comment\") {\n return indent;\n }\n var match = line.match(/^.*\\{\\s*$/);\n if (match) {\n indent += tab;\n }\n return indent;\n };\n this.checkOutdent = function (state, line, input) {\n return this.$outdent.checkOutdent(line, input);\n };\n this.autoOutdent = function (state, doc, row) {\n this.$outdent.autoOutdent(doc, row);\n };\n this.getCompletions = function (state, session, pos, prefix) {\n return this.$completer.getCompletions(state, session, pos, prefix);\n };\n this.createWorker = function (session) {\n var worker = new WorkerClient([\"ace\"], \"ace/mode/css_worker\", \"Worker\");\n worker.attachToDocument(session.getDocument());\n worker.on(\"annotate\", function (e) {\n session.setAnnotations(e.data);\n });\n worker.on(\"terminate\", function () {\n session.clearAnnotations();\n });\n return worker;\n };\n this.$id = \"ace/mode/css\";\n this.snippetFileId = \"ace/snippets/css\";\n}).call(Mode.prototype);\nexports.Mode = Mode;\n\n}); (function() {\n ace.require([\"ace/mode/css\"], function(m) {\n if (typeof module == \"object\" && typeof exports == \"object\" && module) {\n module.exports = m;\n }\n });\n })();\n ","ace.define(\"ace/mode/doc_comment_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar TextHighlightRules = require(\"./text_highlight_rules\").TextHighlightRules;\nvar DocCommentHighlightRules = function () {\n this.$rules = {\n \"start\": [\n {\n token: \"comment.doc.tag\",\n regex: \"@\\\\w+(?=\\\\s|$)\"\n }, DocCommentHighlightRules.getTagRule(), {\n defaultToken: \"comment.doc\",\n caseInsensitive: true\n }\n ]\n };\n};\noop.inherits(DocCommentHighlightRules, TextHighlightRules);\nDocCommentHighlightRules.getTagRule = function (start) {\n return {\n token: \"comment.doc.tag.storage.type\",\n regex: \"\\\\b(?:TODO|FIXME|XXX|HACK)\\\\b\"\n };\n};\nDocCommentHighlightRules.getStartRule = function (start) {\n return {\n token: \"comment.doc\",\n regex: \"\\\\/\\\\*(?=\\\\*)\",\n next: start\n };\n};\nDocCommentHighlightRules.getEndRule = function (start) {\n return {\n token: \"comment.doc\",\n regex: \"\\\\*\\\\/\",\n next: start\n };\n};\nexports.DocCommentHighlightRules = DocCommentHighlightRules;\n\n});\n\nace.define(\"ace/mode/golang_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/doc_comment_highlight_rules\",\"ace/mode/text_highlight_rules\"], function(require, exports, module){var oop = require(\"../lib/oop\");\nvar DocCommentHighlightRules = require(\"./doc_comment_highlight_rules\").DocCommentHighlightRules;\nvar TextHighlightRules = require(\"./text_highlight_rules\").TextHighlightRules;\nvar GolangHighlightRules = function () {\n var keywords = (\"else|break|case|return|goto|if|const|select|\" +\n \"continue|struct|default|switch|for|range|\" +\n \"func|import|package|chan|defer|fallthrough|go|interface|map|range|\" +\n \"select|type|var\");\n var builtinTypes = (\"string|uint8|uint16|uint32|uint64|int8|int16|int32|int64|float32|\" +\n \"float64|complex64|complex128|byte|rune|uint|int|uintptr|bool|error\");\n var builtinFunctions = (\"new|close|cap|copy|panic|panicln|print|println|len|make|delete|real|recover|imag|append\");\n var builtinConstants = (\"nil|true|false|iota\");\n var keywordMapper = this.createKeywordMapper({\n \"keyword\": keywords,\n \"constant.language\": builtinConstants,\n \"support.function\": builtinFunctions,\n \"support.type\": builtinTypes\n }, \"\");\n var stringEscapeRe = \"\\\\\\\\(?:[0-7]{3}|x\\\\h{2}|u{4}|U\\\\h{6}|[abfnrtv'\\\"\\\\\\\\])\".replace(/\\\\h/g, \"[a-fA-F\\\\d]\");\n this.$rules = {\n \"start\": [\n {\n token: \"comment\",\n regex: \"\\\\/\\\\/.*$\"\n },\n DocCommentHighlightRules.getStartRule(\"doc-start\"),\n {\n token: \"comment.start\",\n regex: \"\\\\/\\\\*\",\n next: \"comment\"\n }, {\n token: \"string\",\n regex: /\"(?:[^\"\\\\]|\\\\.)*?\"/\n }, {\n token: \"string\",\n regex: '`',\n next: \"bqstring\"\n }, {\n token: \"constant.numeric\",\n regex: \"'(?:[^\\\\'\\uD800-\\uDBFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|\" + stringEscapeRe.replace('\"', '') + \")'\"\n }, {\n token: \"constant.numeric\",\n regex: \"0[xX][0-9a-fA-F]+\\\\b\"\n }, {\n token: \"constant.numeric\",\n regex: \"[+-]?\\\\d+(?:(?:\\\\.\\\\d*)?(?:[eE][+-]?\\\\d+)?)?\\\\b\"\n }, {\n token: [\"keyword\", \"text\", \"entity.name.function\"],\n regex: \"(func)(\\\\s+)([a-zA-Z_$][a-zA-Z0-9_$]*)\\\\b\"\n }, {\n token: function (val) {\n if (val[val.length - 1] == \"(\") {\n return [{\n type: keywordMapper(val.slice(0, -1)) || \"support.function\",\n value: val.slice(0, -1)\n }, {\n type: \"paren.lparen\",\n value: val.slice(-1)\n }];\n }\n return keywordMapper(val) || \"identifier\";\n },\n regex: \"[a-zA-Z_$][a-zA-Z0-9_$]*\\\\b\\\\(?\"\n }, {\n token: \"keyword.operator\",\n regex: \"!|\\\\$|%|&|\\\\*|\\\\-\\\\-|\\\\-|\\\\+\\\\+|\\\\+|~|==|=|!=|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\\\|\\\\||\\\\?\\\\:|\\\\*=|%=|\\\\+=|\\\\-=|&=|\\\\^=\"\n }, {\n token: \"punctuation.operator\",\n regex: \"\\\\?|\\\\:|\\\\,|\\\\;|\\\\.\"\n }, {\n token: \"paren.lparen\",\n regex: \"[[({]\"\n }, {\n token: \"paren.rparen\",\n regex: \"[\\\\])}]\"\n }, {\n token: \"text\",\n regex: \"\\\\s+\"\n }\n ],\n \"comment\": [\n {\n token: \"comment.end\",\n regex: \"\\\\*\\\\/\",\n next: \"start\"\n }, {\n defaultToken: \"comment\"\n }\n ],\n \"bqstring\": [\n {\n token: \"string\",\n regex: '`',\n next: \"start\"\n }, {\n defaultToken: \"string\"\n }\n ]\n };\n this.embedRules(DocCommentHighlightRules, \"doc-\", [DocCommentHighlightRules.getEndRule(\"start\")]);\n};\noop.inherits(GolangHighlightRules, TextHighlightRules);\nexports.GolangHighlightRules = GolangHighlightRules;\n\n});\n\nace.define(\"ace/mode/matching_brace_outdent\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar Range = require(\"../range\").Range;\nvar MatchingBraceOutdent = function () { };\n(function () {\n this.checkOutdent = function (line, input) {\n if (!/^\\s+$/.test(line))\n return false;\n return /^\\s*\\}/.test(input);\n };\n this.autoOutdent = function (doc, row) {\n var line = doc.getLine(row);\n var match = line.match(/^(\\s*\\})/);\n if (!match)\n return 0;\n var column = match[1].length;\n var openBracePos = doc.findMatchingBracket({ row: row, column: column });\n if (!openBracePos || openBracePos.row == row)\n return 0;\n var indent = this.$getIndent(doc.getLine(openBracePos.row));\n doc.replace(new Range(row, 0, row, column - 1), indent);\n };\n this.$getIndent = function (line) {\n return line.match(/^\\s*/)[0];\n };\n}).call(MatchingBraceOutdent.prototype);\nexports.MatchingBraceOutdent = MatchingBraceOutdent;\n\n});\n\nace.define(\"ace/mode/folding/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/range\",\"ace/mode/folding/fold_mode\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../../lib/oop\");\nvar Range = require(\"../../range\").Range;\nvar BaseFoldMode = require(\"./fold_mode\").FoldMode;\nvar FoldMode = exports.FoldMode = function (commentRegex) {\n if (commentRegex) {\n this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.start));\n this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.end));\n }\n};\noop.inherits(FoldMode, BaseFoldMode);\n(function () {\n this.foldingStartMarker = /([\\{\\[\\(])[^\\}\\]\\)]*$|^\\s*(\\/\\*)/;\n this.foldingStopMarker = /^[^\\[\\{\\(]*([\\}\\]\\)])|^[\\s\\*]*(\\*\\/)/;\n this.singleLineBlockCommentRe = /^\\s*(\\/\\*).*\\*\\/\\s*$/;\n this.tripleStarBlockCommentRe = /^\\s*(\\/\\*\\*\\*).*\\*\\/\\s*$/;\n this.startRegionRe = /^\\s*(\\/\\*|\\/\\/)#?region\\b/;\n this._getFoldWidgetBase = this.getFoldWidget;\n this.getFoldWidget = function (session, foldStyle, row) {\n var line = session.getLine(row);\n if (this.singleLineBlockCommentRe.test(line)) {\n if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line))\n return \"\";\n }\n var fw = this._getFoldWidgetBase(session, foldStyle, row);\n if (!fw && this.startRegionRe.test(line))\n return \"start\"; // lineCommentRegionStart\n return fw;\n };\n this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) {\n var line = session.getLine(row);\n if (this.startRegionRe.test(line))\n return this.getCommentRegionBlock(session, line, row);\n var match = line.match(this.foldingStartMarker);\n if (match) {\n var i = match.index;\n if (match[1])\n return this.openingBracketBlock(session, match[1], row, i);\n var range = session.getCommentFoldRange(row, i + match[0].length, 1);\n if (range && !range.isMultiLine()) {\n if (forceMultiline) {\n range = this.getSectionRange(session, row);\n }\n else if (foldStyle != \"all\")\n range = null;\n }\n return range;\n }\n if (foldStyle === \"markbegin\")\n return;\n var match = line.match(this.foldingStopMarker);\n if (match) {\n var i = match.index + match[0].length;\n if (match[1])\n return this.closingBracketBlock(session, match[1], row, i);\n return session.getCommentFoldRange(row, i, -1);\n }\n };\n this.getSectionRange = function (session, row) {\n var line = session.getLine(row);\n var startIndent = line.search(/\\S/);\n var startRow = row;\n var startColumn = line.length;\n row = row + 1;\n var endRow = row;\n var maxRow = session.getLength();\n while (++row < maxRow) {\n line = session.getLine(row);\n var indent = line.search(/\\S/);\n if (indent === -1)\n continue;\n if (startIndent > indent)\n break;\n var subRange = this.getFoldWidgetRange(session, \"all\", row);\n if (subRange) {\n if (subRange.start.row <= startRow) {\n break;\n }\n else if (subRange.isMultiLine()) {\n row = subRange.end.row;\n }\n else if (startIndent == indent) {\n break;\n }\n }\n endRow = row;\n }\n return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);\n };\n this.getCommentRegionBlock = function (session, line, row) {\n var startColumn = line.search(/\\s*$/);\n var maxRow = session.getLength();\n var startRow = row;\n var re = /^\\s*(?:\\/\\*|\\/\\/|--)#?(end)?region\\b/;\n var depth = 1;\n while (++row < maxRow) {\n line = session.getLine(row);\n var m = re.exec(line);\n if (!m)\n continue;\n if (m[1])\n depth--;\n else\n depth++;\n if (!depth)\n break;\n }\n var endRow = row;\n if (endRow > startRow) {\n return new Range(startRow, startColumn, endRow, line.length);\n }\n };\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/golang\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/golang_highlight_rules\",\"ace/mode/matching_brace_outdent\",\"ace/mode/folding/cstyle\"], function(require, exports, module){var oop = require(\"../lib/oop\");\nvar TextMode = require(\"./text\").Mode;\nvar GolangHighlightRules = require(\"./golang_highlight_rules\").GolangHighlightRules;\nvar MatchingBraceOutdent = require(\"./matching_brace_outdent\").MatchingBraceOutdent;\nvar CStyleFoldMode = require(\"./folding/cstyle\").FoldMode;\nvar Mode = function () {\n this.HighlightRules = GolangHighlightRules;\n this.$outdent = new MatchingBraceOutdent();\n this.foldingRules = new CStyleFoldMode();\n this.$behaviour = this.$defaultBehaviour;\n};\noop.inherits(Mode, TextMode);\n(function () {\n this.lineCommentStart = \"//\";\n this.blockComment = { start: \"/*\", end: \"*/\" };\n this.getNextLineIndent = function (state, line, tab) {\n var indent = this.$getIndent(line);\n var tokenizedLine = this.getTokenizer().getLineTokens(line, state);\n var tokens = tokenizedLine.tokens;\n var endState = tokenizedLine.state;\n if (tokens.length && tokens[tokens.length - 1].type == \"comment\") {\n return indent;\n }\n if (state == \"start\") {\n var match = line.match(/^.*[\\{\\(\\[]\\s*$/);\n if (match) {\n indent += tab;\n }\n }\n return indent;\n }; //end getNextLineIndent\n this.checkOutdent = function (state, line, input) {\n return this.$outdent.checkOutdent(line, input);\n };\n this.autoOutdent = function (state, doc, row) {\n this.$outdent.autoOutdent(doc, row);\n };\n this.$id = \"ace/mode/golang\";\n}).call(Mode.prototype);\nexports.Mode = Mode;\n\n}); (function() {\n ace.require([\"ace/mode/golang\"], function(m) {\n if (typeof module == \"object\" && typeof exports == \"object\" && module) {\n module.exports = m;\n }\n });\n })();\n ","ace.define(\"ace/mode/jsdoc_comment_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar TextHighlightRules = require(\"./text_highlight_rules\").TextHighlightRules;\nvar JsDocCommentHighlightRules = function () {\n this.$rules = {\n \"start\": [\n {\n token: [\"comment.doc.tag\", \"comment.doc.text\", \"lparen.doc\"],\n regex: \"(@(?:param|member|typedef|property|namespace|var|const|callback))(\\\\s*)({)\",\n push: [\n {\n token: \"lparen.doc\",\n regex: \"{\",\n push: [\n {\n include: \"doc-syntax\"\n }, {\n token: \"rparen.doc\",\n regex: \"}|(?=$)\",\n next: \"pop\"\n }\n ]\n }, {\n token: [\"rparen.doc\", \"text.doc\", \"variable.parameter.doc\", \"lparen.doc\", \"variable.parameter.doc\", \"rparen.doc\"],\n regex: /(})(\\s*)(?:([\\w=:\\/\\.]+)|(?:(\\[)([\\w=:\\/\\.]+)(\\])))/,\n next: \"pop\"\n }, {\n token: \"rparen.doc\",\n regex: \"}|(?=$)\",\n next: \"pop\"\n }, {\n include: \"doc-syntax\"\n }, {\n defaultToken: \"text.doc\"\n }\n ]\n }, {\n token: [\"comment.doc.tag\", \"text.doc\", \"lparen.doc\"],\n regex: \"(@(?:returns?|yields|type|this|suppress|public|protected|private|package|modifies|\"\n + \"implements|external|exception|throws|enum|define|extends))(\\\\s*)({)\",\n push: [\n {\n token: \"lparen.doc\",\n regex: \"{\",\n push: [\n {\n include: \"doc-syntax\"\n }, {\n token: \"rparen.doc\",\n regex: \"}|(?=$)\",\n next: \"pop\"\n }\n ]\n }, {\n token: \"rparen.doc\",\n regex: \"}|(?=$)\",\n next: \"pop\"\n }, {\n include: \"doc-syntax\"\n }, {\n defaultToken: \"text.doc\"\n }\n ]\n }, {\n token: [\"comment.doc.tag\", \"text.doc\", \"variable.parameter.doc\"],\n regex: \"(@(?:alias|memberof|instance|module|name|lends|namespace|external|this|template|\"\n + \"requires|param|implements|function|extends|typedef|mixes|constructor|var|\"\n + \"memberof\\\\!|event|listens|exports|class|constructs|interface|emits|fires|\"\n + \"throws|const|callback|borrows|augments))(\\\\s+)(\\\\w[\\\\w#\\.:\\/~\\\"\\\\-]*)?\"\n }, {\n token: [\"comment.doc.tag\", \"text.doc\", \"variable.parameter.doc\"],\n regex: \"(@method)(\\\\s+)(\\\\w[\\\\w\\.\\\\(\\\\)]*)\"\n }, {\n token: \"comment.doc.tag\",\n regex: \"@access\\\\s+(?:private|public|protected)\"\n }, {\n token: \"comment.doc.tag\",\n regex: \"@kind\\\\s+(?:class|constant|event|external|file|function|member|mixin|module|namespace|typedef)\"\n }, {\n token: \"comment.doc.tag\",\n regex: \"@\\\\w+(?=\\\\s|$)\"\n },\n JsDocCommentHighlightRules.getTagRule(),\n {\n defaultToken: \"comment.doc\",\n caseInsensitive: true\n }\n ],\n \"doc-syntax\": [{\n token: \"operator.doc\",\n regex: /[|:]/\n }, {\n token: \"paren.doc\",\n regex: /[\\[\\]]/\n }]\n };\n this.normalizeRules();\n};\noop.inherits(JsDocCommentHighlightRules, TextHighlightRules);\nJsDocCommentHighlightRules.getTagRule = function (start) {\n return {\n token: \"comment.doc.tag.storage.type\",\n regex: \"\\\\b(?:TODO|FIXME|XXX|HACK)\\\\b\"\n };\n};\nJsDocCommentHighlightRules.getStartRule = function (start) {\n return {\n token: \"comment.doc\",\n regex: \"\\\\/\\\\*(?=\\\\*)\",\n next: start\n };\n};\nJsDocCommentHighlightRules.getEndRule = function (start) {\n return {\n token: \"comment.doc\",\n regex: \"\\\\*\\\\/\",\n next: start\n };\n};\nexports.JsDocCommentHighlightRules = JsDocCommentHighlightRules;\n\n});\n\nace.define(\"ace/mode/javascript_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/jsdoc_comment_highlight_rules\",\"ace/mode/text_highlight_rules\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar DocCommentHighlightRules = require(\"./jsdoc_comment_highlight_rules\").JsDocCommentHighlightRules;\nvar TextHighlightRules = require(\"./text_highlight_rules\").TextHighlightRules;\nvar identifierRe = \"[a-zA-Z\\\\$_\\u00a1-\\uffff][a-zA-Z\\\\d\\\\$_\\u00a1-\\uffff]*\";\nvar JavaScriptHighlightRules = function (options) {\n var keywordMapper = this.createKeywordMapper({\n \"variable.language\": \"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Symbol|\" + // Constructors\n \"Namespace|QName|XML|XMLList|\" + // E4X\n \"ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|\" +\n \"Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|\" +\n \"Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|\" + // Errors\n \"SyntaxError|TypeError|URIError|\" +\n \"decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|\" + // Non-constructor functions\n \"isNaN|parseFloat|parseInt|\" +\n \"JSON|Math|\" + // Other\n \"this|arguments|prototype|window|document\",\n \"keyword\": \"const|yield|import|get|set|async|await|\" +\n \"break|case|catch|continue|default|delete|do|else|finally|for|function|\" +\n \"if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|\" +\n \"__parent__|__count__|escape|unescape|with|__proto__|\" +\n \"class|enum|extends|super|export|implements|private|public|interface|package|protected|static|constructor\",\n \"storage.type\": \"const|let|var|function\",\n \"constant.language\": \"null|Infinity|NaN|undefined\",\n \"support.function\": \"alert\",\n \"constant.language.boolean\": \"true|false\"\n }, \"identifier\");\n var kwBeforeRe = \"case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void\";\n var escapedRe = \"\\\\\\\\(?:x[0-9a-fA-F]{2}|\" + // hex\n \"u[0-9a-fA-F]{4}|\" + // unicode\n \"u{[0-9a-fA-F]{1,6}}|\" + // es6 unicode\n \"[0-2][0-7]{0,2}|\" + // oct\n \"3[0-7][0-7]?|\" + // oct\n \"[4-7][0-7]?|\" + //oct\n \".)\";\n this.$rules = {\n \"no_regex\": [\n DocCommentHighlightRules.getStartRule(\"doc-start\"),\n comments(\"no_regex\"),\n {\n token: \"string\",\n regex: \"'(?=.)\",\n next: \"qstring\"\n }, {\n token: \"string\",\n regex: '\"(?=.)',\n next: \"qqstring\"\n }, {\n token: \"constant.numeric\",\n regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\\b/\n }, {\n token: \"constant.numeric\",\n regex: /(?:\\d\\d*(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+\\b)?/\n }, {\n token: [\n \"storage.type\", \"punctuation.operator\", \"support.function\",\n \"punctuation.operator\", \"entity.name.function\", \"text\", \"keyword.operator\"\n ],\n regex: \"(\" + identifierRe + \")(\\\\.)(prototype)(\\\\.)(\" + identifierRe + \")(\\\\s*)(=)\",\n next: \"function_arguments\"\n }, {\n token: [\n \"storage.type\", \"punctuation.operator\", \"entity.name.function\", \"text\",\n \"keyword.operator\", \"text\", \"storage.type\", \"text\", \"paren.lparen\"\n ],\n regex: \"(\" + identifierRe + \")(\\\\.)(\" + identifierRe + \")(\\\\s*)(=)(\\\\s*)(function\\\\*?)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token: [\n \"entity.name.function\", \"text\", \"keyword.operator\", \"text\", \"storage.type\",\n \"text\", \"paren.lparen\"\n ],\n regex: \"(\" + identifierRe + \")(\\\\s*)(=)(\\\\s*)(function\\\\*?)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token: [\n \"storage.type\", \"punctuation.operator\", \"entity.name.function\", \"text\",\n \"keyword.operator\", \"text\",\n \"storage.type\", \"text\", \"entity.name.function\", \"text\", \"paren.lparen\"\n ],\n regex: \"(\" + identifierRe + \")(\\\\.)(\" + identifierRe + \")(\\\\s*)(=)(\\\\s*)(function\\\\*?)(\\\\s+)(\\\\w+)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token: [\n \"storage.type\", \"text\", \"entity.name.function\", \"text\", \"paren.lparen\"\n ],\n regex: \"(function\\\\*?)(\\\\s+)(\" + identifierRe + \")(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token: [\n \"entity.name.function\", \"text\", \"punctuation.operator\",\n \"text\", \"storage.type\", \"text\", \"paren.lparen\"\n ],\n regex: \"(\" + identifierRe + \")(\\\\s*)(:)(\\\\s*)(function\\\\*?)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token: [\n \"text\", \"text\", \"storage.type\", \"text\", \"paren.lparen\"\n ],\n regex: \"(:)(\\\\s*)(function\\\\*?)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token: \"keyword\",\n regex: \"from(?=\\\\s*('|\\\"))\"\n }, {\n token: \"keyword\",\n regex: \"(?:\" + kwBeforeRe + \")\\\\b\",\n next: \"start\"\n }, {\n token: \"support.constant\",\n regex: /that\\b/\n }, {\n token: [\"storage.type\", \"punctuation.operator\", \"support.function.firebug\"],\n regex: /(console)(\\.)(warn|info|log|error|time|trace|timeEnd|assert)\\b/\n }, {\n token: keywordMapper,\n regex: identifierRe\n }, {\n token: \"punctuation.operator\",\n regex: /[.](?![.])/,\n next: \"property\"\n }, {\n token: \"storage.type\",\n regex: /=>/,\n next: \"start\"\n }, {\n token: \"keyword.operator\",\n regex: /--|\\+\\+|\\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\\|\\||\\?:|[!$%&*+\\-~\\/^]=?/,\n next: \"start\"\n }, {\n token: \"punctuation.operator\",\n regex: /[?:,;.]/,\n next: \"start\"\n }, {\n token: \"paren.lparen\",\n regex: /[\\[({]/,\n next: \"start\"\n }, {\n token: \"paren.rparen\",\n regex: /[\\])}]/\n }, {\n token: \"comment\",\n regex: /^#!.*$/\n }\n ],\n property: [{\n token: \"text\",\n regex: \"\\\\s+\"\n }, {\n token: [\n \"storage.type\", \"punctuation.operator\", \"entity.name.function\", \"text\",\n \"keyword.operator\", \"text\",\n \"storage.type\", \"text\", \"entity.name.function\", \"text\", \"paren.lparen\"\n ],\n regex: \"(\" + identifierRe + \")(\\\\.)(\" + identifierRe + \")(\\\\s*)(=)(\\\\s*)(function\\\\*?)(?:(\\\\s+)(\\\\w+))?(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token: \"punctuation.operator\",\n regex: /[.](?![.])/\n }, {\n token: \"support.function\",\n regex: /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|lter|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward|rEach)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\\b(?=\\()/\n }, {\n token: \"support.function.dom\",\n regex: /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\\b(?=\\()/\n }, {\n token: \"support.constant\",\n regex: /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\\b/\n }, {\n token: \"identifier\",\n regex: identifierRe\n }, {\n regex: \"\",\n token: \"empty\",\n next: \"no_regex\"\n }\n ],\n \"start\": [\n DocCommentHighlightRules.getStartRule(\"doc-start\"),\n comments(\"start\"),\n {\n token: \"string.regexp\",\n regex: \"\\\\/\",\n next: \"regex\"\n }, {\n token: \"text\",\n regex: \"\\\\s+|^$\",\n next: \"start\"\n }, {\n token: \"empty\",\n regex: \"\",\n next: \"no_regex\"\n }\n ],\n \"regex\": [\n {\n token: \"regexp.keyword.operator\",\n regex: \"\\\\\\\\(?:u[\\\\da-fA-F]{4}|x[\\\\da-fA-F]{2}|.)\"\n }, {\n token: \"string.regexp\",\n regex: \"/[sxngimy]*\",\n next: \"no_regex\"\n }, {\n token: \"invalid\",\n regex: /\\{\\d+\\b,?\\d*\\}[+*]|[+*$^?][+*]|[$^][?]|\\?{3,}/\n }, {\n token: \"constant.language.escape\",\n regex: /\\(\\?[:=!]|\\)|\\{\\d+\\b,?\\d*\\}|[+*]\\?|[()$^+*?.]/\n }, {\n token: \"constant.language.delimiter\",\n regex: /\\|/\n }, {\n token: \"constant.language.escape\",\n regex: /\\[\\^?/,\n next: \"regex_character_class\"\n }, {\n token: \"empty\",\n regex: \"$\",\n next: \"no_regex\"\n }, {\n defaultToken: \"string.regexp\"\n }\n ],\n \"regex_character_class\": [\n {\n token: \"regexp.charclass.keyword.operator\",\n regex: \"\\\\\\\\(?:u[\\\\da-fA-F]{4}|x[\\\\da-fA-F]{2}|.)\"\n }, {\n token: \"constant.language.escape\",\n regex: \"]\",\n next: \"regex\"\n }, {\n token: \"constant.language.escape\",\n regex: \"-\"\n }, {\n token: \"empty\",\n regex: \"$\",\n next: \"no_regex\"\n }, {\n defaultToken: \"string.regexp.charachterclass\"\n }\n ],\n \"default_parameter\": [\n {\n token: \"string\",\n regex: \"'(?=.)\",\n push: [\n {\n token: \"string\",\n regex: \"'|$\",\n next: \"pop\"\n }, {\n include: \"qstring\"\n }\n ]\n }, {\n token: \"string\",\n regex: '\"(?=.)',\n push: [\n {\n token: \"string\",\n regex: '\"|$',\n next: \"pop\"\n }, {\n include: \"qqstring\"\n }\n ]\n }, {\n token: \"constant.language\",\n regex: \"null|Infinity|NaN|undefined\"\n }, {\n token: \"constant.numeric\",\n regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\\b/\n }, {\n token: \"constant.numeric\",\n regex: /(?:\\d\\d*(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+\\b)?/\n }, {\n token: \"punctuation.operator\",\n regex: \",\",\n next: \"function_arguments\"\n }, {\n token: \"text\",\n regex: \"\\\\s+\"\n }, {\n token: \"punctuation.operator\",\n regex: \"$\"\n }, {\n token: \"empty\",\n regex: \"\",\n next: \"no_regex\"\n }\n ],\n \"function_arguments\": [\n comments(\"function_arguments\"),\n {\n token: \"variable.parameter\",\n regex: identifierRe\n }, {\n token: \"punctuation.operator\",\n regex: \",\"\n }, {\n token: \"text\",\n regex: \"\\\\s+\"\n }, {\n token: \"punctuation.operator\",\n regex: \"$\"\n }, {\n token: \"empty\",\n regex: \"\",\n next: \"no_regex\"\n }\n ],\n \"qqstring\": [\n {\n token: \"constant.language.escape\",\n regex: escapedRe\n }, {\n token: \"string\",\n regex: \"\\\\\\\\$\",\n consumeLineEnd: true\n }, {\n token: \"string\",\n regex: '\"|$',\n next: \"no_regex\"\n }, {\n defaultToken: \"string\"\n }\n ],\n \"qstring\": [\n {\n token: \"constant.language.escape\",\n regex: escapedRe\n }, {\n token: \"string\",\n regex: \"\\\\\\\\$\",\n consumeLineEnd: true\n }, {\n token: \"string\",\n regex: \"'|$\",\n next: \"no_regex\"\n }, {\n defaultToken: \"string\"\n }\n ]\n };\n if (!options || !options.noES6) {\n this.$rules.no_regex.unshift({\n regex: \"[{}]\", onMatch: function (val, state, stack) {\n this.next = val == \"{\" ? this.nextState : \"\";\n if (val == \"{\" && stack.length) {\n stack.unshift(\"start\", state);\n }\n else if (val == \"}\" && stack.length) {\n stack.shift();\n this.next = stack.shift();\n if (this.next.indexOf(\"string\") != -1 || this.next.indexOf(\"jsx\") != -1)\n return \"paren.quasi.end\";\n }\n return val == \"{\" ? \"paren.lparen\" : \"paren.rparen\";\n },\n nextState: \"start\"\n }, {\n token: \"string.quasi.start\",\n regex: /`/,\n push: [{\n token: \"constant.language.escape\",\n regex: escapedRe\n }, {\n token: \"paren.quasi.start\",\n regex: /\\${/,\n push: \"start\"\n }, {\n token: \"string.quasi.end\",\n regex: /`/,\n next: \"pop\"\n }, {\n defaultToken: \"string.quasi\"\n }]\n }, {\n token: [\"variable.parameter\", \"text\"],\n regex: \"(\" + identifierRe + \")(\\\\s*)(?=\\\\=>)\"\n }, {\n token: \"paren.lparen\",\n regex: \"(\\\\()(?=.+\\\\s*=>)\",\n next: \"function_arguments\"\n }, {\n token: \"variable.language\",\n regex: \"(?:(?:(?:Weak)?(?:Set|Map))|Promise)\\\\b\"\n });\n this.$rules[\"function_arguments\"].unshift({\n token: \"keyword.operator\",\n regex: \"=\",\n next: \"default_parameter\"\n }, {\n token: \"keyword.operator\",\n regex: \"\\\\.{3}\"\n });\n this.$rules[\"property\"].unshift({\n token: \"support.function\",\n regex: \"(findIndex|repeat|startsWith|endsWith|includes|isSafeInteger|trunc|cbrt|log2|log10|sign|then|catch|\"\n + \"finally|resolve|reject|race|any|all|allSettled|keys|entries|isInteger)\\\\b(?=\\\\()\"\n }, {\n token: \"constant.language\",\n regex: \"(?:MAX_SAFE_INTEGER|MIN_SAFE_INTEGER|EPSILON)\\\\b\"\n });\n if (!options || options.jsx != false)\n JSX.call(this);\n }\n this.embedRules(DocCommentHighlightRules, \"doc-\", [DocCommentHighlightRules.getEndRule(\"no_regex\")]);\n this.normalizeRules();\n};\noop.inherits(JavaScriptHighlightRules, TextHighlightRules);\nfunction JSX() {\n var tagRegex = identifierRe.replace(\"\\\\d\", \"\\\\d\\\\-\");\n var jsxTag = {\n onMatch: function (val, state, stack) {\n var offset = val.charAt(1) == \"/\" ? 2 : 1;\n if (offset == 1) {\n if (state != this.nextState)\n stack.unshift(this.next, this.nextState, 0);\n else\n stack.unshift(this.next);\n stack[2]++;\n }\n else if (offset == 2) {\n if (state == this.nextState) {\n stack[1]--;\n if (!stack[1] || stack[1] < 0) {\n stack.shift();\n stack.shift();\n }\n }\n }\n return [{\n type: \"meta.tag.punctuation.\" + (offset == 1 ? \"\" : \"end-\") + \"tag-open.xml\",\n value: val.slice(0, offset)\n }, {\n type: \"meta.tag.tag-name.xml\",\n value: val.substr(offset)\n }];\n },\n regex: \"\",\n onMatch: function (value, currentState, stack) {\n if (currentState == stack[0])\n stack.shift();\n if (value.length == 2) {\n if (stack[0] == this.nextState)\n stack[1]--;\n if (!stack[1] || stack[1] < 0) {\n stack.splice(0, 2);\n }\n }\n this.next = stack[0] || \"start\";\n return [{ type: this.token, value: value }];\n },\n nextState: \"jsx\"\n },\n jsxJsRule,\n comments(\"jsxAttributes\"),\n {\n token: \"entity.other.attribute-name.xml\",\n regex: tagRegex\n }, {\n token: \"keyword.operator.attribute-equals.xml\",\n regex: \"=\"\n }, {\n token: \"text.tag-whitespace.xml\",\n regex: \"\\\\s+\"\n }, {\n token: \"string.attribute-value.xml\",\n regex: \"'\",\n stateName: \"jsx_attr_q\",\n push: [\n { token: \"string.attribute-value.xml\", regex: \"'\", next: \"pop\" },\n { include: \"reference\" },\n { defaultToken: \"string.attribute-value.xml\" }\n ]\n }, {\n token: \"string.attribute-value.xml\",\n regex: '\"',\n stateName: \"jsx_attr_qq\",\n push: [\n { token: \"string.attribute-value.xml\", regex: '\"', next: \"pop\" },\n { include: \"reference\" },\n { defaultToken: \"string.attribute-value.xml\" }\n ]\n },\n jsxTag\n ];\n this.$rules.reference = [{\n token: \"constant.language.escape.reference.xml\",\n regex: \"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\\\.-]+;)\"\n }];\n}\nfunction comments(next) {\n return [\n {\n token: \"comment\",\n regex: /\\/\\*/,\n next: [\n DocCommentHighlightRules.getTagRule(),\n { token: \"comment\", regex: \"\\\\*\\\\/\", next: next || \"pop\" },\n { defaultToken: \"comment\", caseInsensitive: true }\n ]\n }, {\n token: \"comment\",\n regex: \"\\\\/\\\\/\",\n next: [\n DocCommentHighlightRules.getTagRule(),\n { token: \"comment\", regex: \"$|^\", next: next || \"pop\" },\n { defaultToken: \"comment\", caseInsensitive: true }\n ]\n }\n ];\n}\nexports.JavaScriptHighlightRules = JavaScriptHighlightRules;\n\n});\n\nace.define(\"ace/mode/matching_brace_outdent\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar Range = require(\"../range\").Range;\nvar MatchingBraceOutdent = function () { };\n(function () {\n this.checkOutdent = function (line, input) {\n if (!/^\\s+$/.test(line))\n return false;\n return /^\\s*\\}/.test(input);\n };\n this.autoOutdent = function (doc, row) {\n var line = doc.getLine(row);\n var match = line.match(/^(\\s*\\})/);\n if (!match)\n return 0;\n var column = match[1].length;\n var openBracePos = doc.findMatchingBracket({ row: row, column: column });\n if (!openBracePos || openBracePos.row == row)\n return 0;\n var indent = this.$getIndent(doc.getLine(openBracePos.row));\n doc.replace(new Range(row, 0, row, column - 1), indent);\n };\n this.$getIndent = function (line) {\n return line.match(/^\\s*/)[0];\n };\n}).call(MatchingBraceOutdent.prototype);\nexports.MatchingBraceOutdent = MatchingBraceOutdent;\n\n});\n\nace.define(\"ace/mode/folding/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/range\",\"ace/mode/folding/fold_mode\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../../lib/oop\");\nvar Range = require(\"../../range\").Range;\nvar BaseFoldMode = require(\"./fold_mode\").FoldMode;\nvar FoldMode = exports.FoldMode = function (commentRegex) {\n if (commentRegex) {\n this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.start));\n this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.end));\n }\n};\noop.inherits(FoldMode, BaseFoldMode);\n(function () {\n this.foldingStartMarker = /([\\{\\[\\(])[^\\}\\]\\)]*$|^\\s*(\\/\\*)/;\n this.foldingStopMarker = /^[^\\[\\{\\(]*([\\}\\]\\)])|^[\\s\\*]*(\\*\\/)/;\n this.singleLineBlockCommentRe = /^\\s*(\\/\\*).*\\*\\/\\s*$/;\n this.tripleStarBlockCommentRe = /^\\s*(\\/\\*\\*\\*).*\\*\\/\\s*$/;\n this.startRegionRe = /^\\s*(\\/\\*|\\/\\/)#?region\\b/;\n this._getFoldWidgetBase = this.getFoldWidget;\n this.getFoldWidget = function (session, foldStyle, row) {\n var line = session.getLine(row);\n if (this.singleLineBlockCommentRe.test(line)) {\n if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line))\n return \"\";\n }\n var fw = this._getFoldWidgetBase(session, foldStyle, row);\n if (!fw && this.startRegionRe.test(line))\n return \"start\"; // lineCommentRegionStart\n return fw;\n };\n this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) {\n var line = session.getLine(row);\n if (this.startRegionRe.test(line))\n return this.getCommentRegionBlock(session, line, row);\n var match = line.match(this.foldingStartMarker);\n if (match) {\n var i = match.index;\n if (match[1])\n return this.openingBracketBlock(session, match[1], row, i);\n var range = session.getCommentFoldRange(row, i + match[0].length, 1);\n if (range && !range.isMultiLine()) {\n if (forceMultiline) {\n range = this.getSectionRange(session, row);\n }\n else if (foldStyle != \"all\")\n range = null;\n }\n return range;\n }\n if (foldStyle === \"markbegin\")\n return;\n var match = line.match(this.foldingStopMarker);\n if (match) {\n var i = match.index + match[0].length;\n if (match[1])\n return this.closingBracketBlock(session, match[1], row, i);\n return session.getCommentFoldRange(row, i, -1);\n }\n };\n this.getSectionRange = function (session, row) {\n var line = session.getLine(row);\n var startIndent = line.search(/\\S/);\n var startRow = row;\n var startColumn = line.length;\n row = row + 1;\n var endRow = row;\n var maxRow = session.getLength();\n while (++row < maxRow) {\n line = session.getLine(row);\n var indent = line.search(/\\S/);\n if (indent === -1)\n continue;\n if (startIndent > indent)\n break;\n var subRange = this.getFoldWidgetRange(session, \"all\", row);\n if (subRange) {\n if (subRange.start.row <= startRow) {\n break;\n }\n else if (subRange.isMultiLine()) {\n row = subRange.end.row;\n }\n else if (startIndent == indent) {\n break;\n }\n }\n endRow = row;\n }\n return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);\n };\n this.getCommentRegionBlock = function (session, line, row) {\n var startColumn = line.search(/\\s*$/);\n var maxRow = session.getLength();\n var startRow = row;\n var re = /^\\s*(?:\\/\\*|\\/\\/|--)#?(end)?region\\b/;\n var depth = 1;\n while (++row < maxRow) {\n line = session.getLine(row);\n var m = re.exec(line);\n if (!m)\n continue;\n if (m[1])\n depth--;\n else\n depth++;\n if (!depth)\n break;\n }\n var endRow = row;\n if (endRow > startRow) {\n return new Range(startRow, startColumn, endRow, line.length);\n }\n };\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/javascript\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/javascript_highlight_rules\",\"ace/mode/matching_brace_outdent\",\"ace/worker/worker_client\",\"ace/mode/behaviour/cstyle\",\"ace/mode/folding/cstyle\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar TextMode = require(\"./text\").Mode;\nvar JavaScriptHighlightRules = require(\"./javascript_highlight_rules\").JavaScriptHighlightRules;\nvar MatchingBraceOutdent = require(\"./matching_brace_outdent\").MatchingBraceOutdent;\nvar WorkerClient = require(\"../worker/worker_client\").WorkerClient;\nvar CstyleBehaviour = require(\"./behaviour/cstyle\").CstyleBehaviour;\nvar CStyleFoldMode = require(\"./folding/cstyle\").FoldMode;\nvar Mode = function () {\n this.HighlightRules = JavaScriptHighlightRules;\n this.$outdent = new MatchingBraceOutdent();\n this.$behaviour = new CstyleBehaviour();\n this.foldingRules = new CStyleFoldMode();\n};\noop.inherits(Mode, TextMode);\n(function () {\n this.lineCommentStart = \"//\";\n this.blockComment = { start: \"/*\", end: \"*/\" };\n this.$quotes = { '\"': '\"', \"'\": \"'\", \"`\": \"`\" };\n this.$pairQuotesAfter = {\n \"`\": /\\w/\n };\n this.getNextLineIndent = function (state, line, tab) {\n var indent = this.$getIndent(line);\n var tokenizedLine = this.getTokenizer().getLineTokens(line, state);\n var tokens = tokenizedLine.tokens;\n var endState = tokenizedLine.state;\n if (tokens.length && tokens[tokens.length - 1].type == \"comment\") {\n return indent;\n }\n if (state == \"start\" || state == \"no_regex\") {\n var match = line.match(/^.*(?:\\bcase\\b.*:|[\\{\\(\\[])\\s*$/);\n if (match) {\n indent += tab;\n }\n }\n else if (state == \"doc-start\") {\n if (endState == \"start\" || endState == \"no_regex\") {\n return \"\";\n }\n var match = line.match(/^\\s*(\\/?)\\*/);\n if (match) {\n if (match[1]) {\n indent += \" \";\n }\n indent += \"* \";\n }\n }\n return indent;\n };\n this.checkOutdent = function (state, line, input) {\n return this.$outdent.checkOutdent(line, input);\n };\n this.autoOutdent = function (state, doc, row) {\n this.$outdent.autoOutdent(doc, row);\n };\n this.createWorker = function (session) {\n var worker = new WorkerClient([\"ace\"], \"ace/mode/javascript_worker\", \"JavaScriptWorker\");\n worker.attachToDocument(session.getDocument());\n worker.on(\"annotate\", function (results) {\n session.setAnnotations(results.data);\n });\n worker.on(\"terminate\", function () {\n session.clearAnnotations();\n });\n return worker;\n };\n this.$id = \"ace/mode/javascript\";\n this.snippetFileId = \"ace/snippets/javascript\";\n}).call(Mode.prototype);\nexports.Mode = Mode;\n\n}); (function() {\n ace.require([\"ace/mode/javascript\"], function(m) {\n if (typeof module == \"object\" && typeof exports == \"object\" && module) {\n module.exports = m;\n }\n });\n })();\n ","ace.define(\"ace/mode/json_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar TextHighlightRules = require(\"./text_highlight_rules\").TextHighlightRules;\nvar JsonHighlightRules = function () {\n this.$rules = {\n \"start\": [\n {\n token: \"variable\",\n regex: '[\"](?:(?:\\\\\\\\.)|(?:[^\"\\\\\\\\]))*?[\"]\\\\s*(?=:)'\n }, {\n token: \"string\",\n regex: '\"',\n next: \"string\"\n }, {\n token: \"constant.numeric\",\n regex: \"0[xX][0-9a-fA-F]+\\\\b\"\n }, {\n token: \"constant.numeric\",\n regex: \"[+-]?\\\\d+(?:(?:\\\\.\\\\d*)?(?:[eE][+-]?\\\\d+)?)?\\\\b\"\n }, {\n token: \"constant.language.boolean\",\n regex: \"(?:true|false)\\\\b\"\n }, {\n token: \"text\",\n regex: \"['](?:(?:\\\\\\\\.)|(?:[^'\\\\\\\\]))*?[']\"\n }, {\n token: \"comment\",\n regex: \"\\\\/\\\\/.*$\"\n }, {\n token: \"comment.start\",\n regex: \"\\\\/\\\\*\",\n next: \"comment\"\n }, {\n token: \"paren.lparen\",\n regex: \"[[({]\"\n }, {\n token: \"paren.rparen\",\n regex: \"[\\\\])}]\"\n }, {\n token: \"punctuation.operator\",\n regex: /[,]/\n }, {\n token: \"text\",\n regex: \"\\\\s+\"\n }\n ],\n \"string\": [\n {\n token: \"constant.language.escape\",\n regex: /\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|[\"\\\\\\/bfnrt])/\n }, {\n token: \"string\",\n regex: '\"|$',\n next: \"start\"\n }, {\n defaultToken: \"string\"\n }\n ],\n \"comment\": [\n {\n token: \"comment.end\",\n regex: \"\\\\*\\\\/\",\n next: \"start\"\n }, {\n defaultToken: \"comment\"\n }\n ]\n };\n};\noop.inherits(JsonHighlightRules, TextHighlightRules);\nexports.JsonHighlightRules = JsonHighlightRules;\n\n});\n\nace.define(\"ace/mode/matching_brace_outdent\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar Range = require(\"../range\").Range;\nvar MatchingBraceOutdent = function () { };\n(function () {\n this.checkOutdent = function (line, input) {\n if (!/^\\s+$/.test(line))\n return false;\n return /^\\s*\\}/.test(input);\n };\n this.autoOutdent = function (doc, row) {\n var line = doc.getLine(row);\n var match = line.match(/^(\\s*\\})/);\n if (!match)\n return 0;\n var column = match[1].length;\n var openBracePos = doc.findMatchingBracket({ row: row, column: column });\n if (!openBracePos || openBracePos.row == row)\n return 0;\n var indent = this.$getIndent(doc.getLine(openBracePos.row));\n doc.replace(new Range(row, 0, row, column - 1), indent);\n };\n this.$getIndent = function (line) {\n return line.match(/^\\s*/)[0];\n };\n}).call(MatchingBraceOutdent.prototype);\nexports.MatchingBraceOutdent = MatchingBraceOutdent;\n\n});\n\nace.define(\"ace/mode/folding/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/range\",\"ace/mode/folding/fold_mode\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../../lib/oop\");\nvar Range = require(\"../../range\").Range;\nvar BaseFoldMode = require(\"./fold_mode\").FoldMode;\nvar FoldMode = exports.FoldMode = function (commentRegex) {\n if (commentRegex) {\n this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.start));\n this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.end));\n }\n};\noop.inherits(FoldMode, BaseFoldMode);\n(function () {\n this.foldingStartMarker = /([\\{\\[\\(])[^\\}\\]\\)]*$|^\\s*(\\/\\*)/;\n this.foldingStopMarker = /^[^\\[\\{\\(]*([\\}\\]\\)])|^[\\s\\*]*(\\*\\/)/;\n this.singleLineBlockCommentRe = /^\\s*(\\/\\*).*\\*\\/\\s*$/;\n this.tripleStarBlockCommentRe = /^\\s*(\\/\\*\\*\\*).*\\*\\/\\s*$/;\n this.startRegionRe = /^\\s*(\\/\\*|\\/\\/)#?region\\b/;\n this._getFoldWidgetBase = this.getFoldWidget;\n this.getFoldWidget = function (session, foldStyle, row) {\n var line = session.getLine(row);\n if (this.singleLineBlockCommentRe.test(line)) {\n if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line))\n return \"\";\n }\n var fw = this._getFoldWidgetBase(session, foldStyle, row);\n if (!fw && this.startRegionRe.test(line))\n return \"start\"; // lineCommentRegionStart\n return fw;\n };\n this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) {\n var line = session.getLine(row);\n if (this.startRegionRe.test(line))\n return this.getCommentRegionBlock(session, line, row);\n var match = line.match(this.foldingStartMarker);\n if (match) {\n var i = match.index;\n if (match[1])\n return this.openingBracketBlock(session, match[1], row, i);\n var range = session.getCommentFoldRange(row, i + match[0].length, 1);\n if (range && !range.isMultiLine()) {\n if (forceMultiline) {\n range = this.getSectionRange(session, row);\n }\n else if (foldStyle != \"all\")\n range = null;\n }\n return range;\n }\n if (foldStyle === \"markbegin\")\n return;\n var match = line.match(this.foldingStopMarker);\n if (match) {\n var i = match.index + match[0].length;\n if (match[1])\n return this.closingBracketBlock(session, match[1], row, i);\n return session.getCommentFoldRange(row, i, -1);\n }\n };\n this.getSectionRange = function (session, row) {\n var line = session.getLine(row);\n var startIndent = line.search(/\\S/);\n var startRow = row;\n var startColumn = line.length;\n row = row + 1;\n var endRow = row;\n var maxRow = session.getLength();\n while (++row < maxRow) {\n line = session.getLine(row);\n var indent = line.search(/\\S/);\n if (indent === -1)\n continue;\n if (startIndent > indent)\n break;\n var subRange = this.getFoldWidgetRange(session, \"all\", row);\n if (subRange) {\n if (subRange.start.row <= startRow) {\n break;\n }\n else if (subRange.isMultiLine()) {\n row = subRange.end.row;\n }\n else if (startIndent == indent) {\n break;\n }\n }\n endRow = row;\n }\n return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);\n };\n this.getCommentRegionBlock = function (session, line, row) {\n var startColumn = line.search(/\\s*$/);\n var maxRow = session.getLength();\n var startRow = row;\n var re = /^\\s*(?:\\/\\*|\\/\\/|--)#?(end)?region\\b/;\n var depth = 1;\n while (++row < maxRow) {\n line = session.getLine(row);\n var m = re.exec(line);\n if (!m)\n continue;\n if (m[1])\n depth--;\n else\n depth++;\n if (!depth)\n break;\n }\n var endRow = row;\n if (endRow > startRow) {\n return new Range(startRow, startColumn, endRow, line.length);\n }\n };\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/json\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/json_highlight_rules\",\"ace/mode/matching_brace_outdent\",\"ace/mode/folding/cstyle\",\"ace/worker/worker_client\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar TextMode = require(\"./text\").Mode;\nvar HighlightRules = require(\"./json_highlight_rules\").JsonHighlightRules;\nvar MatchingBraceOutdent = require(\"./matching_brace_outdent\").MatchingBraceOutdent;\nvar CStyleFoldMode = require(\"./folding/cstyle\").FoldMode;\nvar WorkerClient = require(\"../worker/worker_client\").WorkerClient;\nvar Mode = function () {\n this.HighlightRules = HighlightRules;\n this.$outdent = new MatchingBraceOutdent();\n this.$behaviour = this.$defaultBehaviour;\n this.foldingRules = new CStyleFoldMode();\n};\noop.inherits(Mode, TextMode);\n(function () {\n this.lineCommentStart = \"//\";\n this.blockComment = { start: \"/*\", end: \"*/\" };\n this.getNextLineIndent = function (state, line, tab) {\n var indent = this.$getIndent(line);\n if (state == \"start\") {\n var match = line.match(/^.*[\\{\\(\\[]\\s*$/);\n if (match) {\n indent += tab;\n }\n }\n return indent;\n };\n this.checkOutdent = function (state, line, input) {\n return this.$outdent.checkOutdent(line, input);\n };\n this.autoOutdent = function (state, doc, row) {\n this.$outdent.autoOutdent(doc, row);\n };\n this.createWorker = function (session) {\n var worker = new WorkerClient([\"ace\"], \"ace/mode/json_worker\", \"JsonWorker\");\n worker.attachToDocument(session.getDocument());\n worker.on(\"annotate\", function (e) {\n session.setAnnotations(e.data);\n });\n worker.on(\"terminate\", function () {\n session.clearAnnotations();\n });\n return worker;\n };\n this.$id = \"ace/mode/json\";\n}).call(Mode.prototype);\nexports.Mode = Mode;\n\n}); (function() {\n ace.require([\"ace/mode/json\"], function(m) {\n if (typeof module == \"object\" && typeof exports == \"object\" && module) {\n module.exports = m;\n }\n });\n })();\n ","ace.define(\"ace/mode/doc_comment_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar TextHighlightRules = require(\"./text_highlight_rules\").TextHighlightRules;\nvar DocCommentHighlightRules = function () {\n this.$rules = {\n \"start\": [\n {\n token: \"comment.doc.tag\",\n regex: \"@\\\\w+(?=\\\\s|$)\"\n }, DocCommentHighlightRules.getTagRule(), {\n defaultToken: \"comment.doc\",\n caseInsensitive: true\n }\n ]\n };\n};\noop.inherits(DocCommentHighlightRules, TextHighlightRules);\nDocCommentHighlightRules.getTagRule = function (start) {\n return {\n token: \"comment.doc.tag.storage.type\",\n regex: \"\\\\b(?:TODO|FIXME|XXX|HACK)\\\\b\"\n };\n};\nDocCommentHighlightRules.getStartRule = function (start) {\n return {\n token: \"comment.doc\",\n regex: \"\\\\/\\\\*(?=\\\\*)\",\n next: start\n };\n};\nDocCommentHighlightRules.getEndRule = function (start) {\n return {\n token: \"comment.doc\",\n regex: \"\\\\*\\\\/\",\n next: start\n };\n};\nexports.DocCommentHighlightRules = DocCommentHighlightRules;\n\n});\n\nace.define(\"ace/mode/jsx_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/mode/doc_comment_highlight_rules\",\"ace/mode/text_highlight_rules\"], function(require, exports, module){var oop = require(\"../lib/oop\");\nvar lang = require(\"../lib/lang\");\nvar DocCommentHighlightRules = require(\"./doc_comment_highlight_rules\").DocCommentHighlightRules;\nvar TextHighlightRules = require(\"./text_highlight_rules\").TextHighlightRules;\nvar JsxHighlightRules = function () {\n var keywords = lang.arrayToMap((\"break|do|instanceof|typeof|case|else|new|var|catch|finally|return|void|continue|for|switch|default|while|function|this|\" +\n \"if|throw|\" +\n \"delete|in|try|\" +\n \"class|extends|super|import|from|into|implements|interface|static|mixin|override|abstract|final|\" +\n \"number|int|string|boolean|variant|\" +\n \"log|assert\").split(\"|\"));\n var buildinConstants = lang.arrayToMap((\"null|true|false|NaN|Infinity|__FILE__|__LINE__|undefined\").split(\"|\"));\n var reserved = lang.arrayToMap((\"debugger|with|\" +\n \"const|export|\" +\n \"let|private|public|yield|protected|\" +\n \"extern|native|as|operator|__fake__|__readonly__\").split(\"|\"));\n var identifierRe = \"[a-zA-Z_][a-zA-Z0-9_]*\\\\b\";\n this.$rules = {\n \"start\": [\n {\n token: \"comment\",\n regex: \"\\\\/\\\\/.*$\"\n },\n DocCommentHighlightRules.getStartRule(\"doc-start\"),\n {\n token: \"comment\",\n regex: \"\\\\/\\\\*\",\n next: \"comment\"\n }, {\n token: \"string.regexp\",\n regex: \"[/](?:(?:\\\\[(?:\\\\\\\\]|[^\\\\]])+\\\\])|(?:\\\\\\\\/|[^\\\\]/]))*[/]\\\\w*\\\\s*(?=[).,;]|$)\"\n }, {\n token: \"string\",\n regex: '[\"](?:(?:\\\\\\\\.)|(?:[^\"\\\\\\\\]))*?[\"]'\n }, {\n token: \"string\",\n regex: \"['](?:(?:\\\\\\\\.)|(?:[^'\\\\\\\\]))*?[']\"\n }, {\n token: \"constant.numeric\",\n regex: \"0[xX][0-9a-fA-F]+\\\\b\"\n }, {\n token: \"constant.numeric\",\n regex: \"[+-]?\\\\d+(?:(?:\\\\.\\\\d*)?(?:[eE][+-]?\\\\d+)?)?\\\\b\"\n }, {\n token: \"constant.language.boolean\",\n regex: \"(?:true|false)\\\\b\"\n }, {\n token: [\n \"storage.type\",\n \"text\",\n \"entity.name.function\"\n ],\n regex: \"(function)(\\\\s+)(\" + identifierRe + \")\"\n }, {\n token: function (value) {\n if (value == \"this\")\n return \"variable.language\";\n else if (value == \"function\")\n return \"storage.type\";\n else if (keywords.hasOwnProperty(value) || reserved.hasOwnProperty(value))\n return \"keyword\";\n else if (buildinConstants.hasOwnProperty(value))\n return \"constant.language\";\n else if (/^_?[A-Z][a-zA-Z0-9_]*$/.test(value))\n return \"language.support.class\";\n else\n return \"identifier\";\n },\n regex: identifierRe\n }, {\n token: \"keyword.operator\",\n regex: \"!|%|&|\\\\*|\\\\-\\\\-|\\\\-|\\\\+\\\\+|\\\\+|~|==|=|!=|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\\\|\\\\||\\\\?\\\\:|\\\\*=|%=|\\\\+=|\\\\-=|&=|\\\\^=|\\\\b(?:in|instanceof|new|delete|typeof|void)\"\n }, {\n token: \"punctuation.operator\",\n regex: \"\\\\?|\\\\:|\\\\,|\\\\;|\\\\.\"\n }, {\n token: \"paren.lparen\",\n regex: \"[[({<]\"\n }, {\n token: \"paren.rparen\",\n regex: \"[\\\\])}>]\"\n }, {\n token: \"text\",\n regex: \"\\\\s+\"\n }\n ],\n \"comment\": [\n {\n token: \"comment\",\n regex: \"\\\\*\\\\/\",\n next: \"start\"\n }, {\n defaultToken: \"comment\"\n }\n ]\n };\n this.embedRules(DocCommentHighlightRules, \"doc-\", [DocCommentHighlightRules.getEndRule(\"start\")]);\n};\noop.inherits(JsxHighlightRules, TextHighlightRules);\nexports.JsxHighlightRules = JsxHighlightRules;\n\n});\n\nace.define(\"ace/mode/matching_brace_outdent\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar Range = require(\"../range\").Range;\nvar MatchingBraceOutdent = function () { };\n(function () {\n this.checkOutdent = function (line, input) {\n if (!/^\\s+$/.test(line))\n return false;\n return /^\\s*\\}/.test(input);\n };\n this.autoOutdent = function (doc, row) {\n var line = doc.getLine(row);\n var match = line.match(/^(\\s*\\})/);\n if (!match)\n return 0;\n var column = match[1].length;\n var openBracePos = doc.findMatchingBracket({ row: row, column: column });\n if (!openBracePos || openBracePos.row == row)\n return 0;\n var indent = this.$getIndent(doc.getLine(openBracePos.row));\n doc.replace(new Range(row, 0, row, column - 1), indent);\n };\n this.$getIndent = function (line) {\n return line.match(/^\\s*/)[0];\n };\n}).call(MatchingBraceOutdent.prototype);\nexports.MatchingBraceOutdent = MatchingBraceOutdent;\n\n});\n\nace.define(\"ace/mode/folding/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/range\",\"ace/mode/folding/fold_mode\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../../lib/oop\");\nvar Range = require(\"../../range\").Range;\nvar BaseFoldMode = require(\"./fold_mode\").FoldMode;\nvar FoldMode = exports.FoldMode = function (commentRegex) {\n if (commentRegex) {\n this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.start));\n this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.end));\n }\n};\noop.inherits(FoldMode, BaseFoldMode);\n(function () {\n this.foldingStartMarker = /([\\{\\[\\(])[^\\}\\]\\)]*$|^\\s*(\\/\\*)/;\n this.foldingStopMarker = /^[^\\[\\{\\(]*([\\}\\]\\)])|^[\\s\\*]*(\\*\\/)/;\n this.singleLineBlockCommentRe = /^\\s*(\\/\\*).*\\*\\/\\s*$/;\n this.tripleStarBlockCommentRe = /^\\s*(\\/\\*\\*\\*).*\\*\\/\\s*$/;\n this.startRegionRe = /^\\s*(\\/\\*|\\/\\/)#?region\\b/;\n this._getFoldWidgetBase = this.getFoldWidget;\n this.getFoldWidget = function (session, foldStyle, row) {\n var line = session.getLine(row);\n if (this.singleLineBlockCommentRe.test(line)) {\n if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line))\n return \"\";\n }\n var fw = this._getFoldWidgetBase(session, foldStyle, row);\n if (!fw && this.startRegionRe.test(line))\n return \"start\"; // lineCommentRegionStart\n return fw;\n };\n this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) {\n var line = session.getLine(row);\n if (this.startRegionRe.test(line))\n return this.getCommentRegionBlock(session, line, row);\n var match = line.match(this.foldingStartMarker);\n if (match) {\n var i = match.index;\n if (match[1])\n return this.openingBracketBlock(session, match[1], row, i);\n var range = session.getCommentFoldRange(row, i + match[0].length, 1);\n if (range && !range.isMultiLine()) {\n if (forceMultiline) {\n range = this.getSectionRange(session, row);\n }\n else if (foldStyle != \"all\")\n range = null;\n }\n return range;\n }\n if (foldStyle === \"markbegin\")\n return;\n var match = line.match(this.foldingStopMarker);\n if (match) {\n var i = match.index + match[0].length;\n if (match[1])\n return this.closingBracketBlock(session, match[1], row, i);\n return session.getCommentFoldRange(row, i, -1);\n }\n };\n this.getSectionRange = function (session, row) {\n var line = session.getLine(row);\n var startIndent = line.search(/\\S/);\n var startRow = row;\n var startColumn = line.length;\n row = row + 1;\n var endRow = row;\n var maxRow = session.getLength();\n while (++row < maxRow) {\n line = session.getLine(row);\n var indent = line.search(/\\S/);\n if (indent === -1)\n continue;\n if (startIndent > indent)\n break;\n var subRange = this.getFoldWidgetRange(session, \"all\", row);\n if (subRange) {\n if (subRange.start.row <= startRow) {\n break;\n }\n else if (subRange.isMultiLine()) {\n row = subRange.end.row;\n }\n else if (startIndent == indent) {\n break;\n }\n }\n endRow = row;\n }\n return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);\n };\n this.getCommentRegionBlock = function (session, line, row) {\n var startColumn = line.search(/\\s*$/);\n var maxRow = session.getLength();\n var startRow = row;\n var re = /^\\s*(?:\\/\\*|\\/\\/|--)#?(end)?region\\b/;\n var depth = 1;\n while (++row < maxRow) {\n line = session.getLine(row);\n var m = re.exec(line);\n if (!m)\n continue;\n if (m[1])\n depth--;\n else\n depth++;\n if (!depth)\n break;\n }\n var endRow = row;\n if (endRow > startRow) {\n return new Range(startRow, startColumn, endRow, line.length);\n }\n };\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/jsx\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/jsx_highlight_rules\",\"ace/mode/matching_brace_outdent\",\"ace/mode/folding/cstyle\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar TextMode = require(\"./text\").Mode;\nvar JsxHighlightRules = require(\"./jsx_highlight_rules\").JsxHighlightRules;\nvar MatchingBraceOutdent = require(\"./matching_brace_outdent\").MatchingBraceOutdent;\nvar CStyleFoldMode = require(\"./folding/cstyle\").FoldMode;\nfunction Mode() {\n this.HighlightRules = JsxHighlightRules;\n this.$outdent = new MatchingBraceOutdent();\n this.$behaviour = this.$defaultBehaviour;\n this.foldingRules = new CStyleFoldMode();\n}\noop.inherits(Mode, TextMode);\n(function () {\n this.lineCommentStart = \"//\";\n this.blockComment = { start: \"/*\", end: \"*/\" };\n this.getNextLineIndent = function (state, line, tab) {\n var indent = this.$getIndent(line);\n var tokenizedLine = this.getTokenizer().getLineTokens(line, state);\n var tokens = tokenizedLine.tokens;\n if (tokens.length && tokens[tokens.length - 1].type == \"comment\") {\n return indent;\n }\n if (state == \"start\") {\n var match = line.match(/^.*[\\{\\(\\[]\\s*$/);\n if (match) {\n indent += tab;\n }\n }\n return indent;\n };\n this.checkOutdent = function (state, line, input) {\n return this.$outdent.checkOutdent(line, input);\n };\n this.autoOutdent = function (state, doc, row) {\n this.$outdent.autoOutdent(doc, row);\n };\n this.$id = \"ace/mode/jsx\";\n}).call(Mode.prototype);\nexports.Mode = Mode;\n\n}); (function() {\n ace.require([\"ace/mode/jsx\"], function(m) {\n if (typeof module == \"object\" && typeof exports == \"object\" && module) {\n module.exports = m;\n }\n });\n })();\n ","ace.define(\"ace/mode/python_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(require, exports, module){/*\n * TODO: python delimiters\n */\n\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar TextHighlightRules = require(\"./text_highlight_rules\").TextHighlightRules;\nvar PythonHighlightRules = function () {\n var keywords = (\"and|as|assert|break|class|continue|def|del|elif|else|except|exec|\" +\n \"finally|for|from|global|if|import|in|is|lambda|not|or|pass|print|\" +\n \"raise|return|try|while|with|yield|async|await|nonlocal\");\n var builtinConstants = (\"True|False|None|NotImplemented|Ellipsis|__debug__\");\n var builtinFunctions = (\"abs|divmod|input|open|staticmethod|all|enumerate|int|ord|str|any|\" +\n \"eval|isinstance|pow|sum|basestring|execfile|issubclass|print|super|\" +\n \"binfile|bin|iter|property|tuple|bool|filter|len|range|type|bytearray|\" +\n \"float|list|raw_input|unichr|callable|format|locals|reduce|unicode|\" +\n \"chr|frozenset|long|reload|vars|classmethod|getattr|map|repr|xrange|\" +\n \"cmp|globals|max|reversed|zip|compile|hasattr|memoryview|round|\" +\n \"__import__|complex|hash|min|apply|delattr|help|next|setattr|set|\" +\n \"buffer|dict|hex|object|slice|coerce|dir|id|oct|sorted|intern|\" +\n \"ascii|breakpoint|bytes\");\n var keywordMapper = this.createKeywordMapper({\n \"invalid.deprecated\": \"debugger\",\n \"support.function\": builtinFunctions,\n \"variable.language\": \"self|cls\",\n \"constant.language\": builtinConstants,\n \"keyword\": keywords\n }, \"identifier\");\n var strPre = \"[uU]?\";\n var strRawPre = \"[rR]\";\n var strFormatPre = \"[fF]\";\n var strRawFormatPre = \"(?:[rR][fF]|[fF][rR])\";\n var decimalInteger = \"(?:(?:[1-9]\\\\d*)|(?:0))\";\n var octInteger = \"(?:0[oO]?[0-7]+)\";\n var hexInteger = \"(?:0[xX][\\\\dA-Fa-f]+)\";\n var binInteger = \"(?:0[bB][01]+)\";\n var integer = \"(?:\" + decimalInteger + \"|\" + octInteger + \"|\" + hexInteger + \"|\" + binInteger + \")\";\n var exponent = \"(?:[eE][+-]?\\\\d+)\";\n var fraction = \"(?:\\\\.\\\\d+)\";\n var intPart = \"(?:\\\\d+)\";\n var pointFloat = \"(?:(?:\" + intPart + \"?\" + fraction + \")|(?:\" + intPart + \"\\\\.))\";\n var exponentFloat = \"(?:(?:\" + pointFloat + \"|\" + intPart + \")\" + exponent + \")\";\n var floatNumber = \"(?:\" + exponentFloat + \"|\" + pointFloat + \")\";\n var stringEscape = \"\\\\\\\\(x[0-9A-Fa-f]{2}|[0-7]{3}|[\\\\\\\\abfnrtv'\\\"]|U[0-9A-Fa-f]{8}|u[0-9A-Fa-f]{4})\";\n this.$rules = {\n \"start\": [{\n token: \"comment\",\n regex: \"#.*$\"\n }, {\n token: \"string\",\n regex: strPre + '\"{3}',\n next: \"qqstring3\"\n }, {\n token: \"string\",\n regex: strPre + '\"(?=.)',\n next: \"qqstring\"\n }, {\n token: \"string\",\n regex: strPre + \"'{3}\",\n next: \"qstring3\"\n }, {\n token: \"string\",\n regex: strPre + \"'(?=.)\",\n next: \"qstring\"\n }, {\n token: \"string\",\n regex: strRawPre + '\"{3}',\n next: \"rawqqstring3\"\n }, {\n token: \"string\",\n regex: strRawPre + '\"(?=.)',\n next: \"rawqqstring\"\n }, {\n token: \"string\",\n regex: strRawPre + \"'{3}\",\n next: \"rawqstring3\"\n }, {\n token: \"string\",\n regex: strRawPre + \"'(?=.)\",\n next: \"rawqstring\"\n }, {\n token: \"string\",\n regex: strFormatPre + '\"{3}',\n next: \"fqqstring3\"\n }, {\n token: \"string\",\n regex: strFormatPre + '\"(?=.)',\n next: \"fqqstring\"\n }, {\n token: \"string\",\n regex: strFormatPre + \"'{3}\",\n next: \"fqstring3\"\n }, {\n token: \"string\",\n regex: strFormatPre + \"'(?=.)\",\n next: \"fqstring\"\n }, {\n token: \"string\",\n regex: strRawFormatPre + '\"{3}',\n next: \"rfqqstring3\"\n }, {\n token: \"string\",\n regex: strRawFormatPre + '\"(?=.)',\n next: \"rfqqstring\"\n }, {\n token: \"string\",\n regex: strRawFormatPre + \"'{3}\",\n next: \"rfqstring3\"\n }, {\n token: \"string\",\n regex: strRawFormatPre + \"'(?=.)\",\n next: \"rfqstring\"\n }, {\n token: \"keyword.operator\",\n regex: \"\\\\+|\\\\-|\\\\*|\\\\*\\\\*|\\\\/|\\\\/\\\\/|%|@|<<|>>|&|\\\\||\\\\^|~|<|>|<=|=>|==|!=|<>|=\"\n }, {\n token: \"punctuation\",\n regex: \",|:|;|\\\\->|\\\\+=|\\\\-=|\\\\*=|\\\\/=|\\\\/\\\\/=|%=|@=|&=|\\\\|=|^=|>>=|<<=|\\\\*\\\\*=\"\n }, {\n token: \"paren.lparen\",\n regex: \"[\\\\[\\\\(\\\\{]\"\n }, {\n token: \"paren.rparen\",\n regex: \"[\\\\]\\\\)\\\\}]\"\n }, {\n token: [\"keyword\", \"text\", \"entity.name.function\"],\n regex: \"(def|class)(\\\\s+)([\\\\u00BF-\\\\u1FFF\\\\u2C00-\\\\uD7FF\\\\w]+)\"\n }, {\n token: \"text\",\n regex: \"\\\\s+\"\n }, {\n include: \"constants\"\n }],\n \"qqstring3\": [{\n token: \"constant.language.escape\",\n regex: stringEscape\n }, {\n token: \"string\",\n regex: '\"{3}',\n next: \"start\"\n }, {\n defaultToken: \"string\"\n }],\n \"qstring3\": [{\n token: \"constant.language.escape\",\n regex: stringEscape\n }, {\n token: \"string\",\n regex: \"'{3}\",\n next: \"start\"\n }, {\n defaultToken: \"string\"\n }],\n \"qqstring\": [{\n token: \"constant.language.escape\",\n regex: stringEscape\n }, {\n token: \"string\",\n regex: \"\\\\\\\\$\",\n next: \"qqstring\"\n }, {\n token: \"string\",\n regex: '\"|$',\n next: \"start\"\n }, {\n defaultToken: \"string\"\n }],\n \"qstring\": [{\n token: \"constant.language.escape\",\n regex: stringEscape\n }, {\n token: \"string\",\n regex: \"\\\\\\\\$\",\n next: \"qstring\"\n }, {\n token: \"string\",\n regex: \"'|$\",\n next: \"start\"\n }, {\n defaultToken: \"string\"\n }],\n \"rawqqstring3\": [{\n token: \"string\",\n regex: '\"{3}',\n next: \"start\"\n }, {\n defaultToken: \"string\"\n }],\n \"rawqstring3\": [{\n token: \"string\",\n regex: \"'{3}\",\n next: \"start\"\n }, {\n defaultToken: \"string\"\n }],\n \"rawqqstring\": [{\n token: \"string\",\n regex: \"\\\\\\\\$\",\n next: \"rawqqstring\"\n }, {\n token: \"string\",\n regex: '\"|$',\n next: \"start\"\n }, {\n defaultToken: \"string\"\n }],\n \"rawqstring\": [{\n token: \"string\",\n regex: \"\\\\\\\\$\",\n next: \"rawqstring\"\n }, {\n token: \"string\",\n regex: \"'|$\",\n next: \"start\"\n }, {\n defaultToken: \"string\"\n }],\n \"fqqstring3\": [{\n token: \"constant.language.escape\",\n regex: stringEscape\n }, {\n token: \"string\",\n regex: '\"{3}',\n next: \"start\"\n }, {\n token: \"paren.lparen\",\n regex: \"{\",\n push: \"fqstringParRules\"\n }, {\n defaultToken: \"string\"\n }],\n \"fqstring3\": [{\n token: \"constant.language.escape\",\n regex: stringEscape\n }, {\n token: \"string\",\n regex: \"'{3}\",\n next: \"start\"\n }, {\n token: \"paren.lparen\",\n regex: \"{\",\n push: \"fqstringParRules\"\n }, {\n defaultToken: \"string\"\n }],\n \"fqqstring\": [{\n token: \"constant.language.escape\",\n regex: stringEscape\n }, {\n token: \"string\",\n regex: \"\\\\\\\\$\",\n next: \"fqqstring\"\n }, {\n token: \"string\",\n regex: '\"|$',\n next: \"start\"\n }, {\n token: \"paren.lparen\",\n regex: \"{\",\n push: \"fqstringParRules\"\n }, {\n defaultToken: \"string\"\n }],\n \"fqstring\": [{\n token: \"constant.language.escape\",\n regex: stringEscape\n }, {\n token: \"string\",\n regex: \"'|$\",\n next: \"start\"\n }, {\n token: \"paren.lparen\",\n regex: \"{\",\n push: \"fqstringParRules\"\n }, {\n defaultToken: \"string\"\n }],\n \"rfqqstring3\": [{\n token: \"string\",\n regex: '\"{3}',\n next: \"start\"\n }, {\n token: \"paren.lparen\",\n regex: \"{\",\n push: \"fqstringParRules\"\n }, {\n defaultToken: \"string\"\n }],\n \"rfqstring3\": [{\n token: \"string\",\n regex: \"'{3}\",\n next: \"start\"\n }, {\n token: \"paren.lparen\",\n regex: \"{\",\n push: \"fqstringParRules\"\n }, {\n defaultToken: \"string\"\n }],\n \"rfqqstring\": [{\n token: \"string\",\n regex: \"\\\\\\\\$\",\n next: \"rfqqstring\"\n }, {\n token: \"string\",\n regex: '\"|$',\n next: \"start\"\n }, {\n token: \"paren.lparen\",\n regex: \"{\",\n push: \"fqstringParRules\"\n }, {\n defaultToken: \"string\"\n }],\n \"rfqstring\": [{\n token: \"string\",\n regex: \"'|$\",\n next: \"start\"\n }, {\n token: \"paren.lparen\",\n regex: \"{\",\n push: \"fqstringParRules\"\n }, {\n defaultToken: \"string\"\n }],\n \"fqstringParRules\": [{\n token: \"paren.lparen\",\n regex: \"[\\\\[\\\\(]\"\n }, {\n token: \"paren.rparen\",\n regex: \"[\\\\]\\\\)]\"\n }, {\n token: \"string\",\n regex: \"\\\\s+\"\n }, {\n token: \"string\",\n regex: \"'[^']*'\"\n }, {\n token: \"string\",\n regex: '\"[^\"]*\"'\n }, {\n token: \"function.support\",\n regex: \"(!s|!r|!a)\"\n }, {\n include: \"constants\"\n }, {\n token: 'paren.rparen',\n regex: \"}\",\n next: 'pop'\n }, {\n token: 'paren.lparen',\n regex: \"{\",\n push: \"fqstringParRules\"\n }],\n \"constants\": [{\n token: \"constant.numeric\",\n regex: \"(?:\" + floatNumber + \"|\\\\d+)[jJ]\\\\b\"\n }, {\n token: \"constant.numeric\",\n regex: floatNumber\n }, {\n token: \"constant.numeric\",\n regex: integer + \"[lL]\\\\b\"\n }, {\n token: \"constant.numeric\",\n regex: integer + \"\\\\b\"\n }, {\n token: [\"punctuation\", \"function.support\"],\n regex: \"(\\\\.)([a-zA-Z_]+)\\\\b\"\n }, {\n token: keywordMapper,\n regex: \"[a-zA-Z_$][a-zA-Z0-9_$]*\\\\b\"\n }]\n };\n this.normalizeRules();\n};\noop.inherits(PythonHighlightRules, TextHighlightRules);\nexports.PythonHighlightRules = PythonHighlightRules;\n\n});\n\nace.define(\"ace/mode/folding/pythonic\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/folding/fold_mode\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../../lib/oop\");\nvar BaseFoldMode = require(\"./fold_mode\").FoldMode;\nvar FoldMode = exports.FoldMode = function (markers) {\n this.foldingStartMarker = new RegExp(\"([\\\\[{])(?:\\\\s*)$|(\" + markers + \")(?:\\\\s*)(?:#.*)?$\");\n};\noop.inherits(FoldMode, BaseFoldMode);\n(function () {\n this.getFoldWidgetRange = function (session, foldStyle, row) {\n var line = session.getLine(row);\n var match = line.match(this.foldingStartMarker);\n if (match) {\n if (match[1])\n return this.openingBracketBlock(session, match[1], row, match.index);\n if (match[2])\n return this.indentationBlock(session, row, match.index + match[2].length);\n return this.indentationBlock(session, row);\n }\n };\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/python\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/python_highlight_rules\",\"ace/mode/folding/pythonic\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar TextMode = require(\"./text\").Mode;\nvar PythonHighlightRules = require(\"./python_highlight_rules\").PythonHighlightRules;\nvar PythonFoldMode = require(\"./folding/pythonic\").FoldMode;\nvar Range = require(\"../range\").Range;\nvar Mode = function () {\n this.HighlightRules = PythonHighlightRules;\n this.foldingRules = new PythonFoldMode(\"\\\\:\");\n this.$behaviour = this.$defaultBehaviour;\n};\noop.inherits(Mode, TextMode);\n(function () {\n this.lineCommentStart = \"#\";\n this.$pairQuotesAfter = {\n \"'\": /[ruf]/i,\n '\"': /[ruf]/i\n };\n this.getNextLineIndent = function (state, line, tab) {\n var indent = this.$getIndent(line);\n var tokenizedLine = this.getTokenizer().getLineTokens(line, state);\n var tokens = tokenizedLine.tokens;\n if (tokens.length && tokens[tokens.length - 1].type == \"comment\") {\n return indent;\n }\n if (state == \"start\") {\n var match = line.match(/^.*[\\{\\(\\[:]\\s*$/);\n if (match) {\n indent += tab;\n }\n }\n return indent;\n };\n var outdents = {\n \"pass\": 1,\n \"return\": 1,\n \"raise\": 1,\n \"break\": 1,\n \"continue\": 1\n };\n this.checkOutdent = function (state, line, input) {\n if (input !== \"\\r\\n\" && input !== \"\\r\" && input !== \"\\n\")\n return false;\n var tokens = this.getTokenizer().getLineTokens(line.trim(), state).tokens;\n if (!tokens)\n return false;\n do {\n var last = tokens.pop();\n } while (last && (last.type == \"comment\" || (last.type == \"text\" && last.value.match(/^\\s+$/))));\n if (!last)\n return false;\n return (last.type == \"keyword\" && outdents[last.value]);\n };\n this.autoOutdent = function (state, doc, row) {\n row += 1;\n var indent = this.$getIndent(doc.getLine(row));\n var tab = doc.getTabString();\n if (indent.slice(-tab.length) == tab)\n doc.remove(new Range(row, indent.length - tab.length, row, indent.length));\n };\n this.$id = \"ace/mode/python\";\n this.snippetFileId = \"ace/snippets/python\";\n}).call(Mode.prototype);\nexports.Mode = Mode;\n\n}); (function() {\n ace.require([\"ace/mode/python\"], function(m) {\n if (typeof module == \"object\" && typeof exports == \"object\" && module) {\n module.exports = m;\n }\n });\n })();\n ","ace.define(\"ace/mode/xml_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar TextHighlightRules = require(\"./text_highlight_rules\").TextHighlightRules;\nvar XmlHighlightRules = function (normalize) {\n var tagRegex = \"[_:a-zA-Z\\xc0-\\uffff][-_:.a-zA-Z0-9\\xc0-\\uffff]*\";\n this.$rules = {\n start: [\n { token: \"string.cdata.xml\", regex: \"<\\\\!\\\\[CDATA\\\\[\", next: \"cdata\" },\n {\n token: [\"punctuation.instruction.xml\", \"keyword.instruction.xml\"],\n regex: \"(<\\\\?)(\" + tagRegex + \")\", next: \"processing_instruction\"\n },\n { token: \"comment.start.xml\", regex: \"<\\\\!--\", next: \"comment\" },\n {\n token: [\"xml-pe.doctype.xml\", \"xml-pe.doctype.xml\"],\n regex: \"(<\\\\!)(DOCTYPE)(?=[\\\\s])\", next: \"doctype\", caseInsensitive: true\n },\n { include: \"tag\" },\n { token: \"text.end-tag-open.xml\", regex: \"\",\n next: \"start\"\n }],\n doctype: [\n { include: \"whitespace\" },\n { include: \"string\" },\n { token: \"xml-pe.doctype.xml\", regex: \">\", next: \"start\" },\n { token: \"xml-pe.xml\", regex: \"[-_a-zA-Z0-9:]+\" },\n { token: \"punctuation.int-subset\", regex: \"\\\\[\", push: \"int_subset\" }\n ],\n int_subset: [{\n token: \"text.xml\",\n regex: \"\\\\s+\"\n }, {\n token: \"punctuation.int-subset.xml\",\n regex: \"]\",\n next: \"pop\"\n }, {\n token: [\"punctuation.markup-decl.xml\", \"keyword.markup-decl.xml\"],\n regex: \"(<\\\\!)(\" + tagRegex + \")\",\n push: [{\n token: \"text\",\n regex: \"\\\\s+\"\n },\n {\n token: \"punctuation.markup-decl.xml\",\n regex: \">\",\n next: \"pop\"\n },\n { include: \"string\" }]\n }],\n cdata: [\n { token: \"string.cdata.xml\", regex: \"\\\\]\\\\]>\", next: \"start\" },\n { token: \"text.xml\", regex: \"\\\\s+\" },\n { token: \"text.xml\", regex: \"(?:[^\\\\]]|\\\\](?!\\\\]>))+\" }\n ],\n comment: [\n { token: \"comment.end.xml\", regex: \"-->\", next: \"start\" },\n { defaultToken: \"comment.xml\" }\n ],\n reference: [{\n token: \"constant.language.escape.reference.xml\",\n regex: \"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\\\.-]+;)\"\n }],\n attr_reference: [{\n token: \"constant.language.escape.reference.attribute-value.xml\",\n regex: \"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\\\.-]+;)\"\n }],\n tag: [{\n token: [\"meta.tag.punctuation.tag-open.xml\", \"meta.tag.punctuation.end-tag-open.xml\", \"meta.tag.tag-name.xml\"],\n regex: \"(?:(<)|(\", next: \"start\" }\n ]\n }],\n tag_whitespace: [\n { token: \"text.tag-whitespace.xml\", regex: \"\\\\s+\" }\n ],\n whitespace: [\n { token: \"text.whitespace.xml\", regex: \"\\\\s+\" }\n ],\n string: [{\n token: \"string.xml\",\n regex: \"'\",\n push: [\n { token: \"string.xml\", regex: \"'\", next: \"pop\" },\n { defaultToken: \"string.xml\" }\n ]\n }, {\n token: \"string.xml\",\n regex: '\"',\n push: [\n { token: \"string.xml\", regex: '\"', next: \"pop\" },\n { defaultToken: \"string.xml\" }\n ]\n }],\n attributes: [{\n token: \"entity.other.attribute-name.xml\",\n regex: tagRegex\n }, {\n token: \"keyword.operator.attribute-equals.xml\",\n regex: \"=\"\n }, {\n include: \"tag_whitespace\"\n }, {\n include: \"attribute_value\"\n }],\n attribute_value: [{\n token: \"string.attribute-value.xml\",\n regex: \"'\",\n push: [\n { token: \"string.attribute-value.xml\", regex: \"'\", next: \"pop\" },\n { include: \"attr_reference\" },\n { defaultToken: \"string.attribute-value.xml\" }\n ]\n }, {\n token: \"string.attribute-value.xml\",\n regex: '\"',\n push: [\n { token: \"string.attribute-value.xml\", regex: '\"', next: \"pop\" },\n { include: \"attr_reference\" },\n { defaultToken: \"string.attribute-value.xml\" }\n ]\n }]\n };\n if (this.constructor === XmlHighlightRules)\n this.normalizeRules();\n};\n(function () {\n this.embedTagRules = function (HighlightRules, prefix, tag) {\n this.$rules.tag.unshift({\n token: [\"meta.tag.punctuation.tag-open.xml\", \"meta.tag.\" + tag + \".tag-name.xml\"],\n regex: \"(<)(\" + tag + \"(?=\\\\s|>|$))\",\n next: [\n { include: \"attributes\" },\n { token: \"meta.tag.punctuation.tag-close.xml\", regex: \"/?>\", next: prefix + \"start\" }\n ]\n });\n this.$rules[tag + \"-end\"] = [\n { include: \"attributes\" },\n { token: \"meta.tag.punctuation.tag-close.xml\", regex: \"/?>\", next: \"start\",\n onMatch: function (value, currentState, stack) {\n stack.splice(0);\n return this.token;\n } }\n ];\n this.embedRules(HighlightRules, prefix, [{\n token: [\"meta.tag.punctuation.end-tag-open.xml\", \"meta.tag.\" + tag + \".tag-name.xml\"],\n regex: \"(|$))\",\n next: tag + \"-end\"\n }, {\n token: \"string.cdata.xml\",\n regex: \"<\\\\!\\\\[CDATA\\\\[\"\n }, {\n token: \"string.cdata.xml\",\n regex: \"\\\\]\\\\]>\"\n }]);\n };\n}).call(TextHighlightRules.prototype);\noop.inherits(XmlHighlightRules, TextHighlightRules);\nexports.XmlHighlightRules = XmlHighlightRules;\n\n});\n\nace.define(\"ace/mode/behaviour/xml\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/behaviour\",\"ace/token_iterator\",\"ace/lib/lang\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../../lib/oop\");\nvar Behaviour = require(\"../behaviour\").Behaviour;\nvar TokenIterator = require(\"../../token_iterator\").TokenIterator;\nvar lang = require(\"../../lib/lang\");\nfunction is(token, type) {\n return token && token.type.lastIndexOf(type + \".xml\") > -1;\n}\nvar XmlBehaviour = function () {\n this.add(\"string_dquotes\", \"insertion\", function (state, action, editor, session, text) {\n if (text == '\"' || text == \"'\") {\n var quote = text;\n var selected = session.doc.getTextRange(editor.getSelectionRange());\n if (selected !== \"\" && selected !== \"'\" && selected != '\"' && editor.getWrapBehavioursEnabled()) {\n return {\n text: quote + selected + quote,\n selection: false\n };\n }\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n var token = iterator.getCurrentToken();\n if (rightChar == quote && (is(token, \"attribute-value\") || is(token, \"string\"))) {\n return {\n text: \"\",\n selection: [1, 1]\n };\n }\n if (!token)\n token = iterator.stepBackward();\n if (!token)\n return;\n while (is(token, \"tag-whitespace\") || is(token, \"whitespace\")) {\n token = iterator.stepBackward();\n }\n var rightSpace = !rightChar || rightChar.match(/\\s/);\n if (is(token, \"attribute-equals\") && (rightSpace || rightChar == '>') || (is(token, \"decl-attribute-equals\") && (rightSpace || rightChar == '?'))) {\n return {\n text: quote + quote,\n selection: [1, 1]\n };\n }\n }\n });\n this.add(\"string_dquotes\", \"deletion\", function (state, action, editor, session, range) {\n var selected = session.doc.getTextRange(range);\n if (!range.isMultiLine() && (selected == '\"' || selected == \"'\")) {\n var line = session.doc.getLine(range.start.row);\n var rightChar = line.substring(range.start.column + 1, range.start.column + 2);\n if (rightChar == selected) {\n range.end.column++;\n return range;\n }\n }\n });\n this.add(\"autoclosing\", \"insertion\", function (state, action, editor, session, text) {\n if (text == '>') {\n var position = editor.getSelectionRange().start;\n var iterator = new TokenIterator(session, position.row, position.column);\n var token = iterator.getCurrentToken() || iterator.stepBackward();\n if (!token || !(is(token, \"tag-name\") || is(token, \"tag-whitespace\") || is(token, \"attribute-name\") || is(token, \"attribute-equals\") || is(token, \"attribute-value\")))\n return;\n if (is(token, \"reference.attribute-value\"))\n return;\n if (is(token, \"attribute-value\")) {\n var tokenEndColumn = iterator.getCurrentTokenColumn() + token.value.length;\n if (position.column < tokenEndColumn)\n return;\n if (position.column == tokenEndColumn) {\n var nextToken = iterator.stepForward();\n if (nextToken && is(nextToken, \"attribute-value\"))\n return;\n iterator.stepBackward();\n }\n }\n if (/^\\s*>/.test(session.getLine(position.row).slice(position.column)))\n return;\n while (!is(token, \"tag-name\")) {\n token = iterator.stepBackward();\n if (token.value == \"<\") {\n token = iterator.stepForward();\n break;\n }\n }\n var tokenRow = iterator.getCurrentTokenRow();\n var tokenColumn = iterator.getCurrentTokenColumn();\n if (is(iterator.stepBackward(), \"end-tag-open\"))\n return;\n var element = token.value;\n if (tokenRow == position.row)\n element = element.substring(0, position.column - tokenColumn);\n if (this.voidElements.hasOwnProperty(element.toLowerCase()))\n return;\n return {\n text: \">\" + \"\",\n selection: [1, 1]\n };\n }\n });\n this.add(\"autoindent\", \"insertion\", function (state, action, editor, session, text) {\n if (text == \"\\n\") {\n var cursor = editor.getCursorPosition();\n var line = session.getLine(cursor.row);\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n var token = iterator.getCurrentToken();\n if (token && token.type.indexOf(\"tag-close\") !== -1) {\n if (token.value == \"/>\")\n return;\n while (token && token.type.indexOf(\"tag-name\") === -1) {\n token = iterator.stepBackward();\n }\n if (!token) {\n return;\n }\n var tag = token.value;\n var row = iterator.getCurrentTokenRow();\n token = iterator.stepBackward();\n if (!token || token.type.indexOf(\"end-tag\") !== -1) {\n return;\n }\n if (this.voidElements && !this.voidElements[tag]) {\n var nextToken = session.getTokenAt(cursor.row, cursor.column + 1);\n var line = session.getLine(row);\n var nextIndent = this.$getIndent(line);\n var indent = nextIndent + session.getTabString();\n if (nextToken && nextToken.value === \" -1;\n}\n(function () {\n this.getFoldWidget = function (session, foldStyle, row) {\n var tag = this._getFirstTagInLine(session, row);\n if (!tag)\n return this.getCommentFoldWidget(session, row);\n if (tag.closing || (!tag.tagName && tag.selfClosing))\n return foldStyle === \"markbeginend\" ? \"end\" : \"\";\n if (!tag.tagName || tag.selfClosing || this.voidElements.hasOwnProperty(tag.tagName.toLowerCase()))\n return \"\";\n if (this._findEndTagInLine(session, row, tag.tagName, tag.end.column))\n return \"\";\n return \"start\";\n };\n this.getCommentFoldWidget = function (session, row) {\n if (/comment/.test(session.getState(row)) && /';\n break;\n }\n }\n return tag;\n }\n else if (is(token, \"tag-close\")) {\n tag.selfClosing = token.value == '/>';\n return tag;\n }\n tag.start.column += token.value.length;\n }\n return null;\n };\n this._findEndTagInLine = function (session, row, tagName, startColumn) {\n var tokens = session.getTokens(row);\n var column = 0;\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n column += token.value.length;\n if (column < startColumn)\n continue;\n if (is(token, \"end-tag-open\")) {\n token = tokens[i + 1];\n if (token && token.value == tagName)\n return true;\n }\n }\n return false;\n };\n this.getFoldWidgetRange = function (session, foldStyle, row) {\n var tags = session.getMatchingTags({ row: row, column: 0 });\n if (tags) {\n return new Range(tags.openTag.end.row, tags.openTag.end.column, tags.closeTag.start.row, tags.closeTag.start.column);\n }\n else {\n return this.getCommentFoldWidget(session, row)\n && session.getCommentFoldRange(row, session.getLine(row).length);\n }\n };\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/xml\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/mode/text\",\"ace/mode/xml_highlight_rules\",\"ace/mode/behaviour/xml\",\"ace/mode/folding/xml\",\"ace/worker/worker_client\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar lang = require(\"../lib/lang\");\nvar TextMode = require(\"./text\").Mode;\nvar XmlHighlightRules = require(\"./xml_highlight_rules\").XmlHighlightRules;\nvar XmlBehaviour = require(\"./behaviour/xml\").XmlBehaviour;\nvar XmlFoldMode = require(\"./folding/xml\").FoldMode;\nvar WorkerClient = require(\"../worker/worker_client\").WorkerClient;\nvar Mode = function () {\n this.HighlightRules = XmlHighlightRules;\n this.$behaviour = new XmlBehaviour();\n this.foldingRules = new XmlFoldMode();\n};\noop.inherits(Mode, TextMode);\n(function () {\n this.voidElements = lang.arrayToMap([]);\n this.blockComment = { start: \"\" };\n this.createWorker = function (session) {\n var worker = new WorkerClient([\"ace\"], \"ace/mode/xml_worker\", \"Worker\");\n worker.attachToDocument(session.getDocument());\n worker.on(\"error\", function (e) {\n session.setAnnotations(e.data);\n });\n worker.on(\"terminate\", function () {\n session.clearAnnotations();\n });\n return worker;\n };\n this.$id = \"ace/mode/xml\";\n}).call(Mode.prototype);\nexports.Mode = Mode;\n\n}); (function() {\n ace.require([\"ace/mode/xml\"], function(m) {\n if (typeof module == \"object\" && typeof exports == \"object\" && module) {\n module.exports = m;\n }\n });\n })();\n ","ace.define(\"ace/theme/github-css\",[\"require\",\"exports\",\"module\"], function(require, exports, module){module.exports = \"/* CSS style content from github's default pygments highlighter template.\\n Cursor and selection styles from textmate.css. */\\n.ace-github .ace_gutter {\\n background: #e8e8e8;\\n color: #AAA;\\n}\\n\\n.ace-github {\\n background: #fff;\\n color: #000;\\n}\\n\\n.ace-github .ace_keyword {\\n font-weight: bold;\\n}\\n\\n.ace-github .ace_string {\\n color: #D14;\\n}\\n\\n.ace-github .ace_variable.ace_class {\\n color: teal;\\n}\\n\\n.ace-github .ace_constant.ace_numeric {\\n color: #099;\\n}\\n\\n.ace-github .ace_constant.ace_buildin {\\n color: #0086B3;\\n}\\n\\n.ace-github .ace_support.ace_function {\\n color: #0086B3;\\n}\\n\\n.ace-github .ace_comment {\\n color: #998;\\n font-style: italic;\\n}\\n\\n.ace-github .ace_variable.ace_language {\\n color: #0086B3;\\n}\\n\\n.ace-github .ace_paren {\\n font-weight: bold;\\n}\\n\\n.ace-github .ace_boolean {\\n font-weight: bold;\\n}\\n\\n.ace-github .ace_string.ace_regexp {\\n color: #009926;\\n font-weight: normal;\\n}\\n\\n.ace-github .ace_variable.ace_instance {\\n color: teal;\\n}\\n\\n.ace-github .ace_constant.ace_language {\\n font-weight: bold;\\n}\\n\\n.ace-github .ace_cursor {\\n color: black;\\n}\\n\\n.ace-github.ace_focus .ace_marker-layer .ace_active-line {\\n background: rgb(255, 255, 204);\\n}\\n.ace-github .ace_marker-layer .ace_active-line {\\n background: rgb(245, 245, 245);\\n}\\n\\n.ace-github .ace_marker-layer .ace_selection {\\n background: rgb(181, 213, 255);\\n}\\n\\n.ace-github.ace_multiselect .ace_selection.ace_start {\\n box-shadow: 0 0 3px 0px white;\\n}\\n/* bold keywords cause cursor issues for some fonts */\\n/* this disables bold style for editor and keeps for static highlighter */\\n.ace-github.ace_nobold .ace_line > span {\\n font-weight: normal !important;\\n}\\n\\n.ace-github .ace_marker-layer .ace_step {\\n background: rgb(252, 255, 0);\\n}\\n\\n.ace-github .ace_marker-layer .ace_stack {\\n background: rgb(164, 229, 101);\\n}\\n\\n.ace-github .ace_marker-layer .ace_bracket {\\n margin: -1px 0 0 -1px;\\n border: 1px solid rgb(192, 192, 192);\\n}\\n\\n.ace-github .ace_gutter-active-line {\\n background-color : rgba(0, 0, 0, 0.07);\\n}\\n\\n.ace-github .ace_marker-layer .ace_selected-word {\\n background: rgb(250, 250, 255);\\n border: 1px solid rgb(200, 200, 250);\\n}\\n\\n.ace-github .ace_invisible {\\n color: #BFBFBF\\n}\\n\\n.ace-github .ace_print-margin {\\n width: 1px;\\n background: #e8e8e8;\\n}\\n\\n.ace-github .ace_indent-guide {\\n background: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==\\\") right repeat-y;\\n}\\n\\n.ace-github .ace_indent-guide-active {\\n background: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAAZSURBVHjaYvj///9/hivKyv8BAAAA//8DACLqBhbvk+/eAAAAAElFTkSuQmCC\\\") right repeat-y;\\n}\\n\";\n\n});\n\nace.define(\"ace/theme/github\",[\"require\",\"exports\",\"module\",\"ace/theme/github-css\",\"ace/lib/dom\"], function(require, exports, module){exports.isDark = false;\nexports.cssClass = \"ace-github\";\nexports.cssText = require(\"./github-css\");\nvar dom = require(\"../lib/dom\");\ndom.importCssString(exports.cssText, exports.cssClass, false);\n\n}); (function() {\n ace.require([\"ace/theme/github\"], function(m) {\n if (typeof module == \"object\" && typeof exports == \"object\" && module) {\n module.exports = m;\n }\n });\n })();\n ","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.flatpickr-calendar{background:transparent;opacity:0;display:none;text-align:center;visibility:hidden;padding:0;-webkit-animation:none;animation:none;direction:ltr;border:0;font-size:14px;line-height:24px;border-radius:5px;position:absolute;width:307.875px;-webkit-box-sizing:border-box;box-sizing:border-box;-ms-touch-action:manipulation;touch-action:manipulation;background:#fff;-webkit-box-shadow:1px 0 0 #e6e6e6,-1px 0 0 #e6e6e6,0 1px 0 #e6e6e6,0 -1px 0 #e6e6e6,0 3px 13px rgba(0,0,0,0.08);box-shadow:1px 0 0 #e6e6e6,-1px 0 0 #e6e6e6,0 1px 0 #e6e6e6,0 -1px 0 #e6e6e6,0 3px 13px rgba(0,0,0,0.08)}.flatpickr-calendar.open,.flatpickr-calendar.inline{opacity:1;max-height:640px;visibility:visible}.flatpickr-calendar.open{display:inline-block;z-index:99999}.flatpickr-calendar.animate.open{-webkit-animation:fpFadeInDown 300ms cubic-bezier(.23,1,.32,1);animation:fpFadeInDown 300ms cubic-bezier(.23,1,.32,1)}.flatpickr-calendar.inline{display:block;position:relative;top:2px}.flatpickr-calendar.static{position:absolute;top:calc(100% + 2px)}.flatpickr-calendar.static.open{z-index:999;display:block}.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+1) .flatpickr-day.inRange:nth-child(7n+7){-webkit-box-shadow:none !important;box-shadow:none !important}.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+2) .flatpickr-day.inRange:nth-child(7n+1){-webkit-box-shadow:-2px 0 0 #e6e6e6,5px 0 0 #e6e6e6;box-shadow:-2px 0 0 #e6e6e6,5px 0 0 #e6e6e6}.flatpickr-calendar .hasWeeks .dayContainer,.flatpickr-calendar .hasTime .dayContainer{border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.flatpickr-calendar .hasWeeks .dayContainer{border-left:0}.flatpickr-calendar.hasTime .flatpickr-time{height:40px;border-top:1px solid #e6e6e6}.flatpickr-calendar.noCalendar.hasTime .flatpickr-time{height:auto}.flatpickr-calendar:before,.flatpickr-calendar:after{position:absolute;display:block;pointer-events:none;border:solid transparent;content:'';height:0;width:0;left:22px}.flatpickr-calendar.rightMost:before,.flatpickr-calendar.arrowRight:before,.flatpickr-calendar.rightMost:after,.flatpickr-calendar.arrowRight:after{left:auto;right:22px}.flatpickr-calendar.arrowCenter:before,.flatpickr-calendar.arrowCenter:after{left:50%;right:50%}.flatpickr-calendar:before{border-width:5px;margin:0 -5px}.flatpickr-calendar:after{border-width:4px;margin:0 -4px}.flatpickr-calendar.arrowTop:before,.flatpickr-calendar.arrowTop:after{bottom:100%}.flatpickr-calendar.arrowTop:before{border-bottom-color:#e6e6e6}.flatpickr-calendar.arrowTop:after{border-bottom-color:#fff}.flatpickr-calendar.arrowBottom:before,.flatpickr-calendar.arrowBottom:after{top:100%}.flatpickr-calendar.arrowBottom:before{border-top-color:#e6e6e6}.flatpickr-calendar.arrowBottom:after{border-top-color:#fff}.flatpickr-calendar:focus{outline:0}.flatpickr-wrapper{position:relative;display:inline-block}.flatpickr-months{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.flatpickr-months .flatpickr-month{background:transparent;color:rgba(0,0,0,0.9);fill:rgba(0,0,0,0.9);height:34px;line-height:1;text-align:center;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:hidden;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}.flatpickr-months .flatpickr-prev-month,.flatpickr-months .flatpickr-next-month{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;text-decoration:none;cursor:pointer;position:absolute;top:0;height:34px;padding:10px;z-index:3;color:rgba(0,0,0,0.9);fill:rgba(0,0,0,0.9)}.flatpickr-months .flatpickr-prev-month.flatpickr-disabled,.flatpickr-months .flatpickr-next-month.flatpickr-disabled{display:none}.flatpickr-months .flatpickr-prev-month i,.flatpickr-months .flatpickr-next-month i{position:relative}.flatpickr-months .flatpickr-prev-month.flatpickr-prev-month,.flatpickr-months .flatpickr-next-month.flatpickr-prev-month{/*\n /*rtl:begin:ignore*/left:0/*\n /*rtl:end:ignore*/}/*\n /*rtl:begin:ignore*/\n/*\n /*rtl:end:ignore*/\n.flatpickr-months .flatpickr-prev-month.flatpickr-next-month,.flatpickr-months .flatpickr-next-month.flatpickr-next-month{/*\n /*rtl:begin:ignore*/right:0/*\n /*rtl:end:ignore*/}/*\n /*rtl:begin:ignore*/\n/*\n /*rtl:end:ignore*/\n.flatpickr-months .flatpickr-prev-month:hover,.flatpickr-months .flatpickr-next-month:hover{color:#959ea9}.flatpickr-months .flatpickr-prev-month:hover svg,.flatpickr-months .flatpickr-next-month:hover svg{fill:#f64747}.flatpickr-months .flatpickr-prev-month svg,.flatpickr-months .flatpickr-next-month svg{width:14px;height:14px}.flatpickr-months .flatpickr-prev-month svg path,.flatpickr-months .flatpickr-next-month svg path{-webkit-transition:fill .1s;transition:fill .1s;fill:inherit}.numInputWrapper{position:relative;height:auto}.numInputWrapper input,.numInputWrapper span{display:inline-block}.numInputWrapper input{width:100%}.numInputWrapper input::-ms-clear{display:none}.numInputWrapper input::-webkit-outer-spin-button,.numInputWrapper input::-webkit-inner-spin-button{margin:0;-webkit-appearance:none}.numInputWrapper span{position:absolute;right:0;width:14px;padding:0 4px 0 2px;height:50%;line-height:50%;opacity:0;cursor:pointer;border:1px solid rgba(57,57,57,0.15);-webkit-box-sizing:border-box;box-sizing:border-box}.numInputWrapper span:hover{background:rgba(0,0,0,0.1)}.numInputWrapper span:active{background:rgba(0,0,0,0.2)}.numInputWrapper span:after{display:block;content:\"\";position:absolute}.numInputWrapper span.arrowUp{top:0;border-bottom:0}.numInputWrapper span.arrowUp:after{border-left:4px solid transparent;border-right:4px solid transparent;border-bottom:4px solid rgba(57,57,57,0.6);top:26%}.numInputWrapper span.arrowDown{top:50%}.numInputWrapper span.arrowDown:after{border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px solid rgba(57,57,57,0.6);top:40%}.numInputWrapper span svg{width:inherit;height:auto}.numInputWrapper span svg path{fill:rgba(0,0,0,0.5)}.numInputWrapper:hover{background:rgba(0,0,0,0.05)}.numInputWrapper:hover span{opacity:1}.flatpickr-current-month{font-size:135%;line-height:inherit;font-weight:300;color:inherit;position:absolute;width:75%;left:12.5%;padding:7.48px 0 0 0;line-height:1;height:34px;display:inline-block;text-align:center;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.flatpickr-current-month span.cur-month{font-family:inherit;font-weight:700;color:inherit;display:inline-block;margin-left:.5ch;padding:0}.flatpickr-current-month span.cur-month:hover{background:rgba(0,0,0,0.05)}.flatpickr-current-month .numInputWrapper{width:6ch;width:7ch\\\\0;display:inline-block}.flatpickr-current-month .numInputWrapper span.arrowUp:after{border-bottom-color:rgba(0,0,0,0.9)}.flatpickr-current-month .numInputWrapper span.arrowDown:after{border-top-color:rgba(0,0,0,0.9)}.flatpickr-current-month input.cur-year{background:transparent;-webkit-box-sizing:border-box;box-sizing:border-box;color:inherit;cursor:text;padding:0 0 0 .5ch;margin:0;display:inline-block;font-size:inherit;font-family:inherit;font-weight:300;line-height:inherit;height:auto;border:0;border-radius:0;vertical-align:initial;-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.flatpickr-current-month input.cur-year:focus{outline:0}.flatpickr-current-month input.cur-year[disabled],.flatpickr-current-month input.cur-year[disabled]:hover{font-size:100%;color:rgba(0,0,0,0.5);background:transparent;pointer-events:none}.flatpickr-current-month .flatpickr-monthDropdown-months{appearance:menulist;background:transparent;border:none;border-radius:0;box-sizing:border-box;color:inherit;cursor:pointer;font-size:inherit;font-family:inherit;font-weight:300;height:auto;line-height:inherit;margin:-1px 0 0 0;outline:none;padding:0 0 0 .5ch;position:relative;vertical-align:initial;-webkit-box-sizing:border-box;-webkit-appearance:menulist;-moz-appearance:menulist;width:auto}.flatpickr-current-month .flatpickr-monthDropdown-months:focus,.flatpickr-current-month .flatpickr-monthDropdown-months:active{outline:none}.flatpickr-current-month .flatpickr-monthDropdown-months:hover{background:rgba(0,0,0,0.05)}.flatpickr-current-month .flatpickr-monthDropdown-months .flatpickr-monthDropdown-month{background-color:transparent;outline:none;padding:0}.flatpickr-weekdays{background:transparent;text-align:center;overflow:hidden;width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;height:28px}.flatpickr-weekdays .flatpickr-weekdaycontainer{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}span.flatpickr-weekday{cursor:default;font-size:90%;background:transparent;color:rgba(0,0,0,0.54);line-height:1;margin:0;text-align:center;display:block;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;font-weight:bolder}.dayContainer,.flatpickr-weeks{padding:1px 0 0 0}.flatpickr-days{position:relative;overflow:hidden;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:flex-start;width:307.875px}.flatpickr-days:focus{outline:0}.dayContainer{padding:0;outline:0;text-align:left;width:307.875px;min-width:307.875px;max-width:307.875px;-webkit-box-sizing:border-box;box-sizing:border-box;display:inline-block;display:-ms-flexbox;display:-webkit-box;display:-webkit-flex;display:flex;-webkit-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-wrap:wrap;-ms-flex-pack:justify;-webkit-justify-content:space-around;justify-content:space-around;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}.dayContainer + .dayContainer{-webkit-box-shadow:-1px 0 0 #e6e6e6;box-shadow:-1px 0 0 #e6e6e6}.flatpickr-day{background:none;border:1px solid transparent;border-radius:150px;-webkit-box-sizing:border-box;box-sizing:border-box;color:#393939;cursor:pointer;font-weight:400;width:14.2857143%;-webkit-flex-basis:14.2857143%;-ms-flex-preferred-size:14.2857143%;flex-basis:14.2857143%;max-width:39px;height:39px;line-height:39px;margin:0;display:inline-block;position:relative;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;text-align:center}.flatpickr-day.inRange,.flatpickr-day.prevMonthDay.inRange,.flatpickr-day.nextMonthDay.inRange,.flatpickr-day.today.inRange,.flatpickr-day.prevMonthDay.today.inRange,.flatpickr-day.nextMonthDay.today.inRange,.flatpickr-day:hover,.flatpickr-day.prevMonthDay:hover,.flatpickr-day.nextMonthDay:hover,.flatpickr-day:focus,.flatpickr-day.prevMonthDay:focus,.flatpickr-day.nextMonthDay:focus{cursor:pointer;outline:0;background:#e6e6e6;border-color:#e6e6e6}.flatpickr-day.today{border-color:#959ea9}.flatpickr-day.today:hover,.flatpickr-day.today:focus{border-color:#959ea9;background:#959ea9;color:#fff}.flatpickr-day.selected,.flatpickr-day.startRange,.flatpickr-day.endRange,.flatpickr-day.selected.inRange,.flatpickr-day.startRange.inRange,.flatpickr-day.endRange.inRange,.flatpickr-day.selected:focus,.flatpickr-day.startRange:focus,.flatpickr-day.endRange:focus,.flatpickr-day.selected:hover,.flatpickr-day.startRange:hover,.flatpickr-day.endRange:hover,.flatpickr-day.selected.prevMonthDay,.flatpickr-day.startRange.prevMonthDay,.flatpickr-day.endRange.prevMonthDay,.flatpickr-day.selected.nextMonthDay,.flatpickr-day.startRange.nextMonthDay,.flatpickr-day.endRange.nextMonthDay{background:#569ff7;-webkit-box-shadow:none;box-shadow:none;color:#fff;border-color:#569ff7}.flatpickr-day.selected.startRange,.flatpickr-day.startRange.startRange,.flatpickr-day.endRange.startRange{border-radius:50px 0 0 50px}.flatpickr-day.selected.endRange,.flatpickr-day.startRange.endRange,.flatpickr-day.endRange.endRange{border-radius:0 50px 50px 0}.flatpickr-day.selected.startRange + .endRange:not(:nth-child(7n+1)),.flatpickr-day.startRange.startRange + .endRange:not(:nth-child(7n+1)),.flatpickr-day.endRange.startRange + .endRange:not(:nth-child(7n+1)){-webkit-box-shadow:-10px 0 0 #569ff7;box-shadow:-10px 0 0 #569ff7}.flatpickr-day.selected.startRange.endRange,.flatpickr-day.startRange.startRange.endRange,.flatpickr-day.endRange.startRange.endRange{border-radius:50px}.flatpickr-day.inRange{border-radius:0;-webkit-box-shadow:-5px 0 0 #e6e6e6,5px 0 0 #e6e6e6;box-shadow:-5px 0 0 #e6e6e6,5px 0 0 #e6e6e6}.flatpickr-day.flatpickr-disabled,.flatpickr-day.flatpickr-disabled:hover,.flatpickr-day.prevMonthDay,.flatpickr-day.nextMonthDay,.flatpickr-day.notAllowed,.flatpickr-day.notAllowed.prevMonthDay,.flatpickr-day.notAllowed.nextMonthDay{color:rgba(57,57,57,0.3);background:transparent;border-color:transparent;cursor:default}.flatpickr-day.flatpickr-disabled,.flatpickr-day.flatpickr-disabled:hover{cursor:not-allowed;color:rgba(57,57,57,0.1)}.flatpickr-day.week.selected{border-radius:0;-webkit-box-shadow:-5px 0 0 #569ff7,5px 0 0 #569ff7;box-shadow:-5px 0 0 #569ff7,5px 0 0 #569ff7}.flatpickr-day.hidden{visibility:hidden}.rangeMode .flatpickr-day{margin-top:1px}.flatpickr-weekwrapper{float:left}.flatpickr-weekwrapper .flatpickr-weeks{padding:0 12px;-webkit-box-shadow:1px 0 0 #e6e6e6;box-shadow:1px 0 0 #e6e6e6}.flatpickr-weekwrapper .flatpickr-weekday{float:none;width:100%;line-height:28px}.flatpickr-weekwrapper span.flatpickr-day,.flatpickr-weekwrapper span.flatpickr-day:hover{display:block;width:100%;max-width:none;color:rgba(57,57,57,0.3);background:transparent;cursor:default;border:none}.flatpickr-innerContainer{display:block;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden}.flatpickr-rContainer{display:inline-block;padding:0;-webkit-box-sizing:border-box;box-sizing:border-box}.flatpickr-time{text-align:center;outline:0;display:block;height:0;line-height:40px;max-height:40px;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.flatpickr-time:after{content:\"\";display:table;clear:both}.flatpickr-time .numInputWrapper{-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;width:40%;height:40px;float:left}.flatpickr-time .numInputWrapper span.arrowUp:after{border-bottom-color:#393939}.flatpickr-time .numInputWrapper span.arrowDown:after{border-top-color:#393939}.flatpickr-time.hasSeconds .numInputWrapper{width:26%}.flatpickr-time.time24hr .numInputWrapper{width:49%}.flatpickr-time input{background:transparent;-webkit-box-shadow:none;box-shadow:none;border:0;border-radius:0;text-align:center;margin:0;padding:0;height:inherit;line-height:inherit;color:#393939;font-size:14px;position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.flatpickr-time input.flatpickr-hour{font-weight:bold}.flatpickr-time input.flatpickr-minute,.flatpickr-time input.flatpickr-second{font-weight:400}.flatpickr-time input:focus{outline:0;border:0}.flatpickr-time .flatpickr-time-separator,.flatpickr-time .flatpickr-am-pm{height:inherit;float:left;line-height:inherit;color:#393939;font-weight:bold;width:2%;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-align-self:center;-ms-flex-item-align:center;align-self:center}.flatpickr-time .flatpickr-am-pm{outline:0;width:18%;cursor:pointer;text-align:center;font-weight:400}.flatpickr-time input:hover,.flatpickr-time .flatpickr-am-pm:hover,.flatpickr-time input:focus,.flatpickr-time .flatpickr-am-pm:focus{background:#eee}.flatpickr-input[readonly]{cursor:pointer}@-webkit-keyframes fpFadeInDown{from{opacity:0;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@keyframes fpFadeInDown{from{opacity:0;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/flatpickr/dist/flatpickr.min.css\"],\"names\":[],\"mappings\":\"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\",\"sourcesContent\":[\".flatpickr-calendar{background:transparent;opacity:0;display:none;text-align:center;visibility:hidden;padding:0;-webkit-animation:none;animation:none;direction:ltr;border:0;font-size:14px;line-height:24px;border-radius:5px;position:absolute;width:307.875px;-webkit-box-sizing:border-box;box-sizing:border-box;-ms-touch-action:manipulation;touch-action:manipulation;background:#fff;-webkit-box-shadow:1px 0 0 #e6e6e6,-1px 0 0 #e6e6e6,0 1px 0 #e6e6e6,0 -1px 0 #e6e6e6,0 3px 13px rgba(0,0,0,0.08);box-shadow:1px 0 0 #e6e6e6,-1px 0 0 #e6e6e6,0 1px 0 #e6e6e6,0 -1px 0 #e6e6e6,0 3px 13px rgba(0,0,0,0.08)}.flatpickr-calendar.open,.flatpickr-calendar.inline{opacity:1;max-height:640px;visibility:visible}.flatpickr-calendar.open{display:inline-block;z-index:99999}.flatpickr-calendar.animate.open{-webkit-animation:fpFadeInDown 300ms cubic-bezier(.23,1,.32,1);animation:fpFadeInDown 300ms cubic-bezier(.23,1,.32,1)}.flatpickr-calendar.inline{display:block;position:relative;top:2px}.flatpickr-calendar.static{position:absolute;top:calc(100% + 2px)}.flatpickr-calendar.static.open{z-index:999;display:block}.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+1) .flatpickr-day.inRange:nth-child(7n+7){-webkit-box-shadow:none !important;box-shadow:none !important}.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+2) .flatpickr-day.inRange:nth-child(7n+1){-webkit-box-shadow:-2px 0 0 #e6e6e6,5px 0 0 #e6e6e6;box-shadow:-2px 0 0 #e6e6e6,5px 0 0 #e6e6e6}.flatpickr-calendar .hasWeeks .dayContainer,.flatpickr-calendar .hasTime .dayContainer{border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.flatpickr-calendar .hasWeeks .dayContainer{border-left:0}.flatpickr-calendar.hasTime .flatpickr-time{height:40px;border-top:1px solid #e6e6e6}.flatpickr-calendar.noCalendar.hasTime .flatpickr-time{height:auto}.flatpickr-calendar:before,.flatpickr-calendar:after{position:absolute;display:block;pointer-events:none;border:solid transparent;content:'';height:0;width:0;left:22px}.flatpickr-calendar.rightMost:before,.flatpickr-calendar.arrowRight:before,.flatpickr-calendar.rightMost:after,.flatpickr-calendar.arrowRight:after{left:auto;right:22px}.flatpickr-calendar.arrowCenter:before,.flatpickr-calendar.arrowCenter:after{left:50%;right:50%}.flatpickr-calendar:before{border-width:5px;margin:0 -5px}.flatpickr-calendar:after{border-width:4px;margin:0 -4px}.flatpickr-calendar.arrowTop:before,.flatpickr-calendar.arrowTop:after{bottom:100%}.flatpickr-calendar.arrowTop:before{border-bottom-color:#e6e6e6}.flatpickr-calendar.arrowTop:after{border-bottom-color:#fff}.flatpickr-calendar.arrowBottom:before,.flatpickr-calendar.arrowBottom:after{top:100%}.flatpickr-calendar.arrowBottom:before{border-top-color:#e6e6e6}.flatpickr-calendar.arrowBottom:after{border-top-color:#fff}.flatpickr-calendar:focus{outline:0}.flatpickr-wrapper{position:relative;display:inline-block}.flatpickr-months{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.flatpickr-months .flatpickr-month{background:transparent;color:rgba(0,0,0,0.9);fill:rgba(0,0,0,0.9);height:34px;line-height:1;text-align:center;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:hidden;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}.flatpickr-months .flatpickr-prev-month,.flatpickr-months .flatpickr-next-month{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;text-decoration:none;cursor:pointer;position:absolute;top:0;height:34px;padding:10px;z-index:3;color:rgba(0,0,0,0.9);fill:rgba(0,0,0,0.9)}.flatpickr-months .flatpickr-prev-month.flatpickr-disabled,.flatpickr-months .flatpickr-next-month.flatpickr-disabled{display:none}.flatpickr-months .flatpickr-prev-month i,.flatpickr-months .flatpickr-next-month i{position:relative}.flatpickr-months .flatpickr-prev-month.flatpickr-prev-month,.flatpickr-months .flatpickr-next-month.flatpickr-prev-month{/*\\n /*rtl:begin:ignore*/left:0/*\\n /*rtl:end:ignore*/}/*\\n /*rtl:begin:ignore*/\\n/*\\n /*rtl:end:ignore*/\\n.flatpickr-months .flatpickr-prev-month.flatpickr-next-month,.flatpickr-months .flatpickr-next-month.flatpickr-next-month{/*\\n /*rtl:begin:ignore*/right:0/*\\n /*rtl:end:ignore*/}/*\\n /*rtl:begin:ignore*/\\n/*\\n /*rtl:end:ignore*/\\n.flatpickr-months .flatpickr-prev-month:hover,.flatpickr-months .flatpickr-next-month:hover{color:#959ea9}.flatpickr-months .flatpickr-prev-month:hover svg,.flatpickr-months .flatpickr-next-month:hover svg{fill:#f64747}.flatpickr-months .flatpickr-prev-month svg,.flatpickr-months .flatpickr-next-month svg{width:14px;height:14px}.flatpickr-months .flatpickr-prev-month svg path,.flatpickr-months .flatpickr-next-month svg path{-webkit-transition:fill .1s;transition:fill .1s;fill:inherit}.numInputWrapper{position:relative;height:auto}.numInputWrapper input,.numInputWrapper span{display:inline-block}.numInputWrapper input{width:100%}.numInputWrapper input::-ms-clear{display:none}.numInputWrapper input::-webkit-outer-spin-button,.numInputWrapper input::-webkit-inner-spin-button{margin:0;-webkit-appearance:none}.numInputWrapper span{position:absolute;right:0;width:14px;padding:0 4px 0 2px;height:50%;line-height:50%;opacity:0;cursor:pointer;border:1px solid rgba(57,57,57,0.15);-webkit-box-sizing:border-box;box-sizing:border-box}.numInputWrapper span:hover{background:rgba(0,0,0,0.1)}.numInputWrapper span:active{background:rgba(0,0,0,0.2)}.numInputWrapper span:after{display:block;content:\\\"\\\";position:absolute}.numInputWrapper span.arrowUp{top:0;border-bottom:0}.numInputWrapper span.arrowUp:after{border-left:4px solid transparent;border-right:4px solid transparent;border-bottom:4px solid rgba(57,57,57,0.6);top:26%}.numInputWrapper span.arrowDown{top:50%}.numInputWrapper span.arrowDown:after{border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px solid rgba(57,57,57,0.6);top:40%}.numInputWrapper span svg{width:inherit;height:auto}.numInputWrapper span svg path{fill:rgba(0,0,0,0.5)}.numInputWrapper:hover{background:rgba(0,0,0,0.05)}.numInputWrapper:hover span{opacity:1}.flatpickr-current-month{font-size:135%;line-height:inherit;font-weight:300;color:inherit;position:absolute;width:75%;left:12.5%;padding:7.48px 0 0 0;line-height:1;height:34px;display:inline-block;text-align:center;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.flatpickr-current-month span.cur-month{font-family:inherit;font-weight:700;color:inherit;display:inline-block;margin-left:.5ch;padding:0}.flatpickr-current-month span.cur-month:hover{background:rgba(0,0,0,0.05)}.flatpickr-current-month .numInputWrapper{width:6ch;width:7ch\\\\0;display:inline-block}.flatpickr-current-month .numInputWrapper span.arrowUp:after{border-bottom-color:rgba(0,0,0,0.9)}.flatpickr-current-month .numInputWrapper span.arrowDown:after{border-top-color:rgba(0,0,0,0.9)}.flatpickr-current-month input.cur-year{background:transparent;-webkit-box-sizing:border-box;box-sizing:border-box;color:inherit;cursor:text;padding:0 0 0 .5ch;margin:0;display:inline-block;font-size:inherit;font-family:inherit;font-weight:300;line-height:inherit;height:auto;border:0;border-radius:0;vertical-align:initial;-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.flatpickr-current-month input.cur-year:focus{outline:0}.flatpickr-current-month input.cur-year[disabled],.flatpickr-current-month input.cur-year[disabled]:hover{font-size:100%;color:rgba(0,0,0,0.5);background:transparent;pointer-events:none}.flatpickr-current-month .flatpickr-monthDropdown-months{appearance:menulist;background:transparent;border:none;border-radius:0;box-sizing:border-box;color:inherit;cursor:pointer;font-size:inherit;font-family:inherit;font-weight:300;height:auto;line-height:inherit;margin:-1px 0 0 0;outline:none;padding:0 0 0 .5ch;position:relative;vertical-align:initial;-webkit-box-sizing:border-box;-webkit-appearance:menulist;-moz-appearance:menulist;width:auto}.flatpickr-current-month .flatpickr-monthDropdown-months:focus,.flatpickr-current-month .flatpickr-monthDropdown-months:active{outline:none}.flatpickr-current-month .flatpickr-monthDropdown-months:hover{background:rgba(0,0,0,0.05)}.flatpickr-current-month .flatpickr-monthDropdown-months .flatpickr-monthDropdown-month{background-color:transparent;outline:none;padding:0}.flatpickr-weekdays{background:transparent;text-align:center;overflow:hidden;width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;height:28px}.flatpickr-weekdays .flatpickr-weekdaycontainer{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}span.flatpickr-weekday{cursor:default;font-size:90%;background:transparent;color:rgba(0,0,0,0.54);line-height:1;margin:0;text-align:center;display:block;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;font-weight:bolder}.dayContainer,.flatpickr-weeks{padding:1px 0 0 0}.flatpickr-days{position:relative;overflow:hidden;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:flex-start;width:307.875px}.flatpickr-days:focus{outline:0}.dayContainer{padding:0;outline:0;text-align:left;width:307.875px;min-width:307.875px;max-width:307.875px;-webkit-box-sizing:border-box;box-sizing:border-box;display:inline-block;display:-ms-flexbox;display:-webkit-box;display:-webkit-flex;display:flex;-webkit-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-wrap:wrap;-ms-flex-pack:justify;-webkit-justify-content:space-around;justify-content:space-around;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}.dayContainer + .dayContainer{-webkit-box-shadow:-1px 0 0 #e6e6e6;box-shadow:-1px 0 0 #e6e6e6}.flatpickr-day{background:none;border:1px solid transparent;border-radius:150px;-webkit-box-sizing:border-box;box-sizing:border-box;color:#393939;cursor:pointer;font-weight:400;width:14.2857143%;-webkit-flex-basis:14.2857143%;-ms-flex-preferred-size:14.2857143%;flex-basis:14.2857143%;max-width:39px;height:39px;line-height:39px;margin:0;display:inline-block;position:relative;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;text-align:center}.flatpickr-day.inRange,.flatpickr-day.prevMonthDay.inRange,.flatpickr-day.nextMonthDay.inRange,.flatpickr-day.today.inRange,.flatpickr-day.prevMonthDay.today.inRange,.flatpickr-day.nextMonthDay.today.inRange,.flatpickr-day:hover,.flatpickr-day.prevMonthDay:hover,.flatpickr-day.nextMonthDay:hover,.flatpickr-day:focus,.flatpickr-day.prevMonthDay:focus,.flatpickr-day.nextMonthDay:focus{cursor:pointer;outline:0;background:#e6e6e6;border-color:#e6e6e6}.flatpickr-day.today{border-color:#959ea9}.flatpickr-day.today:hover,.flatpickr-day.today:focus{border-color:#959ea9;background:#959ea9;color:#fff}.flatpickr-day.selected,.flatpickr-day.startRange,.flatpickr-day.endRange,.flatpickr-day.selected.inRange,.flatpickr-day.startRange.inRange,.flatpickr-day.endRange.inRange,.flatpickr-day.selected:focus,.flatpickr-day.startRange:focus,.flatpickr-day.endRange:focus,.flatpickr-day.selected:hover,.flatpickr-day.startRange:hover,.flatpickr-day.endRange:hover,.flatpickr-day.selected.prevMonthDay,.flatpickr-day.startRange.prevMonthDay,.flatpickr-day.endRange.prevMonthDay,.flatpickr-day.selected.nextMonthDay,.flatpickr-day.startRange.nextMonthDay,.flatpickr-day.endRange.nextMonthDay{background:#569ff7;-webkit-box-shadow:none;box-shadow:none;color:#fff;border-color:#569ff7}.flatpickr-day.selected.startRange,.flatpickr-day.startRange.startRange,.flatpickr-day.endRange.startRange{border-radius:50px 0 0 50px}.flatpickr-day.selected.endRange,.flatpickr-day.startRange.endRange,.flatpickr-day.endRange.endRange{border-radius:0 50px 50px 0}.flatpickr-day.selected.startRange + .endRange:not(:nth-child(7n+1)),.flatpickr-day.startRange.startRange + .endRange:not(:nth-child(7n+1)),.flatpickr-day.endRange.startRange + .endRange:not(:nth-child(7n+1)){-webkit-box-shadow:-10px 0 0 #569ff7;box-shadow:-10px 0 0 #569ff7}.flatpickr-day.selected.startRange.endRange,.flatpickr-day.startRange.startRange.endRange,.flatpickr-day.endRange.startRange.endRange{border-radius:50px}.flatpickr-day.inRange{border-radius:0;-webkit-box-shadow:-5px 0 0 #e6e6e6,5px 0 0 #e6e6e6;box-shadow:-5px 0 0 #e6e6e6,5px 0 0 #e6e6e6}.flatpickr-day.flatpickr-disabled,.flatpickr-day.flatpickr-disabled:hover,.flatpickr-day.prevMonthDay,.flatpickr-day.nextMonthDay,.flatpickr-day.notAllowed,.flatpickr-day.notAllowed.prevMonthDay,.flatpickr-day.notAllowed.nextMonthDay{color:rgba(57,57,57,0.3);background:transparent;border-color:transparent;cursor:default}.flatpickr-day.flatpickr-disabled,.flatpickr-day.flatpickr-disabled:hover{cursor:not-allowed;color:rgba(57,57,57,0.1)}.flatpickr-day.week.selected{border-radius:0;-webkit-box-shadow:-5px 0 0 #569ff7,5px 0 0 #569ff7;box-shadow:-5px 0 0 #569ff7,5px 0 0 #569ff7}.flatpickr-day.hidden{visibility:hidden}.rangeMode .flatpickr-day{margin-top:1px}.flatpickr-weekwrapper{float:left}.flatpickr-weekwrapper .flatpickr-weeks{padding:0 12px;-webkit-box-shadow:1px 0 0 #e6e6e6;box-shadow:1px 0 0 #e6e6e6}.flatpickr-weekwrapper .flatpickr-weekday{float:none;width:100%;line-height:28px}.flatpickr-weekwrapper span.flatpickr-day,.flatpickr-weekwrapper span.flatpickr-day:hover{display:block;width:100%;max-width:none;color:rgba(57,57,57,0.3);background:transparent;cursor:default;border:none}.flatpickr-innerContainer{display:block;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden}.flatpickr-rContainer{display:inline-block;padding:0;-webkit-box-sizing:border-box;box-sizing:border-box}.flatpickr-time{text-align:center;outline:0;display:block;height:0;line-height:40px;max-height:40px;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.flatpickr-time:after{content:\\\"\\\";display:table;clear:both}.flatpickr-time .numInputWrapper{-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;width:40%;height:40px;float:left}.flatpickr-time .numInputWrapper span.arrowUp:after{border-bottom-color:#393939}.flatpickr-time .numInputWrapper span.arrowDown:after{border-top-color:#393939}.flatpickr-time.hasSeconds .numInputWrapper{width:26%}.flatpickr-time.time24hr .numInputWrapper{width:49%}.flatpickr-time input{background:transparent;-webkit-box-shadow:none;box-shadow:none;border:0;border-radius:0;text-align:center;margin:0;padding:0;height:inherit;line-height:inherit;color:#393939;font-size:14px;position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.flatpickr-time input.flatpickr-hour{font-weight:bold}.flatpickr-time input.flatpickr-minute,.flatpickr-time input.flatpickr-second{font-weight:400}.flatpickr-time input:focus{outline:0;border:0}.flatpickr-time .flatpickr-time-separator,.flatpickr-time .flatpickr-am-pm{height:inherit;float:left;line-height:inherit;color:#393939;font-weight:bold;width:2%;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-align-self:center;-ms-flex-item-align:center;align-self:center}.flatpickr-time .flatpickr-am-pm{outline:0;width:18%;cursor:pointer;text-align:center;font-weight:400}.flatpickr-time input:hover,.flatpickr-time .flatpickr-am-pm:hover,.flatpickr-time input:focus,.flatpickr-time .flatpickr-am-pm:focus{background:#eee}.flatpickr-input[readonly]{cursor:pointer}@-webkit-keyframes fpFadeInDown{from{opacity:0;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@keyframes fpFadeInDown{from{opacity:0;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","\"use strict\";\n\n/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n*/\nmodule.exports = function (cssWithMappingToString) {\n var list = [];\n\n // return the list of modules as css string\n list.toString = function toString() {\n return this.map(function (item) {\n var content = \"\";\n var needLayer = typeof item[5] !== \"undefined\";\n if (item[4]) {\n content += \"@supports (\".concat(item[4], \") {\");\n }\n if (item[2]) {\n content += \"@media \".concat(item[2], \" {\");\n }\n if (needLayer) {\n content += \"@layer\".concat(item[5].length > 0 ? \" \".concat(item[5]) : \"\", \" {\");\n }\n content += cssWithMappingToString(item);\n if (needLayer) {\n content += \"}\";\n }\n if (item[2]) {\n content += \"}\";\n }\n if (item[4]) {\n content += \"}\";\n }\n return content;\n }).join(\"\");\n };\n\n // import a list of modules into the list\n list.i = function i(modules, media, dedupe, supports, layer) {\n if (typeof modules === \"string\") {\n modules = [[null, modules, undefined]];\n }\n var alreadyImportedModules = {};\n if (dedupe) {\n for (var k = 0; k < this.length; k++) {\n var id = this[k][0];\n if (id != null) {\n alreadyImportedModules[id] = true;\n }\n }\n }\n for (var _k = 0; _k < modules.length; _k++) {\n var item = [].concat(modules[_k]);\n if (dedupe && alreadyImportedModules[item[0]]) {\n continue;\n }\n if (typeof layer !== \"undefined\") {\n if (typeof item[5] === \"undefined\") {\n item[5] = layer;\n } else {\n item[1] = \"@layer\".concat(item[5].length > 0 ? \" \".concat(item[5]) : \"\", \" {\").concat(item[1], \"}\");\n item[5] = layer;\n }\n }\n if (media) {\n if (!item[2]) {\n item[2] = media;\n } else {\n item[1] = \"@media \".concat(item[2], \" {\").concat(item[1], \"}\");\n item[2] = media;\n }\n }\n if (supports) {\n if (!item[4]) {\n item[4] = \"\".concat(supports);\n } else {\n item[1] = \"@supports (\".concat(item[4], \") {\").concat(item[1], \"}\");\n item[4] = supports;\n }\n }\n list.push(item);\n }\n };\n return list;\n};","\"use strict\";\n\nmodule.exports = function (item) {\n var content = item[1];\n var cssMapping = item[3];\n if (!cssMapping) {\n return content;\n }\n if (typeof btoa === \"function\") {\n var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(cssMapping))));\n var data = \"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(base64);\n var sourceMapping = \"/*# \".concat(data, \" */\");\n return [content].concat([sourceMapping]).join(\"\\n\");\n }\n return [content].join(\"\\n\");\n};","'use strict';\n\nvar m = require('react-dom');\nif (process.env.NODE_ENV === 'production') {\n exports.createRoot = m.createRoot;\n exports.hydrateRoot = m.hydrateRoot;\n} else {\n var i = m.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\n exports.createRoot = function(c, o) {\n i.usingClientEntryPoint = true;\n try {\n return m.createRoot(c, o);\n } finally {\n i.usingClientEntryPoint = false;\n }\n };\n exports.hydrateRoot = function(c, h, o) {\n i.usingClientEntryPoint = true;\n try {\n return m.hydrateRoot(c, h, o);\n } finally {\n i.usingClientEntryPoint = false;\n }\n };\n}\n","/* global Map:readonly, Set:readonly, ArrayBuffer:readonly */\n\nvar hasElementType = typeof Element !== 'undefined';\nvar hasMap = typeof Map === 'function';\nvar hasSet = typeof Set === 'function';\nvar hasArrayBuffer = typeof ArrayBuffer === 'function' && !!ArrayBuffer.isView;\n\n// Note: We **don't** need `envHasBigInt64Array` in fde es6/index.js\n\nfunction equal(a, b) {\n // START: fast-deep-equal es6/index.js 3.1.3\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n // START: Modifications:\n // 1. Extra `has &&` helpers in initial condition allow es6 code\n // to co-exist with es5.\n // 2. Replace `for of` with es5 compliant iteration using `for`.\n // Basically, take:\n //\n // ```js\n // for (i of a.entries())\n // if (!b.has(i[0])) return false;\n // ```\n //\n // ... and convert to:\n //\n // ```js\n // it = a.entries();\n // while (!(i = it.next()).done)\n // if (!b.has(i.value[0])) return false;\n // ```\n //\n // **Note**: `i` access switches to `i.value`.\n var it;\n if (hasMap && (a instanceof Map) && (b instanceof Map)) {\n if (a.size !== b.size) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!b.has(i.value[0])) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!equal(i.value[1], b.get(i.value[0]))) return false;\n return true;\n }\n\n if (hasSet && (a instanceof Set) && (b instanceof Set)) {\n if (a.size !== b.size) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!b.has(i.value[0])) return false;\n return true;\n }\n // END: Modifications\n\n if (hasArrayBuffer && ArrayBuffer.isView(a) && ArrayBuffer.isView(b)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (a[i] !== b[i]) return false;\n return true;\n }\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n // START: Modifications:\n // Apply guards for `Object.create(null)` handling. See:\n // - https://github.com/FormidableLabs/react-fast-compare/issues/64\n // - https://github.com/epoberezkin/fast-deep-equal/issues/49\n if (a.valueOf !== Object.prototype.valueOf && typeof a.valueOf === 'function' && typeof b.valueOf === 'function') return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString && typeof a.toString === 'function' && typeof b.toString === 'function') return a.toString() === b.toString();\n // END: Modifications\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n // END: fast-deep-equal\n\n // START: react-fast-compare\n // custom handling for DOM elements\n if (hasElementType && a instanceof Element) return false;\n\n // custom handling for React/Preact\n for (i = length; i-- !== 0;) {\n if ((keys[i] === '_owner' || keys[i] === '__v' || keys[i] === '__o') && a.$$typeof) {\n // React-specific: avoid traversing React elements' _owner\n // Preact-specific: avoid traversing Preact elements' __v and __o\n // __v = $_original / $_vnode\n // __o = $_owner\n // These properties contain circular references and are not needed when\n // comparing the actual elements (and not their owners)\n // .$$typeof and ._store on just reasonable markers of elements\n\n continue;\n }\n\n // all other properties should be traversed as usual\n if (!equal(a[keys[i]], b[keys[i]])) return false;\n }\n // END: react-fast-compare\n\n // START: fast-deep-equal\n return true;\n }\n\n return a !== a && b !== b;\n}\n// end fast-deep-equal\n\nmodule.exports = function isEqual(a, b) {\n try {\n return equal(a, b);\n } catch (error) {\n if (((error.message || '').match(/stack|recursion/i))) {\n // warn on circular references, don't crash\n // browsers give this different errors name and messages:\n // chrome/safari: \"RangeError\", \"Maximum call stack size exceeded\"\n // firefox: \"InternalError\", too much recursion\"\n // edge: \"Error\", \"Out of stack space\"\n console.warn('react-fast-compare cannot handle circular refs');\n return false;\n }\n // some other error. we should definitely know about these\n throw error;\n }\n};\n","\"use strict\";\n\nvar stylesInDOM = [];\nfunction getIndexByIdentifier(identifier) {\n var result = -1;\n for (var i = 0; i < stylesInDOM.length; i++) {\n if (stylesInDOM[i].identifier === identifier) {\n result = i;\n break;\n }\n }\n return result;\n}\nfunction modulesToDom(list, options) {\n var idCountMap = {};\n var identifiers = [];\n for (var i = 0; i < list.length; i++) {\n var item = list[i];\n var id = options.base ? item[0] + options.base : item[0];\n var count = idCountMap[id] || 0;\n var identifier = \"\".concat(id, \" \").concat(count);\n idCountMap[id] = count + 1;\n var indexByIdentifier = getIndexByIdentifier(identifier);\n var obj = {\n css: item[1],\n media: item[2],\n sourceMap: item[3],\n supports: item[4],\n layer: item[5]\n };\n if (indexByIdentifier !== -1) {\n stylesInDOM[indexByIdentifier].references++;\n stylesInDOM[indexByIdentifier].updater(obj);\n } else {\n var updater = addElementStyle(obj, options);\n options.byIndex = i;\n stylesInDOM.splice(i, 0, {\n identifier: identifier,\n updater: updater,\n references: 1\n });\n }\n identifiers.push(identifier);\n }\n return identifiers;\n}\nfunction addElementStyle(obj, options) {\n var api = options.domAPI(options);\n api.update(obj);\n var updater = function updater(newObj) {\n if (newObj) {\n if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap && newObj.supports === obj.supports && newObj.layer === obj.layer) {\n return;\n }\n api.update(obj = newObj);\n } else {\n api.remove();\n }\n };\n return updater;\n}\nmodule.exports = function (list, options) {\n options = options || {};\n list = list || [];\n var lastIdentifiers = modulesToDom(list, options);\n return function update(newList) {\n newList = newList || [];\n for (var i = 0; i < lastIdentifiers.length; i++) {\n var identifier = lastIdentifiers[i];\n var index = getIndexByIdentifier(identifier);\n stylesInDOM[index].references--;\n }\n var newLastIdentifiers = modulesToDom(newList, options);\n for (var _i = 0; _i < lastIdentifiers.length; _i++) {\n var _identifier = lastIdentifiers[_i];\n var _index = getIndexByIdentifier(_identifier);\n if (stylesInDOM[_index].references === 0) {\n stylesInDOM[_index].updater();\n stylesInDOM.splice(_index, 1);\n }\n }\n lastIdentifiers = newLastIdentifiers;\n };\n};","\"use strict\";\n\nvar memo = {};\n\n/* istanbul ignore next */\nfunction getTarget(target) {\n if (typeof memo[target] === \"undefined\") {\n var styleTarget = document.querySelector(target);\n\n // Special case to return head of iframe instead of iframe itself\n if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {\n try {\n // This will throw an exception if access to iframe is blocked\n // due to cross-origin restrictions\n styleTarget = styleTarget.contentDocument.head;\n } catch (e) {\n // istanbul ignore next\n styleTarget = null;\n }\n }\n memo[target] = styleTarget;\n }\n return memo[target];\n}\n\n/* istanbul ignore next */\nfunction insertBySelector(insert, style) {\n var target = getTarget(insert);\n if (!target) {\n throw new Error(\"Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.\");\n }\n target.appendChild(style);\n}\nmodule.exports = insertBySelector;","\"use strict\";\n\n/* istanbul ignore next */\nfunction insertStyleElement(options) {\n var element = document.createElement(\"style\");\n options.setAttributes(element, options.attributes);\n options.insert(element, options.options);\n return element;\n}\nmodule.exports = insertStyleElement;","\"use strict\";\n\n/* istanbul ignore next */\nfunction setAttributesWithoutAttributes(styleElement) {\n var nonce = typeof __webpack_nonce__ !== \"undefined\" ? __webpack_nonce__ : null;\n if (nonce) {\n styleElement.setAttribute(\"nonce\", nonce);\n }\n}\nmodule.exports = setAttributesWithoutAttributes;","\"use strict\";\n\n/* istanbul ignore next */\nfunction apply(styleElement, options, obj) {\n var css = \"\";\n if (obj.supports) {\n css += \"@supports (\".concat(obj.supports, \") {\");\n }\n if (obj.media) {\n css += \"@media \".concat(obj.media, \" {\");\n }\n var needLayer = typeof obj.layer !== \"undefined\";\n if (needLayer) {\n css += \"@layer\".concat(obj.layer.length > 0 ? \" \".concat(obj.layer) : \"\", \" {\");\n }\n css += obj.css;\n if (needLayer) {\n css += \"}\";\n }\n if (obj.media) {\n css += \"}\";\n }\n if (obj.supports) {\n css += \"}\";\n }\n var sourceMap = obj.sourceMap;\n if (sourceMap && typeof btoa !== \"undefined\") {\n css += \"\\n/*# sourceMappingURL=data:application/json;base64,\".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), \" */\");\n }\n\n // For old IE\n /* istanbul ignore if */\n options.styleTagTransform(css, styleElement, options.options);\n}\nfunction removeStyleElement(styleElement) {\n // istanbul ignore if\n if (styleElement.parentNode === null) {\n return false;\n }\n styleElement.parentNode.removeChild(styleElement);\n}\n\n/* istanbul ignore next */\nfunction domAPI(options) {\n if (typeof document === \"undefined\") {\n return {\n update: function update() {},\n remove: function remove() {}\n };\n }\n var styleElement = options.insertStyleElement(options);\n return {\n update: function update(obj) {\n apply(styleElement, options, obj);\n },\n remove: function remove() {\n removeStyleElement(styleElement);\n }\n };\n}\nmodule.exports = domAPI;","\"use strict\";\n\n/* istanbul ignore next */\nfunction styleTagTransform(css, styleElement) {\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}\nmodule.exports = styleTagTransform;","module.exports = require(\"react-dom\");","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","__webpack_require__.amdD = function () {\n\tthrow new Error('define cannot be used indirect');\n};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.p = \"\";","__webpack_require__.nc = undefined;","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"react\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"prop-types\");","import { createContext } from 'react';\n\nconst AccordionContext = createContext();\n\nexport default AccordionContext;\n","import { createContext } from 'react';\n\nconst AccordionItemContext = createContext();\n\nexport default AccordionItemContext;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nfunction Icon({\n className,\n family,\n type,\n ...rest\n}) {\n function getCSSClasses() {\n const fontFamily = family || 'fa';\n\n return [\n 'tyk-icon',\n fontFamily,\n `${fontFamily}-${type}`,\n className,\n ].filter(Boolean).join(' ');\n }\n\n return ;\n}\n\nIcon.propTypes = {\n className: PropTypes.string,\n family: PropTypes.string,\n type: PropTypes.string.isRequired,\n};\n\nexport default Icon;\n","import React, { useContext } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Icon from '../../Icon';\nimport AccordionItemContext from './AccordionItemContext';\n\nfunction ItemTrigger({ wrap }) {\n const { collapsed, disabled, toggleChange } = useContext(AccordionItemContext);\n\n const iconType = collapsed ? 'chevron-down' : 'chevron-up';\n const classes = [\n 'tyk-accordion__trigger',\n disabled && 'tyk-accordion__trigger--disabled',\n ].filter(Boolean).join(' ');\n const trigger = (\n \n \n \n );\n\n return wrap\n ?
    {trigger}
    \n : trigger;\n}\n\nItemTrigger.propTypes = {\n wrap: PropTypes.bool,\n};\n\nexport default ItemTrigger;\n","import React, {\n useMemo, useState, useContext, forwardRef,\n} from 'react';\nimport PropTypes from 'prop-types';\n\nimport AccordionContext from './AccordionContext';\nimport AccordionItemContext from './AccordionItemContext';\nimport ItemTrigger from './AccordionItemTrigger';\n\nfunction AccordionItem({\n collapsed: collapsedProp,\n children,\n className,\n disabled,\n}, ref) {\n const { arrow } = useContext(AccordionContext);\n const [collapsed, setCollapsed] = useState(collapsedProp);\n\n const toggleChange = () => {\n if (disabled) {\n return;\n }\n\n setCollapsed(!collapsed);\n };\n\n const classes = useMemo(() => [\n 'tyk-accordion__item',\n arrow.expandToContent\n ? `tyk-accordion__item--trigger-position-${arrow.position}`\n : 'tyk-accordion__item--trigger-in-header',\n className,\n collapsed === false && 'tyk-accordion__item--active',\n ].filter(Boolean).join(' '), [arrow, className, collapsed]);\n\n const contextValue = useMemo(() => ({\n collapsed,\n disabled,\n toggleChange,\n }), [collapsed, disabled, toggleChange]);\n\n return (\n
    \n \n {arrow.expandToContent && (\n \n )}\n {children}\n \n
    \n );\n}\n\nAccordionItem.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n collapsed: PropTypes.bool,\n className: PropTypes.string,\n disabled: PropTypes.bool,\n};\n\nAccordionItem.defaultProps = {\n collapsed: false,\n};\n\nexport default forwardRef(AccordionItem);\n","import React, { useContext } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Icon from '../../Icon';\nimport AccordionContext from './AccordionContext';\nimport AccordionItemContext from './AccordionItemContext';\nimport ItemTrigger from './AccordionItemTrigger';\n\nfunction AccordionItemHeader({ className, children }) {\n const { collapsed, disabled, toggleChange } = useContext(AccordionItemContext);\n const { usearrowastrigger, arrow } = useContext(AccordionContext);\n const iconType = collapsed ? 'chevron-down' : 'chevron-up';\n const classes = [\n 'tyk-accordion__item-header',\n usearrowastrigger && 'tyk-accordion__arrow-trigger',\n className,\n ].filter(Boolean).join(' ');\n\n return (\n
    \n {\n !usearrowastrigger\n ? (\n \n {children}\n \n \n )\n : (\n <>\n {!arrow.expandToContent && arrow.position === 'left' && (\n \n )}\n
    {children}
    \n {!arrow.expandToContent && arrow.position === 'right' && (\n \n )}\n \n )\n }\n
    \n );\n}\n\nAccordionItemHeader.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n className: PropTypes.string,\n};\n\nexport default AccordionItemHeader;\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"react-transition-group\");","import { useEffect, useRef } from 'react';\n\nconst usePrevious = (value) => {\n const ref = useRef();\n useEffect(() => {\n ref.current = value;\n }, [value]);\n return ref.current;\n};\n\n/** @component */\nexport default usePrevious;\n","import { useEffect, useRef } from 'react';\n\nconst useTimeout = (callback, delay) => {\n const savedCallback = useRef();\n\n useEffect(() => {\n savedCallback.current = callback;\n },\n [callback]);\n\n useEffect(() => {\n function tick() {\n savedCallback.current();\n }\n if (delay !== null) {\n const id = setTimeout(tick, delay);\n return () => clearTimeout(id);\n }\n\n return () => {};\n },\n [delay]);\n};\n\n/** @component */\nexport default useTimeout;\n","import { useEffect, useRef } from 'react';\n\n/** @component */\nexport default function useInterval(callback, delay, ...args) {\n const savedCallback = useRef();\n\n useEffect(() => {\n savedCallback.current = callback;\n }, [callback]);\n\n /* eslint-disable consistent-return */\n useEffect(() => {\n function tick() {\n savedCallback.current(...args);\n }\n if (delay !== null && delay !== undefined) {\n const id = setInterval(tick, delay);\n return () => clearInterval(id);\n }\n }, [delay]);\n /* eslint-disable consistent-return */\n}\n","import { useEffect, useRef } from 'react';\n\nconst useEventListener = (eventName, handler, element) => {\n const savedHandler = useRef();\n useEffect(() => {\n savedHandler.current = handler;\n }, [handler]);\n\n useEffect(() => {\n const isSupported = element?.addEventListener;\n if (!isSupported) {\n // eslint-disable-next-line consistent-return\n return;\n }\n\n const eventListener = (event) => savedHandler.current(event);\n element.addEventListener(eventName, eventListener);\n\n // eslint-disable-next-line consistent-return\n return () => {\n element.removeEventListener(eventName, eventListener);\n };\n }, [eventName, element]);\n};\n\n/** @component */\nexport default useEventListener;\n","import { useCallback, useState, useLayoutEffect } from 'react';\n\nconst getSize = (el) => {\n if (!el) {\n return {\n width: 0,\n height: 0,\n };\n }\n\n return {\n width: el.offsetWidth,\n height: el.offsetHeight,\n };\n};\n\nconst useComponentSize = (ref) => {\n const [ComponentSize, setComponentSize] = useState(getSize(ref ? ref.current : {}));\n const handleResize = useCallback(() => {\n if (ref.current) {\n setComponentSize(getSize(ref.current));\n }\n }, [ref]);\n\n useLayoutEffect(() => {\n handleResize();\n\n let resizeObserver = new ResizeObserver(() => {\n handleResize();\n });\n resizeObserver.observe(ref.current);\n\n return () => {\n resizeObserver.disconnect(ref.current);\n resizeObserver = null;\n };\n }, [ref.current]);\n\n return ComponentSize;\n};\n\n/** @component */\nexport default useComponentSize;\n","export { default as usePrevious } from './usePrevious';\nexport { default as useTimeout } from './useTimeout';\nexport { default as useInterval } from './useInterval';\nexport { default as useEventListener } from './useEventListener';\nexport { default as useComponentSize } from './useComponentSize';\n","import React, {\n useRef, useState, useCallback, useEffect,\n} from 'react';\nimport PropTypes from 'prop-types';\nimport { CSSTransition } from 'react-transition-group';\nimport { useEventListener, useComponentSize } from '../../hooks';\n\n/**\n * Collapsible is a component that helps you to collapse/expand any type of content\n */\nfunction Collapsible({\n className,\n collapsed,\n children,\n ...rest\n}) {\n const contentContainer = useRef(null);\n const collapseWrapper = useRef(null);\n const refContainerSize = useComponentSize(contentContainer);\n const [contentContainerStyle, setContentContainerStyle] = useState({\n // eslint-disable-next-line\n height: (collapsed) ? 0 : 'auto',\n });\n\n const setHeight = (height) => {\n setContentContainerStyle({\n height: `${height}px`,\n });\n };\n\n const getHeight = () => (contentContainer.current ? contentContainer.current.clientHeight : 0);\n\n const onEnter = () => {\n setHeight(getHeight());\n };\n\n const onExit = () => {\n setHeight(0);\n };\n\n useEffect(() => {\n if (!collapsed\n && refContainerSize?.height\n && contentContainerStyle.height !== refContainerSize?.height\n ) {\n setHeight(refContainerSize.height);\n }\n }, [refContainerSize.height]);\n\n const onWindowResize = useCallback(() => {\n if (!collapsed && contentContainer.current) {\n setHeight(getHeight());\n collapseWrapper.current.style.height = `${getHeight()}px`;\n }\n }, [collapsed, contentContainer.current]);\n\n useEventListener('resize', onWindowResize, window);\n\n return (\n \n \n \n { children }\n \n \n \n );\n}\n\nCollapsible.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]),\n /** Describes if the content of Collapsible should be hidden or not */\n collapsed: PropTypes.bool,\n /** CSS classes that can be passed to the Collapsible element */\n className: PropTypes.string,\n};\n\nexport default Collapsible;\n","import React, { useContext } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Collapsible from '../../Collapsible';\nimport AccordionItemContext from './AccordionItemContext';\n\nfunction AccordionItemContent({ children, className }) {\n const { collapsed } = useContext(AccordionItemContext);\n\n const classes = [\n 'tyk-accordion__item-content',\n className,\n ].filter(Boolean).join(' ');\n\n return (\n
    \n \n { children }\n \n
    \n );\n}\n\nAccordionItemContent.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n className: PropTypes.string,\n};\n\nexport default AccordionItemContent;\n","import React, { useMemo } from 'react';\nimport PropTypes from 'prop-types';\nimport AccordionItem from './js/AccordionItem';\nimport AccordionItemHeader from './js/AccordionItemHeader';\nimport AccordionItemContent from './js/AccordionItemContent';\nimport AccordionContext from './js/AccordionContext';\n\nfunction Accordion({\n className,\n children,\n usearrowastrigger,\n arrow = { position: 'right', expandToContent: false },\n}) {\n const classes = [\n 'tyk-accordion',\n className,\n ].filter(Boolean).join(' ');\n\n const contextValue = useMemo(() => ({\n usearrowastrigger,\n arrow,\n }), [usearrowastrigger, arrow]);\n\n return (\n
    \n \n {children}\n \n
    \n );\n}\n\nAccordion.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n className: PropTypes.string,\n usearrowastrigger: PropTypes.bool,\n arrow: PropTypes.shape({\n position: PropTypes.oneOf(['left', 'right']),\n expandToContent: PropTypes.bool,\n }),\n};\n\nAccordion.defaultProps = {\n usearrowastrigger: false,\n};\n\n// For Readme.md : Start\nAccordion.Item = AccordionItem;\nAccordion.Item.Header = AccordionItemHeader;\nAccordion.Item.Content = AccordionItemContent;\n// For Readme.md : End\n\nexport default Accordion;\n","import React, { Fragment, cloneElement } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Icon from '../Icon';\n\n/**\n * Button component.\n */\nconst Button = React.forwardRef((props, ref) => {\n const {\n customButton,\n children,\n iconType,\n iconFamily,\n iconPosition,\n iconOnly,\n id,\n className,\n disabled,\n display,\n href,\n onClick,\n noStyle,\n size,\n theme,\n type,\n ...rest\n } = props;\n\n const getCssClasses = () => {\n const cssClasses = ['tyk-button'].concat(className ? className.split(' ') : []);\n const sizeClass = (size) ? `tyk-button--${size}` : 'tyk-button--md';\n const disabledClass = (disabled) ? 'disabled' : '';\n const displayClass = display || '';\n const themeClass = theme ? `tyk-button--${theme}` : '';\n const iconOnlyClass = iconOnly ? 'tyk-button--icon-only' : '';\n const noStyleClass = noStyle ? 'tyk-button--no-style' : '';\n\n cssClasses.push(iconOnlyClass);\n cssClasses.push(themeClass);\n cssClasses.push(sizeClass);\n cssClasses.push(disabledClass);\n cssClasses.push(displayClass);\n cssClasses.push(noStyleClass);\n\n if (iconType) {\n cssClasses.push(`icon-${iconPosition || 'left'}`);\n }\n\n return cssClasses.join(' ');\n };\n\n const getButtonIcon = (position) => {\n const iPos = iconPosition || 'left';\n\n return (\n (iconType && iPos === position)\n ? \n : null\n );\n };\n\n const getButtonType = () => {\n let buttonType;\n\n if (customButton) {\n return (\n \n { cloneElement(customButton, {\n className: getCssClasses(),\n disabled,\n })\n }\n \n );\n }\n\n if (href) {\n buttonType = (\n \n { getButtonIcon('left') }\n { children }\n { getButtonIcon('right') }\n \n );\n } else {\n buttonType = (\n // eslint-disable-next-line react/button-has-type\n \n { getButtonIcon('left') }\n { children && {children} }\n { getButtonIcon('right') }\n \n );\n }\n\n return buttonType;\n };\n\n\n return (\n getButtonType()\n );\n});\n\nButton.propTypes = {\n /**\n * Content of a button. Can be a DOM element or a React component\n */\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n customButton: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n ]),\n className: PropTypes.string,\n /**\n * Display type: inline/block. Default is inline\n */\n display: PropTypes.string,\n /**\n * Sets the button disabled state\n */\n disabled: PropTypes.bool,\n /**\n * Having this property set the button will become a link\n */\n id: PropTypes.string,\n href: PropTypes.string,\n iconPosition: PropTypes.string, // left or right\n iconFamily: PropTypes.string,\n iconOnly: PropTypes.bool,\n iconType: PropTypes.string,\n noStyle: PropTypes.bool,\n /**\n * Callback function, called when the button si clicked\n */\n onClick: PropTypes.func,\n /**\n * Describes the appearence of the button (ex: primary, danger, primary-outline etc.)\n */\n theme: PropTypes.string,\n /**\n * Type of the button (ex: button, submit etc.)\n */\n type: PropTypes.string,\n /**\n * Describes the size of the button (sm, md, lg). Default one is md\n */\n size: PropTypes.string,\n};\n\nButton.defaultProps = {\n theme: '',\n type: 'button',\n};\n\nexport default Button;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\n/**\n * Tyk button component.\n */\nfunction ButtonGroup({\n className,\n children,\n label,\n}) {\n return (\n
    \n {Boolean(label) && (\n \n )}\n
    \n {children}\n
    \n
    \n );\n}\n\nButtonGroup.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n className: PropTypes.string,\n /**\n * Label that will sit above the button group\n */\n label: PropTypes.string,\n};\n\nexport default ButtonGroup;\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"echarts\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"immutable\");","export default (func, wait, immediate) => {\n let timeout;\n return function debouncer(...args) {\n const context = this;\n const later = () => {\n timeout = null;\n if (!immediate) {\n func.apply(context, args);\n }\n };\n const callNow = immediate && !timeout;\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n if (callNow) {\n func.apply(context, args);\n }\n };\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nfunction Loader({ className, position = 'relative', withbackground = false }) {\n const classes = [\n 'loading',\n position,\n className,\n ].filter(Boolean).join(' ');\n\n const loader = (\n
    \n
    \n
    \n
    \n
    \n
    \n );\n\n return withbackground\n ?
    {loader}
    \n : loader;\n}\n\nLoader.propTypes = {\n /** add a class to loader */\n className: PropTypes.string,\n /** position of loader (absolute / relative) */\n position: PropTypes.string,\n /** defines weather loader should be renders with or without background */\n withbackground: PropTypes.bool,\n};\n\nexport default Loader;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport Icon from '../Icon';\n\n/**\n * The Message component is used to highlight important content to the users.\n *\n * If the content you are displaying needs immediate attention or is a feedback,\n * consider using `toast` instead\n */\nfunction Message({\n children, theme, onClose, noMargin, className,\n}) {\n function getCssClasses() {\n return [\n 'tyk-message',\n `tyk-message--${theme || 'info'}`,\n noMargin && 'no-margin',\n className,\n ].filter(Boolean).join(' ');\n }\n\n const iconType = theme === 'success' ? 'check' : 'warning';\n\n return (\n
    \n \n
    \n { children }\n
    \n {onClose && (\n \n )}\n
    \n );\n}\n\nMessage.propTypes = {\n /** Set theme for message (eg. default, success, danger, etc) */\n theme: PropTypes.string,\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]),\n /** add a class to loader */\n className: PropTypes.string,\n /** Removes margins by adding `no-margin` class */\n noMargin: PropTypes.bool,\n /** Callback for clicking on the \"x\" */\n onClose: PropTypes.func,\n};\n\nexport default Message;\n","import React, {\n useState, useEffect, useRef, memo,\n} from 'react';\nimport PropTypes from 'prop-types';\nimport * as echarts from 'echarts';\nimport { fromJS } from 'immutable';\n\nimport debounce from '../../utils/debounce';\nimport { usePrevious } from '../../hooks';\nimport Loader from '../Loader';\nimport Message from '../Message';\nimport worldMap from './maps/world.json';\n\necharts.registerMap('world', worldMap);\n\nconst Chart = (props) => {\n const {\n areaStyleColors,\n dataLoaded,\n hasData,\n highlight,\n type,\n option,\n series,\n onChange,\n zoomStart,\n zoomEnd,\n title,\n seriesConfig = [],\n noDataComponent = null,\n zoomColors,\n } = props;\n const [tykChartInstance, setTykChartInstance] = useState(null);\n const chartWrapperRef = useRef(null);\n const onResize = () => {\n if (tykChartInstance) {\n tykChartInstance.resize();\n }\n };\n\n const lineBarChart = {\n defaultOpts: fromJS({\n title: {\n show: true,\n text: title,\n left: 0,\n },\n color: [],\n toolbox: {\n right: '0',\n orient: 'horizontal',\n itemSize: 15,\n showTitle: true,\n feature: null,\n },\n dataZoom: [{\n show: true,\n start: 0,\n end: 100,\n orient: 'horizontal',\n dataBackground: {\n lineStyle: {\n color: zoomColors?.lineStyle || '#368493',\n },\n areaStyle: {\n color: zoomColors?.areaStyle || '#368493',\n },\n },\n handleStyle: {\n color: zoomColors?.handleStyle || '#368493',\n },\n textStyle: {\n color: zoomColors?.textStyle || '#368493',\n },\n borderColor: 'transparent',\n fillerColor: zoomColors?.fillerColor || 'rgba(54, 132, 147, 0.1)',\n }],\n legend: {\n show: false,\n // data: [],\n // right: '1%',\n },\n tooltip: {\n trigger: 'axis',\n axisPointer: {\n type: 'cross',\n },\n },\n grid: {\n left: '1%',\n right: '1%',\n bottom: '50px',\n top: '40px',\n containLabel: true,\n },\n xAxis: {\n boundaryGap: false,\n type: 'category',\n splitLine: {\n show: true,\n lineStyle: {\n type: 'dotted',\n color: '#F0F0F0',\n },\n },\n axisLine: {\n show: false,\n },\n axisTick: {\n show: false,\n },\n data: [],\n },\n yAxis: {\n min: 'dataMin',\n boundaryGap: true,\n axisPointer: {\n show: true,\n },\n splitLine: {\n lineStyle: {\n type: 'dotted',\n color: '#F0F0F0',\n },\n show: true,\n },\n axisLabel: {\n show: true,\n },\n axisLine: {\n show: true,\n },\n axisTick: {\n show: false,\n },\n type: 'value',\n },\n textStyle: {\n color: '#5a5a68',\n },\n series: [],\n animationEasing: 'elasticOut',\n }),\n seriesDefault: fromJS({\n data: [],\n type: 'line',\n areaStyle: {\n opacity: 1,\n color: areaStyleColors ? new echarts.graphic.LinearGradient(0, 0, 1, 1,\n areaStyleColors.map((color, index) => ({\n offset: index,\n color,\n }))) : [],\n },\n smooth: false,\n symbolSize: 7,\n name: '',\n }),\n };\n\n const pieChart = {\n defaultOpts: fromJS({\n tooltip: {\n trigger: 'axis',\n formatter: '{b}: {c} ({d}%)',\n },\n legend: {\n orient: 'horizontal',\n x: 'left',\n y: 'top',\n data: [],\n },\n color: [],\n series: [],\n }),\n seriesDefault: fromJS({\n type: 'pie',\n center: [\n '50%',\n '55%',\n ],\n radius: [\n '50%',\n '75%',\n ],\n avoidLabelOverlap: false,\n animationType: 'scale',\n animationEasing: 'elasticOut',\n labelLine: {\n normal: {\n show: true,\n smooth: 0.2,\n length: 6,\n length2: 6,\n },\n },\n data: [],\n }),\n };\n\n const geoChart = {\n defaultOpts: fromJS({\n series: [],\n }),\n seriesDefault: fromJS({\n type: 'map',\n data: [],\n }),\n };\n\n const buildChartOptions = (selectedType, selectedOptions, selectedSeries) => {\n let finalOpts = {};\n switch (selectedType) {\n case 'pie': {\n finalOpts = pieChart.defaultOpts.mergeDeep(fromJS(selectedOptions)).toJS();\n\n selectedSeries.forEach((entry) => {\n finalOpts.series.push(pieChart.seriesDefault.mergeDeep(fromJS(entry)).toJS());\n });\n\n break;\n }\n\n case 'geo': {\n finalOpts = geoChart.defaultOpts.mergeDeep(fromJS(selectedOptions)).toJS();\n\n selectedSeries.forEach((entry) => {\n finalOpts.series.push(geoChart.seriesDefault.mergeDeep(fromJS(entry)).toJS());\n });\n\n break;\n }\n\n default: {\n finalOpts = lineBarChart.defaultOpts.mergeDeep(fromJS(selectedOptions)).toJS();\n if (Array.isArray(selectedOptions.yAxis)) {\n finalOpts.yAxis = selectedOptions.yAxis;\n }\n\n selectedSeries.forEach((entry, index) => {\n const seriesData = Object.assign(\n {},\n lineBarChart.seriesDefault.toJS(),\n seriesConfig[index], entry,\n );\n finalOpts.series.push(seriesData);\n });\n break;\n }\n }\n return finalOpts;\n };\n\n useEffect(() => {\n window.addEventListener('resize', onResize);\n\n return () => {\n window.removeEventListener('resize', onResize);\n };\n }, [tykChartInstance]);\n\n useEffect(() => {\n\n if (!chartWrapperRef?.current) {\n return;\n }\n\n setTykChartInstance(echarts.init(chartWrapperRef.current));\n return () => {\n if (tykChartInstance) {\n tykChartInstance.dispose();\n }\n };\n }, [chartWrapperRef.current]);\n\n const eventCallBack = (e) => {\n if (onChange) {\n onChange(e);\n }\n };\n\n useEffect(() => {\n let debouncedMethod;\n if (tykChartInstance) {\n debouncedMethod = debounce(eventCallBack, 500);\n tykChartInstance.on('dataZoom', debouncedMethod);\n tykChartInstance.on('restore', debouncedMethod);\n tykChartInstance.on('click', debouncedMethod);\n\n tykChartInstance.on('mousemove', (params) => {\n if (params.data) {\n tykChartInstance.getZr().setCursorStyle('pointer');\n }\n });\n }\n\n return () => {\n if (tykChartInstance) {\n tykChartInstance.off('dataZoom', debouncedMethod);\n tykChartInstance.off('restore', debouncedMethod);\n tykChartInstance.off('click', debouncedMethod);\n }\n };\n }, [tykChartInstance, onChange]);\n\n const prevInstance = usePrevious(tykChartInstance);\n const prevOption = usePrevious(option);\n const prevType = usePrevious(type);\n const prevSeries = usePrevious(series);\n useEffect(() => {\n if (\n tykChartInstance\n && (\n !fromJS(prevInstance)?.equals?.(fromJS(tykChartInstance))\n || !fromJS(prevOption)?.equals?.(fromJS(option))\n || (prevType !== type)\n || !fromJS(prevSeries).equals?.(fromJS(series))\n )\n ) {\n tykChartInstance.clear();\n tykChartInstance.setOption(buildChartOptions(type, option, series));\n tykChartInstance.dispatchAction({\n type: 'takeGlobalCursor',\n key: 'dataZoomSelect',\n dataZoomSelectActive: true,\n });\n }\n }, [tykChartInstance, option, series, type]);\n\n useEffect(() => {\n if (tykChartInstance && highlight) {\n tykChartInstance.dispatchAction({\n type: 'highlight',\n seriesIndex: highlight.seriesIndex,\n dataIndex: highlight.dataIndex,\n });\n tykChartInstance.dispatchAction({\n type: 'showTip',\n seriesIndex: highlight.seriesIndex,\n dataIndex: highlight.dataIndex,\n });\n }\n }, [highlight]);\n\n\n const prevZoomStart = usePrevious(zoomStart);\n const prevZoomEnd = usePrevious(zoomEnd);\n useEffect(() => {\n if (\n tykChartInstance\n && zoomStart !== -1\n && zoomEnd !== -1\n && (\n prevZoomStart !== zoomStart\n || prevZoomEnd !== zoomEnd\n )\n ) {\n tykChartInstance.dispatchAction({\n type: 'dataZoom',\n startValue: zoomStart,\n endValue: zoomEnd,\n });\n }\n }, [zoomStart, zoomEnd]);\n\n const getStyle = () => {\n const { style } = props;\n const tempStyle = style || {};\n\n if (!tempStyle.height) {\n tempStyle.height = '300px';\n }\n if (!tempStyle.width) {\n tempStyle.width = '100%';\n }\n return tempStyle;\n };\n\n const chartHasData = () => (\n (dataLoaded && (hasData === false || hasData === true)) ? hasData : true\n );\n\n const getCssClasses = () => {\n const cssClasses = ['tyk-chart'];\n\n if (!dataLoaded) {\n cssClasses.push('tyk-chart--loading-chart');\n }\n\n if (!chartHasData()) {\n cssClasses.push('tyk-chart--no-data');\n }\n\n return cssClasses.join(' ');\n };\n\n return (\n
    \n {\n !dataLoaded\n ? \n : null\n }\n \n {\n /* eslint-disable-next-line no-nested-ternary */\n chartHasData()\n ? null\n : noDataComponent\n ? noDataComponent()\n : (\n \n No data to display\n \n )\n }\n
    \n );\n};\n\nChart.propTypes = {\n areaStyleColors: PropTypes.instanceOf(Array),\n dataLoaded: PropTypes.bool,\n hasData: PropTypes.bool,\n highlight: PropTypes.oneOfType([\n PropTypes.number,\n PropTypes.string,\n PropTypes.instanceOf(Array),\n ]),\n noDataComponent: PropTypes.func,\n zoomStart: PropTypes.number,\n zoomEnd: PropTypes.number,\n zoomColors: PropTypes.instanceOf(Object),\n option: PropTypes.instanceOf(Object),\n onChange: PropTypes.func,\n style: PropTypes.instanceOf(Object),\n type: PropTypes.string,\n title: PropTypes.string,\n series: PropTypes.instanceOf(Array),\n seriesConfig: PropTypes.instanceOf(Object),\n};\n\nexport default memo(Chart);\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport Message from '../../Message';\nimport { useTimeout } from '../../../hooks';\n\nconst ToastMessage = (props) => {\n const {\n children,\n options,\n onClose,\n index,\n } = props;\n const opts = Object.assign({\n theme: 'success',\n delay: 3000,\n }, options);\n let timer;\n\n const handleClose = (itemIndex) => {\n onClose(itemIndex);\n clearTimeout(timer);\n };\n\n useTimeout(() => handleClose(index), opts.delay);\n\n return (\n handleClose(index)}\n >\n {children}\n \n );\n};\n\nToastMessage.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]),\n options: PropTypes.instanceOf(Object),\n onClose: PropTypes.func,\n index: PropTypes.number,\n};\n\nexport default ToastMessage;\n","import React, {\n useEffect, useState,\n} from 'react';\nimport PropTypes from 'prop-types';\n\nimport ToastMessage from './ToastMessage';\n\nconst ToastContainer = (props) => {\n const [messages, setMessages] = useState({});\n const {\n notify,\n } = props;\n\n const updateNotifications = (message, options) => {\n const msgID = Math.floor(Math.random() * 1000000);\n \n setMessages((prevMessages) => ({\n ...prevMessages,\n [msgID]: {\n message,\n options,\n }\n }));\n };\n\n useEffect(() => {\n notify(updateNotifications);\n }, [messages]);\n\n const onMessageClosed = (index) => {\n const tempMessages = {...messages};\n delete tempMessages[index];\n setMessages((prevMessages) => {\n const { [index]: messageToBeRemoved, ...restMessages } = prevMessages;\n return restMessages;\n });\n };\n\n return (\n
    \n {\n Object.keys(messages).map((msgID) => (\n messages[msgID]\n ? (\n \n {messages[msgID].message}\n \n )\n : null\n ))\n }\n
    \n );\n};\n\nToastContainer.propTypes = {\n notify: PropTypes.func,\n};\n\nexport default ToastContainer;\n","import React from 'react';\nimport { createRoot } from 'react-dom/client';\nimport ToastContainer from './js/ToastContainer';\n/**\n * Toast is a service that displays dialogs\n * on the bottom right part of the screen.\n *\n * The dialogs can have one of the Tyk UI themes, so that\n * it would match it's purpose (i.e success message, error message)\n *\n */\nclass ToastCreator {\n constructor() {\n const el = document.createElement('div');\n el.className = 'tyk-toast';\n document.body.appendChild(el);\n const root = createRoot(el);\n root.render();\n }\n\n bindNotify = (fn) => {\n this.createNotification = fn;\n };\n\n notify(message, options) {\n if (this.createNotification) {\n this.createNotification(message, options);\n }\n }\n\n danger(message, options) {\n this.notify(message, { ...options, theme: 'danger' });\n }\n\n success(message, options) {\n this.notify(message, { ...options, theme: 'success' });\n }\n\n warning(message, options) {\n this.notify(message, { ...options, theme: 'warning' });\n }\n\n info(message, options) {\n this.notify(message, { ...options, theme: 'info' });\n }\n}\n\nconst toast = new ToastCreator();\n\nexport default toast;\n","import React, { Fragment, createRef, useCallback } from 'react';\nimport PropTypes from 'prop-types';\n\nimport toast from '../Toast';\n\n/**\n * - CopyToClipboard is used to copy string for a user.\n * - Can be used normally with a text or a custom components (Eg. Button, Icon, etc)\n */\n\nconst CopyToClipboard = (props) => {\n const {\n display, copy, children, onCopy,\n } = props;\n const txtRef = createRef();\n const handleClick = useCallback(() => {\n if (onCopy) {\n onCopy();\n }\n\n if (!window.navigator.clipboard) {\n txtRef.current.select();\n document.execCommand('copy');\n toast.notify('copied', { theme: 'success' });\n return;\n }\n window.navigator.clipboard.writeText(copy);\n toast.notify('copied', { theme: 'success' });\n }, [onCopy, txtRef]);\n\n return (\n \n \n {children || display}\n \n {!window.navigator.clipboard ? (\n \n ) : null}\n \n );\n};\n\nCopyToClipboard.propTypes = {\n /** Callback function executed after text is copied */\n onCopy: PropTypes.func,\n /** Text to be copied */\n copy: PropTypes.string.isRequired,\n /** Text to be displayed */\n display: PropTypes.string,\n /** Children of custom element if you are using any custom element */\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.string,\n PropTypes.object,\n PropTypes.node,\n ]),\n};\n\nexport default CopyToClipboard;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nfunction ModalFooter({ children }) {\n return (\n
    \n { children }\n
    \n );\n}\n\nModalFooter.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]),\n};\n\nexport default ModalFooter;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nfunction ModalBody({ children }) {\n return (\n
    \n { children }\n
    \n );\n}\n\nModalBody.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]),\n};\n\nexport default ModalBody;\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport { CSSTransition } from 'react-transition-group';\n\nimport Icon from '../Icon';\nimport ModalFooter from './js/ModalFooter';\nimport ModalBody from './js/ModalBody';\n\n/**\n * Modals add dialogs confirmation boxes, notifications, or completely custom content\n * - only one Modal can be opened at a time\n * - are unmounted when Modal is closed\n */\nfunction Modal({\n children,\n theme = 'none',\n disableCloseCommands = false,\n opened = false,\n onClose = () => {},\n size = 'md',\n className = '',\n showBackdrop = true,\n ...restProps\n}) {\n const modalClasses = [\n 'tyk-modal',\n `tyk-modal--theme-${theme}`,\n opened && 'opened',\n ].concat(className.split(' ')).filter(Boolean).join(' ');\n\n const backdropClasses = [\n 'tyk-modal__backdrop',\n opened && 'opened',\n ].filter(Boolean).join(' ');\n\n const themeIcon = {\n success: 'check',\n warning: 'warning',\n danger: 'delete',\n }[theme];\n\n return (\n <>\n {\n ReactDOM.createPortal(\n \n
    \n
    \n
    \n {theme !== 'none' && (\n
    \n \n
    \n )}\n { children }\n
    \n
    \n
    \n ,\n document.querySelector('body'),\n )\n }\n {showBackdrop && ReactDOM.createPortal(\n \n !disableCloseCommands && onClose()}\n onKeyDown={() => {}}\n type=\"button\"\n aria-label=\"Close\"\n />\n ,\n document.querySelector('body'),\n )}\n \n );\n}\n\nModal.Body = ModalBody;\nModal.Footer = ModalFooter;\n/* eslint-disable-next-line */\nModal.Header = ({ children }) => {\n console.warn('%cModal.Header%c is deprecated.', 'font-weight: bold', '');\n return (\n
    \n { children }\n
    \n );\n};\n/* eslint-disable-next-line */\nModal.Title = ({ children }) => {\n console.warn('%cModal.Title%c is deprecated.', 'font-weight: bold', '');\n return (\n

    \n { children }\n

    \n );\n};\n\nModal.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]),\n className: PropTypes.string,\n /** one of \"success\", \"warning\", \"danger\", \"none\"; default is \"none\" */\n theme: PropTypes.string,\n /** If set on true, the Modal won't close when clicking on the overlay or by pressing ESC key */\n disableCloseCommands: PropTypes.bool,\n /** If true the Modal will be by default opened */\n opened: PropTypes.bool,\n /** Callback method when the Modal is closed */\n onClose: PropTypes.func,\n /** Width of the Moda: md or lg */\n size: PropTypes.string,\n showBackdrop: PropTypes.bool,\n};\n\nexport default Modal;\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Button from '../Button';\nimport Modal from '../Modal';\n\n/**\n * Confirm component can be used to open a dialog () before a specific action\n */\nfunction Confirm(props) {\n const {\n children,\n title,\n description,\n confirmBtnText = 'Confirm',\n cancelBtnText = 'Cancel',\n } = props;\n const [open, setOpen] = useState(false);\n const [callback, setCallback] = useState(null);\n const [cancelCallback, setCancelCallback] = useState(null);\n\n const show = (callbackFunc, cancelCallbackFunc, beforeCallback) => (...args) => {\n if (beforeCallback) {\n beforeCallback(...args);\n }\n setOpen(true);\n setCallback(() => () => callbackFunc(...args));\n if (cancelCallbackFunc) {\n setCancelCallback(() => () => cancelCallbackFunc(...args));\n }\n };\n\n const hide = () => {\n setOpen(false);\n setCallback(null);\n setCancelCallback(null);\n };\n\n const cancel = () => {\n if (cancelCallback) {\n cancelCallback();\n }\n hide();\n };\n\n const confirm = () => {\n callback();\n hide();\n };\n\n return (\n <>\n {children(show)}\n \n \n

    {title}

    \n {description}\n
    \n \n \n {cancelBtnText}\n \n \n {confirmBtnText}\n \n \n
    \n \n );\n}\n\nConfirm.propTypes = {\n /** Sets the text for primary / confirmation button on opened modal */\n confirmBtnText: PropTypes.string,\n /** Sets the text for danger / abort button on opened modal */\n cancelBtnText: PropTypes.string,\n /** Sets the title for the opened modal */\n title: PropTypes.string,\n /** Sets the description for the opened modal */\n description: PropTypes.string,\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.string,\n PropTypes.object,\n PropTypes.node,\n PropTypes.func,\n ]),\n};\n\nexport default Confirm;\n","import React, { useCallback, useEffect, useRef } from 'react';\nimport PropTypes from 'prop-types';\n\nimport debounce from '../../utils/debounce';\n/**\n * FixedWrapper component, keeps all its children in a fix position on the page,\n * even if the scroll position changes\n * i.e: The top navigation bar of a page sits within FixedWrapper component\n */\nfunction FixedWrapper({ children, className, showShadow }) {\n const fixedWrapperRef = useRef(null);\n\n const attachShadow = useCallback(() => {\n const element = fixedWrapperRef.current;\n\n if (!element) {\n return;\n }\n\n if (window.scrollY) {\n element.classList.add('tyk-fixed-wrapper--scrolled');\n } else {\n element.classList.remove('tyk-fixed-wrapper--scrolled');\n }\n }, [fixedWrapperRef.current]);\n\n const debouncedAttachShadow = useCallback(debounce(attachShadow, 100), [attachShadow]);\n\n useEffect(() => {\n if (showShadow) {\n window.addEventListener('scroll', debouncedAttachShadow);\n }\n\n return () => {\n window.removeEventListener('scroll', debouncedAttachShadow);\n };\n }, [debouncedAttachShadow, showShadow]);\n\n return (\n
    \n { children }\n
    \n );\n}\n\nFixedWrapper.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]),\n /** Css classes that can be passed to the FixedWraper element */\n className: PropTypes.string,\n /** If true, bottom shadow on the FixedWrapper component\n * is being displayed when scroll happens\n */\n showShadow: PropTypes.bool,\n};\n\nFixedWrapper.defaultProps = {\n className: '',\n};\n\nexport default FixedWrapper;\n","import React, {\n useEffect, useState, useRef, useCallback,\n} from 'react';\nimport { PropTypes } from 'prop-types';\n\nimport debounce from '../../utils/debounce';\nimport { usePrevious, useComponentSize } from '../../hooks';\nimport Loader from '../Loader';\n\nfunction InfiniteScroller({\n children,\n hasMore,\n initialLoad,\n loadMore,\n pageNumber,\n refChild,\n}) {\n const [showLoader, setShowLoader] = useState(false);\n const containerRef = useRef(null);\n const refChildSize = useComponentSize(refChild);\n\n useEffect(() => {\n if (initialLoad && typeof loadMore === 'function') {\n setShowLoader(false);\n loadMore(pageNumber);\n }\n }, [initialLoad]);\n\n const shouldLoad = useCallback(() => {\n if (!containerRef.current) return false;\n const { clientHeight, scrollTop } = containerRef.current;\n\n return (\n hasMore\n && (\n (clientHeight + Math.round(scrollTop) === refChildSize.height)\n || (clientHeight >= refChildSize.height)\n )\n );\n }, [containerRef, refChildSize.height]);\n\n const loadMoreData = useCallback(() => {\n if (hasMore && typeof loadMore === 'function') {\n loadMore(pageNumber + 1);\n setShowLoader(true);\n } else {\n setShowLoader(false);\n }\n }, [hasMore, pageNumber]);\n\n const prevPageNumber = usePrevious(pageNumber);\n const scrollHandler = useCallback(debounce(() => {\n if (shouldLoad() && prevPageNumber <= pageNumber) {\n loadMoreData();\n }\n }, 200), [loadMoreData, shouldLoad]);\n\n useEffect(() => {\n containerRef.current?.addEventListener('scroll', scrollHandler);\n return () => containerRef.current?.removeEventListener('scroll', scrollHandler);\n }, [containerRef, scrollHandler]);\n\n // if content resets (page number resets) scroll to top\n useEffect(() => {\n if (prevPageNumber > 0 && pageNumber === 0) {\n containerRef.current.scrollTop = 0;\n }\n }, [containerRef, pageNumber]);\n\n const prevRefChildSize = usePrevious(refChildSize);\n useEffect(() => {\n if (\n refChildSize && prevRefChildSize\n && refChildSize.height !== prevRefChildSize.height\n && showLoader === true\n ) {\n setShowLoader(false);\n }\n }, [showLoader, refChildSize.height]);\n\n useEffect(() => {\n if (\n refChild && refChildSize.height < containerRef.current.clientHeight\n && refChildSize.height\n && hasMore\n ) {\n loadMoreData();\n }\n }, [containerRef, refChildSize, refChild, hasMore]);\n\n return (\n
    \n \n { children }\n
    \n {showLoader && (\n \n )}\n
    \n );\n}\n\nInfiniteScroller.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n hasMore: PropTypes.bool,\n initialLoad: PropTypes.bool,\n pageNumber: PropTypes.number,\n loadMore: PropTypes.func,\n refChild: PropTypes.instanceOf(Object),\n};\n\nInfiniteScroller.defaultProps = {\n hasMore: true,\n};\n\nexport default InfiniteScroller;\n","import React, {\n useEffect, useRef, forwardRef,\n} from 'react';\nimport { createPortal } from 'react-dom';\nimport PropTypes from 'prop-types';\nimport InfiniteScroller from '../InfiniteScroller';\n\n/**\n * It displays a container relative to another element.\n * Meant to be used for dropdowns, tooltips, and other similar components.\n */\nfunction FloatingContainer({\n element,\n size = 'auto',\n forceDisplay = 'auto',\n displayAxis = 'auto',\n preferredPosition,\n offset = 0,\n className,\n children,\n infiniteScrollerConfig,\n}, ref) {\n const localRef = useRef(null);\n const floatingContainerRef = ref || localRef;\n const contentWrapperRef = useRef(null);\n\n function determineDisplay() {\n const target = element.current;\n const container = floatingContainerRef.current;\n if (!container) return preferredPosition ?? displayAxis === 'vertical' ? 'bottom' : 'right';\n\n const { left, top } = target.getBoundingClientRect();\n const topSpace = top;\n const bottomSpace = window.innerHeight - top - target.offsetHeight;\n const leftSpace = left;\n const rightSpace = window.innerWidth - left - target.offsetWidth;\n const hasTopSpace = topSpace > container.scrollHeight;\n const hasBottomSpace = bottomSpace > container.scrollHeight;\n const hasLeftSpace = leftSpace > container.offsetWidth;\n const hasRightSpace = rightSpace > container.offsetWidth;\n const positionedVerticallyFitsInViewport = left + target.offsetWidth / 2 - container.offsetWidth / 2 > 0; // eslint-disable-line max-len\n const positionedHorizontallyFitsInViewport = top + target.offsetHeight / 2 - container.scrollHeight / 2 > 0; // eslint-disable-line max-len\n\n if (\n displayAxis === 'vertical'\n || (\n displayAxis === 'auto'\n && (hasTopSpace || hasBottomSpace)\n && positionedVerticallyFitsInViewport\n )\n ) {\n if (preferredPosition === 'top' && hasTopSpace) return 'top';\n if (preferredPosition === 'bottom' && hasBottomSpace) return 'bottom';\n return hasBottomSpace || bottomSpace > topSpace ? 'bottom' : 'top';\n }\n\n if (displayAxis === 'horizontal') {\n if (preferredPosition === 'left' && hasLeftSpace) return 'left';\n if (preferredPosition === 'right' && hasLeftSpace) return 'right';\n return hasRightSpace || rightSpace > leftSpace ? 'right' : 'left';\n }\n\n if (hasTopSpace && positionedVerticallyFitsInViewport) return 'top';\n if (hasBottomSpace && positionedVerticallyFitsInViewport) return 'bottom';\n if (hasRightSpace && positionedHorizontallyFitsInViewport) return 'right';\n if (hasLeftSpace && positionedHorizontallyFitsInViewport) return 'left';\n return preferredPosition ?? 'bottom';\n }\n\n function adjustPosition() {\n const display = forceDisplay !== 'auto' ? forceDisplay : determineDisplay();\n const target = element.current;\n const container = floatingContainerRef.current;\n\n if (!target || !container) return;\n\n const targetPosition = target.getBoundingClientRect();\n\n if (display === 'top') {\n const topPos = targetPosition.top - container.offsetHeight - offset;\n container.style.top = `${topPos}px`;\n container.style.left = (size === 'auto'\n ? `${targetPosition.left + target.offsetWidth / 2 - container.offsetWidth / 2}px`\n : `${targetPosition.left}px`);\n\n if (size === 'matchElement') {\n container.style.width = `${target.offsetWidth}px`;\n } else if (typeof size === 'function') {\n container.style.width = `${size(target.offsetWidth)}px`;\n }\n container.style.maxHeight = `${targetPosition.top - offset}px`;\n }\n\n if (display === 'bottom') {\n container.style.top = `${targetPosition.bottom + offset}px`;\n container.style.left = size === 'auto'\n ? `${targetPosition.left + target.offsetWidth / 2 - container.offsetWidth / 2}px`\n : `${targetPosition.left}px`;\n if (size === 'matchElement') {\n container.style.width = `${target.offsetWidth}px`;\n } else if (typeof size === 'function') {\n container.style.width = `${size(target.offsetWidth)}px`;\n }\n container.style.maxHeight = `${window.innerHeight - targetPosition.bottom - offset}px`;\n }\n\n if (display === 'left') {\n const topPos = targetPosition.top + target.offsetHeight / 2 - container.offsetHeight / 2;\n container.style.top = size === 'auto'\n ? `${topPos}px`\n : `${targetPosition.top}px`;\n container.style.left = `${targetPosition.left - container.offsetWidth - offset}px`;\n if (size === 'matchElement') {\n container.style.height = `${target.offsetHeight}px`;\n } else if (typeof size === 'function') {\n container.style.height = `${size(target.offsetHeight)}px`;\n }\n container.style.maxWidth = `${targetPosition.left - offset}px`;\n }\n\n if (display === 'right') {\n const topPos = targetPosition.top + target.offsetHeight / 2 - container.offsetHeight / 2;\n container.style.top = size === 'auto'\n ? `${topPos}px`\n : `${targetPosition.top}px`;\n container.style.left = `${targetPosition.left + target.offsetWidth + offset}px`;\n if (size === 'matchElement') {\n container.style.height = `${target.offsetHeight}px`;\n } else if (typeof size === 'function') {\n container.style.height = `${size(target.offsetHeight)}px`;\n }\n container.style.maxWidth = `${window.innerWidth - targetPosition.left - target.offsetWidth - offset}px`;\n }\n }\n\n useEffect(() => {\n window.requestAnimationFrame(function schedulePositionUpdate() {\n adjustPosition();\n window.requestAnimationFrame(schedulePositionUpdate);\n });\n }, []);\n\n return createPortal(\n \n \n \n {children}\n
    \n \n
    ,\n document.querySelector('body'),\n );\n}\n\nFloatingContainer.propTypes = {\n /** A DOM element that the floating container will be displayed relative to. */\n element: PropTypes.instanceOf(Object),\n className: PropTypes.string,\n /** The size of the container.\n * If `auto` the size will be determined by its contents.\n * If `matchElement` it will take the width or the height of the element depending\n * on the `displayAxis` prop.\n * It can also be a function that returns a number representing the width\n * or the height in pixels.\n */\n size: PropTypes.oneOfType([\n PropTypes.oneOf(['auto', 'matchElement']),\n PropTypes.func,\n ]),\n /**\n * The distance between the element and the floating container.\n * It can be positive or negative.\n */\n offset: PropTypes.number,\n /**\n * If `auto` the component will try to determine where to display the container relative to the\n * element (top, bottom, left, right).\n * It can also be one of top, bottom, left, right, to force the floating container to always be\n * displayed in that position.\n */\n forceDisplay: PropTypes.oneOf(['auto', 'top', 'bottom', 'left', 'right']),\n /**\n * It can be `auto`, `vertical` or `horizontal`. It specifies the axis where\n * it will be displayed when `forceDisplay` is `auto`.\n */\n displayAxis: PropTypes.oneOf(['auto', 'vertical', 'horizontal']),\n /**\n * If there is space on both sides of the axis preffer this side.\n */\n preferredPosition: PropTypes.oneOf(['top', 'bottom', 'left', 'right']),\n /**\n * Configuration object that will be passed to the infinite scroller component.\n */\n infiniteScrollerConfig: PropTypes.instanceOf(Object),\n};\n\nexport default forwardRef(FloatingContainer);\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport Message from '../Message';\n\nfunction InfoNote({ children }) {\n return (\n
    \n \n { children }\n \n
    \n );\n}\n\nInfoNote.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]),\n};\n\nexport default InfoNote;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nconst ListItem = (props) => {\n const {\n className,\n children,\n } = props;\n\n return (\n
  • \n {children}\n
  • \n );\n};\n\nListItem.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n className: PropTypes.string,\n};\n\nListItem.defaultProps = {\n className: '',\n};\n\nexport default ListItem;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { fromJS } from 'immutable';\nimport ListItem from './js/ListItem';\n\nconst List = (props) => {\n const {\n className,\n children,\n label,\n labelwidth,\n theme,\n style,\n } = props;\n\n const getCssClasses = () => {\n let cssClasses = ['tyk-list'];\n\n if (theme) {\n cssClasses.push(`tyk-list--${theme}`);\n }\n\n if (className) {\n cssClasses = cssClasses.concat(className.split(' '));\n }\n\n return cssClasses.join(' ');\n };\n\n const getListStyle = () => {\n const styleCopy = fromJS(style).toJS();\n if (labelwidth) {\n styleCopy.flexBasis = `calc(100% - ${labelwidth} - 20px)`;\n }\n\n return styleCopy;\n };\n\n return (\n
    \n {\n label !== undefined\n ? (\n \n )\n : null\n }\n
      \n {children}\n
    \n
    \n );\n};\n\nList.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n className: PropTypes.string,\n label: PropTypes.string,\n labelwidth: PropTypes.string,\n theme: PropTypes.string,\n style: PropTypes.instanceOf(Object),\n};\n\nList.defaultProps = {\n theme: 'default',\n style: {},\n};\n\n\nList.Item = ListItem;\n\n\nexport default List;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nfunction NavBar({\n align = 'center',\n children,\n left,\n right,\n title,\n pre,\n subtitle,\n withTabs,\n}) {\n const subtitleContent = subtitle ?

    { subtitle }

    : null;\n return (\n
    \n
    \n {pre && (\n
    {pre}
    \n )}\n {\n title\n ? (\n
    \n

    { title }

    \n { subtitleContent }\n
    \n )\n : subtitleContent\n }\n
    \n {left && (\n
    { left }
    \n )}\n {right && (\n
    { right }
    \n )}\n
    \n
    \n { children }\n
    \n );\n}\n\nNavBar.propTypes = {\n align: PropTypes.string,\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n title: PropTypes.string,\n subtitle: PropTypes.string,\n pre: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n ]),\n left: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n ]),\n right: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n ]),\n withTabs: PropTypes.bool,\n};\n\nexport default NavBar;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nfunction NavigationItem({ children }) {\n return (\n
  • \n {children}\n
  • \n );\n}\n\nNavigationItem.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n};\n\nexport default NavigationItem;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport NavigationItem from './js/NavigationItem';\n\nfunction Navigation({ children }) {\n return (\n
      \n {children}\n
    \n );\n}\n\nNavigation.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n};\n\nNavigation.Item = NavigationItem;\n\nexport default Navigation;\n","import { createContext } from 'react';\n\nexport const PortalContext = createContext();\n","import React, { useCallback } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Collapsible from '../../Collapsible';\nimport { PortalContext } from '../panel-context';\n\nfunction PanelBody({\n children,\n noPadding,\n className,\n ...rest\n}) {\n const getCssClasses = useCallback(\n () => [\n 'tyk-panel__body',\n className,\n noPadding && 'no-padding',\n ].filter(Boolean).join(' '),\n [className, noPadding],\n );\n\n return (\n \n {\n (portalContext) => (\n portalContext.collapsable\n ? (\n \n { children }\n \n )\n : (\n \n { children }\n
    \n )\n )\n }\n \n );\n}\n\nPanelBody.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]),\n noPadding: PropTypes.bool,\n className: PropTypes.string,\n};\n\nexport default PanelBody;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nconst PanelFooter = (props) => {\n const { children } = props;\n return (\n
    \n { children }\n
    \n );\n};\n\nPanelFooter.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]),\n};\n\nexport default PanelFooter;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Icon from '../../Icon';\nimport { PortalContext } from '../panel-context';\n\nexport default class PanelHeader extends Component {\n static propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]).isRequired,\n className: PropTypes.string,\n }\n\n getCssClasses(props) {\n const { className } = this.props;\n let cssClasses = ['tyk-panel__header'];\n\n if (props.collapsable) {\n cssClasses.push('collapsable');\n }\n\n if (className) {\n cssClasses = cssClasses.concat(className.split(' '));\n }\n\n return cssClasses.join(' ');\n }\n\n render() {\n const {\n children,\n } = this.props;\n\n return (\n \n {\n (portalContext) => {\n const HeaderTag = portalContext.theme === 'blank' ? 'h3' : 'div';\n const iconType = portalContext.collapsed ? 'chevron-down' : 'chevron-up';\n\n return (\n \n { children }\n {\n portalContext.collapsable\n ?
    \n : null\n }\n \n );\n }\n }\n
    \n );\n }\n}\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport PanelBody from './js/PanelBody';\nimport PanelFooter from './js/PanelFooter';\nimport PanelHeader from './js/PanelHeader';\n\n\nimport { PortalContext } from './panel-context';\n\n\nconst Panel = (props) => {\n const {\n children,\n className,\n collapsed,\n collapsable,\n theme,\n onToggleCollapse,\n collapsibleIconPosition = 'right',\n } = props;\n const [collapsedState, setCollapsedState] = useState(collapsed || false);\n\n useEffect(() => {\n if (collapsed !== collapsedState) {\n setCollapsedState(collapsed);\n }\n }, [collapsed]);\n\n const getCssClasses = () => {\n let cssClasses = ['tyk-panel'];\n const panelTheme = `tyk-panel--${theme || 'default'}`;\n const collapsbleIconPosition = `tyk-panel__icon-collapse--${collapsibleIconPosition}`;\n\n cssClasses.push(panelTheme);\n cssClasses.push(collapsbleIconPosition);\n\n if (className) {\n cssClasses = cssClasses.concat(className.split(' '));\n }\n\n if (collapsedState) {\n cssClasses.push('tyk-panel--collapsed');\n }\n\n return cssClasses.join(' ');\n };\n\n const handleToggle = () => {\n setCollapsedState(!collapsedState);\n\n if (onToggleCollapse) {\n onToggleCollapse(!collapsedState);\n }\n };\n\n return (\n
    \n \n {\n (typeof children === 'function')\n ? children({\n toggleCollapse: handleToggle,\n })\n : children\n }\n \n
    \n );\n};\n\nPanel.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.func,\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]),\n className: PropTypes.string,\n collapsable: PropTypes.bool,\n collapsibleIconPosition: PropTypes.string,\n collapsed: PropTypes.bool,\n theme: PropTypes.string,\n onToggleCollapse: PropTypes.func,\n};\n\n\nPanel.Body = PanelBody;\nPanel.Footer = PanelFooter;\nPanel.Header = PanelHeader;\n\nexport default Panel;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n/**\n * Pill\n *\n */\nconst Pill = (props) => {\n const {\n children,\n className,\n theme,\n } = props;\n\n const getCssClasses = () => {\n let cssClasses = ['tyk-pill', ...theme.split(' ').map(t => `tyk-pill--${t}`)];\n\n if (className) {\n cssClasses = cssClasses.concat(className);\n }\n\n return cssClasses.join(' ');\n };\n\n return (\n
    \n {children}\n
    \n );\n};\n\nPill.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n /** Css classes that can be passed to the Pill element */\n className: PropTypes.string,\n /** Theme that can be applied to a Pill */\n theme: PropTypes.string,\n};\n\nPill.defaultProps = {\n theme: 'default',\n};\n\nexport default Pill;\n","import { useRef } from 'react';\n\n/**\n * RevealPanelService is a class that manages the resizing of a panel element.\n * It provides methods to set the panel's height, hide and show it, and attach\n * event listeners for resizing.\n */\nclass RevealPanelService {\n #state = null; // Private state for mouse interactions.\n\n #panel = null; // The panel element to be resized.\n\n #gutter = null; // The gutter element used for resizing.\n\n #wrapper = null; // The wrapper element that contains the panel and gutter.\n\n #onHeightChangeCallbacks = []; // Callback function to be executed when the panel is resized.\n\n #onDragStartCallbacks = []; // Callback function to be executed when the panel is resized.\n\n #onDragEndCallbacks = []; // Callback function to be executed when the panel is resized.\n\n #dragStarted = false;\n /**\n * Sets a callback function to be executed when the panel is resized.\n * @param {function} callback - The callback function to be called on panel resize.\n */\n\n on(eventName, listener) {\n let list = null;\n if (eventName === 'onHeightChange') {\n list = this.#onHeightChangeCallbacks;\n } else if (eventName === 'onDragStart') {\n list = this.#onDragStartCallbacks;\n } else if (eventName === 'onDragEnd') {\n list = this.#onDragEndCallbacks;\n }\n\n if (list) {\n this.addListener(list, listener);\n }\n }\n\n off(eventName, listener) {\n let list = null;\n if (eventName === 'onHeightChange') {\n list = this.#onHeightChangeCallbacks;\n } else if (eventName === 'onDragStart') {\n list = this.#onDragStartCallbacks;\n } else if (eventName === 'onDragEnd') {\n list = this.#onDragEndCallbacks;\n }\n\n if (list) {\n this.removeListener(list, listener);\n }\n }\n\n /**\n * Sets the panel, gutter, and wrapper elements to be controlled by this class.\n * @param {HTMLElement} wrapper - The wrapper element containing the panel and gutter.\n * @param {HTMLElement} panel - The panel element to be resized.\n * @param {HTMLElement} gutter - The gutter element used for resizing.\n */\n setRefs(wrapper, panel, gutter) {\n if (this.#panel || this.#gutter || this.#wrapper) {\n this.unbindEvents();\n }\n this.#wrapper = wrapper;\n this.#panel = panel;\n this.#gutter = gutter;\n this.#state = null;\n this.bindEvents();\n }\n\n /**\n * Attaches event listeners for panel resizing.\n */\n bindEvents() {\n this.ensureRefs('bindEvents');\n this.#gutter.addEventListener('mousedown', this.onMouseDown.bind(this));\n document.addEventListener('mousemove', this.onMouseMove.bind(this));\n document.addEventListener('mouseup', this.onMouseUp.bind(this));\n }\n\n /**\n * Gets the current height of the panel.\n * @returns {number} - The height of the panel in pixels.\n */\n getHeight() {\n this.ensureRefs('getHeight');\n const size = this.#panel.getBoundingClientRect();\n return size.height;\n }\n\n /**\n * Handles the mouse down event, initiating the resizing process.\n * @param {MouseEvent} e - The mouse event object.\n */\n onMouseDown(e) {\n this.ensureRefs('onMouseDown');\n this.#state = {\n mouseDown: true,\n initialRect: this.#panel.getBoundingClientRect(),\n initialEvent: e,\n };\n }\n\n /**\n * Handles the mouse move event, adjusting the panel's height during resizing.\n * @param {MouseEvent} e - The mouse event object.\n */\n onMouseMove(e) {\n this.ensureRefs('onMouseMove');\n\n if (!this.#state) {\n return;\n }\n\n const isButtonDown = this.isPrimaryMouseButtonDown(e);\n if (!isButtonDown) {\n this.onMouseUp();\n return;\n }\n\n if (!this.#dragStarted) {\n this.#dragStarted = true;\n this.onDragStart.bind(this)();\n }\n\n const newY = this.#state.initialEvent.y - e.y;\n const finalHeight = Math.ceil(this.#state.initialRect.height + newY);\n this.setHeight(`${finalHeight}px`, 'mousemove');\n }\n\n // eslint-disable-next-line class-methods-use-this\n notifyListeners(list, value) {\n if (list && Array.isArray(list) && list.length) {\n list.forEach((fn) => {\n if (typeof fn === 'function') {\n fn(value);\n }\n });\n }\n }\n\n // eslint-disable-next-line class-methods-use-this\n addListener(list, listener) {\n if (list && Array.isArray(list) && typeof listener === 'function') {\n list.push(listener);\n }\n }\n\n // eslint-disable-next-line class-methods-use-this\n removeListener(list, listener) {\n if (list && Array.isArray(list) && typeof listener === 'function' && list.length) {\n const index = list.indexOf(listener);\n\n if (index > -1) {\n list.splice(index, 1);\n }\n }\n }\n\n onDragEnd() {\n if (this.#dragStarted) {\n this.notifyListeners(this.#onDragEndCallbacks, this.getHeight());\n }\n }\n\n onDragStart() {\n this.notifyListeners(this.#onDragStartCallbacks, this.getHeight());\n }\n\n // eslint-disable-next-line class-methods-use-this\n isPrimaryMouseButtonDown(e) {\n const flags = e.buttons !== undefined ? e.buttons : e.which;\n // eslint-disable-next-line no-bitwise\n const isDown = flags === 1;\n return isDown;\n }\n\n /**\n * Resets the state after the mouse up event, ending the resizing process.\n */\n onMouseUp() {\n this.#state = null;\n this.onDragEnd.bind(this)();\n this.#dragStarted = false;\n }\n\n /**\n * Sets the height of the panel.\n * @param {string} height - The new height value as a CSS string (e.g., \"100px\").\n */\n setHeight(height) {\n let heightVal = height;\n this.ensureRefs('setHeight');\n\n if (typeof heightVal === 'number') {\n heightVal += 'px';\n }\n\n this.#panel.style.height = heightVal;\n\n this.notifyListeners(this.#onHeightChangeCallbacks, this.getHeight());\n }\n\n /**\n * Ensures that the required elements (wrapper, panel, and gutter) are set.\n * Throws an error if they are missing.\n */\n ensureRefs(reason) {\n if (!this.#panel || !this.#gutter || !this.#wrapper) {\n throw new Error(\n `${reason}: Wrapper, panel, and gutter elements are required. Use setRefs method first.`,\n );\n }\n }\n\n /**\n * Checks if the panel is hidden.\n * @returns {boolean} - True if the panel is hidden; false otherwise.\n */\n isHidden() {\n this.ensureRefs('isHidden');\n return this.#wrapper.style.visibility === 'hidden';\n }\n\n /**\n * Hides the panel by setting its visibility to \"hidden\".\n */\n hide() {\n this.ensureRefs('hide');\n this.#wrapper.style.visibility = 'hidden';\n }\n\n /**\n * Shows the panel by setting its visibility to \"visible\".\n */\n show() {\n this.ensureRefs('show');\n this.#wrapper.style.visibility = 'visible';\n }\n\n /**\n * Unbinds the event listeners added for resizing.\n */\n unbindEvents() {\n this.#onHeightChangeCallbacks = [];\n this.#onDragStartCallbacks = [];\n this.#onDragEndCallbacks = [];\n this.#gutter.removeEventListener('mousedown', this.onMouseDown.bind(this));\n document.removeEventListener('mousemove', this.onMouseMove.bind(this));\n document.removeEventListener('mouseup', this.onMouseUp.bind(this));\n }\n\n deinit() {\n this.unbindEvents();\n }\n}\n\nexport const useRevealPanelService = () => {\n const revealPanelServiceRef = useRef(new RevealPanelService());\n return revealPanelServiceRef.current;\n};\n","import React, {\n useEffect,\n useRef,\n useImperativeHandle,\n forwardRef,\n} from 'react';\nimport PropTypes from 'prop-types';\nimport { createPortal } from 'react-dom';\nimport { useRevealPanelService } from './js/RevealPanelService';\n\nfunction RevealPanelHeaderLeft({ children }) {\n // eslint-disable-next-line react/jsx-no-useless-fragment\n return <>{children};\n}\n\nRevealPanelHeaderLeft.propTypes = {\n children: PropTypes.instanceOf({}),\n};\n\nfunction RevealPanelHeaderRight({ children }) {\n // eslint-disable-next-line react/jsx-no-useless-fragment\n return <>{children};\n}\n\nRevealPanelHeaderRight.propTypes = {\n children: PropTypes.instanceOf({}),\n};\n\nconst mergeClasses = (...classNames) => classNames.map((it) => (it || '').trim()).filter(Boolean).join(' ');\n\nconst RevealPanel = forwardRef(({\n children,\n height,\n onHeightChange = null,\n onDragStart = null,\n onDragEnd = null,\n style = null,\n parentSelector = null,\n contentStyle,\n contentClassName,\n gutterClassName,\n wrapperClassName,\n// eslint-disable-next-line consistent-return\n}, ref) => {\n const panelRef = useRef(null);\n const gutterRef = useRef(null);\n const wrapperRef = useRef(null);\n\n const panelService = useRevealPanelService();\n\n useEffect(() => {\n if (!panelRef.current || !gutterRef.current || !wrapperRef.current) {\n return;\n }\n\n if (!panelService) {\n return;\n }\n\n panelService.setRefs(wrapperRef.current, panelRef.current, gutterRef.current);\n panelService.on('onHeightChange', onHeightChange);\n panelService.on('onDragStart', onDragStart);\n panelService.on('onDragEnd', onDragEnd);\n panelService.setHeight(height, 'initialize');\n\n // eslint-disable-next-line consistent-return\n return () => {\n panelService.unbindEvents();\n };\n }, []);\n\n useImperativeHandle(\n ref,\n () => {\n // bind this context\n const bind = (func) => func.bind(panelService);\n\n return {\n getHeight: bind(panelService.getHeight),\n setHeight: bind(panelService.setHeight),\n hide: bind(panelService.hide),\n show: bind(panelService.show),\n isHidden: bind(panelService.isHidden),\n deinit: bind(panelService.deinit),\n on: bind(panelService.on),\n off: bind(panelService.off),\n };\n },\n [],\n );\n\n let headerLeft = null;\n let headerRight = null;\n const contents = [];\n\n React.Children.forEach(children, (child) => {\n if (child && React.isValidElement(child)) {\n if (child.type === RevealPanelHeaderLeft) {\n headerLeft = child;\n } else if (child.type === RevealPanelHeaderRight) {\n headerRight = child;\n } else {\n contents.push(child);\n }\n }\n });\n\n const element = (\n
    \n
    \n
    \n\n
    {headerLeft}
    \n
    \n
    {headerRight}
    \n\n
    \n
    \n {contents}\n
    \n
    \n );\n\n if (parentSelector) {\n return createPortal(element, document.querySelector(parentSelector));\n }\n});\n\nRevealPanel.propTypes = {\n children: PropTypes.instanceOf({}),\n height: PropTypes.string,\n onHeightChange: PropTypes.func,\n onDragStart: PropTypes.func,\n onDragEnd: PropTypes.func,\n parentSelector: PropTypes.string,\n style: PropTypes.instanceOf({}),\n contentStyle: PropTypes.instanceOf({}),\n contentClassName: PropTypes.string,\n gutterClassName: PropTypes.string,\n wrapperClassName: PropTypes.string,\n};\n\nRevealPanel.HeaderLeft = RevealPanelHeaderLeft;\nRevealPanel.HeaderRight = RevealPanelHeaderRight;\n\nexport default RevealPanel;\n","import { createContext } from 'react';\n\nexport const TabsContext = createContext();\n","import { createContext } from 'react';\n\nexport default createContext();\n","import React, { useEffect, useMemo } from 'react';\nimport PropTypes from 'prop-types';\n\nimport TabContext from './TabContext';\nimport { usePrevious } from '../../../hooks';\n\nconst TabContent = (props) => {\n const {\n addTab,\n hideTab,\n updateTab,\n showTab,\n children,\n selectedPath,\n tabData,\n tabsId,\n tabExists,\n path,\n rendered,\n hideTabContent,\n tabs,\n } = props;\n\n useEffect(() => {\n const tempTabData = { ...tabData };\n\n if (!tabExists(path)) {\n addTab(tempTabData, path);\n }\n }, [tabData, path]);\n\n const prevTabData = usePrevious(tabData);\n useEffect(() => {\n if (\n tabExists(path) && tabData?.title\n && (prevTabData?.title !== tabData?.title || prevTabData.selected !== tabData.selected)\n ) {\n const tempTabData = { ...tabData };\n updateTab(tempTabData, path);\n }\n }, [tabData, path, prevTabData, tabs]);\n\n useEffect(() => {\n showTab(path);\n return () => hideTab(path);\n }, []);\n\n const shouldRender = useMemo(() => {\n if (!Object.keys(tabs).length) {\n return false;\n }\n\n if (hideTabContent || tabs[tabData.id].show === false) {\n return false;\n }\n\n if (!rendered) {\n return tabExists(path);\n }\n return selectedPath && selectedPath.indexOf(tabData.id) > -1;\n }, [hideTabContent, rendered, selectedPath, tabData, tabs]);\n\n return (\n (\n shouldRender\n ? (\n
    -1 ? 'block' : 'none' }}>\n \n {children}\n \n
    \n )\n : null\n )\n );\n};\n\nTabContent.propTypes = {\n addTab: PropTypes.func,\n updateTab: PropTypes.func,\n hideTab: PropTypes.func,\n showTab: PropTypes.func,\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n path: PropTypes.instanceOf(Array),\n hideTabContent: PropTypes.bool,\n rendered: PropTypes.bool,\n selectedPath: PropTypes.instanceOf(Array),\n tabExists: PropTypes.func,\n tabsId: PropTypes.string,\n tabData: PropTypes.instanceOf(Object),\n tabs: PropTypes.instanceOf(Object),\n};\n\nexport default TabContent;\n","import React, {\n Fragment, useContext, useEffect, useState,\n} from 'react';\nimport PropTypes from 'prop-types';\nimport { TabsContext } from '../tabs-context';\nimport TabContext from './TabContext';\nimport TabContent from './TabContent';\n\nconst Tab = (props) => {\n const { id } = props;\n const tabsContext = useContext(TabsContext);\n const tabContext = useContext(TabContext);\n const {\n tabExists,\n selectedPath,\n addTab,\n updateTab,\n hideTab,\n showTab,\n rendered,\n hideTabContent,\n tabs,\n } = tabsContext;\n const {\n children,\n } = props;\n const [path, setPath] = useState('');\n\n useEffect(() => {\n let tempPath;\n if (tabContext && path) {\n if (tabContext.tabsId === tabsContext.id) {\n tempPath = tabContext.path.concat([id]);\n } else {\n tempPath = [id];\n }\n } else {\n tempPath = [id];\n }\n setPath(tempPath);\n }, [tabContext]);\n\n if (!path) {\n return null;\n }\n\n return (\n \n \n {children}\n \n \n );\n};\n\nTab.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n id: PropTypes.string,\n};\n\nTab.defaultProps = {};\n\nexport default Tab;\n","\nimport React, {\n useEffect, useState,\n} from 'react';\nimport PropTypes from 'prop-types';\nimport Tab from './js/Tab';\n\nimport Collapsible from '../Collapsible';\nimport Icon from '../Icon';\nimport { TabsContext } from './tabs-context';\n\nconst Tabs = (props) => {\n const {\n children,\n className,\n id,\n onTabChange,\n type,\n hideTabContent,\n } = props;\n const [tabs, setTabs] = useState({});\n const [selectedPath, setSelectedPath] = useState([]);\n const [rendered, setRendered] = useState(false);\n const [initialPath, setInitialPath] = useState(null);\n\n useEffect(() => {\n setSelectedPath(initialPath);\n }, [initialPath]);\n\n const updateTabsList = (tabsState, path, tabData) => {\n let tempTabsState = Object.assign({}, tabsState);\n const tempTabData = Object.assign({}, tabData);\n const tempPath = path.slice(0);\n\n while (tempPath.length > 1) {\n tempTabsState = tempTabsState[tempPath.shift()];\n\n if (!tempTabsState) {\n tempTabsState = {};\n }\n }\n\n tempTabData.tempPath = tempPath;\n tempTabsState[tempPath.shift()] = tempTabData;\n\n return tempTabsState;\n };\n\n const toggleTab = (tabsState, path) => {\n let tempTabsState = Object.assign({}, tabsState);\n const tempPath = path.slice(0);\n\n while (tempPath.length > 1) {\n tempTabsState = tempTabsState[tempPath.shift()];\n }\n\n const key = tempPath.shift();\n if (tempTabsState[key].collapsed === undefined) {\n tempTabsState[key].collapsed = true;\n } else {\n tempTabsState[key].collapsed = !tempTabsState[key].collapsed;\n }\n\n return tempTabsState;\n };\n\n const getCssClasses = () => {\n let cssClasses = ['tyk-tabs'];\n\n cssClasses.push(`tyk-tabs--${type || 'default'}`);\n\n if (className) {\n cssClasses = cssClasses.concat(className.split(' '));\n }\n\n return cssClasses.join(' ');\n };\n\n const setCurrentSelectedPath = (path, tabData) => {\n const tempPath = path.slice(0);\n let tempRendered = true;\n\n if (tabData.collapsible) {\n tempPath.push(Object.keys(tabData.tabs)[0]);\n tempRendered = false;\n }\n\n setTabs((prevTabs) => {\n let tempTabs = Object.assign({}, prevTabs);\n\n tempTabs = toggleTab(tempTabs, path);\n\n return tempTabs;\n });\n setSelectedPath(tempPath);\n setRendered(tempRendered);\n\n if (onTabChange) {\n onTabChange(tabData);\n }\n };\n\n const getTabCssClass = (tabId) => {\n const cssClasses = [];\n\n if (selectedPath && selectedPath.indexOf(tabId) > -1) {\n cssClasses.push('active');\n }\n\n return cssClasses.join(' ');\n };\n\n const genTabs = (currentTabs, path) => {\n if (!currentTabs) {\n return null;\n }\n\n return (\n
      \n {\n Object.keys(currentTabs).map((tabId, index) => {\n const tempPath = path ? path.concat([currentTabs[tabId].id]) : [currentTabs[tabId].id];\n const iconType = currentTabs[tabId].collapsed ? 'chevron-up' : 'chevron-down';\n\n if (currentTabs[tabId].show === false) {\n return null;\n }\n\n return (\n
    • \n \n { currentTabs[tabId].title }\n {\n currentTabs[tabId].collapsible\n ? \n : null\n }\n \n {\n currentTabs[tabId].collapsible\n ? (\n \n {genTabs(currentTabs[tabId].tabs, tempPath)}\n \n )\n : genTabs(currentTabs[tabId].tabs, tempPath)\n }\n
    • \n );\n })\n }\n
    \n );\n };\n\n const addTab = (tabData, path) => {\n setTabs(prevTabs => updateTabsList({ ...prevTabs }, path, tabData));\n\n if (tabData.selected) {\n setInitialPath(path);\n }\n };\n\n const updateTab = (tabData, path) => {\n setTabs((prevTabs) => {\n const tempTabs = { ...prevTabs };\n tempTabs[tabData.id] = tabData;\n return tempTabs;\n });\n\n if (tabData.selected) {\n setCurrentSelectedPath(path, tabData);\n }\n };\n\n const hideTab = (path) => {\n setTabs((prevTabs) => {\n const tempTabs = { ...prevTabs };\n tempTabs[path].show = false;\n\n return tempTabs;\n });\n };\n\n const showTab = (path) => {\n setTabs((prevTabs) => {\n const tempTabs = { ...prevTabs };\n\n tempTabs[path].show = true;\n\n return tempTabs;\n });\n };\n\n const tabExists = (path) => {\n let tempTabs = { ...tabs };\n const tempPath = path.slice(0);\n while (tempPath.length > 1) {\n tempTabs = tempTabs[tempPath.shift()];\n }\n\n const key = tempPath.shift();\n\n return !!(tempTabs && tempTabs[key]);\n };\n\n return (\n
    \n {genTabs(tabs)}\n \n {\n (typeof children === 'function')\n ? children({\n hideTab,\n showTab,\n })\n : children\n }\n \n
    \n );\n};\n\nTabs.propTypes = {\n className: PropTypes.string,\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n hideTabContent: PropTypes.bool,\n id: PropTypes.string,\n onTabChange: PropTypes.func,\n type: PropTypes.string,\n};\n\n\nTabs.Tab = Tab;\n\nexport default Tabs;\n","import React, {\n useCallback, useEffect, useRef, useState,\n} from 'react';\nimport PropTypes from 'prop-types';\n\nimport FloatingContainer from '../FloatingContainer';\nimport Icon from '../Icon';\n\nfunction Tooltip({\n render,\n className,\n children,\n position = 'auto',\n style,\n icon = false,\n closable,\n isOpened = false,\n additionalClickParents = [],\n ...props\n}) {\n const [isActive, setIsActive] = useState(false);\n const wrapperRef = useRef(null);\n const tooltipRef = useRef(null);\n const activeEvents = closable\n ? {\n onClick: () => setIsActive(true),\n }\n : {\n onMouseEnter: () => setIsActive(true),\n onMouseLeave: () => setIsActive(false),\n onFocus: () => setIsActive(true),\n onBlur: () => setIsActive(false),\n };\n\n const handleDocumentClick = useCallback((e) => {\n if ([...additionalClickParents, tooltipRef.current].some((p) => p?.contains?.(e.target))) {\n return;\n }\n setIsActive(false);\n }, [additionalClickParents]);\n\n useEffect(() => {\n document.addEventListener('click', handleDocumentClick, true);\n return () => document.removeEventListener('click', handleDocumentClick, true);\n }, [handleDocumentClick]);\n\n useEffect(() => {\n setIsActive(isOpened);\n }, [isOpened]);\n\n const classes = ['tyk-tooltip', className].filter(Boolean).join(' ');\n return (\n \n {children}\n {isActive && (\n \n
    \n {icon && (\n icon === true ? (\n \n ) : (\n icon\n )\n )}\n
    \n {render}\n
    \n {closable && (\n {\n e.stopPropagation();\n setIsActive(false);\n }}\n />\n )}\n
    \n \n )}\n
    \n );\n}\n\nTooltip.propTypes = {\n children: PropTypes.node.isRequired,\n /** custom styles to apply on hovered element */\n style: PropTypes.instanceOf(Object),\n /** describes where the tooltip should be displayed in relation\n * whith the hovered element: top, bottom, left, right\n */\n position: PropTypes.string,\n /** content of the tooltip, can be a string or a React node element */\n render: PropTypes.oneOfType([\n PropTypes.node,\n PropTypes.string,\n ]),\n /** additional tooltip classes */\n className: PropTypes.string,\n /** if `true` displays the \"question mark\" icon;\n * optionally you can pass a different icon\n */\n icon: PropTypes.oneOfType([\n PropTypes.bool,\n PropTypes.node,\n ]),\n /** if `true` the tooltip is activated on click and an \"x\" is displayed to close it;\n * if `false` the tooltip is activated on hover and it closes when no longer hovering\n */\n closable: PropTypes.bool,\n /** handles the `isActive` state of the tooltip from outside */\n isOpened: PropTypes.bool,\n /** Additional dom elements to check if the document click was inside of them.\n * Useful when you want to open the tooltip after an interaction\n * with an element not inside the tooltip root.\n */\n additionalClickParents: PropTypes.instanceOf(Array),\n};\n\nexport default Tooltip;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Tooltip from '../Tooltip';\n/**\n * TextEllipsis component helps you to hide a part of a text,\n * but displaying it when it's being hovered.\n * The entire text is displayed with the help of Tooltip component\n */\n\nfunction TextEllipsis({ text, limit, position }) {\n return (\n text.length > limit\n ? (\n \n {text.substring(0, limit)}\n ...\n \n )\n : text\n );\n}\n\nTextEllipsis.propTypes = {\n /** Text to be shrinked by TextEllipsis */\n text: PropTypes.string,\n /** Number of characters that TextEllipsis would leave visible */\n limit: PropTypes.number,\n /** tooltip position */\n position: PropTypes.string,\n};\n\nexport default TextEllipsis;\n","import React, { Component, Fragment } from 'react';\nimport PropTypes from 'prop-types';\n\nconst shouldShowPage = (currentNr, pageNr, totalNrOfPages) => {\n const basePageNr = 5;\n const minimumNrOfPages = 10;\n\n if (totalNrOfPages < minimumNrOfPages) {\n return true;\n }\n\n if (\n pageNr < basePageNr\n && currentNr < basePageNr\n ) {\n return true;\n }\n\n if (\n pageNr > totalNrOfPages - basePageNr\n && currentNr > totalNrOfPages - basePageNr\n ) {\n return true;\n }\n\n if (\n currentNr >= pageNr - 2\n && currentNr <= pageNr + 2\n ) {\n return true;\n }\n\n if ([0, 1, totalNrOfPages - 1, totalNrOfPages].indexOf(currentNr) > -1) {\n return true;\n }\n\n return false;\n};\n\nconst getPagesArr = (nrOfPages, selectedPage) => {\n let i; const\n pagesArr = [];\n\n for (i = 0; i <= nrOfPages; i += 1) {\n if (shouldShowPage(i, selectedPage, nrOfPages)) {\n if (i > pagesArr[pagesArr.length - 1]) {\n pagesArr.push('...');\n }\n pagesArr.push(i + 1);\n }\n }\n\n return pagesArr;\n};\n\nexport default class Pagination extends Component {\n static propTypes = {\n value: PropTypes.number,\n totalNrOfPages: PropTypes.number,\n onChange: PropTypes.func,\n };\n\n constructor(props) {\n super(props);\n const {\n value,\n totalNrOfPages,\n } = this.props;\n\n this.state = {\n prevProps: this.props,\n selectedPage: value || 0,\n pagesArray: getPagesArr(totalNrOfPages, value),\n };\n\n this.pageKey = 0;\n }\n\n static getDerivedStateFromProps(nextProps, prevState) {\n if (\n nextProps.value !== prevState.prevProps.value\n || nextProps.totalNrOfPages !== prevState.prevProps.totalNrOfPages\n ) {\n return {\n selectedPage: nextProps.value,\n pagesArray: getPagesArr(nextProps.totalNrOfPages, nextProps.value),\n };\n }\n\n return null;\n }\n\n getPageCssClass(pageNr) {\n const { selectedPage } = this.state;\n const cssClasses = [];\n\n if (selectedPage === pageNr) {\n cssClasses.push('active');\n }\n\n return cssClasses.join(' ');\n }\n\n getPageKey() {\n this.pageKey += 1;\n\n return this.pageKey;\n }\n\n goToPage(pageNr) {\n const { onChange, totalNrOfPages } = this.props;\n this.setState({\n selectedPage: pageNr,\n pagesArray: getPagesArr(totalNrOfPages, pageNr),\n }, () => {\n if (onChange) {\n onChange(pageNr);\n }\n });\n }\n\n render() {\n const { totalNrOfPages } = this.props;\n const { pagesArray, selectedPage } = this.state;\n\n return (\n \n {\n totalNrOfPages\n ? (\n
      \n {\n selectedPage > 0 && totalNrOfPages > 5\n ? (\n
    • \n \n
    • \n )\n : null\n }\n {\n pagesArray.map(pageNr => (\n
    • \n {\n pageNr !== '...'\n ? \n : { pageNr }\n }\n
    • \n ))\n }\n {\n selectedPage < totalNrOfPages && totalNrOfPages > 5\n ? (\n
    • \n \n
    • \n )\n : null\n }\n
    \n )\n : null\n }\n
    \n );\n }\n}\n","import { createContext } from 'react';\n\nexport const tableContext = createContext();\n","import React, { useState, useContext } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { tableContext } from '../tableContext';\nimport Icon from '../../Icon';\n\nexport const HeaderCell = ({ column }) => {\n const { sortable } = column;\n const [sortOrder, setSortOrder] = useState(sortable?.default || 'ASC');\n const { state, sendMessage } = useContext(tableContext);\n return (\n {\n sendMessage('sort', { column, sortOrder });\n setSortOrder(sortOrder === 'ASC' ? 'DESC' : 'ASC');\n } : null}\n className={state.maxHeight ? 'fixed-header' : ''}\n >\n {column.name}\n {column.sortable && (\n \n \n \n )}\n \n );\n};\n\nHeaderCell.propTypes = {\n column: PropTypes.instanceOf(Object),\n};\n","import React, { useContext, useState } from 'react';\nimport { HeaderCell } from './header-cell';\nimport { tableContext } from '../tableContext';\n\nexport const Header = () => {\n const [selectAll, setSelectAll] = useState(false);\n const { state, sendMessage } = useContext(tableContext);\n const { columns, selectable } = state;\n\n const generateHeaders = () => columns.map(column => (\n \n ));\n\n const generateSelectable = () => {\n if (!selectable) {\n return;\n }\n const Component = selectable.type;\n // eslint-disable-next-line consistent-return\n return (\n \n {selectable?.allowSelectAll ? (\n
    \n {\n setSelectAll(!selectAll);\n sendMessage('header.selectAll.click', selectAll);\n }}\n onChange={(v) => {\n sendMessage('header.selectAll.change', v);\n }}\n >\n {selectable.values?.value}\n \n
    \n ) : (\n selectable.name || 'Select'\n )}\n \n );\n };\n\n return (\n \n \n {selectable && selectable.position === 'LEFT' && generateSelectable()}\n {generateHeaders()}\n {selectable && selectable.position === 'RIGHT' && generateSelectable()}\n \n \n );\n};\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\n\n/**\n * - Checkboxes are used when a user needs to select one or more values from a series of options.\n * - They can be also be used as a binary toggle but consider radio instead.\n * - Can be used with Formik respectively (FormikCheckbox)\n */\nexport default class Checkbox extends Component {\n static propTypes = {\n /** Disable a checkbox */\n disabled: PropTypes.bool,\n /** Readonly prop behaves the same as disable on checkboxes */\n readOnly: PropTypes.bool,\n /** Align checkbox with in same line with other elements */\n inline: PropTypes.bool,\n /** Set a theme for checkbox */\n theme: PropTypes.string,\n /** Set an error state for checkbox if boolean will show just icon without message */\n error: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.bool,\n ]),\n /** Adds additional information under the checkbox element */\n note: PropTypes.string,\n input: PropTypes.instanceOf(Object),\n /** Adds a label to checkbox */\n label: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.func,\n PropTypes.string,\n ]),\n /** Set a name for checkbox */\n name: PropTypes.string,\n /** Set initial value for checkbox */\n value: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.bool,\n ]),\n /** Make checkbox checked by default */\n checked: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.bool,\n ]),\n /** Callback function executed on change of checkbox */\n onChange: PropTypes.func,\n /** CSS classes added to the wrapper of the component */\n wrapperClassName: PropTypes.string,\n };\n\n getCssClasses() {\n const {\n inline, disabled, readOnly, theme = '', wrapperClassName = '',\n } = this.props;\n\n const cssClasses = [wrapperClassName];\n\n cssClasses.push('tyk-checkbox');\n\n if (inline) {\n cssClasses.push('tyk-checkbox--inline');\n }\n\n if (theme.trim()) {\n cssClasses.push(...theme.split(' ').map(t => `tyk-checkbox--theme-${t}`));\n }\n\n if (disabled || readOnly) {\n cssClasses.push('tyk-checkbox--is-disabled');\n }\n\n return cssClasses.join(' ');\n }\n\n displayError() {\n const { error } = this.props;\n if (!error) return null;\n\n return (\n

    \n {error}\n

    \n );\n }\n\n displayNote() {\n const { note } = this.props;\n if (!note) return null;\n\n return (\n

    \n {note}\n

    \n );\n }\n\n render() {\n const {\n input, value, label, ...rest\n } = this.props;\n return (\n \n
    \n \n {this.displayNote()}\n {this.displayError()}\n
    \n \n );\n }\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nexport const Cell = ({ col, row }) => {\n if (!row.values[col.id]) {\n return ;\n }\n\n if (col.type === 'string') {\n return (\n // eslint-disable-next-line jsx-a11y/click-events-have-key-events\n \n {row.values[col.id]?.value}\n \n );\n }\n const Component = col.type;\n return (\n \n \n {row.values[col.id].children ? row.values[col.id].children : null}\n
    \n \n );\n};\n\nCell.propTypes = {\n col: PropTypes.instanceOf(Object),\n row: PropTypes.instanceOf(Object),\n index: PropTypes.number,\n};\n","import React, { useContext } from 'react';\nimport PropTypes from 'prop-types';\nimport Checkbox from '../../../form/components/Checkbox';\nimport { Cell } from './cell';\nimport { tableContext } from '../tableContext';\n\nexport const Row = ({ row, index }) => {\n const { state, sendMessage } = useContext(tableContext);\n const { columns, selectable } = state;\n\n const SelectableCheckbox = () => (\n \n sendMessage('row.selected', { index, selected: v })}\n />\n \n );\n\n return (\n \n {selectable && selectable.position === 'LEFT' && SelectableCheckbox()}\n {columns.map(col => (\n \n ))}\n {selectable && selectable.position === 'RIGHT' && SelectableCheckbox()}\n \n );\n};\n\nRow.propTypes = {\n row: PropTypes.instanceOf(Object),\n index: PropTypes.number,\n};\n","import React, { useContext } from 'react';\nimport { tableContext } from '../tableContext';\nimport { Row } from './row';\n\n\nexport const Body = () => {\n const { state } = useContext(tableContext);\n const { rows } = state;\n\n return (\n \n {\n // eslint-disable-next-line react/no-array-index-key\n rows.map((row, i) => )\n }\n \n );\n};\n","import React, { useState, useEffect, useRef } from 'react';\nimport PropTypes from 'prop-types';\nimport Message from '../Message';\nimport Pagination from '../../form/components/Pagination';\nimport Loader from '../Loader';\nimport InfiniteScroller from '../InfiniteScroller';\nimport { Header } from './js/header';\nimport { Body } from './js/body';\nimport { tableContext } from './tableContext';\n\n/**\n * This is tyk's table component used to render a data in a tabular view.\n * See the example configuration object below to understand how to hydrate the table component\n */\n\nfunction Table({\n value, onChange, noDataMessage, loading, infiniteScrolling,\n}) {\n const [state, setState] = useState(null);\n const [onChangeMsg, setOnChangeMsg] = useState('api');\n const itemsListRef = useRef(null);\n const sortRows = (col, sortOrder) => {\n setState({\n ...state,\n sort: {\n order: sortOrder,\n col,\n },\n });\n };\n\n const selectAllRows = (data) => {\n setState({\n ...state,\n rows: state.rows.map((row) => ({ ...row, selected: data })),\n });\n };\n\n const selectRow = (data) => {\n const { index, selected } = data;\n const selectedRow = state.rows[index];\n \n setState({\n ...state,\n rows: [\n ...state.rows.slice(0, index),\n { ...selectedRow, selected },\n ...state.rows.slice(index + 1),\n ],\n });\n };\n\n const setPagination = (data) => {\n setState({\n ...state,\n pagination: {\n ...state.pagination,\n current: data + 1,\n },\n });\n };\n\n const api = {\n getState: () => state,\n setState: (newState) => setState(newState),\n };\n\n const sendMessage = (message, data) => {\n setOnChangeMsg(message);\n if (message === 'sort') {\n sortRows(data.column.id, data.sortOrder);\n }\n\n if (message === 'header.selectAll.click') {\n selectAllRows(data);\n }\n\n if (message === 'header.selectAll.change') {\n selectAllRows(data);\n }\n\n if (message === 'row.selected') {\n selectRow(data);\n }\n\n if (message === 'pagination.change') {\n setPagination(data);\n }\n };\n\n useEffect(() => setState(value), [value]);\n useEffect(() => {\n if (onChange) {\n onChange(onChangeMsg, state, api);\n }\n setOnChangeMsg('api');\n }, [state]);\n\n if (!state) {\n return ;\n }\n\n if (state.rows <= 0) {\n return {noDataMessage || 'No Data Available'};\n }\n\n const getTable = () => (\n \n
    \n \n
    \n );\n\n\n return (\n \n
    \n {\n loading && \n }\n {\n infiniteScrolling && state.pagination\n ? (\n state.pagination.current}\n loadMore={(num) => sendMessage('pagination.change', num)}\n pageNumber={state.pagination.current - 1}\n initialLoad={false}\n >\n { getTable() }\n \n )\n : getTable()\n }\n
    \n {state.pagination && !infiniteScrolling && (\n
    \n sendMessage('pagination.change', num)}\n />\n
    \n )}\n
    \n );\n}\n\nTable.propTypes = {\n /** Configuration object used to render the component */\n value: PropTypes.shape({\n /** Configuration for table columns */\n columns: PropTypes.arrayOf(PropTypes.shape({\n /** Unique id of the column */\n id: PropTypes.string.isRequired,\n /** Name of the column */\n name: PropTypes.string,\n /** Type of column, String by default */\n type: PropTypes.oneOfType([\n /** Just renders cell data of type strings */\n PropTypes.string,\n /** Render cell of elements (eg. Input / Button) */\n PropTypes.element,\n /** Render a custom function/component */\n PropTypes.func,\n ]),\n sortable: PropTypes.oneOfType([\n /** Make Column sortable */\n PropTypes.bool,\n /** Configure sorting behaviour */\n PropTypes.shape({\n /** Set default sorting direction ASC / DESC */\n default: PropTypes.string,\n }),\n ]),\n })),\n /** Configuration for table rows */\n rows: PropTypes.arrayOf(PropTypes.shape({})),\n /** Configuration to make table rows selectable */\n selectable: PropTypes.shape({}),\n /** Renders pagination for table if the object is missing / empty no pagination is rendered. */\n pagination: PropTypes.shape({}),\n /** Sets maximum height for table container. */\n maxHeight: PropTypes.string,\n /** Styling for the table container. */\n styling: PropTypes.shape({\n /** It's recommended to add styles to a class and pass the class in this object */\n className: PropTypes.string,\n }),\n }).isRequired,\n /** Callback executed with message and value when there are changes on table */\n onChange: PropTypes.func,\n /** Renders a component with the given message when `config.rows` is empty */\n noDataMessage: PropTypes.string,\n /** Show placeholder loader */\n loading: PropTypes.bool,\n /** Adds infinite scroller on page and calls `onChange` with `pagination.change` message */\n infiniteScrolling: PropTypes.bool,\n};\n\nTable.defaultProps = {\n loading: false,\n infiniteScrolling: false,\n noDataMessage: 'No Data Available',\n onChange: null,\n};\n\nexport default Table;\n","import React, { PureComponent } from 'react';\nimport PropTypes from 'prop-types';\n\n/**\n * Column component.\n */\nclass Column extends PureComponent {\n static propTypes = {\n /**\n * This property describes how the column element will be aligned vertically\n * within a Row: bottom, center, top\n */\n align: PropTypes.string,\n /** Css classes that can be passed to the column element */\n className: PropTypes.string,\n /**\n * ID that can be passed to the column element\n */\n id: PropTypes.string,\n /**\n * Specifies the size of the column within a Row (values must be between 1 - 12)\n */\n size: PropTypes.string.isRequired,\n /**\n * Specifies the left gap a column can have within a Row (values must be between 1 - 12)\n */\n offset: PropTypes.string,\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.string,\n PropTypes.object,\n PropTypes.node,\n ]),\n };\n\n getCssClasses() {\n const {\n align, className, offset, size,\n } = this.props;\n const colSize = size.split(' ');\n const colOffsets = offset ? offset.split(' ') : [];\n\n let cssClasses = colSize.map(cSize => `tyk-col--${cSize}`);\n const offsets = colOffsets.map(cOffset => `tyk-col--offset-${cOffset}`);\n\n if (align) {\n cssClasses.push(`tyk-col--align-${align}`);\n }\n\n if (className) {\n cssClasses = cssClasses.concat(className.split(' '));\n }\n\n cssClasses.push('tyk-col');\n cssClasses = cssClasses.concat(offsets || []);\n\n return cssClasses.join(' ');\n }\n\n render() {\n const { children, id, ...props } = this.props;\n\n return (\n
    \n { children }\n
    \n );\n }\n}\n\nexport default Column;\n","import React, { PureComponent } from 'react';\nimport PropTypes from 'prop-types';\n\n\n/** Row component which must be always present as a wrapper for Columns */\nexport default class Row extends PureComponent {\n static propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n ]),\n /** Css classes that can be passed to the Row element */\n className: PropTypes.string,\n /** Removes all the spaces between column */\n nogutters: PropTypes.bool,\n }\n\n getCssClasses() {\n const { className, nogutters } = this.props;\n let cssClass = ['tyk-row'];\n\n if (nogutters) {\n cssClass.push('no-gutters');\n cssClass.push('tyk-row--gutterless');\n }\n\n if (className) {\n cssClass = cssClass.concat(className.split(' '));\n }\n\n return cssClass.join(' ');\n }\n\n render() {\n const {\n children,\n nogutters,\n ...rest\n } = this.props;\n\n return (\n
    \n { children }\n
    \n );\n }\n}\n","import { createContext } from 'react';\n\nexport const DropdownContext = createContext();\n","import React, { cloneElement, useCallback } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { DropdownContext } from '../dropdown-context';\nimport Icon from '../../../../components/Icon';\n\nfunction DropdownItem(props) {\n const {\n customdropdownitem,\n children,\n eventKey,\n href,\n target,\n title,\n onClick,\n } = props;\n const dropdownItemCLick = useCallback((dropdownContext, itemProps) => {\n dropdownContext.onSelectItem(eventKey, itemProps);\n\n if (onClick) onClick(eventKey);\n }, []);\n\n return (\n \n {\n (dropdownContext) => (\n dropdownItemCLick(dropdownContext, props)}\n onKeyUp={() => {}}\n >\n {\n customdropdownitem\n ? cloneElement(customdropdownitem, {})\n : (\n \n {\n eventKey\n && dropdownContext.selectedItem === eventKey\n && dropdownContext.showCheckmark\n ? \n : null\n }\n \n {title || children}\n \n \n )\n }\n \n )\n }\n \n );\n}\n\nDropdownItem.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]),\n customdropdownitem: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n ]),\n eventKey: PropTypes.string,\n href: PropTypes.string,\n target: PropTypes.string,\n onClick: PropTypes.func,\n title: PropTypes.string,\n};\n\nexport default DropdownItem;\n","import React, {\n Component, createRef,\n} from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport DropdownItem from './js/DropdownItem';\nimport Button from '../../../components/Button';\nimport { DropdownContext } from './dropdown-context';\n\nclass Dropdown extends Component {\n static isElemInRightView(el, dropdownWidth) {\n const windowWidth = window.innerWidth;\n const offset = el.getBoundingClientRect();\n const elemRight = offset.left + dropdownWidth;\n\n return elemRight <= windowWidth;\n }\n\n static isElemInBottomView(el, dropdownHeight) {\n const windowHeight = window.innerHeight;\n const offset = el.getBoundingClientRect();\n const elHeight = el.clientHeight;\n const elemBottom = offset.top + elHeight + dropdownHeight;\n\n return elemBottom <= windowHeight;\n }\n\n constructor(props) {\n super(props);\n\n const {\n selectedItem,\n open,\n } = this.props;\n\n this.state = {\n opened: open,\n selectedItem: selectedItem || null,\n };\n\n this.dropdownRef = createRef();\n this.dropdownListRef = createRef();\n this.dropdownButtonRef = createRef();\n this.onSelectItem = this.onSelectItem.bind(this);\n this.toggleDropdown = this.toggleDropdown.bind(this);\n this.handleClickOutside = this.handleClickOutside.bind(this);\n }\n\n componentDidMount() {\n document.addEventListener('mousedown', this.handleClickOutside);\n\n if (this.dropdownListRef.current) {\n this.getStyles();\n }\n }\n\n componentDidUpdate(prevProps) {\n const {\n open,\n } = this.props;\n const {\n opened,\n } = this.state;\n\n if (this.dropdownListRef.current) {\n this.getStyles();\n }\n\n if (\n !prevProps.open\n && open === true\n && !opened\n ) {\n this.toggleDropdown();\n }\n\n if (\n prevProps.open\n && open === false\n && opened\n ) {\n this.closeDropdown();\n }\n }\n\n componentWillUnmount() {\n document.removeEventListener('mousedown', this.handleClickOutside);\n }\n\n handleClickOutside(event) {\n if (\n this.dropdownListRef.current && !this.dropdownListRef.current.contains(event.target)\n && this.dropdownRef.current && !this.dropdownRef.current.contains(event.target)\n ) {\n this.closeDropdown();\n }\n }\n\n onSelectItem(itemId, itemProps) {\n const { closeOnSelect, onSelect } = this.props;\n const changes = {\n selectedItem: itemId,\n selectedItemProps: itemProps,\n };\n\n if (closeOnSelect) {\n changes.opened = false;\n }\n\n this.setState(changes);\n\n if (onSelect && typeof onSelect === 'function') {\n onSelect(itemId);\n }\n }\n\n getStyles() {\n const {\n display,\n position,\n offset,\n } = this.props;\n\n const dropdownEl = this.dropdownListRef.current;\n\n if (offset) {\n dropdownEl.style.top = `${offset.top}`;\n dropdownEl.style.left = `${offset.left}`;\n return;\n }\n\n const scrollTop = Math.max(\n document.documentElement.scrollTop,\n document.body.scrollTop,\n window.scrollY,\n );\n const el = this.dropdownRef.current;\n const elHeight = el.clientHeight;\n const dropdownHeight = dropdownEl ? dropdownEl.clientHeight : 0;\n const dropdownWidth = dropdownEl ? dropdownEl.clientWidth : 0;\n const offsetPosition = el.getBoundingClientRect();\n const { left, top } = offsetPosition;\n let customTop = 0;\n let customLeft = left;\n\n // calculate top position, depending on the element position on the page\n if (Dropdown.isElemInBottomView(el, dropdownHeight)) {\n customTop = top + scrollTop + elHeight;\n } else {\n customTop = top + scrollTop - dropdownHeight - 5;\n }\n\n if (Dropdown.isElemInRightView(el, dropdownWidth)) {\n customLeft = left;\n } else {\n customLeft = left + el.clientWidth - dropdownWidth;\n }\n\n if (position !== 'relative') {\n dropdownEl.style.top = `${customTop}px`;\n if (display !== 'block') {\n dropdownEl.style.left = `${customLeft}px`;\n }\n }\n if (display !== 'block') {\n dropdownEl.style.minWidth = `${this.dropdownButtonRef.current.clientWidth}px`;\n }\n }\n\n getWrapperCssClasses() {\n const {\n btnGroup,\n btnGroupSize,\n className,\n btnTheme,\n wrapperClassName = '',\n } = this.props;\n let cssClasses = [wrapperClassName, 'tyk-dropdown'];\n\n cssClasses.push(`theme-${btnTheme || 'default'}`);\n\n if (className) {\n cssClasses = cssClasses.concat(className.split(' '));\n }\n\n if (btnGroup) {\n cssClasses.push('tyk-button-group');\n cssClasses.push(btnGroupSize ? `tyk-button-group--${btnGroupSize}` : 'tyk-button-group--md');\n }\n\n return cssClasses.join(' ');\n }\n\n getCssClasses() {\n const {\n opened,\n } = this.state;\n const {\n hasCustomContent,\n display,\n listclassnames,\n position,\n maxHeight,\n } = this.props;\n let cssClasses = ['tyk-dropdown-menu', 'tyk-dropdown'];\n\n if (maxHeight) {\n cssClasses.push('tyk-dropdown--scrollable');\n }\n\n if (opened) {\n cssClasses.push('opened');\n }\n\n if (listclassnames) {\n cssClasses = cssClasses.concat(listclassnames.split(' '));\n }\n\n if (display) {\n cssClasses.push('tyk-dropdown--block');\n }\n\n if (hasCustomContent) {\n cssClasses.push('tyk-dropdown--custom');\n }\n\n if (position === 'relative') {\n cssClasses.push('tyk-dropdown--relative');\n }\n\n return cssClasses.join(' ');\n }\n\n getBtnTitle() {\n const { btnTitle, stopButtonTextChange } = this.props;\n const { selectedItemProps } = this.state;\n\n if (!stopButtonTextChange && selectedItemProps && selectedItemProps.title) {\n return selectedItemProps.title;\n }\n\n return btnTitle;\n }\n\n closeDropdown() {\n const { onClose } = this.props;\n\n this.setState({\n opened: false,\n }, () => {\n if (onClose) {\n onClose();\n }\n });\n }\n\n toggleDropdown() {\n const {\n opened,\n } = this.state;\n if (opened) {\n this.closeDropdown();\n\n return;\n }\n\n this.setState({\n opened: true,\n });\n }\n\n render() {\n const {\n appendTo,\n btnClassName,\n btnSize,\n customBtnTitle,\n hasCustomContent,\n btnTheme,\n children,\n label,\n showDropdownIcon,\n showTriggerButton,\n showCheckmark,\n disabled = false,\n maxHeight,\n } = this.props;\n const {\n selectedItem,\n opened,\n } = this.state;\n const DropdownWrapperTag = hasCustomContent ? 'div' : 'ul';\n return (\n \n {\n label\n ? (\n \n )\n : null\n }\n {\n showTriggerButton\n ? (\n \n { customBtnTitle || this.getBtnTitle() }\n \n )\n : null\n }\n {\n opened\n ? ReactDOM.createPortal(\n \n {\n opened\n ? (\n \n {\n (typeof children === 'function')\n ? children({\n closeDropdown: this.closeDropdown.bind(this),\n })\n : children\n }\n \n )\n : null\n }\n ,\n document.querySelector(appendTo || 'body'),\n )\n : null\n }\n \n );\n }\n}\n\nDropdown.propTypes = {\n appendTo: PropTypes.string,\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n PropTypes.func,\n ]),\n closeOnSelect: PropTypes.bool,\n btnClassName: PropTypes.string,\n btnSize: PropTypes.string,\n btnGroupSize: PropTypes.string,\n btnTheme: PropTypes.string,\n btnTitle: PropTypes.oneOfType([\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n customBtnTitle: PropTypes.oneOfType([\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n btnGroup: PropTypes.bool,\n className: PropTypes.string,\n display: PropTypes.string,\n disabled: PropTypes.bool,\n hasCustomContent: PropTypes.bool,\n label: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.func,\n PropTypes.string,\n ]),\n listclassnames: PropTypes.string,\n onClose: PropTypes.func,\n onSelect: PropTypes.func,\n open: PropTypes.bool,\n offset: PropTypes.instanceOf(Object),\n position: PropTypes.string,\n selectedItem: PropTypes.string,\n showDropdownIcon: PropTypes.bool,\n stopButtonTextChange: PropTypes.bool,\n showTriggerButton: PropTypes.bool,\n showCheckmark: PropTypes.bool,\n maxHeight: PropTypes.string,\n wrapperClassName: PropTypes.string,\n};\n\nDropdown.defaultProps = {\n closeOnSelect: false,\n showDropdownIcon: true,\n showTriggerButton: true,\n showCheckmark: true,\n open: false,\n};\n\nDropdown.Item = DropdownItem;\n\nexport default Dropdown;\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"react-ace\");","import React, { useCallback } from 'react';\nimport PropTypes from 'prop-types';\n\nimport ace from 'ace-builds/src-noconflict/ace';\nimport AceEditor from 'react-ace';\nimport 'ace-builds/src-noconflict/mode-javascript';\nimport 'ace-builds/src-noconflict/mode-golang';\nimport 'ace-builds/src-noconflict/mode-python';\nimport 'ace-builds/src-noconflict/mode-css';\nimport 'ace-builds/src-noconflict/mode-json';\nimport 'ace-builds/src-noconflict/mode-xml';\nimport 'ace-builds/src-noconflict/mode-jsx';\nimport 'ace-builds/src-noconflict/ext-searchbox';\nimport 'ace-builds/src-noconflict/ext-beautify';\nimport 'ace-builds/src-noconflict/theme-github';\nimport jsonWorker from 'ace-builds/src-noconflict/worker-json';\n\nace.config.setModuleUrl('ace/mode/json_worker', jsonWorker);\n\nfunction CodeEditor(props) {\n const {\n disabled,\n readOnly,\n disableValidation,\n id,\n error,\n label,\n labelwidth,\n note,\n onBlur,\n onChange,\n theme,\n value,\n setOptions,\n wrapperClassName,\n } = props;\n const classes = [\n 'tyk-form-group',\n wrapperClassName,\n ...(theme ? theme.split(' ').map((t) => `tyk-form-group--${t}`) : []),\n labelwidth && 'tyk-form-group--label-has-width',\n error && 'has-error',\n ].filter(Boolean).join(' ');\n\n const finalSetOptions = {\n ...setOptions,\n ...disableValidation && { useWorker: false },\n };\n\n const getCodeEditorError = useCallback(() => (\n error && error !== 'true' && error !== 'false'\n ? (\n

    \n {error}\n

    \n )\n : null\n ), [error]);\n\n const getLabelStyles = useCallback(() => {\n if (labelwidth) return { flexBasis: labelwidth };\n return {};\n }, [labelwidth]);\n\n const getNonLabelWidth = useCallback(() => {\n if (labelwidth) return { flexBasis: `calc(100% - ${labelwidth} - 20px)` };\n return {};\n }, [labelwidth]);\n\n const handleOnChange = useCallback((newValue) => {\n if (onChange) onChange(newValue);\n }, [onChange]);\n\n const handleOnBlur = useCallback(() => {\n if (onBlur) onBlur(value);\n }, [onBlur, value]);\n\n return (\n
    \n {\n label\n ? \n : null\n }\n
    \n {\n // eslint-disable-next-line\n editorInstance.container.style.resize = 'both';\n // mouseup = css resize end\n document.addEventListener('mouseup', () => (\n editorInstance.resize()\n ));\n }}\n setOptions={finalSetOptions}\n />\n {\n note\n ?

    { note }

    \n : null\n }\n { getCodeEditorError() }\n
    \n
    \n );\n}\n\nCodeEditor.propTypes = {\n disabled: PropTypes.bool,\n readOnly: PropTypes.bool,\n disableValidation: PropTypes.bool,\n id: PropTypes.string,\n error: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.bool,\n ]),\n label: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.func,\n PropTypes.string,\n ]),\n labelwidth: PropTypes.string,\n mode: PropTypes.string,\n name: PropTypes.string,\n note: PropTypes.string,\n onBlur: PropTypes.func,\n onChange: PropTypes.func,\n theme: PropTypes.string,\n value: PropTypes.string,\n setOptions: PropTypes.instanceOf(Object),\n wrapperClassName: PropTypes.string,\n};\n\nexport default CodeEditor;\n","import React, { Component, Fragment, createRef } from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\n\nimport Icon from '../../../components/Icon';\nimport Button from '../../../components/Button';\n\nconst getStateSelectedValues = (multiple, tags, value) => {\n if (!value) {\n return (multiple || tags) ? [] : null;\n }\n\n return value;\n};\n\nexport default class Combobox extends Component {\n static closeList() {\n return {\n cursor: -1,\n opened: false,\n };\n }\n\n static openList() {\n return {\n opened: true,\n };\n }\n\n static filterByName(itemValue, inputValue) {\n return itemValue.name.toLowerCase().indexOf(inputValue) > -1;\n }\n\n static propTypes = {\n allowCustomValues: PropTypes.bool,\n CustomListComponent: PropTypes.elementType,\n searchItem: PropTypes.func,\n disabled: PropTypes.bool,\n error: PropTypes.string,\n id: PropTypes.string,\n label: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.func,\n PropTypes.string,\n ]),\n labelwidth: PropTypes.string,\n multiple: PropTypes.bool,\n max: PropTypes.number,\n note: PropTypes.oneOfType([\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n onChange: PropTypes.func,\n placeholder: PropTypes.string,\n tags: PropTypes.bool,\n theme: PropTypes.string,\n value: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.instanceOf(Object),\n PropTypes.instanceOf(Array),\n ]),\n values: PropTypes.instanceOf(Array),\n };\n\n static defaultProps = {\n allowCustomValues: true,\n };\n\n constructor(props) {\n super(props);\n const {\n multiple,\n tags,\n value,\n } = props;\n\n this.state = {\n cursor: -1,\n opened: false,\n width: 50,\n initialValue: value,\n stateSelectedValues: getStateSelectedValues(multiple, tags, value),\n searchText: '',\n tags,\n };\n\n this.comboboxRef = createRef();\n this.valuesListRef = createRef();\n this.inputRef = createRef();\n this.textRef = createRef();\n\n this.focusInput = this.focusInput.bind(this);\n this.onKeyUp = this.onKeyUp.bind(this);\n Combobox.openList = Combobox.openList.bind(this);\n this.handleClickOutside = this.handleClickOutside.bind(this);\n this.handleItemsNavigation = this.handleItemsNavigation.bind(this);\n this.handleComboboxDropdownClick = this.handleComboboxDropdownClick.bind(this);\n this.handleListItemClick = this.handleListItemClick.bind(this);\n this.handlePillRemoveClick = this.handlePillRemoveClick.bind(this);\n this.manageSelectedTags = this.manageSelectedTags.bind(this);\n }\n\n componentDidMount() {\n const { tags } = this.props;\n\n if (tags) {\n this.setInputWidth();\n }\n\n this.bindEvents();\n }\n\n componentWillUnmount() {\n this.unBindEvents();\n }\n\n static getDerivedStateFromProps(nextProps, prevState) {\n if (\n JSON.stringify(nextProps.value) !== JSON.stringify(prevState.initialValue)\n || nextProps.tags !== prevState.tags\n ) {\n return {\n initialValue: nextProps.value,\n stateSelectedValues: getStateSelectedValues(\n nextProps.multiple,\n nextProps.tags,\n nextProps.value,\n ),\n tags: nextProps.tags,\n };\n }\n\n return null;\n }\n\n onKeyUp(e) {\n const { tags, allowCustomValues } = this.props;\n const { cursor, opened } = this.state;\n const filteredValues = this.filterValues();\n let tempState = Object.assign({}, this.getSearchText());\n\n if (tags && e.key !== 'Escape') {\n tempState = Object.assign({}, tempState, this.setInputWidth());\n }\n\n if (e.key === 'Enter') {\n const methodName = (tags) ? 'manageSelectedTags' : 'manageSelectedValues';\n tempState = Object.assign({}, tempState, this[methodName](cursor));\n }\n\n if (allowCustomValues && !e.key === ' ' && tags) {\n tempState = Object.assign({}, tempState, this.manageSelectedTags());\n }\n\n if (\n !opened\n && this.inputRef.current.value\n && filteredValues\n && filteredValues.length\n && e.key !== 'Escape'\n ) {\n tempState = Object.assign({}, tempState, Combobox.openList());\n }\n\n if (e.key === 'Escape' && opened) {\n tempState = Object.assign({}, tempState, Combobox.closeList());\n }\n\n if (opened && filteredValues && !filteredValues.length) {\n tempState = Object.assign({}, tempState, Combobox.closeList());\n }\n\n this.setState(previousState => Object.assign({}, previousState, tempState));\n }\n\n getLabelStyles() {\n const { labelwidth } = this.props;\n const styles = {};\n\n if (labelwidth) {\n styles.flexBasis = labelwidth;\n }\n\n return styles;\n }\n\n getNonLabelWidth() {\n const { labelwidth } = this.props;\n const styles = {};\n\n if (labelwidth) {\n styles.flexBasis = `calc(100% - ${labelwidth} - 20px)`;\n }\n\n return styles;\n }\n\n setInputWidth() {\n return {\n width: 50 + this.textRef.current.offsetWidth,\n };\n }\n\n getSelectedIndex(value) {\n const { stateSelectedValues } = this.state;\n let position = -1;\n\n if (Array.isArray(stateSelectedValues)) {\n stateSelectedValues.forEach((item, index) => {\n if (item.id === value.id) {\n position = index;\n }\n });\n } else if (stateSelectedValues) {\n if (stateSelectedValues.id === value.id) {\n position = 0;\n }\n }\n\n return position;\n }\n\n getSearchText() {\n return {\n searchText: this.inputRef.current.value,\n };\n }\n\n getListItemCssClasses(value, index) {\n const cssClasses = [];\n const {\n cursor,\n } = this.state;\n\n if (cursor === index) {\n cssClasses.push('active');\n }\n\n if (value.disabled) {\n cssClasses.push('disabled');\n }\n\n return cssClasses.join(' ');\n }\n\n getComboboxListCssClass() {\n const { opened } = this.state;\n const { tags, theme } = this.props;\n const themes = theme ? theme.split(' ') : [];\n\n const cssClasses = ['tyk-combobox__list'];\n\n if (opened) {\n cssClasses.push('tyk-combobox__list--opened');\n }\n\n if (tags) {\n cssClasses.push('tyk-combobox__list--has-tags');\n }\n\n if (themes.length) {\n themes.forEach((iTheme) => {\n cssClasses.push(`tyk-form-group--${iTheme}`);\n });\n }\n\n return cssClasses.join(' ');\n }\n\n getCssClasses() {\n const {\n error, disabled, theme, labelwidth,\n } = this.props;\n const cssClasses = ['tyk-form-group', 'tyk-combobox'];\n const themes = theme ? theme.split(' ') : [];\n\n if (error) {\n cssClasses.push('has-error');\n }\n\n if (labelwidth) {\n cssClasses.push('tyk-form-group--label-has-width');\n }\n\n if (themes.length) {\n themes.forEach((iTheme) => {\n cssClasses.push(`tyk-form-group--${iTheme}`);\n });\n }\n\n if (disabled) {\n cssClasses.push('disabled');\n }\n\n return cssClasses.join(' ');\n }\n\n getInputError() {\n const { error } = this.props;\n\n return (error && error !== 'true' && error !== 'false')\n ? (\n \n { error }\n

    \n )\n : null;\n }\n\n getStyles() {\n const { scrollTop } = document.documentElement;\n const el = this.comboboxRef.current;\n const elHeight = el.offsetHeight;\n const elWidth = el.offsetWidth;\n\n const offset = el.getBoundingClientRect();\n const { left } = offset;\n let top = 0;\n\n top = offset.top + scrollTop + elHeight;\n\n return {\n top: `${top - 1}px`,\n left: `${left}px`,\n width: `${elWidth}px`,\n };\n }\n\n getComboboxDisplayData() {\n const { stateSelectedValues } = this.state;\n const { multiple, placeholder, values } = this.props;\n\n if (!stateSelectedValues) {\n return placeholder;\n }\n\n if (stateSelectedValues && Array.isArray(stateSelectedValues) && !stateSelectedValues.length) {\n return placeholder;\n }\n\n if (stateSelectedValues && !Array.isArray(stateSelectedValues) && !stateSelectedValues.id) {\n return placeholder;\n }\n\n if (Array.isArray(stateSelectedValues) && multiple) {\n return stateSelectedValues.reduce((prevValue, value, index) => prevValue + value.name + ((index !== stateSelectedValues.length - 1) ? ', ' : ''), '');\n }\n\n if (\n values\n && values.length\n && !Array.isArray(stateSelectedValues) && !stateSelectedValues.name\n ) {\n return values.filter(value => value.id === stateSelectedValues.id)[0].name;\n }\n\n return stateSelectedValues.name;\n }\n\n manageSelectedTags(index) {\n const { max, allowCustomValues } = this.props;\n const { stateSelectedValues } = this.state;\n const filteredValues = this.filterValues();\n const value = { id: this.inputRef.current.value, name: this.inputRef.current.value };\n\n if (allowCustomValues === false && index === -1) {\n return null;\n }\n\n const tempValue = filteredValues[index] || value;\n const selectedIndex = this.getSelectedIndex(tempValue);\n let selectedValues = {};\n\n this.inputRef.current.value = '';\n\n if (selectedIndex > -1 && this.isInInitialValues(tempValue)) {\n selectedValues = this.removeSelectedValue(selectedIndex);\n } else if (selectedIndex === -1) {\n if (max && stateSelectedValues.length >= max) {\n return selectedValues;\n }\n selectedValues = this.addSelectedValue(tempValue);\n }\n\n return selectedValues;\n }\n\n manageSelectedValues(index) {\n const { stateSelectedValues } = this.state;\n const {\n multiple, onChange, max,\n } = this.props;\n const filteredValues = this.filterValues();\n const tempSelectedValues = filteredValues[index];\n let selectedValues;\n const selectedIndex = this.getSelectedIndex(tempSelectedValues);\n\n if (tempSelectedValues && multiple) {\n if (selectedIndex > -1) {\n selectedValues = this.removeSelectedValue(selectedIndex);\n } else {\n if (max && stateSelectedValues.length >= max) {\n return selectedValues;\n }\n selectedValues = this.addSelectedValue(filteredValues[index]);\n }\n\n // tempSelectedValues = stateSelectedValues;\n } else {\n selectedValues = {\n stateSelectedValues: (selectedIndex === -1) ? tempSelectedValues : { id: null },\n };\n\n if (onChange && typeof onChange === 'function') {\n onChange((selectedIndex === -1) ? tempSelectedValues : null);\n }\n }\n\n return selectedValues;\n }\n\n removeSelectedValue(index) {\n const { stateSelectedValues } = this.state;\n const { onChange } = this.props;\n const tempStateSelectedValues = JSON.parse(JSON.stringify(stateSelectedValues));\n\n tempStateSelectedValues.splice(index, 1);\n\n if (onChange && typeof onChange === 'function') {\n onChange(tempStateSelectedValues.length ? tempStateSelectedValues : null);\n }\n\n return {\n stateSelectedValues: tempStateSelectedValues,\n searchText: '',\n };\n }\n\n addSelectedValue(value) {\n const { stateSelectedValues } = this.state;\n const { onChange } = this.props;\n const tempStateSelectedValues = JSON.parse(JSON.stringify(stateSelectedValues));\n\n tempStateSelectedValues.push(value);\n\n if (onChange && typeof onChange === 'function') {\n onChange(tempStateSelectedValues.length ? tempStateSelectedValues : null);\n }\n\n return {\n stateSelectedValues: tempStateSelectedValues,\n searchText: '',\n };\n }\n\n isInInitialValues(value) {\n const { values } = this.props;\n let ok = false;\n\n values.forEach((item) => {\n if (value.id === item.id) {\n ok = true;\n }\n });\n\n return ok;\n }\n\n filterValues() {\n const { values, searchItem } = this.props;\n\n if (!this.inputRef.current) {\n return values;\n }\n\n const arr = values\n .filter(\n value => (searchItem\n ? searchItem(value, this.inputRef.current.value.toLowerCase())\n : Combobox.filterByName(value, this.inputRef.current.value.toLowerCase())),\n );\n\n return arr;\n }\n\n bindEvents() {\n document.addEventListener('mousedown', this.handleClickOutside);\n }\n\n unBindEvents() {\n document.removeEventListener('mousedown', this.handleClickOutside);\n }\n\n handleItemsNavigation(e) {\n const { tags } = this.props;\n if (['ArrowDown', 'ArrowUp'].indexOf(e.key) === -1) {\n return;\n }\n\n const { cursor } = this.state;\n const filteredValues = this.filterValues();\n let cursorNext;\n\n e.preventDefault();\n\n if (e.key === 'ArrowDown') {\n if (cursor === -1 || cursor === filteredValues.length - 1) {\n cursorNext = 0;\n } else if (cursor < filteredValues.length - 1) {\n cursorNext = cursor + 1;\n }\n }\n\n if (e.key === 'ArrowUp') {\n if (cursor > 0) {\n cursorNext = cursor - 1;\n } else {\n cursorNext = filteredValues.length - 1;\n }\n }\n\n if (this.valuesListRef.current && cursorNext > 4) {\n const scrollTop = (cursorNext - 4) * 38;\n\n this.valuesListRef.current.scrollTop = (!tags) ? 60 + scrollTop : scrollTop;\n } else if (this.valuesListRef.current) {\n this.valuesListRef.current.scrollTop = 0;\n }\n\n this.setState(previousState => ({\n ...previousState,\n opened: true,\n cursor: cursorNext,\n }));\n }\n\n handleListItemClick(index) {\n // eslint-disable-next-line react/destructuring-assignment\n const clickedValue = this.props.values[index];\n if (clickedValue.disabled) return;\n\n const { multiple, tags } = this.props;\n\n const methodName = (tags) ? 'manageSelectedTags' : 'manageSelectedValues';\n const tempState = Object.assign({}, this.state, this[methodName](index));\n\n this.setState((previousState) => {\n if (!multiple && !tags) {\n tempState.opened = false;\n }\n\n return Object.assign({}, previousState, tempState);\n });\n }\n\n handlePillRemoveClick(index) {\n const { disabled } = this.props;\n\n if (disabled) {\n return;\n }\n\n const tempState = this.removeSelectedValue(index);\n\n this.setState(previousState => Object.assign({}, previousState, tempState));\n }\n\n handleClickOutside(event) {\n if (\n this.valuesListRef.current && !this.valuesListRef.current.contains(event.target)\n && this.comboboxRef.current && !this.comboboxRef.current.contains(event.target)\n ) {\n this.setState(previousState => Object.assign({}, previousState, Combobox.closeList()));\n }\n }\n\n handleComboboxDropdownClick() {\n const { disabled } = this.props;\n\n if (disabled) {\n return;\n }\n\n this.setState(previousState => Object.assign({}, previousState, Combobox.openList()));\n }\n\n reset() {\n const { multiple, tags, value } = this.props;\n\n this.setState({\n stateSelectedValues: getStateSelectedValues(multiple, tags, value),\n });\n }\n\n focusInput() {\n if (this.inputRef.current) {\n this.inputRef.current.focus();\n }\n }\n\n render() {\n const {\n CustomListComponent,\n disabled,\n id,\n label,\n note,\n tags,\n max,\n placeholder,\n } = this.props;\n const {\n width, opened, searchText, stateSelectedValues,\n } = this.state;\n\n const filteredValues = this.filterValues();\n\n return (\n \n
    \n {\n label\n ? \n : null\n }\n \n {}}\n ref={this.comboboxRef}\n >\n {\n tags\n ? (\n \n {\n (stateSelectedValues || []).map((value, index) => (\n
  • \n \n { value.name }\n
  • \n ))\n }\n \n {(max === undefined || stateSelectedValues?.length < max) && (\n <>\n {\n if (e.key === 'Enter') {\n e.preventDefault();\n }\n }}\n onKeyUp={this.onKeyUp}\n onKeyDown={this.handleItemsNavigation}\n placeholder={(!stateSelectedValues || !stateSelectedValues.length) ? placeholder : ''}\n ref={this.inputRef}\n style={{\n width: (!stateSelectedValues || !stateSelectedValues.length) ? '100%' : `${width}px`,\n }}\n />\n \n { searchText }\n \n \n )}\n {\n filteredValues.length\n ? (\n \n )\n : null\n }\n \n
    \n )\n : (\n {}}\n >\n { this.getComboboxDisplayData() }\n \n \n )\n }\n \n {\n note\n ?

    { note }

    \n : null\n }\n { this.getInputError() }\n
    \n \n {\n // eslint-disable-next-line no-nested-ternary\n !CustomListComponent\n ? opened && filteredValues.length\n ? ReactDOM.createPortal(\n \n {\n !tags\n ? (\n
  • \n \n
  • \n )\n : null\n }\n {\n filteredValues\n .map((value, index) => (\n {}}\n key={value.id}\n >\n {\n (this.getSelectedIndex(value) > -1)\n ? \n : null\n }\n \n {' '}\n { value.name }\n \n \n ))\n }\n ,\n document.querySelector('body'),\n )\n : null\n : (\n \n )\n }\n
    \n );\n }\n}\n","import React, { useState, useRef, useEffect } from 'react';\nimport Icon from '../../../../components/Icon';\nimport Pill from '../../../../components/Pill';\n\nfunction Value(props) {\n const {\n value,\n max,\n tags,\n tagSeparators,\n addTagOnBlur,\n placeholder,\n disabled,\n renderValue,\n valueOverflow,\n focus,\n onMessage: sendMessage,\n readOnly,\n } = props;\n const INPUT_MIN_WIDTH = 60;\n const inputRef = useRef(null);\n const dummyElementRef = useRef(null);\n const [inputValue, setInputValue] = useState('');\n const [inputWidth, setInputWidth] = useState(`${INPUT_MIN_WIDTH + 10}px`);\n\n function entryFieldOnChange(val) {\n if (tagSeparators.some(ts => val.slice(-1) === ts)) return;\n const dummy = dummyElementRef.current;\n dummy.innerHTML = val;\n setInputWidth(`${Math.max(dummy.clientWidth, INPUT_MIN_WIDTH) + 10}px`);\n setInputValue(val);\n sendMessage('tag.input.change', val);\n }\n\n function entryFieldOnKeyDown(key, val) {\n if (!tags) return;\n if (val === '' && key === 'Backspace' && value.length) {\n sendMessage('tag.remove', value[value.length - 1].id);\n return;\n }\n if (key === 'Enter') {\n sendMessage('tag.input.enter', val);\n entryFieldOnChange('');\n return;\n }\n if (key === 'ArrowUp') {\n sendMessage('tag.input.arrowUp');\n return;\n }\n if (key === 'ArrowDown') {\n sendMessage('tag.input.arrowDown');\n return;\n }\n if (key === 'Escape') {\n sendMessage('tag.input.escape');\n return;\n }\n if (tagSeparators.includes(key)) {\n sendMessage('tag.add', val);\n entryFieldOnChange('');\n }\n }\n\n function triggerAction() {\n sendMessage('text-value.click');\n }\n\n function textValue(val, isPlaceholder = false) {\n if (readOnly) return val || '-';\n\n const classes = [\n 'tyk-combobox2__text-value',\n `overflow-${valueOverflow}`,\n isPlaceholder && 'is-placeholder',\n ].filter(Boolean).join(' ');\n return (\n \n {val}\n \n );\n }\n\n function renderCustomValue(v) {\n const config = {\n tags,\n tagSeparators,\n placeholder,\n disabled,\n renderValue,\n sendMessage,\n };\n return renderValue(v, config);\n }\n\n function renderTag(v) {\n if (renderValue) return renderCustomValue(v);\n\n return (\n \n {\n e.stopPropagation();\n sendMessage('tag.remove', v.id);\n }}\n >\n \n \n { v.name }\n \n );\n }\n\n function getTags() {\n return (\n <>\n {value.map(renderTag)}\n {value.length < max && (\n <>\n entryFieldOnChange(e.target.value)}\n onKeyDown={(e) => {\n if (e.key === 'Enter') e.preventDefault();\n entryFieldOnKeyDown(e.key, e.target.value);\n }}\n onFocus={() => sendMessage('tag.input.focus')}\n onBlur={(e) => {\n sendMessage('tag.input.blur', e.target.value);\n if (addTagOnBlur) entryFieldOnChange('');\n }}\n />\n \n \n )}\n \n );\n }\n\n useEffect(() => {\n if (focus && inputRef.current) inputRef.current.focus();\n }, [focus]);\n\n if (readOnly) {\n return
    {textValue(value.map(v => v.name).join(', '))}
    ;\n }\n\n if (tags) return getTags();\n if (renderValue) {\n return value.length === 0 ? textValue(placeholder, true) : value.map(renderCustomValue);\n }\n return value.length === 0\n ? textValue(placeholder, true)\n : textValue(value.map(v => v.name).join(', '));\n}\n\nexport default Value;\n","import React, { useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport Icon from '../../../../components/Icon';\n\nfunction List(props) {\n const {\n listRef,\n tags,\n values,\n searchValue,\n activeItem,\n onMessage: sendMessage,\n renderListItem,\n selectAll,\n showSearch,\n } = props;\n\n useEffect(() => {\n if (!listRef.current) return;\n const activeElement = listRef.current.querySelector('.active');\n if (activeElement) activeElement.scrollIntoView({ block: 'end' });\n }, [activeItem]);\n\n function renderItem(item) {\n if (renderListItem) {\n return renderListItem(item, {\n tags, searchValue, sendMessage, activeItem,\n });\n }\n\n return (\n !item.disabled && sendMessage('value.select', { item })}\n onKeyPress={() => {}}\n >\n {item.selected && }\n {item.name}\n \n );\n }\n\n function renderSelectAllOption() {\n const isAllSelected = values.every(v => v.selected);\n const isNoneSelected = values.every(v => !v.selected);\n const label = selectAll?.label ?? 'Select All';\n const mode = selectAll?.mode ?? 'select';\n const show = selectAll?.show ?? 'always';\n const render = selectAll?.render;\n\n const shouldRenderOption = show === 'always' || (mode === 'select' ? !isAllSelected : !isNoneSelected);\n if (!shouldRenderOption) return null;\n\n if (render) {\n return render({\n label,\n mode,\n show,\n isAllSelected,\n isNoneSelected,\n }, sendMessage);\n }\n return (\n sendMessage('value.select-all', mode === 'select' ? !isAllSelected : isNoneSelected)}\n onKeyDown={() => {}}\n >\n {(mode === 'select' ? isAllSelected : isNoneSelected) && }\n {label}\n \n );\n }\n\n return (\n <>\n {!tags && showSearch && (\n
    \n sendMessage('search.change', e.target.value)}\n onKeyDown={(e) => {\n if (e.key === 'Escape') sendMessage('search.escape');\n if (e.key === 'ArrowUp') sendMessage('search.arrowUp');\n if (e.key === 'ArrowDown') sendMessage('search.arrowDown');\n if (e.key === 'Enter') sendMessage('search.enter');\n }}\n />\n
    \n )}\n {values.length > 0 && (\n
      \n {Boolean(selectAll) && (\n renderSelectAllOption()\n )}\n {values.map(renderItem)}\n
    \n )}\n \n );\n}\n\nList.propTypes = {\n listRef: PropTypes.instanceOf(Object),\n tags: PropTypes.bool,\n values: PropTypes.instanceOf(Array),\n searchValue: PropTypes.string,\n activeItem: PropTypes.instanceOf(Object),\n onMessage: PropTypes.func,\n renderListItem: PropTypes.func,\n selectAll: PropTypes.oneOfType([\n PropTypes.bool,\n PropTypes.shape({\n label: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.func,\n PropTypes.string,\n ]),\n mode: PropTypes.oneOf(['select', 'unselect']),\n show: PropTypes.oneOf(['always', 'notSameState']),\n render: PropTypes.func,\n }),\n ]),\n showSearch: PropTypes.bool,\n};\n\nexport default List;\n","import React, { useState, useRef, useEffect } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Icon from '../../../components/Icon';\nimport FloatingContainer from '../../../components/FloatingContainer';\n\nimport Value from './js/Value';\nimport List from './js/List';\n\nfunction normalizeValue(value, values) {\n let v = value;\n if (typeof value === 'string') v = { id: value, name: value };\n else if (!value.hasOwnProperty('name')) v = { ...value, name: value.id }; // eslint-disable-line no-prototype-builtins\n if (!values) return v;\n const existingVal = values.find((ev) => ev.id === v.id);\n return existingVal ? { ...v, ...existingVal } : v;\n}\n\nfunction getValueFromProp(value, values) {\n if (!value) return [];\n if (Array.isArray(value)) return value.map((v) => normalizeValue(v, values));\n return [normalizeValue(value, values)];\n}\n\n/**\n * Dropdown-like component that can display selected values as regular text,\n * tags, or in a custom way.\n * You can select values from a list or type in new ones.\n */\nfunction Combobox2({\n value: propValue,\n values: propValues = [],\n valueOverflow = 'single',\n label = '',\n labelwidth,\n tags = false,\n tagSeparators = [' ', 'Enter'],\n addTagOnBlur = false,\n max: maxProp,\n multiple = false,\n placeholder = '',\n theme,\n note = '',\n error = '',\n disabled = false,\n readOnly = false,\n allowCustomValues = true,\n searchItem: matchItemFn,\n renderValue,\n renderListItem,\n renderList: renderListProp,\n CustomListComponent,\n onBeforeChange = () => true,\n onChange = () => {},\n floatingContainerConfig,\n expandMode,\n infiniteScrollerConfig,\n displayDropdownTrigger = true,\n selectAll,\n closeOnSelect,\n showSearch = false,\n required = false,\n validateOnChange = () => {},\n wrapperClassName = '',\n ...restProps\n}) {\n const max = multiple ? Infinity : maxProp || (tags ? Infinity : 1);\n const renderList = CustomListComponent\n ? (values, { sendMessage }) => (\n sendMessage('value.select', { item: values[index] })}\n getListItemCssClasses={() => {}}\n />\n )\n : renderListProp;\n\n const rootRef = useRef(null);\n const comboboxControlRef = useRef(null);\n const dropdownRef = useRef(null);\n const listRef = useRef(null);\n\n const [value, setValue] = useState(getValueFromProp(propValue, propValues));\n const [values, setValues] = useState(propValues.map((v) => normalizeValue(v)));\n const [searchValue, setSearchValue] = useState('');\n const [activeItem, setActiveItem] = useState(null);\n const [isOpened, setIsOpened] = useState(false);\n const [valuesExpanded, setValuesExpanded] = useState(false);\n const [localValidationError, setLocalValidationError] = useState('');\n\n function getThemeClasses() {\n const themes = theme ? theme.split(' ') : [];\n return themes.map((iTheme) => `tyk-form-group--${iTheme}`);\n }\n\n function getCssClasses() {\n return [\n wrapperClassName,\n 'tyk-form-group',\n 'tyk-combobox2',\n ...getThemeClasses(),\n (error || localValidationError) && 'has-error',\n labelwidth && 'tyk-form-group--label-has-width',\n disabled && 'disabled',\n expandMode && 'is-expand-mode',\n ].filter(Boolean).join(' ');\n }\n\n function getFilteredValues() {\n const defaultFn = (v, s) => v?.name?.toLowerCase()?.includes(s);\n const fn = matchItemFn || defaultFn;\n const filteredValues = values.filter((v) => fn(v, searchValue.toLowerCase()));\n return filteredValues;\n }\n\n function openDropdown() {\n setIsOpened(true);\n }\n\n function closeDropdown() {\n setIsOpened(false);\n if (!tags) updateSearchValue('');\n setActiveItem(null);\n }\n\n function updateSearchValue(newSearchValue) {\n setSearchValue(newSearchValue);\n if (activeItem && getFilteredValues().every((fv) => fv.id !== activeItem.id)) {\n setActiveItem(null);\n }\n if (newSearchValue && !isOpened) openDropdown();\n }\n\n function isValidValue(newValues, lastValue) {\n const localError = validateOnChange(newValues, lastValue);\n setLocalValidationError(localError);\n return localError === undefined;\n }\n\n function updateValue(newValues) {\n setValue(newValues);\n onChange(max === 1 && !tags ? (newValues[0] || null) : newValues);\n }\n\n function addTag(val) {\n if (!val) return;\n if (value.length >= max) return;\n if (value.some(({ name }) => name === val)) return;\n\n const listValueIndex = values.findIndex((lv) => lv.name === val);\n let newValue;\n let finalValue = [...value];\n let selectedValues;\n\n if (listValueIndex === -1) {\n if (allowCustomValues) {\n newValue = { id: val, name: val };\n finalValue = [...value, newValue];\n }\n } else {\n selectedValues = [\n ...values.slice(0, listValueIndex),\n { ...values[listValueIndex], selected: true },\n ...values.slice(listValueIndex + 1),\n ];\n newValue = values[listValueIndex];\n finalValue = [...value, values[listValueIndex]];\n }\n\n if (isValidValue(finalValue, newValue) && onBeforeChange(value, finalValue)) {\n if (selectedValues) {\n setValues(selectedValues);\n }\n updateValue(finalValue);\n }\n }\n\n function removeTag(id) {\n if (required && max === 1) return;\n\n const listValueIndex = values.findIndex((lv) => lv.id === id);\n const newValue = value.filter((v) => v.id !== id);\n\n if (!onBeforeChange(value, newValue)) return;\n\n if (listValueIndex !== -1) {\n setValues([\n ...values.slice(0, listValueIndex),\n { ...values[listValueIndex], selected: false },\n ...values.slice(listValueIndex + 1),\n ]);\n }\n updateValue(newValue);\n }\n\n function selectValue({ id }) {\n const val = values.find((v) => v.id === id);\n let finalValue = value;\n let selectedValues = values;\n\n if (val.selected) {\n if (!required || max !== 1) {\n finalValue = value.filter((v) => v.id !== val.id);\n selectedValues = values.map((v) => (v.id === val.id ? { ...v, selected: false } : v));\n }\n } else if (value.length < max) {\n finalValue = [...value, val];\n selectedValues = values.map((v) => (v.id === val.id ? { ...v, selected: true } : v));\n } else if (max === 1) {\n finalValue = [val];\n selectedValues = values.map((v) => ({ ...v, selected: v.id === val.id }));\n }\n\n if (isValidValue(finalValue, val) && onBeforeChange(value, finalValue)) {\n updateValue(finalValue);\n setValues(selectedValues);\n }\n\n if (max === 1 || closeOnSelect) {\n closeDropdown();\n }\n }\n\n function selectAllValues(selected) {\n if (values.length > max) return;\n const newValue = selected ? [...values] : [];\n\n if (!onBeforeChange(value, newValue)) return;\n\n updateValue(newValue);\n setValues(values.map((v) => ({ ...v, selected })));\n if (closeOnSelect) closeDropdown();\n }\n\n function moveUpActiveItem() {\n const visibleItems = getFilteredValues().filter((v) => !v.disabled);\n if (visibleItems.length === 0) return;\n if (activeItem === null || visibleItems.length === 1) {\n setActiveItem(visibleItems[visibleItems.length - 1]);\n return;\n }\n const activeIndex = visibleItems.findIndex((v) => v.id === activeItem.id);\n setActiveItem(visibleItems[activeIndex > 0 ? activeIndex - 1 : visibleItems.length - 1]);\n }\n\n function moveDownActiveItem() {\n const visibleItems = getFilteredValues().filter((v) => !v.disabled);\n if (visibleItems.length === 0) return;\n if (activeItem === null || visibleItems.length === 1) {\n setActiveItem(visibleItems[0]);\n return;\n }\n const activeIndex = visibleItems.findIndex((v) => v.id === activeItem.id);\n setActiveItem(visibleItems[activeIndex < visibleItems.length - 1 ? activeIndex + 1 : 0]);\n }\n\n function executeTriggerAction() {\n if (expandMode) {\n setValuesExpanded(!valuesExpanded);\n } else {\n openDropdown();\n }\n }\n\n function handleDocumentClick(e) {\n const isClickInside = (rootRef.current && rootRef.current.contains(e.target))\n || (dropdownRef.current && dropdownRef.current.contains(e.target));\n if (!isClickInside) {\n closeDropdown();\n }\n }\n\n function onClickCapture(e) {\n if (!disabled) return;\n if (!expandMode) {\n e.stopPropagation();\n return;\n }\n\n const triggerElement = rootRef.current.querySelector('.tyk-combobox2__values-container-trigger');\n if (!triggerElement) return;\n\n const isClickOnTrigger = triggerElement === e.target || triggerElement.contains(e.target);\n if (!isClickOnTrigger) e.stopPropagation();\n }\n\n function onTagMessage(message, data) {\n if (message === 'add') {\n addTag(data);\n updateSearchValue('');\n }\n\n if (message === 'remove') removeTag(data);\n\n if (message === 'input.change') updateSearchValue(data);\n\n if (message === 'input.enter') {\n if (activeItem) {\n selectValue(activeItem);\n } else if (tagSeparators.includes('Enter')) {\n addTag(data);\n updateSearchValue('');\n }\n }\n\n if (message === 'input.arrowUp') {\n openDropdown();\n moveUpActiveItem();\n }\n\n if (message === 'input.arrowDown') {\n openDropdown();\n moveDownActiveItem();\n }\n\n if (message === 'input.escape') closeDropdown();\n\n if (message === 'input.blur' && addTagOnBlur) {\n addTag(data);\n updateSearchValue('');\n }\n\n if (message === 'input.focus') {\n openDropdown();\n }\n }\n\n function onMessage(message, data) {\n if (message.startsWith('tag.')) onTagMessage(message.slice(4), data);\n\n if (message === 'value.select') selectValue(data.item);\n\n if (message === 'value.select-all') selectAllValues(data);\n\n if (message === 'text-value.click') openDropdown();\n\n if (message === 'search.change') updateSearchValue(data);\n\n if (message === 'search.escape') closeDropdown();\n\n if (message === 'search.arrowUp') moveUpActiveItem();\n\n if (message === 'search.arrowDown') moveDownActiveItem();\n\n if (message === 'search.enter') {\n if (activeItem) selectValue(activeItem);\n }\n }\n\n useEffect(() => {\n window.addEventListener('click', handleDocumentClick, true);\n return () => window.removeEventListener('click', handleDocumentClick, true);\n }, []);\n\n useEffect(() => {\n if (propValues.length) {\n const newValues = propValues.map((v) => ({\n ...normalizeValue(v),\n selected: value.some((sv) => sv.id === v.id),\n }));\n setValues(newValues);\n setValue((val) => val.map((v) => newValues.find((nv) => nv.id === v.id) || v));\n } else if (values.length) {\n setValues([]);\n }\n }, [propValues]);\n\n useEffect(() => {\n const newValue = getValueFromProp(propValue, values);\n setValue(newValue);\n setValues((vals) => vals.map((v) => ({\n ...normalizeValue(v),\n selected: newValue.some((nv) => nv.id === v.id),\n })));\n }, [propValue]);\n\n useEffect(() => {\n if (!expandMode) return () => {};\n\n const valuesElement = comboboxControlRef.current.querySelector('.tyk-combobox2__current-values');\n const updateScroll = () => {\n valuesElement.scrollTop = valuesElement.scrollHeight;\n };\n /* eslint-disable-next-line no-undef */\n const mobserver = new MutationObserver(updateScroll);\n const robserver = new ResizeObserver(updateScroll);\n\n mobserver.observe(valuesElement, { attributes: true, childList: true, subtree: true });\n robserver.observe(valuesElement);\n\n return () => {\n mobserver.disconnect();\n robserver.disconnect();\n };\n });\n\n const filteredValues = getFilteredValues();\n const currentValuesClasses = [\n 'tyk-combobox2__current-values',\n expandMode && 'expand-mode',\n `tyk-combobox2__current-values--${valuesExpanded ? 'expanded' : 'collapsed'}`,\n ].join(' ');\n return (\n \n {label && (\n \n )}\n {!readOnly && (\n \n
    \n \n \n
    \n {displayDropdownTrigger && (\n \n {expandMode\n ? (\n \n )\n : (\n \n )}\n \n )}\n \n {isOpened && (!tags || filteredValues.length > 0) && (\n \n {renderList ? (\n renderList(filteredValues, {\n tags,\n searchValue,\n activeItem,\n listRef,\n sendMessage: onMessage,\n })\n ) : (\n \n )}\n \n )}\n {note && (\n

    {note}

    \n )}\n {((error && error !== 'true' && error !== 'false') || Boolean(localValidationError)) && (\n

    {error || localValidationError}

    \n )}\n \n )}\n {readOnly && (\n
    \n \n
    \n )}\n \n );\n}\n\nCombobox2.propTypes = {\n /** If `true` it allows entering values that are not in the list. */\n allowCustomValues: PropTypes.bool,\n /** Alias for `renderList`\n * used for backwards compatibility with the old Combobox component. */\n CustomListComponent: PropTypes.elementType,\n /** A function used for filtering elements displayed in the list when typing in. */\n searchItem: PropTypes.func,\n /** A custom component that will be used to display a value. */\n renderValue: PropTypes.func,\n /** A custom component that will be used to display an item in the dropdown list. */\n renderListItem: PropTypes.func,\n /** A custom component that will be used to display the entire content of the dropdown. */\n renderList: PropTypes.func,\n disabled: PropTypes.bool,\n /** hides the UI form element and displayes just the value as text */\n readOnly: PropTypes.bool,\n error: PropTypes.string,\n label: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.func,\n PropTypes.string,\n ]),\n labelwidth: PropTypes.string,\n /** The maximum number of values that can be selected/added. */\n max: PropTypes.number,\n /** Shorthand for max=Infinity */\n multiple: PropTypes.bool,\n note: PropTypes.oneOfType([\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n /**\n * Callback called before changing the value of the component.\n * The value change will succeed only if the callback's return value is truthy.\n * The callback is called with two arguments: 1) the previous value, 2) the next value */\n onBeforeChange: PropTypes.func,\n onChange: PropTypes.func,\n placeholder: PropTypes.string,\n /** Enables the display of values as `Pill` components that can be\n * removed without opening the dropdown. */\n tags: PropTypes.bool,\n /** A list of characters that will trigger the creation of a tag when typed. */\n tagSeparators: PropTypes.arrayOf(PropTypes.string),\n /** If set to true a tag will be created whenever the component loses focus\n * and there is something typed in. */\n addTagOnBlur: PropTypes.bool,\n theme: PropTypes.string,\n /** The value of the component. It can be a string, an array,\n * or an object with an `id` property. */\n value: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.instanceOf(Array),\n PropTypes.instanceOf(Object),\n ]),\n /** An array of selectable values. */\n values: PropTypes.instanceOf(Array),\n /** Config object passed to the internal floating container component. */\n floatingContainerConfig: PropTypes.instanceOf(Object),\n /** If set to `single` it will display the values on a single line\n * with an ellipsis at the end. */\n valueOverflow: PropTypes.oneOf(['single', 'multiple']),\n /**\n * If set to `true` whenever the user clicks on the dropdown trigger\n * the selected values container\n * will expand to show all selected values instead of opening the dropdown.\n */\n expandMode: PropTypes.bool,\n /** Config object passed to the internal infinite scroller component. */\n infiniteScrollerConfig: PropTypes.instanceOf(Object),\n /** Toggles the display of the dropdown trigger. */\n displayDropdownTrigger: PropTypes.bool,\n /**\n * If a boolean it will toggle the select all functionality from the dropdown.\n * It can also be an object with the shape `{ label, show, mode, render }`.\n * label - A string displayed as the select all option\n * show - It can be one of `['always', 'notSameState']`.\n * `always` means the option will always be displayed.\n * `notSameState` means it will be displayed only if the list items are\n * not all with the same state (depending on the `mode` value)\n * mode - It can be one of `['select', 'unselect']` and makes sense only\n * when the `show` property is `notSameState`\n * `select` means the select all option will only be displayed if not all\n * items are selected\n * `unselect` means the option will be displayed if no items are selected\n */\n selectAll: PropTypes.oneOfType([\n PropTypes.bool,\n PropTypes.shape({\n label: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.func,\n PropTypes.string,\n ]),\n mode: PropTypes.oneOf(['select', 'unselect']),\n show: PropTypes.oneOf(['always', 'notSameState']),\n render: PropTypes.func,\n }),\n ]),\n /** It `true` the dropdown will close after selecting a value. */\n closeOnSelect: PropTypes.bool,\n /** Toggles the display of the search input from the dropdown. */\n showSearch: PropTypes.bool,\n /** If it is required and can only select one value once you have something\n * selected you will not be able to deselect */\n required: PropTypes.bool,\n /** Validates newly added value before adding it to the selected values.\n * Returns an error string in case of error otherwise it returns undefined\n */\n validateOnChange: PropTypes.func,\n wrapperClassName: PropTypes.string,\n};\n\nexport default Combobox2;\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"flatpickr\");","\n import API from \"!../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../css-loader/dist/cjs.js!./flatpickr.min.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../css-loader/dist/cjs.js!./flatpickr.min.css\";\n export default content && content.locals ? content.locals : undefined;\n","import React, {\n useEffect, useState, useRef, useCallback,\n} from 'react';\nimport PropTypes from 'prop-types';\nimport flatpickr from 'flatpickr';\nimport 'flatpickr/dist/flatpickr.min.css';\n\nimport Icon from '../../../components/Icon';\nimport { usePrevious } from '../../../hooks';\n\nfunction DatePicker({\n children,\n disabled,\n readOnly = false,\n error,\n id,\n label,\n labelwidth,\n note,\n onClose,\n onChange,\n onOpen,\n theme,\n config = {},\n value,\n wrapperClassName = '',\n}) {\n const [pickerInstance, setPickerInstance] = useState(null);\n const dateRef = useRef(null);\n\n const prevValue = usePrevious(value);\n\n const hasValueChanged = useCallback((prevDate, currentDate) => {\n if (!prevDate) return true;\n if (!Array.isArray(currentDate)) return prevDate.getTime() !== currentDate.getTime();\n\n let diffDates = currentDate;\n\n if (prevDate && currentDate.length && prevDate.length) {\n diffDates = currentDate.filter((date, index) => date.getTime() !== prevDate[index].getTime());\n\n return diffDates.length > 0;\n }\n\n return currentDate.length > 0;\n }, []);\n\n const onDateChange = useCallback((dateValue) => {\n const finalValue = config.mode === 'range' ? dateValue : dateValue[0] || null;\n\n if (!onChange) return;\n\n if (config.mode === 'range') {\n if (finalValue.length === 2 && hasValueChanged(prevValue, finalValue)) {\n onChange(finalValue);\n }\n } else {\n onChange(finalValue);\n }\n }, [prevValue, onChange, hasValueChanged]);\n\n useEffect(() => {\n if (dateRef && dateRef.current && !pickerInstance) {\n const instance = flatpickr(dateRef.current, {\n ...config, defaultDate: value, onChange: onDateChange, onClose, onOpen,\n });\n setPickerInstance(instance);\n }\n\n return () => {\n if (pickerInstance) {\n pickerInstance.destroy();\n }\n };\n }, [dateRef.current, pickerInstance]);\n\n useEffect(() => {\n if (pickerInstance) {\n let tempValue = value;\n\n if (typeof value === 'string') {\n tempValue = new Date(value);\n } else if (Array.isArray(value)) {\n tempValue = value.map((date) => (typeof date === 'string' ? new Date(date) : date));\n }\n\n if (hasValueChanged(prevValue, tempValue)) {\n pickerInstance.set('onChange', onDateChange);\n if (config.mode === 'range') {\n if (tempValue && tempValue.length === 2) {\n pickerInstance.setDate(tempValue, true);\n }\n } else {\n pickerInstance.setDate(tempValue, true);\n }\n }\n }\n }, [prevValue, value, pickerInstance]);\n\n const classes = [\n 'tyk-form-group',\n 'tyk-form-group--addon-right',\n wrapperClassName,\n ...(theme ? theme.split(' ').map((t) => `tyk-form-group--${t}`) : []),\n labelwidth && 'tyk-form-group--label-has-width',\n error && 'has-error',\n ].filter(Boolean).join(' ');\n\n const getLabelStyles = () => {\n if (labelwidth) return { flexBasis: labelwidth };\n return {};\n };\n\n const getNonLabelWidth = () => {\n if (labelwidth) return { flexBasis: `calc(100% - ${labelwidth} - 20px)` };\n return {};\n };\n\n const openCalendar = useCallback(() => {\n if (!pickerInstance) return;\n\n pickerInstance.open();\n }, [pickerInstance]);\n\n const getInputError = () => (\n (error && error !== 'true' && error !== 'false')\n ? (\n

    \n { error }\n

    \n )\n : null\n );\n\n const getInputField = () => {\n let inputStyle = {};\n let addonStyle = {};\n\n if (config && config.inline) {\n inputStyle = {\n height: 0,\n padding: 0,\n width: 0,\n visibility: 'hidden',\n };\n\n addonStyle = {\n display: 'none',\n };\n }\n return (\n <>\n \n {}}\n tabIndex={0}\n style={addonStyle}\n >\n \n \n \n );\n };\n\n return (\n <>\n {\n children && children.length\n ? children({ openCalendar, ref: dateRef })\n : (\n
    \n {\n label\n ? \n : null\n }\n {!readOnly && (\n \n
    \n {getInputField()}\n
    \n {\n note\n ?

    { note }

    \n : null\n }\n { getInputError() }\n
    \n )}\n \n )\n }\n
    \n {readOnly && !value && '-'}\n {readOnly && value && flatpickr.formatDate(value, config.dateFormat || 'd/m/Y')}\n
    \n \n );\n}\n\nDatePicker.propTypes = {\n config: PropTypes.instanceOf(Object),\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n PropTypes.func,\n ]),\n disabled: PropTypes.bool,\n readOnly: PropTypes.bool,\n id: PropTypes.string,\n label: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.func,\n PropTypes.string,\n ]),\n labelwidth: PropTypes.string,\n note: PropTypes.string,\n onChange: PropTypes.oneOfType([\n PropTypes.func,\n PropTypes.instanceOf(Array),\n ]),\n onClose: PropTypes.oneOfType([\n PropTypes.func,\n PropTypes.instanceOf(Array),\n ]),\n onOpen: PropTypes.oneOfType([\n PropTypes.func,\n PropTypes.instanceOf(Array),\n ]),\n theme: PropTypes.string,\n error: PropTypes.string,\n value: PropTypes.oneOfType([\n PropTypes.instanceOf(Array),\n PropTypes.instanceOf(Object),\n PropTypes.string,\n ]),\n wrapperClassName: PropTypes.string,\n};\n\nexport default DatePicker;\n","export default function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}","export default function requiredArgs(required, args) {\n if (args.length < required) {\n throw new TypeError(required + ' argument' + (required > 1 ? 's' : '') + ' required, but only ' + args.length + ' present');\n }\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isDate\n * @category Common Helpers\n * @summary Is the given value a date?\n *\n * @description\n * Returns true if the given value is an instance of Date. The function works for dates transferred across iframes.\n *\n * @param {*} value - the value to check\n * @returns {boolean} true if the given value is a date\n * @throws {TypeError} 1 arguments required\n *\n * @example\n * // For a valid date:\n * const result = isDate(new Date())\n * //=> true\n *\n * @example\n * // For an invalid date:\n * const result = isDate(new Date(NaN))\n * //=> true\n *\n * @example\n * // For some value:\n * const result = isDate('2014-02-31')\n * //=> false\n *\n * @example\n * // For an object:\n * const result = isDate({})\n * //=> false\n */\nexport default function isDate(value) {\n requiredArgs(1, arguments);\n return value instanceof Date || _typeof(value) === 'object' && Object.prototype.toString.call(value) === '[object Date]';\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n *\n * @param {Date|Number} argument - the value to convert\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Clone the date:\n * const result = toDate(new Date(2014, 1, 11, 11, 30, 30))\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert the timestamp to date:\n * const result = toDate(1392098430000)\n * //=> Tue Feb 11 2014 11:30:30\n */\nexport default function toDate(argument) {\n requiredArgs(1, arguments);\n var argStr = Object.prototype.toString.call(argument);\n\n // Clone the date\n if (argument instanceof Date || _typeof(argument) === 'object' && argStr === '[object Date]') {\n // Prevent the date to lose the milliseconds when passed to new Date() in IE10\n return new Date(argument.getTime());\n } else if (typeof argument === 'number' || argStr === '[object Number]') {\n return new Date(argument);\n } else {\n if ((typeof argument === 'string' || argStr === '[object String]') && typeof console !== 'undefined') {\n // eslint-disable-next-line no-console\n console.warn(\"Starting with v2.0.0-beta.1 date-fns doesn't accept strings as date arguments. Please use `parseISO` to parse strings. See: https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#string-arguments\");\n // eslint-disable-next-line no-console\n console.warn(new Error().stack);\n }\n return new Date(NaN);\n }\n}","import isDate from \"../isDate/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isValid\n * @category Common Helpers\n * @summary Is the given date valid?\n *\n * @description\n * Returns false if argument is Invalid Date and true otherwise.\n * Argument is converted to Date using `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * Invalid Date is a Date, whose time value is NaN.\n *\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @param {*} date - the date to check\n * @returns {Boolean} the date is valid\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // For the valid date:\n * const result = isValid(new Date(2014, 1, 31))\n * //=> true\n *\n * @example\n * // For the value, convertable into a date:\n * const result = isValid(1393804800000)\n * //=> true\n *\n * @example\n * // For the invalid date:\n * const result = isValid(new Date(''))\n * //=> false\n */\nexport default function isValid(dirtyDate) {\n requiredArgs(1, arguments);\n if (!isDate(dirtyDate) && typeof dirtyDate !== 'number') {\n return false;\n }\n var date = toDate(dirtyDate);\n return !isNaN(Number(date));\n}","export default function toInteger(dirtyNumber) {\n if (dirtyNumber === null || dirtyNumber === true || dirtyNumber === false) {\n return NaN;\n }\n var number = Number(dirtyNumber);\n if (isNaN(number)) {\n return number;\n }\n return number < 0 ? Math.ceil(number) : Math.floor(number);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addMilliseconds\n * @category Millisecond Helpers\n * @summary Add the specified number of milliseconds to the given date.\n *\n * @description\n * Add the specified number of milliseconds to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the milliseconds added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 750 milliseconds to 10 July 2014 12:45:30.000:\n * const result = addMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:30.750\n */\nexport default function addMilliseconds(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var timestamp = toDate(dirtyDate).getTime();\n var amount = toInteger(dirtyAmount);\n return new Date(timestamp + amount);\n}","import addMilliseconds from \"../addMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\n/**\n * @name subMilliseconds\n * @category Millisecond Helpers\n * @summary Subtract the specified number of milliseconds from the given date.\n *\n * @description\n * Subtract the specified number of milliseconds from the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the milliseconds subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 750 milliseconds from 10 July 2014 12:45:30.000:\n * const result = subMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:29.250\n */\nexport default function subMilliseconds(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMilliseconds(dirtyDate, -amount);\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_DAY = 86400000;\nexport default function getUTCDayOfYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var timestamp = date.getTime();\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n var startOfYearTimestamp = date.getTime();\n var difference = timestamp - startOfYearTimestamp;\n return Math.floor(difference / MILLISECONDS_IN_DAY) + 1;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nexport default function startOfUTCISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n var weekStartsOn = 1;\n var date = toDate(dirtyDate);\n var day = date.getUTCDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setUTCDate(date.getUTCDate() - diff);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nexport default function getUTCISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getUTCFullYear();\n var fourthOfJanuaryOfNextYear = new Date(0);\n fourthOfJanuaryOfNextYear.setUTCFullYear(year + 1, 0, 4);\n fourthOfJanuaryOfNextYear.setUTCHours(0, 0, 0, 0);\n var startOfNextYear = startOfUTCISOWeek(fourthOfJanuaryOfNextYear);\n var fourthOfJanuaryOfThisYear = new Date(0);\n fourthOfJanuaryOfThisYear.setUTCFullYear(year, 0, 4);\n fourthOfJanuaryOfThisYear.setUTCHours(0, 0, 0, 0);\n var startOfThisYear = startOfUTCISOWeek(fourthOfJanuaryOfThisYear);\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}","import getUTCISOWeekYear from \"../getUTCISOWeekYear/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nexport default function startOfUTCISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var year = getUTCISOWeekYear(dirtyDate);\n var fourthOfJanuary = new Date(0);\n fourthOfJanuary.setUTCFullYear(year, 0, 4);\n fourthOfJanuary.setUTCHours(0, 0, 0, 0);\n var date = startOfUTCISOWeek(fourthOfJanuary);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nimport startOfUTCISOWeekYear from \"../startOfUTCISOWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000;\nexport default function getUTCISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var diff = startOfUTCISOWeek(date).getTime() - startOfUTCISOWeekYear(date).getTime();\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","var defaultOptions = {};\nexport function getDefaultOptions() {\n return defaultOptions;\n}\nexport function setDefaultOptions(newOptions) {\n defaultOptions = newOptions;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nimport { getDefaultOptions } from \"../defaultOptions/index.js\";\nexport default function startOfUTCWeek(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$weekStartsOn, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(1, arguments);\n var defaultOptions = getDefaultOptions();\n var weekStartsOn = toInteger((_ref = (_ref2 = (_ref3 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.weekStartsOn) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.weekStartsOn) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.weekStartsOn) !== null && _ref !== void 0 ? _ref : 0);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n var date = toDate(dirtyDate);\n var day = date.getUTCDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setUTCDate(date.getUTCDate() - diff);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nimport { getDefaultOptions } from \"../defaultOptions/index.js\";\nexport default function getUTCWeekYear(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$firstWeekCon, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getUTCFullYear();\n var defaultOptions = getDefaultOptions();\n var firstWeekContainsDate = toInteger((_ref = (_ref2 = (_ref3 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref !== void 0 ? _ref : 1);\n\n // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n var firstWeekOfNextYear = new Date(0);\n firstWeekOfNextYear.setUTCFullYear(year + 1, 0, firstWeekContainsDate);\n firstWeekOfNextYear.setUTCHours(0, 0, 0, 0);\n var startOfNextYear = startOfUTCWeek(firstWeekOfNextYear, options);\n var firstWeekOfThisYear = new Date(0);\n firstWeekOfThisYear.setUTCFullYear(year, 0, firstWeekContainsDate);\n firstWeekOfThisYear.setUTCHours(0, 0, 0, 0);\n var startOfThisYear = startOfUTCWeek(firstWeekOfThisYear, options);\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}","import getUTCWeekYear from \"../getUTCWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nimport { getDefaultOptions } from \"../defaultOptions/index.js\";\nexport default function startOfUTCWeekYear(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$firstWeekCon, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(1, arguments);\n var defaultOptions = getDefaultOptions();\n var firstWeekContainsDate = toInteger((_ref = (_ref2 = (_ref3 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref !== void 0 ? _ref : 1);\n var year = getUTCWeekYear(dirtyDate, options);\n var firstWeek = new Date(0);\n firstWeek.setUTCFullYear(year, 0, firstWeekContainsDate);\n firstWeek.setUTCHours(0, 0, 0, 0);\n var date = startOfUTCWeek(firstWeek, options);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport startOfUTCWeekYear from \"../startOfUTCWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000;\nexport default function getUTCWeek(dirtyDate, options) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var diff = startOfUTCWeek(date, options).getTime() - startOfUTCWeekYear(date, options).getTime();\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","export default function addLeadingZeros(number, targetLength) {\n var sign = number < 0 ? '-' : '';\n var output = Math.abs(number).toString();\n while (output.length < targetLength) {\n output = '0' + output;\n }\n return sign + output;\n}","import addLeadingZeros from \"../../addLeadingZeros/index.js\";\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | |\n * | d | Day of month | D | |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | m | Minute | M | Month |\n * | s | Second | S | Fraction of second |\n * | y | Year (abs) | Y | |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n */\nvar formatters = {\n // Year\n y: function y(date, token) {\n // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_tokens\n // | Year | y | yy | yyy | yyyy | yyyyy |\n // |----------|-------|----|-------|-------|-------|\n // | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n // | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n // | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n // | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n\n var signedYear = date.getUTCFullYear();\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n var year = signedYear > 0 ? signedYear : 1 - signedYear;\n return addLeadingZeros(token === 'yy' ? year % 100 : year, token.length);\n },\n // Month\n M: function M(date, token) {\n var month = date.getUTCMonth();\n return token === 'M' ? String(month + 1) : addLeadingZeros(month + 1, 2);\n },\n // Day of the month\n d: function d(date, token) {\n return addLeadingZeros(date.getUTCDate(), token.length);\n },\n // AM or PM\n a: function a(date, token) {\n var dayPeriodEnumValue = date.getUTCHours() / 12 >= 1 ? 'pm' : 'am';\n switch (token) {\n case 'a':\n case 'aa':\n return dayPeriodEnumValue.toUpperCase();\n case 'aaa':\n return dayPeriodEnumValue;\n case 'aaaaa':\n return dayPeriodEnumValue[0];\n case 'aaaa':\n default:\n return dayPeriodEnumValue === 'am' ? 'a.m.' : 'p.m.';\n }\n },\n // Hour [1-12]\n h: function h(date, token) {\n return addLeadingZeros(date.getUTCHours() % 12 || 12, token.length);\n },\n // Hour [0-23]\n H: function H(date, token) {\n return addLeadingZeros(date.getUTCHours(), token.length);\n },\n // Minute\n m: function m(date, token) {\n return addLeadingZeros(date.getUTCMinutes(), token.length);\n },\n // Second\n s: function s(date, token) {\n return addLeadingZeros(date.getUTCSeconds(), token.length);\n },\n // Fraction of second\n S: function S(date, token) {\n var numberOfDigits = token.length;\n var milliseconds = date.getUTCMilliseconds();\n var fractionalSeconds = Math.floor(milliseconds * Math.pow(10, numberOfDigits - 3));\n return addLeadingZeros(fractionalSeconds, token.length);\n }\n};\nexport default formatters;","import getUTCDayOfYear from \"../../../_lib/getUTCDayOfYear/index.js\";\nimport getUTCISOWeek from \"../../../_lib/getUTCISOWeek/index.js\";\nimport getUTCISOWeekYear from \"../../../_lib/getUTCISOWeekYear/index.js\";\nimport getUTCWeek from \"../../../_lib/getUTCWeek/index.js\";\nimport getUTCWeekYear from \"../../../_lib/getUTCWeekYear/index.js\";\nimport addLeadingZeros from \"../../addLeadingZeros/index.js\";\nimport lightFormatters from \"../lightFormatters/index.js\";\nvar dayPeriodEnum = {\n am: 'am',\n pm: 'pm',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n};\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O | Timezone (GMT) |\n * | p! | Long localized time | P! | Long localized date |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `format` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n * - `P` is long localized date format\n * - `p` is long localized time format\n */\n\nvar formatters = {\n // Era\n G: function G(date, token, localize) {\n var era = date.getUTCFullYear() > 0 ? 1 : 0;\n switch (token) {\n // AD, BC\n case 'G':\n case 'GG':\n case 'GGG':\n return localize.era(era, {\n width: 'abbreviated'\n });\n // A, B\n case 'GGGGG':\n return localize.era(era, {\n width: 'narrow'\n });\n // Anno Domini, Before Christ\n case 'GGGG':\n default:\n return localize.era(era, {\n width: 'wide'\n });\n }\n },\n // Year\n y: function y(date, token, localize) {\n // Ordinal number\n if (token === 'yo') {\n var signedYear = date.getUTCFullYear();\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n var year = signedYear > 0 ? signedYear : 1 - signedYear;\n return localize.ordinalNumber(year, {\n unit: 'year'\n });\n }\n return lightFormatters.y(date, token);\n },\n // Local week-numbering year\n Y: function Y(date, token, localize, options) {\n var signedWeekYear = getUTCWeekYear(date, options);\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n var weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear;\n\n // Two digit year\n if (token === 'YY') {\n var twoDigitYear = weekYear % 100;\n return addLeadingZeros(twoDigitYear, 2);\n }\n\n // Ordinal number\n if (token === 'Yo') {\n return localize.ordinalNumber(weekYear, {\n unit: 'year'\n });\n }\n\n // Padding\n return addLeadingZeros(weekYear, token.length);\n },\n // ISO week-numbering year\n R: function R(date, token) {\n var isoWeekYear = getUTCISOWeekYear(date);\n\n // Padding\n return addLeadingZeros(isoWeekYear, token.length);\n },\n // Extended year. This is a single number designating the year of this calendar system.\n // The main difference between `y` and `u` localizers are B.C. years:\n // | Year | `y` | `u` |\n // |------|-----|-----|\n // | AC 1 | 1 | 1 |\n // | BC 1 | 1 | 0 |\n // | BC 2 | 2 | -1 |\n // Also `yy` always returns the last two digits of a year,\n // while `uu` pads single digit years to 2 characters and returns other years unchanged.\n u: function u(date, token) {\n var year = date.getUTCFullYear();\n return addLeadingZeros(year, token.length);\n },\n // Quarter\n Q: function Q(date, token, localize) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case 'Q':\n return String(quarter);\n // 01, 02, 03, 04\n case 'QQ':\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n case 'Qo':\n return localize.ordinalNumber(quarter, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n case 'QQQ':\n return localize.quarter(quarter, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case 'QQQQQ':\n return localize.quarter(quarter, {\n width: 'narrow',\n context: 'formatting'\n });\n // 1st quarter, 2nd quarter, ...\n case 'QQQQ':\n default:\n return localize.quarter(quarter, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone quarter\n q: function q(date, token, localize) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case 'q':\n return String(quarter);\n // 01, 02, 03, 04\n case 'qq':\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n case 'qo':\n return localize.ordinalNumber(quarter, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n case 'qqq':\n return localize.quarter(quarter, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case 'qqqqq':\n return localize.quarter(quarter, {\n width: 'narrow',\n context: 'standalone'\n });\n // 1st quarter, 2nd quarter, ...\n case 'qqqq':\n default:\n return localize.quarter(quarter, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // Month\n M: function M(date, token, localize) {\n var month = date.getUTCMonth();\n switch (token) {\n case 'M':\n case 'MM':\n return lightFormatters.M(date, token);\n // 1st, 2nd, ..., 12th\n case 'Mo':\n return localize.ordinalNumber(month + 1, {\n unit: 'month'\n });\n // Jan, Feb, ..., Dec\n case 'MMM':\n return localize.month(month, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // J, F, ..., D\n case 'MMMMM':\n return localize.month(month, {\n width: 'narrow',\n context: 'formatting'\n });\n // January, February, ..., December\n case 'MMMM':\n default:\n return localize.month(month, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone month\n L: function L(date, token, localize) {\n var month = date.getUTCMonth();\n switch (token) {\n // 1, 2, ..., 12\n case 'L':\n return String(month + 1);\n // 01, 02, ..., 12\n case 'LL':\n return addLeadingZeros(month + 1, 2);\n // 1st, 2nd, ..., 12th\n case 'Lo':\n return localize.ordinalNumber(month + 1, {\n unit: 'month'\n });\n // Jan, Feb, ..., Dec\n case 'LLL':\n return localize.month(month, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // J, F, ..., D\n case 'LLLLL':\n return localize.month(month, {\n width: 'narrow',\n context: 'standalone'\n });\n // January, February, ..., December\n case 'LLLL':\n default:\n return localize.month(month, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // Local week of year\n w: function w(date, token, localize, options) {\n var week = getUTCWeek(date, options);\n if (token === 'wo') {\n return localize.ordinalNumber(week, {\n unit: 'week'\n });\n }\n return addLeadingZeros(week, token.length);\n },\n // ISO week of year\n I: function I(date, token, localize) {\n var isoWeek = getUTCISOWeek(date);\n if (token === 'Io') {\n return localize.ordinalNumber(isoWeek, {\n unit: 'week'\n });\n }\n return addLeadingZeros(isoWeek, token.length);\n },\n // Day of the month\n d: function d(date, token, localize) {\n if (token === 'do') {\n return localize.ordinalNumber(date.getUTCDate(), {\n unit: 'date'\n });\n }\n return lightFormatters.d(date, token);\n },\n // Day of year\n D: function D(date, token, localize) {\n var dayOfYear = getUTCDayOfYear(date);\n if (token === 'Do') {\n return localize.ordinalNumber(dayOfYear, {\n unit: 'dayOfYear'\n });\n }\n return addLeadingZeros(dayOfYear, token.length);\n },\n // Day of week\n E: function E(date, token, localize) {\n var dayOfWeek = date.getUTCDay();\n switch (token) {\n // Tue\n case 'E':\n case 'EE':\n case 'EEE':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n case 'EEEEE':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n case 'EEEEEE':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n case 'EEEE':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Local day of week\n e: function e(date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n switch (token) {\n // Numerical value (Nth day of week with current locale or weekStartsOn)\n case 'e':\n return String(localDayOfWeek);\n // Padded numerical value\n case 'ee':\n return addLeadingZeros(localDayOfWeek, 2);\n // 1st, 2nd, ..., 7th\n case 'eo':\n return localize.ordinalNumber(localDayOfWeek, {\n unit: 'day'\n });\n case 'eee':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n case 'eeeee':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n case 'eeeeee':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n case 'eeee':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone local day of week\n c: function c(date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n switch (token) {\n // Numerical value (same as in `e`)\n case 'c':\n return String(localDayOfWeek);\n // Padded numerical value\n case 'cc':\n return addLeadingZeros(localDayOfWeek, token.length);\n // 1st, 2nd, ..., 7th\n case 'co':\n return localize.ordinalNumber(localDayOfWeek, {\n unit: 'day'\n });\n case 'ccc':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // T\n case 'ccccc':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'standalone'\n });\n // Tu\n case 'cccccc':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'standalone'\n });\n // Tuesday\n case 'cccc':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // ISO day of week\n i: function i(date, token, localize) {\n var dayOfWeek = date.getUTCDay();\n var isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek;\n switch (token) {\n // 2\n case 'i':\n return String(isoDayOfWeek);\n // 02\n case 'ii':\n return addLeadingZeros(isoDayOfWeek, token.length);\n // 2nd\n case 'io':\n return localize.ordinalNumber(isoDayOfWeek, {\n unit: 'day'\n });\n // Tue\n case 'iii':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n case 'iiiii':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n case 'iiiiii':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n case 'iiii':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // AM or PM\n a: function a(date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n switch (token) {\n case 'a':\n case 'aa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n case 'aaa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n }).toLowerCase();\n case 'aaaaa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'aaaa':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // AM, PM, midnight, noon\n b: function b(date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue;\n if (hours === 12) {\n dayPeriodEnumValue = dayPeriodEnum.noon;\n } else if (hours === 0) {\n dayPeriodEnumValue = dayPeriodEnum.midnight;\n } else {\n dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n }\n switch (token) {\n case 'b':\n case 'bb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n case 'bbb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n }).toLowerCase();\n case 'bbbbb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'bbbb':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // in the morning, in the afternoon, in the evening, at night\n B: function B(date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue;\n if (hours >= 17) {\n dayPeriodEnumValue = dayPeriodEnum.evening;\n } else if (hours >= 12) {\n dayPeriodEnumValue = dayPeriodEnum.afternoon;\n } else if (hours >= 4) {\n dayPeriodEnumValue = dayPeriodEnum.morning;\n } else {\n dayPeriodEnumValue = dayPeriodEnum.night;\n }\n switch (token) {\n case 'B':\n case 'BB':\n case 'BBB':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n case 'BBBBB':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'BBBB':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Hour [1-12]\n h: function h(date, token, localize) {\n if (token === 'ho') {\n var hours = date.getUTCHours() % 12;\n if (hours === 0) hours = 12;\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n return lightFormatters.h(date, token);\n },\n // Hour [0-23]\n H: function H(date, token, localize) {\n if (token === 'Ho') {\n return localize.ordinalNumber(date.getUTCHours(), {\n unit: 'hour'\n });\n }\n return lightFormatters.H(date, token);\n },\n // Hour [0-11]\n K: function K(date, token, localize) {\n var hours = date.getUTCHours() % 12;\n if (token === 'Ko') {\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n return addLeadingZeros(hours, token.length);\n },\n // Hour [1-24]\n k: function k(date, token, localize) {\n var hours = date.getUTCHours();\n if (hours === 0) hours = 24;\n if (token === 'ko') {\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n return addLeadingZeros(hours, token.length);\n },\n // Minute\n m: function m(date, token, localize) {\n if (token === 'mo') {\n return localize.ordinalNumber(date.getUTCMinutes(), {\n unit: 'minute'\n });\n }\n return lightFormatters.m(date, token);\n },\n // Second\n s: function s(date, token, localize) {\n if (token === 'so') {\n return localize.ordinalNumber(date.getUTCSeconds(), {\n unit: 'second'\n });\n }\n return lightFormatters.s(date, token);\n },\n // Fraction of second\n S: function S(date, token) {\n return lightFormatters.S(date, token);\n },\n // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)\n X: function X(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n if (timezoneOffset === 0) {\n return 'Z';\n }\n switch (token) {\n // Hours and optional minutes\n case 'X':\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XX`\n case 'XXXX':\n case 'XX':\n // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XXX`\n case 'XXXXX':\n case 'XXX': // Hours and minutes with `:` delimiter\n default:\n return formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)\n x: function x(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n switch (token) {\n // Hours and optional minutes\n case 'x':\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xx`\n case 'xxxx':\n case 'xx':\n // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xxx`\n case 'xxxxx':\n case 'xxx': // Hours and minutes with `:` delimiter\n default:\n return formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (GMT)\n O: function O(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n switch (token) {\n // Short\n case 'O':\n case 'OO':\n case 'OOO':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n // Long\n case 'OOOO':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (specific non-location)\n z: function z(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n switch (token) {\n // Short\n case 'z':\n case 'zz':\n case 'zzz':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n // Long\n case 'zzzz':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':');\n }\n },\n // Seconds timestamp\n t: function t(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timestamp = Math.floor(originalDate.getTime() / 1000);\n return addLeadingZeros(timestamp, token.length);\n },\n // Milliseconds timestamp\n T: function T(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timestamp = originalDate.getTime();\n return addLeadingZeros(timestamp, token.length);\n }\n};\nfunction formatTimezoneShort(offset, dirtyDelimiter) {\n var sign = offset > 0 ? '-' : '+';\n var absOffset = Math.abs(offset);\n var hours = Math.floor(absOffset / 60);\n var minutes = absOffset % 60;\n if (minutes === 0) {\n return sign + String(hours);\n }\n var delimiter = dirtyDelimiter || '';\n return sign + String(hours) + delimiter + addLeadingZeros(minutes, 2);\n}\nfunction formatTimezoneWithOptionalMinutes(offset, dirtyDelimiter) {\n if (offset % 60 === 0) {\n var sign = offset > 0 ? '-' : '+';\n return sign + addLeadingZeros(Math.abs(offset) / 60, 2);\n }\n return formatTimezone(offset, dirtyDelimiter);\n}\nfunction formatTimezone(offset, dirtyDelimiter) {\n var delimiter = dirtyDelimiter || '';\n var sign = offset > 0 ? '-' : '+';\n var absOffset = Math.abs(offset);\n var hours = addLeadingZeros(Math.floor(absOffset / 60), 2);\n var minutes = addLeadingZeros(absOffset % 60, 2);\n return sign + hours + delimiter + minutes;\n}\nexport default formatters;","var dateLongFormatter = function dateLongFormatter(pattern, formatLong) {\n switch (pattern) {\n case 'P':\n return formatLong.date({\n width: 'short'\n });\n case 'PP':\n return formatLong.date({\n width: 'medium'\n });\n case 'PPP':\n return formatLong.date({\n width: 'long'\n });\n case 'PPPP':\n default:\n return formatLong.date({\n width: 'full'\n });\n }\n};\nvar timeLongFormatter = function timeLongFormatter(pattern, formatLong) {\n switch (pattern) {\n case 'p':\n return formatLong.time({\n width: 'short'\n });\n case 'pp':\n return formatLong.time({\n width: 'medium'\n });\n case 'ppp':\n return formatLong.time({\n width: 'long'\n });\n case 'pppp':\n default:\n return formatLong.time({\n width: 'full'\n });\n }\n};\nvar dateTimeLongFormatter = function dateTimeLongFormatter(pattern, formatLong) {\n var matchResult = pattern.match(/(P+)(p+)?/) || [];\n var datePattern = matchResult[1];\n var timePattern = matchResult[2];\n if (!timePattern) {\n return dateLongFormatter(pattern, formatLong);\n }\n var dateTimeFormat;\n switch (datePattern) {\n case 'P':\n dateTimeFormat = formatLong.dateTime({\n width: 'short'\n });\n break;\n case 'PP':\n dateTimeFormat = formatLong.dateTime({\n width: 'medium'\n });\n break;\n case 'PPP':\n dateTimeFormat = formatLong.dateTime({\n width: 'long'\n });\n break;\n case 'PPPP':\n default:\n dateTimeFormat = formatLong.dateTime({\n width: 'full'\n });\n break;\n }\n return dateTimeFormat.replace('{{date}}', dateLongFormatter(datePattern, formatLong)).replace('{{time}}', timeLongFormatter(timePattern, formatLong));\n};\nvar longFormatters = {\n p: timeLongFormatter,\n P: dateTimeLongFormatter\n};\nexport default longFormatters;","/**\n * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds.\n * They usually appear for dates that denote time before the timezones were introduced\n * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891\n * and GMT+01:00:00 after that date)\n *\n * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above,\n * which would lead to incorrect calculations.\n *\n * This function returns the timezone offset in milliseconds that takes seconds in account.\n */\nexport default function getTimezoneOffsetInMilliseconds(date) {\n var utcDate = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds()));\n utcDate.setUTCFullYear(date.getFullYear());\n return date.getTime() - utcDate.getTime();\n}","var protectedDayOfYearTokens = ['D', 'DD'];\nvar protectedWeekYearTokens = ['YY', 'YYYY'];\nexport function isProtectedDayOfYearToken(token) {\n return protectedDayOfYearTokens.indexOf(token) !== -1;\n}\nexport function isProtectedWeekYearToken(token) {\n return protectedWeekYearTokens.indexOf(token) !== -1;\n}\nexport function throwProtectedError(token, format, input) {\n if (token === 'YYYY') {\n throw new RangeError(\"Use `yyyy` instead of `YYYY` (in `\".concat(format, \"`) for formatting years to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n } else if (token === 'YY') {\n throw new RangeError(\"Use `yy` instead of `YY` (in `\".concat(format, \"`) for formatting years to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n } else if (token === 'D') {\n throw new RangeError(\"Use `d` instead of `D` (in `\".concat(format, \"`) for formatting days of the month to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n } else if (token === 'DD') {\n throw new RangeError(\"Use `dd` instead of `DD` (in `\".concat(format, \"`) for formatting days of the month to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n }\n}","var formatDistanceLocale = {\n lessThanXSeconds: {\n one: 'less than a second',\n other: 'less than {{count}} seconds'\n },\n xSeconds: {\n one: '1 second',\n other: '{{count}} seconds'\n },\n halfAMinute: 'half a minute',\n lessThanXMinutes: {\n one: 'less than a minute',\n other: 'less than {{count}} minutes'\n },\n xMinutes: {\n one: '1 minute',\n other: '{{count}} minutes'\n },\n aboutXHours: {\n one: 'about 1 hour',\n other: 'about {{count}} hours'\n },\n xHours: {\n one: '1 hour',\n other: '{{count}} hours'\n },\n xDays: {\n one: '1 day',\n other: '{{count}} days'\n },\n aboutXWeeks: {\n one: 'about 1 week',\n other: 'about {{count}} weeks'\n },\n xWeeks: {\n one: '1 week',\n other: '{{count}} weeks'\n },\n aboutXMonths: {\n one: 'about 1 month',\n other: 'about {{count}} months'\n },\n xMonths: {\n one: '1 month',\n other: '{{count}} months'\n },\n aboutXYears: {\n one: 'about 1 year',\n other: 'about {{count}} years'\n },\n xYears: {\n one: '1 year',\n other: '{{count}} years'\n },\n overXYears: {\n one: 'over 1 year',\n other: 'over {{count}} years'\n },\n almostXYears: {\n one: 'almost 1 year',\n other: 'almost {{count}} years'\n }\n};\nvar formatDistance = function formatDistance(token, count, options) {\n var result;\n var tokenValue = formatDistanceLocale[token];\n if (typeof tokenValue === 'string') {\n result = tokenValue;\n } else if (count === 1) {\n result = tokenValue.one;\n } else {\n result = tokenValue.other.replace('{{count}}', count.toString());\n }\n if (options !== null && options !== void 0 && options.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return 'in ' + result;\n } else {\n return result + ' ago';\n }\n }\n return result;\n};\nexport default formatDistance;","export default function buildFormatLongFn(args) {\n return function () {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n // TODO: Remove String()\n var width = options.width ? String(options.width) : args.defaultWidth;\n var format = args.formats[width] || args.formats[args.defaultWidth];\n return format;\n };\n}","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\nvar dateFormats = {\n full: 'EEEE, MMMM do, y',\n long: 'MMMM do, y',\n medium: 'MMM d, y',\n short: 'MM/dd/yyyy'\n};\nvar timeFormats = {\n full: 'h:mm:ss a zzzz',\n long: 'h:mm:ss a z',\n medium: 'h:mm:ss a',\n short: 'h:mm a'\n};\nvar dateTimeFormats = {\n full: \"{{date}} 'at' {{time}}\",\n long: \"{{date}} 'at' {{time}}\",\n medium: '{{date}}, {{time}}',\n short: '{{date}}, {{time}}'\n};\nvar formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: 'full'\n }),\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: 'full'\n }),\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: 'full'\n })\n};\nexport default formatLong;","var formatRelativeLocale = {\n lastWeek: \"'last' eeee 'at' p\",\n yesterday: \"'yesterday at' p\",\n today: \"'today at' p\",\n tomorrow: \"'tomorrow at' p\",\n nextWeek: \"eeee 'at' p\",\n other: 'P'\n};\nvar formatRelative = function formatRelative(token, _date, _baseDate, _options) {\n return formatRelativeLocale[token];\n};\nexport default formatRelative;","export default function buildLocalizeFn(args) {\n return function (dirtyIndex, options) {\n var context = options !== null && options !== void 0 && options.context ? String(options.context) : 'standalone';\n var valuesArray;\n if (context === 'formatting' && args.formattingValues) {\n var defaultWidth = args.defaultFormattingWidth || args.defaultWidth;\n var width = options !== null && options !== void 0 && options.width ? String(options.width) : defaultWidth;\n valuesArray = args.formattingValues[width] || args.formattingValues[defaultWidth];\n } else {\n var _defaultWidth = args.defaultWidth;\n var _width = options !== null && options !== void 0 && options.width ? String(options.width) : args.defaultWidth;\n valuesArray = args.values[_width] || args.values[_defaultWidth];\n }\n var index = args.argumentCallback ? args.argumentCallback(dirtyIndex) : dirtyIndex;\n // @ts-ignore: For some reason TypeScript just don't want to match it, no matter how hard we try. I challenge you to try to remove it!\n return valuesArray[index];\n };\n}","import buildLocalizeFn from \"../../../_lib/buildLocalizeFn/index.js\";\nvar eraValues = {\n narrow: ['B', 'A'],\n abbreviated: ['BC', 'AD'],\n wide: ['Before Christ', 'Anno Domini']\n};\nvar quarterValues = {\n narrow: ['1', '2', '3', '4'],\n abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'],\n wide: ['1st quarter', '2nd quarter', '3rd quarter', '4th quarter']\n};\n\n// Note: in English, the names of days of the week and months are capitalized.\n// If you are making a new locale based on this one, check if the same is true for the language you're working on.\n// Generally, formatted dates should look like they are in the middle of a sentence,\n// e.g. in Spanish language the weekdays and months should be in the lowercase.\nvar monthValues = {\n narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],\n abbreviated: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n wide: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']\n};\nvar dayValues = {\n narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],\n short: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n abbreviated: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n wide: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']\n};\nvar dayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n }\n};\nvar formattingDayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n }\n};\nvar ordinalNumber = function ordinalNumber(dirtyNumber, _options) {\n var number = Number(dirtyNumber);\n\n // If ordinal numbers depend on context, for example,\n // if they are different for different grammatical genders,\n // use `options.unit`.\n //\n // `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',\n // 'day', 'hour', 'minute', 'second'.\n\n var rem100 = number % 100;\n if (rem100 > 20 || rem100 < 10) {\n switch (rem100 % 10) {\n case 1:\n return number + 'st';\n case 2:\n return number + 'nd';\n case 3:\n return number + 'rd';\n }\n }\n return number + 'th';\n};\nvar localize = {\n ordinalNumber: ordinalNumber,\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: 'wide'\n }),\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: 'wide',\n argumentCallback: function argumentCallback(quarter) {\n return quarter - 1;\n }\n }),\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: 'wide'\n }),\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: 'wide'\n }),\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: 'wide',\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: 'wide'\n })\n};\nexport default localize;","export default function buildMatchFn(args) {\n return function (string) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var width = options.width;\n var matchPattern = width && args.matchPatterns[width] || args.matchPatterns[args.defaultMatchWidth];\n var matchResult = string.match(matchPattern);\n if (!matchResult) {\n return null;\n }\n var matchedString = matchResult[0];\n var parsePatterns = width && args.parsePatterns[width] || args.parsePatterns[args.defaultParseWidth];\n var key = Array.isArray(parsePatterns) ? findIndex(parsePatterns, function (pattern) {\n return pattern.test(matchedString);\n }) : findKey(parsePatterns, function (pattern) {\n return pattern.test(matchedString);\n });\n var value;\n value = args.valueCallback ? args.valueCallback(key) : key;\n value = options.valueCallback ? options.valueCallback(value) : value;\n var rest = string.slice(matchedString.length);\n return {\n value: value,\n rest: rest\n };\n };\n}\nfunction findKey(object, predicate) {\n for (var key in object) {\n if (object.hasOwnProperty(key) && predicate(object[key])) {\n return key;\n }\n }\n return undefined;\n}\nfunction findIndex(array, predicate) {\n for (var key = 0; key < array.length; key++) {\n if (predicate(array[key])) {\n return key;\n }\n }\n return undefined;\n}","export default function buildMatchPatternFn(args) {\n return function (string) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var matchResult = string.match(args.matchPattern);\n if (!matchResult) return null;\n var matchedString = matchResult[0];\n var parseResult = string.match(args.parsePattern);\n if (!parseResult) return null;\n var value = args.valueCallback ? args.valueCallback(parseResult[0]) : parseResult[0];\n value = options.valueCallback ? options.valueCallback(value) : value;\n var rest = string.slice(matchedString.length);\n return {\n value: value,\n rest: rest\n };\n };\n}","import buildMatchFn from \"../../../_lib/buildMatchFn/index.js\";\nimport buildMatchPatternFn from \"../../../_lib/buildMatchPatternFn/index.js\";\nvar matchOrdinalNumberPattern = /^(\\d+)(th|st|nd|rd)?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n narrow: /^(b|a)/i,\n abbreviated: /^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)/i,\n wide: /^(before christ|before common era|anno domini|common era)/i\n};\nvar parseEraPatterns = {\n any: [/^b/i, /^(a|c)/i]\n};\nvar matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^q[1234]/i,\n wide: /^[1234](th|st|nd|rd)? quarter/i\n};\nvar parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i]\n};\nvar matchMonthPatterns = {\n narrow: /^[jfmasond]/i,\n abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,\n wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i\n};\nvar parseMonthPatterns = {\n narrow: [/^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],\n any: [/^ja/i, /^f/i, /^mar/i, /^ap/i, /^may/i, /^jun/i, /^jul/i, /^au/i, /^s/i, /^o/i, /^n/i, /^d/i]\n};\nvar matchDayPatterns = {\n narrow: /^[smtwf]/i,\n short: /^(su|mo|tu|we|th|fr|sa)/i,\n abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,\n wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i\n};\nvar parseDayPatterns = {\n narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],\n any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i]\n};\nvar matchDayPeriodPatterns = {\n narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,\n any: /^([ap]\\.?\\s?m\\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i\n};\nvar parseDayPeriodPatterns = {\n any: {\n am: /^a/i,\n pm: /^p/i,\n midnight: /^mi/i,\n noon: /^no/i,\n morning: /morning/i,\n afternoon: /afternoon/i,\n evening: /evening/i,\n night: /night/i\n }\n};\nvar match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: function valueCallback(value) {\n return parseInt(value, 10);\n }\n }),\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseEraPatterns,\n defaultParseWidth: 'any'\n }),\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: 'any',\n valueCallback: function valueCallback(index) {\n return index + 1;\n }\n }),\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: 'any'\n }),\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseDayPatterns,\n defaultParseWidth: 'any'\n }),\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: 'any',\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: 'any'\n })\n};\nexport default match;","import formatDistance from \"./_lib/formatDistance/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\nimport formatRelative from \"./_lib/formatRelative/index.js\";\nimport localize from \"./_lib/localize/index.js\";\nimport match from \"./_lib/match/index.js\";\n/**\n * @type {Locale}\n * @category Locales\n * @summary English locale (United States).\n * @language English\n * @iso-639-2 eng\n * @author Sasha Koss [@kossnocorp]{@link https://github.com/kossnocorp}\n * @author Lesha Koss [@leshakoss]{@link https://github.com/leshakoss}\n */\nvar locale = {\n code: 'en-US',\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 0 /* Sunday */,\n firstWeekContainsDate: 1\n }\n};\nexport default locale;","import defaultLocale from \"../../locale/en-US/index.js\";\nexport default defaultLocale;","import isValid from \"../isValid/index.js\";\nimport subMilliseconds from \"../subMilliseconds/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport formatters from \"../_lib/format/formatters/index.js\";\nimport longFormatters from \"../_lib/format/longFormatters/index.js\";\nimport getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport { isProtectedDayOfYearToken, isProtectedWeekYearToken, throwProtectedError } from \"../_lib/protectedTokens/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getDefaultOptions } from \"../_lib/defaultOptions/index.js\";\nimport defaultLocale from \"../_lib/defaultLocale/index.js\"; // This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\nvar formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g;\n\n// This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\nvar longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\nvar escapedStringRegExp = /^'([^]*?)'?$/;\nvar doubleQuoteRegExp = /''/g;\nvar unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n\n/**\n * @name format\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format. The result may vary by locale.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * The characters wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n * (see the last example)\n *\n * Format of the string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 7 below the table).\n *\n * Accepted patterns:\n * | Unit | Pattern | Result examples | Notes |\n * |---------------------------------|---------|-----------------------------------|-------|\n * | Era | G..GGG | AD, BC | |\n * | | GGGG | Anno Domini, Before Christ | 2 |\n * | | GGGGG | A, B | |\n * | Calendar year | y | 44, 1, 1900, 2017 | 5 |\n * | | yo | 44th, 1st, 0th, 17th | 5,7 |\n * | | yy | 44, 01, 00, 17 | 5 |\n * | | yyy | 044, 001, 1900, 2017 | 5 |\n * | | yyyy | 0044, 0001, 1900, 2017 | 5 |\n * | | yyyyy | ... | 3,5 |\n * | Local week-numbering year | Y | 44, 1, 1900, 2017 | 5 |\n * | | Yo | 44th, 1st, 1900th, 2017th | 5,7 |\n * | | YY | 44, 01, 00, 17 | 5,8 |\n * | | YYY | 044, 001, 1900, 2017 | 5 |\n * | | YYYY | 0044, 0001, 1900, 2017 | 5,8 |\n * | | YYYYY | ... | 3,5 |\n * | ISO week-numbering year | R | -43, 0, 1, 1900, 2017 | 5,7 |\n * | | RR | -43, 00, 01, 1900, 2017 | 5,7 |\n * | | RRR | -043, 000, 001, 1900, 2017 | 5,7 |\n * | | RRRR | -0043, 0000, 0001, 1900, 2017 | 5,7 |\n * | | RRRRR | ... | 3,5,7 |\n * | Extended year | u | -43, 0, 1, 1900, 2017 | 5 |\n * | | uu | -43, 01, 1900, 2017 | 5 |\n * | | uuu | -043, 001, 1900, 2017 | 5 |\n * | | uuuu | -0043, 0001, 1900, 2017 | 5 |\n * | | uuuuu | ... | 3,5 |\n * | Quarter (formatting) | Q | 1, 2, 3, 4 | |\n * | | Qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | QQ | 01, 02, 03, 04 | |\n * | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | q | 1, 2, 3, 4 | |\n * | | qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | qq | 01, 02, 03, 04 | |\n * | | qqq | Q1, Q2, Q3, Q4 | |\n * | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | qqqqq | 1, 2, 3, 4 | 4 |\n * | Month (formatting) | M | 1, 2, ..., 12 | |\n * | | Mo | 1st, 2nd, ..., 12th | 7 |\n * | | MM | 01, 02, ..., 12 | |\n * | | MMM | Jan, Feb, ..., Dec | |\n * | | MMMM | January, February, ..., December | 2 |\n * | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | L | 1, 2, ..., 12 | |\n * | | Lo | 1st, 2nd, ..., 12th | 7 |\n * | | LL | 01, 02, ..., 12 | |\n * | | LLL | Jan, Feb, ..., Dec | |\n * | | LLLL | January, February, ..., December | 2 |\n * | | LLLLL | J, F, ..., D | |\n * | Local week of year | w | 1, 2, ..., 53 | |\n * | | wo | 1st, 2nd, ..., 53th | 7 |\n * | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | I | 1, 2, ..., 53 | 7 |\n * | | Io | 1st, 2nd, ..., 53th | 7 |\n * | | II | 01, 02, ..., 53 | 7 |\n * | Day of month | d | 1, 2, ..., 31 | |\n * | | do | 1st, 2nd, ..., 31st | 7 |\n * | | dd | 01, 02, ..., 31 | |\n * | Day of year | D | 1, 2, ..., 365, 366 | 9 |\n * | | Do | 1st, 2nd, ..., 365th, 366th | 7 |\n * | | DD | 01, 02, ..., 365, 366 | 9 |\n * | | DDD | 001, 002, ..., 365, 366 | |\n * | | DDDD | ... | 3 |\n * | Day of week (formatting) | E..EEE | Mon, Tue, Wed, ..., Sun | |\n * | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | EEEEE | M, T, W, T, F, S, S | |\n * | | EEEEEE | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | ISO day of week (formatting) | i | 1, 2, 3, ..., 7 | 7 |\n * | | io | 1st, 2nd, ..., 7th | 7 |\n * | | ii | 01, 02, ..., 07 | 7 |\n * | | iii | Mon, Tue, Wed, ..., Sun | 7 |\n * | | iiii | Monday, Tuesday, ..., Sunday | 2,7 |\n * | | iiiii | M, T, W, T, F, S, S | 7 |\n * | | iiiiii | Mo, Tu, We, Th, Fr, Sa, Su | 7 |\n * | Local day of week (formatting) | e | 2, 3, 4, ..., 1 | |\n * | | eo | 2nd, 3rd, ..., 1st | 7 |\n * | | ee | 02, 03, ..., 01 | |\n * | | eee | Mon, Tue, Wed, ..., Sun | |\n * | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | eeeee | M, T, W, T, F, S, S | |\n * | | eeeeee | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | Local day of week (stand-alone) | c | 2, 3, 4, ..., 1 | |\n * | | co | 2nd, 3rd, ..., 1st | 7 |\n * | | cc | 02, 03, ..., 01 | |\n * | | ccc | Mon, Tue, Wed, ..., Sun | |\n * | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | ccccc | M, T, W, T, F, S, S | |\n * | | cccccc | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | AM, PM | a..aa | AM, PM | |\n * | | aaa | am, pm | |\n * | | aaaa | a.m., p.m. | 2 |\n * | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | b..bb | AM, PM, noon, midnight | |\n * | | bbb | am, pm, noon, midnight | |\n * | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | bbbbb | a, p, n, mi | |\n * | Flexible day period | B..BBB | at night, in the morning, ... | |\n * | | BBBB | at night, in the morning, ... | 2 |\n * | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | h | 1, 2, ..., 11, 12 | |\n * | | ho | 1st, 2nd, ..., 11th, 12th | 7 |\n * | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | H | 0, 1, 2, ..., 23 | |\n * | | Ho | 0th, 1st, 2nd, ..., 23rd | 7 |\n * | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | K | 1, 2, ..., 11, 0 | |\n * | | Ko | 1st, 2nd, ..., 11th, 0th | 7 |\n * | | KK | 01, 02, ..., 11, 00 | |\n * | Hour [1-24] | k | 24, 1, 2, ..., 23 | |\n * | | ko | 24th, 1st, 2nd, ..., 23rd | 7 |\n * | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | m | 0, 1, ..., 59 | |\n * | | mo | 0th, 1st, ..., 59th | 7 |\n * | | mm | 00, 01, ..., 59 | |\n * | Second | s | 0, 1, ..., 59 | |\n * | | so | 0th, 1st, ..., 59th | 7 |\n * | | ss | 00, 01, ..., 59 | |\n * | Fraction of second | S | 0, 1, ..., 9 | |\n * | | SS | 00, 01, ..., 99 | |\n * | | SSS | 000, 001, ..., 999 | |\n * | | SSSS | ... | 3 |\n * | Timezone (ISO-8601 w/ Z) | X | -08, +0530, Z | |\n * | | XX | -0800, +0530, Z | |\n * | | XXX | -08:00, +05:30, Z | |\n * | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | x | -08, +0530, +00 | |\n * | | xx | -0800, +0530, +0000 | |\n * | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Timezone (GMT) | O...OOO | GMT-8, GMT+5:30, GMT+0 | |\n * | | OOOO | GMT-08:00, GMT+05:30, GMT+00:00 | 2 |\n * | Timezone (specific non-locat.) | z...zzz | GMT-8, GMT+5:30, GMT+0 | 6 |\n * | | zzzz | GMT-08:00, GMT+05:30, GMT+00:00 | 2,6 |\n * | Seconds timestamp | t | 512969520 | 7 |\n * | | tt | ... | 3,7 |\n * | Milliseconds timestamp | T | 512969520900 | 7 |\n * | | TT | ... | 3,7 |\n * | Long localized date | P | 04/29/1453 | 7 |\n * | | PP | Apr 29, 1453 | 7 |\n * | | PPP | April 29th, 1453 | 7 |\n * | | PPPP | Friday, April 29th, 1453 | 2,7 |\n * | Long localized time | p | 12:00 AM | 7 |\n * | | pp | 12:00:00 AM | 7 |\n * | | ppp | 12:00:00 AM GMT+2 | 7 |\n * | | pppp | 12:00:00 AM GMT+02:00 | 2,7 |\n * | Combination of date and time | Pp | 04/29/1453, 12:00 AM | 7 |\n * | | PPpp | Apr 29, 1453, 12:00:00 AM | 7 |\n * | | PPPppp | April 29th, 1453 at ... | 7 |\n * | | PPPPpppp| Friday, April 29th, 1453 at ... | 2,7 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table (e.g. `EEEEEEEEEEE`)\n * the output will be the same as default pattern for this unit, usually\n * the longest one (in case of ISO weekdays, `EEEE`). Default patterns for units\n * are marked with \"2\" in the last column of the table.\n *\n * `format(new Date(2017, 10, 6), 'MMM') //=> 'Nov'`\n *\n * `format(new Date(2017, 10, 6), 'MMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMM') //=> 'N'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMMM') //=> 'November'`\n *\n * 3. Some patterns could be unlimited length (such as `yyyyyyyy`).\n * The output will be padded with zeros to match the length of the pattern.\n *\n * `format(new Date(2017, 10, 6), 'yyyyyyyy') //=> '00002017'`\n *\n * 4. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 5. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` always returns the last two digits of a year,\n * while `uu` pads single digit years to 2 characters and returns other years unchanged:\n *\n * | Year | `yy` | `uu` |\n * |------|------|------|\n * | 1 | 01 | 01 |\n * | 14 | 14 | 14 |\n * | 376 | 76 | 376 |\n * | 1453 | 53 | 1453 |\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [getISOWeekYear]{@link https://date-fns.org/docs/getISOWeekYear}\n * and [getWeekYear]{@link https://date-fns.org/docs/getWeekYear}).\n *\n * 6. Specific non-location timezones are currently unavailable in `date-fns`,\n * so right now these tokens fall back to GMT timezones.\n *\n * 7. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `t`: seconds timestamp\n * - `T`: milliseconds timestamp\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 8. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n * You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 9. `D` and `DD` tokens represent days of the year but they are often confused with days of the month.\n * You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * @param {Date|Number} date - the original date\n * @param {String} format - the string of tokens\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {Number} [options.firstWeekContainsDate=1] - the day of January, which is\n * @param {Boolean} [options.useAdditionalWeekYearTokens=false] - if true, allows usage of the week-numbering year tokens `YY` and `YYYY`;\n * see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @param {Boolean} [options.useAdditionalDayOfYearTokens=false] - if true, allows usage of the day of year tokens `D` and `DD`;\n * see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @returns {String} the formatted date string\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `options.locale` must contain `localize` property\n * @throws {RangeError} `options.locale` must contain `formatLong` property\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} format string contains an unescaped latin alphabet character\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * const result = format(new Date(2014, 1, 11), 'MM/dd/yyyy')\n * //=> '02/11/2014'\n *\n * @example\n * // Represent 2 July 2014 in Esperanto:\n * import { eoLocale } from 'date-fns/locale/eo'\n * const result = format(new Date(2014, 6, 2), \"do 'de' MMMM yyyy\", {\n * locale: eoLocale\n * })\n * //=> '2-a de julio 2014'\n *\n * @example\n * // Escape string by single quote characters:\n * const result = format(new Date(2014, 6, 2, 15), \"h 'o''clock'\")\n * //=> \"3 o'clock\"\n */\n\nexport default function format(dirtyDate, dirtyFormatStr, options) {\n var _ref, _options$locale, _ref2, _ref3, _ref4, _options$firstWeekCon, _options$locale2, _options$locale2$opti, _defaultOptions$local, _defaultOptions$local2, _ref5, _ref6, _ref7, _options$weekStartsOn, _options$locale3, _options$locale3$opti, _defaultOptions$local3, _defaultOptions$local4;\n requiredArgs(2, arguments);\n var formatStr = String(dirtyFormatStr);\n var defaultOptions = getDefaultOptions();\n var locale = (_ref = (_options$locale = options === null || options === void 0 ? void 0 : options.locale) !== null && _options$locale !== void 0 ? _options$locale : defaultOptions.locale) !== null && _ref !== void 0 ? _ref : defaultLocale;\n var firstWeekContainsDate = toInteger((_ref2 = (_ref3 = (_ref4 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale2 = options.locale) === null || _options$locale2 === void 0 ? void 0 : (_options$locale2$opti = _options$locale2.options) === null || _options$locale2$opti === void 0 ? void 0 : _options$locale2$opti.firstWeekContainsDate) !== null && _ref4 !== void 0 ? _ref4 : defaultOptions.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : 1);\n\n // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n var weekStartsOn = toInteger((_ref5 = (_ref6 = (_ref7 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale3 = options.locale) === null || _options$locale3 === void 0 ? void 0 : (_options$locale3$opti = _options$locale3.options) === null || _options$locale3$opti === void 0 ? void 0 : _options$locale3$opti.weekStartsOn) !== null && _ref7 !== void 0 ? _ref7 : defaultOptions.weekStartsOn) !== null && _ref6 !== void 0 ? _ref6 : (_defaultOptions$local3 = defaultOptions.locale) === null || _defaultOptions$local3 === void 0 ? void 0 : (_defaultOptions$local4 = _defaultOptions$local3.options) === null || _defaultOptions$local4 === void 0 ? void 0 : _defaultOptions$local4.weekStartsOn) !== null && _ref5 !== void 0 ? _ref5 : 0);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n if (!locale.localize) {\n throw new RangeError('locale must contain localize property');\n }\n if (!locale.formatLong) {\n throw new RangeError('locale must contain formatLong property');\n }\n var originalDate = toDate(dirtyDate);\n if (!isValid(originalDate)) {\n throw new RangeError('Invalid time value');\n }\n\n // Convert the date in system timezone to the same date in UTC+00:00 timezone.\n // This ensures that when UTC functions will be implemented, locales will be compatible with them.\n // See an issue about UTC functions: https://github.com/date-fns/date-fns/issues/376\n var timezoneOffset = getTimezoneOffsetInMilliseconds(originalDate);\n var utcDate = subMilliseconds(originalDate, timezoneOffset);\n var formatterOptions = {\n firstWeekContainsDate: firstWeekContainsDate,\n weekStartsOn: weekStartsOn,\n locale: locale,\n _originalDate: originalDate\n };\n var result = formatStr.match(longFormattingTokensRegExp).map(function (substring) {\n var firstCharacter = substring[0];\n if (firstCharacter === 'p' || firstCharacter === 'P') {\n var longFormatter = longFormatters[firstCharacter];\n return longFormatter(substring, locale.formatLong);\n }\n return substring;\n }).join('').match(formattingTokensRegExp).map(function (substring) {\n // Replace two single quote characters with one single quote character\n if (substring === \"''\") {\n return \"'\";\n }\n var firstCharacter = substring[0];\n if (firstCharacter === \"'\") {\n return cleanEscapedString(substring);\n }\n var formatter = formatters[firstCharacter];\n if (formatter) {\n if (!(options !== null && options !== void 0 && options.useAdditionalWeekYearTokens) && isProtectedWeekYearToken(substring)) {\n throwProtectedError(substring, dirtyFormatStr, String(dirtyDate));\n }\n if (!(options !== null && options !== void 0 && options.useAdditionalDayOfYearTokens) && isProtectedDayOfYearToken(substring)) {\n throwProtectedError(substring, dirtyFormatStr, String(dirtyDate));\n }\n return formatter(utcDate, substring, locale.localize, formatterOptions);\n }\n if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n throw new RangeError('Format string contains an unescaped latin alphabet character `' + firstCharacter + '`');\n }\n return substring;\n }).join('');\n return result;\n}\nfunction cleanEscapedString(input) {\n var matched = input.match(escapedStringRegExp);\n if (!matched) {\n return input;\n }\n return matched[1].replace(doubleQuoteRegExp, \"'\");\n}","import React, { Component, createRef } from 'react';\nimport isEqual from 'react-fast-compare';\nimport PropTypes from 'prop-types';\n\nimport Column from '../../../../layout/Column';\nimport Row from '../../../../layout/Row';\nimport Button from '../../../../components/Button';\n\nexport default class EditableListForm extends Component {\n static propTypes = {\n addValueOnFieldChange: PropTypes.bool,\n noLabels: PropTypes.bool,\n buttonName: PropTypes.string,\n buttonStyle: PropTypes.string,\n components: PropTypes.instanceOf(Array),\n displayType: PropTypes.string,\n disabled: PropTypes.bool,\n getMainFormButtonWidth: PropTypes.func,\n error: PropTypes.string,\n errorPersist: PropTypes.bool,\n onSubmit: PropTypes.func,\n validate: PropTypes.func,\n validationmessage: PropTypes.string,\n };\n\n static getMainFormValue(components) {\n const mainFormValue = new Array(components.length);\n\n components.forEach((component, index) => {\n mainFormValue[index] = component.props.value || undefined;\n });\n\n return mainFormValue;\n }\n\n constructor(props) {\n super(props);\n const {\n components,\n } = props;\n\n this.submitButtonRef = createRef();\n this.handleOnChange = this.handleOnChange.bind(this);\n this.submitForm = this.submitForm.bind(this);\n\n this.state = {\n components,\n errors: {},\n mainError: null,\n mainFormValue: EditableListForm.getMainFormValue(components),\n refs: [],\n };\n }\n\n componentDidMount() {\n const {\n addValueOnFieldChange,\n getMainFormButtonWidth,\n } = this.props;\n this.createRefs();\n\n if (getMainFormButtonWidth) {\n getMainFormButtonWidth(\n !addValueOnFieldChange\n ? this.submitButtonRef.current.clientWidth\n : 0,\n );\n }\n }\n\n static getDerivedStateFromProps(nextProps, prevState) {\n const state = {};\n const {\n components: propsComponents,\n } = nextProps;\n\n const {\n components: stateComponents,\n } = prevState;\n if (\n !isEqual(propsComponents, stateComponents)\n && !isEqual(\n EditableListForm.getMainFormValue(propsComponents),\n EditableListForm.getMainFormValue(stateComponents),\n )\n ) {\n state.mainFormValue = EditableListForm.getMainFormValue(propsComponents);\n state.components = propsComponents;\n }\n\n return state;\n }\n\n getFormCssClasses() {\n const { noLabels } = this.props;\n const cssClasses = ['tyk-editable-list__form'];\n\n if (noLabels) {\n cssClasses.push('no-labels');\n }\n\n return cssClasses.join(' ');\n }\n\n getButtonClassName() {\n const { buttonStyle, displayType } = this.props;\n const cssClasses = [];\n\n if (buttonStyle) {\n cssClasses.push(buttonStyle);\n }\n\n if (displayType) {\n cssClasses.push(displayType);\n }\n\n return cssClasses.join(' ');\n }\n\n getComponentsError(component) {\n const {\n error,\n errors,\n mainError,\n } = this.state;\n\n if (error || mainError) {\n errors[component.props.name] = 'true';\n } else if (!(error || mainError) && errors[component.props.name] === 'true') {\n delete errors[component.props.name];\n }\n\n return errors[component.props.name] ? errors[component.props.name].toString() : undefined;\n }\n\n createRefs() {\n const { components } = this.props;\n const refs = [];\n\n components.forEach(() => {\n refs.push(createRef());\n });\n\n this.setState({\n refs,\n });\n }\n\n validateValue(value, props) {\n const { mainError, errors } = this.state;\n const { error, errorPersist } = this.props;\n\n const validatorsNames = props.validate ? Object.keys(props.validate) : [];\n // if there is a general form error don't take field errors into consideration\n const tempState = {\n errors: (error || mainError) ? {} : Object.assign({}, errors),\n };\n let ok = true;\n\n // if the error should stay after changing fields values don't take actions\n if (errorPersist) {\n return tempState;\n }\n\n // validate each field from the form\n for (let i = 0; i < validatorsNames.length; i += 1) {\n const validator = props.validate[validatorsNames[i]];\n if (validator(value)) {\n tempState.errors[props.name] = props.validationmessages[validatorsNames[i]];\n ok = false;\n break;\n }\n }\n\n // if the field is ok delete its error\n if (ok) {\n delete tempState.errors[props.name];\n }\n\n tempState.mainError = null;\n\n return tempState;\n }\n\n hasMainFormErrors(errors) {\n const { components, errorPersist } = this.props;\n const { mainFormValue } = this.state;\n const tempState = {\n errors: Object.assign({}, errors),\n };\n\n if (errorPersist && mainFormValue.indexOf(undefined) === -1) {\n return false;\n }\n\n if (Object.keys(tempState.errors).length > 0) {\n return true;\n }\n\n components.forEach((component, index) => {\n tempState.errors = Object.assign(\n {},\n tempState.errors,\n this.validateValue(mainFormValue[index], component.props).errors,\n );\n });\n\n return Object.keys(tempState.errors).length > 0;\n }\n\n handleOnChange(component, index, value) {\n const { addValueOnFieldChange } = this.props;\n let tempState = this.state;\n\n tempState = Object.assign({}, tempState, this.validateValue(value, component.props));\n\n if (!tempState.errors[component.props.name]) {\n tempState.mainFormValue[index] = value;\n\n if (component.props.onChange) {\n component.props.onChange(value);\n }\n }\n\n this.setState(previousState => Object.assign({}, previousState, tempState), () => {\n if (addValueOnFieldChange) {\n this.submitForm();\n }\n });\n }\n\n resetForm() {\n const { refs } = this.state;\n const {\n components,\n } = this.props;\n\n refs.forEach((ref) => {\n if (ref.current?.reset) {\n ref.current.reset();\n }\n });\n\n this.setState({\n errors: {},\n mainError: null,\n mainFormValue: EditableListForm.getMainFormValue(components),\n });\n }\n\n showMainError(error) {\n this.setState({\n mainError: error,\n });\n }\n\n submitForm() {\n const { errors, mainFormValue } = this.state;\n const {\n errorPersist, onSubmit, validate, validationmessage,\n } = this.props;\n\n if (errorPersist) {\n onSubmit(mainFormValue);\n this.resetForm();\n }\n\n if (\n Object.keys(errors).length === 0\n && (onSubmit && typeof onSubmit === 'function')\n ) {\n if (validate) {\n if (validate(mainFormValue)) {\n this.showMainError(validationmessage);\n } else {\n onSubmit(mainFormValue);\n this.resetForm();\n }\n } else {\n onSubmit(mainFormValue);\n this.resetForm();\n }\n }\n }\n\n render() {\n const {\n addValueOnFieldChange, components, buttonName, disabled, displayType, error,\n } = this.props;\n const {\n mainError, refs, errors,\n } = this.state;\n\n return (\n
    \n
    \n \n {\n components.map((component, index) => {\n const ComponentName = component.name;\n const {\n onChange, value, ...rest\n } = component.props;\n\n return (\n \n \n \n );\n })\n }\n \n {\n !addValueOnFieldChange\n ? (\n \n \n { buttonName || 'ADD' }\n \n \n )\n : null\n }\n
    \n {\n error || mainError\n ? (\n
    \n

    \n { error || mainError }\n

    \n
    \n )\n : null\n }\n
    \n );\n }\n}\n","import React, { Component, Fragment, createRef } from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport { fromJS } from 'immutable';\n\nimport format from 'date-fns/format';\nimport isDate from 'date-fns/isDate';\n\nimport EditableListForm from './js/EditableListForm';\nimport Column from '../../../layout/Column';\nimport Icon from '../../../components/Icon';\nimport Row from '../../../layout/Row';\n\nexport default class EditableList extends Component {\n static propTypes = {\n addValueOnFieldChange: PropTypes.bool,\n disabled: PropTypes.bool,\n error: PropTypes.string,\n config: PropTypes.instanceOf(Object),\n onChange: PropTypes.func,\n label: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.func,\n PropTypes.string,\n ]),\n value: PropTypes.oneOfType([\n PropTypes.instanceOf(Array),\n PropTypes.instanceOf(Object),\n ]),\n };\n\n static getItemListValue(itemValue) {\n let tempValue = null;\n\n if (typeof itemValue === 'string') {\n tempValue = itemValue;\n }\n\n if (Object.prototype.toString.call(itemValue) === '[object Object]') {\n tempValue = itemValue.name;\n }\n\n if (isDate(itemValue)) {\n tempValue = format(itemValue, 'dd/MM/yyyy');\n }\n\n return tempValue;\n }\n\n static getListItemCssClass(displayType) {\n const cssClasses = [];\n\n if (displayType === 'inline') {\n cssClasses.push('tyk-editable-list-item--inline');\n }\n\n return cssClasses.join(' ');\n }\n\n constructor(props) {\n super(props);\n const {\n value,\n } = this.props;\n\n this.state = {\n initialValue: value || '',\n value: value || [],\n buttonWidth: 0,\n };\n\n this.startIndex = 1;\n\n this.handleFormSubmit = this.handleFormSubmit.bind(this);\n this.getMainFormButtonWidth = this.getMainFormButtonWidth.bind(this);\n this.dropdownListItemRef = createRef();\n }\n\n static getDerivedStateFromProps(nextProps, prevState) {\n const state = {};\n\n if (\n nextProps.value && JSON.stringify(nextProps.value)\n !== JSON.stringify(prevState.initialValue)\n ) {\n state.value = nextProps.value || [];\n state.initialValue = nextProps.value || '';\n }\n\n return state.value ? state : null;\n }\n\n getListItemsCssClass(displayType) {\n const { config } = this.props;\n const cssClasses = ['tyk-editable-list-items'];\n\n cssClasses.push(config.displayType || 'table');\n\n if (displayType === 'inline') {\n cssClasses.push('tyk-editable-list-items--inline');\n }\n\n return cssClasses.join(' ');\n }\n\n getFormInputKey() {\n this.startIndex += 1;\n return this.startIndex;\n }\n\n // generate list item value's based on the display types\n // table, inline, list\n getListItemText(itemData) {\n const { config } = this.props;\n let value = null;\n\n switch (config.displayType) {\n case 'list':\n case 'inline': {\n const itemText = itemData.value.reduce((prevValue, itemValue, index) => {\n const tempValue = EditableList.getItemListValue(itemValue);\n let separator = ', ';\n\n if (index === itemData.value.length - 1) {\n separator = '';\n }\n\n return prevValue + tempValue + separator;\n }, '');\n\n value = itemText;\n\n break;\n }\n default:\n value = (\n \n {\n config.components.map((component, index) => (\n \n { EditableList.getItemListValue(itemData.value[index]) }\n \n ))\n }\n \n );\n\n break;\n }\n\n return value;\n }\n\n getMainFormButtonWidth(value) {\n this.setState({\n buttonWidth: value,\n });\n }\n\n setItemEditMode(index) {\n const newValues = this.closeListItems();\n\n this.setState((previousState) => {\n const tempState = Object.assign({}, previousState);\n tempState.value = newValues;\n tempState.value[index].editMode = !tempState.value[index].editMode;\n\n return tempState;\n });\n }\n\n isInList(index, itemValue) {\n const { value } = this.state;\n let ok = false;\n\n value.forEach((item, itemIndex) => {\n if (JSON.stringify(item.value) === JSON.stringify(itemValue)) {\n if (index >= 0 && itemIndex === index) {\n ok = false;\n } else {\n ok = true;\n }\n }\n });\n\n return ok;\n }\n\n addValues(newValue) {\n const { value } = this.state;\n const { config } = this.props;\n const itemValue = {\n editMode: false,\n value: newValue,\n };\n const tempState = {\n value: value.slice(0),\n };\n\n if (config.children) {\n itemValue.children = [];\n }\n\n tempState.value.push(itemValue);\n\n return tempState;\n }\n\n removeListItem(index) {\n let removedItem;\n this.setState((previousState) => {\n const valueArr = previousState.value.slice(0);\n removedItem = valueArr.splice(index, 1);\n\n return {\n value: valueArr,\n };\n }, () => {\n this.triggerOnChange(index, removedItem, null);\n });\n }\n\n handleFormSubmit(value) {\n const tempState = this.addValues(value);\n this.setState(previousState => Object.assign({}, previousState, tempState), () => {\n this.triggerOnChange(tempState.value.length - 1, null, value);\n });\n }\n\n handleItemUpdate(index, value) {\n let prevValue;\n this.setState((previousState) => {\n const tempState = Object.assign({}, previousState);\n prevValue = fromJS(tempState.value[index].value).toJS();\n tempState.value[index].value = value;\n tempState.value[index].editMode = false;\n\n return tempState;\n }, () => {\n this.triggerOnChange(index, prevValue, value);\n });\n }\n\n handleChildrenOnChange(index, value) {\n let prevValue;\n this.setState((previousState) => {\n const tempState = Object.assign({}, previousState);\n prevValue = fromJS(tempState.value[index].children).toJS();\n tempState.value[index].children = value;\n\n return tempState;\n }, () => {\n this.triggerOnChange(index, prevValue, value);\n });\n }\n\n closeListItems() {\n const { value } = this.state;\n\n const newValues = value.map((itemValue) => {\n const tempItemValue = Object.assign({}, itemValue);\n\n if (tempItemValue.editMode) {\n tempItemValue.editMode = false;\n return tempItemValue;\n }\n\n return tempItemValue;\n });\n\n return newValues;\n }\n\n triggerOnChange(index, prevValue, nextValue) {\n const { onChange } = this.props;\n const { value } = this.state;\n\n if (onChange && typeof onChange === 'function') {\n onChange(((value.length) ? value : null), index, prevValue, nextValue);\n }\n }\n\n genListItem(itemData, index) {\n const { config, disabled } = this.props;\n const { buttonWidth, value } = this.state;\n\n const clonedComponents = fromJS(config.components).toJS();\n\n itemData.value.forEach((itemValue, itemIndex) => {\n clonedComponents[itemIndex].props.value = itemValue;\n });\n\n return (\n \n \n {\n !itemData.editMode\n ? (\n \n { this.getListItemText(itemData, index) }\n \n \n \n \n \n )\n : (\n \n \n \n \n )\n }\n \n {\n config.children\n ? (\n \n )\n : null\n }\n \n );\n }\n\n genList() {\n const { config } = this.props;\n const { buttonWidth, value } = this.state;\n\n if (!value || value.length === 0) {\n return null;\n }\n\n return (\n \n {\n config.displayType === 'table' || !config.displayType\n ? (\n \n \n {\n config.components.map((component, index) => (\n \n { component.props.label }\n \n ))\n }\n \n \n )\n : null\n }\n
      \n {\n value.map((itemData, index) => this.genListItem(itemData, index))\n }\n
    \n
    \n );\n }\n\n render() {\n const {\n addValueOnFieldChange, config, error, disabled, label,\n } = this.props;\n const appendToElement = document.querySelector(config.appendTo) || document.querySelector('body');\n\n return (\n
    \n {\n label\n ? \n : null\n }\n \n {\n config.appendTo\n ? ReactDOM.createPortal(\n this.genList(),\n appendToElement,\n )\n : this.genList()\n }\n
    \n );\n }\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport Button from '../../../components/Button';\n\nconst Header = ({\n label, addButtonName, onAddRow, disabled, readOnly,\n}) => (\n
    \n {\n label\n ? \n : null\n }\n {!disabled && !readOnly && (\n \n {addButtonName || 'Add'}\n \n )}\n
    \n);\n\nHeader.propTypes = {\n disabled: PropTypes.bool,\n readOnly: PropTypes.bool,\n onAddRow: PropTypes.func,\n addButtonName: PropTypes.string,\n label: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.element,\n PropTypes.node,\n ]),\n};\n\nexport default Header;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nconst ListHeader = ({\n fields,\n readOnly,\n}) => (\n
  • \n {\n fields.map(field => (\n
    {field?.props?.label}
    \n ))\n }\n
    Delete
    \n
  • \n);\n\nListHeader.propTypes = {\n fields: PropTypes.instanceOf(Array),\n readOnly: PropTypes.bool,\n};\n\nexport default ListHeader;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Button from '../../../components/Button';\n\nconst FieldsList = ({\n fields,\n disabled,\n readOnly,\n errors,\n components,\n onChange,\n onDelete,\n value,\n rowIndex,\n}) => (\n
  • \n {\n components.map((Component, index) => {\n let field = fields[index];\n let tempField = typeof field === 'function' ? field(rowIndex, index) : field;\n return (\n /* eslint-disable-next-line */\n
    \n \n
    \n );\n })\n }\n
    \n \n
    \n
  • \n);\n\nFieldsList.propTypes = {\n disabled: PropTypes.bool,\n readOnly: PropTypes.bool,\n rowIndex: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number,\n ]),\n fields: PropTypes.instanceOf(Array),\n errors: PropTypes.instanceOf(Array),\n components: PropTypes.instanceOf(Array),\n value: PropTypes.instanceOf(Array),\n onChange: PropTypes.func,\n onDelete: PropTypes.func,\n};\n\nexport default FieldsList;\n","const validateValues = (fields, rowValues) => (rowValues || [[undefined, undefined]])?.map(\n colValue => colValue?.map(\n (value, index) => fields?.[index]?.props?.validate\n && fields[index].props.validate(value),\n ),\n);\n\nexport default validateValues;\n","import React, { useCallback, useState } from 'react';\n\nconst withValidation = Component => ({\n onChange,\n validate,\n error,\n ...rest\n}) => {\n const [internalError, setInternalError] = useState(null);\n const onFieldChange = useCallback((event) => {\n /* eslint-disable-next-line */\n const value = event?.target\n ? ['radio', 'checkbox'].includes(event.target.type)\n ? event.target.checked\n : event?.target.value\n : event;\n\n let isValid = true;\n if (validate && typeof validate === 'function') {\n const errorMsg = validate(value);\n isValid = !errorMsg;\n setInternalError(errorMsg);\n }\n\n onChange(value, isValid);\n }, [validate, onChange]);\n\n return ;\n};\n\nexport default withValidation;\n","import React, { useMemo, useState } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Header from './Header';\nimport ListHeader from './ListHeader';\nimport FieldsList from './FieldsList';\nimport validateValues from './validate-values';\nimport withValidation from './with-validation';\n\nlet id = 1;\n/* eslint-disable-next-line */\nconst getUID = prefix => `${prefix}-${id++}`;\n\n/**\n * Editable list is a component, that lists rows of form elements (can have n elements on a row),\n * and stores the values of all the rows in an Array list\n */\nconst EditableList2 = ({\n addButtonName,\n disabled,\n readOnly,\n fields,\n label,\n error,\n value = [],\n onChange = () => {},\n hideOnEmpty = true,\n wrapperClassName = '',\n}) => {\n const [internalErrors, setInteranlErrors] = useState(null);\n\n const updateRowValue = (rowIndex, fieldIndex, componentValue, isValid) => {\n const tempValueArr = !value ? [] : [...value];\n\n if (!value) {\n tempValueArr[rowIndex] = [...new Array(fields.length)];\n tempValueArr[rowIndex][fieldIndex] = componentValue;\n } else {\n const tempValue = [...tempValueArr[rowIndex]];\n tempValue[fieldIndex] = componentValue;\n tempValueArr[rowIndex] = tempValue;\n tempValueArr[rowIndex].id = value[rowIndex].id;\n }\n\n if (internalErrors?.[rowIndex]?.[fieldIndex] && isValid) {\n const tempErrors = [...internalErrors];\n const tempFieldError = [...tempErrors[rowIndex]];\n tempFieldError[fieldIndex] = null;\n tempErrors[rowIndex] = tempFieldError;\n setInteranlErrors(tempErrors);\n }\n onChange(tempValueArr);\n };\n\n const hasErrors = errors => Boolean(errors?.flat()?.filter(Boolean).length);\n\n const Components = useMemo(\n () => fields.map(field => {\n let tempField = typeof field === 'function' ? field() : field;\n\n return withValidation(tempField?.component || <>)\n }),\n [],\n );\n\n const onAddRow = () => {\n const errors = validateValues(fields, value);\n\n if (hasErrors(errors)) {\n setInteranlErrors(errors);\n return;\n }\n\n const newValue = [...new Array(fields.length)];\n newValue.id = getUID('row');\n\n onChange([\n ...value && value,\n newValue,\n ]);\n };\n\n const deleteRow = (index) => {\n if (!value) {\n return;\n }\n const tempValue = [...value];\n tempValue.splice(index, 1);\n onChange(tempValue);\n };\n\n return (\n
    \n \n {value?.length || !hideOnEmpty ? (\n
      \n {(value || [[]]).map((v, i) => (\n <>\n \n \n ))}\n \n
    \n ) : null}\n {error && error !== 'true' && error !== 'false' ? (\n

    {error}

    \n ) : null}\n
    \n );\n};\n\nEditableList2.propTypes = {\n /** Sets Editable list in edit mode.\n * If enabled all fields are disabled, the add button is hidden and delete button is disabled\n * */\n disabled: PropTypes.bool,\n /** Sets Editable list in read only mode.\n * If enabled all fields are displaying just the value,\n * the add button is hidden and delete button is disabled\n */\n readOnly: PropTypes.bool,\n /** Name of the Add button. By default has 'Add value' */\n addButtonName: PropTypes.string,\n /** Label of Editable list, is displayed above the list and inline with the Add button */\n label: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.element,\n PropTypes.node,\n ]),\n /** Array of form elements that you want the list to have\n * Each field is an object points to the Form element component that you want to use,\n * the props you want to apply on it,\n * and the size (as in width, it's like columns system, between 1 and 12)\n * Example:\n * ...\n * fields={[\n {\n component: Input2,\n styles: {\n width: \"200px\",\n },\n size: 4,\n props: {\n name: 'input',\n label: 'Claim name',\n theme: 'default rounded-corners',\n placeholder: 'Enter claim name',\n validate: formikRequired('This field is required')\n }\n },\n {\n component: Combobox2,\n size: 8,\n props: comboboxProps\n }\n ]}\n */\n fields: PropTypes.instanceOf(Array),\n /** onChange function is called everytime the value of editable list changes */\n onChange: PropTypes.func,\n /** value of editable list, wich is an Array (List of row values)\n * of Arrays (List of column values,\n * each column will have the value format depending on the component type)\n */\n value: PropTypes.oneOfType([\n PropTypes.instanceOf(Object),\n PropTypes.instanceOf(Array),\n ]),\n error: PropTypes.string,\n hideOnEmpty: PropTypes.bool,\n wrapperClassName: PropTypes.string,\n};\n\nexport default EditableList2;\n","import React, { Component, Fragment, createRef } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Icon from '../../../components/Icon';\n\nexport default class FileInput extends Component {\n static propTypes = {\n accept: PropTypes.string,\n disabled: PropTypes.bool,\n id: PropTypes.string,\n error: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.bool,\n ]),\n label: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.func,\n PropTypes.string,\n ]),\n labelwidth: PropTypes.string,\n name: PropTypes.string,\n note: PropTypes.string,\n onChange: PropTypes.func,\n placeholder: PropTypes.string,\n theme: PropTypes.string,\n value: PropTypes.instanceOf(Object),\n wrapperClassName: PropTypes.string,\n }\n\n constructor(props) {\n super(props);\n\n this.handleOnChange = this.handleOnChange.bind(this);\n this.clearValue = this.clearValue.bind(this);\n this.fileInputRef = createRef();\n }\n\n getCssClasses() {\n const {\n error, theme, labelwidth, wrapperClassName = '',\n } = this.props;\n const cssClasses = [wrapperClassName, 'tyk-form-group'];\n const themes = theme ? theme.split(' ') : [];\n\n if (themes.length) {\n themes.forEach((iTheme) => {\n cssClasses.push(`tyk-form-group--${iTheme}`);\n });\n }\n\n if (labelwidth) {\n cssClasses.push('tyk-form-group--label-has-width');\n }\n\n if (error) {\n cssClasses.push('has-error');\n }\n\n return cssClasses.join(' ');\n }\n\n getLabelStyles() {\n const { labelwidth } = this.props;\n const styles = {};\n\n if (labelwidth) {\n styles.flexBasis = labelwidth;\n }\n\n return styles;\n }\n\n getNonLabelWidth() {\n const { labelwidth } = this.props;\n const styles = {};\n\n if (labelwidth) {\n styles.flexBasis = `calc(100% - ${labelwidth} - 20px)`;\n }\n\n return styles;\n }\n\n getFileInputError() {\n const { error } = this.props;\n\n return (error && error !== 'true' && error !== 'false')\n ? (\n \n { error }\n

    \n )\n : null;\n }\n\n getFileInputComponent() {\n const {\n accept, value: omitValue, onChange, ...rest\n } = this.props;\n\n return (\n \n \n {\n this.fileInputRef.current && this.fileInputRef.current.files.length > 0\n ? (\n \n \n \n )\n : null\n }\n \n );\n }\n\n clearValue() {\n const { onChange } = this.props;\n this.fileInputRef.current.value = '';\n onChange('');\n }\n\n handleOnChange(e) {\n const { onChange } = this.props;\n\n onChange(e.target.files);\n }\n\n // eslint-disable-next-line class-methods-use-this\n reset() {}\n\n render() {\n const {\n id,\n label,\n note,\n } = this.props;\n\n return (\n \n
    \n {\n label\n ? \n : null\n }\n
    \n { this.getFileInputComponent() }\n {\n note\n ?

    { note }

    \n : null\n }\n
    \n { this.getFileInputError() }\n
    \n
    \n );\n }\n}\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\nexport default class Input extends Component {\n static propTypes = {\n disabled: PropTypes.bool,\n readOnly: PropTypes.bool,\n id: PropTypes.string,\n isfield: PropTypes.bool,\n error: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.bool,\n ]),\n inputgroupaddonleft: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]),\n inputgroupaddonright: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]),\n label: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.element,\n PropTypes.node,\n ]),\n labelwidth: PropTypes.string,\n name: PropTypes.string,\n note: PropTypes.string,\n onChange: PropTypes.func,\n placeholder: PropTypes.string,\n theme: PropTypes.string,\n value: PropTypes.oneOfType([\n PropTypes.number,\n PropTypes.string,\n ]),\n }\n\n static getAddon(content) {\n return (\n
    \n { content }\n
    \n );\n }\n\n constructor(props) {\n super(props);\n const {\n value,\n } = this.props;\n\n this.state = {\n initValue: value,\n stateValue: value,\n };\n\n this.handleOnChange = this.handleOnChange.bind(this);\n }\n\n componentDidUpdate(prevProps) {\n const {\n isfield,\n value,\n onChange,\n } = this.props;\n\n if (!isfield && prevProps.value !== value) {\n /* eslint-disable react/no-did-update-set-state */\n this.setState({\n stateValue: value,\n }, () => {\n if (onChange) {\n onChange(value);\n }\n });\n }\n }\n\n getLabelStyles() {\n const { labelwidth } = this.props;\n const styles = {};\n\n if (labelwidth) {\n styles.flexBasis = labelwidth;\n }\n\n return styles;\n }\n\n getNonLabelWidth() {\n const { labelwidth } = this.props;\n const styles = {};\n\n if (labelwidth) {\n styles.flexBasis = `calc(100% - ${labelwidth} - 20px)`;\n }\n\n return styles;\n }\n\n getInputError() {\n const { error } = this.props;\n\n return (error && error !== 'true' && error !== 'false')\n ? (\n \n { error }\n

    \n )\n : null;\n }\n\n getCssClasses() {\n const {\n error,\n theme,\n labelwidth,\n inputgroupaddonleft,\n inputgroupaddonright,\n } = this.props;\n const cssClasses = ['tyk-form-group'];\n const themes = theme ? theme.split(' ') : [];\n\n if (themes.length) {\n themes.forEach((iTheme) => {\n cssClasses.push(`tyk-form-group--${iTheme}`);\n });\n }\n\n if (inputgroupaddonleft) {\n cssClasses.push('tyk-form-group--addon-left');\n }\n\n if (inputgroupaddonright) {\n cssClasses.push('tyk-form-group--addon-right');\n }\n\n if (labelwidth) {\n cssClasses.push('tyk-form-group--label-has-width');\n }\n\n if (error) {\n cssClasses.push('has-error');\n }\n\n return cssClasses.join(' ');\n }\n\n getInputGroupAddon() {\n const {\n inputgroupaddonleft,\n inputgroupaddonright,\n } = this.props;\n\n return (\n
    \n {\n inputgroupaddonleft\n ? Input.getAddon(inputgroupaddonleft)\n : null\n }\n { this.getInputComponent() }\n {\n inputgroupaddonright\n ? Input.getAddon(inputgroupaddonright)\n : null\n }\n
    \n );\n }\n\n getInputComponent() {\n const {\n isfield, onChange, value, ...rest\n } = this.props;\n const { stateValue } = this.state;\n return (\n \n );\n }\n\n reset() {\n const { initValue } = this.state;\n\n this.setState({\n stateValue: initValue,\n });\n }\n\n handleOnChange(e) {\n const { onChange, isfield } = this.props;\n const inputValue = e.target.value;\n\n if (!isfield) {\n this.setState({\n stateValue: inputValue,\n }, () => {\n if (onChange) {\n onChange(inputValue);\n }\n });\n } else {\n onChange(inputValue);\n }\n }\n\n render() {\n const {\n label,\n id,\n inputgroupaddonleft,\n inputgroupaddonright,\n note,\n readOnly,\n value,\n } = this.props;\n\n return (\n
    \n {\n label\n ? \n : null\n }\n {!readOnly && (\n \n {\n inputgroupaddonleft || inputgroupaddonright\n ? this.getInputGroupAddon()\n : this.getInputComponent()\n }\n {\n note\n ?

    { note }

    \n : null\n }\n { this.getInputError() }\n
    \n )}\n {\n readOnly &&
    {value || '-'}
    \n }\n \n );\n }\n}\n","import React, { useImperativeHandle, useRef, forwardRef } from 'react';\nimport PropTypes from 'prop-types';\n\nconst Input2 = forwardRef(({\n error,\n onChange,\n readOnly,\n id,\n inputgroupaddonleft,\n inputgroupaddonright,\n label,\n labelwidth,\n note,\n theme,\n value,\n wrapperClassName = '',\n ...rest\n}, ref) => {\n const inputRef = useRef();\n\n useImperativeHandle(ref, () => ({\n focus: () => {\n inputRef.current.focus();\n },\n }));\n\n const getAddon = content => (\n
    \n { content }\n
    \n );\n\n const getLabelStyles = () => ({\n ...labelwidth && {\n flexBasis: labelwidth,\n },\n });\n\n const getNonLabelWidth = () => ({\n ...labelwidth && {\n flexBasis: `calc(100% - ${labelwidth} - 20px)`,\n },\n });\n\n const getInputError = () => (\n (error && error !== 'true' && error !== 'false')\n ? (\n \n { error }\n

    \n )\n : null\n );\n\n const getCssClasses = () => {\n const cssClasses = [wrapperClassName, 'tyk-form-group'];\n const themes = theme ? theme.split(' ') : [];\n\n if (themes.length) {\n themes.forEach((iTheme) => {\n cssClasses.push(`tyk-form-group--${iTheme}`);\n });\n }\n\n if (inputgroupaddonleft) {\n cssClasses.push('tyk-form-group--addon-left');\n }\n\n if (inputgroupaddonright) {\n cssClasses.push('tyk-form-group--addon-right');\n }\n\n if (labelwidth) {\n cssClasses.push('tyk-form-group--label-has-width');\n }\n\n if (error) {\n cssClasses.push('has-error');\n }\n\n return cssClasses.join(' ');\n };\n\n const handleOnChange = (e) => {\n onChange(e, e.target.value);\n };\n\n const getInputElement = () => (\n \n );\n\n const getInputGroupAddon = () => (\n
    \n {\n inputgroupaddonleft\n ? getAddon(inputgroupaddonleft)\n : null\n }\n { getInputElement() }\n {\n inputgroupaddonright\n ? getAddon(inputgroupaddonright)\n : null\n }\n
    \n );\n\n return (\n
    \n {\n label\n ? \n : null\n }\n {!readOnly && (\n \n {\n inputgroupaddonleft || inputgroupaddonright\n ? getInputGroupAddon()\n : getInputElement()\n }\n {\n note\n ?

    { note }

    \n : null\n }\n { getInputError() }\n
    \n )}\n {\n readOnly && (\n
    \n {value || '-'}\n
    \n )\n }\n \n );\n});\n\nInput2.propTypes = {\n disabled: PropTypes.bool,\n readOnly: PropTypes.bool,\n id: PropTypes.string,\n error: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.bool,\n ]),\n inputgroupaddonleft: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]),\n inputgroupaddonright: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]),\n label: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.element,\n PropTypes.node,\n ]),\n labelwidth: PropTypes.string,\n name: PropTypes.string,\n note: PropTypes.string,\n onChange: PropTypes.func,\n placeholder: PropTypes.string,\n theme: PropTypes.string,\n value: PropTypes.oneOfType([\n PropTypes.number,\n PropTypes.string,\n ]),\n wrapperClassName: PropTypes.string,\n};\n\nexport default Input2;\n","import { createContext } from 'react';\n\nconst MultiselectContext = createContext();\n\nexport default MultiselectContext;\n","import React, { Component, Fragment } from 'react';\nimport PropTypes from 'prop-types';\n\nimport MultiselectContext from './MultiselectContext';\nimport Button from '../../../../components/Button';\nimport Collapsible from '../../../../components/Collapsible';\nimport Loader from '../../../../components/Loader';\n\nconst getItemContent = (context, item) => (\n context.detailsDisplayTemplate\n ? context.detailsDisplayTemplate(item)\n : JSON.stringify(item.details)\n);\n\nconst getItemLoader = (context, item) => {\n const { opened } = context;\n\n return opened[item.id]\n ? \n : null;\n};\n\nclass MultiselectItem extends Component {\n static propTypes = {\n item: PropTypes.instanceOf(Object),\n itemType: PropTypes.string,\n searchValue: PropTypes.string,\n onChange: PropTypes.func,\n };\n\n isInSearchValue(fieldsToSearchOn) {\n const { searchValue, item } = this.props;\n\n if (fieldsToSearchOn && fieldsToSearchOn.length > 0) {\n let fields = fieldsToSearchOn.slice(0);\n\n fields = fields.filter(key => item[key] && item[key].search(searchValue) > -1);\n\n return fields.length > 0;\n }\n\n return JSON.stringify(item).search(searchValue) > -1;\n }\n\n render() {\n const {\n item,\n itemType,\n onChange,\n } = this.props;\n\n return (\n \n \n {\n context => (\n this.isInSearchValue(context.fieldsToSearchOn)\n ? (\n
  • \n
    \n \n {\n context.itemDisplayTemplate\n ? context.itemDisplayTemplate(item)\n : JSON.stringify(item)\n }\n \n \n \n \n \n
    \n {\n item.details\n ? (\n \n {getItemContent(context, item)}\n \n )\n : getItemLoader(context, item)\n }\n
  • \n )\n : null\n )\n }\n
    \n
    \n );\n }\n}\n\nexport default MultiselectItem;\n","import React, { Component, createRef } from 'react';\nimport PropTypes from 'prop-types';\nimport { fromJS } from 'immutable';\n\nimport Input from '../../Input';\nimport Icon from '../../../../components/Icon';\nimport Message from '../../../../components/Message';\nimport InfiniteScroller from '../../../../components/InfiniteScroller';\nimport MultiselectItem from './MultiselectItem';\n\nclass MultiselectPanel extends Component {\n static propTypes = {\n customSearch: PropTypes.bool,\n onCustomSearch: PropTypes.func,\n panelType: PropTypes.string,\n onChange: PropTypes.func,\n items: PropTypes.instanceOf(Array),\n itemsPageNumber: PropTypes.number,\n itemsNrPages: PropTypes.number,\n inputPlaceholder: PropTypes.string,\n loadMoreItems: PropTypes.func,\n noItemsMessage: PropTypes.string,\n serverLoad: PropTypes.bool,\n };\n\n state = {\n searchValue: '',\n };\n\n constructor(props) {\n super(props);\n\n this.searchOnChange = this.searchOnChange.bind(this);\n this.itemChanged = this.itemChanged.bind(this);\n this.itemIndex = 0;\n this.itemsListRef = createRef();\n }\n\n getItemIndex() {\n this.itemIndex += 1;\n\n return this.itemIndex;\n }\n\n getItemsList() {\n const {\n itemsPageNumber,\n itemsNrPages,\n loadMoreItems,\n serverLoad,\n } = this.props;\n\n return (\n serverLoad\n ? (\n itemsPageNumber}\n loadMore={loadMoreItems}\n pageNumber={itemsPageNumber}\n >\n { this.renderListItems() }\n \n )\n : this.renderListItems()\n );\n }\n\n searchOnChange(value) {\n const { onCustomSearch } = this.props;\n\n if (!onCustomSearch) {\n this.setState({\n searchValue: value,\n });\n } else {\n onCustomSearch(value);\n }\n }\n\n itemChanged(item) {\n const { items, onChange } = this.props;\n\n let cloneItems = fromJS(items).toJS();\n cloneItems = cloneItems.filter(clonedItem => item.id !== clonedItem.id);\n\n onChange(cloneItems, item);\n }\n\n renderListItems() {\n const {\n customSearch, items, panelType, serverLoad,\n } = this.props;\n const { searchValue } = this.state;\n return (\n \n {\n items.map(item => (\n \n ))\n }\n \n );\n }\n\n render() {\n const {\n inputPlaceholder,\n noItemsMessage,\n items,\n } = this.props;\n const { searchValue } = this.state;\n\n return (\n
    \n \n }\n name=\"search\"\n onChange={this.searchOnChange}\n placeholder={inputPlaceholder}\n value={searchValue}\n />\n {\n items.length\n ? this.getItemsList()\n : (\n \n { noItemsMessage }\n \n )\n }\n
    \n );\n }\n}\n\nexport default MultiselectPanel;\n","import React, { Component, Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport { fromJS } from 'immutable';\n\nimport MultiselectPanel from './js/MultiselectPanel';\nimport MultiselectContext from './js/MultiselectContext';\n\nconst diffObjects = (value, items) => {\n const newItems = items.filter((item) => {\n const isCommon = value.filter(selectedItem => selectedItem.id === item.id).length > 0;\n\n return !isCommon;\n });\n\n return newItems;\n};\n\nclass Multiselect extends Component {\n static propTypes = {\n customSearch: PropTypes.func,\n disabled: PropTypes.bool,\n error: PropTypes.string,\n entityNamePlural: PropTypes.string,\n items: PropTypes.instanceOf(Array),\n itemDisplayTemplate: PropTypes.func,\n detailsDisplayTemplate: PropTypes.func,\n fieldsToSearchOn: PropTypes.instanceOf(Array),\n onChange: PropTypes.func,\n getItemDetails: PropTypes.func,\n itemsPageNumber: PropTypes.number,\n itemsNrPages: PropTypes.number,\n loadMoreItems: PropTypes.func,\n note: PropTypes.string,\n maxSelections: PropTypes.number,\n value: PropTypes.instanceOf(Array),\n wrapperClassName: PropTypes.string,\n };\n\n state = {\n opened: {},\n };\n\n constructor(props) {\n super(props);\n\n this.valueChange = this.valueChange.bind(this);\n this.itemsChange = this.itemsChange.bind(this);\n }\n\n onGetItemDetails(item) {\n const { getItemDetails } = this.props;\n\n this.setState((prevState) => {\n const tempState = Object.assign({}, prevState);\n tempState.opened[item.id] = !tempState.opened[item.id];\n\n return tempState;\n }, () => {\n if (getItemDetails) {\n getItemDetails(item);\n }\n });\n }\n\n getMultiselectError() {\n const { error } = this.props;\n\n return (error && error !== 'true' && error !== 'false')\n ? (\n \n { error }\n

    \n )\n : null;\n }\n\n getCssClasses() {\n const { error, wrapperClassName = '' } = this.props;\n const cssClasses = [wrapperClassName, 'tyk-multiselect'];\n\n if (error) {\n cssClasses.push('has-error');\n }\n\n return cssClasses.join(' ');\n }\n\n itemsChange(allItems, item) {\n const { value, onChange } = this.props;\n const valueClone = fromJS(value).toJS();\n\n valueClone.unshift(item);\n\n onChange(valueClone, item, 'added');\n }\n\n valueChange(value, item) {\n const { items, onChange } = this.props;\n const allItemsClone = fromJS(items).toJS();\n\n allItemsClone.unshift(item);\n\n onChange(value, item, 'removed');\n }\n\n render() {\n const {\n customSearch,\n entityNamePlural,\n disabled,\n itemDisplayTemplate,\n detailsDisplayTemplate,\n fieldsToSearchOn,\n items,\n itemsPageNumber,\n itemsNrPages,\n loadMoreItems,\n maxSelections,\n note,\n value,\n } = this.props;\n const { opened } = this.state;\n\n return (\n \n
    \n \n
    \n
    \n { value.length }\n {' '}\n Selected\n {' '}\n { entityNamePlural }\n
    \n
    \n Select from existing\n { entityNamePlural }\n
    \n
    \n
    \n \n \n
    \n \n
    \n
    \n {\n note\n ?

    { note }

    \n : null\n }\n
    \n { this.getMultiselectError() }\n
    \n );\n }\n}\n\nexport default Multiselect;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\n\n/**\n * Radio can be used when a user needs to select at most one value from a multiple options.\n */\nexport default class Radio extends Component {\n static propTypes = {\n /** Used to disable the element */\n disabled: PropTypes.bool,\n /** Readonly prop behaves the same as disabled on radio elements */\n readOnly: PropTypes.bool,\n /** Align radio with in same line with other elements */\n inline: PropTypes.bool,\n /** Set a theme for radio */\n theme: PropTypes.string,\n input: PropTypes.instanceOf(Object),\n /** Adds label to the radio input */\n label: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.func,\n PropTypes.string,\n ]),\n /** Set name for the radio input */\n name: PropTypes.string,\n /** If set to true removes margin by adding `no-margin` class */\n nospace: PropTypes.bool,\n /** Set initial value for the radio input */\n value: PropTypes.string,\n /** Add note at the bottom of the radio input */\n note: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.element,\n PropTypes.node,\n ]),\n wrapperClassName: PropTypes.string,\n };\n\n getCssClasses() {\n const {\n inline, nospace, theme = '', disabled, readOnly, wrapperClassName = '',\n } = this.props;\n const cssClasses = [wrapperClassName];\n\n if (inline) {\n cssClasses.push('tyk-radio--inline');\n } else {\n cssClasses.push('tyk-radio');\n }\n\n if (nospace) {\n cssClasses.push('no-margin');\n }\n\n if (theme.trim()) {\n cssClasses.push(...theme.split(' ').map(t => `tyk-radio--theme-${t}`));\n }\n\n if (readOnly || disabled) {\n cssClasses.push('tyk-radio--is-disabled');\n }\n\n return cssClasses.join(' ');\n }\n\n render() {\n const {\n input, label, note, disabled, readOnly, ...rest\n } = this.props;\n return (\n \n \n

    {note}

    \n \n );\n }\n}\n","import React, { Component, Fragment } from 'react';\nimport PropTypes from 'prop-types';\n\nexport default class Select extends Component {\n static propTypes = {\n disabled: PropTypes.bool,\n readOnly: PropTypes.bool,\n id: PropTypes.string,\n isfield: PropTypes.bool,\n error: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.bool,\n ]),\n options: PropTypes.instanceOf(Array),\n label: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.func,\n PropTypes.string,\n ]),\n labelwidth: PropTypes.string,\n name: PropTypes.string,\n note: PropTypes.string,\n onBlur: PropTypes.func,\n onChange: PropTypes.func,\n placeholder: PropTypes.string,\n theme: PropTypes.string,\n value: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.object,\n ]),\n wrapperClassName: PropTypes.string,\n }\n\n constructor(props) {\n super(props);\n const {\n value,\n } = this.props;\n\n this.state = {\n initValue: value,\n stateValue: value,\n };\n\n this.handleOnChange = this.handleOnChange.bind(this);\n this.handleOnBlur = this.handleOnBlur.bind(this);\n }\n\n componentDidUpdate(prevProps) {\n const {\n isfield,\n value,\n onChange,\n } = this.props;\n\n if (!isfield && prevProps.value !== value) {\n /* eslint-disable react/no-did-update-set-state */\n this.setState({\n stateValue: value,\n }, () => {\n if (onChange) {\n onChange(value);\n }\n });\n }\n }\n\n getSelectComponent() {\n const {\n isfield, options, onChange, onBlur, value, ...rest\n } = this.props;\n const {\n stateValue,\n } = this.state;\n\n let selectValue = '';\n\n if (isfield && value) {\n selectValue = value;\n } else if (stateValue) {\n selectValue = stateValue;\n }\n\n return (\n \n {\n options.map(option => )\n }\n \n );\n }\n\n getSelectError() {\n const { error } = this.props;\n\n return (error && error !== 'true' && error !== 'false')\n ? (\n \n { error }\n

    \n )\n : null;\n }\n\n getCssClasses() {\n const {\n error, labelwidth, theme, wrapperClassName = '',\n } = this.props;\n const cssClasses = [wrapperClassName, 'tyk-form-group'];\n const themes = theme ? theme.split(' ') : [];\n\n if (themes.length) {\n themes.forEach((iTheme) => {\n cssClasses.push(`tyk-form-group--${iTheme}`);\n });\n }\n\n if (labelwidth) {\n cssClasses.push('tyk-form-group--label-has-width');\n }\n\n if (error) {\n cssClasses.push('has-error');\n }\n\n return cssClasses.join(' ');\n }\n\n getLabelStyles() {\n const { labelwidth } = this.props;\n const styles = {};\n\n if (labelwidth) {\n styles.flexBasis = labelwidth;\n }\n\n return styles;\n }\n\n getNonLabelWidth() {\n const { labelwidth } = this.props;\n const styles = {};\n\n if (labelwidth) {\n styles.flexBasis = `calc(100% - ${labelwidth} - 20px)`;\n }\n\n return styles;\n }\n\n handleOnBlur() {\n const { value, onBlur } = this.props;\n\n if (onBlur) {\n onBlur(value);\n }\n }\n\n handleOnChange(e) {\n const {\n onChange,\n isfield,\n options,\n } = this.props;\n let selectedValue = null;\n\n selectedValue = options.filter(option => option.id === e.target.value);\n [selectedValue] = selectedValue;\n\n if (!isfield) {\n this.setState({\n stateValue: selectedValue,\n }, () => {\n onChange(selectedValue.id ? selectedValue : null);\n });\n } else {\n onChange(selectedValue.id ? selectedValue : null);\n }\n }\n\n reset() {\n const { initValue } = this.state;\n\n this.setState({\n stateValue: initValue,\n });\n }\n\n render() {\n const {\n label,\n id,\n note,\n readOnly,\n value,\n } = this.props;\n\n return (\n \n
    \n {\n label\n ? \n : null\n }\n {!readOnly && (\n \n {\n this.getSelectComponent()\n }\n {\n note\n ?

    { note }

    \n : null\n }\n { this.getSelectError() }\n
    \n )}\n {readOnly &&
    {value || '-'}
    }\n \n
    \n );\n }\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport Message from '../../../components/Message';\nimport List from '../../../components/List';\nimport Icon from '../../../components/Icon';\n\nfunction SelectableList(props) {\n const {\n checkboxalticon,\n items,\n itemTemplate,\n value,\n noItemsMessage = 'No items in the list',\n onChange,\n theme,\n primaryKey,\n wrapperClassName = '',\n } = props;\n\n const handleOnSelect = (event) => {\n const newSelectedItems = structuredClone(value);\n const elemPosition = newSelectedItems.findIndex(\n (id) => JSON.stringify(id) === JSON.stringify(\n Array.isArray(id)\n ? event.target.value.split(',')\n : event.target.value,\n ),\n );\n\n if (event.target.checked && elemPosition === -1) {\n const tempValue = event.target.value.split(',');\n const finalValue = tempValue.length > 1 ? tempValue : event.target.value;\n\n newSelectedItems.push(finalValue);\n } else if (!event.target.checked && elemPosition > -1) {\n newSelectedItems.splice(elemPosition, 1);\n }\n\n if (onChange) {\n onChange(newSelectedItems);\n }\n };\n\n const getListItemCssClassName = (isActive) => {\n const cssClasses = [];\n\n if (checkboxalticon) {\n cssClasses.push('tyk-selectable-list__item--with-icon');\n }\n\n if (isActive) {\n cssClasses.push('tyk-selectable-list__item--active');\n }\n\n return cssClasses.join(' ');\n };\n\n const isChecked = (inputValue, itemValue) => Boolean(\n inputValue.find((tvalue) => JSON.stringify(itemValue) === JSON.stringify(tvalue)),\n );\n\n return (\n \n {\n !items.length\n ? (\n
  • \n \n {noItemsMessage}\n \n
  • \n )\n : items.map((item, index) => (\n \n \n \n ))\n }\n
    \n );\n}\n\nSelectableList.propTypes = {\n items: PropTypes.instanceOf(Array),\n itemTemplate: PropTypes.oneOfType([\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n PropTypes.func,\n ]),\n value: PropTypes.instanceOf(Array),\n onChange: PropTypes.func,\n primaryKey: PropTypes.string,\n noItemsMessage: PropTypes.string,\n checkboxalticon: PropTypes.oneOfType([\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n theme: PropTypes.string,\n wrapperClassName: PropTypes.string,\n};\n\nSelectableList.defaultProps = {\n items: [],\n primaryKey: 'id',\n value: [],\n};\n\nexport default SelectableList;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nfunction Textarea({\n id,\n input,\n label,\n note,\n error,\n theme,\n labelwidth,\n value,\n readOnly,\n wrapperClassName,\n ...rest\n}) {\n const classes = [\n 'tyk-form-group',\n wrapperClassName,\n ...(theme ? theme.split(' ').map((t) => `tyk-form-group--${t}`) : []),\n labelwidth && 'tyk-form-group--label-has-width',\n error && 'has-error',\n ].filter(Boolean).join(' ');\n\n const getLabelStyles = () => {\n if (labelwidth) return { flexBasis: labelwidth };\n return {};\n };\n\n const getNonLabelWidth = () => {\n if (labelwidth) return { flexBasis: `calc(100% - ${labelwidth} - 20px)` };\n return {};\n };\n\n function getTextareaError() {\n return (error && error !== 'true' && error !== 'false')\n ? (\n

    \n { error }\n

    \n )\n : null;\n }\n\n return (\n
    \n {\n label\n ? \n : null\n }\n {!readOnly && (\n \n \n { value }\n \n {\n note\n ?

    { note }

    \n : null\n }\n {getTextareaError()}\n
    \n )}\n {readOnly &&
    {value || '-'}
    }\n \n );\n}\n\nTextarea.propTypes = {\n /** Disable the component */\n disabled: PropTypes.bool,\n /** Displays only the text value of the component, or \"-\" if no value is set */\n readOnly: PropTypes.bool,\n input: PropTypes.instanceOf(Object),\n /** Set an error message for the component and the component is rendered in the error state */\n error: PropTypes.string,\n /** Adds a label to the component */\n label: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.func,\n PropTypes.string,\n ]),\n /** Sets the width of the label */\n labelwidth: PropTypes.string,\n /** Set a name for the component */\n name: PropTypes.string,\n /** Adds additional information under the component */\n note: PropTypes.string,\n /** Callback function executed on value change */\n onChange: PropTypes.func,\n id: PropTypes.string,\n /** Set a theme for the component */\n theme: PropTypes.string,\n /** Set the value of the component */\n value: PropTypes.string,\n /** CSS classes added to the wrapper of the component */\n wrapperClassName: PropTypes.string,\n};\n\nexport default Textarea;\n","import { createContext } from 'react';\n\nconst ToggleContext = createContext();\n\nexport default ToggleContext;\n","import React, { Component, createRef } from 'react';\nimport PropTypes from 'prop-types';\n\nclass ToggleItem extends Component {\n static getNotchCssClasses(context) {\n return ['tyk-toggle__item-notch', `tyk-toggle__item-notch--${context.type}`].join(' ');\n }\n\n constructor(props) {\n super(props);\n\n this.itemRef = createRef();\n }\n\n componentDidMount() {\n const { context, value } = this.props;\n\n if (context.value === value) {\n context.saveSelectedRef(this.itemRef);\n }\n }\n\n componentDidUpdate(prevProps) {\n const { context, value } = this.props;\n\n if (prevProps.context.value !== context.value && context.value === value) {\n context.saveSelectedRef(this.itemRef);\n }\n }\n\n onChange(event) {\n const { context, value } = this.props;\n const { disabled, readOnly } = context;\n\n if (disabled || readOnly) {\n return;\n }\n\n context.onItemSelected(context.type === 'single' ? !context.value : value, event);\n }\n\n render() {\n const {\n context, label, name, value,\n } = this.props;\n return (\n
  • \n \n
  • \n );\n }\n}\n\nToggleItem.propTypes = {\n context: PropTypes.instanceOf(Object),\n label: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.func,\n PropTypes.string,\n ]),\n name: PropTypes.string,\n value: PropTypes.string,\n};\n\nexport default ToggleItem;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport ToggleContext from './ToggleContext';\nimport ToggleItem from './ToggleItem';\n\nconst ToggleItemWrapper = React.forwardRef((props, ref) => (\n \n {(context) => (\n \n {props.children}\n \n )}\n \n));\n\nToggleItemWrapper.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n};\n\nexport default ToggleItemWrapper;\n","import React, {\n useCallback, useMemo, useRef, useState,\n} from 'react';\nimport PropTypes from 'prop-types';\n\nimport ToggleContext from './js/ToggleContext';\nimport ToggleItemWrapper from './js/ToggleItemWrapper';\n\nfunction Toggle({\n className,\n disabled,\n readOnly,\n size,\n theme,\n direction,\n onDark,\n wrapperClassName = '',\n onChange,\n labelwidth,\n label,\n separated,\n children,\n type,\n value,\n error,\n}) {\n const [selectedRef, setSelectedRef] = useState(null);\n const notchRef = useRef();\n const toggleRef = useRef();\n\n const classes = [\n wrapperClassName,\n className,\n 'tyk-toggle',\n `tyk-toggle--disabled-${readOnly || disabled}`,\n `tyk-toggle--${size || 'md'}`,\n `tyk-toggle--${theme}`,\n `tyk-toggle--${direction}`,\n onDark && 'tyk-toggle--on-dark',\n ].filter(Boolean).join(' ');\n\n const onItemSelected = useCallback((itemValue, event) => {\n if (!onChange) return;\n onChange(itemValue, event);\n }, [onChange]);\n\n const getLabelStyles = useCallback(() => {\n if (labelwidth) return { flexBasis: labelwidth };\n return {};\n }, [labelwidth]);\n\n const positionNotch = useCallback(() => {\n if (!selectedRef || separated) {\n return {};\n }\n\n const selectedWidth = selectedRef.current.offsetWidth;\n const selectedOffset = selectedRef.current.getBoundingClientRect().left;\n const toggleOffset = toggleRef.current.getBoundingClientRect().left;\n const left = selectedOffset - toggleOffset;\n\n return {\n left: `${left + 4}px`,\n width: `${selectedWidth - 8}px`,\n };\n }, [selectedRef, separated]);\n\n const contextValue = useMemo(() => ({\n disabled,\n readOnly,\n onItemSelected,\n saveSelectedRef: setSelectedRef,\n separated,\n type,\n value,\n }), [disabled, readOnly, onItemSelected, separated, type, value]);\n\n return (\n <>\n
    \n \n {\n label\n ? \n : null\n }\n
      \n { children }\n {\n type === 'multiple' && !separated\n ?
    • \n : null\n }\n
    \n \n
    \n {\n error && (\n

    \n { error }\n

    \n )\n }\n \n );\n}\n\nToggle.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n className: PropTypes.string,\n disabled: PropTypes.bool,\n readOnly: PropTypes.bool,\n error: PropTypes.string,\n onChange: PropTypes.func,\n label: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.func,\n PropTypes.string,\n ]),\n labelwidth: PropTypes.string,\n theme: PropTypes.string,\n type: PropTypes.string, // single || multiple\n size: PropTypes.string,\n separated: PropTypes.bool,\n direction: PropTypes.string,\n value: PropTypes.oneOfType([\n PropTypes.bool,\n PropTypes.string,\n ]),\n onDark: PropTypes.bool,\n wrapperClassName: PropTypes.string,\n};\n\nToggle.defaultProps = {\n separated: false,\n theme: 'primary',\n type: 'single',\n direction: 'row',\n};\n\nToggle.Item = ToggleItemWrapper;\n\nexport default Toggle;\n","export const stringToTokenString = (value, options) => {\n let tempStr = value;\n options.forEach((option) => {\n tempStr = tempStr.replaceAll(option.id, `__TOKEN__${option.id}__TOKEN__`);\n });\n return tempStr;\n};\n\n\nexport const setCursorPos = (ref, pos) => {\n setTimeout(() => {\n ref.current.setSelectionRange(pos, pos);\n }, 20);\n};\n","import React, { useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { stringToTokenString, setCursorPos } from './service';\n\nfunction StringInput({\n setShowOptions,\n tokenValue,\n disabled,\n placeholder,\n tokens,\n dropdownTriggerKey,\n setStringBuilderHeight,\n stringBuilderHeight,\n setTokenString,\n tokenString,\n showOptions,\n options,\n setTokenValue,\n inputRef,\n setInputInFocus,\n invalidTokenRegex,\n name,\n contextMaxLength,\n}) {\n const [isPasteEvent, setIsPasteEvent] = useState(false);\n\n useEffect(() => {\n // Set height if initial value exists\n if (tokenValue) {\n const tokenLen = tokenValue.length > 50 ? tokenValue.length / 5 : 0;\n setStringBuilderHeight(inputRef.current.scrollHeight + tokenLen);\n }\n }, []);\n\n /**\n *\n * @param {*} e : Event\n * Handle delete event (fn + delete on mac)\n */\n\n const handleDelete = (e) => {\n const { selectionEnd } = e.target;\n if (selectionEnd === tokenValue.length) {\n // - Cursor is at the end of input\n return;\n }\n\n const stringBeforeCursor = tokenValue.substring(0, selectionEnd);\n const stringAfterCursor = tokenValue.slice(selectionEnd);\n\n const tokenStringForStringAfterCursor = stringToTokenString(\n stringAfterCursor,\n options,\n );\n if (tokenStringForStringAfterCursor.startsWith('__TOKEN__')) {\n // If string before delete is a token\n const splitTokens = tokenStringForStringAfterCursor.split(/__TOKEN__(.*?)__TOKEN__/g).filter((t) => t !== '');\n const firstToken = splitTokens[0];\n const newTokenValue = `${stringBeforeCursor}${stringAfterCursor.substr(firstToken.length)}`;\n const newTokenizedString = stringToTokenString(newTokenValue, options);\n setTokenString(newTokenizedString);\n setCursorPos(inputRef, selectionEnd);\n return;\n }\n const newTokenValue = `${stringBeforeCursor}${stringAfterCursor.substr(1)}`;\n const newTokenizedString = stringToTokenString(newTokenValue, options);\n setTokenString(newTokenizedString);\n setCursorPos(inputRef, selectionEnd);\n };\n\n /**\n *\n * @param {*} e : Event\n * Handle backspace event\n * - If the last thing added by user was a token prevent default and\n * remove the entire token instead of single character, else continue with default behaviour\n * - Also handles if the string is manipulated from middle\n */\n const handleBackSpace = (e) => {\n const { selectionEnd } = e.target;\n\n // -- START :: Handle backspacing when cursor is at the end of the string\n if (selectionEnd === tokenValue.length) {\n const lastToken = tokens[tokens?.length - 2];\n const lastCharsInString = tokenValue.slice(-lastToken?.length);\n if (lastToken === lastCharsInString) {\n e.preventDefault();\n setTokenString(\n tokenString.slice(0, -`__TOKEN__${lastCharsInString}__TOKEN__`.length),\n );\n return;\n }\n if (tokenValue.endsWith(' ')) {\n const invalidToken = tokenValue.match(invalidTokenRegex);\n const newTokenValue = tokenValue.slice(0, -` ${invalidToken[invalidToken.length - 1]} `.length);\n const newTokenStr = stringToTokenString(newTokenValue, options);\n setTokenString(newTokenStr);\n return;\n }\n setTokenString(tokenString.slice(0, -1));\n return;\n }\n // -- END :: Handle backspacing when cursor is at the end of the string\n\n // -- START :: Handle backspacing when cursor is in between\n const stringBeforeCursor = tokenValue.substring(0, selectionEnd);\n const stringAfterCursor = tokenValue.slice(selectionEnd);\n\n const tokenStringForStringBeforeCursor = stringToTokenString(stringBeforeCursor, options);\n\n // -- IF the string before cursor is a token\n if (tokenStringForStringBeforeCursor.endsWith('__TOKEN__')) {\n e.preventDefault();\n const splitTokens = tokenStringForStringBeforeCursor.split(/__TOKEN__(.*?)__TOKEN__/g);\n const lastToken = splitTokens[splitTokens.length - 2];\n const newTokenValue = `${stringBeforeCursor.slice(0, -(lastToken.length))}${stringAfterCursor}`;\n const newTokenizedString = stringToTokenString(newTokenValue, options);\n setTokenString(newTokenizedString);\n setCursorPos(inputRef, selectionEnd - lastToken.length);\n return;\n }\n\n const invalidToken = stringBeforeCursor.match(invalidTokenRegex);\n // If Token is Invalid Token\n if (invalidToken?.[0] && invalidToken.length === 1) {\n e.preventDefault();\n const newTokenValue = `${stringBeforeCursor.replaceAll(invalidTokenRegex, '').trim()}${stringAfterCursor}`;\n const newTokenizedString = stringToTokenString(newTokenValue, options);\n setTokenString(newTokenizedString);\n setCursorPos(inputRef, selectionEnd - ` ${invalidToken[0]} `.length);\n return;\n }\n\n const newTokenValue = `${stringBeforeCursor.slice(\n 0,\n -1,\n )}${stringAfterCursor}`;\n const newTokenizedString = stringToTokenString(newTokenValue, options);\n setTokenString(newTokenizedString);\n setCursorPos(inputRef, selectionEnd - 1);\n // -- END :: Handle backspacing when cursor is in between\n };\n\n const addCharacterToTokenString = (text, selectionStart) => {\n // Cursor is at end\n if (selectionStart - 1 === tokenValue.length) {\n setTokenString(`${tokenString}${text}`);\n return;\n }\n\n // Cursor is in middle of string\n const newTokenValue = tokenValue.slice(0, selectionStart - 1)\n + text\n + tokenValue.slice(selectionStart - 1);\n\n const newTokenizedString = stringToTokenString(newTokenValue, options);\n setTokenString(newTokenizedString);\n };\n\n // -- START :: Handle highlighted text deletion / replacement\n const handleTextSelection = (e, selectedText, key) => {\n const allowedKeys = ['Delete', 'Backspace'];\n if (key.length > 1 && allowedKeys.indexOf(key) === -1) {\n return;\n }\n const { selectionEnd, selectionStart } = e.target;\n const substitute = key.length > 1 ? '' : key;\n if (selectedText.length > 1) {\n const newStr = tokenValue.substring(0, selectionStart)\n + substitute\n + tokenValue.substring(selectionEnd);\n const newTokenStr = stringToTokenString(newStr, options);\n setTokenString(newTokenStr);\n setCursorPos(inputRef, substitute.length ? selectionStart + 1 : selectionStart);\n }\n };\n // -- END :: Handle highlighted text deletion / replacement\n\n const handleKeyDown = (e) => {\n const { key } = e;\n const { selectionEnd, selectionStart, value } = e.target;\n const selectedText = value.substring(selectionStart, selectionEnd);\n\n if (key === dropdownTriggerKey && !showOptions) {\n e.preventDefault();\n setShowOptions(true);\n return;\n }\n if (key === 'Enter') {\n e.preventDefault();\n return;\n }\n if (key === 'Backspace') {\n e.preventDefault();\n handleBackSpace(e);\n }\n if (key === 'Delete') {\n e.preventDefault();\n handleDelete(e);\n }\n if (e.metaKey && key === 'x') {\n setTokenString('');\n }\n if (selectedText) {\n e.preventDefault();\n handleTextSelection(e, selectedText, key);\n }\n };\n\n const handleOnChange = (e) => {\n const { target } = e;\n const { selectionStart, value } = target;\n\n if (showOptions) {\n setShowOptions(false);\n }\n setTokenValue(value);\n if (value && !isPasteEvent) {\n const text = value.charAt(selectionStart - 1);\n addCharacterToTokenString(text, selectionStart);\n }\n setIsPasteEvent(false);\n };\n\n const handlePasteEvent = (e) => {\n e.preventDefault();\n const { clipboardData } = e;\n const { selectionStart, selectionEnd } = e.target;\n setIsPasteEvent(true);\n let pasteString = clipboardData.getData('text/plain');\n if (selectionStart !== selectionEnd) {\n pasteString = tokenValue.slice(0, selectionStart)\n + pasteString\n + tokenValue.slice(selectionEnd, tokenValue.length);\n const newTokenString = stringToTokenString(pasteString, options);\n setTokenString(newTokenString);\n return;\n }\n const newTokenString = stringToTokenString(pasteString, options);\n addCharacterToTokenString(newTokenString, selectionStart);\n };\n\n const handleOnFocus = () => {\n setInputInFocus(true);\n };\n\n return (\n handleOnChange(e)}\n onKeyDown={(e) => handleKeyDown(e)}\n placeholder={placeholder}\n name={name}\n ref={inputRef}\n style={{ height: `${stringBuilderHeight}px` }}\n maxLength={contextMaxLength}\n onPaste={handlePasteEvent}\n onFocus={handleOnFocus}\n onBlur={() => setInputInFocus(false)}\n />\n );\n}\n\nStringInput.propTypes = {\n setShowOptions: PropTypes.func,\n tokenValue: PropTypes.string,\n disabled: PropTypes.bool,\n placeholder: PropTypes.string,\n tokenString: PropTypes.string,\n stringBuilderHeight: PropTypes.number,\n dropdownTriggerKey: PropTypes.string,\n setStringBuilderHeight: PropTypes.func,\n setTokenString: PropTypes.func,\n setTokenValue: PropTypes.func,\n setInputInFocus: PropTypes.func,\n showOptions: PropTypes.bool,\n tokens: PropTypes.arrayOf(PropTypes.string),\n options: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.string.isRequired,\n name: PropTypes.string.isRequired,\n className: PropTypes.string,\n desc: PropTypes.string,\n }),\n ),\n inputRef: PropTypes.instanceOf(Object),\n invalidTokenRegex: PropTypes.instanceOf(RegExp),\n name: PropTypes.string,\n contextMaxLength: PropTypes.number,\n};\n\nexport { StringInput };\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Tooltip from '../../../../components/Tooltip';\nimport Icon from '../../../../components/Icon';\n\n\nconst InvalidToken = (props) => {\n const { token, findInvalidTokenSubstitute } = props;\n return (\n findInvalidTokenSubstitute(token)}\n onKeyDown={() => {}}\n >\n \n \n {`${token}`}\n \n \n \n \n );\n};\n\nInvalidToken.propTypes = {\n token: PropTypes.string,\n findInvalidTokenSubstitute: PropTypes.func,\n};\n\nexport default InvalidToken;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport InvalidToken from './invalid-token';\n\nexport const TokenizedString = (props) => {\n const {\n tokens,\n options,\n disabled,\n invalidTokenRegex,\n findInvalidTokenSubstitute,\n } = props;\n\n /**\n * hasDuplicates : used to avoid duplicate keys in map :\n * having duplicate tokens causes invalid unpredictable react renders.\n * eg: http://alpaha.com/{{.agruments.id}}/id={{.arguments.id}}\n * `{{.arguments.id}}` is repeated twice : maybe edge case but quite possible\n */\n\n const hasDuplicates = new Set(tokens).size !== tokens.length;\n\n const allTokens = tokens\n && tokens.map((token) => {\n if (options) {\n const matchedOption = options.find(option => option.id === token);\n // if invalid token\n if (invalidTokenRegex && !matchedOption) {\n const matchedTokens = token.replaceAll(' ', '').split(invalidTokenRegex);\n if (matchedTokens?.length > 1) {\n return (\n \n {matchedTokens.map((tkn) => {\n if (tkn.match(invalidTokenRegex)) {\n return (\n \n );\n }\n return ({`${tkn} `});\n })}\n \n );\n }\n }\n // if token matches option\n\n if (matchedOption) {\n return (\n \n {matchedOption.id}\n \n );\n }\n }\n return (\n {token}\n );\n });\n return (\n \n {allTokens}\n \n );\n};\n\nTokenizedString.propTypes = {\n tokens: PropTypes.arrayOf(PropTypes.string),\n options: PropTypes.arrayOf(PropTypes.instanceOf(Object)),\n disabled: PropTypes.bool,\n invalidTokenRegex: PropTypes.instanceOf(RegExp),\n findInvalidTokenSubstitute: PropTypes.func,\n};\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\n\nimport FloatingContainer from '../../../../components/FloatingContainer';\n\nexport const OptionsList = ({\n options,\n showOptions,\n handleOptionSelection,\n containerRef,\n getThemeClasses,\n setShowOptions,\n allowSearch,\n initialSearchValue,\n}) => {\n const [filterValue, setFilterValue] = useState(initialSearchValue);\n const [filteredOptions, setFilteredOptions] = useState(options);\n\n useEffect(() => {\n setFilterValue(initialSearchValue);\n }, [initialSearchValue]);\n\n useEffect(() => {\n if (filterValue === '') {\n setFilteredOptions(options);\n return;\n }\n const newFilteredOptions = options.filter(\n option => option.name.toLowerCase().includes(filterValue.toLowerCase()),\n );\n setFilteredOptions(newFilteredOptions);\n }, [filterValue]);\n\n useEffect(() => {\n setFilteredOptions(options);\n }, [options]);\n\n if (!showOptions) {\n return null;\n }\n\n return (\n <>\n \n {allowSearch && (\n
    \n {\n setFilterValue(e.target.value);\n }}\n onKeyDown={(e) => {\n if (\n e.key === 'Escape'\n || e.key === 'ArrowUp'\n // || e.key === 'ArrowDown'\n || e.key === 'Enter'\n ) {\n setShowOptions(false);\n }\n }}\n />\n
    \n )}\n
      \n {filteredOptions.map(option => (\n handleOptionSelection(option)}\n >\n \n {option.name}\n \n {option.desc && (\n \n   :  \n {option.desc}\n \n )}\n \n ))}\n
    \n \n \n );\n};\n\nOptionsList.propTypes = {\n options: PropTypes.arrayOf(Object),\n showOptions: PropTypes.bool,\n handleOptionSelection: PropTypes.func,\n getThemeClasses: PropTypes.func,\n setShowOptions: PropTypes.func,\n containerRef: PropTypes.instanceOf(Object),\n allowSearch: PropTypes.bool,\n initialSearchValue: PropTypes.string,\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nexport const StringBuilderFooter = (props) => {\n const {\n note, error, inputInFocus, stringBuilderHeight, dropdownTriggerKey,\n } = props;\n return (\n \n {inputInFocus && !error && (\n

    \n \n Enter\n {dropdownTriggerKey}\n to add any parameter\n \n

    \n )}\n {note &&

    {note}

    }\n {error && error !== 'true' && error !== 'false' && (\n

    {error}

    \n )}\n \n );\n};\n\nStringBuilderFooter.propTypes = {\n note: PropTypes.string,\n error: PropTypes.string,\n dropdownTriggerKey: PropTypes.string,\n inputInFocus: PropTypes.bool,\n stringBuilderHeight: PropTypes.number,\n};\n","import React, { useEffect, useState, useRef } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { usePrevious } from '../../../hooks';\n\nimport { StringInput } from './js/string-input';\nimport { TokenizedString } from './js/tokenized-string';\nimport { OptionsList } from './js/options-list';\nimport { StringBuilderFooter } from './js/string-builder-footer';\nimport { stringToTokenString, setCursorPos } from './js/service';\n\n/**\n * - String builder component used to build one single string using the given options.\n * - This component can be useful from UX perspective,\n * when user needs to build any string which might contain complex values which are error prone.\n * - `` abstracts the complex values by supplying them\n * as selectable options in more user friendly format with description for user.\n * - Wire-frames : https://miro.com/app/board/o9J_kipLWwA=/\n */\n\nfunction StringBuilder(props) {\n const {\n options,\n onChange,\n value,\n theme,\n error,\n disabled,\n readOnly,\n note,\n label,\n labelwidth,\n placeholder,\n allowSearch,\n dropdownTriggerKey,\n invalidTokenRegex,\n name,\n wrapperClassName = '',\n } = props;\n const [tokenValue, setTokenValue] = useState(value);\n const [stringBuilderHeight, setStringBuilderHeight] = useState();\n const [showOptions, setShowOptions] = useState(false);\n const [tokenString, setTokenString] = useState(stringToTokenString(value, options));\n const [contextMaxLength, setContentMaxLength] = useState(\n tokenValue.length + 5,\n );\n const [tokens, setTokens] = useState([]);\n const [prevTokenValue, setPrevTokenValue] = useState();\n const [inputInFocus, setInputInFocus] = useState(false);\n const [initialSearchValue, setInitialSearchValue] = useState('');\n const [selectedInvalidToken, setSelectedInvalidToken] = useState(null);\n\n const prevTokenString = usePrevious(tokenString);\n\n const containerRef = useRef();\n const inputRef = useRef();\n\n // Execute callback on value change\n useEffect(() => {\n if (onChange) {\n onChange(tokenValue.replaceAll(' ', ''));\n }\n }, [tokenValue]);\n\n useEffect(() => {\n const tempVal = invalidTokenRegex ? value.replaceAll(invalidTokenRegex, ' $& ') : value;\n setTokenValue(() => tempVal);\n setTokenString(() => stringToTokenString(tempVal, options));\n }, [value]);\n\n /**\n * Split string into tokens and set string value w/o __TOKEN__\n * Tokens are used to render a styled tokens using ``\n */\n useEffect(() => {\n const splitTokens = tokenString.split(/__TOKEN__(.*?)__TOKEN__/g);\n const splitTokensStr = splitTokens.join('');\n setTokens(() => splitTokens);\n setTokenValue(() => splitTokensStr);\n setPrevTokenValue(() => splitTokensStr);\n }, [tokenString]);\n\n useEffect(() => {\n // Auto Grow Input\n if (contextMaxLength - 3 < tokenValue.length) {\n const newHeight = inputRef.current.scrollHeight + 3;\n setStringBuilderHeight(() => newHeight);\n setContentMaxLength(() => contextMaxLength + 25);\n }\n }, [tokenString, tokenValue]);\n\n /**\n *\n * @param {*} option : Option object for selected option from dropdown\n * When user selects an option append and prepend `__TOKEN__` to detect the token,\n * so they can be styled or manipulated later\n */\n const handleOptionSelection = (option) => {\n let newInput = '';\n const { selectionStart } = inputRef.current;\n if (prevTokenString && prevTokenString !== value && !selectedInvalidToken) {\n /* eslint prefer-destructuring: [\"error\", {VariableDeclarator: {object: true}}] */\n newInput = prevTokenString + tokenValue.split(prevTokenValue)[1];\n }\n let tokenizedString = '';\n // Adding token in Middle\n if (selectionStart !== tokenValue.length && !selectedInvalidToken) {\n const newTokenValue = tokenValue.slice(0, selectionStart)\n + option.id\n + tokenValue.slice(selectionStart);\n tokenizedString = stringToTokenString(newTokenValue, options);\n setCursorPos(inputRef, selectionStart + option.id.length);\n } else {\n tokenizedString = `${newInput || tokenValue}__TOKEN__${\n option.id\n }__TOKEN__`;\n }\n if (selectedInvalidToken) {\n tokenizedString = tokenString.replace(\n ` ${selectedInvalidToken} `,\n `__TOKEN__${option.id}__TOKEN__`,\n );\n setSelectedInvalidToken(() => null);\n setInitialSearchValue(() => '');\n }\n setTokenString(() => tokenizedString);\n setShowOptions(() => false);\n setTimeout(() => {\n inputRef.current.focus();\n }, 20);\n };\n\n const getThemeClasses = () => {\n const themes = theme ? theme.split(' ') : [];\n return themes.map((iTheme) => `tyk-form-group--${iTheme}`);\n };\n\n const getCssClasses = () => [\n 'tyk-form-group',\n ...getThemeClasses(),\n error && 'has-error',\n disabled && 'disabled',\n ]\n .filter(Boolean)\n .join(' ');\n\n const findInvalidTokenSubstitute = (invalidToken) => {\n setSelectedInvalidToken(() => invalidToken);\n setInitialSearchValue(() => invalidToken.replace(/[^a-zA-Z ]/g, ''));\n setShowOptions(() => true);\n };\n\n return (\n
    \n
    \n {label && (\n \n )}\n {!readOnly && (\n
    \n \n \n \n \n \n
    \n
    \n )}\n {\n readOnly &&
    {value || '-'}
    \n }\n
    \n \n );\n}\n\nStringBuilder.propTypes = {\n /** Options to render in the list */\n options: PropTypes.arrayOf(\n PropTypes.shape({\n /** id is the value that will be appended to the string on selection */\n id: PropTypes.string.isRequired,\n /** name of option (view) */\n name: PropTypes.string.isRequired,\n /** to style / highlight the token */\n className: PropTypes.string,\n /** description of option */\n desc: PropTypes.string,\n }),\n ),\n /** Callback executed on change of string value */\n onChange: PropTypes.func,\n /** Initial value */\n value: PropTypes.string,\n /** Disable input */\n disabled: PropTypes.bool,\n /** Read Only prop removes the form element and displays just the value */\n readOnly: PropTypes.bool,\n /** Show error state (w/ or w/o message) */\n error: PropTypes.string,\n /** Component theme */\n theme: PropTypes.string,\n /** Footnote for component */\n note: PropTypes.string,\n /** Label for component */\n label: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.func,\n PropTypes.string,\n ]),\n /** Label Width for component */\n labelwidth: PropTypes.string,\n /** Placeholder for component */\n placeholder: PropTypes.string,\n /** Key To trigger dropdown */\n dropdownTriggerKey: PropTypes.string,\n /** Regex to detect invalid tokens in the value */\n invalidTokenRegex: PropTypes.instanceOf(RegExp),\n /** Allow users to search from options */\n allowSearch: PropTypes.bool,\n name: PropTypes.string,\n wrapperClassName: PropTypes.string,\n};\n\nStringBuilder.defaultProps = {\n onChange: null,\n value: '',\n options: [],\n theme: 'default',\n};\n\nexport default StringBuilder;\n","const config = {\n FORM_DEBOUNCE: 200,\n};\n\nexport function setConfig(key, val) {\n config[key] = val;\n}\n\nexport default config;\n","import React, { useCallback, useEffect, useState } from 'react';\n\nimport config from '../config/config';\n\nfunction getValueFromPath(obj, path) {\n // turn 'aaa.qqq[2].bbb[5][3].mmm' into ['aaa', 'qqq', '2', 'bbb', '5', '3', 'mmm']\n const indexes = path.split(/[\\][.]/).filter(Boolean);\n return indexes.reduce((acc, v) => (acc ? acc[v] : acc), obj);\n}\n\nfunction debounce(f, limit) {\n let timeoutId;\n return (...args) => {\n clearTimeout(timeoutId);\n timeoutId = setTimeout(f, limit, ...args);\n };\n}\n\n/* eslint-disable react/prop-types, react/function-component-definition */\n/**\n * A wrapper function that \"prepares\" a tyk-ui form component to be used with the formik library.\n * It handles things like setting the value of the component, change events, error state,\n * and also has a default debounce time for when the change event is triggered.\n */\nconst wrapper = (Component, options) => ({ field, form, ...properties }) => {\n const DEFAULT_DEBOUNCE_TIME_MS = typeof config.FORM_DEBOUNCE === 'number' ? config.FORM_DEBOUNCE : 200;\n const [myValue, setMyValue] = useState(field.value);\n const opts = {\n getOnChangeProps: () => ({}),\n hasIsFieldProp: false,\n ...options,\n };\n\n const executeDebounced = useCallback((() => {\n const fn = (f) => f();\n if (\n properties.debounce === false\n || (config.FORM_DEBOUNCE === false && !properties.debounce)\n ) {\n return fn;\n }\n const timeout = typeof properties.debounce === 'number'\n ? properties.debounce\n : DEFAULT_DEBOUNCE_TIME_MS;\n return debounce(fn, timeout);\n })(), []);\n\n const getValue = (v) => {\n if (v && v.target) {\n if (v.target.nodeName === 'INPUT' && (v.target.type === 'checkbox' || v.target.type === 'radio')) {\n return v.target.checked;\n }\n return v.target.value;\n }\n return v;\n };\n\n const onChange = (valueOrEvent) => {\n const value = getValue(valueOrEvent);\n const onChangeProps = opts.getOnChangeProps(value, field, form, properties);\n\n const newValue = onChangeProps.value || properties.value || value;\n executeDebounced(() => {\n if (typeof properties.onChange === 'function') {\n properties.onChange(newValue);\n }\n field.onChange({ target: { name: field.name, value: newValue, ...onChangeProps } });\n });\n setMyValue(newValue);\n };\n\n const formError = (getValueFromPath(form.touched, field.name) || Boolean(form.submitCount))\n && getValueFromPath(form.errors, field.name);\n const error = typeof formError === 'string' ? formError : '';\n\n useEffect(() => {\n setMyValue(field.value);\n }, [field.value]);\n\n // eslint-disable-next-line no-param-reassign\n if (form.status?.disabled) properties.disabled = true;\n\n const componentProps = { ...properties };\n delete componentProps.debounce;\n\n return (\n \n );\n};\n\nexport default wrapper;\n","import wrapper from '../../../utils/formik';\nimport Checkbox from '../../components/Checkbox';\n\nexport default wrapper(Checkbox, {\n getOnChangeProps: (value) => ({\n checked: value,\n }),\n});\n","import wrapper from '../../../utils/formik';\nimport CodeEditor from '../../components/CodeEditor';\n\nexport default wrapper(CodeEditor);\n","import wrapper from '../../../utils/formik';\nimport Combobox from '../../components/Combobox';\n\nexport default wrapper(Combobox);\n","import wrapper from '../../../utils/formik';\nimport Combobox2 from '../../components/Combobox2';\n\nexport default wrapper(Combobox2);\n","import wrapper from '../../../utils/formik';\nimport DatePicker from '../../components/DatePicker';\n\nexport default wrapper(DatePicker);\n","import wrapper from '../../../utils/formik';\nimport EditableList from '../../components/EditableList';\n\nexport default wrapper(EditableList, {\n getOnChangeProps: value => ({ value: value || [] }),\n});\n","import wrapper from '../../../utils/formik';\nimport EditableList2 from '../../components/EditableList2';\n\nexport default wrapper(EditableList2);\n","import wrapper from '../../../utils/formik';\nimport FileInput from '../../components/FileInput';\n\nexport default wrapper(FileInput);\n","import wrapper from '../../../utils/formik';\nimport Input from '../../components/Input';\n\nexport default wrapper(Input, { hasIsFieldProp: true });\n","import wrapper from '../../../utils/formik';\nimport Input2 from '../../components/Input2';\n\nexport default wrapper(Input2);\n","import wrapper from '../../../utils/formik';\nimport MultiSelect from '../../components/Multiselect';\n\nexport default wrapper(MultiSelect);\n","import wrapper from '../../../utils/formik';\nimport Radio from '../../components/Radio';\n\nexport default wrapper(Radio, {\n getOnChangeProps: (value, field, form, properties) => ({\n checked: value === properties.value,\n value: properties.value,\n }),\n});\n","import wrapper from '../../../utils/formik';\nimport Select from '../../components/Select';\n\nexport default wrapper(Select, { hasIsFieldProp: true });\n","import wrapper from '../../../utils/formik';\nimport SelectableList from '../../components/SelectableList';\n\nexport default wrapper(SelectableList);\n","import wrapper from '../../../utils/formik';\nimport Textarea from '../../components/Textarea';\n\nexport default wrapper(Textarea);\n","import wrapper from '../../../utils/formik';\nimport Toggle from '../../components/Toggle';\n\nexport default wrapper(Toggle);\n","import wrapper from '../../../utils/formik';\nimport StringBuilder from '../../components/StringBuilder';\n\nexport default wrapper(StringBuilder);\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { fromJS } from 'immutable';\n\nimport CodeEditor from '../../components/CodeEditor';\n\nexport default class FieldCodeEditor extends Component {\n static propTypes = {\n input: PropTypes.instanceOf(Object),\n meta: PropTypes.instanceOf(Object),\n validationmessages: PropTypes.instanceOf(Object),\n };\n\n constructor(props) {\n super(props);\n\n this.handleOnChange = this.handleOnChange.bind(this);\n }\n\n getInputError() {\n const { meta, validationmessages } = this.props;\n const { touched, error, warning } = meta;\n let message = null;\n\n if (touched && error && validationmessages[error]) {\n message = validationmessages[error];\n } else if (touched && warning) {\n message = 'warning';\n }\n\n return message;\n }\n\n handleOnChange(value) {\n const { input } = this.prop;\n const { onChange } = input;\n\n onChange(fromJS(value));\n }\n\n render() {\n const { input, ...rest } = this.props;\n\n return (\n \n );\n }\n}\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { fromJS } from 'immutable';\n\nimport Combobox from '../../components/Combobox';\n\nexport default class FieldCombobox extends Component {\n static propTypes = {\n meta: PropTypes.instanceOf(Object),\n input: PropTypes.instanceOf(Object),\n validationmessages: PropTypes.instanceOf(Object),\n }\n\n constructor(props) {\n super(props);\n\n this.handleOnChange = this.handleOnChange.bind(this);\n }\n\n getComboboxError() {\n const { meta, validationmessages } = this.props;\n const { touched, error, warning } = meta;\n let message = null;\n\n if (touched && error && validationmessages[error]) {\n message = validationmessages[error];\n } else if (touched && warning) {\n message = 'warning';\n }\n\n return message;\n }\n\n handleOnChange(value) {\n const { input } = this.props;\n const { onChange } = input;\n\n onChange(fromJS(value));\n }\n\n render() {\n const { ...props } = this.props;\n\n return (\n \n );\n }\n}\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { fromJS } from 'immutable';\n\nimport Dropdown from '../../components/Dropdown';\n\nexport default class FieldDropdown extends Component {\n static propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n input: PropTypes.instanceOf(Object),\n };\n\n constructor(props) {\n super(props);\n\n this.handleOnChange = this.handleOnChange.bind(this);\n }\n\n handleOnChange(value) {\n const { input } = this.props;\n const { onChange } = input;\n\n onChange(fromJS(value));\n }\n\n render() {\n const {\n children,\n input,\n ...rest\n } = this.props;\n\n return (\n \n {children}\n \n );\n }\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport Pagination from '../../components/Pagination';\n\nconst FieldPagination = (props) => {\n const { input, ...rest } = props;\n\n return (\n \n );\n};\n\nFieldPagination.propTypes = {\n input: PropTypes.instanceOf(Object),\n};\n\nexport default FieldPagination;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { fromJS } from 'immutable';\n\nimport Combobox2 from '../../components/Combobox2';\n\nconst FieldCombobox2 = (props) => {\n const { input, meta, validationmessages } = props;\n\n const getComboboxError = () => {\n const { touched, error, warning } = meta;\n let message = null;\n\n if (touched && error && validationmessages[error]) {\n message = validationmessages[error];\n } else if (touched && warning) {\n message = 'warning';\n }\n return message;\n };\n\n const handleOnChange = (value) => {\n const { onChange } = input;\n onChange(fromJS(value));\n };\n\n return (\n \n );\n};\n\nFieldCombobox2.propTypes = {\n meta: PropTypes.instanceOf(Object),\n input: PropTypes.instanceOf(Object),\n validationmessages: PropTypes.instanceOf(Object),\n};\n\nexport default FieldCombobox2;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { fromJS } from 'immutable';\n\nimport DatePicker from '../../components/DatePicker';\n\nconst FormDatePicker = (props) => {\n const {\n input,\n meta,\n validationmessages,\n ...rest\n } = props;\n\n const getDatePickerError = () => {\n const { touched, error } = meta;\n let message = null;\n\n if (touched && error && validationmessages[error]) {\n message = validationmessages[error];\n }\n\n return message;\n };\n\n const handleOnChange = (value) => {\n const { onChange } = input;\n\n onChange(fromJS(value));\n };\n\n return (\n \n );\n};\n\nFormDatePicker.propTypes = {\n meta: PropTypes.instanceOf(Object),\n input: PropTypes.instanceOf(Object),\n validationmessages: PropTypes.instanceOf(Object),\n};\n\nexport default FormDatePicker;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { fromJS } from 'immutable';\n\nimport EditableList from '../../components/EditableList';\n\nexport default class FieldEditableList extends Component {\n static propTypes = {\n input: PropTypes.instanceOf(Object),\n meta: PropTypes.instanceOf(Object),\n validationmessages: PropTypes.instanceOf(Object),\n };\n\n constructor(props) {\n super(props);\n\n this.handleOnChange = this.handleOnChange.bind(this);\n }\n\n getEditableListError() {\n const { meta, validationmessages } = this.props;\n const { touched, error } = meta;\n let message = null;\n\n if (touched && error && validationmessages[error]) {\n message = validationmessages[error];\n }\n\n return message;\n }\n\n handleOnChange(value) {\n const { input } = this.props;\n const { onChange } = input;\n\n onChange(fromJS(value));\n }\n\n render() {\n const { ...props } = this.props;\n\n return (\n \n );\n }\n}\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\nimport FileInput from '../../components/FileInput';\n\nexport default class FieldFileInput extends Component {\n static propTypes = {\n input: PropTypes.instanceOf(Object),\n meta: PropTypes.instanceOf(Object),\n validationmessages: PropTypes.instanceOf(Object),\n };\n\n getInputError() {\n const { meta, validationmessages } = this.props;\n const { touched, error, warning } = meta;\n let message = null;\n\n if (touched && error && validationmessages[error]) {\n message = validationmessages[error];\n } else if (touched && warning) {\n message = 'warning';\n }\n\n return message;\n }\n\n render() {\n const { input, ...rest } = this.props;\n\n return (\n \n );\n }\n}\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Input from '../../components/Input';\n\nexport default class FieldInput extends Component {\n static propTypes = {\n meta: PropTypes.instanceOf(Object),\n input: PropTypes.instanceOf(Object),\n validationmessages: PropTypes.instanceOf(Object),\n }\n\n getInputError() {\n const { meta, validationmessages } = this.props;\n const { touched, error, warning } = meta;\n let message = null;\n\n if (touched && error && validationmessages[error]) {\n message = validationmessages[error];\n } else if (touched && warning) {\n message = 'warning';\n }\n\n return message;\n }\n\n render() {\n const { input, ...rest } = this.props;\n\n return (\n \n );\n }\n}\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { fromJS } from 'immutable';\n\nimport Multiselect from '../../components/Multiselect';\n\nexport default class FieldMultiselect extends Component {\n static propTypes = {\n input: PropTypes.instanceOf(Object),\n meta: PropTypes.instanceOf(Object),\n validationmessages: PropTypes.instanceOf(Object),\n }\n\n constructor(props) {\n super(props);\n\n this.handleOnChange = this.handleOnChange.bind(this);\n }\n\n getMultiselectError() {\n const { meta, validationmessages } = this.props;\n const { touched, error, warning } = meta;\n let message = null;\n\n if (touched && error && validationmessages[error]) {\n message = validationmessages[error];\n } else if (touched && warning) {\n message = 'warning';\n }\n\n return message;\n }\n\n handleOnChange(value) {\n const { input } = this.props;\n const { onChange } = input;\n\n onChange(fromJS(value));\n }\n\n render() {\n const { ...props } = this.props;\n\n return (\n \n );\n }\n}\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { fromJS } from 'immutable';\n\nimport Select from '../../components/Select';\n\nexport default class FieldSelect extends Component {\n static propTypes = {\n input: PropTypes.instanceOf(Object),\n meta: PropTypes.instanceOf(Object),\n validationmessages: PropTypes.instanceOf(Object),\n };\n\n constructor(props) {\n super(props);\n\n this.handleEvent = this.handleEvent.bind(this);\n }\n\n getSelectError() {\n const { meta, validationmessages } = this.props;\n const { touched, error, warning } = meta;\n let message = null;\n\n if (touched && error && validationmessages[error]) {\n message = validationmessages[error];\n } else if (touched && warning) {\n message = 'warning';\n }\n\n return message;\n }\n\n handleEvent(selectValue) {\n const { input } = this.props;\n const { onChange, value } = input;\n\n onChange(fromJS(selectValue !== undefined ? selectValue : value));\n }\n\n render() {\n const { input, ...rest } = this.props;\n\n return (\n \n );\n }\n}\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { fromJS } from 'immutable';\n\nimport SelectableList from '../../components/SelectableList';\n\nexport default class FieldSelectableList extends Component {\n static propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.node,\n ]),\n onChange: PropTypes.func,\n input: PropTypes.instanceOf(Object),\n };\n\n constructor(props) {\n super(props);\n\n this.handleOnChange = this.handleOnChange.bind(this);\n }\n\n handleOnChange(value) {\n const { input } = this.props;\n\n input.onChange(fromJS(value));\n }\n\n render() {\n const { children, ...props } = this.props;\n\n return (\n \n );\n }\n}\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { fromJS } from 'immutable';\n\nimport Toggle from '../../components/Toggle';\n\nexport default class FieldToggle extends Component {\n static propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.node,\n ]),\n onChange: PropTypes.func,\n input: PropTypes.instanceOf(Object),\n };\n\n constructor(props) {\n super(props);\n\n this.handleOnChange = this.handleOnChange.bind(this);\n }\n\n handleOnChange(value) {\n const { input } = this.props;\n\n input.onChange(fromJS(value));\n }\n\n render() {\n const { children, ...props } = this.props;\n\n return (\n \n {children}\n \n );\n }\n}\n","import './index.scss';\n\n// -- Components\nexport { default as Accordion } from './components/Accordion';\nexport { default as Button } from './components/Button';\nexport { default as ButtonGroup } from './components/ButtonGroup';\nexport { default as Collapsible } from './components/Collapsible';\nexport { default as Chart } from './components/Chart';\nexport { default as CopyToClipboard } from './components/CopyToClipboard';\nexport { default as Confirm } from './components/Confirm';\nexport { default as FixedWrapper } from './components/FixedWrapper';\nexport { default as FloatingContainer } from './components/FloatingContainer';\nexport { default as Icon } from './components/Icon';\nexport { default as InfiniteScroller } from './components/InfiniteScroller';\nexport { default as InfoNote } from './components/InfoNote';\nexport { default as List } from './components/List';\nexport { default as Loader } from './components/Loader';\nexport { default as Message } from './components/Message';\nexport { default as Modal } from './components/Modal';\nexport { default as NavBar } from './components/NavBar';\nexport { default as Navigation } from './components/Navigation';\nexport { default as Panel } from './components/Panel';\nexport { default as Pill } from './components/Pill';\nexport { default as RevealPanel } from './components/RevealPanel';\nexport { default as Tabs } from './components/Tabs';\nexport { default as TextEllipsis } from './components/TextEllipsis';\nexport { default as toast } from './components/Toast';\nexport { default as Tooltip } from './components/Tooltip';\nexport { default as Table } from './components/Table';\n\n// -- Layout\nexport { default as Column } from './layout/Column';\nexport { default as Row } from './layout/Row';\n\n// -- Form Components\nexport { default as Checkbox } from './form/components/Checkbox';\nexport { default as Dropdown } from './form/components/Dropdown';\nexport { default as CodeEditor } from './form/components/CodeEditor';\nexport { default as Combobox } from './form/components/Combobox';\nexport { default as Combobox2 } from './form/components/Combobox2';\nexport { default as DatePicker } from './form/components/DatePicker';\nexport { default as EditableList } from './form/components/EditableList';\nexport { default as EditableList2 } from './form/components/EditableList2';\nexport { default as FileInput } from './form/components/FileInput';\nexport { default as Input } from './form/components/Input';\nexport { default as Input2 } from './form/components/Input2';\nexport { default as Multiselect } from './form/components/Multiselect';\nexport { default as Radio } from './form/components/Radio';\nexport { default as Select } from './form/components/Select';\nexport { default as SelectableList } from './form/components/SelectableList';\nexport { default as Textarea } from './form/components/Textarea';\nexport { default as Toggle } from './form/components/Toggle';\nexport { default as Pagination } from './form/components/Pagination';\nexport { default as StringBuilder } from './form/components/StringBuilder';\n\n// -- Formik\n\nexport { default as FormikCheckbox } from './form/formik/FormikCheckbox';\nexport { default as FormikCodeEditor } from './form/formik/FormikCodeEditor';\nexport { default as FormikCombobox } from './form/formik/FormikCombobox';\nexport { default as FormikCombobox2 } from './form/formik/FormikCombobox2';\nexport { default as FormikDatePicker } from './form/formik/FormikDatePicker';\nexport { default as FormikEditableList } from './form/formik/FormikEditableList';\nexport { default as FormikEditableList2 } from './form/formik/FormikEditableList2';\nexport { default as FormikFileInput } from './form/formik/FormikFileInput';\nexport { default as FormikInput } from './form/formik/FormikInput';\nexport { default as FormikInput2 } from './form/formik/FormikInput2';\nexport { default as FormikMultiselect } from './form/formik/FormikMultiselect';\nexport { default as FormikRadio } from './form/formik/FormikRadio';\nexport { default as FormikSelect } from './form/formik/FormikSelect';\nexport { default as FormikSelectableList } from './form/formik/FormikSelectableList';\nexport { default as FormikTextarea } from './form/formik/FormikTextarea';\nexport { default as FormikToggle } from './form/formik/FormikToggle';\nexport { default as FormikStringBuilder } from './form/formik/FormikStringBuilder';\nexport { default as FormikWrapper } from './utils/formik';\n\n// Redux - Form\n\nexport { default as FieldCodeEditor } from './form/redux-form/FieldCodeEditor';\nexport { default as FieldCombobox } from './form/redux-form/FieldCombobox';\nexport { default as FieldDropdown } from './form/redux-form/FieldDropdown';\nexport { default as FieldPagination } from './form/redux-form/FieldPagination';\nexport { default as FieldCombobox2 } from './form/redux-form/FieldCombobox2';\nexport { default as FieldDatePicker } from './form/redux-form/FieldDatePicker';\nexport { default as FieldEditableList } from './form/redux-form/FieldEditableList';\nexport { default as FieldFileInput } from './form/redux-form/FieldFileInput';\nexport { default as FieldInput } from './form/redux-form/FieldInput';\nexport { default as FieldMultiselect } from './form/redux-form/FieldMultiselect';\nexport { default as FieldSelect } from './form/redux-form/FieldSelect';\nexport { default as FieldSelectableList } from './form/redux-form/FieldSelectableList';\nexport { default as FieldToggle } from './form/redux-form/FieldToggle';\n\n// -- Utils\nexport { default as usePrevious } from './hooks/usePrevious';\nexport { default as useTimeout } from './hooks/useTimeout';\nexport { default as useInterval } from './hooks/useInterval';\nexport { default as useEventListener } from './hooks/useEventListener';\nexport { default as useComponentSize } from './hooks/useComponentSize';\nexport { setConfig } from './utils/config/config';\n"],"names":["_a","values","_b","filteredValues","newTokenValue","newTokenizedString","invalidToken","newTokenString"],"sourceRoot":""} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 2488c3c0..d19aaa31 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,7 +9,7 @@ "version": "3.0.10", "license": "ISC", "dependencies": { - "ace-builds": "1.31.2", + "ace-builds": "1.32.0", "brace": "0.11.1", "date-fns": "2.30.0", "echarts": "5.4.3", @@ -27,19 +27,19 @@ "sass": "1.69.5" }, "devDependencies": { - "@babel/core": "7.23.3", + "@babel/core": "7.23.5", "@babel/eslint-parser": "7.23.3", - "@babel/preset-env": "7.23.3", + "@babel/preset-env": "7.23.5", "@babel/preset-react": "7.23.3", - "@cypress/code-coverage": "3.12.12", + "@cypress/code-coverage": "3.12.13", "@cypress/react": "8.0.0", "@cypress/webpack-dev-server": "3.7.1", "@jsdevtools/coverage-istanbul-loader": "3.0.5", "copy-webpack-plugin": "11.0.0", "css-loader": "6.8.1", - "cypress": "13.6.0", + "cypress": "13.6.1", "esbuild-loader": "4.0.2", - "eslint": "8.54.0", + "eslint": "8.55.0", "eslint-config-airbnb": "19.0.4", "eslint-plugin-cypress": "2.15.1", "eslint-plugin-import": "2.29.0", @@ -47,7 +47,7 @@ "eslint-plugin-react": "7.33.2", "eslint-plugin-react-hooks": "4.6.0", "eslint-webpack-plugin": "4.0.1", - "html-webpack-plugin": "5.5.3", + "html-webpack-plugin": "5.5.4", "mini-css-extract-plugin": "2.7.6", "react-styleguidist": "13.1.1", "resolve-url-loader": "5.0.0", @@ -81,9 +81,9 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.4.tgz", - "integrity": "sha512-r1IONyb6Ia+jYR2vvIDhdWdlTGhqbBoFqLTQidzZ4kepUFH15ejXvFHxCVbtl7BOXIudsIubf4E81xeA3h3IXA==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", + "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", "dev": true, "dependencies": { "@babel/highlight": "^7.23.4", @@ -94,30 +94,30 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.3.tgz", - "integrity": "sha512-BmR4bWbDIoFJmJ9z2cZ8Gmm2MXgEDgjdWgpKmKWUt54UGFJdlj31ECtbaDvCG/qVdG3AQ1SfpZEs01lUFbzLOQ==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.5.tgz", + "integrity": "sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.3.tgz", - "integrity": "sha512-Jg+msLuNuCJDyBvFv5+OKOUjWMZgd85bKjbICd3zWrKAo+bJ49HJufi7CQE0q0uR8NGyO6xkCACScNqyjHSZew==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.5.tgz", + "integrity": "sha512-Cwc2XjUrG4ilcfOw4wBAK+enbdgwAcAJCfGUItPBKR7Mjw4aEfAFYrLxeRp4jWgtNIKn3n2AlBOfwwafl+42/g==", "dev": true, "dependencies": { "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.22.13", - "@babel/generator": "^7.23.3", + "@babel/code-frame": "^7.23.5", + "@babel/generator": "^7.23.5", "@babel/helper-compilation-targets": "^7.22.15", "@babel/helper-module-transforms": "^7.23.3", - "@babel/helpers": "^7.23.2", - "@babel/parser": "^7.23.3", + "@babel/helpers": "^7.23.5", + "@babel/parser": "^7.23.5", "@babel/template": "^7.22.15", - "@babel/traverse": "^7.23.3", - "@babel/types": "^7.23.3", + "@babel/traverse": "^7.23.5", + "@babel/types": "^7.23.5", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -151,12 +151,12 @@ } }, "node_modules/@babel/generator": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.4.tgz", - "integrity": "sha512-esuS49Cga3HcThFNebGhlgsrVLkvhqvYDTzgjfFFlHJcIfLe5jFmRRfCQ1KuBfc4Jrtn3ndLgKWAKjBE+IraYQ==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.5.tgz", + "integrity": "sha512-BPssCHrBD+0YrxviOa3QzpqwhNIXKEtOa2jQrm4FlmkC2apYgRnQcmPWiGZDlGxiNtltnUFolMe8497Esry+jA==", "dev": true, "dependencies": { - "@babel/types": "^7.23.4", + "@babel/types": "^7.23.5", "@jridgewell/gen-mapping": "^0.3.2", "@jridgewell/trace-mapping": "^0.3.17", "jsesc": "^2.5.1" @@ -448,9 +448,9 @@ } }, "node_modules/@babel/helper-validator-option": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz", - "integrity": "sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz", + "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==", "dev": true, "engines": { "node": ">=6.9.0" @@ -471,14 +471,14 @@ } }, "node_modules/@babel/helpers": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.4.tgz", - "integrity": "sha512-HfcMizYz10cr3h29VqyfGL6ZWIjTwWfvYBMsBVGwpcbhNGe3wQ1ZXZRPzZoAHhd9OqHadHqjQ89iVKINXnbzuw==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.5.tgz", + "integrity": "sha512-oO7us8FzTEsG3U6ag9MfdF1iA/7Z6dz+MtFhifZk8C8o453rGJFFWUP1t+ULM9TUIAzC9uxXEiXjOiVMyd7QPg==", "dev": true, "dependencies": { "@babel/template": "^7.22.15", - "@babel/traverse": "^7.23.4", - "@babel/types": "^7.23.4" + "@babel/traverse": "^7.23.5", + "@babel/types": "^7.23.5" }, "engines": { "node": ">=6.9.0" @@ -499,9 +499,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.4.tgz", - "integrity": "sha512-vf3Xna6UEprW+7t6EtOmFpHNAuxw3xqPZghy+brsnusscJRW5BMUzzHZc5ICjULee81WeUV2jjakG09MDglJXQ==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.5.tgz", + "integrity": "sha512-hOOqoiNXrmGdFbhgCzu6GiURxUgM27Xwd/aPuu8RfHEZPBzL1Z54okAHAQjXfcQNwvrlkAmAp4SlRTZ45vlthQ==", "dev": true, "bin": { "parser": "bin/babel-parser.js" @@ -934,9 +934,9 @@ } }, "node_modules/@babel/plugin-transform-classes": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.23.3.tgz", - "integrity": "sha512-FGEQmugvAEu2QtgtU0uTASXevfLMFfBeVCIIdcQhn/uBQsMTjBajdnAtanQlOcuihWh10PZ7+HWvc7NtBwP74w==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.23.5.tgz", + "integrity": "sha512-jvOTR4nicqYC9yzOHIhXG5emiFEOpappSJAl73SDSEDcybD+Puuze8Tnpb9p9qEyYup24tq891gkaygIFvWDqg==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", @@ -1658,15 +1658,15 @@ } }, "node_modules/@babel/preset-env": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.23.3.tgz", - "integrity": "sha512-ovzGc2uuyNfNAs/jyjIGxS8arOHS5FENZaNn4rtE7UdKMMkqHCvboHfcuhWLZNX5cB44QfcGNWjaevxMzzMf+Q==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.23.5.tgz", + "integrity": "sha512-0d/uxVD6tFGWXGDSfyMD1p2otoaKmu6+GD+NfAx0tMaH+dxORnp7T9TaVQ6mKyya7iBtCIVxHjWT7MuzzM9z+A==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.23.3", + "@babel/compat-data": "^7.23.5", "@babel/helper-compilation-targets": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-validator-option": "^7.22.15", + "@babel/helper-validator-option": "^7.23.5", "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.23.3", "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.23.3", "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.23.3", @@ -1690,25 +1690,25 @@ "@babel/plugin-syntax-top-level-await": "^7.14.5", "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", "@babel/plugin-transform-arrow-functions": "^7.23.3", - "@babel/plugin-transform-async-generator-functions": "^7.23.3", + "@babel/plugin-transform-async-generator-functions": "^7.23.4", "@babel/plugin-transform-async-to-generator": "^7.23.3", "@babel/plugin-transform-block-scoped-functions": "^7.23.3", - "@babel/plugin-transform-block-scoping": "^7.23.3", + "@babel/plugin-transform-block-scoping": "^7.23.4", "@babel/plugin-transform-class-properties": "^7.23.3", - "@babel/plugin-transform-class-static-block": "^7.23.3", - "@babel/plugin-transform-classes": "^7.23.3", + "@babel/plugin-transform-class-static-block": "^7.23.4", + "@babel/plugin-transform-classes": "^7.23.5", "@babel/plugin-transform-computed-properties": "^7.23.3", "@babel/plugin-transform-destructuring": "^7.23.3", "@babel/plugin-transform-dotall-regex": "^7.23.3", "@babel/plugin-transform-duplicate-keys": "^7.23.3", - "@babel/plugin-transform-dynamic-import": "^7.23.3", + "@babel/plugin-transform-dynamic-import": "^7.23.4", "@babel/plugin-transform-exponentiation-operator": "^7.23.3", - "@babel/plugin-transform-export-namespace-from": "^7.23.3", + "@babel/plugin-transform-export-namespace-from": "^7.23.4", "@babel/plugin-transform-for-of": "^7.23.3", "@babel/plugin-transform-function-name": "^7.23.3", - "@babel/plugin-transform-json-strings": "^7.23.3", + "@babel/plugin-transform-json-strings": "^7.23.4", "@babel/plugin-transform-literals": "^7.23.3", - "@babel/plugin-transform-logical-assignment-operators": "^7.23.3", + "@babel/plugin-transform-logical-assignment-operators": "^7.23.4", "@babel/plugin-transform-member-expression-literals": "^7.23.3", "@babel/plugin-transform-modules-amd": "^7.23.3", "@babel/plugin-transform-modules-commonjs": "^7.23.3", @@ -1716,15 +1716,15 @@ "@babel/plugin-transform-modules-umd": "^7.23.3", "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5", "@babel/plugin-transform-new-target": "^7.23.3", - "@babel/plugin-transform-nullish-coalescing-operator": "^7.23.3", - "@babel/plugin-transform-numeric-separator": "^7.23.3", - "@babel/plugin-transform-object-rest-spread": "^7.23.3", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.23.4", + "@babel/plugin-transform-numeric-separator": "^7.23.4", + "@babel/plugin-transform-object-rest-spread": "^7.23.4", "@babel/plugin-transform-object-super": "^7.23.3", - "@babel/plugin-transform-optional-catch-binding": "^7.23.3", - "@babel/plugin-transform-optional-chaining": "^7.23.3", + "@babel/plugin-transform-optional-catch-binding": "^7.23.4", + "@babel/plugin-transform-optional-chaining": "^7.23.4", "@babel/plugin-transform-parameters": "^7.23.3", "@babel/plugin-transform-private-methods": "^7.23.3", - "@babel/plugin-transform-private-property-in-object": "^7.23.3", + "@babel/plugin-transform-private-property-in-object": "^7.23.4", "@babel/plugin-transform-property-literals": "^7.23.3", "@babel/plugin-transform-regenerator": "^7.23.3", "@babel/plugin-transform-reserved-words": "^7.23.3", @@ -1817,19 +1817,19 @@ } }, "node_modules/@babel/traverse": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.4.tgz", - "integrity": "sha512-IYM8wSUwunWTB6tFC2dkKZhxbIjHoWemdK+3f8/wq8aKhbUscxD5MX72ubd90fxvFknaLPeGw5ycU84V1obHJg==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.5.tgz", + "integrity": "sha512-czx7Xy5a6sapWWRx61m1Ke1Ra4vczu1mCTtJam5zRTBOonfdJ+S/B6HYmGYu3fJtr8GGET3si6IhgWVBhJ/m8w==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.23.4", - "@babel/generator": "^7.23.4", + "@babel/code-frame": "^7.23.5", + "@babel/generator": "^7.23.5", "@babel/helper-environment-visitor": "^7.22.20", "@babel/helper-function-name": "^7.23.0", "@babel/helper-hoist-variables": "^7.22.5", "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.23.4", - "@babel/types": "^7.23.4", + "@babel/parser": "^7.23.5", + "@babel/types": "^7.23.5", "debug": "^4.1.0", "globals": "^11.1.0" }, @@ -1838,9 +1838,9 @@ } }, "node_modules/@babel/types": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.4.tgz", - "integrity": "sha512-7uIFwVYpoplT5jp/kVv6EF93VaJ8H+Yn5IczYiaAi98ajzjfoZfslet/e0sLh+wVBjb2qqIut1b0S26VSafsSQ==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.5.tgz", + "integrity": "sha512-ON5kSOJwVO6xXVRTvOI0eOnWe7VdUcIpsovGo9U/Br4Ie4UVFQTboO2cYnDhAGU6Fp+UxSiT+pMft0SMHfuq6w==", "dev": true, "dependencies": { "@babel/helper-string-parser": "^7.23.4", @@ -1868,9 +1868,9 @@ } }, "node_modules/@cypress/code-coverage": { - "version": "3.12.12", - "resolved": "https://registry.npmjs.org/@cypress/code-coverage/-/code-coverage-3.12.12.tgz", - "integrity": "sha512-V/fWyg6E1xdf/HHHUAg9cfGGU4hzsBgXYCm0ouXW2lOQHeo2/730R+CdXnbhPvDdl6GrndZtXW8K9FZhFNZJbQ==", + "version": "3.12.13", + "resolved": "https://registry.npmjs.org/@cypress/code-coverage/-/code-coverage-3.12.13.tgz", + "integrity": "sha512-T89OymsdSTcVKtdEqkKjHAKpDR0JCWxIgRBlldEcCAtDYW4Bo8QM+gkE75I18iixcPVCQbnZ9m6fx8Rl6ddc+w==", "dev": true, "dependencies": { "@cypress/webpack-preprocessor": "^6.0.0", @@ -1879,7 +1879,7 @@ "debug": "4.3.4", "execa": "4.1.0", "globby": "11.1.0", - "istanbul-lib-coverage": "3.0.0", + "istanbul-lib-coverage": "^3.0.0", "js-yaml": "4.1.0", "nyc": "15.1.0" }, @@ -2492,9 +2492,9 @@ } }, "node_modules/@eslint/eslintrc": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.3.tgz", - "integrity": "sha512-yZzuIG+jnVu6hNSzFEN07e8BxF3uAzYtQb6uDkaYZLo6oYZDCq454c5kB8zxnzfCYyP4MIuyBn10L0DqwujTmA==", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", "dev": true, "dependencies": { "ajv": "^6.12.4", @@ -2542,9 +2542,9 @@ } }, "node_modules/@eslint/js": { - "version": "8.54.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.54.0.tgz", - "integrity": "sha512-ut5V+D+fOoWPgGGNj83GGjnntO39xDy6DWxO0wb7Jp3DcMX0TfIqdzHF85VTQkerdyGmuuMD9AKAo5KiNlf/AQ==", + "version": "8.55.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.55.0.tgz", + "integrity": "sha512-qQfo2mxH5yVom1kacMtZZJFVdW+E70mqHMJvVg6WTLo+VBuQJ4TojZlfWBjK0ve5BdEeNAVxOsl/nvNMpJOaJA==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -3606,9 +3606,9 @@ } }, "node_modules/ace-builds": { - "version": "1.31.2", - "resolved": "https://registry.npmjs.org/ace-builds/-/ace-builds-1.31.2.tgz", - "integrity": "sha512-IeZI9ytPA6mB+goPxPkUPW4vXBoLuaBl5czu2tjtKrMi7mdRgyIUA/8e5JlrI1mqKoMeWHoUujzMTWkyutTdBw==" + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/ace-builds/-/ace-builds-1.32.0.tgz", + "integrity": "sha512-5EFblRIaqjwumglq1o7hF9/rA9WZBqwn6eyfYB6ZiQbf036gF5CW3HqFk+7pRx3+1A4KsNMZUnN2NEfYrJTfDA==" }, "node_modules/acorn": { "version": "8.11.2", @@ -5714,9 +5714,9 @@ "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==" }, "node_modules/cypress": { - "version": "13.6.0", - "resolved": "https://registry.npmjs.org/cypress/-/cypress-13.6.0.tgz", - "integrity": "sha512-quIsnFmtj4dBUEJYU4OH0H12bABJpSujvWexC24Ju1gTlKMJbeT6tTO0vh7WNfiBPPjoIXLN+OUqVtiKFs6SGw==", + "version": "13.6.1", + "resolved": "https://registry.npmjs.org/cypress/-/cypress-13.6.1.tgz", + "integrity": "sha512-k1Wl5PQcA/4UoTffYKKaxA0FJKwg8yenYNYRzLt11CUR0Kln+h7Udne6mdU1cUIdXBDTVZWtmiUjzqGs7/pEpw==", "dev": true, "hasInstallScript": true, "dependencies": { @@ -6834,15 +6834,15 @@ } }, "node_modules/eslint": { - "version": "8.54.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.54.0.tgz", - "integrity": "sha512-NY0DfAkM8BIZDVl6PgSa1ttZbx3xHgJzSNJKYcQglem6CppHyMhRIQkBVSSMaSRnLhig3jsDbEzOjwCVt4AmmA==", + "version": "8.55.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.55.0.tgz", + "integrity": "sha512-iyUUAM0PCKj5QpwGfmCAG9XXbZCWsqP/eWAWrG/W0umvjuLRBECwSFdt+rCntju0xEH7teIABPwXpahftIaTdA==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.3", - "@eslint/js": "8.54.0", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.55.0", "@humanwhocodes/config-array": "^0.11.13", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", @@ -8933,9 +8933,9 @@ } }, "node_modules/html-webpack-plugin": { - "version": "5.5.3", - "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.5.3.tgz", - "integrity": "sha512-6YrDKTuqaP/TquFH7h4srYWsZx+x6k6+FbsTm0ziCwGHDP78Unr1r9F/H4+sGmMbX08GQcJ+K64x55b+7VM/jg==", + "version": "5.5.4", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.5.4.tgz", + "integrity": "sha512-3wNSaVVxdxcu0jd4FpQFoICdqgxs4zIQQvj+2yQKFfBOnLETQ6X5CDWdeasuGlSsooFlMkEioWDTqBv1wvw5Iw==", "dev": true, "dependencies": { "@types/html-minifier-terser": "^6.0.0", diff --git a/package.json b/package.json index cf08481d..55a3ef02 100644 --- a/package.json +++ b/package.json @@ -42,19 +42,19 @@ ] }, "devDependencies": { - "@babel/core": "7.23.3", + "@babel/core": "7.23.5", "@babel/eslint-parser": "7.23.3", - "@babel/preset-env": "7.23.3", + "@babel/preset-env": "7.23.5", "@babel/preset-react": "7.23.3", - "@cypress/code-coverage": "3.12.12", + "@cypress/code-coverage": "3.12.13", "@cypress/react": "8.0.0", "@cypress/webpack-dev-server": "3.7.1", "@jsdevtools/coverage-istanbul-loader": "3.0.5", "copy-webpack-plugin": "11.0.0", "css-loader": "6.8.1", - "cypress": "13.6.0", + "cypress": "13.6.1", "esbuild-loader": "4.0.2", - "eslint": "8.54.0", + "eslint": "8.55.0", "eslint-config-airbnb": "19.0.4", "eslint-plugin-cypress": "2.15.1", "eslint-plugin-import": "2.29.0", @@ -62,7 +62,7 @@ "eslint-plugin-react": "7.33.2", "eslint-plugin-react-hooks": "4.6.0", "eslint-webpack-plugin": "4.0.1", - "html-webpack-plugin": "5.5.3", + "html-webpack-plugin": "5.5.4", "mini-css-extract-plugin": "2.7.6", "react-styleguidist": "13.1.1", "resolve-url-loader": "5.0.0", @@ -73,7 +73,7 @@ "webpack-dev-server": "4.15.1" }, "dependencies": { - "ace-builds": "1.31.2", + "ace-builds": "1.32.0", "brace": "0.11.1", "date-fns": "2.30.0", "echarts": "5.4.3", diff --git a/webpack.config.js b/webpack.config.js index 337ed35d..725865bb 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -87,13 +87,16 @@ module.exports = { ], }, optimization: { - minimizer: [ - new EsbuildPlugin({ - target: 'es2015', - css: true, - }), - ], + minimize: false, }, + // optimization: { + // minimizer: [ + // new EsbuildPlugin({ + // target: 'es2015', + // css: true, + // }), + // ], + // }, plugins: [ new MiniCssExtractPlugin({ filename: '[name].css', From 99a05a817c3a1cf608fa5b5ffdcd0669483f3bf2 Mon Sep 17 00:00:00 2001 From: Vlad Ifrim Date: Thu, 7 Dec 2023 18:36:04 +0200 Subject: [PATCH 2/2] replaces the esbuild minifier with the webpack builtin minifier --- lib/6925696524271b926a8e.js | 1630 -- lib/ee385296b124aae4e5d9.js | 1 + lib/index.js | 39543 +--------------------------------- lib/index.js.LICENSE.txt | 38 + lib/index.js.map | 2 +- lib/tyk-ui.js | 39543 +--------------------------------- lib/tyk-ui.js.LICENSE.txt | 38 + lib/tyk-ui.js.map | 2 +- package-lock.json | 154 +- webpack.config.js | 11 +- 10 files changed, 152 insertions(+), 80810 deletions(-) delete mode 100644 lib/6925696524271b926a8e.js create mode 100644 lib/ee385296b124aae4e5d9.js create mode 100644 lib/index.js.LICENSE.txt create mode 100644 lib/tyk-ui.js.LICENSE.txt diff --git a/lib/6925696524271b926a8e.js b/lib/6925696524271b926a8e.js deleted file mode 100644 index 00ddd4a3..00000000 --- a/lib/6925696524271b926a8e.js +++ /dev/null @@ -1,1630 +0,0 @@ -"no use strict"; -!(function(window) { -if (typeof window.window != "undefined" && window.document) - return; -if (window.require && window.define) - return; - -if (!window.console) { - window.console = function() { - var msgs = Array.prototype.slice.call(arguments, 0); - postMessage({type: "log", data: msgs}); - }; - window.console.error = - window.console.warn = - window.console.log = - window.console.trace = window.console; -} -window.window = window; -window.ace = window; - -window.onerror = function(message, file, line, col, err) { - postMessage({type: "error", data: { - message: message, - data: err && err.data, - file: file, - line: line, - col: col, - stack: err && err.stack - }}); -}; - -window.normalizeModule = function(parentId, moduleName) { - // normalize plugin requires - if (moduleName.indexOf("!") !== -1) { - var chunks = moduleName.split("!"); - return window.normalizeModule(parentId, chunks[0]) + "!" + window.normalizeModule(parentId, chunks[1]); - } - // normalize relative requires - if (moduleName.charAt(0) == ".") { - var base = parentId.split("/").slice(0, -1).join("/"); - moduleName = (base ? base + "/" : "") + moduleName; - - while (moduleName.indexOf(".") !== -1 && previous != moduleName) { - var previous = moduleName; - moduleName = moduleName.replace(/^\.\//, "").replace(/\/\.\//, "/").replace(/[^\/]+\/\.\.\//, ""); - } - } - - return moduleName; -}; - -window.require = function require(parentId, id) { - if (!id) { - id = parentId; - parentId = null; - } - if (!id.charAt) - throw new Error("worker.js require() accepts only (parentId, id) as arguments"); - - id = window.normalizeModule(parentId, id); - - var module = window.require.modules[id]; - if (module) { - if (!module.initialized) { - module.initialized = true; - module.exports = module.factory().exports; - } - return module.exports; - } - - if (!window.require.tlns) - return console.log("unable to load " + id); - - var path = resolveModuleId(id, window.require.tlns); - if (path.slice(-3) != ".js") path += ".js"; - - window.require.id = id; - window.require.modules[id] = {}; // prevent infinite loop on broken modules - importScripts(path); - return window.require(parentId, id); -}; -function resolveModuleId(id, paths) { - var testPath = id, tail = ""; - while (testPath) { - var alias = paths[testPath]; - if (typeof alias == "string") { - return alias + tail; - } else if (alias) { - return alias.location.replace(/\/*$/, "/") + (tail || alias.main || alias.name); - } else if (alias === false) { - return ""; - } - var i = testPath.lastIndexOf("/"); - if (i === -1) break; - tail = testPath.substr(i) + tail; - testPath = testPath.slice(0, i); - } - return id; -} -window.require.modules = {}; -window.require.tlns = {}; - -window.define = function(id, deps, factory) { - if (arguments.length == 2) { - factory = deps; - if (typeof id != "string") { - deps = id; - id = window.require.id; - } - } else if (arguments.length == 1) { - factory = id; - deps = []; - id = window.require.id; - } - - if (typeof factory != "function") { - window.require.modules[id] = { - exports: factory, - initialized: true - }; - return; - } - - if (!deps.length) - // If there is no dependencies, we inject "require", "exports" and - // "module" as dependencies, to provide CommonJS compatibility. - deps = ["require", "exports", "module"]; - - var req = function(childId) { - return window.require(id, childId); - }; - - window.require.modules[id] = { - exports: {}, - factory: function() { - var module = this; - var returnExports = factory.apply(this, deps.slice(0, factory.length).map(function(dep) { - switch (dep) { - // Because "require", "exports" and "module" aren't actual - // dependencies, we must handle them seperately. - case "require": return req; - case "exports": return module.exports; - case "module": return module; - // But for all other dependencies, we can just go ahead and - // require them. - default: return req(dep); - } - })); - if (returnExports) - module.exports = returnExports; - return module; - } - }; -}; -window.define.amd = {}; -window.require.tlns = {}; -window.initBaseUrls = function initBaseUrls(topLevelNamespaces) { - for (var i in topLevelNamespaces) - this.require.tlns[i] = topLevelNamespaces[i]; -}; - -window.initSender = function initSender() { - - var EventEmitter = window.require("ace/lib/event_emitter").EventEmitter; - var oop = window.require("ace/lib/oop"); - - var Sender = function() {}; - - (function() { - - oop.implement(this, EventEmitter); - - this.callback = function(data, callbackId) { - postMessage({ - type: "call", - id: callbackId, - data: data - }); - }; - - this.emit = function(name, data) { - postMessage({ - type: "event", - name: name, - data: data - }); - }; - - }).call(Sender.prototype); - - return new Sender(); -}; - -var main = window.main = null; -var sender = window.sender = null; - -window.onmessage = function(e) { - var msg = e.data; - if (msg.event && sender) { - sender._signal(msg.event, msg.data); - } - else if (msg.command) { - if (main[msg.command]) - main[msg.command].apply(main, msg.args); - else if (window[msg.command]) - window[msg.command].apply(window, msg.args); - else - throw new Error("Unknown command:" + msg.command); - } - else if (msg.init) { - window.initBaseUrls(msg.tlns); - sender = window.sender = window.initSender(); - var clazz = this.require(msg.module)[msg.classname]; - main = window.main = new clazz(sender); - } -}; -})(this); - -ace.define("ace/lib/oop",[], function(require, exports, module){"use strict"; -exports.inherits = function (ctor, superCtor) { - ctor.super_ = superCtor; - ctor.prototype = Object.create(superCtor.prototype, { - constructor: { - value: ctor, - enumerable: false, - writable: true, - configurable: true - } - }); -}; -exports.mixin = function (obj, mixin) { - for (var key in mixin) { - obj[key] = mixin[key]; - } - return obj; -}; -exports.implement = function (proto, mixin) { - exports.mixin(proto, mixin); -}; - -}); - -ace.define("ace/apply_delta",[], function(require, exports, module){"use strict"; -function throwDeltaError(delta, errorText) { - console.log("Invalid Delta:", delta); - throw "Invalid Delta: " + errorText; -} -function positionInDocument(docLines, position) { - return position.row >= 0 && position.row < docLines.length && - position.column >= 0 && position.column <= docLines[position.row].length; -} -function validateDelta(docLines, delta) { - if (delta.action != "insert" && delta.action != "remove") - throwDeltaError(delta, "delta.action must be 'insert' or 'remove'"); - if (!(delta.lines instanceof Array)) - throwDeltaError(delta, "delta.lines must be an Array"); - if (!delta.start || !delta.end) - throwDeltaError(delta, "delta.start/end must be an present"); - var start = delta.start; - if (!positionInDocument(docLines, delta.start)) - throwDeltaError(delta, "delta.start must be contained in document"); - var end = delta.end; - if (delta.action == "remove" && !positionInDocument(docLines, end)) - throwDeltaError(delta, "delta.end must contained in document for 'remove' actions"); - var numRangeRows = end.row - start.row; - var numRangeLastLineChars = (end.column - (numRangeRows == 0 ? start.column : 0)); - if (numRangeRows != delta.lines.length - 1 || delta.lines[numRangeRows].length != numRangeLastLineChars) - throwDeltaError(delta, "delta.range must match delta lines"); -} -exports.applyDelta = function (docLines, delta, doNotValidate) { - var row = delta.start.row; - var startColumn = delta.start.column; - var line = docLines[row] || ""; - switch (delta.action) { - case "insert": - var lines = delta.lines; - if (lines.length === 1) { - docLines[row] = line.substring(0, startColumn) + delta.lines[0] + line.substring(startColumn); - } - else { - var args = [row, 1].concat(delta.lines); - docLines.splice.apply(docLines, args); - docLines[row] = line.substring(0, startColumn) + docLines[row]; - docLines[row + delta.lines.length - 1] += line.substring(startColumn); - } - break; - case "remove": - var endColumn = delta.end.column; - var endRow = delta.end.row; - if (row === endRow) { - docLines[row] = line.substring(0, startColumn) + line.substring(endColumn); - } - else { - docLines.splice(row, endRow - row + 1, line.substring(0, startColumn) + docLines[endRow].substring(endColumn)); - } - break; - } -}; - -}); - -ace.define("ace/lib/event_emitter",[], function(require, exports, module){"use strict"; -var EventEmitter = {}; -var stopPropagation = function () { this.propagationStopped = true; }; -var preventDefault = function () { this.defaultPrevented = true; }; -EventEmitter._emit = - EventEmitter._dispatchEvent = function (eventName, e) { - this._eventRegistry || (this._eventRegistry = {}); - this._defaultHandlers || (this._defaultHandlers = {}); - var listeners = this._eventRegistry[eventName] || []; - var defaultHandler = this._defaultHandlers[eventName]; - if (!listeners.length && !defaultHandler) - return; - if (typeof e != "object" || !e) - e = {}; - if (!e.type) - e.type = eventName; - if (!e.stopPropagation) - e.stopPropagation = stopPropagation; - if (!e.preventDefault) - e.preventDefault = preventDefault; - listeners = listeners.slice(); - for (var i = 0; i < listeners.length; i++) { - listeners[i](e, this); - if (e.propagationStopped) - break; - } - if (defaultHandler && !e.defaultPrevented) - return defaultHandler(e, this); - }; -EventEmitter._signal = function (eventName, e) { - var listeners = (this._eventRegistry || {})[eventName]; - if (!listeners) - return; - listeners = listeners.slice(); - for (var i = 0; i < listeners.length; i++) - listeners[i](e, this); -}; -EventEmitter.once = function (eventName, callback) { - var _self = this; - this.on(eventName, function newCallback() { - _self.off(eventName, newCallback); - callback.apply(null, arguments); - }); - if (!callback) { - return new Promise(function (resolve) { - callback = resolve; - }); - } -}; -EventEmitter.setDefaultHandler = function (eventName, callback) { - var handlers = this._defaultHandlers; - if (!handlers) - handlers = this._defaultHandlers = { _disabled_: {} }; - if (handlers[eventName]) { - var old = handlers[eventName]; - var disabled = handlers._disabled_[eventName]; - if (!disabled) - handlers._disabled_[eventName] = disabled = []; - disabled.push(old); - var i = disabled.indexOf(callback); - if (i != -1) - disabled.splice(i, 1); - } - handlers[eventName] = callback; -}; -EventEmitter.removeDefaultHandler = function (eventName, callback) { - var handlers = this._defaultHandlers; - if (!handlers) - return; - var disabled = handlers._disabled_[eventName]; - if (handlers[eventName] == callback) { - if (disabled) - this.setDefaultHandler(eventName, disabled.pop()); - } - else if (disabled) { - var i = disabled.indexOf(callback); - if (i != -1) - disabled.splice(i, 1); - } -}; -EventEmitter.on = - EventEmitter.addEventListener = function (eventName, callback, capturing) { - this._eventRegistry = this._eventRegistry || {}; - var listeners = this._eventRegistry[eventName]; - if (!listeners) - listeners = this._eventRegistry[eventName] = []; - if (listeners.indexOf(callback) == -1) - listeners[capturing ? "unshift" : "push"](callback); - return callback; - }; -EventEmitter.off = - EventEmitter.removeListener = - EventEmitter.removeEventListener = function (eventName, callback) { - this._eventRegistry = this._eventRegistry || {}; - var listeners = this._eventRegistry[eventName]; - if (!listeners) - return; - var index = listeners.indexOf(callback); - if (index !== -1) - listeners.splice(index, 1); - }; -EventEmitter.removeAllListeners = function (eventName) { - if (!eventName) - this._eventRegistry = this._defaultHandlers = undefined; - if (this._eventRegistry) - this._eventRegistry[eventName] = undefined; - if (this._defaultHandlers) - this._defaultHandlers[eventName] = undefined; -}; -exports.EventEmitter = EventEmitter; - -}); - -ace.define("ace/range",[], function(require, exports, module){"use strict"; -var comparePoints = function (p1, p2) { - return p1.row - p2.row || p1.column - p2.column; -}; -var Range = /** @class */ (function () { - function Range(startRow, startColumn, endRow, endColumn) { - this.start = { - row: startRow, - column: startColumn - }; - this.end = { - row: endRow, - column: endColumn - }; - } - Range.prototype.isEqual = function (range) { - return this.start.row === range.start.row && - this.end.row === range.end.row && - this.start.column === range.start.column && - this.end.column === range.end.column; - }; - Range.prototype.toString = function () { - return ("Range: [" + this.start.row + "/" + this.start.column + - "] -> [" + this.end.row + "/" + this.end.column + "]"); - }; - Range.prototype.contains = function (row, column) { - return this.compare(row, column) == 0; - }; - Range.prototype.compareRange = function (range) { - var cmp, end = range.end, start = range.start; - cmp = this.compare(end.row, end.column); - if (cmp == 1) { - cmp = this.compare(start.row, start.column); - if (cmp == 1) { - return 2; - } - else if (cmp == 0) { - return 1; - } - else { - return 0; - } - } - else if (cmp == -1) { - return -2; - } - else { - cmp = this.compare(start.row, start.column); - if (cmp == -1) { - return -1; - } - else if (cmp == 1) { - return 42; - } - else { - return 0; - } - } - }; - Range.prototype.comparePoint = function (p) { - return this.compare(p.row, p.column); - }; - Range.prototype.containsRange = function (range) { - return this.comparePoint(range.start) == 0 && this.comparePoint(range.end) == 0; - }; - Range.prototype.intersects = function (range) { - var cmp = this.compareRange(range); - return (cmp == -1 || cmp == 0 || cmp == 1); - }; - Range.prototype.isEnd = function (row, column) { - return this.end.row == row && this.end.column == column; - }; - Range.prototype.isStart = function (row, column) { - return this.start.row == row && this.start.column == column; - }; - Range.prototype.setStart = function (row, column) { - if (typeof row == "object") { - this.start.column = row.column; - this.start.row = row.row; - } - else { - this.start.row = row; - this.start.column = column; - } - }; - Range.prototype.setEnd = function (row, column) { - if (typeof row == "object") { - this.end.column = row.column; - this.end.row = row.row; - } - else { - this.end.row = row; - this.end.column = column; - } - }; - Range.prototype.inside = function (row, column) { - if (this.compare(row, column) == 0) { - if (this.isEnd(row, column) || this.isStart(row, column)) { - return false; - } - else { - return true; - } - } - return false; - }; - Range.prototype.insideStart = function (row, column) { - if (this.compare(row, column) == 0) { - if (this.isEnd(row, column)) { - return false; - } - else { - return true; - } - } - return false; - }; - Range.prototype.insideEnd = function (row, column) { - if (this.compare(row, column) == 0) { - if (this.isStart(row, column)) { - return false; - } - else { - return true; - } - } - return false; - }; - Range.prototype.compare = function (row, column) { - if (!this.isMultiLine()) { - if (row === this.start.row) { - return column < this.start.column ? -1 : (column > this.end.column ? 1 : 0); - } - } - if (row < this.start.row) - return -1; - if (row > this.end.row) - return 1; - if (this.start.row === row) - return column >= this.start.column ? 0 : -1; - if (this.end.row === row) - return column <= this.end.column ? 0 : 1; - return 0; - }; - Range.prototype.compareStart = function (row, column) { - if (this.start.row == row && this.start.column == column) { - return -1; - } - else { - return this.compare(row, column); - } - }; - Range.prototype.compareEnd = function (row, column) { - if (this.end.row == row && this.end.column == column) { - return 1; - } - else { - return this.compare(row, column); - } - }; - Range.prototype.compareInside = function (row, column) { - if (this.end.row == row && this.end.column == column) { - return 1; - } - else if (this.start.row == row && this.start.column == column) { - return -1; - } - else { - return this.compare(row, column); - } - }; - Range.prototype.clipRows = function (firstRow, lastRow) { - if (this.end.row > lastRow) - var end = { row: lastRow + 1, column: 0 }; - else if (this.end.row < firstRow) - var end = { row: firstRow, column: 0 }; - if (this.start.row > lastRow) - var start = { row: lastRow + 1, column: 0 }; - else if (this.start.row < firstRow) - var start = { row: firstRow, column: 0 }; - return Range.fromPoints(start || this.start, end || this.end); - }; - Range.prototype.extend = function (row, column) { - var cmp = this.compare(row, column); - if (cmp == 0) - return this; - else if (cmp == -1) - var start = { row: row, column: column }; - else - var end = { row: row, column: column }; - return Range.fromPoints(start || this.start, end || this.end); - }; - Range.prototype.isEmpty = function () { - return (this.start.row === this.end.row && this.start.column === this.end.column); - }; - Range.prototype.isMultiLine = function () { - return (this.start.row !== this.end.row); - }; - Range.prototype.clone = function () { - return Range.fromPoints(this.start, this.end); - }; - Range.prototype.collapseRows = function () { - if (this.end.column == 0) - return new Range(this.start.row, 0, Math.max(this.start.row, this.end.row - 1), 0); - else - return new Range(this.start.row, 0, this.end.row, 0); - }; - Range.prototype.toScreenRange = function (session) { - var screenPosStart = session.documentToScreenPosition(this.start); - var screenPosEnd = session.documentToScreenPosition(this.end); - return new Range(screenPosStart.row, screenPosStart.column, screenPosEnd.row, screenPosEnd.column); - }; - Range.prototype.moveBy = function (row, column) { - this.start.row += row; - this.start.column += column; - this.end.row += row; - this.end.column += column; - }; - return Range; -}()); -Range.fromPoints = function (start, end) { - return new Range(start.row, start.column, end.row, end.column); -}; -Range.comparePoints = comparePoints; -Range.comparePoints = function (p1, p2) { - return p1.row - p2.row || p1.column - p2.column; -}; -exports.Range = Range; - -}); - -ace.define("ace/anchor",[], function(require, exports, module){"use strict"; -var oop = require("./lib/oop"); -var EventEmitter = require("./lib/event_emitter").EventEmitter; -var Anchor = /** @class */ (function () { - function Anchor(doc, row, column) { - this.$onChange = this.onChange.bind(this); - this.attach(doc); - if (typeof column == "undefined") - this.setPosition(row.row, row.column); - else - this.setPosition(row, column); - } - Anchor.prototype.getPosition = function () { - return this.$clipPositionToDocument(this.row, this.column); - }; - Anchor.prototype.getDocument = function () { - return this.document; - }; - Anchor.prototype.onChange = function (delta) { - if (delta.start.row == delta.end.row && delta.start.row != this.row) - return; - if (delta.start.row > this.row) - return; - var point = $getTransformedPoint(delta, { row: this.row, column: this.column }, this.$insertRight); - this.setPosition(point.row, point.column, true); - }; - Anchor.prototype.setPosition = function (row, column, noClip) { - var pos; - if (noClip) { - pos = { - row: row, - column: column - }; - } - else { - pos = this.$clipPositionToDocument(row, column); - } - if (this.row == pos.row && this.column == pos.column) - return; - var old = { - row: this.row, - column: this.column - }; - this.row = pos.row; - this.column = pos.column; - this._signal("change", { - old: old, - value: pos - }); - }; - Anchor.prototype.detach = function () { - this.document.off("change", this.$onChange); - }; - Anchor.prototype.attach = function (doc) { - this.document = doc || this.document; - this.document.on("change", this.$onChange); - }; - Anchor.prototype.$clipPositionToDocument = function (row, column) { - var pos = {}; - if (row >= this.document.getLength()) { - pos.row = Math.max(0, this.document.getLength() - 1); - pos.column = this.document.getLine(pos.row).length; - } - else if (row < 0) { - pos.row = 0; - pos.column = 0; - } - else { - pos.row = row; - pos.column = Math.min(this.document.getLine(pos.row).length, Math.max(0, column)); - } - if (column < 0) - pos.column = 0; - return pos; - }; - return Anchor; -}()); -Anchor.prototype.$insertRight = false; -oop.implement(Anchor.prototype, EventEmitter); -function $pointsInOrder(point1, point2, equalPointsInOrder) { - var bColIsAfter = equalPointsInOrder ? point1.column <= point2.column : point1.column < point2.column; - return (point1.row < point2.row) || (point1.row == point2.row && bColIsAfter); -} -function $getTransformedPoint(delta, point, moveIfEqual) { - var deltaIsInsert = delta.action == "insert"; - var deltaRowShift = (deltaIsInsert ? 1 : -1) * (delta.end.row - delta.start.row); - var deltaColShift = (deltaIsInsert ? 1 : -1) * (delta.end.column - delta.start.column); - var deltaStart = delta.start; - var deltaEnd = deltaIsInsert ? deltaStart : delta.end; // Collapse insert range. - if ($pointsInOrder(point, deltaStart, moveIfEqual)) { - return { - row: point.row, - column: point.column - }; - } - if ($pointsInOrder(deltaEnd, point, !moveIfEqual)) { - return { - row: point.row + deltaRowShift, - column: point.column + (point.row == deltaEnd.row ? deltaColShift : 0) - }; - } - return { - row: deltaStart.row, - column: deltaStart.column - }; -} -exports.Anchor = Anchor; - -}); - -ace.define("ace/document",[], function(require, exports, module){"use strict"; -var oop = require("./lib/oop"); -var applyDelta = require("./apply_delta").applyDelta; -var EventEmitter = require("./lib/event_emitter").EventEmitter; -var Range = require("./range").Range; -var Anchor = require("./anchor").Anchor; -var Document = /** @class */ (function () { - function Document(textOrLines) { - this.$lines = [""]; - if (textOrLines.length === 0) { - this.$lines = [""]; - } - else if (Array.isArray(textOrLines)) { - this.insertMergedLines({ row: 0, column: 0 }, textOrLines); - } - else { - this.insert({ row: 0, column: 0 }, textOrLines); - } - } - Document.prototype.setValue = function (text) { - var len = this.getLength() - 1; - this.remove(new Range(0, 0, len, this.getLine(len).length)); - this.insert({ row: 0, column: 0 }, text || ""); - }; - Document.prototype.getValue = function () { - return this.getAllLines().join(this.getNewLineCharacter()); - }; - Document.prototype.createAnchor = function (row, column) { - return new Anchor(this, row, column); - }; - Document.prototype.$detectNewLine = function (text) { - var match = text.match(/^.*?(\r\n|\r|\n)/m); - this.$autoNewLine = match ? match[1] : "\n"; - this._signal("changeNewLineMode"); - }; - Document.prototype.getNewLineCharacter = function () { - switch (this.$newLineMode) { - case "windows": - return "\r\n"; - case "unix": - return "\n"; - default: - return this.$autoNewLine || "\n"; - } - }; - Document.prototype.setNewLineMode = function (newLineMode) { - if (this.$newLineMode === newLineMode) - return; - this.$newLineMode = newLineMode; - this._signal("changeNewLineMode"); - }; - Document.prototype.getNewLineMode = function () { - return this.$newLineMode; - }; - Document.prototype.isNewLine = function (text) { - return (text == "\r\n" || text == "\r" || text == "\n"); - }; - Document.prototype.getLine = function (row) { - return this.$lines[row] || ""; - }; - Document.prototype.getLines = function (firstRow, lastRow) { - return this.$lines.slice(firstRow, lastRow + 1); - }; - Document.prototype.getAllLines = function () { - return this.getLines(0, this.getLength()); - }; - Document.prototype.getLength = function () { - return this.$lines.length; - }; - Document.prototype.getTextRange = function (range) { - return this.getLinesForRange(range).join(this.getNewLineCharacter()); - }; - Document.prototype.getLinesForRange = function (range) { - var lines; - if (range.start.row === range.end.row) { - lines = [this.getLine(range.start.row).substring(range.start.column, range.end.column)]; - } - else { - lines = this.getLines(range.start.row, range.end.row); - lines[0] = (lines[0] || "").substring(range.start.column); - var l = lines.length - 1; - if (range.end.row - range.start.row == l) - lines[l] = lines[l].substring(0, range.end.column); - } - return lines; - }; - Document.prototype.insertLines = function (row, lines) { - console.warn("Use of document.insertLines is deprecated. Use the insertFullLines method instead."); - return this.insertFullLines(row, lines); - }; - Document.prototype.removeLines = function (firstRow, lastRow) { - console.warn("Use of document.removeLines is deprecated. Use the removeFullLines method instead."); - return this.removeFullLines(firstRow, lastRow); - }; - Document.prototype.insertNewLine = function (position) { - console.warn("Use of document.insertNewLine is deprecated. Use insertMergedLines(position, ['', '']) instead."); - return this.insertMergedLines(position, ["", ""]); - }; - Document.prototype.insert = function (position, text) { - if (this.getLength() <= 1) - this.$detectNewLine(text); - return this.insertMergedLines(position, this.$split(text)); - }; - Document.prototype.insertInLine = function (position, text) { - var start = this.clippedPos(position.row, position.column); - var end = this.pos(position.row, position.column + text.length); - this.applyDelta({ - start: start, - end: end, - action: "insert", - lines: [text] - }, true); - return this.clonePos(end); - }; - Document.prototype.clippedPos = function (row, column) { - var length = this.getLength(); - if (row === undefined) { - row = length; - } - else if (row < 0) { - row = 0; - } - else if (row >= length) { - row = length - 1; - column = undefined; - } - var line = this.getLine(row); - if (column == undefined) - column = line.length; - column = Math.min(Math.max(column, 0), line.length); - return { row: row, column: column }; - }; - Document.prototype.clonePos = function (pos) { - return { row: pos.row, column: pos.column }; - }; - Document.prototype.pos = function (row, column) { - return { row: row, column: column }; - }; - Document.prototype.$clipPosition = function (position) { - var length = this.getLength(); - if (position.row >= length) { - position.row = Math.max(0, length - 1); - position.column = this.getLine(length - 1).length; - } - else { - position.row = Math.max(0, position.row); - position.column = Math.min(Math.max(position.column, 0), this.getLine(position.row).length); - } - return position; - }; - Document.prototype.insertFullLines = function (row, lines) { - row = Math.min(Math.max(row, 0), this.getLength()); - var column = 0; - if (row < this.getLength()) { - lines = lines.concat([""]); - column = 0; - } - else { - lines = [""].concat(lines); - row--; - column = this.$lines[row].length; - } - this.insertMergedLines({ row: row, column: column }, lines); - }; - Document.prototype.insertMergedLines = function (position, lines) { - var start = this.clippedPos(position.row, position.column); - var end = { - row: start.row + lines.length - 1, - column: (lines.length == 1 ? start.column : 0) + lines[lines.length - 1].length - }; - this.applyDelta({ - start: start, - end: end, - action: "insert", - lines: lines - }); - return this.clonePos(end); - }; - Document.prototype.remove = function (range) { - var start = this.clippedPos(range.start.row, range.start.column); - var end = this.clippedPos(range.end.row, range.end.column); - this.applyDelta({ - start: start, - end: end, - action: "remove", - lines: this.getLinesForRange({ start: start, end: end }) - }); - return this.clonePos(start); - }; - Document.prototype.removeInLine = function (row, startColumn, endColumn) { - var start = this.clippedPos(row, startColumn); - var end = this.clippedPos(row, endColumn); - this.applyDelta({ - start: start, - end: end, - action: "remove", - lines: this.getLinesForRange({ start: start, end: end }) - }, true); - return this.clonePos(start); - }; - Document.prototype.removeFullLines = function (firstRow, lastRow) { - firstRow = Math.min(Math.max(0, firstRow), this.getLength() - 1); - lastRow = Math.min(Math.max(0, lastRow), this.getLength() - 1); - var deleteFirstNewLine = lastRow == this.getLength() - 1 && firstRow > 0; - var deleteLastNewLine = lastRow < this.getLength() - 1; - var startRow = (deleteFirstNewLine ? firstRow - 1 : firstRow); - var startCol = (deleteFirstNewLine ? this.getLine(startRow).length : 0); - var endRow = (deleteLastNewLine ? lastRow + 1 : lastRow); - var endCol = (deleteLastNewLine ? 0 : this.getLine(endRow).length); - var range = new Range(startRow, startCol, endRow, endCol); - var deletedLines = this.$lines.slice(firstRow, lastRow + 1); - this.applyDelta({ - start: range.start, - end: range.end, - action: "remove", - lines: this.getLinesForRange(range) - }); - return deletedLines; - }; - Document.prototype.removeNewLine = function (row) { - if (row < this.getLength() - 1 && row >= 0) { - this.applyDelta({ - start: this.pos(row, this.getLine(row).length), - end: this.pos(row + 1, 0), - action: "remove", - lines: ["", ""] - }); - } - }; - Document.prototype.replace = function (range, text) { - if (!(range instanceof Range)) - range = Range.fromPoints(range.start, range.end); - if (text.length === 0 && range.isEmpty()) - return range.start; - if (text == this.getTextRange(range)) - return range.end; - this.remove(range); - var end; - if (text) { - end = this.insert(range.start, text); - } - else { - end = range.start; - } - return end; - }; - Document.prototype.applyDeltas = function (deltas) { - for (var i = 0; i < deltas.length; i++) { - this.applyDelta(deltas[i]); - } - }; - Document.prototype.revertDeltas = function (deltas) { - for (var i = deltas.length - 1; i >= 0; i--) { - this.revertDelta(deltas[i]); - } - }; - Document.prototype.applyDelta = function (delta, doNotValidate) { - var isInsert = delta.action == "insert"; - if (isInsert ? delta.lines.length <= 1 && !delta.lines[0] - : !Range.comparePoints(delta.start, delta.end)) { - return; - } - if (isInsert && delta.lines.length > 20000) { - this.$splitAndapplyLargeDelta(delta, 20000); - } - else { - applyDelta(this.$lines, delta, doNotValidate); - this._signal("change", delta); - } - }; - Document.prototype.$safeApplyDelta = function (delta) { - var docLength = this.$lines.length; - if (delta.action == "remove" && delta.start.row < docLength && delta.end.row < docLength - || delta.action == "insert" && delta.start.row <= docLength) { - this.applyDelta(delta); - } - }; - Document.prototype.$splitAndapplyLargeDelta = function (delta, MAX) { - var lines = delta.lines; - var l = lines.length - MAX + 1; - var row = delta.start.row; - var column = delta.start.column; - for (var from = 0, to = 0; from < l; from = to) { - to += MAX - 1; - var chunk = lines.slice(from, to); - chunk.push(""); - this.applyDelta({ - start: this.pos(row + from, column), - end: this.pos(row + to, column = 0), - action: delta.action, - lines: chunk - }, true); - } - delta.lines = lines.slice(from); - delta.start.row = row + from; - delta.start.column = column; - this.applyDelta(delta, true); - }; - Document.prototype.revertDelta = function (delta) { - this.$safeApplyDelta({ - start: this.clonePos(delta.start), - end: this.clonePos(delta.end), - action: (delta.action == "insert" ? "remove" : "insert"), - lines: delta.lines.slice() - }); - }; - Document.prototype.indexToPosition = function (index, startRow) { - var lines = this.$lines || this.getAllLines(); - var newlineLength = this.getNewLineCharacter().length; - for (var i = startRow || 0, l = lines.length; i < l; i++) { - index -= lines[i].length + newlineLength; - if (index < 0) - return { row: i, column: index + lines[i].length + newlineLength }; - } - return { row: l - 1, column: index + lines[l - 1].length + newlineLength }; - }; - Document.prototype.positionToIndex = function (pos, startRow) { - var lines = this.$lines || this.getAllLines(); - var newlineLength = this.getNewLineCharacter().length; - var index = 0; - var row = Math.min(pos.row, lines.length); - for (var i = startRow || 0; i < row; ++i) - index += lines[i].length + newlineLength; - return index + pos.column; - }; - Document.prototype.$split = function (text) { - return text.split(/\r\n|\r|\n/); - }; - return Document; -}()); -Document.prototype.$autoNewLine = ""; -Document.prototype.$newLineMode = "auto"; -oop.implement(Document.prototype, EventEmitter); -exports.Document = Document; - -}); - -ace.define("ace/lib/deep_copy",[], function(require, exports, module){exports.deepCopy = function deepCopy(obj) { - if (typeof obj !== "object" || !obj) - return obj; - var copy; - if (Array.isArray(obj)) { - copy = []; - for (var key = 0; key < obj.length; key++) { - copy[key] = deepCopy(obj[key]); - } - return copy; - } - if (Object.prototype.toString.call(obj) !== "[object Object]") - return obj; - copy = {}; - for (var key in obj) - copy[key] = deepCopy(obj[key]); - return copy; -}; - -}); - -ace.define("ace/lib/lang",[], function(require, exports, module){"use strict"; -exports.last = function (a) { - return a[a.length - 1]; -}; -exports.stringReverse = function (string) { - return string.split("").reverse().join(""); -}; -exports.stringRepeat = function (string, count) { - var result = ''; - while (count > 0) { - if (count & 1) - result += string; - if (count >>= 1) - string += string; - } - return result; -}; -var trimBeginRegexp = /^\s\s*/; -var trimEndRegexp = /\s\s*$/; -exports.stringTrimLeft = function (string) { - return string.replace(trimBeginRegexp, ''); -}; -exports.stringTrimRight = function (string) { - return string.replace(trimEndRegexp, ''); -}; -exports.copyObject = function (obj) { - var copy = {}; - for (var key in obj) { - copy[key] = obj[key]; - } - return copy; -}; -exports.copyArray = function (array) { - var copy = []; - for (var i = 0, l = array.length; i < l; i++) { - if (array[i] && typeof array[i] == "object") - copy[i] = this.copyObject(array[i]); - else - copy[i] = array[i]; - } - return copy; -}; -exports.deepCopy = require("./deep_copy").deepCopy; -exports.arrayToMap = function (arr) { - var map = {}; - for (var i = 0; i < arr.length; i++) { - map[arr[i]] = 1; - } - return map; -}; -exports.createMap = function (props) { - var map = Object.create(null); - for (var i in props) { - map[i] = props[i]; - } - return map; -}; -exports.arrayRemove = function (array, value) { - for (var i = 0; i <= array.length; i++) { - if (value === array[i]) { - array.splice(i, 1); - } - } -}; -exports.escapeRegExp = function (str) { - return str.replace(/([.*+?^${}()|[\]\/\\])/g, '\\$1'); -}; -exports.escapeHTML = function (str) { - return ("" + str).replace(/&/g, "&").replace(/"/g, """).replace(/'/g, "'").replace(/ 0xffff ? 2 : 1; -}; - -}); - -ace.define("ace/worker/mirror",[], function(require, exports, module) { -"use strict"; - -var Document = require("../document").Document; -var lang = require("../lib/lang"); - -var Mirror = exports.Mirror = function(sender) { - this.sender = sender; - var doc = this.doc = new Document(""); - - var deferredUpdate = this.deferredUpdate = lang.delayedCall(this.onUpdate.bind(this)); - - var _self = this; - sender.on("change", function(e) { - var data = e.data; - if (data[0].start) { - doc.applyDeltas(data); - } else { - for (var i = 0; i < data.length; i += 2) { - var d, err; - if (Array.isArray(data[i+1])) { - d = {action: "insert", start: data[i], lines: data[i+1]}; - } else { - d = {action: "remove", start: data[i], end: data[i+1]}; - } - - if ((d.action == "insert" ? d.start : d.end).row >= doc.$lines.length) { - err = new Error("Invalid delta"); - err.data = { - path: _self.$path, - linesLength: doc.$lines.length, - start: d.start, - end: d.end - }; - throw err; - } - - doc.applyDelta(d, true); - } - } - if (_self.$timeout) - return deferredUpdate.schedule(_self.$timeout); - _self.onUpdate(); - }); -}; - -(function() { - - this.$timeout = 500; - - this.setTimeout = function(timeout) { - this.$timeout = timeout; - }; - - this.setValue = function(value) { - this.doc.setValue(value); - this.deferredUpdate.schedule(this.$timeout); - }; - - this.getValue = function(callbackId) { - this.sender.callback(this.doc.getValue(), callbackId); - }; - - this.onUpdate = function() { - }; - - this.isPending = function() { - return this.deferredUpdate.isPending(); - }; - -}).call(Mirror.prototype); - -}); - -ace.define("ace/mode/json/json_parse",[], function(require, exports, module) { -"use strict"; - - var at, // The index of the current character - ch, // The current character - escapee = { - '"': '"', - '\\': '\\', - '/': '/', - b: '\b', - f: '\f', - n: '\n', - r: '\r', - t: '\t' - }, - text, - - error = function (m) { - - throw { - name: 'SyntaxError', - message: m, - at: at, - text: text - }; - }, - - next = function (c) { - - if (c && c !== ch) { - error("Expected '" + c + "' instead of '" + ch + "'"); - } - - ch = text.charAt(at); - at += 1; - return ch; - }, - - number = function () { - - var number, - string = ''; - - if (ch === '-') { - string = '-'; - next('-'); - } - while (ch >= '0' && ch <= '9') { - string += ch; - next(); - } - if (ch === '.') { - string += '.'; - while (next() && ch >= '0' && ch <= '9') { - string += ch; - } - } - if (ch === 'e' || ch === 'E') { - string += ch; - next(); - if (ch === '-' || ch === '+') { - string += ch; - next(); - } - while (ch >= '0' && ch <= '9') { - string += ch; - next(); - } - } - number = +string; - if (isNaN(number)) { - error("Bad number"); - } else { - return number; - } - }, - - string = function () { - - var hex, - i, - string = '', - uffff; - - if (ch === '"') { - while (next()) { - if (ch === '"') { - next(); - return string; - } else if (ch === '\\') { - next(); - if (ch === 'u') { - uffff = 0; - for (i = 0; i < 4; i += 1) { - hex = parseInt(next(), 16); - if (!isFinite(hex)) { - break; - } - uffff = uffff * 16 + hex; - } - string += String.fromCharCode(uffff); - } else if (typeof escapee[ch] === 'string') { - string += escapee[ch]; - } else { - break; - } - } else if (ch == "\n" || ch == "\r") { - break; - } else { - string += ch; - } - } - } - error("Bad string"); - }, - - white = function () { - - while (ch && ch <= ' ') { - next(); - } - }, - - word = function () { - - switch (ch) { - case 't': - next('t'); - next('r'); - next('u'); - next('e'); - return true; - case 'f': - next('f'); - next('a'); - next('l'); - next('s'); - next('e'); - return false; - case 'n': - next('n'); - next('u'); - next('l'); - next('l'); - return null; - } - error("Unexpected '" + ch + "'"); - }, - - value, // Place holder for the value function. - - array = function () { - - var array = []; - - if (ch === '[') { - next('['); - white(); - if (ch === ']') { - next(']'); - return array; // empty array - } - while (ch) { - array.push(value()); - white(); - if (ch === ']') { - next(']'); - return array; - } - next(','); - white(); - } - } - error("Bad array"); - }, - - object = function () { - - var key, - object = {}; - - if (ch === '{') { - next('{'); - white(); - if (ch === '}') { - next('}'); - return object; // empty object - } - while (ch) { - key = string(); - white(); - next(':'); - if (Object.hasOwnProperty.call(object, key)) { - error('Duplicate key "' + key + '"'); - } - object[key] = value(); - white(); - if (ch === '}') { - next('}'); - return object; - } - next(','); - white(); - } - } - error("Bad object"); - }; - - value = function () { - - white(); - switch (ch) { - case '{': - return object(); - case '[': - return array(); - case '"': - return string(); - case '-': - return number(); - default: - return ch >= '0' && ch <= '9' ? number() : word(); - } - }; - - return function (source, reviver) { - var result; - - text = source; - at = 0; - ch = ' '; - result = value(); - white(); - if (ch) { - error("Syntax error"); - } - - return typeof reviver === 'function' ? function walk(holder, key) { - var k, v, value = holder[key]; - if (value && typeof value === 'object') { - for (k in value) { - if (Object.hasOwnProperty.call(value, k)) { - v = walk(value, k); - if (v !== undefined) { - value[k] = v; - } else { - delete value[k]; - } - } - } - } - return reviver.call(holder, key, value); - }({'': result}, '') : result; - }; -}); - -ace.define("ace/mode/json_worker",[], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var Mirror = require("../worker/mirror").Mirror; -var parse = require("./json/json_parse"); - -var JsonWorker = exports.JsonWorker = function(sender) { - Mirror.call(this, sender); - this.setTimeout(200); -}; - -oop.inherits(JsonWorker, Mirror); - -(function() { - - this.onUpdate = function() { - var value = this.doc.getValue(); - var errors = []; - try { - if (value) - parse(value); - } catch (e) { - var pos = this.doc.indexToPosition(e.at-1); - errors.push({ - row: pos.row, - column: pos.column, - text: e.message, - type: "error" - }); - } - this.sender.emit("annotate", errors); - }; - -}).call(JsonWorker.prototype); - -}); diff --git a/lib/ee385296b124aae4e5d9.js b/lib/ee385296b124aae4e5d9.js new file mode 100644 index 00000000..41a99903 --- /dev/null +++ b/lib/ee385296b124aae4e5d9.js @@ -0,0 +1 @@ +!function(t){if(!(void 0!==t.window&&t.document||t.require&&t.define)){t.console||(t.console=function(){var t=Array.prototype.slice.call(arguments,0);postMessage({type:"log",data:t})},t.console.error=t.console.warn=t.console.log=t.console.trace=t.console),t.window=t,t.ace=t,t.onerror=function(t,e,n,r,o){postMessage({type:"error",data:{message:t,data:o&&o.data,file:e,line:n,col:r,stack:o&&o.stack}})},t.normalizeModule=function(e,n){if(-1!==n.indexOf("!")){var r=n.split("!");return t.normalizeModule(e,r[0])+"!"+t.normalizeModule(e,r[1])}if("."==n.charAt(0)){var o=e.split("/").slice(0,-1).join("/");for(n=(o?o+"/":"")+n;-1!==n.indexOf(".")&&i!=n;){var i=n;n=n.replace(/^\.\//,"").replace(/\/\.\//,"/").replace(/[^\/]+\/\.\.\//,"")}}return n},t.require=function(e,n){if(n||(n=e,e=null),!n.charAt)throw new Error("worker.js require() accepts only (parentId, id) as arguments");n=t.normalizeModule(e,n);var r=t.require.modules[n];if(r)return r.initialized||(r.initialized=!0,r.exports=r.factory().exports),r.exports;if(!t.require.tlns)return console.log("unable to load "+n);var o=function(t,e){for(var n=t,r="";n;){var o=e[n];if("string"==typeof o)return o+r;if(o)return o.location.replace(/\/*$/,"/")+(r||o.main||o.name);if(!1===o)return"";var i=n.lastIndexOf("/");if(-1===i)break;r=n.substr(i)+r,n=n.slice(0,i)}return t}(n,t.require.tlns);return".js"!=o.slice(-3)&&(o+=".js"),t.require.id=n,t.require.modules[n]={},importScripts(o),t.require(e,n)},t.require.modules={},t.require.tlns={},t.define=function(e,n,r){if(2==arguments.length?(r=n,"string"!=typeof e&&(n=e,e=t.require.id)):1==arguments.length&&(r=e,n=[],e=t.require.id),"function"==typeof r){n.length||(n=["require","exports","module"]);var o=function(n){return t.require(e,n)};t.require.modules[e]={exports:{},factory:function(){var t=this,e=r.apply(this,n.slice(0,r.length).map((function(e){switch(e){case"require":return o;case"exports":return t.exports;case"module":return t;default:return o(e)}})));return e&&(t.exports=e),t}}}else t.require.modules[e]={exports:r,initialized:!0}},t.define.amd={},t.require.tlns={},t.initBaseUrls=function(t){for(var e in t)this.require.tlns[e]=t[e]},t.initSender=function(){var e=t.require("ace/lib/event_emitter").EventEmitter,n=t.require("ace/lib/oop"),r=function(){};return function(){n.implement(this,e),this.callback=function(t,e){postMessage({type:"call",id:e,data:t})},this.emit=function(t,e){postMessage({type:"event",name:t,data:e})}}.call(r.prototype),new r};var e=t.main=null,n=t.sender=null;t.onmessage=function(r){var o=r.data;if(o.event&&n)n._signal(o.event,o.data);else if(o.command)if(e[o.command])e[o.command].apply(e,o.args);else{if(!t[o.command])throw new Error("Unknown command:"+o.command);t[o.command].apply(t,o.args)}else if(o.init){t.initBaseUrls(o.tlns),n=t.sender=t.initSender();var i=this.require(o.module)[o.classname];e=t.main=new i(n)}}}}(this),ace.define("ace/lib/oop",[],(function(t,e,n){"use strict";e.inherits=function(t,e){t.super_=e,t.prototype=Object.create(e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}})},e.mixin=function(t,e){for(var n in e)t[n]=e[n];return t},e.implement=function(t,n){e.mixin(t,n)}})),ace.define("ace/apply_delta",[],(function(t,e,n){"use strict";e.applyDelta=function(t,e,n){var r=e.start.row,o=e.start.column,i=t[r]||"";switch(e.action){case"insert":if(1===e.lines.length)t[r]=i.substring(0,o)+e.lines[0]+i.substring(o);else{var s=[r,1].concat(e.lines);t.splice.apply(t,s),t[r]=i.substring(0,o)+t[r],t[r+e.lines.length-1]+=i.substring(o)}break;case"remove":var a=e.end.column,c=e.end.row;r===c?t[r]=i.substring(0,o)+i.substring(a):t.splice(r,c-r+1,i.substring(0,o)+t[c].substring(a))}}})),ace.define("ace/lib/event_emitter",[],(function(t,e,n){"use strict";var r={},o=function(){this.propagationStopped=!0},i=function(){this.defaultPrevented=!0};r._emit=r._dispatchEvent=function(t,e){this._eventRegistry||(this._eventRegistry={}),this._defaultHandlers||(this._defaultHandlers={});var n=this._eventRegistry[t]||[],r=this._defaultHandlers[t];if(n.length||r){"object"==typeof e&&e||(e={}),e.type||(e.type=t),e.stopPropagation||(e.stopPropagation=o),e.preventDefault||(e.preventDefault=i),n=n.slice();for(var s=0;s ["+this.end.row+"/"+this.end.column+"]"},t.prototype.contains=function(t,e){return 0==this.compare(t,e)},t.prototype.compareRange=function(t){var e,n=t.end,r=t.start;return 1==(e=this.compare(n.row,n.column))?1==(e=this.compare(r.row,r.column))?2:0==e?1:0:-1==e?-2:-1==(e=this.compare(r.row,r.column))?-1:1==e?42:0},t.prototype.comparePoint=function(t){return this.compare(t.row,t.column)},t.prototype.containsRange=function(t){return 0==this.comparePoint(t.start)&&0==this.comparePoint(t.end)},t.prototype.intersects=function(t){var e=this.compareRange(t);return-1==e||0==e||1==e},t.prototype.isEnd=function(t,e){return this.end.row==t&&this.end.column==e},t.prototype.isStart=function(t,e){return this.start.row==t&&this.start.column==e},t.prototype.setStart=function(t,e){"object"==typeof t?(this.start.column=t.column,this.start.row=t.row):(this.start.row=t,this.start.column=e)},t.prototype.setEnd=function(t,e){"object"==typeof t?(this.end.column=t.column,this.end.row=t.row):(this.end.row=t,this.end.column=e)},t.prototype.inside=function(t,e){return 0==this.compare(t,e)&&!this.isEnd(t,e)&&!this.isStart(t,e)},t.prototype.insideStart=function(t,e){return 0==this.compare(t,e)&&!this.isEnd(t,e)},t.prototype.insideEnd=function(t,e){return 0==this.compare(t,e)&&!this.isStart(t,e)},t.prototype.compare=function(t,e){return this.isMultiLine()||t!==this.start.row?tthis.end.row?1:this.start.row===t?e>=this.start.column?0:-1:this.end.row===t?e<=this.end.column?0:1:0:ethis.end.column?1:0},t.prototype.compareStart=function(t,e){return this.start.row==t&&this.start.column==e?-1:this.compare(t,e)},t.prototype.compareEnd=function(t,e){return this.end.row==t&&this.end.column==e?1:this.compare(t,e)},t.prototype.compareInside=function(t,e){return this.end.row==t&&this.end.column==e?1:this.start.row==t&&this.start.column==e?-1:this.compare(t,e)},t.prototype.clipRows=function(e,n){if(this.end.row>n)var r={row:n+1,column:0};else this.end.rown)var o={row:n+1,column:0};else this.start.rowthis.row)){var e=function(t,e,n){var r="insert"==t.action,o=(r?1:-1)*(t.end.row-t.start.row),i=(r?1:-1)*(t.end.column-t.start.column),a=t.start,c=r?a:t.end;return s(e,a,n)?{row:e.row,column:e.column}:s(c,e,!n)?{row:e.row+o,column:e.column+(e.row==c.row?i:0)}:{row:a.row,column:a.column}}(t,{row:this.row,column:this.column},this.$insertRight);this.setPosition(e.row,e.column,!0)}},t.prototype.setPosition=function(t,e,n){var r;if(r=n?{row:t,column:e}:this.$clipPositionToDocument(t,e),this.row!=r.row||this.column!=r.column){var o={row:this.row,column:this.column};this.row=r.row,this.column=r.column,this._signal("change",{old:o,value:r})}},t.prototype.detach=function(){this.document.off("change",this.$onChange)},t.prototype.attach=function(t){this.document=t||this.document,this.document.on("change",this.$onChange)},t.prototype.$clipPositionToDocument=function(t,e){var n={};return t>=this.document.getLength()?(n.row=Math.max(0,this.document.getLength()-1),n.column=this.document.getLine(n.row).length):t<0?(n.row=0,n.column=0):(n.row=t,n.column=Math.min(this.document.getLine(n.row).length,Math.max(0,e))),e<0&&(n.column=0),n},t}();function s(t,e,n){var r=n?t.column<=e.column:t.column=n&&(t=n-1,e=void 0);var r=this.getLine(t);return null==e&&(e=r.length),{row:t,column:e=Math.min(Math.max(e,0),r.length)}},t.prototype.clonePos=function(t){return{row:t.row,column:t.column}},t.prototype.pos=function(t,e){return{row:t,column:e}},t.prototype.$clipPosition=function(t){var e=this.getLength();return t.row>=e?(t.row=Math.max(0,e-1),t.column=this.getLine(e-1).length):(t.row=Math.max(0,t.row),t.column=Math.min(Math.max(t.column,0),this.getLine(t.row).length)),t},t.prototype.insertFullLines=function(t,e){var n=0;(t=Math.min(Math.max(t,0),this.getLength()))0,r=e=0&&this.applyDelta({start:this.pos(t,this.getLine(t).length),end:this.pos(t+1,0),action:"remove",lines:["",""]})},t.prototype.replace=function(t,e){return t instanceof s||(t=s.fromPoints(t.start,t.end)),0===e.length&&t.isEmpty()?t.start:e==this.getTextRange(t)?t.end:(this.remove(t),e?this.insert(t.start,e):t.start)},t.prototype.applyDeltas=function(t){for(var e=0;e=0;e--)this.revertDelta(t[e])},t.prototype.applyDelta=function(t,e){var n="insert"==t.action;(n?t.lines.length<=1&&!t.lines[0]:!s.comparePoints(t.start,t.end))||(n&&t.lines.length>2e4?this.$splitAndapplyLargeDelta(t,2e4):(o(this.$lines,t,e),this._signal("change",t)))},t.prototype.$safeApplyDelta=function(t){var e=this.$lines.length;("remove"==t.action&&t.start.row0;)1&e&&(n+=t),(e>>=1)&&(t+=t);return n};var r=/^\s\s*/,o=/\s\s*$/;e.stringTrimLeft=function(t){return t.replace(r,"")},e.stringTrimRight=function(t){return t.replace(o,"")},e.copyObject=function(t){var e={};for(var n in t)e[n]=t[n];return e},e.copyArray=function(t){for(var e=[],n=0,r=t.length;n65535?2:1}})),ace.define("ace/worker/mirror",[],(function(t,e,n){"use strict";var r=t("../document").Document,o=t("../lib/lang"),i=e.Mirror=function(t){this.sender=t;var e=this.doc=new r(""),n=this.deferredUpdate=o.delayedCall(this.onUpdate.bind(this)),i=this;t.on("change",(function(t){var r=t.data;if(r[0].start)e.applyDeltas(r);else for(var o=0;o=e.$lines.length)throw(a=new Error("Invalid delta")).data={path:i.$path,linesLength:e.$lines.length,start:s.start,end:s.end},a;e.applyDelta(s,!0)}if(i.$timeout)return n.schedule(i.$timeout);i.onUpdate()}))};(function(){this.$timeout=500,this.setTimeout=function(t){this.$timeout=t},this.setValue=function(t){this.doc.setValue(t),this.deferredUpdate.schedule(this.$timeout)},this.getValue=function(t){this.sender.callback(this.doc.getValue(),t)},this.onUpdate=function(){},this.isPending=function(){return this.deferredUpdate.isPending()}}).call(i.prototype)})),ace.define("ace/mode/json/json_parse",[],(function(t,e,n){"use strict";var r,o,i,s,a={'"':'"',"\\":"\\","/":"/",b:"\b",f:"\f",n:"\n",r:"\r",t:"\t"},c=function(t){throw{name:"SyntaxError",message:t,at:r,text:i}},u=function(t){return t&&t!==o&&c("Expected '"+t+"' instead of '"+o+"'"),o=i.charAt(r),r+=1,o},l=function(){var t,e="";for("-"===o&&(e="-",u("-"));o>="0"&&o<="9";)e+=o,u();if("."===o)for(e+=".";u()&&o>="0"&&o<="9";)e+=o;if("e"===o||"E"===o)for(e+=o,u(),"-"!==o&&"+"!==o||(e+=o,u());o>="0"&&o<="9";)e+=o,u();if(t=+e,!isNaN(t))return t;c("Bad number")},h=function(){var t,e,n,r="";if('"'===o)for(;u();){if('"'===o)return u(),r;if("\\"===o)if(u(),"u"===o){for(n=0,e=0;e<4&&(t=parseInt(u(),16),isFinite(t));e+=1)n=16*n+t;r+=String.fromCharCode(n)}else{if("string"!=typeof a[o])break;r+=a[o]}else{if("\n"==o||"\r"==o)break;r+=o}}c("Bad string")},p=function(){for(;o&&o<=" ";)u()};return s=function(){switch(p(),o){case"{":return function(){var t,e={};if("{"===o){if(u("{"),p(),"}"===o)return u("}"),e;for(;o;){if(t=h(),p(),u(":"),Object.hasOwnProperty.call(e,t)&&c('Duplicate key "'+t+'"'),e[t]=s(),p(),"}"===o)return u("}"),e;u(","),p()}}c("Bad object")}();case"[":return function(){var t=[];if("["===o){if(u("["),p(),"]"===o)return u("]"),t;for(;o;){if(t.push(s()),p(),"]"===o)return u("]"),t;u(","),p()}}c("Bad array")}();case'"':return h();case"-":return l();default:return o>="0"&&o<="9"?l():function(){switch(o){case"t":return u("t"),u("r"),u("u"),u("e"),!0;case"f":return u("f"),u("a"),u("l"),u("s"),u("e"),!1;case"n":return u("n"),u("u"),u("l"),u("l"),null}c("Unexpected '"+o+"'")}()}},function(t,e){var n;return i=t,r=0,o=" ",n=s(),p(),o&&c("Syntax error"),"function"==typeof e?function t(n,r){var o,i,s=n[r];if(s&&"object"==typeof s)for(o in s)Object.hasOwnProperty.call(s,o)&&(void 0!==(i=t(s,o))?s[o]=i:delete s[o]);return e.call(n,r,s)}({"":n},""):n}})),ace.define("ace/mode/json_worker",[],(function(t,e,n){"use strict";var r=t("../lib/oop"),o=t("../worker/mirror").Mirror,i=t("./json/json_parse"),s=e.JsonWorker=function(t){o.call(this,t),this.setTimeout(200)};r.inherits(s,o),function(){this.onUpdate=function(){var t=this.doc.getValue(),e=[];try{t&&i(t)}catch(t){var n=this.doc.indexToPosition(t.at-1);e.push({row:n.row,column:n.column,text:t.message,type:"error"})}this.sender.emit("annotate",e)}}.call(s.prototype)})); \ No newline at end of file diff --git a/lib/index.js b/lib/index.js index 0e50d1e1..5e436338 100644 --- a/lib/index.js +++ b/lib/index.js @@ -1,39542 +1,3 @@ -/******/ (() => { // webpackBootstrap -/******/ var __webpack_modules__ = ({ - -/***/ 239: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -/* module decorator */ module = __webpack_require__.nmd(module); -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2010, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * ***** END LICENSE BLOCK ***** */ - -/** - * Define a module along with a payload - * @param module a name for the payload - * @param payload a function to call with (require, exports, module) params - */ - -(function() { - -var ACE_NAMESPACE = "ace"; - -var global = (function() { return this; })(); -if (!global && typeof window != "undefined") global = window; // strict mode - - -if (!ACE_NAMESPACE && typeof requirejs !== "undefined") - return; - - -var define = function(module, deps, payload) { - if (typeof module !== "string") { - if (define.original) - define.original.apply(this, arguments); - else { - console.error("dropping module because define wasn\'t a string."); - console.trace(); - } - return; - } - if (arguments.length == 2) - payload = deps; - if (!define.modules[module]) { - define.payloads[module] = payload; - define.modules[module] = null; - } -}; - -define.modules = {}; -define.payloads = {}; - -/** - * Get at functionality define()ed using the function above - */ -var _require = function(parentId, module, callback) { - if (typeof module === "string") { - var payload = lookup(parentId, module); - if (payload != undefined) { - callback && callback(); - return payload; - } - } else if (Object.prototype.toString.call(module) === "[object Array]") { - var params = []; - for (var i = 0, l = module.length; i < l; ++i) { - var dep = lookup(parentId, module[i]); - if (dep == undefined && require.original) - return; - params.push(dep); - } - return callback && callback.apply(null, params) || true; - } -}; - -var require = function(module, callback) { - var packagedModule = _require("", module, callback); - if (packagedModule == undefined && require.original) - return require.original.apply(this, arguments); - return packagedModule; -}; - -var normalizeModule = function(parentId, moduleName) { - // normalize plugin requires - if (moduleName.indexOf("!") !== -1) { - var chunks = moduleName.split("!"); - return normalizeModule(parentId, chunks[0]) + "!" + normalizeModule(parentId, chunks[1]); - } - // normalize relative requires - if (moduleName.charAt(0) == ".") { - var base = parentId.split("/").slice(0, -1).join("/"); - moduleName = base + "/" + moduleName; - - while(moduleName.indexOf(".") !== -1 && previous != moduleName) { - var previous = moduleName; - moduleName = moduleName.replace(/\/\.\//, "/").replace(/[^\/]+\/\.\.\//, ""); - } - } - return moduleName; -}; - -/** - * Internal function to lookup moduleNames and resolve them by calling the - * definition function if needed. - */ -var lookup = function(parentId, moduleName) { - moduleName = normalizeModule(parentId, moduleName); - - var module = define.modules[moduleName]; - if (!module) { - module = define.payloads[moduleName]; - if (typeof module === 'function') { - var exports = {}; - var mod = { - id: moduleName, - uri: '', - exports: exports, - packaged: true - }; - - var req = function(module, callback) { - return _require(moduleName, module, callback); - }; - - var returnValue = module(req, exports, mod); - exports = returnValue || mod.exports; - define.modules[moduleName] = exports; - delete define.payloads[moduleName]; - } - module = define.modules[moduleName] = exports || module; - } - return module; -}; - -function exportAce(ns) { - var root = global; - if (ns) { - if (!global[ns]) - global[ns] = {}; - root = global[ns]; - } - - if (!root.define || !root.define.packaged) { - define.original = root.define; - root.define = define; - root.define.packaged = true; - } - - if (!root.require || !root.require.packaged) { - require.original = root.require; - root.require = require; - root.require.packaged = true; - } -} - -exportAce(ACE_NAMESPACE); - -})(); - -ace.define("ace/lib/es6-shim",["require","exports","module"], function(require, exports, module){function defineProp(obj, name, val) { - Object.defineProperty(obj, name, { - value: val, - enumerable: false, - writable: true, - configurable: true - }); -} -if (!String.prototype.startsWith) { - defineProp(String.prototype, "startsWith", function (searchString, position) { - position = position || 0; - return this.lastIndexOf(searchString, position) === position; - }); -} -if (!String.prototype.endsWith) { - defineProp(String.prototype, "endsWith", function (searchString, position) { - var subjectString = this; - if (position === undefined || position > subjectString.length) { - position = subjectString.length; - } - position -= searchString.length; - var lastIndex = subjectString.indexOf(searchString, position); - return lastIndex !== -1 && lastIndex === position; - }); -} -if (!String.prototype.repeat) { - defineProp(String.prototype, "repeat", function (count) { - var result = ""; - var string = this; - while (count > 0) { - if (count & 1) - result += string; - if ((count >>= 1)) - string += string; - } - return result; - }); -} -if (!String.prototype.includes) { - defineProp(String.prototype, "includes", function (str, position) { - return this.indexOf(str, position) != -1; - }); -} -if (!Object.assign) { - Object.assign = function (target) { - if (target === undefined || target === null) { - throw new TypeError("Cannot convert undefined or null to object"); - } - var output = Object(target); - for (var index = 1; index < arguments.length; index++) { - var source = arguments[index]; - if (source !== undefined && source !== null) { - Object.keys(source).forEach(function (key) { - output[key] = source[key]; - }); - } - } - return output; - }; -} -if (!Object.values) { - Object.values = function (o) { - return Object.keys(o).map(function (k) { - return o[k]; - }); - }; -} -if (!Array.prototype.find) { - defineProp(Array.prototype, "find", function (predicate) { - var len = this.length; - var thisArg = arguments[1]; - for (var k = 0; k < len; k++) { - var kValue = this[k]; - if (predicate.call(thisArg, kValue, k, this)) { - return kValue; - } - } - }); -} -if (!Array.prototype.findIndex) { - defineProp(Array.prototype, "findIndex", function (predicate) { - var len = this.length; - var thisArg = arguments[1]; - for (var k = 0; k < len; k++) { - var kValue = this[k]; - if (predicate.call(thisArg, kValue, k, this)) { - return k; - } - } - }); -} -if (!Array.prototype.includes) { - defineProp(Array.prototype, "includes", function (item, position) { - return this.indexOf(item, position) != -1; - }); -} -if (!Array.prototype.fill) { - defineProp(Array.prototype, "fill", function (value) { - var O = this; - var len = O.length >>> 0; - var start = arguments[1]; - var relativeStart = start >> 0; - var k = relativeStart < 0 - ? Math.max(len + relativeStart, 0) - : Math.min(relativeStart, len); - var end = arguments[2]; - var relativeEnd = end === undefined ? len : end >> 0; - var final = relativeEnd < 0 - ? Math.max(len + relativeEnd, 0) - : Math.min(relativeEnd, len); - while (k < final) { - O[k] = value; - k++; - } - return O; - }); -} -if (!Array.of) { - defineProp(Array, "of", function () { - return Array.prototype.slice.call(arguments); - }); -} - -}); - -ace.define("ace/lib/fixoldbrowsers",["require","exports","module","ace/lib/es6-shim"], function(require, exports, module){// vim:set ts=4 sts=4 sw=4 st: -"use strict"; -require("./es6-shim"); - -}); - -ace.define("ace/lib/deep_copy",["require","exports","module"], function(require, exports, module){exports.deepCopy = function deepCopy(obj) { - if (typeof obj !== "object" || !obj) - return obj; - var copy; - if (Array.isArray(obj)) { - copy = []; - for (var key = 0; key < obj.length; key++) { - copy[key] = deepCopy(obj[key]); - } - return copy; - } - if (Object.prototype.toString.call(obj) !== "[object Object]") - return obj; - copy = {}; - for (var key in obj) - copy[key] = deepCopy(obj[key]); - return copy; -}; - -}); - -ace.define("ace/lib/lang",["require","exports","module","ace/lib/deep_copy"], function(require, exports, module){"use strict"; -exports.last = function (a) { - return a[a.length - 1]; -}; -exports.stringReverse = function (string) { - return string.split("").reverse().join(""); -}; -exports.stringRepeat = function (string, count) { - var result = ''; - while (count > 0) { - if (count & 1) - result += string; - if (count >>= 1) - string += string; - } - return result; -}; -var trimBeginRegexp = /^\s\s*/; -var trimEndRegexp = /\s\s*$/; -exports.stringTrimLeft = function (string) { - return string.replace(trimBeginRegexp, ''); -}; -exports.stringTrimRight = function (string) { - return string.replace(trimEndRegexp, ''); -}; -exports.copyObject = function (obj) { - var copy = {}; - for (var key in obj) { - copy[key] = obj[key]; - } - return copy; -}; -exports.copyArray = function (array) { - var copy = []; - for (var i = 0, l = array.length; i < l; i++) { - if (array[i] && typeof array[i] == "object") - copy[i] = this.copyObject(array[i]); - else - copy[i] = array[i]; - } - return copy; -}; -exports.deepCopy = require("./deep_copy").deepCopy; -exports.arrayToMap = function (arr) { - var map = {}; - for (var i = 0; i < arr.length; i++) { - map[arr[i]] = 1; - } - return map; -}; -exports.createMap = function (props) { - var map = Object.create(null); - for (var i in props) { - map[i] = props[i]; - } - return map; -}; -exports.arrayRemove = function (array, value) { - for (var i = 0; i <= array.length; i++) { - if (value === array[i]) { - array.splice(i, 1); - } - } -}; -exports.escapeRegExp = function (str) { - return str.replace(/([.*+?^${}()|[\]\/\\])/g, '\\$1'); -}; -exports.escapeHTML = function (str) { - return ("" + str).replace(/&/g, "&").replace(/"/g, """).replace(/'/g, "'").replace(/ 0xffff ? 2 : 1; -}; - -}); - -ace.define("ace/lib/useragent",["require","exports","module"], function(require, exports, module){"use strict"; -exports.OS = { - LINUX: "LINUX", - MAC: "MAC", - WINDOWS: "WINDOWS" -}; -exports.getOS = function () { - if (exports.isMac) { - return exports.OS.MAC; - } - else if (exports.isLinux) { - return exports.OS.LINUX; - } - else { - return exports.OS.WINDOWS; - } -}; -var _navigator = typeof navigator == "object" ? navigator : {}; -var os = (/mac|win|linux/i.exec(_navigator.platform) || ["other"])[0].toLowerCase(); -var ua = _navigator.userAgent || ""; -var appName = _navigator.appName || ""; -exports.isWin = (os == "win"); -exports.isMac = (os == "mac"); -exports.isLinux = (os == "linux"); -exports.isIE = - (appName == "Microsoft Internet Explorer" || appName.indexOf("MSAppHost") >= 0) - ? parseFloat((ua.match(/(?:MSIE |Trident\/[0-9]+[\.0-9]+;.*rv:)([0-9]+[\.0-9]+)/) || [])[1]) - : parseFloat((ua.match(/(?:Trident\/[0-9]+[\.0-9]+;.*rv:)([0-9]+[\.0-9]+)/) || [])[1]); // for ie -exports.isOldIE = exports.isIE && exports.isIE < 9; -exports.isGecko = exports.isMozilla = ua.match(/ Gecko\/\d+/); -exports.isOpera = typeof opera == "object" && Object.prototype.toString.call(window.opera) == "[object Opera]"; -exports.isWebKit = parseFloat(ua.split("WebKit/")[1]) || undefined; -exports.isChrome = parseFloat(ua.split(" Chrome/")[1]) || undefined; -exports.isSafari = parseFloat(ua.split(" Safari/")[1]) && !exports.isChrome || undefined; -exports.isEdge = parseFloat(ua.split(" Edge/")[1]) || undefined; -exports.isAIR = ua.indexOf("AdobeAIR") >= 0; -exports.isAndroid = ua.indexOf("Android") >= 0; -exports.isChromeOS = ua.indexOf(" CrOS ") >= 0; -exports.isIOS = /iPad|iPhone|iPod/.test(ua) && !window.MSStream; -if (exports.isIOS) - exports.isMac = true; -exports.isMobile = exports.isIOS || exports.isAndroid; - -}); - -ace.define("ace/lib/dom",["require","exports","module","ace/lib/useragent"], function(require, exports, module){"use strict"; -var useragent = require("./useragent"); -var XHTML_NS = "http://www.w3.org/1999/xhtml"; -exports.buildDom = function buildDom(arr, parent, refs) { - if (typeof arr == "string" && arr) { - var txt = document.createTextNode(arr); - if (parent) - parent.appendChild(txt); - return txt; - } - if (!Array.isArray(arr)) { - if (arr && arr.appendChild && parent) - parent.appendChild(arr); - return arr; - } - if (typeof arr[0] != "string" || !arr[0]) { - var els = []; - for (var i = 0; i < arr.length; i++) { - var ch = buildDom(arr[i], parent, refs); - ch && els.push(ch); - } - return els; - } - var el = document.createElement(arr[0]); - var options = arr[1]; - var childIndex = 1; - if (options && typeof options == "object" && !Array.isArray(options)) - childIndex = 2; - for (var i = childIndex; i < arr.length; i++) - buildDom(arr[i], el, refs); - if (childIndex == 2) { - Object.keys(options).forEach(function (n) { - var val = options[n]; - if (n === "class") { - el.className = Array.isArray(val) ? val.join(" ") : val; - } - else if (typeof val == "function" || n == "value" || n[0] == "$") { - el[n] = val; - } - else if (n === "ref") { - if (refs) - refs[val] = el; - } - else if (n === "style") { - if (typeof val == "string") - el.style.cssText = val; - } - else if (val != null) { - el.setAttribute(n, val); - } - }); - } - if (parent) - parent.appendChild(el); - return el; -}; -exports.getDocumentHead = function (doc) { - if (!doc) - doc = document; - return doc.head || doc.getElementsByTagName("head")[0] || doc.documentElement; -}; -exports.createElement = function (tag, ns) { - return document.createElementNS ? - document.createElementNS(ns || XHTML_NS, tag) : - document.createElement(tag); -}; -exports.removeChildren = function (element) { - element.innerHTML = ""; -}; -exports.createTextNode = function (textContent, element) { - var doc = element ? element.ownerDocument : document; - return doc.createTextNode(textContent); -}; -exports.createFragment = function (element) { - var doc = element ? element.ownerDocument : document; - return doc.createDocumentFragment(); -}; -exports.hasCssClass = function (el, name) { - var classes = (el.className + "").split(/\s+/g); - return classes.indexOf(name) !== -1; -}; -exports.addCssClass = function (el, name) { - if (!exports.hasCssClass(el, name)) { - el.className += " " + name; - } -}; -exports.removeCssClass = function (el, name) { - var classes = el.className.split(/\s+/g); - while (true) { - var index = classes.indexOf(name); - if (index == -1) { - break; - } - classes.splice(index, 1); - } - el.className = classes.join(" "); -}; -exports.toggleCssClass = function (el, name) { - var classes = el.className.split(/\s+/g), add = true; - while (true) { - var index = classes.indexOf(name); - if (index == -1) { - break; - } - add = false; - classes.splice(index, 1); - } - if (add) - classes.push(name); - el.className = classes.join(" "); - return add; -}; -exports.setCssClass = function (node, className, include) { - if (include) { - exports.addCssClass(node, className); - } - else { - exports.removeCssClass(node, className); - } -}; -exports.hasCssString = function (id, doc) { - var index = 0, sheets; - doc = doc || document; - if ((sheets = doc.querySelectorAll("style"))) { - while (index < sheets.length) { - if (sheets[index++].id === id) { - return true; - } - } - } -}; -exports.removeElementById = function (id, doc) { - doc = doc || document; - if (doc.getElementById(id)) { - doc.getElementById(id).remove(); - } -}; -var strictCSP; -var cssCache = []; -exports.useStrictCSP = function (value) { - strictCSP = value; - if (value == false) - insertPendingStyles(); - else if (!cssCache) - cssCache = []; -}; -function insertPendingStyles() { - var cache = cssCache; - cssCache = null; - cache && cache.forEach(function (item) { - importCssString(item[0], item[1]); - }); -} -function importCssString(cssText, id, target) { - if (typeof document == "undefined") - return; - if (cssCache) { - if (target) { - insertPendingStyles(); - } - else if (target === false) { - return cssCache.push([cssText, id]); - } - } - if (strictCSP) - return; - var container = target; - if (!target || !target.getRootNode) { - container = document; - } - else { - container = target.getRootNode(); - if (!container || container == target) - container = document; - } - var doc = container.ownerDocument || container; - if (id && exports.hasCssString(id, container)) - return null; - if (id) - cssText += "\n/*# sourceURL=ace/css/" + id + " */"; - var style = exports.createElement("style"); - style.appendChild(doc.createTextNode(cssText)); - if (id) - style.id = id; - if (container == doc) - container = exports.getDocumentHead(doc); - container.insertBefore(style, container.firstChild); -} -exports.importCssString = importCssString; -exports.importCssStylsheet = function (uri, doc) { - exports.buildDom(["link", { rel: "stylesheet", href: uri }], exports.getDocumentHead(doc)); -}; -exports.scrollbarWidth = function (doc) { - var inner = exports.createElement("ace_inner"); - inner.style.width = "100%"; - inner.style.minWidth = "0px"; - inner.style.height = "200px"; - inner.style.display = "block"; - var outer = exports.createElement("ace_outer"); - var style = outer.style; - style.position = "absolute"; - style.left = "-10000px"; - style.overflow = "hidden"; - style.width = "200px"; - style.minWidth = "0px"; - style.height = "150px"; - style.display = "block"; - outer.appendChild(inner); - var body = (doc && doc.documentElement) || (document && document.documentElement); - if (!body) - return 0; - body.appendChild(outer); - var noScrollbar = inner.offsetWidth; - style.overflow = "scroll"; - var withScrollbar = inner.offsetWidth; - if (noScrollbar === withScrollbar) { - withScrollbar = outer.clientWidth; - } - body.removeChild(outer); - return noScrollbar - withScrollbar; -}; -exports.computedStyle = function (element, style) { - return window.getComputedStyle(element, "") || {}; -}; -exports.setStyle = function (styles, property, value) { - if (styles[property] !== value) { - styles[property] = value; - } -}; -exports.HAS_CSS_ANIMATION = false; -exports.HAS_CSS_TRANSFORMS = false; -exports.HI_DPI = useragent.isWin - ? typeof window !== "undefined" && window.devicePixelRatio >= 1.5 - : true; -if (useragent.isChromeOS) - exports.HI_DPI = false; -if (typeof document !== "undefined") { - var div = document.createElement("div"); - if (exports.HI_DPI && div.style.transform !== undefined) - exports.HAS_CSS_TRANSFORMS = true; - if (!useragent.isEdge && typeof div.style.animationName !== "undefined") - exports.HAS_CSS_ANIMATION = true; - div = null; -} -if (exports.HAS_CSS_TRANSFORMS) { - exports.translate = function (element, tx, ty) { - element.style.transform = "translate(" + Math.round(tx) + "px, " + Math.round(ty) + "px)"; - }; -} -else { - exports.translate = function (element, tx, ty) { - element.style.top = Math.round(ty) + "px"; - element.style.left = Math.round(tx) + "px"; - }; -} - -}); - -ace.define("ace/lib/net",["require","exports","module","ace/lib/dom"], function(require, exports, module){/* - * based on code from: - * - * @license RequireJS text 0.25.0 Copyright (c) 2010-2011, The Dojo Foundation All Rights Reserved. - * Available via the MIT or new BSD license. - * see: http://github.com/jrburke/requirejs for details - */ -"use strict"; -var dom = require("./dom"); -exports.get = function (url, callback) { - var xhr = new XMLHttpRequest(); - xhr.open('GET', url, true); - xhr.onreadystatechange = function () { - if (xhr.readyState === 4) { - callback(xhr.responseText); - } - }; - xhr.send(null); -}; -exports.loadScript = function (path, callback) { - var head = dom.getDocumentHead(); - var s = document.createElement('script'); - s.src = path; - head.appendChild(s); - s.onload = s.onreadystatechange = function (_, isAbort) { - if (isAbort || !s.readyState || s.readyState == "loaded" || s.readyState == "complete") { - s = s.onload = s.onreadystatechange = null; - if (!isAbort) - callback(); - } - }; -}; -exports.qualifyURL = function (url) { - var a = document.createElement('a'); - a.href = url; - return a.href; -}; - -}); - -ace.define("ace/lib/oop",["require","exports","module"], function(require, exports, module){"use strict"; -exports.inherits = function (ctor, superCtor) { - ctor.super_ = superCtor; - ctor.prototype = Object.create(superCtor.prototype, { - constructor: { - value: ctor, - enumerable: false, - writable: true, - configurable: true - } - }); -}; -exports.mixin = function (obj, mixin) { - for (var key in mixin) { - obj[key] = mixin[key]; - } - return obj; -}; -exports.implement = function (proto, mixin) { - exports.mixin(proto, mixin); -}; - -}); - -ace.define("ace/lib/event_emitter",["require","exports","module"], function(require, exports, module){"use strict"; -var EventEmitter = {}; -var stopPropagation = function () { this.propagationStopped = true; }; -var preventDefault = function () { this.defaultPrevented = true; }; -EventEmitter._emit = - EventEmitter._dispatchEvent = function (eventName, e) { - this._eventRegistry || (this._eventRegistry = {}); - this._defaultHandlers || (this._defaultHandlers = {}); - var listeners = this._eventRegistry[eventName] || []; - var defaultHandler = this._defaultHandlers[eventName]; - if (!listeners.length && !defaultHandler) - return; - if (typeof e != "object" || !e) - e = {}; - if (!e.type) - e.type = eventName; - if (!e.stopPropagation) - e.stopPropagation = stopPropagation; - if (!e.preventDefault) - e.preventDefault = preventDefault; - listeners = listeners.slice(); - for (var i = 0; i < listeners.length; i++) { - listeners[i](e, this); - if (e.propagationStopped) - break; - } - if (defaultHandler && !e.defaultPrevented) - return defaultHandler(e, this); - }; -EventEmitter._signal = function (eventName, e) { - var listeners = (this._eventRegistry || {})[eventName]; - if (!listeners) - return; - listeners = listeners.slice(); - for (var i = 0; i < listeners.length; i++) - listeners[i](e, this); -}; -EventEmitter.once = function (eventName, callback) { - var _self = this; - this.on(eventName, function newCallback() { - _self.off(eventName, newCallback); - callback.apply(null, arguments); - }); - if (!callback) { - return new Promise(function (resolve) { - callback = resolve; - }); - } -}; -EventEmitter.setDefaultHandler = function (eventName, callback) { - var handlers = this._defaultHandlers; - if (!handlers) - handlers = this._defaultHandlers = { _disabled_: {} }; - if (handlers[eventName]) { - var old = handlers[eventName]; - var disabled = handlers._disabled_[eventName]; - if (!disabled) - handlers._disabled_[eventName] = disabled = []; - disabled.push(old); - var i = disabled.indexOf(callback); - if (i != -1) - disabled.splice(i, 1); - } - handlers[eventName] = callback; -}; -EventEmitter.removeDefaultHandler = function (eventName, callback) { - var handlers = this._defaultHandlers; - if (!handlers) - return; - var disabled = handlers._disabled_[eventName]; - if (handlers[eventName] == callback) { - if (disabled) - this.setDefaultHandler(eventName, disabled.pop()); - } - else if (disabled) { - var i = disabled.indexOf(callback); - if (i != -1) - disabled.splice(i, 1); - } -}; -EventEmitter.on = - EventEmitter.addEventListener = function (eventName, callback, capturing) { - this._eventRegistry = this._eventRegistry || {}; - var listeners = this._eventRegistry[eventName]; - if (!listeners) - listeners = this._eventRegistry[eventName] = []; - if (listeners.indexOf(callback) == -1) - listeners[capturing ? "unshift" : "push"](callback); - return callback; - }; -EventEmitter.off = - EventEmitter.removeListener = - EventEmitter.removeEventListener = function (eventName, callback) { - this._eventRegistry = this._eventRegistry || {}; - var listeners = this._eventRegistry[eventName]; - if (!listeners) - return; - var index = listeners.indexOf(callback); - if (index !== -1) - listeners.splice(index, 1); - }; -EventEmitter.removeAllListeners = function (eventName) { - if (!eventName) - this._eventRegistry = this._defaultHandlers = undefined; - if (this._eventRegistry) - this._eventRegistry[eventName] = undefined; - if (this._defaultHandlers) - this._defaultHandlers[eventName] = undefined; -}; -exports.EventEmitter = EventEmitter; - -}); - -ace.define("ace/lib/report_error",["require","exports","module"], function(require, exports, module){exports.reportError = function reportError(msg, data) { - var e = new Error(msg); - e.data = data; - if (typeof console == "object" && console.error) - console.error(e); - setTimeout(function () { throw e; }); -}; - -}); - -ace.define("ace/lib/app_config",["require","exports","module","ace/lib/oop","ace/lib/event_emitter","ace/lib/report_error"], function(require, exports, module){"no use strict"; -var oop = require("./oop"); -var EventEmitter = require("./event_emitter").EventEmitter; -var reportError = require("./report_error").reportError; -var optionsProvider = { - setOptions: function (optList) { - Object.keys(optList).forEach(function (key) { - this.setOption(key, optList[key]); - }, this); - }, - getOptions: function (optionNames) { - var result = {}; - if (!optionNames) { - var options = this.$options; - optionNames = Object.keys(options).filter(function (key) { - return !options[key].hidden; - }); - } - else if (!Array.isArray(optionNames)) { - result = optionNames; - optionNames = Object.keys(result); - } - optionNames.forEach(function (key) { - result[key] = this.getOption(key); - }, this); - return result; - }, - setOption: function (name, value) { - if (this["$" + name] === value) - return; - var opt = this.$options[name]; - if (!opt) { - return warn('misspelled option "' + name + '"'); - } - if (opt.forwardTo) - return this[opt.forwardTo] && this[opt.forwardTo].setOption(name, value); - if (!opt.handlesSet) - this["$" + name] = value; - if (opt && opt.set) - opt.set.call(this, value); - }, - getOption: function (name) { - var opt = this.$options[name]; - if (!opt) { - return warn('misspelled option "' + name + '"'); - } - if (opt.forwardTo) - return this[opt.forwardTo] && this[opt.forwardTo].getOption(name); - return opt && opt.get ? opt.get.call(this) : this["$" + name]; - } -}; -function warn(message) { - if (typeof console != "undefined" && console.warn) - console.warn.apply(console, arguments); -} -var messages; -var AppConfig = /** @class */ (function () { - function AppConfig() { - this.$defaultOptions = {}; - } - AppConfig.prototype.defineOptions = function (obj, path, options) { - if (!obj.$options) - this.$defaultOptions[path] = obj.$options = {}; - Object.keys(options).forEach(function (key) { - var opt = options[key]; - if (typeof opt == "string") - opt = { forwardTo: opt }; - opt.name || (opt.name = key); - obj.$options[opt.name] = opt; - if ("initialValue" in opt) - obj["$" + opt.name] = opt.initialValue; - }); - oop.implement(obj, optionsProvider); - return this; - }; - AppConfig.prototype.resetOptions = function (obj) { - Object.keys(obj.$options).forEach(function (key) { - var opt = obj.$options[key]; - if ("value" in opt) - obj.setOption(key, opt.value); - }); - }; - AppConfig.prototype.setDefaultValue = function (path, name, value) { - if (!path) { - for (path in this.$defaultOptions) - if (this.$defaultOptions[path][name]) - break; - if (!this.$defaultOptions[path][name]) - return false; - } - var opts = this.$defaultOptions[path] || (this.$defaultOptions[path] = {}); - if (opts[name]) { - if (opts.forwardTo) - this.setDefaultValue(opts.forwardTo, name, value); - else - opts[name].value = value; - } - }; - AppConfig.prototype.setDefaultValues = function (path, optionHash) { - Object.keys(optionHash).forEach(function (key) { - this.setDefaultValue(path, key, optionHash[key]); - }, this); - }; - AppConfig.prototype.setMessages = function (value) { - messages = value; - }; - AppConfig.prototype.nls = function (string, params) { - if (messages && !messages[string]) { - warn("No message found for '" + string + "' in the provided messages, falling back to default English message."); - } - var translated = messages && messages[string] || string; - if (params) { - translated = translated.replace(/\$(\$|[\d]+)/g, function (_, name) { - if (name == "$") - return "$"; - return params[name]; - }); - } - return translated; - }; - return AppConfig; -}()); -AppConfig.prototype.warn = warn; -AppConfig.prototype.reportError = reportError; -oop.implement(AppConfig.prototype, EventEmitter); -exports.AppConfig = AppConfig; - -}); - -ace.define("ace/theme/textmate-css",["require","exports","module"], function(require, exports, module){module.exports = ".ace-tm .ace_gutter {\n background: #f0f0f0;\n color: #333;\n}\n\n.ace-tm .ace_print-margin {\n width: 1px;\n background: #e8e8e8;\n}\n\n.ace-tm .ace_fold {\n background-color: #6B72E6;\n}\n\n.ace-tm {\n background-color: #FFFFFF;\n color: black;\n}\n\n.ace-tm .ace_cursor {\n color: black;\n}\n \n.ace-tm .ace_invisible {\n color: rgb(191, 191, 191);\n}\n\n.ace-tm .ace_storage,\n.ace-tm .ace_keyword {\n color: blue;\n}\n\n.ace-tm .ace_constant {\n color: rgb(197, 6, 11);\n}\n\n.ace-tm .ace_constant.ace_buildin {\n color: rgb(88, 72, 246);\n}\n\n.ace-tm .ace_constant.ace_language {\n color: rgb(88, 92, 246);\n}\n\n.ace-tm .ace_constant.ace_library {\n color: rgb(6, 150, 14);\n}\n\n.ace-tm .ace_invalid {\n background-color: rgba(255, 0, 0, 0.1);\n color: red;\n}\n\n.ace-tm .ace_support.ace_function {\n color: rgb(60, 76, 114);\n}\n\n.ace-tm .ace_support.ace_constant {\n color: rgb(6, 150, 14);\n}\n\n.ace-tm .ace_support.ace_type,\n.ace-tm .ace_support.ace_class {\n color: rgb(109, 121, 222);\n}\n\n.ace-tm .ace_keyword.ace_operator {\n color: rgb(104, 118, 135);\n}\n\n.ace-tm .ace_string {\n color: rgb(3, 106, 7);\n}\n\n.ace-tm .ace_comment {\n color: rgb(76, 136, 107);\n}\n\n.ace-tm .ace_comment.ace_doc {\n color: rgb(0, 102, 255);\n}\n\n.ace-tm .ace_comment.ace_doc.ace_tag {\n color: rgb(128, 159, 191);\n}\n\n.ace-tm .ace_constant.ace_numeric {\n color: rgb(0, 0, 205);\n}\n\n.ace-tm .ace_variable {\n color: rgb(49, 132, 149);\n}\n\n.ace-tm .ace_xml-pe {\n color: rgb(104, 104, 91);\n}\n\n.ace-tm .ace_entity.ace_name.ace_function {\n color: #0000A2;\n}\n\n\n.ace-tm .ace_heading {\n color: rgb(12, 7, 255);\n}\n\n.ace-tm .ace_list {\n color:rgb(185, 6, 144);\n}\n\n.ace-tm .ace_meta.ace_tag {\n color:rgb(0, 22, 142);\n}\n\n.ace-tm .ace_string.ace_regex {\n color: rgb(255, 0, 0)\n}\n\n.ace-tm .ace_marker-layer .ace_selection {\n background: rgb(181, 213, 255);\n}\n.ace-tm.ace_multiselect .ace_selection.ace_start {\n box-shadow: 0 0 3px 0px white;\n}\n.ace-tm .ace_marker-layer .ace_step {\n background: rgb(252, 255, 0);\n}\n\n.ace-tm .ace_marker-layer .ace_stack {\n background: rgb(164, 229, 101);\n}\n\n.ace-tm .ace_marker-layer .ace_bracket {\n margin: -1px 0 0 -1px;\n border: 1px solid rgb(192, 192, 192);\n}\n\n.ace-tm .ace_marker-layer .ace_active-line {\n background: rgba(0, 0, 0, 0.07);\n}\n\n.ace-tm .ace_gutter-active-line {\n background-color : #dcdcdc;\n}\n\n.ace-tm .ace_marker-layer .ace_selected-word {\n background: rgb(250, 250, 255);\n border: 1px solid rgb(200, 200, 250);\n}\n\n.ace-tm .ace_indent-guide {\n background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==\") right repeat-y;\n}\n\n.ace-tm .ace_indent-guide-active {\n background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAAZSURBVHjaYvj///9/hivKyv8BAAAA//8DACLqBhbvk+/eAAAAAElFTkSuQmCC\") right repeat-y;\n}\n"; - -}); - -ace.define("ace/theme/textmate",["require","exports","module","ace/theme/textmate-css","ace/lib/dom"], function(require, exports, module){"use strict"; -exports.isDark = false; -exports.cssClass = "ace-tm"; -exports.cssText = require("./textmate-css"); -exports.$id = "ace/theme/textmate"; -var dom = require("../lib/dom"); -dom.importCssString(exports.cssText, exports.cssClass, false); - -}); - -ace.define("ace/config",["require","exports","module","ace/lib/lang","ace/lib/net","ace/lib/dom","ace/lib/app_config","ace/theme/textmate"], function(require, exports, module){"no use strict"; -var lang = require("./lib/lang"); -var net = require("./lib/net"); -var dom = require("./lib/dom"); -var AppConfig = require("./lib/app_config").AppConfig; -module.exports = exports = new AppConfig(); -var options = { - packaged: false, - workerPath: null, - modePath: null, - themePath: null, - basePath: "", - suffix: ".js", - $moduleUrls: {}, - loadWorkerFromBlob: true, - sharedPopups: false, - useStrictCSP: null -}; -exports.get = function (key) { - if (!options.hasOwnProperty(key)) - throw new Error("Unknown config key: " + key); - return options[key]; -}; -exports.set = function (key, value) { - if (options.hasOwnProperty(key)) - options[key] = value; - else if (this.setDefaultValue("", key, value) == false) - throw new Error("Unknown config key: " + key); - if (key == "useStrictCSP") - dom.useStrictCSP(value); -}; -exports.all = function () { - return lang.copyObject(options); -}; -exports.$modes = {}; -exports.moduleUrl = function (name, component) { - if (options.$moduleUrls[name]) - return options.$moduleUrls[name]; - var parts = name.split("/"); - component = component || parts[parts.length - 2] || ""; - var sep = component == "snippets" ? "/" : "-"; - var base = parts[parts.length - 1]; - if (component == "worker" && sep == "-") { - var re = new RegExp("^" + component + "[\\-_]|[\\-_]" + component + "$", "g"); - base = base.replace(re, ""); - } - if ((!base || base == component) && parts.length > 1) - base = parts[parts.length - 2]; - var path = options[component + "Path"]; - if (path == null) { - path = options.basePath; - } - else if (sep == "/") { - component = sep = ""; - } - if (path && path.slice(-1) != "/") - path += "/"; - return path + component + sep + base + this.get("suffix"); -}; -exports.setModuleUrl = function (name, subst) { - return options.$moduleUrls[name] = subst; -}; -var loader = function (moduleName, cb) { - if (moduleName === "ace/theme/textmate" || moduleName === "./theme/textmate") - return cb(null, require("./theme/textmate")); - if (customLoader) - return customLoader(moduleName, cb); - console.error("loader is not configured"); -}; -var customLoader; -exports.setLoader = function (cb) { - customLoader = cb; -}; -exports.dynamicModules = Object.create(null); -exports.$loading = {}; -exports.$loaded = {}; -exports.loadModule = function (moduleName, onLoad) { - var loadedModule, moduleType; - if (Array.isArray(moduleName)) { - moduleType = moduleName[0]; - moduleName = moduleName[1]; - } - var load = function (module) { - if (module && !exports.$loading[moduleName]) - return onLoad && onLoad(module); - if (!exports.$loading[moduleName]) - exports.$loading[moduleName] = []; - exports.$loading[moduleName].push(onLoad); - if (exports.$loading[moduleName].length > 1) - return; - var afterLoad = function () { - loader(moduleName, function (err, module) { - if (module) - exports.$loaded[moduleName] = module; - exports._emit("load.module", { name: moduleName, module: module }); - var listeners = exports.$loading[moduleName]; - exports.$loading[moduleName] = null; - listeners.forEach(function (onLoad) { - onLoad && onLoad(module); - }); - }); - }; - if (!exports.get("packaged")) - return afterLoad(); - net.loadScript(exports.moduleUrl(moduleName, moduleType), afterLoad); - reportErrorIfPathIsNotConfigured(); - }; - if (exports.dynamicModules[moduleName]) { - exports.dynamicModules[moduleName]().then(function (module) { - if (module.default) { - load(module.default); - } - else { - load(module); - } - }); - } - else { - try { - loadedModule = this.$require(moduleName); - } - catch (e) { } - load(loadedModule || exports.$loaded[moduleName]); - } -}; -exports.$require = function (moduleName) { - if (typeof module.require == "function") { - var req = "require"; - return module[req](moduleName); - } -}; -exports.setModuleLoader = function (moduleName, onLoad) { - exports.dynamicModules[moduleName] = onLoad; -}; -var reportErrorIfPathIsNotConfigured = function () { - if (!options.basePath && !options.workerPath - && !options.modePath && !options.themePath - && !Object.keys(options.$moduleUrls).length) { - console.error("Unable to infer path to ace from script src,", "use ace.config.set('basePath', 'path') to enable dynamic loading of modes and themes", "or with webpack use ace/webpack-resolver"); - reportErrorIfPathIsNotConfigured = function () { }; - } -}; -exports.version = "1.32.0"; - -}); - -ace.define("ace/loader_build",["require","exports","module","ace/lib/fixoldbrowsers","ace/config"], function(require, exports, module) { -"use strict"; - -require("./lib/fixoldbrowsers"); -var config = require("./config"); -config.setLoader(function(moduleName, cb) { - require([moduleName], function(module) { - cb(null, module); - }); -}); - -var global = (function() { - return this || typeof window != "undefined" && window; -})(); - -module.exports = function(ace) { - config.init = init; - config.$require = require; - ace.require = require; - - if (true) - ace.define = __webpack_require__.amdD; -}; -init(true);function init(packaged) { - - if (!global || !global.document) - return; - - config.set("packaged", packaged || require.packaged || module.packaged || (global.define && __webpack_require__.amdD.packaged)); - - var scriptOptions = {}; - var scriptUrl = ""; - var currentScript = (document.currentScript || document._currentScript ); // native or polyfill - var currentDocument = currentScript && currentScript.ownerDocument || document; - - if (currentScript && currentScript.src) { - scriptUrl = currentScript.src.split(/[?#]/)[0].split("/").slice(0, -1).join("/") || ""; - } - - var scripts = currentDocument.getElementsByTagName("script"); - for (var i=0; i [" + this.end.row + "/" + this.end.column + "]"); - }; - Range.prototype.contains = function (row, column) { - return this.compare(row, column) == 0; - }; - Range.prototype.compareRange = function (range) { - var cmp, end = range.end, start = range.start; - cmp = this.compare(end.row, end.column); - if (cmp == 1) { - cmp = this.compare(start.row, start.column); - if (cmp == 1) { - return 2; - } - else if (cmp == 0) { - return 1; - } - else { - return 0; - } - } - else if (cmp == -1) { - return -2; - } - else { - cmp = this.compare(start.row, start.column); - if (cmp == -1) { - return -1; - } - else if (cmp == 1) { - return 42; - } - else { - return 0; - } - } - }; - Range.prototype.comparePoint = function (p) { - return this.compare(p.row, p.column); - }; - Range.prototype.containsRange = function (range) { - return this.comparePoint(range.start) == 0 && this.comparePoint(range.end) == 0; - }; - Range.prototype.intersects = function (range) { - var cmp = this.compareRange(range); - return (cmp == -1 || cmp == 0 || cmp == 1); - }; - Range.prototype.isEnd = function (row, column) { - return this.end.row == row && this.end.column == column; - }; - Range.prototype.isStart = function (row, column) { - return this.start.row == row && this.start.column == column; - }; - Range.prototype.setStart = function (row, column) { - if (typeof row == "object") { - this.start.column = row.column; - this.start.row = row.row; - } - else { - this.start.row = row; - this.start.column = column; - } - }; - Range.prototype.setEnd = function (row, column) { - if (typeof row == "object") { - this.end.column = row.column; - this.end.row = row.row; - } - else { - this.end.row = row; - this.end.column = column; - } - }; - Range.prototype.inside = function (row, column) { - if (this.compare(row, column) == 0) { - if (this.isEnd(row, column) || this.isStart(row, column)) { - return false; - } - else { - return true; - } - } - return false; - }; - Range.prototype.insideStart = function (row, column) { - if (this.compare(row, column) == 0) { - if (this.isEnd(row, column)) { - return false; - } - else { - return true; - } - } - return false; - }; - Range.prototype.insideEnd = function (row, column) { - if (this.compare(row, column) == 0) { - if (this.isStart(row, column)) { - return false; - } - else { - return true; - } - } - return false; - }; - Range.prototype.compare = function (row, column) { - if (!this.isMultiLine()) { - if (row === this.start.row) { - return column < this.start.column ? -1 : (column > this.end.column ? 1 : 0); - } - } - if (row < this.start.row) - return -1; - if (row > this.end.row) - return 1; - if (this.start.row === row) - return column >= this.start.column ? 0 : -1; - if (this.end.row === row) - return column <= this.end.column ? 0 : 1; - return 0; - }; - Range.prototype.compareStart = function (row, column) { - if (this.start.row == row && this.start.column == column) { - return -1; - } - else { - return this.compare(row, column); - } - }; - Range.prototype.compareEnd = function (row, column) { - if (this.end.row == row && this.end.column == column) { - return 1; - } - else { - return this.compare(row, column); - } - }; - Range.prototype.compareInside = function (row, column) { - if (this.end.row == row && this.end.column == column) { - return 1; - } - else if (this.start.row == row && this.start.column == column) { - return -1; - } - else { - return this.compare(row, column); - } - }; - Range.prototype.clipRows = function (firstRow, lastRow) { - if (this.end.row > lastRow) - var end = { row: lastRow + 1, column: 0 }; - else if (this.end.row < firstRow) - var end = { row: firstRow, column: 0 }; - if (this.start.row > lastRow) - var start = { row: lastRow + 1, column: 0 }; - else if (this.start.row < firstRow) - var start = { row: firstRow, column: 0 }; - return Range.fromPoints(start || this.start, end || this.end); - }; - Range.prototype.extend = function (row, column) { - var cmp = this.compare(row, column); - if (cmp == 0) - return this; - else if (cmp == -1) - var start = { row: row, column: column }; - else - var end = { row: row, column: column }; - return Range.fromPoints(start || this.start, end || this.end); - }; - Range.prototype.isEmpty = function () { - return (this.start.row === this.end.row && this.start.column === this.end.column); - }; - Range.prototype.isMultiLine = function () { - return (this.start.row !== this.end.row); - }; - Range.prototype.clone = function () { - return Range.fromPoints(this.start, this.end); - }; - Range.prototype.collapseRows = function () { - if (this.end.column == 0) - return new Range(this.start.row, 0, Math.max(this.start.row, this.end.row - 1), 0); - else - return new Range(this.start.row, 0, this.end.row, 0); - }; - Range.prototype.toScreenRange = function (session) { - var screenPosStart = session.documentToScreenPosition(this.start); - var screenPosEnd = session.documentToScreenPosition(this.end); - return new Range(screenPosStart.row, screenPosStart.column, screenPosEnd.row, screenPosEnd.column); - }; - Range.prototype.moveBy = function (row, column) { - this.start.row += row; - this.start.column += column; - this.end.row += row; - this.end.column += column; - }; - return Range; -}()); -Range.fromPoints = function (start, end) { - return new Range(start.row, start.column, end.row, end.column); -}; -Range.comparePoints = comparePoints; -Range.comparePoints = function (p1, p2) { - return p1.row - p2.row || p1.column - p2.column; -}; -exports.Range = Range; - -}); - -ace.define("ace/lib/keys",["require","exports","module","ace/lib/oop"], function(require, exports, module){/*! @license -========================================================================== -SproutCore -- JavaScript Application Framework -copyright 2006-2009, Sprout Systems Inc., Apple Inc. and contributors. - -Permission is hereby granted, free of charge, to any person obtaining a -copy of this software and associated documentation files (the "Software"), -to deal in the Software without restriction, including without limitation -the rights to use, copy, modify, merge, publish, distribute, sublicense, -and/or sell copies of the Software, and to permit persons to whom the -Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. - -SproutCore and the SproutCore logo are trademarks of Sprout Systems, Inc. - -For more information about SproutCore, visit http://www.sproutcore.com - - -========================================================================== -@license */ -"use strict"; -var oop = require("./oop"); -var Keys = (function () { - var ret = { - MODIFIER_KEYS: { - 16: 'Shift', 17: 'Ctrl', 18: 'Alt', 224: 'Meta', - 91: 'MetaLeft', 92: 'MetaRight', 93: 'ContextMenu' - }, - KEY_MODS: { - "ctrl": 1, "alt": 2, "option": 2, "shift": 4, - "super": 8, "meta": 8, "command": 8, "cmd": 8, - "control": 1 - }, - FUNCTION_KEYS: { - 8: "Backspace", - 9: "Tab", - 13: "Return", - 19: "Pause", - 27: "Esc", - 32: "Space", - 33: "PageUp", - 34: "PageDown", - 35: "End", - 36: "Home", - 37: "Left", - 38: "Up", - 39: "Right", - 40: "Down", - 44: "Print", - 45: "Insert", - 46: "Delete", - 96: "Numpad0", - 97: "Numpad1", - 98: "Numpad2", - 99: "Numpad3", - 100: "Numpad4", - 101: "Numpad5", - 102: "Numpad6", - 103: "Numpad7", - 104: "Numpad8", - 105: "Numpad9", - '-13': "NumpadEnter", - 112: "F1", - 113: "F2", - 114: "F3", - 115: "F4", - 116: "F5", - 117: "F6", - 118: "F7", - 119: "F8", - 120: "F9", - 121: "F10", - 122: "F11", - 123: "F12", - 144: "Numlock", - 145: "Scrolllock" - }, - PRINTABLE_KEYS: { - 32: ' ', 48: '0', 49: '1', 50: '2', 51: '3', 52: '4', 53: '5', - 54: '6', 55: '7', 56: '8', 57: '9', 59: ';', 61: '=', 65: 'a', - 66: 'b', 67: 'c', 68: 'd', 69: 'e', 70: 'f', 71: 'g', 72: 'h', - 73: 'i', 74: 'j', 75: 'k', 76: 'l', 77: 'm', 78: 'n', 79: 'o', - 80: 'p', 81: 'q', 82: 'r', 83: 's', 84: 't', 85: 'u', 86: 'v', - 87: 'w', 88: 'x', 89: 'y', 90: 'z', 107: '+', 109: '-', 110: '.', - 186: ';', 187: '=', 188: ',', 189: '-', 190: '.', 191: '/', 192: '`', - 219: '[', 220: '\\', 221: ']', 222: "'", 111: '/', 106: '*' - } - }; - ret.PRINTABLE_KEYS[173] = '-'; - var name, i; - for (i in ret.FUNCTION_KEYS) { - name = ret.FUNCTION_KEYS[i].toLowerCase(); - ret[name] = parseInt(i, 10); - } - for (i in ret.PRINTABLE_KEYS) { - name = ret.PRINTABLE_KEYS[i].toLowerCase(); - ret[name] = parseInt(i, 10); - } - oop.mixin(ret, ret.MODIFIER_KEYS); - oop.mixin(ret, ret.PRINTABLE_KEYS); - oop.mixin(ret, ret.FUNCTION_KEYS); - ret.enter = ret["return"]; - ret.escape = ret.esc; - ret.del = ret["delete"]; - (function () { - var mods = ["cmd", "ctrl", "alt", "shift"]; - for (var i = Math.pow(2, mods.length); i--;) { - ret.KEY_MODS[i] = mods.filter(function (x) { - return i & ret.KEY_MODS[x]; - }).join("-") + "-"; - } - })(); - ret.KEY_MODS[0] = ""; - ret.KEY_MODS[-1] = "input-"; - return ret; -})(); -oop.mixin(exports, Keys); -exports.default = exports; -exports.keyCodeToString = function (keyCode) { - var keyString = Keys[keyCode]; - if (typeof keyString != "string") - keyString = String.fromCharCode(keyCode); - return keyString.toLowerCase(); -}; - -}); - -ace.define("ace/lib/event",["require","exports","module","ace/lib/keys","ace/lib/useragent"], function(require, exports, module){"use strict"; -var keys = require("./keys"); -var useragent = require("./useragent"); -var pressedKeys = null; -var ts = 0; -var activeListenerOptions; -function detectListenerOptionsSupport() { - activeListenerOptions = false; - try { - document.createComment("").addEventListener("test", function () { }, { - get passive() { - activeListenerOptions = { passive: false }; - } - }); - } - catch (e) { } -} -function getListenerOptions() { - if (activeListenerOptions == undefined) - detectListenerOptionsSupport(); - return activeListenerOptions; -} -function EventListener(elem, type, callback) { - this.elem = elem; - this.type = type; - this.callback = callback; -} -EventListener.prototype.destroy = function () { - removeListener(this.elem, this.type, this.callback); - this.elem = this.type = this.callback = undefined; -}; -var addListener = exports.addListener = function (elem, type, callback, destroyer) { - elem.addEventListener(type, callback, getListenerOptions()); - if (destroyer) - destroyer.$toDestroy.push(new EventListener(elem, type, callback)); -}; -var removeListener = exports.removeListener = function (elem, type, callback) { - elem.removeEventListener(type, callback, getListenerOptions()); -}; -exports.stopEvent = function (e) { - exports.stopPropagation(e); - exports.preventDefault(e); - return false; -}; -exports.stopPropagation = function (e) { - if (e.stopPropagation) - e.stopPropagation(); -}; -exports.preventDefault = function (e) { - if (e.preventDefault) - e.preventDefault(); -}; -exports.getButton = function (e) { - if (e.type == "dblclick") - return 0; - if (e.type == "contextmenu" || (useragent.isMac && (e.ctrlKey && !e.altKey && !e.shiftKey))) - return 2; - return e.button; -}; -exports.capture = function (el, eventHandler, releaseCaptureHandler) { - var ownerDocument = el && el.ownerDocument || document; - function onMouseUp(e) { - eventHandler && eventHandler(e); - releaseCaptureHandler && releaseCaptureHandler(e); - removeListener(ownerDocument, "mousemove", eventHandler); - removeListener(ownerDocument, "mouseup", onMouseUp); - removeListener(ownerDocument, "dragstart", onMouseUp); - } - addListener(ownerDocument, "mousemove", eventHandler); - addListener(ownerDocument, "mouseup", onMouseUp); - addListener(ownerDocument, "dragstart", onMouseUp); - return onMouseUp; -}; -exports.addMouseWheelListener = function (el, callback, destroyer) { - addListener(el, "wheel", function (e) { - var factor = 0.15; - var deltaX = e.deltaX || 0; - var deltaY = e.deltaY || 0; - switch (e.deltaMode) { - case e.DOM_DELTA_PIXEL: - e.wheelX = deltaX * factor; - e.wheelY = deltaY * factor; - break; - case e.DOM_DELTA_LINE: - var linePixels = 15; - e.wheelX = deltaX * linePixels; - e.wheelY = deltaY * linePixels; - break; - case e.DOM_DELTA_PAGE: - var pagePixels = 150; - e.wheelX = deltaX * pagePixels; - e.wheelY = deltaY * pagePixels; - break; - } - callback(e); - }, destroyer); -}; -exports.addMultiMouseDownListener = function (elements, timeouts, eventHandler, callbackName, destroyer) { - var clicks = 0; - var startX, startY, timer; - var eventNames = { - 2: "dblclick", - 3: "tripleclick", - 4: "quadclick" - }; - function onMousedown(e) { - if (exports.getButton(e) !== 0) { - clicks = 0; - } - else if (e.detail > 1) { - clicks++; - if (clicks > 4) - clicks = 1; - } - else { - clicks = 1; - } - if (useragent.isIE) { - var isNewClick = Math.abs(e.clientX - startX) > 5 || Math.abs(e.clientY - startY) > 5; - if (!timer || isNewClick) - clicks = 1; - if (timer) - clearTimeout(timer); - timer = setTimeout(function () { timer = null; }, timeouts[clicks - 1] || 600); - if (clicks == 1) { - startX = e.clientX; - startY = e.clientY; - } - } - e._clicks = clicks; - eventHandler[callbackName]("mousedown", e); - if (clicks > 4) - clicks = 0; - else if (clicks > 1) - return eventHandler[callbackName](eventNames[clicks], e); - } - if (!Array.isArray(elements)) - elements = [elements]; - elements.forEach(function (el) { - addListener(el, "mousedown", onMousedown, destroyer); - }); -}; -var getModifierHash = function (e) { - return 0 | (e.ctrlKey ? 1 : 0) | (e.altKey ? 2 : 0) | (e.shiftKey ? 4 : 0) | (e.metaKey ? 8 : 0); -}; -exports.getModifierString = function (e) { - return keys.KEY_MODS[getModifierHash(e)]; -}; -function normalizeCommandKeys(callback, e, keyCode) { - var hashId = getModifierHash(e); - if (!useragent.isMac && pressedKeys) { - if (e.getModifierState && (e.getModifierState("OS") || e.getModifierState("Win"))) - hashId |= 8; - if (pressedKeys.altGr) { - if ((3 & hashId) != 3) - pressedKeys.altGr = 0; - else - return; - } - if (keyCode === 18 || keyCode === 17) { - var location = "location" in e ? e.location : e.keyLocation; - if (keyCode === 17 && location === 1) { - if (pressedKeys[keyCode] == 1) - ts = e.timeStamp; - } - else if (keyCode === 18 && hashId === 3 && location === 2) { - var dt = e.timeStamp - ts; - if (dt < 50) - pressedKeys.altGr = true; - } - } - } - if (keyCode in keys.MODIFIER_KEYS) { - keyCode = -1; - } - if (!hashId && keyCode === 13) { - var location = "location" in e ? e.location : e.keyLocation; - if (location === 3) { - callback(e, hashId, -keyCode); - if (e.defaultPrevented) - return; - } - } - if (useragent.isChromeOS && hashId & 8) { - callback(e, hashId, keyCode); - if (e.defaultPrevented) - return; - else - hashId &= ~8; - } - if (!hashId && !(keyCode in keys.FUNCTION_KEYS) && !(keyCode in keys.PRINTABLE_KEYS)) { - return false; - } - return callback(e, hashId, keyCode); -} -exports.addCommandKeyListener = function (el, callback, destroyer) { - if (useragent.isOldGecko || (useragent.isOpera && !("KeyboardEvent" in window))) { - var lastKeyDownKeyCode = null; - addListener(el, "keydown", function (e) { - lastKeyDownKeyCode = e.keyCode; - }, destroyer); - addListener(el, "keypress", function (e) { - return normalizeCommandKeys(callback, e, lastKeyDownKeyCode); - }, destroyer); - } - else { - var lastDefaultPrevented = null; - addListener(el, "keydown", function (e) { - pressedKeys[e.keyCode] = (pressedKeys[e.keyCode] || 0) + 1; - var result = normalizeCommandKeys(callback, e, e.keyCode); - lastDefaultPrevented = e.defaultPrevented; - return result; - }, destroyer); - addListener(el, "keypress", function (e) { - if (lastDefaultPrevented && (e.ctrlKey || e.altKey || e.shiftKey || e.metaKey)) { - exports.stopEvent(e); - lastDefaultPrevented = null; - } - }, destroyer); - addListener(el, "keyup", function (e) { - pressedKeys[e.keyCode] = null; - }, destroyer); - if (!pressedKeys) { - resetPressedKeys(); - addListener(window, "focus", resetPressedKeys); - } - } -}; -function resetPressedKeys() { - pressedKeys = Object.create(null); -} -if (typeof window == "object" && window.postMessage && !useragent.isOldIE) { - var postMessageId = 1; - exports.nextTick = function (callback, win) { - win = win || window; - var messageName = "zero-timeout-message-" + (postMessageId++); - var listener = function (e) { - if (e.data == messageName) { - exports.stopPropagation(e); - removeListener(win, "message", listener); - callback(); - } - }; - addListener(win, "message", listener); - win.postMessage(messageName, "*"); - }; -} -exports.$idleBlocked = false; -exports.onIdle = function (cb, timeout) { - return setTimeout(function handler() { - if (!exports.$idleBlocked) { - cb(); - } - else { - setTimeout(handler, 100); - } - }, timeout); -}; -exports.$idleBlockId = null; -exports.blockIdle = function (delay) { - if (exports.$idleBlockId) - clearTimeout(exports.$idleBlockId); - exports.$idleBlocked = true; - exports.$idleBlockId = setTimeout(function () { - exports.$idleBlocked = false; - }, delay || 100); -}; -exports.nextFrame = typeof window == "object" && (window.requestAnimationFrame - || window.mozRequestAnimationFrame - || window.webkitRequestAnimationFrame - || window.msRequestAnimationFrame - || window.oRequestAnimationFrame); -if (exports.nextFrame) - exports.nextFrame = exports.nextFrame.bind(window); -else - exports.nextFrame = function (callback) { - setTimeout(callback, 17); - }; - -}); - -ace.define("ace/clipboard",["require","exports","module"], function(require, exports, module){"use strict"; -var $cancelT; -module.exports = { - lineMode: false, - pasteCancelled: function () { - if ($cancelT && $cancelT > Date.now() - 50) - return true; - return $cancelT = false; - }, - cancel: function () { - $cancelT = Date.now(); - } -}; - -}); - -ace.define("ace/keyboard/textinput",["require","exports","module","ace/lib/event","ace/config","ace/lib/useragent","ace/lib/dom","ace/lib/lang","ace/clipboard","ace/lib/keys"], function(require, exports, module){"use strict"; -var event = require("../lib/event"); -var nls = require("../config").nls; -var useragent = require("../lib/useragent"); -var dom = require("../lib/dom"); -var lang = require("../lib/lang"); -var clipboard = require("../clipboard"); -var BROKEN_SETDATA = useragent.isChrome < 18; -var USE_IE_MIME_TYPE = useragent.isIE; -var HAS_FOCUS_ARGS = useragent.isChrome > 63; -var MAX_LINE_LENGTH = 400; -var KEYS = require("../lib/keys"); -var MODS = KEYS.KEY_MODS; -var isIOS = useragent.isIOS; -var valueResetRegex = isIOS ? /\s/ : /\n/; -var isMobile = useragent.isMobile; -var TextInput = function (parentNode, host) { - var text = dom.createElement("textarea"); - text.className = "ace_text-input"; - text.setAttribute("wrap", "off"); - text.setAttribute("autocorrect", "off"); - text.setAttribute("autocapitalize", "off"); - text.setAttribute("spellcheck", false); - text.style.opacity = "0"; - parentNode.insertBefore(text, parentNode.firstChild); - var copied = false; - var pasted = false; - var inComposition = false; - var sendingText = false; - var tempStyle = ''; - if (!isMobile) - text.style.fontSize = "1px"; - var commandMode = false; - var ignoreFocusEvents = false; - var lastValue = ""; - var lastSelectionStart = 0; - var lastSelectionEnd = 0; - var lastRestoreEnd = 0; - var rowStart = Number.MAX_SAFE_INTEGER; - var rowEnd = Number.MIN_SAFE_INTEGER; - var numberOfExtraLines = 0; - try { - var isFocused = document.activeElement === text; - } - catch (e) { } - this.setNumberOfExtraLines = function (number) { - rowStart = Number.MAX_SAFE_INTEGER; - rowEnd = Number.MIN_SAFE_INTEGER; - if (number < 0) { - numberOfExtraLines = 0; - return; - } - numberOfExtraLines = number; - }; - this.setAriaOptions = function (options) { - if (options.activeDescendant) { - text.setAttribute("aria-haspopup", "true"); - text.setAttribute("aria-autocomplete", options.inline ? "both" : "list"); - text.setAttribute("aria-activedescendant", options.activeDescendant); - } - else { - text.setAttribute("aria-haspopup", "false"); - text.setAttribute("aria-autocomplete", "both"); - text.removeAttribute("aria-activedescendant"); - } - if (options.role) { - text.setAttribute("role", options.role); - } - if (options.setLabel) { - text.setAttribute("aria-roledescription", nls("editor")); - if (host.session) { - var row = host.session.selection.cursor.row; - text.setAttribute("aria-label", nls("Cursor at row $0", [row + 1])); - } - } - }; - this.setAriaOptions({ role: "textbox" }); - event.addListener(text, "blur", function (e) { - if (ignoreFocusEvents) - return; - host.onBlur(e); - isFocused = false; - }, host); - event.addListener(text, "focus", function (e) { - if (ignoreFocusEvents) - return; - isFocused = true; - if (useragent.isEdge) { - try { - if (!document.hasFocus()) - return; - } - catch (e) { } - } - host.onFocus(e); - if (useragent.isEdge) - setTimeout(resetSelection); - else - resetSelection(); - }, host); - this.$focusScroll = false; - this.focus = function () { - this.setAriaOptions({ - setLabel: host.renderer.enableKeyboardAccessibility - }); - if (tempStyle || HAS_FOCUS_ARGS || this.$focusScroll == "browser") - return text.focus({ preventScroll: true }); - var top = text.style.top; - text.style.position = "fixed"; - text.style.top = "0px"; - try { - var isTransformed = text.getBoundingClientRect().top != 0; - } - catch (e) { - return; - } - var ancestors = []; - if (isTransformed) { - var t = text.parentElement; - while (t && t.nodeType == 1) { - ancestors.push(t); - t.setAttribute("ace_nocontext", true); - if (!t.parentElement && t.getRootNode) - t = t.getRootNode().host; - else - t = t.parentElement; - } - } - text.focus({ preventScroll: true }); - if (isTransformed) { - ancestors.forEach(function (p) { - p.removeAttribute("ace_nocontext"); - }); - } - setTimeout(function () { - text.style.position = ""; - if (text.style.top == "0px") - text.style.top = top; - }, 0); - }; - this.blur = function () { - text.blur(); - }; - this.isFocused = function () { - return isFocused; - }; - host.on("beforeEndOperation", function () { - var curOp = host.curOp; - var commandName = curOp && curOp.command && curOp.command.name; - if (commandName == "insertstring") - return; - var isUserAction = commandName && (curOp.docChanged || curOp.selectionChanged); - if (inComposition && isUserAction) { - lastValue = text.value = ""; - onCompositionEnd(); - } - resetSelection(); - }); - var positionToSelection = function (row, column) { - var selection = column; - for (var i = 1; i <= row - rowStart && i < 2 * numberOfExtraLines + 1; i++) { - selection += host.session.getLine(row - i).length + 1; - } - return selection; - }; - var resetSelection = isIOS - ? function (value) { - if (!isFocused || (copied && !value) || sendingText) - return; - if (!value) - value = ""; - var newValue = "\n ab" + value + "cde fg\n"; - if (newValue != text.value) - text.value = lastValue = newValue; - var selectionStart = 4; - var selectionEnd = 4 + (value.length || (host.selection.isEmpty() ? 0 : 1)); - if (lastSelectionStart != selectionStart || lastSelectionEnd != selectionEnd) { - text.setSelectionRange(selectionStart, selectionEnd); - } - lastSelectionStart = selectionStart; - lastSelectionEnd = selectionEnd; - } - : function () { - if (inComposition || sendingText) - return; - if (!isFocused && !afterContextMenu) - return; - inComposition = true; - var selectionStart = 0; - var selectionEnd = 0; - var line = ""; - if (host.session) { - var selection = host.selection; - var range = selection.getRange(); - var row = selection.cursor.row; - if (row === rowEnd + 1) { - rowStart = rowEnd + 1; - rowEnd = rowStart + 2 * numberOfExtraLines; - } - else if (row === rowStart - 1) { - rowEnd = rowStart - 1; - rowStart = rowEnd - 2 * numberOfExtraLines; - } - else if (row < rowStart - 1 || row > rowEnd + 1) { - rowStart = row > numberOfExtraLines ? row - numberOfExtraLines : 0; - rowEnd = row > numberOfExtraLines ? row + numberOfExtraLines : 2 * numberOfExtraLines; - } - var lines = []; - for (var i = rowStart; i <= rowEnd; i++) { - lines.push(host.session.getLine(i)); - } - line = lines.join('\n'); - selectionStart = positionToSelection(range.start.row, range.start.column); - selectionEnd = positionToSelection(range.end.row, range.end.column); - if (range.start.row < rowStart) { - var prevLine = host.session.getLine(rowStart - 1); - selectionStart = range.start.row < rowStart - 1 ? 0 : selectionStart; - selectionEnd += prevLine.length + 1; - line = prevLine + "\n" + line; - } - else if (range.end.row > rowEnd) { - var nextLine = host.session.getLine(rowEnd + 1); - selectionEnd = range.end.row > rowEnd + 1 ? nextLine.length : range.end.column; - selectionEnd += line.length + 1; - line = line + "\n" + nextLine; - } - else if (isMobile && row > 0) { - line = "\n" + line; - selectionEnd += 1; - selectionStart += 1; - } - if (line.length > MAX_LINE_LENGTH) { - if (selectionStart < MAX_LINE_LENGTH && selectionEnd < MAX_LINE_LENGTH) { - line = line.slice(0, MAX_LINE_LENGTH); - } - else { - line = "\n"; - if (selectionStart == selectionEnd) { - selectionStart = selectionEnd = 0; - } - else { - selectionStart = 0; - selectionEnd = 1; - } - } - } - var newValue = line + "\n\n"; - if (newValue != lastValue) { - text.value = lastValue = newValue; - lastSelectionStart = lastSelectionEnd = newValue.length; - } - } - if (afterContextMenu) { - lastSelectionStart = text.selectionStart; - lastSelectionEnd = text.selectionEnd; - } - if (lastSelectionEnd != selectionEnd - || lastSelectionStart != selectionStart - || text.selectionEnd != lastSelectionEnd // on ie edge selectionEnd changes silently after the initialization - ) { - try { - text.setSelectionRange(selectionStart, selectionEnd); - lastSelectionStart = selectionStart; - lastSelectionEnd = selectionEnd; - } - catch (e) { } - } - inComposition = false; - }; - this.resetSelection = resetSelection; - if (isFocused) - host.onFocus(); - var isAllSelected = function (text) { - return text.selectionStart === 0 && text.selectionEnd >= lastValue.length - && text.value === lastValue && lastValue - && text.selectionEnd !== lastSelectionEnd; - }; - var onSelect = function (e) { - if (inComposition) - return; - if (copied) { - copied = false; - } - else if (isAllSelected(text)) { - host.selectAll(); - resetSelection(); - } - else if (isMobile && text.selectionStart != lastSelectionStart) { - resetSelection(); - } - }; - var inputHandler = null; - this.setInputHandler = function (cb) { inputHandler = cb; }; - this.getInputHandler = function () { return inputHandler; }; - var afterContextMenu = false; - var sendText = function (value, fromInput) { - if (afterContextMenu) - afterContextMenu = false; - if (pasted) { - resetSelection(); - if (value) - host.onPaste(value); - pasted = false; - return ""; - } - else { - var selectionStart = text.selectionStart; - var selectionEnd = text.selectionEnd; - var extendLeft = lastSelectionStart; - var extendRight = lastValue.length - lastSelectionEnd; - var inserted = value; - var restoreStart = value.length - selectionStart; - var restoreEnd = value.length - selectionEnd; - var i = 0; - while (extendLeft > 0 && lastValue[i] == value[i]) { - i++; - extendLeft--; - } - inserted = inserted.slice(i); - i = 1; - while (extendRight > 0 && lastValue.length - i > lastSelectionStart - 1 && lastValue[lastValue.length - i] == value[value.length - i]) { - i++; - extendRight--; - } - restoreStart -= i - 1; - restoreEnd -= i - 1; - var endIndex = inserted.length - i + 1; - if (endIndex < 0) { - extendLeft = -endIndex; - endIndex = 0; - } - inserted = inserted.slice(0, endIndex); - if (!fromInput && !inserted && !restoreStart && !extendLeft && !extendRight && !restoreEnd) - return ""; - sendingText = true; - var shouldReset = false; - if (useragent.isAndroid && inserted == ". ") { - inserted = " "; - shouldReset = true; - } - if (inserted && !extendLeft && !extendRight && !restoreStart && !restoreEnd || commandMode) { - host.onTextInput(inserted); - } - else { - host.onTextInput(inserted, { - extendLeft: extendLeft, - extendRight: extendRight, - restoreStart: restoreStart, - restoreEnd: restoreEnd - }); - } - sendingText = false; - lastValue = value; - lastSelectionStart = selectionStart; - lastSelectionEnd = selectionEnd; - lastRestoreEnd = restoreEnd; - return shouldReset ? "\n" : inserted; - } - }; - var onInput = function (e) { - if (inComposition) - return onCompositionUpdate(); - if (e && e.inputType) { - if (e.inputType == "historyUndo") - return host.execCommand("undo"); - if (e.inputType == "historyRedo") - return host.execCommand("redo"); - } - var data = text.value; - var inserted = sendText(data, true); - if (data.length > MAX_LINE_LENGTH + 100 - || valueResetRegex.test(inserted) - || isMobile && lastSelectionStart < 1 && lastSelectionStart == lastSelectionEnd) { - resetSelection(); - } - }; - var handleClipboardData = function (e, data, forceIEMime) { - var clipboardData = e.clipboardData || window.clipboardData; - if (!clipboardData || BROKEN_SETDATA) - return; - var mime = USE_IE_MIME_TYPE || forceIEMime ? "Text" : "text/plain"; - try { - if (data) { - return clipboardData.setData(mime, data) !== false; - } - else { - return clipboardData.getData(mime); - } - } - catch (e) { - if (!forceIEMime) - return handleClipboardData(e, data, true); - } - }; - var doCopy = function (e, isCut) { - var data = host.getCopyText(); - if (!data) - return event.preventDefault(e); - if (handleClipboardData(e, data)) { - if (isIOS) { - resetSelection(data); - copied = data; - setTimeout(function () { - copied = false; - }, 10); - } - isCut ? host.onCut() : host.onCopy(); - event.preventDefault(e); - } - else { - copied = true; - text.value = data; - text.select(); - setTimeout(function () { - copied = false; - resetSelection(); - isCut ? host.onCut() : host.onCopy(); - }); - } - }; - var onCut = function (e) { - doCopy(e, true); - }; - var onCopy = function (e) { - doCopy(e, false); - }; - var onPaste = function (e) { - var data = handleClipboardData(e); - if (clipboard.pasteCancelled()) - return; - if (typeof data == "string") { - if (data) - host.onPaste(data, e); - if (useragent.isIE) - setTimeout(resetSelection); - event.preventDefault(e); - } - else { - text.value = ""; - pasted = true; - } - }; - event.addCommandKeyListener(text, host.onCommandKey.bind(host), host); - event.addListener(text, "select", onSelect, host); - event.addListener(text, "input", onInput, host); - event.addListener(text, "cut", onCut, host); - event.addListener(text, "copy", onCopy, host); - event.addListener(text, "paste", onPaste, host); - if (!('oncut' in text) || !('oncopy' in text) || !('onpaste' in text)) { - event.addListener(parentNode, "keydown", function (e) { - if ((useragent.isMac && !e.metaKey) || !e.ctrlKey) - return; - switch (e.keyCode) { - case 67: - onCopy(e); - break; - case 86: - onPaste(e); - break; - case 88: - onCut(e); - break; - } - }, host); - } - var onCompositionStart = function (e) { - if (inComposition || !host.onCompositionStart || host.$readOnly) - return; - inComposition = {}; - if (commandMode) - return; - if (e.data) - inComposition.useTextareaForIME = false; - setTimeout(onCompositionUpdate, 0); - host._signal("compositionStart"); - host.on("mousedown", cancelComposition); - var range = host.getSelectionRange(); - range.end.row = range.start.row; - range.end.column = range.start.column; - inComposition.markerRange = range; - inComposition.selectionStart = lastSelectionStart; - host.onCompositionStart(inComposition); - if (inComposition.useTextareaForIME) { - lastValue = text.value = ""; - lastSelectionStart = 0; - lastSelectionEnd = 0; - } - else { - if (text.msGetInputContext) - inComposition.context = text.msGetInputContext(); - if (text.getInputContext) - inComposition.context = text.getInputContext(); - } - }; - var onCompositionUpdate = function () { - if (!inComposition || !host.onCompositionUpdate || host.$readOnly) - return; - if (commandMode) - return cancelComposition(); - if (inComposition.useTextareaForIME) { - host.onCompositionUpdate(text.value); - } - else { - var data = text.value; - sendText(data); - if (inComposition.markerRange) { - if (inComposition.context) { - inComposition.markerRange.start.column = inComposition.selectionStart - = inComposition.context.compositionStartOffset; - } - inComposition.markerRange.end.column = inComposition.markerRange.start.column - + lastSelectionEnd - inComposition.selectionStart + lastRestoreEnd; - } - } - }; - var onCompositionEnd = function (e) { - if (!host.onCompositionEnd || host.$readOnly) - return; - inComposition = false; - host.onCompositionEnd(); - host.off("mousedown", cancelComposition); - if (e) - onInput(); - }; - function cancelComposition() { - ignoreFocusEvents = true; - text.blur(); - text.focus(); - ignoreFocusEvents = false; - } - var syncComposition = lang.delayedCall(onCompositionUpdate, 50).schedule.bind(null, null); - function onKeyup(e) { - if (e.keyCode == 27 && text.value.length < text.selectionStart) { - if (!inComposition) - lastValue = text.value; - lastSelectionStart = lastSelectionEnd = -1; - resetSelection(); - } - syncComposition(); - } - event.addListener(text, "compositionstart", onCompositionStart, host); - event.addListener(text, "compositionupdate", onCompositionUpdate, host); - event.addListener(text, "keyup", onKeyup, host); - event.addListener(text, "keydown", syncComposition, host); - event.addListener(text, "compositionend", onCompositionEnd, host); - this.getElement = function () { - return text; - }; - this.setCommandMode = function (value) { - commandMode = value; - text.readOnly = false; - }; - this.setReadOnly = function (readOnly) { - if (!commandMode) - text.readOnly = readOnly; - }; - this.setCopyWithEmptySelection = function (value) { - }; - this.onContextMenu = function (e) { - afterContextMenu = true; - resetSelection(); - host._emit("nativecontextmenu", { target: host, domEvent: e }); - this.moveToMouse(e, true); - }; - this.moveToMouse = function (e, bringToFront) { - if (!tempStyle) - tempStyle = text.style.cssText; - text.style.cssText = (bringToFront ? "z-index:100000;" : "") - + (useragent.isIE ? "opacity:0.1;" : "") - + "text-indent: -" + (lastSelectionStart + lastSelectionEnd) * host.renderer.characterWidth * 0.5 + "px;"; - var rect = host.container.getBoundingClientRect(); - var style = dom.computedStyle(host.container); - var top = rect.top + (parseInt(style.borderTopWidth) || 0); - var left = rect.left + (parseInt(rect.borderLeftWidth) || 0); - var maxTop = rect.bottom - top - text.clientHeight - 2; - var move = function (e) { - dom.translate(text, e.clientX - left - 2, Math.min(e.clientY - top - 2, maxTop)); - }; - move(e); - if (e.type != "mousedown") - return; - host.renderer.$isMousePressed = true; - clearTimeout(closeTimeout); - if (useragent.isWin) - event.capture(host.container, move, onContextMenuClose); - }; - this.onContextMenuClose = onContextMenuClose; - var closeTimeout; - function onContextMenuClose() { - clearTimeout(closeTimeout); - closeTimeout = setTimeout(function () { - if (tempStyle) { - text.style.cssText = tempStyle; - tempStyle = ''; - } - host.renderer.$isMousePressed = false; - if (host.renderer.$keepTextAreaAtCursor) - host.renderer.$moveTextAreaToCursor(); - }, 0); - } - var onContextMenu = function (e) { - host.textInput.onContextMenu(e); - onContextMenuClose(); - }; - event.addListener(text, "mouseup", onContextMenu, host); - event.addListener(text, "mousedown", function (e) { - e.preventDefault(); - onContextMenuClose(); - }, host); - event.addListener(host.renderer.scroller, "contextmenu", onContextMenu, host); - event.addListener(text, "contextmenu", onContextMenu, host); - if (isIOS) - addIosSelectionHandler(parentNode, host, text); - function addIosSelectionHandler(parentNode, host, text) { - var typingResetTimeout = null; - var typing = false; - text.addEventListener("keydown", function (e) { - if (typingResetTimeout) - clearTimeout(typingResetTimeout); - typing = true; - }, true); - text.addEventListener("keyup", function (e) { - typingResetTimeout = setTimeout(function () { - typing = false; - }, 100); - }, true); - var detectArrowKeys = function (e) { - if (document.activeElement !== text) - return; - if (typing || inComposition || host.$mouseHandler.isMousePressed) - return; - if (copied) { - return; - } - var selectionStart = text.selectionStart; - var selectionEnd = text.selectionEnd; - var key = null; - var modifier = 0; - if (selectionStart == 0) { - key = KEYS.up; - } - else if (selectionStart == 1) { - key = KEYS.home; - } - else if (selectionEnd > lastSelectionEnd && lastValue[selectionEnd] == "\n") { - key = KEYS.end; - } - else if (selectionStart < lastSelectionStart && lastValue[selectionStart - 1] == " ") { - key = KEYS.left; - modifier = MODS.option; - } - else if (selectionStart < lastSelectionStart - || (selectionStart == lastSelectionStart - && lastSelectionEnd != lastSelectionStart - && selectionStart == selectionEnd)) { - key = KEYS.left; - } - else if (selectionEnd > lastSelectionEnd && lastValue.slice(0, selectionEnd).split("\n").length > 2) { - key = KEYS.down; - } - else if (selectionEnd > lastSelectionEnd && lastValue[selectionEnd - 1] == " ") { - key = KEYS.right; - modifier = MODS.option; - } - else if (selectionEnd > lastSelectionEnd - || (selectionEnd == lastSelectionEnd - && lastSelectionEnd != lastSelectionStart - && selectionStart == selectionEnd)) { - key = KEYS.right; - } - if (selectionStart !== selectionEnd) - modifier |= MODS.shift; - if (key) { - var result = host.onCommandKey({}, modifier, key); - if (!result && host.commands) { - key = KEYS.keyCodeToString(key); - var command = host.commands.findKeyCommand(modifier, key); - if (command) - host.execCommand(command); - } - lastSelectionStart = selectionStart; - lastSelectionEnd = selectionEnd; - resetSelection(""); - } - }; - document.addEventListener("selectionchange", detectArrowKeys); - host.on("destroy", function () { - document.removeEventListener("selectionchange", detectArrowKeys); - }); - } - this.destroy = function () { - if (text.parentElement) - text.parentElement.removeChild(text); - }; -}; -exports.TextInput = TextInput; -exports.$setUserAgentForTests = function (_isMobile, _isIOS) { - isMobile = _isMobile; - isIOS = _isIOS; -}; - -}); - -ace.define("ace/mouse/default_handlers",["require","exports","module","ace/lib/useragent"], function(require, exports, module){"use strict"; -var useragent = require("../lib/useragent"); -var DRAG_OFFSET = 0; // pixels -var SCROLL_COOLDOWN_T = 550; // milliseconds -var DefaultHandlers = /** @class */ (function () { - function DefaultHandlers(mouseHandler) { - mouseHandler.$clickSelection = null; - var editor = mouseHandler.editor; - editor.setDefaultHandler("mousedown", this.onMouseDown.bind(mouseHandler)); - editor.setDefaultHandler("dblclick", this.onDoubleClick.bind(mouseHandler)); - editor.setDefaultHandler("tripleclick", this.onTripleClick.bind(mouseHandler)); - editor.setDefaultHandler("quadclick", this.onQuadClick.bind(mouseHandler)); - editor.setDefaultHandler("mousewheel", this.onMouseWheel.bind(mouseHandler)); - var exports = ["select", "startSelect", "selectEnd", "selectAllEnd", "selectByWordsEnd", - "selectByLinesEnd", "dragWait", "dragWaitEnd", "focusWait"]; - exports.forEach(function (x) { - mouseHandler[x] = this[x]; - }, this); - mouseHandler.selectByLines = this.extendSelectionBy.bind(mouseHandler, "getLineRange"); - mouseHandler.selectByWords = this.extendSelectionBy.bind(mouseHandler, "getWordRange"); - } - DefaultHandlers.prototype.onMouseDown = function (ev) { - var inSelection = ev.inSelection(); - var pos = ev.getDocumentPosition(); - this.mousedownEvent = ev; - var editor = this.editor; - var button = ev.getButton(); - if (button !== 0) { - var selectionRange = editor.getSelectionRange(); - var selectionEmpty = selectionRange.isEmpty(); - if (selectionEmpty || button == 1) - editor.selection.moveToPosition(pos); - if (button == 2) { - editor.textInput.onContextMenu(ev.domEvent); - if (!useragent.isMozilla) - ev.preventDefault(); - } - return; - } - this.mousedownEvent.time = Date.now(); - if (inSelection && !editor.isFocused()) { - editor.focus(); - if (this.$focusTimeout && !this.$clickSelection && !editor.inMultiSelectMode) { - this.setState("focusWait"); - this.captureMouse(ev); - return; - } - } - this.captureMouse(ev); - this.startSelect(pos, ev.domEvent._clicks > 1); - return ev.preventDefault(); - }; - DefaultHandlers.prototype.startSelect = function (pos, waitForClickSelection) { - pos = pos || this.editor.renderer.screenToTextCoordinates(this.x, this.y); - var editor = this.editor; - if (!this.mousedownEvent) - return; - if (this.mousedownEvent.getShiftKey()) - editor.selection.selectToPosition(pos); - else if (!waitForClickSelection) - editor.selection.moveToPosition(pos); - if (!waitForClickSelection) - this.select(); - editor.setStyle("ace_selecting"); - this.setState("select"); - }; - DefaultHandlers.prototype.select = function () { - var anchor, editor = this.editor; - var cursor = editor.renderer.screenToTextCoordinates(this.x, this.y); - if (this.$clickSelection) { - var cmp = this.$clickSelection.comparePoint(cursor); - if (cmp == -1) { - anchor = this.$clickSelection.end; - } - else if (cmp == 1) { - anchor = this.$clickSelection.start; - } - else { - var orientedRange = calcRangeOrientation(this.$clickSelection, cursor); - cursor = orientedRange.cursor; - anchor = orientedRange.anchor; - } - editor.selection.setSelectionAnchor(anchor.row, anchor.column); - } - editor.selection.selectToPosition(cursor); - editor.renderer.scrollCursorIntoView(); - }; - DefaultHandlers.prototype.extendSelectionBy = function (unitName) { - var anchor, editor = this.editor; - var cursor = editor.renderer.screenToTextCoordinates(this.x, this.y); - var range = editor.selection[unitName](cursor.row, cursor.column); - if (this.$clickSelection) { - var cmpStart = this.$clickSelection.comparePoint(range.start); - var cmpEnd = this.$clickSelection.comparePoint(range.end); - if (cmpStart == -1 && cmpEnd <= 0) { - anchor = this.$clickSelection.end; - if (range.end.row != cursor.row || range.end.column != cursor.column) - cursor = range.start; - } - else if (cmpEnd == 1 && cmpStart >= 0) { - anchor = this.$clickSelection.start; - if (range.start.row != cursor.row || range.start.column != cursor.column) - cursor = range.end; - } - else if (cmpStart == -1 && cmpEnd == 1) { - cursor = range.end; - anchor = range.start; - } - else { - var orientedRange = calcRangeOrientation(this.$clickSelection, cursor); - cursor = orientedRange.cursor; - anchor = orientedRange.anchor; - } - editor.selection.setSelectionAnchor(anchor.row, anchor.column); - } - editor.selection.selectToPosition(cursor); - editor.renderer.scrollCursorIntoView(); - }; - DefaultHandlers.prototype.selectByLinesEnd = function () { - this.$clickSelection = null; - this.editor.unsetStyle("ace_selecting"); - }; - DefaultHandlers.prototype.focusWait = function () { - var distance = calcDistance(this.mousedownEvent.x, this.mousedownEvent.y, this.x, this.y); - var time = Date.now(); - if (distance > DRAG_OFFSET || time - this.mousedownEvent.time > this.$focusTimeout) - this.startSelect(this.mousedownEvent.getDocumentPosition()); - }; - DefaultHandlers.prototype.onDoubleClick = function (ev) { - var pos = ev.getDocumentPosition(); - var editor = this.editor; - var session = editor.session; - var range = session.getBracketRange(pos); - if (range) { - if (range.isEmpty()) { - range.start.column--; - range.end.column++; - } - this.setState("select"); - } - else { - range = editor.selection.getWordRange(pos.row, pos.column); - this.setState("selectByWords"); - } - this.$clickSelection = range; - this.select(); - }; - DefaultHandlers.prototype.onTripleClick = function (ev) { - var pos = ev.getDocumentPosition(); - var editor = this.editor; - this.setState("selectByLines"); - var range = editor.getSelectionRange(); - if (range.isMultiLine() && range.contains(pos.row, pos.column)) { - this.$clickSelection = editor.selection.getLineRange(range.start.row); - this.$clickSelection.end = editor.selection.getLineRange(range.end.row).end; - } - else { - this.$clickSelection = editor.selection.getLineRange(pos.row); - } - this.select(); - }; - DefaultHandlers.prototype.onQuadClick = function (ev) { - var editor = this.editor; - editor.selectAll(); - this.$clickSelection = editor.getSelectionRange(); - this.setState("selectAll"); - }; - DefaultHandlers.prototype.onMouseWheel = function (ev) { - if (ev.getAccelKey()) - return; - if (ev.getShiftKey() && ev.wheelY && !ev.wheelX) { - ev.wheelX = ev.wheelY; - ev.wheelY = 0; - } - var editor = this.editor; - if (!this.$lastScroll) - this.$lastScroll = { t: 0, vx: 0, vy: 0, allowed: 0 }; - var prevScroll = this.$lastScroll; - var t = ev.domEvent.timeStamp; - var dt = t - prevScroll.t; - var vx = dt ? ev.wheelX / dt : prevScroll.vx; - var vy = dt ? ev.wheelY / dt : prevScroll.vy; - if (dt < SCROLL_COOLDOWN_T) { - vx = (vx + prevScroll.vx) / 2; - vy = (vy + prevScroll.vy) / 2; - } - var direction = Math.abs(vx / vy); - var canScroll = false; - if (direction >= 1 && editor.renderer.isScrollableBy(ev.wheelX * ev.speed, 0)) - canScroll = true; - if (direction <= 1 && editor.renderer.isScrollableBy(0, ev.wheelY * ev.speed)) - canScroll = true; - if (canScroll) { - prevScroll.allowed = t; - } - else if (t - prevScroll.allowed < SCROLL_COOLDOWN_T) { - var isSlower = Math.abs(vx) <= 1.5 * Math.abs(prevScroll.vx) - && Math.abs(vy) <= 1.5 * Math.abs(prevScroll.vy); - if (isSlower) { - canScroll = true; - prevScroll.allowed = t; - } - else { - prevScroll.allowed = 0; - } - } - prevScroll.t = t; - prevScroll.vx = vx; - prevScroll.vy = vy; - if (canScroll) { - editor.renderer.scrollBy(ev.wheelX * ev.speed, ev.wheelY * ev.speed); - return ev.stop(); - } - }; - return DefaultHandlers; -}()); -DefaultHandlers.prototype.selectEnd = DefaultHandlers.prototype.selectByLinesEnd; -DefaultHandlers.prototype.selectAllEnd = DefaultHandlers.prototype.selectByLinesEnd; -DefaultHandlers.prototype.selectByWordsEnd = DefaultHandlers.prototype.selectByLinesEnd; -exports.DefaultHandlers = DefaultHandlers; -function calcDistance(ax, ay, bx, by) { - return Math.sqrt(Math.pow(bx - ax, 2) + Math.pow(by - ay, 2)); -} -function calcRangeOrientation(range, cursor) { - if (range.start.row == range.end.row) - var cmp = 2 * cursor.column - range.start.column - range.end.column; - else if (range.start.row == range.end.row - 1 && !range.start.column && !range.end.column) - var cmp = cursor.column - 4; - else - var cmp = 2 * cursor.row - range.start.row - range.end.row; - if (cmp < 0) - return { cursor: range.start, anchor: range.end }; - else - return { cursor: range.end, anchor: range.start }; -} - -}); - -ace.define("ace/tooltip",["require","exports","module","ace/lib/dom","ace/lib/event","ace/range"], function(require, exports, module){"use strict"; -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - if (typeof b !== "function" && b !== null) - throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var __values = (this && this.__values) || function(o) { - var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0; - if (m) return m.call(o); - if (o && typeof o.length === "number") return { - next: function () { - if (o && i >= o.length) o = void 0; - return { value: o && o[i++], done: !o }; - } - }; - throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined."); -}; -var dom = require("./lib/dom"); -var event = require("./lib/event"); -var Range = require("./range").Range; -var CLASSNAME = "ace_tooltip"; -var Tooltip = /** @class */ (function () { - function Tooltip(parentNode) { - this.isOpen = false; - this.$element = null; - this.$parentNode = parentNode; - } - Tooltip.prototype.$init = function () { - this.$element = dom.createElement("div"); - this.$element.className = CLASSNAME; - this.$element.style.display = "none"; - this.$parentNode.appendChild(this.$element); - return this.$element; - }; - Tooltip.prototype.getElement = function () { - return this.$element || this.$init(); - }; - Tooltip.prototype.setText = function (text) { - this.getElement().textContent = text; - }; - Tooltip.prototype.setHtml = function (html) { - this.getElement().innerHTML = html; - }; - Tooltip.prototype.setPosition = function (x, y) { - this.getElement().style.left = x + "px"; - this.getElement().style.top = y + "px"; - }; - Tooltip.prototype.setClassName = function (className) { - dom.addCssClass(this.getElement(), className); - }; - Tooltip.prototype.setTheme = function (theme) { - this.$element.className = CLASSNAME + " " + - (theme.isDark ? "ace_dark " : "") + (theme.cssClass || ""); - }; - Tooltip.prototype.show = function (text, x, y) { - if (text != null) - this.setText(text); - if (x != null && y != null) - this.setPosition(x, y); - if (!this.isOpen) { - this.getElement().style.display = "block"; - this.isOpen = true; - } - }; - Tooltip.prototype.hide = function () { - if (this.isOpen) { - this.getElement().style.display = "none"; - this.getElement().className = CLASSNAME; - this.isOpen = false; - } - }; - Tooltip.prototype.getHeight = function () { - return this.getElement().offsetHeight; - }; - Tooltip.prototype.getWidth = function () { - return this.getElement().offsetWidth; - }; - Tooltip.prototype.destroy = function () { - this.isOpen = false; - if (this.$element && this.$element.parentNode) { - this.$element.parentNode.removeChild(this.$element); - } - }; - return Tooltip; -}()); -var PopupManager = /** @class */ (function () { - function PopupManager() { - this.popups = []; - } - PopupManager.prototype.addPopup = function (popup) { - this.popups.push(popup); - this.updatePopups(); - }; - PopupManager.prototype.removePopup = function (popup) { - var index = this.popups.indexOf(popup); - if (index !== -1) { - this.popups.splice(index, 1); - this.updatePopups(); - } - }; - PopupManager.prototype.updatePopups = function () { - var e_1, _a, e_2, _b; - this.popups.sort(function (a, b) { return b.priority - a.priority; }); - var visiblepopups = []; - try { - for (var _c = __values(this.popups), _d = _c.next(); !_d.done; _d = _c.next()) { - var popup = _d.value; - var shouldDisplay = true; - try { - for (var visiblepopups_1 = (e_2 = void 0, __values(visiblepopups)), visiblepopups_1_1 = visiblepopups_1.next(); !visiblepopups_1_1.done; visiblepopups_1_1 = visiblepopups_1.next()) { - var visiblePopup = visiblepopups_1_1.value; - if (this.doPopupsOverlap(visiblePopup, popup)) { - shouldDisplay = false; - break; - } - } - } - catch (e_2_1) { e_2 = { error: e_2_1 }; } - finally { - try { - if (visiblepopups_1_1 && !visiblepopups_1_1.done && (_b = visiblepopups_1.return)) _b.call(visiblepopups_1); - } - finally { if (e_2) throw e_2.error; } - } - if (shouldDisplay) { - visiblepopups.push(popup); - } - else { - popup.hide(); - } - } - } - catch (e_1_1) { e_1 = { error: e_1_1 }; } - finally { - try { - if (_d && !_d.done && (_a = _c.return)) _a.call(_c); - } - finally { if (e_1) throw e_1.error; } - } - }; - PopupManager.prototype.doPopupsOverlap = function (popupA, popupB) { - var rectA = popupA.getElement().getBoundingClientRect(); - var rectB = popupB.getElement().getBoundingClientRect(); - return (rectA.left < rectB.right && rectA.right > rectB.left && rectA.top < rectB.bottom && rectA.bottom - > rectB.top); - }; - return PopupManager; -}()); -var popupManager = new PopupManager(); -exports.popupManager = popupManager; -exports.Tooltip = Tooltip; -var HoverTooltip = /** @class */ (function (_super) { - __extends(HoverTooltip, _super); - function HoverTooltip(parentNode) { - if (parentNode === void 0) { parentNode = document.body; } - var _this = _super.call(this, parentNode) || this; - _this.timeout = undefined; - _this.lastT = 0; - _this.idleTime = 350; - _this.lastEvent = undefined; - _this.onMouseOut = _this.onMouseOut.bind(_this); - _this.onMouseMove = _this.onMouseMove.bind(_this); - _this.waitForHover = _this.waitForHover.bind(_this); - _this.hide = _this.hide.bind(_this); - var el = _this.getElement(); - el.style.whiteSpace = "pre-wrap"; - el.style.pointerEvents = "auto"; - el.addEventListener("mouseout", _this.onMouseOut); - el.tabIndex = -1; - el.addEventListener("blur", function () { - if (!el.contains(document.activeElement)) - this.hide(); - }.bind(_this)); - el.addEventListener("wheel", event.stopPropagation); - return _this; - } - HoverTooltip.prototype.addToEditor = function (editor) { - editor.on("mousemove", this.onMouseMove); - editor.on("mousedown", this.hide); - editor.renderer.getMouseEventTarget().addEventListener("mouseout", this.onMouseOut, true); - }; - HoverTooltip.prototype.removeFromEditor = function (editor) { - editor.off("mousemove", this.onMouseMove); - editor.off("mousedown", this.hide); - editor.renderer.getMouseEventTarget().removeEventListener("mouseout", this.onMouseOut, true); - if (this.timeout) { - clearTimeout(this.timeout); - this.timeout = null; - } - }; - HoverTooltip.prototype.onMouseMove = function (e, editor) { - this.lastEvent = e; - this.lastT = Date.now(); - var isMousePressed = editor.$mouseHandler.isMousePressed; - if (this.isOpen) { - var pos = this.lastEvent && this.lastEvent.getDocumentPosition(); - if (!this.range - || !this.range.contains(pos.row, pos.column) - || isMousePressed - || this.isOutsideOfText(this.lastEvent)) { - this.hide(); - } - } - if (this.timeout || isMousePressed) - return; - this.lastEvent = e; - this.timeout = setTimeout(this.waitForHover, this.idleTime); - }; - HoverTooltip.prototype.waitForHover = function () { - if (this.timeout) - clearTimeout(this.timeout); - var dt = Date.now() - this.lastT; - if (this.idleTime - dt > 10) { - this.timeout = setTimeout(this.waitForHover, this.idleTime - dt); - return; - } - this.timeout = null; - if (this.lastEvent && !this.isOutsideOfText(this.lastEvent)) { - this.$gatherData(this.lastEvent, this.lastEvent.editor); - } - }; - HoverTooltip.prototype.isOutsideOfText = function (e) { - var editor = e.editor; - var docPos = e.getDocumentPosition(); - var line = editor.session.getLine(docPos.row); - if (docPos.column == line.length) { - var screenPos = editor.renderer.pixelToScreenCoordinates(e.clientX, e.clientY); - var clippedPos = editor.session.documentToScreenPosition(docPos.row, docPos.column); - if (clippedPos.column != screenPos.column - || clippedPos.row != screenPos.row) { - return true; - } - } - return false; - }; - HoverTooltip.prototype.setDataProvider = function (value) { - this.$gatherData = value; - }; - HoverTooltip.prototype.showForRange = function (editor, range, domNode, startingEvent) { - var MARGIN = 10; - if (startingEvent && startingEvent != this.lastEvent) - return; - if (this.isOpen && document.activeElement == this.getElement()) - return; - var renderer = editor.renderer; - if (!this.isOpen) { - popupManager.addPopup(this); - this.$registerCloseEvents(); - this.setTheme(renderer.theme); - } - this.isOpen = true; - this.addMarker(range, editor.session); - this.range = Range.fromPoints(range.start, range.end); - var position = renderer.textToScreenCoordinates(range.start.row, range.start.column); - var rect = renderer.scroller.getBoundingClientRect(); - if (position.pageX < rect.left) - position.pageX = rect.left; - var element = this.getElement(); - element.innerHTML = ""; - element.appendChild(domNode); - element.style.maxHeight = ""; - element.style.display = "block"; - var labelHeight = element.clientHeight; - var labelWidth = element.clientWidth; - var spaceBelow = window.innerHeight - position.pageY - renderer.lineHeight; - var isAbove = true; - if (position.pageY - labelHeight < 0 && position.pageY < spaceBelow) { - isAbove = false; - } - element.style.maxHeight = (isAbove ? position.pageY : spaceBelow) - MARGIN + "px"; - element.style.top = isAbove ? "" : position.pageY + renderer.lineHeight + "px"; - element.style.bottom = isAbove ? window.innerHeight - position.pageY + "px" : ""; - element.style.left = Math.min(position.pageX, window.innerWidth - labelWidth - MARGIN) + "px"; - }; - HoverTooltip.prototype.addMarker = function (range, session) { - if (this.marker) { - this.$markerSession.removeMarker(this.marker); - } - this.$markerSession = session; - this.marker = session && session.addMarker(range, "ace_highlight-marker", "text"); - }; - HoverTooltip.prototype.hide = function (e) { - if (!e && document.activeElement == this.getElement()) - return; - if (e && e.target && (e.type != "keydown" || e.ctrlKey || e.metaKey) && this.$element.contains(e.target)) - return; - this.lastEvent = null; - if (this.timeout) - clearTimeout(this.timeout); - this.timeout = null; - this.addMarker(null); - if (this.isOpen) { - this.$removeCloseEvents(); - this.getElement().style.display = "none"; - this.isOpen = false; - popupManager.removePopup(this); - } - }; - HoverTooltip.prototype.$registerCloseEvents = function () { - window.addEventListener("keydown", this.hide, true); - window.addEventListener("wheel", this.hide, true); - window.addEventListener("mousedown", this.hide, true); - }; - HoverTooltip.prototype.$removeCloseEvents = function () { - window.removeEventListener("keydown", this.hide, true); - window.removeEventListener("wheel", this.hide, true); - window.removeEventListener("mousedown", this.hide, true); - }; - HoverTooltip.prototype.onMouseOut = function (e) { - if (this.timeout) { - clearTimeout(this.timeout); - this.timeout = null; - } - this.lastEvent = null; - if (!this.isOpen) - return; - if (!e.relatedTarget || this.getElement().contains(e.relatedTarget)) - return; - if (e && e.currentTarget.contains(e.relatedTarget)) - return; - if (!e.relatedTarget.classList.contains("ace_content")) - this.hide(); - }; - return HoverTooltip; -}(Tooltip)); -exports.HoverTooltip = HoverTooltip; - -}); - -ace.define("ace/mouse/default_gutter_handler",["require","exports","module","ace/lib/dom","ace/lib/event","ace/tooltip","ace/config"], function(require, exports, module){"use strict"; -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - if (typeof b !== "function" && b !== null) - throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var __values = (this && this.__values) || function(o) { - var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0; - if (m) return m.call(o); - if (o && typeof o.length === "number") return { - next: function () { - if (o && i >= o.length) o = void 0; - return { value: o && o[i++], done: !o }; - } - }; - throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined."); -}; -var dom = require("../lib/dom"); -var event = require("../lib/event"); -var Tooltip = require("../tooltip").Tooltip; -var nls = require("../config").nls; -function GutterHandler(mouseHandler) { - var editor = mouseHandler.editor; - var gutter = editor.renderer.$gutterLayer; - var tooltip = new GutterTooltip(editor); - mouseHandler.editor.setDefaultHandler("guttermousedown", function (e) { - if (!editor.isFocused() || e.getButton() != 0) - return; - var gutterRegion = gutter.getRegion(e); - if (gutterRegion == "foldWidgets") - return; - var row = e.getDocumentPosition().row; - var selection = editor.session.selection; - if (e.getShiftKey()) - selection.selectTo(row, 0); - else { - if (e.domEvent.detail == 2) { - editor.selectAll(); - return e.preventDefault(); - } - mouseHandler.$clickSelection = editor.selection.getLineRange(row); - } - mouseHandler.setState("selectByLines"); - mouseHandler.captureMouse(e); - return e.preventDefault(); - }); - var tooltipTimeout, mouseEvent; - function showTooltip() { - var row = mouseEvent.getDocumentPosition().row; - var maxRow = editor.session.getLength(); - if (row == maxRow) { - var screenRow = editor.renderer.pixelToScreenCoordinates(0, mouseEvent.y).row; - var pos = mouseEvent.$pos; - if (screenRow > editor.session.documentToScreenRow(pos.row, pos.column)) - return hideTooltip(); - } - tooltip.showTooltip(row); - if (!tooltip.isOpen) - return; - editor.on("mousewheel", hideTooltip); - if (mouseHandler.$tooltipFollowsMouse) { - moveTooltip(mouseEvent); - } - else { - var gutterRow = mouseEvent.getGutterRow(); - var gutterCell = gutter.$lines.get(gutterRow); - if (gutterCell) { - var gutterElement = gutterCell.element.querySelector(".ace_gutter_annotation"); - var rect = gutterElement.getBoundingClientRect(); - var style = tooltip.getElement().style; - style.left = rect.right + "px"; - style.top = rect.bottom + "px"; - } - else { - moveTooltip(mouseEvent); - } - } - } - function hideTooltip() { - if (tooltipTimeout) - tooltipTimeout = clearTimeout(tooltipTimeout); - if (tooltip.isOpen) { - tooltip.hideTooltip(); - editor.off("mousewheel", hideTooltip); - } - } - function moveTooltip(e) { - tooltip.setPosition(e.x, e.y); - } - mouseHandler.editor.setDefaultHandler("guttermousemove", function (e) { - var target = e.domEvent.target || e.domEvent.srcElement; - if (dom.hasCssClass(target, "ace_fold-widget")) - return hideTooltip(); - if (tooltip.isOpen && mouseHandler.$tooltipFollowsMouse) - moveTooltip(e); - mouseEvent = e; - if (tooltipTimeout) - return; - tooltipTimeout = setTimeout(function () { - tooltipTimeout = null; - if (mouseEvent && !mouseHandler.isMousePressed) - showTooltip(); - else - hideTooltip(); - }, 50); - }); - event.addListener(editor.renderer.$gutter, "mouseout", function (e) { - mouseEvent = null; - if (!tooltip.isOpen || tooltipTimeout) - return; - tooltipTimeout = setTimeout(function () { - tooltipTimeout = null; - hideTooltip(); - }, 50); - }, editor); - editor.on("changeSession", hideTooltip); - editor.on("input", hideTooltip); -} -exports.GutterHandler = GutterHandler; -var GutterTooltip = /** @class */ (function (_super) { - __extends(GutterTooltip, _super); - function GutterTooltip(editor) { - var _this = _super.call(this, editor.container) || this; - _this.editor = editor; - return _this; - } - GutterTooltip.prototype.setPosition = function (x, y) { - var windowWidth = window.innerWidth || document.documentElement.clientWidth; - var windowHeight = window.innerHeight || document.documentElement.clientHeight; - var width = this.getWidth(); - var height = this.getHeight(); - x += 15; - y += 15; - if (x + width > windowWidth) { - x -= (x + width) - windowWidth; - } - if (y + height > windowHeight) { - y -= 20 + height; - } - Tooltip.prototype.setPosition.call(this, x, y); - }; - Object.defineProperty(GutterTooltip, "annotationLabels", { - get: function () { - return { - error: { singular: nls("error"), plural: nls("errors") }, - warning: { singular: nls("warning"), plural: nls("warnings") }, - info: { singular: nls("information message"), plural: nls("information messages") } - }; - }, - enumerable: false, - configurable: true - }); - GutterTooltip.prototype.showTooltip = function (row) { - var gutter = this.editor.renderer.$gutterLayer; - var annotationsInRow = gutter.$annotations[row]; - var annotation; - if (annotationsInRow) - annotation = { text: Array.from(annotationsInRow.text), type: Array.from(annotationsInRow.type) }; - else - annotation = { text: [], type: [] }; - var fold = gutter.session.getFoldLine(row); - if (fold && gutter.$showFoldedAnnotations) { - var annotationsInFold = { error: [], warning: [], info: [] }; - var mostSevereAnnotationInFoldType; - for (var i = row + 1; i <= fold.end.row; i++) { - if (!gutter.$annotations[i]) - continue; - for (var j = 0; j < gutter.$annotations[i].text.length; j++) { - var annotationType = gutter.$annotations[i].type[j]; - annotationsInFold[annotationType].push(gutter.$annotations[i].text[j]); - if (annotationType === "error") { - mostSevereAnnotationInFoldType = "error_fold"; - continue; - } - if (annotationType === "warning") { - mostSevereAnnotationInFoldType = "warning_fold"; - continue; - } - } - } - if (mostSevereAnnotationInFoldType === "error_fold" || mostSevereAnnotationInFoldType === "warning_fold") { - var summaryFoldedAnnotations = "".concat(GutterTooltip.annotationsToSummaryString(annotationsInFold), " in folded code."); - annotation.text.push(summaryFoldedAnnotations); - annotation.type.push(mostSevereAnnotationInFoldType); - } - } - if (annotation.text.length === 0) - return this.hide(); - var annotationMessages = { error: [], warning: [], info: [] }; - var iconClassName = gutter.$useSvgGutterIcons ? "ace_icon_svg" : "ace_icon"; - for (var i = 0; i < annotation.text.length; i++) { - var line = " ").concat(annotation.text[i]); - annotationMessages[annotation.type[i].replace("_fold", "")].push(line); - } - var tooltipContent = [].concat(annotationMessages.error, annotationMessages.warning, annotationMessages.info).join("
    "); - this.setHtml(tooltipContent); - this.$element.setAttribute("aria-live", "polite"); - if (!this.isOpen) { - this.setTheme(this.editor.renderer.theme); - this.setClassName("ace_gutter-tooltip"); - } - this.show(); - this.editor._signal("showGutterTooltip", this); - }; - GutterTooltip.prototype.hideTooltip = function () { - this.$element.removeAttribute("aria-live"); - this.hide(); - this.editor._signal("hideGutterTooltip", this); - }; - GutterTooltip.annotationsToSummaryString = function (annotations) { - var e_1, _a; - var summary = []; - var annotationTypes = ['error', 'warning', 'info']; - try { - for (var annotationTypes_1 = __values(annotationTypes), annotationTypes_1_1 = annotationTypes_1.next(); !annotationTypes_1_1.done; annotationTypes_1_1 = annotationTypes_1.next()) { - var annotationType = annotationTypes_1_1.value; - if (!annotations[annotationType].length) - continue; - var label = annotations[annotationType].length === 1 ? GutterTooltip.annotationLabels[annotationType].singular : GutterTooltip.annotationLabels[annotationType].plural; - summary.push("".concat(annotations[annotationType].length, " ").concat(label)); - } - } - catch (e_1_1) { e_1 = { error: e_1_1 }; } - finally { - try { - if (annotationTypes_1_1 && !annotationTypes_1_1.done && (_a = annotationTypes_1.return)) _a.call(annotationTypes_1); - } - finally { if (e_1) throw e_1.error; } - } - return summary.join(", "); - }; - return GutterTooltip; -}(Tooltip)); -exports.GutterTooltip = GutterTooltip; - -}); - -ace.define("ace/mouse/mouse_event",["require","exports","module","ace/lib/event","ace/lib/useragent"], function(require, exports, module){"use strict"; -var event = require("../lib/event"); -var useragent = require("../lib/useragent"); -var MouseEvent = /** @class */ (function () { - function MouseEvent(domEvent, editor) { - this.domEvent = domEvent; - this.editor = editor; - this.x = this.clientX = domEvent.clientX; - this.y = this.clientY = domEvent.clientY; - this.$pos = null; - this.$inSelection = null; - this.propagationStopped = false; - this.defaultPrevented = false; - } - MouseEvent.prototype.stopPropagation = function () { - event.stopPropagation(this.domEvent); - this.propagationStopped = true; - }; - MouseEvent.prototype.preventDefault = function () { - event.preventDefault(this.domEvent); - this.defaultPrevented = true; - }; - MouseEvent.prototype.stop = function () { - this.stopPropagation(); - this.preventDefault(); - }; - MouseEvent.prototype.getDocumentPosition = function () { - if (this.$pos) - return this.$pos; - this.$pos = this.editor.renderer.screenToTextCoordinates(this.clientX, this.clientY); - return this.$pos; - }; - MouseEvent.prototype.getGutterRow = function () { - var documentRow = this.getDocumentPosition().row; - var screenRow = this.editor.session.documentToScreenRow(documentRow, 0); - var screenTopRow = this.editor.session.documentToScreenRow(this.editor.renderer.$gutterLayer.$lines.get(0).row, 0); - return screenRow - screenTopRow; - }; - MouseEvent.prototype.inSelection = function () { - if (this.$inSelection !== null) - return this.$inSelection; - var editor = this.editor; - var selectionRange = editor.getSelectionRange(); - if (selectionRange.isEmpty()) - this.$inSelection = false; - else { - var pos = this.getDocumentPosition(); - this.$inSelection = selectionRange.contains(pos.row, pos.column); - } - return this.$inSelection; - }; - MouseEvent.prototype.getButton = function () { - return event.getButton(this.domEvent); - }; - MouseEvent.prototype.getShiftKey = function () { - return this.domEvent.shiftKey; - }; - MouseEvent.prototype.getAccelKey = function () { - return useragent.isMac ? this.domEvent.metaKey : this.domEvent.ctrlKey; - }; - return MouseEvent; -}()); -exports.MouseEvent = MouseEvent; - -}); - -ace.define("ace/mouse/dragdrop_handler",["require","exports","module","ace/lib/dom","ace/lib/event","ace/lib/useragent"], function(require, exports, module){"use strict"; -var dom = require("../lib/dom"); -var event = require("../lib/event"); -var useragent = require("../lib/useragent"); -var AUTOSCROLL_DELAY = 200; -var SCROLL_CURSOR_DELAY = 200; -var SCROLL_CURSOR_HYSTERESIS = 5; -function DragdropHandler(mouseHandler) { - var editor = mouseHandler.editor; - var dragImage = dom.createElement("div"); - dragImage.style.cssText = "top:-100px;position:absolute;z-index:2147483647;opacity:0.5"; - dragImage.textContent = "\xa0"; - var exports = ["dragWait", "dragWaitEnd", "startDrag", "dragReadyEnd", "onMouseDrag"]; - exports.forEach(function (x) { - mouseHandler[x] = this[x]; - }, this); - editor.on("mousedown", this.onMouseDown.bind(mouseHandler)); - var mouseTarget = editor.container; - var dragSelectionMarker, x, y; - var timerId, range; - var dragCursor, counter = 0; - var dragOperation; - var isInternal; - var autoScrollStartTime; - var cursorMovedTime; - var cursorPointOnCaretMoved; - this.onDragStart = function (e) { - if (this.cancelDrag || !mouseTarget.draggable) { - var self = this; - setTimeout(function () { - self.startSelect(); - self.captureMouse(e); - }, 0); - return e.preventDefault(); - } - range = editor.getSelectionRange(); - var dataTransfer = e.dataTransfer; - dataTransfer.effectAllowed = editor.getReadOnly() ? "copy" : "copyMove"; - editor.container.appendChild(dragImage); - dataTransfer.setDragImage && dataTransfer.setDragImage(dragImage, 0, 0); - setTimeout(function () { - editor.container.removeChild(dragImage); - }); - dataTransfer.clearData(); - dataTransfer.setData("Text", editor.session.getTextRange()); - isInternal = true; - this.setState("drag"); - }; - this.onDragEnd = function (e) { - mouseTarget.draggable = false; - isInternal = false; - this.setState(null); - if (!editor.getReadOnly()) { - var dropEffect = e.dataTransfer.dropEffect; - if (!dragOperation && dropEffect == "move") - editor.session.remove(editor.getSelectionRange()); - editor.$resetCursorStyle(); - } - this.editor.unsetStyle("ace_dragging"); - this.editor.renderer.setCursorStyle(""); - }; - this.onDragEnter = function (e) { - if (editor.getReadOnly() || !canAccept(e.dataTransfer)) - return; - x = e.clientX; - y = e.clientY; - if (!dragSelectionMarker) - addDragMarker(); - counter++; - e.dataTransfer.dropEffect = dragOperation = getDropEffect(e); - return event.preventDefault(e); - }; - this.onDragOver = function (e) { - if (editor.getReadOnly() || !canAccept(e.dataTransfer)) - return; - x = e.clientX; - y = e.clientY; - if (!dragSelectionMarker) { - addDragMarker(); - counter++; - } - if (onMouseMoveTimer !== null) - onMouseMoveTimer = null; - e.dataTransfer.dropEffect = dragOperation = getDropEffect(e); - return event.preventDefault(e); - }; - this.onDragLeave = function (e) { - counter--; - if (counter <= 0 && dragSelectionMarker) { - clearDragMarker(); - dragOperation = null; - return event.preventDefault(e); - } - }; - this.onDrop = function (e) { - if (!dragCursor) - return; - var dataTransfer = e.dataTransfer; - if (isInternal) { - switch (dragOperation) { - case "move": - if (range.contains(dragCursor.row, dragCursor.column)) { - range = { - start: dragCursor, - end: dragCursor - }; - } - else { - range = editor.moveText(range, dragCursor); - } - break; - case "copy": - range = editor.moveText(range, dragCursor, true); - break; - } - } - else { - var dropData = dataTransfer.getData('Text'); - range = { - start: dragCursor, - end: editor.session.insert(dragCursor, dropData) - }; - editor.focus(); - dragOperation = null; - } - clearDragMarker(); - return event.preventDefault(e); - }; - event.addListener(mouseTarget, "dragstart", this.onDragStart.bind(mouseHandler), editor); - event.addListener(mouseTarget, "dragend", this.onDragEnd.bind(mouseHandler), editor); - event.addListener(mouseTarget, "dragenter", this.onDragEnter.bind(mouseHandler), editor); - event.addListener(mouseTarget, "dragover", this.onDragOver.bind(mouseHandler), editor); - event.addListener(mouseTarget, "dragleave", this.onDragLeave.bind(mouseHandler), editor); - event.addListener(mouseTarget, "drop", this.onDrop.bind(mouseHandler), editor); - function scrollCursorIntoView(cursor, prevCursor) { - var now = Date.now(); - var vMovement = !prevCursor || cursor.row != prevCursor.row; - var hMovement = !prevCursor || cursor.column != prevCursor.column; - if (!cursorMovedTime || vMovement || hMovement) { - editor.moveCursorToPosition(cursor); - cursorMovedTime = now; - cursorPointOnCaretMoved = { x: x, y: y }; - } - else { - var distance = calcDistance(cursorPointOnCaretMoved.x, cursorPointOnCaretMoved.y, x, y); - if (distance > SCROLL_CURSOR_HYSTERESIS) { - cursorMovedTime = null; - } - else if (now - cursorMovedTime >= SCROLL_CURSOR_DELAY) { - editor.renderer.scrollCursorIntoView(); - cursorMovedTime = null; - } - } - } - function autoScroll(cursor, prevCursor) { - var now = Date.now(); - var lineHeight = editor.renderer.layerConfig.lineHeight; - var characterWidth = editor.renderer.layerConfig.characterWidth; - var editorRect = editor.renderer.scroller.getBoundingClientRect(); - var offsets = { - x: { - left: x - editorRect.left, - right: editorRect.right - x - }, - y: { - top: y - editorRect.top, - bottom: editorRect.bottom - y - } - }; - var nearestXOffset = Math.min(offsets.x.left, offsets.x.right); - var nearestYOffset = Math.min(offsets.y.top, offsets.y.bottom); - var scrollCursor = { row: cursor.row, column: cursor.column }; - if (nearestXOffset / characterWidth <= 2) { - scrollCursor.column += (offsets.x.left < offsets.x.right ? -3 : +2); - } - if (nearestYOffset / lineHeight <= 1) { - scrollCursor.row += (offsets.y.top < offsets.y.bottom ? -1 : +1); - } - var vScroll = cursor.row != scrollCursor.row; - var hScroll = cursor.column != scrollCursor.column; - var vMovement = !prevCursor || cursor.row != prevCursor.row; - if (vScroll || (hScroll && !vMovement)) { - if (!autoScrollStartTime) - autoScrollStartTime = now; - else if (now - autoScrollStartTime >= AUTOSCROLL_DELAY) - editor.renderer.scrollCursorIntoView(scrollCursor); - } - else { - autoScrollStartTime = null; - } - } - function onDragInterval() { - var prevCursor = dragCursor; - dragCursor = editor.renderer.screenToTextCoordinates(x, y); - scrollCursorIntoView(dragCursor, prevCursor); - autoScroll(dragCursor, prevCursor); - } - function addDragMarker() { - range = editor.selection.toOrientedRange(); - dragSelectionMarker = editor.session.addMarker(range, "ace_selection", editor.getSelectionStyle()); - editor.clearSelection(); - if (editor.isFocused()) - editor.renderer.$cursorLayer.setBlinking(false); - clearInterval(timerId); - onDragInterval(); - timerId = setInterval(onDragInterval, 20); - counter = 0; - event.addListener(document, "mousemove", onMouseMove); - } - function clearDragMarker() { - clearInterval(timerId); - editor.session.removeMarker(dragSelectionMarker); - dragSelectionMarker = null; - editor.selection.fromOrientedRange(range); - if (editor.isFocused() && !isInternal) - editor.$resetCursorStyle(); - range = null; - dragCursor = null; - counter = 0; - autoScrollStartTime = null; - cursorMovedTime = null; - event.removeListener(document, "mousemove", onMouseMove); - } - var onMouseMoveTimer = null; - function onMouseMove() { - if (onMouseMoveTimer == null) { - onMouseMoveTimer = setTimeout(function () { - if (onMouseMoveTimer != null && dragSelectionMarker) - clearDragMarker(); - }, 20); - } - } - function canAccept(dataTransfer) { - var types = dataTransfer.types; - return !types || Array.prototype.some.call(types, function (type) { - return type == 'text/plain' || type == 'Text'; - }); - } - function getDropEffect(e) { - var copyAllowed = ['copy', 'copymove', 'all', 'uninitialized']; - var moveAllowed = ['move', 'copymove', 'linkmove', 'all', 'uninitialized']; - var copyModifierState = useragent.isMac ? e.altKey : e.ctrlKey; - var effectAllowed = "uninitialized"; - try { - effectAllowed = e.dataTransfer.effectAllowed.toLowerCase(); - } - catch (e) { } - var dropEffect = "none"; - if (copyModifierState && copyAllowed.indexOf(effectAllowed) >= 0) - dropEffect = "copy"; - else if (moveAllowed.indexOf(effectAllowed) >= 0) - dropEffect = "move"; - else if (copyAllowed.indexOf(effectAllowed) >= 0) - dropEffect = "copy"; - return dropEffect; - } -} -(function () { - this.dragWait = function () { - var interval = Date.now() - this.mousedownEvent.time; - if (interval > this.editor.getDragDelay()) - this.startDrag(); - }; - this.dragWaitEnd = function () { - var target = this.editor.container; - target.draggable = false; - this.startSelect(this.mousedownEvent.getDocumentPosition()); - this.selectEnd(); - }; - this.dragReadyEnd = function (e) { - this.editor.$resetCursorStyle(); - this.editor.unsetStyle("ace_dragging"); - this.editor.renderer.setCursorStyle(""); - this.dragWaitEnd(); - }; - this.startDrag = function () { - this.cancelDrag = false; - var editor = this.editor; - var target = editor.container; - target.draggable = true; - editor.renderer.$cursorLayer.setBlinking(false); - editor.setStyle("ace_dragging"); - var cursorStyle = useragent.isWin ? "default" : "move"; - editor.renderer.setCursorStyle(cursorStyle); - this.setState("dragReady"); - }; - this.onMouseDrag = function (e) { - var target = this.editor.container; - if (useragent.isIE && this.state == "dragReady") { - var distance = calcDistance(this.mousedownEvent.x, this.mousedownEvent.y, this.x, this.y); - if (distance > 3) - target.dragDrop(); - } - if (this.state === "dragWait") { - var distance = calcDistance(this.mousedownEvent.x, this.mousedownEvent.y, this.x, this.y); - if (distance > 0) { - target.draggable = false; - this.startSelect(this.mousedownEvent.getDocumentPosition()); - } - } - }; - this.onMouseDown = function (e) { - if (!this.$dragEnabled) - return; - this.mousedownEvent = e; - var editor = this.editor; - var inSelection = e.inSelection(); - var button = e.getButton(); - var clickCount = e.domEvent.detail || 1; - if (clickCount === 1 && button === 0 && inSelection) { - if (e.editor.inMultiSelectMode && (e.getAccelKey() || e.getShiftKey())) - return; - this.mousedownEvent.time = Date.now(); - var eventTarget = e.domEvent.target || e.domEvent.srcElement; - if ("unselectable" in eventTarget) - eventTarget.unselectable = "on"; - if (editor.getDragDelay()) { - if (useragent.isWebKit) { - this.cancelDrag = true; - var mouseTarget = editor.container; - mouseTarget.draggable = true; - } - this.setState("dragWait"); - } - else { - this.startDrag(); - } - this.captureMouse(e, this.onMouseDrag.bind(this)); - e.defaultPrevented = true; - } - }; -}).call(DragdropHandler.prototype); -function calcDistance(ax, ay, bx, by) { - return Math.sqrt(Math.pow(bx - ax, 2) + Math.pow(by - ay, 2)); -} -exports.DragdropHandler = DragdropHandler; - -}); - -ace.define("ace/mouse/touch_handler",["require","exports","module","ace/mouse/mouse_event","ace/lib/event","ace/lib/dom"], function(require, exports, module){"use strict"; -var MouseEvent = require("./mouse_event").MouseEvent; -var event = require("../lib/event"); -var dom = require("../lib/dom"); -exports.addTouchListeners = function (el, editor) { - var mode = "scroll"; - var startX; - var startY; - var touchStartT; - var lastT; - var longTouchTimer; - var animationTimer; - var animationSteps = 0; - var pos; - var clickCount = 0; - var vX = 0; - var vY = 0; - var pressed; - var contextMenu; - function createContextMenu() { - var clipboard = window.navigator && window.navigator.clipboard; - var isOpen = false; - var updateMenu = function () { - var selected = editor.getCopyText(); - var hasUndo = editor.session.getUndoManager().hasUndo(); - contextMenu.replaceChild(dom.buildDom(isOpen ? ["span", - !selected && ["span", { class: "ace_mobile-button", action: "selectall" }, "Select All"], - selected && ["span", { class: "ace_mobile-button", action: "copy" }, "Copy"], - selected && ["span", { class: "ace_mobile-button", action: "cut" }, "Cut"], - clipboard && ["span", { class: "ace_mobile-button", action: "paste" }, "Paste"], - hasUndo && ["span", { class: "ace_mobile-button", action: "undo" }, "Undo"], - ["span", { class: "ace_mobile-button", action: "find" }, "Find"], - ["span", { class: "ace_mobile-button", action: "openCommandPalette" }, "Palette"] - ] : ["span"]), contextMenu.firstChild); - }; - var handleClick = function (e) { - var action = e.target.getAttribute("action"); - if (action == "more" || !isOpen) { - isOpen = !isOpen; - return updateMenu(); - } - if (action == "paste") { - clipboard.readText().then(function (text) { - editor.execCommand(action, text); - }); - } - else if (action) { - if (action == "cut" || action == "copy") { - if (clipboard) - clipboard.writeText(editor.getCopyText()); - else - document.execCommand("copy"); - } - editor.execCommand(action); - } - contextMenu.firstChild.style.display = "none"; - isOpen = false; - if (action != "openCommandPalette") - editor.focus(); - }; - contextMenu = dom.buildDom(["div", - { - class: "ace_mobile-menu", - ontouchstart: function (e) { - mode = "menu"; - e.stopPropagation(); - e.preventDefault(); - editor.textInput.focus(); - }, - ontouchend: function (e) { - e.stopPropagation(); - e.preventDefault(); - handleClick(e); - }, - onclick: handleClick - }, - ["span"], - ["span", { class: "ace_mobile-button", action: "more" }, "..."] - ], editor.container); - } - function showContextMenu() { - if (!contextMenu) - createContextMenu(); - var cursor = editor.selection.cursor; - var pagePos = editor.renderer.textToScreenCoordinates(cursor.row, cursor.column); - var leftOffset = editor.renderer.textToScreenCoordinates(0, 0).pageX; - var scrollLeft = editor.renderer.scrollLeft; - var rect = editor.container.getBoundingClientRect(); - contextMenu.style.top = pagePos.pageY - rect.top - 3 + "px"; - if (pagePos.pageX - rect.left < rect.width - 70) { - contextMenu.style.left = ""; - contextMenu.style.right = "10px"; - } - else { - contextMenu.style.right = ""; - contextMenu.style.left = leftOffset + scrollLeft - rect.left + "px"; - } - contextMenu.style.display = ""; - contextMenu.firstChild.style.display = "none"; - editor.on("input", hideContextMenu); - } - function hideContextMenu(e) { - if (contextMenu) - contextMenu.style.display = "none"; - editor.off("input", hideContextMenu); - } - function handleLongTap() { - longTouchTimer = null; - clearTimeout(longTouchTimer); - var range = editor.selection.getRange(); - var inSelection = range.contains(pos.row, pos.column); - if (range.isEmpty() || !inSelection) { - editor.selection.moveToPosition(pos); - editor.selection.selectWord(); - } - mode = "wait"; - showContextMenu(); - } - function switchToSelectionMode() { - longTouchTimer = null; - clearTimeout(longTouchTimer); - editor.selection.moveToPosition(pos); - var range = clickCount >= 2 - ? editor.selection.getLineRange(pos.row) - : editor.session.getBracketRange(pos); - if (range && !range.isEmpty()) { - editor.selection.setRange(range); - } - else { - editor.selection.selectWord(); - } - mode = "wait"; - } - event.addListener(el, "contextmenu", function (e) { - if (!pressed) - return; - var textarea = editor.textInput.getElement(); - textarea.focus(); - }, editor); - event.addListener(el, "touchstart", function (e) { - var touches = e.touches; - if (longTouchTimer || touches.length > 1) { - clearTimeout(longTouchTimer); - longTouchTimer = null; - touchStartT = -1; - mode = "zoom"; - return; - } - pressed = editor.$mouseHandler.isMousePressed = true; - var h = editor.renderer.layerConfig.lineHeight; - var w = editor.renderer.layerConfig.lineHeight; - var t = e.timeStamp; - lastT = t; - var touchObj = touches[0]; - var x = touchObj.clientX; - var y = touchObj.clientY; - if (Math.abs(startX - x) + Math.abs(startY - y) > h) - touchStartT = -1; - startX = e.clientX = x; - startY = e.clientY = y; - vX = vY = 0; - var ev = new MouseEvent(e, editor); - pos = ev.getDocumentPosition(); - if (t - touchStartT < 500 && touches.length == 1 && !animationSteps) { - clickCount++; - e.preventDefault(); - e.button = 0; - switchToSelectionMode(); - } - else { - clickCount = 0; - var cursor = editor.selection.cursor; - var anchor = editor.selection.isEmpty() ? cursor : editor.selection.anchor; - var cursorPos = editor.renderer.$cursorLayer.getPixelPosition(cursor, true); - var anchorPos = editor.renderer.$cursorLayer.getPixelPosition(anchor, true); - var rect = editor.renderer.scroller.getBoundingClientRect(); - var offsetTop = editor.renderer.layerConfig.offset; - var offsetLeft = editor.renderer.scrollLeft; - var weightedDistance = function (x, y) { - x = x / w; - y = y / h - 0.75; - return x * x + y * y; - }; - if (e.clientX < rect.left) { - mode = "zoom"; - return; - } - var diff1 = weightedDistance(e.clientX - rect.left - cursorPos.left + offsetLeft, e.clientY - rect.top - cursorPos.top + offsetTop); - var diff2 = weightedDistance(e.clientX - rect.left - anchorPos.left + offsetLeft, e.clientY - rect.top - anchorPos.top + offsetTop); - if (diff1 < 3.5 && diff2 < 3.5) - mode = diff1 > diff2 ? "cursor" : "anchor"; - if (diff2 < 3.5) - mode = "anchor"; - else if (diff1 < 3.5) - mode = "cursor"; - else - mode = "scroll"; - longTouchTimer = setTimeout(handleLongTap, 450); - } - touchStartT = t; - }, editor); - event.addListener(el, "touchend", function (e) { - pressed = editor.$mouseHandler.isMousePressed = false; - if (animationTimer) - clearInterval(animationTimer); - if (mode == "zoom") { - mode = ""; - animationSteps = 0; - } - else if (longTouchTimer) { - editor.selection.moveToPosition(pos); - animationSteps = 0; - showContextMenu(); - } - else if (mode == "scroll") { - animate(); - hideContextMenu(); - } - else { - showContextMenu(); - } - clearTimeout(longTouchTimer); - longTouchTimer = null; - }, editor); - event.addListener(el, "touchmove", function (e) { - if (longTouchTimer) { - clearTimeout(longTouchTimer); - longTouchTimer = null; - } - var touches = e.touches; - if (touches.length > 1 || mode == "zoom") - return; - var touchObj = touches[0]; - var wheelX = startX - touchObj.clientX; - var wheelY = startY - touchObj.clientY; - if (mode == "wait") { - if (wheelX * wheelX + wheelY * wheelY > 4) - mode = "cursor"; - else - return e.preventDefault(); - } - startX = touchObj.clientX; - startY = touchObj.clientY; - e.clientX = touchObj.clientX; - e.clientY = touchObj.clientY; - var t = e.timeStamp; - var dt = t - lastT; - lastT = t; - if (mode == "scroll") { - var mouseEvent = new MouseEvent(e, editor); - mouseEvent.speed = 1; - mouseEvent.wheelX = wheelX; - mouseEvent.wheelY = wheelY; - if (10 * Math.abs(wheelX) < Math.abs(wheelY)) - wheelX = 0; - if (10 * Math.abs(wheelY) < Math.abs(wheelX)) - wheelY = 0; - if (dt != 0) { - vX = wheelX / dt; - vY = wheelY / dt; - } - editor._emit("mousewheel", mouseEvent); - if (!mouseEvent.propagationStopped) { - vX = vY = 0; - } - } - else { - var ev = new MouseEvent(e, editor); - var pos = ev.getDocumentPosition(); - if (mode == "cursor") - editor.selection.moveCursorToPosition(pos); - else if (mode == "anchor") - editor.selection.setSelectionAnchor(pos.row, pos.column); - editor.renderer.scrollCursorIntoView(pos); - e.preventDefault(); - } - }, editor); - function animate() { - animationSteps += 60; - animationTimer = setInterval(function () { - if (animationSteps-- <= 0) { - clearInterval(animationTimer); - animationTimer = null; - } - if (Math.abs(vX) < 0.01) - vX = 0; - if (Math.abs(vY) < 0.01) - vY = 0; - if (animationSteps < 20) - vX = 0.9 * vX; - if (animationSteps < 20) - vY = 0.9 * vY; - var oldScrollTop = editor.session.getScrollTop(); - editor.renderer.scrollBy(10 * vX, 10 * vY); - if (oldScrollTop == editor.session.getScrollTop()) - animationSteps = 0; - }, 10); - } -}; - -}); - -ace.define("ace/mouse/mouse_handler",["require","exports","module","ace/lib/event","ace/lib/useragent","ace/mouse/default_handlers","ace/mouse/default_gutter_handler","ace/mouse/mouse_event","ace/mouse/dragdrop_handler","ace/mouse/touch_handler","ace/config"], function(require, exports, module){"use strict"; -var event = require("../lib/event"); -var useragent = require("../lib/useragent"); -var DefaultHandlers = require("./default_handlers").DefaultHandlers; -var DefaultGutterHandler = require("./default_gutter_handler").GutterHandler; -var MouseEvent = require("./mouse_event").MouseEvent; -var DragdropHandler = require("./dragdrop_handler").DragdropHandler; -var addTouchListeners = require("./touch_handler").addTouchListeners; -var config = require("../config"); -var MouseHandler = /** @class */ (function () { - function MouseHandler(editor) { - var _self = this; - this.editor = editor; - new DefaultHandlers(this); - new DefaultGutterHandler(this); - new DragdropHandler(this); - var focusEditor = function (e) { - var windowBlurred = !document.hasFocus || !document.hasFocus() - || !editor.isFocused() && document.activeElement == (editor.textInput && editor.textInput.getElement()); - if (windowBlurred) - window.focus(); - editor.focus(); - setTimeout(function () { - if (!editor.isFocused()) - editor.focus(); - }); - }; - var mouseTarget = editor.renderer.getMouseEventTarget(); - event.addListener(mouseTarget, "click", this.onMouseEvent.bind(this, "click"), editor); - event.addListener(mouseTarget, "mousemove", this.onMouseMove.bind(this, "mousemove"), editor); - event.addMultiMouseDownListener([ - mouseTarget, - editor.renderer.scrollBarV && editor.renderer.scrollBarV.inner, - editor.renderer.scrollBarH && editor.renderer.scrollBarH.inner, - editor.textInput && editor.textInput.getElement() - ].filter(Boolean), [400, 300, 250], this, "onMouseEvent", editor); - event.addMouseWheelListener(editor.container, this.onMouseWheel.bind(this, "mousewheel"), editor); - addTouchListeners(editor.container, editor); - var gutterEl = editor.renderer.$gutter; - event.addListener(gutterEl, "mousedown", this.onMouseEvent.bind(this, "guttermousedown"), editor); - event.addListener(gutterEl, "click", this.onMouseEvent.bind(this, "gutterclick"), editor); - event.addListener(gutterEl, "dblclick", this.onMouseEvent.bind(this, "gutterdblclick"), editor); - event.addListener(gutterEl, "mousemove", this.onMouseEvent.bind(this, "guttermousemove"), editor); - event.addListener(mouseTarget, "mousedown", focusEditor, editor); - event.addListener(gutterEl, "mousedown", focusEditor, editor); - if (useragent.isIE && editor.renderer.scrollBarV) { - event.addListener(editor.renderer.scrollBarV.element, "mousedown", focusEditor, editor); - event.addListener(editor.renderer.scrollBarH.element, "mousedown", focusEditor, editor); - } - editor.on("mousemove", function (e) { - if (_self.state || _self.$dragDelay || !_self.$dragEnabled) - return; - var character = editor.renderer.screenToTextCoordinates(e.x, e.y); - var range = editor.session.selection.getRange(); - var renderer = editor.renderer; - if (!range.isEmpty() && range.insideStart(character.row, character.column)) { - renderer.setCursorStyle("default"); - } - else { - renderer.setCursorStyle(""); - } - }, editor); - } - MouseHandler.prototype.onMouseEvent = function (name, e) { - if (!this.editor.session) - return; - this.editor._emit(name, new MouseEvent(e, this.editor)); - }; - MouseHandler.prototype.onMouseMove = function (name, e) { - var listeners = this.editor._eventRegistry && this.editor._eventRegistry.mousemove; - if (!listeners || !listeners.length) - return; - this.editor._emit(name, new MouseEvent(e, this.editor)); - }; - MouseHandler.prototype.onMouseWheel = function (name, e) { - var mouseEvent = new MouseEvent(e, this.editor); - mouseEvent.speed = this.$scrollSpeed * 2; - mouseEvent.wheelX = e.wheelX; - mouseEvent.wheelY = e.wheelY; - this.editor._emit(name, mouseEvent); - }; - MouseHandler.prototype.setState = function (state) { - this.state = state; - }; - MouseHandler.prototype.captureMouse = function (ev, mouseMoveHandler) { - this.x = ev.x; - this.y = ev.y; - this.isMousePressed = true; - var editor = this.editor; - var renderer = this.editor.renderer; - renderer.$isMousePressed = true; - var self = this; - var onMouseMove = function (e) { - if (!e) - return; - if (useragent.isWebKit && !e.which && self.releaseMouse) - return self.releaseMouse(); - self.x = e.clientX; - self.y = e.clientY; - mouseMoveHandler && mouseMoveHandler(e); - self.mouseEvent = new MouseEvent(e, self.editor); - self.$mouseMoved = true; - }; - var onCaptureEnd = function (e) { - editor.off("beforeEndOperation", onOperationEnd); - clearInterval(timerId); - if (editor.session) - onCaptureInterval(); - self[self.state + "End"] && self[self.state + "End"](e); - self.state = ""; - self.isMousePressed = renderer.$isMousePressed = false; - if (renderer.$keepTextAreaAtCursor) - renderer.$moveTextAreaToCursor(); - self.$onCaptureMouseMove = self.releaseMouse = null; - e && self.onMouseEvent("mouseup", e); - editor.endOperation(); - }; - var onCaptureInterval = function () { - self[self.state] && self[self.state](); - self.$mouseMoved = false; - }; - if (useragent.isOldIE && ev.domEvent.type == "dblclick") { - return setTimeout(function () { onCaptureEnd(ev); }); - } - var onOperationEnd = function (e) { - if (!self.releaseMouse) - return; - if (editor.curOp.command.name && editor.curOp.selectionChanged) { - self[self.state + "End"] && self[self.state + "End"](); - self.state = ""; - self.releaseMouse(); - } - }; - editor.on("beforeEndOperation", onOperationEnd); - editor.startOperation({ command: { name: "mouse" } }); - self.$onCaptureMouseMove = onMouseMove; - self.releaseMouse = event.capture(this.editor.container, onMouseMove, onCaptureEnd); - var timerId = setInterval(onCaptureInterval, 20); - }; - MouseHandler.prototype.cancelContextMenu = function () { - var stop = function (e) { - if (e && e.domEvent && e.domEvent.type != "contextmenu") - return; - this.editor.off("nativecontextmenu", stop); - if (e && e.domEvent) - event.stopEvent(e.domEvent); - }.bind(this); - setTimeout(stop, 10); - this.editor.on("nativecontextmenu", stop); - }; - MouseHandler.prototype.destroy = function () { - if (this.releaseMouse) - this.releaseMouse(); - }; - return MouseHandler; -}()); -MouseHandler.prototype.releaseMouse = null; -config.defineOptions(MouseHandler.prototype, "mouseHandler", { - scrollSpeed: { initialValue: 2 }, - dragDelay: { initialValue: (useragent.isMac ? 150 : 0) }, - dragEnabled: { initialValue: true }, - focusTimeout: { initialValue: 0 }, - tooltipFollowsMouse: { initialValue: true } -}); -exports.MouseHandler = MouseHandler; - -}); - -ace.define("ace/mouse/fold_handler",["require","exports","module","ace/lib/dom"], function(require, exports, module){"use strict"; -var dom = require("../lib/dom"); -var FoldHandler = /** @class */ (function () { - function FoldHandler(editor) { - editor.on("click", function (e) { - var position = e.getDocumentPosition(); - var session = editor.session; - var fold = session.getFoldAt(position.row, position.column, 1); - if (fold) { - if (e.getAccelKey()) - session.removeFold(fold); - else - session.expandFold(fold); - e.stop(); - } - var target = e.domEvent && e.domEvent.target; - if (target && dom.hasCssClass(target, "ace_inline_button")) { - if (dom.hasCssClass(target, "ace_toggle_wrap")) { - session.setOption("wrap", !session.getUseWrapMode()); - editor.renderer.scrollCursorIntoView(); - } - } - }); - editor.on("gutterclick", function (e) { - var gutterRegion = editor.renderer.$gutterLayer.getRegion(e); - if (gutterRegion == "foldWidgets") { - var row = e.getDocumentPosition().row; - var session = editor.session; - if (session.foldWidgets && session.foldWidgets[row]) - editor.session.onFoldWidgetClick(row, e); - if (!editor.isFocused()) - editor.focus(); - e.stop(); - } - }); - editor.on("gutterdblclick", function (e) { - var gutterRegion = editor.renderer.$gutterLayer.getRegion(e); - if (gutterRegion == "foldWidgets") { - var row = e.getDocumentPosition().row; - var session = editor.session; - var data = session.getParentFoldRangeData(row, true); - var range = data.range || data.firstRange; - if (range) { - row = range.start.row; - var fold = session.getFoldAt(row, session.getLine(row).length, 1); - if (fold) { - session.removeFold(fold); - } - else { - session.addFold("...", range); - editor.renderer.scrollCursorIntoView({ row: range.start.row, column: 0 }); - } - } - e.stop(); - } - }); - } - return FoldHandler; -}()); -exports.FoldHandler = FoldHandler; - -}); - -ace.define("ace/keyboard/keybinding",["require","exports","module","ace/lib/keys","ace/lib/event"], function(require, exports, module){"use strict"; -var keyUtil = require("../lib/keys"); -var event = require("../lib/event"); -var KeyBinding = /** @class */ (function () { - function KeyBinding(editor) { - this.$editor = editor; - this.$data = { editor: editor }; - this.$handlers = []; - this.setDefaultHandler(editor.commands); - } - KeyBinding.prototype.setDefaultHandler = function (kb) { - this.removeKeyboardHandler(this.$defaultHandler); - this.$defaultHandler = kb; - this.addKeyboardHandler(kb, 0); - }; - KeyBinding.prototype.setKeyboardHandler = function (kb) { - var h = this.$handlers; - if (h[h.length - 1] == kb) - return; - while (h[h.length - 1] && h[h.length - 1] != this.$defaultHandler) - this.removeKeyboardHandler(h[h.length - 1]); - this.addKeyboardHandler(kb, 1); - }; - KeyBinding.prototype.addKeyboardHandler = function (kb, pos) { - if (!kb) - return; - if (typeof kb == "function" && !kb.handleKeyboard) - kb.handleKeyboard = kb; - var i = this.$handlers.indexOf(kb); - if (i != -1) - this.$handlers.splice(i, 1); - if (pos == undefined) - this.$handlers.push(kb); - else - this.$handlers.splice(pos, 0, kb); - if (i == -1 && kb.attach) - kb.attach(this.$editor); - }; - KeyBinding.prototype.removeKeyboardHandler = function (kb) { - var i = this.$handlers.indexOf(kb); - if (i == -1) - return false; - this.$handlers.splice(i, 1); - kb.detach && kb.detach(this.$editor); - return true; - }; - KeyBinding.prototype.getKeyboardHandler = function () { - return this.$handlers[this.$handlers.length - 1]; - }; - KeyBinding.prototype.getStatusText = function () { - var data = this.$data; - var editor = data.editor; - return this.$handlers.map(function (h) { - return h.getStatusText && h.getStatusText(editor, data) || ""; - }).filter(Boolean).join(" "); - }; - KeyBinding.prototype.$callKeyboardHandlers = function (hashId, keyString, keyCode, e) { - var toExecute; - var success = false; - var commands = this.$editor.commands; - for (var i = this.$handlers.length; i--;) { - toExecute = this.$handlers[i].handleKeyboard(this.$data, hashId, keyString, keyCode, e); - if (!toExecute || !toExecute.command) - continue; - if (toExecute.command == "null") { - success = true; - } - else { - success = commands.exec(toExecute.command, this.$editor, toExecute.args, e); - } - if (success && e && hashId != -1 && - toExecute.passEvent != true && toExecute.command.passEvent != true) { - event.stopEvent(e); - } - if (success) - break; - } - if (!success && hashId == -1) { - toExecute = { command: "insertstring" }; - success = commands.exec("insertstring", this.$editor, keyString); - } - if (success && this.$editor._signal) - this.$editor._signal("keyboardActivity", toExecute); - return success; - }; - KeyBinding.prototype.onCommandKey = function (e, hashId, keyCode) { - var keyString = keyUtil.keyCodeToString(keyCode); - return this.$callKeyboardHandlers(hashId, keyString, keyCode, e); - }; - KeyBinding.prototype.onTextInput = function (text) { - return this.$callKeyboardHandlers(-1, text); - }; - return KeyBinding; -}()); -exports.KeyBinding = KeyBinding; - -}); - -ace.define("ace/lib/bidiutil",["require","exports","module"], function(require, exports, module){"use strict"; -var ArabicAlefBetIntervalsBegine = ['\u0621', '\u0641']; -var ArabicAlefBetIntervalsEnd = ['\u063A', '\u064a']; -var dir = 0, hiLevel = 0; -var lastArabic = false, hasUBAT_AL = false, hasUBAT_B = false, hasUBAT_S = false, hasBlockSep = false, hasSegSep = false; -var impTab_LTR = [ [0, 3, 0, 1, 0, 0, 0], [0, 3, 0, 1, 2, 2, 0], [0, 3, 0, 0x11, 2, 0, 1], [0, 3, 5, 5, 4, 1, 0], [0, 3, 0x15, 0x15, 4, 0, 1], [0, 3, 5, 5, 4, 2, 0] -]; -var impTab_RTL = [ [2, 0, 1, 1, 0, 1, 0], [2, 0, 1, 1, 0, 2, 0], [2, 0, 2, 1, 3, 2, 0], [2, 0, 2, 0x21, 3, 1, 1] -]; -var LTR = 0, RTL = 1; -var L = 0; -var R = 1; -var EN = 2; -var AN = 3; -var ON = 4; -var B = 5; -var S = 6; -var AL = 7; -var WS = 8; -var CS = 9; -var ES = 10; -var ET = 11; -var NSM = 12; -var LRE = 13; -var RLE = 14; -var PDF = 15; -var LRO = 16; -var RLO = 17; -var BN = 18; -var UnicodeTBL00 = [ - BN, BN, BN, BN, BN, BN, BN, BN, BN, S, B, S, WS, B, BN, BN, - BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, B, B, B, S, - WS, ON, ON, ET, ET, ET, ON, ON, ON, ON, ON, ES, CS, ES, CS, CS, - EN, EN, EN, EN, EN, EN, EN, EN, EN, EN, CS, ON, ON, ON, ON, ON, - ON, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, - L, L, L, L, L, L, L, L, L, L, L, ON, ON, ON, ON, ON, - ON, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, - L, L, L, L, L, L, L, L, L, L, L, ON, ON, ON, ON, BN, - BN, BN, BN, BN, BN, B, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, - BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, - CS, ON, ET, ET, ET, ET, ON, ON, ON, ON, L, ON, ON, BN, ON, ON, - ET, ET, EN, EN, ON, L, ON, ON, ON, EN, L, ON, ON, ON, ON, ON -]; -var UnicodeTBL20 = [ - WS, WS, WS, WS, WS, WS, WS, WS, WS, WS, WS, BN, BN, BN, L, R, - ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, - ON, ON, ON, ON, ON, ON, ON, ON, WS, B, LRE, RLE, PDF, LRO, RLO, CS, - ET, ET, ET, ET, ET, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, - ON, ON, ON, ON, CS, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, - ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, WS -]; -function _computeLevels(chars, levels, len, charTypes) { - var impTab = dir ? impTab_RTL : impTab_LTR, prevState = null, newClass = null, newLevel = null, newState = 0, action = null, cond = null, condPos = -1, i = null, ix = null, classes = []; - if (!charTypes) { - for (i = 0, charTypes = []; i < len; i++) { - charTypes[i] = _getCharacterType(chars[i]); - } - } - hiLevel = dir; - lastArabic = false; - hasUBAT_AL = false; - hasUBAT_B = false; - hasUBAT_S = false; - for (ix = 0; ix < len; ix++) { - prevState = newState; - classes[ix] = newClass = _getCharClass(chars, charTypes, classes, ix); - newState = impTab[prevState][newClass]; - action = newState & 0xF0; - newState &= 0x0F; - levels[ix] = newLevel = impTab[newState][5]; - if (action > 0) { - if (action == 0x10) { - for (i = condPos; i < ix; i++) { - levels[i] = 1; - } - condPos = -1; - } - else { - condPos = -1; - } - } - cond = impTab[newState][6]; - if (cond) { - if (condPos == -1) { - condPos = ix; - } - } - else { - if (condPos > -1) { - for (i = condPos; i < ix; i++) { - levels[i] = newLevel; - } - condPos = -1; - } - } - if (charTypes[ix] == B) { - levels[ix] = 0; - } - hiLevel |= newLevel; - } - if (hasUBAT_S) { - for (i = 0; i < len; i++) { - if (charTypes[i] == S) { - levels[i] = dir; - for (var j = i - 1; j >= 0; j--) { - if (charTypes[j] == WS) { - levels[j] = dir; - } - else { - break; - } - } - } - } - } -} -function _invertLevel(lev, levels, _array) { - if (hiLevel < lev) { - return; - } - if (lev == 1 && dir == RTL && !hasUBAT_B) { - _array.reverse(); - return; - } - var len = _array.length, start = 0, end, lo, hi, tmp; - while (start < len) { - if (levels[start] >= lev) { - end = start + 1; - while (end < len && levels[end] >= lev) { - end++; - } - for (lo = start, hi = end - 1; lo < hi; lo++, hi--) { - tmp = _array[lo]; - _array[lo] = _array[hi]; - _array[hi] = tmp; - } - start = end; - } - start++; - } -} -function _getCharClass(chars, types, classes, ix) { - var cType = types[ix], wType, nType, len, i; - switch (cType) { - case L: - case R: - lastArabic = false; - case ON: - case AN: - return cType; - case EN: - return lastArabic ? AN : EN; - case AL: - lastArabic = true; - hasUBAT_AL = true; - return R; - case WS: - return ON; - case CS: - if (ix < 1 || (ix + 1) >= types.length || - ((wType = classes[ix - 1]) != EN && wType != AN) || - ((nType = types[ix + 1]) != EN && nType != AN)) { - return ON; - } - if (lastArabic) { - nType = AN; - } - return nType == wType ? nType : ON; - case ES: - wType = ix > 0 ? classes[ix - 1] : B; - if (wType == EN && (ix + 1) < types.length && types[ix + 1] == EN) { - return EN; - } - return ON; - case ET: - if (ix > 0 && classes[ix - 1] == EN) { - return EN; - } - if (lastArabic) { - return ON; - } - i = ix + 1; - len = types.length; - while (i < len && types[i] == ET) { - i++; - } - if (i < len && types[i] == EN) { - return EN; - } - return ON; - case NSM: - len = types.length; - i = ix + 1; - while (i < len && types[i] == NSM) { - i++; - } - if (i < len) { - var c = chars[ix], rtlCandidate = (c >= 0x0591 && c <= 0x08FF) || c == 0xFB1E; - wType = types[i]; - if (rtlCandidate && (wType == R || wType == AL)) { - return R; - } - } - if (ix < 1 || (wType = types[ix - 1]) == B) { - return ON; - } - return classes[ix - 1]; - case B: - lastArabic = false; - hasUBAT_B = true; - return dir; - case S: - hasUBAT_S = true; - return ON; - case LRE: - case RLE: - case LRO: - case RLO: - case PDF: - lastArabic = false; - case BN: - return ON; - } -} -function _getCharacterType(ch) { - var uc = ch.charCodeAt(0), hi = uc >> 8; - if (hi == 0) { - return ((uc > 0x00BF) ? L : UnicodeTBL00[uc]); - } - else if (hi == 5) { - return (/[\u0591-\u05f4]/.test(ch) ? R : L); - } - else if (hi == 6) { - if (/[\u0610-\u061a\u064b-\u065f\u06d6-\u06e4\u06e7-\u06ed]/.test(ch)) - return NSM; - else if (/[\u0660-\u0669\u066b-\u066c]/.test(ch)) - return AN; - else if (uc == 0x066A) - return ET; - else if (/[\u06f0-\u06f9]/.test(ch)) - return EN; - else - return AL; - } - else if (hi == 0x20 && uc <= 0x205F) { - return UnicodeTBL20[uc & 0xFF]; - } - else if (hi == 0xFE) { - return (uc >= 0xFE70 ? AL : ON); - } - return ON; -} -function _isArabicDiacritics(ch) { - return (ch >= '\u064b' && ch <= '\u0655'); -} -exports.L = L; -exports.R = R; -exports.EN = EN; -exports.ON_R = 3; -exports.AN = 4; -exports.R_H = 5; -exports.B = 6; -exports.RLE = 7; -exports.DOT = "\xB7"; -exports.doBidiReorder = function (text, textCharTypes, isRtl) { - if (text.length < 2) - return {}; - var chars = text.split(""), logicalFromVisual = new Array(chars.length), bidiLevels = new Array(chars.length), levels = []; - dir = isRtl ? RTL : LTR; - _computeLevels(chars, levels, chars.length, textCharTypes); - for (var i = 0; i < logicalFromVisual.length; logicalFromVisual[i] = i, i++) - ; - _invertLevel(2, levels, logicalFromVisual); - _invertLevel(1, levels, logicalFromVisual); - for (var i = 0; i < logicalFromVisual.length - 1; i++) { //fix levels to reflect character width - if (textCharTypes[i] === AN) { - levels[i] = exports.AN; - } - else if (levels[i] === R && ((textCharTypes[i] > AL && textCharTypes[i] < LRE) - || textCharTypes[i] === ON || textCharTypes[i] === BN)) { - levels[i] = exports.ON_R; - } - else if ((i > 0 && chars[i - 1] === '\u0644') && /\u0622|\u0623|\u0625|\u0627/.test(chars[i])) { - levels[i - 1] = levels[i] = exports.R_H; - i++; - } - } - if (chars[chars.length - 1] === exports.DOT) - levels[chars.length - 1] = exports.B; - if (chars[0] === '\u202B') - levels[0] = exports.RLE; - for (var i = 0; i < logicalFromVisual.length; i++) { - bidiLevels[i] = levels[logicalFromVisual[i]]; - } - return { 'logicalFromVisual': logicalFromVisual, 'bidiLevels': bidiLevels }; -}; -exports.hasBidiCharacters = function (text, textCharTypes) { - var ret = false; - for (var i = 0; i < text.length; i++) { - textCharTypes[i] = _getCharacterType(text.charAt(i)); - if (!ret && (textCharTypes[i] == R || textCharTypes[i] == AL || textCharTypes[i] == AN)) - ret = true; - } - return ret; -}; -exports.getVisualFromLogicalIdx = function (logIdx, rowMap) { - for (var i = 0; i < rowMap.logicalFromVisual.length; i++) { - if (rowMap.logicalFromVisual[i] == logIdx) - return i; - } - return 0; -}; - -}); - -ace.define("ace/bidihandler",["require","exports","module","ace/lib/bidiutil","ace/lib/lang"], function(require, exports, module){"use strict"; -var bidiUtil = require("./lib/bidiutil"); -var lang = require("./lib/lang"); -var bidiRE = /[\u0590-\u05f4\u0600-\u06ff\u0700-\u08ac\u202B]/; -var BidiHandler = /** @class */ (function () { - function BidiHandler(session) { - this.session = session; - this.bidiMap = {}; - this.currentRow = null; - this.bidiUtil = bidiUtil; - this.charWidths = []; - this.EOL = "\xAC"; - this.showInvisibles = true; - this.isRtlDir = false; - this.$isRtl = false; - this.line = ""; - this.wrapIndent = 0; - this.EOF = "\xB6"; - this.RLE = "\u202B"; - this.contentWidth = 0; - this.fontMetrics = null; - this.rtlLineOffset = 0; - this.wrapOffset = 0; - this.isMoveLeftOperation = false; - this.seenBidi = bidiRE.test(session.getValue()); - } - BidiHandler.prototype.isBidiRow = function (screenRow, docRow, splitIndex) { - if (!this.seenBidi) - return false; - if (screenRow !== this.currentRow) { - this.currentRow = screenRow; - this.updateRowLine(docRow, splitIndex); - this.updateBidiMap(); - } - return this.bidiMap.bidiLevels; - }; - BidiHandler.prototype.onChange = function (delta) { - if (!this.seenBidi) { - if (delta.action == "insert" && bidiRE.test(delta.lines.join("\n"))) { - this.seenBidi = true; - this.currentRow = null; - } - } - else { - this.currentRow = null; - } - }; - BidiHandler.prototype.getDocumentRow = function () { - var docRow = 0; - var rowCache = this.session.$screenRowCache; - if (rowCache.length) { - var index = this.session.$getRowCacheIndex(rowCache, this.currentRow); - if (index >= 0) - docRow = this.session.$docRowCache[index]; - } - return docRow; - }; - BidiHandler.prototype.getSplitIndex = function () { - var splitIndex = 0; - var rowCache = this.session.$screenRowCache; - if (rowCache.length) { - var currentIndex, prevIndex = this.session.$getRowCacheIndex(rowCache, this.currentRow); - while (this.currentRow - splitIndex > 0) { - currentIndex = this.session.$getRowCacheIndex(rowCache, this.currentRow - splitIndex - 1); - if (currentIndex !== prevIndex) - break; - prevIndex = currentIndex; - splitIndex++; - } - } - else { - splitIndex = this.currentRow; - } - return splitIndex; - }; - BidiHandler.prototype.updateRowLine = function (docRow, splitIndex) { - if (docRow === undefined) - docRow = this.getDocumentRow(); - var isLastRow = (docRow === this.session.getLength() - 1), endOfLine = isLastRow ? this.EOF : this.EOL; - this.wrapIndent = 0; - this.line = this.session.getLine(docRow); - this.isRtlDir = this.$isRtl || this.line.charAt(0) === this.RLE; - if (this.session.$useWrapMode) { - var splits = this.session.$wrapData[docRow]; - if (splits) { - if (splitIndex === undefined) - splitIndex = this.getSplitIndex(); - if (splitIndex > 0 && splits.length) { - this.wrapIndent = splits.indent; - this.wrapOffset = this.wrapIndent * this.charWidths[bidiUtil.L]; - this.line = (splitIndex < splits.length) ? - this.line.substring(splits[splitIndex - 1], splits[splitIndex]) : - this.line.substring(splits[splits.length - 1]); - } - else { - this.line = this.line.substring(0, splits[splitIndex]); - } - if (splitIndex == splits.length) { - this.line += (this.showInvisibles) ? endOfLine : bidiUtil.DOT; - } - } - } - else { - this.line += this.showInvisibles ? endOfLine : bidiUtil.DOT; - } - var session = this.session, shift = 0, size; - this.line = this.line.replace(/\t|[\u1100-\u2029, \u202F-\uFFE6]/g, function (ch, i) { - if (ch === '\t' || session.isFullWidth(ch.charCodeAt(0))) { - size = (ch === '\t') ? session.getScreenTabSize(i + shift) : 2; - shift += size - 1; - return lang.stringRepeat(bidiUtil.DOT, size); - } - return ch; - }); - if (this.isRtlDir) { - this.fontMetrics.$main.textContent = (this.line.charAt(this.line.length - 1) == bidiUtil.DOT) ? this.line.substr(0, this.line.length - 1) : this.line; - this.rtlLineOffset = this.contentWidth - this.fontMetrics.$main.getBoundingClientRect().width; - } - }; - BidiHandler.prototype.updateBidiMap = function () { - var textCharTypes = []; - if (bidiUtil.hasBidiCharacters(this.line, textCharTypes) || this.isRtlDir) { - this.bidiMap = bidiUtil.doBidiReorder(this.line, textCharTypes, this.isRtlDir); - } - else { - this.bidiMap = {}; - } - }; - BidiHandler.prototype.markAsDirty = function () { - this.currentRow = null; - }; - BidiHandler.prototype.updateCharacterWidths = function (fontMetrics) { - if (this.characterWidth === fontMetrics.$characterSize.width) - return; - this.fontMetrics = fontMetrics; - var characterWidth = this.characterWidth = fontMetrics.$characterSize.width; - var bidiCharWidth = fontMetrics.$measureCharWidth("\u05d4"); - this.charWidths[bidiUtil.L] = this.charWidths[bidiUtil.EN] = this.charWidths[bidiUtil.ON_R] = characterWidth; - this.charWidths[bidiUtil.R] = this.charWidths[bidiUtil.AN] = bidiCharWidth; - this.charWidths[bidiUtil.R_H] = bidiCharWidth * 0.45; - this.charWidths[bidiUtil.B] = this.charWidths[bidiUtil.RLE] = 0; - this.currentRow = null; - }; - BidiHandler.prototype.setShowInvisibles = function (showInvisibles) { - this.showInvisibles = showInvisibles; - this.currentRow = null; - }; - BidiHandler.prototype.setEolChar = function (eolChar) { - this.EOL = eolChar; - }; - BidiHandler.prototype.setContentWidth = function (width) { - this.contentWidth = width; - }; - BidiHandler.prototype.isRtlLine = function (row) { - if (this.$isRtl) - return true; - if (row != undefined) - return (this.session.getLine(row).charAt(0) == this.RLE); - else - return this.isRtlDir; - }; - BidiHandler.prototype.setRtlDirection = function (editor, isRtlDir) { - var cursor = editor.getCursorPosition(); - for (var row = editor.selection.getSelectionAnchor().row; row <= cursor.row; row++) { - if (!isRtlDir && editor.session.getLine(row).charAt(0) === editor.session.$bidiHandler.RLE) - editor.session.doc.removeInLine(row, 0, 1); - else if (isRtlDir && editor.session.getLine(row).charAt(0) !== editor.session.$bidiHandler.RLE) - editor.session.doc.insert({ column: 0, row: row }, editor.session.$bidiHandler.RLE); - } - }; - BidiHandler.prototype.getPosLeft = function (col) { - col -= this.wrapIndent; - var leftBoundary = (this.line.charAt(0) === this.RLE) ? 1 : 0; - var logicalIdx = (col > leftBoundary) ? (this.session.getOverwrite() ? col : col - 1) : leftBoundary; - var visualIdx = bidiUtil.getVisualFromLogicalIdx(logicalIdx, this.bidiMap), levels = this.bidiMap.bidiLevels, left = 0; - if (!this.session.getOverwrite() && col <= leftBoundary && levels[visualIdx] % 2 !== 0) - visualIdx++; - for (var i = 0; i < visualIdx; i++) { - left += this.charWidths[levels[i]]; - } - if (!this.session.getOverwrite() && (col > leftBoundary) && (levels[visualIdx] % 2 === 0)) - left += this.charWidths[levels[visualIdx]]; - if (this.wrapIndent) - left += this.isRtlDir ? (-1 * this.wrapOffset) : this.wrapOffset; - if (this.isRtlDir) - left += this.rtlLineOffset; - return left; - }; - BidiHandler.prototype.getSelections = function (startCol, endCol) { - var map = this.bidiMap, levels = map.bidiLevels, level, selections = [], offset = 0, selColMin = Math.min(startCol, endCol) - this.wrapIndent, selColMax = Math.max(startCol, endCol) - this.wrapIndent, isSelected = false, isSelectedPrev = false, selectionStart = 0; - if (this.wrapIndent) - offset += this.isRtlDir ? (-1 * this.wrapOffset) : this.wrapOffset; - for (var logIdx, visIdx = 0; visIdx < levels.length; visIdx++) { - logIdx = map.logicalFromVisual[visIdx]; - level = levels[visIdx]; - isSelected = (logIdx >= selColMin) && (logIdx < selColMax); - if (isSelected && !isSelectedPrev) { - selectionStart = offset; - } - else if (!isSelected && isSelectedPrev) { - selections.push({ left: selectionStart, width: offset - selectionStart }); - } - offset += this.charWidths[level]; - isSelectedPrev = isSelected; - } - if (isSelected && (visIdx === levels.length)) { - selections.push({ left: selectionStart, width: offset - selectionStart }); - } - if (this.isRtlDir) { - for (var i = 0; i < selections.length; i++) { - selections[i].left += this.rtlLineOffset; - } - } - return selections; - }; - BidiHandler.prototype.offsetToCol = function (posX) { - if (this.isRtlDir) - posX -= this.rtlLineOffset; - var logicalIdx = 0, posX = Math.max(posX, 0), offset = 0, visualIdx = 0, levels = this.bidiMap.bidiLevels, charWidth = this.charWidths[levels[visualIdx]]; - if (this.wrapIndent) - posX -= this.isRtlDir ? (-1 * this.wrapOffset) : this.wrapOffset; - while (posX > offset + charWidth / 2) { - offset += charWidth; - if (visualIdx === levels.length - 1) { - charWidth = 0; - break; - } - charWidth = this.charWidths[levels[++visualIdx]]; - } - if (visualIdx > 0 && (levels[visualIdx - 1] % 2 !== 0) && (levels[visualIdx] % 2 === 0)) { - if (posX < offset) - visualIdx--; - logicalIdx = this.bidiMap.logicalFromVisual[visualIdx]; - } - else if (visualIdx > 0 && (levels[visualIdx - 1] % 2 === 0) && (levels[visualIdx] % 2 !== 0)) { - logicalIdx = 1 + ((posX > offset) ? this.bidiMap.logicalFromVisual[visualIdx] - : this.bidiMap.logicalFromVisual[visualIdx - 1]); - } - else if ((this.isRtlDir && visualIdx === levels.length - 1 && charWidth === 0 && (levels[visualIdx - 1] % 2 === 0)) - || (!this.isRtlDir && visualIdx === 0 && (levels[visualIdx] % 2 !== 0))) { - logicalIdx = 1 + this.bidiMap.logicalFromVisual[visualIdx]; - } - else { - if (visualIdx > 0 && (levels[visualIdx - 1] % 2 !== 0) && charWidth !== 0) - visualIdx--; - logicalIdx = this.bidiMap.logicalFromVisual[visualIdx]; - } - if (logicalIdx === 0 && this.isRtlDir) - logicalIdx++; - return (logicalIdx + this.wrapIndent); - }; - return BidiHandler; -}()); -exports.BidiHandler = BidiHandler; - -}); - -ace.define("ace/selection",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/lib/event_emitter","ace/range"], function(require, exports, module){"use strict"; -var oop = require("./lib/oop"); -var lang = require("./lib/lang"); -var EventEmitter = require("./lib/event_emitter").EventEmitter; -var Range = require("./range").Range; -var Selection = /** @class */ (function () { - function Selection(session) { - this.session = session; - this.doc = session.getDocument(); - this.clearSelection(); - this.cursor = this.lead = this.doc.createAnchor(0, 0); - this.anchor = this.doc.createAnchor(0, 0); - this.$silent = false; - var self = this; - this.cursor.on("change", function (e) { - self.$cursorChanged = true; - if (!self.$silent) - self._emit("changeCursor"); - if (!self.$isEmpty && !self.$silent) - self._emit("changeSelection"); - if (!self.$keepDesiredColumnOnChange && e.old.column != e.value.column) - self.$desiredColumn = null; - }); - this.anchor.on("change", function () { - self.$anchorChanged = true; - if (!self.$isEmpty && !self.$silent) - self._emit("changeSelection"); - }); - } - Selection.prototype.isEmpty = function () { - return this.$isEmpty || (this.anchor.row == this.lead.row && - this.anchor.column == this.lead.column); - }; - Selection.prototype.isMultiLine = function () { - return !this.$isEmpty && this.anchor.row != this.cursor.row; - }; - Selection.prototype.getCursor = function () { - return this.lead.getPosition(); - }; - Selection.prototype.setAnchor = function (row, column) { - this.$isEmpty = false; - this.anchor.setPosition(row, column); - }; - Selection.prototype.getAnchor = function () { - if (this.$isEmpty) - return this.getSelectionLead(); - return this.anchor.getPosition(); - }; - Selection.prototype.getSelectionLead = function () { - return this.lead.getPosition(); - }; - Selection.prototype.isBackwards = function () { - var anchor = this.anchor; - var lead = this.lead; - return (anchor.row > lead.row || (anchor.row == lead.row && anchor.column > lead.column)); - }; - Selection.prototype.getRange = function () { - var anchor = this.anchor; - var lead = this.lead; - if (this.$isEmpty) - return Range.fromPoints(lead, lead); - return this.isBackwards() - ? Range.fromPoints(lead, anchor) - : Range.fromPoints(anchor, lead); - }; - Selection.prototype.clearSelection = function () { - if (!this.$isEmpty) { - this.$isEmpty = true; - this._emit("changeSelection"); - } - }; - Selection.prototype.selectAll = function () { - this.$setSelection(0, 0, Number.MAX_VALUE, Number.MAX_VALUE); - }; - Selection.prototype.setRange = function (range, reverse) { - var start = reverse ? range.end : range.start; - var end = reverse ? range.start : range.end; - this.$setSelection(start.row, start.column, end.row, end.column); - }; - Selection.prototype.$setSelection = function (anchorRow, anchorColumn, cursorRow, cursorColumn) { - if (this.$silent) - return; - var wasEmpty = this.$isEmpty; - var wasMultiselect = this.inMultiSelectMode; - this.$silent = true; - this.$cursorChanged = this.$anchorChanged = false; - this.anchor.setPosition(anchorRow, anchorColumn); - this.cursor.setPosition(cursorRow, cursorColumn); - this.$isEmpty = !Range.comparePoints(this.anchor, this.cursor); - this.$silent = false; - if (this.$cursorChanged) - this._emit("changeCursor"); - if (this.$cursorChanged || this.$anchorChanged || wasEmpty != this.$isEmpty || wasMultiselect) - this._emit("changeSelection"); - }; - Selection.prototype.$moveSelection = function (mover) { - var lead = this.lead; - if (this.$isEmpty) - this.setSelectionAnchor(lead.row, lead.column); - mover.call(this); - }; - Selection.prototype.selectTo = function (row, column) { - this.$moveSelection(function () { - this.moveCursorTo(row, column); - }); - }; - Selection.prototype.selectToPosition = function (pos) { - this.$moveSelection(function () { - this.moveCursorToPosition(pos); - }); - }; - Selection.prototype.moveTo = function (row, column) { - this.clearSelection(); - this.moveCursorTo(row, column); - }; - Selection.prototype.moveToPosition = function (pos) { - this.clearSelection(); - this.moveCursorToPosition(pos); - }; - Selection.prototype.selectUp = function () { - this.$moveSelection(this.moveCursorUp); - }; - Selection.prototype.selectDown = function () { - this.$moveSelection(this.moveCursorDown); - }; - Selection.prototype.selectRight = function () { - this.$moveSelection(this.moveCursorRight); - }; - Selection.prototype.selectLeft = function () { - this.$moveSelection(this.moveCursorLeft); - }; - Selection.prototype.selectLineStart = function () { - this.$moveSelection(this.moveCursorLineStart); - }; - Selection.prototype.selectLineEnd = function () { - this.$moveSelection(this.moveCursorLineEnd); - }; - Selection.prototype.selectFileEnd = function () { - this.$moveSelection(this.moveCursorFileEnd); - }; - Selection.prototype.selectFileStart = function () { - this.$moveSelection(this.moveCursorFileStart); - }; - Selection.prototype.selectWordRight = function () { - this.$moveSelection(this.moveCursorWordRight); - }; - Selection.prototype.selectWordLeft = function () { - this.$moveSelection(this.moveCursorWordLeft); - }; - Selection.prototype.getWordRange = function (row, column) { - if (typeof column == "undefined") { - var cursor = row || this.lead; - row = cursor.row; - column = cursor.column; - } - return this.session.getWordRange(row, column); - }; - Selection.prototype.selectWord = function () { - this.setSelectionRange(this.getWordRange()); - }; - Selection.prototype.selectAWord = function () { - var cursor = this.getCursor(); - var range = this.session.getAWordRange(cursor.row, cursor.column); - this.setSelectionRange(range); - }; - Selection.prototype.getLineRange = function (row, excludeLastChar) { - var rowStart = typeof row == "number" ? row : this.lead.row; - var rowEnd; - var foldLine = this.session.getFoldLine(rowStart); - if (foldLine) { - rowStart = foldLine.start.row; - rowEnd = foldLine.end.row; - } - else { - rowEnd = rowStart; - } - if (excludeLastChar === true) - return new Range(rowStart, 0, rowEnd, this.session.getLine(rowEnd).length); - else - return new Range(rowStart, 0, rowEnd + 1, 0); - }; - Selection.prototype.selectLine = function () { - this.setSelectionRange(this.getLineRange()); - }; - Selection.prototype.moveCursorUp = function () { - this.moveCursorBy(-1, 0); - }; - Selection.prototype.moveCursorDown = function () { - this.moveCursorBy(1, 0); - }; - Selection.prototype.wouldMoveIntoSoftTab = function (cursor, tabSize, direction) { - var start = cursor.column; - var end = cursor.column + tabSize; - if (direction < 0) { - start = cursor.column - tabSize; - end = cursor.column; - } - return this.session.isTabStop(cursor) && this.doc.getLine(cursor.row).slice(start, end).split(" ").length - 1 == tabSize; - }; - Selection.prototype.moveCursorLeft = function () { - var cursor = this.lead.getPosition(), fold; - if (fold = this.session.getFoldAt(cursor.row, cursor.column, -1)) { - this.moveCursorTo(fold.start.row, fold.start.column); - } - else if (cursor.column === 0) { - if (cursor.row > 0) { - this.moveCursorTo(cursor.row - 1, this.doc.getLine(cursor.row - 1).length); - } - } - else { - var tabSize = this.session.getTabSize(); - if (this.wouldMoveIntoSoftTab(cursor, tabSize, -1) && !this.session.getNavigateWithinSoftTabs()) { - this.moveCursorBy(0, -tabSize); - } - else { - this.moveCursorBy(0, -1); - } - } - }; - Selection.prototype.moveCursorRight = function () { - var cursor = this.lead.getPosition(), fold; - if (fold = this.session.getFoldAt(cursor.row, cursor.column, 1)) { - this.moveCursorTo(fold.end.row, fold.end.column); - } - else if (this.lead.column == this.doc.getLine(this.lead.row).length) { - if (this.lead.row < this.doc.getLength() - 1) { - this.moveCursorTo(this.lead.row + 1, 0); - } - } - else { - var tabSize = this.session.getTabSize(); - var cursor = this.lead; - if (this.wouldMoveIntoSoftTab(cursor, tabSize, 1) && !this.session.getNavigateWithinSoftTabs()) { - this.moveCursorBy(0, tabSize); - } - else { - this.moveCursorBy(0, 1); - } - } - }; - Selection.prototype.moveCursorLineStart = function () { - var row = this.lead.row; - var column = this.lead.column; - var screenRow = this.session.documentToScreenRow(row, column); - var firstColumnPosition = this.session.screenToDocumentPosition(screenRow, 0); - var beforeCursor = this.session.getDisplayLine(row, null, firstColumnPosition.row, firstColumnPosition.column); - var leadingSpace = beforeCursor.match(/^\s*/); - if (leadingSpace[0].length != column && !this.session.$useEmacsStyleLineStart) - firstColumnPosition.column += leadingSpace[0].length; - this.moveCursorToPosition(firstColumnPosition); - }; - Selection.prototype.moveCursorLineEnd = function () { - var lead = this.lead; - var lineEnd = this.session.getDocumentLastRowColumnPosition(lead.row, lead.column); - if (this.lead.column == lineEnd.column) { - var line = this.session.getLine(lineEnd.row); - if (lineEnd.column == line.length) { - var textEnd = line.search(/\s+$/); - if (textEnd > 0) - lineEnd.column = textEnd; - } - } - this.moveCursorTo(lineEnd.row, lineEnd.column); - }; - Selection.prototype.moveCursorFileEnd = function () { - var row = this.doc.getLength() - 1; - var column = this.doc.getLine(row).length; - this.moveCursorTo(row, column); - }; - Selection.prototype.moveCursorFileStart = function () { - this.moveCursorTo(0, 0); - }; - Selection.prototype.moveCursorLongWordRight = function () { - var row = this.lead.row; - var column = this.lead.column; - var line = this.doc.getLine(row); - var rightOfCursor = line.substring(column); - this.session.nonTokenRe.lastIndex = 0; - this.session.tokenRe.lastIndex = 0; - var fold = this.session.getFoldAt(row, column, 1); - if (fold) { - this.moveCursorTo(fold.end.row, fold.end.column); - return; - } - if (this.session.nonTokenRe.exec(rightOfCursor)) { - column += this.session.nonTokenRe.lastIndex; - this.session.nonTokenRe.lastIndex = 0; - rightOfCursor = line.substring(column); - } - if (column >= line.length) { - this.moveCursorTo(row, line.length); - this.moveCursorRight(); - if (row < this.doc.getLength() - 1) - this.moveCursorWordRight(); - return; - } - if (this.session.tokenRe.exec(rightOfCursor)) { - column += this.session.tokenRe.lastIndex; - this.session.tokenRe.lastIndex = 0; - } - this.moveCursorTo(row, column); - }; - Selection.prototype.moveCursorLongWordLeft = function () { - var row = this.lead.row; - var column = this.lead.column; - var fold; - if (fold = this.session.getFoldAt(row, column, -1)) { - this.moveCursorTo(fold.start.row, fold.start.column); - return; - } - var str = this.session.getFoldStringAt(row, column, -1); - if (str == null) { - str = this.doc.getLine(row).substring(0, column); - } - var leftOfCursor = lang.stringReverse(str); - this.session.nonTokenRe.lastIndex = 0; - this.session.tokenRe.lastIndex = 0; - if (this.session.nonTokenRe.exec(leftOfCursor)) { - column -= this.session.nonTokenRe.lastIndex; - leftOfCursor = leftOfCursor.slice(this.session.nonTokenRe.lastIndex); - this.session.nonTokenRe.lastIndex = 0; - } - if (column <= 0) { - this.moveCursorTo(row, 0); - this.moveCursorLeft(); - if (row > 0) - this.moveCursorWordLeft(); - return; - } - if (this.session.tokenRe.exec(leftOfCursor)) { - column -= this.session.tokenRe.lastIndex; - this.session.tokenRe.lastIndex = 0; - } - this.moveCursorTo(row, column); - }; - Selection.prototype.$shortWordEndIndex = function (rightOfCursor) { - var index = 0, ch; - var whitespaceRe = /\s/; - var tokenRe = this.session.tokenRe; - tokenRe.lastIndex = 0; - if (this.session.tokenRe.exec(rightOfCursor)) { - index = this.session.tokenRe.lastIndex; - } - else { - while ((ch = rightOfCursor[index]) && whitespaceRe.test(ch)) - index++; - if (index < 1) { - tokenRe.lastIndex = 0; - while ((ch = rightOfCursor[index]) && !tokenRe.test(ch)) { - tokenRe.lastIndex = 0; - index++; - if (whitespaceRe.test(ch)) { - if (index > 2) { - index--; - break; - } - else { - while ((ch = rightOfCursor[index]) && whitespaceRe.test(ch)) - index++; - if (index > 2) - break; - } - } - } - } - } - tokenRe.lastIndex = 0; - return index; - }; - Selection.prototype.moveCursorShortWordRight = function () { - var row = this.lead.row; - var column = this.lead.column; - var line = this.doc.getLine(row); - var rightOfCursor = line.substring(column); - var fold = this.session.getFoldAt(row, column, 1); - if (fold) - return this.moveCursorTo(fold.end.row, fold.end.column); - if (column == line.length) { - var l = this.doc.getLength(); - do { - row++; - rightOfCursor = this.doc.getLine(row); - } while (row < l && /^\s*$/.test(rightOfCursor)); - if (!/^\s+/.test(rightOfCursor)) - rightOfCursor = ""; - column = 0; - } - var index = this.$shortWordEndIndex(rightOfCursor); - this.moveCursorTo(row, column + index); - }; - Selection.prototype.moveCursorShortWordLeft = function () { - var row = this.lead.row; - var column = this.lead.column; - var fold; - if (fold = this.session.getFoldAt(row, column, -1)) - return this.moveCursorTo(fold.start.row, fold.start.column); - var line = this.session.getLine(row).substring(0, column); - if (column === 0) { - do { - row--; - line = this.doc.getLine(row); - } while (row > 0 && /^\s*$/.test(line)); - column = line.length; - if (!/\s+$/.test(line)) - line = ""; - } - var leftOfCursor = lang.stringReverse(line); - var index = this.$shortWordEndIndex(leftOfCursor); - return this.moveCursorTo(row, column - index); - }; - Selection.prototype.moveCursorWordRight = function () { - if (this.session.$selectLongWords) - this.moveCursorLongWordRight(); - else - this.moveCursorShortWordRight(); - }; - Selection.prototype.moveCursorWordLeft = function () { - if (this.session.$selectLongWords) - this.moveCursorLongWordLeft(); - else - this.moveCursorShortWordLeft(); - }; - Selection.prototype.moveCursorBy = function (rows, chars) { - var screenPos = this.session.documentToScreenPosition(this.lead.row, this.lead.column); - var offsetX; - if (chars === 0) { - if (rows !== 0) { - if (this.session.$bidiHandler.isBidiRow(screenPos.row, this.lead.row)) { - offsetX = this.session.$bidiHandler.getPosLeft(screenPos.column); - screenPos.column = Math.round(offsetX / this.session.$bidiHandler.charWidths[0]); - } - else { - offsetX = screenPos.column * this.session.$bidiHandler.charWidths[0]; - } - } - if (this.$desiredColumn) - screenPos.column = this.$desiredColumn; - else - this.$desiredColumn = screenPos.column; - } - if (rows != 0 && this.session.lineWidgets && this.session.lineWidgets[this.lead.row]) { - var widget = this.session.lineWidgets[this.lead.row]; - if (rows < 0) - rows -= widget.rowsAbove || 0; - else if (rows > 0) - rows += widget.rowCount - (widget.rowsAbove || 0); - } - var docPos = this.session.screenToDocumentPosition(screenPos.row + rows, screenPos.column, offsetX); - if (rows !== 0 && chars === 0 && docPos.row === this.lead.row && docPos.column === this.lead.column) { - } - this.moveCursorTo(docPos.row, docPos.column + chars, chars === 0); - }; - Selection.prototype.moveCursorToPosition = function (position) { - this.moveCursorTo(position.row, position.column); - }; - Selection.prototype.moveCursorTo = function (row, column, keepDesiredColumn) { - var fold = this.session.getFoldAt(row, column, 1); - if (fold) { - row = fold.start.row; - column = fold.start.column; - } - this.$keepDesiredColumnOnChange = true; - var line = this.session.getLine(row); - if (/[\uDC00-\uDFFF]/.test(line.charAt(column)) && line.charAt(column - 1)) { - if (this.lead.row == row && this.lead.column == column + 1) - column = column - 1; - else - column = column + 1; - } - this.lead.setPosition(row, column); - this.$keepDesiredColumnOnChange = false; - if (!keepDesiredColumn) - this.$desiredColumn = null; - }; - Selection.prototype.moveCursorToScreen = function (row, column, keepDesiredColumn) { - var pos = this.session.screenToDocumentPosition(row, column); - this.moveCursorTo(pos.row, pos.column, keepDesiredColumn); - }; - Selection.prototype.detach = function () { - this.lead.detach(); - this.anchor.detach(); - }; - Selection.prototype.fromOrientedRange = function (range) { - this.setSelectionRange(range, range.cursor == range.start); - this.$desiredColumn = range.desiredColumn || this.$desiredColumn; - }; - Selection.prototype.toOrientedRange = function (range) { - var r = this.getRange(); - if (range) { - range.start.column = r.start.column; - range.start.row = r.start.row; - range.end.column = r.end.column; - range.end.row = r.end.row; - } - else { - range = r; - } - range.cursor = this.isBackwards() ? range.start : range.end; - range.desiredColumn = this.$desiredColumn; - return range; - }; - Selection.prototype.getRangeOfMovements = function (func) { - var start = this.getCursor(); - try { - func(this); - var end = this.getCursor(); - return Range.fromPoints(start, end); - } - catch (e) { - return Range.fromPoints(start, start); - } - finally { - this.moveCursorToPosition(start); - } - }; - Selection.prototype.toJSON = function () { - if (this.rangeCount) { - var data = this.ranges.map(function (r) { - var r1 = r.clone(); - r1.isBackwards = r.cursor == r.start; - return r1; - }); - } - else { - var data = this.getRange(); - data.isBackwards = this.isBackwards(); - } - return data; - }; - Selection.prototype.fromJSON = function (data) { - if (data.start == undefined) { - if (this.rangeList && data.length > 1) { - this.toSingleRange(data[0]); - for (var i = data.length; i--;) { - var r = Range.fromPoints(data[i].start, data[i].end); - if (data[i].isBackwards) - r.cursor = r.start; - this.addRange(r, true); - } - return; - } - else { - data = data[0]; - } - } - if (this.rangeList) - this.toSingleRange(data); - this.setSelectionRange(data, data.isBackwards); - }; - Selection.prototype.isEqual = function (data) { - if ((data.length || this.rangeCount) && data.length != this.rangeCount) - return false; - if (!data.length || !this.ranges) - return this.getRange().isEqual(data); - for (var i = this.ranges.length; i--;) { - if (!this.ranges[i].isEqual(data[i])) - return false; - } - return true; - }; - return Selection; -}()); -Selection.prototype.setSelectionAnchor = Selection.prototype.setAnchor; -Selection.prototype.getSelectionAnchor = Selection.prototype.getAnchor; -Selection.prototype.setSelectionRange = Selection.prototype.setRange; -oop.implement(Selection.prototype, EventEmitter); -exports.Selection = Selection; - -}); - -ace.define("ace/tokenizer",["require","exports","module","ace/lib/report_error"], function(require, exports, module){"use strict"; -var reportError = require("./lib/report_error").reportError; -var MAX_TOKEN_COUNT = 2000; -var Tokenizer = /** @class */ (function () { - function Tokenizer(rules) { - this.states = rules; - this.regExps = {}; - this.matchMappings = {}; - for (var key in this.states) { - var state = this.states[key]; - var ruleRegExps = []; - var matchTotal = 0; - var mapping = this.matchMappings[key] = { defaultToken: "text" }; - var flag = "g"; - var splitterRurles = []; - for (var i = 0; i < state.length; i++) { - var rule = state[i]; - if (rule.defaultToken) - mapping.defaultToken = rule.defaultToken; - if (rule.caseInsensitive && flag.indexOf("i") === -1) - flag += "i"; - if (rule.unicode && flag.indexOf("u") === -1) - flag += "u"; - if (rule.regex == null) - continue; - if (rule.regex instanceof RegExp) - rule.regex = rule.regex.toString().slice(1, -1); - var adjustedregex = rule.regex; - var matchcount = new RegExp("(?:(" + adjustedregex + ")|(.))").exec("a").length - 2; - if (Array.isArray(rule.token)) { - if (rule.token.length == 1 || matchcount == 1) { - rule.token = rule.token[0]; - } - else if (matchcount - 1 != rule.token.length) { - this.reportError("number of classes and regexp groups doesn't match", { - rule: rule, - groupCount: matchcount - 1 - }); - rule.token = rule.token[0]; - } - else { - rule.tokenArray = rule.token; - rule.token = null; - rule.onMatch = this.$arrayTokens; - } - } - else if (typeof rule.token == "function" && !rule.onMatch) { - if (matchcount > 1) - rule.onMatch = this.$applyToken; - else - rule.onMatch = rule.token; - } - if (matchcount > 1) { - if (/\\\d/.test(rule.regex)) { - adjustedregex = rule.regex.replace(/\\([0-9]+)/g, function (match, digit) { - return "\\" + (parseInt(digit, 10) + matchTotal + 1); - }); - } - else { - matchcount = 1; - adjustedregex = this.removeCapturingGroups(rule.regex); - } - if (!rule.splitRegex && typeof rule.token != "string") - splitterRurles.push(rule); // flag will be known only at the very end - } - mapping[matchTotal] = i; - matchTotal += matchcount; - ruleRegExps.push(adjustedregex); - if (!rule.onMatch) - rule.onMatch = null; - } - if (!ruleRegExps.length) { - mapping[0] = 0; - ruleRegExps.push("$"); - } - splitterRurles.forEach(function (rule) { - rule.splitRegex = this.createSplitterRegexp(rule.regex, flag); - }, this); - this.regExps[key] = new RegExp("(" + ruleRegExps.join(")|(") + ")|($)", flag); - } - } - Tokenizer.prototype.$setMaxTokenCount = function (m) { - MAX_TOKEN_COUNT = m | 0; - }; - Tokenizer.prototype.$applyToken = function (str) { - var values = this.splitRegex.exec(str).slice(1); - var types = this.token.apply(this, values); - if (typeof types === "string") - return [{ type: types, value: str }]; - var tokens = []; - for (var i = 0, l = types.length; i < l; i++) { - if (values[i]) - tokens[tokens.length] = { - type: types[i], - value: values[i] - }; - } - return tokens; - }; - Tokenizer.prototype.$arrayTokens = function (str) { - if (!str) - return []; - var values = this.splitRegex.exec(str); - if (!values) - return "text"; - var tokens = []; - var types = this.tokenArray; - for (var i = 0, l = types.length; i < l; i++) { - if (values[i + 1]) - tokens[tokens.length] = { - type: types[i], - value: values[i + 1] - }; - } - return tokens; - }; - Tokenizer.prototype.removeCapturingGroups = function (src) { - var r = src.replace(/\\.|\[(?:\\.|[^\\\]])*|\(\?[:=!<]|(\()/g, function (x, y) { return y ? "(?:" : x; }); - return r; - }; - Tokenizer.prototype.createSplitterRegexp = function (src, flag) { - if (src.indexOf("(?=") != -1) { - var stack = 0; - var inChClass = false; - var lastCapture = {}; - src.replace(/(\\.)|(\((?:\?[=!])?)|(\))|([\[\]])/g, function (m, esc, parenOpen, parenClose, square, index) { - if (inChClass) { - inChClass = square != "]"; - } - else if (square) { - inChClass = true; - } - else if (parenClose) { - if (stack == lastCapture.stack) { - lastCapture.end = index + 1; - lastCapture.stack = -1; - } - stack--; - } - else if (parenOpen) { - stack++; - if (parenOpen.length != 1) { - lastCapture.stack = stack; - lastCapture.start = index; - } - } - return m; - }); - if (lastCapture.end != null && /^\)*$/.test(src.substr(lastCapture.end))) - src = src.substring(0, lastCapture.start) + src.substr(lastCapture.end); - } - if (src.charAt(0) != "^") - src = "^" + src; - if (src.charAt(src.length - 1) != "$") - src += "$"; - return new RegExp(src, (flag || "").replace("g", "")); - }; - Tokenizer.prototype.getLineTokens = function (line, startState) { - if (startState && typeof startState != "string") { - var stack = startState.slice(0); - startState = stack[0]; - if (startState === "#tmp") { - stack.shift(); - startState = stack.shift(); - } - } - else - var stack = []; - var currentState = startState || "start"; - var state = this.states[currentState]; - if (!state) { - currentState = "start"; - state = this.states[currentState]; - } - var mapping = this.matchMappings[currentState]; - var re = this.regExps[currentState]; - re.lastIndex = 0; - var match, tokens = []; - var lastIndex = 0; - var matchAttempts = 0; - var token = { type: null, value: "" }; - while (match = re.exec(line)) { - var type = mapping.defaultToken; - var rule = null; - var value = match[0]; - var index = re.lastIndex; - if (index - value.length > lastIndex) { - var skipped = line.substring(lastIndex, index - value.length); - if (token.type == type) { - token.value += skipped; - } - else { - if (token.type) - tokens.push(token); - token = { type: type, value: skipped }; - } - } - for (var i = 0; i < match.length - 2; i++) { - if (match[i + 1] === undefined) - continue; - rule = state[mapping[i]]; - if (rule.onMatch) - type = rule.onMatch(value, currentState, stack, line); - else - type = rule.token; - if (rule.next) { - if (typeof rule.next == "string") { - currentState = rule.next; - } - else { - currentState = rule.next(currentState, stack); - } - state = this.states[currentState]; - if (!state) { - this.reportError("state doesn't exist", currentState); - currentState = "start"; - state = this.states[currentState]; - } - mapping = this.matchMappings[currentState]; - lastIndex = index; - re = this.regExps[currentState]; - re.lastIndex = index; - } - if (rule.consumeLineEnd) - lastIndex = index; - break; - } - if (value) { - if (typeof type === "string") { - if ((!rule || rule.merge !== false) && token.type === type) { - token.value += value; - } - else { - if (token.type) - tokens.push(token); - token = { type: type, value: value }; - } - } - else if (type) { - if (token.type) - tokens.push(token); - token = { type: null, value: "" }; - for (var i = 0; i < type.length; i++) - tokens.push(type[i]); - } - } - if (lastIndex == line.length) - break; - lastIndex = index; - if (matchAttempts++ > MAX_TOKEN_COUNT) { - if (matchAttempts > 2 * line.length) { - this.reportError("infinite loop with in ace tokenizer", { - startState: startState, - line: line - }); - } - while (lastIndex < line.length) { - if (token.type) - tokens.push(token); - token = { - value: line.substring(lastIndex, lastIndex += 500), - type: "overflow" - }; - } - currentState = "start"; - stack = []; - break; - } - } - if (token.type) - tokens.push(token); - if (stack.length > 1) { - if (stack[0] !== currentState) - stack.unshift("#tmp", currentState); - } - return { - tokens: tokens, - state: stack.length ? stack : currentState - }; - }; - return Tokenizer; -}()); -Tokenizer.prototype.reportError = reportError; -exports.Tokenizer = Tokenizer; - -}); - -ace.define("ace/mode/text_highlight_rules",["require","exports","module","ace/lib/deep_copy"], function(require, exports, module){"use strict"; -var deepCopy = require("../lib/deep_copy").deepCopy; -var TextHighlightRules = function () { - this.$rules = { - "start": [{ - token: "empty_line", - regex: '^$' - }, { - defaultToken: "text" - }] - }; -}; -(function () { - this.addRules = function (rules, prefix) { - if (!prefix) { - for (var key in rules) - this.$rules[key] = rules[key]; - return; - } - for (var key in rules) { - var state = rules[key]; - for (var i = 0; i < state.length; i++) { - var rule = state[i]; - if (rule.next || rule.onMatch) { - if (typeof rule.next == "string") { - if (rule.next.indexOf(prefix) !== 0) - rule.next = prefix + rule.next; - } - if (rule.nextState && rule.nextState.indexOf(prefix) !== 0) - rule.nextState = prefix + rule.nextState; - } - } - this.$rules[prefix + key] = state; - } - }; - this.getRules = function () { - return this.$rules; - }; - this.embedRules = function (HighlightRules, prefix, escapeRules, states, append) { - var embedRules = typeof HighlightRules == "function" - ? new HighlightRules().getRules() - : HighlightRules; - if (states) { - for (var i = 0; i < states.length; i++) - states[i] = prefix + states[i]; - } - else { - states = []; - for (var key in embedRules) - states.push(prefix + key); - } - this.addRules(embedRules, prefix); - if (escapeRules) { - var addRules = Array.prototype[append ? "push" : "unshift"]; - for (var i = 0; i < states.length; i++) - addRules.apply(this.$rules[states[i]], deepCopy(escapeRules)); - } - if (!this.$embeds) - this.$embeds = []; - this.$embeds.push(prefix); - }; - this.getEmbeds = function () { - return this.$embeds; - }; - var pushState = function (currentState, stack) { - if (currentState != "start" || stack.length) - stack.unshift(this.nextState, currentState); - return this.nextState; - }; - var popState = function (currentState, stack) { - stack.shift(); - return stack.shift() || "start"; - }; - this.normalizeRules = function () { - var id = 0; - var rules = this.$rules; - function processState(key) { - var state = rules[key]; - state.processed = true; - for (var i = 0; i < state.length; i++) { - var rule = state[i]; - var toInsert = null; - if (Array.isArray(rule)) { - toInsert = rule; - rule = {}; - } - if (!rule.regex && rule.start) { - rule.regex = rule.start; - if (!rule.next) - rule.next = []; - rule.next.push({ - defaultToken: rule.token - }, { - token: rule.token + ".end", - regex: rule.end || rule.start, - next: "pop" - }); - rule.token = rule.token + ".start"; - rule.push = true; - } - var next = rule.next || rule.push; - if (next && Array.isArray(next)) { - var stateName = rule.stateName; - if (!stateName) { - stateName = rule.token; - if (typeof stateName != "string") - stateName = stateName[0] || ""; - if (rules[stateName]) - stateName += id++; - } - rules[stateName] = next; - rule.next = stateName; - processState(stateName); - } - else if (next == "pop") { - rule.next = popState; - } - if (rule.push) { - rule.nextState = rule.next || rule.push; - rule.next = pushState; - delete rule.push; - } - if (rule.rules) { - for (var r in rule.rules) { - if (rules[r]) { - if (rules[r].push) - rules[r].push.apply(rules[r], rule.rules[r]); - } - else { - rules[r] = rule.rules[r]; - } - } - } - var includeName = typeof rule == "string" ? rule : rule.include; - if (includeName) { - if (includeName === "$self") - includeName = "start"; - if (Array.isArray(includeName)) - toInsert = includeName.map(function (x) { return rules[x]; }); - else - toInsert = rules[includeName]; - } - if (toInsert) { - var args = [i, 1].concat(toInsert); - if (rule.noEscape) - args = args.filter(function (x) { return !x.next; }); - state.splice.apply(state, args); - i--; - } - if (rule.keywordMap) { - rule.token = this.createKeywordMapper(rule.keywordMap, rule.defaultToken || "text", rule.caseInsensitive); - delete rule.defaultToken; - } - } - } - Object.keys(rules).forEach(processState, this); - }; - this.createKeywordMapper = function (map, defaultToken, ignoreCase, splitChar) { - var keywords = Object.create(null); - this.$keywordList = []; - Object.keys(map).forEach(function (className) { - var a = map[className]; - var list = a.split(splitChar || "|"); - for (var i = list.length; i--;) { - var word = list[i]; - this.$keywordList.push(word); - if (ignoreCase) - word = word.toLowerCase(); - keywords[word] = className; - } - }, this); - map = null; - return ignoreCase - ? function (value) { return keywords[value.toLowerCase()] || defaultToken; } - : function (value) { return keywords[value] || defaultToken; }; - }; - this.getKeywords = function () { - return this.$keywords; - }; -}).call(TextHighlightRules.prototype); -exports.TextHighlightRules = TextHighlightRules; - -}); - -ace.define("ace/mode/behaviour",["require","exports","module"], function(require, exports, module){"use strict"; -var Behaviour = function () { - this.$behaviours = {}; -}; -(function () { - this.add = function (name, action, callback) { - switch (undefined) { - case this.$behaviours: - this.$behaviours = {}; - case this.$behaviours[name]: - this.$behaviours[name] = {}; - } - this.$behaviours[name][action] = callback; - }; - this.addBehaviours = function (behaviours) { - for (var key in behaviours) { - for (var action in behaviours[key]) { - this.add(key, action, behaviours[key][action]); - } - } - }; - this.remove = function (name) { - if (this.$behaviours && this.$behaviours[name]) { - delete this.$behaviours[name]; - } - }; - this.inherit = function (mode, filter) { - if (typeof mode === "function") { - var behaviours = new mode().getBehaviours(filter); - } - else { - var behaviours = mode.getBehaviours(filter); - } - this.addBehaviours(behaviours); - }; - this.getBehaviours = function (filter) { - if (!filter) { - return this.$behaviours; - } - else { - var ret = {}; - for (var i = 0; i < filter.length; i++) { - if (this.$behaviours[filter[i]]) { - ret[filter[i]] = this.$behaviours[filter[i]]; - } - } - return ret; - } - }; -}).call(Behaviour.prototype); -exports.Behaviour = Behaviour; - -}); - -ace.define("ace/token_iterator",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; -var Range = require("./range").Range; -var TokenIterator = /** @class */ (function () { - function TokenIterator(session, initialRow, initialColumn) { - this.$session = session; - this.$row = initialRow; - this.$rowTokens = session.getTokens(initialRow); - var token = session.getTokenAt(initialRow, initialColumn); - this.$tokenIndex = token ? token.index : -1; - } - TokenIterator.prototype.stepBackward = function () { - this.$tokenIndex -= 1; - while (this.$tokenIndex < 0) { - this.$row -= 1; - if (this.$row < 0) { - this.$row = 0; - return null; - } - this.$rowTokens = this.$session.getTokens(this.$row); - this.$tokenIndex = this.$rowTokens.length - 1; - } - return this.$rowTokens[this.$tokenIndex]; - }; - TokenIterator.prototype.stepForward = function () { - this.$tokenIndex += 1; - var rowCount; - while (this.$tokenIndex >= this.$rowTokens.length) { - this.$row += 1; - if (!rowCount) - rowCount = this.$session.getLength(); - if (this.$row >= rowCount) { - this.$row = rowCount - 1; - return null; - } - this.$rowTokens = this.$session.getTokens(this.$row); - this.$tokenIndex = 0; - } - return this.$rowTokens[this.$tokenIndex]; - }; - TokenIterator.prototype.getCurrentToken = function () { - return this.$rowTokens[this.$tokenIndex]; - }; - TokenIterator.prototype.getCurrentTokenRow = function () { - return this.$row; - }; - TokenIterator.prototype.getCurrentTokenColumn = function () { - var rowTokens = this.$rowTokens; - var tokenIndex = this.$tokenIndex; - var column = rowTokens[tokenIndex].start; - if (column !== undefined) - return column; - column = 0; - while (tokenIndex > 0) { - tokenIndex -= 1; - column += rowTokens[tokenIndex].value.length; - } - return column; - }; - TokenIterator.prototype.getCurrentTokenPosition = function () { - return { row: this.$row, column: this.getCurrentTokenColumn() }; - }; - TokenIterator.prototype.getCurrentTokenRange = function () { - var token = this.$rowTokens[this.$tokenIndex]; - var column = this.getCurrentTokenColumn(); - return new Range(this.$row, column, this.$row, column + token.value.length); - }; - return TokenIterator; -}()); -exports.TokenIterator = TokenIterator; - -}); - -ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"], function(require, exports, module){"use strict"; -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; -var lang = require("../../lib/lang"); -var SAFE_INSERT_IN_TOKENS = ["text", "paren.rparen", "rparen", "paren", "punctuation.operator"]; -var SAFE_INSERT_BEFORE_TOKENS = ["text", "paren.rparen", "rparen", "paren", "punctuation.operator", "comment"]; -var context; -var contextCache = {}; -var defaultQuotes = { '"': '"', "'": "'" }; -var initContext = function (editor) { - var id = -1; - if (editor.multiSelect) { - id = editor.selection.index; - if (contextCache.rangeCount != editor.multiSelect.rangeCount) - contextCache = { rangeCount: editor.multiSelect.rangeCount }; - } - if (contextCache[id]) - return context = contextCache[id]; - context = contextCache[id] = { - autoInsertedBrackets: 0, - autoInsertedRow: -1, - autoInsertedLineEnd: "", - maybeInsertedBrackets: 0, - maybeInsertedRow: -1, - maybeInsertedLineStart: "", - maybeInsertedLineEnd: "" - }; -}; -var getWrapped = function (selection, selected, opening, closing) { - var rowDiff = selection.end.row - selection.start.row; - return { - text: opening + selected + closing, - selection: [ - 0, - selection.start.column + 1, - rowDiff, - selection.end.column + (rowDiff ? 0 : 1) - ] - }; -}; -var CstyleBehaviour = function (options) { - options = options || {}; - this.add("braces", "insertion", function (state, action, editor, session, text) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (text == '{') { - initContext(editor); - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && selected !== "{" && editor.getWrapBehavioursEnabled()) { - return getWrapped(selection, selected, '{', '}'); - } - else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - if (/[\]\}\)]/.test(line[cursor.column]) || editor.inMultiSelectMode || options.braces) { - CstyleBehaviour.recordAutoInsert(editor, session, "}"); - return { - text: '{}', - selection: [1, 1] - }; - } - else { - CstyleBehaviour.recordMaybeInsert(editor, session, "{"); - return { - text: '{', - selection: [1, 1] - }; - } - } - } - else if (text == '}') { - initContext(editor); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == '}') { - var matching = session.$findOpeningBracket('}', { column: cursor.column + 1, row: cursor.row }); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } - else if (text == "\n" || text == "\r\n") { - initContext(editor); - var closing = ""; - if (CstyleBehaviour.isMaybeInsertedClosing(cursor, line)) { - closing = lang.stringRepeat("}", context.maybeInsertedBrackets); - CstyleBehaviour.clearMaybeInsertedClosing(); - } - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === '}') { - var openBracePos = session.findMatchingBracket({ row: cursor.row, column: cursor.column + 1 }, '}'); - if (!openBracePos) - return null; - var next_indent = this.$getIndent(session.getLine(openBracePos.row)); - } - else if (closing) { - var next_indent = this.$getIndent(line); - } - else { - CstyleBehaviour.clearMaybeInsertedClosing(); - return; - } - var indent = next_indent + session.getTabString(); - return { - text: '\n' + indent + '\n' + next_indent + closing, - selection: [1, indent.length, 1, indent.length] - }; - } - else { - CstyleBehaviour.clearMaybeInsertedClosing(); - } - }); - this.add("braces", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '{') { - initContext(editor); - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.end.column, range.end.column + 1); - if (rightChar == '}') { - range.end.column++; - return range; - } - else { - context.maybeInsertedBrackets--; - } - } - }); - this.add("parens", "insertion", function (state, action, editor, session, text) { - if (text == '(') { - initContext(editor); - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && editor.getWrapBehavioursEnabled()) { - return getWrapped(selection, selected, '(', ')'); - } - else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - CstyleBehaviour.recordAutoInsert(editor, session, ")"); - return { - text: '()', - selection: [1, 1] - }; - } - } - else if (text == ')') { - initContext(editor); - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == ')') { - var matching = session.$findOpeningBracket(')', { column: cursor.column + 1, row: cursor.row }); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } - }); - this.add("parens", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '(') { - initContext(editor); - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == ')') { - range.end.column++; - return range; - } - } - }); - this.add("brackets", "insertion", function (state, action, editor, session, text) { - if (text == '[') { - initContext(editor); - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && editor.getWrapBehavioursEnabled()) { - return getWrapped(selection, selected, '[', ']'); - } - else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - CstyleBehaviour.recordAutoInsert(editor, session, "]"); - return { - text: '[]', - selection: [1, 1] - }; - } - } - else if (text == ']') { - initContext(editor); - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == ']') { - var matching = session.$findOpeningBracket(']', { column: cursor.column + 1, row: cursor.row }); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } - }); - this.add("brackets", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '[') { - initContext(editor); - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == ']') { - range.end.column++; - return range; - } - } - }); - this.add("string_dquotes", "insertion", function (state, action, editor, session, text) { - var quotes = session.$mode.$quotes || defaultQuotes; - if (text.length == 1 && quotes[text]) { - if (this.lineCommentStart && this.lineCommentStart.indexOf(text) != -1) - return; - initContext(editor); - var quote = text; - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && (selected.length != 1 || !quotes[selected]) && editor.getWrapBehavioursEnabled()) { - return getWrapped(selection, selected, quote, quote); - } - else if (!selected) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var leftChar = line.substring(cursor.column - 1, cursor.column); - var rightChar = line.substring(cursor.column, cursor.column + 1); - var token = session.getTokenAt(cursor.row, cursor.column); - var rightToken = session.getTokenAt(cursor.row, cursor.column + 1); - if (leftChar == "\\" && token && /escape/.test(token.type)) - return null; - var stringBefore = token && /string|escape/.test(token.type); - var stringAfter = !rightToken || /string|escape/.test(rightToken.type); - var pair; - if (rightChar == quote) { - pair = stringBefore !== stringAfter; - if (pair && /string\.end/.test(rightToken.type)) - pair = false; - } - else { - if (stringBefore && !stringAfter) - return null; // wrap string with different quote - if (stringBefore && stringAfter) - return null; // do not pair quotes inside strings - var wordRe = session.$mode.tokenRe; - wordRe.lastIndex = 0; - var isWordBefore = wordRe.test(leftChar); - wordRe.lastIndex = 0; - var isWordAfter = wordRe.test(rightChar); - var pairQuotesAfter = session.$mode.$pairQuotesAfter; - var shouldPairQuotes = pairQuotesAfter && pairQuotesAfter[quote] && pairQuotesAfter[quote].test(leftChar); - if ((!shouldPairQuotes && isWordBefore) || isWordAfter) - return null; // before or after alphanumeric - if (rightChar && !/[\s;,.})\]\\]/.test(rightChar)) - return null; // there is rightChar and it isn't closing - var charBefore = line[cursor.column - 2]; - if (leftChar == quote && (charBefore == quote || wordRe.test(charBefore))) - return null; - pair = true; - } - return { - text: pair ? quote + quote : "", - selection: [1, 1] - }; - } - } - }); - this.add("string_dquotes", "deletion", function (state, action, editor, session, range) { - var quotes = session.$mode.$quotes || defaultQuotes; - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && quotes.hasOwnProperty(selected)) { - initContext(editor); - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == selected) { - range.end.column++; - return range; - } - } - }); - if (options.closeDocComment !== false) { - this.add("doc comment end", "insertion", function (state, action, editor, session, text) { - if (state === "doc-start" && (text === "\n" || text === "\r\n") && editor.selection.isEmpty()) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var nextLine = session.doc.getLine(cursor.row + 1); - var indent = this.$getIndent(line); - if (/\s*\*/.test(nextLine)) { - if (/^\s*\*/.test(line)) { - return { - text: text + indent + "* ", - selection: [1, 3 + indent.length, 1, 3 + indent.length] - }; - } - else { - return { - text: text + indent + " * ", - selection: [1, 3 + indent.length, 1, 3 + indent.length] - }; - } - } - if (/\/\*\*/.test(line.substring(0, cursor.column))) { - return { - text: text + indent + " * " + text + " " + indent + "*/", - selection: [1, 4 + indent.length, 1, 4 + indent.length] - }; - } - } - }); - } -}; -CstyleBehaviour.isSaneInsertion = function (editor, session) { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - if (!this.$matchTokenType(iterator.getCurrentToken() || "text", SAFE_INSERT_IN_TOKENS)) { - if (/[)}\]]/.test(editor.session.getLine(cursor.row)[cursor.column])) - return true; - var iterator2 = new TokenIterator(session, cursor.row, cursor.column + 1); - if (!this.$matchTokenType(iterator2.getCurrentToken() || "text", SAFE_INSERT_IN_TOKENS)) - return false; - } - iterator.stepForward(); - return iterator.getCurrentTokenRow() !== cursor.row || - this.$matchTokenType(iterator.getCurrentToken() || "text", SAFE_INSERT_BEFORE_TOKENS); -}; -CstyleBehaviour.$matchTokenType = function (token, types) { - return types.indexOf(token.type || token) > -1; -}; -CstyleBehaviour.recordAutoInsert = function (editor, session, bracket) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (!this.isAutoInsertedClosing(cursor, line, context.autoInsertedLineEnd[0])) - context.autoInsertedBrackets = 0; - context.autoInsertedRow = cursor.row; - context.autoInsertedLineEnd = bracket + line.substr(cursor.column); - context.autoInsertedBrackets++; -}; -CstyleBehaviour.recordMaybeInsert = function (editor, session, bracket) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (!this.isMaybeInsertedClosing(cursor, line)) - context.maybeInsertedBrackets = 0; - context.maybeInsertedRow = cursor.row; - context.maybeInsertedLineStart = line.substr(0, cursor.column) + bracket; - context.maybeInsertedLineEnd = line.substr(cursor.column); - context.maybeInsertedBrackets++; -}; -CstyleBehaviour.isAutoInsertedClosing = function (cursor, line, bracket) { - return context.autoInsertedBrackets > 0 && - cursor.row === context.autoInsertedRow && - bracket === context.autoInsertedLineEnd[0] && - line.substr(cursor.column) === context.autoInsertedLineEnd; -}; -CstyleBehaviour.isMaybeInsertedClosing = function (cursor, line) { - return context.maybeInsertedBrackets > 0 && - cursor.row === context.maybeInsertedRow && - line.substr(cursor.column) === context.maybeInsertedLineEnd && - line.substr(0, cursor.column) == context.maybeInsertedLineStart; -}; -CstyleBehaviour.popAutoInsertedClosing = function () { - context.autoInsertedLineEnd = context.autoInsertedLineEnd.substr(1); - context.autoInsertedBrackets--; -}; -CstyleBehaviour.clearMaybeInsertedClosing = function () { - if (context) { - context.maybeInsertedBrackets = 0; - context.maybeInsertedRow = -1; - } -}; -oop.inherits(CstyleBehaviour, Behaviour); -exports.CstyleBehaviour = CstyleBehaviour; - -}); - -ace.define("ace/unicode",["require","exports","module"], function(require, exports, module){"use strict"; -var wordChars = [48, 9, 8, 25, 5, 0, 2, 25, 48, 0, 11, 0, 5, 0, 6, 22, 2, 30, 2, 457, 5, 11, 15, 4, 8, 0, 2, 0, 18, 116, 2, 1, 3, 3, 9, 0, 2, 2, 2, 0, 2, 19, 2, 82, 2, 138, 2, 4, 3, 155, 12, 37, 3, 0, 8, 38, 10, 44, 2, 0, 2, 1, 2, 1, 2, 0, 9, 26, 6, 2, 30, 10, 7, 61, 2, 9, 5, 101, 2, 7, 3, 9, 2, 18, 3, 0, 17, 58, 3, 100, 15, 53, 5, 0, 6, 45, 211, 57, 3, 18, 2, 5, 3, 11, 3, 9, 2, 1, 7, 6, 2, 2, 2, 7, 3, 1, 3, 21, 2, 6, 2, 0, 4, 3, 3, 8, 3, 1, 3, 3, 9, 0, 5, 1, 2, 4, 3, 11, 16, 2, 2, 5, 5, 1, 3, 21, 2, 6, 2, 1, 2, 1, 2, 1, 3, 0, 2, 4, 5, 1, 3, 2, 4, 0, 8, 3, 2, 0, 8, 15, 12, 2, 2, 8, 2, 2, 2, 21, 2, 6, 2, 1, 2, 4, 3, 9, 2, 2, 2, 2, 3, 0, 16, 3, 3, 9, 18, 2, 2, 7, 3, 1, 3, 21, 2, 6, 2, 1, 2, 4, 3, 8, 3, 1, 3, 2, 9, 1, 5, 1, 2, 4, 3, 9, 2, 0, 17, 1, 2, 5, 4, 2, 2, 3, 4, 1, 2, 0, 2, 1, 4, 1, 4, 2, 4, 11, 5, 4, 4, 2, 2, 3, 3, 0, 7, 0, 15, 9, 18, 2, 2, 7, 2, 2, 2, 22, 2, 9, 2, 4, 4, 7, 2, 2, 2, 3, 8, 1, 2, 1, 7, 3, 3, 9, 19, 1, 2, 7, 2, 2, 2, 22, 2, 9, 2, 4, 3, 8, 2, 2, 2, 3, 8, 1, 8, 0, 2, 3, 3, 9, 19, 1, 2, 7, 2, 2, 2, 22, 2, 15, 4, 7, 2, 2, 2, 3, 10, 0, 9, 3, 3, 9, 11, 5, 3, 1, 2, 17, 4, 23, 2, 8, 2, 0, 3, 6, 4, 0, 5, 5, 2, 0, 2, 7, 19, 1, 14, 57, 6, 14, 2, 9, 40, 1, 2, 0, 3, 1, 2, 0, 3, 0, 7, 3, 2, 6, 2, 2, 2, 0, 2, 0, 3, 1, 2, 12, 2, 2, 3, 4, 2, 0, 2, 5, 3, 9, 3, 1, 35, 0, 24, 1, 7, 9, 12, 0, 2, 0, 2, 0, 5, 9, 2, 35, 5, 19, 2, 5, 5, 7, 2, 35, 10, 0, 58, 73, 7, 77, 3, 37, 11, 42, 2, 0, 4, 328, 2, 3, 3, 6, 2, 0, 2, 3, 3, 40, 2, 3, 3, 32, 2, 3, 3, 6, 2, 0, 2, 3, 3, 14, 2, 56, 2, 3, 3, 66, 5, 0, 33, 15, 17, 84, 13, 619, 3, 16, 2, 25, 6, 74, 22, 12, 2, 6, 12, 20, 12, 19, 13, 12, 2, 2, 2, 1, 13, 51, 3, 29, 4, 0, 5, 1, 3, 9, 34, 2, 3, 9, 7, 87, 9, 42, 6, 69, 11, 28, 4, 11, 5, 11, 11, 39, 3, 4, 12, 43, 5, 25, 7, 10, 38, 27, 5, 62, 2, 28, 3, 10, 7, 9, 14, 0, 89, 75, 5, 9, 18, 8, 13, 42, 4, 11, 71, 55, 9, 9, 4, 48, 83, 2, 2, 30, 14, 230, 23, 280, 3, 5, 3, 37, 3, 5, 3, 7, 2, 0, 2, 0, 2, 0, 2, 30, 3, 52, 2, 6, 2, 0, 4, 2, 2, 6, 4, 3, 3, 5, 5, 12, 6, 2, 2, 6, 67, 1, 20, 0, 29, 0, 14, 0, 17, 4, 60, 12, 5, 0, 4, 11, 18, 0, 5, 0, 3, 9, 2, 0, 4, 4, 7, 0, 2, 0, 2, 0, 2, 3, 2, 10, 3, 3, 6, 4, 5, 0, 53, 1, 2684, 46, 2, 46, 2, 132, 7, 6, 15, 37, 11, 53, 10, 0, 17, 22, 10, 6, 2, 6, 2, 6, 2, 6, 2, 6, 2, 6, 2, 6, 2, 6, 2, 31, 48, 0, 470, 1, 36, 5, 2, 4, 6, 1, 5, 85, 3, 1, 3, 2, 2, 89, 2, 3, 6, 40, 4, 93, 18, 23, 57, 15, 513, 6581, 75, 20939, 53, 1164, 68, 45, 3, 268, 4, 27, 21, 31, 3, 13, 13, 1, 2, 24, 9, 69, 11, 1, 38, 8, 3, 102, 3, 1, 111, 44, 25, 51, 13, 68, 12, 9, 7, 23, 4, 0, 5, 45, 3, 35, 13, 28, 4, 64, 15, 10, 39, 54, 10, 13, 3, 9, 7, 22, 4, 1, 5, 66, 25, 2, 227, 42, 2, 1, 3, 9, 7, 11171, 13, 22, 5, 48, 8453, 301, 3, 61, 3, 105, 39, 6, 13, 4, 6, 11, 2, 12, 2, 4, 2, 0, 2, 1, 2, 1, 2, 107, 34, 362, 19, 63, 3, 53, 41, 11, 5, 15, 17, 6, 13, 1, 25, 2, 33, 4, 2, 134, 20, 9, 8, 25, 5, 0, 2, 25, 12, 88, 4, 5, 3, 5, 3, 5, 3, 2]; -var code = 0; -var str = []; -for (var i = 0; i < wordChars.length; i += 2) { - str.push(code += wordChars[i]); - if (wordChars[i + 1]) - str.push(45, code += wordChars[i + 1]); -} -exports.wordChars = String.fromCharCode.apply(null, str); - -}); - -ace.define("ace/mode/text",["require","exports","module","ace/config","ace/tokenizer","ace/mode/text_highlight_rules","ace/mode/behaviour/cstyle","ace/unicode","ace/lib/lang","ace/token_iterator","ace/range"], function(require, exports, module){"use strict"; -var config = require("../config"); -var Tokenizer = require("../tokenizer").Tokenizer; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; -var unicode = require("../unicode"); -var lang = require("../lib/lang"); -var TokenIterator = require("../token_iterator").TokenIterator; -var Range = require("../range").Range; -var Mode = function () { - this.HighlightRules = TextHighlightRules; -}; -(function () { - this.$defaultBehaviour = new CstyleBehaviour(); - this.tokenRe = new RegExp("^[" + unicode.wordChars + "\\$_]+", "g"); - this.nonTokenRe = new RegExp("^(?:[^" + unicode.wordChars + "\\$_]|\\s])+", "g"); - this.getTokenizer = function () { - if (!this.$tokenizer) { - this.$highlightRules = this.$highlightRules || new this.HighlightRules(this.$highlightRuleConfig); - this.$tokenizer = new Tokenizer(this.$highlightRules.getRules()); - } - return this.$tokenizer; - }; - this.lineCommentStart = ""; - this.blockComment = ""; - this.toggleCommentLines = function (state, session, startRow, endRow) { - var doc = session.doc; - var ignoreBlankLines = true; - var shouldRemove = true; - var minIndent = Infinity; - var tabSize = session.getTabSize(); - var insertAtTabStop = false; - if (!this.lineCommentStart) { - if (!this.blockComment) - return false; - var lineCommentStart = this.blockComment.start; - var lineCommentEnd = this.blockComment.end; - var regexpStart = new RegExp("^(\\s*)(?:" + lang.escapeRegExp(lineCommentStart) + ")"); - var regexpEnd = new RegExp("(?:" + lang.escapeRegExp(lineCommentEnd) + ")\\s*$"); - var comment = function (line, i) { - if (testRemove(line, i)) - return; - if (!ignoreBlankLines || /\S/.test(line)) { - doc.insertInLine({ row: i, column: line.length }, lineCommentEnd); - doc.insertInLine({ row: i, column: minIndent }, lineCommentStart); - } - }; - var uncomment = function (line, i) { - var m; - if (m = line.match(regexpEnd)) - doc.removeInLine(i, line.length - m[0].length, line.length); - if (m = line.match(regexpStart)) - doc.removeInLine(i, m[1].length, m[0].length); - }; - var testRemove = function (line, row) { - if (regexpStart.test(line)) - return true; - var tokens = session.getTokens(row); - for (var i = 0; i < tokens.length; i++) { - if (tokens[i].type === "comment") - return true; - } - }; - } - else { - if (Array.isArray(this.lineCommentStart)) { - var regexpStart = this.lineCommentStart.map(lang.escapeRegExp).join("|"); - var lineCommentStart = this.lineCommentStart[0]; - } - else { - var regexpStart = lang.escapeRegExp(this.lineCommentStart); - var lineCommentStart = this.lineCommentStart; - } - regexpStart = new RegExp("^(\\s*)(?:" + regexpStart + ") ?"); - insertAtTabStop = session.getUseSoftTabs(); - var uncomment = function (line, i) { - var m = line.match(regexpStart); - if (!m) - return; - var start = m[1].length, end = m[0].length; - if (!shouldInsertSpace(line, start, end) && m[0][end - 1] == " ") - end--; - doc.removeInLine(i, start, end); - }; - var commentWithSpace = lineCommentStart + " "; - var comment = function (line, i) { - if (!ignoreBlankLines || /\S/.test(line)) { - if (shouldInsertSpace(line, minIndent, minIndent)) - doc.insertInLine({ row: i, column: minIndent }, commentWithSpace); - else - doc.insertInLine({ row: i, column: minIndent }, lineCommentStart); - } - }; - var testRemove = function (line, i) { - return regexpStart.test(line); - }; - var shouldInsertSpace = function (line, before, after) { - var spaces = 0; - while (before-- && line.charAt(before) == " ") - spaces++; - if (spaces % tabSize != 0) - return false; - var spaces = 0; - while (line.charAt(after++) == " ") - spaces++; - if (tabSize > 2) - return spaces % tabSize != tabSize - 1; - else - return spaces % tabSize == 0; - }; - } - function iter(fun) { - for (var i = startRow; i <= endRow; i++) - fun(doc.getLine(i), i); - } - var minEmptyLength = Infinity; - iter(function (line, i) { - var indent = line.search(/\S/); - if (indent !== -1) { - if (indent < minIndent) - minIndent = indent; - if (shouldRemove && !testRemove(line, i)) - shouldRemove = false; - } - else if (minEmptyLength > line.length) { - minEmptyLength = line.length; - } - }); - if (minIndent == Infinity) { - minIndent = minEmptyLength; - ignoreBlankLines = false; - shouldRemove = false; - } - if (insertAtTabStop && minIndent % tabSize != 0) - minIndent = Math.floor(minIndent / tabSize) * tabSize; - iter(shouldRemove ? uncomment : comment); - }; - this.toggleBlockComment = function (state, session, range, cursor) { - var comment = this.blockComment; - if (!comment) - return; - if (!comment.start && comment[0]) - comment = comment[0]; - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - var sel = session.selection; - var initialRange = session.selection.toOrientedRange(); - var startRow, colDiff; - if (token && /comment/.test(token.type)) { - var startRange, endRange; - while (token && /comment/.test(token.type)) { - var i = token.value.indexOf(comment.start); - if (i != -1) { - var row = iterator.getCurrentTokenRow(); - var column = iterator.getCurrentTokenColumn() + i; - startRange = new Range(row, column, row, column + comment.start.length); - break; - } - token = iterator.stepBackward(); - } - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - while (token && /comment/.test(token.type)) { - var i = token.value.indexOf(comment.end); - if (i != -1) { - var row = iterator.getCurrentTokenRow(); - var column = iterator.getCurrentTokenColumn() + i; - endRange = new Range(row, column, row, column + comment.end.length); - break; - } - token = iterator.stepForward(); - } - if (endRange) - session.remove(endRange); - if (startRange) { - session.remove(startRange); - startRow = startRange.start.row; - colDiff = -comment.start.length; - } - } - else { - colDiff = comment.start.length; - startRow = range.start.row; - session.insert(range.end, comment.end); - session.insert(range.start, comment.start); - } - if (initialRange.start.row == startRow) - initialRange.start.column += colDiff; - if (initialRange.end.row == startRow) - initialRange.end.column += colDiff; - session.selection.fromOrientedRange(initialRange); - }; - this.getNextLineIndent = function (state, line, tab) { - return this.$getIndent(line); - }; - this.checkOutdent = function (state, line, input) { - return false; - }; - this.autoOutdent = function (state, doc, row) { - }; - this.$getIndent = function (line) { - return line.match(/^\s*/)[0]; - }; - this.createWorker = function (session) { - return null; - }; - this.createModeDelegates = function (mapping) { - this.$embeds = []; - this.$modes = {}; - for (var i in mapping) { - if (mapping[i]) { - var Mode = mapping[i]; - var id = Mode.prototype.$id; - var mode = config.$modes[id]; - if (!mode) - config.$modes[id] = mode = new Mode(); - if (!config.$modes[i]) - config.$modes[i] = mode; - this.$embeds.push(i); - this.$modes[i] = mode; - } - } - var delegations = ["toggleBlockComment", "toggleCommentLines", "getNextLineIndent", - "checkOutdent", "autoOutdent", "transformAction", "getCompletions"]; - for (var i = 0; i < delegations.length; i++) { - (function (scope) { - var functionName = delegations[i]; - var defaultHandler = scope[functionName]; - scope[delegations[i]] = function () { - return this.$delegator(functionName, arguments, defaultHandler); - }; - }(this)); - } - }; - this.$delegator = function (method, args, defaultHandler) { - var state = args[0] || "start"; - if (typeof state != "string") { - if (Array.isArray(state[2])) { - var language = state[2][state[2].length - 1]; - var mode = this.$modes[language]; - if (mode) - return mode[method].apply(mode, [state[1]].concat([].slice.call(args, 1))); - } - state = state[0] || "start"; - } - for (var i = 0; i < this.$embeds.length; i++) { - if (!this.$modes[this.$embeds[i]]) - continue; - var split = state.split(this.$embeds[i]); - if (!split[0] && split[1]) { - args[0] = split[1]; - var mode = this.$modes[this.$embeds[i]]; - return mode[method].apply(mode, args); - } - } - var ret = defaultHandler.apply(this, args); - return defaultHandler ? ret : undefined; - }; - this.transformAction = function (state, action, editor, session, param) { - if (this.$behaviour) { - var behaviours = this.$behaviour.getBehaviours(); - for (var key in behaviours) { - if (behaviours[key][action]) { - var ret = behaviours[key][action].apply(this, arguments); - if (ret) { - return ret; - } - } - } - } - }; - this.getKeywords = function (append) { - if (!this.completionKeywords) { - var rules = this.$tokenizer.rules; - var completionKeywords = []; - for (var rule in rules) { - var ruleItr = rules[rule]; - for (var r = 0, l = ruleItr.length; r < l; r++) { - if (typeof ruleItr[r].token === "string") { - if (/keyword|support|storage/.test(ruleItr[r].token)) - completionKeywords.push(ruleItr[r].regex); - } - else if (typeof ruleItr[r].token === "object") { - for (var a = 0, aLength = ruleItr[r].token.length; a < aLength; a++) { - if (/keyword|support|storage/.test(ruleItr[r].token[a])) { - var rule = ruleItr[r].regex.match(/\(.+?\)/g)[a]; - completionKeywords.push(rule.substr(1, rule.length - 2)); - } - } - } - } - } - this.completionKeywords = completionKeywords; - } - if (!append) - return this.$keywordList; - return completionKeywords.concat(this.$keywordList || []); - }; - this.$createKeywordList = function () { - if (!this.$highlightRules) - this.getTokenizer(); - return this.$keywordList = this.$highlightRules.$keywordList || []; - }; - this.getCompletions = function (state, session, pos, prefix) { - var keywords = this.$keywordList || this.$createKeywordList(); - return keywords.map(function (word) { - return { - name: word, - value: word, - score: 0, - meta: "keyword" - }; - }); - }; - this.$id = "ace/mode/text"; -}).call(Mode.prototype); -exports.Mode = Mode; - -}); - -ace.define("ace/apply_delta",["require","exports","module"], function(require, exports, module){"use strict"; -function throwDeltaError(delta, errorText) { - console.log("Invalid Delta:", delta); - throw "Invalid Delta: " + errorText; -} -function positionInDocument(docLines, position) { - return position.row >= 0 && position.row < docLines.length && - position.column >= 0 && position.column <= docLines[position.row].length; -} -function validateDelta(docLines, delta) { - if (delta.action != "insert" && delta.action != "remove") - throwDeltaError(delta, "delta.action must be 'insert' or 'remove'"); - if (!(delta.lines instanceof Array)) - throwDeltaError(delta, "delta.lines must be an Array"); - if (!delta.start || !delta.end) - throwDeltaError(delta, "delta.start/end must be an present"); - var start = delta.start; - if (!positionInDocument(docLines, delta.start)) - throwDeltaError(delta, "delta.start must be contained in document"); - var end = delta.end; - if (delta.action == "remove" && !positionInDocument(docLines, end)) - throwDeltaError(delta, "delta.end must contained in document for 'remove' actions"); - var numRangeRows = end.row - start.row; - var numRangeLastLineChars = (end.column - (numRangeRows == 0 ? start.column : 0)); - if (numRangeRows != delta.lines.length - 1 || delta.lines[numRangeRows].length != numRangeLastLineChars) - throwDeltaError(delta, "delta.range must match delta lines"); -} -exports.applyDelta = function (docLines, delta, doNotValidate) { - var row = delta.start.row; - var startColumn = delta.start.column; - var line = docLines[row] || ""; - switch (delta.action) { - case "insert": - var lines = delta.lines; - if (lines.length === 1) { - docLines[row] = line.substring(0, startColumn) + delta.lines[0] + line.substring(startColumn); - } - else { - var args = [row, 1].concat(delta.lines); - docLines.splice.apply(docLines, args); - docLines[row] = line.substring(0, startColumn) + docLines[row]; - docLines[row + delta.lines.length - 1] += line.substring(startColumn); - } - break; - case "remove": - var endColumn = delta.end.column; - var endRow = delta.end.row; - if (row === endRow) { - docLines[row] = line.substring(0, startColumn) + line.substring(endColumn); - } - else { - docLines.splice(row, endRow - row + 1, line.substring(0, startColumn) + docLines[endRow].substring(endColumn)); - } - break; - } -}; - -}); - -ace.define("ace/anchor",["require","exports","module","ace/lib/oop","ace/lib/event_emitter"], function(require, exports, module){"use strict"; -var oop = require("./lib/oop"); -var EventEmitter = require("./lib/event_emitter").EventEmitter; -var Anchor = /** @class */ (function () { - function Anchor(doc, row, column) { - this.$onChange = this.onChange.bind(this); - this.attach(doc); - if (typeof column == "undefined") - this.setPosition(row.row, row.column); - else - this.setPosition(row, column); - } - Anchor.prototype.getPosition = function () { - return this.$clipPositionToDocument(this.row, this.column); - }; - Anchor.prototype.getDocument = function () { - return this.document; - }; - Anchor.prototype.onChange = function (delta) { - if (delta.start.row == delta.end.row && delta.start.row != this.row) - return; - if (delta.start.row > this.row) - return; - var point = $getTransformedPoint(delta, { row: this.row, column: this.column }, this.$insertRight); - this.setPosition(point.row, point.column, true); - }; - Anchor.prototype.setPosition = function (row, column, noClip) { - var pos; - if (noClip) { - pos = { - row: row, - column: column - }; - } - else { - pos = this.$clipPositionToDocument(row, column); - } - if (this.row == pos.row && this.column == pos.column) - return; - var old = { - row: this.row, - column: this.column - }; - this.row = pos.row; - this.column = pos.column; - this._signal("change", { - old: old, - value: pos - }); - }; - Anchor.prototype.detach = function () { - this.document.off("change", this.$onChange); - }; - Anchor.prototype.attach = function (doc) { - this.document = doc || this.document; - this.document.on("change", this.$onChange); - }; - Anchor.prototype.$clipPositionToDocument = function (row, column) { - var pos = {}; - if (row >= this.document.getLength()) { - pos.row = Math.max(0, this.document.getLength() - 1); - pos.column = this.document.getLine(pos.row).length; - } - else if (row < 0) { - pos.row = 0; - pos.column = 0; - } - else { - pos.row = row; - pos.column = Math.min(this.document.getLine(pos.row).length, Math.max(0, column)); - } - if (column < 0) - pos.column = 0; - return pos; - }; - return Anchor; -}()); -Anchor.prototype.$insertRight = false; -oop.implement(Anchor.prototype, EventEmitter); -function $pointsInOrder(point1, point2, equalPointsInOrder) { - var bColIsAfter = equalPointsInOrder ? point1.column <= point2.column : point1.column < point2.column; - return (point1.row < point2.row) || (point1.row == point2.row && bColIsAfter); -} -function $getTransformedPoint(delta, point, moveIfEqual) { - var deltaIsInsert = delta.action == "insert"; - var deltaRowShift = (deltaIsInsert ? 1 : -1) * (delta.end.row - delta.start.row); - var deltaColShift = (deltaIsInsert ? 1 : -1) * (delta.end.column - delta.start.column); - var deltaStart = delta.start; - var deltaEnd = deltaIsInsert ? deltaStart : delta.end; // Collapse insert range. - if ($pointsInOrder(point, deltaStart, moveIfEqual)) { - return { - row: point.row, - column: point.column - }; - } - if ($pointsInOrder(deltaEnd, point, !moveIfEqual)) { - return { - row: point.row + deltaRowShift, - column: point.column + (point.row == deltaEnd.row ? deltaColShift : 0) - }; - } - return { - row: deltaStart.row, - column: deltaStart.column - }; -} -exports.Anchor = Anchor; - -}); - -ace.define("ace/document",["require","exports","module","ace/lib/oop","ace/apply_delta","ace/lib/event_emitter","ace/range","ace/anchor"], function(require, exports, module){"use strict"; -var oop = require("./lib/oop"); -var applyDelta = require("./apply_delta").applyDelta; -var EventEmitter = require("./lib/event_emitter").EventEmitter; -var Range = require("./range").Range; -var Anchor = require("./anchor").Anchor; -var Document = /** @class */ (function () { - function Document(textOrLines) { - this.$lines = [""]; - if (textOrLines.length === 0) { - this.$lines = [""]; - } - else if (Array.isArray(textOrLines)) { - this.insertMergedLines({ row: 0, column: 0 }, textOrLines); - } - else { - this.insert({ row: 0, column: 0 }, textOrLines); - } - } - Document.prototype.setValue = function (text) { - var len = this.getLength() - 1; - this.remove(new Range(0, 0, len, this.getLine(len).length)); - this.insert({ row: 0, column: 0 }, text || ""); - }; - Document.prototype.getValue = function () { - return this.getAllLines().join(this.getNewLineCharacter()); - }; - Document.prototype.createAnchor = function (row, column) { - return new Anchor(this, row, column); - }; - Document.prototype.$detectNewLine = function (text) { - var match = text.match(/^.*?(\r\n|\r|\n)/m); - this.$autoNewLine = match ? match[1] : "\n"; - this._signal("changeNewLineMode"); - }; - Document.prototype.getNewLineCharacter = function () { - switch (this.$newLineMode) { - case "windows": - return "\r\n"; - case "unix": - return "\n"; - default: - return this.$autoNewLine || "\n"; - } - }; - Document.prototype.setNewLineMode = function (newLineMode) { - if (this.$newLineMode === newLineMode) - return; - this.$newLineMode = newLineMode; - this._signal("changeNewLineMode"); - }; - Document.prototype.getNewLineMode = function () { - return this.$newLineMode; - }; - Document.prototype.isNewLine = function (text) { - return (text == "\r\n" || text == "\r" || text == "\n"); - }; - Document.prototype.getLine = function (row) { - return this.$lines[row] || ""; - }; - Document.prototype.getLines = function (firstRow, lastRow) { - return this.$lines.slice(firstRow, lastRow + 1); - }; - Document.prototype.getAllLines = function () { - return this.getLines(0, this.getLength()); - }; - Document.prototype.getLength = function () { - return this.$lines.length; - }; - Document.prototype.getTextRange = function (range) { - return this.getLinesForRange(range).join(this.getNewLineCharacter()); - }; - Document.prototype.getLinesForRange = function (range) { - var lines; - if (range.start.row === range.end.row) { - lines = [this.getLine(range.start.row).substring(range.start.column, range.end.column)]; - } - else { - lines = this.getLines(range.start.row, range.end.row); - lines[0] = (lines[0] || "").substring(range.start.column); - var l = lines.length - 1; - if (range.end.row - range.start.row == l) - lines[l] = lines[l].substring(0, range.end.column); - } - return lines; - }; - Document.prototype.insertLines = function (row, lines) { - console.warn("Use of document.insertLines is deprecated. Use the insertFullLines method instead."); - return this.insertFullLines(row, lines); - }; - Document.prototype.removeLines = function (firstRow, lastRow) { - console.warn("Use of document.removeLines is deprecated. Use the removeFullLines method instead."); - return this.removeFullLines(firstRow, lastRow); - }; - Document.prototype.insertNewLine = function (position) { - console.warn("Use of document.insertNewLine is deprecated. Use insertMergedLines(position, ['', '']) instead."); - return this.insertMergedLines(position, ["", ""]); - }; - Document.prototype.insert = function (position, text) { - if (this.getLength() <= 1) - this.$detectNewLine(text); - return this.insertMergedLines(position, this.$split(text)); - }; - Document.prototype.insertInLine = function (position, text) { - var start = this.clippedPos(position.row, position.column); - var end = this.pos(position.row, position.column + text.length); - this.applyDelta({ - start: start, - end: end, - action: "insert", - lines: [text] - }, true); - return this.clonePos(end); - }; - Document.prototype.clippedPos = function (row, column) { - var length = this.getLength(); - if (row === undefined) { - row = length; - } - else if (row < 0) { - row = 0; - } - else if (row >= length) { - row = length - 1; - column = undefined; - } - var line = this.getLine(row); - if (column == undefined) - column = line.length; - column = Math.min(Math.max(column, 0), line.length); - return { row: row, column: column }; - }; - Document.prototype.clonePos = function (pos) { - return { row: pos.row, column: pos.column }; - }; - Document.prototype.pos = function (row, column) { - return { row: row, column: column }; - }; - Document.prototype.$clipPosition = function (position) { - var length = this.getLength(); - if (position.row >= length) { - position.row = Math.max(0, length - 1); - position.column = this.getLine(length - 1).length; - } - else { - position.row = Math.max(0, position.row); - position.column = Math.min(Math.max(position.column, 0), this.getLine(position.row).length); - } - return position; - }; - Document.prototype.insertFullLines = function (row, lines) { - row = Math.min(Math.max(row, 0), this.getLength()); - var column = 0; - if (row < this.getLength()) { - lines = lines.concat([""]); - column = 0; - } - else { - lines = [""].concat(lines); - row--; - column = this.$lines[row].length; - } - this.insertMergedLines({ row: row, column: column }, lines); - }; - Document.prototype.insertMergedLines = function (position, lines) { - var start = this.clippedPos(position.row, position.column); - var end = { - row: start.row + lines.length - 1, - column: (lines.length == 1 ? start.column : 0) + lines[lines.length - 1].length - }; - this.applyDelta({ - start: start, - end: end, - action: "insert", - lines: lines - }); - return this.clonePos(end); - }; - Document.prototype.remove = function (range) { - var start = this.clippedPos(range.start.row, range.start.column); - var end = this.clippedPos(range.end.row, range.end.column); - this.applyDelta({ - start: start, - end: end, - action: "remove", - lines: this.getLinesForRange({ start: start, end: end }) - }); - return this.clonePos(start); - }; - Document.prototype.removeInLine = function (row, startColumn, endColumn) { - var start = this.clippedPos(row, startColumn); - var end = this.clippedPos(row, endColumn); - this.applyDelta({ - start: start, - end: end, - action: "remove", - lines: this.getLinesForRange({ start: start, end: end }) - }, true); - return this.clonePos(start); - }; - Document.prototype.removeFullLines = function (firstRow, lastRow) { - firstRow = Math.min(Math.max(0, firstRow), this.getLength() - 1); - lastRow = Math.min(Math.max(0, lastRow), this.getLength() - 1); - var deleteFirstNewLine = lastRow == this.getLength() - 1 && firstRow > 0; - var deleteLastNewLine = lastRow < this.getLength() - 1; - var startRow = (deleteFirstNewLine ? firstRow - 1 : firstRow); - var startCol = (deleteFirstNewLine ? this.getLine(startRow).length : 0); - var endRow = (deleteLastNewLine ? lastRow + 1 : lastRow); - var endCol = (deleteLastNewLine ? 0 : this.getLine(endRow).length); - var range = new Range(startRow, startCol, endRow, endCol); - var deletedLines = this.$lines.slice(firstRow, lastRow + 1); - this.applyDelta({ - start: range.start, - end: range.end, - action: "remove", - lines: this.getLinesForRange(range) - }); - return deletedLines; - }; - Document.prototype.removeNewLine = function (row) { - if (row < this.getLength() - 1 && row >= 0) { - this.applyDelta({ - start: this.pos(row, this.getLine(row).length), - end: this.pos(row + 1, 0), - action: "remove", - lines: ["", ""] - }); - } - }; - Document.prototype.replace = function (range, text) { - if (!(range instanceof Range)) - range = Range.fromPoints(range.start, range.end); - if (text.length === 0 && range.isEmpty()) - return range.start; - if (text == this.getTextRange(range)) - return range.end; - this.remove(range); - var end; - if (text) { - end = this.insert(range.start, text); - } - else { - end = range.start; - } - return end; - }; - Document.prototype.applyDeltas = function (deltas) { - for (var i = 0; i < deltas.length; i++) { - this.applyDelta(deltas[i]); - } - }; - Document.prototype.revertDeltas = function (deltas) { - for (var i = deltas.length - 1; i >= 0; i--) { - this.revertDelta(deltas[i]); - } - }; - Document.prototype.applyDelta = function (delta, doNotValidate) { - var isInsert = delta.action == "insert"; - if (isInsert ? delta.lines.length <= 1 && !delta.lines[0] - : !Range.comparePoints(delta.start, delta.end)) { - return; - } - if (isInsert && delta.lines.length > 20000) { - this.$splitAndapplyLargeDelta(delta, 20000); - } - else { - applyDelta(this.$lines, delta, doNotValidate); - this._signal("change", delta); - } - }; - Document.prototype.$safeApplyDelta = function (delta) { - var docLength = this.$lines.length; - if (delta.action == "remove" && delta.start.row < docLength && delta.end.row < docLength - || delta.action == "insert" && delta.start.row <= docLength) { - this.applyDelta(delta); - } - }; - Document.prototype.$splitAndapplyLargeDelta = function (delta, MAX) { - var lines = delta.lines; - var l = lines.length - MAX + 1; - var row = delta.start.row; - var column = delta.start.column; - for (var from = 0, to = 0; from < l; from = to) { - to += MAX - 1; - var chunk = lines.slice(from, to); - chunk.push(""); - this.applyDelta({ - start: this.pos(row + from, column), - end: this.pos(row + to, column = 0), - action: delta.action, - lines: chunk - }, true); - } - delta.lines = lines.slice(from); - delta.start.row = row + from; - delta.start.column = column; - this.applyDelta(delta, true); - }; - Document.prototype.revertDelta = function (delta) { - this.$safeApplyDelta({ - start: this.clonePos(delta.start), - end: this.clonePos(delta.end), - action: (delta.action == "insert" ? "remove" : "insert"), - lines: delta.lines.slice() - }); - }; - Document.prototype.indexToPosition = function (index, startRow) { - var lines = this.$lines || this.getAllLines(); - var newlineLength = this.getNewLineCharacter().length; - for (var i = startRow || 0, l = lines.length; i < l; i++) { - index -= lines[i].length + newlineLength; - if (index < 0) - return { row: i, column: index + lines[i].length + newlineLength }; - } - return { row: l - 1, column: index + lines[l - 1].length + newlineLength }; - }; - Document.prototype.positionToIndex = function (pos, startRow) { - var lines = this.$lines || this.getAllLines(); - var newlineLength = this.getNewLineCharacter().length; - var index = 0; - var row = Math.min(pos.row, lines.length); - for (var i = startRow || 0; i < row; ++i) - index += lines[i].length + newlineLength; - return index + pos.column; - }; - Document.prototype.$split = function (text) { - return text.split(/\r\n|\r|\n/); - }; - return Document; -}()); -Document.prototype.$autoNewLine = ""; -Document.prototype.$newLineMode = "auto"; -oop.implement(Document.prototype, EventEmitter); -exports.Document = Document; - -}); - -ace.define("ace/background_tokenizer",["require","exports","module","ace/lib/oop","ace/lib/event_emitter"], function(require, exports, module){"use strict"; -var oop = require("./lib/oop"); -var EventEmitter = require("./lib/event_emitter").EventEmitter; -var BackgroundTokenizer = /** @class */ (function () { - function BackgroundTokenizer(tokenizer, editor) { - this.running = false; - this.lines = []; - this.states = []; - this.currentLine = 0; - this.tokenizer = tokenizer; - var self = this; - this.$worker = function () { - if (!self.running) { - return; - } - var workerStart = new Date(); - var currentLine = self.currentLine; - var endLine = -1; - var doc = self.doc; - var startLine = currentLine; - while (self.lines[currentLine]) - currentLine++; - var len = doc.getLength(); - var processedLines = 0; - self.running = false; - while (currentLine < len) { - self.$tokenizeRow(currentLine); - endLine = currentLine; - do { - currentLine++; - } while (self.lines[currentLine]); - processedLines++; - if ((processedLines % 5 === 0) && (new Date() - workerStart) > 20) { - self.running = setTimeout(self.$worker, 20); - break; - } - } - self.currentLine = currentLine; - if (endLine == -1) - endLine = currentLine; - if (startLine <= endLine) - self.fireUpdateEvent(startLine, endLine); - }; - } - BackgroundTokenizer.prototype.setTokenizer = function (tokenizer) { - this.tokenizer = tokenizer; - this.lines = []; - this.states = []; - this.start(0); - }; - BackgroundTokenizer.prototype.setDocument = function (doc) { - this.doc = doc; - this.lines = []; - this.states = []; - this.stop(); - }; - BackgroundTokenizer.prototype.fireUpdateEvent = function (firstRow, lastRow) { - var data = { - first: firstRow, - last: lastRow - }; - this._signal("update", { data: data }); - }; - BackgroundTokenizer.prototype.start = function (startRow) { - this.currentLine = Math.min(startRow || 0, this.currentLine, this.doc.getLength()); - this.lines.splice(this.currentLine, this.lines.length); - this.states.splice(this.currentLine, this.states.length); - this.stop(); - this.running = setTimeout(this.$worker, 700); - }; - BackgroundTokenizer.prototype.scheduleStart = function () { - if (!this.running) - this.running = setTimeout(this.$worker, 700); - }; - BackgroundTokenizer.prototype.$updateOnChange = function (delta) { - var startRow = delta.start.row; - var len = delta.end.row - startRow; - if (len === 0) { - this.lines[startRow] = null; - } - else if (delta.action == "remove") { - this.lines.splice(startRow, len + 1, null); - this.states.splice(startRow, len + 1, null); - } - else { - var args = Array(len + 1); - args.unshift(startRow, 1); - this.lines.splice.apply(this.lines, args); - this.states.splice.apply(this.states, args); - } - this.currentLine = Math.min(startRow, this.currentLine, this.doc.getLength()); - this.stop(); - }; - BackgroundTokenizer.prototype.stop = function () { - if (this.running) - clearTimeout(this.running); - this.running = false; - }; - BackgroundTokenizer.prototype.getTokens = function (row) { - return this.lines[row] || this.$tokenizeRow(row); - }; - BackgroundTokenizer.prototype.getState = function (row) { - if (this.currentLine == row) - this.$tokenizeRow(row); - return this.states[row] || "start"; - }; - BackgroundTokenizer.prototype.$tokenizeRow = function (row) { - var line = this.doc.getLine(row); - var state = this.states[row - 1]; - var data = this.tokenizer.getLineTokens(line, state, row); - if (this.states[row] + "" !== data.state + "") { - this.states[row] = data.state; - this.lines[row + 1] = null; - if (this.currentLine > row + 1) - this.currentLine = row + 1; - } - else if (this.currentLine == row) { - this.currentLine = row + 1; - } - return this.lines[row] = data.tokens; - }; - BackgroundTokenizer.prototype.cleanup = function () { - this.running = false; - this.lines = []; - this.states = []; - this.currentLine = 0; - this.removeAllListeners(); - }; - return BackgroundTokenizer; -}()); -oop.implement(BackgroundTokenizer.prototype, EventEmitter); -exports.BackgroundTokenizer = BackgroundTokenizer; - -}); - -ace.define("ace/search_highlight",["require","exports","module","ace/lib/lang","ace/range"], function(require, exports, module){"use strict"; -var lang = require("./lib/lang"); -var Range = require("./range").Range; -var SearchHighlight = /** @class */ (function () { - function SearchHighlight(regExp, clazz, type) { - if (type === void 0) { type = "text"; } - this.setRegexp(regExp); - this.clazz = clazz; - this.type = type; - } - SearchHighlight.prototype.setRegexp = function (regExp) { - if (this.regExp + "" == regExp + "") - return; - this.regExp = regExp; - this.cache = []; - }; - SearchHighlight.prototype.update = function (html, markerLayer, session, config) { - if (!this.regExp) - return; - var start = config.firstRow, end = config.lastRow; - var renderedMarkerRanges = {}; - for (var i = start; i <= end; i++) { - var ranges = this.cache[i]; - if (ranges == null) { - ranges = lang.getMatchOffsets(session.getLine(i), this.regExp); - if (ranges.length > this.MAX_RANGES) - ranges = ranges.slice(0, this.MAX_RANGES); - ranges = ranges.map(function (match) { - return new Range(i, match.offset, i, match.offset + match.length); - }); - this.cache[i] = ranges.length ? ranges : ""; - } - for (var j = ranges.length; j--;) { - var rangeToAddMarkerTo = ranges[j].toScreenRange(session); - var rangeAsString = rangeToAddMarkerTo.toString(); - if (renderedMarkerRanges[rangeAsString]) - continue; - renderedMarkerRanges[rangeAsString] = true; - markerLayer.drawSingleLineMarker(html, rangeToAddMarkerTo, this.clazz, config); - } - } - }; - return SearchHighlight; -}()); -SearchHighlight.prototype.MAX_RANGES = 500; -exports.SearchHighlight = SearchHighlight; - -}); - -ace.define("ace/undomanager",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; -var UndoManager = /** @class */ (function () { - function UndoManager() { - this.$maxRev = 0; - this.$fromUndo = false; - this.$undoDepth = Infinity; - this.reset(); - } - UndoManager.prototype.addSession = function (session) { - this.$session = session; - }; - UndoManager.prototype.add = function (delta, allowMerge, session) { - if (this.$fromUndo) - return; - if (delta == this.$lastDelta) - return; - if (!this.$keepRedoStack) - this.$redoStack.length = 0; - if (allowMerge === false || !this.lastDeltas) { - this.lastDeltas = []; - var undoStackLength = this.$undoStack.length; - if (undoStackLength > this.$undoDepth - 1) { - this.$undoStack.splice(0, undoStackLength - this.$undoDepth + 1); - } - this.$undoStack.push(this.lastDeltas); - delta.id = this.$rev = ++this.$maxRev; - } - if (delta.action == "remove" || delta.action == "insert") - this.$lastDelta = delta; - this.lastDeltas.push(delta); - }; - UndoManager.prototype.addSelection = function (selection, rev) { - this.selections.push({ - value: selection, - rev: rev || this.$rev - }); - }; - UndoManager.prototype.startNewGroup = function () { - this.lastDeltas = null; - return this.$rev; - }; - UndoManager.prototype.markIgnored = function (from, to) { - if (to == null) - to = this.$rev + 1; - var stack = this.$undoStack; - for (var i = stack.length; i--;) { - var delta = stack[i][0]; - if (delta.id <= from) - break; - if (delta.id < to) - delta.ignore = true; - } - this.lastDeltas = null; - }; - UndoManager.prototype.getSelection = function (rev, after) { - var stack = this.selections; - for (var i = stack.length; i--;) { - var selection = stack[i]; - if (selection.rev < rev) { - if (after) - selection = stack[i + 1]; - return selection; - } - } - }; - UndoManager.prototype.getRevision = function () { - return this.$rev; - }; - UndoManager.prototype.getDeltas = function (from, to) { - if (to == null) - to = this.$rev + 1; - var stack = this.$undoStack; - var end = null, start = 0; - for (var i = stack.length; i--;) { - var delta = stack[i][0]; - if (delta.id < to && !end) - end = i + 1; - if (delta.id <= from) { - start = i + 1; - break; - } - } - return stack.slice(start, end); - }; - UndoManager.prototype.getChangedRanges = function (from, to) { - if (to == null) - to = this.$rev + 1; - }; - UndoManager.prototype.getChangedLines = function (from, to) { - if (to == null) - to = this.$rev + 1; - }; - UndoManager.prototype.undo = function (session, dontSelect) { - this.lastDeltas = null; - var stack = this.$undoStack; - if (!rearrangeUndoStack(stack, stack.length)) - return; - if (!session) - session = this.$session; - if (this.$redoStackBaseRev !== this.$rev && this.$redoStack.length) - this.$redoStack = []; - this.$fromUndo = true; - var deltaSet = stack.pop(); - var undoSelectionRange = null; - if (deltaSet) { - undoSelectionRange = session.undoChanges(deltaSet, dontSelect); - this.$redoStack.push(deltaSet); - this.$syncRev(); - } - this.$fromUndo = false; - return undoSelectionRange; - }; - UndoManager.prototype.redo = function (session, dontSelect) { - this.lastDeltas = null; - if (!session) - session = this.$session; - this.$fromUndo = true; - if (this.$redoStackBaseRev != this.$rev) { - var diff = this.getDeltas(this.$redoStackBaseRev, this.$rev + 1); - rebaseRedoStack(this.$redoStack, diff); - this.$redoStackBaseRev = this.$rev; - this.$redoStack.forEach(function (x) { - x[0].id = ++this.$maxRev; - }, this); - } - var deltaSet = this.$redoStack.pop(); - var redoSelectionRange = null; - if (deltaSet) { - redoSelectionRange = session.redoChanges(deltaSet, dontSelect); - this.$undoStack.push(deltaSet); - this.$syncRev(); - } - this.$fromUndo = false; - return redoSelectionRange; - }; - UndoManager.prototype.$syncRev = function () { - var stack = this.$undoStack; - var nextDelta = stack[stack.length - 1]; - var id = nextDelta && nextDelta[0].id || 0; - this.$redoStackBaseRev = id; - this.$rev = id; - }; - UndoManager.prototype.reset = function () { - this.lastDeltas = null; - this.$lastDelta = null; - this.$undoStack = []; - this.$redoStack = []; - this.$rev = 0; - this.mark = 0; - this.$redoStackBaseRev = this.$rev; - this.selections = []; - }; - UndoManager.prototype.canUndo = function () { - return this.$undoStack.length > 0; - }; - UndoManager.prototype.canRedo = function () { - return this.$redoStack.length > 0; - }; - UndoManager.prototype.bookmark = function (rev) { - if (rev == undefined) - rev = this.$rev; - this.mark = rev; - }; - UndoManager.prototype.isAtBookmark = function () { - return this.$rev === this.mark; - }; - UndoManager.prototype.toJSON = function () { - return { - $redoStack: this.$redoStack, - $undoStack: this.$undoStack - }; - }; - UndoManager.prototype.fromJSON = function (json) { - this.reset(); - this.$undoStack = json.$undoStack; - this.$redoStack = json.$redoStack; - }; - UndoManager.prototype.$prettyPrint = function (delta) { - if (delta) - return stringifyDelta(delta); - return stringifyDelta(this.$undoStack) + "\n---\n" + stringifyDelta(this.$redoStack); - }; - return UndoManager; -}()); -UndoManager.prototype.hasUndo = UndoManager.prototype.canUndo; -UndoManager.prototype.hasRedo = UndoManager.prototype.canRedo; -UndoManager.prototype.isClean = UndoManager.prototype.isAtBookmark; -UndoManager.prototype.markClean = UndoManager.prototype.bookmark; -function rearrangeUndoStack(stack, pos) { - for (var i = pos; i--;) { - var deltaSet = stack[i]; - if (deltaSet && !deltaSet[0].ignore) { - while (i < pos - 1) { - var swapped = swapGroups(stack[i], stack[i + 1]); - stack[i] = swapped[0]; - stack[i + 1] = swapped[1]; - i++; - } - return true; - } - } -} -var Range = require("./range").Range; -var cmp = Range.comparePoints; -var comparePoints = Range.comparePoints; -function $updateMarkers(delta) { - var isInsert = delta.action == "insert"; - var start = delta.start; - var end = delta.end; - var rowShift = (end.row - start.row) * (isInsert ? 1 : -1); - var colShift = (end.column - start.column) * (isInsert ? 1 : -1); - if (isInsert) - end = start; - for (var i in this.marks) { - var point = this.marks[i]; - var cmp = comparePoints(point, start); - if (cmp < 0) { - continue; // delta starts after the range - } - if (cmp === 0) { - if (isInsert) { - if (point.bias == 1) { - cmp = 1; - } - else { - point.bias == -1; - continue; - } - } - } - var cmp2 = isInsert ? cmp : comparePoints(point, end); - if (cmp2 > 0) { - point.row += rowShift; - point.column += point.row == end.row ? colShift : 0; - continue; - } - if (!isInsert && cmp2 <= 0) { - point.row = start.row; - point.column = start.column; - if (cmp2 === 0) - point.bias = 1; - } - } -} -function clonePos(pos) { - return { row: pos.row, column: pos.column }; -} -function cloneDelta(d) { - return { - start: clonePos(d.start), - end: clonePos(d.end), - action: d.action, - lines: d.lines.slice() - }; -} -function stringifyDelta(d) { - d = d || this; - if (Array.isArray(d)) { - return d.map(stringifyDelta).join("\n"); - } - var type = ""; - if (d.action) { - type = d.action == "insert" ? "+" : "-"; - type += "[" + d.lines + "]"; - } - else if (d.value) { - if (Array.isArray(d.value)) { - type = d.value.map(stringifyRange).join("\n"); - } - else { - type = stringifyRange(d.value); - } - } - if (d.start) { - type += stringifyRange(d); - } - if (d.id || d.rev) { - type += "\t(" + (d.id || d.rev) + ")"; - } - return type; -} -function stringifyRange(r) { - return r.start.row + ":" + r.start.column - + "=>" + r.end.row + ":" + r.end.column; -} -function swap(d1, d2) { - var i1 = d1.action == "insert"; - var i2 = d2.action == "insert"; - if (i1 && i2) { - if (cmp(d2.start, d1.end) >= 0) { - shift(d2, d1, -1); - } - else if (cmp(d2.start, d1.start) <= 0) { - shift(d1, d2, +1); - } - else { - return null; - } - } - else if (i1 && !i2) { - if (cmp(d2.start, d1.end) >= 0) { - shift(d2, d1, -1); - } - else if (cmp(d2.end, d1.start) <= 0) { - shift(d1, d2, -1); - } - else { - return null; - } - } - else if (!i1 && i2) { - if (cmp(d2.start, d1.start) >= 0) { - shift(d2, d1, +1); - } - else if (cmp(d2.start, d1.start) <= 0) { - shift(d1, d2, +1); - } - else { - return null; - } - } - else if (!i1 && !i2) { - if (cmp(d2.start, d1.start) >= 0) { - shift(d2, d1, +1); - } - else if (cmp(d2.end, d1.start) <= 0) { - shift(d1, d2, -1); - } - else { - return null; - } - } - return [d2, d1]; -} -function swapGroups(ds1, ds2) { - for (var i = ds1.length; i--;) { - for (var j = 0; j < ds2.length; j++) { - if (!swap(ds1[i], ds2[j])) { - while (i < ds1.length) { - while (j--) { - swap(ds2[j], ds1[i]); - } - j = ds2.length; - i++; - } - return [ds1, ds2]; - } - } - } - ds1.selectionBefore = ds2.selectionBefore = - ds1.selectionAfter = ds2.selectionAfter = null; - return [ds2, ds1]; -} -function xform(d1, c1) { - var i1 = d1.action == "insert"; - var i2 = c1.action == "insert"; - if (i1 && i2) { - if (cmp(d1.start, c1.start) < 0) { - shift(c1, d1, 1); - } - else { - shift(d1, c1, 1); - } - } - else if (i1 && !i2) { - if (cmp(d1.start, c1.end) >= 0) { - shift(d1, c1, -1); - } - else if (cmp(d1.start, c1.start) <= 0) { - shift(c1, d1, +1); - } - else { - shift(d1, Range.fromPoints(c1.start, d1.start), -1); - shift(c1, d1, +1); - } - } - else if (!i1 && i2) { - if (cmp(c1.start, d1.end) >= 0) { - shift(c1, d1, -1); - } - else if (cmp(c1.start, d1.start) <= 0) { - shift(d1, c1, +1); - } - else { - shift(c1, Range.fromPoints(d1.start, c1.start), -1); - shift(d1, c1, +1); - } - } - else if (!i1 && !i2) { - if (cmp(c1.start, d1.end) >= 0) { - shift(c1, d1, -1); - } - else if (cmp(c1.end, d1.start) <= 0) { - shift(d1, c1, -1); - } - else { - var before, after; - if (cmp(d1.start, c1.start) < 0) { - before = d1; - d1 = splitDelta(d1, c1.start); - } - if (cmp(d1.end, c1.end) > 0) { - after = splitDelta(d1, c1.end); - } - shiftPos(c1.end, d1.start, d1.end, -1); - if (after && !before) { - d1.lines = after.lines; - d1.start = after.start; - d1.end = after.end; - after = d1; - } - return [c1, before, after].filter(Boolean); - } - } - return [c1, d1]; -} -function shift(d1, d2, dir) { - shiftPos(d1.start, d2.start, d2.end, dir); - shiftPos(d1.end, d2.start, d2.end, dir); -} -function shiftPos(pos, start, end, dir) { - if (pos.row == (dir == 1 ? start : end).row) { - pos.column += dir * (end.column - start.column); - } - pos.row += dir * (end.row - start.row); -} -function splitDelta(c, pos) { - var lines = c.lines; - var end = c.end; - c.end = clonePos(pos); - var rowsBefore = c.end.row - c.start.row; - var otherLines = lines.splice(rowsBefore, lines.length); - var col = rowsBefore ? pos.column : pos.column - c.start.column; - lines.push(otherLines[0].substring(0, col)); - otherLines[0] = otherLines[0].substr(col); - var rest = { - start: clonePos(pos), - end: end, - lines: otherLines, - action: c.action - }; - return rest; -} -function moveDeltasByOne(redoStack, d) { - d = cloneDelta(d); - for (var j = redoStack.length; j--;) { - var deltaSet = redoStack[j]; - for (var i = 0; i < deltaSet.length; i++) { - var x = deltaSet[i]; - var xformed = xform(x, d); - d = xformed[0]; - if (xformed.length != 2) { - if (xformed[2]) { - deltaSet.splice(i + 1, 1, xformed[1], xformed[2]); - i++; - } - else if (!xformed[1]) { - deltaSet.splice(i, 1); - i--; - } - } - } - if (!deltaSet.length) { - redoStack.splice(j, 1); - } - } - return redoStack; -} -function rebaseRedoStack(redoStack, deltaSets) { - for (var i = 0; i < deltaSets.length; i++) { - var deltas = deltaSets[i]; - for (var j = 0; j < deltas.length; j++) { - moveDeltasByOne(redoStack, deltas[j]); - } - } -} -exports.UndoManager = UndoManager; - -}); - -ace.define("ace/edit_session/fold_line",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; -var Range = require("../range").Range; -var FoldLine = /** @class */ (function () { - function FoldLine(foldData, folds) { - this.foldData = foldData; - if (Array.isArray(folds)) { - this.folds = folds; - } - else { - folds = this.folds = [folds]; - } - var last = folds[folds.length - 1]; - this.range = new Range(folds[0].start.row, folds[0].start.column, last.end.row, last.end.column); - this.start = this.range.start; - this.end = this.range.end; - this.folds.forEach(function (fold) { - fold.setFoldLine(this); - }, this); - } - FoldLine.prototype.shiftRow = function (shift) { - this.start.row += shift; - this.end.row += shift; - this.folds.forEach(function (fold) { - fold.start.row += shift; - fold.end.row += shift; - }); - }; - FoldLine.prototype.addFold = function (fold) { - if (fold.sameRow) { - if (fold.start.row < this.startRow || fold.endRow > this.endRow) { - throw new Error("Can't add a fold to this FoldLine as it has no connection"); - } - this.folds.push(fold); - this.folds.sort(function (a, b) { - return -a.range.compareEnd(b.start.row, b.start.column); - }); - if (this.range.compareEnd(fold.start.row, fold.start.column) > 0) { - this.end.row = fold.end.row; - this.end.column = fold.end.column; - } - else if (this.range.compareStart(fold.end.row, fold.end.column) < 0) { - this.start.row = fold.start.row; - this.start.column = fold.start.column; - } - } - else if (fold.start.row == this.end.row) { - this.folds.push(fold); - this.end.row = fold.end.row; - this.end.column = fold.end.column; - } - else if (fold.end.row == this.start.row) { - this.folds.unshift(fold); - this.start.row = fold.start.row; - this.start.column = fold.start.column; - } - else { - throw new Error("Trying to add fold to FoldRow that doesn't have a matching row"); - } - fold.foldLine = this; - }; - FoldLine.prototype.containsRow = function (row) { - return row >= this.start.row && row <= this.end.row; - }; - FoldLine.prototype.walk = function (callback, endRow, endColumn) { - var lastEnd = 0, folds = this.folds, fold, cmp, stop, isNewRow = true; - if (endRow == null) { - endRow = this.end.row; - endColumn = this.end.column; - } - for (var i = 0; i < folds.length; i++) { - fold = folds[i]; - cmp = fold.range.compareStart(endRow, endColumn); - if (cmp == -1) { - callback(null, endRow, endColumn, lastEnd, isNewRow); - return; - } - stop = callback(null, fold.start.row, fold.start.column, lastEnd, isNewRow); - stop = !stop && callback(fold.placeholder, fold.start.row, fold.start.column, lastEnd); - if (stop || cmp === 0) { - return; - } - isNewRow = !fold.sameRow; - lastEnd = fold.end.column; - } - callback(null, endRow, endColumn, lastEnd, isNewRow); - }; - FoldLine.prototype.getNextFoldTo = function (row, column) { - var fold, cmp; - for (var i = 0; i < this.folds.length; i++) { - fold = this.folds[i]; - cmp = fold.range.compareEnd(row, column); - if (cmp == -1) { - return { - fold: fold, - kind: "after" - }; - } - else if (cmp === 0) { - return { - fold: fold, - kind: "inside" - }; - } - } - return null; - }; - FoldLine.prototype.addRemoveChars = function (row, column, len) { - var ret = this.getNextFoldTo(row, column), fold, folds; - if (ret) { - fold = ret.fold; - if (ret.kind == "inside" - && fold.start.column != column - && fold.start.row != row) { - window.console && window.console.log(row, column, fold); - } - else if (fold.start.row == row) { - folds = this.folds; - var i = folds.indexOf(fold); - if (i === 0) { - this.start.column += len; - } - for (i; i < folds.length; i++) { - fold = folds[i]; - fold.start.column += len; - if (!fold.sameRow) { - return; - } - fold.end.column += len; - } - this.end.column += len; - } - } - }; - FoldLine.prototype.split = function (row, column) { - var pos = this.getNextFoldTo(row, column); - if (!pos || pos.kind == "inside") - return null; - var fold = pos.fold; - var folds = this.folds; - var foldData = this.foldData; - var i = folds.indexOf(fold); - var foldBefore = folds[i - 1]; - this.end.row = foldBefore.end.row; - this.end.column = foldBefore.end.column; - folds = folds.splice(i, folds.length - i); - var newFoldLine = new FoldLine(foldData, folds); - foldData.splice(foldData.indexOf(this) + 1, 0, newFoldLine); - return newFoldLine; - }; - FoldLine.prototype.merge = function (foldLineNext) { - var folds = foldLineNext.folds; - for (var i = 0; i < folds.length; i++) { - this.addFold(folds[i]); - } - var foldData = this.foldData; - foldData.splice(foldData.indexOf(foldLineNext), 1); - }; - FoldLine.prototype.toString = function () { - var ret = [this.range.toString() + ": ["]; - this.folds.forEach(function (fold) { - ret.push(" " + fold.toString()); - }); - ret.push("]"); - return ret.join("\n"); - }; - FoldLine.prototype.idxToPosition = function (idx) { - var lastFoldEndColumn = 0; - for (var i = 0; i < this.folds.length; i++) { - var fold = this.folds[i]; - idx -= fold.start.column - lastFoldEndColumn; - if (idx < 0) { - return { - row: fold.start.row, - column: fold.start.column + idx - }; - } - idx -= fold.placeholder.length; - if (idx < 0) { - return fold.start; - } - lastFoldEndColumn = fold.end.column; - } - return { - row: this.end.row, - column: this.end.column + idx - }; - }; - return FoldLine; -}()); -exports.FoldLine = FoldLine; - -}); - -ace.define("ace/range_list",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; -var Range = require("./range").Range; -var comparePoints = Range.comparePoints; -var RangeList = /** @class */ (function () { - function RangeList() { - this.ranges = []; - this.$bias = 1; - } - RangeList.prototype.pointIndex = function (pos, excludeEdges, startIndex) { - var list = this.ranges; - for (var i = startIndex || 0; i < list.length; i++) { - var range = list[i]; - var cmpEnd = comparePoints(pos, range.end); - if (cmpEnd > 0) - continue; - var cmpStart = comparePoints(pos, range.start); - if (cmpEnd === 0) - return excludeEdges && cmpStart !== 0 ? -i - 2 : i; - if (cmpStart > 0 || (cmpStart === 0 && !excludeEdges)) - return i; - return -i - 1; - } - return -i - 1; - }; - RangeList.prototype.add = function (range) { - var excludeEdges = !range.isEmpty(); - var startIndex = this.pointIndex(range.start, excludeEdges); - if (startIndex < 0) - startIndex = -startIndex - 1; - var endIndex = this.pointIndex(range.end, excludeEdges, startIndex); - if (endIndex < 0) - endIndex = -endIndex - 1; - else - endIndex++; - return this.ranges.splice(startIndex, endIndex - startIndex, range); - }; - RangeList.prototype.addList = function (list) { - var removed = []; - for (var i = list.length; i--;) { - removed.push.apply(removed, this.add(list[i])); - } - return removed; - }; - RangeList.prototype.substractPoint = function (pos) { - var i = this.pointIndex(pos); - if (i >= 0) - return this.ranges.splice(i, 1); - }; - RangeList.prototype.merge = function () { - var removed = []; - var list = this.ranges; - list = list.sort(function (a, b) { - return comparePoints(a.start, b.start); - }); - var next = list[0], range; - for (var i = 1; i < list.length; i++) { - range = next; - next = list[i]; - var cmp = comparePoints(range.end, next.start); - if (cmp < 0) - continue; - if (cmp == 0 && !range.isEmpty() && !next.isEmpty()) - continue; - if (comparePoints(range.end, next.end) < 0) { - range.end.row = next.end.row; - range.end.column = next.end.column; - } - list.splice(i, 1); - removed.push(next); - next = range; - i--; - } - this.ranges = list; - return removed; - }; - RangeList.prototype.contains = function (row, column) { - return this.pointIndex({ row: row, column: column }) >= 0; - }; - RangeList.prototype.containsPoint = function (pos) { - return this.pointIndex(pos) >= 0; - }; - RangeList.prototype.rangeAtPoint = function (pos) { - var i = this.pointIndex(pos); - if (i >= 0) - return this.ranges[i]; - }; - RangeList.prototype.clipRows = function (startRow, endRow) { - var list = this.ranges; - if (list[0].start.row > endRow || list[list.length - 1].start.row < startRow) - return []; - var startIndex = this.pointIndex({ row: startRow, column: 0 }); - if (startIndex < 0) - startIndex = -startIndex - 1; - var endIndex = this.pointIndex({ row: endRow, column: 0 }, startIndex); - if (endIndex < 0) - endIndex = -endIndex - 1; - var clipped = []; - for (var i = startIndex; i < endIndex; i++) { - clipped.push(list[i]); - } - return clipped; - }; - RangeList.prototype.removeAll = function () { - return this.ranges.splice(0, this.ranges.length); - }; - RangeList.prototype.attach = function (session) { - if (this.session) - this.detach(); - this.session = session; - this.onChange = this.$onChange.bind(this); - this.session.on('change', this.onChange); - }; - RangeList.prototype.detach = function () { - if (!this.session) - return; - this.session.removeListener('change', this.onChange); - this.session = null; - }; - RangeList.prototype.$onChange = function (delta) { - var start = delta.start; - var end = delta.end; - var startRow = start.row; - var endRow = end.row; - var ranges = this.ranges; - for (var i = 0, n = ranges.length; i < n; i++) { - var r = ranges[i]; - if (r.end.row >= startRow) - break; - } - if (delta.action == "insert") { - var lineDif = endRow - startRow; - var colDiff = -start.column + end.column; - for (; i < n; i++) { - var r = ranges[i]; - if (r.start.row > startRow) - break; - if (r.start.row == startRow && r.start.column >= start.column) { - if (r.start.column == start.column && this.$bias <= 0) { - } - else { - r.start.column += colDiff; - r.start.row += lineDif; - } - } - if (r.end.row == startRow && r.end.column >= start.column) { - if (r.end.column == start.column && this.$bias < 0) { - continue; - } - if (r.end.column == start.column && colDiff > 0 && i < n - 1) { - if (r.end.column > r.start.column && r.end.column == ranges[i + 1].start.column) - r.end.column -= colDiff; - } - r.end.column += colDiff; - r.end.row += lineDif; - } - } - } - else { - var lineDif = startRow - endRow; - var colDiff = start.column - end.column; - for (; i < n; i++) { - var r = ranges[i]; - if (r.start.row > endRow) - break; - if (r.end.row < endRow - && (startRow < r.end.row - || startRow == r.end.row && start.column < r.end.column)) { - r.end.row = startRow; - r.end.column = start.column; - } - else if (r.end.row == endRow) { - if (r.end.column <= end.column) { - if (lineDif || r.end.column > start.column) { - r.end.column = start.column; - r.end.row = start.row; - } - } - else { - r.end.column += colDiff; - r.end.row += lineDif; - } - } - else if (r.end.row > endRow) { - r.end.row += lineDif; - } - if (r.start.row < endRow - && (startRow < r.start.row - || startRow == r.start.row && start.column < r.start.column)) { - r.start.row = startRow; - r.start.column = start.column; - } - else if (r.start.row == endRow) { - if (r.start.column <= end.column) { - if (lineDif || r.start.column > start.column) { - r.start.column = start.column; - r.start.row = start.row; - } - } - else { - r.start.column += colDiff; - r.start.row += lineDif; - } - } - else if (r.start.row > endRow) { - r.start.row += lineDif; - } - } - } - if (lineDif != 0 && i < n) { - for (; i < n; i++) { - var r = ranges[i]; - r.start.row += lineDif; - r.end.row += lineDif; - } - } - }; - return RangeList; -}()); -RangeList.prototype.comparePoints = comparePoints; -exports.RangeList = RangeList; - -}); - -ace.define("ace/edit_session/fold",["require","exports","module","ace/range_list"], function(require, exports, module){"use strict"; -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - if (typeof b !== "function" && b !== null) - throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var RangeList = require("../range_list").RangeList; -var Fold = /** @class */ (function (_super) { - __extends(Fold, _super); - function Fold(range, placeholder) { - var _this = _super.call(this) || this; - _this.foldLine = null; - _this.placeholder = placeholder; - _this.range = range; - _this.start = range.start; - _this.end = range.end; - _this.sameRow = range.start.row == range.end.row; - _this.subFolds = _this.ranges = []; - return _this; - } - Fold.prototype.toString = function () { - return '"' + this.placeholder + '" ' + this.range.toString(); - }; - Fold.prototype.setFoldLine = function (foldLine) { - this.foldLine = foldLine; - this.subFolds.forEach(function (fold) { - fold.setFoldLine(foldLine); - }); - }; - Fold.prototype.clone = function () { - var range = this.range.clone(); - var fold = new Fold(range, this.placeholder); - this.subFolds.forEach(function (subFold) { - fold.subFolds.push(subFold.clone()); - }); - fold.collapseChildren = this.collapseChildren; - return fold; - }; - Fold.prototype.addSubFold = function (fold) { - if (this.range.isEqual(fold)) - return; - consumeRange(fold, this.start); - var row = fold.start.row, column = fold.start.column; - for (var i = 0, cmp = -1; i < this.subFolds.length; i++) { - cmp = this.subFolds[i].range.compare(row, column); - if (cmp != 1) - break; - } - var afterStart = this.subFolds[i]; - var firstConsumed = 0; - if (cmp == 0) { - if (afterStart.range.containsRange(fold)) - return afterStart.addSubFold(fold); - else - firstConsumed = 1; - } - var row = fold.range.end.row, column = fold.range.end.column; - for (var j = i, cmp = -1; j < this.subFolds.length; j++) { - cmp = this.subFolds[j].range.compare(row, column); - if (cmp != 1) - break; - } - if (cmp == 0) - j++; - var consumedFolds = this.subFolds.splice(i, j - i, fold); - var last = cmp == 0 ? consumedFolds.length - 1 : consumedFolds.length; - for (var k = firstConsumed; k < last; k++) { - fold.addSubFold(consumedFolds[k]); - } - fold.setFoldLine(this.foldLine); - return fold; - }; - Fold.prototype.restoreRange = function (range) { - return restoreRange(range, this.start); - }; - return Fold; -}(RangeList)); -function consumePoint(point, anchor) { - point.row -= anchor.row; - if (point.row == 0) - point.column -= anchor.column; -} -function consumeRange(range, anchor) { - consumePoint(range.start, anchor); - consumePoint(range.end, anchor); -} -function restorePoint(point, anchor) { - if (point.row == 0) - point.column += anchor.column; - point.row += anchor.row; -} -function restoreRange(range, anchor) { - restorePoint(range.start, anchor); - restorePoint(range.end, anchor); -} -exports.Fold = Fold; - -}); - -ace.define("ace/edit_session/folding",["require","exports","module","ace/range","ace/edit_session/fold_line","ace/edit_session/fold","ace/token_iterator","ace/mouse/mouse_event"], function(require, exports, module){"use strict"; -var Range = require("../range").Range; -var FoldLine = require("./fold_line").FoldLine; -var Fold = require("./fold").Fold; -var TokenIterator = require("../token_iterator").TokenIterator; -var MouseEvent = require("../mouse/mouse_event").MouseEvent; -function Folding() { - this.getFoldAt = function (row, column, side) { - var foldLine = this.getFoldLine(row); - if (!foldLine) - return null; - var folds = foldLine.folds; - for (var i = 0; i < folds.length; i++) { - var range = folds[i].range; - if (range.contains(row, column)) { - if (side == 1 && range.isEnd(row, column) && !range.isEmpty()) { - continue; - } - else if (side == -1 && range.isStart(row, column) && !range.isEmpty()) { - continue; - } - return folds[i]; - } - } - }; - this.getFoldsInRange = function (range) { - var start = range.start; - var end = range.end; - var foldLines = this.$foldData; - var foundFolds = []; - start.column += 1; - end.column -= 1; - for (var i = 0; i < foldLines.length; i++) { - var cmp = foldLines[i].range.compareRange(range); - if (cmp == 2) { - continue; - } - else if (cmp == -2) { - break; - } - var folds = foldLines[i].folds; - for (var j = 0; j < folds.length; j++) { - var fold = folds[j]; - cmp = fold.range.compareRange(range); - if (cmp == -2) { - break; - } - else if (cmp == 2) { - continue; - } - else - if (cmp == 42) { - break; - } - foundFolds.push(fold); - } - } - start.column -= 1; - end.column += 1; - return foundFolds; - }; - this.getFoldsInRangeList = function (ranges) { - if (Array.isArray(ranges)) { - var folds = []; - ranges.forEach(function (range) { - folds = folds.concat(this.getFoldsInRange(range)); - }, this); - } - else { - var folds = this.getFoldsInRange(ranges); - } - return folds; - }; - this.getAllFolds = function () { - var folds = []; - var foldLines = this.$foldData; - for (var i = 0; i < foldLines.length; i++) - for (var j = 0; j < foldLines[i].folds.length; j++) - folds.push(foldLines[i].folds[j]); - return folds; - }; - this.getFoldStringAt = function (row, column, trim, foldLine) { - foldLine = foldLine || this.getFoldLine(row); - if (!foldLine) - return null; - var lastFold = { - end: { column: 0 } - }; - var str, fold; - for (var i = 0; i < foldLine.folds.length; i++) { - fold = foldLine.folds[i]; - var cmp = fold.range.compareEnd(row, column); - if (cmp == -1) { - str = this - .getLine(fold.start.row) - .substring(lastFold.end.column, fold.start.column); - break; - } - else if (cmp === 0) { - return null; - } - lastFold = fold; - } - if (!str) - str = this.getLine(fold.start.row).substring(lastFold.end.column); - if (trim == -1) - return str.substring(0, column - lastFold.end.column); - else if (trim == 1) - return str.substring(column - lastFold.end.column); - else - return str; - }; - this.getFoldLine = function (docRow, startFoldLine) { - var foldData = this.$foldData; - var i = 0; - if (startFoldLine) - i = foldData.indexOf(startFoldLine); - if (i == -1) - i = 0; - for (i; i < foldData.length; i++) { - var foldLine = foldData[i]; - if (foldLine.start.row <= docRow && foldLine.end.row >= docRow) { - return foldLine; - } - else if (foldLine.end.row > docRow) { - return null; - } - } - return null; - }; - this.getNextFoldLine = function (docRow, startFoldLine) { - var foldData = this.$foldData; - var i = 0; - if (startFoldLine) - i = foldData.indexOf(startFoldLine); - if (i == -1) - i = 0; - for (i; i < foldData.length; i++) { - var foldLine = foldData[i]; - if (foldLine.end.row >= docRow) { - return foldLine; - } - } - return null; - }; - this.getFoldedRowCount = function (first, last) { - var foldData = this.$foldData, rowCount = last - first + 1; - for (var i = 0; i < foldData.length; i++) { - var foldLine = foldData[i], end = foldLine.end.row, start = foldLine.start.row; - if (end >= last) { - if (start < last) { - if (start >= first) - rowCount -= last - start; - else - rowCount = 0; // in one fold - } - break; - } - else if (end >= first) { - if (start >= first) // fold inside range - rowCount -= end - start; - else - rowCount -= end - first + 1; - } - } - return rowCount; - }; - this.$addFoldLine = function (foldLine) { - this.$foldData.push(foldLine); - this.$foldData.sort(function (a, b) { - return a.start.row - b.start.row; - }); - return foldLine; - }; - this.addFold = function (placeholder, range) { - var foldData = this.$foldData; - var added = false; - var fold; - if (placeholder instanceof Fold) - fold = placeholder; - else { - fold = new Fold(range, placeholder); - fold.collapseChildren = range.collapseChildren; - } - this.$clipRangeToDocument(fold.range); - var startRow = fold.start.row; - var startColumn = fold.start.column; - var endRow = fold.end.row; - var endColumn = fold.end.column; - var startFold = this.getFoldAt(startRow, startColumn, 1); - var endFold = this.getFoldAt(endRow, endColumn, -1); - if (startFold && endFold == startFold) - return startFold.addSubFold(fold); - if (startFold && !startFold.range.isStart(startRow, startColumn)) - this.removeFold(startFold); - if (endFold && !endFold.range.isEnd(endRow, endColumn)) - this.removeFold(endFold); - var folds = this.getFoldsInRange(fold.range); - if (folds.length > 0) { - this.removeFolds(folds); - if (!fold.collapseChildren) { - folds.forEach(function (subFold) { - fold.addSubFold(subFold); - }); - } - } - for (var i = 0; i < foldData.length; i++) { - var foldLine = foldData[i]; - if (endRow == foldLine.start.row) { - foldLine.addFold(fold); - added = true; - break; - } - else if (startRow == foldLine.end.row) { - foldLine.addFold(fold); - added = true; - if (!fold.sameRow) { - var foldLineNext = foldData[i + 1]; - if (foldLineNext && foldLineNext.start.row == endRow) { - foldLine.merge(foldLineNext); - break; - } - } - break; - } - else if (endRow <= foldLine.start.row) { - break; - } - } - if (!added) - foldLine = this.$addFoldLine(new FoldLine(this.$foldData, fold)); - if (this.$useWrapMode) - this.$updateWrapData(foldLine.start.row, foldLine.start.row); - else - this.$updateRowLengthCache(foldLine.start.row, foldLine.start.row); - this.$modified = true; - this._signal("changeFold", { data: fold, action: "add" }); - return fold; - }; - this.addFolds = function (folds) { - folds.forEach(function (fold) { - this.addFold(fold); - }, this); - }; - this.removeFold = function (fold) { - var foldLine = fold.foldLine; - var startRow = foldLine.start.row; - var endRow = foldLine.end.row; - var foldLines = this.$foldData; - var folds = foldLine.folds; - if (folds.length == 1) { - foldLines.splice(foldLines.indexOf(foldLine), 1); - } - else - if (foldLine.range.isEnd(fold.end.row, fold.end.column)) { - folds.pop(); - foldLine.end.row = folds[folds.length - 1].end.row; - foldLine.end.column = folds[folds.length - 1].end.column; - } - else - if (foldLine.range.isStart(fold.start.row, fold.start.column)) { - folds.shift(); - foldLine.start.row = folds[0].start.row; - foldLine.start.column = folds[0].start.column; - } - else - if (fold.sameRow) { - folds.splice(folds.indexOf(fold), 1); - } - else - { - var newFoldLine = foldLine.split(fold.start.row, fold.start.column); - folds = newFoldLine.folds; - folds.shift(); - newFoldLine.start.row = folds[0].start.row; - newFoldLine.start.column = folds[0].start.column; - } - if (!this.$updating) { - if (this.$useWrapMode) - this.$updateWrapData(startRow, endRow); - else - this.$updateRowLengthCache(startRow, endRow); - } - this.$modified = true; - this._signal("changeFold", { data: fold, action: "remove" }); - }; - this.removeFolds = function (folds) { - var cloneFolds = []; - for (var i = 0; i < folds.length; i++) { - cloneFolds.push(folds[i]); - } - cloneFolds.forEach(function (fold) { - this.removeFold(fold); - }, this); - this.$modified = true; - }; - this.expandFold = function (fold) { - this.removeFold(fold); - fold.subFolds.forEach(function (subFold) { - fold.restoreRange(subFold); - this.addFold(subFold); - }, this); - if (fold.collapseChildren > 0) { - this.foldAll(fold.start.row + 1, fold.end.row, fold.collapseChildren - 1); - } - fold.subFolds = []; - }; - this.expandFolds = function (folds) { - folds.forEach(function (fold) { - this.expandFold(fold); - }, this); - }; - this.unfold = function (location, expandInner) { - var range, folds; - if (location == null) { - range = new Range(0, 0, this.getLength(), 0); - if (expandInner == null) - expandInner = true; - } - else if (typeof location == "number") { - range = new Range(location, 0, location, this.getLine(location).length); - } - else if ("row" in location) { - range = Range.fromPoints(location, location); - } - else if (Array.isArray(location)) { - folds = []; - location.forEach(function (range) { - folds = folds.concat(this.unfold(range)); - }, this); - return folds; - } - else { - range = location; - } - folds = this.getFoldsInRangeList(range); - var outermostFolds = folds; - while (folds.length == 1 - && Range.comparePoints(folds[0].start, range.start) < 0 - && Range.comparePoints(folds[0].end, range.end) > 0) { - this.expandFolds(folds); - folds = this.getFoldsInRangeList(range); - } - if (expandInner != false) { - this.removeFolds(folds); - } - else { - this.expandFolds(folds); - } - if (outermostFolds.length) - return outermostFolds; - }; - this.isRowFolded = function (docRow, startFoldRow) { - return !!this.getFoldLine(docRow, startFoldRow); - }; - this.getRowFoldEnd = function (docRow, startFoldRow) { - var foldLine = this.getFoldLine(docRow, startFoldRow); - return foldLine ? foldLine.end.row : docRow; - }; - this.getRowFoldStart = function (docRow, startFoldRow) { - var foldLine = this.getFoldLine(docRow, startFoldRow); - return foldLine ? foldLine.start.row : docRow; - }; - this.getFoldDisplayLine = function (foldLine, endRow, endColumn, startRow, startColumn) { - if (startRow == null) - startRow = foldLine.start.row; - if (startColumn == null) - startColumn = 0; - if (endRow == null) - endRow = foldLine.end.row; - if (endColumn == null) - endColumn = this.getLine(endRow).length; - var doc = this.doc; - var textLine = ""; - foldLine.walk(function (placeholder, row, column, lastColumn) { - if (row < startRow) - return; - if (row == startRow) { - if (column < startColumn) - return; - lastColumn = Math.max(startColumn, lastColumn); - } - if (placeholder != null) { - textLine += placeholder; - } - else { - textLine += doc.getLine(row).substring(lastColumn, column); - } - }, endRow, endColumn); - return textLine; - }; - this.getDisplayLine = function (row, endColumn, startRow, startColumn) { - var foldLine = this.getFoldLine(row); - if (!foldLine) { - var line; - line = this.doc.getLine(row); - return line.substring(startColumn || 0, endColumn || line.length); - } - else { - return this.getFoldDisplayLine(foldLine, row, endColumn, startRow, startColumn); - } - }; - this.$cloneFoldData = function () { - var fd = []; - fd = this.$foldData.map(function (foldLine) { - var folds = foldLine.folds.map(function (fold) { - return fold.clone(); - }); - return new FoldLine(fd, folds); - }); - return fd; - }; - this.toggleFold = function (tryToUnfold) { - var selection = this.selection; - var range = selection.getRange(); - var fold; - var bracketPos; - if (range.isEmpty()) { - var cursor = range.start; - fold = this.getFoldAt(cursor.row, cursor.column); - if (fold) { - this.expandFold(fold); - return; - } - else if (bracketPos = this.findMatchingBracket(cursor)) { - if (range.comparePoint(bracketPos) == 1) { - range.end = bracketPos; - } - else { - range.start = bracketPos; - range.start.column++; - range.end.column--; - } - } - else if (bracketPos = this.findMatchingBracket({ row: cursor.row, column: cursor.column + 1 })) { - if (range.comparePoint(bracketPos) == 1) - range.end = bracketPos; - else - range.start = bracketPos; - range.start.column++; - } - else { - range = this.getCommentFoldRange(cursor.row, cursor.column) || range; - } - } - else { - var folds = this.getFoldsInRange(range); - if (tryToUnfold && folds.length) { - this.expandFolds(folds); - return; - } - else if (folds.length == 1) { - fold = folds[0]; - } - } - if (!fold) - fold = this.getFoldAt(range.start.row, range.start.column); - if (fold && fold.range.toString() == range.toString()) { - this.expandFold(fold); - return; - } - var placeholder = "..."; - if (!range.isMultiLine()) { - placeholder = this.getTextRange(range); - if (placeholder.length < 4) - return; - placeholder = placeholder.trim().substring(0, 2) + ".."; - } - this.addFold(placeholder, range); - }; - this.getCommentFoldRange = function (row, column, dir) { - var iterator = new TokenIterator(this, row, column); - var token = iterator.getCurrentToken(); - var type = token && token.type; - if (token && /^comment|string/.test(type)) { - type = type.match(/comment|string/)[0]; - if (type == "comment") - type += "|doc-start|\\.doc"; - var re = new RegExp(type); - var range = new Range(); - if (dir != 1) { - do { - token = iterator.stepBackward(); - } while (token && re.test(token.type) && !/^comment.end/.test(token.type)); - token = iterator.stepForward(); - } - range.start.row = iterator.getCurrentTokenRow(); - range.start.column = iterator.getCurrentTokenColumn() + (/^comment.start/.test(token.type) ? token.value.length : 2); - iterator = new TokenIterator(this, row, column); - if (dir != -1) { - var lastRow = -1; - do { - token = iterator.stepForward(); - if (lastRow == -1) { - var state = this.getState(iterator.$row); - if (!re.test(state)) - lastRow = iterator.$row; - } - else if (iterator.$row > lastRow) { - break; - } - } while (token && re.test(token.type) && !/^comment.start/.test(token.type)); - token = iterator.stepBackward(); - } - else - token = iterator.getCurrentToken(); - range.end.row = iterator.getCurrentTokenRow(); - range.end.column = iterator.getCurrentTokenColumn(); - if (!/^comment.end/.test(token.type)) { - range.end.column += token.value.length - 2; - } - return range; - } - }; - this.foldAll = function (startRow, endRow, depth, test) { - if (depth == undefined) - depth = 100000; // JSON.stringify doesn't hanle Infinity - var foldWidgets = this.foldWidgets; - if (!foldWidgets) - return; // mode doesn't support folding - endRow = endRow || this.getLength(); - startRow = startRow || 0; - for (var row = startRow; row < endRow; row++) { - if (foldWidgets[row] == null) - foldWidgets[row] = this.getFoldWidget(row); - if (foldWidgets[row] != "start") - continue; - if (test && !test(row)) - continue; - var range = this.getFoldWidgetRange(row); - if (range && range.isMultiLine() - && range.end.row <= endRow - && range.start.row >= startRow) { - row = range.end.row; - range.collapseChildren = depth; - this.addFold("...", range); - } - } - }; - this.foldToLevel = function (level) { - this.foldAll(); - while (level-- > 0) - this.unfold(null, false); - }; - this.foldAllComments = function () { - var session = this; - this.foldAll(null, null, null, function (row) { - var tokens = session.getTokens(row); - for (var i = 0; i < tokens.length; i++) { - var token = tokens[i]; - if (token.type == "text" && /^\s+$/.test(token.value)) - continue; - if (/comment/.test(token.type)) - return true; - return false; - } - }); - }; - this.$foldStyles = { - "manual": 1, - "markbegin": 1, - "markbeginend": 1 - }; - this.$foldStyle = "markbegin"; - this.setFoldStyle = function (style) { - if (!this.$foldStyles[style]) - throw new Error("invalid fold style: " + style + "[" + Object.keys(this.$foldStyles).join(", ") + "]"); - if (this.$foldStyle == style) - return; - this.$foldStyle = style; - if (style == "manual") - this.unfold(); - var mode = this.$foldMode; - this.$setFolding(null); - this.$setFolding(mode); - }; - this.$setFolding = function (foldMode) { - if (this.$foldMode == foldMode) - return; - this.$foldMode = foldMode; - this.off('change', this.$updateFoldWidgets); - this.off('tokenizerUpdate', this.$tokenizerUpdateFoldWidgets); - this._signal("changeAnnotation"); - if (!foldMode || this.$foldStyle == "manual") { - this.foldWidgets = null; - return; - } - this.foldWidgets = []; - this.getFoldWidget = foldMode.getFoldWidget.bind(foldMode, this, this.$foldStyle); - this.getFoldWidgetRange = foldMode.getFoldWidgetRange.bind(foldMode, this, this.$foldStyle); - this.$updateFoldWidgets = this.updateFoldWidgets.bind(this); - this.$tokenizerUpdateFoldWidgets = this.tokenizerUpdateFoldWidgets.bind(this); - this.on('change', this.$updateFoldWidgets); - this.on('tokenizerUpdate', this.$tokenizerUpdateFoldWidgets); - }; - this.getParentFoldRangeData = function (row, ignoreCurrent) { - var fw = this.foldWidgets; - if (!fw || (ignoreCurrent && fw[row])) - return {}; - var i = row - 1, firstRange; - while (i >= 0) { - var c = fw[i]; - if (c == null) - c = fw[i] = this.getFoldWidget(i); - if (c == "start") { - var range = this.getFoldWidgetRange(i); - if (!firstRange) - firstRange = range; - if (range && range.end.row >= row) - break; - } - i--; - } - return { - range: i !== -1 && range, - firstRange: firstRange - }; - }; - this.onFoldWidgetClick = function (row, e) { - if (e instanceof MouseEvent) - e = e.domEvent; - var options = { - children: e.shiftKey, - all: e.ctrlKey || e.metaKey, - siblings: e.altKey - }; - var range = this.$toggleFoldWidget(row, options); - if (!range) { - var el = (e.target || e.srcElement); - if (el && /ace_fold-widget/.test(el.className)) - el.className += " ace_invalid"; - } - }; - this.$toggleFoldWidget = function (row, options) { - if (!this.getFoldWidget) - return; - var type = this.getFoldWidget(row); - var line = this.getLine(row); - var dir = type === "end" ? -1 : 1; - var fold = this.getFoldAt(row, dir === -1 ? 0 : line.length, dir); - if (fold) { - if (options.children || options.all) - this.removeFold(fold); - else - this.expandFold(fold); - return fold; - } - var range = this.getFoldWidgetRange(row, true); - if (range && !range.isMultiLine()) { - fold = this.getFoldAt(range.start.row, range.start.column, 1); - if (fold && range.isEqual(fold.range)) { - this.removeFold(fold); - return fold; - } - } - if (options.siblings) { - var data = this.getParentFoldRangeData(row); - if (data.range) { - var startRow = data.range.start.row + 1; - var endRow = data.range.end.row; - } - this.foldAll(startRow, endRow, options.all ? 10000 : 0); - } - else if (options.children) { - endRow = range ? range.end.row : this.getLength(); - this.foldAll(row + 1, endRow, options.all ? 10000 : 0); - } - else if (range) { - if (options.all) - range.collapseChildren = 10000; - this.addFold("...", range); - } - return range; - }; - this.toggleFoldWidget = function (toggleParent) { - var row = this.selection.getCursor().row; - row = this.getRowFoldStart(row); - var range = this.$toggleFoldWidget(row, {}); - if (range) - return; - var data = this.getParentFoldRangeData(row, true); - range = data.range || data.firstRange; - if (range) { - row = range.start.row; - var fold = this.getFoldAt(row, this.getLine(row).length, 1); - if (fold) { - this.removeFold(fold); - } - else { - this.addFold("...", range); - } - } - }; - this.updateFoldWidgets = function (delta) { - var firstRow = delta.start.row; - var len = delta.end.row - firstRow; - if (len === 0) { - this.foldWidgets[firstRow] = null; - } - else if (delta.action == 'remove') { - this.foldWidgets.splice(firstRow, len + 1, null); - } - else { - var args = Array(len + 1); - args.unshift(firstRow, 1); - this.foldWidgets.splice.apply(this.foldWidgets, args); - } - }; - this.tokenizerUpdateFoldWidgets = function (e) { - var rows = e.data; - if (rows.first != rows.last) { - if (this.foldWidgets.length > rows.first) - this.foldWidgets.splice(rows.first, this.foldWidgets.length); - } - }; -} -exports.Folding = Folding; - -}); - -ace.define("ace/edit_session/bracket_match",["require","exports","module","ace/token_iterator","ace/range"], function(require, exports, module){"use strict"; -var TokenIterator = require("../token_iterator").TokenIterator; -var Range = require("../range").Range; -function BracketMatch() { - this.findMatchingBracket = function (position, chr) { - if (position.column == 0) - return null; - var charBeforeCursor = chr || this.getLine(position.row).charAt(position.column - 1); - if (charBeforeCursor == "") - return null; - var match = charBeforeCursor.match(/([\(\[\{])|([\)\]\}])/); - if (!match) - return null; - if (match[1]) - return this.$findClosingBracket(match[1], position); - else - return this.$findOpeningBracket(match[2], position); - }; - this.getBracketRange = function (pos) { - var line = this.getLine(pos.row); - var before = true, range; - var chr = line.charAt(pos.column - 1); - var match = chr && chr.match(/([\(\[\{])|([\)\]\}])/); - if (!match) { - chr = line.charAt(pos.column); - pos = { row: pos.row, column: pos.column + 1 }; - match = chr && chr.match(/([\(\[\{])|([\)\]\}])/); - before = false; - } - if (!match) - return null; - if (match[1]) { - var bracketPos = this.$findClosingBracket(match[1], pos); - if (!bracketPos) - return null; - range = Range.fromPoints(pos, bracketPos); - if (!before) { - range.end.column++; - range.start.column--; - } - range.cursor = range.end; - } - else { - var bracketPos = this.$findOpeningBracket(match[2], pos); - if (!bracketPos) - return null; - range = Range.fromPoints(bracketPos, pos); - if (!before) { - range.start.column++; - range.end.column--; - } - range.cursor = range.start; - } - return range; - }; - this.getMatchingBracketRanges = function (pos, isBackwards) { - var line = this.getLine(pos.row); - var bracketsRegExp = /([\(\[\{])|([\)\]\}])/; - var chr = !isBackwards && line.charAt(pos.column - 1); - var match = chr && chr.match(bracketsRegExp); - if (!match) { - chr = (isBackwards === undefined || isBackwards) && line.charAt(pos.column); - pos = { - row: pos.row, - column: pos.column + 1 - }; - match = chr && chr.match(bracketsRegExp); - } - if (!match) - return null; - var startRange = new Range(pos.row, pos.column - 1, pos.row, pos.column); - var bracketPos = match[1] ? this.$findClosingBracket(match[1], pos) - : this.$findOpeningBracket(match[2], pos); - if (!bracketPos) - return [startRange]; - var endRange = new Range(bracketPos.row, bracketPos.column, bracketPos.row, bracketPos.column + 1); - return [startRange, endRange]; - }; - this.$brackets = { - ")": "(", - "(": ")", - "]": "[", - "[": "]", - "{": "}", - "}": "{", - "<": ">", - ">": "<" - }; - this.$findOpeningBracket = function (bracket, position, typeRe) { - var openBracket = this.$brackets[bracket]; - var depth = 1; - var iterator = new TokenIterator(this, position.row, position.column); - var token = iterator.getCurrentToken(); - if (!token) - token = iterator.stepForward(); - if (!token) - return; - if (!typeRe) { - typeRe = new RegExp("(\\.?" + - token.type.replace(".", "\\.").replace("rparen", ".paren") - .replace(/\b(?:end)\b/, "(?:start|begin|end)") - .replace(/-close\b/, "-(close|open)") - + ")+"); - } - var valueIndex = position.column - iterator.getCurrentTokenColumn() - 2; - var value = token.value; - while (true) { - while (valueIndex >= 0) { - var chr = value.charAt(valueIndex); - if (chr == openBracket) { - depth -= 1; - if (depth == 0) { - return { row: iterator.getCurrentTokenRow(), - column: valueIndex + iterator.getCurrentTokenColumn() }; - } - } - else if (chr == bracket) { - depth += 1; - } - valueIndex -= 1; - } - do { - token = iterator.stepBackward(); - } while (token && !typeRe.test(token.type)); - if (token == null) - break; - value = token.value; - valueIndex = value.length - 1; - } - return null; - }; - this.$findClosingBracket = function (bracket, position, typeRe) { - var closingBracket = this.$brackets[bracket]; - var depth = 1; - var iterator = new TokenIterator(this, position.row, position.column); - var token = iterator.getCurrentToken(); - if (!token) - token = iterator.stepForward(); - if (!token) - return; - if (!typeRe) { - typeRe = new RegExp("(\\.?" + - token.type.replace(".", "\\.").replace("lparen", ".paren") - .replace(/\b(?:start|begin)\b/, "(?:start|begin|end)") - .replace(/-open\b/, "-(close|open)") - + ")+"); - } - var valueIndex = position.column - iterator.getCurrentTokenColumn(); - while (true) { - var value = token.value; - var valueLength = value.length; - while (valueIndex < valueLength) { - var chr = value.charAt(valueIndex); - if (chr == closingBracket) { - depth -= 1; - if (depth == 0) { - return { row: iterator.getCurrentTokenRow(), - column: valueIndex + iterator.getCurrentTokenColumn() }; - } - } - else if (chr == bracket) { - depth += 1; - } - valueIndex += 1; - } - do { - token = iterator.stepForward(); - } while (token && !typeRe.test(token.type)); - if (token == null) - break; - valueIndex = 0; - } - return null; - }; - this.getMatchingTags = function (pos) { - var iterator = new TokenIterator(this, pos.row, pos.column); - var token = this.$findTagName(iterator); - if (!token) - return; - var prevToken = iterator.stepBackward(); - if (prevToken.value === '<') { - return this.$findClosingTag(iterator, token); - } - else { - return this.$findOpeningTag(iterator, token); - } - }; - this.$findTagName = function (iterator) { - var token = iterator.getCurrentToken(); - var found = false; - var backward = false; - if (token && token.type.indexOf('tag-name') === -1) { - do { - if (backward) - token = iterator.stepBackward(); - else - token = iterator.stepForward(); - if (token) { - if (token.value === "/>") { - backward = true; - } - else if (token.type.indexOf('tag-name') !== -1) { - found = true; - } - } - } while (token && !found); - } - return token; - }; - this.$findClosingTag = function (iterator, token) { - var prevToken; - var currentTag = token.value; - var tag = token.value; - var depth = 0; - var openTagStart = new Range(iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn(), iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() + 1); - token = iterator.stepForward(); - var openTagName = new Range(iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn(), iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() + token.value.length); - var foundOpenTagEnd = false; - do { - prevToken = token; - token = iterator.stepForward(); - if (token) { - if (token.value === '>' && !foundOpenTagEnd) { - var openTagEnd = new Range(iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn(), iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() + 1); //Range for `>` - foundOpenTagEnd = true; - } - if (token.type.indexOf('tag-name') !== -1) { - currentTag = token.value; - if (tag === currentTag) { - if (prevToken.value === '<') { - depth++; - } - else if (prevToken.value === '') { - var closeTagEnd = new Range(iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn(), iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() + 1); //Range for > - } - else { - return; - } - } - } - } - } - else if (tag === currentTag && token.value === '/>') { // self-closing tag - depth--; - if (depth < 0) { //found self-closing tag end - var closeTagStart = new Range(iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn(), iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() + 2); - var closeTagName = closeTagStart; - var closeTagEnd = closeTagName; - var openTagEnd = new Range(openTagName.end.row, openTagName.end.column, openTagName.end.row, openTagName.end.column + 1); - } - } - } - } while (token && depth >= 0); - if (openTagStart && openTagEnd && closeTagStart && closeTagEnd && openTagName && closeTagName) { - return { - openTag: new Range(openTagStart.start.row, openTagStart.start.column, openTagEnd.end.row, openTagEnd.end.column), - closeTag: new Range(closeTagStart.start.row, closeTagStart.start.column, closeTagEnd.end.row, closeTagEnd.end.column), - openTagName: openTagName, - closeTagName: closeTagName - }; - } - }; - this.$findOpeningTag = function (iterator, token) { - var prevToken = iterator.getCurrentToken(); - var tag = token.value; - var depth = 0; - var startRow = iterator.getCurrentTokenRow(); - var startColumn = iterator.getCurrentTokenColumn(); - var endColumn = startColumn + 2; - var closeTagStart = new Range(startRow, startColumn, startRow, endColumn); //Range for ") - return; - var closeTagEnd = new Range(iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn(), iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() + 1); //Range for > - iterator.stepBackward(); - iterator.stepBackward(); - do { - token = prevToken; - startRow = iterator.getCurrentTokenRow(); - startColumn = iterator.getCurrentTokenColumn(); - endColumn = startColumn + token.value.length; - prevToken = iterator.stepBackward(); - if (token) { - if (token.type.indexOf('tag-name') !== -1) { - if (tag === token.value) { - if (prevToken.value === '<') { - depth++; - if (depth > 0) { //found opening tag - var openTagName = new Range(startRow, startColumn, startRow, endColumn); - var openTagStart = new Range(iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn(), iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() + 1); //Range for < - do { - token = iterator.stepForward(); - } while (token && token.value !== '>'); - var openTagEnd = new Range(iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn(), iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() + 1); //Range for > - } - } - else if (prevToken.value === '') { // self-closing tag - var stepCount = 0; - var tmpToken = prevToken; - while (tmpToken) { - if (tmpToken.type.indexOf('tag-name') !== -1 && tmpToken.value === tag) { - depth--; - break; - } - else if (tmpToken.value === '<') { - break; - } - tmpToken = iterator.stepBackward(); - stepCount++; - } - for (var i = 0; i < stepCount; i++) { - iterator.stepForward(); - } - } - } - } while (prevToken && depth <= 0); - if (openTagStart && openTagEnd && closeTagStart && closeTagEnd && openTagName && closeTagName) { - return { - openTag: new Range(openTagStart.start.row, openTagStart.start.column, openTagEnd.end.row, openTagEnd.end.column), - closeTag: new Range(closeTagStart.start.row, closeTagStart.start.column, closeTagEnd.end.row, closeTagEnd.end.column), - openTagName: openTagName, - closeTagName: closeTagName - }; - } - }; -} -exports.BracketMatch = BracketMatch; - -}); - -ace.define("ace/edit_session",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/bidihandler","ace/config","ace/lib/event_emitter","ace/selection","ace/mode/text","ace/range","ace/document","ace/background_tokenizer","ace/search_highlight","ace/undomanager","ace/edit_session/folding","ace/edit_session/bracket_match"], function(require, exports, module){"use strict"; -var oop = require("./lib/oop"); -var lang = require("./lib/lang"); -var BidiHandler = require("./bidihandler").BidiHandler; -var config = require("./config"); -var EventEmitter = require("./lib/event_emitter").EventEmitter; -var Selection = require("./selection").Selection; -var TextMode = require("./mode/text").Mode; -var Range = require("./range").Range; -var Document = require("./document").Document; -var BackgroundTokenizer = require("./background_tokenizer").BackgroundTokenizer; -var SearchHighlight = require("./search_highlight").SearchHighlight; -var UndoManager = require("./undomanager").UndoManager; -var EditSession = /** @class */ (function () { - function EditSession(text, mode) { - this.$breakpoints = []; - this.$decorations = []; - this.$frontMarkers = {}; - this.$backMarkers = {}; - this.$markerId = 1; - this.$undoSelect = true; - this.$foldData = []; - this.id = "session" + (++EditSession.$uid); - this.$foldData.toString = function () { - return this.join("\n"); - }; - this.bgTokenizer = new BackgroundTokenizer((new TextMode()).getTokenizer(), this); - var _self = this; - this.bgTokenizer.on("update", function (e) { - _self._signal("tokenizerUpdate", e); - }); - this.on("changeFold", this.onChangeFold.bind(this)); - this.$onChange = this.onChange.bind(this); - if (typeof text != "object" || !text.getLine) - text = new Document(text); - this.setDocument(text); - this.selection = new Selection(this); - this.$bidiHandler = new BidiHandler(this); - config.resetOptions(this); - this.setMode(mode); - config._signal("session", this); - this.destroyed = false; - } - EditSession.prototype.setDocument = function (doc) { - if (this.doc) - this.doc.off("change", this.$onChange); - this.doc = doc; - doc.on("change", this.$onChange, true); - this.bgTokenizer.setDocument(this.getDocument()); - this.resetCaches(); - }; - EditSession.prototype.getDocument = function () { - return this.doc; - }; - EditSession.prototype.$resetRowCache = function (docRow) { - if (!docRow) { - this.$docRowCache = []; - this.$screenRowCache = []; - return; - } - var l = this.$docRowCache.length; - var i = this.$getRowCacheIndex(this.$docRowCache, docRow) + 1; - if (l > i) { - this.$docRowCache.splice(i, l); - this.$screenRowCache.splice(i, l); - } - }; - EditSession.prototype.$getRowCacheIndex = function (cacheArray, val) { - var low = 0; - var hi = cacheArray.length - 1; - while (low <= hi) { - var mid = (low + hi) >> 1; - var c = cacheArray[mid]; - if (val > c) - low = mid + 1; - else if (val < c) - hi = mid - 1; - else - return mid; - } - return low - 1; - }; - EditSession.prototype.resetCaches = function () { - this.$modified = true; - this.$wrapData = []; - this.$rowLengthCache = []; - this.$resetRowCache(0); - if (!this.destroyed) - this.bgTokenizer.start(0); - }; - EditSession.prototype.onChangeFold = function (e) { - var fold = e.data; - this.$resetRowCache(fold.start.row); - }; - EditSession.prototype.onChange = function (delta) { - this.$modified = true; - this.$bidiHandler.onChange(delta); - this.$resetRowCache(delta.start.row); - var removedFolds = this.$updateInternalDataOnChange(delta); - if (!this.$fromUndo && this.$undoManager) { - if (removedFolds && removedFolds.length) { - this.$undoManager.add({ - action: "removeFolds", - folds: removedFolds - }, this.mergeUndoDeltas); - this.mergeUndoDeltas = true; - } - this.$undoManager.add(delta, this.mergeUndoDeltas); - this.mergeUndoDeltas = true; - this.$informUndoManager.schedule(); - } - this.bgTokenizer.$updateOnChange(delta); - this._signal("change", delta); - }; - EditSession.prototype.setValue = function (text) { - this.doc.setValue(text); - this.selection.moveTo(0, 0); - this.$resetRowCache(0); - this.setUndoManager(this.$undoManager); - this.getUndoManager().reset(); - }; - EditSession.fromJSON = function (session) { - session = JSON.parse(session); - var undoManager = new UndoManager(); - undoManager.$undoStack = session.history.undo; - undoManager.$redoStack = session.history.redo; - undoManager.mark = session.history.mark; - undoManager.$rev = session.history.rev; - var editSession = new EditSession(session.value); - session.folds.forEach(function (fold) { - editSession.addFold("...", Range.fromPoints(fold.start, fold.end)); - }); - editSession.setAnnotations(session.annotations); - editSession.setBreakpoints(session.breakpoints); - editSession.setMode(session.mode); - editSession.setScrollLeft(session.scrollLeft); - editSession.setScrollTop(session.scrollTop); - editSession.setUndoManager(undoManager); - editSession.selection.fromJSON(session.selection); - return editSession; - }; - EditSession.prototype.toJSON = function () { - return { - annotations: this.$annotations, - breakpoints: this.$breakpoints, - folds: this.getAllFolds().map(function (fold) { - return fold.range; - }), - history: this.getUndoManager(), - mode: this.$mode.$id, - scrollLeft: this.$scrollLeft, - scrollTop: this.$scrollTop, - selection: this.selection.toJSON(), - value: this.doc.getValue() - }; - }; - EditSession.prototype.toString = function () { - return this.doc.getValue(); - }; - EditSession.prototype.getSelection = function () { - return this.selection; - }; - EditSession.prototype.getState = function (row) { - return this.bgTokenizer.getState(row); - }; - EditSession.prototype.getTokens = function (row) { - return this.bgTokenizer.getTokens(row); - }; - EditSession.prototype.getTokenAt = function (row, column) { - var tokens = this.bgTokenizer.getTokens(row); - var token, c = 0; - if (column == null) { - var i = tokens.length - 1; - c = this.getLine(row).length; - } - else { - for (var i = 0; i < tokens.length; i++) { - c += tokens[i].value.length; - if (c >= column) - break; - } - } - token = tokens[i]; - if (!token) - return null; - token.index = i; - token.start = c - token.value.length; - return token; - }; - EditSession.prototype.setUndoManager = function (undoManager) { - this.$undoManager = undoManager; - if (this.$informUndoManager) - this.$informUndoManager.cancel(); - if (undoManager) { - var self = this; - undoManager.addSession(this); - this.$syncInformUndoManager = function () { - self.$informUndoManager.cancel(); - self.mergeUndoDeltas = false; - }; - this.$informUndoManager = lang.delayedCall(this.$syncInformUndoManager); - } - else { - this.$syncInformUndoManager = function () { }; - } - }; - EditSession.prototype.markUndoGroup = function () { - if (this.$syncInformUndoManager) - this.$syncInformUndoManager(); - }; - EditSession.prototype.getUndoManager = function () { - return this.$undoManager || this.$defaultUndoManager; - }; - EditSession.prototype.getTabString = function () { - if (this.getUseSoftTabs()) { - return lang.stringRepeat(" ", this.getTabSize()); - } - else { - return "\t"; - } - }; - EditSession.prototype.setUseSoftTabs = function (val) { - this.setOption("useSoftTabs", val); - }; - EditSession.prototype.getUseSoftTabs = function () { - return this.$useSoftTabs && !this.$mode.$indentWithTabs; - }; - EditSession.prototype.setTabSize = function (tabSize) { - this.setOption("tabSize", tabSize); - }; - EditSession.prototype.getTabSize = function () { - return this.$tabSize; - }; - EditSession.prototype.isTabStop = function (position) { - return this.$useSoftTabs && (position.column % this.$tabSize === 0); - }; - EditSession.prototype.setNavigateWithinSoftTabs = function (navigateWithinSoftTabs) { - this.setOption("navigateWithinSoftTabs", navigateWithinSoftTabs); - }; - EditSession.prototype.getNavigateWithinSoftTabs = function () { - return this.$navigateWithinSoftTabs; - }; - EditSession.prototype.setOverwrite = function (overwrite) { - this.setOption("overwrite", overwrite); - }; - EditSession.prototype.getOverwrite = function () { - return this.$overwrite; - }; - EditSession.prototype.toggleOverwrite = function () { - this.setOverwrite(!this.$overwrite); - }; - EditSession.prototype.addGutterDecoration = function (row, className) { - if (!this.$decorations[row]) - this.$decorations[row] = ""; - this.$decorations[row] += " " + className; - this._signal("changeBreakpoint", {}); - }; - EditSession.prototype.removeGutterDecoration = function (row, className) { - this.$decorations[row] = (this.$decorations[row] || "").replace(" " + className, ""); - this._signal("changeBreakpoint", {}); - }; - EditSession.prototype.getBreakpoints = function () { - return this.$breakpoints; - }; - EditSession.prototype.setBreakpoints = function (rows) { - this.$breakpoints = []; - for (var i = 0; i < rows.length; i++) { - this.$breakpoints[rows[i]] = "ace_breakpoint"; - } - this._signal("changeBreakpoint", {}); - }; - EditSession.prototype.clearBreakpoints = function () { - this.$breakpoints = []; - this._signal("changeBreakpoint", {}); - }; - EditSession.prototype.setBreakpoint = function (row, className) { - if (className === undefined) - className = "ace_breakpoint"; - if (className) - this.$breakpoints[row] = className; - else - delete this.$breakpoints[row]; - this._signal("changeBreakpoint", {}); - }; - EditSession.prototype.clearBreakpoint = function (row) { - delete this.$breakpoints[row]; - this._signal("changeBreakpoint", {}); - }; - EditSession.prototype.addMarker = function (range, clazz, type, inFront) { - var id = this.$markerId++; - var marker = { - range: range, - type: type || "line", - renderer: typeof type == "function" ? type : null, - clazz: clazz, - inFront: !!inFront, - id: id - }; - if (inFront) { - this.$frontMarkers[id] = marker; - this._signal("changeFrontMarker"); - } - else { - this.$backMarkers[id] = marker; - this._signal("changeBackMarker"); - } - return id; - }; - EditSession.prototype.addDynamicMarker = function (marker, inFront) { - if (!marker.update) - return; - var id = this.$markerId++; - marker.id = id; - marker.inFront = !!inFront; - if (inFront) { - this.$frontMarkers[id] = marker; - this._signal("changeFrontMarker"); - } - else { - this.$backMarkers[id] = marker; - this._signal("changeBackMarker"); - } - return marker; - }; - EditSession.prototype.removeMarker = function (markerId) { - var marker = this.$frontMarkers[markerId] || this.$backMarkers[markerId]; - if (!marker) - return; - var markers = marker.inFront ? this.$frontMarkers : this.$backMarkers; - delete (markers[markerId]); - this._signal(marker.inFront ? "changeFrontMarker" : "changeBackMarker"); - }; - EditSession.prototype.getMarkers = function (inFront) { - return inFront ? this.$frontMarkers : this.$backMarkers; - }; - EditSession.prototype.highlight = function (re) { - if (!this.$searchHighlight) { - var highlight = new SearchHighlight(null, "ace_selected-word", "text"); - this.$searchHighlight = this.addDynamicMarker(highlight); - } - this.$searchHighlight.setRegexp(re); - }; - EditSession.prototype.highlightLines = function (startRow, endRow, clazz, inFront) { - if (typeof endRow != "number") { - clazz = endRow; - endRow = startRow; - } - if (!clazz) - clazz = "ace_step"; - var range = new Range(startRow, 0, endRow, Infinity); - range.id = this.addMarker(range, clazz, "fullLine", inFront); - return range; - }; - EditSession.prototype.setAnnotations = function (annotations) { - this.$annotations = annotations; - this._signal("changeAnnotation", {}); - }; - EditSession.prototype.getAnnotations = function () { - return this.$annotations || []; - }; - EditSession.prototype.clearAnnotations = function () { - this.setAnnotations([]); - }; - EditSession.prototype.$detectNewLine = function (text) { - var match = text.match(/^.*?(\r?\n)/m); - if (match) { - this.$autoNewLine = match[1]; - } - else { - this.$autoNewLine = "\n"; - } - }; - EditSession.prototype.getWordRange = function (row, column) { - var line = this.getLine(row); - var inToken = false; - if (column > 0) - inToken = !!line.charAt(column - 1).match(this.tokenRe); - if (!inToken) - inToken = !!line.charAt(column).match(this.tokenRe); - if (inToken) - var re = this.tokenRe; - else if (/^\s+$/.test(line.slice(column - 1, column + 1))) - var re = /\s/; - else - var re = this.nonTokenRe; - var start = column; - if (start > 0) { - do { - start--; - } while (start >= 0 && line.charAt(start).match(re)); - start++; - } - var end = column; - while (end < line.length && line.charAt(end).match(re)) { - end++; - } - return new Range(row, start, row, end); - }; - EditSession.prototype.getAWordRange = function (row, column) { - var wordRange = this.getWordRange(row, column); - var line = this.getLine(wordRange.end.row); - while (line.charAt(wordRange.end.column).match(/[ \t]/)) { - wordRange.end.column += 1; - } - return wordRange; - }; - EditSession.prototype.setNewLineMode = function (newLineMode) { - this.doc.setNewLineMode(newLineMode); - }; - EditSession.prototype.getNewLineMode = function () { - return this.doc.getNewLineMode(); - }; - EditSession.prototype.setUseWorker = function (useWorker) { this.setOption("useWorker", useWorker); }; - EditSession.prototype.getUseWorker = function () { return this.$useWorker; }; - EditSession.prototype.onReloadTokenizer = function (e) { - var rows = e.data; - this.bgTokenizer.start(rows.first); - this._signal("tokenizerUpdate", e); - }; - EditSession.prototype.setMode = function (mode, cb) { - if (mode && typeof mode === "object") { - if (mode.getTokenizer) - return this.$onChangeMode(mode); - var options = mode; - var path = options.path; - } - else { - path = mode || "ace/mode/text"; - } - if (!this.$modes["ace/mode/text"]) - this.$modes["ace/mode/text"] = new TextMode(); - if (this.$modes[path] && !options) { - this.$onChangeMode(this.$modes[path]); - cb && cb(); - return; - } - this.$modeId = path; - config.loadModule(["mode", path], function (m) { - if (this.$modeId !== path) - return cb && cb(); - if (this.$modes[path] && !options) { - this.$onChangeMode(this.$modes[path]); - } - else if (m && m.Mode) { - m = new m.Mode(options); - if (!options) { - this.$modes[path] = m; - m.$id = path; - } - this.$onChangeMode(m); - } - cb && cb(); - }.bind(this)); - if (!this.$mode) - this.$onChangeMode(this.$modes["ace/mode/text"], true); - }; - EditSession.prototype.$onChangeMode = function (mode, $isPlaceholder) { - if (!$isPlaceholder) - this.$modeId = mode.$id; - if (this.$mode === mode) - return; - var oldMode = this.$mode; - this.$mode = mode; - this.$stopWorker(); - if (this.$useWorker) - this.$startWorker(); - var tokenizer = mode.getTokenizer(); - if (tokenizer.on !== undefined) { - var onReloadTokenizer = this.onReloadTokenizer.bind(this); - tokenizer.on("update", onReloadTokenizer); - } - this.bgTokenizer.setTokenizer(tokenizer); - this.bgTokenizer.setDocument(this.getDocument()); - this.tokenRe = mode.tokenRe; - this.nonTokenRe = mode.nonTokenRe; - if (!$isPlaceholder) { - if (mode.attachToSession) - mode.attachToSession(this); - this.$options.wrapMethod.set.call(this, this.$wrapMethod); - this.$setFolding(mode.foldingRules); - this.bgTokenizer.start(0); - this._emit("changeMode", { oldMode: oldMode, mode: mode }); - } - }; - EditSession.prototype.$stopWorker = function () { - if (this.$worker) { - this.$worker.terminate(); - this.$worker = null; - } - }; - EditSession.prototype.$startWorker = function () { - try { - this.$worker = this.$mode.createWorker(this); - } - catch (e) { - config.warn("Could not load worker", e); - this.$worker = null; - } - }; - EditSession.prototype.getMode = function () { - return this.$mode; - }; - EditSession.prototype.setScrollTop = function (scrollTop) { - if (this.$scrollTop === scrollTop || isNaN(scrollTop)) - return; - this.$scrollTop = scrollTop; - this._signal("changeScrollTop", scrollTop); - }; - EditSession.prototype.getScrollTop = function () { - return this.$scrollTop; - }; - EditSession.prototype.setScrollLeft = function (scrollLeft) { - if (this.$scrollLeft === scrollLeft || isNaN(scrollLeft)) - return; - this.$scrollLeft = scrollLeft; - this._signal("changeScrollLeft", scrollLeft); - }; - EditSession.prototype.getScrollLeft = function () { - return this.$scrollLeft; - }; - EditSession.prototype.getScreenWidth = function () { - this.$computeWidth(); - if (this.lineWidgets) - return Math.max(this.getLineWidgetMaxWidth(), this.screenWidth); - return this.screenWidth; - }; - EditSession.prototype.getLineWidgetMaxWidth = function () { - if (this.lineWidgetsWidth != null) - return this.lineWidgetsWidth; - var width = 0; - this.lineWidgets.forEach(function (w) { - if (w && w.screenWidth > width) - width = w.screenWidth; - }); - return this.lineWidgetWidth = width; - }; - EditSession.prototype.$computeWidth = function (force) { - if (this.$modified || force) { - this.$modified = false; - if (this.$useWrapMode) - return this.screenWidth = this.$wrapLimit; - var lines = this.doc.getAllLines(); - var cache = this.$rowLengthCache; - var longestScreenLine = 0; - var foldIndex = 0; - var foldLine = this.$foldData[foldIndex]; - var foldStart = foldLine ? foldLine.start.row : Infinity; - var len = lines.length; - for (var i = 0; i < len; i++) { - if (i > foldStart) { - i = foldLine.end.row + 1; - if (i >= len) - break; - foldLine = this.$foldData[foldIndex++]; - foldStart = foldLine ? foldLine.start.row : Infinity; - } - if (cache[i] == null) - cache[i] = this.$getStringScreenWidth(lines[i])[0]; - if (cache[i] > longestScreenLine) - longestScreenLine = cache[i]; - } - this.screenWidth = longestScreenLine; - } - }; - EditSession.prototype.getLine = function (row) { - return this.doc.getLine(row); - }; - EditSession.prototype.getLines = function (firstRow, lastRow) { - return this.doc.getLines(firstRow, lastRow); - }; - EditSession.prototype.getLength = function () { - return this.doc.getLength(); - }; - EditSession.prototype.getTextRange = function (range) { - return this.doc.getTextRange(range || this.selection.getRange()); - }; - EditSession.prototype.insert = function (position, text) { - return this.doc.insert(position, text); - }; - EditSession.prototype.remove = function (range) { - return this.doc.remove(range); - }; - EditSession.prototype.removeFullLines = function (firstRow, lastRow) { - return this.doc.removeFullLines(firstRow, lastRow); - }; - EditSession.prototype.undoChanges = function (deltas, dontSelect) { - if (!deltas.length) - return; - this.$fromUndo = true; - for (var i = deltas.length - 1; i != -1; i--) { - var delta = deltas[i]; - if (delta.action == "insert" || delta.action == "remove") { - this.doc.revertDelta(delta); - } - else if (delta.folds) { - this.addFolds(delta.folds); - } - } - if (!dontSelect && this.$undoSelect) { - if (deltas.selectionBefore) - this.selection.fromJSON(deltas.selectionBefore); - else - this.selection.setRange(this.$getUndoSelection(deltas, true)); - } - this.$fromUndo = false; - }; - EditSession.prototype.redoChanges = function (deltas, dontSelect) { - if (!deltas.length) - return; - this.$fromUndo = true; - for (var i = 0; i < deltas.length; i++) { - var delta = deltas[i]; - if (delta.action == "insert" || delta.action == "remove") { - this.doc.$safeApplyDelta(delta); - } - } - if (!dontSelect && this.$undoSelect) { - if (deltas.selectionAfter) - this.selection.fromJSON(deltas.selectionAfter); - else - this.selection.setRange(this.$getUndoSelection(deltas, false)); - } - this.$fromUndo = false; - }; - EditSession.prototype.setUndoSelect = function (enable) { - this.$undoSelect = enable; - }; - EditSession.prototype.$getUndoSelection = function (deltas, isUndo) { - function isInsert(delta) { - return isUndo ? delta.action !== "insert" : delta.action === "insert"; - } - var range, point; - for (var i = 0; i < deltas.length; i++) { - var delta = deltas[i]; - if (!delta.start) - continue; // skip folds - if (!range) { - if (isInsert(delta)) { - range = Range.fromPoints(delta.start, delta.end); - } - else { - range = Range.fromPoints(delta.start, delta.start); - } - continue; - } - if (isInsert(delta)) { - point = delta.start; - if (range.compare(point.row, point.column) == -1) { - range.setStart(point); - } - point = delta.end; - if (range.compare(point.row, point.column) == 1) { - range.setEnd(point); - } - } - else { - point = delta.start; - if (range.compare(point.row, point.column) == -1) { - range = Range.fromPoints(delta.start, delta.start); - } - } - } - return range; - }; - EditSession.prototype.replace = function (range, text) { - return this.doc.replace(range, text); - }; - EditSession.prototype.moveText = function (fromRange, toPosition, copy) { - var text = this.getTextRange(fromRange); - var folds = this.getFoldsInRange(fromRange); - var toRange = Range.fromPoints(toPosition, toPosition); - if (!copy) { - this.remove(fromRange); - var rowDiff = fromRange.start.row - fromRange.end.row; - var collDiff = rowDiff ? -fromRange.end.column : fromRange.start.column - fromRange.end.column; - if (collDiff) { - if (toRange.start.row == fromRange.end.row && toRange.start.column > fromRange.end.column) - toRange.start.column += collDiff; - if (toRange.end.row == fromRange.end.row && toRange.end.column > fromRange.end.column) - toRange.end.column += collDiff; - } - if (rowDiff && toRange.start.row >= fromRange.end.row) { - toRange.start.row += rowDiff; - toRange.end.row += rowDiff; - } - } - toRange.end = this.insert(toRange.start, text); - if (folds.length) { - var oldStart = fromRange.start; - var newStart = toRange.start; - var rowDiff = newStart.row - oldStart.row; - var collDiff = newStart.column - oldStart.column; - this.addFolds(folds.map(function (x) { - x = x.clone(); - if (x.start.row == oldStart.row) - x.start.column += collDiff; - if (x.end.row == oldStart.row) - x.end.column += collDiff; - x.start.row += rowDiff; - x.end.row += rowDiff; - return x; - })); - } - return toRange; - }; - EditSession.prototype.indentRows = function (startRow, endRow, indentString) { - indentString = indentString.replace(/\t/g, this.getTabString()); - for (var row = startRow; row <= endRow; row++) - this.doc.insertInLine({ row: row, column: 0 }, indentString); - }; - EditSession.prototype.outdentRows = function (range) { - var rowRange = range.collapseRows(); - var deleteRange = new Range(0, 0, 0, 0); - var size = this.getTabSize(); - for (var i = rowRange.start.row; i <= rowRange.end.row; ++i) { - var line = this.getLine(i); - deleteRange.start.row = i; - deleteRange.end.row = i; - for (var j = 0; j < size; ++j) - if (line.charAt(j) != ' ') - break; - if (j < size && line.charAt(j) == '\t') { - deleteRange.start.column = j; - deleteRange.end.column = j + 1; - } - else { - deleteRange.start.column = 0; - deleteRange.end.column = j; - } - this.remove(deleteRange); - } - }; - EditSession.prototype.$moveLines = function (firstRow, lastRow, dir) { - firstRow = this.getRowFoldStart(firstRow); - lastRow = this.getRowFoldEnd(lastRow); - if (dir < 0) { - var row = this.getRowFoldStart(firstRow + dir); - if (row < 0) - return 0; - var diff = row - firstRow; - } - else if (dir > 0) { - var row = this.getRowFoldEnd(lastRow + dir); - if (row > this.doc.getLength() - 1) - return 0; - var diff = row - lastRow; - } - else { - firstRow = this.$clipRowToDocument(firstRow); - lastRow = this.$clipRowToDocument(lastRow); - var diff = lastRow - firstRow + 1; - } - var range = new Range(firstRow, 0, lastRow, Number.MAX_VALUE); - var folds = this.getFoldsInRange(range).map(function (x) { - x = x.clone(); - x.start.row += diff; - x.end.row += diff; - return x; - }); - var lines = dir == 0 - ? this.doc.getLines(firstRow, lastRow) - : this.doc.removeFullLines(firstRow, lastRow); - this.doc.insertFullLines(firstRow + diff, lines); - folds.length && this.addFolds(folds); - return diff; - }; - EditSession.prototype.moveLinesUp = function (firstRow, lastRow) { - return this.$moveLines(firstRow, lastRow, -1); - }; - EditSession.prototype.moveLinesDown = function (firstRow, lastRow) { - return this.$moveLines(firstRow, lastRow, 1); - }; - EditSession.prototype.duplicateLines = function (firstRow, lastRow) { - return this.$moveLines(firstRow, lastRow, 0); - }; - EditSession.prototype.$clipRowToDocument = function (row) { - return Math.max(0, Math.min(row, this.doc.getLength() - 1)); - }; - EditSession.prototype.$clipColumnToRow = function (row, column) { - if (column < 0) - return 0; - return Math.min(this.doc.getLine(row).length, column); - }; - EditSession.prototype.$clipPositionToDocument = function (row, column) { - column = Math.max(0, column); - if (row < 0) { - row = 0; - column = 0; - } - else { - var len = this.doc.getLength(); - if (row >= len) { - row = len - 1; - column = this.doc.getLine(len - 1).length; - } - else { - column = Math.min(this.doc.getLine(row).length, column); - } - } - return { - row: row, - column: column - }; - }; - EditSession.prototype.$clipRangeToDocument = function (range) { - if (range.start.row < 0) { - range.start.row = 0; - range.start.column = 0; - } - else { - range.start.column = this.$clipColumnToRow(range.start.row, range.start.column); - } - var len = this.doc.getLength() - 1; - if (range.end.row > len) { - range.end.row = len; - range.end.column = this.doc.getLine(len).length; - } - else { - range.end.column = this.$clipColumnToRow(range.end.row, range.end.column); - } - return range; - }; - EditSession.prototype.setUseWrapMode = function (useWrapMode) { - if (useWrapMode != this.$useWrapMode) { - this.$useWrapMode = useWrapMode; - this.$modified = true; - this.$resetRowCache(0); - if (useWrapMode) { - var len = this.getLength(); - this.$wrapData = Array(len); - this.$updateWrapData(0, len - 1); - } - this._signal("changeWrapMode"); - } - }; - EditSession.prototype.getUseWrapMode = function () { - return this.$useWrapMode; - }; - EditSession.prototype.setWrapLimitRange = function (min, max) { - if (this.$wrapLimitRange.min !== min || this.$wrapLimitRange.max !== max) { - this.$wrapLimitRange = { min: min, max: max }; - this.$modified = true; - this.$bidiHandler.markAsDirty(); - if (this.$useWrapMode) - this._signal("changeWrapMode"); - } - }; - EditSession.prototype.adjustWrapLimit = function (desiredLimit, $printMargin) { - var limits = this.$wrapLimitRange; - if (limits.max < 0) - limits = { min: $printMargin, max: $printMargin }; - var wrapLimit = this.$constrainWrapLimit(desiredLimit, limits.min, limits.max); - if (wrapLimit != this.$wrapLimit && wrapLimit > 1) { - this.$wrapLimit = wrapLimit; - this.$modified = true; - if (this.$useWrapMode) { - this.$updateWrapData(0, this.getLength() - 1); - this.$resetRowCache(0); - this._signal("changeWrapLimit"); - } - return true; - } - return false; - }; - EditSession.prototype.$constrainWrapLimit = function (wrapLimit, min, max) { - if (min) - wrapLimit = Math.max(min, wrapLimit); - if (max) - wrapLimit = Math.min(max, wrapLimit); - return wrapLimit; - }; - EditSession.prototype.getWrapLimit = function () { - return this.$wrapLimit; - }; - EditSession.prototype.setWrapLimit = function (limit) { - this.setWrapLimitRange(limit, limit); - }; - EditSession.prototype.getWrapLimitRange = function () { - return { - min: this.$wrapLimitRange.min, - max: this.$wrapLimitRange.max - }; - }; - EditSession.prototype.$updateInternalDataOnChange = function (delta) { - var useWrapMode = this.$useWrapMode; - var action = delta.action; - var start = delta.start; - var end = delta.end; - var firstRow = start.row; - var lastRow = end.row; - var len = lastRow - firstRow; - var removedFolds = null; - this.$updating = true; - if (len != 0) { - if (action === "remove") { - this[useWrapMode ? "$wrapData" : "$rowLengthCache"].splice(firstRow, len); - var foldLines = this.$foldData; - removedFolds = this.getFoldsInRange(delta); - this.removeFolds(removedFolds); - var foldLine = this.getFoldLine(end.row); - var idx = 0; - if (foldLine) { - foldLine.addRemoveChars(end.row, end.column, start.column - end.column); - foldLine.shiftRow(-len); - var foldLineBefore = this.getFoldLine(firstRow); - if (foldLineBefore && foldLineBefore !== foldLine) { - foldLineBefore.merge(foldLine); - foldLine = foldLineBefore; - } - idx = foldLines.indexOf(foldLine) + 1; - } - for (idx; idx < foldLines.length; idx++) { - var foldLine = foldLines[idx]; - if (foldLine.start.row >= end.row) { - foldLine.shiftRow(-len); - } - } - lastRow = firstRow; - } - else { - var args = Array(len); - args.unshift(firstRow, 0); - var arr = useWrapMode ? this.$wrapData : this.$rowLengthCache; - arr.splice.apply(arr, args); - var foldLines = this.$foldData; - var foldLine = this.getFoldLine(firstRow); - var idx = 0; - if (foldLine) { - var cmp = foldLine.range.compareInside(start.row, start.column); - if (cmp == 0) { - foldLine = foldLine.split(start.row, start.column); - if (foldLine) { - foldLine.shiftRow(len); - foldLine.addRemoveChars(lastRow, 0, end.column - start.column); - } - } - else - if (cmp == -1) { - foldLine.addRemoveChars(firstRow, 0, end.column - start.column); - foldLine.shiftRow(len); - } - idx = foldLines.indexOf(foldLine) + 1; - } - for (idx; idx < foldLines.length; idx++) { - var foldLine = foldLines[idx]; - if (foldLine.start.row >= firstRow) { - foldLine.shiftRow(len); - } - } - } - } - else { - len = Math.abs(delta.start.column - delta.end.column); - if (action === "remove") { - removedFolds = this.getFoldsInRange(delta); - this.removeFolds(removedFolds); - len = -len; - } - var foldLine = this.getFoldLine(firstRow); - if (foldLine) { - foldLine.addRemoveChars(firstRow, start.column, len); - } - } - if (useWrapMode && this.$wrapData.length != this.doc.getLength()) { - console.error("doc.getLength() and $wrapData.length have to be the same!"); - } - this.$updating = false; - if (useWrapMode) - this.$updateWrapData(firstRow, lastRow); - else - this.$updateRowLengthCache(firstRow, lastRow); - return removedFolds; - }; - EditSession.prototype.$updateRowLengthCache = function (firstRow, lastRow, b) { - this.$rowLengthCache[firstRow] = null; - this.$rowLengthCache[lastRow] = null; - }; - EditSession.prototype.$updateWrapData = function (firstRow, lastRow) { - var lines = this.doc.getAllLines(); - var tabSize = this.getTabSize(); - var wrapData = this.$wrapData; - var wrapLimit = this.$wrapLimit; - var tokens; - var foldLine; - var row = firstRow; - lastRow = Math.min(lastRow, lines.length - 1); - while (row <= lastRow) { - foldLine = this.getFoldLine(row, foldLine); - if (!foldLine) { - tokens = this.$getDisplayTokens(lines[row]); - wrapData[row] = this.$computeWrapSplits(tokens, wrapLimit, tabSize); - row++; - } - else { - tokens = []; - foldLine.walk(function (placeholder, row, column, lastColumn) { - var walkTokens; - if (placeholder != null) { - walkTokens = this.$getDisplayTokens(placeholder, tokens.length); - walkTokens[0] = PLACEHOLDER_START; - for (var i = 1; i < walkTokens.length; i++) { - walkTokens[i] = PLACEHOLDER_BODY; - } - } - else { - walkTokens = this.$getDisplayTokens(lines[row].substring(lastColumn, column), tokens.length); - } - tokens = tokens.concat(walkTokens); - }.bind(this), foldLine.end.row, lines[foldLine.end.row].length + 1); - wrapData[foldLine.start.row] = this.$computeWrapSplits(tokens, wrapLimit, tabSize); - row = foldLine.end.row + 1; - } - } - }; - EditSession.prototype.$computeWrapSplits = function (tokens, wrapLimit, tabSize) { - if (tokens.length == 0) { - return []; - } - var splits = []; - var displayLength = tokens.length; - var lastSplit = 0, lastDocSplit = 0; - var isCode = this.$wrapAsCode; - var indentedSoftWrap = this.$indentedSoftWrap; - var maxIndent = wrapLimit <= Math.max(2 * tabSize, 8) - || indentedSoftWrap === false ? 0 : Math.floor(wrapLimit / 2); - function getWrapIndent() { - var indentation = 0; - if (maxIndent === 0) - return indentation; - if (indentedSoftWrap) { - for (var i = 0; i < tokens.length; i++) { - var token = tokens[i]; - if (token == SPACE) - indentation += 1; - else if (token == TAB) - indentation += tabSize; - else if (token == TAB_SPACE) - continue; - else - break; - } - } - if (isCode && indentedSoftWrap !== false) - indentation += tabSize; - return Math.min(indentation, maxIndent); - } - function addSplit(screenPos) { - var len = screenPos - lastSplit; - for (var i = lastSplit; i < screenPos; i++) { - var ch = tokens[i]; - if (ch === 12 || ch === 2) - len -= 1; - } - if (!splits.length) { - indent = getWrapIndent(); - splits.indent = indent; - } - lastDocSplit += len; - splits.push(lastDocSplit); - lastSplit = screenPos; - } - var indent = 0; - while (displayLength - lastSplit > wrapLimit - indent) { - var split = lastSplit + wrapLimit - indent; - if (tokens[split - 1] >= SPACE && tokens[split] >= SPACE) { - addSplit(split); - continue; - } - if (tokens[split] == PLACEHOLDER_START || tokens[split] == PLACEHOLDER_BODY) { - for (split; split != lastSplit - 1; split--) { - if (tokens[split] == PLACEHOLDER_START) { - break; - } - } - if (split > lastSplit) { - addSplit(split); - continue; - } - split = lastSplit + wrapLimit; - for (split; split < tokens.length; split++) { - if (tokens[split] != PLACEHOLDER_BODY) { - break; - } - } - if (split == tokens.length) { - break; // Breaks the while-loop. - } - addSplit(split); - continue; - } - var minSplit = Math.max(split - (wrapLimit - (wrapLimit >> 2)), lastSplit - 1); - while (split > minSplit && tokens[split] < PLACEHOLDER_START) { - split--; - } - if (isCode) { - while (split > minSplit && tokens[split] < PLACEHOLDER_START) { - split--; - } - while (split > minSplit && tokens[split] == PUNCTUATION) { - split--; - } - } - else { - while (split > minSplit && tokens[split] < SPACE) { - split--; - } - } - if (split > minSplit) { - addSplit(++split); - continue; - } - split = lastSplit + wrapLimit; - if (tokens[split] == CHAR_EXT) - split--; - addSplit(split - indent); - } - return splits; - }; - EditSession.prototype.$getDisplayTokens = function (str, offset) { - var arr = []; - var tabSize; - offset = offset || 0; - for (var i = 0; i < str.length; i++) { - var c = str.charCodeAt(i); - if (c == 9) { - tabSize = this.getScreenTabSize(arr.length + offset); - arr.push(TAB); - for (var n = 1; n < tabSize; n++) { - arr.push(TAB_SPACE); - } - } - else if (c == 32) { - arr.push(SPACE); - } - else if ((c > 39 && c < 48) || (c > 57 && c < 64)) { - arr.push(PUNCTUATION); - } - else if (c >= 0x1100 && isFullWidth(c)) { - arr.push(CHAR, CHAR_EXT); - } - else { - arr.push(CHAR); - } - } - return arr; - }; - EditSession.prototype.$getStringScreenWidth = function (str, maxScreenColumn, screenColumn) { - if (maxScreenColumn == 0) - return [0, 0]; - if (maxScreenColumn == null) - maxScreenColumn = Infinity; - screenColumn = screenColumn || 0; - var c, column; - for (column = 0; column < str.length; column++) { - c = str.charCodeAt(column); - if (c == 9) { - screenColumn += this.getScreenTabSize(screenColumn); - } - else if (c >= 0x1100 && isFullWidth(c)) { - screenColumn += 2; - } - else { - screenColumn += 1; - } - if (screenColumn > maxScreenColumn) { - break; - } - } - return [screenColumn, column]; - }; - EditSession.prototype.getRowLength = function (row) { - var h = 1; - if (this.lineWidgets) - h += this.lineWidgets[row] && this.lineWidgets[row].rowCount || 0; - if (!this.$useWrapMode || !this.$wrapData[row]) - return h; - else - return this.$wrapData[row].length + h; - }; - EditSession.prototype.getRowLineCount = function (row) { - if (!this.$useWrapMode || !this.$wrapData[row]) { - return 1; - } - else { - return this.$wrapData[row].length + 1; - } - }; - EditSession.prototype.getRowWrapIndent = function (screenRow) { - if (this.$useWrapMode) { - var pos = this.screenToDocumentPosition(screenRow, Number.MAX_VALUE); - var splits = this.$wrapData[pos.row]; - return splits.length && splits[0] < pos.column ? splits.indent : 0; - } - else { - return 0; - } - }; - EditSession.prototype.getScreenLastRowColumn = function (screenRow) { - var pos = this.screenToDocumentPosition(screenRow, Number.MAX_VALUE); - return this.documentToScreenColumn(pos.row, pos.column); - }; - EditSession.prototype.getDocumentLastRowColumn = function (docRow, docColumn) { - var screenRow = this.documentToScreenRow(docRow, docColumn); - return this.getScreenLastRowColumn(screenRow); - }; - EditSession.prototype.getDocumentLastRowColumnPosition = function (docRow, docColumn) { - var screenRow = this.documentToScreenRow(docRow, docColumn); - return this.screenToDocumentPosition(screenRow, Number.MAX_VALUE / 10); - }; - EditSession.prototype.getRowSplitData = function (row) { - if (!this.$useWrapMode) { - return undefined; - } - else { - return this.$wrapData[row]; - } - }; - EditSession.prototype.getScreenTabSize = function (screenColumn) { - return this.$tabSize - (screenColumn % this.$tabSize | 0); - }; - EditSession.prototype.screenToDocumentRow = function (screenRow, screenColumn) { - return this.screenToDocumentPosition(screenRow, screenColumn).row; - }; - EditSession.prototype.screenToDocumentColumn = function (screenRow, screenColumn) { - return this.screenToDocumentPosition(screenRow, screenColumn).column; - }; - EditSession.prototype.screenToDocumentPosition = function (screenRow, screenColumn, offsetX) { - if (screenRow < 0) - return { row: 0, column: 0 }; - var line; - var docRow = 0; - var docColumn = 0; - var column; - var row = 0; - var rowLength = 0; - var rowCache = this.$screenRowCache; - var i = this.$getRowCacheIndex(rowCache, screenRow); - var l = rowCache.length; - if (l && i >= 0) { - var row = rowCache[i]; - var docRow = this.$docRowCache[i]; - var doCache = screenRow > rowCache[l - 1]; - } - else { - var doCache = !l; - } - var maxRow = this.getLength() - 1; - var foldLine = this.getNextFoldLine(docRow); - var foldStart = foldLine ? foldLine.start.row : Infinity; - while (row <= screenRow) { - rowLength = this.getRowLength(docRow); - if (row + rowLength > screenRow || docRow >= maxRow) { - break; - } - else { - row += rowLength; - docRow++; - if (docRow > foldStart) { - docRow = foldLine.end.row + 1; - foldLine = this.getNextFoldLine(docRow, foldLine); - foldStart = foldLine ? foldLine.start.row : Infinity; - } - } - if (doCache) { - this.$docRowCache.push(docRow); - this.$screenRowCache.push(row); - } - } - if (foldLine && foldLine.start.row <= docRow) { - line = this.getFoldDisplayLine(foldLine); - docRow = foldLine.start.row; - } - else if (row + rowLength <= screenRow || docRow > maxRow) { - return { - row: maxRow, - column: this.getLine(maxRow).length - }; - } - else { - line = this.getLine(docRow); - foldLine = null; - } - var wrapIndent = 0, splitIndex = Math.floor(screenRow - row); - if (this.$useWrapMode) { - var splits = this.$wrapData[docRow]; - if (splits) { - column = splits[splitIndex]; - if (splitIndex > 0 && splits.length) { - wrapIndent = splits.indent; - docColumn = splits[splitIndex - 1] || splits[splits.length - 1]; - line = line.substring(docColumn); - } - } - } - if (offsetX !== undefined && this.$bidiHandler.isBidiRow(row + splitIndex, docRow, splitIndex)) - screenColumn = this.$bidiHandler.offsetToCol(offsetX); - docColumn += this.$getStringScreenWidth(line, screenColumn - wrapIndent)[1]; - if (this.$useWrapMode && docColumn >= column) - docColumn = column - 1; - if (foldLine) - return foldLine.idxToPosition(docColumn); - return { row: docRow, column: docColumn }; - }; - EditSession.prototype.documentToScreenPosition = function (docRow, docColumn) { - if (typeof docColumn === "undefined") - var pos = this.$clipPositionToDocument(docRow.row, docRow.column); - else - pos = this.$clipPositionToDocument(docRow, docColumn); - docRow = pos.row; - docColumn = pos.column; - var screenRow = 0; - var foldStartRow = null; - var fold = null; - fold = this.getFoldAt(docRow, docColumn, 1); - if (fold) { - docRow = fold.start.row; - docColumn = fold.start.column; - } - var rowEnd, row = 0; - var rowCache = this.$docRowCache; - var i = this.$getRowCacheIndex(rowCache, docRow); - var l = rowCache.length; - if (l && i >= 0) { - var row = rowCache[i]; - var screenRow = this.$screenRowCache[i]; - var doCache = docRow > rowCache[l - 1]; - } - else { - var doCache = !l; - } - var foldLine = this.getNextFoldLine(row); - var foldStart = foldLine ? foldLine.start.row : Infinity; - while (row < docRow) { - if (row >= foldStart) { - rowEnd = foldLine.end.row + 1; - if (rowEnd > docRow) - break; - foldLine = this.getNextFoldLine(rowEnd, foldLine); - foldStart = foldLine ? foldLine.start.row : Infinity; - } - else { - rowEnd = row + 1; - } - screenRow += this.getRowLength(row); - row = rowEnd; - if (doCache) { - this.$docRowCache.push(row); - this.$screenRowCache.push(screenRow); - } - } - var textLine = ""; - if (foldLine && row >= foldStart) { - textLine = this.getFoldDisplayLine(foldLine, docRow, docColumn); - foldStartRow = foldLine.start.row; - } - else { - textLine = this.getLine(docRow).substring(0, docColumn); - foldStartRow = docRow; - } - var wrapIndent = 0; - if (this.$useWrapMode) { - var wrapRow = this.$wrapData[foldStartRow]; - if (wrapRow) { - var screenRowOffset = 0; - while (textLine.length >= wrapRow[screenRowOffset]) { - screenRow++; - screenRowOffset++; - } - textLine = textLine.substring(wrapRow[screenRowOffset - 1] || 0, textLine.length); - wrapIndent = screenRowOffset > 0 ? wrapRow.indent : 0; - } - } - if (this.lineWidgets && this.lineWidgets[row] && this.lineWidgets[row].rowsAbove) - screenRow += this.lineWidgets[row].rowsAbove; - return { - row: screenRow, - column: wrapIndent + this.$getStringScreenWidth(textLine)[0] - }; - }; - EditSession.prototype.documentToScreenColumn = function (row, docColumn) { - return this.documentToScreenPosition(row, docColumn).column; - }; - EditSession.prototype.documentToScreenRow = function (docRow, docColumn) { - return this.documentToScreenPosition(docRow, docColumn).row; - }; - EditSession.prototype.getScreenLength = function () { - var screenRows = 0; - var fold = null; - if (!this.$useWrapMode) { - screenRows = this.getLength(); - var foldData = this.$foldData; - for (var i = 0; i < foldData.length; i++) { - fold = foldData[i]; - screenRows -= fold.end.row - fold.start.row; - } - } - else { - var lastRow = this.$wrapData.length; - var row = 0, i = 0; - var fold = this.$foldData[i++]; - var foldStart = fold ? fold.start.row : Infinity; - while (row < lastRow) { - var splits = this.$wrapData[row]; - screenRows += splits ? splits.length + 1 : 1; - row++; - if (row > foldStart) { - row = fold.end.row + 1; - fold = this.$foldData[i++]; - foldStart = fold ? fold.start.row : Infinity; - } - } - } - if (this.lineWidgets) - screenRows += this.$getWidgetScreenLength(); - return screenRows; - }; - EditSession.prototype.$setFontMetrics = function (fm) { - if (!this.$enableVarChar) - return; - this.$getStringScreenWidth = function (str, maxScreenColumn, screenColumn) { - if (maxScreenColumn === 0) - return [0, 0]; - if (!maxScreenColumn) - maxScreenColumn = Infinity; - screenColumn = screenColumn || 0; - var c, column; - for (column = 0; column < str.length; column++) { - c = str.charAt(column); - if (c === "\t") { - screenColumn += this.getScreenTabSize(screenColumn); - } - else { - screenColumn += fm.getCharacterWidth(c); - } - if (screenColumn > maxScreenColumn) { - break; - } - } - return [screenColumn, column]; - }; - }; - EditSession.prototype.destroy = function () { - if (!this.destroyed) { - this.bgTokenizer.setDocument(null); - this.bgTokenizer.cleanup(); - this.destroyed = true; - } - this.$stopWorker(); - this.removeAllListeners(); - if (this.doc) { - this.doc.off("change", this.$onChange); - } - this.selection.detach(); - }; - return EditSession; -}()); -EditSession.$uid = 0; -EditSession.prototype.$modes = config.$modes; -EditSession.prototype.getValue = EditSession.prototype.toString; -EditSession.prototype.$defaultUndoManager = { - undo: function () { }, - redo: function () { }, - hasUndo: function () { }, - hasRedo: function () { }, - reset: function () { }, - add: function () { }, - addSelection: function () { }, - startNewGroup: function () { }, - addSession: function () { } -}; -EditSession.prototype.$overwrite = false; -EditSession.prototype.$mode = null; -EditSession.prototype.$modeId = null; -EditSession.prototype.$scrollTop = 0; -EditSession.prototype.$scrollLeft = 0; -EditSession.prototype.$wrapLimit = 80; -EditSession.prototype.$useWrapMode = false; -EditSession.prototype.$wrapLimitRange = { - min: null, - max: null -}; -EditSession.prototype.lineWidgets = null; -EditSession.prototype.isFullWidth = isFullWidth; -oop.implement(EditSession.prototype, EventEmitter); -var CHAR = 1, CHAR_EXT = 2, PLACEHOLDER_START = 3, PLACEHOLDER_BODY = 4, PUNCTUATION = 9, SPACE = 10, TAB = 11, TAB_SPACE = 12; -function isFullWidth(c) { - if (c < 0x1100) - return false; - return c >= 0x1100 && c <= 0x115F || - c >= 0x11A3 && c <= 0x11A7 || - c >= 0x11FA && c <= 0x11FF || - c >= 0x2329 && c <= 0x232A || - c >= 0x2E80 && c <= 0x2E99 || - c >= 0x2E9B && c <= 0x2EF3 || - c >= 0x2F00 && c <= 0x2FD5 || - c >= 0x2FF0 && c <= 0x2FFB || - c >= 0x3000 && c <= 0x303E || - c >= 0x3041 && c <= 0x3096 || - c >= 0x3099 && c <= 0x30FF || - c >= 0x3105 && c <= 0x312D || - c >= 0x3131 && c <= 0x318E || - c >= 0x3190 && c <= 0x31BA || - c >= 0x31C0 && c <= 0x31E3 || - c >= 0x31F0 && c <= 0x321E || - c >= 0x3220 && c <= 0x3247 || - c >= 0x3250 && c <= 0x32FE || - c >= 0x3300 && c <= 0x4DBF || - c >= 0x4E00 && c <= 0xA48C || - c >= 0xA490 && c <= 0xA4C6 || - c >= 0xA960 && c <= 0xA97C || - c >= 0xAC00 && c <= 0xD7A3 || - c >= 0xD7B0 && c <= 0xD7C6 || - c >= 0xD7CB && c <= 0xD7FB || - c >= 0xF900 && c <= 0xFAFF || - c >= 0xFE10 && c <= 0xFE19 || - c >= 0xFE30 && c <= 0xFE52 || - c >= 0xFE54 && c <= 0xFE66 || - c >= 0xFE68 && c <= 0xFE6B || - c >= 0xFF01 && c <= 0xFF60 || - c >= 0xFFE0 && c <= 0xFFE6; -} -require("./edit_session/folding").Folding.call(EditSession.prototype); -require("./edit_session/bracket_match").BracketMatch.call(EditSession.prototype); -config.defineOptions(EditSession.prototype, "session", { - wrap: { - set: function (value) { - if (!value || value == "off") - value = false; - else if (value == "free") - value = true; - else if (value == "printMargin") - value = -1; - else if (typeof value == "string") - value = parseInt(value, 10) || false; - if (this.$wrap == value) - return; - this.$wrap = value; - if (!value) { - this.setUseWrapMode(false); - } - else { - var col = typeof value == "number" ? value : null; - this.setWrapLimitRange(col, col); - this.setUseWrapMode(true); - } - }, - get: function () { - if (this.getUseWrapMode()) { - if (this.$wrap == -1) - return "printMargin"; - if (!this.getWrapLimitRange().min) - return "free"; - return this.$wrap; - } - return "off"; - }, - handlesSet: true - }, - wrapMethod: { - set: function (val) { - val = val == "auto" - ? this.$mode.type != "text" - : val != "text"; - if (val != this.$wrapAsCode) { - this.$wrapAsCode = val; - if (this.$useWrapMode) { - this.$useWrapMode = false; - this.setUseWrapMode(true); - } - } - }, - initialValue: "auto" - }, - indentedSoftWrap: { - set: function () { - if (this.$useWrapMode) { - this.$useWrapMode = false; - this.setUseWrapMode(true); - } - }, - initialValue: true - }, - firstLineNumber: { - set: function () { this._signal("changeBreakpoint"); }, - initialValue: 1 - }, - useWorker: { - set: function (useWorker) { - this.$useWorker = useWorker; - this.$stopWorker(); - if (useWorker) - this.$startWorker(); - }, - initialValue: true - }, - useSoftTabs: { initialValue: true }, - tabSize: { - set: function (tabSize) { - tabSize = parseInt(tabSize); - if (tabSize > 0 && this.$tabSize !== tabSize) { - this.$modified = true; - this.$rowLengthCache = []; - this.$tabSize = tabSize; - this._signal("changeTabSize"); - } - }, - initialValue: 4, - handlesSet: true - }, - navigateWithinSoftTabs: { initialValue: false }, - foldStyle: { - set: function (val) { this.setFoldStyle(val); }, - handlesSet: true - }, - overwrite: { - set: function (val) { this._signal("changeOverwrite"); }, - initialValue: false - }, - newLineMode: { - set: function (val) { this.doc.setNewLineMode(val); }, - get: function () { return this.doc.getNewLineMode(); }, - handlesSet: true - }, - mode: { - set: function (val) { this.setMode(val); }, - get: function () { return this.$modeId; }, - handlesSet: true - } -}); -exports.EditSession = EditSession; - -}); - -ace.define("ace/search",["require","exports","module","ace/lib/lang","ace/lib/oop","ace/range"], function(require, exports, module){"use strict"; -var lang = require("./lib/lang"); -var oop = require("./lib/oop"); -var Range = require("./range").Range; -var Search = /** @class */ (function () { - function Search() { - this.$options = {}; - } - Search.prototype.set = function (options) { - oop.mixin(this.$options, options); - return this; - }; - Search.prototype.getOptions = function () { - return lang.copyObject(this.$options); - }; - Search.prototype.setOptions = function (options) { - this.$options = options; - }; - Search.prototype.find = function (session) { - var options = this.$options; - var iterator = this.$matchIterator(session, options); - if (!iterator) - return false; - var firstRange = null; - iterator.forEach(function (sr, sc, er, ec) { - firstRange = new Range(sr, sc, er, ec); - if (sc == ec && options.start && options.start.start - && options.skipCurrent != false && firstRange.isEqual(options.start)) { - firstRange = null; - return false; - } - return true; - }); - return firstRange; - }; - Search.prototype.findAll = function (session) { - var options = this.$options; - if (!options.needle) - return []; - this.$assembleRegExp(options); - var range = options.range; - var lines = range - ? session.getLines(range.start.row, range.end.row) - : session.doc.getAllLines(); - var ranges = []; - var re = options.re; - if (options.$isMultiLine) { - var len = re.length; - var maxRow = lines.length - len; - var prevRange; - outer: for (var row = re.offset || 0; row <= maxRow; row++) { - for (var j = 0; j < len; j++) - if (lines[row + j].search(re[j]) == -1) - continue outer; - var startLine = lines[row]; - var line = lines[row + len - 1]; - var startIndex = startLine.length - startLine.match(re[0])[0].length; - var endIndex = line.match(re[len - 1])[0].length; - if (prevRange && prevRange.end.row === row && - prevRange.end.column > startIndex) { - continue; - } - ranges.push(prevRange = new Range(row, startIndex, row + len - 1, endIndex)); - if (len > 2) - row = row + len - 2; - } - } - else { - for (var i = 0; i < lines.length; i++) { - var matches = lang.getMatchOffsets(lines[i], re); - for (var j = 0; j < matches.length; j++) { - var match = matches[j]; - ranges.push(new Range(i, match.offset, i, match.offset + match.length)); - } - } - } - if (range) { - var startColumn = range.start.column; - var endColumn = range.end.column; - var i = 0, j = ranges.length - 1; - while (i < j && ranges[i].start.column < startColumn && ranges[i].start.row == 0) - i++; - var endRow = range.end.row - range.start.row; - while (i < j && ranges[j].end.column > endColumn && ranges[j].end.row == endRow) - j--; - ranges = ranges.slice(i, j + 1); - for (i = 0, j = ranges.length; i < j; i++) { - ranges[i].start.row += range.start.row; - ranges[i].end.row += range.start.row; - } - } - return ranges; - }; - Search.prototype.replace = function (input, replacement) { - var options = this.$options; - var re = this.$assembleRegExp(options); - if (options.$isMultiLine) - return replacement; - if (!re) - return; - var match = re.exec(input); - if (!match || match[0].length != input.length) - return null; - replacement = input.replace(re, replacement); - if (options.preserveCase) { - replacement = replacement.split(""); - for (var i = Math.min(input.length, input.length); i--;) { - var ch = input[i]; - if (ch && ch.toLowerCase() != ch) - replacement[i] = replacement[i].toUpperCase(); - else - replacement[i] = replacement[i].toLowerCase(); - } - replacement = replacement.join(""); - } - return replacement; - }; - Search.prototype.$assembleRegExp = function (options, $disableFakeMultiline) { - if (options.needle instanceof RegExp) - return options.re = options.needle; - var needle = options.needle; - if (!options.needle) - return options.re = false; - if (!options.regExp) - needle = lang.escapeRegExp(needle); - var modifier = options.caseSensitive ? "gm" : "gmi"; - try { - new RegExp(needle, "u"); - options.$supportsUnicodeFlag = true; - modifier += "u"; - } - catch (e) { - options.$supportsUnicodeFlag = false; //left for backward compatibility with previous versions for cases like /ab\{2}/gu - } - if (options.wholeWord) - needle = addWordBoundary(needle, options); - options.$isMultiLine = !$disableFakeMultiline && /[\n\r]/.test(needle); - if (options.$isMultiLine) - return options.re = this.$assembleMultilineRegExp(needle, modifier); - try { - var re = new RegExp(needle, modifier); - } - catch (e) { - re = false; - } - return options.re = re; - }; - Search.prototype.$assembleMultilineRegExp = function (needle, modifier) { - var parts = needle.replace(/\r\n|\r|\n/g, "$\n^").split("\n"); - var re = []; - for (var i = 0; i < parts.length; i++) - try { - re.push(new RegExp(parts[i], modifier)); - } - catch (e) { - return false; - } - return re; - }; - Search.prototype.$matchIterator = function (session, options) { - var re = this.$assembleRegExp(options); - if (!re) - return false; - var backwards = options.backwards == true; - var skipCurrent = options.skipCurrent != false; - var supportsUnicodeFlag = re.unicode; - var range = options.range; - var start = options.start; - if (!start) - start = range ? range[backwards ? "end" : "start"] : session.selection.getRange(); - if (start.start) - start = start[skipCurrent != backwards ? "end" : "start"]; - var firstRow = range ? range.start.row : 0; - var lastRow = range ? range.end.row : session.getLength() - 1; - if (backwards) { - var forEach = function (callback) { - var row = start.row; - if (forEachInLine(row, start.column, callback)) - return; - for (row--; row >= firstRow; row--) - if (forEachInLine(row, Number.MAX_VALUE, callback)) - return; - if (options.wrap == false) - return; - for (row = lastRow, firstRow = start.row; row >= firstRow; row--) - if (forEachInLine(row, Number.MAX_VALUE, callback)) - return; - }; - } - else { - var forEach = function (callback) { - var row = start.row; - if (forEachInLine(row, start.column, callback)) - return; - for (row = row + 1; row <= lastRow; row++) - if (forEachInLine(row, 0, callback)) - return; - if (options.wrap == false) - return; - for (row = firstRow, lastRow = start.row; row <= lastRow; row++) - if (forEachInLine(row, 0, callback)) - return; - }; - } - if (options.$isMultiLine) { - var len = re.length; - var forEachInLine = function (row, offset, callback) { - var startRow = backwards ? row - len + 1 : row; - if (startRow < 0 || startRow + len > session.getLength()) - return; - var line = session.getLine(startRow); - var startIndex = line.search(re[0]); - if (!backwards && startIndex < offset || startIndex === -1) - return; - for (var i = 1; i < len; i++) { - line = session.getLine(startRow + i); - if (line.search(re[i]) == -1) - return; - } - var endIndex = line.match(re[len - 1])[0].length; - if (backwards && endIndex > offset) - return; - if (callback(startRow, startIndex, startRow + len - 1, endIndex)) - return true; - }; - } - else if (backwards) { - var forEachInLine = function (row, endIndex, callback) { - var line = session.getLine(row); - var matches = []; - var m, last = 0; - re.lastIndex = 0; - while ((m = re.exec(line))) { - var length = m[0].length; - last = m.index; - if (!length) { - if (last >= line.length) - break; - re.lastIndex = last += lang.skipEmptyMatch(line, last, supportsUnicodeFlag); - } - if (m.index + length > endIndex) - break; - matches.push(m.index, length); - } - for (var i = matches.length - 1; i >= 0; i -= 2) { - var column = matches[i - 1]; - var length = matches[i]; - if (callback(row, column, row, column + length)) - return true; - } - }; - } - else { - var forEachInLine = function (row, startIndex, callback) { - var line = session.getLine(row); - var last; - var m; - re.lastIndex = startIndex; - while ((m = re.exec(line))) { - var length = m[0].length; - last = m.index; - if (callback(row, last, row, last + length)) - return true; - if (!length) { - re.lastIndex = last += lang.skipEmptyMatch(line, last, supportsUnicodeFlag); - if (last >= line.length) - return false; - } - } - }; - } - return { forEach: forEach }; - }; - return Search; -}()); -function addWordBoundary(needle, options) { - var supportsLookbehind = lang.supportsLookbehind(); - function wordBoundary(c, firstChar) { - if (firstChar === void 0) { firstChar = true; } - var wordRegExp = supportsLookbehind && options.$supportsUnicodeFlag ? new RegExp("[\\p{L}\\p{N}_]", "u") : new RegExp("\\w"); - if (wordRegExp.test(c) || options.regExp) { - if (supportsLookbehind && options.$supportsUnicodeFlag) { - if (firstChar) - return "(?<=^|[^\\p{L}\\p{N}_])"; - return "(?=[^\\p{L}\\p{N}_]|$)"; - } - return "\\b"; - } - return ""; - } - var needleArray = Array.from(needle); - var firstChar = needleArray[0]; - var lastChar = needleArray[needleArray.length - 1]; - return wordBoundary(firstChar) + needle + wordBoundary(lastChar, false); -} -exports.Search = Search; - -}); - -ace.define("ace/keyboard/hash_handler",["require","exports","module","ace/lib/keys","ace/lib/useragent"], function(require, exports, module){"use strict"; -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - if (typeof b !== "function" && b !== null) - throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var keyUtil = require("../lib/keys"); -var useragent = require("../lib/useragent"); -var KEY_MODS = keyUtil.KEY_MODS; -var MultiHashHandler = /** @class */ (function () { - function MultiHashHandler(config, platform) { - this.$init(config, platform, false); - } - MultiHashHandler.prototype.$init = function (config, platform, $singleCommand) { - this.platform = platform || (useragent.isMac ? "mac" : "win"); - this.commands = {}; - this.commandKeyBinding = {}; - this.addCommands(config); - this.$singleCommand = $singleCommand; - }; - MultiHashHandler.prototype.addCommand = function (command) { - if (this.commands[command.name]) - this.removeCommand(command); - this.commands[command.name] = command; - if (command.bindKey) - this._buildKeyHash(command); - }; - MultiHashHandler.prototype.removeCommand = function (command, keepCommand) { - var name = command && (typeof command === 'string' ? command : command.name); - command = this.commands[name]; - if (!keepCommand) - delete this.commands[name]; - var ckb = this.commandKeyBinding; - for (var keyId in ckb) { - var cmdGroup = ckb[keyId]; - if (cmdGroup == command) { - delete ckb[keyId]; - } - else if (Array.isArray(cmdGroup)) { - var i = cmdGroup.indexOf(command); - if (i != -1) { - cmdGroup.splice(i, 1); - if (cmdGroup.length == 1) - ckb[keyId] = cmdGroup[0]; - } - } - } - }; - MultiHashHandler.prototype.bindKey = function (key, command, position) { - if (typeof key == "object" && key) { - if (position == undefined) - position = key.position; - key = key[this.platform]; - } - if (!key) - return; - if (typeof command == "function") - return this.addCommand({ exec: command, bindKey: key, name: command.name || key }); - key.split("|").forEach(function (keyPart) { - var chain = ""; - if (keyPart.indexOf(" ") != -1) { - var parts = keyPart.split(/\s+/); - keyPart = parts.pop(); - parts.forEach(function (keyPart) { - var binding = this.parseKeys(keyPart); - var id = KEY_MODS[binding.hashId] + binding.key; - chain += (chain ? " " : "") + id; - this._addCommandToBinding(chain, "chainKeys"); - }, this); - chain += " "; - } - var binding = this.parseKeys(keyPart); - var id = KEY_MODS[binding.hashId] + binding.key; - this._addCommandToBinding(chain + id, command, position); - }, this); - }; - MultiHashHandler.prototype._addCommandToBinding = function (keyId, command, position) { - var ckb = this.commandKeyBinding, i; - if (!command) { - delete ckb[keyId]; - } - else if (!ckb[keyId] || this.$singleCommand) { - ckb[keyId] = command; - } - else { - if (!Array.isArray(ckb[keyId])) { - ckb[keyId] = [ckb[keyId]]; - } - else if ((i = ckb[keyId].indexOf(command)) != -1) { - ckb[keyId].splice(i, 1); - } - if (typeof position != "number") { - position = getPosition(command); - } - var commands = ckb[keyId]; - for (i = 0; i < commands.length; i++) { - var other = commands[i]; - var otherPos = getPosition(other); - if (otherPos > position) - break; - } - commands.splice(i, 0, command); - } - }; - MultiHashHandler.prototype.addCommands = function (commands) { - commands && Object.keys(commands).forEach(function (name) { - var command = commands[name]; - if (!command) - return; - if (typeof command === "string") - return this.bindKey(command, name); - if (typeof command === "function") - command = { exec: command }; - if (typeof command !== "object") - return; - if (!command.name) - command.name = name; - this.addCommand(command); - }, this); - }; - MultiHashHandler.prototype.removeCommands = function (commands) { - Object.keys(commands).forEach(function (name) { - this.removeCommand(commands[name]); - }, this); - }; - MultiHashHandler.prototype.bindKeys = function (keyList) { - Object.keys(keyList).forEach(function (key) { - this.bindKey(key, keyList[key]); - }, this); - }; - MultiHashHandler.prototype._buildKeyHash = function (command) { - this.bindKey(command.bindKey, command); - }; - MultiHashHandler.prototype.parseKeys = function (keys) { - var parts = keys.toLowerCase().split(/[\-\+]([\-\+])?/).filter(function (x) { return x; }); - var key = parts.pop(); - var keyCode = keyUtil[key]; - if (keyUtil.FUNCTION_KEYS[keyCode]) - key = keyUtil.FUNCTION_KEYS[keyCode].toLowerCase(); - else if (!parts.length) - return { key: key, hashId: -1 }; - else if (parts.length == 1 && parts[0] == "shift") - return { key: key.toUpperCase(), hashId: -1 }; - var hashId = 0; - for (var i = parts.length; i--;) { - var modifier = keyUtil.KEY_MODS[parts[i]]; - if (modifier == null) { - if (typeof console != "undefined") - console.error("invalid modifier " + parts[i] + " in " + keys); - return false; - } - hashId |= modifier; - } - return { key: key, hashId: hashId }; - }; - MultiHashHandler.prototype.findKeyCommand = function (hashId, keyString) { - var key = KEY_MODS[hashId] + keyString; - return this.commandKeyBinding[key]; - }; - MultiHashHandler.prototype.handleKeyboard = function (data, hashId, keyString, keyCode) { - if (keyCode < 0) - return; - var key = KEY_MODS[hashId] + keyString; - var command = this.commandKeyBinding[key]; - if (data.$keyChain) { - data.$keyChain += " " + key; - command = this.commandKeyBinding[data.$keyChain] || command; - } - if (command) { - if (command == "chainKeys" || command[command.length - 1] == "chainKeys") { - data.$keyChain = data.$keyChain || key; - return { command: "null" }; - } - } - if (data.$keyChain) { - if ((!hashId || hashId == 4) && keyString.length == 1) - data.$keyChain = data.$keyChain.slice(0, -key.length - 1); // wait for input - else if (hashId == -1 || keyCode > 0) - data.$keyChain = ""; // reset keyChain - } - return { command: command }; - }; - MultiHashHandler.prototype.getStatusText = function (editor, data) { - return data.$keyChain || ""; - }; - return MultiHashHandler; -}()); -function getPosition(command) { - return typeof command == "object" && command.bindKey - && command.bindKey.position - || (command.isDefault ? -100 : 0); -} -var HashHandler = /** @class */ (function (_super) { - __extends(HashHandler, _super); - function HashHandler(config, platform) { - var _this = _super.call(this, config, platform) || this; - _this.$singleCommand = true; - return _this; - } - return HashHandler; -}(MultiHashHandler)); -HashHandler.call = function (thisArg, config, platform) { - MultiHashHandler.prototype.$init.call(thisArg, config, platform, true); -}; -MultiHashHandler.call = function (thisArg, config, platform) { - MultiHashHandler.prototype.$init.call(thisArg, config, platform, false); -}; -exports.HashHandler = HashHandler; -exports.MultiHashHandler = MultiHashHandler; - -}); - -ace.define("ace/commands/command_manager",["require","exports","module","ace/lib/oop","ace/keyboard/hash_handler","ace/lib/event_emitter"], function(require, exports, module){"use strict"; -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - if (typeof b !== "function" && b !== null) - throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var oop = require("../lib/oop"); -var MultiHashHandler = require("../keyboard/hash_handler").MultiHashHandler; -var EventEmitter = require("../lib/event_emitter").EventEmitter; -var CommandManager = /** @class */ (function (_super) { - __extends(CommandManager, _super); - function CommandManager(platform, commands) { - var _this = _super.call(this, commands, platform) || this; - _this.byName = _this.commands; - _this.setDefaultHandler("exec", function (e) { - if (!e.args) { - return e.command.exec(e.editor, {}, e.event, true); - } - return e.command.exec(e.editor, e.args, e.event, false); - }); - return _this; - } - CommandManager.prototype.exec = function (command, editor, args) { - if (Array.isArray(command)) { - for (var i = command.length; i--;) { - if (this.exec(command[i], editor, args)) - return true; - } - return false; - } - if (typeof command === "string") - command = this.commands[command]; - if (!command) - return false; - if (editor && editor.$readOnly && !command.readOnly) - return false; - if (this.$checkCommandState != false && command.isAvailable && !command.isAvailable(editor)) - return false; - var e = { editor: editor, command: command, args: args }; - e.returnValue = this._emit("exec", e); - this._signal("afterExec", e); - return e.returnValue === false ? false : true; - }; - CommandManager.prototype.toggleRecording = function (editor) { - if (this.$inReplay) - return; - editor && editor._emit("changeStatus"); - if (this.recording) { - this.macro.pop(); - this.off("exec", this.$addCommandToMacro); - if (!this.macro.length) - this.macro = this.oldMacro; - return this.recording = false; - } - if (!this.$addCommandToMacro) { - this.$addCommandToMacro = function (e) { - this.macro.push([e.command, e.args]); - }.bind(this); - } - this.oldMacro = this.macro; - this.macro = []; - this.on("exec", this.$addCommandToMacro); - return this.recording = true; - }; - CommandManager.prototype.replay = function (editor) { - if (this.$inReplay || !this.macro) - return; - if (this.recording) - return this.toggleRecording(editor); - try { - this.$inReplay = true; - this.macro.forEach(function (x) { - if (typeof x == "string") - this.exec(x, editor); - else - this.exec(x[0], editor, x[1]); - }, this); - } - finally { - this.$inReplay = false; - } - }; - CommandManager.prototype.trimMacro = function (m) { - return m.map(function (x) { - if (typeof x[0] != "string") - x[0] = x[0].name; - if (!x[1]) - x = x[0]; - return x; - }); - }; - return CommandManager; -}(MultiHashHandler)); -oop.implement(CommandManager.prototype, EventEmitter); -exports.CommandManager = CommandManager; - -}); - -ace.define("ace/commands/default_commands",["require","exports","module","ace/lib/lang","ace/config","ace/range"], function(require, exports, module){"use strict"; -var lang = require("../lib/lang"); -var config = require("../config"); -var Range = require("../range").Range; -function bindKey(win, mac) { - return { win: win, mac: mac }; -} -exports.commands = [{ - name: "showSettingsMenu", - description: "Show settings menu", - bindKey: bindKey("Ctrl-,", "Command-,"), - exec: function (editor) { - config.loadModule("ace/ext/settings_menu", function (module) { - module.init(editor); - editor.showSettingsMenu(); - }); - }, - readOnly: true - }, { - name: "goToNextError", - description: "Go to next error", - bindKey: bindKey("Alt-E", "F4"), - exec: function (editor) { - config.loadModule("ace/ext/error_marker", function (module) { - module.showErrorMarker(editor, 1); - }); - }, - scrollIntoView: "animate", - readOnly: true - }, { - name: "goToPreviousError", - description: "Go to previous error", - bindKey: bindKey("Alt-Shift-E", "Shift-F4"), - exec: function (editor) { - config.loadModule("ace/ext/error_marker", function (module) { - module.showErrorMarker(editor, -1); - }); - }, - scrollIntoView: "animate", - readOnly: true - }, { - name: "selectall", - description: "Select all", - bindKey: bindKey("Ctrl-A", "Command-A"), - exec: function (editor) { editor.selectAll(); }, - readOnly: true - }, { - name: "centerselection", - description: "Center selection", - bindKey: bindKey(null, "Ctrl-L"), - exec: function (editor) { editor.centerSelection(); }, - readOnly: true - }, { - name: "gotoline", - description: "Go to line...", - bindKey: bindKey("Ctrl-L", "Command-L"), - exec: function (editor, line) { - if (typeof line === "number" && !isNaN(line)) - editor.gotoLine(line); - editor.prompt({ $type: "gotoLine" }); - }, - readOnly: true - }, { - name: "fold", - bindKey: bindKey("Alt-L|Ctrl-F1", "Command-Alt-L|Command-F1"), - exec: function (editor) { editor.session.toggleFold(false); }, - multiSelectAction: "forEach", - scrollIntoView: "center", - readOnly: true - }, { - name: "unfold", - bindKey: bindKey("Alt-Shift-L|Ctrl-Shift-F1", "Command-Alt-Shift-L|Command-Shift-F1"), - exec: function (editor) { editor.session.toggleFold(true); }, - multiSelectAction: "forEach", - scrollIntoView: "center", - readOnly: true - }, { - name: "toggleFoldWidget", - description: "Toggle fold widget", - bindKey: bindKey("F2", "F2"), - exec: function (editor) { editor.session.toggleFoldWidget(); }, - multiSelectAction: "forEach", - scrollIntoView: "center", - readOnly: true - }, { - name: "toggleParentFoldWidget", - description: "Toggle parent fold widget", - bindKey: bindKey("Alt-F2", "Alt-F2"), - exec: function (editor) { editor.session.toggleFoldWidget(true); }, - multiSelectAction: "forEach", - scrollIntoView: "center", - readOnly: true - }, { - name: "foldall", - description: "Fold all", - bindKey: bindKey(null, "Ctrl-Command-Option-0"), - exec: function (editor) { editor.session.foldAll(); }, - scrollIntoView: "center", - readOnly: true - }, { - name: "foldAllComments", - description: "Fold all comments", - bindKey: bindKey(null, "Ctrl-Command-Option-0"), - exec: function (editor) { editor.session.foldAllComments(); }, - scrollIntoView: "center", - readOnly: true - }, { - name: "foldOther", - description: "Fold other", - bindKey: bindKey("Alt-0", "Command-Option-0"), - exec: function (editor) { - editor.session.foldAll(); - editor.session.unfold(editor.selection.getAllRanges()); - }, - scrollIntoView: "center", - readOnly: true - }, { - name: "unfoldall", - description: "Unfold all", - bindKey: bindKey("Alt-Shift-0", "Command-Option-Shift-0"), - exec: function (editor) { editor.session.unfold(); }, - scrollIntoView: "center", - readOnly: true - }, { - name: "findnext", - description: "Find next", - bindKey: bindKey("Ctrl-K", "Command-G"), - exec: function (editor) { editor.findNext(); }, - multiSelectAction: "forEach", - scrollIntoView: "center", - readOnly: true - }, { - name: "findprevious", - description: "Find previous", - bindKey: bindKey("Ctrl-Shift-K", "Command-Shift-G"), - exec: function (editor) { editor.findPrevious(); }, - multiSelectAction: "forEach", - scrollIntoView: "center", - readOnly: true - }, { - name: "selectOrFindNext", - description: "Select or find next", - bindKey: bindKey("Alt-K", "Ctrl-G"), - exec: function (editor) { - if (editor.selection.isEmpty()) - editor.selection.selectWord(); - else - editor.findNext(); - }, - readOnly: true - }, { - name: "selectOrFindPrevious", - description: "Select or find previous", - bindKey: bindKey("Alt-Shift-K", "Ctrl-Shift-G"), - exec: function (editor) { - if (editor.selection.isEmpty()) - editor.selection.selectWord(); - else - editor.findPrevious(); - }, - readOnly: true - }, { - name: "find", - description: "Find", - bindKey: bindKey("Ctrl-F", "Command-F"), - exec: function (editor) { - config.loadModule("ace/ext/searchbox", function (e) { e.Search(editor); }); - }, - readOnly: true - }, { - name: "overwrite", - description: "Overwrite", - bindKey: "Insert", - exec: function (editor) { editor.toggleOverwrite(); }, - readOnly: true - }, { - name: "selecttostart", - description: "Select to start", - bindKey: bindKey("Ctrl-Shift-Home", "Command-Shift-Home|Command-Shift-Up"), - exec: function (editor) { editor.getSelection().selectFileStart(); }, - multiSelectAction: "forEach", - readOnly: true, - scrollIntoView: "animate", - aceCommandGroup: "fileJump" - }, { - name: "gotostart", - description: "Go to start", - bindKey: bindKey("Ctrl-Home", "Command-Home|Command-Up"), - exec: function (editor) { editor.navigateFileStart(); }, - multiSelectAction: "forEach", - readOnly: true, - scrollIntoView: "animate", - aceCommandGroup: "fileJump" - }, { - name: "selectup", - description: "Select up", - bindKey: bindKey("Shift-Up", "Shift-Up|Ctrl-Shift-P"), - exec: function (editor) { editor.getSelection().selectUp(); }, - multiSelectAction: "forEach", - scrollIntoView: "cursor", - readOnly: true - }, { - name: "golineup", - description: "Go line up", - bindKey: bindKey("Up", "Up|Ctrl-P"), - exec: function (editor, args) { editor.navigateUp(args.times); }, - multiSelectAction: "forEach", - scrollIntoView: "cursor", - readOnly: true - }, { - name: "selecttoend", - description: "Select to end", - bindKey: bindKey("Ctrl-Shift-End", "Command-Shift-End|Command-Shift-Down"), - exec: function (editor) { editor.getSelection().selectFileEnd(); }, - multiSelectAction: "forEach", - readOnly: true, - scrollIntoView: "animate", - aceCommandGroup: "fileJump" - }, { - name: "gotoend", - description: "Go to end", - bindKey: bindKey("Ctrl-End", "Command-End|Command-Down"), - exec: function (editor) { editor.navigateFileEnd(); }, - multiSelectAction: "forEach", - readOnly: true, - scrollIntoView: "animate", - aceCommandGroup: "fileJump" - }, { - name: "selectdown", - description: "Select down", - bindKey: bindKey("Shift-Down", "Shift-Down|Ctrl-Shift-N"), - exec: function (editor) { editor.getSelection().selectDown(); }, - multiSelectAction: "forEach", - scrollIntoView: "cursor", - readOnly: true - }, { - name: "golinedown", - description: "Go line down", - bindKey: bindKey("Down", "Down|Ctrl-N"), - exec: function (editor, args) { editor.navigateDown(args.times); }, - multiSelectAction: "forEach", - scrollIntoView: "cursor", - readOnly: true - }, { - name: "selectwordleft", - description: "Select word left", - bindKey: bindKey("Ctrl-Shift-Left", "Option-Shift-Left"), - exec: function (editor) { editor.getSelection().selectWordLeft(); }, - multiSelectAction: "forEach", - scrollIntoView: "cursor", - readOnly: true - }, { - name: "gotowordleft", - description: "Go to word left", - bindKey: bindKey("Ctrl-Left", "Option-Left"), - exec: function (editor) { editor.navigateWordLeft(); }, - multiSelectAction: "forEach", - scrollIntoView: "cursor", - readOnly: true - }, { - name: "selecttolinestart", - description: "Select to line start", - bindKey: bindKey("Alt-Shift-Left", "Command-Shift-Left|Ctrl-Shift-A"), - exec: function (editor) { editor.getSelection().selectLineStart(); }, - multiSelectAction: "forEach", - scrollIntoView: "cursor", - readOnly: true - }, { - name: "gotolinestart", - description: "Go to line start", - bindKey: bindKey("Alt-Left|Home", "Command-Left|Home|Ctrl-A"), - exec: function (editor) { editor.navigateLineStart(); }, - multiSelectAction: "forEach", - scrollIntoView: "cursor", - readOnly: true - }, { - name: "selectleft", - description: "Select left", - bindKey: bindKey("Shift-Left", "Shift-Left|Ctrl-Shift-B"), - exec: function (editor) { editor.getSelection().selectLeft(); }, - multiSelectAction: "forEach", - scrollIntoView: "cursor", - readOnly: true - }, { - name: "gotoleft", - description: "Go to left", - bindKey: bindKey("Left", "Left|Ctrl-B"), - exec: function (editor, args) { editor.navigateLeft(args.times); }, - multiSelectAction: "forEach", - scrollIntoView: "cursor", - readOnly: true - }, { - name: "selectwordright", - description: "Select word right", - bindKey: bindKey("Ctrl-Shift-Right", "Option-Shift-Right"), - exec: function (editor) { editor.getSelection().selectWordRight(); }, - multiSelectAction: "forEach", - scrollIntoView: "cursor", - readOnly: true - }, { - name: "gotowordright", - description: "Go to word right", - bindKey: bindKey("Ctrl-Right", "Option-Right"), - exec: function (editor) { editor.navigateWordRight(); }, - multiSelectAction: "forEach", - scrollIntoView: "cursor", - readOnly: true - }, { - name: "selecttolineend", - description: "Select to line end", - bindKey: bindKey("Alt-Shift-Right", "Command-Shift-Right|Shift-End|Ctrl-Shift-E"), - exec: function (editor) { editor.getSelection().selectLineEnd(); }, - multiSelectAction: "forEach", - scrollIntoView: "cursor", - readOnly: true - }, { - name: "gotolineend", - description: "Go to line end", - bindKey: bindKey("Alt-Right|End", "Command-Right|End|Ctrl-E"), - exec: function (editor) { editor.navigateLineEnd(); }, - multiSelectAction: "forEach", - scrollIntoView: "cursor", - readOnly: true - }, { - name: "selectright", - description: "Select right", - bindKey: bindKey("Shift-Right", "Shift-Right"), - exec: function (editor) { editor.getSelection().selectRight(); }, - multiSelectAction: "forEach", - scrollIntoView: "cursor", - readOnly: true - }, { - name: "gotoright", - description: "Go to right", - bindKey: bindKey("Right", "Right|Ctrl-F"), - exec: function (editor, args) { editor.navigateRight(args.times); }, - multiSelectAction: "forEach", - scrollIntoView: "cursor", - readOnly: true - }, { - name: "selectpagedown", - description: "Select page down", - bindKey: "Shift-PageDown", - exec: function (editor) { editor.selectPageDown(); }, - readOnly: true - }, { - name: "pagedown", - description: "Page down", - bindKey: bindKey(null, "Option-PageDown"), - exec: function (editor) { editor.scrollPageDown(); }, - readOnly: true - }, { - name: "gotopagedown", - description: "Go to page down", - bindKey: bindKey("PageDown", "PageDown|Ctrl-V"), - exec: function (editor) { editor.gotoPageDown(); }, - readOnly: true - }, { - name: "selectpageup", - description: "Select page up", - bindKey: "Shift-PageUp", - exec: function (editor) { editor.selectPageUp(); }, - readOnly: true - }, { - name: "pageup", - description: "Page up", - bindKey: bindKey(null, "Option-PageUp"), - exec: function (editor) { editor.scrollPageUp(); }, - readOnly: true - }, { - name: "gotopageup", - description: "Go to page up", - bindKey: "PageUp", - exec: function (editor) { editor.gotoPageUp(); }, - readOnly: true - }, { - name: "scrollup", - description: "Scroll up", - bindKey: bindKey("Ctrl-Up", null), - exec: function (e) { e.renderer.scrollBy(0, -2 * e.renderer.layerConfig.lineHeight); }, - readOnly: true - }, { - name: "scrolldown", - description: "Scroll down", - bindKey: bindKey("Ctrl-Down", null), - exec: function (e) { e.renderer.scrollBy(0, 2 * e.renderer.layerConfig.lineHeight); }, - readOnly: true - }, { - name: "selectlinestart", - description: "Select line start", - bindKey: "Shift-Home", - exec: function (editor) { editor.getSelection().selectLineStart(); }, - multiSelectAction: "forEach", - scrollIntoView: "cursor", - readOnly: true - }, { - name: "selectlineend", - description: "Select line end", - bindKey: "Shift-End", - exec: function (editor) { editor.getSelection().selectLineEnd(); }, - multiSelectAction: "forEach", - scrollIntoView: "cursor", - readOnly: true - }, { - name: "togglerecording", - description: "Toggle recording", - bindKey: bindKey("Ctrl-Alt-E", "Command-Option-E"), - exec: function (editor) { editor.commands.toggleRecording(editor); }, - readOnly: true - }, { - name: "replaymacro", - description: "Replay macro", - bindKey: bindKey("Ctrl-Shift-E", "Command-Shift-E"), - exec: function (editor) { editor.commands.replay(editor); }, - readOnly: true - }, { - name: "jumptomatching", - description: "Jump to matching", - bindKey: bindKey("Ctrl-\\|Ctrl-P", "Command-\\"), - exec: function (editor) { editor.jumpToMatching(); }, - multiSelectAction: "forEach", - scrollIntoView: "animate", - readOnly: true - }, { - name: "selecttomatching", - description: "Select to matching", - bindKey: bindKey("Ctrl-Shift-\\|Ctrl-Shift-P", "Command-Shift-\\"), - exec: function (editor) { editor.jumpToMatching(true); }, - multiSelectAction: "forEach", - scrollIntoView: "animate", - readOnly: true - }, { - name: "expandToMatching", - description: "Expand to matching", - bindKey: bindKey("Ctrl-Shift-M", "Ctrl-Shift-M"), - exec: function (editor) { editor.jumpToMatching(true, true); }, - multiSelectAction: "forEach", - scrollIntoView: "animate", - readOnly: true - }, { - name: "passKeysToBrowser", - description: "Pass keys to browser", - bindKey: bindKey(null, null), - exec: function () { }, - passEvent: true, - readOnly: true - }, { - name: "copy", - description: "Copy", - exec: function (editor) { - }, - readOnly: true - }, - { - name: "cut", - description: "Cut", - exec: function (editor) { - var cutLine = editor.$copyWithEmptySelection && editor.selection.isEmpty(); - var range = cutLine ? editor.selection.getLineRange() : editor.selection.getRange(); - editor._emit("cut", range); - if (!range.isEmpty()) - editor.session.remove(range); - editor.clearSelection(); - }, - scrollIntoView: "cursor", - multiSelectAction: "forEach" - }, { - name: "paste", - description: "Paste", - exec: function (editor, args) { - editor.$handlePaste(args); - }, - scrollIntoView: "cursor" - }, { - name: "removeline", - description: "Remove line", - bindKey: bindKey("Ctrl-D", "Command-D"), - exec: function (editor) { editor.removeLines(); }, - scrollIntoView: "cursor", - multiSelectAction: "forEachLine" - }, { - name: "duplicateSelection", - description: "Duplicate selection", - bindKey: bindKey("Ctrl-Shift-D", "Command-Shift-D"), - exec: function (editor) { editor.duplicateSelection(); }, - scrollIntoView: "cursor", - multiSelectAction: "forEach" - }, { - name: "sortlines", - description: "Sort lines", - bindKey: bindKey("Ctrl-Alt-S", "Command-Alt-S"), - exec: function (editor) { editor.sortLines(); }, - scrollIntoView: "selection", - multiSelectAction: "forEachLine" - }, { - name: "togglecomment", - description: "Toggle comment", - bindKey: bindKey("Ctrl-/", "Command-/"), - exec: function (editor) { editor.toggleCommentLines(); }, - multiSelectAction: "forEachLine", - scrollIntoView: "selectionPart" - }, { - name: "toggleBlockComment", - description: "Toggle block comment", - bindKey: bindKey("Ctrl-Shift-/", "Command-Shift-/"), - exec: function (editor) { editor.toggleBlockComment(); }, - multiSelectAction: "forEach", - scrollIntoView: "selectionPart" - }, { - name: "modifyNumberUp", - description: "Modify number up", - bindKey: bindKey("Ctrl-Shift-Up", "Alt-Shift-Up"), - exec: function (editor) { editor.modifyNumber(1); }, - scrollIntoView: "cursor", - multiSelectAction: "forEach" - }, { - name: "modifyNumberDown", - description: "Modify number down", - bindKey: bindKey("Ctrl-Shift-Down", "Alt-Shift-Down"), - exec: function (editor) { editor.modifyNumber(-1); }, - scrollIntoView: "cursor", - multiSelectAction: "forEach" - }, { - name: "replace", - description: "Replace", - bindKey: bindKey("Ctrl-H", "Command-Option-F"), - exec: function (editor) { - config.loadModule("ace/ext/searchbox", function (e) { e.Search(editor, true); }); - } - }, { - name: "undo", - description: "Undo", - bindKey: bindKey("Ctrl-Z", "Command-Z"), - exec: function (editor) { editor.undo(); } - }, { - name: "redo", - description: "Redo", - bindKey: bindKey("Ctrl-Shift-Z|Ctrl-Y", "Command-Shift-Z|Command-Y"), - exec: function (editor) { editor.redo(); } - }, { - name: "copylinesup", - description: "Copy lines up", - bindKey: bindKey("Alt-Shift-Up", "Command-Option-Up"), - exec: function (editor) { editor.copyLinesUp(); }, - scrollIntoView: "cursor" - }, { - name: "movelinesup", - description: "Move lines up", - bindKey: bindKey("Alt-Up", "Option-Up"), - exec: function (editor) { editor.moveLinesUp(); }, - scrollIntoView: "cursor" - }, { - name: "copylinesdown", - description: "Copy lines down", - bindKey: bindKey("Alt-Shift-Down", "Command-Option-Down"), - exec: function (editor) { editor.copyLinesDown(); }, - scrollIntoView: "cursor" - }, { - name: "movelinesdown", - description: "Move lines down", - bindKey: bindKey("Alt-Down", "Option-Down"), - exec: function (editor) { editor.moveLinesDown(); }, - scrollIntoView: "cursor" - }, { - name: "del", - description: "Delete", - bindKey: bindKey("Delete", "Delete|Ctrl-D|Shift-Delete"), - exec: function (editor) { editor.remove("right"); }, - multiSelectAction: "forEach", - scrollIntoView: "cursor" - }, { - name: "backspace", - description: "Backspace", - bindKey: bindKey("Shift-Backspace|Backspace", "Ctrl-Backspace|Shift-Backspace|Backspace|Ctrl-H"), - exec: function (editor) { editor.remove("left"); }, - multiSelectAction: "forEach", - scrollIntoView: "cursor" - }, { - name: "cut_or_delete", - description: "Cut or delete", - bindKey: bindKey("Shift-Delete", null), - exec: function (editor) { - if (editor.selection.isEmpty()) { - editor.remove("left"); - } - else { - return false; - } - }, - multiSelectAction: "forEach", - scrollIntoView: "cursor" - }, { - name: "removetolinestart", - description: "Remove to line start", - bindKey: bindKey("Alt-Backspace", "Command-Backspace"), - exec: function (editor) { editor.removeToLineStart(); }, - multiSelectAction: "forEach", - scrollIntoView: "cursor" - }, { - name: "removetolineend", - description: "Remove to line end", - bindKey: bindKey("Alt-Delete", "Ctrl-K|Command-Delete"), - exec: function (editor) { editor.removeToLineEnd(); }, - multiSelectAction: "forEach", - scrollIntoView: "cursor" - }, { - name: "removetolinestarthard", - description: "Remove to line start hard", - bindKey: bindKey("Ctrl-Shift-Backspace", null), - exec: function (editor) { - var range = editor.selection.getRange(); - range.start.column = 0; - editor.session.remove(range); - }, - multiSelectAction: "forEach", - scrollIntoView: "cursor" - }, { - name: "removetolineendhard", - description: "Remove to line end hard", - bindKey: bindKey("Ctrl-Shift-Delete", null), - exec: function (editor) { - var range = editor.selection.getRange(); - range.end.column = Number.MAX_VALUE; - editor.session.remove(range); - }, - multiSelectAction: "forEach", - scrollIntoView: "cursor" - }, { - name: "removewordleft", - description: "Remove word left", - bindKey: bindKey("Ctrl-Backspace", "Alt-Backspace|Ctrl-Alt-Backspace"), - exec: function (editor) { editor.removeWordLeft(); }, - multiSelectAction: "forEach", - scrollIntoView: "cursor" - }, { - name: "removewordright", - description: "Remove word right", - bindKey: bindKey("Ctrl-Delete", "Alt-Delete"), - exec: function (editor) { editor.removeWordRight(); }, - multiSelectAction: "forEach", - scrollIntoView: "cursor" - }, { - name: "outdent", - description: "Outdent", - bindKey: bindKey("Shift-Tab", "Shift-Tab"), - exec: function (editor) { editor.blockOutdent(); }, - multiSelectAction: "forEach", - scrollIntoView: "selectionPart" - }, { - name: "indent", - description: "Indent", - bindKey: bindKey("Tab", "Tab"), - exec: function (editor) { editor.indent(); }, - multiSelectAction: "forEach", - scrollIntoView: "selectionPart" - }, { - name: "blockoutdent", - description: "Block outdent", - bindKey: bindKey("Ctrl-[", "Ctrl-["), - exec: function (editor) { editor.blockOutdent(); }, - multiSelectAction: "forEachLine", - scrollIntoView: "selectionPart" - }, { - name: "blockindent", - description: "Block indent", - bindKey: bindKey("Ctrl-]", "Ctrl-]"), - exec: function (editor) { editor.blockIndent(); }, - multiSelectAction: "forEachLine", - scrollIntoView: "selectionPart" - }, { - name: "insertstring", - description: "Insert string", - exec: function (editor, str) { editor.insert(str); }, - multiSelectAction: "forEach", - scrollIntoView: "cursor" - }, { - name: "inserttext", - description: "Insert text", - exec: function (editor, args) { - editor.insert(lang.stringRepeat(args.text || "", args.times || 1)); - }, - multiSelectAction: "forEach", - scrollIntoView: "cursor" - }, { - name: "splitline", - description: "Split line", - bindKey: bindKey(null, "Ctrl-O"), - exec: function (editor) { editor.splitLine(); }, - multiSelectAction: "forEach", - scrollIntoView: "cursor" - }, { - name: "transposeletters", - description: "Transpose letters", - bindKey: bindKey("Alt-Shift-X", "Ctrl-T"), - exec: function (editor) { editor.transposeLetters(); }, - multiSelectAction: function (editor) { editor.transposeSelections(1); }, - scrollIntoView: "cursor" - }, { - name: "touppercase", - description: "To uppercase", - bindKey: bindKey("Ctrl-U", "Ctrl-U"), - exec: function (editor) { editor.toUpperCase(); }, - multiSelectAction: "forEach", - scrollIntoView: "cursor" - }, { - name: "tolowercase", - description: "To lowercase", - bindKey: bindKey("Ctrl-Shift-U", "Ctrl-Shift-U"), - exec: function (editor) { editor.toLowerCase(); }, - multiSelectAction: "forEach", - scrollIntoView: "cursor" - }, { - name: "autoindent", - description: "Auto Indent", - bindKey: bindKey(null, null), - exec: function (editor) { editor.autoIndent(); }, - multiSelectAction: "forEachLine", - scrollIntoView: "animate" - }, { - name: "expandtoline", - description: "Expand to line", - bindKey: bindKey("Ctrl-Shift-L", "Command-Shift-L"), - exec: function (editor) { - var range = editor.selection.getRange(); - range.start.column = range.end.column = 0; - range.end.row++; - editor.selection.setRange(range, false); - }, - multiSelectAction: "forEach", - scrollIntoView: "cursor", - readOnly: true - }, { - name: "openlink", - bindKey: bindKey("Ctrl+F3", "F3"), - exec: function (editor) { editor.openLink(); } - }, { - name: "joinlines", - description: "Join lines", - bindKey: bindKey(null, null), - exec: function (editor) { - var isBackwards = editor.selection.isBackwards(); - var selectionStart = isBackwards ? editor.selection.getSelectionLead() : editor.selection.getSelectionAnchor(); - var selectionEnd = isBackwards ? editor.selection.getSelectionAnchor() : editor.selection.getSelectionLead(); - var firstLineEndCol = editor.session.doc.getLine(selectionStart.row).length; - var selectedText = editor.session.doc.getTextRange(editor.selection.getRange()); - var selectedCount = selectedText.replace(/\n\s*/, " ").length; - var insertLine = editor.session.doc.getLine(selectionStart.row); - for (var i = selectionStart.row + 1; i <= selectionEnd.row + 1; i++) { - var curLine = lang.stringTrimLeft(lang.stringTrimRight(editor.session.doc.getLine(i))); - if (curLine.length !== 0) { - curLine = " " + curLine; - } - insertLine += curLine; - } - if (selectionEnd.row + 1 < (editor.session.doc.getLength() - 1)) { - insertLine += editor.session.doc.getNewLineCharacter(); - } - editor.clearSelection(); - editor.session.doc.replace(new Range(selectionStart.row, 0, selectionEnd.row + 2, 0), insertLine); - if (selectedCount > 0) { - editor.selection.moveCursorTo(selectionStart.row, selectionStart.column); - editor.selection.selectTo(selectionStart.row, selectionStart.column + selectedCount); - } - else { - firstLineEndCol = editor.session.doc.getLine(selectionStart.row).length > firstLineEndCol ? (firstLineEndCol + 1) : firstLineEndCol; - editor.selection.moveCursorTo(selectionStart.row, firstLineEndCol); - } - }, - multiSelectAction: "forEach", - readOnly: true - }, { - name: "invertSelection", - description: "Invert selection", - bindKey: bindKey(null, null), - exec: function (editor) { - var endRow = editor.session.doc.getLength() - 1; - var endCol = editor.session.doc.getLine(endRow).length; - var ranges = editor.selection.rangeList.ranges; - var newRanges = []; - if (ranges.length < 1) { - ranges = [editor.selection.getRange()]; - } - for (var i = 0; i < ranges.length; i++) { - if (i == (ranges.length - 1)) { - if (!(ranges[i].end.row === endRow && ranges[i].end.column === endCol)) { - newRanges.push(new Range(ranges[i].end.row, ranges[i].end.column, endRow, endCol)); - } - } - if (i === 0) { - if (!(ranges[i].start.row === 0 && ranges[i].start.column === 0)) { - newRanges.push(new Range(0, 0, ranges[i].start.row, ranges[i].start.column)); - } - } - else { - newRanges.push(new Range(ranges[i - 1].end.row, ranges[i - 1].end.column, ranges[i].start.row, ranges[i].start.column)); - } - } - editor.exitMultiSelectMode(); - editor.clearSelection(); - for (var i = 0; i < newRanges.length; i++) { - editor.selection.addRange(newRanges[i], false); - } - }, - readOnly: true, - scrollIntoView: "none" - }, { - name: "addLineAfter", - description: "Add new line after the current line", - exec: function (editor) { - editor.selection.clearSelection(); - editor.navigateLineEnd(); - editor.insert("\n"); - }, - multiSelectAction: "forEach", - scrollIntoView: "cursor" - }, { - name: "addLineBefore", - description: "Add new line before the current line", - exec: function (editor) { - editor.selection.clearSelection(); - var cursor = editor.getCursorPosition(); - editor.selection.moveTo(cursor.row - 1, Number.MAX_VALUE); - editor.insert("\n"); - if (cursor.row === 0) - editor.navigateUp(); - }, - multiSelectAction: "forEach", - scrollIntoView: "cursor" - }, { - name: "openCommandPallete", - exec: function (editor) { - console.warn("This is an obsolete command. Please use `openCommandPalette` instead."); - editor.prompt({ $type: "commands" }); - }, - readOnly: true - }, { - name: "openCommandPalette", - description: "Open command palette", - bindKey: bindKey("F1", "F1"), - exec: function (editor) { - editor.prompt({ $type: "commands" }); - }, - readOnly: true - }, { - name: "modeSelect", - description: "Change language mode...", - bindKey: bindKey(null, null), - exec: function (editor) { - editor.prompt({ $type: "modes" }); - }, - readOnly: true - }]; -for (var i = 1; i < 9; i++) { - exports.commands.push({ - name: "foldToLevel" + i, - description: "Fold To Level " + i, - level: i, - exec: function (editor) { editor.session.foldToLevel(this.level); }, - scrollIntoView: "center", - readOnly: true - }); -} - -}); - -ace.define("ace/line_widgets",["require","exports","module","ace/lib/dom"], function(require, exports, module){"use strict"; -var dom = require("./lib/dom"); -var LineWidgets = /** @class */ (function () { - function LineWidgets(session) { - this.session = session; - this.session.widgetManager = this; - this.session.getRowLength = this.getRowLength; - this.session.$getWidgetScreenLength = this.$getWidgetScreenLength; - this.updateOnChange = this.updateOnChange.bind(this); - this.renderWidgets = this.renderWidgets.bind(this); - this.measureWidgets = this.measureWidgets.bind(this); - this.session._changedWidgets = []; - this.$onChangeEditor = this.$onChangeEditor.bind(this); - this.session.on("change", this.updateOnChange); - this.session.on("changeFold", this.updateOnFold); - this.session.on("changeEditor", this.$onChangeEditor); - } - LineWidgets.prototype.getRowLength = function (row) { - var h; - if (this.lineWidgets) - h = this.lineWidgets[row] && this.lineWidgets[row].rowCount || 0; - else - h = 0; - if (!this.$useWrapMode || !this.$wrapData[row]) { - return 1 + h; - } - else { - return this.$wrapData[row].length + 1 + h; - } - }; - LineWidgets.prototype.$getWidgetScreenLength = function () { - var screenRows = 0; - this.lineWidgets.forEach(function (w) { - if (w && w.rowCount && !w.hidden) - screenRows += w.rowCount; - }); - return screenRows; - }; - LineWidgets.prototype.$onChangeEditor = function (e) { - this.attach(e.editor); - }; - LineWidgets.prototype.attach = function (editor) { - if (editor && editor.widgetManager && editor.widgetManager != this) - editor.widgetManager.detach(); - if (this.editor == editor) - return; - this.detach(); - this.editor = editor; - if (editor) { - editor.widgetManager = this; - editor.renderer.on("beforeRender", this.measureWidgets); - editor.renderer.on("afterRender", this.renderWidgets); - } - }; - LineWidgets.prototype.detach = function (e) { - var editor = this.editor; - if (!editor) - return; - this.editor = null; - editor.widgetManager = null; - editor.renderer.off("beforeRender", this.measureWidgets); - editor.renderer.off("afterRender", this.renderWidgets); - var lineWidgets = this.session.lineWidgets; - lineWidgets && lineWidgets.forEach(function (w) { - if (w && w.el && w.el.parentNode) { - w._inDocument = false; - w.el.parentNode.removeChild(w.el); - } - }); - }; - LineWidgets.prototype.updateOnFold = function (e, session) { - var lineWidgets = session.lineWidgets; - if (!lineWidgets || !e.action) - return; - var fold = e.data; - var start = fold.start.row; - var end = fold.end.row; - var hide = e.action == "add"; - for (var i = start + 1; i < end; i++) { - if (lineWidgets[i]) - lineWidgets[i].hidden = hide; - } - if (lineWidgets[end]) { - if (hide) { - if (!lineWidgets[start]) - lineWidgets[start] = lineWidgets[end]; - else - lineWidgets[end].hidden = hide; - } - else { - if (lineWidgets[start] == lineWidgets[end]) - lineWidgets[start] = undefined; - lineWidgets[end].hidden = hide; - } - } - }; - LineWidgets.prototype.updateOnChange = function (delta) { - var lineWidgets = this.session.lineWidgets; - if (!lineWidgets) - return; - var startRow = delta.start.row; - var len = delta.end.row - startRow; - if (len === 0) { - } - else if (delta.action == "remove") { - var removed = lineWidgets.splice(startRow + 1, len); - if (!lineWidgets[startRow] && removed[removed.length - 1]) { - lineWidgets[startRow] = removed.pop(); - } - removed.forEach(function (w) { - w && this.removeLineWidget(w); - }, this); - this.$updateRows(); - } - else { - var args = new Array(len); - if (lineWidgets[startRow] && lineWidgets[startRow].column != null) { - if (delta.start.column > lineWidgets[startRow].column) - startRow++; - } - args.unshift(startRow, 0); - lineWidgets.splice.apply(lineWidgets, args); - this.$updateRows(); - } - }; - LineWidgets.prototype.$updateRows = function () { - var lineWidgets = this.session.lineWidgets; - if (!lineWidgets) - return; - var noWidgets = true; - lineWidgets.forEach(function (w, i) { - if (w) { - noWidgets = false; - w.row = i; - while (w.$oldWidget) { - w.$oldWidget.row = i; - w = w.$oldWidget; - } - } - }); - if (noWidgets) - this.session.lineWidgets = null; - }; - LineWidgets.prototype.$registerLineWidget = function (w) { - if (!this.session.lineWidgets) - this.session.lineWidgets = new Array(this.session.getLength()); - var old = this.session.lineWidgets[w.row]; - if (old) { - w.$oldWidget = old; - if (old.el && old.el.parentNode) { - old.el.parentNode.removeChild(old.el); - old._inDocument = false; - } - } - this.session.lineWidgets[w.row] = w; - return w; - }; - LineWidgets.prototype.addLineWidget = function (w) { - this.$registerLineWidget(w); - w.session = this.session; - if (!this.editor) - return w; - var renderer = this.editor.renderer; - if (w.html && !w.el) { - w.el = dom.createElement("div"); - w.el.innerHTML = w.html; - } - if (w.text && !w.el) { - w.el = dom.createElement("div"); - w.el.textContent = w.text; - } - if (w.el) { - dom.addCssClass(w.el, "ace_lineWidgetContainer"); - if (w.className) { - dom.addCssClass(w.el, w.className); - } - w.el.style.position = "absolute"; - w.el.style.zIndex = 5; - renderer.container.appendChild(w.el); - w._inDocument = true; - if (!w.coverGutter) { - w.el.style.zIndex = 3; - } - if (w.pixelHeight == null) { - w.pixelHeight = w.el.offsetHeight; - } - } - if (w.rowCount == null) { - w.rowCount = w.pixelHeight / renderer.layerConfig.lineHeight; - } - var fold = this.session.getFoldAt(w.row, 0); - w.$fold = fold; - if (fold) { - var lineWidgets = this.session.lineWidgets; - if (w.row == fold.end.row && !lineWidgets[fold.start.row]) - lineWidgets[fold.start.row] = w; - else - w.hidden = true; - } - this.session._emit("changeFold", { data: { start: { row: w.row } } }); - this.$updateRows(); - this.renderWidgets(null, renderer); - this.onWidgetChanged(w); - return w; - }; - LineWidgets.prototype.removeLineWidget = function (w) { - w._inDocument = false; - w.session = null; - if (w.el && w.el.parentNode) - w.el.parentNode.removeChild(w.el); - if (w.editor && w.editor.destroy) - try { - w.editor.destroy(); - } - catch (e) { } - if (this.session.lineWidgets) { - var w1 = this.session.lineWidgets[w.row]; - if (w1 == w) { - this.session.lineWidgets[w.row] = w.$oldWidget; - if (w.$oldWidget) - this.onWidgetChanged(w.$oldWidget); - } - else { - while (w1) { - if (w1.$oldWidget == w) { - w1.$oldWidget = w.$oldWidget; - break; - } - w1 = w1.$oldWidget; - } - } - } - this.session._emit("changeFold", { data: { start: { row: w.row } } }); - this.$updateRows(); - }; - LineWidgets.prototype.getWidgetsAtRow = function (row) { - var lineWidgets = this.session.lineWidgets; - var w = lineWidgets && lineWidgets[row]; - var list = []; - while (w) { - list.push(w); - w = w.$oldWidget; - } - return list; - }; - LineWidgets.prototype.onWidgetChanged = function (w) { - this.session._changedWidgets.push(w); - this.editor && this.editor.renderer.updateFull(); - }; - LineWidgets.prototype.measureWidgets = function (e, renderer) { - var changedWidgets = this.session._changedWidgets; - var config = renderer.layerConfig; - if (!changedWidgets || !changedWidgets.length) - return; - var min = Infinity; - for (var i = 0; i < changedWidgets.length; i++) { - var w = changedWidgets[i]; - if (!w || !w.el) - continue; - if (w.session != this.session) - continue; - if (!w._inDocument) { - if (this.session.lineWidgets[w.row] != w) - continue; - w._inDocument = true; - renderer.container.appendChild(w.el); - } - w.h = w.el.offsetHeight; - if (!w.fixedWidth) { - w.w = w.el.offsetWidth; - w.screenWidth = Math.ceil(w.w / config.characterWidth); - } - var rowCount = w.h / config.lineHeight; - if (w.coverLine) { - rowCount -= this.session.getRowLineCount(w.row); - if (rowCount < 0) - rowCount = 0; - } - if (w.rowCount != rowCount) { - w.rowCount = rowCount; - if (w.row < min) - min = w.row; - } - } - if (min != Infinity) { - this.session._emit("changeFold", { data: { start: { row: min } } }); - this.session.lineWidgetWidth = null; - } - this.session._changedWidgets = []; - }; - LineWidgets.prototype.renderWidgets = function (e, renderer) { - var config = renderer.layerConfig; - var lineWidgets = this.session.lineWidgets; - if (!lineWidgets) - return; - var first = Math.min(this.firstRow, config.firstRow); - var last = Math.max(this.lastRow, config.lastRow, lineWidgets.length); - while (first > 0 && !lineWidgets[first]) - first--; - this.firstRow = config.firstRow; - this.lastRow = config.lastRow; - renderer.$cursorLayer.config = config; - for (var i = first; i <= last; i++) { - var w = lineWidgets[i]; - if (!w || !w.el) - continue; - if (w.hidden) { - w.el.style.top = -100 - (w.pixelHeight || 0) + "px"; - continue; - } - if (!w._inDocument) { - w._inDocument = true; - renderer.container.appendChild(w.el); - } - var top = renderer.$cursorLayer.getPixelPosition({ row: i, column: 0 }, true).top; - if (!w.coverLine) - top += config.lineHeight * this.session.getRowLineCount(w.row); - w.el.style.top = top - config.offset + "px"; - var left = w.coverGutter ? 0 : renderer.gutterWidth; - if (!w.fixedWidth) - left -= renderer.scrollLeft; - w.el.style.left = left + "px"; - if (w.fullWidth && w.screenWidth) { - w.el.style.minWidth = config.width + 2 * config.padding + "px"; - } - if (w.fixedWidth) { - w.el.style.right = renderer.scrollBar.getWidth() + "px"; - } - else { - w.el.style.right = ""; - } - } - }; - return LineWidgets; -}()); -exports.LineWidgets = LineWidgets; - -}); - -ace.define("ace/keyboard/gutter_handler",["require","exports","module","ace/lib/keys","ace/mouse/default_gutter_handler"], function(require, exports, module){"use strict"; -var keys = require('../lib/keys'); -var GutterTooltip = require("../mouse/default_gutter_handler").GutterTooltip; -var GutterKeyboardHandler = /** @class */ (function () { - function GutterKeyboardHandler(editor) { - this.editor = editor; - this.gutterLayer = editor.renderer.$gutterLayer; - this.element = editor.renderer.$gutter; - this.lines = editor.renderer.$gutterLayer.$lines; - this.activeRowIndex = null; - this.activeLane = null; - this.annotationTooltip = new GutterTooltip(this.editor); - } - GutterKeyboardHandler.prototype.addListener = function () { - this.element.addEventListener("keydown", this.$onGutterKeyDown.bind(this)); - this.element.addEventListener("focusout", this.$blurGutter.bind(this)); - this.editor.on("mousewheel", this.$blurGutter.bind(this)); - }; - GutterKeyboardHandler.prototype.removeListener = function () { - this.element.removeEventListener("keydown", this.$onGutterKeyDown.bind(this)); - this.element.removeEventListener("focusout", this.$blurGutter.bind(this)); - this.editor.off("mousewheel", this.$blurGutter.bind(this)); - }; - GutterKeyboardHandler.prototype.$onGutterKeyDown = function (e) { - if (this.annotationTooltip.isOpen) { - e.preventDefault(); - if (e.keyCode === keys["escape"]) - this.annotationTooltip.hideTooltip(); - return; - } - if (e.target === this.element) { - if (e.keyCode != keys["enter"]) { - return; - } - e.preventDefault(); - var row = this.editor.getCursorPosition().row; - if (!this.editor.isRowVisible(row)) - this.editor.scrollToLine(row, true, true); - setTimeout(function () { - var index = this.$rowToRowIndex(this.gutterLayer.$cursorCell.row); - var nearestFoldIndex = this.$findNearestFoldWidget(index); - var nearestAnnotationIndex = this.$findNearestAnnotation(index); - if (nearestFoldIndex === null && nearestAnnotationIndex === null) - return; - if (nearestFoldIndex === null && nearestAnnotationIndex !== null) { - this.activeRowIndex = nearestAnnotationIndex; - this.activeLane = "annotation"; - this.$focusAnnotation(this.activeRowIndex); - return; - } - if (nearestFoldIndex !== null && nearestAnnotationIndex === null) { - this.activeRowIndex = nearestFoldIndex; - this.activeLane = "fold"; - this.$focusFoldWidget(this.activeRowIndex); - return; - } - if (Math.abs(nearestAnnotationIndex - index) < Math.abs(nearestFoldIndex - index)) { - this.activeRowIndex = nearestAnnotationIndex; - this.activeLane = "annotation"; - this.$focusAnnotation(this.activeRowIndex); - return; - } - else { - this.activeRowIndex = nearestFoldIndex; - this.activeLane = "fold"; - this.$focusFoldWidget(this.activeRowIndex); - return; - } - }.bind(this), 10); - return; - } - this.$handleGutterKeyboardInteraction(e); - setTimeout(function () { - this.editor._signal("gutterkeydown", new GutterKeyboardEvent(e, this)); - }.bind(this), 10); - }; - GutterKeyboardHandler.prototype.$handleGutterKeyboardInteraction = function (e) { - if (e.keyCode === keys["tab"]) { - e.preventDefault(); - return; - } - if (e.keyCode === keys["escape"]) { - e.preventDefault(); - this.$blurGutter(); - this.element.focus(); - this.lane = null; - return; - } - if (e.keyCode === keys["up"]) { - e.preventDefault(); - switch (this.activeLane) { - case "fold": - this.$moveFoldWidgetUp(); - break; - case "annotation": - this.$moveAnnotationUp(); - break; - } - return; - } - if (e.keyCode === keys["down"]) { - e.preventDefault(); - switch (this.activeLane) { - case "fold": - this.$moveFoldWidgetDown(); - break; - case "annotation": - this.$moveAnnotationDown(); - break; - } - return; - } - if (e.keyCode === keys["left"]) { - e.preventDefault(); - this.$switchLane("annotation"); - return; - } - if (e.keyCode === keys["right"]) { - e.preventDefault(); - this.$switchLane("fold"); - return; - } - if (e.keyCode === keys["enter"] || e.keyCode === keys["space"]) { - e.preventDefault(); - switch (this.activeLane) { - case "fold": - if (this.gutterLayer.session.foldWidgets[this.$rowIndexToRow(this.activeRowIndex)] === 'start') { - var rowFoldingWidget = this.$rowIndexToRow(this.activeRowIndex); - this.editor.session.onFoldWidgetClick(this.$rowIndexToRow(this.activeRowIndex), e); - setTimeout(function () { - if (this.$rowIndexToRow(this.activeRowIndex) !== rowFoldingWidget) { - this.$blurFoldWidget(this.activeRowIndex); - this.activeRowIndex = this.$rowToRowIndex(rowFoldingWidget); - this.$focusFoldWidget(this.activeRowIndex); - } - }.bind(this), 10); - break; - } - else if (this.gutterLayer.session.foldWidgets[this.$rowIndexToRow(this.activeRowIndex)] === 'end') { - break; - } - return; - case "annotation": - var gutterElement = this.lines.cells[this.activeRowIndex].element.childNodes[2]; - var rect = gutterElement.getBoundingClientRect(); - var style = this.annotationTooltip.getElement().style; - style.left = rect.right + "px"; - style.top = rect.bottom + "px"; - this.annotationTooltip.showTooltip(this.$rowIndexToRow(this.activeRowIndex)); - break; - } - return; - } - }; - GutterKeyboardHandler.prototype.$blurGutter = function () { - if (this.activeRowIndex !== null) { - switch (this.activeLane) { - case "fold": - this.$blurFoldWidget(this.activeRowIndex); - break; - case "annotation": - this.$blurAnnotation(this.activeRowIndex); - break; - } - } - if (this.annotationTooltip.isOpen) - this.annotationTooltip.hideTooltip(); - return; - }; - GutterKeyboardHandler.prototype.$isFoldWidgetVisible = function (index) { - var isRowFullyVisible = this.editor.isRowFullyVisible(this.$rowIndexToRow(index)); - var isIconVisible = this.$getFoldWidget(index).style.display !== "none"; - return isRowFullyVisible && isIconVisible; - }; - GutterKeyboardHandler.prototype.$isAnnotationVisible = function (index) { - var isRowFullyVisible = this.editor.isRowFullyVisible(this.$rowIndexToRow(index)); - var isIconVisible = this.$getAnnotation(index).style.display !== "none"; - return isRowFullyVisible && isIconVisible; - }; - GutterKeyboardHandler.prototype.$getFoldWidget = function (index) { - var cell = this.lines.get(index); - var element = cell.element; - return element.childNodes[1]; - }; - GutterKeyboardHandler.prototype.$getAnnotation = function (index) { - var cell = this.lines.get(index); - var element = cell.element; - return element.childNodes[2]; - }; - GutterKeyboardHandler.prototype.$findNearestFoldWidget = function (index) { - if (this.$isFoldWidgetVisible(index)) - return index; - var i = 0; - while (index - i > 0 || index + i < this.lines.getLength() - 1) { - i++; - if (index - i >= 0 && this.$isFoldWidgetVisible(index - i)) - return index - i; - if (index + i <= this.lines.getLength() - 1 && this.$isFoldWidgetVisible(index + i)) - return index + i; - } - return null; - }; - GutterKeyboardHandler.prototype.$findNearestAnnotation = function (index) { - if (this.$isAnnotationVisible(index)) - return index; - var i = 0; - while (index - i > 0 || index + i < this.lines.getLength() - 1) { - i++; - if (index - i >= 0 && this.$isAnnotationVisible(index - i)) - return index - i; - if (index + i <= this.lines.getLength() - 1 && this.$isAnnotationVisible(index + i)) - return index + i; - } - return null; - }; - GutterKeyboardHandler.prototype.$focusFoldWidget = function (index) { - if (index == null) - return; - var foldWidget = this.$getFoldWidget(index); - foldWidget.classList.add(this.editor.renderer.keyboardFocusClassName); - foldWidget.focus(); - }; - GutterKeyboardHandler.prototype.$focusAnnotation = function (index) { - if (index == null) - return; - var annotation = this.$getAnnotation(index); - annotation.classList.add(this.editor.renderer.keyboardFocusClassName); - annotation.focus(); - }; - GutterKeyboardHandler.prototype.$blurFoldWidget = function (index) { - var foldWidget = this.$getFoldWidget(index); - foldWidget.classList.remove(this.editor.renderer.keyboardFocusClassName); - foldWidget.blur(); - }; - GutterKeyboardHandler.prototype.$blurAnnotation = function (index) { - var annotation = this.$getAnnotation(index); - annotation.classList.remove(this.editor.renderer.keyboardFocusClassName); - annotation.blur(); - }; - GutterKeyboardHandler.prototype.$moveFoldWidgetUp = function () { - var index = this.activeRowIndex; - while (index > 0) { - index--; - if (this.$isFoldWidgetVisible(index)) { - this.$blurFoldWidget(this.activeRowIndex); - this.activeRowIndex = index; - this.$focusFoldWidget(this.activeRowIndex); - return; - } - } - return; - }; - GutterKeyboardHandler.prototype.$moveFoldWidgetDown = function () { - var index = this.activeRowIndex; - while (index < this.lines.getLength() - 1) { - index++; - if (this.$isFoldWidgetVisible(index)) { - this.$blurFoldWidget(this.activeRowIndex); - this.activeRowIndex = index; - this.$focusFoldWidget(this.activeRowIndex); - return; - } - } - return; - }; - GutterKeyboardHandler.prototype.$moveAnnotationUp = function () { - var index = this.activeRowIndex; - while (index > 0) { - index--; - if (this.$isAnnotationVisible(index)) { - this.$blurAnnotation(this.activeRowIndex); - this.activeRowIndex = index; - this.$focusAnnotation(this.activeRowIndex); - return; - } - } - return; - }; - GutterKeyboardHandler.prototype.$moveAnnotationDown = function () { - var index = this.activeRowIndex; - while (index < this.lines.getLength() - 1) { - index++; - if (this.$isAnnotationVisible(index)) { - this.$blurAnnotation(this.activeRowIndex); - this.activeRowIndex = index; - this.$focusAnnotation(this.activeRowIndex); - return; - } - } - return; - }; - GutterKeyboardHandler.prototype.$switchLane = function (desinationLane) { - switch (desinationLane) { - case "annotation": - if (this.activeLane === "annotation") { - break; - } - var annotationIndex = this.$findNearestAnnotation(this.activeRowIndex); - if (annotationIndex == null) { - break; - } - this.activeLane = "annotation"; - this.$blurFoldWidget(this.activeRowIndex); - this.activeRowIndex = annotationIndex; - this.$focusAnnotation(this.activeRowIndex); - break; - case "fold": - if (this.activeLane === "fold") { - break; - } - var foldWidgetIndex = this.$findNearestFoldWidget(this.activeRowIndex); - if (foldWidgetIndex == null) { - break; - } - this.activeLane = "fold"; - this.$blurAnnotation(this.activeRowIndex); - this.activeRowIndex = foldWidgetIndex; - this.$focusFoldWidget(this.activeRowIndex); - break; - } - return; - }; - GutterKeyboardHandler.prototype.$rowIndexToRow = function (index) { - var cell = this.lines.get(index); - if (cell) - return cell.row; - return null; - }; - GutterKeyboardHandler.prototype.$rowToRowIndex = function (row) { - for (var i = 0; i < this.lines.getLength(); i++) { - var cell = this.lines.get(i); - if (cell.row == row) - return i; - } - return null; - }; - return GutterKeyboardHandler; -}()); -exports.GutterKeyboardHandler = GutterKeyboardHandler; -var GutterKeyboardEvent = /** @class */ (function () { - function GutterKeyboardEvent(domEvent, gutterKeyboardHandler) { - this.gutterKeyboardHandler = gutterKeyboardHandler; - this.domEvent = domEvent; - } - GutterKeyboardEvent.prototype.getKey = function () { - return keys.keyCodeToString(this.domEvent.keyCode); - }; - GutterKeyboardEvent.prototype.getRow = function () { - return this.gutterKeyboardHandler.$rowIndexToRow(this.gutterKeyboardHandler.activeRowIndex); - }; - GutterKeyboardEvent.prototype.isInAnnotationLane = function () { - return this.gutterKeyboardHandler.activeLane === "annotation"; - }; - GutterKeyboardEvent.prototype.isInFoldLane = function () { - return this.gutterKeyboardHandler.activeLane === "fold"; - }; - return GutterKeyboardEvent; -}()); -exports.GutterKeyboardEvent = GutterKeyboardEvent; - -}); - -ace.define("ace/editor",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/lib/useragent","ace/keyboard/textinput","ace/mouse/mouse_handler","ace/mouse/fold_handler","ace/keyboard/keybinding","ace/edit_session","ace/search","ace/range","ace/lib/event_emitter","ace/commands/command_manager","ace/commands/default_commands","ace/config","ace/token_iterator","ace/line_widgets","ace/keyboard/gutter_handler","ace/config","ace/clipboard","ace/lib/keys"], function(require, exports, module){"use strict"; -var __values = (this && this.__values) || function(o) { - var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0; - if (m) return m.call(o); - if (o && typeof o.length === "number") return { - next: function () { - if (o && i >= o.length) o = void 0; - return { value: o && o[i++], done: !o }; - } - }; - throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined."); -}; -var oop = require("./lib/oop"); -var dom = require("./lib/dom"); -var lang = require("./lib/lang"); -var useragent = require("./lib/useragent"); -var TextInput = require("./keyboard/textinput").TextInput; -var MouseHandler = require("./mouse/mouse_handler").MouseHandler; -var FoldHandler = require("./mouse/fold_handler").FoldHandler; -var KeyBinding = require("./keyboard/keybinding").KeyBinding; -var EditSession = require("./edit_session").EditSession; -var Search = require("./search").Search; -var Range = require("./range").Range; -var EventEmitter = require("./lib/event_emitter").EventEmitter; -var CommandManager = require("./commands/command_manager").CommandManager; -var defaultCommands = require("./commands/default_commands").commands; -var config = require("./config"); -var TokenIterator = require("./token_iterator").TokenIterator; -var LineWidgets = require("./line_widgets").LineWidgets; -var GutterKeyboardHandler = require("./keyboard/gutter_handler").GutterKeyboardHandler; -var nls = require("./config").nls; -var clipboard = require("./clipboard"); -var keys = require('./lib/keys'); -var Editor = /** @class */ (function () { - function Editor(renderer, session, options) { - this.$toDestroy = []; - var container = renderer.getContainerElement(); - this.container = container; - this.renderer = renderer; - this.id = "editor" + (++Editor.$uid); - this.commands = new CommandManager(useragent.isMac ? "mac" : "win", defaultCommands); - if (typeof document == "object") { - this.textInput = new TextInput(renderer.getTextAreaContainer(), this); - this.renderer.textarea = this.textInput.getElement(); - this.$mouseHandler = new MouseHandler(this); - new FoldHandler(this); - } - this.keyBinding = new KeyBinding(this); - this.$search = new Search().set({ - wrap: true - }); - this.$historyTracker = this.$historyTracker.bind(this); - this.commands.on("exec", this.$historyTracker); - this.$initOperationListeners(); - this._$emitInputEvent = lang.delayedCall(function () { - this._signal("input", {}); - if (this.session && !this.session.destroyed) - this.session.bgTokenizer.scheduleStart(); - }.bind(this)); - this.on("change", function (_, _self) { - _self._$emitInputEvent.schedule(31); - }); - this.setSession(session || options && options.session || new EditSession("")); - config.resetOptions(this); - if (options) - this.setOptions(options); - config._signal("editor", this); - } - Editor.prototype.$initOperationListeners = function () { - this.commands.on("exec", this.startOperation.bind(this), true); - this.commands.on("afterExec", this.endOperation.bind(this), true); - this.$opResetTimer = lang.delayedCall(this.endOperation.bind(this, true)); - this.on("change", function () { - if (!this.curOp) { - this.startOperation(); - this.curOp.selectionBefore = this.$lastSel; - } - this.curOp.docChanged = true; - }.bind(this), true); - this.on("changeSelection", function () { - if (!this.curOp) { - this.startOperation(); - this.curOp.selectionBefore = this.$lastSel; - } - this.curOp.selectionChanged = true; - }.bind(this), true); - }; - Editor.prototype.startOperation = function (commandEvent) { - if (this.curOp) { - if (!commandEvent || this.curOp.command) - return; - this.prevOp = this.curOp; - } - if (!commandEvent) { - this.previousCommand = null; - commandEvent = {}; - } - this.$opResetTimer.schedule(); - this.curOp = this.session.curOp = { - command: commandEvent.command || {}, - args: commandEvent.args, - scrollTop: this.renderer.scrollTop - }; - this.curOp.selectionBefore = this.selection.toJSON(); - }; - Editor.prototype.endOperation = function (e) { - if (this.curOp && this.session) { - if (e && e.returnValue === false || !this.session) - return (this.curOp = null); - if (e == true && this.curOp.command && this.curOp.command.name == "mouse") - return; - this._signal("beforeEndOperation"); - if (!this.curOp) - return; - var command = this.curOp.command; - var scrollIntoView = command && command.scrollIntoView; - if (scrollIntoView) { - switch (scrollIntoView) { - case "center-animate": - scrollIntoView = "animate"; - case "center": - this.renderer.scrollCursorIntoView(null, 0.5); - break; - case "animate": - case "cursor": - this.renderer.scrollCursorIntoView(); - break; - case "selectionPart": - var range = this.selection.getRange(); - var config = this.renderer.layerConfig; - if (range.start.row >= config.lastRow || range.end.row <= config.firstRow) { - this.renderer.scrollSelectionIntoView(this.selection.anchor, this.selection.lead); - } - break; - default: - break; - } - if (scrollIntoView == "animate") - this.renderer.animateScrolling(this.curOp.scrollTop); - } - var sel = this.selection.toJSON(); - this.curOp.selectionAfter = sel; - this.$lastSel = this.selection.toJSON(); - this.session.getUndoManager().addSelection(sel); - this.prevOp = this.curOp; - this.curOp = null; - } - }; - Editor.prototype.$historyTracker = function (e) { - if (!this.$mergeUndoDeltas) - return; - var prev = this.prevOp; - var mergeableCommands = this.$mergeableCommands; - var shouldMerge = prev.command && (e.command.name == prev.command.name); - if (e.command.name == "insertstring") { - var text = e.args; - if (this.mergeNextCommand === undefined) - this.mergeNextCommand = true; - shouldMerge = shouldMerge - && this.mergeNextCommand // previous command allows to coalesce with - && (!/\s/.test(text) || /\s/.test(prev.args)); // previous insertion was of same type - this.mergeNextCommand = true; - } - else { - shouldMerge = shouldMerge - && mergeableCommands.indexOf(e.command.name) !== -1; // the command is mergeable - } - if (this.$mergeUndoDeltas != "always" - && Date.now() - this.sequenceStartTime > 2000) { - shouldMerge = false; // the sequence is too long - } - if (shouldMerge) - this.session.mergeUndoDeltas = true; - else if (mergeableCommands.indexOf(e.command.name) !== -1) - this.sequenceStartTime = Date.now(); - }; - Editor.prototype.setKeyboardHandler = function (keyboardHandler, cb) { - if (keyboardHandler && typeof keyboardHandler === "string" && keyboardHandler != "ace") { - this.$keybindingId = keyboardHandler; - var _self = this; - config.loadModule(["keybinding", keyboardHandler], function (module) { - if (_self.$keybindingId == keyboardHandler) - _self.keyBinding.setKeyboardHandler(module && module.handler); - cb && cb(); - }); - } - else { - this.$keybindingId = null; - this.keyBinding.setKeyboardHandler(keyboardHandler); - cb && cb(); - } - }; - Editor.prototype.getKeyboardHandler = function () { - return this.keyBinding.getKeyboardHandler(); - }; - Editor.prototype.setSession = function (session) { - if (this.session == session) - return; - if (this.curOp) - this.endOperation(); - this.curOp = {}; - var oldSession = this.session; - if (oldSession) { - this.session.off("change", this.$onDocumentChange); - this.session.off("changeMode", this.$onChangeMode); - this.session.off("tokenizerUpdate", this.$onTokenizerUpdate); - this.session.off("changeTabSize", this.$onChangeTabSize); - this.session.off("changeWrapLimit", this.$onChangeWrapLimit); - this.session.off("changeWrapMode", this.$onChangeWrapMode); - this.session.off("changeFold", this.$onChangeFold); - this.session.off("changeFrontMarker", this.$onChangeFrontMarker); - this.session.off("changeBackMarker", this.$onChangeBackMarker); - this.session.off("changeBreakpoint", this.$onChangeBreakpoint); - this.session.off("changeAnnotation", this.$onChangeAnnotation); - this.session.off("changeOverwrite", this.$onCursorChange); - this.session.off("changeScrollTop", this.$onScrollTopChange); - this.session.off("changeScrollLeft", this.$onScrollLeftChange); - var selection = this.session.getSelection(); - selection.off("changeCursor", this.$onCursorChange); - selection.off("changeSelection", this.$onSelectionChange); - } - this.session = session; - if (session) { - this.$onDocumentChange = this.onDocumentChange.bind(this); - session.on("change", this.$onDocumentChange); - this.renderer.setSession(session); - this.$onChangeMode = this.onChangeMode.bind(this); - session.on("changeMode", this.$onChangeMode); - this.$onTokenizerUpdate = this.onTokenizerUpdate.bind(this); - session.on("tokenizerUpdate", this.$onTokenizerUpdate); - this.$onChangeTabSize = this.renderer.onChangeTabSize.bind(this.renderer); - session.on("changeTabSize", this.$onChangeTabSize); - this.$onChangeWrapLimit = this.onChangeWrapLimit.bind(this); - session.on("changeWrapLimit", this.$onChangeWrapLimit); - this.$onChangeWrapMode = this.onChangeWrapMode.bind(this); - session.on("changeWrapMode", this.$onChangeWrapMode); - this.$onChangeFold = this.onChangeFold.bind(this); - session.on("changeFold", this.$onChangeFold); - this.$onChangeFrontMarker = this.onChangeFrontMarker.bind(this); - this.session.on("changeFrontMarker", this.$onChangeFrontMarker); - this.$onChangeBackMarker = this.onChangeBackMarker.bind(this); - this.session.on("changeBackMarker", this.$onChangeBackMarker); - this.$onChangeBreakpoint = this.onChangeBreakpoint.bind(this); - this.session.on("changeBreakpoint", this.$onChangeBreakpoint); - this.$onChangeAnnotation = this.onChangeAnnotation.bind(this); - this.session.on("changeAnnotation", this.$onChangeAnnotation); - this.$onCursorChange = this.onCursorChange.bind(this); - this.session.on("changeOverwrite", this.$onCursorChange); - this.$onScrollTopChange = this.onScrollTopChange.bind(this); - this.session.on("changeScrollTop", this.$onScrollTopChange); - this.$onScrollLeftChange = this.onScrollLeftChange.bind(this); - this.session.on("changeScrollLeft", this.$onScrollLeftChange); - this.selection = session.getSelection(); - this.selection.on("changeCursor", this.$onCursorChange); - this.$onSelectionChange = this.onSelectionChange.bind(this); - this.selection.on("changeSelection", this.$onSelectionChange); - this.onChangeMode(); - this.onCursorChange(); - this.onScrollTopChange(); - this.onScrollLeftChange(); - this.onSelectionChange(); - this.onChangeFrontMarker(); - this.onChangeBackMarker(); - this.onChangeBreakpoint(); - this.onChangeAnnotation(); - this.session.getUseWrapMode() && this.renderer.adjustWrapLimit(); - this.renderer.updateFull(); - } - else { - this.selection = null; - this.renderer.setSession(session); - } - this._signal("changeSession", { - session: session, - oldSession: oldSession - }); - this.curOp = null; - oldSession && oldSession._signal("changeEditor", { oldEditor: this }); - session && session._signal("changeEditor", { editor: this }); - if (session && !session.destroyed) - session.bgTokenizer.scheduleStart(); - }; - Editor.prototype.getSession = function () { - return this.session; - }; - Editor.prototype.setValue = function (val, cursorPos) { - this.session.doc.setValue(val); - if (!cursorPos) - this.selectAll(); - else if (cursorPos == 1) - this.navigateFileEnd(); - else if (cursorPos == -1) - this.navigateFileStart(); - return val; - }; - Editor.prototype.getValue = function () { - return this.session.getValue(); - }; - Editor.prototype.getSelection = function () { - return this.selection; - }; - Editor.prototype.resize = function (force) { - this.renderer.onResize(force); - }; - Editor.prototype.setTheme = function (theme, cb) { - this.renderer.setTheme(theme, cb); - }; - Editor.prototype.getTheme = function () { - return this.renderer.getTheme(); - }; - Editor.prototype.setStyle = function (style) { - this.renderer.setStyle(style); - }; - Editor.prototype.unsetStyle = function (style) { - this.renderer.unsetStyle(style); - }; - Editor.prototype.getFontSize = function () { - return this.getOption("fontSize") || - dom.computedStyle(this.container).fontSize; - }; - Editor.prototype.setFontSize = function (size) { - this.setOption("fontSize", size); - }; - Editor.prototype.$highlightBrackets = function () { - if (this.$highlightPending) { - return; - } - var self = this; - this.$highlightPending = true; - setTimeout(function () { - self.$highlightPending = false; - var session = self.session; - if (!session || session.destroyed) - return; - if (session.$bracketHighlight) { - session.$bracketHighlight.markerIds.forEach(function (id) { - session.removeMarker(id); - }); - session.$bracketHighlight = null; - } - var pos = self.getCursorPosition(); - var handler = self.getKeyboardHandler(); - var isBackwards = handler && handler.$getDirectionForHighlight && handler.$getDirectionForHighlight(self); - var ranges = session.getMatchingBracketRanges(pos, isBackwards); - if (!ranges) { - var iterator = new TokenIterator(session, pos.row, pos.column); - var token = iterator.getCurrentToken(); - if (token && /\b(?:tag-open|tag-name)/.test(token.type)) { - var tagNamesRanges = session.getMatchingTags(pos); - if (tagNamesRanges) - ranges = [tagNamesRanges.openTagName, tagNamesRanges.closeTagName]; - } - } - if (!ranges && session.$mode.getMatching) - ranges = session.$mode.getMatching(self.session); - if (!ranges) { - if (self.getHighlightIndentGuides()) - self.renderer.$textLayer.$highlightIndentGuide(); - return; - } - var markerType = "ace_bracket"; - if (!Array.isArray(ranges)) { - ranges = [ranges]; - } - else if (ranges.length == 1) { - markerType = "ace_error_bracket"; - } - if (ranges.length == 2) { - if (Range.comparePoints(ranges[0].end, ranges[1].start) == 0) - ranges = [Range.fromPoints(ranges[0].start, ranges[1].end)]; - else if (Range.comparePoints(ranges[0].start, ranges[1].end) == 0) - ranges = [Range.fromPoints(ranges[1].start, ranges[0].end)]; - } - session.$bracketHighlight = { - ranges: ranges, - markerIds: ranges.map(function (range) { - return session.addMarker(range, markerType, "text"); - }) - }; - if (self.getHighlightIndentGuides()) - self.renderer.$textLayer.$highlightIndentGuide(); - }, 50); - }; - Editor.prototype.focus = function () { - this.textInput.focus(); - }; - Editor.prototype.isFocused = function () { - return this.textInput.isFocused(); - }; - Editor.prototype.blur = function () { - this.textInput.blur(); - }; - Editor.prototype.onFocus = function (e) { - if (this.$isFocused) - return; - this.$isFocused = true; - this.renderer.showCursor(); - this.renderer.visualizeFocus(); - this._emit("focus", e); - }; - Editor.prototype.onBlur = function (e) { - if (!this.$isFocused) - return; - this.$isFocused = false; - this.renderer.hideCursor(); - this.renderer.visualizeBlur(); - this._emit("blur", e); - }; - Editor.prototype.$cursorChange = function () { - this.renderer.updateCursor(); - this.$highlightBrackets(); - this.$updateHighlightActiveLine(); - }; - Editor.prototype.onDocumentChange = function (delta) { - var wrap = this.session.$useWrapMode; - var lastRow = (delta.start.row == delta.end.row ? delta.end.row : Infinity); - this.renderer.updateLines(delta.start.row, lastRow, wrap); - this._signal("change", delta); - this.$cursorChange(); - }; - Editor.prototype.onTokenizerUpdate = function (e) { - var rows = e.data; - this.renderer.updateLines(rows.first, rows.last); - }; - Editor.prototype.onScrollTopChange = function () { - this.renderer.scrollToY(this.session.getScrollTop()); - }; - Editor.prototype.onScrollLeftChange = function () { - this.renderer.scrollToX(this.session.getScrollLeft()); - }; - Editor.prototype.onCursorChange = function () { - this.$cursorChange(); - this._signal("changeSelection"); - }; - Editor.prototype.$updateHighlightActiveLine = function () { - var session = this.getSession(); - var highlight; - if (this.$highlightActiveLine) { - if (this.$selectionStyle != "line" || !this.selection.isMultiLine()) - highlight = this.getCursorPosition(); - if (this.renderer.theme && this.renderer.theme.$selectionColorConflict && !this.selection.isEmpty()) - highlight = false; - if (this.renderer.$maxLines && this.session.getLength() === 1 && !(this.renderer.$minLines > 1)) - highlight = false; - } - if (session.$highlightLineMarker && !highlight) { - session.removeMarker(session.$highlightLineMarker.id); - session.$highlightLineMarker = null; - } - else if (!session.$highlightLineMarker && highlight) { - var range = new Range(highlight.row, highlight.column, highlight.row, Infinity); - range.id = session.addMarker(range, "ace_active-line", "screenLine"); - session.$highlightLineMarker = range; - } - else if (highlight) { - session.$highlightLineMarker.start.row = highlight.row; - session.$highlightLineMarker.end.row = highlight.row; - session.$highlightLineMarker.start.column = highlight.column; - session._signal("changeBackMarker"); - } - }; - Editor.prototype.onSelectionChange = function (e) { - var session = this.session; - if (session.$selectionMarker) { - session.removeMarker(session.$selectionMarker); - } - session.$selectionMarker = null; - if (!this.selection.isEmpty()) { - var range = this.selection.getRange(); - var style = this.getSelectionStyle(); - session.$selectionMarker = session.addMarker(range, "ace_selection", style); - } - else { - this.$updateHighlightActiveLine(); - } - var re = this.$highlightSelectedWord && this.$getSelectionHighLightRegexp(); - this.session.highlight(re); - this._signal("changeSelection"); - }; - Editor.prototype.$getSelectionHighLightRegexp = function () { - var session = this.session; - var selection = this.getSelectionRange(); - if (selection.isEmpty() || selection.isMultiLine()) - return; - var startColumn = selection.start.column; - var endColumn = selection.end.column; - var line = session.getLine(selection.start.row); - var needle = line.substring(startColumn, endColumn); - if (needle.length > 5000 || !/[\w\d]/.test(needle)) - return; - var re = this.$search.$assembleRegExp({ - wholeWord: true, - caseSensitive: true, - needle: needle - }); - var wordWithBoundary = line.substring(startColumn - 1, endColumn + 1); - if (!re.test(wordWithBoundary)) - return; - return re; - }; - Editor.prototype.onChangeFrontMarker = function () { - this.renderer.updateFrontMarkers(); - }; - Editor.prototype.onChangeBackMarker = function () { - this.renderer.updateBackMarkers(); - }; - Editor.prototype.onChangeBreakpoint = function () { - this.renderer.updateBreakpoints(); - }; - Editor.prototype.onChangeAnnotation = function () { - this.renderer.setAnnotations(this.session.getAnnotations()); - }; - Editor.prototype.onChangeMode = function (e) { - this.renderer.updateText(); - this._emit("changeMode", e); - }; - Editor.prototype.onChangeWrapLimit = function () { - this.renderer.updateFull(); - }; - Editor.prototype.onChangeWrapMode = function () { - this.renderer.onResize(true); - }; - Editor.prototype.onChangeFold = function () { - this.$updateHighlightActiveLine(); - this.renderer.updateFull(); - }; - Editor.prototype.getSelectedText = function () { - return this.session.getTextRange(this.getSelectionRange()); - }; - Editor.prototype.getCopyText = function () { - var text = this.getSelectedText(); - var nl = this.session.doc.getNewLineCharacter(); - var copyLine = false; - if (!text && this.$copyWithEmptySelection) { - copyLine = true; - var ranges = this.selection.getAllRanges(); - for (var i = 0; i < ranges.length; i++) { - var range = ranges[i]; - if (i && ranges[i - 1].start.row == range.start.row) - continue; - text += this.session.getLine(range.start.row) + nl; - } - } - var e = { text: text }; - this._signal("copy", e); - clipboard.lineMode = copyLine ? e.text : false; - return e.text; - }; - Editor.prototype.onCopy = function () { - this.commands.exec("copy", this); - }; - Editor.prototype.onCut = function () { - this.commands.exec("cut", this); - }; - Editor.prototype.onPaste = function (text, event) { - var e = { text: text, event: event }; - this.commands.exec("paste", this, e); - }; - Editor.prototype.$handlePaste = function (e) { - if (typeof e == "string") - e = { text: e }; - this._signal("paste", e); - var text = e.text; - var lineMode = text === clipboard.lineMode; - var session = this.session; - if (!this.inMultiSelectMode || this.inVirtualSelectionMode) { - if (lineMode) - session.insert({ row: this.selection.lead.row, column: 0 }, text); - else - this.insert(text); - } - else if (lineMode) { - this.selection.rangeList.ranges.forEach(function (range) { - session.insert({ row: range.start.row, column: 0 }, text); - }); - } - else { - var lines = text.split(/\r\n|\r|\n/); - var ranges = this.selection.rangeList.ranges; - var isFullLine = lines.length == 2 && (!lines[0] || !lines[1]); - if (lines.length != ranges.length || isFullLine) - return this.commands.exec("insertstring", this, text); - for (var i = ranges.length; i--;) { - var range = ranges[i]; - if (!range.isEmpty()) - session.remove(range); - session.insert(range.start, lines[i]); - } - } - }; - Editor.prototype.execCommand = function (command, args) { - return this.commands.exec(command, this, args); - }; - Editor.prototype.insert = function (text, pasted) { - var session = this.session; - var mode = session.getMode(); - var cursor = this.getCursorPosition(); - if (this.getBehavioursEnabled() && !pasted) { - var transform = mode.transformAction(session.getState(cursor.row), 'insertion', this, session, text); - if (transform) { - if (text !== transform.text) { - if (!this.inVirtualSelectionMode) { - this.session.mergeUndoDeltas = false; - this.mergeNextCommand = false; - } - } - text = transform.text; - } - } - if (text == "\t") - text = this.session.getTabString(); - if (!this.selection.isEmpty()) { - var range = this.getSelectionRange(); - cursor = this.session.remove(range); - this.clearSelection(); - } - else if (this.session.getOverwrite() && text.indexOf("\n") == -1) { - var range = new Range.fromPoints(cursor, cursor); - range.end.column += text.length; - this.session.remove(range); - } - if (text == "\n" || text == "\r\n") { - var line = session.getLine(cursor.row); - if (cursor.column > line.search(/\S|$/)) { - var d = line.substr(cursor.column).search(/\S|$/); - session.doc.removeInLine(cursor.row, cursor.column, cursor.column + d); - } - } - this.clearSelection(); - var start = cursor.column; - var lineState = session.getState(cursor.row); - var line = session.getLine(cursor.row); - var shouldOutdent = mode.checkOutdent(lineState, line, text); - session.insert(cursor, text); - if (transform && transform.selection) { - if (transform.selection.length == 2) { // Transform relative to the current column - this.selection.setSelectionRange(new Range(cursor.row, start + transform.selection[0], cursor.row, start + transform.selection[1])); - } - else { // Transform relative to the current row. - this.selection.setSelectionRange(new Range(cursor.row + transform.selection[0], transform.selection[1], cursor.row + transform.selection[2], transform.selection[3])); - } - } - if (this.$enableAutoIndent) { - if (session.getDocument().isNewLine(text)) { - var lineIndent = mode.getNextLineIndent(lineState, line.slice(0, cursor.column), session.getTabString()); - session.insert({ row: cursor.row + 1, column: 0 }, lineIndent); - } - if (shouldOutdent) - mode.autoOutdent(lineState, session, cursor.row); - } - }; - Editor.prototype.autoIndent = function () { - var session = this.session; - var mode = session.getMode(); - var startRow, endRow; - if (this.selection.isEmpty()) { - startRow = 0; - endRow = session.doc.getLength() - 1; - } - else { - var selectedRange = this.getSelectionRange(); - startRow = selectedRange.start.row; - endRow = selectedRange.end.row; - } - var prevLineState = ""; - var prevLine = ""; - var lineIndent = ""; - var line, currIndent, range; - var tab = session.getTabString(); - for (var row = startRow; row <= endRow; row++) { - if (row > 0) { - prevLineState = session.getState(row - 1); - prevLine = session.getLine(row - 1); - lineIndent = mode.getNextLineIndent(prevLineState, prevLine, tab); - } - line = session.getLine(row); - currIndent = mode.$getIndent(line); - if (lineIndent !== currIndent) { - if (currIndent.length > 0) { - range = new Range(row, 0, row, currIndent.length); - session.remove(range); - } - if (lineIndent.length > 0) { - session.insert({ row: row, column: 0 }, lineIndent); - } - } - mode.autoOutdent(prevLineState, session, row); - } - }; - Editor.prototype.onTextInput = function (text, composition) { - if (!composition) - return this.keyBinding.onTextInput(text); - this.startOperation({ command: { name: "insertstring" } }); - var applyComposition = this.applyComposition.bind(this, text, composition); - if (this.selection.rangeCount) - this.forEachSelection(applyComposition); - else - applyComposition(); - this.endOperation(); - }; - Editor.prototype.applyComposition = function (text, composition) { - if (composition.extendLeft || composition.extendRight) { - var r = this.selection.getRange(); - r.start.column -= composition.extendLeft; - r.end.column += composition.extendRight; - if (r.start.column < 0) { - r.start.row--; - r.start.column += this.session.getLine(r.start.row).length + 1; - } - this.selection.setRange(r); - if (!text && !r.isEmpty()) - this.remove(); - } - if (text || !this.selection.isEmpty()) - this.insert(text, true); - if (composition.restoreStart || composition.restoreEnd) { - var r = this.selection.getRange(); - r.start.column -= composition.restoreStart; - r.end.column -= composition.restoreEnd; - this.selection.setRange(r); - } - }; - Editor.prototype.onCommandKey = function (e, hashId, keyCode) { - return this.keyBinding.onCommandKey(e, hashId, keyCode); - }; - Editor.prototype.setOverwrite = function (overwrite) { - this.session.setOverwrite(overwrite); - }; - Editor.prototype.getOverwrite = function () { - return this.session.getOverwrite(); - }; - Editor.prototype.toggleOverwrite = function () { - this.session.toggleOverwrite(); - }; - Editor.prototype.setScrollSpeed = function (speed) { - this.setOption("scrollSpeed", speed); - }; - Editor.prototype.getScrollSpeed = function () { - return this.getOption("scrollSpeed"); - }; - Editor.prototype.setDragDelay = function (dragDelay) { - this.setOption("dragDelay", dragDelay); - }; - Editor.prototype.getDragDelay = function () { - return this.getOption("dragDelay"); - }; - Editor.prototype.setSelectionStyle = function (val) { - this.setOption("selectionStyle", val); - }; - Editor.prototype.getSelectionStyle = function () { - return this.getOption("selectionStyle"); - }; - Editor.prototype.setHighlightActiveLine = function (shouldHighlight) { - this.setOption("highlightActiveLine", shouldHighlight); - }; - Editor.prototype.getHighlightActiveLine = function () { - return this.getOption("highlightActiveLine"); - }; - Editor.prototype.setHighlightGutterLine = function (shouldHighlight) { - this.setOption("highlightGutterLine", shouldHighlight); - }; - Editor.prototype.getHighlightGutterLine = function () { - return this.getOption("highlightGutterLine"); - }; - Editor.prototype.setHighlightSelectedWord = function (shouldHighlight) { - this.setOption("highlightSelectedWord", shouldHighlight); - }; - Editor.prototype.getHighlightSelectedWord = function () { - return this.$highlightSelectedWord; - }; - Editor.prototype.setAnimatedScroll = function (shouldAnimate) { - this.renderer.setAnimatedScroll(shouldAnimate); - }; - Editor.prototype.getAnimatedScroll = function () { - return this.renderer.getAnimatedScroll(); - }; - Editor.prototype.setShowInvisibles = function (showInvisibles) { - this.renderer.setShowInvisibles(showInvisibles); - }; - Editor.prototype.getShowInvisibles = function () { - return this.renderer.getShowInvisibles(); - }; - Editor.prototype.setDisplayIndentGuides = function (display) { - this.renderer.setDisplayIndentGuides(display); - }; - Editor.prototype.getDisplayIndentGuides = function () { - return this.renderer.getDisplayIndentGuides(); - }; - Editor.prototype.setHighlightIndentGuides = function (highlight) { - this.renderer.setHighlightIndentGuides(highlight); - }; - Editor.prototype.getHighlightIndentGuides = function () { - return this.renderer.getHighlightIndentGuides(); - }; - Editor.prototype.setShowPrintMargin = function (showPrintMargin) { - this.renderer.setShowPrintMargin(showPrintMargin); - }; - Editor.prototype.getShowPrintMargin = function () { - return this.renderer.getShowPrintMargin(); - }; - Editor.prototype.setPrintMarginColumn = function (showPrintMargin) { - this.renderer.setPrintMarginColumn(showPrintMargin); - }; - Editor.prototype.getPrintMarginColumn = function () { - return this.renderer.getPrintMarginColumn(); - }; - Editor.prototype.setReadOnly = function (readOnly) { - this.setOption("readOnly", readOnly); - }; - Editor.prototype.getReadOnly = function () { - return this.getOption("readOnly"); - }; - Editor.prototype.setBehavioursEnabled = function (enabled) { - this.setOption("behavioursEnabled", enabled); - }; - Editor.prototype.getBehavioursEnabled = function () { - return this.getOption("behavioursEnabled"); - }; - Editor.prototype.setWrapBehavioursEnabled = function (enabled) { - this.setOption("wrapBehavioursEnabled", enabled); - }; - Editor.prototype.getWrapBehavioursEnabled = function () { - return this.getOption("wrapBehavioursEnabled"); - }; - Editor.prototype.setShowFoldWidgets = function (show) { - this.setOption("showFoldWidgets", show); - }; - Editor.prototype.getShowFoldWidgets = function () { - return this.getOption("showFoldWidgets"); - }; - Editor.prototype.setFadeFoldWidgets = function (fade) { - this.setOption("fadeFoldWidgets", fade); - }; - Editor.prototype.getFadeFoldWidgets = function () { - return this.getOption("fadeFoldWidgets"); - }; - Editor.prototype.remove = function (dir) { - if (this.selection.isEmpty()) { - if (dir == "left") - this.selection.selectLeft(); - else - this.selection.selectRight(); - } - var range = this.getSelectionRange(); - if (this.getBehavioursEnabled()) { - var session = this.session; - var state = session.getState(range.start.row); - var new_range = session.getMode().transformAction(state, 'deletion', this, session, range); - if (range.end.column === 0) { - var text = session.getTextRange(range); - if (text[text.length - 1] == "\n") { - var line = session.getLine(range.end.row); - if (/^\s+$/.test(line)) { - range.end.column = line.length; - } - } - } - if (new_range) - range = new_range; - } - this.session.remove(range); - this.clearSelection(); - }; - Editor.prototype.removeWordRight = function () { - if (this.selection.isEmpty()) - this.selection.selectWordRight(); - this.session.remove(this.getSelectionRange()); - this.clearSelection(); - }; - Editor.prototype.removeWordLeft = function () { - if (this.selection.isEmpty()) - this.selection.selectWordLeft(); - this.session.remove(this.getSelectionRange()); - this.clearSelection(); - }; - Editor.prototype.removeToLineStart = function () { - if (this.selection.isEmpty()) - this.selection.selectLineStart(); - if (this.selection.isEmpty()) - this.selection.selectLeft(); - this.session.remove(this.getSelectionRange()); - this.clearSelection(); - }; - Editor.prototype.removeToLineEnd = function () { - if (this.selection.isEmpty()) - this.selection.selectLineEnd(); - var range = this.getSelectionRange(); - if (range.start.column == range.end.column && range.start.row == range.end.row) { - range.end.column = 0; - range.end.row++; - } - this.session.remove(range); - this.clearSelection(); - }; - Editor.prototype.splitLine = function () { - if (!this.selection.isEmpty()) { - this.session.remove(this.getSelectionRange()); - this.clearSelection(); - } - var cursor = this.getCursorPosition(); - this.insert("\n"); - this.moveCursorToPosition(cursor); - }; - Editor.prototype.setGhostText = function (text, position) { - if (!this.session.widgetManager) { - this.session.widgetManager = new LineWidgets(this.session); - this.session.widgetManager.attach(this); - } - this.renderer.setGhostText(text, position); - }; - Editor.prototype.removeGhostText = function () { - if (!this.session.widgetManager) - return; - this.renderer.removeGhostText(); - }; - Editor.prototype.transposeLetters = function () { - if (!this.selection.isEmpty()) { - return; - } - var cursor = this.getCursorPosition(); - var column = cursor.column; - if (column === 0) - return; - var line = this.session.getLine(cursor.row); - var swap, range; - if (column < line.length) { - swap = line.charAt(column) + line.charAt(column - 1); - range = new Range(cursor.row, column - 1, cursor.row, column + 1); - } - else { - swap = line.charAt(column - 1) + line.charAt(column - 2); - range = new Range(cursor.row, column - 2, cursor.row, column); - } - this.session.replace(range, swap); - this.session.selection.moveToPosition(range.end); - }; - Editor.prototype.toLowerCase = function () { - var originalRange = this.getSelectionRange(); - if (this.selection.isEmpty()) { - this.selection.selectWord(); - } - var range = this.getSelectionRange(); - var text = this.session.getTextRange(range); - this.session.replace(range, text.toLowerCase()); - this.selection.setSelectionRange(originalRange); - }; - Editor.prototype.toUpperCase = function () { - var originalRange = this.getSelectionRange(); - if (this.selection.isEmpty()) { - this.selection.selectWord(); - } - var range = this.getSelectionRange(); - var text = this.session.getTextRange(range); - this.session.replace(range, text.toUpperCase()); - this.selection.setSelectionRange(originalRange); - }; - Editor.prototype.indent = function () { - var session = this.session; - var range = this.getSelectionRange(); - if (range.start.row < range.end.row) { - var rows = this.$getSelectedRows(); - session.indentRows(rows.first, rows.last, "\t"); - return; - } - else if (range.start.column < range.end.column) { - var text = session.getTextRange(range); - if (!/^\s+$/.test(text)) { - var rows = this.$getSelectedRows(); - session.indentRows(rows.first, rows.last, "\t"); - return; - } - } - var line = session.getLine(range.start.row); - var position = range.start; - var size = session.getTabSize(); - var column = session.documentToScreenColumn(position.row, position.column); - if (this.session.getUseSoftTabs()) { - var count = (size - column % size); - var indentString = lang.stringRepeat(" ", count); - } - else { - var count = column % size; - while (line[range.start.column - 1] == " " && count) { - range.start.column--; - count--; - } - this.selection.setSelectionRange(range); - indentString = "\t"; - } - return this.insert(indentString); - }; - Editor.prototype.blockIndent = function () { - var rows = this.$getSelectedRows(); - this.session.indentRows(rows.first, rows.last, "\t"); - }; - Editor.prototype.blockOutdent = function () { - var selection = this.session.getSelection(); - this.session.outdentRows(selection.getRange()); - }; - Editor.prototype.sortLines = function () { - var rows = this.$getSelectedRows(); - var session = this.session; - var lines = []; - for (var i = rows.first; i <= rows.last; i++) - lines.push(session.getLine(i)); - lines.sort(function (a, b) { - if (a.toLowerCase() < b.toLowerCase()) - return -1; - if (a.toLowerCase() > b.toLowerCase()) - return 1; - return 0; - }); - var deleteRange = new Range(0, 0, 0, 0); - for (var i = rows.first; i <= rows.last; i++) { - var line = session.getLine(i); - deleteRange.start.row = i; - deleteRange.end.row = i; - deleteRange.end.column = line.length; - session.replace(deleteRange, lines[i - rows.first]); - } - }; - Editor.prototype.toggleCommentLines = function () { - var state = this.session.getState(this.getCursorPosition().row); - var rows = this.$getSelectedRows(); - this.session.getMode().toggleCommentLines(state, this.session, rows.first, rows.last); - }; - Editor.prototype.toggleBlockComment = function () { - var cursor = this.getCursorPosition(); - var state = this.session.getState(cursor.row); - var range = this.getSelectionRange(); - this.session.getMode().toggleBlockComment(state, this.session, range, cursor); - }; - Editor.prototype.getNumberAt = function (row, column) { - var _numberRx = /[\-]?[0-9]+(?:\.[0-9]+)?/g; - _numberRx.lastIndex = 0; - var s = this.session.getLine(row); - while (_numberRx.lastIndex < column) { - var m = _numberRx.exec(s); - if (m.index <= column && m.index + m[0].length >= column) { - var number = { - value: m[0], - start: m.index, - end: m.index + m[0].length - }; - return number; - } - } - return null; - }; - Editor.prototype.modifyNumber = function (amount) { - var row = this.selection.getCursor().row; - var column = this.selection.getCursor().column; - var charRange = new Range(row, column - 1, row, column); - var c = this.session.getTextRange(charRange); - if (!isNaN(parseFloat(c)) && isFinite(c)) { - var nr = this.getNumberAt(row, column); - if (nr) { - var fp = nr.value.indexOf(".") >= 0 ? nr.start + nr.value.indexOf(".") + 1 : nr.end; - var decimals = nr.start + nr.value.length - fp; - var t = parseFloat(nr.value); - t *= Math.pow(10, decimals); - if (fp !== nr.end && column < fp) { - amount *= Math.pow(10, nr.end - column - 1); - } - else { - amount *= Math.pow(10, nr.end - column); - } - t += amount; - t /= Math.pow(10, decimals); - var nnr = t.toFixed(decimals); - var replaceRange = new Range(row, nr.start, row, nr.end); - this.session.replace(replaceRange, nnr); - this.moveCursorTo(row, Math.max(nr.start + 1, column + nnr.length - nr.value.length)); - } - } - else { - this.toggleWord(); - } - }; - Editor.prototype.toggleWord = function () { - var row = this.selection.getCursor().row; - var column = this.selection.getCursor().column; - this.selection.selectWord(); - var currentState = this.getSelectedText(); - var currWordStart = this.selection.getWordRange().start.column; - var wordParts = currentState.replace(/([a-z]+|[A-Z]+)(?=[A-Z_]|$)/g, '$1 ').split(/\s/); - var delta = column - currWordStart - 1; - if (delta < 0) - delta = 0; - var curLength = 0, itLength = 0; - var that = this; - if (currentState.match(/[A-Za-z0-9_]+/)) { - wordParts.forEach(function (item, i) { - itLength = curLength + item.length; - if (delta >= curLength && delta <= itLength) { - currentState = item; - that.selection.clearSelection(); - that.moveCursorTo(row, curLength + currWordStart); - that.selection.selectTo(row, itLength + currWordStart); - } - curLength = itLength; - }); - } - var wordPairs = this.$toggleWordPairs; - var reg; - for (var i = 0; i < wordPairs.length; i++) { - var item = wordPairs[i]; - for (var j = 0; j <= 1; j++) { - var negate = +!j; - var firstCondition = currentState.match(new RegExp('^\\s?_?(' + lang.escapeRegExp(item[j]) + ')\\s?$', 'i')); - if (firstCondition) { - var secondCondition = currentState.match(new RegExp('([_]|^|\\s)(' + lang.escapeRegExp(firstCondition[1]) + ')($|\\s)', 'g')); - if (secondCondition) { - reg = currentState.replace(new RegExp(lang.escapeRegExp(item[j]), 'i'), function (result) { - var res = item[negate]; - if (result.toUpperCase() == result) { - res = res.toUpperCase(); - } - else if (result.charAt(0).toUpperCase() == result.charAt(0)) { - res = res.substr(0, 0) + item[negate].charAt(0).toUpperCase() + res.substr(1); - } - return res; - }); - this.insert(reg); - reg = ""; - } - } - } - } - }; - Editor.prototype.findLinkAt = function (row, column) { - var e_1, _a; - var line = this.session.getLine(row); - var wordParts = line.split(/((?:https?|ftp):\/\/[\S]+)/); - var columnPosition = column; - if (columnPosition < 0) - columnPosition = 0; - var previousPosition = 0, currentPosition = 0, match; - try { - for (var wordParts_1 = __values(wordParts), wordParts_1_1 = wordParts_1.next(); !wordParts_1_1.done; wordParts_1_1 = wordParts_1.next()) { - var item = wordParts_1_1.value; - currentPosition = previousPosition + item.length; - if (columnPosition >= previousPosition && columnPosition <= currentPosition) { - if (item.match(/((?:https?|ftp):\/\/[\S]+)/)) { - match = item.replace(/[\s:.,'";}\]]+$/, ""); - break; - } - } - previousPosition = currentPosition; - } - } - catch (e_1_1) { e_1 = { error: e_1_1 }; } - finally { - try { - if (wordParts_1_1 && !wordParts_1_1.done && (_a = wordParts_1.return)) _a.call(wordParts_1); - } - finally { if (e_1) throw e_1.error; } - } - return match; - }; - Editor.prototype.openLink = function () { - var cursor = this.selection.getCursor(); - var url = this.findLinkAt(cursor.row, cursor.column); - if (url) - window.open(url, '_blank'); - return url != null; - }; - Editor.prototype.removeLines = function () { - var rows = this.$getSelectedRows(); - this.session.removeFullLines(rows.first, rows.last); - this.clearSelection(); - }; - Editor.prototype.duplicateSelection = function () { - var sel = this.selection; - var doc = this.session; - var range = sel.getRange(); - var reverse = sel.isBackwards(); - if (range.isEmpty()) { - var row = range.start.row; - doc.duplicateLines(row, row); - } - else { - var point = reverse ? range.start : range.end; - var endPoint = doc.insert(point, doc.getTextRange(range), false); - range.start = point; - range.end = endPoint; - sel.setSelectionRange(range, reverse); - } - }; - Editor.prototype.moveLinesDown = function () { - this.$moveLines(1, false); - }; - Editor.prototype.moveLinesUp = function () { - this.$moveLines(-1, false); - }; - Editor.prototype.moveText = function (range, toPosition, copy) { - return this.session.moveText(range, toPosition, copy); - }; - Editor.prototype.copyLinesUp = function () { - this.$moveLines(-1, true); - }; - Editor.prototype.copyLinesDown = function () { - this.$moveLines(1, true); - }; - Editor.prototype.$moveLines = function (dir, copy) { - var rows, moved; - var selection = this.selection; - if (!selection.inMultiSelectMode || this.inVirtualSelectionMode) { - var range = selection.toOrientedRange(); - rows = this.$getSelectedRows(range); - moved = this.session.$moveLines(rows.first, rows.last, copy ? 0 : dir); - if (copy && dir == -1) - moved = 0; - range.moveBy(moved, 0); - selection.fromOrientedRange(range); - } - else { - var ranges = selection.rangeList.ranges; - selection.rangeList.detach(this.session); - this.inVirtualSelectionMode = true; - var diff = 0; - var totalDiff = 0; - var l = ranges.length; - for (var i = 0; i < l; i++) { - var rangeIndex = i; - ranges[i].moveBy(diff, 0); - rows = this.$getSelectedRows(ranges[i]); - var first = rows.first; - var last = rows.last; - while (++i < l) { - if (totalDiff) - ranges[i].moveBy(totalDiff, 0); - var subRows = this.$getSelectedRows(ranges[i]); - if (copy && subRows.first != last) - break; - else if (!copy && subRows.first > last + 1) - break; - last = subRows.last; - } - i--; - diff = this.session.$moveLines(first, last, copy ? 0 : dir); - if (copy && dir == -1) - rangeIndex = i + 1; - while (rangeIndex <= i) { - ranges[rangeIndex].moveBy(diff, 0); - rangeIndex++; - } - if (!copy) - diff = 0; - totalDiff += diff; - } - selection.fromOrientedRange(selection.ranges[0]); - selection.rangeList.attach(this.session); - this.inVirtualSelectionMode = false; - } - }; - Editor.prototype.$getSelectedRows = function (range) { - range = (range || this.getSelectionRange()).collapseRows(); - return { - first: this.session.getRowFoldStart(range.start.row), - last: this.session.getRowFoldEnd(range.end.row) - }; - }; - Editor.prototype.onCompositionStart = function (compositionState) { - this.renderer.showComposition(compositionState); - }; - Editor.prototype.onCompositionUpdate = function (text) { - this.renderer.setCompositionText(text); - }; - Editor.prototype.onCompositionEnd = function () { - this.renderer.hideComposition(); - }; - Editor.prototype.getFirstVisibleRow = function () { - return this.renderer.getFirstVisibleRow(); - }; - Editor.prototype.getLastVisibleRow = function () { - return this.renderer.getLastVisibleRow(); - }; - Editor.prototype.isRowVisible = function (row) { - return (row >= this.getFirstVisibleRow() && row <= this.getLastVisibleRow()); - }; - Editor.prototype.isRowFullyVisible = function (row) { - return (row >= this.renderer.getFirstFullyVisibleRow() && row <= this.renderer.getLastFullyVisibleRow()); - }; - Editor.prototype.$getVisibleRowCount = function () { - return this.renderer.getScrollBottomRow() - this.renderer.getScrollTopRow() + 1; - }; - Editor.prototype.$moveByPage = function (dir, select) { - var renderer = this.renderer; - var config = this.renderer.layerConfig; - var rows = dir * Math.floor(config.height / config.lineHeight); - if (select === true) { - this.selection.$moveSelection(function () { - this.moveCursorBy(rows, 0); - }); - } - else if (select === false) { - this.selection.moveCursorBy(rows, 0); - this.selection.clearSelection(); - } - var scrollTop = renderer.scrollTop; - renderer.scrollBy(0, rows * config.lineHeight); - if (select != null) - renderer.scrollCursorIntoView(null, 0.5); - renderer.animateScrolling(scrollTop); - }; - Editor.prototype.selectPageDown = function () { - this.$moveByPage(1, true); - }; - Editor.prototype.selectPageUp = function () { - this.$moveByPage(-1, true); - }; - Editor.prototype.gotoPageDown = function () { - this.$moveByPage(1, false); - }; - Editor.prototype.gotoPageUp = function () { - this.$moveByPage(-1, false); - }; - Editor.prototype.scrollPageDown = function () { - this.$moveByPage(1); - }; - Editor.prototype.scrollPageUp = function () { - this.$moveByPage(-1); - }; - Editor.prototype.scrollToRow = function (row) { - this.renderer.scrollToRow(row); - }; - Editor.prototype.scrollToLine = function (line, center, animate, callback) { - this.renderer.scrollToLine(line, center, animate, callback); - }; - Editor.prototype.centerSelection = function () { - var range = this.getSelectionRange(); - var pos = { - row: Math.floor(range.start.row + (range.end.row - range.start.row) / 2), - column: Math.floor(range.start.column + (range.end.column - range.start.column) / 2) - }; - this.renderer.alignCursor(pos, 0.5); - }; - Editor.prototype.getCursorPosition = function () { - return this.selection.getCursor(); - }; - Editor.prototype.getCursorPositionScreen = function () { - return this.session.documentToScreenPosition(this.getCursorPosition()); - }; - Editor.prototype.getSelectionRange = function () { - return this.selection.getRange(); - }; - Editor.prototype.selectAll = function () { - this.selection.selectAll(); - }; - Editor.prototype.clearSelection = function () { - this.selection.clearSelection(); - }; - Editor.prototype.moveCursorTo = function (row, column) { - this.selection.moveCursorTo(row, column); - }; - Editor.prototype.moveCursorToPosition = function (pos) { - this.selection.moveCursorToPosition(pos); - }; - Editor.prototype.jumpToMatching = function (select, expand) { - var cursor = this.getCursorPosition(); - var iterator = new TokenIterator(this.session, cursor.row, cursor.column); - var prevToken = iterator.getCurrentToken(); - var tokenCount = 0; - if (prevToken && prevToken.type.indexOf('tag-name') !== -1) { - prevToken = iterator.stepBackward(); - } - var token = prevToken || iterator.stepForward(); - if (!token) - return; - var matchType; - var found = false; - var depth = {}; - var i = cursor.column - token.start; - var bracketType; - var brackets = { - ")": "(", - "(": "(", - "]": "[", - "[": "[", - "{": "{", - "}": "{" - }; - do { - if (token.value.match(/[{}()\[\]]/g)) { - for (; i < token.value.length && !found; i++) { - if (!brackets[token.value[i]]) { - continue; - } - bracketType = brackets[token.value[i]] + '.' + token.type.replace("rparen", "lparen"); - if (isNaN(depth[bracketType])) { - depth[bracketType] = 0; - } - switch (token.value[i]) { - case '(': - case '[': - case '{': - depth[bracketType]++; - break; - case ')': - case ']': - case '}': - depth[bracketType]--; - if (depth[bracketType] === -1) { - matchType = 'bracket'; - found = true; - } - break; - } - } - } - else if (token.type.indexOf('tag-name') !== -1) { - if (isNaN(depth[token.value])) { - depth[token.value] = 0; - } - if (prevToken.value === '<' && tokenCount > 1) { - depth[token.value]++; - } - else if (prevToken.value === '= 0; --i) { - if (this.$tryReplace(ranges[i], replacement)) { - replaced++; - } - } - this.selection.setSelectionRange(selection); - return replaced; - }; - Editor.prototype.$tryReplace = function (range, replacement) { - var input = this.session.getTextRange(range); - replacement = this.$search.replace(input, replacement); - if (replacement !== null) { - range.end = this.session.replace(range, replacement); - return range; - } - else { - return null; - } - }; - Editor.prototype.getLastSearchOptions = function () { - return this.$search.getOptions(); - }; - Editor.prototype.find = function (needle, options, animate) { - if (!options) - options = {}; - if (typeof needle == "string" || needle instanceof RegExp) - options.needle = needle; - else if (typeof needle == "object") - oop.mixin(options, needle); - var range = this.selection.getRange(); - if (options.needle == null) { - needle = this.session.getTextRange(range) - || this.$search.$options.needle; - if (!needle) { - range = this.session.getWordRange(range.start.row, range.start.column); - needle = this.session.getTextRange(range); - } - this.$search.set({ needle: needle }); - } - this.$search.set(options); - if (!options.start) - this.$search.set({ start: range }); - var newRange = this.$search.find(this.session); - if (options.preventScroll) - return newRange; - if (newRange) { - this.revealRange(newRange, animate); - return newRange; - } - if (options.backwards) - range.start = range.end; - else - range.end = range.start; - this.selection.setRange(range); - }; - Editor.prototype.findNext = function (options, animate) { - this.find({ skipCurrent: true, backwards: false }, options, animate); - }; - Editor.prototype.findPrevious = function (options, animate) { - this.find(options, { skipCurrent: true, backwards: true }, animate); - }; - Editor.prototype.revealRange = function (range, animate) { - this.session.unfold(range); - this.selection.setSelectionRange(range); - var scrollTop = this.renderer.scrollTop; - this.renderer.scrollSelectionIntoView(range.start, range.end, 0.5); - if (animate !== false) - this.renderer.animateScrolling(scrollTop); - }; - Editor.prototype.undo = function () { - this.session.getUndoManager().undo(this.session); - this.renderer.scrollCursorIntoView(null, 0.5); - }; - Editor.prototype.redo = function () { - this.session.getUndoManager().redo(this.session); - this.renderer.scrollCursorIntoView(null, 0.5); - }; - Editor.prototype.destroy = function () { - if (this.$toDestroy) { - this.$toDestroy.forEach(function (el) { - el.destroy(); - }); - this.$toDestroy = null; - } - if (this.$mouseHandler) - this.$mouseHandler.destroy(); - this.renderer.destroy(); - this._signal("destroy", this); - if (this.session) - this.session.destroy(); - if (this._$emitInputEvent) - this._$emitInputEvent.cancel(); - this.removeAllListeners(); - }; - Editor.prototype.setAutoScrollEditorIntoView = function (enable) { - if (!enable) - return; - var rect; - var self = this; - var shouldScroll = false; - if (!this.$scrollAnchor) - this.$scrollAnchor = document.createElement("div"); - var scrollAnchor = this.$scrollAnchor; - scrollAnchor.style.cssText = "position:absolute"; - this.container.insertBefore(scrollAnchor, this.container.firstChild); - var onChangeSelection = this.on("changeSelection", function () { - shouldScroll = true; - }); - var onBeforeRender = this.renderer.on("beforeRender", function () { - if (shouldScroll) - rect = self.renderer.container.getBoundingClientRect(); - }); - var onAfterRender = this.renderer.on("afterRender", function () { - if (shouldScroll && rect && (self.isFocused() - || self.searchBox && self.searchBox.isFocused())) { - var renderer = self.renderer; - var pos = renderer.$cursorLayer.$pixelPos; - var config = renderer.layerConfig; - var top = pos.top - config.offset; - if (pos.top >= 0 && top + rect.top < 0) { - shouldScroll = true; - } - else if (pos.top < config.height && - pos.top + rect.top + config.lineHeight > window.innerHeight) { - shouldScroll = false; - } - else { - shouldScroll = null; - } - if (shouldScroll != null) { - scrollAnchor.style.top = top + "px"; - scrollAnchor.style.left = pos.left + "px"; - scrollAnchor.style.height = config.lineHeight + "px"; - scrollAnchor.scrollIntoView(shouldScroll); - } - shouldScroll = rect = null; - } - }); - this.setAutoScrollEditorIntoView = function (enable) { - if (enable) - return; - delete this.setAutoScrollEditorIntoView; - this.off("changeSelection", onChangeSelection); - this.renderer.off("afterRender", onAfterRender); - this.renderer.off("beforeRender", onBeforeRender); - }; - }; - Editor.prototype.$resetCursorStyle = function () { - var style = this.$cursorStyle || "ace"; - var cursorLayer = this.renderer.$cursorLayer; - if (!cursorLayer) - return; - cursorLayer.setSmoothBlinking(/smooth/.test(style)); - cursorLayer.isBlinking = !this.$readOnly && style != "wide"; - dom.setCssClass(cursorLayer.element, "ace_slim-cursors", /slim/.test(style)); - }; - Editor.prototype.prompt = function (message, options, callback) { - var editor = this; - config.loadModule("ace/ext/prompt", function (module) { - module.prompt(editor, message, options, callback); - }); - }; - return Editor; -}()); -Editor.$uid = 0; -Editor.prototype.curOp = null; -Editor.prototype.prevOp = {}; -Editor.prototype.$mergeableCommands = ["backspace", "del", "insertstring"]; -Editor.prototype.$toggleWordPairs = [ - ["first", "last"], - ["true", "false"], - ["yes", "no"], - ["width", "height"], - ["top", "bottom"], - ["right", "left"], - ["on", "off"], - ["x", "y"], - ["get", "set"], - ["max", "min"], - ["horizontal", "vertical"], - ["show", "hide"], - ["add", "remove"], - ["up", "down"], - ["before", "after"], - ["even", "odd"], - ["in", "out"], - ["inside", "outside"], - ["next", "previous"], - ["increase", "decrease"], - ["attach", "detach"], - ["&&", "||"], - ["==", "!="] -]; -oop.implement(Editor.prototype, EventEmitter); -config.defineOptions(Editor.prototype, "editor", { - selectionStyle: { - set: function (style) { - this.onSelectionChange(); - this._signal("changeSelectionStyle", { data: style }); - }, - initialValue: "line" - }, - highlightActiveLine: { - set: function () { this.$updateHighlightActiveLine(); }, - initialValue: true - }, - highlightSelectedWord: { - set: function (shouldHighlight) { this.$onSelectionChange(); }, - initialValue: true - }, - readOnly: { - set: function (readOnly) { - this.textInput.setReadOnly(readOnly); - this.$resetCursorStyle(); - }, - initialValue: false - }, - copyWithEmptySelection: { - set: function (value) { - this.textInput.setCopyWithEmptySelection(value); - }, - initialValue: false - }, - cursorStyle: { - set: function (val) { this.$resetCursorStyle(); }, - values: ["ace", "slim", "smooth", "wide"], - initialValue: "ace" - }, - mergeUndoDeltas: { - values: [false, true, "always"], - initialValue: true - }, - behavioursEnabled: { initialValue: true }, - wrapBehavioursEnabled: { initialValue: true }, - enableAutoIndent: { initialValue: true }, - autoScrollEditorIntoView: { - set: function (val) { this.setAutoScrollEditorIntoView(val); } - }, - keyboardHandler: { - set: function (val) { this.setKeyboardHandler(val); }, - get: function () { return this.$keybindingId; }, - handlesSet: true - }, - value: { - set: function (val) { this.session.setValue(val); }, - get: function () { return this.getValue(); }, - handlesSet: true, - hidden: true - }, - session: { - set: function (val) { this.setSession(val); }, - get: function () { return this.session; }, - handlesSet: true, - hidden: true - }, - showLineNumbers: { - set: function (show) { - this.renderer.$gutterLayer.setShowLineNumbers(show); - this.renderer.$loop.schedule(this.renderer.CHANGE_GUTTER); - if (show && this.$relativeLineNumbers) - relativeNumberRenderer.attach(this); - else - relativeNumberRenderer.detach(this); - }, - initialValue: true - }, - relativeLineNumbers: { - set: function (value) { - if (this.$showLineNumbers && value) - relativeNumberRenderer.attach(this); - else - relativeNumberRenderer.detach(this); - } - }, - placeholder: { - set: function (message) { - if (!this.$updatePlaceholder) { - this.$updatePlaceholder = function () { - var hasValue = this.session && (this.renderer.$composition || - this.session.getLength() > 1 || this.session.getLine(0).length > 0); - if (hasValue && this.renderer.placeholderNode) { - this.renderer.off("afterRender", this.$updatePlaceholder); - dom.removeCssClass(this.container, "ace_hasPlaceholder"); - this.renderer.placeholderNode.remove(); - this.renderer.placeholderNode = null; - } - else if (!hasValue && !this.renderer.placeholderNode) { - this.renderer.on("afterRender", this.$updatePlaceholder); - dom.addCssClass(this.container, "ace_hasPlaceholder"); - var el = dom.createElement("div"); - el.className = "ace_placeholder"; - el.textContent = this.$placeholder || ""; - this.renderer.placeholderNode = el; - this.renderer.content.appendChild(this.renderer.placeholderNode); - } - else if (!hasValue && this.renderer.placeholderNode) { - this.renderer.placeholderNode.textContent = this.$placeholder || ""; - } - }.bind(this); - this.on("input", this.$updatePlaceholder); - } - this.$updatePlaceholder(); - } - }, - enableKeyboardAccessibility: { - set: function (value) { - var blurCommand = { - name: "blurTextInput", - description: "Set focus to the editor content div to allow tabbing through the page", - bindKey: "Esc", - exec: function (editor) { - editor.blur(); - editor.renderer.scroller.focus(); - }, - readOnly: true - }; - var focusOnEnterKeyup = function (e) { - if (e.target == this.renderer.scroller && e.keyCode === keys['enter']) { - e.preventDefault(); - var row = this.getCursorPosition().row; - if (!this.isRowVisible(row)) - this.scrollToLine(row, true, true); - this.focus(); - } - }; - var gutterKeyboardHandler; - if (value) { - this.renderer.enableKeyboardAccessibility = true; - this.renderer.keyboardFocusClassName = "ace_keyboard-focus"; - this.textInput.getElement().setAttribute("tabindex", -1); - this.textInput.setNumberOfExtraLines(useragent.isWin ? 3 : 0); - this.renderer.scroller.setAttribute("tabindex", 0); - this.renderer.scroller.setAttribute("role", "group"); - this.renderer.scroller.setAttribute("aria-roledescription", nls("editor")); - this.renderer.scroller.classList.add(this.renderer.keyboardFocusClassName); - this.renderer.scroller.setAttribute("aria-label", nls("Editor content, press Enter to start editing, press Escape to exit")); - this.renderer.scroller.addEventListener("keyup", focusOnEnterKeyup.bind(this)); - this.commands.addCommand(blurCommand); - this.renderer.$gutter.setAttribute("tabindex", 0); - this.renderer.$gutter.setAttribute("aria-hidden", false); - this.renderer.$gutter.setAttribute("role", "group"); - this.renderer.$gutter.setAttribute("aria-roledescription", nls("editor")); - this.renderer.$gutter.setAttribute("aria-label", nls("Editor gutter, press Enter to interact with controls using arrow keys, press Escape to exit")); - this.renderer.$gutter.classList.add(this.renderer.keyboardFocusClassName); - this.renderer.content.setAttribute("aria-hidden", true); - if (!gutterKeyboardHandler) - gutterKeyboardHandler = new GutterKeyboardHandler(this); - gutterKeyboardHandler.addListener(); - } - else { - this.renderer.enableKeyboardAccessibility = false; - this.textInput.getElement().setAttribute("tabindex", 0); - this.textInput.setNumberOfExtraLines(0); - this.renderer.scroller.setAttribute("tabindex", -1); - this.renderer.scroller.removeAttribute("role"); - this.renderer.scroller.removeAttribute("aria-roledescription"); - this.renderer.scroller.classList.remove(this.renderer.keyboardFocusClassName); - this.renderer.scroller.removeAttribute("aria-label"); - this.renderer.scroller.removeEventListener("keyup", focusOnEnterKeyup.bind(this)); - this.commands.removeCommand(blurCommand); - this.renderer.content.removeAttribute("aria-hidden"); - this.renderer.$gutter.setAttribute("tabindex", -1); - this.renderer.$gutter.setAttribute("aria-hidden", true); - this.renderer.$gutter.removeAttribute("role"); - this.renderer.$gutter.removeAttribute("aria-roledescription"); - this.renderer.$gutter.removeAttribute("aria-label"); - this.renderer.$gutter.classList.remove(this.renderer.keyboardFocusClassName); - if (gutterKeyboardHandler) - gutterKeyboardHandler.removeListener(); - } - }, - initialValue: false - }, - customScrollbar: "renderer", - hScrollBarAlwaysVisible: "renderer", - vScrollBarAlwaysVisible: "renderer", - highlightGutterLine: "renderer", - animatedScroll: "renderer", - showInvisibles: "renderer", - showPrintMargin: "renderer", - printMarginColumn: "renderer", - printMargin: "renderer", - fadeFoldWidgets: "renderer", - showFoldWidgets: "renderer", - displayIndentGuides: "renderer", - highlightIndentGuides: "renderer", - showGutter: "renderer", - fontSize: "renderer", - fontFamily: "renderer", - maxLines: "renderer", - minLines: "renderer", - scrollPastEnd: "renderer", - fixedWidthGutter: "renderer", - theme: "renderer", - hasCssTransforms: "renderer", - maxPixelHeight: "renderer", - useTextareaForIME: "renderer", - useResizeObserver: "renderer", - useSvgGutterIcons: "renderer", - showFoldedAnnotations: "renderer", - scrollSpeed: "$mouseHandler", - dragDelay: "$mouseHandler", - dragEnabled: "$mouseHandler", - focusTimeout: "$mouseHandler", - tooltipFollowsMouse: "$mouseHandler", - firstLineNumber: "session", - overwrite: "session", - newLineMode: "session", - useWorker: "session", - useSoftTabs: "session", - navigateWithinSoftTabs: "session", - tabSize: "session", - wrap: "session", - indentedSoftWrap: "session", - foldStyle: "session", - mode: "session" -}); -var relativeNumberRenderer = { - getText: function (session, row) { - return (Math.abs(session.selection.lead.row - row) || (row + 1 + (row < 9 ? "\xb7" : ""))) + ""; - }, - getWidth: function (session, lastLineNumber, config) { - return Math.max(lastLineNumber.toString().length, (config.lastRow + 1).toString().length, 2) * config.characterWidth; - }, - update: function (e, editor) { - editor.renderer.$loop.schedule(editor.renderer.CHANGE_GUTTER); - }, - attach: function (editor) { - editor.renderer.$gutterLayer.$renderer = this; - editor.on("changeSelection", this.update); - this.update(null, editor); - }, - detach: function (editor) { - if (editor.renderer.$gutterLayer.$renderer == this) - editor.renderer.$gutterLayer.$renderer = null; - editor.off("changeSelection", this.update); - this.update(null, editor); - } -}; -exports.Editor = Editor; - -}); - -ace.define("ace/layer/lines",["require","exports","module","ace/lib/dom"], function(require, exports, module){"use strict"; -var dom = require("../lib/dom"); -var Lines = /** @class */ (function () { - function Lines(element, canvasHeight) { - this.element = element; - this.canvasHeight = canvasHeight || 500000; - this.element.style.height = (this.canvasHeight * 2) + "px"; - this.cells = []; - this.cellCache = []; - this.$offsetCoefficient = 0; - } - Lines.prototype.moveContainer = function (config) { - dom.translate(this.element, 0, -((config.firstRowScreen * config.lineHeight) % this.canvasHeight) - config.offset * this.$offsetCoefficient); - }; - Lines.prototype.pageChanged = function (oldConfig, newConfig) { - return (Math.floor((oldConfig.firstRowScreen * oldConfig.lineHeight) / this.canvasHeight) !== - Math.floor((newConfig.firstRowScreen * newConfig.lineHeight) / this.canvasHeight)); - }; - Lines.prototype.computeLineTop = function (row, config, session) { - var screenTop = config.firstRowScreen * config.lineHeight; - var screenPage = Math.floor(screenTop / this.canvasHeight); - var lineTop = session.documentToScreenRow(row, 0) * config.lineHeight; - return lineTop - (screenPage * this.canvasHeight); - }; - Lines.prototype.computeLineHeight = function (row, config, session) { - return config.lineHeight * session.getRowLineCount(row); - }; - Lines.prototype.getLength = function () { - return this.cells.length; - }; - Lines.prototype.get = function (index) { - return this.cells[index]; - }; - Lines.prototype.shift = function () { - this.$cacheCell(this.cells.shift()); - }; - Lines.prototype.pop = function () { - this.$cacheCell(this.cells.pop()); - }; - Lines.prototype.push = function (cell) { - if (Array.isArray(cell)) { - this.cells.push.apply(this.cells, cell); - var fragment = dom.createFragment(this.element); - for (var i = 0; i < cell.length; i++) { - fragment.appendChild(cell[i].element); - } - this.element.appendChild(fragment); - } - else { - this.cells.push(cell); - this.element.appendChild(cell.element); - } - }; - Lines.prototype.unshift = function (cell) { - if (Array.isArray(cell)) { - this.cells.unshift.apply(this.cells, cell); - var fragment = dom.createFragment(this.element); - for (var i = 0; i < cell.length; i++) { - fragment.appendChild(cell[i].element); - } - if (this.element.firstChild) - this.element.insertBefore(fragment, this.element.firstChild); - else - this.element.appendChild(fragment); - } - else { - this.cells.unshift(cell); - this.element.insertAdjacentElement("afterbegin", cell.element); - } - }; - Lines.prototype.last = function () { - if (this.cells.length) - return this.cells[this.cells.length - 1]; - else - return null; - }; - Lines.prototype.$cacheCell = function (cell) { - if (!cell) - return; - cell.element.remove(); - this.cellCache.push(cell); - }; - Lines.prototype.createCell = function (row, config, session, initElement) { - var cell = this.cellCache.pop(); - if (!cell) { - var element = dom.createElement("div"); - if (initElement) - initElement(element); - this.element.appendChild(element); - cell = { - element: element, - text: "", - row: row - }; - } - cell.row = row; - return cell; - }; - return Lines; -}()); -exports.Lines = Lines; - -}); - -ace.define("ace/layer/gutter",["require","exports","module","ace/lib/dom","ace/lib/oop","ace/lib/lang","ace/lib/event_emitter","ace/layer/lines","ace/config"], function(require, exports, module){"use strict"; -var dom = require("../lib/dom"); -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var EventEmitter = require("../lib/event_emitter").EventEmitter; -var Lines = require("./lines").Lines; -var nls = require("../config").nls; -var Gutter = /** @class */ (function () { - function Gutter(parentEl) { - this.element = dom.createElement("div"); - this.element.className = "ace_layer ace_gutter-layer"; - parentEl.appendChild(this.element); - this.setShowFoldWidgets(this.$showFoldWidgets); - this.gutterWidth = 0; - this.$annotations = []; - this.$updateAnnotations = this.$updateAnnotations.bind(this); - this.$lines = new Lines(this.element); - this.$lines.$offsetCoefficient = 1; - } - Gutter.prototype.setSession = function (session) { - if (this.session) - this.session.off("change", this.$updateAnnotations); - this.session = session; - if (session) - session.on("change", this.$updateAnnotations); - }; - Gutter.prototype.addGutterDecoration = function (row, className) { - if (window.console) - console.warn && console.warn("deprecated use session.addGutterDecoration"); - this.session.addGutterDecoration(row, className); - }; - Gutter.prototype.removeGutterDecoration = function (row, className) { - if (window.console) - console.warn && console.warn("deprecated use session.removeGutterDecoration"); - this.session.removeGutterDecoration(row, className); - }; - Gutter.prototype.setAnnotations = function (annotations) { - this.$annotations = []; - for (var i = 0; i < annotations.length; i++) { - var annotation = annotations[i]; - var row = annotation.row; - var rowInfo = this.$annotations[row]; - if (!rowInfo) - rowInfo = this.$annotations[row] = { text: [], type: [] }; - var annoText = annotation.text; - var annoType = annotation.type; - annoText = annoText ? lang.escapeHTML(annoText) : annotation.html || ""; - if (rowInfo.text.indexOf(annoText) === -1) { - rowInfo.text.push(annoText); - rowInfo.type.push(annoType); - } - var className = annotation.className; - if (className) - rowInfo.className = className; - else if (annoType == "error") - rowInfo.className = " ace_error"; - else if (annoType == "warning" && rowInfo.className != " ace_error") - rowInfo.className = " ace_warning"; - else if (annoType == "info" && (!rowInfo.className)) - rowInfo.className = " ace_info"; - } - }; - Gutter.prototype.$updateAnnotations = function (delta) { - if (!this.$annotations.length) - return; - var firstRow = delta.start.row; - var len = delta.end.row - firstRow; - if (len === 0) { - } - else if (delta.action == 'remove') { - this.$annotations.splice(firstRow, len + 1, null); - } - else { - var args = new Array(len + 1); - args.unshift(firstRow, 1); - this.$annotations.splice.apply(this.$annotations, args); - } - }; - Gutter.prototype.update = function (config) { - this.config = config; - var session = this.session; - var firstRow = config.firstRow; - var lastRow = Math.min(config.lastRow + config.gutterOffset, // needed to compensate for hor scollbar - session.getLength() - 1); - this.oldLastRow = lastRow; - this.config = config; - this.$lines.moveContainer(config); - this.$updateCursorRow(); - var fold = session.getNextFoldLine(firstRow); - var foldStart = fold ? fold.start.row : Infinity; - var cell = null; - var index = -1; - var row = firstRow; - while (true) { - if (row > foldStart) { - row = fold.end.row + 1; - fold = session.getNextFoldLine(row, fold); - foldStart = fold ? fold.start.row : Infinity; - } - if (row > lastRow) { - while (this.$lines.getLength() > index + 1) - this.$lines.pop(); - break; - } - cell = this.$lines.get(++index); - if (cell) { - cell.row = row; - } - else { - cell = this.$lines.createCell(row, config, this.session, onCreateCell); - this.$lines.push(cell); - } - this.$renderCell(cell, config, fold, row); - row++; - } - this._signal("afterRender"); - this.$updateGutterWidth(config); - }; - Gutter.prototype.$updateGutterWidth = function (config) { - var session = this.session; - var gutterRenderer = session.gutterRenderer || this.$renderer; - var firstLineNumber = session.$firstLineNumber; - var lastLineText = this.$lines.last() ? this.$lines.last().text : ""; - if (this.$fixedWidth || session.$useWrapMode) - lastLineText = session.getLength() + firstLineNumber - 1; - var gutterWidth = gutterRenderer - ? gutterRenderer.getWidth(session, lastLineText, config) - : lastLineText.toString().length * config.characterWidth; - var padding = this.$padding || this.$computePadding(); - gutterWidth += padding.left + padding.right; - if (gutterWidth !== this.gutterWidth && !isNaN(gutterWidth)) { - this.gutterWidth = gutterWidth; - this.element.parentNode.style.width = - this.element.style.width = Math.ceil(this.gutterWidth) + "px"; - this._signal("changeGutterWidth", gutterWidth); - } - }; - Gutter.prototype.$updateCursorRow = function () { - if (!this.$highlightGutterLine) - return; - var position = this.session.selection.getCursor(); - if (this.$cursorRow === position.row) - return; - this.$cursorRow = position.row; - }; - Gutter.prototype.updateLineHighlight = function () { - if (!this.$highlightGutterLine) - return; - var row = this.session.selection.cursor.row; - this.$cursorRow = row; - if (this.$cursorCell && this.$cursorCell.row == row) - return; - if (this.$cursorCell) - this.$cursorCell.element.className = this.$cursorCell.element.className.replace("ace_gutter-active-line ", ""); - var cells = this.$lines.cells; - this.$cursorCell = null; - for (var i = 0; i < cells.length; i++) { - var cell = cells[i]; - if (cell.row >= this.$cursorRow) { - if (cell.row > this.$cursorRow) { - var fold = this.session.getFoldLine(this.$cursorRow); - if (i > 0 && fold && fold.start.row == cells[i - 1].row) - cell = cells[i - 1]; - else - break; - } - cell.element.className = "ace_gutter-active-line " + cell.element.className; - this.$cursorCell = cell; - break; - } - } - }; - Gutter.prototype.scrollLines = function (config) { - var oldConfig = this.config; - this.config = config; - this.$updateCursorRow(); - if (this.$lines.pageChanged(oldConfig, config)) - return this.update(config); - this.$lines.moveContainer(config); - var lastRow = Math.min(config.lastRow + config.gutterOffset, // needed to compensate for hor scollbar - this.session.getLength() - 1); - var oldLastRow = this.oldLastRow; - this.oldLastRow = lastRow; - if (!oldConfig || oldLastRow < config.firstRow) - return this.update(config); - if (lastRow < oldConfig.firstRow) - return this.update(config); - if (oldConfig.firstRow < config.firstRow) - for (var row = this.session.getFoldedRowCount(oldConfig.firstRow, config.firstRow - 1); row > 0; row--) - this.$lines.shift(); - if (oldLastRow > lastRow) - for (var row = this.session.getFoldedRowCount(lastRow + 1, oldLastRow); row > 0; row--) - this.$lines.pop(); - if (config.firstRow < oldConfig.firstRow) { - this.$lines.unshift(this.$renderLines(config, config.firstRow, oldConfig.firstRow - 1)); - } - if (lastRow > oldLastRow) { - this.$lines.push(this.$renderLines(config, oldLastRow + 1, lastRow)); - } - this.updateLineHighlight(); - this._signal("afterRender"); - this.$updateGutterWidth(config); - }; - Gutter.prototype.$renderLines = function (config, firstRow, lastRow) { - var fragment = []; - var row = firstRow; - var foldLine = this.session.getNextFoldLine(row); - var foldStart = foldLine ? foldLine.start.row : Infinity; - while (true) { - if (row > foldStart) { - row = foldLine.end.row + 1; - foldLine = this.session.getNextFoldLine(row, foldLine); - foldStart = foldLine ? foldLine.start.row : Infinity; - } - if (row > lastRow) - break; - var cell = this.$lines.createCell(row, config, this.session, onCreateCell); - this.$renderCell(cell, config, foldLine, row); - fragment.push(cell); - row++; - } - return fragment; - }; - Gutter.prototype.$renderCell = function (cell, config, fold, row) { - var element = cell.element; - var session = this.session; - var textNode = element.childNodes[0]; - var foldWidget = element.childNodes[1]; - var annotationNode = element.childNodes[2]; - var annotationIconNode = annotationNode.firstChild; - var firstLineNumber = session.$firstLineNumber; - var breakpoints = session.$breakpoints; - var decorations = session.$decorations; - var gutterRenderer = session.gutterRenderer || this.$renderer; - var foldWidgets = this.$showFoldWidgets && session.foldWidgets; - var foldStart = fold ? fold.start.row : Number.MAX_VALUE; - var lineHeight = config.lineHeight + "px"; - var className = this.$useSvgGutterIcons ? "ace_gutter-cell_svg-icons " : "ace_gutter-cell "; - var iconClassName = this.$useSvgGutterIcons ? "ace_icon_svg" : "ace_icon"; - var rowText = (gutterRenderer - ? gutterRenderer.getText(session, row) - : row + firstLineNumber).toString(); - if (this.$highlightGutterLine) { - if (row == this.$cursorRow || (fold && row < this.$cursorRow && row >= foldStart && this.$cursorRow <= fold.end.row)) { - className += "ace_gutter-active-line "; - if (this.$cursorCell != cell) { - if (this.$cursorCell) - this.$cursorCell.element.className = this.$cursorCell.element.className.replace("ace_gutter-active-line ", ""); - this.$cursorCell = cell; - } - } - } - if (breakpoints[row]) - className += breakpoints[row]; - if (decorations[row]) - className += decorations[row]; - if (this.$annotations[row] && row !== foldStart) - className += this.$annotations[row].className; - if (foldWidgets) { - var c = foldWidgets[row]; - if (c == null) - c = foldWidgets[row] = session.getFoldWidget(row); - } - if (c) { - var foldClass = "ace_fold-widget ace_" + c; - var isClosedFold = c == "start" && row == foldStart && row < fold.end.row; - if (isClosedFold) { - foldClass += " ace_closed"; - var foldAnnotationClass = ''; - var annotationInFold = false; - for (var i = row + 1; i <= fold.end.row; i++) { - if (!this.$annotations[i]) - continue; - if (this.$annotations[i].className === " ace_error") { - annotationInFold = true; - foldAnnotationClass = " ace_error_fold"; - break; - } - if (this.$annotations[i].className === " ace_warning") { - annotationInFold = true; - foldAnnotationClass = " ace_warning_fold"; - continue; - } - } - className += foldAnnotationClass; - } - else - foldClass += " ace_open"; - if (foldWidget.className != foldClass) - foldWidget.className = foldClass; - dom.setStyle(foldWidget.style, "height", lineHeight); - dom.setStyle(foldWidget.style, "display", "inline-block"); - foldWidget.setAttribute("role", "button"); - foldWidget.setAttribute("tabindex", "-1"); - var foldRange = session.getFoldWidgetRange(row); - if (foldRange) - foldWidget.setAttribute("aria-label", nls("Toggle code folding, rows $0 through $1", [foldRange.start.row + 1, foldRange.end.row + 1])); - else { - if (fold) - foldWidget.setAttribute("aria-label", nls("Toggle code folding, rows $0 through $1", [fold.start.row + 1, fold.end.row + 1])); - else - foldWidget.setAttribute("aria-label", nls("Toggle code folding, row $0", [row + 1])); - } - if (isClosedFold) { - foldWidget.setAttribute("aria-expanded", "false"); - foldWidget.setAttribute("title", nls("Unfold code")); - } - else { - foldWidget.setAttribute("aria-expanded", "true"); - foldWidget.setAttribute("title", nls("Fold code")); - } - } - else { - if (foldWidget) { - dom.setStyle(foldWidget.style, "display", "none"); - foldWidget.setAttribute("tabindex", "0"); - foldWidget.removeAttribute("role"); - foldWidget.removeAttribute("aria-label"); - } - } - if (annotationInFold && this.$showFoldedAnnotations) { - annotationNode.className = "ace_gutter_annotation"; - annotationIconNode.className = iconClassName; - annotationIconNode.className += foldAnnotationClass; - dom.setStyle(annotationIconNode.style, "height", lineHeight); - dom.setStyle(annotationNode.style, "display", "block"); - dom.setStyle(annotationNode.style, "height", lineHeight); - annotationNode.setAttribute("aria-label", nls("Read annotations row $0", [rowText])); - annotationNode.setAttribute("tabindex", "-1"); - annotationNode.setAttribute("role", "button"); - } - else if (this.$annotations[row]) { - annotationNode.className = "ace_gutter_annotation"; - annotationIconNode.className = iconClassName; - if (this.$useSvgGutterIcons) - annotationIconNode.className += this.$annotations[row].className; - else - element.classList.add(this.$annotations[row].className.replace(" ", "")); - dom.setStyle(annotationIconNode.style, "height", lineHeight); - dom.setStyle(annotationNode.style, "display", "block"); - dom.setStyle(annotationNode.style, "height", lineHeight); - annotationNode.setAttribute("aria-label", nls("Read annotations row $0", [rowText])); - annotationNode.setAttribute("tabindex", "-1"); - annotationNode.setAttribute("role", "button"); - } - else { - dom.setStyle(annotationNode.style, "display", "none"); - annotationNode.removeAttribute("aria-label"); - annotationNode.removeAttribute("role"); - annotationNode.setAttribute("tabindex", "0"); - } - if (rowText !== textNode.data) { - textNode.data = rowText; - } - if (element.className != className) - element.className = className; - dom.setStyle(cell.element.style, "height", this.$lines.computeLineHeight(row, config, session) + "px"); - dom.setStyle(cell.element.style, "top", this.$lines.computeLineTop(row, config, session) + "px"); - cell.text = rowText; - if (annotationNode.style.display === "none" && foldWidget.style.display === "none") - cell.element.setAttribute("aria-hidden", true); - else - cell.element.setAttribute("aria-hidden", false); - return cell; - }; - Gutter.prototype.setHighlightGutterLine = function (highlightGutterLine) { - this.$highlightGutterLine = highlightGutterLine; - }; - Gutter.prototype.setShowLineNumbers = function (show) { - this.$renderer = !show && { - getWidth: function () { return 0; }, - getText: function () { return ""; } - }; - }; - Gutter.prototype.getShowLineNumbers = function () { - return this.$showLineNumbers; - }; - Gutter.prototype.setShowFoldWidgets = function (show) { - if (show) - dom.addCssClass(this.element, "ace_folding-enabled"); - else - dom.removeCssClass(this.element, "ace_folding-enabled"); - this.$showFoldWidgets = show; - this.$padding = null; - }; - Gutter.prototype.getShowFoldWidgets = function () { - return this.$showFoldWidgets; - }; - Gutter.prototype.$computePadding = function () { - if (!this.element.firstChild) - return { left: 0, right: 0 }; - var style = dom.computedStyle(this.element.firstChild); - this.$padding = {}; - this.$padding.left = (parseInt(style.borderLeftWidth) || 0) - + (parseInt(style.paddingLeft) || 0) + 1; - this.$padding.right = (parseInt(style.borderRightWidth) || 0) - + (parseInt(style.paddingRight) || 0); - return this.$padding; - }; - Gutter.prototype.getRegion = function (point) { - var padding = this.$padding || this.$computePadding(); - var rect = this.element.getBoundingClientRect(); - if (point.x < padding.left + rect.left) - return "markers"; - if (this.$showFoldWidgets && point.x > rect.right - padding.right) - return "foldWidgets"; - }; - return Gutter; -}()); -Gutter.prototype.$fixedWidth = false; -Gutter.prototype.$highlightGutterLine = true; -Gutter.prototype.$renderer = ""; -Gutter.prototype.$showLineNumbers = true; -Gutter.prototype.$showFoldWidgets = true; -oop.implement(Gutter.prototype, EventEmitter); -function onCreateCell(element) { - var textNode = document.createTextNode(''); - element.appendChild(textNode); - var foldWidget = dom.createElement("span"); - element.appendChild(foldWidget); - var annotationNode = dom.createElement("span"); - element.appendChild(annotationNode); - var annotationIconNode = dom.createElement("span"); - annotationNode.appendChild(annotationIconNode); - return element; -} -exports.Gutter = Gutter; - -}); - -ace.define("ace/layer/marker",["require","exports","module","ace/range","ace/lib/dom"], function(require, exports, module){"use strict"; -var Range = require("../range").Range; -var dom = require("../lib/dom"); -var Marker = /** @class */ (function () { - function Marker(parentEl) { - this.element = dom.createElement("div"); - this.element.className = "ace_layer ace_marker-layer"; - parentEl.appendChild(this.element); - } - Marker.prototype.setPadding = function (padding) { - this.$padding = padding; - }; - Marker.prototype.setSession = function (session) { - this.session = session; - }; - Marker.prototype.setMarkers = function (markers) { - this.markers = markers; - }; - Marker.prototype.elt = function (className, css) { - var x = this.i != -1 && this.element.childNodes[this.i]; - if (!x) { - x = document.createElement("div"); - this.element.appendChild(x); - this.i = -1; - } - else { - this.i++; - } - x.style.cssText = css; - x.className = className; - }; - Marker.prototype.update = function (config) { - if (!config) - return; - this.config = config; - this.i = 0; - var html; - for (var key in this.markers) { - var marker = this.markers[key]; - if (!marker.range) { - marker.update(html, this, this.session, config); - continue; - } - var range = marker.range.clipRows(config.firstRow, config.lastRow); - if (range.isEmpty()) - continue; - range = range.toScreenRange(this.session); - if (marker.renderer) { - var top = this.$getTop(range.start.row, config); - var left = this.$padding + range.start.column * config.characterWidth; - marker.renderer(html, range, left, top, config); - } - else if (marker.type == "fullLine") { - this.drawFullLineMarker(html, range, marker.clazz, config); - } - else if (marker.type == "screenLine") { - this.drawScreenLineMarker(html, range, marker.clazz, config); - } - else if (range.isMultiLine()) { - if (marker.type == "text") - this.drawTextMarker(html, range, marker.clazz, config); - else - this.drawMultiLineMarker(html, range, marker.clazz, config); - } - else { - this.drawSingleLineMarker(html, range, marker.clazz + " ace_start" + " ace_br15", config); - } - } - if (this.i != -1) { - while (this.i < this.element.childElementCount) - this.element.removeChild(this.element.lastChild); - } - }; - Marker.prototype.$getTop = function (row, layerConfig) { - return (row - layerConfig.firstRowScreen) * layerConfig.lineHeight; - }; - Marker.prototype.drawTextMarker = function (stringBuilder, range, clazz, layerConfig, extraStyle) { - var session = this.session; - var start = range.start.row; - var end = range.end.row; - var row = start; - var prev = 0; - var curr = 0; - var next = session.getScreenLastRowColumn(row); - var lineRange = new Range(row, range.start.column, row, curr); - for (; row <= end; row++) { - lineRange.start.row = lineRange.end.row = row; - lineRange.start.column = row == start ? range.start.column : session.getRowWrapIndent(row); - lineRange.end.column = next; - prev = curr; - curr = next; - next = row + 1 < end ? session.getScreenLastRowColumn(row + 1) : row == end ? 0 : range.end.column; - this.drawSingleLineMarker(stringBuilder, lineRange, clazz + (row == start ? " ace_start" : "") + " ace_br" - + getBorderClass(row == start || row == start + 1 && range.start.column, prev < curr, curr > next, row == end), layerConfig, row == end ? 0 : 1, extraStyle); - } - }; - Marker.prototype.drawMultiLineMarker = function (stringBuilder, range, clazz, config, extraStyle) { - var padding = this.$padding; - var height = config.lineHeight; - var top = this.$getTop(range.start.row, config); - var left = padding + range.start.column * config.characterWidth; - extraStyle = extraStyle || ""; - if (this.session.$bidiHandler.isBidiRow(range.start.row)) { - var range1 = range.clone(); - range1.end.row = range1.start.row; - range1.end.column = this.session.getLine(range1.start.row).length; - this.drawBidiSingleLineMarker(stringBuilder, range1, clazz + " ace_br1 ace_start", config, null, extraStyle); - } - else { - this.elt(clazz + " ace_br1 ace_start", "height:" + height + "px;" + "right:0;" + "top:" + top + "px;left:" + left + "px;" + (extraStyle || "")); - } - if (this.session.$bidiHandler.isBidiRow(range.end.row)) { - var range1 = range.clone(); - range1.start.row = range1.end.row; - range1.start.column = 0; - this.drawBidiSingleLineMarker(stringBuilder, range1, clazz + " ace_br12", config, null, extraStyle); - } - else { - top = this.$getTop(range.end.row, config); - var width = range.end.column * config.characterWidth; - this.elt(clazz + " ace_br12", "height:" + height + "px;" + - "width:" + width + "px;" + - "top:" + top + "px;" + - "left:" + padding + "px;" + (extraStyle || "")); - } - height = (range.end.row - range.start.row - 1) * config.lineHeight; - if (height <= 0) - return; - top = this.$getTop(range.start.row + 1, config); - var radiusClass = (range.start.column ? 1 : 0) | (range.end.column ? 0 : 8); - this.elt(clazz + (radiusClass ? " ace_br" + radiusClass : ""), "height:" + height + "px;" + - "right:0;" + - "top:" + top + "px;" + - "left:" + padding + "px;" + (extraStyle || "")); - }; - Marker.prototype.drawSingleLineMarker = function (stringBuilder, range, clazz, config, extraLength, extraStyle) { - if (this.session.$bidiHandler.isBidiRow(range.start.row)) - return this.drawBidiSingleLineMarker(stringBuilder, range, clazz, config, extraLength, extraStyle); - var height = config.lineHeight; - var width = (range.end.column + (extraLength || 0) - range.start.column) * config.characterWidth; - var top = this.$getTop(range.start.row, config); - var left = this.$padding + range.start.column * config.characterWidth; - this.elt(clazz, "height:" + height + "px;" + - "width:" + width + "px;" + - "top:" + top + "px;" + - "left:" + left + "px;" + (extraStyle || "")); - }; - Marker.prototype.drawBidiSingleLineMarker = function (stringBuilder, range, clazz, config, extraLength, extraStyle) { - var height = config.lineHeight, top = this.$getTop(range.start.row, config), padding = this.$padding; - var selections = this.session.$bidiHandler.getSelections(range.start.column, range.end.column); - selections.forEach(function (selection) { - this.elt(clazz, "height:" + height + "px;" + - "width:" + (selection.width + (extraLength || 0)) + "px;" + - "top:" + top + "px;" + - "left:" + (padding + selection.left) + "px;" + (extraStyle || "")); - }, this); - }; - Marker.prototype.drawFullLineMarker = function (stringBuilder, range, clazz, config, extraStyle) { - var top = this.$getTop(range.start.row, config); - var height = config.lineHeight; - if (range.start.row != range.end.row) - height += this.$getTop(range.end.row, config) - top; - this.elt(clazz, "height:" + height + "px;" + - "top:" + top + "px;" + - "left:0;right:0;" + (extraStyle || "")); - }; - Marker.prototype.drawScreenLineMarker = function (stringBuilder, range, clazz, config, extraStyle) { - var top = this.$getTop(range.start.row, config); - var height = config.lineHeight; - this.elt(clazz, "height:" + height + "px;" + - "top:" + top + "px;" + - "left:0;right:0;" + (extraStyle || "")); - }; - return Marker; -}()); -Marker.prototype.$padding = 0; -function getBorderClass(tl, tr, br, bl) { - return (tl ? 1 : 0) | (tr ? 2 : 0) | (br ? 4 : 0) | (bl ? 8 : 0); -} -exports.Marker = Marker; - -}); - -ace.define("ace/layer/text_util",["require","exports","module"], function(require, exports, module){// Tokens for which Ace just uses a simple TextNode and does not add any special className. -var textTokens = new Set(["text", "rparen", "lparen"]); -exports.isTextToken = function (tokenType) { - return textTokens.has(tokenType); -}; - -}); - -ace.define("ace/layer/text",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/layer/lines","ace/lib/event_emitter","ace/config","ace/layer/text_util"], function(require, exports, module){"use strict"; -var oop = require("../lib/oop"); -var dom = require("../lib/dom"); -var lang = require("../lib/lang"); -var Lines = require("./lines").Lines; -var EventEmitter = require("../lib/event_emitter").EventEmitter; -var nls = require("../config").nls; -var isTextToken = require("./text_util").isTextToken; -var Text = /** @class */ (function () { - function Text(parentEl) { - this.dom = dom; - this.element = this.dom.createElement("div"); - this.element.className = "ace_layer ace_text-layer"; - parentEl.appendChild(this.element); - this.$updateEolChar = this.$updateEolChar.bind(this); - this.$lines = new Lines(this.element); - } - Text.prototype.$updateEolChar = function () { - var doc = this.session.doc; - var unixMode = doc.getNewLineCharacter() == "\n" && doc.getNewLineMode() != "windows"; - var EOL_CHAR = unixMode ? this.EOL_CHAR_LF : this.EOL_CHAR_CRLF; - if (this.EOL_CHAR != EOL_CHAR) { - this.EOL_CHAR = EOL_CHAR; - return true; - } - }; - Text.prototype.setPadding = function (padding) { - this.$padding = padding; - this.element.style.margin = "0 " + padding + "px"; - }; - Text.prototype.getLineHeight = function () { - return this.$fontMetrics.$characterSize.height || 0; - }; - Text.prototype.getCharacterWidth = function () { - return this.$fontMetrics.$characterSize.width || 0; - }; - Text.prototype.$setFontMetrics = function (measure) { - this.$fontMetrics = measure; - this.$fontMetrics.on("changeCharacterSize", function (e) { - this._signal("changeCharacterSize", e); - }.bind(this)); - this.$pollSizeChanges(); - }; - Text.prototype.checkForSizeChanges = function () { - this.$fontMetrics.checkForSizeChanges(); - }; - Text.prototype.$pollSizeChanges = function () { - return this.$pollSizeChangesTimer = this.$fontMetrics.$pollSizeChanges(); - }; - Text.prototype.setSession = function (session) { - this.session = session; - if (session) - this.$computeTabString(); - }; - Text.prototype.setShowInvisibles = function (showInvisibles) { - if (this.showInvisibles == showInvisibles) - return false; - this.showInvisibles = showInvisibles; - if (typeof showInvisibles == "string") { - this.showSpaces = /tab/i.test(showInvisibles); - this.showTabs = /space/i.test(showInvisibles); - this.showEOL = /eol/i.test(showInvisibles); - } - else { - this.showSpaces = this.showTabs = this.showEOL = showInvisibles; - } - this.$computeTabString(); - return true; - }; - Text.prototype.setDisplayIndentGuides = function (display) { - if (this.displayIndentGuides == display) - return false; - this.displayIndentGuides = display; - this.$computeTabString(); - return true; - }; - Text.prototype.setHighlightIndentGuides = function (highlight) { - if (this.$highlightIndentGuides === highlight) - return false; - this.$highlightIndentGuides = highlight; - return highlight; - }; - Text.prototype.$computeTabString = function () { - var tabSize = this.session.getTabSize(); - this.tabSize = tabSize; - var tabStr = this.$tabStrings = [0]; - for (var i = 1; i < tabSize + 1; i++) { - if (this.showTabs) { - var span = this.dom.createElement("span"); - span.className = "ace_invisible ace_invisible_tab"; - span.textContent = lang.stringRepeat(this.TAB_CHAR, i); - tabStr.push(span); - } - else { - tabStr.push(this.dom.createTextNode(lang.stringRepeat(" ", i), this.element)); - } - } - if (this.displayIndentGuides) { - this.$indentGuideRe = /\s\S| \t|\t |\s$/; - var className = "ace_indent-guide"; - var spaceClass = this.showSpaces ? " ace_invisible ace_invisible_space" : ""; - var spaceContent = this.showSpaces - ? lang.stringRepeat(this.SPACE_CHAR, this.tabSize) - : lang.stringRepeat(" ", this.tabSize); - var tabClass = this.showTabs ? " ace_invisible ace_invisible_tab" : ""; - var tabContent = this.showTabs - ? lang.stringRepeat(this.TAB_CHAR, this.tabSize) - : spaceContent; - var span = this.dom.createElement("span"); - span.className = className + spaceClass; - span.textContent = spaceContent; - this.$tabStrings[" "] = span; - var span = this.dom.createElement("span"); - span.className = className + tabClass; - span.textContent = tabContent; - this.$tabStrings["\t"] = span; - } - }; - Text.prototype.updateLines = function (config, firstRow, lastRow) { - if (this.config.lastRow != config.lastRow || - this.config.firstRow != config.firstRow) { - return this.update(config); - } - this.config = config; - var first = Math.max(firstRow, config.firstRow); - var last = Math.min(lastRow, config.lastRow); - var lineElements = this.element.childNodes; - var lineElementsIdx = 0; - for (var row = config.firstRow; row < first; row++) { - var foldLine = this.session.getFoldLine(row); - if (foldLine) { - if (foldLine.containsRow(first)) { - first = foldLine.start.row; - break; - } - else { - row = foldLine.end.row; - } - } - lineElementsIdx++; - } - var heightChanged = false; - var row = first; - var foldLine = this.session.getNextFoldLine(row); - var foldStart = foldLine ? foldLine.start.row : Infinity; - while (true) { - if (row > foldStart) { - row = foldLine.end.row + 1; - foldLine = this.session.getNextFoldLine(row, foldLine); - foldStart = foldLine ? foldLine.start.row : Infinity; - } - if (row > last) - break; - var lineElement = lineElements[lineElementsIdx++]; - if (lineElement) { - this.dom.removeChildren(lineElement); - this.$renderLine(lineElement, row, row == foldStart ? foldLine : false); - if (heightChanged) - lineElement.style.top = this.$lines.computeLineTop(row, config, this.session) + "px"; - var height = (config.lineHeight * this.session.getRowLength(row)) + "px"; - if (lineElement.style.height != height) { - heightChanged = true; - lineElement.style.height = height; - } - } - row++; - } - if (heightChanged) { - while (lineElementsIdx < this.$lines.cells.length) { - var cell = this.$lines.cells[lineElementsIdx++]; - cell.element.style.top = this.$lines.computeLineTop(cell.row, config, this.session) + "px"; - } - } - }; - Text.prototype.scrollLines = function (config) { - var oldConfig = this.config; - this.config = config; - if (this.$lines.pageChanged(oldConfig, config)) - return this.update(config); - this.$lines.moveContainer(config); - var lastRow = config.lastRow; - var oldLastRow = oldConfig ? oldConfig.lastRow : -1; - if (!oldConfig || oldLastRow < config.firstRow) - return this.update(config); - if (lastRow < oldConfig.firstRow) - return this.update(config); - if (!oldConfig || oldConfig.lastRow < config.firstRow) - return this.update(config); - if (config.lastRow < oldConfig.firstRow) - return this.update(config); - if (oldConfig.firstRow < config.firstRow) - for (var row = this.session.getFoldedRowCount(oldConfig.firstRow, config.firstRow - 1); row > 0; row--) - this.$lines.shift(); - if (oldConfig.lastRow > config.lastRow) - for (var row = this.session.getFoldedRowCount(config.lastRow + 1, oldConfig.lastRow); row > 0; row--) - this.$lines.pop(); - if (config.firstRow < oldConfig.firstRow) { - this.$lines.unshift(this.$renderLinesFragment(config, config.firstRow, oldConfig.firstRow - 1)); - } - if (config.lastRow > oldConfig.lastRow) { - this.$lines.push(this.$renderLinesFragment(config, oldConfig.lastRow + 1, config.lastRow)); - } - this.$highlightIndentGuide(); - }; - Text.prototype.$renderLinesFragment = function (config, firstRow, lastRow) { - var fragment = []; - var row = firstRow; - var foldLine = this.session.getNextFoldLine(row); - var foldStart = foldLine ? foldLine.start.row : Infinity; - while (true) { - if (row > foldStart) { - row = foldLine.end.row + 1; - foldLine = this.session.getNextFoldLine(row, foldLine); - foldStart = foldLine ? foldLine.start.row : Infinity; - } - if (row > lastRow) - break; - var line = this.$lines.createCell(row, config, this.session); - var lineEl = line.element; - this.dom.removeChildren(lineEl); - dom.setStyle(lineEl.style, "height", this.$lines.computeLineHeight(row, config, this.session) + "px"); - dom.setStyle(lineEl.style, "top", this.$lines.computeLineTop(row, config, this.session) + "px"); - this.$renderLine(lineEl, row, row == foldStart ? foldLine : false); - if (this.$useLineGroups()) { - lineEl.className = "ace_line_group"; - } - else { - lineEl.className = "ace_line"; - } - fragment.push(line); - row++; - } - return fragment; - }; - Text.prototype.update = function (config) { - this.$lines.moveContainer(config); - this.config = config; - var firstRow = config.firstRow; - var lastRow = config.lastRow; - var lines = this.$lines; - while (lines.getLength()) - lines.pop(); - lines.push(this.$renderLinesFragment(config, firstRow, lastRow)); - }; - Text.prototype.$renderToken = function (parent, screenColumn, token, value) { - var self = this; - var re = /(\t)|( +)|([\x00-\x1f\x80-\xa0\xad\u1680\u180E\u2000-\u200f\u2028\u2029\u202F\u205F\uFEFF\uFFF9-\uFFFC\u2066\u2067\u2068\u202A\u202B\u202D\u202E\u202C\u2069]+)|(\u3000)|([\u1100-\u115F\u11A3-\u11A7\u11FA-\u11FF\u2329-\u232A\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u2FF0-\u2FFB\u3001-\u303E\u3041-\u3096\u3099-\u30FF\u3105-\u312D\u3131-\u318E\u3190-\u31BA\u31C0-\u31E3\u31F0-\u321E\u3220-\u3247\u3250-\u32FE\u3300-\u4DBF\u4E00-\uA48C\uA490-\uA4C6\uA960-\uA97C\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFAFF\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE66\uFE68-\uFE6B\uFF01-\uFF60\uFFE0-\uFFE6]|[\uD800-\uDBFF][\uDC00-\uDFFF])/g; - var valueFragment = this.dom.createFragment(this.element); - var m; - var i = 0; - while (m = re.exec(value)) { - var tab = m[1]; - var simpleSpace = m[2]; - var controlCharacter = m[3]; - var cjkSpace = m[4]; - var cjk = m[5]; - if (!self.showSpaces && simpleSpace) - continue; - var before = i != m.index ? value.slice(i, m.index) : ""; - i = m.index + m[0].length; - if (before) { - valueFragment.appendChild(this.dom.createTextNode(before, this.element)); - } - if (tab) { - var tabSize = self.session.getScreenTabSize(screenColumn + m.index); - valueFragment.appendChild(self.$tabStrings[tabSize].cloneNode(true)); - screenColumn += tabSize - 1; - } - else if (simpleSpace) { - if (self.showSpaces) { - var span = this.dom.createElement("span"); - span.className = "ace_invisible ace_invisible_space"; - span.textContent = lang.stringRepeat(self.SPACE_CHAR, simpleSpace.length); - valueFragment.appendChild(span); - } - else { - valueFragment.appendChild(this.dom.createTextNode(simpleSpace, this.element)); - } - } - else if (controlCharacter) { - var span = this.dom.createElement("span"); - span.className = "ace_invisible ace_invisible_space ace_invalid"; - span.textContent = lang.stringRepeat(self.SPACE_CHAR, controlCharacter.length); - valueFragment.appendChild(span); - } - else if (cjkSpace) { - screenColumn += 1; - var span = this.dom.createElement("span"); - span.style.width = (self.config.characterWidth * 2) + "px"; - span.className = self.showSpaces ? "ace_cjk ace_invisible ace_invisible_space" : "ace_cjk"; - span.textContent = self.showSpaces ? self.SPACE_CHAR : cjkSpace; - valueFragment.appendChild(span); - } - else if (cjk) { - screenColumn += 1; - var span = this.dom.createElement("span"); - span.style.width = (self.config.characterWidth * 2) + "px"; - span.className = "ace_cjk"; - span.textContent = cjk; - valueFragment.appendChild(span); - } - } - valueFragment.appendChild(this.dom.createTextNode(i ? value.slice(i) : value, this.element)); - if (!isTextToken(token.type)) { - var classes = "ace_" + token.type.replace(/\./g, " ace_"); - var span = this.dom.createElement("span"); - if (token.type == "fold") { - span.style.width = (token.value.length * this.config.characterWidth) + "px"; - span.setAttribute("title", nls("Unfold code")); - } - span.className = classes; - span.appendChild(valueFragment); - parent.appendChild(span); - } - else { - parent.appendChild(valueFragment); - } - return screenColumn + value.length; - }; - Text.prototype.renderIndentGuide = function (parent, value, max) { - var cols = value.search(this.$indentGuideRe); - if (cols <= 0 || cols >= max) - return value; - if (value[0] == " ") { - cols -= cols % this.tabSize; - var count = cols / this.tabSize; - for (var i = 0; i < count; i++) { - parent.appendChild(this.$tabStrings[" "].cloneNode(true)); - } - this.$highlightIndentGuide(); - return value.substr(cols); - } - else if (value[0] == "\t") { - for (var i = 0; i < cols; i++) { - parent.appendChild(this.$tabStrings["\t"].cloneNode(true)); - } - this.$highlightIndentGuide(); - return value.substr(cols); - } - this.$highlightIndentGuide(); - return value; - }; - Text.prototype.$highlightIndentGuide = function () { - if (!this.$highlightIndentGuides || !this.displayIndentGuides) - return; - this.$highlightIndentGuideMarker = { - indentLevel: undefined, - start: undefined, - end: undefined, - dir: undefined - }; - var lines = this.session.doc.$lines; - if (!lines) - return; - var cursor = this.session.selection.getCursor(); - var initialIndent = /^\s*/.exec(this.session.doc.getLine(cursor.row))[0].length; - var elementIndentLevel = Math.floor(initialIndent / this.tabSize); - this.$highlightIndentGuideMarker = { - indentLevel: elementIndentLevel, - start: cursor.row - }; - var bracketHighlight = this.session.$bracketHighlight; - if (bracketHighlight) { - var ranges = this.session.$bracketHighlight.ranges; - for (var i = 0; i < ranges.length; i++) { - if (cursor.row !== ranges[i].start.row) { - this.$highlightIndentGuideMarker.end = ranges[i].start.row; - if (cursor.row > ranges[i].start.row) { - this.$highlightIndentGuideMarker.dir = -1; - } - else { - this.$highlightIndentGuideMarker.dir = 1; - } - break; - } - } - } - if (!this.$highlightIndentGuideMarker.end) { - if (lines[cursor.row] !== '' && cursor.column === lines[cursor.row].length) { - this.$highlightIndentGuideMarker.dir = 1; - for (var i = cursor.row + 1; i < lines.length; i++) { - var line = lines[i]; - var currentIndent = /^\s*/.exec(line)[0].length; - if (line !== '') { - this.$highlightIndentGuideMarker.end = i; - if (currentIndent <= initialIndent) - break; - } - } - } - } - this.$renderHighlightIndentGuide(); - }; - Text.prototype.$clearActiveIndentGuide = function () { - var cells = this.$lines.cells; - for (var i = 0; i < cells.length; i++) { - var cell = cells[i]; - var childNodes = cell.element.childNodes; - if (childNodes.length > 0) { - for (var j = 0; j < childNodes.length; j++) { - if (childNodes[j].classList && childNodes[j].classList.contains("ace_indent-guide-active")) { - childNodes[j].classList.remove("ace_indent-guide-active"); - break; - } - } - } - } - }; - Text.prototype.$setIndentGuideActive = function (cell, indentLevel) { - var line = this.session.doc.getLine(cell.row); - if (line !== "") { - var childNodes = cell.element.childNodes; - if (childNodes) { - var node = childNodes[indentLevel - 1]; - if (node && node.classList && node.classList.contains("ace_indent-guide")) - node.classList.add("ace_indent-guide-active"); - } - } - }; - Text.prototype.$renderHighlightIndentGuide = function () { - if (!this.$lines) - return; - var cells = this.$lines.cells; - this.$clearActiveIndentGuide(); - var indentLevel = this.$highlightIndentGuideMarker.indentLevel; - if (indentLevel !== 0) { - if (this.$highlightIndentGuideMarker.dir === 1) { - for (var i = 0; i < cells.length; i++) { - var cell = cells[i]; - if (this.$highlightIndentGuideMarker.end && cell.row >= this.$highlightIndentGuideMarker.start - + 1) { - if (cell.row >= this.$highlightIndentGuideMarker.end) - break; - this.$setIndentGuideActive(cell, indentLevel); - } - } - } - else { - for (var i = cells.length - 1; i >= 0; i--) { - var cell = cells[i]; - if (this.$highlightIndentGuideMarker.end && cell.row < this.$highlightIndentGuideMarker.start) { - if (cell.row <= this.$highlightIndentGuideMarker.end) - break; - this.$setIndentGuideActive(cell, indentLevel); - } - } - } - } - }; - Text.prototype.$createLineElement = function (parent) { - var lineEl = this.dom.createElement("div"); - lineEl.className = "ace_line"; - lineEl.style.height = this.config.lineHeight + "px"; - return lineEl; - }; - Text.prototype.$renderWrappedLine = function (parent, tokens, splits) { - var chars = 0; - var split = 0; - var splitChars = splits[0]; - var screenColumn = 0; - var lineEl = this.$createLineElement(); - parent.appendChild(lineEl); - for (var i = 0; i < tokens.length; i++) { - var token = tokens[i]; - var value = token.value; - if (i == 0 && this.displayIndentGuides) { - chars = value.length; - value = this.renderIndentGuide(lineEl, value, splitChars); - if (!value) - continue; - chars -= value.length; - } - if (chars + value.length < splitChars) { - screenColumn = this.$renderToken(lineEl, screenColumn, token, value); - chars += value.length; - } - else { - while (chars + value.length >= splitChars) { - screenColumn = this.$renderToken(lineEl, screenColumn, token, value.substring(0, splitChars - chars)); - value = value.substring(splitChars - chars); - chars = splitChars; - lineEl = this.$createLineElement(); - parent.appendChild(lineEl); - lineEl.appendChild(this.dom.createTextNode(lang.stringRepeat("\xa0", splits.indent), this.element)); - split++; - screenColumn = 0; - splitChars = splits[split] || Number.MAX_VALUE; - } - if (value.length != 0) { - chars += value.length; - screenColumn = this.$renderToken(lineEl, screenColumn, token, value); - } - } - } - if (splits[splits.length - 1] > this.MAX_LINE_LENGTH) - this.$renderOverflowMessage(lineEl, screenColumn, null, "", true); - }; - Text.prototype.$renderSimpleLine = function (parent, tokens) { - var screenColumn = 0; - for (var i = 0; i < tokens.length; i++) { - var token = tokens[i]; - var value = token.value; - if (i == 0 && this.displayIndentGuides) { - value = this.renderIndentGuide(parent, value); - if (!value) - continue; - } - if (screenColumn + value.length > this.MAX_LINE_LENGTH) - return this.$renderOverflowMessage(parent, screenColumn, token, value); - screenColumn = this.$renderToken(parent, screenColumn, token, value); - } - }; - Text.prototype.$renderOverflowMessage = function (parent, screenColumn, token, value, hide) { - token && this.$renderToken(parent, screenColumn, token, value.slice(0, this.MAX_LINE_LENGTH - screenColumn)); - var overflowEl = this.dom.createElement("span"); - overflowEl.className = "ace_inline_button ace_keyword ace_toggle_wrap"; - overflowEl.textContent = hide ? "" : ""; - parent.appendChild(overflowEl); - }; - Text.prototype.$renderLine = function (parent, row, foldLine) { - if (!foldLine && foldLine != false) - foldLine = this.session.getFoldLine(row); - if (foldLine) - var tokens = this.$getFoldLineTokens(row, foldLine); - else - var tokens = this.session.getTokens(row); - var lastLineEl = parent; - if (tokens.length) { - var splits = this.session.getRowSplitData(row); - if (splits && splits.length) { - this.$renderWrappedLine(parent, tokens, splits); - var lastLineEl = parent.lastChild; - } - else { - var lastLineEl = parent; - if (this.$useLineGroups()) { - lastLineEl = this.$createLineElement(); - parent.appendChild(lastLineEl); - } - this.$renderSimpleLine(lastLineEl, tokens); - } - } - else if (this.$useLineGroups()) { - lastLineEl = this.$createLineElement(); - parent.appendChild(lastLineEl); - } - if (this.showEOL && lastLineEl) { - if (foldLine) - row = foldLine.end.row; - var invisibleEl = this.dom.createElement("span"); - invisibleEl.className = "ace_invisible ace_invisible_eol"; - invisibleEl.textContent = row == this.session.getLength() - 1 ? this.EOF_CHAR : this.EOL_CHAR; - lastLineEl.appendChild(invisibleEl); - } - }; - Text.prototype.$getFoldLineTokens = function (row, foldLine) { - var session = this.session; - var renderTokens = []; - function addTokens(tokens, from, to) { - var idx = 0, col = 0; - while ((col + tokens[idx].value.length) < from) { - col += tokens[idx].value.length; - idx++; - if (idx == tokens.length) - return; - } - if (col != from) { - var value = tokens[idx].value.substring(from - col); - if (value.length > (to - from)) - value = value.substring(0, to - from); - renderTokens.push({ - type: tokens[idx].type, - value: value - }); - col = from + value.length; - idx += 1; - } - while (col < to && idx < tokens.length) { - var value = tokens[idx].value; - if (value.length + col > to) { - renderTokens.push({ - type: tokens[idx].type, - value: value.substring(0, to - col) - }); - } - else - renderTokens.push(tokens[idx]); - col += value.length; - idx += 1; - } - } - var tokens = session.getTokens(row); - foldLine.walk(function (placeholder, row, column, lastColumn, isNewRow) { - if (placeholder != null) { - renderTokens.push({ - type: "fold", - value: placeholder - }); - } - else { - if (isNewRow) - tokens = session.getTokens(row); - if (tokens.length) - addTokens(tokens, lastColumn, column); - } - }, foldLine.end.row, this.session.getLine(foldLine.end.row).length); - return renderTokens; - }; - Text.prototype.$useLineGroups = function () { - return this.session.getUseWrapMode(); - }; - return Text; -}()); -Text.prototype.EOF_CHAR = "\xB6"; -Text.prototype.EOL_CHAR_LF = "\xAC"; -Text.prototype.EOL_CHAR_CRLF = "\xa4"; -Text.prototype.EOL_CHAR = Text.prototype.EOL_CHAR_LF; -Text.prototype.TAB_CHAR = "\u2014"; //"\u21E5"; -Text.prototype.SPACE_CHAR = "\xB7"; -Text.prototype.$padding = 0; -Text.prototype.MAX_LINE_LENGTH = 10000; -Text.prototype.showInvisibles = false; -Text.prototype.showSpaces = false; -Text.prototype.showTabs = false; -Text.prototype.showEOL = false; -Text.prototype.displayIndentGuides = true; -Text.prototype.$highlightIndentGuides = true; -Text.prototype.$tabStrings = []; -Text.prototype.destroy = {}; -Text.prototype.onChangeTabSize = Text.prototype.$computeTabString; -oop.implement(Text.prototype, EventEmitter); -exports.Text = Text; - -}); - -ace.define("ace/layer/cursor",["require","exports","module","ace/lib/dom"], function(require, exports, module){"use strict"; -var dom = require("../lib/dom"); -var Cursor = /** @class */ (function () { - function Cursor(parentEl) { - this.element = dom.createElement("div"); - this.element.className = "ace_layer ace_cursor-layer"; - parentEl.appendChild(this.element); - this.isVisible = false; - this.isBlinking = true; - this.blinkInterval = 1000; - this.smoothBlinking = false; - this.cursors = []; - this.cursor = this.addCursor(); - dom.addCssClass(this.element, "ace_hidden-cursors"); - this.$updateCursors = this.$updateOpacity.bind(this); - } - Cursor.prototype.$updateOpacity = function (val) { - var cursors = this.cursors; - for (var i = cursors.length; i--;) - dom.setStyle(cursors[i].style, "opacity", val ? "" : "0"); - }; - Cursor.prototype.$startCssAnimation = function () { - var cursors = this.cursors; - for (var i = cursors.length; i--;) - cursors[i].style.animationDuration = this.blinkInterval + "ms"; - this.$isAnimating = true; - setTimeout(function () { - if (this.$isAnimating) { - dom.addCssClass(this.element, "ace_animate-blinking"); - } - }.bind(this)); - }; - Cursor.prototype.$stopCssAnimation = function () { - this.$isAnimating = false; - dom.removeCssClass(this.element, "ace_animate-blinking"); - }; - Cursor.prototype.setPadding = function (padding) { - this.$padding = padding; - }; - Cursor.prototype.setSession = function (session) { - this.session = session; - }; - Cursor.prototype.setBlinking = function (blinking) { - if (blinking != this.isBlinking) { - this.isBlinking = blinking; - this.restartTimer(); - } - }; - Cursor.prototype.setBlinkInterval = function (blinkInterval) { - if (blinkInterval != this.blinkInterval) { - this.blinkInterval = blinkInterval; - this.restartTimer(); - } - }; - Cursor.prototype.setSmoothBlinking = function (smoothBlinking) { - if (smoothBlinking != this.smoothBlinking) { - this.smoothBlinking = smoothBlinking; - dom.setCssClass(this.element, "ace_smooth-blinking", smoothBlinking); - this.$updateCursors(true); - this.restartTimer(); - } - }; - Cursor.prototype.addCursor = function () { - var el = dom.createElement("div"); - el.className = "ace_cursor"; - this.element.appendChild(el); - this.cursors.push(el); - return el; - }; - Cursor.prototype.removeCursor = function () { - if (this.cursors.length > 1) { - var el = this.cursors.pop(); - el.parentNode.removeChild(el); - return el; - } - }; - Cursor.prototype.hideCursor = function () { - this.isVisible = false; - dom.addCssClass(this.element, "ace_hidden-cursors"); - this.restartTimer(); - }; - Cursor.prototype.showCursor = function () { - this.isVisible = true; - dom.removeCssClass(this.element, "ace_hidden-cursors"); - this.restartTimer(); - }; - Cursor.prototype.restartTimer = function () { - var update = this.$updateCursors; - clearInterval(this.intervalId); - clearTimeout(this.timeoutId); - this.$stopCssAnimation(); - if (this.smoothBlinking) { - this.$isSmoothBlinking = false; - dom.removeCssClass(this.element, "ace_smooth-blinking"); - } - update(true); - if (!this.isBlinking || !this.blinkInterval || !this.isVisible) { - this.$stopCssAnimation(); - return; - } - if (this.smoothBlinking) { - this.$isSmoothBlinking = true; - setTimeout(function () { - if (this.$isSmoothBlinking) { - dom.addCssClass(this.element, "ace_smooth-blinking"); - } - }.bind(this)); - } - if (dom.HAS_CSS_ANIMATION) { - this.$startCssAnimation(); - } - else { - var blink = function () { - this.timeoutId = setTimeout(function () { - update(false); - }, 0.6 * this.blinkInterval); - }.bind(this); - this.intervalId = setInterval(function () { - update(true); - blink(); - }, this.blinkInterval); - blink(); - } - }; - Cursor.prototype.getPixelPosition = function (position, onScreen) { - if (!this.config || !this.session) - return { left: 0, top: 0 }; - if (!position) - position = this.session.selection.getCursor(); - var pos = this.session.documentToScreenPosition(position); - var cursorLeft = this.$padding + (this.session.$bidiHandler.isBidiRow(pos.row, position.row) - ? this.session.$bidiHandler.getPosLeft(pos.column) - : pos.column * this.config.characterWidth); - var cursorTop = (pos.row - (onScreen ? this.config.firstRowScreen : 0)) * - this.config.lineHeight; - return { left: cursorLeft, top: cursorTop }; - }; - Cursor.prototype.isCursorInView = function (pixelPos, config) { - return pixelPos.top >= 0 && pixelPos.top < config.maxHeight; - }; - Cursor.prototype.update = function (config) { - this.config = config; - var selections = this.session.$selectionMarkers; - var i = 0, cursorIndex = 0; - if (selections === undefined || selections.length === 0) { - selections = [{ cursor: null }]; - } - for (var i = 0, n = selections.length; i < n; i++) { - var pixelPos = this.getPixelPosition(selections[i].cursor, true); - if ((pixelPos.top > config.height + config.offset || - pixelPos.top < 0) && i > 1) { - continue; - } - var element = this.cursors[cursorIndex++] || this.addCursor(); - var style = element.style; - if (!this.drawCursor) { - if (!this.isCursorInView(pixelPos, config)) { - dom.setStyle(style, "display", "none"); - } - else { - dom.setStyle(style, "display", "block"); - dom.translate(element, pixelPos.left, pixelPos.top); - dom.setStyle(style, "width", Math.round(config.characterWidth) + "px"); - dom.setStyle(style, "height", config.lineHeight + "px"); - } - } - else { - this.drawCursor(element, pixelPos, config, selections[i], this.session); - } - } - while (this.cursors.length > cursorIndex) - this.removeCursor(); - var overwrite = this.session.getOverwrite(); - this.$setOverwrite(overwrite); - this.$pixelPos = pixelPos; - this.restartTimer(); - }; - Cursor.prototype.$setOverwrite = function (overwrite) { - if (overwrite != this.overwrite) { - this.overwrite = overwrite; - if (overwrite) - dom.addCssClass(this.element, "ace_overwrite-cursors"); - else - dom.removeCssClass(this.element, "ace_overwrite-cursors"); - } - }; - Cursor.prototype.destroy = function () { - clearInterval(this.intervalId); - clearTimeout(this.timeoutId); - }; - return Cursor; -}()); -Cursor.prototype.$padding = 0; -Cursor.prototype.drawCursor = null; -exports.Cursor = Cursor; - -}); - -ace.define("ace/scrollbar",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/event","ace/lib/event_emitter"], function(require, exports, module){"use strict"; -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - if (typeof b !== "function" && b !== null) - throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var oop = require("./lib/oop"); -var dom = require("./lib/dom"); -var event = require("./lib/event"); -var EventEmitter = require("./lib/event_emitter").EventEmitter; -var MAX_SCROLL_H = 0x8000; -var Scrollbar = /** @class */ (function () { - function Scrollbar(parent, classSuffix) { - this.element = dom.createElement("div"); - this.element.className = "ace_scrollbar ace_scrollbar" + classSuffix; - this.inner = dom.createElement("div"); - this.inner.className = "ace_scrollbar-inner"; - this.inner.textContent = "\xa0"; - this.element.appendChild(this.inner); - parent.appendChild(this.element); - this.setVisible(false); - this.skipEvent = false; - event.addListener(this.element, "scroll", this.onScroll.bind(this)); - event.addListener(this.element, "mousedown", event.preventDefault); - } - Scrollbar.prototype.setVisible = function (isVisible) { - this.element.style.display = isVisible ? "" : "none"; - this.isVisible = isVisible; - this.coeff = 1; - }; - return Scrollbar; -}()); -oop.implement(Scrollbar.prototype, EventEmitter); -var VScrollBar = /** @class */ (function (_super) { - __extends(VScrollBar, _super); - function VScrollBar(parent, renderer) { - var _this = _super.call(this, parent, '-v') || this; - _this.scrollTop = 0; - _this.scrollHeight = 0; - renderer.$scrollbarWidth = - _this.width = dom.scrollbarWidth(parent.ownerDocument); - _this.inner.style.width = - _this.element.style.width = (_this.width || 15) + 5 + "px"; - _this.$minWidth = 0; - return _this; - } - VScrollBar.prototype.onScroll = function () { - if (!this.skipEvent) { - this.scrollTop = this.element.scrollTop; - if (this.coeff != 1) { - var h = this.element.clientHeight / this.scrollHeight; - this.scrollTop = this.scrollTop * (1 - h) / (this.coeff - h); - } - this._emit("scroll", { data: this.scrollTop }); - } - this.skipEvent = false; - }; - VScrollBar.prototype.getWidth = function () { - return Math.max(this.isVisible ? this.width : 0, this.$minWidth || 0); - }; - VScrollBar.prototype.setHeight = function (height) { - this.element.style.height = height + "px"; - }; - VScrollBar.prototype.setScrollHeight = function (height) { - this.scrollHeight = height; - if (height > MAX_SCROLL_H) { - this.coeff = MAX_SCROLL_H / height; - height = MAX_SCROLL_H; - } - else if (this.coeff != 1) { - this.coeff = 1; - } - this.inner.style.height = height + "px"; - }; - VScrollBar.prototype.setScrollTop = function (scrollTop) { - if (this.scrollTop != scrollTop) { - this.skipEvent = true; - this.scrollTop = scrollTop; - this.element.scrollTop = scrollTop * this.coeff; - } - }; - return VScrollBar; -}(Scrollbar)); -VScrollBar.prototype.setInnerHeight = VScrollBar.prototype.setScrollHeight; -var HScrollBar = /** @class */ (function (_super) { - __extends(HScrollBar, _super); - function HScrollBar(parent, renderer) { - var _this = _super.call(this, parent, '-h') || this; - _this.scrollLeft = 0; - _this.height = renderer.$scrollbarWidth; - _this.inner.style.height = - _this.element.style.height = (_this.height || 15) + 5 + "px"; - return _this; - } - HScrollBar.prototype.onScroll = function () { - if (!this.skipEvent) { - this.scrollLeft = this.element.scrollLeft; - this._emit("scroll", { data: this.scrollLeft }); - } - this.skipEvent = false; - }; - HScrollBar.prototype.getHeight = function () { - return this.isVisible ? this.height : 0; - }; - HScrollBar.prototype.setWidth = function (width) { - this.element.style.width = width + "px"; - }; - HScrollBar.prototype.setInnerWidth = function (width) { - this.inner.style.width = width + "px"; - }; - HScrollBar.prototype.setScrollWidth = function (width) { - this.inner.style.width = width + "px"; - }; - HScrollBar.prototype.setScrollLeft = function (scrollLeft) { - if (this.scrollLeft != scrollLeft) { - this.skipEvent = true; - this.scrollLeft = this.element.scrollLeft = scrollLeft; - } - }; - return HScrollBar; -}(Scrollbar)); -exports.ScrollBar = VScrollBar; // backward compatibility -exports.ScrollBarV = VScrollBar; // backward compatibility -exports.ScrollBarH = HScrollBar; // backward compatibility -exports.VScrollBar = VScrollBar; -exports.HScrollBar = HScrollBar; - -}); - -ace.define("ace/scrollbar_custom",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/event","ace/lib/event_emitter"], function(require, exports, module){"use strict"; -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - if (typeof b !== "function" && b !== null) - throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var oop = require("./lib/oop"); -var dom = require("./lib/dom"); -var event = require("./lib/event"); -var EventEmitter = require("./lib/event_emitter").EventEmitter; -dom.importCssString(".ace_editor>.ace_sb-v div, .ace_editor>.ace_sb-h div{\n position: absolute;\n background: rgba(128, 128, 128, 0.6);\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n border: 1px solid #bbb;\n border-radius: 2px;\n z-index: 8;\n}\n.ace_editor>.ace_sb-v, .ace_editor>.ace_sb-h {\n position: absolute;\n z-index: 6;\n background: none;\n overflow: hidden!important;\n}\n.ace_editor>.ace_sb-v {\n z-index: 6;\n right: 0;\n top: 0;\n width: 12px;\n}\n.ace_editor>.ace_sb-v div {\n z-index: 8;\n right: 0;\n width: 100%;\n}\n.ace_editor>.ace_sb-h {\n bottom: 0;\n left: 0;\n height: 12px;\n}\n.ace_editor>.ace_sb-h div {\n bottom: 0;\n height: 100%;\n}\n.ace_editor>.ace_sb_grabbed {\n z-index: 8;\n background: #000;\n}", "ace_scrollbar.css", false); -var ScrollBar = /** @class */ (function () { - function ScrollBar(parent, classSuffix) { - this.element = dom.createElement("div"); - this.element.className = "ace_sb" + classSuffix; - this.inner = dom.createElement("div"); - this.inner.className = ""; - this.element.appendChild(this.inner); - this.VScrollWidth = 12; - this.HScrollHeight = 12; - parent.appendChild(this.element); - this.setVisible(false); - this.skipEvent = false; - event.addMultiMouseDownListener(this.element, [500, 300, 300], this, "onMouseDown"); - } - ScrollBar.prototype.setVisible = function (isVisible) { - this.element.style.display = isVisible ? "" : "none"; - this.isVisible = isVisible; - this.coeff = 1; - }; - return ScrollBar; -}()); -oop.implement(ScrollBar.prototype, EventEmitter); -var VScrollBar = /** @class */ (function (_super) { - __extends(VScrollBar, _super); - function VScrollBar(parent, renderer) { - var _this = _super.call(this, parent, '-v') || this; - _this.scrollTop = 0; - _this.scrollHeight = 0; - _this.parent = parent; - _this.width = _this.VScrollWidth; - _this.renderer = renderer; - _this.inner.style.width = _this.element.style.width = (_this.width || 15) + "px"; - _this.$minWidth = 0; - return _this; - } - VScrollBar.prototype.onMouseDown = function (eType, e) { - if (eType !== "mousedown") - return; - if (event.getButton(e) !== 0 || e.detail === 2) { - return; - } - if (e.target === this.inner) { - var self = this; - var mousePageY = e.clientY; - var onMouseMove = function (e) { - mousePageY = e.clientY; - }; - var onMouseUp = function () { - clearInterval(timerId); - }; - var startY = e.clientY; - var startTop = this.thumbTop; - var onScrollInterval = function () { - if (mousePageY === undefined) - return; - var scrollTop = self.scrollTopFromThumbTop(startTop + mousePageY - startY); - if (scrollTop === self.scrollTop) - return; - self._emit("scroll", { data: scrollTop }); - }; - event.capture(this.inner, onMouseMove, onMouseUp); - var timerId = setInterval(onScrollInterval, 20); - return event.preventDefault(e); - } - var top = e.clientY - this.element.getBoundingClientRect().top - this.thumbHeight / 2; - this._emit("scroll", { data: this.scrollTopFromThumbTop(top) }); - return event.preventDefault(e); - }; - VScrollBar.prototype.getHeight = function () { - return this.height; - }; - VScrollBar.prototype.scrollTopFromThumbTop = function (thumbTop) { - var scrollTop = thumbTop * (this.pageHeight - this.viewHeight) / (this.slideHeight - this.thumbHeight); - scrollTop = scrollTop >> 0; - if (scrollTop < 0) { - scrollTop = 0; - } - else if (scrollTop > this.pageHeight - this.viewHeight) { - scrollTop = this.pageHeight - this.viewHeight; - } - return scrollTop; - }; - VScrollBar.prototype.getWidth = function () { - return Math.max(this.isVisible ? this.width : 0, this.$minWidth || 0); - }; - VScrollBar.prototype.setHeight = function (height) { - this.height = Math.max(0, height); - this.slideHeight = this.height; - this.viewHeight = this.height; - this.setScrollHeight(this.pageHeight, true); - }; - VScrollBar.prototype.setScrollHeight = function (height, force) { - if (this.pageHeight === height && !force) - return; - this.pageHeight = height; - this.thumbHeight = this.slideHeight * this.viewHeight / this.pageHeight; - if (this.thumbHeight > this.slideHeight) - this.thumbHeight = this.slideHeight; - if (this.thumbHeight < 15) - this.thumbHeight = 15; - this.inner.style.height = this.thumbHeight + "px"; - if (this.scrollTop > (this.pageHeight - this.viewHeight)) { - this.scrollTop = (this.pageHeight - this.viewHeight); - if (this.scrollTop < 0) - this.scrollTop = 0; - this._emit("scroll", { data: this.scrollTop }); - } - }; - VScrollBar.prototype.setScrollTop = function (scrollTop) { - this.scrollTop = scrollTop; - if (scrollTop < 0) - scrollTop = 0; - this.thumbTop = scrollTop * (this.slideHeight - this.thumbHeight) / (this.pageHeight - this.viewHeight); - this.inner.style.top = this.thumbTop + "px"; - }; - return VScrollBar; -}(ScrollBar)); -VScrollBar.prototype.setInnerHeight = VScrollBar.prototype.setScrollHeight; -var HScrollBar = /** @class */ (function (_super) { - __extends(HScrollBar, _super); - function HScrollBar(parent, renderer) { - var _this = _super.call(this, parent, '-h') || this; - _this.scrollLeft = 0; - _this.scrollWidth = 0; - _this.height = _this.HScrollHeight; - _this.inner.style.height = _this.element.style.height = (_this.height || 12) + "px"; - _this.renderer = renderer; - return _this; - } - HScrollBar.prototype.onMouseDown = function (eType, e) { - if (eType !== "mousedown") - return; - if (event.getButton(e) !== 0 || e.detail === 2) { - return; - } - if (e.target === this.inner) { - var self = this; - var mousePageX = e.clientX; - var onMouseMove = function (e) { - mousePageX = e.clientX; - }; - var onMouseUp = function () { - clearInterval(timerId); - }; - var startX = e.clientX; - var startLeft = this.thumbLeft; - var onScrollInterval = function () { - if (mousePageX === undefined) - return; - var scrollLeft = self.scrollLeftFromThumbLeft(startLeft + mousePageX - startX); - if (scrollLeft === self.scrollLeft) - return; - self._emit("scroll", { data: scrollLeft }); - }; - event.capture(this.inner, onMouseMove, onMouseUp); - var timerId = setInterval(onScrollInterval, 20); - return event.preventDefault(e); - } - var left = e.clientX - this.element.getBoundingClientRect().left - this.thumbWidth / 2; - this._emit("scroll", { data: this.scrollLeftFromThumbLeft(left) }); - return event.preventDefault(e); - }; - HScrollBar.prototype.getHeight = function () { - return this.isVisible ? this.height : 0; - }; - HScrollBar.prototype.scrollLeftFromThumbLeft = function (thumbLeft) { - var scrollLeft = thumbLeft * (this.pageWidth - this.viewWidth) / (this.slideWidth - this.thumbWidth); - scrollLeft = scrollLeft >> 0; - if (scrollLeft < 0) { - scrollLeft = 0; - } - else if (scrollLeft > this.pageWidth - this.viewWidth) { - scrollLeft = this.pageWidth - this.viewWidth; - } - return scrollLeft; - }; - HScrollBar.prototype.setWidth = function (width) { - this.width = Math.max(0, width); - this.element.style.width = this.width + "px"; - this.slideWidth = this.width; - this.viewWidth = this.width; - this.setScrollWidth(this.pageWidth, true); - }; - HScrollBar.prototype.setScrollWidth = function (width, force) { - if (this.pageWidth === width && !force) - return; - this.pageWidth = width; - this.thumbWidth = this.slideWidth * this.viewWidth / this.pageWidth; - if (this.thumbWidth > this.slideWidth) - this.thumbWidth = this.slideWidth; - if (this.thumbWidth < 15) - this.thumbWidth = 15; - this.inner.style.width = this.thumbWidth + "px"; - if (this.scrollLeft > (this.pageWidth - this.viewWidth)) { - this.scrollLeft = (this.pageWidth - this.viewWidth); - if (this.scrollLeft < 0) - this.scrollLeft = 0; - this._emit("scroll", { data: this.scrollLeft }); - } - }; - HScrollBar.prototype.setScrollLeft = function (scrollLeft) { - this.scrollLeft = scrollLeft; - if (scrollLeft < 0) - scrollLeft = 0; - this.thumbLeft = scrollLeft * (this.slideWidth - this.thumbWidth) / (this.pageWidth - this.viewWidth); - this.inner.style.left = (this.thumbLeft) + "px"; - }; - return HScrollBar; -}(ScrollBar)); -HScrollBar.prototype.setInnerWidth = HScrollBar.prototype.setScrollWidth; -exports.ScrollBar = VScrollBar; // backward compatibility -exports.ScrollBarV = VScrollBar; // backward compatibility -exports.ScrollBarH = HScrollBar; // backward compatibility -exports.VScrollBar = VScrollBar; -exports.HScrollBar = HScrollBar; - -}); - -ace.define("ace/renderloop",["require","exports","module","ace/lib/event"], function(require, exports, module){"use strict"; -var event = require("./lib/event"); -var RenderLoop = /** @class */ (function () { - function RenderLoop(onRender, win) { - this.onRender = onRender; - this.pending = false; - this.changes = 0; - this.$recursionLimit = 2; - this.window = win || window; - var _self = this; - this._flush = function (ts) { - _self.pending = false; - var changes = _self.changes; - if (changes) { - event.blockIdle(100); - _self.changes = 0; - _self.onRender(changes); - } - if (_self.changes) { - if (_self.$recursionLimit-- < 0) - return; - _self.schedule(); - } - else { - _self.$recursionLimit = 2; - } - }; - } - RenderLoop.prototype.schedule = function (change) { - this.changes = this.changes | change; - if (this.changes && !this.pending) { - event.nextFrame(this._flush); - this.pending = true; - } - }; - RenderLoop.prototype.clear = function (change) { - var changes = this.changes; - this.changes = 0; - return changes; - }; - return RenderLoop; -}()); -exports.RenderLoop = RenderLoop; - -}); - -ace.define("ace/layer/font_metrics",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/lib/event","ace/lib/useragent","ace/lib/event_emitter"], function(require, exports, module){var oop = require("../lib/oop"); -var dom = require("../lib/dom"); -var lang = require("../lib/lang"); -var event = require("../lib/event"); -var useragent = require("../lib/useragent"); -var EventEmitter = require("../lib/event_emitter").EventEmitter; -var CHAR_COUNT = 512; -var USE_OBSERVER = typeof ResizeObserver == "function"; -var L = 200; -var FontMetrics = /** @class */ (function () { - function FontMetrics(parentEl) { - this.el = dom.createElement("div"); - this.$setMeasureNodeStyles(this.el.style, true); - this.$main = dom.createElement("div"); - this.$setMeasureNodeStyles(this.$main.style); - this.$measureNode = dom.createElement("div"); - this.$setMeasureNodeStyles(this.$measureNode.style); - this.el.appendChild(this.$main); - this.el.appendChild(this.$measureNode); - parentEl.appendChild(this.el); - this.$measureNode.textContent = lang.stringRepeat("X", CHAR_COUNT); - this.$characterSize = { width: 0, height: 0 }; - if (USE_OBSERVER) - this.$addObserver(); - else - this.checkForSizeChanges(); - } - FontMetrics.prototype.$setMeasureNodeStyles = function (style, isRoot) { - style.width = style.height = "auto"; - style.left = style.top = "0px"; - style.visibility = "hidden"; - style.position = "absolute"; - style.whiteSpace = "pre"; - if (useragent.isIE < 8) { - style["font-family"] = "inherit"; - } - else { - style.font = "inherit"; - } - style.overflow = isRoot ? "hidden" : "visible"; - }; - FontMetrics.prototype.checkForSizeChanges = function (size) { - if (size === undefined) - size = this.$measureSizes(); - if (size && (this.$characterSize.width !== size.width || this.$characterSize.height !== size.height)) { - this.$measureNode.style.fontWeight = "bold"; - var boldSize = this.$measureSizes(); - this.$measureNode.style.fontWeight = ""; - this.$characterSize = size; - this.charSizes = Object.create(null); - this.allowBoldFonts = boldSize && boldSize.width === size.width && boldSize.height === size.height; - this._emit("changeCharacterSize", { data: size }); - } - }; - FontMetrics.prototype.$addObserver = function () { - var self = this; - this.$observer = new window.ResizeObserver(function (e) { - self.checkForSizeChanges(); - }); - this.$observer.observe(this.$measureNode); - }; - FontMetrics.prototype.$pollSizeChanges = function () { - if (this.$pollSizeChangesTimer || this.$observer) - return this.$pollSizeChangesTimer; - var self = this; - return this.$pollSizeChangesTimer = event.onIdle(function cb() { - self.checkForSizeChanges(); - event.onIdle(cb, 500); - }, 500); - }; - FontMetrics.prototype.setPolling = function (val) { - if (val) { - this.$pollSizeChanges(); - } - else if (this.$pollSizeChangesTimer) { - clearInterval(this.$pollSizeChangesTimer); - this.$pollSizeChangesTimer = 0; - } - }; - FontMetrics.prototype.$measureSizes = function (node) { - var size = { - height: (node || this.$measureNode).clientHeight, - width: (node || this.$measureNode).clientWidth / CHAR_COUNT - }; - if (size.width === 0 || size.height === 0) - return null; - return size; - }; - FontMetrics.prototype.$measureCharWidth = function (ch) { - this.$main.textContent = lang.stringRepeat(ch, CHAR_COUNT); - var rect = this.$main.getBoundingClientRect(); - return rect.width / CHAR_COUNT; - }; - FontMetrics.prototype.getCharacterWidth = function (ch) { - var w = this.charSizes[ch]; - if (w === undefined) { - w = this.charSizes[ch] = this.$measureCharWidth(ch) / this.$characterSize.width; - } - return w; - }; - FontMetrics.prototype.destroy = function () { - clearInterval(this.$pollSizeChangesTimer); - if (this.$observer) - this.$observer.disconnect(); - if (this.el && this.el.parentNode) - this.el.parentNode.removeChild(this.el); - }; - FontMetrics.prototype.$getZoom = function (element) { - if (!element || !element.parentElement) - return 1; - return (window.getComputedStyle(element).zoom || 1) * this.$getZoom(element.parentElement); - }; - FontMetrics.prototype.$initTransformMeasureNodes = function () { - var t = function (t, l) { - return ["div", { - style: "position: absolute;top:" + t + "px;left:" + l + "px;" - }]; - }; - this.els = dom.buildDom([t(0, 0), t(L, 0), t(0, L), t(L, L)], this.el); - }; - FontMetrics.prototype.transformCoordinates = function (clientPos, elPos) { - if (clientPos) { - var zoom = this.$getZoom(this.el); - clientPos = mul(1 / zoom, clientPos); - } - function solve(l1, l2, r) { - var det = l1[1] * l2[0] - l1[0] * l2[1]; - return [ - (-l2[1] * r[0] + l2[0] * r[1]) / det, - (+l1[1] * r[0] - l1[0] * r[1]) / det - ]; - } - function sub(a, b) { return [a[0] - b[0], a[1] - b[1]]; } - function add(a, b) { return [a[0] + b[0], a[1] + b[1]]; } - function mul(a, b) { return [a * b[0], a * b[1]]; } - if (!this.els) - this.$initTransformMeasureNodes(); - function p(el) { - var r = el.getBoundingClientRect(); - return [r.left, r.top]; - } - var a = p(this.els[0]); - var b = p(this.els[1]); - var c = p(this.els[2]); - var d = p(this.els[3]); - var h = solve(sub(d, b), sub(d, c), sub(add(b, c), add(d, a))); - var m1 = mul(1 + h[0], sub(b, a)); - var m2 = mul(1 + h[1], sub(c, a)); - if (elPos) { - var x = elPos; - var k = h[0] * x[0] / L + h[1] * x[1] / L + 1; - var ut = add(mul(x[0], m1), mul(x[1], m2)); - return add(mul(1 / k / L, ut), a); - } - var u = sub(clientPos, a); - var f = solve(sub(m1, mul(h[0], u)), sub(m2, mul(h[1], u)), u); - return mul(L, f); - }; - return FontMetrics; -}()); -FontMetrics.prototype.$characterSize = { width: 0, height: 0 }; -oop.implement(FontMetrics.prototype, EventEmitter); -exports.FontMetrics = FontMetrics; - -}); - -ace.define("ace/css/editor-css",["require","exports","module"], function(require, exports, module){/* -styles = [] -for (var i = 1; i < 16; i++) { - styles.push(".ace_br" + i + "{" + ( - ["top-left", "top-right", "bottom-right", "bottom-left"] - ).map(function(x, j) { - return i & (1< .ace_line, .ace_text-layer > .ace_line_group {\n contain: style size layout;\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n}\n\n.ace_hidpi .ace_text-layer,\n.ace_hidpi .ace_gutter-layer,\n.ace_hidpi .ace_content,\n.ace_hidpi .ace_gutter {\n contain: strict;\n}\n.ace_hidpi .ace_text-layer > .ace_line, \n.ace_hidpi .ace_text-layer > .ace_line_group {\n contain: strict;\n}\n\n.ace_cjk {\n display: inline-block;\n text-align: center;\n}\n\n.ace_cursor-layer {\n z-index: 4;\n}\n\n.ace_cursor {\n z-index: 4;\n position: absolute;\n box-sizing: border-box;\n border-left: 2px solid;\n /* workaround for smooth cursor repaintng whole screen in chrome */\n transform: translatez(0);\n}\n\n.ace_multiselect .ace_cursor {\n border-left-width: 1px;\n}\n\n.ace_slim-cursors .ace_cursor {\n border-left-width: 1px;\n}\n\n.ace_overwrite-cursors .ace_cursor {\n border-left-width: 0;\n border-bottom: 1px solid;\n}\n\n.ace_hidden-cursors .ace_cursor {\n opacity: 0.2;\n}\n\n.ace_hasPlaceholder .ace_hidden-cursors .ace_cursor {\n opacity: 0;\n}\n\n.ace_smooth-blinking .ace_cursor {\n transition: opacity 0.18s;\n}\n\n.ace_animate-blinking .ace_cursor {\n animation-duration: 1000ms;\n animation-timing-function: step-end;\n animation-name: blink-ace-animate;\n animation-iteration-count: infinite;\n}\n\n.ace_animate-blinking.ace_smooth-blinking .ace_cursor {\n animation-duration: 1000ms;\n animation-timing-function: ease-in-out;\n animation-name: blink-ace-animate-smooth;\n}\n \n@keyframes blink-ace-animate {\n from, to { opacity: 1; }\n 60% { opacity: 0; }\n}\n\n@keyframes blink-ace-animate-smooth {\n from, to { opacity: 1; }\n 45% { opacity: 1; }\n 60% { opacity: 0; }\n 85% { opacity: 0; }\n}\n\n.ace_marker-layer .ace_step, .ace_marker-layer .ace_stack {\n position: absolute;\n z-index: 3;\n}\n\n.ace_marker-layer .ace_selection {\n position: absolute;\n z-index: 5;\n}\n\n.ace_marker-layer .ace_bracket {\n position: absolute;\n z-index: 6;\n}\n\n.ace_marker-layer .ace_error_bracket {\n position: absolute;\n border-bottom: 1px solid #DE5555;\n border-radius: 0;\n}\n\n.ace_marker-layer .ace_active-line {\n position: absolute;\n z-index: 2;\n}\n\n.ace_marker-layer .ace_selected-word {\n position: absolute;\n z-index: 4;\n box-sizing: border-box;\n}\n\n.ace_line .ace_fold {\n box-sizing: border-box;\n\n display: inline-block;\n height: 11px;\n margin-top: -2px;\n vertical-align: middle;\n\n background-image:\n url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII=\"),\n url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACJJREFUeNpi+P//fxgTAwPDBxDxD078RSX+YeEyDFMCIMAAI3INmXiwf2YAAAAASUVORK5CYII=\");\n background-repeat: no-repeat, repeat-x;\n background-position: center center, top left;\n color: transparent;\n\n border: 1px solid black;\n border-radius: 2px;\n\n cursor: pointer;\n pointer-events: auto;\n}\n\n.ace_dark .ace_fold {\n}\n\n.ace_fold:hover{\n background-image:\n url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII=\"),\n url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACBJREFUeNpi+P//fz4TAwPDZxDxD5X4i5fLMEwJgAADAEPVDbjNw87ZAAAAAElFTkSuQmCC\");\n}\n\n.ace_tooltip {\n background-color: #f5f5f5;\n border: 1px solid gray;\n border-radius: 1px;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);\n color: black;\n max-width: 100%;\n padding: 3px 4px;\n position: fixed;\n z-index: 999999;\n box-sizing: border-box;\n cursor: default;\n white-space: pre-wrap;\n word-wrap: break-word;\n line-height: normal;\n font-style: normal;\n font-weight: normal;\n letter-spacing: normal;\n pointer-events: none;\n overflow: auto;\n max-width: min(60em, 66vw);\n}\n.ace_tooltip pre {\n white-space: pre-wrap;\n}\n\n.ace_tooltip.ace_dark {\n background-color: #636363;\n color: #fff;\n}\n\n.ace_tooltip:focus {\n outline: 1px solid #5E9ED6;\n}\n\n.ace_icon {\n display: inline-block;\n width: 18px;\n vertical-align: top;\n}\n\n.ace_icon_svg {\n display: inline-block;\n width: 12px;\n vertical-align: top;\n -webkit-mask-repeat: no-repeat;\n -webkit-mask-size: 12px;\n -webkit-mask-position: center;\n}\n\n.ace_folding-enabled > .ace_gutter-cell, .ace_folding-enabled > .ace_gutter-cell_svg-icons {\n padding-right: 13px;\n}\n\n.ace_fold-widget {\n box-sizing: border-box;\n\n margin: 0 -12px 0 1px;\n display: none;\n width: 11px;\n vertical-align: top;\n\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42mWKsQ0AMAzC8ixLlrzQjzmBiEjp0A6WwBCSPgKAXoLkqSot7nN3yMwR7pZ32NzpKkVoDBUxKAAAAABJRU5ErkJggg==\");\n background-repeat: no-repeat;\n background-position: center;\n\n border-radius: 3px;\n \n border: 1px solid transparent;\n cursor: pointer;\n}\n\n.ace_folding-enabled .ace_fold-widget {\n display: inline-block; \n}\n\n.ace_fold-widget.ace_end {\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42m3HwQkAMAhD0YzsRchFKI7sAikeWkrxwScEB0nh5e7KTPWimZki4tYfVbX+MNl4pyZXejUO1QAAAABJRU5ErkJggg==\");\n}\n\n.ace_fold-widget.ace_closed {\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAGCAYAAAAG5SQMAAAAOUlEQVR42jXKwQkAMAgDwKwqKD4EwQ26sSOkVWjgIIHAzPiCgaqiqnJHZnKICBERHN194O5b9vbLuAVRL+l0YWnZAAAAAElFTkSuQmCCXA==\");\n}\n\n.ace_fold-widget:hover {\n border: 1px solid rgba(0, 0, 0, 0.3);\n background-color: rgba(255, 255, 255, 0.2);\n box-shadow: 0 1px 1px rgba(255, 255, 255, 0.7);\n}\n\n.ace_fold-widget:active {\n border: 1px solid rgba(0, 0, 0, 0.4);\n background-color: rgba(0, 0, 0, 0.05);\n box-shadow: 0 1px 1px rgba(255, 255, 255, 0.8);\n}\n/**\n * Dark version for fold widgets\n */\n.ace_dark .ace_fold-widget {\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHklEQVQIW2P4//8/AzoGEQ7oGCaLLAhWiSwB146BAQCSTPYocqT0AAAAAElFTkSuQmCC\");\n}\n.ace_dark .ace_fold-widget.ace_end {\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAH0lEQVQIW2P4//8/AxQ7wNjIAjDMgC4AxjCVKBirIAAF0kz2rlhxpAAAAABJRU5ErkJggg==\");\n}\n.ace_dark .ace_fold-widget.ace_closed {\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAFCAYAAACAcVaiAAAAHElEQVQIW2P4//+/AxAzgDADlOOAznHAKgPWAwARji8UIDTfQQAAAABJRU5ErkJggg==\");\n}\n.ace_dark .ace_fold-widget:hover {\n box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);\n background-color: rgba(255, 255, 255, 0.1);\n}\n.ace_dark .ace_fold-widget:active {\n box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);\n}\n\n.ace_inline_button {\n border: 1px solid lightgray;\n display: inline-block;\n margin: -1px 8px;\n padding: 0 5px;\n pointer-events: auto;\n cursor: pointer;\n}\n.ace_inline_button:hover {\n border-color: gray;\n background: rgba(200,200,200,0.2);\n display: inline-block;\n pointer-events: auto;\n}\n\n.ace_fold-widget.ace_invalid {\n background-color: #FFB4B4;\n border-color: #DE5555;\n}\n\n.ace_fade-fold-widgets .ace_fold-widget {\n transition: opacity 0.4s ease 0.05s;\n opacity: 0;\n}\n\n.ace_fade-fold-widgets:hover .ace_fold-widget {\n transition: opacity 0.05s ease 0.05s;\n opacity:1;\n}\n\n.ace_underline {\n text-decoration: underline;\n}\n\n.ace_bold {\n font-weight: bold;\n}\n\n.ace_nobold .ace_bold {\n font-weight: normal;\n}\n\n.ace_italic {\n font-style: italic;\n}\n\n\n.ace_error-marker {\n background-color: rgba(255, 0, 0,0.2);\n position: absolute;\n z-index: 9;\n}\n\n.ace_highlight-marker {\n background-color: rgba(255, 255, 0,0.2);\n position: absolute;\n z-index: 8;\n}\n\n.ace_mobile-menu {\n position: absolute;\n line-height: 1.5;\n border-radius: 4px;\n -ms-user-select: none;\n -moz-user-select: none;\n -webkit-user-select: none;\n user-select: none;\n background: white;\n box-shadow: 1px 3px 2px grey;\n border: 1px solid #dcdcdc;\n color: black;\n}\n.ace_dark > .ace_mobile-menu {\n background: #333;\n color: #ccc;\n box-shadow: 1px 3px 2px grey;\n border: 1px solid #444;\n\n}\n.ace_mobile-button {\n padding: 2px;\n cursor: pointer;\n overflow: hidden;\n}\n.ace_mobile-button:hover {\n background-color: #eee;\n opacity:1;\n}\n.ace_mobile-button:active {\n background-color: #ddd;\n}\n\n.ace_placeholder {\n font-family: arial;\n transform: scale(0.9);\n transform-origin: left;\n white-space: pre;\n opacity: 0.7;\n margin: 0 10px;\n}\n\n.ace_ghost_text {\n opacity: 0.5;\n font-style: italic;\n white-space: pre;\n}\n\n.ace_screenreader-only {\n position:absolute;\n left:-10000px;\n top:auto;\n width:1px;\n height:1px;\n overflow:hidden;\n}"; - -}); - -ace.define("ace/layer/decorators",["require","exports","module","ace/lib/dom","ace/lib/oop","ace/lib/event_emitter"], function(require, exports, module){"use strict"; -var dom = require("../lib/dom"); -var oop = require("../lib/oop"); -var EventEmitter = require("../lib/event_emitter").EventEmitter; -var Decorator = /** @class */ (function () { - function Decorator(parent, renderer) { - this.canvas = dom.createElement("canvas"); - this.renderer = renderer; - this.pixelRatio = 1; - this.maxHeight = renderer.layerConfig.maxHeight; - this.lineHeight = renderer.layerConfig.lineHeight; - this.canvasHeight = parent.parent.scrollHeight; - this.heightRatio = this.canvasHeight / this.maxHeight; - this.canvasWidth = parent.width; - this.minDecorationHeight = (2 * this.pixelRatio) | 0; - this.halfMinDecorationHeight = (this.minDecorationHeight / 2) | 0; - this.canvas.width = this.canvasWidth; - this.canvas.height = this.canvasHeight; - this.canvas.style.top = 0 + "px"; - this.canvas.style.right = 0 + "px"; - this.canvas.style.zIndex = 7 + "px"; - this.canvas.style.position = "absolute"; - this.colors = {}; - this.colors.dark = { - "error": "rgba(255, 18, 18, 1)", - "warning": "rgba(18, 136, 18, 1)", - "info": "rgba(18, 18, 136, 1)" - }; - this.colors.light = { - "error": "rgb(255,51,51)", - "warning": "rgb(32,133,72)", - "info": "rgb(35,68,138)" - }; - parent.element.appendChild(this.canvas); - } - Decorator.prototype.$updateDecorators = function (config) { - var colors = (this.renderer.theme.isDark === true) ? this.colors.dark : this.colors.light; - if (config) { - this.maxHeight = config.maxHeight; - this.lineHeight = config.lineHeight; - this.canvasHeight = config.height; - var allLineHeight = (config.lastRow + 1) * this.lineHeight; - if (allLineHeight < this.canvasHeight) { - this.heightRatio = 1; - } - else { - this.heightRatio = this.canvasHeight / this.maxHeight; - } - } - var ctx = this.canvas.getContext("2d"); - function compare(a, b) { - if (a.priority < b.priority) - return -1; - if (a.priority > b.priority) - return 1; - return 0; - } - var annotations = this.renderer.session.$annotations; - ctx.clearRect(0, 0, this.canvas.width, this.canvas.height); - if (annotations) { - var priorities = { - "info": 1, - "warning": 2, - "error": 3 - }; - annotations.forEach(function (item) { - item.priority = priorities[item.type] || null; - }); - annotations = annotations.sort(compare); - var foldData = this.renderer.session.$foldData; - for (var i = 0; i < annotations.length; i++) { - var row = annotations[i].row; - var compensateFold = this.compensateFoldRows(row, foldData); - var currentY = Math.round((row - compensateFold) * this.lineHeight * this.heightRatio); - var y1 = Math.round(((row - compensateFold) * this.lineHeight * this.heightRatio)); - var y2 = Math.round((((row - compensateFold) * this.lineHeight + this.lineHeight) * this.heightRatio)); - var height = y2 - y1; - if (height < this.minDecorationHeight) { - var yCenter = ((y1 + y2) / 2) | 0; - if (yCenter < this.halfMinDecorationHeight) { - yCenter = this.halfMinDecorationHeight; - } - else if (yCenter + this.halfMinDecorationHeight > this.canvasHeight) { - yCenter = this.canvasHeight - this.halfMinDecorationHeight; - } - y1 = Math.round(yCenter - this.halfMinDecorationHeight); - y2 = Math.round(yCenter + this.halfMinDecorationHeight); - } - ctx.fillStyle = colors[annotations[i].type] || null; - ctx.fillRect(0, currentY, this.canvasWidth, y2 - y1); - } - } - var cursor = this.renderer.session.selection.getCursor(); - if (cursor) { - var compensateFold = this.compensateFoldRows(cursor.row, foldData); - var currentY = Math.round((cursor.row - compensateFold) * this.lineHeight * this.heightRatio); - ctx.fillStyle = "rgba(0, 0, 0, 0.5)"; - ctx.fillRect(0, currentY, this.canvasWidth, 2); - } - }; - Decorator.prototype.compensateFoldRows = function (row, foldData) { - var compensateFold = 0; - if (foldData && foldData.length > 0) { - for (var j = 0; j < foldData.length; j++) { - if (row > foldData[j].start.row && row < foldData[j].end.row) { - compensateFold += row - foldData[j].start.row; - } - else if (row >= foldData[j].end.row) { - compensateFold += foldData[j].end.row - foldData[j].start.row; - } - } - } - return compensateFold; - }; - return Decorator; -}()); -oop.implement(Decorator.prototype, EventEmitter); -exports.Decorator = Decorator; - -}); - -ace.define("ace/virtual_renderer",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/config","ace/layer/gutter","ace/layer/marker","ace/layer/text","ace/layer/cursor","ace/scrollbar","ace/scrollbar","ace/scrollbar_custom","ace/scrollbar_custom","ace/renderloop","ace/layer/font_metrics","ace/lib/event_emitter","ace/css/editor-css","ace/layer/decorators","ace/lib/useragent"], function(require, exports, module){"use strict"; -var oop = require("./lib/oop"); -var dom = require("./lib/dom"); -var lang = require("./lib/lang"); -var config = require("./config"); -var GutterLayer = require("./layer/gutter").Gutter; -var MarkerLayer = require("./layer/marker").Marker; -var TextLayer = require("./layer/text").Text; -var CursorLayer = require("./layer/cursor").Cursor; -var HScrollBar = require("./scrollbar").HScrollBar; -var VScrollBar = require("./scrollbar").VScrollBar; -var HScrollBarCustom = require("./scrollbar_custom").HScrollBar; -var VScrollBarCustom = require("./scrollbar_custom").VScrollBar; -var RenderLoop = require("./renderloop").RenderLoop; -var FontMetrics = require("./layer/font_metrics").FontMetrics; -var EventEmitter = require("./lib/event_emitter").EventEmitter; -var editorCss = require("./css/editor-css"); -var Decorator = require("./layer/decorators").Decorator; -var useragent = require("./lib/useragent"); -dom.importCssString(editorCss, "ace_editor.css", false); -var VirtualRenderer = /** @class */ (function () { - function VirtualRenderer(container, theme) { - var _self = this; - this.container = container || dom.createElement("div"); - dom.addCssClass(this.container, "ace_editor"); - if (dom.HI_DPI) - dom.addCssClass(this.container, "ace_hidpi"); - this.setTheme(theme); - if (config.get("useStrictCSP") == null) - config.set("useStrictCSP", false); - this.$gutter = dom.createElement("div"); - this.$gutter.className = "ace_gutter"; - this.container.appendChild(this.$gutter); - this.$gutter.setAttribute("aria-hidden", true); - this.scroller = dom.createElement("div"); - this.scroller.className = "ace_scroller"; - this.container.appendChild(this.scroller); - this.content = dom.createElement("div"); - this.content.className = "ace_content"; - this.scroller.appendChild(this.content); - this.$gutterLayer = new GutterLayer(this.$gutter); - this.$gutterLayer.on("changeGutterWidth", this.onGutterResize.bind(this)); - this.$markerBack = new MarkerLayer(this.content); - var textLayer = this.$textLayer = new TextLayer(this.content); - this.canvas = textLayer.element; - this.$markerFront = new MarkerLayer(this.content); - this.$cursorLayer = new CursorLayer(this.content); - this.$horizScroll = false; - this.$vScroll = false; - this.scrollBar = - this.scrollBarV = new VScrollBar(this.container, this); - this.scrollBarH = new HScrollBar(this.container, this); - this.scrollBarV.on("scroll", function (e) { - if (!_self.$scrollAnimation) - _self.session.setScrollTop(e.data - _self.scrollMargin.top); - }); - this.scrollBarH.on("scroll", function (e) { - if (!_self.$scrollAnimation) - _self.session.setScrollLeft(e.data - _self.scrollMargin.left); - }); - this.scrollTop = 0; - this.scrollLeft = 0; - this.cursorPos = { - row: 0, - column: 0 - }; - this.$fontMetrics = new FontMetrics(this.container); - this.$textLayer.$setFontMetrics(this.$fontMetrics); - this.$textLayer.on("changeCharacterSize", function (e) { - _self.updateCharacterSize(); - _self.onResize(true, _self.gutterWidth, _self.$size.width, _self.$size.height); - _self._signal("changeCharacterSize", e); - }); - this.$size = { - width: 0, - height: 0, - scrollerHeight: 0, - scrollerWidth: 0, - $dirty: true - }; - this.layerConfig = { - width: 1, - padding: 0, - firstRow: 0, - firstRowScreen: 0, - lastRow: 0, - lineHeight: 0, - characterWidth: 0, - minHeight: 1, - maxHeight: 1, - offset: 0, - height: 1, - gutterOffset: 1 - }; - this.scrollMargin = { - left: 0, - right: 0, - top: 0, - bottom: 0, - v: 0, - h: 0 - }; - this.margin = { - left: 0, - right: 0, - top: 0, - bottom: 0, - v: 0, - h: 0 - }; - this.$keepTextAreaAtCursor = !useragent.isIOS; - this.$loop = new RenderLoop(this.$renderChanges.bind(this), this.container.ownerDocument.defaultView); - this.$loop.schedule(this.CHANGE_FULL); - this.updateCharacterSize(); - this.setPadding(4); - this.$addResizeObserver(); - config.resetOptions(this); - config._signal("renderer", this); - } - VirtualRenderer.prototype.updateCharacterSize = function () { - if (this.$textLayer.allowBoldFonts != this.$allowBoldFonts) { - this.$allowBoldFonts = this.$textLayer.allowBoldFonts; - this.setStyle("ace_nobold", !this.$allowBoldFonts); - } - this.layerConfig.characterWidth = - this.characterWidth = this.$textLayer.getCharacterWidth(); - this.layerConfig.lineHeight = - this.lineHeight = this.$textLayer.getLineHeight(); - this.$updatePrintMargin(); - dom.setStyle(this.scroller.style, "line-height", this.lineHeight + "px"); - }; - VirtualRenderer.prototype.setSession = function (session) { - if (this.session) - this.session.doc.off("changeNewLineMode", this.onChangeNewLineMode); - this.session = session; - if (session && this.scrollMargin.top && session.getScrollTop() <= 0) - session.setScrollTop(-this.scrollMargin.top); - this.$cursorLayer.setSession(session); - this.$markerBack.setSession(session); - this.$markerFront.setSession(session); - this.$gutterLayer.setSession(session); - this.$textLayer.setSession(session); - if (!session) - return; - this.$loop.schedule(this.CHANGE_FULL); - this.session.$setFontMetrics(this.$fontMetrics); - this.scrollBarH.scrollLeft = this.scrollBarV.scrollTop = null; - this.onChangeNewLineMode = this.onChangeNewLineMode.bind(this); - this.onChangeNewLineMode(); - this.session.doc.on("changeNewLineMode", this.onChangeNewLineMode); - }; - VirtualRenderer.prototype.updateLines = function (firstRow, lastRow, force) { - if (lastRow === undefined) - lastRow = Infinity; - if (!this.$changedLines) { - this.$changedLines = { - firstRow: firstRow, - lastRow: lastRow - }; - } - else { - if (this.$changedLines.firstRow > firstRow) - this.$changedLines.firstRow = firstRow; - if (this.$changedLines.lastRow < lastRow) - this.$changedLines.lastRow = lastRow; - } - if (this.$changedLines.lastRow < this.layerConfig.firstRow) { - if (force) - this.$changedLines.lastRow = this.layerConfig.lastRow; - else - return; - } - if (this.$changedLines.firstRow > this.layerConfig.lastRow) - return; - this.$loop.schedule(this.CHANGE_LINES); - }; - VirtualRenderer.prototype.onChangeNewLineMode = function () { - this.$loop.schedule(this.CHANGE_TEXT); - this.$textLayer.$updateEolChar(); - this.session.$bidiHandler.setEolChar(this.$textLayer.EOL_CHAR); - }; - VirtualRenderer.prototype.onChangeTabSize = function () { - this.$loop.schedule(this.CHANGE_TEXT | this.CHANGE_MARKER); - this.$textLayer.onChangeTabSize(); - }; - VirtualRenderer.prototype.updateText = function () { - this.$loop.schedule(this.CHANGE_TEXT); - }; - VirtualRenderer.prototype.updateFull = function (force) { - if (force) - this.$renderChanges(this.CHANGE_FULL, true); - else - this.$loop.schedule(this.CHANGE_FULL); - }; - VirtualRenderer.prototype.updateFontSize = function () { - this.$textLayer.checkForSizeChanges(); - }; - VirtualRenderer.prototype.$updateSizeAsync = function () { - if (this.$loop.pending) - this.$size.$dirty = true; - else - this.onResize(); - }; - VirtualRenderer.prototype.onResize = function (force, gutterWidth, width, height) { - if (this.resizing > 2) - return; - else if (this.resizing > 0) - this.resizing++; - else - this.resizing = force ? 1 : 0; - var el = this.container; - if (!height) - height = el.clientHeight || el.scrollHeight; - if (!width) - width = el.clientWidth || el.scrollWidth; - var changes = this.$updateCachedSize(force, gutterWidth, width, height); - if (this.$resizeTimer) - this.$resizeTimer.cancel(); - if (!this.$size.scrollerHeight || (!width && !height)) - return this.resizing = 0; - if (force) - this.$gutterLayer.$padding = null; - if (force) - this.$renderChanges(changes | this.$changes, true); - else - this.$loop.schedule(changes | this.$changes); - if (this.resizing) - this.resizing = 0; - this.scrollBarH.scrollLeft = this.scrollBarV.scrollTop = null; - if (this.$customScrollbar) { - this.$updateCustomScrollbar(true); - } - }; - VirtualRenderer.prototype.$updateCachedSize = function (force, gutterWidth, width, height) { - height -= (this.$extraHeight || 0); - var changes = 0; - var size = this.$size; - var oldSize = { - width: size.width, - height: size.height, - scrollerHeight: size.scrollerHeight, - scrollerWidth: size.scrollerWidth - }; - if (height && (force || size.height != height)) { - size.height = height; - changes |= this.CHANGE_SIZE; - size.scrollerHeight = size.height; - if (this.$horizScroll) - size.scrollerHeight -= this.scrollBarH.getHeight(); - this.scrollBarV.setHeight(size.scrollerHeight); - this.scrollBarV.element.style.bottom = this.scrollBarH.getHeight() + "px"; - changes = changes | this.CHANGE_SCROLL; - } - if (width && (force || size.width != width)) { - changes |= this.CHANGE_SIZE; - size.width = width; - if (gutterWidth == null) - gutterWidth = this.$showGutter ? this.$gutter.offsetWidth : 0; - this.gutterWidth = gutterWidth; - dom.setStyle(this.scrollBarH.element.style, "left", gutterWidth + "px"); - dom.setStyle(this.scroller.style, "left", gutterWidth + this.margin.left + "px"); - size.scrollerWidth = Math.max(0, width - gutterWidth - this.scrollBarV.getWidth() - this.margin.h); - dom.setStyle(this.$gutter.style, "left", this.margin.left + "px"); - var right = this.scrollBarV.getWidth() + "px"; - dom.setStyle(this.scrollBarH.element.style, "right", right); - dom.setStyle(this.scroller.style, "right", right); - dom.setStyle(this.scroller.style, "bottom", this.scrollBarH.getHeight()); - this.scrollBarH.setWidth(size.scrollerWidth); - if (this.session && this.session.getUseWrapMode() && this.adjustWrapLimit() || force) { - changes |= this.CHANGE_FULL; - } - } - size.$dirty = !width || !height; - if (changes) - this._signal("resize", oldSize); - return changes; - }; - VirtualRenderer.prototype.onGutterResize = function (width) { - var gutterWidth = this.$showGutter ? width : 0; - if (gutterWidth != this.gutterWidth) - this.$changes |= this.$updateCachedSize(true, gutterWidth, this.$size.width, this.$size.height); - if (this.session.getUseWrapMode() && this.adjustWrapLimit()) { - this.$loop.schedule(this.CHANGE_FULL); - } - else if (this.$size.$dirty) { - this.$loop.schedule(this.CHANGE_FULL); - } - else { - this.$computeLayerConfig(); - } - }; - VirtualRenderer.prototype.adjustWrapLimit = function () { - var availableWidth = this.$size.scrollerWidth - this.$padding * 2; - var limit = Math.floor(availableWidth / this.characterWidth); - return this.session.adjustWrapLimit(limit, this.$showPrintMargin && this.$printMarginColumn); - }; - VirtualRenderer.prototype.setAnimatedScroll = function (shouldAnimate) { - this.setOption("animatedScroll", shouldAnimate); - }; - VirtualRenderer.prototype.getAnimatedScroll = function () { - return this.$animatedScroll; - }; - VirtualRenderer.prototype.setShowInvisibles = function (showInvisibles) { - this.setOption("showInvisibles", showInvisibles); - this.session.$bidiHandler.setShowInvisibles(showInvisibles); - }; - VirtualRenderer.prototype.getShowInvisibles = function () { - return this.getOption("showInvisibles"); - }; - VirtualRenderer.prototype.getDisplayIndentGuides = function () { - return this.getOption("displayIndentGuides"); - }; - VirtualRenderer.prototype.setDisplayIndentGuides = function (display) { - this.setOption("displayIndentGuides", display); - }; - VirtualRenderer.prototype.getHighlightIndentGuides = function () { - return this.getOption("highlightIndentGuides"); - }; - VirtualRenderer.prototype.setHighlightIndentGuides = function (highlight) { - this.setOption("highlightIndentGuides", highlight); - }; - VirtualRenderer.prototype.setShowPrintMargin = function (showPrintMargin) { - this.setOption("showPrintMargin", showPrintMargin); - }; - VirtualRenderer.prototype.getShowPrintMargin = function () { - return this.getOption("showPrintMargin"); - }; - VirtualRenderer.prototype.setPrintMarginColumn = function (showPrintMargin) { - this.setOption("printMarginColumn", showPrintMargin); - }; - VirtualRenderer.prototype.getPrintMarginColumn = function () { - return this.getOption("printMarginColumn"); - }; - VirtualRenderer.prototype.getShowGutter = function () { - return this.getOption("showGutter"); - }; - VirtualRenderer.prototype.setShowGutter = function (show) { - return this.setOption("showGutter", show); - }; - VirtualRenderer.prototype.getFadeFoldWidgets = function () { - return this.getOption("fadeFoldWidgets"); - }; - VirtualRenderer.prototype.setFadeFoldWidgets = function (show) { - this.setOption("fadeFoldWidgets", show); - }; - VirtualRenderer.prototype.setHighlightGutterLine = function (shouldHighlight) { - this.setOption("highlightGutterLine", shouldHighlight); - }; - VirtualRenderer.prototype.getHighlightGutterLine = function () { - return this.getOption("highlightGutterLine"); - }; - VirtualRenderer.prototype.$updatePrintMargin = function () { - if (!this.$showPrintMargin && !this.$printMarginEl) - return; - if (!this.$printMarginEl) { - var containerEl = dom.createElement("div"); - containerEl.className = "ace_layer ace_print-margin-layer"; - this.$printMarginEl = dom.createElement("div"); - this.$printMarginEl.className = "ace_print-margin"; - containerEl.appendChild(this.$printMarginEl); - this.content.insertBefore(containerEl, this.content.firstChild); - } - var style = this.$printMarginEl.style; - style.left = Math.round(this.characterWidth * this.$printMarginColumn + this.$padding) + "px"; - style.visibility = this.$showPrintMargin ? "visible" : "hidden"; - if (this.session && this.session.$wrap == -1) - this.adjustWrapLimit(); - }; - VirtualRenderer.prototype.getContainerElement = function () { - return this.container; - }; - VirtualRenderer.prototype.getMouseEventTarget = function () { - return this.scroller; - }; - VirtualRenderer.prototype.getTextAreaContainer = function () { - return this.container; - }; - VirtualRenderer.prototype.$moveTextAreaToCursor = function () { - if (this.$isMousePressed) - return; - var style = this.textarea.style; - var composition = this.$composition; - if (!this.$keepTextAreaAtCursor && !composition) { - dom.translate(this.textarea, -100, 0); - return; - } - var pixelPos = this.$cursorLayer.$pixelPos; - if (!pixelPos) - return; - if (composition && composition.markerRange) - pixelPos = this.$cursorLayer.getPixelPosition(composition.markerRange.start, true); - var config = this.layerConfig; - var posTop = pixelPos.top; - var posLeft = pixelPos.left; - posTop -= config.offset; - var h = composition && composition.useTextareaForIME || useragent.isMobile ? this.lineHeight : 1; - if (posTop < 0 || posTop > config.height - h) { - dom.translate(this.textarea, 0, 0); - return; - } - var w = 1; - var maxTop = this.$size.height - h; - if (!composition) { - posTop += this.lineHeight; - } - else { - if (composition.useTextareaForIME) { - var val = this.textarea.value; - w = this.characterWidth * (this.session.$getStringScreenWidth(val)[0]); - } - else { - posTop += this.lineHeight + 2; - } - } - posLeft -= this.scrollLeft; - if (posLeft > this.$size.scrollerWidth - w) - posLeft = this.$size.scrollerWidth - w; - posLeft += this.gutterWidth + this.margin.left; - dom.setStyle(style, "height", h + "px"); - dom.setStyle(style, "width", w + "px"); - dom.translate(this.textarea, Math.min(posLeft, this.$size.scrollerWidth - w), Math.min(posTop, maxTop)); - }; - VirtualRenderer.prototype.getFirstVisibleRow = function () { - return this.layerConfig.firstRow; - }; - VirtualRenderer.prototype.getFirstFullyVisibleRow = function () { - return this.layerConfig.firstRow + (this.layerConfig.offset === 0 ? 0 : 1); - }; - VirtualRenderer.prototype.getLastFullyVisibleRow = function () { - var config = this.layerConfig; - var lastRow = config.lastRow; - var top = this.session.documentToScreenRow(lastRow, 0) * config.lineHeight; - if (top - this.session.getScrollTop() > config.height - config.lineHeight) - return lastRow - 1; - return lastRow; - }; - VirtualRenderer.prototype.getLastVisibleRow = function () { - return this.layerConfig.lastRow; - }; - VirtualRenderer.prototype.setPadding = function (padding) { - this.$padding = padding; - this.$textLayer.setPadding(padding); - this.$cursorLayer.setPadding(padding); - this.$markerFront.setPadding(padding); - this.$markerBack.setPadding(padding); - this.$loop.schedule(this.CHANGE_FULL); - this.$updatePrintMargin(); - }; - VirtualRenderer.prototype.setScrollMargin = function (top, bottom, left, right) { - var sm = this.scrollMargin; - sm.top = top | 0; - sm.bottom = bottom | 0; - sm.right = right | 0; - sm.left = left | 0; - sm.v = sm.top + sm.bottom; - sm.h = sm.left + sm.right; - if (sm.top && this.scrollTop <= 0 && this.session) - this.session.setScrollTop(-sm.top); - this.updateFull(); - }; - VirtualRenderer.prototype.setMargin = function (top, bottom, left, right) { - var sm = this.margin; - sm.top = top | 0; - sm.bottom = bottom | 0; - sm.right = right | 0; - sm.left = left | 0; - sm.v = sm.top + sm.bottom; - sm.h = sm.left + sm.right; - this.$updateCachedSize(true, this.gutterWidth, this.$size.width, this.$size.height); - this.updateFull(); - }; - VirtualRenderer.prototype.getHScrollBarAlwaysVisible = function () { - return this.$hScrollBarAlwaysVisible; - }; - VirtualRenderer.prototype.setHScrollBarAlwaysVisible = function (alwaysVisible) { - this.setOption("hScrollBarAlwaysVisible", alwaysVisible); - }; - VirtualRenderer.prototype.getVScrollBarAlwaysVisible = function () { - return this.$vScrollBarAlwaysVisible; - }; - VirtualRenderer.prototype.setVScrollBarAlwaysVisible = function (alwaysVisible) { - this.setOption("vScrollBarAlwaysVisible", alwaysVisible); - }; - VirtualRenderer.prototype.$updateScrollBarV = function () { - var scrollHeight = this.layerConfig.maxHeight; - var scrollerHeight = this.$size.scrollerHeight; - if (!this.$maxLines && this.$scrollPastEnd) { - scrollHeight -= (scrollerHeight - this.lineHeight) * this.$scrollPastEnd; - if (this.scrollTop > scrollHeight - scrollerHeight) { - scrollHeight = this.scrollTop + scrollerHeight; - this.scrollBarV.scrollTop = null; - } - } - this.scrollBarV.setScrollHeight(scrollHeight + this.scrollMargin.v); - this.scrollBarV.setScrollTop(this.scrollTop + this.scrollMargin.top); - }; - VirtualRenderer.prototype.$updateScrollBarH = function () { - this.scrollBarH.setScrollWidth(this.layerConfig.width + 2 * this.$padding + this.scrollMargin.h); - this.scrollBarH.setScrollLeft(this.scrollLeft + this.scrollMargin.left); - }; - VirtualRenderer.prototype.freeze = function () { - this.$frozen = true; - }; - VirtualRenderer.prototype.unfreeze = function () { - this.$frozen = false; - }; - VirtualRenderer.prototype.$renderChanges = function (changes, force) { - if (this.$changes) { - changes |= this.$changes; - this.$changes = 0; - } - if ((!this.session || !this.container.offsetWidth || this.$frozen) || (!changes && !force)) { - this.$changes |= changes; - return; - } - if (this.$size.$dirty) { - this.$changes |= changes; - return this.onResize(true); - } - if (!this.lineHeight) { - this.$textLayer.checkForSizeChanges(); - } - this._signal("beforeRender", changes); - if (this.session && this.session.$bidiHandler) - this.session.$bidiHandler.updateCharacterWidths(this.$fontMetrics); - var config = this.layerConfig; - if (changes & this.CHANGE_FULL || - changes & this.CHANGE_SIZE || - changes & this.CHANGE_TEXT || - changes & this.CHANGE_LINES || - changes & this.CHANGE_SCROLL || - changes & this.CHANGE_H_SCROLL) { - changes |= this.$computeLayerConfig() | this.$loop.clear(); - if (config.firstRow != this.layerConfig.firstRow && config.firstRowScreen == this.layerConfig.firstRowScreen) { - var st = this.scrollTop + (config.firstRow - Math.max(this.layerConfig.firstRow, 0)) * this.lineHeight; - if (st > 0) { - this.scrollTop = st; - changes = changes | this.CHANGE_SCROLL; - changes |= this.$computeLayerConfig() | this.$loop.clear(); - } - } - config = this.layerConfig; - this.$updateScrollBarV(); - if (changes & this.CHANGE_H_SCROLL) - this.$updateScrollBarH(); - dom.translate(this.content, -this.scrollLeft, -config.offset); - var width = config.width + 2 * this.$padding + "px"; - var height = config.minHeight + "px"; - dom.setStyle(this.content.style, "width", width); - dom.setStyle(this.content.style, "height", height); - } - if (changes & this.CHANGE_H_SCROLL) { - dom.translate(this.content, -this.scrollLeft, -config.offset); - this.scroller.className = this.scrollLeft <= 0 ? "ace_scroller " : "ace_scroller ace_scroll-left "; - if (this.enableKeyboardAccessibility) - this.scroller.className += this.keyboardFocusClassName; - } - if (changes & this.CHANGE_FULL) { - this.$changedLines = null; - this.$textLayer.update(config); - if (this.$showGutter) - this.$gutterLayer.update(config); - if (this.$customScrollbar) { - this.$scrollDecorator.$updateDecorators(config); - } - this.$markerBack.update(config); - this.$markerFront.update(config); - this.$cursorLayer.update(config); - this.$moveTextAreaToCursor(); - this._signal("afterRender", changes); - return; - } - if (changes & this.CHANGE_SCROLL) { - this.$changedLines = null; - if (changes & this.CHANGE_TEXT || changes & this.CHANGE_LINES) - this.$textLayer.update(config); - else - this.$textLayer.scrollLines(config); - if (this.$showGutter) { - if (changes & this.CHANGE_GUTTER || changes & this.CHANGE_LINES) - this.$gutterLayer.update(config); - else - this.$gutterLayer.scrollLines(config); - } - if (this.$customScrollbar) { - this.$scrollDecorator.$updateDecorators(config); - } - this.$markerBack.update(config); - this.$markerFront.update(config); - this.$cursorLayer.update(config); - this.$moveTextAreaToCursor(); - this._signal("afterRender", changes); - return; - } - if (changes & this.CHANGE_TEXT) { - this.$changedLines = null; - this.$textLayer.update(config); - if (this.$showGutter) - this.$gutterLayer.update(config); - if (this.$customScrollbar) { - this.$scrollDecorator.$updateDecorators(config); - } - } - else if (changes & this.CHANGE_LINES) { - if (this.$updateLines() || (changes & this.CHANGE_GUTTER) && this.$showGutter) - this.$gutterLayer.update(config); - if (this.$customScrollbar) { - this.$scrollDecorator.$updateDecorators(config); - } - } - else if (changes & this.CHANGE_TEXT || changes & this.CHANGE_GUTTER) { - if (this.$showGutter) - this.$gutterLayer.update(config); - if (this.$customScrollbar) { - this.$scrollDecorator.$updateDecorators(config); - } - } - else if (changes & this.CHANGE_CURSOR) { - if (this.$highlightGutterLine) - this.$gutterLayer.updateLineHighlight(config); - if (this.$customScrollbar) { - this.$scrollDecorator.$updateDecorators(config); - } - } - if (changes & this.CHANGE_CURSOR) { - this.$cursorLayer.update(config); - this.$moveTextAreaToCursor(); - } - if (changes & (this.CHANGE_MARKER | this.CHANGE_MARKER_FRONT)) { - this.$markerFront.update(config); - } - if (changes & (this.CHANGE_MARKER | this.CHANGE_MARKER_BACK)) { - this.$markerBack.update(config); - } - this._signal("afterRender", changes); - }; - VirtualRenderer.prototype.$autosize = function () { - var height = this.session.getScreenLength() * this.lineHeight; - var maxHeight = this.$maxLines * this.lineHeight; - var desiredHeight = Math.min(maxHeight, Math.max((this.$minLines || 1) * this.lineHeight, height)) + this.scrollMargin.v + (this.$extraHeight || 0); - if (this.$horizScroll) - desiredHeight += this.scrollBarH.getHeight(); - if (this.$maxPixelHeight && desiredHeight > this.$maxPixelHeight) - desiredHeight = this.$maxPixelHeight; - var hideScrollbars = desiredHeight <= 2 * this.lineHeight; - var vScroll = !hideScrollbars && height > maxHeight; - if (desiredHeight != this.desiredHeight || - this.$size.height != this.desiredHeight || vScroll != this.$vScroll) { - if (vScroll != this.$vScroll) { - this.$vScroll = vScroll; - this.scrollBarV.setVisible(vScroll); - } - var w = this.container.clientWidth; - this.container.style.height = desiredHeight + "px"; - this.$updateCachedSize(true, this.$gutterWidth, w, desiredHeight); - this.desiredHeight = desiredHeight; - this._signal("autosize"); - } - }; - VirtualRenderer.prototype.$computeLayerConfig = function () { - var session = this.session; - var size = this.$size; - var hideScrollbars = size.height <= 2 * this.lineHeight; - var screenLines = this.session.getScreenLength(); - var maxHeight = screenLines * this.lineHeight; - var longestLine = this.$getLongestLine(); - var horizScroll = !hideScrollbars && (this.$hScrollBarAlwaysVisible || - size.scrollerWidth - longestLine - 2 * this.$padding < 0); - var hScrollChanged = this.$horizScroll !== horizScroll; - if (hScrollChanged) { - this.$horizScroll = horizScroll; - this.scrollBarH.setVisible(horizScroll); - } - var vScrollBefore = this.$vScroll; // autosize can change vscroll value in which case we need to update longestLine - if (this.$maxLines && this.lineHeight > 1) - this.$autosize(); - var minHeight = size.scrollerHeight + this.lineHeight; - var scrollPastEnd = !this.$maxLines && this.$scrollPastEnd - ? (size.scrollerHeight - this.lineHeight) * this.$scrollPastEnd - : 0; - maxHeight += scrollPastEnd; - var sm = this.scrollMargin; - this.session.setScrollTop(Math.max(-sm.top, Math.min(this.scrollTop, maxHeight - size.scrollerHeight + sm.bottom))); - this.session.setScrollLeft(Math.max(-sm.left, Math.min(this.scrollLeft, longestLine + 2 * this.$padding - size.scrollerWidth + sm.right))); - var vScroll = !hideScrollbars && (this.$vScrollBarAlwaysVisible || - size.scrollerHeight - maxHeight + scrollPastEnd < 0 || this.scrollTop > sm.top); - var vScrollChanged = vScrollBefore !== vScroll; - if (vScrollChanged) { - this.$vScroll = vScroll; - this.scrollBarV.setVisible(vScroll); - } - var offset = this.scrollTop % this.lineHeight; - var lineCount = Math.ceil(minHeight / this.lineHeight) - 1; - var firstRow = Math.max(0, Math.round((this.scrollTop - offset) / this.lineHeight)); - var lastRow = firstRow + lineCount; - var firstRowScreen, firstRowHeight; - var lineHeight = this.lineHeight; - firstRow = session.screenToDocumentRow(firstRow, 0); - var foldLine = session.getFoldLine(firstRow); - if (foldLine) { - firstRow = foldLine.start.row; - } - firstRowScreen = session.documentToScreenRow(firstRow, 0); - firstRowHeight = session.getRowLength(firstRow) * lineHeight; - lastRow = Math.min(session.screenToDocumentRow(lastRow, 0), session.getLength() - 1); - minHeight = size.scrollerHeight + session.getRowLength(lastRow) * lineHeight + - firstRowHeight; - offset = this.scrollTop - firstRowScreen * lineHeight; - var changes = 0; - if (this.layerConfig.width != longestLine || hScrollChanged) - changes = this.CHANGE_H_SCROLL; - if (hScrollChanged || vScrollChanged) { - changes |= this.$updateCachedSize(true, this.gutterWidth, size.width, size.height); - this._signal("scrollbarVisibilityChanged"); - if (vScrollChanged) - longestLine = this.$getLongestLine(); - } - this.layerConfig = { - width: longestLine, - padding: this.$padding, - firstRow: firstRow, - firstRowScreen: firstRowScreen, - lastRow: lastRow, - lineHeight: lineHeight, - characterWidth: this.characterWidth, - minHeight: minHeight, - maxHeight: maxHeight, - offset: offset, - gutterOffset: lineHeight ? Math.max(0, Math.ceil((offset + size.height - size.scrollerHeight) / lineHeight)) : 0, - height: this.$size.scrollerHeight - }; - if (this.session.$bidiHandler) - this.session.$bidiHandler.setContentWidth(longestLine - this.$padding); - return changes; - }; - VirtualRenderer.prototype.$updateLines = function () { - if (!this.$changedLines) - return; - var firstRow = this.$changedLines.firstRow; - var lastRow = this.$changedLines.lastRow; - this.$changedLines = null; - var layerConfig = this.layerConfig; - if (firstRow > layerConfig.lastRow + 1) { - return; - } - if (lastRow < layerConfig.firstRow) { - return; - } - if (lastRow === Infinity) { - if (this.$showGutter) - this.$gutterLayer.update(layerConfig); - this.$textLayer.update(layerConfig); - return; - } - this.$textLayer.updateLines(layerConfig, firstRow, lastRow); - return true; - }; - VirtualRenderer.prototype.$getLongestLine = function () { - var charCount = this.session.getScreenWidth(); - if (this.showInvisibles && !this.session.$useWrapMode) - charCount += 1; - if (this.$textLayer && charCount > this.$textLayer.MAX_LINE_LENGTH) - charCount = this.$textLayer.MAX_LINE_LENGTH + 30; - return Math.max(this.$size.scrollerWidth - 2 * this.$padding, Math.round(charCount * this.characterWidth)); - }; - VirtualRenderer.prototype.updateFrontMarkers = function () { - this.$markerFront.setMarkers(this.session.getMarkers(true)); - this.$loop.schedule(this.CHANGE_MARKER_FRONT); - }; - VirtualRenderer.prototype.updateBackMarkers = function () { - this.$markerBack.setMarkers(this.session.getMarkers()); - this.$loop.schedule(this.CHANGE_MARKER_BACK); - }; - VirtualRenderer.prototype.addGutterDecoration = function (row, className) { - this.$gutterLayer.addGutterDecoration(row, className); - }; - VirtualRenderer.prototype.removeGutterDecoration = function (row, className) { - this.$gutterLayer.removeGutterDecoration(row, className); - }; - VirtualRenderer.prototype.updateBreakpoints = function (rows) { - this.$loop.schedule(this.CHANGE_GUTTER); - }; - VirtualRenderer.prototype.setAnnotations = function (annotations) { - this.$gutterLayer.setAnnotations(annotations); - this.$loop.schedule(this.CHANGE_GUTTER); - }; - VirtualRenderer.prototype.updateCursor = function () { - this.$loop.schedule(this.CHANGE_CURSOR); - }; - VirtualRenderer.prototype.hideCursor = function () { - this.$cursorLayer.hideCursor(); - }; - VirtualRenderer.prototype.showCursor = function () { - this.$cursorLayer.showCursor(); - }; - VirtualRenderer.prototype.scrollSelectionIntoView = function (anchor, lead, offset) { - this.scrollCursorIntoView(anchor, offset); - this.scrollCursorIntoView(lead, offset); - }; - VirtualRenderer.prototype.scrollCursorIntoView = function (cursor, offset, $viewMargin) { - if (this.$size.scrollerHeight === 0) - return; - var pos = this.$cursorLayer.getPixelPosition(cursor); - var newLeft = pos.left; - var newTop = pos.top; - var topMargin = $viewMargin && $viewMargin.top || 0; - var bottomMargin = $viewMargin && $viewMargin.bottom || 0; - if (this.$scrollAnimation) { - this.$stopAnimation = true; - } - var currentTop = this.$scrollAnimation ? this.session.getScrollTop() : this.scrollTop; - if (currentTop + topMargin > newTop) { - if (offset && currentTop + topMargin > newTop + this.lineHeight) - newTop -= offset * this.$size.scrollerHeight; - if (newTop === 0) - newTop = -this.scrollMargin.top; - this.session.setScrollTop(newTop); - } - else if (currentTop + this.$size.scrollerHeight - bottomMargin < newTop + this.lineHeight) { - if (offset && currentTop + this.$size.scrollerHeight - bottomMargin < newTop - this.lineHeight) - newTop += offset * this.$size.scrollerHeight; - this.session.setScrollTop(newTop + this.lineHeight + bottomMargin - this.$size.scrollerHeight); - } - var currentLeft = this.scrollLeft; - var twoCharsWidth = 2 * this.layerConfig.characterWidth; - if (newLeft - twoCharsWidth < currentLeft) { - newLeft -= twoCharsWidth; - if (newLeft < this.$padding + twoCharsWidth) { - newLeft = -this.scrollMargin.left; - } - this.session.setScrollLeft(newLeft); - } - else { - newLeft += twoCharsWidth; - if (currentLeft + this.$size.scrollerWidth < newLeft + this.characterWidth) { - this.session.setScrollLeft(Math.round(newLeft + this.characterWidth - this.$size.scrollerWidth)); - } - else if (currentLeft <= this.$padding && newLeft - currentLeft < this.characterWidth) { - this.session.setScrollLeft(0); - } - } - }; - VirtualRenderer.prototype.getScrollTop = function () { - return this.session.getScrollTop(); - }; - VirtualRenderer.prototype.getScrollLeft = function () { - return this.session.getScrollLeft(); - }; - VirtualRenderer.prototype.getScrollTopRow = function () { - return this.scrollTop / this.lineHeight; - }; - VirtualRenderer.prototype.getScrollBottomRow = function () { - return Math.max(0, Math.floor((this.scrollTop + this.$size.scrollerHeight) / this.lineHeight) - 1); - }; - VirtualRenderer.prototype.scrollToRow = function (row) { - this.session.setScrollTop(row * this.lineHeight); - }; - VirtualRenderer.prototype.alignCursor = function (cursor, alignment) { - if (typeof cursor == "number") - cursor = { row: cursor, column: 0 }; - var pos = this.$cursorLayer.getPixelPosition(cursor); - var h = this.$size.scrollerHeight - this.lineHeight; - var offset = pos.top - h * (alignment || 0); - this.session.setScrollTop(offset); - return offset; - }; - VirtualRenderer.prototype.$calcSteps = function (fromValue, toValue) { - var i = 0; - var l = this.STEPS; - var steps = []; - var func = function (t, x_min, dx) { - return dx * (Math.pow(t - 1, 3) + 1) + x_min; - }; - for (i = 0; i < l; ++i) - steps.push(func(i / this.STEPS, fromValue, toValue - fromValue)); - return steps; - }; - VirtualRenderer.prototype.scrollToLine = function (line, center, animate, callback) { - var pos = this.$cursorLayer.getPixelPosition({ row: line, column: 0 }); - var offset = pos.top; - if (center) - offset -= this.$size.scrollerHeight / 2; - var initialScroll = this.scrollTop; - this.session.setScrollTop(offset); - if (animate !== false) - this.animateScrolling(initialScroll, callback); - }; - VirtualRenderer.prototype.animateScrolling = function (fromValue, callback) { - var toValue = this.scrollTop; - if (!this.$animatedScroll) - return; - var _self = this; - if (fromValue == toValue) - return; - if (this.$scrollAnimation) { - var oldSteps = this.$scrollAnimation.steps; - if (oldSteps.length) { - fromValue = oldSteps[0]; - if (fromValue == toValue) - return; - } - } - var steps = _self.$calcSteps(fromValue, toValue); - this.$scrollAnimation = { from: fromValue, to: toValue, steps: steps }; - clearInterval(this.$timer); - _self.session.setScrollTop(steps.shift()); - _self.session.$scrollTop = toValue; - function endAnimation() { - _self.$timer = clearInterval(_self.$timer); - _self.$scrollAnimation = null; - _self.$stopAnimation = false; - callback && callback(); - } - this.$timer = setInterval(function () { - if (_self.$stopAnimation) { - endAnimation(); - return; - } - if (!_self.session) - return clearInterval(_self.$timer); - if (steps.length) { - _self.session.setScrollTop(steps.shift()); - _self.session.$scrollTop = toValue; - } - else if (toValue != null) { - _self.session.$scrollTop = -1; - _self.session.setScrollTop(toValue); - toValue = null; - } - else { - endAnimation(); - } - }, 10); - }; - VirtualRenderer.prototype.scrollToY = function (scrollTop) { - if (this.scrollTop !== scrollTop) { - this.$loop.schedule(this.CHANGE_SCROLL); - this.scrollTop = scrollTop; - } - }; - VirtualRenderer.prototype.scrollToX = function (scrollLeft) { - if (this.scrollLeft !== scrollLeft) - this.scrollLeft = scrollLeft; - this.$loop.schedule(this.CHANGE_H_SCROLL); - }; - VirtualRenderer.prototype.scrollTo = function (x, y) { - this.session.setScrollTop(y); - this.session.setScrollLeft(x); - }; - VirtualRenderer.prototype.scrollBy = function (deltaX, deltaY) { - deltaY && this.session.setScrollTop(this.session.getScrollTop() + deltaY); - deltaX && this.session.setScrollLeft(this.session.getScrollLeft() + deltaX); - }; - VirtualRenderer.prototype.isScrollableBy = function (deltaX, deltaY) { - if (deltaY < 0 && this.session.getScrollTop() >= 1 - this.scrollMargin.top) - return true; - if (deltaY > 0 && this.session.getScrollTop() + this.$size.scrollerHeight - - this.layerConfig.maxHeight < -1 + this.scrollMargin.bottom) - return true; - if (deltaX < 0 && this.session.getScrollLeft() >= 1 - this.scrollMargin.left) - return true; - if (deltaX > 0 && this.session.getScrollLeft() + this.$size.scrollerWidth - - this.layerConfig.width < -1 + this.scrollMargin.right) - return true; - }; - VirtualRenderer.prototype.pixelToScreenCoordinates = function (x, y) { - var canvasPos; - if (this.$hasCssTransforms) { - canvasPos = { top: 0, left: 0 }; - var p = this.$fontMetrics.transformCoordinates([x, y]); - x = p[1] - this.gutterWidth - this.margin.left; - y = p[0]; - } - else { - canvasPos = this.scroller.getBoundingClientRect(); - } - var offsetX = x + this.scrollLeft - canvasPos.left - this.$padding; - var offset = offsetX / this.characterWidth; - var row = Math.floor((y + this.scrollTop - canvasPos.top) / this.lineHeight); - var col = this.$blockCursor ? Math.floor(offset) : Math.round(offset); - return { row: row, column: col, side: offset - col > 0 ? 1 : -1, offsetX: offsetX }; - }; - VirtualRenderer.prototype.screenToTextCoordinates = function (x, y) { - var canvasPos; - if (this.$hasCssTransforms) { - canvasPos = { top: 0, left: 0 }; - var p = this.$fontMetrics.transformCoordinates([x, y]); - x = p[1] - this.gutterWidth - this.margin.left; - y = p[0]; - } - else { - canvasPos = this.scroller.getBoundingClientRect(); - } - var offsetX = x + this.scrollLeft - canvasPos.left - this.$padding; - var offset = offsetX / this.characterWidth; - var col = this.$blockCursor ? Math.floor(offset) : Math.round(offset); - var row = Math.floor((y + this.scrollTop - canvasPos.top) / this.lineHeight); - return this.session.screenToDocumentPosition(row, Math.max(col, 0), offsetX); - }; - VirtualRenderer.prototype.textToScreenCoordinates = function (row, column) { - var canvasPos = this.scroller.getBoundingClientRect(); - var pos = this.session.documentToScreenPosition(row, column); - var x = this.$padding + (this.session.$bidiHandler.isBidiRow(pos.row, row) - ? this.session.$bidiHandler.getPosLeft(pos.column) - : Math.round(pos.column * this.characterWidth)); - var y = pos.row * this.lineHeight; - return { - pageX: canvasPos.left + x - this.scrollLeft, - pageY: canvasPos.top + y - this.scrollTop - }; - }; - VirtualRenderer.prototype.visualizeFocus = function () { - dom.addCssClass(this.container, "ace_focus"); - }; - VirtualRenderer.prototype.visualizeBlur = function () { - dom.removeCssClass(this.container, "ace_focus"); - }; - VirtualRenderer.prototype.showComposition = function (composition) { - this.$composition = composition; - if (!composition.cssText) { - composition.cssText = this.textarea.style.cssText; - } - if (composition.useTextareaForIME == undefined) - composition.useTextareaForIME = this.$useTextareaForIME; - if (this.$useTextareaForIME) { - dom.addCssClass(this.textarea, "ace_composition"); - this.textarea.style.cssText = ""; - this.$moveTextAreaToCursor(); - this.$cursorLayer.element.style.display = "none"; - } - else { - composition.markerId = this.session.addMarker(composition.markerRange, "ace_composition_marker", "text"); - } - }; - VirtualRenderer.prototype.setCompositionText = function (text) { - var cursor = this.session.selection.cursor; - this.addToken(text, "composition_placeholder", cursor.row, cursor.column); - this.$moveTextAreaToCursor(); - }; - VirtualRenderer.prototype.hideComposition = function () { - if (!this.$composition) - return; - if (this.$composition.markerId) - this.session.removeMarker(this.$composition.markerId); - dom.removeCssClass(this.textarea, "ace_composition"); - this.textarea.style.cssText = this.$composition.cssText; - var cursor = this.session.selection.cursor; - this.removeExtraToken(cursor.row, cursor.column); - this.$composition = null; - this.$cursorLayer.element.style.display = ""; - }; - VirtualRenderer.prototype.setGhostText = function (text, position) { - var cursor = this.session.selection.cursor; - var insertPosition = position || { row: cursor.row, column: cursor.column }; - this.removeGhostText(); - var textLines = text.split("\n"); - this.addToken(textLines[0], "ghost_text", insertPosition.row, insertPosition.column); - this.$ghostText = { - text: text, - position: { - row: insertPosition.row, - column: insertPosition.column - } - }; - if (textLines.length > 1) { - this.$ghostTextWidget = { - text: textLines.slice(1).join("\n"), - row: insertPosition.row, - column: insertPosition.column, - className: "ace_ghost_text" - }; - this.session.widgetManager.addLineWidget(this.$ghostTextWidget); - var pixelPosition = this.$cursorLayer.getPixelPosition(insertPosition, true); - var el = this.container; - var height = el.getBoundingClientRect().height; - var ghostTextHeight = textLines.length * this.lineHeight; - var fitsY = ghostTextHeight < height - pixelPosition.top; - if (fitsY) - return; - if (ghostTextHeight < height) { - this.scrollBy(0, (textLines.length - 1) * this.lineHeight); - } - else { - this.scrollBy(0, pixelPosition.top); - } - } - }; - VirtualRenderer.prototype.removeGhostText = function () { - if (!this.$ghostText) - return; - var position = this.$ghostText.position; - this.removeExtraToken(position.row, position.column); - if (this.$ghostTextWidget) { - this.session.widgetManager.removeLineWidget(this.$ghostTextWidget); - this.$ghostTextWidget = null; - } - this.$ghostText = null; - }; - VirtualRenderer.prototype.addToken = function (text, type, row, column) { - var session = this.session; - session.bgTokenizer.lines[row] = null; - var newToken = { type: type, value: text }; - var tokens = session.getTokens(row); - if (column == null || !tokens.length) { - tokens.push(newToken); - } - else { - var l = 0; - for (var i = 0; i < tokens.length; i++) { - var token = tokens[i]; - l += token.value.length; - if (column <= l) { - var diff = token.value.length - (l - column); - var before = token.value.slice(0, diff); - var after = token.value.slice(diff); - tokens.splice(i, 1, { type: token.type, value: before }, newToken, { type: token.type, value: after }); - break; - } - } - } - this.updateLines(row, row); - }; - VirtualRenderer.prototype.removeExtraToken = function (row, column) { - this.session.bgTokenizer.lines[row] = null; - this.updateLines(row, row); - }; - VirtualRenderer.prototype.setTheme = function (theme, cb) { - var _self = this; - this.$themeId = theme; - _self._dispatchEvent('themeChange', { theme: theme }); - if (!theme || typeof theme == "string") { - var moduleName = theme || this.$options.theme.initialValue; - config.loadModule(["theme", moduleName], afterLoad); - } - else { - afterLoad(theme); - } - function afterLoad(module) { - if (_self.$themeId != theme) - return cb && cb(); - if (!module || !module.cssClass) - throw new Error("couldn't load module " + theme + " or it didn't call define"); - if (module.$id) - _self.$themeId = module.$id; - dom.importCssString(module.cssText, module.cssClass, _self.container); - if (_self.theme) - dom.removeCssClass(_self.container, _self.theme.cssClass); - var padding = "padding" in module ? module.padding - : "padding" in (_self.theme || {}) ? 4 : _self.$padding; - if (_self.$padding && padding != _self.$padding) - _self.setPadding(padding); - _self.$theme = module.cssClass; - _self.theme = module; - dom.addCssClass(_self.container, module.cssClass); - dom.setCssClass(_self.container, "ace_dark", module.isDark); - if (_self.$size) { - _self.$size.width = 0; - _self.$updateSizeAsync(); - } - _self._dispatchEvent('themeLoaded', { theme: module }); - cb && cb(); - } - }; - VirtualRenderer.prototype.getTheme = function () { - return this.$themeId; - }; - VirtualRenderer.prototype.setStyle = function (style, include) { - dom.setCssClass(this.container, style, include !== false); - }; - VirtualRenderer.prototype.unsetStyle = function (style) { - dom.removeCssClass(this.container, style); - }; - VirtualRenderer.prototype.setCursorStyle = function (style) { - dom.setStyle(this.scroller.style, "cursor", style); - }; - VirtualRenderer.prototype.setMouseCursor = function (cursorStyle) { - dom.setStyle(this.scroller.style, "cursor", cursorStyle); - }; - VirtualRenderer.prototype.attachToShadowRoot = function () { - dom.importCssString(editorCss, "ace_editor.css", this.container); - }; - VirtualRenderer.prototype.destroy = function () { - this.freeze(); - this.$fontMetrics.destroy(); - this.$cursorLayer.destroy(); - this.removeAllListeners(); - this.container.textContent = ""; - this.setOption("useResizeObserver", false); - }; - VirtualRenderer.prototype.$updateCustomScrollbar = function (val) { - var _self = this; - this.$horizScroll = this.$vScroll = null; - this.scrollBarV.element.remove(); - this.scrollBarH.element.remove(); - if (this.$scrollDecorator) { - delete this.$scrollDecorator; - } - if (val === true) { - this.scrollBarV = new VScrollBarCustom(this.container, this); - this.scrollBarH = new HScrollBarCustom(this.container, this); - this.scrollBarV.setHeight(this.$size.scrollerHeight); - this.scrollBarH.setWidth(this.$size.scrollerWidth); - this.scrollBarV.addEventListener("scroll", function (e) { - if (!_self.$scrollAnimation) - _self.session.setScrollTop(e.data - _self.scrollMargin.top); - }); - this.scrollBarH.addEventListener("scroll", function (e) { - if (!_self.$scrollAnimation) - _self.session.setScrollLeft(e.data - _self.scrollMargin.left); - }); - this.$scrollDecorator = new Decorator(this.scrollBarV, this); - this.$scrollDecorator.$updateDecorators(); - } - else { - this.scrollBarV = new VScrollBar(this.container, this); - this.scrollBarH = new HScrollBar(this.container, this); - this.scrollBarV.addEventListener("scroll", function (e) { - if (!_self.$scrollAnimation) - _self.session.setScrollTop(e.data - _self.scrollMargin.top); - }); - this.scrollBarH.addEventListener("scroll", function (e) { - if (!_self.$scrollAnimation) - _self.session.setScrollLeft(e.data - _self.scrollMargin.left); - }); - } - }; - VirtualRenderer.prototype.$addResizeObserver = function () { - if (!window.ResizeObserver || this.$resizeObserver) - return; - var self = this; - this.$resizeTimer = lang.delayedCall(function () { - if (!self.destroyed) - self.onResize(); - }, 50); - this.$resizeObserver = new window.ResizeObserver(function (e) { - var w = e[0].contentRect.width; - var h = e[0].contentRect.height; - if (Math.abs(self.$size.width - w) > 1 - || Math.abs(self.$size.height - h) > 1) { - self.$resizeTimer.delay(); - } - else { - self.$resizeTimer.cancel(); - } - }); - this.$resizeObserver.observe(this.container); - }; - return VirtualRenderer; -}()); -VirtualRenderer.prototype.CHANGE_CURSOR = 1; -VirtualRenderer.prototype.CHANGE_MARKER = 2; -VirtualRenderer.prototype.CHANGE_GUTTER = 4; -VirtualRenderer.prototype.CHANGE_SCROLL = 8; -VirtualRenderer.prototype.CHANGE_LINES = 16; -VirtualRenderer.prototype.CHANGE_TEXT = 32; -VirtualRenderer.prototype.CHANGE_SIZE = 64; -VirtualRenderer.prototype.CHANGE_MARKER_BACK = 128; -VirtualRenderer.prototype.CHANGE_MARKER_FRONT = 256; -VirtualRenderer.prototype.CHANGE_FULL = 512; -VirtualRenderer.prototype.CHANGE_H_SCROLL = 1024; -VirtualRenderer.prototype.$changes = 0; -VirtualRenderer.prototype.$padding = null; -VirtualRenderer.prototype.$frozen = false; -VirtualRenderer.prototype.STEPS = 8; -oop.implement(VirtualRenderer.prototype, EventEmitter); -config.defineOptions(VirtualRenderer.prototype, "renderer", { - useResizeObserver: { - set: function (value) { - if (!value && this.$resizeObserver) { - this.$resizeObserver.disconnect(); - this.$resizeTimer.cancel(); - this.$resizeTimer = this.$resizeObserver = null; - } - else if (value && !this.$resizeObserver) { - this.$addResizeObserver(); - } - } - }, - animatedScroll: { initialValue: false }, - showInvisibles: { - set: function (value) { - if (this.$textLayer.setShowInvisibles(value)) - this.$loop.schedule(this.CHANGE_TEXT); - }, - initialValue: false - }, - showPrintMargin: { - set: function () { this.$updatePrintMargin(); }, - initialValue: true - }, - printMarginColumn: { - set: function () { this.$updatePrintMargin(); }, - initialValue: 80 - }, - printMargin: { - set: function (val) { - if (typeof val == "number") - this.$printMarginColumn = val; - this.$showPrintMargin = !!val; - this.$updatePrintMargin(); - }, - get: function () { - return this.$showPrintMargin && this.$printMarginColumn; - } - }, - showGutter: { - set: function (show) { - this.$gutter.style.display = show ? "block" : "none"; - this.$loop.schedule(this.CHANGE_FULL); - this.onGutterResize(); - }, - initialValue: true - }, - useSvgGutterIcons: { - set: function (value) { - this.$gutterLayer.$useSvgGutterIcons = value; - }, - initialValue: false - }, - showFoldedAnnotations: { - set: function (value) { - this.$gutterLayer.$showFoldedAnnotations = value; - }, - initialValue: false - }, - fadeFoldWidgets: { - set: function (show) { - dom.setCssClass(this.$gutter, "ace_fade-fold-widgets", show); - }, - initialValue: false - }, - showFoldWidgets: { - set: function (show) { - this.$gutterLayer.setShowFoldWidgets(show); - this.$loop.schedule(this.CHANGE_GUTTER); - }, - initialValue: true - }, - displayIndentGuides: { - set: function (show) { - if (this.$textLayer.setDisplayIndentGuides(show)) - this.$loop.schedule(this.CHANGE_TEXT); - }, - initialValue: true - }, - highlightIndentGuides: { - set: function (show) { - if (this.$textLayer.setHighlightIndentGuides(show) == true) { - this.$textLayer.$highlightIndentGuide(); - } - else { - this.$textLayer.$clearActiveIndentGuide(this.$textLayer.$lines.cells); - } - }, - initialValue: true - }, - highlightGutterLine: { - set: function (shouldHighlight) { - this.$gutterLayer.setHighlightGutterLine(shouldHighlight); - this.$loop.schedule(this.CHANGE_GUTTER); - }, - initialValue: true - }, - hScrollBarAlwaysVisible: { - set: function (val) { - if (!this.$hScrollBarAlwaysVisible || !this.$horizScroll) - this.$loop.schedule(this.CHANGE_SCROLL); - }, - initialValue: false - }, - vScrollBarAlwaysVisible: { - set: function (val) { - if (!this.$vScrollBarAlwaysVisible || !this.$vScroll) - this.$loop.schedule(this.CHANGE_SCROLL); - }, - initialValue: false - }, - fontSize: { - set: function (size) { - if (typeof size == "number") - size = size + "px"; - this.container.style.fontSize = size; - this.updateFontSize(); - }, - initialValue: 12 - }, - fontFamily: { - set: function (name) { - this.container.style.fontFamily = name; - this.updateFontSize(); - } - }, - maxLines: { - set: function (val) { - this.updateFull(); - } - }, - minLines: { - set: function (val) { - if (!(this.$minLines < 0x1ffffffffffff)) - this.$minLines = 0; - this.updateFull(); - } - }, - maxPixelHeight: { - set: function (val) { - this.updateFull(); - }, - initialValue: 0 - }, - scrollPastEnd: { - set: function (val) { - val = +val || 0; - if (this.$scrollPastEnd == val) - return; - this.$scrollPastEnd = val; - this.$loop.schedule(this.CHANGE_SCROLL); - }, - initialValue: 0, - handlesSet: true - }, - fixedWidthGutter: { - set: function (val) { - this.$gutterLayer.$fixedWidth = !!val; - this.$loop.schedule(this.CHANGE_GUTTER); - } - }, - customScrollbar: { - set: function (val) { - this.$updateCustomScrollbar(val); - }, - initialValue: false - }, - theme: { - set: function (val) { this.setTheme(val); }, - get: function () { return this.$themeId || this.theme; }, - initialValue: "./theme/textmate", - handlesSet: true - }, - hasCssTransforms: {}, - useTextareaForIME: { - initialValue: !useragent.isMobile && !useragent.isIE - } -}); -exports.VirtualRenderer = VirtualRenderer; - -}); - -ace.define("ace/worker/worker_client",["require","exports","module","ace/lib/oop","ace/lib/net","ace/lib/event_emitter","ace/config"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var net = require("../lib/net"); -var EventEmitter = require("../lib/event_emitter").EventEmitter; -var config = require("../config"); - -function $workerBlob(workerUrl) { - var script = "importScripts('" + net.qualifyURL(workerUrl) + "');"; - try { - return new Blob([script], {"type": "application/javascript"}); - } catch (e) { // Backwards-compatibility - var BlobBuilder = window.BlobBuilder || window.WebKitBlobBuilder || window.MozBlobBuilder; - var blobBuilder = new BlobBuilder(); - blobBuilder.append(script); - return blobBuilder.getBlob("application/javascript"); - } -} - -function createWorker(workerUrl) { - if (typeof Worker == "undefined") - return { postMessage: function() {}, terminate: function() {} }; - if (config.get("loadWorkerFromBlob")) { - var blob = $workerBlob(workerUrl); - var URL = window.URL || window.webkitURL; - var blobURL = URL.createObjectURL(blob); - return new Worker(blobURL); - } - return new Worker(workerUrl); -} - -var WorkerClient = function(worker) { - if (!worker.postMessage) - worker = this.$createWorkerFromOldConfig.apply(this, arguments); - - this.$worker = worker; - this.$sendDeltaQueue = this.$sendDeltaQueue.bind(this); - this.changeListener = this.changeListener.bind(this); - this.onMessage = this.onMessage.bind(this); - - this.callbackId = 1; - this.callbacks = {}; - - this.$worker.onmessage = this.onMessage; -}; - -(function(){ - - oop.implement(this, EventEmitter); - - this.$createWorkerFromOldConfig = function(topLevelNamespaces, mod, classname, workerUrl, importScripts) { - if (require.nameToUrl && !require.toUrl) - require.toUrl = require.nameToUrl; - - if (config.get("packaged") || !require.toUrl) { - workerUrl = workerUrl || config.moduleUrl(mod, "worker"); - } else { - var normalizePath = this.$normalizePath; - workerUrl = workerUrl || normalizePath(require.toUrl("ace/worker/worker.js", null, "_")); - - var tlns = {}; - topLevelNamespaces.forEach(function(ns) { - tlns[ns] = normalizePath(require.toUrl(ns, null, "_").replace(/(\.js)?(\?.*)?$/, "")); - }); - } - - this.$worker = createWorker(workerUrl); - if (importScripts) { - this.send("importScripts", importScripts); - } - this.$worker.postMessage({ - init : true, - tlns : tlns, - module : mod, - classname : classname - }); - return this.$worker; - }; - - this.onMessage = function(e) { - var msg = e.data; - switch (msg.type) { - case "event": - this._signal(msg.name, {data: msg.data}); - break; - case "call": - var callback = this.callbacks[msg.id]; - if (callback) { - callback(msg.data); - delete this.callbacks[msg.id]; - } - break; - case "error": - this.reportError(msg.data); - break; - case "log": - window.console && console.log && console.log.apply(console, msg.data); - break; - } - }; - - this.reportError = function(err) { - window.console && console.error && console.error(err); - }; - - this.$normalizePath = function(path) { - return net.qualifyURL(path); - }; - - this.terminate = function() { - this._signal("terminate", {}); - this.deltaQueue = null; - this.$worker.terminate(); - this.$worker.onerror = function(e) { - e.preventDefault(); - }; - this.$worker = null; - if (this.$doc) - this.$doc.off("change", this.changeListener); - this.$doc = null; - }; - - this.send = function(cmd, args) { - this.$worker.postMessage({command: cmd, args: args}); - }; - - this.call = function(cmd, args, callback) { - if (callback) { - var id = this.callbackId++; - this.callbacks[id] = callback; - args.push(id); - } - this.send(cmd, args); - }; - - this.emit = function(event, data) { - try { - if (data.data && data.data.err) - data.data.err = {message: data.data.err.message, stack: data.data.err.stack, code: data.data.err.code}; - this.$worker && this.$worker.postMessage({event: event, data: {data: data.data}}); - } - catch(ex) { - console.error(ex.stack); - } - }; - - this.attachToDocument = function(doc) { - if (this.$doc) - this.terminate(); - - this.$doc = doc; - this.call("setValue", [doc.getValue()]); - doc.on("change", this.changeListener, true); - }; - - this.changeListener = function(delta) { - if (!this.deltaQueue) { - this.deltaQueue = []; - setTimeout(this.$sendDeltaQueue, 0); - } - if (delta.action == "insert") - this.deltaQueue.push(delta.start, delta.lines); - else - this.deltaQueue.push(delta.start, delta.end); - }; - - this.$sendDeltaQueue = function() { - var q = this.deltaQueue; - if (!q) return; - this.deltaQueue = null; - if (q.length > 50 && q.length > this.$doc.getLength() >> 1) { - this.call("setValue", [this.$doc.getValue()]); - } else - this.emit("change", {data: q}); - }; - -}).call(WorkerClient.prototype); - - -var UIWorkerClient = function(topLevelNamespaces, mod, classname) { - var main = null; - var emitSync = false; - var sender = Object.create(EventEmitter); - - var messageBuffer = []; - var workerClient = new WorkerClient({ - messageBuffer: messageBuffer, - terminate: function() {}, - postMessage: function(e) { - messageBuffer.push(e); - if (!main) return; - if (emitSync) - setTimeout(processNext); - else - processNext(); - } - }); - - workerClient.setEmitSync = function(val) { emitSync = val; }; - - var processNext = function() { - var msg = messageBuffer.shift(); - if (msg.command) - main[msg.command].apply(main, msg.args); - else if (msg.event) - sender._signal(msg.event, msg.data); - }; - - sender.postMessage = function(msg) { - workerClient.onMessage({data: msg}); - }; - sender.callback = function(data, callbackId) { - this.postMessage({type: "call", id: callbackId, data: data}); - }; - sender.emit = function(name, data) { - this.postMessage({type: "event", name: name, data: data}); - }; - - config.loadModule(["worker", mod], function(Main) { - main = new Main[classname](sender); - while (messageBuffer.length) - processNext(); - }); - - return workerClient; -}; - -exports.UIWorkerClient = UIWorkerClient; -exports.WorkerClient = WorkerClient; -exports.createWorker = createWorker; - - -}); - -ace.define("ace/placeholder",["require","exports","module","ace/range","ace/lib/event_emitter","ace/lib/oop"], function(require, exports, module){"use strict"; -var Range = require("./range").Range; -var EventEmitter = require("./lib/event_emitter").EventEmitter; -var oop = require("./lib/oop"); -var PlaceHolder = /** @class */ (function () { - function PlaceHolder(session, length, pos, others, mainClass, othersClass) { - var _self = this; - this.length = length; - this.session = session; - this.doc = session.getDocument(); - this.mainClass = mainClass; - this.othersClass = othersClass; - this.$onUpdate = this.onUpdate.bind(this); - this.doc.on("change", this.$onUpdate, true); - this.$others = others; - this.$onCursorChange = function () { - setTimeout(function () { - _self.onCursorChange(); - }); - }; - this.$pos = pos; - var undoStack = session.getUndoManager().$undoStack || session.getUndoManager().$undostack || { length: -1 }; - this.$undoStackDepth = undoStack.length; - this.setup(); - session.selection.on("changeCursor", this.$onCursorChange); - } - PlaceHolder.prototype.setup = function () { - var _self = this; - var doc = this.doc; - var session = this.session; - this.selectionBefore = session.selection.toJSON(); - if (session.selection.inMultiSelectMode) - session.selection.toSingleRange(); - this.pos = doc.createAnchor(this.$pos.row, this.$pos.column); - var pos = this.pos; - pos.$insertRight = true; - pos.detach(); - pos.markerId = session.addMarker(new Range(pos.row, pos.column, pos.row, pos.column + this.length), this.mainClass, null, false); - this.others = []; - this.$others.forEach(function (other) { - var anchor = doc.createAnchor(other.row, other.column); - anchor.$insertRight = true; - anchor.detach(); - _self.others.push(anchor); - }); - session.setUndoSelect(false); - }; - PlaceHolder.prototype.showOtherMarkers = function () { - if (this.othersActive) - return; - var session = this.session; - var _self = this; - this.othersActive = true; - this.others.forEach(function (anchor) { - anchor.markerId = session.addMarker(new Range(anchor.row, anchor.column, anchor.row, anchor.column + _self.length), _self.othersClass, null, false); - }); - }; - PlaceHolder.prototype.hideOtherMarkers = function () { - if (!this.othersActive) - return; - this.othersActive = false; - for (var i = 0; i < this.others.length; i++) { - this.session.removeMarker(this.others[i].markerId); - } - }; - PlaceHolder.prototype.onUpdate = function (delta) { - if (this.$updating) - return this.updateAnchors(delta); - var range = delta; - if (range.start.row !== range.end.row) - return; - if (range.start.row !== this.pos.row) - return; - this.$updating = true; - var lengthDiff = delta.action === "insert" ? range.end.column - range.start.column : range.start.column - range.end.column; - var inMainRange = range.start.column >= this.pos.column && range.start.column <= this.pos.column + this.length + 1; - var distanceFromStart = range.start.column - this.pos.column; - this.updateAnchors(delta); - if (inMainRange) - this.length += lengthDiff; - if (inMainRange && !this.session.$fromUndo) { - if (delta.action === 'insert') { - for (var i = this.others.length - 1; i >= 0; i--) { - var otherPos = this.others[i]; - var newPos = { row: otherPos.row, column: otherPos.column + distanceFromStart }; - this.doc.insertMergedLines(newPos, delta.lines); - } - } - else if (delta.action === 'remove') { - for (var i = this.others.length - 1; i >= 0; i--) { - var otherPos = this.others[i]; - var newPos = { row: otherPos.row, column: otherPos.column + distanceFromStart }; - this.doc.remove(new Range(newPos.row, newPos.column, newPos.row, newPos.column - lengthDiff)); - } - } - } - this.$updating = false; - this.updateMarkers(); - }; - PlaceHolder.prototype.updateAnchors = function (delta) { - this.pos.onChange(delta); - for (var i = this.others.length; i--;) - this.others[i].onChange(delta); - this.updateMarkers(); - }; - PlaceHolder.prototype.updateMarkers = function () { - if (this.$updating) - return; - var _self = this; - var session = this.session; - var updateMarker = function (pos, className) { - session.removeMarker(pos.markerId); - pos.markerId = session.addMarker(new Range(pos.row, pos.column, pos.row, pos.column + _self.length), className, null, false); - }; - updateMarker(this.pos, this.mainClass); - for (var i = this.others.length; i--;) - updateMarker(this.others[i], this.othersClass); - }; - PlaceHolder.prototype.onCursorChange = function (event) { - if (this.$updating || !this.session) - return; - var pos = this.session.selection.getCursor(); - if (pos.row === this.pos.row && pos.column >= this.pos.column && pos.column <= this.pos.column + this.length) { - this.showOtherMarkers(); - this._emit("cursorEnter", event); - } - else { - this.hideOtherMarkers(); - this._emit("cursorLeave", event); - } - }; - PlaceHolder.prototype.detach = function () { - this.session.removeMarker(this.pos && this.pos.markerId); - this.hideOtherMarkers(); - this.doc.off("change", this.$onUpdate); - this.session.selection.off("changeCursor", this.$onCursorChange); - this.session.setUndoSelect(true); - this.session = null; - }; - PlaceHolder.prototype.cancel = function () { - if (this.$undoStackDepth === -1) - return; - var undoManager = this.session.getUndoManager(); - var undosRequired = (undoManager.$undoStack || undoManager.$undostack).length - this.$undoStackDepth; - for (var i = 0; i < undosRequired; i++) { - undoManager.undo(this.session, true); - } - if (this.selectionBefore) - this.session.selection.fromJSON(this.selectionBefore); - }; - return PlaceHolder; -}()); -oop.implement(PlaceHolder.prototype, EventEmitter); -exports.PlaceHolder = PlaceHolder; - -}); - -ace.define("ace/mouse/multi_select_handler",["require","exports","module","ace/lib/event","ace/lib/useragent"], function(require, exports, module){var event = require("../lib/event"); -var useragent = require("../lib/useragent"); -function isSamePoint(p1, p2) { - return p1.row == p2.row && p1.column == p2.column; -} -function onMouseDown(e) { - var ev = e.domEvent; - var alt = ev.altKey; - var shift = ev.shiftKey; - var ctrl = ev.ctrlKey; - var accel = e.getAccelKey(); - var button = e.getButton(); - if (ctrl && useragent.isMac) - button = ev.button; - if (e.editor.inMultiSelectMode && button == 2) { - e.editor.textInput.onContextMenu(e.domEvent); - return; - } - if (!ctrl && !alt && !accel) { - if (button === 0 && e.editor.inMultiSelectMode) - e.editor.exitMultiSelectMode(); - return; - } - if (button !== 0) - return; - var editor = e.editor; - var selection = editor.selection; - var isMultiSelect = editor.inMultiSelectMode; - var pos = e.getDocumentPosition(); - var cursor = selection.getCursor(); - var inSelection = e.inSelection() || (selection.isEmpty() && isSamePoint(pos, cursor)); - var mouseX = e.x, mouseY = e.y; - var onMouseSelection = function (e) { - mouseX = e.clientX; - mouseY = e.clientY; - }; - var session = editor.session; - var screenAnchor = editor.renderer.pixelToScreenCoordinates(mouseX, mouseY); - var screenCursor = screenAnchor; - var selectionMode; - if (editor.$mouseHandler.$enableJumpToDef) { - if (ctrl && alt || accel && alt) - selectionMode = shift ? "block" : "add"; - else if (alt && editor.$blockSelectEnabled) - selectionMode = "block"; - } - else { - if (accel && !alt) { - selectionMode = "add"; - if (!isMultiSelect && shift) - return; - } - else if (alt && editor.$blockSelectEnabled) { - selectionMode = "block"; - } - } - if (selectionMode && useragent.isMac && ev.ctrlKey) { - editor.$mouseHandler.cancelContextMenu(); - } - if (selectionMode == "add") { - if (!isMultiSelect && inSelection) - return; // dragging - if (!isMultiSelect) { - var range = selection.toOrientedRange(); - editor.addSelectionMarker(range); - } - var oldRange = selection.rangeList.rangeAtPoint(pos); - editor.inVirtualSelectionMode = true; - if (shift) { - oldRange = null; - range = selection.ranges[0] || range; - editor.removeSelectionMarker(range); - } - editor.once("mouseup", function () { - var tmpSel = selection.toOrientedRange(); - if (oldRange && tmpSel.isEmpty() && isSamePoint(oldRange.cursor, tmpSel.cursor)) - selection.substractPoint(tmpSel.cursor); - else { - if (shift) { - selection.substractPoint(range.cursor); - } - else if (range) { - editor.removeSelectionMarker(range); - selection.addRange(range); - } - selection.addRange(tmpSel); - } - editor.inVirtualSelectionMode = false; - }); - } - else if (selectionMode == "block") { - e.stop(); - editor.inVirtualSelectionMode = true; - var initialRange; - var rectSel = []; - var blockSelect = function () { - var newCursor = editor.renderer.pixelToScreenCoordinates(mouseX, mouseY); - var cursor = session.screenToDocumentPosition(newCursor.row, newCursor.column, newCursor.offsetX); - if (isSamePoint(screenCursor, newCursor) && isSamePoint(cursor, selection.lead)) - return; - screenCursor = newCursor; - editor.selection.moveToPosition(cursor); - editor.renderer.scrollCursorIntoView(); - editor.removeSelectionMarkers(rectSel); - rectSel = selection.rectangularRangeBlock(screenCursor, screenAnchor); - if (editor.$mouseHandler.$clickSelection && rectSel.length == 1 && rectSel[0].isEmpty()) - rectSel[0] = editor.$mouseHandler.$clickSelection.clone(); - rectSel.forEach(editor.addSelectionMarker, editor); - editor.updateSelectionMarkers(); - }; - if (isMultiSelect && !accel) { - selection.toSingleRange(); - } - else if (!isMultiSelect && accel) { - initialRange = selection.toOrientedRange(); - editor.addSelectionMarker(initialRange); - } - if (shift) - screenAnchor = session.documentToScreenPosition(selection.lead); - else - selection.moveToPosition(pos); - screenCursor = { row: -1, column: -1 }; - var onMouseSelectionEnd = function (e) { - blockSelect(); - clearInterval(timerId); - editor.removeSelectionMarkers(rectSel); - if (!rectSel.length) - rectSel = [selection.toOrientedRange()]; - if (initialRange) { - editor.removeSelectionMarker(initialRange); - selection.toSingleRange(initialRange); - } - for (var i = 0; i < rectSel.length; i++) - selection.addRange(rectSel[i]); - editor.inVirtualSelectionMode = false; - editor.$mouseHandler.$clickSelection = null; - }; - var onSelectionInterval = blockSelect; - event.capture(editor.container, onMouseSelection, onMouseSelectionEnd); - var timerId = setInterval(function () { onSelectionInterval(); }, 20); - return e.preventDefault(); - } -} -exports.onMouseDown = onMouseDown; - -}); - -ace.define("ace/commands/multi_select_commands",["require","exports","module","ace/keyboard/hash_handler"], function(require, exports, module){// commands to enter multiselect mode -exports.defaultCommands = [{ - name: "addCursorAbove", - description: "Add cursor above", - exec: function (editor) { editor.selectMoreLines(-1); }, - bindKey: { win: "Ctrl-Alt-Up", mac: "Ctrl-Alt-Up" }, - scrollIntoView: "cursor", - readOnly: true - }, { - name: "addCursorBelow", - description: "Add cursor below", - exec: function (editor) { editor.selectMoreLines(1); }, - bindKey: { win: "Ctrl-Alt-Down", mac: "Ctrl-Alt-Down" }, - scrollIntoView: "cursor", - readOnly: true - }, { - name: "addCursorAboveSkipCurrent", - description: "Add cursor above (skip current)", - exec: function (editor) { editor.selectMoreLines(-1, true); }, - bindKey: { win: "Ctrl-Alt-Shift-Up", mac: "Ctrl-Alt-Shift-Up" }, - scrollIntoView: "cursor", - readOnly: true - }, { - name: "addCursorBelowSkipCurrent", - description: "Add cursor below (skip current)", - exec: function (editor) { editor.selectMoreLines(1, true); }, - bindKey: { win: "Ctrl-Alt-Shift-Down", mac: "Ctrl-Alt-Shift-Down" }, - scrollIntoView: "cursor", - readOnly: true - }, { - name: "selectMoreBefore", - description: "Select more before", - exec: function (editor) { editor.selectMore(-1); }, - bindKey: { win: "Ctrl-Alt-Left", mac: "Ctrl-Alt-Left" }, - scrollIntoView: "cursor", - readOnly: true - }, { - name: "selectMoreAfter", - description: "Select more after", - exec: function (editor) { editor.selectMore(1); }, - bindKey: { win: "Ctrl-Alt-Right", mac: "Ctrl-Alt-Right" }, - scrollIntoView: "cursor", - readOnly: true - }, { - name: "selectNextBefore", - description: "Select next before", - exec: function (editor) { editor.selectMore(-1, true); }, - bindKey: { win: "Ctrl-Alt-Shift-Left", mac: "Ctrl-Alt-Shift-Left" }, - scrollIntoView: "cursor", - readOnly: true - }, { - name: "selectNextAfter", - description: "Select next after", - exec: function (editor) { editor.selectMore(1, true); }, - bindKey: { win: "Ctrl-Alt-Shift-Right", mac: "Ctrl-Alt-Shift-Right" }, - scrollIntoView: "cursor", - readOnly: true - }, { - name: "toggleSplitSelectionIntoLines", - description: "Split selection into lines", - exec: function (editor) { - if (editor.multiSelect.rangeCount > 1) - editor.multiSelect.joinSelections(); - else - editor.multiSelect.splitIntoLines(); - }, - bindKey: { win: "Ctrl-Alt-L", mac: "Ctrl-Alt-L" }, - readOnly: true - }, { - name: "splitSelectionIntoLines", - description: "Split into lines", - exec: function (editor) { editor.multiSelect.splitIntoLines(); }, - readOnly: true - }, { - name: "alignCursors", - description: "Align cursors", - exec: function (editor) { editor.alignCursors(); }, - bindKey: { win: "Ctrl-Alt-A", mac: "Ctrl-Alt-A" }, - scrollIntoView: "cursor" - }, { - name: "findAll", - description: "Find all", - exec: function (editor) { editor.findAll(); }, - bindKey: { win: "Ctrl-Alt-K", mac: "Ctrl-Alt-G" }, - scrollIntoView: "cursor", - readOnly: true - }]; -exports.multiSelectCommands = [{ - name: "singleSelection", - description: "Single selection", - bindKey: "esc", - exec: function (editor) { editor.exitMultiSelectMode(); }, - scrollIntoView: "cursor", - readOnly: true, - isAvailable: function (editor) { return editor && editor.inMultiSelectMode; } - }]; -var HashHandler = require("../keyboard/hash_handler").HashHandler; -exports.keyboardHandler = new HashHandler(exports.multiSelectCommands); - -}); - -ace.define("ace/multi_select",["require","exports","module","ace/range_list","ace/range","ace/selection","ace/mouse/multi_select_handler","ace/lib/event","ace/lib/lang","ace/commands/multi_select_commands","ace/search","ace/edit_session","ace/editor","ace/config"], function(require, exports, module){var RangeList = require("./range_list").RangeList; -var Range = require("./range").Range; -var Selection = require("./selection").Selection; -var onMouseDown = require("./mouse/multi_select_handler").onMouseDown; -var event = require("./lib/event"); -var lang = require("./lib/lang"); -var commands = require("./commands/multi_select_commands"); -exports.commands = commands.defaultCommands.concat(commands.multiSelectCommands); -var Search = require("./search").Search; -var search = new Search(); -function find(session, needle, dir) { - search.$options.wrap = true; - search.$options.needle = needle; - search.$options.backwards = dir == -1; - return search.find(session); -} -var EditSession = require("./edit_session").EditSession; -(function () { - this.getSelectionMarkers = function () { - return this.$selectionMarkers; - }; -}).call(EditSession.prototype); -(function () { - this.ranges = null; - this.rangeList = null; - this.addRange = function (range, $blockChangeEvents) { - if (!range) - return; - if (!this.inMultiSelectMode && this.rangeCount === 0) { - var oldRange = this.toOrientedRange(); - this.rangeList.add(oldRange); - this.rangeList.add(range); - if (this.rangeList.ranges.length != 2) { - this.rangeList.removeAll(); - return $blockChangeEvents || this.fromOrientedRange(range); - } - this.rangeList.removeAll(); - this.rangeList.add(oldRange); - this.$onAddRange(oldRange); - } - if (!range.cursor) - range.cursor = range.end; - var removed = this.rangeList.add(range); - this.$onAddRange(range); - if (removed.length) - this.$onRemoveRange(removed); - if (this.rangeCount > 1 && !this.inMultiSelectMode) { - this._signal("multiSelect"); - this.inMultiSelectMode = true; - this.session.$undoSelect = false; - this.rangeList.attach(this.session); - } - return $blockChangeEvents || this.fromOrientedRange(range); - }; - this.toSingleRange = function (range) { - range = range || this.ranges[0]; - var removed = this.rangeList.removeAll(); - if (removed.length) - this.$onRemoveRange(removed); - range && this.fromOrientedRange(range); - }; - this.substractPoint = function (pos) { - var removed = this.rangeList.substractPoint(pos); - if (removed) { - this.$onRemoveRange(removed); - return removed[0]; - } - }; - this.mergeOverlappingRanges = function () { - var removed = this.rangeList.merge(); - if (removed.length) - this.$onRemoveRange(removed); - }; - this.$onAddRange = function (range) { - this.rangeCount = this.rangeList.ranges.length; - this.ranges.unshift(range); - this._signal("addRange", { range: range }); - }; - this.$onRemoveRange = function (removed) { - this.rangeCount = this.rangeList.ranges.length; - if (this.rangeCount == 1 && this.inMultiSelectMode) { - var lastRange = this.rangeList.ranges.pop(); - removed.push(lastRange); - this.rangeCount = 0; - } - for (var i = removed.length; i--;) { - var index = this.ranges.indexOf(removed[i]); - this.ranges.splice(index, 1); - } - this._signal("removeRange", { ranges: removed }); - if (this.rangeCount === 0 && this.inMultiSelectMode) { - this.inMultiSelectMode = false; - this._signal("singleSelect"); - this.session.$undoSelect = true; - this.rangeList.detach(this.session); - } - lastRange = lastRange || this.ranges[0]; - if (lastRange && !lastRange.isEqual(this.getRange())) - this.fromOrientedRange(lastRange); - }; - this.$initRangeList = function () { - if (this.rangeList) - return; - this.rangeList = new RangeList(); - this.ranges = []; - this.rangeCount = 0; - }; - this.getAllRanges = function () { - return this.rangeCount ? this.rangeList.ranges.concat() : [this.getRange()]; - }; - this.splitIntoLines = function () { - var ranges = this.ranges.length ? this.ranges : [this.getRange()]; - var newRanges = []; - for (var i = 0; i < ranges.length; i++) { - var range = ranges[i]; - var row = range.start.row; - var endRow = range.end.row; - if (row === endRow) { - newRanges.push(range.clone()); - } - else { - newRanges.push(new Range(row, range.start.column, row, this.session.getLine(row).length)); - while (++row < endRow) - newRanges.push(this.getLineRange(row, true)); - newRanges.push(new Range(endRow, 0, endRow, range.end.column)); - } - if (i == 0 && !this.isBackwards()) - newRanges = newRanges.reverse(); - } - this.toSingleRange(); - for (var i = newRanges.length; i--;) - this.addRange(newRanges[i]); - }; - this.joinSelections = function () { - var ranges = this.rangeList.ranges; - var lastRange = ranges[ranges.length - 1]; - var range = Range.fromPoints(ranges[0].start, lastRange.end); - this.toSingleRange(); - this.setSelectionRange(range, lastRange.cursor == lastRange.start); - }; - this.toggleBlockSelection = function () { - if (this.rangeCount > 1) { - var ranges = this.rangeList.ranges; - var lastRange = ranges[ranges.length - 1]; - var range = Range.fromPoints(ranges[0].start, lastRange.end); - this.toSingleRange(); - this.setSelectionRange(range, lastRange.cursor == lastRange.start); - } - else { - var cursor = this.session.documentToScreenPosition(this.cursor); - var anchor = this.session.documentToScreenPosition(this.anchor); - var rectSel = this.rectangularRangeBlock(cursor, anchor); - rectSel.forEach(this.addRange, this); - } - }; - this.rectangularRangeBlock = function (screenCursor, screenAnchor, includeEmptyLines) { - var rectSel = []; - var xBackwards = screenCursor.column < screenAnchor.column; - if (xBackwards) { - var startColumn = screenCursor.column; - var endColumn = screenAnchor.column; - var startOffsetX = screenCursor.offsetX; - var endOffsetX = screenAnchor.offsetX; - } - else { - var startColumn = screenAnchor.column; - var endColumn = screenCursor.column; - var startOffsetX = screenAnchor.offsetX; - var endOffsetX = screenCursor.offsetX; - } - var yBackwards = screenCursor.row < screenAnchor.row; - if (yBackwards) { - var startRow = screenCursor.row; - var endRow = screenAnchor.row; - } - else { - var startRow = screenAnchor.row; - var endRow = screenCursor.row; - } - if (startColumn < 0) - startColumn = 0; - if (startRow < 0) - startRow = 0; - if (startRow == endRow) - includeEmptyLines = true; - var docEnd; - for (var row = startRow; row <= endRow; row++) { - var range = Range.fromPoints(this.session.screenToDocumentPosition(row, startColumn, startOffsetX), this.session.screenToDocumentPosition(row, endColumn, endOffsetX)); - if (range.isEmpty()) { - if (docEnd && isSamePoint(range.end, docEnd)) - break; - docEnd = range.end; - } - range.cursor = xBackwards ? range.start : range.end; - rectSel.push(range); - } - if (yBackwards) - rectSel.reverse(); - if (!includeEmptyLines) { - var end = rectSel.length - 1; - while (rectSel[end].isEmpty() && end > 0) - end--; - if (end > 0) { - var start = 0; - while (rectSel[start].isEmpty()) - start++; - } - for (var i = end; i >= start; i--) { - if (rectSel[i].isEmpty()) - rectSel.splice(i, 1); - } - } - return rectSel; - }; -}).call(Selection.prototype); -var Editor = require("./editor").Editor; -(function () { - this.updateSelectionMarkers = function () { - this.renderer.updateCursor(); - this.renderer.updateBackMarkers(); - }; - this.addSelectionMarker = function (orientedRange) { - if (!orientedRange.cursor) - orientedRange.cursor = orientedRange.end; - var style = this.getSelectionStyle(); - orientedRange.marker = this.session.addMarker(orientedRange, "ace_selection", style); - this.session.$selectionMarkers.push(orientedRange); - this.session.selectionMarkerCount = this.session.$selectionMarkers.length; - return orientedRange; - }; - this.removeSelectionMarker = function (range) { - if (!range.marker) - return; - this.session.removeMarker(range.marker); - var index = this.session.$selectionMarkers.indexOf(range); - if (index != -1) - this.session.$selectionMarkers.splice(index, 1); - this.session.selectionMarkerCount = this.session.$selectionMarkers.length; - }; - this.removeSelectionMarkers = function (ranges) { - var markerList = this.session.$selectionMarkers; - for (var i = ranges.length; i--;) { - var range = ranges[i]; - if (!range.marker) - continue; - this.session.removeMarker(range.marker); - var index = markerList.indexOf(range); - if (index != -1) - markerList.splice(index, 1); - } - this.session.selectionMarkerCount = markerList.length; - }; - this.$onAddRange = function (e) { - this.addSelectionMarker(e.range); - this.renderer.updateCursor(); - this.renderer.updateBackMarkers(); - }; - this.$onRemoveRange = function (e) { - this.removeSelectionMarkers(e.ranges); - this.renderer.updateCursor(); - this.renderer.updateBackMarkers(); - }; - this.$onMultiSelect = function (e) { - if (this.inMultiSelectMode) - return; - this.inMultiSelectMode = true; - this.setStyle("ace_multiselect"); - this.keyBinding.addKeyboardHandler(commands.keyboardHandler); - this.commands.setDefaultHandler("exec", this.$onMultiSelectExec); - this.renderer.updateCursor(); - this.renderer.updateBackMarkers(); - }; - this.$onSingleSelect = function (e) { - if (this.session.multiSelect.inVirtualMode) - return; - this.inMultiSelectMode = false; - this.unsetStyle("ace_multiselect"); - this.keyBinding.removeKeyboardHandler(commands.keyboardHandler); - this.commands.removeDefaultHandler("exec", this.$onMultiSelectExec); - this.renderer.updateCursor(); - this.renderer.updateBackMarkers(); - this._emit("changeSelection"); - }; - this.$onMultiSelectExec = function (e) { - var command = e.command; - var editor = e.editor; - if (!editor.multiSelect) - return; - if (!command.multiSelectAction) { - var result = command.exec(editor, e.args || {}); - editor.multiSelect.addRange(editor.multiSelect.toOrientedRange()); - editor.multiSelect.mergeOverlappingRanges(); - } - else if (command.multiSelectAction == "forEach") { - result = editor.forEachSelection(command, e.args); - } - else if (command.multiSelectAction == "forEachLine") { - result = editor.forEachSelection(command, e.args, true); - } - else if (command.multiSelectAction == "single") { - editor.exitMultiSelectMode(); - result = command.exec(editor, e.args || {}); - } - else { - result = command.multiSelectAction(editor, e.args || {}); - } - return result; - }; - this.forEachSelection = function (cmd, args, options) { - if (this.inVirtualSelectionMode) - return; - var keepOrder = options && options.keepOrder; - var $byLines = options == true || options && options.$byLines; - var session = this.session; - var selection = this.selection; - var rangeList = selection.rangeList; - var ranges = (keepOrder ? selection : rangeList).ranges; - var result; - if (!ranges.length) - return cmd.exec ? cmd.exec(this, args || {}) : cmd(this, args || {}); - var reg = selection._eventRegistry; - selection._eventRegistry = {}; - var tmpSel = new Selection(session); - this.inVirtualSelectionMode = true; - for (var i = ranges.length; i--;) { - if ($byLines) { - while (i > 0 && ranges[i].start.row == ranges[i - 1].end.row) - i--; - } - tmpSel.fromOrientedRange(ranges[i]); - tmpSel.index = i; - this.selection = session.selection = tmpSel; - var cmdResult = cmd.exec ? cmd.exec(this, args || {}) : cmd(this, args || {}); - if (!result && cmdResult !== undefined) - result = cmdResult; - tmpSel.toOrientedRange(ranges[i]); - } - tmpSel.detach(); - this.selection = session.selection = selection; - this.inVirtualSelectionMode = false; - selection._eventRegistry = reg; - selection.mergeOverlappingRanges(); - if (selection.ranges[0]) - selection.fromOrientedRange(selection.ranges[0]); - var anim = this.renderer.$scrollAnimation; - this.onCursorChange(); - this.onSelectionChange(); - if (anim && anim.from == anim.to) - this.renderer.animateScrolling(anim.from); - return result; - }; - this.exitMultiSelectMode = function () { - if (!this.inMultiSelectMode || this.inVirtualSelectionMode) - return; - this.multiSelect.toSingleRange(); - }; - this.getSelectedText = function () { - var text = ""; - if (this.inMultiSelectMode && !this.inVirtualSelectionMode) { - var ranges = this.multiSelect.rangeList.ranges; - var buf = []; - for (var i = 0; i < ranges.length; i++) { - buf.push(this.session.getTextRange(ranges[i])); - } - var nl = this.session.getDocument().getNewLineCharacter(); - text = buf.join(nl); - if (text.length == (buf.length - 1) * nl.length) - text = ""; - } - else if (!this.selection.isEmpty()) { - text = this.session.getTextRange(this.getSelectionRange()); - } - return text; - }; - this.$checkMultiselectChange = function (e, anchor) { - if (this.inMultiSelectMode && !this.inVirtualSelectionMode) { - var range = this.multiSelect.ranges[0]; - if (this.multiSelect.isEmpty() && anchor == this.multiSelect.anchor) - return; - var pos = anchor == this.multiSelect.anchor - ? range.cursor == range.start ? range.end : range.start - : range.cursor; - if (pos.row != anchor.row - || this.session.$clipPositionToDocument(pos.row, pos.column).column != anchor.column) - this.multiSelect.toSingleRange(this.multiSelect.toOrientedRange()); - else - this.multiSelect.mergeOverlappingRanges(); - } - }; - this.findAll = function (needle, options, additive) { - options = options || {}; - options.needle = needle || options.needle; - if (options.needle == undefined) { - var range = this.selection.isEmpty() - ? this.selection.getWordRange() - : this.selection.getRange(); - options.needle = this.session.getTextRange(range); - } - this.$search.set(options); - var ranges = this.$search.findAll(this.session); - if (!ranges.length) - return 0; - var selection = this.multiSelect; - if (!additive) - selection.toSingleRange(ranges[0]); - for (var i = ranges.length; i--;) - selection.addRange(ranges[i], true); - if (range && selection.rangeList.rangeAtPoint(range.start)) - selection.addRange(range, true); - return ranges.length; - }; - this.selectMoreLines = function (dir, skip) { - var range = this.selection.toOrientedRange(); - var isBackwards = range.cursor == range.end; - var screenLead = this.session.documentToScreenPosition(range.cursor); - if (this.selection.$desiredColumn) - screenLead.column = this.selection.$desiredColumn; - var lead = this.session.screenToDocumentPosition(screenLead.row + dir, screenLead.column); - if (!range.isEmpty()) { - var screenAnchor = this.session.documentToScreenPosition(isBackwards ? range.end : range.start); - var anchor = this.session.screenToDocumentPosition(screenAnchor.row + dir, screenAnchor.column); - } - else { - var anchor = lead; - } - if (isBackwards) { - var newRange = Range.fromPoints(lead, anchor); - newRange.cursor = newRange.start; - } - else { - var newRange = Range.fromPoints(anchor, lead); - newRange.cursor = newRange.end; - } - newRange.desiredColumn = screenLead.column; - if (!this.selection.inMultiSelectMode) { - this.selection.addRange(range); - } - else { - if (skip) - var toRemove = range.cursor; - } - this.selection.addRange(newRange); - if (toRemove) - this.selection.substractPoint(toRemove); - }; - this.transposeSelections = function (dir) { - var session = this.session; - var sel = session.multiSelect; - var all = sel.ranges; - for (var i = all.length; i--;) { - var range = all[i]; - if (range.isEmpty()) { - var tmp = session.getWordRange(range.start.row, range.start.column); - range.start.row = tmp.start.row; - range.start.column = tmp.start.column; - range.end.row = tmp.end.row; - range.end.column = tmp.end.column; - } - } - sel.mergeOverlappingRanges(); - var words = []; - for (var i = all.length; i--;) { - var range = all[i]; - words.unshift(session.getTextRange(range)); - } - if (dir < 0) - words.unshift(words.pop()); - else - words.push(words.shift()); - for (var i = all.length; i--;) { - var range = all[i]; - var tmp = range.clone(); - session.replace(range, words[i]); - range.start.row = tmp.start.row; - range.start.column = tmp.start.column; - } - sel.fromOrientedRange(sel.ranges[0]); - }; - this.selectMore = function (dir, skip, stopAtFirst) { - var session = this.session; - var sel = session.multiSelect; - var range = sel.toOrientedRange(); - if (range.isEmpty()) { - range = session.getWordRange(range.start.row, range.start.column); - range.cursor = dir == -1 ? range.start : range.end; - this.multiSelect.addRange(range); - if (stopAtFirst) - return; - } - var needle = session.getTextRange(range); - var newRange = find(session, needle, dir); - if (newRange) { - newRange.cursor = dir == -1 ? newRange.start : newRange.end; - this.session.unfold(newRange); - this.multiSelect.addRange(newRange); - this.renderer.scrollCursorIntoView(null, 0.5); - } - if (skip) - this.multiSelect.substractPoint(range.cursor); - }; - this.alignCursors = function () { - var session = this.session; - var sel = session.multiSelect; - var ranges = sel.ranges; - var row = -1; - var sameRowRanges = ranges.filter(function (r) { - if (r.cursor.row == row) - return true; - row = r.cursor.row; - }); - if (!ranges.length || sameRowRanges.length == ranges.length - 1) { - var range = this.selection.getRange(); - var fr = range.start.row, lr = range.end.row; - var guessRange = fr == lr; - if (guessRange) { - var max = this.session.getLength(); - var line; - do { - line = this.session.getLine(lr); - } while (/[=:]/.test(line) && ++lr < max); - do { - line = this.session.getLine(fr); - } while (/[=:]/.test(line) && --fr > 0); - if (fr < 0) - fr = 0; - if (lr >= max) - lr = max - 1; - } - var lines = this.session.removeFullLines(fr, lr); - lines = this.$reAlignText(lines, guessRange); - this.session.insert({ row: fr, column: 0 }, lines.join("\n") + "\n"); - if (!guessRange) { - range.start.column = 0; - range.end.column = lines[lines.length - 1].length; - } - this.selection.setRange(range); - } - else { - sameRowRanges.forEach(function (r) { - sel.substractPoint(r.cursor); - }); - var maxCol = 0; - var minSpace = Infinity; - var spaceOffsets = ranges.map(function (r) { - var p = r.cursor; - var line = session.getLine(p.row); - var spaceOffset = line.substr(p.column).search(/\S/g); - if (spaceOffset == -1) - spaceOffset = 0; - if (p.column > maxCol) - maxCol = p.column; - if (spaceOffset < minSpace) - minSpace = spaceOffset; - return spaceOffset; - }); - ranges.forEach(function (r, i) { - var p = r.cursor; - var l = maxCol - p.column; - var d = spaceOffsets[i] - minSpace; - if (l > d) - session.insert(p, lang.stringRepeat(" ", l - d)); - else - session.remove(new Range(p.row, p.column, p.row, p.column - l + d)); - r.start.column = r.end.column = maxCol; - r.start.row = r.end.row = p.row; - r.cursor = r.end; - }); - sel.fromOrientedRange(ranges[0]); - this.renderer.updateCursor(); - this.renderer.updateBackMarkers(); - } - }; - this.$reAlignText = function (lines, forceLeft) { - var isLeftAligned = true, isRightAligned = true; - var startW, textW, endW; - return lines.map(function (line) { - var m = line.match(/(\s*)(.*?)(\s*)([=:].*)/); - if (!m) - return [line]; - if (startW == null) { - startW = m[1].length; - textW = m[2].length; - endW = m[3].length; - return m; - } - if (startW + textW + endW != m[1].length + m[2].length + m[3].length) - isRightAligned = false; - if (startW != m[1].length) - isLeftAligned = false; - if (startW > m[1].length) - startW = m[1].length; - if (textW < m[2].length) - textW = m[2].length; - if (endW > m[3].length) - endW = m[3].length; - return m; - }).map(forceLeft ? alignLeft : - isLeftAligned ? isRightAligned ? alignRight : alignLeft : unAlign); - function spaces(n) { - return lang.stringRepeat(" ", n); - } - function alignLeft(m) { - return !m[2] ? m[0] : spaces(startW) + m[2] - + spaces(textW - m[2].length + endW) - + m[4].replace(/^([=:])\s+/, "$1 "); - } - function alignRight(m) { - return !m[2] ? m[0] : spaces(startW + textW - m[2].length) + m[2] - + spaces(endW) - + m[4].replace(/^([=:])\s+/, "$1 "); - } - function unAlign(m) { - return !m[2] ? m[0] : spaces(startW) + m[2] - + spaces(endW) - + m[4].replace(/^([=:])\s+/, "$1 "); - } - }; -}).call(Editor.prototype); -function isSamePoint(p1, p2) { - return p1.row == p2.row && p1.column == p2.column; -} -exports.onSessionChange = function (e) { - var session = e.session; - if (session && !session.multiSelect) { - session.$selectionMarkers = []; - session.selection.$initRangeList(); - session.multiSelect = session.selection; - } - this.multiSelect = session && session.multiSelect; - var oldSession = e.oldSession; - if (oldSession) { - oldSession.multiSelect.off("addRange", this.$onAddRange); - oldSession.multiSelect.off("removeRange", this.$onRemoveRange); - oldSession.multiSelect.off("multiSelect", this.$onMultiSelect); - oldSession.multiSelect.off("singleSelect", this.$onSingleSelect); - oldSession.multiSelect.lead.off("change", this.$checkMultiselectChange); - oldSession.multiSelect.anchor.off("change", this.$checkMultiselectChange); - } - if (session) { - session.multiSelect.on("addRange", this.$onAddRange); - session.multiSelect.on("removeRange", this.$onRemoveRange); - session.multiSelect.on("multiSelect", this.$onMultiSelect); - session.multiSelect.on("singleSelect", this.$onSingleSelect); - session.multiSelect.lead.on("change", this.$checkMultiselectChange); - session.multiSelect.anchor.on("change", this.$checkMultiselectChange); - } - if (session && this.inMultiSelectMode != session.selection.inMultiSelectMode) { - if (session.selection.inMultiSelectMode) - this.$onMultiSelect(); - else - this.$onSingleSelect(); - } -}; -function MultiSelect(editor) { - if (editor.$multiselectOnSessionChange) - return; - editor.$onAddRange = editor.$onAddRange.bind(editor); - editor.$onRemoveRange = editor.$onRemoveRange.bind(editor); - editor.$onMultiSelect = editor.$onMultiSelect.bind(editor); - editor.$onSingleSelect = editor.$onSingleSelect.bind(editor); - editor.$multiselectOnSessionChange = exports.onSessionChange.bind(editor); - editor.$checkMultiselectChange = editor.$checkMultiselectChange.bind(editor); - editor.$multiselectOnSessionChange(editor); - editor.on("changeSession", editor.$multiselectOnSessionChange); - editor.on("mousedown", onMouseDown); - editor.commands.addCommands(commands.defaultCommands); - addAltCursorListeners(editor); -} -function addAltCursorListeners(editor) { - if (!editor.textInput) - return; - var el = editor.textInput.getElement(); - var altCursor = false; - event.addListener(el, "keydown", function (e) { - var altDown = e.keyCode == 18 && !(e.ctrlKey || e.shiftKey || e.metaKey); - if (editor.$blockSelectEnabled && altDown) { - if (!altCursor) { - editor.renderer.setMouseCursor("crosshair"); - altCursor = true; - } - } - else if (altCursor) { - reset(); - } - }, editor); - event.addListener(el, "keyup", reset, editor); - event.addListener(el, "blur", reset, editor); - function reset(e) { - if (altCursor) { - editor.renderer.setMouseCursor(""); - altCursor = false; - } - } -} -exports.MultiSelect = MultiSelect; -require("./config").defineOptions(Editor.prototype, "editor", { - enableMultiselect: { - set: function (val) { - MultiSelect(this); - if (val) { - this.on("mousedown", onMouseDown); - } - else { - this.off("mousedown", onMouseDown); - } - }, - value: true - }, - enableBlockSelect: { - set: function (val) { - this.$blockSelectEnabled = val; - }, - value: true - } -}); - -}); - -ace.define("ace/mode/folding/fold_mode",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; -var Range = require("../../range").Range; -var FoldMode = exports.FoldMode = function () { }; -(function () { - this.foldingStartMarker = null; - this.foldingStopMarker = null; - this.getFoldWidget = function (session, foldStyle, row) { - var line = session.getLine(row); - if (this.foldingStartMarker.test(line)) - return "start"; - if (foldStyle == "markbeginend" - && this.foldingStopMarker - && this.foldingStopMarker.test(line)) - return "end"; - return ""; - }; - this.getFoldWidgetRange = function (session, foldStyle, row) { - return null; - }; - this.indentationBlock = function (session, row, column) { - var re = /\S/; - var line = session.getLine(row); - var startLevel = line.search(re); - if (startLevel == -1) - return; - var startColumn = column || line.length; - var maxRow = session.getLength(); - var startRow = row; - var endRow = row; - while (++row < maxRow) { - var level = session.getLine(row).search(re); - if (level == -1) - continue; - if (level <= startLevel) { - var token = session.getTokenAt(row, 0); - if (!token || token.type !== "string") - break; - } - endRow = row; - } - if (endRow > startRow) { - var endColumn = session.getLine(endRow).length; - return new Range(startRow, startColumn, endRow, endColumn); - } - }; - this.openingBracketBlock = function (session, bracket, row, column, typeRe) { - var start = { row: row, column: column + 1 }; - var end = session.$findClosingBracket(bracket, start, typeRe); - if (!end) - return; - var fw = session.foldWidgets[end.row]; - if (fw == null) - fw = session.getFoldWidget(end.row); - if (fw == "start" && end.row > start.row) { - end.row--; - end.column = session.getLine(end.row).length; - } - return Range.fromPoints(start, end); - }; - this.closingBracketBlock = function (session, bracket, row, column, typeRe) { - var end = { row: row, column: column }; - var start = session.$findOpeningBracket(bracket, end); - if (!start) - return; - start.column++; - end.column--; - return Range.fromPoints(start, end); - }; -}).call(FoldMode.prototype); - -}); - -ace.define("ace/ext/error_marker",["require","exports","module","ace/line_widgets","ace/lib/dom","ace/range","ace/config"], function(require, exports, module){"use strict"; -var LineWidgets = require("../line_widgets").LineWidgets; -var dom = require("../lib/dom"); -var Range = require("../range").Range; -var nls = require("../config").nls; -function binarySearch(array, needle, comparator) { - var first = 0; - var last = array.length - 1; - while (first <= last) { - var mid = (first + last) >> 1; - var c = comparator(needle, array[mid]); - if (c > 0) - first = mid + 1; - else if (c < 0) - last = mid - 1; - else - return mid; - } - return -(first + 1); -} -function findAnnotations(session, row, dir) { - var annotations = session.getAnnotations().sort(Range.comparePoints); - if (!annotations.length) - return; - var i = binarySearch(annotations, { row: row, column: -1 }, Range.comparePoints); - if (i < 0) - i = -i - 1; - if (i >= annotations.length) - i = dir > 0 ? 0 : annotations.length - 1; - else if (i === 0 && dir < 0) - i = annotations.length - 1; - var annotation = annotations[i]; - if (!annotation || !dir) - return; - if (annotation.row === row) { - do { - annotation = annotations[i += dir]; - } while (annotation && annotation.row === row); - if (!annotation) - return annotations.slice(); - } - var matched = []; - row = annotation.row; - do { - matched[dir < 0 ? "unshift" : "push"](annotation); - annotation = annotations[i += dir]; - } while (annotation && annotation.row == row); - return matched.length && matched; -} -exports.showErrorMarker = function (editor, dir) { - var session = editor.session; - if (!session.widgetManager) { - session.widgetManager = new LineWidgets(session); - session.widgetManager.attach(editor); - } - var pos = editor.getCursorPosition(); - var row = pos.row; - var oldWidget = session.widgetManager.getWidgetsAtRow(row).filter(function (w) { - return w.type == "errorMarker"; - })[0]; - if (oldWidget) { - oldWidget.destroy(); - } - else { - row -= dir; - } - var annotations = findAnnotations(session, row, dir); - var gutterAnno; - if (annotations) { - var annotation = annotations[0]; - pos.column = (annotation.pos && typeof annotation.column != "number" - ? annotation.pos.sc - : annotation.column) || 0; - pos.row = annotation.row; - gutterAnno = editor.renderer.$gutterLayer.$annotations[pos.row]; - } - else if (oldWidget) { - return; - } - else { - gutterAnno = { - text: [nls("Looks good!")], - className: "ace_ok" - }; - } - editor.session.unfold(pos.row); - editor.selection.moveToPosition(pos); - var w = { - row: pos.row, - fixedWidth: true, - coverGutter: true, - el: dom.createElement("div"), - type: "errorMarker" - }; - var el = w.el.appendChild(dom.createElement("div")); - var arrow = w.el.appendChild(dom.createElement("div")); - arrow.className = "error_widget_arrow " + gutterAnno.className; - var left = editor.renderer.$cursorLayer - .getPixelPosition(pos).left; - arrow.style.left = left + editor.renderer.gutterWidth - 5 + "px"; - w.el.className = "error_widget_wrapper"; - el.className = "error_widget " + gutterAnno.className; - el.innerHTML = gutterAnno.text.join("
    "); - el.appendChild(dom.createElement("div")); - var kb = function (_, hashId, keyString) { - if (hashId === 0 && (keyString === "esc" || keyString === "return")) { - w.destroy(); - return { command: "null" }; - } - }; - w.destroy = function () { - if (editor.$mouseHandler.isMousePressed) - return; - editor.keyBinding.removeKeyboardHandler(kb); - session.widgetManager.removeLineWidget(w); - editor.off("changeSelection", w.destroy); - editor.off("changeSession", w.destroy); - editor.off("mouseup", w.destroy); - editor.off("change", w.destroy); - }; - editor.keyBinding.addKeyboardHandler(kb); - editor.on("changeSelection", w.destroy); - editor.on("changeSession", w.destroy); - editor.on("mouseup", w.destroy); - editor.on("change", w.destroy); - editor.session.widgetManager.addLineWidget(w); - w.el.onmousedown = editor.focus.bind(editor); - editor.renderer.scrollCursorIntoView(null, 0.5, { bottom: w.el.offsetHeight }); -}; -dom.importCssString("\n .error_widget_wrapper {\n background: inherit;\n color: inherit;\n border:none\n }\n .error_widget {\n border-top: solid 2px;\n border-bottom: solid 2px;\n margin: 5px 0;\n padding: 10px 40px;\n white-space: pre-wrap;\n }\n .error_widget.ace_error, .error_widget_arrow.ace_error{\n border-color: #ff5a5a\n }\n .error_widget.ace_warning, .error_widget_arrow.ace_warning{\n border-color: #F1D817\n }\n .error_widget.ace_info, .error_widget_arrow.ace_info{\n border-color: #5a5a5a\n }\n .error_widget.ace_ok, .error_widget_arrow.ace_ok{\n border-color: #5aaa5a\n }\n .error_widget_arrow {\n position: absolute;\n border: solid 5px;\n border-top-color: transparent!important;\n border-right-color: transparent!important;\n border-left-color: transparent!important;\n top: -5px;\n }\n", "error_marker.css", false); - -}); - -ace.define("ace/ace",["require","exports","module","ace/lib/dom","ace/range","ace/editor","ace/edit_session","ace/undomanager","ace/virtual_renderer","ace/worker/worker_client","ace/keyboard/hash_handler","ace/placeholder","ace/multi_select","ace/mode/folding/fold_mode","ace/theme/textmate","ace/ext/error_marker","ace/config","ace/loader_build"], function(require, exports, module){/** - * The main class required to set up an Ace instance in the browser. - * - * @class Ace - **/ -"use strict"; -require("./loader_build")(exports) -var dom = require("./lib/dom"); -var Range = require("./range").Range; -var Editor = require("./editor").Editor; -var EditSession = require("./edit_session").EditSession; -var UndoManager = require("./undomanager").UndoManager; -var Renderer = require("./virtual_renderer").VirtualRenderer; -require("./worker/worker_client"); -require("./keyboard/hash_handler"); -require("./placeholder"); -require("./multi_select"); -require("./mode/folding/fold_mode"); -require("./theme/textmate"); -require("./ext/error_marker"); -exports.config = require("./config"); -exports.edit = function (el, options) { - if (typeof el == "string") { - var _id = el; - el = document.getElementById(_id); - if (!el) - throw new Error("ace.edit can't find div #" + _id); - } - if (el && el.env && el.env.editor instanceof Editor) - return el.env.editor; - var value = ""; - if (el && /input|textarea/i.test(el.tagName)) { - var oldNode = el; - value = oldNode.value; - el = dom.createElement("pre"); - oldNode.parentNode.replaceChild(el, oldNode); - } - else if (el) { - value = el.textContent; - el.innerHTML = ""; - } - var doc = exports.createEditSession(value); - var editor = new Editor(new Renderer(el), doc, options); - var env = { - document: doc, - editor: editor, - onResize: editor.resize.bind(editor, null) - }; - if (oldNode) - env.textarea = oldNode; - editor.on("destroy", function () { - env.editor.container.env = null; // prevent memory leak on old ie - }); - editor.container.env = editor.env = env; - return editor; -}; -exports.createEditSession = function (text, mode) { - var doc = new EditSession(text, mode); - doc.setUndoManager(new UndoManager()); - return doc; -}; -exports.Range = Range; -exports.Editor = Editor; -exports.EditSession = EditSession; -exports.UndoManager = UndoManager; -exports.VirtualRenderer = Renderer; -exports.version = exports.config.version; - -}); (function() { - ace.require(["ace/ace"], function(a) { - if (a) { - a.config.init(true); - a.define = ace.define; - } - var global = (function () { - return this; - })(); - if (!global && typeof window != "undefined") global = window; // can happen in strict mode - if (!global && typeof self != "undefined") global = self; // can happen in webworker - - if (!global.ace) - global.ace = a; - for (var key in a) if (a.hasOwnProperty(key)) - global.ace[key] = a[key]; - global.ace["default"] = global.ace; - if ( true && module) { - module.exports = global.ace; - } - }); - })(); - - -/***/ }), - -/***/ 134: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -/* module decorator */ module = __webpack_require__.nmd(module); -ace.define("ace/ext/beautify",["require","exports","module","ace/token_iterator"], function(require, exports, module){// [WIP] -"use strict"; -var TokenIterator = require("../token_iterator").TokenIterator; -function is(token, type) { - return token.type.lastIndexOf(type + ".xml") > -1; -} -exports.singletonTags = ["area", "base", "br", "col", "command", "embed", "hr", "html", "img", "input", "keygen", "link", "meta", "param", "source", "track", "wbr"]; -exports.blockTags = ["article", "aside", "blockquote", "body", "div", "dl", "fieldset", "footer", "form", "head", "header", "html", "nav", "ol", "p", "script", "section", "style", "table", "tbody", "tfoot", "thead", "ul"]; -exports.formatOptions = { - lineBreaksAfterCommasInCurlyBlock: true -}; -exports.beautify = function (session) { - var iterator = new TokenIterator(session, 0, 0); - var token = iterator.getCurrentToken(); - var tabString = session.getTabString(); - var singletonTags = exports.singletonTags; - var blockTags = exports.blockTags; - var formatOptions = exports.formatOptions || {}; - var nextToken; - var breakBefore = false; - var spaceBefore = false; - var spaceAfter = false; - var code = ""; - var value = ""; - var tagName = ""; - var depth = 0; - var lastDepth = 0; - var lastIndent = 0; - var indent = 0; - var unindent = 0; - var roundDepth = 0; - var curlyDepth = 0; - var row; - var curRow = 0; - var rowsToAdd = 0; - var rowTokens = []; - var abort = false; - var i; - var indentNextLine = false; - var inTag = false; - var inCSS = false; - var inBlock = false; - var levels = { 0: 0 }; - var parents = []; - var caseBody = false; - var trimNext = function () { - if (nextToken && nextToken.value && nextToken.type !== 'string.regexp') - nextToken.value = nextToken.value.replace(/^\s*/, ""); - }; - var trimLine = function () { - var end = code.length - 1; - while (true) { - if (end == 0) - break; - if (code[end] !== " ") - break; - end = end - 1; - } - code = code.slice(0, end + 1); - }; - var trimCode = function () { - code = code.trimRight(); - breakBefore = false; - }; - while (token !== null) { - curRow = iterator.getCurrentTokenRow(); - rowTokens = iterator.$rowTokens; - nextToken = iterator.stepForward(); - if (typeof token !== "undefined") { - value = token.value; - unindent = 0; - inCSS = (tagName === "style" || session.$modeId === "ace/mode/css"); - if (is(token, "tag-open")) { - inTag = true; - if (nextToken) - inBlock = (blockTags.indexOf(nextToken.value) !== -1); - if (value === " 0; rowsToAdd--) - code += "\n"; - breakBefore = true; - if (!is(token, "comment") && !token.type.match(/^(comment|string)$/)) - value = value.trimLeft(); - } - if (value) { - if (token.type === "keyword" && value.match(/^(if|else|elseif|for|foreach|while|switch)$/)) { - parents[depth] = value; - trimNext(); - spaceAfter = true; - if (value.match(/^(else|elseif)$/)) { - if (code.match(/\}[\s]*$/)) { - trimCode(); - spaceBefore = true; - } - } - } - else if (token.type === "paren.lparen") { - trimNext(); - if (value.substr(-1) === "{") { - spaceAfter = true; - indentNextLine = false; - if (!inTag) - rowsToAdd = 1; - } - if (value.substr(0, 1) === "{") { - spaceBefore = true; - if (code.substr(-1) !== '[' && code.trimRight().substr(-1) === '[') { - trimCode(); - spaceBefore = false; - } - else if (code.trimRight().substr(-1) === ')') { - trimCode(); - } - else { - trimLine(); - } - } - } - else if (token.type === "paren.rparen") { - unindent = 1; - if (value.substr(0, 1) === "}") { - if (parents[depth - 1] === 'case') - unindent++; - if (code.trimRight().substr(-1) === '{') { - trimCode(); - } - else { - spaceBefore = true; - if (inCSS) - rowsToAdd += 2; - } - } - if (value.substr(0, 1) === "]") { - if (code.substr(-1) !== '}' && code.trimRight().substr(-1) === '}') { - spaceBefore = false; - indent++; - trimCode(); - } - } - if (value.substr(0, 1) === ")") { - if (code.substr(-1) !== '(' && code.trimRight().substr(-1) === '(') { - spaceBefore = false; - indent++; - trimCode(); - } - } - trimLine(); - } - else if ((token.type === "keyword.operator" || token.type === "keyword") && value.match(/^(=|==|===|!=|!==|&&|\|\||and|or|xor|\+=|.=|>|>=|<|<=|=>)$/)) { - trimCode(); - trimNext(); - spaceBefore = true; - spaceAfter = true; - } - else if (token.type === "punctuation.operator" && value === ';') { - trimCode(); - trimNext(); - spaceAfter = true; - if (inCSS) - rowsToAdd++; - } - else if (token.type === "punctuation.operator" && value.match(/^(:|,)$/)) { - trimCode(); - trimNext(); - if (value.match(/^(,)$/) && curlyDepth > 0 && roundDepth === 0 && formatOptions.lineBreaksAfterCommasInCurlyBlock) { - rowsToAdd++; - } - else { - spaceAfter = true; - breakBefore = false; - } - } - else if (token.type === "support.php_tag" && value === "?>" && !breakBefore) { - trimCode(); - spaceBefore = true; - } - else if (is(token, "attribute-name") && code.substr(-1).match(/^\s$/)) { - spaceBefore = true; - } - else if (is(token, "attribute-equals")) { - trimLine(); - trimNext(); - } - else if (is(token, "tag-close")) { - trimLine(); - if (value === "/>") - spaceBefore = true; - } - else if (token.type === "keyword" && value.match(/^(case|default)$/)) { - if (caseBody) - unindent = 1; - } - if (breakBefore && !(token.type.match(/^(comment)$/) && !value.substr(0, 1).match(/^[/#]$/)) && !(token.type.match(/^(string)$/) && !value.substr(0, 1).match(/^['"@]$/))) { - indent = lastIndent; - if (depth > lastDepth) { - indent++; - for (i = depth; i > lastDepth; i--) - levels[i] = indent; - } - else if (depth < lastDepth) - indent = levels[depth]; - lastDepth = depth; - lastIndent = indent; - if (unindent) - indent -= unindent; - if (indentNextLine && !roundDepth) { - indent++; - indentNextLine = false; - } - for (i = 0; i < indent; i++) - code += tabString; - } - if (token.type === "keyword" && value.match(/^(case|default)$/)) { - if (caseBody === false) { - parents[depth] = value; - depth++; - caseBody = true; - } - } - else if (token.type === "keyword" && value.match(/^(break)$/)) { - if (parents[depth - 1] && parents[depth - 1].match(/^(case|default)$/)) { - depth--; - caseBody = false; - } - } - if (token.type === "paren.lparen") { - roundDepth += (value.match(/\(/g) || []).length; - curlyDepth += (value.match(/\{/g) || []).length; - depth += value.length; - } - if (token.type === "keyword" && value.match(/^(if|else|elseif|for|while)$/)) { - indentNextLine = true; - roundDepth = 0; - } - else if (!roundDepth && value.trim() && token.type !== "comment") - indentNextLine = false; - if (token.type === "paren.rparen") { - roundDepth -= (value.match(/\)/g) || []).length; - curlyDepth -= (value.match(/\}/g) || []).length; - for (i = 0; i < value.length; i++) { - depth--; - if (value.substr(i, 1) === '}' && parents[depth] === 'case') { - depth--; - } - } - } - if (token.type == "text") - value = value.replace(/\s+$/, " "); - if (spaceBefore && !breakBefore) { - trimLine(); - if (code.substr(-1) !== "\n") - code += " "; - } - code += value; - if (spaceAfter) - code += " "; - breakBefore = false; - spaceBefore = false; - spaceAfter = false; - if ((is(token, "tag-close") && (inBlock || blockTags.indexOf(tagName) !== -1)) || (is(token, "doctype") && value === ">")) { - if (inBlock && nextToken && nextToken.value === "") { - depth--; - } - } - if (is(token, "tag-name")) { - tagName = value; - } - row = curRow; - } - } - token = nextToken; - } - code = code.trim(); - session.doc.setValue(code); -}; -exports.commands = [{ - name: "beautify", - description: "Format selection (Beautify)", - exec: function (editor) { - exports.beautify(editor.session); - }, - bindKey: "Ctrl-Shift-B" - }]; - -}); (function() { - ace.require(["ace/ext/beautify"], function(m) { - if ( true && module) { - module.exports = m; - } - }); - })(); - - -/***/ }), - -/***/ 604: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -/* module decorator */ module = __webpack_require__.nmd(module); -ace.define("ace/ext/searchbox-css",["require","exports","module"], function(require, exports, module){module.exports = "\n\n/* ------------------------------------------------------------------------------------------\n * Editor Search Form\n * --------------------------------------------------------------------------------------- */\n.ace_search {\n background-color: #ddd;\n color: #666;\n border: 1px solid #cbcbcb;\n border-top: 0 none;\n overflow: hidden;\n margin: 0;\n padding: 4px 6px 0 4px;\n position: absolute;\n top: 0;\n z-index: 99;\n white-space: normal;\n}\n.ace_search.left {\n border-left: 0 none;\n border-radius: 0px 0px 5px 0px;\n left: 0;\n}\n.ace_search.right {\n border-radius: 0px 0px 0px 5px;\n border-right: 0 none;\n right: 0;\n}\n\n.ace_search_form, .ace_replace_form {\n margin: 0 20px 4px 0;\n overflow: hidden;\n line-height: 1.9;\n}\n.ace_replace_form {\n margin-right: 0;\n}\n.ace_search_form.ace_nomatch {\n outline: 1px solid red;\n}\n\n.ace_search_field {\n border-radius: 3px 0 0 3px;\n background-color: white;\n color: black;\n border: 1px solid #cbcbcb;\n border-right: 0 none;\n outline: 0;\n padding: 0;\n font-size: inherit;\n margin: 0;\n line-height: inherit;\n padding: 0 6px;\n min-width: 17em;\n vertical-align: top;\n min-height: 1.8em;\n box-sizing: content-box;\n}\n.ace_searchbtn {\n border: 1px solid #cbcbcb;\n line-height: inherit;\n display: inline-block;\n padding: 0 6px;\n background: #fff;\n border-right: 0 none;\n border-left: 1px solid #dcdcdc;\n cursor: pointer;\n margin: 0;\n position: relative;\n color: #666;\n}\n.ace_searchbtn:last-child {\n border-radius: 0 3px 3px 0;\n border-right: 1px solid #cbcbcb;\n}\n.ace_searchbtn:disabled {\n background: none;\n cursor: default;\n}\n.ace_searchbtn:hover {\n background-color: #eef1f6;\n}\n.ace_searchbtn.prev, .ace_searchbtn.next {\n padding: 0px 0.7em\n}\n.ace_searchbtn.prev:after, .ace_searchbtn.next:after {\n content: \"\";\n border: solid 2px #888;\n width: 0.5em;\n height: 0.5em;\n border-width: 2px 0 0 2px;\n display:inline-block;\n transform: rotate(-45deg);\n}\n.ace_searchbtn.next:after {\n border-width: 0 2px 2px 0 ;\n}\n.ace_searchbtn_close {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAcCAYAAABRVo5BAAAAZ0lEQVR42u2SUQrAMAhDvazn8OjZBilCkYVVxiis8H4CT0VrAJb4WHT3C5xU2a2IQZXJjiQIRMdkEoJ5Q2yMqpfDIo+XY4k6h+YXOyKqTIj5REaxloNAd0xiKmAtsTHqW8sR2W5f7gCu5nWFUpVjZwAAAABJRU5ErkJggg==) no-repeat 50% 0;\n border-radius: 50%;\n border: 0 none;\n color: #656565;\n cursor: pointer;\n font: 16px/16px Arial;\n padding: 0;\n height: 14px;\n width: 14px;\n top: 9px;\n right: 7px;\n position: absolute;\n}\n.ace_searchbtn_close:hover {\n background-color: #656565;\n background-position: 50% 100%;\n color: white;\n}\n\n.ace_button {\n margin-left: 2px;\n cursor: pointer;\n -webkit-user-select: none;\n -moz-user-select: none;\n -o-user-select: none;\n -ms-user-select: none;\n user-select: none;\n overflow: hidden;\n opacity: 0.7;\n border: 1px solid rgba(100,100,100,0.23);\n padding: 1px;\n box-sizing: border-box!important;\n color: black;\n}\n\n.ace_button:hover {\n background-color: #eee;\n opacity:1;\n}\n.ace_button:active {\n background-color: #ddd;\n}\n\n.ace_button.checked {\n border-color: #3399ff;\n opacity:1;\n}\n\n.ace_search_options{\n margin-bottom: 3px;\n text-align: right;\n -webkit-user-select: none;\n -moz-user-select: none;\n -o-user-select: none;\n -ms-user-select: none;\n user-select: none;\n clear: both;\n}\n\n.ace_search_counter {\n float: left;\n font-family: arial;\n padding: 0 8px;\n}"; - -}); - -ace.define("ace/ext/searchbox",["require","exports","module","ace/lib/dom","ace/lib/lang","ace/lib/event","ace/ext/searchbox-css","ace/keyboard/hash_handler","ace/lib/keys","ace/config"], function(require, exports, module){"use strict"; -var dom = require("../lib/dom"); -var lang = require("../lib/lang"); -var event = require("../lib/event"); -var searchboxCss = require("./searchbox-css"); -var HashHandler = require("../keyboard/hash_handler").HashHandler; -var keyUtil = require("../lib/keys"); -var nls = require("../config").nls; -var MAX_COUNT = 999; -dom.importCssString(searchboxCss, "ace_searchbox", false); -var SearchBox = /** @class */ (function () { - function SearchBox(editor, range, showReplaceForm) { - var div = dom.createElement("div"); - dom.buildDom(["div", { class: "ace_search right" }, - ["span", { action: "hide", class: "ace_searchbtn_close" }], - ["div", { class: "ace_search_form" }, - ["input", { class: "ace_search_field", placeholder: nls("Search for"), spellcheck: "false" }], - ["span", { action: "findPrev", class: "ace_searchbtn prev" }, "\u200b"], - ["span", { action: "findNext", class: "ace_searchbtn next" }, "\u200b"], - ["span", { action: "findAll", class: "ace_searchbtn", title: "Alt-Enter" }, nls("All")] - ], - ["div", { class: "ace_replace_form" }, - ["input", { class: "ace_search_field", placeholder: nls("Replace with"), spellcheck: "false" }], - ["span", { action: "replaceAndFindNext", class: "ace_searchbtn" }, nls("Replace")], - ["span", { action: "replaceAll", class: "ace_searchbtn" }, nls("All")] - ], - ["div", { class: "ace_search_options" }, - ["span", { action: "toggleReplace", class: "ace_button", title: nls("Toggle Replace mode"), - style: "float:left;margin-top:-2px;padding:0 5px;" }, "+"], - ["span", { class: "ace_search_counter" }], - ["span", { action: "toggleRegexpMode", class: "ace_button", title: nls("RegExp Search") }, ".*"], - ["span", { action: "toggleCaseSensitive", class: "ace_button", title: nls("CaseSensitive Search") }, "Aa"], - ["span", { action: "toggleWholeWords", class: "ace_button", title: nls("Whole Word Search") }, "\\b"], - ["span", { action: "searchInSelection", class: "ace_button", title: nls("Search In Selection") }, "S"] - ] - ], div); - this.element = div.firstChild; - this.setSession = this.setSession.bind(this); - this.$init(); - this.setEditor(editor); - dom.importCssString(searchboxCss, "ace_searchbox", editor.container); - } - SearchBox.prototype.setEditor = function (editor) { - editor.searchBox = this; - editor.renderer.scroller.appendChild(this.element); - this.editor = editor; - }; - SearchBox.prototype.setSession = function (e) { - this.searchRange = null; - this.$syncOptions(true); - }; - SearchBox.prototype.$initElements = function (sb) { - this.searchBox = sb.querySelector(".ace_search_form"); - this.replaceBox = sb.querySelector(".ace_replace_form"); - this.searchOption = sb.querySelector("[action=searchInSelection]"); - this.replaceOption = sb.querySelector("[action=toggleReplace]"); - this.regExpOption = sb.querySelector("[action=toggleRegexpMode]"); - this.caseSensitiveOption = sb.querySelector("[action=toggleCaseSensitive]"); - this.wholeWordOption = sb.querySelector("[action=toggleWholeWords]"); - this.searchInput = this.searchBox.querySelector(".ace_search_field"); - this.replaceInput = this.replaceBox.querySelector(".ace_search_field"); - this.searchCounter = sb.querySelector(".ace_search_counter"); - }; - SearchBox.prototype.$init = function () { - var sb = this.element; - this.$initElements(sb); - var _this = this; - event.addListener(sb, "mousedown", function (e) { - setTimeout(function () { - _this.activeInput.focus(); - }, 0); - event.stopPropagation(e); - }); - event.addListener(sb, "click", function (e) { - var t = e.target || e.srcElement; - var action = t.getAttribute("action"); - if (action && _this[action]) - _this[action](); - else if (_this.$searchBarKb.commands[action]) - _this.$searchBarKb.commands[action].exec(_this); - event.stopPropagation(e); - }); - event.addCommandKeyListener(sb, function (e, hashId, keyCode) { - var keyString = keyUtil.keyCodeToString(keyCode); - var command = _this.$searchBarKb.findKeyCommand(hashId, keyString); - if (command && command.exec) { - command.exec(_this); - event.stopEvent(e); - } - }); - this.$onChange = lang.delayedCall(function () { - _this.find(false, false); - }); - event.addListener(this.searchInput, "input", function () { - _this.$onChange.schedule(20); - }); - event.addListener(this.searchInput, "focus", function () { - _this.activeInput = _this.searchInput; - _this.searchInput.value && _this.highlight(); - }); - event.addListener(this.replaceInput, "focus", function () { - _this.activeInput = _this.replaceInput; - _this.searchInput.value && _this.highlight(); - }); - }; - SearchBox.prototype.setSearchRange = function (range) { - this.searchRange = range; - if (range) { - this.searchRangeMarker = this.editor.session.addMarker(range, "ace_active-line"); - } - else if (this.searchRangeMarker) { - this.editor.session.removeMarker(this.searchRangeMarker); - this.searchRangeMarker = null; - } - }; - SearchBox.prototype.$syncOptions = function (preventScroll) { - dom.setCssClass(this.replaceOption, "checked", this.searchRange); - dom.setCssClass(this.searchOption, "checked", this.searchOption.checked); - this.replaceOption.textContent = this.replaceOption.checked ? "-" : "+"; - dom.setCssClass(this.regExpOption, "checked", this.regExpOption.checked); - dom.setCssClass(this.wholeWordOption, "checked", this.wholeWordOption.checked); - dom.setCssClass(this.caseSensitiveOption, "checked", this.caseSensitiveOption.checked); - var readOnly = this.editor.getReadOnly(); - this.replaceOption.style.display = readOnly ? "none" : ""; - this.replaceBox.style.display = this.replaceOption.checked && !readOnly ? "" : "none"; - this.find(false, false, preventScroll); - }; - SearchBox.prototype.highlight = function (re) { - this.editor.session.highlight(re || this.editor.$search.$options.re); - this.editor.renderer.updateBackMarkers(); - }; - SearchBox.prototype.find = function (skipCurrent, backwards, preventScroll) { - var range = this.editor.find(this.searchInput.value, { - skipCurrent: skipCurrent, - backwards: backwards, - wrap: true, - regExp: this.regExpOption.checked, - caseSensitive: this.caseSensitiveOption.checked, - wholeWord: this.wholeWordOption.checked, - preventScroll: preventScroll, - range: this.searchRange - }); - var noMatch = !range && this.searchInput.value; - dom.setCssClass(this.searchBox, "ace_nomatch", noMatch); - this.editor._emit("findSearchBox", { match: !noMatch }); - this.highlight(); - this.updateCounter(); - }; - SearchBox.prototype.updateCounter = function () { - var editor = this.editor; - var regex = editor.$search.$options.re; - var supportsUnicodeFlag = regex.unicode; - var all = 0; - var before = 0; - if (regex) { - var value = this.searchRange - ? editor.session.getTextRange(this.searchRange) - : editor.getValue(); - var offset = editor.session.doc.positionToIndex(editor.selection.anchor); - if (this.searchRange) - offset -= editor.session.doc.positionToIndex(this.searchRange.start); - var last = regex.lastIndex = 0; - var m; - while ((m = regex.exec(value))) { - all++; - last = m.index; - if (last <= offset) - before++; - if (all > MAX_COUNT) - break; - if (!m[0]) { - regex.lastIndex = last += lang.skipEmptyMatch(value, last, supportsUnicodeFlag); - if (last >= value.length) - break; - } - } - } - this.searchCounter.textContent = nls("$0 of $1", [before, (all > MAX_COUNT ? MAX_COUNT + "+" : all)]); - }; - SearchBox.prototype.findNext = function () { - this.find(true, false); - }; - SearchBox.prototype.findPrev = function () { - this.find(true, true); - }; - SearchBox.prototype.findAll = function () { - var range = this.editor.findAll(this.searchInput.value, { - regExp: this.regExpOption.checked, - caseSensitive: this.caseSensitiveOption.checked, - wholeWord: this.wholeWordOption.checked - }); - var noMatch = !range && this.searchInput.value; - dom.setCssClass(this.searchBox, "ace_nomatch", noMatch); - this.editor._emit("findSearchBox", { match: !noMatch }); - this.highlight(); - this.hide(); - }; - SearchBox.prototype.replace = function () { - if (!this.editor.getReadOnly()) - this.editor.replace(this.replaceInput.value); - }; - SearchBox.prototype.replaceAndFindNext = function () { - if (!this.editor.getReadOnly()) { - this.editor.replace(this.replaceInput.value); - this.findNext(); - } - }; - SearchBox.prototype.replaceAll = function () { - if (!this.editor.getReadOnly()) - this.editor.replaceAll(this.replaceInput.value); - }; - SearchBox.prototype.hide = function () { - this.active = false; - this.setSearchRange(null); - this.editor.off("changeSession", this.setSession); - this.element.style.display = "none"; - this.editor.keyBinding.removeKeyboardHandler(this.$closeSearchBarKb); - this.editor.focus(); - }; - SearchBox.prototype.show = function (value, isReplace) { - this.active = true; - this.editor.on("changeSession", this.setSession); - this.element.style.display = ""; - this.replaceOption.checked = isReplace; - if (value) - this.searchInput.value = value; - this.searchInput.focus(); - this.searchInput.select(); - this.editor.keyBinding.addKeyboardHandler(this.$closeSearchBarKb); - this.$syncOptions(true); - }; - SearchBox.prototype.isFocused = function () { - var el = document.activeElement; - return el == this.searchInput || el == this.replaceInput; - }; - return SearchBox; -}()); -var $searchBarKb = new HashHandler(); -$searchBarKb.bindKeys({ - "Ctrl-f|Command-f": function (sb) { - var isReplace = sb.isReplace = !sb.isReplace; - sb.replaceBox.style.display = isReplace ? "" : "none"; - sb.replaceOption.checked = false; - sb.$syncOptions(); - sb.searchInput.focus(); - }, - "Ctrl-H|Command-Option-F": function (sb) { - if (sb.editor.getReadOnly()) - return; - sb.replaceOption.checked = true; - sb.$syncOptions(); - sb.replaceInput.focus(); - }, - "Ctrl-G|Command-G": function (sb) { - sb.findNext(); - }, - "Ctrl-Shift-G|Command-Shift-G": function (sb) { - sb.findPrev(); - }, - "esc": function (sb) { - setTimeout(function () { sb.hide(); }); - }, - "Return": function (sb) { - if (sb.activeInput == sb.replaceInput) - sb.replace(); - sb.findNext(); - }, - "Shift-Return": function (sb) { - if (sb.activeInput == sb.replaceInput) - sb.replace(); - sb.findPrev(); - }, - "Alt-Return": function (sb) { - if (sb.activeInput == sb.replaceInput) - sb.replaceAll(); - sb.findAll(); - }, - "Tab": function (sb) { - (sb.activeInput == sb.replaceInput ? sb.searchInput : sb.replaceInput).focus(); - } -}); -$searchBarKb.addCommands([{ - name: "toggleRegexpMode", - bindKey: { win: "Alt-R|Alt-/", mac: "Ctrl-Alt-R|Ctrl-Alt-/" }, - exec: function (sb) { - sb.regExpOption.checked = !sb.regExpOption.checked; - sb.$syncOptions(); - } - }, { - name: "toggleCaseSensitive", - bindKey: { win: "Alt-C|Alt-I", mac: "Ctrl-Alt-R|Ctrl-Alt-I" }, - exec: function (sb) { - sb.caseSensitiveOption.checked = !sb.caseSensitiveOption.checked; - sb.$syncOptions(); - } - }, { - name: "toggleWholeWords", - bindKey: { win: "Alt-B|Alt-W", mac: "Ctrl-Alt-B|Ctrl-Alt-W" }, - exec: function (sb) { - sb.wholeWordOption.checked = !sb.wholeWordOption.checked; - sb.$syncOptions(); - } - }, { - name: "toggleReplace", - exec: function (sb) { - sb.replaceOption.checked = !sb.replaceOption.checked; - sb.$syncOptions(); - } - }, { - name: "searchInSelection", - exec: function (sb) { - sb.searchOption.checked = !sb.searchRange; - sb.setSearchRange(sb.searchOption.checked && sb.editor.getSelectionRange()); - sb.$syncOptions(); - } - }]); -var $closeSearchBarKb = new HashHandler([{ - bindKey: "Esc", - name: "closeSearchBar", - exec: function (editor) { - editor.searchBox.hide(); - } - }]); -SearchBox.prototype.$searchBarKb = $searchBarKb; -SearchBox.prototype.$closeSearchBarKb = $closeSearchBarKb; -exports.SearchBox = SearchBox; -exports.Search = function (editor, isReplace) { - var sb = editor.searchBox || new SearchBox(editor); - sb.show(editor.session.getTextRange(), isReplace); -}; - -}); (function() { - ace.require(["ace/ext/searchbox"], function(m) { - if ( true && module) { - module.exports = m; - } - }); - })(); - - -/***/ }), - -/***/ 549: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -/* module decorator */ module = __webpack_require__.nmd(module); -ace.define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; -var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; -var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|flex-end|flex-start|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom"; -var supportConstantColor = exports.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|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|green|greenyellow|grey|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|magenta|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|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen"; -var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; -var numRe = exports.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))"; -var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; -var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; -var CssHighlightRules = function () { - var keywordMapper = this.createKeywordMapper({ - "support.function": supportFunction, - "support.constant": supportConstant, - "support.type": supportType, - "support.constant.color": supportConstantColor, - "support.constant.fonts": supportConstantFonts - }, "text", true); - this.$rules = { - "start": [{ - include: ["strings", "url", "comments"] - }, { - token: "paren.lparen", - regex: "\\{", - next: "ruleset" - }, { - token: "paren.rparen", - regex: "\\}" - }, { - token: "string", - regex: "@(?!viewport)", - next: "media" - }, { - token: "keyword", - regex: "#[a-z0-9-_]+" - }, { - token: "keyword", - regex: "%" - }, { - token: "variable", - regex: "\\.[a-z0-9-_]+" - }, { - token: "string", - regex: ":[a-z0-9-_]+" - }, { - token: "constant.numeric", - regex: numRe - }, { - token: "constant", - regex: "[a-z0-9-_]+" - }, { - caseInsensitive: true - }], - "media": [{ - include: ["strings", "url", "comments"] - }, { - token: "paren.lparen", - regex: "\\{", - next: "start" - }, { - token: "paren.rparen", - regex: "\\}", - next: "start" - }, { - token: "string", - regex: ";", - next: "start" - }, { - token: "keyword", - regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" - + "|page|font|keyframes|viewport|counter-style|font-feature-values" - + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" - }], - "comments": [{ - token: "comment", - regex: "\\/\\*", - push: [{ - token: "comment", - regex: "\\*\\/", - next: "pop" - }, { - defaultToken: "comment" - }] - }], - "ruleset": [{ - regex: "-(webkit|ms|moz|o)-", - token: "text" - }, { - token: "punctuation.operator", - regex: "[:;]" - }, { - token: "paren.rparen", - regex: "\\}", - next: "start" - }, { - include: ["strings", "url", "comments"] - }, { - token: ["constant.numeric", "keyword"], - regex: "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)" - }, { - token: "constant.numeric", - regex: numRe - }, { - token: "constant.numeric", - regex: "#[a-f0-9]{6}" - }, { - token: "constant.numeric", - regex: "#[a-f0-9]{3}" - }, { - token: ["punctuation", "entity.other.attribute-name.pseudo-element.css"], - regex: pseudoElements - }, { - token: ["punctuation", "entity.other.attribute-name.pseudo-class.css"], - regex: pseudoClasses - }, { - include: "url" - }, { - token: keywordMapper, - regex: "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" - }, { - caseInsensitive: true - }], - url: [{ - token: "support.function", - regex: "(?:url(:?-prefix)?|domain|regexp)\\(", - push: [{ - token: "support.function", - regex: "\\)", - next: "pop" - }, { - defaultToken: "string" - }] - }], - strings: [{ - token: "string.start", - regex: "'", - push: [{ - token: "string.end", - regex: "'|$", - next: "pop" - }, { - include: "escapes" - }, { - token: "constant.language.escape", - regex: /\\$/, - consumeLineEnd: true - }, { - defaultToken: "string" - }] - }, { - token: "string.start", - regex: '"', - push: [{ - token: "string.end", - regex: '"|$', - next: "pop" - }, { - include: "escapes" - }, { - token: "constant.language.escape", - regex: /\\$/, - consumeLineEnd: true - }, { - defaultToken: "string" - }] - }], - escapes: [{ - token: "constant.language.escape", - regex: /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ - }] - }; - this.normalizeRules(); -}; -oop.inherits(CssHighlightRules, TextHighlightRules); -exports.CssHighlightRules = CssHighlightRules; - -}); - -ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; -var Range = require("../range").Range; -var MatchingBraceOutdent = function () { }; -(function () { - this.checkOutdent = function (line, input) { - if (!/^\s+$/.test(line)) - return false; - return /^\s*\}/.test(input); - }; - this.autoOutdent = function (doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - if (!match) - return 0; - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({ row: row, column: column }); - if (!openBracePos || openBracePos.row == row) - return 0; - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column - 1), indent); - }; - this.$getIndent = function (line) { - return line.match(/^\s*/)[0]; - }; -}).call(MatchingBraceOutdent.prototype); -exports.MatchingBraceOutdent = MatchingBraceOutdent; - -}); - -ace.define("ace/mode/css_completions",["require","exports","module"], function(require, exports, module){"use strict"; -var propertyMap = { - "background": { "#$0": 1 }, - "background-color": { "#$0": 1, "transparent": 1, "fixed": 1 }, - "background-image": { "url('/$0')": 1 }, - "background-repeat": { "repeat": 1, "repeat-x": 1, "repeat-y": 1, "no-repeat": 1, "inherit": 1 }, - "background-position": { "bottom": 2, "center": 2, "left": 2, "right": 2, "top": 2, "inherit": 2 }, - "background-attachment": { "scroll": 1, "fixed": 1 }, - "background-size": { "cover": 1, "contain": 1 }, - "background-clip": { "border-box": 1, "padding-box": 1, "content-box": 1 }, - "background-origin": { "border-box": 1, "padding-box": 1, "content-box": 1 }, - "border": { "solid $0": 1, "dashed $0": 1, "dotted $0": 1, "#$0": 1 }, - "border-color": { "#$0": 1 }, - "border-style": { "solid": 2, "dashed": 2, "dotted": 2, "double": 2, "groove": 2, "hidden": 2, "inherit": 2, "inset": 2, "none": 2, "outset": 2, "ridged": 2 }, - "border-collapse": { "collapse": 1, "separate": 1 }, - "bottom": { "px": 1, "em": 1, "%": 1 }, - "clear": { "left": 1, "right": 1, "both": 1, "none": 1 }, - "color": { "#$0": 1, "rgb(#$00,0,0)": 1 }, - "cursor": { "default": 1, "pointer": 1, "move": 1, "text": 1, "wait": 1, "help": 1, "progress": 1, "n-resize": 1, "ne-resize": 1, "e-resize": 1, "se-resize": 1, "s-resize": 1, "sw-resize": 1, "w-resize": 1, "nw-resize": 1 }, - "display": { "none": 1, "block": 1, "inline": 1, "inline-block": 1, "table-cell": 1 }, - "empty-cells": { "show": 1, "hide": 1 }, - "float": { "left": 1, "right": 1, "none": 1 }, - "font-family": { "Arial": 2, "Comic Sans MS": 2, "Consolas": 2, "Courier New": 2, "Courier": 2, "Georgia": 2, "Monospace": 2, "Sans-Serif": 2, "Segoe UI": 2, "Tahoma": 2, "Times New Roman": 2, "Trebuchet MS": 2, "Verdana": 1 }, - "font-size": { "px": 1, "em": 1, "%": 1 }, - "font-weight": { "bold": 1, "normal": 1 }, - "font-style": { "italic": 1, "normal": 1 }, - "font-variant": { "normal": 1, "small-caps": 1 }, - "height": { "px": 1, "em": 1, "%": 1 }, - "left": { "px": 1, "em": 1, "%": 1 }, - "letter-spacing": { "normal": 1 }, - "line-height": { "normal": 1 }, - "list-style-type": { "none": 1, "disc": 1, "circle": 1, "square": 1, "decimal": 1, "decimal-leading-zero": 1, "lower-roman": 1, "upper-roman": 1, "lower-greek": 1, "lower-latin": 1, "upper-latin": 1, "georgian": 1, "lower-alpha": 1, "upper-alpha": 1 }, - "margin": { "px": 1, "em": 1, "%": 1 }, - "margin-right": { "px": 1, "em": 1, "%": 1 }, - "margin-left": { "px": 1, "em": 1, "%": 1 }, - "margin-top": { "px": 1, "em": 1, "%": 1 }, - "margin-bottom": { "px": 1, "em": 1, "%": 1 }, - "max-height": { "px": 1, "em": 1, "%": 1 }, - "max-width": { "px": 1, "em": 1, "%": 1 }, - "min-height": { "px": 1, "em": 1, "%": 1 }, - "min-width": { "px": 1, "em": 1, "%": 1 }, - "overflow": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 }, - "overflow-x": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 }, - "overflow-y": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 }, - "padding": { "px": 1, "em": 1, "%": 1 }, - "padding-top": { "px": 1, "em": 1, "%": 1 }, - "padding-right": { "px": 1, "em": 1, "%": 1 }, - "padding-bottom": { "px": 1, "em": 1, "%": 1 }, - "padding-left": { "px": 1, "em": 1, "%": 1 }, - "page-break-after": { "auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1 }, - "page-break-before": { "auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1 }, - "position": { "absolute": 1, "relative": 1, "fixed": 1, "static": 1 }, - "right": { "px": 1, "em": 1, "%": 1 }, - "table-layout": { "fixed": 1, "auto": 1 }, - "text-decoration": { "none": 1, "underline": 1, "line-through": 1, "blink": 1 }, - "text-align": { "left": 1, "right": 1, "center": 1, "justify": 1 }, - "text-transform": { "capitalize": 1, "uppercase": 1, "lowercase": 1, "none": 1 }, - "top": { "px": 1, "em": 1, "%": 1 }, - "vertical-align": { "top": 1, "bottom": 1 }, - "visibility": { "hidden": 1, "visible": 1 }, - "white-space": { "nowrap": 1, "normal": 1, "pre": 1, "pre-line": 1, "pre-wrap": 1 }, - "width": { "px": 1, "em": 1, "%": 1 }, - "word-spacing": { "normal": 1 }, - "filter": { "alpha(opacity=$0100)": 1 }, - "text-shadow": { "$02px 2px 2px #777": 1 }, - "text-overflow": { "ellipsis-word": 1, "clip": 1, "ellipsis": 1 }, - "-moz-border-radius": 1, - "-moz-border-radius-topright": 1, - "-moz-border-radius-bottomright": 1, - "-moz-border-radius-topleft": 1, - "-moz-border-radius-bottomleft": 1, - "-webkit-border-radius": 1, - "-webkit-border-top-right-radius": 1, - "-webkit-border-top-left-radius": 1, - "-webkit-border-bottom-right-radius": 1, - "-webkit-border-bottom-left-radius": 1, - "-moz-box-shadow": 1, - "-webkit-box-shadow": 1, - "transform": { "rotate($00deg)": 1, "skew($00deg)": 1 }, - "-moz-transform": { "rotate($00deg)": 1, "skew($00deg)": 1 }, - "-webkit-transform": { "rotate($00deg)": 1, "skew($00deg)": 1 } -}; -var CssCompletions = function () { -}; -(function () { - this.completionsDefined = false; - this.defineCompletions = function () { - if (document) { - var style = document.createElement('c').style; - for (var i in style) { - if (typeof style[i] !== 'string') - continue; - var name = i.replace(/[A-Z]/g, function (x) { - return '-' + x.toLowerCase(); - }); - if (!propertyMap.hasOwnProperty(name)) - propertyMap[name] = 1; - } - } - this.completionsDefined = true; - }; - this.getCompletions = function (state, session, pos, prefix) { - if (!this.completionsDefined) { - this.defineCompletions(); - } - if (state === 'ruleset' || session.$mode.$id == "ace/mode/scss") { - var line = session.getLine(pos.row).substr(0, pos.column); - var inParens = /\([^)]*$/.test(line); - if (inParens) { - line = line.substr(line.lastIndexOf('(') + 1); - } - if (/:[^;]+$/.test(line)) { - /([\w\-]+):[^:]*$/.test(line); - return this.getPropertyValueCompletions(state, session, pos, prefix); - } - else { - return this.getPropertyCompletions(state, session, pos, prefix, inParens); - } - } - return []; - }; - this.getPropertyCompletions = function (state, session, pos, prefix, skipSemicolon) { - skipSemicolon = skipSemicolon || false; - var properties = Object.keys(propertyMap); - return properties.map(function (property) { - return { - caption: property, - snippet: property + ': $0' + (skipSemicolon ? '' : ';'), - meta: "property", - score: 1000000 - }; - }); - }; - this.getPropertyValueCompletions = function (state, session, pos, prefix) { - var line = session.getLine(pos.row).substr(0, pos.column); - var property = (/([\w\-]+):[^:]*$/.exec(line) || {})[1]; - if (!property) - return []; - var values = []; - if (property in propertyMap && typeof propertyMap[property] === "object") { - values = Object.keys(propertyMap[property]); - } - return values.map(function (value) { - return { - caption: value, - snippet: value, - meta: "property value", - score: 1000000 - }; - }); - }; -}).call(CssCompletions.prototype); -exports.CssCompletions = CssCompletions; - -}); - -ace.define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"], function(require, exports, module){"use strict"; -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var CstyleBehaviour = require("./cstyle").CstyleBehaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; -var CssBehaviour = function () { - this.inherit(CstyleBehaviour); - this.add("colon", "insertion", function (state, action, editor, session, text) { - if (text === ':' && editor.selection.isEmpty()) { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - if (token && token.value.match(/\s+/)) { - token = iterator.stepBackward(); - } - if (token && token.type === 'support.type') { - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === ':') { - return { - text: '', - selection: [1, 1] - }; - } - if (/^(\s+[^;]|\s*$)/.test(line.substring(cursor.column))) { - return { - text: ':;', - selection: [1, 1] - }; - } - } - } - }); - this.add("colon", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected === ':') { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - if (token && token.value.match(/\s+/)) { - token = iterator.stepBackward(); - } - if (token && token.type === 'support.type') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.end.column, range.end.column + 1); - if (rightChar === ';') { - range.end.column++; - return range; - } - } - } - }); - this.add("semicolon", "insertion", function (state, action, editor, session, text) { - if (text === ';' && editor.selection.isEmpty()) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === ';') { - return { - text: '', - selection: [1, 1] - }; - } - } - }); - this.add("!important", "insertion", function (state, action, editor, session, text) { - if (text === '!' && editor.selection.isEmpty()) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (/^\s*(;|}|$)/.test(line.substring(cursor.column))) { - return { - text: '!important', - selection: [10, 10] - }; - } - } - }); -}; -oop.inherits(CssBehaviour, CstyleBehaviour); -exports.CssBehaviour = CssBehaviour; - -}); - -ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; -var FoldMode = exports.FoldMode = function (commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); - this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); - } -}; -oop.inherits(FoldMode, BaseFoldMode); -(function () { - this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; - this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; - this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; - this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function (session, foldStyle, row) { - var line = session.getLine(row); - if (this.singleLineBlockCommentRe.test(line)) { - if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) - return ""; - } - var fw = this._getFoldWidgetBase(session, foldStyle, row); - if (!fw && this.startRegionRe.test(line)) - return "start"; // lineCommentRegionStart - return fw; - }; - this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - if (this.startRegionRe.test(line)) - return this.getCommentRegionBlock(session, line, row); - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } - else if (foldStyle != "all") - range = null; - } - return range; - } - if (foldStyle === "markbegin") - return; - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - return session.getCommentFoldRange(row, i, -1); - } - }; - this.getSectionRange = function (session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } - else if (subRange.isMultiLine()) { - row = subRange.end.row; - } - else if (startIndent == indent) { - break; - } - } - endRow = row; - } - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - this.getCommentRegionBlock = function (session, line, row) { - var startColumn = line.search(/\s*$/); - var maxRow = session.getLength(); - var startRow = row; - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; - var depth = 1; - while (++row < maxRow) { - line = session.getLine(row); - var m = re.exec(line); - if (!m) - continue; - if (m[1]) - depth--; - else - depth++; - if (!depth) - break; - } - var endRow = row; - if (endRow > startRow) { - return new Range(startRow, startColumn, endRow, line.length); - } - }; -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var WorkerClient = require("../worker/worker_client").WorkerClient; -var CssCompletions = require("./css_completions").CssCompletions; -var CssBehaviour = require("./behaviour/css").CssBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; -var Mode = function () { - this.HighlightRules = CssHighlightRules; - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CssBehaviour(); - this.$completer = new CssCompletions(); - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); -(function () { - this.foldingRules = "cStyle"; - this.blockComment = { start: "/*", end: "*/" }; - this.getNextLineIndent = function (state, line, tab) { - var indent = this.$getIndent(line); - var tokens = this.getTokenizer().getLineTokens(line, state).tokens; - if (tokens.length && tokens[tokens.length - 1].type == "comment") { - return indent; - } - var match = line.match(/^.*\{\s*$/); - if (match) { - indent += tab; - } - return indent; - }; - this.checkOutdent = function (state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - this.autoOutdent = function (state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - this.getCompletions = function (state, session, pos, prefix) { - return this.$completer.getCompletions(state, session, pos, prefix); - }; - this.createWorker = function (session) { - var worker = new WorkerClient(["ace"], "ace/mode/css_worker", "Worker"); - worker.attachToDocument(session.getDocument()); - worker.on("annotate", function (e) { - session.setAnnotations(e.data); - }); - worker.on("terminate", function () { - session.clearAnnotations(); - }); - return worker; - }; - this.$id = "ace/mode/css"; - this.snippetFileId = "ace/snippets/css"; -}).call(Mode.prototype); -exports.Mode = Mode; - -}); (function() { - ace.require(["ace/mode/css"], function(m) { - if ( true && module) { - module.exports = m; - } - }); - })(); - - -/***/ }), - -/***/ 576: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -/* module decorator */ module = __webpack_require__.nmd(module); -ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var DocCommentHighlightRules = function () { - this.$rules = { - "start": [ - { - token: "comment.doc.tag", - regex: "@\\w+(?=\\s|$)" - }, DocCommentHighlightRules.getTagRule(), { - defaultToken: "comment.doc", - caseInsensitive: true - } - ] - }; -}; -oop.inherits(DocCommentHighlightRules, TextHighlightRules); -DocCommentHighlightRules.getTagRule = function (start) { - return { - token: "comment.doc.tag.storage.type", - regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b" - }; -}; -DocCommentHighlightRules.getStartRule = function (start) { - return { - token: "comment.doc", - regex: "\\/\\*(?=\\*)", - next: start - }; -}; -DocCommentHighlightRules.getEndRule = function (start) { - return { - token: "comment.doc", - regex: "\\*\\/", - next: start - }; -}; -exports.DocCommentHighlightRules = DocCommentHighlightRules; - -}); - -ace.define("ace/mode/golang_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module){var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var GolangHighlightRules = function () { - var keywords = ("else|break|case|return|goto|if|const|select|" + - "continue|struct|default|switch|for|range|" + - "func|import|package|chan|defer|fallthrough|go|interface|map|range|" + - "select|type|var"); - var builtinTypes = ("string|uint8|uint16|uint32|uint64|int8|int16|int32|int64|float32|" + - "float64|complex64|complex128|byte|rune|uint|int|uintptr|bool|error"); - var builtinFunctions = ("new|close|cap|copy|panic|panicln|print|println|len|make|delete|real|recover|imag|append"); - var builtinConstants = ("nil|true|false|iota"); - var keywordMapper = this.createKeywordMapper({ - "keyword": keywords, - "constant.language": builtinConstants, - "support.function": builtinFunctions, - "support.type": builtinTypes - }, ""); - var stringEscapeRe = "\\\\(?:[0-7]{3}|x\\h{2}|u{4}|U\\h{6}|[abfnrtv'\"\\\\])".replace(/\\h/g, "[a-fA-F\\d]"); - this.$rules = { - "start": [ - { - token: "comment", - regex: "\\/\\/.*$" - }, - DocCommentHighlightRules.getStartRule("doc-start"), - { - token: "comment.start", - regex: "\\/\\*", - next: "comment" - }, { - token: "string", - regex: /"(?:[^"\\]|\\.)*?"/ - }, { - token: "string", - regex: '`', - next: "bqstring" - }, { - token: "constant.numeric", - regex: "'(?:[^\\'\uD800-\uDBFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|" + stringEscapeRe.replace('"', '') + ")'" - }, { - token: "constant.numeric", - regex: "0[xX][0-9a-fA-F]+\\b" - }, { - token: "constant.numeric", - regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" - }, { - token: ["keyword", "text", "entity.name.function"], - regex: "(func)(\\s+)([a-zA-Z_$][a-zA-Z0-9_$]*)\\b" - }, { - token: function (val) { - if (val[val.length - 1] == "(") { - return [{ - type: keywordMapper(val.slice(0, -1)) || "support.function", - value: val.slice(0, -1) - }, { - type: "paren.lparen", - value: val.slice(-1) - }]; - } - return keywordMapper(val) || "identifier"; - }, - regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b\\(?" - }, { - token: "keyword.operator", - regex: "!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|==|=|!=|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=" - }, { - token: "punctuation.operator", - regex: "\\?|\\:|\\,|\\;|\\." - }, { - token: "paren.lparen", - regex: "[[({]" - }, { - token: "paren.rparen", - regex: "[\\])}]" - }, { - token: "text", - regex: "\\s+" - } - ], - "comment": [ - { - token: "comment.end", - regex: "\\*\\/", - next: "start" - }, { - defaultToken: "comment" - } - ], - "bqstring": [ - { - token: "string", - regex: '`', - next: "start" - }, { - defaultToken: "string" - } - ] - }; - this.embedRules(DocCommentHighlightRules, "doc-", [DocCommentHighlightRules.getEndRule("start")]); -}; -oop.inherits(GolangHighlightRules, TextHighlightRules); -exports.GolangHighlightRules = GolangHighlightRules; - -}); - -ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; -var Range = require("../range").Range; -var MatchingBraceOutdent = function () { }; -(function () { - this.checkOutdent = function (line, input) { - if (!/^\s+$/.test(line)) - return false; - return /^\s*\}/.test(input); - }; - this.autoOutdent = function (doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - if (!match) - return 0; - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({ row: row, column: column }); - if (!openBracePos || openBracePos.row == row) - return 0; - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column - 1), indent); - }; - this.$getIndent = function (line) { - return line.match(/^\s*/)[0]; - }; -}).call(MatchingBraceOutdent.prototype); -exports.MatchingBraceOutdent = MatchingBraceOutdent; - -}); - -ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; -var FoldMode = exports.FoldMode = function (commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); - this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); - } -}; -oop.inherits(FoldMode, BaseFoldMode); -(function () { - this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; - this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; - this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; - this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function (session, foldStyle, row) { - var line = session.getLine(row); - if (this.singleLineBlockCommentRe.test(line)) { - if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) - return ""; - } - var fw = this._getFoldWidgetBase(session, foldStyle, row); - if (!fw && this.startRegionRe.test(line)) - return "start"; // lineCommentRegionStart - return fw; - }; - this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - if (this.startRegionRe.test(line)) - return this.getCommentRegionBlock(session, line, row); - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } - else if (foldStyle != "all") - range = null; - } - return range; - } - if (foldStyle === "markbegin") - return; - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - return session.getCommentFoldRange(row, i, -1); - } - }; - this.getSectionRange = function (session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } - else if (subRange.isMultiLine()) { - row = subRange.end.row; - } - else if (startIndent == indent) { - break; - } - } - endRow = row; - } - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - this.getCommentRegionBlock = function (session, line, row) { - var startColumn = line.search(/\s*$/); - var maxRow = session.getLength(); - var startRow = row; - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; - var depth = 1; - while (++row < maxRow) { - line = session.getLine(row); - var m = re.exec(line); - if (!m) - continue; - if (m[1]) - depth--; - else - depth++; - if (!depth) - break; - } - var endRow = row; - if (endRow > startRow) { - return new Range(startRow, startColumn, endRow, line.length); - } - }; -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/golang",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/golang_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/folding/cstyle"], function(require, exports, module){var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var GolangHighlightRules = require("./golang_highlight_rules").GolangHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; -var Mode = function () { - this.HighlightRules = GolangHighlightRules; - this.$outdent = new MatchingBraceOutdent(); - this.foldingRules = new CStyleFoldMode(); - this.$behaviour = this.$defaultBehaviour; -}; -oop.inherits(Mode, TextMode); -(function () { - this.lineCommentStart = "//"; - this.blockComment = { start: "/*", end: "*/" }; - this.getNextLineIndent = function (state, line, tab) { - var indent = this.$getIndent(line); - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); - var tokens = tokenizedLine.tokens; - var endState = tokenizedLine.state; - if (tokens.length && tokens[tokens.length - 1].type == "comment") { - return indent; - } - if (state == "start") { - var match = line.match(/^.*[\{\(\[]\s*$/); - if (match) { - indent += tab; - } - } - return indent; - }; //end getNextLineIndent - this.checkOutdent = function (state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - this.autoOutdent = function (state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - this.$id = "ace/mode/golang"; -}).call(Mode.prototype); -exports.Mode = Mode; - -}); (function() { - ace.require(["ace/mode/golang"], function(m) { - if ( true && module) { - module.exports = m; - } - }); - })(); - - -/***/ }), - -/***/ 395: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -/* module decorator */ module = __webpack_require__.nmd(module); -ace.define("ace/mode/jsdoc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var JsDocCommentHighlightRules = function () { - this.$rules = { - "start": [ - { - token: ["comment.doc.tag", "comment.doc.text", "lparen.doc"], - regex: "(@(?:param|member|typedef|property|namespace|var|const|callback))(\\s*)({)", - push: [ - { - token: "lparen.doc", - regex: "{", - push: [ - { - include: "doc-syntax" - }, { - token: "rparen.doc", - regex: "}|(?=$)", - next: "pop" - } - ] - }, { - token: ["rparen.doc", "text.doc", "variable.parameter.doc", "lparen.doc", "variable.parameter.doc", "rparen.doc"], - regex: /(})(\s*)(?:([\w=:\/\.]+)|(?:(\[)([\w=:\/\.]+)(\])))/, - next: "pop" - }, { - token: "rparen.doc", - regex: "}|(?=$)", - next: "pop" - }, { - include: "doc-syntax" - }, { - defaultToken: "text.doc" - } - ] - }, { - token: ["comment.doc.tag", "text.doc", "lparen.doc"], - regex: "(@(?:returns?|yields|type|this|suppress|public|protected|private|package|modifies|" - + "implements|external|exception|throws|enum|define|extends))(\\s*)({)", - push: [ - { - token: "lparen.doc", - regex: "{", - push: [ - { - include: "doc-syntax" - }, { - token: "rparen.doc", - regex: "}|(?=$)", - next: "pop" - } - ] - }, { - token: "rparen.doc", - regex: "}|(?=$)", - next: "pop" - }, { - include: "doc-syntax" - }, { - defaultToken: "text.doc" - } - ] - }, { - token: ["comment.doc.tag", "text.doc", "variable.parameter.doc"], - regex: "(@(?:alias|memberof|instance|module|name|lends|namespace|external|this|template|" - + "requires|param|implements|function|extends|typedef|mixes|constructor|var|" - + "memberof\\!|event|listens|exports|class|constructs|interface|emits|fires|" - + "throws|const|callback|borrows|augments))(\\s+)(\\w[\\w#\.:\/~\"\\-]*)?" - }, { - token: ["comment.doc.tag", "text.doc", "variable.parameter.doc"], - regex: "(@method)(\\s+)(\\w[\\w\.\\(\\)]*)" - }, { - token: "comment.doc.tag", - regex: "@access\\s+(?:private|public|protected)" - }, { - token: "comment.doc.tag", - regex: "@kind\\s+(?:class|constant|event|external|file|function|member|mixin|module|namespace|typedef)" - }, { - token: "comment.doc.tag", - regex: "@\\w+(?=\\s|$)" - }, - JsDocCommentHighlightRules.getTagRule(), - { - defaultToken: "comment.doc", - caseInsensitive: true - } - ], - "doc-syntax": [{ - token: "operator.doc", - regex: /[|:]/ - }, { - token: "paren.doc", - regex: /[\[\]]/ - }] - }; - this.normalizeRules(); -}; -oop.inherits(JsDocCommentHighlightRules, TextHighlightRules); -JsDocCommentHighlightRules.getTagRule = function (start) { - return { - token: "comment.doc.tag.storage.type", - regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b" - }; -}; -JsDocCommentHighlightRules.getStartRule = function (start) { - return { - token: "comment.doc", - regex: "\\/\\*(?=\\*)", - next: start - }; -}; -JsDocCommentHighlightRules.getEndRule = function (start) { - return { - token: "comment.doc", - regex: "\\*\\/", - next: start - }; -}; -exports.JsDocCommentHighlightRules = JsDocCommentHighlightRules; - -}); - -ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/jsdoc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; -var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./jsdoc_comment_highlight_rules").JsDocCommentHighlightRules; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*"; -var JavaScriptHighlightRules = function (options) { - var keywordMapper = this.createKeywordMapper({ - "variable.language": "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Symbol|" + // Constructors - "Namespace|QName|XML|XMLList|" + // E4X - "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + - "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + - "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors - "SyntaxError|TypeError|URIError|" + - "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions - "isNaN|parseFloat|parseInt|" + - "JSON|Math|" + // Other - "this|arguments|prototype|window|document", - "keyword": "const|yield|import|get|set|async|await|" + - "break|case|catch|continue|default|delete|do|else|finally|for|function|" + - "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + - "__parent__|__count__|escape|unescape|with|__proto__|" + - "class|enum|extends|super|export|implements|private|public|interface|package|protected|static|constructor", - "storage.type": "const|let|var|function", - "constant.language": "null|Infinity|NaN|undefined", - "support.function": "alert", - "constant.language.boolean": "true|false" - }, "identifier"); - var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void"; - var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex - "u[0-9a-fA-F]{4}|" + // unicode - "u{[0-9a-fA-F]{1,6}}|" + // es6 unicode - "[0-2][0-7]{0,2}|" + // oct - "3[0-7][0-7]?|" + // oct - "[4-7][0-7]?|" + //oct - ".)"; - this.$rules = { - "no_regex": [ - DocCommentHighlightRules.getStartRule("doc-start"), - comments("no_regex"), - { - token: "string", - regex: "'(?=.)", - next: "qstring" - }, { - token: "string", - regex: '"(?=.)', - next: "qqstring" - }, { - token: "constant.numeric", - regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ - }, { - token: "constant.numeric", - regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ - }, { - token: [ - "storage.type", "punctuation.operator", "support.function", - "punctuation.operator", "entity.name.function", "text", "keyword.operator" - ], - regex: "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe + ")(\\s*)(=)", - next: "function_arguments" - }, { - token: [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", "storage.type", "text", "paren.lparen" - ], - regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s*)(\\()", - next: "function_arguments" - }, { - token: [ - "entity.name.function", "text", "keyword.operator", "text", "storage.type", - "text", "paren.lparen" - ], - regex: "(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s*)(\\()", - next: "function_arguments" - }, { - token: [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s+)(\\w+)(\\s*)(\\()", - next: "function_arguments" - }, { - token: [ - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex: "(function\\*?)(\\s+)(" + identifierRe + ")(\\s*)(\\()", - next: "function_arguments" - }, { - token: [ - "entity.name.function", "text", "punctuation.operator", - "text", "storage.type", "text", "paren.lparen" - ], - regex: "(" + identifierRe + ")(\\s*)(:)(\\s*)(function\\*?)(\\s*)(\\()", - next: "function_arguments" - }, { - token: [ - "text", "text", "storage.type", "text", "paren.lparen" - ], - regex: "(:)(\\s*)(function\\*?)(\\s*)(\\()", - next: "function_arguments" - }, { - token: "keyword", - regex: "from(?=\\s*('|\"))" - }, { - token: "keyword", - regex: "(?:" + kwBeforeRe + ")\\b", - next: "start" - }, { - token: "support.constant", - regex: /that\b/ - }, { - token: ["storage.type", "punctuation.operator", "support.function.firebug"], - regex: /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/ - }, { - token: keywordMapper, - regex: identifierRe - }, { - token: "punctuation.operator", - regex: /[.](?![.])/, - next: "property" - }, { - token: "storage.type", - regex: /=>/, - next: "start" - }, { - token: "keyword.operator", - regex: /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, - next: "start" - }, { - token: "punctuation.operator", - regex: /[?:,;.]/, - next: "start" - }, { - token: "paren.lparen", - regex: /[\[({]/, - next: "start" - }, { - token: "paren.rparen", - regex: /[\])}]/ - }, { - token: "comment", - regex: /^#!.*$/ - } - ], - property: [{ - token: "text", - regex: "\\s+" - }, { - token: [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(?:(\\s+)(\\w+))?(\\s*)(\\()", - next: "function_arguments" - }, { - token: "punctuation.operator", - regex: /[.](?![.])/ - }, { - token: "support.function", - regex: /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|lter|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward|rEach)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ - }, { - token: "support.function.dom", - regex: /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ - }, { - token: "support.constant", - regex: /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ - }, { - token: "identifier", - regex: identifierRe - }, { - regex: "", - token: "empty", - next: "no_regex" - } - ], - "start": [ - DocCommentHighlightRules.getStartRule("doc-start"), - comments("start"), - { - token: "string.regexp", - regex: "\\/", - next: "regex" - }, { - token: "text", - regex: "\\s+|^$", - next: "start" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "regex": [ - { - token: "regexp.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "string.regexp", - regex: "/[sxngimy]*", - next: "no_regex" - }, { - token: "invalid", - regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ - }, { - token: "constant.language.escape", - regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ - }, { - token: "constant.language.delimiter", - regex: /\|/ - }, { - token: "constant.language.escape", - regex: /\[\^?/, - next: "regex_character_class" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp" - } - ], - "regex_character_class": [ - { - token: "regexp.charclass.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "constant.language.escape", - regex: "]", - next: "regex" - }, { - token: "constant.language.escape", - regex: "-" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp.charachterclass" - } - ], - "default_parameter": [ - { - token: "string", - regex: "'(?=.)", - push: [ - { - token: "string", - regex: "'|$", - next: "pop" - }, { - include: "qstring" - } - ] - }, { - token: "string", - regex: '"(?=.)', - push: [ - { - token: "string", - regex: '"|$', - next: "pop" - }, { - include: "qqstring" - } - ] - }, { - token: "constant.language", - regex: "null|Infinity|NaN|undefined" - }, { - token: "constant.numeric", - regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ - }, { - token: "constant.numeric", - regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ - }, { - token: "punctuation.operator", - regex: ",", - next: "function_arguments" - }, { - token: "text", - regex: "\\s+" - }, { - token: "punctuation.operator", - regex: "$" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "function_arguments": [ - comments("function_arguments"), - { - token: "variable.parameter", - regex: identifierRe - }, { - token: "punctuation.operator", - regex: "," - }, { - token: "text", - regex: "\\s+" - }, { - token: "punctuation.operator", - regex: "$" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "qqstring": [ - { - token: "constant.language.escape", - regex: escapedRe - }, { - token: "string", - regex: "\\\\$", - consumeLineEnd: true - }, { - token: "string", - regex: '"|$', - next: "no_regex" - }, { - defaultToken: "string" - } - ], - "qstring": [ - { - token: "constant.language.escape", - regex: escapedRe - }, { - token: "string", - regex: "\\\\$", - consumeLineEnd: true - }, { - token: "string", - regex: "'|$", - next: "no_regex" - }, { - defaultToken: "string" - } - ] - }; - if (!options || !options.noES6) { - this.$rules.no_regex.unshift({ - regex: "[{}]", onMatch: function (val, state, stack) { - this.next = val == "{" ? this.nextState : ""; - if (val == "{" && stack.length) { - stack.unshift("start", state); - } - else if (val == "}" && stack.length) { - stack.shift(); - this.next = stack.shift(); - if (this.next.indexOf("string") != -1 || this.next.indexOf("jsx") != -1) - return "paren.quasi.end"; - } - return val == "{" ? "paren.lparen" : "paren.rparen"; - }, - nextState: "start" - }, { - token: "string.quasi.start", - regex: /`/, - push: [{ - token: "constant.language.escape", - regex: escapedRe - }, { - token: "paren.quasi.start", - regex: /\${/, - push: "start" - }, { - token: "string.quasi.end", - regex: /`/, - next: "pop" - }, { - defaultToken: "string.quasi" - }] - }, { - token: ["variable.parameter", "text"], - regex: "(" + identifierRe + ")(\\s*)(?=\\=>)" - }, { - token: "paren.lparen", - regex: "(\\()(?=.+\\s*=>)", - next: "function_arguments" - }, { - token: "variable.language", - regex: "(?:(?:(?:Weak)?(?:Set|Map))|Promise)\\b" - }); - this.$rules["function_arguments"].unshift({ - token: "keyword.operator", - regex: "=", - next: "default_parameter" - }, { - token: "keyword.operator", - regex: "\\.{3}" - }); - this.$rules["property"].unshift({ - token: "support.function", - regex: "(findIndex|repeat|startsWith|endsWith|includes|isSafeInteger|trunc|cbrt|log2|log10|sign|then|catch|" - + "finally|resolve|reject|race|any|all|allSettled|keys|entries|isInteger)\\b(?=\\()" - }, { - token: "constant.language", - regex: "(?:MAX_SAFE_INTEGER|MIN_SAFE_INTEGER|EPSILON)\\b" - }); - if (!options || options.jsx != false) - JSX.call(this); - } - this.embedRules(DocCommentHighlightRules, "doc-", [DocCommentHighlightRules.getEndRule("no_regex")]); - this.normalizeRules(); -}; -oop.inherits(JavaScriptHighlightRules, TextHighlightRules); -function JSX() { - var tagRegex = identifierRe.replace("\\d", "\\d\\-"); - var jsxTag = { - onMatch: function (val, state, stack) { - var offset = val.charAt(1) == "/" ? 2 : 1; - if (offset == 1) { - if (state != this.nextState) - stack.unshift(this.next, this.nextState, 0); - else - stack.unshift(this.next); - stack[2]++; - } - else if (offset == 2) { - if (state == this.nextState) { - stack[1]--; - if (!stack[1] || stack[1] < 0) { - stack.shift(); - stack.shift(); - } - } - } - return [{ - type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", - value: val.slice(0, offset) - }, { - type: "meta.tag.tag-name.xml", - value: val.substr(offset) - }]; - }, - regex: "", - onMatch: function (value, currentState, stack) { - if (currentState == stack[0]) - stack.shift(); - if (value.length == 2) { - if (stack[0] == this.nextState) - stack[1]--; - if (!stack[1] || stack[1] < 0) { - stack.splice(0, 2); - } - } - this.next = stack[0] || "start"; - return [{ type: this.token, value: value }]; - }, - nextState: "jsx" - }, - jsxJsRule, - comments("jsxAttributes"), - { - token: "entity.other.attribute-name.xml", - regex: tagRegex - }, { - token: "keyword.operator.attribute-equals.xml", - regex: "=" - }, { - token: "text.tag-whitespace.xml", - regex: "\\s+" - }, { - token: "string.attribute-value.xml", - regex: "'", - stateName: "jsx_attr_q", - push: [ - { token: "string.attribute-value.xml", regex: "'", next: "pop" }, - { include: "reference" }, - { defaultToken: "string.attribute-value.xml" } - ] - }, { - token: "string.attribute-value.xml", - regex: '"', - stateName: "jsx_attr_qq", - push: [ - { token: "string.attribute-value.xml", regex: '"', next: "pop" }, - { include: "reference" }, - { defaultToken: "string.attribute-value.xml" } - ] - }, - jsxTag - ]; - this.$rules.reference = [{ - token: "constant.language.escape.reference.xml", - regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }]; -} -function comments(next) { - return [ - { - token: "comment", - regex: /\/\*/, - next: [ - DocCommentHighlightRules.getTagRule(), - { token: "comment", regex: "\\*\\/", next: next || "pop" }, - { defaultToken: "comment", caseInsensitive: true } - ] - }, { - token: "comment", - regex: "\\/\\/", - next: [ - DocCommentHighlightRules.getTagRule(), - { token: "comment", regex: "$|^", next: next || "pop" }, - { defaultToken: "comment", caseInsensitive: true } - ] - } - ]; -} -exports.JavaScriptHighlightRules = JavaScriptHighlightRules; - -}); - -ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; -var Range = require("../range").Range; -var MatchingBraceOutdent = function () { }; -(function () { - this.checkOutdent = function (line, input) { - if (!/^\s+$/.test(line)) - return false; - return /^\s*\}/.test(input); - }; - this.autoOutdent = function (doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - if (!match) - return 0; - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({ row: row, column: column }); - if (!openBracePos || openBracePos.row == row) - return 0; - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column - 1), indent); - }; - this.$getIndent = function (line) { - return line.match(/^\s*/)[0]; - }; -}).call(MatchingBraceOutdent.prototype); -exports.MatchingBraceOutdent = MatchingBraceOutdent; - -}); - -ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; -var FoldMode = exports.FoldMode = function (commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); - this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); - } -}; -oop.inherits(FoldMode, BaseFoldMode); -(function () { - this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; - this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; - this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; - this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function (session, foldStyle, row) { - var line = session.getLine(row); - if (this.singleLineBlockCommentRe.test(line)) { - if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) - return ""; - } - var fw = this._getFoldWidgetBase(session, foldStyle, row); - if (!fw && this.startRegionRe.test(line)) - return "start"; // lineCommentRegionStart - return fw; - }; - this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - if (this.startRegionRe.test(line)) - return this.getCommentRegionBlock(session, line, row); - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } - else if (foldStyle != "all") - range = null; - } - return range; - } - if (foldStyle === "markbegin") - return; - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - return session.getCommentFoldRange(row, i, -1); - } - }; - this.getSectionRange = function (session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } - else if (subRange.isMultiLine()) { - row = subRange.end.row; - } - else if (startIndent == indent) { - break; - } - } - endRow = row; - } - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - this.getCommentRegionBlock = function (session, line, row) { - var startColumn = line.search(/\s*$/); - var maxRow = session.getLength(); - var startRow = row; - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; - var depth = 1; - while (++row < maxRow) { - line = session.getLine(row); - var m = re.exec(line); - if (!m) - continue; - if (m[1]) - depth--; - else - depth++; - if (!depth) - break; - } - var endRow = row; - if (endRow > startRow) { - return new Range(startRow, startColumn, endRow, line.length); - } - }; -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var WorkerClient = require("../worker/worker_client").WorkerClient; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; -var Mode = function () { - this.HighlightRules = JavaScriptHighlightRules; - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CstyleBehaviour(); - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); -(function () { - this.lineCommentStart = "//"; - this.blockComment = { start: "/*", end: "*/" }; - this.$quotes = { '"': '"', "'": "'", "`": "`" }; - this.$pairQuotesAfter = { - "`": /\w/ - }; - this.getNextLineIndent = function (state, line, tab) { - var indent = this.$getIndent(line); - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); - var tokens = tokenizedLine.tokens; - var endState = tokenizedLine.state; - if (tokens.length && tokens[tokens.length - 1].type == "comment") { - return indent; - } - if (state == "start" || state == "no_regex") { - var match = line.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/); - if (match) { - indent += tab; - } - } - else if (state == "doc-start") { - if (endState == "start" || endState == "no_regex") { - return ""; - } - var match = line.match(/^\s*(\/?)\*/); - if (match) { - if (match[1]) { - indent += " "; - } - indent += "* "; - } - } - return indent; - }; - this.checkOutdent = function (state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - this.autoOutdent = function (state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - this.createWorker = function (session) { - var worker = new WorkerClient(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker"); - worker.attachToDocument(session.getDocument()); - worker.on("annotate", function (results) { - session.setAnnotations(results.data); - }); - worker.on("terminate", function () { - session.clearAnnotations(); - }); - return worker; - }; - this.$id = "ace/mode/javascript"; - this.snippetFileId = "ace/snippets/javascript"; -}).call(Mode.prototype); -exports.Mode = Mode; - -}); (function() { - ace.require(["ace/mode/javascript"], function(m) { - if ( true && module) { - module.exports = m; - } - }); - })(); - - -/***/ }), - -/***/ 252: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -/* module decorator */ module = __webpack_require__.nmd(module); -ace.define("ace/mode/json_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var JsonHighlightRules = function () { - this.$rules = { - "start": [ - { - token: "variable", - regex: '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]\\s*(?=:)' - }, { - token: "string", - regex: '"', - next: "string" - }, { - token: "constant.numeric", - regex: "0[xX][0-9a-fA-F]+\\b" - }, { - token: "constant.numeric", - regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" - }, { - token: "constant.language.boolean", - regex: "(?:true|false)\\b" - }, { - token: "text", - regex: "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" - }, { - token: "comment", - regex: "\\/\\/.*$" - }, { - token: "comment.start", - regex: "\\/\\*", - next: "comment" - }, { - token: "paren.lparen", - regex: "[[({]" - }, { - token: "paren.rparen", - regex: "[\\])}]" - }, { - token: "punctuation.operator", - regex: /[,]/ - }, { - token: "text", - regex: "\\s+" - } - ], - "string": [ - { - token: "constant.language.escape", - regex: /\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|["\\\/bfnrt])/ - }, { - token: "string", - regex: '"|$', - next: "start" - }, { - defaultToken: "string" - } - ], - "comment": [ - { - token: "comment.end", - regex: "\\*\\/", - next: "start" - }, { - defaultToken: "comment" - } - ] - }; -}; -oop.inherits(JsonHighlightRules, TextHighlightRules); -exports.JsonHighlightRules = JsonHighlightRules; - -}); - -ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; -var Range = require("../range").Range; -var MatchingBraceOutdent = function () { }; -(function () { - this.checkOutdent = function (line, input) { - if (!/^\s+$/.test(line)) - return false; - return /^\s*\}/.test(input); - }; - this.autoOutdent = function (doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - if (!match) - return 0; - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({ row: row, column: column }); - if (!openBracePos || openBracePos.row == row) - return 0; - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column - 1), indent); - }; - this.$getIndent = function (line) { - return line.match(/^\s*/)[0]; - }; -}).call(MatchingBraceOutdent.prototype); -exports.MatchingBraceOutdent = MatchingBraceOutdent; - -}); - -ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; -var FoldMode = exports.FoldMode = function (commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); - this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); - } -}; -oop.inherits(FoldMode, BaseFoldMode); -(function () { - this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; - this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; - this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; - this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function (session, foldStyle, row) { - var line = session.getLine(row); - if (this.singleLineBlockCommentRe.test(line)) { - if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) - return ""; - } - var fw = this._getFoldWidgetBase(session, foldStyle, row); - if (!fw && this.startRegionRe.test(line)) - return "start"; // lineCommentRegionStart - return fw; - }; - this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - if (this.startRegionRe.test(line)) - return this.getCommentRegionBlock(session, line, row); - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } - else if (foldStyle != "all") - range = null; - } - return range; - } - if (foldStyle === "markbegin") - return; - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - return session.getCommentFoldRange(row, i, -1); - } - }; - this.getSectionRange = function (session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } - else if (subRange.isMultiLine()) { - row = subRange.end.row; - } - else if (startIndent == indent) { - break; - } - } - endRow = row; - } - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - this.getCommentRegionBlock = function (session, line, row) { - var startColumn = line.search(/\s*$/); - var maxRow = session.getLength(); - var startRow = row; - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; - var depth = 1; - while (++row < maxRow) { - line = session.getLine(row); - var m = re.exec(line); - if (!m) - continue; - if (m[1]) - depth--; - else - depth++; - if (!depth) - break; - } - var endRow = row; - if (endRow > startRow) { - return new Range(startRow, startColumn, endRow, line.length); - } - }; -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/json",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/json_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/folding/cstyle","ace/worker/worker_client"], function(require, exports, module){"use strict"; -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var HighlightRules = require("./json_highlight_rules").JsonHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; -var WorkerClient = require("../worker/worker_client").WorkerClient; -var Mode = function () { - this.HighlightRules = HighlightRules; - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = this.$defaultBehaviour; - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); -(function () { - this.lineCommentStart = "//"; - this.blockComment = { start: "/*", end: "*/" }; - this.getNextLineIndent = function (state, line, tab) { - var indent = this.$getIndent(line); - if (state == "start") { - var match = line.match(/^.*[\{\(\[]\s*$/); - if (match) { - indent += tab; - } - } - return indent; - }; - this.checkOutdent = function (state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - this.autoOutdent = function (state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - this.createWorker = function (session) { - var worker = new WorkerClient(["ace"], "ace/mode/json_worker", "JsonWorker"); - worker.attachToDocument(session.getDocument()); - worker.on("annotate", function (e) { - session.setAnnotations(e.data); - }); - worker.on("terminate", function () { - session.clearAnnotations(); - }); - return worker; - }; - this.$id = "ace/mode/json"; -}).call(Mode.prototype); -exports.Mode = Mode; - -}); (function() { - ace.require(["ace/mode/json"], function(m) { - if ( true && module) { - module.exports = m; - } - }); - })(); - - -/***/ }), - -/***/ 711: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -/* module decorator */ module = __webpack_require__.nmd(module); -ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var DocCommentHighlightRules = function () { - this.$rules = { - "start": [ - { - token: "comment.doc.tag", - regex: "@\\w+(?=\\s|$)" - }, DocCommentHighlightRules.getTagRule(), { - defaultToken: "comment.doc", - caseInsensitive: true - } - ] - }; -}; -oop.inherits(DocCommentHighlightRules, TextHighlightRules); -DocCommentHighlightRules.getTagRule = function (start) { - return { - token: "comment.doc.tag.storage.type", - regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b" - }; -}; -DocCommentHighlightRules.getStartRule = function (start) { - return { - token: "comment.doc", - regex: "\\/\\*(?=\\*)", - next: start - }; -}; -DocCommentHighlightRules.getEndRule = function (start) { - return { - token: "comment.doc", - regex: "\\*\\/", - next: start - }; -}; -exports.DocCommentHighlightRules = DocCommentHighlightRules; - -}); - -ace.define("ace/mode/jsx_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module){var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var JsxHighlightRules = function () { - var keywords = lang.arrayToMap(("break|do|instanceof|typeof|case|else|new|var|catch|finally|return|void|continue|for|switch|default|while|function|this|" + - "if|throw|" + - "delete|in|try|" + - "class|extends|super|import|from|into|implements|interface|static|mixin|override|abstract|final|" + - "number|int|string|boolean|variant|" + - "log|assert").split("|")); - var buildinConstants = lang.arrayToMap(("null|true|false|NaN|Infinity|__FILE__|__LINE__|undefined").split("|")); - var reserved = lang.arrayToMap(("debugger|with|" + - "const|export|" + - "let|private|public|yield|protected|" + - "extern|native|as|operator|__fake__|__readonly__").split("|")); - var identifierRe = "[a-zA-Z_][a-zA-Z0-9_]*\\b"; - this.$rules = { - "start": [ - { - token: "comment", - regex: "\\/\\/.*$" - }, - DocCommentHighlightRules.getStartRule("doc-start"), - { - token: "comment", - regex: "\\/\\*", - next: "comment" - }, { - token: "string.regexp", - regex: "[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/]\\w*\\s*(?=[).,;]|$)" - }, { - token: "string", - regex: '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' - }, { - token: "string", - regex: "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" - }, { - token: "constant.numeric", - regex: "0[xX][0-9a-fA-F]+\\b" - }, { - token: "constant.numeric", - regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" - }, { - token: "constant.language.boolean", - regex: "(?:true|false)\\b" - }, { - token: [ - "storage.type", - "text", - "entity.name.function" - ], - regex: "(function)(\\s+)(" + identifierRe + ")" - }, { - token: function (value) { - if (value == "this") - return "variable.language"; - else if (value == "function") - return "storage.type"; - else if (keywords.hasOwnProperty(value) || reserved.hasOwnProperty(value)) - return "keyword"; - else if (buildinConstants.hasOwnProperty(value)) - return "constant.language"; - else if (/^_?[A-Z][a-zA-Z0-9_]*$/.test(value)) - return "language.support.class"; - else - return "identifier"; - }, - regex: identifierRe - }, { - token: "keyword.operator", - regex: "!|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|==|=|!=|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)" - }, { - token: "punctuation.operator", - regex: "\\?|\\:|\\,|\\;|\\." - }, { - token: "paren.lparen", - regex: "[[({<]" - }, { - token: "paren.rparen", - regex: "[\\])}>]" - }, { - token: "text", - regex: "\\s+" - } - ], - "comment": [ - { - token: "comment", - regex: "\\*\\/", - next: "start" - }, { - defaultToken: "comment" - } - ] - }; - this.embedRules(DocCommentHighlightRules, "doc-", [DocCommentHighlightRules.getEndRule("start")]); -}; -oop.inherits(JsxHighlightRules, TextHighlightRules); -exports.JsxHighlightRules = JsxHighlightRules; - -}); - -ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; -var Range = require("../range").Range; -var MatchingBraceOutdent = function () { }; -(function () { - this.checkOutdent = function (line, input) { - if (!/^\s+$/.test(line)) - return false; - return /^\s*\}/.test(input); - }; - this.autoOutdent = function (doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - if (!match) - return 0; - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({ row: row, column: column }); - if (!openBracePos || openBracePos.row == row) - return 0; - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column - 1), indent); - }; - this.$getIndent = function (line) { - return line.match(/^\s*/)[0]; - }; -}).call(MatchingBraceOutdent.prototype); -exports.MatchingBraceOutdent = MatchingBraceOutdent; - -}); - -ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; -var FoldMode = exports.FoldMode = function (commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); - this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); - } -}; -oop.inherits(FoldMode, BaseFoldMode); -(function () { - this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; - this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; - this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; - this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function (session, foldStyle, row) { - var line = session.getLine(row); - if (this.singleLineBlockCommentRe.test(line)) { - if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) - return ""; - } - var fw = this._getFoldWidgetBase(session, foldStyle, row); - if (!fw && this.startRegionRe.test(line)) - return "start"; // lineCommentRegionStart - return fw; - }; - this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - if (this.startRegionRe.test(line)) - return this.getCommentRegionBlock(session, line, row); - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } - else if (foldStyle != "all") - range = null; - } - return range; - } - if (foldStyle === "markbegin") - return; - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - return session.getCommentFoldRange(row, i, -1); - } - }; - this.getSectionRange = function (session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } - else if (subRange.isMultiLine()) { - row = subRange.end.row; - } - else if (startIndent == indent) { - break; - } - } - endRow = row; - } - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - this.getCommentRegionBlock = function (session, line, row) { - var startColumn = line.search(/\s*$/); - var maxRow = session.getLength(); - var startRow = row; - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; - var depth = 1; - while (++row < maxRow) { - line = session.getLine(row); - var m = re.exec(line); - if (!m) - continue; - if (m[1]) - depth--; - else - depth++; - if (!depth) - break; - } - var endRow = row; - if (endRow > startRow) { - return new Range(startRow, startColumn, endRow, line.length); - } - }; -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/jsx",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/jsx_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var JsxHighlightRules = require("./jsx_highlight_rules").JsxHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; -function Mode() { - this.HighlightRules = JsxHighlightRules; - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = this.$defaultBehaviour; - this.foldingRules = new CStyleFoldMode(); -} -oop.inherits(Mode, TextMode); -(function () { - this.lineCommentStart = "//"; - this.blockComment = { start: "/*", end: "*/" }; - this.getNextLineIndent = function (state, line, tab) { - var indent = this.$getIndent(line); - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); - var tokens = tokenizedLine.tokens; - if (tokens.length && tokens[tokens.length - 1].type == "comment") { - return indent; - } - if (state == "start") { - var match = line.match(/^.*[\{\(\[]\s*$/); - if (match) { - indent += tab; - } - } - return indent; - }; - this.checkOutdent = function (state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - this.autoOutdent = function (state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - this.$id = "ace/mode/jsx"; -}).call(Mode.prototype); -exports.Mode = Mode; - -}); (function() { - ace.require(["ace/mode/jsx"], function(m) { - if ( true && module) { - module.exports = m; - } - }); - })(); - - -/***/ }), - -/***/ 7: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -/* module decorator */ module = __webpack_require__.nmd(module); -ace.define("ace/mode/python_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){/* - * TODO: python delimiters - */ -"use strict"; -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var PythonHighlightRules = function () { - var keywords = ("and|as|assert|break|class|continue|def|del|elif|else|except|exec|" + - "finally|for|from|global|if|import|in|is|lambda|not|or|pass|print|" + - "raise|return|try|while|with|yield|async|await|nonlocal"); - var builtinConstants = ("True|False|None|NotImplemented|Ellipsis|__debug__"); - var builtinFunctions = ("abs|divmod|input|open|staticmethod|all|enumerate|int|ord|str|any|" + - "eval|isinstance|pow|sum|basestring|execfile|issubclass|print|super|" + - "binfile|bin|iter|property|tuple|bool|filter|len|range|type|bytearray|" + - "float|list|raw_input|unichr|callable|format|locals|reduce|unicode|" + - "chr|frozenset|long|reload|vars|classmethod|getattr|map|repr|xrange|" + - "cmp|globals|max|reversed|zip|compile|hasattr|memoryview|round|" + - "__import__|complex|hash|min|apply|delattr|help|next|setattr|set|" + - "buffer|dict|hex|object|slice|coerce|dir|id|oct|sorted|intern|" + - "ascii|breakpoint|bytes"); - var keywordMapper = this.createKeywordMapper({ - "invalid.deprecated": "debugger", - "support.function": builtinFunctions, - "variable.language": "self|cls", - "constant.language": builtinConstants, - "keyword": keywords - }, "identifier"); - var strPre = "[uU]?"; - var strRawPre = "[rR]"; - var strFormatPre = "[fF]"; - var strRawFormatPre = "(?:[rR][fF]|[fF][rR])"; - var decimalInteger = "(?:(?:[1-9]\\d*)|(?:0))"; - var octInteger = "(?:0[oO]?[0-7]+)"; - var hexInteger = "(?:0[xX][\\dA-Fa-f]+)"; - var binInteger = "(?:0[bB][01]+)"; - var integer = "(?:" + decimalInteger + "|" + octInteger + "|" + hexInteger + "|" + binInteger + ")"; - var exponent = "(?:[eE][+-]?\\d+)"; - var fraction = "(?:\\.\\d+)"; - var intPart = "(?:\\d+)"; - var pointFloat = "(?:(?:" + intPart + "?" + fraction + ")|(?:" + intPart + "\\.))"; - var exponentFloat = "(?:(?:" + pointFloat + "|" + intPart + ")" + exponent + ")"; - var floatNumber = "(?:" + exponentFloat + "|" + pointFloat + ")"; - var stringEscape = "\\\\(x[0-9A-Fa-f]{2}|[0-7]{3}|[\\\\abfnrtv'\"]|U[0-9A-Fa-f]{8}|u[0-9A-Fa-f]{4})"; - this.$rules = { - "start": [{ - token: "comment", - regex: "#.*$" - }, { - token: "string", - regex: strPre + '"{3}', - next: "qqstring3" - }, { - token: "string", - regex: strPre + '"(?=.)', - next: "qqstring" - }, { - token: "string", - regex: strPre + "'{3}", - next: "qstring3" - }, { - token: "string", - regex: strPre + "'(?=.)", - next: "qstring" - }, { - token: "string", - regex: strRawPre + '"{3}', - next: "rawqqstring3" - }, { - token: "string", - regex: strRawPre + '"(?=.)', - next: "rawqqstring" - }, { - token: "string", - regex: strRawPre + "'{3}", - next: "rawqstring3" - }, { - token: "string", - regex: strRawPre + "'(?=.)", - next: "rawqstring" - }, { - token: "string", - regex: strFormatPre + '"{3}', - next: "fqqstring3" - }, { - token: "string", - regex: strFormatPre + '"(?=.)', - next: "fqqstring" - }, { - token: "string", - regex: strFormatPre + "'{3}", - next: "fqstring3" - }, { - token: "string", - regex: strFormatPre + "'(?=.)", - next: "fqstring" - }, { - token: "string", - regex: strRawFormatPre + '"{3}', - next: "rfqqstring3" - }, { - token: "string", - regex: strRawFormatPre + '"(?=.)', - next: "rfqqstring" - }, { - token: "string", - regex: strRawFormatPre + "'{3}", - next: "rfqstring3" - }, { - token: "string", - regex: strRawFormatPre + "'(?=.)", - next: "rfqstring" - }, { - token: "keyword.operator", - regex: "\\+|\\-|\\*|\\*\\*|\\/|\\/\\/|%|@|<<|>>|&|\\||\\^|~|<|>|<=|=>|==|!=|<>|=" - }, { - token: "punctuation", - regex: ",|:|;|\\->|\\+=|\\-=|\\*=|\\/=|\\/\\/=|%=|@=|&=|\\|=|^=|>>=|<<=|\\*\\*=" - }, { - token: "paren.lparen", - regex: "[\\[\\(\\{]" - }, { - token: "paren.rparen", - regex: "[\\]\\)\\}]" - }, { - token: ["keyword", "text", "entity.name.function"], - regex: "(def|class)(\\s+)([\\u00BF-\\u1FFF\\u2C00-\\uD7FF\\w]+)" - }, { - token: "text", - regex: "\\s+" - }, { - include: "constants" - }], - "qqstring3": [{ - token: "constant.language.escape", - regex: stringEscape - }, { - token: "string", - regex: '"{3}', - next: "start" - }, { - defaultToken: "string" - }], - "qstring3": [{ - token: "constant.language.escape", - regex: stringEscape - }, { - token: "string", - regex: "'{3}", - next: "start" - }, { - defaultToken: "string" - }], - "qqstring": [{ - token: "constant.language.escape", - regex: stringEscape - }, { - token: "string", - regex: "\\\\$", - next: "qqstring" - }, { - token: "string", - regex: '"|$', - next: "start" - }, { - defaultToken: "string" - }], - "qstring": [{ - token: "constant.language.escape", - regex: stringEscape - }, { - token: "string", - regex: "\\\\$", - next: "qstring" - }, { - token: "string", - regex: "'|$", - next: "start" - }, { - defaultToken: "string" - }], - "rawqqstring3": [{ - token: "string", - regex: '"{3}', - next: "start" - }, { - defaultToken: "string" - }], - "rawqstring3": [{ - token: "string", - regex: "'{3}", - next: "start" - }, { - defaultToken: "string" - }], - "rawqqstring": [{ - token: "string", - regex: "\\\\$", - next: "rawqqstring" - }, { - token: "string", - regex: '"|$', - next: "start" - }, { - defaultToken: "string" - }], - "rawqstring": [{ - token: "string", - regex: "\\\\$", - next: "rawqstring" - }, { - token: "string", - regex: "'|$", - next: "start" - }, { - defaultToken: "string" - }], - "fqqstring3": [{ - token: "constant.language.escape", - regex: stringEscape - }, { - token: "string", - regex: '"{3}', - next: "start" - }, { - token: "paren.lparen", - regex: "{", - push: "fqstringParRules" - }, { - defaultToken: "string" - }], - "fqstring3": [{ - token: "constant.language.escape", - regex: stringEscape - }, { - token: "string", - regex: "'{3}", - next: "start" - }, { - token: "paren.lparen", - regex: "{", - push: "fqstringParRules" - }, { - defaultToken: "string" - }], - "fqqstring": [{ - token: "constant.language.escape", - regex: stringEscape - }, { - token: "string", - regex: "\\\\$", - next: "fqqstring" - }, { - token: "string", - regex: '"|$', - next: "start" - }, { - token: "paren.lparen", - regex: "{", - push: "fqstringParRules" - }, { - defaultToken: "string" - }], - "fqstring": [{ - token: "constant.language.escape", - regex: stringEscape - }, { - token: "string", - regex: "'|$", - next: "start" - }, { - token: "paren.lparen", - regex: "{", - push: "fqstringParRules" - }, { - defaultToken: "string" - }], - "rfqqstring3": [{ - token: "string", - regex: '"{3}', - next: "start" - }, { - token: "paren.lparen", - regex: "{", - push: "fqstringParRules" - }, { - defaultToken: "string" - }], - "rfqstring3": [{ - token: "string", - regex: "'{3}", - next: "start" - }, { - token: "paren.lparen", - regex: "{", - push: "fqstringParRules" - }, { - defaultToken: "string" - }], - "rfqqstring": [{ - token: "string", - regex: "\\\\$", - next: "rfqqstring" - }, { - token: "string", - regex: '"|$', - next: "start" - }, { - token: "paren.lparen", - regex: "{", - push: "fqstringParRules" - }, { - defaultToken: "string" - }], - "rfqstring": [{ - token: "string", - regex: "'|$", - next: "start" - }, { - token: "paren.lparen", - regex: "{", - push: "fqstringParRules" - }, { - defaultToken: "string" - }], - "fqstringParRules": [{ - token: "paren.lparen", - regex: "[\\[\\(]" - }, { - token: "paren.rparen", - regex: "[\\]\\)]" - }, { - token: "string", - regex: "\\s+" - }, { - token: "string", - regex: "'[^']*'" - }, { - token: "string", - regex: '"[^"]*"' - }, { - token: "function.support", - regex: "(!s|!r|!a)" - }, { - include: "constants" - }, { - token: 'paren.rparen', - regex: "}", - next: 'pop' - }, { - token: 'paren.lparen', - regex: "{", - push: "fqstringParRules" - }], - "constants": [{ - token: "constant.numeric", - regex: "(?:" + floatNumber + "|\\d+)[jJ]\\b" - }, { - token: "constant.numeric", - regex: floatNumber - }, { - token: "constant.numeric", - regex: integer + "[lL]\\b" - }, { - token: "constant.numeric", - regex: integer + "\\b" - }, { - token: ["punctuation", "function.support"], - regex: "(\\.)([a-zA-Z_]+)\\b" - }, { - token: keywordMapper, - regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }] - }; - this.normalizeRules(); -}; -oop.inherits(PythonHighlightRules, TextHighlightRules); -exports.PythonHighlightRules = PythonHighlightRules; - -}); - -ace.define("ace/mode/folding/pythonic",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; -var oop = require("../../lib/oop"); -var BaseFoldMode = require("./fold_mode").FoldMode; -var FoldMode = exports.FoldMode = function (markers) { - this.foldingStartMarker = new RegExp("([\\[{])(?:\\s*)$|(" + markers + ")(?:\\s*)(?:#.*)?$"); -}; -oop.inherits(FoldMode, BaseFoldMode); -(function () { - this.getFoldWidgetRange = function (session, foldStyle, row) { - var line = session.getLine(row); - var match = line.match(this.foldingStartMarker); - if (match) { - if (match[1]) - return this.openingBracketBlock(session, match[1], row, match.index); - if (match[2]) - return this.indentationBlock(session, row, match.index + match[2].length); - return this.indentationBlock(session, row); - } - }; -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/python",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/python_highlight_rules","ace/mode/folding/pythonic","ace/range"], function(require, exports, module){"use strict"; -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var PythonHighlightRules = require("./python_highlight_rules").PythonHighlightRules; -var PythonFoldMode = require("./folding/pythonic").FoldMode; -var Range = require("../range").Range; -var Mode = function () { - this.HighlightRules = PythonHighlightRules; - this.foldingRules = new PythonFoldMode("\\:"); - this.$behaviour = this.$defaultBehaviour; -}; -oop.inherits(Mode, TextMode); -(function () { - this.lineCommentStart = "#"; - this.$pairQuotesAfter = { - "'": /[ruf]/i, - '"': /[ruf]/i - }; - this.getNextLineIndent = function (state, line, tab) { - var indent = this.$getIndent(line); - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); - var tokens = tokenizedLine.tokens; - if (tokens.length && tokens[tokens.length - 1].type == "comment") { - return indent; - } - if (state == "start") { - var match = line.match(/^.*[\{\(\[:]\s*$/); - if (match) { - indent += tab; - } - } - return indent; - }; - var outdents = { - "pass": 1, - "return": 1, - "raise": 1, - "break": 1, - "continue": 1 - }; - this.checkOutdent = function (state, line, input) { - if (input !== "\r\n" && input !== "\r" && input !== "\n") - return false; - var tokens = this.getTokenizer().getLineTokens(line.trim(), state).tokens; - if (!tokens) - return false; - do { - var last = tokens.pop(); - } while (last && (last.type == "comment" || (last.type == "text" && last.value.match(/^\s+$/)))); - if (!last) - return false; - return (last.type == "keyword" && outdents[last.value]); - }; - this.autoOutdent = function (state, doc, row) { - row += 1; - var indent = this.$getIndent(doc.getLine(row)); - var tab = doc.getTabString(); - if (indent.slice(-tab.length) == tab) - doc.remove(new Range(row, indent.length - tab.length, row, indent.length)); - }; - this.$id = "ace/mode/python"; - this.snippetFileId = "ace/snippets/python"; -}).call(Mode.prototype); -exports.Mode = Mode; - -}); (function() { - ace.require(["ace/mode/python"], function(m) { - if ( true && module) { - module.exports = m; - } - }); - })(); - - -/***/ }), - -/***/ 202: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -/* module decorator */ module = __webpack_require__.nmd(module); -ace.define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var XmlHighlightRules = function (normalize) { - var tagRegex = "[_:a-zA-Z\xc0-\uffff][-_:.a-zA-Z0-9\xc0-\uffff]*"; - this.$rules = { - start: [ - { token: "string.cdata.xml", regex: "<\\!\\[CDATA\\[", next: "cdata" }, - { - token: ["punctuation.instruction.xml", "keyword.instruction.xml"], - regex: "(<\\?)(" + tagRegex + ")", next: "processing_instruction" - }, - { token: "comment.start.xml", regex: "<\\!--", next: "comment" }, - { - token: ["xml-pe.doctype.xml", "xml-pe.doctype.xml"], - regex: "(<\\!)(DOCTYPE)(?=[\\s])", next: "doctype", caseInsensitive: true - }, - { include: "tag" }, - { token: "text.end-tag-open.xml", regex: "", - next: "start" - }], - doctype: [ - { include: "whitespace" }, - { include: "string" }, - { token: "xml-pe.doctype.xml", regex: ">", next: "start" }, - { token: "xml-pe.xml", regex: "[-_a-zA-Z0-9:]+" }, - { token: "punctuation.int-subset", regex: "\\[", push: "int_subset" } - ], - int_subset: [{ - token: "text.xml", - regex: "\\s+" - }, { - token: "punctuation.int-subset.xml", - regex: "]", - next: "pop" - }, { - token: ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"], - regex: "(<\\!)(" + tagRegex + ")", - push: [{ - token: "text", - regex: "\\s+" - }, - { - token: "punctuation.markup-decl.xml", - regex: ">", - next: "pop" - }, - { include: "string" }] - }], - cdata: [ - { token: "string.cdata.xml", regex: "\\]\\]>", next: "start" }, - { token: "text.xml", regex: "\\s+" }, - { token: "text.xml", regex: "(?:[^\\]]|\\](?!\\]>))+" } - ], - comment: [ - { token: "comment.end.xml", regex: "-->", next: "start" }, - { defaultToken: "comment.xml" } - ], - reference: [{ - token: "constant.language.escape.reference.xml", - regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }], - attr_reference: [{ - token: "constant.language.escape.reference.attribute-value.xml", - regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }], - tag: [{ - token: ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"], - regex: "(?:(<)|(", next: "start" } - ] - }], - tag_whitespace: [ - { token: "text.tag-whitespace.xml", regex: "\\s+" } - ], - whitespace: [ - { token: "text.whitespace.xml", regex: "\\s+" } - ], - string: [{ - token: "string.xml", - regex: "'", - push: [ - { token: "string.xml", regex: "'", next: "pop" }, - { defaultToken: "string.xml" } - ] - }, { - token: "string.xml", - regex: '"', - push: [ - { token: "string.xml", regex: '"', next: "pop" }, - { defaultToken: "string.xml" } - ] - }], - attributes: [{ - token: "entity.other.attribute-name.xml", - regex: tagRegex - }, { - token: "keyword.operator.attribute-equals.xml", - regex: "=" - }, { - include: "tag_whitespace" - }, { - include: "attribute_value" - }], - attribute_value: [{ - token: "string.attribute-value.xml", - regex: "'", - push: [ - { token: "string.attribute-value.xml", regex: "'", next: "pop" }, - { include: "attr_reference" }, - { defaultToken: "string.attribute-value.xml" } - ] - }, { - token: "string.attribute-value.xml", - regex: '"', - push: [ - { token: "string.attribute-value.xml", regex: '"', next: "pop" }, - { include: "attr_reference" }, - { defaultToken: "string.attribute-value.xml" } - ] - }] - }; - if (this.constructor === XmlHighlightRules) - this.normalizeRules(); -}; -(function () { - this.embedTagRules = function (HighlightRules, prefix, tag) { - this.$rules.tag.unshift({ - token: ["meta.tag.punctuation.tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], - regex: "(<)(" + tag + "(?=\\s|>|$))", - next: [ - { include: "attributes" }, - { token: "meta.tag.punctuation.tag-close.xml", regex: "/?>", next: prefix + "start" } - ] - }); - this.$rules[tag + "-end"] = [ - { include: "attributes" }, - { token: "meta.tag.punctuation.tag-close.xml", regex: "/?>", next: "start", - onMatch: function (value, currentState, stack) { - stack.splice(0); - return this.token; - } } - ]; - this.embedRules(HighlightRules, prefix, [{ - token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], - regex: "(|$))", - next: tag + "-end" - }, { - token: "string.cdata.xml", - regex: "<\\!\\[CDATA\\[" - }, { - token: "string.cdata.xml", - regex: "\\]\\]>" - }]); - }; -}).call(TextHighlightRules.prototype); -oop.inherits(XmlHighlightRules, TextHighlightRules); -exports.XmlHighlightRules = XmlHighlightRules; - -}); - -ace.define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"], function(require, exports, module){"use strict"; -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; -var lang = require("../../lib/lang"); -function is(token, type) { - return token && token.type.lastIndexOf(type + ".xml") > -1; -} -var XmlBehaviour = function () { - this.add("string_dquotes", "insertion", function (state, action, editor, session, text) { - if (text == '"' || text == "'") { - var quote = text; - var selected = session.doc.getTextRange(editor.getSelectionRange()); - if (selected !== "" && selected !== "'" && selected != '"' && editor.getWrapBehavioursEnabled()) { - return { - text: quote + selected + quote, - selection: false - }; - } - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - if (rightChar == quote && (is(token, "attribute-value") || is(token, "string"))) { - return { - text: "", - selection: [1, 1] - }; - } - if (!token) - token = iterator.stepBackward(); - if (!token) - return; - while (is(token, "tag-whitespace") || is(token, "whitespace")) { - token = iterator.stepBackward(); - } - var rightSpace = !rightChar || rightChar.match(/\s/); - if (is(token, "attribute-equals") && (rightSpace || rightChar == '>') || (is(token, "decl-attribute-equals") && (rightSpace || rightChar == '?'))) { - return { - text: quote + quote, - selection: [1, 1] - }; - } - } - }); - this.add("string_dquotes", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && (selected == '"' || selected == "'")) { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == selected) { - range.end.column++; - return range; - } - } - }); - this.add("autoclosing", "insertion", function (state, action, editor, session, text) { - if (text == '>') { - var position = editor.getSelectionRange().start; - var iterator = new TokenIterator(session, position.row, position.column); - var token = iterator.getCurrentToken() || iterator.stepBackward(); - if (!token || !(is(token, "tag-name") || is(token, "tag-whitespace") || is(token, "attribute-name") || is(token, "attribute-equals") || is(token, "attribute-value"))) - return; - if (is(token, "reference.attribute-value")) - return; - if (is(token, "attribute-value")) { - var tokenEndColumn = iterator.getCurrentTokenColumn() + token.value.length; - if (position.column < tokenEndColumn) - return; - if (position.column == tokenEndColumn) { - var nextToken = iterator.stepForward(); - if (nextToken && is(nextToken, "attribute-value")) - return; - iterator.stepBackward(); - } - } - if (/^\s*>/.test(session.getLine(position.row).slice(position.column))) - return; - while (!is(token, "tag-name")) { - token = iterator.stepBackward(); - if (token.value == "<") { - token = iterator.stepForward(); - break; - } - } - var tokenRow = iterator.getCurrentTokenRow(); - var tokenColumn = iterator.getCurrentTokenColumn(); - if (is(iterator.stepBackward(), "end-tag-open")) - return; - var element = token.value; - if (tokenRow == position.row) - element = element.substring(0, position.column - tokenColumn); - if (this.voidElements.hasOwnProperty(element.toLowerCase())) - return; - return { - text: ">" + "", - selection: [1, 1] - }; - } - }); - this.add("autoindent", "insertion", function (state, action, editor, session, text) { - if (text == "\n") { - var cursor = editor.getCursorPosition(); - var line = session.getLine(cursor.row); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - if (token && token.type.indexOf("tag-close") !== -1) { - if (token.value == "/>") - return; - while (token && token.type.indexOf("tag-name") === -1) { - token = iterator.stepBackward(); - } - if (!token) { - return; - } - var tag = token.value; - var row = iterator.getCurrentTokenRow(); - token = iterator.stepBackward(); - if (!token || token.type.indexOf("end-tag") !== -1) { - return; - } - if (this.voidElements && !this.voidElements[tag]) { - var nextToken = session.getTokenAt(cursor.row, cursor.column + 1); - var line = session.getLine(row); - var nextIndent = this.$getIndent(line); - var indent = nextIndent + session.getTabString(); - if (nextToken && nextToken.value === " -1; -} -(function () { - this.getFoldWidget = function (session, foldStyle, row) { - var tag = this._getFirstTagInLine(session, row); - if (!tag) - return this.getCommentFoldWidget(session, row); - if (tag.closing || (!tag.tagName && tag.selfClosing)) - return foldStyle === "markbeginend" ? "end" : ""; - if (!tag.tagName || tag.selfClosing || this.voidElements.hasOwnProperty(tag.tagName.toLowerCase())) - return ""; - if (this._findEndTagInLine(session, row, tag.tagName, tag.end.column)) - return ""; - return "start"; - }; - this.getCommentFoldWidget = function (session, row) { - if (/comment/.test(session.getState(row)) && /'; - break; - } - } - return tag; - } - else if (is(token, "tag-close")) { - tag.selfClosing = token.value == '/>'; - return tag; - } - tag.start.column += token.value.length; - } - return null; - }; - this._findEndTagInLine = function (session, row, tagName, startColumn) { - var tokens = session.getTokens(row); - var column = 0; - for (var i = 0; i < tokens.length; i++) { - var token = tokens[i]; - column += token.value.length; - if (column < startColumn) - continue; - if (is(token, "end-tag-open")) { - token = tokens[i + 1]; - if (token && token.value == tagName) - return true; - } - } - return false; - }; - this.getFoldWidgetRange = function (session, foldStyle, row) { - var tags = session.getMatchingTags({ row: row, column: 0 }); - if (tags) { - return new Range(tags.openTag.end.row, tags.openTag.end.column, tags.closeTag.start.row, tags.closeTag.start.column); - } - else { - return this.getCommentFoldWidget(session, row) - && session.getCommentFoldRange(row, session.getLine(row).length); - } - }; -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/xml",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/xml_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/xml","ace/worker/worker_client"], function(require, exports, module){"use strict"; -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var TextMode = require("./text").Mode; -var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules; -var XmlBehaviour = require("./behaviour/xml").XmlBehaviour; -var XmlFoldMode = require("./folding/xml").FoldMode; -var WorkerClient = require("../worker/worker_client").WorkerClient; -var Mode = function () { - this.HighlightRules = XmlHighlightRules; - this.$behaviour = new XmlBehaviour(); - this.foldingRules = new XmlFoldMode(); -}; -oop.inherits(Mode, TextMode); -(function () { - this.voidElements = lang.arrayToMap([]); - this.blockComment = { start: "" }; - this.createWorker = function (session) { - var worker = new WorkerClient(["ace"], "ace/mode/xml_worker", "Worker"); - worker.attachToDocument(session.getDocument()); - worker.on("error", function (e) { - session.setAnnotations(e.data); - }); - worker.on("terminate", function () { - session.clearAnnotations(); - }); - return worker; - }; - this.$id = "ace/mode/xml"; -}).call(Mode.prototype); -exports.Mode = Mode; - -}); (function() { - ace.require(["ace/mode/xml"], function(m) { - if ( true && module) { - module.exports = m; - } - }); - })(); - - -/***/ }), - -/***/ 203: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -/* module decorator */ module = __webpack_require__.nmd(module); -ace.define("ace/theme/github-css",["require","exports","module"], function(require, exports, module){module.exports = "/* CSS style content from github's default pygments highlighter template.\n Cursor and selection styles from textmate.css. */\n.ace-github .ace_gutter {\n background: #e8e8e8;\n color: #AAA;\n}\n\n.ace-github {\n background: #fff;\n color: #000;\n}\n\n.ace-github .ace_keyword {\n font-weight: bold;\n}\n\n.ace-github .ace_string {\n color: #D14;\n}\n\n.ace-github .ace_variable.ace_class {\n color: teal;\n}\n\n.ace-github .ace_constant.ace_numeric {\n color: #099;\n}\n\n.ace-github .ace_constant.ace_buildin {\n color: #0086B3;\n}\n\n.ace-github .ace_support.ace_function {\n color: #0086B3;\n}\n\n.ace-github .ace_comment {\n color: #998;\n font-style: italic;\n}\n\n.ace-github .ace_variable.ace_language {\n color: #0086B3;\n}\n\n.ace-github .ace_paren {\n font-weight: bold;\n}\n\n.ace-github .ace_boolean {\n font-weight: bold;\n}\n\n.ace-github .ace_string.ace_regexp {\n color: #009926;\n font-weight: normal;\n}\n\n.ace-github .ace_variable.ace_instance {\n color: teal;\n}\n\n.ace-github .ace_constant.ace_language {\n font-weight: bold;\n}\n\n.ace-github .ace_cursor {\n color: black;\n}\n\n.ace-github.ace_focus .ace_marker-layer .ace_active-line {\n background: rgb(255, 255, 204);\n}\n.ace-github .ace_marker-layer .ace_active-line {\n background: rgb(245, 245, 245);\n}\n\n.ace-github .ace_marker-layer .ace_selection {\n background: rgb(181, 213, 255);\n}\n\n.ace-github.ace_multiselect .ace_selection.ace_start {\n box-shadow: 0 0 3px 0px white;\n}\n/* bold keywords cause cursor issues for some fonts */\n/* this disables bold style for editor and keeps for static highlighter */\n.ace-github.ace_nobold .ace_line > span {\n font-weight: normal !important;\n}\n\n.ace-github .ace_marker-layer .ace_step {\n background: rgb(252, 255, 0);\n}\n\n.ace-github .ace_marker-layer .ace_stack {\n background: rgb(164, 229, 101);\n}\n\n.ace-github .ace_marker-layer .ace_bracket {\n margin: -1px 0 0 -1px;\n border: 1px solid rgb(192, 192, 192);\n}\n\n.ace-github .ace_gutter-active-line {\n background-color : rgba(0, 0, 0, 0.07);\n}\n\n.ace-github .ace_marker-layer .ace_selected-word {\n background: rgb(250, 250, 255);\n border: 1px solid rgb(200, 200, 250);\n}\n\n.ace-github .ace_invisible {\n color: #BFBFBF\n}\n\n.ace-github .ace_print-margin {\n width: 1px;\n background: #e8e8e8;\n}\n\n.ace-github .ace_indent-guide {\n background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==\") right repeat-y;\n}\n\n.ace-github .ace_indent-guide-active {\n background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAAZSURBVHjaYvj///9/hivKyv8BAAAA//8DACLqBhbvk+/eAAAAAElFTkSuQmCC\") right repeat-y;\n}\n"; - -}); - -ace.define("ace/theme/github",["require","exports","module","ace/theme/github-css","ace/lib/dom"], function(require, exports, module){exports.isDark = false; -exports.cssClass = "ace-github"; -exports.cssText = require("./github-css"); -var dom = require("../lib/dom"); -dom.importCssString(exports.cssText, exports.cssClass, false); - -}); (function() { - ace.require(["ace/theme/github"], function(m) { - if ( true && module) { - module.exports = m; - } - }); - })(); - - -/***/ }), - -/***/ 821: -/***/ ((module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ Z: () => (__WEBPACK_DEFAULT_EXPORT__) -/* harmony export */ }); -/* harmony import */ var _css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(537); -/* harmony import */ var _css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(645); -/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); -// Imports - - -var ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); -// Module -___CSS_LOADER_EXPORT___.push([module.id, `.flatpickr-calendar{background:transparent;opacity:0;display:none;text-align:center;visibility:hidden;padding:0;-webkit-animation:none;animation:none;direction:ltr;border:0;font-size:14px;line-height:24px;border-radius:5px;position:absolute;width:307.875px;-webkit-box-sizing:border-box;box-sizing:border-box;-ms-touch-action:manipulation;touch-action:manipulation;background:#fff;-webkit-box-shadow:1px 0 0 #e6e6e6,-1px 0 0 #e6e6e6,0 1px 0 #e6e6e6,0 -1px 0 #e6e6e6,0 3px 13px rgba(0,0,0,0.08);box-shadow:1px 0 0 #e6e6e6,-1px 0 0 #e6e6e6,0 1px 0 #e6e6e6,0 -1px 0 #e6e6e6,0 3px 13px rgba(0,0,0,0.08)}.flatpickr-calendar.open,.flatpickr-calendar.inline{opacity:1;max-height:640px;visibility:visible}.flatpickr-calendar.open{display:inline-block;z-index:99999}.flatpickr-calendar.animate.open{-webkit-animation:fpFadeInDown 300ms cubic-bezier(.23,1,.32,1);animation:fpFadeInDown 300ms cubic-bezier(.23,1,.32,1)}.flatpickr-calendar.inline{display:block;position:relative;top:2px}.flatpickr-calendar.static{position:absolute;top:calc(100% + 2px)}.flatpickr-calendar.static.open{z-index:999;display:block}.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+1) .flatpickr-day.inRange:nth-child(7n+7){-webkit-box-shadow:none !important;box-shadow:none !important}.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+2) .flatpickr-day.inRange:nth-child(7n+1){-webkit-box-shadow:-2px 0 0 #e6e6e6,5px 0 0 #e6e6e6;box-shadow:-2px 0 0 #e6e6e6,5px 0 0 #e6e6e6}.flatpickr-calendar .hasWeeks .dayContainer,.flatpickr-calendar .hasTime .dayContainer{border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.flatpickr-calendar .hasWeeks .dayContainer{border-left:0}.flatpickr-calendar.hasTime .flatpickr-time{height:40px;border-top:1px solid #e6e6e6}.flatpickr-calendar.noCalendar.hasTime .flatpickr-time{height:auto}.flatpickr-calendar:before,.flatpickr-calendar:after{position:absolute;display:block;pointer-events:none;border:solid transparent;content:'';height:0;width:0;left:22px}.flatpickr-calendar.rightMost:before,.flatpickr-calendar.arrowRight:before,.flatpickr-calendar.rightMost:after,.flatpickr-calendar.arrowRight:after{left:auto;right:22px}.flatpickr-calendar.arrowCenter:before,.flatpickr-calendar.arrowCenter:after{left:50%;right:50%}.flatpickr-calendar:before{border-width:5px;margin:0 -5px}.flatpickr-calendar:after{border-width:4px;margin:0 -4px}.flatpickr-calendar.arrowTop:before,.flatpickr-calendar.arrowTop:after{bottom:100%}.flatpickr-calendar.arrowTop:before{border-bottom-color:#e6e6e6}.flatpickr-calendar.arrowTop:after{border-bottom-color:#fff}.flatpickr-calendar.arrowBottom:before,.flatpickr-calendar.arrowBottom:after{top:100%}.flatpickr-calendar.arrowBottom:before{border-top-color:#e6e6e6}.flatpickr-calendar.arrowBottom:after{border-top-color:#fff}.flatpickr-calendar:focus{outline:0}.flatpickr-wrapper{position:relative;display:inline-block}.flatpickr-months{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.flatpickr-months .flatpickr-month{background:transparent;color:rgba(0,0,0,0.9);fill:rgba(0,0,0,0.9);height:34px;line-height:1;text-align:center;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:hidden;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}.flatpickr-months .flatpickr-prev-month,.flatpickr-months .flatpickr-next-month{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;text-decoration:none;cursor:pointer;position:absolute;top:0;height:34px;padding:10px;z-index:3;color:rgba(0,0,0,0.9);fill:rgba(0,0,0,0.9)}.flatpickr-months .flatpickr-prev-month.flatpickr-disabled,.flatpickr-months .flatpickr-next-month.flatpickr-disabled{display:none}.flatpickr-months .flatpickr-prev-month i,.flatpickr-months .flatpickr-next-month i{position:relative}.flatpickr-months .flatpickr-prev-month.flatpickr-prev-month,.flatpickr-months .flatpickr-next-month.flatpickr-prev-month{/* - /*rtl:begin:ignore*/left:0/* - /*rtl:end:ignore*/}/* - /*rtl:begin:ignore*/ -/* - /*rtl:end:ignore*/ -.flatpickr-months .flatpickr-prev-month.flatpickr-next-month,.flatpickr-months .flatpickr-next-month.flatpickr-next-month{/* - /*rtl:begin:ignore*/right:0/* - /*rtl:end:ignore*/}/* - /*rtl:begin:ignore*/ -/* - /*rtl:end:ignore*/ -.flatpickr-months .flatpickr-prev-month:hover,.flatpickr-months .flatpickr-next-month:hover{color:#959ea9}.flatpickr-months .flatpickr-prev-month:hover svg,.flatpickr-months .flatpickr-next-month:hover svg{fill:#f64747}.flatpickr-months .flatpickr-prev-month svg,.flatpickr-months .flatpickr-next-month svg{width:14px;height:14px}.flatpickr-months .flatpickr-prev-month svg path,.flatpickr-months .flatpickr-next-month svg path{-webkit-transition:fill .1s;transition:fill .1s;fill:inherit}.numInputWrapper{position:relative;height:auto}.numInputWrapper input,.numInputWrapper span{display:inline-block}.numInputWrapper input{width:100%}.numInputWrapper input::-ms-clear{display:none}.numInputWrapper input::-webkit-outer-spin-button,.numInputWrapper input::-webkit-inner-spin-button{margin:0;-webkit-appearance:none}.numInputWrapper span{position:absolute;right:0;width:14px;padding:0 4px 0 2px;height:50%;line-height:50%;opacity:0;cursor:pointer;border:1px solid rgba(57,57,57,0.15);-webkit-box-sizing:border-box;box-sizing:border-box}.numInputWrapper span:hover{background:rgba(0,0,0,0.1)}.numInputWrapper span:active{background:rgba(0,0,0,0.2)}.numInputWrapper span:after{display:block;content:"";position:absolute}.numInputWrapper span.arrowUp{top:0;border-bottom:0}.numInputWrapper span.arrowUp:after{border-left:4px solid transparent;border-right:4px solid transparent;border-bottom:4px solid rgba(57,57,57,0.6);top:26%}.numInputWrapper span.arrowDown{top:50%}.numInputWrapper span.arrowDown:after{border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px solid rgba(57,57,57,0.6);top:40%}.numInputWrapper span svg{width:inherit;height:auto}.numInputWrapper span svg path{fill:rgba(0,0,0,0.5)}.numInputWrapper:hover{background:rgba(0,0,0,0.05)}.numInputWrapper:hover span{opacity:1}.flatpickr-current-month{font-size:135%;line-height:inherit;font-weight:300;color:inherit;position:absolute;width:75%;left:12.5%;padding:7.48px 0 0 0;line-height:1;height:34px;display:inline-block;text-align:center;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.flatpickr-current-month span.cur-month{font-family:inherit;font-weight:700;color:inherit;display:inline-block;margin-left:.5ch;padding:0}.flatpickr-current-month span.cur-month:hover{background:rgba(0,0,0,0.05)}.flatpickr-current-month .numInputWrapper{width:6ch;width:7ch\\0;display:inline-block}.flatpickr-current-month .numInputWrapper span.arrowUp:after{border-bottom-color:rgba(0,0,0,0.9)}.flatpickr-current-month .numInputWrapper span.arrowDown:after{border-top-color:rgba(0,0,0,0.9)}.flatpickr-current-month input.cur-year{background:transparent;-webkit-box-sizing:border-box;box-sizing:border-box;color:inherit;cursor:text;padding:0 0 0 .5ch;margin:0;display:inline-block;font-size:inherit;font-family:inherit;font-weight:300;line-height:inherit;height:auto;border:0;border-radius:0;vertical-align:initial;-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.flatpickr-current-month input.cur-year:focus{outline:0}.flatpickr-current-month input.cur-year[disabled],.flatpickr-current-month input.cur-year[disabled]:hover{font-size:100%;color:rgba(0,0,0,0.5);background:transparent;pointer-events:none}.flatpickr-current-month .flatpickr-monthDropdown-months{appearance:menulist;background:transparent;border:none;border-radius:0;box-sizing:border-box;color:inherit;cursor:pointer;font-size:inherit;font-family:inherit;font-weight:300;height:auto;line-height:inherit;margin:-1px 0 0 0;outline:none;padding:0 0 0 .5ch;position:relative;vertical-align:initial;-webkit-box-sizing:border-box;-webkit-appearance:menulist;-moz-appearance:menulist;width:auto}.flatpickr-current-month .flatpickr-monthDropdown-months:focus,.flatpickr-current-month .flatpickr-monthDropdown-months:active{outline:none}.flatpickr-current-month .flatpickr-monthDropdown-months:hover{background:rgba(0,0,0,0.05)}.flatpickr-current-month .flatpickr-monthDropdown-months .flatpickr-monthDropdown-month{background-color:transparent;outline:none;padding:0}.flatpickr-weekdays{background:transparent;text-align:center;overflow:hidden;width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;height:28px}.flatpickr-weekdays .flatpickr-weekdaycontainer{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}span.flatpickr-weekday{cursor:default;font-size:90%;background:transparent;color:rgba(0,0,0,0.54);line-height:1;margin:0;text-align:center;display:block;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;font-weight:bolder}.dayContainer,.flatpickr-weeks{padding:1px 0 0 0}.flatpickr-days{position:relative;overflow:hidden;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:flex-start;width:307.875px}.flatpickr-days:focus{outline:0}.dayContainer{padding:0;outline:0;text-align:left;width:307.875px;min-width:307.875px;max-width:307.875px;-webkit-box-sizing:border-box;box-sizing:border-box;display:inline-block;display:-ms-flexbox;display:-webkit-box;display:-webkit-flex;display:flex;-webkit-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-wrap:wrap;-ms-flex-pack:justify;-webkit-justify-content:space-around;justify-content:space-around;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}.dayContainer + .dayContainer{-webkit-box-shadow:-1px 0 0 #e6e6e6;box-shadow:-1px 0 0 #e6e6e6}.flatpickr-day{background:none;border:1px solid transparent;border-radius:150px;-webkit-box-sizing:border-box;box-sizing:border-box;color:#393939;cursor:pointer;font-weight:400;width:14.2857143%;-webkit-flex-basis:14.2857143%;-ms-flex-preferred-size:14.2857143%;flex-basis:14.2857143%;max-width:39px;height:39px;line-height:39px;margin:0;display:inline-block;position:relative;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;text-align:center}.flatpickr-day.inRange,.flatpickr-day.prevMonthDay.inRange,.flatpickr-day.nextMonthDay.inRange,.flatpickr-day.today.inRange,.flatpickr-day.prevMonthDay.today.inRange,.flatpickr-day.nextMonthDay.today.inRange,.flatpickr-day:hover,.flatpickr-day.prevMonthDay:hover,.flatpickr-day.nextMonthDay:hover,.flatpickr-day:focus,.flatpickr-day.prevMonthDay:focus,.flatpickr-day.nextMonthDay:focus{cursor:pointer;outline:0;background:#e6e6e6;border-color:#e6e6e6}.flatpickr-day.today{border-color:#959ea9}.flatpickr-day.today:hover,.flatpickr-day.today:focus{border-color:#959ea9;background:#959ea9;color:#fff}.flatpickr-day.selected,.flatpickr-day.startRange,.flatpickr-day.endRange,.flatpickr-day.selected.inRange,.flatpickr-day.startRange.inRange,.flatpickr-day.endRange.inRange,.flatpickr-day.selected:focus,.flatpickr-day.startRange:focus,.flatpickr-day.endRange:focus,.flatpickr-day.selected:hover,.flatpickr-day.startRange:hover,.flatpickr-day.endRange:hover,.flatpickr-day.selected.prevMonthDay,.flatpickr-day.startRange.prevMonthDay,.flatpickr-day.endRange.prevMonthDay,.flatpickr-day.selected.nextMonthDay,.flatpickr-day.startRange.nextMonthDay,.flatpickr-day.endRange.nextMonthDay{background:#569ff7;-webkit-box-shadow:none;box-shadow:none;color:#fff;border-color:#569ff7}.flatpickr-day.selected.startRange,.flatpickr-day.startRange.startRange,.flatpickr-day.endRange.startRange{border-radius:50px 0 0 50px}.flatpickr-day.selected.endRange,.flatpickr-day.startRange.endRange,.flatpickr-day.endRange.endRange{border-radius:0 50px 50px 0}.flatpickr-day.selected.startRange + .endRange:not(:nth-child(7n+1)),.flatpickr-day.startRange.startRange + .endRange:not(:nth-child(7n+1)),.flatpickr-day.endRange.startRange + .endRange:not(:nth-child(7n+1)){-webkit-box-shadow:-10px 0 0 #569ff7;box-shadow:-10px 0 0 #569ff7}.flatpickr-day.selected.startRange.endRange,.flatpickr-day.startRange.startRange.endRange,.flatpickr-day.endRange.startRange.endRange{border-radius:50px}.flatpickr-day.inRange{border-radius:0;-webkit-box-shadow:-5px 0 0 #e6e6e6,5px 0 0 #e6e6e6;box-shadow:-5px 0 0 #e6e6e6,5px 0 0 #e6e6e6}.flatpickr-day.flatpickr-disabled,.flatpickr-day.flatpickr-disabled:hover,.flatpickr-day.prevMonthDay,.flatpickr-day.nextMonthDay,.flatpickr-day.notAllowed,.flatpickr-day.notAllowed.prevMonthDay,.flatpickr-day.notAllowed.nextMonthDay{color:rgba(57,57,57,0.3);background:transparent;border-color:transparent;cursor:default}.flatpickr-day.flatpickr-disabled,.flatpickr-day.flatpickr-disabled:hover{cursor:not-allowed;color:rgba(57,57,57,0.1)}.flatpickr-day.week.selected{border-radius:0;-webkit-box-shadow:-5px 0 0 #569ff7,5px 0 0 #569ff7;box-shadow:-5px 0 0 #569ff7,5px 0 0 #569ff7}.flatpickr-day.hidden{visibility:hidden}.rangeMode .flatpickr-day{margin-top:1px}.flatpickr-weekwrapper{float:left}.flatpickr-weekwrapper .flatpickr-weeks{padding:0 12px;-webkit-box-shadow:1px 0 0 #e6e6e6;box-shadow:1px 0 0 #e6e6e6}.flatpickr-weekwrapper .flatpickr-weekday{float:none;width:100%;line-height:28px}.flatpickr-weekwrapper span.flatpickr-day,.flatpickr-weekwrapper span.flatpickr-day:hover{display:block;width:100%;max-width:none;color:rgba(57,57,57,0.3);background:transparent;cursor:default;border:none}.flatpickr-innerContainer{display:block;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden}.flatpickr-rContainer{display:inline-block;padding:0;-webkit-box-sizing:border-box;box-sizing:border-box}.flatpickr-time{text-align:center;outline:0;display:block;height:0;line-height:40px;max-height:40px;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.flatpickr-time:after{content:"";display:table;clear:both}.flatpickr-time .numInputWrapper{-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;width:40%;height:40px;float:left}.flatpickr-time .numInputWrapper span.arrowUp:after{border-bottom-color:#393939}.flatpickr-time .numInputWrapper span.arrowDown:after{border-top-color:#393939}.flatpickr-time.hasSeconds .numInputWrapper{width:26%}.flatpickr-time.time24hr .numInputWrapper{width:49%}.flatpickr-time input{background:transparent;-webkit-box-shadow:none;box-shadow:none;border:0;border-radius:0;text-align:center;margin:0;padding:0;height:inherit;line-height:inherit;color:#393939;font-size:14px;position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.flatpickr-time input.flatpickr-hour{font-weight:bold}.flatpickr-time input.flatpickr-minute,.flatpickr-time input.flatpickr-second{font-weight:400}.flatpickr-time input:focus{outline:0;border:0}.flatpickr-time .flatpickr-time-separator,.flatpickr-time .flatpickr-am-pm{height:inherit;float:left;line-height:inherit;color:#393939;font-weight:bold;width:2%;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-align-self:center;-ms-flex-item-align:center;align-self:center}.flatpickr-time .flatpickr-am-pm{outline:0;width:18%;cursor:pointer;text-align:center;font-weight:400}.flatpickr-time input:hover,.flatpickr-time .flatpickr-am-pm:hover,.flatpickr-time input:focus,.flatpickr-time .flatpickr-am-pm:focus{background:#eee}.flatpickr-input[readonly]{cursor:pointer}@-webkit-keyframes fpFadeInDown{from{opacity:0;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@keyframes fpFadeInDown{from{opacity:0;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}`, "",{"version":3,"sources":["webpack://./node_modules/flatpickr/dist/flatpickr.min.css"],"names":[],"mappings":"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","sourcesContent":[".flatpickr-calendar{background:transparent;opacity:0;display:none;text-align:center;visibility:hidden;padding:0;-webkit-animation:none;animation:none;direction:ltr;border:0;font-size:14px;line-height:24px;border-radius:5px;position:absolute;width:307.875px;-webkit-box-sizing:border-box;box-sizing:border-box;-ms-touch-action:manipulation;touch-action:manipulation;background:#fff;-webkit-box-shadow:1px 0 0 #e6e6e6,-1px 0 0 #e6e6e6,0 1px 0 #e6e6e6,0 -1px 0 #e6e6e6,0 3px 13px rgba(0,0,0,0.08);box-shadow:1px 0 0 #e6e6e6,-1px 0 0 #e6e6e6,0 1px 0 #e6e6e6,0 -1px 0 #e6e6e6,0 3px 13px rgba(0,0,0,0.08)}.flatpickr-calendar.open,.flatpickr-calendar.inline{opacity:1;max-height:640px;visibility:visible}.flatpickr-calendar.open{display:inline-block;z-index:99999}.flatpickr-calendar.animate.open{-webkit-animation:fpFadeInDown 300ms cubic-bezier(.23,1,.32,1);animation:fpFadeInDown 300ms cubic-bezier(.23,1,.32,1)}.flatpickr-calendar.inline{display:block;position:relative;top:2px}.flatpickr-calendar.static{position:absolute;top:calc(100% + 2px)}.flatpickr-calendar.static.open{z-index:999;display:block}.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+1) .flatpickr-day.inRange:nth-child(7n+7){-webkit-box-shadow:none !important;box-shadow:none !important}.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+2) .flatpickr-day.inRange:nth-child(7n+1){-webkit-box-shadow:-2px 0 0 #e6e6e6,5px 0 0 #e6e6e6;box-shadow:-2px 0 0 #e6e6e6,5px 0 0 #e6e6e6}.flatpickr-calendar .hasWeeks .dayContainer,.flatpickr-calendar .hasTime .dayContainer{border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.flatpickr-calendar .hasWeeks .dayContainer{border-left:0}.flatpickr-calendar.hasTime .flatpickr-time{height:40px;border-top:1px solid #e6e6e6}.flatpickr-calendar.noCalendar.hasTime .flatpickr-time{height:auto}.flatpickr-calendar:before,.flatpickr-calendar:after{position:absolute;display:block;pointer-events:none;border:solid transparent;content:'';height:0;width:0;left:22px}.flatpickr-calendar.rightMost:before,.flatpickr-calendar.arrowRight:before,.flatpickr-calendar.rightMost:after,.flatpickr-calendar.arrowRight:after{left:auto;right:22px}.flatpickr-calendar.arrowCenter:before,.flatpickr-calendar.arrowCenter:after{left:50%;right:50%}.flatpickr-calendar:before{border-width:5px;margin:0 -5px}.flatpickr-calendar:after{border-width:4px;margin:0 -4px}.flatpickr-calendar.arrowTop:before,.flatpickr-calendar.arrowTop:after{bottom:100%}.flatpickr-calendar.arrowTop:before{border-bottom-color:#e6e6e6}.flatpickr-calendar.arrowTop:after{border-bottom-color:#fff}.flatpickr-calendar.arrowBottom:before,.flatpickr-calendar.arrowBottom:after{top:100%}.flatpickr-calendar.arrowBottom:before{border-top-color:#e6e6e6}.flatpickr-calendar.arrowBottom:after{border-top-color:#fff}.flatpickr-calendar:focus{outline:0}.flatpickr-wrapper{position:relative;display:inline-block}.flatpickr-months{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.flatpickr-months .flatpickr-month{background:transparent;color:rgba(0,0,0,0.9);fill:rgba(0,0,0,0.9);height:34px;line-height:1;text-align:center;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:hidden;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}.flatpickr-months .flatpickr-prev-month,.flatpickr-months .flatpickr-next-month{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;text-decoration:none;cursor:pointer;position:absolute;top:0;height:34px;padding:10px;z-index:3;color:rgba(0,0,0,0.9);fill:rgba(0,0,0,0.9)}.flatpickr-months .flatpickr-prev-month.flatpickr-disabled,.flatpickr-months .flatpickr-next-month.flatpickr-disabled{display:none}.flatpickr-months .flatpickr-prev-month i,.flatpickr-months .flatpickr-next-month i{position:relative}.flatpickr-months .flatpickr-prev-month.flatpickr-prev-month,.flatpickr-months .flatpickr-next-month.flatpickr-prev-month{/*\n /*rtl:begin:ignore*/left:0/*\n /*rtl:end:ignore*/}/*\n /*rtl:begin:ignore*/\n/*\n /*rtl:end:ignore*/\n.flatpickr-months .flatpickr-prev-month.flatpickr-next-month,.flatpickr-months .flatpickr-next-month.flatpickr-next-month{/*\n /*rtl:begin:ignore*/right:0/*\n /*rtl:end:ignore*/}/*\n /*rtl:begin:ignore*/\n/*\n /*rtl:end:ignore*/\n.flatpickr-months .flatpickr-prev-month:hover,.flatpickr-months .flatpickr-next-month:hover{color:#959ea9}.flatpickr-months .flatpickr-prev-month:hover svg,.flatpickr-months .flatpickr-next-month:hover svg{fill:#f64747}.flatpickr-months .flatpickr-prev-month svg,.flatpickr-months .flatpickr-next-month svg{width:14px;height:14px}.flatpickr-months .flatpickr-prev-month svg path,.flatpickr-months .flatpickr-next-month svg path{-webkit-transition:fill .1s;transition:fill .1s;fill:inherit}.numInputWrapper{position:relative;height:auto}.numInputWrapper input,.numInputWrapper span{display:inline-block}.numInputWrapper input{width:100%}.numInputWrapper input::-ms-clear{display:none}.numInputWrapper input::-webkit-outer-spin-button,.numInputWrapper input::-webkit-inner-spin-button{margin:0;-webkit-appearance:none}.numInputWrapper span{position:absolute;right:0;width:14px;padding:0 4px 0 2px;height:50%;line-height:50%;opacity:0;cursor:pointer;border:1px solid rgba(57,57,57,0.15);-webkit-box-sizing:border-box;box-sizing:border-box}.numInputWrapper span:hover{background:rgba(0,0,0,0.1)}.numInputWrapper span:active{background:rgba(0,0,0,0.2)}.numInputWrapper span:after{display:block;content:\"\";position:absolute}.numInputWrapper span.arrowUp{top:0;border-bottom:0}.numInputWrapper span.arrowUp:after{border-left:4px solid transparent;border-right:4px solid transparent;border-bottom:4px solid rgba(57,57,57,0.6);top:26%}.numInputWrapper span.arrowDown{top:50%}.numInputWrapper span.arrowDown:after{border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px solid rgba(57,57,57,0.6);top:40%}.numInputWrapper span svg{width:inherit;height:auto}.numInputWrapper span svg path{fill:rgba(0,0,0,0.5)}.numInputWrapper:hover{background:rgba(0,0,0,0.05)}.numInputWrapper:hover span{opacity:1}.flatpickr-current-month{font-size:135%;line-height:inherit;font-weight:300;color:inherit;position:absolute;width:75%;left:12.5%;padding:7.48px 0 0 0;line-height:1;height:34px;display:inline-block;text-align:center;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.flatpickr-current-month span.cur-month{font-family:inherit;font-weight:700;color:inherit;display:inline-block;margin-left:.5ch;padding:0}.flatpickr-current-month span.cur-month:hover{background:rgba(0,0,0,0.05)}.flatpickr-current-month .numInputWrapper{width:6ch;width:7ch\\0;display:inline-block}.flatpickr-current-month .numInputWrapper span.arrowUp:after{border-bottom-color:rgba(0,0,0,0.9)}.flatpickr-current-month .numInputWrapper span.arrowDown:after{border-top-color:rgba(0,0,0,0.9)}.flatpickr-current-month input.cur-year{background:transparent;-webkit-box-sizing:border-box;box-sizing:border-box;color:inherit;cursor:text;padding:0 0 0 .5ch;margin:0;display:inline-block;font-size:inherit;font-family:inherit;font-weight:300;line-height:inherit;height:auto;border:0;border-radius:0;vertical-align:initial;-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.flatpickr-current-month input.cur-year:focus{outline:0}.flatpickr-current-month input.cur-year[disabled],.flatpickr-current-month input.cur-year[disabled]:hover{font-size:100%;color:rgba(0,0,0,0.5);background:transparent;pointer-events:none}.flatpickr-current-month .flatpickr-monthDropdown-months{appearance:menulist;background:transparent;border:none;border-radius:0;box-sizing:border-box;color:inherit;cursor:pointer;font-size:inherit;font-family:inherit;font-weight:300;height:auto;line-height:inherit;margin:-1px 0 0 0;outline:none;padding:0 0 0 .5ch;position:relative;vertical-align:initial;-webkit-box-sizing:border-box;-webkit-appearance:menulist;-moz-appearance:menulist;width:auto}.flatpickr-current-month .flatpickr-monthDropdown-months:focus,.flatpickr-current-month .flatpickr-monthDropdown-months:active{outline:none}.flatpickr-current-month .flatpickr-monthDropdown-months:hover{background:rgba(0,0,0,0.05)}.flatpickr-current-month .flatpickr-monthDropdown-months .flatpickr-monthDropdown-month{background-color:transparent;outline:none;padding:0}.flatpickr-weekdays{background:transparent;text-align:center;overflow:hidden;width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;height:28px}.flatpickr-weekdays .flatpickr-weekdaycontainer{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}span.flatpickr-weekday{cursor:default;font-size:90%;background:transparent;color:rgba(0,0,0,0.54);line-height:1;margin:0;text-align:center;display:block;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;font-weight:bolder}.dayContainer,.flatpickr-weeks{padding:1px 0 0 0}.flatpickr-days{position:relative;overflow:hidden;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:flex-start;width:307.875px}.flatpickr-days:focus{outline:0}.dayContainer{padding:0;outline:0;text-align:left;width:307.875px;min-width:307.875px;max-width:307.875px;-webkit-box-sizing:border-box;box-sizing:border-box;display:inline-block;display:-ms-flexbox;display:-webkit-box;display:-webkit-flex;display:flex;-webkit-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-wrap:wrap;-ms-flex-pack:justify;-webkit-justify-content:space-around;justify-content:space-around;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}.dayContainer + .dayContainer{-webkit-box-shadow:-1px 0 0 #e6e6e6;box-shadow:-1px 0 0 #e6e6e6}.flatpickr-day{background:none;border:1px solid transparent;border-radius:150px;-webkit-box-sizing:border-box;box-sizing:border-box;color:#393939;cursor:pointer;font-weight:400;width:14.2857143%;-webkit-flex-basis:14.2857143%;-ms-flex-preferred-size:14.2857143%;flex-basis:14.2857143%;max-width:39px;height:39px;line-height:39px;margin:0;display:inline-block;position:relative;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;text-align:center}.flatpickr-day.inRange,.flatpickr-day.prevMonthDay.inRange,.flatpickr-day.nextMonthDay.inRange,.flatpickr-day.today.inRange,.flatpickr-day.prevMonthDay.today.inRange,.flatpickr-day.nextMonthDay.today.inRange,.flatpickr-day:hover,.flatpickr-day.prevMonthDay:hover,.flatpickr-day.nextMonthDay:hover,.flatpickr-day:focus,.flatpickr-day.prevMonthDay:focus,.flatpickr-day.nextMonthDay:focus{cursor:pointer;outline:0;background:#e6e6e6;border-color:#e6e6e6}.flatpickr-day.today{border-color:#959ea9}.flatpickr-day.today:hover,.flatpickr-day.today:focus{border-color:#959ea9;background:#959ea9;color:#fff}.flatpickr-day.selected,.flatpickr-day.startRange,.flatpickr-day.endRange,.flatpickr-day.selected.inRange,.flatpickr-day.startRange.inRange,.flatpickr-day.endRange.inRange,.flatpickr-day.selected:focus,.flatpickr-day.startRange:focus,.flatpickr-day.endRange:focus,.flatpickr-day.selected:hover,.flatpickr-day.startRange:hover,.flatpickr-day.endRange:hover,.flatpickr-day.selected.prevMonthDay,.flatpickr-day.startRange.prevMonthDay,.flatpickr-day.endRange.prevMonthDay,.flatpickr-day.selected.nextMonthDay,.flatpickr-day.startRange.nextMonthDay,.flatpickr-day.endRange.nextMonthDay{background:#569ff7;-webkit-box-shadow:none;box-shadow:none;color:#fff;border-color:#569ff7}.flatpickr-day.selected.startRange,.flatpickr-day.startRange.startRange,.flatpickr-day.endRange.startRange{border-radius:50px 0 0 50px}.flatpickr-day.selected.endRange,.flatpickr-day.startRange.endRange,.flatpickr-day.endRange.endRange{border-radius:0 50px 50px 0}.flatpickr-day.selected.startRange + .endRange:not(:nth-child(7n+1)),.flatpickr-day.startRange.startRange + .endRange:not(:nth-child(7n+1)),.flatpickr-day.endRange.startRange + .endRange:not(:nth-child(7n+1)){-webkit-box-shadow:-10px 0 0 #569ff7;box-shadow:-10px 0 0 #569ff7}.flatpickr-day.selected.startRange.endRange,.flatpickr-day.startRange.startRange.endRange,.flatpickr-day.endRange.startRange.endRange{border-radius:50px}.flatpickr-day.inRange{border-radius:0;-webkit-box-shadow:-5px 0 0 #e6e6e6,5px 0 0 #e6e6e6;box-shadow:-5px 0 0 #e6e6e6,5px 0 0 #e6e6e6}.flatpickr-day.flatpickr-disabled,.flatpickr-day.flatpickr-disabled:hover,.flatpickr-day.prevMonthDay,.flatpickr-day.nextMonthDay,.flatpickr-day.notAllowed,.flatpickr-day.notAllowed.prevMonthDay,.flatpickr-day.notAllowed.nextMonthDay{color:rgba(57,57,57,0.3);background:transparent;border-color:transparent;cursor:default}.flatpickr-day.flatpickr-disabled,.flatpickr-day.flatpickr-disabled:hover{cursor:not-allowed;color:rgba(57,57,57,0.1)}.flatpickr-day.week.selected{border-radius:0;-webkit-box-shadow:-5px 0 0 #569ff7,5px 0 0 #569ff7;box-shadow:-5px 0 0 #569ff7,5px 0 0 #569ff7}.flatpickr-day.hidden{visibility:hidden}.rangeMode .flatpickr-day{margin-top:1px}.flatpickr-weekwrapper{float:left}.flatpickr-weekwrapper .flatpickr-weeks{padding:0 12px;-webkit-box-shadow:1px 0 0 #e6e6e6;box-shadow:1px 0 0 #e6e6e6}.flatpickr-weekwrapper .flatpickr-weekday{float:none;width:100%;line-height:28px}.flatpickr-weekwrapper span.flatpickr-day,.flatpickr-weekwrapper span.flatpickr-day:hover{display:block;width:100%;max-width:none;color:rgba(57,57,57,0.3);background:transparent;cursor:default;border:none}.flatpickr-innerContainer{display:block;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden}.flatpickr-rContainer{display:inline-block;padding:0;-webkit-box-sizing:border-box;box-sizing:border-box}.flatpickr-time{text-align:center;outline:0;display:block;height:0;line-height:40px;max-height:40px;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.flatpickr-time:after{content:\"\";display:table;clear:both}.flatpickr-time .numInputWrapper{-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;width:40%;height:40px;float:left}.flatpickr-time .numInputWrapper span.arrowUp:after{border-bottom-color:#393939}.flatpickr-time .numInputWrapper span.arrowDown:after{border-top-color:#393939}.flatpickr-time.hasSeconds .numInputWrapper{width:26%}.flatpickr-time.time24hr .numInputWrapper{width:49%}.flatpickr-time input{background:transparent;-webkit-box-shadow:none;box-shadow:none;border:0;border-radius:0;text-align:center;margin:0;padding:0;height:inherit;line-height:inherit;color:#393939;font-size:14px;position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.flatpickr-time input.flatpickr-hour{font-weight:bold}.flatpickr-time input.flatpickr-minute,.flatpickr-time input.flatpickr-second{font-weight:400}.flatpickr-time input:focus{outline:0;border:0}.flatpickr-time .flatpickr-time-separator,.flatpickr-time .flatpickr-am-pm{height:inherit;float:left;line-height:inherit;color:#393939;font-weight:bold;width:2%;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-align-self:center;-ms-flex-item-align:center;align-self:center}.flatpickr-time .flatpickr-am-pm{outline:0;width:18%;cursor:pointer;text-align:center;font-weight:400}.flatpickr-time input:hover,.flatpickr-time .flatpickr-am-pm:hover,.flatpickr-time input:focus,.flatpickr-time .flatpickr-am-pm:focus{background:#eee}.flatpickr-input[readonly]{cursor:pointer}@-webkit-keyframes fpFadeInDown{from{opacity:0;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@keyframes fpFadeInDown{from{opacity:0;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}"],"sourceRoot":""}]); -// Exports -/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); - - -/***/ }), - -/***/ 645: -/***/ ((module) => { - -"use strict"; - - -/* - MIT License http://www.opensource.org/licenses/mit-license.php - Author Tobias Koppers @sokra -*/ -module.exports = function (cssWithMappingToString) { - var list = []; - - // return the list of modules as css string - list.toString = function toString() { - return this.map(function (item) { - var content = ""; - var needLayer = typeof item[5] !== "undefined"; - if (item[4]) { - content += "@supports (".concat(item[4], ") {"); - } - if (item[2]) { - content += "@media ".concat(item[2], " {"); - } - if (needLayer) { - content += "@layer".concat(item[5].length > 0 ? " ".concat(item[5]) : "", " {"); - } - content += cssWithMappingToString(item); - if (needLayer) { - content += "}"; - } - if (item[2]) { - content += "}"; - } - if (item[4]) { - content += "}"; - } - return content; - }).join(""); - }; - - // import a list of modules into the list - list.i = function i(modules, media, dedupe, supports, layer) { - if (typeof modules === "string") { - modules = [[null, modules, undefined]]; - } - var alreadyImportedModules = {}; - if (dedupe) { - for (var k = 0; k < this.length; k++) { - var id = this[k][0]; - if (id != null) { - alreadyImportedModules[id] = true; - } - } - } - for (var _k = 0; _k < modules.length; _k++) { - var item = [].concat(modules[_k]); - if (dedupe && alreadyImportedModules[item[0]]) { - continue; - } - if (typeof layer !== "undefined") { - if (typeof item[5] === "undefined") { - item[5] = layer; - } else { - item[1] = "@layer".concat(item[5].length > 0 ? " ".concat(item[5]) : "", " {").concat(item[1], "}"); - item[5] = layer; - } - } - if (media) { - if (!item[2]) { - item[2] = media; - } else { - item[1] = "@media ".concat(item[2], " {").concat(item[1], "}"); - item[2] = media; - } - } - if (supports) { - if (!item[4]) { - item[4] = "".concat(supports); - } else { - item[1] = "@supports (".concat(item[4], ") {").concat(item[1], "}"); - item[4] = supports; - } - } - list.push(item); - } - }; - return list; -}; - -/***/ }), - -/***/ 537: -/***/ ((module) => { - -"use strict"; - - -module.exports = function (item) { - var content = item[1]; - var cssMapping = item[3]; - if (!cssMapping) { - return content; - } - if (typeof btoa === "function") { - var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(cssMapping)))); - var data = "sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(base64); - var sourceMapping = "/*# ".concat(data, " */"); - return [content].concat([sourceMapping]).join("\n"); - } - return [content].join("\n"); -}; - -/***/ }), - -/***/ 745: -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { - -"use strict"; -var __webpack_unused_export__; - - -var m = __webpack_require__(137); -if (true) { - exports.s = m.createRoot; - __webpack_unused_export__ = m.hydrateRoot; -} else { var i; } - - -/***/ }), - -/***/ 590: -/***/ ((module) => { - -/* global Map:readonly, Set:readonly, ArrayBuffer:readonly */ - -var hasElementType = typeof Element !== 'undefined'; -var hasMap = typeof Map === 'function'; -var hasSet = typeof Set === 'function'; -var hasArrayBuffer = typeof ArrayBuffer === 'function' && !!ArrayBuffer.isView; - -// Note: We **don't** need `envHasBigInt64Array` in fde es6/index.js - -function equal(a, b) { - // START: fast-deep-equal es6/index.js 3.1.3 - if (a === b) return true; - - if (a && b && typeof a == 'object' && typeof b == 'object') { - if (a.constructor !== b.constructor) return false; - - var length, i, keys; - if (Array.isArray(a)) { - length = a.length; - if (length != b.length) return false; - for (i = length; i-- !== 0;) - if (!equal(a[i], b[i])) return false; - return true; - } - - // START: Modifications: - // 1. Extra `has &&` helpers in initial condition allow es6 code - // to co-exist with es5. - // 2. Replace `for of` with es5 compliant iteration using `for`. - // Basically, take: - // - // ```js - // for (i of a.entries()) - // if (!b.has(i[0])) return false; - // ``` - // - // ... and convert to: - // - // ```js - // it = a.entries(); - // while (!(i = it.next()).done) - // if (!b.has(i.value[0])) return false; - // ``` - // - // **Note**: `i` access switches to `i.value`. - var it; - if (hasMap && (a instanceof Map) && (b instanceof Map)) { - if (a.size !== b.size) return false; - it = a.entries(); - while (!(i = it.next()).done) - if (!b.has(i.value[0])) return false; - it = a.entries(); - while (!(i = it.next()).done) - if (!equal(i.value[1], b.get(i.value[0]))) return false; - return true; - } - - if (hasSet && (a instanceof Set) && (b instanceof Set)) { - if (a.size !== b.size) return false; - it = a.entries(); - while (!(i = it.next()).done) - if (!b.has(i.value[0])) return false; - return true; - } - // END: Modifications - - if (hasArrayBuffer && ArrayBuffer.isView(a) && ArrayBuffer.isView(b)) { - length = a.length; - if (length != b.length) return false; - for (i = length; i-- !== 0;) - if (a[i] !== b[i]) return false; - return true; - } - - if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags; - // START: Modifications: - // Apply guards for `Object.create(null)` handling. See: - // - https://github.com/FormidableLabs/react-fast-compare/issues/64 - // - https://github.com/epoberezkin/fast-deep-equal/issues/49 - if (a.valueOf !== Object.prototype.valueOf && typeof a.valueOf === 'function' && typeof b.valueOf === 'function') return a.valueOf() === b.valueOf(); - if (a.toString !== Object.prototype.toString && typeof a.toString === 'function' && typeof b.toString === 'function') return a.toString() === b.toString(); - // END: Modifications - - keys = Object.keys(a); - length = keys.length; - if (length !== Object.keys(b).length) return false; - - for (i = length; i-- !== 0;) - if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false; - // END: fast-deep-equal - - // START: react-fast-compare - // custom handling for DOM elements - if (hasElementType && a instanceof Element) return false; - - // custom handling for React/Preact - for (i = length; i-- !== 0;) { - if ((keys[i] === '_owner' || keys[i] === '__v' || keys[i] === '__o') && a.$$typeof) { - // React-specific: avoid traversing React elements' _owner - // Preact-specific: avoid traversing Preact elements' __v and __o - // __v = $_original / $_vnode - // __o = $_owner - // These properties contain circular references and are not needed when - // comparing the actual elements (and not their owners) - // .$$typeof and ._store on just reasonable markers of elements - - continue; - } - - // all other properties should be traversed as usual - if (!equal(a[keys[i]], b[keys[i]])) return false; - } - // END: react-fast-compare - - // START: fast-deep-equal - return true; - } - - return a !== a && b !== b; -} -// end fast-deep-equal - -module.exports = function isEqual(a, b) { - try { - return equal(a, b); - } catch (error) { - if (((error.message || '').match(/stack|recursion/i))) { - // warn on circular references, don't crash - // browsers give this different errors name and messages: - // chrome/safari: "RangeError", "Maximum call stack size exceeded" - // firefox: "InternalError", too much recursion" - // edge: "Error", "Out of stack space" - console.warn('react-fast-compare cannot handle circular refs'); - return false; - } - // some other error. we should definitely know about these - throw error; - } -}; - - -/***/ }), - -/***/ 379: -/***/ ((module) => { - -"use strict"; - - -var stylesInDOM = []; -function getIndexByIdentifier(identifier) { - var result = -1; - for (var i = 0; i < stylesInDOM.length; i++) { - if (stylesInDOM[i].identifier === identifier) { - result = i; - break; - } - } - return result; -} -function modulesToDom(list, options) { - var idCountMap = {}; - var identifiers = []; - for (var i = 0; i < list.length; i++) { - var item = list[i]; - var id = options.base ? item[0] + options.base : item[0]; - var count = idCountMap[id] || 0; - var identifier = "".concat(id, " ").concat(count); - idCountMap[id] = count + 1; - var indexByIdentifier = getIndexByIdentifier(identifier); - var obj = { - css: item[1], - media: item[2], - sourceMap: item[3], - supports: item[4], - layer: item[5] - }; - if (indexByIdentifier !== -1) { - stylesInDOM[indexByIdentifier].references++; - stylesInDOM[indexByIdentifier].updater(obj); - } else { - var updater = addElementStyle(obj, options); - options.byIndex = i; - stylesInDOM.splice(i, 0, { - identifier: identifier, - updater: updater, - references: 1 - }); - } - identifiers.push(identifier); - } - return identifiers; -} -function addElementStyle(obj, options) { - var api = options.domAPI(options); - api.update(obj); - var updater = function updater(newObj) { - if (newObj) { - if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap && newObj.supports === obj.supports && newObj.layer === obj.layer) { - return; - } - api.update(obj = newObj); - } else { - api.remove(); - } - }; - return updater; -} -module.exports = function (list, options) { - options = options || {}; - list = list || []; - var lastIdentifiers = modulesToDom(list, options); - return function update(newList) { - newList = newList || []; - for (var i = 0; i < lastIdentifiers.length; i++) { - var identifier = lastIdentifiers[i]; - var index = getIndexByIdentifier(identifier); - stylesInDOM[index].references--; - } - var newLastIdentifiers = modulesToDom(newList, options); - for (var _i = 0; _i < lastIdentifiers.length; _i++) { - var _identifier = lastIdentifiers[_i]; - var _index = getIndexByIdentifier(_identifier); - if (stylesInDOM[_index].references === 0) { - stylesInDOM[_index].updater(); - stylesInDOM.splice(_index, 1); - } - } - lastIdentifiers = newLastIdentifiers; - }; -}; - -/***/ }), - -/***/ 569: -/***/ ((module) => { - -"use strict"; - - -var memo = {}; - -/* istanbul ignore next */ -function getTarget(target) { - if (typeof memo[target] === "undefined") { - var styleTarget = document.querySelector(target); - - // Special case to return head of iframe instead of iframe itself - if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) { - try { - // This will throw an exception if access to iframe is blocked - // due to cross-origin restrictions - styleTarget = styleTarget.contentDocument.head; - } catch (e) { - // istanbul ignore next - styleTarget = null; - } - } - memo[target] = styleTarget; - } - return memo[target]; -} - -/* istanbul ignore next */ -function insertBySelector(insert, style) { - var target = getTarget(insert); - if (!target) { - throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid."); - } - target.appendChild(style); -} -module.exports = insertBySelector; - -/***/ }), - -/***/ 216: -/***/ ((module) => { - -"use strict"; - - -/* istanbul ignore next */ -function insertStyleElement(options) { - var element = document.createElement("style"); - options.setAttributes(element, options.attributes); - options.insert(element, options.options); - return element; -} -module.exports = insertStyleElement; - -/***/ }), - -/***/ 565: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -/* istanbul ignore next */ -function setAttributesWithoutAttributes(styleElement) { - var nonce = true ? __webpack_require__.nc : 0; - if (nonce) { - styleElement.setAttribute("nonce", nonce); - } -} -module.exports = setAttributesWithoutAttributes; - -/***/ }), - -/***/ 795: -/***/ ((module) => { - -"use strict"; - - -/* istanbul ignore next */ -function apply(styleElement, options, obj) { - var css = ""; - if (obj.supports) { - css += "@supports (".concat(obj.supports, ") {"); - } - if (obj.media) { - css += "@media ".concat(obj.media, " {"); - } - var needLayer = typeof obj.layer !== "undefined"; - if (needLayer) { - css += "@layer".concat(obj.layer.length > 0 ? " ".concat(obj.layer) : "", " {"); - } - css += obj.css; - if (needLayer) { - css += "}"; - } - if (obj.media) { - css += "}"; - } - if (obj.supports) { - css += "}"; - } - var sourceMap = obj.sourceMap; - if (sourceMap && typeof btoa !== "undefined") { - css += "\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), " */"); - } - - // For old IE - /* istanbul ignore if */ - options.styleTagTransform(css, styleElement, options.options); -} -function removeStyleElement(styleElement) { - // istanbul ignore if - if (styleElement.parentNode === null) { - return false; - } - styleElement.parentNode.removeChild(styleElement); -} - -/* istanbul ignore next */ -function domAPI(options) { - if (typeof document === "undefined") { - return { - update: function update() {}, - remove: function remove() {} - }; - } - var styleElement = options.insertStyleElement(options); - return { - update: function update(obj) { - apply(styleElement, options, obj); - }, - remove: function remove() { - removeStyleElement(styleElement); - } - }; -} -module.exports = domAPI; - -/***/ }), - -/***/ 589: -/***/ ((module) => { - -"use strict"; - - -/* istanbul ignore next */ -function styleTagTransform(css, styleElement) { - if (styleElement.styleSheet) { - styleElement.styleSheet.cssText = css; - } else { - while (styleElement.firstChild) { - styleElement.removeChild(styleElement.firstChild); - } - styleElement.appendChild(document.createTextNode(css)); - } -} -module.exports = styleTagTransform; - -/***/ }), - -/***/ 137: -/***/ ((module) => { - -"use strict"; -module.exports = require("react-dom"); - -/***/ }) - -/******/ }); -/************************************************************************/ -/******/ // The module cache -/******/ var __webpack_module_cache__ = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ // Check if module is in cache -/******/ var cachedModule = __webpack_module_cache__[moduleId]; -/******/ if (cachedModule !== undefined) { -/******/ return cachedModule.exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = __webpack_module_cache__[moduleId] = { -/******/ id: moduleId, -/******/ loaded: false, -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__); -/******/ -/******/ // Flag the module as loaded -/******/ module.loaded = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/************************************************************************/ -/******/ /* webpack/runtime/amd define */ -/******/ (() => { -/******/ __webpack_require__.amdD = function () { -/******/ throw new Error('define cannot be used indirect'); -/******/ }; -/******/ })(); -/******/ -/******/ /* webpack/runtime/compat get default export */ -/******/ (() => { -/******/ // getDefaultExport function for compatibility with non-harmony modules -/******/ __webpack_require__.n = (module) => { -/******/ var getter = module && module.__esModule ? -/******/ () => (module['default']) : -/******/ () => (module); -/******/ __webpack_require__.d(getter, { a: getter }); -/******/ return getter; -/******/ }; -/******/ })(); -/******/ -/******/ /* webpack/runtime/define property getters */ -/******/ (() => { -/******/ // define getter functions for harmony exports -/******/ __webpack_require__.d = (exports, definition) => { -/******/ for(var key in definition) { -/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) { -/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] }); -/******/ } -/******/ } -/******/ }; -/******/ })(); -/******/ -/******/ /* webpack/runtime/hasOwnProperty shorthand */ -/******/ (() => { -/******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop)) -/******/ })(); -/******/ -/******/ /* webpack/runtime/make namespace object */ -/******/ (() => { -/******/ // define __esModule on exports -/******/ __webpack_require__.r = (exports) => { -/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { -/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); -/******/ } -/******/ Object.defineProperty(exports, '__esModule', { value: true }); -/******/ }; -/******/ })(); -/******/ -/******/ /* webpack/runtime/node module decorator */ -/******/ (() => { -/******/ __webpack_require__.nmd = (module) => { -/******/ module.paths = []; -/******/ if (!module.children) module.children = []; -/******/ return module; -/******/ }; -/******/ })(); -/******/ -/******/ /* webpack/runtime/publicPath */ -/******/ (() => { -/******/ __webpack_require__.p = ""; -/******/ })(); -/******/ -/******/ /* webpack/runtime/nonce */ -/******/ (() => { -/******/ __webpack_require__.nc = undefined; -/******/ })(); -/******/ -/************************************************************************/ -var __webpack_exports__ = {}; -// This entry need to be wrapped in an IIFE because it need to be in strict mode. -(() => { -"use strict"; -// ESM COMPAT FLAG -__webpack_require__.r(__webpack_exports__); - -// EXPORTS -__webpack_require__.d(__webpack_exports__, { - Accordion: () => (/* reexport */ components_Accordion), - Button: () => (/* reexport */ components_Button), - ButtonGroup: () => (/* reexport */ components_ButtonGroup), - Chart: () => (/* reexport */ components_Chart), - Checkbox: () => (/* reexport */ Checkbox), - CodeEditor: () => (/* reexport */ components_CodeEditor), - Collapsible: () => (/* reexport */ components_Collapsible), - Column: () => (/* reexport */ layout_Column), - Combobox: () => (/* reexport */ Combobox), - Combobox2: () => (/* reexport */ components_Combobox2), - Confirm: () => (/* reexport */ components_Confirm), - CopyToClipboard: () => (/* reexport */ components_CopyToClipboard), - DatePicker: () => (/* reexport */ components_DatePicker), - Dropdown: () => (/* reexport */ components_Dropdown), - EditableList: () => (/* reexport */ EditableList), - EditableList2: () => (/* reexport */ components_EditableList2), - FieldCodeEditor: () => (/* reexport */ FieldCodeEditor), - FieldCombobox: () => (/* reexport */ FieldCombobox), - FieldCombobox2: () => (/* reexport */ redux_form_FieldCombobox2), - FieldDatePicker: () => (/* reexport */ FieldDatePicker), - FieldDropdown: () => (/* reexport */ FieldDropdown), - FieldEditableList: () => (/* reexport */ FieldEditableList), - FieldFileInput: () => (/* reexport */ FieldFileInput), - FieldInput: () => (/* reexport */ FieldInput), - FieldMultiselect: () => (/* reexport */ FieldMultiselect), - FieldPagination: () => (/* reexport */ redux_form_FieldPagination), - FieldSelect: () => (/* reexport */ FieldSelect), - FieldSelectableList: () => (/* reexport */ FieldSelectableList), - FieldToggle: () => (/* reexport */ FieldToggle), - FileInput: () => (/* reexport */ FileInput), - FixedWrapper: () => (/* reexport */ components_FixedWrapper), - FloatingContainer: () => (/* reexport */ components_FloatingContainer), - FormikCheckbox: () => (/* reexport */ FormikCheckbox), - FormikCodeEditor: () => (/* reexport */ FormikCodeEditor), - FormikCombobox: () => (/* reexport */ FormikCombobox), - FormikCombobox2: () => (/* reexport */ FormikCombobox2), - FormikDatePicker: () => (/* reexport */ FormikDatePicker), - FormikEditableList: () => (/* reexport */ FormikEditableList), - FormikEditableList2: () => (/* reexport */ FormikEditableList2), - FormikFileInput: () => (/* reexport */ FormikFileInput), - FormikInput: () => (/* reexport */ FormikInput), - FormikInput2: () => (/* reexport */ FormikInput2), - FormikMultiselect: () => (/* reexport */ FormikMultiselect), - FormikRadio: () => (/* reexport */ FormikRadio), - FormikSelect: () => (/* reexport */ FormikSelect), - FormikSelectableList: () => (/* reexport */ FormikSelectableList), - FormikStringBuilder: () => (/* reexport */ FormikStringBuilder), - FormikTextarea: () => (/* reexport */ FormikTextarea), - FormikToggle: () => (/* reexport */ FormikToggle), - FormikWrapper: () => (/* reexport */ formik), - Icon: () => (/* reexport */ components_Icon), - InfiniteScroller: () => (/* reexport */ components_InfiniteScroller), - InfoNote: () => (/* reexport */ components_InfoNote), - Input: () => (/* reexport */ Input), - Input2: () => (/* reexport */ components_Input2), - List: () => (/* reexport */ components_List), - Loader: () => (/* reexport */ components_Loader), - Message: () => (/* reexport */ components_Message), - Modal: () => (/* reexport */ components_Modal), - Multiselect: () => (/* reexport */ components_Multiselect), - NavBar: () => (/* reexport */ components_NavBar), - Navigation: () => (/* reexport */ components_Navigation), - Pagination: () => (/* reexport */ Pagination), - Panel: () => (/* reexport */ components_Panel), - Pill: () => (/* reexport */ components_Pill), - Radio: () => (/* reexport */ Radio), - RevealPanel: () => (/* reexport */ components_RevealPanel), - Row: () => (/* reexport */ Row_Row), - Select: () => (/* reexport */ Select), - SelectableList: () => (/* reexport */ components_SelectableList), - StringBuilder: () => (/* reexport */ components_StringBuilder), - Table: () => (/* reexport */ components_Table), - Tabs: () => (/* reexport */ components_Tabs), - TextEllipsis: () => (/* reexport */ components_TextEllipsis), - Textarea: () => (/* reexport */ components_Textarea), - Toggle: () => (/* reexport */ components_Toggle), - Tooltip: () => (/* reexport */ components_Tooltip), - setConfig: () => (/* reexport */ setConfig), - toast: () => (/* reexport */ Toast), - useComponentSize: () => (/* reexport */ hooks_useComponentSize), - useEventListener: () => (/* reexport */ hooks_useEventListener), - useInterval: () => (/* reexport */ useInterval), - usePrevious: () => (/* reexport */ hooks_usePrevious), - useTimeout: () => (/* reexport */ hooks_useTimeout) -}); - -;// CONCATENATED MODULE: external "react" -const external_react_namespaceObject = require("react"); -var external_react_default = /*#__PURE__*/__webpack_require__.n(external_react_namespaceObject); -;// CONCATENATED MODULE: external "prop-types" -const external_prop_types_namespaceObject = require("prop-types"); -var external_prop_types_default = /*#__PURE__*/__webpack_require__.n(external_prop_types_namespaceObject); -;// CONCATENATED MODULE: ./src/components/Accordion/js/AccordionContext.js - -const AccordionContext = (0,external_react_namespaceObject.createContext)(); -/* harmony default export */ const js_AccordionContext = (AccordionContext); - -;// CONCATENATED MODULE: ./src/components/Accordion/js/AccordionItemContext.js - -const AccordionItemContext = (0,external_react_namespaceObject.createContext)(); -/* harmony default export */ const js_AccordionItemContext = (AccordionItemContext); - -;// CONCATENATED MODULE: ./src/components/Icon/index.js -var __defProp = Object.defineProperty; -var __getOwnPropSymbols = Object.getOwnPropertySymbols; -var __hasOwnProp = Object.prototype.hasOwnProperty; -var __propIsEnum = Object.prototype.propertyIsEnumerable; -var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var __spreadValues = (a, b) => { - for (var prop in b || (b = {})) - if (__hasOwnProp.call(b, prop)) - __defNormalProp(a, prop, b[prop]); - if (__getOwnPropSymbols) - for (var prop of __getOwnPropSymbols(b)) { - if (__propIsEnum.call(b, prop)) - __defNormalProp(a, prop, b[prop]); - } - return a; -}; -var __objRest = (source, exclude) => { - var target = {}; - for (var prop in source) - if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) - target[prop] = source[prop]; - if (source != null && __getOwnPropSymbols) - for (var prop of __getOwnPropSymbols(source)) { - if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop)) - target[prop] = source[prop]; - } - return target; -}; - - -function Icon(_a) { - var _b = _a, { - className, - family, - type - } = _b, rest = __objRest(_b, [ - "className", - "family", - "type" - ]); - function getCSSClasses() { - const fontFamily = family || "fa"; - return [ - "tyk-icon", - fontFamily, - `${fontFamily}-${type}`, - className - ].filter(Boolean).join(" "); - } - return /* @__PURE__ */ external_react_default().createElement("i", __spreadValues({ className: getCSSClasses() }, rest)); -} -Icon.propTypes = { - className: (external_prop_types_default()).string, - family: (external_prop_types_default()).string, - type: (external_prop_types_default()).string.isRequired -}; -/* harmony default export */ const components_Icon = (Icon); - -;// CONCATENATED MODULE: ./src/components/Accordion/js/AccordionItemTrigger.js - - - - -function ItemTrigger({ wrap }) { - const { collapsed, disabled, toggleChange } = (0,external_react_namespaceObject.useContext)(js_AccordionItemContext); - const iconType = collapsed ? "chevron-down" : "chevron-up"; - const classes = [ - "tyk-accordion__trigger", - disabled && "tyk-accordion__trigger--disabled" - ].filter(Boolean).join(" "); - const trigger = /* @__PURE__ */ external_react_default().createElement( - "button", - { - className: classes, - onClick: toggleChange, - type: "button" - }, - /* @__PURE__ */ external_react_default().createElement(components_Icon, { className: "collapsable__arrow", type: iconType }) - ); - return wrap ? /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-accordion__trigger-wrapper" }, trigger) : trigger; -} -ItemTrigger.propTypes = { - wrap: (external_prop_types_default()).bool -}; -/* harmony default export */ const AccordionItemTrigger = (ItemTrigger); - -;// CONCATENATED MODULE: ./src/components/Accordion/js/AccordionItem.js - - - - - -function AccordionItem({ - collapsed: collapsedProp, - children, - className, - disabled -}, ref) { - const { arrow } = (0,external_react_namespaceObject.useContext)(js_AccordionContext); - const [collapsed, setCollapsed] = (0,external_react_namespaceObject.useState)(collapsedProp); - const toggleChange = () => { - if (disabled) { - return; - } - setCollapsed(!collapsed); - }; - const classes = (0,external_react_namespaceObject.useMemo)(() => [ - "tyk-accordion__item", - arrow.expandToContent ? `tyk-accordion__item--trigger-position-${arrow.position}` : "tyk-accordion__item--trigger-in-header", - className, - collapsed === false && "tyk-accordion__item--active" - ].filter(Boolean).join(" "), [arrow, className, collapsed]); - const contextValue = (0,external_react_namespaceObject.useMemo)(() => ({ - collapsed, - disabled, - toggleChange - }), [collapsed, disabled, toggleChange]); - return /* @__PURE__ */ external_react_default().createElement("div", { ref, className: classes }, /* @__PURE__ */ external_react_default().createElement(js_AccordionItemContext.Provider, { value: contextValue }, arrow.expandToContent && /* @__PURE__ */ external_react_default().createElement(AccordionItemTrigger, { wrap: true }), children)); -} -AccordionItem.propTypes = { - children: external_prop_types_default().oneOfType([ - external_prop_types_default().arrayOf((external_prop_types_default()).node), - (external_prop_types_default()).node, - (external_prop_types_default()).element, - (external_prop_types_default()).string - ]), - collapsed: (external_prop_types_default()).bool, - className: (external_prop_types_default()).string, - disabled: (external_prop_types_default()).bool -}; -AccordionItem.defaultProps = { - collapsed: false -}; -/* harmony default export */ const js_AccordionItem = ((0,external_react_namespaceObject.forwardRef)(AccordionItem)); - -;// CONCATENATED MODULE: ./src/components/Accordion/js/AccordionItemHeader.js - - - - - - -function AccordionItemHeader({ className, children }) { - const { collapsed, disabled, toggleChange } = (0,external_react_namespaceObject.useContext)(js_AccordionItemContext); - const { usearrowastrigger, arrow } = (0,external_react_namespaceObject.useContext)(js_AccordionContext); - const iconType = collapsed ? "chevron-down" : "chevron-up"; - const classes = [ - "tyk-accordion__item-header", - usearrowastrigger && "tyk-accordion__arrow-trigger", - className - ].filter(Boolean).join(" "); - return /* @__PURE__ */ external_react_default().createElement("div", { className: classes }, !usearrowastrigger ? /* @__PURE__ */ external_react_default().createElement( - "button", - { - className: disabled ? "tyk-accordion__trigger--disabled" : "", - onClick: toggleChange, - type: "button" - }, - /* @__PURE__ */ external_react_default().createElement("span", null, children), - /* @__PURE__ */ external_react_default().createElement(components_Icon, { className: "collapsable__arrow", type: iconType }) - ) : /* @__PURE__ */ external_react_default().createElement((external_react_default()).Fragment, null, !arrow.expandToContent && arrow.position === "left" && /* @__PURE__ */ external_react_default().createElement(AccordionItemTrigger, null), /* @__PURE__ */ external_react_default().createElement("div", null, children), !arrow.expandToContent && arrow.position === "right" && /* @__PURE__ */ external_react_default().createElement(AccordionItemTrigger, null))); -} -AccordionItemHeader.propTypes = { - children: external_prop_types_default().oneOfType([ - external_prop_types_default().arrayOf((external_prop_types_default()).node), - (external_prop_types_default()).node, - (external_prop_types_default()).element, - (external_prop_types_default()).string - ]), - className: (external_prop_types_default()).string -}; -/* harmony default export */ const js_AccordionItemHeader = (AccordionItemHeader); - -;// CONCATENATED MODULE: external "react-transition-group" -const external_react_transition_group_namespaceObject = require("react-transition-group"); -;// CONCATENATED MODULE: ./src/hooks/usePrevious/index.js - -const usePrevious = (value) => { - const ref = (0,external_react_namespaceObject.useRef)(); - (0,external_react_namespaceObject.useEffect)(() => { - ref.current = value; - }, [value]); - return ref.current; -}; -/* harmony default export */ const hooks_usePrevious = (usePrevious); - -;// CONCATENATED MODULE: ./src/hooks/useTimeout/index.js - -const useTimeout = (callback, delay) => { - const savedCallback = (0,external_react_namespaceObject.useRef)(); - (0,external_react_namespaceObject.useEffect)( - () => { - savedCallback.current = callback; - }, - [callback] - ); - (0,external_react_namespaceObject.useEffect)( - () => { - function tick() { - savedCallback.current(); - } - if (delay !== null) { - const id = setTimeout(tick, delay); - return () => clearTimeout(id); - } - return () => { - }; - }, - [delay] - ); -}; -/* harmony default export */ const hooks_useTimeout = (useTimeout); - -;// CONCATENATED MODULE: ./src/hooks/useInterval/index.js - -function useInterval(callback, delay, ...args) { - const savedCallback = (0,external_react_namespaceObject.useRef)(); - (0,external_react_namespaceObject.useEffect)(() => { - savedCallback.current = callback; - }, [callback]); - (0,external_react_namespaceObject.useEffect)(() => { - function tick() { - savedCallback.current(...args); - } - if (delay !== null && delay !== void 0) { - const id = setInterval(tick, delay); - return () => clearInterval(id); - } - }, [delay]); -} - -;// CONCATENATED MODULE: ./src/hooks/useEventListener/index.js - -const useEventListener = (eventName, handler, element) => { - const savedHandler = (0,external_react_namespaceObject.useRef)(); - (0,external_react_namespaceObject.useEffect)(() => { - savedHandler.current = handler; - }, [handler]); - (0,external_react_namespaceObject.useEffect)(() => { - const isSupported = element == null ? void 0 : element.addEventListener; - if (!isSupported) { - return; - } - const eventListener = (event) => savedHandler.current(event); - element.addEventListener(eventName, eventListener); - return () => { - element.removeEventListener(eventName, eventListener); - }; - }, [eventName, element]); -}; -/* harmony default export */ const hooks_useEventListener = (useEventListener); - -;// CONCATENATED MODULE: ./src/hooks/useComponentSize/index.js - -const getSize = (el) => { - if (!el) { - return { - width: 0, - height: 0 - }; - } - return { - width: el.offsetWidth, - height: el.offsetHeight - }; -}; -const useComponentSize = (ref) => { - const [ComponentSize, setComponentSize] = (0,external_react_namespaceObject.useState)(getSize(ref ? ref.current : {})); - const handleResize = (0,external_react_namespaceObject.useCallback)(() => { - if (ref.current) { - setComponentSize(getSize(ref.current)); - } - }, [ref]); - (0,external_react_namespaceObject.useLayoutEffect)(() => { - handleResize(); - let resizeObserver = new ResizeObserver(() => { - handleResize(); - }); - resizeObserver.observe(ref.current); - return () => { - resizeObserver.disconnect(ref.current); - resizeObserver = null; - }; - }, [ref.current]); - return ComponentSize; -}; -/* harmony default export */ const hooks_useComponentSize = (useComponentSize); - -;// CONCATENATED MODULE: ./src/hooks/index.js - - - - - - -;// CONCATENATED MODULE: ./src/components/Collapsible/index.js -var Collapsible_defProp = Object.defineProperty; -var __defProps = Object.defineProperties; -var __getOwnPropDescs = Object.getOwnPropertyDescriptors; -var Collapsible_getOwnPropSymbols = Object.getOwnPropertySymbols; -var Collapsible_hasOwnProp = Object.prototype.hasOwnProperty; -var Collapsible_propIsEnum = Object.prototype.propertyIsEnumerable; -var Collapsible_defNormalProp = (obj, key, value) => key in obj ? Collapsible_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var Collapsible_spreadValues = (a, b) => { - for (var prop in b || (b = {})) - if (Collapsible_hasOwnProp.call(b, prop)) - Collapsible_defNormalProp(a, prop, b[prop]); - if (Collapsible_getOwnPropSymbols) - for (var prop of Collapsible_getOwnPropSymbols(b)) { - if (Collapsible_propIsEnum.call(b, prop)) - Collapsible_defNormalProp(a, prop, b[prop]); - } - return a; -}; -var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b)); -var Collapsible_objRest = (source, exclude) => { - var target = {}; - for (var prop in source) - if (Collapsible_hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) - target[prop] = source[prop]; - if (source != null && Collapsible_getOwnPropSymbols) - for (var prop of Collapsible_getOwnPropSymbols(source)) { - if (exclude.indexOf(prop) < 0 && Collapsible_propIsEnum.call(source, prop)) - target[prop] = source[prop]; - } - return target; -}; - - - - -function Collapsible(_a) { - var _b = _a, { - className, - collapsed, - children - } = _b, rest = Collapsible_objRest(_b, [ - "className", - "collapsed", - "children" - ]); - const contentContainer = (0,external_react_namespaceObject.useRef)(null); - const collapseWrapper = (0,external_react_namespaceObject.useRef)(null); - const refContainerSize = hooks_useComponentSize(contentContainer); - const [contentContainerStyle, setContentContainerStyle] = (0,external_react_namespaceObject.useState)({ - // eslint-disable-next-line - height: collapsed ? 0 : "auto" - }); - const setHeight = (height) => { - setContentContainerStyle({ - height: `${height}px` - }); - }; - const getHeight = () => contentContainer.current ? contentContainer.current.clientHeight : 0; - const onEnter = () => { - setHeight(getHeight()); - }; - const onExit = () => { - setHeight(0); - }; - (0,external_react_namespaceObject.useEffect)(() => { - if (!collapsed && (refContainerSize == null ? void 0 : refContainerSize.height) && contentContainerStyle.height !== (refContainerSize == null ? void 0 : refContainerSize.height)) { - setHeight(refContainerSize.height); - } - }, [refContainerSize.height]); - const onWindowResize = (0,external_react_namespaceObject.useCallback)(() => { - if (!collapsed && contentContainer.current) { - setHeight(getHeight()); - collapseWrapper.current.style.height = `${getHeight()}px`; - } - }, [collapsed, contentContainer.current]); - hooks_useEventListener("resize", onWindowResize, window); - return /* @__PURE__ */ external_react_default().createElement( - external_react_transition_group_namespaceObject.CSSTransition, - { - onEnter, - onExit, - in: !collapsed, - timeout: 0, - classNames: "collapse" - }, - /* @__PURE__ */ external_react_default().createElement( - "div", - { - className: "collapse-wrapper", - ref: collapseWrapper, - style: contentContainerStyle - }, - /* @__PURE__ */ external_react_default().createElement( - "div", - __spreadProps(Collapsible_spreadValues({}, rest), { - className, - ref: contentContainer - }), - children - ) - ) - ); -} -Collapsible.propTypes = { - children: external_prop_types_default().oneOfType([ - (external_prop_types_default()).element, - (external_prop_types_default()).node, - (external_prop_types_default()).string - ]), - /** Describes if the content of Collapsible should be hidden or not */ - collapsed: (external_prop_types_default()).bool, - /** CSS classes that can be passed to the Collapsible element */ - className: (external_prop_types_default()).string -}; -/* harmony default export */ const components_Collapsible = (Collapsible); - -;// CONCATENATED MODULE: ./src/components/Accordion/js/AccordionItemContent.js - - - - -function AccordionItemContent({ children, className }) { - const { collapsed } = (0,external_react_namespaceObject.useContext)(js_AccordionItemContext); - const classes = [ - "tyk-accordion__item-content", - className - ].filter(Boolean).join(" "); - return /* @__PURE__ */ external_react_default().createElement("div", { className: classes }, /* @__PURE__ */ external_react_default().createElement(components_Collapsible, { collapsed }, children)); -} -AccordionItemContent.propTypes = { - children: external_prop_types_default().oneOfType([ - external_prop_types_default().arrayOf((external_prop_types_default()).node), - (external_prop_types_default()).node, - (external_prop_types_default()).element, - (external_prop_types_default()).string - ]), - className: (external_prop_types_default()).string -}; -/* harmony default export */ const js_AccordionItemContent = (AccordionItemContent); - -;// CONCATENATED MODULE: ./src/components/Accordion/index.js - - - - - - -function Accordion({ - className, - children, - usearrowastrigger, - arrow = { position: "right", expandToContent: false } -}) { - const classes = [ - "tyk-accordion", - className - ].filter(Boolean).join(" "); - const contextValue = (0,external_react_namespaceObject.useMemo)(() => ({ - usearrowastrigger, - arrow - }), [usearrowastrigger, arrow]); - return /* @__PURE__ */ external_react_default().createElement("div", { className: classes }, /* @__PURE__ */ external_react_default().createElement(js_AccordionContext.Provider, { value: contextValue }, children)); -} -Accordion.propTypes = { - children: external_prop_types_default().oneOfType([ - external_prop_types_default().arrayOf((external_prop_types_default()).node), - (external_prop_types_default()).node, - (external_prop_types_default()).element, - (external_prop_types_default()).string - ]), - className: (external_prop_types_default()).string, - usearrowastrigger: (external_prop_types_default()).bool, - arrow: external_prop_types_default().shape({ - position: external_prop_types_default().oneOf(["left", "right"]), - expandToContent: (external_prop_types_default()).bool - }) -}; -Accordion.defaultProps = { - usearrowastrigger: false -}; -Accordion.Item = js_AccordionItem; -Accordion.Item.Header = js_AccordionItemHeader; -Accordion.Item.Content = js_AccordionItemContent; -/* harmony default export */ const components_Accordion = (Accordion); - -;// CONCATENATED MODULE: ./src/components/Button/index.js -var Button_defProp = Object.defineProperty; -var Button_getOwnPropSymbols = Object.getOwnPropertySymbols; -var Button_hasOwnProp = Object.prototype.hasOwnProperty; -var Button_propIsEnum = Object.prototype.propertyIsEnumerable; -var Button_defNormalProp = (obj, key, value) => key in obj ? Button_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var Button_spreadValues = (a, b) => { - for (var prop in b || (b = {})) - if (Button_hasOwnProp.call(b, prop)) - Button_defNormalProp(a, prop, b[prop]); - if (Button_getOwnPropSymbols) - for (var prop of Button_getOwnPropSymbols(b)) { - if (Button_propIsEnum.call(b, prop)) - Button_defNormalProp(a, prop, b[prop]); - } - return a; -}; -var Button_objRest = (source, exclude) => { - var target = {}; - for (var prop in source) - if (Button_hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) - target[prop] = source[prop]; - if (source != null && Button_getOwnPropSymbols) - for (var prop of Button_getOwnPropSymbols(source)) { - if (exclude.indexOf(prop) < 0 && Button_propIsEnum.call(source, prop)) - target[prop] = source[prop]; - } - return target; -}; - - - -const Button = external_react_default().forwardRef((props, ref) => { - const _a = props, { - customButton, - children, - iconType, - iconFamily, - iconPosition, - iconOnly, - id, - className, - disabled, - display, - href, - onClick, - noStyle, - size, - theme, - type - } = _a, rest = Button_objRest(_a, [ - "customButton", - "children", - "iconType", - "iconFamily", - "iconPosition", - "iconOnly", - "id", - "className", - "disabled", - "display", - "href", - "onClick", - "noStyle", - "size", - "theme", - "type" - ]); - const getCssClasses = () => { - const cssClasses = ["tyk-button"].concat(className ? className.split(" ") : []); - const sizeClass = size ? `tyk-button--${size}` : "tyk-button--md"; - const disabledClass = disabled ? "disabled" : ""; - const displayClass = display || ""; - const themeClass = theme ? `tyk-button--${theme}` : ""; - const iconOnlyClass = iconOnly ? "tyk-button--icon-only" : ""; - const noStyleClass = noStyle ? "tyk-button--no-style" : ""; - cssClasses.push(iconOnlyClass); - cssClasses.push(themeClass); - cssClasses.push(sizeClass); - cssClasses.push(disabledClass); - cssClasses.push(displayClass); - cssClasses.push(noStyleClass); - if (iconType) { - cssClasses.push(`icon-${iconPosition || "left"}`); - } - return cssClasses.join(" "); - }; - const getButtonIcon = (position) => { - const iPos = iconPosition || "left"; - return iconType && iPos === position ? /* @__PURE__ */ external_react_default().createElement(components_Icon, { family: iconFamily, type: iconType }) : null; - }; - const getButtonType = () => { - let buttonType; - if (customButton) { - return /* @__PURE__ */ external_react_default().createElement(external_react_namespaceObject.Fragment, null, (0,external_react_namespaceObject.cloneElement)(customButton, { - className: getCssClasses(), - disabled - })); - } - if (href) { - buttonType = /* @__PURE__ */ external_react_default().createElement( - "a", - Button_spreadValues({ - id, - className: getCssClasses(), - disabled, - onClick, - href, - ref - }, rest), - getButtonIcon("left"), - children, - getButtonIcon("right") - ); - } else { - buttonType = // eslint-disable-next-line react/button-has-type - /* @__PURE__ */ external_react_default().createElement( - "button", - Button_spreadValues({ - id, - className: getCssClasses(), - disabled, - onClick, - type: type || "button", - ref - }, rest), - getButtonIcon("left"), - children && /* @__PURE__ */ external_react_default().createElement("span", null, children), - getButtonIcon("right") - ); - } - return buttonType; - }; - return getButtonType(); -}); -Button.propTypes = { - /** - * Content of a button. Can be a DOM element or a React component - */ - children: external_prop_types_default().oneOfType([ - external_prop_types_default().arrayOf((external_prop_types_default()).node), - (external_prop_types_default()).node, - (external_prop_types_default()).element, - (external_prop_types_default()).string - ]), - customButton: external_prop_types_default().oneOfType([ - external_prop_types_default().arrayOf((external_prop_types_default()).node), - (external_prop_types_default()).node, - (external_prop_types_default()).element - ]), - className: (external_prop_types_default()).string, - /** - * Display type: inline/block. Default is inline - */ - display: (external_prop_types_default()).string, - /** - * Sets the button disabled state - */ - disabled: (external_prop_types_default()).bool, - /** - * Having this property set the button will become a link - */ - id: (external_prop_types_default()).string, - href: (external_prop_types_default()).string, - iconPosition: (external_prop_types_default()).string, - // left or right - iconFamily: (external_prop_types_default()).string, - iconOnly: (external_prop_types_default()).bool, - iconType: (external_prop_types_default()).string, - noStyle: (external_prop_types_default()).bool, - /** - * Callback function, called when the button si clicked - */ - onClick: (external_prop_types_default()).func, - /** - * Describes the appearence of the button (ex: primary, danger, primary-outline etc.) - */ - theme: (external_prop_types_default()).string, - /** - * Type of the button (ex: button, submit etc.) - */ - type: (external_prop_types_default()).string, - /** - * Describes the size of the button (sm, md, lg). Default one is md - */ - size: (external_prop_types_default()).string -}; -Button.defaultProps = { - theme: "", - type: "button" -}; -/* harmony default export */ const components_Button = (Button); - -;// CONCATENATED MODULE: ./src/components/ButtonGroup/index.js - - -function ButtonGroup({ - className, - children, - label -}) { - return /* @__PURE__ */ external_react_default().createElement("div", { className: `tyk-button-group__wrapper ${className}` }, Boolean(label) && /* @__PURE__ */ external_react_default().createElement("label", null, label), /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-button-group" }, children)); -} -ButtonGroup.propTypes = { - children: external_prop_types_default().oneOfType([ - external_prop_types_default().arrayOf((external_prop_types_default()).node), - (external_prop_types_default()).node, - (external_prop_types_default()).element, - (external_prop_types_default()).string - ]), - className: (external_prop_types_default()).string, - /** - * Label that will sit above the button group - */ - label: (external_prop_types_default()).string -}; -/* harmony default export */ const components_ButtonGroup = (ButtonGroup); - -;// CONCATENATED MODULE: external "echarts" -const external_echarts_namespaceObject = require("echarts"); -;// CONCATENATED MODULE: external "immutable" -const external_immutable_namespaceObject = require("immutable"); -;// CONCATENATED MODULE: ./src/utils/debounce/index.js -/* harmony default export */ const debounce = ((func, wait, immediate) => { - let timeout; - return function debouncer(...args) { - const context = this; - const later = () => { - timeout = null; - if (!immediate) { - func.apply(context, args); - } - }; - const callNow = immediate && !timeout; - clearTimeout(timeout); - timeout = setTimeout(later, wait); - if (callNow) { - func.apply(context, args); - } - }; -}); - -;// CONCATENATED MODULE: ./src/components/Loader/index.js - - -function Loader({ className, position = "relative", withbackground = false }) { - const classes = [ - "loading", - position, - className - ].filter(Boolean).join(" "); - const loader = /* @__PURE__ */ external_react_default().createElement("div", { className: classes }, /* @__PURE__ */ external_react_default().createElement("div", { className: "loading-bar" }), /* @__PURE__ */ external_react_default().createElement("div", { className: "loading-bar" }), /* @__PURE__ */ external_react_default().createElement("div", { className: "loading-bar" }), /* @__PURE__ */ external_react_default().createElement("div", { className: "loading-bar" })); - return withbackground ? /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-loading__wrapper" }, loader) : loader; -} -Loader.propTypes = { - /** add a class to loader */ - className: (external_prop_types_default()).string, - /** position of loader (absolute / relative) */ - position: (external_prop_types_default()).string, - /** defines weather loader should be renders with or without background */ - withbackground: (external_prop_types_default()).bool -}; -/* harmony default export */ const components_Loader = (Loader); - -;// CONCATENATED MODULE: ./src/components/Message/index.js - - - -function Message({ - children, - theme, - onClose, - noMargin, - className -}) { - function getCssClasses() { - return [ - "tyk-message", - `tyk-message--${theme || "info"}`, - noMargin && "no-margin", - className - ].filter(Boolean).join(" "); - } - const iconType = theme === "success" ? "check" : "warning"; - return /* @__PURE__ */ external_react_default().createElement("div", { className: getCssClasses() }, /* @__PURE__ */ external_react_default().createElement(components_Icon, { family: "tykon", type: iconType }), /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-message__content" }, children), onClose && /* @__PURE__ */ external_react_default().createElement(components_Icon, { family: "tykon", type: "x", onClick: onClose })); -} -Message.propTypes = { - /** Set theme for message (eg. default, success, danger, etc) */ - theme: (external_prop_types_default()).string, - children: external_prop_types_default().oneOfType([ - (external_prop_types_default()).element, - (external_prop_types_default()).node, - (external_prop_types_default()).string - ]), - /** add a class to loader */ - className: (external_prop_types_default()).string, - /** Removes margins by adding `no-margin` class */ - noMargin: (external_prop_types_default()).bool, - /** Callback for clicking on the "x" */ - onClose: (external_prop_types_default()).func -}; -/* harmony default export */ const components_Message = (Message); - -;// CONCATENATED MODULE: ./src/components/Chart/maps/world.json -const world_namespaceObject = JSON.parse('{"type":"FeatureCollection","crs":{"type":"name","properties":{"name":"urn:ogc:def:crs:OGC:1.3:CRS84"}},"features":[{"geometry":{"type":"Polygon","coordinates":[[[47.97822265625001,7.9970703125],[46.97822265625001,7.9970703125],[43.98378906250002,9.008837890624989],[43.482519531250006,9.379492187499991],[43.181640625,9.879980468749991],[42.84160156250002,10.203076171874997],[42.65644531250001,10.6],[42.92275390625002,10.999316406249989],[43.24599609375002,11.499804687499989],[43.85273437500001,10.784277343749991],[44.38652343750002,10.430224609374989],[44.94296875,10.43671875],[45.81669921875002,10.835888671874997],[46.565039062500006,10.745996093749994],[47.40498046875001,11.174023437499997],[48.01923828125001,11.139355468749997],[48.57255859375002,11.320507812499997],[48.938574218750006,11.258447265624994],[50.11005859375001,11.529296875],[50.79228515625002,11.983691406249989],[51.2548828125,11.830712890624994],[51.08427734375002,11.335644531249997],[51.140625,10.656884765624994],[51.031835937500006,10.444775390624997],[51.19296875,10.554638671874997],[51.390234375,10.422607421875],[50.93007812500002,10.33554687499999],[50.825,9.428173828124997],[50.10283203125002,8.199804687499991],[49.85205078125,7.962548828124994],[49.234960937500006,6.77734375],[49.04931640625,6.173632812499989],[47.97529296875001,4.497021484374997],[46.87880859375002,3.28564453125],[46.05117187500002,2.475146484374989],[44.92021484375002,1.81015625],[43.71757812500002,0.857861328124997],[41.97988281250002,-0.973046875],[41.53271484375,-1.6953125],[41.521875,-1.572265625],[41.42695312500001,-1.449511718750003],[41.24980468750002,-1.220507812500003],[40.97871093750001,-0.870312500000011],[40.964453125,2.814648437499997],[41.341796875,3.20166015625],[41.61347656250001,3.590478515624994],[41.88398437500001,3.977734375],[41.91533203125002,4.031298828124989],[42.02412109375001,4.137939453125],[42.85664062500001,4.32421875],[43.12568359375001,4.644482421874997],[43.58349609375,4.85498046875],[43.988867187500006,4.950537109374991],[44.940527343750006,4.912011718749994],[47.97822265625001,7.9970703125]]]},"properties":{"name":"Somalia","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[9.579979133936737,47.05856388629306],[9.409458596647225,47.02019676540292],[9.46249431093294,47.09010747968864],[9.46249431093294,47.19858962254578],[9.527658197470123,47.27026989773668],[9.579979133936737,47.05856388629306]]]},"properties":{"name":"Liechtenstein","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-8.683349609375,27.77800740805682],[-13.038761787013554,27.81190166624856],[-12.948925781249926,27.914160156250034],[-11.552685546874955,28.31010742187496],[-10.486474609374994,29.06494140625],[-10.200585937499994,29.380371093750057],[-9.667089843749949,30.10927734375005],[-9.652929687499977,30.447558593750045],[-9.875488281249943,30.717919921874966],[-9.80869140624992,31.42460937499996],[-9.347460937499932,32.086376953124955],[-9.245849609375,32.572460937499955],[-8.512841796874994,33.25244140625003],[-6.900976562499949,33.96904296874999],[-6.353125,34.77607421875001],[-5.924804687499943,35.78579101562502],[-5.277832031249943,35.90273437500002],[-5.252685546874972,35.61474609374997],[-4.628320312499966,35.206396484375006],[-4.329980468749937,35.161474609375006],[-3.693261718749994,35.27998046874998],[-3.394726562499926,35.21181640625005],[-2.972216796874989,35.40727539062499],[-2.839941406249949,35.127832031249994],[-2.731396484374955,35.13520507812498],[-2.636816406249977,35.11269531250002],[-2.423730468749994,35.12348632812498],[-2.219628906249966,35.10419921874998],[-1.795605468749926,34.751904296874955],[-1.67919921875,33.31865234375002],[-1.550732421874955,33.073583984375006],[-1.510009765625,32.877636718749955],[-1.45,32.784814453124966],[-1.352148437499977,32.70336914062497],[-1.29638671875,32.67568359375002],[-1.188232421875,32.608496093750006],[-1.111035156249983,32.55229492187502],[-1.065527343749949,32.46831054687496],[-1.16259765625,32.399169921875],[-1.275341796874983,32.089013671874966],[-2.863427734374937,32.07470703124997],[-2.930859374999926,32.04252929687499],[-2.988232421874983,31.874218749999983],[-3.01738281249996,31.834277343750017],[-3.439794921874949,31.704541015624983],[-3.604589843749949,31.686767578125],[-3.700244140624989,31.70009765625005],[-3.768164062499977,31.689550781250034],[-3.837109374999983,31.512353515624994],[-3.833398437499937,31.197802734375045],[-3.626904296874955,31.000927734374983],[-4.148779296874977,30.8095703125],[-4.322851562500006,30.698876953124994],[-4.52915039062492,30.62553710937499],[-4.778515624999926,30.552392578124994],[-4.968261718749943,30.465380859375045],[-5.061914062499937,30.326416015625057],[-5.180126953124955,30.166162109374994],[-5.293652343749983,30.058642578125045],[-5.44877929687496,29.956933593750023],[-6.00429687499999,29.83125],[-6.479736328124943,29.82036132812499],[-6.520556640624989,29.659863281249983],[-6.59775390624992,29.578955078125006],[-6.635351562499949,29.568798828124983],[-6.755126953125,29.583837890625034],[-6.855566406249949,29.601611328125017],[-7.142431640624949,29.61958007812504],[-7.427685546874983,29.425],[-7.485742187499994,29.392236328124994],[-8.659912109375,28.718603515625063],[-8.683349609375,27.900390625],[-8.683349609375,27.77800740805682]]]},"properties":{"name":"Morocco","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-13.038761787013554,27.81190166624856],[-8.683349609375,27.77800740805682],[-8.683349609375,27.65644531250004],[-8.817822265624955,27.65644531250004],[-8.817822265624951,27.656445312499997],[-8.683349609375,27.656445312499997],[-8.683349609375,27.2859375],[-8.682861328125,26.921337890624997],[-8.6826171875,26.72314453125],[-8.682324218749983,26.497705078124994],[-8.68212890625,26.273193359375],[-8.68212890625,26.10947265625],[-8.682226562499977,25.995507812499994],[-12.016308593749983,25.995410156250003],[-12.016308593749983,25.740136718749994],[-12.016308593749983,25.331689453124994],[-12.016308593749983,25.059375],[-12.016308593749983,24.923242187499994],[-12.016308593749983,24.378662109375],[-12.016308593749983,23.97021484375],[-12.0234375,23.467578125],[-12.372900390624977,23.318017578124994],[-12.559375,23.290820312500003],[-12.620410156249989,23.27133789062499],[-13.031494140625,23.000244140625],[-13.153271484374983,22.820507812499997],[-13.12702845982141,22.703770926339278],[-13.136540684091575,22.708182548616723],[-13.094335937499977,22.495996093749994],[-13.051220703124983,21.854785156250003],[-13.041748046875,21.713818359374997],[-13.0322265625,21.572070312500003],[-13.025097656249983,21.466796875],[-13.016210937499977,21.333935546874997],[-15.231201171875,21.331298828125],[-16.964550781249983,21.329248046874994],[-17.06396484375,20.89882812499999],[-17.048046874999983,20.80615234375],[-17.098779296874994,20.856884765624997],[-16.930859374999983,21.9],[-16.35874023437495,22.594531250000045],[-16.21025390624999,23.097900390625],[-15.789257812499926,23.792871093750023],[-15.980712890624943,23.670312500000023],[-15.899316406249966,23.844433593749955],[-14.904296875000028,24.719775390625017],[-14.794921874999943,25.404150390625006],[-14.413867187499932,26.25371093749999],[-13.57578125,26.735107421875],[-13.175976562499983,27.655712890624983],[-13.038761787013554,27.81190166624856]],[[-8.774365234374983,27.460546875],[-8.794873046874983,27.120703125000034],[-8.794873046874983,27.120703125],[-8.774365234374983,27.460546875]]]},"properties":{"name":"W. Sahara","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[21.5625,42.247509765625],[21.560839843750017,42.24765625],[21.389550781250023,42.21982421875],[21.28662109375,42.100390625],[21.05976562500001,42.171289062499994],[20.778125,42.071044921875],[20.725,41.87353515625],[20.566210937500017,41.873681640624994],[20.485449218750006,42.223388671875],[20.06396484375,42.54726562499999],[20.054296875,42.760058593749996],[20.344335937500006,42.827929687499996],[20.40996305279786,42.84373166741877],[20.344335937500063,42.82792968750002],[19.670996093750006,43.163964843749994],[19.21875,43.449951171875],[19.196484375000068,43.48500976562502],[19.19160156250004,43.52104492187499],[19.19433593749997,43.533300781250006],[19.495117187500057,43.642871093750045],[19.245019531249994,43.96503906250004],[19.583789062500017,44.04345703125003],[19.118457031250074,44.359960937500006],[19.348632812500057,44.88090820312502],[19.007128906250045,44.86918945312502],[19.062890625000023,45.13720703125],[19.4,45.2125],[19.004687500000074,45.39951171875006],[19.064257812500045,45.51499023437506],[18.839062499999983,45.83574218750002],[18.905371093750006,45.931738281250034],[19.421289062500023,46.064453125],[19.61347656250001,46.169189453125],[19.84443359375001,46.145898437499966],[19.934082031250057,46.161474609375034],[20.161425781250017,46.14189453124996],[20.210156250000068,46.12602539062502],[20.241796875000034,46.10859375000001],[20.301367187500006,46.05068359375002],[20.35859375000004,45.975488281249994],[20.581152343749977,45.86948242187506],[20.65273437499999,45.779394531250006],[20.709277343750074,45.735253906249994],[20.727832031250017,45.73740234374998],[20.746875,45.74897460937501],[20.76015625000005,45.75810546875002],[20.775,45.74980468750002],[20.794042968750006,45.467871093750034],[21.431445312500017,45.192529296874994],[21.465429687500006,45.171875],[21.357031250000034,44.99077148437502],[21.532324218750063,44.900683593750045],[21.519921875000023,44.88081054687498],[21.442187500000074,44.87338867187498],[21.384375,44.87006835937501],[21.357910156250057,44.86181640625003],[21.36005859375004,44.82666015624997],[21.52314453125004,44.79008789062499],[21.63613281250005,44.71044921875],[21.909277343750034,44.666113281250034],[22.026953125,44.61987304687503],[22.093066406250074,44.541943359374955],[22.200976562500017,44.560693359374966],[22.350683593750063,44.676123046875034],[22.497656249999977,44.70625],[22.64208984375,44.65097656249998],[22.720898437499983,44.605517578125045],[22.734375,44.56992187499998],[22.700781250000063,44.55551757812498],[22.620117187500057,44.562353515625034],[22.554003906250017,44.54033203124999],[22.49453125000005,44.43544921875002],[22.687890625000023,44.248291015625],[22.42080078125005,44.00742187500006],[22.399023437500063,43.96953125],[22.36542968750004,43.86210937500002],[22.36962890625003,43.78129882812499],[22.55458984375005,43.45449218750002],[22.767578125,43.35415039062502],[22.81972656250005,43.300732421874955],[22.85957031250001,43.252343749999966],[22.97685546874999,43.18798828125],[22.799902343750006,42.985742187499994],[22.706152343750006,42.88393554687505],[22.466796875,42.842480468749955],[22.53242187500004,42.48120117187497],[22.523535156250006,42.440966796875045],[22.44570312500005,42.35913085937497],[22.42207031250004,42.32885742187503],[22.344042968750045,42.31396484375003],[22.23974609375003,42.303110028468716],[21.81464843750001,42.303125],[21.5625,42.24750976562498],[21.5625,42.247509765625]]]},"properties":{"name":"Serbia","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[74.54140625000002,37.02216796875],[74.03886718750002,36.825732421874996],[73.116796875,36.868554687499994],[72.24980468750002,36.734716796875],[71.23291015625,36.12177734375],[71.18505859375,36.04208984375],[71.57197265625001,35.546826171875],[71.62050781250002,35.183007812499994],[70.965625,34.53037109375],[71.095703125,34.369433593749996],[71.05156250000002,34.049707031249994],[70.65400390625001,33.952294921874994],[69.8896484375,34.007275390625],[70.26113281250002,33.289013671875],[69.5015625,33.020068359374996],[69.24140625000001,32.433544921875],[69.279296875,31.936816406249996],[68.86894531250002,31.634228515624997],[68.59765625,31.802978515625],[68.16103515625002,31.802978515625],[67.57822265625,31.506494140624994],[67.737890625,31.343945312499997],[67.45283203125001,31.234619140625],[66.82929687500001,31.263671875],[66.346875,30.802783203124996],[66.23125,29.86572265625],[65.09550781250002,29.559472656249994],[64.39375,29.544335937499994],[64.09873046875,29.391943359375],[63.56757812500001,29.497998046874997],[62.4765625,29.408349609374994],[62.0009765625,29.530419921874994],[61.22441406250002,29.749414062499994],[60.843359375,29.858691406249996],[61.331640625,30.363720703124997],[61.55947265625002,30.599365234375],[61.7841796875,30.831933593749994],[61.81083984375002,30.91328125],[61.81425781250002,31.072558593749996],[61.75507812500001,31.285302734374994],[61.66015625,31.382421875],[61.34648437500002,31.421630859375],[61.11074218750002,31.451123046874997],[60.854101562500006,31.483251953125],[60.82070312500002,31.495166015624996],[60.791601562500006,31.660595703124997],[60.804296875,31.73447265625],[60.7875,31.877197265625],[60.78994140625002,31.987109375],[60.827246093750006,32.16796875],[60.82929687500001,32.249414062499994],[60.71044921875,32.6],[60.57656250000002,32.994873046875],[60.560546875,33.137841796874994],[60.9169921875,33.505224609375],[60.573828125,33.588330078125],[60.4859375,33.7119140625],[60.48574218750002,34.094775390624996],[60.642675781250006,34.307177734374996],[60.88945312500002,34.31943359375],[60.80390625000001,34.418017578124996],[60.76259765625002,34.475244140624994],[60.73613281250002,34.491796875],[60.72626953125001,34.51826171875],[60.73945312500001,34.544726562499996],[60.80234375,34.554638671875],[60.8453125,34.587695312499996],[60.91474609375001,34.633984375],[60.951171875,34.653857421874996],[61.080078125,34.855615234374994],[61.1,35.272314453125],[61.18925781250002,35.31201171875],[61.24550781250002,35.474072265625],[61.27851562500001,35.51376953125],[61.281835937500006,35.55341796875],[61.26201171875002,35.619580078125],[61.3447265625,35.6294921875],[61.62099609375002,35.43232421875],[62.08964843750002,35.3796875],[62.30781250000001,35.170800781249994],[62.688085937500006,35.255322265625],[63.056640625,35.44580078125],[63.08417968750001,35.56806640625],[63.16972656250002,35.678125],[63.129980468750006,35.84619140625],[63.8625,36.012353515624994],[64.184375,36.14892578125],[64.51103515625002,36.340673828125],[64.56582031250002,36.427587890625],[64.6025390625,36.554541015625],[64.78242187500001,37.05927734375],[64.81630859375002,37.132080078125],[64.95156250000002,37.1935546875],[65.08964843750002,37.237939453124994],[65.30361328125002,37.24677734375],[65.55498046875002,37.251171875],[65.76503906250002,37.569140625],[66.471875,37.3447265625],[66.52226562500002,37.348486328125],[66.827734375,37.3712890625],[67.06884765625,37.334814453125],[67.19550781250001,37.235205078125],[67.31972656250002,37.2095703125],[67.44169921875002,37.2580078125],[67.51728515625001,37.266650390624996],[67.546484375,37.235644531249996],[67.607421875,37.222509765625],[67.7,37.22724609375],[67.7529296875,37.1998046875],[67.75898437500001,37.172216796875],[67.76601562500002,37.14013671875],[67.83447265625,37.064208984375],[67.9580078125,36.972021484375],[68.06777343750002,36.9498046875],[68.26093750000001,37.013085937499994],[68.284765625,37.036328125],[68.29951171875001,37.088427734374996],[68.38691406250001,37.1375],[68.66914062500001,37.2583984375],[68.7232421875,37.268017578125],[68.78203125000002,37.2580078125],[68.82373046875,37.270703125],[68.8384765625,37.30283203125],[68.85537109375002,37.316845703125],[68.88525390625,37.328076171875],[68.91181640625001,37.333935546875],[68.96044921875,37.325048828125],[69.18017578125,37.15830078125],[69.26484375000001,37.1083984375],[69.30390625000001,37.116943359375],[69.35380859375002,37.150048828124994],[69.41445312500002,37.207763671875],[69.4296875,37.290869140625],[69.39921875000002,37.399316406249994],[69.42011718750001,37.48671875],[69.49208984375002,37.553076171875],[69.62578125000002,37.594042968749996],[69.8208984375,37.6095703125],[69.9849609375,37.566162109375],[70.18867187500001,37.582470703125],[70.25146484375,37.66416015625],[70.25498046875,37.765380859375],[70.19941406250001,37.886035156249996],[70.21464843750002,37.9244140625],[70.41777343750002,38.075439453125],[70.7359375,38.42255859375],[71.255859375,38.306982421875],[71.33271484375001,38.170263671875],[71.27851562500001,37.918408203125],[71.319921875,37.90185546875],[71.3896484375,37.906298828124996],[71.48779296875,37.931884765625],[71.55195312500001,37.933154296874996],[71.58222656250001,37.910107421875],[71.43291015625002,37.1275390625],[71.530859375,36.845117187499994],[71.665625,36.696923828124994],[72.65742187500001,37.029052734375],[72.8955078125,37.267529296875],[73.21113281250001,37.408496093749996],[73.38291015625,37.462255859375],[73.48134765625002,37.4716796875],[73.60468750000001,37.446044921875],[73.65712890625002,37.43046875],[73.72060546875002,37.41875],[73.73378906250002,37.37578125],[73.71728515625,37.329443359375],[73.6275390625,37.261572265625],[73.65351562500001,37.23935546875],[73.749609375,37.231787109375],[74.16708984375,37.329443359375],[74.20351562500002,37.372460937499994],[74.25966796875002,37.415429687499994],[74.659375,37.394482421875],[74.73056640625,37.35703125],[74.83046875000002,37.2859375],[74.89130859375001,37.231640625],[74.84023437500002,37.225048828125],[74.76738281250002,37.249169921874994],[74.73896484375001,37.28564453125],[74.72666015625,37.29072265625],[74.6689453125,37.26669921875],[74.55898437500002,37.236621093749996],[74.37216796875,37.15771484375],[74.37617187500001,37.137353515624994],[74.49794921875002,37.0572265625],[74.52646484375,37.030664062499994],[74.54140625000002,37.02216796875]]]},"properties":{"name":"Afghanistan","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[17.57958984375,-8.099023437500009],[17.643359375000017,-8.090722656250009],[18.00878906250003,-8.107617187499983],[18.56269531250001,-7.9359375],[18.944433593750063,-8.001464843750028],[19.142675781250034,-8.001464843750028],[19.34082031249997,-7.966601562500031],[19.369921875000045,-7.706542968749986],[19.371679687500063,-7.655078124999989],[19.47988281250008,-7.472167968750028],[19.48378906250008,-7.279492187500026],[19.527636718750017,-7.144433593749952],[19.87519531250004,-6.986328124999986],[19.99746093750008,-6.976464843750023],[20.190039062500063,-6.9462890625],[20.482226562500074,-6.915820312500017],[20.59003906250001,-6.919921874999957],[20.598730468750006,-6.935156249999949],[20.536914062500045,-7.121777343749955],[20.535839843749983,-7.182812499999955],[20.558398437500045,-7.244433593749989],[20.60781250000008,-7.277734375000023],[20.910937500000017,-7.281445312499983],[21.190332031250023,-7.284960937499989],[21.751074218750034,-7.305468749999989],[21.80605468750005,-7.32861328125],[21.905371093750034,-8.693359374999943],[21.813183593750068,-9.46875],[22.19775390625,-10.040625],[22.30703125000005,-10.691308593750023],[22.203515625000023,-10.829492187500009],[22.226171875,-11.121972656250009],[22.27880859375,-11.19414062499996],[22.314941406250057,-11.198632812499994],[22.39296875000005,-11.159472656250003],[22.486132812500045,-11.086718750000017],[22.56103515625003,-11.05585937500004],[22.814746093750017,-11.08027343750004],[23.076269531250006,-11.087890624999986],[23.463964843750034,-10.969335937499991],[23.83388671875008,-11.013671874999972],[23.96650390625001,-10.871777343750011],[23.98388671875,-11.725],[23.909375,-12.636132812500009],[23.886523437500045,-12.743261718749991],[23.882421875,-12.799023437499983],[23.968066406250045,-12.956933593749994],[23.962988281250006,-12.988476562500026],[23.843164062500023,-13.0009765625],[22.209570312500006,-13.0009765625],[21.97890625000008,-13.0009765625],[21.979101562500034,-13.798730468749994],[21.979296875000074,-14.11962890625],[21.979394531249994,-14.440527343750006],[21.97978515624999,-15.955566406250014],[22.193945312500006,-16.628125],[23.380664062500017,-17.640625],[22.32421875,-17.8375],[20.74550781250008,-18.019726562499983],[20.194335937500057,-17.86367187499999],[18.95527343750004,-17.80351562499999],[18.39638671875005,-17.3994140625],[16.14843750000003,-17.39023437499999],[14.017480468750023,-17.40888671874997],[13.475976562500023,-17.04003906249997],[13.179492187500017,-16.971679687499986],[12.548144531250017,-17.212695312499974],[12.35927734375008,-17.205859375],[12.318457031250006,-17.21337890625003],[12.213378906250028,-17.209960937500043],[12.013964843750074,-17.168554687500034],[11.902539062500011,-17.226562499999957],[11.743066406250023,-17.24921875000004],[11.780078125000017,-16.87128906249997],[11.818945312500034,-16.704101562500014],[11.750878906250023,-15.831933593749966],[12.016113281250057,-15.513671874999957],[12.55048828125004,-13.437792968750003],[12.983203124999989,-12.775683593750017],[13.4169921875,-12.52041015624998],[13.597949218750017,-12.286132812500028],[13.785351562499983,-11.81279296874996],[13.833593750000063,-10.9296875],[13.33222656250004,-9.998925781250009],[12.99853515625,-9.048046875],[13.358984375,-8.687207031250026],[13.378515625000063,-8.369726562500006],[12.82343750000004,-6.954785156249955],[12.283300781250063,-6.12431640624996],[13.184375,-5.85625],[13.346484375000017,-5.863378906250006],[13.978515625,-5.857226562500003],[16.315234375000074,-5.865625],[16.431445312500045,-5.90019531249996],[16.53710937499997,-5.9658203125],[16.697265625,-6.164257812500026],[16.74296874999999,-6.618457031250003],[16.813085937500063,-6.772558593749963],[16.919433593750057,-6.93398437499998],[16.98476562500005,-7.257421874999977],[17.57958984375,-8.099023437500009]]],[[[12.50146484375,-4.5875],[12.848144531250028,-4.428906249999983],[12.881054687500068,-4.445117187499989],[12.971386718750068,-4.551757812499957],[13.048046875000068,-4.619238281250034],[13.072753906250028,-4.634765625],[13.057324218750011,-4.651074218750026],[12.947460937500011,-4.695312499999986],[12.829687499999977,-4.73662109374996],[12.451464843750017,-5.071484374999969],[12.453222656250034,-5.090625],[12.52236328125008,-5.148925781250028],[12.484570312500011,-5.71875],[12.213671875000074,-5.758691406249994],[12.177148437499994,-5.324804687499977],[12.018359375000074,-5.004296874999966],[12.50146484375,-4.5875]]]]},"properties":{"name":"Angola","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[20.06396484375,42.54726562499999],[20.485449218750006,42.223388671875],[20.566210937500017,41.873681640624994],[20.48896484375001,41.272607421874994],[20.709277343750017,40.928369140624994],[20.964257812500023,40.849902343749996],[20.95576171875001,40.775292968749994],[21.030859375,40.622460937499994],[20.881640625000017,40.467919921874994],[20.65742187500001,40.1173828125],[20.4560546875,40.065576171874994],[20.408007812500017,40.049462890624994],[20.383691406250023,40.0171875],[20.338476562500006,39.991064453125],[20.311132812500006,39.979443359375],[20.311328125000017,39.95078125],[20.381640625000017,39.841796875],[20.382421875,39.802636718749994],[20.206835937500017,39.653515625],[20.13105468750001,39.66162109375],[20.05976562500001,39.699121093749994],[20.022558593750006,39.710693359375],[20.001269531250017,39.709423828125],[19.851855468750017,40.0435546875],[19.322265625,40.407080078125],[19.45917968750001,40.40537109375],[19.3375,40.663818359375],[19.57568359375,41.640429687499996],[19.577539062500023,41.7875],[19.342382812500006,41.869091796875],[19.280664062500023,42.17255859375],[19.65449218750001,42.628564453124994],[19.78828125000001,42.476171875],[20.06396484375,42.54726562499999]]]},"properties":{"name":"Albania","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[19.66230468750001,60.187158203124994],[19.53652343750005,60.14497070312501],[19.551367187500063,60.24384765625001],[19.66230468750001,60.187158203124994]]],[[[19.989550781250074,60.351171875],[20.258886718750063,60.26127929687499],[19.799804687500057,60.08173828125001],[19.68691406250005,60.267626953125045],[19.84765625000003,60.22055664062506],[19.823046875000074,60.390185546875045],[19.989550781250074,60.351171875]]]]},"properties":{"name":"Aland","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[1.7060546875,42.503320312499994],[1.534082031250023,42.441699218749996],[1.448828125,42.437451171875],[1.428125,42.46132812499999],[1.414843750000017,42.548388671874996],[1.428320312500006,42.5958984375],[1.501367187500023,42.642724609374994],[1.568164062500017,42.635009765625],[1.709863281250023,42.604443359375],[1.739453125000011,42.575927734375],[1.740234375,42.55673828125],[1.713964843750006,42.525634765625],[1.7060546875,42.503320312499994]]]},"properties":{"name":"Andorra","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[53.927832031250006,24.177197265624983],[53.63447265625004,24.169775390624977],[53.83378906250002,24.258935546875023],[53.927832031250006,24.177197265624983]]],[[[53.3322265625001,24.258593750000045],[53.19091796874997,24.290917968749966],[53.412402343750074,24.411035156250023],[53.3322265625001,24.258593750000045]]],[[[56.29785156250003,25.650683593750045],[56.38798828125002,24.97919921875004],[56.06386718750005,24.73876953125],[56.00058593750006,24.953222656249977],[55.795703125000074,24.868115234374955],[55.76083984375006,24.24267578125],[55.92861328125005,24.215136718750074],[55.98515625000002,24.063378906249966],[55.4684570312501,23.94111328125001],[55.53164062499999,23.81904296875001],[55.1999023437501,23.034765625000034],[55.185839843750074,22.7041015625],[55.104296875000074,22.621484375000023],[52.55507812500005,22.932812499999955],[51.592578125000074,24.07885742187503],[51.56835937500003,24.286181640625074],[51.76757812500003,24.25439453125],[51.84316406250005,24.010888671875023],[52.118554687499994,23.97109375],[52.64824218750002,24.154638671875006],[53.80175781249997,24.069482421874966],[54.14794921875003,24.17119140624999],[54.39707031250006,24.278173828125034],[54.74677734375004,24.810449218750023],[55.94121093750002,25.793994140625017],[56.08046875,26.06264648437505],[56.16748046875003,26.047460937499977],[56.144628906250006,25.690527343750006],[56.29785156250003,25.650683593750045]]]]},"properties":{"name":"United Arab Emirates","childNum":3}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-64.54916992187498,-54.71621093749998],[-63.81542968749997,-54.725097656250014],[-64.637353515625,-54.90253906250001],[-64.75732421875,-54.82656249999999],[-64.54916992187498,-54.71621093749998]]],[[[-68.65322265624994,-54.85361328124999],[-68.62993164062499,-52.65263671875004],[-68.24013671875,-53.08183593749999],[-68.43115234375,-53.0552734375],[-68.48852539062497,-53.260937499999976],[-68.16113281249997,-53.30644531250001],[-68.00849609374995,-53.5640625],[-67.29423828125002,-54.049804687500014],[-66.23564453124999,-54.53349609374997],[-65.17900390624993,-54.678125],[-65.47114257812495,-54.91464843749999],[-66.5111328125,-55.032128906249945],[-67.127099609375,-54.90380859375001],[-68.65322265624994,-54.85361328124999]]],[[[-61.084716796875,-23.65644531250001],[-60.83984375000003,-23.85810546874997],[-59.89248046874994,-24.093554687499974],[-59.18725585937497,-24.56230468749999],[-57.82167968749994,-25.136425781249983],[-57.56313476562494,-25.473730468749963],[-57.943115234375,-26.05292968750001],[-58.18149414062498,-26.30742187499999],[-58.222070312499994,-26.65],[-58.618603515624955,-27.13212890624996],[-58.64174804687494,-27.196093750000017],[-58.60483398437498,-27.314355468750037],[-58.16826171874993,-27.27343749999997],[-56.437158203124966,-27.553808593749977],[-56.16406250000003,-27.321484374999983],[-55.95146484374996,-27.325683593749957],[-55.789990234374926,-27.416406249999966],[-55.71464843749996,-27.41484375],[-55.632910156250006,-27.35712890624997],[-55.59379882812502,-27.288085937500014],[-55.597265625,-27.207617187499963],[-55.56489257812498,-27.15],[-55.496728515624966,-27.11533203124999],[-55.45063476562498,-27.068359375000014],[-55.426660156249994,-27.00927734374997],[-55.13593750000001,-26.931152343749957],[-54.934472656249994,-26.70253906250001],[-54.677734375,-26.308789062499997],[-54.631933593750006,-26.005761718749994],[-54.615869140624994,-25.576074218750023],[-54.44394531249998,-25.625],[-54.15458984374999,-25.523046874999963],[-53.89116210937499,-25.66884765625001],[-53.668554687500006,-26.288183593749977],[-53.83818359375002,-27.121093750000014],[-54.32700195312495,-27.423535156249997],[-54.82910156250003,-27.55058593750003],[-55.10151367187501,-27.866796874999963],[-55.72548828125002,-28.20410156250003],[-55.68725585937497,-28.38164062499996],[-55.890527343749994,-28.370019531249994],[-56.938623046874994,-29.594824218750034],[-57.22465820312499,-29.782128906249994],[-57.40522460937501,-30.03388671875004],[-57.563867187499994,-30.139941406249974],[-57.60888671875003,-30.187792968750045],[-57.65087890624997,-30.295019531250034],[-57.71269531249996,-30.38447265624997],[-57.83120117187502,-30.495214843749963],[-57.87250976562501,-30.591015625000026],[-57.81059570312499,-30.85859375000001],[-57.88632812499998,-30.937402343749994],[-57.86840820312497,-31.104394531249994],[-57.89335937499999,-31.195312499999957],[-58.03339843750001,-31.416601562500006],[-58.053857421874994,-31.494921874999974],[-58.009667968749966,-31.534375],[-57.98798828124998,-31.576171875],[-58.00698242187494,-31.684960937499966],[-58.04233398437495,-31.769238281249997],[-58.16748046874997,-31.87265625],[-58.18901367187499,-31.924218750000037],[-58.16040039062503,-31.986523437500026],[-58.156347656250006,-32.0515625],[-58.17700195312494,-32.11904296875002],[-58.16479492187494,-32.18486328125002],[-58.119726562500006,-32.24892578125002],[-58.12304687499997,-32.321875],[-58.201171875,-32.471679687500014],[-58.219970703125,-32.563964843749986],[-58.17099609374998,-32.95927734374996],[-58.424462890624994,-33.11152343749998],[-58.54721679687498,-33.66347656249998],[-58.392480468749966,-34.192968750000034],[-58.52548828124998,-34.29619140625002],[-58.28334960937494,-34.68349609375005],[-57.54785156250003,-35.018945312499994],[-57.170654296875,-35.3625],[-57.35390624999994,-35.72031249999998],[-57.33544921875,-36.026757812499966],[-57.07617187499994,-36.296777343749994],[-56.74946289062501,-36.346484375],[-56.67202148437494,-36.85126953124998],[-57.546972656250034,-38.085644531250026],[-58.17919921874994,-38.435839843750045],[-59.82832031250001,-38.83818359375003],[-61.112207031249994,-38.99296875000003],[-61.84790039062497,-38.961816406249994],[-62.33476562499993,-38.80009765625],[-62.29506835937502,-39.24326171874996],[-62.053662109374955,-39.373828125],[-62.179345703124994,-39.38046875000002],[-62.076806640624966,-39.46152343750002],[-62.131542968749926,-39.82539062499998],[-62.28691406249996,-39.89531250000002],[-62.40185546875003,-40.19658203125002],[-62.24633789062494,-40.674609374999974],[-62.39501953124997,-40.89082031249997],[-62.95903320312493,-41.10966796875006],[-63.621777343749955,-41.15976562499996],[-64.86948242187503,-40.735839843750014],[-65.13339843749998,-40.88066406250003],[-64.98637695312496,-42.102050781249986],[-64.53774414062494,-42.25458984374998],[-64.57099609374998,-42.416015625],[-64.42041015625003,-42.43378906249998],[-64.10087890624993,-42.395117187500006],[-64.06118164062494,-42.266113281250014],[-64.228515625,-42.21826171874996],[-63.795556640624994,-42.113867187500006],[-63.6298828125,-42.28271484375003],[-63.61733398437502,-42.695800781249986],[-64.03476562499998,-42.88125],[-64.48784179687499,-42.51347656250006],[-64.97070312499997,-42.66630859375002],[-65.02690429687496,-42.75888671874996],[-64.31914062499999,-42.968945312500026],[-64.83994140624998,-43.18886718749998],[-65.25234374999997,-43.571875],[-65.26552734375,-44.2796875],[-65.64760742187502,-44.661425781250045],[-65.63876953125,-45.0078125],[-66.19013671874995,-44.96474609375002],[-66.94140625,-45.25732421875003],[-67.59956054687495,-46.05253906250003],[-67.5064453125,-46.44277343749995],[-66.77685546874994,-47.005859375],[-65.99853515625,-47.09375],[-65.73808593749999,-47.34492187499998],[-65.81430664062495,-47.63818359374996],[-66.22524414062502,-47.826757812500006],[-65.93422851562497,-47.826757812500006],[-65.81005859374997,-47.941113281250026],[-67.46630859375,-48.95175781250004],[-67.68486328125002,-49.2466796875],[-67.82597656249999,-49.91962890625005],[-68.2572265625,-50.104589843749984],[-68.66757812500003,-49.75253906250003],[-68.66162109374997,-49.93574218750005],[-68.97958984375,-50.003027343749984],[-68.59794921874996,-50.00947265624997],[-68.421875,-50.15791015625001],[-69.04477539062495,-50.49912109374998],[-69.35859374999993,-51.028125],[-69.20102539062498,-50.99365234375001],[-69.03530273437497,-51.48896484375002],[-69.46542968750003,-51.58447265625003],[-68.96533203125003,-51.67714843749999],[-68.443359375,-52.35664062500004],[-69.96025390624993,-52.00820312500002],[-71.91865234374995,-51.98955078125004],[-72.40766601562501,-51.54082031250002],[-72.34023437499997,-50.68183593749999],[-72.50981445312496,-50.607519531250034],[-73.15292968749998,-50.73828125000003],[-73.50126953124996,-50.125292968750024],[-73.55419921875,-49.463867187500014],[-73.46157226562497,-49.31386718750001],[-73.13525390625,-49.30068359374999],[-73.03364257812501,-49.014355468750004],[-72.65126953125,-48.84160156249998],[-72.582861328125,-48.47539062499999],[-72.35473632812497,-48.36582031250005],[-72.32832031250001,-48.11005859374998],[-72.517919921875,-47.87636718749998],[-72.34594726562497,-47.49267578124997],[-71.90498046875001,-47.201660156250014],[-71.94023437499999,-46.83125],[-71.69965820312501,-46.6513671875],[-71.87568359374998,-46.160546875],[-71.63154296874998,-45.95371093749998],[-71.74619140624998,-45.57890625],[-71.34931640624995,-45.33193359374995],[-71.5962890625,-44.97919921875004],[-72.04169921874998,-44.90419921875004],[-72.06372070312503,-44.771875],[-71.26113281250002,-44.763085937499966],[-71.15971679687496,-44.56025390625004],[-71.21259765624998,-44.44121093750003],[-71.82001953124993,-44.38310546875],[-71.68007812500002,-43.92958984374998],[-71.90498046875001,-43.34755859374998],[-71.750634765625,-43.237304687499986],[-72.14643554687498,-42.990039062499974],[-72.10820312499993,-42.25185546874995],[-71.75,-42.04677734375001],[-71.91127929687497,-41.650390624999986],[-71.93212890624994,-40.69169921874999],[-71.70898437499997,-40.381738281249994],[-71.81831054687493,-40.17666015624995],[-71.65976562499998,-40.02080078125],[-71.71992187499995,-39.63525390624997],[-71.53945312499997,-39.60244140624995],[-71.40156249999995,-38.93505859374996],[-70.858642578125,-38.60449218750003],[-71.16757812499998,-37.76230468749996],[-71.19218750000002,-36.84365234375004],[-71.05551757812498,-36.52373046874996],[-70.40478515625,-36.06171874999998],[-70.41572265625001,-35.52304687500002],[-70.55517578125,-35.246875],[-70.39316406250003,-35.146875],[-70.05205078124999,-34.30078124999997],[-69.85244140625,-34.224316406250026],[-69.81962890624999,-33.28378906249999],[-70.08486328125002,-33.20175781249998],[-70.02197265625,-32.88457031250002],[-70.36376953125,-32.08349609374997],[-70.25439453125,-31.957714843750026],[-70.585205078125,-31.569433593749963],[-70.51958007812493,-31.1484375],[-70.30908203124994,-31.02265625000004],[-70.15322265625,-30.360937499999963],[-69.95634765624996,-30.35820312500003],[-69.84428710937493,-30.175],[-69.95996093749997,-30.078320312500026],[-70.02680664062501,-29.324023437500017],[-69.82788085937497,-29.10322265624997],[-69.65693359374995,-28.413574218749986],[-69.17441406249998,-27.924707031250037],[-68.84633789062494,-27.153710937499994],[-68.59208984375002,-27.140039062499966],[-68.31865234374999,-26.973242187500006],[-68.59160156249999,-26.47041015624997],[-68.41450195312498,-26.153710937500023],[-68.59208984375002,-25.420019531250034],[-68.38422851562495,-25.091894531249977],[-68.56201171875,-24.74736328125003],[-68.25029296875002,-24.391992187500023],[-67.35620117187503,-24.033789062499963],[-67.00878906249994,-23.00136718750005],[-67.19487304687493,-22.821679687500037],[-66.99111328125,-22.509863281250006],[-66.71171874999999,-22.216308593749986],[-66.36518554687501,-22.113769531249957],[-66.32246093750001,-22.053125],[-66.28212890624997,-21.94746093750001],[-66.24760742187496,-21.83046875],[-66.22016601562495,-21.802539062499974],[-66.174658203125,-21.805664062499986],[-66.09858398437495,-21.83505859375002],[-66.05859375,-21.87949218750002],[-65.86015624999999,-22.019726562499983],[-65.77104492187493,-22.099609375000014],[-65.68618164062497,-22.11025390625005],[-65.51879882812497,-22.094531250000045],[-64.99262695312498,-22.109667968750017],[-64.60551757812499,-22.228808593750045],[-64.52363281250001,-22.37158203125],[-64.47773437499998,-22.485351562499986],[-64.44550781249998,-22.585351562500023],[-64.37397460937498,-22.761035156250017],[-64.32529296875,-22.82763671875],[-64.30791015624993,-22.7953125],[-64.26640625000002,-22.60332031249996],[-63.97612304687502,-22.072558593750003],[-63.92167968749993,-22.028613281250017],[-62.843359375,-21.997265625000026],[-62.62597656250003,-22.29042968749998],[-62.54155273437496,-22.349609374999957],[-62.37250976562498,-22.439160156249997],[-62.21416015624996,-22.612402343750034],[-61.798535156249955,-23.18203125],[-61.084716796875,-23.65644531250001]]]]},"properties":{"name":"Argentina","childNum":3}},{"geometry":{"type":"Polygon","coordinates":[[[46.490625,38.90668945312498],[46.1144531250001,38.877783203125034],[45.977441406249994,39.24389648437503],[45.76630859375004,39.37846679687499],[45.78447265625002,39.54560546875001],[45.456835937500074,39.494482421875006],[45.15283203125003,39.58266601562502],[45.03164062500005,39.76513671874997],[44.76826171875004,39.70351562500005],[44.28925781250004,40.040380859375006],[43.66621093750004,40.12636718750002],[43.56933593750003,40.48237304687498],[43.72265624999997,40.71953124999999],[43.43945312500003,41.10712890625001],[44.077246093750006,41.182519531249994],[44.81132812500002,41.259375],[45.001367187499994,41.29096679687498],[45.188574218750006,41.14741210937504],[45.07050781250004,41.075585937499966],[45.5875,40.846923828125],[45.37890624999997,40.67358398437506],[45.45439453125002,40.532373046874966],[45.96464843750002,40.233789062499966],[45.8859375000001,40.024853515624955],[45.57978515625004,39.9775390625],[46.202050781249994,39.59448242187503],[46.48144531249997,39.55517578125003],[46.36523437500003,39.402490234374994],[46.584765625000074,39.22368164062499],[46.400292968749994,39.1921875],[46.490625,38.90668945312498]]]},"properties":{"name":"Armenia","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-170.72626953125,-14.351171875],[-170.8205078125,-14.312109375],[-170.568115234375,-14.266796875000011],[-170.72626953125,-14.351171875]]]},"properties":{"name":"American Samoa","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[69.2824218750001,-49.05888671875002],[69.16718750000004,-48.88291015624996],[69.36875,-48.89042968749998],[69.2824218750001,-49.05888671875002]]],[[[69.18486328125002,-49.10957031250004],[69.59277343749997,-48.97099609375005],[69.64404296875003,-49.11738281250003],[69.40507812500002,-49.18173828125],[69.5423828125,-49.25566406250005],[70.32021484375005,-49.05859374999996],[70.55546875000007,-49.201464843750024],[70.38613281250005,-49.433984374999966],[70.16582031250002,-49.34296874999998],[69.75996093750004,-49.430175781249986],[69.98642578125006,-49.58164062500003],[70.2477539062501,-49.53066406250003],[70.12431640625002,-49.70439453124999],[69.153125,-49.5296875],[68.99296875000007,-49.704980468750016],[68.81474609375002,-49.69960937499999],[68.88339843750006,-49.16494140624995],[68.76953125000003,-49.06591796875003],[69.00244140624997,-48.661230468750006],[69.13613281250005,-48.86103515625003],[69.05214843750005,-49.08193359375001],[69.18486328125002,-49.10957031250004]]],[[[51.83457031250006,-46.43994140625],[51.65927734375006,-46.37363281249999],[51.7418945312501,-46.32685546874997],[51.83457031250006,-46.43994140625]]]]},"properties":{"name":"Fr. S. Antarctic Lands","childNum":3}},{"geometry":{"type":"Polygon","coordinates":[[[-61.71606445312503,17.037011718749994],[-61.85966796874996,17.013330078124966],[-61.887109374999966,17.09814453125],[-61.81728515624994,17.168945312500057],[-61.71606445312503,17.037011718749994]]]},"properties":{"name":"Antigua and Barb.","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[147.35605468750006,-43.396972656250014],[147.30888671875007,-43.50078125000002],[147.10498046875003,-43.43115234374996],[147.28388671875004,-43.278906250000034],[147.35605468750006,-43.396972656250014]]],[[[145.04296875000003,-40.78671875],[145.28300781250002,-40.76992187500002],[146.31748046875006,-41.16347656250001],[146.72343750000002,-41.07802734375001],[146.84814453124997,-41.16806640624996],[146.98984375000006,-40.99238281249997],[147.45478515625004,-41.00166015624998],[147.62167968750012,-40.844726562499986],[147.87294921875005,-40.87255859374997],[147.96875,-40.779589843750045],[148.215234375,-40.85488281250002],[148.34257812500007,-42.21533203124997],[148.21367187500002,-41.97001953125],[147.92441406250006,-42.5724609375],[147.94541015625006,-43.18183593749997],[147.7858398437501,-43.22001953125002],[147.69892578125004,-43.12255859374997],[147.64794921874997,-43.02060546874999],[147.8,-42.928125],[147.57382812500006,-42.84570312499997],[147.4523437500001,-43.03339843750001],[147.29794921875006,-42.790917968749994],[147.24501953125005,-43.21591796874999],[146.99697265625005,-43.15634765625002],[147.07734375000004,-43.27587890625003],[146.87392578125,-43.6125],[146.54853515625004,-43.50888671874999],[146.04316406250004,-43.547167968749974],[145.99443359375007,-43.37607421875002],[146.20800781249997,-43.31621093749999],[145.8732421875001,-43.29238281250002],[145.48759765625002,-42.92666015625004],[145.19882812500006,-42.23085937500004],[145.46826171874997,-42.492871093750026],[145.51660156249997,-42.3544921875],[145.33105468750003,-42.14707031250002],[145.23486328124997,-42.19697265624997],[145.23818359375,-42.01962890624999],[144.76611328125003,-41.39003906249998],[144.64609375000006,-40.980859375],[144.71855468750002,-40.67226562500002],[145.04296875000003,-40.78671875]]],[[[148.23691406250006,-40.515136718749986],[148.18779296875007,-40.592578125000045],[148.11728515625012,-40.52148437499996],[148.23691406250006,-40.515136718749986]]],[[[144.784375,-40.506738281249966],[144.74804687499997,-40.589453125000034],[144.7833984375001,-40.434863281249974],[144.784375,-40.506738281249966]]],[[[148.32626953125006,-40.30693359375003],[148.40400390625004,-40.486523437500026],[148.02011718750012,-40.40419921874995],[148.32626953125006,-40.30693359375003]]],[[[148.000390625,-39.75761718750003],[148.29736328125003,-39.985742187499966],[148.31357421875012,-40.173535156250026],[148.10566406250004,-40.26210937499995],[147.76718750000012,-39.87031249999998],[148.000390625,-39.75761718750003]]],[[[143.92792968750004,-40.116113281249966],[143.83857421875004,-39.90410156250003],[144.00078125000007,-39.580175781250034],[144.14101562500005,-39.953808593750026],[143.92792968750004,-40.116113281249966]]],[[[145.31445312500003,-38.49082031249996],[145.35507812500012,-38.55703124999995],[145.12841796875003,-38.52763671875],[145.31445312500003,-38.49082031249996]]],[[[137.59648437500007,-35.73867187499998],[137.92890625000004,-35.72607421875],[138.12343750000005,-35.85234375],[137.67089843749997,-35.897949218750014],[137.44843750000004,-36.07480468749999],[137.20957031250012,-35.982421875],[136.7550781250001,-36.03310546875002],[136.540625,-35.89013671875003],[136.63867187499997,-35.74882812500002],[137.33408203125006,-35.59248046875004],[137.58496093749997,-35.620214843750006],[137.59648437500007,-35.73867187499998]]],[[[153.53876953125004,-27.436425781250037],[153.42656250000002,-27.70644531249998],[153.43544921875,-27.40537109375002],[153.53876953125004,-27.436425781250037]]],[[[113.18300781250005,-26.053125],[112.96425781250005,-25.78310546875001],[112.94707031250002,-25.531542968750017],[113.18300781250005,-26.053125]]],[[[153.07744140625002,-25.75078125],[152.97666015625012,-25.551367187499963],[153.03808593750003,-25.193164062500003],[153.22753906249997,-25.00576171875001],[153.14375,-24.814843750000023],[153.25693359375012,-24.72890625],[153.35019531250012,-25.063085937499963],[153.07744140625002,-25.75078125]]],[[[151.14658203125006,-23.49082031250002],[151.24013671875,-23.529687500000037],[151.23828124999997,-23.77578125],[151.03330078125006,-23.530175781250037],[151.14658203125006,-23.49082031250002]]],[[[115.44619140625005,-20.78779296875001],[115.31806640625004,-20.850585937500014],[115.43457031249997,-20.66796875000003],[115.44619140625005,-20.78779296875001]]],[[[149.04375,-20.29150390624997],[148.93886718750005,-20.283691406249986],[148.98105468750012,-20.153515625000026],[149.04375,-20.29150390624997]]],[[[146.27832031249997,-18.23125],[146.29882812499997,-18.48476562500005],[146.09882812500004,-18.251757812500003],[146.27832031249997,-18.23125]]],[[[139.45917968750004,-17.11455078124996],[139.49277343750006,-16.990429687499983],[139.57089843750006,-17.09443359375004],[139.45917968750004,-17.11455078124996]]],[[[139.50781250000003,-16.57304687499996],[139.1595703125,-16.74169921875003],[139.29296875000003,-16.467285156249986],[139.58789062499997,-16.39521484374997],[139.69775390624997,-16.514941406250017],[139.50781250000003,-16.57304687499996]]],[[[137.09365234375005,-15.778125],[136.94267578125002,-15.711718749999989],[137.00957031250007,-15.594824218749977],[137.09365234375005,-15.778125]]],[[[124.59726562500006,-15.40195312500002],[124.52421875000002,-15.421484375],[124.51933593750002,-15.26748046874998],[124.59726562500006,-15.40195312500002]]],[[[125.19882812500006,-14.57949218749998],[125.0912109375,-14.59169921874998],[125.15996093750002,-14.456054687499972],[125.19882812500006,-14.57949218749998]]],[[[136.71464843750002,-13.803906249999983],[136.89082031250004,-13.786621093750014],[136.74531250000004,-14.072656250000023],[136.95078125000006,-14.184277343750026],[136.89433593750002,-14.293066406249977],[136.33544921875003,-14.211816406250037],[136.42470703125,-13.864843749999963],[136.6556640625,-13.675878906250006],[136.71464843750002,-13.803906249999983]]],[[[136.23740234375006,-13.824511718750003],[136.12265625000012,-13.816601562499983],[136.21542968750012,-13.664746093750054],[136.23740234375006,-13.824511718750003]]],[[[136.33867187500007,-11.602343749999989],[136.18027343750006,-11.676757812499957],[136.47929687500002,-11.465917968749991],[136.33867187500007,-11.602343749999989]]],[[[130.45927734375007,-11.679296875000034],[130.60625,-11.816601562500026],[130.04326171875007,-11.787304687500011],[130.19755859375007,-11.658203125],[130.15283203124997,-11.477539062499972],[130.29492187499997,-11.33681640624998],[130.45927734375007,-11.679296875000034]]],[[[130.6188476562501,-11.376074218749991],[131.02304687500006,-11.334375],[131.26826171875004,-11.18984375],[131.53857421874997,-11.436914062500037],[130.95097656250007,-11.926464843750026],[130.51191406250004,-11.617871093749955],[130.38457031250002,-11.1921875],[130.6188476562501,-11.376074218749991]]],[[[136.59853515625,-11.378906249999943],[136.52656250000004,-11.438867187499994],[136.78027343749997,-11.0125],[136.59853515625,-11.378906249999943]]],[[[132.59335937500006,-11.302832031249991],[132.48378906250005,-11.037304687499983],[132.57880859375004,-10.968847656249977],[132.59335937500006,-11.302832031249991]]],[[[143.17890625000004,-11.954492187499966],[143.11025390625,-12.303515625000017],[143.40156250000004,-12.639941406249989],[143.5866210937501,-13.443652343750031],[143.54843750000012,-13.74101562499996],[143.75634765625003,-14.348828124999969],[143.96181640625005,-14.462890625000028],[144.473046875,-14.231835937500023],[144.64804687500006,-14.492480468750017],[145.28769531250006,-14.943164062499989],[145.42607421875002,-16.406152343749966],[145.75478515625,-16.879492187500034],[145.91210937499997,-16.9125],[146.12587890625005,-17.63525390625],[146.03222656249997,-18.272851562500037],[146.3332031250001,-18.55371093749997],[146.38339843750006,-18.97705078124997],[147.13876953125006,-19.39316406250002],[147.41855468750012,-19.378125],[147.7423828125001,-19.770117187499977],[148.759375,-20.28955078125003],[148.88476562499997,-20.480859375],[148.72998046874997,-20.4677734375],[148.68369140625012,-20.58017578124999],[149.20488281250007,-21.125097656249977],[149.45410156249997,-21.57871093750002],[149.70390625000002,-22.440527343750006],[149.82246093750004,-22.389843749999983],[149.97441406250007,-22.55068359374998],[149.94189453125003,-22.30810546875003],[150.07617187500003,-22.16445312499998],[150.54130859375002,-22.55908203125],[150.56855468750004,-22.38398437500004],[150.67246093750012,-22.418164062499983],[150.84316406250005,-23.4580078125],[151.15380859375003,-23.784082031249994],[151.83164062500006,-24.12294921875001],[152.12988281250003,-24.59755859374998],[152.45634765625007,-24.802441406249983],[152.65429687499997,-25.201953125000017],[152.91347656250005,-25.432128906250014],[152.98496093750012,-25.816210937500003],[153.16494140625,-25.964160156250045],[153.11679687500006,-27.194433593750034],[153.57568359375003,-28.24052734374999],[153.6168945312501,-28.673046875],[153.03056640625002,-30.563378906249994],[152.94394531250012,-31.43486328124999],[152.5592773437501,-32.045703125],[152.4704101562501,-32.439062500000034],[152.13652343750002,-32.678125],[152.1642578125001,-32.75742187499996],[151.812890625,-32.90107421875001],[151.29208984375012,-33.580957031249966],[151.28027343750003,-33.92666015625005],[151.12480468750007,-34.00527343749998],[151.23154296875006,-34.0296875],[150.8712890625001,-34.49912109374996],[150.80458984375,-35.01289062500001],[150.19531249999997,-35.83359374999996],[149.93271484375012,-37.528515625000026],[149.480859375,-37.77119140625],[147.87675781250002,-37.93417968749998],[146.8568359375,-38.663476562499966],[146.21748046875004,-38.72744140625004],[146.33662109375004,-38.89423828125],[146.46660156250007,-38.84033203125003],[146.40000000000012,-39.14550781250003],[146.1583984375001,-38.86572265624996],[145.93535156250002,-38.90175781250002],[145.79082031250007,-38.66699218749997],[145.39726562500002,-38.53535156249998],[145.54218750000004,-38.39384765625002],[145.4757812500001,-38.24375],[145.29277343750002,-38.237597656249974],[144.95957031250012,-38.500781250000045],[144.71777343749997,-38.34033203125004],[144.91142578125007,-38.34404296874999],[145.11992187500007,-38.091308593750014],[144.89130859375004,-37.899804687499994],[144.39550781250003,-38.13691406249998],[144.6652343750001,-38.20996093750003],[143.53896484375005,-38.82089843749998],[142.45585937500002,-38.38632812499999],[141.725,-38.27138671875002],[141.5939453125001,-38.38779296875002],[141.42421875,-38.36347656250004],[141.0109375000001,-38.07695312500003],[140.39042968750007,-37.89667968749998],[139.78427734375012,-37.24580078124998],[139.85732421875,-36.662109375],[139.72900390625003,-36.37138671875002],[138.9689453125001,-35.58076171874997],[139.17802734375007,-35.52304687500002],[139.289453125,-35.61132812499997],[139.28251953125002,-35.375390624999966],[138.521875,-35.6423828125],[138.184375,-35.612695312499994],[138.5111328125,-35.02441406249996],[138.48994140625004,-34.76357421875002],[138.0892578125,-34.16982421875002],[137.69169921875002,-35.14296875000004],[136.88359375000007,-35.23974609375004],[137.01425781250012,-34.91582031250003],[137.39101562500005,-34.91328124999997],[137.49384765625004,-34.16113281250003],[137.9318359375001,-33.57910156250003],[137.85234375000007,-33.20078124999996],[137.99257812500005,-33.094238281250014],[137.78320312500003,-32.578125],[137.79091796875,-32.82324218749996],[137.44228515625,-33.1935546875],[137.23730468750003,-33.62949218749999],[136.43066406249997,-34.02998046875004],[135.891015625,-34.660937499999974],[135.96972656249997,-34.98183593749998],[135.7923828125,-34.863281249999986],[135.64755859375006,-34.93964843750001],[135.12304687499997,-34.58574218750003],[135.21679687499997,-34.48730468749996],[135.45,-34.58105468749996],[135.21894531250004,-33.959765625000045],[134.88876953125012,-33.62636718749998],[134.79101562499997,-33.32832031250001],[134.60771484375002,-33.19013671875001],[134.30126953124997,-33.16503906249996],[134.17353515625004,-32.979101562500006],[134.10039062500007,-32.748632812500034],[134.22714843750006,-32.73056640624999],[134.23417968750007,-32.54853515625004],[133.66533203125007,-32.207226562500054],[133.21210937500004,-32.18378906249998],[132.75742187500012,-31.95625],[132.21464843750002,-32.00712890624996],[131.14365234375006,-31.49570312500005],[130.78300781250002,-31.604003906249986],[129.1876953125001,-31.659960937500017],[127.31982421874997,-32.2640625],[125.91718750000004,-32.296972656250034],[124.75878906250003,-32.882714843749994],[124.24375,-33.01523437499999],[123.50683593749997,-33.916210937500054],[122.15097656250006,-33.99179687499999],[122.06113281250006,-33.874414062499966],[121.40507812500007,-33.826757812500034],[119.85410156250012,-33.97470703124998],[119.45058593750005,-34.368261718750034],[118.89531250000007,-34.47988281250004],[118.13554687500002,-34.98662109374999],[117.58193359375005,-35.09775390624998],[116.51718750000012,-34.98789062499998],[115.98671875000005,-34.795019531250034],[115.56503906250012,-34.42578125000003],[115.00878906250003,-34.25585937499997],[114.9938476562501,-33.51533203125],[115.3587890625,-33.63994140624999],[115.68300781250005,-33.19287109375003],[115.6984375000001,-31.694531250000054],[115.07792968750007,-30.560449218750023],[114.85683593750005,-29.14296875],[114.16513671875012,-28.08066406250002],[114.028125,-27.34726562499999],[113.18476562500004,-26.182226562499963],[113.32324218749997,-26.243847656249997],[113.35605468750012,-26.080468750000023],[113.58164062500006,-26.558105468749986],[113.73369140625002,-26.59511718749998],[113.83642578125003,-26.50058593749999],[113.85283203125007,-26.33212890625005],[113.39531250000002,-25.71328125],[113.4513671875001,-25.599121093750014],[113.7130859375001,-25.83076171875004],[113.72373046875006,-26.129785156250037],[113.85390625,-26.01445312499999],[113.99199218750007,-26.32148437500001],[114.09033203124997,-26.393652343749963],[114.21572265625,-26.289453124999966],[114.2142578125,-25.851562500000014],[113.41767578125004,-24.435644531250034],[113.48984375000012,-23.869628906250014],[113.7570312500001,-23.418164062500054],[113.79511718750004,-22.91455078125003],[113.68281250000004,-22.637792968749963],[114.02285156250005,-21.881445312499977],[114.12392578125005,-21.828613281249957],[114.14160156250003,-22.483105468749983],[114.37773437500007,-22.341503906249997],[114.70927734375002,-21.82343749999997],[115.45615234375012,-21.49169921874997],[116.0109375000001,-21.030371093749963],[116.7067382812501,-20.653808593749986],[117.40625,-20.72119140625003],[118.19921875000003,-20.37519531249997],[118.75146484374997,-20.261914062499983],[119.10449218749997,-19.995312500000026],[119.58593750000003,-20.03828125],[120.99794921875,-19.604394531249966],[121.33769531250002,-19.31992187500002],[121.83378906250002,-18.477050781249986],[122.34541015625004,-18.11191406250002],[122.14746093749997,-17.54902343750001],[122.2609375000001,-17.135742187500014],[122.72041015625004,-16.78769531249999],[122.97070312499997,-16.436816406250003],[123.56308593750006,-17.520898437499966],[123.59355468750007,-17.03037109375005],[123.83105468750003,-17.120800781249997],[123.8744140625,-16.918652343750026],[123.4904296875001,-16.49072265624997],[123.62597656249997,-16.416308593750003],[123.60703125000006,-16.224023437499994],[123.72890625,-16.192480468749963],[123.85917968750007,-16.38232421875],[124.04443359374997,-16.264941406249974],[124.30039062500006,-16.388281249999977],[124.77197265624997,-16.40263671874996],[124.40488281250006,-16.298925781249977],[124.41640625,-16.133496093750026],[124.5768554687501,-16.11367187499998],[124.64853515625012,-15.870214843750034],[124.50429687500005,-15.972460937499989],[124.38164062500002,-15.758203125000037],[124.43955078125012,-15.493554687500037],[124.56162109375012,-15.496289062499969],[124.69257812500004,-15.273632812499997],[125.06298828125003,-15.44228515624998],[125.0729492187501,-15.306738281249991],[124.90917968750003,-15.310058593749957],[124.83906250000004,-15.160742187500006],[125.03818359375012,-15.004101562499969],[125.35566406250004,-15.119824218750011],[125.17871093749997,-14.714746093749994],[125.57978515625004,-14.483203124999989],[125.62773437500002,-14.256640625000017],[125.70458984374997,-14.29140625],[125.66162109375003,-14.529492187500011],[125.81953125000004,-14.469140624999966],[125.890625,-14.61796875],[126.0207031250001,-14.49453125],[126.0539062500001,-13.977246093750026],[126.1842773437501,-14.00205078125002],[126.25849609375004,-14.163574218749972],[126.403125,-14.018945312499994],[126.5697265625,-14.160937499999974],[126.7806640625,-13.955175781249977],[126.77558593750004,-13.788476562500037],[126.90322265625,-13.744140624999972],[127.45761718750006,-14.031445312499969],[128.18046875000007,-14.711621093749983],[128.06943359375012,-15.329296874999969],[128.15546875000004,-15.225585937499972],[128.25468750000002,-15.298535156250011],[128.175,-15.043164062500026],[128.57578125000006,-14.774511718750006],[129.05820312500012,-14.884375],[129.21582031249997,-15.160253906249991],[129.26757812500003,-14.871484375000051],[129.63476562499997,-15.139746093749991],[129.637109375,-14.850976562500037],[129.84873046875012,-14.828906249999989],[129.60468750000004,-14.647070312499977],[129.69794921875004,-14.557421875000017],[129.37871093750002,-14.39248046874998],[129.70986328125,-13.979980468749972],[129.83886718749997,-13.572949218749997],[130.25976562500003,-13.30224609375],[130.1349609375001,-13.145507812499957],[130.1681640625001,-12.957421875],[130.39990234374997,-12.68789062499999],[130.61748046875007,-12.646875],[130.62265625000006,-12.43105468749998],[130.8673828125001,-12.557812499999955],[130.87382812500007,-12.367187500000028],[131.29160156250006,-12.067871093749972],[131.43828125000002,-12.27695312500002],[132.06406250000006,-12.28076171875],[132.25322265625007,-12.186035156249972],[132.41103515625,-12.295117187499997],[132.51054687500002,-12.134863281250034],[132.71279296875,-12.1234375],[132.63046875000012,-12.035156249999972],[132.67421875000005,-11.649023437499991],[132.47519531250006,-11.491503906249974],[132.07285156250006,-11.474707031250006],[131.82246093750004,-11.302441406249997],[131.96152343750006,-11.180859375000011],[132.15546875000004,-11.311132812499991],[132.33398437499997,-11.223535156249994],[132.6828125000001,-11.505566406249997],[132.96103515625012,-11.407324218749963],[133.18525390625004,-11.705664062499991],[133.90419921875,-11.832031249999972],[134.4173828125,-12.052734375],[134.73027343750002,-11.984375],[135.02968750000005,-12.19375],[135.2179687500001,-12.221679687499957],[135.92246093750012,-11.825781250000034],[135.70439453125007,-12.209863281250037],[136.00849609375004,-12.19140625],[136.08183593750007,-12.422460937500006],[136.26064453125,-12.433789062499997],[136.32851562500005,-12.305566406249994],[136.24990234375,-12.173046875],[136.44335937499997,-11.951464843749974],[136.7194335937501,-12.226464843749952],[136.89746093749997,-12.243554687499966],[136.94746093750004,-12.34990234374996],[136.53701171875,-12.784277343749991],[136.59433593750012,-13.003808593750051],[136.46103515625006,-13.225195312500034],[136.29414062500004,-13.137988281250031],[135.92734375000012,-13.304296874999977],[135.95449218750005,-13.934863281250017],[135.40517578125005,-14.758203124999966],[135.4533203125001,-14.923144531250003],[136.20537109375002,-15.403417968749963],[136.29140625000005,-15.570117187500003],[136.70488281250007,-15.685253906250011],[136.78466796874997,-15.89423828125004],[137.00214843750004,-15.878320312499994],[137.70371093750006,-16.233007812499963],[138.24501953125005,-16.718359374999977],[139.00986328125006,-16.899316406249994],[139.2484375,-17.328613281249957],[140.03583984375004,-17.702636718749957],[140.51113281250005,-17.62451171875003],[140.83046875,-17.414453125000037],[141.29140625,-16.46347656250002],[141.62548828124997,-15.056640625000014],[141.52294921875003,-14.470117187499994],[141.59433593750006,-14.152832031250014],[141.47255859375,-13.797558593750011],[141.64541015625,-13.259082031250003],[141.61357421875002,-12.943457031250006],[141.92978515625006,-12.73984375],[141.67773437500003,-12.491406250000011],[141.68857421875012,-12.351074218750028],[141.87050781250005,-11.9755859375],[141.96113281250004,-12.054296874999963],[142.168359375,-10.946582031249974],[142.45644531250005,-10.707324218749989],[142.60507812500012,-10.748242187499983],[142.55273437500003,-10.874414062500023],[142.7796875,-11.115332031249977],[142.87255859374997,-11.821386718750034],[143.17890625000004,-11.954492187499966]]],[[[142.2748046875,-10.704785156250011],[142.19140624999997,-10.762011718750031],[142.1310546875001,-10.640625],[142.19794921875004,-10.59199218750004],[142.2748046875,-10.704785156250011]]]]},"properties":{"name":"Australia","childNum":30}},{"geometry":{"type":"Polygon","coordinates":[[[16.953125,48.598828125],[16.86542968750001,48.3869140625],[17.147363281250023,48.00595703125],[17.06660156250001,47.707568359374996],[16.421289062500023,47.674462890624994],[16.676562500000017,47.536035156249994],[16.44287109375,47.39951171875],[16.453417968750017,47.006787109375],[16.093066406250017,46.86328125],[15.957617187500006,46.677636718749994],[14.893261718750011,46.605908203125],[14.5498046875,46.399707031249996],[13.7,46.520263671875],[13.490039062500017,46.555566406249994],[13.3515625,46.557910156249996],[13.16875,46.57265625],[12.479199218750011,46.672509765624994],[12.38828125,46.70263671875],[12.330078125,46.759814453124996],[12.267968750000023,46.835888671875],[12.154101562500017,46.93525390625],[12.130761718750023,46.98476562499999],[12.16552734375,47.028173828125],[12.201269531250006,47.060888671875],[12.197167968750023,47.075],[12.16943359375,47.08212890625],[11.775683593750017,46.986083984375],[11.527539062500011,46.997412109375],[11.433203125,46.983056640624994],[11.244433593750017,46.97568359375],[11.133886718750006,46.936181640624994],[11.0634765625,46.859130859375],[11.025097656250011,46.79697265625],[10.993261718750006,46.777001953124994],[10.92734375,46.769482421875],[10.828906250000017,46.775244140625],[10.759765625,46.793310546875],[10.689257812500017,46.84638671875],[10.579785156250011,46.8537109375],[10.479394531250023,46.855126953124994],[10.452832031250011,46.86494140625],[10.45458984375,46.8994140625],[10.414941406250023,46.964404296874996],[10.349414062500017,46.98476562499999],[10.133496093750011,46.851513671875],[9.580273437500011,47.057373046875],[9.527539062500011,47.270751953125],[9.625878906250023,47.467041015625],[9.524023437500006,47.52421875],[9.748925781250023,47.575537109375],[9.839160156250017,47.552294921874996],[9.971582031250023,47.505322265625],[10.034082031250023,47.473583984375],[10.059863281250017,47.449072265625],[10.066308593750023,47.393359375],[10.200292968750006,47.363427734374994],[10.183007812500023,47.27880859375],[10.369140625,47.366064453125],[10.40390625,47.4169921875],[10.439453125,47.5515625],[10.482812500000023,47.541796875],[10.65869140625,47.547216796875],[10.741601562500023,47.52412109375],[10.873046875,47.52021484375],[11.0419921875,47.393115234374996],[12.185644531250006,47.61953125],[12.203808593750011,47.646728515625],[12.196875,47.70908203125],[12.209277343750017,47.71826171875],[12.268359375000017,47.702734375],[12.353540736607165,47.70264787946429],[12.492553013392856,47.68551897321428],[12.685839843750017,47.669335937499994],[12.771386718750023,47.639404296875],[12.796191406250017,47.60703125],[12.781152343750023,47.5904296875],[12.7828125,47.56416015625],[12.809375,47.5421875],[12.87890625,47.5064453125],[12.968066406250017,47.47568359375],[13.014355468750011,47.478076171874996],[13.031542968750017,47.5080078125],[13.047949218750006,47.579150390624996],[13.054101562500023,47.655126953125],[12.897656250000011,47.721875],[12.953515625000023,47.890625],[12.760351562500006,48.106982421874996],[13.215234375000023,48.301904296874994],[13.322851562500006,48.33125],[13.409375,48.394140625],[13.459863281250023,48.56455078125],[13.4716796875,48.571826171874996],[13.486621093750017,48.581835937499996],[13.636623883928596,48.580904017857144],[13.785351562500011,48.587451171874996],[13.798828125,48.6216796875],[13.802929687500011,48.747509765625],[13.814746093750017,48.766943359375],[14.049121093750017,48.602490234375],[14.691308593750023,48.59921875],[15.066796875000023,48.997851562499996],[16.057226562500006,48.754785156249994],[16.543554687500006,48.796240234375],[16.953125,48.598828125]]]},"properties":{"name":"Austria","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[46.1144531250001,38.877783203125034],[45.4796875000001,39.00625],[44.81718750000002,39.65043945312496],[44.76826171875004,39.70351562500005],[45.03164062500005,39.76513671874997],[45.15283203125003,39.58266601562502],[45.456835937500074,39.494482421875006],[45.78447265625002,39.54560546875001],[45.76630859375004,39.37846679687499],[45.977441406249994,39.24389648437503],[46.1144531250001,38.877783203125034]]],[[[48.572851562500006,41.84448242187503],[49.45673828125004,40.79985351562502],[49.77597656250006,40.583984375],[50.18251953125005,40.50478515625002],[50.3659179687501,40.279492187499955],[49.91884765625005,40.31640625000003],[49.55117187499999,40.19414062499999],[49.3244140625001,39.60834960937501],[49.36279296875003,39.349560546874955],[49.16533203125002,39.03027343750003],[49.013476562500074,39.13398437500001],[48.85449218750003,38.83881835937501],[48.86875,38.43549804687498],[48.59267578125005,38.41108398437498],[47.99648437499999,38.85375976562503],[48.292089843750006,39.01884765624999],[48.10439453125005,39.241113281249994],[48.322167968749994,39.39907226562502],[47.995898437500074,39.683935546875034],[46.490625,38.90668945312498],[46.400292968749994,39.1921875],[46.584765625000074,39.22368164062499],[46.36523437500003,39.402490234374994],[46.48144531249997,39.55517578125003],[46.202050781249994,39.59448242187503],[45.57978515625004,39.9775390625],[45.8859375000001,40.024853515624955],[45.96464843750002,40.233789062499966],[45.45439453125002,40.532373046874966],[45.37890624999997,40.67358398437506],[45.5875,40.846923828125],[45.07050781250004,41.075585937499966],[45.188574218750006,41.14741210937504],[45.001367187499994,41.29096679687498],[45.2171875,41.423193359375006],[45.28095703125004,41.449560546875034],[46.086523437500006,41.183837890625],[46.43095703125002,41.077050781249994],[46.534375,41.08857421875004],[46.62636718750005,41.15966796875006],[46.66240234375002,41.24550781250002],[46.67255859375004,41.28681640625001],[46.61894531250002,41.34375],[46.30546875000002,41.507714843749994],[46.18427734375004,41.70214843749997],[46.42988281250004,41.890966796875006],[46.74931640625002,41.812597656250006],[47.31767578125002,41.28242187500001],[47.79101562499997,41.19926757812502],[48.572851562500006,41.84448242187503]]]]},"properties":{"name":"Azerbaijan","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[30.553613281250023,-2.400097656250011],[30.53369140625,-2.42626953125],[30.441992187500006,-2.613476562500011],[30.424218750000023,-2.6416015625],[30.47333984375001,-2.6943359375],[30.42402343750001,-2.824023437500003],[30.433496093750023,-2.87451171875],[30.515039062500023,-2.917578125],[30.604296875000017,-2.935253906250011],[30.70947265625,-2.977246093750011],[30.7802734375,-2.98486328125],[30.811132812500006,-3.116406250000011],[30.79023437500001,-3.274609375000011],[30.4,-3.65390625],[29.947265625,-4.307324218750011],[29.7177734375,-4.455859375],[29.403222656250023,-4.449316406250006],[29.211816406250023,-3.833789062500003],[29.224414062500017,-3.053515625],[29.01435546875001,-2.72021484375],[29.10205078125,-2.595703125],[29.390234375,-2.80859375],[29.698046875000017,-2.794726562500003],[29.8681640625,-2.71640625],[29.93017578125,-2.339550781250011],[30.117285156250006,-2.416601562500006],[30.408496093750017,-2.31298828125],[30.553613281250023,-2.400097656250011]]]},"properties":{"name":"Burundi","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[5.693554687500011,50.774755859375006],[5.993945312500017,50.75043945312504],[6.340917968750006,50.451757812500034],[6.116503906250045,50.120996093749966],[6.08906250000004,50.15458984374996],[6.054785156249977,50.154296875],[5.976269531250068,50.167187499999955],[5.866894531250068,50.08281250000002],[5.817382812500028,50.01269531250003],[5.7880859375,49.96123046875002],[5.744042968749994,49.91962890624998],[5.789746093749983,49.53828125000001],[5.50732421875,49.51088867187502],[4.867578125000051,49.78813476562502],[4.818652343750045,50.153173828125034],[4.545019531250063,49.96025390624999],[4.149316406250023,49.971582031249994],[4.174609375000017,50.24648437500005],[3.689355468750023,50.30605468750002],[3.595410156250068,50.47734374999999],[3.27333984375008,50.53154296875002],[3.10683593750008,50.779443359374994],[2.759375,50.750634765624994],[2.52490234375,51.097119140624955],[3.35009765625,51.37768554687503],[3.43251953125008,51.24575195312505],[3.902050781250011,51.20766601562502],[4.226171875000034,51.38647460937503],[5.03095703125004,51.46909179687498],[5.214160156250045,51.278955078124966],[5.796484375000034,51.153076171875],[5.693554687500011,50.774755859375006]]]},"properties":{"name":"Belgium","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[3.595410156250011,11.6962890625],[3.553906250000011,11.631884765624989],[3.490527343750017,11.49921875],[3.48779296875,11.395410156249994],[3.638867187500011,11.176855468749991],[3.65625,11.154589843749989],[3.6953125,11.1203125],[3.71640625,11.07958984375],[3.7568359375,10.76875],[3.83447265625,10.607421875],[3.771777343750017,10.417626953124994],[3.646582031250006,10.408984374999989],[3.60205078125,10.004541015624994],[3.3251953125,9.778466796874994],[3.044921875,9.083837890624991],[2.774804687500023,9.048535156249997],[2.703125,8.371826171875],[2.68603515625,7.873730468749997],[2.719335937500006,7.616259765624989],[2.7509765625,7.541894531249994],[2.78515625,7.476855468749989],[2.783984375000017,7.443408203124989],[2.765820312500011,7.422509765624994],[2.75048828125,7.395068359374989],[2.756738281250023,7.067919921874989],[2.721386718750011,6.980273437499989],[2.731738281250017,6.852832031249989],[2.7529296875,6.771630859374994],[2.774609375000011,6.711718749999989],[2.753710937500017,6.661767578124994],[2.735644531250017,6.595703125],[2.706445312500023,6.369238281249991],[1.62265625,6.216796875],[1.777929687500006,6.294628906249997],[1.530957031250011,6.992431640625],[1.624707031250011,6.997314453125],[1.600195312500006,9.050048828125],[1.3857421875,9.361669921874991],[1.330078125,9.996972656249994],[0.763378906250011,10.386669921874997],[0.900488281250006,10.993261718749991],[1.4267578125,11.447119140624991],[1.980371093750023,11.418408203124997],[2.38916015625,11.897070312499991],[2.366015625000017,12.221923828125],[2.805273437500006,12.383837890624989],[3.595410156250011,11.6962890625]]]},"properties":{"name":"Benin","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[0.217480468750011,14.911474609374991],[0.163867187500017,14.497216796874994],[0.382519531250011,14.245800781249997],[0.42919921875,13.972119140624997],[0.6181640625,13.703417968750003],[1.201171875,13.357519531249991],[0.988476562500011,13.36484375],[0.9873046875,13.041894531249994],[1.56494140625,12.635400390624994],[2.104589843750006,12.701269531249991],[2.226269531250011,12.466064453125],[2.072949218750011,12.309375],[2.38916015625,11.897070312499991],[1.980371093750023,11.418408203124997],[1.4267578125,11.447119140624991],[0.900488281250006,10.993261718749991],[0.49267578125,10.954980468749994],[-0.068603515625,11.115625],[-0.299462890624994,11.166894531249994],[-0.627148437499983,10.927392578124994],[-1.04248046875,11.010058593749989],[-2.829931640624977,10.998388671874991],[-2.914892578124977,10.592333984374989],[-2.791162109374994,10.432421874999989],[-2.780517578125,9.745849609375],[-2.765966796874977,9.658056640624991],[-2.706201171874994,9.533935546875],[-2.695849609374989,9.481347656249994],[-2.7171875,9.457128906249991],[-2.7666015625,9.424707031249994],[-2.816748046874977,9.425830078124989],[-2.875146484374994,9.500927734374997],[-2.90087890625,9.534619140624997],[-2.948144531249994,9.610742187499994],[-2.98828125,9.687353515624991],[-3.042626953124994,9.720898437499997],[-3.095800781249977,9.752099609374994],[-3.160693359374989,9.849169921874989],[-3.223535156249994,9.895458984374997],[-3.289697265624994,9.882226562499994],[-3.581152343749977,9.92431640625],[-3.790625,9.9171875],[-4.18115234375,9.78173828125],[-4.267187499999977,9.743261718749991],[-4.332226562499983,9.645703125],[-4.406201171874983,9.647998046874989],[-4.526611328125,9.723486328124991],[-4.625830078124977,9.713574218749997],[-4.721777343749977,9.756542968749997],[-5.262304687499977,10.319677734374991],[-5.523535156249977,10.426025390625],[-5.490478515625,11.042382812499994],[-5.250244140625,11.375781249999989],[-5.288134765624989,11.827929687499989],[-4.699316406249977,12.076171875],[-4.4287109375,12.337597656249997],[-4.480615234374994,12.672216796874991],[-4.227099609374989,12.793701171875],[-4.328710937499977,13.119042968749994],[-4.151025390624994,13.306201171875003],[-3.947314453124989,13.402197265624991],[-3.527636718749989,13.182714843749991],[-3.3017578125,13.28076171875],[-3.248632812499977,13.658349609374994],[-2.950830078124994,13.6484375],[-2.873925781249994,13.950732421875003],[-2.586718749999989,14.227587890625003],[-2.113232421874983,14.16845703125],[-1.97304687499999,14.45654296875],[-1.049560546875,14.81953125],[-0.760449218749983,15.047753906249994],[-0.235888671874989,15.059423828124991],[0.217480468750011,14.911474609374991]]]},"properties":{"name":"Burkina Faso","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[91.94921875000003,21.50805664062503],[91.85947265625012,21.532958984375057],[91.90771484374997,21.722949218750017],[91.94921875000003,21.50805664062503]]],[[[91.87382812500002,21.832128906249977],[91.8375976562501,21.750244140625],[91.85068359375012,21.927050781250045],[91.87382812500002,21.832128906249977]]],[[[91.15078125000005,22.175195312499966],[91.04472656250002,22.10517578125001],[91.0794921875,22.519726562499983],[91.15078125000005,22.175195312499966]]],[[[91.55673828125006,22.38222656250005],[91.41132812500004,22.475683593750006],[91.45605468749997,22.61650390624999],[91.55673828125006,22.38222656250005]]],[[[90.77763671875007,22.089306640624983],[90.51503906250005,22.06513671875001],[90.68046875000007,22.327490234375006],[90.50292968749997,22.835351562499994],[90.59648437500002,22.863525390625057],[90.86816406250003,22.48486328125],[90.77763671875007,22.089306640624983]]],[[[88.94072265625002,26.24536132812497],[88.97041015625004,26.250878906250023],[88.95195312500002,26.412109375],[89.01865234375012,26.410253906249977],[89.28925781250004,26.03759765625],[89.54990234375006,26.005273437499994],[89.57275390625003,26.13232421875003],[89.67089843750003,26.21381835937504],[89.8229492187501,25.94140625000003],[89.82490234375004,25.56015625],[89.80087890625012,25.33613281250001],[89.81406250000006,25.305371093749955],[89.86630859375012,25.293164062499955],[90.11962890625003,25.21997070312497],[90.61308593750002,25.16772460937497],[92.04970703125005,25.16948242187499],[92.46835937500006,24.94414062499999],[92.38496093750004,24.848779296875023],[92.25126953125007,24.895068359375045],[92.22832031250002,24.88134765625],[92.22666015625012,24.77099609374997],[92.11748046875002,24.493945312500017],[92.06416015625004,24.374365234375006],[91.84619140624997,24.17529296875003],[91.72656250000003,24.20507812499997],[91.35019531250012,24.06049804687501],[91.16044921875007,23.66064453125],[91.359375,23.06835937500003],[91.43623046875004,23.19990234375001],[91.55351562500002,22.991552734375006],[91.61953125,22.97968750000001],[91.75097656250003,23.053515625000017],[91.75419921875007,23.287304687499955],[91.79003906249997,23.361035156249983],[91.937890625,23.504687500000017],[91.92949218750007,23.598242187499977],[91.92958984375,23.68598632812501],[91.97851562500003,23.691992187499977],[92.04404296875006,23.677783203125017],[92.24609375000003,23.683593750000057],[92.33378906250002,23.242382812499955],[92.36162109375002,22.929003906250074],[92.46445312500006,22.734423828125045],[92.49140625000004,22.685400390625006],[92.5612304687501,22.04804687500001],[92.57490234375004,21.978076171875045],[92.58281250000002,21.940332031249994],[92.5934570312501,21.46733398437499],[92.63164062500002,21.306201171875045],[92.33056640624997,21.439794921874977],[92.17958984375005,21.293115234375023],[92.32412109375,20.791845703125063],[92.0560546875,21.1748046875],[91.86337890625012,22.350488281249966],[91.7970703125001,22.297460937500006],[91.48007812500006,22.884814453125045],[91.2162109375,22.642236328124994],[90.94560546875002,22.597021484375034],[90.65625,23.025488281250006],[90.60400390624997,23.59135742187499],[90.55566406249997,23.42153320312505],[90.26914062500012,23.455859375000017],[90.59091796875012,23.266406250000045],[90.43505859374997,22.751904296874955],[90.61611328125,22.362158203125034],[90.23056640625006,21.82978515625004],[90.07119140625005,21.887255859375017],[90.20957031250006,22.156591796875006],[89.95419921875006,22.022851562500023],[89.91806640625012,22.11616210937501],[89.98515625000002,22.466406250000063],[89.81191406250005,21.983496093750006],[89.56855468750004,21.767431640625034],[89.48320312500007,22.275537109374994],[89.50058593750006,21.914355468750045],[89.35371093750004,21.72109375],[89.09394531250004,21.872753906249983],[89.05,22.274609374999983],[88.92070312500002,22.632031249999955],[88.89970703125002,22.843505859375057],[88.85058593749997,23.040527343750057],[88.928125,23.186621093750063],[88.72441406250002,23.254980468750034],[88.69765625,23.493017578125034],[88.63574218749997,23.55],[88.56738281249997,23.674414062500034],[88.69980468750006,24.002539062500006],[88.71376953125,24.069628906250017],[88.72656250000003,24.186230468749955],[88.7335937500001,24.23090820312501],[88.72353515625,24.27490234375],[88.64228515625004,24.325976562500017],[88.49853515625003,24.34663085937504],[88.3375,24.45385742187503],[88.225,24.460644531249983],[88.14550781250003,24.485791015624955],[88.07910156249997,24.549902343750063],[88.02343750000003,24.62783203125005],[88.03027343749997,24.66445312500005],[88.0451171875001,24.713037109374994],[88.1498046875,24.914648437500034],[88.1888671875,24.92060546875001],[88.27949218750004,24.881933593750034],[88.31337890625005,24.8818359375],[88.37294921875,24.961523437499977],[88.45625,25.18842773437504],[88.57382812500006,25.18789062499999],[88.92978515625012,25.222998046875063],[88.94414062500002,25.290771484375],[88.85478515625002,25.333544921875017],[88.76914062500006,25.490478515625],[88.50244140624997,25.537011718749994],[88.14746093749997,25.811425781250023],[88.1066406250001,25.841113281250045],[88.15078125000005,26.08715820312497],[88.33398437499997,26.257519531249955],[88.44042968749997,26.369482421875034],[88.38623046875003,26.471533203125034],[88.35146484375005,26.482568359374966],[88.36992187500002,26.564111328124994],[88.51826171875004,26.517773437499955],[88.68281250000004,26.291699218749983],[88.94072265625002,26.24536132812497]]]]},"properties":{"name":"Bangladesh","childNum":6}},{"geometry":{"type":"Polygon","coordinates":[[[28.585351562500023,43.742236328124996],[28.465429687500006,43.389306640624994],[28.133691406250023,43.39560546875],[27.92890625000001,43.1861328125],[27.88886718750001,42.74970703125],[27.484765625000023,42.468066406249996],[28.014453125000017,41.969042968749996],[27.47480468750001,41.946875],[27.294921875,42.079541015625],[27.24433593750001,42.09326171875],[27.01171875,42.058642578124996],[26.96875,42.02685546875],[26.884863281250006,41.991845703124994],[26.615332031250006,41.964892578124996],[26.549707031250023,41.896728515625],[26.51142578125001,41.8263671875],[26.3603515625,41.8015625],[26.327246093750006,41.772802734375],[26.31796875,41.744677734374996],[26.320898437500006,41.716552734375],[26.200585937500023,41.743798828124994],[26.107421875,41.72568359375],[26.085546875,41.704150390624996],[26.066015625,41.673242187499994],[26.1435546875,41.521533203124996],[26.155175781250023,41.434863281249996],[26.135351562500006,41.3857421875],[26.06640625,41.35068359375],[25.92333984375,41.311914062499994],[25.784960937500017,41.330419921875],[25.52705078125001,41.2998046875],[25.381933593750006,41.26435546875],[25.25117187500001,41.243554687499994],[24.773730468750017,41.356103515624994],[24.595996093750017,41.442724609375],[24.5693359375,41.4673828125],[24.51826171875001,41.552539062499996],[24.487890625,41.555224609374996],[24.056054687500023,41.527246093749994],[24.03291015625001,41.469091796875],[24.011328125,41.46005859375],[23.635156250000023,41.386767578124996],[23.53583984375001,41.386035156249996],[23.433398437500017,41.398730468749996],[23.3720703125,41.3896484375],[23.23984375,41.3849609375],[23.15595703125001,41.322070312499996],[22.916015625,41.336279296875],[23.00361328125001,41.73984375],[22.836816406250023,41.993603515625],[22.344042968750017,42.31396484375],[22.42207031250001,42.328857421875],[22.445703125000023,42.359130859375],[22.523535156250006,42.440966796874996],[22.53242187500001,42.481201171875],[22.524218750000017,42.50390625],[22.43623046875001,42.6291015625],[22.466796875,42.84248046875],[22.799902343750006,42.985742187499994],[22.976855468750017,43.18798828125],[22.85957031250001,43.25234375],[22.819726562500023,43.300732421875],[22.767578125,43.354150390624994],[22.554589843750023,43.454492187499994],[22.36962890625,43.781298828124996],[22.36542968750001,43.862109375],[22.399023437500006,43.96953125],[22.420800781250023,44.007421875],[22.452529688228115,44.0510441391688],[22.547921095934313,44.113823956634434],[22.688564844478098,44.254306249271906],[23.02851562500001,44.077978515625],[22.868261718750006,43.947900390624994],[22.919042968750006,43.83447265625],[25.4970703125,43.670800781249994],[26.2158203125,44.007275390625],[27.0869140625,44.167382812499994],[27.425390625,44.0205078125],[27.88427734375,43.987353515624996],[28.221972656250017,43.772851562499994],[28.585351562500023,43.742236328124996]]]},"properties":{"name":"Bulgaria","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[50.60722656250002,25.883105468750003],[50.57490234375001,25.806787109374994],[50.465917968750006,25.965527343749997],[50.46992187500001,26.228955078124997],[50.5859375,26.24072265625],[50.60722656250002,25.883105468750003]]]},"properties":{"name":"Bahrain","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-73.02685546874994,21.19238281250003],[-73.16455078125003,20.979150390625023],[-73.68115234375003,20.9755859375],[-73.68037109374995,21.103320312500017],[-73.52309570312497,21.190820312499966],[-73.23535156249997,21.15449218750004],[-73.05849609375,21.313378906249994],[-73.02685546874994,21.19238281250003]]],[[[-73.041015625,22.429052734375006],[-72.74726562500001,22.32739257812497],[-73.16191406250002,22.380712890625006],[-73.041015625,22.429052734375006]]],[[[-74.20673828124998,22.213769531250023],[-74.27690429687499,22.183691406250006],[-73.906396484375,22.527441406250063],[-73.95419921874995,22.71552734375001],[-73.84995117187503,22.731054687500063],[-73.83652343749998,22.538427734374977],[-74.20673828124998,22.213769531250023]]],[[[-74.05751953124997,22.723486328125034],[-74.27460937499995,22.71166992187503],[-74.30703125,22.83959960937497],[-74.05751953124997,22.723486328125034]]],[[[-74.84047851562494,22.894335937500017],[-75.22333984374995,23.165332031250074],[-75.13056640624998,23.267919921875006],[-75.31596679687502,23.668359374999966],[-74.84047851562494,22.894335937500017]]],[[[-75.66455078124997,23.45014648437501],[-76.03710937500003,23.60278320312503],[-76.01044921875001,23.671386718750057],[-75.66455078124997,23.45014648437501]]],[[[-74.42944335937497,24.068066406249955],[-74.55092773437502,23.96894531250001],[-74.52690429687502,24.105078125000034],[-74.42944335937497,24.068066406249955]]],[[[-77.65771484374994,24.249462890624955],[-77.75527343750002,24.163476562500023],[-77.61538085937494,24.216357421875045],[-77.5615234375,24.136816406250006],[-77.57373046875,23.739160156249994],[-77.77128906249999,23.752539062499977],[-77.99990234374994,24.219824218750063],[-77.65771484374994,24.249462890624955]]],[[[-75.30839843749999,24.2],[-75.50322265624996,24.139062500000023],[-75.40893554687503,24.265771484374994],[-75.72666015625,24.68935546875005],[-75.30839843749999,24.2]]],[[[-77.34755859375,25.013867187499983],[-77.56191406249997,25.030029296875],[-77.27558593750001,25.055761718750006],[-77.34755859375,25.013867187499983]]],[[[-77.74384765625001,24.70742187499999],[-77.74521484375,24.463476562500034],[-78.04492187499997,24.287451171875063],[-78.14580078125002,24.493457031250017],[-78.36650390624993,24.544189453125057],[-78.435302734375,24.627587890624994],[-78.24272460937493,24.65380859375],[-78.21137695312495,25.191259765624977],[-77.97529296874998,25.084814453125063],[-77.74384765625001,24.70742187499999]]],[[[-76.64882812499994,25.487402343750006],[-76.34379882812496,25.33203124999997],[-76.12661132812497,25.14052734375005],[-76.16953125,24.6494140625],[-76.319970703125,24.81767578124999],[-76.21376953124994,24.822460937499983],[-76.160400390625,25.119335937499983],[-76.36928710937502,25.312597656250006],[-76.62070312499998,25.43164062500003],[-76.78066406249997,25.426855468750006],[-76.71083984374997,25.564892578124983],[-76.64882812499994,25.487402343750006]]],[[[-78.49287109375001,26.729052734375017],[-77.92246093749998,26.69111328125001],[-78.74365234374994,26.50068359375004],[-78.98564453124996,26.689501953125045],[-78.79804687500001,26.58242187499999],[-78.59711914062493,26.797949218750006],[-78.49287109375001,26.729052734375017]]],[[[-77.22563476562496,25.904199218750023],[-77.40317382812498,26.02470703124996],[-77.24677734374998,26.156347656250034],[-77.238623046875,26.561132812500006],[-77.510595703125,26.845996093750045],[-77.94375,26.90356445312503],[-77.53388671874995,26.903417968750006],[-77.06635742187501,26.530175781249994],[-77.03828124999998,26.333447265624983],[-77.16728515624996,26.240332031250006],[-77.22563476562496,25.904199218750023]]]]},"properties":{"name":"Bahamas","childNum":14}},{"geometry":{"type":"Polygon","coordinates":[[[19.007128906250045,44.86918945312502],[19.348632812500057,44.88090820312502],[19.118457031250074,44.359960937500006],[19.583789062500017,44.04345703125003],[19.245019531249994,43.96503906250004],[19.495117187500057,43.642871093750045],[19.19433593749997,43.533300781250006],[19.164355468750017,43.53544921874999],[19.11279296874997,43.52773437500002],[19.080078125000057,43.51772460937502],[19.0283203125,43.53251953125002],[18.97421875,43.54233398437498],[18.95068359375,43.52666015624999],[19.036718750000034,43.35732421875002],[19.026660156250017,43.292431640624955],[18.97871093750001,43.28540039062503],[18.934667968750006,43.339453125000034],[18.85107421875003,43.34633789062502],[18.749218750000068,43.283544921875006],[18.67421875000008,43.230810546875006],[18.623632812500063,43.027685546875034],[18.488476562500068,43.01215820312498],[18.44384765625003,42.96845703125004],[18.46601562500001,42.777246093749994],[18.54589843750003,42.64160156249997],[18.436328125000017,42.559716796874994],[17.667578125000063,42.897119140624994],[17.585156250000068,42.93837890625005],[17.650488281250063,43.006591796875],[17.27382812500005,43.44575195312501],[16.300097656250017,44.12451171875],[16.10341796875008,44.52099609375006],[15.736621093750045,44.76582031250001],[15.788085937500057,45.17895507812497],[16.028320312500057,45.18959960937502],[16.29335937500005,45.00883789062496],[16.53066406250008,45.21669921875002],[16.918652343749983,45.27656249999998],[17.812792968750074,45.078125],[18.66259765625,45.07744140624999],[18.83642578125,44.883251953124955],[19.007128906250045,44.86918945312502]]]},"properties":{"name":"Bosnia and Herz.","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[28.14794921875,56.142919921875],[28.284277343750006,56.055908203125],[29.375,55.938720703125],[29.353417968750023,55.784375],[29.412988281250023,55.724853515625],[29.482226562500017,55.6845703125],[29.63007812500001,55.751171875],[29.6845703125,55.7697265625],[29.744140625,55.77041015625],[29.82392578125001,55.7951171875],[29.881640625000017,55.832324218749996],[29.93701171875,55.845263671874996],[30.04267578125001,55.83642578125],[30.23359375000001,55.84521484375],[30.625585937500006,55.666259765625],[30.906835937500006,55.57001953125],[30.90058593750001,55.397412109375],[30.82099609375001,55.3302734375],[30.810546875,55.306982421875],[30.814453125,55.2787109375],[30.87744140625,55.2234375],[30.958886718750023,55.13759765625],[30.97773437500001,55.08779296875],[30.97773437500001,55.05048828125],[30.829882812500017,54.914990234375],[30.804492187500017,54.8609375],[30.791015625,54.806005859375],[30.798828125,54.783251953124996],[30.984179687500017,54.6958984375],[31.12128906250001,54.648486328124996],[31.152148437500017,54.625341796875],[31.074804687500006,54.491796875],[31.18476562500001,54.452978515625],[31.299121093750017,54.29169921875],[31.403613281250017,54.195947265625],[31.62841796875,54.111181640625],[31.7919921875,54.055908203125],[31.825976562500017,54.030712890625],[31.837792968750023,54.00078125],[31.825292968750006,53.935009765625],[31.783007812500017,53.85498046875],[31.754199218750017,53.81044921875],[31.82080078125,53.791943359375],[31.9921875,53.796875],[32.20039062500001,53.78125],[32.45097656250002,53.6533203125],[32.70429687500001,53.336328125],[32.64443359375002,53.32890625],[32.57802734375002,53.31240234375],[32.469335937500006,53.2703125],[32.14199218750002,53.091162109375],[31.849707031250006,53.106201171875],[31.668261718750017,53.200927734375],[31.417871093750023,53.196044921875],[31.38837890625001,53.184814453125],[31.364550781250017,53.138964843749996],[31.30292968750001,53.060888671875],[31.2587890625,53.01669921875],[31.29511718750001,52.989794921874996],[31.35302734375,52.933447265625],[31.442773437500023,52.86181640625],[31.53515625,52.7982421875],[31.564843750000023,52.759228515625],[31.585546875,52.532470703125],[31.57734375000001,52.312304687499996],[31.6015625,52.284814453125],[31.64990234375,52.26220703125],[31.690625,52.220654296875],[31.758593750000017,52.125830078125],[31.76337890625001,52.10107421875],[31.57373046875,52.10810546875],[31.345996093750017,52.10537109375],[31.21796875000001,52.050244140625],[30.98066406250001,52.046191406249996],[30.845703125,51.953076171875],[30.755273437500023,51.895166015625],[30.667285156250017,51.814111328125],[30.583886718750023,51.68896484375],[30.533007812500017,51.596337890624994],[30.56074218750001,51.531494140625],[30.602343750000017,51.471240234374996],[30.611718750000023,51.40634765625],[30.63251953125001,51.355419921875],[30.449511718750017,51.274316406249994],[30.160742187500006,51.477880859375],[29.346484375000017,51.382568359375],[29.10205078125,51.6275390625],[29.06074218750001,51.625439453125],[29.013085937500023,51.598925781249996],[28.97773437500001,51.57177734375],[28.927539062500017,51.562158203124994],[28.849511718750023,51.540185546874994],[28.73125,51.433398437499996],[28.690234375000017,51.438867187499994],[28.647753906250017,51.45654296875],[28.599023437500023,51.542626953124994],[28.532031250000017,51.562451171875],[27.85859375000001,51.5923828125],[27.7,51.477978515625],[27.689746093750017,51.572412109374994],[27.296289062500023,51.597412109375],[27.270117187500006,51.613574218749996],[27.141992187500023,51.75205078125],[27.074121093750023,51.76083984375],[26.95283203125001,51.75400390625],[26.7734375,51.770703125],[25.785742187500006,51.923828125],[24.361914062500006,51.867529296875],[24.280078125000017,51.774707031249996],[24.126855468750023,51.6646484375],[23.978320312500017,51.59130859375],[23.951171875,51.58505859375],[23.8642578125,51.623974609375],[23.79169921875001,51.637109375],[23.706835937500017,51.64130859375],[23.61376953125,51.525390625],[23.605273437500017,51.517919921875],[23.652441406250006,52.040380859375],[23.175097656250017,52.28662109375],[23.915429687500023,52.770263671875],[23.484667968750017,53.939794921875],[23.55908203125,53.91982421875],[23.733691406250017,53.912255859375],[24.191308593750023,53.950439453125],[24.236621093750017,53.919970703124996],[24.31796875,53.89296875],[24.620703125,53.979833984375],[24.768164062500006,53.974658203124996],[24.78925781250001,53.9982421875],[24.82568359375,54.118994140625],[24.869531250000023,54.145166015625],[25.04609375000001,54.133056640625],[25.111425781250006,54.154931640625],[25.179492187500017,54.2142578125],[25.46113281250001,54.292773437499996],[25.505664062500017,54.264941406249996],[25.52734375,54.215136718749996],[25.497363281250017,54.175244140625],[25.573046875000017,54.139892578125],[25.765234375,54.17978515625],[25.702539062500023,54.29296875],[25.61689453125001,54.310107421874996],[25.557519531250023,54.310693359375],[25.54736328125,54.331835937499996],[25.56757812500001,54.37705078125],[25.62031250000001,54.460400390625],[25.68515625,54.535791015625],[25.72480468750001,54.564257812499996],[25.73164062500001,54.590380859374996],[25.722460937500017,54.71787109375],[25.859277343750023,54.919287109375],[25.964453125,54.94716796875],[26.09296875000001,54.9623046875],[26.175195312500023,55.003271484375],[26.250781250000017,55.12451171875],[26.291796875000017,55.139599609375],[26.601171875,55.130175781249996],[26.6484375,55.20419921875],[26.775683593750017,55.273095703125],[26.760156250000023,55.293359375],[26.68125,55.306445312499996],[26.49531250000001,55.318017578125],[26.457617187500006,55.34248046875],[26.469531250000017,55.371923828125],[26.51923828125001,55.44814453125],[26.56660156250001,55.546484375],[26.5908203125,55.62265625],[26.593554687500017,55.667529296874996],[27.052539062500017,55.83056640625],[27.576757812500006,55.798779296875],[28.14794921875,56.142919921875]]]},"properties":{"name":"Belarus","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-87.8529296875,17.4228515625],[-87.92998046874996,17.283007812500017],[-87.826416015625,17.546289062499994],[-87.8529296875,17.4228515625]]],[[[-88.89404296875,15.890625],[-89.2328125,15.888671875],[-89.16147460937503,17.81484375],[-89.13354492187503,17.970800781249977],[-88.80634765624998,17.965527343749983],[-88.52299804687499,18.445898437500063],[-88.29565429687494,18.47241210937503],[-88.34926757812494,18.358837890624983],[-88.1302734375,18.350732421875023],[-88.08525390624999,18.226123046875045],[-88.27172851562494,17.60986328125],[-88.203466796875,17.5166015625],[-88.31342773437501,16.632763671874983],[-88.89404296875,15.890625]]]]},"properties":{"name":"Belize","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[-64.73027343749999,32.29345703125],[-64.86284179687499,32.273876953125],[-64.66831054687499,32.38193359375],[-64.73027343749999,32.29345703125]]]},"properties":{"name":"Bermuda","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-58.15976562499999,-20.164648437500006],[-58.18017578125,-19.81787109375],[-59.09052734375,-19.286230468750006],[-60.00737304687499,-19.29755859375001],[-61.7568359375,-19.6453125],[-62.276318359375,-20.5625],[-62.27666015624999,-21.066015625],[-62.65097656249999,-22.233691406250003],[-62.84335937499999,-21.99726562500001],[-63.92167968749999,-22.028613281250003],[-63.97612304687499,-22.072558593750003],[-64.26640624999999,-22.603320312500003],[-64.30791015624999,-22.7953125],[-64.32529296874999,-22.82763671875],[-64.373974609375,-22.761035156250003],[-64.4455078125,-22.58535156250001],[-64.477734375,-22.4853515625],[-64.5236328125,-22.37158203125],[-64.60551757812499,-22.228808593750003],[-64.992626953125,-22.109667968750003],[-65.518798828125,-22.09453125],[-65.686181640625,-22.11025390625001],[-65.77104492187499,-22.099609375],[-65.86015624999999,-22.01972656250001],[-66.05859375,-21.879492187500006],[-66.098583984375,-21.835058593750006],[-66.17465820312499,-21.8056640625],[-66.220166015625,-21.802539062500003],[-66.24760742187499,-21.83046875],[-66.28212890625,-21.94746093750001],[-66.3224609375,-22.053125],[-66.365185546875,-22.11376953125],[-66.71171874999999,-22.21630859375],[-66.99111328125,-22.509863281250006],[-67.19487304687499,-22.82167968750001],[-67.362255859375,-22.85517578125001],[-67.57993164062499,-22.891699218750006],[-67.79443359375,-22.879492187500006],[-67.87944335937499,-22.82294921875001],[-67.88173828125,-22.49335937500001],[-68.18642578125,-21.61855468750001],[-68.197021484375,-21.30029296875],[-68.558251953125,-20.901953125],[-68.484326171875,-20.62841796875],[-68.74516601562499,-20.45859375],[-68.75932617187499,-20.115527343750003],[-68.560693359375,-19.967089843750003],[-68.559375,-19.90234375],[-68.578271484375,-19.856542968750006],[-68.69619140625,-19.74072265625],[-68.69829101562499,-19.72109375],[-68.57529296874999,-19.56015625],[-68.462890625,-19.43281250000001],[-68.470166015625,-19.409960937500003],[-68.49199218749999,-19.381933593750006],[-68.85795898437499,-19.093359375],[-68.96831054687499,-18.96796875000001],[-68.97885742187499,-18.81298828125],[-69.026806640625,-18.65625],[-69.09228515625,-18.28242187500001],[-69.145458984375,-18.14404296875],[-69.0939453125,-18.05048828125001],[-69.28232421874999,-17.96484375],[-69.31337890625,-17.943164062500003],[-69.5109375,-17.50605468750001],[-69.51108398437499,-17.5048828125],[-69.510986328125,-17.46035156250001],[-69.521923828125,-17.388964843750003],[-69.645703125,-17.24853515625],[-69.62485351562499,-17.2001953125],[-69.020703125,-16.6421875],[-69.03291015625,-16.47597656250001],[-68.8427734375,-16.337890625],[-69.21757812499999,-16.14912109375001],[-69.4208984375,-15.640625],[-69.17246093749999,-15.236621093750003],[-69.37470703125,-14.962988281250006],[-69.35947265624999,-14.7953125],[-68.87089843749999,-14.169726562500003],[-69.07412109375,-13.682812500000011],[-68.97861328124999,-12.880078125000011],[-68.68525390625,-12.501953125],[-69.57861328125,-10.951757812500006],[-69.228515625,-10.955664062500006],[-68.84833984375,-11.011132812500009],[-68.678369140625,-11.11279296875],[-68.39799804687499,-11.01875],[-68.0716796875,-10.703125],[-67.99169921875,-10.674414062500006],[-67.83500976562499,-10.662792968750011],[-67.72177734374999,-10.68310546875],[-67.416943359375,-10.389843750000011],[-66.575341796875,-9.89990234375],[-65.396142578125,-9.71240234375],[-65.298583984375,-10.146777343750003],[-65.31308593749999,-10.253027343750006],[-65.395458984375,-10.392285156250011],[-65.4369140625,-10.449023437500003],[-65.44711914062499,-10.507421875],[-65.33403320312499,-10.892773437500011],[-65.32377929687499,-11.024804687500009],[-65.389892578125,-11.246289062500011],[-65.1857421875,-11.74951171875],[-64.783447265625,-12.059375],[-64.42050781249999,-12.439746093750003],[-63.68857421874999,-12.47802734375],[-63.3466796875,-12.680078125],[-63.06748046874999,-12.669140625000011],[-62.76547851562499,-12.997265625000011],[-62.11801757812499,-13.159765625],[-62.09477539062499,-13.241992187500003],[-61.944726562499994,-13.40625],[-61.87412109374999,-13.470410156250011],[-61.789941406249994,-13.525585937500011],[-61.57568359375,-13.524804687500009],[-61.51157226562499,-13.541210937500011],[-61.41606445312499,-13.526562500000011],[-61.129150390625,-13.49853515625],[-61.07700195312499,-13.48974609375],[-60.506591796875,-13.78984375],[-60.372705078124994,-14.41875],[-60.273339843749994,-15.088769531250009],[-60.402001953124994,-15.0927734375],[-60.583203125,-15.098339843750011],[-60.53046875,-15.143164062500006],[-60.38046875,-15.318261718750009],[-60.242333984374994,-15.479589843750006],[-60.20664062499999,-15.901953125],[-60.18720703125,-16.132128906250003],[-60.17558593749999,-16.269335937500003],[-58.53793945312499,-16.328222656250006],[-58.49658203125,-16.32666015625],[-58.42368164062499,-16.307910156250003],[-58.37539062499999,-16.28359375],[-58.345605468749994,-16.284375],[-58.35039062499999,-16.490820312500006],[-58.470605468749994,-16.650195312500003],[-58.478125,-16.70068359375],[-58.45981445312499,-16.910742187500006],[-58.417382812499994,-17.08056640625],[-58.39599609375,-17.23427734375001],[-58.34775390624999,-17.28212890625001],[-57.99091796875,-17.51289062500001],[-57.905029296875,-17.532324218750006],[-57.832470703125,-17.512109375],[-57.78886718749999,-17.573046875],[-57.780175781249994,-17.67177734375001],[-57.66166992187499,-17.947363281250006],[-57.58647460937499,-18.12226562500001],[-57.49565429687499,-18.214648437500003],[-57.57402343749999,-18.279296875],[-57.725,-18.733203125],[-57.783105468749994,-18.91425781250001],[-57.716796875,-19.044042968750006],[-58.131494140624994,-19.74453125],[-57.860742187499994,-19.979589843750006],[-57.887597656249994,-20.02041015625001],[-57.96015625,-20.04072265625001],[-58.021142578124994,-20.05517578125],[-58.09375,-20.15107421875001],[-58.15976562499999,-20.164648437500006]]]},"properties":{"name":"Bolivia","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-48.48588867187493,-27.76699218749998],[-48.554589843749994,-27.81220703125004],[-48.542187499999955,-27.57480468749999],[-48.41489257812495,-27.399609375],[-48.48588867187493,-27.76699218749998]]],[[[-48.584423828124955,-26.401562499999983],[-48.665771484375,-26.289648437500006],[-48.53974609374998,-26.170312500000023],[-48.584423828124955,-26.401562499999983]]],[[[-45.26025390624997,-23.889160156249986],[-45.451416015625,-23.895605468749977],[-45.30234375,-23.727539062500014],[-45.26025390624997,-23.889160156249986]]],[[[-44.12929687499994,-23.14189453124999],[-44.36015624999999,-23.17207031250001],[-44.24287109374998,-23.074121093750037],[-44.12929687499994,-23.14189453124999]]],[[[-38.90356445312497,-13.473437499999974],[-38.97758789062496,-13.523535156249963],[-39.02216796874998,-13.445605468749989],[-38.907128906249994,-13.401074218749983],[-38.90356445312497,-13.473437499999974]]],[[[-38.743847656249955,-13.097070312500037],[-38.668115234374966,-12.880175781249989],[-38.601171875,-12.99257812499998],[-38.743847656249955,-13.097070312500037]]],[[[-44.49931640625002,-2.939648437499983],[-44.597753906250006,-3.037597656249943],[-44.4814453125,-2.717578125000031],[-44.49931640625002,-2.939648437499983]]],[[[-44.88310546874996,-1.317871093749986],[-45.020849609375034,-1.372363281249974],[-44.978662109374966,-1.267285156249983],[-44.88310546874996,-1.317871093749986]]],[[[-51.83251953124997,-1.433789062499969],[-51.938378906249966,-1.452636718749986],[-51.680029296875006,-1.086132812500026],[-51.546044921874966,-0.649609375],[-51.25400390624998,-0.54140625],[-51.16074218749998,-0.666699218750011],[-51.27631835937498,-1.02177734374996],[-51.83251953124997,-1.433789062499969]]],[[[-49.62866210937497,-0.229199218749969],[-49.11699218749999,-0.163574218750014],[-48.39267578124995,-0.29736328125],[-48.83359375,-1.390039062500023],[-49.038476562499994,-1.5140625],[-49.17270507812498,-1.41259765625],[-49.233984375000034,-1.59951171874998],[-49.50664062499999,-1.511621093750023],[-49.587890625,-1.712402343749972],[-49.805126953124955,-1.790234375000026],[-50.06572265625002,-1.703808593749997],[-50.50761718749999,-1.787988281250009],[-50.759765625,-1.240234374999972],[-50.72949218749997,-1.126757812499946],[-50.57695312499999,-1.103125],[-50.709619140624994,-1.07773437499999],[-50.796093749999955,-0.90625],[-50.6455078125,-0.27285156249998],[-50.24824218749998,-0.11640625],[-49.62866210937497,-0.229199218749969]]],[[[-50.65288085937499,-0.131640624999989],[-50.926367187500034,-0.327343749999983],[-51.03808593749994,-0.225878906250003],[-50.84218750000002,-0.050195312500009],[-50.65288085937499,-0.131640624999989]]],[[[-49.44389648437499,-0.112402343749977],[-49.83007812499997,-0.093896484375023],[-49.50346679687496,0.083691406250011],[-49.37231445312497,0.001074218749963],[-49.44389648437499,-0.112402343749977]]],[[[-49.73823242187498,0.26816406250002],[-49.917089843750006,-0.023193359375014],[-50.339453125,0.043359375000051],[-50.27265624999998,0.231738281249974],[-49.73823242187498,0.26816406250002]]],[[[-50.42612304687498,0.139257812500048],[-50.44394531249998,-0.007666015624949],[-50.623925781249966,0.054394531249983],[-50.372753906249955,0.590869140625031],[-50.33227539062497,0.259033203125028],[-50.42612304687498,0.139257812500048]]],[[[-50.152929687500006,0.393017578125054],[-50.26132812499998,0.359179687500003],[-50.281689453124955,0.51650390624998],[-50.05883789062503,0.638037109374963],[-50.152929687500006,0.393017578125054]]],[[[-50.29897460937502,1.93852539062496],[-50.45610351562496,1.910498046875034],[-50.49101562499996,2.128613281249969],[-50.34199218749998,2.14174804687498],[-50.29897460937502,1.93852539062496]]],[[[-59.69970703125,4.353515625],[-59.73857421874993,4.226757812500026],[-59.62021484374998,4.023144531250026],[-59.557763671874966,3.960009765625031],[-59.551123046875034,3.933544921874969],[-59.854394531249994,3.5875],[-59.99433593749998,2.689990234375031],[-59.88964843749997,2.362939453125009],[-59.75522460937495,2.27412109375004],[-59.74350585937498,2.12163085937496],[-59.75175781249996,1.962402343750028],[-59.75620117187498,1.900634765624972],[-59.666601562500006,1.746289062499969],[-59.53569335937499,1.7],[-59.23120117187494,1.376025390625031],[-58.82177734374994,1.201220703125031],[-58.787207031250006,1.208496093750014],[-58.73032226562498,1.247509765625054],[-58.68461914062499,1.28105468749996],[-58.511865234374966,1.284667968749986],[-58.506054687499926,1.438671875000011],[-58.39580078124993,1.481738281249989],[-58.38037109375,1.530224609375011],[-58.34067382812498,1.587548828125051],[-58.03466796875,1.520263671875014],[-57.9828125,1.648437500000014],[-57.87343750000002,1.667285156250045],[-57.79565429687497,1.7],[-57.59443359375001,1.704101562499986],[-57.54575195312495,1.726074218750028],[-57.31748046874998,1.963476562499991],[-57.27558593749998,1.959228515625014],[-57.189599609374966,1.981591796875037],[-57.11889648437494,2.013964843749974],[-57.09267578125002,2.005810546874997],[-57.03759765625,1.936474609374997],[-56.96953124999999,1.91640625],[-56.48281249999994,1.942138671874986],[-56.019921874999966,1.842236328124983],[-55.96333007812498,1.85708007812498],[-55.929638671874955,1.8875],[-55.92163085937503,1.976660156250006],[-55.91533203124999,2.039550781250028],[-55.96196289062496,2.09511718749998],[-56.02006835937499,2.15815429687504],[-56.073632812499994,2.236767578124969],[-56.13769531249997,2.259033203124986],[-56.12939453124997,2.299511718749969],[-56.08779296875002,2.341308593750043],[-56.045117187499955,2.364404296875037],[-56.02036132812498,2.392773437500054],[-55.993505859375006,2.497509765624983],[-55.9755859375,2.515966796875006],[-55.957470703124955,2.52045898437504],[-55.730566406250006,2.406152343750023],[-55.385351562500006,2.440625],[-55.34399414062503,2.488769531249972],[-55.28603515625002,2.49965820312498],[-55.18769531249998,2.547509765625037],[-55.114111328125006,2.539208984375037],[-55.07031249999994,2.548339843750028],[-55.005810546874955,2.592968749999983],[-54.97866210937502,2.597656250000043],[-54.968408203124966,2.548339843750028],[-54.92656249999999,2.497363281250045],[-54.876074218750006,2.450390624999969],[-54.72221679687499,2.441650390624972],[-54.69741210937502,2.359814453124997],[-54.66186523437497,2.327539062499994],[-54.61625976562499,2.326757812500006],[-54.59194335937502,2.313769531250031],[-54.55048828125001,2.293066406249991],[-54.51508789062498,2.245458984374963],[-54.43310546875,2.207519531250057],[-54.13007812499998,2.121044921875026],[-53.76777343749998,2.354833984375048],[-52.90346679687502,2.211523437499977],[-52.58300781250003,2.528906249999977],[-52.327880859375,3.18173828125002],[-51.65253906249998,4.061279296874972],[-51.54707031250001,4.31088867187502],[-51.219921874999955,4.093603515624991],[-50.71440429687502,2.134033203125],[-50.458886718749994,1.829589843749972],[-49.957128906250006,1.65986328125004],[-49.898876953124955,1.16298828124998],[-50.29443359374997,0.835742187500003],[-50.755078124999955,0.222558593749966],[-51.28291015625001,-0.085205078125028],[-51.98081054687498,-1.367968749999974],[-52.22924804687497,-1.3625],[-52.664160156250034,-1.551757812500028],[-51.94755859374996,-1.586718749999946],[-50.89492187500002,-0.937597656249963],[-50.690039062500006,-1.761718749999986],[-50.40322265625002,-2.015527343750009],[-49.999218749999955,-1.831835937499974],[-49.71953125000002,-1.926367187499963],[-49.31367187500001,-1.731738281250003],[-49.63652343749996,-2.656933593750026],[-49.45751953125,-2.504589843749983],[-49.21103515624998,-1.916503906249986],[-48.99130859374998,-1.829785156249997],[-48.71000976562496,-1.487695312500023],[-48.46293945312499,-1.613964843749997],[-48.349804687499926,-1.482128906249955],[-48.46806640624996,-1.393847656250003],[-48.44980468749998,-1.145507812499943],[-48.11508789062498,-0.7375],[-47.557324218749955,-0.669921874999957],[-47.418652343749955,-0.765917968749974],[-47.39809570312502,-0.626660156250026],[-45.45859374999995,-1.35625],[-45.32915039062496,-1.71728515625],[-45.07636718749998,-1.466406249999949],[-44.72114257812498,-1.733496093750006],[-44.778515624999955,-1.798828125],[-44.651269531249966,-1.745800781250026],[-44.537792968749955,-2.052734374999943],[-44.75634765624997,-2.265527343749952],[-44.66240234375002,-2.373242187499955],[-44.435449218749966,-2.168066406249991],[-44.38183593749997,-2.365527343749989],[-44.52011718749998,-2.40546875000004],[-44.589013671874994,-2.573437499999983],[-44.72304687500002,-3.204785156249997],[-44.43754882812496,-2.944433593749977],[-44.228613281250006,-2.471289062499949],[-44.105566406250006,-2.493457031250031],[-44.19267578124999,-2.809570312499943],[-43.93291015624999,-2.583496093749986],[-43.45512695312499,-2.502050781250006],[-43.38007812499998,-2.376074218750006],[-42.93671874999998,-2.465039062500011],[-42.24960937499998,-2.7919921875],[-41.876171874999926,-2.746582031249986],[-41.479931640624955,-2.916503906249972],[-40.474560546874926,-2.795605468750026],[-39.96469726562498,-2.861523437499955],[-38.475781249999955,-3.717480468749997],[-38.04882812500003,-4.216406250000034],[-37.626318359375006,-4.592089843750003],[-37.30146484375001,-4.713085937499969],[-37.174658203125006,-4.912402343749974],[-36.590722656249966,-5.097558593749952],[-35.549414062500006,-5.129394531249957],[-35.39257812499994,-5.250878906250009],[-34.833886718749994,-7.024414062500014],[-34.83466796874998,-7.97148437499996],[-35.34086914062499,-9.230664062499983],[-35.76396484374993,-9.702539062500023],[-35.890820312499926,-9.687011718749957],[-35.88544921875001,-9.84765625],[-36.39833984374994,-10.484082031249983],[-36.768310546875,-10.671679687500017],[-37.18281249999998,-11.06845703125002],[-37.35600585937502,-11.403906249999977],[-37.35922851562495,-11.252539062499963],[-37.68872070312503,-12.1],[-38.019238281249955,-12.591308593750028],[-38.401757812499994,-12.966210937500023],[-38.69096679687502,-12.623925781250009],[-38.85175781250001,-12.790136718750034],[-38.76372070312502,-12.9072265625],[-38.835302734375034,-13.147167968750026],[-39.030908203124994,-13.365136718750023],[-39.08935546875,-13.588183593749989],[-38.988623046875006,-13.61503906249996],[-39.04814453124996,-14.043945312500028],[-38.94233398437498,-14.030664062499994],[-39.05957031249997,-14.654785156249957],[-38.88061523437503,-15.864257812499972],[-39.20288085937503,-17.178125],[-39.154003906249926,-17.70390625000003],[-39.650781249999966,-18.252343750000037],[-39.78330078124998,-19.571777343749986],[-40.001367187499994,-19.74199218750003],[-40.39594726562501,-20.56943359375002],[-40.78925781250001,-20.90605468750003],[-40.954541015624926,-21.237890624999963],[-41.04726562499999,-21.505664062499974],[-41.00029296875002,-21.99902343750003],[-41.70551757812498,-22.30966796874999],[-41.980419921874955,-22.580664062499963],[-42.042382812499966,-22.947070312500003],[-42.95830078124996,-22.96708984374999],[-43.154296875,-22.725195312500006],[-43.22416992187502,-22.991210937500014],[-43.898828124999966,-23.10146484375001],[-43.97382812499998,-23.057324218749983],[-43.675976562499955,-23.00947265625001],[-43.86616210937498,-22.910546875000023],[-44.63725585937496,-23.05546875],[-44.67382812499994,-23.206640625000034],[-44.56967773437495,-23.27402343749999],[-45.32539062499998,-23.59970703124999],[-45.464306640624955,-23.802539062500017],[-45.97207031250002,-23.795507812500006],[-46.86728515624998,-24.236328125000014],[-47.989160156249994,-25.03574218749999],[-47.92939453124998,-25.16826171874999],[-48.20273437499998,-25.41650390625003],[-48.18593749999994,-25.309863281249974],[-48.402490234374994,-25.27207031249999],[-48.47612304687499,-25.44296875],[-48.73173828124993,-25.36875],[-48.6921875,-25.49150390625003],[-48.40117187500002,-25.59736328125001],[-48.665771484375,-25.844335937499963],[-48.576318359374994,-25.935449218749966],[-48.61943359374996,-26.17939453125001],[-48.74829101562503,-26.26865234374999],[-48.55415039062498,-27.195996093749997],[-48.62080078124998,-28.075585937499966],[-48.799658203125006,-28.575292968749977],[-49.27128906249999,-28.87119140625005],[-49.745996093749966,-29.363183593749994],[-50.299511718749955,-30.42578125000003],[-50.92138671874997,-31.25839843750002],[-52.039208984374994,-32.11484374999996],[-52.063232421875,-31.830371093750017],[-51.68066406249994,-31.774609375000026],[-51.272167968749955,-31.476953125000037],[-51.16142578124996,-31.11884765625001],[-50.980078125000034,-31.09423828124997],[-50.94082031249994,-30.903710937499966],[-50.68930664062495,-30.70419921874999],[-50.71630859374994,-30.425976562499983],[-50.58193359375002,-30.438867187500037],[-50.56352539062499,-30.25361328125004],[-51.02495117187493,-30.36865234375003],[-51.29804687499998,-30.03486328124997],[-51.15727539062499,-30.364257812500014],[-51.283056640625034,-30.751562499999963],[-51.35908203124998,-30.674511718749983],[-51.506298828124955,-31.104492187500014],[-51.97246093749999,-31.383789062499986],[-52.19355468749998,-31.885546874999974],[-52.12739257812501,-32.1677734375],[-52.652246093749994,-33.137792968750006],[-53.37060546874997,-33.74218750000003],[-53.39755859374995,-33.737304687500014],[-53.46357421875001,-33.70986328125002],[-53.531347656250034,-33.65546875000004],[-53.531347656250034,-33.1708984375],[-53.511865234374966,-33.10869140625003],[-53.482861328124926,-33.068554687500026],[-53.39521484375001,-33.01035156249998],[-53.31010742187499,-32.927050781249974],[-53.21406249999998,-32.82109375],[-53.12558593749998,-32.73671875],[-53.15727539062496,-32.680078125],[-53.601708984374994,-32.40302734374997],[-53.76171875,-32.05683593749997],[-53.920605468749926,-31.95234375],[-54.220556640625034,-31.855175781249997],[-54.58764648437503,-31.48515625000003],[-55.036035156249994,-31.27900390625004],[-55.091162109375034,-31.31396484374997],[-55.173535156249926,-31.279589843749974],[-55.557324218749955,-30.8759765625],[-55.60302734375003,-30.85078125000001],[-55.62714843749998,-30.858105468749997],[-55.650488281250034,-30.89208984375],[-55.66523437500001,-30.92490234375002],[-55.807763671874994,-31.036718749999977],[-55.87368164062502,-31.069628906250017],[-55.95200195312498,-31.08085937499999],[-56.0046875,-31.079199218750006],[-56.01845703125002,-30.991894531249983],[-55.998974609374955,-30.837207031250003],[-56.4072265625,-30.44746093750001],[-56.83271484374998,-30.107226562499974],[-57.120507812499994,-30.144433593749994],[-57.21445312499995,-30.283398437499983],[-57.55229492187496,-30.261230468749986],[-57.60888671875003,-30.187792968750045],[-57.563867187499994,-30.139941406249974],[-57.40522460937501,-30.03388671875004],[-57.22465820312499,-29.782128906249994],[-56.938623046874994,-29.594824218750034],[-55.890527343749994,-28.370019531249994],[-55.68725585937497,-28.38164062499996],[-55.72548828125002,-28.20410156250003],[-55.10151367187501,-27.866796874999963],[-54.82910156250003,-27.55058593750003],[-54.32700195312495,-27.423535156249997],[-53.83818359375002,-27.121093750000014],[-53.668554687500006,-26.288183593749977],[-53.89116210937499,-25.66884765625001],[-54.15458984374999,-25.523046874999963],[-54.44394531249998,-25.625],[-54.615869140624994,-25.576074218750023],[-54.61054687499998,-25.432714843750034],[-54.47314453124997,-25.22021484375],[-54.43623046875001,-25.12128906250001],[-54.281005859375,-24.30605468750001],[-54.31826171874994,-24.128125],[-54.26689453124996,-24.06582031250001],[-54.241796875,-24.047265624999966],[-54.44023437500002,-23.90175781249998],[-54.62548828125,-23.8125],[-54.98266601562494,-23.974511718749966],[-55.081884765625006,-23.997656249999977],[-55.1943359375,-24.017480468750023],[-55.28691406249993,-24.00429687499999],[-55.366308593750034,-23.99101562499996],[-55.41591796875002,-23.95136718749997],[-55.4423828125,-23.86533203125002],[-55.4423828125,-23.792578125000034],[-55.458886718749966,-23.686718750000054],[-55.51845703124994,-23.627246093750017],[-55.53828124999998,-23.580957031249994],[-55.61767578125,-22.67148437499999],[-55.74663085937499,-22.51269531249997],[-55.753271484375006,-22.410156250000043],[-55.84916992187499,-22.307617187500014],[-55.991406249999926,-22.28115234375005],[-56.18984374999994,-22.28115234375005],[-56.246044921874926,-22.26464843749997],[-56.39487304687498,-22.092675781250023],[-56.44780273437502,-22.07617187500003],[-56.77519531249999,-22.261328125],[-57.955908203125034,-22.109179687500003],[-57.94267578124999,-21.79833984375],[-57.830224609374994,-20.99794921875001],[-57.91513671874998,-20.690332031249966],[-57.97905273437493,-20.65732421874999],[-58.00224609374996,-20.465429687499977],[-58.02539062499997,-20.41582031249999],[-58.05844726562495,-20.38613281249998],[-58.091503906249926,-20.33320312500004],[-58.124609375000034,-20.293457031250014],[-58.13779296874995,-20.237304687500043],[-58.15976562499998,-20.164648437499977],[-58.09375,-20.15107421874997],[-58.021142578124994,-20.05517578124997],[-57.96015625000001,-20.04072265625004],[-57.887597656249966,-20.020410156249994],[-57.860742187499994,-19.97958984375002],[-58.029931640624994,-19.83271484375004],[-58.131494140624994,-19.74453125],[-57.71679687499997,-19.044042968750034],[-57.73085937499999,-18.91718750000004],[-57.783105468749994,-18.91425781249997],[-57.725,-18.73320312500003],[-57.57402343749993,-18.279296875000014],[-57.49565429687496,-18.21464843749999],[-57.58647460937499,-18.122265625],[-57.66166992187493,-17.94736328124999],[-57.78017578125002,-17.67177734374998],[-57.78886718750002,-17.573046875000017],[-57.83247070312501,-17.512109375000037],[-57.90502929687497,-17.53232421874999],[-57.990917968749955,-17.512890625000026],[-58.20556640625,-17.363085937499974],[-58.347753906250006,-17.282128906249994],[-58.39599609374997,-17.234277343750023],[-58.417382812499994,-17.08056640624997],[-58.459814453125006,-16.910742187500006],[-58.478125,-16.70068359375003],[-58.470605468749994,-16.650195312500045],[-58.35039062500002,-16.49082031249999],[-58.34560546875002,-16.284375],[-58.375390624999966,-16.283593749999966],[-58.423681640625034,-16.30791015625003],[-58.49658203124994,-16.32666015625003],[-58.537939453125034,-16.32822265624999],[-60.17558593749996,-16.26933593749999],[-60.187207031249955,-16.132128906250017],[-60.206640625,-15.90195312500002],[-60.242333984374994,-15.479589843750034],[-60.38046874999998,-15.318261718750023],[-60.53046874999998,-15.143164062499977],[-60.58320312499998,-15.098339843749983],[-60.273339843749994,-15.088769531249994],[-60.372705078124994,-14.41875],[-60.506591796875,-13.78984375],[-61.077001953125034,-13.489746093750014],[-61.129150390625,-13.498535156250028],[-61.41606445312502,-13.526562499999969],[-61.511572265625006,-13.541210937500011],[-61.789941406249966,-13.525585937500026],[-61.87412109374998,-13.470410156249983],[-61.944726562499966,-13.40625],[-62.09477539062499,-13.241992187499989],[-62.118017578125006,-13.15976562500002],[-62.765478515625034,-12.99726562500004],[-63.01518554687502,-12.80556640624998],[-63.067480468750006,-12.669140624999983],[-63.34667968749994,-12.68007812499999],[-63.68857421874998,-12.478027343749957],[-64.42050781249995,-12.439746093749974],[-64.783447265625,-12.059375],[-65.18574218749998,-11.749511718749957],[-65.389892578125,-11.246289062500011],[-65.33403320312499,-10.892773437500026],[-65.44711914062503,-10.507421875000034],[-65.4369140625,-10.449023437499946],[-65.39545898437498,-10.392285156250026],[-65.31308593749998,-10.253027343749991],[-65.29858398437497,-10.146777343750017],[-65.39614257812494,-9.712402343749986],[-66.57534179687502,-9.899902343749986],[-67.41694335937495,-10.389843749999969],[-67.72177734374998,-10.683105468749943],[-67.83500976562496,-10.662792968749983],[-67.99169921875,-10.674414062499949],[-68.07167968749994,-10.703125],[-68.39799804687499,-11.01875],[-68.678369140625,-11.11279296875],[-68.84833984374998,-11.01113281249998],[-69.228515625,-10.955664062499963],[-69.46254882812497,-10.948144531250023],[-69.57861328125,-10.951757812499963],[-69.67402343749998,-10.9541015625],[-69.83979492187501,-10.93339843749996],[-69.96035156249997,-10.92988281250004],[-70.06630859374997,-10.982421875],[-70.22006835937503,-11.04765625],[-70.29038085937498,-11.064257812499974],[-70.34199218750001,-11.066699218750017],[-70.39228515624995,-11.058593749999972],[-70.45087890624998,-11.024804687500009],[-70.53325195312496,-10.946875],[-70.59653320312498,-10.976855468750017],[-70.642333984375,-11.010253906249986],[-70.59916992187499,-9.620507812500009],[-70.54111328124998,-9.4375],[-70.60791015625,-9.463671875000031],[-70.63691406249995,-9.478222656249969],[-71.041748046875,-9.81875],[-71.11528320312499,-9.852441406250009],[-71.33940429687499,-9.988574218750031],[-72.18159179687495,-10.003710937500003],[-72.37905273437497,-9.51015625],[-73.20942382812493,-9.411425781249946],[-73.08984375,-9.26572265625002],[-72.970361328125,-9.120117187500028],[-72.97402343750002,-8.9931640625],[-73.07050781249995,-8.8828125],[-73.203125,-8.719335937499991],[-73.30244140624995,-8.654003906250011],[-73.36040039062496,-8.479296875000031],[-73.39814453125001,-8.458984374999986],[-73.54912109374993,-8.34580078125002],[-73.73203125,-7.875390625],[-73.72041015624993,-7.782519531250017],[-73.76689453124999,-7.753515624999963],[-73.82207031249996,-7.738964843750026],[-73.89462890624998,-7.654785156250014],[-73.946875,-7.611230468750023],[-73.98173828124996,-7.58505859375002],[-74.00205078125003,-7.556054687499966],[-73.98173828124996,-7.535742187500006],[-73.95849609374994,-7.506640625000031],[-73.96430664062498,-7.378906250000028],[-73.74946289062498,-7.335351562500037],[-73.72041015624993,-7.309277343749969],[-73.758203125,-7.172753906249952],[-73.79301757812499,-7.135058593750003],[-73.75810546874999,-6.90576171875],[-73.137353515625,-6.4658203125],[-73.23554687500001,-6.098437500000017],[-73.209375,-6.028710937500023],[-73.16289062499996,-5.933398437499974],[-72.97988281249997,-5.634863281249991],[-72.88706054687498,-5.122753906250026],[-72.83193359374994,-5.09375],[-72.69873046874997,-5.067187499999989],[-72.60834960937495,-5.009570312499974],[-72.46899414062497,-4.901269531250023],[-72.35283203124993,-4.786035156249994],[-72.25678710937501,-4.74892578124998],[-71.8447265625,-4.504394531249986],[-70.97368164062499,-4.350488281249994],[-70.86601562499999,-4.229589843749963],[-70.79951171874995,-4.173339843749957],[-70.72158203124997,-4.15888671875004],[-70.53066406249997,-4.167578125000034],[-70.40463867187498,-4.150097656250026],[-70.34365234375,-4.193652343750017],[-70.31689453124994,-4.246972656250037],[-70.23916015625002,-4.30117187499998],[-70.12880859375,-4.286621093749943],[-70.05332031249998,-4.333105468750006],[-70.00395507812496,-4.327246093749963],[-69.97202148437503,-4.30117187499998],[-69.96591796875003,-4.2359375],[-69.94819335937498,-4.200585937500009],[-69.66904296875003,-2.667675781249997],[-69.40024414062498,-1.194921874999977],[-69.63398437500001,-0.50927734375],[-70.07050781249993,-0.13886718750004],[-70.05390624999993,0.578613281250028],[-69.47211914062498,0.72993164062504],[-69.15332031249994,0.65878906250002],[-69.31181640624999,1.050488281249969],[-69.85214843750003,1.05952148437504],[-69.84858398437493,1.708740234375043],[-68.17656249999999,1.719824218749991],[-68.25595703125,1.845507812500017],[-68.19379882812495,1.987011718749983],[-67.93623046874998,1.748486328124969],[-67.40043945312499,2.116699218750028],[-67.11923828124998,1.703613281249986],[-67.082275390625,1.185400390625006],[-66.87602539062499,1.223046875000037],[-66.34711914062498,0.7671875],[-66.06005859375003,0.78535156250004],[-65.68144531249999,0.983447265624989],[-65.52299804687493,0.843408203124966],[-65.55605468750002,0.687988281250014],[-65.47338867187497,0.691259765624977],[-65.10375976562497,1.108105468749983],[-64.20502929687493,1.52949218750004],[-64.00849609374995,1.931591796874969],[-63.43251953124994,2.155566406250045],[-63.389257812500006,2.411914062500045],[-64.04658203124998,2.502392578124997],[-64.22109375000002,3.587402343749972],[-64.66899414062496,4.01181640625002],[-64.788671875,4.276025390625023],[-64.57636718750001,4.139892578125],[-64.19248046874995,4.126855468750009],[-64.02148437500003,3.929101562500051],[-63.33867187500002,3.943896484375045],[-62.85698242187502,3.593457031249969],[-62.71210937499998,4.01791992187502],[-62.41064453124994,4.156738281249972],[-62.153125,4.098388671874986],[-61.82084960937496,4.197021484375],[-61.28007812500002,4.516894531249974],[-61.00283203125002,4.535253906249991],[-60.603857421875006,4.94936523437498],[-60.671972656250034,5.164355468749989],[-60.71196289062499,5.191552734375023],[-60.742138671874926,5.202050781250037],[-60.6513671875,5.221142578125011],[-60.45952148437499,5.188085937500034],[-60.40878906249998,5.21015625],[-60.33520507812497,5.199316406250006],[-60.241650390624926,5.257958984374966],[-60.14204101562498,5.238818359374974],[-59.990673828124955,5.082861328124991],[-60.14863281249998,4.533251953125031],[-59.69970703125,4.353515625]]]]},"properties":{"name":"Brazil","childNum":17}},{"geometry":{"type":"Polygon","coordinates":[[[-59.493310546874994,13.081982421874997],[-59.611328125,13.102099609374989],[-59.6466796875,13.303125],[-59.427636718749994,13.152783203124997],[-59.493310546874994,13.081982421874997]]]},"properties":{"name":"Barbados","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[115.02675781250005,4.899707031249989],[115.1400390625,4.899755859374991],[115.290625,4.352587890624989],[115.10703125000006,4.390429687499974],[115.02675781250005,4.899707031249989]]],[[[115.02675781250005,4.899707031249989],[114.74667968750006,4.718066406250017],[114.84023437500005,4.393212890625009],[114.65410156250007,4.037646484375045],[114.0638671875,4.592675781249966],[114.42441406250006,4.660400390625],[114.99541015625002,5.022363281250023],[115.02675781250005,4.899707031249989]]]]},"properties":{"name":"Brunei","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[91.63193359375003,27.759960937499997],[91.5947265625,27.557666015624996],[91.74306640625002,27.442529296874994],[91.85126953125001,27.438623046874994],[91.95097656249999,27.458300781249996],[91.99082031250003,27.4501953125],[92.044921875,27.364697265624997],[92.08339843750002,27.290625],[92.03115234375002,27.214306640624997],[92.00253906250003,27.147363281249994],[91.99228515625003,27.099902343749996],[91.99863281250003,27.079296875],[92.03085937500003,27.040820312499996],[92.06816406249999,26.9751953125],[92.07343750000001,26.91484375],[92.04970703125002,26.874853515625],[91.99833984374999,26.85498046875],[91.84208984374999,26.852978515624997],[91.67158203125001,26.802001953125],[91.517578125,26.807324218749997],[91.45585937499999,26.866894531249997],[91.4267578125,26.867089843749994],[91.28652343750002,26.789941406249994],[90.73964843750002,26.771679687499997],[90.34589843750001,26.890332031249997],[90.2060546875,26.847509765625],[90.12294921875002,26.754589843749997],[89.94316406249999,26.723925781249996],[89.76386718750001,26.7015625],[89.60996093750003,26.719433593749997],[89.58613281250001,26.778955078124994],[89.33212890625003,26.8486328125],[89.14824218749999,26.816162109375],[89.04091796875002,26.865039062499996],[88.85761718750001,26.961474609374996],[88.73876953125,27.175585937499996],[88.76035156250003,27.218115234375],[88.88164062499999,27.2974609375],[88.89140624999999,27.316064453124994],[88.94755859374999,27.464013671874994],[89.48066406250001,28.059960937499994],[89.53691406249999,28.107421875],[89.65273437500002,28.15830078125],[89.74980468749999,28.188183593749997],[89.81689453125,28.256298828124997],[89.89785156250002,28.294140625],[89.98105468750003,28.311181640624994],[90.34824218750003,28.243945312499996],[90.36298828125001,28.216503906249997],[90.33310546875003,28.093994140625],[90.35273437500001,28.080224609374994],[90.47734374999999,28.070849609374996],[90.63007812500001,28.078564453124997],[90.71572265625002,28.071728515624997],[91.02080078124999,27.970068359375],[91.07773437500003,27.974462890625],[91.22587890624999,28.071240234374997],[91.27304687500003,28.078369140625],[91.30683593750001,28.064013671874996],[91.36757812500002,28.021630859374994],[91.64189453124999,27.923242187499994],[91.63193359375003,27.759960937499997]]]},"properties":{"name":"Bhutan","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[25.2587890625,-17.793554687500006],[25.242285156250006,-17.969042968750003],[25.939355468750023,-18.93867187500001],[26.168066406250006,-19.53828125000001],[27.17822265625,-20.10097656250001],[27.28076171875,-20.47871093750001],[27.679296875,-20.503027343750006],[27.66943359375,-21.064257812500003],[28.014062500000023,-21.55419921875],[29.02558593750001,-21.796875],[29.042382812500023,-22.018359375],[29.237207031250023,-22.07949218750001],[29.315234375000017,-22.15771484375],[29.36484375,-22.193945312500006],[29.1298828125,-22.21328125],[29.013476562500017,-22.278417968750006],[28.94580078125,-22.395117187500006],[28.83984375,-22.480859375],[28.21015625000001,-22.693652343750003],[27.812597656250006,-23.108007812500006],[27.7685546875,-23.14892578125],[27.085546875,-23.577929687500003],[26.835058593750006,-24.240820312500006],[26.617773437500006,-24.3955078125],[26.451757812500006,-24.58271484375001],[26.39716796875001,-24.613574218750003],[26.130859375,-24.671484375],[26.031835937500006,-24.702441406250003],[25.912109375,-24.74746093750001],[25.518164062500006,-25.66279296875001],[25.21337890625,-25.75625],[24.33056640625,-25.74287109375001],[24.19296875,-25.632910156250006],[23.969531250000017,-25.626074218750006],[23.89375,-25.600878906250003],[23.389257812500006,-25.29140625],[23.148730468750017,-25.288671875],[22.878808593750023,-25.45791015625001],[22.59765625,-26.13271484375001],[22.548632812500017,-26.17841796875001],[22.47089843750001,-26.219042968750003],[22.217578125000017,-26.38886718750001],[22.090917968750006,-26.580175781250006],[22.01093750000001,-26.635839843750006],[21.78828125000001,-26.710058593750006],[21.738085937500017,-26.80683593750001],[21.694726562500023,-26.840917968750006],[20.73984375,-26.84882812500001],[20.641406250000017,-26.7421875],[20.79316406250001,-25.915625],[20.4306640625,-25.147070312500006],[19.98046875,-24.77675781250001],[19.977343750000017,-22.00019531250001],[20.9794921875,-21.9619140625],[20.97412109375,-18.31884765625],[23.219335937500006,-17.99970703125001],[23.599707031250006,-18.4599609375],[24.243945312500017,-18.0234375],[24.530566406250017,-18.052734375],[24.909082031250023,-17.821386718750006],[25.2587890625,-17.793554687500006]]]},"properties":{"name":"Botswana","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[22.86005859375001,10.919677734375],[23.646289062500017,9.822900390624994],[23.62265625,9.340625],[23.46826171875,9.11474609375],[23.53730468750001,8.815820312499994],[24.147363281250023,8.665625],[24.291406250000023,8.29140625],[24.853320312500017,8.137548828124991],[25.20039062500001,7.807910156249989],[25.18134765625001,7.557226562499991],[25.27890625,7.427490234375],[26.36181640625,6.635302734374989],[26.30859375,6.455322265625],[26.514257812500006,6.069238281249994],[27.143945312500023,5.722949218749989],[27.4033203125,5.109179687499989],[27.071875,5.199755859374989],[26.822070312500017,5.062402343749994],[25.52509765625001,5.31210937499999],[25.065234375000017,4.967431640624994],[24.31982421875,4.994140625],[23.41718750000001,4.663134765624989],[22.864550781250017,4.723876953125],[22.422167968750017,4.134960937499997],[20.55810546875,4.462695312499989],[20.226367187500017,4.829638671874989],[19.806542968750023,5.089306640624997],[19.5009765625,5.127490234374989],[19.06855468750001,4.891406249999989],[18.594140625000023,4.346240234374989],[18.6103515625,3.478417968749994],[18.474414062500017,3.622998046874997],[18.160937500000017,3.499804687499989],[17.491601562500023,3.687304687499989],[16.610742187500023,3.50537109375],[16.468554687500017,2.831738281249997],[16.183398437500017,2.270068359374989],[16.0634765625,2.90859375],[15.128710937500017,3.826904296875],[15.063574218750006,4.284863281249997],[14.73125,4.602392578124991],[14.56298828125,5.279931640624994],[14.616894531250011,5.865136718749994],[14.43115234375,6.038720703124994],[14.7392578125,6.27978515625],[15.206738281250011,7.206152343749991],[15.480078125,7.523779296874991],[15.957617187500006,7.507568359375],[16.37890625,7.683544921874997],[16.545312500000023,7.865478515625],[16.784765625,7.550976562499997],[17.6494140625,7.98359375],[18.56416015625001,8.0458984375],[19.108691406250017,8.656152343749994],[18.886035156250017,8.836035156249991],[18.95625,8.938867187499994],[20.342089843750017,9.127099609374994],[20.773242187500017,9.405664062499994],[21.682714843750006,10.289843749999989],[21.771484375,10.642822265625],[22.49384765625001,10.996240234374994],[22.86005859375001,10.919677734375]]]},"properties":{"name":"Central African Rep.","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-59.78759765624997,43.939599609374994],[-60.11748046874996,43.95336914062506],[-59.727148437500006,44.002832031249994],[-59.78759765624997,43.939599609374994]]],[[[-66.7625,44.68178710937502],[-66.8970703125,44.62890625],[-66.80214843749994,44.80537109374998],[-66.7625,44.68178710937502]]],[[[-60.961572265624966,45.48994140625001],[-61.081738281249926,45.55781249999998],[-60.91245117187498,45.56728515625005],[-60.961572265624966,45.48994140625001]]],[[[-73.69531249999997,45.58549804687502],[-73.85771484375002,45.573583984375006],[-73.57236328124998,45.69448242187502],[-73.69531249999997,45.58549804687502]]],[[[-73.56650390625003,45.469091796875034],[-73.960546875,45.44140624999997],[-73.68745117187498,45.561425781249994],[-73.47607421874997,45.704736328124994],[-73.56650390625003,45.469091796875034]]],[[[-61.10517578124998,45.94472656250002],[-60.86523437499997,45.983496093750006],[-61.05903320312501,45.70336914062497],[-60.73789062499995,45.75141601562498],[-60.46059570312494,45.96870117187501],[-60.733300781249994,45.956591796875045],[-60.297949218750034,46.31123046874998],[-60.22646484374994,46.19555664062506],[-59.86503906249993,46.159521484375006],[-59.8421875,45.941552734374994],[-60.67294921874995,45.59082031250006],[-61.28369140624994,45.573876953124966],[-61.44980468749995,45.71621093750002],[-61.40864257812501,46.17036132812498],[-60.87016601562499,46.796777343749966],[-60.40820312500003,47.00351562499998],[-60.332910156249966,46.737011718749955],[-60.49453125000002,46.270263671875],[-61.10517578124998,45.94472656250002]]],[[[-63.811279296875,46.46870117187501],[-63.68144531249993,46.561914062499994],[-63.12939453125,46.422216796875034],[-62.02373046874999,46.42158203125001],[-62.52607421875001,46.20288085937503],[-62.531347656250034,45.977294921875],[-63.02207031249998,46.06660156249998],[-62.89453125000003,46.12358398437496],[-63.056347656249955,46.22392578124996],[-62.97846679687498,46.31635742187498],[-63.21347656249998,46.15986328124998],[-63.641015624999966,46.23046874999997],[-63.758642578125034,46.397607421874994],[-64.11083984375003,46.425439453124994],[-64.13603515624999,46.59970703125006],[-64.388037109375,46.640869140625],[-63.99355468750002,47.06157226562502],[-64.08789062499997,46.77543945312499],[-63.811279296875,46.46870117187501]]],[[[-61.91411132812496,47.284521484375034],[-61.77255859374998,47.25981445312499],[-62.00830078124994,47.23427734375002],[-61.924707031249966,47.425146484375006],[-61.3955078125,47.63764648437504],[-61.91411132812496,47.284521484375034]]],[[[-54.227148437500034,47.44135742187501],[-54.32597656250002,47.408105468749994],[-54.12817382812494,47.646826171875034],[-54.227148437500034,47.44135742187501]]],[[[-74.70888671874997,45.0038574218751],[-73.55810546875,45.425097656250045],[-73.1595703125,46.01005859375002],[-72.10927734374997,46.55122070312504],[-71.26118164062495,46.75625],[-70.51948242187501,47.032519531250045],[-69.47104492187503,47.96728515625006],[-68.23818359374994,48.62641601562504],[-66.17817382812493,49.21313476562503],[-64.83632812499994,49.191748046875006],[-64.2162109375,48.873632812500034],[-64.51372070312493,48.84111328124999],[-64.24609374999994,48.69111328124998],[-64.34882812500001,48.423193359375034],[-65.259423828125,48.02124023437503],[-65.92670898437495,48.188867187499994],[-66.70439453125002,48.0224609375],[-66.35961914062494,48.06064453125006],[-65.84941406250002,47.91103515625005],[-65.60722656249996,47.67001953125006],[-65.00166015624995,47.84682617187502],[-64.70322265625,47.72485351562503],[-64.91220703125003,47.36865234375003],[-65.31889648437502,47.101220703124994],[-64.831396484375,47.06079101562503],[-64.88251953124993,46.822851562500034],[-64.54150390625,46.240332031250034],[-63.91591796875002,46.165820312500045],[-63.831933593749966,46.107177734375],[-64.05639648437503,46.021337890625006],[-63.70288085937494,45.858007812500034],[-62.70068359374997,45.740576171875006],[-62.750097656250006,45.64824218750002],[-62.483056640624966,45.62182617187506],[-61.955517578124955,45.86816406249997],[-61.776513671874994,45.655615234375006],[-61.49228515624998,45.68701171875],[-61.350488281249966,45.57368164062501],[-61.28198242187494,45.441064453124994],[-61.46098632812502,45.36669921875003],[-61.03154296875002,45.29174804687506],[-63.306298828124994,44.64257812500003],[-63.60400390624997,44.68320312500006],[-63.60976562499999,44.47998046875006],[-63.999707031249926,44.64492187499999],[-64.10087890624993,44.487451171874966],[-64.1669921875,44.58666992187503],[-64.28608398437493,44.55034179687499],[-64.27568359374993,44.33408203124998],[-65.48168945312497,43.51806640625],[-65.73813476562498,43.56074218750001],[-65.88691406250001,43.79521484374999],[-66.125732421875,43.813818359375034],[-66.19306640624995,44.143847656250045],[-65.86801757812498,44.56879882812501],[-66.14638671875002,44.43593750000005],[-66.090625,44.50493164062499],[-64.44814453125,45.33745117187502],[-64.13549804687497,45.023046875],[-64.09316406249997,45.21708984375002],[-63.368017578125034,45.36479492187502],[-64.87314453124998,45.35458984375006],[-64.31464843749998,45.83569335937503],[-64.48222656250002,45.80634765624998],[-64.63271484375002,45.94663085937506],[-64.77851562499998,45.63842773437497],[-65.88447265624995,45.22290039062506],[-66.10976562500002,45.316601562499955],[-66.02656249999995,45.417578125],[-66.43984374999994,45.09589843750001],[-66.87246093749997,45.067285156249966],[-67.12485351562498,45.16943359375],[-67.366943359375,45.17377929687498],[-67.43266601562496,45.603125],[-67.80224609374994,45.7275390625],[-67.806787109375,47.08281249999999],[-68.23549804687502,47.34594726562503],[-68.93720703124998,47.21123046875002],[-69.0501953125,47.426611328125034],[-69.24287109374998,47.46298828124998],[-70.00771484375002,46.70893554687501],[-70.296240234375,45.90610351562506],[-70.86503906249999,45.27070312500001],[-71.327294921875,45.29008789062496],[-71.51752929687495,45.00756835937497],[-74.663232421875,45.00390625000003],[-74.70888671874997,45.0038574218751]]],[[[-126.09208984374995,49.35400390625003],[-126.06401367187499,49.26362304687501],[-126.22963867187498,49.29565429687506],[-126.09208984374995,49.35400390625003]]],[[[-54.55439453125001,49.5888671875],[-54.786523437499966,49.496142578125045],[-54.86357421875002,49.576074218749966],[-54.55439453125001,49.5888671875]]],[[[-54.093701171874955,49.74443359374999],[-53.98066406250001,49.66196289062498],[-54.28613281249997,49.595361328124994],[-54.27763671875002,49.71147460937502],[-54.093701171874955,49.74443359374999]]],[[[-126.64121093749999,49.605810546875006],[-126.93857421874999,49.71845703125004],[-126.92583007812497,49.837744140625006],[-126.73813476562502,49.84365234375005],[-126.64121093749999,49.605810546875006]]],[[[-61.801123046875034,49.093896484374966],[-63.04150390624994,49.224951171875034],[-64.485205078125,49.88696289062497],[-64.13144531249995,49.94165039062503],[-62.858544921874966,49.70546875000005],[-61.817138671875,49.28354492187498],[-61.69614257812495,49.139013671875006],[-61.801123046875034,49.093896484374966]]],[[[-125.18413085937497,50.09711914062498],[-125.301171875,50.4140625],[-125.07402343750002,50.22065429687501],[-125.18413085937497,50.09711914062498]]],[[[-127.19731445312495,50.640380859375],[-125.48208007812501,50.316796874999966],[-124.83061523437499,49.53007812500002],[-123.99580078125,49.22402343750002],[-123.49702148437498,48.58208007812499],[-123.38989257812501,48.67021484374999],[-123.31064453125003,48.41103515625002],[-123.57314453124995,48.32280273437499],[-123.91694335937501,48.386572265625034],[-125.12070312500002,48.76079101562496],[-124.84965820312496,49.02827148437501],[-124.81264648437497,49.212646484375],[-124.92734374999998,49.01420898437499],[-125.489453125,48.933789062499955],[-125.82851562499998,49.09184570312499],[-125.64423828125001,49.18579101562506],[-125.95166015625001,49.24804687500003],[-125.93540039062499,49.401464843750006],[-126.51914062499999,49.396777343750045],[-126.54189453125001,49.590478515624966],[-126.13408203124997,49.672314453124955],[-126.52524414062499,49.71958007812498],[-126.90332031250001,49.94414062499999],[-127.114306640625,49.879736328125034],[-127.24980468749999,50.13798828124996],[-127.34941406249995,50.05195312500001],[-127.46713867187503,50.163427734375006],[-127.86391601562495,50.12773437500002],[-127.90585937499998,50.44521484375002],[-127.48652343749998,50.404638671875034],[-127.46591796874996,50.58310546875006],[-128.05834960937494,50.498486328124955],[-128.34604492187503,50.744238281250006],[-127.91806640624998,50.86054687500001],[-127.19731445312495,50.640380859375]]],[[[-55.45874023437494,51.53652343750005],[-55.58339843749994,51.38857421875002],[-56.031103515625034,51.328369140625],[-55.8,51.033300781250034],[-56.732324218749966,50.007714843749994],[-56.822167968749966,49.613476562499955],[-56.179394531249955,50.114990234375],[-56.161279296874994,49.94013671874998],[-55.50292968749997,49.98315429687503],[-56.14018554687496,49.61914062500006],[-55.869824218749955,49.67016601562506],[-56.08730468750002,49.45195312499999],[-55.375927734374955,49.48974609374997],[-55.34384765624998,49.37290039062506],[-55.22954101562496,49.508154296875006],[-55.35317382812502,49.07944335937506],[-54.50219726562503,49.52734375],[-54.44824218749997,49.329443359375006],[-53.957714843749955,49.44184570312498],[-53.61943359374996,49.321630859375006],[-53.57343750000001,49.141210937500034],[-54.16127929687494,48.787695312500034],[-53.852880859375006,48.81132812499996],[-53.966015624999955,48.70668945312505],[-53.70634765624999,48.65551757812503],[-54.11445312499998,48.393603515625045],[-53.027587890625,48.634716796874955],[-53.1357421875,48.40185546875003],[-53.60976562500002,48.20771484375001],[-53.56943359374998,48.088085937499955],[-53.869580078124926,48.019677734374966],[-53.63823242187496,48.01464843750003],[-53.863671874999966,47.787011718749994],[-53.67236328125,47.64824218749999],[-53.28271484375,47.99785156249996],[-52.86601562499993,48.11298828124998],[-53.16982421875002,47.51210937500005],[-52.945019531249955,47.55283203124998],[-52.782421874999955,47.769433593749966],[-52.653662109375034,47.549414062500006],[-53.11484375,46.65581054687502],[-53.32304687499996,46.71835937499998],[-53.589794921874955,46.638867187499955],[-53.59736328124998,47.14599609374997],[-54.00957031249993,46.839599609375],[-54.173730468749994,46.88037109375003],[-53.84951171875002,47.440332031249994],[-53.98901367187503,47.756201171875034],[-54.191845703124955,47.85981445312501],[-54.488134765625006,47.40385742187502],[-54.47392578124996,47.54707031249998],[-54.856640624999955,47.385009765625],[-55.31572265624993,46.905712890624955],[-55.78852539062498,46.86723632812502],[-55.91923828124996,47.01689453124996],[-55.49150390624996,47.16064453125003],[-54.78461914062501,47.664746093749955],[-55.366308593750034,47.66108398437501],[-55.57612304687498,47.46523437499999],[-56.12724609374999,47.50283203125002],[-55.867089843749994,47.592333984375045],[-55.85791015625,47.81918945312498],[-56.774121093749955,47.56499023437499],[-58.33686523437501,47.73085937500002],[-59.11694335937494,47.57070312499999],[-59.32065429687498,47.736914062500006],[-59.272070312500034,47.99555664062504],[-58.330224609374994,48.52211914062502],[-59.16767578124998,48.558496093749966],[-58.84179687500003,48.74643554687498],[-58.906445312499955,48.65019531249999],[-58.716455078124994,48.59804687500002],[-58.403662109375034,49.08432617187498],[-57.99052734374996,48.987939453124966],[-58.09892578124993,49.07744140624999],[-57.98007812499998,49.229638671874994],[-58.19091796875003,49.25874023437498],[-58.21337890625,49.38666992187501],[-58.01582031249998,49.54248046874997],[-57.79130859374999,49.48999023437503],[-57.92617187499999,49.700830078124994],[-57.4326171875,50.50581054687504],[-57.179589843749966,50.614843750000034],[-57.29799804687502,50.69873046874997],[-57.03593750000002,51.01083984374998],[-56.68242187500002,51.332763671875],[-56.025585937499955,51.56835937500006],[-55.6904296875,51.471337890624994],[-55.666406249999966,51.57890624999999],[-55.45874023437494,51.53652343750005]]],[[[-127.92465820312498,51.47387695312497],[-128.14877929687498,51.62670898437503],[-128.03173828125006,51.708398437499966],[-127.92465820312498,51.47387695312497]]],[[[-79.38427734374997,51.951953125000045],[-79.64375,52.01005859374996],[-79.27128906249996,52.086816406249966],[-79.38427734374997,51.951953125000045]]],[[[-128.36875,52.40087890625],[-128.43979492187503,52.696386718750006],[-128.24726562499998,52.784375],[-128.36875,52.40087890625]]],[[[-80.73168945312494,52.74726562499998],[-82.03925781249998,53.04990234374998],[-81.84731445312494,53.18627929687497],[-81.135595703125,53.20581054687503],[-80.73168945312494,52.74726562499998]]],[[[-131.7537109375,53.195556640625],[-131.63466796874997,52.92216796874999],[-131.97177734374998,52.87983398437498],[-131.45522460937502,52.70170898437502],[-131.59057617187494,52.578222656250006],[-131.25971679687495,52.415917968749966],[-131.31992187499998,52.30307617187498],[-131.142626953125,52.291113281250034],[-131.221533203125,52.15361328124999],[-132.16508789062493,52.783300781250034],[-132.14375,52.99931640624999],[-132.54677734374997,53.1375],[-131.7537109375,53.195556640625]]],[[[-128.55244140624998,52.93974609375002],[-128.50991210937502,52.51860351562502],[-128.678955078125,52.289648437500006],[-128.74633789062494,52.763378906249955],[-128.89980468749997,52.67382812500003],[-129.175927734375,52.964941406250006],[-129.033251953125,53.27993164062505],[-128.63266601562498,53.1125],[-128.55244140624998,52.93974609375002]]],[[[-129.167724609375,53.11787109374998],[-129.32387695312502,53.142138671875045],[-129.23818359374997,53.33007812500006],[-129.167724609375,53.11787109374998]]],[[[-129.84858398437498,53.167919921874955],[-130.51757812500003,53.54423828124999],[-130.45200195312498,53.63115234375002],[-129.94472656250002,53.436376953125034],[-129.75483398437498,53.244775390624994],[-129.84858398437498,53.167919921874955]]],[[[-130.236279296875,53.95854492187502],[-130.38422851562504,53.84394531250001],[-130.703173828125,53.892236328124994],[-130.44799804687497,54.08901367187502],[-130.236279296875,53.95854492187502]]],[[[-132.65551757812503,54.12749023437496],[-132.30336914062497,54.098876953125],[-132.16611328124998,53.95522460937505],[-132.53466796875,53.651708984375034],[-132.18696289062504,53.68481445312503],[-132.134423828125,54.03427734374998],[-131.66762695312502,54.14135742187503],[-131.957421875,53.308691406250034],[-132.34726562500003,53.18920898437503],[-132.747509765625,53.310498046874955],[-132.425,53.33696289062502],[-132.84501953125,53.507714843749994],[-133.07949218749997,53.837011718750034],[-133.04838867187493,54.15893554687497],[-132.65551757812503,54.12749023437496]]],[[[-130.92714843749997,54.47905273437499],[-130.90683593750003,54.63178710937504],[-130.75800781249998,54.61376953125],[-130.92714843749997,54.47905273437499]]],[[[-130.57534179687497,54.769677734374966],[-130.2140625,55.02587890625003],[-130.34941406249996,54.814550781250034],[-130.57534179687497,54.769677734374966]]],[[[-79.97758789062499,56.20703125000006],[-80.057470703125,56.28735351562497],[-79.57973632812502,56.466357421875045],[-79.97758789062499,56.20703125000006]]],[[[-78.93559570312496,56.26606445312498],[-79.17548828124998,55.88505859374999],[-79.18212890625,56.21215820312503],[-79.4951171875,55.87475585937503],[-79.76474609374995,55.80678710937505],[-79.54472656249999,56.12836914062501],[-79.9875,55.89213867187502],[-79.45888671875,56.53974609374998],[-79.53632812499995,56.180078124999966],[-79.27241210937493,56.600439453125006],[-78.93559570312496,56.26606445312498]]],[[[-61.743603515624955,57.55458984375005],[-61.6375,57.41606445312499],[-62.01123046875003,57.54848632812505],[-61.743603515624955,57.55458984375005]]],[[[-79.71650390624998,57.515527343749994],[-79.80844726562498,57.44243164062502],[-79.74257812499997,57.60795898437499],[-79.71650390624998,57.515527343749994]]],[[[-69.16005859375,59.04023437500001],[-69.35283203125002,58.96074218749999],[-69.30322265625003,59.144873046875006],[-69.16005859375,59.04023437500001]]],[[[-64.40703125,60.367089843749966],[-64.44194335937496,60.2978515625],[-64.73793945312497,60.37563476562502],[-64.83642578124997,60.50102539062499],[-64.40703125,60.367089843749966]]],[[[-68.23378906250002,60.24091796875001],[-68.36787109374998,60.314746093750045],[-68.08759765624998,60.58784179687501],[-67.81884765624994,60.449511718750074],[-68.23378906250002,60.24091796875001]]],[[[-78.531640625,60.72856445312499],[-78.66889648437498,60.716894531250006],[-78.24169921875,60.818652343750045],[-78.531640625,60.72856445312499]]],[[[-64.83261718749998,61.366064453125006],[-65.43212890625,61.649511718750034],[-64.78964843750003,61.662207031250034],[-64.83261718749998,61.366064453125006]]],[[[-65.03056640624999,61.879052734374966],[-64.89658203124995,61.73330078125005],[-65.23535156249997,61.89770507812506],[-65.03056640624999,61.879052734374966]]],[[[-79.54531250000002,62.41171875000006],[-79.28647460937495,62.247656250000034],[-79.32392578124995,62.02607421875001],[-79.81611328124995,61.59462890625002],[-80.26518554687496,61.818212890625006],[-80.26005859374996,62.10903320312502],[-79.9267578125,62.39287109375002],[-79.54531250000002,62.41171875000006]]],[[[-64.82382812499998,62.558740234374994],[-64.46503906249998,62.535937500000045],[-64.47832031250002,62.417871093749966],[-64.901220703125,62.421044921874994],[-64.82382812499998,62.558740234374994]]],[[[-70.33706054687497,62.548730468749994],[-70.76606445312498,62.596875],[-71.22011718750002,62.873925781249966],[-70.44262695312497,62.73378906250002],[-70.33706054687497,62.548730468749994]]],[[[-82.00048828124997,62.95419921874998],[-82.02583007812498,62.73007812499998],[-82.56826171875002,62.403222656249994],[-83.01582031249998,62.20991210937498],[-83.69887695312497,62.16025390624998],[-83.91049804687498,62.45415039062499],[-83.37641601562498,62.904931640624994],[-82.00048828124997,62.95419921874998]]],[[[-77.87670898437497,63.470556640625034],[-77.53271484374997,63.233642578125],[-77.94243164062496,63.11440429687502],[-78.536767578125,63.423730468749994],[-77.87670898437497,63.470556640625034]]],[[[-76.67758789062503,63.393945312499966],[-77.36474609374994,63.588330078124955],[-77.13369140624997,63.68203125000002],[-76.65244140624998,63.503564453124994],[-76.67758789062503,63.393945312499966]]],[[[-84.91962890624995,65.26108398437503],[-84.50112304687497,65.45844726562501],[-84.08486328125,65.21782226562502],[-82.05,64.64428710937506],[-81.67612304687498,64.21264648437503],[-81.88710937499997,64.01640625000002],[-80.82895507812495,64.08994140625],[-80.30205078124999,63.76220703125003],[-81.04638671875003,63.461572265624966],[-82.378125,63.706787109375],[-82.46708984375002,63.92695312500001],[-83.30395507812497,64.14379882812506],[-84.63291015625,63.30922851562502],[-85.39262695312496,63.119677734375045],[-85.76894531249997,63.70034179687502],[-87.15190429687499,63.58564453125001],[-86.93203124999997,63.90166015625002],[-86.252099609375,64.13686523437497],[-86.37426757812503,64.56582031249997],[-86.074609375,65.533837890625],[-85.55468750000003,65.91865234374995],[-85.17622070312501,65.746875],[-85.23994140624993,65.51030273437499],[-84.91962890624995,65.26108398437503]]],[[[-84.67475585937498,65.575],[-85.096337890625,65.756201171875],[-85.14960937500001,66.01538085937506],[-84.75737304687496,65.85893554687505],[-84.67475585937498,65.575]]],[[[-83.72597656249997,65.796728515625],[-83.23374023437495,65.71503906249995],[-83.332421875,65.63105468749998],[-84.11826171874995,65.77177734375007],[-84.40717773437501,66.13100585937497],[-83.78696289062495,65.96577148437498],[-83.72597656249997,65.796728515625]]],[[[-108.09272460937501,67.00517578124999],[-107.80551757812493,66.99858398437507],[-107.94394531249999,66.8578125],[-108.09272460937501,67.00517578124999]]],[[[-62.681542968749966,67.05629882812502],[-62.87163085937499,67.06259765625006],[-62.41679687499996,67.18847656250003],[-62.681542968749966,67.05629882812502]]],[[[-107.89985351562497,67.40180664062495],[-107.95024414062503,67.31821289062498],[-108.15224609374997,67.429443359375],[-108.04897460937498,67.664892578125],[-107.89985351562497,67.40180664062495]]],[[[-73.621728515625,67.783837890625],[-74.573388671875,67.82866210937507],[-74.70654296875003,68.06708984374995],[-73.49375,68.00063476562502],[-73.40717773437498,67.79306640625],[-73.621728515625,67.783837890625]]],[[[-86.59555664062498,67.7359375],[-86.89252929687498,67.836572265625],[-86.95981445312503,68.10024414062497],[-86.70209960937501,68.30561523437498],[-86.42114257812497,68.18344726562503],[-86.59555664062498,67.7359375]]],[[[-75.67587890624998,68.32250976562506],[-75.078125,68.17314453124999],[-75.20195312499996,67.45917968750001],[-75.78007812499996,67.28354492187503],[-76.94418945312498,67.25029296875002],[-77.30439453125001,67.68510742187505],[-77.12587890624997,67.94707031250002],[-76.59580078124998,68.27895507812497],[-75.67587890624998,68.32250976562506]]],[[[-78.98271484374999,68.19282226562501],[-79.17475585937493,68.26445312500002],[-78.95258789062495,68.35302734375006],[-78.98271484374999,68.19282226562501]]],[[[-104.54067382812497,68.405908203125],[-105.05136718749999,68.55903320312501],[-104.60200195312503,68.56152343749997],[-104.54067382812497,68.405908203125]]],[[[-74.880859375,68.34868164062505],[-75.40024414062503,68.52548828125],[-75.28740234374996,68.68774414062503],[-74.98364257812497,68.64760742187502],[-74.880859375,68.34868164062505]]],[[[-101.84589843749994,68.58632812499997],[-102.30815429687497,68.681982421875],[-102.01337890624995,68.82539062500001],[-101.73295898437495,68.75341796875],[-101.84589843749994,68.58632812499997]]],[[[-100.21723632812497,68.80668945312502],[-100.59653320312496,68.76640625000007],[-100.56547851562495,69.02680664062501],[-100.21723632812497,68.80668945312502]]],[[[-99.99467773437502,69.01352539062503],[-100.19570312500002,68.991455078125],[-100.153125,69.12949218750003],[-99.99467773437502,69.01352539062503]]],[[[-79.21064453124995,68.845458984375],[-79.24267578125,69.04926757812495],[-78.33256835937496,69.38603515624999],[-78.77919921875,68.95048828124999],[-79.21064453124995,68.845458984375]]],[[[-90.1998046875,69.419091796875],[-90.33027343749993,69.252197265625],[-90.49204101562503,69.369873046875],[-90.1998046875,69.419091796875]]],[[[-76.99536132812503,69.14375],[-77.37939453125,69.2740234375],[-77.18754882812502,69.440087890625],[-76.66884765625002,69.36616210937504],[-76.99536132812503,69.14375]]],[[[-101.171728515625,69.39707031250003],[-101.31289062499998,69.57607421875],[-101.00063476562497,69.4619140625],[-101.171728515625,69.39707031250003]]],[[[-95.51367187499997,69.57363281250002],[-95.43745117187498,69.37846679687505],[-95.73012695312502,69.34755859374997],[-95.80620117187499,69.56049804687501],[-95.89345703125,69.35175781250004],[-95.87583007812495,69.60600585937505],[-95.51367187499997,69.57363281250002]]],[[[-67.91469726562494,69.54096679687504],[-68.22138671874998,69.61674804687502],[-67.908837890625,69.68183593749995],[-67.91469726562494,69.54096679687504]]],[[[-78.02910156249993,69.71489257812502],[-78.03999023437495,69.6083984375],[-78.84819335937502,69.4828125],[-78.02910156249993,69.71489257812502]]],[[[-79.43066406250003,69.78779296874995],[-79.55283203124995,69.63085937500006],[-80.04750976562502,69.63432617187505],[-79.97783203124993,69.50966796874997],[-80.794775390625,69.68925781250005],[-80.42421875000002,69.797607421875],[-79.43066406250003,69.78779296874995]]],[[[-97.439453125,69.64267578125006],[-96.29995117187494,69.34438476562505],[-95.7513671875,68.89765624999998],[-95.26777343749998,68.82607421874997],[-96.40156249999995,68.47070312500003],[-97.47202148437498,68.543701171875],[-98.320556640625,68.84272460937498],[-98.70380859374993,68.80278320312502],[-98.90449218749995,68.93242187500005],[-99.25400390625002,68.86318359374997],[-99.49467773437493,68.95957031249998],[-99.455712890625,69.13120117187503],[-98.45595703124997,69.33466796875001],[-98.54599609375,69.57290039062497],[-98.04135742187498,69.456640625],[-98.20048828124996,69.79697265625006],[-97.79072265624998,69.86162109374999],[-97.439453125,69.64267578125006]]],[[[-86.91303710937501,70.11323242187501],[-86.55766601562499,69.99531249999995],[-87.3232421875,70.08012695312502],[-86.91303710937501,70.11323242187501]]],[[[-74.70888671874997,45.0038574218751],[-74.76245117187494,44.99907226562502],[-74.99614257812496,44.970117187499966],[-75.40126953124997,44.77226562499999],[-75.81933593749997,44.468017578125],[-76.18579101562503,44.24223632812502],[-76.819970703125,43.62880859375011],[-77.59653320312492,43.62861328125007],[-78.45825195312497,43.63149414062511],[-78.72041015624993,43.62495117187501],[-78.84555664062492,43.58334960937506],[-79.171875,43.466552734375085],[-79.0830566406249,43.33139648437509],[-79.05922851562494,43.27807617187506],[-79.066064453125,43.10610351562502],[-79.02617187499996,43.01733398437506],[-78.98076171874993,42.98061523437502],[-78.91508789062496,42.90913085937504],[-79.17373046875,42.74853515625],[-80.24755859374991,42.366015625000045],[-81.02822265624997,42.247167968750006],[-81.50732421874997,42.10346679687504],[-81.97416992187496,41.88872070312499],[-82.43906249999989,41.6748535156251],[-82.69003906249995,41.675195312499994],[-83.141943359375,41.97587890624996],[-83.10952148437497,42.25068359375001],[-82.54531249999997,42.62470703124998],[-82.19038085937495,43.47407226562501],[-82.137841796875,43.570898437500034],[-82.48505859374993,45.08374023437503],[-82.55107421874987,45.3473632812501],[-82.91933593749994,45.51796875000002],[-83.59267578125,45.81713867187506],[-83.46948242187503,45.99467773437499],[-83.61596679687503,46.116845703124994],[-83.97778320312494,46.08491210937507],[-84.12319335937497,46.50292968749997],[-84.44047851562496,46.49814453125006],[-84.66577148437503,46.54326171875002],[-84.87597656249994,46.89990234375003],[-85.07006835937497,46.97993164062498],[-85.65224609375,47.21997070312503],[-86.67216796874996,47.636425781249955],[-87.20800781249997,47.848486328125006],[-87.74389648437497,48.06054687500003],[-88.37817382812497,48.30307617187506],[-89.45566406249992,47.99624023437508],[-90.79731445312495,48.13105468750001],[-91.04345703124991,48.19370117187498],[-91.38720703124997,48.05854492187498],[-92.00517578125002,48.301855468750006],[-92.3484375,48.276611328125],[-92.41459960937493,48.276611328125],[-92.50058593749995,48.43535156250002],[-92.83671875,48.567773437499994],[-93.25795898437497,48.62885742187501],[-93.37788085937498,48.61655273437498],[-93.70771484374995,48.525439453125074],[-93.85161132812496,48.607275390625034],[-94.6208984374999,48.7426269531251],[-94.71279296874997,48.863427734374994],[-94.80346679687497,49.0029296875],[-94.86040039062493,49.258593750000045],[-94.85434570312495,49.304589843749994],[-95.15527343749997,49.3696777343751],[-95.16206054687493,48.991748046875045],[-95.39790039062493,48.99316406249997],[-96.25068359374993,48.99316406249997],[-96.67705078124993,48.99316406249997],[-97.52983398437493,48.99316406249997],[-98.80898437499995,48.99316406249997],[-104.77832031249997,48.993115234375125],[-110.7476562499999,48.993066406250136],[-116.71704101562493,48.993066406250136],[-118.84892578124993,48.993066406250136],[-119.27534179687494,48.993066406250136],[-119.70170898437495,48.99301757812495],[-120.98085937499995,48.99301757812495],[-122.78876953124994,48.99301757812495],[-122.82670898437495,49.028417968750034],[-122.9241699218749,49.07465820312504],[-122.96269531249993,49.07460937500005],[-123.06328125,48.97773437500001],[-123.22944335937493,49.260498046875085],[-122.87910156249995,49.39892578125003],[-123.27675781249997,49.34394531250001],[-123.1875,49.680322265624994],[-123.53056640624989,49.39731445312506],[-124.02861328125002,49.602880859375006],[-123.99262695312497,49.736181640625006],[-123.81718749999993,49.58657226562508],[-123.58247070312498,49.68125],[-123.87441406250005,49.736816406250114],[-123.82543945312493,50.14423828124998],[-123.94589843749995,50.18393554687509],[-123.9849121093749,49.87558593749998],[-124.28125,49.77211914062502],[-124.78237304687492,50.02011718749992],[-125.05668945312495,50.418652343750125],[-124.8598632812499,50.872412109375006],[-125.05878906249993,50.51386718749998],[-125.4763183593749,50.49716796874995],[-125.53935546874996,50.64902343749998],[-125.64130859374994,50.46621093750005],[-126.09433593749995,50.497607421875045],[-126.44746093750004,50.58774414062492],[-125.90410156250002,50.704931640625006],[-126.51435546875,50.679394531250125],[-126.37460937499995,50.83735351562498],[-126.5217773437499,50.86606445312498],[-126.51733398437497,51.0568359375001],[-126.63178710937494,50.915136718750006],[-127.057568359375,50.86752929687509],[-127.70810546875,51.15117187499996],[-127.41967773437496,51.608056640625136],[-126.69145507812502,51.70341796875002],[-127.33872070312489,51.70737304687495],[-127.66870117187497,51.47758789062502],[-127.85053710937498,51.67319335937509],[-127.79536132812493,52.19101562500006],[-127.43793945312504,52.356152343750125],[-127.24223632812496,52.39511718750009],[-126.71396484374989,52.060693359374994],[-127.19399414062498,52.45766601562502],[-126.95136718749994,52.7510253906251],[-127.01933593750002,52.8424804687501],[-127.06621093749989,52.65268554687498],[-127.79189453124994,52.28935546875002],[-128.10224609374993,51.78842773437495],[-128.3576171875,52.1588867187501],[-128.0375,52.318164062500045],[-127.94023437499996,52.545166015625085],[-128.27153320312493,52.3629882812501],[-128.05327148437487,52.91069335937496],[-128.3650390624999,52.82578125000006],[-128.52470703125002,53.1406738281251],[-129.08090820312492,53.36728515625006],[-129.1715820312499,53.53359375000002],[-128.8545898437499,53.70454101562504],[-128.90561523437492,53.559326171875114],[-128.5421386718749,53.420654296875114],[-128.13271484375002,53.417773437500045],[-127.92783203125,53.274707031250045],[-128.2072265624999,53.483203125000074],[-128.67553710937494,53.55458984375005],[-128.76367187500003,53.746875],[-128.5321289062499,53.85810546875007],[-128.959375,53.84145507812505],[-129.2578613281249,53.417968750000085],[-129.56372070312506,53.251464843750114],[-130.33525390625002,53.723925781250074],[-130.04331054687495,54.13354492187503],[-129.62602539062493,54.23027343750002],[-130.08422851562503,54.18139648437503],[-130.4302734375,54.42099609374998],[-129.56064453124995,55.46254882812508],[-129.79516601562503,55.559570312500114],[-130.04848632812494,55.05727539062511],[-130.01406249999997,55.950537109375006],[-130.09785156249995,56.10927734375002],[-130.41313476562487,56.12250976562507],[-130.47709960937496,56.230566406250034],[-130.649072265625,56.26367187500003],[-131.471875,56.55673828125006],[-131.82426757812496,56.58999023437508],[-131.86616210937495,56.792822265625006],[-132.1042968749999,56.85678710937509],[-132.062890625,56.95336914062503],[-132.33798828124992,57.07944335937498],[-132.27939453124998,57.14536132812506],[-132.23217773437494,57.198535156250074],[-132.30166015625005,57.2763183593751],[-132.44248046874986,57.40673828125003],[-132.55048828124995,57.499902343749994],[-133.00141601562495,57.948974609375],[-133.27529296875,58.22285156250004],[-133.54638671874997,58.50346679687499],[-134.21850585937503,58.849902343750045],[-134.32963867187505,58.93969726562506],[-134.39306640625,59.009179687499994],[-134.67724609374997,59.19926757812499],[-134.94375,59.28828125000001],[-135.05102539062491,59.57866210937502],[-135.36787109374998,59.743310546874994],[-135.70258789062504,59.72875976562506],[-136.3218261718749,59.604833984375034],[-136.27797851562494,59.48032226562506],[-136.46635742187493,59.459082031250006],[-136.57875976562494,59.15224609375002],[-136.81328125000002,59.15004882812511],[-137.12622070312491,59.04096679687507],[-137.2775390624999,58.988183593749994],[-137.43857421874995,58.903125],[-137.52089843749994,58.91538085937506],[-137.59331054687493,59.22626953124998],[-138.317626953125,59.611132812500074],[-138.86875,59.94575195312501],[-139.18515624999986,60.083593750000034],[-139.13696289062494,60.17270507812506],[-139.07924804687497,60.279443359375136],[-139.07924804687497,60.3437011718751],[-139.23476562499997,60.339746093749994],[-139.67631835937505,60.32832031249998],[-139.97329101562497,60.183154296875074],[-140.45283203125004,60.29970703125002],[-140.5254394531249,60.21835937499995],[-140.76274414062505,60.25913085937509],[-141.00214843750004,60.300244140625125],[-141.00214843750004,60.884667968749994],[-141.00214843750004,61.761279296875045],[-141.00214843750004,63.22226562499998],[-141.00214843750004,64.09887695312506],[-141.00214843750004,65.55991210937498],[-141.00214843750004,66.43652343750006],[-141.00214843750004,67.89755859374998],[-141.00214843750004,68.77416992187506],[-141.00214843750004,69.65078125000011],[-139.18154296874997,69.51552734375008],[-137.25996093749998,68.96411132812503],[-136.12236328124993,68.88222656250002],[-135.258837890625,68.68432617187503],[-135.93901367187487,68.9741699218751],[-135.575537109375,69.02695312500003],[-135.91020507812487,69.11147460937502],[-135.6914550781249,69.31118164062502],[-135.29282226562486,69.30786132812506],[-135.1408203124999,69.46782226562496],[-134.45683593749993,69.47763671875],[-134.40893554687494,69.68178710937502],[-133.87978515624997,69.50771484375011],[-134.17431640624991,69.25283203125005],[-133.16313476562496,69.43388671874999],[-132.91533203125002,69.62963867187506],[-132.40390625,69.65874023437496],[-132.48847656249993,69.73808593749996],[-132.16342773437498,69.70498046875014],[-131.13637695312497,69.90688476562505],[-130.66547851562495,70.12705078124998],[-129.944970703125,70.09091796875006],[-129.675634765625,70.19296875000009],[-129.64829101562495,69.9977539062501],[-130.83208007812487,69.65146484375006],[-131.9377929687499,69.5347167968751],[-132.8174804687499,69.20576171875004],[-133.41831054687492,68.84428710937493],[-133.138037109375,68.74658203125011],[-133.33666992187497,68.83525390625005],[-132.57763671874997,68.84780273437514],[-132.71894531249998,69.07919921875],[-131.78837890625002,69.43198242187495],[-131.32470703124997,69.36118164062509],[-131.06342773437504,69.45068359375003],[-130.97065429687495,69.20908203125],[-130.1176269531249,69.720068359375],[-128.89892578124994,69.96616210937506],[-129.15791015624995,69.80009765624999],[-129.05434570312502,69.70107421875005],[-128.85302734375003,69.7510253906251],[-127.68378906249994,70.26035156249995],[-128.17011718749998,70.41845703125],[-127.99101562499992,70.57382812500003],[-127.22597656249992,70.29614257812497],[-126.25043945312495,69.54526367187492],[-125.52495117187495,69.35156250000009],[-125.171875,69.42797851562503],[-125.35693359374991,69.62597656250003],[-124.767919921875,69.99003906249996],[-124.99038085937494,70.02661132812511],[-124.55502929687488,70.15122070312509],[-124.40693359374991,69.76743164062506],[-124.12460937499995,69.6899902343751],[-124.33808593749991,69.36484374999995],[-123.5284179687499,69.38935546874995],[-123.02578125,69.81000976562504],[-122.07006835937499,69.81616210937506],[-120.96245117187502,69.66040039062511],[-120.13999023437488,69.38056640625013],[-117.22695312499998,68.913427734375],[-116.05947265625,68.83701171875006],[-116.2434082031249,68.9740722656251],[-115.44228515624994,68.94091796875009],[-114.62016601562496,68.74609375],[-113.96440429687495,68.39907226562502],[-114.09594726562491,68.26679687500007],[-114.76528320312494,68.27021484375004],[-115.12705078124992,68.13203124999995],[-115.43447265624994,67.90234375000006],[-115.13320312499994,67.819189453125],[-112.50302734374993,67.6819335937501],[-110.9900390624999,67.79082031250007],[-110.07392578124995,67.99291992187506],[-109.63037109374991,67.73271484374996],[-109.03803710937504,67.69116210937503],[-108.85200195312497,67.42197265625009],[-108.61333007812493,67.59804687500008],[-107.98872070312495,67.2563964843751],[-107.99130859374995,67.09516601562513],[-108.49604492187493,67.09228515625006],[-107.25947265624998,66.39853515624995],[-107.71035156250001,66.74003906250007],[-107.7250976562499,66.98413085937506],[-107.15649414062497,66.88173828124997],[-107.9583984375,67.81860351562506],[-107.79829101562498,68.03691406249996],[-106.42426757812491,68.20058593750008],[-105.7501953125,68.59228515625011],[-106.45805664062496,68.51645507812495],[-106.60849609374988,68.35737304687504],[-107.61933593749994,68.3310546875],[-107.73417968749989,68.17373046875011],[-108.3228027343749,68.15410156250002],[-108.71811523437488,68.29746093750009],[-108.31347656249996,68.61079101562498],[-106.16445312499992,68.91987304687507],[-105.68559570312489,68.82817382812505],[-105.3774414062499,68.413818359375],[-104.65317382812488,68.23007812500003],[-104.48681640624991,68.06318359374998],[-103.47412109374993,68.11503906250005],[-102.32036132812489,67.73564453125005],[-101.55498046874992,67.69316406250007],[-100.21293945312489,67.83857421875004],[-98.92045898437502,67.72578124999998],[-98.41210937499991,67.80717773437505],[-98.63154296875004,68.0725585937501],[-97.45493164062486,67.61699218750002],[-97.20654296874989,67.85507812500003],[-97.73911132812495,67.97817382812505],[-98.19252929687494,67.92299804687502],[-98.65048828124989,68.36352539062506],[-98.21855468750002,68.31743164062507],[-97.7942382812499,68.38759765625],[-97.9250976562499,68.523681640625],[-97.41035156249993,68.49653320312498],[-96.97670898437497,68.25541992187505],[-96.43066406249991,68.3105957031251],[-96.72207031250005,68.03876953124998],[-95.9703125,68.24912109375],[-96.36914062499991,67.50976562500003],[-96.14145507812489,67.27182617187503],[-95.71992187499998,67.31679687500014],[-95.77768554687495,67.18461914062505],[-95.41591796875005,67.15556640624999],[-95.41889648437504,67.01323242187493],[-96.42255859374995,67.05175781249997],[-95.7875488281249,66.616796875],[-96.03686523437489,66.9375],[-95.39965820312503,66.94946289062509],[-95.25874023437493,67.26254882812492],[-95.65048828124986,67.73745117187505],[-95.46069335937503,68.02138671875],[-94.74443359374993,68.07089843749995],[-93.44892578124998,68.61889648437503],[-93.85244140624994,69.00034179687495],[-94.06489257812495,68.78476562500006],[-94.600439453125,68.80322265625011],[-94.08364257812497,69.12309570312507],[-94.254736328125,69.31376953125002],[-93.61948242187492,69.41699218750009],[-93.74853515624991,69.2261230468751],[-93.5322753906249,69.48090820312495],[-94.2708007812499,69.45512695312505],[-94.63383789062496,69.64965820312506],[-94.82250976562494,69.577783203125],[-95.96494140624989,69.80278320312499],[-96.5513671875,70.21030273437506],[-96.29770507812492,70.51137695312511],[-95.87861328124998,70.54897460937514],[-95.88632812499986,70.69428710937507],[-96.25800781249993,70.64228515625013],[-96.54892578124995,70.80874023437511],[-96.44658203124996,71.23989257812502],[-96.06201171874997,71.41386718749993],[-95.5642578124999,71.33676757812503],[-95.40625,71.49165039062498],[-95.87231445312494,71.57314453125005],[-94.73486328124994,71.98295898437507],[-94.30834960937491,71.76489257812506],[-93.74628906249998,71.742822265625],[-92.94868164062493,71.26210937500011],[-92.98144531249994,70.8522460937501],[-91.56406249999995,70.1782714843751],[-92.32050781250004,70.2353515625],[-92.51186523437494,70.10385742187503],[-91.976708984375,70.03867187500009],[-92.88779296874989,69.66821289062511],[-92.31166992187494,69.67290039062499],[-91.91196289062495,69.53125],[-91.20180664062494,69.64477539062494],[-91.43994140624997,69.52568359375002],[-90.4155761718749,69.45698242187507],[-90.89228515625004,69.26728515624995],[-91.23720703125005,69.28554687500014],[-90.47900390624994,68.88115234374999],[-90.57363281250005,68.47470703124998],[-90.20478515625004,68.25747070312511],[-89.27954101562491,69.25546875000003],[-88.22353515625,68.91503906249997],[-87.81357421874986,68.34570312499997],[-87.89267578125,68.24814453125],[-88.34697265624993,68.28828125000001],[-88.313818359375,67.95034179687508],[-87.359375,67.17724609374997],[-86.56079101562491,67.48212890625007],[-85.64316406249992,68.69970703124997],[-84.86757812499994,68.77333984375005],[-85.10664062499995,68.84404296875007],[-84.86220703125,69.07397460937503],[-85.38676757812493,69.23188476562504],[-85.50737304687487,69.84526367187493],[-82.61835937499993,69.69106445312514],[-82.39023437499989,69.60087890625007],[-82.75483398437493,69.49438476562506],[-82.30986328124996,69.41000976562509],[-82.22753906249997,69.24887695312495],[-81.37783203125005,69.18564453125003],[-81.95791015624991,68.88364257812498],[-81.38090820312496,68.85004882812504],[-81.28154296874987,68.65722656250003],[-81.91484374999993,68.4587890625001],[-82.55268554687504,68.44648437500007],[-82.22241210937489,68.145263671875],[-82.0125,68.19389648437496],[-81.97646484374997,67.86201171875001],[-81.2943359375,67.497412109375],[-81.46757812499996,67.0698730468751],[-83.40644531249998,66.37124023437508],[-84.53847656249994,66.97280273437505],[-84.84575195312502,67.02871093750008],[-85.11372070312498,66.90693359375013],[-84.73774414062504,66.93359375000006],[-84.223046875,66.68247070312506],[-83.86904296875,66.2135742187501],[-84.29306640624995,66.29179687500005],[-84.628076171875,66.20771484374998],[-85.603857421875,66.56826171875005],[-86.708154296875,66.52304687500009],[-86.68510742187502,66.36040039062499],[-85.95874023437491,66.11904296875002],[-87.45288085937503,65.33896484375009],[-87.96997070312503,65.34892578124999],[-89.7494140625,65.93603515625006],[-89.88969726562487,65.86855468749997],[-91.42724609374994,65.94790039062497],[-91.04111328124989,65.82983398437509],[-90.98344726562496,65.91923828124999],[-89.92407226562497,65.78027343750011],[-88.97402343749994,65.34829101562502],[-87.02753906249995,65.19809570312498],[-88.10561523437497,64.18330078125001],[-88.81772460937489,63.99223632812499],[-89.20063476562493,64.11376953125006],[-89.13154296874998,63.96850585937494],[-89.61582031249995,64.030615234375],[-89.8113281249999,64.18056640625],[-90.04165039062494,64.14086914062509],[-89.85571289062497,63.9569824218751],[-90.16816406250004,63.978759765625085],[-90.15473632812498,63.68964843749998],[-90.81191406249991,63.580908203125034],[-91.98222656249996,63.82241210937502],[-92.33842773437496,63.787646484375045],[-93.69633789062493,64.14716796875013],[-93.55981445312491,63.865283203125074],[-93.27021484374998,63.840869140625074],[-93.37851562499992,63.94848632812497],[-92.15688476562491,63.691699218750045],[-92.46508789062491,63.55507812500011],[-91.84184570312496,63.69755859374999],[-90.97006835937489,63.442773437500136],[-90.69858398437492,63.06386718750005],[-91.44897460937503,62.804052734375034],[-92.3612792968749,62.81938476562496],[-91.93583984374993,62.59238281250009],[-92.55141601562491,62.546728515625034],[-92.76596679687492,62.34995117187509],[-92.52797851562494,62.16840820312504],[-93.20537109374993,62.364941406250125],[-92.90551757812503,62.21513671874996],[-93.3330566406249,61.93291015625002],[-93.58178710937494,61.94204101562511],[-93.31201171874997,61.76728515625004],[-93.91274414062497,61.48144531250006],[-94.509375,60.60454101562493],[-94.76171874999991,60.498242187500125],[-94.78828124999998,59.26787109374993],[-94.95732421874996,59.068847656250085],[-94.28706054687493,58.716015625000125],[-94.33222656249998,58.297363281250114],[-94.12319335937494,58.73671875000008],[-93.1787597656249,58.72563476562496],[-92.43281249999993,57.3203125],[-92.7981445312499,56.921972656250034],[-90.89746093750003,57.25693359375006],[-88.94848632812489,56.85131835937503],[-88.07509765624997,56.46728515624994],[-87.48242187499991,56.021289062500045],[-85.55932617187491,55.54018554687508],[-85.21801757812491,55.348974609375034],[-85.3652832031249,55.07929687499998],[-85.06093749999997,55.285644531250085],[-83.91059570312493,55.314648437499955],[-82.39326171874998,55.067822265625125],[-82.219384765625,54.8134765625],[-82.42416992187486,54.2445800781251],[-82.14145507812492,53.81762695312497],[-82.29155273437496,53.03071289062507],[-81.5994140624999,52.432617187500085],[-81.82788085937489,52.22421875000009],[-81.46621093749994,52.204492187500136],[-80.588037109375,51.667236328125114],[-80.4433105468749,51.38857421875002],[-80.85122070312497,51.125],[-80.47832031249993,51.30732421874998],[-80.10356445312487,51.282861328125136],[-79.34790039062494,50.76264648437504],[-79.737451171875,51.186279296875],[-79.33867187500002,51.62817382812497],[-79.04052734375003,51.46376953125005],[-78.90317382812495,51.200292968750034],[-78.73134765624994,51.497460937499994],[-78.98164062499993,51.774560546875136],[-78.44809570312495,52.26137695312502],[-78.74414062499994,52.65537109374998],[-79.10034179687497,53.65664062500005],[-78.99604492187493,54.00249023437499],[-79.241796875,54.098876953125085],[-79.14672851562491,54.16923828125002],[-79.71235351562495,54.6718261718751],[-77.77529296874994,55.291259765625],[-76.60405273437496,56.19956054687495],[-76.52558593749998,56.8917968750001],[-76.80981445312497,57.65795898437506],[-77.15678710937496,58.018896484375034],[-78.51508789062493,58.68237304687503],[-77.76069335937498,59.38002929687505],[-77.72617187499995,59.67587890624992],[-77.34907226562495,59.57895507812509],[-77.48530273437493,59.684570312500114],[-77.28920898437494,60.0220214843751],[-77.58588867187498,60.088183593750074],[-77.45288085937497,60.1458007812501],[-77.6814453124999,60.427099609375034],[-77.503564453125,60.54272460937497],[-77.7908203124999,60.63984375000004],[-77.58955078124993,60.808593750000114],[-78.18134765624995,60.81914062499996],[-77.51435546874998,61.55629882812505],[-78.02138671874997,61.8320800781251],[-78.13339843749986,62.28227539062496],[-77.372412109375,62.572509765625114],[-75.81689453124991,62.31586914062507],[-75.7898437499999,62.17958984375002],[-75.3412109375,62.312109375],[-74.63256835937497,62.115673828125125],[-74.6458007812499,62.21113281250004],[-73.70507812499991,62.47314453124994],[-72.68696289062498,62.12456054687499],[-72.771630859375,61.840429687500006],[-72.50556640624998,61.922656250000074],[-72.22612304687487,61.83159179687499],[-72.04003906249991,61.68027343750006],[-72.21586914062502,61.58725585937495],[-71.86611328125,61.68852539062499],[-71.63828124999995,61.6171875],[-71.85439453124991,61.43979492187492],[-71.42270507812489,61.158935546875085],[-70.27929687499991,61.06865234374999],[-69.99243164062491,60.8564941406251],[-69.50332031249994,61.04042968750011],[-69.40473632812493,60.84677734375009],[-69.75947265624998,60.440234375000045],[-69.67373046874994,60.07587890625007],[-70.65483398437496,60.02622070312506],[-69.73393554687493,59.918017578125045],[-69.68188476562489,59.34174804687507],[-69.3440429687499,59.303076171875006],[-69.53164062499994,58.86923828125009],[-69.64838867187493,58.82080078125],[-69.78417968749994,58.95571289062511],[-70.15434570312496,58.76059570312498],[-69.78989257812486,58.689306640625034],[-69.27109374999986,58.88393554687505],[-68.69819335937495,58.904541015625],[-68.38115234374993,58.74350585937506],[-68.22939453124994,58.48457031250007],[-68.35654296874989,58.163232421875136],[-69.04082031249996,57.902490234375136],[-68.41357421874997,58.0517578125],[-68.02104492187493,58.48530273437504],[-67.88828124999989,58.29575195312495],[-68.06386718750005,58.13896484374999],[-67.75595703124992,58.4045898437501],[-67.6782714843749,57.99111328125008],[-67.5696289062499,58.21347656250006],[-66.72216796874991,58.49101562499996],[-66.36240234374989,58.791162109374994],[-66.0023925781249,58.43120117187502],[-66.04306640624995,58.82065429687495],[-65.72099609374996,59.02377929687495],[-65.38354492187494,59.06020507812508],[-65.7,59.21333007812501],[-65.4117187499999,59.31499023437496],[-65.47509765624994,59.47031249999998],[-65.03823242187494,59.38789062500007],[-65.40742187499993,59.53935546875002],[-65.4333984374999,59.776513671874994],[-65.02817382812495,59.77070312500007],[-65.17172851562489,59.90800781249996],[-64.81733398437498,60.3310546875],[-64.49941406250005,60.26826171875001],[-64.41958007812494,60.17138671874997],[-64.76845703124997,60.01210937500005],[-64.28349609374993,60.06406249999998],[-64.22631835937491,59.741210937500085],[-64.05605468750005,59.82255859374996],[-63.7501953124999,59.51259765625005],[-63.945458984374994,59.380175781250074],[-63.775878906249915,59.277148437500045],[-63.539892578124864,59.332861328125034],[-63.41513671874995,59.194384765625074],[-63.97114257812498,59.053808593750034],[-63.24843749999991,59.068310546874955],[-63.28212890624994,58.86738281250007],[-63.05029296874997,58.87817382812494],[-62.87387695312489,58.67246093749998],[-63.537060546874926,58.329931640625006],[-63.209960937499886,58.46694335937502],[-62.593847656249864,58.47402343750005],[-62.81206054687502,58.20039062500007],[-63.26152343749993,58.014697265625074],[-62.486230468749966,58.15405273437506],[-62.30566406249997,57.97226562499995],[-61.95864257812505,57.91176757812508],[-61.9679687499999,57.61191406250009],[-62.495556640624926,57.489208984375125],[-61.92114257812497,57.42080078125005],[-61.977441406249966,57.24794921875002],[-61.33374023437494,57.01059570312498],[-61.37163085937502,56.68081054687511],[-62.497265624999926,56.80170898437504],[-61.73774414062498,56.52602539062502],[-61.940429687499886,56.423583984375114],[-61.42529296874994,56.360644531250074],[-61.713085937499955,56.230957031250114],[-61.364697265624926,56.2160156250001],[-61.30112304687495,56.04716796874999],[-61.4495117187499,55.99570312499998],[-61.08935546874997,55.86635742187511],[-60.74326171874989,55.94145507812493],[-60.56210937499995,55.727001953125125],[-60.341015624999926,55.78466796874997],[-60.40830078124995,55.649560546874994],[-60.19238281249994,55.4809082031251],[-60.617138671874955,55.060205078124994],[-59.75878906249997,55.3095703125],[-59.68906249999989,55.19633789062502],[-59.43789062500005,55.175927734375136],[-59.837792968749994,54.813964843750114],[-59.25957031249996,55.19995117187506],[-58.99711914062496,55.149462890625074],[-58.780175781249994,54.838378906250114],[-58.39814453124998,54.77412109374998],[-57.96245117187493,54.875732421875085],[-57.40449218750004,54.59086914062496],[-57.69926757812496,54.38657226562506],[-58.435205078124966,54.228125],[-58.63320312499999,54.04956054687497],[-59.8230468749999,53.83442382812504],[-60.14492187499994,53.59614257812498],[-60.395410156249994,53.653320312500085],[-60.1002929687499,53.48696289062511],[-60.329492187499966,53.26611328125006],[-58.652050781249926,53.97788085937495],[-57.935986328124955,54.09116210937492],[-58.31748046874989,54.11445312500007],[-58.192089843749926,54.228173828125136],[-57.4160644531249,54.162744140625136],[-57.134960937499926,53.79184570312506],[-57.524072265624966,53.61142578125006],[-57.331738281249955,53.469091796875034],[-56.84086914062496,53.73945312500004],[-56.46499023437505,53.76503906250011],[-55.96611328125002,53.4711425781251],[-55.79794921874995,53.211962890625045],[-55.80283203124989,52.64316406249998],[-56.324902343749926,52.54453124999998],[-55.74648437499994,52.4745605468751],[-55.7771484374999,52.3642578125],[-56.01171874999997,52.394482421875125],[-55.695214843749994,52.13779296875006],[-56.97597656250005,51.45766601562505],[-58.510351562500006,51.295068359375136],[-59.88632812499992,50.316406250000085],[-61.72485351562503,50.10405273437499],[-61.91953124999989,50.2328613281251],[-62.71542968749995,50.30166015625008],[-66.49550781249991,50.2118652343751],[-66.94116210937503,49.993701171875045],[-67.37202148437495,49.348437500000045],[-68.28193359374998,49.197167968750136],[-69.67387695312496,48.19916992187504],[-71.01826171874993,48.455615234375045],[-69.86552734374993,48.17226562500005],[-69.775,48.09809570312504],[-69.9944335937499,47.73989257812508],[-70.70585937499996,47.13979492187505],[-71.26777343749995,46.79594726562499],[-71.87958984374998,46.68681640624996],[-72.98100585937493,46.209716796875085],[-73.4766113281249,45.738232421874955],[-74.03784179687494,45.501855468750136],[-74.31508789062494,45.531054687500045],[-73.97382812499995,45.345117187499994],[-74.70888671874997,45.0038574218751]]],[[[-96.78232421874998,72.93662109375],[-97.0927734375,72.99692382812503],[-96.86240234374995,73.18881835937506],[-96.78232421874998,72.93662109375]]],[[[-114.52153320312502,72.592919921875],[-113.57807617187501,72.65209960937506],[-113.2923828125,72.94980468750003],[-112.75361328125001,72.98603515624995],[-111.26972656249994,72.71372070312498],[-111.895166015625,72.35610351562497],[-111.67509765625002,72.30014648437503],[-110.20512695312495,72.66127929687497],[-110.66083984374998,73.00820312500002],[-110.00844726562494,72.983642578125],[-108.75498046875002,72.55107421874999],[-108.18823242187501,71.72377929687502],[-107.812841796875,71.62617187500004],[-107.30600585937496,71.89467773437502],[-108.23740234374999,73.14990234375003],[-108.029052734375,73.34873046875003],[-106.48212890624998,73.19619140624997],[-105.41513671874995,72.788330078125],[-104.38593749999997,71.57695312500005],[-104.51479492187502,71.06425781250005],[-103.58457031249995,70.63085937500003],[-103.07719726562497,70.50883789062505],[-103.04956054687503,70.65507812499999],[-101.67631835937495,70.27827148437495],[-101.56240234375001,70.135009765625],[-101.04267578125,70.11079101562504],[-100.98237304687497,69.67988281250001],[-101.483837890625,69.85019531250006],[-101.64765624999997,69.69853515625007],[-102.18212890624997,69.845947265625],[-102.59589843749997,69.71791992187502],[-102.62109374999996,69.55151367187506],[-103.464892578125,69.64448242187498],[-103.04892578124999,69.47177734375006],[-103.12021484374995,69.20458984374997],[-102.44677734374997,69.476318359375],[-102.04594726562493,69.46484374999997],[-101.85712890625001,69.02397460937505],[-102.89506835937499,68.8236328125],[-104.57143554687501,68.87211914062502],[-105.105859375,68.92041015625],[-105.019580078125,69.08125],[-106.27016601562497,69.19458007812497],[-106.65908203124997,69.439599609375],[-107.43989257812497,69.00214843749995],[-108.36499023437497,68.93476562499998],[-109.47211914062501,68.67670898437498],[-113.12773437500002,68.49414062500003],[-113.61684570312501,68.8384765625],[-113.69414062499995,69.19501953124998],[-115.61811523437495,69.28295898437506],[-116.51347656249993,69.42460937500005],[-117.19541015624995,70.05405273437503],[-114.59233398437497,70.31245117187498],[-112.63789062499997,70.225244140625],[-111.63256835937497,70.30883789062497],[-113.75727539062503,70.69072265625005],[-115.99091796874997,70.586279296875],[-117.58706054687498,70.62954101562502],[-118.2640625,70.888330078125],[-118.26909179687493,71.03471679687505],[-115.30341796874997,71.49370117187505],[-117.93564453125003,71.39208984375003],[-118.22646484374995,71.46708984375005],[-117.742333984375,71.65932617187502],[-118.58300781250003,71.64902343749998],[-118.98769531249997,71.7642578125],[-118.94462890624997,71.98554687499995],[-118.21347656249998,72.26289062499998],[-118.481298828125,72.42768554687498],[-118.13310546874995,72.63281250000003],[-114.63823242187499,73.37265625000003],[-114.20639648437495,73.29780273437495],[-114.05170898437497,73.07099609375004],[-114.52153320312502,72.592919921875]]],[[[-105.28891601562499,72.919921875],[-106.92153320312497,73.479833984375],[-106.61396484375001,73.69560546875002],[-105.31796874999995,73.76713867187502],[-104.5875,73.57807617187495],[-104.62172851562495,73.3111328125],[-105.28891601562499,72.919921875]]],[[[-79.53730468749998,73.65449218749998],[-78.2865234375,73.66582031250007],[-77.20654296874997,73.49956054687505],[-76.18339843749999,72.84306640625005],[-77.83593750000003,72.89682617187498],[-79.3193359375,72.75771484375],[-79.820703125,72.82631835937502],[-80.18330078124995,73.22465820312499],[-80.77641601562502,73.33417968750001],[-80.84887695312503,73.72124023437499],[-79.53730468749998,73.65449218749998]]],[[[-86.58935546874997,71.01079101562507],[-85.64384765624999,71.15244140624998],[-85.09487304687497,71.15195312500006],[-84.82373046874997,71.02861328125005],[-84.69941406249995,71.63144531250003],[-85.33906249999998,71.69726562500003],[-85.91162109375,71.98652343749998],[-85.321875,72.23315429687506],[-84.28374023437499,72.04448242187499],[-84.84199218749995,72.30815429687505],[-84.62304687500003,72.37656250000003],[-85.34111328124993,72.42153320312497],[-85.64990234374997,72.72216796875003],[-85.26210937500002,72.95400390625],[-84.25664062499999,72.79672851562503],[-85.454736328125,73.10546875000003],[-84.41606445312496,73.45649414062495],[-83.781884765625,73.41689453125],[-83.72983398437495,73.57587890624995],[-81.946142578125,73.72983398437506],[-81.40615234374997,73.634521484375],[-80.27724609375,72.77016601562502],[-81.229345703125,72.31171874999998],[-80.61147460937497,72.450830078125],[-80.925146484375,71.90766601562501],[-80.18193359374996,72.20878906250007],[-79.884375,72.17719726562501],[-80.10893554687499,72.33217773437497],[-79.83129882812503,72.44628906250003],[-79.000244140625,72.27202148437507],[-79.00781250000003,72.04291992187501],[-78.58510742187497,71.880615234375],[-78.86274414062495,72.100830078125],[-78.69926757812496,72.35141601562498],[-77.51650390624997,72.17778320312505],[-78.48427734374994,72.47060546875002],[-77.75322265624996,72.72475585937502],[-75.70429687499998,72.57153320312497],[-75.05268554687493,72.22636718749999],[-75.92280273437501,71.71723632812501],[-74.90317382812503,72.10048828125002],[-74.20932617187498,71.978662109375],[-74.31572265624999,71.84267578125],[-75.20478515625001,71.70913085937497],[-74.70078125,71.67558593750005],[-74.99619140624998,71.21811523437503],[-74.48808593750002,71.64838867187501],[-73.8140625,71.77143554687495],[-74.197265625,71.404150390625],[-73.71284179687498,71.58759765624998],[-73.18061523437501,71.282861328125],[-73.27822265625,71.53798828125],[-72.901953125,71.67778320312507],[-71.64067382812499,71.51625976562502],[-71.22939453124997,71.33876953125],[-71.49501953124997,71.10512695312502],[-71.93793945312498,71.09428710937502],[-72.63271484374994,70.83076171874998],[-71.74252929687495,71.046875],[-71.370849609375,70.97514648437499],[-70.82607421874994,71.10874023437503],[-70.67265625,71.05219726562498],[-70.76171874999997,70.79223632812503],[-71.89018554687502,70.43154296875002],[-71.27587890625,70.50029296874999],[-71.42944335937503,70.12778320312503],[-70.97978515624999,70.5810546875],[-69.94980468750003,70.84501953125005],[-68.49575195312502,70.61025390625],[-68.363525390625,70.48125],[-70.05771484375,70.042626953125],[-68.77822265625,70.20356445312501],[-69.00830078124997,69.97895507812501],[-68.74404296874997,69.94140625],[-68.05908203124997,70.317236328125],[-67.36367187499994,70.03442382812503],[-67.22163085937495,69.73071289062506],[-68.02041015625,69.77006835937499],[-69.25078124999999,69.51191406249998],[-68.51303710937498,69.57729492187497],[-67.236962890625,69.460107421875],[-66.71674804687495,69.31186523437498],[-66.70742187500002,69.16821289062503],[-68.40629882812499,69.23222656250002],[-69.040625,69.09799804687503],[-68.41552734375,69.17207031250001],[-67.8326171875,69.06596679687499],[-67.88320312500002,68.78398437499999],[-69.31909179687497,68.85698242187505],[-68.21040039062495,68.702978515625],[-67.9384765625,68.524169921875],[-66.74272460937502,68.45776367187497],[-67.032958984375,68.32607421874997],[-66.923095703125,68.06572265625005],[-66.72900390624997,68.12900390625006],[-66.66269531249995,68.03442382812497],[-66.63095703124998,68.21064453124998],[-66.21240234374997,68.280419921875],[-66.44394531249998,67.83383789062506],[-65.94238281250003,68.07094726562505],[-65.86435546875003,67.92285156249997],[-65.50908203124996,67.96826171875],[-65.40126953125002,67.67485351562499],[-65.41533203124996,67.87924804687498],[-64.92231445312495,68.03164062500002],[-65.02109375,67.78754882812495],[-64.63779296875,67.84023437500002],[-63.850195312500034,67.56606445312502],[-64.00795898437502,67.34731445312497],[-64.69995117187494,67.35053710937501],[-63.83623046874993,67.26411132812498],[-63.59160156250002,67.3775390625],[-63.040136718750034,67.235009765625],[-63.70156249999994,66.82236328125003],[-62.962304687499966,66.94926757812505],[-62.37973632812495,66.90537109375],[-62.12358398437499,67.046728515625],[-61.35341796874994,66.689208984375],[-61.52783203124994,66.55810546875003],[-62.12333984374993,66.64306640625003],[-61.57080078125,66.37290039062506],[-61.95634765624993,66.30932617187497],[-62.553125,66.40683593750003],[-62.53359374999994,66.22700195312498],[-61.99160156250002,66.03530273437502],[-62.624121093750006,66.01625976562505],[-62.381982421874966,65.83330078124999],[-62.65888671874998,65.63994140625002],[-63.16894531249997,65.65732421875],[-63.45874023437494,65.85302734375],[-63.42089843749997,65.70859374999998],[-63.651074218749955,65.66098632812506],[-63.33745117187493,65.61674804687502],[-63.36337890624998,65.22973632812503],[-63.606591796874966,64.92807617187503],[-64.345703125,65.17241210937499],[-64.26967773437497,65.40078124999997],[-64.55507812500002,65.1166015625],[-65.401611328125,65.764013671875],[-64.44536132812496,66.31713867187497],[-65.0044921875,66.07773437500003],[-65.82573242187499,65.996923828125],[-65.65634765625003,66.204736328125],[-66.06372070312497,66.13271484374997],[-66.986328125,66.62749023437505],[-67.07685546874995,66.52548828125006],[-67.30732421874993,66.5697265625],[-67.22539062499993,66.31025390624998],[-67.88339843749995,66.46743164062502],[-67.18320312499995,66.03442382812503],[-67.350439453125,65.92973632812502],[-67.82802734374997,65.96518554687503],[-68.45991210937498,66.249267578125],[-68.74892578125,66.200048828125],[-68.21718750000002,66.078857421875],[-68.18671874999993,65.87099609375002],[-67.86645507812497,65.773681640625],[-67.936767578125,65.56489257812501],[-67.56962890624999,65.64355468749997],[-67.11796874999999,65.44038085937495],[-67.3365234375,65.34658203125005],[-66.69741210937502,64.81518554687506],[-66.63549804687503,65.00034179687503],[-66.21464843749999,64.72241210937497],[-65.93852539062496,64.88574218750003],[-65.2748046875,64.63154296875004],[-65.52934570312499,64.50478515624997],[-65.074609375,64.43666992187502],[-65.21298828125003,64.30327148437502],[-65.580322265625,64.29384765624997],[-65.16987304687495,64.02817382812503],[-64.67846679687503,64.027978515625],[-64.79814453124999,63.91596679687498],[-64.4109375,63.70634765625002],[-64.66464843749995,63.24536132812497],[-65.19184570312498,63.764257812500006],[-65.06894531249998,63.26347656250002],[-64.67236328125003,62.921972656250006],[-65.16279296875001,62.93261718750003],[-65.10849609374998,62.62646484375],[-66.22402343749994,63.10717773437497],[-66.228662109375,62.99096679687503],[-66.41445312500002,63.027197265625034],[-66.65498046874998,63.264746093750006],[-66.69746093749993,63.069531249999955],[-67.89326171874993,63.733740234375006],[-67.72255859374997,63.422753906249966],[-68.49375,63.725488281249994],[-68.91108398437498,63.703222656250006],[-68.141259765625,63.17231445312501],[-67.67597656249998,63.093554687500045],[-67.73696289062497,63.00957031249999],[-65.98017578125001,62.20888671875002],[-66.12387695312498,61.89306640625],[-68.53588867187503,62.25561523437506],[-69.12558593749998,62.423974609374966],[-69.604736328125,62.76772460937502],[-70.23613281250002,62.76337890625001],[-70.801416015625,62.91049804687506],[-71.10576171874999,63.00224609375002],[-70.94604492187497,63.12070312499998],[-71.34726562499998,63.066113281249955],[-71.99223632812493,63.41616210937505],[-71.380859375,63.580322265625],[-72.29013671874995,63.72797851562498],[-72.17426757812498,63.893408203125006],[-72.49843749999994,63.82348632812497],[-73.45454101562495,64.39926757812503],[-73.27128906250002,64.58251953125],[-73.91035156249998,64.578125],[-74.064794921875,64.42465820312498],[-74.13046874999998,64.6078125],[-74.46123046874996,64.64467773437505],[-74.68139648437497,64.8306640625],[-74.91943359374997,64.76552734374997],[-74.69472656250002,64.49658203124997],[-75.71503906249995,64.52436523437495],[-75.76669921875,64.39194335937498],[-76.85615234374998,64.23764648437498],[-77.76049804687503,64.36015624999999],[-78.04521484374993,64.499267578125],[-78.09560546875,64.93925781250002],[-77.36088867187496,65.19653320312503],[-77.32670898437493,65.453125],[-75.82832031249993,65.22705078125003],[-75.45209960937495,64.84160156250002],[-75.35712890624995,65.00874023437495],[-75.79868164062503,65.297509765625],[-75.16630859374999,65.28393554687497],[-74.13847656250002,65.50346679687502],[-73.55078125000003,65.48525390625005],[-74.41640624999997,66.16708984375003],[-73.03325195312502,66.72817382812505],[-72.78881835937494,67.030615234375],[-72.22001953124999,67.25429687500002],[-73.28447265624993,68.35698242187505],[-73.82050781249998,68.36293945312502],[-73.82211914062495,68.68598632812501],[-74.11796875000002,68.70092773437506],[-73.9892578125,68.54863281250002],[-74.2701171875,68.54121093750001],[-74.89296875,68.80815429687505],[-74.71669921874997,69.04550781249998],[-76.58505859375,68.69873046875003],[-76.55722656250003,69.00947265625001],[-75.9537109375,69.03081054687502],[-75.64775390625002,69.212548828125],[-76.46494140624995,69.46943359375001],[-76.23408203125001,69.66210937500003],[-76.742333984375,69.57290039062497],[-77.08994140625,69.63510742187503],[-76.85859374999995,69.775390625],[-77.591650390625,69.84560546875002],[-77.77402343750003,70.23852539062503],[-78.28281250000003,70.229150390625],[-79.06640624999997,70.60356445312507],[-79.40522460937498,70.40073242187503],[-78.86284179687499,70.24189453125001],[-78.88964843750003,69.97749023437495],[-79.51542968749996,69.88759765625005],[-81.65195312500003,70.09462890625002],[-80.92172851562503,69.73090820312501],[-81.56469726562503,69.94272460937498],[-82.29384765624997,69.83691406250003],[-83.14995117187493,70.00908203125002],[-83.85908203124998,69.96274414062498],[-85.43237304687497,70.11137695312507],[-85.780029296875,70.03666992187505],[-86.32202148437503,70.14541015625],[-86.396875,70.46533203124997],[-87.838134765625,70.24658203125],[-88.78271484374997,70.49448242187503],[-89.45590820312498,71.06171874999995],[-87.84492187499995,70.94438476562505],[-87.14008789062498,71.01162109374997],[-89.80537109374993,71.46230468750005],[-89.86152343750001,72.41191406250005],[-88.70517578124998,73.40327148437495],[-87.71977539062496,73.72290039062497],[-85.95078124999998,73.85014648437505],[-84.94677734375,73.72163085937498],[-86.00053710937499,73.31254882812505],[-86.65629882812502,72.72402343750005],[-86.21845703124998,71.89912109375004],[-85.02338867187495,71.35322265625001],[-86.58935546874997,71.01079101562507]]],[[[-100.00190429687497,73.9458984375],[-99.15795898437499,73.73159179687497],[-97.66997070312499,73.88774414062499],[-97.1705078125,73.82485351562497],[-97.001708984375,73.66650390625003],[-97.62587890624997,73.50229492187498],[-97.27250976562502,73.38681640624998],[-98.42177734375002,72.94101562500003],[-97.63632812499998,73.02763671874999],[-97.128125,72.62758789062502],[-96.59208984374996,72.71025390624999],[-96.44560546874996,72.55244140624998],[-96.80146484374998,72.32241210937502],[-96.61342773437494,71.83383789062506],[-97.58227539062497,71.62968750000005],[-98.18134765624998,71.66245117187503],[-98.32270507812501,71.85234375000002],[-98.19863281249994,71.44086914062501],[-98.66289062499993,71.302099609375],[-99.22363281249996,71.387109375],[-100.594482421875,72.15234375000003],[-101.20854492187495,72.31699218749998],[-101.72392578124996,72.31489257812501],[-102.70874023437496,72.76450195312503],[-102.20400390624998,73.077294921875],[-101.27319335937497,72.7216796875],[-100.48476562500002,72.77294921874997],[-100.395703125,72.97700195312498],[-100.128125,72.90668945312495],[-100.53637695312497,73.19785156250003],[-99.82514648437503,73.2138671875],[-100.36611328125001,73.359033203125],[-100.88935546875003,73.27534179687501],[-101.52319335937501,73.48637695312502],[-100.97578124999995,73.59975585937502],[-100.5216796875,73.44931640625],[-100.96298828125002,73.79140625],[-99.99111328125,73.79516601562503],[-100.00190429687497,73.9458984375]]],[[[-98.270361328125,73.86850585937498],[-98.97392578124997,73.81206054687502],[-99.4169921875,73.89541015625002],[-97.69824218749997,74.10869140625005],[-98.270361328125,73.86850585937498]]],[[[-93.17084960937498,74.16098632812506],[-92.22270507812502,73.97236328124998],[-90.62744140625,73.95170898437505],[-90.38139648437496,73.82475585937502],[-92.11791992187497,72.75380859375],[-94.21132812499997,72.75693359375],[-93.77055664062496,72.66821289062506],[-93.55517578124994,72.42114257812497],[-94.03754882812498,72.02875976562498],[-95.00786132812496,72.01279296875],[-95.60214843749998,72.88447265624995],[-95.63291015625003,73.69545898437497],[-94.697607421875,73.66357421874997],[-95.134130859375,73.88125],[-94.97353515625,74.04140625000002],[-93.17084960937498,74.16098632812506]]],[[[-119.73632812499997,74.11264648437498],[-119.20595703125002,74.19799804687503],[-119.11796874999995,74.01552734375],[-118.54399414062499,74.24462890625003],[-117.51484375000001,74.23173828124999],[-115.51069335937501,73.61875],[-115.446875,73.43886718750002],[-118.96157226562497,72.68413085937499],[-119.51284179687501,72.30268554687501],[-120.17988281250001,72.21264648437506],[-120.61933593750001,71.50576171875002],[-121.47216796875003,71.38901367187503],[-121.74936523437502,71.44477539062501],[-123.09565429687503,71.09379882812502],[-124.00776367187494,71.67744140624998],[-125.29667968749999,71.973046875],[-125.84531250000002,71.978662109375],[-123.79726562499997,73.76816406250003],[-124.69624023437497,74.34819335937499],[-121.50415039062497,74.54511718749998],[-119.56264648437494,74.23281250000002],[-119.73632812499997,74.11264648437498]]],[[[-97.35551757812496,74.52631835937495],[-97.75,74.51054687500005],[-97.41650390624994,74.62656250000003],[-97.35551757812496,74.52631835937495]]],[[[-95.306640625,74.50541992187505],[-95.850732421875,74.58247070312504],[-95.51020507812498,74.63676757812499],[-95.306640625,74.50541992187505]]],[[[-104.11992187499995,75.03632812500004],[-104.88740234374998,75.14775390624999],[-104.34619140624996,75.42993164062503],[-103.64350585937497,75.18657226562499],[-104.11992187499995,75.03632812500004]]],[[[-93.54257812499995,75.0279296875],[-93.57309570312495,74.66884765625005],[-94.53452148437498,74.63671874999997],[-96.59960937499997,75.03178710937499],[-95.95463867187493,75.44379882812501],[-94.878173828125,75.63002929687502],[-93.90908203125002,75.42250976562502],[-93.54257812499995,75.0279296875]]],[[[-96.07856445312495,75.510107421875],[-96.91513671875003,75.37968749999999],[-96.98281249999997,75.50981445312505],[-96.367822265625,75.65463867187506],[-96.07856445312495,75.510107421875]]],[[[-94.52656249999995,75.74931640624999],[-94.901220703125,75.93076171875],[-94.53789062499996,75.99643554687506],[-94.52656249999995,75.74931640624999]]],[[[-118.328125,75.57968749999998],[-118.81713867187503,75.52211914062497],[-119.39458007812499,75.617333984375],[-117.63369140624998,76.11508789062498],[-118.328125,75.57968749999998]]],[[[-79.0630859375,75.92587890624998],[-79.63876953124995,75.84291992187505],[-79.00932617187499,76.14589843750005],[-79.0630859375,75.92587890624998]]],[[[-102.22734374999995,76.014892578125],[-102.00800781250003,75.93940429687498],[-102.57958984375003,75.78022460937498],[-103.31474609374996,75.76420898437499],[-103.04150390624999,75.91884765624997],[-103.98525390624997,75.93310546875003],[-103.80078124999994,76.03701171874997],[-104.24248046874996,76.04697265625006],[-104.35063476562497,76.18232421875001],[-102.72802734374999,76.30703125],[-102.22734374999995,76.014892578125]]],[[[-104.02285156249998,76.58310546875003],[-103.05131835937495,76.44985351562497],[-103.31137695312499,76.34755859375],[-104.35751953124995,76.33461914062502],[-104.58569335937499,76.60649414062499],[-104.07451171875003,76.66611328124998],[-104.02285156249998,76.58310546875003]]],[[[-97.70092773437497,76.46650390624998],[-97.89052734374997,75.7603515625],[-97.40751953124999,75.67250976562497],[-97.33603515624998,75.41982421875],[-97.65332031249997,75.50776367187498],[-97.87822265624996,75.41611328125003],[-97.67431640624997,75.127294921875],[-98.04531249999997,75.20083007812497],[-98.12094726562503,75.03271484375],[-100.234375,75.00771484374997],[-100.48349609374995,75.18842773437501],[-100.14570312499995,75.24614257812505],[-100.71191406250003,75.40634765625],[-99.19458007812499,75.698388671875],[-102.58740234375001,75.51367187500003],[-102.79750976562501,75.59965820312505],[-102.14472656249998,75.87504882812502],[-100.97280273437498,75.79843750000003],[-101.414990234375,75.84584960937502],[-101.87211914062496,76.08310546875003],[-101.52895507812495,76.21728515625003],[-102.1046875,76.33120117187505],[-101.41518554687495,76.42490234375003],[-99.86547851562499,75.92421875],[-100.11284179687502,76.11723632812507],[-99.54106445312497,76.14628906250005],[-100.41420898437495,76.242529296875],[-99.97773437500003,76.31245117187495],[-100.82973632812497,76.52387695312495],[-99.8140625,76.6322265625],[-98.89033203125,76.46557617187497],[-98.71083984374994,76.69384765625003],[-97.70092773437497,76.46650390624998]]],[[[-101.22612304687497,76.57934570312497],[-101.61308593749995,76.60458984375006],[-100.26914062499998,76.73413085937497],[-101.22612304687497,76.57934570312497]]],[[[-108.29238281250001,76.05712890625],[-107.72348632812502,75.99541015625002],[-108.020703125,75.80478515625],[-107.21621093749997,75.89155273437501],[-106.91352539062503,75.67963867187501],[-106.67700195312499,76.02373046875002],[-105.63266601562493,75.94536132812505],[-105.51948242187497,75.63237304687505],[-106.09262695312495,75.08945312500003],[-107.15341796874996,74.9271484375],[-108.47475585937495,74.94721679687501],[-108.83129882812501,75.06489257812498],[-112.51933593749997,74.41684570312503],[-113.67158203124997,74.45302734375005],[-114.31269531250003,74.71508789062506],[-112.835986328125,74.9755859375],[-111.67109375,75.01943359374997],[-111.09345703125001,75.25629882812498],[-113.71176757812499,75.06860351562503],[-113.85332031249996,75.259375],[-113.46708984374996,75.41611328125003],[-114.01650390624998,75.43427734375001],[-114.16845703124994,75.23950195312503],[-114.51381835937497,75.27548828125],[-114.45175781250002,75.08789062499997],[-115.02011718749999,74.97617187500003],[-115.41318359374995,75.11499023437497],[-115.72885742187496,74.968115234375],[-116.47607421874996,75.17177734375],[-117.56523437499997,75.23334960937504],[-117.25761718750002,75.45952148437502],[-116.07714843749996,75.49296874999999],[-115.14184570312501,75.67851562500005],[-116.42563476562498,75.58535156249997],[-117.16362304687496,75.64487304687503],[-116.80214843749995,75.77158203124998],[-114.99150390625002,75.896337890625],[-116.66455078124999,75.95756835937505],[-116.20986328125,76.19443359374998],[-114.77861328124999,76.17260742187497],[-115.82216796874997,76.27001953125003],[-114.99848632812503,76.4974609375],[-114.19394531249999,76.45146484375005],[-113.82348632812501,76.20683593750002],[-112.69760742187496,76.20170898437505],[-111.05268554687495,75.54853515625001],[-108.94716796875,75.54179687499999],[-108.94477539062495,75.69897460937503],[-109.8705078125,75.929052734375],[-109.48681640624999,76.14467773437497],[-110.31445312500001,76.369384765625],[-109.09824218749996,76.811865234375],[-108.46699218749997,76.73759765625007],[-108.29238281250001,76.05712890625]]],[[[-89.72646484374994,76.50742187499998],[-90.55625,76.73457031249998],[-90.13632812499995,76.83696289062505],[-89.69541015625,76.74116210937498],[-89.72646484374994,76.50742187499998]]],[[[-113.56069335937494,76.74326171874998],[-114.83525390624999,76.79467773437497],[-113.89165039062495,76.89487304687503],[-113.56069335937494,76.74326171874998]]],[[[-94.29497070312493,76.91245117187498],[-93.23002929687496,76.77026367187497],[-93.53457031250002,76.44770507812498],[-92.99536132812494,76.62041015624999],[-91.305029296875,76.68076171875003],[-90.54262695312494,76.495751953125],[-91.41508789062496,76.45585937500005],[-89.28452148437498,76.30161132812506],[-89.40659179687498,76.18916015624998],[-91.40732421874998,76.22006835937506],[-89.27758789062497,75.79506835937497],[-89.64604492187499,75.5650390625],[-88.91669921874998,75.45395507812503],[-88.64497070312495,75.65844726562503],[-88.201318359375,75.51201171875005],[-87.72973632812503,75.57563476562495],[-87.53911132812502,75.48486328125003],[-87.25693359374998,75.61772460937499],[-85.95146484374993,75.39501953125],[-85.97299804687498,75.5287109375],[-83.931982421875,75.81894531250003],[-83.23710937499993,75.75083007812503],[-82.153662109375,75.83105468750003],[-80.32197265624998,75.62910156250001],[-79.50908203125002,75.25981445312499],[-80.38198242187494,75.03417968750003],[-79.40141601562502,74.91762695312502],[-79.944482421875,74.83364257812505],[-80.34775390624998,74.90297851562505],[-80.26274414062499,74.58447265625],[-81.94018554687494,74.47270507812505],[-82.73579101562495,74.53027343749997],[-83.5220703125,74.90146484375],[-83.53188476562494,74.58569335937497],[-84.42553710937503,74.50810546875007],[-85.06142578125,74.60693359375003],[-85.133447265625,74.517431640625],[-85.44233398437495,74.6005859375],[-85.80800781249994,74.49897460937498],[-88.42304687499995,74.49414062499997],[-88.53496093749993,74.83173828125001],[-89.55869140624995,74.55473632812507],[-90.55327148437499,74.61274414062498],[-90.88022460937498,74.8177734375],[-91.13457031250002,74.64985351562498],[-91.54912109375002,74.65556640624999],[-92.3892578125,75.263330078125],[-92.18510742187499,75.84653320312498],[-93.09174804687495,76.35400390624997],[-95.27387695312498,76.26440429687503],[-96.03969726562494,76.48671875000002],[-95.65097656249998,76.58466796874998],[-96.88071289062495,76.73833007812505],[-96.40156249999995,76.79721679687503],[-96.75830078124997,76.97177734374998],[-95.84951171875002,77.06621093750005],[-94.29497070312493,76.91245117187498]]],[[[-115.55126953125001,77.36328125],[-116.32919921874996,77.137060546875],[-115.81005859374999,76.939111328125],[-116.25273437500002,76.90141601562505],[-115.94628906250003,76.71127929687503],[-116.99921874999995,76.531591796875],[-117.23359375000001,76.28154296875005],[-117.99296874999999,76.40581054687505],[-117.88081054687497,76.80507812500005],[-118.79140624999994,76.51298828125005],[-119.080712890625,76.12407226562505],[-119.58037109375,76.32651367187498],[-119.52612304687496,75.99721679687505],[-119.91289062499997,75.85883789062501],[-120.40888671874995,75.82563476562498],[-120.84838867187496,76.18266601562499],[-121.21347656249999,75.98369140625005],[-122.53305664062498,75.95092773437503],[-122.59272460937497,76.16206054687495],[-122.90278320312498,76.13471679687498],[-122.51938476562503,76.353173828125],[-121.56113281250003,76.453466796875],[-119.09018554687496,77.30507812500002],[-116.84355468749995,77.33955078124995],[-117.03974609374995,77.46513671875005],[-116.51132812500003,77.54760742187497],[-115.55126953125001,77.36328125]]],[[[-89.83325195312503,77.26762695312505],[-90.22827148437503,77.21245117187499],[-90.99321289062499,77.32949218750002],[-91.01904296875003,77.64389648437503],[-89.83896484375003,77.49140624999998],[-89.83325195312503,77.26762695312505]]],[[[-104.55815429687497,77.14174804687497],[-105.21508789062496,77.18208007812501],[-106.03559570312495,77.73984375000006],[-105.58789062499997,77.73598632812497],[-104.54223632812501,77.33774414062503],[-104.55815429687497,77.14174804687497]]],[[[-95.484375,77.79199218750003],[-93.30097656249995,77.73979492187505],[-93.54394531249997,77.466650390625],[-95.98706054687497,77.484130859375],[-96.19458007812497,77.70053710937503],[-95.484375,77.79199218750003]]],[[[-101.6935546875,77.69658203125005],[-102.37783203124995,77.728125],[-102.44770507812498,77.88061523437506],[-101.19321289062493,77.82978515624998],[-101.00205078124998,77.73510742187497],[-101.6935546875,77.69658203125005]]],[[[-113.83247070312497,77.75463867187506],[-114.28720703124998,77.72148437500005],[-114.98041992187498,77.91542968750002],[-114.33037109374997,78.07753906250002],[-113.83247070312497,77.75463867187506]]],[[[-110.45805664062496,78.10322265625001],[-109.62226562499995,78.07475585937499],[-110.865625,77.834130859375],[-110.15273437500002,77.76293945312506],[-110.19848632812501,77.52451171874998],[-112.37265625000002,77.36411132812498],[-113.16435546875002,77.5302734375],[-113.21518554687498,77.90351562500001],[-110.45805664062496,78.10322265625001]]],[[[-109.81596679687499,78.65039062500003],[-109.48447265624995,78.31640625],[-111.16918945312499,78.38627929687505],[-111.51748046874997,78.27470703125005],[-112.13125,78.366064453125],[-113.22304687499998,78.29790039062505],[-112.85585937499997,78.46684570312502],[-110.877587890625,78.73505859375004],[-109.81596679687499,78.65039062500003]]],[[[-96.20449218749994,78.53129882812499],[-94.91538085937495,78.39052734375002],[-95.32924804687497,78.22504882812495],[-94.93427734374998,78.07563476562498],[-96.98964843749994,77.80600585937503],[-97.65815429687498,78.090625],[-96.944677734375,78.15185546874997],[-98.04951171874995,78.325927734375],[-98.33261718749998,78.77353515625006],[-97.38232421875,78.78291015625001],[-96.20449218749994,78.53129882812499]]],[[[-103.42602539062499,79.315625],[-102.57617187499996,78.87939453125003],[-101.70366210937502,79.07890625000002],[-101.128125,78.80166015625002],[-100.43549804687503,78.8203125],[-99.60942382812495,78.58305664062507],[-99.16640625000002,77.85693359375003],[-100.27465820312503,77.83271484374995],[-101.07412109375001,78.19384765625],[-102.60698242187502,78.24892578125002],[-102.73134765624995,78.37104492187495],[-103.94658203124999,78.26000976562497],[-104.76357421874998,78.35166015625],[-104.90961914062498,78.55263671875],[-103.57050781250003,78.53984375000005],[-104.02084960937502,78.63491210937497],[-103.37158203125,78.73632812500003],[-104.18500976562498,78.78129882812505],[-104.15195312499999,78.989892578125],[-104.89550781249996,78.80815429687502],[-104.74677734375003,79.02709960937503],[-105.53564453124999,79.03251953125007],[-105.51455078124995,79.24248046875002],[-105.38769531249994,79.32358398437503],[-103.42602539062499,79.315625]]],[[[-98.79160156249995,79.98110351562505],[-98.94521484375,79.72407226562498],[-100.05683593749997,79.89824218750005],[-100.05327148437496,80.093359375],[-99.15322265625001,80.12421874999998],[-98.79160156249995,79.98110351562505]]],[[[-91.88554687499999,81.13286132812505],[-90.64301757812498,80.59370117187498],[-89.23559570312494,80.51064453125002],[-88.85732421874997,80.16621093750001],[-88.19990234374998,80.11147460937497],[-88.5248046875,80.41801757812507],[-87.675,80.37211914062505],[-87.92231445312501,80.09770507812499],[-86.97719726562502,79.89423828125001],[-87.29516601562494,79.58017578124998],[-86.33696289062496,79.63496093749995],[-86.00703124999998,79.47944335937498],[-85.6478515625,79.61142578125006],[-85.04213867187497,79.2845703125],[-86.95717773437502,78.97490234375005],[-87.61738281249995,78.67631835937505],[-88.04018554687494,78.99531250000004],[-87.98286132812498,78.53706054687501],[-88.74160156250002,78.58403320312499],[-88.82241210937497,78.18588867187498],[-90.037109375,78.60683593750002],[-89.52568359374999,78.15961914062495],[-90.29721679687495,78.32802734374997],[-90.614404296875,78.14985351562501],[-92.35126953125001,78.312890625],[-92.8482421875,78.46010742187497],[-91.86689453124998,78.54267578125001],[-93.26660156249997,78.60830078124997],[-93.63442382812502,78.75092773437498],[-93.15986328124998,78.77563476562503],[-94.11459960937498,78.92890625000001],[-92.54721679687495,79.28261718750002],[-91.29990234375003,79.372705078125],[-92.82192382812497,79.44990234375001],[-93.93315429687496,79.29072265624998],[-94.11030273437498,79.40156250000001],[-95.10317382812502,79.289892578125],[-95.66289062500002,79.52734374999997],[-94.40185546874997,79.736328125],[-95.73935546874995,79.66015625000003],[-96.58906249999995,79.91665039062497],[-96.77324218749999,80.13579101562502],[-94.64589843749994,80.04873046874997],[-94.26259765625002,80.19487304687499],[-95.40507812499996,80.13500976562506],[-96.39409179687493,80.31503906250003],[-95.549072265625,80.36660156249997],[-95.92695312499998,80.72065429687498],[-93.92792968749995,80.55917968750003],[-95.51474609375003,80.83813476562503],[-94.98051757812499,81.04965820312503],[-93.28671874999998,81.10029296874998],[-94.22011718749997,81.33076171875004],[-93.03466796874997,81.3462890625],[-91.88554687499999,81.13286132812505]]],[[[-69.4888671875,83.01679687499998],[-66.42255859374998,82.92685546875003],[-68.46933593749995,82.65336914062502],[-65.29902343749995,82.79960937500005],[-64.98388671874997,82.90229492187501],[-64.50400390625,82.77841796874998],[-63.641015624999966,82.81259765625003],[-63.246777343749926,82.4501953125],[-62.47519531249995,82.51958007812502],[-61.392480468749994,82.44189453125],[-61.61538085937502,82.18442382812503],[-64.43579101562497,81.74262695312501],[-66.62573242187497,81.61640624999995],[-68.68852539062493,81.29331054687503],[-64.78007812499993,81.49287109375001],[-69.55068359375,80.38325195312498],[-70.71259765625001,80.53959960937505],[-70.264892578125,80.23359374999998],[-72.05595703124996,80.12324218749995],[-70.56840820312493,80.09370117187498],[-71.387841796875,79.76176757812505],[-72.43652343750003,79.69438476562499],[-74.39448242187495,79.87407226562499],[-73.47246093749996,79.7564453125],[-73.36152343750001,79.50400390625],[-75.50341796875,79.41416015625],[-76.898828125,79.5123046875],[-75.60273437499998,79.23955078125005],[-74.48120117187503,79.22949218750006],[-74.64091796874996,79.03554687499997],[-78.58164062499998,79.075],[-77.88276367187498,78.9423828125],[-76.255859375,79.00683593749997],[-74.486328125,78.75009765624998],[-74.87861328124998,78.54482421875],[-76.41611328124995,78.51152343750005],[-75.19345703125,78.327734375],[-75.86596679687497,78.00981445312499],[-78.01259765624997,77.94604492187506],[-78.07617187500003,77.51904296875],[-78.70849609374997,77.34213867187503],[-80.57304687499996,77.31479492187506],[-81.65908203124997,77.52543945312499],[-81.3013671875,77.34404296875007],[-82.056787109375,77.29653320312497],[-81.75634765624997,77.20400390625005],[-79.49726562500001,77.19609375000005],[-78.97919921874998,76.89287109374999],[-78.28886718750002,76.97797851562501],[-77.98330078124994,76.75498046875006],[-78.284326171875,76.57124023437501],[-80.79970703124997,76.173583984375],[-80.97451171874994,76.470068359375],[-81.71738281250003,76.494970703125],[-82.52983398437499,76.723291015625],[-82.23315429687494,76.46582031250003],[-83.88569335937501,76.453125],[-84.22377929687497,76.67534179687499],[-84.27534179687498,76.35654296875006],[-85.141259765625,76.30458984375005],[-86.45371093750003,76.58486328125002],[-86.68022460937499,76.37661132812497],[-87.35419921874998,76.44804687500005],[-87.48979492187499,76.58583984374997],[-87.49755859374997,76.38627929687499],[-88.39599609374997,76.40527343750003],[-88.49584960937497,76.77285156249997],[-88.54580078125002,76.42089843750003],[-89.36962890624997,76.474462890625],[-89.49975585937503,76.82680664062502],[-88.39814453124995,77.10395507812501],[-86.81225585937497,77.18491210937498],[-87.68144531249996,77.43637695312503],[-88.01699218750002,77.78471679687505],[-86.75507812499998,77.86372070312498],[-85.58847656249998,77.46113281250004],[-84.73867187499997,77.36103515624998],[-83.72128906249998,77.41420898437497],[-82.7103515625,77.84951171875002],[-82.5953125,77.99213867187504],[-83.77939453125,77.53261718750002],[-85.28935546874996,77.55903320312498],[-85.54755859374998,77.92768554687495],[-84.61542968749998,78.19570312500002],[-84.22270507812499,78.176025390625],[-84.91035156249993,78.23969726562501],[-84.78320312499997,78.52758789062506],[-85.5859375,78.10957031249998],[-86.21777343750003,78.08120117187497],[-85.92006835937494,78.34287109374998],[-86.91323242187494,78.126806640625],[-87.5517578125,78.17661132812503],[-86.80791015624999,78.77436523437495],[-85.00375976562495,78.912255859375],[-83.27143554687501,78.77031250000002],[-81.75009765624995,78.97578124999995],[-82.43876953125002,78.903662109375],[-84.41201171875002,78.99658203125003],[-84.38359375000002,79.1185546875],[-83.57587890624995,79.05366210937501],[-86.42075195312498,79.84521484374997],[-86.49853515625003,80.25825195312501],[-83.72363281250003,80.22895507812501],[-81.68837890625,79.685791015625],[-80.47592773437498,79.60625],[-80.12446289062495,79.66948242187507],[-81.01015625000002,79.693115234375],[-82.98701171874995,80.32260742187498],[-76.86298828124995,80.86479492187505],[-78.71621093749994,80.95166015624997],[-76.88510742187503,81.43027343750006],[-81.00703125000001,80.6548828125],[-82.88432617187502,80.57753906249997],[-82.22236328124998,80.77231445312503],[-84.41782226562495,80.52675781250002],[-86.250341796875,80.56577148437506],[-86.60307617187499,80.66401367187498],[-85.63930664062494,80.92460937500007],[-83.288818359375,81.14794921875],[-85.780859375,81.03505859375],[-87.32988281250002,80.669775390625],[-88.00366210937497,80.675390625],[-89.16689453125,80.94130859375],[-86.47675781249993,81.03574218750006],[-84.94121093750002,81.28623046875],[-87.27509765624995,81.080810546875],[-89.623046875,81.032470703125],[-89.94731445312499,81.17265625000005],[-89.20869140624998,81.25009765625003],[-89.67368164062503,81.32861328125003],[-87.59702148437498,81.52583007812498],[-88.47905273437502,81.56464843749998],[-90.41630859374996,81.40537109375003],[-89.82167968749997,81.63486328124998],[-91.29238281250002,81.57124023437498],[-91.64755859374998,81.68383789062503],[-88.06318359375001,82.09648437500007],[-87.01821289062502,81.95874023437497],[-86.62680664062495,82.05102539062503],[-85.04482421874997,81.9828125],[-86.615625,82.21855468750007],[-84.89682617187503,82.44941406250001],[-82.63369140625002,82.07729492187497],[-82.53691406250002,82.24726562499995],[-79.465625,81.85112304687499],[-82.44755859374993,82.39501953125003],[-81.68115234375003,82.51865234375],[-82.11684570312497,82.62866210937503],[-80.8625,82.57153320312503],[-81.01015625000002,82.77905273437503],[-78.748779296875,82.67939453124998],[-80.15493164062497,82.91113281250003],[-77.61806640624997,82.89584960937503],[-76.009375,82.53515625],[-75.565625,82.60854492187502],[-77.12490234374994,83.00854492187497],[-74.41416015624995,83.01313476562501],[-72.65869140625,82.72163085937495],[-73.44189453124994,82.90483398437499],[-72.811669921875,83.08120117187502],[-71.98320312499996,83.10141601562498],[-70.94038085937495,82.90224609375],[-71.08481445312498,83.08266601562497],[-69.96992187499995,83.11611328125005],[-69.4888671875,83.01679687499998]]]]},"properties":{"name":"Canada","childNum":110}},{"geometry":{"type":"Polygon","coordinates":[[[9.527658197470123,47.27026989773668],[9.46249431093294,47.19858962254578],[9.46249431093294,47.09010747968864],[9.409458596647225,47.02019676540292],[9.579979133936737,47.05856388629306],[9.580273437500011,47.057373046875],[10.133496093750011,46.851513671875],[10.349414062500017,46.98476562499999],[10.414941406250023,46.964404296874996],[10.45458984375,46.8994140625],[10.452832031250011,46.86494140625],[10.406054687500017,46.73486328125],[10.39794921875,46.6650390625],[10.4306640625,46.550048828125],[10.195507812500011,46.62109375],[10.1375,46.61435546875],[10.087011718750006,46.599902343749996],[10.061230468750011,46.546777343749994],[10.038281250000011,46.483203125],[10.045605468750011,46.447900390624994],[10.081933593750023,46.420751953125],[10.109667968750017,46.362841796874996],[10.128320312500023,46.238232421875],[10.08056640625,46.227978515625],[10.041015625,46.238085937499996],[9.939257812500017,46.36181640625],[9.884472656250011,46.3677734375],[9.787792968750011,46.346044921875],[9.639453125000017,46.2958984375],[9.57958984375,46.29609375],[9.528710937500023,46.306201171874996],[9.427636718750023,46.482324218749994],[9.399316406250023,46.4806640625],[9.304394531250011,46.495556640625],[9.203417968750017,46.21923828125],[9.11874162946429,46.014892578125],[8.97551618303573,45.81677455357143],[8.74961495535715,46.02246372767857],[8.818554687500011,46.0771484375],[8.458398437500023,46.245898437499996],[8.370703125,46.445117187499996],[8.298535156250011,46.40341796875],[8.23193359375,46.341210937499994],[8.08154296875,46.256005859374994],[7.9931640625,46.015917968749996],[7.327929687500017,45.912353515625],[7.129003906250006,45.880419921874996],[7.055761718750006,45.90380859375],[7.02109375,45.92578125],[6.953710937500006,46.017138671874996],[6.897265625000017,46.0517578125],[6.772070312500006,46.16513671875],[6.758105468750017,46.415771484375],[6.578222656250006,46.437353515625],[6.428906250000011,46.430517578125],[6.321875,46.393701171874994],[6.234667968750017,46.3326171875],[6.199414062500011,46.19306640625],[6.086621093750011,46.147021484374996],[6.006640625000017,46.142333984375],[5.971484375000017,46.151220703125],[5.970019531250017,46.214697265625],[6.0361328125,46.238085937499996],[6.095898437500011,46.27939453125],[6.129687500000017,46.5669921875],[6.41015625,46.755419921874996],[6.429003906250017,46.832275390625],[6.45625,46.94833984375],[6.624804687500017,47.004345703125],[6.666894531250023,47.026513671874994],[6.688085937500006,47.058251953124994],[6.820703125000023,47.16318359375],[6.952050781250023,47.2671875],[6.978515625,47.302050781249996],[7.000585937500006,47.322509765625],[7.000585937500006,47.339453125],[6.900390625,47.39423828125],[6.968359375,47.45322265625],[7.136035156250017,47.48984375],[7.343164062500023,47.43310546875],[7.615625,47.592724609375],[8.454003906250023,47.59619140625],[8.559472656250023,47.6240234375],[8.570507812500011,47.63779296875],[8.567089843750011,47.651904296874996],[8.55234375,47.659130859375],[8.451757812500006,47.651806640625],[8.413281250000011,47.6626953125],[8.403417968750006,47.687792968749996],[8.435742187500011,47.731347656249994],[8.572656250000023,47.775634765625],[9.524023437500006,47.52421875],[9.625878906250023,47.467041015625],[9.527539062500011,47.270751953125],[9.527658197470123,47.27026989773668]]]},"properties":{"name":"Switzerland","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-67.28886718749999,-55.776855468749964],[-67.55996093749997,-55.72480468750002],[-67.39736328124997,-55.58515625],[-67.28886718749999,-55.776855468749964]]],[[[-67.07993164062498,-55.15380859374996],[-67.33969726562495,-55.292578124999984],[-67.4947265625,-55.177441406249976],[-68.07001953124995,-55.22109374999999],[-68.30136718750003,-54.98066406250003],[-67.245263671875,-54.977636718750034],[-67.07993164062498,-55.15380859374996]]],[[[-69.70297851562503,-54.91904296875],[-68.90078125000002,-55.01777343750004],[-68.45800781249997,-54.95966796875002],[-68.61328124999997,-55.155566406250045],[-68.28266601562495,-55.25517578125],[-68.04833984375,-55.6431640625],[-68.86704101562498,-55.45019531250003],[-68.89008789062498,-55.2412109375],[-69.19262695312497,-55.171875],[-69.35922851562498,-55.300683593749945],[-69.18085937499995,-55.47480468749998],[-69.41181640624995,-55.44423828124997],[-69.97978515625002,-55.14746093749999],[-69.88442382812494,-54.88203125000001],[-69.70297851562503,-54.91904296875]]],[[[-70.9916015625,-54.86796874999999],[-70.80483398437497,-54.96767578124996],[-70.41752929687493,-54.908886718749976],[-70.29785156249997,-55.11376953124997],[-70.47558593749994,-55.17705078124998],[-71.43720703125001,-54.88925781249997],[-70.9916015625,-54.86796874999999]]],[[[-71.390478515625,-54.03281250000002],[-71.02192382812495,-54.111816406250036],[-71.14326171874998,-54.374023437499986],[-71.473291015625,-54.23115234375001],[-71.94853515624999,-54.300878906250006],[-72.21044921874997,-54.04775390624995],[-71.996484375,-53.884863281249984],[-71.390478515625,-54.03281250000002]]],[[[-72.92324218749997,-53.481640625],[-72.88222656249997,-53.578320312499976],[-72.48227539062503,-53.58808593750001],[-72.20541992187503,-53.80742187500002],[-72.408544921875,-54.00380859374997],[-72.87099609375,-54.12656250000002],[-72.76376953125,-53.86484375],[-73.03945312499994,-53.83281250000004],[-73.08076171875001,-53.99804687499995],[-73.21064453125001,-53.98583984374995],[-73.31435546875,-53.72919921874998],[-73.845458984375,-53.54580078125001],[-73.44707031249993,-53.41005859374998],[-72.92324218749997,-53.481640625]]],[[[-74.38574218749994,-52.92236328125001],[-73.65400390624998,-53.06982421875003],[-73.13520507812498,-53.35390625],[-73.56728515625,-53.3068359375],[-73.86694335937494,-53.096875],[-74.27021484374995,-53.08154296875002],[-74.71201171874998,-52.74873046874998],[-74.38574218749994,-52.92236328125001]]],[[[-68.62993164062499,-52.65263671875004],[-68.65322265624994,-54.85361328124999],[-69.48627929687493,-54.85888671875],[-69.72343750000002,-54.71210937500003],[-70.49716796875,-54.80957031249999],[-71.83154296874997,-54.62617187500002],[-71.92773437500003,-54.52871093749997],[-71.80014648437498,-54.433984374999945],[-71.07993164062498,-54.444238281249994],[-70.79726562500002,-54.32724609374996],[-70.70112304687498,-54.48544921875004],[-70.31098632812498,-54.52851562500002],[-70.86308593749993,-54.11044921875003],[-70.86772460937499,-53.88417968750002],[-70.53129882812502,-53.627343750000016],[-70.37973632812495,-53.98671874999995],[-70.62983398437493,-54.005566406249976],[-70.53530273437494,-54.136132812500016],[-70.16899414062502,-54.37929687499999],[-69.74184570312494,-54.30585937500005],[-69.25317382812494,-54.557421875000045],[-69.04433593749997,-54.40673828124999],[-69.98813476562503,-54.10908203125001],[-70.15112304687503,-53.88808593750002],[-70.09111328124996,-53.72177734374998],[-69.35595703125003,-53.41630859375001],[-69.63701171874999,-53.33408203125004],[-70.32929687499998,-53.37763671875003],[-70.44335937499994,-53.085546875000034],[-70.130615234375,-52.942773437499994],[-70.38012695312494,-52.75195312500002],[-69.93544921874997,-52.82109374999998],[-69.41406249999997,-52.48623046874997],[-69.16704101562499,-52.66757812499997],[-68.78979492187497,-52.576757812500034],[-68.62993164062499,-52.65263671875004]]],[[[-74.82294921874993,-51.63017578125001],[-74.53681640624998,-51.96513671875004],[-74.69448242187497,-52.27919921874999],[-74.85180664062494,-52.27070312500003],[-75.10537109375,-51.78886718750001],[-74.82294921874993,-51.63017578125001]]],[[[-74.55864257812499,-51.27705078125001],[-74.62036132812497,-51.395703125000026],[-75.04736328125,-51.39833984375003],[-75.28911132812496,-51.625390625000016],[-75.15366210937498,-51.278808593750014],[-74.73666992187503,-51.20761718749999],[-74.55864257812499,-51.27705078125001]]],[[[-75.302001953125,-50.67998046875005],[-75.411376953125,-50.76435546875001],[-75.42763671875002,-50.48056640625002],[-75.11533203124998,-50.510449218749976],[-75.302001953125,-50.67998046875005]]],[[[-75.05478515625,-50.29609375],[-75.44912109374997,-50.34335937500004],[-75.32666015624997,-50.01181640625],[-74.8759765625,-50.10996093750001],[-75.05478515625,-50.29609375]]],[[[-75.106689453125,-48.83652343750001],[-75.38994140624999,-49.15917968750002],[-75.64116210937499,-49.195410156250034],[-75.48764648437498,-49.082421875000016],[-75.58310546874998,-48.85888671874995],[-75.106689453125,-48.83652343750001]]],[[[-74.47617187499998,-49.14785156250002],[-74.59472656249997,-50.00664062500001],[-74.76298828124996,-50.01142578125001],[-74.88041992187502,-49.72587890625001],[-74.72382812499998,-49.42382812500003],[-74.960107421875,-49.533007812499974],[-75.06601562499998,-49.85234375000002],[-75.54980468749994,-49.79130859375002],[-75.30585937499998,-49.49404296875003],[-75.46748046874995,-49.35888671875003],[-75.08603515624998,-49.27021484375],[-75.21015624999995,-49.14804687499998],[-74.94921875,-48.960156249999976],[-74.89624023437503,-48.73320312500002],[-74.54609374999993,-48.76689453125004],[-74.47617187499998,-49.14785156250002]]],[[[-75.51025390624997,-48.76347656250005],[-75.65092773437496,-48.58632812500002],[-75.57148437499993,-48.095898437500026],[-75.39140625000002,-48.01972656249997],[-75.15849609374999,-48.62265624999996],[-75.51025390624997,-48.76347656250005]]],[[[-74.56728515625,-48.591992187500026],[-74.92304687499998,-48.62646484375003],[-75.21289062499997,-48.141699218750034],[-75.19829101562502,-47.974609375000014],[-74.895654296875,-47.839355468749986],[-74.56728515625,-48.591992187500026]]],[[[-75.11220703124997,-47.8376953125],[-75.26103515625002,-47.76386718749998],[-74.92646484374998,-47.72314453125003],[-75.11220703124997,-47.8376953125]]],[[[-74.31289062500002,-45.69150390625002],[-74.46552734374995,-45.757226562499994],[-74.68984375,-45.66259765625],[-74.310546875,-45.17265625000002],[-74.31289062500002,-45.69150390625002]]],[[[-73.63217773437498,-44.82148437499997],[-73.81845703125,-44.65214843750002],[-73.72392578124993,-44.544238281249974],[-73.63217773437498,-44.82148437499997]]],[[[-72.98613281249999,-44.780078124999974],[-73.22846679687498,-44.85996093749999],[-73.39707031249998,-44.77431640624995],[-73.44506835937497,-44.641015624999966],[-73.20771484374993,-44.33496093749997],[-72.7763671875,-44.50859374999999],[-72.98613281249999,-44.780078124999974]]],[[[-73.73535156249997,-44.39453125000003],[-74.00205078125003,-44.59091796874998],[-73.728173828125,-45.195898437500034],[-74.016259765625,-45.344921875000026],[-74.61777343749998,-44.64794921874996],[-74.50180664062498,-44.47353515624995],[-74.09721679687496,-44.38935546875004],[-73.99492187499999,-44.140234375],[-73.70322265624998,-44.27412109375001],[-73.73535156249997,-44.39453125000003]]],[[[-73.81064453125003,-43.827246093750006],[-73.95566406249998,-43.921972656250034],[-74.14296874999997,-43.872167968750006],[-73.81064453125003,-43.827246093750006]]],[[[-73.77338867187498,-43.3458984375],[-74.114404296875,-43.35791015624996],[-74.387353515625,-43.231640625],[-74.03666992187496,-41.79550781249998],[-73.52783203124997,-41.89628906249999],[-73.42290039062499,-42.192871093750014],[-73.47080078124998,-42.46630859375004],[-73.78925781249993,-42.58574218750003],[-73.43632812499996,-42.9365234375],[-73.74965820312494,-43.15908203124995],[-73.77338867187498,-43.3458984375]]],[[[-78.80415039062501,-33.646484374999986],[-78.98945312499993,-33.66171874999998],[-78.87744140625003,-33.57519531250003],[-78.80415039062501,-33.646484374999986]]],[[[-109.27998046874994,-27.14042968749996],[-109.434130859375,-27.171289062500023],[-109.39047851562499,-27.068359375000014],[-109.27998046874994,-27.14042968749996]]],[[[-67.19487304687493,-22.821679687500037],[-67.00878906249994,-23.00136718750005],[-67.35620117187503,-24.033789062499963],[-68.25029296875002,-24.391992187500023],[-68.56201171875,-24.74736328125003],[-68.38422851562495,-25.091894531249977],[-68.59208984375002,-25.420019531250034],[-68.41450195312498,-26.153710937500023],[-68.59160156249999,-26.47041015624997],[-68.31865234374999,-26.973242187500006],[-68.59208984375002,-27.140039062499966],[-68.84633789062494,-27.153710937499994],[-69.17441406249998,-27.924707031250037],[-69.65693359374995,-28.413574218749986],[-69.82788085937497,-29.10322265624997],[-70.02680664062501,-29.324023437500017],[-69.95996093749997,-30.078320312500026],[-69.84428710937493,-30.175],[-69.95634765624996,-30.35820312500003],[-70.15322265625,-30.360937499999963],[-70.30908203124994,-31.02265625000004],[-70.51958007812493,-31.1484375],[-70.585205078125,-31.569433593749963],[-70.25439453125,-31.957714843750026],[-70.36376953125,-32.08349609374997],[-70.02197265625,-32.88457031250002],[-70.08486328125002,-33.20175781249998],[-69.81962890624999,-33.28378906249999],[-69.85244140625,-34.224316406250026],[-70.05205078124999,-34.30078124999997],[-70.39316406250003,-35.146875],[-70.55517578125,-35.246875],[-70.41572265625001,-35.52304687500002],[-70.40478515625,-36.06171874999998],[-71.05551757812498,-36.52373046874996],[-71.19218750000002,-36.84365234375004],[-71.16757812499998,-37.76230468749996],[-70.858642578125,-38.60449218750003],[-71.40156249999995,-38.93505859374996],[-71.53945312499997,-39.60244140624995],[-71.71992187499995,-39.63525390624997],[-71.65976562499998,-40.02080078125],[-71.81831054687493,-40.17666015624995],[-71.70898437499997,-40.381738281249994],[-71.93212890624994,-40.69169921874999],[-71.91127929687497,-41.650390624999986],[-71.75,-42.04677734375001],[-72.10820312499993,-42.25185546874995],[-72.14643554687498,-42.990039062499974],[-71.750634765625,-43.237304687499986],[-71.90498046875001,-43.34755859374998],[-71.68007812500002,-43.92958984374998],[-71.82001953124993,-44.38310546875],[-71.21259765624998,-44.44121093750003],[-71.15971679687496,-44.56025390625004],[-71.26113281250002,-44.763085937499966],[-72.06372070312503,-44.771875],[-72.04169921874998,-44.90419921875004],[-71.5962890625,-44.97919921875004],[-71.34931640624995,-45.33193359374995],[-71.74619140624998,-45.57890625],[-71.63154296874998,-45.95371093749998],[-71.87568359374998,-46.160546875],[-71.69965820312501,-46.6513671875],[-71.94023437499999,-46.83125],[-71.90498046875001,-47.201660156250014],[-72.34594726562497,-47.49267578124997],[-72.517919921875,-47.87636718749998],[-72.32832031250001,-48.11005859374998],[-72.35473632812497,-48.36582031250005],[-72.582861328125,-48.47539062499999],[-72.65126953125,-48.84160156249998],[-73.03364257812501,-49.014355468750004],[-73.13525390625,-49.30068359374999],[-73.46157226562497,-49.31386718750001],[-73.55419921875,-49.463867187500014],[-73.50126953124996,-50.125292968750024],[-73.15292968749998,-50.73828125000003],[-72.50981445312496,-50.607519531250034],[-72.34023437499997,-50.68183593749999],[-72.40766601562501,-51.54082031250002],[-71.91865234374995,-51.98955078125004],[-69.96025390624993,-52.00820312500002],[-68.443359375,-52.35664062500004],[-69.24101562499996,-52.20546874999997],[-69.62031249999995,-52.46474609374995],[-70.79511718749995,-52.76875],[-70.99584960937497,-53.77929687499997],[-71.29775390625002,-53.88339843750004],[-72.1744140625,-53.632324218749964],[-72.41289062500002,-53.35019531250004],[-71.94169921874993,-53.23408203125001],[-71.89169921874998,-53.523535156250006],[-71.79145507812498,-53.48457031249997],[-71.74052734374999,-53.232617187499976],[-71.28896484375002,-53.03369140624995],[-71.22714843750003,-52.810644531249984],[-71.38774414062496,-52.76425781250004],[-72.27802734374998,-53.13232421874997],[-72.54892578125,-53.4607421875],[-73.05273437499997,-53.24345703125005],[-72.72768554687502,-52.7623046875],[-72.453466796875,-52.814453124999964],[-72.11757812499997,-52.65],[-71.51127929687502,-52.60537109375],[-72.22568359374998,-52.52099609374995],[-72.43769531250001,-52.62578124999998],[-72.71210937499995,-52.53554687499999],[-73.12246093749997,-53.073925781249976],[-73.64521484374998,-52.83701171875003],[-73.2408203125,-52.707128906250034],[-73.12392578125,-52.487988281249976],[-73.24414062499997,-52.62402343749998],[-73.58569335937503,-52.68574218750003],[-74.01445312499999,-52.63935546875],[-74.26494140624993,-52.1048828125],[-73.83447265625,-52.23398437500001],[-73.68432617187494,-52.07773437499998],[-73.26044921874993,-52.157812500000034],[-72.79501953124998,-51.94951171875005],[-72.57084960937496,-52.200097656249945],[-72.67705078125002,-52.38466796874998],[-72.52333984374997,-52.255468750000034],[-72.62460937499998,-51.94648437499997],[-72.48964843750002,-51.76367187500003],[-72.76123046875,-51.57324218749996],[-73.16875,-51.45390624999998],[-72.60004882812495,-51.79912109374997],[-73.51816406250003,-52.04101562499996],[-73.75263671874993,-51.795507812500034],[-74.19667968749997,-51.68056640624997],[-73.92978515624995,-51.61787109374999],[-73.93950195312499,-51.26630859375005],[-74.81474609374996,-51.06289062499999],[-75.09467773437495,-50.68125],[-74.68574218749995,-50.662011718749945],[-74.77587890625003,-50.46992187499998],[-74.64448242187498,-50.360937499999984],[-74.365576171875,-50.487890625],[-74.13940429687503,-50.81777343749997],[-73.80654296875,-50.93837890625003],[-73.654443359375,-50.49267578125],[-73.97802734375003,-50.827050781249994],[-74.18559570312493,-50.485351562500014],[-73.95034179687497,-50.510546875],[-74.62958984374998,-50.19404296875],[-74.333740234375,-49.97460937499997],[-73.95859374999998,-49.994726562499984],[-74.32392578124995,-49.783398437500004],[-74.29082031249996,-49.604101562499984],[-73.83637695312493,-49.609375],[-74.09443359374993,-49.42968749999998],[-73.93496093749994,-49.02089843750001],[-74.2212890625,-49.500585937500034],[-74.36655273437503,-49.40048828124998],[-74.34101562499998,-48.59570312499998],[-74.00908203124996,-48.475],[-74.47441406249999,-48.46396484374996],[-74.58466796874998,-47.999023437500014],[-73.39106445312498,-48.14589843750001],[-73.60991210937499,-47.993945312500045],[-73.71586914062499,-47.65546875000001],[-73.94086914062498,-47.92939453125004],[-74.22705078124994,-47.96894531250001],[-74.654931640625,-47.702246093750034],[-74.5337890625,-47.567675781249974],[-74.24296874999999,-47.67929687499998],[-74.13408203125002,-47.590820312499986],[-74.48266601562497,-47.43046875],[-74.15839843749998,-47.18251953125002],[-74.31357421874998,-46.78818359374998],[-74.45419921875003,-46.76679687499997],[-74.51225585937496,-46.88515625000002],[-75.00595703125,-46.74111328124998],[-74.98417968750002,-46.51210937499995],[-75.54033203124999,-46.69873046874996],[-75.43037109374995,-46.93457031249996],[-75.70639648437498,-46.70527343749997],[-74.924462890625,-46.159667968750014],[-75.06669921874993,-45.874902343749994],[-74.15786132812497,-45.7671875],[-74.122705078125,-45.49619140625002],[-73.95717773437494,-45.40439453124998],[-73.825,-45.446875],[-74.01992187500002,-46.055859375],[-74.39296875,-46.21738281250005],[-73.96757812500002,-46.15410156250003],[-73.87871093749993,-45.846875],[-73.73525390624994,-45.81171875],[-73.70815429687502,-46.070312500000014],[-73.94863281249997,-46.533105468749966],[-73.845361328125,-46.56601562500002],[-73.59184570312493,-45.89912109375004],[-73.73076171874999,-45.47998046875],[-73.26621093749995,-45.346191406250014],[-72.933837890625,-45.45234374999997],[-73.44497070312497,-45.23818359374995],[-73.36245117187502,-44.97822265625001],[-72.73896484375001,-44.73417968750003],[-72.680078125,-44.59394531249997],[-72.66386718749999,-44.43642578124995],[-73.26508789062498,-44.16865234375001],[-73.22446289062498,-43.89794921875003],[-73.06879882812495,-43.86201171874998],[-72.99658203125,-43.63154296875001],[-73.07597656250002,-43.323632812499994],[-72.75800781249998,-43.039453125],[-72.84804687500002,-42.66914062499997],[-72.77392578125003,-42.505175781250045],[-72.63183593750003,-42.509667968749994],[-72.77324218749996,-42.257714843749994],[-72.63105468749995,-42.199804687500006],[-72.412353515625,-42.388183593750014],[-72.49941406249997,-41.98085937499999],[-72.82407226562503,-41.90878906249996],[-72.36040039062499,-41.64912109375],[-72.31826171875,-41.49902343749997],[-72.54238281250002,-41.690625],[-72.95283203124995,-41.51474609374998],[-73.24179687499995,-41.78085937500002],[-73.62402343750003,-41.77363281249997],[-73.73515625000002,-41.74248046875002],[-73.62392578125,-41.581347656250045],[-73.81074218749995,-41.51748046875001],[-73.96586914062493,-41.118261718750034],[-73.67099609375,-39.96318359374999],[-73.41040039062503,-39.78916015624998],[-73.22646484375002,-39.22441406250003],[-73.52021484375001,-38.509375],[-73.46479492187498,-38.04033203125003],[-73.66181640624998,-37.69853515625003],[-73.66240234375002,-37.341015625000026],[-73.60166015624998,-37.18847656250003],[-73.21596679687502,-37.16689453124998],[-73.11806640624997,-36.68837890625002],[-72.58735351562493,-35.759667968749994],[-72.62392578125002,-35.5857421875],[-72.22377929687494,-35.096191406250014],[-72.00283203124997,-34.16533203125],[-71.66435546875002,-33.65263671875],[-71.74296875,-33.09511718750001],[-71.45224609374998,-32.65957031250001],[-71.70893554687495,-30.62802734375002],[-71.66948242187499,-30.33037109374996],[-71.40039062499997,-30.142968749999966],[-71.31572265624996,-29.649707031250017],[-71.51923828124993,-28.926464843750026],[-71.30673828124998,-28.672460937499963],[-71.08652343749998,-27.814453124999957],[-70.92578125,-27.588671874999974],[-70.64658203124998,-26.329394531250017],[-70.71372070312498,-25.78417968749997],[-70.44536132812502,-25.17265624999999],[-70.57412109374994,-24.644335937500003],[-70.39233398437494,-23.565917968749957],[-70.59335937499995,-23.255468750000034],[-70.56318359374995,-23.057031250000023],[-70.33168945312494,-22.848632812500014],[-70.08002929687501,-21.356835937500037],[-70.19702148437494,-20.725390625],[-70.15742187499995,-19.70585937500003],[-70.41826171874999,-18.345605468750023],[-69.92636718749998,-18.206054687500014],[-69.80258789062498,-17.990234375000014],[-69.85209960937493,-17.70380859375001],[-69.68476562499995,-17.649804687500023],[-69.58642578125,-17.57324218749997],[-69.51093749999998,-17.50605468749997],[-69.31337890624997,-17.943164062500017],[-69.28232421875003,-17.96484375],[-69.09394531249993,-18.05048828125004],[-69.14545898437495,-18.14404296875],[-69.09228515624994,-18.28242187500004],[-69.02680664062493,-18.65625],[-68.97885742187503,-18.81298828125003],[-68.96831054687502,-18.967968749999983],[-68.85795898437499,-19.09335937500005],[-68.62055664062495,-19.29667968749999],[-68.54785156249997,-19.341113281249974],[-68.49199218749996,-19.381933593750034],[-68.47016601562495,-19.409960937499974],[-68.46289062499997,-19.43281250000001],[-68.57529296874998,-19.56015625000002],[-68.69829101562499,-19.721093750000037],[-68.69619140625,-19.74072265625003],[-68.57827148437494,-19.856542968750006],[-68.559375,-19.902343750000014],[-68.56069335937502,-19.96708984374996],[-68.75932617187499,-20.115527343750003],[-68.74516601562493,-20.45859375],[-68.48432617187498,-20.628417968749957],[-68.55825195312497,-20.90195312499999],[-68.197021484375,-21.30029296874997],[-68.18642578124997,-21.618554687499966],[-67.88173828124997,-22.493359375000026],[-67.87944335937496,-22.822949218750026],[-67.57993164062495,-22.89169921874999],[-67.36225585937493,-22.85517578125001],[-67.19487304687493,-22.821679687500037]]]]},"properties":{"name":"Chile","childNum":26}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[110.88876953125006,19.99194335937497],[111.01367187500003,19.65546875000001],[110.64091796875002,19.291210937499955],[110.45126953125012,18.747949218750023],[110.06738281249997,18.447558593750045],[109.51933593750007,18.21826171875003],[108.7015625,18.535253906250034],[108.66552734375003,19.304101562499994],[109.27666015625002,19.761132812500023],[109.17744140625004,19.768457031250023],[109.26347656250007,19.882666015625006],[110.1715820312501,20.053710937500057],[110.58818359375002,19.976367187500017],[110.6517578125,20.137744140625017],[110.88876953125006,19.99194335937497]]],[[[110.38515625000005,21.093164062499966],[110.52158203125006,21.083105468750063],[110.50390625000003,20.96772460937501],[110.28095703125004,21.001171874999983],[110.38515625000005,21.093164062499966]]],[[[112.64375,21.63964843750003],[112.525,21.62304687500003],[112.64765625000004,21.710253906250017],[112.64375,21.63964843750003]]],[[[112.79023437500004,21.601855468750045],[112.78203125000007,21.772265625000045],[112.86259765625002,21.75263671875004],[112.79023437500004,21.601855468750045]]],[[[118.1830078125,24.496289062499983],[118.0905273437501,24.446142578125063],[118.10380859375002,24.552343750000034],[118.1830078125,24.496289062499983]]],[[[119.82089843750006,25.45698242187504],[119.70029296875012,25.432714843750063],[119.72255859375005,25.638818359375023],[119.83837890625003,25.591064453125],[119.82089843750006,25.45698242187504]]],[[[121.2513671875,28.086425781250057],[121.13154296875004,28.062597656250006],[121.20546875,28.204394531250017],[121.2513671875,28.086425781250057]]],[[[122.29589843750003,29.96342773437499],[122.02402343750012,30.01333007812505],[121.96943359375004,30.143115234375017],[122.28447265625007,30.068017578124994],[122.29589843750003,29.96342773437499]]],[[[121.86269531250005,31.492285156249977],[121.519921875,31.549609375000017],[121.2111328125001,31.80537109375001],[121.86269531250005,31.492285156249977]]],[[[130.52695312500012,42.535400390625],[130.24667968750012,42.744824218749955],[130.24033203125006,42.891796874999955],[129.89824218750002,42.998144531250034],[129.69785156250012,42.448144531249994],[129.3136718750001,42.41357421874997],[128.92343750000006,42.038232421874966],[128.04521484375007,41.9875],[128.28925781250004,41.60742187500006],[128.14941406249997,41.38774414062496],[127.17968750000003,41.531347656250006],[126.95478515625004,41.76948242187501],[126.74306640625,41.724853515625],[125.98906250000002,40.904638671875034],[124.8893554687501,40.459814453125006],[124.36210937500002,40.004052734374994],[124.10576171875002,39.84101562499998],[123.65087890625003,39.881591796875],[122.8400390625001,39.600830078125],[121.98232421875,39.05317382812498],[121.67724609374997,39.00341796875006],[121.64990234375003,38.865087890625034],[121.16357421874997,38.73164062500001],[121.10673828125002,38.920800781249994],[121.6798828125001,39.10869140625002],[121.62763671875004,39.22016601562498],[121.81845703125006,39.38652343750002],[121.27548828125006,39.38476562500003],[121.26748046875,39.544677734375],[121.51757812499997,39.638964843750045],[121.51738281250002,39.84482421875006],[121.8009765625001,39.950537109375006],[122.27500000000012,40.541845703125034],[121.83486328125005,40.97426757812502],[121.72929687500002,40.84614257812504],[121.1745117187501,40.901269531249994],[120.47910156250006,40.23095703125003],[119.39111328125003,39.75249023437499],[118.976953125,39.182568359374955],[118.29785156249997,39.067089843749955],[118.04091796875,39.22675781249998],[117.86572265625003,39.191259765625034],[117.61669921875003,38.852880859375034],[117.5578125000001,38.625146484374994],[117.76669921875012,38.311669921874994],[118.01494140625007,38.18339843749996],[118.94003906250006,38.04277343750002],[119.08916015625007,37.70073242187496],[118.95263671875003,37.33115234374998],[119.28740234375002,37.138281250000034],[119.76054687500007,37.15507812499999],[120.31152343750003,37.62270507812505],[120.2572265625,37.67900390624996],[120.75,37.83393554687501],[121.64023437500012,37.46035156250002],[122.05664062500003,37.528906250000034],[122.66699218750003,37.40283203125003],[122.4466796875,37.06811523437503],[122.51972656250004,36.94682617187502],[122.34091796875012,36.83222656250004],[121.93271484375006,36.95947265625003],[121.05380859375006,36.61137695312499],[120.81083984375007,36.6328125],[120.89580078125007,36.44414062500002],[120.71152343750006,36.41328125000004],[120.6378906250001,36.129931640625045],[120.39306640625003,36.053857421874994],[120.32773437500006,36.228173828124994],[120.18330078125004,36.20244140624999],[120.094140625,36.11889648437503],[120.28476562500006,35.98442382812499],[119.42968749999997,35.301416015624994],[119.16533203125002,34.84882812499998],[119.20097656250002,34.748437499999966],[120.26669921875006,34.274023437500034],[120.87109374999997,33.016503906249994],[120.8532226562501,32.66137695312503],[121.34169921875005,32.42504882812503],[121.40390625000006,32.20625],[121.85634765625,31.816455078125045],[121.86630859375006,31.703564453124955],[121.68085937500004,31.71215820312503],[121.351953125,31.85878906250005],[120.97353515625,31.86938476562497],[120.52011718750006,32.10585937500002],[120.03593750000002,31.93627929687503],[120.7155273437501,31.983740234375006],[120.7877929687501,31.81977539062501],[121.66064453124997,31.319726562499994],[121.87792968750003,30.91699218750003],[121.41894531249997,30.789794921875057],[120.8214843750001,30.354638671875023],[120.44980468750006,30.38784179687505],[120.19462890625002,30.241308593750034],[120.49453125,30.303076171875006],[120.63339843750006,30.133154296875034],[121.25800781250004,30.30410156250005],[121.67792968750004,29.979101562500006],[122.08291015625005,29.870361328125057],[121.50625,29.484570312499955],[121.94121093750002,29.605908203124983],[121.91777343750007,29.13500976562497],[121.71748046875004,29.25634765625],[121.48710937500007,29.193164062500017],[121.67968749999997,28.953125],[121.54003906250003,28.931884765625],[121.6625,28.851416015625034],[121.47519531250006,28.64140625],[121.60996093750006,28.29213867187505],[121.27226562500002,28.222119140624983],[121.14570312500004,28.32666015624997],[120.95859375000006,28.037011718750023],[120.74765625000006,28.00996093750001],[120.83300781249997,27.891455078125034],[120.58750000000012,27.580761718749983],[120.60751953125012,27.41240234374996],[120.2787109375,27.097070312500023],[120.08671875000007,26.67158203125004],[119.88222656250005,26.610449218750006],[119.82421874999997,26.84638671875001],[119.71044921874997,26.728662109375023],[119.58818359375002,26.784960937500045],[119.8810546875001,26.33417968750004],[119.46308593750004,26.05468750000003],[119.13945312500007,26.12177734375001],[119.33203124999997,25.94873046875003],[119.61875000000012,26.003564453124994],[119.53945312500005,25.59125976562504],[119.6224609375,25.391162109375017],[119.180078125,25.449804687499977],[119.285546875,25.232226562500074],[118.97753906249997,25.209277343750017],[118.90908203125005,24.92890625000001],[118.63691406250004,24.835546874999977],[118.65703125000002,24.621435546874977],[118.0871093750001,24.627001953125045],[118.00595703125006,24.48198242187499],[117.84267578125005,24.47431640625004],[118.0560546875,24.24609374999997],[117.62822265625002,23.836718750000074],[117.46640625000012,23.84057617187497],[117.36767578124997,23.58862304687497],[117.29082031250007,23.71435546875],[117.08251953124997,23.578759765625023],[116.91064453124997,23.646679687499983],[116.86093750000006,23.453076171874983],[116.62939453124997,23.353857421875034],[116.69882812500006,23.277783203124983],[116.53828125000004,23.17968749999997],[116.47070312499997,22.945898437500034],[116.25185546875005,22.981347656249994],[115.85214843750006,22.801562500000045],[115.64042968750002,22.853417968750023],[115.49833984375002,22.718847656250063],[115.19580078125003,22.81728515625005],[114.85380859375007,22.616796875000063],[114.65166015625002,22.755273437500023],[114.55419921874997,22.52890625],[114.26601562500005,22.540966796874983],[114.01542968750007,22.51191406250001],[113.61962890624997,22.861425781249977],[113.6205078125,23.12749023437499],[113.51972656250004,23.102099609375074],[113.33105468749997,22.912011718749966],[113.55302734375002,22.594042968750045],[113.54912109375002,22.225195312500034],[113.14902343750012,22.075],[113.08876953125,22.207958984374983],[112.95390625000007,21.907324218750034],[112.80859374999997,21.944628906250074],[112.58632812500005,21.77685546875],[112.35966796875007,21.97802734375003],[112.30498046875002,21.74169921875003],[111.94394531250012,21.84965820312499],[111.60273437500004,21.55908203125003],[111.01689453125007,21.51171874999997],[110.56718750000002,21.21406250000001],[110.41093750000007,21.33813476562497],[110.15400390625004,20.944628906250017],[110.36542968750004,20.837597656249955],[110.31308593750012,20.67167968749999],[110.51152343750007,20.51826171875001],[110.34472656249997,20.29482421875005],[109.88251953125004,20.364062500000045],[109.96835937500006,20.448144531250023],[109.66259765625003,20.91689453125005],[109.68125000000012,21.13164062499999],[109.93076171875012,21.480566406250034],[109.6869140625,21.52460937500004],[109.56640624999997,21.690576171874994],[109.54404296875012,21.537939453125006],[109.14863281250004,21.425537109375],[109.1017578125001,21.59047851562505],[108.77167968750004,21.63046875],[108.59375,21.901025390624994],[108.47988281250005,21.904638671875006],[108.50214843750004,21.633447265624994],[108.32480468750006,21.693505859374994],[108.24628906250004,21.55839843749999],[107.97265624999997,21.507958984375023],[107.75927734374997,21.655029296875057],[107.35117187500012,21.60888671874997],[106.97099609375002,21.923925781250034],[106.66357421875003,21.97890625000005],[106.55039062500006,22.501367187499994],[106.78027343749997,22.778906250000034],[106.54179687500007,22.908349609375023],[106.2790039062501,22.857470703125045],[106.14843749999997,22.970068359375006],[105.8429687500001,22.922802734374955],[105.27539062500003,23.34521484375003],[104.86474609375003,23.136376953125023],[104.68730468750002,22.822216796874983],[104.37177734375004,22.704052734374983],[104.14306640624997,22.800146484375006],[103.94150390625006,22.540087890625045],[103.62021484375006,22.782031250000045],[103.49296875000007,22.587988281250034],[103.32666015625003,22.769775390625057],[102.98193359374997,22.4482421875],[102.47089843750004,22.75092773437501],[102.40644531250004,22.70800781249997],[102.2370117187501,22.466015624999983],[102.1759765625001,22.414648437500006],[102.12744140624997,22.379199218750045],[101.84179687500003,22.38847656249999],[101.75996093750004,22.490332031250034],[101.73876953124997,22.495263671874994],[101.70751953125003,22.486572265625],[101.67148437500006,22.462304687500023],[101.64619140625004,22.405419921874966],[101.61992187500002,22.32744140624999],[101.56787109374997,22.27636718749997],[101.52451171875006,22.25366210937497],[101.7365234375001,21.826513671874977],[101.74394531250007,21.77797851562505],[101.74726562500004,21.605761718750045],[101.72294921875007,21.31494140625003],[101.80058593750007,21.212597656249983],[101.78349609375007,21.204150390625017],[101.728125,21.156396484374994],[101.7047851562501,21.15014648437503],[101.54238281250005,21.23427734375005],[101.2814453125001,21.184130859375045],[101.24785156250007,21.197314453125045],[101.22441406250002,21.223730468750034],[101.21181640625,21.278222656250023],[101.2199218750001,21.34243164062505],[101.17539062500006,21.407519531250074],[101.19667968750005,21.522070312500063],[101.1388671875001,21.567480468749977],[101.07978515625004,21.75585937499997],[100.60458984375012,21.471777343750006],[100.14765625000004,21.480517578125017],[99.94072265625007,21.75874023437504],[99.9176757812501,22.02802734375001],[99.19296875000006,22.12597656249997],[99.50712890625002,22.959130859374994],[99.41806640625006,23.069238281250023],[98.86376953125003,23.191259765625034],[98.8322265625001,23.624365234374977],[98.67675781250003,23.905078125000045],[98.83505859375006,24.121191406250034],[98.2125,24.110644531250017],[97.56455078125012,23.911035156250023],[97.7082031250001,24.228759765625],[97.53144531250004,24.49169921875003],[97.58330078125002,24.77480468750005],[97.73789062500006,24.869873046875057],[97.8195312500001,25.251855468749994],[98.01074218749997,25.292529296875017],[98.14287109375007,25.571093750000017],[98.33378906250007,25.586767578125006],[98.65625,25.86357421874999],[98.56406250000006,26.072412109374994],[98.68554687499997,26.189355468750023],[98.7384765625001,26.785742187500006],[98.65117187500007,27.572460937499983],[98.4525390625,27.6572265625],[98.29882812499997,27.550097656250045],[98.06162109375012,28.185888671874977],[97.59921875000006,28.51704101562504],[97.53789062500002,28.510205078124983],[97.43144531250002,28.353906250000023],[97.35644531249997,28.254492187500006],[97.32158929493812,28.217097107438057],[97.3027336276825,28.08710519614969],[97.34382779482424,27.982305259167095],[97.04929369561631,27.76000444316393],[96.96494598325154,27.699301564540924],[96.19423412199573,28.04146177926422],[95.73730002295082,28.117613231051525],[95.11298892962586,27.748338353239472],[94.07167814294401,27.588707868507477],[93.61247595136224,27.323800298697016],[93.30681393470121,26.786120363519142],[92.74319481218781,26.833531317384058],[92.04974640832253,26.874866505386724],[92.07342257335648,26.915311275859864],[92.06813426293174,26.9752569185349],[92.02985139563152,27.03987087331446],[91.99856592104459,27.079255842602592],[91.99177981607339,27.100605151743654],[92.0025114452454,27.147290053160265],[92.03101585307499,27.214271359861193],[92.08387457645458,27.29090135496722],[92.04520857607581,27.364442429033787],[91.99069061380867,27.450181624174498],[91.95099838734396,27.45828799115413],[91.85276579410389,27.438593286730903],[91.74366351462741,27.442853010105477],[91.59505352446729,27.557262710287986],[91.63193359375012,27.759960937499983],[91.64189453125002,27.923242187500023],[91.36259958579089,28.02438066407592],[91.27304687500012,28.078369140625],[91.22587890625007,28.071240234374983],[91.07773437500012,27.974462890624977],[91.02080078125002,27.970068359374977],[90.71572265625,28.071728515624983],[90.63007812500004,28.078564453124955],[90.47734375000007,28.07084960937499],[90.3527343750001,28.080224609375023],[90.33310546875012,28.093994140625],[90.36298828125004,28.21650390625001],[90.34824218750006,28.24394531249999],[90.22080078125006,28.27773437500005],[90.10449218749997,28.302050781250017],[89.98105468750006,28.311181640625023],[89.8978515625,28.29414062500001],[89.81689453125003,28.25629882812501],[89.74980468750002,28.18818359375001],[89.65273437500005,28.158300781250034],[89.53691406250007,28.10742187499997],[89.4806640625001,28.059960937499994],[88.89140625000002,27.316064453124966],[88.83251953125003,27.36284179687499],[88.7648437500001,27.429882812499983],[88.74902343749997,27.521875],[88.82988281250002,27.76738281249999],[88.84882812500004,27.86865234375],[88.80371093750003,28.006933593750034],[88.57792968750002,28.093359375000034],[88.42597656250004,28.01166992187501],[88.27519531250007,27.968847656250006],[88.14111328125003,27.94892578125001],[88.10898437500006,27.933007812499966],[88.10976562500005,27.870605468750057],[87.8607421875,27.886083984375006],[87.62255859374997,27.81518554687503],[87.29072265625004,27.821923828124994],[87.14140625000002,27.838330078124955],[87.02011718750006,27.928662109374983],[86.9337890625001,27.96845703125001],[86.84238281250012,27.99916992187505],[86.750390625,28.022070312500006],[86.71962890625005,28.070654296875034],[86.69052734375006,28.09492187500001],[86.61445312500004,28.10302734374997],[86.55449218750007,28.08520507812497],[86.51689453125007,27.963525390624966],[86.40869140625003,27.928662109374983],[86.32861328124997,27.95952148437496],[86.2179687500001,28.022070312500006],[86.13701171875002,28.114355468750063],[86.07871093750006,28.08359375],[86.0641601562501,27.934716796874966],[85.99453125000005,27.910400390625],[85.95410156249997,27.92822265624997],[85.92167968750002,27.989697265624983],[85.84023437500005,28.135351562499977],[85.75947265625004,28.220654296874955],[85.67832031250012,28.277441406249977],[85.41064453125003,28.27602539062505],[85.21210937500004,28.292626953124966],[85.1224609375,28.315966796875017],[85.08857421875004,28.37226562500001],[85.121484375,28.484277343750023],[85.16015624999997,28.571875],[85.15908203125,28.592236328124983],[85.1263671875,28.602636718750063],[85.06914062500007,28.60966796874999],[84.85507812500006,28.553613281250023],[84.796875,28.560205078125023],[84.2287109375001,28.911767578124966],[84.17558593750002,29.036376953125057],[84.12783203125005,29.15629882812496],[84.10136718750002,29.21997070312497],[84.02197265624997,29.25385742187504],[83.93593750000005,29.27949218750001],[83.58349609375003,29.18359375000003],[83.15546875000004,29.612646484375034],[82.22070312500003,30.063867187500023],[82.04335937500005,30.326757812500034],[81.8548828125,30.362402343750006],[81.64189453125007,30.3875],[81.4171875000001,30.33759765625001],[81.25507812500004,30.09331054687499],[81.17714843750005,30.039892578125034],[80.98544921875006,30.23710937499999],[80.87353515625003,30.290576171875045],[80.19121093750002,30.56840820312496],[80.20712890625006,30.683740234375023],[79.92451171875004,30.888769531250034],[79.66425781250004,30.96523437499999],[79.38847656250007,31.064208984375],[79.10712890625004,31.402636718750017],[78.74355468750005,31.323779296875017],[78.7550781250001,31.55029296875],[78.69345703125006,31.740380859374994],[78.72558593750003,31.983789062500023],[78.49589843750002,32.21577148437504],[78.4552734375001,32.30034179687502],[78.41748046874997,32.466699218749994],[78.38964843749997,32.51987304687498],[78.73671875,32.55839843750002],[78.75351562500012,32.49926757812506],[78.91894531249997,32.35820312500002],[79.16992187500003,32.497216796874994],[79.14550781250003,33.00146484375006],[79.10283203125007,33.05253906249996],[79.13515625000005,33.17192382812496],[79.1125,33.22626953125001],[78.94843750000004,33.346533203125006],[78.86503906250002,33.43110351562501],[78.78378906250006,33.80878906250004],[78.72666015625006,34.013378906249955],[78.97060546875,34.22822265625004],[78.93642578125,34.35195312500002],[78.86484375000006,34.39033203125001],[78.32695312500007,34.60639648437498],[78.15849609375002,34.94648437499998],[78.07578125000006,35.13491210937502],[78.0426757812501,35.47978515625002],[77.79941406250006,35.49589843750002],[77.44648437500004,35.47558593750006],[77.29482421875005,35.508154296875034],[77.09003906250004,35.55205078124999],[76.87890625000003,35.61328125000003],[76.76689453125002,35.661718750000034],[76.72753906250003,35.67866210937504],[76.63183593749997,35.729394531249966],[76.56347656249997,35.77299804687499],[76.55126953124997,35.887060546875034],[76.50205078125006,35.87822265625002],[76.38574218750003,35.837158203125],[76.25166015625004,35.8109375],[76.17783203125012,35.810546875],[76.14785156250005,35.82900390625002],[76.07089843750006,35.983007812500034],[75.91230468750004,36.048974609374994],[75.97441406250007,36.38242187500006],[75.9518554687501,36.458105468750034],[75.9330078125,36.52158203124998],[75.840234375,36.64970703124999],[75.7721679687501,36.694921875000034],[75.6671875000001,36.741992187500045],[75.57373046874997,36.75932617187502],[75.46025390625002,36.725048828124955],[75.42421875000005,36.73823242187498],[75.37685546875,36.88369140625005],[75.34667968749997,36.913476562499966],[75.05390625000004,36.98715820312498],[74.94912109375,36.96835937500006],[74.88925781250006,36.95244140625002],[74.69218750000007,37.035742187500006],[74.60058593749997,37.03666992187502],[74.54140625,37.02216796875001],[74.52646484375006,37.03066406250005],[74.49794921875,37.057226562500034],[74.37617187500004,37.13735351562502],[74.37216796875006,37.15771484375],[74.558984375,37.23662109374999],[74.66894531250003,37.266699218750006],[74.72666015625006,37.29072265625001],[74.7389648437501,37.28564453125003],[74.76738281250002,37.249169921874966],[74.840234375,37.22504882812504],[74.89130859375004,37.231640624999955],[75.11875,37.38569335937498],[74.8942382812501,37.60141601562498],[74.81230468750002,38.46030273437498],[74.27744140625,38.659765625000034],[74.02558593750004,38.53984375000002],[73.80166015625,38.60688476562501],[73.69609375000007,38.85429687499996],[73.8052734375,38.968652343749994],[73.60732421875,39.229199218749955],[73.63632812500006,39.396679687499955],[73.63164062500007,39.44887695312502],[73.82294921875004,39.48896484375004],[73.90712890625,39.578515624999966],[73.9146484375,39.60649414062499],[73.88251953125004,39.71455078124998],[73.83974609375005,39.76284179687505],[73.8353515625,39.800146484375006],[73.85625,39.828662109375045],[73.88457031250002,39.87792968750006],[73.93876953125002,39.97880859374999],[73.99160156250005,40.04311523437502],[74.83046875,40.32851562499999],[74.80126953124997,40.428515625000045],[74.83515625000004,40.482617187499955],[74.865625,40.493505859375034],[75.0044921875,40.44951171874996],[75.11132812499997,40.4541015625],[75.24101562500002,40.48027343750002],[75.52080078125002,40.627539062500006],[75.55556640625,40.625195312499955],[75.6771484375,40.305810546874994],[75.87197265625,40.30322265625],[76.25830078124997,40.43076171875006],[76.3185546875001,40.352246093749955],[76.39638671875005,40.389794921874966],[76.4801757812501,40.44951171874996],[76.57792968750002,40.577880859375],[76.62216796875006,40.66235351562497],[76.6398437500001,40.74223632812499],[76.66113281249997,40.77963867187498],[76.70839843750005,40.818115234375],[76.82402343750002,40.982324218749966],[76.90771484374997,41.02416992187497],[76.98662109375002,41.039160156250006],[77.58173828125004,40.99277343750006],[77.71933593750012,41.024316406249994],[77.81523437500002,41.05561523437498],[77.9564453125,41.05068359375005],[78.1234375,41.07563476562498],[78.34628906250012,41.28144531249998],[78.36240234375012,41.37163085937496],[78.44287109374997,41.41752929687499],[78.742578125,41.56005859375],[79.29355468750006,41.78281249999998],[79.76611328124997,41.89887695312501],[79.84042968750012,41.99575195312502],[79.90966796875003,42.014990234375034],[80.21621093750005,42.03242187500004],[80.23515625000007,42.04345703124997],[80.24619140625012,42.05981445312503],[80.209375,42.190039062500006],[80.20224609375012,42.73447265624998],[80.53896484375005,42.873486328124955],[80.39023437500006,43.043115234374966],[80.78574218750006,43.16157226562504],[80.35527343750002,44.09726562500006],[80.48154296875006,44.71464843749999],[79.871875,44.88378906249997],[80.05917968750012,45.006445312500006],[81.69199218750012,45.34936523437497],[81.94492187500006,45.16083984375001],[82.26660156249997,45.21909179687498],[82.52148437500003,45.12548828125],[82.61162109375007,45.424267578124955],[82.31523437500002,45.59492187499998],[83.02949218750004,47.18593750000002],[84.016015625,46.97050781250002],[84.66660156250006,46.97236328125004],[84.78613281249997,46.83071289062505],[85.484765625,47.06352539062496],[85.65664062500005,47.254638671875],[85.52597656250006,47.915625],[85.7494140625,48.38505859374999],[86.54941406250012,48.52861328125002],[86.8083007812501,49.04970703125002],[87.32285156250012,49.085791015625006],[87.41669921875004,49.07661132812501],[87.5158203125001,49.122412109375006],[87.7625,49.16582031249996],[87.81425781250002,49.162304687499955],[87.87216796875012,49.000146484374966],[87.74316406250003,48.88164062499999],[87.83183593750007,48.79165039062505],[88.02792968750006,48.735595703125],[88.06005859375003,48.707177734374966],[87.9796875000001,48.55512695312498],[88.30996093750005,48.47207031250002],[88.41396484375,48.403417968750006],[88.51708984374997,48.384472656249955],[88.56679687500005,48.31743164062496],[88.57597656250007,48.220166015624955],[88.68183593750004,48.170556640624994],[88.83828125000005,48.101708984374994],[88.91777343750007,48.089013671874966],[89.04765625000007,48.002539062500034],[89.47919921875004,48.02905273437503],[89.5609375,48.00395507812496],[89.778125,47.82700195312498],[89.83134765625002,47.82329101562502],[89.91044921875007,47.844335937500034],[89.95869140625004,47.88632812499998],[90.02792968750012,47.877685546875],[90.1032226562501,47.74541015624996],[90.19101562500012,47.70209960937501],[90.31328125000007,47.67617187499999],[90.33066406250006,47.655175781249966],[90.42519531250005,47.50410156250001],[90.49619140625012,47.28515625],[90.64335937500007,47.10029296874998],[90.71552734375004,47.00385742187498],[90.7990234375001,46.98515624999999],[90.86992187500002,46.95449218750005],[90.91054687500005,46.88325195312501],[90.9857421875,46.7490234375],[90.9115234375,46.270654296874994],[90.94755859375002,46.17729492187499],[90.99677734375004,46.10498046875],[91.00175781250007,46.03579101562502],[90.6618164062501,45.525244140625006],[90.87724609375002,45.19609375000002],[91.05,45.217431640624994],[91.584375,45.07651367187498],[92.42382812499997,45.008935546874994],[92.57890625000002,45.01098632812506],[92.78789062500007,45.035742187500034],[93.51621093750012,44.944482421874994],[94.71201171875012,44.35083007812503],[95.35029296875004,44.27807617187503],[95.32558593750005,44.03935546874999],[95.52558593750004,43.953955078125006],[95.85957031250004,43.27597656249998],[96.38544921875004,42.72036132812502],[97.20566406250012,42.78979492187506],[99.46787109375012,42.568212890625034],[99.98378906250005,42.67734375000006],[100.08632812500005,42.67075195312506],[100.51904296875003,42.61679687499998],[101.09199218750004,42.55131835937496],[101.49531250000004,42.53876953124998],[101.57910156249997,42.52353515624998],[101.65996093750002,42.50004882812499],[101.97294921875002,42.21586914062502],[102.15664062500005,42.158105468749966],[102.57519531249997,42.09208984375002],[103.07285156250006,42.00595703125006],[103.7111328125001,41.75131835937506],[103.99726562500004,41.796972656250034],[104.30517578124997,41.84614257812501],[104.49824218750004,41.87700195312499],[104.49824218750004,41.65869140625],[104.86035156250003,41.64375],[104.98203125000012,41.59550781250002],[105.05058593750002,41.61591796875001],[105.1154296875001,41.66328124999998],[105.19707031250002,41.738037109375],[105.31435546875005,41.77089843750005],[105.86757812500005,41.993994140625034],[106.77001953125003,42.28872070312502],[108.17119140625002,42.44731445312502],[108.68730468750002,42.416113281250034],[109.33984374999997,42.43837890625005],[109.44316406250002,42.455957031249994],[110.40039062499997,42.77368164062497],[111.00722656250005,43.34140624999998],[111.878125,43.68017578125],[111.93173828125012,43.81494140625],[111.40224609375005,44.367285156250006],[111.89804687500006,45.064062500000034],[112.03261718750005,45.08164062500006],[112.11289062500006,45.06293945312498],[112.41132812500004,45.05820312499998],[112.49931640625002,45.01093750000004],[112.59677734375006,44.917675781249955],[112.7067382812501,44.883447265624994],[113.04941406250006,44.81035156250002],[113.3009765625001,44.79165039062502],[113.50791015625006,44.76235351562502],[113.58701171875006,44.745703125],[113.65263671875002,44.76347656249999],[113.87705078125012,44.89619140625001],[114.03027343749997,44.942578124999955],[114.08027343750004,44.97114257812501],[114.41914062500004,45.20258789062501],[114.56015625000012,45.38999023437498],[114.73876953124997,45.41962890624998],[114.91923828125007,45.378271484375006],[115.16259765624997,45.390234375000034],[115.6810546875,45.45825195312503],[116.19765625,45.739355468750006],[116.240625,45.795996093750006],[116.22910156250012,45.84575195312502],[116.21298828125012,45.88691406249998],[116.56259765625012,46.28979492187497],[116.85908203125004,46.387939453125],[117.3333984375,46.36201171875004],[117.35693359375003,46.391308593749955],[117.35634765625,46.436669921874966],[117.39218750000012,46.53759765625003],[117.40556640625007,46.57089843750006],[117.43808593750012,46.58623046874999],[117.546875,46.58828125000005],[117.74121093749997,46.51816406250006],[118.07128906249997,46.666601562500006],[118.15683593750006,46.678564453125034],[118.30869140625012,46.71704101562497],[118.40439453125006,46.70317382812499],[118.58046875,46.69189453125],[118.64873046875002,46.70166015625006],[118.72294921875007,46.69189453125],[118.8439453125001,46.76020507812498],[118.95712890625006,46.73486328124997],[119.16210937499997,46.638671875],[119.33183593750002,46.61381835937499],[119.47402343750005,46.626660156249955],[119.62021484375006,46.60395507812504],[119.70664062500006,46.60600585937502],[119.74746093750005,46.62719726562497],[119.86718750000003,46.67216796874999],[119.89785156250005,46.857812499999966],[119.71113281250004,47.15],[119.08193359375,47.654150390625034],[119.01757812500003,47.68535156249999],[118.88027343750005,47.72509765625],[118.75996093750004,47.75761718749996],[118.69052734375012,47.822265625],[118.56777343750005,47.94326171875005],[118.49843750000005,47.98398437499998],[117.76835937500002,47.98789062499998],[117.3507812500001,47.65219726562498],[117.28593750000002,47.666357421875034],[117.06972656250005,47.80639648437506],[116.95166015624997,47.836572265624966],[116.90117187500007,47.85307617187496],[116.76054687500002,47.869775390624994],[116.65195312500012,47.86450195312497],[116.51347656250007,47.839550781249955],[116.37822265625002,47.84404296874999],[116.31718750000002,47.85986328125],[116.2311523437501,47.85820312500002],[116.07480468750012,47.78955078125],[115.99384765625004,47.71132812500005],[115.89824218750002,47.68691406250005],[115.6164062500001,47.874804687500045],[115.52509765625004,48.13085937499997],[115.63945312500007,48.18623046874998],[115.785546875,48.24824218750001],[115.7965820312501,48.346337890624994],[115.7916992187501,48.455712890624994],[115.8205078125001,48.57724609375006],[116.6833007812501,49.82377929687499],[117.8734375,49.51347656250002],[118.4515625,49.84448242187503],[119.25986328125012,50.06640625000003],[119.34628906250012,50.278955078124994],[119.16367187500006,50.40600585937503],[120.06689453125003,51.60068359375006],[120.74980468750007,52.096533203125006],[120.65615234375,52.56665039062503],[120.0675781250001,52.632910156250034],[120.09453125000007,52.787207031250034],[120.98544921875012,53.28457031250002],[123.6078125,53.546533203124994],[124.81230468750002,53.133837890625045],[125.075,53.20366210937496],[125.64902343750012,53.042285156250045],[126.34169921875,52.36201171875001],[126.92480468749997,51.10014648437496],[127.30703125000005,50.70795898437501],[127.33720703125007,50.35014648437502],[127.590234375,50.20898437500003],[127.55078124999997,49.801806640625045],[127.99960937500006,49.56860351562506],[128.70400390625,49.60014648437499],[129.0651367187501,49.374658203124966],[129.49814453125012,49.38881835937502],[130.1959960937501,48.89165039062499],[130.553125,48.861181640625006],[130.5521484375,48.602490234374955],[130.80429687500012,48.34150390624998],[130.7326171875001,48.01923828124998],[130.96191406249997,47.70932617187498],[132.47626953125004,47.714990234374994],[132.7072265625001,47.94726562500006],[133.14404296875003,48.10566406249998],[133.46835937500006,48.09716796875003],[134.29335937500005,48.37343750000002],[134.66523437500004,48.25390625],[134.56601562500006,48.02250976562502],[134.75234375,47.71542968749998],[134.1676757812501,47.30219726562501],[133.86132812500003,46.24775390625004],[133.43642578125,45.60468750000004],[133.18603515625003,45.49482421875004],[133.1134765625001,45.130712890625006],[132.93603515624997,45.029931640624994],[131.85185546875002,45.32685546875001],[131.44687500000012,44.984033203124966],[130.9816406250001,44.844335937500034],[131.2552734375,44.07158203124999],[131.25732421875003,43.378076171874994],[131.06855468750004,42.90224609375005],[130.42480468749997,42.72705078124997],[130.52695312500012,42.535400390625]]],[[[113.9977539062501,22.210498046875045],[113.83886718749997,22.24169921875003],[114.04394531250003,22.33339843750005],[113.9977539062501,22.210498046875045]]],[[[114.01542968750007,22.51191406250001],[114.26601562500005,22.540966796874983],[114.26796875,22.295556640624966],[113.93730468750002,22.364990234375],[114.01542968750007,22.51191406250001]]],[],[[[118.4074218750001,24.522119140624994],[118.43271484375006,24.414355468750074],[118.29511718750004,24.436328125000017],[118.4074218750001,24.522119140624994]]],[[[121.00878906249997,22.62036132812497],[120.83984375000003,21.925],[120.2328125,22.71791992187505],[120.0724609375001,23.149755859375006],[120.13212890625007,23.652929687500034],[121.040625,25.032812500000034],[121.59365234375,25.275341796874983],[121.92900390625002,24.973730468749977],[121.39746093750003,23.172509765625023],[121.00878906249997,22.62036132812497]]]]},"properties":{"name":"China","childNum":15}},{"geometry":{"type":"Polygon","coordinates":[[[-5.262304687499977,10.319677734374991],[-4.72177734374992,9.756542968750026],[-4.625830078125006,9.713574218749969],[-4.526611328124943,9.723486328125034],[-4.406201171874926,9.647998046875031],[-4.332226562499955,9.645703125],[-4.18115234375,9.78173828125],[-3.790625,9.917187499999983],[-3.581152343749977,9.924316406250014],[-3.289697265625023,9.882226562500051],[-3.223535156249937,9.895458984374997],[-3.160693359374932,9.849169921874974],[-3.095800781249949,9.752099609375009],[-3.042626953124937,9.72089843750004],[-2.988281249999972,9.687353515624963],[-2.900878906249943,9.534619140625026],[-2.875146484374937,9.500927734374997],[-2.816748046874949,9.425830078124974],[-2.766601562499943,9.424707031250009],[-2.7171875,9.457128906250048],[-2.695849609374989,9.481347656250009],[-2.686132812499977,9.43173828125002],[-2.705761718749983,9.351367187499989],[-2.74692382812492,9.04511718750004],[-2.689892578124955,9.02509765625004],[-2.649218750000017,8.956591796875031],[-2.600390625000017,8.800439453125023],[-2.505859375000028,8.208740234375],[-2.538281249999955,8.171630859374986],[-2.61171875,8.147558593749963],[-2.619970703125006,8.12109375],[-2.600976562499937,8.082226562499983],[-2.613378906249977,8.046679687500017],[-2.668847656249994,8.022216796875014],[-2.789746093749955,7.931933593750003],[-2.959082031249977,7.454541015624997],[-3.227148437499977,6.749121093749991],[-2.998291015624972,5.711328125000051],[-2.793652343749955,5.600097656250028],[-2.754980468749977,5.432519531249994],[-2.815673828125,5.153027343749997],[-3.168701171874972,5.203027343749966],[-3.199951171874943,5.3544921875],[-3.347558593749994,5.13066406249996],[-4.120166015625017,5.309716796875023],[-4.60888671875,5.235888671875003],[-4.037207031249977,5.23012695312498],[-4.899707031249932,5.138330078125023],[-5.282373046874994,5.210253906250017],[-5.36752929687492,5.15078125],[-5.061816406249989,5.13066406249996],[-5.913769531249926,5.0109375],[-7.544970703124989,4.351318359375],[-7.574658203124983,4.572314453124989],[-7.585058593749977,4.916748046875],[-7.39990234375,5.550585937499989],[-7.454394531249989,5.841308593749972],[-7.636132812499994,5.90771484375],[-7.730371093749994,5.919042968749991],[-7.800927734374994,6.038916015624991],[-7.833251953125,6.076367187499983],[-7.855517578125017,6.150146484375],[-7.888623046875011,6.234863281250028],[-7.981591796874937,6.2861328125],[-8.287109375,6.31904296875004],[-8.587890625,6.490527343749989],[-8.324511718749989,6.920019531249991],[-8.408740234374989,7.411816406249997],[-8.429980468749989,7.601855468749989],[-8.351757812499926,7.590576171875],[-8.231884765624955,7.556738281250034],[-8.205957031249994,7.590234375000023],[-8.115429687499926,7.760742187500028],[-8.126855468749937,7.867724609374974],[-8.00986328124992,8.078515625000023],[-8.048583984375,8.169726562500045],[-8.140625,8.181445312500031],[-8.217138671874949,8.219677734375011],[-8.256103515625,8.253710937500017],[-8.244140624999943,8.407910156249983],[-8.236962890624994,8.455664062500034],[-7.953125,8.477734375],[-7.823583984374977,8.467675781249994],[-7.738964843749983,8.375244140624986],[-7.696093749999932,8.375585937499977],[-7.71958007812492,8.643017578125011],[-7.950976562499989,8.786816406249997],[-7.938183593749983,8.97978515624996],[-7.902099609375,9.017089843750014],[-7.777978515624937,9.080859375000031],[-7.799804687499943,9.115039062499989],[-7.839404296875017,9.151611328124972],[-7.918066406249949,9.188525390625031],[-7.896191406249955,9.415869140624991],[-8.136962890624972,9.49570312499999],[-8.155175781249937,9.973193359375017],[-7.990625,10.1625],[-7.661132812500028,10.427441406250011],[-7.385058593749989,10.340136718749989],[-7.01708984375,10.143261718750026],[-6.950341796874994,10.342333984374989],[-6.693261718750023,10.34946289062502],[-6.669335937499937,10.39218750000002],[-6.69199218749992,10.512011718750017],[-6.686132812499977,10.578027343750051],[-6.676367187499949,10.633789062500043],[-6.654150390624949,10.65644531250004],[-6.482617187499983,10.561230468749997],[-6.250244140625,10.717919921875037],[-6.190673828124943,10.400292968749994],[-6.192626953124972,10.369433593750003],[-6.241308593749949,10.279199218750009],[-6.238378906249977,10.26162109374998],[-6.117187499999972,10.201904296874986],[-6.034570312499937,10.194824218750057],[-5.907568359375006,10.307226562500034],[-5.896191406249983,10.354736328125028],[-5.843847656249977,10.389550781250023],[-5.694287109374983,10.433203125000034],[-5.556591796874983,10.439941406249986],[-5.382275390625011,10.314013671875003],[-5.262304687499977,10.319677734374991]]]},"properties":{"name":"Côte d\'Ivoire","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[15.480078125,7.523779296874991],[15.206738281250011,7.206152343749991],[14.7392578125,6.27978515625],[14.43115234375,6.038720703124994],[14.616894531250011,5.865136718749994],[14.56298828125,5.279931640624994],[14.73125,4.602392578124991],[15.063574218750006,4.284863281249997],[15.128710937500017,3.826904296875],[16.0634765625,2.90859375],[16.183398437500017,2.270068359374989],[16.059375,1.676220703124997],[15.741601562500023,1.914990234374997],[14.902441406250006,2.012304687499991],[14.578906250000017,2.199121093749994],[13.293554687500006,2.161572265624997],[13.2203125,2.256445312499991],[11.558984375000023,2.302197265624997],[11.348437500000017,2.299707031249994],[11.328710937500006,2.167431640624997],[11.096582031250023,2.16748046875],[10.790917968750023,2.16757812499999],[9.979882812500023,2.167773437499989],[9.8701171875,2.21328125],[9.8369140625,2.242382812499997],[9.830371093750017,2.275488281249991],[9.826171875,2.297802734374997],[9.80078125,2.304443359375],[9.82177734375,2.539257812499997],[9.948437500000011,3.079052734374997],[9.672070312500011,3.53759765625],[9.765722656250006,3.623828124999989],[9.642382812500017,3.611767578124997],[9.55615234375,3.798046875],[9.739648437500023,3.852929687499994],[9.639941406250017,3.96533203125],[9.688867187500023,4.056396484375],[9.483691406250017,4.066113281249997],[9.42529296875,3.922314453124997],[9.000097656250006,4.091601562499989],[8.918261718750017,4.553759765624989],[8.660351562500011,4.670996093749991],[8.65625,4.516357421875],[8.53955078125,4.571875],[8.715625,5.046875],[8.997167968750006,5.917724609375],[9.490234375,6.418652343749997],[9.779882812500006,6.76015625],[9.820703125000023,6.783935546875],[9.874218750000011,6.803271484374989],[10.038867187500017,6.92138671875],[10.1435546875,6.996435546874991],[10.167773437500017,6.959179687499997],[10.185546875,6.912792968749997],[10.205468750000023,6.8916015625],[10.293066406250006,6.876757812499989],[10.413183593750006,6.877734374999989],[10.60625,7.063085937499991],[10.954199218750006,6.7765625],[11.032519531250017,6.697900390624994],[11.1064453125,6.457714843749997],[11.1533203125,6.437939453124997],[11.2373046875,6.450537109374991],[11.401757812500023,6.533935546875],[11.551660156250023,6.697265625],[11.580078125,6.888867187499997],[11.657519531250017,6.9515625],[11.861425781250006,7.11640625],[11.767382812500017,7.272265624999989],[11.809179687500006,7.345068359374991],[12.016015625000023,7.589746093749994],[12.2333984375,8.282324218749991],[12.403515625000011,8.595556640624991],[12.582714843750011,8.624121093749991],[12.651562500000011,8.667773437499989],[12.7822265625,8.81787109375],[12.806542968750023,8.886621093749994],[12.875683593750011,9.303515624999989],[12.929492187500017,9.42626953125],[13.19873046875,9.563769531249989],[13.269921875000023,10.036181640624989],[13.41455078125,10.171435546874989],[13.535351562500011,10.60507812499999],[13.699902343750011,10.873144531249991],[13.89208984375,11.140087890624997],[13.9814453125,11.211865234374997],[14.056738281250006,11.245019531249994],[14.143261718750011,11.24853515625],[14.202343750000011,11.268164062499991],[14.559765625000011,11.492285156249991],[14.619726562500006,12.150976562499991],[14.518945312500023,12.298242187499994],[14.272851562500023,12.356494140624989],[14.184863281250017,12.447216796874997],[14.06396484375,13.07851562499999],[14.244824218750011,13.07734375],[14.461718750000017,13.021777343749989],[14.847070312500023,12.502099609374994],[15.08125,11.845507812499989],[15.029882812500006,11.11367187499999],[15.132226562500023,10.648486328124989],[15.276074218750011,10.357373046874997],[15.654882812500006,10.0078125],[14.243261718750006,9.979736328125],[13.977246093750011,9.691552734374994],[14.332324218750017,9.20351562499999],[15.1162109375,8.557324218749997],[15.5498046875,7.787890624999989],[15.480078125,7.523779296874991]]]},"properties":{"name":"Cameroon","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[27.4033203125,5.109179687499989],[27.7880859375,4.644677734374994],[28.19208984375001,4.350244140624994],[28.427539062500017,4.324169921874997],[28.72705078125,4.504980468749991],[29.224902343750017,4.391894531249989],[29.469628906250023,4.61181640625],[29.676855468750006,4.5869140625],[30.194921875,3.98193359375],[30.50830078125,3.835693359375],[30.586718750000017,3.62421875],[30.757226562500023,3.62421875],[30.83857421875001,3.49072265625],[30.90644531250001,3.408935546875],[30.754003906250006,3.041796874999989],[30.8466796875,2.847021484374991],[30.728613281250006,2.455371093749989],[31.176367187500006,2.270068359374989],[31.252734375000017,2.044580078124994],[29.94287109375,0.819238281249994],[29.934472656250023,0.4990234375],[29.717675781250023,0.098339843749997],[29.576953125000017,-1.387890625000011],[29.196582031250017,-1.719921875000011],[29.13154296875001,-2.195117187500003],[28.876367187500023,-2.400292968750009],[28.893945312500023,-2.635058593750003],[29.01435546875001,-2.72021484375],[29.224414062500017,-3.053515625],[29.211816406250023,-3.833789062500003],[29.403222656250023,-4.449316406250006],[29.404199218750023,-4.496679687500006],[29.32568359375,-4.835644531250011],[29.32343750000001,-4.898828125],[29.3427734375,-4.983105468750011],[29.542382812500023,-5.499804687500003],[29.594140625000023,-5.65078125],[29.60703125,-5.72265625],[29.59638671875001,-5.775976562500006],[29.490820312500006,-5.965429687500006],[29.480078125,-6.025],[29.50625,-6.172070312500011],[29.540820312500017,-6.313867187500009],[29.590625,-6.394433593750009],[29.70966796875001,-6.616894531250011],[29.798144531250017,-6.69189453125],[29.961816406250023,-6.803125],[30.10625,-6.9150390625],[30.212695312500017,-7.037890625],[30.31318359375001,-7.203710937500006],[30.40673828125,-7.460644531250011],[30.75117187500001,-8.193652343750003],[28.89814453125001,-8.485449218750006],[28.869531250000023,-8.785839843750011],[28.400683593750017,-9.224804687500011],[28.60419921875001,-9.678808593750006],[28.6455078125,-10.550195312500009],[28.383398437500006,-11.566699218750003],[28.482519531250006,-11.812109375],[29.064355468750023,-12.348828125000011],[29.48554687500001,-12.41845703125],[29.508203125000023,-12.228222656250011],[29.79511718750001,-12.155468750000011],[29.775195312500017,-13.438085937500006],[29.55419921875,-13.248925781250009],[29.20185546875001,-13.398339843750009],[29.014257812500006,-13.368847656250011],[28.730078125,-12.925488281250011],[28.550878906250006,-12.836132812500011],[28.412890625000017,-12.51806640625],[27.573828125,-12.22705078125],[27.1591796875,-11.579199218750006],[26.824023437500017,-11.965234375],[26.025976562500006,-11.89013671875],[25.349414062500017,-11.623046875],[25.28876953125001,-11.21240234375],[24.3779296875,-11.417089843750006],[24.36572265625,-11.1298828125],[23.96650390625001,-10.871777343750011],[23.901171875000017,-10.983203125],[23.833886718750023,-11.013671875],[23.463964843750006,-10.969335937500006],[23.076269531250006,-11.087890625],[22.814746093750017,-11.080273437500011],[22.56103515625,-11.055859375000011],[22.486132812500017,-11.08671875],[22.392968750000023,-11.159472656250003],[22.31494140625,-11.198632812500009],[22.27880859375,-11.194140625],[22.226171875,-11.121972656250009],[22.203515625000023,-10.829492187500009],[22.307031250000023,-10.691308593750009],[22.19775390625,-10.040625],[21.81318359375001,-9.46875],[21.905371093750006,-8.693359375],[21.806054687500023,-7.32861328125],[21.751074218750006,-7.30546875],[21.190332031250023,-7.284960937500003],[20.910937500000017,-7.281445312500011],[20.607812500000023,-7.277734375],[20.558398437500017,-7.244433593750003],[20.53583984375001,-7.182812500000011],[20.536914062500017,-7.121777343750011],[20.598730468750006,-6.93515625],[20.59003906250001,-6.919921875],[20.482226562500017,-6.915820312500003],[20.190039062500006,-6.9462890625],[19.997460937500023,-6.976464843750009],[19.87519531250001,-6.986328125],[19.527636718750017,-7.144433593750009],[19.483789062500023,-7.279492187500011],[19.479882812500023,-7.47216796875],[19.371679687500006,-7.655078125],[19.369921875000017,-7.70654296875],[19.3408203125,-7.966601562500003],[19.142675781250006,-8.00146484375],[18.944433593750006,-8.00146484375],[18.56269531250001,-7.9359375],[18.0087890625,-8.107617187500011],[17.643359375000017,-8.090722656250009],[17.57958984375,-8.099023437500009],[16.984765625000023,-7.257421875],[16.91943359375,-6.933984375],[16.813085937500006,-6.772558593750006],[16.742968750000017,-6.618457031250003],[16.697265625,-6.164257812500011],[16.537109375,-5.9658203125],[16.431445312500017,-5.900195312500003],[16.315234375000017,-5.865625],[13.978515625,-5.857226562500003],[13.346484375000017,-5.863378906250006],[13.184375,-5.85625],[12.452929687500017,-6.00048828125],[12.213671875000017,-5.758691406250009],[12.484570312500011,-5.71875],[12.451464843750017,-5.071484375000011],[12.502734375000017,-5.036914062500003],[12.573535156250017,-4.99658203125],[12.59619140625,-4.978417968750009],[12.8296875,-4.736621093750003],[12.947460937500011,-4.6953125],[13.057324218750011,-4.651074218750011],[13.07275390625,-4.634765625],[13.08740234375,-4.601953125],[13.136621093750023,-4.604296875],[13.414941406250023,-4.83740234375],[13.659570312500023,-4.721484375],[13.717089843750017,-4.454492187500009],[13.94091796875,-4.484667968750003],[14.358300781250023,-4.299414062500006],[14.449804687500006,-4.449511718750003],[14.365429687500011,-4.585546875],[14.410742187500006,-4.83125],[14.707910156250023,-4.881738281250009],[15.990039062500017,-3.766210937500006],[16.217382812500006,-3.0302734375],[16.21533203125,-2.177832031250006],[16.54072265625001,-1.840136718750003],[16.8798828125,-1.225878906250003],[17.752832031250023,-0.549023437500011],[18.072167968750023,2.01328125],[18.49091796875001,2.924414062499991],[18.6103515625,3.478417968749994],[18.594140625000023,4.346240234374989],[19.06855468750001,4.891406249999989],[19.5009765625,5.127490234374989],[19.806542968750023,5.089306640624997],[20.226367187500017,4.829638671874989],[20.55810546875,4.462695312499989],[22.422167968750017,4.134960937499997],[22.864550781250017,4.723876953125],[23.41718750000001,4.663134765624989],[24.31982421875,4.994140625],[25.065234375000017,4.967431640624994],[25.52509765625001,5.31210937499999],[26.822070312500017,5.062402343749994],[27.071875,5.199755859374989],[27.4033203125,5.109179687499989]]]},"properties":{"name":"Dem. Rep. Congo","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[18.6103515625,3.478417968749994],[18.49091796875001,2.924414062499991],[18.072167968750023,2.01328125],[17.752832031250023,-0.549023437500011],[16.8798828125,-1.225878906250003],[16.54072265625001,-1.840136718750003],[16.21533203125,-2.177832031250006],[16.217382812500006,-3.0302734375],[15.990039062500017,-3.766210937500006],[14.707910156250023,-4.881738281250009],[14.410742187500006,-4.83125],[14.365429687500011,-4.585546875],[14.449804687500006,-4.449511718750003],[14.358300781250023,-4.299414062500006],[13.94091796875,-4.484667968750003],[13.717089843750017,-4.454492187500009],[13.659570312500023,-4.721484375],[13.414941406250023,-4.83740234375],[13.136621093750023,-4.604296875],[13.08740234375,-4.601953125],[13.07275390625,-4.634765625],[13.048046875000011,-4.619238281250006],[12.971386718750011,-4.5517578125],[12.881054687500011,-4.445117187500003],[12.84814453125,-4.428906250000011],[12.50146484375,-4.5875],[12.018359375000017,-5.004296875],[11.777539062500011,-4.565820312500009],[11.130175781250017,-3.916308593750003],[11.234472656250006,-3.690820312500009],[11.504296875000023,-3.5203125],[11.685742187500011,-3.68203125],[11.8798828125,-3.665917968750009],[11.934179687500006,-3.318554687500011],[11.715429687500006,-3.176953125000011],[11.760156250000023,-2.983105468750011],[11.537792968750011,-2.83671875],[11.60546875,-2.342578125],[12.064453125,-2.41259765625],[12.446386718750006,-2.329980468750009],[12.43212890625,-1.928906250000011],[12.590429687500006,-1.826855468750011],[12.793554687500006,-1.931835937500011],[12.991992187500017,-2.313378906250009],[13.464941406250006,-2.395410156250009],[13.733789062500023,-2.138476562500003],[13.886914062500011,-2.465429687500006],[13.993847656250011,-2.490625],[14.199804687500006,-2.354199218750011],[14.162890625000017,-2.217578125],[14.383984375000011,-1.890039062500009],[14.47412109375,-0.573437500000011],[13.860058593750011,-0.203320312500011],[13.949609375000023,0.353808593749989],[14.32421875,0.62421875],[14.429882812500011,0.901464843749991],[14.180859375000011,1.370214843749991],[13.851367187500017,1.41875],[13.21630859375,1.2484375],[13.172167968750017,1.78857421875],[13.293554687500006,2.161572265624997],[14.578906250000017,2.199121093749994],[14.902441406250006,2.012304687499991],[15.741601562500023,1.914990234374997],[16.059375,1.676220703124997],[16.183398437500017,2.270068359374989],[16.468554687500017,2.831738281249997],[16.610742187500023,3.50537109375],[17.491601562500023,3.687304687499989],[18.160937500000017,3.499804687499989],[18.474414062500017,3.622998046874997],[18.6103515625,3.478417968749994]]]},"properties":{"name":"Congo","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-71.31972656249997,11.861914062500048],[-71.95810546875,11.66640625],[-72.24848632812501,11.196435546875009],[-72.690087890625,10.835839843749994],[-72.86933593750001,10.49125976562496],[-73.00654296874998,9.789160156250006],[-73.36621093749997,9.194140625000017],[-73.05839843749999,9.259570312500031],[-72.79638671874997,9.10898437499999],[-72.66542968749994,8.62758789062498],[-72.39033203124995,8.287060546874969],[-72.47197265624996,7.524267578124991],[-72.20771484374995,7.37026367187498],[-72.00664062499993,7.032617187500023],[-71.12861328124993,6.98671875],[-70.73715820312503,7.090039062499997],[-70.12919921874999,6.95361328125],[-69.42714843749997,6.123974609374997],[-68.47177734375,6.156542968749974],[-67.85917968749999,6.289892578124963],[-67.48198242187499,6.18027343750002],[-67.47387695312503,5.929980468750003],[-67.82490234374995,5.270458984375026],[-67.85527343750002,4.506884765624989],[-67.66162109375,3.864257812499986],[-67.3111328125,3.41586914062502],[-67.85908203124998,2.793603515624994],[-67.61870117187496,2.793603515624994],[-67.21083984375,2.390136718750043],[-66.87602539062499,1.223046875000037],[-67.082275390625,1.185400390625006],[-67.11923828124998,1.703613281249986],[-67.40043945312499,2.116699218750028],[-67.93623046874998,1.748486328124969],[-68.19379882812495,1.987011718749983],[-68.25595703125,1.845507812500017],[-68.17656249999999,1.719824218749991],[-69.84858398437493,1.708740234375043],[-69.85214843750003,1.05952148437504],[-69.31181640624999,1.050488281249969],[-69.15332031249994,0.65878906250002],[-69.47211914062498,0.72993164062504],[-70.05390624999993,0.578613281250028],[-70.07050781249993,-0.13886718750004],[-69.63398437500001,-0.50927734375],[-69.40024414062498,-1.194921874999977],[-69.66904296875003,-2.667675781249997],[-69.94819335937498,-4.200585937500009],[-69.96591796875003,-4.2359375],[-70.16752929687499,-4.050195312500009],[-70.24028320312496,-3.882714843749994],[-70.2984375,-3.844238281249972],[-70.33950195312502,-3.814355468750009],[-70.73510742187497,-3.781542968749989],[-70.09584960937494,-2.658203125000014],[-70.16474609374995,-2.639843750000011],[-70.24443359375002,-2.606542968749977],[-70.29462890624995,-2.552539062499989],[-70.57587890624995,-2.418261718749989],[-70.64799804687499,-2.405761718750014],[-70.70537109374996,-2.341992187499983],[-70.91455078125003,-2.218554687499974],[-70.96855468750002,-2.206835937499989],[-71.02729492187498,-2.225781250000026],[-71.11337890625003,-2.245410156250031],[-71.19638671874998,-2.313085937499963],[-71.39697265625,-2.334082031249977],[-71.55947265624997,-2.224218749999977],[-71.75253906249995,-2.15273437499998],[-71.80273437499997,-2.166308593749989],[-71.86728515624998,-2.227734374999983],[-71.932470703125,-2.288671874999963],[-71.98427734375,-2.326562499999952],[-72.21845703125001,-2.400488281250006],[-72.94111328124998,-2.394042968750028],[-72.9896484375,-2.33974609374998],[-73.15449218749993,-2.278222656249966],[-73.19697265624995,-1.830273437500011],[-73.49628906249993,-1.69306640625004],[-73.66430664062497,-1.248828124999946],[-73.86318359374997,-1.19667968749998],[-73.92695312500001,-1.125195312499983],[-73.98681640625003,-1.098144531249986],[-74.05439453124995,-1.028613281250031],[-74.18076171875,-0.997753906249955],[-74.24638671874999,-0.970605468750023],[-74.28388671874998,-0.927832031250006],[-74.33442382812498,-0.85087890624996],[-74.41787109375,-0.580664062499977],[-74.46518554687498,-0.517675781250034],[-74.51386718749993,-0.470117187500023],[-74.555078125,-0.429882812499997],[-74.61635742187494,-0.370019531249966],[-74.691650390625,-0.335253906249989],[-74.75537109375003,-0.298632812499989],[-74.78046874999998,-0.24453125],[-74.80175781249997,-0.200097656249994],[-75.13837890624998,-0.050488281249969],[-75.28447265624999,-0.10654296875002],[-75.77666015624999,0.08925781249998],[-76.27060546874998,0.439404296874997],[-76.49462890624997,0.23544921875002],[-77.396337890625,0.393896484374963],[-77.46767578124997,0.636523437500017],[-77.702880859375,0.837841796874997],[-78.1806640625,0.968554687499974],[-78.85966796874996,1.455371093750031],[-79.02543945312499,1.623681640625037],[-78.79296874999994,1.848730468749963],[-78.576904296875,1.773779296874977],[-78.59169921875,2.356640624999969],[-78.41689453125,2.483496093749963],[-78.06665039062494,2.509130859375034],[-77.81357421875,2.716357421874974],[-77.076806640625,3.913281250000026],[-77.26352539062503,3.893212890625023],[-77.27802734374995,4.058496093750023],[-77.35820312499996,3.944726562500037],[-77.40874023437496,4.24775390625004],[-77.52070312499993,4.212792968750023],[-77.35351562499997,4.398291015624977],[-77.28632812499995,4.72172851562496],[-77.373291015625,5.323974609375],[-77.53442382812497,5.537109374999986],[-77.24926757812497,5.780175781250037],[-77.46943359374995,6.176757812500014],[-77.368798828125,6.575585937499994],[-77.90117187499999,7.229345703125048],[-77.76191406249995,7.698828125000034],[-77.53828124999995,7.56625976562502],[-77.19599609374995,7.972460937500003],[-77.47851562499994,8.498437500000037],[-77.37421874999993,8.65830078125002],[-76.85185546875002,8.09047851562498],[-76.924658203125,7.973193359374974],[-76.78657226562493,7.931591796875026],[-76.7720703125,8.310546875000043],[-76.92045898437496,8.573730468750014],[-76.27685546875,8.989111328124991],[-76.02724609374997,9.365771484374989],[-75.63935546874998,9.450439453125014],[-75.680029296875,9.729785156249989],[-75.53857421874997,10.205175781250034],[-75.708349609375,10.143408203124963],[-75.44599609374995,10.610888671874989],[-74.84458007812498,11.109716796875006],[-74.330224609375,10.996679687499991],[-74.51625976562497,10.8625],[-74.40087890625,10.76523437499999],[-74.14291992187503,11.320849609375031],[-73.31337890624997,11.295751953124991],[-72.275,11.88925781250002],[-72.13574218749994,12.188574218749977],[-71.71455078124993,12.41997070312496],[-71.26210937499997,12.335302734375034],[-71.13730468750003,12.04633789062504],[-71.31972656249997,11.861914062500048]]]},"properties":{"name":"Colombia","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[43.788671875,-12.307031250000023],[43.85898437500006,-12.368261718749977],[43.66367187500006,-12.342871093749949],[43.63134765624997,-12.247070312499972],[43.788671875,-12.307031250000023]]],[[[44.476367187500074,-12.08154296875],[44.504980468750006,-12.356542968749991],[44.220117187499994,-12.171386718750014],[44.476367187500074,-12.08154296875]]],[[[43.46582031249997,-11.901269531249966],[43.226660156250006,-11.75185546874998],[43.2990234375001,-11.374511718750028],[43.39296875000005,-11.408593749999952],[43.46582031249997,-11.901269531249966]]]]},"properties":{"name":"Comoros","childNum":3}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-24.308251953124966,14.856298828124991],[-24.44052734374992,14.834814453124963],[-24.496875,14.980273437500017],[-24.329492187499937,15.019482421875011],[-24.308251953124966,14.856298828124991]]],[[[-23.18212890624997,15.136767578125017],[-23.210253906250017,15.32353515625006],[-23.119335937499955,15.26840820312502],[-23.18212890624997,15.136767578125017]]],[[[-23.444238281249994,15.00795898437498],[-23.5046875,14.916113281250006],[-23.70537109374999,14.96132812499998],[-23.74809570312499,15.328515625],[-23.444238281249994,15.00795898437498]]],[[[-22.917724609375,16.237255859374955],[-22.69262695312497,16.169042968750006],[-22.710107421874994,16.043359374999966],[-22.95927734374996,16.045117187499983],[-22.917724609375,16.237255859374955]]],[[[-24.08769531249999,16.62250976562501],[-24.03271484374997,16.57202148437503],[-24.243066406250023,16.599414062500017],[-24.32236328124992,16.49311523437504],[-24.398095703124966,16.61840820312497],[-24.08769531249999,16.62250976562501]]],[[[-22.888330078124966,16.659082031249994],[-22.980615234374937,16.700878906249983],[-22.93291015624999,16.84101562500004],[-22.888330078124966,16.659082031249994]]],[[[-24.88706054687495,16.81811523437497],[-25.09306640624999,16.83251953125],[-24.936474609374983,16.92211914062503],[-24.88706054687495,16.81811523437497]]],[[[-25.169824218749994,16.94648437500001],[-25.308300781249955,16.93583984374999],[-25.337109374999955,17.091015624999983],[-25.03466796875,17.176464843749983],[-24.979687499999983,17.09472656250003],[-25.169824218749994,16.94648437500001]]]]},"properties":{"name":"Cape Verde","childNum":8}},{"geometry":{"type":"Polygon","coordinates":[[[-83.6419921875,10.917236328125],[-83.346826171875,10.315380859374997],[-82.77841796874999,9.66953125],[-82.56357421874999,9.57666015625],[-82.56923828125,9.55820312499999],[-82.58652343749999,9.538818359375],[-82.64409179687499,9.505859375],[-82.801025390625,9.591796875],[-82.843994140625,9.57080078125],[-82.86015624999999,9.511474609375],[-82.88896484374999,9.481005859374989],[-82.925048828125,9.469042968749989],[-82.93984375,9.449169921874997],[-82.94033203125,9.060107421874989],[-82.88134765625,9.055859375],[-82.78305664062499,8.990283203124989],[-82.741162109375,8.951708984374989],[-82.72783203124999,8.916064453124989],[-82.91704101562499,8.740332031249991],[-82.855712890625,8.635302734374989],[-82.84477539062499,8.489355468749991],[-82.86162109374999,8.45351562499999],[-83.02734375,8.337744140624991],[-82.879345703125,8.070654296874991],[-83.12333984374999,8.353076171874989],[-83.16240234374999,8.588183593749989],[-83.4697265625,8.706835937499989],[-83.29150390625,8.406005859375],[-83.54375,8.445849609374989],[-83.73408203125,8.614453125],[-83.613720703125,8.804052734374991],[-83.73691406249999,9.150292968749994],[-84.58159179687499,9.568359375],[-84.71494140624999,9.8994140625],[-85.23564453124999,10.242089843749994],[-85.2365234375,10.107373046874997],[-84.88642578125,9.820947265624994],[-85.07705078125,9.60195312499999],[-85.31455078124999,9.8109375],[-85.62485351562499,9.902441406249991],[-85.84965820312499,10.292041015624989],[-85.667236328125,10.745019531249994],[-85.90800781249999,10.897558593749991],[-85.7443359375,11.06210937499999],[-85.5841796875,11.189453125],[-84.9091796875,10.9453125],[-84.6341796875,11.045605468749997],[-83.91928710937499,10.7353515625],[-83.71293945312499,10.785888671875],[-83.6419921875,10.917236328125]]]},"properties":{"name":"Costa Rica","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-82.56176757812503,21.571679687500023],[-82.959619140625,21.441308593750023],[-83.18378906250001,21.59345703125004],[-82.97358398437498,21.592285156250057],[-83.08251953124997,21.791406250000023],[-82.99121093750003,21.942724609375034],[-82.71455078124998,21.890283203125023],[-82.56176757812503,21.571679687500023]]],[[[-77.66899414062493,21.951953125000045],[-77.91855468749998,22.088085937499983],[-77.63369140624994,22.054003906250074],[-77.66899414062493,21.951953125000045]]],[[[-77.87939453125,22.127539062500034],[-78.04165039062502,22.201269531250034],[-77.99921874999998,22.298730468749994],[-77.87939453125,22.127539062500034]]],[[[-81.83745117187499,23.163037109374955],[-81.26235351562497,23.156835937500034],[-81.14462890624998,23.054931640625057],[-80.65014648437494,23.10307617187499],[-80.36489257812502,22.943408203125074],[-79.82026367187498,22.887011718750045],[-79.27568359374999,22.407617187499994],[-78.68647460937493,22.366845703125023],[-77.63681640624995,21.79736328125],[-77.49711914062502,21.78833007812503],[-77.58315429687497,21.889257812499977],[-77.49726562499995,21.871630859375045],[-77.14414062499995,21.643603515625017],[-77.36616210937498,21.612646484375034],[-77.25288085937498,21.483496093750006],[-77.0986328125,21.589013671875023],[-76.86743164062497,21.330419921875006],[-75.72294921874996,21.111035156249983],[-75.59580078125,20.99467773437499],[-75.72456054687493,20.71455078125004],[-74.882568359375,20.65063476562497],[-74.51313476562495,20.384570312500045],[-74.16748046874997,20.292187499999955],[-74.15371093750002,20.168554687500006],[-75.11640624999995,19.901416015625017],[-75.151611328125,20.008349609375045],[-75.29047851562495,19.893115234375017],[-76.15844726562497,19.98974609374997],[-77.715087890625,19.85546874999997],[-77.10380859374999,20.407519531250017],[-77.22958984374995,20.64375],[-78.11635742187497,20.761865234374994],[-78.49077148437493,21.05371093750003],[-78.72768554687497,21.592724609374955],[-79.35742187500003,21.58515625000001],[-80.23134765625,21.872167968750063],[-80.48544921874998,22.1234375],[-81.03564453124997,22.073583984375063],[-81.18549804687495,22.26796875000005],[-81.284375,22.109423828125074],[-81.84941406249993,22.21367187499999],[-82.077734375,22.3876953125],[-81.71035156250002,22.496679687500006],[-81.83881835937498,22.672460937500034],[-82.73803710937497,22.689257812500074],[-83.37963867187503,22.222998046875034],[-83.90073242187495,22.17011718750001],[-84.03095703124993,21.94311523437503],[-84.502587890625,21.776171875000045],[-84.50136718750002,21.930273437499977],[-84.88720703125003,21.856982421875074],[-84.32636718749998,22.074316406250034],[-84.36127929687498,22.37890625],[-84.04492187500003,22.666015625000057],[-83.25781249999997,22.967578125000017],[-81.83745117187499,23.163037109374955]]]]},"properties":{"name":"Cuba","childNum":4}},{"geometry":{"type":"Polygon","coordinates":[[[-68.75107421874999,12.059765625],[-68.9951171875,12.141845703125],[-69.15888671875,12.380273437499994],[-68.75107421874999,12.059765625]]]},"properties":{"name":"Curaçao","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-81.36953124999997,19.34887695312497],[-81.10712890624995,19.305175781250057],[-81.40478515624994,19.278417968750006],[-81.36953124999997,19.34887695312497]]],[[[-79.823388671875,19.711914062500057],[-79.90620117187501,19.702539062499994],[-79.74228515625,19.757128906250017],[-79.823388671875,19.711914062500057]]]]},"properties":{"name":"Cayman Is.","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[34.004492187500006,35.065234375],[33.47578125000001,35.000341796875],[33.3837890625,35.1626953125],[32.91953125,35.087841796875],[32.71269531250002,35.171044921874994],[32.8798828125,35.180566406249994],[32.94160156250001,35.390429687499996],[33.60761718750001,35.354150390624994],[34.55605468750002,35.662060546875],[33.941992187500006,35.292041015624996],[34.004492187500006,35.065234375]]]},"properties":{"name":"N. Cyprus","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[32.71269531250002,35.171044921874994],[32.91953125,35.087841796875],[33.3837890625,35.1626953125],[33.47578125000001,35.000341796875],[34.004492187500006,35.065234375],[34.05019531250002,34.98837890625],[33.69941406250001,34.969873046874994],[33.007910156250006,34.569580078125],[32.44902343750002,34.729443359375],[32.31718750000002,34.9533203125],[32.30097656250001,35.082958984375],[32.71269531250002,35.171044921874994]]]},"properties":{"name":"Cyprus","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[14.809375,50.858984375],[14.895800781250017,50.861376953124996],[14.98291015625,50.886572265625],[14.99375,51.01435546875],[16.007226562500023,50.611621093749996],[16.2822265625,50.655615234375],[16.419726562500017,50.573632812499994],[16.210351562500023,50.423730468749994],[16.63916015625,50.1021484375],[16.989648437500023,50.2369140625],[16.88007812500001,50.427050781249996],[17.41523437500001,50.254785156249994],[17.702246093750006,50.307177734374996],[17.627050781250006,50.11640625],[17.874804687500017,49.972265625],[18.0283203125,50.03525390625],[18.562402343750023,49.879345703125],[18.83222656250001,49.510791015624996],[18.160937500000017,49.257373046874996],[18.0859375,49.06513671875],[17.75849609375001,48.888134765625],[17.135644531250023,48.841064453125],[16.953125,48.598828125],[16.543554687500006,48.796240234375],[16.057226562500006,48.754785156249994],[15.066796875000023,48.997851562499996],[14.691308593750023,48.59921875],[14.049121093750017,48.602490234375],[13.814746093750017,48.766943359375],[13.769921875000023,48.815966796874996],[13.684960937500023,48.876708984375],[13.547656250000017,48.95966796875],[13.440722656250017,48.95556640625],[13.401171875000017,48.977587890624996],[12.916699218750011,49.33046875],[12.68115234375,49.414501953125],[12.390527343750023,49.739648437499994],[12.5125,49.87744140625],[12.09921875,50.310986328125],[12.134863281250006,50.3109375],[12.1748046875,50.288378906249996],[12.231152343750011,50.244873046875],[12.27734375,50.181445312499996],[12.3056640625,50.205712890624994],[12.549023437500011,50.393408203125],[13.016406250000017,50.490380859374994],[13.18115234375,50.510498046875],[14.369042968750023,50.898730468749996],[14.319726562500023,51.03779296875],[14.545703125000017,50.993945312499996],[14.559667968750006,50.954931640625],[14.59521484375,50.918603515624994],[14.623828125000017,50.91474609375],[14.613574218750017,50.85556640625],[14.658203125,50.8326171875],[14.723339843750011,50.814697265625],[14.766503906250023,50.818310546875],[14.797460937500006,50.842333984374996],[14.809375,50.858984375]]]},"properties":{"name":"Czech Rep.","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[14.1982421875,53.919042968750034],[13.92578125,53.879052734374966],[13.827734375,54.12724609374999],[14.1982421875,53.919042968750034]]],[[[13.709179687500011,54.382714843749994],[13.707324218750074,54.281152343749994],[13.190039062500034,54.32563476562501],[13.336816406249994,54.697119140625006],[13.65761718750008,54.55957031249997],[13.709179687500011,54.382714843749994]]],[[[9.739746093750028,54.82553710937498],[10.022167968750011,54.673925781250006],[9.86865234375,54.47246093749999],[10.731542968750006,54.31625976562506],[11.013378906250068,54.37915039062497],[11.008593750000074,54.18115234374997],[10.810742187500068,54.075146484374955],[10.917773437500045,53.99531250000004],[11.39960937500004,53.94462890625002],[12.111328125,54.168310546875006],[12.57539062500004,54.467382812500006],[13.028613281250017,54.411035156249994],[13.448046875000017,54.14086914062503],[13.724218750000063,54.153222656249966],[13.865527343750074,53.85336914062498],[14.258886718750006,53.729638671874994],[14.298730468750051,53.55644531249999],[14.41455078125,53.28349609374996],[14.412304687500011,53.216748046874955],[14.410937500000074,53.19902343749999],[14.368554687500051,53.105566406250034],[14.293164062500068,53.026757812499966],[14.138867187500068,52.93286132812503],[14.128613281250011,52.87822265625002],[14.253710937500017,52.78251953124996],[14.514062500000023,52.645605468750034],[14.619433593750017,52.52851562499998],[14.569726562499994,52.431103515624955],[14.554589843750023,52.35966796874996],[14.573925781250068,52.31416015625001],[14.615625,52.277636718750045],[14.679882812500068,52.25],[14.752539062500034,52.08183593750002],[14.601660156250034,51.832373046875006],[14.738671875000051,51.62714843750004],[14.7109375,51.54492187499997],[14.724707031250063,51.523876953124955],[14.90595703125004,51.463330078124955],[14.935546875000028,51.435351562500045],[14.9638671875,51.095117187499994],[14.917480468750057,51.00874023437498],[14.814257812499989,50.871630859375045],[14.809375,50.858984375000034],[14.797460937500034,50.84233398437502],[14.766503906250051,50.81831054687501],[14.72333984375004,50.81469726562497],[14.658203125,50.832617187500006],[14.613574218750045,50.85556640625006],[14.623828125000017,50.91474609375004],[14.595214843750057,50.91860351562502],[14.559667968750006,50.954931640625034],[14.545703124999989,50.99394531249999],[14.319726562500051,51.037792968749955],[14.36904296875008,50.89873046874996],[13.18115234375,50.510498046875],[13.016406250000017,50.490380859374994],[12.549023437500011,50.393408203125034],[12.3056640625,50.205712890624994],[12.27734375,50.18144531250002],[12.231152343749983,50.24487304687497],[12.174804687500057,50.28837890624996],[12.134863281250006,50.31093750000002],[12.099218750000034,50.31098632812504],[12.089843749999972,50.30175781250003],[12.089746093750051,50.2685546875],[12.294598214285761,50.13608119419641],[12.5125,49.87744140625],[12.390527343750051,49.739648437499994],[12.68115234375,49.41450195312501],[12.91669921875004,49.33046875000002],[13.401171875000074,48.97758789062499],[13.440722656250045,48.95556640625003],[13.547656250000074,48.95966796874998],[13.684960937500051,48.87670898437506],[13.769921875000051,48.81596679687502],[13.814746093750017,48.76694335937498],[13.802929687500011,48.74750976562501],[13.798828124999972,48.62167968750006],[13.785351562499983,48.58745117187502],[13.486621093750074,48.58183593750002],[13.471679687500028,48.57182617187502],[13.459863281250023,48.564550781250034],[13.409375,48.39414062500006],[13.322851562500006,48.33125],[13.215234375000023,48.301904296874994],[12.760351562500063,48.10698242187499],[12.95351562500008,47.890625],[12.897656250000068,47.721875],[13.054101562500051,47.655126953125034],[13.047949218750034,47.57915039062502],[13.031542968750074,47.50800781250001],[13.01435546875004,47.478076171875045],[12.968066406250017,47.475683593750006],[12.878906250000057,47.506445312500034],[12.809375,47.542187499999955],[12.782812500000034,47.56416015624998],[12.781152343750051,47.590429687500006],[12.796191406249989,47.60703125],[12.771386718750023,47.63940429687503],[12.685839843750074,47.66933593750002],[12.209277343750074,47.71826171875003],[12.196875,47.709082031250034],[12.203808593750011,47.64672851562503],[12.185644531250063,47.61953125],[11.041992187500028,47.39311523437496],[10.98085937499999,47.39814453125001],[10.893945312500051,47.470458984375],[10.870605468750028,47.500781250000045],[10.873046874999972,47.52021484375001],[10.741601562500023,47.52412109375001],[10.65869140625,47.547216796875006],[10.482812500000051,47.54179687499996],[10.439453125000028,47.55156249999999],[10.403906250000063,47.41699218750003],[10.369140625,47.366064453125034],[10.18300781250008,47.27880859375003],[10.200292968750063,47.36342773437505],[10.066308593750023,47.39335937500002],[10.064575892857171,47.42369419642856],[10.059863281250045,47.44907226562498],[10.034082031250023,47.47358398437501],[9.971582031249994,47.50532226562498],[9.839160156250017,47.55229492187496],[9.748925781250023,47.575537109375006],[9.524023437500034,47.52421875000002],[8.572656250000023,47.775634765625],[8.435742187500011,47.73134765625002],[8.403417968750006,47.687792968750045],[8.413281250000068,47.66269531249998],[8.451757812500006,47.65180664062498],[8.552343750000063,47.65913085937498],[8.56708984375004,47.65190429687502],[8.57050781250004,47.63779296874998],[8.55947265625008,47.62402343750003],[8.477636718750034,47.61269531250002],[8.454003906249994,47.59619140625003],[7.615625,47.59272460937504],[7.616601562500023,48.15678710937502],[8.134863281250006,48.97358398437498],[7.450585937500051,49.152197265625034],[6.735449218750006,49.16059570312498],[6.344335937500006,49.45273437499998],[6.4873046875,49.798486328124994],[6.204882812500017,49.915136718750034],[6.13818359375,49.97431640625001],[6.10976562500008,50.034375],[6.116503906250045,50.120996093749966],[6.340917968750006,50.451757812500034],[5.993945312500017,50.75043945312504],[6.048437500000034,50.90488281250006],[5.857519531250034,51.030126953125006],[6.129980468750034,51.14741210937501],[6.198828125000034,51.45],[5.948730468750057,51.80268554687501],[6.800390625,51.96738281249998],[6.724511718749994,52.080224609374966],[7.035156250000057,52.38022460937498],[6.748828125000074,52.464013671874994],[6.710742187500045,52.61787109374998],[7.033007812500045,52.65136718749997],[7.197265625000028,53.28227539062499],[7.074316406250034,53.477636718750006],[7.285253906250034,53.68134765625001],[8.00927734375,53.69072265624999],[8.108496093750063,53.46767578125002],[8.245214843750006,53.44531249999997],[8.333886718750051,53.606201171875],[8.495214843750063,53.39423828124998],[8.618945312500045,53.875],[9.20556640625,53.85595703124997],[9.783984375000074,53.554638671874955],[9.31201171875,53.859130859375],[8.92041015625,53.96533203125006],[8.906640625000023,54.26079101562502],[8.625781250000017,54.35395507812501],[8.951855468750011,54.46757812499996],[8.670312500000023,54.903417968750034],[9.739746093750028,54.82553710937498]]],[[[8.307714843750034,54.786962890625034],[8.451464843750017,55.05537109374998],[8.3798828125,54.89985351562501],[8.629589843750068,54.891748046874966],[8.307714843750034,54.786962890625034]]]]},"properties":{"name":"Germany","childNum":4}},{"geometry":{"type":"Polygon","coordinates":[[[43.24599609375002,11.499804687499989],[42.92275390625002,10.999316406249989],[42.557714843750006,11.080761718749997],[41.79824218750002,10.98046875],[41.79267578125001,11.68603515625],[42.378515625,12.46640625],[42.40859375000002,12.494384765625],[42.45,12.521337890624991],[42.47939453125002,12.513623046874997],[42.703710937500006,12.380322265624997],[42.76748046875002,12.4228515625],[42.825292968750006,12.5693359375],[42.86591796875001,12.622802734375],[42.88330078125,12.621289062499997],[43.00566406250002,12.662304687499997],[43.11669921875,12.70859375],[43.353515625,12.367041015624991],[43.38027343750002,12.091259765624997],[42.64003906250002,11.560107421874989],[42.52177734375002,11.572167968749994],[42.58378906250002,11.496777343749997],[43.04277343750002,11.588476562499991],[43.24599609375002,11.499804687499989]]]},"properties":{"name":"Djibouti","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-61.281689453125,15.2490234375],[-61.37539062499999,15.227294921875],[-61.45810546874999,15.633105468750003],[-61.277246093749994,15.526708984374991],[-61.281689453125,15.2490234375]]]},"properties":{"name":"Dominica","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[11.361425781250006,54.891650390625045],[11.739550781250017,54.80742187500002],[11.765917968750074,54.67944335937506],[11.457421875000023,54.628857421874955],[11.035546875000051,54.77309570312505],[11.058593750000028,54.940576171874966],[11.361425781250006,54.891650390625045]]],[[[12.549218750000051,54.96577148437504],[12.11884765625004,54.91440429687506],[12.274023437500034,55.064111328124994],[12.549218750000051,54.96577148437504]]],[[[10.061230468750068,54.88637695312502],[9.80625,54.90600585937503],[9.78125,55.06904296875001],[10.061230468750068,54.88637695312502]]],[[[10.734082031250011,54.750732421875],[10.621679687500006,54.851416015625006],[10.95107421875008,55.15620117187501],[10.734082031250011,54.750732421875]]],[[[15.087695312500017,55.021875],[14.684179687500063,55.10224609375004],[14.765332031250068,55.296728515625034],[15.132617187500017,55.14453125000003],[15.087695312500017,55.021875]]],[[[10.645117187500006,55.60981445312498],[10.785253906250034,55.13339843749998],[10.44277343750008,55.04877929687498],[9.988769531250028,55.163183593750006],[9.860644531250045,55.515478515625034],[10.645117187500006,55.60981445312498]]],[[[12.665722656250068,55.596533203125006],[12.550878906250034,55.55625],[12.59921875,55.68022460937502],[12.665722656250068,55.596533203125006]]],[[[12.56875,55.785058593749966],[12.215039062500011,55.46650390624998],[12.413085937500028,55.28618164062502],[12.089941406250006,55.18813476562505],[12.050390625000034,54.81533203125002],[11.8623046875,54.77260742187502],[11.653808593750057,55.186914062499966],[11.286328125000068,55.20444335937498],[10.978906250000051,55.721533203125006],[11.322265625000028,55.752539062500006],[11.627734375000074,55.95688476562498],[11.819726562500023,55.69765625000002],[11.86640625000004,55.968164062499966],[12.218945312499983,56.11865234374997],[12.578710937500006,56.06406250000006],[12.56875,55.785058593749966]]],[[[11.052148437500051,57.25253906250006],[10.873828125000045,57.26225585937499],[11.174511718750011,57.322900390624994],[11.052148437500051,57.25253906250006]]],[[[9.739746093750028,54.82553710937498],[8.670312500000023,54.903417968750034],[8.61591796875004,55.41821289062503],[8.132128906250074,55.59980468749998],[8.16396484375008,56.60688476562498],[8.671679687500045,56.49565429687496],[8.88808593750008,56.73505859374998],[9.06708984375004,56.79384765625005],[9.196386718750006,56.70166015625],[9.2548828125,57.01171875000003],[8.992773437499977,57.01611328125003],[8.771972656250028,56.72529296875004],[8.468359375,56.66455078125],[8.284082031250023,56.85234374999999],[8.618554687500051,57.11127929687498],[9.43359375,57.17431640625003],[9.96230468750008,57.580957031249994],[10.609960937500034,57.73691406249998],[10.282714843750057,56.620507812499994],[10.926171875000051,56.44326171875002],[10.753417968750028,56.24199218749999],[10.31875,56.212890625],[10.18300781250008,55.86518554687504],[9.903710937500023,55.84282226562502],[10.02363281250004,55.76142578125004],[9.591113281250017,55.49321289062502],[9.670996093750063,55.26640624999999],[9.453710937500006,55.03955078125006],[9.732324218750023,54.96801757812506],[9.739746093750028,54.82553710937498]]]]},"properties":{"name":"Denmark","childNum":10,"cp":[10.2768332,56.1773879]}},{"geometry":{"type":"Polygon","coordinates":[[[-71.647216796875,19.195947265624994],[-71.746484375,19.285839843749997],[-71.71147460937499,19.486572265625],[-71.75742187499999,19.688183593749997],[-71.779248046875,19.718164062499994],[-71.6673828125,19.8486328125],[-70.95415039062499,19.913964843749994],[-70.19384765625,19.63803710937499],[-69.95683593749999,19.671875],[-69.739404296875,19.29921875],[-69.23247070312499,19.27182617187499],[-69.60595703125,19.206494140624997],[-69.62363281249999,19.117822265624994],[-68.684765625,18.90478515625],[-68.33916015624999,18.611523437499997],[-68.68740234375,18.21494140624999],[-68.9349609375,18.408007812500003],[-69.27451171874999,18.43984375],[-69.770654296875,18.443554687499997],[-70.479931640625,18.21728515625],[-70.644677734375,18.336230468750003],[-71.02783203125,18.273193359375],[-71.43896484375,17.63559570312499],[-71.63173828125,17.773632812499997],[-71.768310546875,18.03916015624999],[-71.76376953124999,18.20395507812499],[-71.737255859375,18.270800781250003],[-71.7619140625,18.34130859375],[-71.87255859375,18.416210937499997],[-71.940380859375,18.512597656249994],[-72.000390625,18.597900390625],[-71.98686523437499,18.6103515625],[-71.86650390624999,18.614160156249994],[-71.74321289062499,18.73291015625],[-71.72705078125,18.80322265625],[-71.733642578125,18.856396484374997],[-71.80712890625,18.987011718749997],[-71.647216796875,19.195947265624994]]]},"properties":{"name":"Dominican Rep.","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[8.207617187500006,36.518945312499994],[8.348730468750006,36.36796875],[8.318066406250011,35.654931640624994],[8.31640625,35.403125],[8.35986328125,35.299609375],[8.394238281250011,35.203857421875],[8.312109375,35.084619140624994],[8.27685546875,34.9794921875],[8.24560546875,34.73408203125],[7.513867187500011,34.080517578125],[7.534375,33.717919921874994],[7.877246093750017,33.172119140625],[8.1125,33.055322265624994],[8.333398437500023,32.543603515624994],[9.044042968750006,32.07236328125],[9.160253906250006,31.621337890625],[9.224023437500023,31.373681640624994],[9.51875,30.229394531249994],[9.310253906250011,30.115234375],[9.805273437500006,29.176953125],[9.916015625,27.785693359374996],[9.74755859375,27.330859375],[9.883203125000023,26.630810546874997],[9.491406250000011,26.333740234375],[9.4482421875,26.067138671875],[10.000683593750011,25.332080078125003],[10.255859375,24.591015625],[10.395898437500023,24.485595703125],[10.686132812500006,24.55136718749999],[11.507617187500017,24.314355468749994],[11.967871093750006,23.517871093750003],[7.481738281250017,20.873095703125003],[5.836621093750011,19.479150390624994],[4.227636718750006,19.142773437499997],[3.3564453125,18.986621093750003],[3.119726562500006,19.103173828124994],[3.255859375,19.4109375],[3.130273437500023,19.85019531249999],[1.685449218750023,20.378369140624997],[1.610644531250017,20.555566406249994],[1.165722656250011,20.817431640625003],[1.1455078125,21.102246093749997],[-1.947900390624994,23.124804687500003],[-4.822607421874977,24.99560546875],[-8.683349609375,27.2859375],[-8.683349609375,27.656445312499997],[-8.683349609375,27.900390625],[-8.659912109375,28.718603515625],[-7.485742187499994,29.392236328124994],[-7.427685546874983,29.425],[-7.142431640624977,29.619580078124997],[-6.855566406249977,29.601611328124996],[-6.755126953125,29.583837890625],[-6.635351562499977,29.568798828124997],[-6.597753906249977,29.578955078125],[-6.520556640624989,29.659863281249997],[-6.479736328125,29.820361328124996],[-6.00429687499999,29.83125],[-5.448779296874989,29.956933593749994],[-5.293652343749983,30.058642578124996],[-5.180126953124983,30.166162109374994],[-4.96826171875,30.465380859374996],[-4.778515624999983,30.552392578124994],[-4.529150390624977,30.625537109374996],[-4.322851562499977,30.698876953124994],[-4.148779296874977,30.8095703125],[-3.626904296874983,31.000927734374997],[-3.833398437499994,31.197802734374996],[-3.837109374999983,31.512353515624994],[-3.768164062499977,31.68955078125],[-3.700244140624989,31.700097656249994],[-3.604589843749977,31.686767578125],[-3.439794921874977,31.704541015624997],[-3.017382812499989,31.834277343749996],[-2.988232421874983,31.87421875],[-2.930859374999983,32.042529296874996],[-2.863427734374994,32.07470703125],[-1.275341796874983,32.089013671874994],[-1.16259765625,32.399169921875],[-1.111035156249983,32.552294921874996],[-1.188232421875,32.60849609375],[-1.29638671875,32.675683593749994],[-1.352148437499977,32.703369140625],[-1.45,32.784814453124994],[-1.510009765625,32.87763671875],[-1.550732421874983,33.073583984375],[-1.67919921875,33.318652343749996],[-1.795605468749983,34.751904296875],[-2.131787109374983,34.970849609374994],[-2.190771484374977,35.02978515625],[-2.219628906249994,35.10419921875],[-1.673632812499989,35.18310546875],[-0.426123046874977,35.8615234375],[-0.048242187499994,35.8328125],[0.312207031250011,36.162353515625],[0.9716796875,36.4439453125],[2.593359375,36.60068359375],[2.972851562500011,36.784472656249996],[3.779003906250011,36.89619140625],[4.758105468750017,36.896337890625],[5.29541015625,36.648242187499996],[6.486523437500011,37.085742187499996],[6.927539062500017,36.91943359375],[7.238476562500011,36.968505859375],[7.204296875000011,37.0923828125],[7.910449218750017,36.856347656249994],[8.576562500000023,36.93720703125],[8.601269531250011,36.833935546875],[8.207617187500006,36.518945312499994]]]},"properties":{"name":"Algeria","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-80.131591796875,-2.973144531249957],[-80.27294921875003,-2.995898437499974],[-80.22368164062502,-2.753125],[-80.08076171874995,-2.668847656249966],[-79.90903320312495,-2.725585937499972],[-80.131591796875,-2.973144531249957]]],[[[-90.42392578125,-1.339941406250034],[-90.51953124999994,-1.299121093749974],[-90.47719726562494,-1.22099609374996],[-90.42392578125,-1.339941406250034]]],[[[-89.41889648437498,-0.911035156249966],[-89.60859374999998,-0.888574218750009],[-89.28784179687503,-0.689843750000023],[-89.41889648437498,-0.911035156249966]]],[[[-90.33486328125,-0.771582031249977],[-90.54213867187502,-0.676464843749955],[-90.53168945312493,-0.581445312499966],[-90.26938476562498,-0.48466796874996],[-90.19272460937498,-0.658789062500006],[-90.33486328125,-0.771582031249977]]],[[[-91.42597656249995,-0.460839843749994],[-91.61074218749994,-0.44394531250002],[-91.64667968749998,-0.284472656249946],[-91.46015625000001,-0.255664062500031],[-91.42597656249995,-0.460839843749994]]],[[[-90.57392578124993,-0.333984375],[-90.8677734375,-0.271386718750037],[-90.78037109374998,-0.160449218749989],[-90.57392578124993,-0.333984375]]],[[[-91.27216796874998,0.025146484374986],[-90.799658203125,-0.752050781249991],[-90.90551757812497,-0.94052734375002],[-91.13105468750001,-1.019628906249977],[-91.41904296874998,-0.996679687500006],[-91.49541015624999,-0.860937499999977],[-91.120947265625,-0.559082031250028],[-91.36918945312493,-0.287207031249977],[-91.42885742187502,-0.023388671874955],[-91.59682617187497,0.002099609374994],[-91.36137695312496,0.125830078124977],[-91.27216796874998,0.025146484374986]]],[[[-78.90922851562502,1.252783203124977],[-78.99169921875003,1.293212890625043],[-78.89980468749997,1.359765625],[-78.90922851562502,1.252783203124977]]],[[[-75.28447265624999,-0.10654296875002],[-75.62626953124999,-0.122851562499974],[-75.63203125000001,-0.157617187500037],[-75.56059570312502,-0.200097656249994],[-75.49106445312498,-0.24833984374996],[-75.42470703124997,-0.408886718749983],[-75.259375,-0.59013671874996],[-75.24960937499998,-0.951855468750026],[-75.34819335937499,-0.966796874999957],[-75.38012695312503,-0.94023437499996],[-75.40805664062503,-0.92431640625],[-75.42041015624997,-0.962207031250003],[-75.570556640625,-1.53125],[-76.08979492187501,-2.133105468749974],[-76.6791015625,-2.562597656249991],[-77.860595703125,-2.981640625000011],[-78.240380859375,-3.472558593750009],[-78.345361328125,-3.397363281249966],[-78.64799804687499,-4.248144531250006],[-78.68603515625003,-4.562402343749994],[-78.86152343749998,-4.665039062499943],[-78.90761718749997,-4.714453124999977],[-78.92578125,-4.770703124999983],[-78.91420898437497,-4.818652343749974],[-78.919189453125,-4.858398437499986],[-78.97539062499999,-4.873242187499997],[-78.99526367187497,-4.908007812499974],[-79.03330078124998,-4.96914062499999],[-79.07626953125003,-4.990625],[-79.18666992187497,-4.958203124999983],[-79.26811523437493,-4.957617187499949],[-79.33095703124997,-4.92783203125002],[-79.39941406249997,-4.840039062499983],[-79.45576171874998,-4.766210937499949],[-79.50190429687495,-4.670605468750011],[-79.51616210937493,-4.539160156249963],[-79.57768554687496,-4.50058593750002],[-79.638525390625,-4.454882812500031],[-79.71098632812502,-4.467578124999946],[-79.79726562500002,-4.47636718749996],[-79.8451171875,-4.445898437499977],[-79.962890625,-4.390332031250026],[-80.06352539062499,-4.327539062500023],[-80.13955078125002,-4.296093750000011],[-80.19746093750001,-4.311035156249943],[-80.293359375,-4.416796875],[-80.38349609374998,-4.46367187499996],[-80.424169921875,-4.461425781250028],[-80.47856445312499,-4.430078125000037],[-80.48847656249995,-4.393652343749991],[-80.44384765625003,-4.335839843750023],[-80.35288085937495,-4.208496093750014],[-80.453759765625,-4.205175781249963],[-80.48847656249995,-4.165527343749972],[-80.49345703124999,-4.119140625000014],[-80.510009765625,-4.06953125000004],[-80.49013671874994,-4.010058593750003],[-80.43720703125001,-3.978613281249991],[-80.30327148437499,-4.005078124999969],[-80.26689453124993,-3.948828124999963],[-80.23051757812499,-3.924023437499969],[-80.19414062499996,-3.905859375],[-80.24375,-3.576757812500006],[-80.32465820312498,-3.387890625],[-79.96333007812501,-3.15771484375],[-79.72988281249997,-2.579101562499972],[-79.842138671875,-2.0673828125],[-79.92558593749996,-2.548535156249969],[-80.03017578124994,-2.556738281249949],[-80.00664062499993,-2.353808593750003],[-80.28471679687502,-2.706738281249955],[-80.93217773437493,-2.269140624999977],[-80.76059570312498,-1.934570312500028],[-80.90239257812499,-1.078906249999974],[-80.55390624999998,-0.847949218749989],[-80.45546875,-0.585449218749986],[-80.282373046875,-0.620507812500023],[-80.48227539062503,-0.368261718749963],[-80.046142578125,0.155371093750048],[-80.08828124999997,0.78476562500002],[-78.89965820312503,1.20625],[-78.85966796874996,1.455371093750031],[-78.1806640625,0.968554687499974],[-77.702880859375,0.837841796874997],[-77.46767578124997,0.636523437500017],[-77.396337890625,0.393896484374963],[-76.49462890624997,0.23544921875002],[-76.27060546874998,0.439404296874997],[-75.77666015624999,0.08925781249998],[-75.28447265624999,-0.10654296875002]]]]},"properties":{"name":"Ecuador","childNum":9}},{"geometry":{"type":"Polygon","coordinates":[[[34.24531250000001,31.208300781249996],[34.904296875,29.47734375],[34.736425781250006,29.27060546875],[34.39970703125002,28.01601562499999],[34.22011718750002,27.764306640624994],[33.76025390625,28.04765625],[33.24775390625001,28.567724609375],[32.56572265625002,29.973974609375],[32.35976562500002,29.630664062499996],[32.89824218750002,28.565234375],[33.54707031250001,27.898144531249997],[33.5498046875,27.607373046874997],[33.84931640625001,27.184912109375],[33.959082031250006,26.6490234375],[35.19414062500002,24.475146484375003],[35.78388671875001,23.937792968750003],[35.54082031250002,23.920654296875],[35.50439453125,23.779296875],[35.697851562500006,22.946191406249994],[36.22968750000001,22.628808593749994],[36.87138671875002,21.996728515624994],[31.434472656250023,21.995849609375],[31.486132812500017,22.14780273437499],[31.400292968750023,22.202441406250003],[31.260644531250023,22.00229492187499],[31.092675781250023,21.994873046875],[28.036425781250017,21.995361328125],[24.980273437500017,21.995849609375],[24.980273437500017,25.5888671875],[24.980273437500017,29.181884765625],[24.703222656250006,30.201074218749994],[24.96142578125,30.678515625],[24.85273437500001,31.334814453125],[25.150488281250006,31.654980468749997],[25.382226562500023,31.51279296875],[25.89326171875001,31.620898437499996],[27.248046875,31.377880859374997],[27.5400390625,31.212695312499996],[28.51484375000001,31.050439453124994],[29.072070312500017,30.830273437499997],[29.929785156250006,31.227490234374997],[30.22265625,31.2583984375],[30.395117187500006,31.4576171875],[30.92353515625001,31.566845703124997],[30.56298828125,31.4169921875],[31.001757812500017,31.462792968749994],[31.082910156250023,31.603320312499996],[31.5244140625,31.458251953125],[31.888964843750017,31.54140625],[32.13603515625002,31.341064453125],[31.8921875,31.482470703124996],[31.77109375,31.292578125],[32.10175781250001,31.092822265624996],[32.281835937500006,31.200878906249997],[32.21621093750002,31.29375],[32.60332031250002,31.06875],[33.66650390625,31.130419921874996],[34.19814453125002,31.322607421875],[34.24531250000001,31.208300781249996]]]},"properties":{"name":"Egypt","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[40.141210937500006,15.696142578125034],[40.399023437500006,15.579882812500045],[39.975195312500006,15.612451171875023],[39.94746093750004,15.696142578125034],[40.07050781250004,15.676611328125034],[39.93994140625003,15.744531250000023],[39.9567382812501,15.889404296875057],[40.141210937500006,15.696142578125034]]],[[[40.07646484375002,16.082421875000023],[40.11005859375004,15.985742187500051],[39.99609375000003,16.04267578125001],[40.07646484375002,16.082421875000023]]],[[[40.938574218750006,13.983105468749997],[40.82011718750002,14.111669921874991],[40.22148437500002,14.431152343749972],[39.531835937500006,14.53671875],[39.198046875000074,14.479394531250037],[39.1354492187501,14.581884765625034],[39.07421874999997,14.628222656249974],[39.02382812499999,14.628222656249974],[38.99570312500006,14.586865234374983],[38.81201171875003,14.482324218750009],[38.50439453124997,14.42441406250002],[38.43144531250002,14.428613281249994],[38.221484375000074,14.649658203124986],[38.002539062500006,14.737109375000045],[37.94345703125006,14.810546875],[37.884179687499994,14.852294921874972],[37.82031250000003,14.708496093749986],[37.70839843750005,14.45722656250004],[37.64843750000003,14.32255859375006],[37.571191406249994,14.149072265624966],[37.546777343749994,14.143847656249974],[37.507226562499994,14.156396484375037],[37.257226562499994,14.453759765625051],[37.024511718750006,14.271972656250057],[36.81191406250005,14.315039062500034],[36.67910156250005,14.307568359375026],[36.542382812499994,14.25820312499999],[36.52431640625005,14.256835937499986],[36.492285156250006,14.544335937500023],[36.470800781250006,14.736474609375009],[36.448144531249994,14.940087890625009],[36.42675781249997,15.132080078125043],[36.566015625,15.362109375],[36.9137695312501,16.296191406250045],[36.887792968750006,16.624658203124994],[36.9787109375001,16.800585937500045],[36.9757812500001,16.866552734375006],[36.99521484375006,17.020556640625017],[37.00898437500004,17.058886718750017],[37.06152343749997,17.061279296875057],[37.16953125000006,17.04140625],[37.41103515625005,17.061718749999955],[37.452929687500074,17.108691406250017],[37.51015625,17.28813476562499],[37.54746093750006,17.32412109375005],[37.78242187500004,17.458007812500057],[38.253515625,17.584765625000017],[38.26728515625004,17.616699218750057],[38.28984375000002,17.637011718750017],[38.34736328125004,17.68359375],[38.37373046875004,17.717333984375045],[38.42246093750006,17.823925781249983],[38.60947265625006,18.00507812500004],[39.03447265625002,17.085546875000034],[39.298925781250006,15.921093750000011],[39.78554687499999,15.124853515624991],[39.86376953124997,15.470312500000034],[40.20410156250003,15.014111328124983],[41.17646484375004,14.620312500000054],[41.65820312499997,13.983056640624994],[42.24511718749997,13.587646484374986],[42.39931640625005,13.212597656249969],[42.522851562499994,13.221484375],[42.796191406250074,12.864257812500057],[42.96953125000002,12.808349609375028],[42.99902343750003,12.899511718750048],[43.08291015625005,12.824609374999966],[43.11669921874997,12.708593749999963],[43.00566406250002,12.66230468750004],[42.88330078124997,12.621289062500026],[42.86591796875004,12.622802734374986],[42.82529296875006,12.569335937500014],[42.767480468749994,12.422851562500014],[42.70371093750006,12.380322265625054],[42.479394531249994,12.513623046875026],[42.45,12.521337890625006],[42.40859375,12.494384765625014],[42.37851562500006,12.46640625],[42.28994140625005,12.570214843750009],[42.225,12.661962890624963],[42.13427734374997,12.771435546874969],[41.95214843749997,12.88232421875],[41.85957031250004,13.025878906250028],[41.76503906250005,13.183935546874991],[41.362890625,13.499804687500031],[40.938574218750006,13.983105468749997]]]]},"properties":{"name":"Eritrea","childNum":3}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-17.887939453125,27.809570312500057],[-17.984765625000023,27.646386718750023],[-18.160546874999937,27.76147460937503],[-17.887939453125,27.809570312500057]]],[[[-15.400585937499955,28.147363281250023],[-15.436767578124972,27.810693359375023],[-15.71030273437492,27.784082031250023],[-15.809472656249966,27.994482421874977],[-15.682763671874994,28.15405273437497],[-15.400585937499955,28.147363281250023]]],[[[-17.184667968749977,28.02197265624997],[-17.324902343749955,28.11767578125003],[-17.25859375,28.203173828125045],[-17.103759765624943,28.111132812500017],[-17.184667968749977,28.02197265624997]]],[[[-16.33447265624997,28.37993164062499],[-16.41821289062497,28.15141601562496],[-16.65800781249999,28.007177734374977],[-16.905322265625017,28.33959960937503],[-16.12363281249992,28.57597656249996],[-16.33447265624997,28.37993164062499]]],[[[-14.196777343749943,28.169287109375063],[-14.332617187500006,28.056005859374977],[-14.49179687499992,28.100927734374977],[-14.231982421875017,28.21582031250003],[-14.003369140624983,28.706689453125023],[-13.85722656249996,28.73803710937503],[-13.928027343749989,28.25346679687499],[-14.196777343749943,28.169287109375063]]],[[[-17.83427734374999,28.49321289062496],[-18.00078124999999,28.758251953124955],[-17.928808593749977,28.844580078125063],[-17.7265625,28.724462890625006],[-17.83427734374999,28.49321289062496]]],[[[-13.715966796874966,28.911230468750034],[-13.85991210937496,28.869091796874983],[-13.823632812499966,29.013330078124966],[-13.463574218749955,29.237207031250023],[-13.477929687499966,29.00659179687503],[-13.715966796874966,28.911230468750034]]],[[[1.593945312500068,38.672070312499955],[1.40576171875,38.670996093750006],[1.436328125000017,38.768212890624994],[1.593945312500068,38.672070312499955]]],[[[1.445214843750051,38.91870117187503],[1.223339843750068,38.90385742187502],[1.3486328125,39.080810546875],[1.564453125,39.12104492187504],[1.623632812499977,39.03881835937497],[1.445214843750051,38.91870117187503]]],[[[3.145312500000017,39.79008789062499],[3.461816406250023,39.69775390625003],[3.072851562500006,39.30126953124997],[2.799804687500057,39.38505859374999],[2.700585937500023,39.54213867187502],[2.49951171875,39.47788085937498],[2.37001953125008,39.57207031249999],[3.15869140625,39.97050781249999],[3.145312500000017,39.79008789062499]]],[[[4.293652343750011,39.84184570312499],[3.8671875,39.958740234375],[3.853417968750051,40.06303710937502],[4.22578125000004,40.032373046874966],[4.293652343750011,39.84184570312499]]],[[[-1.794042968749949,43.407324218750006],[-1.410693359374932,43.240087890625034],[-1.460839843749937,43.05175781250006],[-1.300048828124943,43.10097656250002],[-0.586425781249943,42.798974609374966],[0.631640625000045,42.689599609374994],[0.696875,42.84511718750005],[1.428320312499977,42.59589843749998],[1.414843750000074,42.54838867187499],[1.448828124999977,42.43745117187504],[1.534082031250051,42.44169921875002],[1.7060546875,42.50332031250005],[1.859765625000051,42.457080078125045],[1.927929687500068,42.42631835937499],[2.032714843750028,42.353515625],[3.21142578125,42.43115234375],[3.248046875,41.94423828125002],[3.0048828125,41.76743164062506],[2.082617187500063,41.287402343750045],[1.032910156250068,41.06206054687496],[0.714648437500074,40.822851562500006],[0.891113281250057,40.72236328125004],[0.59609375000008,40.614501953125],[-0.327001953124949,39.519873046875006],[-0.204931640624949,39.062597656250034],[0.20156250000008,38.75917968750002],[-0.520800781249989,38.317285156249966],[-0.814648437500011,37.76992187500002],[-0.721582031249966,37.63105468749998],[-1.327539062499937,37.561132812500034],[-1.640966796874949,37.38696289062497],[-2.111523437499983,36.77666015624999],[-4.366845703124994,36.71811523437506],[-4.67412109374996,36.506445312500006],[-5.171484374999949,36.423779296874955],[-5.3609375,36.134912109374994],[-5.62548828125,36.02592773437499],[-6.040673828124937,36.18842773437498],[-6.38413085937492,36.63701171874996],[-6.216796875000028,36.91357421875],[-6.396191406249983,36.831640625],[-6.863769531250028,37.27890625],[-7.406152343749937,37.17944335937497],[-7.44394531249992,37.72827148437497],[-6.957568359374932,38.18789062499999],[-7.106396484374983,38.181005859375006],[-7.343017578124943,38.45742187500002],[-6.997949218749994,39.05644531250002],[-7.53569335937496,39.66157226562501],[-7.117675781249972,39.681689453125045],[-6.975390624999932,39.79838867187502],[-6.896093749999949,40.02182617187506],[-7.032617187499966,40.16791992187498],[-6.8101562499999,40.343115234375034],[-6.928466796874972,41.009130859375006],[-6.2125,41.53203125],[-6.542187499999955,41.672509765624994],[-6.61826171874992,41.9423828125],[-7.147119140625023,41.98115234374998],[-7.40361328124996,41.833691406249955],[-8.152490234374937,41.81196289062498],[-8.266064453124983,42.13740234375001],[-8.777148437500017,41.941064453124994],[-8.887207031249943,42.105273437500045],[-8.690917968749943,42.274169921875],[-8.815820312499966,42.285253906250034],[-8.730029296874989,42.411718750000034],[-8.8115234375,42.64033203124998],[-9.033105468750023,42.593847656250006],[-8.927197265624926,42.79858398437497],[-9.235205078124977,42.97690429687498],[-9.178076171874977,43.17402343749998],[-8.248925781249937,43.43940429687498],[-8.256738281249937,43.57988281249999],[-8.004687499999932,43.69438476562496],[-7.503613281249983,43.73994140625001],[-7.060986328124955,43.55395507812503],[-5.846679687499943,43.645068359375045],[-4.52304687499992,43.41572265625004],[-3.604638671874966,43.51948242187504],[-3.045605468749926,43.37158203125],[-2.875048828125017,43.454443359375006],[-2.337109374999926,43.32802734375002],[-1.794042968749949,43.407324218750006]]]]},"properties":{"name":"Spain","childNum":12,"cp":[-2.9366964,40.3438963]}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[22.61738281250004,58.62124023437502],[23.323242187500057,58.45083007812502],[22.730273437500045,58.23066406250001],[22.371679687499977,58.217138671875006],[21.996875,57.93134765624998],[22.187695312500068,58.15434570312502],[21.88212890624999,58.262353515624994],[21.862304687500057,58.497167968750034],[22.61738281250004,58.62124023437502]]],[[[23.343554687500017,58.550341796875045],[23.10908203125004,58.65922851562502],[23.332812500000045,58.648583984374994],[23.343554687500017,58.550341796875045]]],[[[22.923730468750023,58.826904296875],[22.54218750000001,58.68999023437499],[22.411035156250023,58.863378906250034],[22.05625,58.94360351562506],[22.6494140625,59.08710937499998],[22.90986328125004,58.99121093749997],[22.923730468750023,58.826904296875]]],[[[28.0125,59.484277343749966],[28.15107421875004,59.374414062499966],[27.434179687500006,58.787255859374994],[27.502441406250057,58.221337890624994],[27.778515625000068,57.87070312500006],[27.542089843750063,57.799414062500006],[27.4,57.66679687499999],[27.35195312500005,57.528125],[26.96601562500001,57.60913085937506],[26.532617187499994,57.53100585937503],[26.29804687500001,57.60107421875],[25.66015625,57.920166015625],[25.27265625000001,58.009375],[25.11103515625004,58.06342773437498],[24.45888671875005,57.907861328124994],[24.3625,57.86616210937501],[24.322558593750074,57.87060546875003],[24.529101562500045,58.35424804687497],[24.114843750000034,58.26611328125006],[23.767578125000057,58.36083984374997],[23.50927734375003,58.65854492187498],[23.680761718750063,58.787158203125074],[23.43203125,58.920654296875],[23.494433593750017,59.19565429687498],[24.083398437500023,59.29189453125005],[24.38037109375003,59.47265625],[25.44375,59.52114257812502],[25.50927734374997,59.63901367187506],[26.974707031250006,59.450634765624955],[28.0125,59.484277343749966]]]]},"properties":{"name":"Estonia","childNum":4}},{"geometry":{"type":"Polygon","coordinates":[[[38.43144531250002,14.428613281249994],[38.50439453125,14.424414062499991],[38.81201171875,14.482324218749994],[38.995703125,14.586865234374997],[39.02382812500002,14.628222656250003],[39.07421875,14.628222656250003],[39.13544921875001,14.581884765624991],[39.19804687500002,14.479394531249994],[39.531835937500006,14.53671875],[40.22148437500002,14.43115234375],[40.82011718750002,14.111669921874991],[40.938574218750006,13.983105468749997],[41.362890625,13.499804687500003],[41.76503906250002,13.183935546874991],[41.85957031250001,13.02587890625],[41.9521484375,12.88232421875],[42.13427734375,12.771435546874997],[42.225,12.661962890624991],[42.28994140625002,12.570214843749994],[42.378515625,12.46640625],[41.79267578125001,11.68603515625],[41.79824218750002,10.98046875],[42.557714843750006,11.080761718749997],[42.92275390625002,10.999316406249989],[42.65644531250001,10.6],[42.84160156250002,10.203076171874997],[43.181640625,9.879980468749991],[43.482519531250006,9.379492187499991],[43.98378906250002,9.008837890624989],[46.97822265625001,7.9970703125],[47.97822265625001,7.9970703125],[44.940527343750006,4.912011718749994],[43.988867187500006,4.950537109374991],[43.58349609375,4.85498046875],[43.12568359375001,4.644482421874997],[42.85664062500001,4.32421875],[42.02412109375001,4.137939453125],[41.91533203125002,4.031298828124989],[41.88398437500001,3.977734375],[41.73769531250002,3.979052734374989],[41.48193359375,3.96328125],[41.37246093750002,3.946191406249994],[41.22089843750001,3.943554687499997],[41.02080078125002,4.057470703124991],[40.765234375,4.27304687499999],[39.84218750000002,3.851464843749994],[39.79033203125002,3.754248046874991],[39.65751953125002,3.577832031249997],[39.49443359375002,3.456103515624989],[38.608007812500006,3.60009765625],[38.45156250000002,3.604833984374991],[38.22529296875001,3.618994140624991],[38.08613281250001,3.64882812499999],[37.15458984375002,4.254541015624994],[36.90556640625002,4.411474609374991],[36.02197265625,4.468115234374991],[35.76308593750002,4.808007812499994],[35.75615234375002,4.950488281249989],[35.779296875,5.105566406249991],[35.80029296875,5.156933593749997],[35.74501953125002,5.343994140625],[35.325292968750006,5.364892578124994],[35.2646484375,5.412060546874997],[35.26386718750001,5.457910156249994],[35.26835937500002,5.492285156249991],[34.98359375000001,5.858300781249994],[34.71064453125001,6.660302734374994],[34.06425781250002,7.225732421874994],[33.902441406250006,7.509521484375],[32.99892578125002,7.899511718749991],[33.28105468750002,8.437255859375],[33.95332031250001,8.443505859374994],[34.07275390625,8.545263671874991],[34.078125,9.461523437499991],[34.31123046875001,10.190869140624997],[34.34394531250001,10.658642578124997],[34.571875,10.880175781249989],[34.77128906250002,10.746191406249991],[34.93144531250002,10.864794921874989],[35.1123046875,11.816552734374994],[35.67021484375002,12.623730468749997],[36.12519531250001,12.75703125],[36.52431640625002,14.2568359375],[36.54238281250002,14.25820312499999],[36.67910156250002,14.307568359374997],[36.81191406250002,14.315039062499991],[37.024511718750006,14.27197265625],[37.25722656250002,14.453759765624994],[37.50722656250002,14.156396484374994],[37.54677734375002,14.143847656250003],[37.57119140625002,14.149072265624994],[37.6484375,14.322558593750003],[37.70839843750002,14.457226562499997],[37.8203125,14.70849609375],[37.88417968750002,14.852294921875],[37.943457031250006,14.810546875],[38.002539062500006,14.737109375],[38.22148437500002,14.649658203125],[38.43144531250002,14.428613281249994]]]},"properties":{"name":"Ethiopia","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[22.17509765624999,60.370751953124994],[22.41552734375003,60.30336914062505],[22.36054687500004,60.165576171875045],[22.07714843750003,60.286328124999955],[22.17509765624999,60.370751953124994]]],[[[21.450878906250068,60.529589843750045],[21.3,60.47978515625002],[21.224707031250006,60.62060546875003],[21.450878906250068,60.529589843750045]]],[[[21.2177734375,63.241308593750034],[21.415625,63.19736328125006],[21.25341796875,63.152001953124966],[21.08388671875008,63.277539062499955],[21.2177734375,63.241308593750034]]],[[[24.848242187500034,64.99101562499999],[24.576562500000023,65.04287109375],[24.970605468750023,65.05532226562502],[24.848242187500034,64.99101562499999]]],[[[28.96582031250003,69.02197265625],[28.414062500000057,68.90415039062506],[28.77285156250005,68.84003906249995],[28.470703125000057,68.48837890625],[28.685156250000034,68.189794921875],[29.343847656250006,68.06186523437506],[29.988085937500017,67.66826171874999],[29.066210937500045,66.89174804687497],[30.102734375000097,65.72626953125004],[29.715917968750063,65.62456054687502],[29.608007812500006,65.248681640625],[29.826953125000017,65.14506835937502],[29.60419921875004,64.968408203125],[30.072851562500063,64.76503906250005],[30.04189453125005,64.44335937499997],[30.513769531250006,64.2],[30.50390625000003,64.02060546875],[29.991503906250074,63.73515625000002],[31.180859375000097,63.208300781250074],[31.533984375000017,62.885400390624994],[31.18671875000004,62.48139648437504],[29.69013671875004,61.54609375000001],[27.797656250000074,60.53613281250003],[26.53466796874997,60.412890625000074],[26.56933593750003,60.62456054687502],[26.377734375000074,60.42407226562503],[25.955957031250023,60.474218750000034],[26.03583984375004,60.34150390625001],[25.75800781250004,60.26752929687504],[25.65644531250004,60.33320312499998],[24.44560546874999,60.021289062500045],[23.46357421875004,59.986230468749994],[23.021289062500074,59.81601562500006],[23.19843750000001,60.02182617187498],[22.911718750000063,60.20971679687497],[22.749804687500017,60.057275390624994],[22.462695312500045,60.029199218749966],[22.5849609375,60.380566406249955],[21.436035156250057,60.596386718749955],[21.605957031250057,61.59155273437503],[21.255957031250063,61.98964843750005],[21.143847656250045,62.73999023437506],[21.650976562500063,63.039306640625],[21.545117187499983,63.204296874999955],[22.31972656250005,63.310449218749994],[22.532324218750034,63.647851562499994],[23.598925781250074,64.04091796874997],[24.557910156250045,64.801025390625],[25.288183593750063,64.8603515625],[25.34785156250004,65.47924804687497],[24.674902343750006,65.67070312499999],[24.628027343750034,65.85917968750002],[24.15546875000004,65.80527343750006],[23.700292968750034,66.25263671874998],[23.988574218750045,66.81054687500003],[23.64150390625005,67.12939453124997],[23.733593750000068,67.42290039062499],[23.454882812500045,67.46025390625007],[23.63886718750004,67.95439453125002],[22.854101562500034,68.36733398437502],[21.99746093750005,68.52060546874998],[20.622167968750006,69.036865234375],[21.065722656250017,69.04174804687503],[21.06611328125001,69.21411132812497],[21.59375,69.273583984375],[22.410937500000074,68.719873046875],[23.324023437500017,68.64897460937502],[23.85400390625,68.80590820312503],[24.94140625000003,68.59326171875006],[25.748339843750017,68.99013671875],[26.07246093750004,69.69155273437497],[26.525390625000057,69.91503906250003],[27.127539062500063,69.90649414062497],[27.747851562500045,70.06484375],[29.14160156250003,69.67143554687505],[29.33339843750005,69.47299804687503],[28.846289062500006,69.17690429687502],[28.96582031250003,69.02197265625]]]]},"properties":{"name":"Finland","childNum":5}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[178.48789062500018,-18.97412109375],[177.95869140624998,-19.121582031250014],[178.33427734375013,-18.93447265625001],[178.48789062500018,-18.97412109375]]],[[[179.34931640625015,-18.10234375000003],[179.25351562500018,-18.030566406249974],[179.30644531250013,-17.944042968750026],[179.34931640625015,-18.10234375000003]]],[[[178.28017578124994,-17.37197265625001],[178.59160156249996,-17.651464843750006],[178.66767578125004,-18.080859375],[177.95546875000005,-18.264062500000023],[177.32138671875,-18.077539062500037],[177.26396484375007,-17.86347656250004],[177.5044921875,-17.539550781250043],[177.81796875000012,-17.38847656249999],[178.28017578124994,-17.37197265625001]]],[[[180,-16.96308593750001],[179.89697265625003,-16.96406250000004],[180,-16.785742187500034],[180,-16.96308593750001]]],[[[-179.97490234374996,-16.92480468750003],[-180,-16.96298828124999],[-180,-16.907812500000034],[-180,-16.82431640624999],[-180,-16.78554687499999],[-179.86098632812502,-16.68828124999999],[-179.97490234374996,-16.92480468750003]]],[[[-179.92944335937503,-16.502832031250037],[-179.999951171875,-16.540039062499986],[-179.900927734375,-16.431542968749994],[-179.92944335937503,-16.502832031250037]]],[[[179.99921875000004,-16.168554687499977],[179.56416015625004,-16.636914062499997],[179.56816406249996,-16.747460937499966],[179.93037109375004,-16.51943359375005],[179.9279296875001,-16.74443359374996],[179.41933593750005,-16.80654296875001],[179.20234375000004,-16.71269531249999],[179.00683593750003,-16.90019531249999],[178.70664062500018,-16.97617187500002],[178.4974609375,-16.78789062500003],[178.58359375000012,-16.621875],[178.80507812499994,-16.631445312500034],[179.55175781250003,-16.249902343750023],[180,-16.15292968749999],[179.99921875000004,-16.168554687499977]]]]},"properties":{"name":"Fiji","childNum":7}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-61.01875,-51.7857421875],[-60.87597656250003,-51.79423828125004],[-60.94755859374996,-51.94628906250002],[-61.14501953125003,-51.83945312500001],[-61.01875,-51.7857421875]]],[[[-60.28623046874995,-51.461914062500014],[-59.38759765625002,-51.35996093750003],[-59.26806640625,-51.42753906250003],[-59.92138671874997,-51.969531250000045],[-60.246337890625,-51.98642578125003],[-60.35346679687498,-52.13994140625004],[-60.686376953125034,-52.18837890624996],[-60.96142578125003,-52.05732421874999],[-60.23847656249998,-51.771972656250036],[-60.58251953125,-51.71269531250004],[-60.24516601562493,-51.638867187500004],[-60.56845703124998,-51.357812499999945],[-60.28623046874995,-51.461914062500014]]],[[[-60.11171875000002,-51.39589843749998],[-60.275341796874955,-51.28056640625002],[-60.06982421875,-51.307910156249996],[-60.11171875000002,-51.39589843749998]]],[[[-58.85019531249995,-51.26992187499998],[-58.42583007812502,-51.32421875000003],[-58.508935546874994,-51.48359375],[-58.271582031250034,-51.57470703124999],[-58.25922851562501,-51.417089843750034],[-57.976513671874955,-51.384375],[-57.80849609375002,-51.51796875],[-57.96044921874997,-51.58320312500003],[-57.79179687499999,-51.63613281249998],[-58.68349609375002,-51.93623046875001],[-58.65278320312498,-52.09921875],[-59.19584960937496,-52.01767578125],[-59.06801757812502,-52.17304687500003],[-59.341503906249955,-52.19599609375],[-59.395654296874966,-52.308007812499994],[-59.64873046875002,-52.134375],[-59.57080078124994,-51.92539062500003],[-59.05952148437498,-51.685449218749994],[-59.09663085937498,-51.49140624999998],[-58.85019531249995,-51.26992187499998]]]]},"properties":{"name":"Falkland Is.","childNum":4}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[55.79736328125003,-21.33935546875003],[55.36269531250005,-21.27363281250004],[55.23281250000005,-21.05839843749999],[55.311328125000074,-20.90410156249999],[55.661914062500074,-20.90625],[55.8390625000001,-21.13857421874998],[55.79736328125003,-21.33935546875003]]],[[[45.180273437500006,-12.97675781250004],[45.069433593750006,-12.895605468750034],[45.09238281250006,-12.653027343749997],[45.22314453124997,-12.752148437500026],[45.180273437500006,-12.97675781250004]]],[[[-51.65253906249998,4.061279296874972],[-52.327880859375,3.18173828125002],[-52.58300781250003,2.528906249999977],[-52.90346679687502,2.211523437499977],[-53.76777343749998,2.354833984375048],[-54.13007812499998,2.121044921875026],[-54.43310546875,2.207519531250057],[-54.51508789062498,2.245458984374963],[-54.55048828125001,2.293066406249991],[-54.59194335937502,2.313769531250031],[-54.61625976562499,2.326757812500006],[-54.60473632812497,2.335791015624991],[-54.56840820312502,2.342578125000031],[-54.53593749999999,2.343310546875003],[-54.48554687500001,2.416113281250006],[-54.402001953124966,2.46152343750002],[-54.25673828125002,2.713720703124977],[-54.19550781249998,2.817871093750057],[-54.17070312499999,2.993603515624969],[-54.203125,3.138183593750028],[-54.18803710937499,3.178759765625031],[-54.063183593749955,3.353320312499989],[-54.00957031249993,3.448535156250017],[-54.03422851562499,3.62939453125],[-54.350732421874994,4.054101562500023],[-54.47968749999998,4.836523437499991],[-53.91992187499997,5.768994140624983],[-52.899316406249966,5.425048828124986],[-52.29052734375003,4.942187500000031],[-52.324609374999966,4.770898437500037],[-52.21997070312494,4.862792968750014],[-52.05810546875003,4.717382812499963],[-52.00292968749997,4.352294921875014],[-51.82753906250002,4.635693359375026],[-51.65253906249998,4.061279296874972]]],[[[-60.826269531250006,14.494482421874991],[-61.063720703125,14.467089843750017],[-61.01132812499998,14.601904296875034],[-61.21333007812501,14.848583984375011],[-60.927148437499966,14.755175781249989],[-60.826269531250006,14.494482421874991]]],[[[-61.23046875000003,15.889941406250074],[-61.310742187499955,15.894677734374966],[-61.25,16.006298828124983],[-61.23046875000003,15.889941406250074]]],[[[-61.58955078125001,16.006933593750006],[-61.759423828124966,16.062060546875045],[-61.74804687499997,16.355273437500017],[-61.55234374999998,16.270898437499966],[-61.58955078125001,16.006933593750006]]],[[[-61.3271484375,16.230419921874983],[-61.522167968749955,16.22802734375003],[-61.47119140624994,16.506640625000045],[-61.17260742187497,16.25610351562497],[-61.3271484375,16.230419921874983]]],[[[9.480371093750023,42.80541992187503],[9.550683593750051,42.12973632812506],[9.186132812500034,41.38491210937502],[8.80751953125008,41.58837890625],[8.886816406249977,41.70068359375003],[8.621875,41.93071289062502],[8.700976562500045,42.09560546875002],[8.565625,42.35771484374996],[8.81484375000008,42.60791015625003],[9.313378906250023,42.71318359374999],[9.363183593750051,43.01738281249996],[9.480371093750023,42.80541992187503]]],[[[-1.17832031249992,45.904052734375],[-1.213574218750011,45.81660156250004],[-1.388671874999972,46.05039062500006],[-1.17832031249992,45.904052734375]]],[[[5.789746093749983,49.53828125000001],[5.823437500000011,49.50507812499998],[5.9013671875,49.48974609374997],[5.928906250000011,49.47753906249997],[5.959472656250028,49.45463867187502],[6.01142578125004,49.44545898437502],[6.074121093750023,49.45463867187502],[6.119921875000017,49.485205078125034],[6.181054687500051,49.498925781249966],[6.344335937500006,49.45273437499998],[6.735449218750006,49.16059570312498],[7.450585937500051,49.152197265625034],[8.134863281250006,48.97358398437498],[7.616601562500023,48.15678710937502],[7.615625,47.59272460937504],[7.343164062499994,47.43310546875003],[7.136035156249989,47.489843750000034],[6.968359375000034,47.453222656250034],[6.900390625000028,47.39423828125001],[7.000585937500034,47.339453125000034],[7.000585937500034,47.32250976562506],[6.978515625000057,47.30205078124996],[6.95205078125008,47.26718750000006],[6.820703125000051,47.163183593750006],[6.688085937500034,47.05825195312505],[6.66689453125008,47.026513671874966],[6.624804687500017,47.00434570312498],[6.45625,46.948339843750034],[6.438646763392874,46.774418247767855],[6.129687500000045,46.56699218750006],[6.118111049107182,46.447459542410726],[6.095898437500011,46.279394531250006],[5.970019531250045,46.214697265625034],[5.971484375000074,46.151220703125006],[6.006640625000045,46.14233398437506],[6.086621093750068,46.14702148437502],[6.19941406250004,46.19306640624998],[6.234667968750045,46.332617187500006],[6.321875,46.39370117187502],[6.428906250000011,46.43051757812506],[6.578222656250034,46.437353515625034],[6.758105468750017,46.41577148437497],[6.772070312500006,46.16513671874998],[6.897265625000017,46.05175781249997],[6.953710937500063,46.017138671875045],[7.00390625,45.95883789062506],[7.021093750000034,45.92578124999997],[6.790917968750023,45.740869140624966],[7.146386718750051,45.381738281249994],[7.07832031250004,45.23994140624998],[6.634765625000028,45.06816406249996],[6.99267578125,44.82729492187502],[6.900195312499989,44.33574218749996],[7.318554687500068,44.13798828125002],[7.637207031250057,44.16484375],[7.4931640625,43.767138671875045],[6.570214843750023,43.199072265625034],[6.115917968750011,43.07236328124998],[5.406542968750074,43.228515625],[5.05976562500004,43.44453125000004],[4.712109375000011,43.373291015625],[3.910839843750011,43.563085937500034],[3.258886718750063,43.193212890625006],[3.051757812500057,42.915136718750006],[3.21142578125,42.43115234375],[2.032714843750028,42.353515625],[1.927929687500068,42.42631835937499],[1.859765625000051,42.457080078125045],[1.7060546875,42.50332031250005],[1.709863281250051,42.604443359374955],[1.568164062500045,42.63500976562506],[1.501367187500023,42.64272460937502],[1.428320312499977,42.59589843749998],[0.696875,42.84511718750005],[0.631640625000045,42.689599609374994],[-0.586425781249943,42.798974609374966],[-1.300048828124943,43.10097656250002],[-1.460839843749937,43.05175781250006],[-1.410693359374932,43.240087890625034],[-1.794042968749949,43.407324218750006],[-1.484863281249943,43.56376953124999],[-1.245507812499937,44.55986328124999],[-1.07695312499996,44.68984375],[-1.152880859374989,44.764013671875006],[-1.245214843749977,44.66669921874998],[-1.081005859374983,45.532421874999955],[-0.548486328124966,45.00058593750006],[-0.790771484375028,45.46801757812497],[-1.195996093749983,45.714453125],[-1.03173828125,45.741064453125006],[-1.14628906249996,46.311376953125034],[-1.786523437499937,46.51484375000001],[-2.059375,46.81030273437497],[-2.01889648437492,47.03764648437502],[-2.197070312499989,47.16293945312506],[-2.027587890625028,47.27358398437502],[-1.742529296874949,47.21596679687502],[-1.97539062499996,47.31069335937505],[-2.503125,47.31206054687496],[-2.427685546874983,47.47089843749998],[-2.770312499999989,47.513867187499955],[-2.787207031249949,47.62553710937496],[-4.312109374999949,47.82290039062502],[-4.678808593749949,48.03950195312501],[-4.32944335937492,48.169970703125045],[-4.577148437499943,48.2900390625],[-4.241406249999926,48.30366210937501],[-4.719384765624966,48.363134765625034],[-4.7625,48.45024414062502],[-4.531201171874983,48.61997070312506],[-3.231445312499972,48.84082031250003],[-2.692333984374983,48.53681640624998],[-2.446191406249937,48.64829101562506],[-2.00371093749996,48.58208007812499],[-1.905712890624955,48.69711914062506],[-1.376464843749972,48.65258789062503],[-1.565478515624932,48.805517578125034],[-1.583105468749977,49.20239257812506],[-1.856445312499972,49.68378906249998],[-1.258642578124949,49.68017578125006],[-1.138525390624977,49.38789062500001],[-0.163476562499937,49.296777343749994],[0.41689453125008,49.448388671874994],[0.129394531250028,49.508447265624966],[0.186718749999983,49.703027343749994],[1.245507812500051,49.99824218750001],[1.5927734375,50.25219726562506],[1.672265625000023,50.885009765625],[2.52490234375,51.097119140624955],[2.759375,50.750634765624994],[3.10683593750008,50.779443359374994],[3.27333984375008,50.53154296875002],[3.595410156250068,50.47734374999999],[3.689355468750023,50.30605468750002],[4.174609375000017,50.24648437500005],[4.149316406250023,49.971582031249994],[4.545019531250063,49.96025390624999],[4.818652343750045,50.153173828125034],[4.867578125000051,49.78813476562502],[5.50732421875,49.51088867187502],[5.789746093749983,49.53828125000001]]]]},"properties":{"name":"France","childNum":10,"cp":[2.8719426,46.8222422]}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-7.186865234374949,62.139306640624966],[-7.116796874999977,62.046826171874955],[-7.379101562499926,62.07480468749998],[-7.186865234374949,62.139306640624966]]],[[[-6.631054687499955,62.22788085937498],[-6.655810546874932,62.09360351562498],[-6.840527343749983,62.119287109374994],[-6.725195312499949,61.95146484374999],[-7.17216796874996,62.28559570312501],[-6.631054687499955,62.22788085937498]]],[[[-6.406054687499932,62.258642578125034],[-6.544140624999926,62.20561523437499],[-6.554589843749994,62.35566406250001],[-6.406054687499932,62.258642578125034]]]]},"properties":{"name":"Faeroe Is.","childNum":3}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[158.31484375,6.813671875],[158.18339843750002,6.801269531250057],[158.13476562499997,6.944824218749986],[158.29462890625004,6.951074218750023],[158.31484375,6.813671875]]],[[[138.14267578125006,9.50068359375004],[138.06708984375004,9.419042968750006],[138.18583984375007,9.593310546874989],[138.14267578125006,9.50068359375004]]]]},"properties":{"name":"Micronesia","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[13.293554687500006,2.161572265624997],[13.172167968750017,1.78857421875],[13.21630859375,1.2484375],[13.851367187500017,1.41875],[14.180859375000011,1.370214843749991],[14.429882812500011,0.901464843749991],[14.32421875,0.62421875],[13.949609375000023,0.353808593749989],[13.860058593750011,-0.203320312500011],[14.47412109375,-0.573437500000011],[14.383984375000011,-1.890039062500009],[14.162890625000017,-2.217578125],[14.199804687500006,-2.354199218750011],[13.993847656250011,-2.490625],[13.886914062500011,-2.465429687500006],[13.733789062500023,-2.138476562500003],[13.464941406250006,-2.395410156250009],[12.991992187500017,-2.313378906250009],[12.793554687500006,-1.931835937500011],[12.590429687500006,-1.826855468750011],[12.43212890625,-1.928906250000011],[12.446386718750006,-2.329980468750009],[12.064453125,-2.41259765625],[11.60546875,-2.342578125],[11.537792968750011,-2.83671875],[11.760156250000023,-2.983105468750011],[11.715429687500006,-3.176953125000011],[11.934179687500006,-3.318554687500011],[11.8798828125,-3.665917968750009],[11.685742187500011,-3.68203125],[11.504296875000023,-3.5203125],[11.234472656250006,-3.690820312500009],[11.130175781250017,-3.916308593750003],[10.34765625,-3.013085937500009],[9.722070312500023,-2.467578125],[10.06201171875,-2.549902343750006],[9.624609375,-2.367089843750009],[9.298925781250006,-1.903027343750011],[9.483203125000017,-1.894628906250006],[9.265625,-1.825097656250009],[9.036328125000011,-1.308886718750003],[9.31884765625,-1.632031250000011],[9.501074218750006,-1.55517578125],[9.295800781250023,-1.515234375],[9.3466796875,-1.325],[9.203808593750011,-1.382421875],[9.064648437500011,-1.29833984375],[8.703125,-0.591015625000011],[8.946386718750006,-0.688769531250003],[9.296679687500017,-0.351269531250011],[9.354882812500023,0.343603515624991],[9.468164062500023,0.15976562499999],[9.796777343750023,0.044238281249989],[10.00146484375,0.194970703124994],[9.546484375,0.295947265624989],[9.324804687500006,0.552099609374991],[9.495312500000011,0.664843749999989],[9.617968750000017,0.576513671874991],[9.5908203125,1.031982421875],[9.636132812500023,1.046679687499989],[9.676464843750011,1.07470703125],[9.70458984375,1.079980468749994],[9.760546875000017,1.07470703125],[9.788671875,1.025683593749989],[9.803906250000011,0.998730468749997],[9.90673828125,0.960107421874994],[11.335351562500023,0.999707031249997],[11.332324218750017,1.528369140624989],[11.328710937500006,2.167431640624997],[11.348437500000017,2.299707031249994],[11.558984375000023,2.302197265624997],[13.2203125,2.256445312499991],[13.293554687500006,2.161572265624997]]]},"properties":{"name":"Gabon","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-1.065576171874966,50.69023437500002],[-1.25146484375,50.58881835937498],[-1.563427734374955,50.666113281250006],[-1.31279296874996,50.77348632812502],[-1.065576171874966,50.69023437500002]]],[[[-4.196777343749972,53.321435546874966],[-4.04936523437496,53.30576171874998],[-4.373046875,53.13417968750002],[-4.56787109375,53.386474609375],[-4.315087890625023,53.41723632812503],[-4.196777343749972,53.321435546874966]]],[[[-6.218017578125,54.08872070312506],[-6.649804687499937,54.05864257812496],[-7.007714843749937,54.40668945312501],[-7.324511718750017,54.13344726562502],[-7.606542968750006,54.14384765625002],[-8.118261718749977,54.41425781250004],[-7.75439453125,54.59492187499998],[-7.910595703124955,54.698339843750006],[-7.55039062499992,54.767968749999966],[-7.218652343749937,55.09199218749998],[-6.475048828124955,55.24101562499999],[-6.035791015624994,55.14453125000003],[-5.71684570312496,54.817480468750034],[-5.878613281249955,54.64130859375001],[-5.582519531249943,54.66342773437498],[-5.470410156249926,54.500195312499955],[-5.671093749999955,54.54975585937501],[-5.60678710937492,54.272558593750034],[-6.019042968749972,54.05126953124997],[-6.218017578125,54.08872070312506]]],[[[-5.105419921875011,55.448828125000034],[-5.331494140624955,55.481054687500034],[-5.318115234375,55.709179687499955],[-5.105419921875011,55.448828125000034]]],[[[-6.128906249999972,55.93056640625002],[-6.055322265624994,55.69531249999997],[-6.305078124999966,55.60693359375],[-6.286425781249989,55.77250976562499],[-6.491357421874994,55.697314453125045],[-6.462841796874955,55.808251953124994],[-6.128906249999972,55.93056640625002]]],[[[-5.970068359374949,55.814550781250034],[-6.071972656250011,55.893115234375045],[-5.72514648437496,56.118554687499966],[-5.970068359374949,55.814550781250034]]],[[[-5.77788085937496,56.344335937500034],[-6.313427734374983,56.29365234375001],[-6.138867187499955,56.490625],[-6.286328124999983,56.61186523437502],[-6.102734374999955,56.645654296874966],[-5.760839843749949,56.49067382812501],[-5.77788085937496,56.344335937500034]]],[[[-7.249853515624977,57.115332031250006],[-7.410546874999937,57.38110351562506],[-7.26713867187496,57.37177734375001],[-7.249853515624977,57.115332031250006]]],[[[-6.144726562499983,57.50498046874998],[-6.135546874999989,57.31425781250002],[-5.672460937499977,57.252685546875],[-5.94907226562492,57.045166015625],[-6.034375,57.20122070312499],[-6.322705078124926,57.20249023437498],[-6.761132812499994,57.4423828125],[-6.305957031249989,57.67197265624998],[-6.144726562499983,57.50498046874998]]],[[[-7.205566406250028,57.682958984375006],[-7.182617187499972,57.53330078125006],[-7.514746093749949,57.60195312500002],[-7.205566406250028,57.682958984375006]]],[[[-6.198681640624983,58.36328125000003],[-6.554589843749994,58.092871093750006],[-6.425195312499937,58.02128906249999],[-6.983105468749983,57.75],[-7.083447265624926,57.81376953124999],[-6.856835937499937,57.92353515624998],[-7.085253906249932,58.18217773437499],[-6.726464843749937,58.189404296874955],[-6.776464843750006,58.30151367187497],[-6.237451171874966,58.50283203125005],[-6.198681640624983,58.36328125000003]]],[[[-3.109667968749932,58.515478515625034],[-3.212353515624983,58.32124023437501],[-3.99003906249996,57.95903320312502],[-4.035595703124926,57.85200195312498],[-3.857128906249983,57.81855468750001],[-4.134521484375,57.57773437500006],[-3.402783203124955,57.708251953125],[-2.074072265624977,57.70239257812506],[-1.780664062499994,57.474023437499966],[-2.592675781249937,56.56157226562499],[-3.309960937499966,56.36347656250004],[-2.885156249999937,56.397509765625045],[-2.674267578124955,56.25341796875],[-3.362255859374955,56.02763671875002],[-3.789062499999972,56.09521484375],[-3.048730468749937,55.951953125000045],[-2.599316406249955,56.02729492187501],[-2.14707031249992,55.90297851562502],[-1.655371093749949,55.57036132812502],[-1.232421874999943,54.703710937500034],[-0.084375,54.118066406249994],[-0.20556640625,54.021728515625],[0.115332031250006,53.609277343749994],[-0.270019531249972,53.73676757812504],[-0.659912109375,53.72402343750002],[-0.293701171875,53.69233398437504],[0.270996093750028,53.33549804687499],[0.355761718750045,53.15996093750002],[0.0458984375,52.90561523437498],[0.279785156250028,52.80869140625006],[0.55878906250004,52.96694335937505],[1.05556640625008,52.95898437500003],[1.656738281249972,52.753710937500045],[1.74658203125,52.46899414062503],[1.59140625,52.11977539062502],[1.232421875000057,51.97124023437496],[1.188476562500057,51.803369140624966],[0.752246093750017,51.729589843750034],[0.890917968750017,51.571435546874966],[0.42451171875004,51.465625],[1.414941406250023,51.36328125],[1.397558593750034,51.18203125000002],[0.960156250000011,50.92587890624998],[0.299707031249994,50.775976562500006],[-0.785253906249949,50.76542968749999],[-1.416455078124955,50.896875],[-1.334472656249943,50.82080078124997],[-1.516748046874937,50.747460937499966],[-2.031054687499932,50.72539062499999],[-2.035839843749926,50.603076171875045],[-2.999414062499937,50.71660156249999],[-3.40458984374996,50.63242187499998],[-3.679785156250006,50.239941406249955],[-4.194580078124972,50.39331054687503],[-4.727978515624926,50.29047851562504],[-5.11850585937492,50.038330078125],[-5.622119140624932,50.05068359375002],[-4.188183593749926,51.18852539062502],[-3.135986328124972,51.20502929687501],[-2.433056640624926,51.74072265625],[-3.293115234374994,51.390429687500045],[-3.890771484374994,51.591650390625006],[-4.234570312499955,51.56909179687503],[-4.091015624999926,51.65991210937506],[-4.38627929687496,51.74106445312506],[-4.902294921874926,51.626269531250045],[-5.168359374999937,51.74072265625],[-5.183349609374972,51.94965820312501],[-4.217724609374983,52.277441406250006],[-3.980322265624949,52.54174804687503],[-4.101464843750023,52.915478515624955],[-4.683056640624926,52.80615234374997],[-4.268554687499943,53.14453125],[-3.427734374999972,53.34067382812498],[-3.097558593749937,53.260302734375045],[-3.064746093749932,53.426855468750034],[-2.74951171875,53.310205078124994],[-3.064599609374994,53.512841796874966],[-2.84648437499996,54.135302734375045],[-3.165966796874955,54.12792968750006],[-3.56938476562496,54.46757812499996],[-3.464599609374943,54.77309570312505],[-3.036230468749977,54.95307617187501],[-3.550439453124937,54.94741210937502],[-3.957910156249994,54.780957031249955],[-4.818066406249983,54.84614257812501],[-4.911230468749949,54.68945312500006],[-5.032324218749949,54.76137695312505],[-5.172705078124949,54.98588867187496],[-4.676757812499972,55.50131835937498],[-4.871679687499977,55.87392578125005],[-4.58408203124992,55.93867187500001],[-4.844091796874949,56.05117187499999],[-4.80029296875,56.158349609374994],[-5.228222656249983,55.886328125],[-5.084326171874977,56.197460937499955],[-5.41044921874996,55.995361328125],[-5.55644531249996,55.389599609374955],[-5.730664062499926,55.33413085937502],[-5.504492187499949,55.80239257812502],[-5.609570312499955,56.055273437500034],[-5.188378906249937,56.75805664062503],[-5.652441406249977,56.531982421875],[-6.133691406249966,56.706689453124966],[-5.730615234374994,56.853076171875045],[-5.86142578124992,56.902685546875006],[-5.561914062499994,57.23271484375002],[-5.794921874999972,57.37880859375002],[-5.581787109374972,57.546777343749966],[-5.744921874999989,57.668310546875034],[-5.608349609374955,57.88134765625],[-5.157226562499972,57.88134765625],[-5.413183593750006,58.06972656250002],[-5.338281250000023,58.23872070312498],[-5.008300781250028,58.262646484374955],[-5.016748046874966,58.566552734374966],[-4.433251953124937,58.51284179687505],[-3.25913085937492,58.65],[-3.053076171874949,58.63481445312502],[-3.109667968749932,58.515478515625034]]],[[[-3.057421874999932,59.02963867187498],[-2.793017578124989,58.906933593749955],[-3.331640624999949,58.97124023437499],[-3.31035156249996,59.13081054687498],[-3.057421874999932,59.02963867187498]]],[[[-1.30810546875,60.5375],[-1.052441406249955,60.44448242187502],[-1.299462890624994,59.87866210937503],[-1.290917968749937,60.153466796874966],[-1.663769531249983,60.282519531250074],[-1.374609374999949,60.33291015625002],[-1.571777343749972,60.494433593750074],[-1.363964843750011,60.60957031249998],[-1.30810546875,60.5375]]]]},"properties":{"name":"United Kingdom","childNum":14,"cp":[-2.5830348,54.4598409]}},{"geometry":{"type":"Polygon","coordinates":[[[46.30546875000002,41.507714843749994],[46.61894531250002,41.34375],[46.67255859375001,41.28681640625],[46.66240234375002,41.245507812499994],[46.62636718750002,41.15966796875],[46.534375,41.08857421875],[46.43095703125002,41.077050781249994],[46.086523437500006,41.183837890625],[45.28095703125001,41.449560546875],[45.21718750000002,41.423193359375],[45.00136718750002,41.290966796875],[44.97587890625002,41.277490234374994],[44.81132812500002,41.259375],[44.077246093750006,41.182519531249994],[43.43339843750002,41.155517578125],[43.20546875000002,41.199169921875],[43.15283203125,41.23642578125],[43.14101562500002,41.26484375],[43.17128906250002,41.287939453125],[43.149023437500006,41.30712890625],[43.05712890625,41.352832031249996],[42.90673828125,41.466845703124996],[42.82167968750002,41.4923828125],[42.78789062500002,41.563720703125],[42.75410156250001,41.57890625],[42.68242187500002,41.585742187499996],[42.60683593750002,41.57880859375],[42.590429687500006,41.57070312499999],[42.5673828125,41.55927734375],[42.46640625,41.43984375],[41.92578125,41.495654296874996],[41.82353515625002,41.432373046875],[41.779394531250006,41.44052734375],[41.701757812500006,41.471582031249994],[41.57656250000002,41.497314453125],[41.51005859375002,41.517480468749994],[41.701757812500006,41.705419921875],[41.76298828125002,41.970019531249996],[41.48876953125,42.659326171874994],[40.83662109375001,43.0634765625],[40.46210937500001,43.145703125],[39.97832031250002,43.419824218749994],[40.02373046875002,43.48486328125],[40.084570312500006,43.553125],[40.648046875,43.53388671875],[40.941992187500006,43.41806640625],[41.083105468750006,43.374462890625],[41.35820312500002,43.333398437499994],[41.46074218750002,43.276318359375],[41.58056640625,43.21923828125],[42.76064453125002,43.169580078124994],[42.99160156250002,43.09150390625],[43.00019531250001,43.049658203125],[43.08916015625002,42.9890625],[43.55781250000001,42.844482421875],[43.623046875,42.80771484375],[43.78261718750002,42.747021484375],[43.79873046875002,42.727783203125],[43.79541015625,42.702978515625],[43.74990234375002,42.657519531249996],[43.738378906250006,42.616992187499996],[43.759863281250006,42.59384765625],[43.82597656250002,42.571533203125],[43.95742187500002,42.566552734374994],[44.00468750000002,42.595605468749994],[44.10273437500001,42.616357421874994],[44.32949218750002,42.70351562499999],[44.505859375,42.7486328125],[44.77109375,42.616796875],[44.85048828125002,42.746826171875],[44.87099609375002,42.756396484374996],[44.943359375,42.730273437499996],[45.07158203125002,42.694140625],[45.160253906250006,42.675],[45.34375,42.52978515625],[45.56289062500002,42.5357421875],[45.70527343750001,42.498095703124996],[45.7275390625,42.475048828125],[45.63427734375,42.234716796875],[45.63857421875002,42.205078125],[46.21269531250002,41.989892578124994],[46.42988281250001,41.890966796875],[46.18427734375001,41.7021484375],[46.30546875000002,41.507714843749994]]]},"properties":{"name":"Georgia","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-0.068603515625,11.115625],[0.009423828125023,11.02099609375],[-0.08632812499999,10.673046875],[0.380859375,10.291845703124991],[0.264550781250023,9.644726562499997],[0.342578125000017,9.604150390624994],[0.2333984375,9.463525390624994],[0.525683593750017,9.398486328124989],[0.48876953125,8.851464843749994],[0.37255859375,8.75927734375],[0.686328125000017,8.354882812499994],[0.5,7.546875],[0.634765625,7.353662109374994],[0.525585937500011,6.850927734374991],[0.736914062500006,6.452587890624997],[1.187207031250011,6.089404296874989],[0.94970703125,5.810253906249997],[0.259667968750023,5.75732421875],[-2.001855468749994,4.762451171875],[-3.114013671875,5.088671874999989],[-2.815673828125,5.153027343749997],[-2.754980468749977,5.432519531249994],[-2.793652343749983,5.60009765625],[-2.998291015625,5.71132812499999],[-3.227148437499977,6.749121093749991],[-2.959082031249977,7.454541015624997],[-2.789746093749983,7.931933593749989],[-2.668847656249994,8.022216796875],[-2.613378906249977,8.046679687499989],[-2.600976562499994,8.082226562499997],[-2.619970703124977,8.12109375],[-2.61171875,8.147558593749991],[-2.538281249999983,8.171630859375],[-2.505859375,8.208740234375],[-2.600390624999989,8.800439453124994],[-2.649218749999989,8.956591796874989],[-2.689892578124983,9.025097656249997],[-2.746923828124977,9.045117187499997],[-2.705761718749983,9.351367187499989],[-2.695849609374989,9.481347656249994],[-2.706201171874994,9.533935546875],[-2.765966796874977,9.658056640624991],[-2.780517578125,9.745849609375],[-2.791162109374994,10.432421874999989],[-2.914892578124977,10.592333984374989],[-2.829931640624977,10.998388671874991],[-1.04248046875,11.010058593749989],[-0.627148437499983,10.927392578124994],[-0.299462890624994,11.166894531249994],[-0.068603515625,11.115625]]]},"properties":{"name":"Ghana","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-11.389404296875,12.404394531249991],[-11.502197265625,12.198632812499994],[-11.30517578125,12.015429687499989],[-10.933203124999977,12.205175781249991],[-10.709228515625,11.898730468749989],[-10.274853515624983,12.212646484375],[-9.754003906249977,12.029931640624994],[-9.358105468749983,12.255419921874989],[-9.395361328124977,12.464648437499989],[-9.043066406249977,12.40234375],[-8.818310546874983,11.922509765624994],[-8.822021484375,11.673242187499994],[-8.398535156249977,11.366552734374991],[-8.666699218749983,11.009472656249997],[-8.33740234375,10.990625],[-8.266650390624989,10.485986328124994],[-8.007275390624983,10.321875],[-7.990625,10.1625],[-8.155175781249994,9.973193359374989],[-8.136962890625,9.49570312499999],[-7.896191406249983,9.415869140624991],[-7.918066406249977,9.188525390624989],[-7.839404296874989,9.151611328125],[-7.7998046875,9.115039062499989],[-7.777978515624994,9.080859374999989],[-7.902099609375,9.01708984375],[-7.938183593749983,8.979785156249989],[-7.950976562499989,8.786816406249997],[-7.719580078124977,8.643017578124997],[-7.696093749999989,8.375585937499991],[-7.823583984374977,8.467675781249994],[-7.953125,8.477734375],[-8.236962890624994,8.455664062499991],[-8.244140625,8.407910156249997],[-8.256103515625,8.253710937499989],[-8.217138671874977,8.219677734374997],[-8.140625,8.181445312499989],[-8.048583984375,8.169726562499989],[-8.009863281249977,8.07851562499999],[-8.126855468749994,7.867724609374989],[-8.115429687499983,7.7607421875],[-8.205957031249994,7.59023437499999],[-8.231884765624983,7.556738281249991],[-8.429980468749989,7.601855468749989],[-8.486425781249977,7.558496093749994],[-8.659765624999977,7.688378906249994],[-8.8896484375,7.2626953125],[-9.11757812499999,7.215917968749991],[-9.463818359374983,7.415869140624991],[-9.369140625,7.703808593749997],[-9.518261718749983,8.34609375],[-9.781982421875,8.537695312499991],[-10.064355468749994,8.429882812499997],[-10.147412109374983,8.519726562499997],[-10.233056640624994,8.488818359374989],[-10.283203125,8.485156249999989],[-10.360058593749983,8.495507812499994],[-10.394433593749994,8.48095703125],[-10.496435546874977,8.362109374999989],[-10.557714843749977,8.315673828125],[-10.686962890624983,8.321679687499994],[-10.712109374999983,8.335253906249989],[-10.677343749999977,8.400585937499997],[-10.500537109374989,8.687548828124989],[-10.615966796875,9.059179687499991],[-10.726855468749989,9.081689453124994],[-10.747021484374983,9.095263671874989],[-10.749951171874983,9.122363281249989],[-10.687646484374994,9.261132812499994],[-10.682714843749977,9.289355468749989],[-10.758593749999989,9.385351562499991],[-11.047460937499977,9.786328125],[-11.180859374999983,9.925341796874989],[-11.205664062499977,9.977734375],[-11.273632812499983,9.996533203124997],[-11.911083984374983,9.993017578124991],[-12.142333984375,9.87539062499999],[-12.427978515625,9.898144531249997],[-12.557861328125,9.704980468749994],[-12.755859375,9.373583984374989],[-12.958789062499989,9.263330078124994],[-13.077294921874994,9.069628906249989],[-13.292675781249983,9.04921875],[-13.436279296875,9.4203125],[-13.691357421874983,9.535791015624994],[-13.689794921874977,9.927783203124989],[-13.820117187499989,9.88720703125],[-14.045019531249977,10.141259765624994],[-14.426904296874994,10.248339843749989],[-14.609570312499983,10.549853515624989],[-14.593505859375,10.766699218749991],[-14.677343749999977,10.68896484375],[-14.775927734374989,10.931640625],[-14.88671875,10.968066406249989],[-14.975,10.803417968749997],[-15.051220703124983,10.834570312499991],[-15.043017578124989,10.940136718749997],[-14.9990234375,10.9921875],[-14.944433593749977,11.072167968749994],[-14.779296875,11.405517578125],[-14.720263671874989,11.48193359375],[-14.682958984374977,11.508496093749997],[-14.604785156249989,11.511621093749994],[-14.452441406249989,11.556201171874989],[-14.327832031249983,11.629785156249994],[-14.265576171874983,11.659912109375],[-14.122314453125,11.65195312499999],[-13.953222656249977,11.664599609374989],[-13.732763671874977,11.736035156249997],[-13.730664062499983,11.959863281249994],[-13.737988281249983,12.009667968749994],[-13.816308593749994,12.054492187499989],[-13.948876953124994,12.178173828124997],[-13.8875,12.246875],[-13.759765625,12.262353515624994],[-13.673535156249983,12.478515625],[-13.732617187499983,12.592822265624989],[-13.729248046875,12.673925781249991],[-13.082910156249994,12.633544921875],[-13.061279296875,12.489990234375],[-12.930712890624989,12.532275390624989],[-12.399072265624994,12.340087890625],[-11.389404296875,12.404394531249991]]]},"properties":{"name":"Guinea","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-16.763330078124994,13.064160156249997],[-16.824804687499977,13.341064453125],[-16.669335937499994,13.475],[-16.41337890624999,13.269726562499997],[-15.427490234375,13.46835937499999],[-16.135449218749983,13.4482421875],[-16.351806640625,13.34335937499999],[-16.56230468749999,13.587304687499994],[-15.509667968749994,13.586230468750003],[-15.426855468749977,13.727001953124997],[-15.108349609374983,13.81210937499999],[-14.405468749999983,13.503710937500003],[-13.977392578124977,13.54345703125],[-13.826708984374989,13.4078125],[-14.246777343749983,13.23583984375],[-15.151123046875,13.556494140624991],[-15.286230468749977,13.39599609375],[-15.814404296874983,13.325146484374997],[-15.834277343749989,13.156445312499997],[-16.648779296874977,13.154150390624991],[-16.763330078124994,13.064160156249997]]]},"properties":{"name":"Gambia","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-15.895898437499966,11.082470703124969],[-15.963964843749977,11.05898437499998],[-15.937695312499955,11.192773437499966],[-15.895898437499966,11.082470703124969]]],[[[-16.11450195312503,11.059423828124977],[-16.236425781249977,11.113427734374966],[-16.06733398437501,11.197216796874983],[-16.11450195312503,11.059423828124977]]],[[[-15.901806640624926,11.4658203125],[-16.02319335937497,11.477148437499991],[-15.964550781249926,11.59829101562498],[-15.901806640624926,11.4658203125]]],[[[-15.986425781249949,11.882031249999969],[-16.038330078124943,11.759716796875011],[-16.15244140624992,11.876806640624963],[-15.986425781249949,11.882031249999969]]],[[[-13.759765625,12.262353515624994],[-13.8875,12.246875],[-13.948876953124966,12.178173828124997],[-13.737988281250011,12.009667968750037],[-13.730664062499926,11.959863281250009],[-13.73276367187492,11.736035156249983],[-13.953222656249977,11.664599609374989],[-14.265576171874926,11.659912109375014],[-14.327832031250011,11.629785156250009],[-14.452441406249989,11.556201171875017],[-14.604785156249932,11.511621093749994],[-14.682958984374949,11.508496093749983],[-14.720263671875017,11.481933593749986],[-14.779296874999972,11.405517578125057],[-14.944433593749949,11.072167968749994],[-14.999023437499972,10.992187500000043],[-15.04301757812496,10.940136718750011],[-15.09375,11.011035156249974],[-15.054589843749994,11.141943359375006],[-15.222119140624926,11.030908203125037],[-15.216699218749994,11.15625],[-15.39311523437496,11.217236328124983],[-15.354687499999955,11.396337890624963],[-15.479492187499972,11.410302734374966],[-15.072656249999937,11.597802734374966],[-15.230371093750023,11.686767578124972],[-15.412988281249994,11.615234374999972],[-15.501904296875011,11.723779296874966],[-15.467187499999937,11.842822265624974],[-15.078271484374937,11.968994140625014],[-15.941748046875006,11.786621093749986],[-15.92021484374996,11.93779296874996],[-16.138427734375,11.917285156250045],[-16.32807617187501,12.051611328124963],[-16.244580078124955,12.237109375],[-16.43681640624996,12.204150390625045],[-16.711816406249937,12.354833984375006],[-16.656933593749955,12.364355468749991],[-16.52133789062495,12.348632812499986],[-16.41630859374996,12.367675781250057],[-16.24150390624996,12.443310546875011],[-16.144189453124937,12.457421875000037],[-15.839550781249955,12.437890624999966],[-15.57480468749992,12.490380859375009],[-15.19609375,12.679931640624986],[-14.3492187499999,12.67641601562498],[-14.064843749999966,12.675292968750014],[-13.729248046875,12.673925781250006],[-13.732617187499983,12.592822265625003],[-13.673535156249926,12.478515624999986],[-13.759765625,12.262353515624994]]]]},"properties":{"name":"Guinea-Bissau","childNum":5}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[11.332324218750017,1.528369140624989],[11.335351562500023,0.999707031250011],[9.906738281250028,0.960107421875037],[9.80390625000004,0.998730468749997],[9.788671875000034,1.025683593749974],[9.760546874999989,1.074707031250014],[9.704589843750057,1.079980468750023],[9.676464843750011,1.074707031250014],[9.636132812500051,1.046679687499989],[9.590820312500057,1.031982421875014],[9.599414062500045,1.054443359374972],[9.509863281250006,1.114794921875017],[9.385937500000068,1.13925781250002],[9.807031250000051,1.927490234375028],[9.77968750000008,2.068212890625006],[9.800781250000028,2.304443359375],[9.826171875000057,2.297802734374969],[9.8369140625,2.242382812500054],[9.870117187500028,2.21328125],[9.979882812499994,2.167773437500045],[10.790917968750023,2.167578125],[11.096582031250051,2.167480468749986],[11.328710937500006,2.167431640624969],[11.332324218750017,1.528369140624989]]],[[[8.735742187500023,3.758300781249972],[8.910058593750023,3.758203125000051],[8.946093750000074,3.627539062499977],[8.704003906250051,3.223632812500028],[8.474902343749989,3.264648437500043],[8.464648437500045,3.450585937499994],[8.735742187500023,3.758300781249972]]]]},"properties":{"name":"Eq. Guinea","childNum":2}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[23.852246093749983,35.53544921874999],[24.166015625000057,35.59521484375],[24.108984374999977,35.49580078124998],[24.35400390625,35.359472656250034],[25.73017578125004,35.34858398437501],[25.791308593750074,35.122851562500045],[26.32021484375008,35.315136718749955],[26.165625,35.018603515625045],[24.79980468750003,34.93447265625002],[24.70888671875008,35.08906250000001],[24.463671875000045,35.160351562499955],[23.59277343749997,35.257226562499966],[23.56982421875,35.534765625000034],[23.67265624999999,35.51391601562506],[23.736914062500034,35.65551757812503],[23.852246093749983,35.53544921874999]]],[[[27.17607421874999,35.46528320312498],[27.070703125000023,35.59775390624998],[27.22314453125,35.820458984374966],[27.17607421874999,35.46528320312498]]],[[[23.053808593750034,36.18979492187498],[22.91083984375004,36.220996093750045],[22.950488281250045,36.38393554687502],[23.053808593750034,36.18979492187498]]],[[[27.84277343750003,35.929296875000034],[27.71552734375004,35.95732421874996],[27.71630859375003,36.17158203125001],[28.23183593750005,36.43364257812502],[28.087792968750023,36.06533203125002],[27.84277343750003,35.929296875000034]]],[[[25.48242187500003,36.39262695312502],[25.37050781250005,36.35893554687499],[25.408984375000074,36.473730468750006],[25.48242187500003,36.39262695312502]]],[[[26.46064453125001,36.58540039062501],[26.270019531250057,36.54692382812499],[26.370019531250023,36.63857421875002],[26.46064453125001,36.58540039062501]]],[[[26.94960937500005,36.72709960937502],[27.214941406250006,36.89863281249998],[27.352148437499977,36.86889648437506],[26.94960937500005,36.72709960937502]]],[[[25.859375,36.79042968750005],[25.74316406250003,36.78974609374998],[26.06445312500003,36.90273437500002],[25.859375,36.79042968750005]]],[[[27.01972656250004,36.95903320312502],[26.91992187500003,36.94521484375005],[26.88867187499997,37.087255859375034],[27.01972656250004,36.95903320312502]]],[[[25.278906250000034,37.06840820312502],[25.105468750000057,37.034960937500045],[25.235058593750068,37.148535156250006],[25.278906250000034,37.06840820312502]]],[[[25.54589843749997,36.96757812499999],[25.45673828125001,36.9296875],[25.361914062500063,37.07041015624998],[25.52529296875005,37.19638671875006],[25.54589843749997,36.96757812499999]]],[[[24.523535156250063,37.125097656250006],[24.42480468750003,37.131982421874994],[24.48378906250005,37.21020507812503],[24.523535156250063,37.125097656250006]]],[[[25.402734375000023,37.419140624999955],[25.312695312500068,37.48930664062496],[25.462988281250063,37.47109375],[25.402734375000023,37.419140624999955]]],[[[26.029296875000057,37.529394531250034],[26.086328125000023,37.63491210937505],[26.351367187500017,37.67431640625],[26.029296875000057,37.529394531250034]]],[[[25.255859375000057,37.59960937500006],[25.156347656250034,37.54506835937505],[24.99648437500005,37.676904296874994],[25.255859375000057,37.59960937500006]]],[[[24.35595703125003,37.57685546875004],[24.28896484375005,37.52827148437498],[24.37910156250004,37.682714843750006],[24.35595703125003,37.57685546875004]]],[[[26.82441406250004,37.81142578125005],[27.05507812500005,37.70927734375002],[26.84492187500004,37.64472656250001],[26.58105468750003,37.723730468750034],[26.82441406250004,37.81142578125005]]],[[[20.888476562500074,37.805371093749955],[20.993945312500074,37.70800781250003],[20.81855468750004,37.66474609375001],[20.61953125000008,37.855029296875045],[20.691503906250006,37.929541015625034],[20.888476562500074,37.805371093749955]]],[[[24.991699218750057,37.75961914062506],[24.962207031250074,37.69238281250003],[24.7001953125,37.961669921875],[24.956347656250045,37.90478515625006],[24.991699218750057,37.75961914062506]]],[[[20.61230468750003,38.38334960937502],[20.761328125,38.07055664062497],[20.523535156250063,38.106640624999955],[20.4521484375,38.23417968750002],[20.35253906250003,38.179882812499955],[20.563183593750068,38.474951171875034],[20.61230468750003,38.38334960937502]]],[[[26.094042968750017,38.21806640625002],[25.891894531250045,38.243310546874994],[25.991406250000068,38.353515625],[25.846093750000023,38.57402343749996],[26.16035156250001,38.54072265625001],[26.094042968750017,38.21806640625002]]],[[[20.68671875000001,38.60869140625002],[20.5546875,38.58256835937502],[20.69414062499999,38.84423828125003],[20.68671875000001,38.60869140625002]]],[[[24.67470703125005,38.80922851562502],[24.54101562499997,38.788671875],[24.485644531250074,38.980273437500045],[24.67470703125005,38.80922851562502]]],[[[23.41542968750008,38.958642578124994],[23.525,38.8134765625],[24.127539062500034,38.648486328125045],[24.27578125000005,38.22001953124996],[24.58837890625003,38.12397460937504],[24.53652343750005,37.97973632812506],[24.212011718750006,38.11752929687506],[24.040136718750006,38.389990234375034],[23.65078125000008,38.44306640625001],[23.25214843750004,38.80122070312498],[22.870312500000068,38.870507812499966],[23.258203125000023,39.03134765625006],[23.41542968750008,38.958642578124994]]],[[[26.41015625000003,39.329443359375034],[26.59560546875005,39.04882812499997],[26.488671875000023,39.074804687500034],[26.46875,38.97280273437502],[26.10791015625,39.08105468749997],[26.273144531249983,39.19755859374999],[26.072363281250034,39.095605468749994],[25.84414062500008,39.20004882812506],[26.16542968750008,39.37353515625006],[26.41015625000003,39.329443359375034]]],[[[20.077929687500045,39.432714843750034],[19.883984375000068,39.461523437500034],[19.646484375,39.76708984375003],[19.926074218750017,39.773730468750045],[19.8466796875,39.66811523437502],[20.077929687500045,39.432714843750034]]],[[[25.43769531250004,39.98330078125002],[25.357031250000063,39.80810546875003],[25.24941406250005,39.89414062500006],[25.06220703125004,39.852392578125006],[25.05800781250005,39.999658203124966],[25.43769531250004,39.98330078125002]]],[[[24.774218750000074,40.615185546874955],[24.515527343750023,40.64702148437496],[24.623339843750045,40.79291992187501],[24.774218750000074,40.615185546874955]]],[[[26.03896484375008,40.726757812499955],[25.10449218750003,40.994726562500006],[24.792968750000057,40.857519531250034],[24.47705078125,40.94775390625003],[24.082324218750074,40.72407226562504],[23.762792968750063,40.74780273437497],[23.866796875000034,40.41855468750006],[24.21279296875008,40.32778320312502],[24.343359375000034,40.14770507812503],[23.913183593750063,40.35878906250005],[23.72792968750008,40.329736328124994],[23.96748046875001,40.11455078125002],[23.947070312500045,39.96557617187506],[23.66455078125003,40.22382812499998],[23.42626953125,40.26396484374999],[23.62734375,39.92407226562503],[22.896484375000057,40.39990234374997],[22.92226562500008,40.59086914062499],[22.629492187500034,40.49555664062501],[22.59218750000005,40.03691406250002],[23.327734374999977,39.174902343750006],[23.15468750000008,39.10146484375005],[23.16171875,39.25776367187501],[22.92138671874997,39.30634765625004],[22.886035156250074,39.16997070312496],[23.066699218750017,39.03793945312498],[22.569140625000074,38.86748046874999],[23.25292968750003,38.66123046875006],[23.68398437500008,38.35244140625002],[23.96699218750001,38.275],[24.024511718750006,38.139794921874966],[24.01972656250001,37.67773437499997],[23.50175781249999,38.03486328124998],[23.03632812500004,37.87836914062501],[23.48925781250003,37.440185546875],[23.16152343750005,37.333837890625006],[22.725390625000017,37.542138671874966],[23.16015625000003,36.448095703125034],[22.717187500000023,36.79394531250006],[22.42773437500003,36.47578124999998],[22.08046875000008,37.028955078124966],[21.95556640625003,36.990087890625034],[21.892382812500045,36.73730468749997],[21.58291015625005,37.080957031249994],[21.678906250000068,37.38720703125003],[21.124707031250068,37.89160156250003],[21.40371093750005,38.19667968750002],[21.658398437500068,38.17509765624996],[21.82470703125003,38.328125],[22.846386718750068,37.96757812499996],[23.18349609375008,38.133691406249966],[22.421679687500045,38.43852539062499],[22.319921875,38.35683593750005],[21.96533203124997,38.412451171875006],[21.47255859375005,38.321386718750006],[21.3310546875,38.48730468749997],[21.303320312500034,38.373925781249966],[21.113183593750023,38.38466796875002],[20.768554687500057,38.874414062499966],[21.111621093750045,38.89628906249999],[21.11835937500001,39.029980468749955],[20.71337890625,39.03515625000003],[20.300781250000057,39.32709960937501],[20.19140625,39.545800781249966],[20.099414062500074,39.641259765624966],[20.001269531250074,39.70942382812501],[20.022558593750063,39.710693359375],[20.059765624999983,39.69912109375002],[20.13105468750004,39.66162109375003],[20.206835937500017,39.65351562499998],[20.382421875,39.802636718749994],[20.381640625000017,39.84179687500006],[20.311328125000074,39.95078125000006],[20.311132812500034,39.97944335937504],[20.338476562500006,39.991064453125006],[20.38369140625008,40.0171875],[20.408007812500074,40.049462890624994],[20.4560546875,40.065576171874994],[20.657421875000068,40.11738281249998],[20.881640625000017,40.467919921874994],[21.030859375000034,40.62246093750002],[20.95576171875001,40.775292968749994],[20.96425781250005,40.84990234374999],[21.575781250000034,40.86894531249996],[21.627539062500006,40.896337890625034],[21.77949218750004,40.95043945312506],[21.99335937500001,41.13095703125006],[22.18447265625005,41.15864257812501],[22.49355468750005,41.118505859375006],[22.603613281249977,41.14018554687499],[22.724804687500068,41.17851562499999],[22.78388671875004,41.33198242187498],[23.155957031250068,41.32207031249999],[23.239843750000034,41.38496093750001],[23.372070312500057,41.3896484375],[23.433398437500017,41.39873046874999],[23.53583984375001,41.38603515624999],[23.63515625000008,41.386767578125045],[24.011328124999977,41.460058593750034],[24.03291015625004,41.469091796875034],[24.05605468750005,41.527246093749966],[24.38671875,41.523535156250006],[24.487890625,41.55522460937499],[24.518261718750068,41.55253906249996],[24.773730468750045,41.356103515624994],[24.99355468750008,41.36499023437503],[25.133398437500063,41.31577148437506],[25.251171875000068,41.243554687499994],[25.923339843750057,41.311914062499966],[26.066406250000057,41.35068359375006],[26.135351562499977,41.3857421875],[26.155175781250023,41.43486328124999],[26.143554687500057,41.52153320312496],[26.085546875000063,41.704150390625045],[26.10742187499997,41.72568359374998],[26.20058593750005,41.74379882812502],[26.320898437500034,41.716552734375],[26.581347656250074,41.60126953125004],[26.62490234375008,41.401757812499994],[26.330664062499977,41.23876953125],[26.331054687500057,40.954492187499994],[26.03896484375008,40.726757812499955]]]]},"properties":{"name":"Greece","childNum":29}},{"geometry":{"type":"Polygon","coordinates":[[[-61.71552734375,12.012646484374997],[-61.714990234374994,12.18515625],[-61.60703125,12.223291015624994],[-61.71552734375,12.012646484374997]]]},"properties":{"name":"Grenada","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-46.266699218750006,60.781396484374994],[-46.381542968749955,60.66030273437502],[-46.7880859375,60.758398437500034],[-46.205224609374994,60.943505859374994],[-46.266699218750006,60.781396484374994]]],[[[-37.03125,65.53198242187497],[-37.23842773437494,65.60986328125003],[-37.047509765624966,65.722265625],[-37.03125,65.53198242187497]]],[[[-51.01367187499994,69.55249023437497],[-51.202050781249966,69.525],[-51.33886718749994,69.73203125000006],[-51.094580078125006,69.92416992187503],[-50.67900390624999,69.84853515625],[-51.01367187499994,69.55249023437497]]],[[[-52.73115234375001,69.94472656250005],[-52.0453125,69.8072265625],[-51.90019531249999,69.60478515625007],[-53.57841796874996,69.25664062500002],[-54.18271484374995,69.40351562500001],[-53.65830078124998,69.46513671875005],[-53.825,69.54033203124999],[-54.91914062499998,69.71362304687503],[-54.78789062499996,69.94985351562502],[-54.322607421875034,69.94189453125],[-54.83076171875001,70.13295898437502],[-54.37163085937499,70.31728515625],[-53.296728515625034,70.20537109375002],[-52.73115234375001,69.94472656250005]]],[[[-51.67514648437498,70.855224609375],[-52.11938476562497,70.87065429687502],[-52.10673828124999,70.96801757812497],[-51.67514648437498,70.855224609375]]],[[[-25.43232421875001,70.92133789062495],[-25.402246093749994,70.65268554687503],[-26.217871093749977,70.45405273437498],[-26.604687499999926,70.55336914062497],[-28.03525390624995,70.48681640625],[-27.61723632812496,70.91376953125001],[-26.621777343749955,70.87563476562497],[-25.81889648437499,71.04365234375001],[-25.43232421875001,70.92133789062495]]],[[[-53.53520507812493,71.04082031250005],[-53.9578125,71.12773437499999],[-53.58447265625003,71.29707031249995],[-53.53520507812493,71.04082031250005]]],[[[-55.01689453124999,72.79111328125003],[-55.56660156249998,72.56435546875002],[-56.214794921874955,72.71918945312495],[-55.01689453124999,72.79111328125003]]],[[[-18.000537109374932,75.40732421875003],[-17.391992187499937,75.03691406250007],[-18.670800781249966,75.00166015624998],[-18.856054687499977,75.31914062500002],[-18.000537109374932,75.40732421875003]]],[[[-18.58261718749995,76.042333984375],[-19.085351562499966,76.43037109375001],[-18.882470703124937,76.70380859375001],[-18.58261718749995,76.042333984375]]],[[[-71.667333984375,77.32529296874998],[-72.48955078124999,77.43164062499997],[-71.43344726562495,77.394384765625],[-71.667333984375,77.32529296874998]]],[[[-17.6125,79.82587890624995],[-18.662011718749966,79.72001953125005],[-19.13828125,79.85234375000002],[-17.98291015625,80.05517578125003],[-17.471386718749955,80.02871093749997],[-17.6125,79.82587890624995]]],[[[-44.86455078124999,82.08364257812502],[-46.75190429687501,82.34819335937502],[-47.27226562499996,82.65693359375001],[-46.399169921875,82.692138671875],[-44.91748046875003,82.48051757812505],[-44.86455078124999,82.08364257812502]]],[[[-29.952880859375,83.56484374999997],[-25.795068359374994,83.26098632812497],[-31.99267578125,83.0853515625],[-32.03271484374997,82.98344726562502],[-25.12338867187495,83.15961914062501],[-24.47031249999995,82.87739257812498],[-21.582519531249943,82.6341796875],[-23.118066406249966,82.32470703125003],[-29.57939453124996,82.16118164062502],[-29.887402343749983,82.05483398437502],[-29.543847656249994,81.93994140624997],[-27.839501953124966,82.04887695312505],[-25.148828124999966,82.001123046875],[-24.293066406249977,81.70097656250005],[-23.103710937499983,82.01181640625003],[-21.337988281249977,82.068701171875],[-21.230517578125017,81.60136718749999],[-23.11772460937499,80.77817382812498],[-19.62993164062499,81.63989257812503],[-17.456054687499943,81.397705078125],[-16.12070312499995,81.776611328125],[-14.241992187500017,81.81386718750005],[-12.434423828125006,81.68251953125002],[-11.430664062499972,81.45683593750005],[-13.126220703124972,81.08779296875],[-14.452343749999955,80.99311523437498],[-14.503564453124994,80.76328125000006],[-16.76059570312492,80.573388671875],[-15.937255859374972,80.42763671874997],[-16.48876953124997,80.25195312499997],[-18.070947265624994,80.17207031249995],[-19.429199218749943,80.25771484375],[-20.150146484375,80.01123046874997],[-18.99199218749996,79.17836914062502],[-21.133740234374926,78.65864257812501],[-21.729589843749977,77.70854492187499],[-20.862597656249932,77.91186523437503],[-19.490429687499983,77.71889648437497],[-19.46752929687503,77.56582031250005],[-20.162060546874926,77.68984375],[-20.680810546875023,77.61899414062503],[-20.23193359374997,77.36840820312497],[-19.30029296874997,77.22236328124995],[-18.442626953124943,77.259375],[-18.51030273437496,76.77817382812498],[-20.48671875,76.92080078125],[-21.614697265624926,76.68789062499997],[-22.18525390625001,76.79409179687502],[-22.609326171874983,76.70429687500004],[-21.877343749999966,76.57348632812503],[-21.488232421874926,76.271875],[-20.10361328124992,76.21909179687503],[-19.508984374999926,75.75751953124995],[-19.52636718750003,75.18022460937505],[-20.484960937500006,75.31425781249999],[-21.649316406249966,75.02343749999997],[-22.232861328124926,75.11972656249998],[-21.69511718749999,74.96445312500003],[-20.985791015624983,75.07436523437497],[-20.86157226562497,74.63593750000001],[-20.41708984374995,74.9751953125],[-19.98491210937499,74.9751953125],[-19.287011718750023,74.54638671875006],[-19.36914062499997,74.28403320312498],[-20.256445312499977,74.2828125],[-20.653125,74.13735351562502],[-21.954931640624977,74.24428710937497],[-21.942919921874932,74.56572265624999],[-22.32158203124999,74.30253906250002],[-22.134814453124932,73.99047851562503],[-20.36728515624992,73.8482421875],[-20.509667968749966,73.49287109375001],[-22.346875,73.26923828125001],[-23.23320312499999,73.39770507812497],[-24.157714843749943,73.76445312499999],[-24.67724609375,73.602197265625],[-25.521289062500017,73.85161132812499],[-24.79125976562497,73.51127929687502],[-26.062304687500017,73.25302734375],[-27.270410156250023,73.43627929687503],[-26.541845703125006,73.24897460937495],[-27.561621093750006,73.13847656250002],[-27.348046875000023,73.06782226562501],[-25.057031250000023,73.396484375],[-24.132666015625006,73.409375],[-22.036328124999955,72.91845703125006],[-22.29321289062497,72.11953125],[-24.06904296875001,72.49873046874998],[-24.629980468749977,73.03764648437499],[-26.657617187499966,72.71582031249997],[-24.81333007812492,72.90151367187497],[-24.65,72.58251953125],[-25.117871093749983,72.34697265625005],[-24.66684570312492,72.437353515625],[-21.959667968749955,71.74467773437502],[-22.479638671874937,71.38344726562497],[-22.417578125,71.24868164062505],[-22.29902343750001,71.43232421874998],[-21.75224609374999,71.47832031250002],[-21.522656249999926,70.52622070312503],[-22.38413085937492,70.46240234375],[-22.437011718749943,70.860009765625],[-22.690673828124943,70.43730468750002],[-23.327832031249983,70.45097656250007],[-23.97138671875001,70.64946289062499],[-24.562207031249926,71.22353515624997],[-25.885156249999966,71.571923828125],[-27.08720703124999,71.6265625],[-27.107031250000034,71.53266601562498],[-25.842724609374955,71.48017578124995],[-25.74223632812499,71.18359375],[-26.717919921874994,70.95048828125005],[-28.39843749999997,70.99291992187497],[-27.99218749999997,70.89521484374998],[-28.06987304687499,70.69902343750005],[-29.07207031249999,70.444970703125],[-26.621777343749955,70.46337890625],[-26.576806640625023,70.35708007812502],[-27.560839843749932,70.12446289062498],[-27.384179687500023,69.9916015625],[-27.027734374999966,70.20122070312499],[-25.529882812499977,70.35317382812502],[-23.66733398437495,70.139306640625],[-22.28447265624996,70.12583007812498],[-22.287060546874955,70.03339843749998],[-23.03364257812501,69.90083007812498],[-23.04956054687497,69.79272460937497],[-23.86572265624997,69.73671875000002],[-23.739404296874994,69.58862304687497],[-24.296679687500017,69.58554687500006],[-24.295556640624966,69.439306640625],[-25.188574218750006,69.26054687500002],[-25.092431640624937,69.16518554687502],[-25.697998046874943,68.889892578125],[-26.48291015624997,68.67592773437502],[-29.24951171874997,68.29877929687501],[-29.86850585937495,68.31157226562505],[-30.318115234375,68.19331054687501],[-30.72001953124999,68.25117187499998],[-30.610742187499994,68.11791992187503],[-30.97856445312499,68.06132812500005],[-32.32744140624999,68.43730468749999],[-32.16455078125,67.99111328125002],[-33.15698242187497,67.62670898437506],[-34.1982421875,66.65507812499999],[-35.18857421874995,66.25029296875002],[-35.86723632812502,66.44140624999997],[-35.630078124999926,66.13994140625002],[-36.37919921874996,65.830810546875],[-36.52724609375002,66.00771484375],[-36.665185546874966,65.79008789062507],[-37.06279296874996,65.87143554687503],[-37.410058593749994,65.65634765625],[-37.954785156249955,65.63359375000007],[-37.278710937499994,66.30439453124995],[-38.156640624999966,66.38559570312498],[-37.75234375000002,66.26152343750002],[-38.13994140625002,65.90351562499998],[-38.52036132812498,66.00966796875002],[-38.20336914062497,65.71171874999999],[-40.17353515624998,65.55615234375],[-39.57792968749996,65.34077148437501],[-39.937255859375,65.14160156250003],[-40.253125,65.04887695312505],[-41.08442382812501,65.10083007812497],[-40.966015624999955,64.86884765624995],[-40.655468749999926,64.91533203125002],[-40.18222656249998,64.47993164062495],[-40.78173828125,64.22177734375003],[-41.581005859374926,64.29833984375],[-41.03056640624996,64.12104492187504],[-40.61777343749998,64.13173828125],[-40.550390625000034,63.72524414062505],[-40.77519531249999,63.53364257812501],[-41.04873046875002,63.51381835937505],[-41.387890624999926,63.06186523437498],[-41.84448242187497,63.07026367187501],[-42.174511718749955,63.20878906249999],[-41.63447265624998,62.972460937500074],[-41.90898437499996,62.73710937499999],[-42.94165039062503,62.72021484375003],[-42.15297851562502,62.568457031250006],[-42.32148437499998,62.15273437500005],[-42.110205078125006,61.857226562500074],[-42.58530273437498,61.71748046875001],[-42.34736328125001,61.61743164062497],[-42.717041015625,60.767480468749994],[-43.04409179687502,60.523681640625],[-43.92270507812495,60.59536132812502],[-43.21298828124998,60.390673828125074],[-43.122900390625006,60.06123046875001],[-43.32011718749993,59.928125],[-43.95502929687498,60.025488281250006],[-43.65791015625001,59.85864257812503],[-43.90654296874996,59.815478515625045],[-44.11699218750002,59.83193359375002],[-44.06547851562499,59.92480468750003],[-44.412939453125006,59.922607421875],[-44.22436523437494,60.273535156250006],[-44.61328124999997,60.01665039062499],[-45.37924804687495,60.20292968750002],[-45.367773437500006,60.37294921875002],[-44.97470703124995,60.457226562499955],[-44.756738281249966,60.66459960937502],[-45.38051757812494,60.444921875],[-46.04663085937503,60.61572265625],[-46.141943359375006,60.776513671874994],[-45.87021484374998,61.21831054687502],[-46.87446289062501,60.81640625000003],[-48.180810546874966,60.76923828125001],[-47.77031249999999,60.99775390625001],[-48.386425781249926,61.004736328125034],[-48.42817382812501,61.18740234375002],[-48.92207031249998,61.27744140624998],[-49.28906249999997,61.58994140625006],[-49.380273437499994,61.89018554687502],[-48.82871093749998,62.0796875],[-49.62377929687494,61.99858398437499],[-49.553466796875,62.23271484374999],[-50.319238281249966,62.473193359375045],[-50.298730468749966,62.72197265625002],[-49.793115234374994,63.04462890625004],[-50.39008789062501,62.82202148437497],[-51.46884765624995,63.64228515625001],[-51.547509765624994,64.00610351562497],[-50.260693359374955,64.21425781250002],[-50.48662109374996,64.20888671875],[-50.43706054687499,64.31284179687503],[-51.58491210937498,64.10317382812502],[-51.70786132812498,64.205078125],[-51.403759765624926,64.46318359375002],[-50.49208984375002,64.69316406250005],[-50.00898437500001,64.44726562499997],[-50.12163085937493,64.703759765625],[-50.51699218750002,64.76650390625],[-50.96064453124998,65.20112304687498],[-50.721582031249966,64.79760742187503],[-51.22060546875002,64.62846679687502],[-51.25537109375,64.75810546875005],[-51.92260742187503,64.21875],[-52.259033203125,65.154931640625],[-52.537695312500034,65.32880859374998],[-51.61914062500003,65.71318359375002],[-51.091894531250006,65.77578125],[-51.7234375,65.723486328125],[-52.55126953125003,65.46137695312498],[-52.760937499999926,65.59082031249997],[-53.198974609375,65.59404296875002],[-53.106347656249966,65.97714843749998],[-53.39204101562498,66.04833984375],[-51.225,66.88154296875001],[-53.035791015624966,66.20141601562503],[-53.538769531249955,66.13935546874998],[-53.41875,66.64853515624998],[-53.038281249999955,66.82680664062497],[-52.38686523437502,66.88115234375005],[-53.44360351562503,66.924658203125],[-53.88442382812502,67.13554687499999],[-53.79858398437494,67.41816406250001],[-52.666455078124955,67.74970703124995],[-50.613476562499955,67.5279296875],[-51.171044921874966,67.693603515625],[-50.96884765624998,67.80664062500003],[-51.765234375000034,67.73784179687505],[-52.34482421874998,67.83691406249997],[-53.735205078125006,67.54902343750004],[-53.151562499999926,68.20776367187503],[-51.779980468749926,68.05673828124998],[-51.456494140624926,68.116064453125],[-51.21015625000001,68.419921875],[-52.19853515624993,68.22080078125],[-53.38315429687495,68.29736328124997],[-53.03945312500002,68.61088867187499],[-52.60458984374998,68.70874023437503],[-51.62314453124995,68.53481445312505],[-50.945703124999966,68.68266601562505],[-50.807714843750006,68.81699218749998],[-51.24941406250002,68.73994140625001],[-51.084863281249994,69.12827148437498],[-50.29736328124994,69.17060546874998],[-51.07695312499996,69.20947265625],[-50.291699218749955,70.01445312500005],[-52.254638671875,70.05893554687503],[-53.02304687499995,70.30190429687497],[-54.01445312499996,70.42167968750005],[-54.53076171875,70.69926757812502],[-54.16582031249999,70.82011718750005],[-52.801953124999955,70.7505859375],[-50.87236328124993,70.36489257812502],[-50.66328124999998,70.417578125],[-51.32285156249998,70.58876953124997],[-51.25659179687497,70.85268554687502],[-51.77431640625002,71.01044921875001],[-51.018945312499966,71.001318359375],[-51.37666015625001,71.11904296875],[-53.007568359375,71.17998046874999],[-52.89184570312497,71.457666015625],[-51.76992187500002,71.67172851562498],[-53.44008789062502,71.57900390625002],[-53.14453125000003,71.80742187500002],[-53.65214843749996,72.36264648437506],[-53.92773437499997,72.31879882812501],[-53.47758789062502,71.84995117187506],[-54.01992187500002,71.657861328125],[-53.96298828124995,71.45898437499997],[-54.6890625,71.36723632812505],[-55.59404296874999,71.55351562500005],[-55.315576171874994,72.11069335937498],[-54.84013671874996,72.35610351562497],[-55.581445312499994,72.178857421875],[-55.63583984374998,72.300439453125],[-55.29570312499996,72.35439453124997],[-55.60170898437494,72.453466796875],[-54.924951171874994,72.57197265624998],[-54.737939453124994,72.87250976562501],[-55.07309570312498,73.01513671875003],[-55.28891601562498,72.93320312500003],[-55.66855468749998,73.00791015624998],[-55.288281249999955,73.32709960937498],[-56.10405273437496,73.55815429687499],[-55.83828125,73.75971679687501],[-56.22539062499999,74.12910156249995],[-57.23056640624995,74.12529296875007],[-56.70634765625002,74.21918945312501],[-56.717675781249994,74.42924804687499],[-56.25546874999998,74.52680664062498],[-58.56552734374998,75.35273437500001],[-58.249658203124994,75.50668945312503],[-58.51621093749995,75.68906250000006],[-61.18823242187494,76.157861328125],[-63.29130859374996,76.35205078125003],[-63.84306640624999,76.21713867187498],[-64.307275390625,76.31650390624998],[-65.36992187499993,76.13056640625004],[-65.87573242187494,76.23833007812505],[-66.46577148437498,76.13916015625],[-66.99257812500002,76.21293945312502],[-66.67480468750003,75.977392578125],[-68.14873046875002,76.06704101562497],[-69.48408203125001,76.39916992187503],[-68.1142578125,76.65063476562503],[-69.67382812499994,76.73588867187507],[-69.69423828125002,76.98945312500004],[-70.613134765625,76.82182617187499],[-71.14145507812498,77.02866210937503],[-70.86284179687496,77.175439453125],[-68.97832031250002,77.19531250000006],[-68.13554687499999,77.37958984375001],[-66.38945312499999,77.28027343750003],[-66.69121093749999,77.68120117187502],[-67.68808593749995,77.523779296875],[-68.62153320312498,77.60185546875002],[-69.35136718749999,77.467138671875],[-70.53540039062497,77.699560546875],[-70.11445312500001,77.84135742187505],[-71.27163085937494,77.81313476562497],[-72.81806640624995,78.1943359375],[-72.47250976562498,78.48203125],[-71.65131835937493,78.62314453124998],[-68.99345703124999,78.857421875],[-68.37705078124998,79.037841796875],[-65.82553710937503,79.17373046874997],[-64.79228515624993,80.00063476562502],[-64.17915039062498,80.09926757812497],[-66.84365234374997,80.07622070312507],[-67.05063476562503,80.384521484375],[-64.51552734374997,81],[-63.72197265624993,81.05732421875001],[-63.028662109375006,80.88955078125002],[-62.90336914062496,81.21835937500003],[-61.43598632812498,81.13359375000002],[-60.842871093750034,81.85537109374997],[-59.28193359374998,81.88403320312503],[-56.615136718749994,81.362890625],[-59.26181640624998,82.00664062500005],[-54.54887695312496,82.35063476562505],[-53.671337890624955,82.16406249999997],[-53.55566406250003,81.65327148437501],[-53.022558593750034,82.32172851562504],[-50.894433593749994,81.89521484375001],[-49.54106445312496,81.91806640625003],[-50.93554687500003,82.38281250000003],[-50.03710937499994,82.472412109375],[-44.7294921875,81.77983398437505],[-44.23886718749998,82.3681640625],[-45.55654296875002,82.74702148437498],[-41.87646484375,82.680322265625],[-41.36962890625003,82.75],[-46.136816406250006,82.85883789062504],[-46.169042968750006,83.06386718749997],[-45.41459960937496,83.01767578124998],[-43.00927734375003,83.26459960937501],[-41.300146484375006,83.10078125000004],[-40.35683593750002,83.332177734375],[-38.15625,82.9986328125],[-38.74956054687496,83.37084960937497],[-37.72333984374998,83.49775390624998],[-29.952880859375,83.56484374999997]]]]},"properties":{"name":"Greenland","childNum":14}},{"geometry":{"type":"Polygon","coordinates":[[[-89.2328125,15.888671875],[-88.89404296875,15.890625],[-88.60336914062499,15.76416015625],[-88.5939453125,15.950292968749991],[-88.22832031249999,15.72900390625],[-88.271435546875,15.694873046875003],[-88.36455078124999,15.616015625],[-88.68447265625,15.360498046874994],[-88.96098632812499,15.152441406249991],[-89.142578125,15.072314453125003],[-89.22236328125,14.866064453124991],[-89.16220703124999,14.669238281250003],[-89.17177734375,14.606884765624997],[-89.28671875,14.529980468749997],[-89.36259765624999,14.416015625],[-89.5736328125,14.390087890624997],[-89.54716796874999,14.241259765625003],[-90.04814453124999,13.904052734375],[-90.09521484375,13.736523437499997],[-90.60693359375,13.929003906250003],[-91.37734375,13.990185546874997],[-92.23515624999999,14.54541015625],[-92.15854492187499,14.963574218749997],[-92.14423828125,15.001953125],[-92.09873046874999,15.026757812499994],[-92.07480468749999,15.07421875],[-92.187158203125,15.320898437499991],[-92.08212890624999,15.495556640624997],[-91.9572265625,15.703222656249991],[-91.736572265625,16.07016601562499],[-91.433984375,16.070458984374994],[-90.97958984374999,16.07080078125],[-90.70322265624999,16.071044921875],[-90.52197265625,16.071191406249994],[-90.44716796875,16.072705078124997],[-90.45986328125,16.162353515625],[-90.450146484375,16.261376953124994],[-90.4169921875,16.351318359375],[-90.4169921875,16.39101562499999],[-90.47109375,16.43955078124999],[-90.57578125,16.467822265625003],[-90.63408203124999,16.5107421875],[-90.634375,16.565136718749997],[-90.65996093749999,16.630908203125003],[-90.710693359375,16.70810546874999],[-90.975830078125,16.867822265624994],[-91.409619140625,17.255859375],[-91.1955078125,17.254101562499997],[-90.99296874999999,17.25244140625],[-90.98916015625,17.81640625],[-89.16147460937499,17.81484375],[-89.2328125,15.888671875]]]},"properties":{"name":"Guatemala","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[144.74179687500003,13.25927734375],[144.64931640625002,13.4287109375],[144.87539062500002,13.614648437499994],[144.94082031250002,13.5703125],[144.74179687500003,13.25927734375]]]},"properties":{"name":"Guam","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-57.194775390625,5.5484375],[-57.3185546875,5.335351562499994],[-57.20981445312499,5.195410156249991],[-57.331005859375,5.020166015624994],[-57.711083984374994,4.991064453124991],[-57.91704101562499,4.820410156249991],[-57.84599609374999,4.668164062499997],[-58.05429687499999,4.101660156249991],[-57.646728515625,3.39453125],[-57.303662109375,3.377099609374994],[-57.19736328124999,2.853271484375],[-56.704345703125,2.036474609374991],[-56.4828125,1.942138671875],[-56.96953124999999,1.91640625],[-57.03759765625,1.936474609374997],[-57.092675781249994,2.005810546874997],[-57.118896484375,2.013964843749989],[-57.31748046874999,1.963476562499991],[-57.41269531249999,1.908935546875],[-57.500439453125,1.77382812499999],[-57.54575195312499,1.72607421875],[-57.59443359375,1.7041015625],[-57.795654296875,1.7],[-57.8734375,1.667285156249989],[-57.9828125,1.6484375],[-58.03466796875,1.520263671875],[-58.34067382812499,1.587548828124994],[-58.38037109375,1.530224609374997],[-58.39580078124999,1.481738281249989],[-58.5060546875,1.438671875],[-58.511865234374994,1.28466796875],[-58.68461914062499,1.281054687499989],[-58.73032226562499,1.247509765624997],[-58.78720703124999,1.20849609375],[-58.82177734375,1.201220703124989],[-59.231201171875,1.376025390624989],[-59.53569335937499,1.7],[-59.66660156249999,1.746289062499997],[-59.66850585937499,1.842333984374989],[-59.74072265625,1.874169921874994],[-59.75620117187499,1.900634765625],[-59.75522460937499,2.274121093749997],[-59.8896484375,2.362939453124994],[-59.9943359375,2.689990234374989],[-59.854394531249994,3.5875],[-59.55112304687499,3.933544921874997],[-59.557763671874994,3.960009765624989],[-59.62021484374999,4.023144531249997],[-59.73857421874999,4.226757812499997],[-59.69970703125,4.353515625],[-60.1486328125,4.533251953124989],[-59.990673828125,5.082861328124991],[-60.142041015625,5.238818359374989],[-60.241650390625,5.257958984374994],[-60.335205078125,5.199316406249991],[-60.45952148437499,5.188085937499991],[-60.6513671875,5.221142578124997],[-60.742138671875,5.202050781249994],[-61.37680664062499,5.906982421875],[-61.3908203125,5.938769531249989],[-61.303125,6.049511718749997],[-61.22495117187499,6.129199218749989],[-61.15947265624999,6.174414062499991],[-61.12871093749999,6.214306640624997],[-61.152294921875,6.385107421874991],[-61.151025390624994,6.446533203125],[-61.181591796875,6.513378906249997],[-61.20361328125,6.58837890625],[-61.14560546874999,6.69453125],[-60.717919921874994,6.768310546875],[-60.35209960937499,7.002880859374997],[-60.32207031249999,7.092041015625],[-60.32548828124999,7.133984375],[-60.34506835937499,7.15],[-60.46494140624999,7.166552734374989],[-60.523193359375,7.143701171874994],[-60.583203125,7.156201171874997],[-60.63330078125,7.211083984374994],[-60.718652343749994,7.535937499999989],[-60.513623046875,7.813183593749997],[-60.032421875,8.053564453124991],[-59.99072265625,8.162011718749994],[-59.96484375,8.191601562499997],[-59.849072265625,8.248681640624994],[-59.83164062499999,8.305957031249989],[-60.017529296875,8.54931640625],[-59.20024414062499,8.07460937499999],[-58.51108398437499,7.39804687499999],[-58.48056640624999,7.038134765624989],[-58.67294921874999,6.390771484374994],[-58.414990234375,6.85117187499999],[-57.982568359374994,6.785888671875],[-57.54013671874999,6.33154296875],[-57.2275390625,6.178417968749997],[-57.194775390625,5.5484375]]]},"properties":{"name":"Guyana","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[73.70742187500002,-53.13710937499999],[73.46513671875002,-53.184179687500006],[73.25117187500001,-52.97578125000001],[73.83779296875002,-53.11279296875],[73.70742187500002,-53.13710937499999]]]},"properties":{"name":"Heard I. and McDonald Is.","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-83.635498046875,14.876416015624997],[-84.53764648437496,14.633398437499963],[-84.64594726562498,14.661083984375011],[-84.86044921874998,14.809765625000011],[-84.98515624999999,14.752441406249972],[-85.059375,14.582958984374997],[-85.20834960937498,14.311816406250003],[-85.73393554687496,13.85869140625006],[-85.75341796875,13.852050781250028],[-85.78671874999995,13.844433593749997],[-85.98378906249997,13.965673828125006],[-86.04038085937503,14.050146484374977],[-86.33173828124995,13.770068359375031],[-86.37695312500003,13.755664062500031],[-86.61025390624997,13.774853515625026],[-86.73364257812494,13.763476562500017],[-86.75898437499995,13.746142578125045],[-86.77060546875003,13.698730468749972],[-86.763525390625,13.635253906250014],[-86.72958984375,13.4072265625],[-86.710693359375,13.31337890624998],[-86.72929687499996,13.284375],[-86.79213867187497,13.279785156249972],[-86.87353515624994,13.266503906250023],[-86.918212890625,13.223583984374983],[-87.00932617187499,13.007812499999986],[-87.0591796875,12.991455078125028],[-87.337255859375,12.979248046875028],[-87.48911132812503,13.352929687500051],[-87.814208984375,13.399169921875057],[-87.781884765625,13.521386718749994],[-87.71533203125003,13.812695312500011],[-87.73144531250003,13.841064453125014],[-87.80224609374997,13.889990234375034],[-87.89199218749997,13.894970703124983],[-87.99101562499996,13.879638671874972],[-88.15102539062497,13.987353515624974],[-88.44912109374994,13.850976562499994],[-88.48266601562503,13.854248046875043],[-88.49765624999998,13.904541015624986],[-88.50434570312501,13.964208984374963],[-88.51254882812498,13.97895507812504],[-89.12050781249994,14.370214843749991],[-89.36259765624996,14.416015625],[-89.17177734375,14.606884765624983],[-89.16220703125,14.669238281249989],[-89.22236328125001,14.86606445312502],[-89.142578125,15.072314453125031],[-88.96098632812496,15.15244140625002],[-88.68447265625002,15.360498046875037],[-88.36455078124996,15.616015625000045],[-88.27143554687498,15.694873046875045],[-88.22832031249999,15.729003906249972],[-88.131103515625,15.701025390625034],[-87.87495117187495,15.879345703124955],[-86.35664062499998,15.783203125],[-85.93627929687497,15.953417968750045],[-85.98564453124999,16.02416992187497],[-85.48369140624996,15.899511718749977],[-84.97373046874998,15.989892578124994],[-84.55966796875,15.802001953125],[-84.26142578124998,15.822607421875034],[-83.765283203125,15.405468750000054],[-83.972802734375,15.519628906250034],[-84.11132812499997,15.492431640625],[-84.09506835937503,15.400927734375017],[-83.92744140624998,15.394042968750028],[-83.76044921874998,15.220361328124994],[-83.49794921874997,15.222119140624997],[-83.64638671875,15.368408203125043],[-83.36918945312493,15.239990234375],[-83.29086914062498,15.078906250000045],[-83.2255859375,15.042285156250045],[-83.15751953124999,14.993066406249966],[-83.41503906249994,15.008056640625],[-83.5365234375,14.977001953124983],[-83.635498046875,14.876416015624997]]]},"properties":{"name":"Honduras","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[17.60781250000005,42.76904296875],[17.744238281250063,42.70034179687505],[17.34414062500008,42.790380859375006],[17.60781250000005,42.76904296875]]],[[[16.650683593750017,42.99658203125],[17.188281250000045,42.917041015625045],[16.850683593750006,42.8955078125],[16.650683593750017,42.99658203125]]],[[[17.667578125000063,42.897119140624994],[18.436328125000017,42.559716796874994],[18.517480468750023,42.43291015624999],[17.823828125,42.79741210937502],[17.045410156250057,43.014892578125],[17.667578125000063,42.897119140624994]]],[[[16.785253906250006,43.270654296874966],[16.490332031250034,43.28618164062502],[16.44892578125004,43.38706054687506],[16.89130859375001,43.314648437499955],[16.785253906250006,43.270654296874966]]],[[[15.371386718750074,43.973828124999955],[15.437207031250068,43.899511718750006],[15.270019531250028,44.01074218750003],[15.371386718750074,43.973828124999955]]],[[[14.488085937500074,44.66005859375005],[14.31240234375008,44.90039062499997],[14.33125,45.16499023437498],[14.488085937500074,44.66005859375005]]],[[[14.810253906250068,44.97705078124997],[14.45039062500004,45.079199218750006],[14.571093750000017,45.224755859374994],[14.810253906250068,44.97705078124997]]],[[[18.905371093750006,45.931738281250034],[18.839062499999983,45.83574218750002],[19.064257812500045,45.51499023437506],[19.004687500000074,45.39951171875006],[19.4,45.2125],[19.062890625000023,45.13720703125],[19.007128906250045,44.86918945312502],[18.83642578125,44.883251953124955],[18.66259765625,45.07744140624999],[17.812792968750074,45.078125],[16.918652343749983,45.27656249999998],[16.53066406250008,45.21669921875002],[16.29335937500005,45.00883789062496],[16.028320312500057,45.18959960937502],[15.788085937500057,45.17895507812497],[15.736621093750045,44.76582031250001],[16.10341796875008,44.52099609375006],[16.300097656250017,44.12451171875],[17.27382812500005,43.44575195312501],[17.650488281250063,43.006591796875],[17.585156250000068,42.93837890625005],[16.903125,43.392431640625006],[16.393945312500023,43.54335937500002],[15.985546875000068,43.519775390625],[15.185839843750017,44.17211914062503],[15.122949218749994,44.256787109374955],[15.470996093750045,44.27197265625003],[14.981347656250023,44.60292968750005],[14.854589843750034,45.08100585937501],[14.550488281249983,45.297705078125006],[14.31269531250004,45.33779296875002],[13.86074218750008,44.83740234375003],[13.517187500000063,45.481787109375034],[13.878710937500017,45.428369140624994],[14.369921875000074,45.48144531250006],[14.427343750000034,45.50576171875002],[14.56884765625,45.65722656249997],[14.591796875000057,45.65126953125002],[14.649511718750006,45.57148437500001],[14.793066406250034,45.47822265625001],[14.95458984375,45.499902343749994],[15.110449218750034,45.450781250000034],[15.242089843750023,45.44140624999997],[15.339453125000063,45.46704101562506],[15.326660156250028,45.502294921875034],[15.291210937500011,45.541552734375045],[15.283593750000051,45.5796875],[15.35371093750004,45.659912109375],[15.27705078125004,45.73261718749998],[15.652148437500074,45.86215820312498],[15.675585937500045,45.98369140624996],[15.666210937500011,46.04848632812502],[15.596875,46.10922851562506],[15.592578125000017,46.139990234375006],[15.608984374999977,46.171923828125045],[16.1064453125,46.382226562499994],[16.32119140625005,46.53461914062504],[16.42763671875005,46.5244140625],[16.516210937499977,46.499902343749966],[16.569921875,46.48500976562505],[16.748046875000057,46.41640625000002],[16.87148437500008,46.33930664062504],[17.310644531250006,45.99614257812502],[17.80712890625,45.79042968750002],[18.358300781250023,45.75302734375006],[18.533593750000023,45.79614257812503],[18.56464843750004,45.81328124999999],[18.666015625,45.90747070312497],[18.905371093750006,45.931738281250034]]]]},"properties":{"name":"Croatia","childNum":8}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-72.80458984374997,18.777685546875063],[-72.82221679687501,18.707128906249977],[-73.07797851562498,18.790917968749994],[-73.27641601562499,18.95405273437501],[-72.80458984374997,18.777685546875063]]],[[[-71.647216796875,19.195947265624994],[-71.80712890624997,18.987011718749983],[-71.733642578125,18.85639648437501],[-71.72705078125,18.80322265625003],[-71.74321289062502,18.73291015625],[-71.86650390624999,18.61416015625005],[-71.98686523437499,18.61035156249997],[-72.000390625,18.59790039062503],[-71.94038085937493,18.51259765625005],[-71.87255859374997,18.416210937499955],[-71.76191406249998,18.34130859374997],[-71.73725585937495,18.27080078124999],[-71.76831054687497,18.039160156250063],[-71.85292968749997,18.119140625],[-71.94609375,18.186083984375045],[-72.05986328124993,18.228564453125017],[-72.87666015624998,18.151757812499994],[-73.38515625000002,18.251171874999983],[-73.747314453125,18.190234375000017],[-73.88496093749998,18.041894531249994],[-74.478125,18.45],[-74.3875,18.624707031249983],[-74.22773437499998,18.662695312499977],[-72.78935546874996,18.434814453125],[-72.37607421874998,18.57446289062503],[-72.34765624999994,18.674951171874994],[-72.81108398437496,19.071582031250074],[-72.70322265625,19.441064453125023],[-73.43837890624994,19.722119140624983],[-73.21777343750003,19.88369140625005],[-72.63701171875002,19.90087890625],[-72.21982421875003,19.744628906250057],[-71.834716796875,19.696728515624983],[-71.77924804687498,19.718164062499994],[-71.75742187499998,19.68818359375001],[-71.71147460937493,19.486572265625057],[-71.74648437499997,19.28583984375001],[-71.647216796875,19.195947265624994]]]]},"properties":{"name":"Haiti","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[22.1318359375,48.405322265624996],[22.253710937500017,48.407373046874994],[22.582421875000023,48.134033203125],[22.769140625,48.109619140625],[22.87666015625001,47.947265625],[21.99970703125001,47.505029296874994],[21.121679687500006,46.282421875],[20.76025390625,46.246240234374994],[20.613671875000023,46.13349609375],[20.508105468750017,46.166943359375],[20.28095703125001,46.1330078125],[20.241796875,46.10859375],[20.21015625000001,46.126025390624996],[20.161425781250017,46.141894531249996],[19.93408203125,46.161474609375],[19.84443359375001,46.145898437499994],[19.61347656250001,46.169189453125],[19.421289062500023,46.064453125],[18.666015625,45.907470703125],[18.56464843750001,45.81328125],[18.533593750000023,45.796142578125],[18.358300781250023,45.75302734375],[17.80712890625,45.790429687499994],[17.310644531250006,45.996142578124996],[16.871484375000023,46.339306640625],[16.748046875,46.41640625],[16.569921875,46.485009765624994],[16.516210937500006,46.499902343749994],[16.283593750000023,46.857275390625],[16.093066406250017,46.86328125],[16.453417968750017,47.006787109375],[16.44287109375,47.39951171875],[16.676562500000017,47.536035156249994],[16.421289062500023,47.674462890624994],[17.06660156250001,47.707568359374996],[17.147363281250023,48.00595703125],[17.76191406250001,47.770166015624994],[18.72421875,47.787158203124996],[18.791894531250023,48.000292968749996],[19.625390625000023,48.223095703125],[19.95039062500001,48.146630859374994],[20.333789062500017,48.295556640624994],[20.490039062500017,48.526904296874996],[21.45136718750001,48.55224609375],[21.766992187500023,48.3380859375],[22.1318359375,48.405322265624996]]]},"properties":{"name":"Hungary","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[122.9489257812501,-10.90927734375002],[122.82617187500003,-10.899121093749983],[122.84570312500003,-10.761816406249991],[123.37109375000003,-10.474902343749989],[123.41816406250004,-10.651269531250037],[122.9489257812501,-10.90927734375002]]],[[[121.8830078125001,-10.590332031249957],[121.70468750000006,-10.5556640625],[121.99833984375002,-10.446972656249983],[121.8830078125001,-10.590332031249957]]],[[[123.41621093750004,-10.302636718749966],[123.3255859375,-10.264160156249943],[123.45878906250002,-10.13994140624996],[123.41621093750004,-10.302636718749966]]],[[[120.0125,-9.374707031250026],[120.78447265625002,-9.95703125],[120.83261718750006,-10.0375],[120.69804687500002,-10.206640624999949],[120.4391601562501,-10.294042968749991],[120.14482421875002,-10.200097656249952],[119.60107421874997,-9.773535156250006],[119.08544921875003,-9.706933593750023],[118.95878906250002,-9.519335937500003],[119.29589843749997,-9.3671875],[119.9420898437501,-9.301464843750026],[120.0125,-9.374707031250026]]],[[[125.06816406250002,-9.511914062499997],[124.42753906250002,-10.14863281250004],[123.7472656250001,-10.347167968749986],[123.60478515625002,-10.270117187500006],[123.71640625000012,-10.078613281249986],[123.5892578125,-9.966796875000028],[123.709375,-9.61484375],[124.0363281250001,-9.341601562500031],[124.28232421875012,-9.427929687500026],[124.44443359375012,-9.190332031250023],[124.92226562500005,-8.942480468749977],[124.93681640625007,-9.053417968750026],[125.14902343750012,-9.042578125000034],[125.10048828125,-9.189843750000023],[124.96015625000004,-9.213769531250009],[125.06816406250002,-9.511914062499997]]],[[[115.60996093750012,-8.769824218749974],[115.48046875000003,-8.715429687500006],[115.56142578125,-8.669921874999972],[115.60996093750012,-8.769824218749974]]],[[[122.97734375000002,-8.54521484374996],[122.88779296875006,-8.587304687500009],[123.01054687500002,-8.448339843750034],[123.153125,-8.475781250000026],[122.97734375000002,-8.54521484374996]]],[[[119.46406250000004,-8.741015624999974],[119.38554687500002,-8.736035156250026],[119.4464843750001,-8.429199218749957],[119.55722656250012,-8.518847656250003],[119.46406250000004,-8.741015624999974]]],[[[123.31748046875012,-8.354785156249974],[123.02500000000012,-8.395507812500014],[123.21708984375002,-8.235449218750006],[123.33603515625006,-8.269042968750014],[123.31748046875012,-8.354785156249974]]],[[[116.64082031250004,-8.613867187500006],[116.51425781250012,-8.820996093750011],[116.58652343750012,-8.886132812499966],[116.23935546875006,-8.912109375000014],[115.85732421875005,-8.787890625000017],[116.07646484375002,-8.744921874999974],[116.06113281250006,-8.437402343750023],[116.4015625000001,-8.204199218750034],[116.7189453125001,-8.336035156249977],[116.64082031250004,-8.613867187500006]]],[[[124.28662109375003,-8.32949218749998],[124.14667968750004,-8.531445312499997],[123.92773437500003,-8.448925781249969],[124.23955078125002,-8.20341796874996],[124.28662109375003,-8.32949218749998]]],[[[123.92480468750003,-8.2724609375],[123.55302734375007,-8.566796875],[123.23007812500006,-8.530664062500023],[123.47587890625007,-8.322265625000014],[123.39121093750012,-8.280468750000026],[123.77597656250006,-8.190429687499986],[123.92480468750003,-8.2724609375]]],[[[138.89511718750006,-8.388671874999957],[138.56337890625,-8.30908203125],[138.79619140625007,-8.173632812500017],[138.89511718750006,-8.388671874999957]]],[[[117.55634765625004,-8.367285156249949],[117.49052734375007,-8.183398437499974],[117.66503906249997,-8.148242187500003],[117.55634765625004,-8.367285156249949]]],[[[124.5755859375,-8.140820312499997],[125.05029296874997,-8.179589843749994],[125.13173828125,-8.326464843749989],[124.38066406250002,-8.41513671875002],[124.43066406249997,-8.18320312500002],[124.5755859375,-8.140820312499997]]],[[[127.8234375000001,-8.098828124999969],[128.11923828125012,-8.17070312499996],[128.02353515625006,-8.255371093749972],[127.82089843750012,-8.190234375000031],[127.8234375000001,-8.098828124999969]]],[[[122.7829101562501,-8.61171875],[121.65136718749997,-8.898730468749946],[121.41464843750006,-8.81484375],[121.32832031250004,-8.916894531250009],[121.03525390625012,-8.935449218749966],[120.55048828125004,-8.80185546875002],[119.909375,-8.857617187500011],[119.80791015625002,-8.697656250000023],[119.87480468750007,-8.419824218749994],[120.61025390625005,-8.24042968750004],[121.44453125000004,-8.57783203125004],[121.96650390625004,-8.455175781250006],[122.32324218749997,-8.628320312500023],[122.85048828125,-8.304394531250011],[122.91914062500004,-8.221875],[122.75859375000002,-8.185937499999952],[122.91699218749997,-8.105566406250006],[123.00595703125006,-8.329101562499986],[122.7829101562501,-8.61171875]]],[[[130.86220703125,-8.31875],[130.77519531250002,-8.34990234374996],[131.02011718750012,-8.091308593749943],[131.17636718750006,-8.130761718749994],[130.86220703125,-8.31875]]],[[[118.24238281250004,-8.317773437499994],[118.61191406250006,-8.28066406249998],[118.71386718749997,-8.41494140624998],[118.926171875,-8.297656249999974],[119.12968750000002,-8.668164062499969],[118.74589843750002,-8.735449218749991],[118.83261718750012,-8.833398437499966],[118.47861328125012,-8.856445312499957],[118.37890625000003,-8.674609375000031],[118.18994140624997,-8.840527343749997],[117.06132812500002,-9.099023437499994],[116.78847656250005,-9.006347656250028],[116.83505859375012,-8.532421875000026],[117.16484375000007,-8.367187500000014],[117.56708984375004,-8.426367187499991],[117.80605468750005,-8.711132812500011],[117.96953125000002,-8.728027343749986],[118.23486328124997,-8.591894531249963],[117.81484375000005,-8.342089843749974],[117.7552734375,-8.149511718749991],[118.11748046875007,-8.12226562500004],[118.24238281250004,-8.317773437499994]]],[[[115.44785156250012,-8.155175781249994],[115.70429687500004,-8.40712890624998],[115.14492187500005,-8.849023437500037],[115.05507812500005,-8.573046874999946],[114.61318359375,-8.37832031249998],[114.46757812500007,-8.166308593749946],[114.93847656249997,-8.18710937500002],[115.15400390625004,-8.065722656249974],[115.44785156250012,-8.155175781249994]]],[[[129.83886718749997,-7.954589843749986],[129.71347656250012,-8.04072265625004],[129.60898437500006,-7.803417968750011],[129.81298828124997,-7.819726562499952],[129.83886718749997,-7.954589843749986]]],[[[126.80097656250004,-7.667871093750009],[126.4720703125,-7.950390625000011],[126.04003906250003,-7.885839843750006],[125.79824218750005,-7.984570312499969],[125.97529296875004,-7.663378906249989],[126.21367187500002,-7.706738281250026],[126.60957031250004,-7.571777343749972],[126.80097656250004,-7.667871093750009]]],[[[127.41943359375003,-7.623046875000028],[127.37070312500012,-7.512792968749949],[127.47519531250012,-7.531054687500031],[127.41943359375003,-7.623046875000028]]],[[[138.53535156250004,-8.273632812499969],[138.2962890625,-8.405175781250037],[137.65039062499997,-8.386132812499966],[138.08183593750002,-7.566210937500003],[138.29550781250012,-7.4384765625],[138.76982421875002,-7.390429687499974],[138.98906250000002,-7.696093749999989],[138.53535156250004,-8.273632812499969]]],[[[131.3255859375,-7.999511718749986],[131.11376953125003,-7.997363281249989],[131.13779296875012,-7.684863281250017],[131.64345703125,-7.11279296875],[131.73613281250007,-7.197070312500017],[131.64384765625002,-7.266894531249946],[131.62441406250005,-7.626171874999955],[131.3255859375,-7.999511718749986]]],[[[131.98203125000006,-7.202050781249966],[131.75078125000002,-7.116796875],[131.92226562500005,-7.104492187499986],[131.98203125000006,-7.202050781249966]]],[[[128.6701171875001,-7.183300781249969],[128.52978515625003,-7.134570312499989],[128.62773437500007,-7.06875],[128.6701171875001,-7.183300781249969]]],[[[120.77441406250003,-7.118945312500003],[120.64082031250004,-7.115820312499991],[120.63339843750006,-7.018261718750011],[120.77441406250003,-7.118945312500003]]],[[[113.84453125000007,-7.105371093749994],[113.12695312499997,-7.224121093750028],[112.72587890625007,-7.072753906250014],[112.86806640625,-6.899902343749972],[113.06738281250003,-6.879980468749991],[113.97470703125012,-6.873046875],[114.0736328125,-6.960156249999983],[113.84453125000007,-7.105371093749994]]],[[[115.37705078125006,-6.97080078125002],[115.22031250000012,-6.952539062500037],[115.24052734375007,-6.861230468749994],[115.54609375000004,-6.938671874999955],[115.37705078125006,-6.97080078125002]]],[[[105.25283203125005,-6.640429687499946],[105.12138671875007,-6.614941406249997],[105.26054687500002,-6.523925781250014],[105.25283203125005,-6.640429687499946]]],[[[134.53681640625004,-6.442285156249994],[134.32275390624997,-6.84873046875002],[134.09082031249997,-6.833789062500003],[134.10703125000006,-6.471582031250009],[134.19462890625007,-6.459765625],[134.11464843750005,-6.190820312500009],[134.53681640625004,-6.442285156249994]]],[[[107.37392578125005,-6.007617187499989],[107.66679687500002,-6.215820312499957],[108.33017578125012,-6.286035156249966],[108.67783203125006,-6.790527343749972],[110.42626953124997,-6.947265625000028],[110.83476562500002,-6.424218749999952],[110.97226562500012,-6.435644531249977],[111.18154296875005,-6.686718749999969],[111.54033203125002,-6.648242187500031],[112.0873046875,-6.89335937499996],[112.53925781250004,-6.926464843749955],[112.64873046875007,-7.221289062499977],[112.7943359375,-7.304492187499974],[112.79453125000012,-7.55244140625004],[113.01357421875005,-7.657714843749986],[113.49765625000006,-7.723828124999955],[114.07070312500005,-7.633007812500011],[114.40927734375012,-7.79248046875],[114.38691406250004,-8.405175781250037],[114.58378906250002,-8.769628906250034],[113.25332031250005,-8.286718749999963],[112.67880859375006,-8.409179687499957],[111.50996093750004,-8.30507812499998],[110.60722656250002,-8.149414062499972],[109.28164062500005,-7.704882812500003],[108.74121093749997,-7.667089843750034],[108.45175781250006,-7.79697265625002],[107.91748046875003,-7.724121093750014],[107.28496093750007,-7.471679687500014],[106.45527343750004,-7.368652343749986],[106.51972656250004,-7.053710937499943],[106.19824218749997,-6.927832031249977],[105.25546875000012,-6.835253906250031],[105.37089843750002,-6.664355468750031],[105.48369140625007,-6.781542968750017],[105.65507812500002,-6.469531249999946],[105.78691406250002,-6.456933593749966],[105.86826171875006,-6.11640625000004],[106.075,-5.914160156249963],[106.82519531249997,-6.098242187499977],[107.0462890625,-5.90419921874998],[107.37392578125005,-6.007617187499989]]],[[[120.52832031249997,-6.2984375],[120.48730468749997,-6.464843749999972],[120.47734375000007,-5.775292968750009],[120.52832031249997,-6.2984375]]],[[[112.7194335937501,-5.81103515625],[112.58603515625006,-5.803613281249994],[112.69003906250006,-5.726171875000034],[112.7194335937501,-5.81103515625]]],[[[132.80712890625003,-5.850781250000011],[132.68144531250002,-5.91259765625],[132.63017578125002,-5.60703125],[132.80712890625003,-5.850781250000011]]],[[[134.74697265625,-5.707031249999957],[134.71416015625007,-6.29511718750004],[134.44111328125004,-6.334863281249966],[134.15488281250006,-6.06289062499998],[134.3019531250001,-6.009765624999986],[134.34306640625002,-5.833007812499943],[134.20537109375002,-5.707226562499997],[134.34130859375003,-5.712890624999986],[134.57080078124997,-5.42734375],[134.74697265625,-5.707031249999957]]],[[[132.92626953124997,-5.902050781249983],[132.84501953125002,-5.987988281249997],[133.13847656250002,-5.317871093749986],[133.11962890625003,-5.575976562499989],[132.92626953124997,-5.902050781249983]]],[[[102.36718750000003,-5.478710937499983],[102.1107421875,-5.32255859374996],[102.3717773437501,-5.366406250000011],[102.36718750000003,-5.478710937499983]]],[[[123.62675781250007,-5.271582031249963],[123.58261718750006,-5.36738281250004],[123.54277343750002,-5.271093749999963],[123.62675781250007,-5.271582031249963]]],[[[122.04296874999997,-5.437988281250028],[121.80849609375,-5.256152343750017],[121.91367187500012,-5.072265624999957],[122.04101562500003,-5.158789062499991],[122.04296874999997,-5.437988281250028]]],[[[122.64511718750012,-5.26943359374998],[122.5638671875,-5.3875],[122.28310546875,-5.319531249999969],[122.39628906250002,-5.069824218749986],[122.36894531250007,-4.767187499999977],[122.70195312500002,-4.61865234375],[122.75986328125012,-4.933886718750003],[122.61406250000007,-5.138671874999986],[122.64511718750012,-5.26943359374998]]],[[[123.17978515625006,-4.551171875000023],[123.195703125,-4.82265625],[123.05517578124997,-4.748242187500026],[122.97167968750003,-5.138476562500031],[123.18730468750007,-5.333007812499957],[122.96875,-5.405761718749943],[122.81210937500012,-5.671289062499952],[122.64501953124997,-5.663378906250031],[122.58642578124997,-5.488867187500006],[122.76650390625005,-5.210156249999983],[122.85332031250007,-4.618359375000026],[123.074609375,-4.38691406250004],[123.17978515625006,-4.551171875000023]]],[[[133.57080078124997,-4.245898437500003],[133.621875,-4.299316406249957],[133.32089843750006,-4.111035156249969],[133.57080078124997,-4.245898437500003]]],[[[123.2423828125001,-4.112988281250011],[123.07617187499997,-4.227148437499991],[122.96904296875002,-4.029980468749969],[123.21191406250003,-3.997558593750028],[123.2423828125001,-4.112988281250011]]],[[[128.56259765625012,-3.58544921875],[128.39160156250003,-3.637890625000026],[128.45156250000005,-3.514746093749991],[128.56259765625012,-3.58544921875]]],[[[128.2755859375001,-3.67460937499996],[127.97802734374997,-3.770996093749972],[127.925,-3.69931640625002],[128.32910156249997,-3.51591796874996],[128.2755859375001,-3.67460937499996]]],[[[116.42412109375007,-3.464453124999963],[116.38779296875012,-3.636718749999972],[116.3265625,-3.539062499999972],[116.42412109375007,-3.464453124999963]]],[[[116.30332031250006,-3.868164062499957],[116.05878906250004,-4.006933593749991],[116.06357421875006,-3.457910156249952],[116.26972656250004,-3.251074218750006],[116.30332031250006,-3.868164062499957]]],[[[126.86113281250007,-3.087890624999986],[127.22734375000007,-3.391015625],[127.22958984375006,-3.633007812500011],[126.68632812500007,-3.823632812500037],[126.21455078125004,-3.605175781250026],[126.05654296875,-3.420996093749991],[126.08828125,-3.105468750000014],[126.86113281250007,-3.087890624999986]]],[[[106.88642578125004,-3.005273437500023],[106.7428710937501,-2.932812500000011],[106.91064453124997,-2.93398437499998],[106.88642578125004,-3.005273437500023]]],[[[129.75468750000007,-2.865820312500034],[130.3791015625001,-2.989355468749977],[130.56992187500006,-3.130859375000028],[130.85996093750006,-3.570312500000028],[130.805078125,-3.85771484374996],[129.844140625,-3.327148437499957],[129.51171875000003,-3.32851562499998],[129.46767578125005,-3.453222656249977],[128.8625,-3.234960937500006],[128.51660156249997,-3.449121093750037],[128.13203125000004,-3.157421875000026],[127.90234374999997,-3.496289062499955],[127.87792968749997,-3.222070312499966],[128.19853515625002,-2.865917968749969],[128.99111328125,-2.82851562499998],[129.17441406250006,-2.933496093749966],[129.48417968750002,-2.785742187499977],[129.75468750000007,-2.865820312500034]]],[[[100.42509765625007,-3.182910156249974],[100.46513671875007,-3.32851562499998],[100.20429687500004,-2.98681640625],[100.19853515625002,-2.785546875000023],[100.45458984375003,-3.001953124999972],[100.42509765625007,-3.182910156249974]]],[[[108.2072265625001,-2.997656249999977],[108.05527343750006,-3.22685546874996],[107.85820312500002,-3.086328125000023],[107.61445312500004,-3.209375],[107.56347656250003,-2.920117187499997],[107.66630859375002,-2.566308593750037],[107.83779296875005,-2.530273437499972],[108.21513671875002,-2.696972656250011],[108.29062500000012,-2.829980468750023],[108.2072265625001,-2.997656249999977]]],[[[100.20410156249997,-2.741015625000017],[100.01494140625007,-2.819726562499966],[99.98789062500006,-2.525390624999957],[100.20410156249997,-2.741015625000017]]],[[[99.84306640625007,-2.343066406250031],[99.60703125000012,-2.257519531250011],[99.57216796875005,-2.025781249999966],[99.84306640625007,-2.343066406250031]]],[[[126.055078125,-2.451269531249963],[125.86289062500006,-2.077148437499943],[125.92275390625,-1.974804687499969],[126.055078125,-2.451269531249963]]],[[[126.02421875000007,-1.789746093750011],[126.33173828125004,-1.822851562500006],[125.47919921875004,-1.940039062499991],[125.38720703124997,-1.843066406249946],[126.02421875000007,-1.789746093750011]]],[[[130.35332031250007,-1.690527343749963],[130.41884765625,-1.971289062499963],[130.24804687500003,-2.047753906249994],[129.7376953125,-1.866894531250011],[130.35332031250007,-1.690527343749963]]],[[[124.96953125000007,-1.70546875],[125.18789062500005,-1.712890624999986],[125.31406250000006,-1.877148437499969],[124.41777343750002,-2.005175781250031],[124.32968750000012,-1.858886718749972],[124.41757812500006,-1.659277343749991],[124.96953125000007,-1.70546875]]],[[[135.47421875000006,-1.591796875000014],[136.89257812500003,-1.799707031249994],[136.22812500000012,-1.893652343749949],[135.47421875000006,-1.591796875000014]]],[[[108.953125,-1.61962890625],[108.83789062499997,-1.661621093750028],[108.80371093750003,-1.567773437499994],[108.953125,-1.61962890625]]],[[[106.04570312500002,-1.669433593750014],[106.36591796875004,-2.464843749999972],[106.81845703125006,-2.573339843749963],[106.6120117187501,-2.895507812499957],[106.66718750000004,-3.071777343749986],[105.99873046875004,-2.824902343749955],[105.7858398437501,-2.18134765625004],[105.13339843750012,-2.042578125],[105.45957031250006,-1.574707031249986],[105.58544921875003,-1.526757812499994],[105.7008789062501,-1.731054687499963],[105.7204101562501,-1.533886718750026],[105.91005859375,-1.504980468749991],[106.04570312500002,-1.669433593750014]]],[[[123.59755859375,-1.704296875000011],[123.48251953125006,-1.681445312499974],[123.52851562500004,-1.502832031250009],[123.59755859375,-1.704296875000011]]],[[[128.1530273437501,-1.66054687499998],[127.56162109375012,-1.728515624999972],[127.39501953125003,-1.589843749999972],[127.64667968750004,-1.332421875],[128.1530273437501,-1.66054687499998]]],[[[123.2123046875,-1.171289062499966],[123.23779296874997,-1.389355468749983],[123.43476562500004,-1.236816406249986],[123.54726562500005,-1.337402343749957],[123.51191406250004,-1.447363281249977],[123.27490234374997,-1.437207031249955],[123.17294921875006,-1.616015624999974],[123.15039062500003,-1.304492187500003],[122.89042968750007,-1.58720703124996],[122.81083984375002,-1.432128906249986],[122.90800781250002,-1.182226562499963],[123.2123046875,-1.171289062499966]]],[[[109.71025390625007,-1.1806640625],[109.46367187500002,-1.277539062500026],[109.4759765625,-0.9853515625],[109.74335937500004,-1.039355468749989],[109.71025390625007,-1.1806640625]]],[[[134.96533203124997,-1.116015624999974],[134.86171875,-1.114160156249952],[134.82792968750002,-0.978808593750003],[134.99628906250004,-1.03408203124998],[134.96533203124997,-1.116015624999974]]],[[[99.16386718750007,-1.777929687500006],[98.82773437500006,-1.609960937499977],[98.60175781250004,-1.197851562499949],[98.67607421875007,-0.970507812500003],[98.93261718750003,-0.954003906250009],[99.2672851562501,-1.62773437499996],[99.16386718750007,-1.777929687500006]]],[[[131.00185546875005,-1.315527343750034],[130.78232421875006,-1.255468749999963],[130.67294921875006,-0.959765625000031],[131.03300781250007,-0.917578124999963],[131.00185546875005,-1.315527343750034]]],[[[135.38300781250004,-0.6513671875],[135.89355468749997,-0.725781249999969],[136.37529296875007,-1.094042968750031],[136.1647460937501,-1.214746093750023],[135.91503906250003,-1.178417968749997],[135.74707031249997,-0.823046874999974],[135.64570312500004,-0.881933593749991],[135.38300781250004,-0.6513671875]]],[[[127.30039062500012,-0.780957031250026],[127.1564453125001,-0.760937500000026],[127.20908203125006,-0.619335937499955],[127.30039062500012,-0.780957031250026]]],[[[130.6266601562501,-0.528710937499966],[130.46542968750006,-0.486523437499983],[130.6159179687501,-0.417285156250003],[130.6266601562501,-0.528710937499966]]],[[[121.86435546875012,-0.406835937500006],[121.88125,-0.502636718749983],[121.65527343749997,-0.526171874999989],[121.86435546875012,-0.406835937500006]]],[[[140.97343750000007,-2.609765625],[140.97353515625,-2.803417968750026],[140.975,-6.346093750000023],[140.86230468749997,-6.740039062499989],[140.97519531250006,-6.90537109375002],[140.97617187500012,-9.11875],[140.00292968749997,-8.19550781250004],[140.11699218750002,-7.923730468750009],[139.93476562500004,-8.101171875],[139.38564453125,-8.189062499999963],[139.24882812500002,-7.982421874999972],[138.890625,-8.237792968749943],[139.08798828125012,-7.587207031250017],[138.74794921875,-7.25146484375],[139.17685546875006,-7.1904296875],[138.84570312500003,-7.13632812499999],[138.60136718750007,-6.936523437499972],[138.86455078125007,-6.858398437499943],[138.43867187500004,-6.343359375],[138.2962890625,-5.94902343749996],[138.37460937500006,-5.84365234374998],[138.19960937500005,-5.80703125],[138.33964843750007,-5.675683593749966],[138.08710937500004,-5.70917968750004],[138.06083984375002,-5.46523437499998],[137.27978515624997,-4.945410156249949],[136.61884765625004,-4.81875],[135.97968750000004,-4.530859374999963],[135.19560546875007,-4.450683593749972],[134.67968749999997,-4.079101562499943],[134.70654296875003,-3.954785156250026],[134.88652343750007,-3.938476562499986],[134.26621093750012,-3.945800781249972],[134.14707031250006,-3.79677734374998],[133.97382812500004,-3.817968750000034],[133.67832031250006,-3.4794921875],[133.8415039062501,-3.054785156249991],[133.70039062500004,-3.0875],[133.653125,-3.364355468749991],[133.51816406250012,-3.411914062500003],[133.40087890625003,-3.899023437500034],[133.24873046875004,-4.062304687499989],[132.91445312500005,-4.05693359374996],[132.75390625000003,-3.703613281250014],[132.86972656250006,-3.550976562499997],[132.75136718750005,-3.294628906249997],[131.97119140624997,-2.788574218750014],[132.2306640625001,-2.680371093749997],[132.725,-2.789062500000028],[133.19101562500006,-2.43779296874996],[133.70009765625005,-2.624609375],[133.75332031250005,-2.450683593750014],[133.90488281250012,-2.390917968750003],[133.79101562500003,-2.293652343749997],[133.92158203125004,-2.102050781249957],[132.96279296875005,-2.272558593749963],[132.30761718749997,-2.24228515625002],[132.02343749999997,-1.99033203125002],[131.93037109375004,-1.559667968750034],[131.29375,-1.393457031250009],[130.99589843750007,-1.42470703124998],[131.1908203125,-1.165820312500003],[131.2572265625,-0.855468750000014],[131.80429687500006,-0.703808593750026],[132.39375,-0.355468750000028],[132.85644531250003,-0.417382812500023],[133.47265624999997,-0.726171874999963],[133.97451171875,-0.744335937500026],[134.11152343750004,-0.84677734375002],[134.07197265625004,-1.001855468749994],[134.25957031250007,-1.362988281250026],[134.105859375,-1.720996093749946],[134.19482421875003,-2.309082031249943],[134.45996093749997,-2.83232421874996],[134.48330078125,-2.583007812499972],[134.62744140624997,-2.536718749999963],[134.70214843749997,-2.933593749999986],[134.84335937500006,-2.909179687499986],[134.88681640625006,-3.209863281249966],[135.25156250000012,-3.368554687499966],[135.48662109375002,-3.34511718749998],[135.85917968750002,-2.99531250000004],[136.38994140625002,-2.273339843750037],[137.07207031250002,-2.105078124999949],[137.1710937500001,-2.025488281249991],[137.1234375,-1.840917968749963],[137.80625000000012,-1.483203125],[139.78955078125003,-2.34824218750002],[140.62255859374997,-2.44580078125],[140.74746093750005,-2.607128906249997],[140.97343750000007,-2.609765625]]],[[[104.47421875000012,-0.334667968749955],[104.59013671875002,-0.466601562500017],[104.36318359375,-0.658593749999966],[104.25712890625002,-0.463281249999966],[104.47421875000012,-0.334667968749955]]],[[[127.56699218750006,-0.318945312499949],[127.68242187500002,-0.46835937500002],[127.60498046874997,-0.610156249999946],[127.88017578125002,-0.808691406249991],[127.7611328125,-0.883691406249994],[127.62382812500002,-0.76601562499999],[127.46269531250002,-0.80595703124996],[127.46865234375,-0.64296875],[127.3,-0.500292968749946],[127.32509765625,-0.335839843750023],[127.45517578125012,-0.406347656249991],[127.56699218750006,-0.318945312499949]]],[[[127.24990234375005,-0.4953125],[127.11914062500003,-0.520507812499986],[127.12646484375003,-0.278613281250003],[127.29003906250003,-0.284375],[127.24990234375005,-0.4953125]]],[[[103.73652343750004,-0.347949218750003],[103.461328125,-0.357617187500011],[103.54892578125006,-0.227539062499986],[103.73652343750004,-0.347949218750003]]],[[[130.81328125000007,-0.004101562500026],[131.27685546875003,-0.149804687499952],[131.33974609375005,-0.290332031249989],[131.00537109374997,-0.360742187500037],[130.62216796875006,-0.0859375],[130.89921875000002,-0.344433593749997],[130.7501953125001,-0.44384765625],[130.6886718750001,-0.296582031250011],[130.55078124999997,-0.366406250000026],[130.23662109375002,-0.209667968749983],[130.3625,-0.072851562500006],[130.81328125000007,-0.004101562500026]]],[[[98.45927734375007,-0.530468749999969],[98.30966796875012,-0.531835937499977],[98.4271484375,-0.226464843750037],[98.3229492187501,-0.000781249999974],[98.54414062500004,-0.257617187499989],[98.45927734375007,-0.530468749999969]]],[[[104.77861328125007,-0.175976562499955],[105.00537109374997,-0.282812499999963],[104.44707031250002,-0.189160156249983],[104.54267578125004,0.01772460937498],[104.77861328125007,-0.175976562499955]]],[[[103.28447265625002,0.541943359375011],[103.13955078125,0.549072265625043],[103.18740234375,0.699755859375017],[103.28447265625002,0.541943359375011]]],[[[103.0275390625001,0.746630859374974],[102.4904296875001,0.856640625],[102.50664062500002,1.088769531250037],[103.00244140624997,0.859277343750009],[103.0275390625001,0.746630859374974]]],[[[103.42392578125012,1.048339843749972],[103.31542968750003,1.071289062500028],[103.37998046875006,1.133642578125034],[103.42392578125012,1.048339843749972]]],[[[103.16640625000005,0.870166015625003],[102.7018554687501,1.0537109375],[102.72558593749997,1.158837890625023],[102.99941406250005,1.067773437500023],[103.16640625000005,0.870166015625003]]],[[[104.02480468750005,1.180566406250009],[104.13984375000004,1.165576171874974],[104.06611328125004,0.989550781249989],[103.93222656250012,1.071386718749963],[104.02480468750005,1.180566406250009]]],[[[104.58535156250005,1.21611328124996],[104.66289062500002,1.04951171875004],[104.57519531250003,0.831933593750037],[104.43925781250002,1.050439453125051],[104.25195312499997,1.014892578125],[104.36181640624997,1.18149414062502],[104.58535156250005,1.21611328124996]]],[[[102.4271484375,0.990136718750023],[102.27958984375002,1.075683593750043],[102.25634765625003,1.397070312499963],[102.44287109374997,1.234228515625006],[102.4271484375,0.990136718750023]]],[[[97.48154296875006,1.465087890624972],[97.93193359375002,0.973925781250003],[97.82041015625012,0.564453124999986],[97.683984375,0.596093750000037],[97.60390625000005,0.83388671874998],[97.40537109375012,0.946972656250026],[97.07919921875006,1.425488281249983],[97.35595703124997,1.539746093749997],[97.48154296875006,1.465087890624972]]],[[[102.49189453125004,1.459179687500011],[102.49941406250005,1.330908203124991],[102.02402343750012,1.607958984375031],[102.49189453125004,1.459179687500011]]],[[[124.88886718750004,0.995312500000011],[124.42753906250002,0.470605468750051],[123.75380859375,0.305517578124991],[123.26542968750007,0.326611328125026],[122.996875,0.493505859375006],[121.01298828125002,0.441699218750017],[120.57900390625,0.5283203125],[120.19228515625,0.268505859374997],[120.01328125000012,-0.196191406249994],[120.062890625,-0.555566406250023],[120.240625,-0.868261718749949],[120.51757812499997,-1.039453125],[120.66738281250005,-1.370117187499972],[121.14853515625012,-1.33945312500002],[121.5755859375,-0.828515625000023],[121.96962890625005,-0.933300781249969],[122.27998046875004,-0.757031250000026],[122.88876953125006,-0.755175781250003],[122.8294921875,-0.658886718750026],[123.17148437500012,-0.57070312499999],[123.37968750000002,-0.648535156249949],[123.43417968750006,-0.778222656249994],[123.37792968749997,-1.004101562500011],[122.90283203125003,-0.900976562499963],[122.25068359375004,-1.555273437500034],[121.8585937500001,-1.69326171874998],[121.65097656250006,-1.895410156249952],[121.35546874999997,-1.878222656250003],[122.29169921875004,-2.907617187500023],[122.39902343750006,-3.200878906249997],[122.25292968749997,-3.620410156250017],[122.68964843750004,-4.084472656249972],[122.84794921875002,-4.064550781250006],[122.8722656250001,-4.391992187500009],[122.71972656250003,-4.340722656249952],[122.11425781250003,-4.540234375000011],[122.03808593749997,-4.832421875000023],[121.58867187500007,-4.759570312500017],[121.48652343750004,-4.581054687499972],[121.61806640625,-4.092675781249952],[120.89179687500004,-3.520605468750034],[121.05429687500012,-3.167089843749949],[121.0521484375,-2.751660156249955],[120.87939453124997,-2.64560546875002],[120.65361328125002,-2.667578124999977],[120.26103515625007,-2.949316406249991],[120.43662109375012,-3.70732421874996],[120.42011718750004,-4.617382812500011],[120.27929687499997,-5.146093749999977],[120.4303710937501,-5.591015625000026],[119.9515625,-5.577636718749972],[119.71728515625003,-5.693359375000014],[119.55742187500007,-5.611035156250026],[119.36035156249997,-5.314160156250026],[119.59404296875007,-4.523144531249997],[119.62363281250006,-4.034375],[119.46748046875004,-3.512988281249989],[118.99462890624997,-3.537597656250028],[118.86767578124997,-3.39804687500002],[118.78330078125006,-2.720800781249977],[119.09218750000005,-2.482910156250014],[119.32187500000012,-1.929687500000014],[119.308984375,-1.408203125],[119.508203125,-0.906738281249972],[119.71132812500005,-0.680761718750034],[119.84433593750006,-0.861914062499991],[119.721875,-0.088476562499991],[119.865625,0.040087890625003],[119.80927734375004,0.238671875000051],[119.9132812500001,0.445068359375],[120.26953125000003,0.970800781249991],[120.60253906249997,0.854394531249994],[120.86796875000007,1.25283203124998],[121.0817382812501,1.327636718750028],[121.40410156250002,1.243603515624969],[121.59179687499997,1.067968749999977],[122.43662109375006,1.018066406250028],[122.83828125,0.845703125],[123.06650390625006,0.941796875000037],[123.93076171875006,0.850439453124977],[124.53369140624997,1.230468750000043],[124.94707031250002,1.672167968749974],[125.11093750000012,1.685693359374966],[125.2337890625,1.502294921875006],[124.88886718750004,0.995312500000011]]],[[[101.70810546875006,2.078417968750045],[101.71943359375004,1.789160156250006],[101.50078125000002,1.733203124999974],[101.40966796875003,2.021679687500026],[101.70810546875006,2.078417968750045]]],[[[127.73271484375007,0.848144531250043],[127.8810546875001,0.832128906249977],[127.96728515624997,1.042578125000048],[128.16074218750006,1.1578125],[128.22246093750002,1.400634765624986],[128.68837890625,1.572558593750017],[128.70263671874997,1.106396484374997],[128.29882812500003,0.87680664062502],[128.26064453125,0.733789062500023],[128.61123046875,0.549951171875051],[128.89960937500004,0.216259765625011],[127.9831054687501,0.471875],[127.88740234375004,0.298339843750043],[127.97783203125002,-0.24833984374996],[128.4254882812501,-0.892675781249949],[128.04638671875003,-0.706054687499943],[127.69160156250004,-0.241894531249983],[127.70869140625004,0.288085937499986],[127.53710937500003,0.610888671875031],[127.60800781250006,0.848242187499977],[127.42851562500002,1.139990234374991],[127.63173828125,1.843701171875011],[128.03642578125002,2.199023437500017],[127.88681640625012,1.83295898437504],[128.0109375000001,1.701220703125031],[128.01171874999997,1.331738281249983],[127.65283203124997,1.013867187499969],[127.73271484375007,0.848144531250043]]],[[[97.3341796875001,2.075634765625011],[97.10830078125,2.216894531250006],[97.29140625,2.200830078125023],[97.3341796875001,2.075634765625011]]],[[[128.45390625000002,2.051757812500028],[128.29589843749997,2.034716796875017],[128.2179687500001,2.297460937499991],[128.60214843750012,2.59760742187504],[128.68847656250003,2.473681640625017],[128.62324218750004,2.224414062500031],[128.45390625000002,2.051757812500028]]],[[[96.46367187500002,2.360009765625037],[95.80859374999997,2.655615234375034],[95.7171875,2.825976562500017],[95.89580078125007,2.8890625],[96.41728515625007,2.515185546875031],[96.46367187500002,2.360009765625037]]],[[[108.8875,2.905419921875037],[108.7865234375,2.885644531250009],[108.88574218750003,2.998974609374997],[108.8875,2.905419921875037]]],[[[105.76035156250006,2.863037109375014],[105.69218750000002,3.0625],[105.83671875000007,2.97651367187504],[105.76035156250006,2.863037109375014]]],[[[106.28525390625006,3.15712890624998],[106.28369140624997,3.088232421874977],[106.20097656250002,3.204882812500031],[106.28525390625006,3.15712890624998]]],[[[117.65839843750004,3.280517578124986],[117.54785156250003,3.43198242187502],[117.68085937500004,3.407519531250017],[117.65839843750004,3.280517578124986]]],[[[125.65810546875,3.436035156250043],[125.51152343750007,3.461132812500011],[125.46884765625006,3.73325195312502],[125.65810546875,3.436035156250043]]],[[[117.88476562499997,4.186132812500006],[117.92285156250003,4.054296874999977],[117.73681640624997,4.004003906250034],[117.64902343750012,4.168994140624974],[117.88476562499997,4.186132812500006]]],[[[108.31601562500006,3.689648437500026],[108.10039062500002,3.70454101562504],[108.24326171875006,3.810351562500017],[108.00234375,3.982861328124983],[108.24833984375002,4.21713867187502],[108.39287109375007,3.986181640625034],[108.31601562500006,3.689648437500026]]],[[[117.5744140625001,4.17060546875004],[117.46533203124997,4.076074218749966],[117.77724609375005,3.689257812500031],[117.05595703125007,3.622656249999963],[117.34628906250006,3.426611328124991],[117.35244140625,3.19375],[117.61064453125002,3.064355468749994],[117.56914062500002,2.92929687500002],[117.69765625,2.887304687499991],[117.6388671875001,2.825292968749963],[118.0666015625001,2.317822265624969],[117.7892578125001,2.026855468750014],[118.98496093750006,0.982128906249983],[118.53476562500006,0.813525390625017],[118.19609375000002,0.874365234374977],[117.91162109374997,1.098681640625017],[117.96425781250005,0.889550781250051],[117.74511718749997,0.72963867187498],[117.52216796875004,0.235888671875017],[117.46289062500003,-0.323730468749957],[117.5625,-0.770898437500009],[116.91396484375,-1.223632812499972],[116.73984375000006,-1.044238281250017],[116.75341796874997,-1.327343749999955],[116.27548828125006,-1.784863281249997],[116.42431640625003,-1.784863281249997],[116.45195312500002,-1.923144531250017],[116.31396484374997,-2.139843750000011],[116.56542968749997,-2.299707031249994],[116.52929687499997,-2.51054687499996],[116.31679687500005,-2.55185546875002],[116.33066406250012,-2.902148437499974],[116.16630859375002,-2.934570312500014],[116.2572265625,-3.126367187500009],[115.95615234375012,-3.595019531250003],[114.6935546875001,-4.169726562500017],[114.5255859375001,-3.376660156250011],[114.44599609375004,-3.481835937500037],[114.34433593750012,-3.444433593749963],[114.34433593750012,-3.23515625],[114.23632812500003,-3.36113281249996],[114.0822265625001,-3.27890625],[113.70507812499997,-3.45527343750004],[113.6100585937501,-3.195703125],[113.34316406250005,-3.246484374999966],[113.03398437500002,-2.933496093749966],[112.97148437500002,-3.187109375000034],[112.75800781250004,-3.322167968750009],[112.60029296875004,-3.400488281249977],[112.28496093750002,-3.32099609375004],[111.85810546875004,-3.551855468750006],[111.82304687500007,-3.057226562499949],[111.69472656250005,-2.88945312499996],[110.93007812500005,-3.071093750000017],[110.82968750000012,-2.9951171875],[110.89931640625,-2.908593749999952],[110.703125,-3.020898437500009],[110.57402343750007,-2.89140625],[110.25605468750004,-2.966113281249946],[110.09658203125,-2.001367187499966],[109.95986328125,-1.862792968749972],[109.98330078125,-1.274804687499994],[109.78740234375007,-1.011328124999963],[109.25878906250003,-0.807421874999989],[109.37275390625004,-0.638183593749972],[109.12109375000003,-0.39091796874996],[109.2575195312501,0.031152343750051],[108.94453125000004,0.355664062499997],[108.91679687500007,0.912646484375045],[108.95859375000006,1.134619140624963],[109.1315429687501,1.253857421875011],[109.01025390624997,1.239648437500051],[109.07587890625004,1.495898437500031],[109.37851562500006,1.922705078125034],[109.62890625000003,2.027539062499983],[109.53896484375,1.89619140625004],[109.65400390625004,1.614892578125023],[110.50576171875005,0.861962890625023],[111.10136718750002,1.050537109374986],[111.80898437500005,1.011669921874969],[112.078515625,1.143359374999974],[112.1857421875001,1.4390625],[112.47617187500006,1.559082031250028],[112.94296875000006,1.566992187500034],[113.00654296875004,1.433886718750003],[113.6222656250001,1.2359375],[113.90234375000003,1.434277343749997],[114.5125,1.452001953124963],[114.83056640625003,1.980029296874989],[114.78642578125002,2.250488281250014],[115.1791015625,2.523193359374972],[115.08076171875004,2.63422851562504],[115.117578125,2.89487304687502],[115.24697265625005,3.025927734374989],[115.45439453125002,3.034326171875009],[115.67880859375006,4.193017578124994],[115.86074218750005,4.348046875000037],[116.51474609375006,4.370800781249969],[117.10058593750003,4.337060546875023],[117.5744140625001,4.17060546875004]]],[[[126.81660156250004,4.033496093750003],[126.70449218750005,4.070996093749997],[126.81357421875006,4.258496093750011],[126.72207031250005,4.344189453124969],[126.75732421874997,4.547900390624989],[126.9210937500001,4.291015624999972],[126.81660156250004,4.033496093750003]]],[[[96.49257812500005,5.229345703124991],[97.54716796875002,5.205859375],[98.2484375,4.41455078125],[98.3073242187501,4.09287109375002],[99.73232421875005,3.183056640625026],[100.523828125,2.18916015625004],[100.88789062500004,1.948242187499986],[100.82822265625012,2.242578125],[101.04619140625002,2.257470703125023],[101.47666015625006,1.693066406250054],[102.019921875,1.442138671875],[102.38994140625007,0.84199218750004],[103.03183593750006,0.57890625],[103.0075195312501,0.415332031249974],[102.55,0.216455078124966],[103.33896484375012,0.513720703125045],[103.67265625000007,0.288916015624977],[103.78671875000012,0.046972656249991],[103.42851562500007,-0.19179687499998],[103.40517578125005,-0.36220703124998],[103.5091796875,-0.465527343749969],[103.43857421875006,-0.575585937500009],[103.72109375,-0.886718749999986],[104.36054687500004,-1.038378906249974],[104.51591796875002,-1.81943359375002],[104.84521484375003,-2.092968749999969],[104.65078125000005,-2.595214843749972],[104.97080078125012,-2.370898437500017],[105.39697265624997,-2.380175781249946],[106.0443359375,-3.10625],[105.84375,-3.61367187499998],[105.93046875000007,-3.833007812499986],[105.83144531250005,-4.16289062499996],[105.88720703124997,-5.009570312499974],[105.74833984375007,-5.818261718749966],[105.34941406250007,-5.549511718750011],[105.08134765625002,-5.74550781249998],[104.63955078125005,-5.520410156250037],[104.68398437500005,-5.89267578125002],[104.60156249999997,-5.90458984374996],[103.8314453125,-5.079589843750028],[102.53769531250006,-4.152148437499989],[102.12753906250006,-3.599218749999963],[101.57861328124997,-3.166992187500014],[100.88955078125,-2.248535156249957],[100.85527343750002,-1.934179687499949],[100.30820312500006,-0.82666015625],[99.66982421875005,0.045068359375037],[99.15917968749997,0.351757812499997],[98.59531250000006,1.864599609375006],[97.70078125000006,2.358544921875009],[97.59082031249997,2.846582031250037],[97.3913085937501,2.975292968749969],[96.9689453125001,3.575146484374969],[96.44472656250005,3.81630859374998],[95.57861328125003,4.661962890625048],[95.20664062500006,5.284033203125034],[95.22783203125002,5.564794921875034],[95.62890625000003,5.609082031249997],[96.13330078125003,5.294287109374991],[96.49257812500005,5.229345703124991]]]]},"properties":{"name":"Indonesia","childNum":107}},{"geometry":{"type":"Polygon","coordinates":[[[-4.412060546874983,54.185351562499996],[-4.785351562499983,54.073046875],[-4.424707031249994,54.407177734375],[-4.412060546874983,54.185351562499996]]]},"properties":{"name":"Isle of Man","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[75.32221348233018,32.28516356678968],[75.62496871116024,32.28516356678968],[75.73585997688717,32.78417426256088],[76.32728006076415,32.87658365066666],[76.62299010270264,33.32014871357439],[77.06655516561037,33.301666835953235],[77.71342088235082,32.6917648744551],[78.10154031239509,32.87658365066666],[78.49194250885338,32.53122786149202],[78.38964843749997,32.51987304687498],[78.41748046874997,32.466699218749994],[78.4552734375001,32.30034179687502],[78.49589843750002,32.21577148437504],[78.72558593750009,31.983789062500023],[78.71972656250009,31.887646484374983],[78.69345703125006,31.740380859374994],[78.7550781250001,31.55029296875],[78.74355468750005,31.323779296875017],[79.10712890625004,31.402636718750102],[79.38847656250013,31.064208984375085],[79.66425781250004,30.96523437499999],[79.92451171875004,30.888769531250034],[80.20712890625006,30.683740234375023],[80.19121093750002,30.56840820312496],[80.87353515625003,30.290576171875045],[80.98544921875006,30.23710937499999],[81.01025390625014,30.164501953125097],[80.96611328125002,30.180029296875063],[80.90761718750005,30.171923828125017],[80.84814453125009,30.139746093750034],[80.81992187500012,30.119335937499955],[80.68408203125014,29.994335937500068],[80.54902343750015,29.899804687499994],[80.40185546875003,29.730273437500102],[80.31689453125014,29.572070312500017],[80.25488281250009,29.423339843750114],[80.25595703125006,29.318017578125136],[80.23300781250006,29.194628906250045],[80.16953125000012,29.124316406250102],[80.13046875000006,29.100390625000045],[80.08457031249995,28.994189453125074],[80.05166015625,28.870312500000068],[80.07070312500005,28.830175781250063],[80.22656250000003,28.723339843750125],[80.32480468750012,28.66640625000008],[80.41855468749995,28.61201171875001],[80.47910156250012,28.604882812499994],[80.49580078125015,28.635791015625074],[80.51787109375002,28.665185546875023],[80.58701171875006,28.64960937500004],[81.16894531250014,28.335009765625074],[81.85263671875018,27.867089843750136],[81.89687500000011,27.87446289062504],[81.94521484375005,27.89926757812495],[81.98769531250016,27.91376953125004],[82.03701171875,27.90058593750004],[82.11191406250006,27.86494140625004],[82.28769531250018,27.756542968749983],[82.45136718750004,27.671826171874955],[82.62988281249997,27.687060546875045],[82.67734375000006,27.67343749999995],[82.71083984375005,27.596679687500114],[82.73339843750003,27.518994140625097],[83.28974609375004,27.370996093750136],[83.36943359375002,27.410253906249977],[83.38398437500004,27.444824218750085],[83.44716796875011,27.46533203125],[83.55166015625011,27.456347656249932],[83.74697265625011,27.395947265625068],[83.8288085937501,27.377832031250108],[84.09101562499993,27.491357421875136],[84.22978515625007,27.427832031250006],[84.48085937500005,27.348193359375102],[84.61015625000002,27.298681640624977],[84.64072265625012,27.249853515624977],[84.65478515625014,27.20366210937499],[84.65380859375009,27.09169921875008],[84.68535156250013,27.041015625000057],[85.19179687500011,26.766552734375097],[85.29296875000009,26.741015625000045],[85.56845703125012,26.839843750000114],[85.64843749999997,26.829003906250023],[85.69990234375004,26.781640624999966],[85.73730468750003,26.639746093750034],[85.79453125000006,26.60415039062505],[86.00732421875009,26.64936523437504],[86.70136718750015,26.435058593750057],[87.01640625000002,26.555419921875085],[87.2874023437499,26.360302734375125],[87.41357421875014,26.42294921875009],[87.84921875000006,26.43691406250008],[87.99511718750014,26.38237304687499],[88.02695312500023,26.395019531250085],[88.05488281250004,26.43002929687492],[88.11152343750004,26.58642578125],[88.1615234375,26.724804687500125],[88.15722656250009,26.807324218750068],[88.1110351562501,26.928466796875057],[87.99316406250009,27.086083984374994],[87.984375,27.133935546874994],[88.14697265625014,27.749218750000097],[88.15029296875011,27.843310546875074],[88.10976562500005,27.87060546874997],[88.10898437499995,27.93300781250005],[88.14111328125003,27.948925781250097],[88.27519531250013,27.96884765625009],[88.42597656250015,28.011669921875097],[88.57792968750002,28.093359375000034],[88.80371093750003,28.006933593750034],[88.74902343749997,27.521875000000136],[88.7648437500001,27.429882812500068],[88.83251953125003,27.362841796875074],[88.89140625000002,27.316064453125136],[88.88164062500007,27.29746093750009],[88.76035156250006,27.21811523437509],[88.73876953125009,27.175585937499932],[88.85761718750015,26.961474609375017],[89.14824218750002,26.816162109375085],[89.33212890625018,26.848632812500114],[89.58613281250004,26.778955078125136],[89.60996093750012,26.719433593750097],[89.71093750000009,26.713916015625045],[89.76386718750004,26.7015625],[89.94316406250013,26.723925781249932],[90.12294921875011,26.754589843749983],[90.20605468749997,26.847509765625063],[90.34589843750004,26.890332031250097],[90.73964843750005,26.771679687500068],[91.2865234375,26.78994140625008],[91.42675781249997,26.867089843749966],[91.45585937500013,26.866894531250125],[91.51757812500009,26.807324218750068],[91.67158203124993,26.80200195312503],[91.84208984375013,26.852978515625125],[91.94375,26.860839843750114],[91.99833984375013,26.85498046875],[92.04970703125016,26.87485351562495],[92.73155507489682,26.833697862861648],[93.30975376159499,26.784950522650554],[93.61047043679247,27.32239435188504],[94.06979001484449,27.589407158584788],[95.10800937321915,27.749636881153737],[95.74000740838363,28.116850432722256],[96.19577594042592,28.04291597700983],[96.96279296875,27.698291015625017],[96.88359375000013,27.514843750000125],[96.90195312500012,27.43959960937508],[97.10371093749993,27.163330078125114],[97.10205078125003,27.115429687500125],[96.95341796875013,27.13330078125003],[96.79785156249997,27.29619140624999],[96.19082031250005,27.26127929687499],[95.20146484375007,26.641406250000017],[95.05976562500015,26.473974609375006],[95.06894531250006,26.191113281250097],[95.10839843750014,26.091406250000034],[95.12929687500011,26.070410156250034],[95.13242187500006,26.041259765624943],[94.99199218750002,25.77045898437504],[94.66777343750007,25.458886718749966],[94.55302734375013,25.215722656249994],[94.70371093750012,25.097851562499955],[94.49316406250003,24.637646484374983],[94.37724609375002,24.473730468750006],[94.29306640625012,24.321875],[94.07480468750006,23.8720703125],[93.68339843750007,24.00654296875004],[93.45214843750003,23.987402343750034],[93.32626953125006,24.064208984375057],[93.36601562500007,23.132519531249955],[93.34941406250007,23.08496093750003],[93.20390625000002,23.03701171875005],[93.07871093750018,22.718212890625097],[93.16201171875,22.360205078125006],[93.07060546875002,22.20942382812501],[92.96455078125015,22.003759765625034],[92.90947265625013,21.988916015625023],[92.85429687500002,22.010156250000108],[92.77138671875,22.104785156250017],[92.68896484375009,22.130957031250006],[92.63037109375014,22.011328124999977],[92.57490234374993,21.97807617187496],[92.5612304687501,22.04804687500001],[92.49140625000004,22.685400390625006],[92.46445312500006,22.734423828125045],[92.36162109375002,22.929003906250074],[92.33378906250002,23.242382812499955],[92.24609375000003,23.68359374999997],[92.04404296875006,23.677783203125017],[91.97851562500003,23.691992187500063],[91.92958984375011,23.685986328125097],[91.92949218750019,23.598242187499977],[91.93789062500011,23.504687500000102],[91.75419921875013,23.28730468750004],[91.75097656250003,23.053515625000017],[91.55351562500013,22.991552734375006],[91.43623046875004,23.19990234375001],[91.359375,23.06835937500003],[91.16044921875019,23.660644531250085],[91.35019531250012,24.06049804687501],[91.72656250000003,24.20507812499997],[91.84619140624997,24.175292968749943],[92.06416015625004,24.374365234375006],[92.11748046875002,24.493945312500017],[92.22666015625012,24.77099609374997],[92.22832031250002,24.881347656250085],[92.2512695312499,24.895068359375045],[92.38496093750004,24.848779296875023],[92.46835937500018,24.944140625000074],[92.04970703125016,25.16948242187499],[90.61308593750002,25.16772460937497],[90.11962890625003,25.21997070312497],[89.86630859375012,25.293164062499955],[89.81406250000006,25.305371093749955],[89.80087890625012,25.33613281250001],[89.82490234375004,25.56015625],[89.82294921875015,25.94140625000003],[89.67089843750009,26.213818359375125],[89.57275390625003,26.13232421875003],[89.54990234375006,26.00527343750008],[89.28925781250015,26.037597656250085],[89.01865234375012,26.410253906249977],[88.95195312500002,26.412109375],[88.97041015625004,26.250878906250023],[88.94072265625002,26.24536132812497],[88.68281250000004,26.291699218749983],[88.51826171875004,26.51777343750004],[88.36992187500002,26.56411132812508],[88.35146484375005,26.482568359374966],[88.38623046875003,26.471533203125034],[88.44042968749997,26.369482421875034],[88.33398437499997,26.257519531249955],[88.15078125000005,26.087158203125057],[88.1066406250001,25.841113281250045],[88.14746093749997,25.811425781250023],[88.50244140625009,25.53701171875008],[88.76914062500006,25.490478515625],[88.85478515625002,25.333544921875017],[88.94414062500002,25.290771484375],[88.92978515625012,25.222998046875063],[88.57382812500006,25.18789062499999],[88.45625,25.188427734375125],[88.37294921875016,24.961523437500063],[88.31337890625011,24.8818359375],[88.27949218750015,24.881933593750034],[88.18886718750016,24.920605468750097],[88.14980468750011,24.91464843749995],[88.04511718750015,24.71303710937508],[88.03027343750009,24.664453125000136],[88.02343750000003,24.627832031250136],[88.07910156250009,24.549902343750063],[88.14550781250003,24.485791015624955],[88.225,24.460644531249983],[88.3375,24.45385742187503],[88.49853515625003,24.34663085937504],[88.64228515625015,24.325976562500102],[88.72353515625011,24.27490234375],[88.7335937500001,24.230908203125097],[88.72656250000009,24.18623046875004],[88.71376953125016,24.069628906250102],[88.69980468750006,24.00253906249992],[88.56738281250009,23.674414062500034],[88.63574218749997,23.55],[88.69765625,23.493017578125034],[88.72441406250002,23.254980468750034],[88.89707031250018,23.21040039062501],[88.92812500000011,23.186621093749977],[88.89970703125002,22.843505859375057],[88.92070312500002,22.632031249999955],[89.05,22.274609374999983],[89.02792968750023,21.937207031249983],[88.94931640625018,21.937939453125125],[89.05166015625,21.654101562500045],[88.85751953125012,21.744677734375017],[88.74501953125011,21.584375],[88.74023437500003,22.005419921875017],[88.64160156250003,22.121972656250136],[88.58466796875015,21.659716796874932],[88.44599609375004,21.614257812500085],[88.28750000000016,21.758203125000108],[88.25371093750002,21.622314453124943],[88.0568359375001,21.694140625000017],[88.19628906249997,22.139550781249994],[87.94140625000003,22.374316406250045],[88.15927734375018,22.12172851562508],[87.82373046875003,21.727343750000045],[87.20068359375009,21.544873046874983],[86.95410156250014,21.365332031250006],[86.84228515625009,21.106347656249994],[86.97548828125005,20.70014648437501],[86.75039062500011,20.313232421875057],[86.37656250000006,20.006738281249966],[86.24521484375012,20.05302734374999],[86.27949218750021,19.919433593749943],[85.575,19.69291992187499],[85.496875,19.696923828125108],[85.50410156250004,19.887695312500057],[85.24863281250006,19.757666015625034],[85.18076171875018,19.59487304687508],[85.44160156249993,19.626562499999977],[84.77099609375009,19.125390625000023],[84.10410156250018,18.29267578125001],[82.35957031250004,17.09619140624997],[82.25878906250014,16.55986328124996],[81.76191406250015,16.32949218750008],[81.28613281249997,16.337060546875023],[80.97871093750004,15.758349609375074],[80.64658203125006,15.895019531250028],[80.29345703125014,15.710742187499989],[80.0534179687501,15.074023437499932],[80.17871093750003,14.478320312500074],[80.11171875000005,14.212207031250045],[80.30654296875016,13.485058593750054],[80.15625,13.713769531250108],[80.06210937500006,13.60625],[80.34238281250006,13.361328125000071],[80.22910156250018,12.690332031249966],[79.85849609375018,11.988769531250043],[79.69316406250007,11.312548828124946],[79.79902343750004,11.338671874999932],[79.84863281250009,11.196875],[79.83818359375002,10.322558593750045],[79.31455078125018,10.256689453124949],[78.93994140625009,9.565771484375063],[79.01992187500005,9.333349609374963],[79.41142578125002,9.192382812500014],[78.97958984375018,9.268554687500085],[78.42148437500006,9.105029296874989],[78.19248046874995,8.890869140625057],[78.06015625000006,8.384570312499932],[77.51757812500003,8.078320312500068],[77.06591796875003,8.315917968749986],[76.5534179687501,8.902783203124997],[76.32460937500016,9.452099609374997],[76.24238281250004,9.927099609374949],[76.37558593750006,9.539892578124935],[76.45878906250013,9.536230468750077],[76.34648437500002,9.922119140625],[76.19560546875002,10.086132812500026],[75.72382812500015,11.361767578125026],[74.94550781250004,12.56455078124992],[74.38222656250005,14.494726562500048],[73.94921875000014,15.074755859375088],[73.80078125000009,15.39697265625],[73.93193359375013,15.39697265625],[73.77177734375013,15.573046874999989],[73.83281250000013,15.659375],[73.67988281250015,15.708886718750136],[73.47607421875003,16.05424804687496],[72.87548828124997,18.642822265625114],[72.97207031250011,19.15332031250003],[72.8346679687501,18.975585937500057],[72.80302734375013,19.07929687500004],[72.81162109375,19.298925781250006],[72.98720703125,19.27744140625009],[72.78789062500013,19.362988281250097],[72.66777343750019,19.83095703125005],[72.89375,20.672753906250136],[72.81386718750011,21.117187500000085],[72.62382812500002,21.371972656250108],[72.73476562500016,21.470800781250006],[72.61328125000009,21.461816406250108],[73.1125,21.750439453125125],[72.54306640625,21.69658203124999],[72.70019531250003,21.971923828124943],[72.52226562500013,21.976220703125108],[72.55302734375007,22.159960937500074],[72.80917968749995,22.23330078125008],[72.18281250000015,22.26972656250004],[72.30644531250002,22.18920898437497],[72.27441406250009,22.089746093749966],[72.03720703125006,21.82304687499999],[72.2103515625,21.72822265625004],[72.25400390625006,21.531005859375],[72.01523437500012,21.155712890625097],[71.0246093750001,20.73886718750009],[70.71933593750006,20.740429687500068],[70.12734375,21.094677734375097],[68.96992187500021,22.29028320312497],[69.05166015625016,22.437304687500074],[69.27656250000004,22.285498046875063],[70.17724609375014,22.57275390624997],[70.48925781250009,23.08950195312508],[70.33945312500012,22.939746093749932],[69.66464843750006,22.759082031250074],[69.23593749999995,22.848535156250023],[68.64072265625006,23.189941406250114],[68.41748046875009,23.57148437500004],[68.7767578125,23.852099609375017],[68.23496093749995,23.596972656250074],[68.16503906250009,23.857324218749994],[68.28251953125013,23.927978515625],[68.38125000000016,23.950878906250068],[68.48867187500011,23.96723632812501],[68.5866210937501,23.966601562500074],[68.72412109375003,23.964697265625034],[68.72812500000012,24.265625],[68.73964843750016,24.291992187500085],[68.75898437499993,24.307226562500006],[68.78115234375011,24.313720703125085],[68.8,24.30908203125003],[68.82832031250004,24.26401367187509],[68.86347656250015,24.26650390625005],[68.90078125000011,24.29243164062501],[68.98457031250015,24.273095703124966],[69.05156250000013,24.28632812500001],[69.11953125000011,24.26865234374995],[69.23505859374993,24.268261718750068],[69.44345703124995,24.275390625000085],[69.55917968750006,24.273095703124966],[69.80517578125009,24.16523437500004],[70.0982421875,24.2875],[70.28906250000009,24.356298828125063],[70.54677734375,24.418310546875063],[70.56503906250006,24.385791015625017],[70.55585937500015,24.331103515625074],[70.57929687500015,24.279052734374943],[70.65947265625013,24.24609374999997],[70.71630859375009,24.237988281250097],[70.7672851562501,24.245410156250017],[70.80507812500011,24.26196289062503],[70.88623046875014,24.34375],[70.92812500000016,24.362353515625045],[70.98281250000011,24.361035156250125],[71.04404296875006,24.400097656250097],[71.04531250000005,24.42998046874996],[70.96982421875012,24.571875],[70.97636718750013,24.61875],[71.00234375000016,24.6539062499999],[71.04785156250003,24.687744140625085],[71.02070312500021,24.75766601562492],[70.95087890625015,24.89160156250003],[70.87773437500019,25.06298828124997],[70.65205078125004,25.422900390625102],[70.64843750000003,25.666943359375068],[70.5695312500001,25.705957031250023],[70.50585937500009,25.685302734375085],[70.44853515625013,25.681347656249983],[70.26464843750009,25.70654296874997],[70.10019531250006,25.91005859375005],[70.14921875000002,26.347558593749994],[70.11464843750016,26.548046874999983],[69.47001953125002,26.804443359375],[69.56796875,27.174609375000102],[69.89628906250007,27.473632812500085],[70.04980468750009,27.694726562500023],[70.14453125000003,27.849023437499994],[70.19394531250006,27.89487304687492],[70.24433593750004,27.934130859375102],[70.4037109375,28.025048828124994],[70.48857421875013,28.023144531250125],[70.62910156250015,27.937451171875068],[70.6916015625001,27.76899414062504],[70.79794921875012,27.709619140625023],[70.87490234375016,27.71445312499995],[71.18476562500004,27.831640625],[71.54296875000003,27.869873046875],[71.8703125000001,27.9625],[71.88886718750004,28.04746093749992],[71.94804687500002,28.177294921875102],[72.12851562500012,28.34633789062508],[72.29199218750003,28.69726562499997],[72.34189453125006,28.751904296875097],[72.90332031250003,29.02875976562501],[73.38164062500013,29.934375],[73.8091796875,30.093359375],[73.88652343750013,30.162011718750136],[73.93339843750002,30.222070312500108],[73.92460937500007,30.28164062499999],[73.88271484375,30.352148437499977],[73.89931640625,30.435351562500045],[74.00898437500004,30.519677734374994],[74.33935546875003,30.893554687499943],[74.38037109375003,30.89340820312509],[74.50976562500009,30.959667968750097],[74.63281250000014,31.034667968750114],[74.62578125000002,31.068750000000108],[74.61035156250009,31.112841796875045],[74.51767578125012,31.185595703124932],[74.53496093750007,31.261376953125108],[74.59394531249993,31.465380859375102],[74.58183593750013,31.523925781250114],[74.50996093750015,31.712939453125074],[74.52597656249995,31.765136718750057],[74.55556640625011,31.818554687500097],[74.63574218750003,31.889746093750034],[74.73945312500015,31.948828125],[75.07148437500015,32.08935546875003],[75.13876953125,32.10478515624999],[75.25410156250004,32.140332031250125],[75.33349609374997,32.279199218749994],[75.32221348233018,32.28516356678968]]]]},"properties":{"name":"India","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[72.49199218750002,-7.37744140625],[72.42910156250002,-7.435351562500003],[72.34970703125,-7.263378906250011],[72.447265625,-7.395703125000011],[72.44560546875002,-7.220410156250011],[72.49199218750002,-7.37744140625]]]},"properties":{"name":"Br. Indian Ocean Ter.","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-9.948193359374926,53.91313476562499],[-10.265722656249949,53.977685546874994],[-9.99638671874996,54.00361328125004],[-9.948193359374926,53.91313476562499]]],[[[-6.218017578125,54.08872070312506],[-6.347607421874926,53.94130859375005],[-6.027392578124989,52.927099609375006],[-6.463183593749932,52.345361328124994],[-6.325,52.246679687500034],[-6.890234375,52.15922851562499],[-6.965771484374926,52.24951171875],[-8.057812499999926,51.82558593750005],[-8.4091796875,51.888769531250034],[-8.349121093749943,51.73930664062496],[-8.813427734374926,51.584912109374955],[-9.737304687499943,51.473730468750034],[-9.524902343750028,51.68110351562501],[-10.120751953124994,51.60068359375006],[-9.598828124999983,51.87441406250005],[-10.341064453124943,51.798925781250034],[-9.909667968749972,52.122949218749966],[-10.39023437499992,52.134912109374994],[-10.356689453125,52.20693359375002],[-9.772119140624937,52.250097656250034],[-9.90605468749996,52.403710937499966],[-9.632226562499937,52.54692382812502],[-8.783447265624943,52.679638671874955],[-8.990283203124989,52.755419921875045],[-9.175390624999949,52.634912109374994],[-9.916601562499977,52.56972656250005],[-9.46489257812496,52.82319335937498],[-9.299218749999966,53.09755859375002],[-8.930126953124983,53.207080078125045],[-9.51420898437496,53.23823242187498],[-10.091259765624926,53.41284179687503],[-10.116992187499932,53.548535156249955],[-9.720654296874926,53.6044921875],[-9.901611328124943,53.72719726562502],[-9.578222656249949,53.80541992187497],[-9.578857421875,53.879833984374955],[-9.9140625,53.863720703124955],[-9.856445312499972,54.095361328124994],[-10.092675781249966,54.15576171875003],[-10.056396484374943,54.25781250000006],[-8.545556640624994,54.24121093750003],[-8.623144531249977,54.346875],[-8.133447265624966,54.64082031250001],[-8.763916015624972,54.68120117187496],[-8.377294921874977,54.88945312500002],[-8.274609374999955,55.146289062500045],[-7.667089843749977,55.25649414062502],[-7.65874023437496,54.97094726562503],[-7.308789062500011,55.365820312500006],[-6.961669921874972,55.23789062500006],[-7.218652343749937,55.09199218749998],[-7.55039062499992,54.767968749999966],[-7.910595703124955,54.698339843750006],[-7.75439453125,54.59492187499998],[-8.118261718749977,54.41425781250004],[-7.606542968750006,54.14384765625002],[-7.324511718750017,54.13344726562502],[-7.007714843749937,54.40668945312501],[-6.649804687499937,54.05864257812496],[-6.218017578125,54.08872070312506]]]]},"properties":{"name":"Ireland","childNum":2}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[56.18798828125003,26.92114257812497],[55.95429687500004,26.70112304687501],[55.31152343749997,26.592626953125006],[55.76259765625005,26.81196289062504],[55.75761718750002,26.94765625000005],[56.279394531250006,26.952099609374983],[56.18798828125003,26.92114257812497]]],[[[46.1144531250001,38.877783203125034],[46.490625,38.90668945312498],[47.995898437500074,39.683935546875034],[48.322167968749994,39.39907226562502],[48.10439453125005,39.241113281249994],[48.292089843750006,39.01884765624999],[47.99648437499999,38.85375976562503],[48.59267578125005,38.41108398437498],[48.86875,38.43549804687498],[48.95996093750003,37.89013671875],[49.171191406250074,37.60058593749997],[50.13046875,37.407128906249994],[50.53320312499997,37.01367187500006],[51.11855468750005,36.742578124999966],[52.19013671875004,36.62172851562505],[53.76767578125006,36.93032226562502],[53.91542968750005,36.93032226562502],[53.67949218750002,36.853125],[53.970117187499994,36.818310546874955],[53.91416015625006,37.34355468750002],[54.6994140625001,37.47016601562498],[54.90009765625004,37.77792968750006],[55.38085937500003,38.051123046875034],[56.272070312500006,38.080419921875034],[56.440625,38.249414062499994],[57.1935546875001,38.216406250000034],[57.35371093750004,37.97333984374998],[58.261621093749994,37.665820312500045],[58.81542968750003,37.683496093749994],[59.30175781249997,37.51064453125005],[59.454980468749994,37.25283203125002],[60.06279296875002,36.962890625],[60.34130859375003,36.63764648437501],[61.11962890625003,36.64257812500003],[61.212011718750006,36.190527343750034],[61.15292968750006,35.97675781250001],[61.25214843750004,35.86762695312498],[61.26201171875002,35.61958007812498],[61.28183593750006,35.55341796875001],[61.2785156250001,35.513769531250006],[61.245507812499994,35.47407226562501],[61.18925781250002,35.31201171875003],[61.1,35.272314453125034],[61.08007812499997,34.85561523437505],[60.95117187499997,34.65385742187499],[60.91474609375004,34.63398437500001],[60.80234375000006,34.55463867187501],[60.73945312500004,34.544726562500045],[60.7262695312501,34.51826171874998],[60.736132812500074,34.491796875],[60.76259765625005,34.475244140624994],[60.88945312500002,34.31943359375006],[60.642675781250006,34.30717773437496],[60.48574218750005,34.09477539062502],[60.4859375,33.7119140625],[60.57382812500006,33.58833007812498],[60.91699218749997,33.505224609375006],[60.56054687499997,33.13784179687502],[60.5765625,32.99487304687503],[60.71044921874997,32.6],[60.82929687500004,32.24941406250005],[60.82724609375006,32.16796874999997],[60.789941406249994,31.98710937499999],[60.7875,31.87719726562497],[60.791601562500006,31.660595703124983],[60.82070312499999,31.495166015625045],[60.854101562500006,31.483251953125006],[61.110742187499994,31.45112304687504],[61.346484375000074,31.42163085937497],[61.66015625000003,31.382421874999977],[61.7550781250001,31.285302734374994],[61.814257812500074,31.072558593750017],[61.810839843750074,30.913281249999983],[61.78417968749997,30.831933593750023],[61.55947265625005,30.59936523437497],[61.33164062500006,30.36372070312501],[60.84335937500006,29.85869140624999],[61.03417968750003,29.663427734374977],[61.15214843750002,29.542724609375],[61.8898437500001,28.546533203124994],[62.7625,28.202050781249994],[62.782324218750006,27.800537109375],[62.75273437500002,27.265625],[63.16679687500002,27.25249023437499],[63.19609375000002,27.243945312500017],[63.25625,27.20791015625005],[63.30156250000002,27.151464843750006],[63.30517578124997,27.124560546875017],[63.242089843749994,27.07768554687499],[63.25039062499999,26.879248046875063],[63.24160156250005,26.86474609375003],[63.18613281250006,26.83759765625001],[63.168066406250006,26.66557617187496],[62.31230468750002,26.490869140624994],[62.23935546875006,26.357031249999977],[62.12597656249997,26.368994140625034],[61.842382812500006,26.225927734375006],[61.809960937499994,26.165283203125],[61.78076171874997,25.99584960937503],[61.75439453125003,25.843359375000063],[61.737695312499994,25.821093750000045],[61.66865234375004,25.76899414062501],[61.6618164062501,25.751269531250017],[61.67138671874997,25.69238281250003],[61.64013671875003,25.584619140624994],[61.61542968750004,25.28613281250003],[61.58789062499997,25.20234375000001],[61.533105468749994,25.195507812499955],[61.41220703125006,25.102099609375017],[60.66386718750002,25.28222656250003],[60.51054687500002,25.437060546875045],[60.40019531250002,25.311572265625074],[59.45605468749997,25.481494140625045],[59.0460937500001,25.417285156250017],[58.79785156249997,25.554589843750023],[57.334570312500006,25.791552734375074],[57.03603515625005,26.80068359375005],[56.728125,27.127685546875057],[56.118066406249994,27.14311523437499],[54.75927734375003,26.50507812500004],[54.24707031250003,26.696630859374977],[53.70576171875004,26.72558593750003],[52.69160156250004,27.323388671875023],[52.475878906250074,27.61650390624999],[52.03076171874997,27.824414062499955],[51.58906250000004,27.864208984374983],[51.27890625,28.13134765624997],[51.06201171874997,28.72612304687499],[50.86699218750002,28.870166015625017],[50.87578125000002,29.062695312499983],[50.67519531250005,29.146582031250034],[50.64960937500004,29.420068359374966],[50.16894531250003,29.921240234375034],[50.071582031250074,30.198535156250017],[49.55488281250004,30.028955078125023],[49.028125,30.333447265624983],[49.224511718749994,30.472314453125023],[49.00195312500003,30.506542968749983],[48.91914062500004,30.120898437500017],[48.54648437500006,29.962353515624955],[48.47851562499997,30.003808593749966],[48.43457031249997,30.03759765625],[48.33105468749997,30.28544921874996],[48.01494140625002,30.465625],[48.01064453125005,30.989794921875017],[47.679492187500074,31.00239257812501],[47.679492187500074,31.400585937499955],[47.75390624999997,31.601367187500017],[47.829980468749994,31.79443359375],[47.71455078125004,31.936425781249966],[47.5915039062501,32.087988281250034],[47.51191406250004,32.15083007812504],[47.3297851562501,32.45551757812501],[47.28515625000003,32.474023437499966],[47.121386718750074,32.46660156249996],[46.569921875,32.83393554687501],[46.37705078125006,32.92924804687499],[46.29824218750005,32.95024414062502],[46.11279296875003,32.957666015624994],[46.09306640625002,32.97587890624999],[46.08046875,33.028222656249994],[46.0807617187501,33.08652343750006],[46.14111328125003,33.174414062500034],[46.145898437499994,33.229638671874994],[46.01992187500005,33.41572265624998],[45.39707031250006,33.970849609374994],[45.542773437500074,34.21552734375004],[45.459375,34.470361328124994],[45.50078125000002,34.58159179687499],[45.6375,34.573828125],[45.678125,34.798437500000034],[45.92089843750003,35.02851562500001],[46.04179687500002,35.08017578125006],[46.13378906249997,35.127636718749955],[46.15468750000005,35.19672851562498],[46.112109375000074,35.32167968750005],[45.97109375000005,35.524169921875],[46.03740234375002,35.67314453124999],[46.180957031250074,35.71137695312504],[46.2625,35.74414062500006],[46.27343749999997,35.77324218750002],[46.16748046874997,35.820556640625],[45.77636718749997,35.82182617187499],[45.36162109375002,36.015332031249955],[45.241113281249994,36.35595703125],[45.20654296874997,36.397167968749955],[45.15527343749997,36.407373046874994],[45.11240234375006,36.409277343750034],[45.053125,36.47163085937501],[44.76513671875003,37.142431640625006],[44.79414062500004,37.290380859375034],[44.574023437500074,37.435400390625006],[44.589941406250006,37.710351562499966],[44.21132812499999,37.908056640625006],[44.4499023437501,38.33422851562506],[44.2985351562501,38.38627929687499],[44.27167968750004,38.83603515625006],[44.02324218750002,39.37744140625006],[44.3893554687501,39.422119140625],[44.58710937500004,39.76855468750006],[44.81718750000002,39.65043945312496],[45.4796875000001,39.00625],[46.1144531250001,38.877783203125034]]]]},"properties":{"name":"Iran","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[45.6375,34.573828125],[45.50078125000002,34.581591796874996],[45.459375,34.470361328124994],[45.54277343750002,34.21552734375],[45.397070312500006,33.970849609374994],[46.01992187500002,33.41572265625],[46.14589843750002,33.229638671874994],[46.14111328125,33.1744140625],[46.08076171875001,33.0865234375],[46.08046875000002,33.028222656249994],[46.09306640625002,32.975878906249996],[46.11279296875,32.957666015624994],[46.377050781250006,32.929248046874996],[46.569921875,32.833935546875],[47.12138671875002,32.466601562499996],[47.28515625,32.474023437499994],[47.32978515625001,32.455517578125],[47.51191406250001,32.150830078125],[47.59150390625001,32.08798828125],[47.71455078125001,31.936425781249994],[47.82998046875002,31.79443359375],[47.75390625,31.601367187499996],[47.67949218750002,31.400585937499997],[47.67949218750002,31.002392578124997],[48.01064453125002,30.989794921874996],[48.01494140625002,30.465625],[48.3310546875,30.285449218749996],[48.546484375,29.962353515624997],[48.454199218750006,29.9384765625],[48.354589843750006,29.956738281249997],[48.141699218750006,30.040917968749994],[47.982519531250006,30.011328125],[47.97871093750001,29.9828125],[47.64375,30.097314453124994],[47.14824218750002,30.0009765625],[46.905859375,29.5375],[46.76933593750002,29.347460937499996],[46.69375,29.259667968749994],[46.53144531250001,29.096240234374996],[46.3564453125,29.063671875],[44.71650390625001,29.193603515625],[43.77373046875002,29.84921875],[42.07441406250001,31.080371093749996],[40.47890625000002,31.893359375],[40.36933593750001,31.93896484375],[40.02783203125,31.995019531249994],[39.7041015625,32.042529296874996],[39.14541015625002,32.12451171875],[39.29277343750002,32.24384765625],[39.24746093750002,32.350976562499994],[39.04140625000002,32.3056640625],[38.773535156250006,33.372216796874994],[40.98701171875001,34.429052734375],[41.19472656250002,34.768994140625],[41.354101562500006,35.640429687499996],[41.295996093750006,36.383349609374996],[41.41679687500002,36.5146484375],[41.78857421875,36.59716796875],[42.358984375,37.10859375],[42.45585937500002,37.128710937499996],[42.63544921875001,37.249267578125],[42.74111328125002,37.3619140625],[42.77460937500001,37.371875],[42.869140625,37.334912109375],[42.936621093750006,37.324755859374996],[43.09248046875001,37.3673828125],[43.67578125,37.22724609375],[43.83642578125,37.223535156249994],[44.01318359375,37.313525390624996],[44.11445312500001,37.30185546875],[44.15625,37.282958984375],[44.19179687500002,37.249853515625],[44.20839843750002,37.20263671875],[44.20166015625,37.051806640624996],[44.281835937500006,36.97802734375],[44.32558593750002,37.0107421875],[44.401953125,37.058496093749994],[44.60595703125,37.176025390625],[44.66933593750002,37.173583984375],[44.73095703125,37.165283203125],[44.76513671875,37.142431640625],[45.053125,36.471630859375],[45.112402343750006,36.40927734375],[45.1552734375,36.407373046874994],[45.20654296875,36.39716796875],[45.24111328125002,36.35595703125],[45.36162109375002,36.01533203125],[45.7763671875,35.821826171874996],[46.16748046875,35.820556640625],[46.2734375,35.773242187499996],[46.2625,35.744140625],[46.18095703125002,35.711376953125],[46.03740234375002,35.673144531249996],[45.97109375000002,35.524169921875],[46.11210937500002,35.321679687499994],[46.15468750000002,35.196728515625],[46.1337890625,35.12763671875],[46.04179687500002,35.08017578125],[45.9208984375,35.028515625],[45.678125,34.7984375],[45.6375,34.573828125]]]},"properties":{"name":"Iraq","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-15.543115234374994,66.228515625],[-14.595849609374994,66.38154296875],[-15.117382812499983,66.125634765625],[-14.698193359374983,66.02021484375],[-14.827099609374983,65.7642578125],[-14.391845703125,65.78740234375],[-14.473388671875,65.575341796875],[-14.166943359374983,65.64228515625],[-13.617871093749983,65.5193359375],[-13.804785156249977,65.35478515625],[-13.599316406249983,65.0359375],[-14.04443359375,64.74189453125],[-14.385107421874977,64.74521484375],[-14.475390624999989,64.493994140625],[-14.927392578124994,64.319677734375],[-15.832910156249994,64.17666015625],[-16.640332031249983,63.865478515625],[-17.81572265624999,63.71298828125],[-17.946923828124994,63.5357421875],[-18.65361328124999,63.406689453125],[-20.198144531249994,63.555810546874994],[-20.494042968749994,63.687353515625],[-20.413964843749994,63.80517578125],[-20.65092773437499,63.73740234375],[-21.15239257812499,63.94453125],[-22.652197265624977,63.827734375],[-22.701171875,64.083203125],[-22.51005859374999,63.991455078125],[-22.187597656249977,64.039208984375],[-21.463330078124983,64.379150390625],[-22.053369140624994,64.313916015625],[-21.950341796874994,64.514990234375],[-21.590625,64.6263671875],[-22.10600585937499,64.533056640625],[-22.467041015625,64.794970703125],[-23.818994140624994,64.73916015625],[-24.02617187499999,64.863427734375],[-22.7880859375,65.046484375],[-21.89213867187499,65.048779296875],[-21.779980468749983,65.1876953125],[-22.50908203124999,65.19677734375],[-21.844384765624994,65.44736328125],[-22.902490234374994,65.58046875],[-23.89990234375,65.407568359375],[-24.475683593749977,65.5251953125],[-24.248925781249994,65.614990234375],[-23.85673828124999,65.53837890625],[-24.092626953124977,65.77646484375],[-23.615917968749983,65.67958984375],[-23.285351562499983,65.75],[-23.832617187499977,65.84921875],[-23.52495117187499,65.880029296875],[-23.77734375,66.017578125],[-23.434472656249994,66.02421875],[-23.452539062499994,66.181005859375],[-23.018994140624983,65.98212890625],[-22.659863281249983,66.025927734375],[-22.61601562499999,65.86748046875],[-22.44169921874999,65.90830078125],[-22.4453125,66.07001953125],[-22.947900390624994,66.212744140625],[-22.48442382812499,66.26630859375],[-23.116943359375,66.338720703125],[-22.9443359375,66.429443359375],[-22.426123046874977,66.430126953125],[-21.406884765624994,66.0255859375],[-21.374902343749994,65.74189453125],[-21.658447265625,65.723583984375],[-21.12968749999999,65.2666015625],[-20.804345703124994,65.63642578125],[-20.454833984375,65.571044921875],[-20.20751953125,66.10009765625],[-19.489697265624983,65.76806640625],[-19.382958984374994,66.07568359375],[-18.845898437499983,66.183935546875],[-18.141943359374977,65.73408203125],[-18.29716796874999,66.157421875],[-17.906982421875,66.143310546875],[-17.550439453124994,65.964404296875],[-17.153027343749983,66.20283203125],[-16.838037109374994,66.125244140625],[-16.485009765624994,66.195947265625],[-16.540673828124994,66.446728515625],[-16.24931640624999,66.522900390625],[-15.985400390624989,66.5146484375],[-15.543115234374994,66.228515625]]]},"properties":{"name":"Iceland","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[35.78730468750001,32.734912109374996],[35.572851562500006,32.640869140625],[35.56904296875001,32.619873046875],[35.55146484375001,32.3955078125],[35.484375,32.401660156249996],[35.40263671875002,32.450634765625],[35.38671875,32.493017578125],[35.303808593750006,32.512939453125],[35.19326171875002,32.534423828125],[35.065039062500006,32.46044921875],[35.01054687500002,32.338183593749996],[34.95595703125002,32.1609375],[34.98974609375,31.91328125],[34.97832031250002,31.86640625],[34.95380859375001,31.841259765624997],[34.96113281250001,31.82333984375],[34.983007812500006,31.81679687499999],[35.05322265625,31.837939453124996],[35.12714843750001,31.816748046875],[35.203710937500006,31.75],[34.95097656250002,31.602294921875],[34.88046875,31.3681640625],[35.45058593750002,31.479296875],[34.97343750000002,29.555029296875],[34.904296875,29.47734375],[34.24531250000001,31.208300781249996],[34.34833984375001,31.292919921874997],[34.350195312500006,31.362744140624997],[34.52558593750001,31.525634765625],[34.47734375000002,31.584863281249994],[34.483984375,31.59228515625],[34.67841796875001,31.895703125],[35.10859375000001,33.08369140625],[35.411230468750006,33.07568359375],[35.869140625,33.43173828125],[35.91347656250002,32.94960937499999],[35.78730468750001,32.734912109374996]]]},"properties":{"name":"Israel","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[15.576562500000051,38.220312500000034],[15.099511718750023,37.45859375],[15.295703125000017,37.05517578124997],[15.112597656250017,36.687841796875006],[14.501855468750023,36.798681640625034],[14.142968750000023,37.103662109374994],[13.90546875000004,37.10063476562502],[13.169921875000028,37.47929687499996],[12.640234375000034,37.594335937500034],[12.435546874999972,37.819775390624955],[12.734375,38.18305664062498],[12.902734375000023,38.03486328124998],[13.291113281250034,38.19145507812502],[13.788867187499989,37.981201171875],[15.11875,38.15273437500002],[15.498730468750011,38.290869140625006],[15.576562500000051,38.220312500000034]]],[[[8.478906250000023,39.067529296874966],[8.421484375000034,38.968652343749994],[8.366796875,39.115917968749955],[8.478906250000023,39.067529296874966]]],[[[8.28603515625008,41.03984375],[8.205664062500034,40.99746093750005],[8.320214843750023,41.121875],[8.28603515625008,41.03984375]]],[[[9.632031250000011,40.88203124999998],[9.805273437500063,40.499560546875045],[9.642968750000023,40.268408203125006],[9.5625,39.16601562500006],[9.056347656250068,39.23916015625002],[8.966601562500074,38.963720703125034],[8.648535156250034,38.92656250000002],[8.418164062500068,39.205712890624966],[8.547753906250023,39.83920898437506],[8.4078125,39.91723632812497],[8.471289062500063,40.29267578124998],[8.189941406250028,40.651611328125],[8.22421875,40.91333007812503],[8.571875,40.85019531250006],[9.228417968750023,41.257080078125],[9.615332031249977,41.01728515624998],[9.632031250000011,40.88203124999998]]],[[[10.395117187500034,42.85815429687503],[10.419335937499994,42.71318359374999],[10.13125,42.742041015625006],[10.395117187500034,42.85815429687503]]],[[[13.420996093750006,46.212304687499994],[13.63251953125004,46.17705078125002],[13.634960937499983,46.15776367187499],[13.61660156250008,46.133105468750045],[13.54804687500004,46.08911132812503],[13.486425781250034,46.03955078124997],[13.480273437500017,46.00922851562501],[13.487695312500023,45.987109375000045],[13.509179687500051,45.973779296874994],[13.6005859375,45.97978515624996],[13.663476562500023,45.7919921875],[13.831152343750006,45.680419921875],[13.719824218750063,45.58759765625001],[13.628320312500051,45.77094726562498],[13.206347656250074,45.771386718749966],[12.27431640625008,45.44604492187503],[12.225683593750034,45.24150390625002],[12.523437500000028,44.96796874999998],[12.248339843750045,44.72250976562498],[12.396289062500074,44.223876953125],[13.56416015625004,43.57128906250003],[14.010449218750011,42.68955078125006],[14.54072265625004,42.24428710937502],[15.16875,41.93403320312498],[16.164648437500034,41.89619140624998],[15.900488281250034,41.51206054687498],[17.954980468749994,40.65517578125002],[18.460644531249983,40.221044921875034],[18.34375,39.82138671874998],[18.077929687500017,39.93696289062498],[17.865039062500074,40.28017578125002],[17.395800781250045,40.34023437499999],[17.179980468750045,40.50278320312498],[16.92822265625,40.45805664062502],[16.521875,39.74755859375003],[17.114550781250017,39.38061523437497],[17.174609375000017,38.998095703125045],[16.61669921875003,38.800146484375034],[16.54560546875001,38.40908203125002],[16.05683593750001,37.941845703124955],[15.72451171875008,37.93911132812502],[15.645800781250017,38.034228515625045],[15.87890625,38.61391601562502],[16.19677734375,38.759228515624955],[16.20996093750003,38.94111328124998],[15.692773437499994,39.99018554687501],[14.95087890625004,40.23901367187497],[14.94765625000008,40.469335937500006],[14.765722656250063,40.66840820312498],[14.339941406250006,40.59882812500001],[14.460546875000063,40.72871093750001],[14.04433593750008,40.81225585937506],[13.733398437500057,41.23564453124999],[13.088671875000074,41.243847656249955],[12.630859374999972,41.469677734374955],[11.637304687500063,42.287548828124955],[11.141210937499977,42.38989257812503],[11.167773437500074,42.53515625000006],[10.708398437500023,42.93632812499999],[10.514843750000011,42.96752929687503],[10.188085937500063,43.947509765625],[8.76582031250004,44.42231445312501],[8.004980468750006,43.87675781249999],[7.4931640625,43.767138671875045],[7.637207031250057,44.16484375],[7.318554687500068,44.13798828125002],[6.900195312499989,44.33574218749996],[6.99267578125,44.82729492187502],[6.634765625000028,45.06816406249996],[7.07832031250004,45.23994140624998],[7.146386718750051,45.381738281249994],[6.790917968750023,45.740869140624966],[7.021093750000034,45.92578124999997],[7.055761718749977,45.90380859375003],[7.129003906249977,45.88041992187499],[7.327929687500017,45.912353515625],[7.9931640625,46.01591796874996],[8.081542968750057,46.25600585937502],[8.231933593750057,46.341210937499966],[8.29853515625004,46.403417968750034],[8.370703125,46.44511718750002],[8.458398437500023,46.24589843750002],[8.818554687500011,46.0771484375],[8.826757812500006,46.06103515625],[8.77802734375004,45.996191406250034],[8.953710937500034,45.83002929687501],[9.023730468750074,45.845703125],[9.203417968750017,46.21923828125],[9.304394531250068,46.49555664062498],[9.399316406250023,46.480664062499955],[9.427636718750023,46.48232421875002],[9.528710937500023,46.306201171875045],[9.57958984375,46.29609375000001],[9.639453125000017,46.29589843749997],[9.78779296875004,46.34604492187498],[9.884472656250011,46.36777343750006],[9.939257812500074,46.36181640625],[10.041015625000028,46.23808593750002],[10.08056640625,46.22797851562501],[10.128320312500051,46.238232421874955],[10.109667968750074,46.36284179687502],[10.081933593750023,46.420751953125006],[10.045605468750068,46.44790039062505],[10.038281250000011,46.483203125000045],[10.061230468750068,46.54677734375002],[10.087011718750063,46.59990234375002],[10.1375,46.614355468750034],[10.195507812500068,46.62109374999997],[10.4306640625,46.55004882812497],[10.409352678571473,46.6092047991071],[10.39794921875,46.66503906250006],[10.406054687500045,46.73486328124997],[10.452832031249983,46.86494140625001],[10.47939453125008,46.85512695312505],[10.579785156250011,46.85371093750001],[10.689257812500017,46.846386718749955],[10.759765625,46.79331054687498],[10.828906250000045,46.775244140625034],[10.927343750000034,46.76948242187501],[10.993261718750034,46.77700195312502],[11.02509765625004,46.796972656250006],[11.063476562500057,46.85913085937497],[11.133886718750006,46.93618164062505],[11.244433593750045,46.975683593750006],[11.433203125000063,46.983056640624994],[11.527539062500011,46.99741210937498],[11.775683593750017,46.986083984375],[12.169433593750028,47.082128906250006],[12.19716796875008,47.075],[12.201269531250034,47.060888671875034],[12.165527343750028,47.028173828125034],[12.130761718750051,46.98476562499999],[12.154101562500017,46.93525390625004],[12.267968750000023,46.83588867187504],[12.330078125,46.75981445312499],[12.388281250000034,46.70263671874997],[12.479199218749983,46.672509765624966],[13.16875,46.572656249999966],[13.3515625,46.55791015624999],[13.490039062500045,46.55556640625002],[13.7,46.52026367187503],[13.679687500000057,46.46289062499997],[13.63710937500008,46.44853515624999],[13.563281250000045,46.41508789062502],[13.399511718749977,46.31752929687502],[13.420996093750006,46.212304687499994]]]]},"properties":{"name":"Italy","childNum":6}},{"geometry":{"type":"Polygon","coordinates":[[[-77.261474609375,18.45742187499999],[-76.349853515625,18.15185546875],[-76.21079101562499,17.913525390624997],[-76.524609375,17.8662109375],[-76.85322265625,17.97373046874999],[-76.94414062499999,17.848779296874994],[-77.11948242187499,17.880078125],[-77.20498046875,17.71494140624999],[-77.36142578124999,17.833691406249997],[-77.76816406249999,17.877392578124997],[-78.04448242187499,18.173828125],[-78.339501953125,18.28720703124999],[-78.21669921875,18.44809570312499],[-77.8734375,18.522216796875],[-77.261474609375,18.45742187499999]]]},"properties":{"name":"Jamaica","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-2.018652343749977,49.23125],[-2.23583984375,49.1763671875],[-2.220507812499989,49.266357421875],[-2.018652343749977,49.23125]]]},"properties":{"name":"Jersey","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[39.14541015625002,32.12451171875],[38.9970703125,32.007470703124994],[38.96230468750002,31.994921875],[38.37548828125,31.847460937499996],[38.111425781250006,31.781152343749994],[37.49335937500001,31.625878906249994],[37.215625,31.556103515624997],[36.95859375,31.491503906249996],[37.980078125,30.5],[37.862890625,30.442626953125],[37.66972656250002,30.34814453125],[37.64990234375,30.330957031249994],[37.63359375000002,30.31328125],[37.55361328125002,30.144580078124996],[37.49072265625,30.01171875],[37.46923828125,29.995068359374997],[36.75527343750002,29.866015625],[36.70390625000002,29.831640625],[36.591796875,29.66611328125],[36.47607421875,29.4951171875],[36.2828125,29.355371093749994],[36.068457031250006,29.200537109375],[34.95078125,29.353515625],[34.97343750000002,29.555029296875],[35.45058593750002,31.479296875],[35.57207031250002,32.237890625],[35.55146484375001,32.3955078125],[35.56904296875001,32.619873046875],[35.572851562500006,32.640869140625],[35.78730468750001,32.734912109374996],[36.3720703125,32.3869140625],[36.818359375,32.317285156249994],[38.773535156250006,33.372216796874994],[39.04140625000002,32.3056640625],[39.24746093750002,32.350976562499994],[39.29277343750002,32.24384765625],[39.14541015625002,32.12451171875]]]},"properties":{"name":"Jordan","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[123.88867187499997,24.280126953124977],[123.67978515625012,24.317773437500023],[123.77148437499997,24.41445312499999],[123.93486328125002,24.362011718749983],[123.88867187499997,24.280126953124977]]],[[[124.29316406250004,24.515917968750074],[124.13574218750003,24.347607421874983],[124.08476562500002,24.435839843750017],[124.30195312500004,24.58710937500001],[124.29316406250004,24.515917968750074]]],[[[125.44414062500002,24.7431640625],[125.26894531250005,24.732519531250063],[125.28359375,24.871923828125034],[125.44414062500002,24.7431640625]]],[[[128.25878906249997,26.65278320312501],[127.86708984375,26.442480468749977],[127.80361328125005,26.152539062499983],[127.653125,26.0947265625],[127.90722656250003,26.69360351562497],[128.09765624999997,26.66777343749996],[128.25488281249997,26.88188476562496],[128.25878906249997,26.65278320312501]]],[[[128.99814453125012,27.720800781250006],[128.90000000000012,27.727783203125],[128.9076171875,27.897998046875045],[128.99814453125012,27.720800781250006]]],[[[129.45253906250005,28.20898437499997],[129.3664062500001,28.127734375000045],[129.16464843750012,28.24975585937503],[129.68955078125012,28.517480468750023],[129.45253906250005,28.20898437499997]]],[[[130.6227539062501,30.262988281250017],[130.44560546875002,30.264697265625017],[130.38808593750005,30.38818359375003],[130.49716796875006,30.465527343749983],[130.64355468749997,30.388964843750017],[130.6227539062501,30.262988281250017]]],[[[130.95976562500007,30.39692382812504],[130.87031250000004,30.444238281249994],[131.06035156250007,30.828466796875006],[130.95976562500007,30.39692382812504]]],[[[130.38105468750004,32.42373046875002],[130.24169921874997,32.462792968749994],[130.46142578124997,32.515722656250034],[130.38105468750004,32.42373046875002]]],[[[130.08251953124997,32.22968750000001],[129.9601562500001,32.24375],[130.00976562499997,32.521630859374994],[130.16777343750002,32.54121093749998],[130.19951171875002,32.34057617187506],[130.08251953124997,32.22968750000001]]],[[[128.66533203125002,32.783886718749955],[128.89453124999997,32.65214843750002],[128.69296875000012,32.60473632812506],[128.66533203125002,32.783886718749955]]],[[[129.07695312500002,32.84028320312498],[128.99726562500004,32.95185546874998],[129.10976562500005,33.13256835937503],[129.18193359375002,32.99311523437504],[129.07695312500002,32.84028320312498]]],[[[129.49179687500006,33.22304687499999],[129.37041015625002,33.176025390625],[129.56992187500006,33.36103515625004],[129.49179687500006,33.22304687499999]]],[[[129.79570312500007,33.74882812499999],[129.67480468749997,33.73969726562498],[129.71728515624997,33.8583984375],[129.79570312500007,33.74882812499999]]],[[[131.17460937500007,33.602587890625045],[131.69628906250003,33.60283203124999],[131.53740234375007,33.274072265624994],[131.89658203125006,33.25458984375001],[131.8478515625001,33.118066406249994],[132.0021484375001,32.882373046875045],[131.6603515625001,32.465625],[131.33720703125007,31.4046875],[131.07080078124997,31.436865234374977],[131.09843750000002,31.256152343750017],[130.68574218750004,31.01513671875003],[130.77626953125,31.70629882812497],[130.65507812500002,31.71840820312505],[130.5560546875,31.563085937500034],[130.58876953125,31.178515625000017],[130.20068359374997,31.291894531250023],[130.14726562500002,31.40849609374996],[130.2941406250001,31.45068359375003],[130.3219726562501,31.601464843750023],[130.18789062500005,31.768847656250017],[130.19443359375012,32.090771484374955],[130.64052734375005,32.61923828124998],[130.49785156250002,32.65693359375001],[130.547265625,32.83159179687499],[130.2375,33.177636718749966],[130.12685546875005,33.10483398437506],[130.175,32.851318359375],[130.32646484375002,32.852636718750006],[130.34042968750012,32.70185546875004],[130.05410156250005,32.770800781250045],[129.76855468749997,32.57099609375001],[129.82675781250006,32.72534179687503],[129.67910156250005,33.059960937499966],[129.99169921875003,32.85156249999997],[129.58007812500003,33.23627929687501],[129.61015625000002,33.34365234375005],[129.844140625,33.32177734375003],[129.82568359374997,33.43701171875006],[130.36503906250007,33.634472656249955],[130.4837890625,33.834619140624966],[130.715625,33.92778320312502],[130.953125,33.87202148437504],[131.17460937500007,33.602587890625045]]],[[[132.266015625,33.945166015625006],[132.44492187500006,33.91318359374998],[132.20878906250007,33.87285156250002],[132.266015625,33.945166015625006]]],[[[129.27949218750004,34.123388671875006],[129.18642578125,34.14501953125006],[129.21484374999997,34.320654296875034],[129.3371093750001,34.284765625],[129.27949218750004,34.123388671875006]]],[[[134.35742187500003,34.25634765625],[134.6375,34.22661132812499],[134.73886718750012,33.82050781250001],[134.37705078125012,33.60839843749997],[134.18164062500003,33.24721679687502],[133.95869140625004,33.44833984375006],[133.63203125000004,33.51098632812503],[133.28593750000007,33.35996093749998],[132.97724609375004,32.84199218749998],[132.80429687500006,32.75200195312502],[132.6417968750001,32.76245117187503],[132.70898437500003,32.90249023437505],[132.49511718749997,32.91660156249998],[132.41279296875004,33.43046875],[132.0326171875,33.339990234374994],[132.64306640624997,33.68994140624997],[132.93515625000006,34.09531250000006],[133.19306640625004,33.93320312499998],[133.58203124999997,34.01713867187502],[133.60263671875006,34.24384765625001],[133.94833984375006,34.34804687500002],[134.35742187500003,34.25634765625]]],[[[134.35185546875002,34.48364257812503],[134.25185546875,34.42304687500004],[134.18212890625003,34.51923828124998],[134.35185546875002,34.48364257812503]]],[[[134.9328125000001,34.28813476562499],[134.82441406250004,34.202929687500045],[134.66787109375005,34.294140624999955],[135.00468750000002,34.54404296874998],[134.9328125000001,34.28813476562499]]],[[[129.38564453125,34.35366210937502],[129.26669921875012,34.37045898437506],[129.45107421875005,34.68657226562499],[129.38564453125,34.35366210937502]]],[[[133.37050781250005,36.203857421875],[133.23925781249997,36.178759765625045],[133.20615234375006,36.293408203124955],[133.29570312500002,36.34013671874996],[133.37050781250005,36.203857421875]]],[[[138.34404296875007,37.822119140625006],[138.22519531250006,37.82939453124996],[138.25,38.078466796875006],[138.50361328125004,38.31591796875006],[138.45361328124997,38.07568359375006],[138.57519531249997,38.065527343750034],[138.34404296875007,37.822119140625006]]],[[[141.22929687500007,41.37265625],[141.45546875000005,41.404736328124955],[141.43046875000002,40.72333984374998],[141.7970703125001,40.29116210937502],[141.97695312500005,39.428808593750034],[141.90078125,39.111328125],[141.5462890625,38.762841796874966],[141.4674804687501,38.404150390625006],[141.10839843750003,38.33793945312502],[140.9621093750001,38.148876953124955],[141.00166015625004,37.11464843750002],[140.57353515625007,36.23134765625002],[140.87402343749997,35.72495117187506],[140.457421875,35.51025390625],[140.35468750000004,35.18144531249999],[139.8439453125001,34.914892578125034],[139.82646484375002,35.29667968750002],[140.096875,35.58515624999998],[139.83476562500002,35.658056640625006],[139.65000000000012,35.40913085937501],[139.675,35.149267578125006],[139.47441406250002,35.298535156249955],[139.24941406250005,35.27802734375004],[139.08603515625006,34.83916015624999],[138.8375,34.619238281250034],[138.80273437499997,34.97480468749998],[138.90361328125002,35.02524414062506],[138.71962890625,35.12407226562502],[138.18906250000012,34.596337890624994],[137.543359375,34.66420898437505],[137.06171875000004,34.58281249999999],[137.27519531250002,34.77250976562499],[136.96328125000005,34.83491210937501],[136.87128906250004,34.733105468749955],[136.89707031250006,35.03554687500002],[136.80419921874997,35.05029296875],[136.53300781250007,34.678369140624994],[136.8802734375,34.43359375000006],[136.8537109375001,34.324072265625034],[136.32988281250007,34.17685546875006],[135.91621093750004,33.561718749999955],[135.69531250000003,33.48696289062502],[135.4528320312501,33.55336914062505],[135.12792968749997,34.006982421874994],[135.10009765624997,34.288378906250045],[135.41591796875,34.61748046875002],[134.74003906250007,34.765234375],[134.246875,34.71386718750003],[133.96826171874997,34.52729492187504],[133.14238281250002,34.30244140624998],[132.65654296875007,34.24609375000003],[132.31259765625006,34.32495117187503],[132.14648437499997,33.83876953125002],[131.74052734375007,34.05205078125002],[130.91884765625,33.97573242187502],[130.88925781250012,34.261816406250034],[131.00419921875007,34.39257812500003],[131.35439453125,34.41318359375006],[132.92294921875006,35.511279296875045],[133.98125,35.50722656250002],[135.17431640625003,35.74707031250003],[135.32695312500002,35.52553710937502],[135.68027343750006,35.503125],[135.903125,35.60688476562498],[136.09531250000006,35.767626953125045],[136.06748046875006,36.11684570312505],[136.69814453125005,36.742041015625034],[136.84345703125004,37.38212890624999],[137.32265625,37.52207031249998],[136.89990234375003,37.11767578125],[137.01669921875006,36.83720703124999],[137.24628906250004,36.753173828125],[137.5140625,36.95156250000002],[138.31992187500012,37.21840820312502],[138.88505859375007,37.84394531250001],[139.36386718750006,38.09902343750002],[139.80195312500004,38.881591796875],[140.06474609375002,39.624414062499994],[139.99472656250006,39.855078125],[139.74150390625002,39.92084960937498],[140.01113281250005,40.26035156250006],[139.92285156250003,40.59843750000002],[140.28125,40.84609375000002],[140.3444335937501,41.203320312499955],[140.62763671875004,41.195410156250034],[140.74863281250012,40.830322265625],[140.93603515625003,40.940771484375034],[141.1185546875,40.88227539062501],[141.24423828125006,41.20561523437499],[140.80058593750002,41.138818359374966],[140.80185546875012,41.253662109375],[140.9369140625,41.50556640624998],[141.22929687500007,41.37265625]]],[[[139.48125,42.08100585937498],[139.43134765625004,42.19956054687498],[139.55839843750002,42.235205078125034],[139.48125,42.08100585937498]]],[[[141.29541015625003,45.11933593750001],[141.14531250000002,45.153906250000034],[141.19375,45.24785156249999],[141.29541015625003,45.11933593750001]]],[[[141.07275390624997,45.33286132812498],[141.03398437500007,45.26933593750002],[140.97167968749997,45.465478515624994],[141.07275390624997,45.33286132812498]]],[[[143.82431640625012,44.11699218749999],[144.71523437500005,43.92797851562503],[145.36953125000005,44.32739257812506],[145.13964843750003,43.6625],[145.34082031249997,43.30253906249999],[145.83300781249997,43.38593750000001],[144.92138671874997,43.00092773437498],[143.96933593750006,42.88139648437499],[143.42949218750002,42.41889648437498],[143.2365234375001,42.000195312499955],[141.85136718750007,42.57905273437501],[141.40664062500005,42.54692382812496],[140.98613281250002,42.34213867187498],[140.70976562500002,42.555615234374955],[140.48046875000003,42.559375],[140.32666015625003,42.29335937499999],[141.15097656250012,41.80507812499999],[140.99951171874997,41.73740234375006],[140.65986328125004,41.815576171874994],[140.3849609375001,41.51928710937503],[140.08515625000004,41.43408203125],[139.99531250000004,41.57641601562503],[140.10839843749997,41.912939453125034],[139.83544921874997,42.278076171875],[139.86015625000002,42.58173828125004],[140.43222656250012,42.95410156250006],[140.39238281250002,43.303125],[141.13818359374997,43.17993164062506],[141.37412109375006,43.279638671875006],[141.7609375000001,44.482519531250034],[141.58300781250003,45.15595703125001],[141.66796874999997,45.401269531249966],[141.93769531250004,45.509521484375],[142.88476562499997,44.670117187499955],[143.82431640625012,44.11699218749999]]]]},"properties":{"name":"Japan","childNum":28}},{"geometry":{"type":"Polygon","coordinates":[[[77.04863281249999,35.109912109374996],[76.927734375,35.346630859375],[76.88222656250002,35.4357421875],[76.81279296874999,35.571826171874996],[76.76689453124999,35.66171875],[76.87890625,35.61328125],[77.09003906250001,35.552050781249996],[77.29482421875002,35.508154296875],[77.44648437500001,35.4755859375],[77.57255859374999,35.471826171874994],[77.72402343750002,35.48056640625],[77.79941406250003,35.495898437499996],[77.42343750000003,35.302587890625],[77.16855468750003,35.171533203124994],[77.04863281249999,35.109912109374996]]]},"properties":{"name":"Siachen Glacier","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[50.184472656249994,44.854638671874994],[49.99511718750003,44.93696289062498],[50.10986328124997,45.08193359375002],[50.038867187500074,44.949121093749966],[50.184472656249994,44.854638671874994]]],[[[87.32285156250012,49.085791015625006],[86.8083007812501,49.04970703125002],[86.54941406250012,48.52861328125002],[85.7494140625,48.38505859374999],[85.52597656250006,47.915625],[85.65664062500005,47.254638671875],[85.484765625,47.06352539062496],[84.78613281249997,46.83071289062505],[84.66660156250006,46.97236328125004],[84.016015625,46.97050781250002],[83.02949218750004,47.18593750000002],[82.31523437500002,45.59492187499998],[82.61162109375007,45.424267578124955],[82.52148437500003,45.12548828125],[82.26660156249997,45.21909179687498],[81.94492187500006,45.16083984375001],[81.69199218750012,45.34936523437497],[80.05917968750012,45.006445312500006],[79.871875,44.88378906249997],[80.48154296875006,44.71464843749999],[80.35527343750002,44.09726562500006],[80.78574218750006,43.16157226562504],[80.39023437500006,43.043115234374966],[80.53896484375005,42.873486328124955],[80.20224609375012,42.73447265624998],[80.209375,42.190039062500006],[80.07128906249997,42.302978515625],[79.92109375000004,42.41313476562496],[79.49013671875,42.45756835937496],[79.42822265624997,42.483496093750006],[79.20302734375005,42.66601562499997],[79.16484375000007,42.759033203125],[79.1266601562501,42.775732421875034],[76.98808593750007,42.97358398437501],[76.64648437500003,42.928808593750034],[76.50917968750005,42.91889648437498],[75.9322265625,42.92851562499999],[75.84033203125003,42.9375],[75.78955078124997,42.93291015624999],[75.68173828125,42.83046875],[75.04765625000007,42.904394531250034],[74.20908203125006,43.24038085937502],[73.88603515625002,43.132568359375],[73.55625,43.002783203125006],[73.45019531249997,42.703027343749966],[73.421875,42.59350585937503],[73.49296875000007,42.409033203125034],[73.41162109375003,42.41977539062498],[73.316015625,42.46699218750001],[73.2829101562501,42.50410156250004],[72.85507812500006,42.561132812500006],[72.75292968750003,42.63789062500001],[72.54316406250004,42.67773437500006],[72.27578125,42.757666015625006],[71.76054687500002,42.82148437500004],[71.5142578125,42.766943359375006],[71.42207031250004,42.78315429687504],[71.25664062500002,42.733544921874966],[70.89287109375007,42.339990234374994],[70.94677734374997,42.24868164062505],[69.15361328125002,41.42524414062498],[68.58408203125,40.876269531250045],[68.57265625,40.62265624999998],[68.29189453125,40.656103515625034],[68.04765625000007,40.80927734374998],[68.11308593750007,41.02861328124999],[67.9357421875001,41.19658203125002],[66.70966796875004,41.17915039062501],[66.49863281250006,41.99487304687503],[66.00957031250007,42.00488281250003],[66.1002929687501,42.99082031249998],[65.80302734375002,42.87695312500006],[65.49619140625,43.310546875],[64.9054687500001,43.714697265625006],[64.44316406250007,43.55117187499999],[63.20703125000003,43.62797851562502],[61.99023437500003,43.492138671874955],[61.007910156250006,44.39379882812497],[58.555273437500006,45.55537109375001],[55.97568359375006,44.99492187499996],[55.97744140625005,41.32221679687504],[55.434375,41.296289062499994],[54.85380859375002,41.965185546875006],[54.120996093749994,42.335205078125],[53.0558593750001,42.14775390624999],[52.4938476562501,41.780371093750034],[52.59658203125005,42.760156249999966],[51.898242187500074,42.86962890624997],[51.61601562500002,43.15844726562503],[51.29541015624997,43.17412109375002],[51.30175781249997,43.48237304687501],[50.8307617187501,44.192773437499966],[50.331152343750006,44.32548828125002],[50.25292968749997,44.461523437500006],[50.409472656250074,44.6240234375],[51.543554687500006,44.53100585937506],[51.009375,44.92182617187501],[51.4157226562501,45.35786132812501],[53.20039062500004,45.33198242187498],[52.77382812499999,45.57275390625],[53.13525390625003,46.19165039062497],[53.069433593750006,46.85605468750006],[52.48320312500002,46.99067382812504],[52.13828125,46.82861328124997],[51.178027343750074,47.110156250000045],[49.886328125,46.59565429687504],[49.347460937500074,46.51914062499998],[49.232226562500074,46.33715820312503],[48.54121093750004,46.60561523437502],[48.558398437500074,46.75712890624999],[48.959375,46.77460937499998],[48.16699218750003,47.70878906249996],[47.48193359374997,47.80390624999998],[47.292382812499994,47.74091796875004],[47.06464843750004,48.23247070312499],[46.660937500000074,48.41225585937502],[46.70263671875003,48.80556640625002],[47.031347656250006,49.150292968749994],[46.80205078125002,49.36708984375002],[46.889550781249994,49.69697265625001],[47.42919921874997,50.35795898437502],[47.7057617187501,50.37797851562502],[48.33496093750003,49.858251953125006],[48.7589843750001,49.92832031250006],[48.625097656250006,50.61269531250005],[49.32343750000004,50.851708984374966],[49.49804687500003,51.08359375000006],[50.246875,51.28950195312498],[50.79394531249997,51.729199218749955],[51.16347656250005,51.6474609375],[51.344531250000074,51.47534179687503],[52.21914062499999,51.709375],[52.57119140625005,51.481640624999955],[53.33808593750004,51.48237304687504],[54.139746093750006,51.04077148437503],[54.555273437500006,50.535791015624994],[54.64160156250003,51.011572265625034],[55.68623046875004,50.582861328125006],[56.49140625000004,51.01953124999997],[57.01171874999997,51.06518554687503],[57.44218750000002,50.88886718749998],[57.83886718750003,51.091650390625006],[58.359179687500074,51.063818359375034],[58.88369140625005,50.694433593750006],[59.4523437500001,50.62041015625002],[59.523046875,50.492871093749955],[59.812402343749994,50.58203125],[60.05859374999997,50.850292968749955],[60.42480468749997,50.67915039062498],[60.94228515625005,50.69550781250004],[61.38945312500002,50.86103515625001],[61.55468750000003,51.32460937500005],[60.464746093749994,51.651171875000045],[60.03027343749997,51.93325195312505],[60.99453125000005,52.33686523437504],[60.77441406249997,52.67578124999997],[61.047460937500006,52.97246093750002],[62.08271484375004,53.00541992187499],[61.65986328125004,53.22846679687504],[61.19921874999997,53.28715820312502],[61.22890625,53.445898437500006],[61.53496093750002,53.52329101562506],[60.97949218749997,53.62172851562505],[61.231054687500006,54.01948242187498],[61.92871093750003,53.94648437500004],[64.46123046875002,54.38417968750002],[65.08837890624997,54.340185546875034],[65.476953125,54.62329101562497],[68.15585937500006,54.97670898437505],[68.20625,55.16093750000002],[68.9772460937501,55.389599609374955],[70.18242187500002,55.162451171875034],[70.73808593750007,55.30517578125],[71.18554687500003,54.59931640624998],[71.09316406250005,54.21220703124999],[72.00449218750006,54.20566406249998],[72.18603515625003,54.32563476562501],[72.44677734375003,53.94184570312498],[72.62226562500004,54.13432617187502],[73.22988281250005,53.957812500000045],[73.71240234375003,54.04238281250002],[73.30566406250003,53.707226562499955],[73.40693359375004,53.44755859374999],[73.85898437500006,53.61972656249998],[74.35156250000003,53.487646484375006],[74.45195312500007,53.64726562500002],[75.22021484374997,53.89379882812506],[75.43720703125004,54.08964843749999],[76.8373046875,54.4423828125],[76.65458984375007,54.14526367187503],[76.42167968750007,54.151513671874966],[76.48476562500005,54.02255859374998],[77.85996093750006,53.269189453124994],[79.98623046875,50.774560546874966],[80.42363281250002,50.94628906249997],[80.44804687500002,51.18334960937503],[80.73525390625,51.29340820312498],[81.12724609375002,51.19106445312502],[81.0714843750001,50.96875],[81.38828125000006,50.95649414062501],[81.46591796875006,50.73984375],[82.49394531250007,50.72758789062499],[82.76083984375012,50.89335937500002],[83.35732421875005,50.99458007812504],[83.94511718750007,50.774658203125],[84.32324218749997,50.239160156249966],[84.9894531250001,50.061425781249994],[85.2326171875001,49.61582031249998],[86.1808593750001,49.49931640624996],[86.67548828125004,49.77729492187501],[86.62646484374997,49.56269531250001],[87.32285156250012,49.085791015625006]]]]},"properties":{"name":"Kazakhstan","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[35.325292968750006,5.364892578124994],[35.745019531249994,5.343994140625],[35.80029296874997,5.156933593749983],[35.77929687499997,5.105566406250006],[35.756152343750074,4.950488281250031],[35.76308593750005,4.808007812500051],[36.02197265625003,4.468115234374991],[36.90556640625002,4.411474609374991],[37.15458984375002,4.254541015624994],[37.944921875,3.746728515625023],[38.0861328125001,3.648828124999966],[38.22529296875004,3.61899414062502],[38.45156250000005,3.604833984374977],[38.608007812500006,3.600097656249986],[39.49443359375002,3.45610351562496],[39.65751953125002,3.577832031249983],[39.79033203125002,3.754248046875034],[39.8421875,3.851464843750037],[40.765234375,4.273046875000034],[41.02080078125002,4.057470703124991],[41.22089843750004,3.943554687499969],[41.372460937499994,3.94619140624998],[41.48193359375003,3.96328125],[41.737695312499994,3.979052734375003],[41.88398437500004,3.977734375000011],[41.6134765625001,3.59047851562498],[41.34179687499997,3.20166015625],[40.964453125,2.814648437500026],[40.9787109375001,-0.870312500000011],[41.249804687500074,-1.220507812499946],[41.4269531250001,-1.449511718749974],[41.521875,-1.572265625000028],[41.53271484374997,-1.695312499999957],[41.26748046875005,-1.945019531250026],[40.889746093750006,-2.023535156250034],[40.89824218750002,-2.269921874999966],[40.64414062500006,-2.53945312499998],[40.22246093750002,-2.688378906250037],[40.1154296875001,-3.250585937499991],[39.8609375,-3.576757812500006],[39.49091796875004,-4.478417968750023],[39.221777343750006,-4.692382812500014],[37.608203125000074,-3.497070312500028],[37.643847656250074,-3.045410156250028],[33.90322265625005,-1.002050781250034],[33.94316406250002,0.173779296874969],[34.160937500000074,0.605175781250026],[34.4108398437501,0.867285156250034],[34.48173828125002,1.042138671875051],[34.79863281250002,1.24453125],[34.976464843749994,1.719628906250051],[34.97753906249997,1.861914062499991],[34.9640625000001,2.06240234374998],[34.8830078125001,2.417919921875026],[34.90576171875003,2.4796875],[34.44785156250006,3.163476562500037],[34.40722656249997,3.357519531250034],[34.39941406249997,3.412695312500006],[34.44179687499999,3.60625],[34.43769531250004,3.650585937499969],[34.392871093750074,3.691503906250048],[34.26708984375003,3.733154296875],[34.16503906250003,3.812988281250014],[34.18574218750004,3.869775390625037],[34.13203125000004,3.889160156249986],[33.97607421874997,4.220214843750028],[34.176855468750006,4.419091796875037],[34.38017578125002,4.620654296874974],[34.6398437500001,4.875488281250028],[34.878320312499994,5.109570312500026],[35.08447265624997,5.31186523437502],[35.268359375000074,5.492285156250006],[35.325292968750006,5.364892578124994]]]},"properties":{"name":"Kenya","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[72.63994140625002,39.385986328125],[72.22998046875,39.20751953125],[72.14736328125002,39.2607421875],[72.08417968750001,39.31064453125],[72.04277343750002,39.3521484375],[71.77861328125002,39.277978515624994],[71.73222656250002,39.422998046874994],[71.50332031250002,39.478808593749996],[71.51738281250002,39.553857421874994],[71.50302734375,39.582177734374994],[71.4703125,39.603662109374994],[70.79931640625,39.3947265625],[70.50117187500001,39.587353515625],[69.29765625000002,39.524804687499994],[69.2447265625,39.827099609375],[69.27880859375,39.917773437499996],[69.3072265625,39.968554687499996],[69.36542968750001,39.947070312499996],[69.43193359375002,39.909765625],[69.47626953125001,39.919726562499996],[69.47099609375002,39.990625],[69.46875,40.020751953125],[69.966796875,40.20224609375],[70.59921875,39.974511718749994],[70.990625,40.2548828125],[71.3046875,40.286914062499996],[71.69248046875,40.15234375],[72.13125,40.438623046874994],[72.3892578125,40.427392578124994],[72.40205078125001,40.578076171875],[72.6041015625,40.525439453124996],[73.13212890625002,40.82851562499999],[72.65830078125,40.869921875],[72.36406250000002,41.04345703125],[72.294921875,41.039941406249994],[72.21308593750001,41.0142578125],[72.18730468750002,41.025927734374996],[72.18095703125002,41.118457031249996],[72.16425781250001,41.173730468749994],[72.11542968750001,41.186572265624996],[72.05244140625001,41.16474609375],[71.95849609375,41.187060546874996],[71.87861328125001,41.19501953125],[71.8580078125,41.311376953125],[71.79248046875,41.413134765624996],[71.75771484375002,41.428027343749996],[71.70068359375,41.454003906249994],[71.66494140625002,41.5412109375],[71.6375,41.5341796875],[71.60224609375001,41.503271484375],[71.60625,41.367431640625],[71.54560546875001,41.308056640625],[71.5,41.307470703125],[71.4208984375,41.34189453125],[71.40839843750001,41.136035156249996],[71.39306640625,41.123388671875],[71.11074218750002,41.152636718749996],[70.86044921875,41.224902343749996],[70.734375,41.400537109374994],[70.18095703125002,41.571435546874994],[70.85664062500001,42.030810546874996],[71.0322265625,42.077783203124994],[71.228515625,42.162890625],[71.23232421875002,42.186279296875],[71.21269531250002,42.206445312499994],[71.12998046875,42.25],[71.03603515625002,42.28466796875],[70.97900390625,42.266552734375],[70.94677734375,42.248681640624994],[70.89287109375002,42.339990234374994],[71.25664062500002,42.733544921874994],[71.42207031250001,42.783154296875],[71.5142578125,42.766943359375],[71.76054687500002,42.821484375],[72.16181640625001,42.760693359375],[72.27578125000002,42.757666015625],[72.54316406250001,42.677734375],[72.7529296875,42.637890625],[72.855078125,42.5611328125],[73.28291015625001,42.5041015625],[73.316015625,42.4669921875],[73.41162109375,42.419775390625],[73.49296875000002,42.409033203125],[73.421875,42.593505859375],[73.4501953125,42.703027343749994],[73.55625,43.002783203125],[73.88603515625002,43.132568359375],[74.20908203125,43.240380859374994],[75.04765625000002,42.90439453125],[75.68173828125,42.83046875],[75.78955078125,42.932910156249996],[75.84033203125,42.9375],[75.9322265625,42.928515625],[76.50917968750002,42.918896484375],[76.646484375,42.92880859375],[76.98808593749999,42.973583984375],[79.12666015625001,42.775732421875],[79.20302734375002,42.666015625],[79.29550781250003,42.604833984375],[79.36777343750003,42.547216796875],[79.42822265625,42.48349609375],[79.92109375000001,42.413134765624996],[80.0712890625,42.302978515625],[80.209375,42.1900390625],[80.24619140625003,42.059814453125],[80.23515624999999,42.04345703125],[80.21621093750002,42.032421875],[79.90966796875,42.014990234375],[79.84042968750003,41.995751953124994],[79.76611328125,41.898876953125],[78.74257812500002,41.56005859375],[78.54316406250001,41.4595703125],[78.44287109375,41.417529296874996],[78.36240234375003,41.371630859374996],[78.34628906250003,41.2814453125],[78.12343750000002,41.075634765625],[77.95644531250002,41.050683593749994],[77.81523437499999,41.055615234375],[77.71933593750003,41.024316406249994],[77.58173828125001,40.9927734375],[76.98662109374999,41.03916015625],[76.90771484375,41.024169921875],[76.82402343749999,40.982324218749994],[76.70839843750002,40.818115234375],[76.6611328125,40.779638671875],[76.63984375000001,40.742236328124996],[76.62216796875003,40.662353515625],[76.57792968749999,40.577880859375],[76.48017578125001,40.449511718749996],[76.39638671875002,40.389794921874994],[76.31855468750001,40.35224609375],[76.25830078125,40.43076171875],[75.87197265625002,40.30322265625],[75.67714843750002,40.305810546874994],[75.55556640625002,40.6251953125],[75.52080078125002,40.6275390625],[75.24101562500002,40.480273437499996],[75.111328125,40.4541015625],[75.0044921875,40.449511718749996],[74.865625,40.493505859375],[74.80126953125,40.428515625],[74.83046875000002,40.32851562499999],[74.41191406250002,40.13720703125],[74.24267578125,40.092041015625],[74.08515625000001,40.07431640625],[73.99160156250002,40.043115234374994],[73.93876953125002,39.978808593749996],[73.88457031250002,39.8779296875],[73.85625,39.828662109374996],[73.83535156250002,39.800146484375],[73.83974609375002,39.762841796874994],[73.88251953125001,39.71455078125],[73.9146484375,39.606494140624996],[73.90712890625002,39.57851562499999],[73.87275390625001,39.53330078125],[73.82294921875001,39.48896484375],[73.71572265625002,39.462255859375],[73.63164062500002,39.448876953124994],[73.47041015625001,39.460595703124994],[73.38740234375001,39.442724609375],[73.33613281250001,39.412353515625],[73.2349609375,39.374560546874996],[73.10927734375002,39.3619140625],[72.63994140625002,39.385986328125]],[[70.66416015625,39.85546875],[70.56708984375001,39.866601562499994],[70.49775390625001,39.882421875],[70.48281250000002,39.882714843749994],[70.4892578125,39.863037109375],[70.5595703125,39.790917968749994],[70.61210937500002,39.786767578124994],[70.70166015625,39.82529296875],[70.66416015625,39.85546875]],[[71.20615234375,39.892578125],[71.22871093750001,40.048144531249996],[71.08037109375002,40.079882812499996],[71.02412109375001,40.149169921875],[71.00546875,40.152294921875],[70.96064453125001,40.08798828125],[71.04482421875002,39.992529296875],[71.04365234375001,39.976318359375],[71.01171875,39.8951171875],[71.06425781250002,39.884912109374994],[71.15625,39.883447265624994],[71.20615234375,39.892578125]]]},"properties":{"name":"Kyrgyzstan","childNum":3}},{"geometry":{"type":"Polygon","coordinates":[[[104.42636718750006,10.411230468749991],[103.87050781250005,10.655126953125034],[103.58710937500004,10.552197265625026],[103.54042968750005,10.668701171875043],[103.721875,10.890136718750043],[103.5324218750001,11.146679687499997],[103.35361328125006,10.921582031250054],[103.15283203124997,10.913720703125051],[103.12548828124997,11.460644531250011],[102.9486328125,11.773486328124974],[102.93388671875002,11.706689453125037],[102.73662109375007,12.089794921875011],[102.75566406250002,12.42626953125],[102.49960937500012,12.669970703125003],[102.33632812500005,13.560302734375014],[102.546875,13.585693359375043],[102.90927734375006,14.136718750000028],[103.19941406250004,14.332617187499977],[104.77900390625004,14.427832031250006],[105.07412109375005,14.227441406250037],[105.12597656250003,14.280957031250011],[105.16914062500004,14.336083984374966],[105.1833007812501,14.346240234374989],[105.18554687500003,14.319091796874972],[105.20703125000003,14.259375],[105.24570312500006,14.200537109374977],[105.35019531250006,14.109570312500011],[105.53154296875007,14.156152343749994],[105.73974609375003,14.084960937500057],[105.83144531250005,13.976611328125003],[105.9044921875001,13.924511718750054],[106.06679687500005,13.921191406250003],[106.12470703125004,14.049121093750031],[106.09667968749997,14.127099609375023],[106.00410156250004,14.262890624999983],[105.97890625,14.343017578125043],[106.00839843750012,14.357177734375],[106.1652343750001,14.372363281249989],[106.19072265625007,14.388134765624997],[106.22539062500002,14.476220703125009],[106.26796875,14.466210937500009],[106.35498046875003,14.454785156249997],[106.44697265625004,14.515039062500009],[106.50146484375003,14.578222656250006],[106.53115234375005,14.549414062499991],[106.5636718750001,14.505078125000026],[106.59921875000006,14.479394531250037],[106.66542968750005,14.441308593749994],[106.73818359375005,14.387744140625017],[106.78349609375002,14.335107421875037],[106.81992187500006,14.314697265625057],[106.91318359375006,14.329394531250031],[106.93808593750006,14.327343750000054],[106.99218750000003,14.391015624999966],[107.03017578125,14.425683593750009],[107.06240234375,14.415771484375043],[107.109375,14.416699218750054],[107.29267578125004,14.592382812500048],[107.37988281250003,14.555322265625051],[107.41474609375004,14.56289062499999],[107.51943359375005,14.705078125],[107.3314453125,14.126611328125009],[107.60546874999997,13.437792968750017],[107.47539062500002,13.030371093749963],[107.50644531250006,12.364550781250031],[107.39335937500002,12.260498046874972],[107.21210937500004,12.30400390624996],[106.70009765625,11.979296874999974],[106.41386718750002,11.9484375],[106.39921875000007,11.687011718750028],[106.0060546875001,11.758007812500011],[105.85146484375005,11.635009765625],[105.85605468750006,11.294287109375048],[106.16093750000002,11.037109375000057],[106.16396484375005,10.794921875],[105.85332031250007,10.86357421874996],[105.75507812500004,10.989990234375043],[105.40576171875003,10.95161132812504],[105.3146484375001,10.845166015625026],[105.04570312500002,10.911376953125014],[105.04638671874997,10.701660156250014],[104.85058593749997,10.534472656249974],[104.42636718750006,10.411230468749991]]]},"properties":{"name":"Cambodia","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-157.34213867187503,1.855566406250034],[-157.17578125,1.73984375],[-157.57895507812498,1.902050781249997],[-157.43583984374993,1.84726562500002],[-157.365185546875,1.94609375],[-157.44189453125003,2.025048828125009],[-157.321875,1.968554687500045],[-157.34213867187503,1.855566406250034]]],[[[-159.3390625,3.923535156249983],[-159.27475585937503,3.796582031250054],[-159.40903320312503,3.87324218750004],[-159.3390625,3.923535156249983]]]]},"properties":{"name":"Kiribati","childNum":2}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[126.32695312500002,33.2236328125],[126.16562500000012,33.31201171875],[126.33769531250002,33.46040039062501],[126.90117187500002,33.51513671874997],[126.87285156250002,33.34116210937498],[126.32695312500002,33.2236328125]]],[[[126.23369140625002,34.370507812499994],[126.12285156250002,34.443945312500034],[126.34384765625012,34.544921875],[126.23369140625002,34.370507812499994]]],[[[126.17197265625006,34.73115234375001],[126.00751953125004,34.86748046874999],[126.07841796875002,34.914843750000045],[126.17197265625006,34.73115234375001]]],[[[128.0658203125,34.80585937500004],[128.05468750000003,34.70805664062502],[127.87343750000005,34.73496093749998],[127.8322265625001,34.87451171875],[128.0658203125,34.80585937500004]]],[[[128.74101562500007,34.798535156249955],[128.64667968750004,34.73686523437502],[128.48925781250003,34.86528320312496],[128.66796875000003,35.0087890625],[128.74101562500007,34.798535156249955]]],[[[126.52070312500004,37.73681640625003],[126.516015625,37.60468750000001],[126.42333984375003,37.62363281250006],[126.41162109374997,37.82265625000002],[126.52070312500004,37.73681640625003]]],[[[128.37460937500012,38.6234375],[129.41826171875002,37.059033203124955],[129.40351562500004,36.052148437499994],[129.57285156250006,36.05053710937503],[129.4191406250001,35.49785156249996],[129.07675781250006,35.12270507812502],[128.5109375000001,35.10097656250002],[128.44394531250012,34.87036132812503],[128.03623046875006,35.02197265625],[127.71484374999997,34.95468749999998],[127.71542968750012,34.72104492187498],[127.40429687499997,34.823095703125006],[127.47910156250012,34.625244140625],[127.324609375,34.463281249999966],[127.17343750000006,34.54614257812497],[127.24707031249997,34.755126953125],[126.89746093749997,34.438867187499966],[126.75478515625005,34.511865234374994],[126.53144531250004,34.31425781249999],[126.26445312500002,34.67324218750002],[126.52451171875006,34.697900390624966],[126.59335937500012,34.824365234374994],[126.42070312500002,34.823388671874966],[126.29111328125012,35.154150390625034],[126.61406250000007,35.57099609375004],[126.4884765625001,35.647070312500006],[126.75302734375006,35.871972656249994],[126.5404296875,36.166162109374966],[126.4876953125,36.69379882812498],[126.18085937500004,36.69160156249998],[126.16054687500005,36.77192382812501],[126.48701171875004,37.00747070312502],[126.78447265625007,36.94843749999998],[126.87207031249997,36.82446289062506],[126.97685546875002,36.93940429687501],[126.74638671875002,37.19355468750001],[126.63388671875012,37.78183593750006],[127.09033203125003,38.28388671875001],[128.03896484375,38.30854492187498],[128.37460937500012,38.6234375]]]]},"properties":{"name":"Korea","childNum":7}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[48.27539062499997,29.624316406250017],[48.17968750000003,29.611425781250063],[48.081445312499994,29.798925781250063],[48.1847656250001,29.978857421875034],[48.348242187500006,29.78266601562504],[48.27539062499997,29.624316406250017]]],[[[48.442480468750006,28.542919921874983],[47.671289062499994,28.53315429687504],[47.433203125,28.989550781250017],[46.53144531250004,29.09624023437499],[46.69375,29.259667968749966],[46.76933593750002,29.347460937500017],[46.90585937500006,29.5375],[47.14824218750002,30.0009765625],[47.64375,30.097314453125023],[47.75390624999997,30.076611328124955],[47.97871093750004,29.98281250000005],[48.00566406250002,29.835791015625034],[48.143457031249994,29.57246093750001],[47.96962890625005,29.61669921874997],[47.72265624999997,29.393017578124955],[48.0514648437501,29.355371093750023],[48.442480468750006,28.542919921874983]]]]},"properties":{"name":"Kuwait","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[102.12744140625011,22.37919921874999],[102.58251953125006,21.904296875000057],[102.66201171875008,21.676025390625057],[102.73857421875005,21.677929687500125],[102.77109375000015,21.70966796875001],[102.79824218750014,21.797949218750034],[102.81591796875,21.807373046875],[102.94960937500008,21.681347656250068],[102.85117187500009,21.26591796874999],[102.8837890625,21.202587890625068],[103.1044921875,20.89165039062499],[103.21074218749999,20.840625],[103.46357421874995,20.779833984375102],[103.6350585937501,20.697070312500102],[104.10136718750005,20.945507812500125],[104.1953125,20.91396484375008],[104.349609375,20.82109374999999],[104.58320312500001,20.646679687499955],[104.53271484375,20.554882812500125],[104.47861328124998,20.529589843750102],[104.40781250000015,20.485742187500023],[104.36777343750015,20.441406250000057],[104.39218750000015,20.424755859375068],[104.49619140625003,20.41367187499992],[104.61884765624995,20.374511718750114],[104.65644531250001,20.328515624999966],[104.66191406250005,20.289013671875125],[104.67695312500007,20.224707031249977],[104.69873046875006,20.205322265625114],[104.84785156250007,20.202441406250045],[104.88867187500006,20.169091796875023],[104.92919921874994,20.082812500000045],[104.92792968750007,20.01811523437499],[104.81513671875001,19.90400390625001],[104.80175781250011,19.836132812500068],[104.74316406250006,19.754736328124977],[104.58789062500006,19.61875],[104.54628906250014,19.610546875000068],[104.25986328125003,19.685498046875068],[104.06279296875005,19.678417968750068],[104.03203124999999,19.67514648437492],[104.0134765625001,19.646484374999943],[104.05156250000005,19.564160156250068],[104.06289062500002,19.482568359375136],[104.02753906250013,19.420458984375102],[103.93203125000002,19.366064453125034],[103.89638671875002,19.339990234375023],[103.89160156249994,19.30498046874999],[105.146484375,18.650976562499977],[105.14541015625014,18.616796874999977],[105.08701171875015,18.49624023437508],[105.11455078125005,18.405273437500057],[105.45820312500007,18.154296875000057],[105.51855468750011,18.077441406250045],[105.58847656250015,17.983691406249932],[105.69140625,17.737841796874932],[106.00625,17.415283203124943],[106.26953125,17.216796875000057],[106.33339843750002,17.14370117187508],[106.42597656250007,17.00253906250009],[106.50224609374999,16.9541015625],[106.52597656250003,16.876611328125023],[106.53369140625,16.821044921875057],[106.54619140625005,16.650732421874977],[106.65644531250013,16.492626953125125],[106.73955078124999,16.452539062500136],[106.79160156250015,16.490332031249977],[106.83242187500008,16.526269531250023],[106.85107421875,16.515625],[106.89277343750013,16.396533203125102],[106.93066406250006,16.353125],[107.39638671875008,16.04301757812499],[107.39199218750008,15.951660156250057],[107.36064453125005,15.921728515624977],[107.18886718750008,15.838623046875114],[107.16591796875002,15.802490234375],[107.27939453125003,15.618701171875045],[107.33876953125002,15.560498046875125],[107.56425781249999,15.3916015625],[107.62167968750015,15.309863281250045],[107.653125,15.255224609375091],[107.63369140625008,15.18984375000008],[107.58964843749999,15.118457031250102],[107.55527343750009,15.057031250000023],[107.48037109375014,14.979882812500136],[107.5046875000001,14.91591796875008],[107.52451171875003,14.871826171874943],[107.51376953124998,14.817382812500057],[107.51943359375008,14.705078125000114],[107.46513671875005,14.664990234375125],[107.41474609375007,14.56289062500008],[107.37988281250006,14.555322265625136],[107.29267578125007,14.592382812500034],[107.109375,14.416699218749955],[107.06240234375008,14.415771484374943],[107.03017578125008,14.425683593750023],[106.99218749999994,14.39101562500008],[106.93808593750015,14.327343750000068],[106.91318359375003,14.329394531249932],[106.81992187500003,14.314697265624943],[106.7834960937501,14.335107421875023],[106.73818359375008,14.387744140625102],[106.66542968750002,14.441308593750023],[106.59921875000003,14.479394531250136],[106.56367187500007,14.505078125000011],[106.53115234375002,14.549414062499977],[106.50146484375,14.578222656250034],[106.22539062500005,14.476220703125023],[106.1907226562501,14.388134765625011],[106.16523437500007,14.372363281249989],[106.00839843750009,14.357177734375114],[105.97890625000014,14.343017578125057],[106.00410156250013,14.262890625000068],[106.09667968750011,14.127099609375136],[106.12470703124995,14.049121093750045],[106.06679687500008,13.921191406250102],[105.90449218750007,13.924511718750068],[105.83144531250008,13.976611328124989],[105.73974609375006,14.084960937500057],[105.5315429687501,14.156152343750023],[105.35019531250009,14.109570312500125],[105.24570312500015,14.200537109374977],[105.20703125000006,14.259375],[105.18554687499994,14.319091796875],[105.18330078125001,14.346240234374989],[105.24365234375006,14.367871093749955],[105.34218750000008,14.416699218749955],[105.42265624999993,14.471630859374955],[105.47558593750006,14.530126953124977],[105.49736328125005,14.590673828125034],[105.52304687500015,14.843310546874989],[105.54667968749999,14.932470703125034],[105.53339843750013,15.041601562500091],[105.49042968750007,15.127587890625023],[105.49042968750007,15.256591796875],[105.615625,15.488281249999943],[105.63886718750013,15.585937499999943],[105.64101562500002,15.656542968749932],[105.62207031250006,15.699951171875114],[105.39892578125011,15.829882812500102],[105.40625,15.987451171875023],[105.33066406250003,16.037890625000045],[105.1487304687501,16.09355468749999],[105.04716796874999,16.16025390625009],[104.81933593749994,16.466064453125057],[104.75058593750015,16.647558593750034],[104.74355468750014,16.884375],[104.75898437500013,17.0771484375],[104.81601562499998,17.30029296875],[104.73964843750008,17.461669921875],[104.428125,17.698974609375057],[104.32265625000002,17.815820312500023],[104.19619140625002,17.988378906250034],[104.04873046875002,18.216699218749966],[103.94960937500008,18.318994140625023],[103.89882812500002,18.295312500000023],[103.79228515624999,18.31650390625009],[103.62968750000005,18.382568359375057],[103.48798828124995,18.41816406250001],[103.36699218750005,18.42333984375],[103.28828124999995,18.408398437499955],[103.25175781249999,18.373486328125125],[103.24892578125014,18.338964843750034],[103.27958984374999,18.304980468750045],[103.26318359375,18.278466796875136],[103.19970703125006,18.25947265625001],[103.14853515625009,18.221728515624932],[103.09121093750014,18.13823242187499],[103.05136718750003,18.02851562500001],[102.80742187500005,17.945556640625],[102.71757812500005,17.892236328125136],[102.67519531250014,17.851757812500068],[102.68007812500008,17.824121093750136],[102.66064453125,17.8179687499999],[102.61679687500015,17.833349609375034],[102.59824218750009,17.926757812500057],[102.55253906249999,17.965087890625057],[102.4587890625001,17.984619140624943],[102.35185546874999,18.045947265625045],[102.14824218750005,18.203857421875057],[102.10146484375014,18.21064453125001],[102.03457031250002,18.169824218750023],[101.94746093750001,18.081494140624955],[101.87548828125011,18.046435546874932],[101.81865234375005,18.064648437500125],[101.77480468750002,18.033398437500125],[101.6875,17.889404296875114],[101.56367187500001,17.820507812500125],[101.55507812500002,17.812353515625034],[101.41367187500015,17.71875],[101.16748046875011,17.4990234375],[101.10517578125001,17.479541015625102],[100.9084960937501,17.583886718750023],[101.14394531250008,18.14262695312499],[101.1375,18.286865234375057],[101.0505859375001,18.407031250000045],[101.04697265625003,18.441992187500034],[101.28632812499995,18.977148437500034],[101.19755859374999,19.327929687500045],[101.22080078125015,19.486621093750045],[101.21191406250011,19.548339843750057],[100.51357421875008,19.553466796875],[100.39765625000013,19.756103515625057],[100.51953125000006,20.177929687500068],[100.31796875000003,20.385888671875136],[100.2180664062501,20.339599609375114],[100.13974609375015,20.245410156250102],[100.11494140625007,20.25766601562492],[100.12246093750002,20.316650390625057],[100.12968750000005,20.372216796875023],[100.1838867187501,20.589111328124943],[100.2493164062501,20.730273437499932],[100.32607421875008,20.795703124999932],[100.40742187499995,20.823242187500057],[100.56513671875013,20.82509765625008],[100.62294921875002,20.85957031250001],[100.61767578125,20.87924804687509],[100.54931640625011,20.884228515625068],[100.5222656250001,20.921923828125102],[100.53613281250006,20.992382812500068],[100.703125,21.25136718750008],[101.0803710937501,21.46865234375008],[101.13886718750013,21.567480468749977],[101.19667968750002,21.522070312499977],[101.17539062500009,21.407519531250102],[101.21992187500013,21.342431640625136],[101.21181640625008,21.278222656250023],[101.22441406249999,21.22373046874992],[101.24785156249993,21.197314453125045],[101.28144531250007,21.184130859375045],[101.44355468750001,21.230810546874977],[101.54238281250008,21.234277343750136],[101.70478515625013,21.150146484375057],[101.728125,21.15639648437508],[101.78349609374999,21.204150390625045],[101.8005859375001,21.212597656249955],[101.7229492187501,21.314941406250057],[101.74726562500007,21.60576171874999],[101.7439453125001,21.77797851562508],[101.73652343750001,21.826513671874977],[101.52451171874998,22.253662109375],[101.56787109375011,22.2763671875],[101.6199218750001,22.327441406250102],[101.67148437500009,22.462304687500023],[101.70751953125,22.486572265625],[101.73876953125011,22.495263671874966],[101.75996093750001,22.490332031250034],[101.841796875,22.388476562500102],[102.02441406250006,22.439208984375114],[102.09150390625007,22.412255859375136],[102.12744140625011,22.37919921874999]]]},"properties":{"name":"Lao PDR","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[35.869140625,33.43173828125],[35.411230468750006,33.07568359375],[35.10859375000001,33.08369140625],[35.64785156250002,34.2482421875],[35.97626953125001,34.629199218749996],[36.383886718750006,34.65791015625],[36.32988281250002,34.499609375],[36.50439453125,34.432373046875],[36.5849609375,34.221240234374996],[36.27783203125,33.92529296875],[36.36503906250002,33.83935546875],[35.98613281250002,33.75263671875],[36.03447265625002,33.58505859375],[35.869140625,33.43173828125]]]},"properties":{"name":"Lebanon","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-8.486425781249977,7.558496093749994],[-8.408740234374989,7.411816406249997],[-8.324511718749989,6.920019531249991],[-8.587890625,6.490527343749989],[-8.287109375,6.319042968749997],[-7.981591796874994,6.2861328125],[-7.888623046874983,6.23486328125],[-7.800927734374994,6.038916015624991],[-7.730371093749994,5.919042968749991],[-7.636132812499994,5.90771484375],[-7.454394531249989,5.84130859375],[-7.39990234375,5.550585937499989],[-7.585058593749977,4.916748046875],[-7.574658203124983,4.572314453124989],[-7.544970703124989,4.351318359375],[-8.259033203125,4.589990234374994],[-9.132177734374977,5.054638671874997],[-10.2763671875,6.07763671875],[-11.291601562499977,6.688232421875],[-11.507519531249983,6.906542968749989],[-11.267675781249977,7.232617187499997],[-10.878076171874994,7.538232421874994],[-10.6474609375,7.759375],[-10.570849609374989,8.071142578124991],[-10.516748046874994,8.125292968749989],[-10.359814453124983,8.187939453124997],[-10.283203125,8.485156249999989],[-10.233056640624994,8.488818359374989],[-10.147412109374983,8.519726562499997],[-10.064355468749994,8.429882812499997],[-9.781982421875,8.537695312499991],[-9.518261718749983,8.34609375],[-9.369140625,7.703808593749997],[-9.463818359374983,7.415869140624991],[-9.11757812499999,7.215917968749991],[-8.8896484375,7.2626953125],[-8.659765624999977,7.688378906249994],[-8.486425781249977,7.558496093749994]]]},"properties":{"name":"Liberia","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[25.150488281250006,31.654980468749997],[24.85273437500001,31.334814453125],[24.96142578125,30.678515625],[24.703222656250006,30.201074218749994],[24.980273437500017,29.181884765625],[24.980273437500017,25.5888671875],[24.980273437500017,21.995849609375],[24.9794921875,20.002587890624994],[23.980273437500017,19.99594726562499],[23.980273437500017,19.496630859375003],[20.14765625000001,21.38925781249999],[15.984082031250011,23.445214843749994],[14.97900390625,22.99619140624999],[14.215527343750011,22.619677734375003],[13.48125,23.18017578125],[11.967871093750006,23.517871093750003],[11.507617187500017,24.314355468749994],[10.686132812500006,24.55136718749999],[10.395898437500023,24.485595703125],[10.255859375,24.591015625],[10.000683593750011,25.332080078125003],[9.4482421875,26.067138671875],[9.491406250000011,26.333740234375],[9.883203125000023,26.630810546874997],[9.74755859375,27.330859375],[9.916015625,27.785693359374996],[9.805273437500006,29.176953125],[9.310253906250011,30.115234375],[9.51875,30.229394531249994],[9.89501953125,30.3873046875],[9.932519531250023,30.425341796874996],[10.059765625000011,30.580078125],[10.21640625,30.783203125],[10.114941406250011,31.463769531249994],[10.274609375000011,31.684960937499994],[10.475781250000011,31.736035156249997],[10.60888671875,31.929541015625],[10.826367187500011,32.0806640625],[11.005175781250017,32.172705078125],[11.168261718750017,32.256738281249994],[11.358007812500006,32.34521484375],[11.504980468750006,32.413671875],[11.535937500000017,32.47333984375],[11.533789062500006,32.524951171874996],[11.453906250000017,32.642578125],[11.453906250000017,32.781689453125],[11.459179687500011,32.897363281249994],[11.467187500000023,32.965722656249994],[11.504589843750011,33.181933593749996],[11.657128906250023,33.118896484375],[11.8134765625,33.093701171875],[12.279882812500006,32.858544921874994],[12.753515625,32.801074218749996],[13.283496093750017,32.9146484375],[15.176562500000017,32.391162109374996],[15.705957031250023,31.426416015624994],[17.830468750000023,30.927587890625],[18.669824218750023,30.415673828124994],[19.12373046875001,30.26611328125],[19.713281250000023,30.48837890625],[20.11152343750001,30.963720703125],[19.926367187500006,31.817529296874994],[20.121484375000023,32.21875],[20.62109375,32.58017578125],[21.63593750000001,32.937304687499996],[22.187402343750023,32.918261718749996],[23.090625,32.61875],[23.10625,32.331445312499994],[23.28632812500001,32.213818359375],[24.129687500000017,32.009228515625],[24.878515625,31.984277343749994],[25.150488281250006,31.654980468749997]]]},"properties":{"name":"Libya","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-60.89521484375,13.821972656249997],[-60.951416015625,13.717578125],[-61.073144531249994,13.865576171874991],[-60.908105468749994,14.09335937499999],[-60.89521484375,13.821972656249997]]]},"properties":{"name":"Saint Lucia","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[79.87480468750002,9.050732421875026],[79.90371093750005,8.975],[79.74765625000006,9.104589843749991],[79.87480468750002,9.050732421875026]]],[[[79.98232421875,9.812695312500011],[80.25283203125005,9.796337890625054],[80.71113281250004,9.366357421875023],[81.226953125,8.50551757812498],[81.37285156250002,8.431445312499989],[81.42216796875007,8.147851562500023],[81.87412109375012,7.288330078124986],[81.86142578125012,6.901269531249994],[81.63740234375004,6.425146484374991],[80.72412109375003,5.97905273437496],[80.26738281250007,6.009765625],[80.09531250000012,6.153173828125006],[79.859375,6.829296874999983],[79.71298828125012,8.18232421875004],[79.74980468750007,8.294238281250003],[79.78349609375007,8.018457031250051],[79.92890625000004,8.899218749999974],[80.09960937499997,9.209960937500043],[80.08632812500005,9.577832031250026],[80.42832031250006,9.480957031250014],[80.04580078125005,9.649902343749972],[79.98232421875,9.812695312500011]]]]},"properties":{"name":"Sri Lanka","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[28.646875,-30.1265625],[28.39208984375,-30.147558593750006],[28.128710937500017,-30.52509765625001],[28.05683593750001,-30.63105468750001],[27.753125,-30.6],[27.364062500000017,-30.27919921875001],[27.19355468750001,-29.94130859375001],[27.056933593750017,-29.625585937500006],[27.29453125,-29.519335937500003],[27.73554687500001,-28.940039062500006],[27.959863281250023,-28.873339843750003],[28.084375,-28.77998046875001],[28.23261718750001,-28.701269531250006],[28.471875,-28.615820312500006],[28.583398437500023,-28.594140625],[28.625781250000017,-28.58173828125001],[29.301367187500006,-29.08984375],[29.38671875,-29.31972656250001],[29.34882812500001,-29.441992187500006],[29.293554687500006,-29.56689453125],[29.1421875,-29.700976562500003],[29.098046875000023,-29.919042968750006],[28.646875,-30.1265625]]]},"properties":{"name":"Lesotho","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[20.957812500000074,55.27890625000006],[20.89980468750008,55.286669921875045],[21.11484375,55.61650390624999],[20.957812500000074,55.27890625000006]]],[[[25.573046875000017,54.139892578125],[25.497363281250045,54.17524414062501],[25.52734375000003,54.21513671874996],[25.505664062500045,54.26494140624999],[25.46113281250004,54.29277343749996],[25.179492187500017,54.214257812499966],[25.111425781250006,54.15493164062505],[25.04609375000004,54.13305664062503],[24.869531250000023,54.14516601562502],[24.82568359374997,54.118994140625006],[24.78925781250001,53.99824218750001],[24.768164062499977,53.97465820312499],[24.31796875,53.892968749999966],[24.236621093750045,53.91997070312496],[24.19130859375005,53.95043945312503],[23.559082031250057,53.91982421875002],[23.484667968750074,53.939794921875006],[23.453613281250057,54.14345703125002],[23.3701171875,54.20048828124999],[23.282324218750063,54.240332031250034],[23.17031250000008,54.28144531249998],[23.0875,54.299462890624994],[23.042187500000068,54.30419921875],[23.01552734375005,54.34833984375001],[22.976757812500068,54.36635742187505],[22.89394531250008,54.390527343749994],[22.82373046874997,54.39580078124999],[22.766210937499977,54.356787109375034],[22.679882812500068,54.493017578125006],[22.684472656250023,54.56293945312504],[22.82470703125,54.87128906249998],[22.56728515625005,55.05913085937496],[22.072363281250034,55.06367187499998],[21.235742187500023,55.26411132812498],[21.237890625000034,55.455029296874955],[21.06191406250005,55.81342773437498],[21.053808593750006,56.02294921875003],[21.04609375000004,56.07006835937503],[21.31464843750004,56.18813476562502],[21.65351562500004,56.314550781250006],[22.084570312500034,56.40673828125006],[22.875585937500063,56.39643554687501],[22.96826171875003,56.38041992187502],[23.042968750000057,56.324072265625006],[23.119824218749983,56.330664062500006],[23.195898437500034,56.36713867187498],[24.120703125000063,56.26425781249998],[24.90302734375001,56.398193359375],[25.069921875,56.20039062500004],[25.663183593750063,56.104833984375006],[26.593554687500074,55.66752929687502],[26.590820312500057,55.62265625],[26.56660156250001,55.546484375000034],[26.51923828125004,55.448144531249994],[26.469531250000045,55.371923828125006],[26.457617187500006,55.342480468749955],[26.49531250000004,55.31801757812502],[26.68125,55.30644531249999],[26.76015625000008,55.29335937499999],[26.775683593750045,55.27309570312502],[26.601171875000034,55.130175781250045],[26.291796875000074,55.13959960937501],[26.250781250000045,55.12451171875006],[26.175195312500023,55.003271484375034],[26.092968750000068,54.96230468750005],[25.964453124999977,54.947167968749966],[25.85927734375005,54.91928710937498],[25.722460937500074,54.71787109374998],[25.731640625000068,54.59038085937502],[25.72480468750001,54.564257812500045],[25.68515625,54.53579101562502],[25.62031250000004,54.46040039062501],[25.56757812500004,54.377050781250006],[25.54736328125,54.33183593750002],[25.55751953125005,54.310693359374994],[25.702539062499994,54.29296875],[25.765234374999977,54.179785156250034],[25.573046875000017,54.139892578125]]]]},"properties":{"name":"Lithuania","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[6.4873046875,49.798486328124994],[6.344335937500006,49.452734375],[6.181054687500023,49.498925781249994],[6.119921875000017,49.485205078125],[6.074121093750023,49.454638671874996],[6.011425781250011,49.445458984374994],[5.95947265625,49.454638671874996],[5.928906250000011,49.4775390625],[5.9013671875,49.48974609375],[5.823437500000011,49.505078125],[5.789746093750011,49.53828125],[5.776710379464286,49.639953962053575],[5.744042968750023,49.91962890625],[5.7880859375,49.961230468749996],[5.8173828125,50.0126953125],[5.866894531250011,50.0828125],[5.976269531250011,50.1671875],[6.089062500000011,50.154589843749996],[6.110058593750011,50.123779296875],[6.116503906250017,50.120996093749994],[6.109765625000023,50.034375],[6.13818359375,49.97431640625],[6.204882812500017,49.91513671875],[6.272327008928583,49.887234933035714],[6.4873046875,49.798486328124994]]]},"properties":{"name":"Luxembourg","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[28.14794921875,56.142919921875],[27.576757812500006,55.798779296875],[27.052539062500017,55.83056640625],[26.593554687500017,55.667529296874996],[25.663183593750006,56.104833984375],[25.069921875,56.200390625],[24.90302734375001,56.398193359375],[24.120703125,56.2642578125],[23.81269531250001,56.329248046875],[23.195898437500006,56.367138671875],[23.11982421875001,56.3306640625],[23.04296875,56.324072265625],[22.875585937500006,56.396435546875],[22.084570312500006,56.40673828125],[21.730566406250006,56.325976562499996],[21.65351562500001,56.31455078125],[21.31464843750001,56.188134765625],[21.04609375000001,56.070068359375],[21.0712890625,56.82373046875],[21.72871093750001,57.57099609375],[22.554589843750023,57.724267578125],[23.28730468750001,57.08974609375],[23.647753906250017,56.971044921875],[24.382617187500017,57.250048828124996],[24.322558593750017,57.87060546875],[24.3625,57.866162109375],[24.458886718750023,57.907861328125],[25.11103515625001,58.063427734375],[25.27265625000001,58.009375],[25.66015625,57.920166015625],[26.29804687500001,57.60107421875],[26.532617187500023,57.531005859375],[26.96601562500001,57.609130859375],[27.187109375,57.538330078125],[27.326562500000023,57.52548828125],[27.4697265625,57.5240234375],[27.538671875,57.42978515625],[27.796875,57.316943359374996],[27.82861328125,57.293310546875],[27.838281250000023,57.247705078125],[27.83027343750001,57.194482421875],[27.639453125000017,56.845654296875],[27.806054687500023,56.86708984375],[27.8486328125,56.85341796875],[27.89208984375,56.741064453125],[28.00751953125001,56.599853515625],[28.103125,56.545703125],[28.11083984375,56.510693359375],[28.169238281250017,56.386865234375],[28.191699218750017,56.315576171875],[28.202050781250023,56.260400390625],[28.14794921875,56.142919921875]]]},"properties":{"name":"Latvia","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[28.2125,45.450439453125],[28.07470703125,45.598974609375],[28.23945312500001,46.6408203125],[28.07177734375,46.978417968749994],[27.614062500000017,47.34052734375],[26.980761718750017,48.155029296875],[26.618945312500017,48.25986328125],[26.640429687500017,48.294140625],[26.847070312500023,48.387158203125],[26.90058593750001,48.371923828125],[27.228515625,48.371435546875],[27.549218750000023,48.477734375],[28.34052734375001,48.144433593749994],[28.42304687500001,48.146875],[29.125390625000023,47.96455078125],[29.134863281250006,47.489697265625],[29.455664062500006,47.292626953124994],[29.57197265625001,46.964013671874994],[29.7197265625,46.88291015625],[29.877832031250023,46.82890625],[29.942480468750006,46.723779296874994],[29.93476562500001,46.625],[29.92431640625,46.538867187499996],[30.13105468750001,46.423095703125],[30.07568359375,46.377832031249994],[29.878027343750006,46.360205078125],[29.837890625,46.350537109375],[29.458789062500017,46.453759765624994],[29.30488281250001,46.466601562499996],[29.22382812500001,46.376953125],[29.20458984375,46.379345703125],[29.20078125,46.50498046875],[29.18623046875001,46.523974609374996],[29.146289062500017,46.526904296874996],[28.958398437500023,46.45849609375],[28.92744140625001,46.424121093749996],[28.930566406250023,46.362255859375],[28.94375,46.288427734375],[29.00625,46.17646484375],[28.971875,46.12763671875],[28.94775390625,46.049951171874994],[28.849511718750023,45.978662109374994],[28.73876953125,45.937158203124994],[28.729296875000017,45.852001953125],[28.667578125,45.793847656249994],[28.562304687500017,45.735791015625],[28.491601562500023,45.665771484375],[28.4990234375,45.517724609374994],[28.310351562500017,45.498583984374996],[28.26484375000001,45.48388671875],[28.2125,45.450439453125]]]},"properties":{"name":"Moldova","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[49.936425781249994,-16.90292968750002],[49.82402343750002,-17.08652343750002],[50.02304687500006,-16.6953125],[49.936425781249994,-16.90292968750002]]],[[[48.3421875,-13.363867187500034],[48.21191406250003,-13.385253906249957],[48.191210937500074,-13.259960937500011],[48.308886718750074,-13.198242187499957],[48.3421875,-13.363867187500034]]],[[[49.53828125000004,-12.432128906250014],[49.9375,-13.072265624999957],[50.23535156249997,-14.732031249999963],[50.482714843750074,-15.385644531249994],[50.20898437499997,-15.960449218750028],[50.02041015625005,-15.801757812500028],[49.89257812500003,-15.457714843750011],[49.664355468750074,-15.521582031249977],[49.83906250000004,-16.486523437499997],[49.76718750000006,-16.815136718749983],[49.44931640625006,-17.240625],[49.477832031250074,-17.89853515624999],[49.362890625,-18.336328125],[47.934472656249994,-22.393945312500023],[47.55800781250005,-23.874609374999963],[47.17734375,-24.787207031249977],[46.72851562499997,-25.14990234374997],[46.15869140624997,-25.230371093750023],[45.5080078125001,-25.56318359374997],[45.2057617187501,-25.57050781250004],[44.0353515625001,-24.995703125],[43.670019531250006,-24.30029296875],[43.722265625,-23.529687500000037],[43.2648437500001,-22.38359375],[43.29052734374997,-21.93251953124998],[43.50185546875005,-21.356445312499957],[43.800195312499994,-21.179199218749986],[44.40468750000005,-19.922070312500026],[44.44882812500006,-19.42871093749997],[44.23876953124997,-19.075195312499986],[44.23310546875004,-18.740625],[44.04003906249997,-18.288476562500023],[43.979394531249994,-17.3916015625],[44.42138671874997,-16.70263671874997],[44.476171875,-16.217285156249957],[44.90917968749997,-16.174511718750026],[45.2228515625001,-15.95048828124996],[45.3421875,-16.03671875000002],[45.598242187500006,-15.992578125],[45.70019531249997,-15.813769531249989],[46.157519531250074,-15.738281249999972],[46.3996093750001,-15.924609375000017],[46.331445312499994,-15.713671875000031],[46.47509765625003,-15.513476562500003],[46.942285156249994,-15.219042968749974],[47.09921875,-15.43417968750002],[47.092578125000074,-15.150097656249969],[47.35195312500005,-14.766113281249986],[47.46474609375005,-14.713281249999966],[47.47832031250002,-15.009375],[47.77402343750006,-14.63671875],[47.964160156250074,-14.672558593750026],[47.773339843749994,-14.369921875],[47.995507812499994,-13.960449218749986],[47.88359375000002,-13.807519531250009],[47.94101562500006,-13.662402343750017],[48.03984375000002,-13.596289062499963],[48.25527343750005,-13.719335937499977],[48.796484375,-13.267480468750023],[48.91943359375003,-12.839062499999969],[48.78632812500004,-12.470898437500011],[48.931738281250006,-12.4390625],[49.20703124999997,-12.079589843749957],[49.53828125000004,-12.432128906250014]]]]},"properties":{"name":"Madagascar","childNum":3}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-91.68369140624998,18.677343750000034],[-91.81611328124995,18.675878906250006],[-91.53671874999998,18.760009765625],[-91.68369140624998,18.677343750000034]]],[[[-86.93964843750001,20.303320312500006],[-86.97797851562498,20.489794921875074],[-86.76328124999995,20.579052734374955],[-86.93964843750001,20.303320312500006]]],[[[-106.50224609374999,21.61083984375003],[-106.60703124999993,21.561474609374983],[-106.63935546874995,21.697851562499977],[-106.50224609374999,21.61083984375003]]],[[[-110.56738281249994,25.003466796875017],[-110.5388671875,24.89155273437504],[-110.69926757812499,25.081445312499994],[-110.56738281249994,25.003466796875017]]],[[[-112.05727539062498,24.545703125000017],[-112.29677734375002,24.789648437500063],[-112.15942382812501,25.28564453125003],[-112.19501953124998,24.841064453125057],[-112.05727539062498,24.545703125000017]]],[[[-111.10029296874998,26.020605468750006],[-111.224658203125,25.83588867187504],[-111.18291015625002,26.040625],[-111.10029296874998,26.020605468750006]]],[[[-115.17060546875001,28.06938476562496],[-115.35292968750002,28.103955078124983],[-115.23354492187495,28.36835937500004],[-115.17060546875001,28.06938476562496]]],[[[-112.20307617187503,29.00532226562504],[-112.27841796875,28.769335937500017],[-112.51406249999997,28.847607421874955],[-112.42353515625,29.203662109375017],[-112.28505859374994,29.240429687499955],[-112.20307617187503,29.00532226562504]]],[[[-113.15561523437502,29.05224609375],[-113.49633789062497,29.30761718749997],[-113.58720703125002,29.57304687499996],[-113.20214843749999,29.301855468750034],[-113.15561523437502,29.05224609375]]],[[[-97.14624023437494,25.961474609375045],[-97.66767578124995,24.389990234374977],[-97.84248046874995,22.510302734375017],[-97.76328124999998,22.105859374999966],[-97.31450195312496,21.56420898437503],[-97.40917968749997,21.272558593750034],[-97.38344726562497,21.56669921874999],[-97.75380859375002,22.02666015624999],[-97.18632812499996,20.717041015625],[-96.45605468749994,19.869775390624966],[-96.28955078124994,19.34375],[-95.778125,18.805517578125034],[-95.92036132812495,18.81958007812497],[-95.62680664062503,18.690576171874994],[-95.71982421874998,18.768359375000017],[-95.18183593749995,18.700732421875017],[-94.79814453124996,18.51459960937501],[-94.45976562499993,18.166650390624994],[-93.55234375,18.430468750000017],[-92.88476562499997,18.468652343749966],[-92.44101562499998,18.67529296874997],[-91.97377929687502,18.715869140625074],[-91.91357421875,18.52851562500001],[-91.53398437499993,18.45654296875],[-91.27524414062498,18.62446289062501],[-91.34306640624996,18.900585937499955],[-91.43666992187502,18.889794921874966],[-90.73925781249994,19.352246093749955],[-90.69316406249996,19.729882812499966],[-90.49169921874997,19.94677734375003],[-90.353125,21.009423828124966],[-89.81977539062495,21.274609374999983],[-88.46669921874997,21.569384765625017],[-88.0068359375,21.604052734375045],[-87.25087890625,21.44697265625004],[-87.18828124999993,21.546435546875045],[-87.36850585937498,21.57373046875],[-87.034765625,21.592236328124955],[-86.824072265625,21.421679687500017],[-86.77177734374999,21.150537109375023],[-86.92622070312493,20.786474609375034],[-87.42138671875,20.23139648437501],[-87.44174804687498,19.861523437499983],[-87.68769531249998,19.63710937499999],[-87.6453125,19.55390625000001],[-87.42475585937498,19.583349609375063],[-87.65869140625003,19.352343750000074],[-87.65576171874997,19.25786132812499],[-87.50107421874998,19.287792968749983],[-87.76181640624998,18.446142578125006],[-87.88198242187497,18.27387695312501],[-88.05644531249996,18.524462890625074],[-88.03173828125,18.838916015625017],[-88.29565429687494,18.47241210937503],[-88.52299804687499,18.445898437500063],[-88.80634765624998,17.965527343749983],[-89.13354492187503,17.970800781249977],[-89.16147460937503,17.81484375],[-90.98916015624997,17.81640624999997],[-90.99296874999993,17.25244140625],[-91.19550781249998,17.254101562499983],[-91.40961914062501,17.255859375],[-90.975830078125,16.867822265624994],[-90.710693359375,16.708105468750034],[-90.65996093749996,16.630908203125045],[-90.634375,16.565136718749955],[-90.63408203125002,16.51074218749997],[-90.57578124999995,16.467822265625017],[-90.47109374999994,16.439550781250034],[-90.41699218750003,16.391015625000023],[-90.41699218750003,16.351318359375],[-90.45014648437493,16.261376953124994],[-90.45986328124997,16.16235351562497],[-90.44716796874994,16.07270507812501],[-90.52197265625,16.07119140625005],[-90.70322265624998,16.07104492187503],[-90.97958984374998,16.07080078124997],[-91.433984375,16.070458984374994],[-91.736572265625,16.070166015625006],[-91.95722656250001,15.703222656250034],[-92.08212890624998,15.495556640625011],[-92.18715820312497,15.320898437499963],[-92.07480468749998,15.074218749999972],[-92.09873046874998,15.026757812499994],[-92.14423828125001,15.001953125],[-92.158544921875,14.963574218749997],[-92.23515625,14.545410156249986],[-93.91606445312493,16.053564453125006],[-94.374169921875,16.284765625000034],[-94.426416015625,16.22626953125001],[-94.00126953124996,16.018945312499966],[-94.66152343750002,16.20190429687503],[-94.58710937499995,16.315820312499966],[-94.79082031249999,16.28715820312499],[-94.85869140624996,16.41972656249999],[-95.02084960937503,16.277636718750017],[-94.79941406249995,16.20966796875001],[-95.134375,16.17695312500001],[-96.21357421874993,15.693066406250011],[-96.80795898437495,15.726416015624977],[-97.18466796874998,15.909277343750006],[-97.75478515624994,15.966845703125017],[-98.52031249999993,16.30483398437505],[-98.76220703125,16.534765624999977],[-99.69067382812499,16.719628906249994],[-100.847802734375,17.20048828124999],[-101.91870117187494,17.959765625000045],[-102.69956054687495,18.062841796875006],[-103.44160156249995,18.32539062500001],[-103.91245117187496,18.828466796875006],[-104.9384765625,19.309375],[-105.482080078125,19.97607421875003],[-105.66943359374997,20.385595703124977],[-105.26015625,20.579052734374955],[-105.32705078124994,20.752978515625045],[-105.51083984374999,20.808740234375023],[-105.23706054687499,21.119189453125045],[-105.20869140624998,21.490820312499977],[-105.43144531249997,21.618261718750006],[-105.64912109375001,21.988085937500045],[-105.64550781249999,22.32690429687497],[-105.79179687500003,22.627490234375017],[-106.93549804687497,23.88125],[-107.76494140625002,24.47192382812497],[-107.52724609375001,24.36005859375001],[-107.51191406249998,24.489160156250023],[-107.95117187499994,24.614892578124966],[-108.28076171874994,25.08154296875],[-108.05146484374995,25.067041015624994],[-108.69638671874998,25.382910156250034],[-108.78725585937502,25.53803710937501],[-109.02880859375003,25.48046875000003],[-108.886572265625,25.733447265625045],[-109.19648437499998,25.59252929687503],[-109.38496093750001,25.727148437500006],[-109.42563476562495,26.032568359375063],[-109.19970703125003,26.30522460937499],[-109.11669921874999,26.25273437499996],[-109.27626953125,26.533886718749955],[-109.48286132812498,26.710351562500023],[-109.75478515624995,26.702929687500017],[-109.94399414062495,27.079345703125057],[-110.37729492187495,27.233300781249966],[-110.59267578124995,27.544335937500023],[-110.52988281249995,27.864208984374983],[-111.12138671875002,27.966992187499983],[-112.16176757812495,29.018896484375034],[-113.05766601562496,30.651025390625023],[-113.04672851562495,31.17924804687499],[-113.62348632812494,31.34589843750001],[-113.75942382812501,31.557763671874994],[-113.94775390625001,31.62934570312501],[-114.14931640624995,31.507373046875045],[-114.93359374999994,31.900732421874977],[-114.78989257812498,31.647119140624994],[-114.88188476562499,31.156396484375023],[-114.55048828124997,30.02226562499999],[-113.75546875,29.367480468750017],[-113.49970703124995,28.92670898437501],[-113.20556640624997,28.798779296874955],[-113.09365234375001,28.511767578125017],[-112.870849609375,28.42421875000005],[-112.73403320312501,27.825976562500017],[-112.32919921874996,27.52343750000003],[-111.86264648437495,26.678515625000017],[-111.6994140625,26.58095703125005],[-111.79526367187499,26.8796875],[-111.56967773437495,26.707617187500006],[-111.29160156249996,25.78979492187497],[-110.68676757812501,24.867675781250057],[-110.65932617187502,24.34145507812505],[-110.36743164062497,24.100488281249994],[-110.30375976562497,24.339453125],[-110.02280273437502,24.17460937499999],[-109.6765625,23.66157226562501],[-109.42084960937495,23.480126953124994],[-109.49570312500002,23.159814453125023],[-110.00625,22.894042968750057],[-110.3626953125,23.60493164062501],[-111.68291015625002,24.555810546875023],[-111.80249023437494,24.542529296875074],[-112.07255859374999,24.84003906250001],[-112.06987304687497,25.572851562500006],[-112.37724609374997,26.21391601562496],[-113.02075195312499,26.58325195312497],[-113.15581054687496,26.94624023437504],[-113.27226562499997,26.79096679687501],[-113.59853515625001,26.721289062500034],[-113.84096679687502,26.966503906249983],[-114.44526367187503,27.218164062499994],[-114.53989257812495,27.431103515624955],[-114.99350585937499,27.736035156249983],[-115.03647460937495,27.84184570312496],[-114.57001953124995,27.78393554687497],[-114.30058593749995,27.87299804687501],[-114.30224609375003,27.775732421875006],[-114.0693359375,27.67568359375005],[-114.15839843750003,27.919677734375],[-114.26586914062499,27.934472656249994],[-114.04848632812502,28.42617187499999],[-114.93730468749999,29.35161132812496],[-115.67382812500003,29.756396484375017],[-116.06215820312501,30.80415039062504],[-116.29628906250001,30.97050781249999],[-116.33344726562494,31.202783203124994],[-116.66215820312495,31.56489257812504],[-116.72207031249998,31.734570312499955],[-116.62080078124995,31.85107421874997],[-116.84799804687496,31.997363281250045],[-117.12827148437495,32.533349609374994],[-114.72475585937495,32.71533203125003],[-114.83593749999994,32.50830078125003],[-111.0419921875,31.32421875000003],[-108.21445312499993,31.329443359375034],[-108.21181640625002,31.779345703125017],[-106.44541015624996,31.768408203125006],[-106.14804687499995,31.450927734375],[-104.97880859374996,30.645947265624955],[-104.50400390624995,29.677685546874955],[-104.110595703125,29.386132812499994],[-103.16831054687498,28.998193359374994],[-102.8919921875,29.216406250000034],[-102.61494140624994,29.75234375],[-102.26894531249998,29.871191406250034],[-101.44038085937503,29.77685546875],[-100.75458984375001,29.182519531249994],[-100.29604492187495,28.32768554687499],[-99.50532226562497,27.54833984375003],[-99.45654296874999,27.05668945312496],[-99.10776367187498,26.446923828124994],[-97.37563476562497,25.871826171875],[-97.14624023437494,25.961474609375045]]]]},"properties":{"name":"Mexico","childNum":10}},{"geometry":{"type":"Polygon","coordinates":[[[22.344042968750017,42.31396484375],[22.836816406250023,41.993603515625],[23.00361328125001,41.73984375],[22.916015625,41.336279296875],[22.78388671875001,41.331982421875],[22.72480468750001,41.178515625],[22.603613281250006,41.140185546874996],[22.493554687500023,41.118505859375],[22.184472656250023,41.158642578125],[21.99335937500001,41.13095703125],[21.77949218750001,40.950439453125],[21.627539062500006,40.896337890625],[21.57578125,40.868945312499996],[20.964257812500023,40.849902343749996],[20.709277343750017,40.928369140624994],[20.48896484375001,41.272607421874994],[20.566210937500017,41.873681640624994],[20.725,41.87353515625],[20.778125,42.071044921875],[21.05976562500001,42.171289062499994],[21.28662109375,42.100390625],[21.389550781250023,42.21982421875],[21.560839843750017,42.24765625],[21.5625,42.247509765625],[21.81464843750001,42.303125],[22.344042968750017,42.31396484375]]]},"properties":{"name":"Macedonia","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[4.227636718750006,19.142773437499997],[4.234667968750017,16.996386718750003],[4.121289062500011,16.357714843750003],[3.842968750000011,15.701708984375003],[3.5205078125,15.483105468749997],[3.504296875000023,15.356347656249994],[3.06015625,15.427197265624997],[3.001074218750006,15.340966796874994],[1.300195312500023,15.272265625],[0.947460937500011,14.982128906249997],[0.217480468750011,14.911474609374991],[-0.235888671874989,15.059423828124991],[-0.760449218749983,15.047753906249994],[-1.049560546875,14.81953125],[-1.97304687499999,14.45654296875],[-2.113232421874983,14.16845703125],[-2.586718749999989,14.227587890625003],[-2.873925781249994,13.950732421875003],[-2.950830078124994,13.6484375],[-3.248632812499977,13.658349609374994],[-3.3017578125,13.28076171875],[-3.527636718749989,13.182714843749991],[-3.947314453124989,13.402197265624991],[-4.151025390624994,13.306201171875003],[-4.328710937499977,13.119042968749994],[-4.227099609374989,12.793701171875],[-4.480615234374994,12.672216796874991],[-4.4287109375,12.337597656249997],[-4.699316406249977,12.076171875],[-5.288134765624989,11.827929687499989],[-5.250244140625,11.375781249999989],[-5.490478515625,11.042382812499994],[-5.523535156249977,10.426025390625],[-5.556591796874983,10.43994140625],[-5.694287109374983,10.43320312499999],[-5.843847656249977,10.389550781249994],[-5.896191406249983,10.354736328125],[-5.907568359374977,10.307226562499991],[-6.034570312499994,10.19482421875],[-6.1171875,10.201904296875],[-6.238378906249977,10.261621093749994],[-6.241308593749977,10.279199218749994],[-6.192626953125,10.369433593749989],[-6.190673828125,10.400292968749994],[-6.250244140625,10.717919921874994],[-6.482617187499983,10.561230468749997],[-6.564599609374994,10.58642578125],[-6.654150390624977,10.656445312499997],[-6.676367187499977,10.6337890625],[-6.686132812499977,10.578027343749994],[-6.691992187499977,10.512011718749989],[-6.669335937499994,10.3921875],[-6.693261718749994,10.349462890624991],[-6.950341796874994,10.342333984374989],[-7.01708984375,10.143261718749997],[-7.385058593749989,10.340136718749989],[-7.6611328125,10.427441406249997],[-7.990625,10.1625],[-8.007275390624983,10.321875],[-8.266650390624989,10.485986328124994],[-8.33740234375,10.990625],[-8.666699218749983,11.009472656249997],[-8.398535156249977,11.366552734374991],[-8.822021484375,11.673242187499994],[-8.818310546874983,11.922509765624994],[-9.043066406249977,12.40234375],[-9.395361328124977,12.464648437499989],[-9.358105468749983,12.255419921874989],[-9.754003906249977,12.029931640624994],[-10.274853515624983,12.212646484375],[-10.709228515625,11.898730468749989],[-10.933203124999977,12.205175781249991],[-11.30517578125,12.015429687499989],[-11.502197265625,12.198632812499994],[-11.389404296875,12.404394531249991],[-11.390380859375,12.941992187499991],[-11.634960937499983,13.369873046875],[-11.831689453124994,13.315820312499994],[-12.05419921875,13.633056640625],[-11.960888671874983,13.875292968750003],[-12.019189453124994,14.206494140624997],[-12.228417968749994,14.45859375],[-12.280615234374977,14.809033203124997],[-12.104687499999983,14.745361328125],[-12.08154296875,14.766357421875],[-12.021582031249977,14.804931640625],[-11.76015625,15.425537109375],[-11.675878906249977,15.512060546874991],[-11.502685546875,15.636816406249991],[-11.455224609374994,15.62539062499999],[-10.9482421875,15.151123046875],[-10.696582031249989,15.42265625],[-9.94140625,15.373779296875],[-9.446923828124994,15.458203125],[-9.447705078124983,15.574853515624994],[-9.426562499999989,15.623046875],[-9.3505859375,15.677392578124994],[-9.33544921875,15.525683593750003],[-9.293701171875,15.502832031249994],[-5.5125,15.496289062499997],[-5.359912109374989,16.282861328124994],[-5.509619140624977,16.442041015624994],[-5.628662109375,16.568652343750003],[-5.65625,16.8095703125],[-5.684765624999983,17.058251953124994],[-5.713183593749989,17.306884765625],[-5.74169921875,17.555566406249994],[-5.827099609374983,18.3015625],[-6.026416015624989,20.0421875],[-6.396582031249977,23.274804687499994],[-6.482031249999977,24.020800781250003],[-6.538964843749994,24.51816406249999],[-6.5673828125,24.766796875],[-6.594091796874977,24.99462890625],[-6.287207031249977,24.994824218749997],[-5.959814453124977,24.99497070312499],[-5.640771484374994,24.995166015625003],[-4.822607421874977,24.99560546875],[-1.947900390624994,23.124804687500003],[1.1455078125,21.102246093749997],[1.165722656250011,20.817431640625003],[1.610644531250017,20.555566406249994],[1.685449218750023,20.378369140624997],[3.130273437500023,19.85019531249999],[3.255859375,19.4109375],[3.119726562500006,19.103173828124994],[3.3564453125,18.986621093750003],[4.227636718750006,19.142773437499997]]]},"properties":{"name":"Mali","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[14.566210937499989,35.85273437499998],[14.436425781250023,35.82167968750005],[14.351269531250011,35.978417968749994],[14.566210937499989,35.85273437499998]]]},"properties":{"name":"Malta","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[98.18261718749997,9.933447265625006],[98.11806640625,9.877880859375054],[98.2916992187501,10.051318359375031],[98.18261718749997,9.933447265625006]]],[[[98.20976562500002,10.952734375],[98.27148437499997,10.73989257812498],[98.08046875000005,10.886621093750037],[98.20976562500002,10.952734375]]],[[[98.55380859375012,11.744873046875],[98.52841796875012,11.538671875],[98.43476562500004,11.567089843750026],[98.37646484374997,11.79150390625],[98.55380859375012,11.744873046875]]],[[[98.516015625,11.905029296875028],[98.46621093750005,12.08427734374996],[98.60957031250004,11.956640624999977],[98.516015625,11.905029296875028]]],[[[98.06611328125004,12.389794921875023],[98.00234375000005,12.279003906250011],[97.93867187500004,12.34609375],[98.06611328125004,12.389794921875023]]],[[[98.41396484375005,12.597949218749974],[98.45947265625003,12.473730468749991],[98.3138671875,12.335986328124989],[98.31210937500006,12.678173828124983],[98.41396484375005,12.597949218749974]]],[[[98.31542968749997,13.099072265625026],[98.30917968750012,12.934716796875023],[98.26533203125004,13.202246093749991],[98.31542968749997,13.099072265625026]]],[[[94.80488281250004,15.8193359375],[94.73349609375006,15.823046875000045],[94.82802734375005,15.933007812499966],[94.80488281250004,15.8193359375]]],[[[94.47675781250004,15.945947265625023],[94.41191406250007,15.848388671875057],[94.3878906250001,15.994140624999972],[94.60126953125004,16.205517578124983],[94.47675781250004,15.945947265625023]]],[[[97.575,16.253222656250017],[97.48037109375,16.305712890625045],[97.54199218749997,16.505078124999983],[97.575,16.253222656250017]]],[[[93.6908203125,18.68427734375004],[93.4875,18.867529296875063],[93.74472656250006,18.865527343750017],[93.6908203125,18.68427734375004]]],[[[93.71484374999997,19.558251953124994],[93.94570312500005,19.428613281249966],[93.90195312500012,19.33203125],[93.75585937500003,19.325683593750057],[93.64404296874997,19.49506835937501],[93.71484374999997,19.558251953124994]]],[[[93.49179687500012,19.892578125],[93.51328125000006,19.754785156249994],[93.41289062500002,19.950341796875023],[93.49179687500012,19.892578125]]],[[[93.01015625000005,19.923925781249977],[93.02324218750007,19.82885742187497],[92.91464843750006,20.086474609375045],[93.01015625000005,19.923925781249977]]],[[[101.1388671875001,21.567480468749977],[101.08037109375007,21.468652343749994],[100.703125,21.251367187499966],[100.613671875,21.059326171875],[100.56660156250004,21.038183593750063],[100.53613281250003,20.992382812499955],[100.52226562500007,20.92192382812499],[100.54931640624997,20.884228515624955],[100.61767578125003,20.879248046875006],[100.62294921875005,20.859570312499983],[100.5651367187501,20.825097656249994],[100.4074218750001,20.823242187500057],[100.32607421875005,20.795703125000045],[100.24931640625002,20.730273437500045],[100.18388671875002,20.589111328125057],[100.12968750000002,20.372216796874994],[100.12246093750005,20.316650390625057],[100.0036132812501,20.37958984375001],[99.9542968750001,20.415429687500023],[99.8903320312501,20.424414062499977],[99.72011718750005,20.32543945312497],[99.45888671875005,20.363037109375],[99.48593750000006,20.14985351562501],[99.07421875000003,20.09936523437503],[98.9166992187501,19.77290039062504],[98.37128906250004,19.68916015625004],[98.01503906250005,19.74951171874997],[97.816796875,19.459960937500057],[97.74589843750002,18.58818359374999],[97.37392578125,18.51796875],[97.63222656250005,18.290332031250074],[97.7064453125,17.79711914062503],[98.4388671875,16.975683593750034],[98.66074218750006,16.330419921875006],[98.83544921875003,16.417578125],[98.88828125000006,16.351904296875034],[98.81796875000012,16.180810546874994],[98.59238281250006,16.05068359375005],[98.55693359375007,15.367675781249986],[98.19101562500012,15.204101562499972],[98.20214843749997,14.97592773437502],[98.57001953125004,14.359912109375031],[99.13681640625006,13.716699218749994],[99.12392578125,13.030761718750043],[99.40507812500002,12.547900390625003],[99.61474609374997,11.781201171875026],[99.1901367187501,11.105273437499989],[98.7572265625,10.660937499999974],[98.70253906250005,10.19038085937504],[98.56259765625006,10.034960937499989],[98.46494140625006,10.675830078124989],[98.67558593750007,10.986914062500034],[98.74140625000004,11.591699218749966],[98.87597656250003,11.719726562500028],[98.63632812500006,11.738378906250006],[98.69628906250003,12.225244140624994],[98.6002929687501,12.2453125],[98.67871093749997,12.348486328124963],[98.57597656250002,13.161914062500031],[98.20039062500004,13.980175781250026],[98.14951171875012,13.647607421875037],[98.11064453125007,13.712890625000014],[98.10019531250006,14.161523437500023],[97.90976562500012,14.652685546874991],[98.01875,14.652587890625057],[97.81230468750007,14.858935546874989],[97.7103515625,15.875537109375074],[97.58427734375007,16.019580078125017],[97.72597656250005,16.56855468750004],[97.37587890625005,16.52294921874997],[97.20019531249997,17.095410156249983],[96.85146484375005,17.401025390624994],[96.90859375000005,17.03095703125001],[96.76542968750002,16.710351562499966],[96.43115234374997,16.504931640625045],[96.18906250000012,16.768310546875057],[96.32431640625006,16.444433593750063],[95.76328125000006,16.169042968750006],[95.38955078125005,15.722753906250034],[95.30146484375004,15.756152343749989],[95.34677734375012,16.09760742187501],[95.17695312500004,15.825683593750028],[94.9425781250001,15.818261718750023],[94.89316406250006,16.182812499999955],[94.66152343750005,15.904394531250006],[94.70332031250004,16.511914062499955],[94.4416015625001,16.094384765624966],[94.22382812500004,16.016455078125006],[94.58896484375006,17.5693359375],[94.17070312500007,18.73242187499997],[94.24570312500006,18.741162109374983],[94.07001953125004,18.893408203125006],[94.04492187500003,19.287402343750074],[93.92919921874997,18.89965820312503],[93.70546875000005,19.026904296875017],[93.49306640625005,19.369482421875006],[93.82490234375004,19.238476562499955],[93.99814453125006,19.440869140624983],[93.61171875000005,19.776074218749983],[93.70703125000003,19.912158203125074],[93.25,20.070117187500017],[93.12949218750012,19.858007812500063],[93.00195312499997,20.074853515624994],[93.06679687500005,20.377636718749955],[92.82832031250004,20.177587890625063],[92.89111328124997,20.34033203125],[92.73564453125007,20.56269531250001],[92.72285156250004,20.29560546875004],[92.32412109375,20.791845703125063],[92.17958984375005,21.293115234375023],[92.33056640624997,21.439794921874977],[92.63164062500002,21.306201171875045],[92.5934570312501,21.46733398437499],[92.58281250000002,21.940332031249994],[92.57490234375004,21.978076171875045],[92.68896484374997,22.130957031250006],[92.72099609375002,22.132421875000063],[92.77138671875,22.104785156250017],[92.9645507812501,22.003759765625034],[93.07060546875002,22.20942382812501],[93.16201171875,22.360205078125006],[93.07871093750006,22.71821289062501],[93.20390625000002,23.03701171875005],[93.34941406250007,23.08496093750003],[93.36601562500007,23.132519531249955],[93.32626953125006,24.064208984375057],[93.45214843750003,23.987402343750034],[93.68339843750007,24.00654296875004],[94.07480468750006,23.8720703125],[94.29306640625012,24.321875],[94.37724609375002,24.473730468750006],[94.49316406250003,24.637646484374983],[94.70371093750012,25.097851562499955],[94.55302734375007,25.215722656249994],[94.66777343750007,25.458886718749966],[94.99199218750002,25.77045898437504],[95.01523437500006,25.912939453125006],[95.0929687500001,25.98730468749997],[95.13242187500006,26.041259765625057],[95.12929687500005,26.070410156250034],[95.10839843749997,26.091406250000034],[95.06894531250006,26.19111328125001],[95.0597656250001,26.473974609375006],[95.20146484375007,26.641406250000017],[96.19082031250005,27.26127929687499],[96.79785156249997,27.29619140624999],[96.95341796875002,27.13330078125003],[97.10205078125003,27.11542968750004],[97.10371093750004,27.16333007812503],[96.90195312500012,27.439599609374994],[96.88359375000002,27.514843749999955],[96.96279296875,27.698291015625017],[97.04970703125005,27.760009765625],[97.34355468750002,27.982324218749994],[97.30273437499997,28.08598632812496],[97.3224609375001,28.21796875000004],[97.35644531249997,28.254492187500006],[97.43144531250002,28.353906250000023],[97.53789062500002,28.510205078124983],[97.59921875000006,28.51704101562504],[98.06162109375012,28.185888671874977],[98.29882812499997,27.550097656250045],[98.4525390625,27.6572265625],[98.65117187500007,27.572460937499983],[98.7384765625001,26.785742187500006],[98.68554687499997,26.189355468750023],[98.56406250000006,26.072412109374994],[98.65625,25.86357421874999],[98.33378906250007,25.586767578125006],[98.14287109375007,25.571093750000017],[98.01074218749997,25.292529296875017],[97.8195312500001,25.251855468749994],[97.73789062500006,24.869873046875057],[97.58330078125002,24.77480468750005],[97.53144531250004,24.49169921875003],[97.7082031250001,24.228759765625],[97.56455078125012,23.911035156250023],[98.2125,24.110644531250017],[98.83505859375006,24.121191406250034],[98.67675781250003,23.905078125000045],[98.8322265625001,23.624365234374977],[98.86376953125003,23.191259765625034],[99.41806640625006,23.069238281250023],[99.50712890625002,22.959130859374994],[99.19296875000006,22.12597656249997],[99.9176757812501,22.02802734375001],[99.94072265625007,21.75874023437504],[100.14765625000004,21.480517578125017],[100.60458984375012,21.471777343750006],[101.07978515625004,21.75585937499997],[101.1388671875001,21.567480468749977]]]]},"properties":{"name":"Myanmar","childNum":15}},{"geometry":{"type":"Polygon","coordinates":[[[19.21875,43.449951171875],[19.670996093750006,43.163964843749994],[20.344335937500006,42.827929687499996],[20.054296875,42.760058593749996],[20.06396484375,42.54726562499999],[19.78828125000001,42.476171875],[19.65449218750001,42.628564453124994],[19.280664062500023,42.17255859375],[19.342382812500006,41.869091796875],[18.436328125000017,42.559716796874994],[18.5458984375,42.6416015625],[18.46601562500001,42.777246093749994],[18.44384765625,42.96845703125],[18.46015625000001,42.997900390625],[18.48847656250001,43.012158203125],[18.623632812500006,43.027685546875],[18.621875,43.124609375],[18.674218750000023,43.230810546875],[18.74921875000001,43.283544921875],[18.85107421875,43.346337890624994],[18.934667968750006,43.339453125],[18.97871093750001,43.285400390625],[19.026660156250017,43.292431640625],[19.03671875,43.357324218749994],[18.940234375000017,43.496728515624994],[18.95068359375,43.526660156249996],[18.97421875,43.542333984375],[19.0283203125,43.532519531249996],[19.080078125,43.517724609374994],[19.11279296875,43.52773437499999],[19.164355468750017,43.535449218749996],[19.1943359375,43.53330078125],[19.21875,43.449951171875]]]},"properties":{"name":"Montenegro","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[111.878125,43.68017578125],[111.00722656250002,43.34140625],[110.400390625,42.773681640625],[109.44316406249999,42.455957031249994],[109.33984375,42.438378906249994],[108.68730468749999,42.41611328125],[108.17119140624999,42.447314453124996],[106.77001953125,42.288720703124994],[105.86757812500002,41.993994140625],[105.31435546875002,41.770898437499994],[105.19707031249999,41.738037109375],[105.11542968750001,41.66328125],[105.05058593749999,41.61591796875],[104.98203125000003,41.595507812499996],[104.49824218750001,41.65869140625],[104.49824218750001,41.877001953124996],[104.30517578125,41.846142578125],[103.99726562500001,41.79697265625],[103.71113281250001,41.751318359375],[103.07285156250003,42.00595703125],[102.5751953125,42.092089843749996],[102.15664062500002,42.158105468749994],[101.97294921874999,42.215869140624996],[101.65996093749999,42.500048828124996],[101.5791015625,42.52353515625],[101.49531250000001,42.53876953125],[101.09199218750001,42.551318359374996],[100.51904296875,42.616796875],[100.08632812500002,42.670751953125],[99.98378906250002,42.67734375],[99.46787109375003,42.568212890625],[97.20566406250003,42.789794921875],[96.38544921875001,42.720361328124994],[95.85957031250001,43.2759765625],[95.52558593750001,43.953955078125],[95.32558593750002,44.039355468749996],[95.35029296875001,44.278076171875],[94.71201171875003,44.350830078125],[93.51621093750003,44.944482421874994],[92.78789062499999,45.0357421875],[92.57890624999999,45.010986328125],[92.423828125,45.008935546874994],[92.17265624999999,45.03525390625],[92.02978515625,45.068505859374994],[91.584375,45.076513671875],[91.05,45.217431640624994],[90.87724609374999,45.19609375],[90.66181640625001,45.525244140625],[91.00175781249999,46.035791015624994],[90.99677734375001,46.10498046875],[90.94755859374999,46.177294921874996],[90.91152343750002,46.270654296874994],[90.98574218750002,46.7490234375],[90.91054687500002,46.883251953125],[90.86992187499999,46.954492187499994],[90.79902343750001,46.98515625],[90.71552734375001,47.003857421875],[90.49619140625003,47.28515625],[90.42519531250002,47.5041015625],[90.34746093749999,47.596972656249996],[90.33066406250003,47.655175781249994],[90.31328124999999,47.67617187499999],[90.19101562500003,47.702099609375],[90.10322265625001,47.745410156249996],[90.02792968750003,47.877685546875],[89.95869140625001,47.886328125],[89.91044921874999,47.8443359375],[89.83134765624999,47.823291015624996],[89.778125,47.827001953125],[89.56093750000002,48.003955078124996],[89.47919921875001,48.029052734375],[89.04765624999999,48.0025390625],[88.97109375000002,48.049951171874994],[88.91777343749999,48.089013671874994],[88.83828125000002,48.101708984374994],[88.68183593750001,48.170556640624994],[88.57597656249999,48.220166015625],[88.56679687500002,48.317431640624996],[88.51708984375,48.38447265625],[88.41396484375002,48.40341796875],[88.30996093750002,48.472070312499994],[87.97968750000001,48.555126953125],[88.06005859375,48.707177734374994],[87.83183593749999,48.791650390624994],[87.7431640625,48.881640625],[87.87216796875003,49.000146484374994],[87.81630859375002,49.0802734375],[87.8251953125,49.11630859375],[87.81425781249999,49.1623046875],[87.93476562500001,49.16455078125],[87.98808593749999,49.186914062499994],[88.02851562500001,49.219775390624996],[88.11572265625,49.256298828125],[88.19257812500001,49.451708984374996],[88.63320312500002,49.486132812499996],[88.83164062500003,49.4484375],[88.86386718750003,49.527636718749996],[88.90019531249999,49.539697265624994],[88.94541015625003,49.507666015625],[88.97060546875002,49.483740234375],[89.00839843750003,49.472802734374994],[89.10947265625003,49.501367187499994],[89.17998046874999,49.5322265625],[89.20292968749999,49.595703125],[89.24394531249999,49.62705078125],[89.39560546875003,49.6115234375],[89.475,49.66054687499999],[89.57919921875003,49.69970703125],[89.65410156249999,49.71748046875],[89.64384765624999,49.90302734375],[90.0537109375,50.09375],[90.65507812499999,50.22236328125],[90.71435546875,50.259423828124994],[90.7607421875,50.305957031249996],[91.02158203125003,50.415478515625],[91.23378906250002,50.452392578125],[91.30058593749999,50.46337890625],[91.3408203125,50.470068359375],[91.4150390625,50.468017578125],[91.44648437500001,50.52216796875],[91.80429687500003,50.693603515625],[92.10400390625,50.6919921875],[92.1923828125,50.700585937499994],[92.35478515624999,50.864160156249994],[92.42636718750003,50.803076171875],[92.62666015625001,50.68828125],[92.68134765625001,50.683203125],[92.73867187500002,50.7109375],[92.779296875,50.778662109375],[92.8564453125,50.789111328124996],[92.94130859375002,50.778222656249994],[93.103125,50.60390625],[94.25107421875003,50.556396484375],[94.35468750000001,50.221826171874994],[94.61474609375,50.023730468749996],[94.67548828125001,50.028076171875],[94.71806640624999,50.043261718749996],[94.93027343750003,50.04375],[95.11142578125003,49.935449218749994],[95.52265625000001,49.91123046875],[96.06552734375003,49.99873046875],[96.31503906250003,49.901123046875],[96.98574218750002,49.8828125],[97.20859375000003,49.730810546875],[97.35976562500002,49.741455078125],[97.58935546875,49.911474609375],[98.00390625,50.0142578125],[98.25029296874999,50.30244140625],[98.27949218750001,50.533251953124996],[98.14501953125,50.5685546875],[98.07890624999999,50.603808593749996],[98.02978515625,50.64462890625],[97.82529296875003,50.985253906249994],[98.103125,51.483544921874994],[98.64052734375002,51.801171875],[98.89316406250003,52.11728515625],[99.92167968749999,51.755517578125],[100.03457031250002,51.737109375],[100.23037109375002,51.729833984375],[100.46894531250001,51.72607421875],[100.53623046875003,51.7134765625],[101.38125,51.45263671875],[101.57089843750003,51.4671875],[101.82119140625002,51.421044921874994],[102.11152343750001,51.353466796875],[102.15566406250002,51.313769531249996],[102.16005859375002,51.26083984375],[102.14238281249999,51.216064453125],[102.15195312500003,51.10751953125],[102.19453125000001,51.050683593749994],[102.21503906250001,50.829443359375],[102.31660156250001,50.71845703125],[102.28837890624999,50.585107421874994],[103.30439453125001,50.20029296875],[103.63291015625003,50.138574218749994],[103.72324218750003,50.153857421874996],[103.80263671875002,50.176074218749996],[104.07871093750003,50.154248046875],[105.38359374999999,50.47373046875],[106.21787109375003,50.304589843749994],[106.36845703124999,50.317578125],[106.57441406250001,50.32880859375],[106.71113281250001,50.31259765625],[106.94130859375002,50.196679687499994],[107.04023437500001,50.086474609374996],[107.14306640625,50.033007812499996],[107.23330078125002,49.989404296874994],[107.34707031250002,49.986669921875],[107.63095703125003,49.98310546875],[107.91660156250003,49.947802734374996],[107.96542968750003,49.653515625],[108.40693359375001,49.396386718749994],[108.5224609375,49.34150390625],[108.61367187500002,49.322802734374996],[109.23671875000002,49.334912109375],[109.45371093750003,49.296337890625],[109.52871093750002,49.269873046875],[110.19990234375001,49.17041015625],[110.42783203125003,49.219970703125],[110.70976562499999,49.14296875],[110.82792968749999,49.166162109374994],[111.20419921875003,49.304296875],[111.33662109375001,49.35585937499999],[111.42929687500003,49.342626953125],[112.07968750000003,49.42421875],[112.49492187499999,49.53232421875],[112.69736328125003,49.507275390625],[112.80644531249999,49.523583984374994],[112.91484374999999,49.569238281249994],[113.05556640625002,49.616259765624996],[113.09208984374999,49.692529296874994],[113.16416015625003,49.797167968749996],[113.31904296875001,49.874316406249996],[113.44550781250001,49.9416015625],[113.57421875,50.00703125],[114.29707031250001,50.2744140625],[114.7431640625,50.233691406249996],[115.00332031250002,50.138574218749994],[115.27451171875003,49.948876953124994],[115.36503906249999,49.911767578124994],[115.42919921875,49.896484375],[115.58798828125003,49.886035156249996],[115.7177734375,49.880615234375],[115.79521484374999,49.905908203124994],[115.92597656250001,49.9521484375],[116.13457031249999,50.010791015624996],[116.216796875,50.00927734375],[116.35117187500003,49.978076171874996],[116.55117187500002,49.9203125],[116.68330078125001,49.823779296874996],[115.82050781250001,48.57724609375],[115.79169921875001,48.455712890624994],[115.79658203125001,48.346337890624994],[115.78554687500002,48.2482421875],[115.63945312499999,48.18623046875],[115.52509765625001,48.130859375],[115.61640625000001,47.874804687499996],[115.89824218749999,47.686914062499994],[115.99384765625001,47.71132812499999],[116.07480468750003,47.78955078125],[116.23115234375001,47.858203125],[116.31718749999999,47.85986328125],[116.37822265624999,47.844042968749996],[116.51347656249999,47.83955078125],[116.65195312500003,47.864501953125],[116.76054687499999,47.869775390624994],[116.90117187499999,47.853076171874996],[116.95166015625,47.836572265624994],[117.06972656250002,47.806396484375],[117.28593749999999,47.666357421875],[117.35078125000001,47.652197265625],[117.76835937499999,47.987890625],[118.49843750000002,47.983984375],[118.56777343750002,47.943261718749994],[118.69052734375003,47.822265625],[118.75996093750001,47.757617187499996],[118.88027343750002,47.72509765625],[119.017578125,47.685351562499996],[119.08193359375002,47.654150390625],[119.71113281250001,47.15],[119.89785156250002,46.8578125],[119.8671875,46.672167968749996],[119.74746093750002,46.627197265625],[119.70664062500003,46.606005859374996],[119.62021484375003,46.603955078125],[119.47402343750002,46.62666015625],[119.33183593749999,46.613818359374996],[119.162109375,46.638671875],[118.95712890625003,46.73486328125],[118.84394531250001,46.760205078125],[118.79033203124999,46.7470703125],[118.72294921874999,46.69189453125],[118.64873046874999,46.70166015625],[118.58046875000002,46.69189453125],[118.40439453125003,46.703173828124996],[118.30869140625003,46.717041015625],[118.15683593750003,46.678564453125],[118.0712890625,46.6666015625],[117.7412109375,46.5181640625],[117.546875,46.58828125],[117.43808593750003,46.586230468749996],[117.40556640624999,46.5708984375],[117.39218750000003,46.53759765625],[117.35634765625002,46.436669921874994],[117.35693359375,46.39130859375],[117.33339843750002,46.36201171875],[116.85908203125001,46.387939453125],[116.56259765625003,46.289794921875],[116.21298828125003,45.8869140625],[116.22910156250003,45.845751953124996],[116.240625,45.79599609375],[116.19765625000002,45.73935546875],[115.68105468750002,45.458251953125],[115.16259765625,45.390234375],[114.91923828124999,45.378271484375],[114.73876953125,45.41962890625],[114.56015625000003,45.389990234375],[114.41914062500001,45.202587890625],[114.16738281250002,45.049853515624996],[114.08027343750001,44.971142578125],[113.87705078125003,44.89619140625],[113.65263671874999,44.763476562499996],[113.58701171875003,44.745703125],[113.04941406250003,44.810351562499996],[112.70673828125001,44.883447265624994],[112.59677734375003,44.91767578125],[112.49931640624999,45.0109375],[112.41132812500001,45.058203125],[112.11289062500003,45.062939453125],[112.03261718750002,45.081640625],[111.89804687500003,45.0640625],[111.40224609375002,44.36728515625],[111.93173828125003,43.81494140625],[111.878125,43.68017578125]]]},"properties":{"name":"Mongolia","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[145.75195312499997,15.133154296874991],[145.71318359375007,15.215283203125026],[145.821875,15.265380859375014],[145.75195312499997,15.133154296874991]]]},"properties":{"name":"N. Mariana Is.","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[32.112890625,-26.839453125],[32.10595703125,-26.52001953125],[32.04140625000002,-26.28125],[32.060546875,-26.018359375],[31.9482421875,-25.957617187500006],[31.98583984375,-24.46064453125001],[31.799609375000017,-23.8921875],[31.54560546875001,-23.48232421875001],[31.287890625000017,-22.40205078125001],[31.429492187500017,-22.298828125],[32.429785156250006,-21.29707031250001],[32.353613281250006,-21.136523437500003],[32.49238281250001,-20.659765625],[32.992773437500006,-19.98486328125],[32.77763671875002,-19.388769531250006],[32.84980468750001,-19.10439453125001],[32.69970703125,-18.94091796875],[32.99306640625002,-18.35957031250001],[32.87626953125002,-16.88359375],[32.94804687500002,-16.71230468750001],[31.939843750000023,-16.428808593750006],[31.236230468750023,-16.02363281250001],[30.437792968750017,-15.995312500000011],[30.39609375,-15.64306640625],[30.231835937500023,-14.990332031250006],[33.201757812500006,-14.013378906250011],[33.63642578125001,-14.568164062500003],[34.375,-14.4248046875],[34.50527343750002,-14.59814453125],[34.54082031250002,-15.297265625],[34.24609375,-15.829394531250003],[34.528125,-16.319140625],[34.93339843750002,-16.760351562500006],[35.11210937500002,-16.898535156250006],[35.06464843750001,-17.07861328125],[35.124609375,-17.127246093750003],[35.20136718750001,-17.13105468750001],[35.272558593750006,-17.118457031250003],[35.29042968750002,-17.096972656250003],[35.28115234375002,-16.80781250000001],[35.22978515625002,-16.639257812500006],[35.178320312500006,-16.573339843750006],[35.16718750000001,-16.56025390625001],[35.242773437500006,-16.375390625],[35.358496093750006,-16.160546875],[35.59931640625001,-16.12587890625001],[35.70888671875002,-16.095800781250006],[35.75527343750002,-16.05830078125001],[35.79121093750001,-15.958691406250011],[35.89277343750001,-14.891796875000011],[35.86669921875,-14.86376953125],[35.84716796875,-14.6708984375],[35.6904296875,-14.465527343750011],[35.48847656250001,-14.201074218750009],[35.37578125000002,-14.058691406250006],[35.24746093750002,-13.896875],[35.01386718750001,-13.643457031250009],[34.61152343750001,-13.437890625],[34.54570312500002,-13.21630859375],[34.542578125,-13.108691406250003],[34.35781250000002,-12.164746093750011],[34.60625,-11.690039062500006],[34.65957031250002,-11.588671875],[34.82656250000002,-11.57568359375],[34.95947265625,-11.578125],[35.1826171875,-11.574804687500006],[35.41826171875002,-11.583203125000011],[35.50439453125,-11.604785156250003],[35.56435546875002,-11.60234375],[35.630957031250006,-11.58203125],[35.78544921875002,-11.452929687500003],[35.91132812500001,-11.4546875],[36.08222656250001,-11.537304687500011],[36.17548828125001,-11.609277343750009],[36.19130859375002,-11.670703125],[36.3056640625,-11.706347656250003],[36.97890625000002,-11.566992187500006],[37.37285156250002,-11.71044921875],[37.54169921875001,-11.675097656250003],[37.72480468750001,-11.580664062500006],[37.92021484375002,-11.294726562500003],[38.491796875,-11.413281250000011],[38.9875,-11.167285156250003],[39.81708984375001,-10.912402343750003],[39.98867187500002,-10.82080078125],[40.46357421875001,-10.46435546875],[40.61171875000002,-10.661523437500009],[40.48662109375002,-10.76513671875],[40.59716796875,-10.830664062500006],[40.40283203125,-11.33203125],[40.53154296875002,-12.004589843750011],[40.48710937500002,-12.4921875],[40.58085937500002,-12.635546875],[40.43681640625002,-12.983105468750011],[40.56875,-12.984667968750003],[40.595703125,-14.122851562500003],[40.715625,-14.214453125],[40.64609375,-14.538671875],[40.775,-14.421289062500009],[40.84453125000002,-14.718652343750009],[40.617773437500006,-15.115527343750003],[40.650976562500006,-15.260937500000011],[39.98359375000001,-16.22548828125001],[39.79091796875002,-16.29453125],[39.84462890625002,-16.435644531250006],[39.084375,-16.97285156250001],[38.14492187500002,-17.242773437500006],[37.24453125000002,-17.73994140625001],[36.93935546875002,-17.993457031250003],[36.40371093750002,-18.76972656250001],[36.26289062500001,-18.71962890625001],[36.23564453125002,-18.861328125],[35.85371093750001,-18.99335937500001],[34.947851562500006,-19.81269531250001],[34.6494140625,-19.70136718750001],[34.75576171875002,-19.82197265625001],[34.705078125,-20.473046875],[34.98232421875002,-20.80625],[35.267675781250006,-21.650976562500006],[35.31572265625002,-22.396875],[35.38300781250001,-22.45458984375],[35.45634765625002,-22.11591796875001],[35.53007812500002,-22.248144531250006],[35.57539062500001,-22.96308593750001],[35.37041015625002,-23.79824218750001],[35.5419921875,-23.82441406250001],[35.48964843750002,-24.065527343750006],[34.99208984375002,-24.65058593750001],[32.96113281250001,-25.49042968750001],[32.590429687500006,-26.00410156250001],[32.84882812500001,-26.26806640625],[32.95488281250002,-26.08359375],[32.93359375,-26.25234375],[32.88916015625,-26.83046875],[32.88613281250002,-26.84931640625001],[32.353515625,-26.861621093750003],[32.19960937500002,-26.83349609375],[32.112890625,-26.839453125]]]},"properties":{"name":"Mozambique","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-16.37333984374999,19.706445312499994],[-16.437548828124932,19.609277343749994],[-16.477001953124983,19.710351562499994],[-16.343652343749994,19.86621093750003],[-16.37333984374999,19.706445312499994]]],[[[-5.359912109374989,16.282861328124994],[-5.5125,15.496289062499983],[-9.293701171875,15.502832031249994],[-9.350585937499943,15.677392578125023],[-9.38535156249992,15.667626953124994],[-9.4265625,15.623046875000057],[-9.447705078124926,15.574853515624994],[-9.446923828124937,15.458203124999955],[-9.941406249999972,15.373779296874986],[-10.696582031249989,15.42265625],[-10.9482421875,15.151123046875014],[-11.455224609374994,15.62539062499999],[-11.760156249999937,15.425537109375057],[-11.828759765624966,15.244873046875014],[-11.872851562499989,14.995166015625031],[-12.02158203124992,14.804931640625],[-12.081542968749972,14.766357421875057],[-12.104687499999955,14.745361328125043],[-12.40869140625,14.889013671874991],[-12.735253906249994,15.13125],[-13.105273437499989,15.57177734375],[-13.40966796875,16.059179687500006],[-13.756640624999989,16.172509765624994],[-13.868457031249932,16.14814453125001],[-14.300097656249932,16.58027343750001],[-14.990625,16.676904296874994],[-15.768212890624994,16.485107421875],[-16.23901367187497,16.53129882812499],[-16.44101562499992,16.20454101562504],[-16.480078124999977,16.097216796875017],[-16.50205078124992,15.917333984375063],[-16.53525390624995,15.838378906250057],[-16.53574218749995,16.28681640625001],[-16.463623046875,16.60151367187501],[-16.030322265625017,17.88793945312497],[-16.213085937499926,19.003320312500023],[-16.51445312499996,19.361962890624994],[-16.305273437499977,19.51264648437504],[-16.44487304687499,19.47314453124997],[-16.21044921875003,20.227929687500023],[-16.42978515624995,20.652343750000057],[-16.622509765624955,20.634179687499994],[-16.87607421874992,21.086132812499955],[-16.998242187499926,21.039697265625023],[-17.048046874999955,20.80615234375003],[-17.06396484375,20.89882812499999],[-16.96455078125001,21.329248046875023],[-15.231201171875,21.331298828125],[-14.084667968749926,21.33271484375001],[-13.626025390624932,21.33325195312503],[-13.396728515624943,21.333544921875017],[-13.167431640624926,21.333789062500074],[-13.016210937499949,21.33393554687501],[-13.025097656249983,21.46679687499997],[-13.032226562500028,21.572070312500017],[-13.041748046875,21.71381835937504],[-13.051220703124983,21.854785156250074],[-13.094335937499977,22.49599609375005],[-13.153271484374983,22.820507812499983],[-13.031494140624943,23.000244140625],[-12.895996093749972,23.08955078125001],[-12.739599609375006,23.192724609375063],[-12.62041015624996,23.271337890625006],[-12.559375,23.290820312500045],[-12.372900390624977,23.318017578124994],[-12.023437499999943,23.467578125000017],[-12.016308593749983,23.97021484375],[-12.016308593749983,24.378662109375],[-12.016308593749983,24.923242187499994],[-12.016308593749983,25.059375],[-12.016308593749983,25.331689453124994],[-12.016308593749983,25.740136718749994],[-12.016308593749983,25.995410156250017],[-10.376123046874966,25.995458984375034],[-9.444531249999983,25.99550781250005],[-9.071923828124937,25.99550781250005],[-8.885644531249994,25.99550781250005],[-8.682226562499949,25.99550781250005],[-8.68212890625,26.109472656250006],[-8.68212890625,26.273193359375057],[-8.682324218749955,26.49770507812505],[-8.682617187500028,26.723144531250057],[-8.682861328124972,26.92133789062501],[-8.683349609375,27.285937500000045],[-4.822607421874949,24.99560546875],[-5.640771484374994,24.99516601562499],[-5.959814453124977,24.994970703125063],[-6.287207031249977,24.99482421875001],[-6.594091796874977,24.99462890624997],[-6.396582031249977,23.274804687499994],[-6.02641601562496,20.04218750000001],[-5.827099609374955,18.301562500000045],[-5.741699218749943,17.555566406250023],[-5.713183593750017,17.306884765625],[-5.684765624999983,17.058251953124966],[-5.628662109375028,16.568652343750045],[-5.50961914062492,16.442041015625023],[-5.359912109374989,16.282861328124994]]]]},"properties":{"name":"Mauritania","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[-62.1484375,16.74033203124999],[-62.221630859375,16.699511718750003],[-62.191357421875,16.804394531249997],[-62.1484375,16.74033203124999]]]},"properties":{"name":"Montserrat","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[57.65126953125002,-20.48486328125],[57.31767578125002,-20.42763671875001],[57.416015625,-20.18378906250001],[57.65654296875002,-19.98994140625001],[57.7919921875,-20.21259765625001],[57.65126953125002,-20.48486328125]]]},"properties":{"name":"Mauritius","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[34.95947265625003,-11.578125],[34.82656250000005,-11.575683593749972],[34.65957031250005,-11.58867187499996],[34.61855468750005,-11.620214843749991],[34.60625,-11.690039062500006],[34.3578125,-12.164746093749997],[34.542578125,-13.108691406250003],[34.54570312500002,-13.21630859375],[34.6115234375001,-13.437890625000023],[35.0138671875001,-13.64345703124998],[35.247460937499994,-13.896875],[35.37578125000002,-14.05869140625002],[35.48847656250004,-14.20107421874998],[35.69042968749997,-14.465527343750026],[35.84716796875003,-14.670898437500043],[35.8927734375001,-14.891796875000011],[35.7912109375001,-15.958691406250026],[35.75527343750005,-16.058300781249983],[35.708886718749994,-16.095800781249977],[35.5993164062501,-16.12587890624998],[35.35849609375006,-16.160546875000023],[35.242773437500006,-16.375390625],[35.16718750000004,-16.56025390625001],[35.178320312500006,-16.57333984375002],[35.22978515625002,-16.639257812500034],[35.281152343749994,-16.8078125],[35.29042968750005,-17.096972656250017],[35.27255859375006,-17.11845703124996],[35.2013671875001,-17.13105468750004],[35.124609375,-17.127246093749974],[35.06464843750004,-17.078613281250014],[35.11210937500002,-16.898535156250006],[34.93339843750002,-16.760351562500006],[34.528125,-16.319140625],[34.24609374999997,-15.829394531249974],[34.54082031250002,-15.297265625],[34.50527343750005,-14.598144531249957],[34.375,-14.4248046875],[33.63642578125004,-14.568164062499974],[33.148046875,-13.94091796875],[32.98125,-14.009375],[32.797460937500006,-13.6884765625],[32.67041015624997,-13.590429687500006],[32.96757812500002,-13.225],[32.97519531250006,-12.701367187499983],[33.51230468750006,-12.347753906249977],[33.340136718750074,-12.308300781250011],[33.25234375000005,-12.112597656250031],[33.3039062500001,-11.69082031249998],[33.23271484375002,-11.417675781250026],[33.26835937500002,-11.403906249999977],[33.379785156249994,-11.15791015625004],[33.29277343750002,-10.85234375],[33.661523437499994,-10.553125],[33.55371093749997,-10.391308593750011],[33.53759765624997,-10.351562499999986],[33.52890625,-10.234667968749974],[33.31152343750003,-10.037988281249966],[33.3371093750001,-9.954003906249994],[33.350976562499994,-9.862207031250037],[33.25,-9.759570312500003],[33.148046875,-9.603515625],[32.99599609375005,-9.622851562499946],[32.91992187500003,-9.407421875000026],[33.88886718750004,-9.670117187499983],[33.99560546875003,-9.495410156250003],[34.32089843750006,-9.731542968749977],[34.56992187500006,-10.241113281249966],[34.66708984375006,-10.792480468750028],[34.60791015624997,-11.08046875],[34.77382812500005,-11.341699218750009],[34.890625,-11.3935546875],[34.93701171874997,-11.463476562500034],[34.95947265625003,-11.578125]]]},"properties":{"name":"Malawi","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[111.38925781250006,2.415332031250031],[111.31152343749997,2.437597656250034],[111.33349609374997,2.768310546875],[111.38925781250006,2.415332031250031]]],[[[104.22158203125,2.731738281250003],[104.1291015625001,2.767236328125037],[104.18476562500004,2.871728515625009],[104.22158203125,2.731738281250003]]],[[[117.88476562499997,4.186132812500006],[117.64902343750012,4.168994140624974],[117.70800781249997,4.262402343749997],[117.88476562499997,4.186132812500006]]],[[[100.28896484375005,5.294726562499989],[100.19101562500006,5.28286132812498],[100.2455078125,5.467773437499986],[100.33886718749997,5.410058593750037],[100.28896484375005,5.294726562499989]]],[[[99.848046875,6.465722656249994],[99.9186523437501,6.358593750000011],[99.74375,6.263281249999963],[99.64628906250002,6.418359375000023],[99.848046875,6.465722656249994]]],[[[102.10107421874997,6.242236328125031],[102.34013671875002,6.172021484375023],[102.534375,5.862548828125028],[103.09707031250005,5.408447265624986],[103.41582031250007,4.85029296875004],[103.43945312499997,2.93310546875],[103.8122070312501,2.58046875],[104.21855468750002,1.722851562499997],[104.25009765625012,1.388574218750009],[104.11494140625004,1.412255859375037],[103.98144531250003,1.623632812500034],[103.99150390625002,1.454785156249997],[103.6945312500001,1.449658203125026],[103.48027343750007,1.329492187499966],[103.35683593750005,1.546142578125057],[102.72714843750012,1.855566406250034],[101.29550781250012,2.885205078125011],[101.29990234375012,3.253271484375034],[100.71542968750006,3.966210937499966],[100.79550781250012,4.023388671874983],[100.61455078125002,4.3734375],[100.34326171874997,5.984179687500031],[100.11914062499997,6.441992187500048],[100.26142578125004,6.682714843749963],[100.3454101562501,6.549902343750006],[100.75449218750012,6.460058593749991],[100.87392578125,6.24541015624996],[101.05351562500002,6.242578125],[100.98164062500004,5.771044921875045],[101.1139648437501,5.636767578125045],[101.5560546875,5.907763671875003],[101.67841796875004,5.778808593750028],[101.87363281250012,5.825292968749991],[102.10107421874997,6.242236328125031]]],[[[117.5744140625001,4.17060546875004],[117.10058593750003,4.337060546875023],[116.51474609375006,4.370800781249969],[115.86074218750005,4.348046875000037],[115.67880859375006,4.193017578124994],[115.45439453125002,3.034326171875009],[115.24697265625005,3.025927734374989],[115.117578125,2.89487304687502],[115.08076171875004,2.63422851562504],[115.1791015625,2.523193359374972],[114.78642578125002,2.250488281250014],[114.83056640625003,1.980029296874989],[114.5125,1.452001953124963],[113.90234375000003,1.434277343749997],[113.6222656250001,1.2359375],[113.00654296875004,1.433886718750003],[112.94296875000006,1.566992187500034],[112.47617187500006,1.559082031250028],[112.1857421875001,1.4390625],[112.078515625,1.143359374999974],[111.80898437500005,1.011669921874969],[111.10136718750002,1.050537109374986],[110.50576171875005,0.861962890625023],[109.65400390625004,1.614892578125023],[109.53896484375,1.89619140625004],[109.62890625000003,2.027539062499983],[109.86484375000012,1.764453125000031],[110.34921875000012,1.719726562499972],[111.22324218750012,1.395849609374991],[111.0287109375,1.557812500000026],[111.26816406250012,2.13974609375002],[111.20859375000012,2.379638671875043],[111.44384765625003,2.381542968749983],[111.5125,2.743017578124991],[112.98789062500006,3.161914062499974],[113.92392578125006,4.243212890625003],[114.0638671875,4.592675781249966],[114.65410156250007,4.037646484375045],[114.84023437500005,4.393212890625009],[114.74667968750006,4.718066406250017],[115.02675781250005,4.899707031249989],[115.10703125000006,4.390429687499974],[115.290625,4.352587890624989],[115.1400390625,4.899755859374991],[115.37490234375,4.932763671874966],[115.55449218750007,5.093554687500045],[115.41904296875012,5.413183593749963],[115.60390625,5.603417968749994],[115.74082031250012,5.533007812500045],[115.8771484375001,5.613525390625014],[116.74980468750007,6.977099609374989],[116.8498046875001,6.826708984374989],[116.78808593749997,6.606103515624994],[117.12851562500012,6.968896484375009],[117.2298828125,6.939990234374974],[117.29404296875006,6.676904296875023],[117.60966796875002,6.512646484375054],[117.69375,6.35],[117.64453124999997,6.001855468749994],[117.5011718750001,5.884667968750009],[118.00380859375,6.053320312499991],[118.11582031250006,5.8625],[117.93476562500004,5.7875],[117.97363281249997,5.70625],[118.35312500000012,5.80605468749998],[118.59482421875006,5.592089843750003],[119.22343750000007,5.412646484375031],[119.2663085937501,5.308105468750057],[119.21962890625,5.159814453125037],[118.9125,5.02290039062504],[118.26054687500007,4.988867187500034],[118.18535156250002,4.828515625000051],[118.5625,4.502148437499997],[118.54833984375003,4.379248046875006],[118.008203125,4.250244140625014],[117.6964843750001,4.342822265625045],[117.5744140625001,4.17060546875004]]],[[[117.14160156250003,7.168212890625028],[117.08066406250006,7.115283203124989],[117.06425781250007,7.26069335937504],[117.2640625,7.351660156250006],[117.26679687500004,7.220800781249991],[117.14160156250003,7.168212890625028]]]]},"properties":{"name":"Malaysia","childNum":8}},{"geometry":{"type":"Polygon","coordinates":[[[23.380664062500017,-17.640625],[24.27490234375,-17.481054687500006],[24.73291015625,-17.51777343750001],[25.001757812500017,-17.56855468750001],[25.2587890625,-17.793554687500006],[24.909082031250023,-17.821386718750006],[24.530566406250017,-18.052734375],[24.243945312500017,-18.0234375],[23.599707031250006,-18.4599609375],[23.219335937500006,-17.99970703125001],[20.97412109375,-18.31884765625],[20.9794921875,-21.9619140625],[19.977343750000017,-22.00019531250001],[19.98046875,-24.77675781250001],[19.98046875,-28.310351562500003],[19.98046875,-28.451269531250006],[19.539843750000017,-28.574609375],[19.31269531250001,-28.73330078125001],[19.24580078125001,-28.901660156250003],[19.16171875,-28.938769531250003],[18.310839843750017,-28.88623046875],[17.44794921875001,-28.69814453125001],[17.34785156250001,-28.50117187500001],[17.358691406250017,-28.26943359375001],[17.1884765625,-28.13251953125001],[17.05625,-28.031054687500003],[16.93330078125001,-28.069628906250003],[16.875292968750017,-28.1279296875],[16.841210937500023,-28.21894531250001],[16.81015625,-28.26455078125001],[16.7875,-28.39472656250001],[16.755761718750023,-28.4521484375],[16.62617187500001,-28.487890625],[16.487109375000017,-28.572851562500006],[16.447558593750017,-28.617578125],[15.719042968750017,-27.9658203125],[15.341503906250011,-27.386523437500003],[15.139062500000023,-26.50800781250001],[14.9677734375,-26.31806640625001],[14.837109375000011,-25.033203125],[14.5015625,-24.201953125],[14.462792968750023,-22.44912109375001],[13.450585937500023,-20.91669921875001],[13.168359375000023,-20.184667968750006],[12.458203125000011,-18.9267578125],[11.77587890625,-18.001757812500003],[11.733496093750006,-17.7509765625],[11.743066406250023,-17.24921875000001],[11.902539062500011,-17.2265625],[12.013964843750017,-17.168554687500006],[12.21337890625,-17.2099609375],[12.318457031250006,-17.21337890625],[12.359277343750023,-17.205859375],[12.548144531250017,-17.212695312500003],[13.179492187500017,-16.9716796875],[13.475976562500023,-17.0400390625],[14.017480468750023,-17.40888671875001],[16.1484375,-17.390234375],[18.396386718750023,-17.3994140625],[18.95527343750001,-17.803515625],[20.1943359375,-17.863671875],[20.745507812500023,-18.01972656250001],[22.32421875,-17.8375],[23.380664062500017,-17.640625]]]},"properties":{"name":"Namibia","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[167.54443359375003,-22.62324218750001],[167.44375,-22.63916015624997],[167.44345703125006,-22.541406250000037],[167.54443359375003,-22.62324218750001]]],[[[168.01093750000004,-21.429980468750017],[168.1390625,-21.44521484375001],[168.12070312500012,-21.615820312500034],[167.96679687500003,-21.641601562499957],[167.81542968749997,-21.392675781249963],[167.9884765625001,-21.337890624999986],[168.01093750000004,-21.429980468750017]]],[[[167.40087890625003,-21.16064453125003],[167.07265625,-20.99726562499997],[167.03271484374997,-20.922558593750026],[167.18945312500003,-20.803515625000017],[167.05576171875012,-20.720214843750014],[167.29794921875006,-20.732519531250034],[167.40087890625003,-21.16064453125003]]],[[[164.20234375000004,-20.246093749999957],[164.4359375,-20.282226562499957],[165.191796875,-20.768847656249974],[165.66279296875004,-21.267187499999977],[166.94238281250003,-22.09013671875003],[166.97031250000012,-22.32285156250002],[166.77412109375004,-22.37617187500004],[166.4679687500001,-22.256054687499997],[164.92744140625004,-21.289843749999974],[164.16972656250007,-20.48017578125004],[164.05966796875012,-20.141503906249966],[164.20234375000004,-20.246093749999957]]]]},"properties":{"name":"New Caledonia","childNum":4}},{"geometry":{"type":"Polygon","coordinates":[[[14.97900390625,22.99619140624999],[15.181835937500011,21.523388671874997],[15.607324218750023,20.954394531250003],[15.587109375000011,20.733300781249994],[15.963183593750017,20.34619140625],[15.735058593750011,19.904052734375],[15.474316406250011,16.908398437499997],[14.367968750000017,15.750146484374994],[13.4482421875,14.380664062500003],[13.505761718750023,14.134423828124994],[13.606347656250023,13.70458984375],[13.426953125000011,13.701757812499991],[13.323828125,13.670849609374997],[12.871679687500006,13.449023437500003],[12.65478515625,13.3265625],[12.463183593750017,13.09375],[10.958886718750023,13.371533203124997],[10.475878906250017,13.330224609374994],[10.229589843750006,13.281005859375],[10.184667968750006,13.270117187499991],[9.615917968750011,12.810644531249991],[9.201562500000023,12.821484375],[8.750585937500006,12.908154296874997],[8.4560546875,13.059667968749991],[8.095019531250017,13.291162109374994],[7.955761718750011,13.32275390625],[7.788671875,13.337890625],[7.056738281250006,13.000195312499997],[6.804296875,13.107666015625],[6.2998046875,13.658789062499991],[6.184277343750011,13.66367187499999],[5.838183593750017,13.765380859375],[5.491992187500017,13.872851562500003],[5.415820312500017,13.859179687500003],[5.361621093750017,13.836865234374997],[5.241894531250011,13.757226562499994],[4.664843750000017,13.733203125],[4.147558593750006,13.457714843749997],[3.947851562500006,12.775048828124994],[3.646679687500011,12.529980468749997],[3.595410156250011,11.6962890625],[2.805273437500006,12.383837890624989],[2.366015625000017,12.221923828125],[2.38916015625,11.897070312499991],[2.072949218750011,12.309375],[2.226269531250011,12.466064453125],[2.104589843750006,12.701269531249991],[1.56494140625,12.635400390624994],[0.9873046875,13.041894531249994],[0.988476562500011,13.36484375],[1.201171875,13.357519531249991],[0.6181640625,13.703417968750003],[0.42919921875,13.972119140624997],[0.382519531250011,14.245800781249997],[0.163867187500017,14.497216796874994],[0.217480468750011,14.911474609374991],[0.947460937500011,14.982128906249997],[1.300195312500023,15.272265625],[3.001074218750006,15.340966796874994],[3.06015625,15.427197265624997],[3.504296875000023,15.356347656249994],[3.5205078125,15.483105468749997],[3.842968750000011,15.701708984375003],[4.121289062500011,16.357714843750003],[4.234667968750017,16.996386718750003],[4.227636718750006,19.142773437499997],[5.836621093750011,19.479150390624994],[7.481738281250017,20.873095703125003],[11.967871093750006,23.517871093750003],[13.48125,23.18017578125],[14.215527343750011,22.619677734375003],[14.97900390625,22.99619140624999]]]},"properties":{"name":"Niger","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[7.30078125,4.418164062500026],[7.140429687500017,4.395117187500034],[7.227343750000045,4.527343749999972],[7.30078125,4.418164062500026]]],[[[6.804296875,13.107666015625],[7.056738281250006,13.00019531250004],[7.788671875,13.337890625],[7.955761718750011,13.322753906250028],[8.095019531250045,13.29116210937498],[8.750585937500034,12.908154296875026],[9.20156250000008,12.82148437500004],[9.615917968750011,12.810644531249963],[10.184667968750063,13.270117187499963],[10.229589843749977,13.281005859375043],[10.475878906250074,13.330224609375037],[10.958886718750051,13.371533203125011],[12.463183593750017,13.09375],[12.654785156250057,13.3265625],[13.426953125000068,13.701757812499963],[13.606347656250023,13.704589843750014],[13.932324218750011,13.258496093749997],[14.06396484375,13.078515625],[14.160058593750023,12.612792968749986],[14.184863281250017,12.447216796874997],[14.272851562500023,12.356494140624989],[14.518945312500051,12.298242187500023],[14.619726562500063,12.150976562500048],[14.559765625000011,11.492285156249963],[14.20234375000004,11.268164062499963],[14.143261718750068,11.248535156250043],[14.056738281250034,11.245019531250037],[13.981445312500057,11.21186523437504],[13.892089843750057,11.140087890624983],[13.699902343749983,10.873144531250048],[13.53535156250004,10.605078124999963],[13.414550781250028,10.171435546874989],[13.269921875000051,10.036181640624974],[13.198730468750028,9.563769531250003],[12.929492187500074,9.426269531249972],[12.87568359375004,9.303515625000017],[12.80654296875008,8.886621093749994],[12.7822265625,8.817871093750014],[12.651562500000011,8.667773437499989],[12.40351562500004,8.59555664062502],[12.311328125000074,8.419726562499989],[12.2333984375,8.282324218749977],[12.016015625000051,7.589746093750009],[11.809179687500006,7.345068359374991],[11.767382812500017,7.272265624999989],[11.861425781249977,7.11640625000004],[11.657519531250017,6.951562500000023],[11.580078125000057,6.88886718750004],[11.551660156250023,6.697265625],[11.153320312500057,6.437939453125011],[11.1064453125,6.457714843750054],[11.032519531250045,6.697900390625037],[10.954199218750006,6.7765625],[10.60625,7.063085937500006],[10.413183593750006,6.877734375],[10.293066406250034,6.876757812499974],[10.205468750000051,6.891601562499986],[10.185546874999972,6.91279296875004],[10.167773437500017,6.959179687499983],[10.143554687500057,6.99643554687502],[10.038867187500045,6.921386718750014],[9.874218750000068,6.803271484375017],[9.82070312500008,6.783935546874986],[9.779882812500034,6.760156250000023],[9.725585937499972,6.65],[9.659960937500017,6.531982421874986],[9.490234375,6.418652343749997],[8.997167968750006,5.917724609375],[8.715625,5.046875],[8.514843750000068,4.724707031250034],[8.23378906250008,4.907470703124972],[8.293066406250006,4.557617187500014],[7.644238281250068,4.525341796875011],[7.530761718750028,4.655175781249994],[7.284375,4.547656250000031],[7.076562500000051,4.716162109374991],[7.15468750000008,4.514404296875],[6.92324218750008,4.390673828125017],[6.767675781250006,4.724707031250034],[6.860351562500057,4.373339843750045],[6.633007812500011,4.340234375000051],[6.579980468750051,4.475976562499994],[6.554589843750023,4.34140625000002],[6.263671875,4.309423828124991],[6.270996093749972,4.432128906250028],[6.173339843749972,4.277392578125031],[5.970703125,4.338574218749983],[5.587792968750051,4.647216796874972],[5.448144531250023,4.945849609374974],[5.383300781250057,5.129003906249977],[5.475976562500023,5.153857421874989],[5.370019531250023,5.195019531250026],[5.367968750000045,5.337744140624963],[5.549707031250023,5.474218749999963],[5.385839843750034,5.401757812500037],[5.199218750000028,5.533544921874977],[5.456640624999977,5.61171875],[5.327343750000011,5.707519531249986],[5.112402343750034,5.64155273437504],[4.861035156250068,6.026318359374997],[4.431347656250011,6.348583984375026],[3.450781249999977,6.427050781250017],[3.71699218750004,6.597949218750017],[3.430175781250057,6.525],[3.335546875000063,6.396923828125011],[2.706445312500051,6.369238281249963],[2.735644531250045,6.595703125],[2.753710937499989,6.661767578124966],[2.774609374999983,6.711718750000017],[2.752929687500028,6.771630859374966],[2.731738281250045,6.852832031249989],[2.721386718750068,6.980273437500017],[2.75673828125008,7.067919921875017],[2.750488281250057,7.39506835937496],[2.765820312500068,7.422509765625051],[2.783984375000045,7.443408203125045],[2.78515625,7.476855468750017],[2.703125,8.371826171875],[2.774804687500023,9.048535156250026],[3.044921875,9.08383789062502],[3.325195312499972,9.778466796875051],[3.60205078125,10.004541015625009],[3.646582031250006,10.408984374999989],[3.771777343750017,10.417626953124966],[3.83447265625,10.607421875],[3.7568359375,10.76875],[3.71640625,11.07958984375],[3.695312499999972,11.12031250000004],[3.63886718750004,11.176855468750006],[3.487792968749972,11.395410156250037],[3.490527343750017,11.499218750000054],[3.55390625000004,11.631884765624989],[3.595410156250068,11.696289062500057],[3.664746093750068,11.762451171875028],[3.646679687500011,12.529980468749983],[3.947851562500006,12.775048828124994],[4.147558593750006,13.457714843749983],[4.664843750000045,13.733203124999974],[5.241894531250011,13.757226562499994],[5.361621093750074,13.836865234375054],[5.415820312500017,13.859179687499974],[5.491992187500074,13.872851562500003],[6.2998046875,13.658789062500006],[6.804296875,13.107666015625]]]]},"properties":{"name":"Nigeria","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[-83.6419921875,10.917236328125],[-83.71293945312499,10.785888671875],[-83.91928710937499,10.7353515625],[-84.6341796875,11.045605468749997],[-84.9091796875,10.9453125],[-85.5841796875,11.189453125],[-85.7443359375,11.06210937499999],[-87.670166015625,12.965673828124991],[-87.58505859374999,13.043310546874991],[-87.42436523437499,12.921142578125],[-87.33725585937499,12.979248046875],[-87.05917968749999,12.991455078125],[-87.00932617187499,13.0078125],[-86.918212890625,13.223583984374997],[-86.87353515625,13.266503906249994],[-86.792138671875,13.27978515625],[-86.72929687499999,13.284375],[-86.710693359375,13.313378906249994],[-86.76352539062499,13.63525390625],[-86.77060546874999,13.69873046875],[-86.758984375,13.746142578125003],[-86.733642578125,13.763476562500003],[-86.61025390625,13.774853515624997],[-86.376953125,13.755664062500003],[-86.33173828125,13.770068359375003],[-86.238232421875,13.899462890625003],[-86.15122070312499,13.994580078124997],[-86.0892578125,14.037207031249991],[-86.04038085937499,14.050146484374991],[-85.9837890625,13.965673828124991],[-85.78671875,13.844433593749997],[-85.75341796875,13.85205078125],[-85.73393554687499,13.858691406250003],[-85.727734375,13.876074218749991],[-85.731201171875,13.931835937499997],[-85.68193359374999,13.982568359374994],[-85.20834960937499,14.311816406250003],[-85.059375,14.582958984374997],[-84.86044921874999,14.809765625],[-84.645947265625,14.661083984374997],[-84.53764648437499,14.633398437499991],[-83.635498046875,14.876416015624997],[-83.5365234375,14.977001953124997],[-83.4150390625,15.008056640625],[-83.15751953124999,14.993066406249994],[-83.18535156249999,14.956396484374991],[-83.21591796874999,14.932373046875],[-83.27988281249999,14.812792968750003],[-83.344384765625,14.902099609375],[-83.413720703125,14.825341796874994],[-83.29921875,14.7490234375],[-83.187744140625,14.340087890625],[-83.4123046875,13.99648437499999],[-83.567333984375,13.3203125],[-83.5109375,12.411816406249997],[-83.627197265625,12.459326171874991],[-83.59335937499999,12.713085937499997],[-83.75424804687499,12.501953125],[-83.680419921875,12.024316406249994],[-83.7671875,12.059277343749997],[-83.82890624999999,11.861035156249997],[-83.70458984375,11.824560546874991],[-83.6517578125,11.642041015624997],[-83.86787109375,11.300048828125],[-83.6419921875,10.917236328125]]]},"properties":{"name":"Nicaragua","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-169.80341796875,-19.0830078125],[-169.94833984375,-19.072851562500006],[-169.834033203125,-18.96601562500001],[-169.80341796875,-19.0830078125]]]},"properties":{"name":"Niue","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-68.205810546875,12.144580078124989],[-68.25434570312495,12.032080078124977],[-68.36923828125,12.301953124999983],[-68.205810546875,12.144580078124989]]],[[[4.226171875000034,51.38647460937503],[3.902050781250011,51.20766601562502],[3.43251953125008,51.24575195312505],[3.35009765625,51.37768554687503],[4.226171875000034,51.38647460937503]]],[[[3.94912109375008,51.73945312500001],[4.07509765625008,51.648779296875006],[3.699023437500017,51.70991210937501],[3.94912109375008,51.73945312500001]]],[[[4.886132812500023,53.07070312500005],[4.70917968750004,53.036035156249994],[4.886425781249983,53.18330078124998],[4.886132812500023,53.07070312500005]]],[[[4.226171875000034,51.38647460937503],[3.448925781250068,51.54077148437503],[3.743945312500017,51.596044921875006],[4.27412109375004,51.47163085937498],[4.004785156250051,51.595849609374966],[4.182617187500057,51.61030273437498],[3.946875,51.810546875],[4.482812500000023,52.30917968749998],[4.76875,52.941308593749966],[5.061230468750068,52.96064453125001],[5.532031250000074,53.268701171874966],[6.062207031250068,53.407080078125006],[6.816210937500045,53.44116210937503],[7.197265625000028,53.28227539062499],[7.033007812500045,52.65136718749997],[6.710742187500045,52.61787109374998],[6.748828125000074,52.464013671874994],[7.035156250000057,52.38022460937498],[6.724511718749994,52.080224609374966],[6.800390625,51.96738281249998],[5.948730468750057,51.80268554687501],[6.198828125000034,51.45],[6.129980468750034,51.14741210937501],[5.857519531250034,51.030126953125006],[6.048437500000034,50.90488281250006],[5.993945312500017,50.75043945312504],[5.693554687500011,50.774755859375006],[5.796484375000034,51.153076171875],[5.214160156250045,51.278955078124966],[5.03095703125004,51.46909179687498],[4.226171875000034,51.38647460937503]]],[[[5.325781250000063,53.38574218750003],[5.190234375000074,53.39179687500001],[5.582617187500063,53.438085937500034],[5.325781250000063,53.38574218750003]]]]},"properties":{"name":"Netherlands","childNum":6,"cp":[5.0752777,52.358465]}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[5.085839843750023,60.30756835937501],[5.089062500000068,60.188769531250045],[4.95722656250004,60.44726562500006],[5.085839843750023,60.30756835937501]]],[[[4.958691406250068,61.084570312500034],[4.79902343750004,61.08271484375001],[4.861621093749989,61.19384765625],[4.958691406250068,61.084570312500034]]],[[[8.10273437500004,63.33759765625004],[7.804003906250017,63.413916015625034],[8.073535156250045,63.47080078124998],[8.10273437500004,63.33759765625004]]],[[[8.470800781250063,63.66713867187502],[8.287109375000028,63.68715820312502],[8.764648437500057,63.804638671874955],[8.78652343750008,63.703466796875034],[8.470800781250063,63.66713867187502]]],[[[11.2314453125,64.865869140625],[10.739843750000034,64.87031250000001],[11.02099609375,64.97871093749995],[11.2314453125,64.865869140625]]],[[[12.971777343750063,67.87412109375],[12.824023437500074,67.82124023437498],[13.068066406250068,68.07133789062505],[12.971777343750063,67.87412109375]]],[[[13.872851562500045,68.26533203125004],[14.096777343750034,68.218603515625],[13.229394531250051,67.995361328125],[13.300195312499994,68.16044921875007],[13.872851562500045,68.26533203125004]]],[[[15.207128906250006,68.943115234375],[15.222070312500023,68.61630859375003],[14.404687500000051,68.663232421875],[15.037792968750068,69.00053710937507],[15.207128906250006,68.943115234375]]],[[[15.760351562500006,68.56123046875001],[16.328906250000017,68.87631835937498],[16.519238281250068,68.63300781249998],[15.975292968750011,68.402490234375],[14.257519531249983,68.19077148437503],[15.412597656250028,68.61582031250003],[15.483007812500006,69.04345703125003],[16.04804687500001,69.30205078125002],[15.760351562500006,68.56123046875001]]],[[[17.503027343750034,69.59624023437502],[18.004101562500068,69.50498046874998],[17.95068359375003,69.19814453125],[17.487890625000063,69.19682617187499],[17.08251953124997,69.013671875],[16.81044921875008,69.07070312499997],[17.001757812500045,69.36191406250006],[17.36083984375003,69.38149414062497],[17.503027343750034,69.59624023437502]]],[[[29.956152343750006,69.79677734375002],[29.766210937500006,69.76752929687501],[29.835839843749994,69.90556640625005],[29.956152343750006,69.79677734375002]]],[[[20.779199218750023,70.08974609375002],[20.46425781250005,70.0765625],[20.492773437500006,70.20332031249995],[20.78603515625008,70.21953124999999],[20.779199218750023,70.08974609375002]]],[[[19.25507812500001,70.06640625000006],[19.607812500000023,70.019140625],[19.334765625000074,69.82026367187501],[18.784765625000034,69.57900390624997],[18.12988281250003,69.557861328125],[18.34931640625004,69.76787109374999],[18.67402343750004,69.78164062500002],[19.13271484375005,70.24414062500003],[19.25507812500001,70.06640625000006]]],[[[19.76748046875005,70.21669921875002],[20.005957031250034,70.07622070312502],[19.599023437499994,70.26616210937507],[19.76748046875005,70.21669921875002]]],[[[23.615332031250034,70.54931640625003],[23.15917968750003,70.28261718750005],[22.941015625000063,70.444580078125],[23.546679687500017,70.61708984374997],[23.615332031250034,70.54931640625003]]],[[[24.01757812500003,70.56738281249997],[23.716601562500074,70.561865234375],[23.778417968750063,70.74736328125005],[24.01757812500003,70.56738281249997]]],[[[23.440527343750063,70.81577148437503],[22.8291015625,70.54155273437505],[22.358691406250017,70.514794921875],[21.99453125000008,70.65712890624997],[23.440527343750063,70.81577148437503]]],[[[30.869726562500006,69.78344726562506],[30.860742187499994,69.53842773437503],[30.18017578124997,69.63583984375],[30.08730468750005,69.43286132812503],[29.38828125,69.29814453125005],[28.96582031250003,69.02197265625],[28.846289062500006,69.17690429687502],[29.33339843750005,69.47299804687503],[29.14160156250003,69.67143554687505],[27.747851562500045,70.06484375],[27.127539062500063,69.90649414062497],[26.525390625000057,69.91503906250003],[26.07246093750004,69.69155273437497],[25.748339843750017,68.99013671875],[24.94140625000003,68.59326171875006],[23.85400390625,68.80590820312503],[23.324023437500017,68.64897460937502],[22.410937500000074,68.719873046875],[21.59375,69.273583984375],[21.06611328125001,69.21411132812497],[21.065722656250017,69.04174804687503],[20.622167968750006,69.036865234375],[20.116699218750057,69.02089843750005],[20.348046875000023,68.84873046875003],[19.969824218750063,68.35639648437501],[18.303027343750045,68.55541992187497],[17.91669921875001,67.96489257812502],[17.324609375000023,68.10380859374999],[16.783593750000023,67.89501953125],[16.12744140625,67.42583007812507],[16.40351562500004,67.05498046875002],[15.422949218750006,66.48984374999998],[15.483789062500051,66.30595703124999],[14.543261718750045,66.12934570312498],[14.47968750000004,65.30146484374998],[13.650292968750023,64.58154296874997],[14.077636718750028,64.464013671875],[14.141210937500006,64.17353515624998],[13.960546875000063,64.01401367187498],[13.203515625000023,64.07509765625],[12.792773437500017,64],[12.175195312500051,63.595947265625],[11.999902343750051,63.29169921875001],[12.303515625000074,62.28559570312501],[12.155371093750006,61.720751953125045],[12.88076171875008,61.35229492187506],[12.706054687500028,61.059863281250074],[12.29414062500004,61.00268554687506],[12.588671874999989,60.450732421875045],[12.486132812500074,60.10678710937506],[11.680761718750034,59.59228515625003],[11.798144531250074,59.28989257812498],[11.64277343750004,58.92607421875002],[11.470703125000057,58.909521484375034],[11.388281250000063,59.036523437499966],[10.834472656250028,59.18393554687498],[10.595312500000063,59.764550781249966],[10.179394531250068,59.00927734375003],[9.842578125000017,58.95849609374997],[9.557226562500063,59.11269531250002],[9.65693359375004,58.97119140624997],[8.166113281250063,58.145312500000045],[7.0048828125,58.024218750000074],[6.877050781250006,58.15073242187498],[6.590527343750068,58.09731445312502],[6.659863281250068,58.26274414062499],[5.706835937500074,58.52363281250001],[5.55556640625008,58.975195312500006],[6.099023437500023,58.87026367187502],[6.363281250000028,59.00092773437501],[6.099414062500017,58.951953125000074],[5.88916015625,59.097949218750045],[5.951855468750068,59.299072265625],[6.415332031250074,59.547119140625],[5.17324218750008,59.16254882812498],[5.2421875,59.564306640625034],[5.472460937500017,59.713085937499955],[5.77216796875004,59.66093749999999],[6.216601562499989,59.818359375],[5.73046875,59.863085937500045],[6.348730468750006,60.35297851562504],[6.57363281250008,60.36059570312497],[6.526855468750057,60.152929687500034],[6.995703125,60.511962890625],[6.1533203125,60.34624023437499],[5.145800781250074,59.63881835937502],[5.205664062500006,60.087939453125045],[5.688574218749977,60.12319335937502],[5.285839843750011,60.20571289062505],[5.13710937500008,60.445605468750074],[5.648339843750051,60.68798828124997],[5.244042968750023,60.569580078125],[5.115820312500006,60.63598632812503],[5.008593750000017,61.038183593750006],[6.777832031250028,61.142431640625006],[7.038671875000063,60.952929687500045],[7.040136718750006,61.091162109375034],[7.604492187500057,61.210546875000034],[7.34658203125008,61.30058593749999],[7.442578125000011,61.43461914062502],[7.173535156250011,61.16596679687501],[6.599902343750017,61.28964843749998],[6.383496093750068,61.133886718750034],[5.451269531250034,61.10234375000002],[5.106738281250017,61.187548828125045],[5.002734375000074,61.43359375],[5.338671875000017,61.485498046874994],[4.927832031249977,61.71069335937506],[4.93007812499999,61.878320312499994],[6.01582031250004,61.7875],[6.730761718750045,61.86977539062505],[5.266894531250045,61.935595703125045],[5.143164062500063,62.159912109375],[5.908300781249977,62.41601562500003],[6.083496093750057,62.349609375],[6.580078125000057,62.407275390625045],[6.692382812500028,62.46806640624999],[6.136132812500051,62.40747070312497],[6.352929687500051,62.61113281249999],[7.653125,62.56401367187499],[7.538378906250074,62.67207031249998],[8.045507812500006,62.77124023437503],[6.734960937500006,62.72070312500003],[6.940429687500028,62.930468750000045],[7.571875,63.09951171875002],[8.100585937500028,63.090966796874966],[8.623144531250006,62.84624023437502],[8.158007812500017,63.16152343750005],[8.635546875000045,63.34233398437502],[8.360742187500023,63.498876953125034],[8.576171875000028,63.60117187499998],[9.135839843750006,63.593652343749966],[9.156054687500045,63.459326171875034],[9.696875,63.624560546875045],[10.020996093750028,63.39082031250004],[10.76015625000008,63.461279296875006],[10.725292968750068,63.625],[11.370703125000034,63.804833984374994],[11.175585937500074,63.89887695312498],[11.457617187500063,64.00297851562505],[11.306640625000028,64.04887695312499],[10.91425781250004,63.92109374999998],[10.934863281250045,63.770214843749955],[10.055078125000051,63.5126953125],[9.567285156250051,63.70615234374998],[10.565625,64.418310546875],[11.523828125000051,64.744384765625],[11.632910156250063,64.81391601562495],[11.296777343750051,64.75478515625],[11.489355468750034,64.975830078125],[12.15966796875,65.178955078125],[12.508398437499977,65.09941406250005],[12.915527343750057,65.33925781249997],[12.417578125000063,65.18408203124997],[12.133886718749977,65.27915039062498],[12.68886718750008,65.90219726562498],[13.033105468750051,65.95625],[12.783789062500063,66.10043945312506],[14.034179687500057,66.29755859374998],[13.118847656250011,66.23066406250004],[13.211425781250028,66.64082031250001],[13.959472656250028,66.79433593750002],[13.651562500000011,66.90708007812498],[14.10878906250008,67.11923828125003],[15.41572265625004,67.20244140625002],[14.441699218750045,67.27138671875005],[14.961914062500057,67.57426757812502],[15.59443359375004,67.34853515625005],[15.691503906250006,67.52138671875],[15.24873046875004,67.6021484375],[15.303906250000011,67.76528320312502],[14.854687500000068,67.66333007812506],[14.798925781250063,67.80932617187503],[15.13427734375,67.97270507812502],[15.621386718750017,67.94829101562502],[15.316015624999977,68.06875],[16.007910156250006,68.22871093750004],[16.312304687500017,67.88144531249998],[16.20380859375001,68.31674804687503],[17.552832031250063,68.42626953125006],[16.51435546875004,68.53256835937503],[18.101464843749994,69.15629882812499],[18.259765625,69.47060546875],[18.915917968750023,69.33559570312502],[18.614453125000068,69.49057617187498],[19.197265625000057,69.74785156249999],[19.722460937500017,69.78164062500002],[19.64150390625005,69.42402343750001],[20.324218750000057,69.94531249999997],[20.054492187500074,69.33266601562497],[20.486718750000023,69.54208984375],[20.739453124999983,69.52050781250003],[20.622070312500057,69.91391601562498],[21.163085937500057,69.88950195312498],[21.432910156250045,70.01318359375006],[21.974707031250034,69.83457031249998],[21.355761718750045,70.23339843749997],[22.321972656250068,70.264501953125],[22.684570312500057,70.374755859375],[23.35390625000008,69.98339843750003],[23.3291015625,70.20722656249995],[24.420019531250034,70.70200195312503],[24.263476562500017,70.82631835937497],[24.658007812500017,71.00102539062505],[25.264648437500057,70.843505859375],[25.768164062500063,70.85317382812502],[25.043847656250023,70.10903320312502],[26.66132812500004,70.93974609374999],[26.585058593750034,70.41000976562498],[26.989355468750063,70.51137695312502],[27.183691406250034,70.74404296875],[27.546484375000063,70.80400390625005],[27.23525390625008,70.94721679687498],[27.59707031250005,71.09130859375003],[28.392285156250068,70.97529296875004],[27.898046875,70.67792968750001],[28.271777343750017,70.66796875000003],[28.192968750000034,70.24858398437505],[28.83154296875003,70.86396484375001],[29.7375,70.646826171875],[30.065136718750097,70.70297851562498],[30.944140625000017,70.27441406249997],[30.262988281250074,70.12470703125004],[28.804296875000063,70.09252929687506],[29.601367187500017,69.97675781249998],[29.792089843750063,69.727880859375],[30.08828125,69.71757812500005],[30.237597656250017,69.86220703125002],[30.428320312500006,69.722265625],[30.869726562500006,69.78344726562506]]],[[[25.58632812500005,71.14208984375],[26.13378906250003,70.99580078125004],[25.582031250000057,70.960791015625],[25.31494140625,71.03413085937504],[25.58632812500005,71.14208984375]]],[[[-8.953564453124983,70.83916015625002],[-8.001367187499966,71.17768554687495],[-8.002099609374937,71.04125976562497],[-8.953564453124983,70.83916015625002]]],[[[19.219335937500006,74.39101562500002],[18.86123046875008,74.51416015624997],[19.182910156250045,74.51791992187503],[19.219335937500006,74.39101562500002]]],[[[21.60810546875004,78.59570312499997],[22.04316406250004,78.57695312500007],[22.29951171875004,78.22817382812497],[23.451953125000074,78.14946289062502],[23.11669921874997,77.99150390624999],[24.901855468750057,77.756591796875],[22.55371093750003,77.26665039062502],[22.685351562500045,77.55351562500002],[20.928125,77.45966796874998],[21.653125,77.92353515624998],[20.22792968750005,78.47783203125005],[21.60810546875004,78.59570312499997]]],[[[11.250292968750017,78.610693359375],[12.116406250000068,78.232568359375],[11.121289062500011,78.46328125],[10.558203125000063,78.90292968750003],[11.250292968750017,78.610693359375]]],[[[29.047070312500068,78.91206054687504],[29.69667968750005,78.90473632812495],[27.88906250000005,78.8521484375],[28.511132812500023,78.96733398437502],[29.047070312500068,78.91206054687504]]],[[[16.786718750000034,79.90673828125],[17.834570312499977,79.80004882812503],[17.66875,79.38593750000004],[18.39736328125008,79.60517578125001],[18.677832031250006,79.26171875000003],[19.893554687500057,79.05620117187499],[20.61103515625004,79.10664062499998],[21.388769531250034,78.74042968749998],[19.67675781250003,78.60957031249995],[16.700488281250045,76.57929687499995],[14.365820312500034,77.23447265625003],[13.995703125000034,77.50820312500002],[14.69501953125004,77.525048828125],[14.920800781250023,77.68881835937506],[17.033300781250006,77.79770507812503],[16.91406250000003,77.89799804687505],[14.089941406250063,77.77138671875],[13.680566406250051,78.028125],[14.307226562500006,78.00507812500001],[15.783886718750011,78.32705078125005],[17.00292968750003,78.36938476562497],[16.44863281250008,78.50356445312502],[16.78261718750008,78.66362304687505],[15.417382812500023,78.47324218749998],[15.384179687500023,78.77119140625001],[15.01630859375004,78.63012695312497],[14.689257812500017,78.720947265625],[14.638281250000034,78.41459960937502],[14.110449218750063,78.27089843749997],[13.150195312499989,78.2375],[11.365429687500011,78.95039062500004],[12.323437500000068,78.91425781249995],[12.083984375000028,79.26752929687498],[11.579785156250068,79.28349609375005],[11.208105468750034,79.12963867187503],[10.737597656250017,79.52016601562502],[10.804003906250045,79.79877929687504],[11.150390625,79.71699218749998],[11.702343750000011,79.82060546875005],[12.287792968750068,79.713134765625],[12.279980468749983,79.81596679687507],[13.692871093749972,79.860986328125],[13.777539062500011,79.71528320312498],[12.555371093750068,79.56948242187502],[13.333789062500017,79.57480468750006],[14.029589843750017,79.34414062500005],[14.59365234375008,79.79873046875002],[16.34375,78.97612304687502],[15.816113281250011,79.68183593750001],[16.245703125000034,80.04946289062502],[16.786718750000034,79.90673828125]]],[[[32.52597656250006,80.119140625],[31.48193359374997,80.10791015625003],[33.62929687499999,80.21743164062497],[32.52597656250006,80.119140625]]],[[[20.897851562500023,80.24995117187501],[22.289746093749983,80.04921874999997],[22.450781250000034,80.40224609375005],[23.00800781250004,80.473974609375],[23.114550781250074,80.18696289062498],[24.29755859375004,80.36040039062505],[26.86083984375,80.16000976562498],[27.19863281250008,79.90659179687506],[25.641210937500034,79.40302734374995],[23.94775390625,79.19428710937498],[22.903710937500023,79.23066406250001],[22.865527343750045,79.41186523437497],[20.861132812500017,79.39785156249997],[20.128222656250074,79.489599609375],[19.674609375000045,79.591162109375],[20.784082031250023,79.74858398437502],[18.725,79.7607421875],[18.25537109375,79.92919921875003],[18.855957031250057,80.03662109375],[17.91689453125005,80.14311523437502],[19.343359375000063,80.11640624999998],[19.733300781249994,80.47783203124999],[20.897851562500023,80.24995117187501]]]]},"properties":{"name":"Norway","childNum":27}},{"geometry":{"type":"Polygon","coordinates":[[[87.984375,27.133935546874994],[87.9931640625,27.086083984374994],[88.11103515625001,26.928466796875],[88.1572265625,26.807324218749997],[88.16152343750002,26.724804687499997],[88.11152343750001,26.58642578125],[88.05488281250001,26.430029296875],[88.02695312500003,26.39501953125],[87.9951171875,26.382373046874996],[87.28740234374999,26.360302734374997],[87.01640624999999,26.555419921875],[86.70136718750001,26.43505859375],[86.00732421875,26.649365234374997],[85.79453125000003,26.604150390624994],[85.7373046875,26.63974609375],[85.6484375,26.829003906249994],[85.56845703125003,26.83984375],[85.29296875,26.741015625],[85.19179687500002,26.766552734374997],[84.68535156249999,27.041015625],[84.65380859375,27.091699218749994],[84.65478515625,27.203662109374996],[84.64072265625003,27.249853515625],[84.61015624999999,27.298681640625],[84.48085937500002,27.348193359374996],[84.22978515624999,27.42783203125],[84.09101562500001,27.491357421874994],[83.82880859375001,27.377832031249994],[83.74697265625002,27.395947265624997],[83.55166015625002,27.456347656249996],[83.44716796875002,27.46533203125],[83.38398437500001,27.44482421875],[83.36943359374999,27.41025390625],[83.28974609375001,27.370996093749994],[82.7333984375,27.518994140624997],[82.71083984375002,27.5966796875],[82.67734375000003,27.6734375],[82.6298828125,27.687060546874996],[82.45136718750001,27.671826171874997],[82.28769531250003,27.756542968749997],[82.11191406250003,27.864941406249997],[82.03701171875002,27.900585937499997],[81.98769531250002,27.913769531249997],[81.94521484375002,27.899267578125],[81.896875,27.874462890624997],[81.85263671875003,27.867089843749994],[81.1689453125,28.335009765624996],[80.58701171875003,28.649609375],[80.51787109374999,28.665185546874994],[80.49580078125001,28.635791015624996],[80.47910156250003,28.604882812499994],[80.41855468750003,28.612011718749997],[80.32480468750003,28.66640625],[80.2265625,28.723339843749997],[80.07070312500002,28.83017578125],[80.05166015625002,28.8703125],[80.08457031250003,28.994189453124996],[80.13046875000003,29.100390625],[80.16953125000003,29.124316406249996],[80.23300781250003,29.194628906249996],[80.25595703125003,29.318017578124994],[80.2548828125,29.42333984375],[80.31689453125,29.572070312499996],[80.40185546875,29.730273437499996],[80.54902343750001,29.899804687499994],[80.81992187500003,30.119335937499997],[80.84814453125,30.13974609375],[80.90761718750002,30.171923828124996],[80.96611328124999,30.180029296875],[81.17714843750002,30.039892578125],[81.25507812500001,30.093310546874996],[81.41718750000001,30.337597656249997],[81.64189453124999,30.3875],[81.85488281250002,30.36240234375],[82.04335937500002,30.3267578125],[82.220703125,30.063867187499994],[83.15546875000001,29.612646484375],[83.58349609375,29.18359375],[83.93593750000002,29.279492187499997],[84.02197265625,29.253857421874997],[84.10136718749999,29.219970703125],[84.12783203125002,29.156298828124996],[84.17558593749999,29.036376953125],[84.22871093750001,28.911767578124994],[84.796875,28.560205078124994],[84.85507812500003,28.553613281249994],[85.06914062499999,28.609667968749996],[85.12636718750002,28.60263671875],[85.15908203125002,28.592236328124997],[85.16015625,28.571875],[85.12148437500002,28.484277343749994],[85.08857421875001,28.372265625],[85.12246093750002,28.315966796874996],[85.21210937500001,28.292626953124994],[85.41064453125,28.276025390624994],[85.67832031250003,28.27744140625],[85.75947265625001,28.220654296874997],[85.84023437500002,28.1353515625],[85.92167968749999,27.989697265624997],[85.9541015625,27.92822265625],[85.99453125000002,27.910400390625],[86.06416015625001,27.934716796874994],[86.07871093750003,28.08359375],[86.13701171874999,28.11435546875],[86.21796875000001,28.0220703125],[86.32861328125,27.959521484374996],[86.40869140625,27.928662109374997],[86.51689453124999,27.963525390624994],[86.55449218749999,28.085205078125],[86.61445312500001,28.10302734375],[86.69052734375003,28.094921875],[86.71962890625002,28.070654296875],[86.75039062500002,28.0220703125],[86.93378906250001,27.968457031249997],[87.02011718750003,27.928662109374997],[87.14140624999999,27.838330078124997],[87.29072265625001,27.821923828124994],[87.62255859375,27.815185546875],[87.86074218750002,27.886083984375],[88.10976562500002,27.87060546875],[87.984375,27.133935546874994]]]},"properties":{"name":"Nepal","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[169.17822265624997,-52.497265625],[169.12753906250006,-52.570312499999964],[169.02177734375002,-52.49541015624998],[169.17822265624997,-52.497265625]]],[[[166.22109375,-50.76152343749997],[166.2428710937501,-50.84570312499998],[165.88916015624997,-50.80771484374996],[166.10136718750002,-50.538964843750016],[166.26748046875005,-50.558593750000014],[166.22109375,-50.76152343749997]]],[[[168.14492187500005,-46.862207031249966],[168.04316406250004,-46.9326171875],[168.2409179687501,-47.070019531250026],[167.52197265624997,-47.258691406249994],[167.80078125000003,-46.90654296875002],[167.78398437500007,-46.699804687500006],[167.9557617187501,-46.69443359374998],[168.14492187500005,-46.862207031249966]]],[[[166.97949218749997,-45.17968750000003],[167.02265625000004,-45.299804687499986],[166.89267578125012,-45.24052734374999],[166.97949218749997,-45.17968750000003]]],[[[-176.17763671874997,-43.74033203124998],[-176.38173828124997,-43.86679687499998],[-176.40737304687497,-43.7609375],[-176.516552734375,-43.78476562499996],[-176.33359375000003,-44.02529296875004],[-176.51552734374997,-44.11660156249998],[-176.62934570312495,-44.036132812500014],[-176.55512695312504,-43.85195312499998],[-176.84765625000003,-43.82392578125004],[-176.56611328124995,-43.717578125000045],[-176.17763671874997,-43.74033203124998]]],[[[173.91464843750018,-40.86367187500004],[173.78085937500012,-40.921777343749966],[173.964453125,-40.71298828124998],[173.91464843750018,-40.86367187500004]]],[[[173.11533203125006,-41.27929687499997],[173.94716796875005,-40.92412109375],[173.79785156250003,-41.271972656249986],[173.99941406250005,-40.99326171874996],[174.30253906249996,-41.019531249999986],[174.03857421875003,-41.24189453125],[174.37011718750009,-41.1037109375],[174.06933593750009,-41.42949218750002],[174.08369140625015,-41.67080078124998],[174.2831054687501,-41.740625],[173.22119140624997,-42.976562499999986],[172.62402343749997,-43.27246093749996],[172.73476562500005,-43.35478515625003],[172.52666015625002,-43.464746093749966],[172.69345703125006,-43.444335937499986],[172.80703125000005,-43.620996093749994],[173.07324218750003,-43.676171874999966],[173.065625,-43.87460937499998],[172.50273437500002,-43.84365234374998],[172.48037109375,-43.726660156250034],[172.29658203125004,-43.867871093750026],[172.035546875,-43.70175781250002],[172.17978515625006,-43.895996093749986],[171.24072265624997,-44.26416015625003],[171.14628906250002,-44.9123046875],[170.99902343750003,-44.91142578124999],[171.11328125000003,-45.03925781250001],[170.7005859375,-45.68427734374997],[170.77626953125005,-45.870898437499974],[170.4191406250001,-45.94101562499996],[169.68662109375006,-46.55166015625002],[169.34228515625003,-46.62050781250001],[168.38212890625007,-46.60537109374995],[168.1891601562501,-46.362207031249966],[167.8419921875001,-46.366210937499986],[167.539453125,-46.14853515624996],[167.36894531250007,-46.24150390624999],[166.73154296875006,-46.19785156249998],[166.91669921875004,-45.95722656249998],[166.64990234374997,-46.04169921875004],[166.71796875000004,-45.88935546875001],[166.49316406249997,-45.9638671875],[166.48828124999997,-45.83183593750002],[167.0033203125,-45.71210937500004],[166.79765625000002,-45.64560546874999],[166.99082031250012,-45.531738281249986],[166.73398437500012,-45.54355468749999],[166.74306640625,-45.46845703124997],[166.91992187499997,-45.40791015624998],[166.86923828125006,-45.31123046875],[167.15566406250005,-45.410937499999974],[167.23007812500012,-45.29033203125],[167.02587890624997,-45.12363281249998],[167.25947265625004,-45.08222656249997],[167.19453125000004,-44.963476562500034],[167.41074218750006,-44.82792968750003],[167.4662109375,-44.958300781250045],[167.48496093750006,-44.77138671874998],[167.78701171875,-44.59501953125002],[167.90898437500002,-44.66474609375001],[167.85654296875012,-44.50068359374998],[168.45742187500005,-44.030566406250045],[169.17890625000004,-43.9130859375],[169.16953125000006,-43.77705078125],[169.83388671875,-43.53701171875004],[170.24023437499997,-43.163867187500045],[170.39609375000012,-43.18222656249996],[170.30283203125012,-43.10761718750004],[170.61181640625003,-43.091796875000014],[170.5236328125001,-43.00898437500001],[170.6654296875,-42.961230468749974],[170.73525390625005,-43.029785156249986],[170.96992187500004,-42.71835937499996],[171.01171875000003,-42.88505859374999],[171.027734375,-42.696093750000045],[171.31337890625005,-42.460156250000026],[171.48623046875,-41.7947265625],[171.94804687500002,-41.53867187499996],[172.13945312500002,-40.947265625000014],[172.640625,-40.51826171875001],[172.94365234375007,-40.51875],[172.73261718750004,-40.54375],[172.70439453125002,-40.6677734375],[172.988671875,-40.84824218749999],[173.11533203125006,-41.27929687499997]]],[[[175.54316406250015,-36.279296874999986],[175.34619140624997,-36.217773437499986],[175.3895507812501,-36.07773437499996],[175.54316406250015,-36.279296874999986]]],[[[173.26943359375,-34.93476562499998],[173.44785156250012,-34.844335937500034],[173.47265625000003,-34.94697265624998],[174.10400390625003,-35.14287109375002],[174.1431640625,-35.3],[174.32031250000003,-35.246679687500034],[174.58066406250018,-35.78554687500004],[174.39580078124996,-35.79736328124996],[174.8021484375,-36.30947265625001],[174.72246093750007,-36.84121093749998],[175.29951171875004,-36.99326171874996],[175.38535156250012,-37.206933593749966],[175.54248046874997,-37.2013671875],[175.46083984375005,-36.475683593750034],[175.77216796875004,-36.73515625],[176.10839843749997,-37.64511718749998],[177.27402343750012,-37.993457031249974],[178.0091796875,-37.55488281249998],[178.53623046875006,-37.69208984375004],[178.26767578125006,-38.551171875],[177.976171875,-38.72226562500005],[177.90878906250012,-39.23955078125],[177.52294921875003,-39.07382812499999],[177.07675781250012,-39.22177734375002],[176.93925781249996,-39.55527343750002],[177.10986328125009,-39.673144531250045],[176.8421875000001,-40.15781250000002],[175.98291015625003,-41.21328125000002],[175.30976562499998,-41.610644531249974],[175.16562500000012,-41.41738281249995],[174.88134765624997,-41.42402343749997],[174.8656250000001,-41.223046874999966],[174.63535156250012,-41.28945312499999],[175.1625,-40.62158203125],[175.25410156250004,-40.28935546875],[175.1559570312501,-40.11494140625],[175.00927734375009,-39.95214843749996],[173.93437500000013,-39.50908203125002],[173.76367187499997,-39.31875],[173.84433593750006,-39.13935546875001],[174.39843749999997,-38.96259765624998],[174.59736328124998,-38.78505859374995],[174.80166015625005,-37.895507812500014],[174.92802734375002,-37.80449218750003],[174.58583984374994,-37.09775390625002],[174.73427734375,-37.21523437499998],[174.92890625000004,-37.084765625000045],[174.78203125000013,-36.94375],[174.47558593750009,-36.94189453124997],[174.1888671875001,-36.492285156250034],[174.4015625000001,-36.60195312499999],[174.39277343750004,-36.24003906249999],[174.26787109375002,-36.16308593750003],[174.25371093749996,-36.24912109374998],[174.03642578125013,-36.12246093750001],[173.91445312499994,-35.908691406249986],[173.91728515625002,-36.01816406249999],[174.16640624999994,-36.327636718749986],[174.05468749999991,-36.35976562500004],[173.41220703125012,-35.542578125],[173.62617187500004,-35.31914062499996],[173.3763671875001,-35.50009765624996],[173.31396484375003,-35.44335937499996],[173.11669921874997,-35.205273437500026],[173.190625,-35.01621093749998],[172.70595703125005,-34.45517578124998],[173.04394531249997,-34.429101562499994],[172.96376953125,-34.53515625000003],[173.26943359375,-34.93476562499998]]]]},"properties":{"name":"New Zealand","childNum":9}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[58.722070312499994,20.21875],[58.640917968750074,20.210693359375057],[58.64121093750006,20.33735351562501],[58.884375,20.680566406250023],[58.95078125000006,20.516162109375017],[58.722070312499994,20.21875]]],[[[56.38798828125002,24.97919921875004],[56.640625,24.4703125],[57.12304687500003,23.980712890625],[58.773046875,23.517187499999977],[59.42939453125004,22.660839843749955],[59.82324218749997,22.50898437500004],[59.8,22.21992187500001],[59.37148437500005,21.498828125000017],[58.89570312500004,21.11279296874997],[58.47421875000006,20.406884765624966],[58.20898437500003,20.423974609374994],[58.245019531249994,20.599218749999977],[58.16943359375003,20.58950195312505],[57.86181640624997,20.24414062500003],[57.71416015625002,19.678417968749983],[57.81162109375006,19.01708984374997],[56.825976562500074,18.753515625],[56.3834960937501,17.98798828125001],[55.479101562500006,17.84326171875003],[55.25537109375003,17.58564453125004],[55.275195312500074,17.320898437500006],[55.06416015625004,17.038916015625034],[54.06816406250002,17.005517578124966],[53.60986328124997,16.75996093750004],[53.08564453125004,16.648388671874955],[51.977636718750006,18.996142578125074],[54.97734375000002,19.995947265625006],[55.64101562499999,22.001855468749994],[55.185839843750074,22.7041015625],[55.1999023437501,23.034765625000034],[55.53164062499999,23.81904296875001],[55.4684570312501,23.94111328125001],[55.98515625000002,24.063378906249966],[55.92861328125005,24.215136718750074],[55.76083984375006,24.24267578125],[55.795703125000074,24.868115234374955],[56.00058593750006,24.953222656249977],[56.06386718750005,24.73876953125],[56.38798828125002,24.97919921875004]]],[[[56.29785156250003,25.650683593750045],[56.144628906250006,25.690527343750006],[56.16748046875003,26.047460937499977],[56.08046875,26.06264648437505],[56.41308593749997,26.351171875000034],[56.29785156250003,25.650683593750045]]]]},"properties":{"name":"Oman","childNum":3}},{"geometry":{"type":"Polygon","coordinates":[[[73.08961802927895,36.86435907947333],[73.08203125000107,36.43949943991182],[72.31128647748268,35.77290936638241],[73.13410859949555,34.82510160558277],[73.19895048106557,33.88770931468204],[74.00809389139292,33.25375789331485],[73.98984375,33.22119140625],[74.30361328125002,32.991796875],[74.30546875000002,32.810449218749994],[74.35458984375,32.768701171874994],[74.58828125000002,32.753222656249996],[74.632421875,32.770898437499994],[74.66328125000001,32.757666015625],[74.64335937500002,32.607714843749996],[74.68574218750001,32.493798828124994],[74.78886718750002,32.4578125],[74.9873046875,32.462207031249996],[75.33349609375,32.279199218749994],[75.25410156250001,32.14033203125],[75.13876953125,32.104785156249996],[75.07148437500001,32.08935546875],[74.73945312500001,31.948828125],[74.6357421875,31.88974609375],[74.55556640625002,31.818554687499997],[74.5259765625,31.76513671875],[74.50996093750001,31.712939453124996],[74.58183593750002,31.52392578125],[74.59394531250001,31.465380859374996],[74.53496093750002,31.261376953124994],[74.51767578125,31.185595703124996],[74.6103515625,31.112841796874996],[74.62578125000002,31.06875],[74.6328125,31.03466796875],[74.509765625,30.959667968749997],[74.38037109375,30.893408203125],[74.33935546875,30.8935546875],[74.00898437500001,30.519677734374994],[73.89931640625002,30.435351562499996],[73.88271484375002,30.3521484375],[73.92460937500002,30.28164062499999],[73.93339843750002,30.222070312499994],[73.88652343750002,30.162011718749994],[73.8091796875,30.093359375],[73.38164062500002,29.934375],[72.9033203125,29.028759765624997],[72.34189453125,28.751904296874997],[72.2919921875,28.697265625],[72.128515625,28.346337890624994],[71.94804687500002,28.177294921874996],[71.88886718750001,28.0474609375],[71.87031250000001,27.9625],[71.54296875,27.869873046875],[71.18476562500001,27.831640625],[70.87490234375002,27.714453125],[70.79794921875,27.709619140624994],[70.69160156250001,27.768994140624997],[70.62910156250001,27.937451171874997],[70.40371093750002,28.025048828124994],[70.24433593750001,27.934130859374996],[70.1939453125,27.894873046875],[70.14453125,27.849023437499994],[70.0498046875,27.694726562499994],[69.89628906250002,27.4736328125],[69.56796875,27.174609375],[69.47001953125002,26.804443359375],[70.11464843750002,26.548046875],[70.14921875000002,26.347558593749994],[70.1001953125,25.910058593749994],[70.2646484375,25.70654296875],[70.3251953125,25.685742187499997],[70.44853515625002,25.681347656249997],[70.505859375,25.685302734375],[70.56953125000001,25.705957031249994],[70.6484375,25.666943359374997],[70.65205078125001,25.422900390625003],[70.87773437500002,25.06298828125],[70.95087890625001,24.8916015625],[71.02070312500001,24.75766601562499],[71.0478515625,24.687744140625],[71.00234375000002,24.65390625],[70.97636718750002,24.61875],[70.96982421875,24.571875],[71.04531250000002,24.429980468750003],[71.04404296875,24.400097656249997],[70.98281250000002,24.361035156249997],[70.928125,24.362353515625003],[70.88623046875,24.34375],[70.80507812500002,24.261962890625],[70.76728515625001,24.245410156250003],[70.71630859375,24.237988281249997],[70.65947265625002,24.24609375],[70.57929687500001,24.279052734375],[70.55585937500001,24.331103515625003],[70.5650390625,24.385791015625003],[70.54677734375002,24.41831054687499],[70.2890625,24.35629882812499],[70.0982421875,24.2875],[69.80517578125,24.165234375],[69.71621093750002,24.172607421875],[69.63417968750002,24.22519531249999],[69.5591796875,24.273095703124994],[69.44345703125,24.275390625],[69.23505859375001,24.268261718749997],[69.11953125000002,24.26865234374999],[69.05156250000002,24.286328125],[68.98457031250001,24.273095703124994],[68.90078125000002,24.292431640624997],[68.86347656250001,24.266503906249994],[68.82832031250001,24.26401367187499],[68.78115234375002,24.313720703125],[68.75898437500001,24.30722656249999],[68.73964843750002,24.2919921875],[68.728125,24.265625],[68.72412109375,23.96469726562499],[68.48867187500002,23.967236328124997],[68.38125,23.950878906249997],[68.28251953125002,23.927978515625],[68.1650390625,23.857324218749994],[68.11552734375002,23.753369140624997],[67.8599609375,23.90268554687499],[67.66845703125,23.810986328124997],[67.309375,24.1748046875],[67.171484375,24.756103515625],[66.70302734375002,24.8609375],[66.69863281250002,25.226318359375],[66.32421875,25.601806640625],[66.13115234375002,25.49326171874999],[66.46767578125002,25.4453125],[64.77666015625002,25.307324218749997],[64.65898437500002,25.18408203125],[64.059375,25.40292968749999],[63.556640625,25.353173828124994],[63.49140625000001,25.210839843749994],[61.56689453125,25.186328125],[61.587890625,25.20234375],[61.61542968750001,25.2861328125],[61.64013671875,25.584619140624994],[61.67138671875,25.6923828125],[61.66181640625001,25.751269531250003],[61.66865234375001,25.768994140624997],[61.73769531250002,25.82109375],[61.75439453125,25.84335937499999],[61.78076171875,25.995849609375],[61.80996093750002,26.165283203125],[61.842382812500006,26.225927734375],[62.1259765625,26.368994140625],[62.239355468750006,26.35703125],[62.31230468750002,26.490869140624994],[63.168066406250006,26.665576171874996],[63.186132812500006,26.837597656249997],[63.24160156250002,26.86474609375],[63.25039062500002,26.879248046875],[63.24208984375002,27.077685546874996],[63.30517578125,27.124560546874996],[63.30156250000002,27.15146484375],[63.25625,27.207910156249994],[63.19609375000002,27.243945312499996],[63.16679687500002,27.252490234374996],[62.75273437500002,27.265625],[62.782324218750006,27.800537109375],[62.7625,28.202050781249994],[61.88984375000001,28.546533203124994],[61.15214843750002,29.542724609375],[61.0341796875,29.663427734375],[60.843359375,29.858691406249996],[61.22441406250002,29.749414062499994],[62.0009765625,29.530419921874994],[62.4765625,29.408349609374994],[63.56757812500001,29.497998046874997],[64.09873046875,29.391943359375],[64.39375,29.544335937499994],[65.09550781250002,29.559472656249994],[66.23125,29.86572265625],[66.346875,30.802783203124996],[66.82929687500001,31.263671875],[67.45283203125001,31.234619140625],[67.737890625,31.343945312499997],[67.57822265625,31.506494140624994],[68.16103515625002,31.802978515625],[68.59765625,31.802978515625],[68.86894531250002,31.634228515624997],[69.279296875,31.936816406249996],[69.24140625000001,32.433544921875],[69.5015625,33.020068359374996],[70.26113281250002,33.289013671875],[69.8896484375,34.007275390625],[70.65400390625001,33.952294921874994],[71.05156250000002,34.049707031249994],[71.095703125,34.369433593749996],[70.965625,34.53037109375],[71.62050781250002,35.183007812499994],[71.57197265625001,35.546826171875],[71.18505859375,36.04208984375],[71.23291015625,36.12177734375],[72.24980468750002,36.734716796875],[73.08961802927895,36.86435907947333]]]},"properties":{"name":"Pakistan","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-81.60327148437497,7.332812499999989],[-81.85205078125003,7.453320312500026],[-81.812158203125,7.59238281250002],[-81.72875976562494,7.62119140625002],[-81.60327148437497,7.332812499999989]]],[[[-78.89833984375002,8.27426757812502],[-78.960595703125,8.435839843749989],[-78.88325195312495,8.460253906249989],[-78.89833984375002,8.27426757812502]]],[[[-77.37421874999993,8.65830078125002],[-77.47851562499994,8.498437500000037],[-77.19599609374995,7.972460937500003],[-77.53828124999995,7.56625976562502],[-77.76191406249995,7.698828125000034],[-77.90117187499999,7.229345703125048],[-78.42158203124995,8.060986328125011],[-78.28735351562497,8.091796874999972],[-78.14189453125002,8.386083984374977],[-77.76054687499993,8.133251953124983],[-78.09946289062498,8.496972656250009],[-78.22304687500002,8.396630859374994],[-78.39921874999993,8.505664062500003],[-78.40986328124998,8.35532226562502],[-78.51406249999997,8.628173828125],[-79.08637695312495,8.997167968750034],[-79.50708007812494,8.97006835937502],[-79.68745117187493,8.850976562500009],[-79.81591796875,8.639208984375031],[-79.75043945312498,8.595507812500017],[-80.458984375,8.213867187499972],[-80.45810546875,8.077050781249994],[-80.01123046875,7.500048828125031],[-80.66669921874995,7.225683593750006],[-80.90122070312503,7.277148437500017],[-81.06386718749994,7.89975585937502],[-81.26840820312495,7.625488281250014],[-81.50415039062503,7.721191406249972],[-81.72763671875,8.137548828124977],[-82.15986328124995,8.19482421875],[-82.23544921874998,8.311035156250057],[-82.67954101562503,8.321972656249969],[-82.86611328124994,8.246337890625014],[-82.87934570312498,8.07065429687502],[-83.02734375,8.337744140624991],[-82.86162109374999,8.453515625000037],[-82.84477539062493,8.489355468749963],[-82.85571289062494,8.635302734375031],[-82.91704101562502,8.740332031250034],[-82.88198242187497,8.805322265625037],[-82.72783203125002,8.916064453125031],[-82.78305664062498,8.990283203124974],[-82.88134765625003,9.055859375000011],[-82.94033203124997,9.060107421874989],[-82.93984374999994,9.449169921875026],[-82.92504882812494,9.469042968749989],[-82.88896484374999,9.481005859375017],[-82.86015625,9.511474609375014],[-82.84399414062497,9.570800781250014],[-82.801025390625,9.591796875000028],[-82.64409179687502,9.505859375000028],[-82.56357421875003,9.576660156249972],[-82.50034179687503,9.523242187500017],[-82.37080078124993,9.428564453124991],[-82.33974609375,9.209179687499983],[-82.18813476562502,9.191748046874977],[-82.24418945312499,9.031494140625014],[-82.07788085937503,8.93486328124996],[-81.78022460937495,8.957226562499983],[-81.89448242187495,9.140429687500003],[-81.35478515624996,8.78056640624996],[-80.83867187499999,8.887207031250014],[-80.12709960937497,9.20991210937504],[-79.57729492187497,9.597851562500026],[-78.08276367187494,9.236279296874997],[-77.37421874999993,8.65830078125002]]]]},"properties":{"name":"Panama","childNum":3}},{"geometry":{"type":"Polygon","coordinates":[[[-73.137353515625,-6.4658203125],[-73.75810546874999,-6.90576171875],[-73.79301757812499,-7.135058593750003],[-73.758203125,-7.172753906250009],[-73.72041015625,-7.309277343750011],[-73.964306640625,-7.37890625],[-73.95849609375,-7.506640625],[-73.98173828124999,-7.535742187500006],[-74.00205078124999,-7.556054687500009],[-73.98173828124999,-7.585058593750006],[-73.946875,-7.611230468750009],[-73.89462890624999,-7.65478515625],[-73.82207031249999,-7.738964843750011],[-73.76689453124999,-7.753515625],[-73.72041015625,-7.782519531250003],[-73.73203125,-7.875390625],[-73.54912109374999,-8.345800781250006],[-73.39814453125,-8.458984375],[-73.36040039062499,-8.479296875],[-73.351708984375,-8.51416015625],[-73.35673828124999,-8.566992187500006],[-73.30244140625,-8.654003906250011],[-73.203125,-8.719335937500006],[-73.0705078125,-8.8828125],[-72.9740234375,-8.9931640625],[-72.970361328125,-9.1201171875],[-73.08984375,-9.265722656250006],[-73.209423828125,-9.411425781250003],[-72.379052734375,-9.51015625],[-72.181591796875,-10.003710937500003],[-71.33940429687499,-9.988574218750003],[-71.11528320312499,-9.852441406250009],[-71.041748046875,-9.81875],[-70.6369140625,-9.478222656250011],[-70.60791015625,-9.463671875],[-70.54111328124999,-9.4375],[-70.57016601562499,-9.48984375],[-70.592236328125,-9.54345703125],[-70.59916992187499,-9.620507812500009],[-70.642333984375,-11.01025390625],[-70.59653320312499,-10.976855468750003],[-70.53325195312499,-10.946875],[-70.45087890625,-11.024804687500009],[-70.39228515625,-11.05859375],[-70.3419921875,-11.066699218750003],[-70.29038085937499,-11.064257812500003],[-70.22006835937499,-11.04765625],[-70.06630859375,-10.982421875],[-69.9603515625,-10.929882812500011],[-69.839794921875,-10.933398437500003],[-69.6740234375,-10.9541015625],[-69.57861328125,-10.951757812500006],[-68.68525390625,-12.501953125],[-68.97861328124999,-12.880078125000011],[-69.07412109375,-13.682812500000011],[-68.87089843749999,-14.169726562500003],[-69.35947265624999,-14.7953125],[-69.37470703125,-14.962988281250006],[-69.17246093749999,-15.236621093750003],[-69.4208984375,-15.640625],[-69.21757812499999,-16.14912109375001],[-68.8427734375,-16.337890625],[-69.03291015625,-16.47597656250001],[-69.020703125,-16.6421875],[-69.62485351562499,-17.2001953125],[-69.645703125,-17.24853515625],[-69.521923828125,-17.388964843750003],[-69.510986328125,-17.46035156250001],[-69.51108398437499,-17.5048828125],[-69.5109375,-17.50605468750001],[-69.58642578125,-17.5732421875],[-69.684765625,-17.64980468750001],[-69.85209960937499,-17.70380859375001],[-69.80258789062499,-17.990234375],[-69.92636718749999,-18.2060546875],[-70.41826171874999,-18.34560546875001],[-71.33696289062499,-17.68251953125001],[-71.5322265625,-17.29433593750001],[-72.46767578125,-16.708105468750006],[-73.727685546875,-16.20166015625],[-75.104248046875,-15.411914062500003],[-75.533642578125,-14.89921875],[-75.93388671874999,-14.63359375],[-76.37646484375,-13.863085937500003],[-76.259228515625,-13.802832031250006],[-76.2236328125,-13.371191406250006],[-76.83212890624999,-12.348730468750006],[-77.152734375,-12.060351562500003],[-77.2203125,-11.663378906250003],[-77.633203125,-11.287792968750011],[-77.736083984375,-10.83671875],[-78.18559570312499,-10.089062500000011],[-78.76225585937499,-8.616992187500003],[-79.37724609374999,-7.835546875],[-79.99497070312499,-6.768945312500009],[-81.142041015625,-6.056738281250006],[-81.164306640625,-5.875292968750003],[-80.9306640625,-5.8408203125],[-80.88193359374999,-5.635058593750003],[-81.33662109375,-4.66953125],[-81.283203125,-4.322265625],[-80.503662109375,-3.49609375],[-80.324658203125,-3.387890625000011],[-80.24375,-3.576757812500006],[-80.19414062499999,-3.905859375],[-80.23051757812499,-3.924023437500011],[-80.26689453124999,-3.948828125],[-80.30327148437499,-4.005078125000011],[-80.43720703125,-3.978613281250006],[-80.49013671875,-4.010058593750003],[-80.510009765625,-4.069531250000011],[-80.49345703124999,-4.119140625],[-80.4884765625,-4.16552734375],[-80.453759765625,-4.205175781250006],[-80.35288085937499,-4.20849609375],[-80.44384765625,-4.335839843750009],[-80.4884765625,-4.393652343750006],[-80.47856445312499,-4.430078125],[-80.42416992187499,-4.46142578125],[-80.38349609375,-4.463671875],[-80.293359375,-4.416796875],[-80.1974609375,-4.31103515625],[-80.13955078125,-4.296093750000011],[-80.06352539062499,-4.327539062500009],[-79.962890625,-4.390332031250011],[-79.8451171875,-4.445898437500006],[-79.797265625,-4.476367187500003],[-79.71098632812499,-4.467578125],[-79.63852539062499,-4.454882812500003],[-79.57768554687499,-4.500585937500006],[-79.51616210937499,-4.539160156250006],[-79.501904296875,-4.670605468750011],[-79.45576171875,-4.766210937500006],[-79.3994140625,-4.840039062500011],[-79.33095703125,-4.927832031250006],[-79.26811523437499,-4.957617187500006],[-79.186669921875,-4.958203125000011],[-79.07626953124999,-4.990625],[-79.03330078124999,-4.969140625],[-78.995263671875,-4.908007812500003],[-78.97539062499999,-4.873242187500011],[-78.919189453125,-4.8583984375],[-78.92578125,-4.770703125000011],[-78.9076171875,-4.714453125],[-78.8615234375,-4.6650390625],[-78.68603515625,-4.562402343750009],[-78.64799804687499,-4.248144531250006],[-78.345361328125,-3.397363281250009],[-78.240380859375,-3.472558593750009],[-77.860595703125,-2.981640625000011],[-76.6791015625,-2.562597656250006],[-76.089794921875,-2.133105468750003],[-75.570556640625,-1.53125],[-75.42041015625,-0.962207031250003],[-75.40805664062499,-0.92431640625],[-75.24960937499999,-0.951855468750011],[-75.259375,-0.590136718750003],[-75.42470703125,-0.408886718750011],[-75.49106445312499,-0.248339843750003],[-75.56059570312499,-0.200097656250009],[-75.63203125,-0.157617187500009],[-75.62626953124999,-0.122851562500003],[-75.340478515625,-0.1421875],[-75.13837890625,-0.050488281250011],[-74.8017578125,-0.200097656250009],[-74.78046875,-0.24453125],[-74.75537109375,-0.298632812500003],[-74.691650390625,-0.335253906250003],[-74.616357421875,-0.370019531250009],[-74.555078125,-0.429882812500011],[-74.5138671875,-0.470117187500009],[-74.46518554687499,-0.517675781250006],[-74.41787109375,-0.580664062500006],[-74.334423828125,-0.850878906250003],[-74.28388671875,-0.927832031250006],[-74.24638671874999,-0.970605468750009],[-74.05439453125,-1.028613281250003],[-73.98681640625,-1.09814453125],[-73.926953125,-1.125195312500011],[-73.86318359375,-1.196679687500009],[-73.664306640625,-1.248828125],[-73.4962890625,-1.693066406250011],[-73.19697265625,-1.830273437500011],[-73.1544921875,-2.278222656250009],[-72.9896484375,-2.339746093750009],[-72.94111328125,-2.39404296875],[-72.21845703125,-2.400488281250006],[-71.98427734375,-2.3265625],[-71.93247070312499,-2.288671875],[-71.86728515624999,-2.227734375000011],[-71.802734375,-2.166308593750003],[-71.75253906249999,-2.152734375],[-71.55947265625,-2.22421875],[-71.39697265625,-2.334082031250006],[-71.19638671874999,-2.313085937500006],[-71.11337890624999,-2.245410156250003],[-71.027294921875,-2.225781250000011],[-70.96855468749999,-2.206835937500003],[-70.70537109374999,-2.341992187500011],[-70.64799804687499,-2.40576171875],[-70.57587890625,-2.418261718750003],[-70.29462890625,-2.552539062500003],[-70.24443359374999,-2.606542968750006],[-70.16474609375,-2.639843750000011],[-70.095849609375,-2.658203125],[-70.735107421875,-3.781542968750003],[-70.5296875,-3.866406250000011],[-70.48583984375,-3.869335937500011],[-70.42109375,-3.849609375],[-70.37919921874999,-3.81875],[-70.339501953125,-3.814355468750009],[-70.2984375,-3.84423828125],[-70.24028320312499,-3.882714843750009],[-70.16752929687499,-4.050195312500009],[-70.0171875,-4.162011718750009],[-69.96591796874999,-4.2359375],[-69.97202148437499,-4.301171875],[-70.00395507812499,-4.327246093750006],[-70.05332031249999,-4.333105468750006],[-70.12880859375,-4.28662109375],[-70.23916015625,-4.301171875],[-70.31689453125,-4.246972656250009],[-70.34365234375,-4.193652343750003],[-70.40463867187499,-4.150097656250011],[-70.5306640625,-4.167578125],[-70.72158203125,-4.158886718750011],[-70.79951171875,-4.17333984375],[-70.97368164062499,-4.350488281250009],[-71.8447265625,-4.50439453125],[-72.256787109375,-4.748925781250009],[-72.35283203124999,-4.786035156250009],[-72.468994140625,-4.901269531250009],[-72.608349609375,-5.009570312500003],[-72.69873046875,-5.0671875],[-72.83193359375,-5.09375],[-72.88706054687499,-5.122753906250011],[-72.9798828125,-5.634863281250006],[-73.16289062499999,-5.933398437500003],[-73.209375,-6.028710937500009],[-73.235546875,-6.0984375],[-73.137353515625,-6.4658203125]]]},"properties":{"name":"Peru","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[120.250390625,5.256591796875043],[119.82148437500004,5.06953125000004],[120.1652343750001,5.332421875000037],[120.250390625,5.256591796875043]]],[[[121.159375,6.075634765625011],[121.41103515625005,5.939843749999966],[121.29443359374997,5.869970703125034],[120.8763671875,5.95263671875],[121.159375,6.075634765625011]]],[[[122.09287109375012,6.428320312500006],[121.95917968750004,6.415820312500045],[121.83203125000003,6.664062499999986],[122.0583007812501,6.740722656249972],[122.32353515625002,6.602246093750011],[122.09287109375012,6.428320312500006]]],[[[122.93710937500006,7.409130859374983],[122.80468750000003,7.315966796875017],[122.82216796875,7.428466796875014],[122.93710937500006,7.409130859374983]]],[[[117.07988281250007,7.883398437499977],[117.02832031249997,7.807519531249966],[116.96953125000007,7.894921875],[116.9935546875,8.050537109375014],[117.07705078125,8.069140624999974],[117.07988281250007,7.883398437499977]]],[[[117.35527343750002,8.21464843749996],[117.28701171875,8.191015625000034],[117.28085937500006,8.314990234374974],[117.35527343750002,8.21464843749996]]],[[[124.80664062500003,9.142626953125003],[124.66582031250002,9.132324218750043],[124.65332031250003,9.225830078125],[124.80664062500003,9.142626953125003]]],[[[123.69765625000005,9.237304687500028],[123.61445312500004,9.103320312499989],[123.49345703125002,9.192089843750054],[123.69765625000005,9.237304687500028]]],[[[126.00595703125006,9.320947265625009],[126.19335937499997,9.276708984374963],[126.30458984375,8.952050781249994],[126.13955078125005,8.59565429687504],[126.36533203125012,8.483886718750014],[126.45869140625004,8.20283203125004],[126.43535156250002,7.832812499999974],[126.57011718750002,7.677246093749986],[126.58154296875003,7.247753906249969],[126.1920898437501,6.852539062500014],[126.18935546875,6.309667968749991],[125.82441406250004,7.333300781249989],[125.68925781250007,7.263037109374977],[125.38066406250007,6.689941406250014],[125.58847656250012,6.465771484374997],[125.66796874999997,5.97866210937498],[125.34648437500002,5.598974609374977],[125.23154296875006,6.069531250000011],[124.92734375000006,5.875341796874977],[124.21279296875,6.233251953124977],[124.078125,6.404443359375037],[123.98525390625,6.993701171875003],[124.20664062500006,7.396435546874983],[123.66582031250002,7.817773437500023],[123.49306640625,7.80791015624996],[123.39091796875007,7.407519531250017],[123.09667968749997,7.700439453125],[122.8429687500001,7.529296875000043],[122.79179687500002,7.72246093749996],[122.61621093749997,7.763134765624983],[122.14248046875,6.949658203124997],[121.96425781250005,6.96821289062504],[121.92460937500002,7.199511718750003],[122.24335937500004,7.945117187500031],[122.91113281250003,8.156445312499997],[123.05058593750002,8.433935546875048],[123.43457031249997,8.70332031250004],[123.84921875000006,8.432714843749977],[123.79941406250006,8.049121093749989],[124.19765625,8.229541015624974],[124.40488281250006,8.599853515625014],[124.7311523437501,8.562988281250043],[124.86894531250002,8.972265625000034],[125.141015625,8.86875],[125.20966796875004,9.027148437500017],[125.49873046875004,9.014746093749977],[125.47128906250006,9.756787109374983],[126.00595703125006,9.320947265625009]]],[[[126.059375,9.766210937500034],[125.99121093750003,9.838525390625023],[126.07382812500006,10.059228515625051],[126.1725585937501,9.79995117187498],[126.059375,9.766210937500034]]],[[[124.59384765625006,9.787207031249963],[124.1224609375,9.599316406249969],[123.93564453125012,9.623974609375011],[123.81718750000002,9.817382812499986],[124.17285156250003,10.135205078124983],[124.33574218750002,10.159912109375043],[124.57714843749997,10.026708984374991],[124.59384765625006,9.787207031249963]]],[[[125.69023437500007,9.914453125000037],[125.49482421875004,10.118701171875003],[125.66679687500002,10.440136718750026],[125.69023437500007,9.914453125000037]]],[[[119.91621093750004,10.485986328125037],[119.79316406250004,10.455273437499997],[119.85205078124997,10.64013671875],[120.00839843750012,10.570117187500031],[119.91621093750004,10.485986328125037]]],[[[122.64951171875012,10.472705078125003],[122.53837890625002,10.424951171875037],[122.5375,10.607568359375023],[122.70126953125006,10.740625],[122.64951171875012,10.472705078125003]]],[[[123.13085937500003,9.064111328124994],[122.99472656250006,9.058837890624986],[122.8666015625,9.319824218750043],[122.5625,9.482812500000037],[122.39951171875006,9.823046874999989],[122.47148437500007,9.961523437500034],[122.85556640625006,10.0869140625],[122.81699218750012,10.503808593750023],[122.98330078125,10.886621093750037],[123.25664062500007,10.99394531249996],[123.51064453125005,10.923046875],[123.5675781250001,10.780761718750057],[123.16201171875,9.864257812500028],[123.1498046875,9.606152343750026],[123.32050781250004,9.27294921875],[123.13085937500003,9.064111328124994]]],[[[123.37031250000004,9.449609375000023],[123.38623046874997,9.967089843750017],[124.03886718750002,11.273535156249991],[124.00498046875012,10.40009765625004],[123.70048828125007,10.128320312500009],[123.37031250000004,9.449609375000023]]],[[[123.75703125000004,11.28330078125002],[123.815625,11.15073242187502],[123.73671875,11.151464843749991],[123.75703125000004,11.28330078125002]]],[[[117.31113281250012,8.439599609375051],[117.21855468750007,8.367285156249963],[117.34990234375002,8.713574218749997],[119.22382812500004,10.477294921875043],[119.30566406250003,10.9736328125],[119.55332031250012,11.31352539062496],[119.52666015625002,10.953173828125003],[119.68691406250005,10.500341796875034],[119.36933593750004,10.327294921875037],[119.19150390625012,10.061083984374989],[118.78212890625005,9.91611328125002],[118.4349609375,9.256005859375009],[117.31113281250012,8.439599609375051]]],[[[119.86142578125006,11.52534179687504],[119.83066406250012,11.375683593750011],[119.72998046874997,11.431933593750017],[119.86142578125006,11.52534179687504]]],[[[124.574609375,11.343066406250031],[124.92998046875002,11.372851562499974],[125.02656250000004,11.21171875],[125.01318359374997,10.785693359374989],[125.26845703125005,10.307714843750048],[125.14257812499997,10.189453125000028],[124.9875,10.36757812499998],[125.02656250000004,10.033105468749966],[124.78076171874997,10.16806640625002],[124.78671875000012,10.781396484375009],[124.66269531250006,10.961962890625017],[124.44550781250004,10.923583984375014],[124.33066406250012,11.535205078125003],[124.574609375,11.343066406250031]]],[[[124.60839843750003,11.492187500000043],[124.48349609375006,11.485839843749986],[124.36035156250003,11.665917968749994],[124.5109375000001,11.687109375000048],[124.60839843750003,11.492187500000043]]],[[[122.49619140625006,11.615087890625034],[122.83808593750004,11.595654296874983],[122.89453125000003,11.44130859374998],[123.15830078125012,11.53554687499999],[123.11953125,11.286816406250026],[122.8029296875001,10.99003906249996],[122.76992187500005,10.823828125000034],[121.95400390625,10.444384765625003],[122.10351562499997,11.64291992187502],[121.91601562499997,11.854345703125006],[122.02919921875005,11.895410156250023],[122.49619140625006,11.615087890625034]]],[[[120.03876953125004,11.703320312499969],[119.94492187500006,11.690722656249989],[119.86093750000006,11.953955078124963],[120.03593750000002,11.917236328125028],[120.03876953125004,11.703320312499969]]],[[[120.1,12.167675781249983],[120.22822265625004,12.219824218750034],[120.31455078125012,12.012402343749969],[120.01054687500002,12.008251953125011],[119.88574218749997,12.299853515625003],[120.1,12.167675781249983]]],[[[122.65449218750004,12.309033203125011],[122.42294921875006,12.455078125],[122.60361328125006,12.49160156249998],[122.65449218750004,12.309033203125011]]],[[[125.23955078125002,12.527880859375003],[125.32021484375,12.321826171875031],[125.53564453125003,12.191406250000028],[125.49179687500006,11.594335937499977],[125.57353515625002,11.238232421874997],[125.73564453125002,11.049609375000017],[125.23339843749997,11.145068359375017],[125.03427734375012,11.341259765625026],[124.91699218750003,11.558398437500031],[124.99501953125,11.764941406250003],[124.445703125,12.152783203124969],[124.29472656250007,12.569335937500014],[125.23955078125002,12.527880859375003]]],[[[123.71660156250007,12.287353515625028],[124.04033203125002,11.966796875],[124.04550781250012,11.752441406250028],[123.47373046875006,12.21665039062502],[123.15781250000012,11.925634765624963],[123.23642578125012,12.583496093750057],[123.71660156250007,12.287353515625028]]],[[[122.09404296875002,12.354882812500023],[122.01396484375002,12.105615234375037],[121.9232421875,12.331298828125014],[122.00156250000006,12.598535156250009],[122.14501953124997,12.652636718750017],[122.09404296875002,12.354882812500023]]],[[[123.77539062499997,12.453906250000031],[123.77910156250002,12.366259765625031],[123.62148437500005,12.67490234375002],[123.77539062499997,12.453906250000031]]],[[[123.28183593750006,12.85341796874998],[123.36718750000003,12.70083007812498],[122.95751953124997,13.107177734374986],[123.28183593750006,12.85341796874998]]],[[[120.70439453125002,13.479492187499986],[121.20273437500006,13.432324218749969],[121.52275390625007,13.131201171874991],[121.540625,12.63818359375],[121.39433593750002,12.300585937499974],[121.23671875000005,12.218798828125003],[120.92216796875002,12.51162109374998],[120.65136718749997,13.169140625],[120.33847656250012,13.412353515624986],[120.40126953125,13.517041015624997],[120.70439453125002,13.479492187499986]]],[[[121.91484375000002,13.540332031250031],[122.11455078125002,13.463183593750031],[122.00488281249997,13.204980468750009],[121.82919921875006,13.328613281249972],[121.91484375000002,13.540332031250031]]],[[[124.35361328125006,13.632226562500009],[124.17539062500012,13.531542968750017],[124.03886718750002,13.663134765625003],[124.22490234375007,14.077587890624969],[124.41718750000004,13.871044921874997],[124.35361328125006,13.632226562500009]]],[[[122.03349609375002,15.005029296875009],[121.93300781250005,14.656054687500045],[121.83984374999997,15.038134765625003],[122.03349609375002,15.005029296875009]]],[[[121.10156249999997,18.615283203125017],[121.84560546875,18.29541015625003],[122.03847656250005,18.32792968749999],[122.14667968750004,18.486572265625],[122.26552734375005,18.458837890625034],[122.15234374999997,17.664404296875006],[122.51914062500012,17.124853515625034],[122.13515625000005,16.18481445312503],[121.59531250000012,15.933251953125023],[121.60703125000006,15.669824218749994],[121.39228515625004,15.324414062499969],[121.69541015625006,14.7373046875],[121.62792968749997,14.581152343749977],[121.76660156249997,14.16806640625002],[122.21171875000002,13.930175781250057],[122.2875,13.996191406250006],[122.19970703125003,14.148046875000034],[122.6271484375001,14.317529296875009],[122.93417968750012,14.18808593750002],[123.101953125,13.750244140624986],[123.29697265625012,13.836425781250043],[123.32031249999997,14.061669921875023],[123.81572265625002,13.837109375000011],[123.80625000000012,13.721728515625045],[123.54960937500007,13.645751953125014],[123.81923828125,13.269482421875011],[123.78515625000003,13.110546875000054],[124.14277343750004,13.035791015625009],[124.0597656250001,12.567089843749997],[123.87783203125005,12.689697265625014],[123.94853515625007,12.916406250000023],[123.31093750000005,13.044091796875009],[123.16328125000004,13.44174804687502],[122.59521484374997,13.90761718749998],[122.46796875000004,13.886718749999986],[122.66787109375,13.395361328124991],[122.59990234375002,13.194140625000031],[122.37656250000012,13.520605468750006],[121.77792968750006,13.93764648437498],[121.50107421875006,13.8421875],[121.344140625,13.649121093749997],[121.09550781250007,13.679492187500045],[120.84072265625,13.884716796875026],[120.637109375,13.804492187500031],[120.61679687500006,14.188037109375003],[120.9220703125001,14.493115234374983],[120.94130859375,14.645068359375031],[120.58369140625004,14.88125],[120.58867187500002,14.483105468749983],[120.43876953125002,14.453369140624972],[120.25078125000002,14.793310546875034],[120.08212890625012,14.851074218749986],[119.77255859375012,16.25512695312503],[119.83076171875004,16.326562500000023],[120.15976562500012,16.047656250000045],[120.36875,16.109570312499955],[120.35839843749997,17.63818359375],[120.59970703125012,18.507861328125074],[121.10156249999997,18.615283203125017]]],[[[121.92167968750007,18.89472656250001],[121.82519531250003,18.842724609374983],[121.94335937500003,19.010449218749955],[121.92167968750007,18.89472656250001]]],[[[121.52089843750005,19.361962890624994],[121.53125,19.271337890625006],[121.37460937500006,19.356298828124977],[121.52089843750005,19.361962890624994]]]]},"properties":{"name":"Philippines","childNum":37}},{"geometry":{"type":"Polygon","coordinates":[[[134.5954101562501,7.382031249999969],[134.51572265625012,7.525781250000037],[134.65117187500002,7.712109374999983],[134.5954101562501,7.382031249999969]]]},"properties":{"name":"Palau","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[153.53613281249997,-11.476171874999949],[153.75986328125006,-11.586328125],[153.55371093749997,-11.630566406249969],[153.28681640625004,-11.516992187500009],[153.20361328124997,-11.32412109374998],[153.53613281249997,-11.476171874999949]]],[[[154.28076171874997,-11.36142578125002],[154.12119140625006,-11.425683593749966],[154.02343750000003,-11.347949218750031],[154.28076171874997,-11.36142578125002]]],[[[150.89873046875002,-10.565332031250023],[150.88466796875,-10.643457031250037],[150.78574218750006,-10.603417968749966],[150.89873046875002,-10.565332031250023]]],[[[151.08095703125,-10.020117187499963],[151.29648437500012,-9.956738281250026],[151.230859375,-10.194726562500009],[150.95917968750004,-10.092578124999989],[150.77607421875004,-9.70908203125002],[151.08095703125,-10.020117187499963]]],[[[150.52841796875006,-9.34658203124998],[150.78867187500006,-9.417968749999957],[150.89404296875003,-9.667480468749986],[150.43623046875004,-9.624609374999949],[150.5084960937501,-9.536132812499957],[150.43730468750007,-9.359960937500034],[150.52841796875006,-9.34658203124998]]],[[[150.3454101562501,-9.493847656249955],[150.10976562500005,-9.361914062499991],[150.20830078125002,-9.206347656250003],[150.32011718750007,-9.264160156249972],[150.3454101562501,-9.493847656249955]]],[[[152.63095703125012,-8.959375],[152.95292968750007,-9.07011718749996],[152.96689453125006,-9.208984375000014],[152.51513671874997,-9.009863281250034],[152.63095703125012,-8.959375]]],[[[151.10683593750005,-8.733496093749949],[151.12412109375012,-8.804882812500011],[151.00498046875006,-8.523828124999952],[151.117578125,-8.41884765624998],[151.10683593750005,-8.733496093749949]]],[[[143.58681640625005,-8.481738281250003],[143.321875,-8.367578125],[143.5814453125,-8.390917968749974],[143.58681640625005,-8.481738281250003]]],[[[148.02578125,-5.826367187500011],[147.78105468750007,-5.627246093749946],[147.7946289062501,-5.492382812500011],[148.05478515625006,-5.61152343750004],[148.02578125,-5.826367187500011]]],[[[155.95761718750006,-6.686816406249989],[155.71933593750012,-6.862792968749957],[155.34404296875007,-6.721679687499986],[155.20214843750003,-6.3076171875],[154.75927734375003,-5.931347656249997],[154.72929687500002,-5.444433593750006],[155.09384765625006,-5.620214843750034],[155.46699218750004,-6.145117187500034],[155.82255859375002,-6.38046875000002],[155.95761718750006,-6.686816406249989]]],[[[147.17626953124997,-5.431933593749946],[147.00585937499997,-5.30703125],[147.1310546875001,-5.190820312500037],[147.17626953124997,-5.431933593749946]]],[[[154.64726562500002,-5.43271484375002],[154.54003906250003,-5.11083984375],[154.63261718750007,-5.013867187499955],[154.72714843750006,-5.218066406249989],[154.64726562500002,-5.43271484375002]]],[[[146.01933593750007,-4.726171874999963],[145.88359375000007,-4.66748046875],[145.9958007812501,-4.539257812499983],[146.01933593750007,-4.726171874999963]]],[[[151.915625,-4.296777343749966],[152.11718749999997,-4.212207031249974],[152.40566406250005,-4.340722656249952],[152.35117187500006,-4.82216796874998],[151.98369140625007,-5.07441406250004],[152.14296875,-5.357031249999963],[152.07705078125,-5.458300781249989],[151.86542968750004,-5.564843750000023],[151.51513671874997,-5.552343749999963],[151.22929687500002,-5.919921874999986],[150.47353515625,-6.263378906249969],[149.65253906250004,-6.290429687499966],[149.38232421874997,-6.078125],[149.0990234375,-6.116992187499989],[148.33720703125007,-5.669433593750014],[148.43203125,-5.471777343749991],[149.35888671875003,-5.583984375000014],[149.8314453125,-5.524121093749997],[149.96279296875,-5.447753906249972],[150.0900390625001,-5.011816406249977],[150.1703125,-5.070605468749974],[150.0724609375001,-5.309570312499986],[150.18310546874997,-5.523632812499983],[150.90029296875005,-5.447167968750037],[151.32656250000005,-4.96035156249998],[151.67119140625007,-4.88330078125],[151.59306640625007,-4.200781249999949],[151.915625,-4.296777343749966]]],[[[152.67060546875004,-3.13339843750002],[152.64619140625004,-3.221191406249957],[152.54326171875002,-3.095605468749952],[152.63876953125012,-3.042773437500031],[152.67060546875004,-3.13339843750002]]],[[[140.97617187500012,-9.11875],[140.97519531250006,-6.90537109375002],[140.86230468749997,-6.740039062499989],[140.975,-6.346093750000023],[140.97353515625,-2.803417968750026],[140.97343750000007,-2.609765625],[142.90517578125,-3.32070312499998],[143.50898437500004,-3.431152343750014],[144.06640625000003,-3.80517578125],[144.4777343750001,-3.82529296875002],[145.08779296875,-4.349121093749972],[145.33457031250012,-4.385253906249972],[145.7669921875,-4.823046874999989],[145.74521484375012,-5.402441406249977],[147.56669921875002,-6.056933593750003],[147.80205078125002,-6.31523437499996],[147.84550781250007,-6.662402343749989],[147.11914062499997,-6.721679687499986],[146.95361328124997,-6.834082031249963],[147.19003906250012,-7.378125],[148.12675781250007,-8.103613281249963],[148.246875,-8.554296875000034],[148.45117187499997,-8.694531250000011],[148.58310546875006,-9.051757812499957],[149.19833984375006,-9.03125],[149.26318359374997,-9.497851562499974],[150.01103515625007,-9.688183593750026],[149.76123046874997,-9.805859375000011],[149.87441406250005,-10.012988281250031],[150.84951171875,-10.236035156249997],[150.44609375000007,-10.30732421875004],[150.6471679687501,-10.517968749999966],[150.31992187500012,-10.654882812499963],[150.0167968750001,-10.577148437500028],[149.75410156250004,-10.353027343750028],[147.76865234375012,-10.070117187500031],[147.01718750000006,-9.38789062500004],[146.96376953125,-9.059570312499943],[146.63085937499997,-8.951171874999972],[146.03320312499997,-8.076367187500011],[144.97382812500004,-7.802148437500009],[144.86425781249997,-7.631542968749983],[144.50986328125006,-7.567382812499972],[144.14287109375007,-7.757226562500009],[143.65488281250012,-7.460351562500009],[143.94228515625005,-7.944238281250009],[143.8333984375,-8.029101562499974],[143.51816406250006,-8.000683593749955],[143.61376953125003,-8.200390624999969],[142.52412109375004,-8.32167968749998],[142.34746093750002,-8.167480468750014],[142.20683593750002,-8.195800781250014],[142.47480468750004,-8.369433593750031],[142.79794921875006,-8.345019531250031],[143.11181640624997,-8.474511718750037],[143.37724609375007,-8.762207031250028],[143.36621093750003,-8.961035156250034],[142.6471679687501,-9.327832031249969],[142.22958984375012,-9.169921874999957],[141.13320312500005,-9.221289062500034],[140.97617187500012,-9.11875]]],[[[152.96582031249997,-4.756347656249986],[152.89169921875006,-4.832421875000023],[152.73994140625004,-4.635839843750034],[152.66816406250004,-4.131835937500028],[152.27939453125006,-3.582421875],[151.06679687500005,-2.829003906249994],[150.74609374999997,-2.73886718750002],[150.8253906250001,-2.572949218749969],[152.03291015625004,-3.25136718749998],[153.01679687500004,-4.105664062500026],[153.1325195312501,-4.352441406250037],[152.96582031249997,-4.756347656249986]]],[[[150.43662109375012,-2.66181640625004],[150.16572265625004,-2.660253906249991],[149.96162109375004,-2.473828125000026],[150.22714843750006,-2.384179687499966],[150.42949218750007,-2.47041015625004],[150.43662109375012,-2.66181640625004]]],[[[147.06757812500004,-1.96015625],[147.43808593750012,-2.05898437499998],[147.20634765625007,-2.181933593749974],[146.54648437500012,-2.20859375],[146.65625,-1.97402343749998],[147.06757812500004,-1.96015625]]],[[[149.76542968750007,-1.553027343750017],[149.54589843749997,-1.471679687499957],[149.58095703125005,-1.353222656249983],[149.76542968750007,-1.553027343750017]]]]},"properties":{"name":"Papua New Guinea","childNum":21}},{"geometry":{"type":"Polygon","coordinates":[[[23.484667968750017,53.939794921875],[23.915429687500023,52.770263671875],[23.175097656250017,52.28662109375],[23.652441406250006,52.040380859375],[23.605273437500017,51.517919921875],[23.664453125000023,51.31005859375],[24.095800781250006,50.87275390625],[23.9970703125,50.809375],[24.089941406250006,50.53046875],[23.97265625,50.410058593749994],[23.711718750000017,50.37734375],[23.03632812500001,49.899072265624994],[22.706152343750006,49.606201171875],[22.6494140625,49.539013671875],[22.66064453125,49.483691406249996],[22.71992187500001,49.353808593749996],[22.732421875,49.295166015625],[22.705664062500006,49.171191406249996],[22.847070312500023,49.08125],[22.538671875,49.072705078125],[22.473046875000023,49.081298828125],[22.020117187500006,49.209521484374996],[21.6396484375,49.411962890625],[21.079394531250017,49.418261718749996],[20.868457031250017,49.314697265625],[20.36298828125001,49.38525390625],[20.0576171875,49.181298828124994],[19.756640625000017,49.204394531249996],[19.77392578125,49.37216796875],[19.44160156250001,49.597705078124996],[19.1494140625,49.4],[18.83222656250001,49.510791015624996],[18.562402343750023,49.879345703125],[18.0283203125,50.03525390625],[17.874804687500017,49.972265625],[17.627050781250006,50.11640625],[17.702246093750006,50.307177734374996],[17.41523437500001,50.254785156249994],[16.88007812500001,50.427050781249996],[16.989648437500023,50.2369140625],[16.63916015625,50.1021484375],[16.210351562500023,50.423730468749994],[16.419726562500017,50.573632812499994],[16.2822265625,50.655615234375],[16.007226562500023,50.611621093749996],[14.99375,51.01435546875],[14.98291015625,50.886572265625],[14.895800781250017,50.861376953124996],[14.809375,50.858984375],[14.814257812500017,50.871630859374996],[14.91748046875,51.008740234375],[14.9638671875,51.095117187499994],[14.935546875,51.435351562499996],[14.905957031250011,51.463330078125],[14.724707031250006,51.523876953125],[14.7109375,51.544921875],[14.738671875000023,51.6271484375],[14.601660156250006,51.832373046875],[14.752539062500006,52.081835937499996],[14.679882812500011,52.25],[14.615625,52.277636718749996],[14.573925781250011,52.31416015625],[14.554589843750023,52.359667968749996],[14.569726562500023,52.431103515625],[14.619433593750017,52.528515625],[14.514062500000023,52.64560546875],[14.253710937500017,52.782519531249996],[14.128613281250011,52.878222656249996],[14.138867187500011,52.932861328125],[14.293164062500011,53.0267578125],[14.368554687500023,53.10556640625],[14.410937500000017,53.199023437499996],[14.412304687500011,53.216748046875],[14.41455078125,53.283496093749996],[14.258886718750006,53.729638671875],[14.58349609375,53.63935546875],[14.558398437500017,53.823193359375],[14.21142578125,53.950341796875],[16.186328125000017,54.290380859375],[16.55976562500001,54.55380859375],[18.32343750000001,54.838183593749996],[18.75927734375,54.6845703125],[18.43623046875001,54.7447265625],[18.83642578125,54.369580078125],[19.604394531250023,54.4591796875],[20.20820312500001,54.420751953125],[22.16845703125,54.35986328125],[22.731835937500023,54.35009765625],[22.766210937500006,54.356787109375],[22.82373046875,54.395800781249996],[22.893945312500023,54.39052734375],[22.97675781250001,54.366357421875],[23.015527343750023,54.34833984375],[23.04218750000001,54.30419921875],[23.0875,54.299462890625],[23.170312500000023,54.2814453125],[23.282324218750006,54.24033203125],[23.3701171875,54.200488281249996],[23.45361328125,54.14345703125],[23.484667968750017,53.939794921875]]]},"properties":{"name":"Poland","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-65.42558593749999,18.105615234374994],[-65.57221679687493,18.137304687499977],[-65.29487304687501,18.133349609375045],[-65.42558593749999,18.105615234374994]]],[[[-66.12939453125003,18.444921875000034],[-65.62880859375,18.381396484375045],[-65.62084960937497,18.242333984374966],[-65.97080078124995,17.974365234375],[-67.196875,17.994189453125045],[-67.2640625,18.364599609375006],[-67.15864257812501,18.499218749999983],[-66.12939453125003,18.444921875000034]]]]},"properties":{"name":"Puerto Rico","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[130.52695312500012,42.535400390625],[130.68730468750007,42.30253906249999],[130.2357421875,42.183203125000034],[129.75634765624997,41.712255859375006],[129.70869140625004,40.857324218749994],[129.34111328125002,40.72631835937506],[128.51123046874997,40.130224609375006],[127.56816406250002,39.78198242187503],[127.39453125000003,39.207910156249966],[127.78613281250003,39.084130859374966],[128.37460937500012,38.6234375],[128.03896484375,38.30854492187498],[127.09033203125003,38.28388671875001],[126.63388671875012,37.78183593750006],[126.36992187500007,37.87836914062501],[126.11669921875003,37.74291992187503],[125.76914062500006,37.98535156250003],[125.35781250000005,37.72480468749998],[125.31074218750004,37.843505859375],[124.98876953124997,37.93144531249999],[125.2067382812501,38.08154296875],[124.69091796874997,38.12919921875002],[125.06738281250003,38.556738281250006],[125.55449218750002,38.68623046875001],[125.16884765625,38.80551757812506],[125.40966796875003,39.28837890625002],[125.36083984375003,39.52661132812497],[124.77529296875,39.75805664062506],[124.63828125000006,39.61508789062506],[124.36210937500002,40.004052734374994],[124.8893554687501,40.459814453125006],[125.98906250000002,40.904638671875034],[126.74306640625,41.724853515625],[126.95478515625004,41.76948242187501],[127.17968750000003,41.531347656250006],[128.14941406249997,41.38774414062496],[128.28925781250004,41.60742187500006],[128.04521484375007,41.9875],[128.92343750000006,42.038232421874966],[129.3136718750001,42.41357421874997],[129.69785156250012,42.448144531249994],[129.89824218750002,42.998144531250034],[130.24033203125006,42.891796874999955],[130.24667968750012,42.744824218749955],[130.52695312500012,42.535400390625]]]},"properties":{"name":"Dem. Rep. Korea","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-17.190869140624926,32.86860351562498],[-16.693261718749966,32.75800781250001],[-17.018261718749926,32.66279296874998],[-17.226025390624983,32.76684570312503],[-17.190869140624926,32.86860351562498]]],[[[-25.64897460937499,37.840917968750006],[-25.18193359374996,37.837890625],[-25.19072265624999,37.764355468749955],[-25.73447265624992,37.76289062500001],[-25.845898437499983,37.89404296875],[-25.64897460937499,37.840917968750006]]],[[[-28.14726562499996,38.45268554687502],[-28.064794921875034,38.412744140624966],[-28.454492187500023,38.40864257812504],[-28.54882812499997,38.51855468750003],[-28.14726562499996,38.45268554687502]]],[[[-28.641308593749983,38.525],[-28.842041015625,38.5984375],[-28.69775390625,38.638476562500045],[-28.641308593749983,38.525]]],[[[-27.07524414062496,38.643457031249994],[-27.38593750000001,38.765820312499955],[-27.127001953125017,38.78984375],[-27.07524414062496,38.643457031249994]]],[[[-31.137109374999937,39.40693359375001],[-31.282958984375,39.39409179687496],[-31.260839843750034,39.49677734375001],[-31.137109374999937,39.40693359375001]]],[[[-7.406152343749937,37.17944335937497],[-7.834130859374994,37.005712890625034],[-8.597656249999943,37.12133789062506],[-8.997802734375028,37.03227539062502],[-8.814160156249983,37.43081054687502],[-8.881103515624943,38.44667968750005],[-8.668310546874949,38.42431640625003],[-8.798876953124989,38.518164062500034],[-9.213281249999937,38.44809570312498],[-9.250390624999966,38.65673828125003],[-9.021484374999943,38.746875],[-8.79160156249992,39.07817382812502],[-9.13579101562496,38.74277343749998],[-9.35673828124996,38.697900390624994],[-9.479736328124972,38.79877929687501],[-9.374755859374972,39.338281249999966],[-8.837841796874926,40.11567382812498],[-8.684619140624989,40.75253906250006],[-8.755419921874932,41.69838867187502],[-8.887597656249937,41.76459960937501],[-8.777148437500017,41.941064453124994],[-8.266064453124983,42.13740234375001],[-8.152490234374937,41.81196289062498],[-7.40361328124996,41.833691406249955],[-7.147119140625023,41.98115234374998],[-6.61826171874992,41.9423828125],[-6.542187499999955,41.672509765624994],[-6.2125,41.53203125],[-6.928466796874972,41.009130859375006],[-6.8101562499999,40.343115234375034],[-7.032617187499966,40.16791992187498],[-6.896093749999949,40.02182617187506],[-6.975390624999932,39.79838867187502],[-7.117675781249972,39.681689453125045],[-7.53569335937496,39.66157226562501],[-6.997949218749994,39.05644531250002],[-7.343017578124943,38.45742187500002],[-7.106396484374983,38.181005859375006],[-6.957568359374932,38.18789062499999],[-7.44394531249992,37.72827148437497],[-7.406152343749937,37.17944335937497]]]]},"properties":{"name":"Portugal","childNum":7,"cp":[-8.7440694,39.9251454]}},{"geometry":{"type":"Polygon","coordinates":[[[-58.15976562499999,-20.164648437500006],[-58.13779296874999,-20.2373046875],[-58.12460937499999,-20.29345703125],[-58.09150390625,-20.33320312500001],[-58.05844726562499,-20.38613281250001],[-58.025390625,-20.415820312500003],[-58.00224609374999,-20.465429687500006],[-57.97905273437499,-20.657324218750006],[-57.91513671874999,-20.69033203125001],[-57.830224609374994,-20.99794921875001],[-57.94267578124999,-21.79833984375],[-57.95590820312499,-22.109179687500003],[-56.77519531249999,-22.261328125],[-56.44780273437499,-22.076171875],[-56.39487304687499,-22.09267578125001],[-56.35185546874999,-22.17861328125001],[-56.246044921875,-22.2646484375],[-56.18984375,-22.28115234375001],[-55.99140625,-22.28115234375001],[-55.84916992187499,-22.3076171875],[-55.75327148437499,-22.41015625],[-55.74663085937499,-22.5126953125],[-55.61767578125,-22.671484375],[-55.53828125,-23.58095703125001],[-55.518457031249994,-23.627246093750003],[-55.458886718749994,-23.68671875000001],[-55.4423828125,-23.792578125],[-55.4423828125,-23.865332031250006],[-55.415917968749994,-23.95136718750001],[-55.36630859374999,-23.991015625],[-55.28691406249999,-24.004296875],[-55.1943359375,-24.01748046875001],[-55.08188476562499,-23.99765625],[-54.982666015625,-23.97451171875001],[-54.62548828125,-23.8125],[-54.44023437499999,-23.90175781250001],[-54.37080078125,-23.97119140625],[-54.24179687499999,-24.047265625],[-54.281005859375,-24.30605468750001],[-54.43623046875,-25.12128906250001],[-54.47314453125,-25.22021484375],[-54.610546875,-25.432714843750006],[-54.615869140624994,-25.57607421875001],[-54.63193359374999,-26.00576171875001],[-54.677734375,-26.30878906250001],[-54.934472656249994,-26.70253906250001],[-55.1359375,-26.93115234375],[-55.426660156249994,-27.00927734375],[-55.450634765625,-27.068359375],[-55.496728515624994,-27.115332031250006],[-55.564892578125,-27.15],[-55.59726562499999,-27.207617187500006],[-55.59379882812499,-27.2880859375],[-55.63291015624999,-27.35712890625001],[-55.71464843749999,-27.41484375],[-55.789990234375,-27.41640625],[-55.95146484374999,-27.32568359375],[-56.1640625,-27.32148437500001],[-56.437158203124994,-27.553808593750006],[-58.16826171874999,-27.2734375],[-58.60483398437499,-27.31435546875001],[-58.641748046874994,-27.19609375],[-58.618603515625,-27.132128906250003],[-58.222070312499994,-26.65],[-58.18149414062499,-26.307421875],[-57.943115234375,-26.05292968750001],[-57.563134765624994,-25.473730468750006],[-57.821679687499994,-25.13642578125001],[-59.187255859375,-24.562304687500003],[-59.892480468749994,-24.093554687500003],[-60.83984375,-23.85810546875001],[-61.084716796875,-23.65644531250001],[-61.79853515625,-23.18203125],[-62.21416015624999,-22.612402343750006],[-62.372509765625,-22.43916015625001],[-62.54155273437499,-22.349609375],[-62.6259765625,-22.29042968750001],[-62.62568359375,-22.261523437500003],[-62.65097656249999,-22.233691406250003],[-62.27666015624999,-21.066015625],[-62.276318359375,-20.5625],[-61.7568359375,-19.6453125],[-60.00737304687499,-19.29755859375001],[-59.09052734375,-19.286230468750006],[-58.18017578125,-19.81787109375],[-58.15976562499999,-20.164648437500006]]]},"properties":{"name":"Paraguay","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[34.34833984375004,31.292919921874955],[34.2453125000001,31.208300781250045],[34.2125,31.292285156250017],[34.198144531249994,31.322607421875063],[34.47734375000002,31.584863281250023],[34.52412109375004,31.541650390624994],[34.5255859375001,31.52563476562503],[34.34833984375004,31.292919921874955]]],[[[34.88046875,31.3681640625],[34.950976562500074,31.60229492187503],[35.20371093750006,31.75],[35.1271484375001,31.816748046875006],[35.05322265625003,31.83793945312496],[34.983007812500006,31.816796875000023],[34.9611328125001,31.823339843750006],[34.95380859375004,31.84125976562504],[34.98974609374997,31.913281249999955],[34.955957031249994,32.1609375],[35.01054687500002,32.33818359375002],[35.06503906250006,32.46044921875006],[35.19326171875005,32.53442382812503],[35.303808593750006,32.512939453125],[35.38671875000003,32.493017578125034],[35.402636718750074,32.45063476562501],[35.484375,32.40166015624999],[35.5514648437501,32.39550781250006],[35.57207031250002,32.237890625],[35.450585937499994,31.479296875000017],[34.88046875,31.3681640625]]]]},"properties":{"name":"Palestine","childNum":2}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-149.321533203125,-17.690039062499963],[-149.177685546875,-17.736621093750045],[-149.18178710937497,-17.86230468749997],[-149.34111328125,-17.732421874999986],[-149.57890624999993,-17.734960937499963],[-149.635009765625,-17.564257812500003],[-149.37919921874993,-17.522363281249994],[-149.321533203125,-17.690039062499963]]],[[[-143.44057617187497,-16.619726562499963],[-143.38618164062498,-16.668847656250023],[-143.55068359375002,-16.62109374999997],[-143.44057617187497,-16.619726562499963]]],[[[-139.02431640624997,-9.695214843750037],[-138.82734375,-9.74160156249998],[-139.13408203124996,-9.829492187500037],[-139.02431640624997,-9.695214843750037]]],[[[-140.075634765625,-9.425976562499983],[-140.14438476562498,-9.359375],[-140.07094726562497,-9.328125],[-140.075634765625,-9.425976562499983]]],[[[-140.07260742187503,-8.910449218750031],[-140.21743164062497,-8.929687499999957],[-140.24003906249993,-8.79755859375004],[-140.057666015625,-8.801464843750026],[-140.07260742187503,-8.910449218750031]]]]},"properties":{"name":"Fr. Polynesia","childNum":5}},{"geometry":{"type":"Polygon","coordinates":[[[51.26796875000002,24.607226562500003],[51.17802734375002,24.58671875],[51.093359375,24.564648437499997],[51.02275390625002,24.565234375],[50.96601562500001,24.573925781249997],[50.928320312500006,24.595117187499994],[50.85566406250001,24.679638671874997],[50.80439453125001,24.789257812499997],[50.8359375,24.850390625],[50.846777343750006,24.888574218749994],[50.75458984375001,25.39926757812499],[51.003125,25.9814453125],[51.262304687500006,26.153271484374997],[51.543066406250006,25.902392578125003],[51.4853515625,25.524707031250003],[51.60888671875,25.052880859374994],[51.42792968750001,24.668261718750003],[51.26796875000002,24.607226562500003]]]},"properties":{"name":"Qatar","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[28.2125,45.450439453125],[28.317675781250017,45.347119140625],[28.451269531250006,45.2921875],[28.78828125000001,45.240966796875],[28.78173828125,45.309863281249996],[28.894335937500017,45.289941406249994],[29.223535156250023,45.4029296875],[29.403710937500023,45.419677734375],[29.567675781250017,45.37080078125],[29.705859375000017,45.259912109374994],[29.557519531250023,44.843408203124994],[29.048242187500023,44.757568359375],[29.0953125,44.975048828125],[28.891503906250023,44.91865234375],[28.585351562500023,43.742236328124996],[28.221972656250017,43.772851562499994],[27.88427734375,43.987353515624996],[27.425390625,44.0205078125],[27.0869140625,44.167382812499994],[26.2158203125,44.007275390625],[25.4970703125,43.670800781249994],[22.919042968750006,43.83447265625],[22.868261718750006,43.947900390624994],[23.02851562500001,44.077978515625],[22.705078125,44.23779296875],[22.687890625000023,44.248291015625],[22.494531250000023,44.435449218749994],[22.554003906250017,44.540332031249996],[22.6201171875,44.562353515625],[22.70078125,44.555517578125],[22.734375,44.569921875],[22.72089843750001,44.605517578124996],[22.64208984375,44.6509765625],[22.49765625,44.70625],[22.350683593750006,44.676123046875],[22.200976562500017,44.560693359374994],[22.093066406250017,44.541943359375],[21.909277343750006,44.66611328125],[21.636132812500023,44.71044921875],[21.52314453125001,44.790087890624996],[21.36005859375001,44.82666015625],[21.35791015625,44.86181640625],[21.384375,44.870068359375],[21.442187500000017,44.873388671875],[21.519921875000023,44.880810546875],[21.532324218750006,44.900683593749996],[21.35703125,44.990771484374996],[21.465429687500006,45.171875],[21.431445312500017,45.192529296874994],[20.794042968750006,45.46787109375],[20.775,45.749804687499996],[20.760156250000023,45.758105468749996],[20.746875,45.748974609375],[20.727832031250017,45.73740234375],[20.709277343750017,45.735253906249994],[20.652734375000023,45.77939453125],[20.581152343750006,45.869482421875],[20.35859375000001,45.975488281249994],[20.241796875,46.10859375],[20.28095703125001,46.1330078125],[20.508105468750017,46.166943359375],[20.613671875000023,46.13349609375],[20.76025390625,46.246240234374994],[21.121679687500006,46.282421875],[21.99970703125001,47.505029296874994],[22.87666015625001,47.947265625],[23.054785156250006,48.00654296875],[23.139453125000017,48.08740234375],[23.20263671875,48.084521484374996],[23.408203125,47.989990234375],[23.628710937500017,47.995849609375],[24.578906250000017,47.931054687499994],[24.979101562500006,47.72412109375],[25.464257812500023,47.910791015624994],[25.689257812500017,47.932470703125],[25.90869140625,47.967578125],[26.162695312500006,47.992529296875],[26.236230468750023,48.064355468749994],[26.276953125,48.113232421875],[26.3056640625,48.203759765624994],[26.4423828125,48.22998046875],[26.618945312500017,48.25986328125],[26.980761718750017,48.155029296875],[27.614062500000017,47.34052734375],[28.07177734375,46.978417968749994],[28.23945312500001,46.6408203125],[28.07470703125,45.598974609375],[28.2125,45.450439453125]]]},"properties":{"name":"Romania","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[146.71396484375012,43.743798828124994],[146.62197265625,43.81298828125006],[146.88408203125002,43.82915039062496],[146.71396484375012,43.743798828124994]]],[[[146.20761718750006,44.49765625],[146.5677734375,44.44042968749997],[145.91406249999997,44.10371093750004],[145.58681640625,43.84511718750002],[145.5558593750001,43.66459960937502],[145.46171875000007,43.870898437500045],[146.20761718750006,44.49765625]]],[[[148.59951171875,45.317626953125],[147.91376953125004,44.99038085937502],[147.65781250000012,44.97714843749998],[146.89746093750003,44.404296875],[147.24658203124997,44.856054687500006],[147.88554687500007,45.22563476562499],[147.9240234375001,45.38330078125006],[148.05605468750005,45.26210937500005],[148.32421874999997,45.28242187500001],[148.8122070312501,45.510009765625],[148.83710937500004,45.36269531250002],[148.59951171875,45.317626953125]]],[[[149.68769531250004,45.64204101562501],[149.44707031250002,45.593359375000034],[149.9623046875,46.02192382812504],[150.553125,46.208544921875045],[149.68769531250004,45.64204101562501]]],[[[152.00205078125006,46.89716796874998],[151.72343750000007,46.82880859375001],[152.28886718750007,47.1421875],[152.00205078125006,46.89716796874998]]],[[[154.81044921875005,49.31201171875],[154.61093750000006,49.29404296874998],[154.82490234375004,49.64692382812501],[154.81044921875005,49.31201171875]]],[[[155.9210937500001,50.30219726562501],[155.39716796875004,50.04125976562497],[155.24306640625,50.09462890625002],[155.21835937500012,50.29785156250003],[155.68017578124997,50.400732421875034],[156.096875,50.771875],[155.9210937500001,50.30219726562501]]],[[[156.40507812500002,50.65761718750005],[156.16796874999997,50.73188476562498],[156.37646484374997,50.86210937499996],[156.4875,50.84296874999998],[156.40507812500002,50.65761718750005]]],[[[142.76103515625002,54.393945312499966],[143.32470703125003,52.96308593749998],[143.15556640625002,52.08374023437497],[143.29951171875004,51.632373046875045],[143.81601562500006,50.28261718750002],[144.71376953125,48.64028320312502],[144.04873046875,49.249169921874994],[143.73232421875,49.31201171875],[143.10498046875003,49.198828125000034],[142.57421874999997,48.07216796875002],[142.55693359375002,47.737890625000034],[143.21767578125005,46.79487304687504],[143.48564453125002,46.752050781250006],[143.58066406250012,46.360693359375034],[143.43164062500003,46.02866210937498],[143.28232421875006,46.55898437500002],[142.57802734375005,46.700781250000034],[142.07714843749997,45.91704101562499],[141.83037109375002,46.451074218749966],[142.03867187500012,47.140283203124966],[141.9640625000001,47.58745117187502],[142.18173828125012,48.01337890625001],[141.86630859375006,48.750097656250006],[142.1422851562501,49.56914062499999],[142.06601562500006,50.630468750000034],[142.20673828125004,51.22255859375002],[141.72236328125004,51.73632812499997],[141.66083984375004,52.27294921874997],[141.85556640625012,52.79350585937499],[141.82353515625007,53.33950195312502],[142.1419921875,53.49560546875003],[142.52617187500002,53.44746093749998],[142.70595703125,53.89570312499998],[142.33496093749997,54.28071289062501],[142.76103515625002,54.393945312499966]]],[[[137.17861328125005,55.100439453125034],[137.05527343750006,54.9267578125],[136.71464843750002,54.956152343750034],[137.17861328125005,55.100439453125034]]],[[[137.94052734375012,55.092626953125034],[138.20615234375012,55.03354492187498],[137.72148437500007,54.66323242187505],[137.46269531250002,54.873388671875034],[137.23291015624997,54.79057617187496],[137.5773437500001,55.19702148437497],[137.94052734375012,55.092626953125034]]],[[[21.235742187500023,55.26411132812498],[22.072363281250034,55.06367187499998],[22.56728515625005,55.05913085937496],[22.82470703125,54.87128906249998],[22.684472656250023,54.56293945312504],[22.679882812500068,54.493017578125006],[22.766210937499977,54.356787109375034],[22.168457031250057,54.35986328125006],[21.14052734375008,54.39179687499998],[19.604394531250023,54.45917968750004],[19.974511718750023,54.92119140625002],[20.520312500000017,54.994873046875],[20.89980468750008,55.286669921875045],[20.957812500000074,55.27890625000006],[20.594824218750006,54.982373046874955],[20.995898437500017,54.90268554687506],[21.18886718750008,54.93520507812502],[21.235742187500023,55.26411132812498]]],[[[166.65029296875005,54.83906249999998],[166.64511718750006,54.69409179687503],[165.75107421875006,55.294531250000034],[166.27578125000005,55.311962890624955],[166.24804687499997,55.16542968750002],[166.65029296875005,54.83906249999998]]],[[[150.58994140625006,59.01875],[150.47021484375003,59.05405273437498],[150.66621093750004,59.16015625000003],[150.58994140625006,59.01875]]],[[[163.63515625000005,58.603369140625006],[163.47138671875004,58.509375],[163.7609375000001,59.01503906250002],[164.57265625,59.22114257812501],[164.61572265624997,58.885595703125034],[163.63515625000005,58.603369140625006]]],[[[35.8161132812501,65.18208007812501],[35.77871093750005,64.97666015625],[35.52890625000006,65.15107421875001],[35.8161132812501,65.18208007812501]]],[[[70.02070312500004,66.502197265625],[69.65136718750003,66.56533203125],[69.50273437500002,66.75107421875],[70.07666015624997,66.69589843750003],[70.02070312500004,66.502197265625]]],[[[-179.79853515625,68.9404296875],[-178.873876953125,68.75410156249995],[-178.69262695312503,68.54599609375],[-178.09746093750002,68.4248046875],[-178.05581054687497,68.26489257812503],[-177.79677734374997,68.33798828125],[-178.37304687500003,68.56567382812503],[-177.52724609375002,68.29438476562501],[-177.58920898437503,68.22421875],[-175.34521484375,67.67807617187503],[-175.37470703124998,67.35737304687498],[-175.00268554687494,67.4375],[-174.849853515625,67.34887695312503],[-174.92490234375,66.62314453125006],[-174.503759765625,66.537939453125],[-174.39409179687496,66.34423828124997],[-174.084765625,66.47309570312504],[-174.06503906249998,66.22958984374998],[-173.77397460937502,66.43466796875003],[-174.23159179687497,66.63188476562505],[-174.08642578125,66.94287109375],[-174.55009765624993,67.090625],[-173.6796875,67.144775390625],[-173.15781249999998,67.06909179687503],[-173.32353515625,66.95483398437503],[-173.25893554687497,66.84008789062503],[-173.19301757812497,66.99360351562504],[-172.5201171875,66.952490234375],[-173.00751953125,67.06489257812498],[-171.79555664062502,66.93173828125003],[-170.50952148437503,66.34365234375005],[-170.604443359375,66.24892578125002],[-170.30122070312504,66.29404296874998],[-170.24394531250002,66.16928710937503],[-169.777880859375,66.14311523437505],[-169.83168945312497,65.99892578124997],[-170.54067382812497,65.86542968749995],[-170.66630859375,65.62153320312501],[-171.42153320312502,65.81035156250002],[-171.10585937500002,65.51103515625005],[-171.90712890625,65.495947265625],[-172.78330078124998,65.68105468749997],[-172.23281250000002,65.45571289062497],[-172.30927734375004,65.27563476562497],[-172.66191406249993,65.24853515625006],[-172.28603515625002,65.20571289062502],[-172.21318359375,65.04814453124999],[-173.08579101562498,64.81733398437495],[-172.80107421874996,64.79052734375],[-172.90087890624994,64.62885742187501],[-172.40146484374998,64.413916015625],[-172.73916015624997,64.41225585937502],[-172.90317382812498,64.52607421875004],[-172.96005859375003,64.32768554687502],[-173.27548828124998,64.2896484375],[-173.327490234375,64.53955078125003],[-173.72973632812497,64.36450195312497],[-174.57055664062503,64.7177734375],[-175.39511718749998,64.80239257812502],[-175.85385742187498,65.01083984375003],[-176.09326171875,65.471044921875],[-177.05625,65.613623046875],[-177.48876953125,65.50371093749999],[-178.4125,65.49555664062501],[-178.93906249999998,66.03276367187505],[-178.74672851562497,66.01367187500006],[-178.52656250000004,66.40156250000004],[-178.86811523437498,66.18706054687502],[-179.14340820312503,66.37504882812505],[-179.327197265625,66.16259765625003],[-179.68330078124998,66.18413085937505],[-179.78969726562497,65.90087890625],[-179.352099609375,65.51674804687497],[-180,65.06723632812498],[-180,65.31196289062501],[-180,65.55678710937497],[-180,65.80156250000002],[-180,66.04628906250002],[-180,66.29106445312499],[-180,66.53583984375004],[-180,66.78056640625005],[-180,67.02534179687501],[-180,67.27011718750006],[-180,67.51484374999998],[-180,67.75961914062503],[-180,68.00439453124997],[-180,68.24912109375],[-180,68.49389648437497],[-180,68.738671875],[-179.999951171875,68.98344726562505],[-179.79853515625,68.9404296875]]],[[[50.265234375,69.18559570312502],[49.62626953125002,68.85971679687498],[48.91035156250004,68.74306640625002],[48.4390625,68.80488281249998],[48.319921875,69.26923828125001],[48.8449218750001,69.49472656250003],[49.22519531250006,69.51123046875],[50.265234375,69.18559570312502]]],[[[161.46708984375002,68.90097656250003],[161.08281250000007,69.4056640625],[161.50517578125007,69.63945312500002],[161.46708984375002,68.90097656250003]]],[[[169.20078125000006,69.58046875],[168.34804687500005,69.66435546875005],[167.86474609375003,69.90107421875004],[168.35791015625003,70.01567382812502],[169.37480468750007,69.88261718749999],[169.20078125000006,69.58046875]]],[[[60.450488281250074,69.93486328124999],[60.44023437500002,69.72592773437506],[59.637011718750074,69.72104492187503],[59.50263671875004,69.86621093750003],[58.952734375,69.89277343750004],[58.51992187500005,70.31831054687504],[59.04804687500004,70.46049804687505],[60.450488281250074,69.93486328124999]]],[[[52.90332031250003,71.36499023437503],[53.19257812500004,71.21528320312498],[53.0226562500001,70.96870117187501],[52.24960937500006,71.28491210937506],[52.90332031250003,71.36499023437503]]],[[[178.8615234375001,70.826416015625],[178.68388671875013,71.10566406250004],[180,71.53774414062505],[180,70.993017578125],[178.8615234375001,70.826416015625]]],[[[137.95986328125005,71.50766601562503],[137.71181640625005,71.4232421875],[137.06406250000006,71.52988281250003],[137.816796875,71.58789062500006],[137.95986328125005,71.50766601562503]]],[[[-178.87646484375,71.57705078124997],[-178.13388671874998,71.46547851562497],[-177.523583984375,71.16689453125],[-179.415673828125,70.91899414062502],[-179.999951171875,70.993017578125],[-179.999951171875,71.53774414062505],[-178.87646484375,71.57705078124997]]],[[[77.6325195312501,72.291259765625],[76.87109374999997,72.317041015625],[77.74853515625003,72.63120117187506],[78.36513671875005,72.48242187500003],[77.6325195312501,72.291259765625]]],[[[79.50146484374997,72.72192382812497],[78.63320312500005,72.85073242187502],[79.16425781250004,73.0943359375],[79.50146484374997,72.72192382812497]]],[[[74.660546875,72.87343750000002],[74.18066406250003,72.975341796875],[74.19853515625002,73.10908203124998],[74.9615234375,73.0625],[74.660546875,72.87343750000002]]],[[[120.26132812500012,73.08984374999997],[119.79208984375006,73.04541015624997],[119.64042968750002,73.12431640625007],[120.26132812500012,73.08984374999997]]],[[[55.31982421875003,73.30830078124998],[56.42958984375005,73.201171875],[56.121679687500006,72.80659179687498],[55.40332031249997,72.54907226562503],[55.29785156249997,71.93535156250005],[56.45439453125002,71.10737304687504],[57.62539062500005,70.72880859374999],[57.14589843750005,70.58911132812506],[56.38574218749997,70.73413085937503],[56.49970703125004,70.56640625000003],[55.687304687500074,70.69218749999999],[54.60117187500006,70.68007812500002],[53.383593750000074,70.87353515625],[53.670507812500006,71.08691406250003],[54.155664062499994,71.12548828125],[53.40996093750002,71.34013671875002],[53.41162109375003,71.530126953125],[51.93789062500005,71.47470703124998],[51.511328125,71.64809570312497],[51.58251953124997,72.07119140625],[52.252050781250006,72.12973632812503],[52.66191406250002,72.33686523437495],[52.91660156250006,72.66889648437501],[52.5792968750001,72.791357421875],[53.3698242187501,72.91674804687506],[53.2511718750001,73.182958984375],[54.80390625000004,73.38764648437498],[55.31982421875003,73.30830078124998]]],[[[70.67392578125006,73.09501953125005],[70.04072265625004,73.03715820312507],[69.99589843750002,73.359375],[70.94023437500002,73.51440429687503],[71.6261718750001,73.17397460937497],[70.67392578125006,73.09501953125005]]],[[[142.18486328125007,73.89589843750005],[143.34375,73.56875],[143.45146484375007,73.231298828125],[141.59667968750003,73.31083984375005],[140.66279296875004,73.45200195312503],[139.785546875,73.35522460937503],[141.08476562500002,73.86586914062497],[142.18486328125007,73.89589843750005]]],[[[83.5490234375001,74.07177734375],[82.8177734375,74.09160156250005],[83.14980468750005,74.151611328125],[83.5490234375001,74.07177734375]]],[[[141.01025390625003,73.99946289062501],[140.40947265625002,73.92167968750005],[140.1935546875001,74.23671875000002],[141.03857421875003,74.24272460937502],[141.01025390625003,73.99946289062501]]],[[[113.38720703124997,74.40043945312499],[112.78242187500004,74.09506835937503],[111.50341796874997,74.35307617187502],[111.87978515625,74.36381835937499],[112.08447265624997,74.54897460937505],[113.38720703124997,74.40043945312499]]],[[[86.653125,74.981298828125],[87.05214843750005,74.982568359375],[86.92714843750005,74.83076171874998],[86.25859375000002,74.89350585937498],[86.653125,74.981298828125]]],[[[82.17236328125003,75.41938476562501],[81.97851562499997,75.24711914062499],[81.65478515625003,75.28891601562498],[81.71210937500004,75.45141601562506],[82.165625,75.515625],[82.17236328125003,75.41938476562501]]],[[[146.79521484375007,75.37075195312505],[148.43242187500002,75.41352539062495],[148.59013671875007,75.23637695312502],[150.82236328125006,75.15654296875002],[150.64628906250002,74.944580078125],[149.596875,74.77260742187505],[148.296875,74.80043945312502],[146.14853515625012,75.19829101562499],[146.5375,75.58178710937506],[146.79521484375007,75.37075195312505]]],[[[135.9486328125,75.40957031250005],[135.45195312500007,75.38955078124997],[135.6986328125,75.84526367187499],[136.16894531249997,75.60556640625],[135.9486328125,75.40957031250005]]],[[[140.04873046875,75.82895507812503],[140.81591796874997,75.63071289062498],[141.48544921875012,76.13715820312495],[142.66953125000012,75.86342773437497],[143.68583984375002,75.86367187500002],[145.35996093750006,75.53046874999998],[144.01972656250004,75.04467773437506],[143.1703125,75.11689453125001],[142.72949218749997,75.33764648437506],[142.941796875,75.71328125000002],[142.30791015625007,75.69169921875005],[142.19882812500006,75.39267578124998],[143.12792968749997,74.9703125],[142.47275390625006,74.82041015625],[141.98730468750003,74.99125976562499],[140.26787109375002,74.846923828125],[139.68125,74.96406249999995],[139.09912109374997,74.65654296875002],[138.09228515625003,74.79746093750003],[136.94765625000005,75.32553710937498],[137.28974609375004,75.34863281249997],[137.26884765625002,75.7494140625],[137.70654296875003,75.75957031250002],[137.56054687499997,75.95522460937502],[138.20761718750006,76.11494140624995],[138.91953125000006,76.19672851562501],[140.04873046875,75.82895507812503]]],[[[96.5324218750001,76.278125],[96.30058593750002,76.121728515625],[95.31113281250006,76.21474609375002],[95.37988281250003,76.2890625],[96.5324218750001,76.278125]]],[[[112.47802734375003,76.62089843749999],[112.531640625,76.450048828125],[111.96894531250004,76.62617187500001],[112.47802734375003,76.62089843749999]]],[[[149.15019531250002,76.65991210937506],[148.39863281250004,76.64824218750007],[149.4064453125001,76.78208007812498],[149.15019531250002,76.65991210937506]]],[[[67.7653320312501,76.23759765624999],[61.35595703124997,75.31484375000002],[60.27685546875003,75.00756835937503],[60.501367187499994,74.90463867187503],[59.67402343750004,74.61015624999999],[59.24013671875005,74.69296874999998],[59.040429687499994,74.48554687500001],[58.53466796875003,74.49892578124997],[58.6178710937501,74.22739257812498],[57.76738281250002,74.013818359375],[57.755957031250006,73.769189453125],[57.313085937500006,73.838037109375],[57.54257812500006,73.65820312500003],[56.96386718750003,73.36655273437503],[56.43037109375004,73.29721679687503],[55.00683593750003,73.45385742187506],[54.29990234375006,73.35097656249997],[53.7628906250001,73.76616210937499],[54.64267578125006,73.95957031250006],[55.34091796875006,74.41962890624998],[56.13710937500005,74.49609375000003],[55.5822265625001,74.627685546875],[56.4987304687501,74.95708007812505],[55.81005859374997,75.12490234374997],[56.03554687499999,75.19423828124997],[56.57031250000003,75.09775390625003],[56.8444335937501,75.351416015625],[57.606835937499994,75.34125976562498],[58.05830078125004,75.6630859375],[58.88125,75.85478515625007],[60.27929687499997,76.09624023437505],[60.94218750000002,76.07128906250003],[61.20166015624997,76.28203125000007],[62.97148437500002,76.23666992187498],[64.4634765625,76.37817382812503],[67.65185546874997,77.011572265625],[68.48574218750005,76.93369140625003],[68.94169921875002,76.707666015625],[67.7653320312501,76.23759765624999]]],[[[96.28544921875002,77.02666015625007],[95.27031250000007,77.01884765624999],[96.52841796875006,77.20551757812501],[96.28544921875002,77.02666015625007]]],[[[89.51425781250006,77.18881835937498],[89.14169921875012,77.22680664062497],[89.61621093749997,77.31103515625],[89.51425781250006,77.18881835937498]]],[[[130.68730468750007,42.30253906249999],[130.52695312500012,42.535400390625],[130.42480468749997,42.72705078124997],[131.06855468750004,42.90224609375005],[131.25732421875003,43.378076171874994],[131.2552734375,44.07158203124999],[130.9816406250001,44.844335937500034],[131.44687500000012,44.984033203124966],[131.85185546875002,45.32685546875001],[132.93603515624997,45.029931640624994],[133.1134765625001,45.130712890625006],[133.18603515625003,45.49482421875004],[133.43642578125,45.60468750000004],[133.86132812500003,46.24775390625004],[134.1676757812501,47.30219726562501],[134.75234375,47.71542968749998],[134.56601562500006,48.02250976562502],[134.66523437500004,48.25390625],[134.29335937500005,48.37343750000002],[133.46835937500006,48.09716796875003],[133.14404296875003,48.10566406249998],[132.7072265625001,47.94726562500006],[132.47626953125004,47.714990234374994],[130.96191406249997,47.70932617187498],[130.7326171875001,48.01923828124998],[130.80429687500012,48.34150390624998],[130.5521484375,48.602490234374955],[130.553125,48.861181640625006],[130.1959960937501,48.89165039062499],[129.49814453125012,49.38881835937502],[129.0651367187501,49.374658203124966],[128.70400390625,49.60014648437499],[127.99960937500006,49.56860351562506],[127.55078124999997,49.801806640625045],[127.590234375,50.20898437500003],[127.33720703125007,50.35014648437502],[127.30703125000005,50.70795898437501],[126.92480468749997,51.10014648437496],[126.34169921875,52.36201171875001],[125.64902343750012,53.042285156250045],[125.075,53.20366210937496],[124.81230468750002,53.133837890625045],[123.6078125,53.546533203124994],[120.98544921875012,53.28457031250002],[120.09453125000007,52.787207031250034],[120.0675781250001,52.632910156250034],[120.65615234375,52.56665039062503],[120.74980468750007,52.096533203125006],[120.06689453125003,51.60068359375006],[119.16367187500006,50.40600585937503],[119.34628906250012,50.278955078124994],[119.25986328125012,50.06640625000003],[118.4515625,49.84448242187503],[117.8734375,49.51347656250002],[116.6833007812501,49.82377929687499],[116.551171875,49.92031250000002],[116.35117187500012,49.97807617187499],[116.21679687500003,50.00927734375003],[116.13457031250002,50.01079101562499],[115.9259765625001,49.95214843750003],[115.79521484375002,49.90590820312502],[115.71777343750003,49.88061523437503],[115.58798828125006,49.88603515624996],[115.42919921874997,49.89648437499997],[115.36503906250002,49.911767578124966],[115.27451171875006,49.948876953124994],[115.00332031250005,50.138574218749994],[114.74316406249997,50.23369140625002],[114.29707031250004,50.27441406250006],[113.57421874999997,50.00703125000001],[113.44550781250004,49.94160156250001],[113.31904296875004,49.87431640624999],[113.16416015625012,49.79716796874999],[113.09208984375007,49.692529296874994],[113.05556640625,49.61625976562499],[112.91484375000002,49.569238281249994],[112.80644531250007,49.52358398437502],[112.69736328125012,49.50727539062498],[112.49492187500002,49.532324218750034],[112.07968750000006,49.42421875000002],[111.42929687500006,49.342626953125034],[111.3366210937501,49.355859374999966],[111.20419921875012,49.304296875000034],[110.82792968750002,49.16616210937505],[110.70976562500002,49.14296875000002],[110.42783203125006,49.219970703125],[110.32138671875012,49.215869140625045],[110.19990234375004,49.17041015625003],[109.5287109375,49.269873046875034],[109.45371093750012,49.29633789062501],[109.23671875000005,49.334912109374955],[108.61367187500005,49.32280273437499],[108.52246093750003,49.34150390624998],[108.4069335937501,49.39638671875005],[107.96542968750012,49.65351562500004],[107.91660156250012,49.947802734375045],[107.63095703125012,49.98310546875004],[107.3470703125,49.986669921875034],[107.23330078125,49.989404296874994],[107.14306640625003,50.03300781249999],[107.04023437500004,50.086474609375045],[106.94130859375005,50.19667968750002],[106.71113281250004,50.312597656250006],[106.57441406250004,50.32880859375004],[106.36845703125002,50.317578124999955],[106.21787109375006,50.304589843749966],[105.38359375000002,50.47373046874998],[104.07871093750012,50.15424804687498],[103.63291015625006,50.138574218749994],[103.49628906250004,50.16494140625005],[103.42119140625002,50.18706054687502],[103.3043945312501,50.200292968750034],[102.28837890625007,50.58510742187502],[102.31660156250004,50.71845703125001],[102.21503906250004,50.82944335937506],[102.19453125000004,51.05068359375002],[102.15195312500006,51.107519531250034],[102.14238281250007,51.21606445312503],[102.16005859375005,51.260839843750006],[102.1556640625,51.31376953124996],[102.1115234375001,51.353466796874955],[101.97919921875004,51.382226562499966],[101.82119140625,51.421044921874966],[101.57089843750006,51.46718750000005],[101.38125,51.45263671875],[100.53623046875006,51.713476562500034],[100.46894531250004,51.72607421875003],[100.23037109375,51.729833984375006],[100.0345703125,51.73710937499996],[99.92167968750002,51.755517578124994],[99.71923828124997,51.87163085937502],[98.89316406250006,52.11728515625006],[98.64052734375005,51.80117187500005],[98.103125,51.483544921874994],[97.82529296875012,50.985253906249994],[97.953125,50.85517578124998],[98.02978515625003,50.64462890624998],[98.07890625000002,50.60380859375002],[98.14501953124997,50.56855468750001],[98.22050781250007,50.55717773437502],[98.2794921875001,50.53325195312502],[98.25029296875002,50.30244140624998],[98.00390625000003,50.01425781249998],[97.35976562500005,49.741455078125],[97.20859375000006,49.73081054687506],[96.98574218750005,49.88281250000003],[96.31503906250012,49.90112304687503],[96.06552734375006,49.99873046875001],[95.52265625000004,49.911230468750034],[95.11142578125012,49.935449218749994],[94.93027343750006,50.04375],[94.8112304687501,50.04819335937506],[94.71806640625002,50.04326171875002],[94.67548828125004,50.02807617187506],[94.61474609375003,50.02373046874996],[94.56464843750004,50.08793945312499],[94.35468750000004,50.221826171874994],[94.25107421875006,50.55639648437503],[93.103125,50.60390625000002],[92.94130859375005,50.77822265625002],[92.85644531250003,50.78911132812502],[92.77929687500003,50.778662109375006],[92.738671875,50.71093749999997],[92.68134765625004,50.683203125],[92.6266601562501,50.68828124999999],[92.57890625000002,50.725439453125006],[92.42636718750006,50.803076171875006],[92.35478515625002,50.86416015625002],[92.29580078125,50.84980468750004],[92.19238281249997,50.700585937499994],[91.80429687500006,50.693603515625],[91.4464843750001,50.52216796874998],[91.41503906249997,50.46801757812506],[91.34082031249997,50.470068359375034],[91.30058593750002,50.46337890625],[91.2337890625,50.45239257812497],[91.02158203125012,50.41547851562501],[90.83808593750004,50.32373046874997],[90.76074218749997,50.30595703124999],[90.71435546874997,50.25942382812502],[90.65507812500007,50.22236328125001],[90.05371093750003,50.09375],[89.64384765625002,49.90302734374998],[89.65410156250007,49.71748046875001],[89.57919921875006,49.69970703125003],[89.475,49.66054687500005],[89.39560546875006,49.61152343750001],[89.24394531250007,49.62705078125006],[89.20292968750007,49.59570312499997],[89.17998046875002,49.5322265625],[89.10947265625012,49.50136718750002],[89.00839843750006,49.472802734374994],[88.97060546875,49.483740234375006],[88.94541015625012,49.50766601562498],[88.90019531250002,49.53969726562502],[88.86386718750006,49.52763671874996],[88.83164062500012,49.44843749999998],[88.633203125,49.486132812500045],[88.19257812500004,49.451708984375045],[88.13554687500002,49.38149414062502],[88.11572265624997,49.25629882812501],[88.0285156250001,49.219775390625045],[87.98808593750002,49.186914062499994],[87.9347656250001,49.16455078124997],[87.81425781250002,49.162304687499955],[87.7625,49.16582031249996],[87.5158203125001,49.122412109375006],[87.41669921875004,49.07661132812501],[87.32285156250012,49.085791015625006],[86.62646484374997,49.56269531250001],[86.67548828125004,49.77729492187501],[86.1808593750001,49.49931640624996],[85.2326171875001,49.61582031249998],[84.9894531250001,50.061425781249994],[84.32324218749997,50.239160156249966],[83.94511718750007,50.774658203125],[83.35732421875005,50.99458007812504],[82.76083984375012,50.89335937500002],[82.49394531250007,50.72758789062499],[81.46591796875006,50.73984375],[81.38828125000006,50.95649414062501],[81.0714843750001,50.96875],[81.12724609375002,51.19106445312502],[80.73525390625,51.29340820312498],[80.44804687500002,51.18334960937503],[80.42363281250002,50.94628906249997],[79.98623046875,50.774560546874966],[77.85996093750006,53.269189453124994],[76.48476562500005,54.02255859374998],[76.42167968750007,54.151513671874966],[76.65458984375007,54.14526367187503],[76.8373046875,54.4423828125],[75.43720703125004,54.08964843749999],[75.22021484374997,53.89379882812506],[74.45195312500007,53.64726562500002],[74.35156250000003,53.487646484375006],[73.85898437500006,53.61972656249998],[73.40693359375004,53.44755859374999],[73.30566406250003,53.707226562499955],[73.71240234375003,54.04238281250002],[73.22988281250005,53.957812500000045],[72.62226562500004,54.13432617187502],[72.44677734375003,53.94184570312498],[72.18603515625003,54.32563476562501],[72.00449218750006,54.20566406249998],[71.09316406250005,54.21220703124999],[71.18554687500003,54.59931640624998],[70.73808593750007,55.30517578125],[70.18242187500002,55.162451171875034],[68.9772460937501,55.389599609374955],[68.20625,55.16093750000002],[68.15585937500006,54.97670898437505],[65.476953125,54.62329101562497],[65.08837890624997,54.340185546875034],[64.46123046875002,54.38417968750002],[61.92871093750003,53.94648437500004],[61.231054687500006,54.01948242187498],[60.97949218749997,53.62172851562505],[61.53496093750002,53.52329101562506],[61.22890625,53.445898437500006],[61.19921874999997,53.28715820312502],[61.65986328125004,53.22846679687504],[62.08271484375004,53.00541992187499],[61.047460937500006,52.97246093750002],[60.77441406249997,52.67578124999997],[60.99453125000005,52.33686523437504],[60.03027343749997,51.93325195312505],[60.464746093749994,51.651171875000045],[61.55468750000003,51.32460937500005],[61.38945312500002,50.86103515625001],[60.94228515625005,50.69550781250004],[60.42480468749997,50.67915039062498],[60.05859374999997,50.850292968749955],[59.812402343749994,50.58203125],[59.523046875,50.492871093749955],[59.4523437500001,50.62041015625002],[58.88369140625005,50.694433593750006],[58.359179687500074,51.063818359375034],[57.83886718750003,51.091650390625006],[57.44218750000002,50.88886718749998],[57.01171874999997,51.06518554687503],[56.49140625000004,51.01953124999997],[55.68623046875004,50.582861328125006],[54.64160156250003,51.011572265625034],[54.555273437500006,50.535791015624994],[54.139746093750006,51.04077148437503],[53.33808593750004,51.48237304687504],[52.57119140625005,51.481640624999955],[52.21914062499999,51.709375],[51.344531250000074,51.47534179687503],[51.16347656250005,51.6474609375],[50.79394531249997,51.729199218749955],[50.246875,51.28950195312498],[49.49804687500003,51.08359375000006],[49.32343750000004,50.851708984374966],[48.625097656250006,50.61269531250005],[48.7589843750001,49.92832031250006],[48.33496093750003,49.858251953125006],[47.7057617187501,50.37797851562502],[47.42919921874997,50.35795898437502],[46.889550781249994,49.69697265625001],[46.80205078125002,49.36708984375002],[47.031347656250006,49.150292968749994],[46.70263671875003,48.80556640625002],[46.660937500000074,48.41225585937502],[47.06464843750004,48.23247070312499],[47.292382812499994,47.74091796875004],[47.48193359374997,47.80390624999998],[48.16699218750003,47.70878906249996],[48.959375,46.77460937499998],[48.558398437500074,46.75712890624999],[48.54121093750004,46.60561523437502],[49.232226562500074,46.33715820312503],[48.683691406250006,46.08618164062497],[48.72958984375006,45.896826171875034],[48.4870117187501,45.93486328124996],[47.63330078124997,45.58403320312499],[47.46328125,45.67968750000003],[47.5294921875001,45.530224609374955],[47.3512695312501,45.21772460937498],[46.7072265625001,44.503320312499994],[47.30703125000005,44.103125],[47.462792968749994,43.55502929687498],[47.64648437500003,43.88461914062498],[47.463183593750074,43.03505859375002],[48.572851562500006,41.84448242187503],[47.79101562499997,41.19926757812502],[47.31767578125002,41.28242187500001],[46.74931640625002,41.812597656250006],[46.42988281250004,41.890966796875006],[46.21269531250002,41.989892578124994],[45.63857421875005,42.20507812500003],[45.63427734374997,42.234716796875034],[45.72753906249997,42.47504882812498],[45.70527343750004,42.49809570312496],[45.56289062499999,42.53574218749998],[45.34375,42.52978515625003],[45.16025390625006,42.675],[45.07158203125002,42.69414062500002],[44.94335937499997,42.73027343750002],[44.870996093749994,42.75639648437499],[44.850488281249994,42.746826171875],[44.77109375000006,42.61679687499998],[44.69179687499999,42.709619140624966],[44.64433593750002,42.734716796875034],[44.50585937500003,42.748632812500006],[44.329492187499994,42.703515624999966],[44.10273437500004,42.616357421874994],[44.004687500000074,42.59560546875002],[43.95742187500005,42.56655273437505],[43.825976562500074,42.571533203125],[43.759863281250006,42.593847656250006],[43.738378906250006,42.61699218750002],[43.74990234375005,42.65751953125002],[43.79541015624997,42.702978515625034],[43.78261718750005,42.747021484374955],[43.62304687500003,42.80771484374998],[43.5578125000001,42.844482421875],[43.089160156250074,42.9890625],[43.00019531250004,43.04965820312506],[42.991601562499994,43.09150390624998],[42.76064453125005,43.169580078124966],[41.58056640624997,43.21923828124997],[41.460742187500074,43.276318359374955],[41.35820312500002,43.33339843750005],[41.08310546875006,43.37446289062498],[40.94199218750006,43.41806640624998],[40.801660156249994,43.479931640624955],[40.64804687500006,43.53388671875004],[40.084570312500006,43.553125],[40.02373046875002,43.48486328125],[39.873632812500006,43.47280273437502],[38.71728515624997,44.28808593750003],[38.18125,44.41967773437503],[37.851464843749994,44.698828125000034],[37.49511718750003,44.69526367187504],[37.20478515625004,44.97197265624999],[36.62763671875004,45.15131835937504],[36.941210937500074,45.289697265624994],[36.72041015625004,45.371875],[36.8659179687501,45.42705078124999],[37.21357421875004,45.272314453125006],[37.6471679687501,45.37719726562506],[37.61240234375006,45.56469726562506],[37.93310546875003,46.001708984375],[38.014257812500006,46.047753906249966],[38.07958984375003,45.93481445312506],[38.18359374999997,46.09482421875006],[38.49228515625006,46.09052734374998],[37.913867187500074,46.40649414062503],[37.766503906249994,46.63613281250002],[38.50097656249997,46.663671875000034],[38.43867187500004,46.813085937500006],[39.29345703125003,47.105761718750045],[39.19570312499999,47.268847656250045],[39.023730468750074,47.27221679687503],[38.928320312500006,47.175683593749994],[38.55244140625004,47.15034179687498],[38.7619140625001,47.261621093749994],[38.21435546875003,47.091455078124966],[38.36884765625004,47.609960937500006],[38.90029296875005,47.85512695312502],[39.77871093750005,47.88754882812506],[39.95791015625005,48.268896484375034],[39.8356445312501,48.54277343749996],[39.6447265625001,48.591210937499966],[39.792871093749994,48.807714843750034],[40.00361328125004,48.82207031250002],[39.68652343749997,49.007910156250034],[40.10878906250005,49.251562500000034],[40.080664062500006,49.576855468749955],[39.780566406250074,49.57202148437503],[39.17480468750003,49.85595703124997],[38.91835937499999,49.82470703125],[38.258593750000074,50.05234375],[38.046875,49.92001953125006],[37.42285156249997,50.411474609375006],[36.619433593750074,50.209228515625],[36.1164062500001,50.408544921875006],[35.59111328125002,50.36875],[35.31191406250005,51.043896484374955],[35.0640625,51.203417968750045],[34.21386718750003,51.25537109375006],[34.12109375000003,51.67915039062498],[34.397851562499994,51.780419921874994],[33.735253906249994,52.344775390625045],[32.435449218749994,52.307226562500034],[32.12226562500004,52.05058593749996],[31.763378906250097,52.10107421875003],[31.758593750000017,52.125830078125034],[31.690625,52.22065429687498],[31.64990234374997,52.26220703125],[31.60156250000003,52.284814453124994],[31.57734375000004,52.31230468749999],[31.585546875,52.532470703125],[31.56484375,52.75922851562501],[31.53515624999997,52.798242187499966],[31.442773437499994,52.86181640625003],[31.35302734374997,52.93344726562498],[31.295117187500097,52.98979492187499],[31.25878906249997,53.01669921875006],[31.364550781250017,53.13896484375002],[31.388378906250097,53.18481445312503],[31.41787109375005,53.196044921875],[31.849707031250006,53.106201171875],[32.14199218750005,53.091162109375034],[32.46933593750006,53.270312500000045],[32.578027343749994,53.312402343749994],[32.644433593749994,53.32890624999999],[32.70429687500004,53.33632812499999],[32.45097656250002,53.6533203125],[32.20039062500004,53.78125],[31.99218750000003,53.796875],[31.82080078124997,53.79194335937498],[31.754199218750017,53.81044921875002],[31.825292968750006,53.93500976562501],[31.837792968749994,54.00078124999999],[31.825976562500074,54.030712890624955],[31.79199218749997,54.05590820312503],[31.62841796874997,54.111181640625006],[31.403613281250017,54.195947265624966],[31.299121093750017,54.29169921875001],[31.184765625000097,54.452978515625006],[31.074804687500063,54.491796875],[31.154882812500063,54.610937500000034],[31.152148437500017,54.625341796875034],[31.12128906250004,54.64848632812496],[30.984179687500074,54.695898437500034],[30.79882812499997,54.78325195312499],[30.79101562499997,54.806005859375006],[30.804492187500074,54.8609375],[30.829882812500017,54.91499023437498],[30.977734375000097,55.05048828124998],[30.977734375000097,55.08779296875002],[30.958886718749994,55.13759765625005],[30.87744140625003,55.223437500000045],[30.81445312499997,55.27871093750002],[30.81054687499997,55.306982421875006],[30.82099609375004,55.330273437499955],[30.900585937500097,55.397412109374955],[30.906835937500063,55.57001953125004],[30.625585937500006,55.666259765625],[30.23359375000004,55.84521484375006],[30.04267578125004,55.83642578125003],[29.93701171874997,55.84526367187499],[29.881640625000074,55.83232421875002],[29.82392578125004,55.79511718749998],[29.74414062499997,55.770410156249994],[29.630078125000097,55.75117187499998],[29.482226562500074,55.6845703125],[29.412988281249994,55.72485351562506],[29.35341796875005,55.784375],[29.375,55.938720703125],[28.284277343750006,56.055908203125],[28.14794921875003,56.142919921875034],[28.202050781250023,56.260400390624994],[28.191699218750045,56.31557617187505],[28.169238281250017,56.386865234374994],[28.11083984375,56.51069335937501],[28.103125,56.545703125000045],[27.89208984375003,56.741064453125034],[27.88154296875001,56.82416992187501],[27.848632812500057,56.85341796875002],[27.806054687499994,56.86708984375005],[27.639453125000074,56.84565429687504],[27.83027343750004,57.19448242187505],[27.83828125000008,57.247705078124966],[27.82861328124997,57.293310546875006],[27.796875,57.316943359375045],[27.538671875000063,57.429785156250034],[27.51113281250005,57.508154296875006],[27.469726562500057,57.524023437500034],[27.35195312500005,57.528125],[27.4,57.66679687499999],[27.542089843750063,57.799414062500006],[27.778515625000068,57.87070312500006],[27.502441406250057,58.221337890624994],[27.434179687500006,58.787255859374994],[28.15107421875004,59.374414062499966],[28.0125,59.484277343749966],[28.05800781250008,59.781542968750045],[28.334570312500034,59.69252929687502],[28.518164062500034,59.849560546874955],[28.947265625000057,59.828759765624994],[29.147265625000045,59.999755859375],[30.12255859374997,59.873583984375074],[30.172656250000017,59.957128906250034],[29.72119140624997,60.19531249999997],[29.069140625000017,60.19145507812499],[28.643164062500006,60.375292968750045],[28.512792968750006,60.67729492187502],[27.797656250000074,60.53613281250003],[29.69013671875004,61.54609375000001],[31.18671875000004,62.48139648437504],[31.533984375000017,62.885400390624994],[31.180859375000097,63.208300781250074],[29.991503906250074,63.73515625000002],[30.50390625000003,64.02060546875],[30.513769531250006,64.2],[30.04189453125005,64.44335937499997],[30.072851562500063,64.76503906250005],[29.60419921875004,64.968408203125],[29.826953125000017,65.14506835937502],[29.608007812500006,65.248681640625],[29.715917968750063,65.62456054687502],[30.102734375000097,65.72626953125004],[29.066210937500045,66.89174804687497],[29.988085937500017,67.66826171874999],[29.343847656250006,68.06186523437506],[28.685156250000034,68.189794921875],[28.470703125000057,68.48837890625],[28.77285156250005,68.84003906249995],[28.414062500000057,68.90415039062506],[28.96582031250003,69.02197265625],[29.38828125,69.29814453125005],[30.08730468750005,69.43286132812503],[30.18017578124997,69.63583984375],[30.860742187499994,69.53842773437503],[30.869726562500006,69.78344726562506],[31.546972656250063,69.696923828125],[31.997949218749994,69.80991210937503],[31.98457031250004,69.95366210937499],[33.00781249999997,69.72211914062498],[32.91503906249997,69.60170898437497],[32.17675781250003,69.67402343749995],[32.37773437500002,69.47910156250003],[32.99980468750002,69.4701171875],[32.97890625000005,69.367333984375],[33.45429687500004,69.42817382812495],[33.14121093750006,69.068701171875],[33.684375,69.31025390625001],[35.85791015625003,69.19174804687503],[37.73056640625006,68.69213867187503],[38.43017578125003,68.35561523437505],[39.568945312500006,68.07172851562501],[39.82333984375006,68.05859375],[39.80927734375004,68.15083007812498],[40.38066406250002,67.831884765625],[40.96640625000006,67.71347656250003],[41.358789062499994,67.20966796874998],[41.18896484375003,66.82617187500003],[40.10332031250002,66.29995117187502],[38.65390625000006,66.06904296874995],[35.51347656250002,66.39580078125002],[34.82460937499999,66.61113281249999],[34.48261718750004,66.55034179687505],[34.4515625,66.651220703125],[33.15019531250002,66.84394531250001],[32.93046875000002,67.08681640625002],[31.895312500000074,67.16142578125002],[33.65595703125004,66.44262695312506],[33.36054687500004,66.32954101562501],[34.112695312499994,66.225244140625],[34.69179687500005,65.95185546874998],[34.77695312500006,65.76826171874998],[34.40644531250004,65.39575195312503],[35.03535156250004,64.44023437500005],[35.802050781250074,64.3353515625],[36.3649414062501,64.00283203125002],[37.44218750000002,63.813378906249966],[37.9679687500001,63.949121093749994],[38.0622070312501,64.09101562499995],[37.953710937500006,64.32011718749999],[37.183691406250006,64.40849609375007],[36.6242187500001,64.75053710937502],[36.534570312499994,64.93862304687497],[36.88281249999997,65.17236328124997],[39.7580078125001,64.57705078125002],[40.05781250000004,64.77075195312497],[40.44492187500006,64.7787109375],[39.7980468750001,65.349853515625],[39.816503906250006,65.59794921874999],[41.4757812500001,66.12343750000002],[42.21054687500006,66.51967773437502],[43.23320312500002,66.41552734375003],[43.653125,66.2509765625],[43.54189453125005,66.12338867187503],[43.84375,66.14238281249999],[44.10439453125005,66.00859374999999],[44.42929687500006,66.93774414062503],[43.7824218750001,67.25449218749998],[44.20468750000006,68.25375976562498],[43.33320312500004,68.67338867187502],[44.04804687500004,68.54882812499997],[45.891992187499994,68.47968750000001],[46.69042968750003,67.84882812500001],[45.52871093750005,67.75756835937497],[44.90214843750002,67.41313476562505],[45.56220703125004,67.18559570312507],[45.88535156250006,66.89106445312501],[46.4923828125001,66.80019531249997],[47.65585937500006,66.97592773437498],[47.87470703125004,67.58417968749998],[48.83320312500004,67.681494140625],[48.75429687500005,67.89594726562501],[49.15527343750003,67.87041015625005],[51.994726562500006,68.53876953124995],[52.3966796875001,68.35170898437505],[52.72265624999997,68.484033203125],[52.34404296875002,68.60815429687497],[53.80195312500004,68.99589843750002],[54.49121093750003,68.992333984375],[53.797656250000074,68.90747070312503],[53.9308593750001,68.43554687499997],[53.260546875000074,68.26748046875002],[54.476171875,68.29414062499995],[54.86132812500003,68.20185546874998],[55.418066406250006,68.56782226562501],[56.04365234375004,68.64887695312501],[57.126855468749994,68.55400390625005],[58.17304687500004,68.88974609375006],[59.0573242187501,69.00605468750004],[59.37050781250005,68.73837890625003],[59.09902343750005,68.4443359375],[59.725683593750006,68.35161132812502],[59.89599609374997,68.70634765624999],[60.489160156249994,68.72895507812498],[60.93359374999997,68.98676757812501],[60.17060546875004,69.59091796875],[60.90908203125005,69.84711914062495],[64.19042968750003,69.53466796875],[64.89628906250002,69.247802734375],[67.00244140625003,68.87358398437505],[68.37119140625006,68.31425781250005],[69.14052734375005,68.95063476562501],[68.54277343750002,68.96708984374999],[68.00585937499997,69.48002929687505],[67.62412109375,69.58442382812501],[67.06445312500003,69.69370117187498],[66.89667968750004,69.55380859374998],[67.28476562500006,70.73872070312498],[67.14335937500002,70.83754882812502],[66.70224609375006,70.81850585937497],[66.63964843749997,71.08139648437498],[68.2692382812501,71.68281250000001],[69.61181640625003,72.98193359375],[69.73828124999997,72.88496093749998],[71.5001953125001,72.91367187500003],[72.812109375,72.69140624999997],[72.57412109375,72.01254882812506],[71.86728515625,71.457373046875],[72.70449218750005,70.96323242187498],[72.5767578125,68.96870117187498],[73.59169921875005,68.48188476562501],[73.13945312500002,68.18134765624998],[73.06679687500005,67.766943359375],[71.84746093750002,67.00761718750005],[71.36523437500003,66.96152343749998],[71.53955078125003,66.68310546875],[70.72490234375007,66.51943359374997],[70.38281249999997,66.60249023437501],[70.69072265625002,66.74531249999998],[70.2833984375001,66.68579101562503],[69.8771484375001,66.84545898437506],[69.21777343749997,66.82861328125],[69.01347656250002,66.78833007812503],[69.19433593749997,66.57866210937505],[70.33945312500006,66.34238281250006],[71.35800781250006,66.35942382812505],[71.91699218749997,66.24672851562502],[72.32158203125002,66.33212890625],[72.4173828125,66.56079101562506],[73.79208984375,66.99531250000001],[74.07451171875007,67.41411132812499],[74.76953124999997,67.76635742187497],[74.39140625000007,68.42060546874995],[74.57958984375003,68.751220703125],[76.10751953125006,68.975732421875],[76.45917968750004,68.97827148437497],[77.2384765625001,68.46958007812498],[77.17441406250012,67.77851562499998],[77.77158203125006,67.57026367187501],[78.92246093750006,67.58911132812503],[77.58828125000005,67.75190429687498],[77.66484375000002,68.19038085937495],[77.99511718749997,68.25947265624998],[77.65068359375007,68.90302734375001],[76.00097656249997,69.23505859374998],[75.42001953125,69.23862304687498],[74.81484375,69.09057617187503],[73.83603515625006,69.143212890625],[73.578125,69.80297851562503],[74.34335937500006,70.57871093749998],[73.08623046875007,71.44492187500006],[73.67177734375,71.84506835937503],[74.99218749999997,72.14482421874999],[74.78681640625004,72.811865234375],[75.15244140625,72.85273437499998],[75.74140625000004,72.29624023437503],[75.273828125,71.95893554687495],[75.33203125000003,71.34174804687498],[76.92900390625002,71.12788085937504],[77.58964843750007,71.16791992187501],[78.32060546875002,70.93041992187503],[78.94218750000002,70.93378906250001],[79.08388671875,71.00200195312505],[78.58769531250007,70.993896484375],[78.21259765625004,71.26630859374998],[76.43339843750002,71.55249023437503],[76.03242187500004,71.91040039062503],[76.87138671875002,72.03300781250005],[77.77753906250004,71.83642578125006],[78.23242187500003,71.95229492187502],[78.01640625000007,72.092041015625],[77.49287109375004,72.07172851562504],[77.47158203125,72.19213867187506],[78.22539062500007,72.37744140625006],[79.4220703125001,72.38076171875002],[80.7625,72.08916015625002],[81.66162109374997,71.71596679687502],[82.75781250000003,71.76411132812498],[83.23359375000004,71.66816406249995],[82.32285156250006,71.26000976562503],[82.16318359375012,70.59814453125003],[82.22119140625003,70.39570312499998],[82.86914062499997,70.95483398437503],[83.03017578125,70.58051757812498],[82.6823242187501,70.21772460937498],[83.0807617187501,70.09301757812497],[83.07382812500012,70.276708984375],[83.73593750000006,70.54648437499998],[83.15126953125005,71.10361328124998],[83.534375,71.68393554687498],[83.20029296875012,71.87470703125004],[82.64541015625005,71.92524414062504],[82.09365234375,72.26542968750005],[80.82705078125005,72.48828124999997],[80.84160156250007,72.94916992187498],[80.4245117187501,73.23115234374998],[80.5832031250001,73.56845703125003],[85.20058593750005,73.72153320312506],[86.89296875,73.88710937500002],[85.79257812500012,73.438330078125],[86.67705078125002,73.10678710937503],[85.93896484374997,73.45649414062495],[87.12011718750003,73.61503906250002],[87.57119140625,73.81074218750001],[86.57109375000007,74.24375],[86.0013671875,74.316015625],[86.39580078125007,74.45009765624997],[86.89794921874997,74.32534179687497],[87.22968750000004,74.3638671875],[85.79101562499997,74.6451171875],[86.20126953125006,74.81621093750005],[86.65146484375012,74.68242187500005],[87.04179687500007,74.77885742187499],[87.46757812500002,75.01323242187505],[86.93906250000006,75.06811523437503],[87.00595703125012,75.16982421874997],[87.67138671874997,75.12958984375004],[90.18496093750005,75.59106445312497],[94.07519531249997,75.91289062499999],[92.89042968750002,75.90996093750002],[93.25927734375003,76.09877929687502],[95.57871093750012,76.13730468749998],[96.07548828125007,76.08198242187498],[95.65332031250003,75.89218750000003],[96.50859375000002,76.00556640624995],[96.49707031249997,75.89121093750003],[98.66201171875005,76.24267578125003],[99.77041015625,76.02875976562498],[99.5407226562501,75.79858398437497],[99.85136718750007,75.93027343749998],[99.8253906250001,76.13593749999995],[98.80566406250003,76.48066406250004],[100.84375,76.52519531250005],[101.59775390625006,76.43920898437503],[100.92802734375002,76.55673828124998],[100.98994140625004,76.99047851562497],[102.61015625000007,77.508544921875],[104.01455078125,77.73041992187501],[106.05957031249997,77.39052734375002],[104.20244140625002,77.101806640625],[106.9416015625001,77.034375],[107.42978515625006,76.92656250000002],[106.41357421874997,76.51225585937499],[107.72216796875003,76.52231445312498],[108.18164062500003,76.73784179687502],[111.39248046875,76.686669921875],[112.09394531250004,76.48032226562506],[111.94267578125002,76.38046875000003],[112.61953125,76.38354492187506],[112.65625,76.05356445312498],[113.2726562500001,76.25166015625001],[113.5638671875,75.89165039062502],[113.85722656250007,75.92128906250002],[113.56757812500004,75.56840820312499],[112.45302734375,75.83017578125003],[112.95566406250006,75.571923828125],[113.24296875000007,75.61142578125003],[113.72617187500012,75.45063476562498],[112.92490234375012,75.01503906249997],[109.84033203124997,74.32197265624998],[109.8102539062501,74.16918945312503],[108.19951171875002,73.69409179687497],[107.27109375000006,73.62104492187501],[106.67939453125004,73.3306640625],[106.1886718750001,73.3080078125],[105.14394531250005,72.77705078125001],[105.7082031250001,72.836669921875],[106.47792968750005,73.13940429687503],[107.750390625,73.17314453125007],[109.33105468749997,73.48745117187497],[109.85527343750002,73.47246093750002],[110.86816406249997,73.73071289062497],[109.70673828125004,73.74375],[110.2614257812501,74.01743164062503],[111.05625,73.93935546875002],[111.13085937500003,74.05283203125003],[111.55058593750007,74.02851562499998],[111.22812500000012,73.96855468750002],[111.40039062500003,73.827734375],[112.14726562500007,73.70893554687498],[112.79541015625003,73.74609375],[112.83593750000003,73.96206054687502],[113.03281250000006,73.91386718750007],[113.4162109375001,73.647607421875],[113.15693359375004,73.45957031249998],[113.49091796875004,73.34609375000002],[113.12783203125,72.8306640625],[113.66455078124997,72.63452148437503],[113.2155273437501,72.80585937500001],[113.88623046875003,73.34580078124998],[113.51035156250012,73.50498046874998],[115.33769531250007,73.70258789062501],[118.87089843750007,73.53789062500002],[118.45703124999997,73.46440429687507],[118.43027343750012,73.24653320312501],[119.750390625,72.97910156250006],[122.26015625,72.88056640624995],[122.75195312500003,72.906494140625],[122.61523437499997,73.02792968750006],[123.1603515625001,72.95488281250002],[123.62226562500004,73.19326171875],[123.49111328125005,73.666357421875],[124.54121093750004,73.75126953125007],[125.59853515625005,73.447412109375],[126.25449218750012,73.548193359375],[126.55253906250007,73.33491210937498],[127.03134765625006,73.54746093750003],[127.74033203125012,73.48154296875],[129.10058593750003,73.11235351562502],[128.5990234375,72.895166015625],[129.01728515625004,72.8724609375],[129.250390625,72.70517578125003],[128.41826171875002,72.53515625000003],[129.28134765625006,72.43769531249998],[129.41064453124997,72.16630859375002],[128.93496093750005,72.07949218750002],[127.8034179687501,72.43403320312504],[127.84140625000012,72.308251953125],[128.91142578125002,71.75532226562495],[129.21025390625007,71.91694335937501],[129.46083984375,71.73930664062499],[128.84326171875003,71.6634765625],[129.76191406250004,71.11953125000002],[130.53710937500003,70.89252929687495],[130.75712890625002,70.96235351562498],[131.02158203125006,70.74609374999997],[132.0353515625001,71.24404296875],[132.65390625000006,71.92597656250001],[133.6888671875,71.434228515625],[134.70273437500012,71.38681640625003],[135.55917968750006,71.6103515625],[136.09033203125003,71.61958007812501],[137.9396484375001,71.1333984375],[137.84404296875007,71.22680664062503],[138.31406250000006,71.32553710937498],[137.918359375,71.38408203124999],[138.23417968750007,71.596337890625],[138.78017578125,71.62900390624998],[139.209375,71.44477539062501],[139.98417968750007,71.49150390625005],[139.72294921875002,71.88496093749998],[139.35927734375005,71.95136718750001],[140.18769531250004,72.19130859374997],[139.17636718750006,72.16347656249997],[139.14082031250004,72.32973632812502],[139.60117187500012,72.49609374999997],[141.07929687500004,72.5869140625],[140.80820312500006,72.89096679687503],[142.06142578125005,72.72080078125],[146.25292968749997,72.442236328125],[146.234765625,72.34970703125],[144.77636718749997,72.38227539062495],[144.16923828125002,72.25878906250003],[144.29492187499997,72.19262695312497],[146.83183593750007,72.29541015625003],[146.11328125000003,71.94497070312497],[146.23027343750007,72.1375],[145.75859375000007,72.22587890624999],[145.75673828125005,71.94130859375002],[145.06396484374997,71.92607421875002],[145.18857421875012,71.69580078125],[146.07324218749997,71.80834960937503],[147.26181640625006,72.327880859375],[149.50156250000012,72.16430664062497],[150.01689453125002,71.89565429687505],[149.04873046875005,71.79575195312503],[148.9681640625,71.69047851562499],[150.59980468750004,71.5201171875],[150.09765624999997,71.22656249999997],[150.96777343749997,71.38046874999998],[151.58242187500005,71.28696289062503],[152.09277343749997,71.02329101562503],[151.76201171875002,70.98247070312499],[152.50878906250003,70.83447265625003],[156.68457031250003,71.09375],[158.03701171875005,71.03925781250001],[159.35068359375006,70.79072265625001],[160.00644531250006,70.30966796875006],[159.72939453125005,69.87021484375006],[160.91074218750012,69.60634765625002],[161.03554687500005,69.09819335937507],[161.30986328125007,68.98227539062498],[160.85605468750006,68.53833007812506],[161.565625,68.90517578125],[161.53691406250002,69.379541015625],[162.16601562499997,69.61157226562503],[163.20136718750004,69.71474609375],[166.82031250000003,69.49956054687505],[167.8568359375,69.72822265624998],[168.30302734375002,69.27148437500003],[169.31064453125006,69.07954101562498],[169.60986328124997,68.78603515624997],[170.53759765624997,68.82539062500001],[170.99541015625002,69.04531250000005],[170.58222656250004,69.58334960937506],[170.16093750000007,69.62656249999998],[170.48681640625003,70.107568359375],[173.27744140625006,69.823828125],[173.43867187500004,69.94682617187502],[175.92148437500012,69.89531250000002],[179.27265624999998,69.25966796875002],[180,68.98344726562505],[180,65.06723632812498],[178.51953125000003,64.60297851562498],[177.7486328125,64.71704101562503],[176.88085937499997,65.08193359375002],[176.34101562500015,65.04731445312501],[177.03730468750004,64.99965820312497],[177.22285156250004,64.861669921875],[177.06875,64.78666992187502],[176.06113281250012,64.96088867187498],[174.54882812500009,64.68388671875005],[176.0565429687501,64.90473632812498],[176.35097656250005,64.70512695312502],[176.14091796875007,64.58583984375005],[177.42744140625015,64.76337890624998],[177.43291015625002,64.44448242187502],[177.6875,64.30473632812507],[178.04472656250013,64.21958007812503],[178.22949218749991,64.36440429687497],[178.38144531250018,64.26088867187502],[178.73144531250003,63.667089843750006],[178.44042968750009,63.605566406250006],[178.74404296874994,63.39477539062503],[178.79296874999997,63.54033203125002],[179.38857421875,63.14721679687497],[179.25957031250002,63.00830078125],[179.5705078125001,62.6875],[179.12070312500012,62.32036132812499],[177.292578125,62.59902343750002],[177.33896484375006,62.781347656250034],[177.02353515625012,62.777246093749994],[177.15947265625007,62.56098632812498],[174.51435546875015,61.823632812499966],[173.6234375,61.716064453125],[173.13183593749997,61.40664062500002],[172.85654296875006,61.469189453124955],[172.90800781250002,61.311621093750006],[172.39609375000006,61.16738281250002],[172.39277343750004,61.061767578125],[170.60820312500007,60.434912109375034],[170.3509765625,59.965527343749955],[169.9826171875001,60.067089843749955],[169.2267578125001,60.59594726562497],[168.1375,60.57392578125001],[167.22675781250004,60.406298828125045],[166.27304687500012,59.85625],[166.13603515625007,59.979345703125034],[166.35214843750006,60.48481445312498],[165.08457031250006,60.09858398437498],[164.95371093750006,59.843603515625006],[164.52529296875,60.06127929687503],[164.11328125000003,59.89755859374998],[164.13505859375002,59.984375],[163.74384765625004,60.02802734374998],[163.36484375000012,59.78144531250004],[163.27285156250005,59.302587890625006],[162.14160156249997,58.44741210937502],[161.96005859375012,58.07690429687506],[162.39140625000002,57.717236328124955],[162.65429687499997,57.94824218750003],[163.22578125000004,57.790380859375034],[162.77929687500003,57.35761718749998],[162.79111328125012,56.875390624999966],[162.92207031250004,56.72265625000003],[163.2565429687501,56.68803710937499],[163.33554687500012,56.232519531250006],[163.04736328125003,56.044677734375],[162.84033203125003,56.065625],[162.628125,56.232275390625034],[163.03837890625002,56.521875],[162.67148437500006,56.49008789062498],[162.52822265625005,56.260693359374955],[162.08496093749997,56.08964843750002],[161.72392578125002,55.49614257812499],[162.10556640625006,54.75214843750004],[161.62480468750002,54.51625976562502],[160.77265625000004,54.54135742187498],[160.0744140625001,54.18916015625001],[159.84375,53.78364257812498],[160.02509765625004,53.129589843749955],[159.58593750000003,53.237695312499966],[158.74541015625002,52.90893554687506],[158.47207031250005,53.032373046874966],[158.6087890625,52.873632812500034],[158.49316406249997,52.383154296875034],[158.10351562500003,51.80961914062499],[156.84746093750002,51.006591796875],[156.74775390625004,50.969287109375045],[156.52119140625004,51.38027343750002],[156.36474609374997,52.509375],[156.11035156250003,52.86616210937504],[155.62031250000004,54.86455078125002],[155.5548828125001,55.348486328125034],[155.98251953125012,56.69521484375002],[156.8488281250001,57.290185546874994],[156.97675781250004,57.46630859375],[156.82988281250007,57.77963867187498],[157.4503906250001,57.79926757812498],[157.66640625000005,58.01977539062506],[158.27519531250007,58.00898437499998],[159.21064453125004,58.519433593749966],[159.8473632812501,59.127148437499955],[161.75351562500012,60.15229492187501],[162.06816406250002,60.466406250000034],[163.70996093749997,60.916796875000045],[163.55351562500002,61.02563476562503],[164.00546875000006,61.34379882812499],[163.80439453125004,61.46137695312498],[164.20722656250004,62.29223632812506],[164.59833984375004,62.470556640625034],[165.20810546875012,62.37397460937501],[165.41738281250005,62.447070312500045],[164.418359375,62.704638671875045],[163.33173828125004,62.550927734374994],[163.01767578125006,61.89106445312504],[163.25781249999997,61.69946289062497],[163.08525390625002,61.570556640625],[162.85595703125003,61.705029296874955],[162.39257812500003,61.662109375],[160.76660156249997,60.753320312499966],[160.17363281250002,60.638427734375],[160.37890625000003,61.02548828124998],[159.79042968750005,60.956640625],[160.309375,61.894384765625006],[159.55234375000012,61.71948242187497],[159.18925781250007,61.92939453125001],[158.07011718750002,61.75361328125001],[157.46933593750012,61.798925781250006],[157.0841796875001,61.67568359375002],[155.71611328125002,60.682373046875],[154.97080078125012,60.376660156249955],[154.29306640625006,59.833349609375034],[154.1498046875,59.52851562500001],[154.97128906250006,59.44960937500002],[155.16044921875002,59.19013671875001],[154.45800781250003,59.21655273437497],[154.01093750000004,59.075537109375006],[153.69521484375005,59.22475585937505],[153.36113281250002,59.214794921874955],[152.81787109375003,58.92626953124997],[152.31962890625002,59.03076171875003],[152.08789062499997,58.910449218750045],[151.32675781250006,58.875097656250034],[151.12109375000003,59.08251953125003],[152.26064453125,59.22358398437498],[151.34824218750012,59.561132812500006],[150.4835937500001,59.494384765625],[150.66728515625002,59.55634765625001],[149.64257812499997,59.770410156249994],[149.06523437500002,59.63051757812502],[149.20498046875,59.488183593749966],[148.79707031250004,59.532324218750006],[148.74414062499997,59.37353515624997],[148.96464843750007,59.36914062499997],[148.72666015625006,59.257910156250034],[148.25742187500006,59.414208984374994],[147.51445312500002,59.2685546875],[146.53720703125006,59.45698242187501],[146.0495117187501,59.17055664062502],[145.55458984375,59.413525390624955],[143.19218750000002,59.3701171875],[142.58027343750004,59.240136718749966],[140.79023437500004,58.30346679687503],[140.446875,57.81367187499998],[138.66210937500003,56.96552734375004],[137.69150390625006,56.13935546875004],[135.2625,54.94331054687498],[135.25771484375005,54.73149414062499],[135.85156249999997,54.583935546874955],[136.797265625,54.62099609375005],[136.71884765625006,53.804101562499994],[137.15537109375012,53.82167968750002],[137.14160156249997,54.182226562500006],[137.66601562500003,54.283300781250006],[137.3392578125,54.10053710937498],[137.83476562500002,53.94672851562498],[137.25371093750007,53.546142578125],[137.95048828125007,53.60356445312499],[138.52792968750012,53.959863281249994],[138.56914062500002,53.818798828124955],[138.24970703125004,53.524023437500034],[138.45068359375003,53.53701171875002],[138.69941406250004,53.869726562500034],[138.65722656249997,54.29833984375003],[139.31972656250005,54.19296874999998],[139.707421875,54.27714843749999],[140.68759765625012,53.59643554687503],[141.3737304687501,53.29277343749999],[141.18125,53.01528320312505],[140.83964843750002,53.087890625],[141.25585937499997,52.84013671874996],[141.13242187500006,52.435693359374994],[141.48525390625,52.17851562500002],[141.36689453125004,51.92065429687506],[140.93261718750003,51.61992187499999],[140.5208984375,50.80019531250005],[140.62451171874997,50.08242187500002],[140.46269531250002,49.911474609375006],[140.51718750000012,49.59614257812498],[140.17060546875004,48.52368164062497],[138.58681640625005,47.057226562500006],[138.33691406250003,46.543408203124955],[137.68544921875,45.81835937500003],[136.14228515625004,44.489111328125034],[135.87460937500012,44.37353515625003],[135.1310546875001,43.52573242187506],[134.01044921875004,42.94746093750001],[133.15996093750007,42.69697265624998],[132.70898437500003,42.875830078125006],[132.30380859375006,42.88330078125],[132.30957031249997,43.31352539062499],[131.8666015625,43.09516601562501],[131.93896484374997,43.30195312500004],[131.15830078125012,42.62602539062499],[130.709375,42.656396484374966],[130.8341796875001,42.52294921875006],[130.68730468750007,42.30253906249999]]],[[[107.69550781250004,78.13090820312505],[107.48164062500004,78.057763671875],[106.41552734375003,78.13984375000001],[107.69550781250004,78.13090820312505]]],[[[102.88476562499997,79.25395507812505],[102.4123046875001,78.83544921874997],[103.80078124999997,79.14926757812503],[104.45205078125005,78.880029296875],[105.14599609375003,78.81884765625006],[105.31259765625012,78.49990234375],[104.74179687500012,78.33974609374997],[102.79667968750007,78.18789062500002],[101.20410156249997,78.19194335937505],[99.50029296875002,77.97607421875003],[101.590625,79.350439453125],[102.25126953125002,79.25605468749995],[102.40488281250006,79.43320312499998],[102.88476562499997,79.25395507812505]]],[[[76.24892578125005,79.65107421874995],[77.58896484375012,79.50190429687504],[76.64951171875012,79.493408203125],[76.24892578125005,79.65107421874995]]],[[[92.68349609375005,79.685205078125],[91.37626953125007,79.83549804687505],[91.22929687500007,80.03071289062504],[93.803125,79.904541015625],[92.68349609375005,79.685205078125]]],[[[51.409277343750006,79.94423828125],[50.09140625,79.98056640625003],[50.93632812500002,80.09423828125],[51.409277343750006,79.94423828125]]],[[[59.68886718750005,79.95581054687506],[58.91923828125002,79.98461914062506],[59.54453125000006,80.11884765624995],[59.68886718750005,79.95581054687506]]],[[[97.67451171875004,80.15825195312499],[97.65166015625002,79.76064453125],[98.59648437500002,80.05219726562495],[100.0612304687501,79.77709960937506],[99.68066406250003,79.32333984374998],[99.04179687500007,79.29301757812502],[99.92929687500012,78.96142578124997],[98.41113281250003,78.78779296875004],[95.53105468750007,79.09809570312501],[95.02041015625005,79.05268554687498],[94.21875,79.40234375],[93.07080078124997,79.49531250000001],[94.98730468749997,80.096826171875],[95.28134765625012,80.030517578125],[97.67451171875004,80.15825195312499]]],[[[50.05175781250003,80.07431640625003],[49.55605468750005,80.15893554687503],[49.883691406249994,80.230224609375],[50.05175781250003,80.07431640625003]]],[[[57.07871093750006,80.35092773437498],[56.986914062500006,80.07148437499998],[55.811621093750006,80.08715820312497],[56.02441406250003,80.34130859374997],[57.07871093750006,80.35092773437498]]],[[[53.521386718749994,80.18520507812497],[52.34355468750002,80.213232421875],[52.85390625,80.40239257812499],[53.85166015625006,80.26835937500005],[53.521386718749994,80.18520507812497]]],[[[57.95625,80.12324218749995],[57.33232421875002,80.15810546875005],[57.075,80.49394531249999],[59.25546875000006,80.34321289062501],[58.39794921874997,80.31875],[57.95625,80.12324218749995]]],[[[54.41533203125002,80.47280273437502],[53.811914062499994,80.47622070312502],[53.87724609375002,80.60527343750002],[54.41533203125002,80.47280273437502]]],[[[47.441992187500006,80.853662109375],[48.44570312500005,80.80600585937506],[48.68359375000003,80.63325195312504],[47.7052734375001,80.76518554687499],[46.141406250000074,80.44672851562495],[45.969042968750074,80.56948242187502],[44.9049804687501,80.61127929687501],[47.441992187500006,80.853662109375]]],[[[62.167773437500074,80.83476562500005],[62.07578125000006,80.616943359375],[61.05126953124997,80.418603515625],[60.27832031249997,80.49443359374999],[59.649804687499994,80.43125],[59.59228515625003,80.81650390624998],[62.167773437500074,80.83476562500005]]],[[[50.278125,80.92724609374997],[51.70361328125003,80.68764648437502],[48.81103515625003,80.35371093750001],[48.97753906250003,80.16259765624997],[47.73730468749997,80.08168945312502],[47.89296875000005,80.23925781249997],[46.991015625000074,80.182763671875],[46.644433593749994,80.30034179687507],[47.89580078125002,80.52905273437503],[49.087792968749994,80.515771484375],[49.24433593750004,80.82138671875],[50.278125,80.92724609374997]]],[[[80.02666015625007,80.84814453125003],[79.09853515625005,80.81206054687505],[79.21738281250012,80.96035156249997],[80.27958984375007,80.94980468750003],[80.02666015625007,80.84814453125003]]],[[[61.1408203125001,80.95034179687497],[60.0783203125001,80.99916992187497],[61.45742187499999,81.10395507812501],[61.1408203125001,80.95034179687497]]],[[[54.71894531250004,81.11596679687497],[56.47226562500006,80.99824218749995],[57.58037109375002,80.75546874999998],[55.88339843750006,80.62841796875003],[54.66816406250004,80.73867187500002],[54.04541015624997,80.87197265625],[54.71894531250004,81.11596679687497]]],[[[58.62236328125002,81.04165039062502],[58.930566406249994,80.83168945312497],[58.28564453124997,80.76489257812503],[57.21093749999997,81.01708984374997],[58.04951171875004,81.11845703125002],[58.62236328125002,81.04165039062502]]],[[[63.37382812500002,80.70009765624997],[62.59257812500002,80.85302734375006],[64.80205078125002,81.197265625],[65.43740234375005,80.93071289062507],[63.37382812500002,80.70009765624997]]],[[[91.56718750000007,81.14121093750003],[91.2228515625001,81.063818359375],[89.90117187500002,81.17070312500002],[91.56718750000007,81.14121093750003]]],[[[96.52656250000004,81.0755859375],[97.86992187500007,80.76328125000006],[97.02539062499997,80.53554687500002],[97.29843750000006,80.27275390625005],[93.6546875,80.009619140625],[91.52382812500005,80.35854492187502],[93.2625,80.79125976562497],[92.59257812500007,80.780859375],[92.7103515625,80.87216796875003],[95.1595703125,81.27099609375003],[95.80068359375005,81.28046874999998],[96.52656250000004,81.0755859375]]],[[[57.81025390625004,81.54604492187502],[58.563867187499994,81.41840820312504],[57.858691406250074,81.36806640625],[57.76972656250004,81.16972656249999],[55.71669921875005,81.1884765625],[55.46601562500004,81.31118164062502],[57.81025390625004,81.54604492187502]]],[[[63.65097656250006,81.60932617187501],[62.10644531249997,81.679345703125],[63.709570312500006,81.68730468750002],[63.65097656250006,81.60932617187501]]],[[[58.29541015625003,81.715185546875],[58.13457031250002,81.82797851562498],[59.261816406250006,81.85419921874998],[59.35644531250003,81.75898437499995],[58.29541015625003,81.715185546875]]]]},"properties":{"name":"Russia","childNum":73}},{"geometry":{"type":"Polygon","coordinates":[[[30.50996093750001,-1.067285156250009],[30.47705078125,-1.0830078125],[30.47021484375,-1.131152343750003],[30.508105468750017,-1.208203125000011],[30.631933593750006,-1.367480468750003],[30.710742187500017,-1.396777343750003],[30.76220703125,-1.458691406250011],[30.812597656250006,-1.563085937500006],[30.8765625,-2.143359375],[30.85498046875,-2.265429687500003],[30.828710937500006,-2.338476562500006],[30.7625,-2.371679687500006],[30.71484375,-2.363476562500011],[30.656640625000023,-2.373828125],[30.593359375,-2.396777343750003],[30.553613281250023,-2.400097656250011],[30.408496093750017,-2.31298828125],[30.117285156250006,-2.416601562500006],[29.93017578125,-2.339550781250011],[29.8681640625,-2.71640625],[29.698046875000017,-2.794726562500003],[29.390234375,-2.80859375],[29.10205078125,-2.595703125],[29.01435546875001,-2.72021484375],[28.893945312500023,-2.635058593750003],[28.876367187500023,-2.400292968750009],[29.13154296875001,-2.195117187500003],[29.196582031250017,-1.719921875000011],[29.576953125000017,-1.387890625000011],[29.82539062500001,-1.335546875],[29.930078125000023,-1.469921875000011],[30.360253906250023,-1.074609375],[30.41230468750001,-1.063085937500006],[30.46992187500001,-1.066015625],[30.50996093750001,-1.067285156250009]]]},"properties":{"name":"Rwanda","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[41.98769531250005,16.715625],[42.059960937499994,16.803515625000017],[42.15781250000006,16.570703125000023],[41.80156250000002,16.778759765624955],[41.86044921875006,17.002539062499977],[41.98769531250005,16.715625]]],[[[46.53144531250004,29.09624023437499],[47.433203125,28.989550781250017],[47.671289062499994,28.53315429687504],[48.442480468750006,28.542919921874983],[48.80898437499999,27.895898437499966],[48.797167968750074,27.72431640625001],[49.2375,27.49272460937499],[49.17509765625002,27.43764648437505],[49.40527343749997,27.18095703124996],[50.149804687499994,26.66264648437499],[50.00810546875002,26.678515625000017],[50.21386718750003,26.30849609375005],[50.15546875000004,26.100537109374955],[50.03164062499999,26.11098632812505],[50.55791015625002,25.086669921875],[50.66689453125005,24.96381835937501],[50.72558593749997,24.869384765625057],[50.80439453125004,24.789257812499983],[50.928320312500006,24.595117187500023],[50.96601562500004,24.573925781249983],[51.022753906250074,24.56523437499999],[51.09335937500006,24.564648437499955],[51.178027343750074,24.586718750000017],[51.26796875,24.607226562500017],[51.33847656250006,24.564355468749994],[51.41123046875006,24.570800781250057],[51.30986328125002,24.340380859375017],[51.56835937500003,24.286181640625074],[51.592578125000074,24.07885742187503],[52.55507812500005,22.932812499999955],[55.104296875000074,22.621484375000023],[55.185839843750074,22.7041015625],[55.64101562499999,22.001855468749994],[54.97734375000002,19.995947265625006],[51.977636718750006,18.996142578125074],[49.04199218750003,18.58178710937503],[48.17216796875002,18.156933593749983],[47.57958984374997,17.448339843750034],[47.44179687499999,17.111865234375045],[47.14355468749997,16.946679687499966],[46.97568359375006,16.953466796875034],[46.72763671875006,17.26557617187501],[45.5353515625001,17.30205078124999],[45.14804687500006,17.427441406249955],[43.91699218749997,17.32470703124997],[43.41796875000003,17.516259765625023],[43.19091796875003,17.359375],[43.16503906249997,16.689404296874955],[42.79931640624997,16.37177734375001],[42.29394531249997,17.434960937499966],[41.75,17.88574218749997],[41.22949218750003,18.678417968749983],[40.75917968750005,19.755468750000034],[40.080664062500006,20.265917968750017],[39.728320312500074,20.390332031249955],[39.27607421875004,20.973974609375034],[39.093554687500074,21.31035156249999],[39.14707031250006,21.518994140624955],[38.98789062500006,21.88173828125005],[39.06201171874997,22.592187500000023],[38.46416015625002,23.71186523437504],[37.91972656250002,24.185400390625063],[37.54306640625006,24.291650390625023],[37.18085937500004,24.82001953125001],[37.26630859375004,24.960058593750034],[37.14882812499999,25.291113281249977],[35.18046875000002,28.03486328125004],[34.722070312499994,28.130664062500017],[34.625,28.064501953125017],[34.95078125,29.353515625],[36.068457031250006,29.200537109375006],[36.28281250000006,29.355371093750023],[36.47607421874997,29.49511718749997],[36.59179687500003,29.666113281250006],[36.703906250000074,29.831640624999977],[36.75527343750005,29.86601562499996],[37.46923828125003,29.995068359374955],[37.49072265625003,30.01171874999997],[37.55361328125005,30.14458007812496],[37.63359375000002,30.313281250000045],[37.64990234374997,30.330957031249994],[37.669726562500074,30.34814453125003],[37.862890625,30.44262695312503],[37.98007812500006,30.5],[37.47900390624997,31.007763671874955],[37.10527343750002,31.35517578125004],[36.95859375000006,31.491503906250017],[37.215625,31.55610351562501],[37.49335937500004,31.625878906250023],[38.111425781250006,31.78115234375005],[38.37548828124997,31.84746093749996],[38.962304687499994,31.99492187499999],[38.99707031249997,32.00747070312505],[39.145410156249994,32.12451171875],[39.36865234374997,32.09174804687498],[39.70410156250003,32.04252929687499],[40.02783203124997,31.995019531249994],[40.3693359375001,31.93896484375003],[40.47890625000005,31.89335937499999],[42.07441406250004,31.08037109374999],[43.77373046875002,29.84921875],[44.71650390625004,29.19360351562503],[46.35644531250003,29.06367187500001],[46.53144531250004,29.09624023437499]]]]},"properties":{"name":"Saudi Arabia","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[36.87138671875002,21.996728515624994],[36.92695312500001,21.58652343749999],[37.25859375000002,21.108544921874994],[37.25722656250002,21.03940429687499],[37.15058593750001,21.103759765625],[37.14111328125,20.98178710937499],[37.19316406250002,20.12070312499999],[37.471289062500006,18.820117187500003],[38.609472656250006,18.005078125],[38.422460937500006,17.823925781249997],[38.39716796875001,17.778369140625003],[38.38554687500002,17.751269531250003],[38.37373046875001,17.717333984375003],[38.34736328125001,17.68359375],[38.28984375000002,17.637011718750003],[38.26728515625001,17.61669921875],[38.253515625,17.584765625],[37.78242187500001,17.4580078125],[37.547460937500006,17.324121093749994],[37.51015625000002,17.288134765625003],[37.45292968750002,17.108691406250003],[37.41103515625002,17.06171875],[37.24882812500002,17.056884765625],[37.16953125,17.04140625],[37.0615234375,17.061279296875],[37.00898437500001,17.058886718750003],[36.995214843750006,17.020556640625003],[36.97578125000001,16.86655273437499],[36.97871093750001,16.800585937500003],[36.887792968750006,16.624658203124994],[36.91376953125001,16.296191406250003],[36.566015625,15.362109375],[36.4267578125,15.132080078125],[36.44814453125002,14.940087890624994],[36.470800781250006,14.736474609374994],[36.52431640625002,14.2568359375],[36.12519531250001,12.75703125],[35.67021484375002,12.623730468749997],[35.1123046875,11.816552734374994],[34.93144531250002,10.864794921874989],[34.77128906250002,10.746191406249991],[34.571875,10.880175781249989],[34.34394531250001,10.658642578124997],[34.31123046875001,10.190869140624997],[34.078125,9.461523437499991],[33.87148437500002,9.506152343749989],[33.96328125000002,9.861767578124997],[33.90703125000002,10.181445312499989],[33.13007812500001,10.745947265624991],[33.073339843750006,11.606103515624994],[33.199316406250006,12.21728515625],[32.721875,12.223095703124997],[32.73671875000002,12.009667968749994],[32.072265625,12.006738281249994],[32.338476562500006,11.710107421874994],[32.42080078125002,11.089111328125],[31.224902343750017,9.799267578124997],[30.75537109375,9.731201171875],[30.003027343750006,10.277392578124989],[29.60546875,10.065087890624994],[29.47314453125,9.768603515624989],[28.979589843750006,9.594189453124997],[28.844531250000017,9.326074218749994],[28.048925781250006,9.32861328125],[27.880859375,9.601611328124989],[27.07421875,9.613818359374989],[26.65869140625,9.484130859375],[25.91914062500001,10.169335937499994],[25.858203125000017,10.406494140625],[25.211718750000017,10.329931640624991],[25.066992187500006,10.293798828124991],[24.785253906250006,9.774658203125],[24.53193359375001,8.886914062499997],[24.147363281250023,8.665625],[23.53730468750001,8.815820312499994],[23.46826171875,9.11474609375],[23.62265625,9.340625],[23.646289062500017,9.822900390624994],[22.86005859375001,10.919677734375],[22.922656250000017,11.344873046874994],[22.591113281250017,11.579882812499989],[22.580957031250023,11.990136718749994],[22.472460937500017,12.067773437499994],[22.352343750000017,12.660449218749989],[21.928125,12.678125],[21.825292968750006,12.79052734375],[22.228125,13.32958984375],[22.1064453125,13.7998046875],[22.53857421875,14.161865234375],[22.38154296875001,14.550488281249997],[22.6708984375,14.722460937500003],[22.93232421875001,15.162109375],[22.933886718750017,15.533105468749994],[23.10517578125001,15.702539062499994],[23.970800781250006,15.721533203124991],[23.980273437500017,19.496630859375003],[23.980273437500017,19.99594726562499],[24.9794921875,20.002587890624994],[24.980273437500017,21.995849609375],[28.036425781250017,21.995361328125],[31.092675781250023,21.994873046875],[31.260644531250023,22.00229492187499],[31.400292968750023,22.202441406250003],[31.486132812500017,22.14780273437499],[31.434472656250023,21.995849609375],[36.87138671875002,21.996728515624994]]]},"properties":{"name":"Sudan","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[34.078125,9.461523437499991],[34.07275390625,8.545263671874991],[33.95332031250001,8.443505859374994],[33.28105468750002,8.437255859375],[32.99892578125002,7.899511718749991],[33.902441406250006,7.509521484375],[34.06425781250002,7.225732421874994],[34.71064453125001,6.660302734374994],[34.98359375000001,5.858300781249994],[35.26835937500002,5.492285156249991],[35.08447265625,5.311865234374991],[34.87832031250002,5.109570312499997],[34.63984375000001,4.87548828125],[34.38017578125002,4.620654296874989],[34.176855468750006,4.419091796874994],[33.97607421875,4.22021484375],[33.74160156250002,3.985253906249994],[33.568457031250006,3.81171875],[33.489355468750006,3.755078125],[32.99726562500001,3.880175781249989],[32.33574218750002,3.706201171874994],[32.13593750000001,3.519726562499997],[31.79804687500001,3.802636718749994],[31.547167968750017,3.677587890624991],[31.15234375,3.785595703124997],[30.83857421875001,3.49072265625],[30.757226562500023,3.62421875],[30.586718750000017,3.62421875],[30.50830078125,3.835693359375],[30.194921875,3.98193359375],[29.676855468750006,4.5869140625],[29.469628906250023,4.61181640625],[29.224902343750017,4.391894531249989],[28.72705078125,4.504980468749991],[28.427539062500017,4.324169921874997],[28.19208984375001,4.350244140624994],[27.7880859375,4.644677734374994],[27.4033203125,5.109179687499989],[27.143945312500023,5.722949218749989],[26.514257812500006,6.069238281249994],[26.30859375,6.455322265625],[26.36181640625,6.635302734374989],[25.27890625,7.427490234375],[25.18134765625001,7.557226562499991],[25.20039062500001,7.807910156249989],[24.853320312500017,8.137548828124991],[24.291406250000023,8.29140625],[24.147363281250023,8.665625],[24.53193359375001,8.886914062499997],[24.785253906250006,9.774658203125],[25.066992187500006,10.293798828124991],[25.211718750000017,10.329931640624991],[25.858203125000017,10.406494140625],[25.91914062500001,10.169335937499994],[26.65869140625,9.484130859375],[27.07421875,9.613818359374989],[27.880859375,9.601611328124989],[28.048925781250006,9.32861328125],[28.844531250000017,9.326074218749994],[28.979589843750006,9.594189453124997],[29.47314453125,9.768603515624989],[29.60546875,10.065087890624994],[30.003027343750006,10.277392578124989],[30.75537109375,9.731201171875],[31.224902343750017,9.799267578124997],[32.42080078125002,11.089111328125],[32.338476562500006,11.710107421874994],[32.072265625,12.006738281249994],[32.73671875000002,12.009667968749994],[32.721875,12.223095703124997],[33.199316406250006,12.21728515625],[33.073339843750006,11.606103515624994],[33.13007812500001,10.745947265624991],[33.90703125000002,10.181445312499989],[33.96328125000002,9.861767578124997],[33.87148437500002,9.506152343749989],[34.078125,9.461523437499991]]]},"properties":{"name":"S. Sudan","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-12.280615234374977,14.809033203124997],[-12.228417968749994,14.45859375],[-12.019189453124994,14.206494140624997],[-11.960888671874983,13.875292968750003],[-12.05419921875,13.633056640625],[-11.831689453124994,13.315820312499994],[-11.634960937499983,13.369873046875],[-11.390380859375,12.941992187499991],[-11.389404296875,12.404394531249991],[-12.399072265624994,12.340087890625],[-12.930712890624989,12.532275390624989],[-13.061279296875,12.489990234375],[-13.082910156249994,12.633544921875],[-13.729248046875,12.673925781249991],[-14.06484375,12.67529296875],[-14.349218749999977,12.676416015624994],[-15.196093749999989,12.679931640625],[-15.3779296875,12.588964843749991],[-15.574804687499977,12.490380859374994],[-15.839550781249983,12.43789062499999],[-16.144189453124994,12.45742187499999],[-16.24150390624999,12.443310546874997],[-16.41630859374999,12.36767578125],[-16.521337890624977,12.3486328125],[-16.656933593749983,12.364355468749991],[-16.711816406249994,12.354833984374991],[-16.76030273437499,12.52578125],[-16.44287109375,12.609472656249991],[-16.59765625,12.715283203124997],[-16.743896484375,12.58544921875],[-16.763330078124994,13.064160156249997],[-16.648779296874977,13.154150390624991],[-15.834277343749989,13.156445312499997],[-15.814404296874983,13.325146484374997],[-15.286230468749977,13.39599609375],[-15.151123046875,13.556494140624991],[-14.246777343749983,13.23583984375],[-13.826708984374989,13.4078125],[-13.977392578124977,13.54345703125],[-14.405468749999983,13.503710937500003],[-15.108349609374983,13.81210937499999],[-15.426855468749977,13.727001953124997],[-15.509667968749994,13.586230468750003],[-16.56230468749999,13.587304687499994],[-16.766943359374977,13.904931640624994],[-16.618115234374983,14.04052734375],[-16.791748046875,14.004150390625],[-17.168066406249977,14.640625],[-17.345800781249977,14.729296875],[-17.445019531249983,14.651611328125],[-17.53564453125,14.755126953125],[-17.147167968749983,14.922021484374994],[-16.843408203124994,15.293994140625003],[-16.570751953124983,15.734423828125003],[-16.535253906249977,15.83837890625],[-16.502050781249977,15.917333984374991],[-16.480078124999977,16.097216796875003],[-16.441015624999977,16.204541015624997],[-16.239013671875,16.531298828125003],[-15.768212890624994,16.485107421875],[-14.990625,16.676904296874994],[-14.300097656249989,16.580273437499997],[-13.868457031249989,16.148144531249997],[-13.756640624999989,16.172509765624994],[-13.40966796875,16.05917968749999],[-13.105273437499989,15.57177734375],[-12.735253906249994,15.13125],[-12.40869140625,14.889013671874991],[-12.280615234374977,14.809033203124997]]]},"properties":{"name":"Senegal","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[103.9697265625,1.331445312499994],[103.65019531249999,1.325537109374991],[103.81796875000003,1.447070312499989],[103.9697265625,1.331445312499994]]]},"properties":{"name":"Singapore","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-37.10332031249996,-54.065625],[-36.70380859375001,-54.10810546874999],[-36.64741210937498,-54.26230468749996],[-36.32646484374996,-54.251171875],[-35.79858398437497,-54.76347656250002],[-36.08549804687499,-54.86679687500001],[-36.885986328125,-54.33945312499996],[-37.63090820312496,-54.16748046875001],[-37.61884765625001,-54.04208984375004],[-38.017431640625034,-54.008007812500026],[-37.10332031249996,-54.065625]]]},"properties":{"name":"S. Geo. and S. Sandw. Is.","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-5.692138671874972,-15.997753906249997],[-5.782519531250017,-16.00400390625002],[-5.707861328124977,-15.90615234374998],[-5.692138671874972,-15.997753906249997]]]},"properties":{"name":"Saint Helena","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[160.57626953125006,-11.797851562500028],[160.44306640625004,-11.814941406249957],[159.98632812499997,-11.494726562500006],[160.57626953125006,-11.797851562500028]]],[[[166.13320312500005,-10.757812499999972],[165.90400390625004,-10.851464843749966],[165.79101562500003,-10.784765624999963],[166.02382812500005,-10.6611328125],[166.13320312500005,-10.757812499999972]]],[[[161.71533203124997,-10.387304687499991],[162.10537109375005,-10.45380859375004],[162.37333984375002,-10.823242187499986],[161.78681640625004,-10.716894531249991],[161.53789062500007,-10.566406249999972],[161.4870117187501,-10.361425781249963],[161.29394531250003,-10.326464843750031],[161.30478515625012,-10.204394531250031],[161.71533203124997,-10.387304687499991]]],[[[161.54785156249997,-9.625683593749997],[161.55380859375012,-9.769726562500026],[161.40976562500006,-9.681640625000028],[161.36416015625,-9.353417968750037],[161.54785156249997,-9.625683593749997]]],[[[159.75039062500005,-9.272656250000011],[159.97060546875,-9.433300781249969],[160.35458984375006,-9.421582031249983],[160.81894531250006,-9.862792968749986],[160.64921875000002,-9.92861328124998],[159.80273437499997,-9.763476562500003],[159.61230468749997,-9.470703124999943],[159.62558593750012,-9.311230468749969],[159.75039062500005,-9.272656250000011]]],[[[160.1681640625001,-8.995507812500037],[160.40751953125007,-9.140332031249969],[160.10537109375,-9.080761718749997],[160.1681640625001,-8.995507812500037]]],[[[159.18857421875006,-9.123535156250014],[159.03632812500004,-9.075],[159.12978515625,-8.99306640624998],[159.22841796875005,-9.029980468749955],[159.18857421875006,-9.123535156250014]]],[[[158.10791015625003,-8.684179687500034],[157.93759765625006,-8.73642578125002],[157.90927734375006,-8.565625],[158.10546874999997,-8.536816406250026],[158.10791015625003,-8.684179687500034]]],[[[157.38896484375002,-8.713476562499963],[157.2123046875,-8.565039062500006],[157.37949218750012,-8.420898437499943],[157.38896484375002,-8.713476562499963]]],[[[160.7494140625,-8.313964843750014],[160.99765625000006,-8.612011718749983],[160.94433593750003,-8.799023437499983],[161.15869140624997,-8.961816406250009],[161.36738281250004,-9.61123046874998],[160.77207031250012,-8.963867187499986],[160.7140625000001,-8.539257812499997],[160.59042968750006,-8.372753906249997],[160.7494140625,-8.313964843750014]]],[[[157.76347656250002,-8.242187499999957],[157.89843749999997,-8.506347656249943],[157.81933593750003,-8.612011718749983],[157.58789062500003,-8.445410156249963],[157.5580078125,-8.269921875],[157.30244140625004,-8.33330078124996],[157.21757812500002,-8.262792968749977],[157.490625,-7.965722656250037],[157.76347656250002,-8.242187499999957]]],[[[157.171875,-8.108105468749997],[156.95830078125002,-8.014355468749997],[157.02412109375004,-7.867871093749997],[157.18613281250006,-7.941210937500017],[157.171875,-8.108105468749997]]],[[[156.687890625,-7.92304687500004],[156.5109375000001,-7.707812499999974],[156.5609375,-7.574023437499989],[156.80908203124997,-7.722851562500026],[156.687890625,-7.92304687500004]]],[[[159.8791015625001,-8.534277343749949],[158.9440429687501,-8.04072265625004],[158.457421875,-7.544726562499974],[158.734375,-7.604296875000031],[159.43144531250002,-8.029003906249955],[159.84306640625002,-8.326953124999989],[159.8791015625001,-8.534277343749949]]],[[[155.83984374999997,-7.097167968750014],[155.67753906250002,-7.08896484375002],[155.73896484375004,-6.972949218750017],[155.83984374999997,-7.097167968750014]]],[[[157.48671875000005,-7.330371093750003],[157.44130859375,-7.425683593749966],[157.10156249999997,-7.323632812499966],[156.4525390625,-6.638281249999963],[157.03027343750003,-6.891992187499952],[157.19335937499997,-7.160351562499997],[157.48671875000005,-7.330371093750003]]]]},"properties":{"name":"Solomon Is.","childNum":16}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-12.526074218749926,7.436328125000017],[-12.951611328124926,7.570849609374989],[-12.615234374999972,7.63720703125],[-12.5125,7.582421875000037],[-12.526074218749926,7.436328125000017]]],[[[-10.758593749999989,9.385351562499991],[-10.682714843750006,9.289355468749974],[-10.687646484374937,9.261132812499994],[-10.749951171874926,9.12236328124996],[-10.747021484374955,9.095263671875045],[-10.726855468749932,9.081689453125023],[-10.615966796875,9.059179687499977],[-10.500537109375017,8.687548828125017],[-10.677343749999977,8.400585937499997],[-10.712109374999955,8.335253906250017],[-10.686962890624983,8.321679687500009],[-10.652636718749989,8.330273437499983],[-10.604003906249943,8.319482421874994],[-10.55771484374992,8.315673828125028],[-10.496435546874977,8.362109374999974],[-10.394433593749966,8.480957031250028],[-10.360058593749983,8.49550781249998],[-10.283203124999972,8.48515625],[-10.285742187499949,8.454101562499986],[-10.314648437499983,8.310839843750017],[-10.359814453124926,8.187939453125026],[-10.570849609374932,8.071142578125034],[-10.6474609375,7.759375],[-10.878076171874994,7.538232421874994],[-11.267675781249977,7.232617187499997],[-11.507519531249983,6.906542968750003],[-12.48564453124996,7.386279296875045],[-12.480273437499932,7.75327148437502],[-12.697607421874977,7.715869140625045],[-12.850878906249932,7.818701171875034],[-12.956933593749966,8.145312500000045],[-13.148974609374989,8.214599609375043],[-13.272753906249989,8.429736328124989],[-13.085009765624932,8.42475585937504],[-12.894091796874932,8.62978515624998],[-13.181835937499955,8.576904296875043],[-13.206933593749994,8.843115234375006],[-13.059472656249966,8.881152343750031],[-13.292675781249955,9.04921875],[-13.077294921874966,9.069628906249974],[-12.958789062499989,9.263330078124994],[-12.755859374999943,9.373583984374989],[-12.557861328125,9.704980468749994],[-12.427978515625028,9.898144531250011],[-12.142333984375,9.87539062499999],[-11.911083984374955,9.993017578124977],[-11.273632812499955,9.996533203124983],[-11.205664062499949,9.977734374999969],[-11.180859374999955,9.925341796875045],[-11.047460937499977,9.786328125000054],[-10.758593749999989,9.385351562499991]]]]},"properties":{"name":"Sierra Leone","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[-89.36259765624999,14.416015625],[-89.1205078125,14.370214843749991],[-88.51254882812499,13.978955078124997],[-88.504345703125,13.964208984374991],[-88.49765625,13.904541015625],[-88.482666015625,13.854248046875],[-88.44912109375,13.850976562499994],[-88.40849609374999,13.87539062499999],[-88.27622070312499,13.942675781250003],[-88.151025390625,13.987353515625003],[-87.99101562499999,13.879638671875],[-87.8919921875,13.894970703124997],[-87.80224609375,13.889990234374991],[-87.7314453125,13.841064453125],[-87.71533203125,13.812695312499997],[-87.781884765625,13.521386718749994],[-87.930859375,13.1806640625],[-88.68564453124999,13.281494140625],[-88.51201171874999,13.183935546874991],[-89.80419921875,13.560107421875003],[-90.09521484375,13.736523437499997],[-90.04814453124999,13.904052734375],[-89.54716796874999,14.241259765625003],[-89.5736328125,14.390087890624997],[-89.36259765624999,14.416015625]]]},"properties":{"name":"El Salvador","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-56.26708984374997,46.838476562500034],[-56.38476562499994,46.81943359375006],[-56.36464843749994,47.09897460937498],[-56.26708984374997,46.838476562500034]]]},"properties":{"name":"St. Pierre and Miquelon","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[6.659960937499989,0.120654296874989],[6.51972656250004,0.066308593750023],[6.468164062499994,0.22734375],[6.68691406250008,0.404394531249977],[6.75,0.24345703124996],[6.659960937499989,0.120654296874989]]],[[[7.423828125,1.567724609375006],[7.330664062500034,1.603369140624991],[7.414453125000051,1.699121093750037],[7.423828125,1.567724609375006]]]]},"properties":{"name":"São Tomé and Principe","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[-54.03422851562499,3.62939453125],[-54.00957031249999,3.448535156249989],[-54.06318359375,3.353320312499989],[-54.18803710937499,3.178759765624989],[-54.203125,3.13818359375],[-54.17070312499999,2.993603515624997],[-54.18808593749999,2.874853515624991],[-54.1955078125,2.81787109375],[-54.256738281249994,2.713720703124991],[-54.402001953124994,2.461523437499991],[-54.53593749999999,2.343310546874989],[-54.56840820312499,2.342578124999989],[-54.604736328125,2.335791015624991],[-54.61625976562499,2.326757812499991],[-54.661865234375,2.327539062499994],[-54.697412109374994,2.359814453124997],[-54.72221679687499,2.441650390625],[-54.87607421874999,2.450390625],[-54.92656249999999,2.497363281249989],[-54.968408203124994,2.54833984375],[-54.978662109374994,2.59765625],[-55.005810546875,2.59296875],[-55.0703125,2.54833984375],[-55.11411132812499,2.539208984374994],[-55.1876953125,2.547509765624994],[-55.286035156249994,2.499658203124994],[-55.343994140625,2.48876953125],[-55.38535156249999,2.440625],[-55.73056640624999,2.406152343749994],[-55.957470703125,2.520458984374997],[-55.99350585937499,2.497509765624997],[-56.02036132812499,2.392773437499997],[-56.0451171875,2.364404296874994],[-56.087792968749994,2.34130859375],[-56.12939453125,2.299511718749997],[-56.1376953125,2.259033203125],[-56.073632812499994,2.236767578124997],[-56.02006835937499,2.158154296874997],[-55.96196289062499,2.095117187499994],[-55.91533203124999,2.03955078125],[-55.921630859375,1.976660156249991],[-55.929638671875,1.8875],[-56.01992187499999,1.842236328124997],[-56.4828125,1.942138671875],[-56.704345703125,2.036474609374991],[-57.19736328124999,2.853271484375],[-57.303662109375,3.377099609374994],[-57.646728515625,3.39453125],[-58.05429687499999,4.101660156249991],[-57.84599609374999,4.668164062499997],[-57.91704101562499,4.820410156249991],[-57.711083984374994,4.991064453124991],[-57.331005859375,5.020166015624994],[-57.20981445312499,5.195410156249991],[-57.3185546875,5.335351562499994],[-57.194775390625,5.5484375],[-56.96982421874999,5.992871093749997],[-56.235595703125,5.885351562499991],[-55.897607421874994,5.699316406249991],[-55.909912109375,5.892626953124989],[-55.648339843749994,5.985888671874989],[-54.83369140625,5.988330078124989],[-54.05419921875,5.807910156249989],[-54.08046875,5.502246093749989],[-54.4796875,4.836523437499991],[-54.350732421874994,4.054101562499994],[-54.03422851562499,3.62939453125]]]},"properties":{"name":"Suriname","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[22.538671875,49.072705078125],[22.52412109375001,49.031396484374994],[22.389453125000017,48.873486328125],[22.295214843750017,48.685839843749996],[22.142871093750017,48.568505859374994],[22.1318359375,48.405322265624996],[21.766992187500023,48.3380859375],[21.45136718750001,48.55224609375],[20.490039062500017,48.526904296874996],[20.333789062500017,48.295556640624994],[19.95039062500001,48.146630859374994],[19.625390625000023,48.223095703125],[18.791894531250023,48.000292968749996],[18.72421875,47.787158203124996],[17.76191406250001,47.770166015624994],[17.147363281250023,48.00595703125],[16.86542968750001,48.3869140625],[16.953125,48.598828125],[17.135644531250023,48.841064453125],[17.75849609375001,48.888134765625],[18.0859375,49.06513671875],[18.160937500000017,49.257373046874996],[18.83222656250001,49.510791015624996],[19.1494140625,49.4],[19.44160156250001,49.597705078124996],[19.77392578125,49.37216796875],[19.756640625000017,49.204394531249996],[20.0576171875,49.181298828124994],[20.36298828125001,49.38525390625],[20.868457031250017,49.314697265625],[21.079394531250017,49.418261718749996],[21.6396484375,49.411962890625],[22.020117187500006,49.209521484374996],[22.473046875000023,49.081298828125],[22.538671875,49.072705078125]]]},"properties":{"name":"Slovakia","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[16.516210937500006,46.499902343749994],[16.427636718750023,46.5244140625],[16.321191406250023,46.534619140625],[16.1064453125,46.382226562499994],[15.608984375,46.171923828124996],[15.592578125000017,46.139990234375],[15.596875,46.109228515625],[15.675585937500017,45.983691406249996],[15.652148437500017,45.862158203125],[15.277050781250011,45.7326171875],[15.353710937500011,45.659912109375],[15.283593750000023,45.5796875],[15.291210937500011,45.541552734374996],[15.32666015625,45.502294921875],[15.339453125,45.467041015625],[15.242089843750023,45.44140625],[15.110449218750006,45.45078125],[14.95458984375,45.499902343749994],[14.793066406250006,45.47822265625],[14.649511718750006,45.571484375],[14.591796875,45.651269531249994],[14.56884765625,45.6572265625],[14.548448660714302,45.628388671875],[14.507586495535731,45.59039341517857],[14.42734375,45.505761718749994],[14.369921875000017,45.4814453125],[13.878710937500017,45.428369140624994],[13.577929687500017,45.516894531249996],[13.8447265625,45.59287109375],[13.831152343750006,45.680419921875],[13.663476562500023,45.7919921875],[13.6005859375,45.979785156249996],[13.509179687500023,45.973779296874994],[13.487695312500023,45.987109375],[13.480273437500017,46.009228515625],[13.486425781250006,46.03955078125],[13.548046875000011,46.089111328125],[13.616601562500023,46.133105468749996],[13.634960937500011,46.157763671874996],[13.632519531250011,46.177050781249996],[13.420996093750006,46.212304687499994],[13.399511718750006,46.317529296874994],[13.563281250000017,46.415087890624996],[13.637109375000023,46.448535156249996],[13.6796875,46.462890625],[13.7,46.520263671875],[14.5498046875,46.399707031249996],[14.893261718750011,46.605908203125],[15.957617187500006,46.677636718749994],[16.093066406250017,46.86328125],[16.283593750000023,46.857275390625],[16.516210937500006,46.499902343749994]]]},"properties":{"name":"Slovenia","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[16.52851562500001,56.29052734375],[16.431640625,56.24375],[16.41230468750004,56.568994140624994],[17.02539062499997,57.345068359375006],[16.52851562500001,56.29052734375]]],[[[19.076464843750045,57.8359375],[18.813867187500023,57.70620117187502],[18.907910156250068,57.39833984375002],[18.146386718749994,56.920507812500006],[18.285351562500068,57.08320312500001],[18.136523437500045,57.55664062500003],[18.53740234374999,57.83056640625006],[18.90058593750001,57.91547851562504],[19.076464843750045,57.8359375]]],[[[19.156347656250063,57.92260742187497],[19.086523437500034,57.86499023437506],[19.134863281250034,57.98134765625002],[19.331445312500023,57.962890625],[19.156347656250063,57.92260742187497]]],[[[24.15546875000004,65.80527343750006],[23.102343750000074,65.73535156250003],[22.400976562500006,65.86210937499999],[22.254003906250006,65.59755859375002],[21.565527343750063,65.40810546874997],[21.609179687500074,65.261376953125],[21.410351562500068,65.31743164062505],[21.57392578125001,65.12578124999999],[21.138183593750057,64.80869140625006],[21.519628906250034,64.46308593749998],[20.76269531250003,63.86782226562505],[18.60644531250003,63.17827148437499],[18.31289062500008,62.996386718750045],[18.46308593750004,62.895849609375006],[18.170019531250034,62.789355468750074],[17.906640625000023,62.88676757812502],[18.037304687500068,62.60053710937498],[17.834472656250057,62.50273437500002],[17.410253906250063,62.508398437500034],[17.633691406249994,62.23300781250006],[17.374511718750057,61.866308593750034],[17.465429687500006,61.68447265625005],[17.196386718750006,61.72456054687504],[17.13076171875005,61.57573242187499],[17.25097656250003,60.70078125],[17.6611328125,60.53515625000003],[17.955761718750068,60.589794921874955],[18.85273437500001,60.02587890625],[18.970507812500045,59.757226562499994],[17.964257812500023,59.359375],[18.56025390625004,59.39448242187498],[18.285351562500068,59.109375],[16.978125,58.65415039062506],[16.214257812500023,58.636669921874955],[16.92382812499997,58.49257812499999],[16.651953125,58.43432617187503],[16.65224609375008,57.50068359374998],[16.348730468750063,56.70927734374996],[15.826660156250028,56.12495117187501],[14.782031250000017,56.16191406250002],[14.754785156250051,56.03315429687498],[14.401953125000034,55.97675781250004],[14.21503906250004,55.83261718749998],[14.341699218749994,55.52773437500002],[14.17373046875008,55.396630859374966],[12.885839843750063,55.41137695312506],[12.973925781250074,55.748144531250006],[12.471191406250057,56.29052734375],[12.801660156250051,56.263916015625],[12.65644531250004,56.44057617187502],[12.857421875000028,56.45239257812503],[12.883691406250051,56.61772460937496],[12.421484375000034,56.906396484374966],[11.449316406250063,58.118359374999955],[11.43154296875008,58.339990234374994],[11.24824218750004,58.369140625],[11.14716796875004,58.98862304687498],[11.19580078125,59.07827148437505],[11.388281250000063,59.036523437499966],[11.470703125000057,58.909521484375034],[11.64277343750004,58.92607421875002],[11.798144531250074,59.28989257812498],[11.680761718750034,59.59228515625003],[12.486132812500074,60.10678710937506],[12.588671874999989,60.450732421875045],[12.29414062500004,61.00268554687506],[12.706054687500028,61.059863281250074],[12.88076171875008,61.35229492187506],[12.155371093750006,61.720751953125045],[12.303515625000074,62.28559570312501],[11.999902343750051,63.29169921875001],[12.175195312500051,63.595947265625],[12.792773437500017,64],[13.203515625000023,64.07509765625],[13.960546875000063,64.01401367187498],[14.141210937500006,64.17353515624998],[14.077636718750028,64.464013671875],[13.650292968750023,64.58154296874997],[14.47968750000004,65.30146484374998],[14.543261718750045,66.12934570312498],[15.483789062500051,66.30595703124999],[15.422949218750006,66.48984374999998],[16.40351562500004,67.05498046875002],[16.12744140625,67.42583007812507],[16.783593750000023,67.89501953125],[17.324609375000023,68.10380859374999],[17.91669921875001,67.96489257812502],[18.303027343750045,68.55541992187497],[19.969824218750063,68.35639648437501],[20.348046875000023,68.84873046875003],[20.116699218750057,69.02089843750005],[20.622167968750006,69.036865234375],[21.99746093750005,68.52060546874998],[22.854101562500034,68.36733398437502],[23.63886718750004,67.95439453125002],[23.454882812500045,67.46025390625007],[23.733593750000068,67.42290039062499],[23.64150390625005,67.12939453124997],[23.988574218750045,66.81054687500003],[23.700292968750034,66.25263671874998],[24.15546875000004,65.80527343750006]]]]},"properties":{"name":"Sweden","childNum":4}},{"geometry":{"type":"Polygon","coordinates":[[[31.9482421875,-25.957617187500006],[32.060546875,-26.018359375],[32.04140625000002,-26.28125],[32.10595703125,-26.52001953125],[32.112890625,-26.839453125],[32.02480468750002,-26.811132812500006],[31.994726562500006,-26.817480468750006],[31.967187500000023,-26.96064453125001],[31.946093750000017,-27.173632812500003],[31.958398437500023,-27.30585937500001],[31.742578125000023,-27.30996093750001],[31.469531250000017,-27.295507812500006],[31.274023437500006,-27.238378906250006],[31.063378906250023,-27.1123046875],[30.938085937500006,-26.915820312500003],[30.88330078125,-26.79238281250001],[30.806738281250006,-26.785253906250006],[30.794335937500023,-26.764257812500006],[30.803320312500006,-26.41347656250001],[31.08808593750001,-25.98066406250001],[31.207324218750017,-25.843359375],[31.33515625000001,-25.75556640625001],[31.382617187500017,-25.74296875],[31.415136718750006,-25.74658203125],[31.921679687500017,-25.96875],[31.9482421875,-25.957617187500006]]]},"properties":{"name":"Swaziland","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[55.54033203125002,-4.693066406250011],[55.54296875,-4.785546875],[55.383398437500006,-4.609277343750009],[55.45576171875001,-4.558789062500011],[55.54033203125002,-4.693066406250011]]]},"properties":{"name":"Seychelles","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[42.358984375,37.10859375],[41.78857421875,36.59716796875],[41.41679687500002,36.5146484375],[41.295996093750006,36.383349609374996],[41.354101562500006,35.640429687499996],[41.19472656250002,34.768994140625],[40.98701171875001,34.429052734375],[38.773535156250006,33.372216796874994],[36.818359375,32.317285156249994],[36.3720703125,32.3869140625],[35.78730468750001,32.734912109374996],[35.91347656250002,32.94960937499999],[35.869140625,33.43173828125],[36.03447265625002,33.58505859375],[35.98613281250002,33.75263671875],[36.36503906250002,33.83935546875],[36.27783203125,33.92529296875],[36.5849609375,34.221240234374996],[36.50439453125,34.432373046875],[36.32988281250002,34.499609375],[36.383886718750006,34.65791015625],[35.97626953125001,34.629199218749996],[35.902441406250006,35.420703125],[35.76445312500002,35.571582031249996],[35.83964843750002,35.84921875],[35.892675781250006,35.916552734374996],[35.96757812500002,35.910058593749994],[36.12734375000002,35.831445312499994],[36.15361328125002,35.833886718749994],[36.34755859375002,36.003515625],[36.37539062500002,36.171240234375],[36.63671875,36.233984375],[36.64140625000002,36.263525390625],[36.5375,36.45742187499999],[36.54667968750002,36.50634765625],[36.596875,36.7013671875],[36.62841796875,36.777685546875],[36.65859375000002,36.802539062499996],[36.77656250000001,36.79267578125],[36.94179687500002,36.7583984375],[36.9853515625,36.702392578125],[37.06621093750002,36.652636718749996],[37.43632812500002,36.643310546875],[37.523535156250006,36.6783203125],[37.7203125,36.743701171874996],[37.90664062500002,36.79462890625],[38.19169921875002,36.9015625],[38.7666015625,36.693115234375],[38.90644531250001,36.694677734375],[39.1083984375,36.680566406249994],[39.35664062500001,36.681591796875],[39.50146484375,36.70224609375],[39.6865234375,36.738623046875],[40.01640625000002,36.826074218749994],[40.705664062500006,37.097705078124996],[41.886816406250006,37.156396484374994],[42.05986328125002,37.2060546875],[42.16787109375002,37.288623046874996],[42.202734375,37.29726562499999],[42.24755859375,37.2822265625],[42.2685546875,37.2765625],[42.31289062500002,37.22958984375],[42.358984375,37.10859375]]]},"properties":{"name":"Syria","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-72.3328125,21.85136718749999],[-72.14433593750002,21.79272460937503],[-72.33544921874994,21.758007812499983],[-72.3328125,21.85136718749999]]]},"properties":{"name":"Turks and Caicos Is.","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[23.980273437500017,19.496630859375003],[23.970800781250006,15.721533203124991],[23.10517578125001,15.702539062499994],[22.933886718750017,15.533105468749994],[22.93232421875001,15.162109375],[22.6708984375,14.722460937500003],[22.38154296875001,14.550488281249997],[22.53857421875,14.161865234375],[22.1064453125,13.7998046875],[22.228125,13.32958984375],[21.825292968750006,12.79052734375],[21.928125,12.678125],[22.352343750000017,12.660449218749989],[22.472460937500017,12.067773437499994],[22.580957031250023,11.990136718749994],[22.591113281250017,11.579882812499989],[22.922656250000017,11.344873046874994],[22.86005859375001,10.919677734375],[22.49384765625001,10.996240234374994],[21.771484375,10.642822265625],[21.682714843750006,10.289843749999989],[20.773242187500017,9.405664062499994],[20.342089843750017,9.127099609374994],[18.95625,8.938867187499994],[18.886035156250017,8.836035156249991],[19.108691406250017,8.656152343749994],[18.56416015625001,8.0458984375],[17.6494140625,7.98359375],[16.784765625,7.550976562499997],[16.545312500000023,7.865478515625],[16.37890625,7.683544921874997],[15.957617187500006,7.507568359375],[15.480078125,7.523779296874991],[15.5498046875,7.787890624999989],[15.1162109375,8.557324218749997],[14.332324218750017,9.20351562499999],[13.977246093750011,9.691552734374994],[14.243261718750006,9.979736328125],[15.654882812500006,10.0078125],[15.276074218750011,10.357373046874997],[15.132226562500023,10.648486328124989],[15.029882812500006,11.11367187499999],[15.08125,11.845507812499989],[14.847070312500023,12.502099609374994],[14.461718750000017,13.021777343749989],[14.244824218750011,13.07734375],[14.06396484375,13.07851562499999],[13.932324218750011,13.258496093749997],[13.606347656250023,13.70458984375],[13.505761718750023,14.134423828124994],[13.4482421875,14.380664062500003],[14.367968750000017,15.750146484374994],[15.474316406250011,16.908398437499997],[15.735058593750011,19.904052734375],[15.963183593750017,20.34619140625],[15.587109375000011,20.733300781249994],[15.607324218750023,20.954394531250003],[15.181835937500011,21.523388671874997],[14.97900390625,22.99619140624999],[15.984082031250011,23.445214843749994],[20.14765625000001,21.38925781249999],[23.980273437500017,19.496630859375003]]]},"properties":{"name":"Chad","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[0.900488281250006,10.993261718749991],[0.763378906250011,10.386669921874997],[1.330078125,9.996972656249994],[1.3857421875,9.361669921874991],[1.600195312500006,9.050048828125],[1.624707031250011,6.997314453125],[1.530957031250011,6.992431640625],[1.777929687500006,6.294628906249997],[1.62265625,6.216796875],[1.187207031250011,6.089404296874989],[0.736914062500006,6.452587890624997],[0.525585937500011,6.850927734374991],[0.634765625,7.353662109374994],[0.5,7.546875],[0.686328125000017,8.354882812499994],[0.37255859375,8.75927734375],[0.48876953125,8.851464843749994],[0.525683593750017,9.398486328124989],[0.2333984375,9.463525390624994],[0.342578125000017,9.604150390624994],[0.264550781250023,9.644726562499997],[0.380859375,10.291845703124991],[-0.08632812499999,10.673046875],[0.009423828125023,11.02099609375],[-0.068603515625,11.115625],[0.49267578125,10.954980468749994],[0.900488281250006,10.993261718749991]]]},"properties":{"name":"Togo","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[98.40908203125005,7.90205078125004],[98.2962890625,7.776074218750054],[98.32207031250007,8.166308593749974],[98.4349609375,8.085644531249969],[98.40908203125005,7.90205078125004]]],[[[100.070703125,9.58603515625002],[99.96240234375003,9.421630859375],[99.93955078125006,9.559960937500037],[100.070703125,9.58603515625002]]],[[[102.42675781250003,11.988720703125026],[102.30195312500004,11.98081054687502],[102.27744140625006,12.151855468750043],[102.42675781250003,11.988720703125026]]],[[[100.12246093750005,20.316650390625057],[100.11494140625004,20.257666015625034],[100.13974609375012,20.245410156250017],[100.31796875000006,20.38588867187505],[100.51953125000003,20.17792968750004],[100.39765625000004,19.756103515625],[100.51357421875005,19.553466796875],[101.21191406249997,19.54833984375003],[101.22080078125006,19.486621093750074],[101.19755859375007,19.327929687500074],[101.2863281250001,18.977148437500006],[101.04697265625012,18.441992187500063],[101.05058593750002,18.407031250000045],[101.1375,18.28686523437497],[101.14394531250005,18.14262695312499],[100.90849609375002,17.583886718750023],[100.95585937500002,17.541113281250006],[101.10517578125004,17.47954101562499],[101.16748046874997,17.49902343749997],[101.41367187500012,17.71875],[101.55507812500005,17.812353515625034],[101.56367187500004,17.82050781250001],[101.6875,17.889404296875],[101.77480468750005,18.03339843750004],[101.81865234375002,18.06464843750001],[101.87548828124997,18.046435546875017],[101.94746093750004,18.081494140624983],[102.03457031250005,18.169824218750023],[102.10146484375,18.210644531249983],[102.14824218750002,18.20385742187503],[102.35185546875002,18.045947265625017],[102.45878906250002,17.984619140625057],[102.55253906250007,17.96508789062497],[102.61679687500006,17.833349609375034],[102.66064453124997,17.817968750000034],[102.680078125,17.824121093750023],[103.05136718750006,18.02851562500001],[103.0912109375,18.13823242187499],[103.14853515625006,18.221728515625045],[103.19970703124997,18.259472656249983],[103.26318359374997,18.27846679687505],[103.27958984375002,18.304980468750017],[103.24892578125,18.338964843750034],[103.25175781250002,18.373486328124955],[103.2882812500001,18.408398437499955],[103.36699218750007,18.42333984374997],[103.48798828125004,18.418164062499983],[103.62968750000002,18.38256835937503],[103.79228515625002,18.316503906249977],[103.89882812500005,18.295312500000023],[103.949609375,18.31899414062505],[104.04873046875005,18.216699218749994],[104.19619140625005,17.988378906250006],[104.32265625,17.815820312500023],[104.428125,17.69897460937503],[104.7396484375,17.461669921875],[104.81601562500012,17.30029296874997],[104.75898437500004,17.0771484375],[104.7435546875,16.884375],[104.75058593750012,16.647558593750063],[104.81933593750003,16.46606445312503],[105.04716796875007,16.160253906249977],[105.14873046875007,16.09355468749999],[105.33066406250006,16.037890625000017],[105.40625,15.987451171875051],[105.39892578124997,15.829882812500017],[105.62207031250003,15.699951171875],[105.641015625,15.656542968750045],[105.6388671875001,15.585937500000057],[105.615625,15.488281250000057],[105.49042968750004,15.256591796875],[105.49042968750004,15.127587890625009],[105.5333984375001,15.041601562499991],[105.54667968750002,14.932470703124963],[105.52304687500012,14.843310546875003],[105.49736328125002,14.590673828124963],[105.47558593750003,14.530126953124977],[105.42265625000007,14.471630859375054],[105.34218750000005,14.416699218750054],[105.24365234375003,14.367871093750054],[105.1833007812501,14.346240234374989],[105.16914062500004,14.336083984374966],[105.12597656250003,14.280957031250011],[105.07412109375005,14.227441406250037],[104.77900390625004,14.427832031250006],[103.19941406250004,14.332617187499977],[102.90927734375006,14.136718750000028],[102.546875,13.585693359375043],[102.33632812500005,13.560302734375014],[102.49960937500012,12.669970703125003],[102.75566406250002,12.42626953125],[102.73662109375007,12.089794921875011],[102.93388671875002,11.706689453125037],[102.594140625,12.203027343749994],[102.54023437500004,12.109228515624977],[101.83574218750002,12.640380859375014],[100.89775390625007,12.653808593749986],[100.96269531250007,13.431982421874991],[100.60292968750005,13.568164062500017],[100.23564453125002,13.48447265625002],[99.99052734375007,13.243457031250031],[100.08994140625006,13.045654296874972],[99.96396484375006,12.690039062500006],[99.98906250000007,12.170800781249994],[99.16503906250003,10.319824218750028],[99.25390625000003,9.265234375000034],[99.83554687500012,9.288378906250031],[99.98955078125007,8.589208984374977],[100.129296875,8.428076171875006],[100.16347656250005,8.508398437500034],[100.27939453125006,8.268505859375011],[100.54521484375002,7.226904296874991],[100.43935546875005,7.280761718750043],[100.38037109375003,7.541503906250043],[100.28378906250006,7.551513671875043],[100.25664062500002,7.774902343749986],[100.16074218750012,7.599267578124994],[100.4235351562501,7.18784179687502],[101.01787109375002,6.860937500000034],[101.49794921875005,6.865283203125031],[102.10107421874997,6.242236328125031],[101.87363281250012,5.825292968749991],[101.67841796875004,5.778808593750028],[101.5560546875,5.907763671875003],[101.1139648437501,5.636767578125045],[100.98164062500004,5.771044921875045],[101.05351562500002,6.242578125],[100.87392578125,6.24541015624996],[100.75449218750012,6.460058593749991],[100.3454101562501,6.549902343750006],[100.26142578125004,6.682714843749963],[100.11914062499997,6.441992187500048],[99.69599609375004,6.87666015625004],[99.72031250000012,7.106201171875],[99.55302734375002,7.218798828125031],[99.59697265625002,7.355615234375009],[99.35859375000004,7.372216796875023],[99.26367187499997,7.619042968750037],[99.07763671874997,7.718066406250045],[99.05107421875002,7.887841796874994],[98.78867187500012,8.059814453125028],[98.703515625,8.256738281250009],[98.57919921875006,8.344287109374989],[98.42099609375006,8.17822265625],[98.30546875000007,8.226220703125009],[98.24179687500006,8.767871093750045],[98.70253906250005,10.19038085937504],[98.7572265625,10.660937499999974],[99.1901367187501,11.105273437499989],[99.61474609374997,11.781201171875026],[99.40507812500002,12.547900390625003],[99.12392578125,13.030761718750043],[99.13681640625006,13.716699218749994],[98.57001953125004,14.359912109375031],[98.20214843749997,14.97592773437502],[98.19101562500012,15.204101562499972],[98.55693359375007,15.367675781249986],[98.59238281250006,16.05068359375005],[98.81796875000012,16.180810546874994],[98.88828125000006,16.351904296875034],[98.83544921875003,16.417578125],[98.66074218750006,16.330419921875006],[98.4388671875,16.975683593750034],[97.7064453125,17.79711914062503],[97.63222656250005,18.290332031250074],[97.37392578125,18.51796875],[97.74589843750002,18.58818359374999],[97.816796875,19.459960937500057],[98.01503906250005,19.74951171874997],[98.37128906250004,19.68916015625004],[98.9166992187501,19.77290039062504],[99.07421875000003,20.09936523437503],[99.48593750000006,20.14985351562501],[99.45888671875005,20.363037109375],[99.72011718750005,20.32543945312497],[99.8903320312501,20.424414062499977],[99.9542968750001,20.415429687500023],[100.0036132812501,20.37958984375001],[100.12246093750005,20.316650390625057]]]]},"properties":{"name":"Thailand","childNum":4}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[70.66416015625,39.85546875],[70.55957031250003,39.790917968749994],[70.48925781250003,39.86303710937503],[70.48281250000005,39.88271484375005],[70.49775390625004,39.88242187499998],[70.56708984375004,39.86660156250005],[70.66416015625,39.85546875]]],[[[70.95800781250003,40.238867187500034],[70.59921875,39.974511718749994],[69.96679687499997,40.202246093750034],[69.46875,40.020751953125],[69.47099609375002,39.990625],[69.43193359375007,39.909765625000034],[69.36542968750004,39.94707031250002],[69.30722656250006,39.968554687500045],[69.27880859374997,39.91777343749999],[69.24472656250006,39.82709960937498],[69.29765625000007,39.52480468750005],[70.50117187500004,39.58735351562501],[70.79931640625003,39.39472656250001],[71.4703125,39.60366210937502],[71.50302734375006,39.58217773437502],[71.51738281250002,39.55385742187502],[71.50585937499997,39.51708984374997],[71.5033203125,39.47880859374999],[71.73222656250002,39.422998046874994],[71.77861328125007,39.27797851562502],[72.04277343750002,39.352148437500034],[72.08417968750004,39.310644531250034],[72.14736328125005,39.26074218749997],[72.22998046874997,39.20751953124997],[72.63994140625002,39.385986328125],[73.10927734375,39.36191406249998],[73.2349609375,39.37456054687499],[73.3361328125001,39.41235351562506],[73.38740234375004,39.442724609375034],[73.4704101562501,39.46059570312502],[73.63164062500007,39.44887695312502],[73.63632812500006,39.396679687499955],[73.60732421875,39.229199218749955],[73.8052734375,38.968652343749994],[73.69609375000007,38.85429687499996],[73.80166015625,38.60688476562501],[74.02558593750004,38.53984375000002],[74.27744140625,38.659765625000034],[74.81230468750002,38.46030273437498],[74.8942382812501,37.60141601562498],[75.11875,37.38569335937498],[74.89130859375004,37.231640624999955],[74.875390625,37.24199218750002],[74.83046875,37.28593750000002],[74.73056640625006,37.35703125],[74.659375,37.39448242187501],[74.34902343750005,37.41875],[74.25966796875005,37.41542968750002],[74.20351562500005,37.37246093750005],[74.16708984375,37.32944335937498],[73.74960937500006,37.23178710937498],[73.6535156250001,37.239355468750034],[73.62753906250006,37.261572265625006],[73.71728515625003,37.32944335937498],[73.7337890625,37.37578125000002],[73.72060546875,37.41875],[73.65712890625005,37.43046875],[73.6046875000001,37.44604492187503],[73.48134765625,37.4716796875],[73.38291015625006,37.462255859375034],[73.21113281250004,37.40849609375002],[72.89550781250003,37.26752929687498],[72.65742187500004,37.029052734375],[71.665625,36.696923828124994],[71.530859375,36.845117187499994],[71.43291015625007,37.12753906249998],[71.5822265625001,37.91010742187498],[71.55195312500004,37.93315429687496],[71.48779296874997,37.93188476562497],[71.38964843750003,37.90629882812502],[71.31992187500006,37.90185546875],[71.27851562500004,37.91840820312498],[71.33271484375004,38.170263671875034],[71.25585937499997,38.306982421875006],[70.7359375,38.42255859375001],[70.41777343750002,38.075439453125],[70.21464843750002,37.92441406250006],[70.19941406250004,37.88603515624996],[70.25498046875006,37.76538085937497],[70.25146484374997,37.66416015625006],[70.18867187500004,37.58247070312501],[70.11982421875004,37.54350585937499],[69.9849609375,37.566162109375],[69.8208984375,37.60957031250004],[69.62578125000002,37.59404296874999],[69.49208984375,37.55307617187498],[69.42011718750004,37.486718749999966],[69.39921875000007,37.39931640625002],[69.42968749999997,37.290869140625034],[69.414453125,37.20776367187497],[69.35380859375007,37.15004882812502],[69.3039062500001,37.11694335937503],[69.26484375000004,37.1083984375],[69.18017578125003,37.158300781250034],[68.96044921875003,37.32504882812498],[68.9118164062501,37.33393554687501],[68.88525390624997,37.32807617187498],[68.85537109375005,37.31684570312501],[68.83847656250006,37.30283203124998],[68.82373046874997,37.27070312500001],[68.78203125000002,37.25800781250001],[68.7232421875,37.26801757812501],[68.6691406250001,37.258398437500006],[68.3869140625001,37.1375],[68.29951171875004,37.08842773437502],[68.28476562500006,37.036328124999955],[68.2609375000001,37.01308593750002],[68.2121093750001,37.02153320312496],[68.0677734375,36.949804687500006],[67.95800781249997,36.972021484375006],[67.83447265624997,37.06420898437506],[67.75898437500004,37.172216796875034],[67.7980468750001,37.244970703125006],[67.81435546875005,37.48701171875004],[68.3502929687501,38.211035156250006],[68.08720703125002,38.47353515625002],[68.13251953125004,38.927636718749966],[67.69443359375006,38.99462890625003],[67.64833984375005,39.13105468750004],[67.3576171875001,39.216699218749994],[67.426171875,39.46557617187497],[67.71904296875007,39.62138671875002],[68.46328125,39.53671874999998],[68.63896484375007,39.8388671875],[68.86875,39.90747070312503],[68.80468750000003,40.05034179687499],[68.9720703125,40.08994140624998],[68.63066406250007,40.16708984374998],[69.27490234374997,40.19809570312498],[69.20625,40.566552734374994],[69.35722656250002,40.76738281249996],[69.71289062500003,40.65698242187503],[70.40195312500006,41.03510742187498],[70.75107421875006,40.721777343750006],[70.37158203125003,40.38413085937506],[70.653125,40.201171875],[70.95800781250003,40.238867187500034]]]]},"properties":{"name":"Tajikistan","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[66.52226562500007,37.34848632812506],[66.471875,37.3447265625],[65.7650390625,37.56914062499996],[65.55498046875002,37.25117187500004],[65.30361328125005,37.24677734375001],[65.08964843750007,37.237939453124994],[64.9515625,37.19355468750001],[64.81630859375005,37.13208007812503],[64.7824218750001,37.05927734375001],[64.60253906250003,36.554541015625034],[64.5658203125,36.427587890625034],[64.51103515625002,36.34067382812498],[64.184375,36.14892578125],[63.8625,36.012353515624994],[63.12998046875006,35.84619140624997],[63.169726562500074,35.678125],[63.05664062500003,35.44580078125003],[62.98027343750002,35.40917968750003],[62.85800781250006,35.34965820312499],[62.688085937500006,35.25532226562504],[62.3078125000001,35.17080078125005],[62.08964843750002,35.3796875],[61.62099609375005,35.43232421875004],[61.34472656249997,35.62949218750006],[61.26201171875002,35.61958007812498],[61.25214843750004,35.86762695312498],[61.15292968750006,35.97675781250001],[61.212011718750006,36.190527343750034],[61.11962890625003,36.64257812500003],[60.34130859375003,36.63764648437501],[60.06279296875002,36.962890625],[59.454980468749994,37.25283203125002],[59.30175781249997,37.51064453125005],[58.81542968750003,37.683496093749994],[58.261621093749994,37.665820312500045],[57.35371093750004,37.97333984374998],[57.1935546875001,38.216406250000034],[56.440625,38.249414062499994],[56.272070312500006,38.080419921875034],[55.38085937500003,38.051123046875034],[54.90009765625004,37.77792968750006],[54.6994140625001,37.47016601562498],[53.91416015625006,37.34355468750002],[53.86865234375003,38.949267578125045],[53.70458984375003,39.209570312500034],[53.33632812500005,39.34082031250006],[53.15664062499999,39.26499023437506],[53.23564453125002,39.608544921874966],[53.603125,39.546972656250034],[53.472265625,39.66879882812498],[53.48730468749997,39.909375],[52.9875,39.98759765625002],[53.03554687500005,39.7744140625],[52.80468749999997,40.054003906250045],[52.73369140625002,40.39873046875002],[52.943457031250006,41.03808593750006],[53.1452148437501,40.82495117187497],[53.61523437500003,40.818505859374994],[53.87001953125005,40.64868164062503],[54.37734375,40.693261718749966],[54.319433593750006,40.83457031249998],[54.68505859375003,40.873046875],[54.70371093750006,41.071142578125034],[54.094824218750006,41.51938476562506],[53.80468749999997,42.11762695312498],[53.16416015625006,42.09379882812502],[52.97001953125002,41.97622070312505],[52.81484375,41.711816406249994],[52.850390625000074,41.20029296875006],[52.4938476562501,41.780371093750034],[53.0558593750001,42.14775390624999],[54.120996093749994,42.335205078125],[54.85380859375002,41.965185546875006],[55.434375,41.296289062499994],[55.97744140625005,41.32221679687504],[57.01796875,41.26347656249996],[57.11884765625004,41.35029296874998],[56.96406250000004,41.856542968750006],[57.290625,42.123779296875],[57.814257812500074,42.18984375000005],[58.02890625,42.48764648437506],[58.474414062500074,42.29936523437496],[58.15156250000004,42.628076171874966],[58.477148437500006,42.66284179687503],[58.5890625000001,42.778466796874966],[59.35429687500002,42.32329101562496],[59.98515625000002,42.21171875],[59.94179687499999,41.97353515625002],[60.20078125000006,41.803125],[60.07558593750005,41.759667968749966],[60.089648437500074,41.39941406250003],[60.454980468749994,41.221630859374955],[61.2423828125001,41.18920898437503],[61.496972656249994,41.276074218749955],[61.90283203124997,41.09370117187501],[62.48320312500002,39.97563476562496],[63.76367187500003,39.16054687499999],[64.3099609375,38.97729492187497],[65.612890625,38.23857421875002],[65.97119140624997,38.244238281250006],[66.60625,37.98671875000005],[66.52558593750004,37.785742187500034],[66.51132812500006,37.59916992187496],[66.51064453125,37.45869140625004],[66.52226562500007,37.34848632812506]]]},"properties":{"name":"Turkmenistan","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[124.0363281250001,-9.341601562500031],[124.44443359375012,-9.190332031250023],[124.28232421875012,-9.427929687500026],[124.0363281250001,-9.341601562500031]]],[[[125.06816406250002,-9.511914062499997],[124.96015625000004,-9.213769531250009],[125.10048828125,-9.189843750000023],[125.14902343750012,-9.042578125000034],[124.93681640625007,-9.053417968750026],[124.92226562500005,-8.942480468749977],[125.17802734375002,-8.647851562499994],[125.38183593749997,-8.575390624999983],[126.61972656250006,-8.459472656249986],[126.96640625000012,-8.315722656250017],[127.29609375000004,-8.424511718749969],[126.91523437500004,-8.715234374999966],[125.40800781250002,-9.275781250000023],[125.06816406250002,-9.511914062499997]]],[[[125.64609375000006,-8.139941406250003],[125.5794921875,-8.311816406250017],[125.50712890625007,-8.275097656249997],[125.64609375000006,-8.139941406250003]]]]},"properties":{"name":"Timor-Leste","childNum":3}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-175.1619140625,-21.169335937500023],[-175.07817382812496,-21.129003906249977],[-175.15659179687495,-21.26367187499997],[-175.36235351562496,-21.106835937499994],[-175.1619140625,-21.169335937500023]]],[[[-173.953515625,-18.63935546875001],[-174.06914062500002,-18.640234375],[-173.96806640624993,-18.565332031250023],[-173.953515625,-18.63935546875001]]]]},"properties":{"name":"Tonga","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[-61.012109374999966,10.134326171874989],[-61.906103515625006,10.069140625000031],[-61.49931640624999,10.268554687499972],[-61.47827148437497,10.603369140624977],[-61.65117187499993,10.718066406249974],[-60.917626953124966,10.84023437499999],[-61.03374023437502,10.669873046875026],[-61.012109374999966,10.134326171874989]]]},"properties":{"name":"Trinidad and Tobago","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[10.957617187500063,33.72207031250005],[10.722070312500051,33.738916015624994],[10.745214843750063,33.88867187500006],[11.017871093749989,33.82333984374998],[10.957617187500063,33.72207031250005]]],[[[11.278027343750068,34.753808593749994],[11.123632812500063,34.68168945312496],[11.254882812500057,34.82031250000006],[11.278027343750068,34.753808593749994]]],[[[10.274609375000011,31.684960937499994],[10.114941406250068,31.46376953125005],[10.216406250000063,30.78320312500003],[10.05976562500004,30.58007812500003],[9.932519531250051,30.42534179687496],[9.895019531250028,30.387304687500034],[9.51875,30.229394531249994],[9.224023437500023,31.373681640624994],[9.160253906250006,31.621337890625],[9.044042968750034,32.072363281250034],[8.333398437500051,32.54360351562502],[8.1125,33.055322265624994],[7.877246093750017,33.172119140625],[7.534375,33.717919921874994],[7.513867187500068,34.080517578124955],[8.24560546875,34.73408203124998],[8.276855468750057,34.97949218749997],[8.312109375000063,35.084619140624994],[8.394238281250011,35.20385742187503],[8.318066406250011,35.654931640624994],[8.348730468750063,36.367968750000045],[8.207617187500006,36.518945312499994],[8.601269531250068,36.83393554687504],[8.576562500000023,36.93720703125001],[9.687988281250057,37.34038085937499],[9.838476562500063,37.30898437499999],[9.830273437499983,37.13535156250006],[9.875585937499977,37.25415039062503],[10.196386718750063,37.205859375000045],[10.293261718750074,36.781494140625],[10.412304687499983,36.73183593750002],[11.053906250000068,37.07250976562506],[11.12666015625004,36.874072265625045],[10.476562500000028,36.175146484375006],[10.590820312500028,35.88725585937499],[11.00429687500008,35.63383789062496],[11.120117187500057,35.24028320312499],[10.69091796875,34.67846679687503],[10.118359375000068,34.280078125000045],[10.049023437500068,34.056298828124994],[10.305273437500034,33.72827148437497],[10.713183593750017,33.68901367187496],[10.722753906250006,33.514404296875],[10.958007812500057,33.62631835937498],[11.257421875000034,33.30883789062506],[11.202636718749972,33.24921874999998],[11.50458984375004,33.181933593750045],[11.502441406250028,33.15556640624999],[11.467187500000051,32.96572265625005],[11.459179687500011,32.897363281249966],[11.453906250000017,32.64257812500003],[11.533789062500034,32.52495117187496],[11.535937500000017,32.47333984375001],[11.504980468750034,32.413671875000034],[11.358007812500006,32.34521484375003],[11.168261718750074,32.25673828125002],[11.005175781250074,32.17270507812506],[10.826367187500068,32.080664062500034],[10.771582031250006,32.02119140625001],[10.60888671875,31.929541015624977],[10.47578125000004,31.736035156249983],[10.274609375000011,31.684960937499994]]]]},"properties":{"name":"Tunisia","childNum":3}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[25.970019531250045,40.136328125],[25.6689453125,40.13588867187502],[25.918359375000023,40.23798828125004],[25.970019531250045,40.136328125]]],[[[43.43339843750002,41.155517578125],[43.43945312500003,41.10712890625001],[43.72265624999997,40.71953124999999],[43.56933593750003,40.48237304687498],[43.66621093750004,40.12636718750002],[44.28925781250004,40.040380859375006],[44.76826171875004,39.70351562500005],[44.81718750000002,39.65043945312496],[44.58710937500004,39.76855468750006],[44.3893554687501,39.422119140625],[44.02324218750002,39.37744140625006],[44.27167968750004,38.83603515625006],[44.2985351562501,38.38627929687499],[44.4499023437501,38.33422851562506],[44.21132812499999,37.908056640625006],[44.589941406250006,37.710351562499966],[44.574023437500074,37.435400390625006],[44.79414062500004,37.290380859375034],[44.76513671875003,37.142431640625006],[44.73095703124997,37.16528320312503],[44.66933593750005,37.17358398437503],[44.60595703124997,37.176025390625],[44.401953125,37.05849609375002],[44.325585937499994,37.0107421875],[44.28183593750006,36.97802734374997],[44.24570312500006,36.983300781249994],[44.20166015624997,37.05180664062502],[44.208398437499994,37.20263671875],[44.19179687499999,37.249853515625034],[44.15625,37.28295898437503],[44.11445312500004,37.30185546875006],[44.01318359375003,37.313525390625045],[43.83642578124997,37.223535156249994],[43.67578125000003,37.227246093749955],[43.09248046875004,37.36738281249998],[42.936621093750006,37.32475585937502],[42.77460937500004,37.371875],[42.74111328125005,37.361914062500034],[42.6354492187501,37.249267578125],[42.45585937500002,37.128710937500045],[42.358984375,37.10859375000004],[42.31289062499999,37.22958984374998],[42.26855468749997,37.276562499999955],[42.24755859375003,37.28222656250006],[42.20273437500006,37.29726562499999],[42.16787109375005,37.28862304687502],[42.059863281250074,37.2060546875],[41.886816406250006,37.156396484374994],[40.70566406250006,37.09770507812502],[40.4503906250001,37.00888671875006],[40.016406250000074,36.82607421875002],[39.68652343749997,36.73862304687506],[39.50146484374997,36.702246093750034],[39.35664062500004,36.68159179687498],[39.10839843749997,36.68056640625005],[38.90644531250004,36.69467773437498],[38.76660156249997,36.69311523437503],[38.19169921875002,36.90156250000004],[37.90664062500005,36.79462890625001],[37.7203125,36.74370117187502],[37.52353515625006,36.678320312500034],[37.436328125000074,36.643310546875],[37.327050781249994,36.64658203125006],[37.18740234375005,36.655908203124994],[37.066210937500074,36.652636718750045],[36.98535156250003,36.70239257812506],[36.94179687499999,36.758398437500006],[36.77656250000004,36.79267578124998],[36.65859375000005,36.80253906250002],[36.62841796875003,36.777685546875034],[36.596875,36.70136718750001],[36.546679687500074,36.50634765625],[36.5375,36.457421874999966],[36.63671874999997,36.233984375],[36.37539062499999,36.171240234375034],[36.347558593749994,36.003515625000034],[36.20195312500002,35.93754882812502],[36.15361328125002,35.83388671875005],[36.12734375,35.831445312499994],[35.967578125000074,35.91005859375002],[35.89267578125006,35.91655273437502],[35.81093750000005,36.30986328125002],[36.18847656250003,36.65898437499999],[36.048925781250006,36.91059570312501],[35.393164062500006,36.57519531249997],[34.70361328125003,36.81679687499999],[33.694726562499994,36.18198242187498],[32.794824218749994,36.03588867187497],[32.37773437500002,36.18364257812496],[32.02197265625003,36.53530273437502],[31.35253906249997,36.80107421874999],[30.64404296874997,36.86567382812501],[30.446093750000074,36.269873046875034],[29.6890625,36.15668945312498],[29.22363281249997,36.32446289062497],[28.96962890625008,36.71533203125003],[28.303710937500057,36.81196289062498],[28.01943359375005,36.63447265624998],[28.083984375000057,36.75146484375],[27.453906250000017,36.712158203125],[28.00537109375003,36.83198242187498],[28.242382812500068,37.029052734375],[27.262988281250045,36.97656250000003],[27.30019531250005,37.12685546875002],[27.53505859375005,37.16386718750002],[27.06796875,37.65791015625004],[27.224414062500074,37.725439453125006],[27.23242187500003,37.978662109374994],[26.29072265625001,38.27719726562498],[26.44130859375005,38.64121093749998],[26.67421875000008,38.33574218750002],[27.14423828125001,38.45195312499996],[26.906835937500034,38.48173828124999],[26.763671875,38.709619140624966],[27.013671875000057,38.88686523437502],[26.814941406250057,38.96098632812502],[26.853613281250034,39.115625],[26.68183593750004,39.292236328125],[26.89921874999999,39.549658203125034],[26.113085937500074,39.46738281249998],[26.101367187500074,39.56894531249998],[26.18134765625004,39.99008789062498],[26.738085937500045,40.40024414062506],[27.28457031250008,40.45561523437496],[27.4755859375,40.319921875000034],[27.72802734375,40.32880859374998],[27.84853515625005,40.38173828125002],[27.73183593750008,40.48149414062499],[27.87490234375008,40.512939453125],[27.989550781250074,40.48945312500001],[27.96259765625001,40.369873046875],[29.00712890624999,40.389746093750034],[28.787890625000017,40.534033203125034],[28.95800781250003,40.63056640624998],[29.849218750000063,40.760107421875006],[29.113867187499977,40.93784179687506],[29.14814453125004,41.221044921875034],[31.25488281249997,41.10761718750001],[31.45800781249997,41.32001953125004],[32.306445312500074,41.72958984374998],[33.38134765625003,42.01757812500003],[34.75048828124997,41.95683593749999],[35.006445312500006,42.06328125000002],[35.15488281250006,42.02753906250001],[35.12207031250003,41.89111328125003],[35.297753906249994,41.72851562500003],[35.558007812499994,41.63403320312506],[36.05175781249997,41.68256835937498],[36.40537109375006,41.27460937500001],[36.77773437499999,41.36347656250001],[37.066210937500074,41.184423828125034],[38.38105468750004,40.92451171875001],[39.426367187500006,41.10644531250003],[40.26523437500006,40.96132812500005],[41.08359375000006,41.26118164062504],[41.41435546875002,41.42363281249999],[41.510058593750074,41.51748046875002],[41.70175781250006,41.471582031249994],[41.77939453125006,41.44052734374998],[41.823535156250074,41.432373046875],[41.92578125000003,41.49565429687502],[42.46640625,41.43984375000002],[42.56738281249997,41.55927734375001],[42.590429687500006,41.57070312500002],[42.60683593750005,41.57880859374998],[42.682421875000074,41.58574218749999],[42.75410156250004,41.57890625000002],[42.787890625000074,41.56372070312503],[42.82167968750005,41.49238281249998],[42.90673828125003,41.46684570312502],[43.05712890625003,41.35283203124996],[43.149023437500006,41.30712890624997],[43.171289062499994,41.28793945312498],[43.14101562499999,41.26484374999998],[43.15283203124997,41.23642578125006],[43.20546875000005,41.19916992187501],[43.43339843750002,41.155517578125]]],[[[27.47480468750001,41.946875],[28.014453125000017,41.96904296874999],[28.197851562500063,41.55449218750002],[29.057226562500006,41.22973632812503],[28.95625,41.00820312499999],[28.172167968750074,41.08071289062502],[27.49941406250005,40.97314453124997],[27.258007812499983,40.687353515625006],[26.772070312500034,40.498046875],[26.202734375000034,40.07539062500004],[26.25380859375005,40.31469726562503],[26.792089843750034,40.626611328124994],[26.10546875000003,40.61132812499997],[26.03896484375008,40.726757812499955],[26.331054687500057,40.954492187499994],[26.330664062499977,41.23876953125],[26.62490234375008,41.401757812499994],[26.581347656250074,41.60126953125004],[26.320898437500034,41.716552734375],[26.3603515625,41.80156249999999],[26.51142578125004,41.82636718749998],[26.549707031250023,41.896728515625],[26.5796875,41.947949218749955],[26.615332031250063,41.964892578125045],[26.884863281250006,41.99184570312502],[26.96875,42.02685546875006],[27.01171875,42.05864257812496],[27.193359375000057,42.07709960937498],[27.24433593750004,42.09326171875],[27.294921875000057,42.079541015624955],[27.47480468750001,41.946875]]]]},"properties":{"name":"Turkey","childNum":3}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[39.71132812499999,-7.977441406250023],[39.602929687499994,-7.936132812499949],[39.907128906249994,-7.649218750000031],[39.71132812499999,-7.977441406250023]]],[[[39.49648437499999,-6.174609375],[39.573046875000074,-6.387402343750011],[39.48095703124997,-6.45371093750002],[39.18232421875004,-6.172558593750026],[39.30898437499999,-5.721972656249974],[39.49648437499999,-6.174609375]]],[[[39.86503906250002,-4.906152343750037],[39.74931640625002,-5.443847656249986],[39.646777343750074,-5.368554687500009],[39.6734375,-4.927050781250031],[39.86503906250002,-4.906152343750037]]],[[[33.90322265625005,-1.002050781250034],[37.643847656250074,-3.045410156250028],[37.608203125000074,-3.497070312500028],[39.221777343750006,-4.692382812500014],[38.80468750000003,-6.070117187500031],[38.87402343750003,-6.33125],[39.5460937500001,-7.024023437500034],[39.288476562499994,-7.517871093750003],[39.28701171875005,-7.787695312500006],[39.4284179687501,-7.81279296874996],[39.441015625,-8.011523437499946],[39.304003906250074,-8.44384765625],[39.451269531250006,-8.94296875],[39.64130859375004,-9.19248046875002],[39.72519531250006,-10.000488281249972],[40.46357421875004,-10.464355468749972],[39.98867187499999,-10.820800781250014],[39.81708984375004,-10.912402343750031],[38.9875,-11.167285156250003],[38.49179687500006,-11.413281250000026],[37.92021484375002,-11.294726562500031],[37.72480468750004,-11.58066406250002],[37.54169921875004,-11.675097656249974],[37.37285156250002,-11.710449218749986],[36.97890625000005,-11.566992187499977],[36.30566406250003,-11.706347656249946],[36.191308593749994,-11.670703124999974],[36.17548828125004,-11.60927734374998],[36.08222656250004,-11.537304687499969],[35.91132812500004,-11.45468750000002],[35.785449218750074,-11.452929687500017],[35.63095703125006,-11.582031250000028],[35.564355468749994,-11.602343749999989],[35.418261718750074,-11.583203125],[35.18261718750003,-11.574804687499977],[34.95947265625003,-11.578125],[34.93701171874997,-11.463476562500034],[34.890625,-11.3935546875],[34.77382812500005,-11.341699218750009],[34.60791015624997,-11.08046875],[34.66708984375006,-10.792480468750028],[34.56992187500006,-10.241113281249966],[34.32089843750006,-9.731542968749977],[33.99560546875003,-9.495410156250003],[33.88886718750004,-9.670117187499983],[32.91992187500003,-9.407421875000026],[32.75664062500002,-9.322265625],[31.94257812500004,-9.05400390624996],[31.91865234375004,-8.942187500000017],[31.886132812499994,-8.921972656249977],[31.81806640625004,-8.902246093749952],[31.673632812500017,-8.908789062499963],[31.55625,-8.80546875],[31.44921874999997,-8.65390625],[31.35058593750003,-8.607031250000034],[31.07636718750004,-8.611914062499963],[30.968359375000063,-8.550976562499983],[30.89199218750005,-8.473730468749963],[30.830664062500063,-8.385546875000031],[30.720898437500097,-8.104394531250037],[30.40673828125003,-7.460644531249983],[30.313183593750097,-7.203710937499949],[30.212695312500017,-7.037890625000017],[30.10625,-6.915039062500028],[29.961816406249994,-6.803125],[29.798144531250017,-6.691894531249957],[29.70966796875004,-6.61689453125004],[29.590625,-6.394433593750023],[29.540820312500017,-6.313867187500037],[29.50625,-6.172070312500011],[29.480078125,-6.025],[29.490820312500063,-5.96542968750002],[29.59638671875004,-5.775976562499963],[29.60703125,-5.722656250000028],[29.59414062500005,-5.650781250000037],[29.542382812499994,-5.499804687500017],[29.34277343749997,-4.983105468749997],[29.32343750000004,-4.898828124999966],[29.32568359374997,-4.835644531249969],[29.404199218749994,-4.49667968750002],[29.40322265625005,-4.449316406249963],[29.71777343750003,-4.45585937499996],[29.94726562499997,-4.307324218749983],[30.4,-3.65390625],[30.790234375000097,-3.274609375000011],[30.811132812500006,-3.116406250000011],[30.78027343750003,-2.984863281249957],[30.70947265624997,-2.977246093749997],[30.604296875000074,-2.935253906249969],[30.515039062499994,-2.917578125],[30.45556640625003,-2.893164062500006],[30.433496093749994,-2.874511718750028],[30.424023437500097,-2.82402343749996],[30.473339843750097,-2.6943359375],[30.42421875000005,-2.641601562500014],[30.441992187500006,-2.613476562499969],[30.53369140624997,-2.426269531250014],[30.55361328125005,-2.400097656250011],[30.593359375000063,-2.39677734374996],[30.65664062500005,-2.373828124999989],[30.71484375000003,-2.363476562500011],[30.7625,-2.371679687499991],[30.828710937500006,-2.338476562499977],[30.85498046874997,-2.265429687500017],[30.8765625,-2.143359375000017],[30.864648437499994,-2.044042968749949],[30.819140625000017,-1.967480468749983],[30.812597656250006,-1.56308593750002],[30.76220703124997,-1.458691406249983],[30.710742187500074,-1.396777343749974],[30.631933593750006,-1.36748046874996],[30.508105468750074,-1.208203125000026],[30.47021484374997,-1.13115234374996],[30.47705078124997,-1.0830078125],[30.509960937500097,-1.067285156249994],[30.51992187499999,-1.0625],[30.67275390625005,-1.051367187499949],[30.741992187500017,-1.007519531249997],[30.809179687500063,-0.994921875],[30.82363281250005,-0.999023437499943],[30.84472656250003,-1.002050781250034],[32.371875,-1.002050781250034],[33.90322265625005,-1.002050781250034]]]]},"properties":{"name":"Tanzania","childNum":4}},{"geometry":{"type":"Polygon","coordinates":[[[30.50996093750001,-1.067285156250009],[30.46992187500001,-1.066015625],[30.41230468750001,-1.063085937500006],[30.360253906250023,-1.074609375],[29.930078125000023,-1.469921875000011],[29.82539062500001,-1.335546875],[29.576953125000017,-1.387890625000011],[29.717675781250023,0.098339843749997],[29.934472656250023,0.4990234375],[29.94287109375,0.819238281249994],[31.252734375000017,2.044580078124994],[31.176367187500006,2.270068359374989],[30.728613281250006,2.455371093749989],[30.8466796875,2.847021484374991],[30.754003906250006,3.041796874999989],[30.90644531250001,3.408935546875],[30.83857421875001,3.49072265625],[31.15234375,3.785595703124997],[31.547167968750017,3.677587890624991],[31.79804687500001,3.802636718749994],[32.13593750000001,3.519726562499997],[32.33574218750002,3.706201171874994],[32.99726562500001,3.880175781249989],[33.489355468750006,3.755078125],[33.568457031250006,3.81171875],[33.74160156250002,3.985253906249994],[33.97607421875,4.22021484375],[34.13203125000001,3.88916015625],[34.18574218750001,3.869775390624994],[34.1650390625,3.81298828125],[34.26708984375,3.733154296875],[34.39287109375002,3.691503906249991],[34.43769531250001,3.650585937499997],[34.44179687500002,3.60625],[34.3994140625,3.412695312499991],[34.4072265625,3.357519531249991],[34.447851562500006,3.163476562499994],[34.90576171875,2.4796875],[34.88300781250001,2.417919921874997],[34.96406250000001,2.062402343749994],[34.9775390625,1.861914062499991],[34.97646484375002,1.719628906249994],[34.79863281250002,1.24453125],[34.48173828125002,1.042138671874994],[34.41083984375001,0.867285156249991],[34.16093750000002,0.605175781249997],[33.94316406250002,0.173779296874997],[33.90322265625002,-1.002050781250006],[32.371875,-1.002050781250006],[30.8447265625,-1.002050781250006],[30.823632812500023,-0.9990234375],[30.809179687500006,-0.994921875],[30.741992187500017,-1.007519531250011],[30.672753906250023,-1.051367187500006],[30.598730468750006,-1.069726562500009],[30.519921875000023,-1.0625],[30.50996093750001,-1.067285156250009]]]},"properties":{"name":"Uganda","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[32.01220703124997,46.20390624999999],[32.15009765625004,46.1546875],[31.56386718750005,46.25776367187504],[31.50878906250003,46.373144531250006],[32.01220703124997,46.20390624999999]]],[[[38.21435546875003,47.091455078124966],[37.54335937499999,47.07456054687498],[36.794824218749994,46.71440429687499],[36.55878906250004,46.76269531250006],[35.82714843749997,46.62431640625002],[35.01455078125005,46.10600585937502],[35.280175781249994,46.27949218750001],[35.23037109375005,46.440625],[34.84960937500003,46.189892578124955],[35.02285156250005,45.70097656250002],[35.45751953124997,45.316308593749994],[36.170507812500006,45.453076171874955],[36.575,45.3935546875],[36.39335937500002,45.06538085937501],[35.87011718750003,45.005322265624955],[35.472558593749994,45.098486328125006],[35.08769531250002,44.802636718749966],[34.46992187500004,44.7216796875],[33.909960937500074,44.387597656249966],[33.45068359374997,44.553662109374955],[33.55517578125003,45.09765625000003],[32.5080078125001,45.40380859375006],[33.664843750000074,45.94707031249996],[33.59414062500005,46.09624023437499],[33.42988281250004,46.05761718750003],[33.20224609375006,46.17573242187501],[32.47675781250004,46.08369140625001],[31.83125,46.28168945312501],[32.00849609375004,46.42998046875002],[31.554882812500097,46.554296875000034],[32.36132812499997,46.474951171875034],[32.578027343749994,46.615625],[32.04433593750005,46.642480468749966],[31.75917968750005,47.21284179687501],[31.872851562500017,46.649755859375034],[31.532128906249994,46.66474609374998],[31.56337890625005,46.77729492187501],[31.402929687500063,46.62880859375002],[30.796289062499994,46.55200195312503],[30.219042968750074,45.866748046875045],[29.62841796875003,45.722460937500045],[29.705859375000074,45.25991210937505],[29.567675781250074,45.37080078124998],[29.40371093750005,45.419677734375],[29.22353515625005,45.402929687500034],[28.894335937500017,45.28994140625002],[28.78173828125,45.30986328125002],[28.76660156250003,45.28623046874998],[28.78828125000001,45.240966796875],[28.451269531250006,45.292187499999955],[28.317675781250045,45.347119140624955],[28.2125,45.45043945312506],[28.26484375000004,45.48388671875003],[28.310351562500074,45.49858398437499],[28.499023437500057,45.517724609374994],[28.513769531250034,45.57241210937502],[28.49160156250005,45.66577148437503],[28.562304687500074,45.73579101562501],[28.667578125,45.79384765625002],[28.729296875000074,45.852001953124955],[28.73876953125003,45.937158203124994],[28.84951171875005,45.97866210937502],[28.94775390624997,46.049951171874966],[28.971875,46.12763671874998],[29.00625,46.17646484374998],[28.94375,46.28842773437506],[28.930566406250023,46.36225585937501],[28.92744140625001,46.42412109374999],[28.958398437500023,46.45849609374997],[29.146289062500017,46.52690429687496],[29.186230468750068,46.52397460937499],[29.20078125,46.504980468750034],[29.20458984374997,46.37934570312501],[29.223828125000097,46.37695312499997],[29.458789062500017,46.453759765624994],[29.83789062499997,46.35053710937501],[29.878027343750063,46.360205078125034],[30.07568359375003,46.377832031249966],[30.131054687500097,46.42309570312506],[29.92431640624997,46.53886718750002],[29.934765625000097,46.625],[29.942480468750063,46.72377929687502],[29.918066406250063,46.78242187499998],[29.877832031249994,46.828906250000045],[29.57197265625004,46.96401367187502],[29.455664062500006,47.292626953124994],[29.134863281250006,47.48969726562501],[29.125390625000023,47.96455078125001],[28.42304687500001,48.146875],[28.34052734375001,48.144433593749994],[27.54921875000008,48.47773437500004],[27.22851562500003,48.37143554687506],[26.90058593750001,48.37192382812506],[26.847070312500023,48.387158203124955],[26.640429687500045,48.29414062500001],[26.618945312500017,48.25986328125006],[26.4423828125,48.22998046875],[26.162695312500063,47.992529296875034],[25.90869140625,47.96757812500002],[25.689257812500045,47.93247070312506],[25.46425781250005,47.910791015624994],[24.979101562500063,47.72412109374997],[24.578906250000074,47.93105468750005],[23.628710937500017,47.995849609375],[23.40820312500003,47.98999023437506],[23.20263671875,48.084521484375045],[23.13945312499999,48.08740234375],[22.87666015625001,47.94726562500006],[22.769140625000063,48.109619140625],[22.582421875000023,48.134033203125],[22.253710937500017,48.407373046874994],[22.131835937500057,48.40532226562502],[22.142871093750017,48.568505859374966],[22.295214843750045,48.68583984374999],[22.389453125000045,48.87348632812501],[22.52412109375004,49.03139648437502],[22.538671875,49.07270507812501],[22.847070312500023,49.08125],[22.705664062500006,49.17119140624999],[22.6494140625,49.53901367187498],[22.706152343750006,49.60620117187497],[23.03632812500004,49.899072265624966],[23.711718750000045,50.377343749999966],[23.97265625,50.410058593749966],[24.089941406250006,50.53046874999998],[24.0947265625,50.617041015625034],[23.9970703125,50.809375],[24.095800781250063,50.87275390625001],[23.664453125000023,51.31005859375],[23.61376953125,51.525390625],[23.706835937500045,51.64130859374998],[23.79169921875001,51.63710937500002],[23.864257812500057,51.62397460937501],[23.951171875,51.58505859374998],[23.978320312500017,51.59130859375003],[24.12685546875008,51.664648437500034],[24.280078125000017,51.77470703124999],[24.361914062500006,51.86752929687498],[25.785742187500006,51.923828125],[26.77343750000003,51.77070312499998],[26.952832031249983,51.754003906250034],[27.074121093750023,51.760839843750006],[27.14199218750008,51.75205078124998],[27.29628906250008,51.59741210937503],[27.689746093750017,51.572412109374994],[27.7,51.47797851562501],[27.85859375000004,51.59238281250006],[28.532031250000017,51.56245117187501],[28.59902343750008,51.54262695312505],[28.647753906250074,51.45654296875],[28.690234375000017,51.43886718750005],[28.73125,51.43339843749999],[28.84951171875005,51.540185546874994],[28.927539062500045,51.56215820312502],[28.97773437500004,51.57177734375003],[29.01308593750005,51.59892578124996],[29.06074218750001,51.625439453124955],[29.102050781250057,51.627539062500034],[29.346484375000017,51.38256835937503],[30.160742187500006,51.477880859375006],[30.449511718750017,51.274316406249994],[30.63251953125004,51.35541992187501],[30.61171875000005,51.406347656250006],[30.602343750000017,51.47124023437499],[30.56074218750004,51.531494140625],[30.533007812500017,51.596337890624966],[30.583886718749994,51.68896484375003],[30.667285156250017,51.81411132812502],[30.755273437499994,51.89516601562502],[30.84570312500003,51.95307617187501],[30.980664062500097,52.04619140624996],[31.217968750000097,52.05024414062498],[31.345996093750074,52.10537109375002],[31.57373046875003,52.108105468749955],[31.763378906250097,52.10107421875003],[32.12226562500004,52.05058593749996],[32.435449218749994,52.307226562500034],[33.735253906249994,52.344775390625045],[34.397851562499994,51.780419921874994],[34.12109375000003,51.67915039062498],[34.21386718750003,51.25537109375006],[35.0640625,51.203417968750045],[35.31191406250005,51.043896484374955],[35.59111328125002,50.36875],[36.1164062500001,50.408544921875006],[36.619433593750074,50.209228515625],[37.42285156249997,50.411474609375006],[38.046875,49.92001953125006],[38.258593750000074,50.05234375],[38.91835937499999,49.82470703125],[39.17480468750003,49.85595703124997],[39.780566406250074,49.57202148437503],[40.080664062500006,49.576855468749955],[40.10878906250005,49.251562500000034],[39.68652343749997,49.007910156250034],[40.00361328125004,48.82207031250002],[39.792871093749994,48.807714843750034],[39.6447265625001,48.591210937499966],[39.8356445312501,48.54277343749996],[39.95791015625005,48.268896484375034],[39.77871093750005,47.88754882812506],[38.90029296875005,47.85512695312502],[38.36884765625004,47.609960937500006],[38.21435546875003,47.091455078124966]]]]},"properties":{"name":"Ukraine","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[-57.81059570312499,-30.85859375000001],[-57.872509765625,-30.59101562500001],[-57.831201171874994,-30.495214843750006],[-57.71269531249999,-30.38447265625001],[-57.65087890625,-30.295019531250006],[-57.645751953125,-30.226953125],[-57.60888671875,-30.187792968750003],[-57.55229492187499,-30.26123046875],[-57.21445312499999,-30.28339843750001],[-57.186914062499994,-30.26484375000001],[-57.120507812499994,-30.14443359375001],[-56.83271484375,-30.107226562500003],[-56.4072265625,-30.44746093750001],[-55.998974609375,-30.837207031250003],[-56.018457031249994,-30.99189453125001],[-56.00468749999999,-31.079199218750006],[-55.873681640624994,-31.069628906250003],[-55.6271484375,-30.85810546875001],[-55.60302734375,-30.85078125000001],[-55.55732421875,-30.8759765625],[-55.17353515625,-31.279589843750003],[-55.09116210937499,-31.31396484375],[-55.036035156249994,-31.27900390625001],[-54.587646484375,-31.48515625],[-54.22055664062499,-31.85517578125001],[-53.76171875,-32.05683593750001],[-53.601708984374994,-32.40302734375001],[-53.12558593749999,-32.73671875],[-53.2140625,-32.82109375],[-53.31010742187499,-32.92705078125],[-53.39521484375,-33.010351562500006],[-53.482861328125,-33.06855468750001],[-53.511865234374994,-33.10869140625],[-53.53134765624999,-33.1708984375],[-53.53134765624999,-33.65546875000001],[-53.37060546875,-33.7421875],[-53.419580078124994,-33.77919921875001],[-53.47246093749999,-33.84931640625001],[-53.53452148437499,-34.01748046875001],[-53.742919921875,-34.24951171875],[-53.785302734374994,-34.38037109375],[-54.16855468749999,-34.670703125],[-54.902294921875,-34.93281250000001],[-55.67314453124999,-34.77568359375],[-56.249951171875,-34.90126953125001],[-57.17070312499999,-34.45234375000001],[-57.8291015625,-34.47734375],[-58.40019531249999,-33.91240234375],[-58.363525390625,-33.18232421875001],[-58.08232421874999,-32.893652343750006],[-58.12958984375,-32.75722656250001],[-58.16220703124999,-32.566503906250006],[-58.201171875,-32.4716796875],[-58.123046875,-32.321875],[-58.11972656249999,-32.24892578125001],[-58.164794921875,-32.18486328125],[-58.177001953125,-32.11904296875001],[-58.15634765624999,-32.0515625],[-58.160400390625,-31.98652343750001],[-58.18901367187499,-31.92421875],[-58.16748046875,-31.87265625],[-58.04233398437499,-31.76923828125001],[-58.006982421874994,-31.68496093750001],[-58.053857421874994,-31.494921875],[-58.0333984375,-31.416601562500006],[-57.89335937499999,-31.1953125],[-57.868408203125,-31.10439453125001],[-57.88632812499999,-30.93740234375001],[-57.81059570312499,-30.85859375000001]]]},"properties":{"name":"Uruguay","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-155.58134765624996,19.012011718750017],[-155.88129882812495,19.07050781250001],[-156.04868164062498,19.749951171874983],[-155.82031249999997,20.01416015624997],[-155.83164062499998,20.27583007812501],[-155.198779296875,19.99438476562503],[-154.80419921875,19.524462890625045],[-155.58134765624996,19.012011718750017]]],[[[-156.84960937499997,20.772656249999955],[-156.97338867187497,20.757519531249983],[-157.0505859375,20.912451171875034],[-156.88056640624995,20.904833984375074],[-156.84960937499997,20.772656249999955]]],[[[-156.48681640624994,20.93256835937504],[-156.27753906250004,20.951269531250034],[-155.98984374999998,20.75712890624999],[-156.40878906249998,20.60517578125004],[-156.480078125,20.80122070312501],[-156.69775390625003,20.949072265625034],[-156.58540039062495,21.034326171874994],[-156.48681640624994,20.93256835937504]]],[[[-157.21362304687497,21.215380859375017],[-156.71215820312506,21.155078125000074],[-156.85986328125,21.05634765625004],[-157.29033203124996,21.112597656250017],[-157.21362304687497,21.215380859375017]]],[[[-157.79936523437502,21.456640625000034],[-157.63540039062502,21.30761718749997],[-158.11035156249994,21.318603515625],[-158.27314453125,21.585253906250045],[-157.9625,21.701367187499983],[-157.79936523437502,21.456640625000034]]],[[[-159.37275390625,21.93237304687497],[-159.60883789062495,21.909521484375034],[-159.78916015625003,22.041796875000074],[-159.57919921874998,22.22314453124997],[-159.35205078124997,22.219580078125034],[-159.37275390625,21.93237304687497]]],[[[-81.04418945312503,24.716796875000057],[-81.137353515625,24.710498046875017],[-80.93046875,24.75947265625004],[-81.04418945312503,24.716796875000057]]],[[[-80.3818359375,25.142285156249955],[-80.58056640624997,24.954248046875023],[-80.25708007812497,25.34760742187504],[-80.3818359375,25.142285156249955]]],[[[-97.17070312499996,26.159375],[-97.40209960937494,26.820507812499983],[-97.38598632812494,27.19648437500004],[-97.17070312499996,26.159375]]],[[[-80.18676757812497,27.278417968750034],[-80.17050781250003,27.20478515625004],[-80.43691406249994,27.850537109374955],[-80.18676757812497,27.278417968750034]]],[[[-91.793701171875,29.50073242187497],[-92.00664062499996,29.61030273437501],[-91.875244140625,29.640966796875034],[-91.793701171875,29.50073242187497]]],[[[-84.90791015624998,29.642626953125017],[-85.11674804687499,29.63281249999997],[-84.737158203125,29.732421875],[-84.90791015624998,29.642626953125017]]],[[[-89.22397460937498,30.084082031249977],[-89.34199218749995,30.062841796875006],[-89.18466796874995,30.168652343749983],[-89.22397460937498,30.084082031249977]]],[[[-118.34794921875002,33.3857421875],[-118.29746093750003,33.312109375],[-118.44628906249997,33.317089843749955],[-118.56943359375002,33.46416015624999],[-118.34794921875002,33.3857421875]]],[[[-120.04355468749995,33.918847656249994],[-120.25190429687494,34.01386718749998],[-120.07182617187493,34.026513671874966],[-120.04355468749995,33.918847656249994]]],[[[-119.88237304687497,34.07968749999998],[-119.54926757812497,34.02817382812506],[-119.80957031249997,33.9677734375],[-119.88237304687497,34.07968749999998]]],[[[-75.54414062499995,35.240087890625034],[-75.69008789062502,35.221582031249994],[-75.53637695312497,35.27861328124999],[-75.50351562500003,35.769140625],[-75.46474609374994,35.448632812499966],[-75.54414062499995,35.240087890625034]]],[[[-74.13320312500002,39.680761718750034],[-74.25048828125,39.529394531250006],[-74.10673828124996,39.74643554687498],[-74.13320312500002,39.680761718750034]]],[[[-72.50976562500003,40.98603515625001],[-72.58085937499996,40.92133789062498],[-71.90322265625,41.06069335937505],[-73.19428710937495,40.654199218749994],[-74.01489257812497,40.581201171874966],[-73.87924804687498,40.79165039062502],[-73.573828125,40.91962890624998],[-72.62509765624998,40.99184570312505],[-72.27412109374998,41.15302734375001],[-72.50976562500003,40.98603515625001]]],[[[-69.9779296875,41.26557617187504],[-70.23305664062502,41.28632812500001],[-70.04121093750001,41.3974609375],[-69.9779296875,41.26557617187504]]],[[[-70.50991210937502,41.376318359375034],[-70.82919921874995,41.35898437500006],[-70.61601562499996,41.45722656250001],[-70.50991210937502,41.376318359375034]]],[[[-71.24140625000001,41.49194335937497],[-71.34624023437496,41.469384765624994],[-71.23203124999995,41.654296875],[-71.24140625000001,41.49194335937497]]],[[[-68.18725585937497,44.33247070312501],[-68.41171875000003,44.294335937499966],[-68.29941406249998,44.456494140624955],[-68.18725585937497,44.33247070312501]]],[[[-122.394140625,47.39526367187503],[-122.50991210937497,47.358007812500006],[-122.486474609375,47.48876953125],[-122.394140625,47.39526367187503]]],[[[-122.57275390624999,48.15664062499999],[-122.38315429687499,47.923193359375034],[-122.74150390624999,48.22529296875004],[-122.62861328125,48.38422851562498],[-122.54243164062503,48.29399414062499],[-122.69702148437499,48.228662109374994],[-122.57275390624999,48.15664062499999]]],[[[-94.80346679687497,49.0029296875],[-94.71279296874997,48.863427734374994],[-94.62089843749999,48.74262695312501],[-93.85161132812496,48.607275390625034],[-93.70771484374995,48.52543945312499],[-93.37788085937498,48.61655273437498],[-93.25795898437497,48.62885742187501],[-92.83671875,48.567773437499994],[-92.50058593749995,48.43535156250002],[-92.41459960937493,48.276611328125],[-92.3484375,48.276611328125],[-92.00517578125002,48.301855468750006],[-91.38720703124997,48.05854492187498],[-91.04345703125003,48.19370117187498],[-90.84033203125003,48.20053710937506],[-90.79731445312495,48.13105468750001],[-89.4556640625,47.996240234374994],[-88.37817382812497,48.30307617187498],[-87.74389648437497,48.06054687500003],[-87.20800781249997,47.848486328125006],[-86.67216796874996,47.636425781249955],[-85.65224609375,47.21997070312503],[-85.07006835937497,46.97993164062498],[-84.87597656249994,46.89990234375003],[-84.66577148437503,46.54326171875002],[-84.44047851562496,46.49814453125006],[-84.12319335937497,46.50292968749997],[-83.97778320312503,46.08491210937498],[-83.61596679687503,46.116845703124994],[-83.46948242187503,45.99467773437499],[-83.59267578125,45.81713867187506],[-82.91933593749994,45.51796875000002],[-82.55107421874996,45.34736328125001],[-82.48505859374993,45.08374023437503],[-82.137841796875,43.570898437500034],[-82.19038085937495,43.47407226562501],[-82.54531249999997,42.62470703124998],[-83.10952148437497,42.25068359375001],[-83.141943359375,41.97587890624996],[-82.69003906249995,41.675195312499994],[-82.43906249999998,41.67485351562502],[-81.97416992187496,41.88872070312499],[-81.50732421874997,42.10346679687504],[-81.02822265624997,42.247167968750006],[-80.24755859375,42.36601562499996],[-79.17373046875,42.74853515625],[-78.91508789062496,42.90913085937504],[-78.98076171874993,42.98061523437502],[-79.02617187499996,43.01733398437506],[-79.066064453125,43.10610351562502],[-79.171875,43.466552734375],[-79.00249023437502,43.52714843749999],[-78.845556640625,43.58334960937498],[-78.72041015625001,43.62495117187501],[-78.45825195312497,43.63149414062502],[-77.596533203125,43.62861328124998],[-76.819970703125,43.62880859375002],[-76.18579101562503,44.24223632812502],[-75.81933593749997,44.468017578125],[-75.40126953124997,44.77226562499999],[-74.99614257812496,44.970117187499966],[-74.76245117187494,44.99907226562502],[-74.663232421875,45.00390625000003],[-71.51752929687495,45.00756835937497],[-71.327294921875,45.29008789062496],[-70.86503906249999,45.27070312500001],[-70.296240234375,45.90610351562506],[-70.00771484375002,46.70893554687501],[-69.24287109374998,47.46298828124998],[-69.0501953125,47.426611328125034],[-68.93720703124998,47.21123046875002],[-68.23549804687502,47.34594726562503],[-67.806787109375,47.08281249999999],[-67.80224609374994,45.7275390625],[-67.43266601562496,45.603125],[-67.366943359375,45.17377929687498],[-67.12485351562498,45.16943359375],[-66.98701171874995,44.82768554687502],[-67.191259765625,44.67558593750002],[-67.83906249999998,44.576269531250034],[-68.056640625,44.38432617187502],[-68.15205078124998,44.50200195312499],[-68.45058593749997,44.50761718749999],[-68.53251953124996,44.25864257812498],[-68.81191406249994,44.33935546875],[-68.76269531249994,44.57075195312498],[-69.22607421875003,43.98647460937505],[-69.52075195312503,43.89736328125002],[-69.55668945312496,43.982763671875006],[-69.62392578125,43.88061523437497],[-69.65288085937493,43.99389648437506],[-69.808349609375,43.772314453125034],[-69.965234375,43.855078125],[-70.17880859374998,43.76635742187506],[-70.73310546875001,43.07001953125004],[-70.82905273437493,42.82534179687502],[-70.61293945312497,42.623242187499955],[-71.04619140624993,42.331103515625045],[-70.73828125,42.228857421875006],[-70.42666015625002,41.75727539062501],[-70.00141601562498,41.82617187500003],[-70.24106445312495,42.09121093750002],[-70.10893554687496,42.07832031249998],[-69.97788085937498,41.961279296875006],[-69.94863281249997,41.67714843750005],[-70.65712890625,41.53422851562496],[-70.70112304687498,41.71484375],[-71.1685546875,41.489404296874994],[-71.14873046874996,41.74570312499998],[-71.27109375,41.68125],[-71.39013671875003,41.79531250000005],[-71.52285156249997,41.378955078125045],[-72.92470703125002,41.28515625000003],[-73.98710937499999,40.751367187499994],[-73.87197265625,41.05517578124997],[-73.96992187499995,41.24970703125001],[-73.92719726562495,40.914257812499955],[-74.26420898437496,40.52861328124999],[-73.972265625,40.40034179687498],[-74.079931640625,39.78813476562496],[-74.06459960937497,39.99311523437498],[-74.79448242187499,39.00190429687501],[-74.95429687499995,38.949951171875],[-74.89702148437502,39.14545898437504],[-75.52421874999999,39.49018554687501],[-75.421875,39.78969726562502],[-75.07416992187495,39.98349609375006],[-75.40063476562503,39.83159179687502],[-75.58759765625001,39.64077148437505],[-75.3921875,39.09277343750006],[-75.08867187499999,38.777539062499955],[-75.18710937499995,38.59111328124999],[-75.03876953124993,38.426367187500006],[-75.934375,37.15190429687496],[-75.97504882812498,37.3984375],[-75.65927734374995,37.953955078125034],[-75.850830078125,37.971582031249994],[-75.85869140624999,38.36206054687503],[-76.05122070312495,38.27954101562503],[-76.2646484375,38.436425781249994],[-76.26416015625,38.599951171875006],[-76.016943359375,38.62509765624998],[-76.21298828124998,38.75830078125003],[-76.34116210937498,38.70966796874998],[-76.16816406249998,38.85273437499998],[-76.32958984375,38.95278320312505],[-76.13520507812493,39.082128906250006],[-76.23569335937498,39.19160156250001],[-76.153125,39.315039062500034],[-75.87597656249997,39.3759765625],[-76.003125,39.41083984375001],[-75.87294921874997,39.510888671874966],[-75.95893554687498,39.58505859374998],[-76.2763671875,39.32275390625],[-76.330810546875,39.40390625],[-76.42089843749997,39.225],[-76.57041015624995,39.26933593749996],[-76.42758789062498,39.12602539062499],[-76.55854492187493,39.065234375000045],[-76.39409179687502,38.368994140625034],[-76.67734374999998,38.611962890624966],[-76.66855468749998,38.5375],[-76.34116210937498,38.08701171875006],[-76.86811523437495,38.39028320312502],[-76.88974609375,38.292089843750006],[-77.00117187499995,38.44526367187504],[-77.23251953125,38.40771484375003],[-77.03037109374995,38.88925781249998],[-77.26040039062502,38.6],[-77.27324218749996,38.35175781249998],[-77.04677734375002,38.356689453125],[-76.26425781250003,37.89355468749997],[-76.34414062499997,37.675683593749994],[-76.49248046874999,37.682226562500006],[-77.11108398437497,38.165673828124994],[-76.54946289062494,37.66914062500001],[-76.30556640625,37.57148437500001],[-76.26347656249996,37.35703125],[-76.40097656249998,37.386132812499994],[-76.45390624999993,37.27353515625006],[-76.75771484375002,37.50541992187496],[-76.28330078125,37.05268554687501],[-76.40087890624997,36.991308593750034],[-76.63090820312493,37.22172851562499],[-77.25087890624994,37.329199218750034],[-76.671875,37.172949218750006],[-76.48784179687502,36.89702148437499],[-75.99941406249997,36.91264648437499],[-75.53417968749997,35.81909179687506],[-75.94648437499995,36.65908203125002],[-75.99277343749995,36.47377929687502],[-75.82006835937494,36.11284179687502],[-76.14785156250002,36.279296875],[-76.15,36.14575195312497],[-76.27060546874998,36.18989257812501],[-76.22739257812498,36.11601562499996],[-76.559375,36.015332031249955],[-76.733642578125,36.229150390624994],[-76.726220703125,35.957617187500034],[-76.06977539062501,35.970312500000034],[-76.08359374999998,35.69052734375006],[-75.85390625,35.96015625000001],[-75.75883789062499,35.84326171875],[-75.77392578124997,35.64697265624997],[-76.17382812499997,35.354150390624994],[-76.489501953125,35.397021484375045],[-76.57719726562502,35.53232421874998],[-76.74140624999998,35.431494140625034],[-77.03999023437495,35.527392578125045],[-76.51293945312497,35.270410156249994],[-76.77915039062503,34.990332031250034],[-77.07026367187501,35.154638671875034],[-76.97495117187503,35.025195312500045],[-76.74497070312498,34.94096679687502],[-76.45673828124998,34.989355468750034],[-76.36220703125,34.9365234375],[-76.43979492187498,34.84291992187502],[-77.29624023437503,34.602929687499994],[-77.41225585937497,34.730810546875034],[-77.37978515625,34.526611328125],[-77.750732421875,34.28496093749996],[-77.92783203125,33.93974609374999],[-77.95327148437494,34.16899414062496],[-78.01333007812502,33.91181640624998],[-78.40585937499995,33.91757812499998],[-78.84145507812497,33.72407226562501],[-79.19379882812498,33.24414062500003],[-79.22646484375,33.40488281249998],[-79.27602539062497,33.135400390624966],[-79.80498046874999,32.78740234374996],[-79.93310546874997,32.81005859375006],[-79.94072265625002,32.667138671874966],[-80.36284179687496,32.500732421875],[-80.6341796875,32.51171875000003],[-80.474267578125,32.42275390625002],[-80.579345703125,32.28730468750004],[-80.80253906249999,32.44804687500002],[-80.69423828124997,32.21572265625002],[-81.11328124999997,31.87861328125001],[-81.06611328124995,31.787988281250023],[-81.259375,31.538916015624977],[-81.17543945312494,31.531298828125017],[-81.38095703124998,31.353271484375],[-81.28847656249997,31.263916015625],[-81.441748046875,31.19970703124997],[-81.5162109375,30.801806640625017],[-81.24951171875003,29.793798828125006],[-80.52412109374995,28.48608398437503],[-80.5849609375,28.271582031250034],[-80.456884765625,27.90068359374996],[-80.61000976562494,28.177587890624977],[-80.60693359375003,28.522900390624983],[-80.693505859375,28.34497070312497],[-80.68847656250003,28.578515625000023],[-80.83818359374999,28.757666015625034],[-80.74863281250003,28.381005859375023],[-80.050048828125,26.807714843750063],[-80.1263671875,25.83349609375],[-80.48466796874999,25.229833984375034],[-81.11049804687494,25.138037109374977],[-81.13603515624999,25.309667968750034],[-80.94042968750003,25.264208984375017],[-81.11333007812499,25.367236328125045],[-81.36494140625001,25.83105468750003],[-81.715478515625,25.98315429687503],[-81.95893554687495,26.489941406249983],[-81.82866210937496,26.68706054687499],[-82.03959960937496,26.552050781250017],[-82.01328125,26.96157226562505],[-82.24287109374998,26.848876953125],[-82.44135742187501,27.059667968750034],[-82.71459960937497,27.499609375000063],[-82.40576171874994,27.862890624999977],[-82.67519531249994,27.963769531250023],[-82.61098632812502,27.77724609375005],[-82.74287109374995,27.709375],[-82.84350585937494,27.845996093750017],[-82.65146484375,28.8875],[-83.69438476562502,29.92597656250001],[-84.04423828124996,30.10380859374999],[-84.30966796874995,30.064746093750045],[-84.38281250000003,29.90737304687505],[-85.31894531249995,29.680224609375045],[-85.413818359375,29.76757812499997],[-85.413818359375,29.842480468749955],[-85.31489257812493,29.758105468750017],[-85.35361328125,29.875732421875],[-85.67578125,30.121923828125063],[-85.60351562500003,30.286767578124966],[-85.75581054687495,30.1669921875],[-86.454443359375,30.39912109375004],[-86.12382812499999,30.40581054687499],[-86.25737304687502,30.493017578124977],[-87.201171875,30.339257812499994],[-86.98579101562498,30.43085937500001],[-86.99755859375,30.5703125],[-87.17060546874998,30.538769531249983],[-87.28105468750002,30.339257812499994],[-87.47578124999998,30.294287109375006],[-87.44829101562499,30.394140625],[-87.62226562499998,30.264746093750006],[-88.00595703124998,30.230908203124955],[-87.79028320312503,30.291796875000017],[-88.011328125,30.694189453125006],[-88.13544921874998,30.366601562499994],[-88.90522460937495,30.415136718750006],[-89.32055664062503,30.3453125],[-89.58847656249998,30.165966796874955],[-90.12597656249997,30.369091796874955],[-90.33198242187493,30.277587890625057],[-90.41303710937501,30.140332031249983],[-90.17534179687499,30.02910156249996],[-89.73745117187497,30.171972656250034],[-89.66503906249994,30.117041015625034],[-89.81518554687497,30.007275390624955],[-89.631689453125,29.90380859375003],[-89.400732421875,30.04604492187505],[-89.35444335937501,29.82021484375005],[-89.72089843749995,29.619287109374966],[-89.01572265625,29.202880859375057],[-89.15551757812497,29.01660156250003],[-89.23608398437494,29.081103515625017],[-89.37612304687497,28.981347656250023],[-89.44316406249996,29.194140625000045],[-90.15908203124997,29.537158203125017],[-90.05278320312499,29.336816406249966],[-90.21279296875,29.104931640624983],[-90.37919921874996,29.29511718750001],[-90.75102539062496,29.13085937500003],[-91.29013671875,29.288964843749994],[-91.15078124999994,29.317919921875045],[-91.24882812499993,29.56420898437503],[-91.51420898437499,29.55537109375001],[-91.8931640625,29.836035156249977],[-92.135498046875,29.699462890625057],[-92.08403320312499,29.59282226562499],[-92.26083984374995,29.55683593750004],[-93.17568359375,29.778955078124994],[-93.82646484374999,29.725146484375045],[-93.84145507812502,29.97973632812503],[-93.89047851562495,29.689355468750023],[-94.759619140625,29.384277343750057],[-94.52626953125,29.547949218750006],[-94.77827148437498,29.54785156249997],[-94.74194335937497,29.75],[-95.0228515625,29.70234375000001],[-94.88828125000003,29.37055664062501],[-95.27348632812499,28.96386718750003],[-96.23452148437502,28.488964843749983],[-96.01103515624996,28.631933593749977],[-96.44873046874997,28.594482421875],[-96.64003906249994,28.708789062500017],[-96.42109374999993,28.457324218750045],[-96.67636718749998,28.34130859375003],[-96.77353515624998,28.421630859375057],[-96.839501953125,28.194384765625017],[-97.156494140625,28.144335937500045],[-97.141259765625,28.060742187499983],[-97.034326171875,28.093847656250063],[-97.07309570312498,27.98608398437503],[-97.43149414062498,27.83720703124999],[-97.28872070312494,27.670605468749983],[-97.43911132812502,27.328271484374966],[-97.76845703124997,27.45751953125],[-97.69238281250003,27.287158203125017],[-97.48510742187497,27.237402343750006],[-97.55468749999994,26.96733398437496],[-97.43505859375,26.48583984375003],[-97.14624023437494,25.961474609375045],[-97.37563476562497,25.871826171875],[-99.10776367187498,26.446923828124994],[-99.45654296874999,27.05668945312496],[-99.50532226562497,27.54833984375003],[-100.29604492187495,28.32768554687499],[-100.75458984375001,29.182519531249994],[-101.44038085937503,29.77685546875],[-102.26894531249998,29.871191406250034],[-102.61494140624994,29.75234375],[-102.8919921875,29.216406250000034],[-103.16831054687498,28.998193359374994],[-104.110595703125,29.386132812499994],[-104.50400390624995,29.677685546874955],[-104.97880859374996,30.645947265624955],[-106.14804687499995,31.450927734375],[-106.44541015624996,31.768408203125006],[-108.21181640625002,31.779345703125017],[-108.21445312499993,31.329443359375034],[-111.0419921875,31.32421875000003],[-114.83593749999994,32.50830078125003],[-114.72475585937495,32.71533203125003],[-117.12827148437495,32.533349609374994],[-117.46743164062495,33.295507812500006],[-118.08051757812497,33.72216796874997],[-118.41044921874996,33.74394531249996],[-118.506201171875,34.01738281249999],[-119.14375,34.11201171874998],[-119.60605468749999,34.41801757812499],[-120.48120117187503,34.47163085937498],[-120.64467773437502,34.57998046875002],[-120.65908203124994,35.122412109375034],[-120.85737304687501,35.209667968749955],[-120.899609375,35.42509765624999],[-121.28383789062494,35.67631835937499],[-121.87739257812498,36.33105468749997],[-121.80742187499995,36.851220703124994],[-122.394921875,37.20751953125003],[-122.49921875000001,37.542626953124994],[-122.44560546875002,37.797998046874966],[-122.07050781249998,37.47827148437503],[-122.38544921875001,37.960595703124966],[-122.31425781249999,38.00732421874997],[-121.52534179687503,38.05590820312503],[-122.39335937499995,38.14482421875002],[-122.52133789062499,37.82641601562497],[-122.93198242187498,38.05546875000002],[-122.998779296875,37.98862304687498],[-122.90815429687501,38.19658203124999],[-123.701123046875,38.90727539062502],[-123.83291015624994,39.775488281250034],[-124.35654296875003,40.37109374999997],[-124.07192382812497,41.45952148437502],[-124.53964843750003,42.812890624999966],[-124.14873046874997,43.691748046875034],[-123.92934570312495,45.57695312499996],[-123.989306640625,46.21938476562502],[-123.22060546874998,46.153613281250045],[-123.46484375,46.27109374999998],[-124.07275390624996,46.279443359374994],[-124.04433593750002,46.605078125],[-123.946142578125,46.43256835937501],[-123.88916015625003,46.660009765625006],[-124.11254882812497,46.862695312499994],[-123.84287109375002,46.963183593750045],[-124.11171875,47.03520507812496],[-124.1392578125,46.95468749999998],[-124.376025390625,47.658642578124955],[-124.66308593749996,47.97412109375003],[-124.7099609375,48.38037109375],[-123.97578125,48.16845703125],[-122.97387695312499,48.07329101562496],[-122.77861328125,48.13759765625002],[-122.65664062500002,47.88115234374999],[-122.77841796874996,47.738427734374966],[-122.82138671875,47.79316406250001],[-123.1390625,47.386083984375034],[-122.92216796874993,47.40766601562498],[-123.066796875,47.39965820312506],[-123.04863281249995,47.479345703125034],[-122.53281250000002,47.919726562500045],[-122.67548828124995,47.612353515625045],[-122.57788085937496,47.29316406250001],[-122.76777343750001,47.21835937500006],[-122.82846679687503,47.336572265624994],[-123.02758789062501,47.13891601562503],[-122.70195312500002,47.11088867187502],[-122.35380859374996,47.37158203125],[-122.40180664062497,47.78427734374998],[-122.24199218750002,48.01074218750003],[-122.5169921875,48.15966796874997],[-122.40854492187502,48.29389648437498],[-122.66899414062496,48.465234374999966],[-122.49677734374995,48.50556640625001],[-122.51274414062502,48.66943359375],[-122.56201171875001,48.777978515624994],[-122.68593749999995,48.794287109375034],[-122.72246093750002,48.85302734375003],[-122.78876953125003,48.993017578125034],[-121.40722656249994,48.993017578125034],[-119.70170898437495,48.993017578125034],[-119.27534179687494,48.99306640625005],[-118.84892578124993,48.99306640625005],[-117.99619140625002,48.99306640625005],[-116.71704101562501,48.99306640625005],[-110.74765625,48.99306640625005],[-104.77832031249997,48.993115234374955],[-98.80898437499995,48.99316406249997],[-97.52983398437493,48.99316406249997],[-96.67705078124993,48.99316406249997],[-96.25068359374993,48.99316406249997],[-95.39790039062493,48.99316406249997],[-95.16206054687493,48.991748046875045],[-95.15527343749997,49.36967773437502],[-94.85434570312495,49.304589843749994],[-94.86040039062493,49.258593750000045],[-94.80346679687497,49.0029296875]]],[[[-176.28671874999998,51.79199218750006],[-176.34965820312502,51.733300781249994],[-176.41372070312502,51.840576171875],[-176.28671874999998,51.79199218750006]]],[[[-177.87905273437502,51.64970703125002],[-178.05888671875,51.67260742187497],[-177.98637695312493,51.76425781249998],[-178.16826171874996,51.90302734375001],[-177.644482421875,51.826269531250006],[-177.87905273437502,51.64970703125002]]],[[[-177.14819335937497,51.71674804687498],[-177.67021484375002,51.701074218749994],[-177.11005859375,51.92875976562502],[-177.14819335937497,51.71674804687498]]],[[[-176.593310546875,51.86669921875],[-176.45234374999995,51.735693359375034],[-176.96162109374998,51.60366210937505],[-176.69833984374998,51.986035156249955],[-176.593310546875,51.86669921875]]],[[[179.72773437500015,51.905419921874966],[179.50390625000003,51.97958984374998],[179.6271484375001,52.03041992187502],[179.72773437500015,51.905419921874966]]],[[[177.4154296875,51.88281249999997],[177.25029296875013,51.902929687500006],[177.6696289062501,52.10302734375],[177.4154296875,51.88281249999997]]],[[[-173.5533203125,52.13627929687502],[-173.02290039062504,52.07915039062502],[-173.83579101562498,52.048193359375006],[-173.99248046874993,52.12333984374996],[-173.5533203125,52.13627929687502]]],[[[-172.464794921875,52.27226562500002],[-172.61982421874998,52.27285156250005],[-172.47041015625,52.38803710937506],[-172.31362304687497,52.32958984375006],[-172.464794921875,52.27226562500002]]],[[[-174.67739257812502,52.035009765625006],[-175.29555664062502,52.022167968749955],[-174.30615234375,52.216162109375034],[-174.43554687499997,52.317236328125034],[-174.168896484375,52.42016601562503],[-174.04560546875,52.36723632812499],[-174.12065429687493,52.13520507812498],[-174.67739257812502,52.035009765625006]]],[[[173.72275390625018,52.35957031250004],[173.40234375000009,52.40478515625],[173.77607421875004,52.49511718750003],[173.72275390625018,52.35957031250004]]],[[[172.81181640625002,53.01298828125002],[173.43603515625003,52.85205078125],[172.93515625000012,52.752099609374966],[172.49482421875004,52.93789062499999],[172.81181640625002,53.01298828125002]]],[[[-167.96435546875003,53.345117187499994],[-169.088916015625,52.83203125],[-168.68984375000002,53.227246093749955],[-168.38041992187496,53.28344726562506],[-168.28769531249998,53.500146484374966],[-167.82807617187495,53.50795898437505],[-167.96435546875003,53.345117187499994]]],[[[-166.61533203124998,53.90092773437499],[-166.37231445312494,53.99897460937498],[-166.230859375,53.93261718750006],[-166.54560546875,53.726464843749966],[-166.354541015625,53.67353515625004],[-166.85097656249997,53.45288085937503],[-167.78085937500003,53.30024414062501],[-167.13608398437503,53.526464843750006],[-167.01572265625003,53.69838867187502],[-166.80898437500002,53.64614257812505],[-166.741259765625,53.71293945312496],[-167.10561523437497,53.813378906249994],[-167.03808593749997,53.9421875],[-166.67329101562498,54.00595703124998],[-166.61533203124998,53.90092773437499]]],[[[-165.841552734375,54.070654296875006],[-166.05664062500003,54.054345703124994],[-166.08774414062498,54.16914062500001],[-165.89287109375,54.20698242187498],[-165.69287109375,54.09990234375002],[-165.841552734375,54.070654296875006]]],[[[-165.56113281249998,54.13671874999997],[-165.55063476562498,54.28452148437498],[-165.40786132812502,54.19682617187496],[-165.56113281249998,54.13671874999997]]],[[[-162.29814453124993,54.847021484375006],[-162.43388671875,54.931542968749994],[-162.26459960937504,54.983496093750006],[-162.29814453124993,54.847021484375006]]],[[[-163.476025390625,54.98071289062497],[-163.37895507812496,54.81552734374998],[-163.083251953125,54.66899414062496],[-163.35810546874995,54.73569335937506],[-164.82343749999998,54.41909179687505],[-164.887646484375,54.60781250000002],[-164.47861328124998,54.906835937500006],[-163.80712890624997,55.04907226562503],[-163.476025390625,54.98071289062497]]],[[[-159.51513671875,55.15185546875003],[-159.617724609375,55.05732421875004],[-159.54506835937497,55.22597656250002],[-159.51513671875,55.15185546875003]]],[[[-131.33974609375002,55.079833984375],[-131.32954101562498,54.887744140625045],[-131.592236328125,55.02568359374999],[-131.5654296875,55.26411132812498],[-131.33974609375002,55.079833984375]]],[[[-159.87299804687495,55.128759765625034],[-160.22705078124997,54.92270507812506],[-160.17207031249995,55.123046875],[-159.88735351562497,55.27299804687502],[-159.87299804687495,55.128759765625034]]],[[[-132.86225585937504,54.894433593749966],[-132.61723632812493,54.892431640625006],[-132.70581054687497,54.684179687500034],[-133.42905273437498,55.30380859374998],[-133.097412109375,55.213720703125006],[-132.86225585937504,54.894433593749966]]],[[[-160.329296875,55.337695312500045],[-160.34331054687493,55.25878906250006],[-160.51748046875,55.33383789062506],[-160.329296875,55.337695312500045]]],[[[-160.68491210937498,55.314794921875006],[-160.552783203125,55.38076171875002],[-160.48754882812503,55.18486328124999],[-160.79506835937497,55.14521484375001],[-160.72392578124993,55.404638671875006],[-160.68491210937498,55.314794921875006]]],[[[-133.30507812500002,55.54375],[-133.6501953125,55.26928710937506],[-133.73710937500002,55.49692382812498],[-133.30507812500002,55.54375]]],[[[-155.56601562500003,55.82119140625005],[-155.73735351562493,55.82978515625001],[-155.59394531250004,55.92431640625],[-155.56601562500003,55.82119140625005]]],[[[-130.97915039062502,55.489160156249994],[-131.187890625,55.206298828125],[-131.44755859374996,55.40878906250006],[-131.7625,55.16582031250002],[-131.84609374999997,55.41625976562497],[-131.62495117187504,55.831689453124966],[-131.26923828125004,55.95537109375002],[-130.997802734375,55.727636718750006],[-130.97915039062502,55.489160156249994]]],[[[-133.56611328125,56.33920898437498],[-133.202978515625,56.31982421875003],[-133.096630859375,56.09003906250001],[-132.59760742187504,55.89501953125],[-132.17270507812498,55.48061523437502],[-132.51127929687493,55.59394531250001],[-132.63129882812495,55.47319335937502],[-132.41787109375002,55.48291015625006],[-132.20668945312497,55.22441406249996],[-131.97641601562498,55.208593750000034],[-132.06474609375002,54.713134765625],[-133.11855468750002,55.32763671875003],[-132.95888671875002,55.39555664062502],[-133.0333984375,55.589697265625034],[-133.68017578124994,55.78515625],[-133.24150390624993,55.920800781249994],[-133.371240234375,56.035888671875],[-133.74252929687498,55.96484375],[-133.530859375,56.145654296874966],[-133.56611328125,56.33920898437498]]],[[[-132.77988281249998,56.24726562499998],[-133.03500976562498,56.34091796875006],[-132.90205078124998,56.45375976562505],[-132.62910156249995,56.411914062500045],[-132.77988281249998,56.24726562499998]]],[[[-132.11235351562493,56.109375],[-132.13295898437497,55.94326171875005],[-132.28730468749995,55.92939453124998],[-132.65991210937503,56.07817382812499],[-132.379833984375,56.49877929687497],[-132.06689453125,56.24423828124998],[-132.11235351562493,56.109375]]],[[[-154.208642578125,56.51489257812497],[-154.32221679687504,56.570605468750045],[-154.11040039062496,56.602929687499966],[-154.208642578125,56.51489257812497]]],[[[-169.755224609375,56.63505859375002],[-169.47431640624998,56.59404296875002],[-169.6326171875,56.545703125000045],[-169.755224609375,56.63505859375002]]],[[[-132.746875,56.525683593750045],[-132.94804687500002,56.56723632812498],[-132.842529296875,56.79477539062506],[-132.56796875000003,56.57583007812505],[-132.746875,56.525683593750045]]],[[[-133.98959960937503,56.84497070312497],[-133.73837890625,56.65043945312496],[-133.94970703125,56.12773437499996],[-134.18959960937502,56.07695312500002],[-134.084375,56.456347656250045],[-134.37368164062502,56.838671875000045],[-134.14326171874998,56.93232421875001],[-133.98959960937503,56.84497070312497]]],[[[-133.36621093750006,57.003515625000034],[-132.99624023437497,56.93041992187497],[-132.95917968749998,56.67705078124996],[-133.03491210937494,56.62075195312505],[-133.32895507812498,56.83007812499997],[-133.158154296875,56.495166015625045],[-133.4841796875,56.45175781249998],[-133.979443359375,57.009570312500045],[-133.36621093750006,57.003515625000034]]],[[[-153.007080078125,57.12485351562498],[-153.37460937499998,57.05190429687505],[-153.285205078125,57.18505859375],[-152.90839843750004,57.152441406250006],[-153.007080078125,57.12485351562498]]],[[[-134.96977539062496,57.351416015625034],[-134.62070312499998,56.71831054687502],[-134.68188476562503,56.216162109375034],[-134.98056640625003,56.518945312499994],[-134.88344726562497,56.679052734375034],[-135.33061523437505,56.821875],[-135.19960937499997,57.02734375],[-135.45493164062503,57.24941406250005],[-135.81230468750002,57.00952148437503],[-135.82275390625,57.280419921874966],[-135.448681640625,57.534375],[-134.96977539062496,57.351416015625034]]],[[[-152.89804687499998,57.82392578125004],[-152.42875976562493,57.82568359375003],[-152.48261718749998,57.70332031249998],[-152.21621093749997,57.577001953125006],[-152.41220703125003,57.454785156249955],[-152.94077148437498,57.49809570312499],[-152.67905273437503,57.345117187499994],[-153.274365234375,57.22636718749996],[-153.732568359375,57.052343750000034],[-153.643310546875,56.960742187500045],[-154.02734375,56.77797851562502],[-153.793212890625,56.98950195312503],[-154.24375,57.143017578124955],[-154.33896484374998,56.9208984375],[-154.67319335937498,57.44609375],[-154.11616210937498,57.651220703125006],[-153.6876953125,57.30512695312504],[-153.841552734375,57.86284179687496],[-153.48793945312497,57.73095703125],[-153.21748046875004,57.79575195312506],[-153.16044921875,57.97197265624999],[-152.85039062499993,57.896777343750045],[-152.89804687499998,57.82392578125004]]],[[[-135.73037109375002,58.244238281250034],[-135.61323242187507,57.99184570312505],[-135.346630859375,58.12412109374998],[-134.9546875,58.01533203125004],[-134.97065429687495,57.817236328125006],[-135.33847656250003,57.768652343750034],[-134.97885742187503,57.724365234375],[-134.93149414062498,57.48115234375001],[-135.564208984375,57.66640625],[-135.691943359375,57.41992187500006],[-135.91079101562502,57.44658203124999],[-136.568603515625,57.97216796875003],[-136.32197265625,58.21889648437502],[-136.14375,58.098486328125006],[-136.09438476562502,58.198144531249966],[-135.73037109375002,58.244238281250034]]],[[[-134.68027343749998,58.16166992187499],[-134.24008789062498,58.143994140624955],[-133.82275390624997,57.62866210937503],[-134.29233398437498,58.044726562500074],[-133.91113281250003,57.3525390625],[-134.51601562499997,57.042578125],[-134.48676757812495,57.48203125],[-134.92348632812497,58.354638671874966],[-134.68027343749998,58.16166992187499]]],[[[-152.416943359375,58.360205078125034],[-151.974365234375,58.30986328124999],[-152.068896484375,58.17792968750001],[-152.26835937499993,58.25170898437506],[-152.30922851562502,58.133886718750034],[-152.5982421875,58.16259765625],[-152.92841796875004,57.99370117187499],[-153.38134765625003,58.08720703125002],[-152.976123046875,58.29702148437505],[-152.771875,58.278564453125],[-152.84111328125002,58.41640625000002],[-152.416943359375,58.360205078125034]]],[[[-152.486083984375,58.485009765624966],[-152.63662109375002,58.54169921874998],[-152.3955078125,58.619384765625],[-152.486083984375,58.485009765624966]]],[[[-160.918994140625,58.57709960937498],[-161.13149414062502,58.668212890625],[-160.71513671875005,58.79521484375002],[-160.918994140625,58.57709960937498]]],[[[-148.02177734375,60.06533203125005],[-148.271875,60.05327148437499],[-148.07958984375003,60.151660156250045],[-148.02177734375,60.06533203125005]]],[[[-147.735888671875,59.81323242187503],[-147.76806640625,59.94375],[-147.180859375,60.358251953125034],[-147.01987304687498,60.33222656249998],[-147.735888671875,59.81323242187503]]],[[[-166.13544921875,60.38354492187503],[-165.72968750000004,60.31420898437503],[-165.591796875,59.913134765625045],[-166.14873046874996,59.764111328124955],[-167.13886718749998,60.00854492187503],[-167.43642578125002,60.20664062500006],[-166.836328125,60.21699218750004],[-166.47568359374998,60.382763671874955],[-166.13544921875,60.38354492187503]]],[[[-146.3939453125,60.44965820312501],[-146.10224609374998,60.41118164062499],[-146.61831054687497,60.27368164062503],[-146.70253906249997,60.40854492187498],[-146.3939453125,60.44965820312501]]],[[[-147.658251953125,60.45048828124999],[-147.787841796875,60.17792968749998],[-147.89145507812498,60.299414062500034],[-147.658251953125,60.45048828124999]]],[[[-172.74223632812496,60.45737304687498],[-172.23208007812494,60.299121093750074],[-172.63574218750003,60.328857421875],[-173.04765625000002,60.56831054687501],[-172.74223632812496,60.45737304687498]]],[[[-171.46303710937494,63.640039062499994],[-171.03486328125,63.58549804687499],[-170.29936523437502,63.68061523437501],[-169.55454101562498,63.373486328124955],[-168.71601562500004,63.310595703125045],[-168.76132812500003,63.21376953125002],[-169.364697265625,63.17114257812506],[-169.67636718750003,62.95610351562502],[-169.81860351562494,63.122363281250045],[-170.84838867187494,63.44438476562502],[-171.63183593749997,63.351220703124966],[-171.74638671874993,63.703076171874955],[-171.46303710937494,63.640039062499994]]],[[[-141.00214843750004,68.77416992187506],[-141.00214843750004,67.89755859374998],[-141.00214843750004,66.43652343750006],[-141.00214843750004,65.55991210937498],[-141.00214843750004,64.09887695312506],[-141.00214843750004,63.22226562499998],[-141.00214843750004,61.761279296875045],[-141.00214843750004,60.884667968749994],[-141.00214843750004,60.30024414062504],[-140.76274414062505,60.259130859375006],[-140.525439453125,60.218359375000034],[-140.45283203125004,60.29970703125002],[-139.97329101562497,60.183154296875074],[-139.67631835937505,60.32832031249998],[-139.23476562499997,60.339746093749994],[-139.07924804687497,60.34370117187501],[-139.07924804687497,60.279443359374966],[-139.136962890625,60.17270507812498],[-139.18515624999998,60.083593750000034],[-138.86875,59.94575195312501],[-138.317626953125,59.611132812500074],[-137.59331054687493,59.22626953124998],[-137.52089843750002,58.91538085937498],[-137.43857421875003,58.903125],[-137.2775390625,58.988183593749994],[-137.126220703125,59.04096679687498],[-136.81328125000002,59.150048828124994],[-136.57875976562502,59.15224609375002],[-136.46635742187493,59.459082031250006],[-136.27797851562502,59.48032226562506],[-136.321826171875,59.604833984375034],[-135.70258789062504,59.72875976562506],[-135.36787109374998,59.743310546874994],[-135.051025390625,59.57866210937502],[-134.94375,59.28828125000001],[-134.67724609374997,59.19926757812499],[-134.39306640625,59.009179687499994],[-134.32963867187505,58.93969726562506],[-134.21850585937503,58.849902343750045],[-133.54638671874997,58.50346679687499],[-133.27529296875,58.22285156250004],[-133.00141601562495,57.948974609375],[-132.55048828125,57.499902343749994],[-132.44248046874998,57.40673828125003],[-132.30166015624997,57.27631835937501],[-132.232177734375,57.19853515624999],[-132.27939453124998,57.14536132812498],[-132.33798828124998,57.07944335937506],[-132.15703125,57.048193359375006],[-132.03154296875,57.02656250000004],[-132.062890625,56.95336914062503],[-132.104296875,56.856787109375006],[-131.86616210937495,56.792822265625006],[-131.82426757812496,56.589990234374994],[-131.471875,56.55673828125006],[-130.649072265625,56.26367187500003],[-130.47709960937496,56.230566406250034],[-130.413134765625,56.12250976562498],[-130.09785156249995,56.10927734375002],[-130.01406249999997,55.950537109375006],[-130.2140625,55.02587890625003],[-130.57534179687497,54.769677734374966],[-130.849609375,54.80761718750006],[-131.04785156249997,55.157666015624955],[-130.74819335937502,55.31801757812502],[-131.127685546875,55.96015625000001],[-131.032763671875,56.08808593749998],[-131.78417968749997,55.876562500000034],[-131.98339843749994,55.535009765625006],[-132.15541992187502,55.59956054687501],[-132.20751953124997,55.75341796875],[-131.84384765625003,56.16010742187498],[-131.55136718749998,56.206787109375],[-131.88789062500004,56.24165039062498],[-132.18203125000002,56.42065429687506],[-132.82460937500002,57.05581054687505],[-133.465869140625,57.17216796875002],[-133.64873046874993,57.64228515624998],[-133.11704101562498,57.56621093750002],[-133.535205078125,57.83295898437501],[-133.1943359375,57.87768554687506],[-133.559375,57.924462890624994],[-133.72231445312502,57.84423828125],[-134.03110351562498,58.072167968749966],[-133.87675781249996,58.51816406249998],[-134.20883789062503,58.232958984375045],[-134.77612304687506,58.45385742187503],[-135.36367187500002,59.41943359375],[-135.50234375000002,59.202294921874994],[-135.090234375,58.245849609375],[-135.57177734374994,58.41206054687504],[-135.89755859374998,58.40019531250002],[-136.04311523437497,58.82163085937498],[-135.82636718750004,58.89794921874997],[-136.0166015625,58.87397460937498],[-136.150048828125,59.04809570312503],[-136.22583007812497,58.765478515625006],[-136.98901367187503,59.03447265624999],[-137.05903320312498,58.87373046875001],[-136.613916015625,58.809277343749955],[-136.48374023437503,58.61767578125],[-136.224609375,58.602246093749955],[-136.06147460937495,58.45273437500006],[-136.607421875,58.24399414062498],[-137.54399414062502,58.58120117187502],[-138.51489257812503,59.16591796875005],[-139.77329101562498,59.52729492187504],[-139.51303710937498,59.698095703125006],[-139.5123046875,59.95356445312501],[-139.28671874999998,59.610937500000034],[-139.22080078125003,59.819873046875045],[-138.9880859375,59.83500976562502],[-139.43144531249996,60.012255859375074],[-140.41982421874997,59.71074218750002],[-141.40830078125,59.90278320312498],[-141.408740234375,60.11767578125006],[-141.67016601562497,59.969873046874966],[-142.94565429687503,60.09697265625002],[-144.14721679687494,60.01640625000002],[-144.185498046875,60.150732421875034],[-144.901318359375,60.335156249999955],[-144.69111328125,60.66909179687502],[-145.248291015625,60.38012695312506],[-145.898876953125,60.47817382812505],[-145.67490234374998,60.65112304687503],[-146.57045898437497,60.72915039062502],[-146.39199218749997,60.810839843750045],[-146.63842773437497,60.89731445312498],[-146.59912109374994,61.05351562500002],[-146.284912109375,61.11264648437498],[-147.89111328125,60.889892578125],[-148.00512695312494,60.96855468750002],[-147.75185546874997,61.218945312499955],[-148.34189453125,61.060400390625006],[-148.34443359374998,60.853564453125045],[-148.55615234374994,60.82700195312506],[-148.25673828124997,60.67529296874997],[-148.64013671875,60.48945312500004],[-148.11918945312502,60.57514648437498],[-147.96411132812494,60.48486328124997],[-148.430712890625,59.98911132812498],[-149.2666015625,59.99829101562497],[-149.395263671875,60.10576171875002],[-149.59804687500002,59.77045898437501],[-149.7138671875,59.91958007812502],[-149.80126953124994,59.737939453124966],[-150.00532226562507,59.78442382812503],[-150.19804687499996,59.56655273437505],[-150.60737304687504,59.56337890625002],[-150.934521484375,59.249121093750034],[-151.18276367187502,59.30078124999997],[-151.73818359375002,59.18852539062502],[-151.94951171875,59.26508789062498],[-151.88461914062503,59.386328125],[-151.39960937499995,59.51630859375001],[-151.04648437499998,59.771826171875034],[-151.45009765624997,59.65039062499997],[-151.85322265625,59.78208007812498],[-151.39599609375006,60.27446289062502],[-151.35644531249997,60.72294921874999],[-150.44125976562503,61.02358398437505],[-149.07509765624997,60.87641601562498],[-150.05327148437496,61.17109374999998],[-149.433544921875,61.50078125000002],[-149.97568359374998,61.27934570312502],[-150.61225585937495,61.301123046875006],[-151.59350585937494,60.979638671874966],[-152.54091796874997,60.265429687500045],[-153.025,60.29565429687497],[-152.660107421875,59.99721679687502],[-153.21123046875002,59.84272460937498],[-153.09360351562503,59.70913085937505],[-153.65253906250004,59.64702148437499],[-154.17832031250003,59.155566406250074],[-153.41826171875,58.9599609375],[-153.43759765625003,58.754833984374955],[-154.289013671875,58.30434570312502],[-154.247021484375,58.15942382812497],[-155.006884765625,58.01606445312501],[-155.77797851562497,57.56821289062498],[-156.43588867187498,57.359960937500006],[-156.62900390624998,57.00996093750001],[-158.41440429687498,56.435839843750045],[-158.5521484375,56.31269531249998],[-158.27563476562497,56.19624023437498],[-158.5046875,56.062109375],[-158.59116210937503,56.18452148437498],[-158.78984375000002,55.98691406250006],[-159.52324218749993,55.81000976562498],[-159.65966796875003,55.625927734374955],[-159.77138671874997,55.84111328125002],[-160.49931640625002,55.53730468750004],[-161.38193359374998,55.371289062499955],[-161.44379882812495,55.513281250000034],[-161.202099609375,55.54355468750006],[-161.51694335937503,55.61840820312503],[-162.073974609375,55.13930664062505],[-162.38637695312497,55.05234375],[-162.63037109375003,55.24667968749998],[-162.67436523437505,54.99658203125],[-162.86503906249996,54.954541015624955],[-163.11962890624997,55.06469726562503],[-163.131103515625,54.916552734375045],[-163.33530273437503,54.83916015624999],[-163.27880859374997,55.12182617187503],[-162.906591796875,55.19555664062503],[-161.69731445312502,55.9072265625],[-161.215625,56.02143554687498],[-160.8986328125,55.99365234375],[-161.00537109375,55.88715820312498],[-160.80283203125003,55.754443359375045],[-160.70634765625002,55.870458984375034],[-160.29169921875,55.80507812500005],[-160.53906250000006,56.00629882812501],[-160.30205078125,56.31411132812502],[-158.91801757812502,56.882177734375006],[-158.675146484375,56.79487304687498],[-158.66079101562502,57.03940429687498],[-158.32094726562497,57.29790039062499],[-157.84575195312496,57.52807617187497],[-157.4619140625,57.506201171875034],[-157.697216796875,57.679443359375],[-157.610888671875,58.050830078125074],[-157.19370117187498,58.19418945312506],[-157.48837890624998,58.25371093750002],[-157.52363281249998,58.421337890624955],[-156.97465820312496,58.736328125],[-156.80888671875005,59.13427734375],[-157.14204101562504,58.87763671875001],[-158.19091796875003,58.6142578125],[-158.50317382812494,58.85034179687497],[-158.42563476562498,58.99931640625002],[-158.080517578125,58.97744140625002],[-158.422802734375,59.08984375],[-158.67827148437502,58.92939453124998],[-158.80947265625002,58.973876953125],[-158.78862304687493,58.440966796875045],[-158.95068359375,58.404541015625],[-159.67026367187498,58.9111328125],[-159.92021484375,58.819873046875074],[-160.36313476562498,59.05117187500002],[-161.246826171875,58.799462890624994],[-161.36132812499994,58.66953124999998],[-162.144921875,58.64423828124998],[-161.724365234375,58.794287109375006],[-161.64438476562498,59.109667968750045],[-161.9810546875,59.14614257812502],[-161.82871093749998,59.588623046875],[-162.421337890625,60.28398437500002],[-161.96201171875003,60.695361328125045],[-162.68496093749997,60.268945312499966],[-162.57075195312495,59.98974609375],[-163.68037109374998,59.80151367187503],[-164.14282226562497,59.89677734374999],[-165.02651367187497,60.500634765624994],[-165.35380859375002,60.54121093750001],[-164.80517578125,60.89204101562498],[-164.31850585937497,60.77128906249999],[-164.37236328125002,60.59184570312502],[-163.999560546875,60.76606445312498],[-163.72998046874997,60.589990234374994],[-163.420947265625,60.757421875],[-163.90654296874996,60.85380859375002],[-163.58691406249994,60.902978515624994],[-163.74902343750003,60.9697265625],[-163.99462890624997,60.86469726562501],[-165.11484375,60.93281250000004],[-164.86899414062503,61.11176757812498],[-165.27978515624994,61.169628906249955],[-165.27363281250004,61.27485351562498],[-165.56586914062498,61.10234375000002],[-165.86396484375004,61.33569335937503],[-165.84531249999998,61.536230468750034],[-166.152734375,61.545947265625074],[-166.16811523437502,61.65083007812501],[-165.80893554687503,61.69609375000002],[-166.07880859375,61.803125],[-165.61279296875003,61.86928710937502],[-165.707275390625,62.10043945312506],[-165.19453125,62.47353515625002],[-164.75786132812493,62.496728515624966],[-164.589453125,62.709375],[-164.79267578125,62.623193359374966],[-164.79965820312503,62.918066406250006],[-164.384228515625,63.03046874999998],[-164.40903320312503,63.21503906250001],[-163.94287109375,63.247216796874994],[-163.61630859374998,63.125146484374994],[-163.73784179687496,63.016406250000045],[-163.504345703125,63.105859374999966],[-163.28784179687494,63.046435546875045],[-162.621484375,63.26582031249998],[-162.28281250000003,63.529199218749994],[-161.97397460937498,63.45292968749999],[-161.09970703125003,63.557910156250045],[-160.778564453125,63.818945312500034],[-160.987548828125,64.25126953125002],[-161.49072265625003,64.43378906249998],[-160.93193359374996,64.5791015625],[-160.855908203125,64.755615234375],[-161.13017578125005,64.92543945312505],[-161.759375,64.816259765625],[-162.80703124999997,64.37421875000001],[-163.20390625,64.65200195312502],[-163.14433593750002,64.423828125],[-163.71308593749998,64.588232421875],[-164.978759765625,64.45366210937502],[-166.1427734375,64.58276367187503],[-166.48139648437498,64.72807617187507],[-166.415234375,64.926513671875],[-166.92841796875,65.15708007812498],[-166.15703125,65.28583984375001],[-167.40400390625,65.42211914062497],[-168.08837890624997,65.65776367187502],[-166.39873046875002,66.14443359375005],[-165.62993164062496,66.131201171875],[-165.77617187500002,66.31904296875001],[-164.46049804687502,66.58842773437499],[-163.63823242187502,66.57465820312504],[-163.89394531249997,66.57587890625001],[-164.03374023437493,66.21552734374995],[-163.69536132812502,66.08383789062503],[-161.93369140625003,66.04287109374997],[-161.45541992187503,66.28139648437497],[-161.03427734375003,66.18881835937503],[-161.12031249999995,66.334326171875],[-161.91689453124997,66.41181640624998],[-162.54365234375004,66.80512695312501],[-162.36162109375,66.94731445312502],[-161.591015625,66.45952148437502],[-160.23168945312503,66.420263671875],[-160.360888671875,66.6125],[-160.864013671875,66.67084960937501],[-161.39804687499998,66.55185546875],[-161.85668945312497,66.70034179687497],[-161.719921875,67.02055664062502],[-163.5318359375,67.10258789062502],[-164.1251953125,67.60673828125007],[-166.786279296875,68.35961914062497],[-166.38051757812502,68.425146484375],[-166.20908203125,68.88535156250003],[-165.04394531249994,68.882470703125],[-163.867919921875,69.03666992187505],[-161.88095703125003,70.33173828125001],[-162.073876953125,70.16196289062498],[-160.9962890625,70.30458984375],[-160.11713867187495,70.59121093750002],[-159.86567382812498,70.27885742187499],[-159.81499023437496,70.49707031250003],[-159.38676757812493,70.52451171875003],[-160.081591796875,70.63486328125003],[-159.680908203125,70.786767578125],[-159.31450195312496,70.87851562500003],[-159.251171875,70.7484375],[-157.909375,70.860107421875],[-156.47021484374994,71.40766601562501],[-156.469970703125,71.29155273437507],[-155.57944335937503,71.12109374999997],[-156.14658203125,70.92783203125003],[-155.97353515625002,70.84199218749995],[-155.16684570312498,71.09921875000006],[-154.19521484375002,70.80112304687498],[-153.23291015625,70.93256835937504],[-152.49121093749994,70.88095703125],[-152.23291015625,70.81035156249999],[-152.39921875,70.62045898437503],[-151.76904296875,70.56015625],[-151.94467773437498,70.45209960937501],[-149.26943359374997,70.50078124999999],[-147.70537109375,70.21723632812495],[-145.82314453124997,70.16005859375002],[-145.19736328125003,70.00869140625002],[-143.218310546875,70.11625976562499],[-142.70786132812498,70.03378906249998],[-141.40791015625,69.65336914062502],[-141.00214843750004,69.65078125000002],[-141.00214843750004,68.77416992187506]]]]},"properties":{"name":"United States","childNum":76}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[71.20615234375006,39.892578125],[71.15625,39.88344726562502],[71.06425781250002,39.88491210937505],[71.01171874999997,39.895117187500006],[71.04365234375004,39.97631835937503],[71.04482421875005,39.992529296875034],[70.96064453125004,40.087988281250034],[71.00546875,40.15229492187498],[71.0241210937501,40.14916992187497],[71.08037109375007,40.07988281249999],[71.2287109375001,40.04814453124999],[71.20615234375006,39.892578125]]],[[[70.94677734374997,42.24868164062505],[70.97900390625003,42.26655273437504],[71.03603515625,42.28466796875],[71.12998046875006,42.25],[71.21269531250002,42.20644531250005],[71.23232421875005,42.18627929687503],[71.22851562499997,42.16289062499996],[70.18095703125007,41.571435546874994],[70.734375,41.400537109374994],[70.86044921875006,41.22490234375002],[71.11074218750005,41.152636718750045],[71.29882812500003,41.152490234374994],[71.39306640625003,41.123388671875034],[71.40839843750004,41.13603515625002],[71.42089843750003,41.341894531250034],[71.60625,41.367431640625],[71.66494140625,41.54121093749998],[71.70068359374997,41.454003906249966],[71.75771484375005,41.42802734375002],[71.79248046875003,41.41313476562499],[71.85800781250006,41.311376953125034],[71.8786132812501,41.195019531249955],[71.95849609375003,41.18706054687502],[72.05244140625004,41.16474609375001],[72.1154296875001,41.18657226562502],[72.1642578125001,41.173730468749966],[72.18095703125002,41.11845703124999],[72.18730468750002,41.02592773437499],[72.2130859375001,41.014257812500006],[72.36406250000002,41.04345703125],[72.65830078125,40.86992187499999],[73.13212890625002,40.82851562499999],[72.6041015625,40.52543945312499],[72.40205078125004,40.578076171874955],[72.3892578125,40.427392578124994],[72.13125,40.438623046874966],[71.69248046875,40.15234375],[71.30468749999997,40.28691406249996],[70.990625,40.2548828125],[70.95800781250003,40.238867187500034],[70.653125,40.201171875],[70.37158203125003,40.38413085937506],[70.75107421875006,40.721777343750006],[70.40195312500006,41.03510742187498],[69.71289062500003,40.65698242187503],[69.35722656250002,40.76738281249996],[69.20625,40.566552734374994],[69.27490234374997,40.19809570312498],[68.63066406250007,40.16708984374998],[68.9720703125,40.08994140624998],[68.80468750000003,40.05034179687499],[68.86875,39.90747070312503],[68.63896484375007,39.8388671875],[68.46328125,39.53671874999998],[67.71904296875007,39.62138671875002],[67.426171875,39.46557617187497],[67.3576171875001,39.216699218749994],[67.64833984375005,39.13105468750004],[67.69443359375006,38.99462890625003],[68.13251953125004,38.927636718749966],[68.08720703125002,38.47353515625002],[68.3502929687501,38.211035156250006],[67.81435546875005,37.48701171875004],[67.7980468750001,37.244970703125006],[67.75898437500004,37.172216796875034],[67.75292968749997,37.199804687500034],[67.7,37.227246093749955],[67.60742187499997,37.22250976562506],[67.5172851562501,37.26665039062499],[67.44169921875007,37.25800781250001],[67.3197265625,37.209570312500006],[67.1955078125001,37.23520507812498],[67.06884765624997,37.334814453125006],[66.82773437500006,37.37128906249998],[66.52226562500007,37.34848632812506],[66.51064453125,37.45869140625004],[66.51132812500006,37.59916992187496],[66.52558593750004,37.785742187500034],[66.60625,37.98671875000005],[65.97119140624997,38.244238281250006],[65.612890625,38.23857421875002],[64.3099609375,38.97729492187497],[63.76367187500003,39.16054687499999],[62.48320312500002,39.97563476562496],[61.90283203124997,41.09370117187501],[61.496972656249994,41.276074218749955],[61.2423828125001,41.18920898437503],[60.454980468749994,41.221630859374955],[60.089648437500074,41.39941406250003],[60.07558593750005,41.759667968749966],[60.20078125000006,41.803125],[59.94179687499999,41.97353515625002],[59.98515625000002,42.21171875],[59.35429687500002,42.32329101562496],[58.5890625000001,42.778466796874966],[58.477148437500006,42.66284179687503],[58.15156250000004,42.628076171874966],[58.474414062500074,42.29936523437496],[58.02890625,42.48764648437506],[57.814257812500074,42.18984375000005],[57.290625,42.123779296875],[56.96406250000004,41.856542968750006],[57.11884765625004,41.35029296874998],[57.01796875,41.26347656249996],[55.97744140625005,41.32221679687504],[55.97568359375006,44.99492187499996],[58.555273437500006,45.55537109375001],[61.007910156250006,44.39379882812497],[61.99023437500003,43.492138671874955],[63.20703125000003,43.62797851562502],[64.44316406250007,43.55117187499999],[64.9054687500001,43.714697265625006],[65.49619140625,43.310546875],[65.80302734375002,42.87695312500006],[66.1002929687501,42.99082031249998],[66.00957031250007,42.00488281250003],[66.49863281250006,41.99487304687503],[66.70966796875004,41.17915039062501],[67.9357421875001,41.19658203125002],[68.11308593750007,41.02861328124999],[68.04765625000007,40.80927734374998],[68.29189453125,40.656103515625034],[68.57265625,40.62265624999998],[68.58408203125,40.876269531250045],[69.15361328125002,41.42524414062498],[70.94677734374997,42.24868164062505]]]]},"properties":{"name":"Uzbekistan","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[-61.17451171875001,13.158105468749966],[-61.268457031249966,13.287695312499991],[-61.13896484374996,13.358740234374991],[-61.17451171875001,13.158105468749966]]]},"properties":{"name":"St. Vin. and Gren.","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-60.99790039062498,8.867333984374966],[-61.069189453125034,8.947314453125003],[-60.91582031249996,9.070312500000014],[-60.86142578124998,8.949609375000037],[-60.99790039062498,8.867333984374966]]],[[[-60.821191406249966,9.138378906250026],[-60.94140625000003,9.105566406250006],[-60.73583984374997,9.203320312500026],[-60.821191406249966,9.138378906250026]]],[[[-63.84936523437494,11.131005859374994],[-63.917626953124994,10.887548828125048],[-64.40234375,10.981591796875023],[-64.21367187500002,11.086132812499997],[-64.0283203125,11.00185546874998],[-63.84936523437494,11.131005859374994]]],[[[-60.742138671874926,5.202050781250037],[-60.71196289062499,5.191552734375023],[-60.671972656250034,5.164355468749989],[-60.603857421875006,4.94936523437498],[-61.00283203125002,4.535253906249991],[-61.28007812500002,4.516894531249974],[-61.82084960937496,4.197021484375],[-62.153125,4.098388671874986],[-62.41064453124994,4.156738281249972],[-62.71210937499998,4.01791992187502],[-62.85698242187502,3.593457031249969],[-63.33867187500002,3.943896484375045],[-64.02148437500003,3.929101562500051],[-64.19248046874995,4.126855468750009],[-64.57636718750001,4.139892578125],[-64.788671875,4.276025390625023],[-64.66899414062496,4.01181640625002],[-64.22109375000002,3.587402343749972],[-64.04658203124998,2.502392578124997],[-63.389257812500006,2.411914062500045],[-63.43251953124994,2.155566406250045],[-64.00849609374995,1.931591796874969],[-64.20502929687493,1.52949218750004],[-65.10375976562497,1.108105468749983],[-65.47338867187497,0.691259765624977],[-65.55605468750002,0.687988281250014],[-65.52299804687493,0.843408203124966],[-65.68144531249999,0.983447265624989],[-66.06005859375003,0.78535156250004],[-66.34711914062498,0.7671875],[-66.87602539062499,1.223046875000037],[-67.21083984375,2.390136718750043],[-67.61870117187496,2.793603515624994],[-67.85908203124998,2.793603515624994],[-67.3111328125,3.41586914062502],[-67.66162109375,3.864257812499986],[-67.85527343750002,4.506884765624989],[-67.82490234374995,5.270458984375026],[-67.47387695312503,5.929980468750003],[-67.48198242187499,6.18027343750002],[-67.85917968749999,6.289892578124963],[-68.47177734375,6.156542968749974],[-69.42714843749997,6.123974609374997],[-70.12919921874999,6.95361328125],[-70.73715820312503,7.090039062499997],[-71.12861328124993,6.98671875],[-72.00664062499993,7.032617187500023],[-72.20771484374995,7.37026367187498],[-72.47197265624996,7.524267578124991],[-72.39033203124995,8.287060546874969],[-72.66542968749994,8.62758789062498],[-72.79638671874997,9.10898437499999],[-73.05839843749999,9.259570312500031],[-73.36621093749997,9.194140625000017],[-73.00654296874998,9.789160156250006],[-72.86933593750001,10.49125976562496],[-72.690087890625,10.835839843749994],[-72.24848632812501,11.196435546875009],[-71.95810546875,11.66640625],[-71.31972656249997,11.861914062500048],[-71.95693359375002,11.569921874999977],[-71.835107421875,11.190332031250009],[-71.6416015625,11.013525390625048],[-71.73090820312498,10.994677734375017],[-71.59433593749995,10.657373046875051],[-72.11284179687499,9.815576171874966],[-71.61953124999994,9.047949218749991],[-71.24140625000001,9.160449218750003],[-71.08583984375002,9.348242187499977],[-71.05268554687501,9.705810546874986],[-71.49423828125,10.533203124999972],[-71.46953124999993,10.964160156250017],[-70.23251953124998,11.372998046874997],[-70.09711914062493,11.519775390624972],[-69.80478515624998,11.47421875000002],[-69.81733398437495,11.672070312499997],[-70.19257812499993,11.62460937500002],[-70.28652343749997,11.886035156249989],[-70.20278320312497,12.098388671874986],[-70.00395507812496,12.177880859375023],[-69.63159179687494,11.479931640625026],[-68.827978515625,11.431738281249977],[-68.39863281249995,11.160986328124977],[-68.29628906249997,10.689355468749994],[-68.13994140624999,10.492724609374989],[-66.24721679687497,10.632226562499994],[-65.85175781249995,10.257763671874997],[-65.12910156249998,10.070068359375043],[-64.85048828125,10.098095703124969],[-64.188330078125,10.457812499999989],[-63.73188476562501,10.503417968750043],[-64.24750976562498,10.54257812500002],[-64.298193359375,10.635156249999966],[-61.879492187500006,10.741015625000031],[-62.379980468750006,10.546875],[-62.91357421875,10.531494140624986],[-62.68583984374996,10.289794921875043],[-62.740576171875006,10.056152343750043],[-62.55034179687499,10.200439453125043],[-62.320410156250034,9.783056640625006],[-62.22114257812498,9.882568359375028],[-62.15336914062493,9.821777343749986],[-62.15532226562499,9.979248046875014],[-62.077099609374926,9.97504882812504],[-61.73593749999998,9.631201171874977],[-61.76591796874996,9.813818359374963],[-61.58886718749994,9.894531249999986],[-60.79248046874997,9.360742187500037],[-61.02314453124998,9.15458984374996],[-61.24726562499998,8.600341796875014],[-61.61870117187499,8.59746093749996],[-61.30400390624999,8.410400390625043],[-60.800976562499926,8.592138671875034],[-60.16748046875,8.616992187500031],[-60.01752929687501,8.549316406250014],[-59.83164062499998,8.305957031250003],[-59.84907226562498,8.248681640624966],[-59.96484375000003,8.191601562499969],[-59.99072265624997,8.16201171874998],[-60.032421874999926,8.053564453125006],[-60.51362304687501,7.813183593749969],[-60.71865234374994,7.535937499999974],[-60.606542968750006,7.320849609375031],[-60.63330078124997,7.211083984374966],[-60.58320312499998,7.156201171874969],[-60.523193359375,7.143701171875009],[-60.464941406250034,7.166552734375045],[-60.39238281249999,7.164550781249986],[-60.34506835937495,7.15],[-60.32548828124996,7.133984374999983],[-60.32207031249996,7.092041015625043],[-60.35209960937496,7.002880859374997],[-60.39501953125,6.945361328125003],[-60.717919921874966,6.768310546875],[-61.14560546874998,6.694531249999983],[-61.20361328124997,6.588378906250028],[-61.181591796874926,6.513378906250026],[-61.15102539062502,6.446533203124986],[-61.15229492187501,6.385107421875006],[-61.12871093749999,6.214306640625026],[-61.15947265624996,6.174414062499977],[-61.22495117187498,6.129199218750003],[-61.303125,6.049511718750026],[-61.39082031250001,5.938769531250017],[-61.376806640625006,5.906982421875028],[-61.167187499999926,5.674218750000037],[-60.95400390625002,5.437402343750023],[-60.742138671874926,5.202050781250037]]]]},"properties":{"name":"Venezuela","childNum":4}},{"geometry":{"type":"Polygon","coordinates":[[[-64.765625,17.794335937499994],[-64.58046874999994,17.750195312499983],[-64.88911132812495,17.701708984375045],[-64.765625,17.794335937499994]]]},"properties":{"name":"U.S. Virgin Is.","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[104.06396484375003,10.390820312500011],[104.01845703125,10.029199218749966],[103.84951171875005,10.371093749999986],[104.06396484375003,10.390820312500011]]],[[[107.52128906250007,20.926611328124977],[107.39921875000007,20.903466796874966],[107.55126953125003,21.034033203125006],[107.52128906250007,20.926611328124977]]],[[[107.60273437500004,21.21679687500003],[107.40351562500004,21.093652343749994],[107.47626953125004,21.268945312499994],[107.60273437500004,21.21679687500003]]],[[[107.97265624999997,21.507958984375023],[107.40996093750002,21.284814453125023],[107.35429687500007,21.055175781250057],[107.1647460937501,20.94873046875003],[106.68339843750007,21.000292968750074],[106.75341796875003,20.73505859375004],[106.55078124999997,20.52656250000001],[106.57285156250012,20.392187499999977],[105.98408203125004,19.939062500000034],[105.62177734375004,18.96630859375003],[105.88828125000006,18.502490234375045],[106.49902343749997,17.946435546874994],[106.47890625000005,17.719580078125063],[106.3705078125,17.746875],[107.83378906250002,16.322460937499983],[108.02939453125012,16.331103515625074],[108.82128906249997,15.377929687500028],[109.30332031250012,13.856445312500043],[109.271875,13.279345703124974],[109.42392578125006,12.955957031249994],[109.44492187500006,12.599609375000057],[109.33554687500012,12.751904296874997],[109.21894531250004,12.64580078124996],[109.30468750000003,12.391162109375045],[109.20683593750007,12.415380859375006],[109.1986328125,11.724853515625014],[109.03964843750012,11.592675781249994],[108.98671875,11.336376953124997],[108.09492187500004,10.897265624999989],[108.0013671875,10.720361328125009],[107.26152343750007,10.39838867187504],[107.00664062500002,10.66054687499998],[106.94746093750004,10.400341796874997],[106.72734375000007,10.535644531250028],[106.605859375,10.46494140625002],[106.74121093750003,10.444384765625003],[106.75742187500006,10.295800781250023],[106.46406250000004,10.298291015624997],[106.78525390625012,10.116455078124986],[106.59560546875005,9.859863281250028],[106.1364257812501,10.221679687500014],[106.56435546875005,9.715625],[106.48408203125004,9.559423828125006],[105.83095703125005,10.000732421875028],[106.15859375,9.59414062499998],[106.16835937500005,9.396728515625],[105.50097656249997,9.093212890624983],[105.11435546875006,8.629199218750031],[104.77041015625,8.59765625],[104.89628906250007,8.746630859374974],[104.81855468750004,8.801855468750034],[104.84521484375003,9.606152343750026],[105.08447265625003,9.99570312499999],[104.8019531250001,10.202734374999977],[104.66347656250005,10.169921875000043],[104.42636718750006,10.411230468749991],[104.85058593749997,10.534472656249974],[105.04638671874997,10.701660156250014],[105.04570312500002,10.911376953125014],[105.3146484375001,10.845166015625026],[105.40576171875003,10.95161132812504],[105.75507812500004,10.989990234375043],[105.85332031250007,10.86357421874996],[106.16396484375005,10.794921875],[106.16093750000002,11.037109375000057],[105.85605468750006,11.294287109375048],[105.85146484375005,11.635009765625],[106.0060546875001,11.758007812500011],[106.39921875000007,11.687011718750028],[106.41386718750002,11.9484375],[106.70009765625,11.979296874999974],[107.21210937500004,12.30400390624996],[107.39335937500002,12.260498046874972],[107.50644531250006,12.364550781250031],[107.47539062500002,13.030371093749963],[107.60546874999997,13.437792968750017],[107.3314453125,14.126611328125009],[107.51943359375005,14.705078125],[107.51376953125012,14.817382812500057],[107.52451171875012,14.871826171875043],[107.50468750000007,14.915917968749966],[107.48037109375,14.979882812500037],[107.55527343750006,15.057031250000023],[107.58964843750002,15.118457031250017],[107.63369140625005,15.18984375],[107.653125,15.255224609374991],[107.62167968750006,15.309863281250017],[107.56425781250002,15.391601562499972],[107.45957031250012,15.4658203125],[107.33876953125,15.560498046875011],[107.27939453125006,15.618701171875045],[107.16591796875005,15.802490234375028],[107.1888671875,15.838623046875],[107.36064453125002,15.921728515624977],[107.3919921875,15.951660156250028],[107.39638671875,16.04301757812499],[106.93066406249997,16.353125],[106.8927734375001,16.396533203125074],[106.85107421875003,16.515625],[106.83242187500005,16.526269531250023],[106.79160156250006,16.490332031250006],[106.73955078125007,16.452539062500023],[106.6564453125001,16.49262695312501],[106.54619140625002,16.650732421874977],[106.53369140625003,16.821044921875057],[106.52597656250006,16.876611328124994],[106.50224609375002,16.95410156249997],[106.26953125000003,17.21679687500003],[106.00625,17.415283203125057],[105.69140625000003,17.737841796875045],[105.58847656250012,17.983691406250045],[105.51855468749997,18.077441406250045],[105.45820312500004,18.15429687499997],[105.11455078125002,18.40527343750003],[105.08701171875006,18.496240234374994],[105.14541015625,18.616796875000063],[105.14648437500003,18.650976562500006],[103.89160156250003,19.304980468750017],[103.89638671875,19.339990234375023],[103.93203125,19.366064453125006],[104.0275390625001,19.42045898437499],[104.062890625,19.48256835937505],[104.05156250000007,19.564160156249955],[104.01347656250007,19.64648437500003],[104.03203125000002,19.675146484375006],[104.06279296875007,19.678417968749983],[104.25986328125006,19.685498046874983],[104.5462890625,19.61054687500001],[104.58789062500003,19.61875],[104.74316406250003,19.754736328124977],[104.80175781249997,19.83613281250004],[104.81513671875004,19.90400390625001],[104.9279296875001,20.01811523437499],[104.92919921875003,20.082812500000017],[104.88867187500003,20.169091796875023],[104.84785156250004,20.202441406250045],[104.69873046875003,20.20532226562503],[104.67695312500004,20.224707031249977],[104.66191406250007,20.28901367187501],[104.65644531250004,20.32851562499999],[104.6188476562501,20.37451171875003],[104.49619140625006,20.413671875],[104.39218750000012,20.424755859374955],[104.36777343750012,20.44140624999997],[104.40781250000012,20.48574218750005],[104.47861328125006,20.529589843750017],[104.53271484374997,20.55488281250001],[104.58320312500004,20.646679687499955],[104.34960937499997,20.821093750000074],[104.19531249999997,20.913964843749966],[104.10136718750002,20.94550781250001],[103.63505859375007,20.697070312500017],[103.46357421875004,20.779833984375017],[103.21074218750002,20.840625],[103.10449218749997,20.891650390625045],[102.88378906250003,21.202587890624983],[102.85117187500006,21.26591796874999],[102.94960937500005,21.681347656249983],[102.84521484374997,21.73476562500005],[102.81591796874997,21.807373046875],[102.7982421875,21.797949218750034],[102.77109375000006,21.709667968749983],[102.73857421875002,21.67792968750001],[102.66201171875005,21.67602539062497],[102.58251953125003,21.90429687500003],[102.12744140624997,22.379199218750045],[102.1759765625001,22.414648437500006],[102.2370117187501,22.466015624999983],[102.40644531250004,22.70800781249997],[102.47089843750004,22.75092773437501],[102.98193359374997,22.4482421875],[103.32666015625003,22.769775390625057],[103.49296875000007,22.587988281250034],[103.62021484375006,22.782031250000045],[103.94150390625006,22.540087890625045],[104.14306640624997,22.800146484375006],[104.37177734375004,22.704052734374983],[104.68730468750002,22.822216796874983],[104.86474609375003,23.136376953125023],[105.27539062500003,23.34521484375003],[105.8429687500001,22.922802734374955],[106.14843749999997,22.970068359375006],[106.2790039062501,22.857470703125045],[106.54179687500007,22.908349609375023],[106.78027343749997,22.778906250000034],[106.55039062500006,22.501367187499994],[106.66357421875003,21.97890625000005],[106.97099609375002,21.923925781250034],[107.35117187500012,21.60888671874997],[107.75927734374997,21.655029296875057],[107.97265624999997,21.507958984375023]]]]},"properties":{"name":"Vietnam","childNum":4}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[169.49130859375006,-19.54013671875002],[169.34726562500006,-19.623535156249957],[169.2174804687501,-19.476367187500003],[169.24746093750005,-19.3447265625],[169.49130859375006,-19.54013671875002]]],[[[169.334375,-18.940234375000017],[168.98691406250006,-18.87128906250001],[169.01582031250004,-18.64375],[169.14384765625002,-18.63105468750001],[169.334375,-18.940234375000017]]],[[[168.44580078124997,-17.54218750000004],[168.58496093750003,-17.695898437500006],[168.52460937500004,-17.798046875000026],[168.15820312500003,-17.710546874999963],[168.2731445312501,-17.552246093749957],[168.44580078124997,-17.54218750000004]]],[[[168.44677734375003,-16.778808593749957],[168.18144531250002,-16.804003906250017],[168.13535156250006,-16.636914062499997],[168.44677734375003,-16.778808593749957]]],[[[168.29667968750007,-16.33652343749999],[167.92900390625002,-16.22871093749997],[168.16386718750002,-16.081640625000034],[168.29667968750007,-16.33652343749999]]],[[[167.4125,-16.095898437499997],[167.83662109375004,-16.449707031249957],[167.44931640625012,-16.554980468750003],[167.34921875000006,-16.15449218750004],[167.15146484375006,-16.080468749999966],[167.19951171875002,-15.885058593750031],[167.33574218750007,-15.916699218749997],[167.4125,-16.095898437499997]]],[[[167.9113281250001,-15.435937500000023],[167.67421875,-15.4515625],[168.00253906250012,-15.283203124999986],[167.9113281250001,-15.435937500000023]]],[[[166.74580078125004,-14.826855468750011],[166.81015625000012,-15.15742187500004],[167.0755859375,-14.935644531249977],[167.20078125000012,-15.443066406249969],[167.0939453125001,-15.580859374999974],[166.75830078125003,-15.631152343750003],[166.63105468750004,-15.406054687499974],[166.56738281250003,-14.641796874999969],[166.74580078125004,-14.826855468750011]]],[[[167.58486328125,-14.260937500000011],[167.43027343750012,-14.294921875],[167.41074218750006,-14.19746093750004],[167.50644531250012,-14.142187499999977],[167.58486328125,-14.260937500000011]]],[[[167.48886718750006,-13.907226562499972],[167.3917968750001,-13.788378906250017],[167.48105468750006,-13.709472656250014],[167.48886718750006,-13.907226562499972]]]]},"properties":{"name":"Vanuatu","childNum":10}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-171.4541015625,-14.04648437500002],[-171.9119140625,-14.001660156250026],[-172.04589843750003,-13.857128906249983],[-171.60390624999997,-13.879199218750045],[-171.4541015625,-14.04648437500002]]],[[[-172.33349609375,-13.46523437499999],[-172.17685546874998,-13.68466796875002],[-172.224951171875,-13.804296874999963],[-172.535693359375,-13.791699218749983],[-172.77851562499998,-13.516796875000011],[-172.33349609375,-13.46523437499999]]]]},"properties":{"name":"Samoa","childNum":2}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[53.76318359374997,12.636816406249991],[54.18740234375005,12.664013671875026],[54.511132812499994,12.552783203125017],[54.12949218750006,12.360644531250045],[53.71884765625006,12.318994140624994],[53.31582031250005,12.533154296875011],[53.53496093750002,12.715771484374997],[53.76318359374997,12.636816406249991]]],[[[42.75585937500003,13.70429687500004],[42.689746093750074,13.673632812500017],[42.7941406250001,13.766113281250028],[42.75585937500003,13.70429687500004]]],[[[42.787402343750074,13.971484375000031],[42.69404296875004,14.007910156249991],[42.76210937500005,14.067480468750048],[42.787402343750074,13.971484375000031]]],[[[53.08564453125004,16.648388671874955],[52.327734375,16.293554687500063],[52.17402343750004,15.956835937500017],[52.2174804687501,15.655517578125],[51.3224609375001,15.22626953125004],[49.34990234375002,14.637792968749977],[48.66835937499999,14.050146484374977],[47.9899414062501,14.048095703125],[47.40771484374997,13.661621093750057],[46.78886718750002,13.465576171874986],[45.65732421875006,13.338720703124991],[45.03867187500006,12.815869140624969],[44.617773437500006,12.817236328124977],[44.00585937499997,12.607666015625],[43.634375,12.744482421874991],[43.487597656250074,12.69882812500002],[43.23193359375003,13.267089843750057],[43.2824218750001,13.692529296875037],[43.08906250000004,14.010986328125],[42.93642578125005,14.938574218749963],[42.85566406250004,15.132958984375037],[42.65781250000006,15.232812500000051],[42.79902343750004,15.326269531249991],[42.71718750000005,15.654638671875006],[42.83964843750002,16.032031250000074],[42.79931640624997,16.37177734375001],[43.16503906249997,16.689404296874955],[43.19091796875003,17.359375],[43.41796875000003,17.516259765625023],[43.91699218749997,17.32470703124997],[45.14804687500006,17.427441406249955],[45.5353515625001,17.30205078124999],[46.72763671875006,17.26557617187501],[46.97568359375006,16.953466796875034],[47.14355468749997,16.946679687499966],[47.44179687499999,17.111865234375045],[47.57958984374997,17.448339843750034],[48.17216796875002,18.156933593749983],[49.04199218750003,18.58178710937503],[51.977636718750006,18.996142578125074],[53.08564453125004,16.648388671874955]]]]},"properties":{"name":"Yemen","childNum":4}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[37.85693359375003,-46.94423828124998],[37.5900390625001,-46.90800781250006],[37.78955078124997,-46.8375],[37.85693359375003,-46.94423828124998]]],[[[31.799609375000017,-23.8921875],[31.98583984374997,-24.460644531249983],[31.921679687500017,-25.96875],[31.335156250000097,-25.755566406249997],[31.207324218750074,-25.843359375000034],[31.08808593750004,-25.980664062500026],[30.803320312500006,-26.41347656250001],[30.806738281250006,-26.78525390624999],[30.88330078124997,-26.792382812500023],[30.938085937500006,-26.91582031250003],[31.06337890625005,-27.1123046875],[31.274023437500063,-27.23837890625002],[31.469531250000017,-27.29550781250002],[31.74257812500005,-27.309960937500037],[31.95839843750005,-27.305859375],[31.946093750000017,-27.173632812499974],[31.96718750000005,-26.96064453125001],[31.994726562500006,-26.817480468749977],[32.024804687499994,-26.81113281250002],[32.112890625,-26.83945312500002],[32.19960937499999,-26.833496093749957],[32.35351562499997,-26.861621093750003],[32.7765625000001,-26.850976562499966],[32.88613281250005,-26.849316406249983],[32.53476562500006,-28.19970703125003],[32.285742187500006,-28.62148437499998],[31.335156250000097,-29.378125],[29.97119140625003,-31.322070312500017],[28.449414062500068,-32.62460937499999],[27.077441406250074,-33.52119140625004],[26.429492187500045,-33.75957031250002],[25.80585937500001,-33.737109374999974],[25.574218750000057,-34.03535156249998],[25.00292968750003,-33.97363281250003],[24.8271484375,-34.16894531250003],[24.595507812500074,-34.17451171875],[23.697851562500063,-33.99277343750002],[23.268164062500006,-34.08115234374999],[22.553808593750063,-34.01005859374999],[22.24550781250005,-34.06914062500003],[21.788964843750023,-34.37265624999996],[20.529882812500034,-34.4630859375],[20.020605468750006,-34.785742187500006],[19.298242187500023,-34.61503906249996],[19.330761718750068,-34.49238281250001],[19.098339843750068,-34.350097656249986],[18.831347656250017,-34.36406249999999],[18.75214843750004,-34.08261718750002],[18.50039062499999,-34.10927734375004],[18.46162109375001,-34.346875],[18.35205078124997,-34.1884765625],[18.43300781250005,-33.71728515625003],[17.851074218750057,-32.82744140625002],[17.96523437500005,-32.70859374999996],[18.125,-32.74912109374996],[18.325292968750034,-32.50498046874996],[18.21083984375008,-31.74248046874996],[17.34707031250005,-30.44482421875],[16.95,-29.40341796875002],[16.739453124999983,-29.009375],[16.447558593750045,-28.61757812499998],[16.755761718750023,-28.45214843750003],[16.7875,-28.39472656249997],[16.81015625,-28.264550781249994],[16.841210937500023,-28.21894531250004],[16.875292968750045,-28.12792968749997],[16.93330078125004,-28.06962890624999],[17.05625,-28.03105468750003],[17.1884765625,-28.13251953125001],[17.358691406250017,-28.269433593750023],[17.44794921875001,-28.698144531249966],[18.310839843750017,-28.88623046875],[19.16171875,-28.93876953124996],[19.245800781250068,-28.90166015625003],[19.31269531250004,-28.733300781250023],[19.539843750000017,-28.574609375000023],[19.98046875,-28.45126953125002],[19.98046875,-28.310351562500003],[19.98046875,-24.77675781249998],[20.430664062500057,-25.14707031250002],[20.79316406250001,-25.915625],[20.641406250000017,-26.7421875],[20.739843749999977,-26.84882812499997],[21.694726562500023,-26.840917968749963],[21.738085937500045,-26.806835937500026],[21.788281250000068,-26.710058593750034],[22.01093750000004,-26.635839843750006],[22.090917968749977,-26.580175781250034],[22.217578125000045,-26.38886718749997],[22.47089843750004,-26.219042968750003],[22.548632812500074,-26.178417968749997],[22.59765625000003,-26.13271484375001],[22.878808593750023,-25.457910156250023],[23.148730468750017,-25.288671875],[23.389257812500006,-25.291406250000023],[23.89375,-25.600878906250017],[23.96953124999999,-25.62607421874999],[24.192968750000034,-25.632910156249963],[24.33056640625,-25.742871093749983],[25.21337890625,-25.75625],[25.518164062500006,-25.66279296875001],[25.91210937499997,-24.747460937499966],[26.031835937500034,-24.70244140625003],[26.130859375000057,-24.671484375000034],[26.39716796875004,-24.61357421874996],[26.451757812500063,-24.582714843749983],[26.835058593750063,-24.240820312499963],[27.085546875000034,-23.577929687500003],[27.7685546875,-23.14892578125],[27.812597656250006,-23.108007812500006],[28.210156249999983,-22.693652343749974],[28.83984375000003,-22.480859374999966],[28.94580078125003,-22.39511718749999],[29.013476562500045,-22.27841796875002],[29.129882812500057,-22.21328125],[29.364843750000063,-22.19394531250005],[29.37744140625003,-22.19277343749998],[29.66308593749997,-22.146289062500017],[29.90234375000003,-22.184179687500006],[30.19042968750003,-22.291113281250034],[30.460156250000097,-22.329003906250023],[30.71162109375004,-22.297851562499986],[31.07343750000004,-22.30781249999997],[31.19726562499997,-22.344921874999983],[31.287890625000074,-22.402050781249983],[31.54560546875004,-23.48232421874998],[31.799609375000017,-23.8921875]],[[27.19355468750001,-29.94130859375001],[27.364062500000017,-30.27919921875001],[27.753125,-30.6],[28.05683593750001,-30.63105468750001],[28.128710937500017,-30.52509765625001],[28.39208984375003,-30.14755859375002],[28.646875,-30.1265625],[29.09804687500005,-29.919042968750006],[29.142187500000063,-29.70097656249999],[29.293554687500006,-29.56689453125003],[29.348828125000097,-29.441992187499977],[29.38671874999997,-29.319726562500023],[29.301367187500006,-29.08984375],[28.625781250000017,-28.581738281250054],[28.583398437499994,-28.59414062499999],[28.471875,-28.615820312499977],[28.23261718750004,-28.701269531249977],[28.084375,-28.779980468750026],[27.95986328125008,-28.87333984375003],[27.73554687500004,-28.940039062500034],[27.294531250000063,-29.519335937500017],[27.056933593750074,-29.62558593749999],[27.19355468750001,-29.94130859375001]]]]},"properties":{"name":"South Africa","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[33.148046875,-9.603515625],[33.25,-9.759570312500003],[33.35097656250002,-9.862207031250009],[33.33710937500001,-9.954003906250009],[33.3115234375,-10.037988281250009],[33.52890625,-10.234667968750003],[33.53759765625,-10.3515625],[33.5537109375,-10.391308593750011],[33.66152343750002,-10.553125],[33.29277343750002,-10.85234375],[33.37978515625002,-11.157910156250011],[33.26835937500002,-11.40390625],[33.23271484375002,-11.417675781250011],[33.22636718750002,-11.534863281250011],[33.30390625000001,-11.690820312500009],[33.25234375000002,-12.112597656250003],[33.34013671875002,-12.308300781250011],[33.512304687500006,-12.347753906250006],[32.975195312500006,-12.701367187500011],[32.96757812500002,-13.225],[32.67041015625,-13.590429687500006],[32.797460937500006,-13.6884765625],[32.98125,-14.009375],[33.148046875,-13.94091796875],[33.201757812500006,-14.013378906250011],[30.231835937500023,-14.990332031250006],[30.39609375,-15.64306640625],[29.4873046875,-15.69677734375],[28.9130859375,-15.98779296875],[28.760546875000017,-16.53212890625001],[27.932226562500006,-16.89619140625001],[27.020800781250017,-17.95839843750001],[26.779882812500006,-18.04150390625],[26.333398437500023,-17.929296875],[25.995898437500017,-17.969824218750006],[25.2587890625,-17.793554687500006],[25.001757812500017,-17.56855468750001],[24.73291015625,-17.51777343750001],[24.27490234375,-17.481054687500006],[23.380664062500017,-17.640625],[22.193945312500006,-16.628125],[21.979785156250017,-15.95556640625],[21.979394531250023,-14.440527343750006],[21.979296875000017,-14.11962890625],[21.979101562500006,-13.798730468750009],[21.978906250000023,-13.0009765625],[22.209570312500006,-13.0009765625],[23.843164062500023,-13.0009765625],[23.962988281250006,-12.988476562500011],[23.882421875,-12.799023437500011],[23.886523437500017,-12.743261718750006],[23.909375,-12.636132812500009],[23.98388671875,-11.725],[23.96650390625001,-10.871777343750011],[24.36572265625,-11.1298828125],[24.3779296875,-11.417089843750006],[25.28876953125001,-11.21240234375],[25.349414062500017,-11.623046875],[26.025976562500006,-11.89013671875],[26.824023437500017,-11.965234375],[27.1591796875,-11.579199218750006],[27.573828125,-12.22705078125],[28.412890625000017,-12.51806640625],[28.550878906250006,-12.836132812500011],[28.730078125,-12.925488281250011],[29.014257812500006,-13.368847656250011],[29.20185546875001,-13.398339843750009],[29.55419921875,-13.248925781250009],[29.775195312500017,-13.438085937500006],[29.79511718750001,-12.155468750000011],[29.508203125000023,-12.228222656250011],[29.48554687500001,-12.41845703125],[29.064355468750023,-12.348828125000011],[28.482519531250006,-11.812109375],[28.383398437500006,-11.566699218750003],[28.6455078125,-10.550195312500009],[28.60419921875001,-9.678808593750006],[28.400683593750017,-9.224804687500011],[28.869531250000023,-8.785839843750011],[28.89814453125001,-8.485449218750006],[30.75117187500001,-8.193652343750003],[30.830664062500006,-8.385546875],[30.891992187500023,-8.473730468750006],[30.968359375,-8.550976562500011],[31.07636718750001,-8.611914062500006],[31.3505859375,-8.60703125],[31.44921875,-8.65390625],[31.53486328125001,-8.71328125],[31.55625,-8.80546875],[31.673632812500017,-8.908789062500006],[31.91865234375001,-8.9421875],[31.921875,-9.019433593750009],[31.94257812500001,-9.054003906250003],[32.75664062500002,-9.322265625],[32.919921875,-9.407421875000011],[32.99599609375002,-9.622851562500003],[33.148046875,-9.603515625]]]},"properties":{"name":"Zambia","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[31.287890625000017,-22.40205078125001],[31.07343750000001,-22.30781250000001],[30.71162109375001,-22.2978515625],[30.46015625000001,-22.32900390625001],[30.1904296875,-22.291113281250006],[29.90234375,-22.184179687500006],[29.6630859375,-22.146289062500003],[29.37744140625,-22.19277343750001],[29.36484375,-22.193945312500006],[29.315234375000017,-22.15771484375],[29.237207031250023,-22.07949218750001],[29.042382812500023,-22.018359375],[29.02558593750001,-21.796875],[28.014062500000023,-21.55419921875],[27.66943359375,-21.064257812500003],[27.679296875,-20.503027343750006],[27.28076171875,-20.47871093750001],[27.17822265625,-20.10097656250001],[26.168066406250006,-19.53828125000001],[25.939355468750023,-18.93867187500001],[25.242285156250006,-17.969042968750003],[25.2587890625,-17.793554687500006],[25.995898437500017,-17.969824218750006],[26.333398437500023,-17.929296875],[26.779882812500006,-18.04150390625],[27.020800781250017,-17.95839843750001],[27.932226562500006,-16.89619140625001],[28.760546875000017,-16.53212890625001],[28.9130859375,-15.98779296875],[29.4873046875,-15.69677734375],[30.39609375,-15.64306640625],[30.437792968750017,-15.995312500000011],[31.236230468750023,-16.02363281250001],[31.939843750000023,-16.428808593750006],[32.94804687500002,-16.71230468750001],[32.87626953125002,-16.88359375],[32.99306640625002,-18.35957031250001],[32.69970703125,-18.94091796875],[32.84980468750001,-19.10439453125001],[32.77763671875002,-19.388769531250006],[32.992773437500006,-19.98486328125],[32.49238281250001,-20.659765625],[32.353613281250006,-21.136523437500003],[32.429785156250006,-21.29707031250001],[31.429492187500017,-22.298828125],[31.287890625000017,-22.40205078125001]]]},"properties":{"name":"Zimbabwe","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[74.00809389139292,33.25375789331485],[73.19660141888893,33.898124784580936],[73.13410859949555,34.82510160558277],[72.31128647748268,35.77290936638241],[73.08203125000107,36.43949943991182],[73.08961802927895,36.86435907947333],[73.116796875,36.868554687499994],[74.03886718750002,36.825732421874996],[74.54140625000002,37.02216796875],[74.69218750000002,37.0357421875],[74.8892578125,36.952441406249996],[74.94912109375002,36.968359375],[75.05390625000001,36.987158203125],[75.14521484375001,36.9732421875],[75.3466796875,36.913476562499994],[75.37685546875002,36.883691406249994],[75.42421875000002,36.738232421875],[75.46025390625002,36.725048828125],[75.57373046875,36.759326171874996],[75.66718750000001,36.741992187499996],[75.77216796875001,36.694921875],[75.84023437500002,36.649707031249996],[75.88496093750001,36.600732421874994],[75.93300781250002,36.52158203125],[75.95185546875001,36.45810546875],[75.97441406250002,36.382421875],[75.91230468750001,36.048974609374994],[76.07089843750003,35.9830078125],[76.14785156250002,35.829003906249994],[76.17783203125003,35.810546875],[76.25166015625001,35.8109375],[76.3857421875,35.837158203125],[76.50205078125003,35.878222656249996],[76.55126953125,35.887060546875],[76.5634765625,35.772998046874996],[76.6318359375,35.729394531249994],[76.7275390625,35.678662109375],[76.76689453124999,35.66171875],[76.81279296874999,35.571826171874996],[76.88222656250002,35.4357421875],[76.927734375,35.346630859375],[77.04863281249999,35.109912109374996],[77.00087890625002,34.991992187499996],[76.78291015625001,34.900195312499996],[76.75751953125001,34.877832031249994],[76.7490234375,34.847558593749994],[76.6962890625,34.786914062499996],[76.59443359375001,34.73583984375],[76.45673828125001,34.756103515625],[76.17246093750003,34.667724609375],[76.041015625,34.669921875],[75.93828125000002,34.612548828125],[75.86210937500002,34.56025390625],[75.70917968750001,34.503076171874994],[74.300390625,34.765380859375],[74.17197265625,34.7208984375],[74.05585937500001,34.6806640625],[73.96123046875002,34.653466796874994],[73.79453125,34.378222656249996],[73.80996093750002,34.325341796874994],[73.92460937500002,34.287841796875],[73.97236328125001,34.236621093749996],[73.9794921875,34.191308593749994],[73.90390625,34.1080078125],[73.94990234375001,34.018798828125],[74.24648437500002,33.990185546875],[73.97646484375002,33.7212890625],[74.15,33.506982421874994],[74.00809389139292,33.25375789331485]]]},"properties":{"name":"","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[78.49194250885338,32.53122786149202],[78.10154031239509,32.87658365066666],[77.71342088235082,32.6917648744551],[77.06655516561037,33.301666835953235],[76.62299010270264,33.32014871357439],[76.32728006076415,32.87658365066666],[75.73585997688717,32.78417426256088],[75.62496871116024,32.28516356678968],[75.32221348233018,32.28516356678968],[74.98730468749997,32.46220703124996],[74.78886718750013,32.4578125],[74.6857421875001,32.493798828124994],[74.66328125000004,32.75766601562495],[74.63242187499995,32.770898437500136],[74.58828125000011,32.7532226562501],[74.35458984375012,32.76870117187505],[74.30546875000007,32.81044921875002],[74.30361328125005,32.991796875000034],[73.98984375000006,33.22119140625006],[74.15,33.506982421874994],[73.97646484375016,33.72128906249998],[74.24648437500011,33.99018554687504],[73.9499023437501,34.018798828125],[73.90390625000012,34.10800781250006],[73.97949218750009,34.191308593749966],[73.97236328125004,34.23662109374996],[73.92460937500007,34.287841796875114],[73.80996093750016,34.32534179687511],[73.79453125000006,34.378222656250045],[73.96123046875007,34.653466796874994],[74.05585937500015,34.68066406250003],[74.17197265624995,34.72089843750004],[74.30039062500006,34.76538085937506],[75.70917968750004,34.50307617187508],[75.86210937500002,34.56025390625001],[75.93828125000019,34.612548828125],[76.04101562500014,34.66992187499997],[76.17246093750006,34.66772460937506],[76.4567382812501,34.756103515625114],[76.5944335937501,34.73583984375006],[76.69628906249997,34.78691406249999],[76.74902343750014,34.84755859375008],[76.7575195312501,34.87783203125005],[76.7829101562501,34.90019531249999],[77.00087890625011,34.99199218750002],[77.03066406250011,35.06235351562498],[77.04863281250007,35.109912109375074],[77.42343749999995,35.30258789062506],[77.57158203125002,35.37875976562495],[77.69697265625015,35.443261718750136],[77.79941406250006,35.49589843750002],[78.0426757812501,35.4797851562501],[78.07578125000006,35.13491210937502],[78.15849609375002,34.94648437499998],[78.32695312500007,34.60639648437498],[78.86484375000006,34.39033203125001],[78.93642578125,34.35195312500002],[78.97060546875011,34.22822265625004],[78.72666015625006,34.013378906249955],[78.78378906250006,33.80878906250004],[78.86503906250002,33.43110351562501],[78.94843750000004,33.346533203125006],[79.1125,33.22626953125001],[79.13515625000005,33.17192382812496],[79.10283203125007,33.05253906249996],[79.14550781250003,33.00146484375006],[79.16992187500003,32.497216796874994],[78.91894531249997,32.3582031250001],[78.75351562500012,32.49926757812506],[78.73671875,32.55839843750002],[78.49194250885338,32.53122786149202]]]]},"properties":{"name":"","childNum":1}}]}'); -;// CONCATENATED MODULE: ./src/components/Chart/index.js - - - - - - - - - -external_echarts_namespaceObject.registerMap("world", world_namespaceObject); -const Chart = (props) => { - const { - areaStyleColors, - dataLoaded, - hasData, - highlight, - type, - option, - series, - onChange, - zoomStart, - zoomEnd, - title, - seriesConfig = [], - noDataComponent = null, - zoomColors - } = props; - const [tykChartInstance, setTykChartInstance] = (0,external_react_namespaceObject.useState)(null); - const chartWrapperRef = (0,external_react_namespaceObject.useRef)(null); - const onResize = () => { - if (tykChartInstance) { - tykChartInstance.resize(); - } - }; - const lineBarChart = { - defaultOpts: (0,external_immutable_namespaceObject.fromJS)({ - title: { - show: true, - text: title, - left: 0 - }, - color: [], - toolbox: { - right: "0", - orient: "horizontal", - itemSize: 15, - showTitle: true, - feature: null - }, - dataZoom: [{ - show: true, - start: 0, - end: 100, - orient: "horizontal", - dataBackground: { - lineStyle: { - color: (zoomColors == null ? void 0 : zoomColors.lineStyle) || "#368493" - }, - areaStyle: { - color: (zoomColors == null ? void 0 : zoomColors.areaStyle) || "#368493" - } - }, - handleStyle: { - color: (zoomColors == null ? void 0 : zoomColors.handleStyle) || "#368493" - }, - textStyle: { - color: (zoomColors == null ? void 0 : zoomColors.textStyle) || "#368493" - }, - borderColor: "transparent", - fillerColor: (zoomColors == null ? void 0 : zoomColors.fillerColor) || "rgba(54, 132, 147, 0.1)" - }], - legend: { - show: false - // data: [], - // right: '1%', - }, - tooltip: { - trigger: "axis", - axisPointer: { - type: "cross" - } - }, - grid: { - left: "1%", - right: "1%", - bottom: "50px", - top: "40px", - containLabel: true - }, - xAxis: { - boundaryGap: false, - type: "category", - splitLine: { - show: true, - lineStyle: { - type: "dotted", - color: "#F0F0F0" - } - }, - axisLine: { - show: false - }, - axisTick: { - show: false - }, - data: [] - }, - yAxis: { - min: "dataMin", - boundaryGap: true, - axisPointer: { - show: true - }, - splitLine: { - lineStyle: { - type: "dotted", - color: "#F0F0F0" - }, - show: true - }, - axisLabel: { - show: true - }, - axisLine: { - show: true - }, - axisTick: { - show: false - }, - type: "value" - }, - textStyle: { - color: "#5a5a68" - }, - series: [], - animationEasing: "elasticOut" - }), - seriesDefault: (0,external_immutable_namespaceObject.fromJS)({ - data: [], - type: "line", - areaStyle: { - opacity: 1, - color: areaStyleColors ? new external_echarts_namespaceObject.graphic.LinearGradient( - 0, - 0, - 1, - 1, - areaStyleColors.map((color, index) => ({ - offset: index, - color - })) - ) : [] - }, - smooth: false, - symbolSize: 7, - name: "" - }) - }; - const pieChart = { - defaultOpts: (0,external_immutable_namespaceObject.fromJS)({ - tooltip: { - trigger: "axis", - formatter: "{b}: {c} ({d}%)" - }, - legend: { - orient: "horizontal", - x: "left", - y: "top", - data: [] - }, - color: [], - series: [] - }), - seriesDefault: (0,external_immutable_namespaceObject.fromJS)({ - type: "pie", - center: [ - "50%", - "55%" - ], - radius: [ - "50%", - "75%" - ], - avoidLabelOverlap: false, - animationType: "scale", - animationEasing: "elasticOut", - labelLine: { - normal: { - show: true, - smooth: 0.2, - length: 6, - length2: 6 - } - }, - data: [] - }) - }; - const geoChart = { - defaultOpts: (0,external_immutable_namespaceObject.fromJS)({ - series: [] - }), - seriesDefault: (0,external_immutable_namespaceObject.fromJS)({ - type: "map", - data: [] - }) - }; - const buildChartOptions = (selectedType, selectedOptions, selectedSeries) => { - let finalOpts = {}; - switch (selectedType) { - case "pie": { - finalOpts = pieChart.defaultOpts.mergeDeep((0,external_immutable_namespaceObject.fromJS)(selectedOptions)).toJS(); - selectedSeries.forEach((entry) => { - finalOpts.series.push(pieChart.seriesDefault.mergeDeep((0,external_immutable_namespaceObject.fromJS)(entry)).toJS()); - }); - break; - } - case "geo": { - finalOpts = geoChart.defaultOpts.mergeDeep((0,external_immutable_namespaceObject.fromJS)(selectedOptions)).toJS(); - selectedSeries.forEach((entry) => { - finalOpts.series.push(geoChart.seriesDefault.mergeDeep((0,external_immutable_namespaceObject.fromJS)(entry)).toJS()); - }); - break; - } - default: { - finalOpts = lineBarChart.defaultOpts.mergeDeep((0,external_immutable_namespaceObject.fromJS)(selectedOptions)).toJS(); - if (Array.isArray(selectedOptions.yAxis)) { - finalOpts.yAxis = selectedOptions.yAxis; - } - selectedSeries.forEach((entry, index) => { - const seriesData = Object.assign( - {}, - lineBarChart.seriesDefault.toJS(), - seriesConfig[index], - entry - ); - finalOpts.series.push(seriesData); - }); - break; - } - } - return finalOpts; - }; - (0,external_react_namespaceObject.useEffect)(() => { - window.addEventListener("resize", onResize); - return () => { - window.removeEventListener("resize", onResize); - }; - }, [tykChartInstance]); - (0,external_react_namespaceObject.useEffect)(() => { - if (!(chartWrapperRef == null ? void 0 : chartWrapperRef.current)) { - return; - } - setTykChartInstance(external_echarts_namespaceObject.init(chartWrapperRef.current)); - return () => { - if (tykChartInstance) { - tykChartInstance.dispose(); - } - }; - }, [chartWrapperRef.current]); - const eventCallBack = (e) => { - if (onChange) { - onChange(e); - } - }; - (0,external_react_namespaceObject.useEffect)(() => { - let debouncedMethod; - if (tykChartInstance) { - debouncedMethod = debounce(eventCallBack, 500); - tykChartInstance.on("dataZoom", debouncedMethod); - tykChartInstance.on("restore", debouncedMethod); - tykChartInstance.on("click", debouncedMethod); - tykChartInstance.on("mousemove", (params) => { - if (params.data) { - tykChartInstance.getZr().setCursorStyle("pointer"); - } - }); - } - return () => { - if (tykChartInstance) { - tykChartInstance.off("dataZoom", debouncedMethod); - tykChartInstance.off("restore", debouncedMethod); - tykChartInstance.off("click", debouncedMethod); - } - }; - }, [tykChartInstance, onChange]); - const prevInstance = hooks_usePrevious(tykChartInstance); - const prevOption = hooks_usePrevious(option); - const prevType = hooks_usePrevious(type); - const prevSeries = hooks_usePrevious(series); - (0,external_react_namespaceObject.useEffect)(() => { - var _a, _b, _c, _d, _e, _f; - if (tykChartInstance && (!((_b = (_a = (0,external_immutable_namespaceObject.fromJS)(prevInstance)) == null ? void 0 : _a.equals) == null ? void 0 : _b.call(_a, (0,external_immutable_namespaceObject.fromJS)(tykChartInstance))) || !((_d = (_c = (0,external_immutable_namespaceObject.fromJS)(prevOption)) == null ? void 0 : _c.equals) == null ? void 0 : _d.call(_c, (0,external_immutable_namespaceObject.fromJS)(option))) || prevType !== type || !((_f = (_e = (0,external_immutable_namespaceObject.fromJS)(prevSeries)).equals) == null ? void 0 : _f.call(_e, (0,external_immutable_namespaceObject.fromJS)(series))))) { - tykChartInstance.clear(); - tykChartInstance.setOption(buildChartOptions(type, option, series)); - tykChartInstance.dispatchAction({ - type: "takeGlobalCursor", - key: "dataZoomSelect", - dataZoomSelectActive: true - }); - } - }, [tykChartInstance, option, series, type]); - (0,external_react_namespaceObject.useEffect)(() => { - if (tykChartInstance && highlight) { - tykChartInstance.dispatchAction({ - type: "highlight", - seriesIndex: highlight.seriesIndex, - dataIndex: highlight.dataIndex - }); - tykChartInstance.dispatchAction({ - type: "showTip", - seriesIndex: highlight.seriesIndex, - dataIndex: highlight.dataIndex - }); - } - }, [highlight]); - const prevZoomStart = hooks_usePrevious(zoomStart); - const prevZoomEnd = hooks_usePrevious(zoomEnd); - (0,external_react_namespaceObject.useEffect)(() => { - if (tykChartInstance && zoomStart !== -1 && zoomEnd !== -1 && (prevZoomStart !== zoomStart || prevZoomEnd !== zoomEnd)) { - tykChartInstance.dispatchAction({ - type: "dataZoom", - startValue: zoomStart, - endValue: zoomEnd - }); - } - }, [zoomStart, zoomEnd]); - const getStyle = () => { - const { style } = props; - const tempStyle = style || {}; - if (!tempStyle.height) { - tempStyle.height = "300px"; - } - if (!tempStyle.width) { - tempStyle.width = "100%"; - } - return tempStyle; - }; - const chartHasData = () => dataLoaded && (hasData === false || hasData === true) ? hasData : true; - const getCssClasses = () => { - const cssClasses = ["tyk-chart"]; - if (!dataLoaded) { - cssClasses.push("tyk-chart--loading-chart"); - } - if (!chartHasData()) { - cssClasses.push("tyk-chart--no-data"); - } - return cssClasses.join(" "); - }; - return /* @__PURE__ */ external_react_default().createElement( - "div", - { className: "tyk-chart__wrapper" }, - !dataLoaded ? /* @__PURE__ */ external_react_default().createElement(components_Loader, null) : null, - /* @__PURE__ */ external_react_default().createElement( - "div", - { - className: getCssClasses(), - style: getStyle(), - ref: chartWrapperRef - } - ), - /* eslint-disable-next-line no-nested-ternary */ - chartHasData() ? null : noDataComponent ? noDataComponent() : /* @__PURE__ */ external_react_default().createElement(components_Message, { theme: "info" }, "No data to display") - ); -}; -Chart.propTypes = { - areaStyleColors: external_prop_types_default().instanceOf(Array), - dataLoaded: (external_prop_types_default()).bool, - hasData: (external_prop_types_default()).bool, - highlight: external_prop_types_default().oneOfType([ - (external_prop_types_default()).number, - (external_prop_types_default()).string, - external_prop_types_default().instanceOf(Array) - ]), - noDataComponent: (external_prop_types_default()).func, - zoomStart: (external_prop_types_default()).number, - zoomEnd: (external_prop_types_default()).number, - zoomColors: external_prop_types_default().instanceOf(Object), - option: external_prop_types_default().instanceOf(Object), - onChange: (external_prop_types_default()).func, - style: external_prop_types_default().instanceOf(Object), - type: (external_prop_types_default()).string, - title: (external_prop_types_default()).string, - series: external_prop_types_default().instanceOf(Array), - seriesConfig: external_prop_types_default().instanceOf(Object) -}; -/* harmony default export */ const components_Chart = ((0,external_react_namespaceObject.memo)(Chart)); - -// EXTERNAL MODULE: ./node_modules/react-dom/client.js -var client = __webpack_require__(745); -;// CONCATENATED MODULE: ./src/components/Toast/js/ToastMessage.js - - - - -const ToastMessage = (props) => { - const { - children, - options, - onClose, - index - } = props; - const opts = Object.assign({ - theme: "success", - delay: 3e3 - }, options); - let timer; - const handleClose = (itemIndex) => { - onClose(itemIndex); - clearTimeout(timer); - }; - hooks_useTimeout(() => handleClose(index), opts.delay); - return /* @__PURE__ */ external_react_default().createElement( - components_Message, - { - className: "tyk-toast__message", - theme: opts.theme, - onClose: () => handleClose(index) - }, - children - ); -}; -ToastMessage.propTypes = { - children: external_prop_types_default().oneOfType([ - (external_prop_types_default()).element, - (external_prop_types_default()).node, - (external_prop_types_default()).string - ]), - options: external_prop_types_default().instanceOf(Object), - onClose: (external_prop_types_default()).func, - index: (external_prop_types_default()).number -}; -/* harmony default export */ const js_ToastMessage = (ToastMessage); - -;// CONCATENATED MODULE: ./src/components/Toast/js/ToastContainer.js -var ToastContainer_defProp = Object.defineProperty; -var ToastContainer_defProps = Object.defineProperties; -var ToastContainer_getOwnPropDescs = Object.getOwnPropertyDescriptors; -var ToastContainer_getOwnPropSymbols = Object.getOwnPropertySymbols; -var ToastContainer_hasOwnProp = Object.prototype.hasOwnProperty; -var ToastContainer_propIsEnum = Object.prototype.propertyIsEnumerable; -var ToastContainer_defNormalProp = (obj, key, value) => key in obj ? ToastContainer_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var ToastContainer_spreadValues = (a, b) => { - for (var prop in b || (b = {})) - if (ToastContainer_hasOwnProp.call(b, prop)) - ToastContainer_defNormalProp(a, prop, b[prop]); - if (ToastContainer_getOwnPropSymbols) - for (var prop of ToastContainer_getOwnPropSymbols(b)) { - if (ToastContainer_propIsEnum.call(b, prop)) - ToastContainer_defNormalProp(a, prop, b[prop]); - } - return a; -}; -var ToastContainer_spreadProps = (a, b) => ToastContainer_defProps(a, ToastContainer_getOwnPropDescs(b)); -var __restKey = (key) => typeof key === "symbol" ? key : key + ""; -var ToastContainer_objRest = (source, exclude) => { - var target = {}; - for (var prop in source) - if (ToastContainer_hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) - target[prop] = source[prop]; - if (source != null && ToastContainer_getOwnPropSymbols) - for (var prop of ToastContainer_getOwnPropSymbols(source)) { - if (exclude.indexOf(prop) < 0 && ToastContainer_propIsEnum.call(source, prop)) - target[prop] = source[prop]; - } - return target; -}; - - - -const ToastContainer = (props) => { - const [messages, setMessages] = (0,external_react_namespaceObject.useState)({}); - const { - notify - } = props; - const updateNotifications = (message, options) => { - const msgID = Math.floor(Math.random() * 1e6); - setMessages((prevMessages) => ToastContainer_spreadProps(ToastContainer_spreadValues({}, prevMessages), { - [msgID]: { - message, - options - } - })); - }; - (0,external_react_namespaceObject.useEffect)(() => { - notify(updateNotifications); - }, [messages]); - const onMessageClosed = (index) => { - const tempMessages = ToastContainer_spreadValues({}, messages); - delete tempMessages[index]; - setMessages((prevMessages) => { - const _a = prevMessages, { [index]: messageToBeRemoved } = _a, restMessages = ToastContainer_objRest(_a, [__restKey(index)]); - return restMessages; - }); - }; - return /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-toast__container" }, Object.keys(messages).map((msgID) => messages[msgID] ? /* @__PURE__ */ external_react_default().createElement( - js_ToastMessage, - { - options: messages[msgID].options, - onClose: onMessageClosed.bind(null, msgID), - index: msgID, - key: msgID - }, - messages[msgID].message - ) : null)); -}; -ToastContainer.propTypes = { - notify: (external_prop_types_default()).func -}; -/* harmony default export */ const js_ToastContainer = (ToastContainer); - -;// CONCATENATED MODULE: ./src/components/Toast/index.js -var Toast_defProp = Object.defineProperty; -var Toast_defProps = Object.defineProperties; -var Toast_getOwnPropDescs = Object.getOwnPropertyDescriptors; -var Toast_getOwnPropSymbols = Object.getOwnPropertySymbols; -var Toast_hasOwnProp = Object.prototype.hasOwnProperty; -var Toast_propIsEnum = Object.prototype.propertyIsEnumerable; -var Toast_defNormalProp = (obj, key, value) => key in obj ? Toast_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var Toast_spreadValues = (a, b) => { - for (var prop in b || (b = {})) - if (Toast_hasOwnProp.call(b, prop)) - Toast_defNormalProp(a, prop, b[prop]); - if (Toast_getOwnPropSymbols) - for (var prop of Toast_getOwnPropSymbols(b)) { - if (Toast_propIsEnum.call(b, prop)) - Toast_defNormalProp(a, prop, b[prop]); - } - return a; -}; -var Toast_spreadProps = (a, b) => Toast_defProps(a, Toast_getOwnPropDescs(b)); -var __publicField = (obj, key, value) => { - Toast_defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); - return value; -}; - - - -class ToastCreator { - constructor() { - __publicField(this, "bindNotify", (fn) => { - this.createNotification = fn; - }); - const el = document.createElement("div"); - el.className = "tyk-toast"; - document.body.appendChild(el); - const root = (0,client/* createRoot */.s)(el); - root.render(/* @__PURE__ */ external_react_default().createElement(js_ToastContainer, { notify: this.bindNotify })); - } - notify(message, options) { - if (this.createNotification) { - this.createNotification(message, options); - } - } - danger(message, options) { - this.notify(message, Toast_spreadProps(Toast_spreadValues({}, options), { theme: "danger" })); - } - success(message, options) { - this.notify(message, Toast_spreadProps(Toast_spreadValues({}, options), { theme: "success" })); - } - warning(message, options) { - this.notify(message, Toast_spreadProps(Toast_spreadValues({}, options), { theme: "warning" })); - } - info(message, options) { - this.notify(message, Toast_spreadProps(Toast_spreadValues({}, options), { theme: "info" })); - } -} -const toast = new ToastCreator(); -/* harmony default export */ const Toast = (toast); - -;// CONCATENATED MODULE: ./src/components/CopyToClipboard/index.js -var CopyToClipboard_defProp = Object.defineProperty; -var CopyToClipboard_getOwnPropSymbols = Object.getOwnPropertySymbols; -var CopyToClipboard_hasOwnProp = Object.prototype.hasOwnProperty; -var CopyToClipboard_propIsEnum = Object.prototype.propertyIsEnumerable; -var CopyToClipboard_defNormalProp = (obj, key, value) => key in obj ? CopyToClipboard_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var CopyToClipboard_spreadValues = (a, b) => { - for (var prop in b || (b = {})) - if (CopyToClipboard_hasOwnProp.call(b, prop)) - CopyToClipboard_defNormalProp(a, prop, b[prop]); - if (CopyToClipboard_getOwnPropSymbols) - for (var prop of CopyToClipboard_getOwnPropSymbols(b)) { - if (CopyToClipboard_propIsEnum.call(b, prop)) - CopyToClipboard_defNormalProp(a, prop, b[prop]); - } - return a; -}; - - - -const CopyToClipboard = (props) => { - const { - display, - copy, - children, - onCopy - } = props; - const txtRef = (0,external_react_namespaceObject.createRef)(); - const handleClick = (0,external_react_namespaceObject.useCallback)(() => { - if (onCopy) { - onCopy(); - } - if (!window.navigator.clipboard) { - txtRef.current.select(); - document.execCommand("copy"); - Toast.notify("copied", { theme: "success" }); - return; - } - window.navigator.clipboard.writeText(copy); - Toast.notify("copied", { theme: "success" }); - }, [onCopy, txtRef]); - return /* @__PURE__ */ external_react_default().createElement(external_react_namespaceObject.Fragment, null, /* @__PURE__ */ external_react_default().createElement(props.element, CopyToClipboard_spreadValues({ onClick: handleClick, onKeyUp: handleClick }, props), children || display), !window.navigator.clipboard ? /* @__PURE__ */ external_react_default().createElement("textarea", { ref: txtRef, className: "tyk-copy-to-clipboard", name: "copy", value: copy }, copy) : null); -}; -CopyToClipboard.propTypes = { - /** Callback function executed after text is copied */ - onCopy: (external_prop_types_default()).func, - /** Text to be copied */ - copy: (external_prop_types_default()).string.isRequired, - /** Text to be displayed */ - display: (external_prop_types_default()).string, - /** Children of custom element if you are using any custom element */ - children: external_prop_types_default().oneOfType([ - (external_prop_types_default()).element, - (external_prop_types_default()).string, - (external_prop_types_default()).object, - (external_prop_types_default()).node - ]) -}; -/* harmony default export */ const components_CopyToClipboard = (CopyToClipboard); - -// EXTERNAL MODULE: external "react-dom" -var external_react_dom_ = __webpack_require__(137); -var external_react_dom_default = /*#__PURE__*/__webpack_require__.n(external_react_dom_); -;// CONCATENATED MODULE: ./src/components/Modal/js/ModalFooter.js - - -function ModalFooter({ children }) { - return /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-modal__footer" }, children); -} -ModalFooter.propTypes = { - children: external_prop_types_default().oneOfType([ - (external_prop_types_default()).element, - (external_prop_types_default()).node, - (external_prop_types_default()).string - ]) -}; -/* harmony default export */ const js_ModalFooter = (ModalFooter); - -;// CONCATENATED MODULE: ./src/components/Modal/js/ModalBody.js - - -function ModalBody({ children }) { - return /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-modal__body" }, children); -} -ModalBody.propTypes = { - children: external_prop_types_default().oneOfType([ - (external_prop_types_default()).element, - (external_prop_types_default()).node, - (external_prop_types_default()).string - ]) -}; -/* harmony default export */ const js_ModalBody = (ModalBody); - -;// CONCATENATED MODULE: ./src/components/Modal/index.js -var Modal_defProp = Object.defineProperty; -var Modal_getOwnPropSymbols = Object.getOwnPropertySymbols; -var Modal_hasOwnProp = Object.prototype.hasOwnProperty; -var Modal_propIsEnum = Object.prototype.propertyIsEnumerable; -var Modal_defNormalProp = (obj, key, value) => key in obj ? Modal_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var Modal_spreadValues = (a, b) => { - for (var prop in b || (b = {})) - if (Modal_hasOwnProp.call(b, prop)) - Modal_defNormalProp(a, prop, b[prop]); - if (Modal_getOwnPropSymbols) - for (var prop of Modal_getOwnPropSymbols(b)) { - if (Modal_propIsEnum.call(b, prop)) - Modal_defNormalProp(a, prop, b[prop]); - } - return a; -}; -var Modal_objRest = (source, exclude) => { - var target = {}; - for (var prop in source) - if (Modal_hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) - target[prop] = source[prop]; - if (source != null && Modal_getOwnPropSymbols) - for (var prop of Modal_getOwnPropSymbols(source)) { - if (exclude.indexOf(prop) < 0 && Modal_propIsEnum.call(source, prop)) - target[prop] = source[prop]; - } - return target; -}; - - - - - - - -function Modal(_a) { - var _b = _a, { - children, - theme = "none", - disableCloseCommands = false, - opened = false, - onClose = () => { - }, - size = "md", - className = "", - showBackdrop = true - } = _b, restProps = Modal_objRest(_b, [ - "children", - "theme", - "disableCloseCommands", - "opened", - "onClose", - "size", - "className", - "showBackdrop" - ]); - const modalClasses = [ - "tyk-modal", - `tyk-modal--theme-${theme}`, - opened && "opened" - ].concat(className.split(" ")).filter(Boolean).join(" "); - const backdropClasses = [ - "tyk-modal__backdrop", - opened && "opened" - ].filter(Boolean).join(" "); - const themeIcon = { - success: "check", - warning: "warning", - danger: "delete" - }[theme]; - return /* @__PURE__ */ external_react_default().createElement((external_react_default()).Fragment, null, external_react_dom_default().createPortal( - /* @__PURE__ */ external_react_default().createElement( - external_react_transition_group_namespaceObject.CSSTransition, - { - in: opened, - timeout: 100, - classNames: "appear" - }, - /* @__PURE__ */ external_react_default().createElement("div", Modal_spreadValues({ className: modalClasses }, restProps), /* @__PURE__ */ external_react_default().createElement("div", { className: `tyk-modal__dialog tyk-modal--${size}` }, /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-modal__content" }, theme !== "none" && /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-modal__theme-header" }, /* @__PURE__ */ external_react_default().createElement(components_Icon, { family: "tykon", type: themeIcon })), children))) - ), - document.querySelector("body") - ), showBackdrop && external_react_dom_default().createPortal( - /* @__PURE__ */ external_react_default().createElement( - external_react_transition_group_namespaceObject.CSSTransition, - { - in: opened, - timeout: 100, - classNames: "fade" - }, - /* @__PURE__ */ external_react_default().createElement( - "button", - { - className: backdropClasses, - onClick: () => !disableCloseCommands && onClose(), - onKeyDown: () => { - }, - type: "button", - "aria-label": "Close" - } - ) - ), - document.querySelector("body") - )); -} -Modal.Body = js_ModalBody; -Modal.Footer = js_ModalFooter; -Modal.Header = ({ children }) => { - console.warn("%cModal.Header%c is deprecated.", "font-weight: bold", ""); - return /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-modal__header" }, children); -}; -Modal.Title = ({ children }) => { - console.warn("%cModal.Title%c is deprecated.", "font-weight: bold", ""); - return /* @__PURE__ */ external_react_default().createElement("h4", { className: "tyk-modal__title" }, children); -}; -Modal.propTypes = { - children: external_prop_types_default().oneOfType([ - (external_prop_types_default()).element, - (external_prop_types_default()).node, - (external_prop_types_default()).string - ]), - className: (external_prop_types_default()).string, - /** one of "success", "warning", "danger", "none"; default is "none" */ - theme: (external_prop_types_default()).string, - /** If set on true, the Modal won't close when clicking on the overlay or by pressing ESC key */ - disableCloseCommands: (external_prop_types_default()).bool, - /** If true the Modal will be by default opened */ - opened: (external_prop_types_default()).bool, - /** Callback method when the Modal is closed */ - onClose: (external_prop_types_default()).func, - /** Width of the Moda: md or lg */ - size: (external_prop_types_default()).string, - showBackdrop: (external_prop_types_default()).bool -}; -/* harmony default export */ const components_Modal = (Modal); - -;// CONCATENATED MODULE: ./src/components/Confirm/index.js - - - - -function Confirm(props) { - const { - children, - title, - description, - confirmBtnText = "Confirm", - cancelBtnText = "Cancel" - } = props; - const [open, setOpen] = (0,external_react_namespaceObject.useState)(false); - const [callback, setCallback] = (0,external_react_namespaceObject.useState)(null); - const [cancelCallback, setCancelCallback] = (0,external_react_namespaceObject.useState)(null); - const show = (callbackFunc, cancelCallbackFunc, beforeCallback) => (...args) => { - if (beforeCallback) { - beforeCallback(...args); - } - setOpen(true); - setCallback(() => () => callbackFunc(...args)); - if (cancelCallbackFunc) { - setCancelCallback(() => () => cancelCallbackFunc(...args)); - } - }; - const hide = () => { - setOpen(false); - setCallback(null); - setCancelCallback(null); - }; - const cancel = () => { - if (cancelCallback) { - cancelCallback(); - } - hide(); - }; - const confirm = () => { - callback(); - hide(); - }; - return /* @__PURE__ */ external_react_default().createElement((external_react_default()).Fragment, null, children(show), /* @__PURE__ */ external_react_default().createElement( - components_Modal, - { - opened: open, - onClose: cancel - }, - /* @__PURE__ */ external_react_default().createElement(components_Modal.Body, null, /* @__PURE__ */ external_react_default().createElement("h4", null, title), description), - /* @__PURE__ */ external_react_default().createElement(components_Modal.Footer, null, /* @__PURE__ */ external_react_default().createElement( - components_Button, - { - onClick: cancel, - theme: "default" - }, - cancelBtnText - ), /* @__PURE__ */ external_react_default().createElement( - components_Button, - { - onClick: confirm, - theme: "success" - }, - confirmBtnText - )) - )); -} -Confirm.propTypes = { - /** Sets the text for primary / confirmation button on opened modal */ - confirmBtnText: (external_prop_types_default()).string, - /** Sets the text for danger / abort button on opened modal */ - cancelBtnText: (external_prop_types_default()).string, - /** Sets the title for the opened modal */ - title: (external_prop_types_default()).string, - /** Sets the description for the opened modal */ - description: (external_prop_types_default()).string, - children: external_prop_types_default().oneOfType([ - (external_prop_types_default()).element, - (external_prop_types_default()).string, - (external_prop_types_default()).object, - (external_prop_types_default()).node, - (external_prop_types_default()).func - ]) -}; -/* harmony default export */ const components_Confirm = (Confirm); - -;// CONCATENATED MODULE: ./src/components/FixedWrapper/index.js - - - -function FixedWrapper({ children, className, showShadow }) { - const fixedWrapperRef = (0,external_react_namespaceObject.useRef)(null); - const attachShadow = (0,external_react_namespaceObject.useCallback)(() => { - const element = fixedWrapperRef.current; - if (!element) { - return; - } - if (window.scrollY) { - element.classList.add("tyk-fixed-wrapper--scrolled"); - } else { - element.classList.remove("tyk-fixed-wrapper--scrolled"); - } - }, [fixedWrapperRef.current]); - const debouncedAttachShadow = (0,external_react_namespaceObject.useCallback)(debounce(attachShadow, 100), [attachShadow]); - (0,external_react_namespaceObject.useEffect)(() => { - if (showShadow) { - window.addEventListener("scroll", debouncedAttachShadow); - } - return () => { - window.removeEventListener("scroll", debouncedAttachShadow); - }; - }, [debouncedAttachShadow, showShadow]); - return /* @__PURE__ */ external_react_default().createElement("div", { className: `tyk-fixed-wrapper ${className}`, ref: fixedWrapperRef }, children); -} -FixedWrapper.propTypes = { - children: external_prop_types_default().oneOfType([ - (external_prop_types_default()).element, - (external_prop_types_default()).node, - (external_prop_types_default()).string - ]), - /** Css classes that can be passed to the FixedWraper element */ - className: (external_prop_types_default()).string, - /** If true, bottom shadow on the FixedWrapper component - * is being displayed when scroll happens - */ - showShadow: (external_prop_types_default()).bool -}; -FixedWrapper.defaultProps = { - className: "" -}; -/* harmony default export */ const components_FixedWrapper = (FixedWrapper); - -;// CONCATENATED MODULE: ./src/components/InfiniteScroller/index.js - - - - - -function InfiniteScroller({ - children, - hasMore, - initialLoad, - loadMore, - pageNumber, - refChild -}) { - const [showLoader, setShowLoader] = (0,external_react_namespaceObject.useState)(false); - const containerRef = (0,external_react_namespaceObject.useRef)(null); - const refChildSize = hooks_useComponentSize(refChild); - (0,external_react_namespaceObject.useEffect)(() => { - if (initialLoad && typeof loadMore === "function") { - setShowLoader(false); - loadMore(pageNumber); - } - }, [initialLoad]); - const shouldLoad = (0,external_react_namespaceObject.useCallback)(() => { - if (!containerRef.current) - return false; - const { clientHeight, scrollTop } = containerRef.current; - return hasMore && (clientHeight + Math.round(scrollTop) === refChildSize.height || clientHeight >= refChildSize.height); - }, [containerRef, refChildSize.height]); - const loadMoreData = (0,external_react_namespaceObject.useCallback)(() => { - if (hasMore && typeof loadMore === "function") { - loadMore(pageNumber + 1); - setShowLoader(true); - } else { - setShowLoader(false); - } - }, [hasMore, pageNumber]); - const prevPageNumber = hooks_usePrevious(pageNumber); - const scrollHandler = (0,external_react_namespaceObject.useCallback)(debounce(() => { - if (shouldLoad() && prevPageNumber <= pageNumber) { - loadMoreData(); - } - }, 200), [loadMoreData, shouldLoad]); - (0,external_react_namespaceObject.useEffect)(() => { - var _a; - (_a = containerRef.current) == null ? void 0 : _a.addEventListener("scroll", scrollHandler); - return () => { - var _a2; - return (_a2 = containerRef.current) == null ? void 0 : _a2.removeEventListener("scroll", scrollHandler); - }; - }, [containerRef, scrollHandler]); - (0,external_react_namespaceObject.useEffect)(() => { - if (prevPageNumber > 0 && pageNumber === 0) { - containerRef.current.scrollTop = 0; - } - }, [containerRef, pageNumber]); - const prevRefChildSize = hooks_usePrevious(refChildSize); - (0,external_react_namespaceObject.useEffect)(() => { - if (refChildSize && prevRefChildSize && refChildSize.height !== prevRefChildSize.height && showLoader === true) { - setShowLoader(false); - } - }, [showLoader, refChildSize.height]); - (0,external_react_namespaceObject.useEffect)(() => { - if (refChild && refChildSize.height < containerRef.current.clientHeight && refChildSize.height && hasMore) { - loadMoreData(); - } - }, [containerRef, refChildSize, refChild, hasMore]); - return /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-infinite-scroller" }, /* @__PURE__ */ external_react_default().createElement( - "div", - { - className: "tyk-infinite-scroller__wrapper", - ref: containerRef - }, - children - ), showLoader && /* @__PURE__ */ external_react_default().createElement(components_Loader, { position: "absolute" })); -} -InfiniteScroller.propTypes = { - children: external_prop_types_namespaceObject.PropTypes.oneOfType([ - external_prop_types_namespaceObject.PropTypes.arrayOf(external_prop_types_namespaceObject.PropTypes.node), - external_prop_types_namespaceObject.PropTypes.node, - external_prop_types_namespaceObject.PropTypes.element, - external_prop_types_namespaceObject.PropTypes.string - ]), - hasMore: external_prop_types_namespaceObject.PropTypes.bool, - initialLoad: external_prop_types_namespaceObject.PropTypes.bool, - pageNumber: external_prop_types_namespaceObject.PropTypes.number, - loadMore: external_prop_types_namespaceObject.PropTypes.func, - refChild: external_prop_types_namespaceObject.PropTypes.instanceOf(Object) -}; -InfiniteScroller.defaultProps = { - hasMore: true -}; -/* harmony default export */ const components_InfiniteScroller = (InfiniteScroller); - -;// CONCATENATED MODULE: ./src/components/FloatingContainer/index.js -var FloatingContainer_defProp = Object.defineProperty; -var FloatingContainer_getOwnPropSymbols = Object.getOwnPropertySymbols; -var FloatingContainer_hasOwnProp = Object.prototype.hasOwnProperty; -var FloatingContainer_propIsEnum = Object.prototype.propertyIsEnumerable; -var FloatingContainer_defNormalProp = (obj, key, value) => key in obj ? FloatingContainer_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var FloatingContainer_spreadValues = (a, b) => { - for (var prop in b || (b = {})) - if (FloatingContainer_hasOwnProp.call(b, prop)) - FloatingContainer_defNormalProp(a, prop, b[prop]); - if (FloatingContainer_getOwnPropSymbols) - for (var prop of FloatingContainer_getOwnPropSymbols(b)) { - if (FloatingContainer_propIsEnum.call(b, prop)) - FloatingContainer_defNormalProp(a, prop, b[prop]); - } - return a; -}; - - - - -function FloatingContainer({ - element, - size = "auto", - forceDisplay = "auto", - displayAxis = "auto", - preferredPosition, - offset = 0, - className, - children, - infiniteScrollerConfig -}, ref) { - const localRef = (0,external_react_namespaceObject.useRef)(null); - const floatingContainerRef = ref || localRef; - const contentWrapperRef = (0,external_react_namespaceObject.useRef)(null); - function determineDisplay() { - const target = element.current; - const container = floatingContainerRef.current; - if (!container) - return (preferredPosition != null ? preferredPosition : displayAxis === "vertical") ? "bottom" : "right"; - const { left, top } = target.getBoundingClientRect(); - const topSpace = top; - const bottomSpace = window.innerHeight - top - target.offsetHeight; - const leftSpace = left; - const rightSpace = window.innerWidth - left - target.offsetWidth; - const hasTopSpace = topSpace > container.scrollHeight; - const hasBottomSpace = bottomSpace > container.scrollHeight; - const hasLeftSpace = leftSpace > container.offsetWidth; - const hasRightSpace = rightSpace > container.offsetWidth; - const positionedVerticallyFitsInViewport = left + target.offsetWidth / 2 - container.offsetWidth / 2 > 0; - const positionedHorizontallyFitsInViewport = top + target.offsetHeight / 2 - container.scrollHeight / 2 > 0; - if (displayAxis === "vertical" || displayAxis === "auto" && (hasTopSpace || hasBottomSpace) && positionedVerticallyFitsInViewport) { - if (preferredPosition === "top" && hasTopSpace) - return "top"; - if (preferredPosition === "bottom" && hasBottomSpace) - return "bottom"; - return hasBottomSpace || bottomSpace > topSpace ? "bottom" : "top"; - } - if (displayAxis === "horizontal") { - if (preferredPosition === "left" && hasLeftSpace) - return "left"; - if (preferredPosition === "right" && hasLeftSpace) - return "right"; - return hasRightSpace || rightSpace > leftSpace ? "right" : "left"; - } - if (hasTopSpace && positionedVerticallyFitsInViewport) - return "top"; - if (hasBottomSpace && positionedVerticallyFitsInViewport) - return "bottom"; - if (hasRightSpace && positionedHorizontallyFitsInViewport) - return "right"; - if (hasLeftSpace && positionedHorizontallyFitsInViewport) - return "left"; - return preferredPosition != null ? preferredPosition : "bottom"; - } - function adjustPosition() { - const display = forceDisplay !== "auto" ? forceDisplay : determineDisplay(); - const target = element.current; - const container = floatingContainerRef.current; - if (!target || !container) - return; - const targetPosition = target.getBoundingClientRect(); - if (display === "top") { - const topPos = targetPosition.top - container.offsetHeight - offset; - container.style.top = `${topPos}px`; - container.style.left = size === "auto" ? `${targetPosition.left + target.offsetWidth / 2 - container.offsetWidth / 2}px` : `${targetPosition.left}px`; - if (size === "matchElement") { - container.style.width = `${target.offsetWidth}px`; - } else if (typeof size === "function") { - container.style.width = `${size(target.offsetWidth)}px`; - } - container.style.maxHeight = `${targetPosition.top - offset}px`; - } - if (display === "bottom") { - container.style.top = `${targetPosition.bottom + offset}px`; - container.style.left = size === "auto" ? `${targetPosition.left + target.offsetWidth / 2 - container.offsetWidth / 2}px` : `${targetPosition.left}px`; - if (size === "matchElement") { - container.style.width = `${target.offsetWidth}px`; - } else if (typeof size === "function") { - container.style.width = `${size(target.offsetWidth)}px`; - } - container.style.maxHeight = `${window.innerHeight - targetPosition.bottom - offset}px`; - } - if (display === "left") { - const topPos = targetPosition.top + target.offsetHeight / 2 - container.offsetHeight / 2; - container.style.top = size === "auto" ? `${topPos}px` : `${targetPosition.top}px`; - container.style.left = `${targetPosition.left - container.offsetWidth - offset}px`; - if (size === "matchElement") { - container.style.height = `${target.offsetHeight}px`; - } else if (typeof size === "function") { - container.style.height = `${size(target.offsetHeight)}px`; - } - container.style.maxWidth = `${targetPosition.left - offset}px`; - } - if (display === "right") { - const topPos = targetPosition.top + target.offsetHeight / 2 - container.offsetHeight / 2; - container.style.top = size === "auto" ? `${topPos}px` : `${targetPosition.top}px`; - container.style.left = `${targetPosition.left + target.offsetWidth + offset}px`; - if (size === "matchElement") { - container.style.height = `${target.offsetHeight}px`; - } else if (typeof size === "function") { - container.style.height = `${size(target.offsetHeight)}px`; - } - container.style.maxWidth = `${window.innerWidth - targetPosition.left - target.offsetWidth - offset}px`; - } - } - (0,external_react_namespaceObject.useEffect)(() => { - window.requestAnimationFrame(function schedulePositionUpdate() { - adjustPosition(); - window.requestAnimationFrame(schedulePositionUpdate); - }); - }, []); - return (0,external_react_dom_.createPortal)( - /* @__PURE__ */ external_react_default().createElement( - "div", - { - className: `floating-container ${className || ""}`, - ref: floatingContainerRef - }, - /* @__PURE__ */ external_react_default().createElement( - components_InfiniteScroller, - FloatingContainer_spreadValues({ - refChild: contentWrapperRef - }, infiniteScrollerConfig), - /* @__PURE__ */ external_react_default().createElement( - "div", - { - className: "floating-container__content-wrapper", - ref: contentWrapperRef - }, - children - ) - ) - ), - document.querySelector("body") - ); -} -FloatingContainer.propTypes = { - /** A DOM element that the floating container will be displayed relative to. */ - element: external_prop_types_default().instanceOf(Object), - className: (external_prop_types_default()).string, - /** The size of the container. - * If `auto` the size will be determined by its contents. - * If `matchElement` it will take the width or the height of the element depending - * on the `displayAxis` prop. - * It can also be a function that returns a number representing the width - * or the height in pixels. - */ - size: external_prop_types_default().oneOfType([ - external_prop_types_default().oneOf(["auto", "matchElement"]), - (external_prop_types_default()).func - ]), - /** - * The distance between the element and the floating container. - * It can be positive or negative. - */ - offset: (external_prop_types_default()).number, - /** - * If `auto` the component will try to determine where to display the container relative to the - * element (top, bottom, left, right). - * It can also be one of top, bottom, left, right, to force the floating container to always be - * displayed in that position. - */ - forceDisplay: external_prop_types_default().oneOf(["auto", "top", "bottom", "left", "right"]), - /** - * It can be `auto`, `vertical` or `horizontal`. It specifies the axis where - * it will be displayed when `forceDisplay` is `auto`. - */ - displayAxis: external_prop_types_default().oneOf(["auto", "vertical", "horizontal"]), - /** - * If there is space on both sides of the axis preffer this side. - */ - preferredPosition: external_prop_types_default().oneOf(["top", "bottom", "left", "right"]), - /** - * Configuration object that will be passed to the infinite scroller component. - */ - infiniteScrollerConfig: external_prop_types_default().instanceOf(Object) -}; -/* harmony default export */ const components_FloatingContainer = ((0,external_react_namespaceObject.forwardRef)(FloatingContainer)); - -;// CONCATENATED MODULE: ./src/components/InfoNote/index.js - - - -function InfoNote({ children }) { - return /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-info-note" }, /* @__PURE__ */ external_react_default().createElement(components_Message, { theme: "info" }, children)); -} -InfoNote.propTypes = { - children: external_prop_types_default().oneOfType([ - (external_prop_types_default()).element, - (external_prop_types_default()).node, - (external_prop_types_default()).string - ]) -}; -/* harmony default export */ const components_InfoNote = (InfoNote); - -;// CONCATENATED MODULE: ./src/components/List/js/ListItem.js - - -const ListItem = (props) => { - const { - className, - children - } = props; - return /* @__PURE__ */ external_react_default().createElement("li", { className }, children); -}; -ListItem.propTypes = { - children: external_prop_types_default().oneOfType([ - external_prop_types_default().arrayOf((external_prop_types_default()).node), - (external_prop_types_default()).node, - (external_prop_types_default()).element, - (external_prop_types_default()).string - ]), - className: (external_prop_types_default()).string -}; -ListItem.defaultProps = { - className: "" -}; -/* harmony default export */ const js_ListItem = (ListItem); - -;// CONCATENATED MODULE: ./src/components/List/index.js - - - - -const List = (props) => { - const { - className, - children, - label, - labelwidth, - theme, - style - } = props; - const getCssClasses = () => { - let cssClasses = ["tyk-list"]; - if (theme) { - cssClasses.push(`tyk-list--${theme}`); - } - if (className) { - cssClasses = cssClasses.concat(className.split(" ")); - } - return cssClasses.join(" "); - }; - const getListStyle = () => { - const styleCopy = (0,external_immutable_namespaceObject.fromJS)(style).toJS(); - if (labelwidth) { - styleCopy.flexBasis = `calc(100% - ${labelwidth} - 20px)`; - } - return styleCopy; - }; - return /* @__PURE__ */ external_react_default().createElement("div", { className: `tyk-list__wrapper ${labelwidth ? "tyk-list--with-inline-label" : ""}` }, label !== void 0 ? /* @__PURE__ */ external_react_default().createElement( - "label", - { - style: { - flexBasis: labelwidth || "auto" - } - }, - label - ) : null, /* @__PURE__ */ external_react_default().createElement("ul", { className: getCssClasses(), style: getListStyle() }, children)); -}; -List.propTypes = { - children: external_prop_types_default().oneOfType([ - external_prop_types_default().arrayOf((external_prop_types_default()).node), - (external_prop_types_default()).node, - (external_prop_types_default()).element, - (external_prop_types_default()).string - ]), - className: (external_prop_types_default()).string, - label: (external_prop_types_default()).string, - labelwidth: (external_prop_types_default()).string, - theme: (external_prop_types_default()).string, - style: external_prop_types_default().instanceOf(Object) -}; -List.defaultProps = { - theme: "default", - style: {} -}; -List.Item = js_ListItem; -/* harmony default export */ const components_List = (List); - -;// CONCATENATED MODULE: ./src/components/NavBar/index.js - - -function NavBar({ - align = "center", - children, - left, - right, - title, - pre, - subtitle, - withTabs -}) { - const subtitleContent = subtitle ? /* @__PURE__ */ external_react_default().createElement("p", { className: "font-family-medium" }, subtitle) : null; - return /* @__PURE__ */ external_react_default().createElement("section", { className: `tyk-nav-bar ${withTabs ? "tyk-nav-bar__with-tabs" : ""}` }, /* @__PURE__ */ external_react_default().createElement("div", { className: `tyk-nav-bar__wrapper tyk-nav-bar--align-${align}` }, pre && /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-nav-bar__pre" }, pre), title ? /* @__PURE__ */ external_react_default().createElement("div", null, /* @__PURE__ */ external_react_default().createElement("h1", null, title), subtitleContent) : subtitleContent, /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-nav-bar__container" }, left && /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-nav-bar__left" }, left), right && /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-nav-bar__right" }, right))), children); -} -NavBar.propTypes = { - align: (external_prop_types_default()).string, - children: external_prop_types_default().oneOfType([ - external_prop_types_default().arrayOf((external_prop_types_default()).node), - (external_prop_types_default()).node, - (external_prop_types_default()).element, - (external_prop_types_default()).string - ]), - title: (external_prop_types_default()).string, - subtitle: (external_prop_types_default()).string, - pre: external_prop_types_default().oneOfType([ - (external_prop_types_default()).element, - (external_prop_types_default()).node - ]), - left: external_prop_types_default().oneOfType([ - (external_prop_types_default()).element, - (external_prop_types_default()).node - ]), - right: external_prop_types_default().oneOfType([ - (external_prop_types_default()).element, - (external_prop_types_default()).node - ]), - withTabs: (external_prop_types_default()).bool -}; -/* harmony default export */ const components_NavBar = (NavBar); - -;// CONCATENATED MODULE: ./src/components/Navigation/js/NavigationItem.js - - -function NavigationItem({ children }) { - return /* @__PURE__ */ external_react_default().createElement("li", { className: "tyk-navigation-item" }, children); -} -NavigationItem.propTypes = { - children: external_prop_types_default().oneOfType([ - external_prop_types_default().arrayOf((external_prop_types_default()).node), - (external_prop_types_default()).node, - (external_prop_types_default()).element, - (external_prop_types_default()).string - ]) -}; -/* harmony default export */ const js_NavigationItem = (NavigationItem); - -;// CONCATENATED MODULE: ./src/components/Navigation/index.js - - - -function Navigation({ children }) { - return /* @__PURE__ */ external_react_default().createElement("ul", { className: "tyk-navigation" }, children); -} -Navigation.propTypes = { - children: external_prop_types_default().oneOfType([ - external_prop_types_default().arrayOf((external_prop_types_default()).node), - (external_prop_types_default()).node, - (external_prop_types_default()).element, - (external_prop_types_default()).string - ]) -}; -Navigation.Item = js_NavigationItem; -/* harmony default export */ const components_Navigation = (Navigation); - -;// CONCATENATED MODULE: ./src/components/Panel/panel-context.js - -const PortalContext = (0,external_react_namespaceObject.createContext)(); - -;// CONCATENATED MODULE: ./src/components/Panel/js/PanelBody.js -var PanelBody_defProp = Object.defineProperty; -var PanelBody_defProps = Object.defineProperties; -var PanelBody_getOwnPropDescs = Object.getOwnPropertyDescriptors; -var PanelBody_getOwnPropSymbols = Object.getOwnPropertySymbols; -var PanelBody_hasOwnProp = Object.prototype.hasOwnProperty; -var PanelBody_propIsEnum = Object.prototype.propertyIsEnumerable; -var PanelBody_defNormalProp = (obj, key, value) => key in obj ? PanelBody_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var PanelBody_spreadValues = (a, b) => { - for (var prop in b || (b = {})) - if (PanelBody_hasOwnProp.call(b, prop)) - PanelBody_defNormalProp(a, prop, b[prop]); - if (PanelBody_getOwnPropSymbols) - for (var prop of PanelBody_getOwnPropSymbols(b)) { - if (PanelBody_propIsEnum.call(b, prop)) - PanelBody_defNormalProp(a, prop, b[prop]); - } - return a; -}; -var PanelBody_spreadProps = (a, b) => PanelBody_defProps(a, PanelBody_getOwnPropDescs(b)); -var PanelBody_objRest = (source, exclude) => { - var target = {}; - for (var prop in source) - if (PanelBody_hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) - target[prop] = source[prop]; - if (source != null && PanelBody_getOwnPropSymbols) - for (var prop of PanelBody_getOwnPropSymbols(source)) { - if (exclude.indexOf(prop) < 0 && PanelBody_propIsEnum.call(source, prop)) - target[prop] = source[prop]; - } - return target; -}; - - - - -function PanelBody(_a) { - var _b = _a, { - children, - noPadding, - className - } = _b, rest = PanelBody_objRest(_b, [ - "children", - "noPadding", - "className" - ]); - const getCssClasses = (0,external_react_namespaceObject.useCallback)( - () => [ - "tyk-panel__body", - className, - noPadding && "no-padding" - ].filter(Boolean).join(" "), - [className, noPadding] - ); - return /* @__PURE__ */ external_react_default().createElement(PortalContext.Consumer, null, (portalContext) => portalContext.collapsable ? /* @__PURE__ */ external_react_default().createElement( - components_Collapsible, - PanelBody_spreadProps(PanelBody_spreadValues({}, rest), { - collapsed: portalContext.collapsed, - className: getCssClasses() - }), - children - ) : /* @__PURE__ */ external_react_default().createElement( - "div", - PanelBody_spreadProps(PanelBody_spreadValues({}, rest), { - className: getCssClasses() - }), - children - )); -} -PanelBody.propTypes = { - children: external_prop_types_default().oneOfType([ - (external_prop_types_default()).element, - (external_prop_types_default()).node, - (external_prop_types_default()).string - ]), - noPadding: (external_prop_types_default()).bool, - className: (external_prop_types_default()).string -}; -/* harmony default export */ const js_PanelBody = (PanelBody); - -;// CONCATENATED MODULE: ./src/components/Panel/js/PanelFooter.js - - -const PanelFooter = (props) => { - const { children } = props; - return /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-panel__footer" }, children); -}; -PanelFooter.propTypes = { - children: external_prop_types_default().oneOfType([ - (external_prop_types_default()).element, - (external_prop_types_default()).node, - (external_prop_types_default()).string - ]) -}; -/* harmony default export */ const js_PanelFooter = (PanelFooter); - -;// CONCATENATED MODULE: ./src/components/Panel/js/PanelHeader.js -var PanelHeader_defProp = Object.defineProperty; -var PanelHeader_defNormalProp = (obj, key, value) => key in obj ? PanelHeader_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var PanelHeader_publicField = (obj, key, value) => { - PanelHeader_defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); - return value; -}; - - - - -class PanelHeader extends external_react_namespaceObject.Component { - getCssClasses(props) { - const { className } = this.props; - let cssClasses = ["tyk-panel__header"]; - if (props.collapsable) { - cssClasses.push("collapsable"); - } - if (className) { - cssClasses = cssClasses.concat(className.split(" ")); - } - return cssClasses.join(" "); - } - render() { - const { - children - } = this.props; - return /* @__PURE__ */ external_react_default().createElement(PortalContext.Consumer, null, (portalContext) => { - const HeaderTag = portalContext.theme === "blank" ? "h3" : "div"; - const iconType = portalContext.collapsed ? "chevron-down" : "chevron-up"; - return /* @__PURE__ */ external_react_default().createElement( - HeaderTag, - { - className: this.getCssClasses(portalContext), - onClick: portalContext.collapsable ? portalContext.onToggle : void 0 - }, - children, - portalContext.collapsable ? /* @__PURE__ */ external_react_default().createElement("div", { className: `collapsable__arrow-${portalContext.collapsibleIconPosition}` }, /* @__PURE__ */ external_react_default().createElement(components_Icon, { type: iconType })) : null - ); - }); - } -} -PanelHeader_publicField(PanelHeader, "propTypes", { - children: external_prop_types_default().oneOfType([ - (external_prop_types_default()).element, - (external_prop_types_default()).node, - (external_prop_types_default()).string - ]).isRequired, - className: (external_prop_types_default()).string -}); - -;// CONCATENATED MODULE: ./src/components/Panel/index.js - - - - - - -const Panel = (props) => { - const { - children, - className, - collapsed, - collapsable, - theme, - onToggleCollapse, - collapsibleIconPosition = "right" - } = props; - const [collapsedState, setCollapsedState] = (0,external_react_namespaceObject.useState)(collapsed || false); - (0,external_react_namespaceObject.useEffect)(() => { - if (collapsed !== collapsedState) { - setCollapsedState(collapsed); - } - }, [collapsed]); - const getCssClasses = () => { - let cssClasses = ["tyk-panel"]; - const panelTheme = `tyk-panel--${theme || "default"}`; - const collapsbleIconPosition = `tyk-panel__icon-collapse--${collapsibleIconPosition}`; - cssClasses.push(panelTheme); - cssClasses.push(collapsbleIconPosition); - if (className) { - cssClasses = cssClasses.concat(className.split(" ")); - } - if (collapsedState) { - cssClasses.push("tyk-panel--collapsed"); - } - return cssClasses.join(" "); - }; - const handleToggle = () => { - setCollapsedState(!collapsedState); - if (onToggleCollapse) { - onToggleCollapse(!collapsedState); - } - }; - return /* @__PURE__ */ external_react_default().createElement("div", { className: getCssClasses() }, /* @__PURE__ */ external_react_default().createElement( - PortalContext.Provider, - { - value: { - collapsable, - collapsed: collapsedState, - onToggle: handleToggle, - theme, - collapsibleIconPosition - } - }, - typeof children === "function" ? children({ - toggleCollapse: handleToggle - }) : children - )); -}; -Panel.propTypes = { - children: external_prop_types_default().oneOfType([ - (external_prop_types_default()).func, - (external_prop_types_default()).element, - (external_prop_types_default()).node, - (external_prop_types_default()).string - ]), - className: (external_prop_types_default()).string, - collapsable: (external_prop_types_default()).bool, - collapsibleIconPosition: (external_prop_types_default()).string, - collapsed: (external_prop_types_default()).bool, - theme: (external_prop_types_default()).string, - onToggleCollapse: (external_prop_types_default()).func -}; -Panel.Body = js_PanelBody; -Panel.Footer = js_PanelFooter; -Panel.Header = PanelHeader; -/* harmony default export */ const components_Panel = (Panel); - -;// CONCATENATED MODULE: ./src/components/Pill/index.js - - -const Pill = (props) => { - const { - children, - className, - theme - } = props; - const getCssClasses = () => { - let cssClasses = ["tyk-pill", ...theme.split(" ").map((t) => `tyk-pill--${t}`)]; - if (className) { - cssClasses = cssClasses.concat(className); - } - return cssClasses.join(" "); - }; - return /* @__PURE__ */ external_react_default().createElement("div", { className: getCssClasses() }, children); -}; -Pill.propTypes = { - children: external_prop_types_default().oneOfType([ - external_prop_types_default().arrayOf((external_prop_types_default()).node), - (external_prop_types_default()).node, - (external_prop_types_default()).element, - (external_prop_types_default()).string - ]), - /** Css classes that can be passed to the Pill element */ - className: (external_prop_types_default()).string, - /** Theme that can be applied to a Pill */ - theme: (external_prop_types_default()).string -}; -Pill.defaultProps = { - theme: "default" -}; -/* harmony default export */ const components_Pill = (Pill); - -;// CONCATENATED MODULE: ./src/components/RevealPanel/js/RevealPanelService.js -var __accessCheck = (obj, member, msg) => { - if (!member.has(obj)) - throw TypeError("Cannot " + msg); -}; -var __privateGet = (obj, member, getter) => { - __accessCheck(obj, member, "read from private field"); - return getter ? getter.call(obj) : member.get(obj); -}; -var __privateAdd = (obj, member, value) => { - if (member.has(obj)) - throw TypeError("Cannot add the same private member more than once"); - member instanceof WeakSet ? member.add(obj) : member.set(obj, value); -}; -var __privateSet = (obj, member, value, setter) => { - __accessCheck(obj, member, "write to private field"); - setter ? setter.call(obj, value) : member.set(obj, value); - return value; -}; -var _state, _panel, _gutter, _wrapper, _onHeightChangeCallbacks, _onDragStartCallbacks, _onDragEndCallbacks, _dragStarted; - -class RevealPanelService { - constructor() { - __privateAdd(this, _state, null); - // Private state for mouse interactions. - __privateAdd(this, _panel, null); - // The panel element to be resized. - __privateAdd(this, _gutter, null); - // The gutter element used for resizing. - __privateAdd(this, _wrapper, null); - // The wrapper element that contains the panel and gutter. - __privateAdd(this, _onHeightChangeCallbacks, []); - // Callback function to be executed when the panel is resized. - __privateAdd(this, _onDragStartCallbacks, []); - // Callback function to be executed when the panel is resized. - __privateAdd(this, _onDragEndCallbacks, []); - // Callback function to be executed when the panel is resized. - __privateAdd(this, _dragStarted, false); - } - /** - * Sets a callback function to be executed when the panel is resized. - * @param {function} callback - The callback function to be called on panel resize. - */ - on(eventName, listener) { - let list = null; - if (eventName === "onHeightChange") { - list = __privateGet(this, _onHeightChangeCallbacks); - } else if (eventName === "onDragStart") { - list = __privateGet(this, _onDragStartCallbacks); - } else if (eventName === "onDragEnd") { - list = __privateGet(this, _onDragEndCallbacks); - } - if (list) { - this.addListener(list, listener); - } - } - off(eventName, listener) { - let list = null; - if (eventName === "onHeightChange") { - list = __privateGet(this, _onHeightChangeCallbacks); - } else if (eventName === "onDragStart") { - list = __privateGet(this, _onDragStartCallbacks); - } else if (eventName === "onDragEnd") { - list = __privateGet(this, _onDragEndCallbacks); - } - if (list) { - this.removeListener(list, listener); - } - } - /** - * Sets the panel, gutter, and wrapper elements to be controlled by this class. - * @param {HTMLElement} wrapper - The wrapper element containing the panel and gutter. - * @param {HTMLElement} panel - The panel element to be resized. - * @param {HTMLElement} gutter - The gutter element used for resizing. - */ - setRefs(wrapper, panel, gutter) { - if (__privateGet(this, _panel) || __privateGet(this, _gutter) || __privateGet(this, _wrapper)) { - this.unbindEvents(); - } - __privateSet(this, _wrapper, wrapper); - __privateSet(this, _panel, panel); - __privateSet(this, _gutter, gutter); - __privateSet(this, _state, null); - this.bindEvents(); - } - /** - * Attaches event listeners for panel resizing. - */ - bindEvents() { - this.ensureRefs("bindEvents"); - __privateGet(this, _gutter).addEventListener("mousedown", this.onMouseDown.bind(this)); - document.addEventListener("mousemove", this.onMouseMove.bind(this)); - document.addEventListener("mouseup", this.onMouseUp.bind(this)); - } - /** - * Gets the current height of the panel. - * @returns {number} - The height of the panel in pixels. - */ - getHeight() { - this.ensureRefs("getHeight"); - const size = __privateGet(this, _panel).getBoundingClientRect(); - return size.height; - } - /** - * Handles the mouse down event, initiating the resizing process. - * @param {MouseEvent} e - The mouse event object. - */ - onMouseDown(e) { - this.ensureRefs("onMouseDown"); - __privateSet(this, _state, { - mouseDown: true, - initialRect: __privateGet(this, _panel).getBoundingClientRect(), - initialEvent: e - }); - } - /** - * Handles the mouse move event, adjusting the panel's height during resizing. - * @param {MouseEvent} e - The mouse event object. - */ - onMouseMove(e) { - this.ensureRefs("onMouseMove"); - if (!__privateGet(this, _state)) { - return; - } - const isButtonDown = this.isPrimaryMouseButtonDown(e); - if (!isButtonDown) { - this.onMouseUp(); - return; - } - if (!__privateGet(this, _dragStarted)) { - __privateSet(this, _dragStarted, true); - this.onDragStart.bind(this)(); - } - const newY = __privateGet(this, _state).initialEvent.y - e.y; - const finalHeight = Math.ceil(__privateGet(this, _state).initialRect.height + newY); - this.setHeight(`${finalHeight}px`, "mousemove"); - } - // eslint-disable-next-line class-methods-use-this - notifyListeners(list, value) { - if (list && Array.isArray(list) && list.length) { - list.forEach((fn) => { - if (typeof fn === "function") { - fn(value); - } - }); - } - } - // eslint-disable-next-line class-methods-use-this - addListener(list, listener) { - if (list && Array.isArray(list) && typeof listener === "function") { - list.push(listener); - } - } - // eslint-disable-next-line class-methods-use-this - removeListener(list, listener) { - if (list && Array.isArray(list) && typeof listener === "function" && list.length) { - const index = list.indexOf(listener); - if (index > -1) { - list.splice(index, 1); - } - } - } - onDragEnd() { - if (__privateGet(this, _dragStarted)) { - this.notifyListeners(__privateGet(this, _onDragEndCallbacks), this.getHeight()); - } - } - onDragStart() { - this.notifyListeners(__privateGet(this, _onDragStartCallbacks), this.getHeight()); - } - // eslint-disable-next-line class-methods-use-this - isPrimaryMouseButtonDown(e) { - const flags = e.buttons !== void 0 ? e.buttons : e.which; - const isDown = flags === 1; - return isDown; - } - /** - * Resets the state after the mouse up event, ending the resizing process. - */ - onMouseUp() { - __privateSet(this, _state, null); - this.onDragEnd.bind(this)(); - __privateSet(this, _dragStarted, false); - } - /** - * Sets the height of the panel. - * @param {string} height - The new height value as a CSS string (e.g., "100px"). - */ - setHeight(height) { - let heightVal = height; - this.ensureRefs("setHeight"); - if (typeof heightVal === "number") { - heightVal += "px"; - } - __privateGet(this, _panel).style.height = heightVal; - this.notifyListeners(__privateGet(this, _onHeightChangeCallbacks), this.getHeight()); - } - /** - * Ensures that the required elements (wrapper, panel, and gutter) are set. - * Throws an error if they are missing. - */ - ensureRefs(reason) { - if (!__privateGet(this, _panel) || !__privateGet(this, _gutter) || !__privateGet(this, _wrapper)) { - throw new Error( - `${reason}: Wrapper, panel, and gutter elements are required. Use setRefs method first.` - ); - } - } - /** - * Checks if the panel is hidden. - * @returns {boolean} - True if the panel is hidden; false otherwise. - */ - isHidden() { - this.ensureRefs("isHidden"); - return __privateGet(this, _wrapper).style.visibility === "hidden"; - } - /** - * Hides the panel by setting its visibility to "hidden". - */ - hide() { - this.ensureRefs("hide"); - __privateGet(this, _wrapper).style.visibility = "hidden"; - } - /** - * Shows the panel by setting its visibility to "visible". - */ - show() { - this.ensureRefs("show"); - __privateGet(this, _wrapper).style.visibility = "visible"; - } - /** - * Unbinds the event listeners added for resizing. - */ - unbindEvents() { - __privateSet(this, _onHeightChangeCallbacks, []); - __privateSet(this, _onDragStartCallbacks, []); - __privateSet(this, _onDragEndCallbacks, []); - __privateGet(this, _gutter).removeEventListener("mousedown", this.onMouseDown.bind(this)); - document.removeEventListener("mousemove", this.onMouseMove.bind(this)); - document.removeEventListener("mouseup", this.onMouseUp.bind(this)); - } - deinit() { - this.unbindEvents(); - } -} -_state = new WeakMap(); -_panel = new WeakMap(); -_gutter = new WeakMap(); -_wrapper = new WeakMap(); -_onHeightChangeCallbacks = new WeakMap(); -_onDragStartCallbacks = new WeakMap(); -_onDragEndCallbacks = new WeakMap(); -_dragStarted = new WeakMap(); -const useRevealPanelService = () => { - const revealPanelServiceRef = (0,external_react_namespaceObject.useRef)(new RevealPanelService()); - return revealPanelServiceRef.current; -}; - -;// CONCATENATED MODULE: ./src/components/RevealPanel/index.js - - - - -function RevealPanelHeaderLeft({ children }) { - return /* @__PURE__ */ external_react_default().createElement((external_react_default()).Fragment, null, children); -} -RevealPanelHeaderLeft.propTypes = { - children: external_prop_types_default().instanceOf({}) -}; -function RevealPanelHeaderRight({ children }) { - return /* @__PURE__ */ external_react_default().createElement((external_react_default()).Fragment, null, children); -} -RevealPanelHeaderRight.propTypes = { - children: external_prop_types_default().instanceOf({}) -}; -const mergeClasses = (...classNames) => classNames.map((it) => (it || "").trim()).filter(Boolean).join(" "); -const RevealPanel = (0,external_react_namespaceObject.forwardRef)(({ - children, - height, - onHeightChange = null, - onDragStart = null, - onDragEnd = null, - style = null, - parentSelector = null, - contentStyle, - contentClassName, - gutterClassName, - wrapperClassName - // eslint-disable-next-line consistent-return -}, ref) => { - const panelRef = (0,external_react_namespaceObject.useRef)(null); - const gutterRef = (0,external_react_namespaceObject.useRef)(null); - const wrapperRef = (0,external_react_namespaceObject.useRef)(null); - const panelService = useRevealPanelService(); - (0,external_react_namespaceObject.useEffect)(() => { - if (!panelRef.current || !gutterRef.current || !wrapperRef.current) { - return; - } - if (!panelService) { - return; - } - panelService.setRefs(wrapperRef.current, panelRef.current, gutterRef.current); - panelService.on("onHeightChange", onHeightChange); - panelService.on("onDragStart", onDragStart); - panelService.on("onDragEnd", onDragEnd); - panelService.setHeight(height, "initialize"); - return () => { - panelService.unbindEvents(); - }; - }, []); - (0,external_react_namespaceObject.useImperativeHandle)( - ref, - () => { - const bind = (func) => func.bind(panelService); - return { - getHeight: bind(panelService.getHeight), - setHeight: bind(panelService.setHeight), - hide: bind(panelService.hide), - show: bind(panelService.show), - isHidden: bind(panelService.isHidden), - deinit: bind(panelService.deinit), - on: bind(panelService.on), - off: bind(panelService.off) - }; - }, - [] - ); - let headerLeft = null; - let headerRight = null; - const contents = []; - external_react_default().Children.forEach(children, (child) => { - if (child && external_react_default().isValidElement(child)) { - if (child.type === RevealPanelHeaderLeft) { - headerLeft = child; - } else if (child.type === RevealPanelHeaderRight) { - headerRight = child; - } else { - contents.push(child); - } - } - }); - const element = /* @__PURE__ */ external_react_default().createElement("div", { className: mergeClasses("tyk-ui-reveal-wrapper", wrapperClassName || "cem"), ref: wrapperRef, style }, /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-ui-reveal-wrapper__hole" }), /* @__PURE__ */ external_react_default().createElement("div", { ref: gutterRef, className: mergeClasses("tyk-ui-reveal-wrapper__gutter", gutterClassName) }, /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-ui-reveal-wrapper__gutter__headerleft" }, headerLeft), /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-ui-reveal-wrapper__gutter__logo" }, " "), /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-ui-reveal-wrapper__gutter__headerright" }, headerRight)), /* @__PURE__ */ external_react_default().createElement("div", { ref: panelRef, className: mergeClasses("tyk-ui-reveal-wrapper__panel", contentClassName), style: contentStyle }, contents)); - if (parentSelector) { - return (0,external_react_dom_.createPortal)(element, document.querySelector(parentSelector)); - } -}); -RevealPanel.propTypes = { - children: external_prop_types_default().instanceOf({}), - height: (external_prop_types_default()).string, - onHeightChange: (external_prop_types_default()).func, - onDragStart: (external_prop_types_default()).func, - onDragEnd: (external_prop_types_default()).func, - parentSelector: (external_prop_types_default()).string, - style: external_prop_types_default().instanceOf({}), - contentStyle: external_prop_types_default().instanceOf({}), - contentClassName: (external_prop_types_default()).string, - gutterClassName: (external_prop_types_default()).string, - wrapperClassName: (external_prop_types_default()).string -}; -RevealPanel.HeaderLeft = RevealPanelHeaderLeft; -RevealPanel.HeaderRight = RevealPanelHeaderRight; -/* harmony default export */ const components_RevealPanel = (RevealPanel); - -;// CONCATENATED MODULE: ./src/components/Tabs/tabs-context.js - -const TabsContext = (0,external_react_namespaceObject.createContext)(); - -;// CONCATENATED MODULE: ./src/components/Tabs/js/TabContext.js - -/* harmony default export */ const TabContext = ((0,external_react_namespaceObject.createContext)()); - -;// CONCATENATED MODULE: ./src/components/Tabs/js/TabContent.js -var TabContent_defProp = Object.defineProperty; -var TabContent_getOwnPropSymbols = Object.getOwnPropertySymbols; -var TabContent_hasOwnProp = Object.prototype.hasOwnProperty; -var TabContent_propIsEnum = Object.prototype.propertyIsEnumerable; -var TabContent_defNormalProp = (obj, key, value) => key in obj ? TabContent_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var TabContent_spreadValues = (a, b) => { - for (var prop in b || (b = {})) - if (TabContent_hasOwnProp.call(b, prop)) - TabContent_defNormalProp(a, prop, b[prop]); - if (TabContent_getOwnPropSymbols) - for (var prop of TabContent_getOwnPropSymbols(b)) { - if (TabContent_propIsEnum.call(b, prop)) - TabContent_defNormalProp(a, prop, b[prop]); - } - return a; -}; - - - - -const TabContent = (props) => { - const { - addTab, - hideTab, - updateTab, - showTab, - children, - selectedPath, - tabData, - tabsId, - tabExists, - path, - rendered, - hideTabContent, - tabs - } = props; - (0,external_react_namespaceObject.useEffect)(() => { - const tempTabData = TabContent_spreadValues({}, tabData); - if (!tabExists(path)) { - addTab(tempTabData, path); - } - }, [tabData, path]); - const prevTabData = hooks_usePrevious(tabData); - (0,external_react_namespaceObject.useEffect)(() => { - if (tabExists(path) && (tabData == null ? void 0 : tabData.title) && ((prevTabData == null ? void 0 : prevTabData.title) !== (tabData == null ? void 0 : tabData.title) || prevTabData.selected !== tabData.selected)) { - const tempTabData = TabContent_spreadValues({}, tabData); - updateTab(tempTabData, path); - } - }, [tabData, path, prevTabData, tabs]); - (0,external_react_namespaceObject.useEffect)(() => { - showTab(path); - return () => hideTab(path); - }, []); - const shouldRender = (0,external_react_namespaceObject.useMemo)(() => { - if (!Object.keys(tabs).length) { - return false; - } - if (hideTabContent || tabs[tabData.id].show === false) { - return false; - } - if (!rendered) { - return tabExists(path); - } - return selectedPath && selectedPath.indexOf(tabData.id) > -1; - }, [hideTabContent, rendered, selectedPath, tabData, tabs]); - return shouldRender ? /* @__PURE__ */ external_react_default().createElement("div", { key: tabData.id, className: "tyk-tab__content", style: { display: selectedPath && selectedPath.indexOf(tabData.id) > -1 ? "block" : "none" } }, /* @__PURE__ */ external_react_default().createElement( - TabContext.Provider, - { - value: { - path, - tabsId - } - }, - children - )) : null; -}; -TabContent.propTypes = { - addTab: (external_prop_types_default()).func, - updateTab: (external_prop_types_default()).func, - hideTab: (external_prop_types_default()).func, - showTab: (external_prop_types_default()).func, - children: external_prop_types_default().oneOfType([ - external_prop_types_default().arrayOf((external_prop_types_default()).node), - (external_prop_types_default()).node, - (external_prop_types_default()).element, - (external_prop_types_default()).string - ]), - path: external_prop_types_default().instanceOf(Array), - hideTabContent: (external_prop_types_default()).bool, - rendered: (external_prop_types_default()).bool, - selectedPath: external_prop_types_default().instanceOf(Array), - tabExists: (external_prop_types_default()).func, - tabsId: (external_prop_types_default()).string, - tabData: external_prop_types_default().instanceOf(Object), - tabs: external_prop_types_default().instanceOf(Object) -}; -/* harmony default export */ const js_TabContent = (TabContent); - -;// CONCATENATED MODULE: ./src/components/Tabs/js/Tab.js - - - - - -const Tab = (props) => { - const { id } = props; - const tabsContext = (0,external_react_namespaceObject.useContext)(TabsContext); - const tabContext = (0,external_react_namespaceObject.useContext)(TabContext); - const { - tabExists, - selectedPath, - addTab, - updateTab, - hideTab, - showTab, - rendered, - hideTabContent, - tabs - } = tabsContext; - const { - children - } = props; - const [path, setPath] = (0,external_react_namespaceObject.useState)(""); - (0,external_react_namespaceObject.useEffect)(() => { - let tempPath; - if (tabContext && path) { - if (tabContext.tabsId === tabsContext.id) { - tempPath = tabContext.path.concat([id]); - } else { - tempPath = [id]; - } - } else { - tempPath = [id]; - } - setPath(tempPath); - }, [tabContext]); - if (!path) { - return null; - } - return /* @__PURE__ */ external_react_default().createElement(external_react_namespaceObject.Fragment, null, /* @__PURE__ */ external_react_default().createElement( - js_TabContent, - { - addTab, - updateTab, - hideTab, - showTab, - tabExists, - tabData: props, - path, - tabsId: tabsContext.id, - selectedPath, - rendered, - hideTabContent, - tabs - }, - children - )); -}; -Tab.propTypes = { - children: external_prop_types_default().oneOfType([ - external_prop_types_default().arrayOf((external_prop_types_default()).node), - (external_prop_types_default()).node, - (external_prop_types_default()).element, - (external_prop_types_default()).string - ]), - id: (external_prop_types_default()).string -}; -Tab.defaultProps = {}; -/* harmony default export */ const js_Tab = (Tab); - -;// CONCATENATED MODULE: ./src/components/Tabs/index.js -var Tabs_defProp = Object.defineProperty; -var Tabs_getOwnPropSymbols = Object.getOwnPropertySymbols; -var Tabs_hasOwnProp = Object.prototype.hasOwnProperty; -var Tabs_propIsEnum = Object.prototype.propertyIsEnumerable; -var Tabs_defNormalProp = (obj, key, value) => key in obj ? Tabs_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var Tabs_spreadValues = (a, b) => { - for (var prop in b || (b = {})) - if (Tabs_hasOwnProp.call(b, prop)) - Tabs_defNormalProp(a, prop, b[prop]); - if (Tabs_getOwnPropSymbols) - for (var prop of Tabs_getOwnPropSymbols(b)) { - if (Tabs_propIsEnum.call(b, prop)) - Tabs_defNormalProp(a, prop, b[prop]); - } - return a; -}; - - - - - - -const Tabs = (props) => { - const { - children, - className, - id, - onTabChange, - type, - hideTabContent - } = props; - const [tabs, setTabs] = (0,external_react_namespaceObject.useState)({}); - const [selectedPath, setSelectedPath] = (0,external_react_namespaceObject.useState)([]); - const [rendered, setRendered] = (0,external_react_namespaceObject.useState)(false); - const [initialPath, setInitialPath] = (0,external_react_namespaceObject.useState)(null); - (0,external_react_namespaceObject.useEffect)(() => { - setSelectedPath(initialPath); - }, [initialPath]); - const updateTabsList = (tabsState, path, tabData) => { - let tempTabsState = Object.assign({}, tabsState); - const tempTabData = Object.assign({}, tabData); - const tempPath = path.slice(0); - while (tempPath.length > 1) { - tempTabsState = tempTabsState[tempPath.shift()]; - if (!tempTabsState) { - tempTabsState = {}; - } - } - tempTabData.tempPath = tempPath; - tempTabsState[tempPath.shift()] = tempTabData; - return tempTabsState; - }; - const toggleTab = (tabsState, path) => { - let tempTabsState = Object.assign({}, tabsState); - const tempPath = path.slice(0); - while (tempPath.length > 1) { - tempTabsState = tempTabsState[tempPath.shift()]; - } - const key = tempPath.shift(); - if (tempTabsState[key].collapsed === void 0) { - tempTabsState[key].collapsed = true; - } else { - tempTabsState[key].collapsed = !tempTabsState[key].collapsed; - } - return tempTabsState; - }; - const getCssClasses = () => { - let cssClasses = ["tyk-tabs"]; - cssClasses.push(`tyk-tabs--${type || "default"}`); - if (className) { - cssClasses = cssClasses.concat(className.split(" ")); - } - return cssClasses.join(" "); - }; - const setCurrentSelectedPath = (path, tabData) => { - const tempPath = path.slice(0); - let tempRendered = true; - if (tabData.collapsible) { - tempPath.push(Object.keys(tabData.tabs)[0]); - tempRendered = false; - } - setTabs((prevTabs) => { - let tempTabs = Object.assign({}, prevTabs); - tempTabs = toggleTab(tempTabs, path); - return tempTabs; - }); - setSelectedPath(tempPath); - setRendered(tempRendered); - if (onTabChange) { - onTabChange(tabData); - } - }; - const getTabCssClass = (tabId) => { - const cssClasses = []; - if (selectedPath && selectedPath.indexOf(tabId) > -1) { - cssClasses.push("active"); - } - return cssClasses.join(" "); - }; - const genTabs = (currentTabs, path) => { - if (!currentTabs) { - return null; - } - return /* @__PURE__ */ external_react_default().createElement("ul", null, Object.keys(currentTabs).map((tabId, index) => { - const tempPath = path ? path.concat([currentTabs[tabId].id]) : [currentTabs[tabId].id]; - const iconType = currentTabs[tabId].collapsed ? "chevron-up" : "chevron-down"; - if (currentTabs[tabId].show === false) { - return null; - } - return /* @__PURE__ */ external_react_default().createElement("li", { className: getTabCssClass(currentTabs[tabId].id), key: currentTabs[tabId].id }, /* @__PURE__ */ external_react_default().createElement( - "button", - { - type: "button", - onClick: setCurrentSelectedPath.bind(null, tempPath, currentTabs[tabId]), - onKeyDown: setCurrentSelectedPath.bind(null, tempPath, currentTabs[tabId]), - tabIndex: index - }, - currentTabs[tabId].title, - currentTabs[tabId].collapsible ? /* @__PURE__ */ external_react_default().createElement(components_Icon, { className: "collapsable-arrow", type: iconType }) : null - ), currentTabs[tabId].collapsible ? /* @__PURE__ */ external_react_default().createElement( - components_Collapsible, - { - collapsed: currentTabs[tabId].collapsed - }, - genTabs(currentTabs[tabId].tabs, tempPath) - ) : genTabs(currentTabs[tabId].tabs, tempPath)); - })); - }; - const addTab = (tabData, path) => { - setTabs((prevTabs) => updateTabsList(Tabs_spreadValues({}, prevTabs), path, tabData)); - if (tabData.selected) { - setInitialPath(path); - } - }; - const updateTab = (tabData, path) => { - setTabs((prevTabs) => { - const tempTabs = Tabs_spreadValues({}, prevTabs); - tempTabs[tabData.id] = tabData; - return tempTabs; - }); - if (tabData.selected) { - setCurrentSelectedPath(path, tabData); - } - }; - const hideTab = (path) => { - setTabs((prevTabs) => { - const tempTabs = Tabs_spreadValues({}, prevTabs); - tempTabs[path].show = false; - return tempTabs; - }); - }; - const showTab = (path) => { - setTabs((prevTabs) => { - const tempTabs = Tabs_spreadValues({}, prevTabs); - tempTabs[path].show = true; - return tempTabs; - }); - }; - const tabExists = (path) => { - let tempTabs = Tabs_spreadValues({}, tabs); - const tempPath = path.slice(0); - while (tempPath.length > 1) { - tempTabs = tempTabs[tempPath.shift()]; - } - const key = tempPath.shift(); - return !!(tempTabs && tempTabs[key]); - }; - return /* @__PURE__ */ external_react_default().createElement("div", { className: getCssClasses() }, genTabs(tabs), /* @__PURE__ */ external_react_default().createElement( - TabsContext.Provider, - { - value: { - id, - addTab, - hideTab, - updateTab, - showTab, - tabExists, - selectedPath, - rendered, - hideTabContent, - tabs - } - }, - typeof children === "function" ? children({ - hideTab, - showTab - }) : children - )); -}; -Tabs.propTypes = { - className: (external_prop_types_default()).string, - children: external_prop_types_default().oneOfType([ - external_prop_types_default().arrayOf((external_prop_types_default()).node), - (external_prop_types_default()).node, - (external_prop_types_default()).element, - (external_prop_types_default()).string - ]), - hideTabContent: (external_prop_types_default()).bool, - id: (external_prop_types_default()).string, - onTabChange: (external_prop_types_default()).func, - type: (external_prop_types_default()).string -}; -Tabs.Tab = js_Tab; -/* harmony default export */ const components_Tabs = (Tabs); - -;// CONCATENATED MODULE: ./src/components/Tooltip/index.js -var Tooltip_defProp = Object.defineProperty; -var Tooltip_getOwnPropSymbols = Object.getOwnPropertySymbols; -var Tooltip_hasOwnProp = Object.prototype.hasOwnProperty; -var Tooltip_propIsEnum = Object.prototype.propertyIsEnumerable; -var Tooltip_defNormalProp = (obj, key, value) => key in obj ? Tooltip_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var Tooltip_spreadValues = (a, b) => { - for (var prop in b || (b = {})) - if (Tooltip_hasOwnProp.call(b, prop)) - Tooltip_defNormalProp(a, prop, b[prop]); - if (Tooltip_getOwnPropSymbols) - for (var prop of Tooltip_getOwnPropSymbols(b)) { - if (Tooltip_propIsEnum.call(b, prop)) - Tooltip_defNormalProp(a, prop, b[prop]); - } - return a; -}; -var Tooltip_objRest = (source, exclude) => { - var target = {}; - for (var prop in source) - if (Tooltip_hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) - target[prop] = source[prop]; - if (source != null && Tooltip_getOwnPropSymbols) - for (var prop of Tooltip_getOwnPropSymbols(source)) { - if (exclude.indexOf(prop) < 0 && Tooltip_propIsEnum.call(source, prop)) - target[prop] = source[prop]; - } - return target; -}; - - - - -function Tooltip(_a) { - var _b = _a, { - render, - className, - children, - position = "auto", - style, - icon = false, - closable, - isOpened = false, - additionalClickParents = [] - } = _b, props = Tooltip_objRest(_b, [ - "render", - "className", - "children", - "position", - "style", - "icon", - "closable", - "isOpened", - "additionalClickParents" - ]); - const [isActive, setIsActive] = (0,external_react_namespaceObject.useState)(false); - const wrapperRef = (0,external_react_namespaceObject.useRef)(null); - const tooltipRef = (0,external_react_namespaceObject.useRef)(null); - const activeEvents = closable ? { - onClick: () => setIsActive(true) - } : { - onMouseEnter: () => setIsActive(true), - onMouseLeave: () => setIsActive(false), - onFocus: () => setIsActive(true), - onBlur: () => setIsActive(false) - }; - const handleDocumentClick = (0,external_react_namespaceObject.useCallback)((e) => { - if ([...additionalClickParents, tooltipRef.current].some((p) => { - var _a2; - return (_a2 = p == null ? void 0 : p.contains) == null ? void 0 : _a2.call(p, e.target); - })) { - return; - } - setIsActive(false); - }, [additionalClickParents]); - (0,external_react_namespaceObject.useEffect)(() => { - document.addEventListener("click", handleDocumentClick, true); - return () => document.removeEventListener("click", handleDocumentClick, true); - }, [handleDocumentClick]); - (0,external_react_namespaceObject.useEffect)(() => { - setIsActive(isOpened); - }, [isOpened]); - const classes = ["tyk-tooltip", className].filter(Boolean).join(" "); - return /* @__PURE__ */ external_react_default().createElement( - "div", - Tooltip_spreadValues(Tooltip_spreadValues({ - className: "tyk-tooltip__wrapper", - style: Tooltip_spreadValues({ display: "inline-block" }, style), - ref: wrapperRef - }, activeEvents), props), - children, - isActive && /* @__PURE__ */ external_react_default().createElement( - components_FloatingContainer, - { - element: wrapperRef, - forceDisplay: position, - preferredPosition: "top", - offset: 20 - }, - /* @__PURE__ */ external_react_default().createElement("div", { className: classes, ref: tooltipRef }, icon && (icon === true ? /* @__PURE__ */ external_react_default().createElement(components_Icon, { family: "tykon", type: "help" }) : icon), /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-tooltip__content" }, render), closable && /* @__PURE__ */ external_react_default().createElement( - components_Icon, - { - family: "tykon", - type: "x", - onClick: (e) => { - e.stopPropagation(); - setIsActive(false); - } - } - )) - ) - ); -} -Tooltip.propTypes = { - children: (external_prop_types_default()).node.isRequired, - /** custom styles to apply on hovered element */ - style: external_prop_types_default().instanceOf(Object), - /** describes where the tooltip should be displayed in relation - * whith the hovered element: top, bottom, left, right - */ - position: (external_prop_types_default()).string, - /** content of the tooltip, can be a string or a React node element */ - render: external_prop_types_default().oneOfType([ - (external_prop_types_default()).node, - (external_prop_types_default()).string - ]), - /** additional tooltip classes */ - className: (external_prop_types_default()).string, - /** if `true` displays the "question mark" icon; - * optionally you can pass a different icon - */ - icon: external_prop_types_default().oneOfType([ - (external_prop_types_default()).bool, - (external_prop_types_default()).node - ]), - /** if `true` the tooltip is activated on click and an "x" is displayed to close it; - * if `false` the tooltip is activated on hover and it closes when no longer hovering - */ - closable: (external_prop_types_default()).bool, - /** handles the `isActive` state of the tooltip from outside */ - isOpened: (external_prop_types_default()).bool, - /** Additional dom elements to check if the document click was inside of them. - * Useful when you want to open the tooltip after an interaction - * with an element not inside the tooltip root. - */ - additionalClickParents: external_prop_types_default().instanceOf(Array) -}; -/* harmony default export */ const components_Tooltip = (Tooltip); - -;// CONCATENATED MODULE: ./src/components/TextEllipsis/index.js - - - -function TextEllipsis({ text, limit, position }) { - return text.length > limit ? /* @__PURE__ */ external_react_default().createElement(components_Tooltip, { render: text, position }, text.substring(0, limit), "...") : text; -} -TextEllipsis.propTypes = { - /** Text to be shrinked by TextEllipsis */ - text: (external_prop_types_default()).string, - /** Number of characters that TextEllipsis would leave visible */ - limit: (external_prop_types_default()).number, - /** tooltip position */ - position: (external_prop_types_default()).string -}; -/* harmony default export */ const components_TextEllipsis = (TextEllipsis); - -;// CONCATENATED MODULE: ./src/form/components/Pagination/index.js -var Pagination_defProp = Object.defineProperty; -var Pagination_defNormalProp = (obj, key, value) => key in obj ? Pagination_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var Pagination_publicField = (obj, key, value) => { - Pagination_defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); - return value; -}; - - -const shouldShowPage = (currentNr, pageNr, totalNrOfPages) => { - const basePageNr = 5; - const minimumNrOfPages = 10; - if (totalNrOfPages < minimumNrOfPages) { - return true; - } - if (pageNr < basePageNr && currentNr < basePageNr) { - return true; - } - if (pageNr > totalNrOfPages - basePageNr && currentNr > totalNrOfPages - basePageNr) { - return true; - } - if (currentNr >= pageNr - 2 && currentNr <= pageNr + 2) { - return true; - } - if ([0, 1, totalNrOfPages - 1, totalNrOfPages].indexOf(currentNr) > -1) { - return true; - } - return false; -}; -const getPagesArr = (nrOfPages, selectedPage) => { - let i; - const pagesArr = []; - for (i = 0; i <= nrOfPages; i += 1) { - if (shouldShowPage(i, selectedPage, nrOfPages)) { - if (i > pagesArr[pagesArr.length - 1]) { - pagesArr.push("..."); - } - pagesArr.push(i + 1); - } - } - return pagesArr; -}; -class Pagination extends external_react_namespaceObject.Component { - constructor(props) { - super(props); - const { - value, - totalNrOfPages - } = this.props; - this.state = { - prevProps: this.props, - selectedPage: value || 0, - pagesArray: getPagesArr(totalNrOfPages, value) - }; - this.pageKey = 0; - } - static getDerivedStateFromProps(nextProps, prevState) { - if (nextProps.value !== prevState.prevProps.value || nextProps.totalNrOfPages !== prevState.prevProps.totalNrOfPages) { - return { - selectedPage: nextProps.value, - pagesArray: getPagesArr(nextProps.totalNrOfPages, nextProps.value) - }; - } - return null; - } - getPageCssClass(pageNr) { - const { selectedPage } = this.state; - const cssClasses = []; - if (selectedPage === pageNr) { - cssClasses.push("active"); - } - return cssClasses.join(" "); - } - getPageKey() { - this.pageKey += 1; - return this.pageKey; - } - goToPage(pageNr) { - const { onChange, totalNrOfPages } = this.props; - this.setState({ - selectedPage: pageNr, - pagesArray: getPagesArr(totalNrOfPages, pageNr) - }, () => { - if (onChange) { - onChange(pageNr); - } - }); - } - render() { - const { totalNrOfPages } = this.props; - const { pagesArray, selectedPage } = this.state; - return /* @__PURE__ */ external_react_default().createElement(external_react_namespaceObject.Fragment, null, totalNrOfPages ? /* @__PURE__ */ external_react_default().createElement("ul", { className: "tyk-pagination" }, selectedPage > 0 && totalNrOfPages > 5 ? /* @__PURE__ */ external_react_default().createElement("li", null, /* @__PURE__ */ external_react_default().createElement("button", { onClick: this.goToPage.bind(this, selectedPage - 1), type: "button" }, "Previous")) : null, pagesArray.map((pageNr) => /* @__PURE__ */ external_react_default().createElement("li", { key: this.getPageKey(), className: this.getPageCssClass(pageNr - 1) }, pageNr !== "..." ? /* @__PURE__ */ external_react_default().createElement("button", { onClick: this.goToPage.bind(this, pageNr - 1), type: "button" }, pageNr) : /* @__PURE__ */ external_react_default().createElement("span", null, pageNr))), selectedPage < totalNrOfPages && totalNrOfPages > 5 ? /* @__PURE__ */ external_react_default().createElement("li", null, /* @__PURE__ */ external_react_default().createElement("button", { onClick: this.goToPage.bind(this, selectedPage + 1), type: "button" }, "Next")) : null) : null); - } -} -Pagination_publicField(Pagination, "propTypes", { - value: (external_prop_types_default()).number, - totalNrOfPages: (external_prop_types_default()).number, - onChange: (external_prop_types_default()).func -}); - -;// CONCATENATED MODULE: ./src/components/Table/tableContext.js - -const tableContext = (0,external_react_namespaceObject.createContext)(); - -;// CONCATENATED MODULE: ./src/components/Table/js/header-cell.js - - - - -const HeaderCell = ({ column }) => { - const { sortable } = column; - const [sortOrder, setSortOrder] = (0,external_react_namespaceObject.useState)((sortable == null ? void 0 : sortable.default) || "ASC"); - const { state, sendMessage } = (0,external_react_namespaceObject.useContext)(tableContext); - return /* @__PURE__ */ external_react_default().createElement( - "th", - { - key: column.id, - onClick: sortable ? () => { - sendMessage("sort", { column, sortOrder }); - setSortOrder(sortOrder === "ASC" ? "DESC" : "ASC"); - } : null, - className: state.maxHeight ? "fixed-header" : "" - }, - column.name, - column.sortable && /* @__PURE__ */ external_react_default().createElement("span", { className: "header-sort" }, /* @__PURE__ */ external_react_default().createElement(components_Icon, { family: "tykon", type: "arrowsort" })) - ); -}; -HeaderCell.propTypes = { - column: external_prop_types_default().instanceOf(Object) -}; - -;// CONCATENATED MODULE: ./src/components/Table/js/header.js -var header_defProp = Object.defineProperty; -var header_defProps = Object.defineProperties; -var header_getOwnPropDescs = Object.getOwnPropertyDescriptors; -var header_getOwnPropSymbols = Object.getOwnPropertySymbols; -var header_hasOwnProp = Object.prototype.hasOwnProperty; -var header_propIsEnum = Object.prototype.propertyIsEnumerable; -var header_defNormalProp = (obj, key, value) => key in obj ? header_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var header_spreadValues = (a, b) => { - for (var prop in b || (b = {})) - if (header_hasOwnProp.call(b, prop)) - header_defNormalProp(a, prop, b[prop]); - if (header_getOwnPropSymbols) - for (var prop of header_getOwnPropSymbols(b)) { - if (header_propIsEnum.call(b, prop)) - header_defNormalProp(a, prop, b[prop]); - } - return a; -}; -var header_spreadProps = (a, b) => header_defProps(a, header_getOwnPropDescs(b)); - - - -const Header = () => { - const [selectAll, setSelectAll] = (0,external_react_namespaceObject.useState)(false); - const { state, sendMessage } = (0,external_react_namespaceObject.useContext)(tableContext); - const { columns, selectable } = state; - const generateHeaders = () => columns.map((column) => /* @__PURE__ */ external_react_default().createElement( - HeaderCell, - { - key: column.id, - column - } - )); - const generateSelectable = () => { - var _a; - if (!selectable) { - return; - } - const Component = selectable.type; - return /* @__PURE__ */ external_react_default().createElement( - "th", - { - className: state.maxHeight ? "fixed-header" : "" - }, - (selectable == null ? void 0 : selectable.allowSelectAll) ? /* @__PURE__ */ external_react_default().createElement("div", { className: selectable == null ? void 0 : selectable.style }, /* @__PURE__ */ external_react_default().createElement( - Component, - header_spreadProps(header_spreadValues({}, selectable.values), { - onClick: () => { - setSelectAll(!selectAll); - sendMessage("header.selectAll.click", selectAll); - }, - onChange: (v) => { - sendMessage("header.selectAll.change", v); - } - }), - (_a = selectable.values) == null ? void 0 : _a.value - )) : selectable.name || "Select" - ); - }; - return /* @__PURE__ */ external_react_default().createElement("thead", null, /* @__PURE__ */ external_react_default().createElement("tr", null, selectable && selectable.position === "LEFT" && generateSelectable(), generateHeaders(), selectable && selectable.position === "RIGHT" && generateSelectable())); -}; - -;// CONCATENATED MODULE: ./src/form/components/Checkbox/index.js -var Checkbox_defProp = Object.defineProperty; -var Checkbox_defProps = Object.defineProperties; -var Checkbox_getOwnPropDescs = Object.getOwnPropertyDescriptors; -var Checkbox_getOwnPropSymbols = Object.getOwnPropertySymbols; -var Checkbox_hasOwnProp = Object.prototype.hasOwnProperty; -var Checkbox_propIsEnum = Object.prototype.propertyIsEnumerable; -var Checkbox_defNormalProp = (obj, key, value) => key in obj ? Checkbox_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var Checkbox_spreadValues = (a, b) => { - for (var prop in b || (b = {})) - if (Checkbox_hasOwnProp.call(b, prop)) - Checkbox_defNormalProp(a, prop, b[prop]); - if (Checkbox_getOwnPropSymbols) - for (var prop of Checkbox_getOwnPropSymbols(b)) { - if (Checkbox_propIsEnum.call(b, prop)) - Checkbox_defNormalProp(a, prop, b[prop]); - } - return a; -}; -var Checkbox_spreadProps = (a, b) => Checkbox_defProps(a, Checkbox_getOwnPropDescs(b)); -var Checkbox_objRest = (source, exclude) => { - var target = {}; - for (var prop in source) - if (Checkbox_hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) - target[prop] = source[prop]; - if (source != null && Checkbox_getOwnPropSymbols) - for (var prop of Checkbox_getOwnPropSymbols(source)) { - if (exclude.indexOf(prop) < 0 && Checkbox_propIsEnum.call(source, prop)) - target[prop] = source[prop]; - } - return target; -}; -var Checkbox_publicField = (obj, key, value) => { - Checkbox_defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); - return value; -}; - - -class Checkbox extends external_react_namespaceObject.Component { - getCssClasses() { - const { - inline, - disabled, - readOnly, - theme = "", - wrapperClassName = "" - } = this.props; - const cssClasses = [wrapperClassName]; - cssClasses.push("tyk-checkbox"); - if (inline) { - cssClasses.push("tyk-checkbox--inline"); - } - if (theme.trim()) { - cssClasses.push(...theme.split(" ").map((t) => `tyk-checkbox--theme-${t}`)); - } - if (disabled || readOnly) { - cssClasses.push("tyk-checkbox--is-disabled"); - } - return cssClasses.join(" "); - } - displayError() { - const { error } = this.props; - if (!error) - return null; - return /* @__PURE__ */ external_react_default().createElement("p", { className: "tyk-form-control__error-message" }, error); - } - displayNote() { - const { note } = this.props; - if (!note) - return null; - return /* @__PURE__ */ external_react_default().createElement("p", { className: "tyk-form-control__help-block" }, note); - } - render() { - const _a = this.props, { - input, - value, - label - } = _a, rest = Checkbox_objRest(_a, [ - "input", - "value", - "label" - ]); - return /* @__PURE__ */ external_react_default().createElement( - "div", - { - className: this.getCssClasses() - }, - /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-form-control__wrapper" }, /* @__PURE__ */ external_react_default().createElement("label", null, /* @__PURE__ */ external_react_default().createElement( - "input", - Checkbox_spreadProps(Checkbox_spreadValues(Checkbox_spreadValues({ - checked: input ? input.value : value - }, input), rest), { - type: "checkbox" - }) - ), label), this.displayNote(), this.displayError()) - ); - } -} -Checkbox_publicField(Checkbox, "propTypes", { - /** Disable a checkbox */ - disabled: (external_prop_types_default()).bool, - /** Readonly prop behaves the same as disable on checkboxes */ - readOnly: (external_prop_types_default()).bool, - /** Align checkbox with in same line with other elements */ - inline: (external_prop_types_default()).bool, - /** Set a theme for checkbox */ - theme: (external_prop_types_default()).string, - /** Set an error state for checkbox if boolean will show just icon without message */ - error: external_prop_types_default().oneOfType([ - (external_prop_types_default()).string, - (external_prop_types_default()).bool - ]), - /** Adds additional information under the checkbox element */ - note: (external_prop_types_default()).string, - input: external_prop_types_default().instanceOf(Object), - /** Adds a label to checkbox */ - label: external_prop_types_default().oneOfType([ - external_prop_types_default().arrayOf((external_prop_types_default()).node), - (external_prop_types_default()).node, - (external_prop_types_default()).element, - (external_prop_types_default()).func, - (external_prop_types_default()).string - ]), - /** Set a name for checkbox */ - name: (external_prop_types_default()).string, - /** Set initial value for checkbox */ - value: external_prop_types_default().oneOfType([ - (external_prop_types_default()).string, - (external_prop_types_default()).bool - ]), - /** Make checkbox checked by default */ - checked: external_prop_types_default().oneOfType([ - (external_prop_types_default()).string, - (external_prop_types_default()).bool - ]), - /** Callback function executed on change of checkbox */ - onChange: (external_prop_types_default()).func, - /** CSS classes added to the wrapper of the component */ - wrapperClassName: (external_prop_types_default()).string -}); - -;// CONCATENATED MODULE: ./src/components/Table/js/cell.js -var cell_defProp = Object.defineProperty; -var cell_getOwnPropSymbols = Object.getOwnPropertySymbols; -var cell_hasOwnProp = Object.prototype.hasOwnProperty; -var cell_propIsEnum = Object.prototype.propertyIsEnumerable; -var cell_defNormalProp = (obj, key, value) => key in obj ? cell_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var cell_spreadValues = (a, b) => { - for (var prop in b || (b = {})) - if (cell_hasOwnProp.call(b, prop)) - cell_defNormalProp(a, prop, b[prop]); - if (cell_getOwnPropSymbols) - for (var prop of cell_getOwnPropSymbols(b)) { - if (cell_propIsEnum.call(b, prop)) - cell_defNormalProp(a, prop, b[prop]); - } - return a; -}; - - -const Cell = ({ col, row }) => { - var _a, _b, _c, _d, _e; - if (!row.values[col.id]) { - return /* @__PURE__ */ external_react_default().createElement("td", null); - } - if (col.type === "string") { - return ( - // eslint-disable-next-line jsx-a11y/click-events-have-key-events - /* @__PURE__ */ external_react_default().createElement( - "td", - cell_spreadValues({ - className: ((_a = row.values[col.id].styling) == null ? void 0 : _a.className) || null - }, (_b = row == null ? void 0 : row.values[col.id]) == null ? void 0 : _b.events), - (_c = row.values[col.id]) == null ? void 0 : _c.value - ) - ); - } - const Component = col.type; - return /* @__PURE__ */ external_react_default().createElement( - "td", - cell_spreadValues({ - className: ((_d = row.values[col.id].styling) == null ? void 0 : _d.className) || null - }, (_e = row == null ? void 0 : row.values[col.id]) == null ? void 0 : _e.events), - /* @__PURE__ */ external_react_default().createElement( - Component, - cell_spreadValues({}, row.values[col.id].props), - row.values[col.id].children ? row.values[col.id].children : null - ) - ); -}; -Cell.propTypes = { - col: external_prop_types_default().instanceOf(Object), - row: external_prop_types_default().instanceOf(Object), - index: (external_prop_types_default()).number -}; - -;// CONCATENATED MODULE: ./src/components/Table/js/row.js - - - - - -const Row = ({ row, index }) => { - var _a, _b; - const { state, sendMessage } = (0,external_react_namespaceObject.useContext)(tableContext); - const { columns, selectable } = state; - const SelectableCheckbox = () => /* @__PURE__ */ external_react_default().createElement("td", null, /* @__PURE__ */ external_react_default().createElement( - Checkbox, - { - defaultChecked: row.selected, - onChange: (v) => sendMessage("row.selected", { index, selected: v }) - } - )); - return /* @__PURE__ */ external_react_default().createElement( - "tr", - { - onClick: (_a = row.events) == null ? void 0 : _a.onClick, - className: (_b = row.styling) == null ? void 0 : _b.className - }, - selectable && selectable.position === "LEFT" && SelectableCheckbox(), - columns.map((col) => /* @__PURE__ */ external_react_default().createElement(Cell, { key: col.id, col, row, index })), - selectable && selectable.position === "RIGHT" && SelectableCheckbox() - ); -}; -Row.propTypes = { - row: external_prop_types_default().instanceOf(Object), - index: (external_prop_types_default()).number -}; - -;// CONCATENATED MODULE: ./src/components/Table/js/body.js - - - -const Body = () => { - const { state } = (0,external_react_namespaceObject.useContext)(tableContext); - const { rows } = state; - return /* @__PURE__ */ external_react_default().createElement( - "tbody", - null, - // eslint-disable-next-line react/no-array-index-key - rows.map((row, i) => /* @__PURE__ */ external_react_default().createElement(Row, { key: i, row, index: i })) - ); -}; - -;// CONCATENATED MODULE: ./src/components/Table/index.js -var Table_defProp = Object.defineProperty; -var Table_defProps = Object.defineProperties; -var Table_getOwnPropDescs = Object.getOwnPropertyDescriptors; -var Table_getOwnPropSymbols = Object.getOwnPropertySymbols; -var Table_hasOwnProp = Object.prototype.hasOwnProperty; -var Table_propIsEnum = Object.prototype.propertyIsEnumerable; -var Table_defNormalProp = (obj, key, value) => key in obj ? Table_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var Table_spreadValues = (a, b) => { - for (var prop in b || (b = {})) - if (Table_hasOwnProp.call(b, prop)) - Table_defNormalProp(a, prop, b[prop]); - if (Table_getOwnPropSymbols) - for (var prop of Table_getOwnPropSymbols(b)) { - if (Table_propIsEnum.call(b, prop)) - Table_defNormalProp(a, prop, b[prop]); - } - return a; -}; -var Table_spreadProps = (a, b) => Table_defProps(a, Table_getOwnPropDescs(b)); - - - - - - - - - -function Table({ - value, - onChange, - noDataMessage, - loading, - infiniteScrolling -}) { - var _a; - const [state, setState] = (0,external_react_namespaceObject.useState)(null); - const [onChangeMsg, setOnChangeMsg] = (0,external_react_namespaceObject.useState)("api"); - const itemsListRef = (0,external_react_namespaceObject.useRef)(null); - const sortRows = (col, sortOrder) => { - setState(Table_spreadProps(Table_spreadValues({}, state), { - sort: { - order: sortOrder, - col - } - })); - }; - const selectAllRows = (data) => { - setState(Table_spreadProps(Table_spreadValues({}, state), { - rows: state.rows.map((row) => Table_spreadProps(Table_spreadValues({}, row), { selected: data })) - })); - }; - const selectRow = (data) => { - const { index, selected } = data; - const selectedRow = state.rows[index]; - setState(Table_spreadProps(Table_spreadValues({}, state), { - rows: [ - ...state.rows.slice(0, index), - Table_spreadProps(Table_spreadValues({}, selectedRow), { selected }), - ...state.rows.slice(index + 1) - ] - })); - }; - const setPagination = (data) => { - setState(Table_spreadProps(Table_spreadValues({}, state), { - pagination: Table_spreadProps(Table_spreadValues({}, state.pagination), { - current: data + 1 - }) - })); - }; - const api = { - getState: () => state, - setState: (newState) => setState(newState) - }; - const sendMessage = (message, data) => { - setOnChangeMsg(message); - if (message === "sort") { - sortRows(data.column.id, data.sortOrder); - } - if (message === "header.selectAll.click") { - selectAllRows(data); - } - if (message === "header.selectAll.change") { - selectAllRows(data); - } - if (message === "row.selected") { - selectRow(data); - } - if (message === "pagination.change") { - setPagination(data); - } - }; - (0,external_react_namespaceObject.useEffect)(() => setState(value), [value]); - (0,external_react_namespaceObject.useEffect)(() => { - if (onChange) { - onChange(onChangeMsg, state, api); - } - setOnChangeMsg("api"); - }, [state]); - if (!state) { - return /* @__PURE__ */ external_react_default().createElement(components_Loader, { position: "absolute" }); - } - if (state.rows <= 0) { - return /* @__PURE__ */ external_react_default().createElement(components_Message, { theme: "info" }, noDataMessage || "No Data Available"); - } - const getTable = () => /* @__PURE__ */ external_react_default().createElement("table", { className: "tyk-table", ref: itemsListRef }, /* @__PURE__ */ external_react_default().createElement(Header, null), /* @__PURE__ */ external_react_default().createElement(Body, null)); - return /* @__PURE__ */ external_react_default().createElement(tableContext.Provider, { value: { state, sendMessage } }, /* @__PURE__ */ external_react_default().createElement("div", { className: `scrollable ${((_a = state.styling) == null ? void 0 : _a.className) || ""}`, style: { height: state.maxHeight ? state.maxHeight : "auto", position: "relative" } }, loading && /* @__PURE__ */ external_react_default().createElement(components_Loader, { position: "absolute", withbackground: true }), infiniteScrolling && state.pagination ? /* @__PURE__ */ external_react_default().createElement( - components_InfiniteScroller, - { - refChild: itemsListRef, - hasMore: state.pagination.totalPages > state.pagination.current, - loadMore: (num) => sendMessage("pagination.change", num), - pageNumber: state.pagination.current - 1, - initialLoad: false - }, - getTable() - ) : getTable()), state.pagination && !infiniteScrolling && /* @__PURE__ */ external_react_default().createElement("div", { className: "new-table-pagination" }, /* @__PURE__ */ external_react_default().createElement( - Pagination, - { - value: state.pagination.current - 1, - nrItemsOnPage: state.pagination.perPage - 1, - totalNrOfPages: state.pagination.totalPages - 1, - onChange: (num) => sendMessage("pagination.change", num) - } - ))); -} -Table.propTypes = { - /** Configuration object used to render the component */ - value: external_prop_types_default().shape({ - /** Configuration for table columns */ - columns: external_prop_types_default().arrayOf(external_prop_types_default().shape({ - /** Unique id of the column */ - id: (external_prop_types_default()).string.isRequired, - /** Name of the column */ - name: (external_prop_types_default()).string, - /** Type of column, String by default */ - type: external_prop_types_default().oneOfType([ - /** Just renders cell data of type strings */ - (external_prop_types_default()).string, - /** Render cell of elements (eg. Input / Button) */ - (external_prop_types_default()).element, - /** Render a custom function/component */ - (external_prop_types_default()).func - ]), - sortable: external_prop_types_default().oneOfType([ - /** Make Column sortable */ - (external_prop_types_default()).bool, - /** Configure sorting behaviour */ - external_prop_types_default().shape({ - /** Set default sorting direction ASC / DESC */ - default: (external_prop_types_default()).string - }) - ]) - })), - /** Configuration for table rows */ - rows: external_prop_types_default().arrayOf(external_prop_types_default().shape({})), - /** Configuration to make table rows selectable */ - selectable: external_prop_types_default().shape({}), - /** Renders pagination for table if the object is missing / empty no pagination is rendered. */ - pagination: external_prop_types_default().shape({}), - /** Sets maximum height for table container. */ - maxHeight: (external_prop_types_default()).string, - /** Styling for the table container. */ - styling: external_prop_types_default().shape({ - /** It's recommended to add styles to a class and pass the class in this object */ - className: (external_prop_types_default()).string - }) - }).isRequired, - /** Callback executed with message and value when there are changes on table */ - onChange: (external_prop_types_default()).func, - /** Renders a component with the given message when `config.rows` is empty */ - noDataMessage: (external_prop_types_default()).string, - /** Show placeholder loader */ - loading: (external_prop_types_default()).bool, - /** Adds infinite scroller on page and calls `onChange` with `pagination.change` message */ - infiniteScrolling: (external_prop_types_default()).bool -}; -Table.defaultProps = { - loading: false, - infiniteScrolling: false, - noDataMessage: "No Data Available", - onChange: null -}; -/* harmony default export */ const components_Table = (Table); - -;// CONCATENATED MODULE: ./src/layout/Column/index.js -var Column_defProp = Object.defineProperty; -var Column_defProps = Object.defineProperties; -var Column_getOwnPropDescs = Object.getOwnPropertyDescriptors; -var Column_getOwnPropSymbols = Object.getOwnPropertySymbols; -var Column_hasOwnProp = Object.prototype.hasOwnProperty; -var Column_propIsEnum = Object.prototype.propertyIsEnumerable; -var Column_defNormalProp = (obj, key, value) => key in obj ? Column_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var Column_spreadValues = (a, b) => { - for (var prop in b || (b = {})) - if (Column_hasOwnProp.call(b, prop)) - Column_defNormalProp(a, prop, b[prop]); - if (Column_getOwnPropSymbols) - for (var prop of Column_getOwnPropSymbols(b)) { - if (Column_propIsEnum.call(b, prop)) - Column_defNormalProp(a, prop, b[prop]); - } - return a; -}; -var Column_spreadProps = (a, b) => Column_defProps(a, Column_getOwnPropDescs(b)); -var Column_objRest = (source, exclude) => { - var target = {}; - for (var prop in source) - if (Column_hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) - target[prop] = source[prop]; - if (source != null && Column_getOwnPropSymbols) - for (var prop of Column_getOwnPropSymbols(source)) { - if (exclude.indexOf(prop) < 0 && Column_propIsEnum.call(source, prop)) - target[prop] = source[prop]; - } - return target; -}; -var Column_publicField = (obj, key, value) => { - Column_defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); - return value; -}; - - -class Column extends external_react_namespaceObject.PureComponent { - getCssClasses() { - const { - align, - className, - offset, - size - } = this.props; - const colSize = size.split(" "); - const colOffsets = offset ? offset.split(" ") : []; - let cssClasses = colSize.map((cSize) => `tyk-col--${cSize}`); - const offsets = colOffsets.map((cOffset) => `tyk-col--offset-${cOffset}`); - if (align) { - cssClasses.push(`tyk-col--align-${align}`); - } - if (className) { - cssClasses = cssClasses.concat(className.split(" ")); - } - cssClasses.push("tyk-col"); - cssClasses = cssClasses.concat(offsets || []); - return cssClasses.join(" "); - } - render() { - const _a = this.props, { children, id } = _a, props = Column_objRest(_a, ["children", "id"]); - return /* @__PURE__ */ external_react_default().createElement("div", Column_spreadProps(Column_spreadValues({}, props), { className: this.getCssClasses(), id }), children); - } -} -Column_publicField(Column, "propTypes", { - /** - * This property describes how the column element will be aligned vertically - * within a Row: bottom, center, top - */ - align: (external_prop_types_default()).string, - /** Css classes that can be passed to the column element */ - className: (external_prop_types_default()).string, - /** - * ID that can be passed to the column element - */ - id: (external_prop_types_default()).string, - /** - * Specifies the size of the column within a Row (values must be between 1 - 12) - */ - size: (external_prop_types_default()).string.isRequired, - /** - * Specifies the left gap a column can have within a Row (values must be between 1 - 12) - */ - offset: (external_prop_types_default()).string, - children: external_prop_types_default().oneOfType([ - (external_prop_types_default()).element, - (external_prop_types_default()).string, - (external_prop_types_default()).object, - (external_prop_types_default()).node - ]) -}); -/* harmony default export */ const layout_Column = (Column); - -;// CONCATENATED MODULE: ./src/layout/Row/index.js -var Row_defProp = Object.defineProperty; -var Row_defProps = Object.defineProperties; -var Row_getOwnPropDescs = Object.getOwnPropertyDescriptors; -var Row_getOwnPropSymbols = Object.getOwnPropertySymbols; -var Row_hasOwnProp = Object.prototype.hasOwnProperty; -var Row_propIsEnum = Object.prototype.propertyIsEnumerable; -var Row_defNormalProp = (obj, key, value) => key in obj ? Row_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var Row_spreadValues = (a, b) => { - for (var prop in b || (b = {})) - if (Row_hasOwnProp.call(b, prop)) - Row_defNormalProp(a, prop, b[prop]); - if (Row_getOwnPropSymbols) - for (var prop of Row_getOwnPropSymbols(b)) { - if (Row_propIsEnum.call(b, prop)) - Row_defNormalProp(a, prop, b[prop]); - } - return a; -}; -var Row_spreadProps = (a, b) => Row_defProps(a, Row_getOwnPropDescs(b)); -var Row_objRest = (source, exclude) => { - var target = {}; - for (var prop in source) - if (Row_hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) - target[prop] = source[prop]; - if (source != null && Row_getOwnPropSymbols) - for (var prop of Row_getOwnPropSymbols(source)) { - if (exclude.indexOf(prop) < 0 && Row_propIsEnum.call(source, prop)) - target[prop] = source[prop]; - } - return target; -}; -var Row_publicField = (obj, key, value) => { - Row_defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); - return value; -}; - - -class Row_Row extends external_react_namespaceObject.PureComponent { - getCssClasses() { - const { className, nogutters } = this.props; - let cssClass = ["tyk-row"]; - if (nogutters) { - cssClass.push("no-gutters"); - cssClass.push("tyk-row--gutterless"); - } - if (className) { - cssClass = cssClass.concat(className.split(" ")); - } - return cssClass.join(" "); - } - render() { - const _a = this.props, { - children, - nogutters - } = _a, rest = Row_objRest(_a, [ - "children", - "nogutters" - ]); - return /* @__PURE__ */ external_react_default().createElement("div", Row_spreadProps(Row_spreadValues({}, rest), { className: this.getCssClasses() }), children); - } -} -Row_publicField(Row_Row, "propTypes", { - children: external_prop_types_default().oneOfType([ - (external_prop_types_default()).element, - (external_prop_types_default()).node - ]), - /** Css classes that can be passed to the Row element */ - className: (external_prop_types_default()).string, - /** Removes all the spaces between column */ - nogutters: (external_prop_types_default()).bool -}); - -;// CONCATENATED MODULE: ./src/form/components/Dropdown/dropdown-context.js - -const DropdownContext = (0,external_react_namespaceObject.createContext)(); - -;// CONCATENATED MODULE: ./src/form/components/Dropdown/js/DropdownItem.js - - - - -function DropdownItem(props) { - const { - customdropdownitem, - children, - eventKey, - href, - target, - title, - onClick - } = props; - const dropdownItemCLick = (0,external_react_namespaceObject.useCallback)((dropdownContext, itemProps) => { - dropdownContext.onSelectItem(eventKey, itemProps); - if (onClick) - onClick(eventKey); - }, []); - return /* @__PURE__ */ external_react_default().createElement(DropdownContext.Consumer, null, (dropdownContext) => /* @__PURE__ */ external_react_default().createElement( - "li", - { - onClick: () => dropdownItemCLick(dropdownContext, props), - onKeyUp: () => { - } - }, - customdropdownitem ? (0,external_react_namespaceObject.cloneElement)(customdropdownitem, {}) : /* @__PURE__ */ external_react_default().createElement("a", { href, target }, eventKey && dropdownContext.selectedItem === eventKey && dropdownContext.showCheckmark ? /* @__PURE__ */ external_react_default().createElement(components_Icon, { type: "check" }) : null, /* @__PURE__ */ external_react_default().createElement("span", null, title || children)) - )); -} -DropdownItem.propTypes = { - children: external_prop_types_default().oneOfType([ - (external_prop_types_default()).element, - (external_prop_types_default()).node, - (external_prop_types_default()).string - ]), - customdropdownitem: external_prop_types_default().oneOfType([ - external_prop_types_default().arrayOf((external_prop_types_default()).node), - (external_prop_types_default()).node, - (external_prop_types_default()).element - ]), - eventKey: (external_prop_types_default()).string, - href: (external_prop_types_default()).string, - target: (external_prop_types_default()).string, - onClick: (external_prop_types_default()).func, - title: (external_prop_types_default()).string -}; -/* harmony default export */ const js_DropdownItem = (DropdownItem); - -;// CONCATENATED MODULE: ./src/form/components/Dropdown/index.js -var Dropdown_defProp = Object.defineProperty; -var Dropdown_getOwnPropSymbols = Object.getOwnPropertySymbols; -var Dropdown_hasOwnProp = Object.prototype.hasOwnProperty; -var Dropdown_propIsEnum = Object.prototype.propertyIsEnumerable; -var Dropdown_defNormalProp = (obj, key, value) => key in obj ? Dropdown_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var Dropdown_spreadValues = (a, b) => { - for (var prop in b || (b = {})) - if (Dropdown_hasOwnProp.call(b, prop)) - Dropdown_defNormalProp(a, prop, b[prop]); - if (Dropdown_getOwnPropSymbols) - for (var prop of Dropdown_getOwnPropSymbols(b)) { - if (Dropdown_propIsEnum.call(b, prop)) - Dropdown_defNormalProp(a, prop, b[prop]); - } - return a; -}; - - - - - - -class Dropdown extends external_react_namespaceObject.Component { - static isElemInRightView(el, dropdownWidth) { - const windowWidth = window.innerWidth; - const offset = el.getBoundingClientRect(); - const elemRight = offset.left + dropdownWidth; - return elemRight <= windowWidth; - } - static isElemInBottomView(el, dropdownHeight) { - const windowHeight = window.innerHeight; - const offset = el.getBoundingClientRect(); - const elHeight = el.clientHeight; - const elemBottom = offset.top + elHeight + dropdownHeight; - return elemBottom <= windowHeight; - } - constructor(props) { - super(props); - const { - selectedItem, - open - } = this.props; - this.state = { - opened: open, - selectedItem: selectedItem || null - }; - this.dropdownRef = (0,external_react_namespaceObject.createRef)(); - this.dropdownListRef = (0,external_react_namespaceObject.createRef)(); - this.dropdownButtonRef = (0,external_react_namespaceObject.createRef)(); - this.onSelectItem = this.onSelectItem.bind(this); - this.toggleDropdown = this.toggleDropdown.bind(this); - this.handleClickOutside = this.handleClickOutside.bind(this); - } - componentDidMount() { - document.addEventListener("mousedown", this.handleClickOutside); - if (this.dropdownListRef.current) { - this.getStyles(); - } - } - componentDidUpdate(prevProps) { - const { - open - } = this.props; - const { - opened - } = this.state; - if (this.dropdownListRef.current) { - this.getStyles(); - } - if (!prevProps.open && open === true && !opened) { - this.toggleDropdown(); - } - if (prevProps.open && open === false && opened) { - this.closeDropdown(); - } - } - componentWillUnmount() { - document.removeEventListener("mousedown", this.handleClickOutside); - } - handleClickOutside(event) { - if (this.dropdownListRef.current && !this.dropdownListRef.current.contains(event.target) && this.dropdownRef.current && !this.dropdownRef.current.contains(event.target)) { - this.closeDropdown(); - } - } - onSelectItem(itemId, itemProps) { - const { closeOnSelect, onSelect } = this.props; - const changes = { - selectedItem: itemId, - selectedItemProps: itemProps - }; - if (closeOnSelect) { - changes.opened = false; - } - this.setState(changes); - if (onSelect && typeof onSelect === "function") { - onSelect(itemId); - } - } - getStyles() { - const { - display, - position, - offset - } = this.props; - const dropdownEl = this.dropdownListRef.current; - if (offset) { - dropdownEl.style.top = `${offset.top}`; - dropdownEl.style.left = `${offset.left}`; - return; - } - const scrollTop = Math.max( - document.documentElement.scrollTop, - document.body.scrollTop, - window.scrollY - ); - const el = this.dropdownRef.current; - const elHeight = el.clientHeight; - const dropdownHeight = dropdownEl ? dropdownEl.clientHeight : 0; - const dropdownWidth = dropdownEl ? dropdownEl.clientWidth : 0; - const offsetPosition = el.getBoundingClientRect(); - const { left, top } = offsetPosition; - let customTop = 0; - let customLeft = left; - if (Dropdown.isElemInBottomView(el, dropdownHeight)) { - customTop = top + scrollTop + elHeight; - } else { - customTop = top + scrollTop - dropdownHeight - 5; - } - if (Dropdown.isElemInRightView(el, dropdownWidth)) { - customLeft = left; - } else { - customLeft = left + el.clientWidth - dropdownWidth; - } - if (position !== "relative") { - dropdownEl.style.top = `${customTop}px`; - if (display !== "block") { - dropdownEl.style.left = `${customLeft}px`; - } - } - if (display !== "block") { - dropdownEl.style.minWidth = `${this.dropdownButtonRef.current.clientWidth}px`; - } - } - getWrapperCssClasses() { - const { - btnGroup, - btnGroupSize, - className, - btnTheme, - wrapperClassName = "" - } = this.props; - let cssClasses = [wrapperClassName, "tyk-dropdown"]; - cssClasses.push(`theme-${btnTheme || "default"}`); - if (className) { - cssClasses = cssClasses.concat(className.split(" ")); - } - if (btnGroup) { - cssClasses.push("tyk-button-group"); - cssClasses.push(btnGroupSize ? `tyk-button-group--${btnGroupSize}` : "tyk-button-group--md"); - } - return cssClasses.join(" "); - } - getCssClasses() { - const { - opened - } = this.state; - const { - hasCustomContent, - display, - listclassnames, - position, - maxHeight - } = this.props; - let cssClasses = ["tyk-dropdown-menu", "tyk-dropdown"]; - if (maxHeight) { - cssClasses.push("tyk-dropdown--scrollable"); - } - if (opened) { - cssClasses.push("opened"); - } - if (listclassnames) { - cssClasses = cssClasses.concat(listclassnames.split(" ")); - } - if (display) { - cssClasses.push("tyk-dropdown--block"); - } - if (hasCustomContent) { - cssClasses.push("tyk-dropdown--custom"); - } - if (position === "relative") { - cssClasses.push("tyk-dropdown--relative"); - } - return cssClasses.join(" "); - } - getBtnTitle() { - const { btnTitle, stopButtonTextChange } = this.props; - const { selectedItemProps } = this.state; - if (!stopButtonTextChange && selectedItemProps && selectedItemProps.title) { - return selectedItemProps.title; - } - return btnTitle; - } - closeDropdown() { - const { onClose } = this.props; - this.setState({ - opened: false - }, () => { - if (onClose) { - onClose(); - } - }); - } - toggleDropdown() { - const { - opened - } = this.state; - if (opened) { - this.closeDropdown(); - return; - } - this.setState({ - opened: true - }); - } - render() { - const { - appendTo, - btnClassName, - btnSize, - customBtnTitle, - hasCustomContent, - btnTheme, - children, - label, - showDropdownIcon, - showTriggerButton, - showCheckmark, - disabled = false, - maxHeight - } = this.props; - const { - selectedItem, - opened - } = this.state; - const DropdownWrapperTag = hasCustomContent ? "div" : "ul"; - return /* @__PURE__ */ external_react_default().createElement( - "div", - { - className: this.getWrapperCssClasses(), - ref: this.dropdownRef - }, - label ? /* @__PURE__ */ external_react_default().createElement("label", { className: "font-family-medium" }, label) : null, - showTriggerButton ? /* @__PURE__ */ external_react_default().createElement( - components_Button, - { - className: `tyk-dropdown__trigger ${opened ? "tyk-dropdown__trigger--opened " : " "} ${btnClassName}`, - theme: btnTheme || "default", - onClick: this.toggleDropdown, - iconType: showDropdownIcon ? "chevron-down" : null, - iconPosition: "right", - size: btnSize || "md", - type: "button", - disabled, - ref: this.dropdownButtonRef - }, - customBtnTitle || this.getBtnTitle() - ) : null, - opened ? external_react_dom_default().createPortal( - /* @__PURE__ */ external_react_default().createElement( - DropdownContext.Provider, - { - value: { - onSelectItem: this.onSelectItem, - selectedItem, - showCheckmark - } - }, - opened ? /* @__PURE__ */ external_react_default().createElement( - DropdownWrapperTag, - Dropdown_spreadValues({ - className: this.getCssClasses(), - ref: this.dropdownListRef - }, maxHeight && { - style: { - maxHeight - } - }), - typeof children === "function" ? children({ - closeDropdown: this.closeDropdown.bind(this) - }) : children - ) : null - ), - document.querySelector(appendTo || "body") - ) : null - ); - } -} -Dropdown.propTypes = { - appendTo: (external_prop_types_default()).string, - children: external_prop_types_default().oneOfType([ - (external_prop_types_default()).element, - (external_prop_types_default()).node, - (external_prop_types_default()).string, - (external_prop_types_default()).func - ]), - closeOnSelect: (external_prop_types_default()).bool, - btnClassName: (external_prop_types_default()).string, - btnSize: (external_prop_types_default()).string, - btnGroupSize: (external_prop_types_default()).string, - btnTheme: (external_prop_types_default()).string, - btnTitle: external_prop_types_default().oneOfType([ - (external_prop_types_default()).node, - (external_prop_types_default()).element, - (external_prop_types_default()).string - ]), - customBtnTitle: external_prop_types_default().oneOfType([ - (external_prop_types_default()).node, - (external_prop_types_default()).element, - (external_prop_types_default()).string - ]), - btnGroup: (external_prop_types_default()).bool, - className: (external_prop_types_default()).string, - display: (external_prop_types_default()).string, - disabled: (external_prop_types_default()).bool, - hasCustomContent: (external_prop_types_default()).bool, - label: external_prop_types_default().oneOfType([ - external_prop_types_default().arrayOf((external_prop_types_default()).node), - (external_prop_types_default()).node, - (external_prop_types_default()).element, - (external_prop_types_default()).func, - (external_prop_types_default()).string - ]), - listclassnames: (external_prop_types_default()).string, - onClose: (external_prop_types_default()).func, - onSelect: (external_prop_types_default()).func, - open: (external_prop_types_default()).bool, - offset: external_prop_types_default().instanceOf(Object), - position: (external_prop_types_default()).string, - selectedItem: (external_prop_types_default()).string, - showDropdownIcon: (external_prop_types_default()).bool, - stopButtonTextChange: (external_prop_types_default()).bool, - showTriggerButton: (external_prop_types_default()).bool, - showCheckmark: (external_prop_types_default()).bool, - maxHeight: (external_prop_types_default()).string, - wrapperClassName: (external_prop_types_default()).string -}; -Dropdown.defaultProps = { - closeOnSelect: false, - showDropdownIcon: true, - showTriggerButton: true, - showCheckmark: true, - open: false -}; -Dropdown.Item = js_DropdownItem; -/* harmony default export */ const components_Dropdown = (Dropdown); - -// EXTERNAL MODULE: ./node_modules/ace-builds/src-noconflict/ace.js -var ace = __webpack_require__(239); -var ace_default = /*#__PURE__*/__webpack_require__.n(ace); -;// CONCATENATED MODULE: external "react-ace" -const external_react_ace_namespaceObject = require("react-ace"); -var external_react_ace_default = /*#__PURE__*/__webpack_require__.n(external_react_ace_namespaceObject); -// EXTERNAL MODULE: ./node_modules/ace-builds/src-noconflict/mode-javascript.js -var mode_javascript = __webpack_require__(395); -// EXTERNAL MODULE: ./node_modules/ace-builds/src-noconflict/mode-golang.js -var mode_golang = __webpack_require__(576); -// EXTERNAL MODULE: ./node_modules/ace-builds/src-noconflict/mode-python.js -var mode_python = __webpack_require__(7); -// EXTERNAL MODULE: ./node_modules/ace-builds/src-noconflict/mode-css.js -var mode_css = __webpack_require__(549); -// EXTERNAL MODULE: ./node_modules/ace-builds/src-noconflict/mode-json.js -var mode_json = __webpack_require__(252); -// EXTERNAL MODULE: ./node_modules/ace-builds/src-noconflict/mode-xml.js -var mode_xml = __webpack_require__(202); -// EXTERNAL MODULE: ./node_modules/ace-builds/src-noconflict/mode-jsx.js -var mode_jsx = __webpack_require__(711); -// EXTERNAL MODULE: ./node_modules/ace-builds/src-noconflict/ext-searchbox.js -var ext_searchbox = __webpack_require__(604); -// EXTERNAL MODULE: ./node_modules/ace-builds/src-noconflict/ext-beautify.js -var ext_beautify = __webpack_require__(134); -// EXTERNAL MODULE: ./node_modules/ace-builds/src-noconflict/theme-github.js -var theme_github = __webpack_require__(203); -;// CONCATENATED MODULE: ./node_modules/ace-builds/src-noconflict/worker-json.js -const worker_json_namespaceObject = __webpack_require__.p + "6925696524271b926a8e.js"; -;// CONCATENATED MODULE: ./src/form/components/CodeEditor/index.js -var CodeEditor_defProp = Object.defineProperty; -var CodeEditor_defProps = Object.defineProperties; -var CodeEditor_getOwnPropDescs = Object.getOwnPropertyDescriptors; -var CodeEditor_getOwnPropSymbols = Object.getOwnPropertySymbols; -var CodeEditor_hasOwnProp = Object.prototype.hasOwnProperty; -var CodeEditor_propIsEnum = Object.prototype.propertyIsEnumerable; -var CodeEditor_defNormalProp = (obj, key, value) => key in obj ? CodeEditor_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var CodeEditor_spreadValues = (a, b) => { - for (var prop in b || (b = {})) - if (CodeEditor_hasOwnProp.call(b, prop)) - CodeEditor_defNormalProp(a, prop, b[prop]); - if (CodeEditor_getOwnPropSymbols) - for (var prop of CodeEditor_getOwnPropSymbols(b)) { - if (CodeEditor_propIsEnum.call(b, prop)) - CodeEditor_defNormalProp(a, prop, b[prop]); - } - return a; -}; -var CodeEditor_spreadProps = (a, b) => CodeEditor_defProps(a, CodeEditor_getOwnPropDescs(b)); - - - - - - - - - - - - - - - -ace_default().config.setModuleUrl("ace/mode/json_worker", worker_json_namespaceObject); -function CodeEditor(props) { - const { - disabled, - readOnly, - disableValidation, - id, - error, - label, - labelwidth, - note, - onBlur, - onChange, - theme, - value, - setOptions, - wrapperClassName - } = props; - const classes = [ - "tyk-form-group", - wrapperClassName, - ...theme ? theme.split(" ").map((t) => `tyk-form-group--${t}`) : [], - labelwidth && "tyk-form-group--label-has-width", - error && "has-error" - ].filter(Boolean).join(" "); - const finalSetOptions = CodeEditor_spreadValues(CodeEditor_spreadValues({}, setOptions), disableValidation && { useWorker: false }); - const getCodeEditorError = (0,external_react_namespaceObject.useCallback)(() => error && error !== "true" && error !== "false" ? /* @__PURE__ */ external_react_default().createElement("p", { className: "tyk-form-control__error-message" }, error) : null, [error]); - const getLabelStyles = (0,external_react_namespaceObject.useCallback)(() => { - if (labelwidth) - return { flexBasis: labelwidth }; - return {}; - }, [labelwidth]); - const getNonLabelWidth = (0,external_react_namespaceObject.useCallback)(() => { - if (labelwidth) - return { flexBasis: `calc(100% - ${labelwidth} - 20px)` }; - return {}; - }, [labelwidth]); - const handleOnChange = (0,external_react_namespaceObject.useCallback)((newValue) => { - if (onChange) - onChange(newValue); - }, [onChange]); - const handleOnBlur = (0,external_react_namespaceObject.useCallback)(() => { - if (onBlur) - onBlur(value); - }, [onBlur, value]); - return /* @__PURE__ */ external_react_default().createElement("div", { className: classes }, label ? /* @__PURE__ */ external_react_default().createElement("label", { htmlFor: id, style: getLabelStyles() }, label) : null, /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-form-control__wrapper", style: getNonLabelWidth() }, /* @__PURE__ */ external_react_default().createElement( - (external_react_ace_default()), - CodeEditor_spreadProps(CodeEditor_spreadValues({ - className: "tyk-form-control" - }, props), { - onChange: handleOnChange, - onBlur: handleOnBlur, - theme: "github", - editorProps: { $blockScrolling: true }, - readOnly: readOnly || disabled, - onLoad: (editorInstance) => { - editorInstance.container.style.resize = "both"; - document.addEventListener("mouseup", () => editorInstance.resize()); - }, - setOptions: finalSetOptions - }) - ), note ? /* @__PURE__ */ external_react_default().createElement("p", { className: "tyk-form-control__help-block" }, note) : null, getCodeEditorError())); -} -CodeEditor.propTypes = { - disabled: (external_prop_types_default()).bool, - readOnly: (external_prop_types_default()).bool, - disableValidation: (external_prop_types_default()).bool, - id: (external_prop_types_default()).string, - error: external_prop_types_default().oneOfType([ - (external_prop_types_default()).string, - (external_prop_types_default()).bool - ]), - label: external_prop_types_default().oneOfType([ - external_prop_types_default().arrayOf((external_prop_types_default()).node), - (external_prop_types_default()).node, - (external_prop_types_default()).element, - (external_prop_types_default()).func, - (external_prop_types_default()).string - ]), - labelwidth: (external_prop_types_default()).string, - mode: (external_prop_types_default()).string, - name: (external_prop_types_default()).string, - note: (external_prop_types_default()).string, - onBlur: (external_prop_types_default()).func, - onChange: (external_prop_types_default()).func, - theme: (external_prop_types_default()).string, - value: (external_prop_types_default()).string, - setOptions: external_prop_types_default().instanceOf(Object), - wrapperClassName: (external_prop_types_default()).string -}; -/* harmony default export */ const components_CodeEditor = (CodeEditor); - -;// CONCATENATED MODULE: ./src/form/components/Combobox/index.js -var Combobox_defProp = Object.defineProperty; -var Combobox_defProps = Object.defineProperties; -var Combobox_getOwnPropDescs = Object.getOwnPropertyDescriptors; -var Combobox_getOwnPropSymbols = Object.getOwnPropertySymbols; -var Combobox_hasOwnProp = Object.prototype.hasOwnProperty; -var Combobox_propIsEnum = Object.prototype.propertyIsEnumerable; -var Combobox_defNormalProp = (obj, key, value) => key in obj ? Combobox_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var Combobox_spreadValues = (a, b) => { - for (var prop in b || (b = {})) - if (Combobox_hasOwnProp.call(b, prop)) - Combobox_defNormalProp(a, prop, b[prop]); - if (Combobox_getOwnPropSymbols) - for (var prop of Combobox_getOwnPropSymbols(b)) { - if (Combobox_propIsEnum.call(b, prop)) - Combobox_defNormalProp(a, prop, b[prop]); - } - return a; -}; -var Combobox_spreadProps = (a, b) => Combobox_defProps(a, Combobox_getOwnPropDescs(b)); -var Combobox_publicField = (obj, key, value) => { - Combobox_defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); - return value; -}; - - - - - -const getStateSelectedValues = (multiple, tags, value) => { - if (!value) { - return multiple || tags ? [] : null; - } - return value; -}; -const _Combobox = class _Combobox extends external_react_namespaceObject.Component { - static closeList() { - return { - cursor: -1, - opened: false - }; - } - static openList() { - return { - opened: true - }; - } - static filterByName(itemValue, inputValue) { - return itemValue.name.toLowerCase().indexOf(inputValue) > -1; - } - constructor(props) { - super(props); - const { - multiple, - tags, - value - } = props; - this.state = { - cursor: -1, - opened: false, - width: 50, - initialValue: value, - stateSelectedValues: getStateSelectedValues(multiple, tags, value), - searchText: "", - tags - }; - this.comboboxRef = (0,external_react_namespaceObject.createRef)(); - this.valuesListRef = (0,external_react_namespaceObject.createRef)(); - this.inputRef = (0,external_react_namespaceObject.createRef)(); - this.textRef = (0,external_react_namespaceObject.createRef)(); - this.focusInput = this.focusInput.bind(this); - this.onKeyUp = this.onKeyUp.bind(this); - _Combobox.openList = _Combobox.openList.bind(this); - this.handleClickOutside = this.handleClickOutside.bind(this); - this.handleItemsNavigation = this.handleItemsNavigation.bind(this); - this.handleComboboxDropdownClick = this.handleComboboxDropdownClick.bind(this); - this.handleListItemClick = this.handleListItemClick.bind(this); - this.handlePillRemoveClick = this.handlePillRemoveClick.bind(this); - this.manageSelectedTags = this.manageSelectedTags.bind(this); - } - componentDidMount() { - const { tags } = this.props; - if (tags) { - this.setInputWidth(); - } - this.bindEvents(); - } - componentWillUnmount() { - this.unBindEvents(); - } - static getDerivedStateFromProps(nextProps, prevState) { - if (JSON.stringify(nextProps.value) !== JSON.stringify(prevState.initialValue) || nextProps.tags !== prevState.tags) { - return { - initialValue: nextProps.value, - stateSelectedValues: getStateSelectedValues( - nextProps.multiple, - nextProps.tags, - nextProps.value - ), - tags: nextProps.tags - }; - } - return null; - } - onKeyUp(e) { - const { tags, allowCustomValues } = this.props; - const { cursor, opened } = this.state; - const filteredValues = this.filterValues(); - let tempState = Object.assign({}, this.getSearchText()); - if (tags && e.key !== "Escape") { - tempState = Object.assign({}, tempState, this.setInputWidth()); - } - if (e.key === "Enter") { - const methodName = tags ? "manageSelectedTags" : "manageSelectedValues"; - tempState = Object.assign({}, tempState, this[methodName](cursor)); - } - if (allowCustomValues && !e.key === " " && tags) { - tempState = Object.assign({}, tempState, this.manageSelectedTags()); - } - if (!opened && this.inputRef.current.value && filteredValues && filteredValues.length && e.key !== "Escape") { - tempState = Object.assign({}, tempState, _Combobox.openList()); - } - if (e.key === "Escape" && opened) { - tempState = Object.assign({}, tempState, _Combobox.closeList()); - } - if (opened && filteredValues && !filteredValues.length) { - tempState = Object.assign({}, tempState, _Combobox.closeList()); - } - this.setState((previousState) => Object.assign({}, previousState, tempState)); - } - getLabelStyles() { - const { labelwidth } = this.props; - const styles = {}; - if (labelwidth) { - styles.flexBasis = labelwidth; - } - return styles; - } - getNonLabelWidth() { - const { labelwidth } = this.props; - const styles = {}; - if (labelwidth) { - styles.flexBasis = `calc(100% - ${labelwidth} - 20px)`; - } - return styles; - } - setInputWidth() { - return { - width: 50 + this.textRef.current.offsetWidth - }; - } - getSelectedIndex(value) { - const { stateSelectedValues } = this.state; - let position = -1; - if (Array.isArray(stateSelectedValues)) { - stateSelectedValues.forEach((item, index) => { - if (item.id === value.id) { - position = index; - } - }); - } else if (stateSelectedValues) { - if (stateSelectedValues.id === value.id) { - position = 0; - } - } - return position; - } - getSearchText() { - return { - searchText: this.inputRef.current.value - }; - } - getListItemCssClasses(value, index) { - const cssClasses = []; - const { - cursor - } = this.state; - if (cursor === index) { - cssClasses.push("active"); - } - if (value.disabled) { - cssClasses.push("disabled"); - } - return cssClasses.join(" "); - } - getComboboxListCssClass() { - const { opened } = this.state; - const { tags, theme } = this.props; - const themes = theme ? theme.split(" ") : []; - const cssClasses = ["tyk-combobox__list"]; - if (opened) { - cssClasses.push("tyk-combobox__list--opened"); - } - if (tags) { - cssClasses.push("tyk-combobox__list--has-tags"); - } - if (themes.length) { - themes.forEach((iTheme) => { - cssClasses.push(`tyk-form-group--${iTheme}`); - }); - } - return cssClasses.join(" "); - } - getCssClasses() { - const { - error, - disabled, - theme, - labelwidth - } = this.props; - const cssClasses = ["tyk-form-group", "tyk-combobox"]; - const themes = theme ? theme.split(" ") : []; - if (error) { - cssClasses.push("has-error"); - } - if (labelwidth) { - cssClasses.push("tyk-form-group--label-has-width"); - } - if (themes.length) { - themes.forEach((iTheme) => { - cssClasses.push(`tyk-form-group--${iTheme}`); - }); - } - if (disabled) { - cssClasses.push("disabled"); - } - return cssClasses.join(" "); - } - getInputError() { - const { error } = this.props; - return error && error !== "true" && error !== "false" ? /* @__PURE__ */ external_react_default().createElement( - "p", - { - className: "tyk-form-control__error-message" - }, - error - ) : null; - } - getStyles() { - const { scrollTop } = document.documentElement; - const el = this.comboboxRef.current; - const elHeight = el.offsetHeight; - const elWidth = el.offsetWidth; - const offset = el.getBoundingClientRect(); - const { left } = offset; - let top = 0; - top = offset.top + scrollTop + elHeight; - return { - top: `${top - 1}px`, - left: `${left}px`, - width: `${elWidth}px` - }; - } - getComboboxDisplayData() { - const { stateSelectedValues } = this.state; - const { multiple, placeholder, values } = this.props; - if (!stateSelectedValues) { - return placeholder; - } - if (stateSelectedValues && Array.isArray(stateSelectedValues) && !stateSelectedValues.length) { - return placeholder; - } - if (stateSelectedValues && !Array.isArray(stateSelectedValues) && !stateSelectedValues.id) { - return placeholder; - } - if (Array.isArray(stateSelectedValues) && multiple) { - return stateSelectedValues.reduce((prevValue, value, index) => prevValue + value.name + (index !== stateSelectedValues.length - 1 ? ", " : ""), ""); - } - if (values && values.length && !Array.isArray(stateSelectedValues) && !stateSelectedValues.name) { - return values.filter((value) => value.id === stateSelectedValues.id)[0].name; - } - return stateSelectedValues.name; - } - manageSelectedTags(index) { - const { max, allowCustomValues } = this.props; - const { stateSelectedValues } = this.state; - const filteredValues = this.filterValues(); - const value = { id: this.inputRef.current.value, name: this.inputRef.current.value }; - if (allowCustomValues === false && index === -1) { - return null; - } - const tempValue = filteredValues[index] || value; - const selectedIndex = this.getSelectedIndex(tempValue); - let selectedValues = {}; - this.inputRef.current.value = ""; - if (selectedIndex > -1 && this.isInInitialValues(tempValue)) { - selectedValues = this.removeSelectedValue(selectedIndex); - } else if (selectedIndex === -1) { - if (max && stateSelectedValues.length >= max) { - return selectedValues; - } - selectedValues = this.addSelectedValue(tempValue); - } - return selectedValues; - } - manageSelectedValues(index) { - const { stateSelectedValues } = this.state; - const { - multiple, - onChange, - max - } = this.props; - const filteredValues = this.filterValues(); - const tempSelectedValues = filteredValues[index]; - let selectedValues; - const selectedIndex = this.getSelectedIndex(tempSelectedValues); - if (tempSelectedValues && multiple) { - if (selectedIndex > -1) { - selectedValues = this.removeSelectedValue(selectedIndex); - } else { - if (max && stateSelectedValues.length >= max) { - return selectedValues; - } - selectedValues = this.addSelectedValue(filteredValues[index]); - } - } else { - selectedValues = { - stateSelectedValues: selectedIndex === -1 ? tempSelectedValues : { id: null } - }; - if (onChange && typeof onChange === "function") { - onChange(selectedIndex === -1 ? tempSelectedValues : null); - } - } - return selectedValues; - } - removeSelectedValue(index) { - const { stateSelectedValues } = this.state; - const { onChange } = this.props; - const tempStateSelectedValues = JSON.parse(JSON.stringify(stateSelectedValues)); - tempStateSelectedValues.splice(index, 1); - if (onChange && typeof onChange === "function") { - onChange(tempStateSelectedValues.length ? tempStateSelectedValues : null); - } - return { - stateSelectedValues: tempStateSelectedValues, - searchText: "" - }; - } - addSelectedValue(value) { - const { stateSelectedValues } = this.state; - const { onChange } = this.props; - const tempStateSelectedValues = JSON.parse(JSON.stringify(stateSelectedValues)); - tempStateSelectedValues.push(value); - if (onChange && typeof onChange === "function") { - onChange(tempStateSelectedValues.length ? tempStateSelectedValues : null); - } - return { - stateSelectedValues: tempStateSelectedValues, - searchText: "" - }; - } - isInInitialValues(value) { - const { values } = this.props; - let ok = false; - values.forEach((item) => { - if (value.id === item.id) { - ok = true; - } - }); - return ok; - } - filterValues() { - const { values, searchItem } = this.props; - if (!this.inputRef.current) { - return values; - } - const arr = values.filter( - (value) => searchItem ? searchItem(value, this.inputRef.current.value.toLowerCase()) : _Combobox.filterByName(value, this.inputRef.current.value.toLowerCase()) - ); - return arr; - } - bindEvents() { - document.addEventListener("mousedown", this.handleClickOutside); - } - unBindEvents() { - document.removeEventListener("mousedown", this.handleClickOutside); - } - handleItemsNavigation(e) { - const { tags } = this.props; - if (["ArrowDown", "ArrowUp"].indexOf(e.key) === -1) { - return; - } - const { cursor } = this.state; - const filteredValues = this.filterValues(); - let cursorNext; - e.preventDefault(); - if (e.key === "ArrowDown") { - if (cursor === -1 || cursor === filteredValues.length - 1) { - cursorNext = 0; - } else if (cursor < filteredValues.length - 1) { - cursorNext = cursor + 1; - } - } - if (e.key === "ArrowUp") { - if (cursor > 0) { - cursorNext = cursor - 1; - } else { - cursorNext = filteredValues.length - 1; - } - } - if (this.valuesListRef.current && cursorNext > 4) { - const scrollTop = (cursorNext - 4) * 38; - this.valuesListRef.current.scrollTop = !tags ? 60 + scrollTop : scrollTop; - } else if (this.valuesListRef.current) { - this.valuesListRef.current.scrollTop = 0; - } - this.setState((previousState) => Combobox_spreadProps(Combobox_spreadValues({}, previousState), { - opened: true, - cursor: cursorNext - })); - } - handleListItemClick(index) { - const clickedValue = this.props.values[index]; - if (clickedValue.disabled) - return; - const { multiple, tags } = this.props; - const methodName = tags ? "manageSelectedTags" : "manageSelectedValues"; - const tempState = Object.assign({}, this.state, this[methodName](index)); - this.setState((previousState) => { - if (!multiple && !tags) { - tempState.opened = false; - } - return Object.assign({}, previousState, tempState); - }); - } - handlePillRemoveClick(index) { - const { disabled } = this.props; - if (disabled) { - return; - } - const tempState = this.removeSelectedValue(index); - this.setState((previousState) => Object.assign({}, previousState, tempState)); - } - handleClickOutside(event) { - if (this.valuesListRef.current && !this.valuesListRef.current.contains(event.target) && this.comboboxRef.current && !this.comboboxRef.current.contains(event.target)) { - this.setState((previousState) => Object.assign({}, previousState, _Combobox.closeList())); - } - } - handleComboboxDropdownClick() { - const { disabled } = this.props; - if (disabled) { - return; - } - this.setState((previousState) => Object.assign({}, previousState, _Combobox.openList())); - } - reset() { - const { multiple, tags, value } = this.props; - this.setState({ - stateSelectedValues: getStateSelectedValues(multiple, tags, value) - }); - } - focusInput() { - if (this.inputRef.current) { - this.inputRef.current.focus(); - } - } - render() { - const { - CustomListComponent, - disabled, - id, - label, - note, - tags, - max, - placeholder - } = this.props; - const { - width, - opened, - searchText, - stateSelectedValues - } = this.state; - const filteredValues = this.filterValues(); - return /* @__PURE__ */ external_react_default().createElement( - external_react_namespaceObject.Fragment, - null, - /* @__PURE__ */ external_react_default().createElement("div", { className: this.getCssClasses() }, label ? /* @__PURE__ */ external_react_default().createElement("label", { htmlFor: id, style: this.getLabelStyles() }, label) : null, /* @__PURE__ */ external_react_default().createElement( - "div", - { - className: "tyk-form-control__wrapper", - style: this.getNonLabelWidth() - }, - /* @__PURE__ */ external_react_default().createElement( - "ul", - { - className: `tyk-form-control${tags ? " tyk-form-control--with-tags" : ""}`, - onClick: this.focusInput, - onKeyDown: () => { - }, - ref: this.comboboxRef - }, - tags ? /* @__PURE__ */ external_react_default().createElement(external_react_namespaceObject.Fragment, null, (stateSelectedValues || []).map((value, index) => /* @__PURE__ */ external_react_default().createElement("li", { className: "pill", key: value.id }, /* @__PURE__ */ external_react_default().createElement("button", { type: "button", onClick: this.handlePillRemoveClick.bind(this, index) }, /* @__PURE__ */ external_react_default().createElement(components_Icon, { type: "times" })), /* @__PURE__ */ external_react_default().createElement("span", null, value.name))), /* @__PURE__ */ external_react_default().createElement( - "li", - { - className: "tyk-combobox__search-box", - style: { - width: !stateSelectedValues || !stateSelectedValues.length ? "100%" : "auto" - } - }, - (max === void 0 || (stateSelectedValues == null ? void 0 : stateSelectedValues.length) < max) && /* @__PURE__ */ external_react_default().createElement((external_react_default()).Fragment, null, /* @__PURE__ */ external_react_default().createElement( - "input", - { - className: "tyk-form-control", - disabled, - onKeyPress: (e) => { - if (e.key === "Enter") { - e.preventDefault(); - } - }, - onKeyUp: this.onKeyUp, - onKeyDown: this.handleItemsNavigation, - placeholder: !stateSelectedValues || !stateSelectedValues.length ? placeholder : "", - ref: this.inputRef, - style: { - width: !stateSelectedValues || !stateSelectedValues.length ? "100%" : `${width}px` - } - } - ), /* @__PURE__ */ external_react_default().createElement( - "span", - { - ref: this.textRef, - style: { - visbility: "hidden", - position: "absolute", - top: "-9999px" - } - }, - searchText - )), - filteredValues.length ? /* @__PURE__ */ external_react_default().createElement( - components_Button, - { - className: "tyk-combobox--with-tags__button-down", - iconType: "arrow-down", - iconOnly: true, - onClick: this.handleComboboxDropdownClick - } - ) : null - )) : /* @__PURE__ */ external_react_default().createElement( - "li", - { - className: "tyk-combobox__placeholder", - onClick: this.handleComboboxDropdownClick, - onKeyDown: () => { - } - }, - this.getComboboxDisplayData(), - /* @__PURE__ */ external_react_default().createElement(components_Icon, { family: "tykon", type: "arrowdown" }) - ) - ), - note ? /* @__PURE__ */ external_react_default().createElement("p", { className: "tyk-form-control__help-block" }, note) : null, - this.getInputError() - )), - // eslint-disable-next-line no-nested-ternary - !CustomListComponent ? opened && filteredValues.length ? external_react_dom_default().createPortal( - /* @__PURE__ */ external_react_default().createElement( - "ul", - { - className: this.getComboboxListCssClass(), - ref: this.valuesListRef, - style: this.getStyles() - }, - !tags ? /* @__PURE__ */ external_react_default().createElement("li", { className: "combobox-search__container" }, /* @__PURE__ */ external_react_default().createElement( - "input", - { - autoFocus: opened, - className: "tyk-form-control", - onKeyUp: this.onKeyUp, - onKeyDown: this.handleItemsNavigation, - key: "searchInput", - ref: this.inputRef - } - )) : null, - filteredValues.map((value, index) => /* @__PURE__ */ external_react_default().createElement( - "li", - { - className: this.getListItemCssClasses(value, index), - onClick: this.handleListItemClick.bind(this, index), - onKeyDown: () => { - }, - key: value.id - }, - this.getSelectedIndex(value) > -1 ? /* @__PURE__ */ external_react_default().createElement(components_Icon, { type: "check" }) : null, - /* @__PURE__ */ external_react_default().createElement("span", null, " ", value.name) - )) - ), - document.querySelector("body") - ) : null : /* @__PURE__ */ external_react_default().createElement( - CustomListComponent, - { - ref: this.valuesListRef, - className: this.getComboboxListCssClass(), - getListItemCssClasses: this.getListItemCssClasses.bind(this), - getSelectedIndex: this.getSelectedIndex.bind(this), - filteredValues, - handleListItemClick: this.handleListItemClick.bind(this) - } - ) - ); - } -}; -Combobox_publicField(_Combobox, "propTypes", { - allowCustomValues: (external_prop_types_default()).bool, - CustomListComponent: (external_prop_types_default()).elementType, - searchItem: (external_prop_types_default()).func, - disabled: (external_prop_types_default()).bool, - error: (external_prop_types_default()).string, - id: (external_prop_types_default()).string, - label: external_prop_types_default().oneOfType([ - external_prop_types_default().arrayOf((external_prop_types_default()).node), - (external_prop_types_default()).node, - (external_prop_types_default()).element, - (external_prop_types_default()).func, - (external_prop_types_default()).string - ]), - labelwidth: (external_prop_types_default()).string, - multiple: (external_prop_types_default()).bool, - max: (external_prop_types_default()).number, - note: external_prop_types_default().oneOfType([ - (external_prop_types_default()).node, - (external_prop_types_default()).element, - (external_prop_types_default()).string - ]), - onChange: (external_prop_types_default()).func, - placeholder: (external_prop_types_default()).string, - tags: (external_prop_types_default()).bool, - theme: (external_prop_types_default()).string, - value: external_prop_types_default().oneOfType([ - (external_prop_types_default()).string, - external_prop_types_default().instanceOf(Object), - external_prop_types_default().instanceOf(Array) - ]), - values: external_prop_types_default().instanceOf(Array) -}); -Combobox_publicField(_Combobox, "defaultProps", { - allowCustomValues: true -}); -let Combobox = _Combobox; - - -;// CONCATENATED MODULE: ./src/form/components/Combobox2/js/Value.js - - - -function Value(props) { - const { - value, - max, - tags, - tagSeparators, - addTagOnBlur, - placeholder, - disabled, - renderValue, - valueOverflow, - focus, - onMessage: sendMessage, - readOnly - } = props; - const INPUT_MIN_WIDTH = 60; - const inputRef = (0,external_react_namespaceObject.useRef)(null); - const dummyElementRef = (0,external_react_namespaceObject.useRef)(null); - const [inputValue, setInputValue] = (0,external_react_namespaceObject.useState)(""); - const [inputWidth, setInputWidth] = (0,external_react_namespaceObject.useState)(`${INPUT_MIN_WIDTH + 10}px`); - function entryFieldOnChange(val) { - if (tagSeparators.some((ts) => val.slice(-1) === ts)) - return; - const dummy = dummyElementRef.current; - dummy.innerHTML = val; - setInputWidth(`${Math.max(dummy.clientWidth, INPUT_MIN_WIDTH) + 10}px`); - setInputValue(val); - sendMessage("tag.input.change", val); - } - function entryFieldOnKeyDown(key, val) { - if (!tags) - return; - if (val === "" && key === "Backspace" && value.length) { - sendMessage("tag.remove", value[value.length - 1].id); - return; - } - if (key === "Enter") { - sendMessage("tag.input.enter", val); - entryFieldOnChange(""); - return; - } - if (key === "ArrowUp") { - sendMessage("tag.input.arrowUp"); - return; - } - if (key === "ArrowDown") { - sendMessage("tag.input.arrowDown"); - return; - } - if (key === "Escape") { - sendMessage("tag.input.escape"); - return; - } - if (tagSeparators.includes(key)) { - sendMessage("tag.add", val); - entryFieldOnChange(""); - } - } - function triggerAction() { - sendMessage("text-value.click"); - } - function textValue(val, isPlaceholder = false) { - if (readOnly) - return val || "-"; - const classes = [ - "tyk-combobox2__text-value", - `overflow-${valueOverflow}`, - isPlaceholder && "is-placeholder" - ].filter(Boolean).join(" "); - return /* @__PURE__ */ external_react_default().createElement( - "span", - { - className: classes, - title: valueOverflow === "single" ? val : void 0, - role: "none", - tabIndex: disabled ? "-1" : "0", - onClick: triggerAction, - onKeyPress: triggerAction - }, - val - ); - } - function renderCustomValue(v) { - const config = { - tags, - tagSeparators, - placeholder, - disabled, - renderValue, - sendMessage - }; - return renderValue(v, config); - } - function renderTag(v) { - if (renderValue) - return renderCustomValue(v); - return /* @__PURE__ */ external_react_default().createElement( - components_Pill, - { - key: v.id, - theme: "combobox" - }, - /* @__PURE__ */ external_react_default().createElement( - "button", - { - type: "button", - onClick: (e) => { - e.stopPropagation(); - sendMessage("tag.remove", v.id); - } - }, - /* @__PURE__ */ external_react_default().createElement(components_Icon, { type: "times" }) - ), - /* @__PURE__ */ external_react_default().createElement("span", { title: v.name }, v.name) - ); - } - function getTags() { - return /* @__PURE__ */ external_react_default().createElement((external_react_default()).Fragment, null, value.map(renderTag), value.length < max && /* @__PURE__ */ external_react_default().createElement((external_react_default()).Fragment, null, /* @__PURE__ */ external_react_default().createElement( - "input", - { - className: "tyk-combobox2__entry-field", - ref: inputRef, - placeholder: value.length ? "" : placeholder, - disabled, - value: inputValue, - style: { width: value.length ? inputWidth : "100%" }, - onChange: (e) => entryFieldOnChange(e.target.value), - onKeyDown: (e) => { - if (e.key === "Enter") - e.preventDefault(); - entryFieldOnKeyDown(e.key, e.target.value); - }, - onFocus: () => sendMessage("tag.input.focus"), - onBlur: (e) => { - sendMessage("tag.input.blur", e.target.value); - if (addTagOnBlur) - entryFieldOnChange(""); - } - } - ), /* @__PURE__ */ external_react_default().createElement( - "span", - { - ref: dummyElementRef, - style: { - visbility: "hidden", - position: "absolute", - top: "-9999px" - } - } - ))); - } - (0,external_react_namespaceObject.useEffect)(() => { - if (focus && inputRef.current) - inputRef.current.focus(); - }, [focus]); - if (readOnly) { - return /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-form-control--readonly" }, textValue(value.map((v) => v.name).join(", "))); - } - if (tags) - return getTags(); - if (renderValue) { - return value.length === 0 ? textValue(placeholder, true) : value.map(renderCustomValue); - } - return value.length === 0 ? textValue(placeholder, true) : textValue(value.map((v) => v.name).join(", ")); -} -/* harmony default export */ const js_Value = (Value); - -;// CONCATENATED MODULE: ./src/form/components/Combobox2/js/List.js - - - -function List_List(props) { - const { - listRef, - tags, - values, - searchValue, - activeItem, - onMessage: sendMessage, - renderListItem, - selectAll, - showSearch - } = props; - (0,external_react_namespaceObject.useEffect)(() => { - if (!listRef.current) - return; - const activeElement = listRef.current.querySelector(".active"); - if (activeElement) - activeElement.scrollIntoView({ block: "end" }); - }, [activeItem]); - function renderItem(item) { - if (renderListItem) { - return renderListItem(item, { - tags, - searchValue, - sendMessage, - activeItem - }); - } - return /* @__PURE__ */ external_react_default().createElement( - "li", - { - key: item.id, - title: item.name, - className: [ - item.disabled && "disabled", - activeItem && item.id === activeItem.id && "active" - ].filter(Boolean).join(" "), - onClick: () => !item.disabled && sendMessage("value.select", { item }), - onKeyPress: () => { - } - }, - item.selected && /* @__PURE__ */ external_react_default().createElement(components_Icon, { type: "check" }), - /* @__PURE__ */ external_react_default().createElement("span", { className: "item-name" }, item.name) - ); - } - function renderSelectAllOption() { - var _a, _b, _c; - const isAllSelected = values.every((v) => v.selected); - const isNoneSelected = values.every((v) => !v.selected); - const label = (_a = selectAll == null ? void 0 : selectAll.label) != null ? _a : "Select All"; - const mode = (_b = selectAll == null ? void 0 : selectAll.mode) != null ? _b : "select"; - const show = (_c = selectAll == null ? void 0 : selectAll.show) != null ? _c : "always"; - const render = selectAll == null ? void 0 : selectAll.render; - const shouldRenderOption = show === "always" || (mode === "select" ? !isAllSelected : !isNoneSelected); - if (!shouldRenderOption) - return null; - if (render) { - return render({ - label, - mode, - show, - isAllSelected, - isNoneSelected - }, sendMessage); - } - return /* @__PURE__ */ external_react_default().createElement( - "li", - { - onClick: () => sendMessage("value.select-all", mode === "select" ? !isAllSelected : isNoneSelected), - onKeyDown: () => { - } - }, - (mode === "select" ? isAllSelected : isNoneSelected) && /* @__PURE__ */ external_react_default().createElement(components_Icon, { type: "check" }), - label - ); - } - return /* @__PURE__ */ external_react_default().createElement((external_react_default()).Fragment, null, !tags && showSearch && /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-combobox2__combobox-search" }, /* @__PURE__ */ external_react_default().createElement( - "input", - { - autoFocus: true, - className: "tyk-form-control", - value: searchValue, - onChange: (e) => sendMessage("search.change", e.target.value), - onKeyDown: (e) => { - if (e.key === "Escape") - sendMessage("search.escape"); - if (e.key === "ArrowUp") - sendMessage("search.arrowUp"); - if (e.key === "ArrowDown") - sendMessage("search.arrowDown"); - if (e.key === "Enter") - sendMessage("search.enter"); - } - } - )), values.length > 0 && /* @__PURE__ */ external_react_default().createElement("ul", { ref: listRef, className: "tyk-combobox2__combobox-list" }, Boolean(selectAll) && renderSelectAllOption(), values.map(renderItem))); -} -List_List.propTypes = { - listRef: external_prop_types_default().instanceOf(Object), - tags: (external_prop_types_default()).bool, - values: external_prop_types_default().instanceOf(Array), - searchValue: (external_prop_types_default()).string, - activeItem: external_prop_types_default().instanceOf(Object), - onMessage: (external_prop_types_default()).func, - renderListItem: (external_prop_types_default()).func, - selectAll: external_prop_types_default().oneOfType([ - (external_prop_types_default()).bool, - external_prop_types_default().shape({ - label: external_prop_types_default().oneOfType([ - external_prop_types_default().arrayOf((external_prop_types_default()).node), - (external_prop_types_default()).node, - (external_prop_types_default()).element, - (external_prop_types_default()).func, - (external_prop_types_default()).string - ]), - mode: external_prop_types_default().oneOf(["select", "unselect"]), - show: external_prop_types_default().oneOf(["always", "notSameState"]), - render: (external_prop_types_default()).func - }) - ]), - showSearch: (external_prop_types_default()).bool -}; -/* harmony default export */ const js_List = (List_List); - -;// CONCATENATED MODULE: ./src/form/components/Combobox2/index.js -var Combobox2_defProp = Object.defineProperty; -var Combobox2_defProps = Object.defineProperties; -var Combobox2_getOwnPropDescs = Object.getOwnPropertyDescriptors; -var Combobox2_getOwnPropSymbols = Object.getOwnPropertySymbols; -var Combobox2_hasOwnProp = Object.prototype.hasOwnProperty; -var Combobox2_propIsEnum = Object.prototype.propertyIsEnumerable; -var Combobox2_defNormalProp = (obj, key, value) => key in obj ? Combobox2_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var Combobox2_spreadValues = (a, b) => { - for (var prop in b || (b = {})) - if (Combobox2_hasOwnProp.call(b, prop)) - Combobox2_defNormalProp(a, prop, b[prop]); - if (Combobox2_getOwnPropSymbols) - for (var prop of Combobox2_getOwnPropSymbols(b)) { - if (Combobox2_propIsEnum.call(b, prop)) - Combobox2_defNormalProp(a, prop, b[prop]); - } - return a; -}; -var Combobox2_spreadProps = (a, b) => Combobox2_defProps(a, Combobox2_getOwnPropDescs(b)); -var Combobox2_objRest = (source, exclude) => { - var target = {}; - for (var prop in source) - if (Combobox2_hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) - target[prop] = source[prop]; - if (source != null && Combobox2_getOwnPropSymbols) - for (var prop of Combobox2_getOwnPropSymbols(source)) { - if (exclude.indexOf(prop) < 0 && Combobox2_propIsEnum.call(source, prop)) - target[prop] = source[prop]; - } - return target; -}; - - - - - - -function normalizeValue(value, values) { - let v = value; - if (typeof value === "string") - v = { id: value, name: value }; - else if (!value.hasOwnProperty("name")) - v = Combobox2_spreadProps(Combobox2_spreadValues({}, value), { name: value.id }); - if (!values) - return v; - const existingVal = values.find((ev) => ev.id === v.id); - return existingVal ? Combobox2_spreadValues(Combobox2_spreadValues({}, v), existingVal) : v; -} -function getValueFromProp(value, values) { - if (!value) - return []; - if (Array.isArray(value)) - return value.map((v) => normalizeValue(v, values)); - return [normalizeValue(value, values)]; -} -function Combobox2(_a) { - var _b = _a, { - value: propValue, - values: propValues = [], - valueOverflow = "single", - label = "", - labelwidth, - tags = false, - tagSeparators = [" ", "Enter"], - addTagOnBlur = false, - max: maxProp, - multiple = false, - placeholder = "", - theme, - note = "", - error = "", - disabled = false, - readOnly = false, - allowCustomValues = true, - searchItem: matchItemFn, - renderValue, - renderListItem, - renderList: renderListProp, - CustomListComponent, - onBeforeChange = () => true, - onChange = () => { - }, - floatingContainerConfig, - expandMode, - infiniteScrollerConfig, - displayDropdownTrigger = true, - selectAll, - closeOnSelect, - showSearch = false, - required = false, - validateOnChange = () => { - }, - wrapperClassName = "" - } = _b, restProps = Combobox2_objRest(_b, [ - "value", - "values", - "valueOverflow", - "label", - "labelwidth", - "tags", - "tagSeparators", - "addTagOnBlur", - "max", - "multiple", - "placeholder", - "theme", - "note", - "error", - "disabled", - "readOnly", - "allowCustomValues", - "searchItem", - "renderValue", - "renderListItem", - "renderList", - "CustomListComponent", - "onBeforeChange", - "onChange", - "floatingContainerConfig", - "expandMode", - "infiniteScrollerConfig", - "displayDropdownTrigger", - "selectAll", - "closeOnSelect", - "showSearch", - "required", - "validateOnChange", - "wrapperClassName" - ]); - const max = multiple ? Infinity : maxProp || (tags ? Infinity : 1); - const renderList = CustomListComponent ? (values2, { sendMessage }) => /* @__PURE__ */ external_react_default().createElement( - CustomListComponent, - { - filteredValues: values2, - handleListItemClick: (index) => sendMessage("value.select", { item: values2[index] }), - getListItemCssClasses: () => { - } - } - ) : renderListProp; - const rootRef = (0,external_react_namespaceObject.useRef)(null); - const comboboxControlRef = (0,external_react_namespaceObject.useRef)(null); - const dropdownRef = (0,external_react_namespaceObject.useRef)(null); - const listRef = (0,external_react_namespaceObject.useRef)(null); - const [value, setValue] = (0,external_react_namespaceObject.useState)(getValueFromProp(propValue, propValues)); - const [values, setValues] = (0,external_react_namespaceObject.useState)(propValues.map((v) => normalizeValue(v))); - const [searchValue, setSearchValue] = (0,external_react_namespaceObject.useState)(""); - const [activeItem, setActiveItem] = (0,external_react_namespaceObject.useState)(null); - const [isOpened, setIsOpened] = (0,external_react_namespaceObject.useState)(false); - const [valuesExpanded, setValuesExpanded] = (0,external_react_namespaceObject.useState)(false); - const [localValidationError, setLocalValidationError] = (0,external_react_namespaceObject.useState)(""); - function getThemeClasses() { - const themes = theme ? theme.split(" ") : []; - return themes.map((iTheme) => `tyk-form-group--${iTheme}`); - } - function getCssClasses() { - return [ - wrapperClassName, - "tyk-form-group", - "tyk-combobox2", - ...getThemeClasses(), - (error || localValidationError) && "has-error", - labelwidth && "tyk-form-group--label-has-width", - disabled && "disabled", - expandMode && "is-expand-mode" - ].filter(Boolean).join(" "); - } - function getFilteredValues() { - const defaultFn = (v, s) => { - var _a2, _b2; - return (_b2 = (_a2 = v == null ? void 0 : v.name) == null ? void 0 : _a2.toLowerCase()) == null ? void 0 : _b2.includes(s); - }; - const fn = matchItemFn || defaultFn; - const filteredValues2 = values.filter((v) => fn(v, searchValue.toLowerCase())); - return filteredValues2; - } - function openDropdown() { - setIsOpened(true); - } - function closeDropdown() { - setIsOpened(false); - if (!tags) - updateSearchValue(""); - setActiveItem(null); - } - function updateSearchValue(newSearchValue) { - setSearchValue(newSearchValue); - if (activeItem && getFilteredValues().every((fv) => fv.id !== activeItem.id)) { - setActiveItem(null); - } - if (newSearchValue && !isOpened) - openDropdown(); - } - function isValidValue(newValues, lastValue) { - const localError = validateOnChange(newValues, lastValue); - setLocalValidationError(localError); - return localError === void 0; - } - function updateValue(newValues) { - setValue(newValues); - onChange(max === 1 && !tags ? newValues[0] || null : newValues); - } - function addTag(val) { - if (!val) - return; - if (value.length >= max) - return; - if (value.some(({ name }) => name === val)) - return; - const listValueIndex = values.findIndex((lv) => lv.name === val); - let newValue; - let finalValue = [...value]; - let selectedValues; - if (listValueIndex === -1) { - if (allowCustomValues) { - newValue = { id: val, name: val }; - finalValue = [...value, newValue]; - } - } else { - selectedValues = [ - ...values.slice(0, listValueIndex), - Combobox2_spreadProps(Combobox2_spreadValues({}, values[listValueIndex]), { selected: true }), - ...values.slice(listValueIndex + 1) - ]; - newValue = values[listValueIndex]; - finalValue = [...value, values[listValueIndex]]; - } - if (isValidValue(finalValue, newValue) && onBeforeChange(value, finalValue)) { - if (selectedValues) { - setValues(selectedValues); - } - updateValue(finalValue); - } - } - function removeTag(id) { - if (required && max === 1) - return; - const listValueIndex = values.findIndex((lv) => lv.id === id); - const newValue = value.filter((v) => v.id !== id); - if (!onBeforeChange(value, newValue)) - return; - if (listValueIndex !== -1) { - setValues([ - ...values.slice(0, listValueIndex), - Combobox2_spreadProps(Combobox2_spreadValues({}, values[listValueIndex]), { selected: false }), - ...values.slice(listValueIndex + 1) - ]); - } - updateValue(newValue); - } - function selectValue({ id }) { - const val = values.find((v) => v.id === id); - let finalValue = value; - let selectedValues = values; - if (val.selected) { - if (!required || max !== 1) { - finalValue = value.filter((v) => v.id !== val.id); - selectedValues = values.map((v) => v.id === val.id ? Combobox2_spreadProps(Combobox2_spreadValues({}, v), { selected: false }) : v); - } - } else if (value.length < max) { - finalValue = [...value, val]; - selectedValues = values.map((v) => v.id === val.id ? Combobox2_spreadProps(Combobox2_spreadValues({}, v), { selected: true }) : v); - } else if (max === 1) { - finalValue = [val]; - selectedValues = values.map((v) => Combobox2_spreadProps(Combobox2_spreadValues({}, v), { selected: v.id === val.id })); - } - if (isValidValue(finalValue, val) && onBeforeChange(value, finalValue)) { - updateValue(finalValue); - setValues(selectedValues); - } - if (max === 1 || closeOnSelect) { - closeDropdown(); - } - } - function selectAllValues(selected) { - if (values.length > max) - return; - const newValue = selected ? [...values] : []; - if (!onBeforeChange(value, newValue)) - return; - updateValue(newValue); - setValues(values.map((v) => Combobox2_spreadProps(Combobox2_spreadValues({}, v), { selected }))); - if (closeOnSelect) - closeDropdown(); - } - function moveUpActiveItem() { - const visibleItems = getFilteredValues().filter((v) => !v.disabled); - if (visibleItems.length === 0) - return; - if (activeItem === null || visibleItems.length === 1) { - setActiveItem(visibleItems[visibleItems.length - 1]); - return; - } - const activeIndex = visibleItems.findIndex((v) => v.id === activeItem.id); - setActiveItem(visibleItems[activeIndex > 0 ? activeIndex - 1 : visibleItems.length - 1]); - } - function moveDownActiveItem() { - const visibleItems = getFilteredValues().filter((v) => !v.disabled); - if (visibleItems.length === 0) - return; - if (activeItem === null || visibleItems.length === 1) { - setActiveItem(visibleItems[0]); - return; - } - const activeIndex = visibleItems.findIndex((v) => v.id === activeItem.id); - setActiveItem(visibleItems[activeIndex < visibleItems.length - 1 ? activeIndex + 1 : 0]); - } - function executeTriggerAction() { - if (expandMode) { - setValuesExpanded(!valuesExpanded); - } else { - openDropdown(); - } - } - function handleDocumentClick(e) { - const isClickInside = rootRef.current && rootRef.current.contains(e.target) || dropdownRef.current && dropdownRef.current.contains(e.target); - if (!isClickInside) { - closeDropdown(); - } - } - function onClickCapture(e) { - if (!disabled) - return; - if (!expandMode) { - e.stopPropagation(); - return; - } - const triggerElement = rootRef.current.querySelector(".tyk-combobox2__values-container-trigger"); - if (!triggerElement) - return; - const isClickOnTrigger = triggerElement === e.target || triggerElement.contains(e.target); - if (!isClickOnTrigger) - e.stopPropagation(); - } - function onTagMessage(message, data) { - if (message === "add") { - addTag(data); - updateSearchValue(""); - } - if (message === "remove") - removeTag(data); - if (message === "input.change") - updateSearchValue(data); - if (message === "input.enter") { - if (activeItem) { - selectValue(activeItem); - } else if (tagSeparators.includes("Enter")) { - addTag(data); - updateSearchValue(""); - } - } - if (message === "input.arrowUp") { - openDropdown(); - moveUpActiveItem(); - } - if (message === "input.arrowDown") { - openDropdown(); - moveDownActiveItem(); - } - if (message === "input.escape") - closeDropdown(); - if (message === "input.blur" && addTagOnBlur) { - addTag(data); - updateSearchValue(""); - } - if (message === "input.focus") { - openDropdown(); - } - } - function onMessage(message, data) { - if (message.startsWith("tag.")) - onTagMessage(message.slice(4), data); - if (message === "value.select") - selectValue(data.item); - if (message === "value.select-all") - selectAllValues(data); - if (message === "text-value.click") - openDropdown(); - if (message === "search.change") - updateSearchValue(data); - if (message === "search.escape") - closeDropdown(); - if (message === "search.arrowUp") - moveUpActiveItem(); - if (message === "search.arrowDown") - moveDownActiveItem(); - if (message === "search.enter") { - if (activeItem) - selectValue(activeItem); - } - } - (0,external_react_namespaceObject.useEffect)(() => { - window.addEventListener("click", handleDocumentClick, true); - return () => window.removeEventListener("click", handleDocumentClick, true); - }, []); - (0,external_react_namespaceObject.useEffect)(() => { - if (propValues.length) { - const newValues = propValues.map((v) => Combobox2_spreadProps(Combobox2_spreadValues({}, normalizeValue(v)), { - selected: value.some((sv) => sv.id === v.id) - })); - setValues(newValues); - setValue((val) => val.map((v) => newValues.find((nv) => nv.id === v.id) || v)); - } else if (values.length) { - setValues([]); - } - }, [propValues]); - (0,external_react_namespaceObject.useEffect)(() => { - const newValue = getValueFromProp(propValue, values); - setValue(newValue); - setValues((vals) => vals.map((v) => Combobox2_spreadProps(Combobox2_spreadValues({}, normalizeValue(v)), { - selected: newValue.some((nv) => nv.id === v.id) - }))); - }, [propValue]); - (0,external_react_namespaceObject.useEffect)(() => { - if (!expandMode) - return () => { - }; - const valuesElement = comboboxControlRef.current.querySelector(".tyk-combobox2__current-values"); - const updateScroll = () => { - valuesElement.scrollTop = valuesElement.scrollHeight; - }; - const mobserver = new MutationObserver(updateScroll); - const robserver = new ResizeObserver(updateScroll); - mobserver.observe(valuesElement, { attributes: true, childList: true, subtree: true }); - robserver.observe(valuesElement); - return () => { - mobserver.disconnect(); - robserver.disconnect(); - }; - }); - const filteredValues = getFilteredValues(); - const currentValuesClasses = [ - "tyk-combobox2__current-values", - expandMode && "expand-mode", - `tyk-combobox2__current-values--${valuesExpanded ? "expanded" : "collapsed"}` - ].join(" "); - return /* @__PURE__ */ external_react_default().createElement( - "div", - Combobox2_spreadProps(Combobox2_spreadValues({ - ref: rootRef, - tabIndex: disabled ? "-1" : "0", - onClickCapture - }, restProps), { - className: getCssClasses() - }), - label && /* @__PURE__ */ external_react_default().createElement("label", { style: { flexBasis: labelwidth || "auto" } }, label), - !readOnly && /* @__PURE__ */ external_react_default().createElement( - "div", - { - className: "tyk-form-control__wrapper", - style: { flexBasis: `calc(100% - ${labelwidth} - 20px)` } - }, - /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-form-control", ref: comboboxControlRef }, /* @__PURE__ */ external_react_default().createElement( - "div", - { - className: currentValuesClasses, - onClick: openDropdown, - role: "none" - }, - /* @__PURE__ */ external_react_default().createElement( - js_Value, - { - value, - max, - tags, - tagSeparators, - addTagOnBlur, - allowCustomValues, - placeholder, - disabled, - valueOverflow, - renderValue, - focus: isOpened, - onMessage, - readOnly - } - ) - ), displayDropdownTrigger && /* @__PURE__ */ external_react_default().createElement( - "div", - { - className: `tyk-combobox2__values-container-trigger${valuesExpanded ? " tyk-combobox2__values-container-trigger--expanded" : ""}`, - role: "button", - tabIndex: disabled ? -1 : 0, - onClick: executeTriggerAction, - onKeyPress: executeTriggerAction - }, - expandMode ? /* @__PURE__ */ external_react_default().createElement(components_Icon, { type: valuesExpanded ? "compress-arrows-alt" : "expand-arrows-alt" }) : /* @__PURE__ */ external_react_default().createElement(components_Icon, { family: "tykon", type: "arrowdown" }) - )), - isOpened && (!tags || filteredValues.length > 0) && /* @__PURE__ */ external_react_default().createElement( - components_FloatingContainer, - Combobox2_spreadProps(Combobox2_spreadValues({ - element: comboboxControlRef, - size: "matchElement", - className: `tyk-combobox2__combobox-dropdown tyk-form-group ${getThemeClasses().join(" ")}`, - ref: dropdownRef, - displayAxis: "vertical" - }, floatingContainerConfig), { - infiniteScrollerConfig - }), - renderList ? renderList(filteredValues, { - tags, - searchValue, - activeItem, - listRef, - sendMessage: onMessage - }) : /* @__PURE__ */ external_react_default().createElement( - js_List, - { - listRef, - showSearch, - values: filteredValues, - tags, - searchValue, - activeItem, - onMessage, - renderListItem, - selectAll - } - ) - ), - note && /* @__PURE__ */ external_react_default().createElement("p", { className: "tyk-form-control__help-block" }, note), - (error && error !== "true" && error !== "false" || Boolean(localValidationError)) && /* @__PURE__ */ external_react_default().createElement("p", { className: "tyk-form-control__error-message" }, error || localValidationError) - ), - readOnly && /* @__PURE__ */ external_react_default().createElement("div", null, /* @__PURE__ */ external_react_default().createElement( - js_Value, - { - value, - tags, - renderValue, - readOnly - } - )) - ); -} -Combobox2.propTypes = { - /** If `true` it allows entering values that are not in the list. */ - allowCustomValues: (external_prop_types_default()).bool, - /** Alias for `renderList` - * used for backwards compatibility with the old Combobox component. */ - CustomListComponent: (external_prop_types_default()).elementType, - /** A function used for filtering elements displayed in the list when typing in. */ - searchItem: (external_prop_types_default()).func, - /** A custom component that will be used to display a value. */ - renderValue: (external_prop_types_default()).func, - /** A custom component that will be used to display an item in the dropdown list. */ - renderListItem: (external_prop_types_default()).func, - /** A custom component that will be used to display the entire content of the dropdown. */ - renderList: (external_prop_types_default()).func, - disabled: (external_prop_types_default()).bool, - /** hides the UI form element and displayes just the value as text */ - readOnly: (external_prop_types_default()).bool, - error: (external_prop_types_default()).string, - label: external_prop_types_default().oneOfType([ - external_prop_types_default().arrayOf((external_prop_types_default()).node), - (external_prop_types_default()).node, - (external_prop_types_default()).element, - (external_prop_types_default()).func, - (external_prop_types_default()).string - ]), - labelwidth: (external_prop_types_default()).string, - /** The maximum number of values that can be selected/added. */ - max: (external_prop_types_default()).number, - /** Shorthand for max=Infinity */ - multiple: (external_prop_types_default()).bool, - note: external_prop_types_default().oneOfType([ - (external_prop_types_default()).node, - (external_prop_types_default()).element, - (external_prop_types_default()).string - ]), - /** - * Callback called before changing the value of the component. - * The value change will succeed only if the callback's return value is truthy. - * The callback is called with two arguments: 1) the previous value, 2) the next value */ - onBeforeChange: (external_prop_types_default()).func, - onChange: (external_prop_types_default()).func, - placeholder: (external_prop_types_default()).string, - /** Enables the display of values as `Pill` components that can be - * removed without opening the dropdown. */ - tags: (external_prop_types_default()).bool, - /** A list of characters that will trigger the creation of a tag when typed. */ - tagSeparators: external_prop_types_default().arrayOf((external_prop_types_default()).string), - /** If set to true a tag will be created whenever the component loses focus - * and there is something typed in. */ - addTagOnBlur: (external_prop_types_default()).bool, - theme: (external_prop_types_default()).string, - /** The value of the component. It can be a string, an array, - * or an object with an `id` property. */ - value: external_prop_types_default().oneOfType([ - (external_prop_types_default()).string, - external_prop_types_default().instanceOf(Array), - external_prop_types_default().instanceOf(Object) - ]), - /** An array of selectable values. */ - values: external_prop_types_default().instanceOf(Array), - /** Config object passed to the internal floating container component. */ - floatingContainerConfig: external_prop_types_default().instanceOf(Object), - /** If set to `single` it will display the values on a single line - * with an ellipsis at the end. */ - valueOverflow: external_prop_types_default().oneOf(["single", "multiple"]), - /** - * If set to `true` whenever the user clicks on the dropdown trigger - * the selected values container - * will expand to show all selected values instead of opening the dropdown. - */ - expandMode: (external_prop_types_default()).bool, - /** Config object passed to the internal infinite scroller component. */ - infiniteScrollerConfig: external_prop_types_default().instanceOf(Object), - /** Toggles the display of the dropdown trigger. */ - displayDropdownTrigger: (external_prop_types_default()).bool, - /** - * If a boolean it will toggle the select all functionality from the dropdown. - * It can also be an object with the shape `{ label, show, mode, render }`. - * label - A string displayed as the select all option - * show - It can be one of `['always', 'notSameState']`. - * `always` means the option will always be displayed. - * `notSameState` means it will be displayed only if the list items are - * not all with the same state (depending on the `mode` value) - * mode - It can be one of `['select', 'unselect']` and makes sense only - * when the `show` property is `notSameState` - * `select` means the select all option will only be displayed if not all - * items are selected - * `unselect` means the option will be displayed if no items are selected - */ - selectAll: external_prop_types_default().oneOfType([ - (external_prop_types_default()).bool, - external_prop_types_default().shape({ - label: external_prop_types_default().oneOfType([ - external_prop_types_default().arrayOf((external_prop_types_default()).node), - (external_prop_types_default()).node, - (external_prop_types_default()).element, - (external_prop_types_default()).func, - (external_prop_types_default()).string - ]), - mode: external_prop_types_default().oneOf(["select", "unselect"]), - show: external_prop_types_default().oneOf(["always", "notSameState"]), - render: (external_prop_types_default()).func - }) - ]), - /** It `true` the dropdown will close after selecting a value. */ - closeOnSelect: (external_prop_types_default()).bool, - /** Toggles the display of the search input from the dropdown. */ - showSearch: (external_prop_types_default()).bool, - /** If it is required and can only select one value once you have something - * selected you will not be able to deselect */ - required: (external_prop_types_default()).bool, - /** Validates newly added value before adding it to the selected values. - * Returns an error string in case of error otherwise it returns undefined - */ - validateOnChange: (external_prop_types_default()).func, - wrapperClassName: (external_prop_types_default()).string -}; -/* harmony default export */ const components_Combobox2 = (Combobox2); - -;// CONCATENATED MODULE: external "flatpickr" -const external_flatpickr_namespaceObject = require("flatpickr"); -var external_flatpickr_default = /*#__PURE__*/__webpack_require__.n(external_flatpickr_namespaceObject); -// EXTERNAL MODULE: ./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js -var injectStylesIntoStyleTag = __webpack_require__(379); -var injectStylesIntoStyleTag_default = /*#__PURE__*/__webpack_require__.n(injectStylesIntoStyleTag); -// EXTERNAL MODULE: ./node_modules/style-loader/dist/runtime/styleDomAPI.js -var styleDomAPI = __webpack_require__(795); -var styleDomAPI_default = /*#__PURE__*/__webpack_require__.n(styleDomAPI); -// EXTERNAL MODULE: ./node_modules/style-loader/dist/runtime/insertBySelector.js -var insertBySelector = __webpack_require__(569); -var insertBySelector_default = /*#__PURE__*/__webpack_require__.n(insertBySelector); -// EXTERNAL MODULE: ./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js -var setAttributesWithoutAttributes = __webpack_require__(565); -var setAttributesWithoutAttributes_default = /*#__PURE__*/__webpack_require__.n(setAttributesWithoutAttributes); -// EXTERNAL MODULE: ./node_modules/style-loader/dist/runtime/insertStyleElement.js -var insertStyleElement = __webpack_require__(216); -var insertStyleElement_default = /*#__PURE__*/__webpack_require__.n(insertStyleElement); -// EXTERNAL MODULE: ./node_modules/style-loader/dist/runtime/styleTagTransform.js -var styleTagTransform = __webpack_require__(589); -var styleTagTransform_default = /*#__PURE__*/__webpack_require__.n(styleTagTransform); -// EXTERNAL MODULE: ./node_modules/css-loader/dist/cjs.js!./node_modules/flatpickr/dist/flatpickr.min.css -var flatpickr_min = __webpack_require__(821); -;// CONCATENATED MODULE: ./node_modules/flatpickr/dist/flatpickr.min.css - - - - - - - - - - - -var options = {}; - -options.styleTagTransform = (styleTagTransform_default()); -options.setAttributes = (setAttributesWithoutAttributes_default()); - - options.insert = insertBySelector_default().bind(null, "head"); - -options.domAPI = (styleDomAPI_default()); -options.insertStyleElement = (insertStyleElement_default()); - -var update = injectStylesIntoStyleTag_default()(flatpickr_min/* default */.Z, options); - - - - - /* harmony default export */ const dist_flatpickr_min = (flatpickr_min/* default */.Z && flatpickr_min/* default */.Z.locals ? flatpickr_min/* default */.Z.locals : undefined); - -;// CONCATENATED MODULE: ./src/form/components/DatePicker/index.js -var DatePicker_defProp = Object.defineProperty; -var DatePicker_defProps = Object.defineProperties; -var DatePicker_getOwnPropDescs = Object.getOwnPropertyDescriptors; -var DatePicker_getOwnPropSymbols = Object.getOwnPropertySymbols; -var DatePicker_hasOwnProp = Object.prototype.hasOwnProperty; -var DatePicker_propIsEnum = Object.prototype.propertyIsEnumerable; -var DatePicker_defNormalProp = (obj, key, value) => key in obj ? DatePicker_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var DatePicker_spreadValues = (a, b) => { - for (var prop in b || (b = {})) - if (DatePicker_hasOwnProp.call(b, prop)) - DatePicker_defNormalProp(a, prop, b[prop]); - if (DatePicker_getOwnPropSymbols) - for (var prop of DatePicker_getOwnPropSymbols(b)) { - if (DatePicker_propIsEnum.call(b, prop)) - DatePicker_defNormalProp(a, prop, b[prop]); - } - return a; -}; -var DatePicker_spreadProps = (a, b) => DatePicker_defProps(a, DatePicker_getOwnPropDescs(b)); - - - - - - -function DatePicker({ - children, - disabled, - readOnly = false, - error, - id, - label, - labelwidth, - note, - onClose, - onChange, - onOpen, - theme, - config = {}, - value, - wrapperClassName = "" -}) { - const [pickerInstance, setPickerInstance] = (0,external_react_namespaceObject.useState)(null); - const dateRef = (0,external_react_namespaceObject.useRef)(null); - const prevValue = hooks_usePrevious(value); - const hasValueChanged = (0,external_react_namespaceObject.useCallback)((prevDate, currentDate) => { - if (!prevDate) - return true; - if (!Array.isArray(currentDate)) - return prevDate.getTime() !== currentDate.getTime(); - let diffDates = currentDate; - if (prevDate && currentDate.length && prevDate.length) { - diffDates = currentDate.filter((date, index) => date.getTime() !== prevDate[index].getTime()); - return diffDates.length > 0; - } - return currentDate.length > 0; - }, []); - const onDateChange = (0,external_react_namespaceObject.useCallback)((dateValue) => { - const finalValue = config.mode === "range" ? dateValue : dateValue[0] || null; - if (!onChange) - return; - if (config.mode === "range") { - if (finalValue.length === 2 && hasValueChanged(prevValue, finalValue)) { - onChange(finalValue); - } - } else { - onChange(finalValue); - } - }, [prevValue, onChange, hasValueChanged]); - (0,external_react_namespaceObject.useEffect)(() => { - if (dateRef && dateRef.current && !pickerInstance) { - const instance = external_flatpickr_default()(dateRef.current, DatePicker_spreadProps(DatePicker_spreadValues({}, config), { - defaultDate: value, - onChange: onDateChange, - onClose, - onOpen - })); - setPickerInstance(instance); - } - return () => { - if (pickerInstance) { - pickerInstance.destroy(); - } - }; - }, [dateRef.current, pickerInstance]); - (0,external_react_namespaceObject.useEffect)(() => { - if (pickerInstance) { - let tempValue = value; - if (typeof value === "string") { - tempValue = new Date(value); - } else if (Array.isArray(value)) { - tempValue = value.map((date) => typeof date === "string" ? new Date(date) : date); - } - if (hasValueChanged(prevValue, tempValue)) { - pickerInstance.set("onChange", onDateChange); - if (config.mode === "range") { - if (tempValue && tempValue.length === 2) { - pickerInstance.setDate(tempValue, true); - } - } else { - pickerInstance.setDate(tempValue, true); - } - } - } - }, [prevValue, value, pickerInstance]); - const classes = [ - "tyk-form-group", - "tyk-form-group--addon-right", - wrapperClassName, - ...theme ? theme.split(" ").map((t) => `tyk-form-group--${t}`) : [], - labelwidth && "tyk-form-group--label-has-width", - error && "has-error" - ].filter(Boolean).join(" "); - const getLabelStyles = () => { - if (labelwidth) - return { flexBasis: labelwidth }; - return {}; - }; - const getNonLabelWidth = () => { - if (labelwidth) - return { flexBasis: `calc(100% - ${labelwidth} - 20px)` }; - return {}; - }; - const openCalendar = (0,external_react_namespaceObject.useCallback)(() => { - if (!pickerInstance) - return; - pickerInstance.open(); - }, [pickerInstance]); - const getInputError = () => error && error !== "true" && error !== "false" ? /* @__PURE__ */ external_react_default().createElement("p", { className: "tyk-form-control__error-message" }, error) : null; - const getInputField = () => { - let inputStyle = {}; - let addonStyle = {}; - if (config && config.inline) { - inputStyle = { - height: 0, - padding: 0, - width: 0, - visibility: "hidden" - }; - addonStyle = { - display: "none" - }; - } - return /* @__PURE__ */ external_react_default().createElement((external_react_default()).Fragment, null, /* @__PURE__ */ external_react_default().createElement( - "input", - { - disabled, - className: "tyk-form-control", - "data-input": true, - type: "date", - ref: dateRef, - style: inputStyle - } - ), /* @__PURE__ */ external_react_default().createElement( - "div", - { - className: "tyk-input-group__addon", - onClick: openCalendar, - role: "button", - onKeyUp: () => { - }, - tabIndex: 0, - style: addonStyle - }, - /* @__PURE__ */ external_react_default().createElement(components_Icon, { type: "calendar" }) - )); - }; - return /* @__PURE__ */ external_react_default().createElement((external_react_default()).Fragment, null, children && children.length ? children({ openCalendar, ref: dateRef }) : /* @__PURE__ */ external_react_default().createElement("div", { className: classes }, label ? /* @__PURE__ */ external_react_default().createElement("label", { htmlFor: id, style: getLabelStyles() }, label) : null, !readOnly && /* @__PURE__ */ external_react_default().createElement( - "div", - { - className: "tyk-form-control__wrapper flatpickr", - style: getNonLabelWidth() - }, - /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-input-group" }, getInputField()), - note ? /* @__PURE__ */ external_react_default().createElement("p", { className: "tyk-form-control__help-block" }, note) : null, - getInputError() - )), /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-form-control--readonly" }, readOnly && !value && "-", readOnly && value && external_flatpickr_default().formatDate(value, config.dateFormat || "d/m/Y"))); -} -DatePicker.propTypes = { - config: external_prop_types_default().instanceOf(Object), - children: external_prop_types_default().oneOfType([ - (external_prop_types_default()).element, - (external_prop_types_default()).node, - (external_prop_types_default()).string, - (external_prop_types_default()).func - ]), - disabled: (external_prop_types_default()).bool, - readOnly: (external_prop_types_default()).bool, - id: (external_prop_types_default()).string, - label: external_prop_types_default().oneOfType([ - external_prop_types_default().arrayOf((external_prop_types_default()).node), - (external_prop_types_default()).node, - (external_prop_types_default()).element, - (external_prop_types_default()).func, - (external_prop_types_default()).string - ]), - labelwidth: (external_prop_types_default()).string, - note: (external_prop_types_default()).string, - onChange: external_prop_types_default().oneOfType([ - (external_prop_types_default()).func, - external_prop_types_default().instanceOf(Array) - ]), - onClose: external_prop_types_default().oneOfType([ - (external_prop_types_default()).func, - external_prop_types_default().instanceOf(Array) - ]), - onOpen: external_prop_types_default().oneOfType([ - (external_prop_types_default()).func, - external_prop_types_default().instanceOf(Array) - ]), - theme: (external_prop_types_default()).string, - error: (external_prop_types_default()).string, - value: external_prop_types_default().oneOfType([ - external_prop_types_default().instanceOf(Array), - external_prop_types_default().instanceOf(Object), - (external_prop_types_default()).string - ]), - wrapperClassName: (external_prop_types_default()).string -}; -/* harmony default export */ const components_DatePicker = (DatePicker); - -;// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/typeof.js -function _typeof(o) { - "@babel/helpers - typeof"; - - return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { - return typeof o; - } : function (o) { - return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; - }, _typeof(o); -} -;// CONCATENATED MODULE: ./node_modules/date-fns/esm/_lib/requiredArgs/index.js -function requiredArgs(required, args) { - if (args.length < required) { - throw new TypeError(required + ' argument' + (required > 1 ? 's' : '') + ' required, but only ' + args.length + ' present'); - } -} -;// CONCATENATED MODULE: ./node_modules/date-fns/esm/isDate/index.js - - -/** - * @name isDate - * @category Common Helpers - * @summary Is the given value a date? - * - * @description - * Returns true if the given value is an instance of Date. The function works for dates transferred across iframes. - * - * @param {*} value - the value to check - * @returns {boolean} true if the given value is a date - * @throws {TypeError} 1 arguments required - * - * @example - * // For a valid date: - * const result = isDate(new Date()) - * //=> true - * - * @example - * // For an invalid date: - * const result = isDate(new Date(NaN)) - * //=> true - * - * @example - * // For some value: - * const result = isDate('2014-02-31') - * //=> false - * - * @example - * // For an object: - * const result = isDate({}) - * //=> false - */ -function isDate(value) { - requiredArgs(1, arguments); - return value instanceof Date || _typeof(value) === 'object' && Object.prototype.toString.call(value) === '[object Date]'; -} -;// CONCATENATED MODULE: ./node_modules/date-fns/esm/toDate/index.js - - -/** - * @name toDate - * @category Common Helpers - * @summary Convert the given argument to an instance of Date. - * - * @description - * Convert the given argument to an instance of Date. - * - * If the argument is an instance of Date, the function returns its clone. - * - * If the argument is a number, it is treated as a timestamp. - * - * If the argument is none of the above, the function returns Invalid Date. - * - * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`. - * - * @param {Date|Number} argument - the value to convert - * @returns {Date} the parsed date in the local time zone - * @throws {TypeError} 1 argument required - * - * @example - * // Clone the date: - * const result = toDate(new Date(2014, 1, 11, 11, 30, 30)) - * //=> Tue Feb 11 2014 11:30:30 - * - * @example - * // Convert the timestamp to date: - * const result = toDate(1392098430000) - * //=> Tue Feb 11 2014 11:30:30 - */ -function toDate(argument) { - requiredArgs(1, arguments); - var argStr = Object.prototype.toString.call(argument); - - // Clone the date - if (argument instanceof Date || _typeof(argument) === 'object' && argStr === '[object Date]') { - // Prevent the date to lose the milliseconds when passed to new Date() in IE10 - return new Date(argument.getTime()); - } else if (typeof argument === 'number' || argStr === '[object Number]') { - return new Date(argument); - } else { - if ((typeof argument === 'string' || argStr === '[object String]') && typeof console !== 'undefined') { - // eslint-disable-next-line no-console - console.warn("Starting with v2.0.0-beta.1 date-fns doesn't accept strings as date arguments. Please use `parseISO` to parse strings. See: https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#string-arguments"); - // eslint-disable-next-line no-console - console.warn(new Error().stack); - } - return new Date(NaN); - } -} -;// CONCATENATED MODULE: ./node_modules/date-fns/esm/isValid/index.js - - - -/** - * @name isValid - * @category Common Helpers - * @summary Is the given date valid? - * - * @description - * Returns false if argument is Invalid Date and true otherwise. - * Argument is converted to Date using `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate} - * Invalid Date is a Date, whose time value is NaN. - * - * Time value of Date: http://es5.github.io/#x15.9.1.1 - * - * @param {*} date - the date to check - * @returns {Boolean} the date is valid - * @throws {TypeError} 1 argument required - * - * @example - * // For the valid date: - * const result = isValid(new Date(2014, 1, 31)) - * //=> true - * - * @example - * // For the value, convertable into a date: - * const result = isValid(1393804800000) - * //=> true - * - * @example - * // For the invalid date: - * const result = isValid(new Date('')) - * //=> false - */ -function isValid(dirtyDate) { - requiredArgs(1, arguments); - if (!isDate(dirtyDate) && typeof dirtyDate !== 'number') { - return false; - } - var date = toDate(dirtyDate); - return !isNaN(Number(date)); -} -;// CONCATENATED MODULE: ./node_modules/date-fns/esm/_lib/toInteger/index.js -function toInteger(dirtyNumber) { - if (dirtyNumber === null || dirtyNumber === true || dirtyNumber === false) { - return NaN; - } - var number = Number(dirtyNumber); - if (isNaN(number)) { - return number; - } - return number < 0 ? Math.ceil(number) : Math.floor(number); -} -;// CONCATENATED MODULE: ./node_modules/date-fns/esm/addMilliseconds/index.js - - - -/** - * @name addMilliseconds - * @category Millisecond Helpers - * @summary Add the specified number of milliseconds to the given date. - * - * @description - * Add the specified number of milliseconds to the given date. - * - * @param {Date|Number} date - the date to be changed - * @param {Number} amount - the amount of milliseconds to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`. - * @returns {Date} the new date with the milliseconds added - * @throws {TypeError} 2 arguments required - * - * @example - * // Add 750 milliseconds to 10 July 2014 12:45:30.000: - * const result = addMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750) - * //=> Thu Jul 10 2014 12:45:30.750 - */ -function addMilliseconds(dirtyDate, dirtyAmount) { - requiredArgs(2, arguments); - var timestamp = toDate(dirtyDate).getTime(); - var amount = toInteger(dirtyAmount); - return new Date(timestamp + amount); -} -;// CONCATENATED MODULE: ./node_modules/date-fns/esm/subMilliseconds/index.js - - - -/** - * @name subMilliseconds - * @category Millisecond Helpers - * @summary Subtract the specified number of milliseconds from the given date. - * - * @description - * Subtract the specified number of milliseconds from the given date. - * - * @param {Date|Number} date - the date to be changed - * @param {Number} amount - the amount of milliseconds to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`. - * @returns {Date} the new date with the milliseconds subtracted - * @throws {TypeError} 2 arguments required - * - * @example - * // Subtract 750 milliseconds from 10 July 2014 12:45:30.000: - * const result = subMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750) - * //=> Thu Jul 10 2014 12:45:29.250 - */ -function subMilliseconds(dirtyDate, dirtyAmount) { - requiredArgs(2, arguments); - var amount = toInteger(dirtyAmount); - return addMilliseconds(dirtyDate, -amount); -} -;// CONCATENATED MODULE: ./node_modules/date-fns/esm/_lib/getUTCDayOfYear/index.js - - -var MILLISECONDS_IN_DAY = 86400000; -function getUTCDayOfYear(dirtyDate) { - requiredArgs(1, arguments); - var date = toDate(dirtyDate); - var timestamp = date.getTime(); - date.setUTCMonth(0, 1); - date.setUTCHours(0, 0, 0, 0); - var startOfYearTimestamp = date.getTime(); - var difference = timestamp - startOfYearTimestamp; - return Math.floor(difference / MILLISECONDS_IN_DAY) + 1; -} -;// CONCATENATED MODULE: ./node_modules/date-fns/esm/_lib/startOfUTCISOWeek/index.js - - -function startOfUTCISOWeek(dirtyDate) { - requiredArgs(1, arguments); - var weekStartsOn = 1; - var date = toDate(dirtyDate); - var day = date.getUTCDay(); - var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn; - date.setUTCDate(date.getUTCDate() - diff); - date.setUTCHours(0, 0, 0, 0); - return date; -} -;// CONCATENATED MODULE: ./node_modules/date-fns/esm/_lib/getUTCISOWeekYear/index.js - - - -function getUTCISOWeekYear(dirtyDate) { - requiredArgs(1, arguments); - var date = toDate(dirtyDate); - var year = date.getUTCFullYear(); - var fourthOfJanuaryOfNextYear = new Date(0); - fourthOfJanuaryOfNextYear.setUTCFullYear(year + 1, 0, 4); - fourthOfJanuaryOfNextYear.setUTCHours(0, 0, 0, 0); - var startOfNextYear = startOfUTCISOWeek(fourthOfJanuaryOfNextYear); - var fourthOfJanuaryOfThisYear = new Date(0); - fourthOfJanuaryOfThisYear.setUTCFullYear(year, 0, 4); - fourthOfJanuaryOfThisYear.setUTCHours(0, 0, 0, 0); - var startOfThisYear = startOfUTCISOWeek(fourthOfJanuaryOfThisYear); - if (date.getTime() >= startOfNextYear.getTime()) { - return year + 1; - } else if (date.getTime() >= startOfThisYear.getTime()) { - return year; - } else { - return year - 1; - } -} -;// CONCATENATED MODULE: ./node_modules/date-fns/esm/_lib/startOfUTCISOWeekYear/index.js - - - -function startOfUTCISOWeekYear(dirtyDate) { - requiredArgs(1, arguments); - var year = getUTCISOWeekYear(dirtyDate); - var fourthOfJanuary = new Date(0); - fourthOfJanuary.setUTCFullYear(year, 0, 4); - fourthOfJanuary.setUTCHours(0, 0, 0, 0); - var date = startOfUTCISOWeek(fourthOfJanuary); - return date; -} -;// CONCATENATED MODULE: ./node_modules/date-fns/esm/_lib/getUTCISOWeek/index.js - - - - -var MILLISECONDS_IN_WEEK = 604800000; -function getUTCISOWeek(dirtyDate) { - requiredArgs(1, arguments); - var date = toDate(dirtyDate); - var diff = startOfUTCISOWeek(date).getTime() - startOfUTCISOWeekYear(date).getTime(); - - // Round the number of days to the nearest integer - // because the number of milliseconds in a week is not constant - // (e.g. it's different in the week of the daylight saving time clock shift) - return Math.round(diff / MILLISECONDS_IN_WEEK) + 1; -} -;// CONCATENATED MODULE: ./node_modules/date-fns/esm/_lib/defaultOptions/index.js -var defaultOptions = {}; -function getDefaultOptions() { - return defaultOptions; -} -function setDefaultOptions(newOptions) { - defaultOptions = newOptions; -} -;// CONCATENATED MODULE: ./node_modules/date-fns/esm/_lib/startOfUTCWeek/index.js - - - - -function startOfUTCWeek(dirtyDate, options) { - var _ref, _ref2, _ref3, _options$weekStartsOn, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2; - requiredArgs(1, arguments); - var defaultOptions = getDefaultOptions(); - var weekStartsOn = toInteger((_ref = (_ref2 = (_ref3 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.weekStartsOn) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.weekStartsOn) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.weekStartsOn) !== null && _ref !== void 0 ? _ref : 0); - - // Test if weekStartsOn is between 0 and 6 _and_ is not NaN - if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) { - throw new RangeError('weekStartsOn must be between 0 and 6 inclusively'); - } - var date = toDate(dirtyDate); - var day = date.getUTCDay(); - var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn; - date.setUTCDate(date.getUTCDate() - diff); - date.setUTCHours(0, 0, 0, 0); - return date; -} -;// CONCATENATED MODULE: ./node_modules/date-fns/esm/_lib/getUTCWeekYear/index.js - - - - - -function getUTCWeekYear(dirtyDate, options) { - var _ref, _ref2, _ref3, _options$firstWeekCon, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2; - requiredArgs(1, arguments); - var date = toDate(dirtyDate); - var year = date.getUTCFullYear(); - var defaultOptions = getDefaultOptions(); - var firstWeekContainsDate = toInteger((_ref = (_ref2 = (_ref3 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref !== void 0 ? _ref : 1); - - // Test if weekStartsOn is between 1 and 7 _and_ is not NaN - if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) { - throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively'); - } - var firstWeekOfNextYear = new Date(0); - firstWeekOfNextYear.setUTCFullYear(year + 1, 0, firstWeekContainsDate); - firstWeekOfNextYear.setUTCHours(0, 0, 0, 0); - var startOfNextYear = startOfUTCWeek(firstWeekOfNextYear, options); - var firstWeekOfThisYear = new Date(0); - firstWeekOfThisYear.setUTCFullYear(year, 0, firstWeekContainsDate); - firstWeekOfThisYear.setUTCHours(0, 0, 0, 0); - var startOfThisYear = startOfUTCWeek(firstWeekOfThisYear, options); - if (date.getTime() >= startOfNextYear.getTime()) { - return year + 1; - } else if (date.getTime() >= startOfThisYear.getTime()) { - return year; - } else { - return year - 1; - } -} -;// CONCATENATED MODULE: ./node_modules/date-fns/esm/_lib/startOfUTCWeekYear/index.js - - - - - -function startOfUTCWeekYear(dirtyDate, options) { - var _ref, _ref2, _ref3, _options$firstWeekCon, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2; - requiredArgs(1, arguments); - var defaultOptions = getDefaultOptions(); - var firstWeekContainsDate = toInteger((_ref = (_ref2 = (_ref3 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref !== void 0 ? _ref : 1); - var year = getUTCWeekYear(dirtyDate, options); - var firstWeek = new Date(0); - firstWeek.setUTCFullYear(year, 0, firstWeekContainsDate); - firstWeek.setUTCHours(0, 0, 0, 0); - var date = startOfUTCWeek(firstWeek, options); - return date; -} -;// CONCATENATED MODULE: ./node_modules/date-fns/esm/_lib/getUTCWeek/index.js - - - - -var getUTCWeek_MILLISECONDS_IN_WEEK = 604800000; -function getUTCWeek(dirtyDate, options) { - requiredArgs(1, arguments); - var date = toDate(dirtyDate); - var diff = startOfUTCWeek(date, options).getTime() - startOfUTCWeekYear(date, options).getTime(); - - // Round the number of days to the nearest integer - // because the number of milliseconds in a week is not constant - // (e.g. it's different in the week of the daylight saving time clock shift) - return Math.round(diff / getUTCWeek_MILLISECONDS_IN_WEEK) + 1; -} -;// CONCATENATED MODULE: ./node_modules/date-fns/esm/_lib/addLeadingZeros/index.js -function addLeadingZeros(number, targetLength) { - var sign = number < 0 ? '-' : ''; - var output = Math.abs(number).toString(); - while (output.length < targetLength) { - output = '0' + output; - } - return sign + output; -} -;// CONCATENATED MODULE: ./node_modules/date-fns/esm/_lib/format/lightFormatters/index.js - -/* - * | | Unit | | Unit | - * |-----|--------------------------------|-----|--------------------------------| - * | a | AM, PM | A* | | - * | d | Day of month | D | | - * | h | Hour [1-12] | H | Hour [0-23] | - * | m | Minute | M | Month | - * | s | Second | S | Fraction of second | - * | y | Year (abs) | Y | | - * - * Letters marked by * are not implemented but reserved by Unicode standard. - */ -var formatters = { - // Year - y: function y(date, token) { - // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_tokens - // | Year | y | yy | yyy | yyyy | yyyyy | - // |----------|-------|----|-------|-------|-------| - // | AD 1 | 1 | 01 | 001 | 0001 | 00001 | - // | AD 12 | 12 | 12 | 012 | 0012 | 00012 | - // | AD 123 | 123 | 23 | 123 | 0123 | 00123 | - // | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 | - // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 | - - var signedYear = date.getUTCFullYear(); - // Returns 1 for 1 BC (which is year 0 in JavaScript) - var year = signedYear > 0 ? signedYear : 1 - signedYear; - return addLeadingZeros(token === 'yy' ? year % 100 : year, token.length); - }, - // Month - M: function M(date, token) { - var month = date.getUTCMonth(); - return token === 'M' ? String(month + 1) : addLeadingZeros(month + 1, 2); - }, - // Day of the month - d: function d(date, token) { - return addLeadingZeros(date.getUTCDate(), token.length); - }, - // AM or PM - a: function a(date, token) { - var dayPeriodEnumValue = date.getUTCHours() / 12 >= 1 ? 'pm' : 'am'; - switch (token) { - case 'a': - case 'aa': - return dayPeriodEnumValue.toUpperCase(); - case 'aaa': - return dayPeriodEnumValue; - case 'aaaaa': - return dayPeriodEnumValue[0]; - case 'aaaa': - default: - return dayPeriodEnumValue === 'am' ? 'a.m.' : 'p.m.'; - } - }, - // Hour [1-12] - h: function h(date, token) { - return addLeadingZeros(date.getUTCHours() % 12 || 12, token.length); - }, - // Hour [0-23] - H: function H(date, token) { - return addLeadingZeros(date.getUTCHours(), token.length); - }, - // Minute - m: function m(date, token) { - return addLeadingZeros(date.getUTCMinutes(), token.length); - }, - // Second - s: function s(date, token) { - return addLeadingZeros(date.getUTCSeconds(), token.length); - }, - // Fraction of second - S: function S(date, token) { - var numberOfDigits = token.length; - var milliseconds = date.getUTCMilliseconds(); - var fractionalSeconds = Math.floor(milliseconds * Math.pow(10, numberOfDigits - 3)); - return addLeadingZeros(fractionalSeconds, token.length); - } -}; -/* harmony default export */ const lightFormatters = (formatters); -;// CONCATENATED MODULE: ./node_modules/date-fns/esm/_lib/format/formatters/index.js - - - - - - - -var dayPeriodEnum = { - am: 'am', - pm: 'pm', - midnight: 'midnight', - noon: 'noon', - morning: 'morning', - afternoon: 'afternoon', - evening: 'evening', - night: 'night' -}; -/* - * | | Unit | | Unit | - * |-----|--------------------------------|-----|--------------------------------| - * | a | AM, PM | A* | Milliseconds in day | - * | b | AM, PM, noon, midnight | B | Flexible day period | - * | c | Stand-alone local day of week | C* | Localized hour w/ day period | - * | d | Day of month | D | Day of year | - * | e | Local day of week | E | Day of week | - * | f | | F* | Day of week in month | - * | g* | Modified Julian day | G | Era | - * | h | Hour [1-12] | H | Hour [0-23] | - * | i! | ISO day of week | I! | ISO week of year | - * | j* | Localized hour w/ day period | J* | Localized hour w/o day period | - * | k | Hour [1-24] | K | Hour [0-11] | - * | l* | (deprecated) | L | Stand-alone month | - * | m | Minute | M | Month | - * | n | | N | | - * | o! | Ordinal number modifier | O | Timezone (GMT) | - * | p! | Long localized time | P! | Long localized date | - * | q | Stand-alone quarter | Q | Quarter | - * | r* | Related Gregorian year | R! | ISO week-numbering year | - * | s | Second | S | Fraction of second | - * | t! | Seconds timestamp | T! | Milliseconds timestamp | - * | u | Extended year | U* | Cyclic year | - * | v* | Timezone (generic non-locat.) | V* | Timezone (location) | - * | w | Local week of year | W* | Week of month | - * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) | - * | y | Year (abs) | Y | Local week-numbering year | - * | z | Timezone (specific non-locat.) | Z* | Timezone (aliases) | - * - * Letters marked by * are not implemented but reserved by Unicode standard. - * - * Letters marked by ! are non-standard, but implemented by date-fns: - * - `o` modifies the previous token to turn it into an ordinal (see `format` docs) - * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days, - * i.e. 7 for Sunday, 1 for Monday, etc. - * - `I` is ISO week of year, as opposed to `w` which is local week of year. - * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year. - * `R` is supposed to be used in conjunction with `I` and `i` - * for universal ISO week-numbering date, whereas - * `Y` is supposed to be used in conjunction with `w` and `e` - * for week-numbering date specific to the locale. - * - `P` is long localized date format - * - `p` is long localized time format - */ - -var formatters_formatters = { - // Era - G: function G(date, token, localize) { - var era = date.getUTCFullYear() > 0 ? 1 : 0; - switch (token) { - // AD, BC - case 'G': - case 'GG': - case 'GGG': - return localize.era(era, { - width: 'abbreviated' - }); - // A, B - case 'GGGGG': - return localize.era(era, { - width: 'narrow' - }); - // Anno Domini, Before Christ - case 'GGGG': - default: - return localize.era(era, { - width: 'wide' - }); - } - }, - // Year - y: function y(date, token, localize) { - // Ordinal number - if (token === 'yo') { - var signedYear = date.getUTCFullYear(); - // Returns 1 for 1 BC (which is year 0 in JavaScript) - var year = signedYear > 0 ? signedYear : 1 - signedYear; - return localize.ordinalNumber(year, { - unit: 'year' - }); - } - return lightFormatters.y(date, token); - }, - // Local week-numbering year - Y: function Y(date, token, localize, options) { - var signedWeekYear = getUTCWeekYear(date, options); - // Returns 1 for 1 BC (which is year 0 in JavaScript) - var weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear; - - // Two digit year - if (token === 'YY') { - var twoDigitYear = weekYear % 100; - return addLeadingZeros(twoDigitYear, 2); - } - - // Ordinal number - if (token === 'Yo') { - return localize.ordinalNumber(weekYear, { - unit: 'year' - }); - } - - // Padding - return addLeadingZeros(weekYear, token.length); - }, - // ISO week-numbering year - R: function R(date, token) { - var isoWeekYear = getUTCISOWeekYear(date); - - // Padding - return addLeadingZeros(isoWeekYear, token.length); - }, - // Extended year. This is a single number designating the year of this calendar system. - // The main difference between `y` and `u` localizers are B.C. years: - // | Year | `y` | `u` | - // |------|-----|-----| - // | AC 1 | 1 | 1 | - // | BC 1 | 1 | 0 | - // | BC 2 | 2 | -1 | - // Also `yy` always returns the last two digits of a year, - // while `uu` pads single digit years to 2 characters and returns other years unchanged. - u: function u(date, token) { - var year = date.getUTCFullYear(); - return addLeadingZeros(year, token.length); - }, - // Quarter - Q: function Q(date, token, localize) { - var quarter = Math.ceil((date.getUTCMonth() + 1) / 3); - switch (token) { - // 1, 2, 3, 4 - case 'Q': - return String(quarter); - // 01, 02, 03, 04 - case 'QQ': - return addLeadingZeros(quarter, 2); - // 1st, 2nd, 3rd, 4th - case 'Qo': - return localize.ordinalNumber(quarter, { - unit: 'quarter' - }); - // Q1, Q2, Q3, Q4 - case 'QQQ': - return localize.quarter(quarter, { - width: 'abbreviated', - context: 'formatting' - }); - // 1, 2, 3, 4 (narrow quarter; could be not numerical) - case 'QQQQQ': - return localize.quarter(quarter, { - width: 'narrow', - context: 'formatting' - }); - // 1st quarter, 2nd quarter, ... - case 'QQQQ': - default: - return localize.quarter(quarter, { - width: 'wide', - context: 'formatting' - }); - } - }, - // Stand-alone quarter - q: function q(date, token, localize) { - var quarter = Math.ceil((date.getUTCMonth() + 1) / 3); - switch (token) { - // 1, 2, 3, 4 - case 'q': - return String(quarter); - // 01, 02, 03, 04 - case 'qq': - return addLeadingZeros(quarter, 2); - // 1st, 2nd, 3rd, 4th - case 'qo': - return localize.ordinalNumber(quarter, { - unit: 'quarter' - }); - // Q1, Q2, Q3, Q4 - case 'qqq': - return localize.quarter(quarter, { - width: 'abbreviated', - context: 'standalone' - }); - // 1, 2, 3, 4 (narrow quarter; could be not numerical) - case 'qqqqq': - return localize.quarter(quarter, { - width: 'narrow', - context: 'standalone' - }); - // 1st quarter, 2nd quarter, ... - case 'qqqq': - default: - return localize.quarter(quarter, { - width: 'wide', - context: 'standalone' - }); - } - }, - // Month - M: function M(date, token, localize) { - var month = date.getUTCMonth(); - switch (token) { - case 'M': - case 'MM': - return lightFormatters.M(date, token); - // 1st, 2nd, ..., 12th - case 'Mo': - return localize.ordinalNumber(month + 1, { - unit: 'month' - }); - // Jan, Feb, ..., Dec - case 'MMM': - return localize.month(month, { - width: 'abbreviated', - context: 'formatting' - }); - // J, F, ..., D - case 'MMMMM': - return localize.month(month, { - width: 'narrow', - context: 'formatting' - }); - // January, February, ..., December - case 'MMMM': - default: - return localize.month(month, { - width: 'wide', - context: 'formatting' - }); - } - }, - // Stand-alone month - L: function L(date, token, localize) { - var month = date.getUTCMonth(); - switch (token) { - // 1, 2, ..., 12 - case 'L': - return String(month + 1); - // 01, 02, ..., 12 - case 'LL': - return addLeadingZeros(month + 1, 2); - // 1st, 2nd, ..., 12th - case 'Lo': - return localize.ordinalNumber(month + 1, { - unit: 'month' - }); - // Jan, Feb, ..., Dec - case 'LLL': - return localize.month(month, { - width: 'abbreviated', - context: 'standalone' - }); - // J, F, ..., D - case 'LLLLL': - return localize.month(month, { - width: 'narrow', - context: 'standalone' - }); - // January, February, ..., December - case 'LLLL': - default: - return localize.month(month, { - width: 'wide', - context: 'standalone' - }); - } - }, - // Local week of year - w: function w(date, token, localize, options) { - var week = getUTCWeek(date, options); - if (token === 'wo') { - return localize.ordinalNumber(week, { - unit: 'week' - }); - } - return addLeadingZeros(week, token.length); - }, - // ISO week of year - I: function I(date, token, localize) { - var isoWeek = getUTCISOWeek(date); - if (token === 'Io') { - return localize.ordinalNumber(isoWeek, { - unit: 'week' - }); - } - return addLeadingZeros(isoWeek, token.length); - }, - // Day of the month - d: function d(date, token, localize) { - if (token === 'do') { - return localize.ordinalNumber(date.getUTCDate(), { - unit: 'date' - }); - } - return lightFormatters.d(date, token); - }, - // Day of year - D: function D(date, token, localize) { - var dayOfYear = getUTCDayOfYear(date); - if (token === 'Do') { - return localize.ordinalNumber(dayOfYear, { - unit: 'dayOfYear' - }); - } - return addLeadingZeros(dayOfYear, token.length); - }, - // Day of week - E: function E(date, token, localize) { - var dayOfWeek = date.getUTCDay(); - switch (token) { - // Tue - case 'E': - case 'EE': - case 'EEE': - return localize.day(dayOfWeek, { - width: 'abbreviated', - context: 'formatting' - }); - // T - case 'EEEEE': - return localize.day(dayOfWeek, { - width: 'narrow', - context: 'formatting' - }); - // Tu - case 'EEEEEE': - return localize.day(dayOfWeek, { - width: 'short', - context: 'formatting' - }); - // Tuesday - case 'EEEE': - default: - return localize.day(dayOfWeek, { - width: 'wide', - context: 'formatting' - }); - } - }, - // Local day of week - e: function e(date, token, localize, options) { - var dayOfWeek = date.getUTCDay(); - var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7; - switch (token) { - // Numerical value (Nth day of week with current locale or weekStartsOn) - case 'e': - return String(localDayOfWeek); - // Padded numerical value - case 'ee': - return addLeadingZeros(localDayOfWeek, 2); - // 1st, 2nd, ..., 7th - case 'eo': - return localize.ordinalNumber(localDayOfWeek, { - unit: 'day' - }); - case 'eee': - return localize.day(dayOfWeek, { - width: 'abbreviated', - context: 'formatting' - }); - // T - case 'eeeee': - return localize.day(dayOfWeek, { - width: 'narrow', - context: 'formatting' - }); - // Tu - case 'eeeeee': - return localize.day(dayOfWeek, { - width: 'short', - context: 'formatting' - }); - // Tuesday - case 'eeee': - default: - return localize.day(dayOfWeek, { - width: 'wide', - context: 'formatting' - }); - } - }, - // Stand-alone local day of week - c: function c(date, token, localize, options) { - var dayOfWeek = date.getUTCDay(); - var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7; - switch (token) { - // Numerical value (same as in `e`) - case 'c': - return String(localDayOfWeek); - // Padded numerical value - case 'cc': - return addLeadingZeros(localDayOfWeek, token.length); - // 1st, 2nd, ..., 7th - case 'co': - return localize.ordinalNumber(localDayOfWeek, { - unit: 'day' - }); - case 'ccc': - return localize.day(dayOfWeek, { - width: 'abbreviated', - context: 'standalone' - }); - // T - case 'ccccc': - return localize.day(dayOfWeek, { - width: 'narrow', - context: 'standalone' - }); - // Tu - case 'cccccc': - return localize.day(dayOfWeek, { - width: 'short', - context: 'standalone' - }); - // Tuesday - case 'cccc': - default: - return localize.day(dayOfWeek, { - width: 'wide', - context: 'standalone' - }); - } - }, - // ISO day of week - i: function i(date, token, localize) { - var dayOfWeek = date.getUTCDay(); - var isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek; - switch (token) { - // 2 - case 'i': - return String(isoDayOfWeek); - // 02 - case 'ii': - return addLeadingZeros(isoDayOfWeek, token.length); - // 2nd - case 'io': - return localize.ordinalNumber(isoDayOfWeek, { - unit: 'day' - }); - // Tue - case 'iii': - return localize.day(dayOfWeek, { - width: 'abbreviated', - context: 'formatting' - }); - // T - case 'iiiii': - return localize.day(dayOfWeek, { - width: 'narrow', - context: 'formatting' - }); - // Tu - case 'iiiiii': - return localize.day(dayOfWeek, { - width: 'short', - context: 'formatting' - }); - // Tuesday - case 'iiii': - default: - return localize.day(dayOfWeek, { - width: 'wide', - context: 'formatting' - }); - } - }, - // AM or PM - a: function a(date, token, localize) { - var hours = date.getUTCHours(); - var dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am'; - switch (token) { - case 'a': - case 'aa': - return localize.dayPeriod(dayPeriodEnumValue, { - width: 'abbreviated', - context: 'formatting' - }); - case 'aaa': - return localize.dayPeriod(dayPeriodEnumValue, { - width: 'abbreviated', - context: 'formatting' - }).toLowerCase(); - case 'aaaaa': - return localize.dayPeriod(dayPeriodEnumValue, { - width: 'narrow', - context: 'formatting' - }); - case 'aaaa': - default: - return localize.dayPeriod(dayPeriodEnumValue, { - width: 'wide', - context: 'formatting' - }); - } - }, - // AM, PM, midnight, noon - b: function b(date, token, localize) { - var hours = date.getUTCHours(); - var dayPeriodEnumValue; - if (hours === 12) { - dayPeriodEnumValue = dayPeriodEnum.noon; - } else if (hours === 0) { - dayPeriodEnumValue = dayPeriodEnum.midnight; - } else { - dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am'; - } - switch (token) { - case 'b': - case 'bb': - return localize.dayPeriod(dayPeriodEnumValue, { - width: 'abbreviated', - context: 'formatting' - }); - case 'bbb': - return localize.dayPeriod(dayPeriodEnumValue, { - width: 'abbreviated', - context: 'formatting' - }).toLowerCase(); - case 'bbbbb': - return localize.dayPeriod(dayPeriodEnumValue, { - width: 'narrow', - context: 'formatting' - }); - case 'bbbb': - default: - return localize.dayPeriod(dayPeriodEnumValue, { - width: 'wide', - context: 'formatting' - }); - } - }, - // in the morning, in the afternoon, in the evening, at night - B: function B(date, token, localize) { - var hours = date.getUTCHours(); - var dayPeriodEnumValue; - if (hours >= 17) { - dayPeriodEnumValue = dayPeriodEnum.evening; - } else if (hours >= 12) { - dayPeriodEnumValue = dayPeriodEnum.afternoon; - } else if (hours >= 4) { - dayPeriodEnumValue = dayPeriodEnum.morning; - } else { - dayPeriodEnumValue = dayPeriodEnum.night; - } - switch (token) { - case 'B': - case 'BB': - case 'BBB': - return localize.dayPeriod(dayPeriodEnumValue, { - width: 'abbreviated', - context: 'formatting' - }); - case 'BBBBB': - return localize.dayPeriod(dayPeriodEnumValue, { - width: 'narrow', - context: 'formatting' - }); - case 'BBBB': - default: - return localize.dayPeriod(dayPeriodEnumValue, { - width: 'wide', - context: 'formatting' - }); - } - }, - // Hour [1-12] - h: function h(date, token, localize) { - if (token === 'ho') { - var hours = date.getUTCHours() % 12; - if (hours === 0) hours = 12; - return localize.ordinalNumber(hours, { - unit: 'hour' - }); - } - return lightFormatters.h(date, token); - }, - // Hour [0-23] - H: function H(date, token, localize) { - if (token === 'Ho') { - return localize.ordinalNumber(date.getUTCHours(), { - unit: 'hour' - }); - } - return lightFormatters.H(date, token); - }, - // Hour [0-11] - K: function K(date, token, localize) { - var hours = date.getUTCHours() % 12; - if (token === 'Ko') { - return localize.ordinalNumber(hours, { - unit: 'hour' - }); - } - return addLeadingZeros(hours, token.length); - }, - // Hour [1-24] - k: function k(date, token, localize) { - var hours = date.getUTCHours(); - if (hours === 0) hours = 24; - if (token === 'ko') { - return localize.ordinalNumber(hours, { - unit: 'hour' - }); - } - return addLeadingZeros(hours, token.length); - }, - // Minute - m: function m(date, token, localize) { - if (token === 'mo') { - return localize.ordinalNumber(date.getUTCMinutes(), { - unit: 'minute' - }); - } - return lightFormatters.m(date, token); - }, - // Second - s: function s(date, token, localize) { - if (token === 'so') { - return localize.ordinalNumber(date.getUTCSeconds(), { - unit: 'second' - }); - } - return lightFormatters.s(date, token); - }, - // Fraction of second - S: function S(date, token) { - return lightFormatters.S(date, token); - }, - // Timezone (ISO-8601. If offset is 0, output is always `'Z'`) - X: function X(date, token, _localize, options) { - var originalDate = options._originalDate || date; - var timezoneOffset = originalDate.getTimezoneOffset(); - if (timezoneOffset === 0) { - return 'Z'; - } - switch (token) { - // Hours and optional minutes - case 'X': - return formatTimezoneWithOptionalMinutes(timezoneOffset); - - // Hours, minutes and optional seconds without `:` delimiter - // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets - // so this token always has the same output as `XX` - case 'XXXX': - case 'XX': - // Hours and minutes without `:` delimiter - return formatTimezone(timezoneOffset); - - // Hours, minutes and optional seconds with `:` delimiter - // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets - // so this token always has the same output as `XXX` - case 'XXXXX': - case 'XXX': // Hours and minutes with `:` delimiter - default: - return formatTimezone(timezoneOffset, ':'); - } - }, - // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent) - x: function x(date, token, _localize, options) { - var originalDate = options._originalDate || date; - var timezoneOffset = originalDate.getTimezoneOffset(); - switch (token) { - // Hours and optional minutes - case 'x': - return formatTimezoneWithOptionalMinutes(timezoneOffset); - - // Hours, minutes and optional seconds without `:` delimiter - // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets - // so this token always has the same output as `xx` - case 'xxxx': - case 'xx': - // Hours and minutes without `:` delimiter - return formatTimezone(timezoneOffset); - - // Hours, minutes and optional seconds with `:` delimiter - // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets - // so this token always has the same output as `xxx` - case 'xxxxx': - case 'xxx': // Hours and minutes with `:` delimiter - default: - return formatTimezone(timezoneOffset, ':'); - } - }, - // Timezone (GMT) - O: function O(date, token, _localize, options) { - var originalDate = options._originalDate || date; - var timezoneOffset = originalDate.getTimezoneOffset(); - switch (token) { - // Short - case 'O': - case 'OO': - case 'OOO': - return 'GMT' + formatTimezoneShort(timezoneOffset, ':'); - // Long - case 'OOOO': - default: - return 'GMT' + formatTimezone(timezoneOffset, ':'); - } - }, - // Timezone (specific non-location) - z: function z(date, token, _localize, options) { - var originalDate = options._originalDate || date; - var timezoneOffset = originalDate.getTimezoneOffset(); - switch (token) { - // Short - case 'z': - case 'zz': - case 'zzz': - return 'GMT' + formatTimezoneShort(timezoneOffset, ':'); - // Long - case 'zzzz': - default: - return 'GMT' + formatTimezone(timezoneOffset, ':'); - } - }, - // Seconds timestamp - t: function t(date, token, _localize, options) { - var originalDate = options._originalDate || date; - var timestamp = Math.floor(originalDate.getTime() / 1000); - return addLeadingZeros(timestamp, token.length); - }, - // Milliseconds timestamp - T: function T(date, token, _localize, options) { - var originalDate = options._originalDate || date; - var timestamp = originalDate.getTime(); - return addLeadingZeros(timestamp, token.length); - } -}; -function formatTimezoneShort(offset, dirtyDelimiter) { - var sign = offset > 0 ? '-' : '+'; - var absOffset = Math.abs(offset); - var hours = Math.floor(absOffset / 60); - var minutes = absOffset % 60; - if (minutes === 0) { - return sign + String(hours); - } - var delimiter = dirtyDelimiter || ''; - return sign + String(hours) + delimiter + addLeadingZeros(minutes, 2); -} -function formatTimezoneWithOptionalMinutes(offset, dirtyDelimiter) { - if (offset % 60 === 0) { - var sign = offset > 0 ? '-' : '+'; - return sign + addLeadingZeros(Math.abs(offset) / 60, 2); - } - return formatTimezone(offset, dirtyDelimiter); -} -function formatTimezone(offset, dirtyDelimiter) { - var delimiter = dirtyDelimiter || ''; - var sign = offset > 0 ? '-' : '+'; - var absOffset = Math.abs(offset); - var hours = addLeadingZeros(Math.floor(absOffset / 60), 2); - var minutes = addLeadingZeros(absOffset % 60, 2); - return sign + hours + delimiter + minutes; -} -/* harmony default export */ const format_formatters = (formatters_formatters); -;// CONCATENATED MODULE: ./node_modules/date-fns/esm/_lib/format/longFormatters/index.js -var dateLongFormatter = function dateLongFormatter(pattern, formatLong) { - switch (pattern) { - case 'P': - return formatLong.date({ - width: 'short' - }); - case 'PP': - return formatLong.date({ - width: 'medium' - }); - case 'PPP': - return formatLong.date({ - width: 'long' - }); - case 'PPPP': - default: - return formatLong.date({ - width: 'full' - }); - } -}; -var timeLongFormatter = function timeLongFormatter(pattern, formatLong) { - switch (pattern) { - case 'p': - return formatLong.time({ - width: 'short' - }); - case 'pp': - return formatLong.time({ - width: 'medium' - }); - case 'ppp': - return formatLong.time({ - width: 'long' - }); - case 'pppp': - default: - return formatLong.time({ - width: 'full' - }); - } -}; -var dateTimeLongFormatter = function dateTimeLongFormatter(pattern, formatLong) { - var matchResult = pattern.match(/(P+)(p+)?/) || []; - var datePattern = matchResult[1]; - var timePattern = matchResult[2]; - if (!timePattern) { - return dateLongFormatter(pattern, formatLong); - } - var dateTimeFormat; - switch (datePattern) { - case 'P': - dateTimeFormat = formatLong.dateTime({ - width: 'short' - }); - break; - case 'PP': - dateTimeFormat = formatLong.dateTime({ - width: 'medium' - }); - break; - case 'PPP': - dateTimeFormat = formatLong.dateTime({ - width: 'long' - }); - break; - case 'PPPP': - default: - dateTimeFormat = formatLong.dateTime({ - width: 'full' - }); - break; - } - return dateTimeFormat.replace('{{date}}', dateLongFormatter(datePattern, formatLong)).replace('{{time}}', timeLongFormatter(timePattern, formatLong)); -}; -var longFormatters = { - p: timeLongFormatter, - P: dateTimeLongFormatter -}; -/* harmony default export */ const format_longFormatters = (longFormatters); -;// CONCATENATED MODULE: ./node_modules/date-fns/esm/_lib/getTimezoneOffsetInMilliseconds/index.js -/** - * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds. - * They usually appear for dates that denote time before the timezones were introduced - * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891 - * and GMT+01:00:00 after that date) - * - * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above, - * which would lead to incorrect calculations. - * - * This function returns the timezone offset in milliseconds that takes seconds in account. - */ -function getTimezoneOffsetInMilliseconds(date) { - var utcDate = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds())); - utcDate.setUTCFullYear(date.getFullYear()); - return date.getTime() - utcDate.getTime(); -} -;// CONCATENATED MODULE: ./node_modules/date-fns/esm/_lib/protectedTokens/index.js -var protectedDayOfYearTokens = ['D', 'DD']; -var protectedWeekYearTokens = ['YY', 'YYYY']; -function isProtectedDayOfYearToken(token) { - return protectedDayOfYearTokens.indexOf(token) !== -1; -} -function isProtectedWeekYearToken(token) { - return protectedWeekYearTokens.indexOf(token) !== -1; -} -function throwProtectedError(token, format, input) { - if (token === 'YYYY') { - throw new RangeError("Use `yyyy` instead of `YYYY` (in `".concat(format, "`) for formatting years to the input `").concat(input, "`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md")); - } else if (token === 'YY') { - throw new RangeError("Use `yy` instead of `YY` (in `".concat(format, "`) for formatting years to the input `").concat(input, "`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md")); - } else if (token === 'D') { - throw new RangeError("Use `d` instead of `D` (in `".concat(format, "`) for formatting days of the month to the input `").concat(input, "`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md")); - } else if (token === 'DD') { - throw new RangeError("Use `dd` instead of `DD` (in `".concat(format, "`) for formatting days of the month to the input `").concat(input, "`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md")); - } -} -;// CONCATENATED MODULE: ./node_modules/date-fns/esm/locale/en-US/_lib/formatDistance/index.js -var formatDistanceLocale = { - lessThanXSeconds: { - one: 'less than a second', - other: 'less than {{count}} seconds' - }, - xSeconds: { - one: '1 second', - other: '{{count}} seconds' - }, - halfAMinute: 'half a minute', - lessThanXMinutes: { - one: 'less than a minute', - other: 'less than {{count}} minutes' - }, - xMinutes: { - one: '1 minute', - other: '{{count}} minutes' - }, - aboutXHours: { - one: 'about 1 hour', - other: 'about {{count}} hours' - }, - xHours: { - one: '1 hour', - other: '{{count}} hours' - }, - xDays: { - one: '1 day', - other: '{{count}} days' - }, - aboutXWeeks: { - one: 'about 1 week', - other: 'about {{count}} weeks' - }, - xWeeks: { - one: '1 week', - other: '{{count}} weeks' - }, - aboutXMonths: { - one: 'about 1 month', - other: 'about {{count}} months' - }, - xMonths: { - one: '1 month', - other: '{{count}} months' - }, - aboutXYears: { - one: 'about 1 year', - other: 'about {{count}} years' - }, - xYears: { - one: '1 year', - other: '{{count}} years' - }, - overXYears: { - one: 'over 1 year', - other: 'over {{count}} years' - }, - almostXYears: { - one: 'almost 1 year', - other: 'almost {{count}} years' - } -}; -var formatDistance = function formatDistance(token, count, options) { - var result; - var tokenValue = formatDistanceLocale[token]; - if (typeof tokenValue === 'string') { - result = tokenValue; - } else if (count === 1) { - result = tokenValue.one; - } else { - result = tokenValue.other.replace('{{count}}', count.toString()); - } - if (options !== null && options !== void 0 && options.addSuffix) { - if (options.comparison && options.comparison > 0) { - return 'in ' + result; - } else { - return result + ' ago'; - } - } - return result; -}; -/* harmony default export */ const _lib_formatDistance = (formatDistance); -;// CONCATENATED MODULE: ./node_modules/date-fns/esm/locale/_lib/buildFormatLongFn/index.js -function buildFormatLongFn(args) { - return function () { - var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; - // TODO: Remove String() - var width = options.width ? String(options.width) : args.defaultWidth; - var format = args.formats[width] || args.formats[args.defaultWidth]; - return format; - }; -} -;// CONCATENATED MODULE: ./node_modules/date-fns/esm/locale/en-US/_lib/formatLong/index.js - -var dateFormats = { - full: 'EEEE, MMMM do, y', - long: 'MMMM do, y', - medium: 'MMM d, y', - short: 'MM/dd/yyyy' -}; -var timeFormats = { - full: 'h:mm:ss a zzzz', - long: 'h:mm:ss a z', - medium: 'h:mm:ss a', - short: 'h:mm a' -}; -var dateTimeFormats = { - full: "{{date}} 'at' {{time}}", - long: "{{date}} 'at' {{time}}", - medium: '{{date}}, {{time}}', - short: '{{date}}, {{time}}' -}; -var formatLong = { - date: buildFormatLongFn({ - formats: dateFormats, - defaultWidth: 'full' - }), - time: buildFormatLongFn({ - formats: timeFormats, - defaultWidth: 'full' - }), - dateTime: buildFormatLongFn({ - formats: dateTimeFormats, - defaultWidth: 'full' - }) -}; -/* harmony default export */ const _lib_formatLong = (formatLong); -;// CONCATENATED MODULE: ./node_modules/date-fns/esm/locale/en-US/_lib/formatRelative/index.js -var formatRelativeLocale = { - lastWeek: "'last' eeee 'at' p", - yesterday: "'yesterday at' p", - today: "'today at' p", - tomorrow: "'tomorrow at' p", - nextWeek: "eeee 'at' p", - other: 'P' -}; -var formatRelative = function formatRelative(token, _date, _baseDate, _options) { - return formatRelativeLocale[token]; -}; -/* harmony default export */ const _lib_formatRelative = (formatRelative); -;// CONCATENATED MODULE: ./node_modules/date-fns/esm/locale/_lib/buildLocalizeFn/index.js -function buildLocalizeFn(args) { - return function (dirtyIndex, options) { - var context = options !== null && options !== void 0 && options.context ? String(options.context) : 'standalone'; - var valuesArray; - if (context === 'formatting' && args.formattingValues) { - var defaultWidth = args.defaultFormattingWidth || args.defaultWidth; - var width = options !== null && options !== void 0 && options.width ? String(options.width) : defaultWidth; - valuesArray = args.formattingValues[width] || args.formattingValues[defaultWidth]; - } else { - var _defaultWidth = args.defaultWidth; - var _width = options !== null && options !== void 0 && options.width ? String(options.width) : args.defaultWidth; - valuesArray = args.values[_width] || args.values[_defaultWidth]; - } - var index = args.argumentCallback ? args.argumentCallback(dirtyIndex) : dirtyIndex; - // @ts-ignore: For some reason TypeScript just don't want to match it, no matter how hard we try. I challenge you to try to remove it! - return valuesArray[index]; - }; -} -;// CONCATENATED MODULE: ./node_modules/date-fns/esm/locale/en-US/_lib/localize/index.js - -var eraValues = { - narrow: ['B', 'A'], - abbreviated: ['BC', 'AD'], - wide: ['Before Christ', 'Anno Domini'] -}; -var quarterValues = { - narrow: ['1', '2', '3', '4'], - abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'], - wide: ['1st quarter', '2nd quarter', '3rd quarter', '4th quarter'] -}; - -// Note: in English, the names of days of the week and months are capitalized. -// If you are making a new locale based on this one, check if the same is true for the language you're working on. -// Generally, formatted dates should look like they are in the middle of a sentence, -// e.g. in Spanish language the weekdays and months should be in the lowercase. -var monthValues = { - narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - abbreviated: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - wide: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'] -}; -var dayValues = { - narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S'], - short: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'], - abbreviated: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - wide: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'] -}; -var dayPeriodValues = { - narrow: { - am: 'a', - pm: 'p', - midnight: 'mi', - noon: 'n', - morning: 'morning', - afternoon: 'afternoon', - evening: 'evening', - night: 'night' - }, - abbreviated: { - am: 'AM', - pm: 'PM', - midnight: 'midnight', - noon: 'noon', - morning: 'morning', - afternoon: 'afternoon', - evening: 'evening', - night: 'night' - }, - wide: { - am: 'a.m.', - pm: 'p.m.', - midnight: 'midnight', - noon: 'noon', - morning: 'morning', - afternoon: 'afternoon', - evening: 'evening', - night: 'night' - } -}; -var formattingDayPeriodValues = { - narrow: { - am: 'a', - pm: 'p', - midnight: 'mi', - noon: 'n', - morning: 'in the morning', - afternoon: 'in the afternoon', - evening: 'in the evening', - night: 'at night' - }, - abbreviated: { - am: 'AM', - pm: 'PM', - midnight: 'midnight', - noon: 'noon', - morning: 'in the morning', - afternoon: 'in the afternoon', - evening: 'in the evening', - night: 'at night' - }, - wide: { - am: 'a.m.', - pm: 'p.m.', - midnight: 'midnight', - noon: 'noon', - morning: 'in the morning', - afternoon: 'in the afternoon', - evening: 'in the evening', - night: 'at night' - } -}; -var ordinalNumber = function ordinalNumber(dirtyNumber, _options) { - var number = Number(dirtyNumber); - - // If ordinal numbers depend on context, for example, - // if they are different for different grammatical genders, - // use `options.unit`. - // - // `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear', - // 'day', 'hour', 'minute', 'second'. - - var rem100 = number % 100; - if (rem100 > 20 || rem100 < 10) { - switch (rem100 % 10) { - case 1: - return number + 'st'; - case 2: - return number + 'nd'; - case 3: - return number + 'rd'; - } - } - return number + 'th'; -}; -var localize = { - ordinalNumber: ordinalNumber, - era: buildLocalizeFn({ - values: eraValues, - defaultWidth: 'wide' - }), - quarter: buildLocalizeFn({ - values: quarterValues, - defaultWidth: 'wide', - argumentCallback: function argumentCallback(quarter) { - return quarter - 1; - } - }), - month: buildLocalizeFn({ - values: monthValues, - defaultWidth: 'wide' - }), - day: buildLocalizeFn({ - values: dayValues, - defaultWidth: 'wide' - }), - dayPeriod: buildLocalizeFn({ - values: dayPeriodValues, - defaultWidth: 'wide', - formattingValues: formattingDayPeriodValues, - defaultFormattingWidth: 'wide' - }) -}; -/* harmony default export */ const _lib_localize = (localize); -;// CONCATENATED MODULE: ./node_modules/date-fns/esm/locale/_lib/buildMatchFn/index.js -function buildMatchFn(args) { - return function (string) { - var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - var width = options.width; - var matchPattern = width && args.matchPatterns[width] || args.matchPatterns[args.defaultMatchWidth]; - var matchResult = string.match(matchPattern); - if (!matchResult) { - return null; - } - var matchedString = matchResult[0]; - var parsePatterns = width && args.parsePatterns[width] || args.parsePatterns[args.defaultParseWidth]; - var key = Array.isArray(parsePatterns) ? findIndex(parsePatterns, function (pattern) { - return pattern.test(matchedString); - }) : findKey(parsePatterns, function (pattern) { - return pattern.test(matchedString); - }); - var value; - value = args.valueCallback ? args.valueCallback(key) : key; - value = options.valueCallback ? options.valueCallback(value) : value; - var rest = string.slice(matchedString.length); - return { - value: value, - rest: rest - }; - }; -} -function findKey(object, predicate) { - for (var key in object) { - if (object.hasOwnProperty(key) && predicate(object[key])) { - return key; - } - } - return undefined; -} -function findIndex(array, predicate) { - for (var key = 0; key < array.length; key++) { - if (predicate(array[key])) { - return key; - } - } - return undefined; -} -;// CONCATENATED MODULE: ./node_modules/date-fns/esm/locale/_lib/buildMatchPatternFn/index.js -function buildMatchPatternFn(args) { - return function (string) { - var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - var matchResult = string.match(args.matchPattern); - if (!matchResult) return null; - var matchedString = matchResult[0]; - var parseResult = string.match(args.parsePattern); - if (!parseResult) return null; - var value = args.valueCallback ? args.valueCallback(parseResult[0]) : parseResult[0]; - value = options.valueCallback ? options.valueCallback(value) : value; - var rest = string.slice(matchedString.length); - return { - value: value, - rest: rest - }; - }; -} -;// CONCATENATED MODULE: ./node_modules/date-fns/esm/locale/en-US/_lib/match/index.js - - -var matchOrdinalNumberPattern = /^(\d+)(th|st|nd|rd)?/i; -var parseOrdinalNumberPattern = /\d+/i; -var matchEraPatterns = { - narrow: /^(b|a)/i, - abbreviated: /^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i, - wide: /^(before christ|before common era|anno domini|common era)/i -}; -var parseEraPatterns = { - any: [/^b/i, /^(a|c)/i] -}; -var matchQuarterPatterns = { - narrow: /^[1234]/i, - abbreviated: /^q[1234]/i, - wide: /^[1234](th|st|nd|rd)? quarter/i -}; -var parseQuarterPatterns = { - any: [/1/i, /2/i, /3/i, /4/i] -}; -var matchMonthPatterns = { - narrow: /^[jfmasond]/i, - abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i, - wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i -}; -var parseMonthPatterns = { - narrow: [/^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i], - any: [/^ja/i, /^f/i, /^mar/i, /^ap/i, /^may/i, /^jun/i, /^jul/i, /^au/i, /^s/i, /^o/i, /^n/i, /^d/i] -}; -var matchDayPatterns = { - narrow: /^[smtwf]/i, - short: /^(su|mo|tu|we|th|fr|sa)/i, - abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i, - wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i -}; -var parseDayPatterns = { - narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i], - any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i] -}; -var matchDayPeriodPatterns = { - narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i, - any: /^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i -}; -var parseDayPeriodPatterns = { - any: { - am: /^a/i, - pm: /^p/i, - midnight: /^mi/i, - noon: /^no/i, - morning: /morning/i, - afternoon: /afternoon/i, - evening: /evening/i, - night: /night/i - } -}; -var match = { - ordinalNumber: buildMatchPatternFn({ - matchPattern: matchOrdinalNumberPattern, - parsePattern: parseOrdinalNumberPattern, - valueCallback: function valueCallback(value) { - return parseInt(value, 10); - } - }), - era: buildMatchFn({ - matchPatterns: matchEraPatterns, - defaultMatchWidth: 'wide', - parsePatterns: parseEraPatterns, - defaultParseWidth: 'any' - }), - quarter: buildMatchFn({ - matchPatterns: matchQuarterPatterns, - defaultMatchWidth: 'wide', - parsePatterns: parseQuarterPatterns, - defaultParseWidth: 'any', - valueCallback: function valueCallback(index) { - return index + 1; - } - }), - month: buildMatchFn({ - matchPatterns: matchMonthPatterns, - defaultMatchWidth: 'wide', - parsePatterns: parseMonthPatterns, - defaultParseWidth: 'any' - }), - day: buildMatchFn({ - matchPatterns: matchDayPatterns, - defaultMatchWidth: 'wide', - parsePatterns: parseDayPatterns, - defaultParseWidth: 'any' - }), - dayPeriod: buildMatchFn({ - matchPatterns: matchDayPeriodPatterns, - defaultMatchWidth: 'any', - parsePatterns: parseDayPeriodPatterns, - defaultParseWidth: 'any' - }) -}; -/* harmony default export */ const _lib_match = (match); -;// CONCATENATED MODULE: ./node_modules/date-fns/esm/locale/en-US/index.js - - - - - -/** - * @type {Locale} - * @category Locales - * @summary English locale (United States). - * @language English - * @iso-639-2 eng - * @author Sasha Koss [@kossnocorp]{@link https://github.com/kossnocorp} - * @author Lesha Koss [@leshakoss]{@link https://github.com/leshakoss} - */ -var locale = { - code: 'en-US', - formatDistance: _lib_formatDistance, - formatLong: _lib_formatLong, - formatRelative: _lib_formatRelative, - localize: _lib_localize, - match: _lib_match, - options: { - weekStartsOn: 0 /* Sunday */, - firstWeekContainsDate: 1 - } -}; -/* harmony default export */ const en_US = (locale); -;// CONCATENATED MODULE: ./node_modules/date-fns/esm/_lib/defaultLocale/index.js - -/* harmony default export */ const defaultLocale = (en_US); -;// CONCATENATED MODULE: ./node_modules/date-fns/esm/format/index.js - - - - - - - - - - - // This RegExp consists of three parts separated by `|`: -// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token -// (one of the certain letters followed by `o`) -// - (\w)\1* matches any sequences of the same letter -// - '' matches two quote characters in a row -// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('), -// except a single quote symbol, which ends the sequence. -// Two quote characters do not end the sequence. -// If there is no matching single quote -// then the sequence will continue until the end of the string. -// - . matches any single character unmatched by previous parts of the RegExps -var formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g; - -// This RegExp catches symbols escaped by quotes, and also -// sequences of symbols P, p, and the combinations like `PPPPPPPppppp` -var longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g; -var escapedStringRegExp = /^'([^]*?)'?$/; -var doubleQuoteRegExp = /''/g; -var unescapedLatinCharacterRegExp = /[a-zA-Z]/; - -/** - * @name format - * @category Common Helpers - * @summary Format the date. - * - * @description - * Return the formatted date string in the given format. The result may vary by locale. - * - * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries. - * > See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md - * - * The characters wrapped between two single quotes characters (') are escaped. - * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote. - * (see the last example) - * - * Format of the string is based on Unicode Technical Standard #35: - * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table - * with a few additions (see note 7 below the table). - * - * Accepted patterns: - * | Unit | Pattern | Result examples | Notes | - * |---------------------------------|---------|-----------------------------------|-------| - * | Era | G..GGG | AD, BC | | - * | | GGGG | Anno Domini, Before Christ | 2 | - * | | GGGGG | A, B | | - * | Calendar year | y | 44, 1, 1900, 2017 | 5 | - * | | yo | 44th, 1st, 0th, 17th | 5,7 | - * | | yy | 44, 01, 00, 17 | 5 | - * | | yyy | 044, 001, 1900, 2017 | 5 | - * | | yyyy | 0044, 0001, 1900, 2017 | 5 | - * | | yyyyy | ... | 3,5 | - * | Local week-numbering year | Y | 44, 1, 1900, 2017 | 5 | - * | | Yo | 44th, 1st, 1900th, 2017th | 5,7 | - * | | YY | 44, 01, 00, 17 | 5,8 | - * | | YYY | 044, 001, 1900, 2017 | 5 | - * | | YYYY | 0044, 0001, 1900, 2017 | 5,8 | - * | | YYYYY | ... | 3,5 | - * | ISO week-numbering year | R | -43, 0, 1, 1900, 2017 | 5,7 | - * | | RR | -43, 00, 01, 1900, 2017 | 5,7 | - * | | RRR | -043, 000, 001, 1900, 2017 | 5,7 | - * | | RRRR | -0043, 0000, 0001, 1900, 2017 | 5,7 | - * | | RRRRR | ... | 3,5,7 | - * | Extended year | u | -43, 0, 1, 1900, 2017 | 5 | - * | | uu | -43, 01, 1900, 2017 | 5 | - * | | uuu | -043, 001, 1900, 2017 | 5 | - * | | uuuu | -0043, 0001, 1900, 2017 | 5 | - * | | uuuuu | ... | 3,5 | - * | Quarter (formatting) | Q | 1, 2, 3, 4 | | - * | | Qo | 1st, 2nd, 3rd, 4th | 7 | - * | | QQ | 01, 02, 03, 04 | | - * | | QQQ | Q1, Q2, Q3, Q4 | | - * | | QQQQ | 1st quarter, 2nd quarter, ... | 2 | - * | | QQQQQ | 1, 2, 3, 4 | 4 | - * | Quarter (stand-alone) | q | 1, 2, 3, 4 | | - * | | qo | 1st, 2nd, 3rd, 4th | 7 | - * | | qq | 01, 02, 03, 04 | | - * | | qqq | Q1, Q2, Q3, Q4 | | - * | | qqqq | 1st quarter, 2nd quarter, ... | 2 | - * | | qqqqq | 1, 2, 3, 4 | 4 | - * | Month (formatting) | M | 1, 2, ..., 12 | | - * | | Mo | 1st, 2nd, ..., 12th | 7 | - * | | MM | 01, 02, ..., 12 | | - * | | MMM | Jan, Feb, ..., Dec | | - * | | MMMM | January, February, ..., December | 2 | - * | | MMMMM | J, F, ..., D | | - * | Month (stand-alone) | L | 1, 2, ..., 12 | | - * | | Lo | 1st, 2nd, ..., 12th | 7 | - * | | LL | 01, 02, ..., 12 | | - * | | LLL | Jan, Feb, ..., Dec | | - * | | LLLL | January, February, ..., December | 2 | - * | | LLLLL | J, F, ..., D | | - * | Local week of year | w | 1, 2, ..., 53 | | - * | | wo | 1st, 2nd, ..., 53th | 7 | - * | | ww | 01, 02, ..., 53 | | - * | ISO week of year | I | 1, 2, ..., 53 | 7 | - * | | Io | 1st, 2nd, ..., 53th | 7 | - * | | II | 01, 02, ..., 53 | 7 | - * | Day of month | d | 1, 2, ..., 31 | | - * | | do | 1st, 2nd, ..., 31st | 7 | - * | | dd | 01, 02, ..., 31 | | - * | Day of year | D | 1, 2, ..., 365, 366 | 9 | - * | | Do | 1st, 2nd, ..., 365th, 366th | 7 | - * | | DD | 01, 02, ..., 365, 366 | 9 | - * | | DDD | 001, 002, ..., 365, 366 | | - * | | DDDD | ... | 3 | - * | Day of week (formatting) | E..EEE | Mon, Tue, Wed, ..., Sun | | - * | | EEEE | Monday, Tuesday, ..., Sunday | 2 | - * | | EEEEE | M, T, W, T, F, S, S | | - * | | EEEEEE | Mo, Tu, We, Th, Fr, Sa, Su | | - * | ISO day of week (formatting) | i | 1, 2, 3, ..., 7 | 7 | - * | | io | 1st, 2nd, ..., 7th | 7 | - * | | ii | 01, 02, ..., 07 | 7 | - * | | iii | Mon, Tue, Wed, ..., Sun | 7 | - * | | iiii | Monday, Tuesday, ..., Sunday | 2,7 | - * | | iiiii | M, T, W, T, F, S, S | 7 | - * | | iiiiii | Mo, Tu, We, Th, Fr, Sa, Su | 7 | - * | Local day of week (formatting) | e | 2, 3, 4, ..., 1 | | - * | | eo | 2nd, 3rd, ..., 1st | 7 | - * | | ee | 02, 03, ..., 01 | | - * | | eee | Mon, Tue, Wed, ..., Sun | | - * | | eeee | Monday, Tuesday, ..., Sunday | 2 | - * | | eeeee | M, T, W, T, F, S, S | | - * | | eeeeee | Mo, Tu, We, Th, Fr, Sa, Su | | - * | Local day of week (stand-alone) | c | 2, 3, 4, ..., 1 | | - * | | co | 2nd, 3rd, ..., 1st | 7 | - * | | cc | 02, 03, ..., 01 | | - * | | ccc | Mon, Tue, Wed, ..., Sun | | - * | | cccc | Monday, Tuesday, ..., Sunday | 2 | - * | | ccccc | M, T, W, T, F, S, S | | - * | | cccccc | Mo, Tu, We, Th, Fr, Sa, Su | | - * | AM, PM | a..aa | AM, PM | | - * | | aaa | am, pm | | - * | | aaaa | a.m., p.m. | 2 | - * | | aaaaa | a, p | | - * | AM, PM, noon, midnight | b..bb | AM, PM, noon, midnight | | - * | | bbb | am, pm, noon, midnight | | - * | | bbbb | a.m., p.m., noon, midnight | 2 | - * | | bbbbb | a, p, n, mi | | - * | Flexible day period | B..BBB | at night, in the morning, ... | | - * | | BBBB | at night, in the morning, ... | 2 | - * | | BBBBB | at night, in the morning, ... | | - * | Hour [1-12] | h | 1, 2, ..., 11, 12 | | - * | | ho | 1st, 2nd, ..., 11th, 12th | 7 | - * | | hh | 01, 02, ..., 11, 12 | | - * | Hour [0-23] | H | 0, 1, 2, ..., 23 | | - * | | Ho | 0th, 1st, 2nd, ..., 23rd | 7 | - * | | HH | 00, 01, 02, ..., 23 | | - * | Hour [0-11] | K | 1, 2, ..., 11, 0 | | - * | | Ko | 1st, 2nd, ..., 11th, 0th | 7 | - * | | KK | 01, 02, ..., 11, 00 | | - * | Hour [1-24] | k | 24, 1, 2, ..., 23 | | - * | | ko | 24th, 1st, 2nd, ..., 23rd | 7 | - * | | kk | 24, 01, 02, ..., 23 | | - * | Minute | m | 0, 1, ..., 59 | | - * | | mo | 0th, 1st, ..., 59th | 7 | - * | | mm | 00, 01, ..., 59 | | - * | Second | s | 0, 1, ..., 59 | | - * | | so | 0th, 1st, ..., 59th | 7 | - * | | ss | 00, 01, ..., 59 | | - * | Fraction of second | S | 0, 1, ..., 9 | | - * | | SS | 00, 01, ..., 99 | | - * | | SSS | 000, 001, ..., 999 | | - * | | SSSS | ... | 3 | - * | Timezone (ISO-8601 w/ Z) | X | -08, +0530, Z | | - * | | XX | -0800, +0530, Z | | - * | | XXX | -08:00, +05:30, Z | | - * | | XXXX | -0800, +0530, Z, +123456 | 2 | - * | | XXXXX | -08:00, +05:30, Z, +12:34:56 | | - * | Timezone (ISO-8601 w/o Z) | x | -08, +0530, +00 | | - * | | xx | -0800, +0530, +0000 | | - * | | xxx | -08:00, +05:30, +00:00 | 2 | - * | | xxxx | -0800, +0530, +0000, +123456 | | - * | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | | - * | Timezone (GMT) | O...OOO | GMT-8, GMT+5:30, GMT+0 | | - * | | OOOO | GMT-08:00, GMT+05:30, GMT+00:00 | 2 | - * | Timezone (specific non-locat.) | z...zzz | GMT-8, GMT+5:30, GMT+0 | 6 | - * | | zzzz | GMT-08:00, GMT+05:30, GMT+00:00 | 2,6 | - * | Seconds timestamp | t | 512969520 | 7 | - * | | tt | ... | 3,7 | - * | Milliseconds timestamp | T | 512969520900 | 7 | - * | | TT | ... | 3,7 | - * | Long localized date | P | 04/29/1453 | 7 | - * | | PP | Apr 29, 1453 | 7 | - * | | PPP | April 29th, 1453 | 7 | - * | | PPPP | Friday, April 29th, 1453 | 2,7 | - * | Long localized time | p | 12:00 AM | 7 | - * | | pp | 12:00:00 AM | 7 | - * | | ppp | 12:00:00 AM GMT+2 | 7 | - * | | pppp | 12:00:00 AM GMT+02:00 | 2,7 | - * | Combination of date and time | Pp | 04/29/1453, 12:00 AM | 7 | - * | | PPpp | Apr 29, 1453, 12:00:00 AM | 7 | - * | | PPPppp | April 29th, 1453 at ... | 7 | - * | | PPPPpppp| Friday, April 29th, 1453 at ... | 2,7 | - * Notes: - * 1. "Formatting" units (e.g. formatting quarter) in the default en-US locale - * are the same as "stand-alone" units, but are different in some languages. - * "Formatting" units are declined according to the rules of the language - * in the context of a date. "Stand-alone" units are always nominative singular: - * - * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'` - * - * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'` - * - * 2. Any sequence of the identical letters is a pattern, unless it is escaped by - * the single quote characters (see below). - * If the sequence is longer than listed in table (e.g. `EEEEEEEEEEE`) - * the output will be the same as default pattern for this unit, usually - * the longest one (in case of ISO weekdays, `EEEE`). Default patterns for units - * are marked with "2" in the last column of the table. - * - * `format(new Date(2017, 10, 6), 'MMM') //=> 'Nov'` - * - * `format(new Date(2017, 10, 6), 'MMMM') //=> 'November'` - * - * `format(new Date(2017, 10, 6), 'MMMMM') //=> 'N'` - * - * `format(new Date(2017, 10, 6), 'MMMMMM') //=> 'November'` - * - * `format(new Date(2017, 10, 6), 'MMMMMMM') //=> 'November'` - * - * 3. Some patterns could be unlimited length (such as `yyyyyyyy`). - * The output will be padded with zeros to match the length of the pattern. - * - * `format(new Date(2017, 10, 6), 'yyyyyyyy') //=> '00002017'` - * - * 4. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales. - * These tokens represent the shortest form of the quarter. - * - * 5. The main difference between `y` and `u` patterns are B.C. years: - * - * | Year | `y` | `u` | - * |------|-----|-----| - * | AC 1 | 1 | 1 | - * | BC 1 | 1 | 0 | - * | BC 2 | 2 | -1 | - * - * Also `yy` always returns the last two digits of a year, - * while `uu` pads single digit years to 2 characters and returns other years unchanged: - * - * | Year | `yy` | `uu` | - * |------|------|------| - * | 1 | 01 | 01 | - * | 14 | 14 | 14 | - * | 376 | 76 | 376 | - * | 1453 | 53 | 1453 | - * - * The same difference is true for local and ISO week-numbering years (`Y` and `R`), - * except local week-numbering years are dependent on `options.weekStartsOn` - * and `options.firstWeekContainsDate` (compare [getISOWeekYear]{@link https://date-fns.org/docs/getISOWeekYear} - * and [getWeekYear]{@link https://date-fns.org/docs/getWeekYear}). - * - * 6. Specific non-location timezones are currently unavailable in `date-fns`, - * so right now these tokens fall back to GMT timezones. - * - * 7. These patterns are not in the Unicode Technical Standard #35: - * - `i`: ISO day of week - * - `I`: ISO week of year - * - `R`: ISO week-numbering year - * - `t`: seconds timestamp - * - `T`: milliseconds timestamp - * - `o`: ordinal number modifier - * - `P`: long localized date - * - `p`: long localized time - * - * 8. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years. - * You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md - * - * 9. `D` and `DD` tokens represent days of the year but they are often confused with days of the month. - * You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md - * - * @param {Date|Number} date - the original date - * @param {String} format - the string of tokens - * @param {Object} [options] - an object with options. - * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale} - * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday) - * @param {Number} [options.firstWeekContainsDate=1] - the day of January, which is - * @param {Boolean} [options.useAdditionalWeekYearTokens=false] - if true, allows usage of the week-numbering year tokens `YY` and `YYYY`; - * see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md - * @param {Boolean} [options.useAdditionalDayOfYearTokens=false] - if true, allows usage of the day of year tokens `D` and `DD`; - * see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md - * @returns {String} the formatted date string - * @throws {TypeError} 2 arguments required - * @throws {RangeError} `date` must not be Invalid Date - * @throws {RangeError} `options.locale` must contain `localize` property - * @throws {RangeError} `options.locale` must contain `formatLong` property - * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6 - * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7 - * @throws {RangeError} use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md - * @throws {RangeError} use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md - * @throws {RangeError} use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md - * @throws {RangeError} use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md - * @throws {RangeError} format string contains an unescaped latin alphabet character - * - * @example - * // Represent 11 February 2014 in middle-endian format: - * const result = format(new Date(2014, 1, 11), 'MM/dd/yyyy') - * //=> '02/11/2014' - * - * @example - * // Represent 2 July 2014 in Esperanto: - * import { eoLocale } from 'date-fns/locale/eo' - * const result = format(new Date(2014, 6, 2), "do 'de' MMMM yyyy", { - * locale: eoLocale - * }) - * //=> '2-a de julio 2014' - * - * @example - * // Escape string by single quote characters: - * const result = format(new Date(2014, 6, 2, 15), "h 'o''clock'") - * //=> "3 o'clock" - */ - -function format(dirtyDate, dirtyFormatStr, options) { - var _ref, _options$locale, _ref2, _ref3, _ref4, _options$firstWeekCon, _options$locale2, _options$locale2$opti, _defaultOptions$local, _defaultOptions$local2, _ref5, _ref6, _ref7, _options$weekStartsOn, _options$locale3, _options$locale3$opti, _defaultOptions$local3, _defaultOptions$local4; - requiredArgs(2, arguments); - var formatStr = String(dirtyFormatStr); - var defaultOptions = getDefaultOptions(); - var locale = (_ref = (_options$locale = options === null || options === void 0 ? void 0 : options.locale) !== null && _options$locale !== void 0 ? _options$locale : defaultOptions.locale) !== null && _ref !== void 0 ? _ref : defaultLocale; - var firstWeekContainsDate = toInteger((_ref2 = (_ref3 = (_ref4 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale2 = options.locale) === null || _options$locale2 === void 0 ? void 0 : (_options$locale2$opti = _options$locale2.options) === null || _options$locale2$opti === void 0 ? void 0 : _options$locale2$opti.firstWeekContainsDate) !== null && _ref4 !== void 0 ? _ref4 : defaultOptions.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : 1); - - // Test if weekStartsOn is between 1 and 7 _and_ is not NaN - if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) { - throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively'); - } - var weekStartsOn = toInteger((_ref5 = (_ref6 = (_ref7 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale3 = options.locale) === null || _options$locale3 === void 0 ? void 0 : (_options$locale3$opti = _options$locale3.options) === null || _options$locale3$opti === void 0 ? void 0 : _options$locale3$opti.weekStartsOn) !== null && _ref7 !== void 0 ? _ref7 : defaultOptions.weekStartsOn) !== null && _ref6 !== void 0 ? _ref6 : (_defaultOptions$local3 = defaultOptions.locale) === null || _defaultOptions$local3 === void 0 ? void 0 : (_defaultOptions$local4 = _defaultOptions$local3.options) === null || _defaultOptions$local4 === void 0 ? void 0 : _defaultOptions$local4.weekStartsOn) !== null && _ref5 !== void 0 ? _ref5 : 0); - - // Test if weekStartsOn is between 0 and 6 _and_ is not NaN - if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) { - throw new RangeError('weekStartsOn must be between 0 and 6 inclusively'); - } - if (!locale.localize) { - throw new RangeError('locale must contain localize property'); - } - if (!locale.formatLong) { - throw new RangeError('locale must contain formatLong property'); - } - var originalDate = toDate(dirtyDate); - if (!isValid(originalDate)) { - throw new RangeError('Invalid time value'); - } - - // Convert the date in system timezone to the same date in UTC+00:00 timezone. - // This ensures that when UTC functions will be implemented, locales will be compatible with them. - // See an issue about UTC functions: https://github.com/date-fns/date-fns/issues/376 - var timezoneOffset = getTimezoneOffsetInMilliseconds(originalDate); - var utcDate = subMilliseconds(originalDate, timezoneOffset); - var formatterOptions = { - firstWeekContainsDate: firstWeekContainsDate, - weekStartsOn: weekStartsOn, - locale: locale, - _originalDate: originalDate - }; - var result = formatStr.match(longFormattingTokensRegExp).map(function (substring) { - var firstCharacter = substring[0]; - if (firstCharacter === 'p' || firstCharacter === 'P') { - var longFormatter = format_longFormatters[firstCharacter]; - return longFormatter(substring, locale.formatLong); - } - return substring; - }).join('').match(formattingTokensRegExp).map(function (substring) { - // Replace two single quote characters with one single quote character - if (substring === "''") { - return "'"; - } - var firstCharacter = substring[0]; - if (firstCharacter === "'") { - return cleanEscapedString(substring); - } - var formatter = format_formatters[firstCharacter]; - if (formatter) { - if (!(options !== null && options !== void 0 && options.useAdditionalWeekYearTokens) && isProtectedWeekYearToken(substring)) { - throwProtectedError(substring, dirtyFormatStr, String(dirtyDate)); - } - if (!(options !== null && options !== void 0 && options.useAdditionalDayOfYearTokens) && isProtectedDayOfYearToken(substring)) { - throwProtectedError(substring, dirtyFormatStr, String(dirtyDate)); - } - return formatter(utcDate, substring, locale.localize, formatterOptions); - } - if (firstCharacter.match(unescapedLatinCharacterRegExp)) { - throw new RangeError('Format string contains an unescaped latin alphabet character `' + firstCharacter + '`'); - } - return substring; - }).join(''); - return result; -} -function cleanEscapedString(input) { - var matched = input.match(escapedStringRegExp); - if (!matched) { - return input; - } - return matched[1].replace(doubleQuoteRegExp, "'"); -} -// EXTERNAL MODULE: ./node_modules/react-fast-compare/index.js -var react_fast_compare = __webpack_require__(590); -var react_fast_compare_default = /*#__PURE__*/__webpack_require__.n(react_fast_compare); -;// CONCATENATED MODULE: ./src/form/components/EditableList/js/EditableListForm.js -var EditableListForm_defProp = Object.defineProperty; -var EditableListForm_defProps = Object.defineProperties; -var EditableListForm_getOwnPropDescs = Object.getOwnPropertyDescriptors; -var EditableListForm_getOwnPropSymbols = Object.getOwnPropertySymbols; -var EditableListForm_hasOwnProp = Object.prototype.hasOwnProperty; -var EditableListForm_propIsEnum = Object.prototype.propertyIsEnumerable; -var EditableListForm_defNormalProp = (obj, key, value) => key in obj ? EditableListForm_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var EditableListForm_spreadValues = (a, b) => { - for (var prop in b || (b = {})) - if (EditableListForm_hasOwnProp.call(b, prop)) - EditableListForm_defNormalProp(a, prop, b[prop]); - if (EditableListForm_getOwnPropSymbols) - for (var prop of EditableListForm_getOwnPropSymbols(b)) { - if (EditableListForm_propIsEnum.call(b, prop)) - EditableListForm_defNormalProp(a, prop, b[prop]); - } - return a; -}; -var EditableListForm_spreadProps = (a, b) => EditableListForm_defProps(a, EditableListForm_getOwnPropDescs(b)); -var EditableListForm_objRest = (source, exclude) => { - var target = {}; - for (var prop in source) - if (EditableListForm_hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) - target[prop] = source[prop]; - if (source != null && EditableListForm_getOwnPropSymbols) - for (var prop of EditableListForm_getOwnPropSymbols(source)) { - if (exclude.indexOf(prop) < 0 && EditableListForm_propIsEnum.call(source, prop)) - target[prop] = source[prop]; - } - return target; -}; -var EditableListForm_publicField = (obj, key, value) => { - EditableListForm_defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); - return value; -}; - - - - - - -const _EditableListForm = class _EditableListForm extends external_react_namespaceObject.Component { - static getMainFormValue(components) { - const mainFormValue = new Array(components.length); - components.forEach((component, index) => { - mainFormValue[index] = component.props.value || void 0; - }); - return mainFormValue; - } - constructor(props) { - super(props); - const { - components - } = props; - this.submitButtonRef = (0,external_react_namespaceObject.createRef)(); - this.handleOnChange = this.handleOnChange.bind(this); - this.submitForm = this.submitForm.bind(this); - this.state = { - components, - errors: {}, - mainError: null, - mainFormValue: _EditableListForm.getMainFormValue(components), - refs: [] - }; - } - componentDidMount() { - const { - addValueOnFieldChange, - getMainFormButtonWidth - } = this.props; - this.createRefs(); - if (getMainFormButtonWidth) { - getMainFormButtonWidth( - !addValueOnFieldChange ? this.submitButtonRef.current.clientWidth : 0 - ); - } - } - static getDerivedStateFromProps(nextProps, prevState) { - const state = {}; - const { - components: propsComponents - } = nextProps; - const { - components: stateComponents - } = prevState; - if (!react_fast_compare_default()(propsComponents, stateComponents) && !react_fast_compare_default()( - _EditableListForm.getMainFormValue(propsComponents), - _EditableListForm.getMainFormValue(stateComponents) - )) { - state.mainFormValue = _EditableListForm.getMainFormValue(propsComponents); - state.components = propsComponents; - } - return state; - } - getFormCssClasses() { - const { noLabels } = this.props; - const cssClasses = ["tyk-editable-list__form"]; - if (noLabels) { - cssClasses.push("no-labels"); - } - return cssClasses.join(" "); - } - getButtonClassName() { - const { buttonStyle, displayType } = this.props; - const cssClasses = []; - if (buttonStyle) { - cssClasses.push(buttonStyle); - } - if (displayType) { - cssClasses.push(displayType); - } - return cssClasses.join(" "); - } - getComponentsError(component) { - const { - error, - errors, - mainError - } = this.state; - if (error || mainError) { - errors[component.props.name] = "true"; - } else if (!(error || mainError) && errors[component.props.name] === "true") { - delete errors[component.props.name]; - } - return errors[component.props.name] ? errors[component.props.name].toString() : void 0; - } - createRefs() { - const { components } = this.props; - const refs = []; - components.forEach(() => { - refs.push((0,external_react_namespaceObject.createRef)()); - }); - this.setState({ - refs - }); - } - validateValue(value, props) { - const { mainError, errors } = this.state; - const { error, errorPersist } = this.props; - const validatorsNames = props.validate ? Object.keys(props.validate) : []; - const tempState = { - errors: error || mainError ? {} : Object.assign({}, errors) - }; - let ok = true; - if (errorPersist) { - return tempState; - } - for (let i = 0; i < validatorsNames.length; i += 1) { - const validator = props.validate[validatorsNames[i]]; - if (validator(value)) { - tempState.errors[props.name] = props.validationmessages[validatorsNames[i]]; - ok = false; - break; - } - } - if (ok) { - delete tempState.errors[props.name]; - } - tempState.mainError = null; - return tempState; - } - hasMainFormErrors(errors) { - const { components, errorPersist } = this.props; - const { mainFormValue } = this.state; - const tempState = { - errors: Object.assign({}, errors) - }; - if (errorPersist && mainFormValue.indexOf(void 0) === -1) { - return false; - } - if (Object.keys(tempState.errors).length > 0) { - return true; - } - components.forEach((component, index) => { - tempState.errors = Object.assign( - {}, - tempState.errors, - this.validateValue(mainFormValue[index], component.props).errors - ); - }); - return Object.keys(tempState.errors).length > 0; - } - handleOnChange(component, index, value) { - const { addValueOnFieldChange } = this.props; - let tempState = this.state; - tempState = Object.assign({}, tempState, this.validateValue(value, component.props)); - if (!tempState.errors[component.props.name]) { - tempState.mainFormValue[index] = value; - if (component.props.onChange) { - component.props.onChange(value); - } - } - this.setState((previousState) => Object.assign({}, previousState, tempState), () => { - if (addValueOnFieldChange) { - this.submitForm(); - } - }); - } - resetForm() { - const { refs } = this.state; - const { - components - } = this.props; - refs.forEach((ref) => { - var _a; - if ((_a = ref.current) == null ? void 0 : _a.reset) { - ref.current.reset(); - } - }); - this.setState({ - errors: {}, - mainError: null, - mainFormValue: _EditableListForm.getMainFormValue(components) - }); - } - showMainError(error) { - this.setState({ - mainError: error - }); - } - submitForm() { - const { errors, mainFormValue } = this.state; - const { - errorPersist, - onSubmit, - validate, - validationmessage - } = this.props; - if (errorPersist) { - onSubmit(mainFormValue); - this.resetForm(); - } - if (Object.keys(errors).length === 0 && (onSubmit && typeof onSubmit === "function")) { - if (validate) { - if (validate(mainFormValue)) { - this.showMainError(validationmessage); - } else { - onSubmit(mainFormValue); - this.resetForm(); - } - } else { - onSubmit(mainFormValue); - this.resetForm(); - } - } - } - render() { - const { - addValueOnFieldChange, - components, - buttonName, - disabled, - displayType, - error - } = this.props; - const { - mainError, - refs, - errors - } = this.state; - return /* @__PURE__ */ external_react_default().createElement("div", null, /* @__PURE__ */ external_react_default().createElement("div", { className: this.getFormCssClasses() }, /* @__PURE__ */ external_react_default().createElement(Row_Row, null, components.map((component, index) => { - const ComponentName = component.name; - const _a = component.props, { - onChange, - value - } = _a, rest = EditableListForm_objRest(_a, [ - "onChange", - "value" - ]); - return /* @__PURE__ */ external_react_default().createElement(layout_Column, { size: `md-${component.size || "12"} lg-${component.size || "12"}`, key: component.props.name }, /* @__PURE__ */ external_react_default().createElement( - ComponentName, - EditableListForm_spreadProps(EditableListForm_spreadValues({ - disabled: disabled || component.props.disabled, - onChange: this.handleOnChange.bind(this, component, index) - }, rest), { - label: displayType === "inline" ? "" : component.props.label, - error: this.getComponentsError(component), - ref: refs[index], - value - }) - )); - })), !addValueOnFieldChange ? /* @__PURE__ */ external_react_default().createElement( - "span", - { - className: this.getButtonClassName(), - ref: this.submitButtonRef - }, - /* @__PURE__ */ external_react_default().createElement( - components_Button, - { - disabled: this.hasMainFormErrors(errors), - className: "tyk-editable-list__submit-btn", - onClick: this.submitForm, - theme: "default", - type: "button", - size: displayType === "inline" ? "sm" : "md" - }, - buttonName || "ADD" - ) - ) : null), error || mainError ? /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-editable-list-main-error" }, /* @__PURE__ */ external_react_default().createElement("p", { className: "error-message" }, error || mainError)) : null); - } -}; -EditableListForm_publicField(_EditableListForm, "propTypes", { - addValueOnFieldChange: (external_prop_types_default()).bool, - noLabels: (external_prop_types_default()).bool, - buttonName: (external_prop_types_default()).string, - buttonStyle: (external_prop_types_default()).string, - components: external_prop_types_default().instanceOf(Array), - displayType: (external_prop_types_default()).string, - disabled: (external_prop_types_default()).bool, - getMainFormButtonWidth: (external_prop_types_default()).func, - error: (external_prop_types_default()).string, - errorPersist: (external_prop_types_default()).bool, - onSubmit: (external_prop_types_default()).func, - validate: (external_prop_types_default()).func, - validationmessage: (external_prop_types_default()).string -}); -let EditableListForm = _EditableListForm; - - -;// CONCATENATED MODULE: ./src/form/components/EditableList/index.js -var EditableList_defProp = Object.defineProperty; -var EditableList_defNormalProp = (obj, key, value) => key in obj ? EditableList_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var EditableList_publicField = (obj, key, value) => { - EditableList_defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); - return value; -}; - - - - - - - - - - -const _EditableList = class _EditableList extends external_react_namespaceObject.Component { - static getItemListValue(itemValue) { - let tempValue = null; - if (typeof itemValue === "string") { - tempValue = itemValue; - } - if (Object.prototype.toString.call(itemValue) === "[object Object]") { - tempValue = itemValue.name; - } - if (isDate(itemValue)) { - tempValue = format(itemValue, "dd/MM/yyyy"); - } - return tempValue; - } - static getListItemCssClass(displayType) { - const cssClasses = []; - if (displayType === "inline") { - cssClasses.push("tyk-editable-list-item--inline"); - } - return cssClasses.join(" "); - } - constructor(props) { - super(props); - const { - value - } = this.props; - this.state = { - initialValue: value || "", - value: value || [], - buttonWidth: 0 - }; - this.startIndex = 1; - this.handleFormSubmit = this.handleFormSubmit.bind(this); - this.getMainFormButtonWidth = this.getMainFormButtonWidth.bind(this); - this.dropdownListItemRef = (0,external_react_namespaceObject.createRef)(); - } - static getDerivedStateFromProps(nextProps, prevState) { - const state = {}; - if (nextProps.value && JSON.stringify(nextProps.value) !== JSON.stringify(prevState.initialValue)) { - state.value = nextProps.value || []; - state.initialValue = nextProps.value || ""; - } - return state.value ? state : null; - } - getListItemsCssClass(displayType) { - const { config } = this.props; - const cssClasses = ["tyk-editable-list-items"]; - cssClasses.push(config.displayType || "table"); - if (displayType === "inline") { - cssClasses.push("tyk-editable-list-items--inline"); - } - return cssClasses.join(" "); - } - getFormInputKey() { - this.startIndex += 1; - return this.startIndex; - } - // generate list item value's based on the display types - // table, inline, list - getListItemText(itemData) { - const { config } = this.props; - let value = null; - switch (config.displayType) { - case "list": - case "inline": { - const itemText = itemData.value.reduce((prevValue, itemValue, index) => { - const tempValue = _EditableList.getItemListValue(itemValue); - let separator = ", "; - if (index === itemData.value.length - 1) { - separator = ""; - } - return prevValue + tempValue + separator; - }, ""); - value = itemText; - break; - } - default: - value = /* @__PURE__ */ external_react_default().createElement(Row_Row, null, config.components.map((component, index) => /* @__PURE__ */ external_react_default().createElement( - layout_Column, - { - key: this.getFormInputKey(), - size: `md-${component.size} lg-${component.size}` - }, - _EditableList.getItemListValue(itemData.value[index]) - ))); - break; - } - return value; - } - getMainFormButtonWidth(value) { - this.setState({ - buttonWidth: value - }); - } - setItemEditMode(index) { - const newValues = this.closeListItems(); - this.setState((previousState) => { - const tempState = Object.assign({}, previousState); - tempState.value = newValues; - tempState.value[index].editMode = !tempState.value[index].editMode; - return tempState; - }); - } - isInList(index, itemValue) { - const { value } = this.state; - let ok = false; - value.forEach((item, itemIndex) => { - if (JSON.stringify(item.value) === JSON.stringify(itemValue)) { - if (index >= 0 && itemIndex === index) { - ok = false; - } else { - ok = true; - } - } - }); - return ok; - } - addValues(newValue) { - const { value } = this.state; - const { config } = this.props; - const itemValue = { - editMode: false, - value: newValue - }; - const tempState = { - value: value.slice(0) - }; - if (config.children) { - itemValue.children = []; - } - tempState.value.push(itemValue); - return tempState; - } - removeListItem(index) { - let removedItem; - this.setState((previousState) => { - const valueArr = previousState.value.slice(0); - removedItem = valueArr.splice(index, 1); - return { - value: valueArr - }; - }, () => { - this.triggerOnChange(index, removedItem, null); - }); - } - handleFormSubmit(value) { - const tempState = this.addValues(value); - this.setState((previousState) => Object.assign({}, previousState, tempState), () => { - this.triggerOnChange(tempState.value.length - 1, null, value); - }); - } - handleItemUpdate(index, value) { - let prevValue; - this.setState((previousState) => { - const tempState = Object.assign({}, previousState); - prevValue = (0,external_immutable_namespaceObject.fromJS)(tempState.value[index].value).toJS(); - tempState.value[index].value = value; - tempState.value[index].editMode = false; - return tempState; - }, () => { - this.triggerOnChange(index, prevValue, value); - }); - } - handleChildrenOnChange(index, value) { - let prevValue; - this.setState((previousState) => { - const tempState = Object.assign({}, previousState); - prevValue = (0,external_immutable_namespaceObject.fromJS)(tempState.value[index].children).toJS(); - tempState.value[index].children = value; - return tempState; - }, () => { - this.triggerOnChange(index, prevValue, value); - }); - } - closeListItems() { - const { value } = this.state; - const newValues = value.map((itemValue) => { - const tempItemValue = Object.assign({}, itemValue); - if (tempItemValue.editMode) { - tempItemValue.editMode = false; - return tempItemValue; - } - return tempItemValue; - }); - return newValues; - } - triggerOnChange(index, prevValue, nextValue) { - const { onChange } = this.props; - const { value } = this.state; - if (onChange && typeof onChange === "function") { - onChange(value.length ? value : null, index, prevValue, nextValue); - } - } - genListItem(itemData, index) { - const { config, disabled } = this.props; - const { buttonWidth, value } = this.state; - const clonedComponents = (0,external_immutable_namespaceObject.fromJS)(config.components).toJS(); - itemData.value.forEach((itemValue, itemIndex) => { - clonedComponents[itemIndex].props.value = itemValue; - }); - return /* @__PURE__ */ external_react_default().createElement( - "li", - { - key: index, - className: _EditableList.getListItemCssClass(config.displayType), - ref: this.dropdownListItemRef - }, - /* @__PURE__ */ external_react_default().createElement( - "div", - { - className: `tyk-editable-list-item__text ${config.displayType || "table"}${itemData.editMode ? " edit-mode-wrapper" : ""}` - }, - !itemData.editMode ? /* @__PURE__ */ external_react_default().createElement(external_react_namespaceObject.Fragment, null, this.getListItemText(itemData, index), /* @__PURE__ */ external_react_default().createElement( - "div", - { - className: "tyk-editable-list-item__controls", - style: { - display: "block", - width: config.displayType === "inline" ? "auto" : `${buttonWidth + 60}px` - } - }, - /* @__PURE__ */ external_react_default().createElement("button", { disabled, type: "button", className: "tyk-editable-list-action__button", onClick: this.setItemEditMode.bind(this, index) }, /* @__PURE__ */ external_react_default().createElement(components_Icon, { type: "edit" })), - /* @__PURE__ */ external_react_default().createElement("button", { disabled, type: "button", className: "tyk-editable-list-action__button", onClick: this.removeListItem.bind(this, index) }, /* @__PURE__ */ external_react_default().createElement(components_Icon, { type: "trash" })) - )) : /* @__PURE__ */ external_react_default().createElement(external_react_namespaceObject.Fragment, null, /* @__PURE__ */ external_react_default().createElement( - EditableListForm, - { - buttonName: "Update", - noLabels: config.noLabels, - disabled, - displayType: config.displayType, - components: clonedComponents, - onSubmit: this.handleItemUpdate.bind(this, index), - validate: this.isInList.bind(this, index), - validationmessage: "This value is already in the list" - } - ), /* @__PURE__ */ external_react_default().createElement("button", { type: "button", className: "tyk-editable-list-action__button on-edit", onClick: this.removeListItem.bind(this, index) }, /* @__PURE__ */ external_react_default().createElement(components_Icon, { type: "trash" }))) - ), - config.children ? /* @__PURE__ */ external_react_default().createElement( - _EditableList, - { - disabled, - onChange: this.handleChildrenOnChange.bind(this, index), - config: config.children.config, - value: value[index] && value[index].children || [] - } - ) : null - ); - } - genList() { - const { config } = this.props; - const { buttonWidth, value } = this.state; - if (!value || value.length === 0) { - return null; - } - return /* @__PURE__ */ external_react_default().createElement(external_react_namespaceObject.Fragment, null, config.displayType === "table" || !config.displayType ? /* @__PURE__ */ external_react_default().createElement( - "div", - { - className: "tyk-editable-list__header", - style: { - paddingRight: `${buttonWidth + 60}px` - } - }, - /* @__PURE__ */ external_react_default().createElement(Row_Row, null, config.components.map((component, index) => /* @__PURE__ */ external_react_default().createElement(layout_Column, { key: component.props.label || index, size: `md-${component.size || 12} lg-${component.size || 12}` }, component.props.label))) - ) : null, /* @__PURE__ */ external_react_default().createElement("ul", { className: this.getListItemsCssClass(config.displayType) }, value.map((itemData, index) => this.genListItem(itemData, index)))); - } - render() { - const { - addValueOnFieldChange, - config, - error, - disabled, - label - } = this.props; - const appendToElement = document.querySelector(config.appendTo) || document.querySelector("body"); - return /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-editable-list" }, label ? /* @__PURE__ */ external_react_default().createElement("label", null, label) : null, /* @__PURE__ */ external_react_default().createElement( - EditableListForm, - { - addValueOnFieldChange, - components: config.components, - buttonName: config.formButtonTitle, - buttonStyle: config.formButtonStyle, - disabled, - error, - errorPersist: !!error, - noLabels: config.noLabels, - onSubmit: this.handleFormSubmit, - validate: this.isInList.bind(this, -1), - validationmessage: "This value is already in the list", - getMainFormButtonWidth: this.getMainFormButtonWidth - } - ), config.appendTo ? external_react_dom_default().createPortal( - this.genList(), - appendToElement - ) : this.genList()); - } -}; -EditableList_publicField(_EditableList, "propTypes", { - addValueOnFieldChange: (external_prop_types_default()).bool, - disabled: (external_prop_types_default()).bool, - error: (external_prop_types_default()).string, - config: external_prop_types_default().instanceOf(Object), - onChange: (external_prop_types_default()).func, - label: external_prop_types_default().oneOfType([ - external_prop_types_default().arrayOf((external_prop_types_default()).node), - (external_prop_types_default()).node, - (external_prop_types_default()).element, - (external_prop_types_default()).func, - (external_prop_types_default()).string - ]), - value: external_prop_types_default().oneOfType([ - external_prop_types_default().instanceOf(Array), - external_prop_types_default().instanceOf(Object) - ]) -}); -let EditableList = _EditableList; - - -;// CONCATENATED MODULE: ./src/form/components/EditableList2/Header.js - - - -const Header_Header = ({ - label, - addButtonName, - onAddRow, - disabled, - readOnly -}) => /* @__PURE__ */ external_react_default().createElement("div", { className: "editable-list__header" }, label ? /* @__PURE__ */ external_react_default().createElement("label", null, label) : null, !disabled && !readOnly && /* @__PURE__ */ external_react_default().createElement( - components_Button, - { - theme: "primary rounded-corners", - onClick: onAddRow - }, - addButtonName || "Add" -)); -Header_Header.propTypes = { - disabled: (external_prop_types_default()).bool, - readOnly: (external_prop_types_default()).bool, - onAddRow: (external_prop_types_default()).func, - addButtonName: (external_prop_types_default()).string, - label: external_prop_types_default().oneOfType([ - (external_prop_types_default()).string, - (external_prop_types_default()).element, - (external_prop_types_default()).node - ]) -}; -/* harmony default export */ const EditableList2_Header = (Header_Header); - -;// CONCATENATED MODULE: ./src/form/components/EditableList2/ListHeader.js - - -const ListHeader = ({ - fields, - readOnly -}) => /* @__PURE__ */ external_react_default().createElement("li", { className: "editable-list__item editable-list__item-header" }, fields.map((field) => { - var _a; - return /* @__PURE__ */ external_react_default().createElement("div", { className: `editable-list__item-cell editable-list__item--size-${(field == null ? void 0 : field.size) || 12}` }, (_a = field == null ? void 0 : field.props) == null ? void 0 : _a.label); -}), /* @__PURE__ */ external_react_default().createElement("div", { className: `editable-list__item-cell editable-list__item-action ${readOnly && "editable-list__item-action--read-only"}` }, "Delete")); -ListHeader.propTypes = { - fields: external_prop_types_default().instanceOf(Array), - readOnly: (external_prop_types_default()).bool -}; -/* harmony default export */ const EditableList2_ListHeader = (ListHeader); - -;// CONCATENATED MODULE: ./src/form/components/EditableList2/FieldsList.js -var FieldsList_defProp = Object.defineProperty; -var FieldsList_defProps = Object.defineProperties; -var FieldsList_getOwnPropDescs = Object.getOwnPropertyDescriptors; -var FieldsList_getOwnPropSymbols = Object.getOwnPropertySymbols; -var FieldsList_hasOwnProp = Object.prototype.hasOwnProperty; -var FieldsList_propIsEnum = Object.prototype.propertyIsEnumerable; -var FieldsList_defNormalProp = (obj, key, value) => key in obj ? FieldsList_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var FieldsList_spreadValues = (a, b) => { - for (var prop in b || (b = {})) - if (FieldsList_hasOwnProp.call(b, prop)) - FieldsList_defNormalProp(a, prop, b[prop]); - if (FieldsList_getOwnPropSymbols) - for (var prop of FieldsList_getOwnPropSymbols(b)) { - if (FieldsList_propIsEnum.call(b, prop)) - FieldsList_defNormalProp(a, prop, b[prop]); - } - return a; -}; -var FieldsList_spreadProps = (a, b) => FieldsList_defProps(a, FieldsList_getOwnPropDescs(b)); - - - -const FieldsList = ({ - fields, - disabled, - readOnly, - errors, - components, - onChange, - onDelete, - value, - rowIndex -}) => /* @__PURE__ */ external_react_default().createElement("li", { className: "editable-list__item" }, components.map((Component, index) => { - var _a, _b, _c; - let field = fields[index]; - let tempField = typeof field === "function" ? field(rowIndex, index) : field; - return ( - /* eslint-disable-next-line */ - /* @__PURE__ */ external_react_default().createElement("div", { className: `editable-list__item-cell editable-list__item--size-${((_a = fields[index]) == null ? void 0 : _a.size) || 12}` }, /* @__PURE__ */ external_react_default().createElement( - Component, - FieldsList_spreadProps(FieldsList_spreadValues({}, tempField == null ? void 0 : tempField.props), { - label: "", - value: value[index], - onChange: onChange.bind(null, index), - error: errors == null ? void 0 : errors[index], - disabled: disabled || ((_b = tempField == null ? void 0 : tempField.props) == null ? void 0 : _b.disabled), - readOnly: readOnly || ((_c = tempField == null ? void 0 : tempField.props) == null ? void 0 : _c.readOnly) - }) - )) - ); -}), /* @__PURE__ */ external_react_default().createElement("div", { className: `editable-list__item-cell editable-list__item-action ${readOnly && "editable-list__item-action--read-only"}` }, /* @__PURE__ */ external_react_default().createElement( - components_Button, - { - iconOnly: true, - iconType: "trash-alt", - theme: "primary-link", - onClick: onDelete, - disabled: readOnly || disabled - } -))); -FieldsList.propTypes = { - disabled: (external_prop_types_default()).bool, - readOnly: (external_prop_types_default()).bool, - rowIndex: external_prop_types_default().oneOfType([ - (external_prop_types_default()).string, - (external_prop_types_default()).number - ]), - fields: external_prop_types_default().instanceOf(Array), - errors: external_prop_types_default().instanceOf(Array), - components: external_prop_types_default().instanceOf(Array), - value: external_prop_types_default().instanceOf(Array), - onChange: (external_prop_types_default()).func, - onDelete: (external_prop_types_default()).func -}; -/* harmony default export */ const EditableList2_FieldsList = (FieldsList); - -;// CONCATENATED MODULE: ./src/form/components/EditableList2/validate-values.js -const validateValues = (fields, rowValues) => { - var _a; - return (_a = rowValues || [[void 0, void 0]]) == null ? void 0 : _a.map( - (colValue) => colValue == null ? void 0 : colValue.map( - (value, index) => { - var _a2, _b; - return ((_b = (_a2 = fields == null ? void 0 : fields[index]) == null ? void 0 : _a2.props) == null ? void 0 : _b.validate) && fields[index].props.validate(value); - } - ) - ); -}; -/* harmony default export */ const validate_values = (validateValues); - -;// CONCATENATED MODULE: ./src/form/components/EditableList2/with-validation.js -var with_validation_defProp = Object.defineProperty; -var with_validation_defProps = Object.defineProperties; -var with_validation_getOwnPropDescs = Object.getOwnPropertyDescriptors; -var with_validation_getOwnPropSymbols = Object.getOwnPropertySymbols; -var with_validation_hasOwnProp = Object.prototype.hasOwnProperty; -var with_validation_propIsEnum = Object.prototype.propertyIsEnumerable; -var with_validation_defNormalProp = (obj, key, value) => key in obj ? with_validation_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var with_validation_spreadValues = (a, b) => { - for (var prop in b || (b = {})) - if (with_validation_hasOwnProp.call(b, prop)) - with_validation_defNormalProp(a, prop, b[prop]); - if (with_validation_getOwnPropSymbols) - for (var prop of with_validation_getOwnPropSymbols(b)) { - if (with_validation_propIsEnum.call(b, prop)) - with_validation_defNormalProp(a, prop, b[prop]); - } - return a; -}; -var with_validation_spreadProps = (a, b) => with_validation_defProps(a, with_validation_getOwnPropDescs(b)); -var with_validation_objRest = (source, exclude) => { - var target = {}; - for (var prop in source) - if (with_validation_hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) - target[prop] = source[prop]; - if (source != null && with_validation_getOwnPropSymbols) - for (var prop of with_validation_getOwnPropSymbols(source)) { - if (exclude.indexOf(prop) < 0 && with_validation_propIsEnum.call(source, prop)) - target[prop] = source[prop]; - } - return target; -}; - -const withValidation = (Component) => (_a) => { - var _b = _a, { - onChange, - validate, - error - } = _b, rest = with_validation_objRest(_b, [ - "onChange", - "validate", - "error" - ]); - const [internalError, setInternalError] = (0,external_react_namespaceObject.useState)(null); - const onFieldChange = (0,external_react_namespaceObject.useCallback)((event) => { - const value = (event == null ? void 0 : event.target) ? ["radio", "checkbox"].includes(event.target.type) ? event.target.checked : event == null ? void 0 : event.target.value : event; - let isValid = true; - if (validate && typeof validate === "function") { - const errorMsg = validate(value); - isValid = !errorMsg; - setInternalError(errorMsg); - } - onChange(value, isValid); - }, [validate, onChange]); - return /* @__PURE__ */ external_react_default().createElement(Component, with_validation_spreadProps(with_validation_spreadValues({}, rest), { onChange: onFieldChange, error: internalError || error })); -}; -/* harmony default export */ const with_validation = (withValidation); - -;// CONCATENATED MODULE: ./src/form/components/EditableList2/index.js - - - - - - - -let id = 1; -const getUID = (prefix) => `${prefix}-${id++}`; -const EditableList2 = ({ - addButtonName, - disabled, - readOnly, - fields, - label, - error, - value = [], - onChange = () => { - }, - hideOnEmpty = true, - wrapperClassName = "" -}) => { - const [internalErrors, setInteranlErrors] = (0,external_react_namespaceObject.useState)(null); - const updateRowValue = (rowIndex, fieldIndex, componentValue, isValid) => { - var _a; - const tempValueArr = !value ? [] : [...value]; - if (!value) { - tempValueArr[rowIndex] = [...new Array(fields.length)]; - tempValueArr[rowIndex][fieldIndex] = componentValue; - } else { - const tempValue = [...tempValueArr[rowIndex]]; - tempValue[fieldIndex] = componentValue; - tempValueArr[rowIndex] = tempValue; - tempValueArr[rowIndex].id = value[rowIndex].id; - } - if (((_a = internalErrors == null ? void 0 : internalErrors[rowIndex]) == null ? void 0 : _a[fieldIndex]) && isValid) { - const tempErrors = [...internalErrors]; - const tempFieldError = [...tempErrors[rowIndex]]; - tempFieldError[fieldIndex] = null; - tempErrors[rowIndex] = tempFieldError; - setInteranlErrors(tempErrors); - } - onChange(tempValueArr); - }; - const hasErrors = (errors) => { - var _a; - return Boolean((_a = errors == null ? void 0 : errors.flat()) == null ? void 0 : _a.filter(Boolean).length); - }; - const Components = (0,external_react_namespaceObject.useMemo)( - () => fields.map((field) => { - let tempField = typeof field === "function" ? field() : field; - return with_validation((tempField == null ? void 0 : tempField.component) || /* @__PURE__ */ external_react_default().createElement((external_react_default()).Fragment, null)); - }), - [] - ); - const onAddRow = () => { - const errors = validate_values(fields, value); - if (hasErrors(errors)) { - setInteranlErrors(errors); - return; - } - const newValue = [...new Array(fields.length)]; - newValue.id = getUID("row"); - onChange([ - ...value && value, - newValue - ]); - }; - const deleteRow = (index) => { - if (!value) { - return; - } - const tempValue = [...value]; - tempValue.splice(index, 1); - onChange(tempValue); - }; - return /* @__PURE__ */ external_react_default().createElement("div", { className: `editable-list__wrapper tyk-form-group tyk-form-group--default ${error ? "has-error" : ""} ${wrapperClassName}` }, /* @__PURE__ */ external_react_default().createElement( - EditableList2_Header, - { - disabled, - readOnly, - label, - addButtonName, - onAddRow - } - ), (value == null ? void 0 : value.length) || !hideOnEmpty ? /* @__PURE__ */ external_react_default().createElement("ul", { className: "editable-list__list" }, (value || [[]]).map((v, i) => /* @__PURE__ */ external_react_default().createElement((external_react_default()).Fragment, null, /* @__PURE__ */ external_react_default().createElement( - EditableList2_FieldsList, - { - key: v.id || i, - rowIndex: i, - disabled, - readOnly, - fields, - onChange: updateRowValue.bind(null, i), - onDelete: deleteRow.bind(null, i), - value: v, - errors: internalErrors == null ? void 0 : internalErrors[i], - components: Components - } - ))), /* @__PURE__ */ external_react_default().createElement(EditableList2_ListHeader, { fields, readOnly })) : null, error && error !== "true" && error !== "false" ? /* @__PURE__ */ external_react_default().createElement("p", { className: "tyk-form-control__error-message" }, error) : null); -}; -EditableList2.propTypes = { - /** Sets Editable list in edit mode. - * If enabled all fields are disabled, the add button is hidden and delete button is disabled - * */ - disabled: (external_prop_types_default()).bool, - /** Sets Editable list in read only mode. - * If enabled all fields are displaying just the value, - * the add button is hidden and delete button is disabled - */ - readOnly: (external_prop_types_default()).bool, - /** Name of the Add button. By default has 'Add value' */ - addButtonName: (external_prop_types_default()).string, - /** Label of Editable list, is displayed above the list and inline with the Add button */ - label: external_prop_types_default().oneOfType([ - (external_prop_types_default()).string, - (external_prop_types_default()).element, - (external_prop_types_default()).node - ]), - /** Array of form elements that you want the list to have - * Each field is an object points to the Form element component that you want to use, - * the props you want to apply on it, - * and the size (as in width, it's like columns system, between 1 and 12) - * Example: - * ... - * fields={[ - { - component: Input2, - styles: { - width: "200px", - }, - size: 4, - props: { - name: 'input', - label: 'Claim name', - theme: 'default rounded-corners', - placeholder: 'Enter claim name', - validate: formikRequired('This field is required') - } - }, - { - component: Combobox2, - size: 8, - props: comboboxProps - } - ]} - */ - fields: external_prop_types_default().instanceOf(Array), - /** onChange function is called everytime the value of editable list changes */ - onChange: (external_prop_types_default()).func, - /** value of editable list, wich is an Array (List of row values) - * of Arrays (List of column values, - * each column will have the value format depending on the component type) - */ - value: external_prop_types_default().oneOfType([ - external_prop_types_default().instanceOf(Object), - external_prop_types_default().instanceOf(Array) - ]), - error: (external_prop_types_default()).string, - hideOnEmpty: (external_prop_types_default()).bool, - wrapperClassName: (external_prop_types_default()).string -}; -/* harmony default export */ const components_EditableList2 = (EditableList2); - -;// CONCATENATED MODULE: ./src/form/components/FileInput/index.js -var FileInput_defProp = Object.defineProperty; -var FileInput_defProps = Object.defineProperties; -var FileInput_getOwnPropDescs = Object.getOwnPropertyDescriptors; -var FileInput_getOwnPropSymbols = Object.getOwnPropertySymbols; -var FileInput_hasOwnProp = Object.prototype.hasOwnProperty; -var FileInput_propIsEnum = Object.prototype.propertyIsEnumerable; -var FileInput_defNormalProp = (obj, key, value) => key in obj ? FileInput_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var FileInput_spreadValues = (a, b) => { - for (var prop in b || (b = {})) - if (FileInput_hasOwnProp.call(b, prop)) - FileInput_defNormalProp(a, prop, b[prop]); - if (FileInput_getOwnPropSymbols) - for (var prop of FileInput_getOwnPropSymbols(b)) { - if (FileInput_propIsEnum.call(b, prop)) - FileInput_defNormalProp(a, prop, b[prop]); - } - return a; -}; -var FileInput_spreadProps = (a, b) => FileInput_defProps(a, FileInput_getOwnPropDescs(b)); -var FileInput_objRest = (source, exclude) => { - var target = {}; - for (var prop in source) - if (FileInput_hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) - target[prop] = source[prop]; - if (source != null && FileInput_getOwnPropSymbols) - for (var prop of FileInput_getOwnPropSymbols(source)) { - if (exclude.indexOf(prop) < 0 && FileInput_propIsEnum.call(source, prop)) - target[prop] = source[prop]; - } - return target; -}; -var FileInput_publicField = (obj, key, value) => { - FileInput_defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); - return value; -}; - - - -class FileInput extends external_react_namespaceObject.Component { - constructor(props) { - super(props); - this.handleOnChange = this.handleOnChange.bind(this); - this.clearValue = this.clearValue.bind(this); - this.fileInputRef = (0,external_react_namespaceObject.createRef)(); - } - getCssClasses() { - const { - error, - theme, - labelwidth, - wrapperClassName = "" - } = this.props; - const cssClasses = [wrapperClassName, "tyk-form-group"]; - const themes = theme ? theme.split(" ") : []; - if (themes.length) { - themes.forEach((iTheme) => { - cssClasses.push(`tyk-form-group--${iTheme}`); - }); - } - if (labelwidth) { - cssClasses.push("tyk-form-group--label-has-width"); - } - if (error) { - cssClasses.push("has-error"); - } - return cssClasses.join(" "); - } - getLabelStyles() { - const { labelwidth } = this.props; - const styles = {}; - if (labelwidth) { - styles.flexBasis = labelwidth; - } - return styles; - } - getNonLabelWidth() { - const { labelwidth } = this.props; - const styles = {}; - if (labelwidth) { - styles.flexBasis = `calc(100% - ${labelwidth} - 20px)`; - } - return styles; - } - getFileInputError() { - const { error } = this.props; - return error && error !== "true" && error !== "false" ? /* @__PURE__ */ external_react_default().createElement( - "p", - { - className: "tyk-form-control__error-message" - }, - error - ) : null; - } - getFileInputComponent() { - const _a = this.props, { - accept, - value: omitValue, - onChange - } = _a, rest = FileInput_objRest(_a, [ - "accept", - "value", - "onChange" - ]); - return /* @__PURE__ */ external_react_default().createElement( - "div", - { - className: "tyk-file-input__wrapper", - style: this.getNonLabelWidth() - }, - /* @__PURE__ */ external_react_default().createElement( - "input", - FileInput_spreadProps(FileInput_spreadValues({ - accept, - className: "tyk-form-control" - }, rest), { - onChange: this.handleOnChange, - ref: this.fileInputRef, - type: "file" - }) - ), - this.fileInputRef.current && this.fileInputRef.current.files.length > 0 ? /* @__PURE__ */ external_react_default().createElement( - "button", - { - onClick: this.clearValue, - type: "button" - }, - /* @__PURE__ */ external_react_default().createElement(components_Icon, { type: "times" }) - ) : null - ); - } - clearValue() { - const { onChange } = this.props; - this.fileInputRef.current.value = ""; - onChange(""); - } - handleOnChange(e) { - const { onChange } = this.props; - onChange(e.target.files); - } - // eslint-disable-next-line class-methods-use-this - reset() { - } - render() { - const { - id, - label, - note - } = this.props; - return /* @__PURE__ */ external_react_default().createElement(external_react_namespaceObject.Fragment, null, /* @__PURE__ */ external_react_default().createElement("div", { className: this.getCssClasses() }, label ? /* @__PURE__ */ external_react_default().createElement("label", { htmlFor: id, style: this.getLabelStyles() }, label) : null, /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-form-control__wrapper" }, this.getFileInputComponent(), note ? /* @__PURE__ */ external_react_default().createElement("p", { className: "tyk-form-control__help-block" }, note) : null), this.getFileInputError())); - } -} -FileInput_publicField(FileInput, "propTypes", { - accept: (external_prop_types_default()).string, - disabled: (external_prop_types_default()).bool, - id: (external_prop_types_default()).string, - error: external_prop_types_default().oneOfType([ - (external_prop_types_default()).string, - (external_prop_types_default()).bool - ]), - label: external_prop_types_default().oneOfType([ - external_prop_types_default().arrayOf((external_prop_types_default()).node), - (external_prop_types_default()).node, - (external_prop_types_default()).element, - (external_prop_types_default()).func, - (external_prop_types_default()).string - ]), - labelwidth: (external_prop_types_default()).string, - name: (external_prop_types_default()).string, - note: (external_prop_types_default()).string, - onChange: (external_prop_types_default()).func, - placeholder: (external_prop_types_default()).string, - theme: (external_prop_types_default()).string, - value: external_prop_types_default().instanceOf(Object), - wrapperClassName: (external_prop_types_default()).string -}); - -;// CONCATENATED MODULE: ./src/form/components/Input/index.js -var Input_defProp = Object.defineProperty; -var Input_defProps = Object.defineProperties; -var Input_getOwnPropDescs = Object.getOwnPropertyDescriptors; -var Input_getOwnPropSymbols = Object.getOwnPropertySymbols; -var Input_hasOwnProp = Object.prototype.hasOwnProperty; -var Input_propIsEnum = Object.prototype.propertyIsEnumerable; -var Input_defNormalProp = (obj, key, value) => key in obj ? Input_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var Input_spreadValues = (a, b) => { - for (var prop in b || (b = {})) - if (Input_hasOwnProp.call(b, prop)) - Input_defNormalProp(a, prop, b[prop]); - if (Input_getOwnPropSymbols) - for (var prop of Input_getOwnPropSymbols(b)) { - if (Input_propIsEnum.call(b, prop)) - Input_defNormalProp(a, prop, b[prop]); - } - return a; -}; -var Input_spreadProps = (a, b) => Input_defProps(a, Input_getOwnPropDescs(b)); -var Input_objRest = (source, exclude) => { - var target = {}; - for (var prop in source) - if (Input_hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) - target[prop] = source[prop]; - if (source != null && Input_getOwnPropSymbols) - for (var prop of Input_getOwnPropSymbols(source)) { - if (exclude.indexOf(prop) < 0 && Input_propIsEnum.call(source, prop)) - target[prop] = source[prop]; - } - return target; -}; -var Input_publicField = (obj, key, value) => { - Input_defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); - return value; -}; - - -const _Input = class _Input extends external_react_namespaceObject.Component { - static getAddon(content) { - return /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-input-group__addon" }, content); - } - constructor(props) { - super(props); - const { - value - } = this.props; - this.state = { - initValue: value, - stateValue: value - }; - this.handleOnChange = this.handleOnChange.bind(this); - } - componentDidUpdate(prevProps) { - const { - isfield, - value, - onChange - } = this.props; - if (!isfield && prevProps.value !== value) { - this.setState({ - stateValue: value - }, () => { - if (onChange) { - onChange(value); - } - }); - } - } - getLabelStyles() { - const { labelwidth } = this.props; - const styles = {}; - if (labelwidth) { - styles.flexBasis = labelwidth; - } - return styles; - } - getNonLabelWidth() { - const { labelwidth } = this.props; - const styles = {}; - if (labelwidth) { - styles.flexBasis = `calc(100% - ${labelwidth} - 20px)`; - } - return styles; - } - getInputError() { - const { error } = this.props; - return error && error !== "true" && error !== "false" ? /* @__PURE__ */ external_react_default().createElement( - "p", - { - className: "tyk-form-control__error-message" - }, - error - ) : null; - } - getCssClasses() { - const { - error, - theme, - labelwidth, - inputgroupaddonleft, - inputgroupaddonright - } = this.props; - const cssClasses = ["tyk-form-group"]; - const themes = theme ? theme.split(" ") : []; - if (themes.length) { - themes.forEach((iTheme) => { - cssClasses.push(`tyk-form-group--${iTheme}`); - }); - } - if (inputgroupaddonleft) { - cssClasses.push("tyk-form-group--addon-left"); - } - if (inputgroupaddonright) { - cssClasses.push("tyk-form-group--addon-right"); - } - if (labelwidth) { - cssClasses.push("tyk-form-group--label-has-width"); - } - if (error) { - cssClasses.push("has-error"); - } - return cssClasses.join(" "); - } - getInputGroupAddon() { - const { - inputgroupaddonleft, - inputgroupaddonright - } = this.props; - return /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-input-group" }, inputgroupaddonleft ? _Input.getAddon(inputgroupaddonleft) : null, this.getInputComponent(), inputgroupaddonright ? _Input.getAddon(inputgroupaddonright) : null); - } - getInputComponent() { - const _a = this.props, { - isfield, - onChange, - value - } = _a, rest = Input_objRest(_a, [ - "isfield", - "onChange", - "value" - ]); - const { stateValue } = this.state; - return /* @__PURE__ */ external_react_default().createElement( - "input", - Input_spreadProps(Input_spreadValues({ - autoComplete: "off", - className: "tyk-form-control" - }, rest), { - onChange: this.handleOnChange, - value: isfield ? value : stateValue - }) - ); - } - reset() { - const { initValue } = this.state; - this.setState({ - stateValue: initValue - }); - } - handleOnChange(e) { - const { onChange, isfield } = this.props; - const inputValue = e.target.value; - if (!isfield) { - this.setState({ - stateValue: inputValue - }, () => { - if (onChange) { - onChange(inputValue); - } - }); - } else { - onChange(inputValue); - } - } - render() { - const { - label, - id, - inputgroupaddonleft, - inputgroupaddonright, - note, - readOnly, - value - } = this.props; - return /* @__PURE__ */ external_react_default().createElement("div", { className: this.getCssClasses() }, label ? /* @__PURE__ */ external_react_default().createElement("label", { htmlFor: id, style: this.getLabelStyles() }, label) : null, !readOnly && /* @__PURE__ */ external_react_default().createElement( - "div", - { - className: "tyk-form-control__wrapper", - style: this.getNonLabelWidth() - }, - inputgroupaddonleft || inputgroupaddonright ? this.getInputGroupAddon() : this.getInputComponent(), - note ? /* @__PURE__ */ external_react_default().createElement("p", { className: "tyk-form-control__help-block" }, note) : null, - this.getInputError() - ), readOnly && /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-form-control--readonly" }, value || "-")); - } -}; -Input_publicField(_Input, "propTypes", { - disabled: (external_prop_types_default()).bool, - readOnly: (external_prop_types_default()).bool, - id: (external_prop_types_default()).string, - isfield: (external_prop_types_default()).bool, - error: external_prop_types_default().oneOfType([ - (external_prop_types_default()).string, - (external_prop_types_default()).bool - ]), - inputgroupaddonleft: external_prop_types_default().oneOfType([ - (external_prop_types_default()).element, - (external_prop_types_default()).node, - (external_prop_types_default()).string - ]), - inputgroupaddonright: external_prop_types_default().oneOfType([ - (external_prop_types_default()).element, - (external_prop_types_default()).node, - (external_prop_types_default()).string - ]), - label: external_prop_types_default().oneOfType([ - (external_prop_types_default()).string, - (external_prop_types_default()).element, - (external_prop_types_default()).node - ]), - labelwidth: (external_prop_types_default()).string, - name: (external_prop_types_default()).string, - note: (external_prop_types_default()).string, - onChange: (external_prop_types_default()).func, - placeholder: (external_prop_types_default()).string, - theme: (external_prop_types_default()).string, - value: external_prop_types_default().oneOfType([ - (external_prop_types_default()).number, - (external_prop_types_default()).string - ]) -}); -let Input = _Input; - - -;// CONCATENATED MODULE: ./src/form/components/Input2/index.js -var Input2_defProp = Object.defineProperty; -var Input2_defProps = Object.defineProperties; -var Input2_getOwnPropDescs = Object.getOwnPropertyDescriptors; -var Input2_getOwnPropSymbols = Object.getOwnPropertySymbols; -var Input2_hasOwnProp = Object.prototype.hasOwnProperty; -var Input2_propIsEnum = Object.prototype.propertyIsEnumerable; -var Input2_defNormalProp = (obj, key, value) => key in obj ? Input2_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var Input2_spreadValues = (a, b) => { - for (var prop in b || (b = {})) - if (Input2_hasOwnProp.call(b, prop)) - Input2_defNormalProp(a, prop, b[prop]); - if (Input2_getOwnPropSymbols) - for (var prop of Input2_getOwnPropSymbols(b)) { - if (Input2_propIsEnum.call(b, prop)) - Input2_defNormalProp(a, prop, b[prop]); - } - return a; -}; -var Input2_spreadProps = (a, b) => Input2_defProps(a, Input2_getOwnPropDescs(b)); -var Input2_objRest = (source, exclude) => { - var target = {}; - for (var prop in source) - if (Input2_hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) - target[prop] = source[prop]; - if (source != null && Input2_getOwnPropSymbols) - for (var prop of Input2_getOwnPropSymbols(source)) { - if (exclude.indexOf(prop) < 0 && Input2_propIsEnum.call(source, prop)) - target[prop] = source[prop]; - } - return target; -}; - - -const Input2 = (0,external_react_namespaceObject.forwardRef)((_a, ref) => { - var _b = _a, { - error, - onChange, - readOnly, - id, - inputgroupaddonleft, - inputgroupaddonright, - label, - labelwidth, - note, - theme, - value, - wrapperClassName = "" - } = _b, rest = Input2_objRest(_b, [ - "error", - "onChange", - "readOnly", - "id", - "inputgroupaddonleft", - "inputgroupaddonright", - "label", - "labelwidth", - "note", - "theme", - "value", - "wrapperClassName" - ]); - const inputRef = (0,external_react_namespaceObject.useRef)(); - (0,external_react_namespaceObject.useImperativeHandle)(ref, () => ({ - focus: () => { - inputRef.current.focus(); - } - })); - const getAddon = (content) => /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-input-group__addon" }, content); - const getLabelStyles = () => Input2_spreadValues({}, labelwidth && { - flexBasis: labelwidth - }); - const getNonLabelWidth = () => Input2_spreadValues({}, labelwidth && { - flexBasis: `calc(100% - ${labelwidth} - 20px)` - }); - const getInputError = () => error && error !== "true" && error !== "false" ? /* @__PURE__ */ external_react_default().createElement( - "p", - { - className: "tyk-form-control__error-message" - }, - error - ) : null; - const getCssClasses = () => { - const cssClasses = [wrapperClassName, "tyk-form-group"]; - const themes = theme ? theme.split(" ") : []; - if (themes.length) { - themes.forEach((iTheme) => { - cssClasses.push(`tyk-form-group--${iTheme}`); - }); - } - if (inputgroupaddonleft) { - cssClasses.push("tyk-form-group--addon-left"); - } - if (inputgroupaddonright) { - cssClasses.push("tyk-form-group--addon-right"); - } - if (labelwidth) { - cssClasses.push("tyk-form-group--label-has-width"); - } - if (error) { - cssClasses.push("has-error"); - } - return cssClasses.join(" "); - }; - const handleOnChange = (e) => { - onChange(e, e.target.value); - }; - const getInputElement = () => /* @__PURE__ */ external_react_default().createElement( - "input", - Input2_spreadProps(Input2_spreadValues({ - autoComplete: "off", - className: "tyk-form-control" - }, rest), { - onChange: handleOnChange, - value, - ref: inputRef - }) - ); - const getInputGroupAddon = () => /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-input-group" }, inputgroupaddonleft ? getAddon(inputgroupaddonleft) : null, getInputElement(), inputgroupaddonright ? getAddon(inputgroupaddonright) : null); - return /* @__PURE__ */ external_react_default().createElement("div", { className: getCssClasses() }, label ? /* @__PURE__ */ external_react_default().createElement("label", { htmlFor: id, style: getLabelStyles() }, label) : null, !readOnly && /* @__PURE__ */ external_react_default().createElement( - "div", - { - className: "tyk-form-control__wrapper", - style: getNonLabelWidth() - }, - inputgroupaddonleft || inputgroupaddonright ? getInputGroupAddon() : getInputElement(), - note ? /* @__PURE__ */ external_react_default().createElement("p", { className: "tyk-form-control__help-block" }, note) : null, - getInputError() - ), readOnly && /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-form-control--readonly" }, value || "-")); -}); -Input2.propTypes = { - disabled: (external_prop_types_default()).bool, - readOnly: (external_prop_types_default()).bool, - id: (external_prop_types_default()).string, - error: external_prop_types_default().oneOfType([ - (external_prop_types_default()).string, - (external_prop_types_default()).bool - ]), - inputgroupaddonleft: external_prop_types_default().oneOfType([ - (external_prop_types_default()).element, - (external_prop_types_default()).node, - (external_prop_types_default()).string - ]), - inputgroupaddonright: external_prop_types_default().oneOfType([ - (external_prop_types_default()).element, - (external_prop_types_default()).node, - (external_prop_types_default()).string - ]), - label: external_prop_types_default().oneOfType([ - (external_prop_types_default()).string, - (external_prop_types_default()).element, - (external_prop_types_default()).node - ]), - labelwidth: (external_prop_types_default()).string, - name: (external_prop_types_default()).string, - note: (external_prop_types_default()).string, - onChange: (external_prop_types_default()).func, - placeholder: (external_prop_types_default()).string, - theme: (external_prop_types_default()).string, - value: external_prop_types_default().oneOfType([ - (external_prop_types_default()).number, - (external_prop_types_default()).string - ]), - wrapperClassName: (external_prop_types_default()).string -}; -/* harmony default export */ const components_Input2 = (Input2); - -;// CONCATENATED MODULE: ./src/form/components/Multiselect/js/MultiselectContext.js - -const MultiselectContext = (0,external_react_namespaceObject.createContext)(); -/* harmony default export */ const js_MultiselectContext = (MultiselectContext); - -;// CONCATENATED MODULE: ./src/form/components/Multiselect/js/MultiselectItem.js -var MultiselectItem_defProp = Object.defineProperty; -var MultiselectItem_defNormalProp = (obj, key, value) => key in obj ? MultiselectItem_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var MultiselectItem_publicField = (obj, key, value) => { - MultiselectItem_defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); - return value; -}; - - - - - - -const getItemContent = (context, item) => context.detailsDisplayTemplate ? context.detailsDisplayTemplate(item) : JSON.stringify(item.details); -const getItemLoader = (context, item) => { - const { opened } = context; - return opened[item.id] ? /* @__PURE__ */ external_react_default().createElement(components_Loader, { position: "relative" }) : null; -}; -class MultiselectItem extends external_react_namespaceObject.Component { - isInSearchValue(fieldsToSearchOn) { - const { searchValue, item } = this.props; - if (fieldsToSearchOn && fieldsToSearchOn.length > 0) { - let fields = fieldsToSearchOn.slice(0); - fields = fields.filter((key) => item[key] && item[key].search(searchValue) > -1); - return fields.length > 0; - } - return JSON.stringify(item).search(searchValue) > -1; - } - render() { - const { - item, - itemType, - onChange - } = this.props; - return /* @__PURE__ */ external_react_default().createElement(external_react_namespaceObject.Fragment, null, /* @__PURE__ */ external_react_default().createElement(js_MultiselectContext.Consumer, null, (context) => this.isInSearchValue(context.fieldsToSearchOn) ? /* @__PURE__ */ external_react_default().createElement("li", null, /* @__PURE__ */ external_react_default().createElement("div", null, /* @__PURE__ */ external_react_default().createElement("span", { className: "tyk-multiselect-item__name" }, context.itemDisplayTemplate ? context.itemDisplayTemplate(item) : JSON.stringify(item)), /* @__PURE__ */ external_react_default().createElement("span", { className: "tyk-multiselect-item__controls" }, /* @__PURE__ */ external_react_default().createElement( - components_Button, - { - iconType: itemType === "normal" ? "plus" : "minus", - iconOnly: true, - onClick: onChange.bind(null, item), - disabled: context.disabled || context.maxSelections && context.maxSelections === context.nrSelectedItems && itemType === "normal" - } - ), /* @__PURE__ */ external_react_default().createElement( - components_Button, - { - iconType: context.opened[item.id] ? "chevron-up" : "chevron-down", - iconOnly: true, - onClick: context.onGetItemDetails.bind(context.parentContext, item) - } - ))), item.details ? /* @__PURE__ */ external_react_default().createElement( - components_Collapsible, - { - collapsed: !context.opened[item.id], - className: "tyk-multiselect-item__details" - }, - getItemContent(context, item) - ) : getItemLoader(context, item)) : null)); - } -} -MultiselectItem_publicField(MultiselectItem, "propTypes", { - item: external_prop_types_default().instanceOf(Object), - itemType: (external_prop_types_default()).string, - searchValue: (external_prop_types_default()).string, - onChange: (external_prop_types_default()).func -}); -/* harmony default export */ const js_MultiselectItem = (MultiselectItem); - -;// CONCATENATED MODULE: ./src/form/components/Multiselect/js/MultiselectPanel.js -var MultiselectPanel_defProp = Object.defineProperty; -var MultiselectPanel_defNormalProp = (obj, key, value) => key in obj ? MultiselectPanel_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var MultiselectPanel_publicField = (obj, key, value) => { - MultiselectPanel_defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); - return value; -}; - - - - - - - - -class MultiselectPanel extends external_react_namespaceObject.Component { - constructor(props) { - super(props); - MultiselectPanel_publicField(this, "state", { - searchValue: "" - }); - this.searchOnChange = this.searchOnChange.bind(this); - this.itemChanged = this.itemChanged.bind(this); - this.itemIndex = 0; - this.itemsListRef = (0,external_react_namespaceObject.createRef)(); - } - getItemIndex() { - this.itemIndex += 1; - return this.itemIndex; - } - getItemsList() { - const { - itemsPageNumber, - itemsNrPages, - loadMoreItems, - serverLoad - } = this.props; - return serverLoad ? /* @__PURE__ */ external_react_default().createElement( - components_InfiniteScroller, - { - refChild: this.itemsListRef, - hasMore: itemsNrPages > itemsPageNumber, - loadMore: loadMoreItems, - pageNumber: itemsPageNumber - }, - this.renderListItems() - ) : this.renderListItems(); - } - searchOnChange(value) { - const { onCustomSearch } = this.props; - if (!onCustomSearch) { - this.setState({ - searchValue: value - }); - } else { - onCustomSearch(value); - } - } - itemChanged(item) { - const { items, onChange } = this.props; - let cloneItems = (0,external_immutable_namespaceObject.fromJS)(items).toJS(); - cloneItems = cloneItems.filter((clonedItem) => item.id !== clonedItem.id); - onChange(cloneItems, item); - } - renderListItems() { - const { - customSearch, - items, - panelType, - serverLoad - } = this.props; - const { searchValue } = this.state; - return /* @__PURE__ */ external_react_default().createElement( - "ul", - { - className: `tyk-multiselect__list${!serverLoad ? " tyk-multiselect__list--scroll" : ""}`, - ref: this.itemsListRef - }, - items.map((item) => /* @__PURE__ */ external_react_default().createElement( - js_MultiselectItem, - { - itemType: panelType, - key: this.getItemIndex(), - onChange: this.itemChanged, - searchValue: customSearch ? "" : searchValue, - item - } - )) - ); - } - render() { - const { - inputPlaceholder, - noItemsMessage, - items - } = this.props; - const { searchValue } = this.state; - return /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-multiselect__panel" }, /* @__PURE__ */ external_react_default().createElement( - Input, - { - inputgroupaddonleft: /* @__PURE__ */ external_react_default().createElement(components_Icon, { type: "search" }), - name: "search", - onChange: this.searchOnChange, - placeholder: inputPlaceholder, - value: searchValue - } - ), items.length ? this.getItemsList() : /* @__PURE__ */ external_react_default().createElement( - components_Message, - { - theme: "info" - }, - noItemsMessage - )); - } -} -MultiselectPanel_publicField(MultiselectPanel, "propTypes", { - customSearch: (external_prop_types_default()).bool, - onCustomSearch: (external_prop_types_default()).func, - panelType: (external_prop_types_default()).string, - onChange: (external_prop_types_default()).func, - items: external_prop_types_default().instanceOf(Array), - itemsPageNumber: (external_prop_types_default()).number, - itemsNrPages: (external_prop_types_default()).number, - inputPlaceholder: (external_prop_types_default()).string, - loadMoreItems: (external_prop_types_default()).func, - noItemsMessage: (external_prop_types_default()).string, - serverLoad: (external_prop_types_default()).bool -}); -/* harmony default export */ const js_MultiselectPanel = (MultiselectPanel); - -;// CONCATENATED MODULE: ./src/form/components/Multiselect/index.js -var Multiselect_defProp = Object.defineProperty; -var Multiselect_defNormalProp = (obj, key, value) => key in obj ? Multiselect_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var Multiselect_publicField = (obj, key, value) => { - Multiselect_defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); - return value; -}; - - - - - -const diffObjects = (value, items) => { - const newItems = items.filter((item) => { - const isCommon = value.filter((selectedItem) => selectedItem.id === item.id).length > 0; - return !isCommon; - }); - return newItems; -}; -class Multiselect extends external_react_namespaceObject.Component { - constructor(props) { - super(props); - Multiselect_publicField(this, "state", { - opened: {} - }); - this.valueChange = this.valueChange.bind(this); - this.itemsChange = this.itemsChange.bind(this); - } - onGetItemDetails(item) { - const { getItemDetails } = this.props; - this.setState((prevState) => { - const tempState = Object.assign({}, prevState); - tempState.opened[item.id] = !tempState.opened[item.id]; - return tempState; - }, () => { - if (getItemDetails) { - getItemDetails(item); - } - }); - } - getMultiselectError() { - const { error } = this.props; - return error && error !== "true" && error !== "false" ? /* @__PURE__ */ external_react_default().createElement( - "p", - { - className: "tyk-form-control__error-message" - }, - error - ) : null; - } - getCssClasses() { - const { error, wrapperClassName = "" } = this.props; - const cssClasses = [wrapperClassName, "tyk-multiselect"]; - if (error) { - cssClasses.push("has-error"); - } - return cssClasses.join(" "); - } - itemsChange(allItems, item) { - const { value, onChange } = this.props; - const valueClone = (0,external_immutable_namespaceObject.fromJS)(value).toJS(); - valueClone.unshift(item); - onChange(valueClone, item, "added"); - } - valueChange(value, item) { - const { items, onChange } = this.props; - const allItemsClone = (0,external_immutable_namespaceObject.fromJS)(items).toJS(); - allItemsClone.unshift(item); - onChange(value, item, "removed"); - } - render() { - const { - customSearch, - entityNamePlural, - disabled, - itemDisplayTemplate, - detailsDisplayTemplate, - fieldsToSearchOn, - items, - itemsPageNumber, - itemsNrPages, - loadMoreItems, - maxSelections, - note, - value - } = this.props; - const { opened } = this.state; - return /* @__PURE__ */ external_react_default().createElement(external_react_namespaceObject.Fragment, null, /* @__PURE__ */ external_react_default().createElement("div", { className: this.getCssClasses() }, /* @__PURE__ */ external_react_default().createElement( - js_MultiselectContext.Provider, - { - value: { - disabled, - parentContext: this, - itemDisplayTemplate, - detailsDisplayTemplate, - fieldsToSearchOn, - maxSelections, - nrSelectedItems: value.length, - onGetItemDetails: this.onGetItemDetails, - opened - } - }, - /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-multiselect__header" }, /* @__PURE__ */ external_react_default().createElement("div", null, value.length, " ", "Selected", " ", entityNamePlural), /* @__PURE__ */ external_react_default().createElement("div", null, "Select from existing", entityNamePlural)), - /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-multiselect__panel-wrapper" }, /* @__PURE__ */ external_react_default().createElement( - js_MultiselectPanel, - { - inputPlaceholder: `Search through selected ${entityNamePlural}`, - noItemsMessage: `Selected ${entityNamePlural} will show here`, - items: value, - onChange: this.valueChange, - panelType: "selected" - } - ), /* @__PURE__ */ external_react_default().createElement( - js_MultiselectPanel, - { - inputPlaceholder: `Search existing ${entityNamePlural}`, - noItemsMessage: `No ${entityNamePlural} to display`, - entityNamePlural, - customSearch: !!customSearch, - onCustomSearch: customSearch, - items: diffObjects(value, items), - onChange: this.itemsChange, - serverLoad: !!loadMoreItems, - loadMoreItems, - itemsPageNumber, - itemsNrPages, - panelType: "normal" - } - )) - )), /* @__PURE__ */ external_react_default().createElement("div", null, note ? /* @__PURE__ */ external_react_default().createElement("p", { className: "tyk-form-control__help-block" }, note) : null), this.getMultiselectError()); - } -} -Multiselect_publicField(Multiselect, "propTypes", { - customSearch: (external_prop_types_default()).func, - disabled: (external_prop_types_default()).bool, - error: (external_prop_types_default()).string, - entityNamePlural: (external_prop_types_default()).string, - items: external_prop_types_default().instanceOf(Array), - itemDisplayTemplate: (external_prop_types_default()).func, - detailsDisplayTemplate: (external_prop_types_default()).func, - fieldsToSearchOn: external_prop_types_default().instanceOf(Array), - onChange: (external_prop_types_default()).func, - getItemDetails: (external_prop_types_default()).func, - itemsPageNumber: (external_prop_types_default()).number, - itemsNrPages: (external_prop_types_default()).number, - loadMoreItems: (external_prop_types_default()).func, - note: (external_prop_types_default()).string, - maxSelections: (external_prop_types_default()).number, - value: external_prop_types_default().instanceOf(Array), - wrapperClassName: (external_prop_types_default()).string -}); -/* harmony default export */ const components_Multiselect = (Multiselect); - -;// CONCATENATED MODULE: ./src/form/components/Radio/index.js -var Radio_defProp = Object.defineProperty; -var Radio_defProps = Object.defineProperties; -var Radio_getOwnPropDescs = Object.getOwnPropertyDescriptors; -var Radio_getOwnPropSymbols = Object.getOwnPropertySymbols; -var Radio_hasOwnProp = Object.prototype.hasOwnProperty; -var Radio_propIsEnum = Object.prototype.propertyIsEnumerable; -var Radio_defNormalProp = (obj, key, value) => key in obj ? Radio_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var Radio_spreadValues = (a, b) => { - for (var prop in b || (b = {})) - if (Radio_hasOwnProp.call(b, prop)) - Radio_defNormalProp(a, prop, b[prop]); - if (Radio_getOwnPropSymbols) - for (var prop of Radio_getOwnPropSymbols(b)) { - if (Radio_propIsEnum.call(b, prop)) - Radio_defNormalProp(a, prop, b[prop]); - } - return a; -}; -var Radio_spreadProps = (a, b) => Radio_defProps(a, Radio_getOwnPropDescs(b)); -var Radio_objRest = (source, exclude) => { - var target = {}; - for (var prop in source) - if (Radio_hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) - target[prop] = source[prop]; - if (source != null && Radio_getOwnPropSymbols) - for (var prop of Radio_getOwnPropSymbols(source)) { - if (exclude.indexOf(prop) < 0 && Radio_propIsEnum.call(source, prop)) - target[prop] = source[prop]; - } - return target; -}; -var Radio_publicField = (obj, key, value) => { - Radio_defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); - return value; -}; - - -class Radio extends external_react_namespaceObject.Component { - getCssClasses() { - const { - inline, - nospace, - theme = "", - disabled, - readOnly, - wrapperClassName = "" - } = this.props; - const cssClasses = [wrapperClassName]; - if (inline) { - cssClasses.push("tyk-radio--inline"); - } else { - cssClasses.push("tyk-radio"); - } - if (nospace) { - cssClasses.push("no-margin"); - } - if (theme.trim()) { - cssClasses.push(...theme.split(" ").map((t) => `tyk-radio--theme-${t}`)); - } - if (readOnly || disabled) { - cssClasses.push("tyk-radio--is-disabled"); - } - return cssClasses.join(" "); - } - render() { - const _a = this.props, { - input, - label, - note, - disabled, - readOnly - } = _a, rest = Radio_objRest(_a, [ - "input", - "label", - "note", - "disabled", - "readOnly" - ]); - return /* @__PURE__ */ external_react_default().createElement( - "div", - { - className: this.getCssClasses() - }, - /* @__PURE__ */ external_react_default().createElement("label", null, /* @__PURE__ */ external_react_default().createElement( - "input", - Radio_spreadProps(Radio_spreadValues(Radio_spreadValues({}, input), rest), { - type: "radio", - disabled: readOnly || disabled - }) - ), label), - /* @__PURE__ */ external_react_default().createElement("p", { className: "tyk-form-control__help-block" }, note) - ); - } -} -Radio_publicField(Radio, "propTypes", { - /** Used to disable the element */ - disabled: (external_prop_types_default()).bool, - /** Readonly prop behaves the same as disabled on radio elements */ - readOnly: (external_prop_types_default()).bool, - /** Align radio with in same line with other elements */ - inline: (external_prop_types_default()).bool, - /** Set a theme for radio */ - theme: (external_prop_types_default()).string, - input: external_prop_types_default().instanceOf(Object), - /** Adds label to the radio input */ - label: external_prop_types_default().oneOfType([ - external_prop_types_default().arrayOf((external_prop_types_default()).node), - (external_prop_types_default()).node, - (external_prop_types_default()).element, - (external_prop_types_default()).func, - (external_prop_types_default()).string - ]), - /** Set name for the radio input */ - name: (external_prop_types_default()).string, - /** If set to true removes margin by adding `no-margin` class */ - nospace: (external_prop_types_default()).bool, - /** Set initial value for the radio input */ - value: (external_prop_types_default()).string, - /** Add note at the bottom of the radio input */ - note: external_prop_types_default().oneOfType([ - (external_prop_types_default()).string, - (external_prop_types_default()).element, - (external_prop_types_default()).node - ]), - wrapperClassName: (external_prop_types_default()).string -}); - -;// CONCATENATED MODULE: ./src/form/components/Select/index.js -var Select_defProp = Object.defineProperty; -var Select_defProps = Object.defineProperties; -var Select_getOwnPropDescs = Object.getOwnPropertyDescriptors; -var Select_getOwnPropSymbols = Object.getOwnPropertySymbols; -var Select_hasOwnProp = Object.prototype.hasOwnProperty; -var Select_propIsEnum = Object.prototype.propertyIsEnumerable; -var Select_defNormalProp = (obj, key, value) => key in obj ? Select_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var Select_spreadValues = (a, b) => { - for (var prop in b || (b = {})) - if (Select_hasOwnProp.call(b, prop)) - Select_defNormalProp(a, prop, b[prop]); - if (Select_getOwnPropSymbols) - for (var prop of Select_getOwnPropSymbols(b)) { - if (Select_propIsEnum.call(b, prop)) - Select_defNormalProp(a, prop, b[prop]); - } - return a; -}; -var Select_spreadProps = (a, b) => Select_defProps(a, Select_getOwnPropDescs(b)); -var Select_objRest = (source, exclude) => { - var target = {}; - for (var prop in source) - if (Select_hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) - target[prop] = source[prop]; - if (source != null && Select_getOwnPropSymbols) - for (var prop of Select_getOwnPropSymbols(source)) { - if (exclude.indexOf(prop) < 0 && Select_propIsEnum.call(source, prop)) - target[prop] = source[prop]; - } - return target; -}; -var Select_publicField = (obj, key, value) => { - Select_defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); - return value; -}; - - -class Select extends external_react_namespaceObject.Component { - constructor(props) { - super(props); - const { - value - } = this.props; - this.state = { - initValue: value, - stateValue: value - }; - this.handleOnChange = this.handleOnChange.bind(this); - this.handleOnBlur = this.handleOnBlur.bind(this); - } - componentDidUpdate(prevProps) { - const { - isfield, - value, - onChange - } = this.props; - if (!isfield && prevProps.value !== value) { - this.setState({ - stateValue: value - }, () => { - if (onChange) { - onChange(value); - } - }); - } - } - getSelectComponent() { - const _a = this.props, { - isfield, - options, - onChange, - onBlur, - value - } = _a, rest = Select_objRest(_a, [ - "isfield", - "options", - "onChange", - "onBlur", - "value" - ]); - const { - stateValue - } = this.state; - let selectValue = ""; - if (isfield && value) { - selectValue = value; - } else if (stateValue) { - selectValue = stateValue; - } - return /* @__PURE__ */ external_react_default().createElement( - "select", - Select_spreadProps(Select_spreadValues({ - className: "tyk-form-control tyk-select" - }, rest), { - onChange: this.handleOnChange, - onBlur: this.handleOnBlur, - value: selectValue ? selectValue.id : "" - }), - options.map((option) => /* @__PURE__ */ external_react_default().createElement("option", { key: option.id, value: option.id }, option.name)) - ); - } - getSelectError() { - const { error } = this.props; - return error && error !== "true" && error !== "false" ? /* @__PURE__ */ external_react_default().createElement( - "p", - { - className: "tyk-form-control__error-message" - }, - error - ) : null; - } - getCssClasses() { - const { - error, - labelwidth, - theme, - wrapperClassName = "" - } = this.props; - const cssClasses = [wrapperClassName, "tyk-form-group"]; - const themes = theme ? theme.split(" ") : []; - if (themes.length) { - themes.forEach((iTheme) => { - cssClasses.push(`tyk-form-group--${iTheme}`); - }); - } - if (labelwidth) { - cssClasses.push("tyk-form-group--label-has-width"); - } - if (error) { - cssClasses.push("has-error"); - } - return cssClasses.join(" "); - } - getLabelStyles() { - const { labelwidth } = this.props; - const styles = {}; - if (labelwidth) { - styles.flexBasis = labelwidth; - } - return styles; - } - getNonLabelWidth() { - const { labelwidth } = this.props; - const styles = {}; - if (labelwidth) { - styles.flexBasis = `calc(100% - ${labelwidth} - 20px)`; - } - return styles; - } - handleOnBlur() { - const { value, onBlur } = this.props; - if (onBlur) { - onBlur(value); - } - } - handleOnChange(e) { - const { - onChange, - isfield, - options - } = this.props; - let selectedValue = null; - selectedValue = options.filter((option) => option.id === e.target.value); - [selectedValue] = selectedValue; - if (!isfield) { - this.setState({ - stateValue: selectedValue - }, () => { - onChange(selectedValue.id ? selectedValue : null); - }); - } else { - onChange(selectedValue.id ? selectedValue : null); - } - } - reset() { - const { initValue } = this.state; - this.setState({ - stateValue: initValue - }); - } - render() { - const { - label, - id, - note, - readOnly, - value - } = this.props; - return /* @__PURE__ */ external_react_default().createElement(external_react_namespaceObject.Fragment, null, /* @__PURE__ */ external_react_default().createElement("div", { className: this.getCssClasses() }, label ? /* @__PURE__ */ external_react_default().createElement("label", { htmlFor: id, style: this.getLabelStyles() }, label) : null, !readOnly && /* @__PURE__ */ external_react_default().createElement( - "div", - { - className: "tyk-form-control__wrapper", - style: this.getNonLabelWidth() - }, - this.getSelectComponent(), - note ? /* @__PURE__ */ external_react_default().createElement("p", { className: "tyk-form-control__help-block" }, note) : null, - this.getSelectError() - ), readOnly && /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-form-control--readonly" }, value || "-"))); - } -} -Select_publicField(Select, "propTypes", { - disabled: (external_prop_types_default()).bool, - readOnly: (external_prop_types_default()).bool, - id: (external_prop_types_default()).string, - isfield: (external_prop_types_default()).bool, - error: external_prop_types_default().oneOfType([ - (external_prop_types_default()).string, - (external_prop_types_default()).bool - ]), - options: external_prop_types_default().instanceOf(Array), - label: external_prop_types_default().oneOfType([ - external_prop_types_default().arrayOf((external_prop_types_default()).node), - (external_prop_types_default()).node, - (external_prop_types_default()).element, - (external_prop_types_default()).func, - (external_prop_types_default()).string - ]), - labelwidth: (external_prop_types_default()).string, - name: (external_prop_types_default()).string, - note: (external_prop_types_default()).string, - onBlur: (external_prop_types_default()).func, - onChange: (external_prop_types_default()).func, - placeholder: (external_prop_types_default()).string, - theme: (external_prop_types_default()).string, - value: external_prop_types_default().oneOfType([ - (external_prop_types_default()).string, - (external_prop_types_default()).object - ]), - wrapperClassName: (external_prop_types_default()).string -}); - -;// CONCATENATED MODULE: ./src/form/components/SelectableList/index.js -var SelectableList_defProp = Object.defineProperty; -var SelectableList_defProps = Object.defineProperties; -var SelectableList_getOwnPropDescs = Object.getOwnPropertyDescriptors; -var SelectableList_getOwnPropSymbols = Object.getOwnPropertySymbols; -var SelectableList_hasOwnProp = Object.prototype.hasOwnProperty; -var SelectableList_propIsEnum = Object.prototype.propertyIsEnumerable; -var SelectableList_defNormalProp = (obj, key, value) => key in obj ? SelectableList_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var SelectableList_spreadValues = (a, b) => { - for (var prop in b || (b = {})) - if (SelectableList_hasOwnProp.call(b, prop)) - SelectableList_defNormalProp(a, prop, b[prop]); - if (SelectableList_getOwnPropSymbols) - for (var prop of SelectableList_getOwnPropSymbols(b)) { - if (SelectableList_propIsEnum.call(b, prop)) - SelectableList_defNormalProp(a, prop, b[prop]); - } - return a; -}; -var SelectableList_spreadProps = (a, b) => SelectableList_defProps(a, SelectableList_getOwnPropDescs(b)); - - - - - -function SelectableList(props) { - const { - checkboxalticon, - items, - itemTemplate, - value, - noItemsMessage = "No items in the list", - onChange, - theme, - primaryKey, - wrapperClassName = "" - } = props; - const handleOnSelect = (event) => { - const newSelectedItems = structuredClone(value); - const elemPosition = newSelectedItems.findIndex( - (id) => JSON.stringify(id) === JSON.stringify( - Array.isArray(id) ? event.target.value.split(",") : event.target.value - ) - ); - if (event.target.checked && elemPosition === -1) { - const tempValue = event.target.value.split(","); - const finalValue = tempValue.length > 1 ? tempValue : event.target.value; - newSelectedItems.push(finalValue); - } else if (!event.target.checked && elemPosition > -1) { - newSelectedItems.splice(elemPosition, 1); - } - if (onChange) { - onChange(newSelectedItems); - } - }; - const getListItemCssClassName = (isActive) => { - const cssClasses = []; - if (checkboxalticon) { - cssClasses.push("tyk-selectable-list__item--with-icon"); - } - if (isActive) { - cssClasses.push("tyk-selectable-list__item--active"); - } - return cssClasses.join(" "); - }; - const isChecked = (inputValue, itemValue) => Boolean( - inputValue.find((tvalue) => JSON.stringify(itemValue) === JSON.stringify(tvalue)) - ); - return /* @__PURE__ */ external_react_default().createElement(components_List, SelectableList_spreadProps(SelectableList_spreadValues({}, props), { theme: theme || "default", className: `tyk-selectable-list ${wrapperClassName}` }), !items.length ? /* @__PURE__ */ external_react_default().createElement("li", { className: "tyk-selectable-list__no-items-message" }, /* @__PURE__ */ external_react_default().createElement(components_Message, { theme: "info" }, noItemsMessage)) : items.map((item, index) => /* @__PURE__ */ external_react_default().createElement( - components_List.Item, - { - key: index, - className: getListItemCssClassName(value.includes(item[primaryKey])) - }, - /* @__PURE__ */ external_react_default().createElement("label", null, /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-selectable-list__item" }, itemTemplate ? itemTemplate(item) : item.name), /* @__PURE__ */ external_react_default().createElement( - "input", - { - type: "checkbox", - checked: isChecked(value, item[primaryKey]), - onChange: handleOnSelect.bind(item), - value: item[primaryKey] - } - ), checkboxalticon ? /* @__PURE__ */ external_react_default().createElement(components_Icon, { type: checkboxalticon }) : null) - ))); -} -SelectableList.propTypes = { - items: external_prop_types_default().instanceOf(Array), - itemTemplate: external_prop_types_default().oneOfType([ - (external_prop_types_default()).node, - (external_prop_types_default()).element, - (external_prop_types_default()).string, - (external_prop_types_default()).func - ]), - value: external_prop_types_default().instanceOf(Array), - onChange: (external_prop_types_default()).func, - primaryKey: (external_prop_types_default()).string, - noItemsMessage: (external_prop_types_default()).string, - checkboxalticon: external_prop_types_default().oneOfType([ - (external_prop_types_default()).node, - (external_prop_types_default()).element, - (external_prop_types_default()).string - ]), - theme: (external_prop_types_default()).string, - wrapperClassName: (external_prop_types_default()).string -}; -SelectableList.defaultProps = { - items: [], - primaryKey: "id", - value: [] -}; -/* harmony default export */ const components_SelectableList = (SelectableList); - -;// CONCATENATED MODULE: ./src/form/components/Textarea/index.js -var Textarea_defProp = Object.defineProperty; -var Textarea_getOwnPropSymbols = Object.getOwnPropertySymbols; -var Textarea_hasOwnProp = Object.prototype.hasOwnProperty; -var Textarea_propIsEnum = Object.prototype.propertyIsEnumerable; -var Textarea_defNormalProp = (obj, key, value) => key in obj ? Textarea_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var Textarea_spreadValues = (a, b) => { - for (var prop in b || (b = {})) - if (Textarea_hasOwnProp.call(b, prop)) - Textarea_defNormalProp(a, prop, b[prop]); - if (Textarea_getOwnPropSymbols) - for (var prop of Textarea_getOwnPropSymbols(b)) { - if (Textarea_propIsEnum.call(b, prop)) - Textarea_defNormalProp(a, prop, b[prop]); - } - return a; -}; -var Textarea_objRest = (source, exclude) => { - var target = {}; - for (var prop in source) - if (Textarea_hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) - target[prop] = source[prop]; - if (source != null && Textarea_getOwnPropSymbols) - for (var prop of Textarea_getOwnPropSymbols(source)) { - if (exclude.indexOf(prop) < 0 && Textarea_propIsEnum.call(source, prop)) - target[prop] = source[prop]; - } - return target; -}; - - -function Textarea(_a) { - var _b = _a, { - id, - input, - label, - note, - error, - theme, - labelwidth, - value, - readOnly, - wrapperClassName - } = _b, rest = Textarea_objRest(_b, [ - "id", - "input", - "label", - "note", - "error", - "theme", - "labelwidth", - "value", - "readOnly", - "wrapperClassName" - ]); - const classes = [ - "tyk-form-group", - wrapperClassName, - ...theme ? theme.split(" ").map((t) => `tyk-form-group--${t}`) : [], - labelwidth && "tyk-form-group--label-has-width", - error && "has-error" - ].filter(Boolean).join(" "); - const getLabelStyles = () => { - if (labelwidth) - return { flexBasis: labelwidth }; - return {}; - }; - const getNonLabelWidth = () => { - if (labelwidth) - return { flexBasis: `calc(100% - ${labelwidth} - 20px)` }; - return {}; - }; - function getTextareaError() { - return error && error !== "true" && error !== "false" ? /* @__PURE__ */ external_react_default().createElement("p", { className: "tyk-form-control__error-message" }, error) : null; - } - return /* @__PURE__ */ external_react_default().createElement("div", { className: classes }, label ? /* @__PURE__ */ external_react_default().createElement("label", { htmlFor: id, style: getLabelStyles() }, label) : null, !readOnly && /* @__PURE__ */ external_react_default().createElement( - "div", - { - className: "tyk-form-control__wrapper", - style: getNonLabelWidth() - }, - /* @__PURE__ */ external_react_default().createElement( - "textarea", - Textarea_spreadValues(Textarea_spreadValues({ - className: "tyk-form-control" - }, rest), input), - value - ), - note ? /* @__PURE__ */ external_react_default().createElement("p", { className: "tyk-form-control__help-block" }, note) : null, - getTextareaError() - ), readOnly && /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-form-control--readonly" }, value || "-")); -} -Textarea.propTypes = { - /** Disable the component */ - disabled: (external_prop_types_default()).bool, - /** Displays only the text value of the component, or "-" if no value is set */ - readOnly: (external_prop_types_default()).bool, - input: external_prop_types_default().instanceOf(Object), - /** Set an error message for the component and the component is rendered in the error state */ - error: (external_prop_types_default()).string, - /** Adds a label to the component */ - label: external_prop_types_default().oneOfType([ - external_prop_types_default().arrayOf((external_prop_types_default()).node), - (external_prop_types_default()).node, - (external_prop_types_default()).element, - (external_prop_types_default()).func, - (external_prop_types_default()).string - ]), - /** Sets the width of the label */ - labelwidth: (external_prop_types_default()).string, - /** Set a name for the component */ - name: (external_prop_types_default()).string, - /** Adds additional information under the component */ - note: (external_prop_types_default()).string, - /** Callback function executed on value change */ - onChange: (external_prop_types_default()).func, - id: (external_prop_types_default()).string, - /** Set a theme for the component */ - theme: (external_prop_types_default()).string, - /** Set the value of the component */ - value: (external_prop_types_default()).string, - /** CSS classes added to the wrapper of the component */ - wrapperClassName: (external_prop_types_default()).string -}; -/* harmony default export */ const components_Textarea = (Textarea); - -;// CONCATENATED MODULE: ./src/form/components/Toggle/js/ToggleContext.js - -const ToggleContext = (0,external_react_namespaceObject.createContext)(); -/* harmony default export */ const js_ToggleContext = (ToggleContext); - -;// CONCATENATED MODULE: ./src/form/components/Toggle/js/ToggleItem.js - - -class ToggleItem extends external_react_namespaceObject.Component { - static getNotchCssClasses(context) { - return ["tyk-toggle__item-notch", `tyk-toggle__item-notch--${context.type}`].join(" "); - } - constructor(props) { - super(props); - this.itemRef = (0,external_react_namespaceObject.createRef)(); - } - componentDidMount() { - const { context, value } = this.props; - if (context.value === value) { - context.saveSelectedRef(this.itemRef); - } - } - componentDidUpdate(prevProps) { - const { context, value } = this.props; - if (prevProps.context.value !== context.value && context.value === value) { - context.saveSelectedRef(this.itemRef); - } - } - onChange(event) { - const { context, value } = this.props; - const { disabled, readOnly } = context; - if (disabled || readOnly) { - return; - } - context.onItemSelected(context.type === "single" ? !context.value : value, event); - } - render() { - const { - context, - label, - name, - value - } = this.props; - return /* @__PURE__ */ external_react_default().createElement("li", { className: `tyk-toggle__item ${context.value && (context.type === "single" || context.value === value) ? "tyk-toggle__item--active" : ""}`, ref: this.itemRef }, /* @__PURE__ */ external_react_default().createElement("label", null, /* @__PURE__ */ external_react_default().createElement( - "input", - { - type: context.type === "single" ? "checkbox" : "radio", - name, - checked: context.value === value, - onChange: this.onChange.bind(this), - value - } - ), label ? /* @__PURE__ */ external_react_default().createElement("span", null, label) : /* @__PURE__ */ external_react_default().createElement("span", { className: "empty-toggle" }, " "), context.type === "single" ? /* @__PURE__ */ external_react_default().createElement("span", { className: ToggleItem.getNotchCssClasses(context) }) : null)); - } -} -ToggleItem.propTypes = { - context: external_prop_types_default().instanceOf(Object), - label: external_prop_types_default().oneOfType([ - external_prop_types_default().arrayOf((external_prop_types_default()).node), - (external_prop_types_default()).node, - (external_prop_types_default()).element, - (external_prop_types_default()).func, - (external_prop_types_default()).string - ]), - name: (external_prop_types_default()).string, - value: (external_prop_types_default()).string -}; -/* harmony default export */ const js_ToggleItem = (ToggleItem); - -;// CONCATENATED MODULE: ./src/form/components/Toggle/js/ToggleItemWrapper.js -var ToggleItemWrapper_defProp = Object.defineProperty; -var ToggleItemWrapper_defProps = Object.defineProperties; -var ToggleItemWrapper_getOwnPropDescs = Object.getOwnPropertyDescriptors; -var ToggleItemWrapper_getOwnPropSymbols = Object.getOwnPropertySymbols; -var ToggleItemWrapper_hasOwnProp = Object.prototype.hasOwnProperty; -var ToggleItemWrapper_propIsEnum = Object.prototype.propertyIsEnumerable; -var ToggleItemWrapper_defNormalProp = (obj, key, value) => key in obj ? ToggleItemWrapper_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var ToggleItemWrapper_spreadValues = (a, b) => { - for (var prop in b || (b = {})) - if (ToggleItemWrapper_hasOwnProp.call(b, prop)) - ToggleItemWrapper_defNormalProp(a, prop, b[prop]); - if (ToggleItemWrapper_getOwnPropSymbols) - for (var prop of ToggleItemWrapper_getOwnPropSymbols(b)) { - if (ToggleItemWrapper_propIsEnum.call(b, prop)) - ToggleItemWrapper_defNormalProp(a, prop, b[prop]); - } - return a; -}; -var ToggleItemWrapper_spreadProps = (a, b) => ToggleItemWrapper_defProps(a, ToggleItemWrapper_getOwnPropDescs(b)); - - - - -const ToggleItemWrapper = external_react_default().forwardRef((props, ref) => /* @__PURE__ */ external_react_default().createElement(js_ToggleContext.Consumer, null, (context) => /* @__PURE__ */ external_react_default().createElement(js_ToggleItem, ToggleItemWrapper_spreadProps(ToggleItemWrapper_spreadValues({}, props), { context, ref }), props.children))); -ToggleItemWrapper.propTypes = { - children: external_prop_types_default().oneOfType([ - external_prop_types_default().arrayOf((external_prop_types_default()).node), - (external_prop_types_default()).node, - (external_prop_types_default()).element, - (external_prop_types_default()).string - ]) -}; -/* harmony default export */ const js_ToggleItemWrapper = (ToggleItemWrapper); - -;// CONCATENATED MODULE: ./src/form/components/Toggle/index.js - - - - -function Toggle({ - className, - disabled, - readOnly, - size, - theme, - direction, - onDark, - wrapperClassName = "", - onChange, - labelwidth, - label, - separated, - children, - type, - value, - error -}) { - const [selectedRef, setSelectedRef] = (0,external_react_namespaceObject.useState)(null); - const notchRef = (0,external_react_namespaceObject.useRef)(); - const toggleRef = (0,external_react_namespaceObject.useRef)(); - const classes = [ - wrapperClassName, - className, - "tyk-toggle", - `tyk-toggle--disabled-${readOnly || disabled}`, - `tyk-toggle--${size || "md"}`, - `tyk-toggle--${theme}`, - `tyk-toggle--${direction}`, - onDark && "tyk-toggle--on-dark" - ].filter(Boolean).join(" "); - const onItemSelected = (0,external_react_namespaceObject.useCallback)((itemValue, event) => { - if (!onChange) - return; - onChange(itemValue, event); - }, [onChange]); - const getLabelStyles = (0,external_react_namespaceObject.useCallback)(() => { - if (labelwidth) - return { flexBasis: labelwidth }; - return {}; - }, [labelwidth]); - const positionNotch = (0,external_react_namespaceObject.useCallback)(() => { - if (!selectedRef || separated) { - return {}; - } - const selectedWidth = selectedRef.current.offsetWidth; - const selectedOffset = selectedRef.current.getBoundingClientRect().left; - const toggleOffset = toggleRef.current.getBoundingClientRect().left; - const left = selectedOffset - toggleOffset; - return { - left: `${left + 4}px`, - width: `${selectedWidth - 8}px` - }; - }, [selectedRef, separated]); - const contextValue = (0,external_react_namespaceObject.useMemo)(() => ({ - disabled, - readOnly, - onItemSelected, - saveSelectedRef: setSelectedRef, - separated, - type, - value - }), [disabled, readOnly, onItemSelected, separated, type, value]); - return /* @__PURE__ */ external_react_default().createElement((external_react_default()).Fragment, null, /* @__PURE__ */ external_react_default().createElement("div", { className: classes, ref: toggleRef }, /* @__PURE__ */ external_react_default().createElement( - js_ToggleContext.Provider, - { - value: contextValue - }, - label ? /* @__PURE__ */ external_react_default().createElement("label", { className: "tyk-toggle__label", style: getLabelStyles() }, label) : null, - /* @__PURE__ */ external_react_default().createElement("ul", { className: `tyk-toggle__list tyk-toggle__list--${type} ${error && "tyk-toggle__list--has-error"} tyk-toggle__list--${separated ? "separated" : "not-separated"}` }, children, type === "multiple" && !separated ? /* @__PURE__ */ external_react_default().createElement("li", { className: "tyk-toggle__notch", ref: notchRef, style: positionNotch() }) : null) - )), error && /* @__PURE__ */ external_react_default().createElement("p", { className: "tyk-form-control__error-message" }, error)); -} -Toggle.propTypes = { - children: external_prop_types_default().oneOfType([ - external_prop_types_default().arrayOf((external_prop_types_default()).node), - (external_prop_types_default()).node, - (external_prop_types_default()).element, - (external_prop_types_default()).string - ]), - className: (external_prop_types_default()).string, - disabled: (external_prop_types_default()).bool, - readOnly: (external_prop_types_default()).bool, - error: (external_prop_types_default()).string, - onChange: (external_prop_types_default()).func, - label: external_prop_types_default().oneOfType([ - external_prop_types_default().arrayOf((external_prop_types_default()).node), - (external_prop_types_default()).node, - (external_prop_types_default()).element, - (external_prop_types_default()).func, - (external_prop_types_default()).string - ]), - labelwidth: (external_prop_types_default()).string, - theme: (external_prop_types_default()).string, - type: (external_prop_types_default()).string, - // single || multiple - size: (external_prop_types_default()).string, - separated: (external_prop_types_default()).bool, - direction: (external_prop_types_default()).string, - value: external_prop_types_default().oneOfType([ - (external_prop_types_default()).bool, - (external_prop_types_default()).string - ]), - onDark: (external_prop_types_default()).bool, - wrapperClassName: (external_prop_types_default()).string -}; -Toggle.defaultProps = { - separated: false, - theme: "primary", - type: "single", - direction: "row" -}; -Toggle.Item = js_ToggleItemWrapper; -/* harmony default export */ const components_Toggle = (Toggle); - -;// CONCATENATED MODULE: ./src/form/components/StringBuilder/js/service.js -const stringToTokenString = (value, options) => { - let tempStr = value; - options.forEach((option) => { - tempStr = tempStr.replaceAll(option.id, `__TOKEN__${option.id}__TOKEN__`); - }); - return tempStr; -}; -const setCursorPos = (ref, pos) => { - setTimeout(() => { - ref.current.setSelectionRange(pos, pos); - }, 20); -}; - -;// CONCATENATED MODULE: ./src/form/components/StringBuilder/js/string-input.js - - - -function StringInput({ - setShowOptions, - tokenValue, - disabled, - placeholder, - tokens, - dropdownTriggerKey, - setStringBuilderHeight, - stringBuilderHeight, - setTokenString, - tokenString, - showOptions, - options, - setTokenValue, - inputRef, - setInputInFocus, - invalidTokenRegex, - name, - contextMaxLength -}) { - const [isPasteEvent, setIsPasteEvent] = (0,external_react_namespaceObject.useState)(false); - (0,external_react_namespaceObject.useEffect)(() => { - if (tokenValue) { - const tokenLen = tokenValue.length > 50 ? tokenValue.length / 5 : 0; - setStringBuilderHeight(inputRef.current.scrollHeight + tokenLen); - } - }, []); - const handleDelete = (e) => { - const { selectionEnd } = e.target; - if (selectionEnd === tokenValue.length) { - return; - } - const stringBeforeCursor = tokenValue.substring(0, selectionEnd); - const stringAfterCursor = tokenValue.slice(selectionEnd); - const tokenStringForStringAfterCursor = stringToTokenString( - stringAfterCursor, - options - ); - if (tokenStringForStringAfterCursor.startsWith("__TOKEN__")) { - const splitTokens = tokenStringForStringAfterCursor.split(/__TOKEN__(.*?)__TOKEN__/g).filter((t) => t !== ""); - const firstToken = splitTokens[0]; - const newTokenValue2 = `${stringBeforeCursor}${stringAfterCursor.substr(firstToken.length)}`; - const newTokenizedString2 = stringToTokenString(newTokenValue2, options); - setTokenString(newTokenizedString2); - setCursorPos(inputRef, selectionEnd); - return; - } - const newTokenValue = `${stringBeforeCursor}${stringAfterCursor.substr(1)}`; - const newTokenizedString = stringToTokenString(newTokenValue, options); - setTokenString(newTokenizedString); - setCursorPos(inputRef, selectionEnd); - }; - const handleBackSpace = (e) => { - const { selectionEnd } = e.target; - if (selectionEnd === tokenValue.length) { - const lastToken = tokens[(tokens == null ? void 0 : tokens.length) - 2]; - const lastCharsInString = tokenValue.slice(-(lastToken == null ? void 0 : lastToken.length)); - if (lastToken === lastCharsInString) { - e.preventDefault(); - setTokenString( - tokenString.slice(0, -`__TOKEN__${lastCharsInString}__TOKEN__`.length) - ); - return; - } - if (tokenValue.endsWith(" ")) { - const invalidToken2 = tokenValue.match(invalidTokenRegex); - const newTokenValue2 = tokenValue.slice(0, -` ${invalidToken2[invalidToken2.length - 1]} `.length); - const newTokenStr = stringToTokenString(newTokenValue2, options); - setTokenString(newTokenStr); - return; - } - setTokenString(tokenString.slice(0, -1)); - return; - } - const stringBeforeCursor = tokenValue.substring(0, selectionEnd); - const stringAfterCursor = tokenValue.slice(selectionEnd); - const tokenStringForStringBeforeCursor = stringToTokenString(stringBeforeCursor, options); - if (tokenStringForStringBeforeCursor.endsWith("__TOKEN__")) { - e.preventDefault(); - const splitTokens = tokenStringForStringBeforeCursor.split(/__TOKEN__(.*?)__TOKEN__/g); - const lastToken = splitTokens[splitTokens.length - 2]; - const newTokenValue2 = `${stringBeforeCursor.slice(0, -lastToken.length)}${stringAfterCursor}`; - const newTokenizedString2 = stringToTokenString(newTokenValue2, options); - setTokenString(newTokenizedString2); - setCursorPos(inputRef, selectionEnd - lastToken.length); - return; - } - const invalidToken = stringBeforeCursor.match(invalidTokenRegex); - if ((invalidToken == null ? void 0 : invalidToken[0]) && invalidToken.length === 1) { - e.preventDefault(); - const newTokenValue2 = `${stringBeforeCursor.replaceAll(invalidTokenRegex, "").trim()}${stringAfterCursor}`; - const newTokenizedString2 = stringToTokenString(newTokenValue2, options); - setTokenString(newTokenizedString2); - setCursorPos(inputRef, selectionEnd - ` ${invalidToken[0]} `.length); - return; - } - const newTokenValue = `${stringBeforeCursor.slice( - 0, - -1 - )}${stringAfterCursor}`; - const newTokenizedString = stringToTokenString(newTokenValue, options); - setTokenString(newTokenizedString); - setCursorPos(inputRef, selectionEnd - 1); - }; - const addCharacterToTokenString = (text, selectionStart) => { - if (selectionStart - 1 === tokenValue.length) { - setTokenString(`${tokenString}${text}`); - return; - } - const newTokenValue = tokenValue.slice(0, selectionStart - 1) + text + tokenValue.slice(selectionStart - 1); - const newTokenizedString = stringToTokenString(newTokenValue, options); - setTokenString(newTokenizedString); - }; - const handleTextSelection = (e, selectedText, key) => { - const allowedKeys = ["Delete", "Backspace"]; - if (key.length > 1 && allowedKeys.indexOf(key) === -1) { - return; - } - const { selectionEnd, selectionStart } = e.target; - const substitute = key.length > 1 ? "" : key; - if (selectedText.length > 1) { - const newStr = tokenValue.substring(0, selectionStart) + substitute + tokenValue.substring(selectionEnd); - const newTokenStr = stringToTokenString(newStr, options); - setTokenString(newTokenStr); - setCursorPos(inputRef, substitute.length ? selectionStart + 1 : selectionStart); - } - }; - const handleKeyDown = (e) => { - const { key } = e; - const { selectionEnd, selectionStart, value } = e.target; - const selectedText = value.substring(selectionStart, selectionEnd); - if (key === dropdownTriggerKey && !showOptions) { - e.preventDefault(); - setShowOptions(true); - return; - } - if (key === "Enter") { - e.preventDefault(); - return; - } - if (key === "Backspace") { - e.preventDefault(); - handleBackSpace(e); - } - if (key === "Delete") { - e.preventDefault(); - handleDelete(e); - } - if (e.metaKey && key === "x") { - setTokenString(""); - } - if (selectedText) { - e.preventDefault(); - handleTextSelection(e, selectedText, key); - } - }; - const handleOnChange = (e) => { - const { target } = e; - const { selectionStart, value } = target; - if (showOptions) { - setShowOptions(false); - } - setTokenValue(value); - if (value && !isPasteEvent) { - const text = value.charAt(selectionStart - 1); - addCharacterToTokenString(text, selectionStart); - } - setIsPasteEvent(false); - }; - const handlePasteEvent = (e) => { - e.preventDefault(); - const { clipboardData } = e; - const { selectionStart, selectionEnd } = e.target; - setIsPasteEvent(true); - let pasteString = clipboardData.getData("text/plain"); - if (selectionStart !== selectionEnd) { - pasteString = tokenValue.slice(0, selectionStart) + pasteString + tokenValue.slice(selectionEnd, tokenValue.length); - const newTokenString2 = stringToTokenString(pasteString, options); - setTokenString(newTokenString2); - return; - } - const newTokenString = stringToTokenString(pasteString, options); - addCharacterToTokenString(newTokenString, selectionStart); - }; - const handleOnFocus = () => { - setInputInFocus(true); - }; - return /* @__PURE__ */ external_react_default().createElement( - "textarea", - { - spellCheck: false, - disabled, - className: "string-builder__input", - value: tokenValue, - onChange: (e) => handleOnChange(e), - onKeyDown: (e) => handleKeyDown(e), - placeholder, - name, - ref: inputRef, - style: { height: `${stringBuilderHeight}px` }, - maxLength: contextMaxLength, - onPaste: handlePasteEvent, - onFocus: handleOnFocus, - onBlur: () => setInputInFocus(false) - } - ); -} -StringInput.propTypes = { - setShowOptions: (external_prop_types_default()).func, - tokenValue: (external_prop_types_default()).string, - disabled: (external_prop_types_default()).bool, - placeholder: (external_prop_types_default()).string, - tokenString: (external_prop_types_default()).string, - stringBuilderHeight: (external_prop_types_default()).number, - dropdownTriggerKey: (external_prop_types_default()).string, - setStringBuilderHeight: (external_prop_types_default()).func, - setTokenString: (external_prop_types_default()).func, - setTokenValue: (external_prop_types_default()).func, - setInputInFocus: (external_prop_types_default()).func, - showOptions: (external_prop_types_default()).bool, - tokens: external_prop_types_default().arrayOf((external_prop_types_default()).string), - options: external_prop_types_default().arrayOf( - external_prop_types_default().shape({ - id: (external_prop_types_default()).string.isRequired, - name: (external_prop_types_default()).string.isRequired, - className: (external_prop_types_default()).string, - desc: (external_prop_types_default()).string - }) - ), - inputRef: external_prop_types_default().instanceOf(Object), - invalidTokenRegex: external_prop_types_default().instanceOf(RegExp), - name: (external_prop_types_default()).string, - contextMaxLength: (external_prop_types_default()).number -}; - - -;// CONCATENATED MODULE: ./src/form/components/StringBuilder/js/invalid-token.js - - - - -const InvalidToken = (props) => { - const { token, findInvalidTokenSubstitute } = props; - return /* @__PURE__ */ external_react_default().createElement( - "span", - { - role: "main", - onClick: () => findInvalidTokenSubstitute(token), - onKeyDown: () => { - } - }, - /* @__PURE__ */ external_react_default().createElement(components_Tooltip, { render: "invalid token detected", position: "top" }, /* @__PURE__ */ external_react_default().createElement("span", { className: "invalid_token" }, `${token}`, /* @__PURE__ */ external_react_default().createElement(components_Icon, { type: "exclamation-circle" }))) - ); -}; -InvalidToken.propTypes = { - token: (external_prop_types_default()).string, - findInvalidTokenSubstitute: (external_prop_types_default()).func -}; -/* harmony default export */ const invalid_token = (InvalidToken); - -;// CONCATENATED MODULE: ./src/form/components/StringBuilder/js/tokenized-string.js - - - -const TokenizedString = (props) => { - const { - tokens, - options, - disabled, - invalidTokenRegex, - findInvalidTokenSubstitute - } = props; - const hasDuplicates = new Set(tokens).size !== tokens.length; - const allTokens = tokens && tokens.map((token) => { - if (options) { - const matchedOption = options.find((option) => option.id === token); - if (invalidTokenRegex && !matchedOption) { - const matchedTokens = token.replaceAll(" ", "").split(invalidTokenRegex); - if ((matchedTokens == null ? void 0 : matchedTokens.length) > 1) { - return /* @__PURE__ */ external_react_default().createElement("span", { key: `${token}${hasDuplicates && Math.random()}` }, matchedTokens.map((tkn) => { - if (tkn.match(invalidTokenRegex)) { - return /* @__PURE__ */ external_react_default().createElement( - invalid_token, - { - token: tkn, - findInvalidTokenSubstitute - } - ); - } - return /* @__PURE__ */ external_react_default().createElement("span", null, `${tkn} `); - })); - } - } - if (matchedOption) { - return /* @__PURE__ */ external_react_default().createElement( - "span", - { - key: `${token}${hasDuplicates && Math.random()}`, - className: `${matchedOption.className || "default-option-name"}` - }, - matchedOption.id - ); - } - } - return /* @__PURE__ */ external_react_default().createElement("span", { key: `${token}${hasDuplicates && Math.random()}` }, token); - }); - return /* @__PURE__ */ external_react_default().createElement( - "div", - { - className: `string-builder__styled ${disabled && "string-builder__disabled"}` - }, - allTokens - ); -}; -TokenizedString.propTypes = { - tokens: external_prop_types_default().arrayOf((external_prop_types_default()).string), - options: external_prop_types_default().arrayOf(external_prop_types_default().instanceOf(Object)), - disabled: (external_prop_types_default()).bool, - invalidTokenRegex: external_prop_types_default().instanceOf(RegExp), - findInvalidTokenSubstitute: (external_prop_types_default()).func -}; - -;// CONCATENATED MODULE: ./src/form/components/StringBuilder/js/options-list.js - - - -const OptionsList = ({ - options, - showOptions, - handleOptionSelection, - containerRef, - getThemeClasses, - setShowOptions, - allowSearch, - initialSearchValue -}) => { - const [filterValue, setFilterValue] = (0,external_react_namespaceObject.useState)(initialSearchValue); - const [filteredOptions, setFilteredOptions] = (0,external_react_namespaceObject.useState)(options); - (0,external_react_namespaceObject.useEffect)(() => { - setFilterValue(initialSearchValue); - }, [initialSearchValue]); - (0,external_react_namespaceObject.useEffect)(() => { - if (filterValue === "") { - setFilteredOptions(options); - return; - } - const newFilteredOptions = options.filter( - (option) => option.name.toLowerCase().includes(filterValue.toLowerCase()) - ); - setFilteredOptions(newFilteredOptions); - }, [filterValue]); - (0,external_react_namespaceObject.useEffect)(() => { - setFilteredOptions(options); - }, [options]); - if (!showOptions) { - return null; - } - return /* @__PURE__ */ external_react_default().createElement((external_react_default()).Fragment, null, /* @__PURE__ */ external_react_default().createElement( - components_FloatingContainer, - { - className: `string-builder-dropdown tyk-form-group ${getThemeClasses().join(" ")}`, - element: containerRef, - size: "matchElement", - displayAxis: "vertical" - }, - allowSearch && /* @__PURE__ */ external_react_default().createElement("div", { className: "string-builder-search" }, /* @__PURE__ */ external_react_default().createElement( - "input", - { - autoFocus: true, - className: "tyk-form-control", - value: filterValue, - placeholder: "Search parameter", - onChange: (e) => { - setFilterValue(e.target.value); - }, - onKeyDown: (e) => { - if (e.key === "Escape" || e.key === "ArrowUp" || e.key === "Enter") { - setShowOptions(false); - } - } - } - )), - /* @__PURE__ */ external_react_default().createElement("ul", { className: "string-builder-list" }, filteredOptions.map((option) => /* @__PURE__ */ external_react_default().createElement( - "li", - { - key: `${option.id}${Math.random()}`, - onMouseDown: () => handleOptionSelection(option) - }, - /* @__PURE__ */ external_react_default().createElement("span", { className: `url-builder__options_name ${option.className || "default-option-name"}` }, option.name), - option.desc && /* @__PURE__ */ external_react_default().createElement("span", { className: "url-builder__options_description" }, "\xA0 : \xA0", option.desc) - ))) - )); -}; -OptionsList.propTypes = { - options: external_prop_types_default().arrayOf(Object), - showOptions: (external_prop_types_default()).bool, - handleOptionSelection: (external_prop_types_default()).func, - getThemeClasses: (external_prop_types_default()).func, - setShowOptions: (external_prop_types_default()).func, - containerRef: external_prop_types_default().instanceOf(Object), - allowSearch: (external_prop_types_default()).bool, - initialSearchValue: (external_prop_types_default()).string -}; - -;// CONCATENATED MODULE: ./src/form/components/StringBuilder/js/string-builder-footer.js - - -const StringBuilderFooter = (props) => { - const { - note, - error, - inputInFocus, - stringBuilderHeight, - dropdownTriggerKey - } = props; - return /* @__PURE__ */ external_react_default().createElement( - "div", - { - className: "string-builder-footer", - style: { - marginTop: stringBuilderHeight ? `${stringBuilderHeight - 8}px` : "30px" - } - }, - inputInFocus && !error && /* @__PURE__ */ external_react_default().createElement("p", { className: "tyk-form-control__help-block" }, /* @__PURE__ */ external_react_default().createElement("span", null, "Enter", /* @__PURE__ */ external_react_default().createElement("span", { className: "string_builder_trigger" }, dropdownTriggerKey), "to add any parameter")), - note && /* @__PURE__ */ external_react_default().createElement("p", { className: "tyk-form-control__help-block" }, note), - error && error !== "true" && error !== "false" && /* @__PURE__ */ external_react_default().createElement("p", { className: "tyk-form-control__error-message" }, error) - ); -}; -StringBuilderFooter.propTypes = { - note: (external_prop_types_default()).string, - error: (external_prop_types_default()).string, - dropdownTriggerKey: (external_prop_types_default()).string, - inputInFocus: (external_prop_types_default()).bool, - stringBuilderHeight: (external_prop_types_default()).number -}; - -;// CONCATENATED MODULE: ./src/form/components/StringBuilder/index.js - - - - - - - - -function StringBuilder(props) { - const { - options, - onChange, - value, - theme, - error, - disabled, - readOnly, - note, - label, - labelwidth, - placeholder, - allowSearch, - dropdownTriggerKey, - invalidTokenRegex, - name, - wrapperClassName = "" - } = props; - const [tokenValue, setTokenValue] = (0,external_react_namespaceObject.useState)(value); - const [stringBuilderHeight, setStringBuilderHeight] = (0,external_react_namespaceObject.useState)(); - const [showOptions, setShowOptions] = (0,external_react_namespaceObject.useState)(false); - const [tokenString, setTokenString] = (0,external_react_namespaceObject.useState)(stringToTokenString(value, options)); - const [contextMaxLength, setContentMaxLength] = (0,external_react_namespaceObject.useState)( - tokenValue.length + 5 - ); - const [tokens, setTokens] = (0,external_react_namespaceObject.useState)([]); - const [prevTokenValue, setPrevTokenValue] = (0,external_react_namespaceObject.useState)(); - const [inputInFocus, setInputInFocus] = (0,external_react_namespaceObject.useState)(false); - const [initialSearchValue, setInitialSearchValue] = (0,external_react_namespaceObject.useState)(""); - const [selectedInvalidToken, setSelectedInvalidToken] = (0,external_react_namespaceObject.useState)(null); - const prevTokenString = hooks_usePrevious(tokenString); - const containerRef = (0,external_react_namespaceObject.useRef)(); - const inputRef = (0,external_react_namespaceObject.useRef)(); - (0,external_react_namespaceObject.useEffect)(() => { - if (onChange) { - onChange(tokenValue.replaceAll(" ", "")); - } - }, [tokenValue]); - (0,external_react_namespaceObject.useEffect)(() => { - const tempVal = invalidTokenRegex ? value.replaceAll(invalidTokenRegex, " $& ") : value; - setTokenValue(() => tempVal); - setTokenString(() => stringToTokenString(tempVal, options)); - }, [value]); - (0,external_react_namespaceObject.useEffect)(() => { - const splitTokens = tokenString.split(/__TOKEN__(.*?)__TOKEN__/g); - const splitTokensStr = splitTokens.join(""); - setTokens(() => splitTokens); - setTokenValue(() => splitTokensStr); - setPrevTokenValue(() => splitTokensStr); - }, [tokenString]); - (0,external_react_namespaceObject.useEffect)(() => { - if (contextMaxLength - 3 < tokenValue.length) { - const newHeight = inputRef.current.scrollHeight + 3; - setStringBuilderHeight(() => newHeight); - setContentMaxLength(() => contextMaxLength + 25); - } - }, [tokenString, tokenValue]); - const handleOptionSelection = (option) => { - let newInput = ""; - const { selectionStart } = inputRef.current; - if (prevTokenString && prevTokenString !== value && !selectedInvalidToken) { - newInput = prevTokenString + tokenValue.split(prevTokenValue)[1]; - } - let tokenizedString = ""; - if (selectionStart !== tokenValue.length && !selectedInvalidToken) { - const newTokenValue = tokenValue.slice(0, selectionStart) + option.id + tokenValue.slice(selectionStart); - tokenizedString = stringToTokenString(newTokenValue, options); - setCursorPos(inputRef, selectionStart + option.id.length); - } else { - tokenizedString = `${newInput || tokenValue}__TOKEN__${option.id}__TOKEN__`; - } - if (selectedInvalidToken) { - tokenizedString = tokenString.replace( - ` ${selectedInvalidToken} `, - `__TOKEN__${option.id}__TOKEN__` - ); - setSelectedInvalidToken(() => null); - setInitialSearchValue(() => ""); - } - setTokenString(() => tokenizedString); - setShowOptions(() => false); - setTimeout(() => { - inputRef.current.focus(); - }, 20); - }; - const getThemeClasses = () => { - const themes = theme ? theme.split(" ") : []; - return themes.map((iTheme) => `tyk-form-group--${iTheme}`); - }; - const getCssClasses = () => [ - "tyk-form-group", - ...getThemeClasses(), - error && "has-error", - disabled && "disabled" - ].filter(Boolean).join(" "); - const findInvalidTokenSubstitute = (invalidToken) => { - setSelectedInvalidToken(() => invalidToken); - setInitialSearchValue(() => invalidToken.replace(/[^a-zA-Z ]/g, "")); - setShowOptions(() => true); - }; - return /* @__PURE__ */ external_react_default().createElement("div", { className: `string-builder ${wrapperClassName}`, ref: containerRef }, /* @__PURE__ */ external_react_default().createElement("div", { className: getCssClasses() }, label && /* @__PURE__ */ external_react_default().createElement("label", { style: { flexBasis: labelwidth || "auto" } }, label), !readOnly && /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-form-control__wrapper" }, /* @__PURE__ */ external_react_default().createElement( - "div", - { - className: `tyk-form-control ${disabled && "string-builder__disabled"}`, - style: { height: `${stringBuilderHeight}px` } - }, - /* @__PURE__ */ external_react_default().createElement( - StringInput, - { - setInputInFocus, - setShowOptions, - tokenValue, - disabled, - placeholder, - allowSearch, - tokens, - dropdownTriggerKey, - setStringBuilderHeight, - stringBuilderHeight, - setTokenString, - tokenString, - showOptions, - options, - setTokenValue, - inputRef, - invalidTokenRegex, - name, - contextMaxLength, - setContentMaxLength - } - ), - /* @__PURE__ */ external_react_default().createElement( - TokenizedString, - { - tokens, - options, - disabled, - invalidTokenRegex, - findInvalidTokenSubstitute - } - ), - /* @__PURE__ */ external_react_default().createElement( - OptionsList, - { - showOptions, - options, - handleOptionSelection, - containerRef, - getThemeClasses, - setShowOptions, - allowSearch, - initialSearchValue - } - ), - /* @__PURE__ */ external_react_default().createElement( - StringBuilderFooter, - { - error, - note, - inputInFocus, - stringBuilderHeight, - dropdownTriggerKey - } - ) - )), readOnly && /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-form-control--readonly" }, value || "-"))); -} -StringBuilder.propTypes = { - /** Options to render in the list */ - options: external_prop_types_default().arrayOf( - external_prop_types_default().shape({ - /** id is the value that will be appended to the string on selection */ - id: (external_prop_types_default()).string.isRequired, - /** name of option (view) */ - name: (external_prop_types_default()).string.isRequired, - /** to style / highlight the token */ - className: (external_prop_types_default()).string, - /** description of option */ - desc: (external_prop_types_default()).string - }) - ), - /** Callback executed on change of string value */ - onChange: (external_prop_types_default()).func, - /** Initial value */ - value: (external_prop_types_default()).string, - /** Disable input */ - disabled: (external_prop_types_default()).bool, - /** Read Only prop removes the form element and displays just the value */ - readOnly: (external_prop_types_default()).bool, - /** Show error state (w/ or w/o message) */ - error: (external_prop_types_default()).string, - /** Component theme */ - theme: (external_prop_types_default()).string, - /** Footnote for component */ - note: (external_prop_types_default()).string, - /** Label for component */ - label: external_prop_types_default().oneOfType([ - external_prop_types_default().arrayOf((external_prop_types_default()).node), - (external_prop_types_default()).node, - (external_prop_types_default()).element, - (external_prop_types_default()).func, - (external_prop_types_default()).string - ]), - /** Label Width for component */ - labelwidth: (external_prop_types_default()).string, - /** Placeholder for component */ - placeholder: (external_prop_types_default()).string, - /** Key To trigger dropdown */ - dropdownTriggerKey: (external_prop_types_default()).string, - /** Regex to detect invalid tokens in the value */ - invalidTokenRegex: external_prop_types_default().instanceOf(RegExp), - /** Allow users to search from options */ - allowSearch: (external_prop_types_default()).bool, - name: (external_prop_types_default()).string, - wrapperClassName: (external_prop_types_default()).string -}; -StringBuilder.defaultProps = { - onChange: null, - value: "", - options: [], - theme: "default" -}; -/* harmony default export */ const components_StringBuilder = (StringBuilder); - -;// CONCATENATED MODULE: ./src/utils/config/config.js -const config = { - FORM_DEBOUNCE: 200 -}; -function setConfig(key, val) { - config[key] = val; -} -/* harmony default export */ const config_config = (config); - -;// CONCATENATED MODULE: ./src/utils/formik/index.js -var formik_defProp = Object.defineProperty; -var formik_defProps = Object.defineProperties; -var formik_getOwnPropDescs = Object.getOwnPropertyDescriptors; -var formik_getOwnPropSymbols = Object.getOwnPropertySymbols; -var formik_hasOwnProp = Object.prototype.hasOwnProperty; -var formik_propIsEnum = Object.prototype.propertyIsEnumerable; -var formik_defNormalProp = (obj, key, value) => key in obj ? formik_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var formik_spreadValues = (a, b) => { - for (var prop in b || (b = {})) - if (formik_hasOwnProp.call(b, prop)) - formik_defNormalProp(a, prop, b[prop]); - if (formik_getOwnPropSymbols) - for (var prop of formik_getOwnPropSymbols(b)) { - if (formik_propIsEnum.call(b, prop)) - formik_defNormalProp(a, prop, b[prop]); - } - return a; -}; -var formik_spreadProps = (a, b) => formik_defProps(a, formik_getOwnPropDescs(b)); -var formik_objRest = (source, exclude) => { - var target = {}; - for (var prop in source) - if (formik_hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) - target[prop] = source[prop]; - if (source != null && formik_getOwnPropSymbols) - for (var prop of formik_getOwnPropSymbols(source)) { - if (exclude.indexOf(prop) < 0 && formik_propIsEnum.call(source, prop)) - target[prop] = source[prop]; - } - return target; -}; - - -function getValueFromPath(obj, path) { - const indexes = path.split(/[\][.]/).filter(Boolean); - return indexes.reduce((acc, v) => acc ? acc[v] : acc, obj); -} -function formik_debounce(f, limit) { - let timeoutId; - return (...args) => { - clearTimeout(timeoutId); - timeoutId = setTimeout(f, limit, ...args); - }; -} -const wrapper = (Component, options) => (_a) => { - var _b = _a, { field, form } = _b, properties = formik_objRest(_b, ["field", "form"]); - var _a2; - const DEFAULT_DEBOUNCE_TIME_MS = typeof config_config.FORM_DEBOUNCE === "number" ? config_config.FORM_DEBOUNCE : 200; - const [myValue, setMyValue] = (0,external_react_namespaceObject.useState)(field.value); - const opts = formik_spreadValues({ - getOnChangeProps: () => ({}), - hasIsFieldProp: false - }, options); - const executeDebounced = (0,external_react_namespaceObject.useCallback)((() => { - const fn = (f) => f(); - if (properties.debounce === false || config_config.FORM_DEBOUNCE === false && !properties.debounce) { - return fn; - } - const timeout = typeof properties.debounce === "number" ? properties.debounce : DEFAULT_DEBOUNCE_TIME_MS; - return formik_debounce(fn, timeout); - })(), []); - const getValue = (v) => { - if (v && v.target) { - if (v.target.nodeName === "INPUT" && (v.target.type === "checkbox" || v.target.type === "radio")) { - return v.target.checked; - } - return v.target.value; - } - return v; - }; - const onChange = (valueOrEvent) => { - const value = getValue(valueOrEvent); - const onChangeProps = opts.getOnChangeProps(value, field, form, properties); - const newValue = onChangeProps.value || properties.value || value; - executeDebounced(() => { - if (typeof properties.onChange === "function") { - properties.onChange(newValue); - } - field.onChange({ target: formik_spreadValues({ name: field.name, value: newValue }, onChangeProps) }); - }); - setMyValue(newValue); - }; - const formError = (getValueFromPath(form.touched, field.name) || Boolean(form.submitCount)) && getValueFromPath(form.errors, field.name); - const error = typeof formError === "string" ? formError : ""; - (0,external_react_namespaceObject.useEffect)(() => { - setMyValue(field.value); - }, [field.value]); - if ((_a2 = form.status) == null ? void 0 : _a2.disabled) - properties.disabled = true; - const componentProps = formik_spreadValues({}, properties); - delete componentProps.debounce; - return /* @__PURE__ */ external_react_default().createElement( - Component, - formik_spreadProps(formik_spreadValues(formik_spreadValues(formik_spreadProps(formik_spreadValues({}, field), { - error - }), opts.hasIsFieldProp ? { isfield: true } : {}), componentProps), { - checked: typeof properties.value === "string" ? field.value === properties.value : field.value, - onChange, - value: myValue, - input: { value: myValue, onChange } - }) - ); -}; -/* harmony default export */ const formik = (wrapper); - -;// CONCATENATED MODULE: ./src/form/formik/FormikCheckbox/index.js - - -/* harmony default export */ const FormikCheckbox = (formik(Checkbox, { - getOnChangeProps: (value) => ({ - checked: value - }) -})); - -;// CONCATENATED MODULE: ./src/form/formik/FormikCodeEditor/index.js - - -/* harmony default export */ const FormikCodeEditor = (formik(components_CodeEditor)); - -;// CONCATENATED MODULE: ./src/form/formik/FormikCombobox/index.js - - -/* harmony default export */ const FormikCombobox = (formik(Combobox)); - -;// CONCATENATED MODULE: ./src/form/formik/FormikCombobox2/index.js - - -/* harmony default export */ const FormikCombobox2 = (formik(components_Combobox2)); - -;// CONCATENATED MODULE: ./src/form/formik/FormikDatePicker/index.js - - -/* harmony default export */ const FormikDatePicker = (formik(components_DatePicker)); - -;// CONCATENATED MODULE: ./src/form/formik/FormikEditableList/index.js - - -/* harmony default export */ const FormikEditableList = (formik(EditableList, { - getOnChangeProps: (value) => ({ value: value || [] }) -})); - -;// CONCATENATED MODULE: ./src/form/formik/FormikEditableList2/index.js - - -/* harmony default export */ const FormikEditableList2 = (formik(components_EditableList2)); - -;// CONCATENATED MODULE: ./src/form/formik/FormikFileInput/index.js - - -/* harmony default export */ const FormikFileInput = (formik(FileInput)); - -;// CONCATENATED MODULE: ./src/form/formik/FormikInput/index.js - - -/* harmony default export */ const FormikInput = (formik(Input, { hasIsFieldProp: true })); - -;// CONCATENATED MODULE: ./src/form/formik/FormikInput2/index.js - - -/* harmony default export */ const FormikInput2 = (formik(components_Input2)); - -;// CONCATENATED MODULE: ./src/form/formik/FormikMultiselect/index.js - - -/* harmony default export */ const FormikMultiselect = (formik(components_Multiselect)); - -;// CONCATENATED MODULE: ./src/form/formik/FormikRadio/index.js - - -/* harmony default export */ const FormikRadio = (formik(Radio, { - getOnChangeProps: (value, field, form, properties) => ({ - checked: value === properties.value, - value: properties.value - }) -})); - -;// CONCATENATED MODULE: ./src/form/formik/FormikSelect/index.js - - -/* harmony default export */ const FormikSelect = (formik(Select, { hasIsFieldProp: true })); - -;// CONCATENATED MODULE: ./src/form/formik/FormikSelectableList/index.js - - -/* harmony default export */ const FormikSelectableList = (formik(components_SelectableList)); - -;// CONCATENATED MODULE: ./src/form/formik/FormikTextarea/index.js - - -/* harmony default export */ const FormikTextarea = (formik(components_Textarea)); - -;// CONCATENATED MODULE: ./src/form/formik/FormikToggle/index.js - - -/* harmony default export */ const FormikToggle = (formik(components_Toggle)); - -;// CONCATENATED MODULE: ./src/form/formik/FormikStringBuilder/index.js - - -/* harmony default export */ const FormikStringBuilder = (formik(components_StringBuilder)); - -;// CONCATENATED MODULE: ./src/form/redux-form/FieldCodeEditor/index.js -var FieldCodeEditor_defProp = Object.defineProperty; -var FieldCodeEditor_defProps = Object.defineProperties; -var FieldCodeEditor_getOwnPropDescs = Object.getOwnPropertyDescriptors; -var FieldCodeEditor_getOwnPropSymbols = Object.getOwnPropertySymbols; -var FieldCodeEditor_hasOwnProp = Object.prototype.hasOwnProperty; -var FieldCodeEditor_propIsEnum = Object.prototype.propertyIsEnumerable; -var FieldCodeEditor_defNormalProp = (obj, key, value) => key in obj ? FieldCodeEditor_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var FieldCodeEditor_spreadValues = (a, b) => { - for (var prop in b || (b = {})) - if (FieldCodeEditor_hasOwnProp.call(b, prop)) - FieldCodeEditor_defNormalProp(a, prop, b[prop]); - if (FieldCodeEditor_getOwnPropSymbols) - for (var prop of FieldCodeEditor_getOwnPropSymbols(b)) { - if (FieldCodeEditor_propIsEnum.call(b, prop)) - FieldCodeEditor_defNormalProp(a, prop, b[prop]); - } - return a; -}; -var FieldCodeEditor_spreadProps = (a, b) => FieldCodeEditor_defProps(a, FieldCodeEditor_getOwnPropDescs(b)); -var FieldCodeEditor_objRest = (source, exclude) => { - var target = {}; - for (var prop in source) - if (FieldCodeEditor_hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) - target[prop] = source[prop]; - if (source != null && FieldCodeEditor_getOwnPropSymbols) - for (var prop of FieldCodeEditor_getOwnPropSymbols(source)) { - if (exclude.indexOf(prop) < 0 && FieldCodeEditor_propIsEnum.call(source, prop)) - target[prop] = source[prop]; - } - return target; -}; -var FieldCodeEditor_publicField = (obj, key, value) => { - FieldCodeEditor_defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); - return value; -}; - - - - -class FieldCodeEditor extends external_react_namespaceObject.Component { - constructor(props) { - super(props); - this.handleOnChange = this.handleOnChange.bind(this); - } - getInputError() { - const { meta, validationmessages } = this.props; - const { touched, error, warning } = meta; - let message = null; - if (touched && error && validationmessages[error]) { - message = validationmessages[error]; - } else if (touched && warning) { - message = "warning"; - } - return message; - } - handleOnChange(value) { - const { input } = this.prop; - const { onChange } = input; - onChange((0,external_immutable_namespaceObject.fromJS)(value)); - } - render() { - const _a = this.props, { input } = _a, rest = FieldCodeEditor_objRest(_a, ["input"]); - return /* @__PURE__ */ external_react_default().createElement( - components_CodeEditor, - FieldCodeEditor_spreadProps(FieldCodeEditor_spreadValues(FieldCodeEditor_spreadValues({}, input), rest), { - error: this.getInputError() - }) - ); - } -} -FieldCodeEditor_publicField(FieldCodeEditor, "propTypes", { - input: external_prop_types_default().instanceOf(Object), - meta: external_prop_types_default().instanceOf(Object), - validationmessages: external_prop_types_default().instanceOf(Object) -}); - -;// CONCATENATED MODULE: ./src/form/redux-form/FieldCombobox/index.js -var FieldCombobox_defProp = Object.defineProperty; -var FieldCombobox_defProps = Object.defineProperties; -var FieldCombobox_getOwnPropDescs = Object.getOwnPropertyDescriptors; -var FieldCombobox_getOwnPropSymbols = Object.getOwnPropertySymbols; -var FieldCombobox_hasOwnProp = Object.prototype.hasOwnProperty; -var FieldCombobox_propIsEnum = Object.prototype.propertyIsEnumerable; -var FieldCombobox_defNormalProp = (obj, key, value) => key in obj ? FieldCombobox_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var FieldCombobox_spreadValues = (a, b) => { - for (var prop in b || (b = {})) - if (FieldCombobox_hasOwnProp.call(b, prop)) - FieldCombobox_defNormalProp(a, prop, b[prop]); - if (FieldCombobox_getOwnPropSymbols) - for (var prop of FieldCombobox_getOwnPropSymbols(b)) { - if (FieldCombobox_propIsEnum.call(b, prop)) - FieldCombobox_defNormalProp(a, prop, b[prop]); - } - return a; -}; -var FieldCombobox_spreadProps = (a, b) => FieldCombobox_defProps(a, FieldCombobox_getOwnPropDescs(b)); -var FieldCombobox_objRest = (source, exclude) => { - var target = {}; - for (var prop in source) - if (FieldCombobox_hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) - target[prop] = source[prop]; - if (source != null && FieldCombobox_getOwnPropSymbols) - for (var prop of FieldCombobox_getOwnPropSymbols(source)) { - if (exclude.indexOf(prop) < 0 && FieldCombobox_propIsEnum.call(source, prop)) - target[prop] = source[prop]; - } - return target; -}; -var FieldCombobox_publicField = (obj, key, value) => { - FieldCombobox_defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); - return value; -}; - - - - -class FieldCombobox extends external_react_namespaceObject.Component { - constructor(props) { - super(props); - this.handleOnChange = this.handleOnChange.bind(this); - } - getComboboxError() { - const { meta, validationmessages } = this.props; - const { touched, error, warning } = meta; - let message = null; - if (touched && error && validationmessages[error]) { - message = validationmessages[error]; - } else if (touched && warning) { - message = "warning"; - } - return message; - } - handleOnChange(value) { - const { input } = this.props; - const { onChange } = input; - onChange((0,external_immutable_namespaceObject.fromJS)(value)); - } - render() { - const props = FieldCombobox_objRest(this.props, []); - return /* @__PURE__ */ external_react_default().createElement( - Combobox, - FieldCombobox_spreadProps(FieldCombobox_spreadValues({}, props), { - onChange: this.handleOnChange, - value: !props.input.value ? props.input.value : props.input.value.toJS(), - error: this.getComboboxError() - }) - ); - } -} -FieldCombobox_publicField(FieldCombobox, "propTypes", { - meta: external_prop_types_default().instanceOf(Object), - input: external_prop_types_default().instanceOf(Object), - validationmessages: external_prop_types_default().instanceOf(Object) -}); - -;// CONCATENATED MODULE: ./src/form/redux-form/FieldDropdown/index.js -var FieldDropdown_defProp = Object.defineProperty; -var FieldDropdown_defProps = Object.defineProperties; -var FieldDropdown_getOwnPropDescs = Object.getOwnPropertyDescriptors; -var FieldDropdown_getOwnPropSymbols = Object.getOwnPropertySymbols; -var FieldDropdown_hasOwnProp = Object.prototype.hasOwnProperty; -var FieldDropdown_propIsEnum = Object.prototype.propertyIsEnumerable; -var FieldDropdown_defNormalProp = (obj, key, value) => key in obj ? FieldDropdown_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var FieldDropdown_spreadValues = (a, b) => { - for (var prop in b || (b = {})) - if (FieldDropdown_hasOwnProp.call(b, prop)) - FieldDropdown_defNormalProp(a, prop, b[prop]); - if (FieldDropdown_getOwnPropSymbols) - for (var prop of FieldDropdown_getOwnPropSymbols(b)) { - if (FieldDropdown_propIsEnum.call(b, prop)) - FieldDropdown_defNormalProp(a, prop, b[prop]); - } - return a; -}; -var FieldDropdown_spreadProps = (a, b) => FieldDropdown_defProps(a, FieldDropdown_getOwnPropDescs(b)); -var FieldDropdown_objRest = (source, exclude) => { - var target = {}; - for (var prop in source) - if (FieldDropdown_hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) - target[prop] = source[prop]; - if (source != null && FieldDropdown_getOwnPropSymbols) - for (var prop of FieldDropdown_getOwnPropSymbols(source)) { - if (exclude.indexOf(prop) < 0 && FieldDropdown_propIsEnum.call(source, prop)) - target[prop] = source[prop]; - } - return target; -}; -var FieldDropdown_publicField = (obj, key, value) => { - FieldDropdown_defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); - return value; -}; - - - - -class FieldDropdown extends external_react_namespaceObject.Component { - constructor(props) { - super(props); - this.handleOnChange = this.handleOnChange.bind(this); - } - handleOnChange(value) { - const { input } = this.props; - const { onChange } = input; - onChange((0,external_immutable_namespaceObject.fromJS)(value)); - } - render() { - const _a = this.props, { - children, - input - } = _a, rest = FieldDropdown_objRest(_a, [ - "children", - "input" - ]); - return /* @__PURE__ */ external_react_default().createElement( - components_Dropdown, - FieldDropdown_spreadProps(FieldDropdown_spreadValues({}, rest), { - onSelect: this.handleOnChange, - selectedItem: input.value - }), - children - ); - } -} -FieldDropdown_publicField(FieldDropdown, "propTypes", { - children: external_prop_types_default().oneOfType([ - external_prop_types_default().arrayOf((external_prop_types_default()).node), - (external_prop_types_default()).node, - (external_prop_types_default()).element, - (external_prop_types_default()).string - ]), - input: external_prop_types_default().instanceOf(Object) -}); - -;// CONCATENATED MODULE: ./src/form/redux-form/FieldPagination/index.js -var FieldPagination_defProp = Object.defineProperty; -var FieldPagination_defProps = Object.defineProperties; -var FieldPagination_getOwnPropDescs = Object.getOwnPropertyDescriptors; -var FieldPagination_getOwnPropSymbols = Object.getOwnPropertySymbols; -var FieldPagination_hasOwnProp = Object.prototype.hasOwnProperty; -var FieldPagination_propIsEnum = Object.prototype.propertyIsEnumerable; -var FieldPagination_defNormalProp = (obj, key, value) => key in obj ? FieldPagination_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var FieldPagination_spreadValues = (a, b) => { - for (var prop in b || (b = {})) - if (FieldPagination_hasOwnProp.call(b, prop)) - FieldPagination_defNormalProp(a, prop, b[prop]); - if (FieldPagination_getOwnPropSymbols) - for (var prop of FieldPagination_getOwnPropSymbols(b)) { - if (FieldPagination_propIsEnum.call(b, prop)) - FieldPagination_defNormalProp(a, prop, b[prop]); - } - return a; -}; -var FieldPagination_spreadProps = (a, b) => FieldPagination_defProps(a, FieldPagination_getOwnPropDescs(b)); -var FieldPagination_objRest = (source, exclude) => { - var target = {}; - for (var prop in source) - if (FieldPagination_hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) - target[prop] = source[prop]; - if (source != null && FieldPagination_getOwnPropSymbols) - for (var prop of FieldPagination_getOwnPropSymbols(source)) { - if (exclude.indexOf(prop) < 0 && FieldPagination_propIsEnum.call(source, prop)) - target[prop] = source[prop]; - } - return target; -}; - - - -const FieldPagination = (props) => { - const _a = props, { input } = _a, rest = FieldPagination_objRest(_a, ["input"]); - return /* @__PURE__ */ external_react_default().createElement( - Pagination, - FieldPagination_spreadProps(FieldPagination_spreadValues(FieldPagination_spreadValues({}, input), rest), { - onChange: input.onChange, - value: input.value ? input.value : 0 - }) - ); -}; -FieldPagination.propTypes = { - input: external_prop_types_default().instanceOf(Object) -}; -/* harmony default export */ const redux_form_FieldPagination = (FieldPagination); - -;// CONCATENATED MODULE: ./src/form/redux-form/FieldCombobox2/index.js -var FieldCombobox2_defProp = Object.defineProperty; -var FieldCombobox2_defProps = Object.defineProperties; -var FieldCombobox2_getOwnPropDescs = Object.getOwnPropertyDescriptors; -var FieldCombobox2_getOwnPropSymbols = Object.getOwnPropertySymbols; -var FieldCombobox2_hasOwnProp = Object.prototype.hasOwnProperty; -var FieldCombobox2_propIsEnum = Object.prototype.propertyIsEnumerable; -var FieldCombobox2_defNormalProp = (obj, key, value) => key in obj ? FieldCombobox2_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var FieldCombobox2_spreadValues = (a, b) => { - for (var prop in b || (b = {})) - if (FieldCombobox2_hasOwnProp.call(b, prop)) - FieldCombobox2_defNormalProp(a, prop, b[prop]); - if (FieldCombobox2_getOwnPropSymbols) - for (var prop of FieldCombobox2_getOwnPropSymbols(b)) { - if (FieldCombobox2_propIsEnum.call(b, prop)) - FieldCombobox2_defNormalProp(a, prop, b[prop]); - } - return a; -}; -var FieldCombobox2_spreadProps = (a, b) => FieldCombobox2_defProps(a, FieldCombobox2_getOwnPropDescs(b)); - - - - -const FieldCombobox2 = (props) => { - const { input, meta, validationmessages } = props; - const getComboboxError = () => { - const { touched, error, warning } = meta; - let message = null; - if (touched && error && validationmessages[error]) { - message = validationmessages[error]; - } else if (touched && warning) { - message = "warning"; - } - return message; - }; - const handleOnChange = (value) => { - const { onChange } = input; - onChange((0,external_immutable_namespaceObject.fromJS)(value)); - }; - return /* @__PURE__ */ external_react_default().createElement( - components_Combobox2, - FieldCombobox2_spreadProps(FieldCombobox2_spreadValues({}, props), { - onChange: handleOnChange, - value: !input.value ? input.value : input.value.toJS(), - error: getComboboxError() - }) - ); -}; -FieldCombobox2.propTypes = { - meta: external_prop_types_default().instanceOf(Object), - input: external_prop_types_default().instanceOf(Object), - validationmessages: external_prop_types_default().instanceOf(Object) -}; -/* harmony default export */ const redux_form_FieldCombobox2 = (FieldCombobox2); - -;// CONCATENATED MODULE: ./src/form/redux-form/FieldDatePicker/index.js -var FieldDatePicker_defProp = Object.defineProperty; -var FieldDatePicker_defProps = Object.defineProperties; -var FieldDatePicker_getOwnPropDescs = Object.getOwnPropertyDescriptors; -var FieldDatePicker_getOwnPropSymbols = Object.getOwnPropertySymbols; -var FieldDatePicker_hasOwnProp = Object.prototype.hasOwnProperty; -var FieldDatePicker_propIsEnum = Object.prototype.propertyIsEnumerable; -var FieldDatePicker_defNormalProp = (obj, key, value) => key in obj ? FieldDatePicker_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var FieldDatePicker_spreadValues = (a, b) => { - for (var prop in b || (b = {})) - if (FieldDatePicker_hasOwnProp.call(b, prop)) - FieldDatePicker_defNormalProp(a, prop, b[prop]); - if (FieldDatePicker_getOwnPropSymbols) - for (var prop of FieldDatePicker_getOwnPropSymbols(b)) { - if (FieldDatePicker_propIsEnum.call(b, prop)) - FieldDatePicker_defNormalProp(a, prop, b[prop]); - } - return a; -}; -var FieldDatePicker_spreadProps = (a, b) => FieldDatePicker_defProps(a, FieldDatePicker_getOwnPropDescs(b)); -var FieldDatePicker_objRest = (source, exclude) => { - var target = {}; - for (var prop in source) - if (FieldDatePicker_hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) - target[prop] = source[prop]; - if (source != null && FieldDatePicker_getOwnPropSymbols) - for (var prop of FieldDatePicker_getOwnPropSymbols(source)) { - if (exclude.indexOf(prop) < 0 && FieldDatePicker_propIsEnum.call(source, prop)) - target[prop] = source[prop]; - } - return target; -}; - - - - -const FormDatePicker = (props) => { - const _a = props, { - input, - meta, - validationmessages - } = _a, rest = FieldDatePicker_objRest(_a, [ - "input", - "meta", - "validationmessages" - ]); - const getDatePickerError = () => { - const { touched, error } = meta; - let message = null; - if (touched && error && validationmessages[error]) { - message = validationmessages[error]; - } - return message; - }; - const handleOnChange = (value) => { - const { onChange } = input; - onChange((0,external_immutable_namespaceObject.fromJS)(value)); - }; - return /* @__PURE__ */ external_react_default().createElement( - components_DatePicker, - FieldDatePicker_spreadProps(FieldDatePicker_spreadValues({}, rest), { - onChange: handleOnChange, - value: !input.value ? input.value : input.value.toJS(), - error: getDatePickerError() - }) - ); -}; -FormDatePicker.propTypes = { - meta: external_prop_types_default().instanceOf(Object), - input: external_prop_types_default().instanceOf(Object), - validationmessages: external_prop_types_default().instanceOf(Object) -}; -/* harmony default export */ const FieldDatePicker = (FormDatePicker); - -;// CONCATENATED MODULE: ./src/form/redux-form/FieldEditableList/index.js -var FieldEditableList_defProp = Object.defineProperty; -var FieldEditableList_defProps = Object.defineProperties; -var FieldEditableList_getOwnPropDescs = Object.getOwnPropertyDescriptors; -var FieldEditableList_getOwnPropSymbols = Object.getOwnPropertySymbols; -var FieldEditableList_hasOwnProp = Object.prototype.hasOwnProperty; -var FieldEditableList_propIsEnum = Object.prototype.propertyIsEnumerable; -var FieldEditableList_defNormalProp = (obj, key, value) => key in obj ? FieldEditableList_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var FieldEditableList_spreadValues = (a, b) => { - for (var prop in b || (b = {})) - if (FieldEditableList_hasOwnProp.call(b, prop)) - FieldEditableList_defNormalProp(a, prop, b[prop]); - if (FieldEditableList_getOwnPropSymbols) - for (var prop of FieldEditableList_getOwnPropSymbols(b)) { - if (FieldEditableList_propIsEnum.call(b, prop)) - FieldEditableList_defNormalProp(a, prop, b[prop]); - } - return a; -}; -var FieldEditableList_spreadProps = (a, b) => FieldEditableList_defProps(a, FieldEditableList_getOwnPropDescs(b)); -var FieldEditableList_objRest = (source, exclude) => { - var target = {}; - for (var prop in source) - if (FieldEditableList_hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) - target[prop] = source[prop]; - if (source != null && FieldEditableList_getOwnPropSymbols) - for (var prop of FieldEditableList_getOwnPropSymbols(source)) { - if (exclude.indexOf(prop) < 0 && FieldEditableList_propIsEnum.call(source, prop)) - target[prop] = source[prop]; - } - return target; -}; -var FieldEditableList_publicField = (obj, key, value) => { - FieldEditableList_defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); - return value; -}; - - - - -class FieldEditableList extends external_react_namespaceObject.Component { - constructor(props) { - super(props); - this.handleOnChange = this.handleOnChange.bind(this); - } - getEditableListError() { - const { meta, validationmessages } = this.props; - const { touched, error } = meta; - let message = null; - if (touched && error && validationmessages[error]) { - message = validationmessages[error]; - } - return message; - } - handleOnChange(value) { - const { input } = this.props; - const { onChange } = input; - onChange((0,external_immutable_namespaceObject.fromJS)(value)); - } - render() { - const props = FieldEditableList_objRest(this.props, []); - return /* @__PURE__ */ external_react_default().createElement( - EditableList, - FieldEditableList_spreadProps(FieldEditableList_spreadValues({}, props), { - onChange: this.handleOnChange, - value: !props.input.value ? null : props.input.value.toJS(), - error: this.getEditableListError() - }) - ); - } -} -FieldEditableList_publicField(FieldEditableList, "propTypes", { - input: external_prop_types_default().instanceOf(Object), - meta: external_prop_types_default().instanceOf(Object), - validationmessages: external_prop_types_default().instanceOf(Object) -}); - -;// CONCATENATED MODULE: ./src/form/redux-form/FieldFileInput/index.js -var FieldFileInput_defProp = Object.defineProperty; -var FieldFileInput_defProps = Object.defineProperties; -var FieldFileInput_getOwnPropDescs = Object.getOwnPropertyDescriptors; -var FieldFileInput_getOwnPropSymbols = Object.getOwnPropertySymbols; -var FieldFileInput_hasOwnProp = Object.prototype.hasOwnProperty; -var FieldFileInput_propIsEnum = Object.prototype.propertyIsEnumerable; -var FieldFileInput_defNormalProp = (obj, key, value) => key in obj ? FieldFileInput_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var FieldFileInput_spreadValues = (a, b) => { - for (var prop in b || (b = {})) - if (FieldFileInput_hasOwnProp.call(b, prop)) - FieldFileInput_defNormalProp(a, prop, b[prop]); - if (FieldFileInput_getOwnPropSymbols) - for (var prop of FieldFileInput_getOwnPropSymbols(b)) { - if (FieldFileInput_propIsEnum.call(b, prop)) - FieldFileInput_defNormalProp(a, prop, b[prop]); - } - return a; -}; -var FieldFileInput_spreadProps = (a, b) => FieldFileInput_defProps(a, FieldFileInput_getOwnPropDescs(b)); -var FieldFileInput_objRest = (source, exclude) => { - var target = {}; - for (var prop in source) - if (FieldFileInput_hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) - target[prop] = source[prop]; - if (source != null && FieldFileInput_getOwnPropSymbols) - for (var prop of FieldFileInput_getOwnPropSymbols(source)) { - if (exclude.indexOf(prop) < 0 && FieldFileInput_propIsEnum.call(source, prop)) - target[prop] = source[prop]; - } - return target; -}; -var FieldFileInput_publicField = (obj, key, value) => { - FieldFileInput_defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); - return value; -}; - - - -class FieldFileInput extends external_react_namespaceObject.Component { - getInputError() { - const { meta, validationmessages } = this.props; - const { touched, error, warning } = meta; - let message = null; - if (touched && error && validationmessages[error]) { - message = validationmessages[error]; - } else if (touched && warning) { - message = "warning"; - } - return message; - } - render() { - const _a = this.props, { input } = _a, rest = FieldFileInput_objRest(_a, ["input"]); - return /* @__PURE__ */ external_react_default().createElement( - FileInput, - FieldFileInput_spreadProps(FieldFileInput_spreadValues(FieldFileInput_spreadValues({}, input), rest), { - error: this.getInputError() - }) - ); - } -} -FieldFileInput_publicField(FieldFileInput, "propTypes", { - input: external_prop_types_default().instanceOf(Object), - meta: external_prop_types_default().instanceOf(Object), - validationmessages: external_prop_types_default().instanceOf(Object) -}); - -;// CONCATENATED MODULE: ./src/form/redux-form/FieldInput/index.js -var FieldInput_defProp = Object.defineProperty; -var FieldInput_defProps = Object.defineProperties; -var FieldInput_getOwnPropDescs = Object.getOwnPropertyDescriptors; -var FieldInput_getOwnPropSymbols = Object.getOwnPropertySymbols; -var FieldInput_hasOwnProp = Object.prototype.hasOwnProperty; -var FieldInput_propIsEnum = Object.prototype.propertyIsEnumerable; -var FieldInput_defNormalProp = (obj, key, value) => key in obj ? FieldInput_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var FieldInput_spreadValues = (a, b) => { - for (var prop in b || (b = {})) - if (FieldInput_hasOwnProp.call(b, prop)) - FieldInput_defNormalProp(a, prop, b[prop]); - if (FieldInput_getOwnPropSymbols) - for (var prop of FieldInput_getOwnPropSymbols(b)) { - if (FieldInput_propIsEnum.call(b, prop)) - FieldInput_defNormalProp(a, prop, b[prop]); - } - return a; -}; -var FieldInput_spreadProps = (a, b) => FieldInput_defProps(a, FieldInput_getOwnPropDescs(b)); -var FieldInput_objRest = (source, exclude) => { - var target = {}; - for (var prop in source) - if (FieldInput_hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) - target[prop] = source[prop]; - if (source != null && FieldInput_getOwnPropSymbols) - for (var prop of FieldInput_getOwnPropSymbols(source)) { - if (exclude.indexOf(prop) < 0 && FieldInput_propIsEnum.call(source, prop)) - target[prop] = source[prop]; - } - return target; -}; -var FieldInput_publicField = (obj, key, value) => { - FieldInput_defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); - return value; -}; - - - -class FieldInput extends external_react_namespaceObject.Component { - getInputError() { - const { meta, validationmessages } = this.props; - const { touched, error, warning } = meta; - let message = null; - if (touched && error && validationmessages[error]) { - message = validationmessages[error]; - } else if (touched && warning) { - message = "warning"; - } - return message; - } - render() { - const _a = this.props, { input } = _a, rest = FieldInput_objRest(_a, ["input"]); - return /* @__PURE__ */ external_react_default().createElement( - Input, - FieldInput_spreadProps(FieldInput_spreadValues(FieldInput_spreadValues({}, input), rest), { - isfield: true, - error: this.getInputError() - }) - ); - } -} -FieldInput_publicField(FieldInput, "propTypes", { - meta: external_prop_types_default().instanceOf(Object), - input: external_prop_types_default().instanceOf(Object), - validationmessages: external_prop_types_default().instanceOf(Object) -}); - -;// CONCATENATED MODULE: ./src/form/redux-form/FieldMultiselect/index.js -var FieldMultiselect_defProp = Object.defineProperty; -var FieldMultiselect_defProps = Object.defineProperties; -var FieldMultiselect_getOwnPropDescs = Object.getOwnPropertyDescriptors; -var FieldMultiselect_getOwnPropSymbols = Object.getOwnPropertySymbols; -var FieldMultiselect_hasOwnProp = Object.prototype.hasOwnProperty; -var FieldMultiselect_propIsEnum = Object.prototype.propertyIsEnumerable; -var FieldMultiselect_defNormalProp = (obj, key, value) => key in obj ? FieldMultiselect_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var FieldMultiselect_spreadValues = (a, b) => { - for (var prop in b || (b = {})) - if (FieldMultiselect_hasOwnProp.call(b, prop)) - FieldMultiselect_defNormalProp(a, prop, b[prop]); - if (FieldMultiselect_getOwnPropSymbols) - for (var prop of FieldMultiselect_getOwnPropSymbols(b)) { - if (FieldMultiselect_propIsEnum.call(b, prop)) - FieldMultiselect_defNormalProp(a, prop, b[prop]); - } - return a; -}; -var FieldMultiselect_spreadProps = (a, b) => FieldMultiselect_defProps(a, FieldMultiselect_getOwnPropDescs(b)); -var FieldMultiselect_objRest = (source, exclude) => { - var target = {}; - for (var prop in source) - if (FieldMultiselect_hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) - target[prop] = source[prop]; - if (source != null && FieldMultiselect_getOwnPropSymbols) - for (var prop of FieldMultiselect_getOwnPropSymbols(source)) { - if (exclude.indexOf(prop) < 0 && FieldMultiselect_propIsEnum.call(source, prop)) - target[prop] = source[prop]; - } - return target; -}; -var FieldMultiselect_publicField = (obj, key, value) => { - FieldMultiselect_defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); - return value; -}; - - - - -class FieldMultiselect extends external_react_namespaceObject.Component { - constructor(props) { - super(props); - this.handleOnChange = this.handleOnChange.bind(this); - } - getMultiselectError() { - const { meta, validationmessages } = this.props; - const { touched, error, warning } = meta; - let message = null; - if (touched && error && validationmessages[error]) { - message = validationmessages[error]; - } else if (touched && warning) { - message = "warning"; - } - return message; - } - handleOnChange(value) { - const { input } = this.props; - const { onChange } = input; - onChange((0,external_immutable_namespaceObject.fromJS)(value)); - } - render() { - const props = FieldMultiselect_objRest(this.props, []); - return /* @__PURE__ */ external_react_default().createElement( - components_Multiselect, - FieldMultiselect_spreadProps(FieldMultiselect_spreadValues({}, props), { - onChange: this.handleOnChange, - value: !props.input.value ? props.input.value : props.input.value.toJS(), - error: this.getMultiselectError() - }) - ); - } -} -FieldMultiselect_publicField(FieldMultiselect, "propTypes", { - input: external_prop_types_default().instanceOf(Object), - meta: external_prop_types_default().instanceOf(Object), - validationmessages: external_prop_types_default().instanceOf(Object) -}); - -;// CONCATENATED MODULE: ./src/form/redux-form/FieldSelect/index.js -var FieldSelect_defProp = Object.defineProperty; -var FieldSelect_defProps = Object.defineProperties; -var FieldSelect_getOwnPropDescs = Object.getOwnPropertyDescriptors; -var FieldSelect_getOwnPropSymbols = Object.getOwnPropertySymbols; -var FieldSelect_hasOwnProp = Object.prototype.hasOwnProperty; -var FieldSelect_propIsEnum = Object.prototype.propertyIsEnumerable; -var FieldSelect_defNormalProp = (obj, key, value) => key in obj ? FieldSelect_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var FieldSelect_spreadValues = (a, b) => { - for (var prop in b || (b = {})) - if (FieldSelect_hasOwnProp.call(b, prop)) - FieldSelect_defNormalProp(a, prop, b[prop]); - if (FieldSelect_getOwnPropSymbols) - for (var prop of FieldSelect_getOwnPropSymbols(b)) { - if (FieldSelect_propIsEnum.call(b, prop)) - FieldSelect_defNormalProp(a, prop, b[prop]); - } - return a; -}; -var FieldSelect_spreadProps = (a, b) => FieldSelect_defProps(a, FieldSelect_getOwnPropDescs(b)); -var FieldSelect_objRest = (source, exclude) => { - var target = {}; - for (var prop in source) - if (FieldSelect_hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) - target[prop] = source[prop]; - if (source != null && FieldSelect_getOwnPropSymbols) - for (var prop of FieldSelect_getOwnPropSymbols(source)) { - if (exclude.indexOf(prop) < 0 && FieldSelect_propIsEnum.call(source, prop)) - target[prop] = source[prop]; - } - return target; -}; -var FieldSelect_publicField = (obj, key, value) => { - FieldSelect_defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); - return value; -}; - - - - -class FieldSelect extends external_react_namespaceObject.Component { - constructor(props) { - super(props); - this.handleEvent = this.handleEvent.bind(this); - } - getSelectError() { - const { meta, validationmessages } = this.props; - const { touched, error, warning } = meta; - let message = null; - if (touched && error && validationmessages[error]) { - message = validationmessages[error]; - } else if (touched && warning) { - message = "warning"; - } - return message; - } - handleEvent(selectValue) { - const { input } = this.props; - const { onChange, value } = input; - onChange((0,external_immutable_namespaceObject.fromJS)(selectValue !== void 0 ? selectValue : value)); - } - render() { - const _a = this.props, { input } = _a, rest = FieldSelect_objRest(_a, ["input"]); - return /* @__PURE__ */ external_react_default().createElement( - Select, - FieldSelect_spreadProps(FieldSelect_spreadValues(FieldSelect_spreadValues({}, input), rest), { - isfield: true, - error: this.getSelectError(), - onChange: this.handleEvent, - onBlur: this.handleEvent, - value: !input.value ? input.value : input.value.toJS() - }) - ); - } -} -FieldSelect_publicField(FieldSelect, "propTypes", { - input: external_prop_types_default().instanceOf(Object), - meta: external_prop_types_default().instanceOf(Object), - validationmessages: external_prop_types_default().instanceOf(Object) -}); - -;// CONCATENATED MODULE: ./src/form/redux-form/FieldSelectableList/index.js -var FieldSelectableList_defProp = Object.defineProperty; -var FieldSelectableList_defProps = Object.defineProperties; -var FieldSelectableList_getOwnPropDescs = Object.getOwnPropertyDescriptors; -var FieldSelectableList_getOwnPropSymbols = Object.getOwnPropertySymbols; -var FieldSelectableList_hasOwnProp = Object.prototype.hasOwnProperty; -var FieldSelectableList_propIsEnum = Object.prototype.propertyIsEnumerable; -var FieldSelectableList_defNormalProp = (obj, key, value) => key in obj ? FieldSelectableList_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var FieldSelectableList_spreadValues = (a, b) => { - for (var prop in b || (b = {})) - if (FieldSelectableList_hasOwnProp.call(b, prop)) - FieldSelectableList_defNormalProp(a, prop, b[prop]); - if (FieldSelectableList_getOwnPropSymbols) - for (var prop of FieldSelectableList_getOwnPropSymbols(b)) { - if (FieldSelectableList_propIsEnum.call(b, prop)) - FieldSelectableList_defNormalProp(a, prop, b[prop]); - } - return a; -}; -var FieldSelectableList_spreadProps = (a, b) => FieldSelectableList_defProps(a, FieldSelectableList_getOwnPropDescs(b)); -var FieldSelectableList_objRest = (source, exclude) => { - var target = {}; - for (var prop in source) - if (FieldSelectableList_hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) - target[prop] = source[prop]; - if (source != null && FieldSelectableList_getOwnPropSymbols) - for (var prop of FieldSelectableList_getOwnPropSymbols(source)) { - if (exclude.indexOf(prop) < 0 && FieldSelectableList_propIsEnum.call(source, prop)) - target[prop] = source[prop]; - } - return target; -}; -var FieldSelectableList_publicField = (obj, key, value) => { - FieldSelectableList_defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); - return value; -}; - - - - -class FieldSelectableList extends external_react_namespaceObject.Component { - constructor(props) { - super(props); - this.handleOnChange = this.handleOnChange.bind(this); - } - handleOnChange(value) { - const { input } = this.props; - input.onChange((0,external_immutable_namespaceObject.fromJS)(value)); - } - render() { - const _a = this.props, { children } = _a, props = FieldSelectableList_objRest(_a, ["children"]); - return /* @__PURE__ */ external_react_default().createElement( - components_SelectableList, - FieldSelectableList_spreadProps(FieldSelectableList_spreadValues({}, props), { - onChange: this.handleOnChange, - value: props.input.value ? props.input.value.toJS() : [] - }) - ); - } -} -FieldSelectableList_publicField(FieldSelectableList, "propTypes", { - children: external_prop_types_default().oneOfType([ - (external_prop_types_default()).node - ]), - onChange: (external_prop_types_default()).func, - input: external_prop_types_default().instanceOf(Object) -}); - -;// CONCATENATED MODULE: ./src/form/redux-form/FieldToggle/index.js -var FieldToggle_defProp = Object.defineProperty; -var FieldToggle_defProps = Object.defineProperties; -var FieldToggle_getOwnPropDescs = Object.getOwnPropertyDescriptors; -var FieldToggle_getOwnPropSymbols = Object.getOwnPropertySymbols; -var FieldToggle_hasOwnProp = Object.prototype.hasOwnProperty; -var FieldToggle_propIsEnum = Object.prototype.propertyIsEnumerable; -var FieldToggle_defNormalProp = (obj, key, value) => key in obj ? FieldToggle_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var FieldToggle_spreadValues = (a, b) => { - for (var prop in b || (b = {})) - if (FieldToggle_hasOwnProp.call(b, prop)) - FieldToggle_defNormalProp(a, prop, b[prop]); - if (FieldToggle_getOwnPropSymbols) - for (var prop of FieldToggle_getOwnPropSymbols(b)) { - if (FieldToggle_propIsEnum.call(b, prop)) - FieldToggle_defNormalProp(a, prop, b[prop]); - } - return a; -}; -var FieldToggle_spreadProps = (a, b) => FieldToggle_defProps(a, FieldToggle_getOwnPropDescs(b)); -var FieldToggle_objRest = (source, exclude) => { - var target = {}; - for (var prop in source) - if (FieldToggle_hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) - target[prop] = source[prop]; - if (source != null && FieldToggle_getOwnPropSymbols) - for (var prop of FieldToggle_getOwnPropSymbols(source)) { - if (exclude.indexOf(prop) < 0 && FieldToggle_propIsEnum.call(source, prop)) - target[prop] = source[prop]; - } - return target; -}; -var FieldToggle_publicField = (obj, key, value) => { - FieldToggle_defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); - return value; -}; - - - - -class FieldToggle extends external_react_namespaceObject.Component { - constructor(props) { - super(props); - this.handleOnChange = this.handleOnChange.bind(this); - } - handleOnChange(value) { - const { input } = this.props; - input.onChange((0,external_immutable_namespaceObject.fromJS)(value)); - } - render() { - const _a = this.props, { children } = _a, props = FieldToggle_objRest(_a, ["children"]); - return /* @__PURE__ */ external_react_default().createElement( - components_Toggle, - FieldToggle_spreadProps(FieldToggle_spreadValues({}, props), { - onChange: this.handleOnChange, - value: props.input.value - }), - children - ); - } -} -FieldToggle_publicField(FieldToggle, "propTypes", { - children: external_prop_types_default().oneOfType([ - (external_prop_types_default()).node - ]), - onChange: (external_prop_types_default()).func, - input: external_prop_types_default().instanceOf(Object) -}); - -;// CONCATENATED MODULE: ./src/index.js - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -})(); - -module.exports = __webpack_exports__; -/******/ })() -; +/*! For license information please see index.js.LICENSE.txt */ +(()=>{var e={239:(e,t,n)=>{e=n.nmd(e),function(){var e=function(){return this}();e||"undefined"==typeof window||(e=window);var t=function(e,n,i){"string"==typeof e?(2==arguments.length&&(i=n),t.modules[e]||(t.payloads[e]=i,t.modules[e]=null)):t.original?t.original.apply(this,arguments):(console.error("dropping module because define wasn't a string."),console.trace())};t.modules={},t.payloads={};var n,i,o=function(e,t,n){if("string"==typeof t){var i=a(e,t);if(null!=i)return n&&n(),i}else if("[object Array]"===Object.prototype.toString.call(t)){for(var o=[],s=0,l=t.length;sn.length)&&(t=n.length),t-=e.length;var i=n.indexOf(e,t);return-1!==i&&i===t})),String.prototype.repeat||i(String.prototype,"repeat",(function(e){for(var t="",n=this;e>0;)1&e&&(t+=n),(e>>=1)&&(n+=n);return t})),String.prototype.includes||i(String.prototype,"includes",(function(e,t){return-1!=this.indexOf(e,t)})),Object.assign||(Object.assign=function(e){if(null==e)throw new TypeError("Cannot convert undefined or null to object");for(var t=Object(e),n=1;n>>0,i=arguments[1]>>0,o=i<0?Math.max(n+i,0):Math.min(i,n),r=arguments[2],s=void 0===r?n:r>>0,a=s<0?Math.max(n+s,0):Math.min(s,n);o0;)1&t&&(n+=e),(t>>=1)&&(e+=e);return n};var i=/^\s\s*/,o=/\s\s*$/;t.stringTrimLeft=function(e){return e.replace(i,"")},t.stringTrimRight=function(e){return e.replace(o,"")},t.copyObject=function(e){var t={};for(var n in e)t[n]=e[n];return t},t.copyArray=function(e){for(var t=[],n=0,i=e.length;n65535?2:1}})),ace.define("ace/lib/useragent",["require","exports","module"],(function(e,t,n){"use strict";t.OS={LINUX:"LINUX",MAC:"MAC",WINDOWS:"WINDOWS"},t.getOS=function(){return t.isMac?t.OS.MAC:t.isLinux?t.OS.LINUX:t.OS.WINDOWS};var i="object"==typeof navigator?navigator:{},o=(/mac|win|linux/i.exec(i.platform)||["other"])[0].toLowerCase(),r=i.userAgent||"",s=i.appName||"";t.isWin="win"==o,t.isMac="mac"==o,t.isLinux="linux"==o,t.isIE="Microsoft Internet Explorer"==s||s.indexOf("MSAppHost")>=0?parseFloat((r.match(/(?:MSIE |Trident\/[0-9]+[\.0-9]+;.*rv:)([0-9]+[\.0-9]+)/)||[])[1]):parseFloat((r.match(/(?:Trident\/[0-9]+[\.0-9]+;.*rv:)([0-9]+[\.0-9]+)/)||[])[1]),t.isOldIE=t.isIE&&t.isIE<9,t.isGecko=t.isMozilla=r.match(/ Gecko\/\d+/),t.isOpera="object"==typeof opera&&"[object Opera]"==Object.prototype.toString.call(window.opera),t.isWebKit=parseFloat(r.split("WebKit/")[1])||void 0,t.isChrome=parseFloat(r.split(" Chrome/")[1])||void 0,t.isSafari=parseFloat(r.split(" Safari/")[1])&&!t.isChrome||void 0,t.isEdge=parseFloat(r.split(" Edge/")[1])||void 0,t.isAIR=r.indexOf("AdobeAIR")>=0,t.isAndroid=r.indexOf("Android")>=0,t.isChromeOS=r.indexOf(" CrOS ")>=0,t.isIOS=/iPad|iPhone|iPod/.test(r)&&!window.MSStream,t.isIOS&&(t.isMac=!0),t.isMobile=t.isIOS||t.isAndroid})),ace.define("ace/lib/dom",["require","exports","module","ace/lib/useragent"],(function(e,t,n){"use strict";var i,o=e("./useragent");t.buildDom=function e(t,n,i){if("string"==typeof t&&t){var o=document.createTextNode(t);return n&&n.appendChild(o),o}if(!Array.isArray(t))return t&&t.appendChild&&n&&n.appendChild(t),t;if("string"!=typeof t[0]||!t[0]){for(var r=[],s=0;s=1.5,o.isChromeOS&&(t.HI_DPI=!1),"undefined"!=typeof document){var l=document.createElement("div");t.HI_DPI&&void 0!==l.style.transform&&(t.HAS_CSS_TRANSFORMS=!0),o.isEdge||void 0===l.style.animationName||(t.HAS_CSS_ANIMATION=!0),l=null}t.HAS_CSS_TRANSFORMS?t.translate=function(e,t,n){e.style.transform="translate("+Math.round(t)+"px, "+Math.round(n)+"px)"}:t.translate=function(e,t,n){e.style.top=Math.round(n)+"px",e.style.left=Math.round(t)+"px"}})),ace.define("ace/lib/net",["require","exports","module","ace/lib/dom"],(function(e,t,n){"use strict";var i=e("./dom");t.get=function(e,t){var n=new XMLHttpRequest;n.open("GET",e,!0),n.onreadystatechange=function(){4===n.readyState&&t(n.responseText)},n.send(null)},t.loadScript=function(e,t){var n=i.getDocumentHead(),o=document.createElement("script");o.src=e,n.appendChild(o),o.onload=o.onreadystatechange=function(e,n){!n&&o.readyState&&"loaded"!=o.readyState&&"complete"!=o.readyState||(o=o.onload=o.onreadystatechange=null,n||t())}},t.qualifyURL=function(e){var t=document.createElement("a");return t.href=e,t.href}})),ace.define("ace/lib/oop",["require","exports","module"],(function(e,t,n){"use strict";t.inherits=function(e,t){e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})},t.mixin=function(e,t){for(var n in t)e[n]=t[n];return e},t.implement=function(e,n){t.mixin(e,n)}})),ace.define("ace/lib/event_emitter",["require","exports","module"],(function(e,t,n){"use strict";var i={},o=function(){this.propagationStopped=!0},r=function(){this.defaultPrevented=!0};i._emit=i._dispatchEvent=function(e,t){this._eventRegistry||(this._eventRegistry={}),this._defaultHandlers||(this._defaultHandlers={});var n=this._eventRegistry[e]||[],i=this._defaultHandlers[e];if(n.length||i){"object"==typeof t&&t||(t={}),t.type||(t.type=e),t.stopPropagation||(t.stopPropagation=o),t.preventDefault||(t.preventDefault=r),n=n.slice();for(var s=0;s1&&(o=n[n.length-2]);var s=l[t+"Path"];return null==s?s=l.basePath:"/"==i&&(t=i=""),s&&"/"!=s.slice(-1)&&(s+="/"),s+t+i+o+this.get("suffix")},t.setModuleUrl=function(e,t){return l.$moduleUrls[e]=t},t.setLoader=function(e){a=e},t.dynamicModules=Object.create(null),t.$loading={},t.$loaded={},t.loadModule=function(n,i){var r,s;Array.isArray(n)&&(s=n[0],n=n[1]);var l=function(r){if(r&&!t.$loading[n])return i&&i(r);if(t.$loading[n]||(t.$loading[n]=[]),t.$loading[n].push(i),!(t.$loading[n].length>1)){var l=function(){!function(t,n){"ace/theme/textmate"===t||"./theme/textmate"===t?n(0,e("./theme/textmate")):a?a(t,n):console.error("loader is not configured")}(n,(function(e,i){i&&(t.$loaded[n]=i),t._emit("load.module",{name:n,module:i});var o=t.$loading[n];t.$loading[n]=null,o.forEach((function(e){e&&e(i)}))}))};if(!t.get("packaged"))return l();o.loadScript(t.moduleUrl(n,s),l),c()}};if(t.dynamicModules[n])t.dynamicModules[n]().then((function(e){e.default?l(e.default):l(e)}));else{try{r=this.$require(n)}catch(e){}l(r||t.$loaded[n])}},t.$require=function(e){if("function"==typeof n.require)return n.require(e)},t.setModuleLoader=function(e,n){t.dynamicModules[e]=n};var c=function(){l.basePath||l.workerPath||l.modePath||l.themePath||Object.keys(l.$moduleUrls).length||(console.error("Unable to infer path to ace from script src,","use ace.config.set('basePath', 'path') to enable dynamic loading of modes and themes","or with webpack use ace/webpack-resolver"),c=function(){})};t.version="1.32.0"})),ace.define("ace/loader_build",["require","exports","module","ace/lib/fixoldbrowsers","ace/config"],(function(e,t,i){"use strict";e("./lib/fixoldbrowsers");var o=e("./config");o.setLoader((function(t,n){e([t],(function(e){n(null,e)}))}));var r=function(){return this||"undefined"!=typeof window&&window}();function s(t){if(r&&r.document){o.set("packaged",t||e.packaged||i.packaged||r.define&&n.amdD.packaged);var s={},a="",l=document.currentScript||document._currentScript,c=l&&l.ownerDocument||document;l&&l.src&&(a=l.src.split(/[?#]/)[0].split("/").slice(0,-1).join("/")||"");for(var u,h=c.getElementsByTagName("script"),d=0;d ["+this.end.row+"/"+this.end.column+"]"},e.prototype.contains=function(e,t){return 0==this.compare(e,t)},e.prototype.compareRange=function(e){var t,n=e.end,i=e.start;return 1==(t=this.compare(n.row,n.column))?1==(t=this.compare(i.row,i.column))?2:0==t?1:0:-1==t?-2:-1==(t=this.compare(i.row,i.column))?-1:1==t?42:0},e.prototype.comparePoint=function(e){return this.compare(e.row,e.column)},e.prototype.containsRange=function(e){return 0==this.comparePoint(e.start)&&0==this.comparePoint(e.end)},e.prototype.intersects=function(e){var t=this.compareRange(e);return-1==t||0==t||1==t},e.prototype.isEnd=function(e,t){return this.end.row==e&&this.end.column==t},e.prototype.isStart=function(e,t){return this.start.row==e&&this.start.column==t},e.prototype.setStart=function(e,t){"object"==typeof e?(this.start.column=e.column,this.start.row=e.row):(this.start.row=e,this.start.column=t)},e.prototype.setEnd=function(e,t){"object"==typeof e?(this.end.column=e.column,this.end.row=e.row):(this.end.row=e,this.end.column=t)},e.prototype.inside=function(e,t){return 0==this.compare(e,t)&&!this.isEnd(e,t)&&!this.isStart(e,t)},e.prototype.insideStart=function(e,t){return 0==this.compare(e,t)&&!this.isEnd(e,t)},e.prototype.insideEnd=function(e,t){return 0==this.compare(e,t)&&!this.isStart(e,t)},e.prototype.compare=function(e,t){return this.isMultiLine()||e!==this.start.row?ethis.end.row?1:this.start.row===e?t>=this.start.column?0:-1:this.end.row===e?t<=this.end.column?0:1:0:tthis.end.column?1:0},e.prototype.compareStart=function(e,t){return this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},e.prototype.compareEnd=function(e,t){return this.end.row==e&&this.end.column==t?1:this.compare(e,t)},e.prototype.compareInside=function(e,t){return this.end.row==e&&this.end.column==t?1:this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},e.prototype.clipRows=function(t,n){if(this.end.row>n)var i={row:n+1,column:0};else this.end.rown)var o={row:n+1,column:0};else this.start.row1?++h>4&&(h=1):h=1,r.isIE){var s=Math.abs(e.clientX-a)>5||Math.abs(e.clientY-l)>5;c&&!s||(h=1),c&&clearTimeout(c),c=setTimeout((function(){c=null}),n[h-1]||600),1==h&&(a=e.clientX,l=e.clientY)}if(e._clicks=h,i[o]("mousedown",e),h>4)h=0;else if(h>1)return i[o](d[h],e)}Array.isArray(e)||(e=[e]),e.forEach((function(e){u(e,"mousedown",p,s)}))};var d=function(e){return 0|(e.ctrlKey?1:0)|(e.altKey?2:0)|(e.shiftKey?4:0)|(e.metaKey?8:0)};function p(e,t,n){var i=d(t);if(!r.isMac&&s){if(t.getModifierState&&(t.getModifierState("OS")||t.getModifierState("Win"))&&(i|=8),s.altGr){if(3==(3&i))return;s.altGr=0}if(18===n||17===n){var l="location"in t?t.location:t.keyLocation;17===n&&1===l?1==s[n]&&(a=t.timeStamp):18===n&&3===i&&2===l&&t.timeStamp-a<50&&(s.altGr=!0)}}if(n in o.MODIFIER_KEYS&&(n=-1),i||13!==n||3!==(l="location"in t?t.location:t.keyLocation)||(e(t,i,-n),!t.defaultPrevented)){if(r.isChromeOS&&8&i){if(e(t,i,n),t.defaultPrevented)return;i&=-9}return!!(i||n in o.FUNCTION_KEYS||n in o.PRINTABLE_KEYS)&&e(t,i,n)}}function g(){s=Object.create(null)}if(t.getModifierString=function(e){return o.KEY_MODS[d(e)]},t.addCommandKeyListener=function(e,n,i){if(r.isOldGecko||r.isOpera&&!("KeyboardEvent"in window)){var o=null;u(e,"keydown",(function(e){o=e.keyCode}),i),u(e,"keypress",(function(e){return p(n,e,o)}),i)}else{var a=null;u(e,"keydown",(function(e){s[e.keyCode]=(s[e.keyCode]||0)+1;var t=p(n,e,e.keyCode);return a=e.defaultPrevented,t}),i),u(e,"keypress",(function(e){a&&(e.ctrlKey||e.altKey||e.shiftKey||e.metaKey)&&(t.stopEvent(e),a=null)}),i),u(e,"keyup",(function(e){s[e.keyCode]=null}),i),s||(g(),u(window,"focus",g))}},"object"==typeof window&&window.postMessage&&!r.isOldIE){var m=1;t.nextTick=function(e,n){n=n||window;var i="zero-timeout-message-"+m++,o=function(r){r.data==i&&(t.stopPropagation(r),h(n,"message",o),e())};u(n,"message",o),n.postMessage(i,"*")}}t.$idleBlocked=!1,t.onIdle=function(e,n){return setTimeout((function n(){t.$idleBlocked?setTimeout(n,100):e()}),n)},t.$idleBlockId=null,t.blockIdle=function(e){t.$idleBlockId&&clearTimeout(t.$idleBlockId),t.$idleBlocked=!0,t.$idleBlockId=setTimeout((function(){t.$idleBlocked=!1}),e||100)},t.nextFrame="object"==typeof window&&(window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame||window.oRequestAnimationFrame),t.nextFrame?t.nextFrame=t.nextFrame.bind(window):t.nextFrame=function(e){setTimeout(e,17)}})),ace.define("ace/clipboard",["require","exports","module"],(function(e,t,n){"use strict";var i;n.exports={lineMode:!1,pasteCancelled:function(){return!!(i&&i>Date.now()-50)||(i=!1)},cancel:function(){i=Date.now()}}})),ace.define("ace/keyboard/textinput",["require","exports","module","ace/lib/event","ace/config","ace/lib/useragent","ace/lib/dom","ace/lib/lang","ace/clipboard","ace/lib/keys"],(function(e,t,n){"use strict";var i=e("../lib/event"),o=e("../config").nls,r=e("../lib/useragent"),s=e("../lib/dom"),a=e("../lib/lang"),l=e("../clipboard"),c=r.isChrome<18,u=r.isIE,h=r.isChrome>63,d=400,p=e("../lib/keys"),g=p.KEY_MODS,m=r.isIOS,f=m?/\s/:/\n/,y=r.isMobile;t.TextInput=function(e,t){var n=s.createElement("textarea");n.className="ace_text-input",n.setAttribute("wrap","off"),n.setAttribute("autocorrect","off"),n.setAttribute("autocapitalize","off"),n.setAttribute("spellcheck",!1),n.style.opacity="0",e.insertBefore(n,e.firstChild);var b=!1,v=!1,w=!1,A=!1,C="";y||(n.style.fontSize="1px");var k=!1,x=!1,S="",$=0,E=0,O=0,T=Number.MAX_SAFE_INTEGER,_=Number.MIN_SAFE_INTEGER,R=0;try{var M=document.activeElement===n}catch(e){}this.setNumberOfExtraLines=function(e){T=Number.MAX_SAFE_INTEGER,_=Number.MIN_SAFE_INTEGER,R=e<0?0:e},this.setAriaOptions=function(e){if(e.activeDescendant?(n.setAttribute("aria-haspopup","true"),n.setAttribute("aria-autocomplete",e.inline?"both":"list"),n.setAttribute("aria-activedescendant",e.activeDescendant)):(n.setAttribute("aria-haspopup","false"),n.setAttribute("aria-autocomplete","both"),n.removeAttribute("aria-activedescendant")),e.role&&n.setAttribute("role",e.role),e.setLabel&&(n.setAttribute("aria-roledescription",o("editor")),t.session)){var i=t.session.selection.cursor.row;n.setAttribute("aria-label",o("Cursor at row $0",[i+1]))}},this.setAriaOptions({role:"textbox"}),i.addListener(n,"blur",(function(e){x||(t.onBlur(e),M=!1)}),t),i.addListener(n,"focus",(function(e){if(!x){if(M=!0,r.isEdge)try{if(!document.hasFocus())return}catch(e){}t.onFocus(e),r.isEdge?setTimeout(B):B()}}),t),this.$focusScroll=!1,this.focus=function(){if(this.setAriaOptions({setLabel:t.renderer.enableKeyboardAccessibility}),C||h||"browser"==this.$focusScroll)return n.focus({preventScroll:!0});var e=n.style.top;n.style.position="fixed",n.style.top="0px";try{var i=0!=n.getBoundingClientRect().top}catch(e){return}var o=[];if(i)for(var r=n.parentElement;r&&1==r.nodeType;)o.push(r),r.setAttribute("ace_nocontext",!0),r=!r.parentElement&&r.getRootNode?r.getRootNode().host:r.parentElement;n.focus({preventScroll:!0}),i&&o.forEach((function(e){e.removeAttribute("ace_nocontext")})),setTimeout((function(){n.style.position="","0px"==n.style.top&&(n.style.top=e)}),0)},this.blur=function(){n.blur()},this.isFocused=function(){return M},t.on("beforeEndOperation",(function(){var e=t.curOp,i=e&&e.command&&e.command.name;if("insertstring"!=i){var o=i&&(e.docChanged||e.selectionChanged);w&&o&&(S=n.value="",V()),B()}}));var L=function(e,n){for(var i=n,o=1;o<=e-T&&o<2*R+1;o++)i+=t.session.getLine(e-o).length+1;return i},B=m?function(e){if(M&&(!b||e)&&!A){e||(e="");var i="\n ab"+e+"cde fg\n";i!=n.value&&(n.value=S=i);var o=4+(e.length||(t.selection.isEmpty()?0:1));4==$&&E==o||n.setSelectionRange(4,o),$=4,E=o}}:function(){if(!w&&!A&&(M||I)){w=!0;var e=0,i=0,o="";if(t.session){var r=t.selection,s=r.getRange(),a=r.cursor.row;a===_+1?_=(T=_+1)+2*R:a===T-1?T=(_=T-1)-2*R:(a_+1)&&(T=a>R?a-R:0,_=a>R?a+R:2*R);for(var l=[],c=T;c<=_;c++)l.push(t.session.getLine(c));if(o=l.join("\n"),e=L(s.start.row,s.start.column),i=L(s.end.row,s.end.column),s.start.row_){var h=t.session.getLine(_+1);i=s.end.row>_+1?h.length:s.end.column,i+=o.length+1,o=o+"\n"+h}else y&&a>0&&(o="\n"+o,i+=1,e+=1);o.length>d&&(e0&&S[d]==e[d];)d++,a--;for(c=c.slice(d),d=1;l>0&&S.length-d>$-1&&S[S.length-d]==e[e.length-d];)d++,l--;u-=d-1,h-=d-1;var p=c.length-d+1;if(p<0&&(a=-p,p=0),c=c.slice(0,p),!(i||c||u||a||l||h))return"";A=!0;var g=!1;return r.isAndroid&&". "==c&&(c=" ",g=!0),c&&!a&&!l&&!u&&!h||k?t.onTextInput(c):t.onTextInput(c,{extendLeft:a,extendRight:l,restoreStart:u,restoreEnd:h}),A=!1,S=e,$=o,E=s,O=h,g?"\n":c},D=function(e){if(w)return U();if(e&&e.inputType){if("historyUndo"==e.inputType)return t.execCommand("undo");if("historyRedo"==e.inputType)return t.execCommand("redo")}var i=n.value,o=P(i,!0);(i.length>500||f.test(o)||y&&$<1&&$==E)&&B()},F=function(e,t,n){var i=e.clipboardData||window.clipboardData;if(i&&!c){var o=u||n?"Text":"text/plain";try{return t?!1!==i.setData(o,t):i.getData(o)}catch(e){if(!n)return F(e,t,!0)}}},W=function(e,o){var r=t.getCopyText();if(!r)return i.preventDefault(e);F(e,r)?(m&&(B(r),b=r,setTimeout((function(){b=!1}),10)),o?t.onCut():t.onCopy(),i.preventDefault(e)):(b=!0,n.value=r,n.select(),setTimeout((function(){b=!1,B(),o?t.onCut():t.onCopy()})))},H=function(e){W(e,!0)},j=function(e){W(e,!1)},z=function(e){var o=F(e);l.pasteCancelled()||("string"==typeof o?(o&&t.onPaste(o,e),r.isIE&&setTimeout(B),i.preventDefault(e)):(n.value="",v=!0))};i.addCommandKeyListener(n,t.onCommandKey.bind(t),t),i.addListener(n,"select",(function(e){w||(b?b=!1:function(e){return 0===e.selectionStart&&e.selectionEnd>=S.length&&e.value===S&&S&&e.selectionEnd!==E}(n)?(t.selectAll(),B()):y&&n.selectionStart!=$&&B())}),t),i.addListener(n,"input",D,t),i.addListener(n,"cut",H,t),i.addListener(n,"copy",j,t),i.addListener(n,"paste",z,t),"oncut"in n&&"oncopy"in n&&"onpaste"in n||i.addListener(e,"keydown",(function(e){if((!r.isMac||e.metaKey)&&e.ctrlKey)switch(e.keyCode){case 67:j(e);break;case 86:z(e);break;case 88:H(e)}}),t);var U=function(){if(w&&t.onCompositionUpdate&&!t.$readOnly){if(k)return G();if(w.useTextareaForIME)t.onCompositionUpdate(n.value);else{var e=n.value;P(e),w.markerRange&&(w.context&&(w.markerRange.start.column=w.selectionStart=w.context.compositionStartOffset),w.markerRange.end.column=w.markerRange.start.column+E-w.selectionStart+O)}}},V=function(e){t.onCompositionEnd&&!t.$readOnly&&(w=!1,t.onCompositionEnd(),t.off("mousedown",G),e&&D())};function G(){x=!0,n.blur(),n.focus(),x=!1}var K,q=a.delayedCall(U,50).schedule.bind(null,null);function Y(){clearTimeout(K),K=setTimeout((function(){C&&(n.style.cssText=C,C=""),t.renderer.$isMousePressed=!1,t.renderer.$keepTextAreaAtCursor&&t.renderer.$moveTextAreaToCursor()}),0)}i.addListener(n,"compositionstart",(function(e){if(!w&&t.onCompositionStart&&!t.$readOnly&&(w={},!k)){e.data&&(w.useTextareaForIME=!1),setTimeout(U,0),t._signal("compositionStart"),t.on("mousedown",G);var i=t.getSelectionRange();i.end.row=i.start.row,i.end.column=i.start.column,w.markerRange=i,w.selectionStart=$,t.onCompositionStart(w),w.useTextareaForIME?(S=n.value="",$=0,E=0):(n.msGetInputContext&&(w.context=n.msGetInputContext()),n.getInputContext&&(w.context=n.getInputContext()))}}),t),i.addListener(n,"compositionupdate",U,t),i.addListener(n,"keyup",(function(e){27==e.keyCode&&n.value.lengthE&&"\n"==S[r]?s=p.end:i<$&&" "==S[i-1]?(s=p.left,a=g.option):i<$||i==$&&E!=$&&i==r?s=p.left:r>E&&S.slice(0,r).split("\n").length>2?s=p.down:r>E&&" "==S[r-1]?(s=p.right,a=g.option):(r>E||r==E&&E!=$&&i==r)&&(s=p.right),i!==r&&(a|=g.shift),s){if(!t.onCommandKey({},a,s)&&t.commands){s=p.keyCodeToString(s);var l=t.commands.findKeyCommand(a,s);l&&t.execCommand(l)}$=i,E=r,B("")}}};document.addEventListener("selectionchange",r),t.on("destroy",(function(){document.removeEventListener("selectionchange",r)}))}(0,t,n),this.destroy=function(){n.parentElement&&n.parentElement.removeChild(n)}},t.$setUserAgentForTests=function(e,t){y=e,m=t}})),ace.define("ace/mouse/default_handlers",["require","exports","module","ace/lib/useragent"],(function(e,t,n){"use strict";var i=e("../lib/useragent"),o=function(){function e(e){e.$clickSelection=null;var t=e.editor;t.setDefaultHandler("mousedown",this.onMouseDown.bind(e)),t.setDefaultHandler("dblclick",this.onDoubleClick.bind(e)),t.setDefaultHandler("tripleclick",this.onTripleClick.bind(e)),t.setDefaultHandler("quadclick",this.onQuadClick.bind(e)),t.setDefaultHandler("mousewheel",this.onMouseWheel.bind(e)),["select","startSelect","selectEnd","selectAllEnd","selectByWordsEnd","selectByLinesEnd","dragWait","dragWaitEnd","focusWait"].forEach((function(t){e[t]=this[t]}),this),e.selectByLines=this.extendSelectionBy.bind(e,"getLineRange"),e.selectByWords=this.extendSelectionBy.bind(e,"getWordRange")}return e.prototype.onMouseDown=function(e){var t=e.inSelection(),n=e.getDocumentPosition();this.mousedownEvent=e;var o=this.editor,r=e.getButton();return 0!==r?((o.getSelectionRange().isEmpty()||1==r)&&o.selection.moveToPosition(n),void(2==r&&(o.textInput.onContextMenu(e.domEvent),i.isMozilla||e.preventDefault()))):(this.mousedownEvent.time=Date.now(),!t||o.isFocused()||(o.focus(),!this.$focusTimeout||this.$clickSelection||o.inMultiSelectMode)?(this.captureMouse(e),this.startSelect(n,e.domEvent._clicks>1),e.preventDefault()):(this.setState("focusWait"),void this.captureMouse(e)))},e.prototype.startSelect=function(e,t){e=e||this.editor.renderer.screenToTextCoordinates(this.x,this.y);var n=this.editor;this.mousedownEvent&&(this.mousedownEvent.getShiftKey()?n.selection.selectToPosition(e):t||n.selection.moveToPosition(e),t||this.select(),n.setStyle("ace_selecting"),this.setState("select"))},e.prototype.select=function(){var e,t=this.editor,n=t.renderer.screenToTextCoordinates(this.x,this.y);if(this.$clickSelection){var i=this.$clickSelection.comparePoint(n);if(-1==i)e=this.$clickSelection.end;else if(1==i)e=this.$clickSelection.start;else{var o=r(this.$clickSelection,n);n=o.cursor,e=o.anchor}t.selection.setSelectionAnchor(e.row,e.column)}t.selection.selectToPosition(n),t.renderer.scrollCursorIntoView()},e.prototype.extendSelectionBy=function(e){var t,n=this.editor,i=n.renderer.screenToTextCoordinates(this.x,this.y),o=n.selection[e](i.row,i.column);if(this.$clickSelection){var s=this.$clickSelection.comparePoint(o.start),a=this.$clickSelection.comparePoint(o.end);if(-1==s&&a<=0)t=this.$clickSelection.end,o.end.row==i.row&&o.end.column==i.column||(i=o.start);else if(1==a&&s>=0)t=this.$clickSelection.start,o.start.row==i.row&&o.start.column==i.column||(i=o.end);else if(-1==s&&1==a)i=o.end,t=o.start;else{var l=r(this.$clickSelection,i);i=l.cursor,t=l.anchor}n.selection.setSelectionAnchor(t.row,t.column)}n.selection.selectToPosition(i),n.renderer.scrollCursorIntoView()},e.prototype.selectByLinesEnd=function(){this.$clickSelection=null,this.editor.unsetStyle("ace_selecting")},e.prototype.focusWait=function(){var e,t,n,i,o=(e=this.mousedownEvent.x,t=this.mousedownEvent.y,n=this.x,i=this.y,Math.sqrt(Math.pow(n-e,2)+Math.pow(i-t,2))),r=Date.now();(o>0||r-this.mousedownEvent.time>this.$focusTimeout)&&this.startSelect(this.mousedownEvent.getDocumentPosition())},e.prototype.onDoubleClick=function(e){var t=e.getDocumentPosition(),n=this.editor,i=n.session.getBracketRange(t);i?(i.isEmpty()&&(i.start.column--,i.end.column++),this.setState("select")):(i=n.selection.getWordRange(t.row,t.column),this.setState("selectByWords")),this.$clickSelection=i,this.select()},e.prototype.onTripleClick=function(e){var t=e.getDocumentPosition(),n=this.editor;this.setState("selectByLines");var i=n.getSelectionRange();i.isMultiLine()&&i.contains(t.row,t.column)?(this.$clickSelection=n.selection.getLineRange(i.start.row),this.$clickSelection.end=n.selection.getLineRange(i.end.row).end):this.$clickSelection=n.selection.getLineRange(t.row),this.select()},e.prototype.onQuadClick=function(e){var t=this.editor;t.selectAll(),this.$clickSelection=t.getSelectionRange(),this.setState("selectAll")},e.prototype.onMouseWheel=function(e){if(!e.getAccelKey()){e.getShiftKey()&&e.wheelY&&!e.wheelX&&(e.wheelX=e.wheelY,e.wheelY=0);var t=this.editor;this.$lastScroll||(this.$lastScroll={t:0,vx:0,vy:0,allowed:0});var n=this.$lastScroll,i=e.domEvent.timeStamp,o=i-n.t,r=o?e.wheelX/o:n.vx,s=o?e.wheelY/o:n.vy;o<550&&(r=(r+n.vx)/2,s=(s+n.vy)/2);var a=Math.abs(r/s),l=!1;return a>=1&&t.renderer.isScrollableBy(e.wheelX*e.speed,0)&&(l=!0),a<=1&&t.renderer.isScrollableBy(0,e.wheelY*e.speed)&&(l=!0),l?n.allowed=i:i-n.allowed<550&&(Math.abs(r)<=1.5*Math.abs(n.vx)&&Math.abs(s)<=1.5*Math.abs(n.vy)?(l=!0,n.allowed=i):n.allowed=0),n.t=i,n.vx=r,n.vy=s,l?(t.renderer.scrollBy(e.wheelX*e.speed,e.wheelY*e.speed),e.stop()):void 0}},e}();function r(e,t){if(e.start.row==e.end.row)var n=2*t.column-e.start.column-e.end.column;else if(e.start.row!=e.end.row-1||e.start.column||e.end.column)n=2*t.row-e.start.row-e.end.row;else n=t.column-4;return n<0?{cursor:e.start,anchor:e.end}:{cursor:e.end,anchor:e.start}}o.prototype.selectEnd=o.prototype.selectByLinesEnd,o.prototype.selectAllEnd=o.prototype.selectByLinesEnd,o.prototype.selectByWordsEnd=o.prototype.selectByLinesEnd,t.DefaultHandlers=o})),ace.define("ace/tooltip",["require","exports","module","ace/lib/dom","ace/lib/event","ace/range"],(function(e,t,n){"use strict";var i,o=this&&this.__extends||(i=function(e,t){return i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},i(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}i(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}),r=this&&this.__values||function(e){var t="function"==typeof Symbol&&Symbol.iterator,n=t&&e[t],i=0;if(n)return n.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&i>=e.length&&(e=void 0),{value:e&&e[i++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},s=e("./lib/dom"),a=e("./lib/event"),l=e("./range").Range,c="ace_tooltip",u=function(){function e(e){this.isOpen=!1,this.$element=null,this.$parentNode=e}return e.prototype.$init=function(){return this.$element=s.createElement("div"),this.$element.className=c,this.$element.style.display="none",this.$parentNode.appendChild(this.$element),this.$element},e.prototype.getElement=function(){return this.$element||this.$init()},e.prototype.setText=function(e){this.getElement().textContent=e},e.prototype.setHtml=function(e){this.getElement().innerHTML=e},e.prototype.setPosition=function(e,t){this.getElement().style.left=e+"px",this.getElement().style.top=t+"px"},e.prototype.setClassName=function(e){s.addCssClass(this.getElement(),e)},e.prototype.setTheme=function(e){this.$element.className=c+" "+(e.isDark?"ace_dark ":"")+(e.cssClass||"")},e.prototype.show=function(e,t,n){null!=e&&this.setText(e),null!=t&&null!=n&&this.setPosition(t,n),this.isOpen||(this.getElement().style.display="block",this.isOpen=!0)},e.prototype.hide=function(){this.isOpen&&(this.getElement().style.display="none",this.getElement().className=c,this.isOpen=!1)},e.prototype.getHeight=function(){return this.getElement().offsetHeight},e.prototype.getWidth=function(){return this.getElement().offsetWidth},e.prototype.destroy=function(){this.isOpen=!1,this.$element&&this.$element.parentNode&&this.$element.parentNode.removeChild(this.$element)},e}(),h=new(function(){function e(){this.popups=[]}return e.prototype.addPopup=function(e){this.popups.push(e),this.updatePopups()},e.prototype.removePopup=function(e){var t=this.popups.indexOf(e);-1!==t&&(this.popups.splice(t,1),this.updatePopups())},e.prototype.updatePopups=function(){var e,t,n,i;this.popups.sort((function(e,t){return t.priority-e.priority}));var o=[];try{for(var s=r(this.popups),a=s.next();!a.done;a=s.next()){var l=a.value,c=!0;try{for(var u=(n=void 0,r(o)),h=u.next();!h.done;h=u.next()){var d=h.value;if(this.doPopupsOverlap(d,l)){c=!1;break}}}catch(e){n={error:e}}finally{try{h&&!h.done&&(i=u.return)&&i.call(u)}finally{if(n)throw n.error}}c?o.push(l):l.hide()}}catch(t){e={error:t}}finally{try{a&&!a.done&&(t=s.return)&&t.call(s)}finally{if(e)throw e.error}}},e.prototype.doPopupsOverlap=function(e,t){var n=e.getElement().getBoundingClientRect(),i=t.getElement().getBoundingClientRect();return n.lefti.left&&n.topi.top},e}());t.popupManager=h,t.Tooltip=u;var d=function(e){function t(t){void 0===t&&(t=document.body);var n=e.call(this,t)||this;n.timeout=void 0,n.lastT=0,n.idleTime=350,n.lastEvent=void 0,n.onMouseOut=n.onMouseOut.bind(n),n.onMouseMove=n.onMouseMove.bind(n),n.waitForHover=n.waitForHover.bind(n),n.hide=n.hide.bind(n);var i=n.getElement();return i.style.whiteSpace="pre-wrap",i.style.pointerEvents="auto",i.addEventListener("mouseout",n.onMouseOut),i.tabIndex=-1,i.addEventListener("blur",function(){i.contains(document.activeElement)||this.hide()}.bind(n)),i.addEventListener("wheel",a.stopPropagation),n}return o(t,e),t.prototype.addToEditor=function(e){e.on("mousemove",this.onMouseMove),e.on("mousedown",this.hide),e.renderer.getMouseEventTarget().addEventListener("mouseout",this.onMouseOut,!0)},t.prototype.removeFromEditor=function(e){e.off("mousemove",this.onMouseMove),e.off("mousedown",this.hide),e.renderer.getMouseEventTarget().removeEventListener("mouseout",this.onMouseOut,!0),this.timeout&&(clearTimeout(this.timeout),this.timeout=null)},t.prototype.onMouseMove=function(e,t){this.lastEvent=e,this.lastT=Date.now();var n=t.$mouseHandler.isMousePressed;if(this.isOpen){var i=this.lastEvent&&this.lastEvent.getDocumentPosition();this.range&&this.range.contains(i.row,i.column)&&!n&&!this.isOutsideOfText(this.lastEvent)||this.hide()}this.timeout||n||(this.lastEvent=e,this.timeout=setTimeout(this.waitForHover,this.idleTime))},t.prototype.waitForHover=function(){this.timeout&&clearTimeout(this.timeout);var e=Date.now()-this.lastT;this.idleTime-e>10?this.timeout=setTimeout(this.waitForHover,this.idleTime-e):(this.timeout=null,this.lastEvent&&!this.isOutsideOfText(this.lastEvent)&&this.$gatherData(this.lastEvent,this.lastEvent.editor))},t.prototype.isOutsideOfText=function(e){var t=e.editor,n=e.getDocumentPosition(),i=t.session.getLine(n.row);if(n.column==i.length){var o=t.renderer.pixelToScreenCoordinates(e.clientX,e.clientY),r=t.session.documentToScreenPosition(n.row,n.column);if(r.column!=o.column||r.row!=o.row)return!0}return!1},t.prototype.setDataProvider=function(e){this.$gatherData=e},t.prototype.showForRange=function(e,t,n,i){if(!(i&&i!=this.lastEvent||this.isOpen&&document.activeElement==this.getElement())){var o=e.renderer;this.isOpen||(h.addPopup(this),this.$registerCloseEvents(),this.setTheme(o.theme)),this.isOpen=!0,this.addMarker(t,e.session),this.range=l.fromPoints(t.start,t.end);var r=o.textToScreenCoordinates(t.start.row,t.start.column),s=o.scroller.getBoundingClientRect();r.pageX=e.length&&(e=void 0),{value:e&&e[i++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},s=e("../lib/dom"),a=e("../lib/event"),l=e("../tooltip").Tooltip,c=e("../config").nls;t.GutterHandler=function(e){var t,n,i=e.editor,o=i.renderer.$gutterLayer,r=new u(i);function l(){t&&(t=clearTimeout(t)),r.isOpen&&(r.hideTooltip(),i.off("mousewheel",l))}function c(e){r.setPosition(e.x,e.y)}e.editor.setDefaultHandler("guttermousedown",(function(t){if(i.isFocused()&&0==t.getButton()&&"foldWidgets"!=o.getRegion(t)){var n=t.getDocumentPosition().row,r=i.session.selection;if(t.getShiftKey())r.selectTo(n,0);else{if(2==t.domEvent.detail)return i.selectAll(),t.preventDefault();e.$clickSelection=i.selection.getLineRange(n)}return e.setState("selectByLines"),e.captureMouse(t),t.preventDefault()}})),e.editor.setDefaultHandler("guttermousemove",(function(a){var u=a.domEvent.target||a.domEvent.srcElement;if(s.hasCssClass(u,"ace_fold-widget"))return l();r.isOpen&&e.$tooltipFollowsMouse&&c(a),n=a,t||(t=setTimeout((function(){t=null,n&&!e.isMousePressed?function(){var t=n.getDocumentPosition().row;if(t==i.session.getLength()){var s=i.renderer.pixelToScreenCoordinates(0,n.y).row,a=n.$pos;if(s>i.session.documentToScreenRow(a.row,a.column))return l()}if(r.showTooltip(t),r.isOpen)if(i.on("mousewheel",l),e.$tooltipFollowsMouse)c(n);else{var u=n.getGutterRow(),h=o.$lines.get(u);if(h){var d=h.element.querySelector(".ace_gutter_annotation").getBoundingClientRect(),p=r.getElement().style;p.left=d.right+"px",p.top=d.bottom+"px"}else c(n)}}():l()}),50))})),a.addListener(i.renderer.$gutter,"mouseout",(function(e){n=null,r.isOpen&&!t&&(t=setTimeout((function(){t=null,l()}),50))}),i),i.on("changeSession",l),i.on("input",l)};var u=function(e){function t(t){var n=e.call(this,t.container)||this;return n.editor=t,n}return o(t,e),t.prototype.setPosition=function(e,t){var n=window.innerWidth||document.documentElement.clientWidth,i=window.innerHeight||document.documentElement.clientHeight,o=this.getWidth(),r=this.getHeight();(e+=15)+o>n&&(e-=e+o-n),(t+=15)+r>i&&(t-=20+r),l.prototype.setPosition.call(this,e,t)},Object.defineProperty(t,"annotationLabels",{get:function(){return{error:{singular:c("error"),plural:c("errors")},warning:{singular:c("warning"),plural:c("warnings")},info:{singular:c("information message"),plural:c("information messages")}}},enumerable:!1,configurable:!0}),t.prototype.showTooltip=function(e){var n,i=this.editor.renderer.$gutterLayer,o=i.$annotations[e];n=o?{text:Array.from(o.text),type:Array.from(o.type)}:{text:[],type:[]};var r=i.session.getFoldLine(e);if(r&&i.$showFoldedAnnotations){for(var s,a={error:[],warning:[],info:[]},l=e+1;l<=r.end.row;l++)if(i.$annotations[l])for(var c=0;c ").concat(n.text[l]);d[n.type[l].replace("_fold","")].push(g)}var m=[].concat(d.error,d.warning,d.info).join("
    ");this.setHtml(m),this.$element.setAttribute("aria-live","polite"),this.isOpen||(this.setTheme(this.editor.renderer.theme),this.setClassName("ace_gutter-tooltip")),this.show(),this.editor._signal("showGutterTooltip",this)},t.prototype.hideTooltip=function(){this.$element.removeAttribute("aria-live"),this.hide(),this.editor._signal("hideGutterTooltip",this)},t.annotationsToSummaryString=function(e){var n,i,o=[];try{for(var s=r(["error","warning","info"]),a=s.next();!a.done;a=s.next()){var l=a.value;if(e[l].length){var c=1===e[l].length?t.annotationLabels[l].singular:t.annotationLabels[l].plural;o.push("".concat(e[l].length," ").concat(c))}}}catch(e){n={error:e}}finally{try{a&&!a.done&&(i=s.return)&&i.call(s)}finally{if(n)throw n.error}}return o.join(", ")},t}(l);t.GutterTooltip=u})),ace.define("ace/mouse/mouse_event",["require","exports","module","ace/lib/event","ace/lib/useragent"],(function(e,t,n){"use strict";var i=e("../lib/event"),o=e("../lib/useragent"),r=function(){function e(e,t){this.domEvent=e,this.editor=t,this.x=this.clientX=e.clientX,this.y=this.clientY=e.clientY,this.$pos=null,this.$inSelection=null,this.propagationStopped=!1,this.defaultPrevented=!1}return e.prototype.stopPropagation=function(){i.stopPropagation(this.domEvent),this.propagationStopped=!0},e.prototype.preventDefault=function(){i.preventDefault(this.domEvent),this.defaultPrevented=!0},e.prototype.stop=function(){this.stopPropagation(),this.preventDefault()},e.prototype.getDocumentPosition=function(){return this.$pos||(this.$pos=this.editor.renderer.screenToTextCoordinates(this.clientX,this.clientY)),this.$pos},e.prototype.getGutterRow=function(){var e=this.getDocumentPosition().row;return this.editor.session.documentToScreenRow(e,0)-this.editor.session.documentToScreenRow(this.editor.renderer.$gutterLayer.$lines.get(0).row,0)},e.prototype.inSelection=function(){if(null!==this.$inSelection)return this.$inSelection;var e=this.editor.getSelectionRange();if(e.isEmpty())this.$inSelection=!1;else{var t=this.getDocumentPosition();this.$inSelection=e.contains(t.row,t.column)}return this.$inSelection},e.prototype.getButton=function(){return i.getButton(this.domEvent)},e.prototype.getShiftKey=function(){return this.domEvent.shiftKey},e.prototype.getAccelKey=function(){return o.isMac?this.domEvent.metaKey:this.domEvent.ctrlKey},e}();t.MouseEvent=r})),ace.define("ace/mouse/dragdrop_handler",["require","exports","module","ace/lib/dom","ace/lib/event","ace/lib/useragent"],(function(e,t,n){"use strict";var i=e("../lib/dom"),o=e("../lib/event"),r=e("../lib/useragent");function s(e){var t=e.editor,n=i.createElement("div");n.style.cssText="top:-100px;position:absolute;z-index:2147483647;opacity:0.5",n.textContent=" ",["dragWait","dragWaitEnd","startDrag","dragReadyEnd","onMouseDrag"].forEach((function(t){e[t]=this[t]}),this),t.on("mousedown",this.onMouseDown.bind(e));var s,l,c,u,h,d,p,g,m,f,y,b=t.container,v=0;function w(){var e=d;(function(e,n){var i=Date.now(),o=!n||e.row!=n.row,r=!n||e.column!=n.column;!f||o||r?(t.moveCursorToPosition(e),f=i,y={x:l,y:c}):a(y.x,y.y,l,c)>5?f=null:i-f>=200&&(t.renderer.scrollCursorIntoView(),f=null)})(d=t.renderer.screenToTextCoordinates(l,c),e),function(e,n){var i=Date.now(),o=t.renderer.layerConfig.lineHeight,r=t.renderer.layerConfig.characterWidth,s=t.renderer.scroller.getBoundingClientRect(),a={x:{left:l-s.left,right:s.right-l},y:{top:c-s.top,bottom:s.bottom-c}},u=Math.min(a.x.left,a.x.right),h=Math.min(a.y.top,a.y.bottom),d={row:e.row,column:e.column};u/r<=2&&(d.column+=a.x.left=200&&t.renderer.scrollCursorIntoView(d):m=i:m=null}(d,e)}function A(){h=t.selection.toOrientedRange(),s=t.session.addMarker(h,"ace_selection",t.getSelectionStyle()),t.clearSelection(),t.isFocused()&&t.renderer.$cursorLayer.setBlinking(!1),clearInterval(u),w(),u=setInterval(w,20),v=0,o.addListener(document,"mousemove",x)}function C(){clearInterval(u),t.session.removeMarker(s),s=null,t.selection.fromOrientedRange(h),t.isFocused()&&!g&&t.$resetCursorStyle(),h=null,d=null,v=0,m=null,f=null,o.removeListener(document,"mousemove",x)}this.onDragStart=function(e){if(this.cancelDrag||!b.draggable){var i=this;return setTimeout((function(){i.startSelect(),i.captureMouse(e)}),0),e.preventDefault()}h=t.getSelectionRange();var o=e.dataTransfer;o.effectAllowed=t.getReadOnly()?"copy":"copyMove",t.container.appendChild(n),o.setDragImage&&o.setDragImage(n,0,0),setTimeout((function(){t.container.removeChild(n)})),o.clearData(),o.setData("Text",t.session.getTextRange()),g=!0,this.setState("drag")},this.onDragEnd=function(e){if(b.draggable=!1,g=!1,this.setState(null),!t.getReadOnly()){var n=e.dataTransfer.dropEffect;p||"move"!=n||t.session.remove(t.getSelectionRange()),t.$resetCursorStyle()}this.editor.unsetStyle("ace_dragging"),this.editor.renderer.setCursorStyle("")},this.onDragEnter=function(e){if(!t.getReadOnly()&&S(e.dataTransfer))return l=e.clientX,c=e.clientY,s||A(),v++,e.dataTransfer.dropEffect=p=$(e),o.preventDefault(e)},this.onDragOver=function(e){if(!t.getReadOnly()&&S(e.dataTransfer))return l=e.clientX,c=e.clientY,s||(A(),v++),null!==k&&(k=null),e.dataTransfer.dropEffect=p=$(e),o.preventDefault(e)},this.onDragLeave=function(e){if(--v<=0&&s)return C(),p=null,o.preventDefault(e)},this.onDrop=function(e){if(d){var n=e.dataTransfer;if(g)switch(p){case"move":h=h.contains(d.row,d.column)?{start:d,end:d}:t.moveText(h,d);break;case"copy":h=t.moveText(h,d,!0)}else{var i=n.getData("Text");h={start:d,end:t.session.insert(d,i)},t.focus(),p=null}return C(),o.preventDefault(e)}},o.addListener(b,"dragstart",this.onDragStart.bind(e),t),o.addListener(b,"dragend",this.onDragEnd.bind(e),t),o.addListener(b,"dragenter",this.onDragEnter.bind(e),t),o.addListener(b,"dragover",this.onDragOver.bind(e),t),o.addListener(b,"dragleave",this.onDragLeave.bind(e),t),o.addListener(b,"drop",this.onDrop.bind(e),t);var k=null;function x(){null==k&&(k=setTimeout((function(){null!=k&&s&&C()}),20))}function S(e){var t=e.types;return!t||Array.prototype.some.call(t,(function(e){return"text/plain"==e||"Text"==e}))}function $(e){var t=["copy","copymove","all","uninitialized"],n=r.isMac?e.altKey:e.ctrlKey,i="uninitialized";try{i=e.dataTransfer.effectAllowed.toLowerCase()}catch(e){}var o="none";return n&&t.indexOf(i)>=0?o="copy":["move","copymove","linkmove","all","uninitialized"].indexOf(i)>=0?o="move":t.indexOf(i)>=0&&(o="copy"),o}}function a(e,t,n,i){return Math.sqrt(Math.pow(n-e,2)+Math.pow(i-t,2))}(function(){this.dragWait=function(){Date.now()-this.mousedownEvent.time>this.editor.getDragDelay()&&this.startDrag()},this.dragWaitEnd=function(){this.editor.container.draggable=!1,this.startSelect(this.mousedownEvent.getDocumentPosition()),this.selectEnd()},this.dragReadyEnd=function(e){this.editor.$resetCursorStyle(),this.editor.unsetStyle("ace_dragging"),this.editor.renderer.setCursorStyle(""),this.dragWaitEnd()},this.startDrag=function(){this.cancelDrag=!1;var e=this.editor;e.container.draggable=!0,e.renderer.$cursorLayer.setBlinking(!1),e.setStyle("ace_dragging");var t=r.isWin?"default":"move";e.renderer.setCursorStyle(t),this.setState("dragReady")},this.onMouseDrag=function(e){var t=this.editor.container;r.isIE&&"dragReady"==this.state&&a(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y)>3&&t.dragDrop(),"dragWait"===this.state&&a(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y)>0&&(t.draggable=!1,this.startSelect(this.mousedownEvent.getDocumentPosition()))},this.onMouseDown=function(e){if(this.$dragEnabled){this.mousedownEvent=e;var t=this.editor,n=e.inSelection(),i=e.getButton();if(1===(e.domEvent.detail||1)&&0===i&&n){if(e.editor.inMultiSelectMode&&(e.getAccelKey()||e.getShiftKey()))return;this.mousedownEvent.time=Date.now();var o=e.domEvent.target||e.domEvent.srcElement;"unselectable"in o&&(o.unselectable="on"),t.getDragDelay()?(r.isWebKit&&(this.cancelDrag=!0,t.container.draggable=!0),this.setState("dragWait")):this.startDrag(),this.captureMouse(e,this.onMouseDrag.bind(this)),e.defaultPrevented=!0}}}}).call(s.prototype),t.DragdropHandler=s})),ace.define("ace/mouse/touch_handler",["require","exports","module","ace/mouse/mouse_event","ace/lib/event","ace/lib/dom"],(function(e,t,n){"use strict";var i=e("./mouse_event").MouseEvent,o=e("../lib/event"),r=e("../lib/dom");t.addTouchListeners=function(e,t){var n,s,a,l,c,u,h,d,p,g="scroll",m=0,f=0,y=0,b=0;function v(){var e,n,i;p||(e=window.navigator&&window.navigator.clipboard,n=!1,i=function(i){var o,s,a=i.target.getAttribute("action");if("more"==a||!n)return n=!n,o=t.getCopyText(),s=t.session.getUndoManager().hasUndo(),void p.replaceChild(r.buildDom(n?["span",!o&&["span",{class:"ace_mobile-button",action:"selectall"},"Select All"],o&&["span",{class:"ace_mobile-button",action:"copy"},"Copy"],o&&["span",{class:"ace_mobile-button",action:"cut"},"Cut"],e&&["span",{class:"ace_mobile-button",action:"paste"},"Paste"],s&&["span",{class:"ace_mobile-button",action:"undo"},"Undo"],["span",{class:"ace_mobile-button",action:"find"},"Find"],["span",{class:"ace_mobile-button",action:"openCommandPalette"},"Palette"]]:["span"]),p.firstChild);"paste"==a?e.readText().then((function(e){t.execCommand(a,e)})):a&&("cut"!=a&&"copy"!=a||(e?e.writeText(t.getCopyText()):document.execCommand("copy")),t.execCommand(a)),p.firstChild.style.display="none",n=!1,"openCommandPalette"!=a&&t.focus()},p=r.buildDom(["div",{class:"ace_mobile-menu",ontouchstart:function(e){g="menu",e.stopPropagation(),e.preventDefault(),t.textInput.focus()},ontouchend:function(e){e.stopPropagation(),e.preventDefault(),i(e)},onclick:i},["span"],["span",{class:"ace_mobile-button",action:"more"},"..."]],t.container));var o=t.selection.cursor,s=t.renderer.textToScreenCoordinates(o.row,o.column),a=t.renderer.textToScreenCoordinates(0,0).pageX,l=t.renderer.scrollLeft,c=t.container.getBoundingClientRect();p.style.top=s.pageY-c.top-3+"px",s.pageX-c.left1)return clearTimeout(c),c=null,a=-1,void(g="zoom");d=t.$mouseHandler.isMousePressed=!0;var r=t.renderer.layerConfig.lineHeight,u=t.renderer.layerConfig.lineHeight,p=e.timeStamp;l=p;var v=o[0],w=v.clientX,C=v.clientY;Math.abs(n-w)+Math.abs(s-C)>r&&(a=-1),n=e.clientX=w,s=e.clientY=C,y=b=0;var k=new i(e,t);if(h=k.getDocumentPosition(),p-a<500&&1==o.length&&!m)f++,e.preventDefault(),e.button=0,function(){c=null,clearTimeout(c),t.selection.moveToPosition(h);var e=f>=2?t.selection.getLineRange(h.row):t.session.getBracketRange(h);e&&!e.isEmpty()?t.selection.setRange(e):t.selection.selectWord(),g="wait"}();else{f=0;var x=t.selection.cursor,S=t.selection.isEmpty()?x:t.selection.anchor,$=t.renderer.$cursorLayer.getPixelPosition(x,!0),E=t.renderer.$cursorLayer.getPixelPosition(S,!0),O=t.renderer.scroller.getBoundingClientRect(),T=t.renderer.layerConfig.offset,_=t.renderer.scrollLeft,R=function(e,t){return(e/=u)*e+(t=t/r-.75)*t};if(e.clientXL?"cursor":"anchor"),g=L<3.5?"anchor":M<3.5?"cursor":"scroll",c=setTimeout(A,450)}a=p}),t),o.addListener(e,"touchend",(function(e){d=t.$mouseHandler.isMousePressed=!1,u&&clearInterval(u),"zoom"==g?(g="",m=0):c?(t.selection.moveToPosition(h),m=0,v()):"scroll"==g?(m+=60,u=setInterval((function(){m--<=0&&(clearInterval(u),u=null),Math.abs(y)<.01&&(y=0),Math.abs(b)<.01&&(b=0),m<20&&(y*=.9),m<20&&(b*=.9);var e=t.session.getScrollTop();t.renderer.scrollBy(10*y,10*b),e==t.session.getScrollTop()&&(m=0)}),10),w()):v(),clearTimeout(c),c=null}),t),o.addListener(e,"touchmove",(function(e){c&&(clearTimeout(c),c=null);var o=e.touches;if(!(o.length>1||"zoom"==g)){var r=o[0],a=n-r.clientX,u=s-r.clientY;if("wait"==g){if(!(a*a+u*u>4))return e.preventDefault();g="cursor"}n=r.clientX,s=r.clientY,e.clientX=r.clientX,e.clientY=r.clientY;var h=e.timeStamp,d=h-l;if(l=h,"scroll"==g){var p=new i(e,t);p.speed=1,p.wheelX=a,p.wheelY=u,10*Math.abs(a)=e){for(r=h+1;r=e;)r++;for(a=h,l=r-1;a=t.length||2!=(l=n[o-1])&&3!=l||2!=(c=t[o+1])&&3!=c?4:(r&&(c=3),c==l?c:4);case 10:return 2==(l=o>0?n[o-1]:5)&&o+10&&2==n[o-1])return 2;if(r)return 4;for(p=o+1,d=t.length;p=1425&&m<=2303||64286==m;if(l=t[p],f&&(1==l||7==l))return 1}return o<1||5==(l=t[o-1])?4:n[o-1];case 5:return r=!1,s=!0,i;case 6:return a=!0,4;case 13:case 14:case 16:case 17:case 15:r=!1;case h:return 4}}function f(e){var t=e.charCodeAt(0),n=t>>8;return 0==n?t>191?0:d[t]:5==n?/[\u0591-\u05f4]/.test(e)?1:0:6==n?/[\u0610-\u061a\u064b-\u065f\u06d6-\u06e4\u06e7-\u06ed]/.test(e)?12:/[\u0660-\u0669\u066b-\u066c]/.test(e)?3:1642==t?u:/[\u06f0-\u06f9]/.test(e)?2:7:32==n&&t<=8287?p[255&t]:254==n&&t>=65136?7:4}t.L=0,t.R=1,t.EN=2,t.ON_R=3,t.AN=4,t.R_H=5,t.B=6,t.RLE=7,t.DOT="·",t.doBidiReorder=function(e,n,u){if(e.length<2)return{};var d=e.split(""),p=new Array(d.length),y=new Array(d.length),b=[];i=u?1:0,function(e,t,n,u){var h=i?c:l,d=null,p=null,g=null,y=0,b=null,v=-1,w=null,A=null,C=[];if(!u)for(w=0,u=[];w0)if(16==b){for(w=v;w-1){for(w=v;w=0&&8==u[k];k--)t[k]=i}}(d,b,d.length,n);for(var v=0;v7&&n[v]<13||4===n[v]||n[v]===h)?b[v]=t.ON_R:v>0&&"ل"===d[v-1]&&/\u0622|\u0623|\u0625|\u0627/.test(d[v])&&(b[v-1]=b[v]=t.R_H,v++);for(d[d.length-1]===t.DOT&&(b[d.length-1]=t.B),"‫"===d[0]&&(b[0]=t.RLE),v=0;v=0&&(e=this.session.$docRowCache[n])}return e},e.prototype.getSplitIndex=function(){var e=0,t=this.session.$screenRowCache;if(t.length)for(var n,i=this.session.$getRowCacheIndex(t,this.currentRow);this.currentRow-e>0&&(n=this.session.$getRowCacheIndex(t,this.currentRow-e-1))===i;)i=n,e++;else e=this.currentRow;return e},e.prototype.updateRowLine=function(e,t){void 0===e&&(e=this.getDocumentRow());var n=e===this.session.getLength()-1?this.EOF:this.EOL;if(this.wrapIndent=0,this.line=this.session.getLine(e),this.isRtlDir=this.$isRtl||this.line.charAt(0)===this.RLE,this.session.$useWrapMode){var r=this.session.$wrapData[e];r&&(void 0===t&&(t=this.getSplitIndex()),t>0&&r.length?(this.wrapIndent=r.indent,this.wrapOffset=this.wrapIndent*this.charWidths[i.L],this.line=tt?this.session.getOverwrite()?e:e-1:t,o=i.getVisualFromLogicalIdx(n,this.bidiMap),r=this.bidiMap.bidiLevels,s=0;!this.session.getOverwrite()&&e<=t&&r[o]%2!=0&&o++;for(var a=0;at&&r[o]%2==0&&(s+=this.charWidths[r[o]]),this.wrapIndent&&(s+=this.isRtlDir?-1*this.wrapOffset:this.wrapOffset),this.isRtlDir&&(s+=this.rtlLineOffset),s},e.prototype.getSelections=function(e,t){var n,i=this.bidiMap,o=i.bidiLevels,r=[],s=0,a=Math.min(e,t)-this.wrapIndent,l=Math.max(e,t)-this.wrapIndent,c=!1,u=!1,h=0;this.wrapIndent&&(s+=this.isRtlDir?-1*this.wrapOffset:this.wrapOffset);for(var d,p=0;p=a&&dn+r/2;){if(n+=r,i===o.length-1){r=0;break}r=this.charWidths[o[++i]]}return i>0&&o[i-1]%2!=0&&o[i]%2==0?(e0&&o[i-1]%2==0&&o[i]%2!=0?t=1+(e>n?this.bidiMap.logicalFromVisual[i]:this.bidiMap.logicalFromVisual[i-1]):this.isRtlDir&&i===o.length-1&&0===r&&o[i-1]%2==0||!this.isRtlDir&&0===i&&o[i]%2!=0?t=1+this.bidiMap.logicalFromVisual[i]:(i>0&&o[i-1]%2!=0&&0!==r&&i--,t=this.bidiMap.logicalFromVisual[i]),0===t&&this.isRtlDir&&t++,t+this.wrapIndent},e}();t.BidiHandler=s})),ace.define("ace/selection",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/lib/event_emitter","ace/range"],(function(e,t,n){"use strict";var i=e("./lib/oop"),o=e("./lib/lang"),r=e("./lib/event_emitter").EventEmitter,s=e("./range").Range,a=function(){function e(e){this.session=e,this.doc=e.getDocument(),this.clearSelection(),this.cursor=this.lead=this.doc.createAnchor(0,0),this.anchor=this.doc.createAnchor(0,0),this.$silent=!1;var t=this;this.cursor.on("change",(function(e){t.$cursorChanged=!0,t.$silent||t._emit("changeCursor"),t.$isEmpty||t.$silent||t._emit("changeSelection"),t.$keepDesiredColumnOnChange||e.old.column==e.value.column||(t.$desiredColumn=null)})),this.anchor.on("change",(function(){t.$anchorChanged=!0,t.$isEmpty||t.$silent||t._emit("changeSelection")}))}return e.prototype.isEmpty=function(){return this.$isEmpty||this.anchor.row==this.lead.row&&this.anchor.column==this.lead.column},e.prototype.isMultiLine=function(){return!this.$isEmpty&&this.anchor.row!=this.cursor.row},e.prototype.getCursor=function(){return this.lead.getPosition()},e.prototype.setAnchor=function(e,t){this.$isEmpty=!1,this.anchor.setPosition(e,t)},e.prototype.getAnchor=function(){return this.$isEmpty?this.getSelectionLead():this.anchor.getPosition()},e.prototype.getSelectionLead=function(){return this.lead.getPosition()},e.prototype.isBackwards=function(){var e=this.anchor,t=this.lead;return e.row>t.row||e.row==t.row&&e.column>t.column},e.prototype.getRange=function(){var e=this.anchor,t=this.lead;return this.$isEmpty?s.fromPoints(t,t):this.isBackwards()?s.fromPoints(t,e):s.fromPoints(e,t)},e.prototype.clearSelection=function(){this.$isEmpty||(this.$isEmpty=!0,this._emit("changeSelection"))},e.prototype.selectAll=function(){this.$setSelection(0,0,Number.MAX_VALUE,Number.MAX_VALUE)},e.prototype.setRange=function(e,t){var n=t?e.end:e.start,i=t?e.start:e.end;this.$setSelection(n.row,n.column,i.row,i.column)},e.prototype.$setSelection=function(e,t,n,i){if(!this.$silent){var o=this.$isEmpty,r=this.inMultiSelectMode;this.$silent=!0,this.$cursorChanged=this.$anchorChanged=!1,this.anchor.setPosition(e,t),this.cursor.setPosition(n,i),this.$isEmpty=!s.comparePoints(this.anchor,this.cursor),this.$silent=!1,this.$cursorChanged&&this._emit("changeCursor"),(this.$cursorChanged||this.$anchorChanged||o!=this.$isEmpty||r)&&this._emit("changeSelection")}},e.prototype.$moveSelection=function(e){var t=this.lead;this.$isEmpty&&this.setSelectionAnchor(t.row,t.column),e.call(this)},e.prototype.selectTo=function(e,t){this.$moveSelection((function(){this.moveCursorTo(e,t)}))},e.prototype.selectToPosition=function(e){this.$moveSelection((function(){this.moveCursorToPosition(e)}))},e.prototype.moveTo=function(e,t){this.clearSelection(),this.moveCursorTo(e,t)},e.prototype.moveToPosition=function(e){this.clearSelection(),this.moveCursorToPosition(e)},e.prototype.selectUp=function(){this.$moveSelection(this.moveCursorUp)},e.prototype.selectDown=function(){this.$moveSelection(this.moveCursorDown)},e.prototype.selectRight=function(){this.$moveSelection(this.moveCursorRight)},e.prototype.selectLeft=function(){this.$moveSelection(this.moveCursorLeft)},e.prototype.selectLineStart=function(){this.$moveSelection(this.moveCursorLineStart)},e.prototype.selectLineEnd=function(){this.$moveSelection(this.moveCursorLineEnd)},e.prototype.selectFileEnd=function(){this.$moveSelection(this.moveCursorFileEnd)},e.prototype.selectFileStart=function(){this.$moveSelection(this.moveCursorFileStart)},e.prototype.selectWordRight=function(){this.$moveSelection(this.moveCursorWordRight)},e.prototype.selectWordLeft=function(){this.$moveSelection(this.moveCursorWordLeft)},e.prototype.getWordRange=function(e,t){if(void 0===t){var n=e||this.lead;e=n.row,t=n.column}return this.session.getWordRange(e,t)},e.prototype.selectWord=function(){this.setSelectionRange(this.getWordRange())},e.prototype.selectAWord=function(){var e=this.getCursor(),t=this.session.getAWordRange(e.row,e.column);this.setSelectionRange(t)},e.prototype.getLineRange=function(e,t){var n,i="number"==typeof e?e:this.lead.row,o=this.session.getFoldLine(i);return o?(i=o.start.row,n=o.end.row):n=i,!0===t?new s(i,0,n,this.session.getLine(n).length):new s(i,0,n+1,0)},e.prototype.selectLine=function(){this.setSelectionRange(this.getLineRange())},e.prototype.moveCursorUp=function(){this.moveCursorBy(-1,0)},e.prototype.moveCursorDown=function(){this.moveCursorBy(1,0)},e.prototype.wouldMoveIntoSoftTab=function(e,t,n){var i=e.column,o=e.column+t;return n<0&&(i=e.column-t,o=e.column),this.session.isTabStop(e)&&this.doc.getLine(e.row).slice(i,o).split(" ").length-1==t},e.prototype.moveCursorLeft=function(){var e,t=this.lead.getPosition();if(e=this.session.getFoldAt(t.row,t.column,-1))this.moveCursorTo(e.start.row,e.start.column);else if(0===t.column)t.row>0&&this.moveCursorTo(t.row-1,this.doc.getLine(t.row-1).length);else{var n=this.session.getTabSize();this.wouldMoveIntoSoftTab(t,n,-1)&&!this.session.getNavigateWithinSoftTabs()?this.moveCursorBy(0,-n):this.moveCursorBy(0,-1)}},e.prototype.moveCursorRight=function(){var e,t=this.lead.getPosition();if(e=this.session.getFoldAt(t.row,t.column,1))this.moveCursorTo(e.end.row,e.end.column);else if(this.lead.column==this.doc.getLine(this.lead.row).length)this.lead.row0&&(t.column=i)}}this.moveCursorTo(t.row,t.column)},e.prototype.moveCursorFileEnd=function(){var e=this.doc.getLength()-1,t=this.doc.getLine(e).length;this.moveCursorTo(e,t)},e.prototype.moveCursorFileStart=function(){this.moveCursorTo(0,0)},e.prototype.moveCursorLongWordRight=function(){var e=this.lead.row,t=this.lead.column,n=this.doc.getLine(e),i=n.substring(t);this.session.nonTokenRe.lastIndex=0,this.session.tokenRe.lastIndex=0;var o=this.session.getFoldAt(e,t,1);if(o)this.moveCursorTo(o.end.row,o.end.column);else{if(this.session.nonTokenRe.exec(i)&&(t+=this.session.nonTokenRe.lastIndex,this.session.nonTokenRe.lastIndex=0,i=n.substring(t)),t>=n.length)return this.moveCursorTo(e,n.length),this.moveCursorRight(),void(e0&&this.moveCursorWordLeft());this.session.tokenRe.exec(r)&&(n-=this.session.tokenRe.lastIndex,this.session.tokenRe.lastIndex=0),this.moveCursorTo(t,n)}},e.prototype.$shortWordEndIndex=function(e){var t,n=0,i=/\s/,o=this.session.tokenRe;if(o.lastIndex=0,this.session.tokenRe.exec(e))n=this.session.tokenRe.lastIndex;else{for(;(t=e[n])&&i.test(t);)n++;if(n<1)for(o.lastIndex=0;(t=e[n])&&!o.test(t);)if(o.lastIndex=0,n++,i.test(t)){if(n>2){n--;break}for(;(t=e[n])&&i.test(t);)n++;if(n>2)break}}return o.lastIndex=0,n},e.prototype.moveCursorShortWordRight=function(){var e=this.lead.row,t=this.lead.column,n=this.doc.getLine(e),i=n.substring(t),o=this.session.getFoldAt(e,t,1);if(o)return this.moveCursorTo(o.end.row,o.end.column);if(t==n.length){var r=this.doc.getLength();do{e++,i=this.doc.getLine(e)}while(e0&&/^\s*$/.test(i));n=i.length,/\s+$/.test(i)||(i="")}var r=o.stringReverse(i),s=this.$shortWordEndIndex(r);return this.moveCursorTo(t,n-s)},e.prototype.moveCursorWordRight=function(){this.session.$selectLongWords?this.moveCursorLongWordRight():this.moveCursorShortWordRight()},e.prototype.moveCursorWordLeft=function(){this.session.$selectLongWords?this.moveCursorLongWordLeft():this.moveCursorShortWordLeft()},e.prototype.moveCursorBy=function(e,t){var n,i=this.session.documentToScreenPosition(this.lead.row,this.lead.column);if(0===t&&(0!==e&&(this.session.$bidiHandler.isBidiRow(i.row,this.lead.row)?(n=this.session.$bidiHandler.getPosLeft(i.column),i.column=Math.round(n/this.session.$bidiHandler.charWidths[0])):n=i.column*this.session.$bidiHandler.charWidths[0]),this.$desiredColumn?i.column=this.$desiredColumn:this.$desiredColumn=i.column),0!=e&&this.session.lineWidgets&&this.session.lineWidgets[this.lead.row]){var o=this.session.lineWidgets[this.lead.row];e<0?e-=o.rowsAbove||0:e>0&&(e+=o.rowCount-(o.rowsAbove||0))}var r=this.session.screenToDocumentPosition(i.row+e,i.column,n);0!==e&&0===t&&r.row===this.lead.row&&(r.column,this.lead.column),this.moveCursorTo(r.row,r.column+t,0===t)},e.prototype.moveCursorToPosition=function(e){this.moveCursorTo(e.row,e.column)},e.prototype.moveCursorTo=function(e,t,n){var i=this.session.getFoldAt(e,t,1);i&&(e=i.start.row,t=i.start.column),this.$keepDesiredColumnOnChange=!0;var o=this.session.getLine(e);/[\uDC00-\uDFFF]/.test(o.charAt(t))&&o.charAt(t-1)&&(this.lead.row==e&&this.lead.column==t+1?t-=1:t+=1),this.lead.setPosition(e,t),this.$keepDesiredColumnOnChange=!1,n||(this.$desiredColumn=null)},e.prototype.moveCursorToScreen=function(e,t,n){var i=this.session.screenToDocumentPosition(e,t);this.moveCursorTo(i.row,i.column,n)},e.prototype.detach=function(){this.lead.detach(),this.anchor.detach()},e.prototype.fromOrientedRange=function(e){this.setSelectionRange(e,e.cursor==e.start),this.$desiredColumn=e.desiredColumn||this.$desiredColumn},e.prototype.toOrientedRange=function(e){var t=this.getRange();return e?(e.start.column=t.start.column,e.start.row=t.start.row,e.end.column=t.end.column,e.end.row=t.end.row):e=t,e.cursor=this.isBackwards()?e.start:e.end,e.desiredColumn=this.$desiredColumn,e},e.prototype.getRangeOfMovements=function(e){var t=this.getCursor();try{e(this);var n=this.getCursor();return s.fromPoints(t,n)}catch(e){return s.fromPoints(t,t)}finally{this.moveCursorToPosition(t)}},e.prototype.toJSON=function(){if(this.rangeCount)var e=this.ranges.map((function(e){var t=e.clone();return t.isBackwards=e.cursor==e.start,t}));else(e=this.getRange()).isBackwards=this.isBackwards();return e},e.prototype.fromJSON=function(e){if(null==e.start){if(this.rangeList&&e.length>1){this.toSingleRange(e[0]);for(var t=e.length;t--;){var n=s.fromPoints(e[t].start,e[t].end);e[t].isBackwards&&(n.cursor=n.start),this.addRange(n,!0)}return}e=e[0]}this.rangeList&&this.toSingleRange(e),this.setSelectionRange(e,e.isBackwards)},e.prototype.isEqual=function(e){if((e.length||this.rangeCount)&&e.length!=this.rangeCount)return!1;if(!e.length||!this.ranges)return this.getRange().isEqual(e);for(var t=this.ranges.length;t--;)if(!this.ranges[t].isEqual(e[t]))return!1;return!0},e}();a.prototype.setSelectionAnchor=a.prototype.setAnchor,a.prototype.getSelectionAnchor=a.prototype.getAnchor,a.prototype.setSelectionRange=a.prototype.setRange,i.implement(a.prototype,r),t.Selection=a})),ace.define("ace/tokenizer",["require","exports","module","ace/lib/report_error"],(function(e,t,n){"use strict";var i=e("./lib/report_error").reportError,o=2e3,r=function(){function e(e){for(var t in this.states=e,this.regExps={},this.matchMappings={},this.states){for(var n=this.states[t],i=[],o=0,r=this.matchMappings[t]={defaultToken:"text"},s="g",a=[],l=0;l1?this.$applyToken:c.token),h>1&&(/\\\d/.test(c.regex)?u=c.regex.replace(/\\([0-9]+)/g,(function(e,t){return"\\"+(parseInt(t,10)+o+1)})):(h=1,u=this.removeCapturingGroups(c.regex)),c.splitRegex||"string"==typeof c.token||a.push(c)),r[o]=l,o+=h,i.push(u),c.onMatch||(c.onMatch=null)}}i.length||(r[0]=0,i.push("$")),a.forEach((function(e){e.splitRegex=this.createSplitterRegexp(e.regex,s)}),this),this.regExps[t]=new RegExp("("+i.join(")|(")+")|($)",s)}}return e.prototype.$setMaxTokenCount=function(e){o=0|e},e.prototype.$applyToken=function(e){var t=this.splitRegex.exec(e).slice(1),n=this.token.apply(this,t);if("string"==typeof n)return[{type:n,value:e}];for(var i=[],o=0,r=n.length;ou){var y=e.substring(u,f-m.length);d.type==p?d.value+=y:(d.type&&c.push(d),d={type:p,value:y})}for(var b=0;bo){for(h>2*e.length&&this.reportError("infinite loop with in ace tokenizer",{startState:t,line:e});u1&&n[0]!==i&&n.unshift("#tmp",i),{tokens:c,state:n.length?n:i}},e}();r.prototype.reportError=i,t.Tokenizer=r})),ace.define("ace/mode/text_highlight_rules",["require","exports","module","ace/lib/deep_copy"],(function(e,t,n){"use strict";var i=e("../lib/deep_copy").deepCopy,o=function(){this.$rules={start:[{token:"empty_line",regex:"^$"},{defaultToken:"text"}]}};(function(){this.addRules=function(e,t){if(t)for(var n in e){for(var i=e[n],o=0;o=this.$rowTokens.length;){if(this.$row+=1,e||(e=this.$session.getLength()),this.$row>=e)return this.$row=e-1,null;this.$rowTokens=this.$session.getTokens(this.$row),this.$tokenIndex=0}return this.$rowTokens[this.$tokenIndex]},e.prototype.getCurrentToken=function(){return this.$rowTokens[this.$tokenIndex]},e.prototype.getCurrentTokenRow=function(){return this.$row},e.prototype.getCurrentTokenColumn=function(){var e=this.$rowTokens,t=this.$tokenIndex,n=e[t].start;if(void 0!==n)return n;for(n=0;t>0;)n+=e[t-=1].value.length;return n},e.prototype.getCurrentTokenPosition=function(){return{row:this.$row,column:this.getCurrentTokenColumn()}},e.prototype.getCurrentTokenRange=function(){var e=this.$rowTokens[this.$tokenIndex],t=this.getCurrentTokenColumn();return new i(this.$row,t,this.$row,t+e.value.length)},e}();t.TokenIterator=o})),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],(function(e,t,n){"use strict";var i,o=e("../../lib/oop"),r=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,a=e("../../lib/lang"),l=["text","paren.rparen","rparen","paren","punctuation.operator"],c=["text","paren.rparen","rparen","paren","punctuation.operator","comment"],u={},h={'"':'"',"'":"'"},d=function(e){var t=-1;if(e.multiSelect&&(t=e.selection.index,u.rangeCount!=e.multiSelect.rangeCount&&(u={rangeCount:e.multiSelect.rangeCount})),u[t])return i=u[t];i=u[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},p=function(e,t,n,i){var o=e.end.row-e.start.row;return{text:n+t+i,selection:[0,e.start.column+1,o,e.end.column+(o?0:1)]}},g=function(e){e=e||{},this.add("braces","insertion",(function(t,n,o,r,s){var l=o.getCursorPosition(),c=r.doc.getLine(l.row);if("{"==s){d(o);var u=o.getSelectionRange(),h=r.doc.getTextRange(u);if(""!==h&&"{"!==h&&o.getWrapBehavioursEnabled())return p(u,h,"{","}");if(g.isSaneInsertion(o,r))return/[\]\}\)]/.test(c[l.column])||o.inMultiSelectMode||e.braces?(g.recordAutoInsert(o,r,"}"),{text:"{}",selection:[1,1]}):(g.recordMaybeInsert(o,r,"{"),{text:"{",selection:[1,1]})}else if("}"==s){if(d(o),"}"==c.substring(l.column,l.column+1)&&null!==r.$findOpeningBracket("}",{column:l.column+1,row:l.row})&&g.isAutoInsertedClosing(l,c,s))return g.popAutoInsertedClosing(),{text:"",selection:[1,1]}}else{if("\n"==s||"\r\n"==s){d(o);var m="";if(g.isMaybeInsertedClosing(l,c)&&(m=a.stringRepeat("}",i.maybeInsertedBrackets),g.clearMaybeInsertedClosing()),"}"===c.substring(l.column,l.column+1)){var f=r.findMatchingBracket({row:l.row,column:l.column+1},"}");if(!f)return null;var y=this.$getIndent(r.getLine(f.row))}else{if(!m)return void g.clearMaybeInsertedClosing();y=this.$getIndent(c)}var b=y+r.getTabString();return{text:"\n"+b+"\n"+y+m,selection:[1,b.length,1,b.length]}}g.clearMaybeInsertedClosing()}})),this.add("braces","deletion",(function(e,t,n,o,r){var s=o.doc.getTextRange(r);if(!r.isMultiLine()&&"{"==s){if(d(n),"}"==o.doc.getLine(r.start.row).substring(r.end.column,r.end.column+1))return r.end.column++,r;i.maybeInsertedBrackets--}})),this.add("parens","insertion",(function(e,t,n,i,o){if("("==o){d(n);var r=n.getSelectionRange(),s=i.doc.getTextRange(r);if(""!==s&&n.getWrapBehavioursEnabled())return p(r,s,"(",")");if(g.isSaneInsertion(n,i))return g.recordAutoInsert(n,i,")"),{text:"()",selection:[1,1]}}else if(")"==o){d(n);var a=n.getCursorPosition(),l=i.doc.getLine(a.row);if(")"==l.substring(a.column,a.column+1)&&null!==i.$findOpeningBracket(")",{column:a.column+1,row:a.row})&&g.isAutoInsertedClosing(a,l,o))return g.popAutoInsertedClosing(),{text:"",selection:[1,1]}}})),this.add("parens","deletion",(function(e,t,n,i,o){var r=i.doc.getTextRange(o);if(!o.isMultiLine()&&"("==r&&(d(n),")"==i.doc.getLine(o.start.row).substring(o.start.column+1,o.start.column+2)))return o.end.column++,o})),this.add("brackets","insertion",(function(e,t,n,i,o){if("["==o){d(n);var r=n.getSelectionRange(),s=i.doc.getTextRange(r);if(""!==s&&n.getWrapBehavioursEnabled())return p(r,s,"[","]");if(g.isSaneInsertion(n,i))return g.recordAutoInsert(n,i,"]"),{text:"[]",selection:[1,1]}}else if("]"==o){d(n);var a=n.getCursorPosition(),l=i.doc.getLine(a.row);if("]"==l.substring(a.column,a.column+1)&&null!==i.$findOpeningBracket("]",{column:a.column+1,row:a.row})&&g.isAutoInsertedClosing(a,l,o))return g.popAutoInsertedClosing(),{text:"",selection:[1,1]}}})),this.add("brackets","deletion",(function(e,t,n,i,o){var r=i.doc.getTextRange(o);if(!o.isMultiLine()&&"["==r&&(d(n),"]"==i.doc.getLine(o.start.row).substring(o.start.column+1,o.start.column+2)))return o.end.column++,o})),this.add("string_dquotes","insertion",(function(e,t,n,i,o){var r=i.$mode.$quotes||h;if(1==o.length&&r[o]){if(this.lineCommentStart&&-1!=this.lineCommentStart.indexOf(o))return;d(n);var s=o,a=n.getSelectionRange(),l=i.doc.getTextRange(a);if(!(""===l||1==l.length&&r[l])&&n.getWrapBehavioursEnabled())return p(a,l,s,s);if(!l){var c=n.getCursorPosition(),u=i.doc.getLine(c.row),g=u.substring(c.column-1,c.column),m=u.substring(c.column,c.column+1),f=i.getTokenAt(c.row,c.column),y=i.getTokenAt(c.row,c.column+1);if("\\"==g&&f&&/escape/.test(f.type))return null;var b,v=f&&/string|escape/.test(f.type),w=!y||/string|escape/.test(y.type);if(m==s)(b=v!==w)&&/string\.end/.test(y.type)&&(b=!1);else{if(v&&!w)return null;if(v&&w)return null;var A=i.$mode.tokenRe;A.lastIndex=0;var C=A.test(g);A.lastIndex=0;var k=A.test(m),x=i.$mode.$pairQuotesAfter;if(!(x&&x[s]&&x[s].test(g))&&C||k)return null;if(m&&!/[\s;,.})\]\\]/.test(m))return null;var S=u[c.column-2];if(g==s&&(S==s||A.test(S)))return null;b=!0}return{text:b?s+s:"",selection:[1,1]}}}})),this.add("string_dquotes","deletion",(function(e,t,n,i,o){var r=i.$mode.$quotes||h,s=i.doc.getTextRange(o);if(!o.isMultiLine()&&r.hasOwnProperty(s)&&(d(n),i.doc.getLine(o.start.row).substring(o.start.column+1,o.start.column+2)==s))return o.end.column++,o})),!1!==e.closeDocComment&&this.add("doc comment end","insertion",(function(e,t,n,i,o){if("doc-start"===e&&("\n"===o||"\r\n"===o)&&n.selection.isEmpty()){var r=n.getCursorPosition(),s=i.doc.getLine(r.row),a=i.doc.getLine(r.row+1),l=this.$getIndent(s);if(/\s*\*/.test(a))return/^\s*\*/.test(s)?{text:o+l+"* ",selection:[1,3+l.length,1,3+l.length]}:{text:o+l+" * ",selection:[1,3+l.length,1,3+l.length]};if(/\/\*\*/.test(s.substring(0,r.column)))return{text:o+l+" * "+o+" "+l+"*/",selection:[1,4+l.length,1,4+l.length]}}}))};g.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),i=new s(t,n.row,n.column);if(!this.$matchTokenType(i.getCurrentToken()||"text",l)){if(/[)}\]]/.test(e.session.getLine(n.row)[n.column]))return!0;var o=new s(t,n.row,n.column+1);if(!this.$matchTokenType(o.getCurrentToken()||"text",l))return!1}return i.stepForward(),i.getCurrentTokenRow()!==n.row||this.$matchTokenType(i.getCurrentToken()||"text",c)},g.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},g.recordAutoInsert=function(e,t,n){var o=e.getCursorPosition(),r=t.doc.getLine(o.row);this.isAutoInsertedClosing(o,r,i.autoInsertedLineEnd[0])||(i.autoInsertedBrackets=0),i.autoInsertedRow=o.row,i.autoInsertedLineEnd=n+r.substr(o.column),i.autoInsertedBrackets++},g.recordMaybeInsert=function(e,t,n){var o=e.getCursorPosition(),r=t.doc.getLine(o.row);this.isMaybeInsertedClosing(o,r)||(i.maybeInsertedBrackets=0),i.maybeInsertedRow=o.row,i.maybeInsertedLineStart=r.substr(0,o.column)+n,i.maybeInsertedLineEnd=r.substr(o.column),i.maybeInsertedBrackets++},g.isAutoInsertedClosing=function(e,t,n){return i.autoInsertedBrackets>0&&e.row===i.autoInsertedRow&&n===i.autoInsertedLineEnd[0]&&t.substr(e.column)===i.autoInsertedLineEnd},g.isMaybeInsertedClosing=function(e,t){return i.maybeInsertedBrackets>0&&e.row===i.maybeInsertedRow&&t.substr(e.column)===i.maybeInsertedLineEnd&&t.substr(0,e.column)==i.maybeInsertedLineStart},g.popAutoInsertedClosing=function(){i.autoInsertedLineEnd=i.autoInsertedLineEnd.substr(1),i.autoInsertedBrackets--},g.clearMaybeInsertedClosing=function(){i&&(i.maybeInsertedBrackets=0,i.maybeInsertedRow=-1)},o.inherits(g,r),t.CstyleBehaviour=g})),ace.define("ace/unicode",["require","exports","module"],(function(e,t,n){"use strict";for(var i=[48,9,8,25,5,0,2,25,48,0,11,0,5,0,6,22,2,30,2,457,5,11,15,4,8,0,2,0,18,116,2,1,3,3,9,0,2,2,2,0,2,19,2,82,2,138,2,4,3,155,12,37,3,0,8,38,10,44,2,0,2,1,2,1,2,0,9,26,6,2,30,10,7,61,2,9,5,101,2,7,3,9,2,18,3,0,17,58,3,100,15,53,5,0,6,45,211,57,3,18,2,5,3,11,3,9,2,1,7,6,2,2,2,7,3,1,3,21,2,6,2,0,4,3,3,8,3,1,3,3,9,0,5,1,2,4,3,11,16,2,2,5,5,1,3,21,2,6,2,1,2,1,2,1,3,0,2,4,5,1,3,2,4,0,8,3,2,0,8,15,12,2,2,8,2,2,2,21,2,6,2,1,2,4,3,9,2,2,2,2,3,0,16,3,3,9,18,2,2,7,3,1,3,21,2,6,2,1,2,4,3,8,3,1,3,2,9,1,5,1,2,4,3,9,2,0,17,1,2,5,4,2,2,3,4,1,2,0,2,1,4,1,4,2,4,11,5,4,4,2,2,3,3,0,7,0,15,9,18,2,2,7,2,2,2,22,2,9,2,4,4,7,2,2,2,3,8,1,2,1,7,3,3,9,19,1,2,7,2,2,2,22,2,9,2,4,3,8,2,2,2,3,8,1,8,0,2,3,3,9,19,1,2,7,2,2,2,22,2,15,4,7,2,2,2,3,10,0,9,3,3,9,11,5,3,1,2,17,4,23,2,8,2,0,3,6,4,0,5,5,2,0,2,7,19,1,14,57,6,14,2,9,40,1,2,0,3,1,2,0,3,0,7,3,2,6,2,2,2,0,2,0,3,1,2,12,2,2,3,4,2,0,2,5,3,9,3,1,35,0,24,1,7,9,12,0,2,0,2,0,5,9,2,35,5,19,2,5,5,7,2,35,10,0,58,73,7,77,3,37,11,42,2,0,4,328,2,3,3,6,2,0,2,3,3,40,2,3,3,32,2,3,3,6,2,0,2,3,3,14,2,56,2,3,3,66,5,0,33,15,17,84,13,619,3,16,2,25,6,74,22,12,2,6,12,20,12,19,13,12,2,2,2,1,13,51,3,29,4,0,5,1,3,9,34,2,3,9,7,87,9,42,6,69,11,28,4,11,5,11,11,39,3,4,12,43,5,25,7,10,38,27,5,62,2,28,3,10,7,9,14,0,89,75,5,9,18,8,13,42,4,11,71,55,9,9,4,48,83,2,2,30,14,230,23,280,3,5,3,37,3,5,3,7,2,0,2,0,2,0,2,30,3,52,2,6,2,0,4,2,2,6,4,3,3,5,5,12,6,2,2,6,67,1,20,0,29,0,14,0,17,4,60,12,5,0,4,11,18,0,5,0,3,9,2,0,4,4,7,0,2,0,2,0,2,3,2,10,3,3,6,4,5,0,53,1,2684,46,2,46,2,132,7,6,15,37,11,53,10,0,17,22,10,6,2,6,2,6,2,6,2,6,2,6,2,6,2,6,2,31,48,0,470,1,36,5,2,4,6,1,5,85,3,1,3,2,2,89,2,3,6,40,4,93,18,23,57,15,513,6581,75,20939,53,1164,68,45,3,268,4,27,21,31,3,13,13,1,2,24,9,69,11,1,38,8,3,102,3,1,111,44,25,51,13,68,12,9,7,23,4,0,5,45,3,35,13,28,4,64,15,10,39,54,10,13,3,9,7,22,4,1,5,66,25,2,227,42,2,1,3,9,7,11171,13,22,5,48,8453,301,3,61,3,105,39,6,13,4,6,11,2,12,2,4,2,0,2,1,2,1,2,107,34,362,19,63,3,53,41,11,5,15,17,6,13,1,25,2,33,4,2,134,20,9,8,25,5,0,2,25,12,88,4,5,3,5,3,5,3,2],o=0,r=[],s=0;s2?i%c!=c-1:i%c==0})}else{if(!this.blockComment)return!1;var p=this.blockComment.start,g=this.blockComment.end,m=new RegExp("^(\\s*)(?:"+l.escapeRegExp(p)+")"),f=new RegExp("(?:"+l.escapeRegExp(g)+")\\s*$"),y=function(e,t){v(e,t)||r&&!/\S/.test(e)||(o.insertInLine({row:t,column:e.length},g),o.insertInLine({row:t,column:a},p))},b=function(e,t){var n;(n=e.match(f))&&o.removeInLine(t,e.length-n[0].length,e.length),(n=e.match(m))&&o.removeInLine(t,n[1].length,n[0].length)},v=function(e,n){if(m.test(e))return!0;for(var i=t.getTokens(n),o=0;oe.length&&(A=e.length)})),a==1/0&&(a=A,r=!1,s=!1),u&&a%c!=0&&(a=Math.floor(a/c)*c),w(s?b:y)},this.toggleBlockComment=function(e,t,n,i){var o=this.blockComment;if(o){!o.start&&o[0]&&(o=o[0]);var r,s,a=(m=new c(t,i.row,i.column)).getCurrentToken(),l=(t.selection,t.selection.toOrientedRange());if(a&&/comment/.test(a.type)){for(var h,d;a&&/comment/.test(a.type);){if(-1!=(f=a.value.indexOf(o.start))){var p=m.getCurrentTokenRow(),g=m.getCurrentTokenColumn()+f;h=new u(p,g,p,g+o.start.length);break}a=m.stepBackward()}var m;for(a=(m=new c(t,i.row,i.column)).getCurrentToken();a&&/comment/.test(a.type);){var f;if(-1!=(f=a.value.indexOf(o.end))){p=m.getCurrentTokenRow(),g=m.getCurrentTokenColumn()+f,d=new u(p,g,p,g+o.end.length);break}a=m.stepForward()}d&&t.remove(d),h&&(t.remove(h),r=h.start.row,s=-o.start.length)}else s=o.start.length,r=n.start.row,t.insert(n.end,o.end),t.insert(n.start,o.start);l.start.row==r&&(l.start.column+=s),l.end.row==r&&(l.end.column+=s),t.selection.fromOrientedRange(l)}},this.getNextLineIndent=function(e,t,n){return this.$getIndent(t)},this.checkOutdent=function(e,t,n){return!1},this.autoOutdent=function(e,t,n){},this.$getIndent=function(e){return e.match(/^\s*/)[0]},this.createWorker=function(e){return null},this.createModeDelegates=function(e){for(var t in this.$embeds=[],this.$modes={},e)if(e[t]){var n=e[t],o=n.prototype.$id,r=i.$modes[o];r||(i.$modes[o]=r=new n),i.$modes[t]||(i.$modes[t]=r),this.$embeds.push(t),this.$modes[t]=r}var s=["toggleBlockComment","toggleCommentLines","getNextLineIndent","checkOutdent","autoOutdent","transformAction","getCompletions"];for(t=0;tthis.row)){var t=function(e,t,n){var i="insert"==e.action,o=(i?1:-1)*(e.end.row-e.start.row),r=(i?1:-1)*(e.end.column-e.start.column),a=e.start,l=i?a:e.end;return s(t,a,n)?{row:t.row,column:t.column}:s(l,t,!n)?{row:t.row+o,column:t.column+(t.row==l.row?r:0)}:{row:a.row,column:a.column}}(e,{row:this.row,column:this.column},this.$insertRight);this.setPosition(t.row,t.column,!0)}},e.prototype.setPosition=function(e,t,n){var i;if(i=n?{row:e,column:t}:this.$clipPositionToDocument(e,t),this.row!=i.row||this.column!=i.column){var o={row:this.row,column:this.column};this.row=i.row,this.column=i.column,this._signal("change",{old:o,value:i})}},e.prototype.detach=function(){this.document.off("change",this.$onChange)},e.prototype.attach=function(e){this.document=e||this.document,this.document.on("change",this.$onChange)},e.prototype.$clipPositionToDocument=function(e,t){var n={};return e>=this.document.getLength()?(n.row=Math.max(0,this.document.getLength()-1),n.column=this.document.getLine(n.row).length):e<0?(n.row=0,n.column=0):(n.row=e,n.column=Math.min(this.document.getLine(n.row).length,Math.max(0,t))),t<0&&(n.column=0),n},e}();function s(e,t,n){var i=n?e.column<=t.column:e.column=n&&(e=n-1,t=void 0);var i=this.getLine(e);return null==t&&(t=i.length),{row:e,column:t=Math.min(Math.max(t,0),i.length)}},e.prototype.clonePos=function(e){return{row:e.row,column:e.column}},e.prototype.pos=function(e,t){return{row:e,column:t}},e.prototype.$clipPosition=function(e){var t=this.getLength();return e.row>=t?(e.row=Math.max(0,t-1),e.column=this.getLine(t-1).length):(e.row=Math.max(0,e.row),e.column=Math.min(Math.max(e.column,0),this.getLine(e.row).length)),e},e.prototype.insertFullLines=function(e,t){var n=0;(e=Math.min(Math.max(e,0),this.getLength()))0,i=t=0&&this.applyDelta({start:this.pos(e,this.getLine(e).length),end:this.pos(e+1,0),action:"remove",lines:["",""]})},e.prototype.replace=function(e,t){return e instanceof s||(e=s.fromPoints(e.start,e.end)),0===t.length&&e.isEmpty()?e.start:t==this.getTextRange(e)?e.end:(this.remove(e),t?this.insert(e.start,t):e.start)},e.prototype.applyDeltas=function(e){for(var t=0;t=0;t--)this.revertDelta(e[t])},e.prototype.applyDelta=function(e,t){var n="insert"==e.action;(n?e.lines.length<=1&&!e.lines[0]:!s.comparePoints(e.start,e.end))||(n&&e.lines.length>2e4?this.$splitAndapplyLargeDelta(e,2e4):(o(this.$lines,e,t),this._signal("change",e)))},e.prototype.$safeApplyDelta=function(e){var t=this.$lines.length;("remove"==e.action&&e.start.row20){n.running=setTimeout(n.$worker,20);break}}n.currentLine=t,-1==i&&(i=t),r<=i&&n.fireUpdateEvent(r,i)}}}return e.prototype.setTokenizer=function(e){this.tokenizer=e,this.lines=[],this.states=[],this.start(0)},e.prototype.setDocument=function(e){this.doc=e,this.lines=[],this.states=[],this.stop()},e.prototype.fireUpdateEvent=function(e,t){var n={first:e,last:t};this._signal("update",{data:n})},e.prototype.start=function(e){this.currentLine=Math.min(e||0,this.currentLine,this.doc.getLength()),this.lines.splice(this.currentLine,this.lines.length),this.states.splice(this.currentLine,this.states.length),this.stop(),this.running=setTimeout(this.$worker,700)},e.prototype.scheduleStart=function(){this.running||(this.running=setTimeout(this.$worker,700))},e.prototype.$updateOnChange=function(e){var t=e.start.row,n=e.end.row-t;if(0===n)this.lines[t]=null;else if("remove"==e.action)this.lines.splice(t,n+1,null),this.states.splice(t,n+1,null);else{var i=Array(n+1);i.unshift(t,1),this.lines.splice.apply(this.lines,i),this.states.splice.apply(this.states,i)}this.currentLine=Math.min(t,this.currentLine,this.doc.getLength()),this.stop()},e.prototype.stop=function(){this.running&&clearTimeout(this.running),this.running=!1},e.prototype.getTokens=function(e){return this.lines[e]||this.$tokenizeRow(e)},e.prototype.getState=function(e){return this.currentLine==e&&this.$tokenizeRow(e),this.states[e]||"start"},e.prototype.$tokenizeRow=function(e){var t=this.doc.getLine(e),n=this.states[e-1],i=this.tokenizer.getLineTokens(t,n,e);return this.states[e]+""!=i.state+""?(this.states[e]=i.state,this.lines[e+1]=null,this.currentLine>e+1&&(this.currentLine=e+1)):this.currentLine==e&&(this.currentLine=e+1),this.lines[e]=i.tokens},e.prototype.cleanup=function(){this.running=!1,this.lines=[],this.states=[],this.currentLine=0,this.removeAllListeners()},e}();i.implement(r.prototype,o),t.BackgroundTokenizer=r})),ace.define("ace/search_highlight",["require","exports","module","ace/lib/lang","ace/range"],(function(e,t,n){"use strict";var i=e("./lib/lang"),o=e("./range").Range,r=function(){function e(e,t,n){void 0===n&&(n="text"),this.setRegexp(e),this.clazz=t,this.type=n}return e.prototype.setRegexp=function(e){this.regExp+""!=e+""&&(this.regExp=e,this.cache=[])},e.prototype.update=function(e,t,n,r){if(this.regExp)for(var s=r.firstRow,a=r.lastRow,l={},c=s;c<=a;c++){var u=this.cache[c];null==u&&((u=i.getMatchOffsets(n.getLine(c),this.regExp)).length>this.MAX_RANGES&&(u=u.slice(0,this.MAX_RANGES)),u=u.map((function(e){return new o(c,e.offset,c,e.offset+e.length)})),this.cache[c]=u.length?u:"");for(var h=u.length;h--;){var d=u[h].toScreenRange(n),p=d.toString();l[p]||(l[p]=!0,t.drawSingleLineMarker(e,d,this.clazz,r))}}},e}();r.prototype.MAX_RANGES=500,t.SearchHighlight=r})),ace.define("ace/undomanager",["require","exports","module","ace/range"],(function(e,t,n){"use strict";var i=function(){function e(){this.$maxRev=0,this.$fromUndo=!1,this.$undoDepth=1/0,this.reset()}return e.prototype.addSession=function(e){this.$session=e},e.prototype.add=function(e,t,n){if(!this.$fromUndo&&e!=this.$lastDelta){if(this.$keepRedoStack||(this.$redoStack.length=0),!1===t||!this.lastDeltas){this.lastDeltas=[];var i=this.$undoStack.length;i>this.$undoDepth-1&&this.$undoStack.splice(0,i-this.$undoDepth+1),this.$undoStack.push(this.lastDeltas),e.id=this.$rev=++this.$maxRev}"remove"!=e.action&&"insert"!=e.action||(this.$lastDelta=e),this.lastDeltas.push(e)}},e.prototype.addSelection=function(e,t){this.selections.push({value:e,rev:t||this.$rev})},e.prototype.startNewGroup=function(){return this.lastDeltas=null,this.$rev},e.prototype.markIgnored=function(e,t){null==t&&(t=this.$rev+1);for(var n=this.$undoStack,i=n.length;i--;){var o=n[i][0];if(o.id<=e)break;o.id0},e.prototype.canRedo=function(){return this.$redoStack.length>0},e.prototype.bookmark=function(e){null==e&&(e=this.$rev),this.mark=e},e.prototype.isAtBookmark=function(){return this.$rev===this.mark},e.prototype.toJSON=function(){return{$redoStack:this.$redoStack,$undoStack:this.$undoStack}},e.prototype.fromJSON=function(e){this.reset(),this.$undoStack=e.$undoStack,this.$redoStack=e.$redoStack},e.prototype.$prettyPrint=function(e){return e?a(e):a(this.$undoStack)+"\n---\n"+a(this.$redoStack)},e}();i.prototype.hasUndo=i.prototype.canUndo,i.prototype.hasRedo=i.prototype.canRedo,i.prototype.isClean=i.prototype.isAtBookmark,i.prototype.markClean=i.prototype.bookmark;var o=e("./range").Range,r=o.comparePoints;function s(e){return{row:e.row,column:e.column}}function a(e){if(e=e||this,Array.isArray(e))return e.map(a).join("\n");var t="";return e.action?(t="insert"==e.action?"+":"-",t+="["+e.lines+"]"):e.value&&(t=Array.isArray(e.value)?e.value.map(l).join("\n"):l(e.value)),e.start&&(t+=l(e)),(e.id||e.rev)&&(t+="\t("+(e.id||e.rev)+")"),t}function l(e){return e.start.row+":"+e.start.column+"=>"+e.end.row+":"+e.end.column}function c(e,t){var n="insert"==e.action,i="insert"==t.action;if(n&&i)if(r(t.start,e.end)>=0)d(t,e,-1);else{if(!(r(t.start,e.start)<=0))return null;d(e,t,1)}else if(n&&!i)if(r(t.start,e.end)>=0)d(t,e,-1);else{if(!(r(t.end,e.start)<=0))return null;d(e,t,-1)}else if(!n&&i)if(r(t.start,e.start)>=0)d(t,e,1);else{if(!(r(t.start,e.start)<=0))return null;d(e,t,1)}else if(!n&&!i)if(r(t.start,e.start)>=0)d(t,e,1);else{if(!(r(t.end,e.start)<=0))return null;d(e,t,-1)}return[t,e]}function u(e,t){for(var n=e.length;n--;)for(var i=0;i=0?d(e,t,-1):(r(e.start,t.start)<=0||d(e,o.fromPoints(t.start,e.start),-1),d(t,e,1));else if(!n&&i)r(t.start,e.end)>=0?d(t,e,-1):(r(t.start,e.start)<=0||d(t,o.fromPoints(e.start,t.start),-1),d(e,t,1));else if(!n&&!i)if(r(t.start,e.end)>=0)d(t,e,-1);else{var s,a;if(!(r(t.end,e.start)<=0))return r(e.start,t.start)<0&&(s=e,e=g(e,t.start)),r(e.end,t.end)>0&&(a=g(e,t.end)),p(t.end,e.start,e.end,-1),a&&!s&&(e.lines=a.lines,e.start=a.start,e.end=a.end,a=e),[t,s,a].filter(Boolean);d(e,t,-1)}return[t,e]}function d(e,t,n){p(e.start,t.start,t.end,n),p(e.end,t.start,t.end,n)}function p(e,t,n,i){e.row==(1==i?t:n).row&&(e.column+=i*(n.column-t.column)),e.row+=i*(n.row-t.row)}function g(e,t){var n=e.lines,i=e.end;e.end=s(t);var o=e.end.row-e.start.row,r=n.splice(o,n.length),a=o?t.column:t.column-e.start.column;return n.push(r[0].substring(0,a)),r[0]=r[0].substr(a),{start:s(t),end:i,lines:r,action:e.action}}function m(e,t){t=function(e){return{start:s(e.start),end:s(e.end),action:e.action,lines:e.lines.slice()}}(t);for(var n=e.length;n--;){for(var i=e[n],o=0;othis.endRow)throw new Error("Can't add a fold to this FoldLine as it has no connection");this.folds.push(e),this.folds.sort((function(e,t){return-e.range.compareEnd(t.start.row,t.start.column)})),this.range.compareEnd(e.start.row,e.start.column)>0?(this.end.row=e.end.row,this.end.column=e.end.column):this.range.compareStart(e.end.row,e.end.column)<0&&(this.start.row=e.start.row,this.start.column=e.start.column)}else if(e.start.row==this.end.row)this.folds.push(e),this.end.row=e.end.row,this.end.column=e.end.column;else{if(e.end.row!=this.start.row)throw new Error("Trying to add fold to FoldRow that doesn't have a matching row");this.folds.unshift(e),this.start.row=e.start.row,this.start.column=e.start.column}e.foldLine=this},e.prototype.containsRow=function(e){return e>=this.start.row&&e<=this.end.row},e.prototype.walk=function(e,t,n){var i,o,r=0,s=this.folds,a=!0;null==t&&(t=this.end.row,n=this.end.column);for(var l=0;l0)){var l=i(e,s.start);return 0===a?t&&0!==l?-r-2:r:l>0||0===l&&!t?r:-r-1}}return-r-1},e.prototype.add=function(e){var t=!e.isEmpty(),n=this.pointIndex(e.start,t);n<0&&(n=-n-1);var i=this.pointIndex(e.end,t,n);return i<0?i=-i-1:i++,this.ranges.splice(n,i-n,e)},e.prototype.addList=function(e){for(var t=[],n=e.length;n--;)t.push.apply(t,this.add(e[n]));return t},e.prototype.substractPoint=function(e){var t=this.pointIndex(e);if(t>=0)return this.ranges.splice(t,1)},e.prototype.merge=function(){for(var e,t=[],n=this.ranges,o=(n=n.sort((function(e,t){return i(e.start,t.start)})))[0],r=1;r=0},e.prototype.containsPoint=function(e){return this.pointIndex(e)>=0},e.prototype.rangeAtPoint=function(e){var t=this.pointIndex(e);if(t>=0)return this.ranges[t]},e.prototype.clipRows=function(e,t){var n=this.ranges;if(n[0].start.row>t||n[n.length-1].start.row=i);s++);if("insert"==e.action){for(var l=o-i,c=-t.column+n.column;si);s++)if(u.start.row==i&&u.start.column>=t.column&&(u.start.column==t.column&&this.$bias<=0||(u.start.column+=c,u.start.row+=l)),u.end.row==i&&u.end.column>=t.column){if(u.end.column==t.column&&this.$bias<0)continue;u.end.column==t.column&&c>0&&su.start.column&&u.end.column==r[s+1].start.column&&(u.end.column-=c),u.end.column+=c,u.end.row+=l}}else for(l=i-o,c=t.column-n.column;so);s++)u.end.rowt.column)&&(u.end.column=t.column,u.end.row=t.row):(u.end.column+=c,u.end.row+=l):u.end.row>o&&(u.end.row+=l),u.start.rowt.column)&&(u.start.column=t.column,u.start.row=t.row):(u.start.column+=c,u.start.row+=l):u.start.row>o&&(u.start.row+=l);if(0!=l&&s=e)return o;if(o.end.row>e)return null}return null},this.getNextFoldLine=function(e,t){var n=this.$foldData,i=0;for(t&&(i=n.indexOf(t)),-1==i&&(i=0);i=e)return o}return null},this.getFoldedRowCount=function(e,t){for(var n=this.$foldData,i=t-e+1,o=0;o=t){a=e?i-=t-a:i=0);break}s>=e&&(i-=a>=e?s-a:s-e+1)}return i},this.$addFoldLine=function(e){return this.$foldData.push(e),this.$foldData.sort((function(e,t){return e.start.row-t.start.row})),e},this.addFold=function(e,t){var n,i=this.$foldData,s=!1;e instanceof r?n=e:(n=new r(t,e)).collapseChildren=t.collapseChildren,this.$clipRangeToDocument(n.range);var a=n.start.row,l=n.start.column,c=n.end.row,u=n.end.column,h=this.getFoldAt(a,l,1),d=this.getFoldAt(c,u,-1);if(h&&d==h)return h.addSubFold(n);h&&!h.range.isStart(a,l)&&this.removeFold(h),d&&!d.range.isEnd(c,u)&&this.removeFold(d);var p=this.getFoldsInRange(n.range);p.length>0&&(this.removeFolds(p),n.collapseChildren||p.forEach((function(e){n.addSubFold(e)})));for(var g=0;g0&&this.foldAll(e.start.row+1,e.end.row,e.collapseChildren-1),e.subFolds=[]},this.expandFolds=function(e){e.forEach((function(e){this.expandFold(e)}),this)},this.unfold=function(e,t){var n,o;if(null==e)n=new i(0,0,this.getLength(),0),null==t&&(t=!0);else if("number"==typeof e)n=new i(e,0,e,this.getLine(e).length);else if("row"in e)n=i.fromPoints(e,e);else{if(Array.isArray(e))return o=[],e.forEach((function(e){o=o.concat(this.unfold(e))}),this),o;n=e}for(var r=o=this.getFoldsInRangeList(n);1==o.length&&i.comparePoints(o[0].start,n.start)<0&&i.comparePoints(o[0].end,n.end)>0;)this.expandFolds(o),o=this.getFoldsInRangeList(n);if(0!=t?this.removeFolds(o):this.expandFolds(o),r.length)return r},this.isRowFolded=function(e,t){return!!this.getFoldLine(e,t)},this.getRowFoldEnd=function(e,t){var n=this.getFoldLine(e,t);return n?n.end.row:e},this.getRowFoldStart=function(e,t){var n=this.getFoldLine(e,t);return n?n.start.row:e},this.getFoldDisplayLine=function(e,t,n,i,o){null==i&&(i=e.start.row),null==o&&(o=0),null==t&&(t=e.end.row),null==n&&(n=this.getLine(t).length);var r=this.doc,s="";return e.walk((function(e,t,n,a){if(!(tu)break}while(r&&l.test(r.type)&&!/^comment.start/.test(r.type));r=o.stepBackward()}else r=o.getCurrentToken();return c.end.row=o.getCurrentTokenRow(),c.end.column=o.getCurrentTokenColumn(),/^comment.end/.test(r.type)||(c.end.column+=r.value.length-2),c}},this.foldAll=function(e,t,n,i){null==n&&(n=1e5);var o=this.foldWidgets;if(o){t=t||this.getLength();for(var r=e=e||0;r=e&&(r=s.end.row,s.collapseChildren=n,this.addFold("...",s))}}},this.foldToLevel=function(e){for(this.foldAll();e-- >0;)this.unfold(null,!1)},this.foldAllComments=function(){var e=this;this.foldAll(null,null,null,(function(t){for(var n=e.getTokens(t),i=0;i=0;){var r=n[o];if(null==r&&(r=n[o]=this.getFoldWidget(o)),"start"==r){var s=this.getFoldWidgetRange(o);if(i||(i=s),s&&s.end.row>=e)break}o--}return{range:-1!==o&&s,firstRange:i}},this.onFoldWidgetClick=function(e,t){t instanceof a&&(t=t.domEvent);var n={children:t.shiftKey,all:t.ctrlKey||t.metaKey,siblings:t.altKey};if(!this.$toggleFoldWidget(e,n)){var i=t.target||t.srcElement;i&&/ace_fold-widget/.test(i.className)&&(i.className+=" ace_invalid")}},this.$toggleFoldWidget=function(e,t){if(this.getFoldWidget){var n=this.getFoldWidget(e),i=this.getLine(e),o="end"===n?-1:1,r=this.getFoldAt(e,-1===o?0:i.length,o);if(r)return t.children||t.all?this.removeFold(r):this.expandFold(r),r;var s=this.getFoldWidgetRange(e,!0);if(s&&!s.isMultiLine()&&(r=this.getFoldAt(s.start.row,s.start.column,1))&&s.isEqual(r.range))return this.removeFold(r),r;if(t.siblings){var a=this.getParentFoldRangeData(e);if(a.range)var l=a.range.start.row+1,c=a.range.end.row;this.foldAll(l,c,t.all?1e4:0)}else t.children?(c=s?s.end.row:this.getLength(),this.foldAll(e+1,c,t.all?1e4:0)):s&&(t.all&&(s.collapseChildren=1e4),this.addFold("...",s));return s}},this.toggleFoldWidget=function(e){var t=this.selection.getCursor().row;t=this.getRowFoldStart(t);var n=this.$toggleFoldWidget(t,{});if(!n){var i=this.getParentFoldRangeData(t,!0);if(n=i.range||i.firstRange){t=n.start.row;var o=this.getFoldAt(t,this.getLine(t).length,1);o?this.removeFold(o):this.addFold("...",n)}}},this.updateFoldWidgets=function(e){var t=e.start.row,n=e.end.row-t;if(0===n)this.foldWidgets[t]=null;else if("remove"==e.action)this.foldWidgets.splice(t,n+1,null);else{var i=Array(n+1);i.unshift(t,1),this.foldWidgets.splice.apply(this.foldWidgets,i)}},this.tokenizerUpdateFoldWidgets=function(e){var t=e.data;t.first!=t.last&&this.foldWidgets.length>t.first&&this.foldWidgets.splice(t.first,this.foldWidgets.length)}}})),ace.define("ace/edit_session/bracket_match",["require","exports","module","ace/token_iterator","ace/range"],(function(e,t,n){"use strict";var i=e("../token_iterator").TokenIterator,o=e("../range").Range;t.BracketMatch=function(){this.findMatchingBracket=function(e,t){if(0==e.column)return null;var n=t||this.getLine(e.row).charAt(e.column-1);if(""==n)return null;var i=n.match(/([\(\[\{])|([\)\]\}])/);return i?i[1]?this.$findClosingBracket(i[1],e):this.$findOpeningBracket(i[2],e):null},this.getBracketRange=function(e){var t,n=this.getLine(e.row),i=!0,r=n.charAt(e.column-1),s=r&&r.match(/([\(\[\{])|([\)\]\}])/);if(s||(r=n.charAt(e.column),e={row:e.row,column:e.column+1},s=r&&r.match(/([\(\[\{])|([\)\]\}])/),i=!1),!s)return null;if(s[1]){if(!(a=this.$findClosingBracket(s[1],e)))return null;t=o.fromPoints(e,a),i||(t.end.column++,t.start.column--),t.cursor=t.end}else{var a;if(!(a=this.$findOpeningBracket(s[2],e)))return null;t=o.fromPoints(a,e),i||(t.start.column++,t.end.column--),t.cursor=t.start}return t},this.getMatchingBracketRanges=function(e,t){var n=this.getLine(e.row),i=/([\(\[\{])|([\)\]\}])/,r=!t&&n.charAt(e.column-1),s=r&&r.match(i);if(s||(r=(void 0===t||t)&&n.charAt(e.column),e={row:e.row,column:e.column+1},s=r&&r.match(i)),!s)return null;var a=new o(e.row,e.column-1,e.row,e.column),l=s[1]?this.$findClosingBracket(s[1],e):this.$findOpeningBracket(s[2],e);return l?[a,new o(l.row,l.column,l.row,l.column+1)]:[a]},this.$brackets={")":"(","(":")","]":"[","[":"]","{":"}","}":"{","<":">",">":"<"},this.$findOpeningBracket=function(e,t,n){var o=this.$brackets[e],r=1,s=new i(this,t.row,t.column),a=s.getCurrentToken();if(a||(a=s.stepForward()),a){n||(n=new RegExp("(\\.?"+a.type.replace(".","\\.").replace("rparen",".paren").replace(/\b(?:end)\b/,"(?:start|begin|end)").replace(/-close\b/,"-(close|open)")+")+"));for(var l=t.column-s.getCurrentTokenColumn()-2,c=a.value;;){for(;l>=0;){var u=c.charAt(l);if(u==o){if(0==(r-=1))return{row:s.getCurrentTokenRow(),column:l+s.getCurrentTokenColumn()}}else u==e&&(r+=1);l-=1}do{a=s.stepBackward()}while(a&&!n.test(a.type));if(null==a)break;l=(c=a.value).length-1}return null}},this.$findClosingBracket=function(e,t,n){var o=this.$brackets[e],r=1,s=new i(this,t.row,t.column),a=s.getCurrentToken();if(a||(a=s.stepForward()),a){n||(n=new RegExp("(\\.?"+a.type.replace(".","\\.").replace("lparen",".paren").replace(/\b(?:start|begin)\b/,"(?:start|begin|end)").replace(/-open\b/,"-(close|open)")+")+"));for(var l=t.column-s.getCurrentTokenColumn();;){for(var c=a.value,u=c.length;l"===t.value?i=!0:-1!==t.type.indexOf("tag-name")&&(n=!0))}while(t&&!n);return t},this.$findClosingTag=function(e,t){var n,i=t.value,r=t.value,s=0,a=new o(e.getCurrentTokenRow(),e.getCurrentTokenColumn(),e.getCurrentTokenRow(),e.getCurrentTokenColumn()+1);t=e.stepForward();var l=new o(e.getCurrentTokenRow(),e.getCurrentTokenColumn(),e.getCurrentTokenRow(),e.getCurrentTokenColumn()+t.value.length),c=!1;do{if(n=t,t=e.stepForward()){if(">"===t.value&&!c){var u=new o(e.getCurrentTokenRow(),e.getCurrentTokenColumn(),e.getCurrentTokenRow(),e.getCurrentTokenColumn()+1);c=!0}if(-1!==t.type.indexOf("tag-name")){if(r===(i=t.value))if("<"===n.value)s++;else if(""!==t.value)return;var p=new o(e.getCurrentTokenRow(),e.getCurrentTokenColumn(),e.getCurrentTokenRow(),e.getCurrentTokenColumn()+1)}}else r===i&&"/>"===t.value&&--s<0&&(p=d=h=new o(e.getCurrentTokenRow(),e.getCurrentTokenColumn(),e.getCurrentTokenRow(),e.getCurrentTokenColumn()+2),u=new o(l.end.row,l.end.column,l.end.row,l.end.column+1))}}while(t&&s>=0);if(a&&u&&h&&p&&l&&d)return{openTag:new o(a.start.row,a.start.column,u.end.row,u.end.column),closeTag:new o(h.start.row,h.start.column,p.end.row,p.end.column),openTagName:l,closeTagName:d}},this.$findOpeningTag=function(e,t){var n=e.getCurrentToken(),i=t.value,r=0,s=e.getCurrentTokenRow(),a=e.getCurrentTokenColumn(),l=a+2,c=new o(s,a,s,l);e.stepForward();var u=new o(e.getCurrentTokenRow(),e.getCurrentTokenColumn(),e.getCurrentTokenRow(),e.getCurrentTokenColumn()+t.value.length);if((t=e.stepForward())&&">"===t.value){var h=new o(e.getCurrentTokenRow(),e.getCurrentTokenColumn(),e.getCurrentTokenRow(),e.getCurrentTokenColumn()+1);e.stepBackward(),e.stepBackward();do{if(t=n,s=e.getCurrentTokenRow(),l=(a=e.getCurrentTokenColumn())+t.value.length,n=e.stepBackward(),t)if(-1!==t.type.indexOf("tag-name")){if(i===t.value)if("<"===n.value){if(++r>0){var d=new o(s,a,s,l),p=new o(e.getCurrentTokenRow(),e.getCurrentTokenColumn(),e.getCurrentTokenRow(),e.getCurrentTokenColumn()+1);do{t=e.stepForward()}while(t&&">"!==t.value);var g=new o(e.getCurrentTokenRow(),e.getCurrentTokenColumn(),e.getCurrentTokenRow(),e.getCurrentTokenColumn()+1)}}else""===t.value){for(var m=0,f=n;f;){if(-1!==f.type.indexOf("tag-name")&&f.value===i){r--;break}if("<"===f.value)break;f=e.stepBackward(),m++}for(var y=0;yn&&(this.$docRowCache.splice(n,t),this.$screenRowCache.splice(n,t))},e.prototype.$getRowCacheIndex=function(e,t){for(var n=0,i=e.length-1;n<=i;){var o=n+i>>1,r=e[o];if(t>r)n=o+1;else{if(!(t=t);r++);return(n=i[r])?(n.index=r,n.start=o-n.value.length,n):null},e.prototype.setUndoManager=function(e){if(this.$undoManager=e,this.$informUndoManager&&this.$informUndoManager.cancel(),e){var t=this;e.addSession(this),this.$syncInformUndoManager=function(){t.$informUndoManager.cancel(),t.mergeUndoDeltas=!1},this.$informUndoManager=o.delayedCall(this.$syncInformUndoManager)}else this.$syncInformUndoManager=function(){}},e.prototype.markUndoGroup=function(){this.$syncInformUndoManager&&this.$syncInformUndoManager()},e.prototype.getUndoManager=function(){return this.$undoManager||this.$defaultUndoManager},e.prototype.getTabString=function(){return this.getUseSoftTabs()?o.stringRepeat(" ",this.getTabSize()):"\t"},e.prototype.setUseSoftTabs=function(e){this.setOption("useSoftTabs",e)},e.prototype.getUseSoftTabs=function(){return this.$useSoftTabs&&!this.$mode.$indentWithTabs},e.prototype.setTabSize=function(e){this.setOption("tabSize",e)},e.prototype.getTabSize=function(){return this.$tabSize},e.prototype.isTabStop=function(e){return this.$useSoftTabs&&e.column%this.$tabSize==0},e.prototype.setNavigateWithinSoftTabs=function(e){this.setOption("navigateWithinSoftTabs",e)},e.prototype.getNavigateWithinSoftTabs=function(){return this.$navigateWithinSoftTabs},e.prototype.setOverwrite=function(e){this.setOption("overwrite",e)},e.prototype.getOverwrite=function(){return this.$overwrite},e.prototype.toggleOverwrite=function(){this.setOverwrite(!this.$overwrite)},e.prototype.addGutterDecoration=function(e,t){this.$decorations[e]||(this.$decorations[e]=""),this.$decorations[e]+=" "+t,this._signal("changeBreakpoint",{})},e.prototype.removeGutterDecoration=function(e,t){this.$decorations[e]=(this.$decorations[e]||"").replace(" "+t,""),this._signal("changeBreakpoint",{})},e.prototype.getBreakpoints=function(){return this.$breakpoints},e.prototype.setBreakpoints=function(e){this.$breakpoints=[];for(var t=0;t0&&(i=!!n.charAt(t-1).match(this.tokenRe)),i||(i=!!n.charAt(t).match(this.tokenRe)),i)var o=this.tokenRe;else o=/^\s+$/.test(n.slice(t-1,t+1))?/\s/:this.nonTokenRe;var r=t;if(r>0){do{r--}while(r>=0&&n.charAt(r).match(o));r++}for(var s=t;se&&(e=t.screenWidth)})),this.lineWidgetWidth=e},e.prototype.$computeWidth=function(e){if(this.$modified||e){if(this.$modified=!1,this.$useWrapMode)return this.screenWidth=this.$wrapLimit;for(var t=this.doc.getAllLines(),n=this.$rowLengthCache,i=0,o=0,r=this.$foldData[o],s=r?r.start.row:1/0,a=t.length,l=0;ls){if((l=r.end.row+1)>=a)break;s=(r=this.$foldData[o++])?r.start.row:1/0}null==n[l]&&(n[l]=this.$getStringScreenWidth(t[l])[0]),n[l]>i&&(i=n[l])}this.screenWidth=i}},e.prototype.getLine=function(e){return this.doc.getLine(e)},e.prototype.getLines=function(e,t){return this.doc.getLines(e,t)},e.prototype.getLength=function(){return this.doc.getLength()},e.prototype.getTextRange=function(e){return this.doc.getTextRange(e||this.selection.getRange())},e.prototype.insert=function(e,t){return this.doc.insert(e,t)},e.prototype.remove=function(e){return this.doc.remove(e)},e.prototype.removeFullLines=function(e,t){return this.doc.removeFullLines(e,t)},e.prototype.undoChanges=function(e,t){if(e.length){this.$fromUndo=!0;for(var n=e.length-1;-1!=n;n--){var i=e[n];"insert"==i.action||"remove"==i.action?this.doc.revertDelta(i):i.folds&&this.addFolds(i.folds)}!t&&this.$undoSelect&&(e.selectionBefore?this.selection.fromJSON(e.selectionBefore):this.selection.setRange(this.$getUndoSelection(e,!0))),this.$fromUndo=!1}},e.prototype.redoChanges=function(e,t){if(e.length){this.$fromUndo=!0;for(var n=0;ne.end.column&&(r.start.column+=c),r.end.row==e.end.row&&r.end.column>e.end.column&&(r.end.column+=c)),s&&r.start.row>=e.end.row&&(r.start.row+=s,r.end.row+=s)}if(r.end=this.insert(r.start,i),o.length){var a=e.start,l=r.start,c=(s=l.row-a.row,l.column-a.column);this.addFolds(o.map((function(e){return(e=e.clone()).start.row==a.row&&(e.start.column+=c),e.end.row==a.row&&(e.end.column+=c),e.start.row+=s,e.end.row+=s,e})))}return r},e.prototype.indentRows=function(e,t,n){n=n.replace(/\t/g,this.getTabString());for(var i=e;i<=t;i++)this.doc.insertInLine({row:i,column:0},n)},e.prototype.outdentRows=function(e){for(var t=e.collapseRows(),n=new u(0,0,0,0),i=this.getTabSize(),o=t.start.row;o<=t.end.row;++o){var r=this.getLine(o);n.start.row=o,n.end.row=o;for(var s=0;s0){var o;if((o=this.getRowFoldEnd(t+n))>this.doc.getLength()-1)return 0;i=o-t}else e=this.$clipRowToDocument(e),i=(t=this.$clipRowToDocument(t))-e+1;var r=new u(e,0,t,Number.MAX_VALUE),s=this.getFoldsInRange(r).map((function(e){return(e=e.clone()).start.row+=i,e.end.row+=i,e})),a=0==n?this.doc.getLines(e,t):this.doc.removeFullLines(e,t);return this.doc.insertFullLines(e+i,a),s.length&&this.addFolds(s),i},e.prototype.moveLinesUp=function(e,t){return this.$moveLines(e,t,-1)},e.prototype.moveLinesDown=function(e,t){return this.$moveLines(e,t,1)},e.prototype.duplicateLines=function(e,t){return this.$moveLines(e,t,0)},e.prototype.$clipRowToDocument=function(e){return Math.max(0,Math.min(e,this.doc.getLength()-1))},e.prototype.$clipColumnToRow=function(e,t){return t<0?0:Math.min(this.doc.getLine(e).length,t)},e.prototype.$clipPositionToDocument=function(e,t){if(t=Math.max(0,t),e<0)e=0,t=0;else{var n=this.doc.getLength();e>=n?(e=n-1,t=this.doc.getLine(n-1).length):t=Math.min(this.doc.getLine(e).length,t)}return{row:e,column:t}},e.prototype.$clipRangeToDocument=function(e){e.start.row<0?(e.start.row=0,e.start.column=0):e.start.column=this.$clipColumnToRow(e.start.row,e.start.column);var t=this.doc.getLength()-1;return e.end.row>t?(e.end.row=t,e.end.column=this.doc.getLine(t).length):e.end.column=this.$clipColumnToRow(e.end.row,e.end.column),e},e.prototype.setUseWrapMode=function(e){if(e!=this.$useWrapMode){if(this.$useWrapMode=e,this.$modified=!0,this.$resetRowCache(0),e){var t=this.getLength();this.$wrapData=Array(t),this.$updateWrapData(0,t-1)}this._signal("changeWrapMode")}},e.prototype.getUseWrapMode=function(){return this.$useWrapMode},e.prototype.setWrapLimitRange=function(e,t){this.$wrapLimitRange.min===e&&this.$wrapLimitRange.max===t||(this.$wrapLimitRange={min:e,max:t},this.$modified=!0,this.$bidiHandler.markAsDirty(),this.$useWrapMode&&this._signal("changeWrapMode"))},e.prototype.adjustWrapLimit=function(e,t){var n=this.$wrapLimitRange;n.max<0&&(n={min:t,max:t});var i=this.$constrainWrapLimit(e,n.min,n.max);return i!=this.$wrapLimit&&i>1&&(this.$wrapLimit=i,this.$modified=!0,this.$useWrapMode&&(this.$updateWrapData(0,this.getLength()-1),this.$resetRowCache(0),this._signal("changeWrapLimit")),!0)},e.prototype.$constrainWrapLimit=function(e,t,n){return t&&(e=Math.max(t,e)),n&&(e=Math.min(n,e)),e},e.prototype.getWrapLimit=function(){return this.$wrapLimit},e.prototype.setWrapLimit=function(e){this.setWrapLimitRange(e,e)},e.prototype.getWrapLimitRange=function(){return{min:this.$wrapLimitRange.min,max:this.$wrapLimitRange.max}},e.prototype.$updateInternalDataOnChange=function(e){var t=this.$useWrapMode,n=e.action,i=e.start,o=e.end,r=i.row,s=o.row,a=s-r,l=null;if(this.$updating=!0,0!=a)if("remove"===n){this[t?"$wrapData":"$rowLengthCache"].splice(r,a);var c=this.$foldData;l=this.getFoldsInRange(e),this.removeFolds(l);var u=0;if(m=this.getFoldLine(o.row)){m.addRemoveChars(o.row,o.column,i.column-o.column),m.shiftRow(-a);var h=this.getFoldLine(r);h&&h!==m&&(h.merge(m),m=h),u=c.indexOf(m)+1}for(;u=o.row&&m.shiftRow(-a);s=r}else{var d=Array(a);d.unshift(r,0);var p=t?this.$wrapData:this.$rowLengthCache;if(p.splice.apply(p,d),c=this.$foldData,u=0,m=this.getFoldLine(r)){var g=m.range.compareInside(i.row,i.column);0==g?(m=m.split(i.row,i.column))&&(m.shiftRow(a),m.addRemoveChars(s,0,o.column-i.column)):-1==g&&(m.addRemoveChars(r,0,o.column-i.column),m.shiftRow(a)),u=c.indexOf(m)+1}for(;u=r&&m.shiftRow(a)}}else a=Math.abs(e.start.column-e.end.column),"remove"===n&&(l=this.getFoldsInRange(e),this.removeFolds(l),a=-a),(m=this.getFoldLine(r))&&m.addRemoveChars(r,i.column,a);return t&&this.$wrapData.length!=this.doc.getLength()&&console.error("doc.getLength() and $wrapData.length have to be the same!"),this.$updating=!1,t?this.$updateWrapData(r,s):this.$updateRowLengthCache(r,s),l},e.prototype.$updateRowLengthCache=function(e,t,n){this.$rowLengthCache[e]=null,this.$rowLengthCache[t]=null},e.prototype.$updateWrapData=function(e,t){var n,i,o=this.doc.getAllLines(),r=this.getTabSize(),s=this.$wrapData,a=this.$wrapLimit,l=e;for(t=Math.min(t,o.length-1);l<=t;)(i=this.getFoldLine(l,i))?(n=[],i.walk(function(e,t,i,r){var s;if(null!=e){(s=this.$getDisplayTokens(e,n.length))[0]=b;for(var a=1;at-h;){var d=r+t-h;if(e[d-1]>=A&&e[d]>=A)u(d);else if(e[d]!=b&&e[d]!=v){for(var p=Math.max(d-(t-(t>>2)),r-1);d>p&&e[d]p&&e[d]p&&e[d]==w;)d--}else for(;d>p&&e[d]p?u(++d):(e[d=r+t]==y&&d--,u(d-h))}else{for(;d!=r-1&&e[d]!=b;d--);if(d>r){u(d);continue}for(d=r+t;d39&&r<48||r>57&&r<64?i.push(w):r>=4352&&x(r)?i.push(f,y):i.push(f)}return i},e.prototype.$getStringScreenWidth=function(e,t,n){if(0==t)return[0,0];var i,o;for(null==t&&(t=1/0),n=n||0,o=0;o=4352&&x(i)?n+=2:n+=1,!(n>t));o++);return[n,o]},e.prototype.getRowLength=function(e){var t=1;return this.lineWidgets&&(t+=this.lineWidgets[e]&&this.lineWidgets[e].rowCount||0),this.$useWrapMode&&this.$wrapData[e]?this.$wrapData[e].length+t:t},e.prototype.getRowLineCount=function(e){return this.$useWrapMode&&this.$wrapData[e]?this.$wrapData[e].length+1:1},e.prototype.getRowWrapIndent=function(e){if(this.$useWrapMode){var t=this.screenToDocumentPosition(e,Number.MAX_VALUE),n=this.$wrapData[t.row];return n.length&&n[0]=0){a=c[u],r=this.$docRowCache[u];var d=e>c[h-1]}else d=!h;for(var p=this.getLength()-1,g=this.getNextFoldLine(r),m=g?g.start.row:1/0;a<=e&&!(a+(l=this.getRowLength(r))>e||r>=p);)a+=l,++r>m&&(r=g.end.row+1,m=(g=this.getNextFoldLine(r,g))?g.start.row:1/0),d&&(this.$docRowCache.push(r),this.$screenRowCache.push(a));if(g&&g.start.row<=r)i=this.getFoldDisplayLine(g),r=g.start.row;else{if(a+l<=e||r>p)return{row:p,column:this.getLine(p).length};i=this.getLine(r),g=null}var f=0,y=Math.floor(e-a);if(this.$useWrapMode){var b=this.$wrapData[r];b&&(o=b[y],y>0&&b.length&&(f=b.indent,s=b[y-1]||b[b.length-1],i=i.substring(s)))}return void 0!==n&&this.$bidiHandler.isBidiRow(a+y,r,y)&&(t=this.$bidiHandler.offsetToCol(n)),s+=this.$getStringScreenWidth(i,t-f)[1],this.$useWrapMode&&s>=o&&(s=o-1),g?g.idxToPosition(s):{row:r,column:s}},e.prototype.documentToScreenPosition=function(e,t){if(void 0===t)var n=this.$clipPositionToDocument(e.row,e.column);else n=this.$clipPositionToDocument(e,t);e=n.row,t=n.column;var i,o=0,r=null;(i=this.getFoldAt(e,t,1))&&(e=i.start.row,t=i.start.column);var s,a=0,l=this.$docRowCache,c=this.$getRowCacheIndex(l,e),u=l.length;if(u&&c>=0){a=l[c],o=this.$screenRowCache[c];var h=e>l[u-1]}else h=!u;for(var d=this.getNextFoldLine(a),p=d?d.start.row:1/0;a=p){if((s=d.end.row+1)>e)break;p=(d=this.getNextFoldLine(s,d))?d.start.row:1/0}else s=a+1;o+=this.getRowLength(a),a=s,h&&(this.$docRowCache.push(a),this.$screenRowCache.push(o))}var g="";d&&a>=p?(g=this.getFoldDisplayLine(d,e,t),r=d.start.row):(g=this.getLine(e).substring(0,t),r=e);var m=0;if(this.$useWrapMode){var f=this.$wrapData[r];if(f){for(var y=0;g.length>=f[y];)o++,y++;g=g.substring(f[y-1]||0,g.length),m=y>0?f.indent:0}}return this.lineWidgets&&this.lineWidgets[a]&&this.lineWidgets[a].rowsAbove&&(o+=this.lineWidgets[a].rowsAbove),{row:o,column:m+this.$getStringScreenWidth(g)[0]}},e.prototype.documentToScreenColumn=function(e,t){return this.documentToScreenPosition(e,t).column},e.prototype.documentToScreenRow=function(e,t){return this.documentToScreenPosition(e,t).row},e.prototype.getScreenLength=function(){var e=0,t=null;if(this.$useWrapMode)for(var n=this.$wrapData.length,i=0,o=(a=0,(t=this.$foldData[a++])?t.start.row:1/0);io&&(i=t.end.row+1,o=(t=this.$foldData[a++])?t.start.row:1/0)}else{e=this.getLength();for(var s=this.$foldData,a=0;an);r++);return[i,r]})},e.prototype.destroy=function(){this.destroyed||(this.bgTokenizer.setDocument(null),this.bgTokenizer.cleanup(),this.destroyed=!0),this.$stopWorker(),this.removeAllListeners(),this.doc&&this.doc.off("change",this.$onChange),this.selection.detach()},e}();m.$uid=0,m.prototype.$modes=s.$modes,m.prototype.getValue=m.prototype.toString,m.prototype.$defaultUndoManager={undo:function(){},redo:function(){},hasUndo:function(){},hasRedo:function(){},reset:function(){},add:function(){},addSelection:function(){},startNewGroup:function(){},addSession:function(){}},m.prototype.$overwrite=!1,m.prototype.$mode=null,m.prototype.$modeId=null,m.prototype.$scrollTop=0,m.prototype.$scrollLeft=0,m.prototype.$wrapLimit=80,m.prototype.$useWrapMode=!1,m.prototype.$wrapLimitRange={min:null,max:null},m.prototype.lineWidgets=null,m.prototype.isFullWidth=x,i.implement(m.prototype,a);var f=1,y=2,b=3,v=4,w=9,A=10,C=11,k=12;function x(e){return!(e<4352)&&(e>=4352&&e<=4447||e>=4515&&e<=4519||e>=4602&&e<=4607||e>=9001&&e<=9002||e>=11904&&e<=11929||e>=11931&&e<=12019||e>=12032&&e<=12245||e>=12272&&e<=12283||e>=12288&&e<=12350||e>=12353&&e<=12438||e>=12441&&e<=12543||e>=12549&&e<=12589||e>=12593&&e<=12686||e>=12688&&e<=12730||e>=12736&&e<=12771||e>=12784&&e<=12830||e>=12832&&e<=12871||e>=12880&&e<=13054||e>=13056&&e<=19903||e>=19968&&e<=42124||e>=42128&&e<=42182||e>=43360&&e<=43388||e>=44032&&e<=55203||e>=55216&&e<=55238||e>=55243&&e<=55291||e>=63744&&e<=64255||e>=65040&&e<=65049||e>=65072&&e<=65106||e>=65108&&e<=65126||e>=65128&&e<=65131||e>=65281&&e<=65376||e>=65504&&e<=65510)}e("./edit_session/folding").Folding.call(m.prototype),e("./edit_session/bracket_match").BracketMatch.call(m.prototype),s.defineOptions(m.prototype,"session",{wrap:{set:function(e){if(e&&"off"!=e?"free"==e?e=!0:"printMargin"==e?e=-1:"string"==typeof e&&(e=parseInt(e,10)||!1):e=!1,this.$wrap!=e)if(this.$wrap=e,e){var t="number"==typeof e?e:null;this.setWrapLimitRange(t,t),this.setUseWrapMode(!0)}else this.setUseWrapMode(!1)},get:function(){return this.getUseWrapMode()?-1==this.$wrap?"printMargin":this.getWrapLimitRange().min?this.$wrap:"free":"off"},handlesSet:!0},wrapMethod:{set:function(e){(e="auto"==e?"text"!=this.$mode.type:"text"!=e)!=this.$wrapAsCode&&(this.$wrapAsCode=e,this.$useWrapMode&&(this.$useWrapMode=!1,this.setUseWrapMode(!0)))},initialValue:"auto"},indentedSoftWrap:{set:function(){this.$useWrapMode&&(this.$useWrapMode=!1,this.setUseWrapMode(!0))},initialValue:!0},firstLineNumber:{set:function(){this._signal("changeBreakpoint")},initialValue:1},useWorker:{set:function(e){this.$useWorker=e,this.$stopWorker(),e&&this.$startWorker()},initialValue:!0},useSoftTabs:{initialValue:!0},tabSize:{set:function(e){(e=parseInt(e))>0&&this.$tabSize!==e&&(this.$modified=!0,this.$rowLengthCache=[],this.$tabSize=e,this._signal("changeTabSize"))},initialValue:4,handlesSet:!0},navigateWithinSoftTabs:{initialValue:!1},foldStyle:{set:function(e){this.setFoldStyle(e)},handlesSet:!0},overwrite:{set:function(e){this._signal("changeOverwrite")},initialValue:!1},newLineMode:{set:function(e){this.doc.setNewLineMode(e)},get:function(){return this.doc.getNewLineMode()},handlesSet:!0},mode:{set:function(e){this.setMode(e)},get:function(){return this.$modeId},handlesSet:!0}}),t.EditSession=m})),ace.define("ace/search",["require","exports","module","ace/lib/lang","ace/lib/oop","ace/range"],(function(e,t,n){"use strict";var i=e("./lib/lang"),o=e("./lib/oop"),r=e("./range").Range,s=function(){function e(){this.$options={}}return e.prototype.set=function(e){return o.mixin(this.$options,e),this},e.prototype.getOptions=function(){return i.copyObject(this.$options)},e.prototype.setOptions=function(e){this.$options=e},e.prototype.find=function(e){var t=this.$options,n=this.$matchIterator(e,t);if(!n)return!1;var i=null;return n.forEach((function(e,n,o,s){return i=new r(e,n,o,s),!(n==s&&t.start&&t.start.start&&0!=t.skipCurrent&&i.isEqual(t.start)&&(i=null,1))})),i},e.prototype.findAll=function(e){var t=this.$options;if(!t.needle)return[];this.$assembleRegExp(t);var n=t.range,o=n?e.getLines(n.start.row,n.end.row):e.doc.getAllLines(),s=[],a=t.re;if(t.$isMultiLine){var l,c=a.length,u=o.length-c;e:for(var h=a.offset||0;h<=u;h++){for(var d=0;dm||(s.push(l=new r(h,m,h+c-1,f)),c>2&&(h=h+c-2))}}else for(var y=0;yA&&s[d].end.row==C;)d--;for(s=s.slice(y,d+1),y=0,d=s.length;y=c;n--)if(p(n,Number.MAX_VALUE,e))return;if(0!=t.wrap)for(n=u,c=l.row;n>=c;n--)if(p(n,Number.MAX_VALUE,e))return}};else h=function(e){var n=l.row;if(!p(n,l.column,e)){for(n+=1;n<=u;n++)if(p(n,0,e))return;if(0!=t.wrap)for(n=c,u=l.row;n<=u;n++)if(p(n,0,e))return}};if(t.$isMultiLine)var d=n.length,p=function(t,i,r){var s=o?t-d+1:t;if(!(s<0||s+d>e.getLength())){var a=e.getLine(s),l=a.search(n[0]);if(!(!o&&li))return!!r(s,l,s+d-1,u)||void 0}}};else p=o?function(t,o,r){var a,l=e.getLine(t),c=[],u=0;for(n.lastIndex=0;a=n.exec(l);){var h=a[0].length;if(u=a.index,!h){if(u>=l.length)break;n.lastIndex=u+=i.skipEmptyMatch(l,u,s)}if(a.index+h>o)break;c.push(a.index,h)}for(var d=c.length-1;d>=0;d-=2){var p=c[d-1];if(r(t,p,t,p+(h=c[d])))return!0}}:function(t,o,r){var a,l,c=e.getLine(t);for(n.lastIndex=o;l=n.exec(c);){var u=l[0].length;if(r(t,a=l.index,t,a+u))return!0;if(!u&&(n.lastIndex=a+=i.skipEmptyMatch(c,a,s),a>=c.length))return!1}};return{forEach:h}},e}();t.Search=s})),ace.define("ace/keyboard/hash_handler",["require","exports","module","ace/lib/keys","ace/lib/useragent"],(function(e,t,n){"use strict";var i,o=this&&this.__extends||(i=function(e,t){return i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},i(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}i(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}),r=e("../lib/keys"),s=e("../lib/useragent"),a=r.KEY_MODS,l=function(){function e(e,t){this.$init(e,t,!1)}return e.prototype.$init=function(e,t,n){this.platform=t||(s.isMac?"mac":"win"),this.commands={},this.commandKeyBinding={},this.addCommands(e),this.$singleCommand=n},e.prototype.addCommand=function(e){this.commands[e.name]&&this.removeCommand(e),this.commands[e.name]=e,e.bindKey&&this._buildKeyHash(e)},e.prototype.removeCommand=function(e,t){var n=e&&("string"==typeof e?e:e.name);e=this.commands[n],t||delete this.commands[n];var i=this.commandKeyBinding;for(var o in i){var r=i[o];if(r==e)delete i[o];else if(Array.isArray(r)){var s=r.indexOf(e);-1!=s&&(r.splice(s,1),1==r.length&&(i[o]=r[0]))}}},e.prototype.bindKey=function(e,t,n){if("object"==typeof e&&e&&(null==n&&(n=e.position),e=e[this.platform]),e)return"function"==typeof t?this.addCommand({exec:t,bindKey:e,name:t.name||e}):void e.split("|").forEach((function(e){var i="";if(-1!=e.indexOf(" ")){var o=e.split(/\s+/);e=o.pop(),o.forEach((function(e){var t=this.parseKeys(e),n=a[t.hashId]+t.key;i+=(i?" ":"")+n,this._addCommandToBinding(i,"chainKeys")}),this),i+=" "}var r=this.parseKeys(e),s=a[r.hashId]+r.key;this._addCommandToBinding(i+s,t,n)}),this)},e.prototype._addCommandToBinding=function(e,t,n){var i,o=this.commandKeyBinding;if(t)if(!o[e]||this.$singleCommand)o[e]=t;else{Array.isArray(o[e])?-1!=(i=o[e].indexOf(t))&&o[e].splice(i,1):o[e]=[o[e]],"number"!=typeof n&&(n=c(t));var r=o[e];for(i=0;in);i++);r.splice(i,0,t)}else delete o[e]},e.prototype.addCommands=function(e){e&&Object.keys(e).forEach((function(t){var n=e[t];if(n){if("string"==typeof n)return this.bindKey(n,t);"function"==typeof n&&(n={exec:n}),"object"==typeof n&&(n.name||(n.name=t),this.addCommand(n))}}),this)},e.prototype.removeCommands=function(e){Object.keys(e).forEach((function(t){this.removeCommand(e[t])}),this)},e.prototype.bindKeys=function(e){Object.keys(e).forEach((function(t){this.bindKey(t,e[t])}),this)},e.prototype._buildKeyHash=function(e){this.bindKey(e.bindKey,e)},e.prototype.parseKeys=function(e){var t=e.toLowerCase().split(/[\-\+]([\-\+])?/).filter((function(e){return e})),n=t.pop(),i=r[n];if(r.FUNCTION_KEYS[i])n=r.FUNCTION_KEYS[i].toLowerCase();else{if(!t.length)return{key:n,hashId:-1};if(1==t.length&&"shift"==t[0])return{key:n.toUpperCase(),hashId:-1}}for(var o=0,s=t.length;s--;){var a=r.KEY_MODS[t[s]];if(null==a)return"undefined"!=typeof console&&console.error("invalid modifier "+t[s]+" in "+e),!1;o|=a}return{key:n,hashId:o}},e.prototype.findKeyCommand=function(e,t){var n=a[e]+t;return this.commandKeyBinding[n]},e.prototype.handleKeyboard=function(e,t,n,i){if(!(i<0)){var o=a[t]+n,r=this.commandKeyBinding[o];return e.$keyChain&&(e.$keyChain+=" "+o,r=this.commandKeyBinding[e.$keyChain]||r),!r||"chainKeys"!=r&&"chainKeys"!=r[r.length-1]?(e.$keyChain&&(t&&4!=t||1!=n.length?(-1==t||i>0)&&(e.$keyChain=""):e.$keyChain=e.$keyChain.slice(0,-o.length-1)),{command:r}):(e.$keyChain=e.$keyChain||o,{command:"null"})}},e.prototype.getStatusText=function(e,t){return t.$keyChain||""},e}();function c(e){return"object"==typeof e&&e.bindKey&&e.bindKey.position||(e.isDefault?-100:0)}var u=function(e){function t(t,n){var i=e.call(this,t,n)||this;return i.$singleCommand=!0,i}return o(t,e),t}(l);u.call=function(e,t,n){l.prototype.$init.call(e,t,n,!0)},l.call=function(e,t,n){l.prototype.$init.call(e,t,n,!1)},t.HashHandler=u,t.MultiHashHandler=l})),ace.define("ace/commands/command_manager",["require","exports","module","ace/lib/oop","ace/keyboard/hash_handler","ace/lib/event_emitter"],(function(e,t,n){"use strict";var i,o=this&&this.__extends||(i=function(e,t){return i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},i(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}i(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}),r=e("../lib/oop"),s=e("../keyboard/hash_handler").MultiHashHandler,a=e("../lib/event_emitter").EventEmitter,l=function(e){function t(t,n){var i=e.call(this,n,t)||this;return i.byName=i.commands,i.setDefaultHandler("exec",(function(e){return e.args?e.command.exec(e.editor,e.args,e.event,!1):e.command.exec(e.editor,{},e.event,!0)})),i}return o(t,e),t.prototype.exec=function(e,t,n){if(Array.isArray(e)){for(var i=e.length;i--;)if(this.exec(e[i],t,n))return!0;return!1}if("string"==typeof e&&(e=this.commands[e]),!e)return!1;if(t&&t.$readOnly&&!e.readOnly)return!1;if(0!=this.$checkCommandState&&e.isAvailable&&!e.isAvailable(t))return!1;var o={editor:t,command:e,args:n};return o.returnValue=this._emit("exec",o),this._signal("afterExec",o),!1!==o.returnValue},t.prototype.toggleRecording=function(e){if(!this.$inReplay)return e&&e._emit("changeStatus"),this.recording?(this.macro.pop(),this.off("exec",this.$addCommandToMacro),this.macro.length||(this.macro=this.oldMacro),this.recording=!1):(this.$addCommandToMacro||(this.$addCommandToMacro=function(e){this.macro.push([e.command,e.args])}.bind(this)),this.oldMacro=this.macro,this.macro=[],this.on("exec",this.$addCommandToMacro),this.recording=!0)},t.prototype.replay=function(e){if(!this.$inReplay&&this.macro){if(this.recording)return this.toggleRecording(e);try{this.$inReplay=!0,this.macro.forEach((function(t){"string"==typeof t?this.exec(t,e):this.exec(t[0],e,t[1])}),this)}finally{this.$inReplay=!1}}},t.prototype.trimMacro=function(e){return e.map((function(e){return"string"!=typeof e[0]&&(e[0]=e[0].name),e[1]||(e=e[0]),e}))},t}(s);r.implement(l.prototype,a),t.CommandManager=l})),ace.define("ace/commands/default_commands",["require","exports","module","ace/lib/lang","ace/config","ace/range"],(function(e,t,n){"use strict";var i=e("../lib/lang"),o=e("../config"),r=e("../range").Range;function s(e,t){return{win:e,mac:t}}t.commands=[{name:"showSettingsMenu",description:"Show settings menu",bindKey:s("Ctrl-,","Command-,"),exec:function(e){o.loadModule("ace/ext/settings_menu",(function(t){t.init(e),e.showSettingsMenu()}))},readOnly:!0},{name:"goToNextError",description:"Go to next error",bindKey:s("Alt-E","F4"),exec:function(e){o.loadModule("ace/ext/error_marker",(function(t){t.showErrorMarker(e,1)}))},scrollIntoView:"animate",readOnly:!0},{name:"goToPreviousError",description:"Go to previous error",bindKey:s("Alt-Shift-E","Shift-F4"),exec:function(e){o.loadModule("ace/ext/error_marker",(function(t){t.showErrorMarker(e,-1)}))},scrollIntoView:"animate",readOnly:!0},{name:"selectall",description:"Select all",bindKey:s("Ctrl-A","Command-A"),exec:function(e){e.selectAll()},readOnly:!0},{name:"centerselection",description:"Center selection",bindKey:s(null,"Ctrl-L"),exec:function(e){e.centerSelection()},readOnly:!0},{name:"gotoline",description:"Go to line...",bindKey:s("Ctrl-L","Command-L"),exec:function(e,t){"number"!=typeof t||isNaN(t)||e.gotoLine(t),e.prompt({$type:"gotoLine"})},readOnly:!0},{name:"fold",bindKey:s("Alt-L|Ctrl-F1","Command-Alt-L|Command-F1"),exec:function(e){e.session.toggleFold(!1)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"unfold",bindKey:s("Alt-Shift-L|Ctrl-Shift-F1","Command-Alt-Shift-L|Command-Shift-F1"),exec:function(e){e.session.toggleFold(!0)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"toggleFoldWidget",description:"Toggle fold widget",bindKey:s("F2","F2"),exec:function(e){e.session.toggleFoldWidget()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"toggleParentFoldWidget",description:"Toggle parent fold widget",bindKey:s("Alt-F2","Alt-F2"),exec:function(e){e.session.toggleFoldWidget(!0)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"foldall",description:"Fold all",bindKey:s(null,"Ctrl-Command-Option-0"),exec:function(e){e.session.foldAll()},scrollIntoView:"center",readOnly:!0},{name:"foldAllComments",description:"Fold all comments",bindKey:s(null,"Ctrl-Command-Option-0"),exec:function(e){e.session.foldAllComments()},scrollIntoView:"center",readOnly:!0},{name:"foldOther",description:"Fold other",bindKey:s("Alt-0","Command-Option-0"),exec:function(e){e.session.foldAll(),e.session.unfold(e.selection.getAllRanges())},scrollIntoView:"center",readOnly:!0},{name:"unfoldall",description:"Unfold all",bindKey:s("Alt-Shift-0","Command-Option-Shift-0"),exec:function(e){e.session.unfold()},scrollIntoView:"center",readOnly:!0},{name:"findnext",description:"Find next",bindKey:s("Ctrl-K","Command-G"),exec:function(e){e.findNext()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"findprevious",description:"Find previous",bindKey:s("Ctrl-Shift-K","Command-Shift-G"),exec:function(e){e.findPrevious()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"selectOrFindNext",description:"Select or find next",bindKey:s("Alt-K","Ctrl-G"),exec:function(e){e.selection.isEmpty()?e.selection.selectWord():e.findNext()},readOnly:!0},{name:"selectOrFindPrevious",description:"Select or find previous",bindKey:s("Alt-Shift-K","Ctrl-Shift-G"),exec:function(e){e.selection.isEmpty()?e.selection.selectWord():e.findPrevious()},readOnly:!0},{name:"find",description:"Find",bindKey:s("Ctrl-F","Command-F"),exec:function(e){o.loadModule("ace/ext/searchbox",(function(t){t.Search(e)}))},readOnly:!0},{name:"overwrite",description:"Overwrite",bindKey:"Insert",exec:function(e){e.toggleOverwrite()},readOnly:!0},{name:"selecttostart",description:"Select to start",bindKey:s("Ctrl-Shift-Home","Command-Shift-Home|Command-Shift-Up"),exec:function(e){e.getSelection().selectFileStart()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"gotostart",description:"Go to start",bindKey:s("Ctrl-Home","Command-Home|Command-Up"),exec:function(e){e.navigateFileStart()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"selectup",description:"Select up",bindKey:s("Shift-Up","Shift-Up|Ctrl-Shift-P"),exec:function(e){e.getSelection().selectUp()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"golineup",description:"Go line up",bindKey:s("Up","Up|Ctrl-P"),exec:function(e,t){e.navigateUp(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttoend",description:"Select to end",bindKey:s("Ctrl-Shift-End","Command-Shift-End|Command-Shift-Down"),exec:function(e){e.getSelection().selectFileEnd()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"gotoend",description:"Go to end",bindKey:s("Ctrl-End","Command-End|Command-Down"),exec:function(e){e.navigateFileEnd()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"selectdown",description:"Select down",bindKey:s("Shift-Down","Shift-Down|Ctrl-Shift-N"),exec:function(e){e.getSelection().selectDown()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"golinedown",description:"Go line down",bindKey:s("Down","Down|Ctrl-N"),exec:function(e,t){e.navigateDown(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectwordleft",description:"Select word left",bindKey:s("Ctrl-Shift-Left","Option-Shift-Left"),exec:function(e){e.getSelection().selectWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotowordleft",description:"Go to word left",bindKey:s("Ctrl-Left","Option-Left"),exec:function(e){e.navigateWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttolinestart",description:"Select to line start",bindKey:s("Alt-Shift-Left","Command-Shift-Left|Ctrl-Shift-A"),exec:function(e){e.getSelection().selectLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotolinestart",description:"Go to line start",bindKey:s("Alt-Left|Home","Command-Left|Home|Ctrl-A"),exec:function(e){e.navigateLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectleft",description:"Select left",bindKey:s("Shift-Left","Shift-Left|Ctrl-Shift-B"),exec:function(e){e.getSelection().selectLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotoleft",description:"Go to left",bindKey:s("Left","Left|Ctrl-B"),exec:function(e,t){e.navigateLeft(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectwordright",description:"Select word right",bindKey:s("Ctrl-Shift-Right","Option-Shift-Right"),exec:function(e){e.getSelection().selectWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotowordright",description:"Go to word right",bindKey:s("Ctrl-Right","Option-Right"),exec:function(e){e.navigateWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttolineend",description:"Select to line end",bindKey:s("Alt-Shift-Right","Command-Shift-Right|Shift-End|Ctrl-Shift-E"),exec:function(e){e.getSelection().selectLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotolineend",description:"Go to line end",bindKey:s("Alt-Right|End","Command-Right|End|Ctrl-E"),exec:function(e){e.navigateLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectright",description:"Select right",bindKey:s("Shift-Right","Shift-Right"),exec:function(e){e.getSelection().selectRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotoright",description:"Go to right",bindKey:s("Right","Right|Ctrl-F"),exec:function(e,t){e.navigateRight(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectpagedown",description:"Select page down",bindKey:"Shift-PageDown",exec:function(e){e.selectPageDown()},readOnly:!0},{name:"pagedown",description:"Page down",bindKey:s(null,"Option-PageDown"),exec:function(e){e.scrollPageDown()},readOnly:!0},{name:"gotopagedown",description:"Go to page down",bindKey:s("PageDown","PageDown|Ctrl-V"),exec:function(e){e.gotoPageDown()},readOnly:!0},{name:"selectpageup",description:"Select page up",bindKey:"Shift-PageUp",exec:function(e){e.selectPageUp()},readOnly:!0},{name:"pageup",description:"Page up",bindKey:s(null,"Option-PageUp"),exec:function(e){e.scrollPageUp()},readOnly:!0},{name:"gotopageup",description:"Go to page up",bindKey:"PageUp",exec:function(e){e.gotoPageUp()},readOnly:!0},{name:"scrollup",description:"Scroll up",bindKey:s("Ctrl-Up",null),exec:function(e){e.renderer.scrollBy(0,-2*e.renderer.layerConfig.lineHeight)},readOnly:!0},{name:"scrolldown",description:"Scroll down",bindKey:s("Ctrl-Down",null),exec:function(e){e.renderer.scrollBy(0,2*e.renderer.layerConfig.lineHeight)},readOnly:!0},{name:"selectlinestart",description:"Select line start",bindKey:"Shift-Home",exec:function(e){e.getSelection().selectLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectlineend",description:"Select line end",bindKey:"Shift-End",exec:function(e){e.getSelection().selectLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"togglerecording",description:"Toggle recording",bindKey:s("Ctrl-Alt-E","Command-Option-E"),exec:function(e){e.commands.toggleRecording(e)},readOnly:!0},{name:"replaymacro",description:"Replay macro",bindKey:s("Ctrl-Shift-E","Command-Shift-E"),exec:function(e){e.commands.replay(e)},readOnly:!0},{name:"jumptomatching",description:"Jump to matching",bindKey:s("Ctrl-\\|Ctrl-P","Command-\\"),exec:function(e){e.jumpToMatching()},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"selecttomatching",description:"Select to matching",bindKey:s("Ctrl-Shift-\\|Ctrl-Shift-P","Command-Shift-\\"),exec:function(e){e.jumpToMatching(!0)},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"expandToMatching",description:"Expand to matching",bindKey:s("Ctrl-Shift-M","Ctrl-Shift-M"),exec:function(e){e.jumpToMatching(!0,!0)},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"passKeysToBrowser",description:"Pass keys to browser",bindKey:s(null,null),exec:function(){},passEvent:!0,readOnly:!0},{name:"copy",description:"Copy",exec:function(e){},readOnly:!0},{name:"cut",description:"Cut",exec:function(e){var t=e.$copyWithEmptySelection&&e.selection.isEmpty()?e.selection.getLineRange():e.selection.getRange();e._emit("cut",t),t.isEmpty()||e.session.remove(t),e.clearSelection()},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"paste",description:"Paste",exec:function(e,t){e.$handlePaste(t)},scrollIntoView:"cursor"},{name:"removeline",description:"Remove line",bindKey:s("Ctrl-D","Command-D"),exec:function(e){e.removeLines()},scrollIntoView:"cursor",multiSelectAction:"forEachLine"},{name:"duplicateSelection",description:"Duplicate selection",bindKey:s("Ctrl-Shift-D","Command-Shift-D"),exec:function(e){e.duplicateSelection()},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"sortlines",description:"Sort lines",bindKey:s("Ctrl-Alt-S","Command-Alt-S"),exec:function(e){e.sortLines()},scrollIntoView:"selection",multiSelectAction:"forEachLine"},{name:"togglecomment",description:"Toggle comment",bindKey:s("Ctrl-/","Command-/"),exec:function(e){e.toggleCommentLines()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"toggleBlockComment",description:"Toggle block comment",bindKey:s("Ctrl-Shift-/","Command-Shift-/"),exec:function(e){e.toggleBlockComment()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"modifyNumberUp",description:"Modify number up",bindKey:s("Ctrl-Shift-Up","Alt-Shift-Up"),exec:function(e){e.modifyNumber(1)},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"modifyNumberDown",description:"Modify number down",bindKey:s("Ctrl-Shift-Down","Alt-Shift-Down"),exec:function(e){e.modifyNumber(-1)},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"replace",description:"Replace",bindKey:s("Ctrl-H","Command-Option-F"),exec:function(e){o.loadModule("ace/ext/searchbox",(function(t){t.Search(e,!0)}))}},{name:"undo",description:"Undo",bindKey:s("Ctrl-Z","Command-Z"),exec:function(e){e.undo()}},{name:"redo",description:"Redo",bindKey:s("Ctrl-Shift-Z|Ctrl-Y","Command-Shift-Z|Command-Y"),exec:function(e){e.redo()}},{name:"copylinesup",description:"Copy lines up",bindKey:s("Alt-Shift-Up","Command-Option-Up"),exec:function(e){e.copyLinesUp()},scrollIntoView:"cursor"},{name:"movelinesup",description:"Move lines up",bindKey:s("Alt-Up","Option-Up"),exec:function(e){e.moveLinesUp()},scrollIntoView:"cursor"},{name:"copylinesdown",description:"Copy lines down",bindKey:s("Alt-Shift-Down","Command-Option-Down"),exec:function(e){e.copyLinesDown()},scrollIntoView:"cursor"},{name:"movelinesdown",description:"Move lines down",bindKey:s("Alt-Down","Option-Down"),exec:function(e){e.moveLinesDown()},scrollIntoView:"cursor"},{name:"del",description:"Delete",bindKey:s("Delete","Delete|Ctrl-D|Shift-Delete"),exec:function(e){e.remove("right")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"backspace",description:"Backspace",bindKey:s("Shift-Backspace|Backspace","Ctrl-Backspace|Shift-Backspace|Backspace|Ctrl-H"),exec:function(e){e.remove("left")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"cut_or_delete",description:"Cut or delete",bindKey:s("Shift-Delete",null),exec:function(e){if(!e.selection.isEmpty())return!1;e.remove("left")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolinestart",description:"Remove to line start",bindKey:s("Alt-Backspace","Command-Backspace"),exec:function(e){e.removeToLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolineend",description:"Remove to line end",bindKey:s("Alt-Delete","Ctrl-K|Command-Delete"),exec:function(e){e.removeToLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolinestarthard",description:"Remove to line start hard",bindKey:s("Ctrl-Shift-Backspace",null),exec:function(e){var t=e.selection.getRange();t.start.column=0,e.session.remove(t)},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolineendhard",description:"Remove to line end hard",bindKey:s("Ctrl-Shift-Delete",null),exec:function(e){var t=e.selection.getRange();t.end.column=Number.MAX_VALUE,e.session.remove(t)},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removewordleft",description:"Remove word left",bindKey:s("Ctrl-Backspace","Alt-Backspace|Ctrl-Alt-Backspace"),exec:function(e){e.removeWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removewordright",description:"Remove word right",bindKey:s("Ctrl-Delete","Alt-Delete"),exec:function(e){e.removeWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"outdent",description:"Outdent",bindKey:s("Shift-Tab","Shift-Tab"),exec:function(e){e.blockOutdent()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"indent",description:"Indent",bindKey:s("Tab","Tab"),exec:function(e){e.indent()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"blockoutdent",description:"Block outdent",bindKey:s("Ctrl-[","Ctrl-["),exec:function(e){e.blockOutdent()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"blockindent",description:"Block indent",bindKey:s("Ctrl-]","Ctrl-]"),exec:function(e){e.blockIndent()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"insertstring",description:"Insert string",exec:function(e,t){e.insert(t)},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"inserttext",description:"Insert text",exec:function(e,t){e.insert(i.stringRepeat(t.text||"",t.times||1))},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"splitline",description:"Split line",bindKey:s(null,"Ctrl-O"),exec:function(e){e.splitLine()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"transposeletters",description:"Transpose letters",bindKey:s("Alt-Shift-X","Ctrl-T"),exec:function(e){e.transposeLetters()},multiSelectAction:function(e){e.transposeSelections(1)},scrollIntoView:"cursor"},{name:"touppercase",description:"To uppercase",bindKey:s("Ctrl-U","Ctrl-U"),exec:function(e){e.toUpperCase()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"tolowercase",description:"To lowercase",bindKey:s("Ctrl-Shift-U","Ctrl-Shift-U"),exec:function(e){e.toLowerCase()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"autoindent",description:"Auto Indent",bindKey:s(null,null),exec:function(e){e.autoIndent()},multiSelectAction:"forEachLine",scrollIntoView:"animate"},{name:"expandtoline",description:"Expand to line",bindKey:s("Ctrl-Shift-L","Command-Shift-L"),exec:function(e){var t=e.selection.getRange();t.start.column=t.end.column=0,t.end.row++,e.selection.setRange(t,!1)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"openlink",bindKey:s("Ctrl+F3","F3"),exec:function(e){e.openLink()}},{name:"joinlines",description:"Join lines",bindKey:s(null,null),exec:function(e){for(var t=e.selection.isBackwards(),n=t?e.selection.getSelectionLead():e.selection.getSelectionAnchor(),o=t?e.selection.getSelectionAnchor():e.selection.getSelectionLead(),s=e.session.doc.getLine(n.row).length,a=e.session.doc.getTextRange(e.selection.getRange()).replace(/\n\s*/," ").length,l=e.session.doc.getLine(n.row),c=n.row+1;c<=o.row+1;c++){var u=i.stringTrimLeft(i.stringTrimRight(e.session.doc.getLine(c)));0!==u.length&&(u=" "+u),l+=u}o.row+10?(e.selection.moveCursorTo(n.row,n.column),e.selection.selectTo(n.row,n.column+a)):(s=e.session.doc.getLine(n.row).length>s?s+1:s,e.selection.moveCursorTo(n.row,s))},multiSelectAction:"forEach",readOnly:!0},{name:"invertSelection",description:"Invert selection",bindKey:s(null,null),exec:function(e){var t=e.session.doc.getLength()-1,n=e.session.doc.getLine(t).length,i=e.selection.rangeList.ranges,o=[];i.length<1&&(i=[e.selection.getRange()]);for(var s=0;st[n].column&&n++,r.unshift(n,0),t.splice.apply(t,r),this.$updateRows()}}},e.prototype.$updateRows=function(){var e=this.session.lineWidgets;if(e){var t=!0;e.forEach((function(e,n){if(e)for(t=!1,e.row=n;e.$oldWidget;)e.$oldWidget.row=n,e=e.$oldWidget})),t&&(this.session.lineWidgets=null)}},e.prototype.$registerLineWidget=function(e){this.session.lineWidgets||(this.session.lineWidgets=new Array(this.session.getLength()));var t=this.session.lineWidgets[e.row];return t&&(e.$oldWidget=t,t.el&&t.el.parentNode&&(t.el.parentNode.removeChild(t.el),t._inDocument=!1)),this.session.lineWidgets[e.row]=e,e},e.prototype.addLineWidget=function(e){if(this.$registerLineWidget(e),e.session=this.session,!this.editor)return e;var t=this.editor.renderer;e.html&&!e.el&&(e.el=i.createElement("div"),e.el.innerHTML=e.html),e.text&&!e.el&&(e.el=i.createElement("div"),e.el.textContent=e.text),e.el&&(i.addCssClass(e.el,"ace_lineWidgetContainer"),e.className&&i.addCssClass(e.el,e.className),e.el.style.position="absolute",e.el.style.zIndex=5,t.container.appendChild(e.el),e._inDocument=!0,e.coverGutter||(e.el.style.zIndex=3),null==e.pixelHeight&&(e.pixelHeight=e.el.offsetHeight)),null==e.rowCount&&(e.rowCount=e.pixelHeight/t.layerConfig.lineHeight);var n=this.session.getFoldAt(e.row,0);if(e.$fold=n,n){var o=this.session.lineWidgets;e.row!=n.end.row||o[n.start.row]?e.hidden=!0:o[n.start.row]=e}return this.session._emit("changeFold",{data:{start:{row:e.row}}}),this.$updateRows(),this.renderWidgets(null,t),this.onWidgetChanged(e),e},e.prototype.removeLineWidget=function(e){if(e._inDocument=!1,e.session=null,e.el&&e.el.parentNode&&e.el.parentNode.removeChild(e.el),e.editor&&e.editor.destroy)try{e.editor.destroy()}catch(e){}if(this.session.lineWidgets){var t=this.session.lineWidgets[e.row];if(t==e)this.session.lineWidgets[e.row]=e.$oldWidget,e.$oldWidget&&this.onWidgetChanged(e.$oldWidget);else for(;t;){if(t.$oldWidget==e){t.$oldWidget=e.$oldWidget;break}t=t.$oldWidget}}this.session._emit("changeFold",{data:{start:{row:e.row}}}),this.$updateRows()},e.prototype.getWidgetsAtRow=function(e){for(var t=this.session.lineWidgets,n=t&&t[e],i=[];n;)i.push(n),n=n.$oldWidget;return i},e.prototype.onWidgetChanged=function(e){this.session._changedWidgets.push(e),this.editor&&this.editor.renderer.updateFull()},e.prototype.measureWidgets=function(e,t){var n=this.session._changedWidgets,i=t.layerConfig;if(n&&n.length){for(var o=1/0,r=0;r0&&!i[o];)o--;this.firstRow=n.firstRow,this.lastRow=n.lastRow,t.$cursorLayer.config=n;for(var s=o;s<=r;s++){var a=i[s];if(a&&a.el)if(a.hidden)a.el.style.top=-100-(a.pixelHeight||0)+"px";else{a._inDocument||(a._inDocument=!0,t.container.appendChild(a.el));var l=t.$cursorLayer.getPixelPosition({row:s,column:0},!0).top;a.coverLine||(l+=n.lineHeight*this.session.getRowLineCount(a.row)),a.el.style.top=l-n.offset+"px";var c=a.coverGutter?0:t.gutterWidth;a.fixedWidth||(c-=t.scrollLeft),a.el.style.left=c+"px",a.fullWidth&&a.screenWidth&&(a.el.style.minWidth=n.width+2*n.padding+"px"),a.fixedWidth?a.el.style.right=t.scrollBar.getWidth()+"px":a.el.style.right=""}}}},e}();t.LineWidgets=o})),ace.define("ace/keyboard/gutter_handler",["require","exports","module","ace/lib/keys","ace/mouse/default_gutter_handler"],(function(e,t,n){"use strict";var i=e("../lib/keys"),o=e("../mouse/default_gutter_handler").GutterTooltip,r=function(){function e(e){this.editor=e,this.gutterLayer=e.renderer.$gutterLayer,this.element=e.renderer.$gutter,this.lines=e.renderer.$gutterLayer.$lines,this.activeRowIndex=null,this.activeLane=null,this.annotationTooltip=new o(this.editor)}return e.prototype.addListener=function(){this.element.addEventListener("keydown",this.$onGutterKeyDown.bind(this)),this.element.addEventListener("focusout",this.$blurGutter.bind(this)),this.editor.on("mousewheel",this.$blurGutter.bind(this))},e.prototype.removeListener=function(){this.element.removeEventListener("keydown",this.$onGutterKeyDown.bind(this)),this.element.removeEventListener("focusout",this.$blurGutter.bind(this)),this.editor.off("mousewheel",this.$blurGutter.bind(this))},e.prototype.$onGutterKeyDown=function(e){if(this.annotationTooltip.isOpen)return e.preventDefault(),void(e.keyCode===i.escape&&this.annotationTooltip.hideTooltip());if(e.target===this.element){if(e.keyCode!=i.enter)return;e.preventDefault();var t=this.editor.getCursorPosition().row;return this.editor.isRowVisible(t)||this.editor.scrollToLine(t,!0,!0),void setTimeout(function(){var e=this.$rowToRowIndex(this.gutterLayer.$cursorCell.row),t=this.$findNearestFoldWidget(e),n=this.$findNearestAnnotation(e);if(null!==t||null!==n)return null===t&&null!==n?(this.activeRowIndex=n,this.activeLane="annotation",void this.$focusAnnotation(this.activeRowIndex)):null!==t&&null===n?(this.activeRowIndex=t,this.activeLane="fold",void this.$focusFoldWidget(this.activeRowIndex)):Math.abs(n-e)0||e+t=0&&this.$isFoldWidgetVisible(e-t))return e-t;if(e+t<=this.lines.getLength()-1&&this.$isFoldWidgetVisible(e+t))return e+t}return null},e.prototype.$findNearestAnnotation=function(e){if(this.$isAnnotationVisible(e))return e;for(var t=0;e-t>0||e+t=0&&this.$isAnnotationVisible(e-t))return e-t;if(e+t<=this.lines.getLength()-1&&this.$isAnnotationVisible(e+t))return e+t}return null},e.prototype.$focusFoldWidget=function(e){if(null!=e){var t=this.$getFoldWidget(e);t.classList.add(this.editor.renderer.keyboardFocusClassName),t.focus()}},e.prototype.$focusAnnotation=function(e){if(null!=e){var t=this.$getAnnotation(e);t.classList.add(this.editor.renderer.keyboardFocusClassName),t.focus()}},e.prototype.$blurFoldWidget=function(e){var t=this.$getFoldWidget(e);t.classList.remove(this.editor.renderer.keyboardFocusClassName),t.blur()},e.prototype.$blurAnnotation=function(e){var t=this.$getAnnotation(e);t.classList.remove(this.editor.renderer.keyboardFocusClassName),t.blur()},e.prototype.$moveFoldWidgetUp=function(){for(var e=this.activeRowIndex;e>0;)if(e--,this.$isFoldWidgetVisible(e))return this.$blurFoldWidget(this.activeRowIndex),this.activeRowIndex=e,void this.$focusFoldWidget(this.activeRowIndex)},e.prototype.$moveFoldWidgetDown=function(){for(var e=this.activeRowIndex;e0;)if(e--,this.$isAnnotationVisible(e))return this.$blurAnnotation(this.activeRowIndex),this.activeRowIndex=e,void this.$focusAnnotation(this.activeRowIndex)},e.prototype.$moveAnnotationDown=function(){for(var e=this.activeRowIndex;e=e.length&&(e=void 0),{value:e&&e[i++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},o=e("./lib/oop"),r=e("./lib/dom"),s=e("./lib/lang"),a=e("./lib/useragent"),l=e("./keyboard/textinput").TextInput,c=e("./mouse/mouse_handler").MouseHandler,u=e("./mouse/fold_handler").FoldHandler,h=e("./keyboard/keybinding").KeyBinding,d=e("./edit_session").EditSession,p=e("./search").Search,g=e("./range").Range,m=e("./lib/event_emitter").EventEmitter,f=e("./commands/command_manager").CommandManager,y=e("./commands/default_commands").commands,b=e("./config"),v=e("./token_iterator").TokenIterator,w=e("./line_widgets").LineWidgets,A=e("./keyboard/gutter_handler").GutterKeyboardHandler,C=e("./config").nls,k=e("./clipboard"),x=e("./lib/keys"),S=function(){function e(t,n,i){this.$toDestroy=[];var o=t.getContainerElement();this.container=o,this.renderer=t,this.id="editor"+ ++e.$uid,this.commands=new f(a.isMac?"mac":"win",y),"object"==typeof document&&(this.textInput=new l(t.getTextAreaContainer(),this),this.renderer.textarea=this.textInput.getElement(),this.$mouseHandler=new c(this),new u(this)),this.keyBinding=new h(this),this.$search=(new p).set({wrap:!0}),this.$historyTracker=this.$historyTracker.bind(this),this.commands.on("exec",this.$historyTracker),this.$initOperationListeners(),this._$emitInputEvent=s.delayedCall(function(){this._signal("input",{}),this.session&&!this.session.destroyed&&this.session.bgTokenizer.scheduleStart()}.bind(this)),this.on("change",(function(e,t){t._$emitInputEvent.schedule(31)})),this.setSession(n||i&&i.session||new d("")),b.resetOptions(this),i&&this.setOptions(i),b._signal("editor",this)}return e.prototype.$initOperationListeners=function(){this.commands.on("exec",this.startOperation.bind(this),!0),this.commands.on("afterExec",this.endOperation.bind(this),!0),this.$opResetTimer=s.delayedCall(this.endOperation.bind(this,!0)),this.on("change",function(){this.curOp||(this.startOperation(),this.curOp.selectionBefore=this.$lastSel),this.curOp.docChanged=!0}.bind(this),!0),this.on("changeSelection",function(){this.curOp||(this.startOperation(),this.curOp.selectionBefore=this.$lastSel),this.curOp.selectionChanged=!0}.bind(this),!0)},e.prototype.startOperation=function(e){if(this.curOp){if(!e||this.curOp.command)return;this.prevOp=this.curOp}e||(this.previousCommand=null,e={}),this.$opResetTimer.schedule(),this.curOp=this.session.curOp={command:e.command||{},args:e.args,scrollTop:this.renderer.scrollTop},this.curOp.selectionBefore=this.selection.toJSON()},e.prototype.endOperation=function(e){if(this.curOp&&this.session){if(e&&!1===e.returnValue||!this.session)return this.curOp=null;if(1==e&&this.curOp.command&&"mouse"==this.curOp.command.name)return;if(this._signal("beforeEndOperation"),!this.curOp)return;var t=this.curOp.command,n=t&&t.scrollIntoView;if(n){switch(n){case"center-animate":n="animate";case"center":this.renderer.scrollCursorIntoView(null,.5);break;case"animate":case"cursor":this.renderer.scrollCursorIntoView();break;case"selectionPart":var i=this.selection.getRange(),o=this.renderer.layerConfig;(i.start.row>=o.lastRow||i.end.row<=o.firstRow)&&this.renderer.scrollSelectionIntoView(this.selection.anchor,this.selection.lead)}"animate"==n&&this.renderer.animateScrolling(this.curOp.scrollTop)}var r=this.selection.toJSON();this.curOp.selectionAfter=r,this.$lastSel=this.selection.toJSON(),this.session.getUndoManager().addSelection(r),this.prevOp=this.curOp,this.curOp=null}},e.prototype.$historyTracker=function(e){if(this.$mergeUndoDeltas){var t=this.prevOp,n=this.$mergeableCommands,i=t.command&&e.command.name==t.command.name;if("insertstring"==e.command.name){var o=e.args;void 0===this.mergeNextCommand&&(this.mergeNextCommand=!0),i=i&&this.mergeNextCommand&&(!/\s/.test(o)||/\s/.test(t.args)),this.mergeNextCommand=!0}else i=i&&-1!==n.indexOf(e.command.name);"always"!=this.$mergeUndoDeltas&&Date.now()-this.sequenceStartTime>2e3&&(i=!1),i?this.session.mergeUndoDeltas=!0:-1!==n.indexOf(e.command.name)&&(this.sequenceStartTime=Date.now())}},e.prototype.setKeyboardHandler=function(e,t){if(e&&"string"==typeof e&&"ace"!=e){this.$keybindingId=e;var n=this;b.loadModule(["keybinding",e],(function(i){n.$keybindingId==e&&n.keyBinding.setKeyboardHandler(i&&i.handler),t&&t()}))}else this.$keybindingId=null,this.keyBinding.setKeyboardHandler(e),t&&t()},e.prototype.getKeyboardHandler=function(){return this.keyBinding.getKeyboardHandler()},e.prototype.setSession=function(e){if(this.session!=e){this.curOp&&this.endOperation(),this.curOp={};var t=this.session;if(t){this.session.off("change",this.$onDocumentChange),this.session.off("changeMode",this.$onChangeMode),this.session.off("tokenizerUpdate",this.$onTokenizerUpdate),this.session.off("changeTabSize",this.$onChangeTabSize),this.session.off("changeWrapLimit",this.$onChangeWrapLimit),this.session.off("changeWrapMode",this.$onChangeWrapMode),this.session.off("changeFold",this.$onChangeFold),this.session.off("changeFrontMarker",this.$onChangeFrontMarker),this.session.off("changeBackMarker",this.$onChangeBackMarker),this.session.off("changeBreakpoint",this.$onChangeBreakpoint),this.session.off("changeAnnotation",this.$onChangeAnnotation),this.session.off("changeOverwrite",this.$onCursorChange),this.session.off("changeScrollTop",this.$onScrollTopChange),this.session.off("changeScrollLeft",this.$onScrollLeftChange);var n=this.session.getSelection();n.off("changeCursor",this.$onCursorChange),n.off("changeSelection",this.$onSelectionChange)}this.session=e,e?(this.$onDocumentChange=this.onDocumentChange.bind(this),e.on("change",this.$onDocumentChange),this.renderer.setSession(e),this.$onChangeMode=this.onChangeMode.bind(this),e.on("changeMode",this.$onChangeMode),this.$onTokenizerUpdate=this.onTokenizerUpdate.bind(this),e.on("tokenizerUpdate",this.$onTokenizerUpdate),this.$onChangeTabSize=this.renderer.onChangeTabSize.bind(this.renderer),e.on("changeTabSize",this.$onChangeTabSize),this.$onChangeWrapLimit=this.onChangeWrapLimit.bind(this),e.on("changeWrapLimit",this.$onChangeWrapLimit),this.$onChangeWrapMode=this.onChangeWrapMode.bind(this),e.on("changeWrapMode",this.$onChangeWrapMode),this.$onChangeFold=this.onChangeFold.bind(this),e.on("changeFold",this.$onChangeFold),this.$onChangeFrontMarker=this.onChangeFrontMarker.bind(this),this.session.on("changeFrontMarker",this.$onChangeFrontMarker),this.$onChangeBackMarker=this.onChangeBackMarker.bind(this),this.session.on("changeBackMarker",this.$onChangeBackMarker),this.$onChangeBreakpoint=this.onChangeBreakpoint.bind(this),this.session.on("changeBreakpoint",this.$onChangeBreakpoint),this.$onChangeAnnotation=this.onChangeAnnotation.bind(this),this.session.on("changeAnnotation",this.$onChangeAnnotation),this.$onCursorChange=this.onCursorChange.bind(this),this.session.on("changeOverwrite",this.$onCursorChange),this.$onScrollTopChange=this.onScrollTopChange.bind(this),this.session.on("changeScrollTop",this.$onScrollTopChange),this.$onScrollLeftChange=this.onScrollLeftChange.bind(this),this.session.on("changeScrollLeft",this.$onScrollLeftChange),this.selection=e.getSelection(),this.selection.on("changeCursor",this.$onCursorChange),this.$onSelectionChange=this.onSelectionChange.bind(this),this.selection.on("changeSelection",this.$onSelectionChange),this.onChangeMode(),this.onCursorChange(),this.onScrollTopChange(),this.onScrollLeftChange(),this.onSelectionChange(),this.onChangeFrontMarker(),this.onChangeBackMarker(),this.onChangeBreakpoint(),this.onChangeAnnotation(),this.session.getUseWrapMode()&&this.renderer.adjustWrapLimit(),this.renderer.updateFull()):(this.selection=null,this.renderer.setSession(e)),this._signal("changeSession",{session:e,oldSession:t}),this.curOp=null,t&&t._signal("changeEditor",{oldEditor:this}),e&&e._signal("changeEditor",{editor:this}),e&&!e.destroyed&&e.bgTokenizer.scheduleStart()}},e.prototype.getSession=function(){return this.session},e.prototype.setValue=function(e,t){return this.session.doc.setValue(e),t?1==t?this.navigateFileEnd():-1==t&&this.navigateFileStart():this.selectAll(),e},e.prototype.getValue=function(){return this.session.getValue()},e.prototype.getSelection=function(){return this.selection},e.prototype.resize=function(e){this.renderer.onResize(e)},e.prototype.setTheme=function(e,t){this.renderer.setTheme(e,t)},e.prototype.getTheme=function(){return this.renderer.getTheme()},e.prototype.setStyle=function(e){this.renderer.setStyle(e)},e.prototype.unsetStyle=function(e){this.renderer.unsetStyle(e)},e.prototype.getFontSize=function(){return this.getOption("fontSize")||r.computedStyle(this.container).fontSize},e.prototype.setFontSize=function(e){this.setOption("fontSize",e)},e.prototype.$highlightBrackets=function(){if(!this.$highlightPending){var e=this;this.$highlightPending=!0,setTimeout((function(){e.$highlightPending=!1;var t=e.session;if(t&&!t.destroyed){t.$bracketHighlight&&(t.$bracketHighlight.markerIds.forEach((function(e){t.removeMarker(e)})),t.$bracketHighlight=null);var n=e.getCursorPosition(),i=e.getKeyboardHandler(),o=i&&i.$getDirectionForHighlight&&i.$getDirectionForHighlight(e),r=t.getMatchingBracketRanges(n,o);if(!r){var s=new v(t,n.row,n.column).getCurrentToken();if(s&&/\b(?:tag-open|tag-name)/.test(s.type)){var a=t.getMatchingTags(n);a&&(r=[a.openTagName,a.closeTagName])}}if(!r&&t.$mode.getMatching&&(r=t.$mode.getMatching(e.session)),r){var l="ace_bracket";Array.isArray(r)?1==r.length&&(l="ace_error_bracket"):r=[r],2==r.length&&(0==g.comparePoints(r[0].end,r[1].start)?r=[g.fromPoints(r[0].start,r[1].end)]:0==g.comparePoints(r[0].start,r[1].end)&&(r=[g.fromPoints(r[1].start,r[0].end)])),t.$bracketHighlight={ranges:r,markerIds:r.map((function(e){return t.addMarker(e,l,"text")}))},e.getHighlightIndentGuides()&&e.renderer.$textLayer.$highlightIndentGuide()}else e.getHighlightIndentGuides()&&e.renderer.$textLayer.$highlightIndentGuide()}}),50)}},e.prototype.focus=function(){this.textInput.focus()},e.prototype.isFocused=function(){return this.textInput.isFocused()},e.prototype.blur=function(){this.textInput.blur()},e.prototype.onFocus=function(e){this.$isFocused||(this.$isFocused=!0,this.renderer.showCursor(),this.renderer.visualizeFocus(),this._emit("focus",e))},e.prototype.onBlur=function(e){this.$isFocused&&(this.$isFocused=!1,this.renderer.hideCursor(),this.renderer.visualizeBlur(),this._emit("blur",e))},e.prototype.$cursorChange=function(){this.renderer.updateCursor(),this.$highlightBrackets(),this.$updateHighlightActiveLine()},e.prototype.onDocumentChange=function(e){var t=this.session.$useWrapMode,n=e.start.row==e.end.row?e.end.row:1/0;this.renderer.updateLines(e.start.row,n,t),this._signal("change",e),this.$cursorChange()},e.prototype.onTokenizerUpdate=function(e){var t=e.data;this.renderer.updateLines(t.first,t.last)},e.prototype.onScrollTopChange=function(){this.renderer.scrollToY(this.session.getScrollTop())},e.prototype.onScrollLeftChange=function(){this.renderer.scrollToX(this.session.getScrollLeft())},e.prototype.onCursorChange=function(){this.$cursorChange(),this._signal("changeSelection")},e.prototype.$updateHighlightActiveLine=function(){var e,t=this.getSession();if(this.$highlightActiveLine&&("line"==this.$selectionStyle&&this.selection.isMultiLine()||(e=this.getCursorPosition()),this.renderer.theme&&this.renderer.theme.$selectionColorConflict&&!this.selection.isEmpty()&&(e=!1),!this.renderer.$maxLines||1!==this.session.getLength()||this.renderer.$minLines>1||(e=!1)),t.$highlightLineMarker&&!e)t.removeMarker(t.$highlightLineMarker.id),t.$highlightLineMarker=null;else if(!t.$highlightLineMarker&&e){var n=new g(e.row,e.column,e.row,1/0);n.id=t.addMarker(n,"ace_active-line","screenLine"),t.$highlightLineMarker=n}else e&&(t.$highlightLineMarker.start.row=e.row,t.$highlightLineMarker.end.row=e.row,t.$highlightLineMarker.start.column=e.column,t._signal("changeBackMarker"))},e.prototype.onSelectionChange=function(e){var t=this.session;if(t.$selectionMarker&&t.removeMarker(t.$selectionMarker),t.$selectionMarker=null,this.selection.isEmpty())this.$updateHighlightActiveLine();else{var n=this.selection.getRange(),i=this.getSelectionStyle();t.$selectionMarker=t.addMarker(n,"ace_selection",i)}var o=this.$highlightSelectedWord&&this.$getSelectionHighLightRegexp();this.session.highlight(o),this._signal("changeSelection")},e.prototype.$getSelectionHighLightRegexp=function(){var e=this.session,t=this.getSelectionRange();if(!t.isEmpty()&&!t.isMultiLine()){var n=t.start.column,i=t.end.column,o=e.getLine(t.start.row),r=o.substring(n,i);if(!(r.length>5e3)&&/[\w\d]/.test(r)){var s=this.$search.$assembleRegExp({wholeWord:!0,caseSensitive:!0,needle:r}),a=o.substring(n-1,i+1);if(s.test(a))return s}}},e.prototype.onChangeFrontMarker=function(){this.renderer.updateFrontMarkers()},e.prototype.onChangeBackMarker=function(){this.renderer.updateBackMarkers()},e.prototype.onChangeBreakpoint=function(){this.renderer.updateBreakpoints()},e.prototype.onChangeAnnotation=function(){this.renderer.setAnnotations(this.session.getAnnotations())},e.prototype.onChangeMode=function(e){this.renderer.updateText(),this._emit("changeMode",e)},e.prototype.onChangeWrapLimit=function(){this.renderer.updateFull()},e.prototype.onChangeWrapMode=function(){this.renderer.onResize(!0)},e.prototype.onChangeFold=function(){this.$updateHighlightActiveLine(),this.renderer.updateFull()},e.prototype.getSelectedText=function(){return this.session.getTextRange(this.getSelectionRange())},e.prototype.getCopyText=function(){var e=this.getSelectedText(),t=this.session.doc.getNewLineCharacter(),n=!1;if(!e&&this.$copyWithEmptySelection){n=!0;for(var i=this.selection.getAllRanges(),o=0;oa.search(/\S|$/)){var l=a.substr(o.column).search(/\S|$/);n.doc.removeInLine(o.row,o.column,o.column+l)}}this.clearSelection();var c=o.column,u=n.getState(o.row),h=(a=n.getLine(o.row),i.checkOutdent(u,a,e));if(n.insert(o,e),r&&r.selection&&(2==r.selection.length?this.selection.setSelectionRange(new g(o.row,c+r.selection[0],o.row,c+r.selection[1])):this.selection.setSelectionRange(new g(o.row+r.selection[0],r.selection[1],o.row+r.selection[2],r.selection[3]))),this.$enableAutoIndent){if(n.getDocument().isNewLine(e)){var d=i.getNextLineIndent(u,a.slice(0,o.column),n.getTabString());n.insert({row:o.row+1,column:0},d)}h&&i.autoOutdent(u,n,o.row)}},e.prototype.autoIndent=function(){var e,t,n=this.session,i=n.getMode();if(this.selection.isEmpty())e=0,t=n.doc.getLength()-1;else{var o=this.getSelectionRange();e=o.start.row,t=o.end.row}for(var r,s,a,l="",c="",u="",h=n.getTabString(),d=e;d<=t;d++)d>0&&(l=n.getState(d-1),c=n.getLine(d-1),u=i.getNextLineIndent(l,c,h)),r=n.getLine(d),u!==(s=i.$getIndent(r))&&(s.length>0&&(a=new g(d,0,d,s.length),n.remove(a)),u.length>0&&n.insert({row:d,column:0},u)),i.autoOutdent(l,n,d)},e.prototype.onTextInput=function(e,t){if(!t)return this.keyBinding.onTextInput(e);this.startOperation({command:{name:"insertstring"}});var n=this.applyComposition.bind(this,e,t);this.selection.rangeCount?this.forEachSelection(n):n(),this.endOperation()},e.prototype.applyComposition=function(e,t){var n;(t.extendLeft||t.extendRight)&&((n=this.selection.getRange()).start.column-=t.extendLeft,n.end.column+=t.extendRight,n.start.column<0&&(n.start.row--,n.start.column+=this.session.getLine(n.start.row).length+1),this.selection.setRange(n),e||n.isEmpty()||this.remove()),!e&&this.selection.isEmpty()||this.insert(e,!0),(t.restoreStart||t.restoreEnd)&&((n=this.selection.getRange()).start.column-=t.restoreStart,n.end.column-=t.restoreEnd,this.selection.setRange(n))},e.prototype.onCommandKey=function(e,t,n){return this.keyBinding.onCommandKey(e,t,n)},e.prototype.setOverwrite=function(e){this.session.setOverwrite(e)},e.prototype.getOverwrite=function(){return this.session.getOverwrite()},e.prototype.toggleOverwrite=function(){this.session.toggleOverwrite()},e.prototype.setScrollSpeed=function(e){this.setOption("scrollSpeed",e)},e.prototype.getScrollSpeed=function(){return this.getOption("scrollSpeed")},e.prototype.setDragDelay=function(e){this.setOption("dragDelay",e)},e.prototype.getDragDelay=function(){return this.getOption("dragDelay")},e.prototype.setSelectionStyle=function(e){this.setOption("selectionStyle",e)},e.prototype.getSelectionStyle=function(){return this.getOption("selectionStyle")},e.prototype.setHighlightActiveLine=function(e){this.setOption("highlightActiveLine",e)},e.prototype.getHighlightActiveLine=function(){return this.getOption("highlightActiveLine")},e.prototype.setHighlightGutterLine=function(e){this.setOption("highlightGutterLine",e)},e.prototype.getHighlightGutterLine=function(){return this.getOption("highlightGutterLine")},e.prototype.setHighlightSelectedWord=function(e){this.setOption("highlightSelectedWord",e)},e.prototype.getHighlightSelectedWord=function(){return this.$highlightSelectedWord},e.prototype.setAnimatedScroll=function(e){this.renderer.setAnimatedScroll(e)},e.prototype.getAnimatedScroll=function(){return this.renderer.getAnimatedScroll()},e.prototype.setShowInvisibles=function(e){this.renderer.setShowInvisibles(e)},e.prototype.getShowInvisibles=function(){return this.renderer.getShowInvisibles()},e.prototype.setDisplayIndentGuides=function(e){this.renderer.setDisplayIndentGuides(e)},e.prototype.getDisplayIndentGuides=function(){return this.renderer.getDisplayIndentGuides()},e.prototype.setHighlightIndentGuides=function(e){this.renderer.setHighlightIndentGuides(e)},e.prototype.getHighlightIndentGuides=function(){return this.renderer.getHighlightIndentGuides()},e.prototype.setShowPrintMargin=function(e){this.renderer.setShowPrintMargin(e)},e.prototype.getShowPrintMargin=function(){return this.renderer.getShowPrintMargin()},e.prototype.setPrintMarginColumn=function(e){this.renderer.setPrintMarginColumn(e)},e.prototype.getPrintMarginColumn=function(){return this.renderer.getPrintMarginColumn()},e.prototype.setReadOnly=function(e){this.setOption("readOnly",e)},e.prototype.getReadOnly=function(){return this.getOption("readOnly")},e.prototype.setBehavioursEnabled=function(e){this.setOption("behavioursEnabled",e)},e.prototype.getBehavioursEnabled=function(){return this.getOption("behavioursEnabled")},e.prototype.setWrapBehavioursEnabled=function(e){this.setOption("wrapBehavioursEnabled",e)},e.prototype.getWrapBehavioursEnabled=function(){return this.getOption("wrapBehavioursEnabled")},e.prototype.setShowFoldWidgets=function(e){this.setOption("showFoldWidgets",e)},e.prototype.getShowFoldWidgets=function(){return this.getOption("showFoldWidgets")},e.prototype.setFadeFoldWidgets=function(e){this.setOption("fadeFoldWidgets",e)},e.prototype.getFadeFoldWidgets=function(){return this.getOption("fadeFoldWidgets")},e.prototype.remove=function(e){this.selection.isEmpty()&&("left"==e?this.selection.selectLeft():this.selection.selectRight());var t=this.getSelectionRange();if(this.getBehavioursEnabled()){var n=this.session,i=n.getState(t.start.row),o=n.getMode().transformAction(i,"deletion",this,n,t);if(0===t.end.column){var r=n.getTextRange(t);if("\n"==r[r.length-1]){var s=n.getLine(t.end.row);/^\s+$/.test(s)&&(t.end.column=s.length)}}o&&(t=o)}this.session.remove(t),this.clearSelection()},e.prototype.removeWordRight=function(){this.selection.isEmpty()&&this.selection.selectWordRight(),this.session.remove(this.getSelectionRange()),this.clearSelection()},e.prototype.removeWordLeft=function(){this.selection.isEmpty()&&this.selection.selectWordLeft(),this.session.remove(this.getSelectionRange()),this.clearSelection()},e.prototype.removeToLineStart=function(){this.selection.isEmpty()&&this.selection.selectLineStart(),this.selection.isEmpty()&&this.selection.selectLeft(),this.session.remove(this.getSelectionRange()),this.clearSelection()},e.prototype.removeToLineEnd=function(){this.selection.isEmpty()&&this.selection.selectLineEnd();var e=this.getSelectionRange();e.start.column==e.end.column&&e.start.row==e.end.row&&(e.end.column=0,e.end.row++),this.session.remove(e),this.clearSelection()},e.prototype.splitLine=function(){this.selection.isEmpty()||(this.session.remove(this.getSelectionRange()),this.clearSelection());var e=this.getCursorPosition();this.insert("\n"),this.moveCursorToPosition(e)},e.prototype.setGhostText=function(e,t){this.session.widgetManager||(this.session.widgetManager=new w(this.session),this.session.widgetManager.attach(this)),this.renderer.setGhostText(e,t)},e.prototype.removeGhostText=function(){this.session.widgetManager&&this.renderer.removeGhostText()},e.prototype.transposeLetters=function(){if(this.selection.isEmpty()){var e=this.getCursorPosition(),t=e.column;if(0!==t){var n,i,o=this.session.getLine(e.row);tt.toLowerCase()?1:0}));var o=new g(0,0,0,0);for(i=e.first;i<=e.last;i++){var r=t.getLine(i);o.start.row=i,o.end.row=i,o.end.column=r.length,t.replace(o,n[i-e.first])}},e.prototype.toggleCommentLines=function(){var e=this.session.getState(this.getCursorPosition().row),t=this.$getSelectedRows();this.session.getMode().toggleCommentLines(e,this.session,t.first,t.last)},e.prototype.toggleBlockComment=function(){var e=this.getCursorPosition(),t=this.session.getState(e.row),n=this.getSelectionRange();this.session.getMode().toggleBlockComment(t,this.session,n,e)},e.prototype.getNumberAt=function(e,t){var n=/[\-]?[0-9]+(?:\.[0-9]+)?/g;n.lastIndex=0;for(var i=this.session.getLine(e);n.lastIndex=t)return{value:o[0],start:o.index,end:o.index+o[0].length}}return null},e.prototype.modifyNumber=function(e){var t=this.selection.getCursor().row,n=this.selection.getCursor().column,i=new g(t,n-1,t,n),o=this.session.getTextRange(i);if(!isNaN(parseFloat(o))&&isFinite(o)){var r=this.getNumberAt(t,n);if(r){var s=r.value.indexOf(".")>=0?r.start+r.value.indexOf(".")+1:r.end,a=r.start+r.value.length-s,l=parseFloat(r.value);l*=Math.pow(10,a),s!==r.end&&n=a&&r<=l&&(n=t,c.selection.clearSelection(),c.moveCursorTo(e,a+i),c.selection.selectTo(e,l+i)),a=l}));for(var u,h=this.$toggleWordPairs,d=0;d=l&&s<=c&&d.match(/((?:https?|ftp):\/\/[\S]+)/)){a=d.replace(/[\s:.,'";}\]]+$/,"");break}l=c}}catch(e){n={error:e}}finally{try{h&&!h.done&&(o=u.return)&&o.call(u)}finally{if(n)throw n.error}}return a},e.prototype.openLink=function(){var e=this.selection.getCursor(),t=this.findLinkAt(e.row,e.column);return t&&window.open(t,"_blank"),null!=t},e.prototype.removeLines=function(){var e=this.$getSelectedRows();this.session.removeFullLines(e.first,e.last),this.clearSelection()},e.prototype.duplicateSelection=function(){var e=this.selection,t=this.session,n=e.getRange(),i=e.isBackwards();if(n.isEmpty()){var o=n.start.row;t.duplicateLines(o,o)}else{var r=i?n.start:n.end,s=t.insert(r,t.getTextRange(n),!1);n.start=r,n.end=s,e.setSelectionRange(n,i)}},e.prototype.moveLinesDown=function(){this.$moveLines(1,!1)},e.prototype.moveLinesUp=function(){this.$moveLines(-1,!1)},e.prototype.moveText=function(e,t,n){return this.session.moveText(e,t,n)},e.prototype.copyLinesUp=function(){this.$moveLines(-1,!0)},e.prototype.copyLinesDown=function(){this.$moveLines(1,!0)},e.prototype.$moveLines=function(e,t){var n,i,o=this.selection;if(!o.inMultiSelectMode||this.inVirtualSelectionMode){var r=o.toOrientedRange();n=this.$getSelectedRows(r),i=this.session.$moveLines(n.first,n.last,t?0:e),t&&-1==e&&(i=0),r.moveBy(i,0),o.fromOrientedRange(r)}else{var s=o.rangeList.ranges;o.rangeList.detach(this.session),this.inVirtualSelectionMode=!0;for(var a=0,l=0,c=s.length,u=0;up+1)break;p=g.last}for(u--,a=this.session.$moveLines(d,p,t?0:e),t&&-1==e&&(h=u+1);h<=u;)s[h].moveBy(a,0),h++;t||(a=0),l+=a}o.fromOrientedRange(o.ranges[0]),o.rangeList.attach(this.session),this.inVirtualSelectionMode=!1}},e.prototype.$getSelectedRows=function(e){return e=(e||this.getSelectionRange()).collapseRows(),{first:this.session.getRowFoldStart(e.start.row),last:this.session.getRowFoldEnd(e.end.row)}},e.prototype.onCompositionStart=function(e){this.renderer.showComposition(e)},e.prototype.onCompositionUpdate=function(e){this.renderer.setCompositionText(e)},e.prototype.onCompositionEnd=function(){this.renderer.hideComposition()},e.prototype.getFirstVisibleRow=function(){return this.renderer.getFirstVisibleRow()},e.prototype.getLastVisibleRow=function(){return this.renderer.getLastVisibleRow()},e.prototype.isRowVisible=function(e){return e>=this.getFirstVisibleRow()&&e<=this.getLastVisibleRow()},e.prototype.isRowFullyVisible=function(e){return e>=this.renderer.getFirstFullyVisibleRow()&&e<=this.renderer.getLastFullyVisibleRow()},e.prototype.$getVisibleRowCount=function(){return this.renderer.getScrollBottomRow()-this.renderer.getScrollTopRow()+1},e.prototype.$moveByPage=function(e,t){var n=this.renderer,i=this.renderer.layerConfig,o=e*Math.floor(i.height/i.lineHeight);!0===t?this.selection.$moveSelection((function(){this.moveCursorBy(o,0)})):!1===t&&(this.selection.moveCursorBy(o,0),this.selection.clearSelection());var r=n.scrollTop;n.scrollBy(0,o*i.lineHeight),null!=t&&n.scrollCursorIntoView(null,.5),n.animateScrolling(r)},e.prototype.selectPageDown=function(){this.$moveByPage(1,!0)},e.prototype.selectPageUp=function(){this.$moveByPage(-1,!0)},e.prototype.gotoPageDown=function(){this.$moveByPage(1,!1)},e.prototype.gotoPageUp=function(){this.$moveByPage(-1,!1)},e.prototype.scrollPageDown=function(){this.$moveByPage(1)},e.prototype.scrollPageUp=function(){this.$moveByPage(-1)},e.prototype.scrollToRow=function(e){this.renderer.scrollToRow(e)},e.prototype.scrollToLine=function(e,t,n,i){this.renderer.scrollToLine(e,t,n,i)},e.prototype.centerSelection=function(){var e=this.getSelectionRange(),t={row:Math.floor(e.start.row+(e.end.row-e.start.row)/2),column:Math.floor(e.start.column+(e.end.column-e.start.column)/2)};this.renderer.alignCursor(t,.5)},e.prototype.getCursorPosition=function(){return this.selection.getCursor()},e.prototype.getCursorPositionScreen=function(){return this.session.documentToScreenPosition(this.getCursorPosition())},e.prototype.getSelectionRange=function(){return this.selection.getRange()},e.prototype.selectAll=function(){this.selection.selectAll()},e.prototype.clearSelection=function(){this.selection.clearSelection()},e.prototype.moveCursorTo=function(e,t){this.selection.moveCursorTo(e,t)},e.prototype.moveCursorToPosition=function(e){this.selection.moveCursorToPosition(e)},e.prototype.jumpToMatching=function(e,t){var n=this.getCursorPosition(),i=new v(this.session,n.row,n.column),o=i.getCurrentToken(),r=0;o&&-1!==o.type.indexOf("tag-name")&&(o=i.stepBackward());var s=o||i.stepForward();if(s){var a,l,c=!1,u={},h=n.column-s.start,d={")":"(","(":"(","]":"[","[":"[","{":"{","}":"{"};do{if(s.value.match(/[{}()\[\]]/g)){for(;h1?u[s.value]++:"=0;--r)this.$tryReplace(n[r],e)&&i++;return this.selection.setSelectionRange(o),i},e.prototype.$tryReplace=function(e,t){var n=this.session.getTextRange(e);return null!==(t=this.$search.replace(n,t))?(e.end=this.session.replace(e,t),e):null},e.prototype.getLastSearchOptions=function(){return this.$search.getOptions()},e.prototype.find=function(e,t,n){t||(t={}),"string"==typeof e||e instanceof RegExp?t.needle=e:"object"==typeof e&&o.mixin(t,e);var i=this.selection.getRange();null==t.needle&&((e=this.session.getTextRange(i)||this.$search.$options.needle)||(i=this.session.getWordRange(i.start.row,i.start.column),e=this.session.getTextRange(i)),this.$search.set({needle:e})),this.$search.set(t),t.start||this.$search.set({start:i});var r=this.$search.find(this.session);return t.preventScroll?r:r?(this.revealRange(r,n),r):(t.backwards?i.start=i.end:i.end=i.start,void this.selection.setRange(i))},e.prototype.findNext=function(e,t){this.find({skipCurrent:!0,backwards:!1},e,t)},e.prototype.findPrevious=function(e,t){this.find(e,{skipCurrent:!0,backwards:!0},t)},e.prototype.revealRange=function(e,t){this.session.unfold(e),this.selection.setSelectionRange(e);var n=this.renderer.scrollTop;this.renderer.scrollSelectionIntoView(e.start,e.end,.5),!1!==t&&this.renderer.animateScrolling(n)},e.prototype.undo=function(){this.session.getUndoManager().undo(this.session),this.renderer.scrollCursorIntoView(null,.5)},e.prototype.redo=function(){this.session.getUndoManager().redo(this.session),this.renderer.scrollCursorIntoView(null,.5)},e.prototype.destroy=function(){this.$toDestroy&&(this.$toDestroy.forEach((function(e){e.destroy()})),this.$toDestroy=null),this.$mouseHandler&&this.$mouseHandler.destroy(),this.renderer.destroy(),this._signal("destroy",this),this.session&&this.session.destroy(),this._$emitInputEvent&&this._$emitInputEvent.cancel(),this.removeAllListeners()},e.prototype.setAutoScrollEditorIntoView=function(e){if(e){var t,n=this,i=!1;this.$scrollAnchor||(this.$scrollAnchor=document.createElement("div"));var o=this.$scrollAnchor;o.style.cssText="position:absolute",this.container.insertBefore(o,this.container.firstChild);var r=this.on("changeSelection",(function(){i=!0})),s=this.renderer.on("beforeRender",(function(){i&&(t=n.renderer.container.getBoundingClientRect())})),a=this.renderer.on("afterRender",(function(){if(i&&t&&(n.isFocused()||n.searchBox&&n.searchBox.isFocused())){var e=n.renderer,r=e.$cursorLayer.$pixelPos,s=e.layerConfig,a=r.top-s.offset;null!=(i=r.top>=0&&a+t.top<0||!(r.topwindow.innerHeight)&&null)&&(o.style.top=a+"px",o.style.left=r.left+"px",o.style.height=s.lineHeight+"px",o.scrollIntoView(i)),i=t=null}}));this.setAutoScrollEditorIntoView=function(e){e||(delete this.setAutoScrollEditorIntoView,this.off("changeSelection",r),this.renderer.off("afterRender",a),this.renderer.off("beforeRender",s))}}},e.prototype.$resetCursorStyle=function(){var e=this.$cursorStyle||"ace",t=this.renderer.$cursorLayer;t&&(t.setSmoothBlinking(/smooth/.test(e)),t.isBlinking=!this.$readOnly&&"wide"!=e,r.setCssClass(t.element,"ace_slim-cursors",/slim/.test(e)))},e.prototype.prompt=function(e,t,n){var i=this;b.loadModule("ace/ext/prompt",(function(o){o.prompt(i,e,t,n)}))},e}();S.$uid=0,S.prototype.curOp=null,S.prototype.prevOp={},S.prototype.$mergeableCommands=["backspace","del","insertstring"],S.prototype.$toggleWordPairs=[["first","last"],["true","false"],["yes","no"],["width","height"],["top","bottom"],["right","left"],["on","off"],["x","y"],["get","set"],["max","min"],["horizontal","vertical"],["show","hide"],["add","remove"],["up","down"],["before","after"],["even","odd"],["in","out"],["inside","outside"],["next","previous"],["increase","decrease"],["attach","detach"],["&&","||"],["==","!="]],o.implement(S.prototype,m),b.defineOptions(S.prototype,"editor",{selectionStyle:{set:function(e){this.onSelectionChange(),this._signal("changeSelectionStyle",{data:e})},initialValue:"line"},highlightActiveLine:{set:function(){this.$updateHighlightActiveLine()},initialValue:!0},highlightSelectedWord:{set:function(e){this.$onSelectionChange()},initialValue:!0},readOnly:{set:function(e){this.textInput.setReadOnly(e),this.$resetCursorStyle()},initialValue:!1},copyWithEmptySelection:{set:function(e){this.textInput.setCopyWithEmptySelection(e)},initialValue:!1},cursorStyle:{set:function(e){this.$resetCursorStyle()},values:["ace","slim","smooth","wide"],initialValue:"ace"},mergeUndoDeltas:{values:[!1,!0,"always"],initialValue:!0},behavioursEnabled:{initialValue:!0},wrapBehavioursEnabled:{initialValue:!0},enableAutoIndent:{initialValue:!0},autoScrollEditorIntoView:{set:function(e){this.setAutoScrollEditorIntoView(e)}},keyboardHandler:{set:function(e){this.setKeyboardHandler(e)},get:function(){return this.$keybindingId},handlesSet:!0},value:{set:function(e){this.session.setValue(e)},get:function(){return this.getValue()},handlesSet:!0,hidden:!0},session:{set:function(e){this.setSession(e)},get:function(){return this.session},handlesSet:!0,hidden:!0},showLineNumbers:{set:function(e){this.renderer.$gutterLayer.setShowLineNumbers(e),this.renderer.$loop.schedule(this.renderer.CHANGE_GUTTER),e&&this.$relativeLineNumbers?$.attach(this):$.detach(this)},initialValue:!0},relativeLineNumbers:{set:function(e){this.$showLineNumbers&&e?$.attach(this):$.detach(this)}},placeholder:{set:function(e){this.$updatePlaceholder||(this.$updatePlaceholder=function(){var e=this.session&&(this.renderer.$composition||this.session.getLength()>1||this.session.getLine(0).length>0);if(e&&this.renderer.placeholderNode)this.renderer.off("afterRender",this.$updatePlaceholder),r.removeCssClass(this.container,"ace_hasPlaceholder"),this.renderer.placeholderNode.remove(),this.renderer.placeholderNode=null;else if(e||this.renderer.placeholderNode)!e&&this.renderer.placeholderNode&&(this.renderer.placeholderNode.textContent=this.$placeholder||"");else{this.renderer.on("afterRender",this.$updatePlaceholder),r.addCssClass(this.container,"ace_hasPlaceholder");var t=r.createElement("div");t.className="ace_placeholder",t.textContent=this.$placeholder||"",this.renderer.placeholderNode=t,this.renderer.content.appendChild(this.renderer.placeholderNode)}}.bind(this),this.on("input",this.$updatePlaceholder)),this.$updatePlaceholder()}},enableKeyboardAccessibility:{set:function(e){var t,n={name:"blurTextInput",description:"Set focus to the editor content div to allow tabbing through the page",bindKey:"Esc",exec:function(e){e.blur(),e.renderer.scroller.focus()},readOnly:!0},i=function(e){if(e.target==this.renderer.scroller&&e.keyCode===x.enter){e.preventDefault();var t=this.getCursorPosition().row;this.isRowVisible(t)||this.scrollToLine(t,!0,!0),this.focus()}};e?(this.renderer.enableKeyboardAccessibility=!0,this.renderer.keyboardFocusClassName="ace_keyboard-focus",this.textInput.getElement().setAttribute("tabindex",-1),this.textInput.setNumberOfExtraLines(a.isWin?3:0),this.renderer.scroller.setAttribute("tabindex",0),this.renderer.scroller.setAttribute("role","group"),this.renderer.scroller.setAttribute("aria-roledescription",C("editor")),this.renderer.scroller.classList.add(this.renderer.keyboardFocusClassName),this.renderer.scroller.setAttribute("aria-label",C("Editor content, press Enter to start editing, press Escape to exit")),this.renderer.scroller.addEventListener("keyup",i.bind(this)),this.commands.addCommand(n),this.renderer.$gutter.setAttribute("tabindex",0),this.renderer.$gutter.setAttribute("aria-hidden",!1),this.renderer.$gutter.setAttribute("role","group"),this.renderer.$gutter.setAttribute("aria-roledescription",C("editor")),this.renderer.$gutter.setAttribute("aria-label",C("Editor gutter, press Enter to interact with controls using arrow keys, press Escape to exit")),this.renderer.$gutter.classList.add(this.renderer.keyboardFocusClassName),this.renderer.content.setAttribute("aria-hidden",!0),t||(t=new A(this)),t.addListener()):(this.renderer.enableKeyboardAccessibility=!1,this.textInput.getElement().setAttribute("tabindex",0),this.textInput.setNumberOfExtraLines(0),this.renderer.scroller.setAttribute("tabindex",-1),this.renderer.scroller.removeAttribute("role"),this.renderer.scroller.removeAttribute("aria-roledescription"),this.renderer.scroller.classList.remove(this.renderer.keyboardFocusClassName),this.renderer.scroller.removeAttribute("aria-label"),this.renderer.scroller.removeEventListener("keyup",i.bind(this)),this.commands.removeCommand(n),this.renderer.content.removeAttribute("aria-hidden"),this.renderer.$gutter.setAttribute("tabindex",-1),this.renderer.$gutter.setAttribute("aria-hidden",!0),this.renderer.$gutter.removeAttribute("role"),this.renderer.$gutter.removeAttribute("aria-roledescription"),this.renderer.$gutter.removeAttribute("aria-label"),this.renderer.$gutter.classList.remove(this.renderer.keyboardFocusClassName),t&&t.removeListener())},initialValue:!1},customScrollbar:"renderer",hScrollBarAlwaysVisible:"renderer",vScrollBarAlwaysVisible:"renderer",highlightGutterLine:"renderer",animatedScroll:"renderer",showInvisibles:"renderer",showPrintMargin:"renderer",printMarginColumn:"renderer",printMargin:"renderer",fadeFoldWidgets:"renderer",showFoldWidgets:"renderer",displayIndentGuides:"renderer",highlightIndentGuides:"renderer",showGutter:"renderer",fontSize:"renderer",fontFamily:"renderer",maxLines:"renderer",minLines:"renderer",scrollPastEnd:"renderer",fixedWidthGutter:"renderer",theme:"renderer",hasCssTransforms:"renderer",maxPixelHeight:"renderer",useTextareaForIME:"renderer",useResizeObserver:"renderer",useSvgGutterIcons:"renderer",showFoldedAnnotations:"renderer",scrollSpeed:"$mouseHandler",dragDelay:"$mouseHandler",dragEnabled:"$mouseHandler",focusTimeout:"$mouseHandler",tooltipFollowsMouse:"$mouseHandler",firstLineNumber:"session",overwrite:"session",newLineMode:"session",useWorker:"session",useSoftTabs:"session",navigateWithinSoftTabs:"session",tabSize:"session",wrap:"session",indentedSoftWrap:"session",foldStyle:"session",mode:"session"});var $={getText:function(e,t){return(Math.abs(e.selection.lead.row-t)||t+1+(t<9?"·":""))+""},getWidth:function(e,t,n){return Math.max(t.toString().length,(n.lastRow+1).toString().length,2)*n.characterWidth},update:function(e,t){t.renderer.$loop.schedule(t.renderer.CHANGE_GUTTER)},attach:function(e){e.renderer.$gutterLayer.$renderer=this,e.on("changeSelection",this.update),this.update(null,e)},detach:function(e){e.renderer.$gutterLayer.$renderer==this&&(e.renderer.$gutterLayer.$renderer=null),e.off("changeSelection",this.update),this.update(null,e)}};t.Editor=S})),ace.define("ace/layer/lines",["require","exports","module","ace/lib/dom"],(function(e,t,n){"use strict";var i=e("../lib/dom"),o=function(){function e(e,t){this.element=e,this.canvasHeight=t||5e5,this.element.style.height=2*this.canvasHeight+"px",this.cells=[],this.cellCache=[],this.$offsetCoefficient=0}return e.prototype.moveContainer=function(e){i.translate(this.element,0,-e.firstRowScreen*e.lineHeight%this.canvasHeight-e.offset*this.$offsetCoefficient)},e.prototype.pageChanged=function(e,t){return Math.floor(e.firstRowScreen*e.lineHeight/this.canvasHeight)!==Math.floor(t.firstRowScreen*t.lineHeight/this.canvasHeight)},e.prototype.computeLineTop=function(e,t,n){var i=t.firstRowScreen*t.lineHeight,o=Math.floor(i/this.canvasHeight);return n.documentToScreenRow(e,0)*t.lineHeight-o*this.canvasHeight},e.prototype.computeLineHeight=function(e,t,n){return t.lineHeight*n.getRowLineCount(e)},e.prototype.getLength=function(){return this.cells.length},e.prototype.get=function(e){return this.cells[e]},e.prototype.shift=function(){this.$cacheCell(this.cells.shift())},e.prototype.pop=function(){this.$cacheCell(this.cells.pop())},e.prototype.push=function(e){if(Array.isArray(e)){this.cells.push.apply(this.cells,e);for(var t=i.createFragment(this.element),n=0;nr&&(l=o.end.row+1,r=(o=t.getNextFoldLine(l,o))?o.start.row:1/0),l>i){for(;this.$lines.getLength()>a+1;)this.$lines.pop();break}(s=this.$lines.get(++a))?s.row=l:(s=this.$lines.createCell(l,e,this.session,u),this.$lines.push(s)),this.$renderCell(s,e,o,l),l++}this._signal("afterRender"),this.$updateGutterWidth(e)},e.prototype.$updateGutterWidth=function(e){var t=this.session,n=t.gutterRenderer||this.$renderer,i=t.$firstLineNumber,o=this.$lines.last()?this.$lines.last().text:"";(this.$fixedWidth||t.$useWrapMode)&&(o=t.getLength()+i-1);var r=n?n.getWidth(t,o,e):o.toString().length*e.characterWidth,s=this.$padding||this.$computePadding();(r+=s.left+s.right)===this.gutterWidth||isNaN(r)||(this.gutterWidth=r,this.element.parentNode.style.width=this.element.style.width=Math.ceil(this.gutterWidth)+"px",this._signal("changeGutterWidth",r))},e.prototype.$updateCursorRow=function(){if(this.$highlightGutterLine){var e=this.session.selection.getCursor();this.$cursorRow!==e.row&&(this.$cursorRow=e.row)}},e.prototype.updateLineHighlight=function(){if(this.$highlightGutterLine){var e=this.session.selection.cursor.row;if(this.$cursorRow=e,!this.$cursorCell||this.$cursorCell.row!=e){this.$cursorCell&&(this.$cursorCell.element.className=this.$cursorCell.element.className.replace("ace_gutter-active-line ",""));var t=this.$lines.cells;this.$cursorCell=null;for(var n=0;n=this.$cursorRow){if(i.row>this.$cursorRow){var o=this.session.getFoldLine(this.$cursorRow);if(!(n>0&&o&&o.start.row==t[n-1].row))break;i=t[n-1]}i.element.className="ace_gutter-active-line "+i.element.className,this.$cursorCell=i;break}}}}},e.prototype.scrollLines=function(e){var t=this.config;if(this.config=e,this.$updateCursorRow(),this.$lines.pageChanged(t,e))return this.update(e);this.$lines.moveContainer(e);var n=Math.min(e.lastRow+e.gutterOffset,this.session.getLength()-1),i=this.oldLastRow;if(this.oldLastRow=n,!t||i0;o--)this.$lines.shift();if(i>n)for(o=this.session.getFoldedRowCount(n+1,i);o>0;o--)this.$lines.pop();e.firstRowi&&this.$lines.push(this.$renderLines(e,i+1,n)),this.updateLineHighlight(),this._signal("afterRender"),this.$updateGutterWidth(e)},e.prototype.$renderLines=function(e,t,n){for(var i=[],o=t,r=this.session.getNextFoldLine(o),s=r?r.start.row:1/0;o>s&&(o=r.end.row+1,s=(r=this.session.getNextFoldLine(o,r))?r.start.row:1/0),!(o>n);){var a=this.$lines.createCell(o,e,this.session,u);this.$renderCell(a,e,r,o),i.push(a),o++}return i},e.prototype.$renderCell=function(e,t,n,o){var r=e.element,s=this.session,a=r.childNodes[0],c=r.childNodes[1],u=r.childNodes[2],h=u.firstChild,d=s.$firstLineNumber,p=s.$breakpoints,g=s.$decorations,m=s.gutterRenderer||this.$renderer,f=this.$showFoldWidgets&&s.foldWidgets,y=n?n.start.row:Number.MAX_VALUE,b=t.lineHeight+"px",v=this.$useSvgGutterIcons?"ace_gutter-cell_svg-icons ":"ace_gutter-cell ",w=this.$useSvgGutterIcons?"ace_icon_svg":"ace_icon",A=(m?m.getText(s,o):o+d).toString();if(this.$highlightGutterLine&&(o==this.$cursorRow||n&&o=y&&this.$cursorRow<=n.end.row)&&(v+="ace_gutter-active-line ",this.$cursorCell!=e&&(this.$cursorCell&&(this.$cursorCell.element.className=this.$cursorCell.element.className.replace("ace_gutter-active-line ","")),this.$cursorCell=e)),p[o]&&(v+=p[o]),g[o]&&(v+=g[o]),this.$annotations[o]&&o!==y&&(v+=this.$annotations[o].className),f){var C=f[o];null==C&&(C=f[o]=s.getFoldWidget(o))}if(C){var k="ace_fold-widget ace_"+C,x="start"==C&&o==y&&on.right-t.right?"foldWidgets":void 0},e}();function u(e){var t=document.createTextNode("");e.appendChild(t);var n=i.createElement("span");e.appendChild(n);var o=i.createElement("span");e.appendChild(o);var r=i.createElement("span");return o.appendChild(r),e}c.prototype.$fixedWidth=!1,c.prototype.$highlightGutterLine=!0,c.prototype.$renderer="",c.prototype.$showLineNumbers=!0,c.prototype.$showFoldWidgets=!0,o.implement(c.prototype,s),t.Gutter=c})),ace.define("ace/layer/marker",["require","exports","module","ace/range","ace/lib/dom"],(function(e,t,n){"use strict";var i=e("../range").Range,o=e("../lib/dom"),r=function(){function e(e){this.element=o.createElement("div"),this.element.className="ace_layer ace_marker-layer",e.appendChild(this.element)}return e.prototype.setPadding=function(e){this.$padding=e},e.prototype.setSession=function(e){this.session=e},e.prototype.setMarkers=function(e){this.markers=e},e.prototype.elt=function(e,t){var n=-1!=this.i&&this.element.childNodes[this.i];n?this.i++:(n=document.createElement("div"),this.element.appendChild(n),this.i=-1),n.style.cssText=t,n.className=e},e.prototype.update=function(e){if(e){var t;for(var n in this.config=e,this.i=0,this.markers){var i=this.markers[n];if(i.range){var o=i.range.clipRows(e.firstRow,e.lastRow);if(!o.isEmpty())if(o=o.toScreenRange(this.session),i.renderer){var r=this.$getTop(o.start.row,e),s=this.$padding+o.start.column*e.characterWidth;i.renderer(t,o,s,r,e)}else"fullLine"==i.type?this.drawFullLineMarker(t,o,i.clazz,e):"screenLine"==i.type?this.drawScreenLineMarker(t,o,i.clazz,e):o.isMultiLine()?"text"==i.type?this.drawTextMarker(t,o,i.clazz,e):this.drawMultiLineMarker(t,o,i.clazz,e):this.drawSingleLineMarker(t,o,i.clazz+" ace_start ace_br15",e)}else i.update(t,this,this.session,e)}if(-1!=this.i)for(;this.id?4:0)|(c==l?8:0)),o,c==l?0:1,r)},e.prototype.drawMultiLineMarker=function(e,t,n,i,o){var r=this.$padding,s=i.lineHeight,a=this.$getTop(t.start.row,i),l=r+t.start.column*i.characterWidth;if(o=o||"",this.session.$bidiHandler.isBidiRow(t.start.row)?((c=t.clone()).end.row=c.start.row,c.end.column=this.session.getLine(c.start.row).length,this.drawBidiSingleLineMarker(e,c,n+" ace_br1 ace_start",i,null,o)):this.elt(n+" ace_br1 ace_start","height:"+s+"px;right:0;top:"+a+"px;left:"+l+"px;"+(o||"")),this.session.$bidiHandler.isBidiRow(t.end.row)){var c;(c=t.clone()).start.row=c.end.row,c.start.column=0,this.drawBidiSingleLineMarker(e,c,n+" ace_br12",i,null,o)}else{a=this.$getTop(t.end.row,i);var u=t.end.column*i.characterWidth;this.elt(n+" ace_br12","height:"+s+"px;width:"+u+"px;top:"+a+"px;left:"+r+"px;"+(o||""))}if(!((s=(t.end.row-t.start.row-1)*i.lineHeight)<=0)){a=this.$getTop(t.start.row+1,i);var h=(t.start.column?1:0)|(t.end.column?0:8);this.elt(n+(h?" ace_br"+h:""),"height:"+s+"px;right:0;top:"+a+"px;left:"+r+"px;"+(o||""))}},e.prototype.drawSingleLineMarker=function(e,t,n,i,o,r){if(this.session.$bidiHandler.isBidiRow(t.start.row))return this.drawBidiSingleLineMarker(e,t,n,i,o,r);var s=i.lineHeight,a=(t.end.column+(o||0)-t.start.column)*i.characterWidth,l=this.$getTop(t.start.row,i),c=this.$padding+t.start.column*i.characterWidth;this.elt(n,"height:"+s+"px;width:"+a+"px;top:"+l+"px;left:"+c+"px;"+(r||""))},e.prototype.drawBidiSingleLineMarker=function(e,t,n,i,o,r){var s=i.lineHeight,a=this.$getTop(t.start.row,i),l=this.$padding;this.session.$bidiHandler.getSelections(t.start.column,t.end.column).forEach((function(e){this.elt(n,"height:"+s+"px;width:"+(e.width+(o||0))+"px;top:"+a+"px;left:"+(l+e.left)+"px;"+(r||""))}),this)},e.prototype.drawFullLineMarker=function(e,t,n,i,o){var r=this.$getTop(t.start.row,i),s=i.lineHeight;t.start.row!=t.end.row&&(s+=this.$getTop(t.end.row,i)-r),this.elt(n,"height:"+s+"px;top:"+r+"px;left:0;right:0;"+(o||""))},e.prototype.drawScreenLineMarker=function(e,t,n,i,o){var r=this.$getTop(t.start.row,i),s=i.lineHeight;this.elt(n,"height:"+s+"px;top:"+r+"px;left:0;right:0;"+(o||""))},e}();r.prototype.$padding=0,t.Marker=r})),ace.define("ace/layer/text_util",["require","exports","module"],(function(e,t,n){var i=new Set(["text","rparen","lparen"]);t.isTextToken=function(e){return i.has(e)}})),ace.define("ace/layer/text",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/layer/lines","ace/lib/event_emitter","ace/config","ace/layer/text_util"],(function(e,t,n){"use strict";var i=e("../lib/oop"),o=e("../lib/dom"),r=e("../lib/lang"),s=e("./lines").Lines,a=e("../lib/event_emitter").EventEmitter,l=e("../config").nls,c=e("./text_util").isTextToken,u=function(){function e(e){this.dom=o,this.element=this.dom.createElement("div"),this.element.className="ace_layer ace_text-layer",e.appendChild(this.element),this.$updateEolChar=this.$updateEolChar.bind(this),this.$lines=new s(this.element)}return e.prototype.$updateEolChar=function(){var e=this.session.doc,t="\n"==e.getNewLineCharacter()&&"windows"!=e.getNewLineMode()?this.EOL_CHAR_LF:this.EOL_CHAR_CRLF;if(this.EOL_CHAR!=t)return this.EOL_CHAR=t,!0},e.prototype.setPadding=function(e){this.$padding=e,this.element.style.margin="0 "+e+"px"},e.prototype.getLineHeight=function(){return this.$fontMetrics.$characterSize.height||0},e.prototype.getCharacterWidth=function(){return this.$fontMetrics.$characterSize.width||0},e.prototype.$setFontMetrics=function(e){this.$fontMetrics=e,this.$fontMetrics.on("changeCharacterSize",function(e){this._signal("changeCharacterSize",e)}.bind(this)),this.$pollSizeChanges()},e.prototype.checkForSizeChanges=function(){this.$fontMetrics.checkForSizeChanges()},e.prototype.$pollSizeChanges=function(){return this.$pollSizeChangesTimer=this.$fontMetrics.$pollSizeChanges()},e.prototype.setSession=function(e){this.session=e,e&&this.$computeTabString()},e.prototype.setShowInvisibles=function(e){return this.showInvisibles!=e&&(this.showInvisibles=e,"string"==typeof e?(this.showSpaces=/tab/i.test(e),this.showTabs=/space/i.test(e),this.showEOL=/eol/i.test(e)):this.showSpaces=this.showTabs=this.showEOL=e,this.$computeTabString(),!0)},e.prototype.setDisplayIndentGuides=function(e){return this.displayIndentGuides!=e&&(this.displayIndentGuides=e,this.$computeTabString(),!0)},e.prototype.setHighlightIndentGuides=function(e){return this.$highlightIndentGuides!==e&&(this.$highlightIndentGuides=e,e)},e.prototype.$computeTabString=function(){var e=this.session.getTabSize();this.tabSize=e;for(var t=this.$tabStrings=[0],n=1;nu&&(a=l.end.row+1,u=(l=this.session.getNextFoldLine(a,l))?l.start.row:1/0),!(a>o);){var h=r[s++];if(h){this.dom.removeChildren(h),this.$renderLine(h,a,a==u&&l),c&&(h.style.top=this.$lines.computeLineTop(a,e,this.session)+"px");var d=e.lineHeight*this.session.getRowLength(a)+"px";h.style.height!=d&&(c=!0,h.style.height=d)}a++}if(c)for(;s0;o--)this.$lines.shift();if(t.lastRow>e.lastRow)for(o=this.session.getFoldedRowCount(e.lastRow+1,t.lastRow);o>0;o--)this.$lines.pop();e.firstRowt.lastRow&&this.$lines.push(this.$renderLinesFragment(e,t.lastRow+1,e.lastRow)),this.$highlightIndentGuide()},e.prototype.$renderLinesFragment=function(e,t,n){for(var i=[],r=t,s=this.session.getNextFoldLine(r),a=s?s.start.row:1/0;r>a&&(r=s.end.row+1,a=(s=this.session.getNextFoldLine(r,s))?s.start.row:1/0),!(r>n);){var l=this.$lines.createCell(r,e,this.session),c=l.element;this.dom.removeChildren(c),o.setStyle(c.style,"height",this.$lines.computeLineHeight(r,e,this.session)+"px"),o.setStyle(c.style,"top",this.$lines.computeLineTop(r,e,this.session)+"px"),this.$renderLine(c,r,r==a&&s),this.$useLineGroups()?c.className="ace_line_group":c.className="ace_line",i.push(l),r++}return i},e.prototype.update=function(e){this.$lines.moveContainer(e),this.config=e;for(var t=e.firstRow,n=e.lastRow,i=this.$lines;i.getLength();)i.pop();i.push(this.$renderLinesFragment(e,t,n))},e.prototype.$renderToken=function(e,t,n,i){for(var o,s=this,a=/(\t)|( +)|([\x00-\x1f\x80-\xa0\xad\u1680\u180E\u2000-\u200f\u2028\u2029\u202F\u205F\uFEFF\uFFF9-\uFFFC\u2066\u2067\u2068\u202A\u202B\u202D\u202E\u202C\u2069]+)|(\u3000)|([\u1100-\u115F\u11A3-\u11A7\u11FA-\u11FF\u2329-\u232A\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u2FF0-\u2FFB\u3001-\u303E\u3041-\u3096\u3099-\u30FF\u3105-\u312D\u3131-\u318E\u3190-\u31BA\u31C0-\u31E3\u31F0-\u321E\u3220-\u3247\u3250-\u32FE\u3300-\u4DBF\u4E00-\uA48C\uA490-\uA4C6\uA960-\uA97C\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFAFF\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE66\uFE68-\uFE6B\uFF01-\uFF60\uFFE0-\uFFE6]|[\uD800-\uDBFF][\uDC00-\uDFFF])/g,u=this.dom.createFragment(this.element),h=0;o=a.exec(i);){var d=o[1],p=o[2],g=o[3],m=o[4],f=o[5];if(s.showSpaces||!p){var y=h!=o.index?i.slice(h,o.index):"";if(h=o.index+o[0].length,y&&u.appendChild(this.dom.createTextNode(y,this.element)),d){var b=s.session.getScreenTabSize(t+o.index);u.appendChild(s.$tabStrings[b].cloneNode(!0)),t+=b-1}else p?s.showSpaces?((w=this.dom.createElement("span")).className="ace_invisible ace_invisible_space",w.textContent=r.stringRepeat(s.SPACE_CHAR,p.length),u.appendChild(w)):u.appendChild(this.dom.createTextNode(p,this.element)):g?((w=this.dom.createElement("span")).className="ace_invisible ace_invisible_space ace_invalid",w.textContent=r.stringRepeat(s.SPACE_CHAR,g.length),u.appendChild(w)):m?(t+=1,(w=this.dom.createElement("span")).style.width=2*s.config.characterWidth+"px",w.className=s.showSpaces?"ace_cjk ace_invisible ace_invisible_space":"ace_cjk",w.textContent=s.showSpaces?s.SPACE_CHAR:m,u.appendChild(w)):f&&(t+=1,(w=this.dom.createElement("span")).style.width=2*s.config.characterWidth+"px",w.className="ace_cjk",w.textContent=f,u.appendChild(w))}}if(u.appendChild(this.dom.createTextNode(h?i.slice(h):i,this.element)),c(n.type))e.appendChild(u);else{var v="ace_"+n.type.replace(/\./g," ace_"),w=this.dom.createElement("span");"fold"==n.type&&(w.style.width=n.value.length*this.config.characterWidth+"px",w.setAttribute("title",l("Unfold code"))),w.className=v,w.appendChild(u),e.appendChild(w)}return t+i.length},e.prototype.renderIndentGuide=function(e,t,n){var i=t.search(this.$indentGuideRe);if(i<=0||i>=n)return t;if(" "==t[0]){for(var o=(i-=i%this.tabSize)/this.tabSize,r=0;ro[r].start.row?this.$highlightIndentGuideMarker.dir=-1:this.$highlightIndentGuideMarker.dir=1;break}if(!this.$highlightIndentGuideMarker.end&&""!==e[t.row]&&t.column===e[t.row].length)for(this.$highlightIndentGuideMarker.dir=1,r=t.row+1;r0)for(var i=0;i=this.$highlightIndentGuideMarker.start+1){if(i.row>=this.$highlightIndentGuideMarker.end)break;this.$setIndentGuideActive(i,t)}}else for(n=e.length-1;n>=0;n--)if(i=e[n],this.$highlightIndentGuideMarker.end&&i.row=s;)a=this.$renderToken(l,a,u,h.substring(0,s-i)),h=h.substring(s-i),i=s,l=this.$createLineElement(),e.appendChild(l),l.appendChild(this.dom.createTextNode(r.stringRepeat(" ",n.indent),this.element)),a=0,s=n[++o]||Number.MAX_VALUE;0!=h.length&&(i+=h.length,a=this.$renderToken(l,a,u,h))}}n[n.length-1]>this.MAX_LINE_LENGTH&&this.$renderOverflowMessage(l,a,null,"",!0)},e.prototype.$renderSimpleLine=function(e,t){for(var n=0,i=0;ithis.MAX_LINE_LENGTH)return this.$renderOverflowMessage(e,n,o,r);n=this.$renderToken(e,n,o,r)}}},e.prototype.$renderOverflowMessage=function(e,t,n,i,o){n&&this.$renderToken(e,t,n,i.slice(0,this.MAX_LINE_LENGTH-t));var r=this.dom.createElement("span");r.className="ace_inline_button ace_keyword ace_toggle_wrap",r.textContent=o?"":"",e.appendChild(r)},e.prototype.$renderLine=function(e,t,n){if(n||0==n||(n=this.session.getFoldLine(t)),n)var i=this.$getFoldLineTokens(t,n);else i=this.session.getTokens(t);var o=e;if(i.length){var r=this.session.getRowSplitData(t);r&&r.length?(this.$renderWrappedLine(e,i,r),o=e.lastChild):(o=e,this.$useLineGroups()&&(o=this.$createLineElement(),e.appendChild(o)),this.$renderSimpleLine(o,i))}else this.$useLineGroups()&&(o=this.$createLineElement(),e.appendChild(o));if(this.showEOL&&o){n&&(t=n.end.row);var s=this.dom.createElement("span");s.className="ace_invisible ace_invisible_eol",s.textContent=t==this.session.getLength()-1?this.EOF_CHAR:this.EOL_CHAR,o.appendChild(s)}},e.prototype.$getFoldLineTokens=function(e,t){var n=this.session,i=[],o=n.getTokens(e);return t.walk((function(e,t,r,s,a){null!=e?i.push({type:"fold",value:e}):(a&&(o=n.getTokens(t)),o.length&&function(e,t,n){for(var o=0,r=0;r+e[o].value.lengthn-t&&(s=s.substring(0,n-t)),i.push({type:e[o].type,value:s}),r=t+s.length,o+=1);rn?i.push({type:e[o].type,value:s.substring(0,n-r)}):i.push(e[o]),r+=s.length,o+=1}}(o,s,r))}),t.end.row,this.session.getLine(t.end.row).length),i},e.prototype.$useLineGroups=function(){return this.session.getUseWrapMode()},e}();u.prototype.EOF_CHAR="¶",u.prototype.EOL_CHAR_LF="¬",u.prototype.EOL_CHAR_CRLF="¤",u.prototype.EOL_CHAR=u.prototype.EOL_CHAR_LF,u.prototype.TAB_CHAR="—",u.prototype.SPACE_CHAR="·",u.prototype.$padding=0,u.prototype.MAX_LINE_LENGTH=1e4,u.prototype.showInvisibles=!1,u.prototype.showSpaces=!1,u.prototype.showTabs=!1,u.prototype.showEOL=!1,u.prototype.displayIndentGuides=!0,u.prototype.$highlightIndentGuides=!0,u.prototype.$tabStrings=[],u.prototype.destroy={},u.prototype.onChangeTabSize=u.prototype.$computeTabString,i.implement(u.prototype,a),t.Text=u})),ace.define("ace/layer/cursor",["require","exports","module","ace/lib/dom"],(function(e,t,n){"use strict";var i=e("../lib/dom"),o=function(){function e(e){this.element=i.createElement("div"),this.element.className="ace_layer ace_cursor-layer",e.appendChild(this.element),this.isVisible=!1,this.isBlinking=!0,this.blinkInterval=1e3,this.smoothBlinking=!1,this.cursors=[],this.cursor=this.addCursor(),i.addCssClass(this.element,"ace_hidden-cursors"),this.$updateCursors=this.$updateOpacity.bind(this)}return e.prototype.$updateOpacity=function(e){for(var t=this.cursors,n=t.length;n--;)i.setStyle(t[n].style,"opacity",e?"":"0")},e.prototype.$startCssAnimation=function(){for(var e=this.cursors,t=e.length;t--;)e[t].style.animationDuration=this.blinkInterval+"ms";this.$isAnimating=!0,setTimeout(function(){this.$isAnimating&&i.addCssClass(this.element,"ace_animate-blinking")}.bind(this))},e.prototype.$stopCssAnimation=function(){this.$isAnimating=!1,i.removeCssClass(this.element,"ace_animate-blinking")},e.prototype.setPadding=function(e){this.$padding=e},e.prototype.setSession=function(e){this.session=e},e.prototype.setBlinking=function(e){e!=this.isBlinking&&(this.isBlinking=e,this.restartTimer())},e.prototype.setBlinkInterval=function(e){e!=this.blinkInterval&&(this.blinkInterval=e,this.restartTimer())},e.prototype.setSmoothBlinking=function(e){e!=this.smoothBlinking&&(this.smoothBlinking=e,i.setCssClass(this.element,"ace_smooth-blinking",e),this.$updateCursors(!0),this.restartTimer())},e.prototype.addCursor=function(){var e=i.createElement("div");return e.className="ace_cursor",this.element.appendChild(e),this.cursors.push(e),e},e.prototype.removeCursor=function(){if(this.cursors.length>1){var e=this.cursors.pop();return e.parentNode.removeChild(e),e}},e.prototype.hideCursor=function(){this.isVisible=!1,i.addCssClass(this.element,"ace_hidden-cursors"),this.restartTimer()},e.prototype.showCursor=function(){this.isVisible=!0,i.removeCssClass(this.element,"ace_hidden-cursors"),this.restartTimer()},e.prototype.restartTimer=function(){var e=this.$updateCursors;if(clearInterval(this.intervalId),clearTimeout(this.timeoutId),this.$stopCssAnimation(),this.smoothBlinking&&(this.$isSmoothBlinking=!1,i.removeCssClass(this.element,"ace_smooth-blinking")),e(!0),this.isBlinking&&this.blinkInterval&&this.isVisible)if(this.smoothBlinking&&(this.$isSmoothBlinking=!0,setTimeout(function(){this.$isSmoothBlinking&&i.addCssClass(this.element,"ace_smooth-blinking")}.bind(this))),i.HAS_CSS_ANIMATION)this.$startCssAnimation();else{var t=function(){this.timeoutId=setTimeout((function(){e(!1)}),.6*this.blinkInterval)}.bind(this);this.intervalId=setInterval((function(){e(!0),t()}),this.blinkInterval),t()}else this.$stopCssAnimation()},e.prototype.getPixelPosition=function(e,t){if(!this.config||!this.session)return{left:0,top:0};e||(e=this.session.selection.getCursor());var n=this.session.documentToScreenPosition(e);return{left:this.$padding+(this.session.$bidiHandler.isBidiRow(n.row,e.row)?this.session.$bidiHandler.getPosLeft(n.column):n.column*this.config.characterWidth),top:(n.row-(t?this.config.firstRowScreen:0))*this.config.lineHeight}},e.prototype.isCursorInView=function(e,t){return e.top>=0&&e.tope.height+e.offset||s.top<0)&&n>1)){var a=this.cursors[o++]||this.addCursor(),l=a.style;this.drawCursor?this.drawCursor(a,s,e,t[n],this.session):this.isCursorInView(s,e)?(i.setStyle(l,"display","block"),i.translate(a,s.left,s.top),i.setStyle(l,"width",Math.round(e.characterWidth)+"px"),i.setStyle(l,"height",e.lineHeight+"px")):i.setStyle(l,"display","none")}}for(;this.cursors.length>o;)this.removeCursor();var c=this.session.getOverwrite();this.$setOverwrite(c),this.$pixelPos=s,this.restartTimer()},e.prototype.$setOverwrite=function(e){e!=this.overwrite&&(this.overwrite=e,e?i.addCssClass(this.element,"ace_overwrite-cursors"):i.removeCssClass(this.element,"ace_overwrite-cursors"))},e.prototype.destroy=function(){clearInterval(this.intervalId),clearTimeout(this.timeoutId)},e}();o.prototype.$padding=0,o.prototype.drawCursor=null,t.Cursor=o})),ace.define("ace/scrollbar",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/event","ace/lib/event_emitter"],(function(e,t,n){"use strict";var i,o=this&&this.__extends||(i=function(e,t){return i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},i(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}i(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}),r=e("./lib/oop"),s=e("./lib/dom"),a=e("./lib/event"),l=e("./lib/event_emitter").EventEmitter,c=32768,u=function(){function e(e,t){this.element=s.createElement("div"),this.element.className="ace_scrollbar ace_scrollbar"+t,this.inner=s.createElement("div"),this.inner.className="ace_scrollbar-inner",this.inner.textContent=" ",this.element.appendChild(this.inner),e.appendChild(this.element),this.setVisible(!1),this.skipEvent=!1,a.addListener(this.element,"scroll",this.onScroll.bind(this)),a.addListener(this.element,"mousedown",a.preventDefault)}return e.prototype.setVisible=function(e){this.element.style.display=e?"":"none",this.isVisible=e,this.coeff=1},e}();r.implement(u.prototype,l);var h=function(e){function t(t,n){var i=e.call(this,t,"-v")||this;return i.scrollTop=0,i.scrollHeight=0,n.$scrollbarWidth=i.width=s.scrollbarWidth(t.ownerDocument),i.inner.style.width=i.element.style.width=(i.width||15)+5+"px",i.$minWidth=0,i}return o(t,e),t.prototype.onScroll=function(){if(!this.skipEvent){if(this.scrollTop=this.element.scrollTop,1!=this.coeff){var e=this.element.clientHeight/this.scrollHeight;this.scrollTop=this.scrollTop*(1-e)/(this.coeff-e)}this._emit("scroll",{data:this.scrollTop})}this.skipEvent=!1},t.prototype.getWidth=function(){return Math.max(this.isVisible?this.width:0,this.$minWidth||0)},t.prototype.setHeight=function(e){this.element.style.height=e+"px"},t.prototype.setScrollHeight=function(e){this.scrollHeight=e,e>c?(this.coeff=c/e,e=c):1!=this.coeff&&(this.coeff=1),this.inner.style.height=e+"px"},t.prototype.setScrollTop=function(e){this.scrollTop!=e&&(this.skipEvent=!0,this.scrollTop=e,this.element.scrollTop=e*this.coeff)},t}(u);h.prototype.setInnerHeight=h.prototype.setScrollHeight;var d=function(e){function t(t,n){var i=e.call(this,t,"-h")||this;return i.scrollLeft=0,i.height=n.$scrollbarWidth,i.inner.style.height=i.element.style.height=(i.height||15)+5+"px",i}return o(t,e),t.prototype.onScroll=function(){this.skipEvent||(this.scrollLeft=this.element.scrollLeft,this._emit("scroll",{data:this.scrollLeft})),this.skipEvent=!1},t.prototype.getHeight=function(){return this.isVisible?this.height:0},t.prototype.setWidth=function(e){this.element.style.width=e+"px"},t.prototype.setInnerWidth=function(e){this.inner.style.width=e+"px"},t.prototype.setScrollWidth=function(e){this.inner.style.width=e+"px"},t.prototype.setScrollLeft=function(e){this.scrollLeft!=e&&(this.skipEvent=!0,this.scrollLeft=this.element.scrollLeft=e)},t}(u);t.ScrollBar=h,t.ScrollBarV=h,t.ScrollBarH=d,t.VScrollBar=h,t.HScrollBar=d})),ace.define("ace/scrollbar_custom",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/event","ace/lib/event_emitter"],(function(e,t,n){"use strict";var i,o=this&&this.__extends||(i=function(e,t){return i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},i(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}i(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}),r=e("./lib/oop"),s=e("./lib/dom"),a=e("./lib/event"),l=e("./lib/event_emitter").EventEmitter;s.importCssString(".ace_editor>.ace_sb-v div, .ace_editor>.ace_sb-h div{\n position: absolute;\n background: rgba(128, 128, 128, 0.6);\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n border: 1px solid #bbb;\n border-radius: 2px;\n z-index: 8;\n}\n.ace_editor>.ace_sb-v, .ace_editor>.ace_sb-h {\n position: absolute;\n z-index: 6;\n background: none;\n overflow: hidden!important;\n}\n.ace_editor>.ace_sb-v {\n z-index: 6;\n right: 0;\n top: 0;\n width: 12px;\n}\n.ace_editor>.ace_sb-v div {\n z-index: 8;\n right: 0;\n width: 100%;\n}\n.ace_editor>.ace_sb-h {\n bottom: 0;\n left: 0;\n height: 12px;\n}\n.ace_editor>.ace_sb-h div {\n bottom: 0;\n height: 100%;\n}\n.ace_editor>.ace_sb_grabbed {\n z-index: 8;\n background: #000;\n}","ace_scrollbar.css",!1);var c=function(){function e(e,t){this.element=s.createElement("div"),this.element.className="ace_sb"+t,this.inner=s.createElement("div"),this.inner.className="",this.element.appendChild(this.inner),this.VScrollWidth=12,this.HScrollHeight=12,e.appendChild(this.element),this.setVisible(!1),this.skipEvent=!1,a.addMultiMouseDownListener(this.element,[500,300,300],this,"onMouseDown")}return e.prototype.setVisible=function(e){this.element.style.display=e?"":"none",this.isVisible=e,this.coeff=1},e}();r.implement(c.prototype,l);var u=function(e){function t(t,n){var i=e.call(this,t,"-v")||this;return i.scrollTop=0,i.scrollHeight=0,i.parent=t,i.width=i.VScrollWidth,i.renderer=n,i.inner.style.width=i.element.style.width=(i.width||15)+"px",i.$minWidth=0,i}return o(t,e),t.prototype.onMouseDown=function(e,t){if("mousedown"===e&&0===a.getButton(t)&&2!==t.detail){if(t.target===this.inner){var n=this,i=t.clientY,o=t.clientY,r=this.thumbTop;a.capture(this.inner,(function(e){i=e.clientY}),(function(){clearInterval(s)}));var s=setInterval((function(){if(void 0!==i){var e=n.scrollTopFromThumbTop(r+i-o);e!==n.scrollTop&&n._emit("scroll",{data:e})}}),20);return a.preventDefault(t)}var l=t.clientY-this.element.getBoundingClientRect().top-this.thumbHeight/2;return this._emit("scroll",{data:this.scrollTopFromThumbTop(l)}),a.preventDefault(t)}},t.prototype.getHeight=function(){return this.height},t.prototype.scrollTopFromThumbTop=function(e){var t=e*(this.pageHeight-this.viewHeight)/(this.slideHeight-this.thumbHeight);return(t>>=0)<0?t=0:t>this.pageHeight-this.viewHeight&&(t=this.pageHeight-this.viewHeight),t},t.prototype.getWidth=function(){return Math.max(this.isVisible?this.width:0,this.$minWidth||0)},t.prototype.setHeight=function(e){this.height=Math.max(0,e),this.slideHeight=this.height,this.viewHeight=this.height,this.setScrollHeight(this.pageHeight,!0)},t.prototype.setScrollHeight=function(e,t){(this.pageHeight!==e||t)&&(this.pageHeight=e,this.thumbHeight=this.slideHeight*this.viewHeight/this.pageHeight,this.thumbHeight>this.slideHeight&&(this.thumbHeight=this.slideHeight),this.thumbHeight<15&&(this.thumbHeight=15),this.inner.style.height=this.thumbHeight+"px",this.scrollTop>this.pageHeight-this.viewHeight&&(this.scrollTop=this.pageHeight-this.viewHeight,this.scrollTop<0&&(this.scrollTop=0),this._emit("scroll",{data:this.scrollTop})))},t.prototype.setScrollTop=function(e){this.scrollTop=e,e<0&&(e=0),this.thumbTop=e*(this.slideHeight-this.thumbHeight)/(this.pageHeight-this.viewHeight),this.inner.style.top=this.thumbTop+"px"},t}(c);u.prototype.setInnerHeight=u.prototype.setScrollHeight;var h=function(e){function t(t,n){var i=e.call(this,t,"-h")||this;return i.scrollLeft=0,i.scrollWidth=0,i.height=i.HScrollHeight,i.inner.style.height=i.element.style.height=(i.height||12)+"px",i.renderer=n,i}return o(t,e),t.prototype.onMouseDown=function(e,t){if("mousedown"===e&&0===a.getButton(t)&&2!==t.detail){if(t.target===this.inner){var n=this,i=t.clientX,o=t.clientX,r=this.thumbLeft;a.capture(this.inner,(function(e){i=e.clientX}),(function(){clearInterval(s)}));var s=setInterval((function(){if(void 0!==i){var e=n.scrollLeftFromThumbLeft(r+i-o);e!==n.scrollLeft&&n._emit("scroll",{data:e})}}),20);return a.preventDefault(t)}var l=t.clientX-this.element.getBoundingClientRect().left-this.thumbWidth/2;return this._emit("scroll",{data:this.scrollLeftFromThumbLeft(l)}),a.preventDefault(t)}},t.prototype.getHeight=function(){return this.isVisible?this.height:0},t.prototype.scrollLeftFromThumbLeft=function(e){var t=e*(this.pageWidth-this.viewWidth)/(this.slideWidth-this.thumbWidth);return(t>>=0)<0?t=0:t>this.pageWidth-this.viewWidth&&(t=this.pageWidth-this.viewWidth),t},t.prototype.setWidth=function(e){this.width=Math.max(0,e),this.element.style.width=this.width+"px",this.slideWidth=this.width,this.viewWidth=this.width,this.setScrollWidth(this.pageWidth,!0)},t.prototype.setScrollWidth=function(e,t){(this.pageWidth!==e||t)&&(this.pageWidth=e,this.thumbWidth=this.slideWidth*this.viewWidth/this.pageWidth,this.thumbWidth>this.slideWidth&&(this.thumbWidth=this.slideWidth),this.thumbWidth<15&&(this.thumbWidth=15),this.inner.style.width=this.thumbWidth+"px",this.scrollLeft>this.pageWidth-this.viewWidth&&(this.scrollLeft=this.pageWidth-this.viewWidth,this.scrollLeft<0&&(this.scrollLeft=0),this._emit("scroll",{data:this.scrollLeft})))},t.prototype.setScrollLeft=function(e){this.scrollLeft=e,e<0&&(e=0),this.thumbLeft=e*(this.slideWidth-this.thumbWidth)/(this.pageWidth-this.viewWidth),this.inner.style.left=this.thumbLeft+"px"},t}(c);h.prototype.setInnerWidth=h.prototype.setScrollWidth,t.ScrollBar=u,t.ScrollBarV=u,t.ScrollBarH=h,t.VScrollBar=u,t.HScrollBar=h})),ace.define("ace/renderloop",["require","exports","module","ace/lib/event"],(function(e,t,n){"use strict";var i=e("./lib/event"),o=function(){function e(e,t){this.onRender=e,this.pending=!1,this.changes=0,this.$recursionLimit=2,this.window=t||window;var n=this;this._flush=function(e){n.pending=!1;var t=n.changes;if(t&&(i.blockIdle(100),n.changes=0,n.onRender(t)),n.changes){if(n.$recursionLimit--<0)return;n.schedule()}else n.$recursionLimit=2}}return e.prototype.schedule=function(e){this.changes=this.changes|e,this.changes&&!this.pending&&(i.nextFrame(this._flush),this.pending=!0)},e.prototype.clear=function(e){var t=this.changes;return this.changes=0,t},e}();t.RenderLoop=o})),ace.define("ace/layer/font_metrics",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/lib/event","ace/lib/useragent","ace/lib/event_emitter"],(function(e,t,n){var i=e("../lib/oop"),o=e("../lib/dom"),r=e("../lib/lang"),s=e("../lib/event"),a=e("../lib/useragent"),l=e("../lib/event_emitter").EventEmitter,c=512,u="function"==typeof ResizeObserver,h=200,d=function(){function e(e){this.el=o.createElement("div"),this.$setMeasureNodeStyles(this.el.style,!0),this.$main=o.createElement("div"),this.$setMeasureNodeStyles(this.$main.style),this.$measureNode=o.createElement("div"),this.$setMeasureNodeStyles(this.$measureNode.style),this.el.appendChild(this.$main),this.el.appendChild(this.$measureNode),e.appendChild(this.el),this.$measureNode.textContent=r.stringRepeat("X",c),this.$characterSize={width:0,height:0},u?this.$addObserver():this.checkForSizeChanges()}return e.prototype.$setMeasureNodeStyles=function(e,t){e.width=e.height="auto",e.left=e.top="0px",e.visibility="hidden",e.position="absolute",e.whiteSpace="pre",a.isIE<8?e["font-family"]="inherit":e.font="inherit",e.overflow=t?"hidden":"visible"},e.prototype.checkForSizeChanges=function(e){if(void 0===e&&(e=this.$measureSizes()),e&&(this.$characterSize.width!==e.width||this.$characterSize.height!==e.height)){this.$measureNode.style.fontWeight="bold";var t=this.$measureSizes();this.$measureNode.style.fontWeight="",this.$characterSize=e,this.charSizes=Object.create(null),this.allowBoldFonts=t&&t.width===e.width&&t.height===e.height,this._emit("changeCharacterSize",{data:e})}},e.prototype.$addObserver=function(){var e=this;this.$observer=new window.ResizeObserver((function(t){e.checkForSizeChanges()})),this.$observer.observe(this.$measureNode)},e.prototype.$pollSizeChanges=function(){if(this.$pollSizeChangesTimer||this.$observer)return this.$pollSizeChangesTimer;var e=this;return this.$pollSizeChangesTimer=s.onIdle((function t(){e.checkForSizeChanges(),s.onIdle(t,500)}),500)},e.prototype.setPolling=function(e){e?this.$pollSizeChanges():this.$pollSizeChangesTimer&&(clearInterval(this.$pollSizeChangesTimer),this.$pollSizeChangesTimer=0)},e.prototype.$measureSizes=function(e){var t={height:(e||this.$measureNode).clientHeight,width:(e||this.$measureNode).clientWidth/c};return 0===t.width||0===t.height?null:t},e.prototype.$measureCharWidth=function(e){return this.$main.textContent=r.stringRepeat(e,c),this.$main.getBoundingClientRect().width/c},e.prototype.getCharacterWidth=function(e){var t=this.charSizes[e];return void 0===t&&(t=this.charSizes[e]=this.$measureCharWidth(e)/this.$characterSize.width),t},e.prototype.destroy=function(){clearInterval(this.$pollSizeChangesTimer),this.$observer&&this.$observer.disconnect(),this.el&&this.el.parentNode&&this.el.parentNode.removeChild(this.el)},e.prototype.$getZoom=function(e){return e&&e.parentElement?(window.getComputedStyle(e).zoom||1)*this.$getZoom(e.parentElement):1},e.prototype.$initTransformMeasureNodes=function(){var e=function(e,t){return["div",{style:"position: absolute;top:"+e+"px;left:"+t+"px;"}]};this.els=o.buildDom([e(0,0),e(h,0),e(0,h),e(h,h)],this.el)},e.prototype.transformCoordinates=function(e,t){function n(e,t,n){var i=e[1]*t[0]-e[0]*t[1];return[(-t[1]*n[0]+t[0]*n[1])/i,(+e[1]*n[0]-e[0]*n[1])/i]}function i(e,t){return[e[0]-t[0],e[1]-t[1]]}function o(e,t){return[e[0]+t[0],e[1]+t[1]]}function r(e,t){return[e*t[0],e*t[1]]}function s(e){var t=e.getBoundingClientRect();return[t.left,t.top]}e&&(e=r(1/this.$getZoom(this.el),e)),this.els||this.$initTransformMeasureNodes();var a=s(this.els[0]),l=s(this.els[1]),c=s(this.els[2]),u=s(this.els[3]),d=n(i(u,l),i(u,c),i(o(l,c),o(u,a))),p=r(1+d[0],i(l,a)),g=r(1+d[1],i(c,a));if(t){var m=t,f=d[0]*m[0]/h+d[1]*m[1]/h+1,y=o(r(m[0],p),r(m[1],g));return o(r(1/f/h,y),a)}var b=i(e,a),v=n(i(p,r(d[0],b)),i(g,r(d[1],b)),b);return r(h,v)},e}();d.prototype.$characterSize={width:0,height:0},i.implement(d.prototype,l),t.FontMetrics=d})),ace.define("ace/css/editor-css",["require","exports","module"],(function(e,t,n){n.exports='\n.ace_br1 {border-top-left-radius : 3px;}\n.ace_br2 {border-top-right-radius : 3px;}\n.ace_br3 {border-top-left-radius : 3px; border-top-right-radius: 3px;}\n.ace_br4 {border-bottom-right-radius: 3px;}\n.ace_br5 {border-top-left-radius : 3px; border-bottom-right-radius: 3px;}\n.ace_br6 {border-top-right-radius : 3px; border-bottom-right-radius: 3px;}\n.ace_br7 {border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px;}\n.ace_br8 {border-bottom-left-radius : 3px;}\n.ace_br9 {border-top-left-radius : 3px; border-bottom-left-radius: 3px;}\n.ace_br10{border-top-right-radius : 3px; border-bottom-left-radius: 3px;}\n.ace_br11{border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-left-radius: 3px;}\n.ace_br12{border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}\n.ace_br13{border-top-left-radius : 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}\n.ace_br14{border-top-right-radius : 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}\n.ace_br15{border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}\n\n\n.ace_editor {\n position: relative;\n overflow: hidden;\n padding: 0;\n font: 12px/normal \'Monaco\', \'Menlo\', \'Ubuntu Mono\', \'Consolas\', \'Source Code Pro\', \'source-code-pro\', monospace;\n direction: ltr;\n text-align: left;\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n}\n\n.ace_scroller {\n position: absolute;\n overflow: hidden;\n top: 0;\n bottom: 0;\n background-color: inherit;\n -ms-user-select: none;\n -moz-user-select: none;\n -webkit-user-select: none;\n user-select: none;\n cursor: text;\n}\n\n.ace_content {\n position: absolute;\n box-sizing: border-box;\n min-width: 100%;\n contain: style size layout;\n font-variant-ligatures: no-common-ligatures;\n}\n\n.ace_keyboard-focus:focus {\n box-shadow: inset 0 0 0 2px #5E9ED6;\n outline: none;\n}\n\n.ace_dragging .ace_scroller:before{\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n content: \'\';\n background: rgba(250, 250, 250, 0.01);\n z-index: 1000;\n}\n.ace_dragging.ace_dark .ace_scroller:before{\n background: rgba(0, 0, 0, 0.01);\n}\n\n.ace_gutter {\n position: absolute;\n overflow : hidden;\n width: auto;\n top: 0;\n bottom: 0;\n left: 0;\n cursor: default;\n z-index: 4;\n -ms-user-select: none;\n -moz-user-select: none;\n -webkit-user-select: none;\n user-select: none;\n contain: style size layout;\n}\n\n.ace_gutter-active-line {\n position: absolute;\n left: 0;\n right: 0;\n}\n\n.ace_scroller.ace_scroll-left:after {\n content: "";\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n box-shadow: 17px 0 16px -16px rgba(0, 0, 0, 0.4) inset;\n pointer-events: none;\n}\n\n.ace_gutter-cell, .ace_gutter-cell_svg-icons {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n padding-left: 19px;\n padding-right: 6px;\n background-repeat: no-repeat;\n}\n\n.ace_gutter-cell_svg-icons .ace_gutter_annotation {\n margin-left: -14px;\n float: left;\n}\n\n.ace_gutter-cell .ace_gutter_annotation {\n margin-left: -19px;\n float: left;\n}\n\n.ace_gutter-cell.ace_error, .ace_icon.ace_error, .ace_icon.ace_error_fold {\n background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAABOFBMVEX/////////QRswFAb/Ui4wFAYwFAYwFAaWGAfDRymzOSH/PxswFAb/SiUwFAYwFAbUPRvjQiDllog5HhHdRybsTi3/Tyv9Tir+Syj/UC3////XurebMBIwFAb/RSHbPx/gUzfdwL3kzMivKBAwFAbbvbnhPx66NhowFAYwFAaZJg8wFAaxKBDZurf/RB6mMxb/SCMwFAYwFAbxQB3+RB4wFAb/Qhy4Oh+4QifbNRcwFAYwFAYwFAb/QRzdNhgwFAYwFAbav7v/Uy7oaE68MBK5LxLewr/r2NXewLswFAaxJw4wFAbkPRy2PyYwFAaxKhLm1tMwFAazPiQwFAaUGAb/QBrfOx3bvrv/VC/maE4wFAbRPBq6MRO8Qynew8Dp2tjfwb0wFAbx6eju5+by6uns4uH9/f36+vr/GkHjAAAAYnRSTlMAGt+64rnWu/bo8eAA4InH3+DwoN7j4eLi4xP99Nfg4+b+/u9B/eDs1MD1mO7+4PHg2MXa347g7vDizMLN4eG+Pv7i5evs/v79yu7S3/DV7/498Yv24eH+4ufQ3Ozu/v7+y13sRqwAAADLSURBVHjaZc/XDsFgGIBhtDrshlitmk2IrbHFqL2pvXf/+78DPokj7+Fz9qpU/9UXJIlhmPaTaQ6QPaz0mm+5gwkgovcV6GZzd5JtCQwgsxoHOvJO15kleRLAnMgHFIESUEPmawB9ngmelTtipwwfASilxOLyiV5UVUyVAfbG0cCPHig+GBkzAENHS0AstVF6bacZIOzgLmxsHbt2OecNgJC83JERmePUYq8ARGkJx6XtFsdddBQgZE2nPR6CICZhawjA4Fb/chv+399kfR+MMMDGOQAAAABJRU5ErkJggg==");\n background-repeat: no-repeat;\n background-position: 2px center;\n}\n\n.ace_gutter-cell.ace_warning, .ace_icon.ace_warning, .ace_icon.ace_warning_fold {\n background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAmVBMVEX///8AAAD///8AAAAAAABPSzb/5sAAAAB/blH/73z/ulkAAAAAAAD85pkAAAAAAAACAgP/vGz/rkDerGbGrV7/pkQICAf////e0IsAAAD/oED/qTvhrnUAAAD/yHD/njcAAADuv2r/nz//oTj/p064oGf/zHAAAAA9Nir/tFIAAAD/tlTiuWf/tkIAAACynXEAAAAAAAAtIRW7zBpBAAAAM3RSTlMAABR1m7RXO8Ln31Z36zT+neXe5OzooRDfn+TZ4p3h2hTf4t3k3ucyrN1K5+Xaks52Sfs9CXgrAAAAjklEQVR42o3PbQ+CIBQFYEwboPhSYgoYunIqqLn6/z8uYdH8Vmdnu9vz4WwXgN/xTPRD2+sgOcZjsge/whXZgUaYYvT8QnuJaUrjrHUQreGczuEafQCO/SJTufTbroWsPgsllVhq3wJEk2jUSzX3CUEDJC84707djRc5MTAQxoLgupWRwW6UB5fS++NV8AbOZgnsC7BpEAAAAABJRU5ErkJggg==");\n background-repeat: no-repeat;\n background-position: 2px center;\n}\n\n.ace_gutter-cell.ace_info, .ace_icon.ace_info {\n background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAAAAAA6mKC9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAAJ0Uk5TAAB2k804AAAAPklEQVQY02NgIB68QuO3tiLznjAwpKTgNyDbMegwisCHZUETUZV0ZqOquBpXj2rtnpSJT1AEnnRmL2OgGgAAIKkRQap2htgAAAAASUVORK5CYII=");\n background-repeat: no-repeat;\n background-position: 2px center;\n}\n.ace_dark .ace_gutter-cell.ace_info, .ace_dark .ace_icon.ace_info {\n background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAJFBMVEUAAAChoaGAgIAqKiq+vr6tra1ZWVmUlJSbm5s8PDxubm56enrdgzg3AAAAAXRSTlMAQObYZgAAAClJREFUeNpjYMAPdsMYHegyJZFQBlsUlMFVCWUYKkAZMxZAGdxlDMQBAG+TBP4B6RyJAAAAAElFTkSuQmCC");\n}\n\n.ace_icon_svg.ace_error {\n -webkit-mask-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMCAxNiI+CjxnIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlPSJyZWQiIHNoYXBlLXJlbmRlcmluZz0iZ2VvbWV0cmljUHJlY2lzaW9uIj4KPGNpcmNsZSBmaWxsPSJub25lIiBjeD0iOCIgY3k9IjgiIHI9IjciIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPGxpbmUgeDE9IjExIiB5MT0iNSIgeDI9IjUiIHkyPSIxMSIvPgo8bGluZSB4MT0iMTEiIHkxPSIxMSIgeDI9IjUiIHkyPSI1Ii8+CjwvZz4KPC9zdmc+");\n background-color: crimson;\n}\n.ace_icon_svg.ace_warning {\n -webkit-mask-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMCAxNiI+CjxnIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlPSJkYXJrb3JhbmdlIiBzaGFwZS1yZW5kZXJpbmc9Imdlb21ldHJpY1ByZWNpc2lvbiI+Cjxwb2x5Z29uIHN0cm9rZS1saW5lam9pbj0icm91bmQiIGZpbGw9Im5vbmUiIHBvaW50cz0iOCAxIDE1IDE1IDEgMTUgOCAxIi8+CjxyZWN0IHg9IjgiIHk9IjEyIiB3aWR0aD0iMC4wMSIgaGVpZ2h0PSIwLjAxIi8+CjxsaW5lIHgxPSI4IiB5MT0iNiIgeDI9IjgiIHkyPSIxMCIvPgo8L2c+Cjwvc3ZnPg==");\n background-color: darkorange;\n}\n.ace_icon_svg.ace_info {\n -webkit-mask-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMCAxNiI+CjxnIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlPSJibHVlIiBzaGFwZS1yZW5kZXJpbmc9Imdlb21ldHJpY1ByZWNpc2lvbiI+CjxjaXJjbGUgZmlsbD0ibm9uZSIgY3g9IjgiIGN5PSI4IiByPSI3IiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+Cjxwb2x5bGluZSBwb2ludHM9IjggMTEgOCA4Ii8+Cjxwb2x5bGluZSBwb2ludHM9IjkgOCA2IDgiLz4KPGxpbmUgeDE9IjEwIiB5MT0iMTEiIHgyPSI2IiB5Mj0iMTEiLz4KPHJlY3QgeD0iOCIgeT0iNSIgd2lkdGg9IjAuMDEiIGhlaWdodD0iMC4wMSIvPgo8L2c+Cjwvc3ZnPg==");\n background-color: royalblue;\n}\n\n.ace_icon_svg.ace_error_fold {\n -webkit-mask-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMCAxNiIgZmlsbD0ibm9uZSI+CiAgPHBhdGggZD0ibSAxOC45Mjk4NTEsNy44Mjk4MDc2IGMgMC4xNDYzNTMsNi4zMzc0NjA0IC02LjMyMzE0Nyw3Ljc3Nzg0NDQgLTcuNDc3OTEyLDcuNzc3ODQ0NCAtMi4xMDcyNzI2LC0wLjEyODc1IDUuMTE3Njc4LDAuMzU2MjQ5IDUuMDUxNjk4LC03Ljg3MDA2MTggLTAuNjA0NjcyLC04LjAwMzk3MzQ5IC03LjA3NzI3MDYsLTcuNTYzMTE4OSAtNC44NTczLC03LjQzMDM5NTU2IDEuNjA2LC0wLjExNTE0MjI1IDYuODk3NDg1LDEuMjYyNTQ1OTYgNy4yODM1MTQsNy41MjI2MTI5NiB6IiBmaWxsPSJjcmltc29uIiBzdHJva2Utd2lkdGg9IjIiLz4KICA8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0ibSA4LjExNDc1NjIsMi4wNTI5ODI4IGMgMy4zNDkxNjk4LDAgNi4wNjQxMzI4LDIuNjc2ODYyNyA2LjA2NDEzMjgsNS45Nzg5NTMgMCwzLjMwMjExMjIgLTIuNzE0OTYzLDUuOTc4OTIwMiAtNi4wNjQxMzI4LDUuOTc4OTIwMiAtMy4zNDkxNDczLDAgLTYuMDY0MTc3MiwtMi42NzY4MDggLTYuMDY0MTc3MiwtNS45Nzg5MjAyIDAuMDA1MzksLTMuMjk5ODg2MSAyLjcxNzI2NTYsLTUuOTczNjQwOCA2LjA2NDE3NzIsLTUuOTc4OTUzIHogbSAwLC0xLjczNTgyNzE5IGMgLTQuMzIxNDgzNiwwIC03LjgyNDc0MDM4LDMuNDU0MDE4NDkgLTcuODI0NzQwMzgsNy43MTQ3ODAxOSAwLDQuMjYwNzI4MiAzLjUwMzI1Njc4LDcuNzE0NzQ1MiA3LjgyNDc0MDM4LDcuNzE0NzQ1MiA0LjMyMTQ0OTgsMCA3LjgyNDY5OTgsLTMuNDU0MDE3IDcuODI0Njk5OCwtNy43MTQ3NDUyIDAsLTIuMDQ2MDkxNCAtMC44MjQzOTIsLTQuMDA4MzY3MiAtMi4yOTE3NTYsLTUuNDU1MTc0NiBDIDEyLjE4MDIyNSwxLjEyOTk2NDggMTAuMTkwMDEzLDAuMzE3MTU1NjEgOC4xMTQ3NTYyLDAuMzE3MTU1NjEgWiBNIDYuOTM3NDU2Myw4LjI0MDU5ODUgNC42NzE4Njg1LDEwLjQ4NTg1MiA2LjAwODY4MTQsMTEuODc2NzI4IDguMzE3MDAzNSw5LjYwMDc5MTEgMTAuNjI1MzM3LDExLjg3NjcyOCAxMS45NjIxMzgsMTAuNDg1ODUyIDkuNjk2NTUwOCw4LjI0MDU5ODUgMTEuOTYyMTM4LDYuMDA2ODA2NiAxMC41NzMyNDYsNC42Mzc0MzM1IDguMzE3MDAzNSw2Ljg3MzQyOTcgNi4wNjA3NjA3LDQuNjM3NDMzNSA0LjY3MTg2ODUsNi4wMDY4MDY2IFoiIGZpbGw9ImNyaW1zb24iIHN0cm9rZS13aWR0aD0iMiIvPgo8L3N2Zz4=");\n background-color: crimson;\n}\n.ace_icon_svg.ace_warning_fold {\n -webkit-mask-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAyMCAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xNC43NzY5IDE0LjczMzdMOC42NTE5MiAyLjQ4MzY5QzguMzI5NDYgMS44Mzg3NyA3LjQwOTEzIDEuODM4NzcgNy4wODY2NyAyLjQ4MzY5TDAuOTYxNjY5IDE0LjczMzdDMC42NzA3NzUgMTUuMzE1NSAxLjA5MzgzIDE2IDEuNzQ0MjkgMTZIMTMuOTk0M0MxNC42NDQ4IDE2IDE1LjA2NzggMTUuMzE1NSAxNC43NzY5IDE0LjczMzdaTTMuMTYwMDcgMTQuMjVMNy44NjkyOSA0LjgzMTU2TDEyLjU3ODUgMTQuMjVIMy4xNjAwN1pNOC43NDQyOSAxMS42MjVWMTMuMzc1SDYuOTk0MjlWMTEuNjI1SDguNzQ0MjlaTTYuOTk0MjkgMTAuNzVWNy4yNUg4Ljc0NDI5VjEwLjc1SDYuOTk0MjlaIiBmaWxsPSIjRUM3MjExIi8+CjxwYXRoIGQ9Ik0xMS4xOTkxIDIuOTUyMzhDMTAuODgwOSAyLjMxNDY3IDEwLjM1MzcgMS44MDUyNiA5LjcwNTUgMS41MDlMMTEuMDQxIDEuMDY5NzhDMTEuNjg4MyAwLjk0OTgxNCAxMi4zMzcgMS4yNzI2MyAxMi42MzE3IDEuODYxNDFMMTcuNjEzNiAxMS44MTYxQzE4LjM1MjcgMTMuMjkyOSAxNy41OTM4IDE1LjA4MDQgMTYuMDE4IDE1LjU3NDVDMTYuNDA0NCAxNC40NTA3IDE2LjMyMzEgMTMuMjE4OCAxNS43OTI0IDEyLjE1NTVMMTEuMTk5MSAyLjk1MjM4WiIgZmlsbD0iI0VDNzIxMSIvPgo8L3N2Zz4=");\n background-color: darkorange;\n}\n\n.ace_scrollbar {\n contain: strict;\n position: absolute;\n right: 0;\n bottom: 0;\n z-index: 6;\n}\n\n.ace_scrollbar-inner {\n position: absolute;\n cursor: text;\n left: 0;\n top: 0;\n}\n\n.ace_scrollbar-v{\n overflow-x: hidden;\n overflow-y: scroll;\n top: 0;\n}\n\n.ace_scrollbar-h {\n overflow-x: scroll;\n overflow-y: hidden;\n left: 0;\n}\n\n.ace_print-margin {\n position: absolute;\n height: 100%;\n}\n\n.ace_text-input {\n position: absolute;\n z-index: 0;\n width: 0.5em;\n height: 1em;\n opacity: 0;\n background: transparent;\n -moz-appearance: none;\n appearance: none;\n border: none;\n resize: none;\n outline: none;\n overflow: hidden;\n font: inherit;\n padding: 0 1px;\n margin: 0 -1px;\n contain: strict;\n -ms-user-select: text;\n -moz-user-select: text;\n -webkit-user-select: text;\n user-select: text;\n /*with `pre-line` chrome inserts   instead of space*/\n white-space: pre!important;\n}\n.ace_text-input.ace_composition {\n background: transparent;\n color: inherit;\n z-index: 1000;\n opacity: 1;\n}\n.ace_composition_placeholder { color: transparent }\n.ace_composition_marker { \n border-bottom: 1px solid;\n position: absolute;\n border-radius: 0;\n margin-top: 1px;\n}\n\n[ace_nocontext=true] {\n transform: none!important;\n filter: none!important;\n clip-path: none!important;\n mask : none!important;\n contain: none!important;\n perspective: none!important;\n mix-blend-mode: initial!important;\n z-index: auto;\n}\n\n.ace_layer {\n z-index: 1;\n position: absolute;\n overflow: hidden;\n /* workaround for chrome bug https://github.com/ajaxorg/ace/issues/2312*/\n word-wrap: normal;\n white-space: pre;\n height: 100%;\n width: 100%;\n box-sizing: border-box;\n /* setting pointer-events: auto; on node under the mouse, which changes\n during scroll, will break mouse wheel scrolling in Safari */\n pointer-events: none;\n}\n\n.ace_gutter-layer {\n position: relative;\n width: auto;\n text-align: right;\n pointer-events: auto;\n height: 1000000px;\n contain: style size layout;\n}\n\n.ace_text-layer {\n font: inherit !important;\n position: absolute;\n height: 1000000px;\n width: 1000000px;\n contain: style size layout;\n}\n\n.ace_text-layer > .ace_line, .ace_text-layer > .ace_line_group {\n contain: style size layout;\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n}\n\n.ace_hidpi .ace_text-layer,\n.ace_hidpi .ace_gutter-layer,\n.ace_hidpi .ace_content,\n.ace_hidpi .ace_gutter {\n contain: strict;\n}\n.ace_hidpi .ace_text-layer > .ace_line, \n.ace_hidpi .ace_text-layer > .ace_line_group {\n contain: strict;\n}\n\n.ace_cjk {\n display: inline-block;\n text-align: center;\n}\n\n.ace_cursor-layer {\n z-index: 4;\n}\n\n.ace_cursor {\n z-index: 4;\n position: absolute;\n box-sizing: border-box;\n border-left: 2px solid;\n /* workaround for smooth cursor repaintng whole screen in chrome */\n transform: translatez(0);\n}\n\n.ace_multiselect .ace_cursor {\n border-left-width: 1px;\n}\n\n.ace_slim-cursors .ace_cursor {\n border-left-width: 1px;\n}\n\n.ace_overwrite-cursors .ace_cursor {\n border-left-width: 0;\n border-bottom: 1px solid;\n}\n\n.ace_hidden-cursors .ace_cursor {\n opacity: 0.2;\n}\n\n.ace_hasPlaceholder .ace_hidden-cursors .ace_cursor {\n opacity: 0;\n}\n\n.ace_smooth-blinking .ace_cursor {\n transition: opacity 0.18s;\n}\n\n.ace_animate-blinking .ace_cursor {\n animation-duration: 1000ms;\n animation-timing-function: step-end;\n animation-name: blink-ace-animate;\n animation-iteration-count: infinite;\n}\n\n.ace_animate-blinking.ace_smooth-blinking .ace_cursor {\n animation-duration: 1000ms;\n animation-timing-function: ease-in-out;\n animation-name: blink-ace-animate-smooth;\n}\n \n@keyframes blink-ace-animate {\n from, to { opacity: 1; }\n 60% { opacity: 0; }\n}\n\n@keyframes blink-ace-animate-smooth {\n from, to { opacity: 1; }\n 45% { opacity: 1; }\n 60% { opacity: 0; }\n 85% { opacity: 0; }\n}\n\n.ace_marker-layer .ace_step, .ace_marker-layer .ace_stack {\n position: absolute;\n z-index: 3;\n}\n\n.ace_marker-layer .ace_selection {\n position: absolute;\n z-index: 5;\n}\n\n.ace_marker-layer .ace_bracket {\n position: absolute;\n z-index: 6;\n}\n\n.ace_marker-layer .ace_error_bracket {\n position: absolute;\n border-bottom: 1px solid #DE5555;\n border-radius: 0;\n}\n\n.ace_marker-layer .ace_active-line {\n position: absolute;\n z-index: 2;\n}\n\n.ace_marker-layer .ace_selected-word {\n position: absolute;\n z-index: 4;\n box-sizing: border-box;\n}\n\n.ace_line .ace_fold {\n box-sizing: border-box;\n\n display: inline-block;\n height: 11px;\n margin-top: -2px;\n vertical-align: middle;\n\n background-image:\n url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII="),\n url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACJJREFUeNpi+P//fxgTAwPDBxDxD078RSX+YeEyDFMCIMAAI3INmXiwf2YAAAAASUVORK5CYII=");\n background-repeat: no-repeat, repeat-x;\n background-position: center center, top left;\n color: transparent;\n\n border: 1px solid black;\n border-radius: 2px;\n\n cursor: pointer;\n pointer-events: auto;\n}\n\n.ace_dark .ace_fold {\n}\n\n.ace_fold:hover{\n background-image:\n url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII="),\n url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACBJREFUeNpi+P//fz4TAwPDZxDxD5X4i5fLMEwJgAADAEPVDbjNw87ZAAAAAElFTkSuQmCC");\n}\n\n.ace_tooltip {\n background-color: #f5f5f5;\n border: 1px solid gray;\n border-radius: 1px;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);\n color: black;\n max-width: 100%;\n padding: 3px 4px;\n position: fixed;\n z-index: 999999;\n box-sizing: border-box;\n cursor: default;\n white-space: pre-wrap;\n word-wrap: break-word;\n line-height: normal;\n font-style: normal;\n font-weight: normal;\n letter-spacing: normal;\n pointer-events: none;\n overflow: auto;\n max-width: min(60em, 66vw);\n}\n.ace_tooltip pre {\n white-space: pre-wrap;\n}\n\n.ace_tooltip.ace_dark {\n background-color: #636363;\n color: #fff;\n}\n\n.ace_tooltip:focus {\n outline: 1px solid #5E9ED6;\n}\n\n.ace_icon {\n display: inline-block;\n width: 18px;\n vertical-align: top;\n}\n\n.ace_icon_svg {\n display: inline-block;\n width: 12px;\n vertical-align: top;\n -webkit-mask-repeat: no-repeat;\n -webkit-mask-size: 12px;\n -webkit-mask-position: center;\n}\n\n.ace_folding-enabled > .ace_gutter-cell, .ace_folding-enabled > .ace_gutter-cell_svg-icons {\n padding-right: 13px;\n}\n\n.ace_fold-widget {\n box-sizing: border-box;\n\n margin: 0 -12px 0 1px;\n display: none;\n width: 11px;\n vertical-align: top;\n\n background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42mWKsQ0AMAzC8ixLlrzQjzmBiEjp0A6WwBCSPgKAXoLkqSot7nN3yMwR7pZ32NzpKkVoDBUxKAAAAABJRU5ErkJggg==");\n background-repeat: no-repeat;\n background-position: center;\n\n border-radius: 3px;\n \n border: 1px solid transparent;\n cursor: pointer;\n}\n\n.ace_folding-enabled .ace_fold-widget {\n display: inline-block; \n}\n\n.ace_fold-widget.ace_end {\n background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42m3HwQkAMAhD0YzsRchFKI7sAikeWkrxwScEB0nh5e7KTPWimZki4tYfVbX+MNl4pyZXejUO1QAAAABJRU5ErkJggg==");\n}\n\n.ace_fold-widget.ace_closed {\n background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAGCAYAAAAG5SQMAAAAOUlEQVR42jXKwQkAMAgDwKwqKD4EwQ26sSOkVWjgIIHAzPiCgaqiqnJHZnKICBERHN194O5b9vbLuAVRL+l0YWnZAAAAAElFTkSuQmCCXA==");\n}\n\n.ace_fold-widget:hover {\n border: 1px solid rgba(0, 0, 0, 0.3);\n background-color: rgba(255, 255, 255, 0.2);\n box-shadow: 0 1px 1px rgba(255, 255, 255, 0.7);\n}\n\n.ace_fold-widget:active {\n border: 1px solid rgba(0, 0, 0, 0.4);\n background-color: rgba(0, 0, 0, 0.05);\n box-shadow: 0 1px 1px rgba(255, 255, 255, 0.8);\n}\n/**\n * Dark version for fold widgets\n */\n.ace_dark .ace_fold-widget {\n background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHklEQVQIW2P4//8/AzoGEQ7oGCaLLAhWiSwB146BAQCSTPYocqT0AAAAAElFTkSuQmCC");\n}\n.ace_dark .ace_fold-widget.ace_end {\n background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAH0lEQVQIW2P4//8/AxQ7wNjIAjDMgC4AxjCVKBirIAAF0kz2rlhxpAAAAABJRU5ErkJggg==");\n}\n.ace_dark .ace_fold-widget.ace_closed {\n background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAFCAYAAACAcVaiAAAAHElEQVQIW2P4//+/AxAzgDADlOOAznHAKgPWAwARji8UIDTfQQAAAABJRU5ErkJggg==");\n}\n.ace_dark .ace_fold-widget:hover {\n box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);\n background-color: rgba(255, 255, 255, 0.1);\n}\n.ace_dark .ace_fold-widget:active {\n box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);\n}\n\n.ace_inline_button {\n border: 1px solid lightgray;\n display: inline-block;\n margin: -1px 8px;\n padding: 0 5px;\n pointer-events: auto;\n cursor: pointer;\n}\n.ace_inline_button:hover {\n border-color: gray;\n background: rgba(200,200,200,0.2);\n display: inline-block;\n pointer-events: auto;\n}\n\n.ace_fold-widget.ace_invalid {\n background-color: #FFB4B4;\n border-color: #DE5555;\n}\n\n.ace_fade-fold-widgets .ace_fold-widget {\n transition: opacity 0.4s ease 0.05s;\n opacity: 0;\n}\n\n.ace_fade-fold-widgets:hover .ace_fold-widget {\n transition: opacity 0.05s ease 0.05s;\n opacity:1;\n}\n\n.ace_underline {\n text-decoration: underline;\n}\n\n.ace_bold {\n font-weight: bold;\n}\n\n.ace_nobold .ace_bold {\n font-weight: normal;\n}\n\n.ace_italic {\n font-style: italic;\n}\n\n\n.ace_error-marker {\n background-color: rgba(255, 0, 0,0.2);\n position: absolute;\n z-index: 9;\n}\n\n.ace_highlight-marker {\n background-color: rgba(255, 255, 0,0.2);\n position: absolute;\n z-index: 8;\n}\n\n.ace_mobile-menu {\n position: absolute;\n line-height: 1.5;\n border-radius: 4px;\n -ms-user-select: none;\n -moz-user-select: none;\n -webkit-user-select: none;\n user-select: none;\n background: white;\n box-shadow: 1px 3px 2px grey;\n border: 1px solid #dcdcdc;\n color: black;\n}\n.ace_dark > .ace_mobile-menu {\n background: #333;\n color: #ccc;\n box-shadow: 1px 3px 2px grey;\n border: 1px solid #444;\n\n}\n.ace_mobile-button {\n padding: 2px;\n cursor: pointer;\n overflow: hidden;\n}\n.ace_mobile-button:hover {\n background-color: #eee;\n opacity:1;\n}\n.ace_mobile-button:active {\n background-color: #ddd;\n}\n\n.ace_placeholder {\n font-family: arial;\n transform: scale(0.9);\n transform-origin: left;\n white-space: pre;\n opacity: 0.7;\n margin: 0 10px;\n}\n\n.ace_ghost_text {\n opacity: 0.5;\n font-style: italic;\n white-space: pre;\n}\n\n.ace_screenreader-only {\n position:absolute;\n left:-10000px;\n top:auto;\n width:1px;\n height:1px;\n overflow:hidden;\n}'})),ace.define("ace/layer/decorators",["require","exports","module","ace/lib/dom","ace/lib/oop","ace/lib/event_emitter"],(function(e,t,n){"use strict";var i=e("../lib/dom"),o=e("../lib/oop"),r=e("../lib/event_emitter").EventEmitter,s=function(){function e(e,t){this.canvas=i.createElement("canvas"),this.renderer=t,this.pixelRatio=1,this.maxHeight=t.layerConfig.maxHeight,this.lineHeight=t.layerConfig.lineHeight,this.canvasHeight=e.parent.scrollHeight,this.heightRatio=this.canvasHeight/this.maxHeight,this.canvasWidth=e.width,this.minDecorationHeight=2*this.pixelRatio|0,this.halfMinDecorationHeight=this.minDecorationHeight/2|0,this.canvas.width=this.canvasWidth,this.canvas.height=this.canvasHeight,this.canvas.style.top="0px",this.canvas.style.right="0px",this.canvas.style.zIndex="7px",this.canvas.style.position="absolute",this.colors={},this.colors.dark={error:"rgba(255, 18, 18, 1)",warning:"rgba(18, 136, 18, 1)",info:"rgba(18, 18, 136, 1)"},this.colors.light={error:"rgb(255,51,51)",warning:"rgb(32,133,72)",info:"rgb(35,68,138)"},e.element.appendChild(this.canvas)}return e.prototype.$updateDecorators=function(e){var t=!0===this.renderer.theme.isDark?this.colors.dark:this.colors.light;e&&(this.maxHeight=e.maxHeight,this.lineHeight=e.lineHeight,this.canvasHeight=e.height,(e.lastRow+1)*this.lineHeightt.priority?1:0}));for(var r=this.renderer.session.$foldData,s=0;sthis.canvasHeight&&(d=this.canvasHeight-this.halfMinDecorationHeight),u=Math.round(d-this.halfMinDecorationHeight),h=Math.round(d+this.halfMinDecorationHeight)}n.fillStyle=t[i[s].type]||null,n.fillRect(0,c,this.canvasWidth,h-u)}}var p=this.renderer.session.selection.getCursor();p&&(l=this.compensateFoldRows(p.row,r),c=Math.round((p.row-l)*this.lineHeight*this.heightRatio),n.fillStyle="rgba(0, 0, 0, 0.5)",n.fillRect(0,c,this.canvasWidth,2))},e.prototype.compensateFoldRows=function(e,t){var n=0;if(t&&t.length>0)for(var i=0;it[i].start.row&&e=t[i].end.row&&(n+=t[i].end.row-t[i].start.row);return n},e}();o.implement(s.prototype,r),t.Decorator=s})),ace.define("ace/virtual_renderer",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/config","ace/layer/gutter","ace/layer/marker","ace/layer/text","ace/layer/cursor","ace/scrollbar","ace/scrollbar","ace/scrollbar_custom","ace/scrollbar_custom","ace/renderloop","ace/layer/font_metrics","ace/lib/event_emitter","ace/css/editor-css","ace/layer/decorators","ace/lib/useragent"],(function(e,t,n){"use strict";var i=e("./lib/oop"),o=e("./lib/dom"),r=e("./lib/lang"),s=e("./config"),a=e("./layer/gutter").Gutter,l=e("./layer/marker").Marker,c=e("./layer/text").Text,u=e("./layer/cursor").Cursor,h=e("./scrollbar").HScrollBar,d=e("./scrollbar").VScrollBar,p=e("./scrollbar_custom").HScrollBar,g=e("./scrollbar_custom").VScrollBar,m=e("./renderloop").RenderLoop,f=e("./layer/font_metrics").FontMetrics,y=e("./lib/event_emitter").EventEmitter,b=e("./css/editor-css"),v=e("./layer/decorators").Decorator,w=e("./lib/useragent");o.importCssString(b,"ace_editor.css",!1);var A=function(){function e(e,t){var n=this;this.container=e||o.createElement("div"),o.addCssClass(this.container,"ace_editor"),o.HI_DPI&&o.addCssClass(this.container,"ace_hidpi"),this.setTheme(t),null==s.get("useStrictCSP")&&s.set("useStrictCSP",!1),this.$gutter=o.createElement("div"),this.$gutter.className="ace_gutter",this.container.appendChild(this.$gutter),this.$gutter.setAttribute("aria-hidden",!0),this.scroller=o.createElement("div"),this.scroller.className="ace_scroller",this.container.appendChild(this.scroller),this.content=o.createElement("div"),this.content.className="ace_content",this.scroller.appendChild(this.content),this.$gutterLayer=new a(this.$gutter),this.$gutterLayer.on("changeGutterWidth",this.onGutterResize.bind(this)),this.$markerBack=new l(this.content);var i=this.$textLayer=new c(this.content);this.canvas=i.element,this.$markerFront=new l(this.content),this.$cursorLayer=new u(this.content),this.$horizScroll=!1,this.$vScroll=!1,this.scrollBar=this.scrollBarV=new d(this.container,this),this.scrollBarH=new h(this.container,this),this.scrollBarV.on("scroll",(function(e){n.$scrollAnimation||n.session.setScrollTop(e.data-n.scrollMargin.top)})),this.scrollBarH.on("scroll",(function(e){n.$scrollAnimation||n.session.setScrollLeft(e.data-n.scrollMargin.left)})),this.scrollTop=0,this.scrollLeft=0,this.cursorPos={row:0,column:0},this.$fontMetrics=new f(this.container),this.$textLayer.$setFontMetrics(this.$fontMetrics),this.$textLayer.on("changeCharacterSize",(function(e){n.updateCharacterSize(),n.onResize(!0,n.gutterWidth,n.$size.width,n.$size.height),n._signal("changeCharacterSize",e)})),this.$size={width:0,height:0,scrollerHeight:0,scrollerWidth:0,$dirty:!0},this.layerConfig={width:1,padding:0,firstRow:0,firstRowScreen:0,lastRow:0,lineHeight:0,characterWidth:0,minHeight:1,maxHeight:1,offset:0,height:1,gutterOffset:1},this.scrollMargin={left:0,right:0,top:0,bottom:0,v:0,h:0},this.margin={left:0,right:0,top:0,bottom:0,v:0,h:0},this.$keepTextAreaAtCursor=!w.isIOS,this.$loop=new m(this.$renderChanges.bind(this),this.container.ownerDocument.defaultView),this.$loop.schedule(this.CHANGE_FULL),this.updateCharacterSize(),this.setPadding(4),this.$addResizeObserver(),s.resetOptions(this),s._signal("renderer",this)}return e.prototype.updateCharacterSize=function(){this.$textLayer.allowBoldFonts!=this.$allowBoldFonts&&(this.$allowBoldFonts=this.$textLayer.allowBoldFonts,this.setStyle("ace_nobold",!this.$allowBoldFonts)),this.layerConfig.characterWidth=this.characterWidth=this.$textLayer.getCharacterWidth(),this.layerConfig.lineHeight=this.lineHeight=this.$textLayer.getLineHeight(),this.$updatePrintMargin(),o.setStyle(this.scroller.style,"line-height",this.lineHeight+"px")},e.prototype.setSession=function(e){this.session&&this.session.doc.off("changeNewLineMode",this.onChangeNewLineMode),this.session=e,e&&this.scrollMargin.top&&e.getScrollTop()<=0&&e.setScrollTop(-this.scrollMargin.top),this.$cursorLayer.setSession(e),this.$markerBack.setSession(e),this.$markerFront.setSession(e),this.$gutterLayer.setSession(e),this.$textLayer.setSession(e),e&&(this.$loop.schedule(this.CHANGE_FULL),this.session.$setFontMetrics(this.$fontMetrics),this.scrollBarH.scrollLeft=this.scrollBarV.scrollTop=null,this.onChangeNewLineMode=this.onChangeNewLineMode.bind(this),this.onChangeNewLineMode(),this.session.doc.on("changeNewLineMode",this.onChangeNewLineMode))},e.prototype.updateLines=function(e,t,n){if(void 0===t&&(t=1/0),this.$changedLines?(this.$changedLines.firstRow>e&&(this.$changedLines.firstRow=e),this.$changedLines.lastRowthis.layerConfig.lastRow||this.$loop.schedule(this.CHANGE_LINES)},e.prototype.onChangeNewLineMode=function(){this.$loop.schedule(this.CHANGE_TEXT),this.$textLayer.$updateEolChar(),this.session.$bidiHandler.setEolChar(this.$textLayer.EOL_CHAR)},e.prototype.onChangeTabSize=function(){this.$loop.schedule(this.CHANGE_TEXT|this.CHANGE_MARKER),this.$textLayer.onChangeTabSize()},e.prototype.updateText=function(){this.$loop.schedule(this.CHANGE_TEXT)},e.prototype.updateFull=function(e){e?this.$renderChanges(this.CHANGE_FULL,!0):this.$loop.schedule(this.CHANGE_FULL)},e.prototype.updateFontSize=function(){this.$textLayer.checkForSizeChanges()},e.prototype.$updateSizeAsync=function(){this.$loop.pending?this.$size.$dirty=!0:this.onResize()},e.prototype.onResize=function(e,t,n,i){if(!(this.resizing>2)){this.resizing>0?this.resizing++:this.resizing=e?1:0;var o=this.container;i||(i=o.clientHeight||o.scrollHeight),n||(n=o.clientWidth||o.scrollWidth);var r=this.$updateCachedSize(e,t,n,i);if(this.$resizeTimer&&this.$resizeTimer.cancel(),!this.$size.scrollerHeight||!n&&!i)return this.resizing=0;e&&(this.$gutterLayer.$padding=null),e?this.$renderChanges(r|this.$changes,!0):this.$loop.schedule(r|this.$changes),this.resizing&&(this.resizing=0),this.scrollBarH.scrollLeft=this.scrollBarV.scrollTop=null,this.$customScrollbar&&this.$updateCustomScrollbar(!0)}},e.prototype.$updateCachedSize=function(e,t,n,i){i-=this.$extraHeight||0;var r=0,s=this.$size,a={width:s.width,height:s.height,scrollerHeight:s.scrollerHeight,scrollerWidth:s.scrollerWidth};if(i&&(e||s.height!=i)&&(s.height=i,r|=this.CHANGE_SIZE,s.scrollerHeight=s.height,this.$horizScroll&&(s.scrollerHeight-=this.scrollBarH.getHeight()),this.scrollBarV.setHeight(s.scrollerHeight),this.scrollBarV.element.style.bottom=this.scrollBarH.getHeight()+"px",r|=this.CHANGE_SCROLL),n&&(e||s.width!=n)){r|=this.CHANGE_SIZE,s.width=n,null==t&&(t=this.$showGutter?this.$gutter.offsetWidth:0),this.gutterWidth=t,o.setStyle(this.scrollBarH.element.style,"left",t+"px"),o.setStyle(this.scroller.style,"left",t+this.margin.left+"px"),s.scrollerWidth=Math.max(0,n-t-this.scrollBarV.getWidth()-this.margin.h),o.setStyle(this.$gutter.style,"left",this.margin.left+"px");var l=this.scrollBarV.getWidth()+"px";o.setStyle(this.scrollBarH.element.style,"right",l),o.setStyle(this.scroller.style,"right",l),o.setStyle(this.scroller.style,"bottom",this.scrollBarH.getHeight()),this.scrollBarH.setWidth(s.scrollerWidth),(this.session&&this.session.getUseWrapMode()&&this.adjustWrapLimit()||e)&&(r|=this.CHANGE_FULL)}return s.$dirty=!n||!i,r&&this._signal("resize",a),r},e.prototype.onGutterResize=function(e){var t=this.$showGutter?e:0;t!=this.gutterWidth&&(this.$changes|=this.$updateCachedSize(!0,t,this.$size.width,this.$size.height)),this.session.getUseWrapMode()&&this.adjustWrapLimit()||this.$size.$dirty?this.$loop.schedule(this.CHANGE_FULL):this.$computeLayerConfig()},e.prototype.adjustWrapLimit=function(){var e=this.$size.scrollerWidth-2*this.$padding,t=Math.floor(e/this.characterWidth);return this.session.adjustWrapLimit(t,this.$showPrintMargin&&this.$printMarginColumn)},e.prototype.setAnimatedScroll=function(e){this.setOption("animatedScroll",e)},e.prototype.getAnimatedScroll=function(){return this.$animatedScroll},e.prototype.setShowInvisibles=function(e){this.setOption("showInvisibles",e),this.session.$bidiHandler.setShowInvisibles(e)},e.prototype.getShowInvisibles=function(){return this.getOption("showInvisibles")},e.prototype.getDisplayIndentGuides=function(){return this.getOption("displayIndentGuides")},e.prototype.setDisplayIndentGuides=function(e){this.setOption("displayIndentGuides",e)},e.prototype.getHighlightIndentGuides=function(){return this.getOption("highlightIndentGuides")},e.prototype.setHighlightIndentGuides=function(e){this.setOption("highlightIndentGuides",e)},e.prototype.setShowPrintMargin=function(e){this.setOption("showPrintMargin",e)},e.prototype.getShowPrintMargin=function(){return this.getOption("showPrintMargin")},e.prototype.setPrintMarginColumn=function(e){this.setOption("printMarginColumn",e)},e.prototype.getPrintMarginColumn=function(){return this.getOption("printMarginColumn")},e.prototype.getShowGutter=function(){return this.getOption("showGutter")},e.prototype.setShowGutter=function(e){return this.setOption("showGutter",e)},e.prototype.getFadeFoldWidgets=function(){return this.getOption("fadeFoldWidgets")},e.prototype.setFadeFoldWidgets=function(e){this.setOption("fadeFoldWidgets",e)},e.prototype.setHighlightGutterLine=function(e){this.setOption("highlightGutterLine",e)},e.prototype.getHighlightGutterLine=function(){return this.getOption("highlightGutterLine")},e.prototype.$updatePrintMargin=function(){if(this.$showPrintMargin||this.$printMarginEl){if(!this.$printMarginEl){var e=o.createElement("div");e.className="ace_layer ace_print-margin-layer",this.$printMarginEl=o.createElement("div"),this.$printMarginEl.className="ace_print-margin",e.appendChild(this.$printMarginEl),this.content.insertBefore(e,this.content.firstChild)}var t=this.$printMarginEl.style;t.left=Math.round(this.characterWidth*this.$printMarginColumn+this.$padding)+"px",t.visibility=this.$showPrintMargin?"visible":"hidden",this.session&&-1==this.session.$wrap&&this.adjustWrapLimit()}},e.prototype.getContainerElement=function(){return this.container},e.prototype.getMouseEventTarget=function(){return this.scroller},e.prototype.getTextAreaContainer=function(){return this.container},e.prototype.$moveTextAreaToCursor=function(){if(!this.$isMousePressed){var e=this.textarea.style,t=this.$composition;if(this.$keepTextAreaAtCursor||t){var n=this.$cursorLayer.$pixelPos;if(n){t&&t.markerRange&&(n=this.$cursorLayer.getPixelPosition(t.markerRange.start,!0));var i=this.layerConfig,r=n.top,s=n.left;r-=i.offset;var a=t&&t.useTextareaForIME||w.isMobile?this.lineHeight:1;if(r<0||r>i.height-a)o.translate(this.textarea,0,0);else{var l=1,c=this.$size.height-a;if(t)if(t.useTextareaForIME){var u=this.textarea.value;l=this.characterWidth*this.session.$getStringScreenWidth(u)[0]}else r+=this.lineHeight+2;else r+=this.lineHeight;(s-=this.scrollLeft)>this.$size.scrollerWidth-l&&(s=this.$size.scrollerWidth-l),s+=this.gutterWidth+this.margin.left,o.setStyle(e,"height",a+"px"),o.setStyle(e,"width",l+"px"),o.translate(this.textarea,Math.min(s,this.$size.scrollerWidth-l),Math.min(r,c))}}}else o.translate(this.textarea,-100,0)}},e.prototype.getFirstVisibleRow=function(){return this.layerConfig.firstRow},e.prototype.getFirstFullyVisibleRow=function(){return this.layerConfig.firstRow+(0===this.layerConfig.offset?0:1)},e.prototype.getLastFullyVisibleRow=function(){var e=this.layerConfig,t=e.lastRow;return this.session.documentToScreenRow(t,0)*e.lineHeight-this.session.getScrollTop()>e.height-e.lineHeight?t-1:t},e.prototype.getLastVisibleRow=function(){return this.layerConfig.lastRow},e.prototype.setPadding=function(e){this.$padding=e,this.$textLayer.setPadding(e),this.$cursorLayer.setPadding(e),this.$markerFront.setPadding(e),this.$markerBack.setPadding(e),this.$loop.schedule(this.CHANGE_FULL),this.$updatePrintMargin()},e.prototype.setScrollMargin=function(e,t,n,i){var o=this.scrollMargin;o.top=0|e,o.bottom=0|t,o.right=0|i,o.left=0|n,o.v=o.top+o.bottom,o.h=o.left+o.right,o.top&&this.scrollTop<=0&&this.session&&this.session.setScrollTop(-o.top),this.updateFull()},e.prototype.setMargin=function(e,t,n,i){var o=this.margin;o.top=0|e,o.bottom=0|t,o.right=0|i,o.left=0|n,o.v=o.top+o.bottom,o.h=o.left+o.right,this.$updateCachedSize(!0,this.gutterWidth,this.$size.width,this.$size.height),this.updateFull()},e.prototype.getHScrollBarAlwaysVisible=function(){return this.$hScrollBarAlwaysVisible},e.prototype.setHScrollBarAlwaysVisible=function(e){this.setOption("hScrollBarAlwaysVisible",e)},e.prototype.getVScrollBarAlwaysVisible=function(){return this.$vScrollBarAlwaysVisible},e.prototype.setVScrollBarAlwaysVisible=function(e){this.setOption("vScrollBarAlwaysVisible",e)},e.prototype.$updateScrollBarV=function(){var e=this.layerConfig.maxHeight,t=this.$size.scrollerHeight;!this.$maxLines&&this.$scrollPastEnd&&(e-=(t-this.lineHeight)*this.$scrollPastEnd,this.scrollTop>e-t&&(e=this.scrollTop+t,this.scrollBarV.scrollTop=null)),this.scrollBarV.setScrollHeight(e+this.scrollMargin.v),this.scrollBarV.setScrollTop(this.scrollTop+this.scrollMargin.top)},e.prototype.$updateScrollBarH=function(){this.scrollBarH.setScrollWidth(this.layerConfig.width+2*this.$padding+this.scrollMargin.h),this.scrollBarH.setScrollLeft(this.scrollLeft+this.scrollMargin.left)},e.prototype.freeze=function(){this.$frozen=!0},e.prototype.unfreeze=function(){this.$frozen=!1},e.prototype.$renderChanges=function(e,t){if(this.$changes&&(e|=this.$changes,this.$changes=0),this.session&&this.container.offsetWidth&&!this.$frozen&&(e||t)){if(this.$size.$dirty)return this.$changes|=e,this.onResize(!0);this.lineHeight||this.$textLayer.checkForSizeChanges(),this._signal("beforeRender",e),this.session&&this.session.$bidiHandler&&this.session.$bidiHandler.updateCharacterWidths(this.$fontMetrics);var n=this.layerConfig;if(e&this.CHANGE_FULL||e&this.CHANGE_SIZE||e&this.CHANGE_TEXT||e&this.CHANGE_LINES||e&this.CHANGE_SCROLL||e&this.CHANGE_H_SCROLL){if(e|=this.$computeLayerConfig()|this.$loop.clear(),n.firstRow!=this.layerConfig.firstRow&&n.firstRowScreen==this.layerConfig.firstRowScreen){var i=this.scrollTop+(n.firstRow-Math.max(this.layerConfig.firstRow,0))*this.lineHeight;i>0&&(this.scrollTop=i,e|=this.CHANGE_SCROLL,e|=this.$computeLayerConfig()|this.$loop.clear())}n=this.layerConfig,this.$updateScrollBarV(),e&this.CHANGE_H_SCROLL&&this.$updateScrollBarH(),o.translate(this.content,-this.scrollLeft,-n.offset);var r=n.width+2*this.$padding+"px",s=n.minHeight+"px";o.setStyle(this.content.style,"width",r),o.setStyle(this.content.style,"height",s)}if(e&this.CHANGE_H_SCROLL&&(o.translate(this.content,-this.scrollLeft,-n.offset),this.scroller.className=this.scrollLeft<=0?"ace_scroller ":"ace_scroller ace_scroll-left ",this.enableKeyboardAccessibility&&(this.scroller.className+=this.keyboardFocusClassName)),e&this.CHANGE_FULL)return this.$changedLines=null,this.$textLayer.update(n),this.$showGutter&&this.$gutterLayer.update(n),this.$customScrollbar&&this.$scrollDecorator.$updateDecorators(n),this.$markerBack.update(n),this.$markerFront.update(n),this.$cursorLayer.update(n),this.$moveTextAreaToCursor(),void this._signal("afterRender",e);if(e&this.CHANGE_SCROLL)return this.$changedLines=null,e&this.CHANGE_TEXT||e&this.CHANGE_LINES?this.$textLayer.update(n):this.$textLayer.scrollLines(n),this.$showGutter&&(e&this.CHANGE_GUTTER||e&this.CHANGE_LINES?this.$gutterLayer.update(n):this.$gutterLayer.scrollLines(n)),this.$customScrollbar&&this.$scrollDecorator.$updateDecorators(n),this.$markerBack.update(n),this.$markerFront.update(n),this.$cursorLayer.update(n),this.$moveTextAreaToCursor(),void this._signal("afterRender",e);e&this.CHANGE_TEXT?(this.$changedLines=null,this.$textLayer.update(n),this.$showGutter&&this.$gutterLayer.update(n),this.$customScrollbar&&this.$scrollDecorator.$updateDecorators(n)):e&this.CHANGE_LINES?((this.$updateLines()||e&this.CHANGE_GUTTER&&this.$showGutter)&&this.$gutterLayer.update(n),this.$customScrollbar&&this.$scrollDecorator.$updateDecorators(n)):e&this.CHANGE_TEXT||e&this.CHANGE_GUTTER?(this.$showGutter&&this.$gutterLayer.update(n),this.$customScrollbar&&this.$scrollDecorator.$updateDecorators(n)):e&this.CHANGE_CURSOR&&(this.$highlightGutterLine&&this.$gutterLayer.updateLineHighlight(n),this.$customScrollbar&&this.$scrollDecorator.$updateDecorators(n)),e&this.CHANGE_CURSOR&&(this.$cursorLayer.update(n),this.$moveTextAreaToCursor()),e&(this.CHANGE_MARKER|this.CHANGE_MARKER_FRONT)&&this.$markerFront.update(n),e&(this.CHANGE_MARKER|this.CHANGE_MARKER_BACK)&&this.$markerBack.update(n),this._signal("afterRender",e)}else this.$changes|=e},e.prototype.$autosize=function(){var e=this.session.getScreenLength()*this.lineHeight,t=this.$maxLines*this.lineHeight,n=Math.min(t,Math.max((this.$minLines||1)*this.lineHeight,e))+this.scrollMargin.v+(this.$extraHeight||0);this.$horizScroll&&(n+=this.scrollBarH.getHeight()),this.$maxPixelHeight&&n>this.$maxPixelHeight&&(n=this.$maxPixelHeight);var i=!(n<=2*this.lineHeight)&&e>t;if(n!=this.desiredHeight||this.$size.height!=this.desiredHeight||i!=this.$vScroll){i!=this.$vScroll&&(this.$vScroll=i,this.scrollBarV.setVisible(i));var o=this.container.clientWidth;this.container.style.height=n+"px",this.$updateCachedSize(!0,this.$gutterWidth,o,n),this.desiredHeight=n,this._signal("autosize")}},e.prototype.$computeLayerConfig=function(){var e=this.session,t=this.$size,n=t.height<=2*this.lineHeight,i=this.session.getScreenLength()*this.lineHeight,o=this.$getLongestLine(),r=!n&&(this.$hScrollBarAlwaysVisible||t.scrollerWidth-o-2*this.$padding<0),s=this.$horizScroll!==r;s&&(this.$horizScroll=r,this.scrollBarH.setVisible(r));var a=this.$vScroll;this.$maxLines&&this.lineHeight>1&&this.$autosize();var l=t.scrollerHeight+this.lineHeight,c=!this.$maxLines&&this.$scrollPastEnd?(t.scrollerHeight-this.lineHeight)*this.$scrollPastEnd:0;i+=c;var u=this.scrollMargin;this.session.setScrollTop(Math.max(-u.top,Math.min(this.scrollTop,i-t.scrollerHeight+u.bottom))),this.session.setScrollLeft(Math.max(-u.left,Math.min(this.scrollLeft,o+2*this.$padding-t.scrollerWidth+u.right)));var h=!n&&(this.$vScrollBarAlwaysVisible||t.scrollerHeight-i+c<0||this.scrollTop>u.top),d=a!==h;d&&(this.$vScroll=h,this.scrollBarV.setVisible(h));var p,g,m=this.scrollTop%this.lineHeight,f=Math.ceil(l/this.lineHeight)-1,y=Math.max(0,Math.round((this.scrollTop-m)/this.lineHeight)),b=y+f,v=this.lineHeight;y=e.screenToDocumentRow(y,0);var w=e.getFoldLine(y);w&&(y=w.start.row),p=e.documentToScreenRow(y,0),g=e.getRowLength(y)*v,b=Math.min(e.screenToDocumentRow(b,0),e.getLength()-1),l=t.scrollerHeight+e.getRowLength(b)*v+g,m=this.scrollTop-p*v;var A=0;return(this.layerConfig.width!=o||s)&&(A=this.CHANGE_H_SCROLL),(s||d)&&(A|=this.$updateCachedSize(!0,this.gutterWidth,t.width,t.height),this._signal("scrollbarVisibilityChanged"),d&&(o=this.$getLongestLine())),this.layerConfig={width:o,padding:this.$padding,firstRow:y,firstRowScreen:p,lastRow:b,lineHeight:v,characterWidth:this.characterWidth,minHeight:l,maxHeight:i,offset:m,gutterOffset:v?Math.max(0,Math.ceil((m+t.height-t.scrollerHeight)/v)):0,height:this.$size.scrollerHeight},this.session.$bidiHandler&&this.session.$bidiHandler.setContentWidth(o-this.$padding),A},e.prototype.$updateLines=function(){if(this.$changedLines){var e=this.$changedLines.firstRow,t=this.$changedLines.lastRow;this.$changedLines=null;var n=this.layerConfig;if(!(e>n.lastRow+1||tthis.$textLayer.MAX_LINE_LENGTH&&(e=this.$textLayer.MAX_LINE_LENGTH+30),Math.max(this.$size.scrollerWidth-2*this.$padding,Math.round(e*this.characterWidth))},e.prototype.updateFrontMarkers=function(){this.$markerFront.setMarkers(this.session.getMarkers(!0)),this.$loop.schedule(this.CHANGE_MARKER_FRONT)},e.prototype.updateBackMarkers=function(){this.$markerBack.setMarkers(this.session.getMarkers()),this.$loop.schedule(this.CHANGE_MARKER_BACK)},e.prototype.addGutterDecoration=function(e,t){this.$gutterLayer.addGutterDecoration(e,t)},e.prototype.removeGutterDecoration=function(e,t){this.$gutterLayer.removeGutterDecoration(e,t)},e.prototype.updateBreakpoints=function(e){this.$loop.schedule(this.CHANGE_GUTTER)},e.prototype.setAnnotations=function(e){this.$gutterLayer.setAnnotations(e),this.$loop.schedule(this.CHANGE_GUTTER)},e.prototype.updateCursor=function(){this.$loop.schedule(this.CHANGE_CURSOR)},e.prototype.hideCursor=function(){this.$cursorLayer.hideCursor()},e.prototype.showCursor=function(){this.$cursorLayer.showCursor()},e.prototype.scrollSelectionIntoView=function(e,t,n){this.scrollCursorIntoView(e,n),this.scrollCursorIntoView(t,n)},e.prototype.scrollCursorIntoView=function(e,t,n){if(0!==this.$size.scrollerHeight){var i=this.$cursorLayer.getPixelPosition(e),o=i.left,r=i.top,s=n&&n.top||0,a=n&&n.bottom||0;this.$scrollAnimation&&(this.$stopAnimation=!0);var l=this.$scrollAnimation?this.session.getScrollTop():this.scrollTop;l+s>r?(t&&l+s>r+this.lineHeight&&(r-=t*this.$size.scrollerHeight),0===r&&(r=-this.scrollMargin.top),this.session.setScrollTop(r)):l+this.$size.scrollerHeight-a=1-this.scrollMargin.top||t>0&&this.session.getScrollTop()+this.$size.scrollerHeight-this.layerConfig.maxHeight<-1+this.scrollMargin.bottom||e<0&&this.session.getScrollLeft()>=1-this.scrollMargin.left||e>0&&this.session.getScrollLeft()+this.$size.scrollerWidth-this.layerConfig.width<-1+this.scrollMargin.right||void 0},e.prototype.pixelToScreenCoordinates=function(e,t){var n;if(this.$hasCssTransforms){n={top:0,left:0};var i=this.$fontMetrics.transformCoordinates([e,t]);e=i[1]-this.gutterWidth-this.margin.left,t=i[0]}else n=this.scroller.getBoundingClientRect();var o=e+this.scrollLeft-n.left-this.$padding,r=o/this.characterWidth,s=Math.floor((t+this.scrollTop-n.top)/this.lineHeight),a=this.$blockCursor?Math.floor(r):Math.round(r);return{row:s,column:a,side:r-a>0?1:-1,offsetX:o}},e.prototype.screenToTextCoordinates=function(e,t){var n;if(this.$hasCssTransforms){n={top:0,left:0};var i=this.$fontMetrics.transformCoordinates([e,t]);e=i[1]-this.gutterWidth-this.margin.left,t=i[0]}else n=this.scroller.getBoundingClientRect();var o=e+this.scrollLeft-n.left-this.$padding,r=o/this.characterWidth,s=this.$blockCursor?Math.floor(r):Math.round(r),a=Math.floor((t+this.scrollTop-n.top)/this.lineHeight);return this.session.screenToDocumentPosition(a,Math.max(s,0),o)},e.prototype.textToScreenCoordinates=function(e,t){var n=this.scroller.getBoundingClientRect(),i=this.session.documentToScreenPosition(e,t),o=this.$padding+(this.session.$bidiHandler.isBidiRow(i.row,e)?this.session.$bidiHandler.getPosLeft(i.column):Math.round(i.column*this.characterWidth)),r=i.row*this.lineHeight;return{pageX:n.left+o-this.scrollLeft,pageY:n.top+r-this.scrollTop}},e.prototype.visualizeFocus=function(){o.addCssClass(this.container,"ace_focus")},e.prototype.visualizeBlur=function(){o.removeCssClass(this.container,"ace_focus")},e.prototype.showComposition=function(e){this.$composition=e,e.cssText||(e.cssText=this.textarea.style.cssText),null==e.useTextareaForIME&&(e.useTextareaForIME=this.$useTextareaForIME),this.$useTextareaForIME?(o.addCssClass(this.textarea,"ace_composition"),this.textarea.style.cssText="",this.$moveTextAreaToCursor(),this.$cursorLayer.element.style.display="none"):e.markerId=this.session.addMarker(e.markerRange,"ace_composition_marker","text")},e.prototype.setCompositionText=function(e){var t=this.session.selection.cursor;this.addToken(e,"composition_placeholder",t.row,t.column),this.$moveTextAreaToCursor()},e.prototype.hideComposition=function(){if(this.$composition){this.$composition.markerId&&this.session.removeMarker(this.$composition.markerId),o.removeCssClass(this.textarea,"ace_composition"),this.textarea.style.cssText=this.$composition.cssText;var e=this.session.selection.cursor;this.removeExtraToken(e.row,e.column),this.$composition=null,this.$cursorLayer.element.style.display=""}},e.prototype.setGhostText=function(e,t){var n=this.session.selection.cursor,i=t||{row:n.row,column:n.column};this.removeGhostText();var o=e.split("\n");if(this.addToken(o[0],"ghost_text",i.row,i.column),this.$ghostText={text:e,position:{row:i.row,column:i.column}},o.length>1){this.$ghostTextWidget={text:o.slice(1).join("\n"),row:i.row,column:i.column,className:"ace_ghost_text"},this.session.widgetManager.addLineWidget(this.$ghostTextWidget);var r=this.$cursorLayer.getPixelPosition(i,!0),s=this.container.getBoundingClientRect().height,a=o.length*this.lineHeight;if(a1||Math.abs(e.$size.height-i)>1?e.$resizeTimer.delay():e.$resizeTimer.cancel()})),this.$resizeObserver.observe(this.container)}},e}();A.prototype.CHANGE_CURSOR=1,A.prototype.CHANGE_MARKER=2,A.prototype.CHANGE_GUTTER=4,A.prototype.CHANGE_SCROLL=8,A.prototype.CHANGE_LINES=16,A.prototype.CHANGE_TEXT=32,A.prototype.CHANGE_SIZE=64,A.prototype.CHANGE_MARKER_BACK=128,A.prototype.CHANGE_MARKER_FRONT=256,A.prototype.CHANGE_FULL=512,A.prototype.CHANGE_H_SCROLL=1024,A.prototype.$changes=0,A.prototype.$padding=null,A.prototype.$frozen=!1,A.prototype.STEPS=8,i.implement(A.prototype,y),s.defineOptions(A.prototype,"renderer",{useResizeObserver:{set:function(e){!e&&this.$resizeObserver?(this.$resizeObserver.disconnect(),this.$resizeTimer.cancel(),this.$resizeTimer=this.$resizeObserver=null):e&&!this.$resizeObserver&&this.$addResizeObserver()}},animatedScroll:{initialValue:!1},showInvisibles:{set:function(e){this.$textLayer.setShowInvisibles(e)&&this.$loop.schedule(this.CHANGE_TEXT)},initialValue:!1},showPrintMargin:{set:function(){this.$updatePrintMargin()},initialValue:!0},printMarginColumn:{set:function(){this.$updatePrintMargin()},initialValue:80},printMargin:{set:function(e){"number"==typeof e&&(this.$printMarginColumn=e),this.$showPrintMargin=!!e,this.$updatePrintMargin()},get:function(){return this.$showPrintMargin&&this.$printMarginColumn}},showGutter:{set:function(e){this.$gutter.style.display=e?"block":"none",this.$loop.schedule(this.CHANGE_FULL),this.onGutterResize()},initialValue:!0},useSvgGutterIcons:{set:function(e){this.$gutterLayer.$useSvgGutterIcons=e},initialValue:!1},showFoldedAnnotations:{set:function(e){this.$gutterLayer.$showFoldedAnnotations=e},initialValue:!1},fadeFoldWidgets:{set:function(e){o.setCssClass(this.$gutter,"ace_fade-fold-widgets",e)},initialValue:!1},showFoldWidgets:{set:function(e){this.$gutterLayer.setShowFoldWidgets(e),this.$loop.schedule(this.CHANGE_GUTTER)},initialValue:!0},displayIndentGuides:{set:function(e){this.$textLayer.setDisplayIndentGuides(e)&&this.$loop.schedule(this.CHANGE_TEXT)},initialValue:!0},highlightIndentGuides:{set:function(e){1==this.$textLayer.setHighlightIndentGuides(e)?this.$textLayer.$highlightIndentGuide():this.$textLayer.$clearActiveIndentGuide(this.$textLayer.$lines.cells)},initialValue:!0},highlightGutterLine:{set:function(e){this.$gutterLayer.setHighlightGutterLine(e),this.$loop.schedule(this.CHANGE_GUTTER)},initialValue:!0},hScrollBarAlwaysVisible:{set:function(e){this.$hScrollBarAlwaysVisible&&this.$horizScroll||this.$loop.schedule(this.CHANGE_SCROLL)},initialValue:!1},vScrollBarAlwaysVisible:{set:function(e){this.$vScrollBarAlwaysVisible&&this.$vScroll||this.$loop.schedule(this.CHANGE_SCROLL)},initialValue:!1},fontSize:{set:function(e){"number"==typeof e&&(e+="px"),this.container.style.fontSize=e,this.updateFontSize()},initialValue:12},fontFamily:{set:function(e){this.container.style.fontFamily=e,this.updateFontSize()}},maxLines:{set:function(e){this.updateFull()}},minLines:{set:function(e){this.$minLines<562949953421311||(this.$minLines=0),this.updateFull()}},maxPixelHeight:{set:function(e){this.updateFull()},initialValue:0},scrollPastEnd:{set:function(e){e=+e||0,this.$scrollPastEnd!=e&&(this.$scrollPastEnd=e,this.$loop.schedule(this.CHANGE_SCROLL))},initialValue:0,handlesSet:!0},fixedWidthGutter:{set:function(e){this.$gutterLayer.$fixedWidth=!!e,this.$loop.schedule(this.CHANGE_GUTTER)}},customScrollbar:{set:function(e){this.$updateCustomScrollbar(e)},initialValue:!1},theme:{set:function(e){this.setTheme(e)},get:function(){return this.$themeId||this.theme},initialValue:"./theme/textmate",handlesSet:!0},hasCssTransforms:{},useTextareaForIME:{initialValue:!w.isMobile&&!w.isIE}}),t.VirtualRenderer=A})),ace.define("ace/worker/worker_client",["require","exports","module","ace/lib/oop","ace/lib/net","ace/lib/event_emitter","ace/config"],(function(e,t,n){"use strict";var i=e("../lib/oop"),o=e("../lib/net"),r=e("../lib/event_emitter").EventEmitter,s=e("../config");function a(e){if("undefined"==typeof Worker)return{postMessage:function(){},terminate:function(){}};if(s.get("loadWorkerFromBlob")){var t=function(e){var t="importScripts('"+o.qualifyURL(e)+"');";try{return new Blob([t],{type:"application/javascript"})}catch(e){var n=new(window.BlobBuilder||window.WebKitBlobBuilder||window.MozBlobBuilder);return n.append(t),n.getBlob("application/javascript")}}(e),n=(window.URL||window.webkitURL).createObjectURL(t);return new Worker(n)}return new Worker(e)}var l=function(e){e.postMessage||(e=this.$createWorkerFromOldConfig.apply(this,arguments)),this.$worker=e,this.$sendDeltaQueue=this.$sendDeltaQueue.bind(this),this.changeListener=this.changeListener.bind(this),this.onMessage=this.onMessage.bind(this),this.callbackId=1,this.callbacks={},this.$worker.onmessage=this.onMessage};(function(){i.implement(this,r),this.$createWorkerFromOldConfig=function(t,n,i,o,r){if(e.nameToUrl&&!e.toUrl&&(e.toUrl=e.nameToUrl),s.get("packaged")||!e.toUrl)o=o||s.moduleUrl(n,"worker");else{var l=this.$normalizePath;o=o||l(e.toUrl("ace/worker/worker.js",null,"_"));var c={};t.forEach((function(t){c[t]=l(e.toUrl(t,null,"_").replace(/(\.js)?(\?.*)?$/,""))}))}return this.$worker=a(o),r&&this.send("importScripts",r),this.$worker.postMessage({init:!0,tlns:c,module:n,classname:i}),this.$worker},this.onMessage=function(e){var t=e.data;switch(t.type){case"event":this._signal(t.name,{data:t.data});break;case"call":var n=this.callbacks[t.id];n&&(n(t.data),delete this.callbacks[t.id]);break;case"error":this.reportError(t.data);break;case"log":window.console&&console.log&&console.log.apply(console,t.data)}},this.reportError=function(e){window.console&&console.error&&console.error(e)},this.$normalizePath=function(e){return o.qualifyURL(e)},this.terminate=function(){this._signal("terminate",{}),this.deltaQueue=null,this.$worker.terminate(),this.$worker.onerror=function(e){e.preventDefault()},this.$worker=null,this.$doc&&this.$doc.off("change",this.changeListener),this.$doc=null},this.send=function(e,t){this.$worker.postMessage({command:e,args:t})},this.call=function(e,t,n){if(n){var i=this.callbackId++;this.callbacks[i]=n,t.push(i)}this.send(e,t)},this.emit=function(e,t){try{t.data&&t.data.err&&(t.data.err={message:t.data.err.message,stack:t.data.err.stack,code:t.data.err.code}),this.$worker&&this.$worker.postMessage({event:e,data:{data:t.data}})}catch(e){console.error(e.stack)}},this.attachToDocument=function(e){this.$doc&&this.terminate(),this.$doc=e,this.call("setValue",[e.getValue()]),e.on("change",this.changeListener,!0)},this.changeListener=function(e){this.deltaQueue||(this.deltaQueue=[],setTimeout(this.$sendDeltaQueue,0)),"insert"==e.action?this.deltaQueue.push(e.start,e.lines):this.deltaQueue.push(e.start,e.end)},this.$sendDeltaQueue=function(){var e=this.deltaQueue;e&&(this.deltaQueue=null,e.length>50&&e.length>this.$doc.getLength()>>1?this.call("setValue",[this.$doc.getValue()]):this.emit("change",{data:e}))}}).call(l.prototype),t.UIWorkerClient=function(e,t,n){var i=null,o=!1,a=Object.create(r),c=[],u=new l({messageBuffer:c,terminate:function(){},postMessage:function(e){c.push(e),i&&(o?setTimeout(h):h())}});u.setEmitSync=function(e){o=e};var h=function(){var e=c.shift();e.command?i[e.command].apply(i,e.args):e.event&&a._signal(e.event,e.data)};return a.postMessage=function(e){u.onMessage({data:e})},a.callback=function(e,t){this.postMessage({type:"call",id:t,data:e})},a.emit=function(e,t){this.postMessage({type:"event",name:e,data:t})},s.loadModule(["worker",t],(function(e){for(i=new e[n](a);c.length;)h()})),u},t.WorkerClient=l,t.createWorker=a})),ace.define("ace/placeholder",["require","exports","module","ace/range","ace/lib/event_emitter","ace/lib/oop"],(function(e,t,n){"use strict";var i=e("./range").Range,o=e("./lib/event_emitter").EventEmitter,r=e("./lib/oop"),s=function(){function e(e,t,n,i,o,r){var s=this;this.length=t,this.session=e,this.doc=e.getDocument(),this.mainClass=o,this.othersClass=r,this.$onUpdate=this.onUpdate.bind(this),this.doc.on("change",this.$onUpdate,!0),this.$others=i,this.$onCursorChange=function(){setTimeout((function(){s.onCursorChange()}))},this.$pos=n;var a=e.getUndoManager().$undoStack||e.getUndoManager().$undostack||{length:-1};this.$undoStackDepth=a.length,this.setup(),e.selection.on("changeCursor",this.$onCursorChange)}return e.prototype.setup=function(){var e=this,t=this.doc,n=this.session;this.selectionBefore=n.selection.toJSON(),n.selection.inMultiSelectMode&&n.selection.toSingleRange(),this.pos=t.createAnchor(this.$pos.row,this.$pos.column);var o=this.pos;o.$insertRight=!0,o.detach(),o.markerId=n.addMarker(new i(o.row,o.column,o.row,o.column+this.length),this.mainClass,null,!1),this.others=[],this.$others.forEach((function(n){var i=t.createAnchor(n.row,n.column);i.$insertRight=!0,i.detach(),e.others.push(i)})),n.setUndoSelect(!1)},e.prototype.showOtherMarkers=function(){if(!this.othersActive){var e=this.session,t=this;this.othersActive=!0,this.others.forEach((function(n){n.markerId=e.addMarker(new i(n.row,n.column,n.row,n.column+t.length),t.othersClass,null,!1)}))}},e.prototype.hideOtherMarkers=function(){if(this.othersActive){this.othersActive=!1;for(var e=0;e=this.pos.column&&t.start.column<=this.pos.column+this.length+1,r=t.start.column-this.pos.column;if(this.updateAnchors(e),o&&(this.length+=n),o&&!this.session.$fromUndo)if("insert"===e.action)for(var s=this.others.length-1;s>=0;s--){var a={row:(l=this.others[s]).row,column:l.column+r};this.doc.insertMergedLines(a,e.lines)}else if("remove"===e.action)for(s=this.others.length-1;s>=0;s--){var l;a={row:(l=this.others[s]).row,column:l.column+r},this.doc.remove(new i(a.row,a.column,a.row,a.column-n))}this.$updating=!1,this.updateMarkers()}},e.prototype.updateAnchors=function(e){this.pos.onChange(e);for(var t=this.others.length;t--;)this.others[t].onChange(e);this.updateMarkers()},e.prototype.updateMarkers=function(){if(!this.$updating){var e=this,t=this.session,n=function(n,o){t.removeMarker(n.markerId),n.markerId=t.addMarker(new i(n.row,n.column,n.row,n.column+e.length),o,null,!1)};n(this.pos,this.mainClass);for(var o=this.others.length;o--;)n(this.others[o],this.othersClass)}},e.prototype.onCursorChange=function(e){if(!this.$updating&&this.session){var t=this.session.selection.getCursor();t.row===this.pos.row&&t.column>=this.pos.column&&t.column<=this.pos.column+this.length?(this.showOtherMarkers(),this._emit("cursorEnter",e)):(this.hideOtherMarkers(),this._emit("cursorLeave",e))}},e.prototype.detach=function(){this.session.removeMarker(this.pos&&this.pos.markerId),this.hideOtherMarkers(),this.doc.off("change",this.$onUpdate),this.session.selection.off("changeCursor",this.$onCursorChange),this.session.setUndoSelect(!0),this.session=null},e.prototype.cancel=function(){if(-1!==this.$undoStackDepth){for(var e=this.session.getUndoManager(),t=(e.$undoStack||e.$undostack).length-this.$undoStackDepth,n=0;n1?e.multiSelect.joinSelections():e.multiSelect.splitIntoLines()},bindKey:{win:"Ctrl-Alt-L",mac:"Ctrl-Alt-L"},readOnly:!0},{name:"splitSelectionIntoLines",description:"Split into lines",exec:function(e){e.multiSelect.splitIntoLines()},readOnly:!0},{name:"alignCursors",description:"Align cursors",exec:function(e){e.alignCursors()},bindKey:{win:"Ctrl-Alt-A",mac:"Ctrl-Alt-A"},scrollIntoView:"cursor"},{name:"findAll",description:"Find all",exec:function(e){e.findAll()},bindKey:{win:"Ctrl-Alt-K",mac:"Ctrl-Alt-G"},scrollIntoView:"cursor",readOnly:!0}],t.multiSelectCommands=[{name:"singleSelection",description:"Single selection",bindKey:"esc",exec:function(e){e.exitMultiSelectMode()},scrollIntoView:"cursor",readOnly:!0,isAvailable:function(e){return e&&e.inMultiSelectMode}}];var i=e("../keyboard/hash_handler").HashHandler;t.keyboardHandler=new i(t.multiSelectCommands)})),ace.define("ace/multi_select",["require","exports","module","ace/range_list","ace/range","ace/selection","ace/mouse/multi_select_handler","ace/lib/event","ace/lib/lang","ace/commands/multi_select_commands","ace/search","ace/edit_session","ace/editor","ace/config"],(function(e,t,n){var i=e("./range_list").RangeList,o=e("./range").Range,r=e("./selection").Selection,s=e("./mouse/multi_select_handler").onMouseDown,a=e("./lib/event"),l=e("./lib/lang"),c=e("./commands/multi_select_commands");t.commands=c.defaultCommands.concat(c.multiSelectCommands);var u=new(0,e("./search").Search),h=e("./edit_session").EditSession;(function(){this.getSelectionMarkers=function(){return this.$selectionMarkers}}).call(h.prototype),function(){this.ranges=null,this.rangeList=null,this.addRange=function(e,t){if(e){if(!this.inMultiSelectMode&&0===this.rangeCount){var n=this.toOrientedRange();if(this.rangeList.add(n),this.rangeList.add(e),2!=this.rangeList.ranges.length)return this.rangeList.removeAll(),t||this.fromOrientedRange(e);this.rangeList.removeAll(),this.rangeList.add(n),this.$onAddRange(n)}e.cursor||(e.cursor=e.end);var i=this.rangeList.add(e);return this.$onAddRange(e),i.length&&this.$onRemoveRange(i),this.rangeCount>1&&!this.inMultiSelectMode&&(this._signal("multiSelect"),this.inMultiSelectMode=!0,this.session.$undoSelect=!1,this.rangeList.attach(this.session)),t||this.fromOrientedRange(e)}},this.toSingleRange=function(e){e=e||this.ranges[0];var t=this.rangeList.removeAll();t.length&&this.$onRemoveRange(t),e&&this.fromOrientedRange(e)},this.substractPoint=function(e){var t=this.rangeList.substractPoint(e);if(t)return this.$onRemoveRange(t),t[0]},this.mergeOverlappingRanges=function(){var e=this.rangeList.merge();e.length&&this.$onRemoveRange(e)},this.$onAddRange=function(e){this.rangeCount=this.rangeList.ranges.length,this.ranges.unshift(e),this._signal("addRange",{range:e})},this.$onRemoveRange=function(e){if(this.rangeCount=this.rangeList.ranges.length,1==this.rangeCount&&this.inMultiSelectMode){var t=this.rangeList.ranges.pop();e.push(t),this.rangeCount=0}for(var n=e.length;n--;){var i=this.ranges.indexOf(e[n]);this.ranges.splice(i,1)}this._signal("removeRange",{ranges:e}),0===this.rangeCount&&this.inMultiSelectMode&&(this.inMultiSelectMode=!1,this._signal("singleSelect"),this.session.$undoSelect=!0,this.rangeList.detach(this.session)),(t=t||this.ranges[0])&&!t.isEqual(this.getRange())&&this.fromOrientedRange(t)},this.$initRangeList=function(){this.rangeList||(this.rangeList=new i,this.ranges=[],this.rangeCount=0)},this.getAllRanges=function(){return this.rangeCount?this.rangeList.ranges.concat():[this.getRange()]},this.splitIntoLines=function(){for(var e=this.ranges.length?this.ranges:[this.getRange()],t=[],n=0;n1){var e=this.rangeList.ranges,t=e[e.length-1],n=o.fromPoints(e[0].start,t.end);this.toSingleRange(),this.setSelectionRange(n,t.cursor==t.start)}else{var i=this.session.documentToScreenPosition(this.cursor),r=this.session.documentToScreenPosition(this.anchor);this.rectangularRangeBlock(i,r).forEach(this.addRange,this)}},this.rectangularRangeBlock=function(e,t,n){var i=[],r=e.column0;)b--;if(b>0)for(var v=0;i[v].isEmpty();)v++;for(var w=b;w>=v;w--)i[w].isEmpty()&&i.splice(w,1)}return i}}.call(r.prototype);var d=e("./editor").Editor;function p(e){e.$multiselectOnSessionChange||(e.$onAddRange=e.$onAddRange.bind(e),e.$onRemoveRange=e.$onRemoveRange.bind(e),e.$onMultiSelect=e.$onMultiSelect.bind(e),e.$onSingleSelect=e.$onSingleSelect.bind(e),e.$multiselectOnSessionChange=t.onSessionChange.bind(e),e.$checkMultiselectChange=e.$checkMultiselectChange.bind(e),e.$multiselectOnSessionChange(e),e.on("changeSession",e.$multiselectOnSessionChange),e.on("mousedown",s),e.commands.addCommands(c.defaultCommands),function(e){if(e.textInput){var t=e.textInput.getElement(),n=!1;a.addListener(t,"keydown",(function(t){var o=18==t.keyCode&&!(t.ctrlKey||t.shiftKey||t.metaKey);e.$blockSelectEnabled&&o?n||(e.renderer.setMouseCursor("crosshair"),n=!0):n&&i()}),e),a.addListener(t,"keyup",i,e),a.addListener(t,"blur",i,e)}function i(t){n&&(e.renderer.setMouseCursor(""),n=!1)}}(e))}(function(){this.updateSelectionMarkers=function(){this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.addSelectionMarker=function(e){e.cursor||(e.cursor=e.end);var t=this.getSelectionStyle();return e.marker=this.session.addMarker(e,"ace_selection",t),this.session.$selectionMarkers.push(e),this.session.selectionMarkerCount=this.session.$selectionMarkers.length,e},this.removeSelectionMarker=function(e){if(e.marker){this.session.removeMarker(e.marker);var t=this.session.$selectionMarkers.indexOf(e);-1!=t&&this.session.$selectionMarkers.splice(t,1),this.session.selectionMarkerCount=this.session.$selectionMarkers.length}},this.removeSelectionMarkers=function(e){for(var t=this.session.$selectionMarkers,n=e.length;n--;){var i=e[n];if(i.marker){this.session.removeMarker(i.marker);var o=t.indexOf(i);-1!=o&&t.splice(o,1)}}this.session.selectionMarkerCount=t.length},this.$onAddRange=function(e){this.addSelectionMarker(e.range),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onRemoveRange=function(e){this.removeSelectionMarkers(e.ranges),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onMultiSelect=function(e){this.inMultiSelectMode||(this.inMultiSelectMode=!0,this.setStyle("ace_multiselect"),this.keyBinding.addKeyboardHandler(c.keyboardHandler),this.commands.setDefaultHandler("exec",this.$onMultiSelectExec),this.renderer.updateCursor(),this.renderer.updateBackMarkers())},this.$onSingleSelect=function(e){this.session.multiSelect.inVirtualMode||(this.inMultiSelectMode=!1,this.unsetStyle("ace_multiselect"),this.keyBinding.removeKeyboardHandler(c.keyboardHandler),this.commands.removeDefaultHandler("exec",this.$onMultiSelectExec),this.renderer.updateCursor(),this.renderer.updateBackMarkers(),this._emit("changeSelection"))},this.$onMultiSelectExec=function(e){var t=e.command,n=e.editor;if(n.multiSelect){if(t.multiSelectAction)"forEach"==t.multiSelectAction?i=n.forEachSelection(t,e.args):"forEachLine"==t.multiSelectAction?i=n.forEachSelection(t,e.args,!0):"single"==t.multiSelectAction?(n.exitMultiSelectMode(),i=t.exec(n,e.args||{})):i=t.multiSelectAction(n,e.args||{});else{var i=t.exec(n,e.args||{});n.multiSelect.addRange(n.multiSelect.toOrientedRange()),n.multiSelect.mergeOverlappingRanges()}return i}},this.forEachSelection=function(e,t,n){if(!this.inVirtualSelectionMode){var i,o=n&&n.keepOrder,s=1==n||n&&n.$byLines,a=this.session,l=this.selection,c=l.rangeList,u=(o?l:c).ranges;if(!u.length)return e.exec?e.exec(this,t||{}):e(this,t||{});var h=l._eventRegistry;l._eventRegistry={};var d=new r(a);this.inVirtualSelectionMode=!0;for(var p=u.length;p--;){if(s)for(;p>0&&u[p].start.row==u[p-1].end.row;)p--;d.fromOrientedRange(u[p]),d.index=p,this.selection=a.selection=d;var g=e.exec?e.exec(this,t||{}):e(this,t||{});i||void 0===g||(i=g),d.toOrientedRange(u[p])}d.detach(),this.selection=a.selection=l,this.inVirtualSelectionMode=!1,l._eventRegistry=h,l.mergeOverlappingRanges(),l.ranges[0]&&l.fromOrientedRange(l.ranges[0]);var m=this.renderer.$scrollAnimation;return this.onCursorChange(),this.onSelectionChange(),m&&m.from==m.to&&this.renderer.animateScrolling(m.from),i}},this.exitMultiSelectMode=function(){this.inMultiSelectMode&&!this.inVirtualSelectionMode&&this.multiSelect.toSingleRange()},this.getSelectedText=function(){var e="";if(this.inMultiSelectMode&&!this.inVirtualSelectionMode){for(var t=this.multiSelect.rangeList.ranges,n=[],i=0;is&&(s=n.column),iu?e.insert(i,l.stringRepeat(" ",r-u)):e.remove(new o(i.row,i.column,i.row,i.column-r+u)),t.start.column=t.end.column=s,t.start.row=t.end.row=i.row,t.cursor=t.end})),t.fromOrientedRange(n[0]),this.renderer.updateCursor(),this.renderer.updateBackMarkers()}else{var u=this.selection.getRange(),h=u.start.row,d=u.end.row,p=h==d;if(p){var g,m=this.session.getLength();do{g=this.session.getLine(d)}while(/[=:]/.test(g)&&++d0);h<0&&(h=0),d>=m&&(d=m-1)}var f=this.session.removeFullLines(h,d);f=this.$reAlignText(f,p),this.session.insert({row:h,column:0},f.join("\n")+"\n"),p||(u.start.column=0,u.end.column=f[f.length-1].length),this.selection.setRange(u)}},this.$reAlignText=function(e,t){var n,i,o,r=!0,s=!0;return e.map((function(e){var t=e.match(/(\s*)(.*?)(\s*)([=:].*)/);return t?null==n?(n=t[1].length,i=t[2].length,o=t[3].length,t):(n+i+o!=t[1].length+t[2].length+t[3].length&&(s=!1),n!=t[1].length&&(r=!1),n>t[1].length&&(n=t[1].length),it[3].length&&(o=t[3].length),t):[e]})).map(t?c:r?s?function(e){return e[2]?a(n+i-e[2].length)+e[2]+a(o)+e[4].replace(/^([=:])\s+/,"$1 "):e[0]}:c:function(e){return e[2]?a(n)+e[2]+a(o)+e[4].replace(/^([=:])\s+/,"$1 "):e[0]});function a(e){return l.stringRepeat(" ",e)}function c(e){return e[2]?a(n)+e[2]+a(i-e[2].length+o)+e[4].replace(/^([=:])\s+/,"$1 "):e[0]}}}).call(d.prototype),t.onSessionChange=function(e){var t=e.session;t&&!t.multiSelect&&(t.$selectionMarkers=[],t.selection.$initRangeList(),t.multiSelect=t.selection),this.multiSelect=t&&t.multiSelect;var n=e.oldSession;n&&(n.multiSelect.off("addRange",this.$onAddRange),n.multiSelect.off("removeRange",this.$onRemoveRange),n.multiSelect.off("multiSelect",this.$onMultiSelect),n.multiSelect.off("singleSelect",this.$onSingleSelect),n.multiSelect.lead.off("change",this.$checkMultiselectChange),n.multiSelect.anchor.off("change",this.$checkMultiselectChange)),t&&(t.multiSelect.on("addRange",this.$onAddRange),t.multiSelect.on("removeRange",this.$onRemoveRange),t.multiSelect.on("multiSelect",this.$onMultiSelect),t.multiSelect.on("singleSelect",this.$onSingleSelect),t.multiSelect.lead.on("change",this.$checkMultiselectChange),t.multiSelect.anchor.on("change",this.$checkMultiselectChange)),t&&this.inMultiSelectMode!=t.selection.inMultiSelectMode&&(t.selection.inMultiSelectMode?this.$onMultiSelect():this.$onSingleSelect())},t.MultiSelect=p,e("./config").defineOptions(d.prototype,"editor",{enableMultiselect:{set:function(e){p(this),e?this.on("mousedown",s):this.off("mousedown",s)},value:!0},enableBlockSelect:{set:function(e){this.$blockSelectEnabled=e},value:!0}})})),ace.define("ace/mode/folding/fold_mode",["require","exports","module","ace/range"],(function(e,t,n){"use strict";var i=e("../../range").Range,o=t.FoldMode=function(){};(function(){this.foldingStartMarker=null,this.foldingStopMarker=null,this.getFoldWidget=function(e,t,n){var i=e.getLine(n);return this.foldingStartMarker.test(i)?"start":"markbeginend"==t&&this.foldingStopMarker&&this.foldingStopMarker.test(i)?"end":""},this.getFoldWidgetRange=function(e,t,n){return null},this.indentationBlock=function(e,t,n){var o=/\S/,r=e.getLine(t),s=r.search(o);if(-1!=s){for(var a=n||r.length,l=e.getLength(),c=t,u=t;++tc){var p=e.getLine(u).length;return new i(c,a,u,p)}}},this.openingBracketBlock=function(e,t,n,o,r){var s={row:n,column:o+1},a=e.$findClosingBracket(t,s,r);if(a){var l=e.foldWidgets[a.row];return null==l&&(l=e.getFoldWidget(a.row)),"start"==l&&a.row>s.row&&(a.row--,a.column=e.getLine(a.row).length),i.fromPoints(s,a)}},this.closingBracketBlock=function(e,t,n,o,r){var s={row:n,column:o},a=e.$findOpeningBracket(t,s);if(a)return a.column++,s.column--,i.fromPoints(a,s)}}).call(o.prototype)})),ace.define("ace/ext/error_marker",["require","exports","module","ace/line_widgets","ace/lib/dom","ace/range","ace/config"],(function(e,t,n){"use strict";var i=e("../line_widgets").LineWidgets,o=e("../lib/dom"),r=e("../range").Range,s=e("../config").nls;t.showErrorMarker=function(e,t){var n=e.session;n.widgetManager||(n.widgetManager=new i(n),n.widgetManager.attach(e));var a=e.getCursorPosition(),l=a.row,c=n.widgetManager.getWidgetsAtRow(l).filter((function(e){return"errorMarker"==e.type}))[0];c?c.destroy():l-=t;var u,h=function(e,t,n){var i=e.getAnnotations().sort(r.comparePoints);if(i.length){var o=function(e,t,n){for(var i=0,o=e.length-1;i<=o;){var r=i+o>>1,s=n(t,e[r]);if(s>0)i=r+1;else{if(!(s<0))return r;o=r-1}}return-(i+1)}(i,{row:t,column:-1},r.comparePoints);o<0&&(o=-o-1),o>=i.length?o=n>0?0:i.length-1:0===o&&n<0&&(o=i.length-1);var s=i[o];if(s&&n){if(s.row===t){do{s=i[o+=n]}while(s&&s.row===t);if(!s)return i.slice()}var a=[];t=s.row;do{a[n<0?"unshift":"push"](s),s=i[o+=n]}while(s&&s.row==t);return a.length&&a}}}(n,l,t);if(h){var d=h[0];a.column=(d.pos&&"number"!=typeof d.column?d.pos.sc:d.column)||0,a.row=d.row,u=e.renderer.$gutterLayer.$annotations[a.row]}else{if(c)return;u={text:[s("Looks good!")],className:"ace_ok"}}e.session.unfold(a.row),e.selection.moveToPosition(a);var p={row:a.row,fixedWidth:!0,coverGutter:!0,el:o.createElement("div"),type:"errorMarker"},g=p.el.appendChild(o.createElement("div")),m=p.el.appendChild(o.createElement("div"));m.className="error_widget_arrow "+u.className;var f=e.renderer.$cursorLayer.getPixelPosition(a).left;m.style.left=f+e.renderer.gutterWidth-5+"px",p.el.className="error_widget_wrapper",g.className="error_widget "+u.className,g.innerHTML=u.text.join("
    "),g.appendChild(o.createElement("div"));var y=function(e,t,n){if(0===t&&("esc"===n||"return"===n))return p.destroy(),{command:"null"}};p.destroy=function(){e.$mouseHandler.isMousePressed||(e.keyBinding.removeKeyboardHandler(y),n.widgetManager.removeLineWidget(p),e.off("changeSelection",p.destroy),e.off("changeSession",p.destroy),e.off("mouseup",p.destroy),e.off("change",p.destroy))},e.keyBinding.addKeyboardHandler(y),e.on("changeSelection",p.destroy),e.on("changeSession",p.destroy),e.on("mouseup",p.destroy),e.on("change",p.destroy),e.session.widgetManager.addLineWidget(p),p.el.onmousedown=e.focus.bind(e),e.renderer.scrollCursorIntoView(null,.5,{bottom:p.el.offsetHeight})},o.importCssString("\n .error_widget_wrapper {\n background: inherit;\n color: inherit;\n border:none\n }\n .error_widget {\n border-top: solid 2px;\n border-bottom: solid 2px;\n margin: 5px 0;\n padding: 10px 40px;\n white-space: pre-wrap;\n }\n .error_widget.ace_error, .error_widget_arrow.ace_error{\n border-color: #ff5a5a\n }\n .error_widget.ace_warning, .error_widget_arrow.ace_warning{\n border-color: #F1D817\n }\n .error_widget.ace_info, .error_widget_arrow.ace_info{\n border-color: #5a5a5a\n }\n .error_widget.ace_ok, .error_widget_arrow.ace_ok{\n border-color: #5aaa5a\n }\n .error_widget_arrow {\n position: absolute;\n border: solid 5px;\n border-top-color: transparent!important;\n border-right-color: transparent!important;\n border-left-color: transparent!important;\n top: -5px;\n }\n","error_marker.css",!1)})),ace.define("ace/ace",["require","exports","module","ace/lib/dom","ace/range","ace/editor","ace/edit_session","ace/undomanager","ace/virtual_renderer","ace/worker/worker_client","ace/keyboard/hash_handler","ace/placeholder","ace/multi_select","ace/mode/folding/fold_mode","ace/theme/textmate","ace/ext/error_marker","ace/config","ace/loader_build"],(function(e,t,n){"use strict";e("./loader_build")(t);var i=e("./lib/dom"),o=e("./range").Range,r=e("./editor").Editor,s=e("./edit_session").EditSession,a=e("./undomanager").UndoManager,l=e("./virtual_renderer").VirtualRenderer;e("./worker/worker_client"),e("./keyboard/hash_handler"),e("./placeholder"),e("./multi_select"),e("./mode/folding/fold_mode"),e("./theme/textmate"),e("./ext/error_marker"),t.config=e("./config"),t.edit=function(e,n){if("string"==typeof e){var o=e;if(!(e=document.getElementById(o)))throw new Error("ace.edit can't find div #"+o)}if(e&&e.env&&e.env.editor instanceof r)return e.env.editor;var s="";if(e&&/input|textarea/i.test(e.tagName)){var a=e;s=a.value,e=i.createElement("pre"),a.parentNode.replaceChild(e,a)}else e&&(s=e.textContent,e.innerHTML="");var c=t.createEditSession(s),u=new r(new l(e),c,n),h={document:c,editor:u,onResize:u.resize.bind(u,null)};return a&&(h.textarea=a),u.on("destroy",(function(){h.editor.container.env=null})),u.container.env=u.env=h,u},t.createEditSession=function(e,t){var n=new s(e,t);return n.setUndoManager(new a),n},t.Range=o,t.Editor=r,t.EditSession=s,t.UndoManager=a,t.VirtualRenderer=l,t.version=t.config.version})),ace.require(["ace/ace"],(function(t){t&&(t.config.init(!0),t.define=ace.define);var n=function(){return this}();for(var i in n||"undefined"==typeof window||(n=window),n||"undefined"==typeof self||(n=self),n.ace||(n.ace=t),t)t.hasOwnProperty(i)&&(n.ace[i]=t[i]);n.ace.default=n.ace,e&&(e.exports=n.ace)}))},134:(e,t,n)=>{e=n.nmd(e),ace.define("ace/ext/beautify",["require","exports","module","ace/token_iterator"],(function(e,t,n){"use strict";var i=e("../token_iterator").TokenIterator;function o(e,t){return e.type.lastIndexOf(t+".xml")>-1}t.singletonTags=["area","base","br","col","command","embed","hr","html","img","input","keygen","link","meta","param","source","track","wbr"],t.blockTags=["article","aside","blockquote","body","div","dl","fieldset","footer","form","head","header","html","nav","ol","p","script","section","style","table","tbody","tfoot","thead","ul"],t.formatOptions={lineBreaksAfterCommasInCurlyBlock:!0},t.beautify=function(e){for(var n,r,s,a=new i(e,0,0),l=a.getCurrentToken(),c=e.getTabString(),u=t.singletonTags,h=t.blockTags,d=t.formatOptions||{},p=!1,g=!1,m=!1,f="",y="",b="",v=0,w=0,A=0,C=0,k=0,x=0,S=0,$=0,E=0,O=!1,T=!1,_=!1,R=!1,M={0:0},L=[],B=!1,N=function(){n&&n.value&&"string.regexp"!==n.type&&(n.value=n.value.replace(/^\s*/,""))},I=function(){for(var e=f.length-1;0!=e&&" "===f[e];)e-=1;f=f.slice(0,e+1)},P=function(){f=f.trimRight(),p=!1};null!==l;){if($=a.getCurrentTokenRow(),a.$rowTokens,n=a.stepForward(),void 0!==l){if(y=l.value,k=0,_="style"===b||"ace/mode/css"===e.$modeId,o(l,"tag-open")?(T=!0,n&&(R=-1!==h.indexOf(n.value)),"0;E--)f+="\n";p=!0,o(l,"comment")||l.type.match(/^(comment|string)$/)||(y=y.trimLeft())}if(y){if("keyword"===l.type&&y.match(/^(if|else|elseif|for|foreach|while|switch)$/)?(L[v]=y,N(),m=!0,y.match(/^(else|elseif)$/)&&f.match(/\}[\s]*$/)&&(P(),g=!0)):"paren.lparen"===l.type?(N(),"{"===y.substr(-1)&&(m=!0,O=!1,T||(E=1)),"{"===y.substr(0,1)&&(g=!0,"["!==f.substr(-1)&&"["===f.trimRight().substr(-1)?(P(),g=!1):")"===f.trimRight().substr(-1)?P():I())):"paren.rparen"===l.type?(k=1,"}"===y.substr(0,1)&&("case"===L[v-1]&&k++,"{"===f.trimRight().substr(-1)?P():(g=!0,_&&(E+=2))),"]"===y.substr(0,1)&&"}"!==f.substr(-1)&&"}"===f.trimRight().substr(-1)&&(g=!1,C++,P()),")"===y.substr(0,1)&&"("!==f.substr(-1)&&"("===f.trimRight().substr(-1)&&(g=!1,C++,P()),I()):"keyword.operator"!==l.type&&"keyword"!==l.type||!y.match(/^(=|==|===|!=|!==|&&|\|\||and|or|xor|\+=|.=|>|>=|<|<=|=>)$/)?"punctuation.operator"===l.type&&";"===y?(P(),N(),m=!0,_&&E++):"punctuation.operator"===l.type&&y.match(/^(:|,)$/)?(P(),N(),y.match(/^(,)$/)&&S>0&&0===x&&d.lineBreaksAfterCommasInCurlyBlock?E++:(m=!0,p=!1)):"support.php_tag"!==l.type||"?>"!==y||p?o(l,"attribute-name")&&f.substr(-1).match(/^\s$/)?g=!0:o(l,"attribute-equals")?(I(),N()):o(l,"tag-close")?(I(),"/>"===y&&(g=!0)):"keyword"===l.type&&y.match(/^(case|default)$/)&&B&&(k=1):(P(),g=!0):(P(),N(),g=!0,m=!0),p&&(!l.type.match(/^(comment)$/)||y.substr(0,1).match(/^[/#]$/))&&(!l.type.match(/^(string)$/)||y.substr(0,1).match(/^['"@]$/))){if(C=A,v>w)for(C++,s=v;s>w;s--)M[s]=C;else v"===y)&&(E=R&&n&&""===y&&v--),o(l,"tag-name")&&(b=y),r=$}}l=n}f=f.trim(),e.doc.setValue(f)},t.commands=[{name:"beautify",description:"Format selection (Beautify)",exec:function(e){t.beautify(e.session)},bindKey:"Ctrl-Shift-B"}]})),ace.require(["ace/ext/beautify"],(function(t){e&&(e.exports=t)}))},604:(e,t,n)=>{e=n.nmd(e),ace.define("ace/ext/searchbox-css",["require","exports","module"],(function(e,t,n){n.exports='\n\n/* ------------------------------------------------------------------------------------------\n * Editor Search Form\n * --------------------------------------------------------------------------------------- */\n.ace_search {\n background-color: #ddd;\n color: #666;\n border: 1px solid #cbcbcb;\n border-top: 0 none;\n overflow: hidden;\n margin: 0;\n padding: 4px 6px 0 4px;\n position: absolute;\n top: 0;\n z-index: 99;\n white-space: normal;\n}\n.ace_search.left {\n border-left: 0 none;\n border-radius: 0px 0px 5px 0px;\n left: 0;\n}\n.ace_search.right {\n border-radius: 0px 0px 0px 5px;\n border-right: 0 none;\n right: 0;\n}\n\n.ace_search_form, .ace_replace_form {\n margin: 0 20px 4px 0;\n overflow: hidden;\n line-height: 1.9;\n}\n.ace_replace_form {\n margin-right: 0;\n}\n.ace_search_form.ace_nomatch {\n outline: 1px solid red;\n}\n\n.ace_search_field {\n border-radius: 3px 0 0 3px;\n background-color: white;\n color: black;\n border: 1px solid #cbcbcb;\n border-right: 0 none;\n outline: 0;\n padding: 0;\n font-size: inherit;\n margin: 0;\n line-height: inherit;\n padding: 0 6px;\n min-width: 17em;\n vertical-align: top;\n min-height: 1.8em;\n box-sizing: content-box;\n}\n.ace_searchbtn {\n border: 1px solid #cbcbcb;\n line-height: inherit;\n display: inline-block;\n padding: 0 6px;\n background: #fff;\n border-right: 0 none;\n border-left: 1px solid #dcdcdc;\n cursor: pointer;\n margin: 0;\n position: relative;\n color: #666;\n}\n.ace_searchbtn:last-child {\n border-radius: 0 3px 3px 0;\n border-right: 1px solid #cbcbcb;\n}\n.ace_searchbtn:disabled {\n background: none;\n cursor: default;\n}\n.ace_searchbtn:hover {\n background-color: #eef1f6;\n}\n.ace_searchbtn.prev, .ace_searchbtn.next {\n padding: 0px 0.7em\n}\n.ace_searchbtn.prev:after, .ace_searchbtn.next:after {\n content: "";\n border: solid 2px #888;\n width: 0.5em;\n height: 0.5em;\n border-width: 2px 0 0 2px;\n display:inline-block;\n transform: rotate(-45deg);\n}\n.ace_searchbtn.next:after {\n border-width: 0 2px 2px 0 ;\n}\n.ace_searchbtn_close {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAcCAYAAABRVo5BAAAAZ0lEQVR42u2SUQrAMAhDvazn8OjZBilCkYVVxiis8H4CT0VrAJb4WHT3C5xU2a2IQZXJjiQIRMdkEoJ5Q2yMqpfDIo+XY4k6h+YXOyKqTIj5REaxloNAd0xiKmAtsTHqW8sR2W5f7gCu5nWFUpVjZwAAAABJRU5ErkJggg==) no-repeat 50% 0;\n border-radius: 50%;\n border: 0 none;\n color: #656565;\n cursor: pointer;\n font: 16px/16px Arial;\n padding: 0;\n height: 14px;\n width: 14px;\n top: 9px;\n right: 7px;\n position: absolute;\n}\n.ace_searchbtn_close:hover {\n background-color: #656565;\n background-position: 50% 100%;\n color: white;\n}\n\n.ace_button {\n margin-left: 2px;\n cursor: pointer;\n -webkit-user-select: none;\n -moz-user-select: none;\n -o-user-select: none;\n -ms-user-select: none;\n user-select: none;\n overflow: hidden;\n opacity: 0.7;\n border: 1px solid rgba(100,100,100,0.23);\n padding: 1px;\n box-sizing: border-box!important;\n color: black;\n}\n\n.ace_button:hover {\n background-color: #eee;\n opacity:1;\n}\n.ace_button:active {\n background-color: #ddd;\n}\n\n.ace_button.checked {\n border-color: #3399ff;\n opacity:1;\n}\n\n.ace_search_options{\n margin-bottom: 3px;\n text-align: right;\n -webkit-user-select: none;\n -moz-user-select: none;\n -o-user-select: none;\n -ms-user-select: none;\n user-select: none;\n clear: both;\n}\n\n.ace_search_counter {\n float: left;\n font-family: arial;\n padding: 0 8px;\n}'})),ace.define("ace/ext/searchbox",["require","exports","module","ace/lib/dom","ace/lib/lang","ace/lib/event","ace/ext/searchbox-css","ace/keyboard/hash_handler","ace/lib/keys","ace/config"],(function(e,t,n){"use strict";var i=e("../lib/dom"),o=e("../lib/lang"),r=e("../lib/event"),s=e("./searchbox-css"),a=e("../keyboard/hash_handler").HashHandler,l=e("../lib/keys"),c=e("../config").nls;i.importCssString(s,"ace_searchbox",!1);var u=function(){function e(e,t,n){var o=i.createElement("div");i.buildDom(["div",{class:"ace_search right"},["span",{action:"hide",class:"ace_searchbtn_close"}],["div",{class:"ace_search_form"},["input",{class:"ace_search_field",placeholder:c("Search for"),spellcheck:"false"}],["span",{action:"findPrev",class:"ace_searchbtn prev"},"​"],["span",{action:"findNext",class:"ace_searchbtn next"},"​"],["span",{action:"findAll",class:"ace_searchbtn",title:"Alt-Enter"},c("All")]],["div",{class:"ace_replace_form"},["input",{class:"ace_search_field",placeholder:c("Replace with"),spellcheck:"false"}],["span",{action:"replaceAndFindNext",class:"ace_searchbtn"},c("Replace")],["span",{action:"replaceAll",class:"ace_searchbtn"},c("All")]],["div",{class:"ace_search_options"},["span",{action:"toggleReplace",class:"ace_button",title:c("Toggle Replace mode"),style:"float:left;margin-top:-2px;padding:0 5px;"},"+"],["span",{class:"ace_search_counter"}],["span",{action:"toggleRegexpMode",class:"ace_button",title:c("RegExp Search")},".*"],["span",{action:"toggleCaseSensitive",class:"ace_button",title:c("CaseSensitive Search")},"Aa"],["span",{action:"toggleWholeWords",class:"ace_button",title:c("Whole Word Search")},"\\b"],["span",{action:"searchInSelection",class:"ace_button",title:c("Search In Selection")},"S"]]],o),this.element=o.firstChild,this.setSession=this.setSession.bind(this),this.$init(),this.setEditor(e),i.importCssString(s,"ace_searchbox",e.container)}return e.prototype.setEditor=function(e){e.searchBox=this,e.renderer.scroller.appendChild(this.element),this.editor=e},e.prototype.setSession=function(e){this.searchRange=null,this.$syncOptions(!0)},e.prototype.$initElements=function(e){this.searchBox=e.querySelector(".ace_search_form"),this.replaceBox=e.querySelector(".ace_replace_form"),this.searchOption=e.querySelector("[action=searchInSelection]"),this.replaceOption=e.querySelector("[action=toggleReplace]"),this.regExpOption=e.querySelector("[action=toggleRegexpMode]"),this.caseSensitiveOption=e.querySelector("[action=toggleCaseSensitive]"),this.wholeWordOption=e.querySelector("[action=toggleWholeWords]"),this.searchInput=this.searchBox.querySelector(".ace_search_field"),this.replaceInput=this.replaceBox.querySelector(".ace_search_field"),this.searchCounter=e.querySelector(".ace_search_counter")},e.prototype.$init=function(){var e=this.element;this.$initElements(e);var t=this;r.addListener(e,"mousedown",(function(e){setTimeout((function(){t.activeInput.focus()}),0),r.stopPropagation(e)})),r.addListener(e,"click",(function(e){var n=(e.target||e.srcElement).getAttribute("action");n&&t[n]?t[n]():t.$searchBarKb.commands[n]&&t.$searchBarKb.commands[n].exec(t),r.stopPropagation(e)})),r.addCommandKeyListener(e,(function(e,n,i){var o=l.keyCodeToString(i),s=t.$searchBarKb.findKeyCommand(n,o);s&&s.exec&&(s.exec(t),r.stopEvent(e))})),this.$onChange=o.delayedCall((function(){t.find(!1,!1)})),r.addListener(this.searchInput,"input",(function(){t.$onChange.schedule(20)})),r.addListener(this.searchInput,"focus",(function(){t.activeInput=t.searchInput,t.searchInput.value&&t.highlight()})),r.addListener(this.replaceInput,"focus",(function(){t.activeInput=t.replaceInput,t.searchInput.value&&t.highlight()}))},e.prototype.setSearchRange=function(e){this.searchRange=e,e?this.searchRangeMarker=this.editor.session.addMarker(e,"ace_active-line"):this.searchRangeMarker&&(this.editor.session.removeMarker(this.searchRangeMarker),this.searchRangeMarker=null)},e.prototype.$syncOptions=function(e){i.setCssClass(this.replaceOption,"checked",this.searchRange),i.setCssClass(this.searchOption,"checked",this.searchOption.checked),this.replaceOption.textContent=this.replaceOption.checked?"-":"+",i.setCssClass(this.regExpOption,"checked",this.regExpOption.checked),i.setCssClass(this.wholeWordOption,"checked",this.wholeWordOption.checked),i.setCssClass(this.caseSensitiveOption,"checked",this.caseSensitiveOption.checked);var t=this.editor.getReadOnly();this.replaceOption.style.display=t?"none":"",this.replaceBox.style.display=this.replaceOption.checked&&!t?"":"none",this.find(!1,!1,e)},e.prototype.highlight=function(e){this.editor.session.highlight(e||this.editor.$search.$options.re),this.editor.renderer.updateBackMarkers()},e.prototype.find=function(e,t,n){var o=!this.editor.find(this.searchInput.value,{skipCurrent:e,backwards:t,wrap:!0,regExp:this.regExpOption.checked,caseSensitive:this.caseSensitiveOption.checked,wholeWord:this.wholeWordOption.checked,preventScroll:n,range:this.searchRange})&&this.searchInput.value;i.setCssClass(this.searchBox,"ace_nomatch",o),this.editor._emit("findSearchBox",{match:!o}),this.highlight(),this.updateCounter()},e.prototype.updateCounter=function(){var e=this.editor,t=e.$search.$options.re,n=t.unicode,i=0,r=0;if(t){var s=this.searchRange?e.session.getTextRange(this.searchRange):e.getValue(),a=e.session.doc.positionToIndex(e.selection.anchor);this.searchRange&&(a-=e.session.doc.positionToIndex(this.searchRange.start));for(var l,u=t.lastIndex=0;(l=t.exec(s))&&(i++,(u=l.index)<=a&&r++,!(i>999))&&(l[0]||(t.lastIndex=u+=o.skipEmptyMatch(s,u,n),!(u>=s.length))););}this.searchCounter.textContent=c("$0 of $1",[r,i>999?"999+":i])},e.prototype.findNext=function(){this.find(!0,!1)},e.prototype.findPrev=function(){this.find(!0,!0)},e.prototype.findAll=function(){var e=!this.editor.findAll(this.searchInput.value,{regExp:this.regExpOption.checked,caseSensitive:this.caseSensitiveOption.checked,wholeWord:this.wholeWordOption.checked})&&this.searchInput.value;i.setCssClass(this.searchBox,"ace_nomatch",e),this.editor._emit("findSearchBox",{match:!e}),this.highlight(),this.hide()},e.prototype.replace=function(){this.editor.getReadOnly()||this.editor.replace(this.replaceInput.value)},e.prototype.replaceAndFindNext=function(){this.editor.getReadOnly()||(this.editor.replace(this.replaceInput.value),this.findNext())},e.prototype.replaceAll=function(){this.editor.getReadOnly()||this.editor.replaceAll(this.replaceInput.value)},e.prototype.hide=function(){this.active=!1,this.setSearchRange(null),this.editor.off("changeSession",this.setSession),this.element.style.display="none",this.editor.keyBinding.removeKeyboardHandler(this.$closeSearchBarKb),this.editor.focus()},e.prototype.show=function(e,t){this.active=!0,this.editor.on("changeSession",this.setSession),this.element.style.display="",this.replaceOption.checked=t,e&&(this.searchInput.value=e),this.searchInput.focus(),this.searchInput.select(),this.editor.keyBinding.addKeyboardHandler(this.$closeSearchBarKb),this.$syncOptions(!0)},e.prototype.isFocused=function(){var e=document.activeElement;return e==this.searchInput||e==this.replaceInput},e}(),h=new a;h.bindKeys({"Ctrl-f|Command-f":function(e){var t=e.isReplace=!e.isReplace;e.replaceBox.style.display=t?"":"none",e.replaceOption.checked=!1,e.$syncOptions(),e.searchInput.focus()},"Ctrl-H|Command-Option-F":function(e){e.editor.getReadOnly()||(e.replaceOption.checked=!0,e.$syncOptions(),e.replaceInput.focus())},"Ctrl-G|Command-G":function(e){e.findNext()},"Ctrl-Shift-G|Command-Shift-G":function(e){e.findPrev()},esc:function(e){setTimeout((function(){e.hide()}))},Return:function(e){e.activeInput==e.replaceInput&&e.replace(),e.findNext()},"Shift-Return":function(e){e.activeInput==e.replaceInput&&e.replace(),e.findPrev()},"Alt-Return":function(e){e.activeInput==e.replaceInput&&e.replaceAll(),e.findAll()},Tab:function(e){(e.activeInput==e.replaceInput?e.searchInput:e.replaceInput).focus()}}),h.addCommands([{name:"toggleRegexpMode",bindKey:{win:"Alt-R|Alt-/",mac:"Ctrl-Alt-R|Ctrl-Alt-/"},exec:function(e){e.regExpOption.checked=!e.regExpOption.checked,e.$syncOptions()}},{name:"toggleCaseSensitive",bindKey:{win:"Alt-C|Alt-I",mac:"Ctrl-Alt-R|Ctrl-Alt-I"},exec:function(e){e.caseSensitiveOption.checked=!e.caseSensitiveOption.checked,e.$syncOptions()}},{name:"toggleWholeWords",bindKey:{win:"Alt-B|Alt-W",mac:"Ctrl-Alt-B|Ctrl-Alt-W"},exec:function(e){e.wholeWordOption.checked=!e.wholeWordOption.checked,e.$syncOptions()}},{name:"toggleReplace",exec:function(e){e.replaceOption.checked=!e.replaceOption.checked,e.$syncOptions()}},{name:"searchInSelection",exec:function(e){e.searchOption.checked=!e.searchRange,e.setSearchRange(e.searchOption.checked&&e.editor.getSelectionRange()),e.$syncOptions()}}]);var d=new a([{bindKey:"Esc",name:"closeSearchBar",exec:function(e){e.searchBox.hide()}}]);u.prototype.$searchBarKb=h,u.prototype.$closeSearchBarKb=d,t.SearchBox=u,t.Search=function(e,t){(e.searchBox||new u(e)).show(e.session.getTextRange(),t)}})),ace.require(["ace/ext/searchbox"],(function(t){e&&(e.exports=t)}))},549:(e,t,n)=>{e=n.nmd(e),ace.define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"],(function(e,t,n){"use strict";var i=e("../lib/oop"),o=(e("../lib/lang"),e("./text_highlight_rules").TextHighlightRules),r=t.supportType="align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index",s=t.supportFunction="rgb|rgba|url|attr|counter|counters",a=t.supportConstant="absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|flex-end|flex-start|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom",l=t.supportConstantColor="aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|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|green|greenyellow|grey|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|magenta|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|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen",c=t.supportConstantFonts="arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace",u=t.numRe="\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))",h=t.pseudoElements="(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b",d=t.pseudoClasses="(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b",p=function(){var e=this.createKeywordMapper({"support.function":s,"support.constant":a,"support.type":r,"support.constant.color":l,"support.constant.fonts":c},"text",!0);this.$rules={start:[{include:["strings","url","comments"]},{token:"paren.lparen",regex:"\\{",next:"ruleset"},{token:"paren.rparen",regex:"\\}"},{token:"string",regex:"@(?!viewport)",next:"media"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"keyword",regex:"%"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant.numeric",regex:u},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],media:[{include:["strings","url","comments"]},{token:"paren.lparen",regex:"\\{",next:"start"},{token:"paren.rparen",regex:"\\}",next:"start"},{token:"string",regex:";",next:"start"},{token:"keyword",regex:"(?:media|supports|document|charset|import|namespace|media|supports|document|page|font|keyframes|viewport|counter-style|font-feature-values|swash|ornaments|annotation|stylistic|styleset|character-variant)"}],comments:[{token:"comment",regex:"\\/\\*",push:[{token:"comment",regex:"\\*\\/",next:"pop"},{defaultToken:"comment"}]}],ruleset:[{regex:"-(webkit|ms|moz|o)-",token:"text"},{token:"punctuation.operator",regex:"[:;]"},{token:"paren.rparen",regex:"\\}",next:"start"},{include:["strings","url","comments"]},{token:["constant.numeric","keyword"],regex:"("+u+")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)"},{token:"constant.numeric",regex:u},{token:"constant.numeric",regex:"#[a-f0-9]{6}"},{token:"constant.numeric",regex:"#[a-f0-9]{3}"},{token:["punctuation","entity.other.attribute-name.pseudo-element.css"],regex:h},{token:["punctuation","entity.other.attribute-name.pseudo-class.css"],regex:d},{include:"url"},{token:e,regex:"\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"},{caseInsensitive:!0}],url:[{token:"support.function",regex:"(?:url(:?-prefix)?|domain|regexp)\\(",push:[{token:"support.function",regex:"\\)",next:"pop"},{defaultToken:"string"}]}],strings:[{token:"string.start",regex:"'",push:[{token:"string.end",regex:"'|$",next:"pop"},{include:"escapes"},{token:"constant.language.escape",regex:/\\$/,consumeLineEnd:!0},{defaultToken:"string"}]},{token:"string.start",regex:'"',push:[{token:"string.end",regex:'"|$',next:"pop"},{include:"escapes"},{token:"constant.language.escape",regex:/\\$/,consumeLineEnd:!0},{defaultToken:"string"}]}],escapes:[{token:"constant.language.escape",regex:/\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/}]},this.normalizeRules()};i.inherits(p,o),t.CssHighlightRules=p})),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],(function(e,t,n){"use strict";var i=e("../range").Range,o=function(){};(function(){this.checkOutdent=function(e,t){return!!/^\s+$/.test(e)&&/^\s*\}/.test(t)},this.autoOutdent=function(e,t){var n=e.getLine(t).match(/^(\s*\})/);if(!n)return 0;var o=n[1].length,r=e.findMatchingBracket({row:t,column:o});if(!r||r.row==t)return 0;var s=this.$getIndent(e.getLine(r.row));e.replace(new i(t,0,t,o-1),s)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(o.prototype),t.MatchingBraceOutdent=o})),ace.define("ace/mode/css_completions",["require","exports","module"],(function(e,t,n){"use strict";var i={background:{"#$0":1},"background-color":{"#$0":1,transparent:1,fixed:1},"background-image":{"url('/$0')":1},"background-repeat":{repeat:1,"repeat-x":1,"repeat-y":1,"no-repeat":1,inherit:1},"background-position":{bottom:2,center:2,left:2,right:2,top:2,inherit:2},"background-attachment":{scroll:1,fixed:1},"background-size":{cover:1,contain:1},"background-clip":{"border-box":1,"padding-box":1,"content-box":1},"background-origin":{"border-box":1,"padding-box":1,"content-box":1},border:{"solid $0":1,"dashed $0":1,"dotted $0":1,"#$0":1},"border-color":{"#$0":1},"border-style":{solid:2,dashed:2,dotted:2,double:2,groove:2,hidden:2,inherit:2,inset:2,none:2,outset:2,ridged:2},"border-collapse":{collapse:1,separate:1},bottom:{px:1,em:1,"%":1},clear:{left:1,right:1,both:1,none:1},color:{"#$0":1,"rgb(#$00,0,0)":1},cursor:{default:1,pointer:1,move:1,text:1,wait:1,help:1,progress:1,"n-resize":1,"ne-resize":1,"e-resize":1,"se-resize":1,"s-resize":1,"sw-resize":1,"w-resize":1,"nw-resize":1},display:{none:1,block:1,inline:1,"inline-block":1,"table-cell":1},"empty-cells":{show:1,hide:1},float:{left:1,right:1,none:1},"font-family":{Arial:2,"Comic Sans MS":2,Consolas:2,"Courier New":2,Courier:2,Georgia:2,Monospace:2,"Sans-Serif":2,"Segoe UI":2,Tahoma:2,"Times New Roman":2,"Trebuchet MS":2,Verdana:1},"font-size":{px:1,em:1,"%":1},"font-weight":{bold:1,normal:1},"font-style":{italic:1,normal:1},"font-variant":{normal:1,"small-caps":1},height:{px:1,em:1,"%":1},left:{px:1,em:1,"%":1},"letter-spacing":{normal:1},"line-height":{normal:1},"list-style-type":{none:1,disc:1,circle:1,square:1,decimal:1,"decimal-leading-zero":1,"lower-roman":1,"upper-roman":1,"lower-greek":1,"lower-latin":1,"upper-latin":1,georgian:1,"lower-alpha":1,"upper-alpha":1},margin:{px:1,em:1,"%":1},"margin-right":{px:1,em:1,"%":1},"margin-left":{px:1,em:1,"%":1},"margin-top":{px:1,em:1,"%":1},"margin-bottom":{px:1,em:1,"%":1},"max-height":{px:1,em:1,"%":1},"max-width":{px:1,em:1,"%":1},"min-height":{px:1,em:1,"%":1},"min-width":{px:1,em:1,"%":1},overflow:{hidden:1,visible:1,auto:1,scroll:1},"overflow-x":{hidden:1,visible:1,auto:1,scroll:1},"overflow-y":{hidden:1,visible:1,auto:1,scroll:1},padding:{px:1,em:1,"%":1},"padding-top":{px:1,em:1,"%":1},"padding-right":{px:1,em:1,"%":1},"padding-bottom":{px:1,em:1,"%":1},"padding-left":{px:1,em:1,"%":1},"page-break-after":{auto:1,always:1,avoid:1,left:1,right:1},"page-break-before":{auto:1,always:1,avoid:1,left:1,right:1},position:{absolute:1,relative:1,fixed:1,static:1},right:{px:1,em:1,"%":1},"table-layout":{fixed:1,auto:1},"text-decoration":{none:1,underline:1,"line-through":1,blink:1},"text-align":{left:1,right:1,center:1,justify:1},"text-transform":{capitalize:1,uppercase:1,lowercase:1,none:1},top:{px:1,em:1,"%":1},"vertical-align":{top:1,bottom:1},visibility:{hidden:1,visible:1},"white-space":{nowrap:1,normal:1,pre:1,"pre-line":1,"pre-wrap":1},width:{px:1,em:1,"%":1},"word-spacing":{normal:1},filter:{"alpha(opacity=$0100)":1},"text-shadow":{"$02px 2px 2px #777":1},"text-overflow":{"ellipsis-word":1,clip:1,ellipsis:1},"-moz-border-radius":1,"-moz-border-radius-topright":1,"-moz-border-radius-bottomright":1,"-moz-border-radius-topleft":1,"-moz-border-radius-bottomleft":1,"-webkit-border-radius":1,"-webkit-border-top-right-radius":1,"-webkit-border-top-left-radius":1,"-webkit-border-bottom-right-radius":1,"-webkit-border-bottom-left-radius":1,"-moz-box-shadow":1,"-webkit-box-shadow":1,transform:{"rotate($00deg)":1,"skew($00deg)":1},"-moz-transform":{"rotate($00deg)":1,"skew($00deg)":1},"-webkit-transform":{"rotate($00deg)":1,"skew($00deg)":1}},o=function(){};(function(){this.completionsDefined=!1,this.defineCompletions=function(){if(document){var e=document.createElement("c").style;for(var t in e)if("string"==typeof e[t]){var n=t.replace(/[A-Z]/g,(function(e){return"-"+e.toLowerCase()}));i.hasOwnProperty(n)||(i[n]=1)}}this.completionsDefined=!0},this.getCompletions=function(e,t,n,i){if(this.completionsDefined||this.defineCompletions(),"ruleset"===e||"ace/mode/scss"==t.$mode.$id){var o=t.getLine(n.row).substr(0,n.column),r=/\([^)]*$/.test(o);return r&&(o=o.substr(o.lastIndexOf("(")+1)),/:[^;]+$/.test(o)?(/([\w\-]+):[^:]*$/.test(o),this.getPropertyValueCompletions(e,t,n,i)):this.getPropertyCompletions(e,t,n,i,r)}return[]},this.getPropertyCompletions=function(e,t,n,o,r){return r=r||!1,Object.keys(i).map((function(e){return{caption:e,snippet:e+": $0"+(r?"":";"),meta:"property",score:1e6}}))},this.getPropertyValueCompletions=function(e,t,n,o){var r=t.getLine(n.row).substr(0,n.column),s=(/([\w\-]+):[^:]*$/.exec(r)||{})[1];if(!s)return[];var a=[];return s in i&&"object"==typeof i[s]&&(a=Object.keys(i[s])),a.map((function(e){return{caption:e,snippet:e,meta:"property value",score:1e6}}))}}).call(o.prototype),t.CssCompletions=o})),ace.define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"],(function(e,t,n){"use strict";var i=e("../../lib/oop"),o=(e("../behaviour").Behaviour,e("./cstyle").CstyleBehaviour),r=e("../../token_iterator").TokenIterator,s=function(){this.inherit(o),this.add("colon","insertion",(function(e,t,n,i,o){if(":"===o&&n.selection.isEmpty()){var s=n.getCursorPosition(),a=new r(i,s.row,s.column),l=a.getCurrentToken();if(l&&l.value.match(/\s+/)&&(l=a.stepBackward()),l&&"support.type"===l.type){var c=i.doc.getLine(s.row);if(":"===c.substring(s.column,s.column+1))return{text:"",selection:[1,1]};if(/^(\s+[^;]|\s*$)/.test(c.substring(s.column)))return{text:":;",selection:[1,1]}}}})),this.add("colon","deletion",(function(e,t,n,i,o){var s=i.doc.getTextRange(o);if(!o.isMultiLine()&&":"===s){var a=n.getCursorPosition(),l=new r(i,a.row,a.column),c=l.getCurrentToken();if(c&&c.value.match(/\s+/)&&(c=l.stepBackward()),c&&"support.type"===c.type&&";"===i.doc.getLine(o.start.row).substring(o.end.column,o.end.column+1))return o.end.column++,o}})),this.add("semicolon","insertion",(function(e,t,n,i,o){if(";"===o&&n.selection.isEmpty()){var r=n.getCursorPosition();if(";"===i.doc.getLine(r.row).substring(r.column,r.column+1))return{text:"",selection:[1,1]}}})),this.add("!important","insertion",(function(e,t,n,i,o){if("!"===o&&n.selection.isEmpty()){var r=n.getCursorPosition(),s=i.doc.getLine(r.row);if(/^\s*(;|}|$)/.test(s.substring(r.column)))return{text:"!important",selection:[10,10]}}}))};i.inherits(s,o),t.CssBehaviour=s})),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],(function(e,t,n){"use strict";var i=e("../../lib/oop"),o=e("../../range").Range,r=e("./fold_mode").FoldMode,s=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};i.inherits(s,r),function(){this.foldingStartMarker=/([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var i=e.getLine(n);if(this.singleLineBlockCommentRe.test(i)&&!this.startRegionRe.test(i)&&!this.tripleStarBlockCommentRe.test(i))return"";var o=this._getFoldWidgetBase(e,t,n);return!o&&this.startRegionRe.test(i)?"start":o},this.getFoldWidgetRange=function(e,t,n,i){var o,r=e.getLine(n);if(this.startRegionRe.test(r))return this.getCommentRegionBlock(e,r,n);if(o=r.match(this.foldingStartMarker)){var s=o.index;if(o[1])return this.openingBracketBlock(e,o[1],n,s);var a=e.getCommentFoldRange(n,s+o[0].length,1);return a&&!a.isMultiLine()&&(i?a=this.getSectionRange(e,n):"all"!=t&&(a=null)),a}return"markbegin"!==t&&(o=r.match(this.foldingStopMarker))?(s=o.index+o[0].length,o[1]?this.closingBracketBlock(e,o[1],n,s):e.getCommentFoldRange(n,s,-1)):void 0},this.getSectionRange=function(e,t){for(var n=e.getLine(t),i=n.search(/\S/),r=t,s=n.length,a=t+=1,l=e.getLength();++tc)break;var u=this.getFoldWidgetRange(e,"all",t);if(u){if(u.start.row<=r)break;if(u.isMultiLine())t=u.end.row;else if(i==c)break}a=t}}return new o(r,s,a,e.getLine(a).length)},this.getCommentRegionBlock=function(e,t,n){for(var i=t.search(/\s*$/),r=e.getLength(),s=n,a=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,l=1;++ns)return new o(s,i,n,t.length)}}.call(s.prototype)})),ace.define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"],(function(e,t,n){"use strict";var i=e("../lib/oop"),o=e("./text").Mode,r=e("./css_highlight_rules").CssHighlightRules,s=e("./matching_brace_outdent").MatchingBraceOutdent,a=e("../worker/worker_client").WorkerClient,l=e("./css_completions").CssCompletions,c=e("./behaviour/css").CssBehaviour,u=e("./folding/cstyle").FoldMode,h=function(){this.HighlightRules=r,this.$outdent=new s,this.$behaviour=new c,this.$completer=new l,this.foldingRules=new u};i.inherits(h,o),function(){this.foldingRules="cStyle",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var i=this.$getIndent(t),o=this.getTokenizer().getLineTokens(t,e).tokens;return o.length&&"comment"==o[o.length-1].type||t.match(/^.*\{\s*$/)&&(i+=n),i},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.getCompletions=function(e,t,n,i){return this.$completer.getCompletions(e,t,n,i)},this.createWorker=function(e){var t=new a(["ace"],"ace/mode/css_worker","Worker");return t.attachToDocument(e.getDocument()),t.on("annotate",(function(t){e.setAnnotations(t.data)})),t.on("terminate",(function(){e.clearAnnotations()})),t},this.$id="ace/mode/css",this.snippetFileId="ace/snippets/css"}.call(h.prototype),t.Mode=h})),ace.require(["ace/mode/css"],(function(t){e&&(e.exports=t)}))},576:(e,t,n)=>{e=n.nmd(e),ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],(function(e,t,n){"use strict";var i=e("../lib/oop"),o=e("./text_highlight_rules").TextHighlightRules,r=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@\\w+(?=\\s|$)"},r.getTagRule(),{defaultToken:"comment.doc",caseInsensitive:!0}]}};i.inherits(r,o),r.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},r.getStartRule=function(e){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:e}},r.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=r})),ace.define("ace/mode/golang_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],(function(e,t,n){var i=e("../lib/oop"),o=e("./doc_comment_highlight_rules").DocCommentHighlightRules,r=e("./text_highlight_rules").TextHighlightRules,s=function(){var e=this.createKeywordMapper({keyword:"else|break|case|return|goto|if|const|select|continue|struct|default|switch|for|range|func|import|package|chan|defer|fallthrough|go|interface|map|range|select|type|var","constant.language":"nil|true|false|iota","support.function":"new|close|cap|copy|panic|panicln|print|println|len|make|delete|real|recover|imag|append","support.type":"string|uint8|uint16|uint32|uint64|int8|int16|int32|int64|float32|float64|complex64|complex128|byte|rune|uint|int|uintptr|bool|error"},""),t="\\\\(?:[0-7]{3}|x\\h{2}|u{4}|U\\h{6}|[abfnrtv'\"\\\\])".replace(/\\h/g,"[a-fA-F\\d]");this.$rules={start:[{token:"comment",regex:"\\/\\/.*$"},o.getStartRule("doc-start"),{token:"comment.start",regex:"\\/\\*",next:"comment"},{token:"string",regex:/"(?:[^"\\]|\\.)*?"/},{token:"string",regex:"`",next:"bqstring"},{token:"constant.numeric",regex:"'(?:[^\\'\ud800-\udbff]|[\ud800-\udbff][\udc00-\udfff]|"+t.replace('"',"")+")'"},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:["keyword","text","entity.name.function"],regex:"(func)(\\s+)([a-zA-Z_$][a-zA-Z0-9_$]*)\\b"},{token:function(t){return"("==t[t.length-1]?[{type:e(t.slice(0,-1))||"support.function",value:t.slice(0,-1)},{type:"paren.lparen",value:t.slice(-1)}]:e(t)||"identifier"},regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b\\(?"},{token:"keyword.operator",regex:"!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|==|=|!=|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^="},{token:"punctuation.operator",regex:"\\?|\\:|\\,|\\;|\\."},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"}],comment:[{token:"comment.end",regex:"\\*\\/",next:"start"},{defaultToken:"comment"}],bqstring:[{token:"string",regex:"`",next:"start"},{defaultToken:"string"}]},this.embedRules(o,"doc-",[o.getEndRule("start")])};i.inherits(s,r),t.GolangHighlightRules=s})),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],(function(e,t,n){"use strict";var i=e("../range").Range,o=function(){};(function(){this.checkOutdent=function(e,t){return!!/^\s+$/.test(e)&&/^\s*\}/.test(t)},this.autoOutdent=function(e,t){var n=e.getLine(t).match(/^(\s*\})/);if(!n)return 0;var o=n[1].length,r=e.findMatchingBracket({row:t,column:o});if(!r||r.row==t)return 0;var s=this.$getIndent(e.getLine(r.row));e.replace(new i(t,0,t,o-1),s)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(o.prototype),t.MatchingBraceOutdent=o})),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],(function(e,t,n){"use strict";var i=e("../../lib/oop"),o=e("../../range").Range,r=e("./fold_mode").FoldMode,s=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};i.inherits(s,r),function(){this.foldingStartMarker=/([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var i=e.getLine(n);if(this.singleLineBlockCommentRe.test(i)&&!this.startRegionRe.test(i)&&!this.tripleStarBlockCommentRe.test(i))return"";var o=this._getFoldWidgetBase(e,t,n);return!o&&this.startRegionRe.test(i)?"start":o},this.getFoldWidgetRange=function(e,t,n,i){var o,r=e.getLine(n);if(this.startRegionRe.test(r))return this.getCommentRegionBlock(e,r,n);if(o=r.match(this.foldingStartMarker)){var s=o.index;if(o[1])return this.openingBracketBlock(e,o[1],n,s);var a=e.getCommentFoldRange(n,s+o[0].length,1);return a&&!a.isMultiLine()&&(i?a=this.getSectionRange(e,n):"all"!=t&&(a=null)),a}return"markbegin"!==t&&(o=r.match(this.foldingStopMarker))?(s=o.index+o[0].length,o[1]?this.closingBracketBlock(e,o[1],n,s):e.getCommentFoldRange(n,s,-1)):void 0},this.getSectionRange=function(e,t){for(var n=e.getLine(t),i=n.search(/\S/),r=t,s=n.length,a=t+=1,l=e.getLength();++tc)break;var u=this.getFoldWidgetRange(e,"all",t);if(u){if(u.start.row<=r)break;if(u.isMultiLine())t=u.end.row;else if(i==c)break}a=t}}return new o(r,s,a,e.getLine(a).length)},this.getCommentRegionBlock=function(e,t,n){for(var i=t.search(/\s*$/),r=e.getLength(),s=n,a=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,l=1;++ns)return new o(s,i,n,t.length)}}.call(s.prototype)})),ace.define("ace/mode/golang",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/golang_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/folding/cstyle"],(function(e,t,n){var i=e("../lib/oop"),o=e("./text").Mode,r=e("./golang_highlight_rules").GolangHighlightRules,s=e("./matching_brace_outdent").MatchingBraceOutdent,a=e("./folding/cstyle").FoldMode,l=function(){this.HighlightRules=r,this.$outdent=new s,this.foldingRules=new a,this.$behaviour=this.$defaultBehaviour};i.inherits(l,o),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var i=this.$getIndent(t),o=this.getTokenizer().getLineTokens(t,e),r=o.tokens;return o.state,r.length&&"comment"==r[r.length-1].type||"start"==e&&t.match(/^.*[\{\(\[]\s*$/)&&(i+=n),i},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.$id="ace/mode/golang"}.call(l.prototype),t.Mode=l})),ace.require(["ace/mode/golang"],(function(t){e&&(e.exports=t)}))},395:(e,t,n)=>{e=n.nmd(e),ace.define("ace/mode/jsdoc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],(function(e,t,n){"use strict";var i=e("../lib/oop"),o=e("./text_highlight_rules").TextHighlightRules,r=function(){this.$rules={start:[{token:["comment.doc.tag","comment.doc.text","lparen.doc"],regex:"(@(?:param|member|typedef|property|namespace|var|const|callback))(\\s*)({)",push:[{token:"lparen.doc",regex:"{",push:[{include:"doc-syntax"},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"}]},{token:["rparen.doc","text.doc","variable.parameter.doc","lparen.doc","variable.parameter.doc","rparen.doc"],regex:/(})(\s*)(?:([\w=:\/\.]+)|(?:(\[)([\w=:\/\.]+)(\])))/,next:"pop"},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"},{include:"doc-syntax"},{defaultToken:"text.doc"}]},{token:["comment.doc.tag","text.doc","lparen.doc"],regex:"(@(?:returns?|yields|type|this|suppress|public|protected|private|package|modifies|implements|external|exception|throws|enum|define|extends))(\\s*)({)",push:[{token:"lparen.doc",regex:"{",push:[{include:"doc-syntax"},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"}]},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"},{include:"doc-syntax"},{defaultToken:"text.doc"}]},{token:["comment.doc.tag","text.doc","variable.parameter.doc"],regex:'(@(?:alias|memberof|instance|module|name|lends|namespace|external|this|template|requires|param|implements|function|extends|typedef|mixes|constructor|var|memberof\\!|event|listens|exports|class|constructs|interface|emits|fires|throws|const|callback|borrows|augments))(\\s+)(\\w[\\w#.:/~"\\-]*)?'},{token:["comment.doc.tag","text.doc","variable.parameter.doc"],regex:"(@method)(\\s+)(\\w[\\w.\\(\\)]*)"},{token:"comment.doc.tag",regex:"@access\\s+(?:private|public|protected)"},{token:"comment.doc.tag",regex:"@kind\\s+(?:class|constant|event|external|file|function|member|mixin|module|namespace|typedef)"},{token:"comment.doc.tag",regex:"@\\w+(?=\\s|$)"},r.getTagRule(),{defaultToken:"comment.doc",caseInsensitive:!0}],"doc-syntax":[{token:"operator.doc",regex:/[|:]/},{token:"paren.doc",regex:/[\[\]]/}]},this.normalizeRules()};i.inherits(r,o),r.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},r.getStartRule=function(e){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:e}},r.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.JsDocCommentHighlightRules=r})),ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/jsdoc_comment_highlight_rules","ace/mode/text_highlight_rules"],(function(e,t,n){"use strict";var i=e("../lib/oop"),o=e("./jsdoc_comment_highlight_rules").JsDocCommentHighlightRules,r=e("./text_highlight_rules").TextHighlightRules,s="[a-zA-Z\\$_¡-￿][a-zA-Z\\d\\$_¡-￿]*",a=function(e){var t=this.createKeywordMapper({"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Symbol|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",keyword:"const|yield|import|get|set|async|await|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static|constructor","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},"identifier"),n="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]{1,6}}|[0-2][0-7]{0,2}|3[0-7][0-7]?|[4-7][0-7]?|.)";this.$rules={no_regex:[o.getStartRule("doc-start"),c("no_regex"),{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/},{token:["storage.type","punctuation.operator","support.function","punctuation.operator","entity.name.function","text","keyword.operator"],regex:"("+s+")(\\.)(prototype)(\\.)("+s+")(\\s*)(=)",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+s+")(\\.)("+s+")(\\s*)(=)(\\s*)(function\\*?)(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+s+")(\\s*)(=)(\\s*)(function\\*?)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+s+")(\\.)("+s+")(\\s*)(=)(\\s*)(function\\*?)(\\s+)(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","entity.name.function","text","paren.lparen"],regex:"(function\\*?)(\\s+)("+s+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","paren.lparen"],regex:"("+s+")(\\s*)(:)(\\s*)(function\\*?)(\\s*)(\\()",next:"function_arguments"},{token:["text","text","storage.type","text","paren.lparen"],regex:"(:)(\\s*)(function\\*?)(\\s*)(\\()",next:"function_arguments"},{token:"keyword",regex:"from(?=\\s*('|\"))"},{token:"keyword",regex:"(?:case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void)\\b",next:"start"},{token:"support.constant",regex:/that\b/},{token:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/},{token:t,regex:s},{token:"punctuation.operator",regex:/[.](?![.])/,next:"property"},{token:"storage.type",regex:/=>/,next:"start"},{token:"keyword.operator",regex:/--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/,next:"start"},{token:"punctuation.operator",regex:/[?:,;.]/,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"comment",regex:/^#!.*$/}],property:[{token:"text",regex:"\\s+"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+s+")(\\.)("+s+")(\\s*)(=)(\\s*)(function\\*?)(?:(\\s+)(\\w+))?(\\s*)(\\()",next:"function_arguments"},{token:"punctuation.operator",regex:/[.](?![.])/},{token:"support.function",regex:/(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|lter|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward|rEach)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:"support.function.dom",regex:/(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:"support.constant",regex:/(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:"identifier",regex:s},{regex:"",token:"empty",next:"no_regex"}],start:[o.getStartRule("doc-start"),c("start"),{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],regex:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],default_parameter:[{token:"string",regex:"'(?=.)",push:[{token:"string",regex:"'|$",next:"pop"},{include:"qstring"}]},{token:"string",regex:'"(?=.)',push:[{token:"string",regex:'"|$',next:"pop"},{include:"qqstring"}]},{token:"constant.language",regex:"null|Infinity|NaN|undefined"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/},{token:"punctuation.operator",regex:",",next:"function_arguments"},{token:"text",regex:"\\s+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],function_arguments:[c("function_arguments"),{token:"variable.parameter",regex:s},{token:"punctuation.operator",regex:","},{token:"text",regex:"\\s+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],qqstring:[{token:"constant.language.escape",regex:n},{token:"string",regex:"\\\\$",consumeLineEnd:!0},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:n},{token:"string",regex:"\\\\$",consumeLineEnd:!0},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]},e&&e.noES6||(this.$rules.no_regex.unshift({regex:"[{}]",onMatch:function(e,t,n){if(this.next="{"==e?this.nextState:"","{"==e&&n.length)n.unshift("start",t);else if("}"==e&&n.length&&(n.shift(),this.next=n.shift(),-1!=this.next.indexOf("string")||-1!=this.next.indexOf("jsx")))return"paren.quasi.end";return"{"==e?"paren.lparen":"paren.rparen"},nextState:"start"},{token:"string.quasi.start",regex:/`/,push:[{token:"constant.language.escape",regex:n},{token:"paren.quasi.start",regex:/\${/,push:"start"},{token:"string.quasi.end",regex:/`/,next:"pop"},{defaultToken:"string.quasi"}]},{token:["variable.parameter","text"],regex:"("+s+")(\\s*)(?=\\=>)"},{token:"paren.lparen",regex:"(\\()(?=.+\\s*=>)",next:"function_arguments"},{token:"variable.language",regex:"(?:(?:(?:Weak)?(?:Set|Map))|Promise)\\b"}),this.$rules.function_arguments.unshift({token:"keyword.operator",regex:"=",next:"default_parameter"},{token:"keyword.operator",regex:"\\.{3}"}),this.$rules.property.unshift({token:"support.function",regex:"(findIndex|repeat|startsWith|endsWith|includes|isSafeInteger|trunc|cbrt|log2|log10|sign|then|catch|finally|resolve|reject|race|any|all|allSettled|keys|entries|isInteger)\\b(?=\\()"},{token:"constant.language",regex:"(?:MAX_SAFE_INTEGER|MIN_SAFE_INTEGER|EPSILON)\\b"}),e&&0==e.jsx||l.call(this)),this.embedRules(o,"doc-",[o.getEndRule("no_regex")]),this.normalizeRules()};function l(){var e=s.replace("\\d","\\d\\-"),t={onMatch:function(e,t,n){var i="/"==e.charAt(1)?2:1;return 1==i?(t!=this.nextState?n.unshift(this.next,this.nextState,0):n.unshift(this.next),n[2]++):2==i&&t==this.nextState&&(n[1]--,(!n[1]||n[1]<0)&&(n.shift(),n.shift())),[{type:"meta.tag.punctuation."+(1==i?"":"end-")+"tag-open.xml",value:e.slice(0,i)},{type:"meta.tag.tag-name.xml",value:e.substr(i)}]},regex:"",onMatch:function(e,t,n){return t==n[0]&&n.shift(),2==e.length&&(n[0]==this.nextState&&n[1]--,(!n[1]||n[1]<0)&&n.splice(0,2)),this.next=n[0]||"start",[{type:this.token,value:e}]},nextState:"jsx"},n,c("jsxAttributes"),{token:"entity.other.attribute-name.xml",regex:e},{token:"keyword.operator.attribute-equals.xml",regex:"="},{token:"text.tag-whitespace.xml",regex:"\\s+"},{token:"string.attribute-value.xml",regex:"'",stateName:"jsx_attr_q",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',stateName:"jsx_attr_qq",push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},t],this.$rules.reference=[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}]}function c(e){return[{token:"comment",regex:/\/\*/,next:[o.getTagRule(),{token:"comment",regex:"\\*\\/",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]},{token:"comment",regex:"\\/\\/",next:[o.getTagRule(),{token:"comment",regex:"$|^",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]}]}i.inherits(a,r),t.JavaScriptHighlightRules=a})),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],(function(e,t,n){"use strict";var i=e("../range").Range,o=function(){};(function(){this.checkOutdent=function(e,t){return!!/^\s+$/.test(e)&&/^\s*\}/.test(t)},this.autoOutdent=function(e,t){var n=e.getLine(t).match(/^(\s*\})/);if(!n)return 0;var o=n[1].length,r=e.findMatchingBracket({row:t,column:o});if(!r||r.row==t)return 0;var s=this.$getIndent(e.getLine(r.row));e.replace(new i(t,0,t,o-1),s)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(o.prototype),t.MatchingBraceOutdent=o})),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],(function(e,t,n){"use strict";var i=e("../../lib/oop"),o=e("../../range").Range,r=e("./fold_mode").FoldMode,s=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};i.inherits(s,r),function(){this.foldingStartMarker=/([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var i=e.getLine(n);if(this.singleLineBlockCommentRe.test(i)&&!this.startRegionRe.test(i)&&!this.tripleStarBlockCommentRe.test(i))return"";var o=this._getFoldWidgetBase(e,t,n);return!o&&this.startRegionRe.test(i)?"start":o},this.getFoldWidgetRange=function(e,t,n,i){var o,r=e.getLine(n);if(this.startRegionRe.test(r))return this.getCommentRegionBlock(e,r,n);if(o=r.match(this.foldingStartMarker)){var s=o.index;if(o[1])return this.openingBracketBlock(e,o[1],n,s);var a=e.getCommentFoldRange(n,s+o[0].length,1);return a&&!a.isMultiLine()&&(i?a=this.getSectionRange(e,n):"all"!=t&&(a=null)),a}return"markbegin"!==t&&(o=r.match(this.foldingStopMarker))?(s=o.index+o[0].length,o[1]?this.closingBracketBlock(e,o[1],n,s):e.getCommentFoldRange(n,s,-1)):void 0},this.getSectionRange=function(e,t){for(var n=e.getLine(t),i=n.search(/\S/),r=t,s=n.length,a=t+=1,l=e.getLength();++tc)break;var u=this.getFoldWidgetRange(e,"all",t);if(u){if(u.start.row<=r)break;if(u.isMultiLine())t=u.end.row;else if(i==c)break}a=t}}return new o(r,s,a,e.getLine(a).length)},this.getCommentRegionBlock=function(e,t,n){for(var i=t.search(/\s*$/),r=e.getLength(),s=n,a=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,l=1;++ns)return new o(s,i,n,t.length)}}.call(s.prototype)})),ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"],(function(e,t,n){"use strict";var i=e("../lib/oop"),o=e("./text").Mode,r=e("./javascript_highlight_rules").JavaScriptHighlightRules,s=e("./matching_brace_outdent").MatchingBraceOutdent,a=e("../worker/worker_client").WorkerClient,l=e("./behaviour/cstyle").CstyleBehaviour,c=e("./folding/cstyle").FoldMode,u=function(){this.HighlightRules=r,this.$outdent=new s,this.$behaviour=new l,this.foldingRules=new c};i.inherits(u,o),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.$quotes={'"':'"',"'":"'","`":"`"},this.$pairQuotesAfter={"`":/\w/},this.getNextLineIndent=function(e,t,n){var i=this.$getIndent(t),o=this.getTokenizer().getLineTokens(t,e),r=o.tokens,s=o.state;if(r.length&&"comment"==r[r.length-1].type)return i;if("start"==e||"no_regex"==e)(a=t.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/))&&(i+=n);else if("doc-start"==e){if("start"==s||"no_regex"==s)return"";var a;(a=t.match(/^\s*(\/?)\*/))&&(a[1]&&(i+=" "),i+="* ")}return i},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new a(["ace"],"ace/mode/javascript_worker","JavaScriptWorker");return t.attachToDocument(e.getDocument()),t.on("annotate",(function(t){e.setAnnotations(t.data)})),t.on("terminate",(function(){e.clearAnnotations()})),t},this.$id="ace/mode/javascript",this.snippetFileId="ace/snippets/javascript"}.call(u.prototype),t.Mode=u})),ace.require(["ace/mode/javascript"],(function(t){e&&(e.exports=t)}))},252:(e,t,n)=>{e=n.nmd(e),ace.define("ace/mode/json_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],(function(e,t,n){"use strict";var i=e("../lib/oop"),o=e("./text_highlight_rules").TextHighlightRules,r=function(){this.$rules={start:[{token:"variable",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]\\s*(?=:)'},{token:"string",regex:'"',next:"string"},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:"constant.language.boolean",regex:"(?:true|false)\\b"},{token:"text",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:"comment",regex:"\\/\\/.*$"},{token:"comment.start",regex:"\\/\\*",next:"comment"},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"punctuation.operator",regex:/[,]/},{token:"text",regex:"\\s+"}],string:[{token:"constant.language.escape",regex:/\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|["\\\/bfnrt])/},{token:"string",regex:'"|$',next:"start"},{defaultToken:"string"}],comment:[{token:"comment.end",regex:"\\*\\/",next:"start"},{defaultToken:"comment"}]}};i.inherits(r,o),t.JsonHighlightRules=r})),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],(function(e,t,n){"use strict";var i=e("../range").Range,o=function(){};(function(){this.checkOutdent=function(e,t){return!!/^\s+$/.test(e)&&/^\s*\}/.test(t)},this.autoOutdent=function(e,t){var n=e.getLine(t).match(/^(\s*\})/);if(!n)return 0;var o=n[1].length,r=e.findMatchingBracket({row:t,column:o});if(!r||r.row==t)return 0;var s=this.$getIndent(e.getLine(r.row));e.replace(new i(t,0,t,o-1),s)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(o.prototype),t.MatchingBraceOutdent=o})),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],(function(e,t,n){"use strict";var i=e("../../lib/oop"),o=e("../../range").Range,r=e("./fold_mode").FoldMode,s=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};i.inherits(s,r),function(){this.foldingStartMarker=/([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var i=e.getLine(n);if(this.singleLineBlockCommentRe.test(i)&&!this.startRegionRe.test(i)&&!this.tripleStarBlockCommentRe.test(i))return"";var o=this._getFoldWidgetBase(e,t,n);return!o&&this.startRegionRe.test(i)?"start":o},this.getFoldWidgetRange=function(e,t,n,i){var o,r=e.getLine(n);if(this.startRegionRe.test(r))return this.getCommentRegionBlock(e,r,n);if(o=r.match(this.foldingStartMarker)){var s=o.index;if(o[1])return this.openingBracketBlock(e,o[1],n,s);var a=e.getCommentFoldRange(n,s+o[0].length,1);return a&&!a.isMultiLine()&&(i?a=this.getSectionRange(e,n):"all"!=t&&(a=null)),a}return"markbegin"!==t&&(o=r.match(this.foldingStopMarker))?(s=o.index+o[0].length,o[1]?this.closingBracketBlock(e,o[1],n,s):e.getCommentFoldRange(n,s,-1)):void 0},this.getSectionRange=function(e,t){for(var n=e.getLine(t),i=n.search(/\S/),r=t,s=n.length,a=t+=1,l=e.getLength();++tc)break;var u=this.getFoldWidgetRange(e,"all",t);if(u){if(u.start.row<=r)break;if(u.isMultiLine())t=u.end.row;else if(i==c)break}a=t}}return new o(r,s,a,e.getLine(a).length)},this.getCommentRegionBlock=function(e,t,n){for(var i=t.search(/\s*$/),r=e.getLength(),s=n,a=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,l=1;++ns)return new o(s,i,n,t.length)}}.call(s.prototype)})),ace.define("ace/mode/json",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/json_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/folding/cstyle","ace/worker/worker_client"],(function(e,t,n){"use strict";var i=e("../lib/oop"),o=e("./text").Mode,r=e("./json_highlight_rules").JsonHighlightRules,s=e("./matching_brace_outdent").MatchingBraceOutdent,a=e("./folding/cstyle").FoldMode,l=e("../worker/worker_client").WorkerClient,c=function(){this.HighlightRules=r,this.$outdent=new s,this.$behaviour=this.$defaultBehaviour,this.foldingRules=new a};i.inherits(c,o),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var i=this.$getIndent(t);return"start"==e&&t.match(/^.*[\{\(\[]\s*$/)&&(i+=n),i},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new l(["ace"],"ace/mode/json_worker","JsonWorker");return t.attachToDocument(e.getDocument()),t.on("annotate",(function(t){e.setAnnotations(t.data)})),t.on("terminate",(function(){e.clearAnnotations()})),t},this.$id="ace/mode/json"}.call(c.prototype),t.Mode=c})),ace.require(["ace/mode/json"],(function(t){e&&(e.exports=t)}))},711:(e,t,n)=>{e=n.nmd(e),ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],(function(e,t,n){"use strict";var i=e("../lib/oop"),o=e("./text_highlight_rules").TextHighlightRules,r=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@\\w+(?=\\s|$)"},r.getTagRule(),{defaultToken:"comment.doc",caseInsensitive:!0}]}};i.inherits(r,o),r.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},r.getStartRule=function(e){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:e}},r.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=r})),ace.define("ace/mode/jsx_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],(function(e,t,n){var i=e("../lib/oop"),o=e("../lib/lang"),r=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,a=function(){var e=o.arrayToMap("break|do|instanceof|typeof|case|else|new|var|catch|finally|return|void|continue|for|switch|default|while|function|this|if|throw|delete|in|try|class|extends|super|import|from|into|implements|interface|static|mixin|override|abstract|final|number|int|string|boolean|variant|log|assert".split("|")),t=o.arrayToMap("null|true|false|NaN|Infinity|__FILE__|__LINE__|undefined".split("|")),n=o.arrayToMap("debugger|with|const|export|let|private|public|yield|protected|extern|native|as|operator|__fake__|__readonly__".split("|")),i="[a-zA-Z_][a-zA-Z0-9_]*\\b";this.$rules={start:[{token:"comment",regex:"\\/\\/.*$"},r.getStartRule("doc-start"),{token:"comment",regex:"\\/\\*",next:"comment"},{token:"string.regexp",regex:"[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/]\\w*\\s*(?=[).,;]|$)"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:"constant.language.boolean",regex:"(?:true|false)\\b"},{token:["storage.type","text","entity.name.function"],regex:"(function)(\\s+)("+i+")"},{token:function(i){return"this"==i?"variable.language":"function"==i?"storage.type":e.hasOwnProperty(i)||n.hasOwnProperty(i)?"keyword":t.hasOwnProperty(i)?"constant.language":/^_?[A-Z][a-zA-Z0-9_]*$/.test(i)?"language.support.class":"identifier"},regex:i},{token:"keyword.operator",regex:"!|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|==|=|!=|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)"},{token:"punctuation.operator",regex:"\\?|\\:|\\,|\\;|\\."},{token:"paren.lparen",regex:"[[({<]"},{token:"paren.rparen",regex:"[\\])}>]"},{token:"text",regex:"\\s+"}],comment:[{token:"comment",regex:"\\*\\/",next:"start"},{defaultToken:"comment"}]},this.embedRules(r,"doc-",[r.getEndRule("start")])};i.inherits(a,s),t.JsxHighlightRules=a})),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],(function(e,t,n){"use strict";var i=e("../range").Range,o=function(){};(function(){this.checkOutdent=function(e,t){return!!/^\s+$/.test(e)&&/^\s*\}/.test(t)},this.autoOutdent=function(e,t){var n=e.getLine(t).match(/^(\s*\})/);if(!n)return 0;var o=n[1].length,r=e.findMatchingBracket({row:t,column:o});if(!r||r.row==t)return 0;var s=this.$getIndent(e.getLine(r.row));e.replace(new i(t,0,t,o-1),s)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(o.prototype),t.MatchingBraceOutdent=o})),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],(function(e,t,n){"use strict";var i=e("../../lib/oop"),o=e("../../range").Range,r=e("./fold_mode").FoldMode,s=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};i.inherits(s,r),function(){this.foldingStartMarker=/([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var i=e.getLine(n);if(this.singleLineBlockCommentRe.test(i)&&!this.startRegionRe.test(i)&&!this.tripleStarBlockCommentRe.test(i))return"";var o=this._getFoldWidgetBase(e,t,n);return!o&&this.startRegionRe.test(i)?"start":o},this.getFoldWidgetRange=function(e,t,n,i){var o,r=e.getLine(n);if(this.startRegionRe.test(r))return this.getCommentRegionBlock(e,r,n);if(o=r.match(this.foldingStartMarker)){var s=o.index;if(o[1])return this.openingBracketBlock(e,o[1],n,s);var a=e.getCommentFoldRange(n,s+o[0].length,1);return a&&!a.isMultiLine()&&(i?a=this.getSectionRange(e,n):"all"!=t&&(a=null)),a}return"markbegin"!==t&&(o=r.match(this.foldingStopMarker))?(s=o.index+o[0].length,o[1]?this.closingBracketBlock(e,o[1],n,s):e.getCommentFoldRange(n,s,-1)):void 0},this.getSectionRange=function(e,t){for(var n=e.getLine(t),i=n.search(/\S/),r=t,s=n.length,a=t+=1,l=e.getLength();++tc)break;var u=this.getFoldWidgetRange(e,"all",t);if(u){if(u.start.row<=r)break;if(u.isMultiLine())t=u.end.row;else if(i==c)break}a=t}}return new o(r,s,a,e.getLine(a).length)},this.getCommentRegionBlock=function(e,t,n){for(var i=t.search(/\s*$/),r=e.getLength(),s=n,a=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,l=1;++ns)return new o(s,i,n,t.length)}}.call(s.prototype)})),ace.define("ace/mode/jsx",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/jsx_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/folding/cstyle"],(function(e,t,n){"use strict";var i=e("../lib/oop"),o=e("./text").Mode,r=e("./jsx_highlight_rules").JsxHighlightRules,s=e("./matching_brace_outdent").MatchingBraceOutdent,a=e("./folding/cstyle").FoldMode;function l(){this.HighlightRules=r,this.$outdent=new s,this.$behaviour=this.$defaultBehaviour,this.foldingRules=new a}i.inherits(l,o),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var i=this.$getIndent(t),o=this.getTokenizer().getLineTokens(t,e).tokens;return o.length&&"comment"==o[o.length-1].type||"start"==e&&t.match(/^.*[\{\(\[]\s*$/)&&(i+=n),i},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.$id="ace/mode/jsx"}.call(l.prototype),t.Mode=l})),ace.require(["ace/mode/jsx"],(function(t){e&&(e.exports=t)}))},7:(e,t,n)=>{e=n.nmd(e),ace.define("ace/mode/python_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],(function(e,t,n){"use strict";var i=e("../lib/oop"),o=e("./text_highlight_rules").TextHighlightRules,r=function(){var e=this.createKeywordMapper({"invalid.deprecated":"debugger","support.function":"abs|divmod|input|open|staticmethod|all|enumerate|int|ord|str|any|eval|isinstance|pow|sum|basestring|execfile|issubclass|print|super|binfile|bin|iter|property|tuple|bool|filter|len|range|type|bytearray|float|list|raw_input|unichr|callable|format|locals|reduce|unicode|chr|frozenset|long|reload|vars|classmethod|getattr|map|repr|xrange|cmp|globals|max|reversed|zip|compile|hasattr|memoryview|round|__import__|complex|hash|min|apply|delattr|help|next|setattr|set|buffer|dict|hex|object|slice|coerce|dir|id|oct|sorted|intern|ascii|breakpoint|bytes","variable.language":"self|cls","constant.language":"True|False|None|NotImplemented|Ellipsis|__debug__",keyword:"and|as|assert|break|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|not|or|pass|print|raise|return|try|while|with|yield|async|await|nonlocal"},"identifier"),t="[uU]?",n="[rR]",i="[fF]",o="(?:[rR][fF]|[fF][rR])",r="(?:(?:(?:[1-9]\\d*)|(?:0))|(?:0[oO]?[0-7]+)|(?:0[xX][\\dA-Fa-f]+)|(?:0[bB][01]+))",s="(?:\\d+)",a="(?:(?:"+s+"?(?:\\.\\d+))|(?:"+s+"\\.))",l="(?:(?:(?:"+a+"|"+s+")(?:[eE][+-]?\\d+))|"+a+")",c="\\\\(x[0-9A-Fa-f]{2}|[0-7]{3}|[\\\\abfnrtv'\"]|U[0-9A-Fa-f]{8}|u[0-9A-Fa-f]{4})";this.$rules={start:[{token:"comment",regex:"#.*$"},{token:"string",regex:t+'"{3}',next:"qqstring3"},{token:"string",regex:t+'"(?=.)',next:"qqstring"},{token:"string",regex:t+"'{3}",next:"qstring3"},{token:"string",regex:t+"'(?=.)",next:"qstring"},{token:"string",regex:n+'"{3}',next:"rawqqstring3"},{token:"string",regex:n+'"(?=.)',next:"rawqqstring"},{token:"string",regex:n+"'{3}",next:"rawqstring3"},{token:"string",regex:n+"'(?=.)",next:"rawqstring"},{token:"string",regex:i+'"{3}',next:"fqqstring3"},{token:"string",regex:i+'"(?=.)',next:"fqqstring"},{token:"string",regex:i+"'{3}",next:"fqstring3"},{token:"string",regex:i+"'(?=.)",next:"fqstring"},{token:"string",regex:o+'"{3}',next:"rfqqstring3"},{token:"string",regex:o+'"(?=.)',next:"rfqqstring"},{token:"string",regex:o+"'{3}",next:"rfqstring3"},{token:"string",regex:o+"'(?=.)",next:"rfqstring"},{token:"keyword.operator",regex:"\\+|\\-|\\*|\\*\\*|\\/|\\/\\/|%|@|<<|>>|&|\\||\\^|~|<|>|<=|=>|==|!=|<>|="},{token:"punctuation",regex:",|:|;|\\->|\\+=|\\-=|\\*=|\\/=|\\/\\/=|%=|@=|&=|\\|=|^=|>>=|<<=|\\*\\*="},{token:"paren.lparen",regex:"[\\[\\(\\{]"},{token:"paren.rparen",regex:"[\\]\\)\\}]"},{token:["keyword","text","entity.name.function"],regex:"(def|class)(\\s+)([\\u00BF-\\u1FFF\\u2C00-\\uD7FF\\w]+)"},{token:"text",regex:"\\s+"},{include:"constants"}],qqstring3:[{token:"constant.language.escape",regex:c},{token:"string",regex:'"{3}',next:"start"},{defaultToken:"string"}],qstring3:[{token:"constant.language.escape",regex:c},{token:"string",regex:"'{3}",next:"start"},{defaultToken:"string"}],qqstring:[{token:"constant.language.escape",regex:c},{token:"string",regex:"\\\\$",next:"qqstring"},{token:"string",regex:'"|$',next:"start"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:c},{token:"string",regex:"\\\\$",next:"qstring"},{token:"string",regex:"'|$",next:"start"},{defaultToken:"string"}],rawqqstring3:[{token:"string",regex:'"{3}',next:"start"},{defaultToken:"string"}],rawqstring3:[{token:"string",regex:"'{3}",next:"start"},{defaultToken:"string"}],rawqqstring:[{token:"string",regex:"\\\\$",next:"rawqqstring"},{token:"string",regex:'"|$',next:"start"},{defaultToken:"string"}],rawqstring:[{token:"string",regex:"\\\\$",next:"rawqstring"},{token:"string",regex:"'|$",next:"start"},{defaultToken:"string"}],fqqstring3:[{token:"constant.language.escape",regex:c},{token:"string",regex:'"{3}',next:"start"},{token:"paren.lparen",regex:"{",push:"fqstringParRules"},{defaultToken:"string"}],fqstring3:[{token:"constant.language.escape",regex:c},{token:"string",regex:"'{3}",next:"start"},{token:"paren.lparen",regex:"{",push:"fqstringParRules"},{defaultToken:"string"}],fqqstring:[{token:"constant.language.escape",regex:c},{token:"string",regex:"\\\\$",next:"fqqstring"},{token:"string",regex:'"|$',next:"start"},{token:"paren.lparen",regex:"{",push:"fqstringParRules"},{defaultToken:"string"}],fqstring:[{token:"constant.language.escape",regex:c},{token:"string",regex:"'|$",next:"start"},{token:"paren.lparen",regex:"{",push:"fqstringParRules"},{defaultToken:"string"}],rfqqstring3:[{token:"string",regex:'"{3}',next:"start"},{token:"paren.lparen",regex:"{",push:"fqstringParRules"},{defaultToken:"string"}],rfqstring3:[{token:"string",regex:"'{3}",next:"start"},{token:"paren.lparen",regex:"{",push:"fqstringParRules"},{defaultToken:"string"}],rfqqstring:[{token:"string",regex:"\\\\$",next:"rfqqstring"},{token:"string",regex:'"|$',next:"start"},{token:"paren.lparen",regex:"{",push:"fqstringParRules"},{defaultToken:"string"}],rfqstring:[{token:"string",regex:"'|$",next:"start"},{token:"paren.lparen",regex:"{",push:"fqstringParRules"},{defaultToken:"string"}],fqstringParRules:[{token:"paren.lparen",regex:"[\\[\\(]"},{token:"paren.rparen",regex:"[\\]\\)]"},{token:"string",regex:"\\s+"},{token:"string",regex:"'[^']*'"},{token:"string",regex:'"[^"]*"'},{token:"function.support",regex:"(!s|!r|!a)"},{include:"constants"},{token:"paren.rparen",regex:"}",next:"pop"},{token:"paren.lparen",regex:"{",push:"fqstringParRules"}],constants:[{token:"constant.numeric",regex:"(?:"+l+"|\\d+)[jJ]\\b"},{token:"constant.numeric",regex:l},{token:"constant.numeric",regex:r+"[lL]\\b"},{token:"constant.numeric",regex:r+"\\b"},{token:["punctuation","function.support"],regex:"(\\.)([a-zA-Z_]+)\\b"},{token:e,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"}]},this.normalizeRules()};i.inherits(r,o),t.PythonHighlightRules=r})),ace.define("ace/mode/folding/pythonic",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode"],(function(e,t,n){"use strict";var i=e("../../lib/oop"),o=e("./fold_mode").FoldMode,r=t.FoldMode=function(e){this.foldingStartMarker=new RegExp("([\\[{])(?:\\s*)$|("+e+")(?:\\s*)(?:#.*)?$")};i.inherits(r,o),function(){this.getFoldWidgetRange=function(e,t,n){var i=e.getLine(n).match(this.foldingStartMarker);if(i)return i[1]?this.openingBracketBlock(e,i[1],n,i.index):i[2]?this.indentationBlock(e,n,i.index+i[2].length):this.indentationBlock(e,n)}}.call(r.prototype)})),ace.define("ace/mode/python",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/python_highlight_rules","ace/mode/folding/pythonic","ace/range"],(function(e,t,n){"use strict";var i=e("../lib/oop"),o=e("./text").Mode,r=e("./python_highlight_rules").PythonHighlightRules,s=e("./folding/pythonic").FoldMode,a=e("../range").Range,l=function(){this.HighlightRules=r,this.foldingRules=new s("\\:"),this.$behaviour=this.$defaultBehaviour};i.inherits(l,o),function(){this.lineCommentStart="#",this.$pairQuotesAfter={"'":/[ruf]/i,'"':/[ruf]/i},this.getNextLineIndent=function(e,t,n){var i=this.$getIndent(t),o=this.getTokenizer().getLineTokens(t,e).tokens;return o.length&&"comment"==o[o.length-1].type||"start"==e&&t.match(/^.*[\{\(\[:]\s*$/)&&(i+=n),i};var e={pass:1,return:1,raise:1,break:1,continue:1};this.checkOutdent=function(t,n,i){if("\r\n"!==i&&"\r"!==i&&"\n"!==i)return!1;var o=this.getTokenizer().getLineTokens(n.trim(),t).tokens;if(!o)return!1;do{var r=o.pop()}while(r&&("comment"==r.type||"text"==r.type&&r.value.match(/^\s+$/)));return!!r&&"keyword"==r.type&&e[r.value]},this.autoOutdent=function(e,t,n){n+=1;var i=this.$getIndent(t.getLine(n)),o=t.getTabString();i.slice(-o.length)==o&&t.remove(new a(n,i.length-o.length,n,i.length))},this.$id="ace/mode/python",this.snippetFileId="ace/snippets/python"}.call(l.prototype),t.Mode=l})),ace.require(["ace/mode/python"],(function(t){e&&(e.exports=t)}))},202:(e,t,n)=>{e=n.nmd(e),ace.define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],(function(e,t,n){"use strict";var i=e("../lib/oop"),o=e("./text_highlight_rules").TextHighlightRules,r=function(e){var t="[_:a-zA-ZÀ-￿][-_:.a-zA-Z0-9À-￿]*";this.$rules={start:[{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\[",next:"cdata"},{token:["punctuation.instruction.xml","keyword.instruction.xml"],regex:"(<\\?)("+t+")",next:"processing_instruction"},{token:"comment.start.xml",regex:"<\\!--",next:"comment"},{token:["xml-pe.doctype.xml","xml-pe.doctype.xml"],regex:"(<\\!)(DOCTYPE)(?=[\\s])",next:"doctype",caseInsensitive:!0},{include:"tag"},{token:"text.end-tag-open.xml",regex:"",next:"start"}],doctype:[{include:"whitespace"},{include:"string"},{token:"xml-pe.doctype.xml",regex:">",next:"start"},{token:"xml-pe.xml",regex:"[-_a-zA-Z0-9:]+"},{token:"punctuation.int-subset",regex:"\\[",push:"int_subset"}],int_subset:[{token:"text.xml",regex:"\\s+"},{token:"punctuation.int-subset.xml",regex:"]",next:"pop"},{token:["punctuation.markup-decl.xml","keyword.markup-decl.xml"],regex:"(<\\!)("+t+")",push:[{token:"text",regex:"\\s+"},{token:"punctuation.markup-decl.xml",regex:">",next:"pop"},{include:"string"}]}],cdata:[{token:"string.cdata.xml",regex:"\\]\\]>",next:"start"},{token:"text.xml",regex:"\\s+"},{token:"text.xml",regex:"(?:[^\\]]|\\](?!\\]>))+"}],comment:[{token:"comment.end.xml",regex:"--\x3e",next:"start"},{defaultToken:"comment.xml"}],reference:[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],attr_reference:[{token:"constant.language.escape.reference.attribute-value.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],tag:[{token:["meta.tag.punctuation.tag-open.xml","meta.tag.punctuation.end-tag-open.xml","meta.tag.tag-name.xml"],regex:"(?:(<)|(",next:"start"}]}],tag_whitespace:[{token:"text.tag-whitespace.xml",regex:"\\s+"}],whitespace:[{token:"text.whitespace.xml",regex:"\\s+"}],string:[{token:"string.xml",regex:"'",push:[{token:"string.xml",regex:"'",next:"pop"},{defaultToken:"string.xml"}]},{token:"string.xml",regex:'"',push:[{token:"string.xml",regex:'"',next:"pop"},{defaultToken:"string.xml"}]}],attributes:[{token:"entity.other.attribute-name.xml",regex:t},{token:"keyword.operator.attribute-equals.xml",regex:"="},{include:"tag_whitespace"},{include:"attribute_value"}],attribute_value:[{token:"string.attribute-value.xml",regex:"'",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]}]},this.constructor===r&&this.normalizeRules()};(function(){this.embedTagRules=function(e,t,n){this.$rules.tag.unshift({token:["meta.tag.punctuation.tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(<)("+n+"(?=\\s|>|$))",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:t+"start"}]}),this.$rules[n+"-end"]=[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start",onMatch:function(e,t,n){return n.splice(0),this.token}}],this.embedRules(e,t,[{token:["meta.tag.punctuation.end-tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(|$))",next:n+"-end"},{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\["},{token:"string.cdata.xml",regex:"\\]\\]>"}])}}).call(o.prototype),i.inherits(r,o),t.XmlHighlightRules=r})),ace.define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],(function(e,t,n){"use strict";var i=e("../../lib/oop"),o=e("../behaviour").Behaviour,r=e("../../token_iterator").TokenIterator;function s(e,t){return e&&e.type.lastIndexOf(t+".xml")>-1}e("../../lib/lang");var a=function(){this.add("string_dquotes","insertion",(function(e,t,n,i,o){if('"'==o||"'"==o){var a=o,l=i.doc.getTextRange(n.getSelectionRange());if(""!==l&&"'"!==l&&'"'!=l&&n.getWrapBehavioursEnabled())return{text:a+l+a,selection:!1};var c=n.getCursorPosition(),u=i.doc.getLine(c.row).substring(c.column,c.column+1),h=new r(i,c.row,c.column),d=h.getCurrentToken();if(u==a&&(s(d,"attribute-value")||s(d,"string")))return{text:"",selection:[1,1]};if(d||(d=h.stepBackward()),!d)return;for(;s(d,"tag-whitespace")||s(d,"whitespace");)d=h.stepBackward();var p=!u||u.match(/\s/);if(s(d,"attribute-equals")&&(p||">"==u)||s(d,"decl-attribute-equals")&&(p||"?"==u))return{text:a+a,selection:[1,1]}}})),this.add("string_dquotes","deletion",(function(e,t,n,i,o){var r=i.doc.getTextRange(o);if(!o.isMultiLine()&&('"'==r||"'"==r)&&i.doc.getLine(o.start.row).substring(o.start.column+1,o.start.column+2)==r)return o.end.column++,o})),this.add("autoclosing","insertion",(function(e,t,n,i,o){if(">"==o){var a=n.getSelectionRange().start,l=new r(i,a.row,a.column),c=l.getCurrentToken()||l.stepBackward();if(!c||!(s(c,"tag-name")||s(c,"tag-whitespace")||s(c,"attribute-name")||s(c,"attribute-equals")||s(c,"attribute-value")))return;if(s(c,"reference.attribute-value"))return;if(s(c,"attribute-value")){var u=l.getCurrentTokenColumn()+c.value.length;if(a.column/.test(i.getLine(a.row).slice(a.column)))return;for(;!s(c,"tag-name");)if("<"==(c=l.stepBackward()).value){c=l.stepForward();break}var d=l.getCurrentTokenRow(),p=l.getCurrentTokenColumn();if(s(l.stepBackward(),"end-tag-open"))return;var g=c.value;if(d==a.row&&(g=g.substring(0,a.column-p)),this.voidElements.hasOwnProperty(g.toLowerCase()))return;return{text:">",selection:[1,1]}}})),this.add("autoindent","insertion",(function(e,t,n,i,o){if("\n"==o){var s=n.getCursorPosition(),a=i.getLine(s.row),l=new r(i,s.row,s.column),c=l.getCurrentToken();if(c&&-1!==c.type.indexOf("tag-close")){if("/>"==c.value)return;for(;c&&-1===c.type.indexOf("tag-name");)c=l.stepBackward();if(!c)return;var u=c.value,h=l.getCurrentTokenRow();if(!(c=l.stepBackward())||-1!==c.type.indexOf("end-tag"))return;if(this.voidElements&&!this.voidElements[u]){var d=i.getTokenAt(s.row,s.column+1),p=(a=i.getLine(h),this.$getIndent(a)),g=p+i.getTabString();return d&&"-1}(function(){this.getFoldWidget=function(e,t,n){var i=this._getFirstTagInLine(e,n);return i?i.closing||!i.tagName&&i.selfClosing?"markbeginend"===t?"end":"":!i.tagName||i.selfClosing||this.voidElements.hasOwnProperty(i.tagName.toLowerCase())||this._findEndTagInLine(e,n,i.tagName,i.end.column)?"":"start":this.getCommentFoldWidget(e,n)},this.getCommentFoldWidget=function(e,t){return/comment/.test(e.getState(t))&&/"==r.value;break}return i}if(l(r,"tag-close"))return i.selfClosing="/>"==r.value,i;i.start.column+=r.value.length}return null},this._findEndTagInLine=function(e,t,n,i){for(var o=e.getTokens(t),r=0,s=0;s{e=n.nmd(e),ace.define("ace/theme/github-css",["require","exports","module"],(function(e,t,n){n.exports='/* CSS style content from github\'s default pygments highlighter template.\n Cursor and selection styles from textmate.css. */\n.ace-github .ace_gutter {\n background: #e8e8e8;\n color: #AAA;\n}\n\n.ace-github {\n background: #fff;\n color: #000;\n}\n\n.ace-github .ace_keyword {\n font-weight: bold;\n}\n\n.ace-github .ace_string {\n color: #D14;\n}\n\n.ace-github .ace_variable.ace_class {\n color: teal;\n}\n\n.ace-github .ace_constant.ace_numeric {\n color: #099;\n}\n\n.ace-github .ace_constant.ace_buildin {\n color: #0086B3;\n}\n\n.ace-github .ace_support.ace_function {\n color: #0086B3;\n}\n\n.ace-github .ace_comment {\n color: #998;\n font-style: italic;\n}\n\n.ace-github .ace_variable.ace_language {\n color: #0086B3;\n}\n\n.ace-github .ace_paren {\n font-weight: bold;\n}\n\n.ace-github .ace_boolean {\n font-weight: bold;\n}\n\n.ace-github .ace_string.ace_regexp {\n color: #009926;\n font-weight: normal;\n}\n\n.ace-github .ace_variable.ace_instance {\n color: teal;\n}\n\n.ace-github .ace_constant.ace_language {\n font-weight: bold;\n}\n\n.ace-github .ace_cursor {\n color: black;\n}\n\n.ace-github.ace_focus .ace_marker-layer .ace_active-line {\n background: rgb(255, 255, 204);\n}\n.ace-github .ace_marker-layer .ace_active-line {\n background: rgb(245, 245, 245);\n}\n\n.ace-github .ace_marker-layer .ace_selection {\n background: rgb(181, 213, 255);\n}\n\n.ace-github.ace_multiselect .ace_selection.ace_start {\n box-shadow: 0 0 3px 0px white;\n}\n/* bold keywords cause cursor issues for some fonts */\n/* this disables bold style for editor and keeps for static highlighter */\n.ace-github.ace_nobold .ace_line > span {\n font-weight: normal !important;\n}\n\n.ace-github .ace_marker-layer .ace_step {\n background: rgb(252, 255, 0);\n}\n\n.ace-github .ace_marker-layer .ace_stack {\n background: rgb(164, 229, 101);\n}\n\n.ace-github .ace_marker-layer .ace_bracket {\n margin: -1px 0 0 -1px;\n border: 1px solid rgb(192, 192, 192);\n}\n\n.ace-github .ace_gutter-active-line {\n background-color : rgba(0, 0, 0, 0.07);\n}\n\n.ace-github .ace_marker-layer .ace_selected-word {\n background: rgb(250, 250, 255);\n border: 1px solid rgb(200, 200, 250);\n}\n\n.ace-github .ace_invisible {\n color: #BFBFBF\n}\n\n.ace-github .ace_print-margin {\n width: 1px;\n background: #e8e8e8;\n}\n\n.ace-github .ace_indent-guide {\n background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y;\n}\n\n.ace-github .ace_indent-guide-active {\n background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAAZSURBVHjaYvj///9/hivKyv8BAAAA//8DACLqBhbvk+/eAAAAAElFTkSuQmCC") right repeat-y;\n}\n'})),ace.define("ace/theme/github",["require","exports","module","ace/theme/github-css","ace/lib/dom"],(function(e,t,n){t.isDark=!1,t.cssClass="ace-github",t.cssText=e("./github-css"),e("../lib/dom").importCssString(t.cssText,t.cssClass,!1)})),ace.require(["ace/theme/github"],(function(t){e&&(e.exports=t)}))},821:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});var i=n(537),o=n.n(i),r=n(645),s=n.n(r)()(o());s.push([e.id,'.flatpickr-calendar{background:transparent;opacity:0;display:none;text-align:center;visibility:hidden;padding:0;-webkit-animation:none;animation:none;direction:ltr;border:0;font-size:14px;line-height:24px;border-radius:5px;position:absolute;width:307.875px;-webkit-box-sizing:border-box;box-sizing:border-box;-ms-touch-action:manipulation;touch-action:manipulation;background:#fff;-webkit-box-shadow:1px 0 0 #e6e6e6,-1px 0 0 #e6e6e6,0 1px 0 #e6e6e6,0 -1px 0 #e6e6e6,0 3px 13px rgba(0,0,0,0.08);box-shadow:1px 0 0 #e6e6e6,-1px 0 0 #e6e6e6,0 1px 0 #e6e6e6,0 -1px 0 #e6e6e6,0 3px 13px rgba(0,0,0,0.08)}.flatpickr-calendar.open,.flatpickr-calendar.inline{opacity:1;max-height:640px;visibility:visible}.flatpickr-calendar.open{display:inline-block;z-index:99999}.flatpickr-calendar.animate.open{-webkit-animation:fpFadeInDown 300ms cubic-bezier(.23,1,.32,1);animation:fpFadeInDown 300ms cubic-bezier(.23,1,.32,1)}.flatpickr-calendar.inline{display:block;position:relative;top:2px}.flatpickr-calendar.static{position:absolute;top:calc(100% + 2px)}.flatpickr-calendar.static.open{z-index:999;display:block}.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+1) .flatpickr-day.inRange:nth-child(7n+7){-webkit-box-shadow:none !important;box-shadow:none !important}.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+2) .flatpickr-day.inRange:nth-child(7n+1){-webkit-box-shadow:-2px 0 0 #e6e6e6,5px 0 0 #e6e6e6;box-shadow:-2px 0 0 #e6e6e6,5px 0 0 #e6e6e6}.flatpickr-calendar .hasWeeks .dayContainer,.flatpickr-calendar .hasTime .dayContainer{border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.flatpickr-calendar .hasWeeks .dayContainer{border-left:0}.flatpickr-calendar.hasTime .flatpickr-time{height:40px;border-top:1px solid #e6e6e6}.flatpickr-calendar.noCalendar.hasTime .flatpickr-time{height:auto}.flatpickr-calendar:before,.flatpickr-calendar:after{position:absolute;display:block;pointer-events:none;border:solid transparent;content:\'\';height:0;width:0;left:22px}.flatpickr-calendar.rightMost:before,.flatpickr-calendar.arrowRight:before,.flatpickr-calendar.rightMost:after,.flatpickr-calendar.arrowRight:after{left:auto;right:22px}.flatpickr-calendar.arrowCenter:before,.flatpickr-calendar.arrowCenter:after{left:50%;right:50%}.flatpickr-calendar:before{border-width:5px;margin:0 -5px}.flatpickr-calendar:after{border-width:4px;margin:0 -4px}.flatpickr-calendar.arrowTop:before,.flatpickr-calendar.arrowTop:after{bottom:100%}.flatpickr-calendar.arrowTop:before{border-bottom-color:#e6e6e6}.flatpickr-calendar.arrowTop:after{border-bottom-color:#fff}.flatpickr-calendar.arrowBottom:before,.flatpickr-calendar.arrowBottom:after{top:100%}.flatpickr-calendar.arrowBottom:before{border-top-color:#e6e6e6}.flatpickr-calendar.arrowBottom:after{border-top-color:#fff}.flatpickr-calendar:focus{outline:0}.flatpickr-wrapper{position:relative;display:inline-block}.flatpickr-months{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.flatpickr-months .flatpickr-month{background:transparent;color:rgba(0,0,0,0.9);fill:rgba(0,0,0,0.9);height:34px;line-height:1;text-align:center;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:hidden;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}.flatpickr-months .flatpickr-prev-month,.flatpickr-months .flatpickr-next-month{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;text-decoration:none;cursor:pointer;position:absolute;top:0;height:34px;padding:10px;z-index:3;color:rgba(0,0,0,0.9);fill:rgba(0,0,0,0.9)}.flatpickr-months .flatpickr-prev-month.flatpickr-disabled,.flatpickr-months .flatpickr-next-month.flatpickr-disabled{display:none}.flatpickr-months .flatpickr-prev-month i,.flatpickr-months .flatpickr-next-month i{position:relative}.flatpickr-months .flatpickr-prev-month.flatpickr-prev-month,.flatpickr-months .flatpickr-next-month.flatpickr-prev-month{/*\n /*rtl:begin:ignore*/left:0/*\n /*rtl:end:ignore*/}/*\n /*rtl:begin:ignore*/\n/*\n /*rtl:end:ignore*/\n.flatpickr-months .flatpickr-prev-month.flatpickr-next-month,.flatpickr-months .flatpickr-next-month.flatpickr-next-month{/*\n /*rtl:begin:ignore*/right:0/*\n /*rtl:end:ignore*/}/*\n /*rtl:begin:ignore*/\n/*\n /*rtl:end:ignore*/\n.flatpickr-months .flatpickr-prev-month:hover,.flatpickr-months .flatpickr-next-month:hover{color:#959ea9}.flatpickr-months .flatpickr-prev-month:hover svg,.flatpickr-months .flatpickr-next-month:hover svg{fill:#f64747}.flatpickr-months .flatpickr-prev-month svg,.flatpickr-months .flatpickr-next-month svg{width:14px;height:14px}.flatpickr-months .flatpickr-prev-month svg path,.flatpickr-months .flatpickr-next-month svg path{-webkit-transition:fill .1s;transition:fill .1s;fill:inherit}.numInputWrapper{position:relative;height:auto}.numInputWrapper input,.numInputWrapper span{display:inline-block}.numInputWrapper input{width:100%}.numInputWrapper input::-ms-clear{display:none}.numInputWrapper input::-webkit-outer-spin-button,.numInputWrapper input::-webkit-inner-spin-button{margin:0;-webkit-appearance:none}.numInputWrapper span{position:absolute;right:0;width:14px;padding:0 4px 0 2px;height:50%;line-height:50%;opacity:0;cursor:pointer;border:1px solid rgba(57,57,57,0.15);-webkit-box-sizing:border-box;box-sizing:border-box}.numInputWrapper span:hover{background:rgba(0,0,0,0.1)}.numInputWrapper span:active{background:rgba(0,0,0,0.2)}.numInputWrapper span:after{display:block;content:"";position:absolute}.numInputWrapper span.arrowUp{top:0;border-bottom:0}.numInputWrapper span.arrowUp:after{border-left:4px solid transparent;border-right:4px solid transparent;border-bottom:4px solid rgba(57,57,57,0.6);top:26%}.numInputWrapper span.arrowDown{top:50%}.numInputWrapper span.arrowDown:after{border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px solid rgba(57,57,57,0.6);top:40%}.numInputWrapper span svg{width:inherit;height:auto}.numInputWrapper span svg path{fill:rgba(0,0,0,0.5)}.numInputWrapper:hover{background:rgba(0,0,0,0.05)}.numInputWrapper:hover span{opacity:1}.flatpickr-current-month{font-size:135%;line-height:inherit;font-weight:300;color:inherit;position:absolute;width:75%;left:12.5%;padding:7.48px 0 0 0;line-height:1;height:34px;display:inline-block;text-align:center;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.flatpickr-current-month span.cur-month{font-family:inherit;font-weight:700;color:inherit;display:inline-block;margin-left:.5ch;padding:0}.flatpickr-current-month span.cur-month:hover{background:rgba(0,0,0,0.05)}.flatpickr-current-month .numInputWrapper{width:6ch;width:7ch\\0;display:inline-block}.flatpickr-current-month .numInputWrapper span.arrowUp:after{border-bottom-color:rgba(0,0,0,0.9)}.flatpickr-current-month .numInputWrapper span.arrowDown:after{border-top-color:rgba(0,0,0,0.9)}.flatpickr-current-month input.cur-year{background:transparent;-webkit-box-sizing:border-box;box-sizing:border-box;color:inherit;cursor:text;padding:0 0 0 .5ch;margin:0;display:inline-block;font-size:inherit;font-family:inherit;font-weight:300;line-height:inherit;height:auto;border:0;border-radius:0;vertical-align:initial;-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.flatpickr-current-month input.cur-year:focus{outline:0}.flatpickr-current-month input.cur-year[disabled],.flatpickr-current-month input.cur-year[disabled]:hover{font-size:100%;color:rgba(0,0,0,0.5);background:transparent;pointer-events:none}.flatpickr-current-month .flatpickr-monthDropdown-months{appearance:menulist;background:transparent;border:none;border-radius:0;box-sizing:border-box;color:inherit;cursor:pointer;font-size:inherit;font-family:inherit;font-weight:300;height:auto;line-height:inherit;margin:-1px 0 0 0;outline:none;padding:0 0 0 .5ch;position:relative;vertical-align:initial;-webkit-box-sizing:border-box;-webkit-appearance:menulist;-moz-appearance:menulist;width:auto}.flatpickr-current-month .flatpickr-monthDropdown-months:focus,.flatpickr-current-month .flatpickr-monthDropdown-months:active{outline:none}.flatpickr-current-month .flatpickr-monthDropdown-months:hover{background:rgba(0,0,0,0.05)}.flatpickr-current-month .flatpickr-monthDropdown-months .flatpickr-monthDropdown-month{background-color:transparent;outline:none;padding:0}.flatpickr-weekdays{background:transparent;text-align:center;overflow:hidden;width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;height:28px}.flatpickr-weekdays .flatpickr-weekdaycontainer{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}span.flatpickr-weekday{cursor:default;font-size:90%;background:transparent;color:rgba(0,0,0,0.54);line-height:1;margin:0;text-align:center;display:block;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;font-weight:bolder}.dayContainer,.flatpickr-weeks{padding:1px 0 0 0}.flatpickr-days{position:relative;overflow:hidden;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:flex-start;width:307.875px}.flatpickr-days:focus{outline:0}.dayContainer{padding:0;outline:0;text-align:left;width:307.875px;min-width:307.875px;max-width:307.875px;-webkit-box-sizing:border-box;box-sizing:border-box;display:inline-block;display:-ms-flexbox;display:-webkit-box;display:-webkit-flex;display:flex;-webkit-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-wrap:wrap;-ms-flex-pack:justify;-webkit-justify-content:space-around;justify-content:space-around;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}.dayContainer + .dayContainer{-webkit-box-shadow:-1px 0 0 #e6e6e6;box-shadow:-1px 0 0 #e6e6e6}.flatpickr-day{background:none;border:1px solid transparent;border-radius:150px;-webkit-box-sizing:border-box;box-sizing:border-box;color:#393939;cursor:pointer;font-weight:400;width:14.2857143%;-webkit-flex-basis:14.2857143%;-ms-flex-preferred-size:14.2857143%;flex-basis:14.2857143%;max-width:39px;height:39px;line-height:39px;margin:0;display:inline-block;position:relative;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;text-align:center}.flatpickr-day.inRange,.flatpickr-day.prevMonthDay.inRange,.flatpickr-day.nextMonthDay.inRange,.flatpickr-day.today.inRange,.flatpickr-day.prevMonthDay.today.inRange,.flatpickr-day.nextMonthDay.today.inRange,.flatpickr-day:hover,.flatpickr-day.prevMonthDay:hover,.flatpickr-day.nextMonthDay:hover,.flatpickr-day:focus,.flatpickr-day.prevMonthDay:focus,.flatpickr-day.nextMonthDay:focus{cursor:pointer;outline:0;background:#e6e6e6;border-color:#e6e6e6}.flatpickr-day.today{border-color:#959ea9}.flatpickr-day.today:hover,.flatpickr-day.today:focus{border-color:#959ea9;background:#959ea9;color:#fff}.flatpickr-day.selected,.flatpickr-day.startRange,.flatpickr-day.endRange,.flatpickr-day.selected.inRange,.flatpickr-day.startRange.inRange,.flatpickr-day.endRange.inRange,.flatpickr-day.selected:focus,.flatpickr-day.startRange:focus,.flatpickr-day.endRange:focus,.flatpickr-day.selected:hover,.flatpickr-day.startRange:hover,.flatpickr-day.endRange:hover,.flatpickr-day.selected.prevMonthDay,.flatpickr-day.startRange.prevMonthDay,.flatpickr-day.endRange.prevMonthDay,.flatpickr-day.selected.nextMonthDay,.flatpickr-day.startRange.nextMonthDay,.flatpickr-day.endRange.nextMonthDay{background:#569ff7;-webkit-box-shadow:none;box-shadow:none;color:#fff;border-color:#569ff7}.flatpickr-day.selected.startRange,.flatpickr-day.startRange.startRange,.flatpickr-day.endRange.startRange{border-radius:50px 0 0 50px}.flatpickr-day.selected.endRange,.flatpickr-day.startRange.endRange,.flatpickr-day.endRange.endRange{border-radius:0 50px 50px 0}.flatpickr-day.selected.startRange + .endRange:not(:nth-child(7n+1)),.flatpickr-day.startRange.startRange + .endRange:not(:nth-child(7n+1)),.flatpickr-day.endRange.startRange + .endRange:not(:nth-child(7n+1)){-webkit-box-shadow:-10px 0 0 #569ff7;box-shadow:-10px 0 0 #569ff7}.flatpickr-day.selected.startRange.endRange,.flatpickr-day.startRange.startRange.endRange,.flatpickr-day.endRange.startRange.endRange{border-radius:50px}.flatpickr-day.inRange{border-radius:0;-webkit-box-shadow:-5px 0 0 #e6e6e6,5px 0 0 #e6e6e6;box-shadow:-5px 0 0 #e6e6e6,5px 0 0 #e6e6e6}.flatpickr-day.flatpickr-disabled,.flatpickr-day.flatpickr-disabled:hover,.flatpickr-day.prevMonthDay,.flatpickr-day.nextMonthDay,.flatpickr-day.notAllowed,.flatpickr-day.notAllowed.prevMonthDay,.flatpickr-day.notAllowed.nextMonthDay{color:rgba(57,57,57,0.3);background:transparent;border-color:transparent;cursor:default}.flatpickr-day.flatpickr-disabled,.flatpickr-day.flatpickr-disabled:hover{cursor:not-allowed;color:rgba(57,57,57,0.1)}.flatpickr-day.week.selected{border-radius:0;-webkit-box-shadow:-5px 0 0 #569ff7,5px 0 0 #569ff7;box-shadow:-5px 0 0 #569ff7,5px 0 0 #569ff7}.flatpickr-day.hidden{visibility:hidden}.rangeMode .flatpickr-day{margin-top:1px}.flatpickr-weekwrapper{float:left}.flatpickr-weekwrapper .flatpickr-weeks{padding:0 12px;-webkit-box-shadow:1px 0 0 #e6e6e6;box-shadow:1px 0 0 #e6e6e6}.flatpickr-weekwrapper .flatpickr-weekday{float:none;width:100%;line-height:28px}.flatpickr-weekwrapper span.flatpickr-day,.flatpickr-weekwrapper span.flatpickr-day:hover{display:block;width:100%;max-width:none;color:rgba(57,57,57,0.3);background:transparent;cursor:default;border:none}.flatpickr-innerContainer{display:block;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden}.flatpickr-rContainer{display:inline-block;padding:0;-webkit-box-sizing:border-box;box-sizing:border-box}.flatpickr-time{text-align:center;outline:0;display:block;height:0;line-height:40px;max-height:40px;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.flatpickr-time:after{content:"";display:table;clear:both}.flatpickr-time .numInputWrapper{-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;width:40%;height:40px;float:left}.flatpickr-time .numInputWrapper span.arrowUp:after{border-bottom-color:#393939}.flatpickr-time .numInputWrapper span.arrowDown:after{border-top-color:#393939}.flatpickr-time.hasSeconds .numInputWrapper{width:26%}.flatpickr-time.time24hr .numInputWrapper{width:49%}.flatpickr-time input{background:transparent;-webkit-box-shadow:none;box-shadow:none;border:0;border-radius:0;text-align:center;margin:0;padding:0;height:inherit;line-height:inherit;color:#393939;font-size:14px;position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.flatpickr-time input.flatpickr-hour{font-weight:bold}.flatpickr-time input.flatpickr-minute,.flatpickr-time input.flatpickr-second{font-weight:400}.flatpickr-time input:focus{outline:0;border:0}.flatpickr-time .flatpickr-time-separator,.flatpickr-time .flatpickr-am-pm{height:inherit;float:left;line-height:inherit;color:#393939;font-weight:bold;width:2%;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-align-self:center;-ms-flex-item-align:center;align-self:center}.flatpickr-time .flatpickr-am-pm{outline:0;width:18%;cursor:pointer;text-align:center;font-weight:400}.flatpickr-time input:hover,.flatpickr-time .flatpickr-am-pm:hover,.flatpickr-time input:focus,.flatpickr-time .flatpickr-am-pm:focus{background:#eee}.flatpickr-input[readonly]{cursor:pointer}@-webkit-keyframes fpFadeInDown{from{opacity:0;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@keyframes fpFadeInDown{from{opacity:0;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}',"",{version:3,sources:["webpack://./node_modules/flatpickr/dist/flatpickr.min.css"],names:[],mappings:"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",sourcesContent:['.flatpickr-calendar{background:transparent;opacity:0;display:none;text-align:center;visibility:hidden;padding:0;-webkit-animation:none;animation:none;direction:ltr;border:0;font-size:14px;line-height:24px;border-radius:5px;position:absolute;width:307.875px;-webkit-box-sizing:border-box;box-sizing:border-box;-ms-touch-action:manipulation;touch-action:manipulation;background:#fff;-webkit-box-shadow:1px 0 0 #e6e6e6,-1px 0 0 #e6e6e6,0 1px 0 #e6e6e6,0 -1px 0 #e6e6e6,0 3px 13px rgba(0,0,0,0.08);box-shadow:1px 0 0 #e6e6e6,-1px 0 0 #e6e6e6,0 1px 0 #e6e6e6,0 -1px 0 #e6e6e6,0 3px 13px rgba(0,0,0,0.08)}.flatpickr-calendar.open,.flatpickr-calendar.inline{opacity:1;max-height:640px;visibility:visible}.flatpickr-calendar.open{display:inline-block;z-index:99999}.flatpickr-calendar.animate.open{-webkit-animation:fpFadeInDown 300ms cubic-bezier(.23,1,.32,1);animation:fpFadeInDown 300ms cubic-bezier(.23,1,.32,1)}.flatpickr-calendar.inline{display:block;position:relative;top:2px}.flatpickr-calendar.static{position:absolute;top:calc(100% + 2px)}.flatpickr-calendar.static.open{z-index:999;display:block}.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+1) .flatpickr-day.inRange:nth-child(7n+7){-webkit-box-shadow:none !important;box-shadow:none !important}.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+2) .flatpickr-day.inRange:nth-child(7n+1){-webkit-box-shadow:-2px 0 0 #e6e6e6,5px 0 0 #e6e6e6;box-shadow:-2px 0 0 #e6e6e6,5px 0 0 #e6e6e6}.flatpickr-calendar .hasWeeks .dayContainer,.flatpickr-calendar .hasTime .dayContainer{border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.flatpickr-calendar .hasWeeks .dayContainer{border-left:0}.flatpickr-calendar.hasTime .flatpickr-time{height:40px;border-top:1px solid #e6e6e6}.flatpickr-calendar.noCalendar.hasTime .flatpickr-time{height:auto}.flatpickr-calendar:before,.flatpickr-calendar:after{position:absolute;display:block;pointer-events:none;border:solid transparent;content:\'\';height:0;width:0;left:22px}.flatpickr-calendar.rightMost:before,.flatpickr-calendar.arrowRight:before,.flatpickr-calendar.rightMost:after,.flatpickr-calendar.arrowRight:after{left:auto;right:22px}.flatpickr-calendar.arrowCenter:before,.flatpickr-calendar.arrowCenter:after{left:50%;right:50%}.flatpickr-calendar:before{border-width:5px;margin:0 -5px}.flatpickr-calendar:after{border-width:4px;margin:0 -4px}.flatpickr-calendar.arrowTop:before,.flatpickr-calendar.arrowTop:after{bottom:100%}.flatpickr-calendar.arrowTop:before{border-bottom-color:#e6e6e6}.flatpickr-calendar.arrowTop:after{border-bottom-color:#fff}.flatpickr-calendar.arrowBottom:before,.flatpickr-calendar.arrowBottom:after{top:100%}.flatpickr-calendar.arrowBottom:before{border-top-color:#e6e6e6}.flatpickr-calendar.arrowBottom:after{border-top-color:#fff}.flatpickr-calendar:focus{outline:0}.flatpickr-wrapper{position:relative;display:inline-block}.flatpickr-months{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.flatpickr-months .flatpickr-month{background:transparent;color:rgba(0,0,0,0.9);fill:rgba(0,0,0,0.9);height:34px;line-height:1;text-align:center;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:hidden;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}.flatpickr-months .flatpickr-prev-month,.flatpickr-months .flatpickr-next-month{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;text-decoration:none;cursor:pointer;position:absolute;top:0;height:34px;padding:10px;z-index:3;color:rgba(0,0,0,0.9);fill:rgba(0,0,0,0.9)}.flatpickr-months .flatpickr-prev-month.flatpickr-disabled,.flatpickr-months .flatpickr-next-month.flatpickr-disabled{display:none}.flatpickr-months .flatpickr-prev-month i,.flatpickr-months .flatpickr-next-month i{position:relative}.flatpickr-months .flatpickr-prev-month.flatpickr-prev-month,.flatpickr-months .flatpickr-next-month.flatpickr-prev-month{/*\n /*rtl:begin:ignore*/left:0/*\n /*rtl:end:ignore*/}/*\n /*rtl:begin:ignore*/\n/*\n /*rtl:end:ignore*/\n.flatpickr-months .flatpickr-prev-month.flatpickr-next-month,.flatpickr-months .flatpickr-next-month.flatpickr-next-month{/*\n /*rtl:begin:ignore*/right:0/*\n /*rtl:end:ignore*/}/*\n /*rtl:begin:ignore*/\n/*\n /*rtl:end:ignore*/\n.flatpickr-months .flatpickr-prev-month:hover,.flatpickr-months .flatpickr-next-month:hover{color:#959ea9}.flatpickr-months .flatpickr-prev-month:hover svg,.flatpickr-months .flatpickr-next-month:hover svg{fill:#f64747}.flatpickr-months .flatpickr-prev-month svg,.flatpickr-months .flatpickr-next-month svg{width:14px;height:14px}.flatpickr-months .flatpickr-prev-month svg path,.flatpickr-months .flatpickr-next-month svg path{-webkit-transition:fill .1s;transition:fill .1s;fill:inherit}.numInputWrapper{position:relative;height:auto}.numInputWrapper input,.numInputWrapper span{display:inline-block}.numInputWrapper input{width:100%}.numInputWrapper input::-ms-clear{display:none}.numInputWrapper input::-webkit-outer-spin-button,.numInputWrapper input::-webkit-inner-spin-button{margin:0;-webkit-appearance:none}.numInputWrapper span{position:absolute;right:0;width:14px;padding:0 4px 0 2px;height:50%;line-height:50%;opacity:0;cursor:pointer;border:1px solid rgba(57,57,57,0.15);-webkit-box-sizing:border-box;box-sizing:border-box}.numInputWrapper span:hover{background:rgba(0,0,0,0.1)}.numInputWrapper span:active{background:rgba(0,0,0,0.2)}.numInputWrapper span:after{display:block;content:"";position:absolute}.numInputWrapper span.arrowUp{top:0;border-bottom:0}.numInputWrapper span.arrowUp:after{border-left:4px solid transparent;border-right:4px solid transparent;border-bottom:4px solid rgba(57,57,57,0.6);top:26%}.numInputWrapper span.arrowDown{top:50%}.numInputWrapper span.arrowDown:after{border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px solid rgba(57,57,57,0.6);top:40%}.numInputWrapper span svg{width:inherit;height:auto}.numInputWrapper span svg path{fill:rgba(0,0,0,0.5)}.numInputWrapper:hover{background:rgba(0,0,0,0.05)}.numInputWrapper:hover span{opacity:1}.flatpickr-current-month{font-size:135%;line-height:inherit;font-weight:300;color:inherit;position:absolute;width:75%;left:12.5%;padding:7.48px 0 0 0;line-height:1;height:34px;display:inline-block;text-align:center;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.flatpickr-current-month span.cur-month{font-family:inherit;font-weight:700;color:inherit;display:inline-block;margin-left:.5ch;padding:0}.flatpickr-current-month span.cur-month:hover{background:rgba(0,0,0,0.05)}.flatpickr-current-month .numInputWrapper{width:6ch;width:7ch\\0;display:inline-block}.flatpickr-current-month .numInputWrapper span.arrowUp:after{border-bottom-color:rgba(0,0,0,0.9)}.flatpickr-current-month .numInputWrapper span.arrowDown:after{border-top-color:rgba(0,0,0,0.9)}.flatpickr-current-month input.cur-year{background:transparent;-webkit-box-sizing:border-box;box-sizing:border-box;color:inherit;cursor:text;padding:0 0 0 .5ch;margin:0;display:inline-block;font-size:inherit;font-family:inherit;font-weight:300;line-height:inherit;height:auto;border:0;border-radius:0;vertical-align:initial;-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.flatpickr-current-month input.cur-year:focus{outline:0}.flatpickr-current-month input.cur-year[disabled],.flatpickr-current-month input.cur-year[disabled]:hover{font-size:100%;color:rgba(0,0,0,0.5);background:transparent;pointer-events:none}.flatpickr-current-month .flatpickr-monthDropdown-months{appearance:menulist;background:transparent;border:none;border-radius:0;box-sizing:border-box;color:inherit;cursor:pointer;font-size:inherit;font-family:inherit;font-weight:300;height:auto;line-height:inherit;margin:-1px 0 0 0;outline:none;padding:0 0 0 .5ch;position:relative;vertical-align:initial;-webkit-box-sizing:border-box;-webkit-appearance:menulist;-moz-appearance:menulist;width:auto}.flatpickr-current-month .flatpickr-monthDropdown-months:focus,.flatpickr-current-month .flatpickr-monthDropdown-months:active{outline:none}.flatpickr-current-month .flatpickr-monthDropdown-months:hover{background:rgba(0,0,0,0.05)}.flatpickr-current-month .flatpickr-monthDropdown-months .flatpickr-monthDropdown-month{background-color:transparent;outline:none;padding:0}.flatpickr-weekdays{background:transparent;text-align:center;overflow:hidden;width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;height:28px}.flatpickr-weekdays .flatpickr-weekdaycontainer{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}span.flatpickr-weekday{cursor:default;font-size:90%;background:transparent;color:rgba(0,0,0,0.54);line-height:1;margin:0;text-align:center;display:block;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;font-weight:bolder}.dayContainer,.flatpickr-weeks{padding:1px 0 0 0}.flatpickr-days{position:relative;overflow:hidden;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:flex-start;width:307.875px}.flatpickr-days:focus{outline:0}.dayContainer{padding:0;outline:0;text-align:left;width:307.875px;min-width:307.875px;max-width:307.875px;-webkit-box-sizing:border-box;box-sizing:border-box;display:inline-block;display:-ms-flexbox;display:-webkit-box;display:-webkit-flex;display:flex;-webkit-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-wrap:wrap;-ms-flex-pack:justify;-webkit-justify-content:space-around;justify-content:space-around;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}.dayContainer + .dayContainer{-webkit-box-shadow:-1px 0 0 #e6e6e6;box-shadow:-1px 0 0 #e6e6e6}.flatpickr-day{background:none;border:1px solid transparent;border-radius:150px;-webkit-box-sizing:border-box;box-sizing:border-box;color:#393939;cursor:pointer;font-weight:400;width:14.2857143%;-webkit-flex-basis:14.2857143%;-ms-flex-preferred-size:14.2857143%;flex-basis:14.2857143%;max-width:39px;height:39px;line-height:39px;margin:0;display:inline-block;position:relative;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;text-align:center}.flatpickr-day.inRange,.flatpickr-day.prevMonthDay.inRange,.flatpickr-day.nextMonthDay.inRange,.flatpickr-day.today.inRange,.flatpickr-day.prevMonthDay.today.inRange,.flatpickr-day.nextMonthDay.today.inRange,.flatpickr-day:hover,.flatpickr-day.prevMonthDay:hover,.flatpickr-day.nextMonthDay:hover,.flatpickr-day:focus,.flatpickr-day.prevMonthDay:focus,.flatpickr-day.nextMonthDay:focus{cursor:pointer;outline:0;background:#e6e6e6;border-color:#e6e6e6}.flatpickr-day.today{border-color:#959ea9}.flatpickr-day.today:hover,.flatpickr-day.today:focus{border-color:#959ea9;background:#959ea9;color:#fff}.flatpickr-day.selected,.flatpickr-day.startRange,.flatpickr-day.endRange,.flatpickr-day.selected.inRange,.flatpickr-day.startRange.inRange,.flatpickr-day.endRange.inRange,.flatpickr-day.selected:focus,.flatpickr-day.startRange:focus,.flatpickr-day.endRange:focus,.flatpickr-day.selected:hover,.flatpickr-day.startRange:hover,.flatpickr-day.endRange:hover,.flatpickr-day.selected.prevMonthDay,.flatpickr-day.startRange.prevMonthDay,.flatpickr-day.endRange.prevMonthDay,.flatpickr-day.selected.nextMonthDay,.flatpickr-day.startRange.nextMonthDay,.flatpickr-day.endRange.nextMonthDay{background:#569ff7;-webkit-box-shadow:none;box-shadow:none;color:#fff;border-color:#569ff7}.flatpickr-day.selected.startRange,.flatpickr-day.startRange.startRange,.flatpickr-day.endRange.startRange{border-radius:50px 0 0 50px}.flatpickr-day.selected.endRange,.flatpickr-day.startRange.endRange,.flatpickr-day.endRange.endRange{border-radius:0 50px 50px 0}.flatpickr-day.selected.startRange + .endRange:not(:nth-child(7n+1)),.flatpickr-day.startRange.startRange + .endRange:not(:nth-child(7n+1)),.flatpickr-day.endRange.startRange + .endRange:not(:nth-child(7n+1)){-webkit-box-shadow:-10px 0 0 #569ff7;box-shadow:-10px 0 0 #569ff7}.flatpickr-day.selected.startRange.endRange,.flatpickr-day.startRange.startRange.endRange,.flatpickr-day.endRange.startRange.endRange{border-radius:50px}.flatpickr-day.inRange{border-radius:0;-webkit-box-shadow:-5px 0 0 #e6e6e6,5px 0 0 #e6e6e6;box-shadow:-5px 0 0 #e6e6e6,5px 0 0 #e6e6e6}.flatpickr-day.flatpickr-disabled,.flatpickr-day.flatpickr-disabled:hover,.flatpickr-day.prevMonthDay,.flatpickr-day.nextMonthDay,.flatpickr-day.notAllowed,.flatpickr-day.notAllowed.prevMonthDay,.flatpickr-day.notAllowed.nextMonthDay{color:rgba(57,57,57,0.3);background:transparent;border-color:transparent;cursor:default}.flatpickr-day.flatpickr-disabled,.flatpickr-day.flatpickr-disabled:hover{cursor:not-allowed;color:rgba(57,57,57,0.1)}.flatpickr-day.week.selected{border-radius:0;-webkit-box-shadow:-5px 0 0 #569ff7,5px 0 0 #569ff7;box-shadow:-5px 0 0 #569ff7,5px 0 0 #569ff7}.flatpickr-day.hidden{visibility:hidden}.rangeMode .flatpickr-day{margin-top:1px}.flatpickr-weekwrapper{float:left}.flatpickr-weekwrapper .flatpickr-weeks{padding:0 12px;-webkit-box-shadow:1px 0 0 #e6e6e6;box-shadow:1px 0 0 #e6e6e6}.flatpickr-weekwrapper .flatpickr-weekday{float:none;width:100%;line-height:28px}.flatpickr-weekwrapper span.flatpickr-day,.flatpickr-weekwrapper span.flatpickr-day:hover{display:block;width:100%;max-width:none;color:rgba(57,57,57,0.3);background:transparent;cursor:default;border:none}.flatpickr-innerContainer{display:block;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden}.flatpickr-rContainer{display:inline-block;padding:0;-webkit-box-sizing:border-box;box-sizing:border-box}.flatpickr-time{text-align:center;outline:0;display:block;height:0;line-height:40px;max-height:40px;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.flatpickr-time:after{content:"";display:table;clear:both}.flatpickr-time .numInputWrapper{-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;width:40%;height:40px;float:left}.flatpickr-time .numInputWrapper span.arrowUp:after{border-bottom-color:#393939}.flatpickr-time .numInputWrapper span.arrowDown:after{border-top-color:#393939}.flatpickr-time.hasSeconds .numInputWrapper{width:26%}.flatpickr-time.time24hr .numInputWrapper{width:49%}.flatpickr-time input{background:transparent;-webkit-box-shadow:none;box-shadow:none;border:0;border-radius:0;text-align:center;margin:0;padding:0;height:inherit;line-height:inherit;color:#393939;font-size:14px;position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.flatpickr-time input.flatpickr-hour{font-weight:bold}.flatpickr-time input.flatpickr-minute,.flatpickr-time input.flatpickr-second{font-weight:400}.flatpickr-time input:focus{outline:0;border:0}.flatpickr-time .flatpickr-time-separator,.flatpickr-time .flatpickr-am-pm{height:inherit;float:left;line-height:inherit;color:#393939;font-weight:bold;width:2%;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-align-self:center;-ms-flex-item-align:center;align-self:center}.flatpickr-time .flatpickr-am-pm{outline:0;width:18%;cursor:pointer;text-align:center;font-weight:400}.flatpickr-time input:hover,.flatpickr-time .flatpickr-am-pm:hover,.flatpickr-time input:focus,.flatpickr-time .flatpickr-am-pm:focus{background:#eee}.flatpickr-input[readonly]{cursor:pointer}@-webkit-keyframes fpFadeInDown{from{opacity:0;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@keyframes fpFadeInDown{from{opacity:0;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}'],sourceRoot:""}]);const a=s},645:e=>{"use strict";e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var n="",i=void 0!==t[5];return t[4]&&(n+="@supports (".concat(t[4],") {")),t[2]&&(n+="@media ".concat(t[2]," {")),i&&(n+="@layer".concat(t[5].length>0?" ".concat(t[5]):""," {")),n+=e(t),i&&(n+="}"),t[2]&&(n+="}"),t[4]&&(n+="}"),n})).join("")},t.i=function(e,n,i,o,r){"string"==typeof e&&(e=[[null,e,void 0]]);var s={};if(i)for(var a=0;a0?" ".concat(u[5]):""," {").concat(u[1],"}")),u[5]=r),n&&(u[2]?(u[1]="@media ".concat(u[2]," {").concat(u[1],"}"),u[2]=n):u[2]=n),o&&(u[4]?(u[1]="@supports (".concat(u[4],") {").concat(u[1],"}"),u[4]=o):u[4]="".concat(o)),t.push(u))}},t}},537:e=>{"use strict";e.exports=function(e){var t=e[1],n=e[3];if(!n)return t;if("function"==typeof btoa){var i=btoa(unescape(encodeURIComponent(JSON.stringify(n)))),o="sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(i),r="/*# ".concat(o," */");return[t].concat([r]).join("\n")}return[t].join("\n")}},745:(e,t,n)=>{"use strict";var i=n(137);t.s=i.createRoot,i.hydrateRoot},590:e=>{var t="undefined"!=typeof Element,n="function"==typeof Map,i="function"==typeof Set,o="function"==typeof ArrayBuffer&&!!ArrayBuffer.isView;function r(e,s){if(e===s)return!0;if(e&&s&&"object"==typeof e&&"object"==typeof s){if(e.constructor!==s.constructor)return!1;var a,l,c,u;if(Array.isArray(e)){if((a=e.length)!=s.length)return!1;for(l=a;0!=l--;)if(!r(e[l],s[l]))return!1;return!0}if(n&&e instanceof Map&&s instanceof Map){if(e.size!==s.size)return!1;for(u=e.entries();!(l=u.next()).done;)if(!s.has(l.value[0]))return!1;for(u=e.entries();!(l=u.next()).done;)if(!r(l.value[1],s.get(l.value[0])))return!1;return!0}if(i&&e instanceof Set&&s instanceof Set){if(e.size!==s.size)return!1;for(u=e.entries();!(l=u.next()).done;)if(!s.has(l.value[0]))return!1;return!0}if(o&&ArrayBuffer.isView(e)&&ArrayBuffer.isView(s)){if((a=e.length)!=s.length)return!1;for(l=a;0!=l--;)if(e[l]!==s[l])return!1;return!0}if(e.constructor===RegExp)return e.source===s.source&&e.flags===s.flags;if(e.valueOf!==Object.prototype.valueOf&&"function"==typeof e.valueOf&&"function"==typeof s.valueOf)return e.valueOf()===s.valueOf();if(e.toString!==Object.prototype.toString&&"function"==typeof e.toString&&"function"==typeof s.toString)return e.toString()===s.toString();if((a=(c=Object.keys(e)).length)!==Object.keys(s).length)return!1;for(l=a;0!=l--;)if(!Object.prototype.hasOwnProperty.call(s,c[l]))return!1;if(t&&e instanceof Element)return!1;for(l=a;0!=l--;)if(("_owner"!==c[l]&&"__v"!==c[l]&&"__o"!==c[l]||!e.$$typeof)&&!r(e[c[l]],s[c[l]]))return!1;return!0}return e!=e&&s!=s}e.exports=function(e,t){try{return r(e,t)}catch(e){if((e.message||"").match(/stack|recursion/i))return console.warn("react-fast-compare cannot handle circular refs"),!1;throw e}}},379:e=>{"use strict";var t=[];function n(e){for(var n=-1,i=0;i{"use strict";var t={};e.exports=function(e,n){var i=function(e){if(void 0===t[e]){var n=document.querySelector(e);if(window.HTMLIFrameElement&&n instanceof window.HTMLIFrameElement)try{n=n.contentDocument.head}catch(e){n=null}t[e]=n}return t[e]}(e);if(!i)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");i.appendChild(n)}},216:e=>{"use strict";e.exports=function(e){var t=document.createElement("style");return e.setAttributes(t,e.attributes),e.insert(t,e.options),t}},565:(e,t,n)=>{"use strict";e.exports=function(e){var t=n.nc;t&&e.setAttribute("nonce",t)}},795:e=>{"use strict";e.exports=function(e){if("undefined"==typeof document)return{update:function(){},remove:function(){}};var t=e.insertStyleElement(e);return{update:function(n){!function(e,t,n){var i="";n.supports&&(i+="@supports (".concat(n.supports,") {")),n.media&&(i+="@media ".concat(n.media," {"));var o=void 0!==n.layer;o&&(i+="@layer".concat(n.layer.length>0?" ".concat(n.layer):""," {")),i+=n.css,o&&(i+="}"),n.media&&(i+="}"),n.supports&&(i+="}");var r=n.sourceMap;r&&"undefined"!=typeof btoa&&(i+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(r))))," */")),t.styleTagTransform(i,e,t.options)}(t,e,n)},remove:function(){!function(e){if(null===e.parentNode)return!1;e.parentNode.removeChild(e)}(t)}}}},589:e=>{"use strict";e.exports=function(e,t){if(t.styleSheet)t.styleSheet.cssText=e;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(e))}}},137:e=>{"use strict";e.exports=require("react-dom")}},t={};function n(i){var o=t[i];if(void 0!==o)return o.exports;var r=t[i]={id:i,loaded:!1,exports:{}};return e[i](r,r.exports,n),r.loaded=!0,r.exports}n.amdD=function(){throw new Error("define cannot be used indirect")},n.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},n.d=(e,t)=>{for(var i in t)n.o(t,i)&&!n.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),n.p="",n.nc=void 0;var i={};(()=>{"use strict";n.r(i),n.d(i,{Accordion:()=>W,Button:()=>q,ButtonGroup:()=>J,Chart:()=>se,Checkbox:()=>oi,CodeEditor:()=>po,Collapsible:()=>I,Column:()=>Li,Combobox:()=>xo,Combobox2:()=>Wo,Confirm:()=>Xe,CopyToClipboard:()=>Pe,DatePicker:()=>hr,Dropdown:()=>Qi,EditableList:()=>bs,EditableList2:()=>Hs,FieldCodeEditor:()=>yc,FieldCombobox:()=>Sc,FieldCombobox2:()=>Xc,FieldDatePicker:()=>au,FieldDropdown:()=>Lc,FieldEditableList:()=>mu,FieldFileInput:()=>xu,FieldInput:()=>Lu,FieldMultiselect:()=>Hu,FieldPagination:()=>zc,FieldSelect:()=>Ju,FieldSelectableList:()=>oh,FieldToggle:()=>dh,FileInput:()=>Ys,FixedWrapper:()=>et,FloatingContainer:()=>ct,FormikCheckbox:()=>Gl,FormikCodeEditor:()=>Kl,FormikCombobox:()=>ql,FormikCombobox2:()=>Yl,FormikDatePicker:()=>Jl,FormikEditableList:()=>Ql,FormikEditableList2:()=>Xl,FormikFileInput:()=>Zl,FormikInput:()=>ec,FormikInput2:()=>tc,FormikMultiselect:()=>nc,FormikRadio:()=>ic,FormikSelect:()=>oc,FormikSelectableList:()=>rc,FormikStringBuilder:()=>lc,FormikTextarea:()=>sc,FormikToggle:()=>ac,FormikWrapper:()=>Vl,Icon:()=>g,InfiniteScroller:()=>nt,InfoNote:()=>ht,Input:()=>oa,Input2:()=>ga,List:()=>mt,Loader:()=>te,Message:()=>ie,Modal:()=>Je,Multiselect:()=>Ea,NavBar:()=>yt,Navigation:()=>At,Pagination:()=>Fn,Panel:()=>Ft,Pill:()=>Ht,Radio:()=>Ia,RevealPanel:()=>sn,Row:()=>Hi,Select:()=>Ua,SelectableList:()=>Za,StringBuilder:()=>Rl,Table:()=>xi,Tabs:()=>$n,TextEllipsis:()=>In,Textarea:()=>al,Toggle:()=>Al,Tooltip:()=>Bn,setConfig:()=>Ll,toast:()=>_e,useComponentSize:()=>E,useEventListener:()=>S,useInterval:()=>x,usePrevious:()=>C,useTimeout:()=>k});const e=require("react");var t=n.n(e);const o=require("prop-types");var r=n.n(o);const s=(0,e.createContext)(),a=(0,e.createContext)();var l=Object.defineProperty,c=Object.getOwnPropertySymbols,u=Object.prototype.hasOwnProperty,h=Object.prototype.propertyIsEnumerable,d=(e,t,n)=>t in e?l(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;function p(e){var n=e,{className:i,family:o,type:r}=n,s=((e,t)=>{var n={};for(var i in e)u.call(e,i)&&t.indexOf(i)<0&&(n[i]=e[i]);if(null!=e&&c)for(var i of c(e))t.indexOf(i)<0&&h.call(e,i)&&(n[i]=e[i]);return n})(n,["className","family","type"]);return t().createElement("i",((e,t)=>{for(var n in t||(t={}))u.call(t,n)&&d(e,n,t[n]);if(c)for(var n of c(t))h.call(t,n)&&d(e,n,t[n]);return e})({className:function(){const e=o||"fa";return["tyk-icon",e,`${e}-${r}`,i].filter(Boolean).join(" ")}()},s))}p.propTypes={className:r().string,family:r().string,type:r().string.isRequired};const g=p;function m({wrap:n}){const{collapsed:i,disabled:o,toggleChange:r}=(0,e.useContext)(a),s=i?"chevron-down":"chevron-up",l=["tyk-accordion__trigger",o&&"tyk-accordion__trigger--disabled"].filter(Boolean).join(" "),c=t().createElement("button",{className:l,onClick:r,type:"button"},t().createElement(g,{className:"collapsable__arrow",type:s}));return n?t().createElement("div",{className:"tyk-accordion__trigger-wrapper"},c):c}m.propTypes={wrap:r().bool};const f=m;function y({collapsed:n,children:i,className:o,disabled:r},l){const{arrow:c}=(0,e.useContext)(s),[u,h]=(0,e.useState)(n),d=()=>{r||h(!u)},p=(0,e.useMemo)((()=>["tyk-accordion__item",c.expandToContent?`tyk-accordion__item--trigger-position-${c.position}`:"tyk-accordion__item--trigger-in-header",o,!1===u&&"tyk-accordion__item--active"].filter(Boolean).join(" ")),[c,o,u]),g=(0,e.useMemo)((()=>({collapsed:u,disabled:r,toggleChange:d})),[u,r,d]);return t().createElement("div",{ref:l,className:p},t().createElement(a.Provider,{value:g},c.expandToContent&&t().createElement(f,{wrap:!0}),i))}y.propTypes={children:r().oneOfType([r().arrayOf(r().node),r().node,r().element,r().string]),collapsed:r().bool,className:r().string,disabled:r().bool},y.defaultProps={collapsed:!1};const b=(0,e.forwardRef)(y);function v({className:n,children:i}){const{collapsed:o,disabled:r,toggleChange:l}=(0,e.useContext)(a),{usearrowastrigger:c,arrow:u}=(0,e.useContext)(s),h=o?"chevron-down":"chevron-up",d=["tyk-accordion__item-header",c&&"tyk-accordion__arrow-trigger",n].filter(Boolean).join(" ");return t().createElement("div",{className:d},c?t().createElement(t().Fragment,null,!u.expandToContent&&"left"===u.position&&t().createElement(f,null),t().createElement("div",null,i),!u.expandToContent&&"right"===u.position&&t().createElement(f,null)):t().createElement("button",{className:r?"tyk-accordion__trigger--disabled":"",onClick:l,type:"button"},t().createElement("span",null,i),t().createElement(g,{className:"collapsable__arrow",type:h})))}v.propTypes={children:r().oneOfType([r().arrayOf(r().node),r().node,r().element,r().string]),className:r().string};const w=v,A=require("react-transition-group"),C=t=>{const n=(0,e.useRef)();return(0,e.useEffect)((()=>{n.current=t}),[t]),n.current},k=(t,n)=>{const i=(0,e.useRef)();(0,e.useEffect)((()=>{i.current=t}),[t]),(0,e.useEffect)((()=>{if(null!==n){const e=setTimeout((function(){i.current()}),n);return()=>clearTimeout(e)}return()=>{}}),[n])};function x(t,n,...i){const o=(0,e.useRef)();(0,e.useEffect)((()=>{o.current=t}),[t]),(0,e.useEffect)((()=>{if(null!=n){const e=setInterval((function(){o.current(...i)}),n);return()=>clearInterval(e)}}),[n])}const S=(t,n,i)=>{const o=(0,e.useRef)();(0,e.useEffect)((()=>{o.current=n}),[n]),(0,e.useEffect)((()=>{if(!(null==i?void 0:i.addEventListener))return;const e=e=>o.current(e);return i.addEventListener(t,e),()=>{i.removeEventListener(t,e)}}),[t,i])},$=e=>e?{width:e.offsetWidth,height:e.offsetHeight}:{width:0,height:0},E=t=>{const[n,i]=(0,e.useState)($(t?t.current:{})),o=(0,e.useCallback)((()=>{t.current&&i($(t.current))}),[t]);return(0,e.useLayoutEffect)((()=>{o();let e=new ResizeObserver((()=>{o()}));return e.observe(t.current),()=>{e.disconnect(t.current),e=null}}),[t.current]),n};var O=Object.defineProperty,T=Object.defineProperties,_=Object.getOwnPropertyDescriptors,R=Object.getOwnPropertySymbols,M=Object.prototype.hasOwnProperty,L=Object.prototype.propertyIsEnumerable,B=(e,t,n)=>t in e?O(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;function N(n){var i=n,{className:o,collapsed:r,children:s}=i,a=((e,t)=>{var n={};for(var i in e)M.call(e,i)&&t.indexOf(i)<0&&(n[i]=e[i]);if(null!=e&&R)for(var i of R(e))t.indexOf(i)<0&&L.call(e,i)&&(n[i]=e[i]);return n})(i,["className","collapsed","children"]);const l=(0,e.useRef)(null),c=(0,e.useRef)(null),u=E(l),[h,d]=(0,e.useState)({height:r?0:"auto"}),p=e=>{d({height:`${e}px`})},g=()=>l.current?l.current.clientHeight:0;(0,e.useEffect)((()=>{!r&&(null==u?void 0:u.height)&&h.height!==(null==u?void 0:u.height)&&p(u.height)}),[u.height]);const m=(0,e.useCallback)((()=>{!r&&l.current&&(p(g()),c.current.style.height=`${g()}px`)}),[r,l.current]);return S("resize",m,window),t().createElement(A.CSSTransition,{onEnter:()=>{p(g())},onExit:()=>{p(0)},in:!r,timeout:0,classNames:"collapse"},t().createElement("div",{className:"collapse-wrapper",ref:c,style:h},t().createElement("div",(f=((e,t)=>{for(var n in t||(t={}))M.call(t,n)&&B(e,n,t[n]);if(R)for(var n of R(t))L.call(t,n)&&B(e,n,t[n]);return e})({},a),T(f,_({className:o,ref:l}))),s)));var f}N.propTypes={children:r().oneOfType([r().element,r().node,r().string]),collapsed:r().bool,className:r().string};const I=N;function P({children:n,className:i}){const{collapsed:o}=(0,e.useContext)(a),r=["tyk-accordion__item-content",i].filter(Boolean).join(" ");return t().createElement("div",{className:r},t().createElement(I,{collapsed:o},n))}P.propTypes={children:r().oneOfType([r().arrayOf(r().node),r().node,r().element,r().string]),className:r().string};const D=P;function F({className:n,children:i,usearrowastrigger:o,arrow:r={position:"right",expandToContent:!1}}){const a=["tyk-accordion",n].filter(Boolean).join(" "),l=(0,e.useMemo)((()=>({usearrowastrigger:o,arrow:r})),[o,r]);return t().createElement("div",{className:a},t().createElement(s.Provider,{value:l},i))}F.propTypes={children:r().oneOfType([r().arrayOf(r().node),r().node,r().element,r().string]),className:r().string,usearrowastrigger:r().bool,arrow:r().shape({position:r().oneOf(["left","right"]),expandToContent:r().bool})},F.defaultProps={usearrowastrigger:!1},F.Item=b,F.Item.Header=w,F.Item.Content=D;const W=F;var H=Object.defineProperty,j=Object.getOwnPropertySymbols,z=Object.prototype.hasOwnProperty,U=Object.prototype.propertyIsEnumerable,V=(e,t,n)=>t in e?H(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,G=(e,t)=>{for(var n in t||(t={}))z.call(t,n)&&V(e,n,t[n]);if(j)for(var n of j(t))U.call(t,n)&&V(e,n,t[n]);return e};const K=t().forwardRef(((n,i)=>{const o=n,{customButton:r,children:s,iconType:a,iconFamily:l,iconPosition:c,iconOnly:u,id:h,className:d,disabled:p,display:m,href:f,onClick:y,noStyle:b,size:v,theme:w,type:A}=o,C=((e,t)=>{var n={};for(var i in e)z.call(e,i)&&t.indexOf(i)<0&&(n[i]=e[i]);if(null!=e&&j)for(var i of j(e))t.indexOf(i)<0&&U.call(e,i)&&(n[i]=e[i]);return n})(o,["customButton","children","iconType","iconFamily","iconPosition","iconOnly","id","className","disabled","display","href","onClick","noStyle","size","theme","type"]),k=()=>{const e=["tyk-button"].concat(d?d.split(" "):[]),t=v?`tyk-button--${v}`:"tyk-button--md",n=p?"disabled":"",i=m||"",o=w?`tyk-button--${w}`:"",r=u?"tyk-button--icon-only":"",s=b?"tyk-button--no-style":"";return e.push(r),e.push(o),e.push(t),e.push(n),e.push(i),e.push(s),a&&e.push(`icon-${c||"left"}`),e.join(" ")},x=e=>a&&(c||"left")===e?t().createElement(g,{family:l,type:a}):null;return(()=>{let n;return r?t().createElement(e.Fragment,null,(0,e.cloneElement)(r,{className:k(),disabled:p})):(n=f?t().createElement("a",G({id:h,className:k(),disabled:p,onClick:y,href:f,ref:i},C),x("left"),s,x("right")):t().createElement("button",G({id:h,className:k(),disabled:p,onClick:y,type:A||"button",ref:i},C),x("left"),s&&t().createElement("span",null,s),x("right")),n)})()}));K.propTypes={children:r().oneOfType([r().arrayOf(r().node),r().node,r().element,r().string]),customButton:r().oneOfType([r().arrayOf(r().node),r().node,r().element]),className:r().string,display:r().string,disabled:r().bool,id:r().string,href:r().string,iconPosition:r().string,iconFamily:r().string,iconOnly:r().bool,iconType:r().string,noStyle:r().bool,onClick:r().func,theme:r().string,type:r().string,size:r().string},K.defaultProps={theme:"",type:"button"};const q=K;function Y({className:e,children:n,label:i}){return t().createElement("div",{className:`tyk-button-group__wrapper ${e}`},Boolean(i)&&t().createElement("label",null,i),t().createElement("div",{className:"tyk-button-group"},n))}Y.propTypes={children:r().oneOfType([r().arrayOf(r().node),r().node,r().element,r().string]),className:r().string,label:r().string};const J=Y,Q=require("echarts"),X=require("immutable"),Z=(e,t,n)=>{let i;return function(...o){const r=this,s=n&&!i;clearTimeout(i),i=setTimeout((()=>{i=null,n||e.apply(r,o)}),t),s&&e.apply(r,o)}};function ee({className:e,position:n="relative",withbackground:i=!1}){const o=["loading",n,e].filter(Boolean).join(" "),r=t().createElement("div",{className:o},t().createElement("div",{className:"loading-bar"}),t().createElement("div",{className:"loading-bar"}),t().createElement("div",{className:"loading-bar"}),t().createElement("div",{className:"loading-bar"}));return i?t().createElement("div",{className:"tyk-loading__wrapper"},r):r}ee.propTypes={className:r().string,position:r().string,withbackground:r().bool};const te=ee;function ne({children:e,theme:n,onClose:i,noMargin:o,className:r}){const s="success"===n?"check":"warning";return t().createElement("div",{className:["tyk-message",`tyk-message--${n||"info"}`,o&&"no-margin",r].filter(Boolean).join(" ")},t().createElement(g,{family:"tykon",type:s}),t().createElement("div",{className:"tyk-message__content"},e),i&&t().createElement(g,{family:"tykon",type:"x",onClick:i}))}ne.propTypes={theme:r().string,children:r().oneOfType([r().element,r().node,r().string]),className:r().string,noMargin:r().bool,onClose:r().func};const ie=ne,oe=JSON.parse('{"type":"FeatureCollection","crs":{"type":"name","properties":{"name":"urn:ogc:def:crs:OGC:1.3:CRS84"}},"features":[{"geometry":{"type":"Polygon","coordinates":[[[47.97822265625001,7.9970703125],[46.97822265625001,7.9970703125],[43.98378906250002,9.008837890624989],[43.482519531250006,9.379492187499991],[43.181640625,9.879980468749991],[42.84160156250002,10.203076171874997],[42.65644531250001,10.6],[42.92275390625002,10.999316406249989],[43.24599609375002,11.499804687499989],[43.85273437500001,10.784277343749991],[44.38652343750002,10.430224609374989],[44.94296875,10.43671875],[45.81669921875002,10.835888671874997],[46.565039062500006,10.745996093749994],[47.40498046875001,11.174023437499997],[48.01923828125001,11.139355468749997],[48.57255859375002,11.320507812499997],[48.938574218750006,11.258447265624994],[50.11005859375001,11.529296875],[50.79228515625002,11.983691406249989],[51.2548828125,11.830712890624994],[51.08427734375002,11.335644531249997],[51.140625,10.656884765624994],[51.031835937500006,10.444775390624997],[51.19296875,10.554638671874997],[51.390234375,10.422607421875],[50.93007812500002,10.33554687499999],[50.825,9.428173828124997],[50.10283203125002,8.199804687499991],[49.85205078125,7.962548828124994],[49.234960937500006,6.77734375],[49.04931640625,6.173632812499989],[47.97529296875001,4.497021484374997],[46.87880859375002,3.28564453125],[46.05117187500002,2.475146484374989],[44.92021484375002,1.81015625],[43.71757812500002,0.857861328124997],[41.97988281250002,-0.973046875],[41.53271484375,-1.6953125],[41.521875,-1.572265625],[41.42695312500001,-1.449511718750003],[41.24980468750002,-1.220507812500003],[40.97871093750001,-0.870312500000011],[40.964453125,2.814648437499997],[41.341796875,3.20166015625],[41.61347656250001,3.590478515624994],[41.88398437500001,3.977734375],[41.91533203125002,4.031298828124989],[42.02412109375001,4.137939453125],[42.85664062500001,4.32421875],[43.12568359375001,4.644482421874997],[43.58349609375,4.85498046875],[43.988867187500006,4.950537109374991],[44.940527343750006,4.912011718749994],[47.97822265625001,7.9970703125]]]},"properties":{"name":"Somalia","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[9.579979133936737,47.05856388629306],[9.409458596647225,47.02019676540292],[9.46249431093294,47.09010747968864],[9.46249431093294,47.19858962254578],[9.527658197470123,47.27026989773668],[9.579979133936737,47.05856388629306]]]},"properties":{"name":"Liechtenstein","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-8.683349609375,27.77800740805682],[-13.038761787013554,27.81190166624856],[-12.948925781249926,27.914160156250034],[-11.552685546874955,28.31010742187496],[-10.486474609374994,29.06494140625],[-10.200585937499994,29.380371093750057],[-9.667089843749949,30.10927734375005],[-9.652929687499977,30.447558593750045],[-9.875488281249943,30.717919921874966],[-9.80869140624992,31.42460937499996],[-9.347460937499932,32.086376953124955],[-9.245849609375,32.572460937499955],[-8.512841796874994,33.25244140625003],[-6.900976562499949,33.96904296874999],[-6.353125,34.77607421875001],[-5.924804687499943,35.78579101562502],[-5.277832031249943,35.90273437500002],[-5.252685546874972,35.61474609374997],[-4.628320312499966,35.206396484375006],[-4.329980468749937,35.161474609375006],[-3.693261718749994,35.27998046874998],[-3.394726562499926,35.21181640625005],[-2.972216796874989,35.40727539062499],[-2.839941406249949,35.127832031249994],[-2.731396484374955,35.13520507812498],[-2.636816406249977,35.11269531250002],[-2.423730468749994,35.12348632812498],[-2.219628906249966,35.10419921874998],[-1.795605468749926,34.751904296874955],[-1.67919921875,33.31865234375002],[-1.550732421874955,33.073583984375006],[-1.510009765625,32.877636718749955],[-1.45,32.784814453124966],[-1.352148437499977,32.70336914062497],[-1.29638671875,32.67568359375002],[-1.188232421875,32.608496093750006],[-1.111035156249983,32.55229492187502],[-1.065527343749949,32.46831054687496],[-1.16259765625,32.399169921875],[-1.275341796874983,32.089013671874966],[-2.863427734374937,32.07470703124997],[-2.930859374999926,32.04252929687499],[-2.988232421874983,31.874218749999983],[-3.01738281249996,31.834277343750017],[-3.439794921874949,31.704541015624983],[-3.604589843749949,31.686767578125],[-3.700244140624989,31.70009765625005],[-3.768164062499977,31.689550781250034],[-3.837109374999983,31.512353515624994],[-3.833398437499937,31.197802734375045],[-3.626904296874955,31.000927734374983],[-4.148779296874977,30.8095703125],[-4.322851562500006,30.698876953124994],[-4.52915039062492,30.62553710937499],[-4.778515624999926,30.552392578124994],[-4.968261718749943,30.465380859375045],[-5.061914062499937,30.326416015625057],[-5.180126953124955,30.166162109374994],[-5.293652343749983,30.058642578125045],[-5.44877929687496,29.956933593750023],[-6.00429687499999,29.83125],[-6.479736328124943,29.82036132812499],[-6.520556640624989,29.659863281249983],[-6.59775390624992,29.578955078125006],[-6.635351562499949,29.568798828124983],[-6.755126953125,29.583837890625034],[-6.855566406249949,29.601611328125017],[-7.142431640624949,29.61958007812504],[-7.427685546874983,29.425],[-7.485742187499994,29.392236328124994],[-8.659912109375,28.718603515625063],[-8.683349609375,27.900390625],[-8.683349609375,27.77800740805682]]]},"properties":{"name":"Morocco","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-13.038761787013554,27.81190166624856],[-8.683349609375,27.77800740805682],[-8.683349609375,27.65644531250004],[-8.817822265624955,27.65644531250004],[-8.817822265624951,27.656445312499997],[-8.683349609375,27.656445312499997],[-8.683349609375,27.2859375],[-8.682861328125,26.921337890624997],[-8.6826171875,26.72314453125],[-8.682324218749983,26.497705078124994],[-8.68212890625,26.273193359375],[-8.68212890625,26.10947265625],[-8.682226562499977,25.995507812499994],[-12.016308593749983,25.995410156250003],[-12.016308593749983,25.740136718749994],[-12.016308593749983,25.331689453124994],[-12.016308593749983,25.059375],[-12.016308593749983,24.923242187499994],[-12.016308593749983,24.378662109375],[-12.016308593749983,23.97021484375],[-12.0234375,23.467578125],[-12.372900390624977,23.318017578124994],[-12.559375,23.290820312500003],[-12.620410156249989,23.27133789062499],[-13.031494140625,23.000244140625],[-13.153271484374983,22.820507812499997],[-13.12702845982141,22.703770926339278],[-13.136540684091575,22.708182548616723],[-13.094335937499977,22.495996093749994],[-13.051220703124983,21.854785156250003],[-13.041748046875,21.713818359374997],[-13.0322265625,21.572070312500003],[-13.025097656249983,21.466796875],[-13.016210937499977,21.333935546874997],[-15.231201171875,21.331298828125],[-16.964550781249983,21.329248046874994],[-17.06396484375,20.89882812499999],[-17.048046874999983,20.80615234375],[-17.098779296874994,20.856884765624997],[-16.930859374999983,21.9],[-16.35874023437495,22.594531250000045],[-16.21025390624999,23.097900390625],[-15.789257812499926,23.792871093750023],[-15.980712890624943,23.670312500000023],[-15.899316406249966,23.844433593749955],[-14.904296875000028,24.719775390625017],[-14.794921874999943,25.404150390625006],[-14.413867187499932,26.25371093749999],[-13.57578125,26.735107421875],[-13.175976562499983,27.655712890624983],[-13.038761787013554,27.81190166624856]],[[-8.774365234374983,27.460546875],[-8.794873046874983,27.120703125000034],[-8.794873046874983,27.120703125],[-8.774365234374983,27.460546875]]]},"properties":{"name":"W. Sahara","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[21.5625,42.247509765625],[21.560839843750017,42.24765625],[21.389550781250023,42.21982421875],[21.28662109375,42.100390625],[21.05976562500001,42.171289062499994],[20.778125,42.071044921875],[20.725,41.87353515625],[20.566210937500017,41.873681640624994],[20.485449218750006,42.223388671875],[20.06396484375,42.54726562499999],[20.054296875,42.760058593749996],[20.344335937500006,42.827929687499996],[20.40996305279786,42.84373166741877],[20.344335937500063,42.82792968750002],[19.670996093750006,43.163964843749994],[19.21875,43.449951171875],[19.196484375000068,43.48500976562502],[19.19160156250004,43.52104492187499],[19.19433593749997,43.533300781250006],[19.495117187500057,43.642871093750045],[19.245019531249994,43.96503906250004],[19.583789062500017,44.04345703125003],[19.118457031250074,44.359960937500006],[19.348632812500057,44.88090820312502],[19.007128906250045,44.86918945312502],[19.062890625000023,45.13720703125],[19.4,45.2125],[19.004687500000074,45.39951171875006],[19.064257812500045,45.51499023437506],[18.839062499999983,45.83574218750002],[18.905371093750006,45.931738281250034],[19.421289062500023,46.064453125],[19.61347656250001,46.169189453125],[19.84443359375001,46.145898437499966],[19.934082031250057,46.161474609375034],[20.161425781250017,46.14189453124996],[20.210156250000068,46.12602539062502],[20.241796875000034,46.10859375000001],[20.301367187500006,46.05068359375002],[20.35859375000004,45.975488281249994],[20.581152343749977,45.86948242187506],[20.65273437499999,45.779394531250006],[20.709277343750074,45.735253906249994],[20.727832031250017,45.73740234374998],[20.746875,45.74897460937501],[20.76015625000005,45.75810546875002],[20.775,45.74980468750002],[20.794042968750006,45.467871093750034],[21.431445312500017,45.192529296874994],[21.465429687500006,45.171875],[21.357031250000034,44.99077148437502],[21.532324218750063,44.900683593750045],[21.519921875000023,44.88081054687498],[21.442187500000074,44.87338867187498],[21.384375,44.87006835937501],[21.357910156250057,44.86181640625003],[21.36005859375004,44.82666015624997],[21.52314453125004,44.79008789062499],[21.63613281250005,44.71044921875],[21.909277343750034,44.666113281250034],[22.026953125,44.61987304687503],[22.093066406250074,44.541943359374955],[22.200976562500017,44.560693359374966],[22.350683593750063,44.676123046875034],[22.497656249999977,44.70625],[22.64208984375,44.65097656249998],[22.720898437499983,44.605517578125045],[22.734375,44.56992187499998],[22.700781250000063,44.55551757812498],[22.620117187500057,44.562353515625034],[22.554003906250017,44.54033203124999],[22.49453125000005,44.43544921875002],[22.687890625000023,44.248291015625],[22.42080078125005,44.00742187500006],[22.399023437500063,43.96953125],[22.36542968750004,43.86210937500002],[22.36962890625003,43.78129882812499],[22.55458984375005,43.45449218750002],[22.767578125,43.35415039062502],[22.81972656250005,43.300732421874955],[22.85957031250001,43.252343749999966],[22.97685546874999,43.18798828125],[22.799902343750006,42.985742187499994],[22.706152343750006,42.88393554687505],[22.466796875,42.842480468749955],[22.53242187500004,42.48120117187497],[22.523535156250006,42.440966796875045],[22.44570312500005,42.35913085937497],[22.42207031250004,42.32885742187503],[22.344042968750045,42.31396484375003],[22.23974609375003,42.303110028468716],[21.81464843750001,42.303125],[21.5625,42.24750976562498],[21.5625,42.247509765625]]]},"properties":{"name":"Serbia","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[74.54140625000002,37.02216796875],[74.03886718750002,36.825732421874996],[73.116796875,36.868554687499994],[72.24980468750002,36.734716796875],[71.23291015625,36.12177734375],[71.18505859375,36.04208984375],[71.57197265625001,35.546826171875],[71.62050781250002,35.183007812499994],[70.965625,34.53037109375],[71.095703125,34.369433593749996],[71.05156250000002,34.049707031249994],[70.65400390625001,33.952294921874994],[69.8896484375,34.007275390625],[70.26113281250002,33.289013671875],[69.5015625,33.020068359374996],[69.24140625000001,32.433544921875],[69.279296875,31.936816406249996],[68.86894531250002,31.634228515624997],[68.59765625,31.802978515625],[68.16103515625002,31.802978515625],[67.57822265625,31.506494140624994],[67.737890625,31.343945312499997],[67.45283203125001,31.234619140625],[66.82929687500001,31.263671875],[66.346875,30.802783203124996],[66.23125,29.86572265625],[65.09550781250002,29.559472656249994],[64.39375,29.544335937499994],[64.09873046875,29.391943359375],[63.56757812500001,29.497998046874997],[62.4765625,29.408349609374994],[62.0009765625,29.530419921874994],[61.22441406250002,29.749414062499994],[60.843359375,29.858691406249996],[61.331640625,30.363720703124997],[61.55947265625002,30.599365234375],[61.7841796875,30.831933593749994],[61.81083984375002,30.91328125],[61.81425781250002,31.072558593749996],[61.75507812500001,31.285302734374994],[61.66015625,31.382421875],[61.34648437500002,31.421630859375],[61.11074218750002,31.451123046874997],[60.854101562500006,31.483251953125],[60.82070312500002,31.495166015624996],[60.791601562500006,31.660595703124997],[60.804296875,31.73447265625],[60.7875,31.877197265625],[60.78994140625002,31.987109375],[60.827246093750006,32.16796875],[60.82929687500001,32.249414062499994],[60.71044921875,32.6],[60.57656250000002,32.994873046875],[60.560546875,33.137841796874994],[60.9169921875,33.505224609375],[60.573828125,33.588330078125],[60.4859375,33.7119140625],[60.48574218750002,34.094775390624996],[60.642675781250006,34.307177734374996],[60.88945312500002,34.31943359375],[60.80390625000001,34.418017578124996],[60.76259765625002,34.475244140624994],[60.73613281250002,34.491796875],[60.72626953125001,34.51826171875],[60.73945312500001,34.544726562499996],[60.80234375,34.554638671875],[60.8453125,34.587695312499996],[60.91474609375001,34.633984375],[60.951171875,34.653857421874996],[61.080078125,34.855615234374994],[61.1,35.272314453125],[61.18925781250002,35.31201171875],[61.24550781250002,35.474072265625],[61.27851562500001,35.51376953125],[61.281835937500006,35.55341796875],[61.26201171875002,35.619580078125],[61.3447265625,35.6294921875],[61.62099609375002,35.43232421875],[62.08964843750002,35.3796875],[62.30781250000001,35.170800781249994],[62.688085937500006,35.255322265625],[63.056640625,35.44580078125],[63.08417968750001,35.56806640625],[63.16972656250002,35.678125],[63.129980468750006,35.84619140625],[63.8625,36.012353515624994],[64.184375,36.14892578125],[64.51103515625002,36.340673828125],[64.56582031250002,36.427587890625],[64.6025390625,36.554541015625],[64.78242187500001,37.05927734375],[64.81630859375002,37.132080078125],[64.95156250000002,37.1935546875],[65.08964843750002,37.237939453124994],[65.30361328125002,37.24677734375],[65.55498046875002,37.251171875],[65.76503906250002,37.569140625],[66.471875,37.3447265625],[66.52226562500002,37.348486328125],[66.827734375,37.3712890625],[67.06884765625,37.334814453125],[67.19550781250001,37.235205078125],[67.31972656250002,37.2095703125],[67.44169921875002,37.2580078125],[67.51728515625001,37.266650390624996],[67.546484375,37.235644531249996],[67.607421875,37.222509765625],[67.7,37.22724609375],[67.7529296875,37.1998046875],[67.75898437500001,37.172216796875],[67.76601562500002,37.14013671875],[67.83447265625,37.064208984375],[67.9580078125,36.972021484375],[68.06777343750002,36.9498046875],[68.26093750000001,37.013085937499994],[68.284765625,37.036328125],[68.29951171875001,37.088427734374996],[68.38691406250001,37.1375],[68.66914062500001,37.2583984375],[68.7232421875,37.268017578125],[68.78203125000002,37.2580078125],[68.82373046875,37.270703125],[68.8384765625,37.30283203125],[68.85537109375002,37.316845703125],[68.88525390625,37.328076171875],[68.91181640625001,37.333935546875],[68.96044921875,37.325048828125],[69.18017578125,37.15830078125],[69.26484375000001,37.1083984375],[69.30390625000001,37.116943359375],[69.35380859375002,37.150048828124994],[69.41445312500002,37.207763671875],[69.4296875,37.290869140625],[69.39921875000002,37.399316406249994],[69.42011718750001,37.48671875],[69.49208984375002,37.553076171875],[69.62578125000002,37.594042968749996],[69.8208984375,37.6095703125],[69.9849609375,37.566162109375],[70.18867187500001,37.582470703125],[70.25146484375,37.66416015625],[70.25498046875,37.765380859375],[70.19941406250001,37.886035156249996],[70.21464843750002,37.9244140625],[70.41777343750002,38.075439453125],[70.7359375,38.42255859375],[71.255859375,38.306982421875],[71.33271484375001,38.170263671875],[71.27851562500001,37.918408203125],[71.319921875,37.90185546875],[71.3896484375,37.906298828124996],[71.48779296875,37.931884765625],[71.55195312500001,37.933154296874996],[71.58222656250001,37.910107421875],[71.43291015625002,37.1275390625],[71.530859375,36.845117187499994],[71.665625,36.696923828124994],[72.65742187500001,37.029052734375],[72.8955078125,37.267529296875],[73.21113281250001,37.408496093749996],[73.38291015625,37.462255859375],[73.48134765625002,37.4716796875],[73.60468750000001,37.446044921875],[73.65712890625002,37.43046875],[73.72060546875002,37.41875],[73.73378906250002,37.37578125],[73.71728515625,37.329443359375],[73.6275390625,37.261572265625],[73.65351562500001,37.23935546875],[73.749609375,37.231787109375],[74.16708984375,37.329443359375],[74.20351562500002,37.372460937499994],[74.25966796875002,37.415429687499994],[74.659375,37.394482421875],[74.73056640625,37.35703125],[74.83046875000002,37.2859375],[74.89130859375001,37.231640625],[74.84023437500002,37.225048828125],[74.76738281250002,37.249169921874994],[74.73896484375001,37.28564453125],[74.72666015625,37.29072265625],[74.6689453125,37.26669921875],[74.55898437500002,37.236621093749996],[74.37216796875,37.15771484375],[74.37617187500001,37.137353515624994],[74.49794921875002,37.0572265625],[74.52646484375,37.030664062499994],[74.54140625000002,37.02216796875]]]},"properties":{"name":"Afghanistan","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[17.57958984375,-8.099023437500009],[17.643359375000017,-8.090722656250009],[18.00878906250003,-8.107617187499983],[18.56269531250001,-7.9359375],[18.944433593750063,-8.001464843750028],[19.142675781250034,-8.001464843750028],[19.34082031249997,-7.966601562500031],[19.369921875000045,-7.706542968749986],[19.371679687500063,-7.655078124999989],[19.47988281250008,-7.472167968750028],[19.48378906250008,-7.279492187500026],[19.527636718750017,-7.144433593749952],[19.87519531250004,-6.986328124999986],[19.99746093750008,-6.976464843750023],[20.190039062500063,-6.9462890625],[20.482226562500074,-6.915820312500017],[20.59003906250001,-6.919921874999957],[20.598730468750006,-6.935156249999949],[20.536914062500045,-7.121777343749955],[20.535839843749983,-7.182812499999955],[20.558398437500045,-7.244433593749989],[20.60781250000008,-7.277734375000023],[20.910937500000017,-7.281445312499983],[21.190332031250023,-7.284960937499989],[21.751074218750034,-7.305468749999989],[21.80605468750005,-7.32861328125],[21.905371093750034,-8.693359374999943],[21.813183593750068,-9.46875],[22.19775390625,-10.040625],[22.30703125000005,-10.691308593750023],[22.203515625000023,-10.829492187500009],[22.226171875,-11.121972656250009],[22.27880859375,-11.19414062499996],[22.314941406250057,-11.198632812499994],[22.39296875000005,-11.159472656250003],[22.486132812500045,-11.086718750000017],[22.56103515625003,-11.05585937500004],[22.814746093750017,-11.08027343750004],[23.076269531250006,-11.087890624999986],[23.463964843750034,-10.969335937499991],[23.83388671875008,-11.013671874999972],[23.96650390625001,-10.871777343750011],[23.98388671875,-11.725],[23.909375,-12.636132812500009],[23.886523437500045,-12.743261718749991],[23.882421875,-12.799023437499983],[23.968066406250045,-12.956933593749994],[23.962988281250006,-12.988476562500026],[23.843164062500023,-13.0009765625],[22.209570312500006,-13.0009765625],[21.97890625000008,-13.0009765625],[21.979101562500034,-13.798730468749994],[21.979296875000074,-14.11962890625],[21.979394531249994,-14.440527343750006],[21.97978515624999,-15.955566406250014],[22.193945312500006,-16.628125],[23.380664062500017,-17.640625],[22.32421875,-17.8375],[20.74550781250008,-18.019726562499983],[20.194335937500057,-17.86367187499999],[18.95527343750004,-17.80351562499999],[18.39638671875005,-17.3994140625],[16.14843750000003,-17.39023437499999],[14.017480468750023,-17.40888671874997],[13.475976562500023,-17.04003906249997],[13.179492187500017,-16.971679687499986],[12.548144531250017,-17.212695312499974],[12.35927734375008,-17.205859375],[12.318457031250006,-17.21337890625003],[12.213378906250028,-17.209960937500043],[12.013964843750074,-17.168554687500034],[11.902539062500011,-17.226562499999957],[11.743066406250023,-17.24921875000004],[11.780078125000017,-16.87128906249997],[11.818945312500034,-16.704101562500014],[11.750878906250023,-15.831933593749966],[12.016113281250057,-15.513671874999957],[12.55048828125004,-13.437792968750003],[12.983203124999989,-12.775683593750017],[13.4169921875,-12.52041015624998],[13.597949218750017,-12.286132812500028],[13.785351562499983,-11.81279296874996],[13.833593750000063,-10.9296875],[13.33222656250004,-9.998925781250009],[12.99853515625,-9.048046875],[13.358984375,-8.687207031250026],[13.378515625000063,-8.369726562500006],[12.82343750000004,-6.954785156249955],[12.283300781250063,-6.12431640624996],[13.184375,-5.85625],[13.346484375000017,-5.863378906250006],[13.978515625,-5.857226562500003],[16.315234375000074,-5.865625],[16.431445312500045,-5.90019531249996],[16.53710937499997,-5.9658203125],[16.697265625,-6.164257812500026],[16.74296874999999,-6.618457031250003],[16.813085937500063,-6.772558593749963],[16.919433593750057,-6.93398437499998],[16.98476562500005,-7.257421874999977],[17.57958984375,-8.099023437500009]]],[[[12.50146484375,-4.5875],[12.848144531250028,-4.428906249999983],[12.881054687500068,-4.445117187499989],[12.971386718750068,-4.551757812499957],[13.048046875000068,-4.619238281250034],[13.072753906250028,-4.634765625],[13.057324218750011,-4.651074218750026],[12.947460937500011,-4.695312499999986],[12.829687499999977,-4.73662109374996],[12.451464843750017,-5.071484374999969],[12.453222656250034,-5.090625],[12.52236328125008,-5.148925781250028],[12.484570312500011,-5.71875],[12.213671875000074,-5.758691406249994],[12.177148437499994,-5.324804687499977],[12.018359375000074,-5.004296874999966],[12.50146484375,-4.5875]]]]},"properties":{"name":"Angola","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[20.06396484375,42.54726562499999],[20.485449218750006,42.223388671875],[20.566210937500017,41.873681640624994],[20.48896484375001,41.272607421874994],[20.709277343750017,40.928369140624994],[20.964257812500023,40.849902343749996],[20.95576171875001,40.775292968749994],[21.030859375,40.622460937499994],[20.881640625000017,40.467919921874994],[20.65742187500001,40.1173828125],[20.4560546875,40.065576171874994],[20.408007812500017,40.049462890624994],[20.383691406250023,40.0171875],[20.338476562500006,39.991064453125],[20.311132812500006,39.979443359375],[20.311328125000017,39.95078125],[20.381640625000017,39.841796875],[20.382421875,39.802636718749994],[20.206835937500017,39.653515625],[20.13105468750001,39.66162109375],[20.05976562500001,39.699121093749994],[20.022558593750006,39.710693359375],[20.001269531250017,39.709423828125],[19.851855468750017,40.0435546875],[19.322265625,40.407080078125],[19.45917968750001,40.40537109375],[19.3375,40.663818359375],[19.57568359375,41.640429687499996],[19.577539062500023,41.7875],[19.342382812500006,41.869091796875],[19.280664062500023,42.17255859375],[19.65449218750001,42.628564453124994],[19.78828125000001,42.476171875],[20.06396484375,42.54726562499999]]]},"properties":{"name":"Albania","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[19.66230468750001,60.187158203124994],[19.53652343750005,60.14497070312501],[19.551367187500063,60.24384765625001],[19.66230468750001,60.187158203124994]]],[[[19.989550781250074,60.351171875],[20.258886718750063,60.26127929687499],[19.799804687500057,60.08173828125001],[19.68691406250005,60.267626953125045],[19.84765625000003,60.22055664062506],[19.823046875000074,60.390185546875045],[19.989550781250074,60.351171875]]]]},"properties":{"name":"Aland","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[1.7060546875,42.503320312499994],[1.534082031250023,42.441699218749996],[1.448828125,42.437451171875],[1.428125,42.46132812499999],[1.414843750000017,42.548388671874996],[1.428320312500006,42.5958984375],[1.501367187500023,42.642724609374994],[1.568164062500017,42.635009765625],[1.709863281250023,42.604443359375],[1.739453125000011,42.575927734375],[1.740234375,42.55673828125],[1.713964843750006,42.525634765625],[1.7060546875,42.503320312499994]]]},"properties":{"name":"Andorra","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[53.927832031250006,24.177197265624983],[53.63447265625004,24.169775390624977],[53.83378906250002,24.258935546875023],[53.927832031250006,24.177197265624983]]],[[[53.3322265625001,24.258593750000045],[53.19091796874997,24.290917968749966],[53.412402343750074,24.411035156250023],[53.3322265625001,24.258593750000045]]],[[[56.29785156250003,25.650683593750045],[56.38798828125002,24.97919921875004],[56.06386718750005,24.73876953125],[56.00058593750006,24.953222656249977],[55.795703125000074,24.868115234374955],[55.76083984375006,24.24267578125],[55.92861328125005,24.215136718750074],[55.98515625000002,24.063378906249966],[55.4684570312501,23.94111328125001],[55.53164062499999,23.81904296875001],[55.1999023437501,23.034765625000034],[55.185839843750074,22.7041015625],[55.104296875000074,22.621484375000023],[52.55507812500005,22.932812499999955],[51.592578125000074,24.07885742187503],[51.56835937500003,24.286181640625074],[51.76757812500003,24.25439453125],[51.84316406250005,24.010888671875023],[52.118554687499994,23.97109375],[52.64824218750002,24.154638671875006],[53.80175781249997,24.069482421874966],[54.14794921875003,24.17119140624999],[54.39707031250006,24.278173828125034],[54.74677734375004,24.810449218750023],[55.94121093750002,25.793994140625017],[56.08046875,26.06264648437505],[56.16748046875003,26.047460937499977],[56.144628906250006,25.690527343750006],[56.29785156250003,25.650683593750045]]]]},"properties":{"name":"United Arab Emirates","childNum":3}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-64.54916992187498,-54.71621093749998],[-63.81542968749997,-54.725097656250014],[-64.637353515625,-54.90253906250001],[-64.75732421875,-54.82656249999999],[-64.54916992187498,-54.71621093749998]]],[[[-68.65322265624994,-54.85361328124999],[-68.62993164062499,-52.65263671875004],[-68.24013671875,-53.08183593749999],[-68.43115234375,-53.0552734375],[-68.48852539062497,-53.260937499999976],[-68.16113281249997,-53.30644531250001],[-68.00849609374995,-53.5640625],[-67.29423828125002,-54.049804687500014],[-66.23564453124999,-54.53349609374997],[-65.17900390624993,-54.678125],[-65.47114257812495,-54.91464843749999],[-66.5111328125,-55.032128906249945],[-67.127099609375,-54.90380859375001],[-68.65322265624994,-54.85361328124999]]],[[[-61.084716796875,-23.65644531250001],[-60.83984375000003,-23.85810546874997],[-59.89248046874994,-24.093554687499974],[-59.18725585937497,-24.56230468749999],[-57.82167968749994,-25.136425781249983],[-57.56313476562494,-25.473730468749963],[-57.943115234375,-26.05292968750001],[-58.18149414062498,-26.30742187499999],[-58.222070312499994,-26.65],[-58.618603515624955,-27.13212890624996],[-58.64174804687494,-27.196093750000017],[-58.60483398437498,-27.314355468750037],[-58.16826171874993,-27.27343749999997],[-56.437158203124966,-27.553808593749977],[-56.16406250000003,-27.321484374999983],[-55.95146484374996,-27.325683593749957],[-55.789990234374926,-27.416406249999966],[-55.71464843749996,-27.41484375],[-55.632910156250006,-27.35712890624997],[-55.59379882812502,-27.288085937500014],[-55.597265625,-27.207617187499963],[-55.56489257812498,-27.15],[-55.496728515624966,-27.11533203124999],[-55.45063476562498,-27.068359375000014],[-55.426660156249994,-27.00927734374997],[-55.13593750000001,-26.931152343749957],[-54.934472656249994,-26.70253906250001],[-54.677734375,-26.308789062499997],[-54.631933593750006,-26.005761718749994],[-54.615869140624994,-25.576074218750023],[-54.44394531249998,-25.625],[-54.15458984374999,-25.523046874999963],[-53.89116210937499,-25.66884765625001],[-53.668554687500006,-26.288183593749977],[-53.83818359375002,-27.121093750000014],[-54.32700195312495,-27.423535156249997],[-54.82910156250003,-27.55058593750003],[-55.10151367187501,-27.866796874999963],[-55.72548828125002,-28.20410156250003],[-55.68725585937497,-28.38164062499996],[-55.890527343749994,-28.370019531249994],[-56.938623046874994,-29.594824218750034],[-57.22465820312499,-29.782128906249994],[-57.40522460937501,-30.03388671875004],[-57.563867187499994,-30.139941406249974],[-57.60888671875003,-30.187792968750045],[-57.65087890624997,-30.295019531250034],[-57.71269531249996,-30.38447265624997],[-57.83120117187502,-30.495214843749963],[-57.87250976562501,-30.591015625000026],[-57.81059570312499,-30.85859375000001],[-57.88632812499998,-30.937402343749994],[-57.86840820312497,-31.104394531249994],[-57.89335937499999,-31.195312499999957],[-58.03339843750001,-31.416601562500006],[-58.053857421874994,-31.494921874999974],[-58.009667968749966,-31.534375],[-57.98798828124998,-31.576171875],[-58.00698242187494,-31.684960937499966],[-58.04233398437495,-31.769238281249997],[-58.16748046874997,-31.87265625],[-58.18901367187499,-31.924218750000037],[-58.16040039062503,-31.986523437500026],[-58.156347656250006,-32.0515625],[-58.17700195312494,-32.11904296875002],[-58.16479492187494,-32.18486328125002],[-58.119726562500006,-32.24892578125002],[-58.12304687499997,-32.321875],[-58.201171875,-32.471679687500014],[-58.219970703125,-32.563964843749986],[-58.17099609374998,-32.95927734374996],[-58.424462890624994,-33.11152343749998],[-58.54721679687498,-33.66347656249998],[-58.392480468749966,-34.192968750000034],[-58.52548828124998,-34.29619140625002],[-58.28334960937494,-34.68349609375005],[-57.54785156250003,-35.018945312499994],[-57.170654296875,-35.3625],[-57.35390624999994,-35.72031249999998],[-57.33544921875,-36.026757812499966],[-57.07617187499994,-36.296777343749994],[-56.74946289062501,-36.346484375],[-56.67202148437494,-36.85126953124998],[-57.546972656250034,-38.085644531250026],[-58.17919921874994,-38.435839843750045],[-59.82832031250001,-38.83818359375003],[-61.112207031249994,-38.99296875000003],[-61.84790039062497,-38.961816406249994],[-62.33476562499993,-38.80009765625],[-62.29506835937502,-39.24326171874996],[-62.053662109374955,-39.373828125],[-62.179345703124994,-39.38046875000002],[-62.076806640624966,-39.46152343750002],[-62.131542968749926,-39.82539062499998],[-62.28691406249996,-39.89531250000002],[-62.40185546875003,-40.19658203125002],[-62.24633789062494,-40.674609374999974],[-62.39501953124997,-40.89082031249997],[-62.95903320312493,-41.10966796875006],[-63.621777343749955,-41.15976562499996],[-64.86948242187503,-40.735839843750014],[-65.13339843749998,-40.88066406250003],[-64.98637695312496,-42.102050781249986],[-64.53774414062494,-42.25458984374998],[-64.57099609374998,-42.416015625],[-64.42041015625003,-42.43378906249998],[-64.10087890624993,-42.395117187500006],[-64.06118164062494,-42.266113281250014],[-64.228515625,-42.21826171874996],[-63.795556640624994,-42.113867187500006],[-63.6298828125,-42.28271484375003],[-63.61733398437502,-42.695800781249986],[-64.03476562499998,-42.88125],[-64.48784179687499,-42.51347656250006],[-64.97070312499997,-42.66630859375002],[-65.02690429687496,-42.75888671874996],[-64.31914062499999,-42.968945312500026],[-64.83994140624998,-43.18886718749998],[-65.25234374999997,-43.571875],[-65.26552734375,-44.2796875],[-65.64760742187502,-44.661425781250045],[-65.63876953125,-45.0078125],[-66.19013671874995,-44.96474609375002],[-66.94140625,-45.25732421875003],[-67.59956054687495,-46.05253906250003],[-67.5064453125,-46.44277343749995],[-66.77685546874994,-47.005859375],[-65.99853515625,-47.09375],[-65.73808593749999,-47.34492187499998],[-65.81430664062495,-47.63818359374996],[-66.22524414062502,-47.826757812500006],[-65.93422851562497,-47.826757812500006],[-65.81005859374997,-47.941113281250026],[-67.46630859375,-48.95175781250004],[-67.68486328125002,-49.2466796875],[-67.82597656249999,-49.91962890625005],[-68.2572265625,-50.104589843749984],[-68.66757812500003,-49.75253906250003],[-68.66162109374997,-49.93574218750005],[-68.97958984375,-50.003027343749984],[-68.59794921874996,-50.00947265624997],[-68.421875,-50.15791015625001],[-69.04477539062495,-50.49912109374998],[-69.35859374999993,-51.028125],[-69.20102539062498,-50.99365234375001],[-69.03530273437497,-51.48896484375002],[-69.46542968750003,-51.58447265625003],[-68.96533203125003,-51.67714843749999],[-68.443359375,-52.35664062500004],[-69.96025390624993,-52.00820312500002],[-71.91865234374995,-51.98955078125004],[-72.40766601562501,-51.54082031250002],[-72.34023437499997,-50.68183593749999],[-72.50981445312496,-50.607519531250034],[-73.15292968749998,-50.73828125000003],[-73.50126953124996,-50.125292968750024],[-73.55419921875,-49.463867187500014],[-73.46157226562497,-49.31386718750001],[-73.13525390625,-49.30068359374999],[-73.03364257812501,-49.014355468750004],[-72.65126953125,-48.84160156249998],[-72.582861328125,-48.47539062499999],[-72.35473632812497,-48.36582031250005],[-72.32832031250001,-48.11005859374998],[-72.517919921875,-47.87636718749998],[-72.34594726562497,-47.49267578124997],[-71.90498046875001,-47.201660156250014],[-71.94023437499999,-46.83125],[-71.69965820312501,-46.6513671875],[-71.87568359374998,-46.160546875],[-71.63154296874998,-45.95371093749998],[-71.74619140624998,-45.57890625],[-71.34931640624995,-45.33193359374995],[-71.5962890625,-44.97919921875004],[-72.04169921874998,-44.90419921875004],[-72.06372070312503,-44.771875],[-71.26113281250002,-44.763085937499966],[-71.15971679687496,-44.56025390625004],[-71.21259765624998,-44.44121093750003],[-71.82001953124993,-44.38310546875],[-71.68007812500002,-43.92958984374998],[-71.90498046875001,-43.34755859374998],[-71.750634765625,-43.237304687499986],[-72.14643554687498,-42.990039062499974],[-72.10820312499993,-42.25185546874995],[-71.75,-42.04677734375001],[-71.91127929687497,-41.650390624999986],[-71.93212890624994,-40.69169921874999],[-71.70898437499997,-40.381738281249994],[-71.81831054687493,-40.17666015624995],[-71.65976562499998,-40.02080078125],[-71.71992187499995,-39.63525390624997],[-71.53945312499997,-39.60244140624995],[-71.40156249999995,-38.93505859374996],[-70.858642578125,-38.60449218750003],[-71.16757812499998,-37.76230468749996],[-71.19218750000002,-36.84365234375004],[-71.05551757812498,-36.52373046874996],[-70.40478515625,-36.06171874999998],[-70.41572265625001,-35.52304687500002],[-70.55517578125,-35.246875],[-70.39316406250003,-35.146875],[-70.05205078124999,-34.30078124999997],[-69.85244140625,-34.224316406250026],[-69.81962890624999,-33.28378906249999],[-70.08486328125002,-33.20175781249998],[-70.02197265625,-32.88457031250002],[-70.36376953125,-32.08349609374997],[-70.25439453125,-31.957714843750026],[-70.585205078125,-31.569433593749963],[-70.51958007812493,-31.1484375],[-70.30908203124994,-31.02265625000004],[-70.15322265625,-30.360937499999963],[-69.95634765624996,-30.35820312500003],[-69.84428710937493,-30.175],[-69.95996093749997,-30.078320312500026],[-70.02680664062501,-29.324023437500017],[-69.82788085937497,-29.10322265624997],[-69.65693359374995,-28.413574218749986],[-69.17441406249998,-27.924707031250037],[-68.84633789062494,-27.153710937499994],[-68.59208984375002,-27.140039062499966],[-68.31865234374999,-26.973242187500006],[-68.59160156249999,-26.47041015624997],[-68.41450195312498,-26.153710937500023],[-68.59208984375002,-25.420019531250034],[-68.38422851562495,-25.091894531249977],[-68.56201171875,-24.74736328125003],[-68.25029296875002,-24.391992187500023],[-67.35620117187503,-24.033789062499963],[-67.00878906249994,-23.00136718750005],[-67.19487304687493,-22.821679687500037],[-66.99111328125,-22.509863281250006],[-66.71171874999999,-22.216308593749986],[-66.36518554687501,-22.113769531249957],[-66.32246093750001,-22.053125],[-66.28212890624997,-21.94746093750001],[-66.24760742187496,-21.83046875],[-66.22016601562495,-21.802539062499974],[-66.174658203125,-21.805664062499986],[-66.09858398437495,-21.83505859375002],[-66.05859375,-21.87949218750002],[-65.86015624999999,-22.019726562499983],[-65.77104492187493,-22.099609375000014],[-65.68618164062497,-22.11025390625005],[-65.51879882812497,-22.094531250000045],[-64.99262695312498,-22.109667968750017],[-64.60551757812499,-22.228808593750045],[-64.52363281250001,-22.37158203125],[-64.47773437499998,-22.485351562499986],[-64.44550781249998,-22.585351562500023],[-64.37397460937498,-22.761035156250017],[-64.32529296875,-22.82763671875],[-64.30791015624993,-22.7953125],[-64.26640625000002,-22.60332031249996],[-63.97612304687502,-22.072558593750003],[-63.92167968749993,-22.028613281250017],[-62.843359375,-21.997265625000026],[-62.62597656250003,-22.29042968749998],[-62.54155273437496,-22.349609374999957],[-62.37250976562498,-22.439160156249997],[-62.21416015624996,-22.612402343750034],[-61.798535156249955,-23.18203125],[-61.084716796875,-23.65644531250001]]]]},"properties":{"name":"Argentina","childNum":3}},{"geometry":{"type":"Polygon","coordinates":[[[46.490625,38.90668945312498],[46.1144531250001,38.877783203125034],[45.977441406249994,39.24389648437503],[45.76630859375004,39.37846679687499],[45.78447265625002,39.54560546875001],[45.456835937500074,39.494482421875006],[45.15283203125003,39.58266601562502],[45.03164062500005,39.76513671874997],[44.76826171875004,39.70351562500005],[44.28925781250004,40.040380859375006],[43.66621093750004,40.12636718750002],[43.56933593750003,40.48237304687498],[43.72265624999997,40.71953124999999],[43.43945312500003,41.10712890625001],[44.077246093750006,41.182519531249994],[44.81132812500002,41.259375],[45.001367187499994,41.29096679687498],[45.188574218750006,41.14741210937504],[45.07050781250004,41.075585937499966],[45.5875,40.846923828125],[45.37890624999997,40.67358398437506],[45.45439453125002,40.532373046874966],[45.96464843750002,40.233789062499966],[45.8859375000001,40.024853515624955],[45.57978515625004,39.9775390625],[46.202050781249994,39.59448242187503],[46.48144531249997,39.55517578125003],[46.36523437500003,39.402490234374994],[46.584765625000074,39.22368164062499],[46.400292968749994,39.1921875],[46.490625,38.90668945312498]]]},"properties":{"name":"Armenia","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-170.72626953125,-14.351171875],[-170.8205078125,-14.312109375],[-170.568115234375,-14.266796875000011],[-170.72626953125,-14.351171875]]]},"properties":{"name":"American Samoa","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[69.2824218750001,-49.05888671875002],[69.16718750000004,-48.88291015624996],[69.36875,-48.89042968749998],[69.2824218750001,-49.05888671875002]]],[[[69.18486328125002,-49.10957031250004],[69.59277343749997,-48.97099609375005],[69.64404296875003,-49.11738281250003],[69.40507812500002,-49.18173828125],[69.5423828125,-49.25566406250005],[70.32021484375005,-49.05859374999996],[70.55546875000007,-49.201464843750024],[70.38613281250005,-49.433984374999966],[70.16582031250002,-49.34296874999998],[69.75996093750004,-49.430175781249986],[69.98642578125006,-49.58164062500003],[70.2477539062501,-49.53066406250003],[70.12431640625002,-49.70439453124999],[69.153125,-49.5296875],[68.99296875000007,-49.704980468750016],[68.81474609375002,-49.69960937499999],[68.88339843750006,-49.16494140624995],[68.76953125000003,-49.06591796875003],[69.00244140624997,-48.661230468750006],[69.13613281250005,-48.86103515625003],[69.05214843750005,-49.08193359375001],[69.18486328125002,-49.10957031250004]]],[[[51.83457031250006,-46.43994140625],[51.65927734375006,-46.37363281249999],[51.7418945312501,-46.32685546874997],[51.83457031250006,-46.43994140625]]]]},"properties":{"name":"Fr. S. Antarctic Lands","childNum":3}},{"geometry":{"type":"Polygon","coordinates":[[[-61.71606445312503,17.037011718749994],[-61.85966796874996,17.013330078124966],[-61.887109374999966,17.09814453125],[-61.81728515624994,17.168945312500057],[-61.71606445312503,17.037011718749994]]]},"properties":{"name":"Antigua and Barb.","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[147.35605468750006,-43.396972656250014],[147.30888671875007,-43.50078125000002],[147.10498046875003,-43.43115234374996],[147.28388671875004,-43.278906250000034],[147.35605468750006,-43.396972656250014]]],[[[145.04296875000003,-40.78671875],[145.28300781250002,-40.76992187500002],[146.31748046875006,-41.16347656250001],[146.72343750000002,-41.07802734375001],[146.84814453124997,-41.16806640624996],[146.98984375000006,-40.99238281249997],[147.45478515625004,-41.00166015624998],[147.62167968750012,-40.844726562499986],[147.87294921875005,-40.87255859374997],[147.96875,-40.779589843750045],[148.215234375,-40.85488281250002],[148.34257812500007,-42.21533203124997],[148.21367187500002,-41.97001953125],[147.92441406250006,-42.5724609375],[147.94541015625006,-43.18183593749997],[147.7858398437501,-43.22001953125002],[147.69892578125004,-43.12255859374997],[147.64794921874997,-43.02060546874999],[147.8,-42.928125],[147.57382812500006,-42.84570312499997],[147.4523437500001,-43.03339843750001],[147.29794921875006,-42.790917968749994],[147.24501953125005,-43.21591796874999],[146.99697265625005,-43.15634765625002],[147.07734375000004,-43.27587890625003],[146.87392578125,-43.6125],[146.54853515625004,-43.50888671874999],[146.04316406250004,-43.547167968749974],[145.99443359375007,-43.37607421875002],[146.20800781249997,-43.31621093749999],[145.8732421875001,-43.29238281250002],[145.48759765625002,-42.92666015625004],[145.19882812500006,-42.23085937500004],[145.46826171874997,-42.492871093750026],[145.51660156249997,-42.3544921875],[145.33105468750003,-42.14707031250002],[145.23486328124997,-42.19697265624997],[145.23818359375,-42.01962890624999],[144.76611328125003,-41.39003906249998],[144.64609375000006,-40.980859375],[144.71855468750002,-40.67226562500002],[145.04296875000003,-40.78671875]]],[[[148.23691406250006,-40.515136718749986],[148.18779296875007,-40.592578125000045],[148.11728515625012,-40.52148437499996],[148.23691406250006,-40.515136718749986]]],[[[144.784375,-40.506738281249966],[144.74804687499997,-40.589453125000034],[144.7833984375001,-40.434863281249974],[144.784375,-40.506738281249966]]],[[[148.32626953125006,-40.30693359375003],[148.40400390625004,-40.486523437500026],[148.02011718750012,-40.40419921874995],[148.32626953125006,-40.30693359375003]]],[[[148.000390625,-39.75761718750003],[148.29736328125003,-39.985742187499966],[148.31357421875012,-40.173535156250026],[148.10566406250004,-40.26210937499995],[147.76718750000012,-39.87031249999998],[148.000390625,-39.75761718750003]]],[[[143.92792968750004,-40.116113281249966],[143.83857421875004,-39.90410156250003],[144.00078125000007,-39.580175781250034],[144.14101562500005,-39.953808593750026],[143.92792968750004,-40.116113281249966]]],[[[145.31445312500003,-38.49082031249996],[145.35507812500012,-38.55703124999995],[145.12841796875003,-38.52763671875],[145.31445312500003,-38.49082031249996]]],[[[137.59648437500007,-35.73867187499998],[137.92890625000004,-35.72607421875],[138.12343750000005,-35.85234375],[137.67089843749997,-35.897949218750014],[137.44843750000004,-36.07480468749999],[137.20957031250012,-35.982421875],[136.7550781250001,-36.03310546875002],[136.540625,-35.89013671875003],[136.63867187499997,-35.74882812500002],[137.33408203125006,-35.59248046875004],[137.58496093749997,-35.620214843750006],[137.59648437500007,-35.73867187499998]]],[[[153.53876953125004,-27.436425781250037],[153.42656250000002,-27.70644531249998],[153.43544921875,-27.40537109375002],[153.53876953125004,-27.436425781250037]]],[[[113.18300781250005,-26.053125],[112.96425781250005,-25.78310546875001],[112.94707031250002,-25.531542968750017],[113.18300781250005,-26.053125]]],[[[153.07744140625002,-25.75078125],[152.97666015625012,-25.551367187499963],[153.03808593750003,-25.193164062500003],[153.22753906249997,-25.00576171875001],[153.14375,-24.814843750000023],[153.25693359375012,-24.72890625],[153.35019531250012,-25.063085937499963],[153.07744140625002,-25.75078125]]],[[[151.14658203125006,-23.49082031250002],[151.24013671875,-23.529687500000037],[151.23828124999997,-23.77578125],[151.03330078125006,-23.530175781250037],[151.14658203125006,-23.49082031250002]]],[[[115.44619140625005,-20.78779296875001],[115.31806640625004,-20.850585937500014],[115.43457031249997,-20.66796875000003],[115.44619140625005,-20.78779296875001]]],[[[149.04375,-20.29150390624997],[148.93886718750005,-20.283691406249986],[148.98105468750012,-20.153515625000026],[149.04375,-20.29150390624997]]],[[[146.27832031249997,-18.23125],[146.29882812499997,-18.48476562500005],[146.09882812500004,-18.251757812500003],[146.27832031249997,-18.23125]]],[[[139.45917968750004,-17.11455078124996],[139.49277343750006,-16.990429687499983],[139.57089843750006,-17.09443359375004],[139.45917968750004,-17.11455078124996]]],[[[139.50781250000003,-16.57304687499996],[139.1595703125,-16.74169921875003],[139.29296875000003,-16.467285156249986],[139.58789062499997,-16.39521484374997],[139.69775390624997,-16.514941406250017],[139.50781250000003,-16.57304687499996]]],[[[137.09365234375005,-15.778125],[136.94267578125002,-15.711718749999989],[137.00957031250007,-15.594824218749977],[137.09365234375005,-15.778125]]],[[[124.59726562500006,-15.40195312500002],[124.52421875000002,-15.421484375],[124.51933593750002,-15.26748046874998],[124.59726562500006,-15.40195312500002]]],[[[125.19882812500006,-14.57949218749998],[125.0912109375,-14.59169921874998],[125.15996093750002,-14.456054687499972],[125.19882812500006,-14.57949218749998]]],[[[136.71464843750002,-13.803906249999983],[136.89082031250004,-13.786621093750014],[136.74531250000004,-14.072656250000023],[136.95078125000006,-14.184277343750026],[136.89433593750002,-14.293066406249977],[136.33544921875003,-14.211816406250037],[136.42470703125,-13.864843749999963],[136.6556640625,-13.675878906250006],[136.71464843750002,-13.803906249999983]]],[[[136.23740234375006,-13.824511718750003],[136.12265625000012,-13.816601562499983],[136.21542968750012,-13.664746093750054],[136.23740234375006,-13.824511718750003]]],[[[136.33867187500007,-11.602343749999989],[136.18027343750006,-11.676757812499957],[136.47929687500002,-11.465917968749991],[136.33867187500007,-11.602343749999989]]],[[[130.45927734375007,-11.679296875000034],[130.60625,-11.816601562500026],[130.04326171875007,-11.787304687500011],[130.19755859375007,-11.658203125],[130.15283203124997,-11.477539062499972],[130.29492187499997,-11.33681640624998],[130.45927734375007,-11.679296875000034]]],[[[130.6188476562501,-11.376074218749991],[131.02304687500006,-11.334375],[131.26826171875004,-11.18984375],[131.53857421874997,-11.436914062500037],[130.95097656250007,-11.926464843750026],[130.51191406250004,-11.617871093749955],[130.38457031250002,-11.1921875],[130.6188476562501,-11.376074218749991]]],[[[136.59853515625,-11.378906249999943],[136.52656250000004,-11.438867187499994],[136.78027343749997,-11.0125],[136.59853515625,-11.378906249999943]]],[[[132.59335937500006,-11.302832031249991],[132.48378906250005,-11.037304687499983],[132.57880859375004,-10.968847656249977],[132.59335937500006,-11.302832031249991]]],[[[143.17890625000004,-11.954492187499966],[143.11025390625,-12.303515625000017],[143.40156250000004,-12.639941406249989],[143.5866210937501,-13.443652343750031],[143.54843750000012,-13.74101562499996],[143.75634765625003,-14.348828124999969],[143.96181640625005,-14.462890625000028],[144.473046875,-14.231835937500023],[144.64804687500006,-14.492480468750017],[145.28769531250006,-14.943164062499989],[145.42607421875002,-16.406152343749966],[145.75478515625,-16.879492187500034],[145.91210937499997,-16.9125],[146.12587890625005,-17.63525390625],[146.03222656249997,-18.272851562500037],[146.3332031250001,-18.55371093749997],[146.38339843750006,-18.97705078124997],[147.13876953125006,-19.39316406250002],[147.41855468750012,-19.378125],[147.7423828125001,-19.770117187499977],[148.759375,-20.28955078125003],[148.88476562499997,-20.480859375],[148.72998046874997,-20.4677734375],[148.68369140625012,-20.58017578124999],[149.20488281250007,-21.125097656249977],[149.45410156249997,-21.57871093750002],[149.70390625000002,-22.440527343750006],[149.82246093750004,-22.389843749999983],[149.97441406250007,-22.55068359374998],[149.94189453125003,-22.30810546875003],[150.07617187500003,-22.16445312499998],[150.54130859375002,-22.55908203125],[150.56855468750004,-22.38398437500004],[150.67246093750012,-22.418164062499983],[150.84316406250005,-23.4580078125],[151.15380859375003,-23.784082031249994],[151.83164062500006,-24.12294921875001],[152.12988281250003,-24.59755859374998],[152.45634765625007,-24.802441406249983],[152.65429687499997,-25.201953125000017],[152.91347656250005,-25.432128906250014],[152.98496093750012,-25.816210937500003],[153.16494140625,-25.964160156250045],[153.11679687500006,-27.194433593750034],[153.57568359375003,-28.24052734374999],[153.6168945312501,-28.673046875],[153.03056640625002,-30.563378906249994],[152.94394531250012,-31.43486328124999],[152.5592773437501,-32.045703125],[152.4704101562501,-32.439062500000034],[152.13652343750002,-32.678125],[152.1642578125001,-32.75742187499996],[151.812890625,-32.90107421875001],[151.29208984375012,-33.580957031249966],[151.28027343750003,-33.92666015625005],[151.12480468750007,-34.00527343749998],[151.23154296875006,-34.0296875],[150.8712890625001,-34.49912109374996],[150.80458984375,-35.01289062500001],[150.19531249999997,-35.83359374999996],[149.93271484375012,-37.528515625000026],[149.480859375,-37.77119140625],[147.87675781250002,-37.93417968749998],[146.8568359375,-38.663476562499966],[146.21748046875004,-38.72744140625004],[146.33662109375004,-38.89423828125],[146.46660156250007,-38.84033203125003],[146.40000000000012,-39.14550781250003],[146.1583984375001,-38.86572265624996],[145.93535156250002,-38.90175781250002],[145.79082031250007,-38.66699218749997],[145.39726562500002,-38.53535156249998],[145.54218750000004,-38.39384765625002],[145.4757812500001,-38.24375],[145.29277343750002,-38.237597656249974],[144.95957031250012,-38.500781250000045],[144.71777343749997,-38.34033203125004],[144.91142578125007,-38.34404296874999],[145.11992187500007,-38.091308593750014],[144.89130859375004,-37.899804687499994],[144.39550781250003,-38.13691406249998],[144.6652343750001,-38.20996093750003],[143.53896484375005,-38.82089843749998],[142.45585937500002,-38.38632812499999],[141.725,-38.27138671875002],[141.5939453125001,-38.38779296875002],[141.42421875,-38.36347656250004],[141.0109375000001,-38.07695312500003],[140.39042968750007,-37.89667968749998],[139.78427734375012,-37.24580078124998],[139.85732421875,-36.662109375],[139.72900390625003,-36.37138671875002],[138.9689453125001,-35.58076171874997],[139.17802734375007,-35.52304687500002],[139.289453125,-35.61132812499997],[139.28251953125002,-35.375390624999966],[138.521875,-35.6423828125],[138.184375,-35.612695312499994],[138.5111328125,-35.02441406249996],[138.48994140625004,-34.76357421875002],[138.0892578125,-34.16982421875002],[137.69169921875002,-35.14296875000004],[136.88359375000007,-35.23974609375004],[137.01425781250012,-34.91582031250003],[137.39101562500005,-34.91328124999997],[137.49384765625004,-34.16113281250003],[137.9318359375001,-33.57910156250003],[137.85234375000007,-33.20078124999996],[137.99257812500005,-33.094238281250014],[137.78320312500003,-32.578125],[137.79091796875,-32.82324218749996],[137.44228515625,-33.1935546875],[137.23730468750003,-33.62949218749999],[136.43066406249997,-34.02998046875004],[135.891015625,-34.660937499999974],[135.96972656249997,-34.98183593749998],[135.7923828125,-34.863281249999986],[135.64755859375006,-34.93964843750001],[135.12304687499997,-34.58574218750003],[135.21679687499997,-34.48730468749996],[135.45,-34.58105468749996],[135.21894531250004,-33.959765625000045],[134.88876953125012,-33.62636718749998],[134.79101562499997,-33.32832031250001],[134.60771484375002,-33.19013671875001],[134.30126953124997,-33.16503906249996],[134.17353515625004,-32.979101562500006],[134.10039062500007,-32.748632812500034],[134.22714843750006,-32.73056640624999],[134.23417968750007,-32.54853515625004],[133.66533203125007,-32.207226562500054],[133.21210937500004,-32.18378906249998],[132.75742187500012,-31.95625],[132.21464843750002,-32.00712890624996],[131.14365234375006,-31.49570312500005],[130.78300781250002,-31.604003906249986],[129.1876953125001,-31.659960937500017],[127.31982421874997,-32.2640625],[125.91718750000004,-32.296972656250034],[124.75878906250003,-32.882714843749994],[124.24375,-33.01523437499999],[123.50683593749997,-33.916210937500054],[122.15097656250006,-33.99179687499999],[122.06113281250006,-33.874414062499966],[121.40507812500007,-33.826757812500034],[119.85410156250012,-33.97470703124998],[119.45058593750005,-34.368261718750034],[118.89531250000007,-34.47988281250004],[118.13554687500002,-34.98662109374999],[117.58193359375005,-35.09775390624998],[116.51718750000012,-34.98789062499998],[115.98671875000005,-34.795019531250034],[115.56503906250012,-34.42578125000003],[115.00878906250003,-34.25585937499997],[114.9938476562501,-33.51533203125],[115.3587890625,-33.63994140624999],[115.68300781250005,-33.19287109375003],[115.6984375000001,-31.694531250000054],[115.07792968750007,-30.560449218750023],[114.85683593750005,-29.14296875],[114.16513671875012,-28.08066406250002],[114.028125,-27.34726562499999],[113.18476562500004,-26.182226562499963],[113.32324218749997,-26.243847656249997],[113.35605468750012,-26.080468750000023],[113.58164062500006,-26.558105468749986],[113.73369140625002,-26.59511718749998],[113.83642578125003,-26.50058593749999],[113.85283203125007,-26.33212890625005],[113.39531250000002,-25.71328125],[113.4513671875001,-25.599121093750014],[113.7130859375001,-25.83076171875004],[113.72373046875006,-26.129785156250037],[113.85390625,-26.01445312499999],[113.99199218750007,-26.32148437500001],[114.09033203124997,-26.393652343749963],[114.21572265625,-26.289453124999966],[114.2142578125,-25.851562500000014],[113.41767578125004,-24.435644531250034],[113.48984375000012,-23.869628906250014],[113.7570312500001,-23.418164062500054],[113.79511718750004,-22.91455078125003],[113.68281250000004,-22.637792968749963],[114.02285156250005,-21.881445312499977],[114.12392578125005,-21.828613281249957],[114.14160156250003,-22.483105468749983],[114.37773437500007,-22.341503906249997],[114.70927734375002,-21.82343749999997],[115.45615234375012,-21.49169921874997],[116.0109375000001,-21.030371093749963],[116.7067382812501,-20.653808593749986],[117.40625,-20.72119140625003],[118.19921875000003,-20.37519531249997],[118.75146484374997,-20.261914062499983],[119.10449218749997,-19.995312500000026],[119.58593750000003,-20.03828125],[120.99794921875,-19.604394531249966],[121.33769531250002,-19.31992187500002],[121.83378906250002,-18.477050781249986],[122.34541015625004,-18.11191406250002],[122.14746093749997,-17.54902343750001],[122.2609375000001,-17.135742187500014],[122.72041015625004,-16.78769531249999],[122.97070312499997,-16.436816406250003],[123.56308593750006,-17.520898437499966],[123.59355468750007,-17.03037109375005],[123.83105468750003,-17.120800781249997],[123.8744140625,-16.918652343750026],[123.4904296875001,-16.49072265624997],[123.62597656249997,-16.416308593750003],[123.60703125000006,-16.224023437499994],[123.72890625,-16.192480468749963],[123.85917968750007,-16.38232421875],[124.04443359374997,-16.264941406249974],[124.30039062500006,-16.388281249999977],[124.77197265624997,-16.40263671874996],[124.40488281250006,-16.298925781249977],[124.41640625,-16.133496093750026],[124.5768554687501,-16.11367187499998],[124.64853515625012,-15.870214843750034],[124.50429687500005,-15.972460937499989],[124.38164062500002,-15.758203125000037],[124.43955078125012,-15.493554687500037],[124.56162109375012,-15.496289062499969],[124.69257812500004,-15.273632812499997],[125.06298828125003,-15.44228515624998],[125.0729492187501,-15.306738281249991],[124.90917968750003,-15.310058593749957],[124.83906250000004,-15.160742187500006],[125.03818359375012,-15.004101562499969],[125.35566406250004,-15.119824218750011],[125.17871093749997,-14.714746093749994],[125.57978515625004,-14.483203124999989],[125.62773437500002,-14.256640625000017],[125.70458984374997,-14.29140625],[125.66162109375003,-14.529492187500011],[125.81953125000004,-14.469140624999966],[125.890625,-14.61796875],[126.0207031250001,-14.49453125],[126.0539062500001,-13.977246093750026],[126.1842773437501,-14.00205078125002],[126.25849609375004,-14.163574218749972],[126.403125,-14.018945312499994],[126.5697265625,-14.160937499999974],[126.7806640625,-13.955175781249977],[126.77558593750004,-13.788476562500037],[126.90322265625,-13.744140624999972],[127.45761718750006,-14.031445312499969],[128.18046875000007,-14.711621093749983],[128.06943359375012,-15.329296874999969],[128.15546875000004,-15.225585937499972],[128.25468750000002,-15.298535156250011],[128.175,-15.043164062500026],[128.57578125000006,-14.774511718750006],[129.05820312500012,-14.884375],[129.21582031249997,-15.160253906249991],[129.26757812500003,-14.871484375000051],[129.63476562499997,-15.139746093749991],[129.637109375,-14.850976562500037],[129.84873046875012,-14.828906249999989],[129.60468750000004,-14.647070312499977],[129.69794921875004,-14.557421875000017],[129.37871093750002,-14.39248046874998],[129.70986328125,-13.979980468749972],[129.83886718749997,-13.572949218749997],[130.25976562500003,-13.30224609375],[130.1349609375001,-13.145507812499957],[130.1681640625001,-12.957421875],[130.39990234374997,-12.68789062499999],[130.61748046875007,-12.646875],[130.62265625000006,-12.43105468749998],[130.8673828125001,-12.557812499999955],[130.87382812500007,-12.367187500000028],[131.29160156250006,-12.067871093749972],[131.43828125000002,-12.27695312500002],[132.06406250000006,-12.28076171875],[132.25322265625007,-12.186035156249972],[132.41103515625,-12.295117187499997],[132.51054687500002,-12.134863281250034],[132.71279296875,-12.1234375],[132.63046875000012,-12.035156249999972],[132.67421875000005,-11.649023437499991],[132.47519531250006,-11.491503906249974],[132.07285156250006,-11.474707031250006],[131.82246093750004,-11.302441406249997],[131.96152343750006,-11.180859375000011],[132.15546875000004,-11.311132812499991],[132.33398437499997,-11.223535156249994],[132.6828125000001,-11.505566406249997],[132.96103515625012,-11.407324218749963],[133.18525390625004,-11.705664062499991],[133.90419921875,-11.832031249999972],[134.4173828125,-12.052734375],[134.73027343750002,-11.984375],[135.02968750000005,-12.19375],[135.2179687500001,-12.221679687499957],[135.92246093750012,-11.825781250000034],[135.70439453125007,-12.209863281250037],[136.00849609375004,-12.19140625],[136.08183593750007,-12.422460937500006],[136.26064453125,-12.433789062499997],[136.32851562500005,-12.305566406249994],[136.24990234375,-12.173046875],[136.44335937499997,-11.951464843749974],[136.7194335937501,-12.226464843749952],[136.89746093749997,-12.243554687499966],[136.94746093750004,-12.34990234374996],[136.53701171875,-12.784277343749991],[136.59433593750012,-13.003808593750051],[136.46103515625006,-13.225195312500034],[136.29414062500004,-13.137988281250031],[135.92734375000012,-13.304296874999977],[135.95449218750005,-13.934863281250017],[135.40517578125005,-14.758203124999966],[135.4533203125001,-14.923144531250003],[136.20537109375002,-15.403417968749963],[136.29140625000005,-15.570117187500003],[136.70488281250007,-15.685253906250011],[136.78466796874997,-15.89423828125004],[137.00214843750004,-15.878320312499994],[137.70371093750006,-16.233007812499963],[138.24501953125005,-16.718359374999977],[139.00986328125006,-16.899316406249994],[139.2484375,-17.328613281249957],[140.03583984375004,-17.702636718749957],[140.51113281250005,-17.62451171875003],[140.83046875,-17.414453125000037],[141.29140625,-16.46347656250002],[141.62548828124997,-15.056640625000014],[141.52294921875003,-14.470117187499994],[141.59433593750006,-14.152832031250014],[141.47255859375,-13.797558593750011],[141.64541015625,-13.259082031250003],[141.61357421875002,-12.943457031250006],[141.92978515625006,-12.73984375],[141.67773437500003,-12.491406250000011],[141.68857421875012,-12.351074218750028],[141.87050781250005,-11.9755859375],[141.96113281250004,-12.054296874999963],[142.168359375,-10.946582031249974],[142.45644531250005,-10.707324218749989],[142.60507812500012,-10.748242187499983],[142.55273437500003,-10.874414062500023],[142.7796875,-11.115332031249977],[142.87255859374997,-11.821386718750034],[143.17890625000004,-11.954492187499966]]],[[[142.2748046875,-10.704785156250011],[142.19140624999997,-10.762011718750031],[142.1310546875001,-10.640625],[142.19794921875004,-10.59199218750004],[142.2748046875,-10.704785156250011]]]]},"properties":{"name":"Australia","childNum":30}},{"geometry":{"type":"Polygon","coordinates":[[[16.953125,48.598828125],[16.86542968750001,48.3869140625],[17.147363281250023,48.00595703125],[17.06660156250001,47.707568359374996],[16.421289062500023,47.674462890624994],[16.676562500000017,47.536035156249994],[16.44287109375,47.39951171875],[16.453417968750017,47.006787109375],[16.093066406250017,46.86328125],[15.957617187500006,46.677636718749994],[14.893261718750011,46.605908203125],[14.5498046875,46.399707031249996],[13.7,46.520263671875],[13.490039062500017,46.555566406249994],[13.3515625,46.557910156249996],[13.16875,46.57265625],[12.479199218750011,46.672509765624994],[12.38828125,46.70263671875],[12.330078125,46.759814453124996],[12.267968750000023,46.835888671875],[12.154101562500017,46.93525390625],[12.130761718750023,46.98476562499999],[12.16552734375,47.028173828125],[12.201269531250006,47.060888671875],[12.197167968750023,47.075],[12.16943359375,47.08212890625],[11.775683593750017,46.986083984375],[11.527539062500011,46.997412109375],[11.433203125,46.983056640624994],[11.244433593750017,46.97568359375],[11.133886718750006,46.936181640624994],[11.0634765625,46.859130859375],[11.025097656250011,46.79697265625],[10.993261718750006,46.777001953124994],[10.92734375,46.769482421875],[10.828906250000017,46.775244140625],[10.759765625,46.793310546875],[10.689257812500017,46.84638671875],[10.579785156250011,46.8537109375],[10.479394531250023,46.855126953124994],[10.452832031250011,46.86494140625],[10.45458984375,46.8994140625],[10.414941406250023,46.964404296874996],[10.349414062500017,46.98476562499999],[10.133496093750011,46.851513671875],[9.580273437500011,47.057373046875],[9.527539062500011,47.270751953125],[9.625878906250023,47.467041015625],[9.524023437500006,47.52421875],[9.748925781250023,47.575537109375],[9.839160156250017,47.552294921874996],[9.971582031250023,47.505322265625],[10.034082031250023,47.473583984375],[10.059863281250017,47.449072265625],[10.066308593750023,47.393359375],[10.200292968750006,47.363427734374994],[10.183007812500023,47.27880859375],[10.369140625,47.366064453125],[10.40390625,47.4169921875],[10.439453125,47.5515625],[10.482812500000023,47.541796875],[10.65869140625,47.547216796875],[10.741601562500023,47.52412109375],[10.873046875,47.52021484375],[11.0419921875,47.393115234374996],[12.185644531250006,47.61953125],[12.203808593750011,47.646728515625],[12.196875,47.70908203125],[12.209277343750017,47.71826171875],[12.268359375000017,47.702734375],[12.353540736607165,47.70264787946429],[12.492553013392856,47.68551897321428],[12.685839843750017,47.669335937499994],[12.771386718750023,47.639404296875],[12.796191406250017,47.60703125],[12.781152343750023,47.5904296875],[12.7828125,47.56416015625],[12.809375,47.5421875],[12.87890625,47.5064453125],[12.968066406250017,47.47568359375],[13.014355468750011,47.478076171874996],[13.031542968750017,47.5080078125],[13.047949218750006,47.579150390624996],[13.054101562500023,47.655126953125],[12.897656250000011,47.721875],[12.953515625000023,47.890625],[12.760351562500006,48.106982421874996],[13.215234375000023,48.301904296874994],[13.322851562500006,48.33125],[13.409375,48.394140625],[13.459863281250023,48.56455078125],[13.4716796875,48.571826171874996],[13.486621093750017,48.581835937499996],[13.636623883928596,48.580904017857144],[13.785351562500011,48.587451171874996],[13.798828125,48.6216796875],[13.802929687500011,48.747509765625],[13.814746093750017,48.766943359375],[14.049121093750017,48.602490234375],[14.691308593750023,48.59921875],[15.066796875000023,48.997851562499996],[16.057226562500006,48.754785156249994],[16.543554687500006,48.796240234375],[16.953125,48.598828125]]]},"properties":{"name":"Austria","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[46.1144531250001,38.877783203125034],[45.4796875000001,39.00625],[44.81718750000002,39.65043945312496],[44.76826171875004,39.70351562500005],[45.03164062500005,39.76513671874997],[45.15283203125003,39.58266601562502],[45.456835937500074,39.494482421875006],[45.78447265625002,39.54560546875001],[45.76630859375004,39.37846679687499],[45.977441406249994,39.24389648437503],[46.1144531250001,38.877783203125034]]],[[[48.572851562500006,41.84448242187503],[49.45673828125004,40.79985351562502],[49.77597656250006,40.583984375],[50.18251953125005,40.50478515625002],[50.3659179687501,40.279492187499955],[49.91884765625005,40.31640625000003],[49.55117187499999,40.19414062499999],[49.3244140625001,39.60834960937501],[49.36279296875003,39.349560546874955],[49.16533203125002,39.03027343750003],[49.013476562500074,39.13398437500001],[48.85449218750003,38.83881835937501],[48.86875,38.43549804687498],[48.59267578125005,38.41108398437498],[47.99648437499999,38.85375976562503],[48.292089843750006,39.01884765624999],[48.10439453125005,39.241113281249994],[48.322167968749994,39.39907226562502],[47.995898437500074,39.683935546875034],[46.490625,38.90668945312498],[46.400292968749994,39.1921875],[46.584765625000074,39.22368164062499],[46.36523437500003,39.402490234374994],[46.48144531249997,39.55517578125003],[46.202050781249994,39.59448242187503],[45.57978515625004,39.9775390625],[45.8859375000001,40.024853515624955],[45.96464843750002,40.233789062499966],[45.45439453125002,40.532373046874966],[45.37890624999997,40.67358398437506],[45.5875,40.846923828125],[45.07050781250004,41.075585937499966],[45.188574218750006,41.14741210937504],[45.001367187499994,41.29096679687498],[45.2171875,41.423193359375006],[45.28095703125004,41.449560546875034],[46.086523437500006,41.183837890625],[46.43095703125002,41.077050781249994],[46.534375,41.08857421875004],[46.62636718750005,41.15966796875006],[46.66240234375002,41.24550781250002],[46.67255859375004,41.28681640625001],[46.61894531250002,41.34375],[46.30546875000002,41.507714843749994],[46.18427734375004,41.70214843749997],[46.42988281250004,41.890966796875006],[46.74931640625002,41.812597656250006],[47.31767578125002,41.28242187500001],[47.79101562499997,41.19926757812502],[48.572851562500006,41.84448242187503]]]]},"properties":{"name":"Azerbaijan","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[30.553613281250023,-2.400097656250011],[30.53369140625,-2.42626953125],[30.441992187500006,-2.613476562500011],[30.424218750000023,-2.6416015625],[30.47333984375001,-2.6943359375],[30.42402343750001,-2.824023437500003],[30.433496093750023,-2.87451171875],[30.515039062500023,-2.917578125],[30.604296875000017,-2.935253906250011],[30.70947265625,-2.977246093750011],[30.7802734375,-2.98486328125],[30.811132812500006,-3.116406250000011],[30.79023437500001,-3.274609375000011],[30.4,-3.65390625],[29.947265625,-4.307324218750011],[29.7177734375,-4.455859375],[29.403222656250023,-4.449316406250006],[29.211816406250023,-3.833789062500003],[29.224414062500017,-3.053515625],[29.01435546875001,-2.72021484375],[29.10205078125,-2.595703125],[29.390234375,-2.80859375],[29.698046875000017,-2.794726562500003],[29.8681640625,-2.71640625],[29.93017578125,-2.339550781250011],[30.117285156250006,-2.416601562500006],[30.408496093750017,-2.31298828125],[30.553613281250023,-2.400097656250011]]]},"properties":{"name":"Burundi","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[5.693554687500011,50.774755859375006],[5.993945312500017,50.75043945312504],[6.340917968750006,50.451757812500034],[6.116503906250045,50.120996093749966],[6.08906250000004,50.15458984374996],[6.054785156249977,50.154296875],[5.976269531250068,50.167187499999955],[5.866894531250068,50.08281250000002],[5.817382812500028,50.01269531250003],[5.7880859375,49.96123046875002],[5.744042968749994,49.91962890624998],[5.789746093749983,49.53828125000001],[5.50732421875,49.51088867187502],[4.867578125000051,49.78813476562502],[4.818652343750045,50.153173828125034],[4.545019531250063,49.96025390624999],[4.149316406250023,49.971582031249994],[4.174609375000017,50.24648437500005],[3.689355468750023,50.30605468750002],[3.595410156250068,50.47734374999999],[3.27333984375008,50.53154296875002],[3.10683593750008,50.779443359374994],[2.759375,50.750634765624994],[2.52490234375,51.097119140624955],[3.35009765625,51.37768554687503],[3.43251953125008,51.24575195312505],[3.902050781250011,51.20766601562502],[4.226171875000034,51.38647460937503],[5.03095703125004,51.46909179687498],[5.214160156250045,51.278955078124966],[5.796484375000034,51.153076171875],[5.693554687500011,50.774755859375006]]]},"properties":{"name":"Belgium","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[3.595410156250011,11.6962890625],[3.553906250000011,11.631884765624989],[3.490527343750017,11.49921875],[3.48779296875,11.395410156249994],[3.638867187500011,11.176855468749991],[3.65625,11.154589843749989],[3.6953125,11.1203125],[3.71640625,11.07958984375],[3.7568359375,10.76875],[3.83447265625,10.607421875],[3.771777343750017,10.417626953124994],[3.646582031250006,10.408984374999989],[3.60205078125,10.004541015624994],[3.3251953125,9.778466796874994],[3.044921875,9.083837890624991],[2.774804687500023,9.048535156249997],[2.703125,8.371826171875],[2.68603515625,7.873730468749997],[2.719335937500006,7.616259765624989],[2.7509765625,7.541894531249994],[2.78515625,7.476855468749989],[2.783984375000017,7.443408203124989],[2.765820312500011,7.422509765624994],[2.75048828125,7.395068359374989],[2.756738281250023,7.067919921874989],[2.721386718750011,6.980273437499989],[2.731738281250017,6.852832031249989],[2.7529296875,6.771630859374994],[2.774609375000011,6.711718749999989],[2.753710937500017,6.661767578124994],[2.735644531250017,6.595703125],[2.706445312500023,6.369238281249991],[1.62265625,6.216796875],[1.777929687500006,6.294628906249997],[1.530957031250011,6.992431640625],[1.624707031250011,6.997314453125],[1.600195312500006,9.050048828125],[1.3857421875,9.361669921874991],[1.330078125,9.996972656249994],[0.763378906250011,10.386669921874997],[0.900488281250006,10.993261718749991],[1.4267578125,11.447119140624991],[1.980371093750023,11.418408203124997],[2.38916015625,11.897070312499991],[2.366015625000017,12.221923828125],[2.805273437500006,12.383837890624989],[3.595410156250011,11.6962890625]]]},"properties":{"name":"Benin","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[0.217480468750011,14.911474609374991],[0.163867187500017,14.497216796874994],[0.382519531250011,14.245800781249997],[0.42919921875,13.972119140624997],[0.6181640625,13.703417968750003],[1.201171875,13.357519531249991],[0.988476562500011,13.36484375],[0.9873046875,13.041894531249994],[1.56494140625,12.635400390624994],[2.104589843750006,12.701269531249991],[2.226269531250011,12.466064453125],[2.072949218750011,12.309375],[2.38916015625,11.897070312499991],[1.980371093750023,11.418408203124997],[1.4267578125,11.447119140624991],[0.900488281250006,10.993261718749991],[0.49267578125,10.954980468749994],[-0.068603515625,11.115625],[-0.299462890624994,11.166894531249994],[-0.627148437499983,10.927392578124994],[-1.04248046875,11.010058593749989],[-2.829931640624977,10.998388671874991],[-2.914892578124977,10.592333984374989],[-2.791162109374994,10.432421874999989],[-2.780517578125,9.745849609375],[-2.765966796874977,9.658056640624991],[-2.706201171874994,9.533935546875],[-2.695849609374989,9.481347656249994],[-2.7171875,9.457128906249991],[-2.7666015625,9.424707031249994],[-2.816748046874977,9.425830078124989],[-2.875146484374994,9.500927734374997],[-2.90087890625,9.534619140624997],[-2.948144531249994,9.610742187499994],[-2.98828125,9.687353515624991],[-3.042626953124994,9.720898437499997],[-3.095800781249977,9.752099609374994],[-3.160693359374989,9.849169921874989],[-3.223535156249994,9.895458984374997],[-3.289697265624994,9.882226562499994],[-3.581152343749977,9.92431640625],[-3.790625,9.9171875],[-4.18115234375,9.78173828125],[-4.267187499999977,9.743261718749991],[-4.332226562499983,9.645703125],[-4.406201171874983,9.647998046874989],[-4.526611328125,9.723486328124991],[-4.625830078124977,9.713574218749997],[-4.721777343749977,9.756542968749997],[-5.262304687499977,10.319677734374991],[-5.523535156249977,10.426025390625],[-5.490478515625,11.042382812499994],[-5.250244140625,11.375781249999989],[-5.288134765624989,11.827929687499989],[-4.699316406249977,12.076171875],[-4.4287109375,12.337597656249997],[-4.480615234374994,12.672216796874991],[-4.227099609374989,12.793701171875],[-4.328710937499977,13.119042968749994],[-4.151025390624994,13.306201171875003],[-3.947314453124989,13.402197265624991],[-3.527636718749989,13.182714843749991],[-3.3017578125,13.28076171875],[-3.248632812499977,13.658349609374994],[-2.950830078124994,13.6484375],[-2.873925781249994,13.950732421875003],[-2.586718749999989,14.227587890625003],[-2.113232421874983,14.16845703125],[-1.97304687499999,14.45654296875],[-1.049560546875,14.81953125],[-0.760449218749983,15.047753906249994],[-0.235888671874989,15.059423828124991],[0.217480468750011,14.911474609374991]]]},"properties":{"name":"Burkina Faso","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[91.94921875000003,21.50805664062503],[91.85947265625012,21.532958984375057],[91.90771484374997,21.722949218750017],[91.94921875000003,21.50805664062503]]],[[[91.87382812500002,21.832128906249977],[91.8375976562501,21.750244140625],[91.85068359375012,21.927050781250045],[91.87382812500002,21.832128906249977]]],[[[91.15078125000005,22.175195312499966],[91.04472656250002,22.10517578125001],[91.0794921875,22.519726562499983],[91.15078125000005,22.175195312499966]]],[[[91.55673828125006,22.38222656250005],[91.41132812500004,22.475683593750006],[91.45605468749997,22.61650390624999],[91.55673828125006,22.38222656250005]]],[[[90.77763671875007,22.089306640624983],[90.51503906250005,22.06513671875001],[90.68046875000007,22.327490234375006],[90.50292968749997,22.835351562499994],[90.59648437500002,22.863525390625057],[90.86816406250003,22.48486328125],[90.77763671875007,22.089306640624983]]],[[[88.94072265625002,26.24536132812497],[88.97041015625004,26.250878906250023],[88.95195312500002,26.412109375],[89.01865234375012,26.410253906249977],[89.28925781250004,26.03759765625],[89.54990234375006,26.005273437499994],[89.57275390625003,26.13232421875003],[89.67089843750003,26.21381835937504],[89.8229492187501,25.94140625000003],[89.82490234375004,25.56015625],[89.80087890625012,25.33613281250001],[89.81406250000006,25.305371093749955],[89.86630859375012,25.293164062499955],[90.11962890625003,25.21997070312497],[90.61308593750002,25.16772460937497],[92.04970703125005,25.16948242187499],[92.46835937500006,24.94414062499999],[92.38496093750004,24.848779296875023],[92.25126953125007,24.895068359375045],[92.22832031250002,24.88134765625],[92.22666015625012,24.77099609374997],[92.11748046875002,24.493945312500017],[92.06416015625004,24.374365234375006],[91.84619140624997,24.17529296875003],[91.72656250000003,24.20507812499997],[91.35019531250012,24.06049804687501],[91.16044921875007,23.66064453125],[91.359375,23.06835937500003],[91.43623046875004,23.19990234375001],[91.55351562500002,22.991552734375006],[91.61953125,22.97968750000001],[91.75097656250003,23.053515625000017],[91.75419921875007,23.287304687499955],[91.79003906249997,23.361035156249983],[91.937890625,23.504687500000017],[91.92949218750007,23.598242187499977],[91.92958984375,23.68598632812501],[91.97851562500003,23.691992187499977],[92.04404296875006,23.677783203125017],[92.24609375000003,23.683593750000057],[92.33378906250002,23.242382812499955],[92.36162109375002,22.929003906250074],[92.46445312500006,22.734423828125045],[92.49140625000004,22.685400390625006],[92.5612304687501,22.04804687500001],[92.57490234375004,21.978076171875045],[92.58281250000002,21.940332031249994],[92.5934570312501,21.46733398437499],[92.63164062500002,21.306201171875045],[92.33056640624997,21.439794921874977],[92.17958984375005,21.293115234375023],[92.32412109375,20.791845703125063],[92.0560546875,21.1748046875],[91.86337890625012,22.350488281249966],[91.7970703125001,22.297460937500006],[91.48007812500006,22.884814453125045],[91.2162109375,22.642236328124994],[90.94560546875002,22.597021484375034],[90.65625,23.025488281250006],[90.60400390624997,23.59135742187499],[90.55566406249997,23.42153320312505],[90.26914062500012,23.455859375000017],[90.59091796875012,23.266406250000045],[90.43505859374997,22.751904296874955],[90.61611328125,22.362158203125034],[90.23056640625006,21.82978515625004],[90.07119140625005,21.887255859375017],[90.20957031250006,22.156591796875006],[89.95419921875006,22.022851562500023],[89.91806640625012,22.11616210937501],[89.98515625000002,22.466406250000063],[89.81191406250005,21.983496093750006],[89.56855468750004,21.767431640625034],[89.48320312500007,22.275537109374994],[89.50058593750006,21.914355468750045],[89.35371093750004,21.72109375],[89.09394531250004,21.872753906249983],[89.05,22.274609374999983],[88.92070312500002,22.632031249999955],[88.89970703125002,22.843505859375057],[88.85058593749997,23.040527343750057],[88.928125,23.186621093750063],[88.72441406250002,23.254980468750034],[88.69765625,23.493017578125034],[88.63574218749997,23.55],[88.56738281249997,23.674414062500034],[88.69980468750006,24.002539062500006],[88.71376953125,24.069628906250017],[88.72656250000003,24.186230468749955],[88.7335937500001,24.23090820312501],[88.72353515625,24.27490234375],[88.64228515625004,24.325976562500017],[88.49853515625003,24.34663085937504],[88.3375,24.45385742187503],[88.225,24.460644531249983],[88.14550781250003,24.485791015624955],[88.07910156249997,24.549902343750063],[88.02343750000003,24.62783203125005],[88.03027343749997,24.66445312500005],[88.0451171875001,24.713037109374994],[88.1498046875,24.914648437500034],[88.1888671875,24.92060546875001],[88.27949218750004,24.881933593750034],[88.31337890625005,24.8818359375],[88.37294921875,24.961523437499977],[88.45625,25.18842773437504],[88.57382812500006,25.18789062499999],[88.92978515625012,25.222998046875063],[88.94414062500002,25.290771484375],[88.85478515625002,25.333544921875017],[88.76914062500006,25.490478515625],[88.50244140624997,25.537011718749994],[88.14746093749997,25.811425781250023],[88.1066406250001,25.841113281250045],[88.15078125000005,26.08715820312497],[88.33398437499997,26.257519531249955],[88.44042968749997,26.369482421875034],[88.38623046875003,26.471533203125034],[88.35146484375005,26.482568359374966],[88.36992187500002,26.564111328124994],[88.51826171875004,26.517773437499955],[88.68281250000004,26.291699218749983],[88.94072265625002,26.24536132812497]]]]},"properties":{"name":"Bangladesh","childNum":6}},{"geometry":{"type":"Polygon","coordinates":[[[28.585351562500023,43.742236328124996],[28.465429687500006,43.389306640624994],[28.133691406250023,43.39560546875],[27.92890625000001,43.1861328125],[27.88886718750001,42.74970703125],[27.484765625000023,42.468066406249996],[28.014453125000017,41.969042968749996],[27.47480468750001,41.946875],[27.294921875,42.079541015625],[27.24433593750001,42.09326171875],[27.01171875,42.058642578124996],[26.96875,42.02685546875],[26.884863281250006,41.991845703124994],[26.615332031250006,41.964892578124996],[26.549707031250023,41.896728515625],[26.51142578125001,41.8263671875],[26.3603515625,41.8015625],[26.327246093750006,41.772802734375],[26.31796875,41.744677734374996],[26.320898437500006,41.716552734375],[26.200585937500023,41.743798828124994],[26.107421875,41.72568359375],[26.085546875,41.704150390624996],[26.066015625,41.673242187499994],[26.1435546875,41.521533203124996],[26.155175781250023,41.434863281249996],[26.135351562500006,41.3857421875],[26.06640625,41.35068359375],[25.92333984375,41.311914062499994],[25.784960937500017,41.330419921875],[25.52705078125001,41.2998046875],[25.381933593750006,41.26435546875],[25.25117187500001,41.243554687499994],[24.773730468750017,41.356103515624994],[24.595996093750017,41.442724609375],[24.5693359375,41.4673828125],[24.51826171875001,41.552539062499996],[24.487890625,41.555224609374996],[24.056054687500023,41.527246093749994],[24.03291015625001,41.469091796875],[24.011328125,41.46005859375],[23.635156250000023,41.386767578124996],[23.53583984375001,41.386035156249996],[23.433398437500017,41.398730468749996],[23.3720703125,41.3896484375],[23.23984375,41.3849609375],[23.15595703125001,41.322070312499996],[22.916015625,41.336279296875],[23.00361328125001,41.73984375],[22.836816406250023,41.993603515625],[22.344042968750017,42.31396484375],[22.42207031250001,42.328857421875],[22.445703125000023,42.359130859375],[22.523535156250006,42.440966796874996],[22.53242187500001,42.481201171875],[22.524218750000017,42.50390625],[22.43623046875001,42.6291015625],[22.466796875,42.84248046875],[22.799902343750006,42.985742187499994],[22.976855468750017,43.18798828125],[22.85957031250001,43.25234375],[22.819726562500023,43.300732421875],[22.767578125,43.354150390624994],[22.554589843750023,43.454492187499994],[22.36962890625,43.781298828124996],[22.36542968750001,43.862109375],[22.399023437500006,43.96953125],[22.420800781250023,44.007421875],[22.452529688228115,44.0510441391688],[22.547921095934313,44.113823956634434],[22.688564844478098,44.254306249271906],[23.02851562500001,44.077978515625],[22.868261718750006,43.947900390624994],[22.919042968750006,43.83447265625],[25.4970703125,43.670800781249994],[26.2158203125,44.007275390625],[27.0869140625,44.167382812499994],[27.425390625,44.0205078125],[27.88427734375,43.987353515624996],[28.221972656250017,43.772851562499994],[28.585351562500023,43.742236328124996]]]},"properties":{"name":"Bulgaria","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[50.60722656250002,25.883105468750003],[50.57490234375001,25.806787109374994],[50.465917968750006,25.965527343749997],[50.46992187500001,26.228955078124997],[50.5859375,26.24072265625],[50.60722656250002,25.883105468750003]]]},"properties":{"name":"Bahrain","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-73.02685546874994,21.19238281250003],[-73.16455078125003,20.979150390625023],[-73.68115234375003,20.9755859375],[-73.68037109374995,21.103320312500017],[-73.52309570312497,21.190820312499966],[-73.23535156249997,21.15449218750004],[-73.05849609375,21.313378906249994],[-73.02685546874994,21.19238281250003]]],[[[-73.041015625,22.429052734375006],[-72.74726562500001,22.32739257812497],[-73.16191406250002,22.380712890625006],[-73.041015625,22.429052734375006]]],[[[-74.20673828124998,22.213769531250023],[-74.27690429687499,22.183691406250006],[-73.906396484375,22.527441406250063],[-73.95419921874995,22.71552734375001],[-73.84995117187503,22.731054687500063],[-73.83652343749998,22.538427734374977],[-74.20673828124998,22.213769531250023]]],[[[-74.05751953124997,22.723486328125034],[-74.27460937499995,22.71166992187503],[-74.30703125,22.83959960937497],[-74.05751953124997,22.723486328125034]]],[[[-74.84047851562494,22.894335937500017],[-75.22333984374995,23.165332031250074],[-75.13056640624998,23.267919921875006],[-75.31596679687502,23.668359374999966],[-74.84047851562494,22.894335937500017]]],[[[-75.66455078124997,23.45014648437501],[-76.03710937500003,23.60278320312503],[-76.01044921875001,23.671386718750057],[-75.66455078124997,23.45014648437501]]],[[[-74.42944335937497,24.068066406249955],[-74.55092773437502,23.96894531250001],[-74.52690429687502,24.105078125000034],[-74.42944335937497,24.068066406249955]]],[[[-77.65771484374994,24.249462890624955],[-77.75527343750002,24.163476562500023],[-77.61538085937494,24.216357421875045],[-77.5615234375,24.136816406250006],[-77.57373046875,23.739160156249994],[-77.77128906249999,23.752539062499977],[-77.99990234374994,24.219824218750063],[-77.65771484374994,24.249462890624955]]],[[[-75.30839843749999,24.2],[-75.50322265624996,24.139062500000023],[-75.40893554687503,24.265771484374994],[-75.72666015625,24.68935546875005],[-75.30839843749999,24.2]]],[[[-77.34755859375,25.013867187499983],[-77.56191406249997,25.030029296875],[-77.27558593750001,25.055761718750006],[-77.34755859375,25.013867187499983]]],[[[-77.74384765625001,24.70742187499999],[-77.74521484375,24.463476562500034],[-78.04492187499997,24.287451171875063],[-78.14580078125002,24.493457031250017],[-78.36650390624993,24.544189453125057],[-78.435302734375,24.627587890624994],[-78.24272460937493,24.65380859375],[-78.21137695312495,25.191259765624977],[-77.97529296874998,25.084814453125063],[-77.74384765625001,24.70742187499999]]],[[[-76.64882812499994,25.487402343750006],[-76.34379882812496,25.33203124999997],[-76.12661132812497,25.14052734375005],[-76.16953125,24.6494140625],[-76.319970703125,24.81767578124999],[-76.21376953124994,24.822460937499983],[-76.160400390625,25.119335937499983],[-76.36928710937502,25.312597656250006],[-76.62070312499998,25.43164062500003],[-76.78066406249997,25.426855468750006],[-76.71083984374997,25.564892578124983],[-76.64882812499994,25.487402343750006]]],[[[-78.49287109375001,26.729052734375017],[-77.92246093749998,26.69111328125001],[-78.74365234374994,26.50068359375004],[-78.98564453124996,26.689501953125045],[-78.79804687500001,26.58242187499999],[-78.59711914062493,26.797949218750006],[-78.49287109375001,26.729052734375017]]],[[[-77.22563476562496,25.904199218750023],[-77.40317382812498,26.02470703124996],[-77.24677734374998,26.156347656250034],[-77.238623046875,26.561132812500006],[-77.510595703125,26.845996093750045],[-77.94375,26.90356445312503],[-77.53388671874995,26.903417968750006],[-77.06635742187501,26.530175781249994],[-77.03828124999998,26.333447265624983],[-77.16728515624996,26.240332031250006],[-77.22563476562496,25.904199218750023]]]]},"properties":{"name":"Bahamas","childNum":14}},{"geometry":{"type":"Polygon","coordinates":[[[19.007128906250045,44.86918945312502],[19.348632812500057,44.88090820312502],[19.118457031250074,44.359960937500006],[19.583789062500017,44.04345703125003],[19.245019531249994,43.96503906250004],[19.495117187500057,43.642871093750045],[19.19433593749997,43.533300781250006],[19.164355468750017,43.53544921874999],[19.11279296874997,43.52773437500002],[19.080078125000057,43.51772460937502],[19.0283203125,43.53251953125002],[18.97421875,43.54233398437498],[18.95068359375,43.52666015624999],[19.036718750000034,43.35732421875002],[19.026660156250017,43.292431640624955],[18.97871093750001,43.28540039062503],[18.934667968750006,43.339453125000034],[18.85107421875003,43.34633789062502],[18.749218750000068,43.283544921875006],[18.67421875000008,43.230810546875006],[18.623632812500063,43.027685546875034],[18.488476562500068,43.01215820312498],[18.44384765625003,42.96845703125004],[18.46601562500001,42.777246093749994],[18.54589843750003,42.64160156249997],[18.436328125000017,42.559716796874994],[17.667578125000063,42.897119140624994],[17.585156250000068,42.93837890625005],[17.650488281250063,43.006591796875],[17.27382812500005,43.44575195312501],[16.300097656250017,44.12451171875],[16.10341796875008,44.52099609375006],[15.736621093750045,44.76582031250001],[15.788085937500057,45.17895507812497],[16.028320312500057,45.18959960937502],[16.29335937500005,45.00883789062496],[16.53066406250008,45.21669921875002],[16.918652343749983,45.27656249999998],[17.812792968750074,45.078125],[18.66259765625,45.07744140624999],[18.83642578125,44.883251953124955],[19.007128906250045,44.86918945312502]]]},"properties":{"name":"Bosnia and Herz.","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[28.14794921875,56.142919921875],[28.284277343750006,56.055908203125],[29.375,55.938720703125],[29.353417968750023,55.784375],[29.412988281250023,55.724853515625],[29.482226562500017,55.6845703125],[29.63007812500001,55.751171875],[29.6845703125,55.7697265625],[29.744140625,55.77041015625],[29.82392578125001,55.7951171875],[29.881640625000017,55.832324218749996],[29.93701171875,55.845263671874996],[30.04267578125001,55.83642578125],[30.23359375000001,55.84521484375],[30.625585937500006,55.666259765625],[30.906835937500006,55.57001953125],[30.90058593750001,55.397412109375],[30.82099609375001,55.3302734375],[30.810546875,55.306982421875],[30.814453125,55.2787109375],[30.87744140625,55.2234375],[30.958886718750023,55.13759765625],[30.97773437500001,55.08779296875],[30.97773437500001,55.05048828125],[30.829882812500017,54.914990234375],[30.804492187500017,54.8609375],[30.791015625,54.806005859375],[30.798828125,54.783251953124996],[30.984179687500017,54.6958984375],[31.12128906250001,54.648486328124996],[31.152148437500017,54.625341796875],[31.074804687500006,54.491796875],[31.18476562500001,54.452978515625],[31.299121093750017,54.29169921875],[31.403613281250017,54.195947265625],[31.62841796875,54.111181640625],[31.7919921875,54.055908203125],[31.825976562500017,54.030712890625],[31.837792968750023,54.00078125],[31.825292968750006,53.935009765625],[31.783007812500017,53.85498046875],[31.754199218750017,53.81044921875],[31.82080078125,53.791943359375],[31.9921875,53.796875],[32.20039062500001,53.78125],[32.45097656250002,53.6533203125],[32.70429687500001,53.336328125],[32.64443359375002,53.32890625],[32.57802734375002,53.31240234375],[32.469335937500006,53.2703125],[32.14199218750002,53.091162109375],[31.849707031250006,53.106201171875],[31.668261718750017,53.200927734375],[31.417871093750023,53.196044921875],[31.38837890625001,53.184814453125],[31.364550781250017,53.138964843749996],[31.30292968750001,53.060888671875],[31.2587890625,53.01669921875],[31.29511718750001,52.989794921874996],[31.35302734375,52.933447265625],[31.442773437500023,52.86181640625],[31.53515625,52.7982421875],[31.564843750000023,52.759228515625],[31.585546875,52.532470703125],[31.57734375000001,52.312304687499996],[31.6015625,52.284814453125],[31.64990234375,52.26220703125],[31.690625,52.220654296875],[31.758593750000017,52.125830078125],[31.76337890625001,52.10107421875],[31.57373046875,52.10810546875],[31.345996093750017,52.10537109375],[31.21796875000001,52.050244140625],[30.98066406250001,52.046191406249996],[30.845703125,51.953076171875],[30.755273437500023,51.895166015625],[30.667285156250017,51.814111328125],[30.583886718750023,51.68896484375],[30.533007812500017,51.596337890624994],[30.56074218750001,51.531494140625],[30.602343750000017,51.471240234374996],[30.611718750000023,51.40634765625],[30.63251953125001,51.355419921875],[30.449511718750017,51.274316406249994],[30.160742187500006,51.477880859375],[29.346484375000017,51.382568359375],[29.10205078125,51.6275390625],[29.06074218750001,51.625439453125],[29.013085937500023,51.598925781249996],[28.97773437500001,51.57177734375],[28.927539062500017,51.562158203124994],[28.849511718750023,51.540185546874994],[28.73125,51.433398437499996],[28.690234375000017,51.438867187499994],[28.647753906250017,51.45654296875],[28.599023437500023,51.542626953124994],[28.532031250000017,51.562451171875],[27.85859375000001,51.5923828125],[27.7,51.477978515625],[27.689746093750017,51.572412109374994],[27.296289062500023,51.597412109375],[27.270117187500006,51.613574218749996],[27.141992187500023,51.75205078125],[27.074121093750023,51.76083984375],[26.95283203125001,51.75400390625],[26.7734375,51.770703125],[25.785742187500006,51.923828125],[24.361914062500006,51.867529296875],[24.280078125000017,51.774707031249996],[24.126855468750023,51.6646484375],[23.978320312500017,51.59130859375],[23.951171875,51.58505859375],[23.8642578125,51.623974609375],[23.79169921875001,51.637109375],[23.706835937500017,51.64130859375],[23.61376953125,51.525390625],[23.605273437500017,51.517919921875],[23.652441406250006,52.040380859375],[23.175097656250017,52.28662109375],[23.915429687500023,52.770263671875],[23.484667968750017,53.939794921875],[23.55908203125,53.91982421875],[23.733691406250017,53.912255859375],[24.191308593750023,53.950439453125],[24.236621093750017,53.919970703124996],[24.31796875,53.89296875],[24.620703125,53.979833984375],[24.768164062500006,53.974658203124996],[24.78925781250001,53.9982421875],[24.82568359375,54.118994140625],[24.869531250000023,54.145166015625],[25.04609375000001,54.133056640625],[25.111425781250006,54.154931640625],[25.179492187500017,54.2142578125],[25.46113281250001,54.292773437499996],[25.505664062500017,54.264941406249996],[25.52734375,54.215136718749996],[25.497363281250017,54.175244140625],[25.573046875000017,54.139892578125],[25.765234375,54.17978515625],[25.702539062500023,54.29296875],[25.61689453125001,54.310107421874996],[25.557519531250023,54.310693359375],[25.54736328125,54.331835937499996],[25.56757812500001,54.37705078125],[25.62031250000001,54.460400390625],[25.68515625,54.535791015625],[25.72480468750001,54.564257812499996],[25.73164062500001,54.590380859374996],[25.722460937500017,54.71787109375],[25.859277343750023,54.919287109375],[25.964453125,54.94716796875],[26.09296875000001,54.9623046875],[26.175195312500023,55.003271484375],[26.250781250000017,55.12451171875],[26.291796875000017,55.139599609375],[26.601171875,55.130175781249996],[26.6484375,55.20419921875],[26.775683593750017,55.273095703125],[26.760156250000023,55.293359375],[26.68125,55.306445312499996],[26.49531250000001,55.318017578125],[26.457617187500006,55.34248046875],[26.469531250000017,55.371923828125],[26.51923828125001,55.44814453125],[26.56660156250001,55.546484375],[26.5908203125,55.62265625],[26.593554687500017,55.667529296874996],[27.052539062500017,55.83056640625],[27.576757812500006,55.798779296875],[28.14794921875,56.142919921875]]]},"properties":{"name":"Belarus","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-87.8529296875,17.4228515625],[-87.92998046874996,17.283007812500017],[-87.826416015625,17.546289062499994],[-87.8529296875,17.4228515625]]],[[[-88.89404296875,15.890625],[-89.2328125,15.888671875],[-89.16147460937503,17.81484375],[-89.13354492187503,17.970800781249977],[-88.80634765624998,17.965527343749983],[-88.52299804687499,18.445898437500063],[-88.29565429687494,18.47241210937503],[-88.34926757812494,18.358837890624983],[-88.1302734375,18.350732421875023],[-88.08525390624999,18.226123046875045],[-88.27172851562494,17.60986328125],[-88.203466796875,17.5166015625],[-88.31342773437501,16.632763671874983],[-88.89404296875,15.890625]]]]},"properties":{"name":"Belize","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[-64.73027343749999,32.29345703125],[-64.86284179687499,32.273876953125],[-64.66831054687499,32.38193359375],[-64.73027343749999,32.29345703125]]]},"properties":{"name":"Bermuda","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-58.15976562499999,-20.164648437500006],[-58.18017578125,-19.81787109375],[-59.09052734375,-19.286230468750006],[-60.00737304687499,-19.29755859375001],[-61.7568359375,-19.6453125],[-62.276318359375,-20.5625],[-62.27666015624999,-21.066015625],[-62.65097656249999,-22.233691406250003],[-62.84335937499999,-21.99726562500001],[-63.92167968749999,-22.028613281250003],[-63.97612304687499,-22.072558593750003],[-64.26640624999999,-22.603320312500003],[-64.30791015624999,-22.7953125],[-64.32529296874999,-22.82763671875],[-64.373974609375,-22.761035156250003],[-64.4455078125,-22.58535156250001],[-64.477734375,-22.4853515625],[-64.5236328125,-22.37158203125],[-64.60551757812499,-22.228808593750003],[-64.992626953125,-22.109667968750003],[-65.518798828125,-22.09453125],[-65.686181640625,-22.11025390625001],[-65.77104492187499,-22.099609375],[-65.86015624999999,-22.01972656250001],[-66.05859375,-21.879492187500006],[-66.098583984375,-21.835058593750006],[-66.17465820312499,-21.8056640625],[-66.220166015625,-21.802539062500003],[-66.24760742187499,-21.83046875],[-66.28212890625,-21.94746093750001],[-66.3224609375,-22.053125],[-66.365185546875,-22.11376953125],[-66.71171874999999,-22.21630859375],[-66.99111328125,-22.509863281250006],[-67.19487304687499,-22.82167968750001],[-67.362255859375,-22.85517578125001],[-67.57993164062499,-22.891699218750006],[-67.79443359375,-22.879492187500006],[-67.87944335937499,-22.82294921875001],[-67.88173828125,-22.49335937500001],[-68.18642578125,-21.61855468750001],[-68.197021484375,-21.30029296875],[-68.558251953125,-20.901953125],[-68.484326171875,-20.62841796875],[-68.74516601562499,-20.45859375],[-68.75932617187499,-20.115527343750003],[-68.560693359375,-19.967089843750003],[-68.559375,-19.90234375],[-68.578271484375,-19.856542968750006],[-68.69619140625,-19.74072265625],[-68.69829101562499,-19.72109375],[-68.57529296874999,-19.56015625],[-68.462890625,-19.43281250000001],[-68.470166015625,-19.409960937500003],[-68.49199218749999,-19.381933593750006],[-68.85795898437499,-19.093359375],[-68.96831054687499,-18.96796875000001],[-68.97885742187499,-18.81298828125],[-69.026806640625,-18.65625],[-69.09228515625,-18.28242187500001],[-69.145458984375,-18.14404296875],[-69.0939453125,-18.05048828125001],[-69.28232421874999,-17.96484375],[-69.31337890625,-17.943164062500003],[-69.5109375,-17.50605468750001],[-69.51108398437499,-17.5048828125],[-69.510986328125,-17.46035156250001],[-69.521923828125,-17.388964843750003],[-69.645703125,-17.24853515625],[-69.62485351562499,-17.2001953125],[-69.020703125,-16.6421875],[-69.03291015625,-16.47597656250001],[-68.8427734375,-16.337890625],[-69.21757812499999,-16.14912109375001],[-69.4208984375,-15.640625],[-69.17246093749999,-15.236621093750003],[-69.37470703125,-14.962988281250006],[-69.35947265624999,-14.7953125],[-68.87089843749999,-14.169726562500003],[-69.07412109375,-13.682812500000011],[-68.97861328124999,-12.880078125000011],[-68.68525390625,-12.501953125],[-69.57861328125,-10.951757812500006],[-69.228515625,-10.955664062500006],[-68.84833984375,-11.011132812500009],[-68.678369140625,-11.11279296875],[-68.39799804687499,-11.01875],[-68.0716796875,-10.703125],[-67.99169921875,-10.674414062500006],[-67.83500976562499,-10.662792968750011],[-67.72177734374999,-10.68310546875],[-67.416943359375,-10.389843750000011],[-66.575341796875,-9.89990234375],[-65.396142578125,-9.71240234375],[-65.298583984375,-10.146777343750003],[-65.31308593749999,-10.253027343750006],[-65.395458984375,-10.392285156250011],[-65.4369140625,-10.449023437500003],[-65.44711914062499,-10.507421875],[-65.33403320312499,-10.892773437500011],[-65.32377929687499,-11.024804687500009],[-65.389892578125,-11.246289062500011],[-65.1857421875,-11.74951171875],[-64.783447265625,-12.059375],[-64.42050781249999,-12.439746093750003],[-63.68857421874999,-12.47802734375],[-63.3466796875,-12.680078125],[-63.06748046874999,-12.669140625000011],[-62.76547851562499,-12.997265625000011],[-62.11801757812499,-13.159765625],[-62.09477539062499,-13.241992187500003],[-61.944726562499994,-13.40625],[-61.87412109374999,-13.470410156250011],[-61.789941406249994,-13.525585937500011],[-61.57568359375,-13.524804687500009],[-61.51157226562499,-13.541210937500011],[-61.41606445312499,-13.526562500000011],[-61.129150390625,-13.49853515625],[-61.07700195312499,-13.48974609375],[-60.506591796875,-13.78984375],[-60.372705078124994,-14.41875],[-60.273339843749994,-15.088769531250009],[-60.402001953124994,-15.0927734375],[-60.583203125,-15.098339843750011],[-60.53046875,-15.143164062500006],[-60.38046875,-15.318261718750009],[-60.242333984374994,-15.479589843750006],[-60.20664062499999,-15.901953125],[-60.18720703125,-16.132128906250003],[-60.17558593749999,-16.269335937500003],[-58.53793945312499,-16.328222656250006],[-58.49658203125,-16.32666015625],[-58.42368164062499,-16.307910156250003],[-58.37539062499999,-16.28359375],[-58.345605468749994,-16.284375],[-58.35039062499999,-16.490820312500006],[-58.470605468749994,-16.650195312500003],[-58.478125,-16.70068359375],[-58.45981445312499,-16.910742187500006],[-58.417382812499994,-17.08056640625],[-58.39599609375,-17.23427734375001],[-58.34775390624999,-17.28212890625001],[-57.99091796875,-17.51289062500001],[-57.905029296875,-17.532324218750006],[-57.832470703125,-17.512109375],[-57.78886718749999,-17.573046875],[-57.780175781249994,-17.67177734375001],[-57.66166992187499,-17.947363281250006],[-57.58647460937499,-18.12226562500001],[-57.49565429687499,-18.214648437500003],[-57.57402343749999,-18.279296875],[-57.725,-18.733203125],[-57.783105468749994,-18.91425781250001],[-57.716796875,-19.044042968750006],[-58.131494140624994,-19.74453125],[-57.860742187499994,-19.979589843750006],[-57.887597656249994,-20.02041015625001],[-57.96015625,-20.04072265625001],[-58.021142578124994,-20.05517578125],[-58.09375,-20.15107421875001],[-58.15976562499999,-20.164648437500006]]]},"properties":{"name":"Bolivia","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-48.48588867187493,-27.76699218749998],[-48.554589843749994,-27.81220703125004],[-48.542187499999955,-27.57480468749999],[-48.41489257812495,-27.399609375],[-48.48588867187493,-27.76699218749998]]],[[[-48.584423828124955,-26.401562499999983],[-48.665771484375,-26.289648437500006],[-48.53974609374998,-26.170312500000023],[-48.584423828124955,-26.401562499999983]]],[[[-45.26025390624997,-23.889160156249986],[-45.451416015625,-23.895605468749977],[-45.30234375,-23.727539062500014],[-45.26025390624997,-23.889160156249986]]],[[[-44.12929687499994,-23.14189453124999],[-44.36015624999999,-23.17207031250001],[-44.24287109374998,-23.074121093750037],[-44.12929687499994,-23.14189453124999]]],[[[-38.90356445312497,-13.473437499999974],[-38.97758789062496,-13.523535156249963],[-39.02216796874998,-13.445605468749989],[-38.907128906249994,-13.401074218749983],[-38.90356445312497,-13.473437499999974]]],[[[-38.743847656249955,-13.097070312500037],[-38.668115234374966,-12.880175781249989],[-38.601171875,-12.99257812499998],[-38.743847656249955,-13.097070312500037]]],[[[-44.49931640625002,-2.939648437499983],[-44.597753906250006,-3.037597656249943],[-44.4814453125,-2.717578125000031],[-44.49931640625002,-2.939648437499983]]],[[[-44.88310546874996,-1.317871093749986],[-45.020849609375034,-1.372363281249974],[-44.978662109374966,-1.267285156249983],[-44.88310546874996,-1.317871093749986]]],[[[-51.83251953124997,-1.433789062499969],[-51.938378906249966,-1.452636718749986],[-51.680029296875006,-1.086132812500026],[-51.546044921874966,-0.649609375],[-51.25400390624998,-0.54140625],[-51.16074218749998,-0.666699218750011],[-51.27631835937498,-1.02177734374996],[-51.83251953124997,-1.433789062499969]]],[[[-49.62866210937497,-0.229199218749969],[-49.11699218749999,-0.163574218750014],[-48.39267578124995,-0.29736328125],[-48.83359375,-1.390039062500023],[-49.038476562499994,-1.5140625],[-49.17270507812498,-1.41259765625],[-49.233984375000034,-1.59951171874998],[-49.50664062499999,-1.511621093750023],[-49.587890625,-1.712402343749972],[-49.805126953124955,-1.790234375000026],[-50.06572265625002,-1.703808593749997],[-50.50761718749999,-1.787988281250009],[-50.759765625,-1.240234374999972],[-50.72949218749997,-1.126757812499946],[-50.57695312499999,-1.103125],[-50.709619140624994,-1.07773437499999],[-50.796093749999955,-0.90625],[-50.6455078125,-0.27285156249998],[-50.24824218749998,-0.11640625],[-49.62866210937497,-0.229199218749969]]],[[[-50.65288085937499,-0.131640624999989],[-50.926367187500034,-0.327343749999983],[-51.03808593749994,-0.225878906250003],[-50.84218750000002,-0.050195312500009],[-50.65288085937499,-0.131640624999989]]],[[[-49.44389648437499,-0.112402343749977],[-49.83007812499997,-0.093896484375023],[-49.50346679687496,0.083691406250011],[-49.37231445312497,0.001074218749963],[-49.44389648437499,-0.112402343749977]]],[[[-49.73823242187498,0.26816406250002],[-49.917089843750006,-0.023193359375014],[-50.339453125,0.043359375000051],[-50.27265624999998,0.231738281249974],[-49.73823242187498,0.26816406250002]]],[[[-50.42612304687498,0.139257812500048],[-50.44394531249998,-0.007666015624949],[-50.623925781249966,0.054394531249983],[-50.372753906249955,0.590869140625031],[-50.33227539062497,0.259033203125028],[-50.42612304687498,0.139257812500048]]],[[[-50.152929687500006,0.393017578125054],[-50.26132812499998,0.359179687500003],[-50.281689453124955,0.51650390624998],[-50.05883789062503,0.638037109374963],[-50.152929687500006,0.393017578125054]]],[[[-50.29897460937502,1.93852539062496],[-50.45610351562496,1.910498046875034],[-50.49101562499996,2.128613281249969],[-50.34199218749998,2.14174804687498],[-50.29897460937502,1.93852539062496]]],[[[-59.69970703125,4.353515625],[-59.73857421874993,4.226757812500026],[-59.62021484374998,4.023144531250026],[-59.557763671874966,3.960009765625031],[-59.551123046875034,3.933544921874969],[-59.854394531249994,3.5875],[-59.99433593749998,2.689990234375031],[-59.88964843749997,2.362939453125009],[-59.75522460937495,2.27412109375004],[-59.74350585937498,2.12163085937496],[-59.75175781249996,1.962402343750028],[-59.75620117187498,1.900634765624972],[-59.666601562500006,1.746289062499969],[-59.53569335937499,1.7],[-59.23120117187494,1.376025390625031],[-58.82177734374994,1.201220703125031],[-58.787207031250006,1.208496093750014],[-58.73032226562498,1.247509765625054],[-58.68461914062499,1.28105468749996],[-58.511865234374966,1.284667968749986],[-58.506054687499926,1.438671875000011],[-58.39580078124993,1.481738281249989],[-58.38037109375,1.530224609375011],[-58.34067382812498,1.587548828125051],[-58.03466796875,1.520263671875014],[-57.9828125,1.648437500000014],[-57.87343750000002,1.667285156250045],[-57.79565429687497,1.7],[-57.59443359375001,1.704101562499986],[-57.54575195312495,1.726074218750028],[-57.31748046874998,1.963476562499991],[-57.27558593749998,1.959228515625014],[-57.189599609374966,1.981591796875037],[-57.11889648437494,2.013964843749974],[-57.09267578125002,2.005810546874997],[-57.03759765625,1.936474609374997],[-56.96953124999999,1.91640625],[-56.48281249999994,1.942138671874986],[-56.019921874999966,1.842236328124983],[-55.96333007812498,1.85708007812498],[-55.929638671874955,1.8875],[-55.92163085937503,1.976660156250006],[-55.91533203124999,2.039550781250028],[-55.96196289062496,2.09511718749998],[-56.02006835937499,2.15815429687504],[-56.073632812499994,2.236767578124969],[-56.13769531249997,2.259033203124986],[-56.12939453124997,2.299511718749969],[-56.08779296875002,2.341308593750043],[-56.045117187499955,2.364404296875037],[-56.02036132812498,2.392773437500054],[-55.993505859375006,2.497509765624983],[-55.9755859375,2.515966796875006],[-55.957470703124955,2.52045898437504],[-55.730566406250006,2.406152343750023],[-55.385351562500006,2.440625],[-55.34399414062503,2.488769531249972],[-55.28603515625002,2.49965820312498],[-55.18769531249998,2.547509765625037],[-55.114111328125006,2.539208984375037],[-55.07031249999994,2.548339843750028],[-55.005810546874955,2.592968749999983],[-54.97866210937502,2.597656250000043],[-54.968408203124966,2.548339843750028],[-54.92656249999999,2.497363281250045],[-54.876074218750006,2.450390624999969],[-54.72221679687499,2.441650390624972],[-54.69741210937502,2.359814453124997],[-54.66186523437497,2.327539062499994],[-54.61625976562499,2.326757812500006],[-54.59194335937502,2.313769531250031],[-54.55048828125001,2.293066406249991],[-54.51508789062498,2.245458984374963],[-54.43310546875,2.207519531250057],[-54.13007812499998,2.121044921875026],[-53.76777343749998,2.354833984375048],[-52.90346679687502,2.211523437499977],[-52.58300781250003,2.528906249999977],[-52.327880859375,3.18173828125002],[-51.65253906249998,4.061279296874972],[-51.54707031250001,4.31088867187502],[-51.219921874999955,4.093603515624991],[-50.71440429687502,2.134033203125],[-50.458886718749994,1.829589843749972],[-49.957128906250006,1.65986328125004],[-49.898876953124955,1.16298828124998],[-50.29443359374997,0.835742187500003],[-50.755078124999955,0.222558593749966],[-51.28291015625001,-0.085205078125028],[-51.98081054687498,-1.367968749999974],[-52.22924804687497,-1.3625],[-52.664160156250034,-1.551757812500028],[-51.94755859374996,-1.586718749999946],[-50.89492187500002,-0.937597656249963],[-50.690039062500006,-1.761718749999986],[-50.40322265625002,-2.015527343750009],[-49.999218749999955,-1.831835937499974],[-49.71953125000002,-1.926367187499963],[-49.31367187500001,-1.731738281250003],[-49.63652343749996,-2.656933593750026],[-49.45751953125,-2.504589843749983],[-49.21103515624998,-1.916503906249986],[-48.99130859374998,-1.829785156249997],[-48.71000976562496,-1.487695312500023],[-48.46293945312499,-1.613964843749997],[-48.349804687499926,-1.482128906249955],[-48.46806640624996,-1.393847656250003],[-48.44980468749998,-1.145507812499943],[-48.11508789062498,-0.7375],[-47.557324218749955,-0.669921874999957],[-47.418652343749955,-0.765917968749974],[-47.39809570312502,-0.626660156250026],[-45.45859374999995,-1.35625],[-45.32915039062496,-1.71728515625],[-45.07636718749998,-1.466406249999949],[-44.72114257812498,-1.733496093750006],[-44.778515624999955,-1.798828125],[-44.651269531249966,-1.745800781250026],[-44.537792968749955,-2.052734374999943],[-44.75634765624997,-2.265527343749952],[-44.66240234375002,-2.373242187499955],[-44.435449218749966,-2.168066406249991],[-44.38183593749997,-2.365527343749989],[-44.52011718749998,-2.40546875000004],[-44.589013671874994,-2.573437499999983],[-44.72304687500002,-3.204785156249997],[-44.43754882812496,-2.944433593749977],[-44.228613281250006,-2.471289062499949],[-44.105566406250006,-2.493457031250031],[-44.19267578124999,-2.809570312499943],[-43.93291015624999,-2.583496093749986],[-43.45512695312499,-2.502050781250006],[-43.38007812499998,-2.376074218750006],[-42.93671874999998,-2.465039062500011],[-42.24960937499998,-2.7919921875],[-41.876171874999926,-2.746582031249986],[-41.479931640624955,-2.916503906249972],[-40.474560546874926,-2.795605468750026],[-39.96469726562498,-2.861523437499955],[-38.475781249999955,-3.717480468749997],[-38.04882812500003,-4.216406250000034],[-37.626318359375006,-4.592089843750003],[-37.30146484375001,-4.713085937499969],[-37.174658203125006,-4.912402343749974],[-36.590722656249966,-5.097558593749952],[-35.549414062500006,-5.129394531249957],[-35.39257812499994,-5.250878906250009],[-34.833886718749994,-7.024414062500014],[-34.83466796874998,-7.97148437499996],[-35.34086914062499,-9.230664062499983],[-35.76396484374993,-9.702539062500023],[-35.890820312499926,-9.687011718749957],[-35.88544921875001,-9.84765625],[-36.39833984374994,-10.484082031249983],[-36.768310546875,-10.671679687500017],[-37.18281249999998,-11.06845703125002],[-37.35600585937502,-11.403906249999977],[-37.35922851562495,-11.252539062499963],[-37.68872070312503,-12.1],[-38.019238281249955,-12.591308593750028],[-38.401757812499994,-12.966210937500023],[-38.69096679687502,-12.623925781250009],[-38.85175781250001,-12.790136718750034],[-38.76372070312502,-12.9072265625],[-38.835302734375034,-13.147167968750026],[-39.030908203124994,-13.365136718750023],[-39.08935546875,-13.588183593749989],[-38.988623046875006,-13.61503906249996],[-39.04814453124996,-14.043945312500028],[-38.94233398437498,-14.030664062499994],[-39.05957031249997,-14.654785156249957],[-38.88061523437503,-15.864257812499972],[-39.20288085937503,-17.178125],[-39.154003906249926,-17.70390625000003],[-39.650781249999966,-18.252343750000037],[-39.78330078124998,-19.571777343749986],[-40.001367187499994,-19.74199218750003],[-40.39594726562501,-20.56943359375002],[-40.78925781250001,-20.90605468750003],[-40.954541015624926,-21.237890624999963],[-41.04726562499999,-21.505664062499974],[-41.00029296875002,-21.99902343750003],[-41.70551757812498,-22.30966796874999],[-41.980419921874955,-22.580664062499963],[-42.042382812499966,-22.947070312500003],[-42.95830078124996,-22.96708984374999],[-43.154296875,-22.725195312500006],[-43.22416992187502,-22.991210937500014],[-43.898828124999966,-23.10146484375001],[-43.97382812499998,-23.057324218749983],[-43.675976562499955,-23.00947265625001],[-43.86616210937498,-22.910546875000023],[-44.63725585937496,-23.05546875],[-44.67382812499994,-23.206640625000034],[-44.56967773437495,-23.27402343749999],[-45.32539062499998,-23.59970703124999],[-45.464306640624955,-23.802539062500017],[-45.97207031250002,-23.795507812500006],[-46.86728515624998,-24.236328125000014],[-47.989160156249994,-25.03574218749999],[-47.92939453124998,-25.16826171874999],[-48.20273437499998,-25.41650390625003],[-48.18593749999994,-25.309863281249974],[-48.402490234374994,-25.27207031249999],[-48.47612304687499,-25.44296875],[-48.73173828124993,-25.36875],[-48.6921875,-25.49150390625003],[-48.40117187500002,-25.59736328125001],[-48.665771484375,-25.844335937499963],[-48.576318359374994,-25.935449218749966],[-48.61943359374996,-26.17939453125001],[-48.74829101562503,-26.26865234374999],[-48.55415039062498,-27.195996093749997],[-48.62080078124998,-28.075585937499966],[-48.799658203125006,-28.575292968749977],[-49.27128906249999,-28.87119140625005],[-49.745996093749966,-29.363183593749994],[-50.299511718749955,-30.42578125000003],[-50.92138671874997,-31.25839843750002],[-52.039208984374994,-32.11484374999996],[-52.063232421875,-31.830371093750017],[-51.68066406249994,-31.774609375000026],[-51.272167968749955,-31.476953125000037],[-51.16142578124996,-31.11884765625001],[-50.980078125000034,-31.09423828124997],[-50.94082031249994,-30.903710937499966],[-50.68930664062495,-30.70419921874999],[-50.71630859374994,-30.425976562499983],[-50.58193359375002,-30.438867187500037],[-50.56352539062499,-30.25361328125004],[-51.02495117187493,-30.36865234375003],[-51.29804687499998,-30.03486328124997],[-51.15727539062499,-30.364257812500014],[-51.283056640625034,-30.751562499999963],[-51.35908203124998,-30.674511718749983],[-51.506298828124955,-31.104492187500014],[-51.97246093749999,-31.383789062499986],[-52.19355468749998,-31.885546874999974],[-52.12739257812501,-32.1677734375],[-52.652246093749994,-33.137792968750006],[-53.37060546874997,-33.74218750000003],[-53.39755859374995,-33.737304687500014],[-53.46357421875001,-33.70986328125002],[-53.531347656250034,-33.65546875000004],[-53.531347656250034,-33.1708984375],[-53.511865234374966,-33.10869140625003],[-53.482861328124926,-33.068554687500026],[-53.39521484375001,-33.01035156249998],[-53.31010742187499,-32.927050781249974],[-53.21406249999998,-32.82109375],[-53.12558593749998,-32.73671875],[-53.15727539062496,-32.680078125],[-53.601708984374994,-32.40302734374997],[-53.76171875,-32.05683593749997],[-53.920605468749926,-31.95234375],[-54.220556640625034,-31.855175781249997],[-54.58764648437503,-31.48515625000003],[-55.036035156249994,-31.27900390625004],[-55.091162109375034,-31.31396484374997],[-55.173535156249926,-31.279589843749974],[-55.557324218749955,-30.8759765625],[-55.60302734375003,-30.85078125000001],[-55.62714843749998,-30.858105468749997],[-55.650488281250034,-30.89208984375],[-55.66523437500001,-30.92490234375002],[-55.807763671874994,-31.036718749999977],[-55.87368164062502,-31.069628906250017],[-55.95200195312498,-31.08085937499999],[-56.0046875,-31.079199218750006],[-56.01845703125002,-30.991894531249983],[-55.998974609374955,-30.837207031250003],[-56.4072265625,-30.44746093750001],[-56.83271484374998,-30.107226562499974],[-57.120507812499994,-30.144433593749994],[-57.21445312499995,-30.283398437499983],[-57.55229492187496,-30.261230468749986],[-57.60888671875003,-30.187792968750045],[-57.563867187499994,-30.139941406249974],[-57.40522460937501,-30.03388671875004],[-57.22465820312499,-29.782128906249994],[-56.938623046874994,-29.594824218750034],[-55.890527343749994,-28.370019531249994],[-55.68725585937497,-28.38164062499996],[-55.72548828125002,-28.20410156250003],[-55.10151367187501,-27.866796874999963],[-54.82910156250003,-27.55058593750003],[-54.32700195312495,-27.423535156249997],[-53.83818359375002,-27.121093750000014],[-53.668554687500006,-26.288183593749977],[-53.89116210937499,-25.66884765625001],[-54.15458984374999,-25.523046874999963],[-54.44394531249998,-25.625],[-54.615869140624994,-25.576074218750023],[-54.61054687499998,-25.432714843750034],[-54.47314453124997,-25.22021484375],[-54.43623046875001,-25.12128906250001],[-54.281005859375,-24.30605468750001],[-54.31826171874994,-24.128125],[-54.26689453124996,-24.06582031250001],[-54.241796875,-24.047265624999966],[-54.44023437500002,-23.90175781249998],[-54.62548828125,-23.8125],[-54.98266601562494,-23.974511718749966],[-55.081884765625006,-23.997656249999977],[-55.1943359375,-24.017480468750023],[-55.28691406249993,-24.00429687499999],[-55.366308593750034,-23.99101562499996],[-55.41591796875002,-23.95136718749997],[-55.4423828125,-23.86533203125002],[-55.4423828125,-23.792578125000034],[-55.458886718749966,-23.686718750000054],[-55.51845703124994,-23.627246093750017],[-55.53828124999998,-23.580957031249994],[-55.61767578125,-22.67148437499999],[-55.74663085937499,-22.51269531249997],[-55.753271484375006,-22.410156250000043],[-55.84916992187499,-22.307617187500014],[-55.991406249999926,-22.28115234375005],[-56.18984374999994,-22.28115234375005],[-56.246044921874926,-22.26464843749997],[-56.39487304687498,-22.092675781250023],[-56.44780273437502,-22.07617187500003],[-56.77519531249999,-22.261328125],[-57.955908203125034,-22.109179687500003],[-57.94267578124999,-21.79833984375],[-57.830224609374994,-20.99794921875001],[-57.91513671874998,-20.690332031249966],[-57.97905273437493,-20.65732421874999],[-58.00224609374996,-20.465429687499977],[-58.02539062499997,-20.41582031249999],[-58.05844726562495,-20.38613281249998],[-58.091503906249926,-20.33320312500004],[-58.124609375000034,-20.293457031250014],[-58.13779296874995,-20.237304687500043],[-58.15976562499998,-20.164648437499977],[-58.09375,-20.15107421874997],[-58.021142578124994,-20.05517578124997],[-57.96015625000001,-20.04072265625004],[-57.887597656249966,-20.020410156249994],[-57.860742187499994,-19.97958984375002],[-58.029931640624994,-19.83271484375004],[-58.131494140624994,-19.74453125],[-57.71679687499997,-19.044042968750034],[-57.73085937499999,-18.91718750000004],[-57.783105468749994,-18.91425781249997],[-57.725,-18.73320312500003],[-57.57402343749993,-18.279296875000014],[-57.49565429687496,-18.21464843749999],[-57.58647460937499,-18.122265625],[-57.66166992187493,-17.94736328124999],[-57.78017578125002,-17.67177734374998],[-57.78886718750002,-17.573046875000017],[-57.83247070312501,-17.512109375000037],[-57.90502929687497,-17.53232421874999],[-57.990917968749955,-17.512890625000026],[-58.20556640625,-17.363085937499974],[-58.347753906250006,-17.282128906249994],[-58.39599609374997,-17.234277343750023],[-58.417382812499994,-17.08056640624997],[-58.459814453125006,-16.910742187500006],[-58.478125,-16.70068359375003],[-58.470605468749994,-16.650195312500045],[-58.35039062500002,-16.49082031249999],[-58.34560546875002,-16.284375],[-58.375390624999966,-16.283593749999966],[-58.423681640625034,-16.30791015625003],[-58.49658203124994,-16.32666015625003],[-58.537939453125034,-16.32822265624999],[-60.17558593749996,-16.26933593749999],[-60.187207031249955,-16.132128906250017],[-60.206640625,-15.90195312500002],[-60.242333984374994,-15.479589843750034],[-60.38046874999998,-15.318261718750023],[-60.53046874999998,-15.143164062499977],[-60.58320312499998,-15.098339843749983],[-60.273339843749994,-15.088769531249994],[-60.372705078124994,-14.41875],[-60.506591796875,-13.78984375],[-61.077001953125034,-13.489746093750014],[-61.129150390625,-13.498535156250028],[-61.41606445312502,-13.526562499999969],[-61.511572265625006,-13.541210937500011],[-61.789941406249966,-13.525585937500026],[-61.87412109374998,-13.470410156249983],[-61.944726562499966,-13.40625],[-62.09477539062499,-13.241992187499989],[-62.118017578125006,-13.15976562500002],[-62.765478515625034,-12.99726562500004],[-63.01518554687502,-12.80556640624998],[-63.067480468750006,-12.669140624999983],[-63.34667968749994,-12.68007812499999],[-63.68857421874998,-12.478027343749957],[-64.42050781249995,-12.439746093749974],[-64.783447265625,-12.059375],[-65.18574218749998,-11.749511718749957],[-65.389892578125,-11.246289062500011],[-65.33403320312499,-10.892773437500026],[-65.44711914062503,-10.507421875000034],[-65.4369140625,-10.449023437499946],[-65.39545898437498,-10.392285156250026],[-65.31308593749998,-10.253027343749991],[-65.29858398437497,-10.146777343750017],[-65.39614257812494,-9.712402343749986],[-66.57534179687502,-9.899902343749986],[-67.41694335937495,-10.389843749999969],[-67.72177734374998,-10.683105468749943],[-67.83500976562496,-10.662792968749983],[-67.99169921875,-10.674414062499949],[-68.07167968749994,-10.703125],[-68.39799804687499,-11.01875],[-68.678369140625,-11.11279296875],[-68.84833984374998,-11.01113281249998],[-69.228515625,-10.955664062499963],[-69.46254882812497,-10.948144531250023],[-69.57861328125,-10.951757812499963],[-69.67402343749998,-10.9541015625],[-69.83979492187501,-10.93339843749996],[-69.96035156249997,-10.92988281250004],[-70.06630859374997,-10.982421875],[-70.22006835937503,-11.04765625],[-70.29038085937498,-11.064257812499974],[-70.34199218750001,-11.066699218750017],[-70.39228515624995,-11.058593749999972],[-70.45087890624998,-11.024804687500009],[-70.53325195312496,-10.946875],[-70.59653320312498,-10.976855468750017],[-70.642333984375,-11.010253906249986],[-70.59916992187499,-9.620507812500009],[-70.54111328124998,-9.4375],[-70.60791015625,-9.463671875000031],[-70.63691406249995,-9.478222656249969],[-71.041748046875,-9.81875],[-71.11528320312499,-9.852441406250009],[-71.33940429687499,-9.988574218750031],[-72.18159179687495,-10.003710937500003],[-72.37905273437497,-9.51015625],[-73.20942382812493,-9.411425781249946],[-73.08984375,-9.26572265625002],[-72.970361328125,-9.120117187500028],[-72.97402343750002,-8.9931640625],[-73.07050781249995,-8.8828125],[-73.203125,-8.719335937499991],[-73.30244140624995,-8.654003906250011],[-73.36040039062496,-8.479296875000031],[-73.39814453125001,-8.458984374999986],[-73.54912109374993,-8.34580078125002],[-73.73203125,-7.875390625],[-73.72041015624993,-7.782519531250017],[-73.76689453124999,-7.753515624999963],[-73.82207031249996,-7.738964843750026],[-73.89462890624998,-7.654785156250014],[-73.946875,-7.611230468750023],[-73.98173828124996,-7.58505859375002],[-74.00205078125003,-7.556054687499966],[-73.98173828124996,-7.535742187500006],[-73.95849609374994,-7.506640625000031],[-73.96430664062498,-7.378906250000028],[-73.74946289062498,-7.335351562500037],[-73.72041015624993,-7.309277343749969],[-73.758203125,-7.172753906249952],[-73.79301757812499,-7.135058593750003],[-73.75810546874999,-6.90576171875],[-73.137353515625,-6.4658203125],[-73.23554687500001,-6.098437500000017],[-73.209375,-6.028710937500023],[-73.16289062499996,-5.933398437499974],[-72.97988281249997,-5.634863281249991],[-72.88706054687498,-5.122753906250026],[-72.83193359374994,-5.09375],[-72.69873046874997,-5.067187499999989],[-72.60834960937495,-5.009570312499974],[-72.46899414062497,-4.901269531250023],[-72.35283203124993,-4.786035156249994],[-72.25678710937501,-4.74892578124998],[-71.8447265625,-4.504394531249986],[-70.97368164062499,-4.350488281249994],[-70.86601562499999,-4.229589843749963],[-70.79951171874995,-4.173339843749957],[-70.72158203124997,-4.15888671875004],[-70.53066406249997,-4.167578125000034],[-70.40463867187498,-4.150097656250026],[-70.34365234375,-4.193652343750017],[-70.31689453124994,-4.246972656250037],[-70.23916015625002,-4.30117187499998],[-70.12880859375,-4.286621093749943],[-70.05332031249998,-4.333105468750006],[-70.00395507812496,-4.327246093749963],[-69.97202148437503,-4.30117187499998],[-69.96591796875003,-4.2359375],[-69.94819335937498,-4.200585937500009],[-69.66904296875003,-2.667675781249997],[-69.40024414062498,-1.194921874999977],[-69.63398437500001,-0.50927734375],[-70.07050781249993,-0.13886718750004],[-70.05390624999993,0.578613281250028],[-69.47211914062498,0.72993164062504],[-69.15332031249994,0.65878906250002],[-69.31181640624999,1.050488281249969],[-69.85214843750003,1.05952148437504],[-69.84858398437493,1.708740234375043],[-68.17656249999999,1.719824218749991],[-68.25595703125,1.845507812500017],[-68.19379882812495,1.987011718749983],[-67.93623046874998,1.748486328124969],[-67.40043945312499,2.116699218750028],[-67.11923828124998,1.703613281249986],[-67.082275390625,1.185400390625006],[-66.87602539062499,1.223046875000037],[-66.34711914062498,0.7671875],[-66.06005859375003,0.78535156250004],[-65.68144531249999,0.983447265624989],[-65.52299804687493,0.843408203124966],[-65.55605468750002,0.687988281250014],[-65.47338867187497,0.691259765624977],[-65.10375976562497,1.108105468749983],[-64.20502929687493,1.52949218750004],[-64.00849609374995,1.931591796874969],[-63.43251953124994,2.155566406250045],[-63.389257812500006,2.411914062500045],[-64.04658203124998,2.502392578124997],[-64.22109375000002,3.587402343749972],[-64.66899414062496,4.01181640625002],[-64.788671875,4.276025390625023],[-64.57636718750001,4.139892578125],[-64.19248046874995,4.126855468750009],[-64.02148437500003,3.929101562500051],[-63.33867187500002,3.943896484375045],[-62.85698242187502,3.593457031249969],[-62.71210937499998,4.01791992187502],[-62.41064453124994,4.156738281249972],[-62.153125,4.098388671874986],[-61.82084960937496,4.197021484375],[-61.28007812500002,4.516894531249974],[-61.00283203125002,4.535253906249991],[-60.603857421875006,4.94936523437498],[-60.671972656250034,5.164355468749989],[-60.71196289062499,5.191552734375023],[-60.742138671874926,5.202050781250037],[-60.6513671875,5.221142578125011],[-60.45952148437499,5.188085937500034],[-60.40878906249998,5.21015625],[-60.33520507812497,5.199316406250006],[-60.241650390624926,5.257958984374966],[-60.14204101562498,5.238818359374974],[-59.990673828124955,5.082861328124991],[-60.14863281249998,4.533251953125031],[-59.69970703125,4.353515625]]]]},"properties":{"name":"Brazil","childNum":17}},{"geometry":{"type":"Polygon","coordinates":[[[-59.493310546874994,13.081982421874997],[-59.611328125,13.102099609374989],[-59.6466796875,13.303125],[-59.427636718749994,13.152783203124997],[-59.493310546874994,13.081982421874997]]]},"properties":{"name":"Barbados","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[115.02675781250005,4.899707031249989],[115.1400390625,4.899755859374991],[115.290625,4.352587890624989],[115.10703125000006,4.390429687499974],[115.02675781250005,4.899707031249989]]],[[[115.02675781250005,4.899707031249989],[114.74667968750006,4.718066406250017],[114.84023437500005,4.393212890625009],[114.65410156250007,4.037646484375045],[114.0638671875,4.592675781249966],[114.42441406250006,4.660400390625],[114.99541015625002,5.022363281250023],[115.02675781250005,4.899707031249989]]]]},"properties":{"name":"Brunei","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[91.63193359375003,27.759960937499997],[91.5947265625,27.557666015624996],[91.74306640625002,27.442529296874994],[91.85126953125001,27.438623046874994],[91.95097656249999,27.458300781249996],[91.99082031250003,27.4501953125],[92.044921875,27.364697265624997],[92.08339843750002,27.290625],[92.03115234375002,27.214306640624997],[92.00253906250003,27.147363281249994],[91.99228515625003,27.099902343749996],[91.99863281250003,27.079296875],[92.03085937500003,27.040820312499996],[92.06816406249999,26.9751953125],[92.07343750000001,26.91484375],[92.04970703125002,26.874853515625],[91.99833984374999,26.85498046875],[91.84208984374999,26.852978515624997],[91.67158203125001,26.802001953125],[91.517578125,26.807324218749997],[91.45585937499999,26.866894531249997],[91.4267578125,26.867089843749994],[91.28652343750002,26.789941406249994],[90.73964843750002,26.771679687499997],[90.34589843750001,26.890332031249997],[90.2060546875,26.847509765625],[90.12294921875002,26.754589843749997],[89.94316406249999,26.723925781249996],[89.76386718750001,26.7015625],[89.60996093750003,26.719433593749997],[89.58613281250001,26.778955078124994],[89.33212890625003,26.8486328125],[89.14824218749999,26.816162109375],[89.04091796875002,26.865039062499996],[88.85761718750001,26.961474609374996],[88.73876953125,27.175585937499996],[88.76035156250003,27.218115234375],[88.88164062499999,27.2974609375],[88.89140624999999,27.316064453124994],[88.94755859374999,27.464013671874994],[89.48066406250001,28.059960937499994],[89.53691406249999,28.107421875],[89.65273437500002,28.15830078125],[89.74980468749999,28.188183593749997],[89.81689453125,28.256298828124997],[89.89785156250002,28.294140625],[89.98105468750003,28.311181640624994],[90.34824218750003,28.243945312499996],[90.36298828125001,28.216503906249997],[90.33310546875003,28.093994140625],[90.35273437500001,28.080224609374994],[90.47734374999999,28.070849609374996],[90.63007812500001,28.078564453124997],[90.71572265625002,28.071728515624997],[91.02080078124999,27.970068359375],[91.07773437500003,27.974462890625],[91.22587890624999,28.071240234374997],[91.27304687500003,28.078369140625],[91.30683593750001,28.064013671874996],[91.36757812500002,28.021630859374994],[91.64189453124999,27.923242187499994],[91.63193359375003,27.759960937499997]]]},"properties":{"name":"Bhutan","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[25.2587890625,-17.793554687500006],[25.242285156250006,-17.969042968750003],[25.939355468750023,-18.93867187500001],[26.168066406250006,-19.53828125000001],[27.17822265625,-20.10097656250001],[27.28076171875,-20.47871093750001],[27.679296875,-20.503027343750006],[27.66943359375,-21.064257812500003],[28.014062500000023,-21.55419921875],[29.02558593750001,-21.796875],[29.042382812500023,-22.018359375],[29.237207031250023,-22.07949218750001],[29.315234375000017,-22.15771484375],[29.36484375,-22.193945312500006],[29.1298828125,-22.21328125],[29.013476562500017,-22.278417968750006],[28.94580078125,-22.395117187500006],[28.83984375,-22.480859375],[28.21015625000001,-22.693652343750003],[27.812597656250006,-23.108007812500006],[27.7685546875,-23.14892578125],[27.085546875,-23.577929687500003],[26.835058593750006,-24.240820312500006],[26.617773437500006,-24.3955078125],[26.451757812500006,-24.58271484375001],[26.39716796875001,-24.613574218750003],[26.130859375,-24.671484375],[26.031835937500006,-24.702441406250003],[25.912109375,-24.74746093750001],[25.518164062500006,-25.66279296875001],[25.21337890625,-25.75625],[24.33056640625,-25.74287109375001],[24.19296875,-25.632910156250006],[23.969531250000017,-25.626074218750006],[23.89375,-25.600878906250003],[23.389257812500006,-25.29140625],[23.148730468750017,-25.288671875],[22.878808593750023,-25.45791015625001],[22.59765625,-26.13271484375001],[22.548632812500017,-26.17841796875001],[22.47089843750001,-26.219042968750003],[22.217578125000017,-26.38886718750001],[22.090917968750006,-26.580175781250006],[22.01093750000001,-26.635839843750006],[21.78828125000001,-26.710058593750006],[21.738085937500017,-26.80683593750001],[21.694726562500023,-26.840917968750006],[20.73984375,-26.84882812500001],[20.641406250000017,-26.7421875],[20.79316406250001,-25.915625],[20.4306640625,-25.147070312500006],[19.98046875,-24.77675781250001],[19.977343750000017,-22.00019531250001],[20.9794921875,-21.9619140625],[20.97412109375,-18.31884765625],[23.219335937500006,-17.99970703125001],[23.599707031250006,-18.4599609375],[24.243945312500017,-18.0234375],[24.530566406250017,-18.052734375],[24.909082031250023,-17.821386718750006],[25.2587890625,-17.793554687500006]]]},"properties":{"name":"Botswana","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[22.86005859375001,10.919677734375],[23.646289062500017,9.822900390624994],[23.62265625,9.340625],[23.46826171875,9.11474609375],[23.53730468750001,8.815820312499994],[24.147363281250023,8.665625],[24.291406250000023,8.29140625],[24.853320312500017,8.137548828124991],[25.20039062500001,7.807910156249989],[25.18134765625001,7.557226562499991],[25.27890625,7.427490234375],[26.36181640625,6.635302734374989],[26.30859375,6.455322265625],[26.514257812500006,6.069238281249994],[27.143945312500023,5.722949218749989],[27.4033203125,5.109179687499989],[27.071875,5.199755859374989],[26.822070312500017,5.062402343749994],[25.52509765625001,5.31210937499999],[25.065234375000017,4.967431640624994],[24.31982421875,4.994140625],[23.41718750000001,4.663134765624989],[22.864550781250017,4.723876953125],[22.422167968750017,4.134960937499997],[20.55810546875,4.462695312499989],[20.226367187500017,4.829638671874989],[19.806542968750023,5.089306640624997],[19.5009765625,5.127490234374989],[19.06855468750001,4.891406249999989],[18.594140625000023,4.346240234374989],[18.6103515625,3.478417968749994],[18.474414062500017,3.622998046874997],[18.160937500000017,3.499804687499989],[17.491601562500023,3.687304687499989],[16.610742187500023,3.50537109375],[16.468554687500017,2.831738281249997],[16.183398437500017,2.270068359374989],[16.0634765625,2.90859375],[15.128710937500017,3.826904296875],[15.063574218750006,4.284863281249997],[14.73125,4.602392578124991],[14.56298828125,5.279931640624994],[14.616894531250011,5.865136718749994],[14.43115234375,6.038720703124994],[14.7392578125,6.27978515625],[15.206738281250011,7.206152343749991],[15.480078125,7.523779296874991],[15.957617187500006,7.507568359375],[16.37890625,7.683544921874997],[16.545312500000023,7.865478515625],[16.784765625,7.550976562499997],[17.6494140625,7.98359375],[18.56416015625001,8.0458984375],[19.108691406250017,8.656152343749994],[18.886035156250017,8.836035156249991],[18.95625,8.938867187499994],[20.342089843750017,9.127099609374994],[20.773242187500017,9.405664062499994],[21.682714843750006,10.289843749999989],[21.771484375,10.642822265625],[22.49384765625001,10.996240234374994],[22.86005859375001,10.919677734375]]]},"properties":{"name":"Central African Rep.","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-59.78759765624997,43.939599609374994],[-60.11748046874996,43.95336914062506],[-59.727148437500006,44.002832031249994],[-59.78759765624997,43.939599609374994]]],[[[-66.7625,44.68178710937502],[-66.8970703125,44.62890625],[-66.80214843749994,44.80537109374998],[-66.7625,44.68178710937502]]],[[[-60.961572265624966,45.48994140625001],[-61.081738281249926,45.55781249999998],[-60.91245117187498,45.56728515625005],[-60.961572265624966,45.48994140625001]]],[[[-73.69531249999997,45.58549804687502],[-73.85771484375002,45.573583984375006],[-73.57236328124998,45.69448242187502],[-73.69531249999997,45.58549804687502]]],[[[-73.56650390625003,45.469091796875034],[-73.960546875,45.44140624999997],[-73.68745117187498,45.561425781249994],[-73.47607421874997,45.704736328124994],[-73.56650390625003,45.469091796875034]]],[[[-61.10517578124998,45.94472656250002],[-60.86523437499997,45.983496093750006],[-61.05903320312501,45.70336914062497],[-60.73789062499995,45.75141601562498],[-60.46059570312494,45.96870117187501],[-60.733300781249994,45.956591796875045],[-60.297949218750034,46.31123046874998],[-60.22646484374994,46.19555664062506],[-59.86503906249993,46.159521484375006],[-59.8421875,45.941552734374994],[-60.67294921874995,45.59082031250006],[-61.28369140624994,45.573876953124966],[-61.44980468749995,45.71621093750002],[-61.40864257812501,46.17036132812498],[-60.87016601562499,46.796777343749966],[-60.40820312500003,47.00351562499998],[-60.332910156249966,46.737011718749955],[-60.49453125000002,46.270263671875],[-61.10517578124998,45.94472656250002]]],[[[-63.811279296875,46.46870117187501],[-63.68144531249993,46.561914062499994],[-63.12939453125,46.422216796875034],[-62.02373046874999,46.42158203125001],[-62.52607421875001,46.20288085937503],[-62.531347656250034,45.977294921875],[-63.02207031249998,46.06660156249998],[-62.89453125000003,46.12358398437496],[-63.056347656249955,46.22392578124996],[-62.97846679687498,46.31635742187498],[-63.21347656249998,46.15986328124998],[-63.641015624999966,46.23046874999997],[-63.758642578125034,46.397607421874994],[-64.11083984375003,46.425439453124994],[-64.13603515624999,46.59970703125006],[-64.388037109375,46.640869140625],[-63.99355468750002,47.06157226562502],[-64.08789062499997,46.77543945312499],[-63.811279296875,46.46870117187501]]],[[[-61.91411132812496,47.284521484375034],[-61.77255859374998,47.25981445312499],[-62.00830078124994,47.23427734375002],[-61.924707031249966,47.425146484375006],[-61.3955078125,47.63764648437504],[-61.91411132812496,47.284521484375034]]],[[[-54.227148437500034,47.44135742187501],[-54.32597656250002,47.408105468749994],[-54.12817382812494,47.646826171875034],[-54.227148437500034,47.44135742187501]]],[[[-74.70888671874997,45.0038574218751],[-73.55810546875,45.425097656250045],[-73.1595703125,46.01005859375002],[-72.10927734374997,46.55122070312504],[-71.26118164062495,46.75625],[-70.51948242187501,47.032519531250045],[-69.47104492187503,47.96728515625006],[-68.23818359374994,48.62641601562504],[-66.17817382812493,49.21313476562503],[-64.83632812499994,49.191748046875006],[-64.2162109375,48.873632812500034],[-64.51372070312493,48.84111328124999],[-64.24609374999994,48.69111328124998],[-64.34882812500001,48.423193359375034],[-65.259423828125,48.02124023437503],[-65.92670898437495,48.188867187499994],[-66.70439453125002,48.0224609375],[-66.35961914062494,48.06064453125006],[-65.84941406250002,47.91103515625005],[-65.60722656249996,47.67001953125006],[-65.00166015624995,47.84682617187502],[-64.70322265625,47.72485351562503],[-64.91220703125003,47.36865234375003],[-65.31889648437502,47.101220703124994],[-64.831396484375,47.06079101562503],[-64.88251953124993,46.822851562500034],[-64.54150390625,46.240332031250034],[-63.91591796875002,46.165820312500045],[-63.831933593749966,46.107177734375],[-64.05639648437503,46.021337890625006],[-63.70288085937494,45.858007812500034],[-62.70068359374997,45.740576171875006],[-62.750097656250006,45.64824218750002],[-62.483056640624966,45.62182617187506],[-61.955517578124955,45.86816406249997],[-61.776513671874994,45.655615234375006],[-61.49228515624998,45.68701171875],[-61.350488281249966,45.57368164062501],[-61.28198242187494,45.441064453124994],[-61.46098632812502,45.36669921875003],[-61.03154296875002,45.29174804687506],[-63.306298828124994,44.64257812500003],[-63.60400390624997,44.68320312500006],[-63.60976562499999,44.47998046875006],[-63.999707031249926,44.64492187499999],[-64.10087890624993,44.487451171874966],[-64.1669921875,44.58666992187503],[-64.28608398437493,44.55034179687499],[-64.27568359374993,44.33408203124998],[-65.48168945312497,43.51806640625],[-65.73813476562498,43.56074218750001],[-65.88691406250001,43.79521484374999],[-66.125732421875,43.813818359375034],[-66.19306640624995,44.143847656250045],[-65.86801757812498,44.56879882812501],[-66.14638671875002,44.43593750000005],[-66.090625,44.50493164062499],[-64.44814453125,45.33745117187502],[-64.13549804687497,45.023046875],[-64.09316406249997,45.21708984375002],[-63.368017578125034,45.36479492187502],[-64.87314453124998,45.35458984375006],[-64.31464843749998,45.83569335937503],[-64.48222656250002,45.80634765624998],[-64.63271484375002,45.94663085937506],[-64.77851562499998,45.63842773437497],[-65.88447265624995,45.22290039062506],[-66.10976562500002,45.316601562499955],[-66.02656249999995,45.417578125],[-66.43984374999994,45.09589843750001],[-66.87246093749997,45.067285156249966],[-67.12485351562498,45.16943359375],[-67.366943359375,45.17377929687498],[-67.43266601562496,45.603125],[-67.80224609374994,45.7275390625],[-67.806787109375,47.08281249999999],[-68.23549804687502,47.34594726562503],[-68.93720703124998,47.21123046875002],[-69.0501953125,47.426611328125034],[-69.24287109374998,47.46298828124998],[-70.00771484375002,46.70893554687501],[-70.296240234375,45.90610351562506],[-70.86503906249999,45.27070312500001],[-71.327294921875,45.29008789062496],[-71.51752929687495,45.00756835937497],[-74.663232421875,45.00390625000003],[-74.70888671874997,45.0038574218751]]],[[[-126.09208984374995,49.35400390625003],[-126.06401367187499,49.26362304687501],[-126.22963867187498,49.29565429687506],[-126.09208984374995,49.35400390625003]]],[[[-54.55439453125001,49.5888671875],[-54.786523437499966,49.496142578125045],[-54.86357421875002,49.576074218749966],[-54.55439453125001,49.5888671875]]],[[[-54.093701171874955,49.74443359374999],[-53.98066406250001,49.66196289062498],[-54.28613281249997,49.595361328124994],[-54.27763671875002,49.71147460937502],[-54.093701171874955,49.74443359374999]]],[[[-126.64121093749999,49.605810546875006],[-126.93857421874999,49.71845703125004],[-126.92583007812497,49.837744140625006],[-126.73813476562502,49.84365234375005],[-126.64121093749999,49.605810546875006]]],[[[-61.801123046875034,49.093896484374966],[-63.04150390624994,49.224951171875034],[-64.485205078125,49.88696289062497],[-64.13144531249995,49.94165039062503],[-62.858544921874966,49.70546875000005],[-61.817138671875,49.28354492187498],[-61.69614257812495,49.139013671875006],[-61.801123046875034,49.093896484374966]]],[[[-125.18413085937497,50.09711914062498],[-125.301171875,50.4140625],[-125.07402343750002,50.22065429687501],[-125.18413085937497,50.09711914062498]]],[[[-127.19731445312495,50.640380859375],[-125.48208007812501,50.316796874999966],[-124.83061523437499,49.53007812500002],[-123.99580078125,49.22402343750002],[-123.49702148437498,48.58208007812499],[-123.38989257812501,48.67021484374999],[-123.31064453125003,48.41103515625002],[-123.57314453124995,48.32280273437499],[-123.91694335937501,48.386572265625034],[-125.12070312500002,48.76079101562496],[-124.84965820312496,49.02827148437501],[-124.81264648437497,49.212646484375],[-124.92734374999998,49.01420898437499],[-125.489453125,48.933789062499955],[-125.82851562499998,49.09184570312499],[-125.64423828125001,49.18579101562506],[-125.95166015625001,49.24804687500003],[-125.93540039062499,49.401464843750006],[-126.51914062499999,49.396777343750045],[-126.54189453125001,49.590478515624966],[-126.13408203124997,49.672314453124955],[-126.52524414062499,49.71958007812498],[-126.90332031250001,49.94414062499999],[-127.114306640625,49.879736328125034],[-127.24980468749999,50.13798828124996],[-127.34941406249995,50.05195312500001],[-127.46713867187503,50.163427734375006],[-127.86391601562495,50.12773437500002],[-127.90585937499998,50.44521484375002],[-127.48652343749998,50.404638671875034],[-127.46591796874996,50.58310546875006],[-128.05834960937494,50.498486328124955],[-128.34604492187503,50.744238281250006],[-127.91806640624998,50.86054687500001],[-127.19731445312495,50.640380859375]]],[[[-55.45874023437494,51.53652343750005],[-55.58339843749994,51.38857421875002],[-56.031103515625034,51.328369140625],[-55.8,51.033300781250034],[-56.732324218749966,50.007714843749994],[-56.822167968749966,49.613476562499955],[-56.179394531249955,50.114990234375],[-56.161279296874994,49.94013671874998],[-55.50292968749997,49.98315429687503],[-56.14018554687496,49.61914062500006],[-55.869824218749955,49.67016601562506],[-56.08730468750002,49.45195312499999],[-55.375927734374955,49.48974609374997],[-55.34384765624998,49.37290039062506],[-55.22954101562496,49.508154296875006],[-55.35317382812502,49.07944335937506],[-54.50219726562503,49.52734375],[-54.44824218749997,49.329443359375006],[-53.957714843749955,49.44184570312498],[-53.61943359374996,49.321630859375006],[-53.57343750000001,49.141210937500034],[-54.16127929687494,48.787695312500034],[-53.852880859375006,48.81132812499996],[-53.966015624999955,48.70668945312505],[-53.70634765624999,48.65551757812503],[-54.11445312499998,48.393603515625045],[-53.027587890625,48.634716796874955],[-53.1357421875,48.40185546875003],[-53.60976562500002,48.20771484375001],[-53.56943359374998,48.088085937499955],[-53.869580078124926,48.019677734374966],[-53.63823242187496,48.01464843750003],[-53.863671874999966,47.787011718749994],[-53.67236328125,47.64824218749999],[-53.28271484375,47.99785156249996],[-52.86601562499993,48.11298828124998],[-53.16982421875002,47.51210937500005],[-52.945019531249955,47.55283203124998],[-52.782421874999955,47.769433593749966],[-52.653662109375034,47.549414062500006],[-53.11484375,46.65581054687502],[-53.32304687499996,46.71835937499998],[-53.589794921874955,46.638867187499955],[-53.59736328124998,47.14599609374997],[-54.00957031249993,46.839599609375],[-54.173730468749994,46.88037109375003],[-53.84951171875002,47.440332031249994],[-53.98901367187503,47.756201171875034],[-54.191845703124955,47.85981445312501],[-54.488134765625006,47.40385742187502],[-54.47392578124996,47.54707031249998],[-54.856640624999955,47.385009765625],[-55.31572265624993,46.905712890624955],[-55.78852539062498,46.86723632812502],[-55.91923828124996,47.01689453124996],[-55.49150390624996,47.16064453125003],[-54.78461914062501,47.664746093749955],[-55.366308593750034,47.66108398437501],[-55.57612304687498,47.46523437499999],[-56.12724609374999,47.50283203125002],[-55.867089843749994,47.592333984375045],[-55.85791015625,47.81918945312498],[-56.774121093749955,47.56499023437499],[-58.33686523437501,47.73085937500002],[-59.11694335937494,47.57070312499999],[-59.32065429687498,47.736914062500006],[-59.272070312500034,47.99555664062504],[-58.330224609374994,48.52211914062502],[-59.16767578124998,48.558496093749966],[-58.84179687500003,48.74643554687498],[-58.906445312499955,48.65019531249999],[-58.716455078124994,48.59804687500002],[-58.403662109375034,49.08432617187498],[-57.99052734374996,48.987939453124966],[-58.09892578124993,49.07744140624999],[-57.98007812499998,49.229638671874994],[-58.19091796875003,49.25874023437498],[-58.21337890625,49.38666992187501],[-58.01582031249998,49.54248046874997],[-57.79130859374999,49.48999023437503],[-57.92617187499999,49.700830078124994],[-57.4326171875,50.50581054687504],[-57.179589843749966,50.614843750000034],[-57.29799804687502,50.69873046874997],[-57.03593750000002,51.01083984374998],[-56.68242187500002,51.332763671875],[-56.025585937499955,51.56835937500006],[-55.6904296875,51.471337890624994],[-55.666406249999966,51.57890624999999],[-55.45874023437494,51.53652343750005]]],[[[-127.92465820312498,51.47387695312497],[-128.14877929687498,51.62670898437503],[-128.03173828125006,51.708398437499966],[-127.92465820312498,51.47387695312497]]],[[[-79.38427734374997,51.951953125000045],[-79.64375,52.01005859374996],[-79.27128906249996,52.086816406249966],[-79.38427734374997,51.951953125000045]]],[[[-128.36875,52.40087890625],[-128.43979492187503,52.696386718750006],[-128.24726562499998,52.784375],[-128.36875,52.40087890625]]],[[[-80.73168945312494,52.74726562499998],[-82.03925781249998,53.04990234374998],[-81.84731445312494,53.18627929687497],[-81.135595703125,53.20581054687503],[-80.73168945312494,52.74726562499998]]],[[[-131.7537109375,53.195556640625],[-131.63466796874997,52.92216796874999],[-131.97177734374998,52.87983398437498],[-131.45522460937502,52.70170898437502],[-131.59057617187494,52.578222656250006],[-131.25971679687495,52.415917968749966],[-131.31992187499998,52.30307617187498],[-131.142626953125,52.291113281250034],[-131.221533203125,52.15361328124999],[-132.16508789062493,52.783300781250034],[-132.14375,52.99931640624999],[-132.54677734374997,53.1375],[-131.7537109375,53.195556640625]]],[[[-128.55244140624998,52.93974609375002],[-128.50991210937502,52.51860351562502],[-128.678955078125,52.289648437500006],[-128.74633789062494,52.763378906249955],[-128.89980468749997,52.67382812500003],[-129.175927734375,52.964941406250006],[-129.033251953125,53.27993164062505],[-128.63266601562498,53.1125],[-128.55244140624998,52.93974609375002]]],[[[-129.167724609375,53.11787109374998],[-129.32387695312502,53.142138671875045],[-129.23818359374997,53.33007812500006],[-129.167724609375,53.11787109374998]]],[[[-129.84858398437498,53.167919921874955],[-130.51757812500003,53.54423828124999],[-130.45200195312498,53.63115234375002],[-129.94472656250002,53.436376953125034],[-129.75483398437498,53.244775390624994],[-129.84858398437498,53.167919921874955]]],[[[-130.236279296875,53.95854492187502],[-130.38422851562504,53.84394531250001],[-130.703173828125,53.892236328124994],[-130.44799804687497,54.08901367187502],[-130.236279296875,53.95854492187502]]],[[[-132.65551757812503,54.12749023437496],[-132.30336914062497,54.098876953125],[-132.16611328124998,53.95522460937505],[-132.53466796875,53.651708984375034],[-132.18696289062504,53.68481445312503],[-132.134423828125,54.03427734374998],[-131.66762695312502,54.14135742187503],[-131.957421875,53.308691406250034],[-132.34726562500003,53.18920898437503],[-132.747509765625,53.310498046874955],[-132.425,53.33696289062502],[-132.84501953125,53.507714843749994],[-133.07949218749997,53.837011718750034],[-133.04838867187493,54.15893554687497],[-132.65551757812503,54.12749023437496]]],[[[-130.92714843749997,54.47905273437499],[-130.90683593750003,54.63178710937504],[-130.75800781249998,54.61376953125],[-130.92714843749997,54.47905273437499]]],[[[-130.57534179687497,54.769677734374966],[-130.2140625,55.02587890625003],[-130.34941406249996,54.814550781250034],[-130.57534179687497,54.769677734374966]]],[[[-79.97758789062499,56.20703125000006],[-80.057470703125,56.28735351562497],[-79.57973632812502,56.466357421875045],[-79.97758789062499,56.20703125000006]]],[[[-78.93559570312496,56.26606445312498],[-79.17548828124998,55.88505859374999],[-79.18212890625,56.21215820312503],[-79.4951171875,55.87475585937503],[-79.76474609374995,55.80678710937505],[-79.54472656249999,56.12836914062501],[-79.9875,55.89213867187502],[-79.45888671875,56.53974609374998],[-79.53632812499995,56.180078124999966],[-79.27241210937493,56.600439453125006],[-78.93559570312496,56.26606445312498]]],[[[-61.743603515624955,57.55458984375005],[-61.6375,57.41606445312499],[-62.01123046875003,57.54848632812505],[-61.743603515624955,57.55458984375005]]],[[[-79.71650390624998,57.515527343749994],[-79.80844726562498,57.44243164062502],[-79.74257812499997,57.60795898437499],[-79.71650390624998,57.515527343749994]]],[[[-69.16005859375,59.04023437500001],[-69.35283203125002,58.96074218749999],[-69.30322265625003,59.144873046875006],[-69.16005859375,59.04023437500001]]],[[[-64.40703125,60.367089843749966],[-64.44194335937496,60.2978515625],[-64.73793945312497,60.37563476562502],[-64.83642578124997,60.50102539062499],[-64.40703125,60.367089843749966]]],[[[-68.23378906250002,60.24091796875001],[-68.36787109374998,60.314746093750045],[-68.08759765624998,60.58784179687501],[-67.81884765624994,60.449511718750074],[-68.23378906250002,60.24091796875001]]],[[[-78.531640625,60.72856445312499],[-78.66889648437498,60.716894531250006],[-78.24169921875,60.818652343750045],[-78.531640625,60.72856445312499]]],[[[-64.83261718749998,61.366064453125006],[-65.43212890625,61.649511718750034],[-64.78964843750003,61.662207031250034],[-64.83261718749998,61.366064453125006]]],[[[-65.03056640624999,61.879052734374966],[-64.89658203124995,61.73330078125005],[-65.23535156249997,61.89770507812506],[-65.03056640624999,61.879052734374966]]],[[[-79.54531250000002,62.41171875000006],[-79.28647460937495,62.247656250000034],[-79.32392578124995,62.02607421875001],[-79.81611328124995,61.59462890625002],[-80.26518554687496,61.818212890625006],[-80.26005859374996,62.10903320312502],[-79.9267578125,62.39287109375002],[-79.54531250000002,62.41171875000006]]],[[[-64.82382812499998,62.558740234374994],[-64.46503906249998,62.535937500000045],[-64.47832031250002,62.417871093749966],[-64.901220703125,62.421044921874994],[-64.82382812499998,62.558740234374994]]],[[[-70.33706054687497,62.548730468749994],[-70.76606445312498,62.596875],[-71.22011718750002,62.873925781249966],[-70.44262695312497,62.73378906250002],[-70.33706054687497,62.548730468749994]]],[[[-82.00048828124997,62.95419921874998],[-82.02583007812498,62.73007812499998],[-82.56826171875002,62.403222656249994],[-83.01582031249998,62.20991210937498],[-83.69887695312497,62.16025390624998],[-83.91049804687498,62.45415039062499],[-83.37641601562498,62.904931640624994],[-82.00048828124997,62.95419921874998]]],[[[-77.87670898437497,63.470556640625034],[-77.53271484374997,63.233642578125],[-77.94243164062496,63.11440429687502],[-78.536767578125,63.423730468749994],[-77.87670898437497,63.470556640625034]]],[[[-76.67758789062503,63.393945312499966],[-77.36474609374994,63.588330078124955],[-77.13369140624997,63.68203125000002],[-76.65244140624998,63.503564453124994],[-76.67758789062503,63.393945312499966]]],[[[-84.91962890624995,65.26108398437503],[-84.50112304687497,65.45844726562501],[-84.08486328125,65.21782226562502],[-82.05,64.64428710937506],[-81.67612304687498,64.21264648437503],[-81.88710937499997,64.01640625000002],[-80.82895507812495,64.08994140625],[-80.30205078124999,63.76220703125003],[-81.04638671875003,63.461572265624966],[-82.378125,63.706787109375],[-82.46708984375002,63.92695312500001],[-83.30395507812497,64.14379882812506],[-84.63291015625,63.30922851562502],[-85.39262695312496,63.119677734375045],[-85.76894531249997,63.70034179687502],[-87.15190429687499,63.58564453125001],[-86.93203124999997,63.90166015625002],[-86.252099609375,64.13686523437497],[-86.37426757812503,64.56582031249997],[-86.074609375,65.533837890625],[-85.55468750000003,65.91865234374995],[-85.17622070312501,65.746875],[-85.23994140624993,65.51030273437499],[-84.91962890624995,65.26108398437503]]],[[[-84.67475585937498,65.575],[-85.096337890625,65.756201171875],[-85.14960937500001,66.01538085937506],[-84.75737304687496,65.85893554687505],[-84.67475585937498,65.575]]],[[[-83.72597656249997,65.796728515625],[-83.23374023437495,65.71503906249995],[-83.332421875,65.63105468749998],[-84.11826171874995,65.77177734375007],[-84.40717773437501,66.13100585937497],[-83.78696289062495,65.96577148437498],[-83.72597656249997,65.796728515625]]],[[[-108.09272460937501,67.00517578124999],[-107.80551757812493,66.99858398437507],[-107.94394531249999,66.8578125],[-108.09272460937501,67.00517578124999]]],[[[-62.681542968749966,67.05629882812502],[-62.87163085937499,67.06259765625006],[-62.41679687499996,67.18847656250003],[-62.681542968749966,67.05629882812502]]],[[[-107.89985351562497,67.40180664062495],[-107.95024414062503,67.31821289062498],[-108.15224609374997,67.429443359375],[-108.04897460937498,67.664892578125],[-107.89985351562497,67.40180664062495]]],[[[-73.621728515625,67.783837890625],[-74.573388671875,67.82866210937507],[-74.70654296875003,68.06708984374995],[-73.49375,68.00063476562502],[-73.40717773437498,67.79306640625],[-73.621728515625,67.783837890625]]],[[[-86.59555664062498,67.7359375],[-86.89252929687498,67.836572265625],[-86.95981445312503,68.10024414062497],[-86.70209960937501,68.30561523437498],[-86.42114257812497,68.18344726562503],[-86.59555664062498,67.7359375]]],[[[-75.67587890624998,68.32250976562506],[-75.078125,68.17314453124999],[-75.20195312499996,67.45917968750001],[-75.78007812499996,67.28354492187503],[-76.94418945312498,67.25029296875002],[-77.30439453125001,67.68510742187505],[-77.12587890624997,67.94707031250002],[-76.59580078124998,68.27895507812497],[-75.67587890624998,68.32250976562506]]],[[[-78.98271484374999,68.19282226562501],[-79.17475585937493,68.26445312500002],[-78.95258789062495,68.35302734375006],[-78.98271484374999,68.19282226562501]]],[[[-104.54067382812497,68.405908203125],[-105.05136718749999,68.55903320312501],[-104.60200195312503,68.56152343749997],[-104.54067382812497,68.405908203125]]],[[[-74.880859375,68.34868164062505],[-75.40024414062503,68.52548828125],[-75.28740234374996,68.68774414062503],[-74.98364257812497,68.64760742187502],[-74.880859375,68.34868164062505]]],[[[-101.84589843749994,68.58632812499997],[-102.30815429687497,68.681982421875],[-102.01337890624995,68.82539062500001],[-101.73295898437495,68.75341796875],[-101.84589843749994,68.58632812499997]]],[[[-100.21723632812497,68.80668945312502],[-100.59653320312496,68.76640625000007],[-100.56547851562495,69.02680664062501],[-100.21723632812497,68.80668945312502]]],[[[-99.99467773437502,69.01352539062503],[-100.19570312500002,68.991455078125],[-100.153125,69.12949218750003],[-99.99467773437502,69.01352539062503]]],[[[-79.21064453124995,68.845458984375],[-79.24267578125,69.04926757812495],[-78.33256835937496,69.38603515624999],[-78.77919921875,68.95048828124999],[-79.21064453124995,68.845458984375]]],[[[-90.1998046875,69.419091796875],[-90.33027343749993,69.252197265625],[-90.49204101562503,69.369873046875],[-90.1998046875,69.419091796875]]],[[[-76.99536132812503,69.14375],[-77.37939453125,69.2740234375],[-77.18754882812502,69.440087890625],[-76.66884765625002,69.36616210937504],[-76.99536132812503,69.14375]]],[[[-101.171728515625,69.39707031250003],[-101.31289062499998,69.57607421875],[-101.00063476562497,69.4619140625],[-101.171728515625,69.39707031250003]]],[[[-95.51367187499997,69.57363281250002],[-95.43745117187498,69.37846679687505],[-95.73012695312502,69.34755859374997],[-95.80620117187499,69.56049804687501],[-95.89345703125,69.35175781250004],[-95.87583007812495,69.60600585937505],[-95.51367187499997,69.57363281250002]]],[[[-67.91469726562494,69.54096679687504],[-68.22138671874998,69.61674804687502],[-67.908837890625,69.68183593749995],[-67.91469726562494,69.54096679687504]]],[[[-78.02910156249993,69.71489257812502],[-78.03999023437495,69.6083984375],[-78.84819335937502,69.4828125],[-78.02910156249993,69.71489257812502]]],[[[-79.43066406250003,69.78779296874995],[-79.55283203124995,69.63085937500006],[-80.04750976562502,69.63432617187505],[-79.97783203124993,69.50966796874997],[-80.794775390625,69.68925781250005],[-80.42421875000002,69.797607421875],[-79.43066406250003,69.78779296874995]]],[[[-97.439453125,69.64267578125006],[-96.29995117187494,69.34438476562505],[-95.7513671875,68.89765624999998],[-95.26777343749998,68.82607421874997],[-96.40156249999995,68.47070312500003],[-97.47202148437498,68.543701171875],[-98.320556640625,68.84272460937498],[-98.70380859374993,68.80278320312502],[-98.90449218749995,68.93242187500005],[-99.25400390625002,68.86318359374997],[-99.49467773437493,68.95957031249998],[-99.455712890625,69.13120117187503],[-98.45595703124997,69.33466796875001],[-98.54599609375,69.57290039062497],[-98.04135742187498,69.456640625],[-98.20048828124996,69.79697265625006],[-97.79072265624998,69.86162109374999],[-97.439453125,69.64267578125006]]],[[[-86.91303710937501,70.11323242187501],[-86.55766601562499,69.99531249999995],[-87.3232421875,70.08012695312502],[-86.91303710937501,70.11323242187501]]],[[[-74.70888671874997,45.0038574218751],[-74.76245117187494,44.99907226562502],[-74.99614257812496,44.970117187499966],[-75.40126953124997,44.77226562499999],[-75.81933593749997,44.468017578125],[-76.18579101562503,44.24223632812502],[-76.819970703125,43.62880859375011],[-77.59653320312492,43.62861328125007],[-78.45825195312497,43.63149414062511],[-78.72041015624993,43.62495117187501],[-78.84555664062492,43.58334960937506],[-79.171875,43.466552734375085],[-79.0830566406249,43.33139648437509],[-79.05922851562494,43.27807617187506],[-79.066064453125,43.10610351562502],[-79.02617187499996,43.01733398437506],[-78.98076171874993,42.98061523437502],[-78.91508789062496,42.90913085937504],[-79.17373046875,42.74853515625],[-80.24755859374991,42.366015625000045],[-81.02822265624997,42.247167968750006],[-81.50732421874997,42.10346679687504],[-81.97416992187496,41.88872070312499],[-82.43906249999989,41.6748535156251],[-82.69003906249995,41.675195312499994],[-83.141943359375,41.97587890624996],[-83.10952148437497,42.25068359375001],[-82.54531249999997,42.62470703124998],[-82.19038085937495,43.47407226562501],[-82.137841796875,43.570898437500034],[-82.48505859374993,45.08374023437503],[-82.55107421874987,45.3473632812501],[-82.91933593749994,45.51796875000002],[-83.59267578125,45.81713867187506],[-83.46948242187503,45.99467773437499],[-83.61596679687503,46.116845703124994],[-83.97778320312494,46.08491210937507],[-84.12319335937497,46.50292968749997],[-84.44047851562496,46.49814453125006],[-84.66577148437503,46.54326171875002],[-84.87597656249994,46.89990234375003],[-85.07006835937497,46.97993164062498],[-85.65224609375,47.21997070312503],[-86.67216796874996,47.636425781249955],[-87.20800781249997,47.848486328125006],[-87.74389648437497,48.06054687500003],[-88.37817382812497,48.30307617187506],[-89.45566406249992,47.99624023437508],[-90.79731445312495,48.13105468750001],[-91.04345703124991,48.19370117187498],[-91.38720703124997,48.05854492187498],[-92.00517578125002,48.301855468750006],[-92.3484375,48.276611328125],[-92.41459960937493,48.276611328125],[-92.50058593749995,48.43535156250002],[-92.83671875,48.567773437499994],[-93.25795898437497,48.62885742187501],[-93.37788085937498,48.61655273437498],[-93.70771484374995,48.525439453125074],[-93.85161132812496,48.607275390625034],[-94.6208984374999,48.7426269531251],[-94.71279296874997,48.863427734374994],[-94.80346679687497,49.0029296875],[-94.86040039062493,49.258593750000045],[-94.85434570312495,49.304589843749994],[-95.15527343749997,49.3696777343751],[-95.16206054687493,48.991748046875045],[-95.39790039062493,48.99316406249997],[-96.25068359374993,48.99316406249997],[-96.67705078124993,48.99316406249997],[-97.52983398437493,48.99316406249997],[-98.80898437499995,48.99316406249997],[-104.77832031249997,48.993115234375125],[-110.7476562499999,48.993066406250136],[-116.71704101562493,48.993066406250136],[-118.84892578124993,48.993066406250136],[-119.27534179687494,48.993066406250136],[-119.70170898437495,48.99301757812495],[-120.98085937499995,48.99301757812495],[-122.78876953124994,48.99301757812495],[-122.82670898437495,49.028417968750034],[-122.9241699218749,49.07465820312504],[-122.96269531249993,49.07460937500005],[-123.06328125,48.97773437500001],[-123.22944335937493,49.260498046875085],[-122.87910156249995,49.39892578125003],[-123.27675781249997,49.34394531250001],[-123.1875,49.680322265624994],[-123.53056640624989,49.39731445312506],[-124.02861328125002,49.602880859375006],[-123.99262695312497,49.736181640625006],[-123.81718749999993,49.58657226562508],[-123.58247070312498,49.68125],[-123.87441406250005,49.736816406250114],[-123.82543945312493,50.14423828124998],[-123.94589843749995,50.18393554687509],[-123.9849121093749,49.87558593749998],[-124.28125,49.77211914062502],[-124.78237304687492,50.02011718749992],[-125.05668945312495,50.418652343750125],[-124.8598632812499,50.872412109375006],[-125.05878906249993,50.51386718749998],[-125.4763183593749,50.49716796874995],[-125.53935546874996,50.64902343749998],[-125.64130859374994,50.46621093750005],[-126.09433593749995,50.497607421875045],[-126.44746093750004,50.58774414062492],[-125.90410156250002,50.704931640625006],[-126.51435546875,50.679394531250125],[-126.37460937499995,50.83735351562498],[-126.5217773437499,50.86606445312498],[-126.51733398437497,51.0568359375001],[-126.63178710937494,50.915136718750006],[-127.057568359375,50.86752929687509],[-127.70810546875,51.15117187499996],[-127.41967773437496,51.608056640625136],[-126.69145507812502,51.70341796875002],[-127.33872070312489,51.70737304687495],[-127.66870117187497,51.47758789062502],[-127.85053710937498,51.67319335937509],[-127.79536132812493,52.19101562500006],[-127.43793945312504,52.356152343750125],[-127.24223632812496,52.39511718750009],[-126.71396484374989,52.060693359374994],[-127.19399414062498,52.45766601562502],[-126.95136718749994,52.7510253906251],[-127.01933593750002,52.8424804687501],[-127.06621093749989,52.65268554687498],[-127.79189453124994,52.28935546875002],[-128.10224609374993,51.78842773437495],[-128.3576171875,52.1588867187501],[-128.0375,52.318164062500045],[-127.94023437499996,52.545166015625085],[-128.27153320312493,52.3629882812501],[-128.05327148437487,52.91069335937496],[-128.3650390624999,52.82578125000006],[-128.52470703125002,53.1406738281251],[-129.08090820312492,53.36728515625006],[-129.1715820312499,53.53359375000002],[-128.8545898437499,53.70454101562504],[-128.90561523437492,53.559326171875114],[-128.5421386718749,53.420654296875114],[-128.13271484375002,53.417773437500045],[-127.92783203125,53.274707031250045],[-128.2072265624999,53.483203125000074],[-128.67553710937494,53.55458984375005],[-128.76367187500003,53.746875],[-128.5321289062499,53.85810546875007],[-128.959375,53.84145507812505],[-129.2578613281249,53.417968750000085],[-129.56372070312506,53.251464843750114],[-130.33525390625002,53.723925781250074],[-130.04331054687495,54.13354492187503],[-129.62602539062493,54.23027343750002],[-130.08422851562503,54.18139648437503],[-130.4302734375,54.42099609374998],[-129.56064453124995,55.46254882812508],[-129.79516601562503,55.559570312500114],[-130.04848632812494,55.05727539062511],[-130.01406249999997,55.950537109375006],[-130.09785156249995,56.10927734375002],[-130.41313476562487,56.12250976562507],[-130.47709960937496,56.230566406250034],[-130.649072265625,56.26367187500003],[-131.471875,56.55673828125006],[-131.82426757812496,56.58999023437508],[-131.86616210937495,56.792822265625006],[-132.1042968749999,56.85678710937509],[-132.062890625,56.95336914062503],[-132.33798828124992,57.07944335937498],[-132.27939453124998,57.14536132812506],[-132.23217773437494,57.198535156250074],[-132.30166015625005,57.2763183593751],[-132.44248046874986,57.40673828125003],[-132.55048828124995,57.499902343749994],[-133.00141601562495,57.948974609375],[-133.27529296875,58.22285156250004],[-133.54638671874997,58.50346679687499],[-134.21850585937503,58.849902343750045],[-134.32963867187505,58.93969726562506],[-134.39306640625,59.009179687499994],[-134.67724609374997,59.19926757812499],[-134.94375,59.28828125000001],[-135.05102539062491,59.57866210937502],[-135.36787109374998,59.743310546874994],[-135.70258789062504,59.72875976562506],[-136.3218261718749,59.604833984375034],[-136.27797851562494,59.48032226562506],[-136.46635742187493,59.459082031250006],[-136.57875976562494,59.15224609375002],[-136.81328125000002,59.15004882812511],[-137.12622070312491,59.04096679687507],[-137.2775390624999,58.988183593749994],[-137.43857421874995,58.903125],[-137.52089843749994,58.91538085937506],[-137.59331054687493,59.22626953124998],[-138.317626953125,59.611132812500074],[-138.86875,59.94575195312501],[-139.18515624999986,60.083593750000034],[-139.13696289062494,60.17270507812506],[-139.07924804687497,60.279443359375136],[-139.07924804687497,60.3437011718751],[-139.23476562499997,60.339746093749994],[-139.67631835937505,60.32832031249998],[-139.97329101562497,60.183154296875074],[-140.45283203125004,60.29970703125002],[-140.5254394531249,60.21835937499995],[-140.76274414062505,60.25913085937509],[-141.00214843750004,60.300244140625125],[-141.00214843750004,60.884667968749994],[-141.00214843750004,61.761279296875045],[-141.00214843750004,63.22226562499998],[-141.00214843750004,64.09887695312506],[-141.00214843750004,65.55991210937498],[-141.00214843750004,66.43652343750006],[-141.00214843750004,67.89755859374998],[-141.00214843750004,68.77416992187506],[-141.00214843750004,69.65078125000011],[-139.18154296874997,69.51552734375008],[-137.25996093749998,68.96411132812503],[-136.12236328124993,68.88222656250002],[-135.258837890625,68.68432617187503],[-135.93901367187487,68.9741699218751],[-135.575537109375,69.02695312500003],[-135.91020507812487,69.11147460937502],[-135.6914550781249,69.31118164062502],[-135.29282226562486,69.30786132812506],[-135.1408203124999,69.46782226562496],[-134.45683593749993,69.47763671875],[-134.40893554687494,69.68178710937502],[-133.87978515624997,69.50771484375011],[-134.17431640624991,69.25283203125005],[-133.16313476562496,69.43388671874999],[-132.91533203125002,69.62963867187506],[-132.40390625,69.65874023437496],[-132.48847656249993,69.73808593749996],[-132.16342773437498,69.70498046875014],[-131.13637695312497,69.90688476562505],[-130.66547851562495,70.12705078124998],[-129.944970703125,70.09091796875006],[-129.675634765625,70.19296875000009],[-129.64829101562495,69.9977539062501],[-130.83208007812487,69.65146484375006],[-131.9377929687499,69.5347167968751],[-132.8174804687499,69.20576171875004],[-133.41831054687492,68.84428710937493],[-133.138037109375,68.74658203125011],[-133.33666992187497,68.83525390625005],[-132.57763671874997,68.84780273437514],[-132.71894531249998,69.07919921875],[-131.78837890625002,69.43198242187495],[-131.32470703124997,69.36118164062509],[-131.06342773437504,69.45068359375003],[-130.97065429687495,69.20908203125],[-130.1176269531249,69.720068359375],[-128.89892578124994,69.96616210937506],[-129.15791015624995,69.80009765624999],[-129.05434570312502,69.70107421875005],[-128.85302734375003,69.7510253906251],[-127.68378906249994,70.26035156249995],[-128.17011718749998,70.41845703125],[-127.99101562499992,70.57382812500003],[-127.22597656249992,70.29614257812497],[-126.25043945312495,69.54526367187492],[-125.52495117187495,69.35156250000009],[-125.171875,69.42797851562503],[-125.35693359374991,69.62597656250003],[-124.767919921875,69.99003906249996],[-124.99038085937494,70.02661132812511],[-124.55502929687488,70.15122070312509],[-124.40693359374991,69.76743164062506],[-124.12460937499995,69.6899902343751],[-124.33808593749991,69.36484374999995],[-123.5284179687499,69.38935546874995],[-123.02578125,69.81000976562504],[-122.07006835937499,69.81616210937506],[-120.96245117187502,69.66040039062511],[-120.13999023437488,69.38056640625013],[-117.22695312499998,68.913427734375],[-116.05947265625,68.83701171875006],[-116.2434082031249,68.9740722656251],[-115.44228515624994,68.94091796875009],[-114.62016601562496,68.74609375],[-113.96440429687495,68.39907226562502],[-114.09594726562491,68.26679687500007],[-114.76528320312494,68.27021484375004],[-115.12705078124992,68.13203124999995],[-115.43447265624994,67.90234375000006],[-115.13320312499994,67.819189453125],[-112.50302734374993,67.6819335937501],[-110.9900390624999,67.79082031250007],[-110.07392578124995,67.99291992187506],[-109.63037109374991,67.73271484374996],[-109.03803710937504,67.69116210937503],[-108.85200195312497,67.42197265625009],[-108.61333007812493,67.59804687500008],[-107.98872070312495,67.2563964843751],[-107.99130859374995,67.09516601562513],[-108.49604492187493,67.09228515625006],[-107.25947265624998,66.39853515624995],[-107.71035156250001,66.74003906250007],[-107.7250976562499,66.98413085937506],[-107.15649414062497,66.88173828124997],[-107.9583984375,67.81860351562506],[-107.79829101562498,68.03691406249996],[-106.42426757812491,68.20058593750008],[-105.7501953125,68.59228515625011],[-106.45805664062496,68.51645507812495],[-106.60849609374988,68.35737304687504],[-107.61933593749994,68.3310546875],[-107.73417968749989,68.17373046875011],[-108.3228027343749,68.15410156250002],[-108.71811523437488,68.29746093750009],[-108.31347656249996,68.61079101562498],[-106.16445312499992,68.91987304687507],[-105.68559570312489,68.82817382812505],[-105.3774414062499,68.413818359375],[-104.65317382812488,68.23007812500003],[-104.48681640624991,68.06318359374998],[-103.47412109374993,68.11503906250005],[-102.32036132812489,67.73564453125005],[-101.55498046874992,67.69316406250007],[-100.21293945312489,67.83857421875004],[-98.92045898437502,67.72578124999998],[-98.41210937499991,67.80717773437505],[-98.63154296875004,68.0725585937501],[-97.45493164062486,67.61699218750002],[-97.20654296874989,67.85507812500003],[-97.73911132812495,67.97817382812505],[-98.19252929687494,67.92299804687502],[-98.65048828124989,68.36352539062506],[-98.21855468750002,68.31743164062507],[-97.7942382812499,68.38759765625],[-97.9250976562499,68.523681640625],[-97.41035156249993,68.49653320312498],[-96.97670898437497,68.25541992187505],[-96.43066406249991,68.3105957031251],[-96.72207031250005,68.03876953124998],[-95.9703125,68.24912109375],[-96.36914062499991,67.50976562500003],[-96.14145507812489,67.27182617187503],[-95.71992187499998,67.31679687500014],[-95.77768554687495,67.18461914062505],[-95.41591796875005,67.15556640624999],[-95.41889648437504,67.01323242187493],[-96.42255859374995,67.05175781249997],[-95.7875488281249,66.616796875],[-96.03686523437489,66.9375],[-95.39965820312503,66.94946289062509],[-95.25874023437493,67.26254882812492],[-95.65048828124986,67.73745117187505],[-95.46069335937503,68.02138671875],[-94.74443359374993,68.07089843749995],[-93.44892578124998,68.61889648437503],[-93.85244140624994,69.00034179687495],[-94.06489257812495,68.78476562500006],[-94.600439453125,68.80322265625011],[-94.08364257812497,69.12309570312507],[-94.254736328125,69.31376953125002],[-93.61948242187492,69.41699218750009],[-93.74853515624991,69.2261230468751],[-93.5322753906249,69.48090820312495],[-94.2708007812499,69.45512695312505],[-94.63383789062496,69.64965820312506],[-94.82250976562494,69.577783203125],[-95.96494140624989,69.80278320312499],[-96.5513671875,70.21030273437506],[-96.29770507812492,70.51137695312511],[-95.87861328124998,70.54897460937514],[-95.88632812499986,70.69428710937507],[-96.25800781249993,70.64228515625013],[-96.54892578124995,70.80874023437511],[-96.44658203124996,71.23989257812502],[-96.06201171874997,71.41386718749993],[-95.5642578124999,71.33676757812503],[-95.40625,71.49165039062498],[-95.87231445312494,71.57314453125005],[-94.73486328124994,71.98295898437507],[-94.30834960937491,71.76489257812506],[-93.74628906249998,71.742822265625],[-92.94868164062493,71.26210937500011],[-92.98144531249994,70.8522460937501],[-91.56406249999995,70.1782714843751],[-92.32050781250004,70.2353515625],[-92.51186523437494,70.10385742187503],[-91.976708984375,70.03867187500009],[-92.88779296874989,69.66821289062511],[-92.31166992187494,69.67290039062499],[-91.91196289062495,69.53125],[-91.20180664062494,69.64477539062494],[-91.43994140624997,69.52568359375002],[-90.4155761718749,69.45698242187507],[-90.89228515625004,69.26728515624995],[-91.23720703125005,69.28554687500014],[-90.47900390624994,68.88115234374999],[-90.57363281250005,68.47470703124998],[-90.20478515625004,68.25747070312511],[-89.27954101562491,69.25546875000003],[-88.22353515625,68.91503906249997],[-87.81357421874986,68.34570312499997],[-87.89267578125,68.24814453125],[-88.34697265624993,68.28828125000001],[-88.313818359375,67.95034179687508],[-87.359375,67.17724609374997],[-86.56079101562491,67.48212890625007],[-85.64316406249992,68.69970703124997],[-84.86757812499994,68.77333984375005],[-85.10664062499995,68.84404296875007],[-84.86220703125,69.07397460937503],[-85.38676757812493,69.23188476562504],[-85.50737304687487,69.84526367187493],[-82.61835937499993,69.69106445312514],[-82.39023437499989,69.60087890625007],[-82.75483398437493,69.49438476562506],[-82.30986328124996,69.41000976562509],[-82.22753906249997,69.24887695312495],[-81.37783203125005,69.18564453125003],[-81.95791015624991,68.88364257812498],[-81.38090820312496,68.85004882812504],[-81.28154296874987,68.65722656250003],[-81.91484374999993,68.4587890625001],[-82.55268554687504,68.44648437500007],[-82.22241210937489,68.145263671875],[-82.0125,68.19389648437496],[-81.97646484374997,67.86201171875001],[-81.2943359375,67.497412109375],[-81.46757812499996,67.0698730468751],[-83.40644531249998,66.37124023437508],[-84.53847656249994,66.97280273437505],[-84.84575195312502,67.02871093750008],[-85.11372070312498,66.90693359375013],[-84.73774414062504,66.93359375000006],[-84.223046875,66.68247070312506],[-83.86904296875,66.2135742187501],[-84.29306640624995,66.29179687500005],[-84.628076171875,66.20771484374998],[-85.603857421875,66.56826171875005],[-86.708154296875,66.52304687500009],[-86.68510742187502,66.36040039062499],[-85.95874023437491,66.11904296875002],[-87.45288085937503,65.33896484375009],[-87.96997070312503,65.34892578124999],[-89.7494140625,65.93603515625006],[-89.88969726562487,65.86855468749997],[-91.42724609374994,65.94790039062497],[-91.04111328124989,65.82983398437509],[-90.98344726562496,65.91923828124999],[-89.92407226562497,65.78027343750011],[-88.97402343749994,65.34829101562502],[-87.02753906249995,65.19809570312498],[-88.10561523437497,64.18330078125001],[-88.81772460937489,63.99223632812499],[-89.20063476562493,64.11376953125006],[-89.13154296874998,63.96850585937494],[-89.61582031249995,64.030615234375],[-89.8113281249999,64.18056640625],[-90.04165039062494,64.14086914062509],[-89.85571289062497,63.9569824218751],[-90.16816406250004,63.978759765625085],[-90.15473632812498,63.68964843749998],[-90.81191406249991,63.580908203125034],[-91.98222656249996,63.82241210937502],[-92.33842773437496,63.787646484375045],[-93.69633789062493,64.14716796875013],[-93.55981445312491,63.865283203125074],[-93.27021484374998,63.840869140625074],[-93.37851562499992,63.94848632812497],[-92.15688476562491,63.691699218750045],[-92.46508789062491,63.55507812500011],[-91.84184570312496,63.69755859374999],[-90.97006835937489,63.442773437500136],[-90.69858398437492,63.06386718750005],[-91.44897460937503,62.804052734375034],[-92.3612792968749,62.81938476562496],[-91.93583984374993,62.59238281250009],[-92.55141601562491,62.546728515625034],[-92.76596679687492,62.34995117187509],[-92.52797851562494,62.16840820312504],[-93.20537109374993,62.364941406250125],[-92.90551757812503,62.21513671874996],[-93.3330566406249,61.93291015625002],[-93.58178710937494,61.94204101562511],[-93.31201171874997,61.76728515625004],[-93.91274414062497,61.48144531250006],[-94.509375,60.60454101562493],[-94.76171874999991,60.498242187500125],[-94.78828124999998,59.26787109374993],[-94.95732421874996,59.068847656250085],[-94.28706054687493,58.716015625000125],[-94.33222656249998,58.297363281250114],[-94.12319335937494,58.73671875000008],[-93.1787597656249,58.72563476562496],[-92.43281249999993,57.3203125],[-92.7981445312499,56.921972656250034],[-90.89746093750003,57.25693359375006],[-88.94848632812489,56.85131835937503],[-88.07509765624997,56.46728515624994],[-87.48242187499991,56.021289062500045],[-85.55932617187491,55.54018554687508],[-85.21801757812491,55.348974609375034],[-85.3652832031249,55.07929687499998],[-85.06093749999997,55.285644531250085],[-83.91059570312493,55.314648437499955],[-82.39326171874998,55.067822265625125],[-82.219384765625,54.8134765625],[-82.42416992187486,54.2445800781251],[-82.14145507812492,53.81762695312497],[-82.29155273437496,53.03071289062507],[-81.5994140624999,52.432617187500085],[-81.82788085937489,52.22421875000009],[-81.46621093749994,52.204492187500136],[-80.588037109375,51.667236328125114],[-80.4433105468749,51.38857421875002],[-80.85122070312497,51.125],[-80.47832031249993,51.30732421874998],[-80.10356445312487,51.282861328125136],[-79.34790039062494,50.76264648437504],[-79.737451171875,51.186279296875],[-79.33867187500002,51.62817382812497],[-79.04052734375003,51.46376953125005],[-78.90317382812495,51.200292968750034],[-78.73134765624994,51.497460937499994],[-78.98164062499993,51.774560546875136],[-78.44809570312495,52.26137695312502],[-78.74414062499994,52.65537109374998],[-79.10034179687497,53.65664062500005],[-78.99604492187493,54.00249023437499],[-79.241796875,54.098876953125085],[-79.14672851562491,54.16923828125002],[-79.71235351562495,54.6718261718751],[-77.77529296874994,55.291259765625],[-76.60405273437496,56.19956054687495],[-76.52558593749998,56.8917968750001],[-76.80981445312497,57.65795898437506],[-77.15678710937496,58.018896484375034],[-78.51508789062493,58.68237304687503],[-77.76069335937498,59.38002929687505],[-77.72617187499995,59.67587890624992],[-77.34907226562495,59.57895507812509],[-77.48530273437493,59.684570312500114],[-77.28920898437494,60.0220214843751],[-77.58588867187498,60.088183593750074],[-77.45288085937497,60.1458007812501],[-77.6814453124999,60.427099609375034],[-77.503564453125,60.54272460937497],[-77.7908203124999,60.63984375000004],[-77.58955078124993,60.808593750000114],[-78.18134765624995,60.81914062499996],[-77.51435546874998,61.55629882812505],[-78.02138671874997,61.8320800781251],[-78.13339843749986,62.28227539062496],[-77.372412109375,62.572509765625114],[-75.81689453124991,62.31586914062507],[-75.7898437499999,62.17958984375002],[-75.3412109375,62.312109375],[-74.63256835937497,62.115673828125125],[-74.6458007812499,62.21113281250004],[-73.70507812499991,62.47314453124994],[-72.68696289062498,62.12456054687499],[-72.771630859375,61.840429687500006],[-72.50556640624998,61.922656250000074],[-72.22612304687487,61.83159179687499],[-72.04003906249991,61.68027343750006],[-72.21586914062502,61.58725585937495],[-71.86611328125,61.68852539062499],[-71.63828124999995,61.6171875],[-71.85439453124991,61.43979492187492],[-71.42270507812489,61.158935546875085],[-70.27929687499991,61.06865234374999],[-69.99243164062491,60.8564941406251],[-69.50332031249994,61.04042968750011],[-69.40473632812493,60.84677734375009],[-69.75947265624998,60.440234375000045],[-69.67373046874994,60.07587890625007],[-70.65483398437496,60.02622070312506],[-69.73393554687493,59.918017578125045],[-69.68188476562489,59.34174804687507],[-69.3440429687499,59.303076171875006],[-69.53164062499994,58.86923828125009],[-69.64838867187493,58.82080078125],[-69.78417968749994,58.95571289062511],[-70.15434570312496,58.76059570312498],[-69.78989257812486,58.689306640625034],[-69.27109374999986,58.88393554687505],[-68.69819335937495,58.904541015625],[-68.38115234374993,58.74350585937506],[-68.22939453124994,58.48457031250007],[-68.35654296874989,58.163232421875136],[-69.04082031249996,57.902490234375136],[-68.41357421874997,58.0517578125],[-68.02104492187493,58.48530273437504],[-67.88828124999989,58.29575195312495],[-68.06386718750005,58.13896484374999],[-67.75595703124992,58.4045898437501],[-67.6782714843749,57.99111328125008],[-67.5696289062499,58.21347656250006],[-66.72216796874991,58.49101562499996],[-66.36240234374989,58.791162109374994],[-66.0023925781249,58.43120117187502],[-66.04306640624995,58.82065429687495],[-65.72099609374996,59.02377929687495],[-65.38354492187494,59.06020507812508],[-65.7,59.21333007812501],[-65.4117187499999,59.31499023437496],[-65.47509765624994,59.47031249999998],[-65.03823242187494,59.38789062500007],[-65.40742187499993,59.53935546875002],[-65.4333984374999,59.776513671874994],[-65.02817382812495,59.77070312500007],[-65.17172851562489,59.90800781249996],[-64.81733398437498,60.3310546875],[-64.49941406250005,60.26826171875001],[-64.41958007812494,60.17138671874997],[-64.76845703124997,60.01210937500005],[-64.28349609374993,60.06406249999998],[-64.22631835937491,59.741210937500085],[-64.05605468750005,59.82255859374996],[-63.7501953124999,59.51259765625005],[-63.945458984374994,59.380175781250074],[-63.775878906249915,59.277148437500045],[-63.539892578124864,59.332861328125034],[-63.41513671874995,59.194384765625074],[-63.97114257812498,59.053808593750034],[-63.24843749999991,59.068310546874955],[-63.28212890624994,58.86738281250007],[-63.05029296874997,58.87817382812494],[-62.87387695312489,58.67246093749998],[-63.537060546874926,58.329931640625006],[-63.209960937499886,58.46694335937502],[-62.593847656249864,58.47402343750005],[-62.81206054687502,58.20039062500007],[-63.26152343749993,58.014697265625074],[-62.486230468749966,58.15405273437506],[-62.30566406249997,57.97226562499995],[-61.95864257812505,57.91176757812508],[-61.9679687499999,57.61191406250009],[-62.495556640624926,57.489208984375125],[-61.92114257812497,57.42080078125005],[-61.977441406249966,57.24794921875002],[-61.33374023437494,57.01059570312498],[-61.37163085937502,56.68081054687511],[-62.497265624999926,56.80170898437504],[-61.73774414062498,56.52602539062502],[-61.940429687499886,56.423583984375114],[-61.42529296874994,56.360644531250074],[-61.713085937499955,56.230957031250114],[-61.364697265624926,56.2160156250001],[-61.30112304687495,56.04716796874999],[-61.4495117187499,55.99570312499998],[-61.08935546874997,55.86635742187511],[-60.74326171874989,55.94145507812493],[-60.56210937499995,55.727001953125125],[-60.341015624999926,55.78466796874997],[-60.40830078124995,55.649560546874994],[-60.19238281249994,55.4809082031251],[-60.617138671874955,55.060205078124994],[-59.75878906249997,55.3095703125],[-59.68906249999989,55.19633789062502],[-59.43789062500005,55.175927734375136],[-59.837792968749994,54.813964843750114],[-59.25957031249996,55.19995117187506],[-58.99711914062496,55.149462890625074],[-58.780175781249994,54.838378906250114],[-58.39814453124998,54.77412109374998],[-57.96245117187493,54.875732421875085],[-57.40449218750004,54.59086914062496],[-57.69926757812496,54.38657226562506],[-58.435205078124966,54.228125],[-58.63320312499999,54.04956054687497],[-59.8230468749999,53.83442382812504],[-60.14492187499994,53.59614257812498],[-60.395410156249994,53.653320312500085],[-60.1002929687499,53.48696289062511],[-60.329492187499966,53.26611328125006],[-58.652050781249926,53.97788085937495],[-57.935986328124955,54.09116210937492],[-58.31748046874989,54.11445312500007],[-58.192089843749926,54.228173828125136],[-57.4160644531249,54.162744140625136],[-57.134960937499926,53.79184570312506],[-57.524072265624966,53.61142578125006],[-57.331738281249955,53.469091796875034],[-56.84086914062496,53.73945312500004],[-56.46499023437505,53.76503906250011],[-55.96611328125002,53.4711425781251],[-55.79794921874995,53.211962890625045],[-55.80283203124989,52.64316406249998],[-56.324902343749926,52.54453124999998],[-55.74648437499994,52.4745605468751],[-55.7771484374999,52.3642578125],[-56.01171874999997,52.394482421875125],[-55.695214843749994,52.13779296875006],[-56.97597656250005,51.45766601562505],[-58.510351562500006,51.295068359375136],[-59.88632812499992,50.316406250000085],[-61.72485351562503,50.10405273437499],[-61.91953124999989,50.2328613281251],[-62.71542968749995,50.30166015625008],[-66.49550781249991,50.2118652343751],[-66.94116210937503,49.993701171875045],[-67.37202148437495,49.348437500000045],[-68.28193359374998,49.197167968750136],[-69.67387695312496,48.19916992187504],[-71.01826171874993,48.455615234375045],[-69.86552734374993,48.17226562500005],[-69.775,48.09809570312504],[-69.9944335937499,47.73989257812508],[-70.70585937499996,47.13979492187505],[-71.26777343749995,46.79594726562499],[-71.87958984374998,46.68681640624996],[-72.98100585937493,46.209716796875085],[-73.4766113281249,45.738232421874955],[-74.03784179687494,45.501855468750136],[-74.31508789062494,45.531054687500045],[-73.97382812499995,45.345117187499994],[-74.70888671874997,45.0038574218751]]],[[[-96.78232421874998,72.93662109375],[-97.0927734375,72.99692382812503],[-96.86240234374995,73.18881835937506],[-96.78232421874998,72.93662109375]]],[[[-114.52153320312502,72.592919921875],[-113.57807617187501,72.65209960937506],[-113.2923828125,72.94980468750003],[-112.75361328125001,72.98603515624995],[-111.26972656249994,72.71372070312498],[-111.895166015625,72.35610351562497],[-111.67509765625002,72.30014648437503],[-110.20512695312495,72.66127929687497],[-110.66083984374998,73.00820312500002],[-110.00844726562494,72.983642578125],[-108.75498046875002,72.55107421874999],[-108.18823242187501,71.72377929687502],[-107.812841796875,71.62617187500004],[-107.30600585937496,71.89467773437502],[-108.23740234374999,73.14990234375003],[-108.029052734375,73.34873046875003],[-106.48212890624998,73.19619140624997],[-105.41513671874995,72.788330078125],[-104.38593749999997,71.57695312500005],[-104.51479492187502,71.06425781250005],[-103.58457031249995,70.63085937500003],[-103.07719726562497,70.50883789062505],[-103.04956054687503,70.65507812499999],[-101.67631835937495,70.27827148437495],[-101.56240234375001,70.135009765625],[-101.04267578125,70.11079101562504],[-100.98237304687497,69.67988281250001],[-101.483837890625,69.85019531250006],[-101.64765624999997,69.69853515625007],[-102.18212890624997,69.845947265625],[-102.59589843749997,69.71791992187502],[-102.62109374999996,69.55151367187506],[-103.464892578125,69.64448242187498],[-103.04892578124999,69.47177734375006],[-103.12021484374995,69.20458984374997],[-102.44677734374997,69.476318359375],[-102.04594726562493,69.46484374999997],[-101.85712890625001,69.02397460937505],[-102.89506835937499,68.8236328125],[-104.57143554687501,68.87211914062502],[-105.105859375,68.92041015625],[-105.019580078125,69.08125],[-106.27016601562497,69.19458007812497],[-106.65908203124997,69.439599609375],[-107.43989257812497,69.00214843749995],[-108.36499023437497,68.93476562499998],[-109.47211914062501,68.67670898437498],[-113.12773437500002,68.49414062500003],[-113.61684570312501,68.8384765625],[-113.69414062499995,69.19501953124998],[-115.61811523437495,69.28295898437506],[-116.51347656249993,69.42460937500005],[-117.19541015624995,70.05405273437503],[-114.59233398437497,70.31245117187498],[-112.63789062499997,70.225244140625],[-111.63256835937497,70.30883789062497],[-113.75727539062503,70.69072265625005],[-115.99091796874997,70.586279296875],[-117.58706054687498,70.62954101562502],[-118.2640625,70.888330078125],[-118.26909179687493,71.03471679687505],[-115.30341796874997,71.49370117187505],[-117.93564453125003,71.39208984375003],[-118.22646484374995,71.46708984375005],[-117.742333984375,71.65932617187502],[-118.58300781250003,71.64902343749998],[-118.98769531249997,71.7642578125],[-118.94462890624997,71.98554687499995],[-118.21347656249998,72.26289062499998],[-118.481298828125,72.42768554687498],[-118.13310546874995,72.63281250000003],[-114.63823242187499,73.37265625000003],[-114.20639648437495,73.29780273437495],[-114.05170898437497,73.07099609375004],[-114.52153320312502,72.592919921875]]],[[[-105.28891601562499,72.919921875],[-106.92153320312497,73.479833984375],[-106.61396484375001,73.69560546875002],[-105.31796874999995,73.76713867187502],[-104.5875,73.57807617187495],[-104.62172851562495,73.3111328125],[-105.28891601562499,72.919921875]]],[[[-79.53730468749998,73.65449218749998],[-78.2865234375,73.66582031250007],[-77.20654296874997,73.49956054687505],[-76.18339843749999,72.84306640625005],[-77.83593750000003,72.89682617187498],[-79.3193359375,72.75771484375],[-79.820703125,72.82631835937502],[-80.18330078124995,73.22465820312499],[-80.77641601562502,73.33417968750001],[-80.84887695312503,73.72124023437499],[-79.53730468749998,73.65449218749998]]],[[[-86.58935546874997,71.01079101562507],[-85.64384765624999,71.15244140624998],[-85.09487304687497,71.15195312500006],[-84.82373046874997,71.02861328125005],[-84.69941406249995,71.63144531250003],[-85.33906249999998,71.69726562500003],[-85.91162109375,71.98652343749998],[-85.321875,72.23315429687506],[-84.28374023437499,72.04448242187499],[-84.84199218749995,72.30815429687505],[-84.62304687500003,72.37656250000003],[-85.34111328124993,72.42153320312497],[-85.64990234374997,72.72216796875003],[-85.26210937500002,72.95400390625],[-84.25664062499999,72.79672851562503],[-85.454736328125,73.10546875000003],[-84.41606445312496,73.45649414062495],[-83.781884765625,73.41689453125],[-83.72983398437495,73.57587890624995],[-81.946142578125,73.72983398437506],[-81.40615234374997,73.634521484375],[-80.27724609375,72.77016601562502],[-81.229345703125,72.31171874999998],[-80.61147460937497,72.450830078125],[-80.925146484375,71.90766601562501],[-80.18193359374996,72.20878906250007],[-79.884375,72.17719726562501],[-80.10893554687499,72.33217773437497],[-79.83129882812503,72.44628906250003],[-79.000244140625,72.27202148437507],[-79.00781250000003,72.04291992187501],[-78.58510742187497,71.880615234375],[-78.86274414062495,72.100830078125],[-78.69926757812496,72.35141601562498],[-77.51650390624997,72.17778320312505],[-78.48427734374994,72.47060546875002],[-77.75322265624996,72.72475585937502],[-75.70429687499998,72.57153320312497],[-75.05268554687493,72.22636718749999],[-75.92280273437501,71.71723632812501],[-74.90317382812503,72.10048828125002],[-74.20932617187498,71.978662109375],[-74.31572265624999,71.84267578125],[-75.20478515625001,71.70913085937497],[-74.70078125,71.67558593750005],[-74.99619140624998,71.21811523437503],[-74.48808593750002,71.64838867187501],[-73.8140625,71.77143554687495],[-74.197265625,71.404150390625],[-73.71284179687498,71.58759765624998],[-73.18061523437501,71.282861328125],[-73.27822265625,71.53798828125],[-72.901953125,71.67778320312507],[-71.64067382812499,71.51625976562502],[-71.22939453124997,71.33876953125],[-71.49501953124997,71.10512695312502],[-71.93793945312498,71.09428710937502],[-72.63271484374994,70.83076171874998],[-71.74252929687495,71.046875],[-71.370849609375,70.97514648437499],[-70.82607421874994,71.10874023437503],[-70.67265625,71.05219726562498],[-70.76171874999997,70.79223632812503],[-71.89018554687502,70.43154296875002],[-71.27587890625,70.50029296874999],[-71.42944335937503,70.12778320312503],[-70.97978515624999,70.5810546875],[-69.94980468750003,70.84501953125005],[-68.49575195312502,70.61025390625],[-68.363525390625,70.48125],[-70.05771484375,70.042626953125],[-68.77822265625,70.20356445312501],[-69.00830078124997,69.97895507812501],[-68.74404296874997,69.94140625],[-68.05908203124997,70.317236328125],[-67.36367187499994,70.03442382812503],[-67.22163085937495,69.73071289062506],[-68.02041015625,69.77006835937499],[-69.25078124999999,69.51191406249998],[-68.51303710937498,69.57729492187497],[-67.236962890625,69.460107421875],[-66.71674804687495,69.31186523437498],[-66.70742187500002,69.16821289062503],[-68.40629882812499,69.23222656250002],[-69.040625,69.09799804687503],[-68.41552734375,69.17207031250001],[-67.8326171875,69.06596679687499],[-67.88320312500002,68.78398437499999],[-69.31909179687497,68.85698242187505],[-68.21040039062495,68.702978515625],[-67.9384765625,68.524169921875],[-66.74272460937502,68.45776367187497],[-67.032958984375,68.32607421874997],[-66.923095703125,68.06572265625005],[-66.72900390624997,68.12900390625006],[-66.66269531249995,68.03442382812497],[-66.63095703124998,68.21064453124998],[-66.21240234374997,68.280419921875],[-66.44394531249998,67.83383789062506],[-65.94238281250003,68.07094726562505],[-65.86435546875003,67.92285156249997],[-65.50908203124996,67.96826171875],[-65.40126953125002,67.67485351562499],[-65.41533203124996,67.87924804687498],[-64.92231445312495,68.03164062500002],[-65.02109375,67.78754882812495],[-64.63779296875,67.84023437500002],[-63.850195312500034,67.56606445312502],[-64.00795898437502,67.34731445312497],[-64.69995117187494,67.35053710937501],[-63.83623046874993,67.26411132812498],[-63.59160156250002,67.3775390625],[-63.040136718750034,67.235009765625],[-63.70156249999994,66.82236328125003],[-62.962304687499966,66.94926757812505],[-62.37973632812495,66.90537109375],[-62.12358398437499,67.046728515625],[-61.35341796874994,66.689208984375],[-61.52783203124994,66.55810546875003],[-62.12333984374993,66.64306640625003],[-61.57080078125,66.37290039062506],[-61.95634765624993,66.30932617187497],[-62.553125,66.40683593750003],[-62.53359374999994,66.22700195312498],[-61.99160156250002,66.03530273437502],[-62.624121093750006,66.01625976562505],[-62.381982421874966,65.83330078124999],[-62.65888671874998,65.63994140625002],[-63.16894531249997,65.65732421875],[-63.45874023437494,65.85302734375],[-63.42089843749997,65.70859374999998],[-63.651074218749955,65.66098632812506],[-63.33745117187493,65.61674804687502],[-63.36337890624998,65.22973632812503],[-63.606591796874966,64.92807617187503],[-64.345703125,65.17241210937499],[-64.26967773437497,65.40078124999997],[-64.55507812500002,65.1166015625],[-65.401611328125,65.764013671875],[-64.44536132812496,66.31713867187497],[-65.0044921875,66.07773437500003],[-65.82573242187499,65.996923828125],[-65.65634765625003,66.204736328125],[-66.06372070312497,66.13271484374997],[-66.986328125,66.62749023437505],[-67.07685546874995,66.52548828125006],[-67.30732421874993,66.5697265625],[-67.22539062499993,66.31025390624998],[-67.88339843749995,66.46743164062502],[-67.18320312499995,66.03442382812503],[-67.350439453125,65.92973632812502],[-67.82802734374997,65.96518554687503],[-68.45991210937498,66.249267578125],[-68.74892578125,66.200048828125],[-68.21718750000002,66.078857421875],[-68.18671874999993,65.87099609375002],[-67.86645507812497,65.773681640625],[-67.936767578125,65.56489257812501],[-67.56962890624999,65.64355468749997],[-67.11796874999999,65.44038085937495],[-67.3365234375,65.34658203125005],[-66.69741210937502,64.81518554687506],[-66.63549804687503,65.00034179687503],[-66.21464843749999,64.72241210937497],[-65.93852539062496,64.88574218750003],[-65.2748046875,64.63154296875004],[-65.52934570312499,64.50478515624997],[-65.074609375,64.43666992187502],[-65.21298828125003,64.30327148437502],[-65.580322265625,64.29384765624997],[-65.16987304687495,64.02817382812503],[-64.67846679687503,64.027978515625],[-64.79814453124999,63.91596679687498],[-64.4109375,63.70634765625002],[-64.66464843749995,63.24536132812497],[-65.19184570312498,63.764257812500006],[-65.06894531249998,63.26347656250002],[-64.67236328125003,62.921972656250006],[-65.16279296875001,62.93261718750003],[-65.10849609374998,62.62646484375],[-66.22402343749994,63.10717773437497],[-66.228662109375,62.99096679687503],[-66.41445312500002,63.027197265625034],[-66.65498046874998,63.264746093750006],[-66.69746093749993,63.069531249999955],[-67.89326171874993,63.733740234375006],[-67.72255859374997,63.422753906249966],[-68.49375,63.725488281249994],[-68.91108398437498,63.703222656250006],[-68.141259765625,63.17231445312501],[-67.67597656249998,63.093554687500045],[-67.73696289062497,63.00957031249999],[-65.98017578125001,62.20888671875002],[-66.12387695312498,61.89306640625],[-68.53588867187503,62.25561523437506],[-69.12558593749998,62.423974609374966],[-69.604736328125,62.76772460937502],[-70.23613281250002,62.76337890625001],[-70.801416015625,62.91049804687506],[-71.10576171874999,63.00224609375002],[-70.94604492187497,63.12070312499998],[-71.34726562499998,63.066113281249955],[-71.99223632812493,63.41616210937505],[-71.380859375,63.580322265625],[-72.29013671874995,63.72797851562498],[-72.17426757812498,63.893408203125006],[-72.49843749999994,63.82348632812497],[-73.45454101562495,64.39926757812503],[-73.27128906250002,64.58251953125],[-73.91035156249998,64.578125],[-74.064794921875,64.42465820312498],[-74.13046874999998,64.6078125],[-74.46123046874996,64.64467773437505],[-74.68139648437497,64.8306640625],[-74.91943359374997,64.76552734374997],[-74.69472656250002,64.49658203124997],[-75.71503906249995,64.52436523437495],[-75.76669921875,64.39194335937498],[-76.85615234374998,64.23764648437498],[-77.76049804687503,64.36015624999999],[-78.04521484374993,64.499267578125],[-78.09560546875,64.93925781250002],[-77.36088867187496,65.19653320312503],[-77.32670898437493,65.453125],[-75.82832031249993,65.22705078125003],[-75.45209960937495,64.84160156250002],[-75.35712890624995,65.00874023437495],[-75.79868164062503,65.297509765625],[-75.16630859374999,65.28393554687497],[-74.13847656250002,65.50346679687502],[-73.55078125000003,65.48525390625005],[-74.41640624999997,66.16708984375003],[-73.03325195312502,66.72817382812505],[-72.78881835937494,67.030615234375],[-72.22001953124999,67.25429687500002],[-73.28447265624993,68.35698242187505],[-73.82050781249998,68.36293945312502],[-73.82211914062495,68.68598632812501],[-74.11796875000002,68.70092773437506],[-73.9892578125,68.54863281250002],[-74.2701171875,68.54121093750001],[-74.89296875,68.80815429687505],[-74.71669921874997,69.04550781249998],[-76.58505859375,68.69873046875003],[-76.55722656250003,69.00947265625001],[-75.9537109375,69.03081054687502],[-75.64775390625002,69.212548828125],[-76.46494140624995,69.46943359375001],[-76.23408203125001,69.66210937500003],[-76.742333984375,69.57290039062497],[-77.08994140625,69.63510742187503],[-76.85859374999995,69.775390625],[-77.591650390625,69.84560546875002],[-77.77402343750003,70.23852539062503],[-78.28281250000003,70.229150390625],[-79.06640624999997,70.60356445312507],[-79.40522460937498,70.40073242187503],[-78.86284179687499,70.24189453125001],[-78.88964843750003,69.97749023437495],[-79.51542968749996,69.88759765625005],[-81.65195312500003,70.09462890625002],[-80.92172851562503,69.73090820312501],[-81.56469726562503,69.94272460937498],[-82.29384765624997,69.83691406250003],[-83.14995117187493,70.00908203125002],[-83.85908203124998,69.96274414062498],[-85.43237304687497,70.11137695312507],[-85.780029296875,70.03666992187505],[-86.32202148437503,70.14541015625],[-86.396875,70.46533203124997],[-87.838134765625,70.24658203125],[-88.78271484374997,70.49448242187503],[-89.45590820312498,71.06171874999995],[-87.84492187499995,70.94438476562505],[-87.14008789062498,71.01162109374997],[-89.80537109374993,71.46230468750005],[-89.86152343750001,72.41191406250005],[-88.70517578124998,73.40327148437495],[-87.71977539062496,73.72290039062497],[-85.95078124999998,73.85014648437505],[-84.94677734375,73.72163085937498],[-86.00053710937499,73.31254882812505],[-86.65629882812502,72.72402343750005],[-86.21845703124998,71.89912109375004],[-85.02338867187495,71.35322265625001],[-86.58935546874997,71.01079101562507]]],[[[-100.00190429687497,73.9458984375],[-99.15795898437499,73.73159179687497],[-97.66997070312499,73.88774414062499],[-97.1705078125,73.82485351562497],[-97.001708984375,73.66650390625003],[-97.62587890624997,73.50229492187498],[-97.27250976562502,73.38681640624998],[-98.42177734375002,72.94101562500003],[-97.63632812499998,73.02763671874999],[-97.128125,72.62758789062502],[-96.59208984374996,72.71025390624999],[-96.44560546874996,72.55244140624998],[-96.80146484374998,72.32241210937502],[-96.61342773437494,71.83383789062506],[-97.58227539062497,71.62968750000005],[-98.18134765624998,71.66245117187503],[-98.32270507812501,71.85234375000002],[-98.19863281249994,71.44086914062501],[-98.66289062499993,71.302099609375],[-99.22363281249996,71.387109375],[-100.594482421875,72.15234375000003],[-101.20854492187495,72.31699218749998],[-101.72392578124996,72.31489257812501],[-102.70874023437496,72.76450195312503],[-102.20400390624998,73.077294921875],[-101.27319335937497,72.7216796875],[-100.48476562500002,72.77294921874997],[-100.395703125,72.97700195312498],[-100.128125,72.90668945312495],[-100.53637695312497,73.19785156250003],[-99.82514648437503,73.2138671875],[-100.36611328125001,73.359033203125],[-100.88935546875003,73.27534179687501],[-101.52319335937501,73.48637695312502],[-100.97578124999995,73.59975585937502],[-100.5216796875,73.44931640625],[-100.96298828125002,73.79140625],[-99.99111328125,73.79516601562503],[-100.00190429687497,73.9458984375]]],[[[-98.270361328125,73.86850585937498],[-98.97392578124997,73.81206054687502],[-99.4169921875,73.89541015625002],[-97.69824218749997,74.10869140625005],[-98.270361328125,73.86850585937498]]],[[[-93.17084960937498,74.16098632812506],[-92.22270507812502,73.97236328124998],[-90.62744140625,73.95170898437505],[-90.38139648437496,73.82475585937502],[-92.11791992187497,72.75380859375],[-94.21132812499997,72.75693359375],[-93.77055664062496,72.66821289062506],[-93.55517578124994,72.42114257812497],[-94.03754882812498,72.02875976562498],[-95.00786132812496,72.01279296875],[-95.60214843749998,72.88447265624995],[-95.63291015625003,73.69545898437497],[-94.697607421875,73.66357421874997],[-95.134130859375,73.88125],[-94.97353515625,74.04140625000002],[-93.17084960937498,74.16098632812506]]],[[[-119.73632812499997,74.11264648437498],[-119.20595703125002,74.19799804687503],[-119.11796874999995,74.01552734375],[-118.54399414062499,74.24462890625003],[-117.51484375000001,74.23173828124999],[-115.51069335937501,73.61875],[-115.446875,73.43886718750002],[-118.96157226562497,72.68413085937499],[-119.51284179687501,72.30268554687501],[-120.17988281250001,72.21264648437506],[-120.61933593750001,71.50576171875002],[-121.47216796875003,71.38901367187503],[-121.74936523437502,71.44477539062501],[-123.09565429687503,71.09379882812502],[-124.00776367187494,71.67744140624998],[-125.29667968749999,71.973046875],[-125.84531250000002,71.978662109375],[-123.79726562499997,73.76816406250003],[-124.69624023437497,74.34819335937499],[-121.50415039062497,74.54511718749998],[-119.56264648437494,74.23281250000002],[-119.73632812499997,74.11264648437498]]],[[[-97.35551757812496,74.52631835937495],[-97.75,74.51054687500005],[-97.41650390624994,74.62656250000003],[-97.35551757812496,74.52631835937495]]],[[[-95.306640625,74.50541992187505],[-95.850732421875,74.58247070312504],[-95.51020507812498,74.63676757812499],[-95.306640625,74.50541992187505]]],[[[-104.11992187499995,75.03632812500004],[-104.88740234374998,75.14775390624999],[-104.34619140624996,75.42993164062503],[-103.64350585937497,75.18657226562499],[-104.11992187499995,75.03632812500004]]],[[[-93.54257812499995,75.0279296875],[-93.57309570312495,74.66884765625005],[-94.53452148437498,74.63671874999997],[-96.59960937499997,75.03178710937499],[-95.95463867187493,75.44379882812501],[-94.878173828125,75.63002929687502],[-93.90908203125002,75.42250976562502],[-93.54257812499995,75.0279296875]]],[[[-96.07856445312495,75.510107421875],[-96.91513671875003,75.37968749999999],[-96.98281249999997,75.50981445312505],[-96.367822265625,75.65463867187506],[-96.07856445312495,75.510107421875]]],[[[-94.52656249999995,75.74931640624999],[-94.901220703125,75.93076171875],[-94.53789062499996,75.99643554687506],[-94.52656249999995,75.74931640624999]]],[[[-118.328125,75.57968749999998],[-118.81713867187503,75.52211914062497],[-119.39458007812499,75.617333984375],[-117.63369140624998,76.11508789062498],[-118.328125,75.57968749999998]]],[[[-79.0630859375,75.92587890624998],[-79.63876953124995,75.84291992187505],[-79.00932617187499,76.14589843750005],[-79.0630859375,75.92587890624998]]],[[[-102.22734374999995,76.014892578125],[-102.00800781250003,75.93940429687498],[-102.57958984375003,75.78022460937498],[-103.31474609374996,75.76420898437499],[-103.04150390624999,75.91884765624997],[-103.98525390624997,75.93310546875003],[-103.80078124999994,76.03701171874997],[-104.24248046874996,76.04697265625006],[-104.35063476562497,76.18232421875001],[-102.72802734374999,76.30703125],[-102.22734374999995,76.014892578125]]],[[[-104.02285156249998,76.58310546875003],[-103.05131835937495,76.44985351562497],[-103.31137695312499,76.34755859375],[-104.35751953124995,76.33461914062502],[-104.58569335937499,76.60649414062499],[-104.07451171875003,76.66611328124998],[-104.02285156249998,76.58310546875003]]],[[[-97.70092773437497,76.46650390624998],[-97.89052734374997,75.7603515625],[-97.40751953124999,75.67250976562497],[-97.33603515624998,75.41982421875],[-97.65332031249997,75.50776367187498],[-97.87822265624996,75.41611328125003],[-97.67431640624997,75.127294921875],[-98.04531249999997,75.20083007812497],[-98.12094726562503,75.03271484375],[-100.234375,75.00771484374997],[-100.48349609374995,75.18842773437501],[-100.14570312499995,75.24614257812505],[-100.71191406250003,75.40634765625],[-99.19458007812499,75.698388671875],[-102.58740234375001,75.51367187500003],[-102.79750976562501,75.59965820312505],[-102.14472656249998,75.87504882812502],[-100.97280273437498,75.79843750000003],[-101.414990234375,75.84584960937502],[-101.87211914062496,76.08310546875003],[-101.52895507812495,76.21728515625003],[-102.1046875,76.33120117187505],[-101.41518554687495,76.42490234375003],[-99.86547851562499,75.92421875],[-100.11284179687502,76.11723632812507],[-99.54106445312497,76.14628906250005],[-100.41420898437495,76.242529296875],[-99.97773437500003,76.31245117187495],[-100.82973632812497,76.52387695312495],[-99.8140625,76.6322265625],[-98.89033203125,76.46557617187497],[-98.71083984374994,76.69384765625003],[-97.70092773437497,76.46650390624998]]],[[[-101.22612304687497,76.57934570312497],[-101.61308593749995,76.60458984375006],[-100.26914062499998,76.73413085937497],[-101.22612304687497,76.57934570312497]]],[[[-108.29238281250001,76.05712890625],[-107.72348632812502,75.99541015625002],[-108.020703125,75.80478515625],[-107.21621093749997,75.89155273437501],[-106.91352539062503,75.67963867187501],[-106.67700195312499,76.02373046875002],[-105.63266601562493,75.94536132812505],[-105.51948242187497,75.63237304687505],[-106.09262695312495,75.08945312500003],[-107.15341796874996,74.9271484375],[-108.47475585937495,74.94721679687501],[-108.83129882812501,75.06489257812498],[-112.51933593749997,74.41684570312503],[-113.67158203124997,74.45302734375005],[-114.31269531250003,74.71508789062506],[-112.835986328125,74.9755859375],[-111.67109375,75.01943359374997],[-111.09345703125001,75.25629882812498],[-113.71176757812499,75.06860351562503],[-113.85332031249996,75.259375],[-113.46708984374996,75.41611328125003],[-114.01650390624998,75.43427734375001],[-114.16845703124994,75.23950195312503],[-114.51381835937497,75.27548828125],[-114.45175781250002,75.08789062499997],[-115.02011718749999,74.97617187500003],[-115.41318359374995,75.11499023437497],[-115.72885742187496,74.968115234375],[-116.47607421874996,75.17177734375],[-117.56523437499997,75.23334960937504],[-117.25761718750002,75.45952148437502],[-116.07714843749996,75.49296874999999],[-115.14184570312501,75.67851562500005],[-116.42563476562498,75.58535156249997],[-117.16362304687496,75.64487304687503],[-116.80214843749995,75.77158203124998],[-114.99150390625002,75.896337890625],[-116.66455078124999,75.95756835937505],[-116.20986328125,76.19443359374998],[-114.77861328124999,76.17260742187497],[-115.82216796874997,76.27001953125003],[-114.99848632812503,76.4974609375],[-114.19394531249999,76.45146484375005],[-113.82348632812501,76.20683593750002],[-112.69760742187496,76.20170898437505],[-111.05268554687495,75.54853515625001],[-108.94716796875,75.54179687499999],[-108.94477539062495,75.69897460937503],[-109.8705078125,75.929052734375],[-109.48681640624999,76.14467773437497],[-110.31445312500001,76.369384765625],[-109.09824218749996,76.811865234375],[-108.46699218749997,76.73759765625007],[-108.29238281250001,76.05712890625]]],[[[-89.72646484374994,76.50742187499998],[-90.55625,76.73457031249998],[-90.13632812499995,76.83696289062505],[-89.69541015625,76.74116210937498],[-89.72646484374994,76.50742187499998]]],[[[-113.56069335937494,76.74326171874998],[-114.83525390624999,76.79467773437497],[-113.89165039062495,76.89487304687503],[-113.56069335937494,76.74326171874998]]],[[[-94.29497070312493,76.91245117187498],[-93.23002929687496,76.77026367187497],[-93.53457031250002,76.44770507812498],[-92.99536132812494,76.62041015624999],[-91.305029296875,76.68076171875003],[-90.54262695312494,76.495751953125],[-91.41508789062496,76.45585937500005],[-89.28452148437498,76.30161132812506],[-89.40659179687498,76.18916015624998],[-91.40732421874998,76.22006835937506],[-89.27758789062497,75.79506835937497],[-89.64604492187499,75.5650390625],[-88.91669921874998,75.45395507812503],[-88.64497070312495,75.65844726562503],[-88.201318359375,75.51201171875005],[-87.72973632812503,75.57563476562495],[-87.53911132812502,75.48486328125003],[-87.25693359374998,75.61772460937499],[-85.95146484374993,75.39501953125],[-85.97299804687498,75.5287109375],[-83.931982421875,75.81894531250003],[-83.23710937499993,75.75083007812503],[-82.153662109375,75.83105468750003],[-80.32197265624998,75.62910156250001],[-79.50908203125002,75.25981445312499],[-80.38198242187494,75.03417968750003],[-79.40141601562502,74.91762695312502],[-79.944482421875,74.83364257812505],[-80.34775390624998,74.90297851562505],[-80.26274414062499,74.58447265625],[-81.94018554687494,74.47270507812505],[-82.73579101562495,74.53027343749997],[-83.5220703125,74.90146484375],[-83.53188476562494,74.58569335937497],[-84.42553710937503,74.50810546875007],[-85.06142578125,74.60693359375003],[-85.133447265625,74.517431640625],[-85.44233398437495,74.6005859375],[-85.80800781249994,74.49897460937498],[-88.42304687499995,74.49414062499997],[-88.53496093749993,74.83173828125001],[-89.55869140624995,74.55473632812507],[-90.55327148437499,74.61274414062498],[-90.88022460937498,74.8177734375],[-91.13457031250002,74.64985351562498],[-91.54912109375002,74.65556640624999],[-92.3892578125,75.263330078125],[-92.18510742187499,75.84653320312498],[-93.09174804687495,76.35400390624997],[-95.27387695312498,76.26440429687503],[-96.03969726562494,76.48671875000002],[-95.65097656249998,76.58466796874998],[-96.88071289062495,76.73833007812505],[-96.40156249999995,76.79721679687503],[-96.75830078124997,76.97177734374998],[-95.84951171875002,77.06621093750005],[-94.29497070312493,76.91245117187498]]],[[[-115.55126953125001,77.36328125],[-116.32919921874996,77.137060546875],[-115.81005859374999,76.939111328125],[-116.25273437500002,76.90141601562505],[-115.94628906250003,76.71127929687503],[-116.99921874999995,76.531591796875],[-117.23359375000001,76.28154296875005],[-117.99296874999999,76.40581054687505],[-117.88081054687497,76.80507812500005],[-118.79140624999994,76.51298828125005],[-119.080712890625,76.12407226562505],[-119.58037109375,76.32651367187498],[-119.52612304687496,75.99721679687505],[-119.91289062499997,75.85883789062501],[-120.40888671874995,75.82563476562498],[-120.84838867187496,76.18266601562499],[-121.21347656249999,75.98369140625005],[-122.53305664062498,75.95092773437503],[-122.59272460937497,76.16206054687495],[-122.90278320312498,76.13471679687498],[-122.51938476562503,76.353173828125],[-121.56113281250003,76.453466796875],[-119.09018554687496,77.30507812500002],[-116.84355468749995,77.33955078124995],[-117.03974609374995,77.46513671875005],[-116.51132812500003,77.54760742187497],[-115.55126953125001,77.36328125]]],[[[-89.83325195312503,77.26762695312505],[-90.22827148437503,77.21245117187499],[-90.99321289062499,77.32949218750002],[-91.01904296875003,77.64389648437503],[-89.83896484375003,77.49140624999998],[-89.83325195312503,77.26762695312505]]],[[[-104.55815429687497,77.14174804687497],[-105.21508789062496,77.18208007812501],[-106.03559570312495,77.73984375000006],[-105.58789062499997,77.73598632812497],[-104.54223632812501,77.33774414062503],[-104.55815429687497,77.14174804687497]]],[[[-95.484375,77.79199218750003],[-93.30097656249995,77.73979492187505],[-93.54394531249997,77.466650390625],[-95.98706054687497,77.484130859375],[-96.19458007812497,77.70053710937503],[-95.484375,77.79199218750003]]],[[[-101.6935546875,77.69658203125005],[-102.37783203124995,77.728125],[-102.44770507812498,77.88061523437506],[-101.19321289062493,77.82978515624998],[-101.00205078124998,77.73510742187497],[-101.6935546875,77.69658203125005]]],[[[-113.83247070312497,77.75463867187506],[-114.28720703124998,77.72148437500005],[-114.98041992187498,77.91542968750002],[-114.33037109374997,78.07753906250002],[-113.83247070312497,77.75463867187506]]],[[[-110.45805664062496,78.10322265625001],[-109.62226562499995,78.07475585937499],[-110.865625,77.834130859375],[-110.15273437500002,77.76293945312506],[-110.19848632812501,77.52451171874998],[-112.37265625000002,77.36411132812498],[-113.16435546875002,77.5302734375],[-113.21518554687498,77.90351562500001],[-110.45805664062496,78.10322265625001]]],[[[-109.81596679687499,78.65039062500003],[-109.48447265624995,78.31640625],[-111.16918945312499,78.38627929687505],[-111.51748046874997,78.27470703125005],[-112.13125,78.366064453125],[-113.22304687499998,78.29790039062505],[-112.85585937499997,78.46684570312502],[-110.877587890625,78.73505859375004],[-109.81596679687499,78.65039062500003]]],[[[-96.20449218749994,78.53129882812499],[-94.91538085937495,78.39052734375002],[-95.32924804687497,78.22504882812495],[-94.93427734374998,78.07563476562498],[-96.98964843749994,77.80600585937503],[-97.65815429687498,78.090625],[-96.944677734375,78.15185546874997],[-98.04951171874995,78.325927734375],[-98.33261718749998,78.77353515625006],[-97.38232421875,78.78291015625001],[-96.20449218749994,78.53129882812499]]],[[[-103.42602539062499,79.315625],[-102.57617187499996,78.87939453125003],[-101.70366210937502,79.07890625000002],[-101.128125,78.80166015625002],[-100.43549804687503,78.8203125],[-99.60942382812495,78.58305664062507],[-99.16640625000002,77.85693359375003],[-100.27465820312503,77.83271484374995],[-101.07412109375001,78.19384765625],[-102.60698242187502,78.24892578125002],[-102.73134765624995,78.37104492187495],[-103.94658203124999,78.26000976562497],[-104.76357421874998,78.35166015625],[-104.90961914062498,78.55263671875],[-103.57050781250003,78.53984375000005],[-104.02084960937502,78.63491210937497],[-103.37158203125,78.73632812500003],[-104.18500976562498,78.78129882812505],[-104.15195312499999,78.989892578125],[-104.89550781249996,78.80815429687502],[-104.74677734375003,79.02709960937503],[-105.53564453124999,79.03251953125007],[-105.51455078124995,79.24248046875002],[-105.38769531249994,79.32358398437503],[-103.42602539062499,79.315625]]],[[[-98.79160156249995,79.98110351562505],[-98.94521484375,79.72407226562498],[-100.05683593749997,79.89824218750005],[-100.05327148437496,80.093359375],[-99.15322265625001,80.12421874999998],[-98.79160156249995,79.98110351562505]]],[[[-91.88554687499999,81.13286132812505],[-90.64301757812498,80.59370117187498],[-89.23559570312494,80.51064453125002],[-88.85732421874997,80.16621093750001],[-88.19990234374998,80.11147460937497],[-88.5248046875,80.41801757812507],[-87.675,80.37211914062505],[-87.92231445312501,80.09770507812499],[-86.97719726562502,79.89423828125001],[-87.29516601562494,79.58017578124998],[-86.33696289062496,79.63496093749995],[-86.00703124999998,79.47944335937498],[-85.6478515625,79.61142578125006],[-85.04213867187497,79.2845703125],[-86.95717773437502,78.97490234375005],[-87.61738281249995,78.67631835937505],[-88.04018554687494,78.99531250000004],[-87.98286132812498,78.53706054687501],[-88.74160156250002,78.58403320312499],[-88.82241210937497,78.18588867187498],[-90.037109375,78.60683593750002],[-89.52568359374999,78.15961914062495],[-90.29721679687495,78.32802734374997],[-90.614404296875,78.14985351562501],[-92.35126953125001,78.312890625],[-92.8482421875,78.46010742187497],[-91.86689453124998,78.54267578125001],[-93.26660156249997,78.60830078124997],[-93.63442382812502,78.75092773437498],[-93.15986328124998,78.77563476562503],[-94.11459960937498,78.92890625000001],[-92.54721679687495,79.28261718750002],[-91.29990234375003,79.372705078125],[-92.82192382812497,79.44990234375001],[-93.93315429687496,79.29072265624998],[-94.11030273437498,79.40156250000001],[-95.10317382812502,79.289892578125],[-95.66289062500002,79.52734374999997],[-94.40185546874997,79.736328125],[-95.73935546874995,79.66015625000003],[-96.58906249999995,79.91665039062497],[-96.77324218749999,80.13579101562502],[-94.64589843749994,80.04873046874997],[-94.26259765625002,80.19487304687499],[-95.40507812499996,80.13500976562506],[-96.39409179687493,80.31503906250003],[-95.549072265625,80.36660156249997],[-95.92695312499998,80.72065429687498],[-93.92792968749995,80.55917968750003],[-95.51474609375003,80.83813476562503],[-94.98051757812499,81.04965820312503],[-93.28671874999998,81.10029296874998],[-94.22011718749997,81.33076171875004],[-93.03466796874997,81.3462890625],[-91.88554687499999,81.13286132812505]]],[[[-69.4888671875,83.01679687499998],[-66.42255859374998,82.92685546875003],[-68.46933593749995,82.65336914062502],[-65.29902343749995,82.79960937500005],[-64.98388671874997,82.90229492187501],[-64.50400390625,82.77841796874998],[-63.641015624999966,82.81259765625003],[-63.246777343749926,82.4501953125],[-62.47519531249995,82.51958007812502],[-61.392480468749994,82.44189453125],[-61.61538085937502,82.18442382812503],[-64.43579101562497,81.74262695312501],[-66.62573242187497,81.61640624999995],[-68.68852539062493,81.29331054687503],[-64.78007812499993,81.49287109375001],[-69.55068359375,80.38325195312498],[-70.71259765625001,80.53959960937505],[-70.264892578125,80.23359374999998],[-72.05595703124996,80.12324218749995],[-70.56840820312493,80.09370117187498],[-71.387841796875,79.76176757812505],[-72.43652343750003,79.69438476562499],[-74.39448242187495,79.87407226562499],[-73.47246093749996,79.7564453125],[-73.36152343750001,79.50400390625],[-75.50341796875,79.41416015625],[-76.898828125,79.5123046875],[-75.60273437499998,79.23955078125005],[-74.48120117187503,79.22949218750006],[-74.64091796874996,79.03554687499997],[-78.58164062499998,79.075],[-77.88276367187498,78.9423828125],[-76.255859375,79.00683593749997],[-74.486328125,78.75009765624998],[-74.87861328124998,78.54482421875],[-76.41611328124995,78.51152343750005],[-75.19345703125,78.327734375],[-75.86596679687497,78.00981445312499],[-78.01259765624997,77.94604492187506],[-78.07617187500003,77.51904296875],[-78.70849609374997,77.34213867187503],[-80.57304687499996,77.31479492187506],[-81.65908203124997,77.52543945312499],[-81.3013671875,77.34404296875007],[-82.056787109375,77.29653320312497],[-81.75634765624997,77.20400390625005],[-79.49726562500001,77.19609375000005],[-78.97919921874998,76.89287109374999],[-78.28886718750002,76.97797851562501],[-77.98330078124994,76.75498046875006],[-78.284326171875,76.57124023437501],[-80.79970703124997,76.173583984375],[-80.97451171874994,76.470068359375],[-81.71738281250003,76.494970703125],[-82.52983398437499,76.723291015625],[-82.23315429687494,76.46582031250003],[-83.88569335937501,76.453125],[-84.22377929687497,76.67534179687499],[-84.27534179687498,76.35654296875006],[-85.141259765625,76.30458984375005],[-86.45371093750003,76.58486328125002],[-86.68022460937499,76.37661132812497],[-87.35419921874998,76.44804687500005],[-87.48979492187499,76.58583984374997],[-87.49755859374997,76.38627929687499],[-88.39599609374997,76.40527343750003],[-88.49584960937497,76.77285156249997],[-88.54580078125002,76.42089843750003],[-89.36962890624997,76.474462890625],[-89.49975585937503,76.82680664062502],[-88.39814453124995,77.10395507812501],[-86.81225585937497,77.18491210937498],[-87.68144531249996,77.43637695312503],[-88.01699218750002,77.78471679687505],[-86.75507812499998,77.86372070312498],[-85.58847656249998,77.46113281250004],[-84.73867187499997,77.36103515624998],[-83.72128906249998,77.41420898437497],[-82.7103515625,77.84951171875002],[-82.5953125,77.99213867187504],[-83.77939453125,77.53261718750002],[-85.28935546874996,77.55903320312498],[-85.54755859374998,77.92768554687495],[-84.61542968749998,78.19570312500002],[-84.22270507812499,78.176025390625],[-84.91035156249993,78.23969726562501],[-84.78320312499997,78.52758789062506],[-85.5859375,78.10957031249998],[-86.21777343750003,78.08120117187497],[-85.92006835937494,78.34287109374998],[-86.91323242187494,78.126806640625],[-87.5517578125,78.17661132812503],[-86.80791015624999,78.77436523437495],[-85.00375976562495,78.912255859375],[-83.27143554687501,78.77031250000002],[-81.75009765624995,78.97578124999995],[-82.43876953125002,78.903662109375],[-84.41201171875002,78.99658203125003],[-84.38359375000002,79.1185546875],[-83.57587890624995,79.05366210937501],[-86.42075195312498,79.84521484374997],[-86.49853515625003,80.25825195312501],[-83.72363281250003,80.22895507812501],[-81.68837890625,79.685791015625],[-80.47592773437498,79.60625],[-80.12446289062495,79.66948242187507],[-81.01015625000002,79.693115234375],[-82.98701171874995,80.32260742187498],[-76.86298828124995,80.86479492187505],[-78.71621093749994,80.95166015624997],[-76.88510742187503,81.43027343750006],[-81.00703125000001,80.6548828125],[-82.88432617187502,80.57753906249997],[-82.22236328124998,80.77231445312503],[-84.41782226562495,80.52675781250002],[-86.250341796875,80.56577148437506],[-86.60307617187499,80.66401367187498],[-85.63930664062494,80.92460937500007],[-83.288818359375,81.14794921875],[-85.780859375,81.03505859375],[-87.32988281250002,80.669775390625],[-88.00366210937497,80.675390625],[-89.16689453125,80.94130859375],[-86.47675781249993,81.03574218750006],[-84.94121093750002,81.28623046875],[-87.27509765624995,81.080810546875],[-89.623046875,81.032470703125],[-89.94731445312499,81.17265625000005],[-89.20869140624998,81.25009765625003],[-89.67368164062503,81.32861328125003],[-87.59702148437498,81.52583007812498],[-88.47905273437502,81.56464843749998],[-90.41630859374996,81.40537109375003],[-89.82167968749997,81.63486328124998],[-91.29238281250002,81.57124023437498],[-91.64755859374998,81.68383789062503],[-88.06318359375001,82.09648437500007],[-87.01821289062502,81.95874023437497],[-86.62680664062495,82.05102539062503],[-85.04482421874997,81.9828125],[-86.615625,82.21855468750007],[-84.89682617187503,82.44941406250001],[-82.63369140625002,82.07729492187497],[-82.53691406250002,82.24726562499995],[-79.465625,81.85112304687499],[-82.44755859374993,82.39501953125003],[-81.68115234375003,82.51865234375],[-82.11684570312497,82.62866210937503],[-80.8625,82.57153320312503],[-81.01015625000002,82.77905273437503],[-78.748779296875,82.67939453124998],[-80.15493164062497,82.91113281250003],[-77.61806640624997,82.89584960937503],[-76.009375,82.53515625],[-75.565625,82.60854492187502],[-77.12490234374994,83.00854492187497],[-74.41416015624995,83.01313476562501],[-72.65869140625,82.72163085937495],[-73.44189453124994,82.90483398437499],[-72.811669921875,83.08120117187502],[-71.98320312499996,83.10141601562498],[-70.94038085937495,82.90224609375],[-71.08481445312498,83.08266601562497],[-69.96992187499995,83.11611328125005],[-69.4888671875,83.01679687499998]]]]},"properties":{"name":"Canada","childNum":110}},{"geometry":{"type":"Polygon","coordinates":[[[9.527658197470123,47.27026989773668],[9.46249431093294,47.19858962254578],[9.46249431093294,47.09010747968864],[9.409458596647225,47.02019676540292],[9.579979133936737,47.05856388629306],[9.580273437500011,47.057373046875],[10.133496093750011,46.851513671875],[10.349414062500017,46.98476562499999],[10.414941406250023,46.964404296874996],[10.45458984375,46.8994140625],[10.452832031250011,46.86494140625],[10.406054687500017,46.73486328125],[10.39794921875,46.6650390625],[10.4306640625,46.550048828125],[10.195507812500011,46.62109375],[10.1375,46.61435546875],[10.087011718750006,46.599902343749996],[10.061230468750011,46.546777343749994],[10.038281250000011,46.483203125],[10.045605468750011,46.447900390624994],[10.081933593750023,46.420751953125],[10.109667968750017,46.362841796874996],[10.128320312500023,46.238232421875],[10.08056640625,46.227978515625],[10.041015625,46.238085937499996],[9.939257812500017,46.36181640625],[9.884472656250011,46.3677734375],[9.787792968750011,46.346044921875],[9.639453125000017,46.2958984375],[9.57958984375,46.29609375],[9.528710937500023,46.306201171874996],[9.427636718750023,46.482324218749994],[9.399316406250023,46.4806640625],[9.304394531250011,46.495556640625],[9.203417968750017,46.21923828125],[9.11874162946429,46.014892578125],[8.97551618303573,45.81677455357143],[8.74961495535715,46.02246372767857],[8.818554687500011,46.0771484375],[8.458398437500023,46.245898437499996],[8.370703125,46.445117187499996],[8.298535156250011,46.40341796875],[8.23193359375,46.341210937499994],[8.08154296875,46.256005859374994],[7.9931640625,46.015917968749996],[7.327929687500017,45.912353515625],[7.129003906250006,45.880419921874996],[7.055761718750006,45.90380859375],[7.02109375,45.92578125],[6.953710937500006,46.017138671874996],[6.897265625000017,46.0517578125],[6.772070312500006,46.16513671875],[6.758105468750017,46.415771484375],[6.578222656250006,46.437353515625],[6.428906250000011,46.430517578125],[6.321875,46.393701171874994],[6.234667968750017,46.3326171875],[6.199414062500011,46.19306640625],[6.086621093750011,46.147021484374996],[6.006640625000017,46.142333984375],[5.971484375000017,46.151220703125],[5.970019531250017,46.214697265625],[6.0361328125,46.238085937499996],[6.095898437500011,46.27939453125],[6.129687500000017,46.5669921875],[6.41015625,46.755419921874996],[6.429003906250017,46.832275390625],[6.45625,46.94833984375],[6.624804687500017,47.004345703125],[6.666894531250023,47.026513671874994],[6.688085937500006,47.058251953124994],[6.820703125000023,47.16318359375],[6.952050781250023,47.2671875],[6.978515625,47.302050781249996],[7.000585937500006,47.322509765625],[7.000585937500006,47.339453125],[6.900390625,47.39423828125],[6.968359375,47.45322265625],[7.136035156250017,47.48984375],[7.343164062500023,47.43310546875],[7.615625,47.592724609375],[8.454003906250023,47.59619140625],[8.559472656250023,47.6240234375],[8.570507812500011,47.63779296875],[8.567089843750011,47.651904296874996],[8.55234375,47.659130859375],[8.451757812500006,47.651806640625],[8.413281250000011,47.6626953125],[8.403417968750006,47.687792968749996],[8.435742187500011,47.731347656249994],[8.572656250000023,47.775634765625],[9.524023437500006,47.52421875],[9.625878906250023,47.467041015625],[9.527539062500011,47.270751953125],[9.527658197470123,47.27026989773668]]]},"properties":{"name":"Switzerland","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-67.28886718749999,-55.776855468749964],[-67.55996093749997,-55.72480468750002],[-67.39736328124997,-55.58515625],[-67.28886718749999,-55.776855468749964]]],[[[-67.07993164062498,-55.15380859374996],[-67.33969726562495,-55.292578124999984],[-67.4947265625,-55.177441406249976],[-68.07001953124995,-55.22109374999999],[-68.30136718750003,-54.98066406250003],[-67.245263671875,-54.977636718750034],[-67.07993164062498,-55.15380859374996]]],[[[-69.70297851562503,-54.91904296875],[-68.90078125000002,-55.01777343750004],[-68.45800781249997,-54.95966796875002],[-68.61328124999997,-55.155566406250045],[-68.28266601562495,-55.25517578125],[-68.04833984375,-55.6431640625],[-68.86704101562498,-55.45019531250003],[-68.89008789062498,-55.2412109375],[-69.19262695312497,-55.171875],[-69.35922851562498,-55.300683593749945],[-69.18085937499995,-55.47480468749998],[-69.41181640624995,-55.44423828124997],[-69.97978515625002,-55.14746093749999],[-69.88442382812494,-54.88203125000001],[-69.70297851562503,-54.91904296875]]],[[[-70.9916015625,-54.86796874999999],[-70.80483398437497,-54.96767578124996],[-70.41752929687493,-54.908886718749976],[-70.29785156249997,-55.11376953124997],[-70.47558593749994,-55.17705078124998],[-71.43720703125001,-54.88925781249997],[-70.9916015625,-54.86796874999999]]],[[[-71.390478515625,-54.03281250000002],[-71.02192382812495,-54.111816406250036],[-71.14326171874998,-54.374023437499986],[-71.473291015625,-54.23115234375001],[-71.94853515624999,-54.300878906250006],[-72.21044921874997,-54.04775390624995],[-71.996484375,-53.884863281249984],[-71.390478515625,-54.03281250000002]]],[[[-72.92324218749997,-53.481640625],[-72.88222656249997,-53.578320312499976],[-72.48227539062503,-53.58808593750001],[-72.20541992187503,-53.80742187500002],[-72.408544921875,-54.00380859374997],[-72.87099609375,-54.12656250000002],[-72.76376953125,-53.86484375],[-73.03945312499994,-53.83281250000004],[-73.08076171875001,-53.99804687499995],[-73.21064453125001,-53.98583984374995],[-73.31435546875,-53.72919921874998],[-73.845458984375,-53.54580078125001],[-73.44707031249993,-53.41005859374998],[-72.92324218749997,-53.481640625]]],[[[-74.38574218749994,-52.92236328125001],[-73.65400390624998,-53.06982421875003],[-73.13520507812498,-53.35390625],[-73.56728515625,-53.3068359375],[-73.86694335937494,-53.096875],[-74.27021484374995,-53.08154296875002],[-74.71201171874998,-52.74873046874998],[-74.38574218749994,-52.92236328125001]]],[[[-68.62993164062499,-52.65263671875004],[-68.65322265624994,-54.85361328124999],[-69.48627929687493,-54.85888671875],[-69.72343750000002,-54.71210937500003],[-70.49716796875,-54.80957031249999],[-71.83154296874997,-54.62617187500002],[-71.92773437500003,-54.52871093749997],[-71.80014648437498,-54.433984374999945],[-71.07993164062498,-54.444238281249994],[-70.79726562500002,-54.32724609374996],[-70.70112304687498,-54.48544921875004],[-70.31098632812498,-54.52851562500002],[-70.86308593749993,-54.11044921875003],[-70.86772460937499,-53.88417968750002],[-70.53129882812502,-53.627343750000016],[-70.37973632812495,-53.98671874999995],[-70.62983398437493,-54.005566406249976],[-70.53530273437494,-54.136132812500016],[-70.16899414062502,-54.37929687499999],[-69.74184570312494,-54.30585937500005],[-69.25317382812494,-54.557421875000045],[-69.04433593749997,-54.40673828124999],[-69.98813476562503,-54.10908203125001],[-70.15112304687503,-53.88808593750002],[-70.09111328124996,-53.72177734374998],[-69.35595703125003,-53.41630859375001],[-69.63701171874999,-53.33408203125004],[-70.32929687499998,-53.37763671875003],[-70.44335937499994,-53.085546875000034],[-70.130615234375,-52.942773437499994],[-70.38012695312494,-52.75195312500002],[-69.93544921874997,-52.82109374999998],[-69.41406249999997,-52.48623046874997],[-69.16704101562499,-52.66757812499997],[-68.78979492187497,-52.576757812500034],[-68.62993164062499,-52.65263671875004]]],[[[-74.82294921874993,-51.63017578125001],[-74.53681640624998,-51.96513671875004],[-74.69448242187497,-52.27919921874999],[-74.85180664062494,-52.27070312500003],[-75.10537109375,-51.78886718750001],[-74.82294921874993,-51.63017578125001]]],[[[-74.55864257812499,-51.27705078125001],[-74.62036132812497,-51.395703125000026],[-75.04736328125,-51.39833984375003],[-75.28911132812496,-51.625390625000016],[-75.15366210937498,-51.278808593750014],[-74.73666992187503,-51.20761718749999],[-74.55864257812499,-51.27705078125001]]],[[[-75.302001953125,-50.67998046875005],[-75.411376953125,-50.76435546875001],[-75.42763671875002,-50.48056640625002],[-75.11533203124998,-50.510449218749976],[-75.302001953125,-50.67998046875005]]],[[[-75.05478515625,-50.29609375],[-75.44912109374997,-50.34335937500004],[-75.32666015624997,-50.01181640625],[-74.8759765625,-50.10996093750001],[-75.05478515625,-50.29609375]]],[[[-75.106689453125,-48.83652343750001],[-75.38994140624999,-49.15917968750002],[-75.64116210937499,-49.195410156250034],[-75.48764648437498,-49.082421875000016],[-75.58310546874998,-48.85888671874995],[-75.106689453125,-48.83652343750001]]],[[[-74.47617187499998,-49.14785156250002],[-74.59472656249997,-50.00664062500001],[-74.76298828124996,-50.01142578125001],[-74.88041992187502,-49.72587890625001],[-74.72382812499998,-49.42382812500003],[-74.960107421875,-49.533007812499974],[-75.06601562499998,-49.85234375000002],[-75.54980468749994,-49.79130859375002],[-75.30585937499998,-49.49404296875003],[-75.46748046874995,-49.35888671875003],[-75.08603515624998,-49.27021484375],[-75.21015624999995,-49.14804687499998],[-74.94921875,-48.960156249999976],[-74.89624023437503,-48.73320312500002],[-74.54609374999993,-48.76689453125004],[-74.47617187499998,-49.14785156250002]]],[[[-75.51025390624997,-48.76347656250005],[-75.65092773437496,-48.58632812500002],[-75.57148437499993,-48.095898437500026],[-75.39140625000002,-48.01972656249997],[-75.15849609374999,-48.62265624999996],[-75.51025390624997,-48.76347656250005]]],[[[-74.56728515625,-48.591992187500026],[-74.92304687499998,-48.62646484375003],[-75.21289062499997,-48.141699218750034],[-75.19829101562502,-47.974609375000014],[-74.895654296875,-47.839355468749986],[-74.56728515625,-48.591992187500026]]],[[[-75.11220703124997,-47.8376953125],[-75.26103515625002,-47.76386718749998],[-74.92646484374998,-47.72314453125003],[-75.11220703124997,-47.8376953125]]],[[[-74.31289062500002,-45.69150390625002],[-74.46552734374995,-45.757226562499994],[-74.68984375,-45.66259765625],[-74.310546875,-45.17265625000002],[-74.31289062500002,-45.69150390625002]]],[[[-73.63217773437498,-44.82148437499997],[-73.81845703125,-44.65214843750002],[-73.72392578124993,-44.544238281249974],[-73.63217773437498,-44.82148437499997]]],[[[-72.98613281249999,-44.780078124999974],[-73.22846679687498,-44.85996093749999],[-73.39707031249998,-44.77431640624995],[-73.44506835937497,-44.641015624999966],[-73.20771484374993,-44.33496093749997],[-72.7763671875,-44.50859374999999],[-72.98613281249999,-44.780078124999974]]],[[[-73.73535156249997,-44.39453125000003],[-74.00205078125003,-44.59091796874998],[-73.728173828125,-45.195898437500034],[-74.016259765625,-45.344921875000026],[-74.61777343749998,-44.64794921874996],[-74.50180664062498,-44.47353515624995],[-74.09721679687496,-44.38935546875004],[-73.99492187499999,-44.140234375],[-73.70322265624998,-44.27412109375001],[-73.73535156249997,-44.39453125000003]]],[[[-73.81064453125003,-43.827246093750006],[-73.95566406249998,-43.921972656250034],[-74.14296874999997,-43.872167968750006],[-73.81064453125003,-43.827246093750006]]],[[[-73.77338867187498,-43.3458984375],[-74.114404296875,-43.35791015624996],[-74.387353515625,-43.231640625],[-74.03666992187496,-41.79550781249998],[-73.52783203124997,-41.89628906249999],[-73.42290039062499,-42.192871093750014],[-73.47080078124998,-42.46630859375004],[-73.78925781249993,-42.58574218750003],[-73.43632812499996,-42.9365234375],[-73.74965820312494,-43.15908203124995],[-73.77338867187498,-43.3458984375]]],[[[-78.80415039062501,-33.646484374999986],[-78.98945312499993,-33.66171874999998],[-78.87744140625003,-33.57519531250003],[-78.80415039062501,-33.646484374999986]]],[[[-109.27998046874994,-27.14042968749996],[-109.434130859375,-27.171289062500023],[-109.39047851562499,-27.068359375000014],[-109.27998046874994,-27.14042968749996]]],[[[-67.19487304687493,-22.821679687500037],[-67.00878906249994,-23.00136718750005],[-67.35620117187503,-24.033789062499963],[-68.25029296875002,-24.391992187500023],[-68.56201171875,-24.74736328125003],[-68.38422851562495,-25.091894531249977],[-68.59208984375002,-25.420019531250034],[-68.41450195312498,-26.153710937500023],[-68.59160156249999,-26.47041015624997],[-68.31865234374999,-26.973242187500006],[-68.59208984375002,-27.140039062499966],[-68.84633789062494,-27.153710937499994],[-69.17441406249998,-27.924707031250037],[-69.65693359374995,-28.413574218749986],[-69.82788085937497,-29.10322265624997],[-70.02680664062501,-29.324023437500017],[-69.95996093749997,-30.078320312500026],[-69.84428710937493,-30.175],[-69.95634765624996,-30.35820312500003],[-70.15322265625,-30.360937499999963],[-70.30908203124994,-31.02265625000004],[-70.51958007812493,-31.1484375],[-70.585205078125,-31.569433593749963],[-70.25439453125,-31.957714843750026],[-70.36376953125,-32.08349609374997],[-70.02197265625,-32.88457031250002],[-70.08486328125002,-33.20175781249998],[-69.81962890624999,-33.28378906249999],[-69.85244140625,-34.224316406250026],[-70.05205078124999,-34.30078124999997],[-70.39316406250003,-35.146875],[-70.55517578125,-35.246875],[-70.41572265625001,-35.52304687500002],[-70.40478515625,-36.06171874999998],[-71.05551757812498,-36.52373046874996],[-71.19218750000002,-36.84365234375004],[-71.16757812499998,-37.76230468749996],[-70.858642578125,-38.60449218750003],[-71.40156249999995,-38.93505859374996],[-71.53945312499997,-39.60244140624995],[-71.71992187499995,-39.63525390624997],[-71.65976562499998,-40.02080078125],[-71.81831054687493,-40.17666015624995],[-71.70898437499997,-40.381738281249994],[-71.93212890624994,-40.69169921874999],[-71.91127929687497,-41.650390624999986],[-71.75,-42.04677734375001],[-72.10820312499993,-42.25185546874995],[-72.14643554687498,-42.990039062499974],[-71.750634765625,-43.237304687499986],[-71.90498046875001,-43.34755859374998],[-71.68007812500002,-43.92958984374998],[-71.82001953124993,-44.38310546875],[-71.21259765624998,-44.44121093750003],[-71.15971679687496,-44.56025390625004],[-71.26113281250002,-44.763085937499966],[-72.06372070312503,-44.771875],[-72.04169921874998,-44.90419921875004],[-71.5962890625,-44.97919921875004],[-71.34931640624995,-45.33193359374995],[-71.74619140624998,-45.57890625],[-71.63154296874998,-45.95371093749998],[-71.87568359374998,-46.160546875],[-71.69965820312501,-46.6513671875],[-71.94023437499999,-46.83125],[-71.90498046875001,-47.201660156250014],[-72.34594726562497,-47.49267578124997],[-72.517919921875,-47.87636718749998],[-72.32832031250001,-48.11005859374998],[-72.35473632812497,-48.36582031250005],[-72.582861328125,-48.47539062499999],[-72.65126953125,-48.84160156249998],[-73.03364257812501,-49.014355468750004],[-73.13525390625,-49.30068359374999],[-73.46157226562497,-49.31386718750001],[-73.55419921875,-49.463867187500014],[-73.50126953124996,-50.125292968750024],[-73.15292968749998,-50.73828125000003],[-72.50981445312496,-50.607519531250034],[-72.34023437499997,-50.68183593749999],[-72.40766601562501,-51.54082031250002],[-71.91865234374995,-51.98955078125004],[-69.96025390624993,-52.00820312500002],[-68.443359375,-52.35664062500004],[-69.24101562499996,-52.20546874999997],[-69.62031249999995,-52.46474609374995],[-70.79511718749995,-52.76875],[-70.99584960937497,-53.77929687499997],[-71.29775390625002,-53.88339843750004],[-72.1744140625,-53.632324218749964],[-72.41289062500002,-53.35019531250004],[-71.94169921874993,-53.23408203125001],[-71.89169921874998,-53.523535156250006],[-71.79145507812498,-53.48457031249997],[-71.74052734374999,-53.232617187499976],[-71.28896484375002,-53.03369140624995],[-71.22714843750003,-52.810644531249984],[-71.38774414062496,-52.76425781250004],[-72.27802734374998,-53.13232421874997],[-72.54892578125,-53.4607421875],[-73.05273437499997,-53.24345703125005],[-72.72768554687502,-52.7623046875],[-72.453466796875,-52.814453124999964],[-72.11757812499997,-52.65],[-71.51127929687502,-52.60537109375],[-72.22568359374998,-52.52099609374995],[-72.43769531250001,-52.62578124999998],[-72.71210937499995,-52.53554687499999],[-73.12246093749997,-53.073925781249976],[-73.64521484374998,-52.83701171875003],[-73.2408203125,-52.707128906250034],[-73.12392578125,-52.487988281249976],[-73.24414062499997,-52.62402343749998],[-73.58569335937503,-52.68574218750003],[-74.01445312499999,-52.63935546875],[-74.26494140624993,-52.1048828125],[-73.83447265625,-52.23398437500001],[-73.68432617187494,-52.07773437499998],[-73.26044921874993,-52.157812500000034],[-72.79501953124998,-51.94951171875005],[-72.57084960937496,-52.200097656249945],[-72.67705078125002,-52.38466796874998],[-72.52333984374997,-52.255468750000034],[-72.62460937499998,-51.94648437499997],[-72.48964843750002,-51.76367187500003],[-72.76123046875,-51.57324218749996],[-73.16875,-51.45390624999998],[-72.60004882812495,-51.79912109374997],[-73.51816406250003,-52.04101562499996],[-73.75263671874993,-51.795507812500034],[-74.19667968749997,-51.68056640624997],[-73.92978515624995,-51.61787109374999],[-73.93950195312499,-51.26630859375005],[-74.81474609374996,-51.06289062499999],[-75.09467773437495,-50.68125],[-74.68574218749995,-50.662011718749945],[-74.77587890625003,-50.46992187499998],[-74.64448242187498,-50.360937499999984],[-74.365576171875,-50.487890625],[-74.13940429687503,-50.81777343749997],[-73.80654296875,-50.93837890625003],[-73.654443359375,-50.49267578125],[-73.97802734375003,-50.827050781249994],[-74.18559570312493,-50.485351562500014],[-73.95034179687497,-50.510546875],[-74.62958984374998,-50.19404296875],[-74.333740234375,-49.97460937499997],[-73.95859374999998,-49.994726562499984],[-74.32392578124995,-49.783398437500004],[-74.29082031249996,-49.604101562499984],[-73.83637695312493,-49.609375],[-74.09443359374993,-49.42968749999998],[-73.93496093749994,-49.02089843750001],[-74.2212890625,-49.500585937500034],[-74.36655273437503,-49.40048828124998],[-74.34101562499998,-48.59570312499998],[-74.00908203124996,-48.475],[-74.47441406249999,-48.46396484374996],[-74.58466796874998,-47.999023437500014],[-73.39106445312498,-48.14589843750001],[-73.60991210937499,-47.993945312500045],[-73.71586914062499,-47.65546875000001],[-73.94086914062498,-47.92939453125004],[-74.22705078124994,-47.96894531250001],[-74.654931640625,-47.702246093750034],[-74.5337890625,-47.567675781249974],[-74.24296874999999,-47.67929687499998],[-74.13408203125002,-47.590820312499986],[-74.48266601562497,-47.43046875],[-74.15839843749998,-47.18251953125002],[-74.31357421874998,-46.78818359374998],[-74.45419921875003,-46.76679687499997],[-74.51225585937496,-46.88515625000002],[-75.00595703125,-46.74111328124998],[-74.98417968750002,-46.51210937499995],[-75.54033203124999,-46.69873046874996],[-75.43037109374995,-46.93457031249996],[-75.70639648437498,-46.70527343749997],[-74.924462890625,-46.159667968750014],[-75.06669921874993,-45.874902343749994],[-74.15786132812497,-45.7671875],[-74.122705078125,-45.49619140625002],[-73.95717773437494,-45.40439453124998],[-73.825,-45.446875],[-74.01992187500002,-46.055859375],[-74.39296875,-46.21738281250005],[-73.96757812500002,-46.15410156250003],[-73.87871093749993,-45.846875],[-73.73525390624994,-45.81171875],[-73.70815429687502,-46.070312500000014],[-73.94863281249997,-46.533105468749966],[-73.845361328125,-46.56601562500002],[-73.59184570312493,-45.89912109375004],[-73.73076171874999,-45.47998046875],[-73.26621093749995,-45.346191406250014],[-72.933837890625,-45.45234374999997],[-73.44497070312497,-45.23818359374995],[-73.36245117187502,-44.97822265625001],[-72.73896484375001,-44.73417968750003],[-72.680078125,-44.59394531249997],[-72.66386718749999,-44.43642578124995],[-73.26508789062498,-44.16865234375001],[-73.22446289062498,-43.89794921875003],[-73.06879882812495,-43.86201171874998],[-72.99658203125,-43.63154296875001],[-73.07597656250002,-43.323632812499994],[-72.75800781249998,-43.039453125],[-72.84804687500002,-42.66914062499997],[-72.77392578125003,-42.505175781250045],[-72.63183593750003,-42.509667968749994],[-72.77324218749996,-42.257714843749994],[-72.63105468749995,-42.199804687500006],[-72.412353515625,-42.388183593750014],[-72.49941406249997,-41.98085937499999],[-72.82407226562503,-41.90878906249996],[-72.36040039062499,-41.64912109375],[-72.31826171875,-41.49902343749997],[-72.54238281250002,-41.690625],[-72.95283203124995,-41.51474609374998],[-73.24179687499995,-41.78085937500002],[-73.62402343750003,-41.77363281249997],[-73.73515625000002,-41.74248046875002],[-73.62392578125,-41.581347656250045],[-73.81074218749995,-41.51748046875001],[-73.96586914062493,-41.118261718750034],[-73.67099609375,-39.96318359374999],[-73.41040039062503,-39.78916015624998],[-73.22646484375002,-39.22441406250003],[-73.52021484375001,-38.509375],[-73.46479492187498,-38.04033203125003],[-73.66181640624998,-37.69853515625003],[-73.66240234375002,-37.341015625000026],[-73.60166015624998,-37.18847656250003],[-73.21596679687502,-37.16689453124998],[-73.11806640624997,-36.68837890625002],[-72.58735351562493,-35.759667968749994],[-72.62392578125002,-35.5857421875],[-72.22377929687494,-35.096191406250014],[-72.00283203124997,-34.16533203125],[-71.66435546875002,-33.65263671875],[-71.74296875,-33.09511718750001],[-71.45224609374998,-32.65957031250001],[-71.70893554687495,-30.62802734375002],[-71.66948242187499,-30.33037109374996],[-71.40039062499997,-30.142968749999966],[-71.31572265624996,-29.649707031250017],[-71.51923828124993,-28.926464843750026],[-71.30673828124998,-28.672460937499963],[-71.08652343749998,-27.814453124999957],[-70.92578125,-27.588671874999974],[-70.64658203124998,-26.329394531250017],[-70.71372070312498,-25.78417968749997],[-70.44536132812502,-25.17265624999999],[-70.57412109374994,-24.644335937500003],[-70.39233398437494,-23.565917968749957],[-70.59335937499995,-23.255468750000034],[-70.56318359374995,-23.057031250000023],[-70.33168945312494,-22.848632812500014],[-70.08002929687501,-21.356835937500037],[-70.19702148437494,-20.725390625],[-70.15742187499995,-19.70585937500003],[-70.41826171874999,-18.345605468750023],[-69.92636718749998,-18.206054687500014],[-69.80258789062498,-17.990234375000014],[-69.85209960937493,-17.70380859375001],[-69.68476562499995,-17.649804687500023],[-69.58642578125,-17.57324218749997],[-69.51093749999998,-17.50605468749997],[-69.31337890624997,-17.943164062500017],[-69.28232421875003,-17.96484375],[-69.09394531249993,-18.05048828125004],[-69.14545898437495,-18.14404296875],[-69.09228515624994,-18.28242187500004],[-69.02680664062493,-18.65625],[-68.97885742187503,-18.81298828125003],[-68.96831054687502,-18.967968749999983],[-68.85795898437499,-19.09335937500005],[-68.62055664062495,-19.29667968749999],[-68.54785156249997,-19.341113281249974],[-68.49199218749996,-19.381933593750034],[-68.47016601562495,-19.409960937499974],[-68.46289062499997,-19.43281250000001],[-68.57529296874998,-19.56015625000002],[-68.69829101562499,-19.721093750000037],[-68.69619140625,-19.74072265625003],[-68.57827148437494,-19.856542968750006],[-68.559375,-19.902343750000014],[-68.56069335937502,-19.96708984374996],[-68.75932617187499,-20.115527343750003],[-68.74516601562493,-20.45859375],[-68.48432617187498,-20.628417968749957],[-68.55825195312497,-20.90195312499999],[-68.197021484375,-21.30029296874997],[-68.18642578124997,-21.618554687499966],[-67.88173828124997,-22.493359375000026],[-67.87944335937496,-22.822949218750026],[-67.57993164062495,-22.89169921874999],[-67.36225585937493,-22.85517578125001],[-67.19487304687493,-22.821679687500037]]]]},"properties":{"name":"Chile","childNum":26}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[110.88876953125006,19.99194335937497],[111.01367187500003,19.65546875000001],[110.64091796875002,19.291210937499955],[110.45126953125012,18.747949218750023],[110.06738281249997,18.447558593750045],[109.51933593750007,18.21826171875003],[108.7015625,18.535253906250034],[108.66552734375003,19.304101562499994],[109.27666015625002,19.761132812500023],[109.17744140625004,19.768457031250023],[109.26347656250007,19.882666015625006],[110.1715820312501,20.053710937500057],[110.58818359375002,19.976367187500017],[110.6517578125,20.137744140625017],[110.88876953125006,19.99194335937497]]],[[[110.38515625000005,21.093164062499966],[110.52158203125006,21.083105468750063],[110.50390625000003,20.96772460937501],[110.28095703125004,21.001171874999983],[110.38515625000005,21.093164062499966]]],[[[112.64375,21.63964843750003],[112.525,21.62304687500003],[112.64765625000004,21.710253906250017],[112.64375,21.63964843750003]]],[[[112.79023437500004,21.601855468750045],[112.78203125000007,21.772265625000045],[112.86259765625002,21.75263671875004],[112.79023437500004,21.601855468750045]]],[[[118.1830078125,24.496289062499983],[118.0905273437501,24.446142578125063],[118.10380859375002,24.552343750000034],[118.1830078125,24.496289062499983]]],[[[119.82089843750006,25.45698242187504],[119.70029296875012,25.432714843750063],[119.72255859375005,25.638818359375023],[119.83837890625003,25.591064453125],[119.82089843750006,25.45698242187504]]],[[[121.2513671875,28.086425781250057],[121.13154296875004,28.062597656250006],[121.20546875,28.204394531250017],[121.2513671875,28.086425781250057]]],[[[122.29589843750003,29.96342773437499],[122.02402343750012,30.01333007812505],[121.96943359375004,30.143115234375017],[122.28447265625007,30.068017578124994],[122.29589843750003,29.96342773437499]]],[[[121.86269531250005,31.492285156249977],[121.519921875,31.549609375000017],[121.2111328125001,31.80537109375001],[121.86269531250005,31.492285156249977]]],[[[130.52695312500012,42.535400390625],[130.24667968750012,42.744824218749955],[130.24033203125006,42.891796874999955],[129.89824218750002,42.998144531250034],[129.69785156250012,42.448144531249994],[129.3136718750001,42.41357421874997],[128.92343750000006,42.038232421874966],[128.04521484375007,41.9875],[128.28925781250004,41.60742187500006],[128.14941406249997,41.38774414062496],[127.17968750000003,41.531347656250006],[126.95478515625004,41.76948242187501],[126.74306640625,41.724853515625],[125.98906250000002,40.904638671875034],[124.8893554687501,40.459814453125006],[124.36210937500002,40.004052734374994],[124.10576171875002,39.84101562499998],[123.65087890625003,39.881591796875],[122.8400390625001,39.600830078125],[121.98232421875,39.05317382812498],[121.67724609374997,39.00341796875006],[121.64990234375003,38.865087890625034],[121.16357421874997,38.73164062500001],[121.10673828125002,38.920800781249994],[121.6798828125001,39.10869140625002],[121.62763671875004,39.22016601562498],[121.81845703125006,39.38652343750002],[121.27548828125006,39.38476562500003],[121.26748046875,39.544677734375],[121.51757812499997,39.638964843750045],[121.51738281250002,39.84482421875006],[121.8009765625001,39.950537109375006],[122.27500000000012,40.541845703125034],[121.83486328125005,40.97426757812502],[121.72929687500002,40.84614257812504],[121.1745117187501,40.901269531249994],[120.47910156250006,40.23095703125003],[119.39111328125003,39.75249023437499],[118.976953125,39.182568359374955],[118.29785156249997,39.067089843749955],[118.04091796875,39.22675781249998],[117.86572265625003,39.191259765625034],[117.61669921875003,38.852880859375034],[117.5578125000001,38.625146484374994],[117.76669921875012,38.311669921874994],[118.01494140625007,38.18339843749996],[118.94003906250006,38.04277343750002],[119.08916015625007,37.70073242187496],[118.95263671875003,37.33115234374998],[119.28740234375002,37.138281250000034],[119.76054687500007,37.15507812499999],[120.31152343750003,37.62270507812505],[120.2572265625,37.67900390624996],[120.75,37.83393554687501],[121.64023437500012,37.46035156250002],[122.05664062500003,37.528906250000034],[122.66699218750003,37.40283203125003],[122.4466796875,37.06811523437503],[122.51972656250004,36.94682617187502],[122.34091796875012,36.83222656250004],[121.93271484375006,36.95947265625003],[121.05380859375006,36.61137695312499],[120.81083984375007,36.6328125],[120.89580078125007,36.44414062500002],[120.71152343750006,36.41328125000004],[120.6378906250001,36.129931640625045],[120.39306640625003,36.053857421874994],[120.32773437500006,36.228173828124994],[120.18330078125004,36.20244140624999],[120.094140625,36.11889648437503],[120.28476562500006,35.98442382812499],[119.42968749999997,35.301416015624994],[119.16533203125002,34.84882812499998],[119.20097656250002,34.748437499999966],[120.26669921875006,34.274023437500034],[120.87109374999997,33.016503906249994],[120.8532226562501,32.66137695312503],[121.34169921875005,32.42504882812503],[121.40390625000006,32.20625],[121.85634765625,31.816455078125045],[121.86630859375006,31.703564453124955],[121.68085937500004,31.71215820312503],[121.351953125,31.85878906250005],[120.97353515625,31.86938476562497],[120.52011718750006,32.10585937500002],[120.03593750000002,31.93627929687503],[120.7155273437501,31.983740234375006],[120.7877929687501,31.81977539062501],[121.66064453124997,31.319726562499994],[121.87792968750003,30.91699218750003],[121.41894531249997,30.789794921875057],[120.8214843750001,30.354638671875023],[120.44980468750006,30.38784179687505],[120.19462890625002,30.241308593750034],[120.49453125,30.303076171875006],[120.63339843750006,30.133154296875034],[121.25800781250004,30.30410156250005],[121.67792968750004,29.979101562500006],[122.08291015625005,29.870361328125057],[121.50625,29.484570312499955],[121.94121093750002,29.605908203124983],[121.91777343750007,29.13500976562497],[121.71748046875004,29.25634765625],[121.48710937500007,29.193164062500017],[121.67968749999997,28.953125],[121.54003906250003,28.931884765625],[121.6625,28.851416015625034],[121.47519531250006,28.64140625],[121.60996093750006,28.29213867187505],[121.27226562500002,28.222119140624983],[121.14570312500004,28.32666015624997],[120.95859375000006,28.037011718750023],[120.74765625000006,28.00996093750001],[120.83300781249997,27.891455078125034],[120.58750000000012,27.580761718749983],[120.60751953125012,27.41240234374996],[120.2787109375,27.097070312500023],[120.08671875000007,26.67158203125004],[119.88222656250005,26.610449218750006],[119.82421874999997,26.84638671875001],[119.71044921874997,26.728662109375023],[119.58818359375002,26.784960937500045],[119.8810546875001,26.33417968750004],[119.46308593750004,26.05468750000003],[119.13945312500007,26.12177734375001],[119.33203124999997,25.94873046875003],[119.61875000000012,26.003564453124994],[119.53945312500005,25.59125976562504],[119.6224609375,25.391162109375017],[119.180078125,25.449804687499977],[119.285546875,25.232226562500074],[118.97753906249997,25.209277343750017],[118.90908203125005,24.92890625000001],[118.63691406250004,24.835546874999977],[118.65703125000002,24.621435546874977],[118.0871093750001,24.627001953125045],[118.00595703125006,24.48198242187499],[117.84267578125005,24.47431640625004],[118.0560546875,24.24609374999997],[117.62822265625002,23.836718750000074],[117.46640625000012,23.84057617187497],[117.36767578124997,23.58862304687497],[117.29082031250007,23.71435546875],[117.08251953124997,23.578759765625023],[116.91064453124997,23.646679687499983],[116.86093750000006,23.453076171874983],[116.62939453124997,23.353857421875034],[116.69882812500006,23.277783203124983],[116.53828125000004,23.17968749999997],[116.47070312499997,22.945898437500034],[116.25185546875005,22.981347656249994],[115.85214843750006,22.801562500000045],[115.64042968750002,22.853417968750023],[115.49833984375002,22.718847656250063],[115.19580078125003,22.81728515625005],[114.85380859375007,22.616796875000063],[114.65166015625002,22.755273437500023],[114.55419921874997,22.52890625],[114.26601562500005,22.540966796874983],[114.01542968750007,22.51191406250001],[113.61962890624997,22.861425781249977],[113.6205078125,23.12749023437499],[113.51972656250004,23.102099609375074],[113.33105468749997,22.912011718749966],[113.55302734375002,22.594042968750045],[113.54912109375002,22.225195312500034],[113.14902343750012,22.075],[113.08876953125,22.207958984374983],[112.95390625000007,21.907324218750034],[112.80859374999997,21.944628906250074],[112.58632812500005,21.77685546875],[112.35966796875007,21.97802734375003],[112.30498046875002,21.74169921875003],[111.94394531250012,21.84965820312499],[111.60273437500004,21.55908203125003],[111.01689453125007,21.51171874999997],[110.56718750000002,21.21406250000001],[110.41093750000007,21.33813476562497],[110.15400390625004,20.944628906250017],[110.36542968750004,20.837597656249955],[110.31308593750012,20.67167968749999],[110.51152343750007,20.51826171875001],[110.34472656249997,20.29482421875005],[109.88251953125004,20.364062500000045],[109.96835937500006,20.448144531250023],[109.66259765625003,20.91689453125005],[109.68125000000012,21.13164062499999],[109.93076171875012,21.480566406250034],[109.6869140625,21.52460937500004],[109.56640624999997,21.690576171874994],[109.54404296875012,21.537939453125006],[109.14863281250004,21.425537109375],[109.1017578125001,21.59047851562505],[108.77167968750004,21.63046875],[108.59375,21.901025390624994],[108.47988281250005,21.904638671875006],[108.50214843750004,21.633447265624994],[108.32480468750006,21.693505859374994],[108.24628906250004,21.55839843749999],[107.97265624999997,21.507958984375023],[107.75927734374997,21.655029296875057],[107.35117187500012,21.60888671874997],[106.97099609375002,21.923925781250034],[106.66357421875003,21.97890625000005],[106.55039062500006,22.501367187499994],[106.78027343749997,22.778906250000034],[106.54179687500007,22.908349609375023],[106.2790039062501,22.857470703125045],[106.14843749999997,22.970068359375006],[105.8429687500001,22.922802734374955],[105.27539062500003,23.34521484375003],[104.86474609375003,23.136376953125023],[104.68730468750002,22.822216796874983],[104.37177734375004,22.704052734374983],[104.14306640624997,22.800146484375006],[103.94150390625006,22.540087890625045],[103.62021484375006,22.782031250000045],[103.49296875000007,22.587988281250034],[103.32666015625003,22.769775390625057],[102.98193359374997,22.4482421875],[102.47089843750004,22.75092773437501],[102.40644531250004,22.70800781249997],[102.2370117187501,22.466015624999983],[102.1759765625001,22.414648437500006],[102.12744140624997,22.379199218750045],[101.84179687500003,22.38847656249999],[101.75996093750004,22.490332031250034],[101.73876953124997,22.495263671874994],[101.70751953125003,22.486572265625],[101.67148437500006,22.462304687500023],[101.64619140625004,22.405419921874966],[101.61992187500002,22.32744140624999],[101.56787109374997,22.27636718749997],[101.52451171875006,22.25366210937497],[101.7365234375001,21.826513671874977],[101.74394531250007,21.77797851562505],[101.74726562500004,21.605761718750045],[101.72294921875007,21.31494140625003],[101.80058593750007,21.212597656249983],[101.78349609375007,21.204150390625017],[101.728125,21.156396484374994],[101.7047851562501,21.15014648437503],[101.54238281250005,21.23427734375005],[101.2814453125001,21.184130859375045],[101.24785156250007,21.197314453125045],[101.22441406250002,21.223730468750034],[101.21181640625,21.278222656250023],[101.2199218750001,21.34243164062505],[101.17539062500006,21.407519531250074],[101.19667968750005,21.522070312500063],[101.1388671875001,21.567480468749977],[101.07978515625004,21.75585937499997],[100.60458984375012,21.471777343750006],[100.14765625000004,21.480517578125017],[99.94072265625007,21.75874023437504],[99.9176757812501,22.02802734375001],[99.19296875000006,22.12597656249997],[99.50712890625002,22.959130859374994],[99.41806640625006,23.069238281250023],[98.86376953125003,23.191259765625034],[98.8322265625001,23.624365234374977],[98.67675781250003,23.905078125000045],[98.83505859375006,24.121191406250034],[98.2125,24.110644531250017],[97.56455078125012,23.911035156250023],[97.7082031250001,24.228759765625],[97.53144531250004,24.49169921875003],[97.58330078125002,24.77480468750005],[97.73789062500006,24.869873046875057],[97.8195312500001,25.251855468749994],[98.01074218749997,25.292529296875017],[98.14287109375007,25.571093750000017],[98.33378906250007,25.586767578125006],[98.65625,25.86357421874999],[98.56406250000006,26.072412109374994],[98.68554687499997,26.189355468750023],[98.7384765625001,26.785742187500006],[98.65117187500007,27.572460937499983],[98.4525390625,27.6572265625],[98.29882812499997,27.550097656250045],[98.06162109375012,28.185888671874977],[97.59921875000006,28.51704101562504],[97.53789062500002,28.510205078124983],[97.43144531250002,28.353906250000023],[97.35644531249997,28.254492187500006],[97.32158929493812,28.217097107438057],[97.3027336276825,28.08710519614969],[97.34382779482424,27.982305259167095],[97.04929369561631,27.76000444316393],[96.96494598325154,27.699301564540924],[96.19423412199573,28.04146177926422],[95.73730002295082,28.117613231051525],[95.11298892962586,27.748338353239472],[94.07167814294401,27.588707868507477],[93.61247595136224,27.323800298697016],[93.30681393470121,26.786120363519142],[92.74319481218781,26.833531317384058],[92.04974640832253,26.874866505386724],[92.07342257335648,26.915311275859864],[92.06813426293174,26.9752569185349],[92.02985139563152,27.03987087331446],[91.99856592104459,27.079255842602592],[91.99177981607339,27.100605151743654],[92.0025114452454,27.147290053160265],[92.03101585307499,27.214271359861193],[92.08387457645458,27.29090135496722],[92.04520857607581,27.364442429033787],[91.99069061380867,27.450181624174498],[91.95099838734396,27.45828799115413],[91.85276579410389,27.438593286730903],[91.74366351462741,27.442853010105477],[91.59505352446729,27.557262710287986],[91.63193359375012,27.759960937499983],[91.64189453125002,27.923242187500023],[91.36259958579089,28.02438066407592],[91.27304687500012,28.078369140625],[91.22587890625007,28.071240234374983],[91.07773437500012,27.974462890624977],[91.02080078125002,27.970068359374977],[90.71572265625,28.071728515624983],[90.63007812500004,28.078564453124955],[90.47734375000007,28.07084960937499],[90.3527343750001,28.080224609375023],[90.33310546875012,28.093994140625],[90.36298828125004,28.21650390625001],[90.34824218750006,28.24394531249999],[90.22080078125006,28.27773437500005],[90.10449218749997,28.302050781250017],[89.98105468750006,28.311181640625023],[89.8978515625,28.29414062500001],[89.81689453125003,28.25629882812501],[89.74980468750002,28.18818359375001],[89.65273437500005,28.158300781250034],[89.53691406250007,28.10742187499997],[89.4806640625001,28.059960937499994],[88.89140625000002,27.316064453124966],[88.83251953125003,27.36284179687499],[88.7648437500001,27.429882812499983],[88.74902343749997,27.521875],[88.82988281250002,27.76738281249999],[88.84882812500004,27.86865234375],[88.80371093750003,28.006933593750034],[88.57792968750002,28.093359375000034],[88.42597656250004,28.01166992187501],[88.27519531250007,27.968847656250006],[88.14111328125003,27.94892578125001],[88.10898437500006,27.933007812499966],[88.10976562500005,27.870605468750057],[87.8607421875,27.886083984375006],[87.62255859374997,27.81518554687503],[87.29072265625004,27.821923828124994],[87.14140625000002,27.838330078124955],[87.02011718750006,27.928662109374983],[86.9337890625001,27.96845703125001],[86.84238281250012,27.99916992187505],[86.750390625,28.022070312500006],[86.71962890625005,28.070654296875034],[86.69052734375006,28.09492187500001],[86.61445312500004,28.10302734374997],[86.55449218750007,28.08520507812497],[86.51689453125007,27.963525390624966],[86.40869140625003,27.928662109374983],[86.32861328124997,27.95952148437496],[86.2179687500001,28.022070312500006],[86.13701171875002,28.114355468750063],[86.07871093750006,28.08359375],[86.0641601562501,27.934716796874966],[85.99453125000005,27.910400390625],[85.95410156249997,27.92822265624997],[85.92167968750002,27.989697265624983],[85.84023437500005,28.135351562499977],[85.75947265625004,28.220654296874955],[85.67832031250012,28.277441406249977],[85.41064453125003,28.27602539062505],[85.21210937500004,28.292626953124966],[85.1224609375,28.315966796875017],[85.08857421875004,28.37226562500001],[85.121484375,28.484277343750023],[85.16015624999997,28.571875],[85.15908203125,28.592236328124983],[85.1263671875,28.602636718750063],[85.06914062500007,28.60966796874999],[84.85507812500006,28.553613281250023],[84.796875,28.560205078125023],[84.2287109375001,28.911767578124966],[84.17558593750002,29.036376953125057],[84.12783203125005,29.15629882812496],[84.10136718750002,29.21997070312497],[84.02197265624997,29.25385742187504],[83.93593750000005,29.27949218750001],[83.58349609375003,29.18359375000003],[83.15546875000004,29.612646484375034],[82.22070312500003,30.063867187500023],[82.04335937500005,30.326757812500034],[81.8548828125,30.362402343750006],[81.64189453125007,30.3875],[81.4171875000001,30.33759765625001],[81.25507812500004,30.09331054687499],[81.17714843750005,30.039892578125034],[80.98544921875006,30.23710937499999],[80.87353515625003,30.290576171875045],[80.19121093750002,30.56840820312496],[80.20712890625006,30.683740234375023],[79.92451171875004,30.888769531250034],[79.66425781250004,30.96523437499999],[79.38847656250007,31.064208984375],[79.10712890625004,31.402636718750017],[78.74355468750005,31.323779296875017],[78.7550781250001,31.55029296875],[78.69345703125006,31.740380859374994],[78.72558593750003,31.983789062500023],[78.49589843750002,32.21577148437504],[78.4552734375001,32.30034179687502],[78.41748046874997,32.466699218749994],[78.38964843749997,32.51987304687498],[78.73671875,32.55839843750002],[78.75351562500012,32.49926757812506],[78.91894531249997,32.35820312500002],[79.16992187500003,32.497216796874994],[79.14550781250003,33.00146484375006],[79.10283203125007,33.05253906249996],[79.13515625000005,33.17192382812496],[79.1125,33.22626953125001],[78.94843750000004,33.346533203125006],[78.86503906250002,33.43110351562501],[78.78378906250006,33.80878906250004],[78.72666015625006,34.013378906249955],[78.97060546875,34.22822265625004],[78.93642578125,34.35195312500002],[78.86484375000006,34.39033203125001],[78.32695312500007,34.60639648437498],[78.15849609375002,34.94648437499998],[78.07578125000006,35.13491210937502],[78.0426757812501,35.47978515625002],[77.79941406250006,35.49589843750002],[77.44648437500004,35.47558593750006],[77.29482421875005,35.508154296875034],[77.09003906250004,35.55205078124999],[76.87890625000003,35.61328125000003],[76.76689453125002,35.661718750000034],[76.72753906250003,35.67866210937504],[76.63183593749997,35.729394531249966],[76.56347656249997,35.77299804687499],[76.55126953124997,35.887060546875034],[76.50205078125006,35.87822265625002],[76.38574218750003,35.837158203125],[76.25166015625004,35.8109375],[76.17783203125012,35.810546875],[76.14785156250005,35.82900390625002],[76.07089843750006,35.983007812500034],[75.91230468750004,36.048974609374994],[75.97441406250007,36.38242187500006],[75.9518554687501,36.458105468750034],[75.9330078125,36.52158203124998],[75.840234375,36.64970703124999],[75.7721679687501,36.694921875000034],[75.6671875000001,36.741992187500045],[75.57373046874997,36.75932617187502],[75.46025390625002,36.725048828124955],[75.42421875000005,36.73823242187498],[75.37685546875,36.88369140625005],[75.34667968749997,36.913476562499966],[75.05390625000004,36.98715820312498],[74.94912109375,36.96835937500006],[74.88925781250006,36.95244140625002],[74.69218750000007,37.035742187500006],[74.60058593749997,37.03666992187502],[74.54140625,37.02216796875001],[74.52646484375006,37.03066406250005],[74.49794921875,37.057226562500034],[74.37617187500004,37.13735351562502],[74.37216796875006,37.15771484375],[74.558984375,37.23662109374999],[74.66894531250003,37.266699218750006],[74.72666015625006,37.29072265625001],[74.7389648437501,37.28564453125003],[74.76738281250002,37.249169921874966],[74.840234375,37.22504882812504],[74.89130859375004,37.231640624999955],[75.11875,37.38569335937498],[74.8942382812501,37.60141601562498],[74.81230468750002,38.46030273437498],[74.27744140625,38.659765625000034],[74.02558593750004,38.53984375000002],[73.80166015625,38.60688476562501],[73.69609375000007,38.85429687499996],[73.8052734375,38.968652343749994],[73.60732421875,39.229199218749955],[73.63632812500006,39.396679687499955],[73.63164062500007,39.44887695312502],[73.82294921875004,39.48896484375004],[73.90712890625,39.578515624999966],[73.9146484375,39.60649414062499],[73.88251953125004,39.71455078124998],[73.83974609375005,39.76284179687505],[73.8353515625,39.800146484375006],[73.85625,39.828662109375045],[73.88457031250002,39.87792968750006],[73.93876953125002,39.97880859374999],[73.99160156250005,40.04311523437502],[74.83046875,40.32851562499999],[74.80126953124997,40.428515625000045],[74.83515625000004,40.482617187499955],[74.865625,40.493505859375034],[75.0044921875,40.44951171874996],[75.11132812499997,40.4541015625],[75.24101562500002,40.48027343750002],[75.52080078125002,40.627539062500006],[75.55556640625,40.625195312499955],[75.6771484375,40.305810546874994],[75.87197265625,40.30322265625],[76.25830078124997,40.43076171875006],[76.3185546875001,40.352246093749955],[76.39638671875005,40.389794921874966],[76.4801757812501,40.44951171874996],[76.57792968750002,40.577880859375],[76.62216796875006,40.66235351562497],[76.6398437500001,40.74223632812499],[76.66113281249997,40.77963867187498],[76.70839843750005,40.818115234375],[76.82402343750002,40.982324218749966],[76.90771484374997,41.02416992187497],[76.98662109375002,41.039160156250006],[77.58173828125004,40.99277343750006],[77.71933593750012,41.024316406249994],[77.81523437500002,41.05561523437498],[77.9564453125,41.05068359375005],[78.1234375,41.07563476562498],[78.34628906250012,41.28144531249998],[78.36240234375012,41.37163085937496],[78.44287109374997,41.41752929687499],[78.742578125,41.56005859375],[79.29355468750006,41.78281249999998],[79.76611328124997,41.89887695312501],[79.84042968750012,41.99575195312502],[79.90966796875003,42.014990234375034],[80.21621093750005,42.03242187500004],[80.23515625000007,42.04345703124997],[80.24619140625012,42.05981445312503],[80.209375,42.190039062500006],[80.20224609375012,42.73447265624998],[80.53896484375005,42.873486328124955],[80.39023437500006,43.043115234374966],[80.78574218750006,43.16157226562504],[80.35527343750002,44.09726562500006],[80.48154296875006,44.71464843749999],[79.871875,44.88378906249997],[80.05917968750012,45.006445312500006],[81.69199218750012,45.34936523437497],[81.94492187500006,45.16083984375001],[82.26660156249997,45.21909179687498],[82.52148437500003,45.12548828125],[82.61162109375007,45.424267578124955],[82.31523437500002,45.59492187499998],[83.02949218750004,47.18593750000002],[84.016015625,46.97050781250002],[84.66660156250006,46.97236328125004],[84.78613281249997,46.83071289062505],[85.484765625,47.06352539062496],[85.65664062500005,47.254638671875],[85.52597656250006,47.915625],[85.7494140625,48.38505859374999],[86.54941406250012,48.52861328125002],[86.8083007812501,49.04970703125002],[87.32285156250012,49.085791015625006],[87.41669921875004,49.07661132812501],[87.5158203125001,49.122412109375006],[87.7625,49.16582031249996],[87.81425781250002,49.162304687499955],[87.87216796875012,49.000146484374966],[87.74316406250003,48.88164062499999],[87.83183593750007,48.79165039062505],[88.02792968750006,48.735595703125],[88.06005859375003,48.707177734374966],[87.9796875000001,48.55512695312498],[88.30996093750005,48.47207031250002],[88.41396484375,48.403417968750006],[88.51708984374997,48.384472656249955],[88.56679687500005,48.31743164062496],[88.57597656250007,48.220166015624955],[88.68183593750004,48.170556640624994],[88.83828125000005,48.101708984374994],[88.91777343750007,48.089013671874966],[89.04765625000007,48.002539062500034],[89.47919921875004,48.02905273437503],[89.5609375,48.00395507812496],[89.778125,47.82700195312498],[89.83134765625002,47.82329101562502],[89.91044921875007,47.844335937500034],[89.95869140625004,47.88632812499998],[90.02792968750012,47.877685546875],[90.1032226562501,47.74541015624996],[90.19101562500012,47.70209960937501],[90.31328125000007,47.67617187499999],[90.33066406250006,47.655175781249966],[90.42519531250005,47.50410156250001],[90.49619140625012,47.28515625],[90.64335937500007,47.10029296874998],[90.71552734375004,47.00385742187498],[90.7990234375001,46.98515624999999],[90.86992187500002,46.95449218750005],[90.91054687500005,46.88325195312501],[90.9857421875,46.7490234375],[90.9115234375,46.270654296874994],[90.94755859375002,46.17729492187499],[90.99677734375004,46.10498046875],[91.00175781250007,46.03579101562502],[90.6618164062501,45.525244140625006],[90.87724609375002,45.19609375000002],[91.05,45.217431640624994],[91.584375,45.07651367187498],[92.42382812499997,45.008935546874994],[92.57890625000002,45.01098632812506],[92.78789062500007,45.035742187500034],[93.51621093750012,44.944482421874994],[94.71201171875012,44.35083007812503],[95.35029296875004,44.27807617187503],[95.32558593750005,44.03935546874999],[95.52558593750004,43.953955078125006],[95.85957031250004,43.27597656249998],[96.38544921875004,42.72036132812502],[97.20566406250012,42.78979492187506],[99.46787109375012,42.568212890625034],[99.98378906250005,42.67734375000006],[100.08632812500005,42.67075195312506],[100.51904296875003,42.61679687499998],[101.09199218750004,42.55131835937496],[101.49531250000004,42.53876953124998],[101.57910156249997,42.52353515624998],[101.65996093750002,42.50004882812499],[101.97294921875002,42.21586914062502],[102.15664062500005,42.158105468749966],[102.57519531249997,42.09208984375002],[103.07285156250006,42.00595703125006],[103.7111328125001,41.75131835937506],[103.99726562500004,41.796972656250034],[104.30517578124997,41.84614257812501],[104.49824218750004,41.87700195312499],[104.49824218750004,41.65869140625],[104.86035156250003,41.64375],[104.98203125000012,41.59550781250002],[105.05058593750002,41.61591796875001],[105.1154296875001,41.66328124999998],[105.19707031250002,41.738037109375],[105.31435546875005,41.77089843750005],[105.86757812500005,41.993994140625034],[106.77001953125003,42.28872070312502],[108.17119140625002,42.44731445312502],[108.68730468750002,42.416113281250034],[109.33984374999997,42.43837890625005],[109.44316406250002,42.455957031249994],[110.40039062499997,42.77368164062497],[111.00722656250005,43.34140624999998],[111.878125,43.68017578125],[111.93173828125012,43.81494140625],[111.40224609375005,44.367285156250006],[111.89804687500006,45.064062500000034],[112.03261718750005,45.08164062500006],[112.11289062500006,45.06293945312498],[112.41132812500004,45.05820312499998],[112.49931640625002,45.01093750000004],[112.59677734375006,44.917675781249955],[112.7067382812501,44.883447265624994],[113.04941406250006,44.81035156250002],[113.3009765625001,44.79165039062502],[113.50791015625006,44.76235351562502],[113.58701171875006,44.745703125],[113.65263671875002,44.76347656249999],[113.87705078125012,44.89619140625001],[114.03027343749997,44.942578124999955],[114.08027343750004,44.97114257812501],[114.41914062500004,45.20258789062501],[114.56015625000012,45.38999023437498],[114.73876953124997,45.41962890624998],[114.91923828125007,45.378271484375006],[115.16259765624997,45.390234375000034],[115.6810546875,45.45825195312503],[116.19765625,45.739355468750006],[116.240625,45.795996093750006],[116.22910156250012,45.84575195312502],[116.21298828125012,45.88691406249998],[116.56259765625012,46.28979492187497],[116.85908203125004,46.387939453125],[117.3333984375,46.36201171875004],[117.35693359375003,46.391308593749955],[117.35634765625,46.436669921874966],[117.39218750000012,46.53759765625003],[117.40556640625007,46.57089843750006],[117.43808593750012,46.58623046874999],[117.546875,46.58828125000005],[117.74121093749997,46.51816406250006],[118.07128906249997,46.666601562500006],[118.15683593750006,46.678564453125034],[118.30869140625012,46.71704101562497],[118.40439453125006,46.70317382812499],[118.58046875,46.69189453125],[118.64873046875002,46.70166015625006],[118.72294921875007,46.69189453125],[118.8439453125001,46.76020507812498],[118.95712890625006,46.73486328124997],[119.16210937499997,46.638671875],[119.33183593750002,46.61381835937499],[119.47402343750005,46.626660156249955],[119.62021484375006,46.60395507812504],[119.70664062500006,46.60600585937502],[119.74746093750005,46.62719726562497],[119.86718750000003,46.67216796874999],[119.89785156250005,46.857812499999966],[119.71113281250004,47.15],[119.08193359375,47.654150390625034],[119.01757812500003,47.68535156249999],[118.88027343750005,47.72509765625],[118.75996093750004,47.75761718749996],[118.69052734375012,47.822265625],[118.56777343750005,47.94326171875005],[118.49843750000005,47.98398437499998],[117.76835937500002,47.98789062499998],[117.3507812500001,47.65219726562498],[117.28593750000002,47.666357421875034],[117.06972656250005,47.80639648437506],[116.95166015624997,47.836572265624966],[116.90117187500007,47.85307617187496],[116.76054687500002,47.869775390624994],[116.65195312500012,47.86450195312497],[116.51347656250007,47.839550781249955],[116.37822265625002,47.84404296874999],[116.31718750000002,47.85986328125],[116.2311523437501,47.85820312500002],[116.07480468750012,47.78955078125],[115.99384765625004,47.71132812500005],[115.89824218750002,47.68691406250005],[115.6164062500001,47.874804687500045],[115.52509765625004,48.13085937499997],[115.63945312500007,48.18623046874998],[115.785546875,48.24824218750001],[115.7965820312501,48.346337890624994],[115.7916992187501,48.455712890624994],[115.8205078125001,48.57724609375006],[116.6833007812501,49.82377929687499],[117.8734375,49.51347656250002],[118.4515625,49.84448242187503],[119.25986328125012,50.06640625000003],[119.34628906250012,50.278955078124994],[119.16367187500006,50.40600585937503],[120.06689453125003,51.60068359375006],[120.74980468750007,52.096533203125006],[120.65615234375,52.56665039062503],[120.0675781250001,52.632910156250034],[120.09453125000007,52.787207031250034],[120.98544921875012,53.28457031250002],[123.6078125,53.546533203124994],[124.81230468750002,53.133837890625045],[125.075,53.20366210937496],[125.64902343750012,53.042285156250045],[126.34169921875,52.36201171875001],[126.92480468749997,51.10014648437496],[127.30703125000005,50.70795898437501],[127.33720703125007,50.35014648437502],[127.590234375,50.20898437500003],[127.55078124999997,49.801806640625045],[127.99960937500006,49.56860351562506],[128.70400390625,49.60014648437499],[129.0651367187501,49.374658203124966],[129.49814453125012,49.38881835937502],[130.1959960937501,48.89165039062499],[130.553125,48.861181640625006],[130.5521484375,48.602490234374955],[130.80429687500012,48.34150390624998],[130.7326171875001,48.01923828124998],[130.96191406249997,47.70932617187498],[132.47626953125004,47.714990234374994],[132.7072265625001,47.94726562500006],[133.14404296875003,48.10566406249998],[133.46835937500006,48.09716796875003],[134.29335937500005,48.37343750000002],[134.66523437500004,48.25390625],[134.56601562500006,48.02250976562502],[134.75234375,47.71542968749998],[134.1676757812501,47.30219726562501],[133.86132812500003,46.24775390625004],[133.43642578125,45.60468750000004],[133.18603515625003,45.49482421875004],[133.1134765625001,45.130712890625006],[132.93603515624997,45.029931640624994],[131.85185546875002,45.32685546875001],[131.44687500000012,44.984033203124966],[130.9816406250001,44.844335937500034],[131.2552734375,44.07158203124999],[131.25732421875003,43.378076171874994],[131.06855468750004,42.90224609375005],[130.42480468749997,42.72705078124997],[130.52695312500012,42.535400390625]]],[[[113.9977539062501,22.210498046875045],[113.83886718749997,22.24169921875003],[114.04394531250003,22.33339843750005],[113.9977539062501,22.210498046875045]]],[[[114.01542968750007,22.51191406250001],[114.26601562500005,22.540966796874983],[114.26796875,22.295556640624966],[113.93730468750002,22.364990234375],[114.01542968750007,22.51191406250001]]],[],[[[118.4074218750001,24.522119140624994],[118.43271484375006,24.414355468750074],[118.29511718750004,24.436328125000017],[118.4074218750001,24.522119140624994]]],[[[121.00878906249997,22.62036132812497],[120.83984375000003,21.925],[120.2328125,22.71791992187505],[120.0724609375001,23.149755859375006],[120.13212890625007,23.652929687500034],[121.040625,25.032812500000034],[121.59365234375,25.275341796874983],[121.92900390625002,24.973730468749977],[121.39746093750003,23.172509765625023],[121.00878906249997,22.62036132812497]]]]},"properties":{"name":"China","childNum":15}},{"geometry":{"type":"Polygon","coordinates":[[[-5.262304687499977,10.319677734374991],[-4.72177734374992,9.756542968750026],[-4.625830078125006,9.713574218749969],[-4.526611328124943,9.723486328125034],[-4.406201171874926,9.647998046875031],[-4.332226562499955,9.645703125],[-4.18115234375,9.78173828125],[-3.790625,9.917187499999983],[-3.581152343749977,9.924316406250014],[-3.289697265625023,9.882226562500051],[-3.223535156249937,9.895458984374997],[-3.160693359374932,9.849169921874974],[-3.095800781249949,9.752099609375009],[-3.042626953124937,9.72089843750004],[-2.988281249999972,9.687353515624963],[-2.900878906249943,9.534619140625026],[-2.875146484374937,9.500927734374997],[-2.816748046874949,9.425830078124974],[-2.766601562499943,9.424707031250009],[-2.7171875,9.457128906250048],[-2.695849609374989,9.481347656250009],[-2.686132812499977,9.43173828125002],[-2.705761718749983,9.351367187499989],[-2.74692382812492,9.04511718750004],[-2.689892578124955,9.02509765625004],[-2.649218750000017,8.956591796875031],[-2.600390625000017,8.800439453125023],[-2.505859375000028,8.208740234375],[-2.538281249999955,8.171630859374986],[-2.61171875,8.147558593749963],[-2.619970703125006,8.12109375],[-2.600976562499937,8.082226562499983],[-2.613378906249977,8.046679687500017],[-2.668847656249994,8.022216796875014],[-2.789746093749955,7.931933593750003],[-2.959082031249977,7.454541015624997],[-3.227148437499977,6.749121093749991],[-2.998291015624972,5.711328125000051],[-2.793652343749955,5.600097656250028],[-2.754980468749977,5.432519531249994],[-2.815673828125,5.153027343749997],[-3.168701171874972,5.203027343749966],[-3.199951171874943,5.3544921875],[-3.347558593749994,5.13066406249996],[-4.120166015625017,5.309716796875023],[-4.60888671875,5.235888671875003],[-4.037207031249977,5.23012695312498],[-4.899707031249932,5.138330078125023],[-5.282373046874994,5.210253906250017],[-5.36752929687492,5.15078125],[-5.061816406249989,5.13066406249996],[-5.913769531249926,5.0109375],[-7.544970703124989,4.351318359375],[-7.574658203124983,4.572314453124989],[-7.585058593749977,4.916748046875],[-7.39990234375,5.550585937499989],[-7.454394531249989,5.841308593749972],[-7.636132812499994,5.90771484375],[-7.730371093749994,5.919042968749991],[-7.800927734374994,6.038916015624991],[-7.833251953125,6.076367187499983],[-7.855517578125017,6.150146484375],[-7.888623046875011,6.234863281250028],[-7.981591796874937,6.2861328125],[-8.287109375,6.31904296875004],[-8.587890625,6.490527343749989],[-8.324511718749989,6.920019531249991],[-8.408740234374989,7.411816406249997],[-8.429980468749989,7.601855468749989],[-8.351757812499926,7.590576171875],[-8.231884765624955,7.556738281250034],[-8.205957031249994,7.590234375000023],[-8.115429687499926,7.760742187500028],[-8.126855468749937,7.867724609374974],[-8.00986328124992,8.078515625000023],[-8.048583984375,8.169726562500045],[-8.140625,8.181445312500031],[-8.217138671874949,8.219677734375011],[-8.256103515625,8.253710937500017],[-8.244140624999943,8.407910156249983],[-8.236962890624994,8.455664062500034],[-7.953125,8.477734375],[-7.823583984374977,8.467675781249994],[-7.738964843749983,8.375244140624986],[-7.696093749999932,8.375585937499977],[-7.71958007812492,8.643017578125011],[-7.950976562499989,8.786816406249997],[-7.938183593749983,8.97978515624996],[-7.902099609375,9.017089843750014],[-7.777978515624937,9.080859375000031],[-7.799804687499943,9.115039062499989],[-7.839404296875017,9.151611328124972],[-7.918066406249949,9.188525390625031],[-7.896191406249955,9.415869140624991],[-8.136962890624972,9.49570312499999],[-8.155175781249937,9.973193359375017],[-7.990625,10.1625],[-7.661132812500028,10.427441406250011],[-7.385058593749989,10.340136718749989],[-7.01708984375,10.143261718750026],[-6.950341796874994,10.342333984374989],[-6.693261718750023,10.34946289062502],[-6.669335937499937,10.39218750000002],[-6.69199218749992,10.512011718750017],[-6.686132812499977,10.578027343750051],[-6.676367187499949,10.633789062500043],[-6.654150390624949,10.65644531250004],[-6.482617187499983,10.561230468749997],[-6.250244140625,10.717919921875037],[-6.190673828124943,10.400292968749994],[-6.192626953124972,10.369433593750003],[-6.241308593749949,10.279199218750009],[-6.238378906249977,10.26162109374998],[-6.117187499999972,10.201904296874986],[-6.034570312499937,10.194824218750057],[-5.907568359375006,10.307226562500034],[-5.896191406249983,10.354736328125028],[-5.843847656249977,10.389550781250023],[-5.694287109374983,10.433203125000034],[-5.556591796874983,10.439941406249986],[-5.382275390625011,10.314013671875003],[-5.262304687499977,10.319677734374991]]]},"properties":{"name":"Côte d\'Ivoire","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[15.480078125,7.523779296874991],[15.206738281250011,7.206152343749991],[14.7392578125,6.27978515625],[14.43115234375,6.038720703124994],[14.616894531250011,5.865136718749994],[14.56298828125,5.279931640624994],[14.73125,4.602392578124991],[15.063574218750006,4.284863281249997],[15.128710937500017,3.826904296875],[16.0634765625,2.90859375],[16.183398437500017,2.270068359374989],[16.059375,1.676220703124997],[15.741601562500023,1.914990234374997],[14.902441406250006,2.012304687499991],[14.578906250000017,2.199121093749994],[13.293554687500006,2.161572265624997],[13.2203125,2.256445312499991],[11.558984375000023,2.302197265624997],[11.348437500000017,2.299707031249994],[11.328710937500006,2.167431640624997],[11.096582031250023,2.16748046875],[10.790917968750023,2.16757812499999],[9.979882812500023,2.167773437499989],[9.8701171875,2.21328125],[9.8369140625,2.242382812499997],[9.830371093750017,2.275488281249991],[9.826171875,2.297802734374997],[9.80078125,2.304443359375],[9.82177734375,2.539257812499997],[9.948437500000011,3.079052734374997],[9.672070312500011,3.53759765625],[9.765722656250006,3.623828124999989],[9.642382812500017,3.611767578124997],[9.55615234375,3.798046875],[9.739648437500023,3.852929687499994],[9.639941406250017,3.96533203125],[9.688867187500023,4.056396484375],[9.483691406250017,4.066113281249997],[9.42529296875,3.922314453124997],[9.000097656250006,4.091601562499989],[8.918261718750017,4.553759765624989],[8.660351562500011,4.670996093749991],[8.65625,4.516357421875],[8.53955078125,4.571875],[8.715625,5.046875],[8.997167968750006,5.917724609375],[9.490234375,6.418652343749997],[9.779882812500006,6.76015625],[9.820703125000023,6.783935546875],[9.874218750000011,6.803271484374989],[10.038867187500017,6.92138671875],[10.1435546875,6.996435546874991],[10.167773437500017,6.959179687499997],[10.185546875,6.912792968749997],[10.205468750000023,6.8916015625],[10.293066406250006,6.876757812499989],[10.413183593750006,6.877734374999989],[10.60625,7.063085937499991],[10.954199218750006,6.7765625],[11.032519531250017,6.697900390624994],[11.1064453125,6.457714843749997],[11.1533203125,6.437939453124997],[11.2373046875,6.450537109374991],[11.401757812500023,6.533935546875],[11.551660156250023,6.697265625],[11.580078125,6.888867187499997],[11.657519531250017,6.9515625],[11.861425781250006,7.11640625],[11.767382812500017,7.272265624999989],[11.809179687500006,7.345068359374991],[12.016015625000023,7.589746093749994],[12.2333984375,8.282324218749991],[12.403515625000011,8.595556640624991],[12.582714843750011,8.624121093749991],[12.651562500000011,8.667773437499989],[12.7822265625,8.81787109375],[12.806542968750023,8.886621093749994],[12.875683593750011,9.303515624999989],[12.929492187500017,9.42626953125],[13.19873046875,9.563769531249989],[13.269921875000023,10.036181640624989],[13.41455078125,10.171435546874989],[13.535351562500011,10.60507812499999],[13.699902343750011,10.873144531249991],[13.89208984375,11.140087890624997],[13.9814453125,11.211865234374997],[14.056738281250006,11.245019531249994],[14.143261718750011,11.24853515625],[14.202343750000011,11.268164062499991],[14.559765625000011,11.492285156249991],[14.619726562500006,12.150976562499991],[14.518945312500023,12.298242187499994],[14.272851562500023,12.356494140624989],[14.184863281250017,12.447216796874997],[14.06396484375,13.07851562499999],[14.244824218750011,13.07734375],[14.461718750000017,13.021777343749989],[14.847070312500023,12.502099609374994],[15.08125,11.845507812499989],[15.029882812500006,11.11367187499999],[15.132226562500023,10.648486328124989],[15.276074218750011,10.357373046874997],[15.654882812500006,10.0078125],[14.243261718750006,9.979736328125],[13.977246093750011,9.691552734374994],[14.332324218750017,9.20351562499999],[15.1162109375,8.557324218749997],[15.5498046875,7.787890624999989],[15.480078125,7.523779296874991]]]},"properties":{"name":"Cameroon","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[27.4033203125,5.109179687499989],[27.7880859375,4.644677734374994],[28.19208984375001,4.350244140624994],[28.427539062500017,4.324169921874997],[28.72705078125,4.504980468749991],[29.224902343750017,4.391894531249989],[29.469628906250023,4.61181640625],[29.676855468750006,4.5869140625],[30.194921875,3.98193359375],[30.50830078125,3.835693359375],[30.586718750000017,3.62421875],[30.757226562500023,3.62421875],[30.83857421875001,3.49072265625],[30.90644531250001,3.408935546875],[30.754003906250006,3.041796874999989],[30.8466796875,2.847021484374991],[30.728613281250006,2.455371093749989],[31.176367187500006,2.270068359374989],[31.252734375000017,2.044580078124994],[29.94287109375,0.819238281249994],[29.934472656250023,0.4990234375],[29.717675781250023,0.098339843749997],[29.576953125000017,-1.387890625000011],[29.196582031250017,-1.719921875000011],[29.13154296875001,-2.195117187500003],[28.876367187500023,-2.400292968750009],[28.893945312500023,-2.635058593750003],[29.01435546875001,-2.72021484375],[29.224414062500017,-3.053515625],[29.211816406250023,-3.833789062500003],[29.403222656250023,-4.449316406250006],[29.404199218750023,-4.496679687500006],[29.32568359375,-4.835644531250011],[29.32343750000001,-4.898828125],[29.3427734375,-4.983105468750011],[29.542382812500023,-5.499804687500003],[29.594140625000023,-5.65078125],[29.60703125,-5.72265625],[29.59638671875001,-5.775976562500006],[29.490820312500006,-5.965429687500006],[29.480078125,-6.025],[29.50625,-6.172070312500011],[29.540820312500017,-6.313867187500009],[29.590625,-6.394433593750009],[29.70966796875001,-6.616894531250011],[29.798144531250017,-6.69189453125],[29.961816406250023,-6.803125],[30.10625,-6.9150390625],[30.212695312500017,-7.037890625],[30.31318359375001,-7.203710937500006],[30.40673828125,-7.460644531250011],[30.75117187500001,-8.193652343750003],[28.89814453125001,-8.485449218750006],[28.869531250000023,-8.785839843750011],[28.400683593750017,-9.224804687500011],[28.60419921875001,-9.678808593750006],[28.6455078125,-10.550195312500009],[28.383398437500006,-11.566699218750003],[28.482519531250006,-11.812109375],[29.064355468750023,-12.348828125000011],[29.48554687500001,-12.41845703125],[29.508203125000023,-12.228222656250011],[29.79511718750001,-12.155468750000011],[29.775195312500017,-13.438085937500006],[29.55419921875,-13.248925781250009],[29.20185546875001,-13.398339843750009],[29.014257812500006,-13.368847656250011],[28.730078125,-12.925488281250011],[28.550878906250006,-12.836132812500011],[28.412890625000017,-12.51806640625],[27.573828125,-12.22705078125],[27.1591796875,-11.579199218750006],[26.824023437500017,-11.965234375],[26.025976562500006,-11.89013671875],[25.349414062500017,-11.623046875],[25.28876953125001,-11.21240234375],[24.3779296875,-11.417089843750006],[24.36572265625,-11.1298828125],[23.96650390625001,-10.871777343750011],[23.901171875000017,-10.983203125],[23.833886718750023,-11.013671875],[23.463964843750006,-10.969335937500006],[23.076269531250006,-11.087890625],[22.814746093750017,-11.080273437500011],[22.56103515625,-11.055859375000011],[22.486132812500017,-11.08671875],[22.392968750000023,-11.159472656250003],[22.31494140625,-11.198632812500009],[22.27880859375,-11.194140625],[22.226171875,-11.121972656250009],[22.203515625000023,-10.829492187500009],[22.307031250000023,-10.691308593750009],[22.19775390625,-10.040625],[21.81318359375001,-9.46875],[21.905371093750006,-8.693359375],[21.806054687500023,-7.32861328125],[21.751074218750006,-7.30546875],[21.190332031250023,-7.284960937500003],[20.910937500000017,-7.281445312500011],[20.607812500000023,-7.277734375],[20.558398437500017,-7.244433593750003],[20.53583984375001,-7.182812500000011],[20.536914062500017,-7.121777343750011],[20.598730468750006,-6.93515625],[20.59003906250001,-6.919921875],[20.482226562500017,-6.915820312500003],[20.190039062500006,-6.9462890625],[19.997460937500023,-6.976464843750009],[19.87519531250001,-6.986328125],[19.527636718750017,-7.144433593750009],[19.483789062500023,-7.279492187500011],[19.479882812500023,-7.47216796875],[19.371679687500006,-7.655078125],[19.369921875000017,-7.70654296875],[19.3408203125,-7.966601562500003],[19.142675781250006,-8.00146484375],[18.944433593750006,-8.00146484375],[18.56269531250001,-7.9359375],[18.0087890625,-8.107617187500011],[17.643359375000017,-8.090722656250009],[17.57958984375,-8.099023437500009],[16.984765625000023,-7.257421875],[16.91943359375,-6.933984375],[16.813085937500006,-6.772558593750006],[16.742968750000017,-6.618457031250003],[16.697265625,-6.164257812500011],[16.537109375,-5.9658203125],[16.431445312500017,-5.900195312500003],[16.315234375000017,-5.865625],[13.978515625,-5.857226562500003],[13.346484375000017,-5.863378906250006],[13.184375,-5.85625],[12.452929687500017,-6.00048828125],[12.213671875000017,-5.758691406250009],[12.484570312500011,-5.71875],[12.451464843750017,-5.071484375000011],[12.502734375000017,-5.036914062500003],[12.573535156250017,-4.99658203125],[12.59619140625,-4.978417968750009],[12.8296875,-4.736621093750003],[12.947460937500011,-4.6953125],[13.057324218750011,-4.651074218750011],[13.07275390625,-4.634765625],[13.08740234375,-4.601953125],[13.136621093750023,-4.604296875],[13.414941406250023,-4.83740234375],[13.659570312500023,-4.721484375],[13.717089843750017,-4.454492187500009],[13.94091796875,-4.484667968750003],[14.358300781250023,-4.299414062500006],[14.449804687500006,-4.449511718750003],[14.365429687500011,-4.585546875],[14.410742187500006,-4.83125],[14.707910156250023,-4.881738281250009],[15.990039062500017,-3.766210937500006],[16.217382812500006,-3.0302734375],[16.21533203125,-2.177832031250006],[16.54072265625001,-1.840136718750003],[16.8798828125,-1.225878906250003],[17.752832031250023,-0.549023437500011],[18.072167968750023,2.01328125],[18.49091796875001,2.924414062499991],[18.6103515625,3.478417968749994],[18.594140625000023,4.346240234374989],[19.06855468750001,4.891406249999989],[19.5009765625,5.127490234374989],[19.806542968750023,5.089306640624997],[20.226367187500017,4.829638671874989],[20.55810546875,4.462695312499989],[22.422167968750017,4.134960937499997],[22.864550781250017,4.723876953125],[23.41718750000001,4.663134765624989],[24.31982421875,4.994140625],[25.065234375000017,4.967431640624994],[25.52509765625001,5.31210937499999],[26.822070312500017,5.062402343749994],[27.071875,5.199755859374989],[27.4033203125,5.109179687499989]]]},"properties":{"name":"Dem. Rep. Congo","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[18.6103515625,3.478417968749994],[18.49091796875001,2.924414062499991],[18.072167968750023,2.01328125],[17.752832031250023,-0.549023437500011],[16.8798828125,-1.225878906250003],[16.54072265625001,-1.840136718750003],[16.21533203125,-2.177832031250006],[16.217382812500006,-3.0302734375],[15.990039062500017,-3.766210937500006],[14.707910156250023,-4.881738281250009],[14.410742187500006,-4.83125],[14.365429687500011,-4.585546875],[14.449804687500006,-4.449511718750003],[14.358300781250023,-4.299414062500006],[13.94091796875,-4.484667968750003],[13.717089843750017,-4.454492187500009],[13.659570312500023,-4.721484375],[13.414941406250023,-4.83740234375],[13.136621093750023,-4.604296875],[13.08740234375,-4.601953125],[13.07275390625,-4.634765625],[13.048046875000011,-4.619238281250006],[12.971386718750011,-4.5517578125],[12.881054687500011,-4.445117187500003],[12.84814453125,-4.428906250000011],[12.50146484375,-4.5875],[12.018359375000017,-5.004296875],[11.777539062500011,-4.565820312500009],[11.130175781250017,-3.916308593750003],[11.234472656250006,-3.690820312500009],[11.504296875000023,-3.5203125],[11.685742187500011,-3.68203125],[11.8798828125,-3.665917968750009],[11.934179687500006,-3.318554687500011],[11.715429687500006,-3.176953125000011],[11.760156250000023,-2.983105468750011],[11.537792968750011,-2.83671875],[11.60546875,-2.342578125],[12.064453125,-2.41259765625],[12.446386718750006,-2.329980468750009],[12.43212890625,-1.928906250000011],[12.590429687500006,-1.826855468750011],[12.793554687500006,-1.931835937500011],[12.991992187500017,-2.313378906250009],[13.464941406250006,-2.395410156250009],[13.733789062500023,-2.138476562500003],[13.886914062500011,-2.465429687500006],[13.993847656250011,-2.490625],[14.199804687500006,-2.354199218750011],[14.162890625000017,-2.217578125],[14.383984375000011,-1.890039062500009],[14.47412109375,-0.573437500000011],[13.860058593750011,-0.203320312500011],[13.949609375000023,0.353808593749989],[14.32421875,0.62421875],[14.429882812500011,0.901464843749991],[14.180859375000011,1.370214843749991],[13.851367187500017,1.41875],[13.21630859375,1.2484375],[13.172167968750017,1.78857421875],[13.293554687500006,2.161572265624997],[14.578906250000017,2.199121093749994],[14.902441406250006,2.012304687499991],[15.741601562500023,1.914990234374997],[16.059375,1.676220703124997],[16.183398437500017,2.270068359374989],[16.468554687500017,2.831738281249997],[16.610742187500023,3.50537109375],[17.491601562500023,3.687304687499989],[18.160937500000017,3.499804687499989],[18.474414062500017,3.622998046874997],[18.6103515625,3.478417968749994]]]},"properties":{"name":"Congo","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-71.31972656249997,11.861914062500048],[-71.95810546875,11.66640625],[-72.24848632812501,11.196435546875009],[-72.690087890625,10.835839843749994],[-72.86933593750001,10.49125976562496],[-73.00654296874998,9.789160156250006],[-73.36621093749997,9.194140625000017],[-73.05839843749999,9.259570312500031],[-72.79638671874997,9.10898437499999],[-72.66542968749994,8.62758789062498],[-72.39033203124995,8.287060546874969],[-72.47197265624996,7.524267578124991],[-72.20771484374995,7.37026367187498],[-72.00664062499993,7.032617187500023],[-71.12861328124993,6.98671875],[-70.73715820312503,7.090039062499997],[-70.12919921874999,6.95361328125],[-69.42714843749997,6.123974609374997],[-68.47177734375,6.156542968749974],[-67.85917968749999,6.289892578124963],[-67.48198242187499,6.18027343750002],[-67.47387695312503,5.929980468750003],[-67.82490234374995,5.270458984375026],[-67.85527343750002,4.506884765624989],[-67.66162109375,3.864257812499986],[-67.3111328125,3.41586914062502],[-67.85908203124998,2.793603515624994],[-67.61870117187496,2.793603515624994],[-67.21083984375,2.390136718750043],[-66.87602539062499,1.223046875000037],[-67.082275390625,1.185400390625006],[-67.11923828124998,1.703613281249986],[-67.40043945312499,2.116699218750028],[-67.93623046874998,1.748486328124969],[-68.19379882812495,1.987011718749983],[-68.25595703125,1.845507812500017],[-68.17656249999999,1.719824218749991],[-69.84858398437493,1.708740234375043],[-69.85214843750003,1.05952148437504],[-69.31181640624999,1.050488281249969],[-69.15332031249994,0.65878906250002],[-69.47211914062498,0.72993164062504],[-70.05390624999993,0.578613281250028],[-70.07050781249993,-0.13886718750004],[-69.63398437500001,-0.50927734375],[-69.40024414062498,-1.194921874999977],[-69.66904296875003,-2.667675781249997],[-69.94819335937498,-4.200585937500009],[-69.96591796875003,-4.2359375],[-70.16752929687499,-4.050195312500009],[-70.24028320312496,-3.882714843749994],[-70.2984375,-3.844238281249972],[-70.33950195312502,-3.814355468750009],[-70.73510742187497,-3.781542968749989],[-70.09584960937494,-2.658203125000014],[-70.16474609374995,-2.639843750000011],[-70.24443359375002,-2.606542968749977],[-70.29462890624995,-2.552539062499989],[-70.57587890624995,-2.418261718749989],[-70.64799804687499,-2.405761718750014],[-70.70537109374996,-2.341992187499983],[-70.91455078125003,-2.218554687499974],[-70.96855468750002,-2.206835937499989],[-71.02729492187498,-2.225781250000026],[-71.11337890625003,-2.245410156250031],[-71.19638671874998,-2.313085937499963],[-71.39697265625,-2.334082031249977],[-71.55947265624997,-2.224218749999977],[-71.75253906249995,-2.15273437499998],[-71.80273437499997,-2.166308593749989],[-71.86728515624998,-2.227734374999983],[-71.932470703125,-2.288671874999963],[-71.98427734375,-2.326562499999952],[-72.21845703125001,-2.400488281250006],[-72.94111328124998,-2.394042968750028],[-72.9896484375,-2.33974609374998],[-73.15449218749993,-2.278222656249966],[-73.19697265624995,-1.830273437500011],[-73.49628906249993,-1.69306640625004],[-73.66430664062497,-1.248828124999946],[-73.86318359374997,-1.19667968749998],[-73.92695312500001,-1.125195312499983],[-73.98681640625003,-1.098144531249986],[-74.05439453124995,-1.028613281250031],[-74.18076171875,-0.997753906249955],[-74.24638671874999,-0.970605468750023],[-74.28388671874998,-0.927832031250006],[-74.33442382812498,-0.85087890624996],[-74.41787109375,-0.580664062499977],[-74.46518554687498,-0.517675781250034],[-74.51386718749993,-0.470117187500023],[-74.555078125,-0.429882812499997],[-74.61635742187494,-0.370019531249966],[-74.691650390625,-0.335253906249989],[-74.75537109375003,-0.298632812499989],[-74.78046874999998,-0.24453125],[-74.80175781249997,-0.200097656249994],[-75.13837890624998,-0.050488281249969],[-75.28447265624999,-0.10654296875002],[-75.77666015624999,0.08925781249998],[-76.27060546874998,0.439404296874997],[-76.49462890624997,0.23544921875002],[-77.396337890625,0.393896484374963],[-77.46767578124997,0.636523437500017],[-77.702880859375,0.837841796874997],[-78.1806640625,0.968554687499974],[-78.85966796874996,1.455371093750031],[-79.02543945312499,1.623681640625037],[-78.79296874999994,1.848730468749963],[-78.576904296875,1.773779296874977],[-78.59169921875,2.356640624999969],[-78.41689453125,2.483496093749963],[-78.06665039062494,2.509130859375034],[-77.81357421875,2.716357421874974],[-77.076806640625,3.913281250000026],[-77.26352539062503,3.893212890625023],[-77.27802734374995,4.058496093750023],[-77.35820312499996,3.944726562500037],[-77.40874023437496,4.24775390625004],[-77.52070312499993,4.212792968750023],[-77.35351562499997,4.398291015624977],[-77.28632812499995,4.72172851562496],[-77.373291015625,5.323974609375],[-77.53442382812497,5.537109374999986],[-77.24926757812497,5.780175781250037],[-77.46943359374995,6.176757812500014],[-77.368798828125,6.575585937499994],[-77.90117187499999,7.229345703125048],[-77.76191406249995,7.698828125000034],[-77.53828124999995,7.56625976562502],[-77.19599609374995,7.972460937500003],[-77.47851562499994,8.498437500000037],[-77.37421874999993,8.65830078125002],[-76.85185546875002,8.09047851562498],[-76.924658203125,7.973193359374974],[-76.78657226562493,7.931591796875026],[-76.7720703125,8.310546875000043],[-76.92045898437496,8.573730468750014],[-76.27685546875,8.989111328124991],[-76.02724609374997,9.365771484374989],[-75.63935546874998,9.450439453125014],[-75.680029296875,9.729785156249989],[-75.53857421874997,10.205175781250034],[-75.708349609375,10.143408203124963],[-75.44599609374995,10.610888671874989],[-74.84458007812498,11.109716796875006],[-74.330224609375,10.996679687499991],[-74.51625976562497,10.8625],[-74.40087890625,10.76523437499999],[-74.14291992187503,11.320849609375031],[-73.31337890624997,11.295751953124991],[-72.275,11.88925781250002],[-72.13574218749994,12.188574218749977],[-71.71455078124993,12.41997070312496],[-71.26210937499997,12.335302734375034],[-71.13730468750003,12.04633789062504],[-71.31972656249997,11.861914062500048]]]},"properties":{"name":"Colombia","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[43.788671875,-12.307031250000023],[43.85898437500006,-12.368261718749977],[43.66367187500006,-12.342871093749949],[43.63134765624997,-12.247070312499972],[43.788671875,-12.307031250000023]]],[[[44.476367187500074,-12.08154296875],[44.504980468750006,-12.356542968749991],[44.220117187499994,-12.171386718750014],[44.476367187500074,-12.08154296875]]],[[[43.46582031249997,-11.901269531249966],[43.226660156250006,-11.75185546874998],[43.2990234375001,-11.374511718750028],[43.39296875000005,-11.408593749999952],[43.46582031249997,-11.901269531249966]]]]},"properties":{"name":"Comoros","childNum":3}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-24.308251953124966,14.856298828124991],[-24.44052734374992,14.834814453124963],[-24.496875,14.980273437500017],[-24.329492187499937,15.019482421875011],[-24.308251953124966,14.856298828124991]]],[[[-23.18212890624997,15.136767578125017],[-23.210253906250017,15.32353515625006],[-23.119335937499955,15.26840820312502],[-23.18212890624997,15.136767578125017]]],[[[-23.444238281249994,15.00795898437498],[-23.5046875,14.916113281250006],[-23.70537109374999,14.96132812499998],[-23.74809570312499,15.328515625],[-23.444238281249994,15.00795898437498]]],[[[-22.917724609375,16.237255859374955],[-22.69262695312497,16.169042968750006],[-22.710107421874994,16.043359374999966],[-22.95927734374996,16.045117187499983],[-22.917724609375,16.237255859374955]]],[[[-24.08769531249999,16.62250976562501],[-24.03271484374997,16.57202148437503],[-24.243066406250023,16.599414062500017],[-24.32236328124992,16.49311523437504],[-24.398095703124966,16.61840820312497],[-24.08769531249999,16.62250976562501]]],[[[-22.888330078124966,16.659082031249994],[-22.980615234374937,16.700878906249983],[-22.93291015624999,16.84101562500004],[-22.888330078124966,16.659082031249994]]],[[[-24.88706054687495,16.81811523437497],[-25.09306640624999,16.83251953125],[-24.936474609374983,16.92211914062503],[-24.88706054687495,16.81811523437497]]],[[[-25.169824218749994,16.94648437500001],[-25.308300781249955,16.93583984374999],[-25.337109374999955,17.091015624999983],[-25.03466796875,17.176464843749983],[-24.979687499999983,17.09472656250003],[-25.169824218749994,16.94648437500001]]]]},"properties":{"name":"Cape Verde","childNum":8}},{"geometry":{"type":"Polygon","coordinates":[[[-83.6419921875,10.917236328125],[-83.346826171875,10.315380859374997],[-82.77841796874999,9.66953125],[-82.56357421874999,9.57666015625],[-82.56923828125,9.55820312499999],[-82.58652343749999,9.538818359375],[-82.64409179687499,9.505859375],[-82.801025390625,9.591796875],[-82.843994140625,9.57080078125],[-82.86015624999999,9.511474609375],[-82.88896484374999,9.481005859374989],[-82.925048828125,9.469042968749989],[-82.93984375,9.449169921874997],[-82.94033203125,9.060107421874989],[-82.88134765625,9.055859375],[-82.78305664062499,8.990283203124989],[-82.741162109375,8.951708984374989],[-82.72783203124999,8.916064453124989],[-82.91704101562499,8.740332031249991],[-82.855712890625,8.635302734374989],[-82.84477539062499,8.489355468749991],[-82.86162109374999,8.45351562499999],[-83.02734375,8.337744140624991],[-82.879345703125,8.070654296874991],[-83.12333984374999,8.353076171874989],[-83.16240234374999,8.588183593749989],[-83.4697265625,8.706835937499989],[-83.29150390625,8.406005859375],[-83.54375,8.445849609374989],[-83.73408203125,8.614453125],[-83.613720703125,8.804052734374991],[-83.73691406249999,9.150292968749994],[-84.58159179687499,9.568359375],[-84.71494140624999,9.8994140625],[-85.23564453124999,10.242089843749994],[-85.2365234375,10.107373046874997],[-84.88642578125,9.820947265624994],[-85.07705078125,9.60195312499999],[-85.31455078124999,9.8109375],[-85.62485351562499,9.902441406249991],[-85.84965820312499,10.292041015624989],[-85.667236328125,10.745019531249994],[-85.90800781249999,10.897558593749991],[-85.7443359375,11.06210937499999],[-85.5841796875,11.189453125],[-84.9091796875,10.9453125],[-84.6341796875,11.045605468749997],[-83.91928710937499,10.7353515625],[-83.71293945312499,10.785888671875],[-83.6419921875,10.917236328125]]]},"properties":{"name":"Costa Rica","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-82.56176757812503,21.571679687500023],[-82.959619140625,21.441308593750023],[-83.18378906250001,21.59345703125004],[-82.97358398437498,21.592285156250057],[-83.08251953124997,21.791406250000023],[-82.99121093750003,21.942724609375034],[-82.71455078124998,21.890283203125023],[-82.56176757812503,21.571679687500023]]],[[[-77.66899414062493,21.951953125000045],[-77.91855468749998,22.088085937499983],[-77.63369140624994,22.054003906250074],[-77.66899414062493,21.951953125000045]]],[[[-77.87939453125,22.127539062500034],[-78.04165039062502,22.201269531250034],[-77.99921874999998,22.298730468749994],[-77.87939453125,22.127539062500034]]],[[[-81.83745117187499,23.163037109374955],[-81.26235351562497,23.156835937500034],[-81.14462890624998,23.054931640625057],[-80.65014648437494,23.10307617187499],[-80.36489257812502,22.943408203125074],[-79.82026367187498,22.887011718750045],[-79.27568359374999,22.407617187499994],[-78.68647460937493,22.366845703125023],[-77.63681640624995,21.79736328125],[-77.49711914062502,21.78833007812503],[-77.58315429687497,21.889257812499977],[-77.49726562499995,21.871630859375045],[-77.14414062499995,21.643603515625017],[-77.36616210937498,21.612646484375034],[-77.25288085937498,21.483496093750006],[-77.0986328125,21.589013671875023],[-76.86743164062497,21.330419921875006],[-75.72294921874996,21.111035156249983],[-75.59580078125,20.99467773437499],[-75.72456054687493,20.71455078125004],[-74.882568359375,20.65063476562497],[-74.51313476562495,20.384570312500045],[-74.16748046874997,20.292187499999955],[-74.15371093750002,20.168554687500006],[-75.11640624999995,19.901416015625017],[-75.151611328125,20.008349609375045],[-75.29047851562495,19.893115234375017],[-76.15844726562497,19.98974609374997],[-77.715087890625,19.85546874999997],[-77.10380859374999,20.407519531250017],[-77.22958984374995,20.64375],[-78.11635742187497,20.761865234374994],[-78.49077148437493,21.05371093750003],[-78.72768554687497,21.592724609374955],[-79.35742187500003,21.58515625000001],[-80.23134765625,21.872167968750063],[-80.48544921874998,22.1234375],[-81.03564453124997,22.073583984375063],[-81.18549804687495,22.26796875000005],[-81.284375,22.109423828125074],[-81.84941406249993,22.21367187499999],[-82.077734375,22.3876953125],[-81.71035156250002,22.496679687500006],[-81.83881835937498,22.672460937500034],[-82.73803710937497,22.689257812500074],[-83.37963867187503,22.222998046875034],[-83.90073242187495,22.17011718750001],[-84.03095703124993,21.94311523437503],[-84.502587890625,21.776171875000045],[-84.50136718750002,21.930273437499977],[-84.88720703125003,21.856982421875074],[-84.32636718749998,22.074316406250034],[-84.36127929687498,22.37890625],[-84.04492187500003,22.666015625000057],[-83.25781249999997,22.967578125000017],[-81.83745117187499,23.163037109374955]]]]},"properties":{"name":"Cuba","childNum":4}},{"geometry":{"type":"Polygon","coordinates":[[[-68.75107421874999,12.059765625],[-68.9951171875,12.141845703125],[-69.15888671875,12.380273437499994],[-68.75107421874999,12.059765625]]]},"properties":{"name":"Curaçao","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-81.36953124999997,19.34887695312497],[-81.10712890624995,19.305175781250057],[-81.40478515624994,19.278417968750006],[-81.36953124999997,19.34887695312497]]],[[[-79.823388671875,19.711914062500057],[-79.90620117187501,19.702539062499994],[-79.74228515625,19.757128906250017],[-79.823388671875,19.711914062500057]]]]},"properties":{"name":"Cayman Is.","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[34.004492187500006,35.065234375],[33.47578125000001,35.000341796875],[33.3837890625,35.1626953125],[32.91953125,35.087841796875],[32.71269531250002,35.171044921874994],[32.8798828125,35.180566406249994],[32.94160156250001,35.390429687499996],[33.60761718750001,35.354150390624994],[34.55605468750002,35.662060546875],[33.941992187500006,35.292041015624996],[34.004492187500006,35.065234375]]]},"properties":{"name":"N. Cyprus","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[32.71269531250002,35.171044921874994],[32.91953125,35.087841796875],[33.3837890625,35.1626953125],[33.47578125000001,35.000341796875],[34.004492187500006,35.065234375],[34.05019531250002,34.98837890625],[33.69941406250001,34.969873046874994],[33.007910156250006,34.569580078125],[32.44902343750002,34.729443359375],[32.31718750000002,34.9533203125],[32.30097656250001,35.082958984375],[32.71269531250002,35.171044921874994]]]},"properties":{"name":"Cyprus","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[14.809375,50.858984375],[14.895800781250017,50.861376953124996],[14.98291015625,50.886572265625],[14.99375,51.01435546875],[16.007226562500023,50.611621093749996],[16.2822265625,50.655615234375],[16.419726562500017,50.573632812499994],[16.210351562500023,50.423730468749994],[16.63916015625,50.1021484375],[16.989648437500023,50.2369140625],[16.88007812500001,50.427050781249996],[17.41523437500001,50.254785156249994],[17.702246093750006,50.307177734374996],[17.627050781250006,50.11640625],[17.874804687500017,49.972265625],[18.0283203125,50.03525390625],[18.562402343750023,49.879345703125],[18.83222656250001,49.510791015624996],[18.160937500000017,49.257373046874996],[18.0859375,49.06513671875],[17.75849609375001,48.888134765625],[17.135644531250023,48.841064453125],[16.953125,48.598828125],[16.543554687500006,48.796240234375],[16.057226562500006,48.754785156249994],[15.066796875000023,48.997851562499996],[14.691308593750023,48.59921875],[14.049121093750017,48.602490234375],[13.814746093750017,48.766943359375],[13.769921875000023,48.815966796874996],[13.684960937500023,48.876708984375],[13.547656250000017,48.95966796875],[13.440722656250017,48.95556640625],[13.401171875000017,48.977587890624996],[12.916699218750011,49.33046875],[12.68115234375,49.414501953125],[12.390527343750023,49.739648437499994],[12.5125,49.87744140625],[12.09921875,50.310986328125],[12.134863281250006,50.3109375],[12.1748046875,50.288378906249996],[12.231152343750011,50.244873046875],[12.27734375,50.181445312499996],[12.3056640625,50.205712890624994],[12.549023437500011,50.393408203125],[13.016406250000017,50.490380859374994],[13.18115234375,50.510498046875],[14.369042968750023,50.898730468749996],[14.319726562500023,51.03779296875],[14.545703125000017,50.993945312499996],[14.559667968750006,50.954931640625],[14.59521484375,50.918603515624994],[14.623828125000017,50.91474609375],[14.613574218750017,50.85556640625],[14.658203125,50.8326171875],[14.723339843750011,50.814697265625],[14.766503906250023,50.818310546875],[14.797460937500006,50.842333984374996],[14.809375,50.858984375]]]},"properties":{"name":"Czech Rep.","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[14.1982421875,53.919042968750034],[13.92578125,53.879052734374966],[13.827734375,54.12724609374999],[14.1982421875,53.919042968750034]]],[[[13.709179687500011,54.382714843749994],[13.707324218750074,54.281152343749994],[13.190039062500034,54.32563476562501],[13.336816406249994,54.697119140625006],[13.65761718750008,54.55957031249997],[13.709179687500011,54.382714843749994]]],[[[9.739746093750028,54.82553710937498],[10.022167968750011,54.673925781250006],[9.86865234375,54.47246093749999],[10.731542968750006,54.31625976562506],[11.013378906250068,54.37915039062497],[11.008593750000074,54.18115234374997],[10.810742187500068,54.075146484374955],[10.917773437500045,53.99531250000004],[11.39960937500004,53.94462890625002],[12.111328125,54.168310546875006],[12.57539062500004,54.467382812500006],[13.028613281250017,54.411035156249994],[13.448046875000017,54.14086914062503],[13.724218750000063,54.153222656249966],[13.865527343750074,53.85336914062498],[14.258886718750006,53.729638671874994],[14.298730468750051,53.55644531249999],[14.41455078125,53.28349609374996],[14.412304687500011,53.216748046874955],[14.410937500000074,53.19902343749999],[14.368554687500051,53.105566406250034],[14.293164062500068,53.026757812499966],[14.138867187500068,52.93286132812503],[14.128613281250011,52.87822265625002],[14.253710937500017,52.78251953124996],[14.514062500000023,52.645605468750034],[14.619433593750017,52.52851562499998],[14.569726562499994,52.431103515624955],[14.554589843750023,52.35966796874996],[14.573925781250068,52.31416015625001],[14.615625,52.277636718750045],[14.679882812500068,52.25],[14.752539062500034,52.08183593750002],[14.601660156250034,51.832373046875006],[14.738671875000051,51.62714843750004],[14.7109375,51.54492187499997],[14.724707031250063,51.523876953124955],[14.90595703125004,51.463330078124955],[14.935546875000028,51.435351562500045],[14.9638671875,51.095117187499994],[14.917480468750057,51.00874023437498],[14.814257812499989,50.871630859375045],[14.809375,50.858984375000034],[14.797460937500034,50.84233398437502],[14.766503906250051,50.81831054687501],[14.72333984375004,50.81469726562497],[14.658203125,50.832617187500006],[14.613574218750045,50.85556640625006],[14.623828125000017,50.91474609375004],[14.595214843750057,50.91860351562502],[14.559667968750006,50.954931640625034],[14.545703124999989,50.99394531249999],[14.319726562500051,51.037792968749955],[14.36904296875008,50.89873046874996],[13.18115234375,50.510498046875],[13.016406250000017,50.490380859374994],[12.549023437500011,50.393408203125034],[12.3056640625,50.205712890624994],[12.27734375,50.18144531250002],[12.231152343749983,50.24487304687497],[12.174804687500057,50.28837890624996],[12.134863281250006,50.31093750000002],[12.099218750000034,50.31098632812504],[12.089843749999972,50.30175781250003],[12.089746093750051,50.2685546875],[12.294598214285761,50.13608119419641],[12.5125,49.87744140625],[12.390527343750051,49.739648437499994],[12.68115234375,49.41450195312501],[12.91669921875004,49.33046875000002],[13.401171875000074,48.97758789062499],[13.440722656250045,48.95556640625003],[13.547656250000074,48.95966796874998],[13.684960937500051,48.87670898437506],[13.769921875000051,48.81596679687502],[13.814746093750017,48.76694335937498],[13.802929687500011,48.74750976562501],[13.798828124999972,48.62167968750006],[13.785351562499983,48.58745117187502],[13.486621093750074,48.58183593750002],[13.471679687500028,48.57182617187502],[13.459863281250023,48.564550781250034],[13.409375,48.39414062500006],[13.322851562500006,48.33125],[13.215234375000023,48.301904296874994],[12.760351562500063,48.10698242187499],[12.95351562500008,47.890625],[12.897656250000068,47.721875],[13.054101562500051,47.655126953125034],[13.047949218750034,47.57915039062502],[13.031542968750074,47.50800781250001],[13.01435546875004,47.478076171875045],[12.968066406250017,47.475683593750006],[12.878906250000057,47.506445312500034],[12.809375,47.542187499999955],[12.782812500000034,47.56416015624998],[12.781152343750051,47.590429687500006],[12.796191406249989,47.60703125],[12.771386718750023,47.63940429687503],[12.685839843750074,47.66933593750002],[12.209277343750074,47.71826171875003],[12.196875,47.709082031250034],[12.203808593750011,47.64672851562503],[12.185644531250063,47.61953125],[11.041992187500028,47.39311523437496],[10.98085937499999,47.39814453125001],[10.893945312500051,47.470458984375],[10.870605468750028,47.500781250000045],[10.873046874999972,47.52021484375001],[10.741601562500023,47.52412109375001],[10.65869140625,47.547216796875006],[10.482812500000051,47.54179687499996],[10.439453125000028,47.55156249999999],[10.403906250000063,47.41699218750003],[10.369140625,47.366064453125034],[10.18300781250008,47.27880859375003],[10.200292968750063,47.36342773437505],[10.066308593750023,47.39335937500002],[10.064575892857171,47.42369419642856],[10.059863281250045,47.44907226562498],[10.034082031250023,47.47358398437501],[9.971582031249994,47.50532226562498],[9.839160156250017,47.55229492187496],[9.748925781250023,47.575537109375006],[9.524023437500034,47.52421875000002],[8.572656250000023,47.775634765625],[8.435742187500011,47.73134765625002],[8.403417968750006,47.687792968750045],[8.413281250000068,47.66269531249998],[8.451757812500006,47.65180664062498],[8.552343750000063,47.65913085937498],[8.56708984375004,47.65190429687502],[8.57050781250004,47.63779296874998],[8.55947265625008,47.62402343750003],[8.477636718750034,47.61269531250002],[8.454003906249994,47.59619140625003],[7.615625,47.59272460937504],[7.616601562500023,48.15678710937502],[8.134863281250006,48.97358398437498],[7.450585937500051,49.152197265625034],[6.735449218750006,49.16059570312498],[6.344335937500006,49.45273437499998],[6.4873046875,49.798486328124994],[6.204882812500017,49.915136718750034],[6.13818359375,49.97431640625001],[6.10976562500008,50.034375],[6.116503906250045,50.120996093749966],[6.340917968750006,50.451757812500034],[5.993945312500017,50.75043945312504],[6.048437500000034,50.90488281250006],[5.857519531250034,51.030126953125006],[6.129980468750034,51.14741210937501],[6.198828125000034,51.45],[5.948730468750057,51.80268554687501],[6.800390625,51.96738281249998],[6.724511718749994,52.080224609374966],[7.035156250000057,52.38022460937498],[6.748828125000074,52.464013671874994],[6.710742187500045,52.61787109374998],[7.033007812500045,52.65136718749997],[7.197265625000028,53.28227539062499],[7.074316406250034,53.477636718750006],[7.285253906250034,53.68134765625001],[8.00927734375,53.69072265624999],[8.108496093750063,53.46767578125002],[8.245214843750006,53.44531249999997],[8.333886718750051,53.606201171875],[8.495214843750063,53.39423828124998],[8.618945312500045,53.875],[9.20556640625,53.85595703124997],[9.783984375000074,53.554638671874955],[9.31201171875,53.859130859375],[8.92041015625,53.96533203125006],[8.906640625000023,54.26079101562502],[8.625781250000017,54.35395507812501],[8.951855468750011,54.46757812499996],[8.670312500000023,54.903417968750034],[9.739746093750028,54.82553710937498]]],[[[8.307714843750034,54.786962890625034],[8.451464843750017,55.05537109374998],[8.3798828125,54.89985351562501],[8.629589843750068,54.891748046874966],[8.307714843750034,54.786962890625034]]]]},"properties":{"name":"Germany","childNum":4}},{"geometry":{"type":"Polygon","coordinates":[[[43.24599609375002,11.499804687499989],[42.92275390625002,10.999316406249989],[42.557714843750006,11.080761718749997],[41.79824218750002,10.98046875],[41.79267578125001,11.68603515625],[42.378515625,12.46640625],[42.40859375000002,12.494384765625],[42.45,12.521337890624991],[42.47939453125002,12.513623046874997],[42.703710937500006,12.380322265624997],[42.76748046875002,12.4228515625],[42.825292968750006,12.5693359375],[42.86591796875001,12.622802734375],[42.88330078125,12.621289062499997],[43.00566406250002,12.662304687499997],[43.11669921875,12.70859375],[43.353515625,12.367041015624991],[43.38027343750002,12.091259765624997],[42.64003906250002,11.560107421874989],[42.52177734375002,11.572167968749994],[42.58378906250002,11.496777343749997],[43.04277343750002,11.588476562499991],[43.24599609375002,11.499804687499989]]]},"properties":{"name":"Djibouti","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-61.281689453125,15.2490234375],[-61.37539062499999,15.227294921875],[-61.45810546874999,15.633105468750003],[-61.277246093749994,15.526708984374991],[-61.281689453125,15.2490234375]]]},"properties":{"name":"Dominica","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[11.361425781250006,54.891650390625045],[11.739550781250017,54.80742187500002],[11.765917968750074,54.67944335937506],[11.457421875000023,54.628857421874955],[11.035546875000051,54.77309570312505],[11.058593750000028,54.940576171874966],[11.361425781250006,54.891650390625045]]],[[[12.549218750000051,54.96577148437504],[12.11884765625004,54.91440429687506],[12.274023437500034,55.064111328124994],[12.549218750000051,54.96577148437504]]],[[[10.061230468750068,54.88637695312502],[9.80625,54.90600585937503],[9.78125,55.06904296875001],[10.061230468750068,54.88637695312502]]],[[[10.734082031250011,54.750732421875],[10.621679687500006,54.851416015625006],[10.95107421875008,55.15620117187501],[10.734082031250011,54.750732421875]]],[[[15.087695312500017,55.021875],[14.684179687500063,55.10224609375004],[14.765332031250068,55.296728515625034],[15.132617187500017,55.14453125000003],[15.087695312500017,55.021875]]],[[[10.645117187500006,55.60981445312498],[10.785253906250034,55.13339843749998],[10.44277343750008,55.04877929687498],[9.988769531250028,55.163183593750006],[9.860644531250045,55.515478515625034],[10.645117187500006,55.60981445312498]]],[[[12.665722656250068,55.596533203125006],[12.550878906250034,55.55625],[12.59921875,55.68022460937502],[12.665722656250068,55.596533203125006]]],[[[12.56875,55.785058593749966],[12.215039062500011,55.46650390624998],[12.413085937500028,55.28618164062502],[12.089941406250006,55.18813476562505],[12.050390625000034,54.81533203125002],[11.8623046875,54.77260742187502],[11.653808593750057,55.186914062499966],[11.286328125000068,55.20444335937498],[10.978906250000051,55.721533203125006],[11.322265625000028,55.752539062500006],[11.627734375000074,55.95688476562498],[11.819726562500023,55.69765625000002],[11.86640625000004,55.968164062499966],[12.218945312499983,56.11865234374997],[12.578710937500006,56.06406250000006],[12.56875,55.785058593749966]]],[[[11.052148437500051,57.25253906250006],[10.873828125000045,57.26225585937499],[11.174511718750011,57.322900390624994],[11.052148437500051,57.25253906250006]]],[[[9.739746093750028,54.82553710937498],[8.670312500000023,54.903417968750034],[8.61591796875004,55.41821289062503],[8.132128906250074,55.59980468749998],[8.16396484375008,56.60688476562498],[8.671679687500045,56.49565429687496],[8.88808593750008,56.73505859374998],[9.06708984375004,56.79384765625005],[9.196386718750006,56.70166015625],[9.2548828125,57.01171875000003],[8.992773437499977,57.01611328125003],[8.771972656250028,56.72529296875004],[8.468359375,56.66455078125],[8.284082031250023,56.85234374999999],[8.618554687500051,57.11127929687498],[9.43359375,57.17431640625003],[9.96230468750008,57.580957031249994],[10.609960937500034,57.73691406249998],[10.282714843750057,56.620507812499994],[10.926171875000051,56.44326171875002],[10.753417968750028,56.24199218749999],[10.31875,56.212890625],[10.18300781250008,55.86518554687504],[9.903710937500023,55.84282226562502],[10.02363281250004,55.76142578125004],[9.591113281250017,55.49321289062502],[9.670996093750063,55.26640624999999],[9.453710937500006,55.03955078125006],[9.732324218750023,54.96801757812506],[9.739746093750028,54.82553710937498]]]]},"properties":{"name":"Denmark","childNum":10,"cp":[10.2768332,56.1773879]}},{"geometry":{"type":"Polygon","coordinates":[[[-71.647216796875,19.195947265624994],[-71.746484375,19.285839843749997],[-71.71147460937499,19.486572265625],[-71.75742187499999,19.688183593749997],[-71.779248046875,19.718164062499994],[-71.6673828125,19.8486328125],[-70.95415039062499,19.913964843749994],[-70.19384765625,19.63803710937499],[-69.95683593749999,19.671875],[-69.739404296875,19.29921875],[-69.23247070312499,19.27182617187499],[-69.60595703125,19.206494140624997],[-69.62363281249999,19.117822265624994],[-68.684765625,18.90478515625],[-68.33916015624999,18.611523437499997],[-68.68740234375,18.21494140624999],[-68.9349609375,18.408007812500003],[-69.27451171874999,18.43984375],[-69.770654296875,18.443554687499997],[-70.479931640625,18.21728515625],[-70.644677734375,18.336230468750003],[-71.02783203125,18.273193359375],[-71.43896484375,17.63559570312499],[-71.63173828125,17.773632812499997],[-71.768310546875,18.03916015624999],[-71.76376953124999,18.20395507812499],[-71.737255859375,18.270800781250003],[-71.7619140625,18.34130859375],[-71.87255859375,18.416210937499997],[-71.940380859375,18.512597656249994],[-72.000390625,18.597900390625],[-71.98686523437499,18.6103515625],[-71.86650390624999,18.614160156249994],[-71.74321289062499,18.73291015625],[-71.72705078125,18.80322265625],[-71.733642578125,18.856396484374997],[-71.80712890625,18.987011718749997],[-71.647216796875,19.195947265624994]]]},"properties":{"name":"Dominican Rep.","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[8.207617187500006,36.518945312499994],[8.348730468750006,36.36796875],[8.318066406250011,35.654931640624994],[8.31640625,35.403125],[8.35986328125,35.299609375],[8.394238281250011,35.203857421875],[8.312109375,35.084619140624994],[8.27685546875,34.9794921875],[8.24560546875,34.73408203125],[7.513867187500011,34.080517578125],[7.534375,33.717919921874994],[7.877246093750017,33.172119140625],[8.1125,33.055322265624994],[8.333398437500023,32.543603515624994],[9.044042968750006,32.07236328125],[9.160253906250006,31.621337890625],[9.224023437500023,31.373681640624994],[9.51875,30.229394531249994],[9.310253906250011,30.115234375],[9.805273437500006,29.176953125],[9.916015625,27.785693359374996],[9.74755859375,27.330859375],[9.883203125000023,26.630810546874997],[9.491406250000011,26.333740234375],[9.4482421875,26.067138671875],[10.000683593750011,25.332080078125003],[10.255859375,24.591015625],[10.395898437500023,24.485595703125],[10.686132812500006,24.55136718749999],[11.507617187500017,24.314355468749994],[11.967871093750006,23.517871093750003],[7.481738281250017,20.873095703125003],[5.836621093750011,19.479150390624994],[4.227636718750006,19.142773437499997],[3.3564453125,18.986621093750003],[3.119726562500006,19.103173828124994],[3.255859375,19.4109375],[3.130273437500023,19.85019531249999],[1.685449218750023,20.378369140624997],[1.610644531250017,20.555566406249994],[1.165722656250011,20.817431640625003],[1.1455078125,21.102246093749997],[-1.947900390624994,23.124804687500003],[-4.822607421874977,24.99560546875],[-8.683349609375,27.2859375],[-8.683349609375,27.656445312499997],[-8.683349609375,27.900390625],[-8.659912109375,28.718603515625],[-7.485742187499994,29.392236328124994],[-7.427685546874983,29.425],[-7.142431640624977,29.619580078124997],[-6.855566406249977,29.601611328124996],[-6.755126953125,29.583837890625],[-6.635351562499977,29.568798828124997],[-6.597753906249977,29.578955078125],[-6.520556640624989,29.659863281249997],[-6.479736328125,29.820361328124996],[-6.00429687499999,29.83125],[-5.448779296874989,29.956933593749994],[-5.293652343749983,30.058642578124996],[-5.180126953124983,30.166162109374994],[-4.96826171875,30.465380859374996],[-4.778515624999983,30.552392578124994],[-4.529150390624977,30.625537109374996],[-4.322851562499977,30.698876953124994],[-4.148779296874977,30.8095703125],[-3.626904296874983,31.000927734374997],[-3.833398437499994,31.197802734374996],[-3.837109374999983,31.512353515624994],[-3.768164062499977,31.68955078125],[-3.700244140624989,31.700097656249994],[-3.604589843749977,31.686767578125],[-3.439794921874977,31.704541015624997],[-3.017382812499989,31.834277343749996],[-2.988232421874983,31.87421875],[-2.930859374999983,32.042529296874996],[-2.863427734374994,32.07470703125],[-1.275341796874983,32.089013671874994],[-1.16259765625,32.399169921875],[-1.111035156249983,32.552294921874996],[-1.188232421875,32.60849609375],[-1.29638671875,32.675683593749994],[-1.352148437499977,32.703369140625],[-1.45,32.784814453124994],[-1.510009765625,32.87763671875],[-1.550732421874983,33.073583984375],[-1.67919921875,33.318652343749996],[-1.795605468749983,34.751904296875],[-2.131787109374983,34.970849609374994],[-2.190771484374977,35.02978515625],[-2.219628906249994,35.10419921875],[-1.673632812499989,35.18310546875],[-0.426123046874977,35.8615234375],[-0.048242187499994,35.8328125],[0.312207031250011,36.162353515625],[0.9716796875,36.4439453125],[2.593359375,36.60068359375],[2.972851562500011,36.784472656249996],[3.779003906250011,36.89619140625],[4.758105468750017,36.896337890625],[5.29541015625,36.648242187499996],[6.486523437500011,37.085742187499996],[6.927539062500017,36.91943359375],[7.238476562500011,36.968505859375],[7.204296875000011,37.0923828125],[7.910449218750017,36.856347656249994],[8.576562500000023,36.93720703125],[8.601269531250011,36.833935546875],[8.207617187500006,36.518945312499994]]]},"properties":{"name":"Algeria","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-80.131591796875,-2.973144531249957],[-80.27294921875003,-2.995898437499974],[-80.22368164062502,-2.753125],[-80.08076171874995,-2.668847656249966],[-79.90903320312495,-2.725585937499972],[-80.131591796875,-2.973144531249957]]],[[[-90.42392578125,-1.339941406250034],[-90.51953124999994,-1.299121093749974],[-90.47719726562494,-1.22099609374996],[-90.42392578125,-1.339941406250034]]],[[[-89.41889648437498,-0.911035156249966],[-89.60859374999998,-0.888574218750009],[-89.28784179687503,-0.689843750000023],[-89.41889648437498,-0.911035156249966]]],[[[-90.33486328125,-0.771582031249977],[-90.54213867187502,-0.676464843749955],[-90.53168945312493,-0.581445312499966],[-90.26938476562498,-0.48466796874996],[-90.19272460937498,-0.658789062500006],[-90.33486328125,-0.771582031249977]]],[[[-91.42597656249995,-0.460839843749994],[-91.61074218749994,-0.44394531250002],[-91.64667968749998,-0.284472656249946],[-91.46015625000001,-0.255664062500031],[-91.42597656249995,-0.460839843749994]]],[[[-90.57392578124993,-0.333984375],[-90.8677734375,-0.271386718750037],[-90.78037109374998,-0.160449218749989],[-90.57392578124993,-0.333984375]]],[[[-91.27216796874998,0.025146484374986],[-90.799658203125,-0.752050781249991],[-90.90551757812497,-0.94052734375002],[-91.13105468750001,-1.019628906249977],[-91.41904296874998,-0.996679687500006],[-91.49541015624999,-0.860937499999977],[-91.120947265625,-0.559082031250028],[-91.36918945312493,-0.287207031249977],[-91.42885742187502,-0.023388671874955],[-91.59682617187497,0.002099609374994],[-91.36137695312496,0.125830078124977],[-91.27216796874998,0.025146484374986]]],[[[-78.90922851562502,1.252783203124977],[-78.99169921875003,1.293212890625043],[-78.89980468749997,1.359765625],[-78.90922851562502,1.252783203124977]]],[[[-75.28447265624999,-0.10654296875002],[-75.62626953124999,-0.122851562499974],[-75.63203125000001,-0.157617187500037],[-75.56059570312502,-0.200097656249994],[-75.49106445312498,-0.24833984374996],[-75.42470703124997,-0.408886718749983],[-75.259375,-0.59013671874996],[-75.24960937499998,-0.951855468750026],[-75.34819335937499,-0.966796874999957],[-75.38012695312503,-0.94023437499996],[-75.40805664062503,-0.92431640625],[-75.42041015624997,-0.962207031250003],[-75.570556640625,-1.53125],[-76.08979492187501,-2.133105468749974],[-76.6791015625,-2.562597656249991],[-77.860595703125,-2.981640625000011],[-78.240380859375,-3.472558593750009],[-78.345361328125,-3.397363281249966],[-78.64799804687499,-4.248144531250006],[-78.68603515625003,-4.562402343749994],[-78.86152343749998,-4.665039062499943],[-78.90761718749997,-4.714453124999977],[-78.92578125,-4.770703124999983],[-78.91420898437497,-4.818652343749974],[-78.919189453125,-4.858398437499986],[-78.97539062499999,-4.873242187499997],[-78.99526367187497,-4.908007812499974],[-79.03330078124998,-4.96914062499999],[-79.07626953125003,-4.990625],[-79.18666992187497,-4.958203124999983],[-79.26811523437493,-4.957617187499949],[-79.33095703124997,-4.92783203125002],[-79.39941406249997,-4.840039062499983],[-79.45576171874998,-4.766210937499949],[-79.50190429687495,-4.670605468750011],[-79.51616210937493,-4.539160156249963],[-79.57768554687496,-4.50058593750002],[-79.638525390625,-4.454882812500031],[-79.71098632812502,-4.467578124999946],[-79.79726562500002,-4.47636718749996],[-79.8451171875,-4.445898437499977],[-79.962890625,-4.390332031250026],[-80.06352539062499,-4.327539062500023],[-80.13955078125002,-4.296093750000011],[-80.19746093750001,-4.311035156249943],[-80.293359375,-4.416796875],[-80.38349609374998,-4.46367187499996],[-80.424169921875,-4.461425781250028],[-80.47856445312499,-4.430078125000037],[-80.48847656249995,-4.393652343749991],[-80.44384765625003,-4.335839843750023],[-80.35288085937495,-4.208496093750014],[-80.453759765625,-4.205175781249963],[-80.48847656249995,-4.165527343749972],[-80.49345703124999,-4.119140625000014],[-80.510009765625,-4.06953125000004],[-80.49013671874994,-4.010058593750003],[-80.43720703125001,-3.978613281249991],[-80.30327148437499,-4.005078124999969],[-80.26689453124993,-3.948828124999963],[-80.23051757812499,-3.924023437499969],[-80.19414062499996,-3.905859375],[-80.24375,-3.576757812500006],[-80.32465820312498,-3.387890625],[-79.96333007812501,-3.15771484375],[-79.72988281249997,-2.579101562499972],[-79.842138671875,-2.0673828125],[-79.92558593749996,-2.548535156249969],[-80.03017578124994,-2.556738281249949],[-80.00664062499993,-2.353808593750003],[-80.28471679687502,-2.706738281249955],[-80.93217773437493,-2.269140624999977],[-80.76059570312498,-1.934570312500028],[-80.90239257812499,-1.078906249999974],[-80.55390624999998,-0.847949218749989],[-80.45546875,-0.585449218749986],[-80.282373046875,-0.620507812500023],[-80.48227539062503,-0.368261718749963],[-80.046142578125,0.155371093750048],[-80.08828124999997,0.78476562500002],[-78.89965820312503,1.20625],[-78.85966796874996,1.455371093750031],[-78.1806640625,0.968554687499974],[-77.702880859375,0.837841796874997],[-77.46767578124997,0.636523437500017],[-77.396337890625,0.393896484374963],[-76.49462890624997,0.23544921875002],[-76.27060546874998,0.439404296874997],[-75.77666015624999,0.08925781249998],[-75.28447265624999,-0.10654296875002]]]]},"properties":{"name":"Ecuador","childNum":9}},{"geometry":{"type":"Polygon","coordinates":[[[34.24531250000001,31.208300781249996],[34.904296875,29.47734375],[34.736425781250006,29.27060546875],[34.39970703125002,28.01601562499999],[34.22011718750002,27.764306640624994],[33.76025390625,28.04765625],[33.24775390625001,28.567724609375],[32.56572265625002,29.973974609375],[32.35976562500002,29.630664062499996],[32.89824218750002,28.565234375],[33.54707031250001,27.898144531249997],[33.5498046875,27.607373046874997],[33.84931640625001,27.184912109375],[33.959082031250006,26.6490234375],[35.19414062500002,24.475146484375003],[35.78388671875001,23.937792968750003],[35.54082031250002,23.920654296875],[35.50439453125,23.779296875],[35.697851562500006,22.946191406249994],[36.22968750000001,22.628808593749994],[36.87138671875002,21.996728515624994],[31.434472656250023,21.995849609375],[31.486132812500017,22.14780273437499],[31.400292968750023,22.202441406250003],[31.260644531250023,22.00229492187499],[31.092675781250023,21.994873046875],[28.036425781250017,21.995361328125],[24.980273437500017,21.995849609375],[24.980273437500017,25.5888671875],[24.980273437500017,29.181884765625],[24.703222656250006,30.201074218749994],[24.96142578125,30.678515625],[24.85273437500001,31.334814453125],[25.150488281250006,31.654980468749997],[25.382226562500023,31.51279296875],[25.89326171875001,31.620898437499996],[27.248046875,31.377880859374997],[27.5400390625,31.212695312499996],[28.51484375000001,31.050439453124994],[29.072070312500017,30.830273437499997],[29.929785156250006,31.227490234374997],[30.22265625,31.2583984375],[30.395117187500006,31.4576171875],[30.92353515625001,31.566845703124997],[30.56298828125,31.4169921875],[31.001757812500017,31.462792968749994],[31.082910156250023,31.603320312499996],[31.5244140625,31.458251953125],[31.888964843750017,31.54140625],[32.13603515625002,31.341064453125],[31.8921875,31.482470703124996],[31.77109375,31.292578125],[32.10175781250001,31.092822265624996],[32.281835937500006,31.200878906249997],[32.21621093750002,31.29375],[32.60332031250002,31.06875],[33.66650390625,31.130419921874996],[34.19814453125002,31.322607421875],[34.24531250000001,31.208300781249996]]]},"properties":{"name":"Egypt","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[40.141210937500006,15.696142578125034],[40.399023437500006,15.579882812500045],[39.975195312500006,15.612451171875023],[39.94746093750004,15.696142578125034],[40.07050781250004,15.676611328125034],[39.93994140625003,15.744531250000023],[39.9567382812501,15.889404296875057],[40.141210937500006,15.696142578125034]]],[[[40.07646484375002,16.082421875000023],[40.11005859375004,15.985742187500051],[39.99609375000003,16.04267578125001],[40.07646484375002,16.082421875000023]]],[[[40.938574218750006,13.983105468749997],[40.82011718750002,14.111669921874991],[40.22148437500002,14.431152343749972],[39.531835937500006,14.53671875],[39.198046875000074,14.479394531250037],[39.1354492187501,14.581884765625034],[39.07421874999997,14.628222656249974],[39.02382812499999,14.628222656249974],[38.99570312500006,14.586865234374983],[38.81201171875003,14.482324218750009],[38.50439453124997,14.42441406250002],[38.43144531250002,14.428613281249994],[38.221484375000074,14.649658203124986],[38.002539062500006,14.737109375000045],[37.94345703125006,14.810546875],[37.884179687499994,14.852294921874972],[37.82031250000003,14.708496093749986],[37.70839843750005,14.45722656250004],[37.64843750000003,14.32255859375006],[37.571191406249994,14.149072265624966],[37.546777343749994,14.143847656249974],[37.507226562499994,14.156396484375037],[37.257226562499994,14.453759765625051],[37.024511718750006,14.271972656250057],[36.81191406250005,14.315039062500034],[36.67910156250005,14.307568359375026],[36.542382812499994,14.25820312499999],[36.52431640625005,14.256835937499986],[36.492285156250006,14.544335937500023],[36.470800781250006,14.736474609375009],[36.448144531249994,14.940087890625009],[36.42675781249997,15.132080078125043],[36.566015625,15.362109375],[36.9137695312501,16.296191406250045],[36.887792968750006,16.624658203124994],[36.9787109375001,16.800585937500045],[36.9757812500001,16.866552734375006],[36.99521484375006,17.020556640625017],[37.00898437500004,17.058886718750017],[37.06152343749997,17.061279296875057],[37.16953125000006,17.04140625],[37.41103515625005,17.061718749999955],[37.452929687500074,17.108691406250017],[37.51015625,17.28813476562499],[37.54746093750006,17.32412109375005],[37.78242187500004,17.458007812500057],[38.253515625,17.584765625000017],[38.26728515625004,17.616699218750057],[38.28984375000002,17.637011718750017],[38.34736328125004,17.68359375],[38.37373046875004,17.717333984375045],[38.42246093750006,17.823925781249983],[38.60947265625006,18.00507812500004],[39.03447265625002,17.085546875000034],[39.298925781250006,15.921093750000011],[39.78554687499999,15.124853515624991],[39.86376953124997,15.470312500000034],[40.20410156250003,15.014111328124983],[41.17646484375004,14.620312500000054],[41.65820312499997,13.983056640624994],[42.24511718749997,13.587646484374986],[42.39931640625005,13.212597656249969],[42.522851562499994,13.221484375],[42.796191406250074,12.864257812500057],[42.96953125000002,12.808349609375028],[42.99902343750003,12.899511718750048],[43.08291015625005,12.824609374999966],[43.11669921874997,12.708593749999963],[43.00566406250002,12.66230468750004],[42.88330078124997,12.621289062500026],[42.86591796875004,12.622802734374986],[42.82529296875006,12.569335937500014],[42.767480468749994,12.422851562500014],[42.70371093750006,12.380322265625054],[42.479394531249994,12.513623046875026],[42.45,12.521337890625006],[42.40859375,12.494384765625014],[42.37851562500006,12.46640625],[42.28994140625005,12.570214843750009],[42.225,12.661962890624963],[42.13427734374997,12.771435546874969],[41.95214843749997,12.88232421875],[41.85957031250004,13.025878906250028],[41.76503906250005,13.183935546874991],[41.362890625,13.499804687500031],[40.938574218750006,13.983105468749997]]]]},"properties":{"name":"Eritrea","childNum":3}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-17.887939453125,27.809570312500057],[-17.984765625000023,27.646386718750023],[-18.160546874999937,27.76147460937503],[-17.887939453125,27.809570312500057]]],[[[-15.400585937499955,28.147363281250023],[-15.436767578124972,27.810693359375023],[-15.71030273437492,27.784082031250023],[-15.809472656249966,27.994482421874977],[-15.682763671874994,28.15405273437497],[-15.400585937499955,28.147363281250023]]],[[[-17.184667968749977,28.02197265624997],[-17.324902343749955,28.11767578125003],[-17.25859375,28.203173828125045],[-17.103759765624943,28.111132812500017],[-17.184667968749977,28.02197265624997]]],[[[-16.33447265624997,28.37993164062499],[-16.41821289062497,28.15141601562496],[-16.65800781249999,28.007177734374977],[-16.905322265625017,28.33959960937503],[-16.12363281249992,28.57597656249996],[-16.33447265624997,28.37993164062499]]],[[[-14.196777343749943,28.169287109375063],[-14.332617187500006,28.056005859374977],[-14.49179687499992,28.100927734374977],[-14.231982421875017,28.21582031250003],[-14.003369140624983,28.706689453125023],[-13.85722656249996,28.73803710937503],[-13.928027343749989,28.25346679687499],[-14.196777343749943,28.169287109375063]]],[[[-17.83427734374999,28.49321289062496],[-18.00078124999999,28.758251953124955],[-17.928808593749977,28.844580078125063],[-17.7265625,28.724462890625006],[-17.83427734374999,28.49321289062496]]],[[[-13.715966796874966,28.911230468750034],[-13.85991210937496,28.869091796874983],[-13.823632812499966,29.013330078124966],[-13.463574218749955,29.237207031250023],[-13.477929687499966,29.00659179687503],[-13.715966796874966,28.911230468750034]]],[[[1.593945312500068,38.672070312499955],[1.40576171875,38.670996093750006],[1.436328125000017,38.768212890624994],[1.593945312500068,38.672070312499955]]],[[[1.445214843750051,38.91870117187503],[1.223339843750068,38.90385742187502],[1.3486328125,39.080810546875],[1.564453125,39.12104492187504],[1.623632812499977,39.03881835937497],[1.445214843750051,38.91870117187503]]],[[[3.145312500000017,39.79008789062499],[3.461816406250023,39.69775390625003],[3.072851562500006,39.30126953124997],[2.799804687500057,39.38505859374999],[2.700585937500023,39.54213867187502],[2.49951171875,39.47788085937498],[2.37001953125008,39.57207031249999],[3.15869140625,39.97050781249999],[3.145312500000017,39.79008789062499]]],[[[4.293652343750011,39.84184570312499],[3.8671875,39.958740234375],[3.853417968750051,40.06303710937502],[4.22578125000004,40.032373046874966],[4.293652343750011,39.84184570312499]]],[[[-1.794042968749949,43.407324218750006],[-1.410693359374932,43.240087890625034],[-1.460839843749937,43.05175781250006],[-1.300048828124943,43.10097656250002],[-0.586425781249943,42.798974609374966],[0.631640625000045,42.689599609374994],[0.696875,42.84511718750005],[1.428320312499977,42.59589843749998],[1.414843750000074,42.54838867187499],[1.448828124999977,42.43745117187504],[1.534082031250051,42.44169921875002],[1.7060546875,42.50332031250005],[1.859765625000051,42.457080078125045],[1.927929687500068,42.42631835937499],[2.032714843750028,42.353515625],[3.21142578125,42.43115234375],[3.248046875,41.94423828125002],[3.0048828125,41.76743164062506],[2.082617187500063,41.287402343750045],[1.032910156250068,41.06206054687496],[0.714648437500074,40.822851562500006],[0.891113281250057,40.72236328125004],[0.59609375000008,40.614501953125],[-0.327001953124949,39.519873046875006],[-0.204931640624949,39.062597656250034],[0.20156250000008,38.75917968750002],[-0.520800781249989,38.317285156249966],[-0.814648437500011,37.76992187500002],[-0.721582031249966,37.63105468749998],[-1.327539062499937,37.561132812500034],[-1.640966796874949,37.38696289062497],[-2.111523437499983,36.77666015624999],[-4.366845703124994,36.71811523437506],[-4.67412109374996,36.506445312500006],[-5.171484374999949,36.423779296874955],[-5.3609375,36.134912109374994],[-5.62548828125,36.02592773437499],[-6.040673828124937,36.18842773437498],[-6.38413085937492,36.63701171874996],[-6.216796875000028,36.91357421875],[-6.396191406249983,36.831640625],[-6.863769531250028,37.27890625],[-7.406152343749937,37.17944335937497],[-7.44394531249992,37.72827148437497],[-6.957568359374932,38.18789062499999],[-7.106396484374983,38.181005859375006],[-7.343017578124943,38.45742187500002],[-6.997949218749994,39.05644531250002],[-7.53569335937496,39.66157226562501],[-7.117675781249972,39.681689453125045],[-6.975390624999932,39.79838867187502],[-6.896093749999949,40.02182617187506],[-7.032617187499966,40.16791992187498],[-6.8101562499999,40.343115234375034],[-6.928466796874972,41.009130859375006],[-6.2125,41.53203125],[-6.542187499999955,41.672509765624994],[-6.61826171874992,41.9423828125],[-7.147119140625023,41.98115234374998],[-7.40361328124996,41.833691406249955],[-8.152490234374937,41.81196289062498],[-8.266064453124983,42.13740234375001],[-8.777148437500017,41.941064453124994],[-8.887207031249943,42.105273437500045],[-8.690917968749943,42.274169921875],[-8.815820312499966,42.285253906250034],[-8.730029296874989,42.411718750000034],[-8.8115234375,42.64033203124998],[-9.033105468750023,42.593847656250006],[-8.927197265624926,42.79858398437497],[-9.235205078124977,42.97690429687498],[-9.178076171874977,43.17402343749998],[-8.248925781249937,43.43940429687498],[-8.256738281249937,43.57988281249999],[-8.004687499999932,43.69438476562496],[-7.503613281249983,43.73994140625001],[-7.060986328124955,43.55395507812503],[-5.846679687499943,43.645068359375045],[-4.52304687499992,43.41572265625004],[-3.604638671874966,43.51948242187504],[-3.045605468749926,43.37158203125],[-2.875048828125017,43.454443359375006],[-2.337109374999926,43.32802734375002],[-1.794042968749949,43.407324218750006]]]]},"properties":{"name":"Spain","childNum":12,"cp":[-2.9366964,40.3438963]}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[22.61738281250004,58.62124023437502],[23.323242187500057,58.45083007812502],[22.730273437500045,58.23066406250001],[22.371679687499977,58.217138671875006],[21.996875,57.93134765624998],[22.187695312500068,58.15434570312502],[21.88212890624999,58.262353515624994],[21.862304687500057,58.497167968750034],[22.61738281250004,58.62124023437502]]],[[[23.343554687500017,58.550341796875045],[23.10908203125004,58.65922851562502],[23.332812500000045,58.648583984374994],[23.343554687500017,58.550341796875045]]],[[[22.923730468750023,58.826904296875],[22.54218750000001,58.68999023437499],[22.411035156250023,58.863378906250034],[22.05625,58.94360351562506],[22.6494140625,59.08710937499998],[22.90986328125004,58.99121093749997],[22.923730468750023,58.826904296875]]],[[[28.0125,59.484277343749966],[28.15107421875004,59.374414062499966],[27.434179687500006,58.787255859374994],[27.502441406250057,58.221337890624994],[27.778515625000068,57.87070312500006],[27.542089843750063,57.799414062500006],[27.4,57.66679687499999],[27.35195312500005,57.528125],[26.96601562500001,57.60913085937506],[26.532617187499994,57.53100585937503],[26.29804687500001,57.60107421875],[25.66015625,57.920166015625],[25.27265625000001,58.009375],[25.11103515625004,58.06342773437498],[24.45888671875005,57.907861328124994],[24.3625,57.86616210937501],[24.322558593750074,57.87060546875003],[24.529101562500045,58.35424804687497],[24.114843750000034,58.26611328125006],[23.767578125000057,58.36083984374997],[23.50927734375003,58.65854492187498],[23.680761718750063,58.787158203125074],[23.43203125,58.920654296875],[23.494433593750017,59.19565429687498],[24.083398437500023,59.29189453125005],[24.38037109375003,59.47265625],[25.44375,59.52114257812502],[25.50927734374997,59.63901367187506],[26.974707031250006,59.450634765624955],[28.0125,59.484277343749966]]]]},"properties":{"name":"Estonia","childNum":4}},{"geometry":{"type":"Polygon","coordinates":[[[38.43144531250002,14.428613281249994],[38.50439453125,14.424414062499991],[38.81201171875,14.482324218749994],[38.995703125,14.586865234374997],[39.02382812500002,14.628222656250003],[39.07421875,14.628222656250003],[39.13544921875001,14.581884765624991],[39.19804687500002,14.479394531249994],[39.531835937500006,14.53671875],[40.22148437500002,14.43115234375],[40.82011718750002,14.111669921874991],[40.938574218750006,13.983105468749997],[41.362890625,13.499804687500003],[41.76503906250002,13.183935546874991],[41.85957031250001,13.02587890625],[41.9521484375,12.88232421875],[42.13427734375,12.771435546874997],[42.225,12.661962890624991],[42.28994140625002,12.570214843749994],[42.378515625,12.46640625],[41.79267578125001,11.68603515625],[41.79824218750002,10.98046875],[42.557714843750006,11.080761718749997],[42.92275390625002,10.999316406249989],[42.65644531250001,10.6],[42.84160156250002,10.203076171874997],[43.181640625,9.879980468749991],[43.482519531250006,9.379492187499991],[43.98378906250002,9.008837890624989],[46.97822265625001,7.9970703125],[47.97822265625001,7.9970703125],[44.940527343750006,4.912011718749994],[43.988867187500006,4.950537109374991],[43.58349609375,4.85498046875],[43.12568359375001,4.644482421874997],[42.85664062500001,4.32421875],[42.02412109375001,4.137939453125],[41.91533203125002,4.031298828124989],[41.88398437500001,3.977734375],[41.73769531250002,3.979052734374989],[41.48193359375,3.96328125],[41.37246093750002,3.946191406249994],[41.22089843750001,3.943554687499997],[41.02080078125002,4.057470703124991],[40.765234375,4.27304687499999],[39.84218750000002,3.851464843749994],[39.79033203125002,3.754248046874991],[39.65751953125002,3.577832031249997],[39.49443359375002,3.456103515624989],[38.608007812500006,3.60009765625],[38.45156250000002,3.604833984374991],[38.22529296875001,3.618994140624991],[38.08613281250001,3.64882812499999],[37.15458984375002,4.254541015624994],[36.90556640625002,4.411474609374991],[36.02197265625,4.468115234374991],[35.76308593750002,4.808007812499994],[35.75615234375002,4.950488281249989],[35.779296875,5.105566406249991],[35.80029296875,5.156933593749997],[35.74501953125002,5.343994140625],[35.325292968750006,5.364892578124994],[35.2646484375,5.412060546874997],[35.26386718750001,5.457910156249994],[35.26835937500002,5.492285156249991],[34.98359375000001,5.858300781249994],[34.71064453125001,6.660302734374994],[34.06425781250002,7.225732421874994],[33.902441406250006,7.509521484375],[32.99892578125002,7.899511718749991],[33.28105468750002,8.437255859375],[33.95332031250001,8.443505859374994],[34.07275390625,8.545263671874991],[34.078125,9.461523437499991],[34.31123046875001,10.190869140624997],[34.34394531250001,10.658642578124997],[34.571875,10.880175781249989],[34.77128906250002,10.746191406249991],[34.93144531250002,10.864794921874989],[35.1123046875,11.816552734374994],[35.67021484375002,12.623730468749997],[36.12519531250001,12.75703125],[36.52431640625002,14.2568359375],[36.54238281250002,14.25820312499999],[36.67910156250002,14.307568359374997],[36.81191406250002,14.315039062499991],[37.024511718750006,14.27197265625],[37.25722656250002,14.453759765624994],[37.50722656250002,14.156396484374994],[37.54677734375002,14.143847656250003],[37.57119140625002,14.149072265624994],[37.6484375,14.322558593750003],[37.70839843750002,14.457226562499997],[37.8203125,14.70849609375],[37.88417968750002,14.852294921875],[37.943457031250006,14.810546875],[38.002539062500006,14.737109375],[38.22148437500002,14.649658203125],[38.43144531250002,14.428613281249994]]]},"properties":{"name":"Ethiopia","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[22.17509765624999,60.370751953124994],[22.41552734375003,60.30336914062505],[22.36054687500004,60.165576171875045],[22.07714843750003,60.286328124999955],[22.17509765624999,60.370751953124994]]],[[[21.450878906250068,60.529589843750045],[21.3,60.47978515625002],[21.224707031250006,60.62060546875003],[21.450878906250068,60.529589843750045]]],[[[21.2177734375,63.241308593750034],[21.415625,63.19736328125006],[21.25341796875,63.152001953124966],[21.08388671875008,63.277539062499955],[21.2177734375,63.241308593750034]]],[[[24.848242187500034,64.99101562499999],[24.576562500000023,65.04287109375],[24.970605468750023,65.05532226562502],[24.848242187500034,64.99101562499999]]],[[[28.96582031250003,69.02197265625],[28.414062500000057,68.90415039062506],[28.77285156250005,68.84003906249995],[28.470703125000057,68.48837890625],[28.685156250000034,68.189794921875],[29.343847656250006,68.06186523437506],[29.988085937500017,67.66826171874999],[29.066210937500045,66.89174804687497],[30.102734375000097,65.72626953125004],[29.715917968750063,65.62456054687502],[29.608007812500006,65.248681640625],[29.826953125000017,65.14506835937502],[29.60419921875004,64.968408203125],[30.072851562500063,64.76503906250005],[30.04189453125005,64.44335937499997],[30.513769531250006,64.2],[30.50390625000003,64.02060546875],[29.991503906250074,63.73515625000002],[31.180859375000097,63.208300781250074],[31.533984375000017,62.885400390624994],[31.18671875000004,62.48139648437504],[29.69013671875004,61.54609375000001],[27.797656250000074,60.53613281250003],[26.53466796874997,60.412890625000074],[26.56933593750003,60.62456054687502],[26.377734375000074,60.42407226562503],[25.955957031250023,60.474218750000034],[26.03583984375004,60.34150390625001],[25.75800781250004,60.26752929687504],[25.65644531250004,60.33320312499998],[24.44560546874999,60.021289062500045],[23.46357421875004,59.986230468749994],[23.021289062500074,59.81601562500006],[23.19843750000001,60.02182617187498],[22.911718750000063,60.20971679687497],[22.749804687500017,60.057275390624994],[22.462695312500045,60.029199218749966],[22.5849609375,60.380566406249955],[21.436035156250057,60.596386718749955],[21.605957031250057,61.59155273437503],[21.255957031250063,61.98964843750005],[21.143847656250045,62.73999023437506],[21.650976562500063,63.039306640625],[21.545117187499983,63.204296874999955],[22.31972656250005,63.310449218749994],[22.532324218750034,63.647851562499994],[23.598925781250074,64.04091796874997],[24.557910156250045,64.801025390625],[25.288183593750063,64.8603515625],[25.34785156250004,65.47924804687497],[24.674902343750006,65.67070312499999],[24.628027343750034,65.85917968750002],[24.15546875000004,65.80527343750006],[23.700292968750034,66.25263671874998],[23.988574218750045,66.81054687500003],[23.64150390625005,67.12939453124997],[23.733593750000068,67.42290039062499],[23.454882812500045,67.46025390625007],[23.63886718750004,67.95439453125002],[22.854101562500034,68.36733398437502],[21.99746093750005,68.52060546874998],[20.622167968750006,69.036865234375],[21.065722656250017,69.04174804687503],[21.06611328125001,69.21411132812497],[21.59375,69.273583984375],[22.410937500000074,68.719873046875],[23.324023437500017,68.64897460937502],[23.85400390625,68.80590820312503],[24.94140625000003,68.59326171875006],[25.748339843750017,68.99013671875],[26.07246093750004,69.69155273437497],[26.525390625000057,69.91503906250003],[27.127539062500063,69.90649414062497],[27.747851562500045,70.06484375],[29.14160156250003,69.67143554687505],[29.33339843750005,69.47299804687503],[28.846289062500006,69.17690429687502],[28.96582031250003,69.02197265625]]]]},"properties":{"name":"Finland","childNum":5}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[178.48789062500018,-18.97412109375],[177.95869140624998,-19.121582031250014],[178.33427734375013,-18.93447265625001],[178.48789062500018,-18.97412109375]]],[[[179.34931640625015,-18.10234375000003],[179.25351562500018,-18.030566406249974],[179.30644531250013,-17.944042968750026],[179.34931640625015,-18.10234375000003]]],[[[178.28017578124994,-17.37197265625001],[178.59160156249996,-17.651464843750006],[178.66767578125004,-18.080859375],[177.95546875000005,-18.264062500000023],[177.32138671875,-18.077539062500037],[177.26396484375007,-17.86347656250004],[177.5044921875,-17.539550781250043],[177.81796875000012,-17.38847656249999],[178.28017578124994,-17.37197265625001]]],[[[180,-16.96308593750001],[179.89697265625003,-16.96406250000004],[180,-16.785742187500034],[180,-16.96308593750001]]],[[[-179.97490234374996,-16.92480468750003],[-180,-16.96298828124999],[-180,-16.907812500000034],[-180,-16.82431640624999],[-180,-16.78554687499999],[-179.86098632812502,-16.68828124999999],[-179.97490234374996,-16.92480468750003]]],[[[-179.92944335937503,-16.502832031250037],[-179.999951171875,-16.540039062499986],[-179.900927734375,-16.431542968749994],[-179.92944335937503,-16.502832031250037]]],[[[179.99921875000004,-16.168554687499977],[179.56416015625004,-16.636914062499997],[179.56816406249996,-16.747460937499966],[179.93037109375004,-16.51943359375005],[179.9279296875001,-16.74443359374996],[179.41933593750005,-16.80654296875001],[179.20234375000004,-16.71269531249999],[179.00683593750003,-16.90019531249999],[178.70664062500018,-16.97617187500002],[178.4974609375,-16.78789062500003],[178.58359375000012,-16.621875],[178.80507812499994,-16.631445312500034],[179.55175781250003,-16.249902343750023],[180,-16.15292968749999],[179.99921875000004,-16.168554687499977]]]]},"properties":{"name":"Fiji","childNum":7}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-61.01875,-51.7857421875],[-60.87597656250003,-51.79423828125004],[-60.94755859374996,-51.94628906250002],[-61.14501953125003,-51.83945312500001],[-61.01875,-51.7857421875]]],[[[-60.28623046874995,-51.461914062500014],[-59.38759765625002,-51.35996093750003],[-59.26806640625,-51.42753906250003],[-59.92138671874997,-51.969531250000045],[-60.246337890625,-51.98642578125003],[-60.35346679687498,-52.13994140625004],[-60.686376953125034,-52.18837890624996],[-60.96142578125003,-52.05732421874999],[-60.23847656249998,-51.771972656250036],[-60.58251953125,-51.71269531250004],[-60.24516601562493,-51.638867187500004],[-60.56845703124998,-51.357812499999945],[-60.28623046874995,-51.461914062500014]]],[[[-60.11171875000002,-51.39589843749998],[-60.275341796874955,-51.28056640625002],[-60.06982421875,-51.307910156249996],[-60.11171875000002,-51.39589843749998]]],[[[-58.85019531249995,-51.26992187499998],[-58.42583007812502,-51.32421875000003],[-58.508935546874994,-51.48359375],[-58.271582031250034,-51.57470703124999],[-58.25922851562501,-51.417089843750034],[-57.976513671874955,-51.384375],[-57.80849609375002,-51.51796875],[-57.96044921874997,-51.58320312500003],[-57.79179687499999,-51.63613281249998],[-58.68349609375002,-51.93623046875001],[-58.65278320312498,-52.09921875],[-59.19584960937496,-52.01767578125],[-59.06801757812502,-52.17304687500003],[-59.341503906249955,-52.19599609375],[-59.395654296874966,-52.308007812499994],[-59.64873046875002,-52.134375],[-59.57080078124994,-51.92539062500003],[-59.05952148437498,-51.685449218749994],[-59.09663085937498,-51.49140624999998],[-58.85019531249995,-51.26992187499998]]]]},"properties":{"name":"Falkland Is.","childNum":4}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[55.79736328125003,-21.33935546875003],[55.36269531250005,-21.27363281250004],[55.23281250000005,-21.05839843749999],[55.311328125000074,-20.90410156249999],[55.661914062500074,-20.90625],[55.8390625000001,-21.13857421874998],[55.79736328125003,-21.33935546875003]]],[[[45.180273437500006,-12.97675781250004],[45.069433593750006,-12.895605468750034],[45.09238281250006,-12.653027343749997],[45.22314453124997,-12.752148437500026],[45.180273437500006,-12.97675781250004]]],[[[-51.65253906249998,4.061279296874972],[-52.327880859375,3.18173828125002],[-52.58300781250003,2.528906249999977],[-52.90346679687502,2.211523437499977],[-53.76777343749998,2.354833984375048],[-54.13007812499998,2.121044921875026],[-54.43310546875,2.207519531250057],[-54.51508789062498,2.245458984374963],[-54.55048828125001,2.293066406249991],[-54.59194335937502,2.313769531250031],[-54.61625976562499,2.326757812500006],[-54.60473632812497,2.335791015624991],[-54.56840820312502,2.342578125000031],[-54.53593749999999,2.343310546875003],[-54.48554687500001,2.416113281250006],[-54.402001953124966,2.46152343750002],[-54.25673828125002,2.713720703124977],[-54.19550781249998,2.817871093750057],[-54.17070312499999,2.993603515624969],[-54.203125,3.138183593750028],[-54.18803710937499,3.178759765625031],[-54.063183593749955,3.353320312499989],[-54.00957031249993,3.448535156250017],[-54.03422851562499,3.62939453125],[-54.350732421874994,4.054101562500023],[-54.47968749999998,4.836523437499991],[-53.91992187499997,5.768994140624983],[-52.899316406249966,5.425048828124986],[-52.29052734375003,4.942187500000031],[-52.324609374999966,4.770898437500037],[-52.21997070312494,4.862792968750014],[-52.05810546875003,4.717382812499963],[-52.00292968749997,4.352294921875014],[-51.82753906250002,4.635693359375026],[-51.65253906249998,4.061279296874972]]],[[[-60.826269531250006,14.494482421874991],[-61.063720703125,14.467089843750017],[-61.01132812499998,14.601904296875034],[-61.21333007812501,14.848583984375011],[-60.927148437499966,14.755175781249989],[-60.826269531250006,14.494482421874991]]],[[[-61.23046875000003,15.889941406250074],[-61.310742187499955,15.894677734374966],[-61.25,16.006298828124983],[-61.23046875000003,15.889941406250074]]],[[[-61.58955078125001,16.006933593750006],[-61.759423828124966,16.062060546875045],[-61.74804687499997,16.355273437500017],[-61.55234374999998,16.270898437499966],[-61.58955078125001,16.006933593750006]]],[[[-61.3271484375,16.230419921874983],[-61.522167968749955,16.22802734375003],[-61.47119140624994,16.506640625000045],[-61.17260742187497,16.25610351562497],[-61.3271484375,16.230419921874983]]],[[[9.480371093750023,42.80541992187503],[9.550683593750051,42.12973632812506],[9.186132812500034,41.38491210937502],[8.80751953125008,41.58837890625],[8.886816406249977,41.70068359375003],[8.621875,41.93071289062502],[8.700976562500045,42.09560546875002],[8.565625,42.35771484374996],[8.81484375000008,42.60791015625003],[9.313378906250023,42.71318359374999],[9.363183593750051,43.01738281249996],[9.480371093750023,42.80541992187503]]],[[[-1.17832031249992,45.904052734375],[-1.213574218750011,45.81660156250004],[-1.388671874999972,46.05039062500006],[-1.17832031249992,45.904052734375]]],[[[5.789746093749983,49.53828125000001],[5.823437500000011,49.50507812499998],[5.9013671875,49.48974609374997],[5.928906250000011,49.47753906249997],[5.959472656250028,49.45463867187502],[6.01142578125004,49.44545898437502],[6.074121093750023,49.45463867187502],[6.119921875000017,49.485205078125034],[6.181054687500051,49.498925781249966],[6.344335937500006,49.45273437499998],[6.735449218750006,49.16059570312498],[7.450585937500051,49.152197265625034],[8.134863281250006,48.97358398437498],[7.616601562500023,48.15678710937502],[7.615625,47.59272460937504],[7.343164062499994,47.43310546875003],[7.136035156249989,47.489843750000034],[6.968359375000034,47.453222656250034],[6.900390625000028,47.39423828125001],[7.000585937500034,47.339453125000034],[7.000585937500034,47.32250976562506],[6.978515625000057,47.30205078124996],[6.95205078125008,47.26718750000006],[6.820703125000051,47.163183593750006],[6.688085937500034,47.05825195312505],[6.66689453125008,47.026513671874966],[6.624804687500017,47.00434570312498],[6.45625,46.948339843750034],[6.438646763392874,46.774418247767855],[6.129687500000045,46.56699218750006],[6.118111049107182,46.447459542410726],[6.095898437500011,46.279394531250006],[5.970019531250045,46.214697265625034],[5.971484375000074,46.151220703125006],[6.006640625000045,46.14233398437506],[6.086621093750068,46.14702148437502],[6.19941406250004,46.19306640624998],[6.234667968750045,46.332617187500006],[6.321875,46.39370117187502],[6.428906250000011,46.43051757812506],[6.578222656250034,46.437353515625034],[6.758105468750017,46.41577148437497],[6.772070312500006,46.16513671874998],[6.897265625000017,46.05175781249997],[6.953710937500063,46.017138671875045],[7.00390625,45.95883789062506],[7.021093750000034,45.92578124999997],[6.790917968750023,45.740869140624966],[7.146386718750051,45.381738281249994],[7.07832031250004,45.23994140624998],[6.634765625000028,45.06816406249996],[6.99267578125,44.82729492187502],[6.900195312499989,44.33574218749996],[7.318554687500068,44.13798828125002],[7.637207031250057,44.16484375],[7.4931640625,43.767138671875045],[6.570214843750023,43.199072265625034],[6.115917968750011,43.07236328124998],[5.406542968750074,43.228515625],[5.05976562500004,43.44453125000004],[4.712109375000011,43.373291015625],[3.910839843750011,43.563085937500034],[3.258886718750063,43.193212890625006],[3.051757812500057,42.915136718750006],[3.21142578125,42.43115234375],[2.032714843750028,42.353515625],[1.927929687500068,42.42631835937499],[1.859765625000051,42.457080078125045],[1.7060546875,42.50332031250005],[1.709863281250051,42.604443359374955],[1.568164062500045,42.63500976562506],[1.501367187500023,42.64272460937502],[1.428320312499977,42.59589843749998],[0.696875,42.84511718750005],[0.631640625000045,42.689599609374994],[-0.586425781249943,42.798974609374966],[-1.300048828124943,43.10097656250002],[-1.460839843749937,43.05175781250006],[-1.410693359374932,43.240087890625034],[-1.794042968749949,43.407324218750006],[-1.484863281249943,43.56376953124999],[-1.245507812499937,44.55986328124999],[-1.07695312499996,44.68984375],[-1.152880859374989,44.764013671875006],[-1.245214843749977,44.66669921874998],[-1.081005859374983,45.532421874999955],[-0.548486328124966,45.00058593750006],[-0.790771484375028,45.46801757812497],[-1.195996093749983,45.714453125],[-1.03173828125,45.741064453125006],[-1.14628906249996,46.311376953125034],[-1.786523437499937,46.51484375000001],[-2.059375,46.81030273437497],[-2.01889648437492,47.03764648437502],[-2.197070312499989,47.16293945312506],[-2.027587890625028,47.27358398437502],[-1.742529296874949,47.21596679687502],[-1.97539062499996,47.31069335937505],[-2.503125,47.31206054687496],[-2.427685546874983,47.47089843749998],[-2.770312499999989,47.513867187499955],[-2.787207031249949,47.62553710937496],[-4.312109374999949,47.82290039062502],[-4.678808593749949,48.03950195312501],[-4.32944335937492,48.169970703125045],[-4.577148437499943,48.2900390625],[-4.241406249999926,48.30366210937501],[-4.719384765624966,48.363134765625034],[-4.7625,48.45024414062502],[-4.531201171874983,48.61997070312506],[-3.231445312499972,48.84082031250003],[-2.692333984374983,48.53681640624998],[-2.446191406249937,48.64829101562506],[-2.00371093749996,48.58208007812499],[-1.905712890624955,48.69711914062506],[-1.376464843749972,48.65258789062503],[-1.565478515624932,48.805517578125034],[-1.583105468749977,49.20239257812506],[-1.856445312499972,49.68378906249998],[-1.258642578124949,49.68017578125006],[-1.138525390624977,49.38789062500001],[-0.163476562499937,49.296777343749994],[0.41689453125008,49.448388671874994],[0.129394531250028,49.508447265624966],[0.186718749999983,49.703027343749994],[1.245507812500051,49.99824218750001],[1.5927734375,50.25219726562506],[1.672265625000023,50.885009765625],[2.52490234375,51.097119140624955],[2.759375,50.750634765624994],[3.10683593750008,50.779443359374994],[3.27333984375008,50.53154296875002],[3.595410156250068,50.47734374999999],[3.689355468750023,50.30605468750002],[4.174609375000017,50.24648437500005],[4.149316406250023,49.971582031249994],[4.545019531250063,49.96025390624999],[4.818652343750045,50.153173828125034],[4.867578125000051,49.78813476562502],[5.50732421875,49.51088867187502],[5.789746093749983,49.53828125000001]]]]},"properties":{"name":"France","childNum":10,"cp":[2.8719426,46.8222422]}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-7.186865234374949,62.139306640624966],[-7.116796874999977,62.046826171874955],[-7.379101562499926,62.07480468749998],[-7.186865234374949,62.139306640624966]]],[[[-6.631054687499955,62.22788085937498],[-6.655810546874932,62.09360351562498],[-6.840527343749983,62.119287109374994],[-6.725195312499949,61.95146484374999],[-7.17216796874996,62.28559570312501],[-6.631054687499955,62.22788085937498]]],[[[-6.406054687499932,62.258642578125034],[-6.544140624999926,62.20561523437499],[-6.554589843749994,62.35566406250001],[-6.406054687499932,62.258642578125034]]]]},"properties":{"name":"Faeroe Is.","childNum":3}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[158.31484375,6.813671875],[158.18339843750002,6.801269531250057],[158.13476562499997,6.944824218749986],[158.29462890625004,6.951074218750023],[158.31484375,6.813671875]]],[[[138.14267578125006,9.50068359375004],[138.06708984375004,9.419042968750006],[138.18583984375007,9.593310546874989],[138.14267578125006,9.50068359375004]]]]},"properties":{"name":"Micronesia","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[13.293554687500006,2.161572265624997],[13.172167968750017,1.78857421875],[13.21630859375,1.2484375],[13.851367187500017,1.41875],[14.180859375000011,1.370214843749991],[14.429882812500011,0.901464843749991],[14.32421875,0.62421875],[13.949609375000023,0.353808593749989],[13.860058593750011,-0.203320312500011],[14.47412109375,-0.573437500000011],[14.383984375000011,-1.890039062500009],[14.162890625000017,-2.217578125],[14.199804687500006,-2.354199218750011],[13.993847656250011,-2.490625],[13.886914062500011,-2.465429687500006],[13.733789062500023,-2.138476562500003],[13.464941406250006,-2.395410156250009],[12.991992187500017,-2.313378906250009],[12.793554687500006,-1.931835937500011],[12.590429687500006,-1.826855468750011],[12.43212890625,-1.928906250000011],[12.446386718750006,-2.329980468750009],[12.064453125,-2.41259765625],[11.60546875,-2.342578125],[11.537792968750011,-2.83671875],[11.760156250000023,-2.983105468750011],[11.715429687500006,-3.176953125000011],[11.934179687500006,-3.318554687500011],[11.8798828125,-3.665917968750009],[11.685742187500011,-3.68203125],[11.504296875000023,-3.5203125],[11.234472656250006,-3.690820312500009],[11.130175781250017,-3.916308593750003],[10.34765625,-3.013085937500009],[9.722070312500023,-2.467578125],[10.06201171875,-2.549902343750006],[9.624609375,-2.367089843750009],[9.298925781250006,-1.903027343750011],[9.483203125000017,-1.894628906250006],[9.265625,-1.825097656250009],[9.036328125000011,-1.308886718750003],[9.31884765625,-1.632031250000011],[9.501074218750006,-1.55517578125],[9.295800781250023,-1.515234375],[9.3466796875,-1.325],[9.203808593750011,-1.382421875],[9.064648437500011,-1.29833984375],[8.703125,-0.591015625000011],[8.946386718750006,-0.688769531250003],[9.296679687500017,-0.351269531250011],[9.354882812500023,0.343603515624991],[9.468164062500023,0.15976562499999],[9.796777343750023,0.044238281249989],[10.00146484375,0.194970703124994],[9.546484375,0.295947265624989],[9.324804687500006,0.552099609374991],[9.495312500000011,0.664843749999989],[9.617968750000017,0.576513671874991],[9.5908203125,1.031982421875],[9.636132812500023,1.046679687499989],[9.676464843750011,1.07470703125],[9.70458984375,1.079980468749994],[9.760546875000017,1.07470703125],[9.788671875,1.025683593749989],[9.803906250000011,0.998730468749997],[9.90673828125,0.960107421874994],[11.335351562500023,0.999707031249997],[11.332324218750017,1.528369140624989],[11.328710937500006,2.167431640624997],[11.348437500000017,2.299707031249994],[11.558984375000023,2.302197265624997],[13.2203125,2.256445312499991],[13.293554687500006,2.161572265624997]]]},"properties":{"name":"Gabon","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-1.065576171874966,50.69023437500002],[-1.25146484375,50.58881835937498],[-1.563427734374955,50.666113281250006],[-1.31279296874996,50.77348632812502],[-1.065576171874966,50.69023437500002]]],[[[-4.196777343749972,53.321435546874966],[-4.04936523437496,53.30576171874998],[-4.373046875,53.13417968750002],[-4.56787109375,53.386474609375],[-4.315087890625023,53.41723632812503],[-4.196777343749972,53.321435546874966]]],[[[-6.218017578125,54.08872070312506],[-6.649804687499937,54.05864257812496],[-7.007714843749937,54.40668945312501],[-7.324511718750017,54.13344726562502],[-7.606542968750006,54.14384765625002],[-8.118261718749977,54.41425781250004],[-7.75439453125,54.59492187499998],[-7.910595703124955,54.698339843750006],[-7.55039062499992,54.767968749999966],[-7.218652343749937,55.09199218749998],[-6.475048828124955,55.24101562499999],[-6.035791015624994,55.14453125000003],[-5.71684570312496,54.817480468750034],[-5.878613281249955,54.64130859375001],[-5.582519531249943,54.66342773437498],[-5.470410156249926,54.500195312499955],[-5.671093749999955,54.54975585937501],[-5.60678710937492,54.272558593750034],[-6.019042968749972,54.05126953124997],[-6.218017578125,54.08872070312506]]],[[[-5.105419921875011,55.448828125000034],[-5.331494140624955,55.481054687500034],[-5.318115234375,55.709179687499955],[-5.105419921875011,55.448828125000034]]],[[[-6.128906249999972,55.93056640625002],[-6.055322265624994,55.69531249999997],[-6.305078124999966,55.60693359375],[-6.286425781249989,55.77250976562499],[-6.491357421874994,55.697314453125045],[-6.462841796874955,55.808251953124994],[-6.128906249999972,55.93056640625002]]],[[[-5.970068359374949,55.814550781250034],[-6.071972656250011,55.893115234375045],[-5.72514648437496,56.118554687499966],[-5.970068359374949,55.814550781250034]]],[[[-5.77788085937496,56.344335937500034],[-6.313427734374983,56.29365234375001],[-6.138867187499955,56.490625],[-6.286328124999983,56.61186523437502],[-6.102734374999955,56.645654296874966],[-5.760839843749949,56.49067382812501],[-5.77788085937496,56.344335937500034]]],[[[-7.249853515624977,57.115332031250006],[-7.410546874999937,57.38110351562506],[-7.26713867187496,57.37177734375001],[-7.249853515624977,57.115332031250006]]],[[[-6.144726562499983,57.50498046874998],[-6.135546874999989,57.31425781250002],[-5.672460937499977,57.252685546875],[-5.94907226562492,57.045166015625],[-6.034375,57.20122070312499],[-6.322705078124926,57.20249023437498],[-6.761132812499994,57.4423828125],[-6.305957031249989,57.67197265624998],[-6.144726562499983,57.50498046874998]]],[[[-7.205566406250028,57.682958984375006],[-7.182617187499972,57.53330078125006],[-7.514746093749949,57.60195312500002],[-7.205566406250028,57.682958984375006]]],[[[-6.198681640624983,58.36328125000003],[-6.554589843749994,58.092871093750006],[-6.425195312499937,58.02128906249999],[-6.983105468749983,57.75],[-7.083447265624926,57.81376953124999],[-6.856835937499937,57.92353515624998],[-7.085253906249932,58.18217773437499],[-6.726464843749937,58.189404296874955],[-6.776464843750006,58.30151367187497],[-6.237451171874966,58.50283203125005],[-6.198681640624983,58.36328125000003]]],[[[-3.109667968749932,58.515478515625034],[-3.212353515624983,58.32124023437501],[-3.99003906249996,57.95903320312502],[-4.035595703124926,57.85200195312498],[-3.857128906249983,57.81855468750001],[-4.134521484375,57.57773437500006],[-3.402783203124955,57.708251953125],[-2.074072265624977,57.70239257812506],[-1.780664062499994,57.474023437499966],[-2.592675781249937,56.56157226562499],[-3.309960937499966,56.36347656250004],[-2.885156249999937,56.397509765625045],[-2.674267578124955,56.25341796875],[-3.362255859374955,56.02763671875002],[-3.789062499999972,56.09521484375],[-3.048730468749937,55.951953125000045],[-2.599316406249955,56.02729492187501],[-2.14707031249992,55.90297851562502],[-1.655371093749949,55.57036132812502],[-1.232421874999943,54.703710937500034],[-0.084375,54.118066406249994],[-0.20556640625,54.021728515625],[0.115332031250006,53.609277343749994],[-0.270019531249972,53.73676757812504],[-0.659912109375,53.72402343750002],[-0.293701171875,53.69233398437504],[0.270996093750028,53.33549804687499],[0.355761718750045,53.15996093750002],[0.0458984375,52.90561523437498],[0.279785156250028,52.80869140625006],[0.55878906250004,52.96694335937505],[1.05556640625008,52.95898437500003],[1.656738281249972,52.753710937500045],[1.74658203125,52.46899414062503],[1.59140625,52.11977539062502],[1.232421875000057,51.97124023437496],[1.188476562500057,51.803369140624966],[0.752246093750017,51.729589843750034],[0.890917968750017,51.571435546874966],[0.42451171875004,51.465625],[1.414941406250023,51.36328125],[1.397558593750034,51.18203125000002],[0.960156250000011,50.92587890624998],[0.299707031249994,50.775976562500006],[-0.785253906249949,50.76542968749999],[-1.416455078124955,50.896875],[-1.334472656249943,50.82080078124997],[-1.516748046874937,50.747460937499966],[-2.031054687499932,50.72539062499999],[-2.035839843749926,50.603076171875045],[-2.999414062499937,50.71660156249999],[-3.40458984374996,50.63242187499998],[-3.679785156250006,50.239941406249955],[-4.194580078124972,50.39331054687503],[-4.727978515624926,50.29047851562504],[-5.11850585937492,50.038330078125],[-5.622119140624932,50.05068359375002],[-4.188183593749926,51.18852539062502],[-3.135986328124972,51.20502929687501],[-2.433056640624926,51.74072265625],[-3.293115234374994,51.390429687500045],[-3.890771484374994,51.591650390625006],[-4.234570312499955,51.56909179687503],[-4.091015624999926,51.65991210937506],[-4.38627929687496,51.74106445312506],[-4.902294921874926,51.626269531250045],[-5.168359374999937,51.74072265625],[-5.183349609374972,51.94965820312501],[-4.217724609374983,52.277441406250006],[-3.980322265624949,52.54174804687503],[-4.101464843750023,52.915478515624955],[-4.683056640624926,52.80615234374997],[-4.268554687499943,53.14453125],[-3.427734374999972,53.34067382812498],[-3.097558593749937,53.260302734375045],[-3.064746093749932,53.426855468750034],[-2.74951171875,53.310205078124994],[-3.064599609374994,53.512841796874966],[-2.84648437499996,54.135302734375045],[-3.165966796874955,54.12792968750006],[-3.56938476562496,54.46757812499996],[-3.464599609374943,54.77309570312505],[-3.036230468749977,54.95307617187501],[-3.550439453124937,54.94741210937502],[-3.957910156249994,54.780957031249955],[-4.818066406249983,54.84614257812501],[-4.911230468749949,54.68945312500006],[-5.032324218749949,54.76137695312505],[-5.172705078124949,54.98588867187496],[-4.676757812499972,55.50131835937498],[-4.871679687499977,55.87392578125005],[-4.58408203124992,55.93867187500001],[-4.844091796874949,56.05117187499999],[-4.80029296875,56.158349609374994],[-5.228222656249983,55.886328125],[-5.084326171874977,56.197460937499955],[-5.41044921874996,55.995361328125],[-5.55644531249996,55.389599609374955],[-5.730664062499926,55.33413085937502],[-5.504492187499949,55.80239257812502],[-5.609570312499955,56.055273437500034],[-5.188378906249937,56.75805664062503],[-5.652441406249977,56.531982421875],[-6.133691406249966,56.706689453124966],[-5.730615234374994,56.853076171875045],[-5.86142578124992,56.902685546875006],[-5.561914062499994,57.23271484375002],[-5.794921874999972,57.37880859375002],[-5.581787109374972,57.546777343749966],[-5.744921874999989,57.668310546875034],[-5.608349609374955,57.88134765625],[-5.157226562499972,57.88134765625],[-5.413183593750006,58.06972656250002],[-5.338281250000023,58.23872070312498],[-5.008300781250028,58.262646484374955],[-5.016748046874966,58.566552734374966],[-4.433251953124937,58.51284179687505],[-3.25913085937492,58.65],[-3.053076171874949,58.63481445312502],[-3.109667968749932,58.515478515625034]]],[[[-3.057421874999932,59.02963867187498],[-2.793017578124989,58.906933593749955],[-3.331640624999949,58.97124023437499],[-3.31035156249996,59.13081054687498],[-3.057421874999932,59.02963867187498]]],[[[-1.30810546875,60.5375],[-1.052441406249955,60.44448242187502],[-1.299462890624994,59.87866210937503],[-1.290917968749937,60.153466796874966],[-1.663769531249983,60.282519531250074],[-1.374609374999949,60.33291015625002],[-1.571777343749972,60.494433593750074],[-1.363964843750011,60.60957031249998],[-1.30810546875,60.5375]]]]},"properties":{"name":"United Kingdom","childNum":14,"cp":[-2.5830348,54.4598409]}},{"geometry":{"type":"Polygon","coordinates":[[[46.30546875000002,41.507714843749994],[46.61894531250002,41.34375],[46.67255859375001,41.28681640625],[46.66240234375002,41.245507812499994],[46.62636718750002,41.15966796875],[46.534375,41.08857421875],[46.43095703125002,41.077050781249994],[46.086523437500006,41.183837890625],[45.28095703125001,41.449560546875],[45.21718750000002,41.423193359375],[45.00136718750002,41.290966796875],[44.97587890625002,41.277490234374994],[44.81132812500002,41.259375],[44.077246093750006,41.182519531249994],[43.43339843750002,41.155517578125],[43.20546875000002,41.199169921875],[43.15283203125,41.23642578125],[43.14101562500002,41.26484375],[43.17128906250002,41.287939453125],[43.149023437500006,41.30712890625],[43.05712890625,41.352832031249996],[42.90673828125,41.466845703124996],[42.82167968750002,41.4923828125],[42.78789062500002,41.563720703125],[42.75410156250001,41.57890625],[42.68242187500002,41.585742187499996],[42.60683593750002,41.57880859375],[42.590429687500006,41.57070312499999],[42.5673828125,41.55927734375],[42.46640625,41.43984375],[41.92578125,41.495654296874996],[41.82353515625002,41.432373046875],[41.779394531250006,41.44052734375],[41.701757812500006,41.471582031249994],[41.57656250000002,41.497314453125],[41.51005859375002,41.517480468749994],[41.701757812500006,41.705419921875],[41.76298828125002,41.970019531249996],[41.48876953125,42.659326171874994],[40.83662109375001,43.0634765625],[40.46210937500001,43.145703125],[39.97832031250002,43.419824218749994],[40.02373046875002,43.48486328125],[40.084570312500006,43.553125],[40.648046875,43.53388671875],[40.941992187500006,43.41806640625],[41.083105468750006,43.374462890625],[41.35820312500002,43.333398437499994],[41.46074218750002,43.276318359375],[41.58056640625,43.21923828125],[42.76064453125002,43.169580078124994],[42.99160156250002,43.09150390625],[43.00019531250001,43.049658203125],[43.08916015625002,42.9890625],[43.55781250000001,42.844482421875],[43.623046875,42.80771484375],[43.78261718750002,42.747021484375],[43.79873046875002,42.727783203125],[43.79541015625,42.702978515625],[43.74990234375002,42.657519531249996],[43.738378906250006,42.616992187499996],[43.759863281250006,42.59384765625],[43.82597656250002,42.571533203125],[43.95742187500002,42.566552734374994],[44.00468750000002,42.595605468749994],[44.10273437500001,42.616357421874994],[44.32949218750002,42.70351562499999],[44.505859375,42.7486328125],[44.77109375,42.616796875],[44.85048828125002,42.746826171875],[44.87099609375002,42.756396484374996],[44.943359375,42.730273437499996],[45.07158203125002,42.694140625],[45.160253906250006,42.675],[45.34375,42.52978515625],[45.56289062500002,42.5357421875],[45.70527343750001,42.498095703124996],[45.7275390625,42.475048828125],[45.63427734375,42.234716796875],[45.63857421875002,42.205078125],[46.21269531250002,41.989892578124994],[46.42988281250001,41.890966796875],[46.18427734375001,41.7021484375],[46.30546875000002,41.507714843749994]]]},"properties":{"name":"Georgia","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-0.068603515625,11.115625],[0.009423828125023,11.02099609375],[-0.08632812499999,10.673046875],[0.380859375,10.291845703124991],[0.264550781250023,9.644726562499997],[0.342578125000017,9.604150390624994],[0.2333984375,9.463525390624994],[0.525683593750017,9.398486328124989],[0.48876953125,8.851464843749994],[0.37255859375,8.75927734375],[0.686328125000017,8.354882812499994],[0.5,7.546875],[0.634765625,7.353662109374994],[0.525585937500011,6.850927734374991],[0.736914062500006,6.452587890624997],[1.187207031250011,6.089404296874989],[0.94970703125,5.810253906249997],[0.259667968750023,5.75732421875],[-2.001855468749994,4.762451171875],[-3.114013671875,5.088671874999989],[-2.815673828125,5.153027343749997],[-2.754980468749977,5.432519531249994],[-2.793652343749983,5.60009765625],[-2.998291015625,5.71132812499999],[-3.227148437499977,6.749121093749991],[-2.959082031249977,7.454541015624997],[-2.789746093749983,7.931933593749989],[-2.668847656249994,8.022216796875],[-2.613378906249977,8.046679687499989],[-2.600976562499994,8.082226562499997],[-2.619970703124977,8.12109375],[-2.61171875,8.147558593749991],[-2.538281249999983,8.171630859375],[-2.505859375,8.208740234375],[-2.600390624999989,8.800439453124994],[-2.649218749999989,8.956591796874989],[-2.689892578124983,9.025097656249997],[-2.746923828124977,9.045117187499997],[-2.705761718749983,9.351367187499989],[-2.695849609374989,9.481347656249994],[-2.706201171874994,9.533935546875],[-2.765966796874977,9.658056640624991],[-2.780517578125,9.745849609375],[-2.791162109374994,10.432421874999989],[-2.914892578124977,10.592333984374989],[-2.829931640624977,10.998388671874991],[-1.04248046875,11.010058593749989],[-0.627148437499983,10.927392578124994],[-0.299462890624994,11.166894531249994],[-0.068603515625,11.115625]]]},"properties":{"name":"Ghana","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-11.389404296875,12.404394531249991],[-11.502197265625,12.198632812499994],[-11.30517578125,12.015429687499989],[-10.933203124999977,12.205175781249991],[-10.709228515625,11.898730468749989],[-10.274853515624983,12.212646484375],[-9.754003906249977,12.029931640624994],[-9.358105468749983,12.255419921874989],[-9.395361328124977,12.464648437499989],[-9.043066406249977,12.40234375],[-8.818310546874983,11.922509765624994],[-8.822021484375,11.673242187499994],[-8.398535156249977,11.366552734374991],[-8.666699218749983,11.009472656249997],[-8.33740234375,10.990625],[-8.266650390624989,10.485986328124994],[-8.007275390624983,10.321875],[-7.990625,10.1625],[-8.155175781249994,9.973193359374989],[-8.136962890625,9.49570312499999],[-7.896191406249983,9.415869140624991],[-7.918066406249977,9.188525390624989],[-7.839404296874989,9.151611328125],[-7.7998046875,9.115039062499989],[-7.777978515624994,9.080859374999989],[-7.902099609375,9.01708984375],[-7.938183593749983,8.979785156249989],[-7.950976562499989,8.786816406249997],[-7.719580078124977,8.643017578124997],[-7.696093749999989,8.375585937499991],[-7.823583984374977,8.467675781249994],[-7.953125,8.477734375],[-8.236962890624994,8.455664062499991],[-8.244140625,8.407910156249997],[-8.256103515625,8.253710937499989],[-8.217138671874977,8.219677734374997],[-8.140625,8.181445312499989],[-8.048583984375,8.169726562499989],[-8.009863281249977,8.07851562499999],[-8.126855468749994,7.867724609374989],[-8.115429687499983,7.7607421875],[-8.205957031249994,7.59023437499999],[-8.231884765624983,7.556738281249991],[-8.429980468749989,7.601855468749989],[-8.486425781249977,7.558496093749994],[-8.659765624999977,7.688378906249994],[-8.8896484375,7.2626953125],[-9.11757812499999,7.215917968749991],[-9.463818359374983,7.415869140624991],[-9.369140625,7.703808593749997],[-9.518261718749983,8.34609375],[-9.781982421875,8.537695312499991],[-10.064355468749994,8.429882812499997],[-10.147412109374983,8.519726562499997],[-10.233056640624994,8.488818359374989],[-10.283203125,8.485156249999989],[-10.360058593749983,8.495507812499994],[-10.394433593749994,8.48095703125],[-10.496435546874977,8.362109374999989],[-10.557714843749977,8.315673828125],[-10.686962890624983,8.321679687499994],[-10.712109374999983,8.335253906249989],[-10.677343749999977,8.400585937499997],[-10.500537109374989,8.687548828124989],[-10.615966796875,9.059179687499991],[-10.726855468749989,9.081689453124994],[-10.747021484374983,9.095263671874989],[-10.749951171874983,9.122363281249989],[-10.687646484374994,9.261132812499994],[-10.682714843749977,9.289355468749989],[-10.758593749999989,9.385351562499991],[-11.047460937499977,9.786328125],[-11.180859374999983,9.925341796874989],[-11.205664062499977,9.977734375],[-11.273632812499983,9.996533203124997],[-11.911083984374983,9.993017578124991],[-12.142333984375,9.87539062499999],[-12.427978515625,9.898144531249997],[-12.557861328125,9.704980468749994],[-12.755859375,9.373583984374989],[-12.958789062499989,9.263330078124994],[-13.077294921874994,9.069628906249989],[-13.292675781249983,9.04921875],[-13.436279296875,9.4203125],[-13.691357421874983,9.535791015624994],[-13.689794921874977,9.927783203124989],[-13.820117187499989,9.88720703125],[-14.045019531249977,10.141259765624994],[-14.426904296874994,10.248339843749989],[-14.609570312499983,10.549853515624989],[-14.593505859375,10.766699218749991],[-14.677343749999977,10.68896484375],[-14.775927734374989,10.931640625],[-14.88671875,10.968066406249989],[-14.975,10.803417968749997],[-15.051220703124983,10.834570312499991],[-15.043017578124989,10.940136718749997],[-14.9990234375,10.9921875],[-14.944433593749977,11.072167968749994],[-14.779296875,11.405517578125],[-14.720263671874989,11.48193359375],[-14.682958984374977,11.508496093749997],[-14.604785156249989,11.511621093749994],[-14.452441406249989,11.556201171874989],[-14.327832031249983,11.629785156249994],[-14.265576171874983,11.659912109375],[-14.122314453125,11.65195312499999],[-13.953222656249977,11.664599609374989],[-13.732763671874977,11.736035156249997],[-13.730664062499983,11.959863281249994],[-13.737988281249983,12.009667968749994],[-13.816308593749994,12.054492187499989],[-13.948876953124994,12.178173828124997],[-13.8875,12.246875],[-13.759765625,12.262353515624994],[-13.673535156249983,12.478515625],[-13.732617187499983,12.592822265624989],[-13.729248046875,12.673925781249991],[-13.082910156249994,12.633544921875],[-13.061279296875,12.489990234375],[-12.930712890624989,12.532275390624989],[-12.399072265624994,12.340087890625],[-11.389404296875,12.404394531249991]]]},"properties":{"name":"Guinea","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-16.763330078124994,13.064160156249997],[-16.824804687499977,13.341064453125],[-16.669335937499994,13.475],[-16.41337890624999,13.269726562499997],[-15.427490234375,13.46835937499999],[-16.135449218749983,13.4482421875],[-16.351806640625,13.34335937499999],[-16.56230468749999,13.587304687499994],[-15.509667968749994,13.586230468750003],[-15.426855468749977,13.727001953124997],[-15.108349609374983,13.81210937499999],[-14.405468749999983,13.503710937500003],[-13.977392578124977,13.54345703125],[-13.826708984374989,13.4078125],[-14.246777343749983,13.23583984375],[-15.151123046875,13.556494140624991],[-15.286230468749977,13.39599609375],[-15.814404296874983,13.325146484374997],[-15.834277343749989,13.156445312499997],[-16.648779296874977,13.154150390624991],[-16.763330078124994,13.064160156249997]]]},"properties":{"name":"Gambia","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-15.895898437499966,11.082470703124969],[-15.963964843749977,11.05898437499998],[-15.937695312499955,11.192773437499966],[-15.895898437499966,11.082470703124969]]],[[[-16.11450195312503,11.059423828124977],[-16.236425781249977,11.113427734374966],[-16.06733398437501,11.197216796874983],[-16.11450195312503,11.059423828124977]]],[[[-15.901806640624926,11.4658203125],[-16.02319335937497,11.477148437499991],[-15.964550781249926,11.59829101562498],[-15.901806640624926,11.4658203125]]],[[[-15.986425781249949,11.882031249999969],[-16.038330078124943,11.759716796875011],[-16.15244140624992,11.876806640624963],[-15.986425781249949,11.882031249999969]]],[[[-13.759765625,12.262353515624994],[-13.8875,12.246875],[-13.948876953124966,12.178173828124997],[-13.737988281250011,12.009667968750037],[-13.730664062499926,11.959863281250009],[-13.73276367187492,11.736035156249983],[-13.953222656249977,11.664599609374989],[-14.265576171874926,11.659912109375014],[-14.327832031250011,11.629785156250009],[-14.452441406249989,11.556201171875017],[-14.604785156249932,11.511621093749994],[-14.682958984374949,11.508496093749983],[-14.720263671875017,11.481933593749986],[-14.779296874999972,11.405517578125057],[-14.944433593749949,11.072167968749994],[-14.999023437499972,10.992187500000043],[-15.04301757812496,10.940136718750011],[-15.09375,11.011035156249974],[-15.054589843749994,11.141943359375006],[-15.222119140624926,11.030908203125037],[-15.216699218749994,11.15625],[-15.39311523437496,11.217236328124983],[-15.354687499999955,11.396337890624963],[-15.479492187499972,11.410302734374966],[-15.072656249999937,11.597802734374966],[-15.230371093750023,11.686767578124972],[-15.412988281249994,11.615234374999972],[-15.501904296875011,11.723779296874966],[-15.467187499999937,11.842822265624974],[-15.078271484374937,11.968994140625014],[-15.941748046875006,11.786621093749986],[-15.92021484374996,11.93779296874996],[-16.138427734375,11.917285156250045],[-16.32807617187501,12.051611328124963],[-16.244580078124955,12.237109375],[-16.43681640624996,12.204150390625045],[-16.711816406249937,12.354833984375006],[-16.656933593749955,12.364355468749991],[-16.52133789062495,12.348632812499986],[-16.41630859374996,12.367675781250057],[-16.24150390624996,12.443310546875011],[-16.144189453124937,12.457421875000037],[-15.839550781249955,12.437890624999966],[-15.57480468749992,12.490380859375009],[-15.19609375,12.679931640624986],[-14.3492187499999,12.67641601562498],[-14.064843749999966,12.675292968750014],[-13.729248046875,12.673925781250006],[-13.732617187499983,12.592822265625003],[-13.673535156249926,12.478515624999986],[-13.759765625,12.262353515624994]]]]},"properties":{"name":"Guinea-Bissau","childNum":5}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[11.332324218750017,1.528369140624989],[11.335351562500023,0.999707031250011],[9.906738281250028,0.960107421875037],[9.80390625000004,0.998730468749997],[9.788671875000034,1.025683593749974],[9.760546874999989,1.074707031250014],[9.704589843750057,1.079980468750023],[9.676464843750011,1.074707031250014],[9.636132812500051,1.046679687499989],[9.590820312500057,1.031982421875014],[9.599414062500045,1.054443359374972],[9.509863281250006,1.114794921875017],[9.385937500000068,1.13925781250002],[9.807031250000051,1.927490234375028],[9.77968750000008,2.068212890625006],[9.800781250000028,2.304443359375],[9.826171875000057,2.297802734374969],[9.8369140625,2.242382812500054],[9.870117187500028,2.21328125],[9.979882812499994,2.167773437500045],[10.790917968750023,2.167578125],[11.096582031250051,2.167480468749986],[11.328710937500006,2.167431640624969],[11.332324218750017,1.528369140624989]]],[[[8.735742187500023,3.758300781249972],[8.910058593750023,3.758203125000051],[8.946093750000074,3.627539062499977],[8.704003906250051,3.223632812500028],[8.474902343749989,3.264648437500043],[8.464648437500045,3.450585937499994],[8.735742187500023,3.758300781249972]]]]},"properties":{"name":"Eq. Guinea","childNum":2}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[23.852246093749983,35.53544921874999],[24.166015625000057,35.59521484375],[24.108984374999977,35.49580078124998],[24.35400390625,35.359472656250034],[25.73017578125004,35.34858398437501],[25.791308593750074,35.122851562500045],[26.32021484375008,35.315136718749955],[26.165625,35.018603515625045],[24.79980468750003,34.93447265625002],[24.70888671875008,35.08906250000001],[24.463671875000045,35.160351562499955],[23.59277343749997,35.257226562499966],[23.56982421875,35.534765625000034],[23.67265624999999,35.51391601562506],[23.736914062500034,35.65551757812503],[23.852246093749983,35.53544921874999]]],[[[27.17607421874999,35.46528320312498],[27.070703125000023,35.59775390624998],[27.22314453125,35.820458984374966],[27.17607421874999,35.46528320312498]]],[[[23.053808593750034,36.18979492187498],[22.91083984375004,36.220996093750045],[22.950488281250045,36.38393554687502],[23.053808593750034,36.18979492187498]]],[[[27.84277343750003,35.929296875000034],[27.71552734375004,35.95732421874996],[27.71630859375003,36.17158203125001],[28.23183593750005,36.43364257812502],[28.087792968750023,36.06533203125002],[27.84277343750003,35.929296875000034]]],[[[25.48242187500003,36.39262695312502],[25.37050781250005,36.35893554687499],[25.408984375000074,36.473730468750006],[25.48242187500003,36.39262695312502]]],[[[26.46064453125001,36.58540039062501],[26.270019531250057,36.54692382812499],[26.370019531250023,36.63857421875002],[26.46064453125001,36.58540039062501]]],[[[26.94960937500005,36.72709960937502],[27.214941406250006,36.89863281249998],[27.352148437499977,36.86889648437506],[26.94960937500005,36.72709960937502]]],[[[25.859375,36.79042968750005],[25.74316406250003,36.78974609374998],[26.06445312500003,36.90273437500002],[25.859375,36.79042968750005]]],[[[27.01972656250004,36.95903320312502],[26.91992187500003,36.94521484375005],[26.88867187499997,37.087255859375034],[27.01972656250004,36.95903320312502]]],[[[25.278906250000034,37.06840820312502],[25.105468750000057,37.034960937500045],[25.235058593750068,37.148535156250006],[25.278906250000034,37.06840820312502]]],[[[25.54589843749997,36.96757812499999],[25.45673828125001,36.9296875],[25.361914062500063,37.07041015624998],[25.52529296875005,37.19638671875006],[25.54589843749997,36.96757812499999]]],[[[24.523535156250063,37.125097656250006],[24.42480468750003,37.131982421874994],[24.48378906250005,37.21020507812503],[24.523535156250063,37.125097656250006]]],[[[25.402734375000023,37.419140624999955],[25.312695312500068,37.48930664062496],[25.462988281250063,37.47109375],[25.402734375000023,37.419140624999955]]],[[[26.029296875000057,37.529394531250034],[26.086328125000023,37.63491210937505],[26.351367187500017,37.67431640625],[26.029296875000057,37.529394531250034]]],[[[25.255859375000057,37.59960937500006],[25.156347656250034,37.54506835937505],[24.99648437500005,37.676904296874994],[25.255859375000057,37.59960937500006]]],[[[24.35595703125003,37.57685546875004],[24.28896484375005,37.52827148437498],[24.37910156250004,37.682714843750006],[24.35595703125003,37.57685546875004]]],[[[26.82441406250004,37.81142578125005],[27.05507812500005,37.70927734375002],[26.84492187500004,37.64472656250001],[26.58105468750003,37.723730468750034],[26.82441406250004,37.81142578125005]]],[[[20.888476562500074,37.805371093749955],[20.993945312500074,37.70800781250003],[20.81855468750004,37.66474609375001],[20.61953125000008,37.855029296875045],[20.691503906250006,37.929541015625034],[20.888476562500074,37.805371093749955]]],[[[24.991699218750057,37.75961914062506],[24.962207031250074,37.69238281250003],[24.7001953125,37.961669921875],[24.956347656250045,37.90478515625006],[24.991699218750057,37.75961914062506]]],[[[20.61230468750003,38.38334960937502],[20.761328125,38.07055664062497],[20.523535156250063,38.106640624999955],[20.4521484375,38.23417968750002],[20.35253906250003,38.179882812499955],[20.563183593750068,38.474951171875034],[20.61230468750003,38.38334960937502]]],[[[26.094042968750017,38.21806640625002],[25.891894531250045,38.243310546874994],[25.991406250000068,38.353515625],[25.846093750000023,38.57402343749996],[26.16035156250001,38.54072265625001],[26.094042968750017,38.21806640625002]]],[[[20.68671875000001,38.60869140625002],[20.5546875,38.58256835937502],[20.69414062499999,38.84423828125003],[20.68671875000001,38.60869140625002]]],[[[24.67470703125005,38.80922851562502],[24.54101562499997,38.788671875],[24.485644531250074,38.980273437500045],[24.67470703125005,38.80922851562502]]],[[[23.41542968750008,38.958642578124994],[23.525,38.8134765625],[24.127539062500034,38.648486328125045],[24.27578125000005,38.22001953124996],[24.58837890625003,38.12397460937504],[24.53652343750005,37.97973632812506],[24.212011718750006,38.11752929687506],[24.040136718750006,38.389990234375034],[23.65078125000008,38.44306640625001],[23.25214843750004,38.80122070312498],[22.870312500000068,38.870507812499966],[23.258203125000023,39.03134765625006],[23.41542968750008,38.958642578124994]]],[[[26.41015625000003,39.329443359375034],[26.59560546875005,39.04882812499997],[26.488671875000023,39.074804687500034],[26.46875,38.97280273437502],[26.10791015625,39.08105468749997],[26.273144531249983,39.19755859374999],[26.072363281250034,39.095605468749994],[25.84414062500008,39.20004882812506],[26.16542968750008,39.37353515625006],[26.41015625000003,39.329443359375034]]],[[[20.077929687500045,39.432714843750034],[19.883984375000068,39.461523437500034],[19.646484375,39.76708984375003],[19.926074218750017,39.773730468750045],[19.8466796875,39.66811523437502],[20.077929687500045,39.432714843750034]]],[[[25.43769531250004,39.98330078125002],[25.357031250000063,39.80810546875003],[25.24941406250005,39.89414062500006],[25.06220703125004,39.852392578125006],[25.05800781250005,39.999658203124966],[25.43769531250004,39.98330078125002]]],[[[24.774218750000074,40.615185546874955],[24.515527343750023,40.64702148437496],[24.623339843750045,40.79291992187501],[24.774218750000074,40.615185546874955]]],[[[26.03896484375008,40.726757812499955],[25.10449218750003,40.994726562500006],[24.792968750000057,40.857519531250034],[24.47705078125,40.94775390625003],[24.082324218750074,40.72407226562504],[23.762792968750063,40.74780273437497],[23.866796875000034,40.41855468750006],[24.21279296875008,40.32778320312502],[24.343359375000034,40.14770507812503],[23.913183593750063,40.35878906250005],[23.72792968750008,40.329736328124994],[23.96748046875001,40.11455078125002],[23.947070312500045,39.96557617187506],[23.66455078125003,40.22382812499998],[23.42626953125,40.26396484374999],[23.62734375,39.92407226562503],[22.896484375000057,40.39990234374997],[22.92226562500008,40.59086914062499],[22.629492187500034,40.49555664062501],[22.59218750000005,40.03691406250002],[23.327734374999977,39.174902343750006],[23.15468750000008,39.10146484375005],[23.16171875,39.25776367187501],[22.92138671874997,39.30634765625004],[22.886035156250074,39.16997070312496],[23.066699218750017,39.03793945312498],[22.569140625000074,38.86748046874999],[23.25292968750003,38.66123046875006],[23.68398437500008,38.35244140625002],[23.96699218750001,38.275],[24.024511718750006,38.139794921874966],[24.01972656250001,37.67773437499997],[23.50175781249999,38.03486328124998],[23.03632812500004,37.87836914062501],[23.48925781250003,37.440185546875],[23.16152343750005,37.333837890625006],[22.725390625000017,37.542138671874966],[23.16015625000003,36.448095703125034],[22.717187500000023,36.79394531250006],[22.42773437500003,36.47578124999998],[22.08046875000008,37.028955078124966],[21.95556640625003,36.990087890625034],[21.892382812500045,36.73730468749997],[21.58291015625005,37.080957031249994],[21.678906250000068,37.38720703125003],[21.124707031250068,37.89160156250003],[21.40371093750005,38.19667968750002],[21.658398437500068,38.17509765624996],[21.82470703125003,38.328125],[22.846386718750068,37.96757812499996],[23.18349609375008,38.133691406249966],[22.421679687500045,38.43852539062499],[22.319921875,38.35683593750005],[21.96533203124997,38.412451171875006],[21.47255859375005,38.321386718750006],[21.3310546875,38.48730468749997],[21.303320312500034,38.373925781249966],[21.113183593750023,38.38466796875002],[20.768554687500057,38.874414062499966],[21.111621093750045,38.89628906249999],[21.11835937500001,39.029980468749955],[20.71337890625,39.03515625000003],[20.300781250000057,39.32709960937501],[20.19140625,39.545800781249966],[20.099414062500074,39.641259765624966],[20.001269531250074,39.70942382812501],[20.022558593750063,39.710693359375],[20.059765624999983,39.69912109375002],[20.13105468750004,39.66162109375003],[20.206835937500017,39.65351562499998],[20.382421875,39.802636718749994],[20.381640625000017,39.84179687500006],[20.311328125000074,39.95078125000006],[20.311132812500034,39.97944335937504],[20.338476562500006,39.991064453125006],[20.38369140625008,40.0171875],[20.408007812500074,40.049462890624994],[20.4560546875,40.065576171874994],[20.657421875000068,40.11738281249998],[20.881640625000017,40.467919921874994],[21.030859375000034,40.62246093750002],[20.95576171875001,40.775292968749994],[20.96425781250005,40.84990234374999],[21.575781250000034,40.86894531249996],[21.627539062500006,40.896337890625034],[21.77949218750004,40.95043945312506],[21.99335937500001,41.13095703125006],[22.18447265625005,41.15864257812501],[22.49355468750005,41.118505859375006],[22.603613281249977,41.14018554687499],[22.724804687500068,41.17851562499999],[22.78388671875004,41.33198242187498],[23.155957031250068,41.32207031249999],[23.239843750000034,41.38496093750001],[23.372070312500057,41.3896484375],[23.433398437500017,41.39873046874999],[23.53583984375001,41.38603515624999],[23.63515625000008,41.386767578125045],[24.011328124999977,41.460058593750034],[24.03291015625004,41.469091796875034],[24.05605468750005,41.527246093749966],[24.38671875,41.523535156250006],[24.487890625,41.55522460937499],[24.518261718750068,41.55253906249996],[24.773730468750045,41.356103515624994],[24.99355468750008,41.36499023437503],[25.133398437500063,41.31577148437506],[25.251171875000068,41.243554687499994],[25.923339843750057,41.311914062499966],[26.066406250000057,41.35068359375006],[26.135351562499977,41.3857421875],[26.155175781250023,41.43486328124999],[26.143554687500057,41.52153320312496],[26.085546875000063,41.704150390625045],[26.10742187499997,41.72568359374998],[26.20058593750005,41.74379882812502],[26.320898437500034,41.716552734375],[26.581347656250074,41.60126953125004],[26.62490234375008,41.401757812499994],[26.330664062499977,41.23876953125],[26.331054687500057,40.954492187499994],[26.03896484375008,40.726757812499955]]]]},"properties":{"name":"Greece","childNum":29}},{"geometry":{"type":"Polygon","coordinates":[[[-61.71552734375,12.012646484374997],[-61.714990234374994,12.18515625],[-61.60703125,12.223291015624994],[-61.71552734375,12.012646484374997]]]},"properties":{"name":"Grenada","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-46.266699218750006,60.781396484374994],[-46.381542968749955,60.66030273437502],[-46.7880859375,60.758398437500034],[-46.205224609374994,60.943505859374994],[-46.266699218750006,60.781396484374994]]],[[[-37.03125,65.53198242187497],[-37.23842773437494,65.60986328125003],[-37.047509765624966,65.722265625],[-37.03125,65.53198242187497]]],[[[-51.01367187499994,69.55249023437497],[-51.202050781249966,69.525],[-51.33886718749994,69.73203125000006],[-51.094580078125006,69.92416992187503],[-50.67900390624999,69.84853515625],[-51.01367187499994,69.55249023437497]]],[[[-52.73115234375001,69.94472656250005],[-52.0453125,69.8072265625],[-51.90019531249999,69.60478515625007],[-53.57841796874996,69.25664062500002],[-54.18271484374995,69.40351562500001],[-53.65830078124998,69.46513671875005],[-53.825,69.54033203124999],[-54.91914062499998,69.71362304687503],[-54.78789062499996,69.94985351562502],[-54.322607421875034,69.94189453125],[-54.83076171875001,70.13295898437502],[-54.37163085937499,70.31728515625],[-53.296728515625034,70.20537109375002],[-52.73115234375001,69.94472656250005]]],[[[-51.67514648437498,70.855224609375],[-52.11938476562497,70.87065429687502],[-52.10673828124999,70.96801757812497],[-51.67514648437498,70.855224609375]]],[[[-25.43232421875001,70.92133789062495],[-25.402246093749994,70.65268554687503],[-26.217871093749977,70.45405273437498],[-26.604687499999926,70.55336914062497],[-28.03525390624995,70.48681640625],[-27.61723632812496,70.91376953125001],[-26.621777343749955,70.87563476562497],[-25.81889648437499,71.04365234375001],[-25.43232421875001,70.92133789062495]]],[[[-53.53520507812493,71.04082031250005],[-53.9578125,71.12773437499999],[-53.58447265625003,71.29707031249995],[-53.53520507812493,71.04082031250005]]],[[[-55.01689453124999,72.79111328125003],[-55.56660156249998,72.56435546875002],[-56.214794921874955,72.71918945312495],[-55.01689453124999,72.79111328125003]]],[[[-18.000537109374932,75.40732421875003],[-17.391992187499937,75.03691406250007],[-18.670800781249966,75.00166015624998],[-18.856054687499977,75.31914062500002],[-18.000537109374932,75.40732421875003]]],[[[-18.58261718749995,76.042333984375],[-19.085351562499966,76.43037109375001],[-18.882470703124937,76.70380859375001],[-18.58261718749995,76.042333984375]]],[[[-71.667333984375,77.32529296874998],[-72.48955078124999,77.43164062499997],[-71.43344726562495,77.394384765625],[-71.667333984375,77.32529296874998]]],[[[-17.6125,79.82587890624995],[-18.662011718749966,79.72001953125005],[-19.13828125,79.85234375000002],[-17.98291015625,80.05517578125003],[-17.471386718749955,80.02871093749997],[-17.6125,79.82587890624995]]],[[[-44.86455078124999,82.08364257812502],[-46.75190429687501,82.34819335937502],[-47.27226562499996,82.65693359375001],[-46.399169921875,82.692138671875],[-44.91748046875003,82.48051757812505],[-44.86455078124999,82.08364257812502]]],[[[-29.952880859375,83.56484374999997],[-25.795068359374994,83.26098632812497],[-31.99267578125,83.0853515625],[-32.03271484374997,82.98344726562502],[-25.12338867187495,83.15961914062501],[-24.47031249999995,82.87739257812498],[-21.582519531249943,82.6341796875],[-23.118066406249966,82.32470703125003],[-29.57939453124996,82.16118164062502],[-29.887402343749983,82.05483398437502],[-29.543847656249994,81.93994140624997],[-27.839501953124966,82.04887695312505],[-25.148828124999966,82.001123046875],[-24.293066406249977,81.70097656250005],[-23.103710937499983,82.01181640625003],[-21.337988281249977,82.068701171875],[-21.230517578125017,81.60136718749999],[-23.11772460937499,80.77817382812498],[-19.62993164062499,81.63989257812503],[-17.456054687499943,81.397705078125],[-16.12070312499995,81.776611328125],[-14.241992187500017,81.81386718750005],[-12.434423828125006,81.68251953125002],[-11.430664062499972,81.45683593750005],[-13.126220703124972,81.08779296875],[-14.452343749999955,80.99311523437498],[-14.503564453124994,80.76328125000006],[-16.76059570312492,80.573388671875],[-15.937255859374972,80.42763671874997],[-16.48876953124997,80.25195312499997],[-18.070947265624994,80.17207031249995],[-19.429199218749943,80.25771484375],[-20.150146484375,80.01123046874997],[-18.99199218749996,79.17836914062502],[-21.133740234374926,78.65864257812501],[-21.729589843749977,77.70854492187499],[-20.862597656249932,77.91186523437503],[-19.490429687499983,77.71889648437497],[-19.46752929687503,77.56582031250005],[-20.162060546874926,77.68984375],[-20.680810546875023,77.61899414062503],[-20.23193359374997,77.36840820312497],[-19.30029296874997,77.22236328124995],[-18.442626953124943,77.259375],[-18.51030273437496,76.77817382812498],[-20.48671875,76.92080078125],[-21.614697265624926,76.68789062499997],[-22.18525390625001,76.79409179687502],[-22.609326171874983,76.70429687500004],[-21.877343749999966,76.57348632812503],[-21.488232421874926,76.271875],[-20.10361328124992,76.21909179687503],[-19.508984374999926,75.75751953124995],[-19.52636718750003,75.18022460937505],[-20.484960937500006,75.31425781249999],[-21.649316406249966,75.02343749999997],[-22.232861328124926,75.11972656249998],[-21.69511718749999,74.96445312500003],[-20.985791015624983,75.07436523437497],[-20.86157226562497,74.63593750000001],[-20.41708984374995,74.9751953125],[-19.98491210937499,74.9751953125],[-19.287011718750023,74.54638671875006],[-19.36914062499997,74.28403320312498],[-20.256445312499977,74.2828125],[-20.653125,74.13735351562502],[-21.954931640624977,74.24428710937497],[-21.942919921874932,74.56572265624999],[-22.32158203124999,74.30253906250002],[-22.134814453124932,73.99047851562503],[-20.36728515624992,73.8482421875],[-20.509667968749966,73.49287109375001],[-22.346875,73.26923828125001],[-23.23320312499999,73.39770507812497],[-24.157714843749943,73.76445312499999],[-24.67724609375,73.602197265625],[-25.521289062500017,73.85161132812499],[-24.79125976562497,73.51127929687502],[-26.062304687500017,73.25302734375],[-27.270410156250023,73.43627929687503],[-26.541845703125006,73.24897460937495],[-27.561621093750006,73.13847656250002],[-27.348046875000023,73.06782226562501],[-25.057031250000023,73.396484375],[-24.132666015625006,73.409375],[-22.036328124999955,72.91845703125006],[-22.29321289062497,72.11953125],[-24.06904296875001,72.49873046874998],[-24.629980468749977,73.03764648437499],[-26.657617187499966,72.71582031249997],[-24.81333007812492,72.90151367187497],[-24.65,72.58251953125],[-25.117871093749983,72.34697265625005],[-24.66684570312492,72.437353515625],[-21.959667968749955,71.74467773437502],[-22.479638671874937,71.38344726562497],[-22.417578125,71.24868164062505],[-22.29902343750001,71.43232421874998],[-21.75224609374999,71.47832031250002],[-21.522656249999926,70.52622070312503],[-22.38413085937492,70.46240234375],[-22.437011718749943,70.860009765625],[-22.690673828124943,70.43730468750002],[-23.327832031249983,70.45097656250007],[-23.97138671875001,70.64946289062499],[-24.562207031249926,71.22353515624997],[-25.885156249999966,71.571923828125],[-27.08720703124999,71.6265625],[-27.107031250000034,71.53266601562498],[-25.842724609374955,71.48017578124995],[-25.74223632812499,71.18359375],[-26.717919921874994,70.95048828125005],[-28.39843749999997,70.99291992187497],[-27.99218749999997,70.89521484374998],[-28.06987304687499,70.69902343750005],[-29.07207031249999,70.444970703125],[-26.621777343749955,70.46337890625],[-26.576806640625023,70.35708007812502],[-27.560839843749932,70.12446289062498],[-27.384179687500023,69.9916015625],[-27.027734374999966,70.20122070312499],[-25.529882812499977,70.35317382812502],[-23.66733398437495,70.139306640625],[-22.28447265624996,70.12583007812498],[-22.287060546874955,70.03339843749998],[-23.03364257812501,69.90083007812498],[-23.04956054687497,69.79272460937497],[-23.86572265624997,69.73671875000002],[-23.739404296874994,69.58862304687497],[-24.296679687500017,69.58554687500006],[-24.295556640624966,69.439306640625],[-25.188574218750006,69.26054687500002],[-25.092431640624937,69.16518554687502],[-25.697998046874943,68.889892578125],[-26.48291015624997,68.67592773437502],[-29.24951171874997,68.29877929687501],[-29.86850585937495,68.31157226562505],[-30.318115234375,68.19331054687501],[-30.72001953124999,68.25117187499998],[-30.610742187499994,68.11791992187503],[-30.97856445312499,68.06132812500005],[-32.32744140624999,68.43730468749999],[-32.16455078125,67.99111328125002],[-33.15698242187497,67.62670898437506],[-34.1982421875,66.65507812499999],[-35.18857421874995,66.25029296875002],[-35.86723632812502,66.44140624999997],[-35.630078124999926,66.13994140625002],[-36.37919921874996,65.830810546875],[-36.52724609375002,66.00771484375],[-36.665185546874966,65.79008789062507],[-37.06279296874996,65.87143554687503],[-37.410058593749994,65.65634765625],[-37.954785156249955,65.63359375000007],[-37.278710937499994,66.30439453124995],[-38.156640624999966,66.38559570312498],[-37.75234375000002,66.26152343750002],[-38.13994140625002,65.90351562499998],[-38.52036132812498,66.00966796875002],[-38.20336914062497,65.71171874999999],[-40.17353515624998,65.55615234375],[-39.57792968749996,65.34077148437501],[-39.937255859375,65.14160156250003],[-40.253125,65.04887695312505],[-41.08442382812501,65.10083007812497],[-40.966015624999955,64.86884765624995],[-40.655468749999926,64.91533203125002],[-40.18222656249998,64.47993164062495],[-40.78173828125,64.22177734375003],[-41.581005859374926,64.29833984375],[-41.03056640624996,64.12104492187504],[-40.61777343749998,64.13173828125],[-40.550390625000034,63.72524414062505],[-40.77519531249999,63.53364257812501],[-41.04873046875002,63.51381835937505],[-41.387890624999926,63.06186523437498],[-41.84448242187497,63.07026367187501],[-42.174511718749955,63.20878906249999],[-41.63447265624998,62.972460937500074],[-41.90898437499996,62.73710937499999],[-42.94165039062503,62.72021484375003],[-42.15297851562502,62.568457031250006],[-42.32148437499998,62.15273437500005],[-42.110205078125006,61.857226562500074],[-42.58530273437498,61.71748046875001],[-42.34736328125001,61.61743164062497],[-42.717041015625,60.767480468749994],[-43.04409179687502,60.523681640625],[-43.92270507812495,60.59536132812502],[-43.21298828124998,60.390673828125074],[-43.122900390625006,60.06123046875001],[-43.32011718749993,59.928125],[-43.95502929687498,60.025488281250006],[-43.65791015625001,59.85864257812503],[-43.90654296874996,59.815478515625045],[-44.11699218750002,59.83193359375002],[-44.06547851562499,59.92480468750003],[-44.412939453125006,59.922607421875],[-44.22436523437494,60.273535156250006],[-44.61328124999997,60.01665039062499],[-45.37924804687495,60.20292968750002],[-45.367773437500006,60.37294921875002],[-44.97470703124995,60.457226562499955],[-44.756738281249966,60.66459960937502],[-45.38051757812494,60.444921875],[-46.04663085937503,60.61572265625],[-46.141943359375006,60.776513671874994],[-45.87021484374998,61.21831054687502],[-46.87446289062501,60.81640625000003],[-48.180810546874966,60.76923828125001],[-47.77031249999999,60.99775390625001],[-48.386425781249926,61.004736328125034],[-48.42817382812501,61.18740234375002],[-48.92207031249998,61.27744140624998],[-49.28906249999997,61.58994140625006],[-49.380273437499994,61.89018554687502],[-48.82871093749998,62.0796875],[-49.62377929687494,61.99858398437499],[-49.553466796875,62.23271484374999],[-50.319238281249966,62.473193359375045],[-50.298730468749966,62.72197265625002],[-49.793115234374994,63.04462890625004],[-50.39008789062501,62.82202148437497],[-51.46884765624995,63.64228515625001],[-51.547509765624994,64.00610351562497],[-50.260693359374955,64.21425781250002],[-50.48662109374996,64.20888671875],[-50.43706054687499,64.31284179687503],[-51.58491210937498,64.10317382812502],[-51.70786132812498,64.205078125],[-51.403759765624926,64.46318359375002],[-50.49208984375002,64.69316406250005],[-50.00898437500001,64.44726562499997],[-50.12163085937493,64.703759765625],[-50.51699218750002,64.76650390625],[-50.96064453124998,65.20112304687498],[-50.721582031249966,64.79760742187503],[-51.22060546875002,64.62846679687502],[-51.25537109375,64.75810546875005],[-51.92260742187503,64.21875],[-52.259033203125,65.154931640625],[-52.537695312500034,65.32880859374998],[-51.61914062500003,65.71318359375002],[-51.091894531250006,65.77578125],[-51.7234375,65.723486328125],[-52.55126953125003,65.46137695312498],[-52.760937499999926,65.59082031249997],[-53.198974609375,65.59404296875002],[-53.106347656249966,65.97714843749998],[-53.39204101562498,66.04833984375],[-51.225,66.88154296875001],[-53.035791015624966,66.20141601562503],[-53.538769531249955,66.13935546874998],[-53.41875,66.64853515624998],[-53.038281249999955,66.82680664062497],[-52.38686523437502,66.88115234375005],[-53.44360351562503,66.924658203125],[-53.88442382812502,67.13554687499999],[-53.79858398437494,67.41816406250001],[-52.666455078124955,67.74970703124995],[-50.613476562499955,67.5279296875],[-51.171044921874966,67.693603515625],[-50.96884765624998,67.80664062500003],[-51.765234375000034,67.73784179687505],[-52.34482421874998,67.83691406249997],[-53.735205078125006,67.54902343750004],[-53.151562499999926,68.20776367187503],[-51.779980468749926,68.05673828124998],[-51.456494140624926,68.116064453125],[-51.21015625000001,68.419921875],[-52.19853515624993,68.22080078125],[-53.38315429687495,68.29736328124997],[-53.03945312500002,68.61088867187499],[-52.60458984374998,68.70874023437503],[-51.62314453124995,68.53481445312505],[-50.945703124999966,68.68266601562505],[-50.807714843750006,68.81699218749998],[-51.24941406250002,68.73994140625001],[-51.084863281249994,69.12827148437498],[-50.29736328124994,69.17060546874998],[-51.07695312499996,69.20947265625],[-50.291699218749955,70.01445312500005],[-52.254638671875,70.05893554687503],[-53.02304687499995,70.30190429687497],[-54.01445312499996,70.42167968750005],[-54.53076171875,70.69926757812502],[-54.16582031249999,70.82011718750005],[-52.801953124999955,70.7505859375],[-50.87236328124993,70.36489257812502],[-50.66328124999998,70.417578125],[-51.32285156249998,70.58876953124997],[-51.25659179687497,70.85268554687502],[-51.77431640625002,71.01044921875001],[-51.018945312499966,71.001318359375],[-51.37666015625001,71.11904296875],[-53.007568359375,71.17998046874999],[-52.89184570312497,71.457666015625],[-51.76992187500002,71.67172851562498],[-53.44008789062502,71.57900390625002],[-53.14453125000003,71.80742187500002],[-53.65214843749996,72.36264648437506],[-53.92773437499997,72.31879882812501],[-53.47758789062502,71.84995117187506],[-54.01992187500002,71.657861328125],[-53.96298828124995,71.45898437499997],[-54.6890625,71.36723632812505],[-55.59404296874999,71.55351562500005],[-55.315576171874994,72.11069335937498],[-54.84013671874996,72.35610351562497],[-55.581445312499994,72.178857421875],[-55.63583984374998,72.300439453125],[-55.29570312499996,72.35439453124997],[-55.60170898437494,72.453466796875],[-54.924951171874994,72.57197265624998],[-54.737939453124994,72.87250976562501],[-55.07309570312498,73.01513671875003],[-55.28891601562498,72.93320312500003],[-55.66855468749998,73.00791015624998],[-55.288281249999955,73.32709960937498],[-56.10405273437496,73.55815429687499],[-55.83828125,73.75971679687501],[-56.22539062499999,74.12910156249995],[-57.23056640624995,74.12529296875007],[-56.70634765625002,74.21918945312501],[-56.717675781249994,74.42924804687499],[-56.25546874999998,74.52680664062498],[-58.56552734374998,75.35273437500001],[-58.249658203124994,75.50668945312503],[-58.51621093749995,75.68906250000006],[-61.18823242187494,76.157861328125],[-63.29130859374996,76.35205078125003],[-63.84306640624999,76.21713867187498],[-64.307275390625,76.31650390624998],[-65.36992187499993,76.13056640625004],[-65.87573242187494,76.23833007812505],[-66.46577148437498,76.13916015625],[-66.99257812500002,76.21293945312502],[-66.67480468750003,75.977392578125],[-68.14873046875002,76.06704101562497],[-69.48408203125001,76.39916992187503],[-68.1142578125,76.65063476562503],[-69.67382812499994,76.73588867187507],[-69.69423828125002,76.98945312500004],[-70.613134765625,76.82182617187499],[-71.14145507812498,77.02866210937503],[-70.86284179687496,77.175439453125],[-68.97832031250002,77.19531250000006],[-68.13554687499999,77.37958984375001],[-66.38945312499999,77.28027343750003],[-66.69121093749999,77.68120117187502],[-67.68808593749995,77.523779296875],[-68.62153320312498,77.60185546875002],[-69.35136718749999,77.467138671875],[-70.53540039062497,77.699560546875],[-70.11445312500001,77.84135742187505],[-71.27163085937494,77.81313476562497],[-72.81806640624995,78.1943359375],[-72.47250976562498,78.48203125],[-71.65131835937493,78.62314453124998],[-68.99345703124999,78.857421875],[-68.37705078124998,79.037841796875],[-65.82553710937503,79.17373046874997],[-64.79228515624993,80.00063476562502],[-64.17915039062498,80.09926757812497],[-66.84365234374997,80.07622070312507],[-67.05063476562503,80.384521484375],[-64.51552734374997,81],[-63.72197265624993,81.05732421875001],[-63.028662109375006,80.88955078125002],[-62.90336914062496,81.21835937500003],[-61.43598632812498,81.13359375000002],[-60.842871093750034,81.85537109374997],[-59.28193359374998,81.88403320312503],[-56.615136718749994,81.362890625],[-59.26181640624998,82.00664062500005],[-54.54887695312496,82.35063476562505],[-53.671337890624955,82.16406249999997],[-53.55566406250003,81.65327148437501],[-53.022558593750034,82.32172851562504],[-50.894433593749994,81.89521484375001],[-49.54106445312496,81.91806640625003],[-50.93554687500003,82.38281250000003],[-50.03710937499994,82.472412109375],[-44.7294921875,81.77983398437505],[-44.23886718749998,82.3681640625],[-45.55654296875002,82.74702148437498],[-41.87646484375,82.680322265625],[-41.36962890625003,82.75],[-46.136816406250006,82.85883789062504],[-46.169042968750006,83.06386718749997],[-45.41459960937496,83.01767578124998],[-43.00927734375003,83.26459960937501],[-41.300146484375006,83.10078125000004],[-40.35683593750002,83.332177734375],[-38.15625,82.9986328125],[-38.74956054687496,83.37084960937497],[-37.72333984374998,83.49775390624998],[-29.952880859375,83.56484374999997]]]]},"properties":{"name":"Greenland","childNum":14}},{"geometry":{"type":"Polygon","coordinates":[[[-89.2328125,15.888671875],[-88.89404296875,15.890625],[-88.60336914062499,15.76416015625],[-88.5939453125,15.950292968749991],[-88.22832031249999,15.72900390625],[-88.271435546875,15.694873046875003],[-88.36455078124999,15.616015625],[-88.68447265625,15.360498046874994],[-88.96098632812499,15.152441406249991],[-89.142578125,15.072314453125003],[-89.22236328125,14.866064453124991],[-89.16220703124999,14.669238281250003],[-89.17177734375,14.606884765624997],[-89.28671875,14.529980468749997],[-89.36259765624999,14.416015625],[-89.5736328125,14.390087890624997],[-89.54716796874999,14.241259765625003],[-90.04814453124999,13.904052734375],[-90.09521484375,13.736523437499997],[-90.60693359375,13.929003906250003],[-91.37734375,13.990185546874997],[-92.23515624999999,14.54541015625],[-92.15854492187499,14.963574218749997],[-92.14423828125,15.001953125],[-92.09873046874999,15.026757812499994],[-92.07480468749999,15.07421875],[-92.187158203125,15.320898437499991],[-92.08212890624999,15.495556640624997],[-91.9572265625,15.703222656249991],[-91.736572265625,16.07016601562499],[-91.433984375,16.070458984374994],[-90.97958984374999,16.07080078125],[-90.70322265624999,16.071044921875],[-90.52197265625,16.071191406249994],[-90.44716796875,16.072705078124997],[-90.45986328125,16.162353515625],[-90.450146484375,16.261376953124994],[-90.4169921875,16.351318359375],[-90.4169921875,16.39101562499999],[-90.47109375,16.43955078124999],[-90.57578125,16.467822265625003],[-90.63408203124999,16.5107421875],[-90.634375,16.565136718749997],[-90.65996093749999,16.630908203125003],[-90.710693359375,16.70810546874999],[-90.975830078125,16.867822265624994],[-91.409619140625,17.255859375],[-91.1955078125,17.254101562499997],[-90.99296874999999,17.25244140625],[-90.98916015625,17.81640625],[-89.16147460937499,17.81484375],[-89.2328125,15.888671875]]]},"properties":{"name":"Guatemala","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[144.74179687500003,13.25927734375],[144.64931640625002,13.4287109375],[144.87539062500002,13.614648437499994],[144.94082031250002,13.5703125],[144.74179687500003,13.25927734375]]]},"properties":{"name":"Guam","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-57.194775390625,5.5484375],[-57.3185546875,5.335351562499994],[-57.20981445312499,5.195410156249991],[-57.331005859375,5.020166015624994],[-57.711083984374994,4.991064453124991],[-57.91704101562499,4.820410156249991],[-57.84599609374999,4.668164062499997],[-58.05429687499999,4.101660156249991],[-57.646728515625,3.39453125],[-57.303662109375,3.377099609374994],[-57.19736328124999,2.853271484375],[-56.704345703125,2.036474609374991],[-56.4828125,1.942138671875],[-56.96953124999999,1.91640625],[-57.03759765625,1.936474609374997],[-57.092675781249994,2.005810546874997],[-57.118896484375,2.013964843749989],[-57.31748046874999,1.963476562499991],[-57.41269531249999,1.908935546875],[-57.500439453125,1.77382812499999],[-57.54575195312499,1.72607421875],[-57.59443359375,1.7041015625],[-57.795654296875,1.7],[-57.8734375,1.667285156249989],[-57.9828125,1.6484375],[-58.03466796875,1.520263671875],[-58.34067382812499,1.587548828124994],[-58.38037109375,1.530224609374997],[-58.39580078124999,1.481738281249989],[-58.5060546875,1.438671875],[-58.511865234374994,1.28466796875],[-58.68461914062499,1.281054687499989],[-58.73032226562499,1.247509765624997],[-58.78720703124999,1.20849609375],[-58.82177734375,1.201220703124989],[-59.231201171875,1.376025390624989],[-59.53569335937499,1.7],[-59.66660156249999,1.746289062499997],[-59.66850585937499,1.842333984374989],[-59.74072265625,1.874169921874994],[-59.75620117187499,1.900634765625],[-59.75522460937499,2.274121093749997],[-59.8896484375,2.362939453124994],[-59.9943359375,2.689990234374989],[-59.854394531249994,3.5875],[-59.55112304687499,3.933544921874997],[-59.557763671874994,3.960009765624989],[-59.62021484374999,4.023144531249997],[-59.73857421874999,4.226757812499997],[-59.69970703125,4.353515625],[-60.1486328125,4.533251953124989],[-59.990673828125,5.082861328124991],[-60.142041015625,5.238818359374989],[-60.241650390625,5.257958984374994],[-60.335205078125,5.199316406249991],[-60.45952148437499,5.188085937499991],[-60.6513671875,5.221142578124997],[-60.742138671875,5.202050781249994],[-61.37680664062499,5.906982421875],[-61.3908203125,5.938769531249989],[-61.303125,6.049511718749997],[-61.22495117187499,6.129199218749989],[-61.15947265624999,6.174414062499991],[-61.12871093749999,6.214306640624997],[-61.152294921875,6.385107421874991],[-61.151025390624994,6.446533203125],[-61.181591796875,6.513378906249997],[-61.20361328125,6.58837890625],[-61.14560546874999,6.69453125],[-60.717919921874994,6.768310546875],[-60.35209960937499,7.002880859374997],[-60.32207031249999,7.092041015625],[-60.32548828124999,7.133984375],[-60.34506835937499,7.15],[-60.46494140624999,7.166552734374989],[-60.523193359375,7.143701171874994],[-60.583203125,7.156201171874997],[-60.63330078125,7.211083984374994],[-60.718652343749994,7.535937499999989],[-60.513623046875,7.813183593749997],[-60.032421875,8.053564453124991],[-59.99072265625,8.162011718749994],[-59.96484375,8.191601562499997],[-59.849072265625,8.248681640624994],[-59.83164062499999,8.305957031249989],[-60.017529296875,8.54931640625],[-59.20024414062499,8.07460937499999],[-58.51108398437499,7.39804687499999],[-58.48056640624999,7.038134765624989],[-58.67294921874999,6.390771484374994],[-58.414990234375,6.85117187499999],[-57.982568359374994,6.785888671875],[-57.54013671874999,6.33154296875],[-57.2275390625,6.178417968749997],[-57.194775390625,5.5484375]]]},"properties":{"name":"Guyana","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[73.70742187500002,-53.13710937499999],[73.46513671875002,-53.184179687500006],[73.25117187500001,-52.97578125000001],[73.83779296875002,-53.11279296875],[73.70742187500002,-53.13710937499999]]]},"properties":{"name":"Heard I. and McDonald Is.","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-83.635498046875,14.876416015624997],[-84.53764648437496,14.633398437499963],[-84.64594726562498,14.661083984375011],[-84.86044921874998,14.809765625000011],[-84.98515624999999,14.752441406249972],[-85.059375,14.582958984374997],[-85.20834960937498,14.311816406250003],[-85.73393554687496,13.85869140625006],[-85.75341796875,13.852050781250028],[-85.78671874999995,13.844433593749997],[-85.98378906249997,13.965673828125006],[-86.04038085937503,14.050146484374977],[-86.33173828124995,13.770068359375031],[-86.37695312500003,13.755664062500031],[-86.61025390624997,13.774853515625026],[-86.73364257812494,13.763476562500017],[-86.75898437499995,13.746142578125045],[-86.77060546875003,13.698730468749972],[-86.763525390625,13.635253906250014],[-86.72958984375,13.4072265625],[-86.710693359375,13.31337890624998],[-86.72929687499996,13.284375],[-86.79213867187497,13.279785156249972],[-86.87353515624994,13.266503906250023],[-86.918212890625,13.223583984374983],[-87.00932617187499,13.007812499999986],[-87.0591796875,12.991455078125028],[-87.337255859375,12.979248046875028],[-87.48911132812503,13.352929687500051],[-87.814208984375,13.399169921875057],[-87.781884765625,13.521386718749994],[-87.71533203125003,13.812695312500011],[-87.73144531250003,13.841064453125014],[-87.80224609374997,13.889990234375034],[-87.89199218749997,13.894970703124983],[-87.99101562499996,13.879638671874972],[-88.15102539062497,13.987353515624974],[-88.44912109374994,13.850976562499994],[-88.48266601562503,13.854248046875043],[-88.49765624999998,13.904541015624986],[-88.50434570312501,13.964208984374963],[-88.51254882812498,13.97895507812504],[-89.12050781249994,14.370214843749991],[-89.36259765624996,14.416015625],[-89.17177734375,14.606884765624983],[-89.16220703125,14.669238281249989],[-89.22236328125001,14.86606445312502],[-89.142578125,15.072314453125031],[-88.96098632812496,15.15244140625002],[-88.68447265625002,15.360498046875037],[-88.36455078124996,15.616015625000045],[-88.27143554687498,15.694873046875045],[-88.22832031249999,15.729003906249972],[-88.131103515625,15.701025390625034],[-87.87495117187495,15.879345703124955],[-86.35664062499998,15.783203125],[-85.93627929687497,15.953417968750045],[-85.98564453124999,16.02416992187497],[-85.48369140624996,15.899511718749977],[-84.97373046874998,15.989892578124994],[-84.55966796875,15.802001953125],[-84.26142578124998,15.822607421875034],[-83.765283203125,15.405468750000054],[-83.972802734375,15.519628906250034],[-84.11132812499997,15.492431640625],[-84.09506835937503,15.400927734375017],[-83.92744140624998,15.394042968750028],[-83.76044921874998,15.220361328124994],[-83.49794921874997,15.222119140624997],[-83.64638671875,15.368408203125043],[-83.36918945312493,15.239990234375],[-83.29086914062498,15.078906250000045],[-83.2255859375,15.042285156250045],[-83.15751953124999,14.993066406249966],[-83.41503906249994,15.008056640625],[-83.5365234375,14.977001953124983],[-83.635498046875,14.876416015624997]]]},"properties":{"name":"Honduras","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[17.60781250000005,42.76904296875],[17.744238281250063,42.70034179687505],[17.34414062500008,42.790380859375006],[17.60781250000005,42.76904296875]]],[[[16.650683593750017,42.99658203125],[17.188281250000045,42.917041015625045],[16.850683593750006,42.8955078125],[16.650683593750017,42.99658203125]]],[[[17.667578125000063,42.897119140624994],[18.436328125000017,42.559716796874994],[18.517480468750023,42.43291015624999],[17.823828125,42.79741210937502],[17.045410156250057,43.014892578125],[17.667578125000063,42.897119140624994]]],[[[16.785253906250006,43.270654296874966],[16.490332031250034,43.28618164062502],[16.44892578125004,43.38706054687506],[16.89130859375001,43.314648437499955],[16.785253906250006,43.270654296874966]]],[[[15.371386718750074,43.973828124999955],[15.437207031250068,43.899511718750006],[15.270019531250028,44.01074218750003],[15.371386718750074,43.973828124999955]]],[[[14.488085937500074,44.66005859375005],[14.31240234375008,44.90039062499997],[14.33125,45.16499023437498],[14.488085937500074,44.66005859375005]]],[[[14.810253906250068,44.97705078124997],[14.45039062500004,45.079199218750006],[14.571093750000017,45.224755859374994],[14.810253906250068,44.97705078124997]]],[[[18.905371093750006,45.931738281250034],[18.839062499999983,45.83574218750002],[19.064257812500045,45.51499023437506],[19.004687500000074,45.39951171875006],[19.4,45.2125],[19.062890625000023,45.13720703125],[19.007128906250045,44.86918945312502],[18.83642578125,44.883251953124955],[18.66259765625,45.07744140624999],[17.812792968750074,45.078125],[16.918652343749983,45.27656249999998],[16.53066406250008,45.21669921875002],[16.29335937500005,45.00883789062496],[16.028320312500057,45.18959960937502],[15.788085937500057,45.17895507812497],[15.736621093750045,44.76582031250001],[16.10341796875008,44.52099609375006],[16.300097656250017,44.12451171875],[17.27382812500005,43.44575195312501],[17.650488281250063,43.006591796875],[17.585156250000068,42.93837890625005],[16.903125,43.392431640625006],[16.393945312500023,43.54335937500002],[15.985546875000068,43.519775390625],[15.185839843750017,44.17211914062503],[15.122949218749994,44.256787109374955],[15.470996093750045,44.27197265625003],[14.981347656250023,44.60292968750005],[14.854589843750034,45.08100585937501],[14.550488281249983,45.297705078125006],[14.31269531250004,45.33779296875002],[13.86074218750008,44.83740234375003],[13.517187500000063,45.481787109375034],[13.878710937500017,45.428369140624994],[14.369921875000074,45.48144531250006],[14.427343750000034,45.50576171875002],[14.56884765625,45.65722656249997],[14.591796875000057,45.65126953125002],[14.649511718750006,45.57148437500001],[14.793066406250034,45.47822265625001],[14.95458984375,45.499902343749994],[15.110449218750034,45.450781250000034],[15.242089843750023,45.44140624999997],[15.339453125000063,45.46704101562506],[15.326660156250028,45.502294921875034],[15.291210937500011,45.541552734375045],[15.283593750000051,45.5796875],[15.35371093750004,45.659912109375],[15.27705078125004,45.73261718749998],[15.652148437500074,45.86215820312498],[15.675585937500045,45.98369140624996],[15.666210937500011,46.04848632812502],[15.596875,46.10922851562506],[15.592578125000017,46.139990234375006],[15.608984374999977,46.171923828125045],[16.1064453125,46.382226562499994],[16.32119140625005,46.53461914062504],[16.42763671875005,46.5244140625],[16.516210937499977,46.499902343749966],[16.569921875,46.48500976562505],[16.748046875000057,46.41640625000002],[16.87148437500008,46.33930664062504],[17.310644531250006,45.99614257812502],[17.80712890625,45.79042968750002],[18.358300781250023,45.75302734375006],[18.533593750000023,45.79614257812503],[18.56464843750004,45.81328124999999],[18.666015625,45.90747070312497],[18.905371093750006,45.931738281250034]]]]},"properties":{"name":"Croatia","childNum":8}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-72.80458984374997,18.777685546875063],[-72.82221679687501,18.707128906249977],[-73.07797851562498,18.790917968749994],[-73.27641601562499,18.95405273437501],[-72.80458984374997,18.777685546875063]]],[[[-71.647216796875,19.195947265624994],[-71.80712890624997,18.987011718749983],[-71.733642578125,18.85639648437501],[-71.72705078125,18.80322265625003],[-71.74321289062502,18.73291015625],[-71.86650390624999,18.61416015625005],[-71.98686523437499,18.61035156249997],[-72.000390625,18.59790039062503],[-71.94038085937493,18.51259765625005],[-71.87255859374997,18.416210937499955],[-71.76191406249998,18.34130859374997],[-71.73725585937495,18.27080078124999],[-71.76831054687497,18.039160156250063],[-71.85292968749997,18.119140625],[-71.94609375,18.186083984375045],[-72.05986328124993,18.228564453125017],[-72.87666015624998,18.151757812499994],[-73.38515625000002,18.251171874999983],[-73.747314453125,18.190234375000017],[-73.88496093749998,18.041894531249994],[-74.478125,18.45],[-74.3875,18.624707031249983],[-74.22773437499998,18.662695312499977],[-72.78935546874996,18.434814453125],[-72.37607421874998,18.57446289062503],[-72.34765624999994,18.674951171874994],[-72.81108398437496,19.071582031250074],[-72.70322265625,19.441064453125023],[-73.43837890624994,19.722119140624983],[-73.21777343750003,19.88369140625005],[-72.63701171875002,19.90087890625],[-72.21982421875003,19.744628906250057],[-71.834716796875,19.696728515624983],[-71.77924804687498,19.718164062499994],[-71.75742187499998,19.68818359375001],[-71.71147460937493,19.486572265625057],[-71.74648437499997,19.28583984375001],[-71.647216796875,19.195947265624994]]]]},"properties":{"name":"Haiti","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[22.1318359375,48.405322265624996],[22.253710937500017,48.407373046874994],[22.582421875000023,48.134033203125],[22.769140625,48.109619140625],[22.87666015625001,47.947265625],[21.99970703125001,47.505029296874994],[21.121679687500006,46.282421875],[20.76025390625,46.246240234374994],[20.613671875000023,46.13349609375],[20.508105468750017,46.166943359375],[20.28095703125001,46.1330078125],[20.241796875,46.10859375],[20.21015625000001,46.126025390624996],[20.161425781250017,46.141894531249996],[19.93408203125,46.161474609375],[19.84443359375001,46.145898437499994],[19.61347656250001,46.169189453125],[19.421289062500023,46.064453125],[18.666015625,45.907470703125],[18.56464843750001,45.81328125],[18.533593750000023,45.796142578125],[18.358300781250023,45.75302734375],[17.80712890625,45.790429687499994],[17.310644531250006,45.996142578124996],[16.871484375000023,46.339306640625],[16.748046875,46.41640625],[16.569921875,46.485009765624994],[16.516210937500006,46.499902343749994],[16.283593750000023,46.857275390625],[16.093066406250017,46.86328125],[16.453417968750017,47.006787109375],[16.44287109375,47.39951171875],[16.676562500000017,47.536035156249994],[16.421289062500023,47.674462890624994],[17.06660156250001,47.707568359374996],[17.147363281250023,48.00595703125],[17.76191406250001,47.770166015624994],[18.72421875,47.787158203124996],[18.791894531250023,48.000292968749996],[19.625390625000023,48.223095703125],[19.95039062500001,48.146630859374994],[20.333789062500017,48.295556640624994],[20.490039062500017,48.526904296874996],[21.45136718750001,48.55224609375],[21.766992187500023,48.3380859375],[22.1318359375,48.405322265624996]]]},"properties":{"name":"Hungary","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[122.9489257812501,-10.90927734375002],[122.82617187500003,-10.899121093749983],[122.84570312500003,-10.761816406249991],[123.37109375000003,-10.474902343749989],[123.41816406250004,-10.651269531250037],[122.9489257812501,-10.90927734375002]]],[[[121.8830078125001,-10.590332031249957],[121.70468750000006,-10.5556640625],[121.99833984375002,-10.446972656249983],[121.8830078125001,-10.590332031249957]]],[[[123.41621093750004,-10.302636718749966],[123.3255859375,-10.264160156249943],[123.45878906250002,-10.13994140624996],[123.41621093750004,-10.302636718749966]]],[[[120.0125,-9.374707031250026],[120.78447265625002,-9.95703125],[120.83261718750006,-10.0375],[120.69804687500002,-10.206640624999949],[120.4391601562501,-10.294042968749991],[120.14482421875002,-10.200097656249952],[119.60107421874997,-9.773535156250006],[119.08544921875003,-9.706933593750023],[118.95878906250002,-9.519335937500003],[119.29589843749997,-9.3671875],[119.9420898437501,-9.301464843750026],[120.0125,-9.374707031250026]]],[[[125.06816406250002,-9.511914062499997],[124.42753906250002,-10.14863281250004],[123.7472656250001,-10.347167968749986],[123.60478515625002,-10.270117187500006],[123.71640625000012,-10.078613281249986],[123.5892578125,-9.966796875000028],[123.709375,-9.61484375],[124.0363281250001,-9.341601562500031],[124.28232421875012,-9.427929687500026],[124.44443359375012,-9.190332031250023],[124.92226562500005,-8.942480468749977],[124.93681640625007,-9.053417968750026],[125.14902343750012,-9.042578125000034],[125.10048828125,-9.189843750000023],[124.96015625000004,-9.213769531250009],[125.06816406250002,-9.511914062499997]]],[[[115.60996093750012,-8.769824218749974],[115.48046875000003,-8.715429687500006],[115.56142578125,-8.669921874999972],[115.60996093750012,-8.769824218749974]]],[[[122.97734375000002,-8.54521484374996],[122.88779296875006,-8.587304687500009],[123.01054687500002,-8.448339843750034],[123.153125,-8.475781250000026],[122.97734375000002,-8.54521484374996]]],[[[119.46406250000004,-8.741015624999974],[119.38554687500002,-8.736035156250026],[119.4464843750001,-8.429199218749957],[119.55722656250012,-8.518847656250003],[119.46406250000004,-8.741015624999974]]],[[[123.31748046875012,-8.354785156249974],[123.02500000000012,-8.395507812500014],[123.21708984375002,-8.235449218750006],[123.33603515625006,-8.269042968750014],[123.31748046875012,-8.354785156249974]]],[[[116.64082031250004,-8.613867187500006],[116.51425781250012,-8.820996093750011],[116.58652343750012,-8.886132812499966],[116.23935546875006,-8.912109375000014],[115.85732421875005,-8.787890625000017],[116.07646484375002,-8.744921874999974],[116.06113281250006,-8.437402343750023],[116.4015625000001,-8.204199218750034],[116.7189453125001,-8.336035156249977],[116.64082031250004,-8.613867187500006]]],[[[124.28662109375003,-8.32949218749998],[124.14667968750004,-8.531445312499997],[123.92773437500003,-8.448925781249969],[124.23955078125002,-8.20341796874996],[124.28662109375003,-8.32949218749998]]],[[[123.92480468750003,-8.2724609375],[123.55302734375007,-8.566796875],[123.23007812500006,-8.530664062500023],[123.47587890625007,-8.322265625000014],[123.39121093750012,-8.280468750000026],[123.77597656250006,-8.190429687499986],[123.92480468750003,-8.2724609375]]],[[[138.89511718750006,-8.388671874999957],[138.56337890625,-8.30908203125],[138.79619140625007,-8.173632812500017],[138.89511718750006,-8.388671874999957]]],[[[117.55634765625004,-8.367285156249949],[117.49052734375007,-8.183398437499974],[117.66503906249997,-8.148242187500003],[117.55634765625004,-8.367285156249949]]],[[[124.5755859375,-8.140820312499997],[125.05029296874997,-8.179589843749994],[125.13173828125,-8.326464843749989],[124.38066406250002,-8.41513671875002],[124.43066406249997,-8.18320312500002],[124.5755859375,-8.140820312499997]]],[[[127.8234375000001,-8.098828124999969],[128.11923828125012,-8.17070312499996],[128.02353515625006,-8.255371093749972],[127.82089843750012,-8.190234375000031],[127.8234375000001,-8.098828124999969]]],[[[122.7829101562501,-8.61171875],[121.65136718749997,-8.898730468749946],[121.41464843750006,-8.81484375],[121.32832031250004,-8.916894531250009],[121.03525390625012,-8.935449218749966],[120.55048828125004,-8.80185546875002],[119.909375,-8.857617187500011],[119.80791015625002,-8.697656250000023],[119.87480468750007,-8.419824218749994],[120.61025390625005,-8.24042968750004],[121.44453125000004,-8.57783203125004],[121.96650390625004,-8.455175781250006],[122.32324218749997,-8.628320312500023],[122.85048828125,-8.304394531250011],[122.91914062500004,-8.221875],[122.75859375000002,-8.185937499999952],[122.91699218749997,-8.105566406250006],[123.00595703125006,-8.329101562499986],[122.7829101562501,-8.61171875]]],[[[130.86220703125,-8.31875],[130.77519531250002,-8.34990234374996],[131.02011718750012,-8.091308593749943],[131.17636718750006,-8.130761718749994],[130.86220703125,-8.31875]]],[[[118.24238281250004,-8.317773437499994],[118.61191406250006,-8.28066406249998],[118.71386718749997,-8.41494140624998],[118.926171875,-8.297656249999974],[119.12968750000002,-8.668164062499969],[118.74589843750002,-8.735449218749991],[118.83261718750012,-8.833398437499966],[118.47861328125012,-8.856445312499957],[118.37890625000003,-8.674609375000031],[118.18994140624997,-8.840527343749997],[117.06132812500002,-9.099023437499994],[116.78847656250005,-9.006347656250028],[116.83505859375012,-8.532421875000026],[117.16484375000007,-8.367187500000014],[117.56708984375004,-8.426367187499991],[117.80605468750005,-8.711132812500011],[117.96953125000002,-8.728027343749986],[118.23486328124997,-8.591894531249963],[117.81484375000005,-8.342089843749974],[117.7552734375,-8.149511718749991],[118.11748046875007,-8.12226562500004],[118.24238281250004,-8.317773437499994]]],[[[115.44785156250012,-8.155175781249994],[115.70429687500004,-8.40712890624998],[115.14492187500005,-8.849023437500037],[115.05507812500005,-8.573046874999946],[114.61318359375,-8.37832031249998],[114.46757812500007,-8.166308593749946],[114.93847656249997,-8.18710937500002],[115.15400390625004,-8.065722656249974],[115.44785156250012,-8.155175781249994]]],[[[129.83886718749997,-7.954589843749986],[129.71347656250012,-8.04072265625004],[129.60898437500006,-7.803417968750011],[129.81298828124997,-7.819726562499952],[129.83886718749997,-7.954589843749986]]],[[[126.80097656250004,-7.667871093750009],[126.4720703125,-7.950390625000011],[126.04003906250003,-7.885839843750006],[125.79824218750005,-7.984570312499969],[125.97529296875004,-7.663378906249989],[126.21367187500002,-7.706738281250026],[126.60957031250004,-7.571777343749972],[126.80097656250004,-7.667871093750009]]],[[[127.41943359375003,-7.623046875000028],[127.37070312500012,-7.512792968749949],[127.47519531250012,-7.531054687500031],[127.41943359375003,-7.623046875000028]]],[[[138.53535156250004,-8.273632812499969],[138.2962890625,-8.405175781250037],[137.65039062499997,-8.386132812499966],[138.08183593750002,-7.566210937500003],[138.29550781250012,-7.4384765625],[138.76982421875002,-7.390429687499974],[138.98906250000002,-7.696093749999989],[138.53535156250004,-8.273632812499969]]],[[[131.3255859375,-7.999511718749986],[131.11376953125003,-7.997363281249989],[131.13779296875012,-7.684863281250017],[131.64345703125,-7.11279296875],[131.73613281250007,-7.197070312500017],[131.64384765625002,-7.266894531249946],[131.62441406250005,-7.626171874999955],[131.3255859375,-7.999511718749986]]],[[[131.98203125000006,-7.202050781249966],[131.75078125000002,-7.116796875],[131.92226562500005,-7.104492187499986],[131.98203125000006,-7.202050781249966]]],[[[128.6701171875001,-7.183300781249969],[128.52978515625003,-7.134570312499989],[128.62773437500007,-7.06875],[128.6701171875001,-7.183300781249969]]],[[[120.77441406250003,-7.118945312500003],[120.64082031250004,-7.115820312499991],[120.63339843750006,-7.018261718750011],[120.77441406250003,-7.118945312500003]]],[[[113.84453125000007,-7.105371093749994],[113.12695312499997,-7.224121093750028],[112.72587890625007,-7.072753906250014],[112.86806640625,-6.899902343749972],[113.06738281250003,-6.879980468749991],[113.97470703125012,-6.873046875],[114.0736328125,-6.960156249999983],[113.84453125000007,-7.105371093749994]]],[[[115.37705078125006,-6.97080078125002],[115.22031250000012,-6.952539062500037],[115.24052734375007,-6.861230468749994],[115.54609375000004,-6.938671874999955],[115.37705078125006,-6.97080078125002]]],[[[105.25283203125005,-6.640429687499946],[105.12138671875007,-6.614941406249997],[105.26054687500002,-6.523925781250014],[105.25283203125005,-6.640429687499946]]],[[[134.53681640625004,-6.442285156249994],[134.32275390624997,-6.84873046875002],[134.09082031249997,-6.833789062500003],[134.10703125000006,-6.471582031250009],[134.19462890625007,-6.459765625],[134.11464843750005,-6.190820312500009],[134.53681640625004,-6.442285156249994]]],[[[107.37392578125005,-6.007617187499989],[107.66679687500002,-6.215820312499957],[108.33017578125012,-6.286035156249966],[108.67783203125006,-6.790527343749972],[110.42626953124997,-6.947265625000028],[110.83476562500002,-6.424218749999952],[110.97226562500012,-6.435644531249977],[111.18154296875005,-6.686718749999969],[111.54033203125002,-6.648242187500031],[112.0873046875,-6.89335937499996],[112.53925781250004,-6.926464843749955],[112.64873046875007,-7.221289062499977],[112.7943359375,-7.304492187499974],[112.79453125000012,-7.55244140625004],[113.01357421875005,-7.657714843749986],[113.49765625000006,-7.723828124999955],[114.07070312500005,-7.633007812500011],[114.40927734375012,-7.79248046875],[114.38691406250004,-8.405175781250037],[114.58378906250002,-8.769628906250034],[113.25332031250005,-8.286718749999963],[112.67880859375006,-8.409179687499957],[111.50996093750004,-8.30507812499998],[110.60722656250002,-8.149414062499972],[109.28164062500005,-7.704882812500003],[108.74121093749997,-7.667089843750034],[108.45175781250006,-7.79697265625002],[107.91748046875003,-7.724121093750014],[107.28496093750007,-7.471679687500014],[106.45527343750004,-7.368652343749986],[106.51972656250004,-7.053710937499943],[106.19824218749997,-6.927832031249977],[105.25546875000012,-6.835253906250031],[105.37089843750002,-6.664355468750031],[105.48369140625007,-6.781542968750017],[105.65507812500002,-6.469531249999946],[105.78691406250002,-6.456933593749966],[105.86826171875006,-6.11640625000004],[106.075,-5.914160156249963],[106.82519531249997,-6.098242187499977],[107.0462890625,-5.90419921874998],[107.37392578125005,-6.007617187499989]]],[[[120.52832031249997,-6.2984375],[120.48730468749997,-6.464843749999972],[120.47734375000007,-5.775292968750009],[120.52832031249997,-6.2984375]]],[[[112.7194335937501,-5.81103515625],[112.58603515625006,-5.803613281249994],[112.69003906250006,-5.726171875000034],[112.7194335937501,-5.81103515625]]],[[[132.80712890625003,-5.850781250000011],[132.68144531250002,-5.91259765625],[132.63017578125002,-5.60703125],[132.80712890625003,-5.850781250000011]]],[[[134.74697265625,-5.707031249999957],[134.71416015625007,-6.29511718750004],[134.44111328125004,-6.334863281249966],[134.15488281250006,-6.06289062499998],[134.3019531250001,-6.009765624999986],[134.34306640625002,-5.833007812499943],[134.20537109375002,-5.707226562499997],[134.34130859375003,-5.712890624999986],[134.57080078124997,-5.42734375],[134.74697265625,-5.707031249999957]]],[[[132.92626953124997,-5.902050781249983],[132.84501953125002,-5.987988281249997],[133.13847656250002,-5.317871093749986],[133.11962890625003,-5.575976562499989],[132.92626953124997,-5.902050781249983]]],[[[102.36718750000003,-5.478710937499983],[102.1107421875,-5.32255859374996],[102.3717773437501,-5.366406250000011],[102.36718750000003,-5.478710937499983]]],[[[123.62675781250007,-5.271582031249963],[123.58261718750006,-5.36738281250004],[123.54277343750002,-5.271093749999963],[123.62675781250007,-5.271582031249963]]],[[[122.04296874999997,-5.437988281250028],[121.80849609375,-5.256152343750017],[121.91367187500012,-5.072265624999957],[122.04101562500003,-5.158789062499991],[122.04296874999997,-5.437988281250028]]],[[[122.64511718750012,-5.26943359374998],[122.5638671875,-5.3875],[122.28310546875,-5.319531249999969],[122.39628906250002,-5.069824218749986],[122.36894531250007,-4.767187499999977],[122.70195312500002,-4.61865234375],[122.75986328125012,-4.933886718750003],[122.61406250000007,-5.138671874999986],[122.64511718750012,-5.26943359374998]]],[[[123.17978515625006,-4.551171875000023],[123.195703125,-4.82265625],[123.05517578124997,-4.748242187500026],[122.97167968750003,-5.138476562500031],[123.18730468750007,-5.333007812499957],[122.96875,-5.405761718749943],[122.81210937500012,-5.671289062499952],[122.64501953124997,-5.663378906250031],[122.58642578124997,-5.488867187500006],[122.76650390625005,-5.210156249999983],[122.85332031250007,-4.618359375000026],[123.074609375,-4.38691406250004],[123.17978515625006,-4.551171875000023]]],[[[133.57080078124997,-4.245898437500003],[133.621875,-4.299316406249957],[133.32089843750006,-4.111035156249969],[133.57080078124997,-4.245898437500003]]],[[[123.2423828125001,-4.112988281250011],[123.07617187499997,-4.227148437499991],[122.96904296875002,-4.029980468749969],[123.21191406250003,-3.997558593750028],[123.2423828125001,-4.112988281250011]]],[[[128.56259765625012,-3.58544921875],[128.39160156250003,-3.637890625000026],[128.45156250000005,-3.514746093749991],[128.56259765625012,-3.58544921875]]],[[[128.2755859375001,-3.67460937499996],[127.97802734374997,-3.770996093749972],[127.925,-3.69931640625002],[128.32910156249997,-3.51591796874996],[128.2755859375001,-3.67460937499996]]],[[[116.42412109375007,-3.464453124999963],[116.38779296875012,-3.636718749999972],[116.3265625,-3.539062499999972],[116.42412109375007,-3.464453124999963]]],[[[116.30332031250006,-3.868164062499957],[116.05878906250004,-4.006933593749991],[116.06357421875006,-3.457910156249952],[116.26972656250004,-3.251074218750006],[116.30332031250006,-3.868164062499957]]],[[[126.86113281250007,-3.087890624999986],[127.22734375000007,-3.391015625],[127.22958984375006,-3.633007812500011],[126.68632812500007,-3.823632812500037],[126.21455078125004,-3.605175781250026],[126.05654296875,-3.420996093749991],[126.08828125,-3.105468750000014],[126.86113281250007,-3.087890624999986]]],[[[106.88642578125004,-3.005273437500023],[106.7428710937501,-2.932812500000011],[106.91064453124997,-2.93398437499998],[106.88642578125004,-3.005273437500023]]],[[[129.75468750000007,-2.865820312500034],[130.3791015625001,-2.989355468749977],[130.56992187500006,-3.130859375000028],[130.85996093750006,-3.570312500000028],[130.805078125,-3.85771484374996],[129.844140625,-3.327148437499957],[129.51171875000003,-3.32851562499998],[129.46767578125005,-3.453222656249977],[128.8625,-3.234960937500006],[128.51660156249997,-3.449121093750037],[128.13203125000004,-3.157421875000026],[127.90234374999997,-3.496289062499955],[127.87792968749997,-3.222070312499966],[128.19853515625002,-2.865917968749969],[128.99111328125,-2.82851562499998],[129.17441406250006,-2.933496093749966],[129.48417968750002,-2.785742187499977],[129.75468750000007,-2.865820312500034]]],[[[100.42509765625007,-3.182910156249974],[100.46513671875007,-3.32851562499998],[100.20429687500004,-2.98681640625],[100.19853515625002,-2.785546875000023],[100.45458984375003,-3.001953124999972],[100.42509765625007,-3.182910156249974]]],[[[108.2072265625001,-2.997656249999977],[108.05527343750006,-3.22685546874996],[107.85820312500002,-3.086328125000023],[107.61445312500004,-3.209375],[107.56347656250003,-2.920117187499997],[107.66630859375002,-2.566308593750037],[107.83779296875005,-2.530273437499972],[108.21513671875002,-2.696972656250011],[108.29062500000012,-2.829980468750023],[108.2072265625001,-2.997656249999977]]],[[[100.20410156249997,-2.741015625000017],[100.01494140625007,-2.819726562499966],[99.98789062500006,-2.525390624999957],[100.20410156249997,-2.741015625000017]]],[[[99.84306640625007,-2.343066406250031],[99.60703125000012,-2.257519531250011],[99.57216796875005,-2.025781249999966],[99.84306640625007,-2.343066406250031]]],[[[126.055078125,-2.451269531249963],[125.86289062500006,-2.077148437499943],[125.92275390625,-1.974804687499969],[126.055078125,-2.451269531249963]]],[[[126.02421875000007,-1.789746093750011],[126.33173828125004,-1.822851562500006],[125.47919921875004,-1.940039062499991],[125.38720703124997,-1.843066406249946],[126.02421875000007,-1.789746093750011]]],[[[130.35332031250007,-1.690527343749963],[130.41884765625,-1.971289062499963],[130.24804687500003,-2.047753906249994],[129.7376953125,-1.866894531250011],[130.35332031250007,-1.690527343749963]]],[[[124.96953125000007,-1.70546875],[125.18789062500005,-1.712890624999986],[125.31406250000006,-1.877148437499969],[124.41777343750002,-2.005175781250031],[124.32968750000012,-1.858886718749972],[124.41757812500006,-1.659277343749991],[124.96953125000007,-1.70546875]]],[[[135.47421875000006,-1.591796875000014],[136.89257812500003,-1.799707031249994],[136.22812500000012,-1.893652343749949],[135.47421875000006,-1.591796875000014]]],[[[108.953125,-1.61962890625],[108.83789062499997,-1.661621093750028],[108.80371093750003,-1.567773437499994],[108.953125,-1.61962890625]]],[[[106.04570312500002,-1.669433593750014],[106.36591796875004,-2.464843749999972],[106.81845703125006,-2.573339843749963],[106.6120117187501,-2.895507812499957],[106.66718750000004,-3.071777343749986],[105.99873046875004,-2.824902343749955],[105.7858398437501,-2.18134765625004],[105.13339843750012,-2.042578125],[105.45957031250006,-1.574707031249986],[105.58544921875003,-1.526757812499994],[105.7008789062501,-1.731054687499963],[105.7204101562501,-1.533886718750026],[105.91005859375,-1.504980468749991],[106.04570312500002,-1.669433593750014]]],[[[123.59755859375,-1.704296875000011],[123.48251953125006,-1.681445312499974],[123.52851562500004,-1.502832031250009],[123.59755859375,-1.704296875000011]]],[[[128.1530273437501,-1.66054687499998],[127.56162109375012,-1.728515624999972],[127.39501953125003,-1.589843749999972],[127.64667968750004,-1.332421875],[128.1530273437501,-1.66054687499998]]],[[[123.2123046875,-1.171289062499966],[123.23779296874997,-1.389355468749983],[123.43476562500004,-1.236816406249986],[123.54726562500005,-1.337402343749957],[123.51191406250004,-1.447363281249977],[123.27490234374997,-1.437207031249955],[123.17294921875006,-1.616015624999974],[123.15039062500003,-1.304492187500003],[122.89042968750007,-1.58720703124996],[122.81083984375002,-1.432128906249986],[122.90800781250002,-1.182226562499963],[123.2123046875,-1.171289062499966]]],[[[109.71025390625007,-1.1806640625],[109.46367187500002,-1.277539062500026],[109.4759765625,-0.9853515625],[109.74335937500004,-1.039355468749989],[109.71025390625007,-1.1806640625]]],[[[134.96533203124997,-1.116015624999974],[134.86171875,-1.114160156249952],[134.82792968750002,-0.978808593750003],[134.99628906250004,-1.03408203124998],[134.96533203124997,-1.116015624999974]]],[[[99.16386718750007,-1.777929687500006],[98.82773437500006,-1.609960937499977],[98.60175781250004,-1.197851562499949],[98.67607421875007,-0.970507812500003],[98.93261718750003,-0.954003906250009],[99.2672851562501,-1.62773437499996],[99.16386718750007,-1.777929687500006]]],[[[131.00185546875005,-1.315527343750034],[130.78232421875006,-1.255468749999963],[130.67294921875006,-0.959765625000031],[131.03300781250007,-0.917578124999963],[131.00185546875005,-1.315527343750034]]],[[[135.38300781250004,-0.6513671875],[135.89355468749997,-0.725781249999969],[136.37529296875007,-1.094042968750031],[136.1647460937501,-1.214746093750023],[135.91503906250003,-1.178417968749997],[135.74707031249997,-0.823046874999974],[135.64570312500004,-0.881933593749991],[135.38300781250004,-0.6513671875]]],[[[127.30039062500012,-0.780957031250026],[127.1564453125001,-0.760937500000026],[127.20908203125006,-0.619335937499955],[127.30039062500012,-0.780957031250026]]],[[[130.6266601562501,-0.528710937499966],[130.46542968750006,-0.486523437499983],[130.6159179687501,-0.417285156250003],[130.6266601562501,-0.528710937499966]]],[[[121.86435546875012,-0.406835937500006],[121.88125,-0.502636718749983],[121.65527343749997,-0.526171874999989],[121.86435546875012,-0.406835937500006]]],[[[140.97343750000007,-2.609765625],[140.97353515625,-2.803417968750026],[140.975,-6.346093750000023],[140.86230468749997,-6.740039062499989],[140.97519531250006,-6.90537109375002],[140.97617187500012,-9.11875],[140.00292968749997,-8.19550781250004],[140.11699218750002,-7.923730468750009],[139.93476562500004,-8.101171875],[139.38564453125,-8.189062499999963],[139.24882812500002,-7.982421874999972],[138.890625,-8.237792968749943],[139.08798828125012,-7.587207031250017],[138.74794921875,-7.25146484375],[139.17685546875006,-7.1904296875],[138.84570312500003,-7.13632812499999],[138.60136718750007,-6.936523437499972],[138.86455078125007,-6.858398437499943],[138.43867187500004,-6.343359375],[138.2962890625,-5.94902343749996],[138.37460937500006,-5.84365234374998],[138.19960937500005,-5.80703125],[138.33964843750007,-5.675683593749966],[138.08710937500004,-5.70917968750004],[138.06083984375002,-5.46523437499998],[137.27978515624997,-4.945410156249949],[136.61884765625004,-4.81875],[135.97968750000004,-4.530859374999963],[135.19560546875007,-4.450683593749972],[134.67968749999997,-4.079101562499943],[134.70654296875003,-3.954785156250026],[134.88652343750007,-3.938476562499986],[134.26621093750012,-3.945800781249972],[134.14707031250006,-3.79677734374998],[133.97382812500004,-3.817968750000034],[133.67832031250006,-3.4794921875],[133.8415039062501,-3.054785156249991],[133.70039062500004,-3.0875],[133.653125,-3.364355468749991],[133.51816406250012,-3.411914062500003],[133.40087890625003,-3.899023437500034],[133.24873046875004,-4.062304687499989],[132.91445312500005,-4.05693359374996],[132.75390625000003,-3.703613281250014],[132.86972656250006,-3.550976562499997],[132.75136718750005,-3.294628906249997],[131.97119140624997,-2.788574218750014],[132.2306640625001,-2.680371093749997],[132.725,-2.789062500000028],[133.19101562500006,-2.43779296874996],[133.70009765625005,-2.624609375],[133.75332031250005,-2.450683593750014],[133.90488281250012,-2.390917968750003],[133.79101562500003,-2.293652343749997],[133.92158203125004,-2.102050781249957],[132.96279296875005,-2.272558593749963],[132.30761718749997,-2.24228515625002],[132.02343749999997,-1.99033203125002],[131.93037109375004,-1.559667968750034],[131.29375,-1.393457031250009],[130.99589843750007,-1.42470703124998],[131.1908203125,-1.165820312500003],[131.2572265625,-0.855468750000014],[131.80429687500006,-0.703808593750026],[132.39375,-0.355468750000028],[132.85644531250003,-0.417382812500023],[133.47265624999997,-0.726171874999963],[133.97451171875,-0.744335937500026],[134.11152343750004,-0.84677734375002],[134.07197265625004,-1.001855468749994],[134.25957031250007,-1.362988281250026],[134.105859375,-1.720996093749946],[134.19482421875003,-2.309082031249943],[134.45996093749997,-2.83232421874996],[134.48330078125,-2.583007812499972],[134.62744140624997,-2.536718749999963],[134.70214843749997,-2.933593749999986],[134.84335937500006,-2.909179687499986],[134.88681640625006,-3.209863281249966],[135.25156250000012,-3.368554687499966],[135.48662109375002,-3.34511718749998],[135.85917968750002,-2.99531250000004],[136.38994140625002,-2.273339843750037],[137.07207031250002,-2.105078124999949],[137.1710937500001,-2.025488281249991],[137.1234375,-1.840917968749963],[137.80625000000012,-1.483203125],[139.78955078125003,-2.34824218750002],[140.62255859374997,-2.44580078125],[140.74746093750005,-2.607128906249997],[140.97343750000007,-2.609765625]]],[[[104.47421875000012,-0.334667968749955],[104.59013671875002,-0.466601562500017],[104.36318359375,-0.658593749999966],[104.25712890625002,-0.463281249999966],[104.47421875000012,-0.334667968749955]]],[[[127.56699218750006,-0.318945312499949],[127.68242187500002,-0.46835937500002],[127.60498046874997,-0.610156249999946],[127.88017578125002,-0.808691406249991],[127.7611328125,-0.883691406249994],[127.62382812500002,-0.76601562499999],[127.46269531250002,-0.80595703124996],[127.46865234375,-0.64296875],[127.3,-0.500292968749946],[127.32509765625,-0.335839843750023],[127.45517578125012,-0.406347656249991],[127.56699218750006,-0.318945312499949]]],[[[127.24990234375005,-0.4953125],[127.11914062500003,-0.520507812499986],[127.12646484375003,-0.278613281250003],[127.29003906250003,-0.284375],[127.24990234375005,-0.4953125]]],[[[103.73652343750004,-0.347949218750003],[103.461328125,-0.357617187500011],[103.54892578125006,-0.227539062499986],[103.73652343750004,-0.347949218750003]]],[[[130.81328125000007,-0.004101562500026],[131.27685546875003,-0.149804687499952],[131.33974609375005,-0.290332031249989],[131.00537109374997,-0.360742187500037],[130.62216796875006,-0.0859375],[130.89921875000002,-0.344433593749997],[130.7501953125001,-0.44384765625],[130.6886718750001,-0.296582031250011],[130.55078124999997,-0.366406250000026],[130.23662109375002,-0.209667968749983],[130.3625,-0.072851562500006],[130.81328125000007,-0.004101562500026]]],[[[98.45927734375007,-0.530468749999969],[98.30966796875012,-0.531835937499977],[98.4271484375,-0.226464843750037],[98.3229492187501,-0.000781249999974],[98.54414062500004,-0.257617187499989],[98.45927734375007,-0.530468749999969]]],[[[104.77861328125007,-0.175976562499955],[105.00537109374997,-0.282812499999963],[104.44707031250002,-0.189160156249983],[104.54267578125004,0.01772460937498],[104.77861328125007,-0.175976562499955]]],[[[103.28447265625002,0.541943359375011],[103.13955078125,0.549072265625043],[103.18740234375,0.699755859375017],[103.28447265625002,0.541943359375011]]],[[[103.0275390625001,0.746630859374974],[102.4904296875001,0.856640625],[102.50664062500002,1.088769531250037],[103.00244140624997,0.859277343750009],[103.0275390625001,0.746630859374974]]],[[[103.42392578125012,1.048339843749972],[103.31542968750003,1.071289062500028],[103.37998046875006,1.133642578125034],[103.42392578125012,1.048339843749972]]],[[[103.16640625000005,0.870166015625003],[102.7018554687501,1.0537109375],[102.72558593749997,1.158837890625023],[102.99941406250005,1.067773437500023],[103.16640625000005,0.870166015625003]]],[[[104.02480468750005,1.180566406250009],[104.13984375000004,1.165576171874974],[104.06611328125004,0.989550781249989],[103.93222656250012,1.071386718749963],[104.02480468750005,1.180566406250009]]],[[[104.58535156250005,1.21611328124996],[104.66289062500002,1.04951171875004],[104.57519531250003,0.831933593750037],[104.43925781250002,1.050439453125051],[104.25195312499997,1.014892578125],[104.36181640624997,1.18149414062502],[104.58535156250005,1.21611328124996]]],[[[102.4271484375,0.990136718750023],[102.27958984375002,1.075683593750043],[102.25634765625003,1.397070312499963],[102.44287109374997,1.234228515625006],[102.4271484375,0.990136718750023]]],[[[97.48154296875006,1.465087890624972],[97.93193359375002,0.973925781250003],[97.82041015625012,0.564453124999986],[97.683984375,0.596093750000037],[97.60390625000005,0.83388671874998],[97.40537109375012,0.946972656250026],[97.07919921875006,1.425488281249983],[97.35595703124997,1.539746093749997],[97.48154296875006,1.465087890624972]]],[[[102.49189453125004,1.459179687500011],[102.49941406250005,1.330908203124991],[102.02402343750012,1.607958984375031],[102.49189453125004,1.459179687500011]]],[[[124.88886718750004,0.995312500000011],[124.42753906250002,0.470605468750051],[123.75380859375,0.305517578124991],[123.26542968750007,0.326611328125026],[122.996875,0.493505859375006],[121.01298828125002,0.441699218750017],[120.57900390625,0.5283203125],[120.19228515625,0.268505859374997],[120.01328125000012,-0.196191406249994],[120.062890625,-0.555566406250023],[120.240625,-0.868261718749949],[120.51757812499997,-1.039453125],[120.66738281250005,-1.370117187499972],[121.14853515625012,-1.33945312500002],[121.5755859375,-0.828515625000023],[121.96962890625005,-0.933300781249969],[122.27998046875004,-0.757031250000026],[122.88876953125006,-0.755175781250003],[122.8294921875,-0.658886718750026],[123.17148437500012,-0.57070312499999],[123.37968750000002,-0.648535156249949],[123.43417968750006,-0.778222656249994],[123.37792968749997,-1.004101562500011],[122.90283203125003,-0.900976562499963],[122.25068359375004,-1.555273437500034],[121.8585937500001,-1.69326171874998],[121.65097656250006,-1.895410156249952],[121.35546874999997,-1.878222656250003],[122.29169921875004,-2.907617187500023],[122.39902343750006,-3.200878906249997],[122.25292968749997,-3.620410156250017],[122.68964843750004,-4.084472656249972],[122.84794921875002,-4.064550781250006],[122.8722656250001,-4.391992187500009],[122.71972656250003,-4.340722656249952],[122.11425781250003,-4.540234375000011],[122.03808593749997,-4.832421875000023],[121.58867187500007,-4.759570312500017],[121.48652343750004,-4.581054687499972],[121.61806640625,-4.092675781249952],[120.89179687500004,-3.520605468750034],[121.05429687500012,-3.167089843749949],[121.0521484375,-2.751660156249955],[120.87939453124997,-2.64560546875002],[120.65361328125002,-2.667578124999977],[120.26103515625007,-2.949316406249991],[120.43662109375012,-3.70732421874996],[120.42011718750004,-4.617382812500011],[120.27929687499997,-5.146093749999977],[120.4303710937501,-5.591015625000026],[119.9515625,-5.577636718749972],[119.71728515625003,-5.693359375000014],[119.55742187500007,-5.611035156250026],[119.36035156249997,-5.314160156250026],[119.59404296875007,-4.523144531249997],[119.62363281250006,-4.034375],[119.46748046875004,-3.512988281249989],[118.99462890624997,-3.537597656250028],[118.86767578124997,-3.39804687500002],[118.78330078125006,-2.720800781249977],[119.09218750000005,-2.482910156250014],[119.32187500000012,-1.929687500000014],[119.308984375,-1.408203125],[119.508203125,-0.906738281249972],[119.71132812500005,-0.680761718750034],[119.84433593750006,-0.861914062499991],[119.721875,-0.088476562499991],[119.865625,0.040087890625003],[119.80927734375004,0.238671875000051],[119.9132812500001,0.445068359375],[120.26953125000003,0.970800781249991],[120.60253906249997,0.854394531249994],[120.86796875000007,1.25283203124998],[121.0817382812501,1.327636718750028],[121.40410156250002,1.243603515624969],[121.59179687499997,1.067968749999977],[122.43662109375006,1.018066406250028],[122.83828125,0.845703125],[123.06650390625006,0.941796875000037],[123.93076171875006,0.850439453124977],[124.53369140624997,1.230468750000043],[124.94707031250002,1.672167968749974],[125.11093750000012,1.685693359374966],[125.2337890625,1.502294921875006],[124.88886718750004,0.995312500000011]]],[[[101.70810546875006,2.078417968750045],[101.71943359375004,1.789160156250006],[101.50078125000002,1.733203124999974],[101.40966796875003,2.021679687500026],[101.70810546875006,2.078417968750045]]],[[[127.73271484375007,0.848144531250043],[127.8810546875001,0.832128906249977],[127.96728515624997,1.042578125000048],[128.16074218750006,1.1578125],[128.22246093750002,1.400634765624986],[128.68837890625,1.572558593750017],[128.70263671874997,1.106396484374997],[128.29882812500003,0.87680664062502],[128.26064453125,0.733789062500023],[128.61123046875,0.549951171875051],[128.89960937500004,0.216259765625011],[127.9831054687501,0.471875],[127.88740234375004,0.298339843750043],[127.97783203125002,-0.24833984374996],[128.4254882812501,-0.892675781249949],[128.04638671875003,-0.706054687499943],[127.69160156250004,-0.241894531249983],[127.70869140625004,0.288085937499986],[127.53710937500003,0.610888671875031],[127.60800781250006,0.848242187499977],[127.42851562500002,1.139990234374991],[127.63173828125,1.843701171875011],[128.03642578125002,2.199023437500017],[127.88681640625012,1.83295898437504],[128.0109375000001,1.701220703125031],[128.01171874999997,1.331738281249983],[127.65283203124997,1.013867187499969],[127.73271484375007,0.848144531250043]]],[[[97.3341796875001,2.075634765625011],[97.10830078125,2.216894531250006],[97.29140625,2.200830078125023],[97.3341796875001,2.075634765625011]]],[[[128.45390625000002,2.051757812500028],[128.29589843749997,2.034716796875017],[128.2179687500001,2.297460937499991],[128.60214843750012,2.59760742187504],[128.68847656250003,2.473681640625017],[128.62324218750004,2.224414062500031],[128.45390625000002,2.051757812500028]]],[[[96.46367187500002,2.360009765625037],[95.80859374999997,2.655615234375034],[95.7171875,2.825976562500017],[95.89580078125007,2.8890625],[96.41728515625007,2.515185546875031],[96.46367187500002,2.360009765625037]]],[[[108.8875,2.905419921875037],[108.7865234375,2.885644531250009],[108.88574218750003,2.998974609374997],[108.8875,2.905419921875037]]],[[[105.76035156250006,2.863037109375014],[105.69218750000002,3.0625],[105.83671875000007,2.97651367187504],[105.76035156250006,2.863037109375014]]],[[[106.28525390625006,3.15712890624998],[106.28369140624997,3.088232421874977],[106.20097656250002,3.204882812500031],[106.28525390625006,3.15712890624998]]],[[[117.65839843750004,3.280517578124986],[117.54785156250003,3.43198242187502],[117.68085937500004,3.407519531250017],[117.65839843750004,3.280517578124986]]],[[[125.65810546875,3.436035156250043],[125.51152343750007,3.461132812500011],[125.46884765625006,3.73325195312502],[125.65810546875,3.436035156250043]]],[[[117.88476562499997,4.186132812500006],[117.92285156250003,4.054296874999977],[117.73681640624997,4.004003906250034],[117.64902343750012,4.168994140624974],[117.88476562499997,4.186132812500006]]],[[[108.31601562500006,3.689648437500026],[108.10039062500002,3.70454101562504],[108.24326171875006,3.810351562500017],[108.00234375,3.982861328124983],[108.24833984375002,4.21713867187502],[108.39287109375007,3.986181640625034],[108.31601562500006,3.689648437500026]]],[[[117.5744140625001,4.17060546875004],[117.46533203124997,4.076074218749966],[117.77724609375005,3.689257812500031],[117.05595703125007,3.622656249999963],[117.34628906250006,3.426611328124991],[117.35244140625,3.19375],[117.61064453125002,3.064355468749994],[117.56914062500002,2.92929687500002],[117.69765625,2.887304687499991],[117.6388671875001,2.825292968749963],[118.0666015625001,2.317822265624969],[117.7892578125001,2.026855468750014],[118.98496093750006,0.982128906249983],[118.53476562500006,0.813525390625017],[118.19609375000002,0.874365234374977],[117.91162109374997,1.098681640625017],[117.96425781250005,0.889550781250051],[117.74511718749997,0.72963867187498],[117.52216796875004,0.235888671875017],[117.46289062500003,-0.323730468749957],[117.5625,-0.770898437500009],[116.91396484375,-1.223632812499972],[116.73984375000006,-1.044238281250017],[116.75341796874997,-1.327343749999955],[116.27548828125006,-1.784863281249997],[116.42431640625003,-1.784863281249997],[116.45195312500002,-1.923144531250017],[116.31396484374997,-2.139843750000011],[116.56542968749997,-2.299707031249994],[116.52929687499997,-2.51054687499996],[116.31679687500005,-2.55185546875002],[116.33066406250012,-2.902148437499974],[116.16630859375002,-2.934570312500014],[116.2572265625,-3.126367187500009],[115.95615234375012,-3.595019531250003],[114.6935546875001,-4.169726562500017],[114.5255859375001,-3.376660156250011],[114.44599609375004,-3.481835937500037],[114.34433593750012,-3.444433593749963],[114.34433593750012,-3.23515625],[114.23632812500003,-3.36113281249996],[114.0822265625001,-3.27890625],[113.70507812499997,-3.45527343750004],[113.6100585937501,-3.195703125],[113.34316406250005,-3.246484374999966],[113.03398437500002,-2.933496093749966],[112.97148437500002,-3.187109375000034],[112.75800781250004,-3.322167968750009],[112.60029296875004,-3.400488281249977],[112.28496093750002,-3.32099609375004],[111.85810546875004,-3.551855468750006],[111.82304687500007,-3.057226562499949],[111.69472656250005,-2.88945312499996],[110.93007812500005,-3.071093750000017],[110.82968750000012,-2.9951171875],[110.89931640625,-2.908593749999952],[110.703125,-3.020898437500009],[110.57402343750007,-2.89140625],[110.25605468750004,-2.966113281249946],[110.09658203125,-2.001367187499966],[109.95986328125,-1.862792968749972],[109.98330078125,-1.274804687499994],[109.78740234375007,-1.011328124999963],[109.25878906250003,-0.807421874999989],[109.37275390625004,-0.638183593749972],[109.12109375000003,-0.39091796874996],[109.2575195312501,0.031152343750051],[108.94453125000004,0.355664062499997],[108.91679687500007,0.912646484375045],[108.95859375000006,1.134619140624963],[109.1315429687501,1.253857421875011],[109.01025390624997,1.239648437500051],[109.07587890625004,1.495898437500031],[109.37851562500006,1.922705078125034],[109.62890625000003,2.027539062499983],[109.53896484375,1.89619140625004],[109.65400390625004,1.614892578125023],[110.50576171875005,0.861962890625023],[111.10136718750002,1.050537109374986],[111.80898437500005,1.011669921874969],[112.078515625,1.143359374999974],[112.1857421875001,1.4390625],[112.47617187500006,1.559082031250028],[112.94296875000006,1.566992187500034],[113.00654296875004,1.433886718750003],[113.6222656250001,1.2359375],[113.90234375000003,1.434277343749997],[114.5125,1.452001953124963],[114.83056640625003,1.980029296874989],[114.78642578125002,2.250488281250014],[115.1791015625,2.523193359374972],[115.08076171875004,2.63422851562504],[115.117578125,2.89487304687502],[115.24697265625005,3.025927734374989],[115.45439453125002,3.034326171875009],[115.67880859375006,4.193017578124994],[115.86074218750005,4.348046875000037],[116.51474609375006,4.370800781249969],[117.10058593750003,4.337060546875023],[117.5744140625001,4.17060546875004]]],[[[126.81660156250004,4.033496093750003],[126.70449218750005,4.070996093749997],[126.81357421875006,4.258496093750011],[126.72207031250005,4.344189453124969],[126.75732421874997,4.547900390624989],[126.9210937500001,4.291015624999972],[126.81660156250004,4.033496093750003]]],[[[96.49257812500005,5.229345703124991],[97.54716796875002,5.205859375],[98.2484375,4.41455078125],[98.3073242187501,4.09287109375002],[99.73232421875005,3.183056640625026],[100.523828125,2.18916015625004],[100.88789062500004,1.948242187499986],[100.82822265625012,2.242578125],[101.04619140625002,2.257470703125023],[101.47666015625006,1.693066406250054],[102.019921875,1.442138671875],[102.38994140625007,0.84199218750004],[103.03183593750006,0.57890625],[103.0075195312501,0.415332031249974],[102.55,0.216455078124966],[103.33896484375012,0.513720703125045],[103.67265625000007,0.288916015624977],[103.78671875000012,0.046972656249991],[103.42851562500007,-0.19179687499998],[103.40517578125005,-0.36220703124998],[103.5091796875,-0.465527343749969],[103.43857421875006,-0.575585937500009],[103.72109375,-0.886718749999986],[104.36054687500004,-1.038378906249974],[104.51591796875002,-1.81943359375002],[104.84521484375003,-2.092968749999969],[104.65078125000005,-2.595214843749972],[104.97080078125012,-2.370898437500017],[105.39697265624997,-2.380175781249946],[106.0443359375,-3.10625],[105.84375,-3.61367187499998],[105.93046875000007,-3.833007812499986],[105.83144531250005,-4.16289062499996],[105.88720703124997,-5.009570312499974],[105.74833984375007,-5.818261718749966],[105.34941406250007,-5.549511718750011],[105.08134765625002,-5.74550781249998],[104.63955078125005,-5.520410156250037],[104.68398437500005,-5.89267578125002],[104.60156249999997,-5.90458984374996],[103.8314453125,-5.079589843750028],[102.53769531250006,-4.152148437499989],[102.12753906250006,-3.599218749999963],[101.57861328124997,-3.166992187500014],[100.88955078125,-2.248535156249957],[100.85527343750002,-1.934179687499949],[100.30820312500006,-0.82666015625],[99.66982421875005,0.045068359375037],[99.15917968749997,0.351757812499997],[98.59531250000006,1.864599609375006],[97.70078125000006,2.358544921875009],[97.59082031249997,2.846582031250037],[97.3913085937501,2.975292968749969],[96.9689453125001,3.575146484374969],[96.44472656250005,3.81630859374998],[95.57861328125003,4.661962890625048],[95.20664062500006,5.284033203125034],[95.22783203125002,5.564794921875034],[95.62890625000003,5.609082031249997],[96.13330078125003,5.294287109374991],[96.49257812500005,5.229345703124991]]]]},"properties":{"name":"Indonesia","childNum":107}},{"geometry":{"type":"Polygon","coordinates":[[[-4.412060546874983,54.185351562499996],[-4.785351562499983,54.073046875],[-4.424707031249994,54.407177734375],[-4.412060546874983,54.185351562499996]]]},"properties":{"name":"Isle of Man","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[75.32221348233018,32.28516356678968],[75.62496871116024,32.28516356678968],[75.73585997688717,32.78417426256088],[76.32728006076415,32.87658365066666],[76.62299010270264,33.32014871357439],[77.06655516561037,33.301666835953235],[77.71342088235082,32.6917648744551],[78.10154031239509,32.87658365066666],[78.49194250885338,32.53122786149202],[78.38964843749997,32.51987304687498],[78.41748046874997,32.466699218749994],[78.4552734375001,32.30034179687502],[78.49589843750002,32.21577148437504],[78.72558593750009,31.983789062500023],[78.71972656250009,31.887646484374983],[78.69345703125006,31.740380859374994],[78.7550781250001,31.55029296875],[78.74355468750005,31.323779296875017],[79.10712890625004,31.402636718750102],[79.38847656250013,31.064208984375085],[79.66425781250004,30.96523437499999],[79.92451171875004,30.888769531250034],[80.20712890625006,30.683740234375023],[80.19121093750002,30.56840820312496],[80.87353515625003,30.290576171875045],[80.98544921875006,30.23710937499999],[81.01025390625014,30.164501953125097],[80.96611328125002,30.180029296875063],[80.90761718750005,30.171923828125017],[80.84814453125009,30.139746093750034],[80.81992187500012,30.119335937499955],[80.68408203125014,29.994335937500068],[80.54902343750015,29.899804687499994],[80.40185546875003,29.730273437500102],[80.31689453125014,29.572070312500017],[80.25488281250009,29.423339843750114],[80.25595703125006,29.318017578125136],[80.23300781250006,29.194628906250045],[80.16953125000012,29.124316406250102],[80.13046875000006,29.100390625000045],[80.08457031249995,28.994189453125074],[80.05166015625,28.870312500000068],[80.07070312500005,28.830175781250063],[80.22656250000003,28.723339843750125],[80.32480468750012,28.66640625000008],[80.41855468749995,28.61201171875001],[80.47910156250012,28.604882812499994],[80.49580078125015,28.635791015625074],[80.51787109375002,28.665185546875023],[80.58701171875006,28.64960937500004],[81.16894531250014,28.335009765625074],[81.85263671875018,27.867089843750136],[81.89687500000011,27.87446289062504],[81.94521484375005,27.89926757812495],[81.98769531250016,27.91376953125004],[82.03701171875,27.90058593750004],[82.11191406250006,27.86494140625004],[82.28769531250018,27.756542968749983],[82.45136718750004,27.671826171874955],[82.62988281249997,27.687060546875045],[82.67734375000006,27.67343749999995],[82.71083984375005,27.596679687500114],[82.73339843750003,27.518994140625097],[83.28974609375004,27.370996093750136],[83.36943359375002,27.410253906249977],[83.38398437500004,27.444824218750085],[83.44716796875011,27.46533203125],[83.55166015625011,27.456347656249932],[83.74697265625011,27.395947265625068],[83.8288085937501,27.377832031250108],[84.09101562499993,27.491357421875136],[84.22978515625007,27.427832031250006],[84.48085937500005,27.348193359375102],[84.61015625000002,27.298681640624977],[84.64072265625012,27.249853515624977],[84.65478515625014,27.20366210937499],[84.65380859375009,27.09169921875008],[84.68535156250013,27.041015625000057],[85.19179687500011,26.766552734375097],[85.29296875000009,26.741015625000045],[85.56845703125012,26.839843750000114],[85.64843749999997,26.829003906250023],[85.69990234375004,26.781640624999966],[85.73730468750003,26.639746093750034],[85.79453125000006,26.60415039062505],[86.00732421875009,26.64936523437504],[86.70136718750015,26.435058593750057],[87.01640625000002,26.555419921875085],[87.2874023437499,26.360302734375125],[87.41357421875014,26.42294921875009],[87.84921875000006,26.43691406250008],[87.99511718750014,26.38237304687499],[88.02695312500023,26.395019531250085],[88.05488281250004,26.43002929687492],[88.11152343750004,26.58642578125],[88.1615234375,26.724804687500125],[88.15722656250009,26.807324218750068],[88.1110351562501,26.928466796875057],[87.99316406250009,27.086083984374994],[87.984375,27.133935546874994],[88.14697265625014,27.749218750000097],[88.15029296875011,27.843310546875074],[88.10976562500005,27.87060546874997],[88.10898437499995,27.93300781250005],[88.14111328125003,27.948925781250097],[88.27519531250013,27.96884765625009],[88.42597656250015,28.011669921875097],[88.57792968750002,28.093359375000034],[88.80371093750003,28.006933593750034],[88.74902343749997,27.521875000000136],[88.7648437500001,27.429882812500068],[88.83251953125003,27.362841796875074],[88.89140625000002,27.316064453125136],[88.88164062500007,27.29746093750009],[88.76035156250006,27.21811523437509],[88.73876953125009,27.175585937499932],[88.85761718750015,26.961474609375017],[89.14824218750002,26.816162109375085],[89.33212890625018,26.848632812500114],[89.58613281250004,26.778955078125136],[89.60996093750012,26.719433593750097],[89.71093750000009,26.713916015625045],[89.76386718750004,26.7015625],[89.94316406250013,26.723925781249932],[90.12294921875011,26.754589843749983],[90.20605468749997,26.847509765625063],[90.34589843750004,26.890332031250097],[90.73964843750005,26.771679687500068],[91.2865234375,26.78994140625008],[91.42675781249997,26.867089843749966],[91.45585937500013,26.866894531250125],[91.51757812500009,26.807324218750068],[91.67158203124993,26.80200195312503],[91.84208984375013,26.852978515625125],[91.94375,26.860839843750114],[91.99833984375013,26.85498046875],[92.04970703125016,26.87485351562495],[92.73155507489682,26.833697862861648],[93.30975376159499,26.784950522650554],[93.61047043679247,27.32239435188504],[94.06979001484449,27.589407158584788],[95.10800937321915,27.749636881153737],[95.74000740838363,28.116850432722256],[96.19577594042592,28.04291597700983],[96.96279296875,27.698291015625017],[96.88359375000013,27.514843750000125],[96.90195312500012,27.43959960937508],[97.10371093749993,27.163330078125114],[97.10205078125003,27.115429687500125],[96.95341796875013,27.13330078125003],[96.79785156249997,27.29619140624999],[96.19082031250005,27.26127929687499],[95.20146484375007,26.641406250000017],[95.05976562500015,26.473974609375006],[95.06894531250006,26.191113281250097],[95.10839843750014,26.091406250000034],[95.12929687500011,26.070410156250034],[95.13242187500006,26.041259765624943],[94.99199218750002,25.77045898437504],[94.66777343750007,25.458886718749966],[94.55302734375013,25.215722656249994],[94.70371093750012,25.097851562499955],[94.49316406250003,24.637646484374983],[94.37724609375002,24.473730468750006],[94.29306640625012,24.321875],[94.07480468750006,23.8720703125],[93.68339843750007,24.00654296875004],[93.45214843750003,23.987402343750034],[93.32626953125006,24.064208984375057],[93.36601562500007,23.132519531249955],[93.34941406250007,23.08496093750003],[93.20390625000002,23.03701171875005],[93.07871093750018,22.718212890625097],[93.16201171875,22.360205078125006],[93.07060546875002,22.20942382812501],[92.96455078125015,22.003759765625034],[92.90947265625013,21.988916015625023],[92.85429687500002,22.010156250000108],[92.77138671875,22.104785156250017],[92.68896484375009,22.130957031250006],[92.63037109375014,22.011328124999977],[92.57490234374993,21.97807617187496],[92.5612304687501,22.04804687500001],[92.49140625000004,22.685400390625006],[92.46445312500006,22.734423828125045],[92.36162109375002,22.929003906250074],[92.33378906250002,23.242382812499955],[92.24609375000003,23.68359374999997],[92.04404296875006,23.677783203125017],[91.97851562500003,23.691992187500063],[91.92958984375011,23.685986328125097],[91.92949218750019,23.598242187499977],[91.93789062500011,23.504687500000102],[91.75419921875013,23.28730468750004],[91.75097656250003,23.053515625000017],[91.55351562500013,22.991552734375006],[91.43623046875004,23.19990234375001],[91.359375,23.06835937500003],[91.16044921875019,23.660644531250085],[91.35019531250012,24.06049804687501],[91.72656250000003,24.20507812499997],[91.84619140624997,24.175292968749943],[92.06416015625004,24.374365234375006],[92.11748046875002,24.493945312500017],[92.22666015625012,24.77099609374997],[92.22832031250002,24.881347656250085],[92.2512695312499,24.895068359375045],[92.38496093750004,24.848779296875023],[92.46835937500018,24.944140625000074],[92.04970703125016,25.16948242187499],[90.61308593750002,25.16772460937497],[90.11962890625003,25.21997070312497],[89.86630859375012,25.293164062499955],[89.81406250000006,25.305371093749955],[89.80087890625012,25.33613281250001],[89.82490234375004,25.56015625],[89.82294921875015,25.94140625000003],[89.67089843750009,26.213818359375125],[89.57275390625003,26.13232421875003],[89.54990234375006,26.00527343750008],[89.28925781250015,26.037597656250085],[89.01865234375012,26.410253906249977],[88.95195312500002,26.412109375],[88.97041015625004,26.250878906250023],[88.94072265625002,26.24536132812497],[88.68281250000004,26.291699218749983],[88.51826171875004,26.51777343750004],[88.36992187500002,26.56411132812508],[88.35146484375005,26.482568359374966],[88.38623046875003,26.471533203125034],[88.44042968749997,26.369482421875034],[88.33398437499997,26.257519531249955],[88.15078125000005,26.087158203125057],[88.1066406250001,25.841113281250045],[88.14746093749997,25.811425781250023],[88.50244140625009,25.53701171875008],[88.76914062500006,25.490478515625],[88.85478515625002,25.333544921875017],[88.94414062500002,25.290771484375],[88.92978515625012,25.222998046875063],[88.57382812500006,25.18789062499999],[88.45625,25.188427734375125],[88.37294921875016,24.961523437500063],[88.31337890625011,24.8818359375],[88.27949218750015,24.881933593750034],[88.18886718750016,24.920605468750097],[88.14980468750011,24.91464843749995],[88.04511718750015,24.71303710937508],[88.03027343750009,24.664453125000136],[88.02343750000003,24.627832031250136],[88.07910156250009,24.549902343750063],[88.14550781250003,24.485791015624955],[88.225,24.460644531249983],[88.3375,24.45385742187503],[88.49853515625003,24.34663085937504],[88.64228515625015,24.325976562500102],[88.72353515625011,24.27490234375],[88.7335937500001,24.230908203125097],[88.72656250000009,24.18623046875004],[88.71376953125016,24.069628906250102],[88.69980468750006,24.00253906249992],[88.56738281250009,23.674414062500034],[88.63574218749997,23.55],[88.69765625,23.493017578125034],[88.72441406250002,23.254980468750034],[88.89707031250018,23.21040039062501],[88.92812500000011,23.186621093749977],[88.89970703125002,22.843505859375057],[88.92070312500002,22.632031249999955],[89.05,22.274609374999983],[89.02792968750023,21.937207031249983],[88.94931640625018,21.937939453125125],[89.05166015625,21.654101562500045],[88.85751953125012,21.744677734375017],[88.74501953125011,21.584375],[88.74023437500003,22.005419921875017],[88.64160156250003,22.121972656250136],[88.58466796875015,21.659716796874932],[88.44599609375004,21.614257812500085],[88.28750000000016,21.758203125000108],[88.25371093750002,21.622314453124943],[88.0568359375001,21.694140625000017],[88.19628906249997,22.139550781249994],[87.94140625000003,22.374316406250045],[88.15927734375018,22.12172851562508],[87.82373046875003,21.727343750000045],[87.20068359375009,21.544873046874983],[86.95410156250014,21.365332031250006],[86.84228515625009,21.106347656249994],[86.97548828125005,20.70014648437501],[86.75039062500011,20.313232421875057],[86.37656250000006,20.006738281249966],[86.24521484375012,20.05302734374999],[86.27949218750021,19.919433593749943],[85.575,19.69291992187499],[85.496875,19.696923828125108],[85.50410156250004,19.887695312500057],[85.24863281250006,19.757666015625034],[85.18076171875018,19.59487304687508],[85.44160156249993,19.626562499999977],[84.77099609375009,19.125390625000023],[84.10410156250018,18.29267578125001],[82.35957031250004,17.09619140624997],[82.25878906250014,16.55986328124996],[81.76191406250015,16.32949218750008],[81.28613281249997,16.337060546875023],[80.97871093750004,15.758349609375074],[80.64658203125006,15.895019531250028],[80.29345703125014,15.710742187499989],[80.0534179687501,15.074023437499932],[80.17871093750003,14.478320312500074],[80.11171875000005,14.212207031250045],[80.30654296875016,13.485058593750054],[80.15625,13.713769531250108],[80.06210937500006,13.60625],[80.34238281250006,13.361328125000071],[80.22910156250018,12.690332031249966],[79.85849609375018,11.988769531250043],[79.69316406250007,11.312548828124946],[79.79902343750004,11.338671874999932],[79.84863281250009,11.196875],[79.83818359375002,10.322558593750045],[79.31455078125018,10.256689453124949],[78.93994140625009,9.565771484375063],[79.01992187500005,9.333349609374963],[79.41142578125002,9.192382812500014],[78.97958984375018,9.268554687500085],[78.42148437500006,9.105029296874989],[78.19248046874995,8.890869140625057],[78.06015625000006,8.384570312499932],[77.51757812500003,8.078320312500068],[77.06591796875003,8.315917968749986],[76.5534179687501,8.902783203124997],[76.32460937500016,9.452099609374997],[76.24238281250004,9.927099609374949],[76.37558593750006,9.539892578124935],[76.45878906250013,9.536230468750077],[76.34648437500002,9.922119140625],[76.19560546875002,10.086132812500026],[75.72382812500015,11.361767578125026],[74.94550781250004,12.56455078124992],[74.38222656250005,14.494726562500048],[73.94921875000014,15.074755859375088],[73.80078125000009,15.39697265625],[73.93193359375013,15.39697265625],[73.77177734375013,15.573046874999989],[73.83281250000013,15.659375],[73.67988281250015,15.708886718750136],[73.47607421875003,16.05424804687496],[72.87548828124997,18.642822265625114],[72.97207031250011,19.15332031250003],[72.8346679687501,18.975585937500057],[72.80302734375013,19.07929687500004],[72.81162109375,19.298925781250006],[72.98720703125,19.27744140625009],[72.78789062500013,19.362988281250097],[72.66777343750019,19.83095703125005],[72.89375,20.672753906250136],[72.81386718750011,21.117187500000085],[72.62382812500002,21.371972656250108],[72.73476562500016,21.470800781250006],[72.61328125000009,21.461816406250108],[73.1125,21.750439453125125],[72.54306640625,21.69658203124999],[72.70019531250003,21.971923828124943],[72.52226562500013,21.976220703125108],[72.55302734375007,22.159960937500074],[72.80917968749995,22.23330078125008],[72.18281250000015,22.26972656250004],[72.30644531250002,22.18920898437497],[72.27441406250009,22.089746093749966],[72.03720703125006,21.82304687499999],[72.2103515625,21.72822265625004],[72.25400390625006,21.531005859375],[72.01523437500012,21.155712890625097],[71.0246093750001,20.73886718750009],[70.71933593750006,20.740429687500068],[70.12734375,21.094677734375097],[68.96992187500021,22.29028320312497],[69.05166015625016,22.437304687500074],[69.27656250000004,22.285498046875063],[70.17724609375014,22.57275390624997],[70.48925781250009,23.08950195312508],[70.33945312500012,22.939746093749932],[69.66464843750006,22.759082031250074],[69.23593749999995,22.848535156250023],[68.64072265625006,23.189941406250114],[68.41748046875009,23.57148437500004],[68.7767578125,23.852099609375017],[68.23496093749995,23.596972656250074],[68.16503906250009,23.857324218749994],[68.28251953125013,23.927978515625],[68.38125000000016,23.950878906250068],[68.48867187500011,23.96723632812501],[68.5866210937501,23.966601562500074],[68.72412109375003,23.964697265625034],[68.72812500000012,24.265625],[68.73964843750016,24.291992187500085],[68.75898437499993,24.307226562500006],[68.78115234375011,24.313720703125085],[68.8,24.30908203125003],[68.82832031250004,24.26401367187509],[68.86347656250015,24.26650390625005],[68.90078125000011,24.29243164062501],[68.98457031250015,24.273095703124966],[69.05156250000013,24.28632812500001],[69.11953125000011,24.26865234374995],[69.23505859374993,24.268261718750068],[69.44345703124995,24.275390625000085],[69.55917968750006,24.273095703124966],[69.80517578125009,24.16523437500004],[70.0982421875,24.2875],[70.28906250000009,24.356298828125063],[70.54677734375,24.418310546875063],[70.56503906250006,24.385791015625017],[70.55585937500015,24.331103515625074],[70.57929687500015,24.279052734374943],[70.65947265625013,24.24609374999997],[70.71630859375009,24.237988281250097],[70.7672851562501,24.245410156250017],[70.80507812500011,24.26196289062503],[70.88623046875014,24.34375],[70.92812500000016,24.362353515625045],[70.98281250000011,24.361035156250125],[71.04404296875006,24.400097656250097],[71.04531250000005,24.42998046874996],[70.96982421875012,24.571875],[70.97636718750013,24.61875],[71.00234375000016,24.6539062499999],[71.04785156250003,24.687744140625085],[71.02070312500021,24.75766601562492],[70.95087890625015,24.89160156250003],[70.87773437500019,25.06298828124997],[70.65205078125004,25.422900390625102],[70.64843750000003,25.666943359375068],[70.5695312500001,25.705957031250023],[70.50585937500009,25.685302734375085],[70.44853515625013,25.681347656249983],[70.26464843750009,25.70654296874997],[70.10019531250006,25.91005859375005],[70.14921875000002,26.347558593749994],[70.11464843750016,26.548046874999983],[69.47001953125002,26.804443359375],[69.56796875,27.174609375000102],[69.89628906250007,27.473632812500085],[70.04980468750009,27.694726562500023],[70.14453125000003,27.849023437499994],[70.19394531250006,27.89487304687492],[70.24433593750004,27.934130859375102],[70.4037109375,28.025048828124994],[70.48857421875013,28.023144531250125],[70.62910156250015,27.937451171875068],[70.6916015625001,27.76899414062504],[70.79794921875012,27.709619140625023],[70.87490234375016,27.71445312499995],[71.18476562500004,27.831640625],[71.54296875000003,27.869873046875],[71.8703125000001,27.9625],[71.88886718750004,28.04746093749992],[71.94804687500002,28.177294921875102],[72.12851562500012,28.34633789062508],[72.29199218750003,28.69726562499997],[72.34189453125006,28.751904296875097],[72.90332031250003,29.02875976562501],[73.38164062500013,29.934375],[73.8091796875,30.093359375],[73.88652343750013,30.162011718750136],[73.93339843750002,30.222070312500108],[73.92460937500007,30.28164062499999],[73.88271484375,30.352148437499977],[73.89931640625,30.435351562500045],[74.00898437500004,30.519677734374994],[74.33935546875003,30.893554687499943],[74.38037109375003,30.89340820312509],[74.50976562500009,30.959667968750097],[74.63281250000014,31.034667968750114],[74.62578125000002,31.068750000000108],[74.61035156250009,31.112841796875045],[74.51767578125012,31.185595703124932],[74.53496093750007,31.261376953125108],[74.59394531249993,31.465380859375102],[74.58183593750013,31.523925781250114],[74.50996093750015,31.712939453125074],[74.52597656249995,31.765136718750057],[74.55556640625011,31.818554687500097],[74.63574218750003,31.889746093750034],[74.73945312500015,31.948828125],[75.07148437500015,32.08935546875003],[75.13876953125,32.10478515624999],[75.25410156250004,32.140332031250125],[75.33349609374997,32.279199218749994],[75.32221348233018,32.28516356678968]]]]},"properties":{"name":"India","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[72.49199218750002,-7.37744140625],[72.42910156250002,-7.435351562500003],[72.34970703125,-7.263378906250011],[72.447265625,-7.395703125000011],[72.44560546875002,-7.220410156250011],[72.49199218750002,-7.37744140625]]]},"properties":{"name":"Br. Indian Ocean Ter.","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-9.948193359374926,53.91313476562499],[-10.265722656249949,53.977685546874994],[-9.99638671874996,54.00361328125004],[-9.948193359374926,53.91313476562499]]],[[[-6.218017578125,54.08872070312506],[-6.347607421874926,53.94130859375005],[-6.027392578124989,52.927099609375006],[-6.463183593749932,52.345361328124994],[-6.325,52.246679687500034],[-6.890234375,52.15922851562499],[-6.965771484374926,52.24951171875],[-8.057812499999926,51.82558593750005],[-8.4091796875,51.888769531250034],[-8.349121093749943,51.73930664062496],[-8.813427734374926,51.584912109374955],[-9.737304687499943,51.473730468750034],[-9.524902343750028,51.68110351562501],[-10.120751953124994,51.60068359375006],[-9.598828124999983,51.87441406250005],[-10.341064453124943,51.798925781250034],[-9.909667968749972,52.122949218749966],[-10.39023437499992,52.134912109374994],[-10.356689453125,52.20693359375002],[-9.772119140624937,52.250097656250034],[-9.90605468749996,52.403710937499966],[-9.632226562499937,52.54692382812502],[-8.783447265624943,52.679638671874955],[-8.990283203124989,52.755419921875045],[-9.175390624999949,52.634912109374994],[-9.916601562499977,52.56972656250005],[-9.46489257812496,52.82319335937498],[-9.299218749999966,53.09755859375002],[-8.930126953124983,53.207080078125045],[-9.51420898437496,53.23823242187498],[-10.091259765624926,53.41284179687503],[-10.116992187499932,53.548535156249955],[-9.720654296874926,53.6044921875],[-9.901611328124943,53.72719726562502],[-9.578222656249949,53.80541992187497],[-9.578857421875,53.879833984374955],[-9.9140625,53.863720703124955],[-9.856445312499972,54.095361328124994],[-10.092675781249966,54.15576171875003],[-10.056396484374943,54.25781250000006],[-8.545556640624994,54.24121093750003],[-8.623144531249977,54.346875],[-8.133447265624966,54.64082031250001],[-8.763916015624972,54.68120117187496],[-8.377294921874977,54.88945312500002],[-8.274609374999955,55.146289062500045],[-7.667089843749977,55.25649414062502],[-7.65874023437496,54.97094726562503],[-7.308789062500011,55.365820312500006],[-6.961669921874972,55.23789062500006],[-7.218652343749937,55.09199218749998],[-7.55039062499992,54.767968749999966],[-7.910595703124955,54.698339843750006],[-7.75439453125,54.59492187499998],[-8.118261718749977,54.41425781250004],[-7.606542968750006,54.14384765625002],[-7.324511718750017,54.13344726562502],[-7.007714843749937,54.40668945312501],[-6.649804687499937,54.05864257812496],[-6.218017578125,54.08872070312506]]]]},"properties":{"name":"Ireland","childNum":2}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[56.18798828125003,26.92114257812497],[55.95429687500004,26.70112304687501],[55.31152343749997,26.592626953125006],[55.76259765625005,26.81196289062504],[55.75761718750002,26.94765625000005],[56.279394531250006,26.952099609374983],[56.18798828125003,26.92114257812497]]],[[[46.1144531250001,38.877783203125034],[46.490625,38.90668945312498],[47.995898437500074,39.683935546875034],[48.322167968749994,39.39907226562502],[48.10439453125005,39.241113281249994],[48.292089843750006,39.01884765624999],[47.99648437499999,38.85375976562503],[48.59267578125005,38.41108398437498],[48.86875,38.43549804687498],[48.95996093750003,37.89013671875],[49.171191406250074,37.60058593749997],[50.13046875,37.407128906249994],[50.53320312499997,37.01367187500006],[51.11855468750005,36.742578124999966],[52.19013671875004,36.62172851562505],[53.76767578125006,36.93032226562502],[53.91542968750005,36.93032226562502],[53.67949218750002,36.853125],[53.970117187499994,36.818310546874955],[53.91416015625006,37.34355468750002],[54.6994140625001,37.47016601562498],[54.90009765625004,37.77792968750006],[55.38085937500003,38.051123046875034],[56.272070312500006,38.080419921875034],[56.440625,38.249414062499994],[57.1935546875001,38.216406250000034],[57.35371093750004,37.97333984374998],[58.261621093749994,37.665820312500045],[58.81542968750003,37.683496093749994],[59.30175781249997,37.51064453125005],[59.454980468749994,37.25283203125002],[60.06279296875002,36.962890625],[60.34130859375003,36.63764648437501],[61.11962890625003,36.64257812500003],[61.212011718750006,36.190527343750034],[61.15292968750006,35.97675781250001],[61.25214843750004,35.86762695312498],[61.26201171875002,35.61958007812498],[61.28183593750006,35.55341796875001],[61.2785156250001,35.513769531250006],[61.245507812499994,35.47407226562501],[61.18925781250002,35.31201171875003],[61.1,35.272314453125034],[61.08007812499997,34.85561523437505],[60.95117187499997,34.65385742187499],[60.91474609375004,34.63398437500001],[60.80234375000006,34.55463867187501],[60.73945312500004,34.544726562500045],[60.7262695312501,34.51826171874998],[60.736132812500074,34.491796875],[60.76259765625005,34.475244140624994],[60.88945312500002,34.31943359375006],[60.642675781250006,34.30717773437496],[60.48574218750005,34.09477539062502],[60.4859375,33.7119140625],[60.57382812500006,33.58833007812498],[60.91699218749997,33.505224609375006],[60.56054687499997,33.13784179687502],[60.5765625,32.99487304687503],[60.71044921874997,32.6],[60.82929687500004,32.24941406250005],[60.82724609375006,32.16796874999997],[60.789941406249994,31.98710937499999],[60.7875,31.87719726562497],[60.791601562500006,31.660595703124983],[60.82070312499999,31.495166015625045],[60.854101562500006,31.483251953125006],[61.110742187499994,31.45112304687504],[61.346484375000074,31.42163085937497],[61.66015625000003,31.382421874999977],[61.7550781250001,31.285302734374994],[61.814257812500074,31.072558593750017],[61.810839843750074,30.913281249999983],[61.78417968749997,30.831933593750023],[61.55947265625005,30.59936523437497],[61.33164062500006,30.36372070312501],[60.84335937500006,29.85869140624999],[61.03417968750003,29.663427734374977],[61.15214843750002,29.542724609375],[61.8898437500001,28.546533203124994],[62.7625,28.202050781249994],[62.782324218750006,27.800537109375],[62.75273437500002,27.265625],[63.16679687500002,27.25249023437499],[63.19609375000002,27.243945312500017],[63.25625,27.20791015625005],[63.30156250000002,27.151464843750006],[63.30517578124997,27.124560546875017],[63.242089843749994,27.07768554687499],[63.25039062499999,26.879248046875063],[63.24160156250005,26.86474609375003],[63.18613281250006,26.83759765625001],[63.168066406250006,26.66557617187496],[62.31230468750002,26.490869140624994],[62.23935546875006,26.357031249999977],[62.12597656249997,26.368994140625034],[61.842382812500006,26.225927734375006],[61.809960937499994,26.165283203125],[61.78076171874997,25.99584960937503],[61.75439453125003,25.843359375000063],[61.737695312499994,25.821093750000045],[61.66865234375004,25.76899414062501],[61.6618164062501,25.751269531250017],[61.67138671874997,25.69238281250003],[61.64013671875003,25.584619140624994],[61.61542968750004,25.28613281250003],[61.58789062499997,25.20234375000001],[61.533105468749994,25.195507812499955],[61.41220703125006,25.102099609375017],[60.66386718750002,25.28222656250003],[60.51054687500002,25.437060546875045],[60.40019531250002,25.311572265625074],[59.45605468749997,25.481494140625045],[59.0460937500001,25.417285156250017],[58.79785156249997,25.554589843750023],[57.334570312500006,25.791552734375074],[57.03603515625005,26.80068359375005],[56.728125,27.127685546875057],[56.118066406249994,27.14311523437499],[54.75927734375003,26.50507812500004],[54.24707031250003,26.696630859374977],[53.70576171875004,26.72558593750003],[52.69160156250004,27.323388671875023],[52.475878906250074,27.61650390624999],[52.03076171874997,27.824414062499955],[51.58906250000004,27.864208984374983],[51.27890625,28.13134765624997],[51.06201171874997,28.72612304687499],[50.86699218750002,28.870166015625017],[50.87578125000002,29.062695312499983],[50.67519531250005,29.146582031250034],[50.64960937500004,29.420068359374966],[50.16894531250003,29.921240234375034],[50.071582031250074,30.198535156250017],[49.55488281250004,30.028955078125023],[49.028125,30.333447265624983],[49.224511718749994,30.472314453125023],[49.00195312500003,30.506542968749983],[48.91914062500004,30.120898437500017],[48.54648437500006,29.962353515624955],[48.47851562499997,30.003808593749966],[48.43457031249997,30.03759765625],[48.33105468749997,30.28544921874996],[48.01494140625002,30.465625],[48.01064453125005,30.989794921875017],[47.679492187500074,31.00239257812501],[47.679492187500074,31.400585937499955],[47.75390624999997,31.601367187500017],[47.829980468749994,31.79443359375],[47.71455078125004,31.936425781249966],[47.5915039062501,32.087988281250034],[47.51191406250004,32.15083007812504],[47.3297851562501,32.45551757812501],[47.28515625000003,32.474023437499966],[47.121386718750074,32.46660156249996],[46.569921875,32.83393554687501],[46.37705078125006,32.92924804687499],[46.29824218750005,32.95024414062502],[46.11279296875003,32.957666015624994],[46.09306640625002,32.97587890624999],[46.08046875,33.028222656249994],[46.0807617187501,33.08652343750006],[46.14111328125003,33.174414062500034],[46.145898437499994,33.229638671874994],[46.01992187500005,33.41572265624998],[45.39707031250006,33.970849609374994],[45.542773437500074,34.21552734375004],[45.459375,34.470361328124994],[45.50078125000002,34.58159179687499],[45.6375,34.573828125],[45.678125,34.798437500000034],[45.92089843750003,35.02851562500001],[46.04179687500002,35.08017578125006],[46.13378906249997,35.127636718749955],[46.15468750000005,35.19672851562498],[46.112109375000074,35.32167968750005],[45.97109375000005,35.524169921875],[46.03740234375002,35.67314453124999],[46.180957031250074,35.71137695312504],[46.2625,35.74414062500006],[46.27343749999997,35.77324218750002],[46.16748046874997,35.820556640625],[45.77636718749997,35.82182617187499],[45.36162109375002,36.015332031249955],[45.241113281249994,36.35595703125],[45.20654296874997,36.397167968749955],[45.15527343749997,36.407373046874994],[45.11240234375006,36.409277343750034],[45.053125,36.47163085937501],[44.76513671875003,37.142431640625006],[44.79414062500004,37.290380859375034],[44.574023437500074,37.435400390625006],[44.589941406250006,37.710351562499966],[44.21132812499999,37.908056640625006],[44.4499023437501,38.33422851562506],[44.2985351562501,38.38627929687499],[44.27167968750004,38.83603515625006],[44.02324218750002,39.37744140625006],[44.3893554687501,39.422119140625],[44.58710937500004,39.76855468750006],[44.81718750000002,39.65043945312496],[45.4796875000001,39.00625],[46.1144531250001,38.877783203125034]]]]},"properties":{"name":"Iran","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[45.6375,34.573828125],[45.50078125000002,34.581591796874996],[45.459375,34.470361328124994],[45.54277343750002,34.21552734375],[45.397070312500006,33.970849609374994],[46.01992187500002,33.41572265625],[46.14589843750002,33.229638671874994],[46.14111328125,33.1744140625],[46.08076171875001,33.0865234375],[46.08046875000002,33.028222656249994],[46.09306640625002,32.975878906249996],[46.11279296875,32.957666015624994],[46.377050781250006,32.929248046874996],[46.569921875,32.833935546875],[47.12138671875002,32.466601562499996],[47.28515625,32.474023437499994],[47.32978515625001,32.455517578125],[47.51191406250001,32.150830078125],[47.59150390625001,32.08798828125],[47.71455078125001,31.936425781249994],[47.82998046875002,31.79443359375],[47.75390625,31.601367187499996],[47.67949218750002,31.400585937499997],[47.67949218750002,31.002392578124997],[48.01064453125002,30.989794921874996],[48.01494140625002,30.465625],[48.3310546875,30.285449218749996],[48.546484375,29.962353515624997],[48.454199218750006,29.9384765625],[48.354589843750006,29.956738281249997],[48.141699218750006,30.040917968749994],[47.982519531250006,30.011328125],[47.97871093750001,29.9828125],[47.64375,30.097314453124994],[47.14824218750002,30.0009765625],[46.905859375,29.5375],[46.76933593750002,29.347460937499996],[46.69375,29.259667968749994],[46.53144531250001,29.096240234374996],[46.3564453125,29.063671875],[44.71650390625001,29.193603515625],[43.77373046875002,29.84921875],[42.07441406250001,31.080371093749996],[40.47890625000002,31.893359375],[40.36933593750001,31.93896484375],[40.02783203125,31.995019531249994],[39.7041015625,32.042529296874996],[39.14541015625002,32.12451171875],[39.29277343750002,32.24384765625],[39.24746093750002,32.350976562499994],[39.04140625000002,32.3056640625],[38.773535156250006,33.372216796874994],[40.98701171875001,34.429052734375],[41.19472656250002,34.768994140625],[41.354101562500006,35.640429687499996],[41.295996093750006,36.383349609374996],[41.41679687500002,36.5146484375],[41.78857421875,36.59716796875],[42.358984375,37.10859375],[42.45585937500002,37.128710937499996],[42.63544921875001,37.249267578125],[42.74111328125002,37.3619140625],[42.77460937500001,37.371875],[42.869140625,37.334912109375],[42.936621093750006,37.324755859374996],[43.09248046875001,37.3673828125],[43.67578125,37.22724609375],[43.83642578125,37.223535156249994],[44.01318359375,37.313525390624996],[44.11445312500001,37.30185546875],[44.15625,37.282958984375],[44.19179687500002,37.249853515625],[44.20839843750002,37.20263671875],[44.20166015625,37.051806640624996],[44.281835937500006,36.97802734375],[44.32558593750002,37.0107421875],[44.401953125,37.058496093749994],[44.60595703125,37.176025390625],[44.66933593750002,37.173583984375],[44.73095703125,37.165283203125],[44.76513671875,37.142431640625],[45.053125,36.471630859375],[45.112402343750006,36.40927734375],[45.1552734375,36.407373046874994],[45.20654296875,36.39716796875],[45.24111328125002,36.35595703125],[45.36162109375002,36.01533203125],[45.7763671875,35.821826171874996],[46.16748046875,35.820556640625],[46.2734375,35.773242187499996],[46.2625,35.744140625],[46.18095703125002,35.711376953125],[46.03740234375002,35.673144531249996],[45.97109375000002,35.524169921875],[46.11210937500002,35.321679687499994],[46.15468750000002,35.196728515625],[46.1337890625,35.12763671875],[46.04179687500002,35.08017578125],[45.9208984375,35.028515625],[45.678125,34.7984375],[45.6375,34.573828125]]]},"properties":{"name":"Iraq","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-15.543115234374994,66.228515625],[-14.595849609374994,66.38154296875],[-15.117382812499983,66.125634765625],[-14.698193359374983,66.02021484375],[-14.827099609374983,65.7642578125],[-14.391845703125,65.78740234375],[-14.473388671875,65.575341796875],[-14.166943359374983,65.64228515625],[-13.617871093749983,65.5193359375],[-13.804785156249977,65.35478515625],[-13.599316406249983,65.0359375],[-14.04443359375,64.74189453125],[-14.385107421874977,64.74521484375],[-14.475390624999989,64.493994140625],[-14.927392578124994,64.319677734375],[-15.832910156249994,64.17666015625],[-16.640332031249983,63.865478515625],[-17.81572265624999,63.71298828125],[-17.946923828124994,63.5357421875],[-18.65361328124999,63.406689453125],[-20.198144531249994,63.555810546874994],[-20.494042968749994,63.687353515625],[-20.413964843749994,63.80517578125],[-20.65092773437499,63.73740234375],[-21.15239257812499,63.94453125],[-22.652197265624977,63.827734375],[-22.701171875,64.083203125],[-22.51005859374999,63.991455078125],[-22.187597656249977,64.039208984375],[-21.463330078124983,64.379150390625],[-22.053369140624994,64.313916015625],[-21.950341796874994,64.514990234375],[-21.590625,64.6263671875],[-22.10600585937499,64.533056640625],[-22.467041015625,64.794970703125],[-23.818994140624994,64.73916015625],[-24.02617187499999,64.863427734375],[-22.7880859375,65.046484375],[-21.89213867187499,65.048779296875],[-21.779980468749983,65.1876953125],[-22.50908203124999,65.19677734375],[-21.844384765624994,65.44736328125],[-22.902490234374994,65.58046875],[-23.89990234375,65.407568359375],[-24.475683593749977,65.5251953125],[-24.248925781249994,65.614990234375],[-23.85673828124999,65.53837890625],[-24.092626953124977,65.77646484375],[-23.615917968749983,65.67958984375],[-23.285351562499983,65.75],[-23.832617187499977,65.84921875],[-23.52495117187499,65.880029296875],[-23.77734375,66.017578125],[-23.434472656249994,66.02421875],[-23.452539062499994,66.181005859375],[-23.018994140624983,65.98212890625],[-22.659863281249983,66.025927734375],[-22.61601562499999,65.86748046875],[-22.44169921874999,65.90830078125],[-22.4453125,66.07001953125],[-22.947900390624994,66.212744140625],[-22.48442382812499,66.26630859375],[-23.116943359375,66.338720703125],[-22.9443359375,66.429443359375],[-22.426123046874977,66.430126953125],[-21.406884765624994,66.0255859375],[-21.374902343749994,65.74189453125],[-21.658447265625,65.723583984375],[-21.12968749999999,65.2666015625],[-20.804345703124994,65.63642578125],[-20.454833984375,65.571044921875],[-20.20751953125,66.10009765625],[-19.489697265624983,65.76806640625],[-19.382958984374994,66.07568359375],[-18.845898437499983,66.183935546875],[-18.141943359374977,65.73408203125],[-18.29716796874999,66.157421875],[-17.906982421875,66.143310546875],[-17.550439453124994,65.964404296875],[-17.153027343749983,66.20283203125],[-16.838037109374994,66.125244140625],[-16.485009765624994,66.195947265625],[-16.540673828124994,66.446728515625],[-16.24931640624999,66.522900390625],[-15.985400390624989,66.5146484375],[-15.543115234374994,66.228515625]]]},"properties":{"name":"Iceland","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[35.78730468750001,32.734912109374996],[35.572851562500006,32.640869140625],[35.56904296875001,32.619873046875],[35.55146484375001,32.3955078125],[35.484375,32.401660156249996],[35.40263671875002,32.450634765625],[35.38671875,32.493017578125],[35.303808593750006,32.512939453125],[35.19326171875002,32.534423828125],[35.065039062500006,32.46044921875],[35.01054687500002,32.338183593749996],[34.95595703125002,32.1609375],[34.98974609375,31.91328125],[34.97832031250002,31.86640625],[34.95380859375001,31.841259765624997],[34.96113281250001,31.82333984375],[34.983007812500006,31.81679687499999],[35.05322265625,31.837939453124996],[35.12714843750001,31.816748046875],[35.203710937500006,31.75],[34.95097656250002,31.602294921875],[34.88046875,31.3681640625],[35.45058593750002,31.479296875],[34.97343750000002,29.555029296875],[34.904296875,29.47734375],[34.24531250000001,31.208300781249996],[34.34833984375001,31.292919921874997],[34.350195312500006,31.362744140624997],[34.52558593750001,31.525634765625],[34.47734375000002,31.584863281249994],[34.483984375,31.59228515625],[34.67841796875001,31.895703125],[35.10859375000001,33.08369140625],[35.411230468750006,33.07568359375],[35.869140625,33.43173828125],[35.91347656250002,32.94960937499999],[35.78730468750001,32.734912109374996]]]},"properties":{"name":"Israel","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[15.576562500000051,38.220312500000034],[15.099511718750023,37.45859375],[15.295703125000017,37.05517578124997],[15.112597656250017,36.687841796875006],[14.501855468750023,36.798681640625034],[14.142968750000023,37.103662109374994],[13.90546875000004,37.10063476562502],[13.169921875000028,37.47929687499996],[12.640234375000034,37.594335937500034],[12.435546874999972,37.819775390624955],[12.734375,38.18305664062498],[12.902734375000023,38.03486328124998],[13.291113281250034,38.19145507812502],[13.788867187499989,37.981201171875],[15.11875,38.15273437500002],[15.498730468750011,38.290869140625006],[15.576562500000051,38.220312500000034]]],[[[8.478906250000023,39.067529296874966],[8.421484375000034,38.968652343749994],[8.366796875,39.115917968749955],[8.478906250000023,39.067529296874966]]],[[[8.28603515625008,41.03984375],[8.205664062500034,40.99746093750005],[8.320214843750023,41.121875],[8.28603515625008,41.03984375]]],[[[9.632031250000011,40.88203124999998],[9.805273437500063,40.499560546875045],[9.642968750000023,40.268408203125006],[9.5625,39.16601562500006],[9.056347656250068,39.23916015625002],[8.966601562500074,38.963720703125034],[8.648535156250034,38.92656250000002],[8.418164062500068,39.205712890624966],[8.547753906250023,39.83920898437506],[8.4078125,39.91723632812497],[8.471289062500063,40.29267578124998],[8.189941406250028,40.651611328125],[8.22421875,40.91333007812503],[8.571875,40.85019531250006],[9.228417968750023,41.257080078125],[9.615332031249977,41.01728515624998],[9.632031250000011,40.88203124999998]]],[[[10.395117187500034,42.85815429687503],[10.419335937499994,42.71318359374999],[10.13125,42.742041015625006],[10.395117187500034,42.85815429687503]]],[[[13.420996093750006,46.212304687499994],[13.63251953125004,46.17705078125002],[13.634960937499983,46.15776367187499],[13.61660156250008,46.133105468750045],[13.54804687500004,46.08911132812503],[13.486425781250034,46.03955078124997],[13.480273437500017,46.00922851562501],[13.487695312500023,45.987109375000045],[13.509179687500051,45.973779296874994],[13.6005859375,45.97978515624996],[13.663476562500023,45.7919921875],[13.831152343750006,45.680419921875],[13.719824218750063,45.58759765625001],[13.628320312500051,45.77094726562498],[13.206347656250074,45.771386718749966],[12.27431640625008,45.44604492187503],[12.225683593750034,45.24150390625002],[12.523437500000028,44.96796874999998],[12.248339843750045,44.72250976562498],[12.396289062500074,44.223876953125],[13.56416015625004,43.57128906250003],[14.010449218750011,42.68955078125006],[14.54072265625004,42.24428710937502],[15.16875,41.93403320312498],[16.164648437500034,41.89619140624998],[15.900488281250034,41.51206054687498],[17.954980468749994,40.65517578125002],[18.460644531249983,40.221044921875034],[18.34375,39.82138671874998],[18.077929687500017,39.93696289062498],[17.865039062500074,40.28017578125002],[17.395800781250045,40.34023437499999],[17.179980468750045,40.50278320312498],[16.92822265625,40.45805664062502],[16.521875,39.74755859375003],[17.114550781250017,39.38061523437497],[17.174609375000017,38.998095703125045],[16.61669921875003,38.800146484375034],[16.54560546875001,38.40908203125002],[16.05683593750001,37.941845703124955],[15.72451171875008,37.93911132812502],[15.645800781250017,38.034228515625045],[15.87890625,38.61391601562502],[16.19677734375,38.759228515624955],[16.20996093750003,38.94111328124998],[15.692773437499994,39.99018554687501],[14.95087890625004,40.23901367187497],[14.94765625000008,40.469335937500006],[14.765722656250063,40.66840820312498],[14.339941406250006,40.59882812500001],[14.460546875000063,40.72871093750001],[14.04433593750008,40.81225585937506],[13.733398437500057,41.23564453124999],[13.088671875000074,41.243847656249955],[12.630859374999972,41.469677734374955],[11.637304687500063,42.287548828124955],[11.141210937499977,42.38989257812503],[11.167773437500074,42.53515625000006],[10.708398437500023,42.93632812499999],[10.514843750000011,42.96752929687503],[10.188085937500063,43.947509765625],[8.76582031250004,44.42231445312501],[8.004980468750006,43.87675781249999],[7.4931640625,43.767138671875045],[7.637207031250057,44.16484375],[7.318554687500068,44.13798828125002],[6.900195312499989,44.33574218749996],[6.99267578125,44.82729492187502],[6.634765625000028,45.06816406249996],[7.07832031250004,45.23994140624998],[7.146386718750051,45.381738281249994],[6.790917968750023,45.740869140624966],[7.021093750000034,45.92578124999997],[7.055761718749977,45.90380859375003],[7.129003906249977,45.88041992187499],[7.327929687500017,45.912353515625],[7.9931640625,46.01591796874996],[8.081542968750057,46.25600585937502],[8.231933593750057,46.341210937499966],[8.29853515625004,46.403417968750034],[8.370703125,46.44511718750002],[8.458398437500023,46.24589843750002],[8.818554687500011,46.0771484375],[8.826757812500006,46.06103515625],[8.77802734375004,45.996191406250034],[8.953710937500034,45.83002929687501],[9.023730468750074,45.845703125],[9.203417968750017,46.21923828125],[9.304394531250068,46.49555664062498],[9.399316406250023,46.480664062499955],[9.427636718750023,46.48232421875002],[9.528710937500023,46.306201171875045],[9.57958984375,46.29609375000001],[9.639453125000017,46.29589843749997],[9.78779296875004,46.34604492187498],[9.884472656250011,46.36777343750006],[9.939257812500074,46.36181640625],[10.041015625000028,46.23808593750002],[10.08056640625,46.22797851562501],[10.128320312500051,46.238232421874955],[10.109667968750074,46.36284179687502],[10.081933593750023,46.420751953125006],[10.045605468750068,46.44790039062505],[10.038281250000011,46.483203125000045],[10.061230468750068,46.54677734375002],[10.087011718750063,46.59990234375002],[10.1375,46.614355468750034],[10.195507812500068,46.62109374999997],[10.4306640625,46.55004882812497],[10.409352678571473,46.6092047991071],[10.39794921875,46.66503906250006],[10.406054687500045,46.73486328124997],[10.452832031249983,46.86494140625001],[10.47939453125008,46.85512695312505],[10.579785156250011,46.85371093750001],[10.689257812500017,46.846386718749955],[10.759765625,46.79331054687498],[10.828906250000045,46.775244140625034],[10.927343750000034,46.76948242187501],[10.993261718750034,46.77700195312502],[11.02509765625004,46.796972656250006],[11.063476562500057,46.85913085937497],[11.133886718750006,46.93618164062505],[11.244433593750045,46.975683593750006],[11.433203125000063,46.983056640624994],[11.527539062500011,46.99741210937498],[11.775683593750017,46.986083984375],[12.169433593750028,47.082128906250006],[12.19716796875008,47.075],[12.201269531250034,47.060888671875034],[12.165527343750028,47.028173828125034],[12.130761718750051,46.98476562499999],[12.154101562500017,46.93525390625004],[12.267968750000023,46.83588867187504],[12.330078125,46.75981445312499],[12.388281250000034,46.70263671874997],[12.479199218749983,46.672509765624966],[13.16875,46.572656249999966],[13.3515625,46.55791015624999],[13.490039062500045,46.55556640625002],[13.7,46.52026367187503],[13.679687500000057,46.46289062499997],[13.63710937500008,46.44853515624999],[13.563281250000045,46.41508789062502],[13.399511718749977,46.31752929687502],[13.420996093750006,46.212304687499994]]]]},"properties":{"name":"Italy","childNum":6}},{"geometry":{"type":"Polygon","coordinates":[[[-77.261474609375,18.45742187499999],[-76.349853515625,18.15185546875],[-76.21079101562499,17.913525390624997],[-76.524609375,17.8662109375],[-76.85322265625,17.97373046874999],[-76.94414062499999,17.848779296874994],[-77.11948242187499,17.880078125],[-77.20498046875,17.71494140624999],[-77.36142578124999,17.833691406249997],[-77.76816406249999,17.877392578124997],[-78.04448242187499,18.173828125],[-78.339501953125,18.28720703124999],[-78.21669921875,18.44809570312499],[-77.8734375,18.522216796875],[-77.261474609375,18.45742187499999]]]},"properties":{"name":"Jamaica","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-2.018652343749977,49.23125],[-2.23583984375,49.1763671875],[-2.220507812499989,49.266357421875],[-2.018652343749977,49.23125]]]},"properties":{"name":"Jersey","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[39.14541015625002,32.12451171875],[38.9970703125,32.007470703124994],[38.96230468750002,31.994921875],[38.37548828125,31.847460937499996],[38.111425781250006,31.781152343749994],[37.49335937500001,31.625878906249994],[37.215625,31.556103515624997],[36.95859375,31.491503906249996],[37.980078125,30.5],[37.862890625,30.442626953125],[37.66972656250002,30.34814453125],[37.64990234375,30.330957031249994],[37.63359375000002,30.31328125],[37.55361328125002,30.144580078124996],[37.49072265625,30.01171875],[37.46923828125,29.995068359374997],[36.75527343750002,29.866015625],[36.70390625000002,29.831640625],[36.591796875,29.66611328125],[36.47607421875,29.4951171875],[36.2828125,29.355371093749994],[36.068457031250006,29.200537109375],[34.95078125,29.353515625],[34.97343750000002,29.555029296875],[35.45058593750002,31.479296875],[35.57207031250002,32.237890625],[35.55146484375001,32.3955078125],[35.56904296875001,32.619873046875],[35.572851562500006,32.640869140625],[35.78730468750001,32.734912109374996],[36.3720703125,32.3869140625],[36.818359375,32.317285156249994],[38.773535156250006,33.372216796874994],[39.04140625000002,32.3056640625],[39.24746093750002,32.350976562499994],[39.29277343750002,32.24384765625],[39.14541015625002,32.12451171875]]]},"properties":{"name":"Jordan","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[123.88867187499997,24.280126953124977],[123.67978515625012,24.317773437500023],[123.77148437499997,24.41445312499999],[123.93486328125002,24.362011718749983],[123.88867187499997,24.280126953124977]]],[[[124.29316406250004,24.515917968750074],[124.13574218750003,24.347607421874983],[124.08476562500002,24.435839843750017],[124.30195312500004,24.58710937500001],[124.29316406250004,24.515917968750074]]],[[[125.44414062500002,24.7431640625],[125.26894531250005,24.732519531250063],[125.28359375,24.871923828125034],[125.44414062500002,24.7431640625]]],[[[128.25878906249997,26.65278320312501],[127.86708984375,26.442480468749977],[127.80361328125005,26.152539062499983],[127.653125,26.0947265625],[127.90722656250003,26.69360351562497],[128.09765624999997,26.66777343749996],[128.25488281249997,26.88188476562496],[128.25878906249997,26.65278320312501]]],[[[128.99814453125012,27.720800781250006],[128.90000000000012,27.727783203125],[128.9076171875,27.897998046875045],[128.99814453125012,27.720800781250006]]],[[[129.45253906250005,28.20898437499997],[129.3664062500001,28.127734375000045],[129.16464843750012,28.24975585937503],[129.68955078125012,28.517480468750023],[129.45253906250005,28.20898437499997]]],[[[130.6227539062501,30.262988281250017],[130.44560546875002,30.264697265625017],[130.38808593750005,30.38818359375003],[130.49716796875006,30.465527343749983],[130.64355468749997,30.388964843750017],[130.6227539062501,30.262988281250017]]],[[[130.95976562500007,30.39692382812504],[130.87031250000004,30.444238281249994],[131.06035156250007,30.828466796875006],[130.95976562500007,30.39692382812504]]],[[[130.38105468750004,32.42373046875002],[130.24169921874997,32.462792968749994],[130.46142578124997,32.515722656250034],[130.38105468750004,32.42373046875002]]],[[[130.08251953124997,32.22968750000001],[129.9601562500001,32.24375],[130.00976562499997,32.521630859374994],[130.16777343750002,32.54121093749998],[130.19951171875002,32.34057617187506],[130.08251953124997,32.22968750000001]]],[[[128.66533203125002,32.783886718749955],[128.89453124999997,32.65214843750002],[128.69296875000012,32.60473632812506],[128.66533203125002,32.783886718749955]]],[[[129.07695312500002,32.84028320312498],[128.99726562500004,32.95185546874998],[129.10976562500005,33.13256835937503],[129.18193359375002,32.99311523437504],[129.07695312500002,32.84028320312498]]],[[[129.49179687500006,33.22304687499999],[129.37041015625002,33.176025390625],[129.56992187500006,33.36103515625004],[129.49179687500006,33.22304687499999]]],[[[129.79570312500007,33.74882812499999],[129.67480468749997,33.73969726562498],[129.71728515624997,33.8583984375],[129.79570312500007,33.74882812499999]]],[[[131.17460937500007,33.602587890625045],[131.69628906250003,33.60283203124999],[131.53740234375007,33.274072265624994],[131.89658203125006,33.25458984375001],[131.8478515625001,33.118066406249994],[132.0021484375001,32.882373046875045],[131.6603515625001,32.465625],[131.33720703125007,31.4046875],[131.07080078124997,31.436865234374977],[131.09843750000002,31.256152343750017],[130.68574218750004,31.01513671875003],[130.77626953125,31.70629882812497],[130.65507812500002,31.71840820312505],[130.5560546875,31.563085937500034],[130.58876953125,31.178515625000017],[130.20068359374997,31.291894531250023],[130.14726562500002,31.40849609374996],[130.2941406250001,31.45068359375003],[130.3219726562501,31.601464843750023],[130.18789062500005,31.768847656250017],[130.19443359375012,32.090771484374955],[130.64052734375005,32.61923828124998],[130.49785156250002,32.65693359375001],[130.547265625,32.83159179687499],[130.2375,33.177636718749966],[130.12685546875005,33.10483398437506],[130.175,32.851318359375],[130.32646484375002,32.852636718750006],[130.34042968750012,32.70185546875004],[130.05410156250005,32.770800781250045],[129.76855468749997,32.57099609375001],[129.82675781250006,32.72534179687503],[129.67910156250005,33.059960937499966],[129.99169921875003,32.85156249999997],[129.58007812500003,33.23627929687501],[129.61015625000002,33.34365234375005],[129.844140625,33.32177734375003],[129.82568359374997,33.43701171875006],[130.36503906250007,33.634472656249955],[130.4837890625,33.834619140624966],[130.715625,33.92778320312502],[130.953125,33.87202148437504],[131.17460937500007,33.602587890625045]]],[[[132.266015625,33.945166015625006],[132.44492187500006,33.91318359374998],[132.20878906250007,33.87285156250002],[132.266015625,33.945166015625006]]],[[[129.27949218750004,34.123388671875006],[129.18642578125,34.14501953125006],[129.21484374999997,34.320654296875034],[129.3371093750001,34.284765625],[129.27949218750004,34.123388671875006]]],[[[134.35742187500003,34.25634765625],[134.6375,34.22661132812499],[134.73886718750012,33.82050781250001],[134.37705078125012,33.60839843749997],[134.18164062500003,33.24721679687502],[133.95869140625004,33.44833984375006],[133.63203125000004,33.51098632812503],[133.28593750000007,33.35996093749998],[132.97724609375004,32.84199218749998],[132.80429687500006,32.75200195312502],[132.6417968750001,32.76245117187503],[132.70898437500003,32.90249023437505],[132.49511718749997,32.91660156249998],[132.41279296875004,33.43046875],[132.0326171875,33.339990234374994],[132.64306640624997,33.68994140624997],[132.93515625000006,34.09531250000006],[133.19306640625004,33.93320312499998],[133.58203124999997,34.01713867187502],[133.60263671875006,34.24384765625001],[133.94833984375006,34.34804687500002],[134.35742187500003,34.25634765625]]],[[[134.35185546875002,34.48364257812503],[134.25185546875,34.42304687500004],[134.18212890625003,34.51923828124998],[134.35185546875002,34.48364257812503]]],[[[134.9328125000001,34.28813476562499],[134.82441406250004,34.202929687500045],[134.66787109375005,34.294140624999955],[135.00468750000002,34.54404296874998],[134.9328125000001,34.28813476562499]]],[[[129.38564453125,34.35366210937502],[129.26669921875012,34.37045898437506],[129.45107421875005,34.68657226562499],[129.38564453125,34.35366210937502]]],[[[133.37050781250005,36.203857421875],[133.23925781249997,36.178759765625045],[133.20615234375006,36.293408203124955],[133.29570312500002,36.34013671874996],[133.37050781250005,36.203857421875]]],[[[138.34404296875007,37.822119140625006],[138.22519531250006,37.82939453124996],[138.25,38.078466796875006],[138.50361328125004,38.31591796875006],[138.45361328124997,38.07568359375006],[138.57519531249997,38.065527343750034],[138.34404296875007,37.822119140625006]]],[[[141.22929687500007,41.37265625],[141.45546875000005,41.404736328124955],[141.43046875000002,40.72333984374998],[141.7970703125001,40.29116210937502],[141.97695312500005,39.428808593750034],[141.90078125,39.111328125],[141.5462890625,38.762841796874966],[141.4674804687501,38.404150390625006],[141.10839843750003,38.33793945312502],[140.9621093750001,38.148876953124955],[141.00166015625004,37.11464843750002],[140.57353515625007,36.23134765625002],[140.87402343749997,35.72495117187506],[140.457421875,35.51025390625],[140.35468750000004,35.18144531249999],[139.8439453125001,34.914892578125034],[139.82646484375002,35.29667968750002],[140.096875,35.58515624999998],[139.83476562500002,35.658056640625006],[139.65000000000012,35.40913085937501],[139.675,35.149267578125006],[139.47441406250002,35.298535156249955],[139.24941406250005,35.27802734375004],[139.08603515625006,34.83916015624999],[138.8375,34.619238281250034],[138.80273437499997,34.97480468749998],[138.90361328125002,35.02524414062506],[138.71962890625,35.12407226562502],[138.18906250000012,34.596337890624994],[137.543359375,34.66420898437505],[137.06171875000004,34.58281249999999],[137.27519531250002,34.77250976562499],[136.96328125000005,34.83491210937501],[136.87128906250004,34.733105468749955],[136.89707031250006,35.03554687500002],[136.80419921874997,35.05029296875],[136.53300781250007,34.678369140624994],[136.8802734375,34.43359375000006],[136.8537109375001,34.324072265625034],[136.32988281250007,34.17685546875006],[135.91621093750004,33.561718749999955],[135.69531250000003,33.48696289062502],[135.4528320312501,33.55336914062505],[135.12792968749997,34.006982421874994],[135.10009765624997,34.288378906250045],[135.41591796875,34.61748046875002],[134.74003906250007,34.765234375],[134.246875,34.71386718750003],[133.96826171874997,34.52729492187504],[133.14238281250002,34.30244140624998],[132.65654296875007,34.24609375000003],[132.31259765625006,34.32495117187503],[132.14648437499997,33.83876953125002],[131.74052734375007,34.05205078125002],[130.91884765625,33.97573242187502],[130.88925781250012,34.261816406250034],[131.00419921875007,34.39257812500003],[131.35439453125,34.41318359375006],[132.92294921875006,35.511279296875045],[133.98125,35.50722656250002],[135.17431640625003,35.74707031250003],[135.32695312500002,35.52553710937502],[135.68027343750006,35.503125],[135.903125,35.60688476562498],[136.09531250000006,35.767626953125045],[136.06748046875006,36.11684570312505],[136.69814453125005,36.742041015625034],[136.84345703125004,37.38212890624999],[137.32265625,37.52207031249998],[136.89990234375003,37.11767578125],[137.01669921875006,36.83720703124999],[137.24628906250004,36.753173828125],[137.5140625,36.95156250000002],[138.31992187500012,37.21840820312502],[138.88505859375007,37.84394531250001],[139.36386718750006,38.09902343750002],[139.80195312500004,38.881591796875],[140.06474609375002,39.624414062499994],[139.99472656250006,39.855078125],[139.74150390625002,39.92084960937498],[140.01113281250005,40.26035156250006],[139.92285156250003,40.59843750000002],[140.28125,40.84609375000002],[140.3444335937501,41.203320312499955],[140.62763671875004,41.195410156250034],[140.74863281250012,40.830322265625],[140.93603515625003,40.940771484375034],[141.1185546875,40.88227539062501],[141.24423828125006,41.20561523437499],[140.80058593750002,41.138818359374966],[140.80185546875012,41.253662109375],[140.9369140625,41.50556640624998],[141.22929687500007,41.37265625]]],[[[139.48125,42.08100585937498],[139.43134765625004,42.19956054687498],[139.55839843750002,42.235205078125034],[139.48125,42.08100585937498]]],[[[141.29541015625003,45.11933593750001],[141.14531250000002,45.153906250000034],[141.19375,45.24785156249999],[141.29541015625003,45.11933593750001]]],[[[141.07275390624997,45.33286132812498],[141.03398437500007,45.26933593750002],[140.97167968749997,45.465478515624994],[141.07275390624997,45.33286132812498]]],[[[143.82431640625012,44.11699218749999],[144.71523437500005,43.92797851562503],[145.36953125000005,44.32739257812506],[145.13964843750003,43.6625],[145.34082031249997,43.30253906249999],[145.83300781249997,43.38593750000001],[144.92138671874997,43.00092773437498],[143.96933593750006,42.88139648437499],[143.42949218750002,42.41889648437498],[143.2365234375001,42.000195312499955],[141.85136718750007,42.57905273437501],[141.40664062500005,42.54692382812496],[140.98613281250002,42.34213867187498],[140.70976562500002,42.555615234374955],[140.48046875000003,42.559375],[140.32666015625003,42.29335937499999],[141.15097656250012,41.80507812499999],[140.99951171874997,41.73740234375006],[140.65986328125004,41.815576171874994],[140.3849609375001,41.51928710937503],[140.08515625000004,41.43408203125],[139.99531250000004,41.57641601562503],[140.10839843749997,41.912939453125034],[139.83544921874997,42.278076171875],[139.86015625000002,42.58173828125004],[140.43222656250012,42.95410156250006],[140.39238281250002,43.303125],[141.13818359374997,43.17993164062506],[141.37412109375006,43.279638671875006],[141.7609375000001,44.482519531250034],[141.58300781250003,45.15595703125001],[141.66796874999997,45.401269531249966],[141.93769531250004,45.509521484375],[142.88476562499997,44.670117187499955],[143.82431640625012,44.11699218749999]]]]},"properties":{"name":"Japan","childNum":28}},{"geometry":{"type":"Polygon","coordinates":[[[77.04863281249999,35.109912109374996],[76.927734375,35.346630859375],[76.88222656250002,35.4357421875],[76.81279296874999,35.571826171874996],[76.76689453124999,35.66171875],[76.87890625,35.61328125],[77.09003906250001,35.552050781249996],[77.29482421875002,35.508154296875],[77.44648437500001,35.4755859375],[77.57255859374999,35.471826171874994],[77.72402343750002,35.48056640625],[77.79941406250003,35.495898437499996],[77.42343750000003,35.302587890625],[77.16855468750003,35.171533203124994],[77.04863281249999,35.109912109374996]]]},"properties":{"name":"Siachen Glacier","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[50.184472656249994,44.854638671874994],[49.99511718750003,44.93696289062498],[50.10986328124997,45.08193359375002],[50.038867187500074,44.949121093749966],[50.184472656249994,44.854638671874994]]],[[[87.32285156250012,49.085791015625006],[86.8083007812501,49.04970703125002],[86.54941406250012,48.52861328125002],[85.7494140625,48.38505859374999],[85.52597656250006,47.915625],[85.65664062500005,47.254638671875],[85.484765625,47.06352539062496],[84.78613281249997,46.83071289062505],[84.66660156250006,46.97236328125004],[84.016015625,46.97050781250002],[83.02949218750004,47.18593750000002],[82.31523437500002,45.59492187499998],[82.61162109375007,45.424267578124955],[82.52148437500003,45.12548828125],[82.26660156249997,45.21909179687498],[81.94492187500006,45.16083984375001],[81.69199218750012,45.34936523437497],[80.05917968750012,45.006445312500006],[79.871875,44.88378906249997],[80.48154296875006,44.71464843749999],[80.35527343750002,44.09726562500006],[80.78574218750006,43.16157226562504],[80.39023437500006,43.043115234374966],[80.53896484375005,42.873486328124955],[80.20224609375012,42.73447265624998],[80.209375,42.190039062500006],[80.07128906249997,42.302978515625],[79.92109375000004,42.41313476562496],[79.49013671875,42.45756835937496],[79.42822265624997,42.483496093750006],[79.20302734375005,42.66601562499997],[79.16484375000007,42.759033203125],[79.1266601562501,42.775732421875034],[76.98808593750007,42.97358398437501],[76.64648437500003,42.928808593750034],[76.50917968750005,42.91889648437498],[75.9322265625,42.92851562499999],[75.84033203125003,42.9375],[75.78955078124997,42.93291015624999],[75.68173828125,42.83046875],[75.04765625000007,42.904394531250034],[74.20908203125006,43.24038085937502],[73.88603515625002,43.132568359375],[73.55625,43.002783203125006],[73.45019531249997,42.703027343749966],[73.421875,42.59350585937503],[73.49296875000007,42.409033203125034],[73.41162109375003,42.41977539062498],[73.316015625,42.46699218750001],[73.2829101562501,42.50410156250004],[72.85507812500006,42.561132812500006],[72.75292968750003,42.63789062500001],[72.54316406250004,42.67773437500006],[72.27578125,42.757666015625006],[71.76054687500002,42.82148437500004],[71.5142578125,42.766943359375006],[71.42207031250004,42.78315429687504],[71.25664062500002,42.733544921874966],[70.89287109375007,42.339990234374994],[70.94677734374997,42.24868164062505],[69.15361328125002,41.42524414062498],[68.58408203125,40.876269531250045],[68.57265625,40.62265624999998],[68.29189453125,40.656103515625034],[68.04765625000007,40.80927734374998],[68.11308593750007,41.02861328124999],[67.9357421875001,41.19658203125002],[66.70966796875004,41.17915039062501],[66.49863281250006,41.99487304687503],[66.00957031250007,42.00488281250003],[66.1002929687501,42.99082031249998],[65.80302734375002,42.87695312500006],[65.49619140625,43.310546875],[64.9054687500001,43.714697265625006],[64.44316406250007,43.55117187499999],[63.20703125000003,43.62797851562502],[61.99023437500003,43.492138671874955],[61.007910156250006,44.39379882812497],[58.555273437500006,45.55537109375001],[55.97568359375006,44.99492187499996],[55.97744140625005,41.32221679687504],[55.434375,41.296289062499994],[54.85380859375002,41.965185546875006],[54.120996093749994,42.335205078125],[53.0558593750001,42.14775390624999],[52.4938476562501,41.780371093750034],[52.59658203125005,42.760156249999966],[51.898242187500074,42.86962890624997],[51.61601562500002,43.15844726562503],[51.29541015624997,43.17412109375002],[51.30175781249997,43.48237304687501],[50.8307617187501,44.192773437499966],[50.331152343750006,44.32548828125002],[50.25292968749997,44.461523437500006],[50.409472656250074,44.6240234375],[51.543554687500006,44.53100585937506],[51.009375,44.92182617187501],[51.4157226562501,45.35786132812501],[53.20039062500004,45.33198242187498],[52.77382812499999,45.57275390625],[53.13525390625003,46.19165039062497],[53.069433593750006,46.85605468750006],[52.48320312500002,46.99067382812504],[52.13828125,46.82861328124997],[51.178027343750074,47.110156250000045],[49.886328125,46.59565429687504],[49.347460937500074,46.51914062499998],[49.232226562500074,46.33715820312503],[48.54121093750004,46.60561523437502],[48.558398437500074,46.75712890624999],[48.959375,46.77460937499998],[48.16699218750003,47.70878906249996],[47.48193359374997,47.80390624999998],[47.292382812499994,47.74091796875004],[47.06464843750004,48.23247070312499],[46.660937500000074,48.41225585937502],[46.70263671875003,48.80556640625002],[47.031347656250006,49.150292968749994],[46.80205078125002,49.36708984375002],[46.889550781249994,49.69697265625001],[47.42919921874997,50.35795898437502],[47.7057617187501,50.37797851562502],[48.33496093750003,49.858251953125006],[48.7589843750001,49.92832031250006],[48.625097656250006,50.61269531250005],[49.32343750000004,50.851708984374966],[49.49804687500003,51.08359375000006],[50.246875,51.28950195312498],[50.79394531249997,51.729199218749955],[51.16347656250005,51.6474609375],[51.344531250000074,51.47534179687503],[52.21914062499999,51.709375],[52.57119140625005,51.481640624999955],[53.33808593750004,51.48237304687504],[54.139746093750006,51.04077148437503],[54.555273437500006,50.535791015624994],[54.64160156250003,51.011572265625034],[55.68623046875004,50.582861328125006],[56.49140625000004,51.01953124999997],[57.01171874999997,51.06518554687503],[57.44218750000002,50.88886718749998],[57.83886718750003,51.091650390625006],[58.359179687500074,51.063818359375034],[58.88369140625005,50.694433593750006],[59.4523437500001,50.62041015625002],[59.523046875,50.492871093749955],[59.812402343749994,50.58203125],[60.05859374999997,50.850292968749955],[60.42480468749997,50.67915039062498],[60.94228515625005,50.69550781250004],[61.38945312500002,50.86103515625001],[61.55468750000003,51.32460937500005],[60.464746093749994,51.651171875000045],[60.03027343749997,51.93325195312505],[60.99453125000005,52.33686523437504],[60.77441406249997,52.67578124999997],[61.047460937500006,52.97246093750002],[62.08271484375004,53.00541992187499],[61.65986328125004,53.22846679687504],[61.19921874999997,53.28715820312502],[61.22890625,53.445898437500006],[61.53496093750002,53.52329101562506],[60.97949218749997,53.62172851562505],[61.231054687500006,54.01948242187498],[61.92871093750003,53.94648437500004],[64.46123046875002,54.38417968750002],[65.08837890624997,54.340185546875034],[65.476953125,54.62329101562497],[68.15585937500006,54.97670898437505],[68.20625,55.16093750000002],[68.9772460937501,55.389599609374955],[70.18242187500002,55.162451171875034],[70.73808593750007,55.30517578125],[71.18554687500003,54.59931640624998],[71.09316406250005,54.21220703124999],[72.00449218750006,54.20566406249998],[72.18603515625003,54.32563476562501],[72.44677734375003,53.94184570312498],[72.62226562500004,54.13432617187502],[73.22988281250005,53.957812500000045],[73.71240234375003,54.04238281250002],[73.30566406250003,53.707226562499955],[73.40693359375004,53.44755859374999],[73.85898437500006,53.61972656249998],[74.35156250000003,53.487646484375006],[74.45195312500007,53.64726562500002],[75.22021484374997,53.89379882812506],[75.43720703125004,54.08964843749999],[76.8373046875,54.4423828125],[76.65458984375007,54.14526367187503],[76.42167968750007,54.151513671874966],[76.48476562500005,54.02255859374998],[77.85996093750006,53.269189453124994],[79.98623046875,50.774560546874966],[80.42363281250002,50.94628906249997],[80.44804687500002,51.18334960937503],[80.73525390625,51.29340820312498],[81.12724609375002,51.19106445312502],[81.0714843750001,50.96875],[81.38828125000006,50.95649414062501],[81.46591796875006,50.73984375],[82.49394531250007,50.72758789062499],[82.76083984375012,50.89335937500002],[83.35732421875005,50.99458007812504],[83.94511718750007,50.774658203125],[84.32324218749997,50.239160156249966],[84.9894531250001,50.061425781249994],[85.2326171875001,49.61582031249998],[86.1808593750001,49.49931640624996],[86.67548828125004,49.77729492187501],[86.62646484374997,49.56269531250001],[87.32285156250012,49.085791015625006]]]]},"properties":{"name":"Kazakhstan","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[35.325292968750006,5.364892578124994],[35.745019531249994,5.343994140625],[35.80029296874997,5.156933593749983],[35.77929687499997,5.105566406250006],[35.756152343750074,4.950488281250031],[35.76308593750005,4.808007812500051],[36.02197265625003,4.468115234374991],[36.90556640625002,4.411474609374991],[37.15458984375002,4.254541015624994],[37.944921875,3.746728515625023],[38.0861328125001,3.648828124999966],[38.22529296875004,3.61899414062502],[38.45156250000005,3.604833984374977],[38.608007812500006,3.600097656249986],[39.49443359375002,3.45610351562496],[39.65751953125002,3.577832031249983],[39.79033203125002,3.754248046875034],[39.8421875,3.851464843750037],[40.765234375,4.273046875000034],[41.02080078125002,4.057470703124991],[41.22089843750004,3.943554687499969],[41.372460937499994,3.94619140624998],[41.48193359375003,3.96328125],[41.737695312499994,3.979052734375003],[41.88398437500004,3.977734375000011],[41.6134765625001,3.59047851562498],[41.34179687499997,3.20166015625],[40.964453125,2.814648437500026],[40.9787109375001,-0.870312500000011],[41.249804687500074,-1.220507812499946],[41.4269531250001,-1.449511718749974],[41.521875,-1.572265625000028],[41.53271484374997,-1.695312499999957],[41.26748046875005,-1.945019531250026],[40.889746093750006,-2.023535156250034],[40.89824218750002,-2.269921874999966],[40.64414062500006,-2.53945312499998],[40.22246093750002,-2.688378906250037],[40.1154296875001,-3.250585937499991],[39.8609375,-3.576757812500006],[39.49091796875004,-4.478417968750023],[39.221777343750006,-4.692382812500014],[37.608203125000074,-3.497070312500028],[37.643847656250074,-3.045410156250028],[33.90322265625005,-1.002050781250034],[33.94316406250002,0.173779296874969],[34.160937500000074,0.605175781250026],[34.4108398437501,0.867285156250034],[34.48173828125002,1.042138671875051],[34.79863281250002,1.24453125],[34.976464843749994,1.719628906250051],[34.97753906249997,1.861914062499991],[34.9640625000001,2.06240234374998],[34.8830078125001,2.417919921875026],[34.90576171875003,2.4796875],[34.44785156250006,3.163476562500037],[34.40722656249997,3.357519531250034],[34.39941406249997,3.412695312500006],[34.44179687499999,3.60625],[34.43769531250004,3.650585937499969],[34.392871093750074,3.691503906250048],[34.26708984375003,3.733154296875],[34.16503906250003,3.812988281250014],[34.18574218750004,3.869775390625037],[34.13203125000004,3.889160156249986],[33.97607421874997,4.220214843750028],[34.176855468750006,4.419091796875037],[34.38017578125002,4.620654296874974],[34.6398437500001,4.875488281250028],[34.878320312499994,5.109570312500026],[35.08447265624997,5.31186523437502],[35.268359375000074,5.492285156250006],[35.325292968750006,5.364892578124994]]]},"properties":{"name":"Kenya","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[72.63994140625002,39.385986328125],[72.22998046875,39.20751953125],[72.14736328125002,39.2607421875],[72.08417968750001,39.31064453125],[72.04277343750002,39.3521484375],[71.77861328125002,39.277978515624994],[71.73222656250002,39.422998046874994],[71.50332031250002,39.478808593749996],[71.51738281250002,39.553857421874994],[71.50302734375,39.582177734374994],[71.4703125,39.603662109374994],[70.79931640625,39.3947265625],[70.50117187500001,39.587353515625],[69.29765625000002,39.524804687499994],[69.2447265625,39.827099609375],[69.27880859375,39.917773437499996],[69.3072265625,39.968554687499996],[69.36542968750001,39.947070312499996],[69.43193359375002,39.909765625],[69.47626953125001,39.919726562499996],[69.47099609375002,39.990625],[69.46875,40.020751953125],[69.966796875,40.20224609375],[70.59921875,39.974511718749994],[70.990625,40.2548828125],[71.3046875,40.286914062499996],[71.69248046875,40.15234375],[72.13125,40.438623046874994],[72.3892578125,40.427392578124994],[72.40205078125001,40.578076171875],[72.6041015625,40.525439453124996],[73.13212890625002,40.82851562499999],[72.65830078125,40.869921875],[72.36406250000002,41.04345703125],[72.294921875,41.039941406249994],[72.21308593750001,41.0142578125],[72.18730468750002,41.025927734374996],[72.18095703125002,41.118457031249996],[72.16425781250001,41.173730468749994],[72.11542968750001,41.186572265624996],[72.05244140625001,41.16474609375],[71.95849609375,41.187060546874996],[71.87861328125001,41.19501953125],[71.8580078125,41.311376953125],[71.79248046875,41.413134765624996],[71.75771484375002,41.428027343749996],[71.70068359375,41.454003906249994],[71.66494140625002,41.5412109375],[71.6375,41.5341796875],[71.60224609375001,41.503271484375],[71.60625,41.367431640625],[71.54560546875001,41.308056640625],[71.5,41.307470703125],[71.4208984375,41.34189453125],[71.40839843750001,41.136035156249996],[71.39306640625,41.123388671875],[71.11074218750002,41.152636718749996],[70.86044921875,41.224902343749996],[70.734375,41.400537109374994],[70.18095703125002,41.571435546874994],[70.85664062500001,42.030810546874996],[71.0322265625,42.077783203124994],[71.228515625,42.162890625],[71.23232421875002,42.186279296875],[71.21269531250002,42.206445312499994],[71.12998046875,42.25],[71.03603515625002,42.28466796875],[70.97900390625,42.266552734375],[70.94677734375,42.248681640624994],[70.89287109375002,42.339990234374994],[71.25664062500002,42.733544921874994],[71.42207031250001,42.783154296875],[71.5142578125,42.766943359375],[71.76054687500002,42.821484375],[72.16181640625001,42.760693359375],[72.27578125000002,42.757666015625],[72.54316406250001,42.677734375],[72.7529296875,42.637890625],[72.855078125,42.5611328125],[73.28291015625001,42.5041015625],[73.316015625,42.4669921875],[73.41162109375,42.419775390625],[73.49296875000002,42.409033203125],[73.421875,42.593505859375],[73.4501953125,42.703027343749994],[73.55625,43.002783203125],[73.88603515625002,43.132568359375],[74.20908203125,43.240380859374994],[75.04765625000002,42.90439453125],[75.68173828125,42.83046875],[75.78955078125,42.932910156249996],[75.84033203125,42.9375],[75.9322265625,42.928515625],[76.50917968750002,42.918896484375],[76.646484375,42.92880859375],[76.98808593749999,42.973583984375],[79.12666015625001,42.775732421875],[79.20302734375002,42.666015625],[79.29550781250003,42.604833984375],[79.36777343750003,42.547216796875],[79.42822265625,42.48349609375],[79.92109375000001,42.413134765624996],[80.0712890625,42.302978515625],[80.209375,42.1900390625],[80.24619140625003,42.059814453125],[80.23515624999999,42.04345703125],[80.21621093750002,42.032421875],[79.90966796875,42.014990234375],[79.84042968750003,41.995751953124994],[79.76611328125,41.898876953125],[78.74257812500002,41.56005859375],[78.54316406250001,41.4595703125],[78.44287109375,41.417529296874996],[78.36240234375003,41.371630859374996],[78.34628906250003,41.2814453125],[78.12343750000002,41.075634765625],[77.95644531250002,41.050683593749994],[77.81523437499999,41.055615234375],[77.71933593750003,41.024316406249994],[77.58173828125001,40.9927734375],[76.98662109374999,41.03916015625],[76.90771484375,41.024169921875],[76.82402343749999,40.982324218749994],[76.70839843750002,40.818115234375],[76.6611328125,40.779638671875],[76.63984375000001,40.742236328124996],[76.62216796875003,40.662353515625],[76.57792968749999,40.577880859375],[76.48017578125001,40.449511718749996],[76.39638671875002,40.389794921874994],[76.31855468750001,40.35224609375],[76.25830078125,40.43076171875],[75.87197265625002,40.30322265625],[75.67714843750002,40.305810546874994],[75.55556640625002,40.6251953125],[75.52080078125002,40.6275390625],[75.24101562500002,40.480273437499996],[75.111328125,40.4541015625],[75.0044921875,40.449511718749996],[74.865625,40.493505859375],[74.80126953125,40.428515625],[74.83046875000002,40.32851562499999],[74.41191406250002,40.13720703125],[74.24267578125,40.092041015625],[74.08515625000001,40.07431640625],[73.99160156250002,40.043115234374994],[73.93876953125002,39.978808593749996],[73.88457031250002,39.8779296875],[73.85625,39.828662109374996],[73.83535156250002,39.800146484375],[73.83974609375002,39.762841796874994],[73.88251953125001,39.71455078125],[73.9146484375,39.606494140624996],[73.90712890625002,39.57851562499999],[73.87275390625001,39.53330078125],[73.82294921875001,39.48896484375],[73.71572265625002,39.462255859375],[73.63164062500002,39.448876953124994],[73.47041015625001,39.460595703124994],[73.38740234375001,39.442724609375],[73.33613281250001,39.412353515625],[73.2349609375,39.374560546874996],[73.10927734375002,39.3619140625],[72.63994140625002,39.385986328125]],[[70.66416015625,39.85546875],[70.56708984375001,39.866601562499994],[70.49775390625001,39.882421875],[70.48281250000002,39.882714843749994],[70.4892578125,39.863037109375],[70.5595703125,39.790917968749994],[70.61210937500002,39.786767578124994],[70.70166015625,39.82529296875],[70.66416015625,39.85546875]],[[71.20615234375,39.892578125],[71.22871093750001,40.048144531249996],[71.08037109375002,40.079882812499996],[71.02412109375001,40.149169921875],[71.00546875,40.152294921875],[70.96064453125001,40.08798828125],[71.04482421875002,39.992529296875],[71.04365234375001,39.976318359375],[71.01171875,39.8951171875],[71.06425781250002,39.884912109374994],[71.15625,39.883447265624994],[71.20615234375,39.892578125]]]},"properties":{"name":"Kyrgyzstan","childNum":3}},{"geometry":{"type":"Polygon","coordinates":[[[104.42636718750006,10.411230468749991],[103.87050781250005,10.655126953125034],[103.58710937500004,10.552197265625026],[103.54042968750005,10.668701171875043],[103.721875,10.890136718750043],[103.5324218750001,11.146679687499997],[103.35361328125006,10.921582031250054],[103.15283203124997,10.913720703125051],[103.12548828124997,11.460644531250011],[102.9486328125,11.773486328124974],[102.93388671875002,11.706689453125037],[102.73662109375007,12.089794921875011],[102.75566406250002,12.42626953125],[102.49960937500012,12.669970703125003],[102.33632812500005,13.560302734375014],[102.546875,13.585693359375043],[102.90927734375006,14.136718750000028],[103.19941406250004,14.332617187499977],[104.77900390625004,14.427832031250006],[105.07412109375005,14.227441406250037],[105.12597656250003,14.280957031250011],[105.16914062500004,14.336083984374966],[105.1833007812501,14.346240234374989],[105.18554687500003,14.319091796874972],[105.20703125000003,14.259375],[105.24570312500006,14.200537109374977],[105.35019531250006,14.109570312500011],[105.53154296875007,14.156152343749994],[105.73974609375003,14.084960937500057],[105.83144531250005,13.976611328125003],[105.9044921875001,13.924511718750054],[106.06679687500005,13.921191406250003],[106.12470703125004,14.049121093750031],[106.09667968749997,14.127099609375023],[106.00410156250004,14.262890624999983],[105.97890625,14.343017578125043],[106.00839843750012,14.357177734375],[106.1652343750001,14.372363281249989],[106.19072265625007,14.388134765624997],[106.22539062500002,14.476220703125009],[106.26796875,14.466210937500009],[106.35498046875003,14.454785156249997],[106.44697265625004,14.515039062500009],[106.50146484375003,14.578222656250006],[106.53115234375005,14.549414062499991],[106.5636718750001,14.505078125000026],[106.59921875000006,14.479394531250037],[106.66542968750005,14.441308593749994],[106.73818359375005,14.387744140625017],[106.78349609375002,14.335107421875037],[106.81992187500006,14.314697265625057],[106.91318359375006,14.329394531250031],[106.93808593750006,14.327343750000054],[106.99218750000003,14.391015624999966],[107.03017578125,14.425683593750009],[107.06240234375,14.415771484375043],[107.109375,14.416699218750054],[107.29267578125004,14.592382812500048],[107.37988281250003,14.555322265625051],[107.41474609375004,14.56289062499999],[107.51943359375005,14.705078125],[107.3314453125,14.126611328125009],[107.60546874999997,13.437792968750017],[107.47539062500002,13.030371093749963],[107.50644531250006,12.364550781250031],[107.39335937500002,12.260498046874972],[107.21210937500004,12.30400390624996],[106.70009765625,11.979296874999974],[106.41386718750002,11.9484375],[106.39921875000007,11.687011718750028],[106.0060546875001,11.758007812500011],[105.85146484375005,11.635009765625],[105.85605468750006,11.294287109375048],[106.16093750000002,11.037109375000057],[106.16396484375005,10.794921875],[105.85332031250007,10.86357421874996],[105.75507812500004,10.989990234375043],[105.40576171875003,10.95161132812504],[105.3146484375001,10.845166015625026],[105.04570312500002,10.911376953125014],[105.04638671874997,10.701660156250014],[104.85058593749997,10.534472656249974],[104.42636718750006,10.411230468749991]]]},"properties":{"name":"Cambodia","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-157.34213867187503,1.855566406250034],[-157.17578125,1.73984375],[-157.57895507812498,1.902050781249997],[-157.43583984374993,1.84726562500002],[-157.365185546875,1.94609375],[-157.44189453125003,2.025048828125009],[-157.321875,1.968554687500045],[-157.34213867187503,1.855566406250034]]],[[[-159.3390625,3.923535156249983],[-159.27475585937503,3.796582031250054],[-159.40903320312503,3.87324218750004],[-159.3390625,3.923535156249983]]]]},"properties":{"name":"Kiribati","childNum":2}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[126.32695312500002,33.2236328125],[126.16562500000012,33.31201171875],[126.33769531250002,33.46040039062501],[126.90117187500002,33.51513671874997],[126.87285156250002,33.34116210937498],[126.32695312500002,33.2236328125]]],[[[126.23369140625002,34.370507812499994],[126.12285156250002,34.443945312500034],[126.34384765625012,34.544921875],[126.23369140625002,34.370507812499994]]],[[[126.17197265625006,34.73115234375001],[126.00751953125004,34.86748046874999],[126.07841796875002,34.914843750000045],[126.17197265625006,34.73115234375001]]],[[[128.0658203125,34.80585937500004],[128.05468750000003,34.70805664062502],[127.87343750000005,34.73496093749998],[127.8322265625001,34.87451171875],[128.0658203125,34.80585937500004]]],[[[128.74101562500007,34.798535156249955],[128.64667968750004,34.73686523437502],[128.48925781250003,34.86528320312496],[128.66796875000003,35.0087890625],[128.74101562500007,34.798535156249955]]],[[[126.52070312500004,37.73681640625003],[126.516015625,37.60468750000001],[126.42333984375003,37.62363281250006],[126.41162109374997,37.82265625000002],[126.52070312500004,37.73681640625003]]],[[[128.37460937500012,38.6234375],[129.41826171875002,37.059033203124955],[129.40351562500004,36.052148437499994],[129.57285156250006,36.05053710937503],[129.4191406250001,35.49785156249996],[129.07675781250006,35.12270507812502],[128.5109375000001,35.10097656250002],[128.44394531250012,34.87036132812503],[128.03623046875006,35.02197265625],[127.71484374999997,34.95468749999998],[127.71542968750012,34.72104492187498],[127.40429687499997,34.823095703125006],[127.47910156250012,34.625244140625],[127.324609375,34.463281249999966],[127.17343750000006,34.54614257812497],[127.24707031249997,34.755126953125],[126.89746093749997,34.438867187499966],[126.75478515625005,34.511865234374994],[126.53144531250004,34.31425781249999],[126.26445312500002,34.67324218750002],[126.52451171875006,34.697900390624966],[126.59335937500012,34.824365234374994],[126.42070312500002,34.823388671874966],[126.29111328125012,35.154150390625034],[126.61406250000007,35.57099609375004],[126.4884765625001,35.647070312500006],[126.75302734375006,35.871972656249994],[126.5404296875,36.166162109374966],[126.4876953125,36.69379882812498],[126.18085937500004,36.69160156249998],[126.16054687500005,36.77192382812501],[126.48701171875004,37.00747070312502],[126.78447265625007,36.94843749999998],[126.87207031249997,36.82446289062506],[126.97685546875002,36.93940429687501],[126.74638671875002,37.19355468750001],[126.63388671875012,37.78183593750006],[127.09033203125003,38.28388671875001],[128.03896484375,38.30854492187498],[128.37460937500012,38.6234375]]]]},"properties":{"name":"Korea","childNum":7}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[48.27539062499997,29.624316406250017],[48.17968750000003,29.611425781250063],[48.081445312499994,29.798925781250063],[48.1847656250001,29.978857421875034],[48.348242187500006,29.78266601562504],[48.27539062499997,29.624316406250017]]],[[[48.442480468750006,28.542919921874983],[47.671289062499994,28.53315429687504],[47.433203125,28.989550781250017],[46.53144531250004,29.09624023437499],[46.69375,29.259667968749966],[46.76933593750002,29.347460937500017],[46.90585937500006,29.5375],[47.14824218750002,30.0009765625],[47.64375,30.097314453125023],[47.75390624999997,30.076611328124955],[47.97871093750004,29.98281250000005],[48.00566406250002,29.835791015625034],[48.143457031249994,29.57246093750001],[47.96962890625005,29.61669921874997],[47.72265624999997,29.393017578124955],[48.0514648437501,29.355371093750023],[48.442480468750006,28.542919921874983]]]]},"properties":{"name":"Kuwait","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[102.12744140625011,22.37919921874999],[102.58251953125006,21.904296875000057],[102.66201171875008,21.676025390625057],[102.73857421875005,21.677929687500125],[102.77109375000015,21.70966796875001],[102.79824218750014,21.797949218750034],[102.81591796875,21.807373046875],[102.94960937500008,21.681347656250068],[102.85117187500009,21.26591796874999],[102.8837890625,21.202587890625068],[103.1044921875,20.89165039062499],[103.21074218749999,20.840625],[103.46357421874995,20.779833984375102],[103.6350585937501,20.697070312500102],[104.10136718750005,20.945507812500125],[104.1953125,20.91396484375008],[104.349609375,20.82109374999999],[104.58320312500001,20.646679687499955],[104.53271484375,20.554882812500125],[104.47861328124998,20.529589843750102],[104.40781250000015,20.485742187500023],[104.36777343750015,20.441406250000057],[104.39218750000015,20.424755859375068],[104.49619140625003,20.41367187499992],[104.61884765624995,20.374511718750114],[104.65644531250001,20.328515624999966],[104.66191406250005,20.289013671875125],[104.67695312500007,20.224707031249977],[104.69873046875006,20.205322265625114],[104.84785156250007,20.202441406250045],[104.88867187500006,20.169091796875023],[104.92919921874994,20.082812500000045],[104.92792968750007,20.01811523437499],[104.81513671875001,19.90400390625001],[104.80175781250011,19.836132812500068],[104.74316406250006,19.754736328124977],[104.58789062500006,19.61875],[104.54628906250014,19.610546875000068],[104.25986328125003,19.685498046875068],[104.06279296875005,19.678417968750068],[104.03203124999999,19.67514648437492],[104.0134765625001,19.646484374999943],[104.05156250000005,19.564160156250068],[104.06289062500002,19.482568359375136],[104.02753906250013,19.420458984375102],[103.93203125000002,19.366064453125034],[103.89638671875002,19.339990234375023],[103.89160156249994,19.30498046874999],[105.146484375,18.650976562499977],[105.14541015625014,18.616796874999977],[105.08701171875015,18.49624023437508],[105.11455078125005,18.405273437500057],[105.45820312500007,18.154296875000057],[105.51855468750011,18.077441406250045],[105.58847656250015,17.983691406249932],[105.69140625,17.737841796874932],[106.00625,17.415283203124943],[106.26953125,17.216796875000057],[106.33339843750002,17.14370117187508],[106.42597656250007,17.00253906250009],[106.50224609374999,16.9541015625],[106.52597656250003,16.876611328125023],[106.53369140625,16.821044921875057],[106.54619140625005,16.650732421874977],[106.65644531250013,16.492626953125125],[106.73955078124999,16.452539062500136],[106.79160156250015,16.490332031249977],[106.83242187500008,16.526269531250023],[106.85107421875,16.515625],[106.89277343750013,16.396533203125102],[106.93066406250006,16.353125],[107.39638671875008,16.04301757812499],[107.39199218750008,15.951660156250057],[107.36064453125005,15.921728515624977],[107.18886718750008,15.838623046875114],[107.16591796875002,15.802490234375],[107.27939453125003,15.618701171875045],[107.33876953125002,15.560498046875125],[107.56425781249999,15.3916015625],[107.62167968750015,15.309863281250045],[107.653125,15.255224609375091],[107.63369140625008,15.18984375000008],[107.58964843749999,15.118457031250102],[107.55527343750009,15.057031250000023],[107.48037109375014,14.979882812500136],[107.5046875000001,14.91591796875008],[107.52451171875003,14.871826171874943],[107.51376953124998,14.817382812500057],[107.51943359375008,14.705078125000114],[107.46513671875005,14.664990234375125],[107.41474609375007,14.56289062500008],[107.37988281250006,14.555322265625136],[107.29267578125007,14.592382812500034],[107.109375,14.416699218749955],[107.06240234375008,14.415771484374943],[107.03017578125008,14.425683593750023],[106.99218749999994,14.39101562500008],[106.93808593750015,14.327343750000068],[106.91318359375003,14.329394531249932],[106.81992187500003,14.314697265624943],[106.7834960937501,14.335107421875023],[106.73818359375008,14.387744140625102],[106.66542968750002,14.441308593750023],[106.59921875000003,14.479394531250136],[106.56367187500007,14.505078125000011],[106.53115234375002,14.549414062499977],[106.50146484375,14.578222656250034],[106.22539062500005,14.476220703125023],[106.1907226562501,14.388134765625011],[106.16523437500007,14.372363281249989],[106.00839843750009,14.357177734375114],[105.97890625000014,14.343017578125057],[106.00410156250013,14.262890625000068],[106.09667968750011,14.127099609375136],[106.12470703124995,14.049121093750045],[106.06679687500008,13.921191406250102],[105.90449218750007,13.924511718750068],[105.83144531250008,13.976611328124989],[105.73974609375006,14.084960937500057],[105.5315429687501,14.156152343750023],[105.35019531250009,14.109570312500125],[105.24570312500015,14.200537109374977],[105.20703125000006,14.259375],[105.18554687499994,14.319091796875],[105.18330078125001,14.346240234374989],[105.24365234375006,14.367871093749955],[105.34218750000008,14.416699218749955],[105.42265624999993,14.471630859374955],[105.47558593750006,14.530126953124977],[105.49736328125005,14.590673828125034],[105.52304687500015,14.843310546874989],[105.54667968749999,14.932470703125034],[105.53339843750013,15.041601562500091],[105.49042968750007,15.127587890625023],[105.49042968750007,15.256591796875],[105.615625,15.488281249999943],[105.63886718750013,15.585937499999943],[105.64101562500002,15.656542968749932],[105.62207031250006,15.699951171875114],[105.39892578125011,15.829882812500102],[105.40625,15.987451171875023],[105.33066406250003,16.037890625000045],[105.1487304687501,16.09355468749999],[105.04716796874999,16.16025390625009],[104.81933593749994,16.466064453125057],[104.75058593750015,16.647558593750034],[104.74355468750014,16.884375],[104.75898437500013,17.0771484375],[104.81601562499998,17.30029296875],[104.73964843750008,17.461669921875],[104.428125,17.698974609375057],[104.32265625000002,17.815820312500023],[104.19619140625002,17.988378906250034],[104.04873046875002,18.216699218749966],[103.94960937500008,18.318994140625023],[103.89882812500002,18.295312500000023],[103.79228515624999,18.31650390625009],[103.62968750000005,18.382568359375057],[103.48798828124995,18.41816406250001],[103.36699218750005,18.42333984375],[103.28828124999995,18.408398437499955],[103.25175781249999,18.373486328125125],[103.24892578125014,18.338964843750034],[103.27958984374999,18.304980468750045],[103.26318359375,18.278466796875136],[103.19970703125006,18.25947265625001],[103.14853515625009,18.221728515624932],[103.09121093750014,18.13823242187499],[103.05136718750003,18.02851562500001],[102.80742187500005,17.945556640625],[102.71757812500005,17.892236328125136],[102.67519531250014,17.851757812500068],[102.68007812500008,17.824121093750136],[102.66064453125,17.8179687499999],[102.61679687500015,17.833349609375034],[102.59824218750009,17.926757812500057],[102.55253906249999,17.965087890625057],[102.4587890625001,17.984619140624943],[102.35185546874999,18.045947265625045],[102.14824218750005,18.203857421875057],[102.10146484375014,18.21064453125001],[102.03457031250002,18.169824218750023],[101.94746093750001,18.081494140624955],[101.87548828125011,18.046435546874932],[101.81865234375005,18.064648437500125],[101.77480468750002,18.033398437500125],[101.6875,17.889404296875114],[101.56367187500001,17.820507812500125],[101.55507812500002,17.812353515625034],[101.41367187500015,17.71875],[101.16748046875011,17.4990234375],[101.10517578125001,17.479541015625102],[100.9084960937501,17.583886718750023],[101.14394531250008,18.14262695312499],[101.1375,18.286865234375057],[101.0505859375001,18.407031250000045],[101.04697265625003,18.441992187500034],[101.28632812499995,18.977148437500034],[101.19755859374999,19.327929687500045],[101.22080078125015,19.486621093750045],[101.21191406250011,19.548339843750057],[100.51357421875008,19.553466796875],[100.39765625000013,19.756103515625057],[100.51953125000006,20.177929687500068],[100.31796875000003,20.385888671875136],[100.2180664062501,20.339599609375114],[100.13974609375015,20.245410156250102],[100.11494140625007,20.25766601562492],[100.12246093750002,20.316650390625057],[100.12968750000005,20.372216796875023],[100.1838867187501,20.589111328124943],[100.2493164062501,20.730273437499932],[100.32607421875008,20.795703124999932],[100.40742187499995,20.823242187500057],[100.56513671875013,20.82509765625008],[100.62294921875002,20.85957031250001],[100.61767578125,20.87924804687509],[100.54931640625011,20.884228515625068],[100.5222656250001,20.921923828125102],[100.53613281250006,20.992382812500068],[100.703125,21.25136718750008],[101.0803710937501,21.46865234375008],[101.13886718750013,21.567480468749977],[101.19667968750002,21.522070312499977],[101.17539062500009,21.407519531250102],[101.21992187500013,21.342431640625136],[101.21181640625008,21.278222656250023],[101.22441406249999,21.22373046874992],[101.24785156249993,21.197314453125045],[101.28144531250007,21.184130859375045],[101.44355468750001,21.230810546874977],[101.54238281250008,21.234277343750136],[101.70478515625013,21.150146484375057],[101.728125,21.15639648437508],[101.78349609374999,21.204150390625045],[101.8005859375001,21.212597656249955],[101.7229492187501,21.314941406250057],[101.74726562500007,21.60576171874999],[101.7439453125001,21.77797851562508],[101.73652343750001,21.826513671874977],[101.52451171874998,22.253662109375],[101.56787109375011,22.2763671875],[101.6199218750001,22.327441406250102],[101.67148437500009,22.462304687500023],[101.70751953125,22.486572265625],[101.73876953125011,22.495263671874966],[101.75996093750001,22.490332031250034],[101.841796875,22.388476562500102],[102.02441406250006,22.439208984375114],[102.09150390625007,22.412255859375136],[102.12744140625011,22.37919921874999]]]},"properties":{"name":"Lao PDR","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[35.869140625,33.43173828125],[35.411230468750006,33.07568359375],[35.10859375000001,33.08369140625],[35.64785156250002,34.2482421875],[35.97626953125001,34.629199218749996],[36.383886718750006,34.65791015625],[36.32988281250002,34.499609375],[36.50439453125,34.432373046875],[36.5849609375,34.221240234374996],[36.27783203125,33.92529296875],[36.36503906250002,33.83935546875],[35.98613281250002,33.75263671875],[36.03447265625002,33.58505859375],[35.869140625,33.43173828125]]]},"properties":{"name":"Lebanon","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-8.486425781249977,7.558496093749994],[-8.408740234374989,7.411816406249997],[-8.324511718749989,6.920019531249991],[-8.587890625,6.490527343749989],[-8.287109375,6.319042968749997],[-7.981591796874994,6.2861328125],[-7.888623046874983,6.23486328125],[-7.800927734374994,6.038916015624991],[-7.730371093749994,5.919042968749991],[-7.636132812499994,5.90771484375],[-7.454394531249989,5.84130859375],[-7.39990234375,5.550585937499989],[-7.585058593749977,4.916748046875],[-7.574658203124983,4.572314453124989],[-7.544970703124989,4.351318359375],[-8.259033203125,4.589990234374994],[-9.132177734374977,5.054638671874997],[-10.2763671875,6.07763671875],[-11.291601562499977,6.688232421875],[-11.507519531249983,6.906542968749989],[-11.267675781249977,7.232617187499997],[-10.878076171874994,7.538232421874994],[-10.6474609375,7.759375],[-10.570849609374989,8.071142578124991],[-10.516748046874994,8.125292968749989],[-10.359814453124983,8.187939453124997],[-10.283203125,8.485156249999989],[-10.233056640624994,8.488818359374989],[-10.147412109374983,8.519726562499997],[-10.064355468749994,8.429882812499997],[-9.781982421875,8.537695312499991],[-9.518261718749983,8.34609375],[-9.369140625,7.703808593749997],[-9.463818359374983,7.415869140624991],[-9.11757812499999,7.215917968749991],[-8.8896484375,7.2626953125],[-8.659765624999977,7.688378906249994],[-8.486425781249977,7.558496093749994]]]},"properties":{"name":"Liberia","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[25.150488281250006,31.654980468749997],[24.85273437500001,31.334814453125],[24.96142578125,30.678515625],[24.703222656250006,30.201074218749994],[24.980273437500017,29.181884765625],[24.980273437500017,25.5888671875],[24.980273437500017,21.995849609375],[24.9794921875,20.002587890624994],[23.980273437500017,19.99594726562499],[23.980273437500017,19.496630859375003],[20.14765625000001,21.38925781249999],[15.984082031250011,23.445214843749994],[14.97900390625,22.99619140624999],[14.215527343750011,22.619677734375003],[13.48125,23.18017578125],[11.967871093750006,23.517871093750003],[11.507617187500017,24.314355468749994],[10.686132812500006,24.55136718749999],[10.395898437500023,24.485595703125],[10.255859375,24.591015625],[10.000683593750011,25.332080078125003],[9.4482421875,26.067138671875],[9.491406250000011,26.333740234375],[9.883203125000023,26.630810546874997],[9.74755859375,27.330859375],[9.916015625,27.785693359374996],[9.805273437500006,29.176953125],[9.310253906250011,30.115234375],[9.51875,30.229394531249994],[9.89501953125,30.3873046875],[9.932519531250023,30.425341796874996],[10.059765625000011,30.580078125],[10.21640625,30.783203125],[10.114941406250011,31.463769531249994],[10.274609375000011,31.684960937499994],[10.475781250000011,31.736035156249997],[10.60888671875,31.929541015625],[10.826367187500011,32.0806640625],[11.005175781250017,32.172705078125],[11.168261718750017,32.256738281249994],[11.358007812500006,32.34521484375],[11.504980468750006,32.413671875],[11.535937500000017,32.47333984375],[11.533789062500006,32.524951171874996],[11.453906250000017,32.642578125],[11.453906250000017,32.781689453125],[11.459179687500011,32.897363281249994],[11.467187500000023,32.965722656249994],[11.504589843750011,33.181933593749996],[11.657128906250023,33.118896484375],[11.8134765625,33.093701171875],[12.279882812500006,32.858544921874994],[12.753515625,32.801074218749996],[13.283496093750017,32.9146484375],[15.176562500000017,32.391162109374996],[15.705957031250023,31.426416015624994],[17.830468750000023,30.927587890625],[18.669824218750023,30.415673828124994],[19.12373046875001,30.26611328125],[19.713281250000023,30.48837890625],[20.11152343750001,30.963720703125],[19.926367187500006,31.817529296874994],[20.121484375000023,32.21875],[20.62109375,32.58017578125],[21.63593750000001,32.937304687499996],[22.187402343750023,32.918261718749996],[23.090625,32.61875],[23.10625,32.331445312499994],[23.28632812500001,32.213818359375],[24.129687500000017,32.009228515625],[24.878515625,31.984277343749994],[25.150488281250006,31.654980468749997]]]},"properties":{"name":"Libya","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-60.89521484375,13.821972656249997],[-60.951416015625,13.717578125],[-61.073144531249994,13.865576171874991],[-60.908105468749994,14.09335937499999],[-60.89521484375,13.821972656249997]]]},"properties":{"name":"Saint Lucia","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[79.87480468750002,9.050732421875026],[79.90371093750005,8.975],[79.74765625000006,9.104589843749991],[79.87480468750002,9.050732421875026]]],[[[79.98232421875,9.812695312500011],[80.25283203125005,9.796337890625054],[80.71113281250004,9.366357421875023],[81.226953125,8.50551757812498],[81.37285156250002,8.431445312499989],[81.42216796875007,8.147851562500023],[81.87412109375012,7.288330078124986],[81.86142578125012,6.901269531249994],[81.63740234375004,6.425146484374991],[80.72412109375003,5.97905273437496],[80.26738281250007,6.009765625],[80.09531250000012,6.153173828125006],[79.859375,6.829296874999983],[79.71298828125012,8.18232421875004],[79.74980468750007,8.294238281250003],[79.78349609375007,8.018457031250051],[79.92890625000004,8.899218749999974],[80.09960937499997,9.209960937500043],[80.08632812500005,9.577832031250026],[80.42832031250006,9.480957031250014],[80.04580078125005,9.649902343749972],[79.98232421875,9.812695312500011]]]]},"properties":{"name":"Sri Lanka","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[28.646875,-30.1265625],[28.39208984375,-30.147558593750006],[28.128710937500017,-30.52509765625001],[28.05683593750001,-30.63105468750001],[27.753125,-30.6],[27.364062500000017,-30.27919921875001],[27.19355468750001,-29.94130859375001],[27.056933593750017,-29.625585937500006],[27.29453125,-29.519335937500003],[27.73554687500001,-28.940039062500006],[27.959863281250023,-28.873339843750003],[28.084375,-28.77998046875001],[28.23261718750001,-28.701269531250006],[28.471875,-28.615820312500006],[28.583398437500023,-28.594140625],[28.625781250000017,-28.58173828125001],[29.301367187500006,-29.08984375],[29.38671875,-29.31972656250001],[29.34882812500001,-29.441992187500006],[29.293554687500006,-29.56689453125],[29.1421875,-29.700976562500003],[29.098046875000023,-29.919042968750006],[28.646875,-30.1265625]]]},"properties":{"name":"Lesotho","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[20.957812500000074,55.27890625000006],[20.89980468750008,55.286669921875045],[21.11484375,55.61650390624999],[20.957812500000074,55.27890625000006]]],[[[25.573046875000017,54.139892578125],[25.497363281250045,54.17524414062501],[25.52734375000003,54.21513671874996],[25.505664062500045,54.26494140624999],[25.46113281250004,54.29277343749996],[25.179492187500017,54.214257812499966],[25.111425781250006,54.15493164062505],[25.04609375000004,54.13305664062503],[24.869531250000023,54.14516601562502],[24.82568359374997,54.118994140625006],[24.78925781250001,53.99824218750001],[24.768164062499977,53.97465820312499],[24.31796875,53.892968749999966],[24.236621093750045,53.91997070312496],[24.19130859375005,53.95043945312503],[23.559082031250057,53.91982421875002],[23.484667968750074,53.939794921875006],[23.453613281250057,54.14345703125002],[23.3701171875,54.20048828124999],[23.282324218750063,54.240332031250034],[23.17031250000008,54.28144531249998],[23.0875,54.299462890624994],[23.042187500000068,54.30419921875],[23.01552734375005,54.34833984375001],[22.976757812500068,54.36635742187505],[22.89394531250008,54.390527343749994],[22.82373046874997,54.39580078124999],[22.766210937499977,54.356787109375034],[22.679882812500068,54.493017578125006],[22.684472656250023,54.56293945312504],[22.82470703125,54.87128906249998],[22.56728515625005,55.05913085937496],[22.072363281250034,55.06367187499998],[21.235742187500023,55.26411132812498],[21.237890625000034,55.455029296874955],[21.06191406250005,55.81342773437498],[21.053808593750006,56.02294921875003],[21.04609375000004,56.07006835937503],[21.31464843750004,56.18813476562502],[21.65351562500004,56.314550781250006],[22.084570312500034,56.40673828125006],[22.875585937500063,56.39643554687501],[22.96826171875003,56.38041992187502],[23.042968750000057,56.324072265625006],[23.119824218749983,56.330664062500006],[23.195898437500034,56.36713867187498],[24.120703125000063,56.26425781249998],[24.90302734375001,56.398193359375],[25.069921875,56.20039062500004],[25.663183593750063,56.104833984375006],[26.593554687500074,55.66752929687502],[26.590820312500057,55.62265625],[26.56660156250001,55.546484375000034],[26.51923828125004,55.448144531249994],[26.469531250000045,55.371923828125006],[26.457617187500006,55.342480468749955],[26.49531250000004,55.31801757812502],[26.68125,55.30644531249999],[26.76015625000008,55.29335937499999],[26.775683593750045,55.27309570312502],[26.601171875000034,55.130175781250045],[26.291796875000074,55.13959960937501],[26.250781250000045,55.12451171875006],[26.175195312500023,55.003271484375034],[26.092968750000068,54.96230468750005],[25.964453124999977,54.947167968749966],[25.85927734375005,54.91928710937498],[25.722460937500074,54.71787109374998],[25.731640625000068,54.59038085937502],[25.72480468750001,54.564257812500045],[25.68515625,54.53579101562502],[25.62031250000004,54.46040039062501],[25.56757812500004,54.377050781250006],[25.54736328125,54.33183593750002],[25.55751953125005,54.310693359374994],[25.702539062499994,54.29296875],[25.765234374999977,54.179785156250034],[25.573046875000017,54.139892578125]]]]},"properties":{"name":"Lithuania","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[6.4873046875,49.798486328124994],[6.344335937500006,49.452734375],[6.181054687500023,49.498925781249994],[6.119921875000017,49.485205078125],[6.074121093750023,49.454638671874996],[6.011425781250011,49.445458984374994],[5.95947265625,49.454638671874996],[5.928906250000011,49.4775390625],[5.9013671875,49.48974609375],[5.823437500000011,49.505078125],[5.789746093750011,49.53828125],[5.776710379464286,49.639953962053575],[5.744042968750023,49.91962890625],[5.7880859375,49.961230468749996],[5.8173828125,50.0126953125],[5.866894531250011,50.0828125],[5.976269531250011,50.1671875],[6.089062500000011,50.154589843749996],[6.110058593750011,50.123779296875],[6.116503906250017,50.120996093749994],[6.109765625000023,50.034375],[6.13818359375,49.97431640625],[6.204882812500017,49.91513671875],[6.272327008928583,49.887234933035714],[6.4873046875,49.798486328124994]]]},"properties":{"name":"Luxembourg","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[28.14794921875,56.142919921875],[27.576757812500006,55.798779296875],[27.052539062500017,55.83056640625],[26.593554687500017,55.667529296874996],[25.663183593750006,56.104833984375],[25.069921875,56.200390625],[24.90302734375001,56.398193359375],[24.120703125,56.2642578125],[23.81269531250001,56.329248046875],[23.195898437500006,56.367138671875],[23.11982421875001,56.3306640625],[23.04296875,56.324072265625],[22.875585937500006,56.396435546875],[22.084570312500006,56.40673828125],[21.730566406250006,56.325976562499996],[21.65351562500001,56.31455078125],[21.31464843750001,56.188134765625],[21.04609375000001,56.070068359375],[21.0712890625,56.82373046875],[21.72871093750001,57.57099609375],[22.554589843750023,57.724267578125],[23.28730468750001,57.08974609375],[23.647753906250017,56.971044921875],[24.382617187500017,57.250048828124996],[24.322558593750017,57.87060546875],[24.3625,57.866162109375],[24.458886718750023,57.907861328125],[25.11103515625001,58.063427734375],[25.27265625000001,58.009375],[25.66015625,57.920166015625],[26.29804687500001,57.60107421875],[26.532617187500023,57.531005859375],[26.96601562500001,57.609130859375],[27.187109375,57.538330078125],[27.326562500000023,57.52548828125],[27.4697265625,57.5240234375],[27.538671875,57.42978515625],[27.796875,57.316943359374996],[27.82861328125,57.293310546875],[27.838281250000023,57.247705078125],[27.83027343750001,57.194482421875],[27.639453125000017,56.845654296875],[27.806054687500023,56.86708984375],[27.8486328125,56.85341796875],[27.89208984375,56.741064453125],[28.00751953125001,56.599853515625],[28.103125,56.545703125],[28.11083984375,56.510693359375],[28.169238281250017,56.386865234375],[28.191699218750017,56.315576171875],[28.202050781250023,56.260400390625],[28.14794921875,56.142919921875]]]},"properties":{"name":"Latvia","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[28.2125,45.450439453125],[28.07470703125,45.598974609375],[28.23945312500001,46.6408203125],[28.07177734375,46.978417968749994],[27.614062500000017,47.34052734375],[26.980761718750017,48.155029296875],[26.618945312500017,48.25986328125],[26.640429687500017,48.294140625],[26.847070312500023,48.387158203125],[26.90058593750001,48.371923828125],[27.228515625,48.371435546875],[27.549218750000023,48.477734375],[28.34052734375001,48.144433593749994],[28.42304687500001,48.146875],[29.125390625000023,47.96455078125],[29.134863281250006,47.489697265625],[29.455664062500006,47.292626953124994],[29.57197265625001,46.964013671874994],[29.7197265625,46.88291015625],[29.877832031250023,46.82890625],[29.942480468750006,46.723779296874994],[29.93476562500001,46.625],[29.92431640625,46.538867187499996],[30.13105468750001,46.423095703125],[30.07568359375,46.377832031249994],[29.878027343750006,46.360205078125],[29.837890625,46.350537109375],[29.458789062500017,46.453759765624994],[29.30488281250001,46.466601562499996],[29.22382812500001,46.376953125],[29.20458984375,46.379345703125],[29.20078125,46.50498046875],[29.18623046875001,46.523974609374996],[29.146289062500017,46.526904296874996],[28.958398437500023,46.45849609375],[28.92744140625001,46.424121093749996],[28.930566406250023,46.362255859375],[28.94375,46.288427734375],[29.00625,46.17646484375],[28.971875,46.12763671875],[28.94775390625,46.049951171874994],[28.849511718750023,45.978662109374994],[28.73876953125,45.937158203124994],[28.729296875000017,45.852001953125],[28.667578125,45.793847656249994],[28.562304687500017,45.735791015625],[28.491601562500023,45.665771484375],[28.4990234375,45.517724609374994],[28.310351562500017,45.498583984374996],[28.26484375000001,45.48388671875],[28.2125,45.450439453125]]]},"properties":{"name":"Moldova","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[49.936425781249994,-16.90292968750002],[49.82402343750002,-17.08652343750002],[50.02304687500006,-16.6953125],[49.936425781249994,-16.90292968750002]]],[[[48.3421875,-13.363867187500034],[48.21191406250003,-13.385253906249957],[48.191210937500074,-13.259960937500011],[48.308886718750074,-13.198242187499957],[48.3421875,-13.363867187500034]]],[[[49.53828125000004,-12.432128906250014],[49.9375,-13.072265624999957],[50.23535156249997,-14.732031249999963],[50.482714843750074,-15.385644531249994],[50.20898437499997,-15.960449218750028],[50.02041015625005,-15.801757812500028],[49.89257812500003,-15.457714843750011],[49.664355468750074,-15.521582031249977],[49.83906250000004,-16.486523437499997],[49.76718750000006,-16.815136718749983],[49.44931640625006,-17.240625],[49.477832031250074,-17.89853515624999],[49.362890625,-18.336328125],[47.934472656249994,-22.393945312500023],[47.55800781250005,-23.874609374999963],[47.17734375,-24.787207031249977],[46.72851562499997,-25.14990234374997],[46.15869140624997,-25.230371093750023],[45.5080078125001,-25.56318359374997],[45.2057617187501,-25.57050781250004],[44.0353515625001,-24.995703125],[43.670019531250006,-24.30029296875],[43.722265625,-23.529687500000037],[43.2648437500001,-22.38359375],[43.29052734374997,-21.93251953124998],[43.50185546875005,-21.356445312499957],[43.800195312499994,-21.179199218749986],[44.40468750000005,-19.922070312500026],[44.44882812500006,-19.42871093749997],[44.23876953124997,-19.075195312499986],[44.23310546875004,-18.740625],[44.04003906249997,-18.288476562500023],[43.979394531249994,-17.3916015625],[44.42138671874997,-16.70263671874997],[44.476171875,-16.217285156249957],[44.90917968749997,-16.174511718750026],[45.2228515625001,-15.95048828124996],[45.3421875,-16.03671875000002],[45.598242187500006,-15.992578125],[45.70019531249997,-15.813769531249989],[46.157519531250074,-15.738281249999972],[46.3996093750001,-15.924609375000017],[46.331445312499994,-15.713671875000031],[46.47509765625003,-15.513476562500003],[46.942285156249994,-15.219042968749974],[47.09921875,-15.43417968750002],[47.092578125000074,-15.150097656249969],[47.35195312500005,-14.766113281249986],[47.46474609375005,-14.713281249999966],[47.47832031250002,-15.009375],[47.77402343750006,-14.63671875],[47.964160156250074,-14.672558593750026],[47.773339843749994,-14.369921875],[47.995507812499994,-13.960449218749986],[47.88359375000002,-13.807519531250009],[47.94101562500006,-13.662402343750017],[48.03984375000002,-13.596289062499963],[48.25527343750005,-13.719335937499977],[48.796484375,-13.267480468750023],[48.91943359375003,-12.839062499999969],[48.78632812500004,-12.470898437500011],[48.931738281250006,-12.4390625],[49.20703124999997,-12.079589843749957],[49.53828125000004,-12.432128906250014]]]]},"properties":{"name":"Madagascar","childNum":3}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-91.68369140624998,18.677343750000034],[-91.81611328124995,18.675878906250006],[-91.53671874999998,18.760009765625],[-91.68369140624998,18.677343750000034]]],[[[-86.93964843750001,20.303320312500006],[-86.97797851562498,20.489794921875074],[-86.76328124999995,20.579052734374955],[-86.93964843750001,20.303320312500006]]],[[[-106.50224609374999,21.61083984375003],[-106.60703124999993,21.561474609374983],[-106.63935546874995,21.697851562499977],[-106.50224609374999,21.61083984375003]]],[[[-110.56738281249994,25.003466796875017],[-110.5388671875,24.89155273437504],[-110.69926757812499,25.081445312499994],[-110.56738281249994,25.003466796875017]]],[[[-112.05727539062498,24.545703125000017],[-112.29677734375002,24.789648437500063],[-112.15942382812501,25.28564453125003],[-112.19501953124998,24.841064453125057],[-112.05727539062498,24.545703125000017]]],[[[-111.10029296874998,26.020605468750006],[-111.224658203125,25.83588867187504],[-111.18291015625002,26.040625],[-111.10029296874998,26.020605468750006]]],[[[-115.17060546875001,28.06938476562496],[-115.35292968750002,28.103955078124983],[-115.23354492187495,28.36835937500004],[-115.17060546875001,28.06938476562496]]],[[[-112.20307617187503,29.00532226562504],[-112.27841796875,28.769335937500017],[-112.51406249999997,28.847607421874955],[-112.42353515625,29.203662109375017],[-112.28505859374994,29.240429687499955],[-112.20307617187503,29.00532226562504]]],[[[-113.15561523437502,29.05224609375],[-113.49633789062497,29.30761718749997],[-113.58720703125002,29.57304687499996],[-113.20214843749999,29.301855468750034],[-113.15561523437502,29.05224609375]]],[[[-97.14624023437494,25.961474609375045],[-97.66767578124995,24.389990234374977],[-97.84248046874995,22.510302734375017],[-97.76328124999998,22.105859374999966],[-97.31450195312496,21.56420898437503],[-97.40917968749997,21.272558593750034],[-97.38344726562497,21.56669921874999],[-97.75380859375002,22.02666015624999],[-97.18632812499996,20.717041015625],[-96.45605468749994,19.869775390624966],[-96.28955078124994,19.34375],[-95.778125,18.805517578125034],[-95.92036132812495,18.81958007812497],[-95.62680664062503,18.690576171874994],[-95.71982421874998,18.768359375000017],[-95.18183593749995,18.700732421875017],[-94.79814453124996,18.51459960937501],[-94.45976562499993,18.166650390624994],[-93.55234375,18.430468750000017],[-92.88476562499997,18.468652343749966],[-92.44101562499998,18.67529296874997],[-91.97377929687502,18.715869140625074],[-91.91357421875,18.52851562500001],[-91.53398437499993,18.45654296875],[-91.27524414062498,18.62446289062501],[-91.34306640624996,18.900585937499955],[-91.43666992187502,18.889794921874966],[-90.73925781249994,19.352246093749955],[-90.69316406249996,19.729882812499966],[-90.49169921874997,19.94677734375003],[-90.353125,21.009423828124966],[-89.81977539062495,21.274609374999983],[-88.46669921874997,21.569384765625017],[-88.0068359375,21.604052734375045],[-87.25087890625,21.44697265625004],[-87.18828124999993,21.546435546875045],[-87.36850585937498,21.57373046875],[-87.034765625,21.592236328124955],[-86.824072265625,21.421679687500017],[-86.77177734374999,21.150537109375023],[-86.92622070312493,20.786474609375034],[-87.42138671875,20.23139648437501],[-87.44174804687498,19.861523437499983],[-87.68769531249998,19.63710937499999],[-87.6453125,19.55390625000001],[-87.42475585937498,19.583349609375063],[-87.65869140625003,19.352343750000074],[-87.65576171874997,19.25786132812499],[-87.50107421874998,19.287792968749983],[-87.76181640624998,18.446142578125006],[-87.88198242187497,18.27387695312501],[-88.05644531249996,18.524462890625074],[-88.03173828125,18.838916015625017],[-88.29565429687494,18.47241210937503],[-88.52299804687499,18.445898437500063],[-88.80634765624998,17.965527343749983],[-89.13354492187503,17.970800781249977],[-89.16147460937503,17.81484375],[-90.98916015624997,17.81640624999997],[-90.99296874999993,17.25244140625],[-91.19550781249998,17.254101562499983],[-91.40961914062501,17.255859375],[-90.975830078125,16.867822265624994],[-90.710693359375,16.708105468750034],[-90.65996093749996,16.630908203125045],[-90.634375,16.565136718749955],[-90.63408203125002,16.51074218749997],[-90.57578124999995,16.467822265625017],[-90.47109374999994,16.439550781250034],[-90.41699218750003,16.391015625000023],[-90.41699218750003,16.351318359375],[-90.45014648437493,16.261376953124994],[-90.45986328124997,16.16235351562497],[-90.44716796874994,16.07270507812501],[-90.52197265625,16.07119140625005],[-90.70322265624998,16.07104492187503],[-90.97958984374998,16.07080078124997],[-91.433984375,16.070458984374994],[-91.736572265625,16.070166015625006],[-91.95722656250001,15.703222656250034],[-92.08212890624998,15.495556640625011],[-92.18715820312497,15.320898437499963],[-92.07480468749998,15.074218749999972],[-92.09873046874998,15.026757812499994],[-92.14423828125001,15.001953125],[-92.158544921875,14.963574218749997],[-92.23515625,14.545410156249986],[-93.91606445312493,16.053564453125006],[-94.374169921875,16.284765625000034],[-94.426416015625,16.22626953125001],[-94.00126953124996,16.018945312499966],[-94.66152343750002,16.20190429687503],[-94.58710937499995,16.315820312499966],[-94.79082031249999,16.28715820312499],[-94.85869140624996,16.41972656249999],[-95.02084960937503,16.277636718750017],[-94.79941406249995,16.20966796875001],[-95.134375,16.17695312500001],[-96.21357421874993,15.693066406250011],[-96.80795898437495,15.726416015624977],[-97.18466796874998,15.909277343750006],[-97.75478515624994,15.966845703125017],[-98.52031249999993,16.30483398437505],[-98.76220703125,16.534765624999977],[-99.69067382812499,16.719628906249994],[-100.847802734375,17.20048828124999],[-101.91870117187494,17.959765625000045],[-102.69956054687495,18.062841796875006],[-103.44160156249995,18.32539062500001],[-103.91245117187496,18.828466796875006],[-104.9384765625,19.309375],[-105.482080078125,19.97607421875003],[-105.66943359374997,20.385595703124977],[-105.26015625,20.579052734374955],[-105.32705078124994,20.752978515625045],[-105.51083984374999,20.808740234375023],[-105.23706054687499,21.119189453125045],[-105.20869140624998,21.490820312499977],[-105.43144531249997,21.618261718750006],[-105.64912109375001,21.988085937500045],[-105.64550781249999,22.32690429687497],[-105.79179687500003,22.627490234375017],[-106.93549804687497,23.88125],[-107.76494140625002,24.47192382812497],[-107.52724609375001,24.36005859375001],[-107.51191406249998,24.489160156250023],[-107.95117187499994,24.614892578124966],[-108.28076171874994,25.08154296875],[-108.05146484374995,25.067041015624994],[-108.69638671874998,25.382910156250034],[-108.78725585937502,25.53803710937501],[-109.02880859375003,25.48046875000003],[-108.886572265625,25.733447265625045],[-109.19648437499998,25.59252929687503],[-109.38496093750001,25.727148437500006],[-109.42563476562495,26.032568359375063],[-109.19970703125003,26.30522460937499],[-109.11669921874999,26.25273437499996],[-109.27626953125,26.533886718749955],[-109.48286132812498,26.710351562500023],[-109.75478515624995,26.702929687500017],[-109.94399414062495,27.079345703125057],[-110.37729492187495,27.233300781249966],[-110.59267578124995,27.544335937500023],[-110.52988281249995,27.864208984374983],[-111.12138671875002,27.966992187499983],[-112.16176757812495,29.018896484375034],[-113.05766601562496,30.651025390625023],[-113.04672851562495,31.17924804687499],[-113.62348632812494,31.34589843750001],[-113.75942382812501,31.557763671874994],[-113.94775390625001,31.62934570312501],[-114.14931640624995,31.507373046875045],[-114.93359374999994,31.900732421874977],[-114.78989257812498,31.647119140624994],[-114.88188476562499,31.156396484375023],[-114.55048828124997,30.02226562499999],[-113.75546875,29.367480468750017],[-113.49970703124995,28.92670898437501],[-113.20556640624997,28.798779296874955],[-113.09365234375001,28.511767578125017],[-112.870849609375,28.42421875000005],[-112.73403320312501,27.825976562500017],[-112.32919921874996,27.52343750000003],[-111.86264648437495,26.678515625000017],[-111.6994140625,26.58095703125005],[-111.79526367187499,26.8796875],[-111.56967773437495,26.707617187500006],[-111.29160156249996,25.78979492187497],[-110.68676757812501,24.867675781250057],[-110.65932617187502,24.34145507812505],[-110.36743164062497,24.100488281249994],[-110.30375976562497,24.339453125],[-110.02280273437502,24.17460937499999],[-109.6765625,23.66157226562501],[-109.42084960937495,23.480126953124994],[-109.49570312500002,23.159814453125023],[-110.00625,22.894042968750057],[-110.3626953125,23.60493164062501],[-111.68291015625002,24.555810546875023],[-111.80249023437494,24.542529296875074],[-112.07255859374999,24.84003906250001],[-112.06987304687497,25.572851562500006],[-112.37724609374997,26.21391601562496],[-113.02075195312499,26.58325195312497],[-113.15581054687496,26.94624023437504],[-113.27226562499997,26.79096679687501],[-113.59853515625001,26.721289062500034],[-113.84096679687502,26.966503906249983],[-114.44526367187503,27.218164062499994],[-114.53989257812495,27.431103515624955],[-114.99350585937499,27.736035156249983],[-115.03647460937495,27.84184570312496],[-114.57001953124995,27.78393554687497],[-114.30058593749995,27.87299804687501],[-114.30224609375003,27.775732421875006],[-114.0693359375,27.67568359375005],[-114.15839843750003,27.919677734375],[-114.26586914062499,27.934472656249994],[-114.04848632812502,28.42617187499999],[-114.93730468749999,29.35161132812496],[-115.67382812500003,29.756396484375017],[-116.06215820312501,30.80415039062504],[-116.29628906250001,30.97050781249999],[-116.33344726562494,31.202783203124994],[-116.66215820312495,31.56489257812504],[-116.72207031249998,31.734570312499955],[-116.62080078124995,31.85107421874997],[-116.84799804687496,31.997363281250045],[-117.12827148437495,32.533349609374994],[-114.72475585937495,32.71533203125003],[-114.83593749999994,32.50830078125003],[-111.0419921875,31.32421875000003],[-108.21445312499993,31.329443359375034],[-108.21181640625002,31.779345703125017],[-106.44541015624996,31.768408203125006],[-106.14804687499995,31.450927734375],[-104.97880859374996,30.645947265624955],[-104.50400390624995,29.677685546874955],[-104.110595703125,29.386132812499994],[-103.16831054687498,28.998193359374994],[-102.8919921875,29.216406250000034],[-102.61494140624994,29.75234375],[-102.26894531249998,29.871191406250034],[-101.44038085937503,29.77685546875],[-100.75458984375001,29.182519531249994],[-100.29604492187495,28.32768554687499],[-99.50532226562497,27.54833984375003],[-99.45654296874999,27.05668945312496],[-99.10776367187498,26.446923828124994],[-97.37563476562497,25.871826171875],[-97.14624023437494,25.961474609375045]]]]},"properties":{"name":"Mexico","childNum":10}},{"geometry":{"type":"Polygon","coordinates":[[[22.344042968750017,42.31396484375],[22.836816406250023,41.993603515625],[23.00361328125001,41.73984375],[22.916015625,41.336279296875],[22.78388671875001,41.331982421875],[22.72480468750001,41.178515625],[22.603613281250006,41.140185546874996],[22.493554687500023,41.118505859375],[22.184472656250023,41.158642578125],[21.99335937500001,41.13095703125],[21.77949218750001,40.950439453125],[21.627539062500006,40.896337890625],[21.57578125,40.868945312499996],[20.964257812500023,40.849902343749996],[20.709277343750017,40.928369140624994],[20.48896484375001,41.272607421874994],[20.566210937500017,41.873681640624994],[20.725,41.87353515625],[20.778125,42.071044921875],[21.05976562500001,42.171289062499994],[21.28662109375,42.100390625],[21.389550781250023,42.21982421875],[21.560839843750017,42.24765625],[21.5625,42.247509765625],[21.81464843750001,42.303125],[22.344042968750017,42.31396484375]]]},"properties":{"name":"Macedonia","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[4.227636718750006,19.142773437499997],[4.234667968750017,16.996386718750003],[4.121289062500011,16.357714843750003],[3.842968750000011,15.701708984375003],[3.5205078125,15.483105468749997],[3.504296875000023,15.356347656249994],[3.06015625,15.427197265624997],[3.001074218750006,15.340966796874994],[1.300195312500023,15.272265625],[0.947460937500011,14.982128906249997],[0.217480468750011,14.911474609374991],[-0.235888671874989,15.059423828124991],[-0.760449218749983,15.047753906249994],[-1.049560546875,14.81953125],[-1.97304687499999,14.45654296875],[-2.113232421874983,14.16845703125],[-2.586718749999989,14.227587890625003],[-2.873925781249994,13.950732421875003],[-2.950830078124994,13.6484375],[-3.248632812499977,13.658349609374994],[-3.3017578125,13.28076171875],[-3.527636718749989,13.182714843749991],[-3.947314453124989,13.402197265624991],[-4.151025390624994,13.306201171875003],[-4.328710937499977,13.119042968749994],[-4.227099609374989,12.793701171875],[-4.480615234374994,12.672216796874991],[-4.4287109375,12.337597656249997],[-4.699316406249977,12.076171875],[-5.288134765624989,11.827929687499989],[-5.250244140625,11.375781249999989],[-5.490478515625,11.042382812499994],[-5.523535156249977,10.426025390625],[-5.556591796874983,10.43994140625],[-5.694287109374983,10.43320312499999],[-5.843847656249977,10.389550781249994],[-5.896191406249983,10.354736328125],[-5.907568359374977,10.307226562499991],[-6.034570312499994,10.19482421875],[-6.1171875,10.201904296875],[-6.238378906249977,10.261621093749994],[-6.241308593749977,10.279199218749994],[-6.192626953125,10.369433593749989],[-6.190673828125,10.400292968749994],[-6.250244140625,10.717919921874994],[-6.482617187499983,10.561230468749997],[-6.564599609374994,10.58642578125],[-6.654150390624977,10.656445312499997],[-6.676367187499977,10.6337890625],[-6.686132812499977,10.578027343749994],[-6.691992187499977,10.512011718749989],[-6.669335937499994,10.3921875],[-6.693261718749994,10.349462890624991],[-6.950341796874994,10.342333984374989],[-7.01708984375,10.143261718749997],[-7.385058593749989,10.340136718749989],[-7.6611328125,10.427441406249997],[-7.990625,10.1625],[-8.007275390624983,10.321875],[-8.266650390624989,10.485986328124994],[-8.33740234375,10.990625],[-8.666699218749983,11.009472656249997],[-8.398535156249977,11.366552734374991],[-8.822021484375,11.673242187499994],[-8.818310546874983,11.922509765624994],[-9.043066406249977,12.40234375],[-9.395361328124977,12.464648437499989],[-9.358105468749983,12.255419921874989],[-9.754003906249977,12.029931640624994],[-10.274853515624983,12.212646484375],[-10.709228515625,11.898730468749989],[-10.933203124999977,12.205175781249991],[-11.30517578125,12.015429687499989],[-11.502197265625,12.198632812499994],[-11.389404296875,12.404394531249991],[-11.390380859375,12.941992187499991],[-11.634960937499983,13.369873046875],[-11.831689453124994,13.315820312499994],[-12.05419921875,13.633056640625],[-11.960888671874983,13.875292968750003],[-12.019189453124994,14.206494140624997],[-12.228417968749994,14.45859375],[-12.280615234374977,14.809033203124997],[-12.104687499999983,14.745361328125],[-12.08154296875,14.766357421875],[-12.021582031249977,14.804931640625],[-11.76015625,15.425537109375],[-11.675878906249977,15.512060546874991],[-11.502685546875,15.636816406249991],[-11.455224609374994,15.62539062499999],[-10.9482421875,15.151123046875],[-10.696582031249989,15.42265625],[-9.94140625,15.373779296875],[-9.446923828124994,15.458203125],[-9.447705078124983,15.574853515624994],[-9.426562499999989,15.623046875],[-9.3505859375,15.677392578124994],[-9.33544921875,15.525683593750003],[-9.293701171875,15.502832031249994],[-5.5125,15.496289062499997],[-5.359912109374989,16.282861328124994],[-5.509619140624977,16.442041015624994],[-5.628662109375,16.568652343750003],[-5.65625,16.8095703125],[-5.684765624999983,17.058251953124994],[-5.713183593749989,17.306884765625],[-5.74169921875,17.555566406249994],[-5.827099609374983,18.3015625],[-6.026416015624989,20.0421875],[-6.396582031249977,23.274804687499994],[-6.482031249999977,24.020800781250003],[-6.538964843749994,24.51816406249999],[-6.5673828125,24.766796875],[-6.594091796874977,24.99462890625],[-6.287207031249977,24.994824218749997],[-5.959814453124977,24.99497070312499],[-5.640771484374994,24.995166015625003],[-4.822607421874977,24.99560546875],[-1.947900390624994,23.124804687500003],[1.1455078125,21.102246093749997],[1.165722656250011,20.817431640625003],[1.610644531250017,20.555566406249994],[1.685449218750023,20.378369140624997],[3.130273437500023,19.85019531249999],[3.255859375,19.4109375],[3.119726562500006,19.103173828124994],[3.3564453125,18.986621093750003],[4.227636718750006,19.142773437499997]]]},"properties":{"name":"Mali","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[14.566210937499989,35.85273437499998],[14.436425781250023,35.82167968750005],[14.351269531250011,35.978417968749994],[14.566210937499989,35.85273437499998]]]},"properties":{"name":"Malta","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[98.18261718749997,9.933447265625006],[98.11806640625,9.877880859375054],[98.2916992187501,10.051318359375031],[98.18261718749997,9.933447265625006]]],[[[98.20976562500002,10.952734375],[98.27148437499997,10.73989257812498],[98.08046875000005,10.886621093750037],[98.20976562500002,10.952734375]]],[[[98.55380859375012,11.744873046875],[98.52841796875012,11.538671875],[98.43476562500004,11.567089843750026],[98.37646484374997,11.79150390625],[98.55380859375012,11.744873046875]]],[[[98.516015625,11.905029296875028],[98.46621093750005,12.08427734374996],[98.60957031250004,11.956640624999977],[98.516015625,11.905029296875028]]],[[[98.06611328125004,12.389794921875023],[98.00234375000005,12.279003906250011],[97.93867187500004,12.34609375],[98.06611328125004,12.389794921875023]]],[[[98.41396484375005,12.597949218749974],[98.45947265625003,12.473730468749991],[98.3138671875,12.335986328124989],[98.31210937500006,12.678173828124983],[98.41396484375005,12.597949218749974]]],[[[98.31542968749997,13.099072265625026],[98.30917968750012,12.934716796875023],[98.26533203125004,13.202246093749991],[98.31542968749997,13.099072265625026]]],[[[94.80488281250004,15.8193359375],[94.73349609375006,15.823046875000045],[94.82802734375005,15.933007812499966],[94.80488281250004,15.8193359375]]],[[[94.47675781250004,15.945947265625023],[94.41191406250007,15.848388671875057],[94.3878906250001,15.994140624999972],[94.60126953125004,16.205517578124983],[94.47675781250004,15.945947265625023]]],[[[97.575,16.253222656250017],[97.48037109375,16.305712890625045],[97.54199218749997,16.505078124999983],[97.575,16.253222656250017]]],[[[93.6908203125,18.68427734375004],[93.4875,18.867529296875063],[93.74472656250006,18.865527343750017],[93.6908203125,18.68427734375004]]],[[[93.71484374999997,19.558251953124994],[93.94570312500005,19.428613281249966],[93.90195312500012,19.33203125],[93.75585937500003,19.325683593750057],[93.64404296874997,19.49506835937501],[93.71484374999997,19.558251953124994]]],[[[93.49179687500012,19.892578125],[93.51328125000006,19.754785156249994],[93.41289062500002,19.950341796875023],[93.49179687500012,19.892578125]]],[[[93.01015625000005,19.923925781249977],[93.02324218750007,19.82885742187497],[92.91464843750006,20.086474609375045],[93.01015625000005,19.923925781249977]]],[[[101.1388671875001,21.567480468749977],[101.08037109375007,21.468652343749994],[100.703125,21.251367187499966],[100.613671875,21.059326171875],[100.56660156250004,21.038183593750063],[100.53613281250003,20.992382812499955],[100.52226562500007,20.92192382812499],[100.54931640624997,20.884228515624955],[100.61767578125003,20.879248046875006],[100.62294921875005,20.859570312499983],[100.5651367187501,20.825097656249994],[100.4074218750001,20.823242187500057],[100.32607421875005,20.795703125000045],[100.24931640625002,20.730273437500045],[100.18388671875002,20.589111328125057],[100.12968750000002,20.372216796874994],[100.12246093750005,20.316650390625057],[100.0036132812501,20.37958984375001],[99.9542968750001,20.415429687500023],[99.8903320312501,20.424414062499977],[99.72011718750005,20.32543945312497],[99.45888671875005,20.363037109375],[99.48593750000006,20.14985351562501],[99.07421875000003,20.09936523437503],[98.9166992187501,19.77290039062504],[98.37128906250004,19.68916015625004],[98.01503906250005,19.74951171874997],[97.816796875,19.459960937500057],[97.74589843750002,18.58818359374999],[97.37392578125,18.51796875],[97.63222656250005,18.290332031250074],[97.7064453125,17.79711914062503],[98.4388671875,16.975683593750034],[98.66074218750006,16.330419921875006],[98.83544921875003,16.417578125],[98.88828125000006,16.351904296875034],[98.81796875000012,16.180810546874994],[98.59238281250006,16.05068359375005],[98.55693359375007,15.367675781249986],[98.19101562500012,15.204101562499972],[98.20214843749997,14.97592773437502],[98.57001953125004,14.359912109375031],[99.13681640625006,13.716699218749994],[99.12392578125,13.030761718750043],[99.40507812500002,12.547900390625003],[99.61474609374997,11.781201171875026],[99.1901367187501,11.105273437499989],[98.7572265625,10.660937499999974],[98.70253906250005,10.19038085937504],[98.56259765625006,10.034960937499989],[98.46494140625006,10.675830078124989],[98.67558593750007,10.986914062500034],[98.74140625000004,11.591699218749966],[98.87597656250003,11.719726562500028],[98.63632812500006,11.738378906250006],[98.69628906250003,12.225244140624994],[98.6002929687501,12.2453125],[98.67871093749997,12.348486328124963],[98.57597656250002,13.161914062500031],[98.20039062500004,13.980175781250026],[98.14951171875012,13.647607421875037],[98.11064453125007,13.712890625000014],[98.10019531250006,14.161523437500023],[97.90976562500012,14.652685546874991],[98.01875,14.652587890625057],[97.81230468750007,14.858935546874989],[97.7103515625,15.875537109375074],[97.58427734375007,16.019580078125017],[97.72597656250005,16.56855468750004],[97.37587890625005,16.52294921874997],[97.20019531249997,17.095410156249983],[96.85146484375005,17.401025390624994],[96.90859375000005,17.03095703125001],[96.76542968750002,16.710351562499966],[96.43115234374997,16.504931640625045],[96.18906250000012,16.768310546875057],[96.32431640625006,16.444433593750063],[95.76328125000006,16.169042968750006],[95.38955078125005,15.722753906250034],[95.30146484375004,15.756152343749989],[95.34677734375012,16.09760742187501],[95.17695312500004,15.825683593750028],[94.9425781250001,15.818261718750023],[94.89316406250006,16.182812499999955],[94.66152343750005,15.904394531250006],[94.70332031250004,16.511914062499955],[94.4416015625001,16.094384765624966],[94.22382812500004,16.016455078125006],[94.58896484375006,17.5693359375],[94.17070312500007,18.73242187499997],[94.24570312500006,18.741162109374983],[94.07001953125004,18.893408203125006],[94.04492187500003,19.287402343750074],[93.92919921874997,18.89965820312503],[93.70546875000005,19.026904296875017],[93.49306640625005,19.369482421875006],[93.82490234375004,19.238476562499955],[93.99814453125006,19.440869140624983],[93.61171875000005,19.776074218749983],[93.70703125000003,19.912158203125074],[93.25,20.070117187500017],[93.12949218750012,19.858007812500063],[93.00195312499997,20.074853515624994],[93.06679687500005,20.377636718749955],[92.82832031250004,20.177587890625063],[92.89111328124997,20.34033203125],[92.73564453125007,20.56269531250001],[92.72285156250004,20.29560546875004],[92.32412109375,20.791845703125063],[92.17958984375005,21.293115234375023],[92.33056640624997,21.439794921874977],[92.63164062500002,21.306201171875045],[92.5934570312501,21.46733398437499],[92.58281250000002,21.940332031249994],[92.57490234375004,21.978076171875045],[92.68896484374997,22.130957031250006],[92.72099609375002,22.132421875000063],[92.77138671875,22.104785156250017],[92.9645507812501,22.003759765625034],[93.07060546875002,22.20942382812501],[93.16201171875,22.360205078125006],[93.07871093750006,22.71821289062501],[93.20390625000002,23.03701171875005],[93.34941406250007,23.08496093750003],[93.36601562500007,23.132519531249955],[93.32626953125006,24.064208984375057],[93.45214843750003,23.987402343750034],[93.68339843750007,24.00654296875004],[94.07480468750006,23.8720703125],[94.29306640625012,24.321875],[94.37724609375002,24.473730468750006],[94.49316406250003,24.637646484374983],[94.70371093750012,25.097851562499955],[94.55302734375007,25.215722656249994],[94.66777343750007,25.458886718749966],[94.99199218750002,25.77045898437504],[95.01523437500006,25.912939453125006],[95.0929687500001,25.98730468749997],[95.13242187500006,26.041259765625057],[95.12929687500005,26.070410156250034],[95.10839843749997,26.091406250000034],[95.06894531250006,26.19111328125001],[95.0597656250001,26.473974609375006],[95.20146484375007,26.641406250000017],[96.19082031250005,27.26127929687499],[96.79785156249997,27.29619140624999],[96.95341796875002,27.13330078125003],[97.10205078125003,27.11542968750004],[97.10371093750004,27.16333007812503],[96.90195312500012,27.439599609374994],[96.88359375000002,27.514843749999955],[96.96279296875,27.698291015625017],[97.04970703125005,27.760009765625],[97.34355468750002,27.982324218749994],[97.30273437499997,28.08598632812496],[97.3224609375001,28.21796875000004],[97.35644531249997,28.254492187500006],[97.43144531250002,28.353906250000023],[97.53789062500002,28.510205078124983],[97.59921875000006,28.51704101562504],[98.06162109375012,28.185888671874977],[98.29882812499997,27.550097656250045],[98.4525390625,27.6572265625],[98.65117187500007,27.572460937499983],[98.7384765625001,26.785742187500006],[98.68554687499997,26.189355468750023],[98.56406250000006,26.072412109374994],[98.65625,25.86357421874999],[98.33378906250007,25.586767578125006],[98.14287109375007,25.571093750000017],[98.01074218749997,25.292529296875017],[97.8195312500001,25.251855468749994],[97.73789062500006,24.869873046875057],[97.58330078125002,24.77480468750005],[97.53144531250004,24.49169921875003],[97.7082031250001,24.228759765625],[97.56455078125012,23.911035156250023],[98.2125,24.110644531250017],[98.83505859375006,24.121191406250034],[98.67675781250003,23.905078125000045],[98.8322265625001,23.624365234374977],[98.86376953125003,23.191259765625034],[99.41806640625006,23.069238281250023],[99.50712890625002,22.959130859374994],[99.19296875000006,22.12597656249997],[99.9176757812501,22.02802734375001],[99.94072265625007,21.75874023437504],[100.14765625000004,21.480517578125017],[100.60458984375012,21.471777343750006],[101.07978515625004,21.75585937499997],[101.1388671875001,21.567480468749977]]]]},"properties":{"name":"Myanmar","childNum":15}},{"geometry":{"type":"Polygon","coordinates":[[[19.21875,43.449951171875],[19.670996093750006,43.163964843749994],[20.344335937500006,42.827929687499996],[20.054296875,42.760058593749996],[20.06396484375,42.54726562499999],[19.78828125000001,42.476171875],[19.65449218750001,42.628564453124994],[19.280664062500023,42.17255859375],[19.342382812500006,41.869091796875],[18.436328125000017,42.559716796874994],[18.5458984375,42.6416015625],[18.46601562500001,42.777246093749994],[18.44384765625,42.96845703125],[18.46015625000001,42.997900390625],[18.48847656250001,43.012158203125],[18.623632812500006,43.027685546875],[18.621875,43.124609375],[18.674218750000023,43.230810546875],[18.74921875000001,43.283544921875],[18.85107421875,43.346337890624994],[18.934667968750006,43.339453125],[18.97871093750001,43.285400390625],[19.026660156250017,43.292431640625],[19.03671875,43.357324218749994],[18.940234375000017,43.496728515624994],[18.95068359375,43.526660156249996],[18.97421875,43.542333984375],[19.0283203125,43.532519531249996],[19.080078125,43.517724609374994],[19.11279296875,43.52773437499999],[19.164355468750017,43.535449218749996],[19.1943359375,43.53330078125],[19.21875,43.449951171875]]]},"properties":{"name":"Montenegro","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[111.878125,43.68017578125],[111.00722656250002,43.34140625],[110.400390625,42.773681640625],[109.44316406249999,42.455957031249994],[109.33984375,42.438378906249994],[108.68730468749999,42.41611328125],[108.17119140624999,42.447314453124996],[106.77001953125,42.288720703124994],[105.86757812500002,41.993994140625],[105.31435546875002,41.770898437499994],[105.19707031249999,41.738037109375],[105.11542968750001,41.66328125],[105.05058593749999,41.61591796875],[104.98203125000003,41.595507812499996],[104.49824218750001,41.65869140625],[104.49824218750001,41.877001953124996],[104.30517578125,41.846142578125],[103.99726562500001,41.79697265625],[103.71113281250001,41.751318359375],[103.07285156250003,42.00595703125],[102.5751953125,42.092089843749996],[102.15664062500002,42.158105468749994],[101.97294921874999,42.215869140624996],[101.65996093749999,42.500048828124996],[101.5791015625,42.52353515625],[101.49531250000001,42.53876953125],[101.09199218750001,42.551318359374996],[100.51904296875,42.616796875],[100.08632812500002,42.670751953125],[99.98378906250002,42.67734375],[99.46787109375003,42.568212890625],[97.20566406250003,42.789794921875],[96.38544921875001,42.720361328124994],[95.85957031250001,43.2759765625],[95.52558593750001,43.953955078125],[95.32558593750002,44.039355468749996],[95.35029296875001,44.278076171875],[94.71201171875003,44.350830078125],[93.51621093750003,44.944482421874994],[92.78789062499999,45.0357421875],[92.57890624999999,45.010986328125],[92.423828125,45.008935546874994],[92.17265624999999,45.03525390625],[92.02978515625,45.068505859374994],[91.584375,45.076513671875],[91.05,45.217431640624994],[90.87724609374999,45.19609375],[90.66181640625001,45.525244140625],[91.00175781249999,46.035791015624994],[90.99677734375001,46.10498046875],[90.94755859374999,46.177294921874996],[90.91152343750002,46.270654296874994],[90.98574218750002,46.7490234375],[90.91054687500002,46.883251953125],[90.86992187499999,46.954492187499994],[90.79902343750001,46.98515625],[90.71552734375001,47.003857421875],[90.49619140625003,47.28515625],[90.42519531250002,47.5041015625],[90.34746093749999,47.596972656249996],[90.33066406250003,47.655175781249994],[90.31328124999999,47.67617187499999],[90.19101562500003,47.702099609375],[90.10322265625001,47.745410156249996],[90.02792968750003,47.877685546875],[89.95869140625001,47.886328125],[89.91044921874999,47.8443359375],[89.83134765624999,47.823291015624996],[89.778125,47.827001953125],[89.56093750000002,48.003955078124996],[89.47919921875001,48.029052734375],[89.04765624999999,48.0025390625],[88.97109375000002,48.049951171874994],[88.91777343749999,48.089013671874994],[88.83828125000002,48.101708984374994],[88.68183593750001,48.170556640624994],[88.57597656249999,48.220166015625],[88.56679687500002,48.317431640624996],[88.51708984375,48.38447265625],[88.41396484375002,48.40341796875],[88.30996093750002,48.472070312499994],[87.97968750000001,48.555126953125],[88.06005859375,48.707177734374994],[87.83183593749999,48.791650390624994],[87.7431640625,48.881640625],[87.87216796875003,49.000146484374994],[87.81630859375002,49.0802734375],[87.8251953125,49.11630859375],[87.81425781249999,49.1623046875],[87.93476562500001,49.16455078125],[87.98808593749999,49.186914062499994],[88.02851562500001,49.219775390624996],[88.11572265625,49.256298828125],[88.19257812500001,49.451708984374996],[88.63320312500002,49.486132812499996],[88.83164062500003,49.4484375],[88.86386718750003,49.527636718749996],[88.90019531249999,49.539697265624994],[88.94541015625003,49.507666015625],[88.97060546875002,49.483740234375],[89.00839843750003,49.472802734374994],[89.10947265625003,49.501367187499994],[89.17998046874999,49.5322265625],[89.20292968749999,49.595703125],[89.24394531249999,49.62705078125],[89.39560546875003,49.6115234375],[89.475,49.66054687499999],[89.57919921875003,49.69970703125],[89.65410156249999,49.71748046875],[89.64384765624999,49.90302734375],[90.0537109375,50.09375],[90.65507812499999,50.22236328125],[90.71435546875,50.259423828124994],[90.7607421875,50.305957031249996],[91.02158203125003,50.415478515625],[91.23378906250002,50.452392578125],[91.30058593749999,50.46337890625],[91.3408203125,50.470068359375],[91.4150390625,50.468017578125],[91.44648437500001,50.52216796875],[91.80429687500003,50.693603515625],[92.10400390625,50.6919921875],[92.1923828125,50.700585937499994],[92.35478515624999,50.864160156249994],[92.42636718750003,50.803076171875],[92.62666015625001,50.68828125],[92.68134765625001,50.683203125],[92.73867187500002,50.7109375],[92.779296875,50.778662109375],[92.8564453125,50.789111328124996],[92.94130859375002,50.778222656249994],[93.103125,50.60390625],[94.25107421875003,50.556396484375],[94.35468750000001,50.221826171874994],[94.61474609375,50.023730468749996],[94.67548828125001,50.028076171875],[94.71806640624999,50.043261718749996],[94.93027343750003,50.04375],[95.11142578125003,49.935449218749994],[95.52265625000001,49.91123046875],[96.06552734375003,49.99873046875],[96.31503906250003,49.901123046875],[96.98574218750002,49.8828125],[97.20859375000003,49.730810546875],[97.35976562500002,49.741455078125],[97.58935546875,49.911474609375],[98.00390625,50.0142578125],[98.25029296874999,50.30244140625],[98.27949218750001,50.533251953124996],[98.14501953125,50.5685546875],[98.07890624999999,50.603808593749996],[98.02978515625,50.64462890625],[97.82529296875003,50.985253906249994],[98.103125,51.483544921874994],[98.64052734375002,51.801171875],[98.89316406250003,52.11728515625],[99.92167968749999,51.755517578125],[100.03457031250002,51.737109375],[100.23037109375002,51.729833984375],[100.46894531250001,51.72607421875],[100.53623046875003,51.7134765625],[101.38125,51.45263671875],[101.57089843750003,51.4671875],[101.82119140625002,51.421044921874994],[102.11152343750001,51.353466796875],[102.15566406250002,51.313769531249996],[102.16005859375002,51.26083984375],[102.14238281249999,51.216064453125],[102.15195312500003,51.10751953125],[102.19453125000001,51.050683593749994],[102.21503906250001,50.829443359375],[102.31660156250001,50.71845703125],[102.28837890624999,50.585107421874994],[103.30439453125001,50.20029296875],[103.63291015625003,50.138574218749994],[103.72324218750003,50.153857421874996],[103.80263671875002,50.176074218749996],[104.07871093750003,50.154248046875],[105.38359374999999,50.47373046875],[106.21787109375003,50.304589843749994],[106.36845703124999,50.317578125],[106.57441406250001,50.32880859375],[106.71113281250001,50.31259765625],[106.94130859375002,50.196679687499994],[107.04023437500001,50.086474609374996],[107.14306640625,50.033007812499996],[107.23330078125002,49.989404296874994],[107.34707031250002,49.986669921875],[107.63095703125003,49.98310546875],[107.91660156250003,49.947802734374996],[107.96542968750003,49.653515625],[108.40693359375001,49.396386718749994],[108.5224609375,49.34150390625],[108.61367187500002,49.322802734374996],[109.23671875000002,49.334912109375],[109.45371093750003,49.296337890625],[109.52871093750002,49.269873046875],[110.19990234375001,49.17041015625],[110.42783203125003,49.219970703125],[110.70976562499999,49.14296875],[110.82792968749999,49.166162109374994],[111.20419921875003,49.304296875],[111.33662109375001,49.35585937499999],[111.42929687500003,49.342626953125],[112.07968750000003,49.42421875],[112.49492187499999,49.53232421875],[112.69736328125003,49.507275390625],[112.80644531249999,49.523583984374994],[112.91484374999999,49.569238281249994],[113.05556640625002,49.616259765624996],[113.09208984374999,49.692529296874994],[113.16416015625003,49.797167968749996],[113.31904296875001,49.874316406249996],[113.44550781250001,49.9416015625],[113.57421875,50.00703125],[114.29707031250001,50.2744140625],[114.7431640625,50.233691406249996],[115.00332031250002,50.138574218749994],[115.27451171875003,49.948876953124994],[115.36503906249999,49.911767578124994],[115.42919921875,49.896484375],[115.58798828125003,49.886035156249996],[115.7177734375,49.880615234375],[115.79521484374999,49.905908203124994],[115.92597656250001,49.9521484375],[116.13457031249999,50.010791015624996],[116.216796875,50.00927734375],[116.35117187500003,49.978076171874996],[116.55117187500002,49.9203125],[116.68330078125001,49.823779296874996],[115.82050781250001,48.57724609375],[115.79169921875001,48.455712890624994],[115.79658203125001,48.346337890624994],[115.78554687500002,48.2482421875],[115.63945312499999,48.18623046875],[115.52509765625001,48.130859375],[115.61640625000001,47.874804687499996],[115.89824218749999,47.686914062499994],[115.99384765625001,47.71132812499999],[116.07480468750003,47.78955078125],[116.23115234375001,47.858203125],[116.31718749999999,47.85986328125],[116.37822265624999,47.844042968749996],[116.51347656249999,47.83955078125],[116.65195312500003,47.864501953125],[116.76054687499999,47.869775390624994],[116.90117187499999,47.853076171874996],[116.95166015625,47.836572265624994],[117.06972656250002,47.806396484375],[117.28593749999999,47.666357421875],[117.35078125000001,47.652197265625],[117.76835937499999,47.987890625],[118.49843750000002,47.983984375],[118.56777343750002,47.943261718749994],[118.69052734375003,47.822265625],[118.75996093750001,47.757617187499996],[118.88027343750002,47.72509765625],[119.017578125,47.685351562499996],[119.08193359375002,47.654150390625],[119.71113281250001,47.15],[119.89785156250002,46.8578125],[119.8671875,46.672167968749996],[119.74746093750002,46.627197265625],[119.70664062500003,46.606005859374996],[119.62021484375003,46.603955078125],[119.47402343750002,46.62666015625],[119.33183593749999,46.613818359374996],[119.162109375,46.638671875],[118.95712890625003,46.73486328125],[118.84394531250001,46.760205078125],[118.79033203124999,46.7470703125],[118.72294921874999,46.69189453125],[118.64873046874999,46.70166015625],[118.58046875000002,46.69189453125],[118.40439453125003,46.703173828124996],[118.30869140625003,46.717041015625],[118.15683593750003,46.678564453125],[118.0712890625,46.6666015625],[117.7412109375,46.5181640625],[117.546875,46.58828125],[117.43808593750003,46.586230468749996],[117.40556640624999,46.5708984375],[117.39218750000003,46.53759765625],[117.35634765625002,46.436669921874994],[117.35693359375,46.39130859375],[117.33339843750002,46.36201171875],[116.85908203125001,46.387939453125],[116.56259765625003,46.289794921875],[116.21298828125003,45.8869140625],[116.22910156250003,45.845751953124996],[116.240625,45.79599609375],[116.19765625000002,45.73935546875],[115.68105468750002,45.458251953125],[115.16259765625,45.390234375],[114.91923828124999,45.378271484375],[114.73876953125,45.41962890625],[114.56015625000003,45.389990234375],[114.41914062500001,45.202587890625],[114.16738281250002,45.049853515624996],[114.08027343750001,44.971142578125],[113.87705078125003,44.89619140625],[113.65263671874999,44.763476562499996],[113.58701171875003,44.745703125],[113.04941406250003,44.810351562499996],[112.70673828125001,44.883447265624994],[112.59677734375003,44.91767578125],[112.49931640624999,45.0109375],[112.41132812500001,45.058203125],[112.11289062500003,45.062939453125],[112.03261718750002,45.081640625],[111.89804687500003,45.0640625],[111.40224609375002,44.36728515625],[111.93173828125003,43.81494140625],[111.878125,43.68017578125]]]},"properties":{"name":"Mongolia","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[145.75195312499997,15.133154296874991],[145.71318359375007,15.215283203125026],[145.821875,15.265380859375014],[145.75195312499997,15.133154296874991]]]},"properties":{"name":"N. Mariana Is.","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[32.112890625,-26.839453125],[32.10595703125,-26.52001953125],[32.04140625000002,-26.28125],[32.060546875,-26.018359375],[31.9482421875,-25.957617187500006],[31.98583984375,-24.46064453125001],[31.799609375000017,-23.8921875],[31.54560546875001,-23.48232421875001],[31.287890625000017,-22.40205078125001],[31.429492187500017,-22.298828125],[32.429785156250006,-21.29707031250001],[32.353613281250006,-21.136523437500003],[32.49238281250001,-20.659765625],[32.992773437500006,-19.98486328125],[32.77763671875002,-19.388769531250006],[32.84980468750001,-19.10439453125001],[32.69970703125,-18.94091796875],[32.99306640625002,-18.35957031250001],[32.87626953125002,-16.88359375],[32.94804687500002,-16.71230468750001],[31.939843750000023,-16.428808593750006],[31.236230468750023,-16.02363281250001],[30.437792968750017,-15.995312500000011],[30.39609375,-15.64306640625],[30.231835937500023,-14.990332031250006],[33.201757812500006,-14.013378906250011],[33.63642578125001,-14.568164062500003],[34.375,-14.4248046875],[34.50527343750002,-14.59814453125],[34.54082031250002,-15.297265625],[34.24609375,-15.829394531250003],[34.528125,-16.319140625],[34.93339843750002,-16.760351562500006],[35.11210937500002,-16.898535156250006],[35.06464843750001,-17.07861328125],[35.124609375,-17.127246093750003],[35.20136718750001,-17.13105468750001],[35.272558593750006,-17.118457031250003],[35.29042968750002,-17.096972656250003],[35.28115234375002,-16.80781250000001],[35.22978515625002,-16.639257812500006],[35.178320312500006,-16.573339843750006],[35.16718750000001,-16.56025390625001],[35.242773437500006,-16.375390625],[35.358496093750006,-16.160546875],[35.59931640625001,-16.12587890625001],[35.70888671875002,-16.095800781250006],[35.75527343750002,-16.05830078125001],[35.79121093750001,-15.958691406250011],[35.89277343750001,-14.891796875000011],[35.86669921875,-14.86376953125],[35.84716796875,-14.6708984375],[35.6904296875,-14.465527343750011],[35.48847656250001,-14.201074218750009],[35.37578125000002,-14.058691406250006],[35.24746093750002,-13.896875],[35.01386718750001,-13.643457031250009],[34.61152343750001,-13.437890625],[34.54570312500002,-13.21630859375],[34.542578125,-13.108691406250003],[34.35781250000002,-12.164746093750011],[34.60625,-11.690039062500006],[34.65957031250002,-11.588671875],[34.82656250000002,-11.57568359375],[34.95947265625,-11.578125],[35.1826171875,-11.574804687500006],[35.41826171875002,-11.583203125000011],[35.50439453125,-11.604785156250003],[35.56435546875002,-11.60234375],[35.630957031250006,-11.58203125],[35.78544921875002,-11.452929687500003],[35.91132812500001,-11.4546875],[36.08222656250001,-11.537304687500011],[36.17548828125001,-11.609277343750009],[36.19130859375002,-11.670703125],[36.3056640625,-11.706347656250003],[36.97890625000002,-11.566992187500006],[37.37285156250002,-11.71044921875],[37.54169921875001,-11.675097656250003],[37.72480468750001,-11.580664062500006],[37.92021484375002,-11.294726562500003],[38.491796875,-11.413281250000011],[38.9875,-11.167285156250003],[39.81708984375001,-10.912402343750003],[39.98867187500002,-10.82080078125],[40.46357421875001,-10.46435546875],[40.61171875000002,-10.661523437500009],[40.48662109375002,-10.76513671875],[40.59716796875,-10.830664062500006],[40.40283203125,-11.33203125],[40.53154296875002,-12.004589843750011],[40.48710937500002,-12.4921875],[40.58085937500002,-12.635546875],[40.43681640625002,-12.983105468750011],[40.56875,-12.984667968750003],[40.595703125,-14.122851562500003],[40.715625,-14.214453125],[40.64609375,-14.538671875],[40.775,-14.421289062500009],[40.84453125000002,-14.718652343750009],[40.617773437500006,-15.115527343750003],[40.650976562500006,-15.260937500000011],[39.98359375000001,-16.22548828125001],[39.79091796875002,-16.29453125],[39.84462890625002,-16.435644531250006],[39.084375,-16.97285156250001],[38.14492187500002,-17.242773437500006],[37.24453125000002,-17.73994140625001],[36.93935546875002,-17.993457031250003],[36.40371093750002,-18.76972656250001],[36.26289062500001,-18.71962890625001],[36.23564453125002,-18.861328125],[35.85371093750001,-18.99335937500001],[34.947851562500006,-19.81269531250001],[34.6494140625,-19.70136718750001],[34.75576171875002,-19.82197265625001],[34.705078125,-20.473046875],[34.98232421875002,-20.80625],[35.267675781250006,-21.650976562500006],[35.31572265625002,-22.396875],[35.38300781250001,-22.45458984375],[35.45634765625002,-22.11591796875001],[35.53007812500002,-22.248144531250006],[35.57539062500001,-22.96308593750001],[35.37041015625002,-23.79824218750001],[35.5419921875,-23.82441406250001],[35.48964843750002,-24.065527343750006],[34.99208984375002,-24.65058593750001],[32.96113281250001,-25.49042968750001],[32.590429687500006,-26.00410156250001],[32.84882812500001,-26.26806640625],[32.95488281250002,-26.08359375],[32.93359375,-26.25234375],[32.88916015625,-26.83046875],[32.88613281250002,-26.84931640625001],[32.353515625,-26.861621093750003],[32.19960937500002,-26.83349609375],[32.112890625,-26.839453125]]]},"properties":{"name":"Mozambique","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-16.37333984374999,19.706445312499994],[-16.437548828124932,19.609277343749994],[-16.477001953124983,19.710351562499994],[-16.343652343749994,19.86621093750003],[-16.37333984374999,19.706445312499994]]],[[[-5.359912109374989,16.282861328124994],[-5.5125,15.496289062499983],[-9.293701171875,15.502832031249994],[-9.350585937499943,15.677392578125023],[-9.38535156249992,15.667626953124994],[-9.4265625,15.623046875000057],[-9.447705078124926,15.574853515624994],[-9.446923828124937,15.458203124999955],[-9.941406249999972,15.373779296874986],[-10.696582031249989,15.42265625],[-10.9482421875,15.151123046875014],[-11.455224609374994,15.62539062499999],[-11.760156249999937,15.425537109375057],[-11.828759765624966,15.244873046875014],[-11.872851562499989,14.995166015625031],[-12.02158203124992,14.804931640625],[-12.081542968749972,14.766357421875057],[-12.104687499999955,14.745361328125043],[-12.40869140625,14.889013671874991],[-12.735253906249994,15.13125],[-13.105273437499989,15.57177734375],[-13.40966796875,16.059179687500006],[-13.756640624999989,16.172509765624994],[-13.868457031249932,16.14814453125001],[-14.300097656249932,16.58027343750001],[-14.990625,16.676904296874994],[-15.768212890624994,16.485107421875],[-16.23901367187497,16.53129882812499],[-16.44101562499992,16.20454101562504],[-16.480078124999977,16.097216796875017],[-16.50205078124992,15.917333984375063],[-16.53525390624995,15.838378906250057],[-16.53574218749995,16.28681640625001],[-16.463623046875,16.60151367187501],[-16.030322265625017,17.88793945312497],[-16.213085937499926,19.003320312500023],[-16.51445312499996,19.361962890624994],[-16.305273437499977,19.51264648437504],[-16.44487304687499,19.47314453124997],[-16.21044921875003,20.227929687500023],[-16.42978515624995,20.652343750000057],[-16.622509765624955,20.634179687499994],[-16.87607421874992,21.086132812499955],[-16.998242187499926,21.039697265625023],[-17.048046874999955,20.80615234375003],[-17.06396484375,20.89882812499999],[-16.96455078125001,21.329248046875023],[-15.231201171875,21.331298828125],[-14.084667968749926,21.33271484375001],[-13.626025390624932,21.33325195312503],[-13.396728515624943,21.333544921875017],[-13.167431640624926,21.333789062500074],[-13.016210937499949,21.33393554687501],[-13.025097656249983,21.46679687499997],[-13.032226562500028,21.572070312500017],[-13.041748046875,21.71381835937504],[-13.051220703124983,21.854785156250074],[-13.094335937499977,22.49599609375005],[-13.153271484374983,22.820507812499983],[-13.031494140624943,23.000244140625],[-12.895996093749972,23.08955078125001],[-12.739599609375006,23.192724609375063],[-12.62041015624996,23.271337890625006],[-12.559375,23.290820312500045],[-12.372900390624977,23.318017578124994],[-12.023437499999943,23.467578125000017],[-12.016308593749983,23.97021484375],[-12.016308593749983,24.378662109375],[-12.016308593749983,24.923242187499994],[-12.016308593749983,25.059375],[-12.016308593749983,25.331689453124994],[-12.016308593749983,25.740136718749994],[-12.016308593749983,25.995410156250017],[-10.376123046874966,25.995458984375034],[-9.444531249999983,25.99550781250005],[-9.071923828124937,25.99550781250005],[-8.885644531249994,25.99550781250005],[-8.682226562499949,25.99550781250005],[-8.68212890625,26.109472656250006],[-8.68212890625,26.273193359375057],[-8.682324218749955,26.49770507812505],[-8.682617187500028,26.723144531250057],[-8.682861328124972,26.92133789062501],[-8.683349609375,27.285937500000045],[-4.822607421874949,24.99560546875],[-5.640771484374994,24.99516601562499],[-5.959814453124977,24.994970703125063],[-6.287207031249977,24.99482421875001],[-6.594091796874977,24.99462890624997],[-6.396582031249977,23.274804687499994],[-6.02641601562496,20.04218750000001],[-5.827099609374955,18.301562500000045],[-5.741699218749943,17.555566406250023],[-5.713183593750017,17.306884765625],[-5.684765624999983,17.058251953124966],[-5.628662109375028,16.568652343750045],[-5.50961914062492,16.442041015625023],[-5.359912109374989,16.282861328124994]]]]},"properties":{"name":"Mauritania","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[-62.1484375,16.74033203124999],[-62.221630859375,16.699511718750003],[-62.191357421875,16.804394531249997],[-62.1484375,16.74033203124999]]]},"properties":{"name":"Montserrat","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[57.65126953125002,-20.48486328125],[57.31767578125002,-20.42763671875001],[57.416015625,-20.18378906250001],[57.65654296875002,-19.98994140625001],[57.7919921875,-20.21259765625001],[57.65126953125002,-20.48486328125]]]},"properties":{"name":"Mauritius","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[34.95947265625003,-11.578125],[34.82656250000005,-11.575683593749972],[34.65957031250005,-11.58867187499996],[34.61855468750005,-11.620214843749991],[34.60625,-11.690039062500006],[34.3578125,-12.164746093749997],[34.542578125,-13.108691406250003],[34.54570312500002,-13.21630859375],[34.6115234375001,-13.437890625000023],[35.0138671875001,-13.64345703124998],[35.247460937499994,-13.896875],[35.37578125000002,-14.05869140625002],[35.48847656250004,-14.20107421874998],[35.69042968749997,-14.465527343750026],[35.84716796875003,-14.670898437500043],[35.8927734375001,-14.891796875000011],[35.7912109375001,-15.958691406250026],[35.75527343750005,-16.058300781249983],[35.708886718749994,-16.095800781249977],[35.5993164062501,-16.12587890624998],[35.35849609375006,-16.160546875000023],[35.242773437500006,-16.375390625],[35.16718750000004,-16.56025390625001],[35.178320312500006,-16.57333984375002],[35.22978515625002,-16.639257812500034],[35.281152343749994,-16.8078125],[35.29042968750005,-17.096972656250017],[35.27255859375006,-17.11845703124996],[35.2013671875001,-17.13105468750004],[35.124609375,-17.127246093749974],[35.06464843750004,-17.078613281250014],[35.11210937500002,-16.898535156250006],[34.93339843750002,-16.760351562500006],[34.528125,-16.319140625],[34.24609374999997,-15.829394531249974],[34.54082031250002,-15.297265625],[34.50527343750005,-14.598144531249957],[34.375,-14.4248046875],[33.63642578125004,-14.568164062499974],[33.148046875,-13.94091796875],[32.98125,-14.009375],[32.797460937500006,-13.6884765625],[32.67041015624997,-13.590429687500006],[32.96757812500002,-13.225],[32.97519531250006,-12.701367187499983],[33.51230468750006,-12.347753906249977],[33.340136718750074,-12.308300781250011],[33.25234375000005,-12.112597656250031],[33.3039062500001,-11.69082031249998],[33.23271484375002,-11.417675781250026],[33.26835937500002,-11.403906249999977],[33.379785156249994,-11.15791015625004],[33.29277343750002,-10.85234375],[33.661523437499994,-10.553125],[33.55371093749997,-10.391308593750011],[33.53759765624997,-10.351562499999986],[33.52890625,-10.234667968749974],[33.31152343750003,-10.037988281249966],[33.3371093750001,-9.954003906249994],[33.350976562499994,-9.862207031250037],[33.25,-9.759570312500003],[33.148046875,-9.603515625],[32.99599609375005,-9.622851562499946],[32.91992187500003,-9.407421875000026],[33.88886718750004,-9.670117187499983],[33.99560546875003,-9.495410156250003],[34.32089843750006,-9.731542968749977],[34.56992187500006,-10.241113281249966],[34.66708984375006,-10.792480468750028],[34.60791015624997,-11.08046875],[34.77382812500005,-11.341699218750009],[34.890625,-11.3935546875],[34.93701171874997,-11.463476562500034],[34.95947265625003,-11.578125]]]},"properties":{"name":"Malawi","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[111.38925781250006,2.415332031250031],[111.31152343749997,2.437597656250034],[111.33349609374997,2.768310546875],[111.38925781250006,2.415332031250031]]],[[[104.22158203125,2.731738281250003],[104.1291015625001,2.767236328125037],[104.18476562500004,2.871728515625009],[104.22158203125,2.731738281250003]]],[[[117.88476562499997,4.186132812500006],[117.64902343750012,4.168994140624974],[117.70800781249997,4.262402343749997],[117.88476562499997,4.186132812500006]]],[[[100.28896484375005,5.294726562499989],[100.19101562500006,5.28286132812498],[100.2455078125,5.467773437499986],[100.33886718749997,5.410058593750037],[100.28896484375005,5.294726562499989]]],[[[99.848046875,6.465722656249994],[99.9186523437501,6.358593750000011],[99.74375,6.263281249999963],[99.64628906250002,6.418359375000023],[99.848046875,6.465722656249994]]],[[[102.10107421874997,6.242236328125031],[102.34013671875002,6.172021484375023],[102.534375,5.862548828125028],[103.09707031250005,5.408447265624986],[103.41582031250007,4.85029296875004],[103.43945312499997,2.93310546875],[103.8122070312501,2.58046875],[104.21855468750002,1.722851562499997],[104.25009765625012,1.388574218750009],[104.11494140625004,1.412255859375037],[103.98144531250003,1.623632812500034],[103.99150390625002,1.454785156249997],[103.6945312500001,1.449658203125026],[103.48027343750007,1.329492187499966],[103.35683593750005,1.546142578125057],[102.72714843750012,1.855566406250034],[101.29550781250012,2.885205078125011],[101.29990234375012,3.253271484375034],[100.71542968750006,3.966210937499966],[100.79550781250012,4.023388671874983],[100.61455078125002,4.3734375],[100.34326171874997,5.984179687500031],[100.11914062499997,6.441992187500048],[100.26142578125004,6.682714843749963],[100.3454101562501,6.549902343750006],[100.75449218750012,6.460058593749991],[100.87392578125,6.24541015624996],[101.05351562500002,6.242578125],[100.98164062500004,5.771044921875045],[101.1139648437501,5.636767578125045],[101.5560546875,5.907763671875003],[101.67841796875004,5.778808593750028],[101.87363281250012,5.825292968749991],[102.10107421874997,6.242236328125031]]],[[[117.5744140625001,4.17060546875004],[117.10058593750003,4.337060546875023],[116.51474609375006,4.370800781249969],[115.86074218750005,4.348046875000037],[115.67880859375006,4.193017578124994],[115.45439453125002,3.034326171875009],[115.24697265625005,3.025927734374989],[115.117578125,2.89487304687502],[115.08076171875004,2.63422851562504],[115.1791015625,2.523193359374972],[114.78642578125002,2.250488281250014],[114.83056640625003,1.980029296874989],[114.5125,1.452001953124963],[113.90234375000003,1.434277343749997],[113.6222656250001,1.2359375],[113.00654296875004,1.433886718750003],[112.94296875000006,1.566992187500034],[112.47617187500006,1.559082031250028],[112.1857421875001,1.4390625],[112.078515625,1.143359374999974],[111.80898437500005,1.011669921874969],[111.10136718750002,1.050537109374986],[110.50576171875005,0.861962890625023],[109.65400390625004,1.614892578125023],[109.53896484375,1.89619140625004],[109.62890625000003,2.027539062499983],[109.86484375000012,1.764453125000031],[110.34921875000012,1.719726562499972],[111.22324218750012,1.395849609374991],[111.0287109375,1.557812500000026],[111.26816406250012,2.13974609375002],[111.20859375000012,2.379638671875043],[111.44384765625003,2.381542968749983],[111.5125,2.743017578124991],[112.98789062500006,3.161914062499974],[113.92392578125006,4.243212890625003],[114.0638671875,4.592675781249966],[114.65410156250007,4.037646484375045],[114.84023437500005,4.393212890625009],[114.74667968750006,4.718066406250017],[115.02675781250005,4.899707031249989],[115.10703125000006,4.390429687499974],[115.290625,4.352587890624989],[115.1400390625,4.899755859374991],[115.37490234375,4.932763671874966],[115.55449218750007,5.093554687500045],[115.41904296875012,5.413183593749963],[115.60390625,5.603417968749994],[115.74082031250012,5.533007812500045],[115.8771484375001,5.613525390625014],[116.74980468750007,6.977099609374989],[116.8498046875001,6.826708984374989],[116.78808593749997,6.606103515624994],[117.12851562500012,6.968896484375009],[117.2298828125,6.939990234374974],[117.29404296875006,6.676904296875023],[117.60966796875002,6.512646484375054],[117.69375,6.35],[117.64453124999997,6.001855468749994],[117.5011718750001,5.884667968750009],[118.00380859375,6.053320312499991],[118.11582031250006,5.8625],[117.93476562500004,5.7875],[117.97363281249997,5.70625],[118.35312500000012,5.80605468749998],[118.59482421875006,5.592089843750003],[119.22343750000007,5.412646484375031],[119.2663085937501,5.308105468750057],[119.21962890625,5.159814453125037],[118.9125,5.02290039062504],[118.26054687500007,4.988867187500034],[118.18535156250002,4.828515625000051],[118.5625,4.502148437499997],[118.54833984375003,4.379248046875006],[118.008203125,4.250244140625014],[117.6964843750001,4.342822265625045],[117.5744140625001,4.17060546875004]]],[[[117.14160156250003,7.168212890625028],[117.08066406250006,7.115283203124989],[117.06425781250007,7.26069335937504],[117.2640625,7.351660156250006],[117.26679687500004,7.220800781249991],[117.14160156250003,7.168212890625028]]]]},"properties":{"name":"Malaysia","childNum":8}},{"geometry":{"type":"Polygon","coordinates":[[[23.380664062500017,-17.640625],[24.27490234375,-17.481054687500006],[24.73291015625,-17.51777343750001],[25.001757812500017,-17.56855468750001],[25.2587890625,-17.793554687500006],[24.909082031250023,-17.821386718750006],[24.530566406250017,-18.052734375],[24.243945312500017,-18.0234375],[23.599707031250006,-18.4599609375],[23.219335937500006,-17.99970703125001],[20.97412109375,-18.31884765625],[20.9794921875,-21.9619140625],[19.977343750000017,-22.00019531250001],[19.98046875,-24.77675781250001],[19.98046875,-28.310351562500003],[19.98046875,-28.451269531250006],[19.539843750000017,-28.574609375],[19.31269531250001,-28.73330078125001],[19.24580078125001,-28.901660156250003],[19.16171875,-28.938769531250003],[18.310839843750017,-28.88623046875],[17.44794921875001,-28.69814453125001],[17.34785156250001,-28.50117187500001],[17.358691406250017,-28.26943359375001],[17.1884765625,-28.13251953125001],[17.05625,-28.031054687500003],[16.93330078125001,-28.069628906250003],[16.875292968750017,-28.1279296875],[16.841210937500023,-28.21894531250001],[16.81015625,-28.26455078125001],[16.7875,-28.39472656250001],[16.755761718750023,-28.4521484375],[16.62617187500001,-28.487890625],[16.487109375000017,-28.572851562500006],[16.447558593750017,-28.617578125],[15.719042968750017,-27.9658203125],[15.341503906250011,-27.386523437500003],[15.139062500000023,-26.50800781250001],[14.9677734375,-26.31806640625001],[14.837109375000011,-25.033203125],[14.5015625,-24.201953125],[14.462792968750023,-22.44912109375001],[13.450585937500023,-20.91669921875001],[13.168359375000023,-20.184667968750006],[12.458203125000011,-18.9267578125],[11.77587890625,-18.001757812500003],[11.733496093750006,-17.7509765625],[11.743066406250023,-17.24921875000001],[11.902539062500011,-17.2265625],[12.013964843750017,-17.168554687500006],[12.21337890625,-17.2099609375],[12.318457031250006,-17.21337890625],[12.359277343750023,-17.205859375],[12.548144531250017,-17.212695312500003],[13.179492187500017,-16.9716796875],[13.475976562500023,-17.0400390625],[14.017480468750023,-17.40888671875001],[16.1484375,-17.390234375],[18.396386718750023,-17.3994140625],[18.95527343750001,-17.803515625],[20.1943359375,-17.863671875],[20.745507812500023,-18.01972656250001],[22.32421875,-17.8375],[23.380664062500017,-17.640625]]]},"properties":{"name":"Namibia","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[167.54443359375003,-22.62324218750001],[167.44375,-22.63916015624997],[167.44345703125006,-22.541406250000037],[167.54443359375003,-22.62324218750001]]],[[[168.01093750000004,-21.429980468750017],[168.1390625,-21.44521484375001],[168.12070312500012,-21.615820312500034],[167.96679687500003,-21.641601562499957],[167.81542968749997,-21.392675781249963],[167.9884765625001,-21.337890624999986],[168.01093750000004,-21.429980468750017]]],[[[167.40087890625003,-21.16064453125003],[167.07265625,-20.99726562499997],[167.03271484374997,-20.922558593750026],[167.18945312500003,-20.803515625000017],[167.05576171875012,-20.720214843750014],[167.29794921875006,-20.732519531250034],[167.40087890625003,-21.16064453125003]]],[[[164.20234375000004,-20.246093749999957],[164.4359375,-20.282226562499957],[165.191796875,-20.768847656249974],[165.66279296875004,-21.267187499999977],[166.94238281250003,-22.09013671875003],[166.97031250000012,-22.32285156250002],[166.77412109375004,-22.37617187500004],[166.4679687500001,-22.256054687499997],[164.92744140625004,-21.289843749999974],[164.16972656250007,-20.48017578125004],[164.05966796875012,-20.141503906249966],[164.20234375000004,-20.246093749999957]]]]},"properties":{"name":"New Caledonia","childNum":4}},{"geometry":{"type":"Polygon","coordinates":[[[14.97900390625,22.99619140624999],[15.181835937500011,21.523388671874997],[15.607324218750023,20.954394531250003],[15.587109375000011,20.733300781249994],[15.963183593750017,20.34619140625],[15.735058593750011,19.904052734375],[15.474316406250011,16.908398437499997],[14.367968750000017,15.750146484374994],[13.4482421875,14.380664062500003],[13.505761718750023,14.134423828124994],[13.606347656250023,13.70458984375],[13.426953125000011,13.701757812499991],[13.323828125,13.670849609374997],[12.871679687500006,13.449023437500003],[12.65478515625,13.3265625],[12.463183593750017,13.09375],[10.958886718750023,13.371533203124997],[10.475878906250017,13.330224609374994],[10.229589843750006,13.281005859375],[10.184667968750006,13.270117187499991],[9.615917968750011,12.810644531249991],[9.201562500000023,12.821484375],[8.750585937500006,12.908154296874997],[8.4560546875,13.059667968749991],[8.095019531250017,13.291162109374994],[7.955761718750011,13.32275390625],[7.788671875,13.337890625],[7.056738281250006,13.000195312499997],[6.804296875,13.107666015625],[6.2998046875,13.658789062499991],[6.184277343750011,13.66367187499999],[5.838183593750017,13.765380859375],[5.491992187500017,13.872851562500003],[5.415820312500017,13.859179687500003],[5.361621093750017,13.836865234374997],[5.241894531250011,13.757226562499994],[4.664843750000017,13.733203125],[4.147558593750006,13.457714843749997],[3.947851562500006,12.775048828124994],[3.646679687500011,12.529980468749997],[3.595410156250011,11.6962890625],[2.805273437500006,12.383837890624989],[2.366015625000017,12.221923828125],[2.38916015625,11.897070312499991],[2.072949218750011,12.309375],[2.226269531250011,12.466064453125],[2.104589843750006,12.701269531249991],[1.56494140625,12.635400390624994],[0.9873046875,13.041894531249994],[0.988476562500011,13.36484375],[1.201171875,13.357519531249991],[0.6181640625,13.703417968750003],[0.42919921875,13.972119140624997],[0.382519531250011,14.245800781249997],[0.163867187500017,14.497216796874994],[0.217480468750011,14.911474609374991],[0.947460937500011,14.982128906249997],[1.300195312500023,15.272265625],[3.001074218750006,15.340966796874994],[3.06015625,15.427197265624997],[3.504296875000023,15.356347656249994],[3.5205078125,15.483105468749997],[3.842968750000011,15.701708984375003],[4.121289062500011,16.357714843750003],[4.234667968750017,16.996386718750003],[4.227636718750006,19.142773437499997],[5.836621093750011,19.479150390624994],[7.481738281250017,20.873095703125003],[11.967871093750006,23.517871093750003],[13.48125,23.18017578125],[14.215527343750011,22.619677734375003],[14.97900390625,22.99619140624999]]]},"properties":{"name":"Niger","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[7.30078125,4.418164062500026],[7.140429687500017,4.395117187500034],[7.227343750000045,4.527343749999972],[7.30078125,4.418164062500026]]],[[[6.804296875,13.107666015625],[7.056738281250006,13.00019531250004],[7.788671875,13.337890625],[7.955761718750011,13.322753906250028],[8.095019531250045,13.29116210937498],[8.750585937500034,12.908154296875026],[9.20156250000008,12.82148437500004],[9.615917968750011,12.810644531249963],[10.184667968750063,13.270117187499963],[10.229589843749977,13.281005859375043],[10.475878906250074,13.330224609375037],[10.958886718750051,13.371533203125011],[12.463183593750017,13.09375],[12.654785156250057,13.3265625],[13.426953125000068,13.701757812499963],[13.606347656250023,13.704589843750014],[13.932324218750011,13.258496093749997],[14.06396484375,13.078515625],[14.160058593750023,12.612792968749986],[14.184863281250017,12.447216796874997],[14.272851562500023,12.356494140624989],[14.518945312500051,12.298242187500023],[14.619726562500063,12.150976562500048],[14.559765625000011,11.492285156249963],[14.20234375000004,11.268164062499963],[14.143261718750068,11.248535156250043],[14.056738281250034,11.245019531250037],[13.981445312500057,11.21186523437504],[13.892089843750057,11.140087890624983],[13.699902343749983,10.873144531250048],[13.53535156250004,10.605078124999963],[13.414550781250028,10.171435546874989],[13.269921875000051,10.036181640624974],[13.198730468750028,9.563769531250003],[12.929492187500074,9.426269531249972],[12.87568359375004,9.303515625000017],[12.80654296875008,8.886621093749994],[12.7822265625,8.817871093750014],[12.651562500000011,8.667773437499989],[12.40351562500004,8.59555664062502],[12.311328125000074,8.419726562499989],[12.2333984375,8.282324218749977],[12.016015625000051,7.589746093750009],[11.809179687500006,7.345068359374991],[11.767382812500017,7.272265624999989],[11.861425781249977,7.11640625000004],[11.657519531250017,6.951562500000023],[11.580078125000057,6.88886718750004],[11.551660156250023,6.697265625],[11.153320312500057,6.437939453125011],[11.1064453125,6.457714843750054],[11.032519531250045,6.697900390625037],[10.954199218750006,6.7765625],[10.60625,7.063085937500006],[10.413183593750006,6.877734375],[10.293066406250034,6.876757812499974],[10.205468750000051,6.891601562499986],[10.185546874999972,6.91279296875004],[10.167773437500017,6.959179687499983],[10.143554687500057,6.99643554687502],[10.038867187500045,6.921386718750014],[9.874218750000068,6.803271484375017],[9.82070312500008,6.783935546874986],[9.779882812500034,6.760156250000023],[9.725585937499972,6.65],[9.659960937500017,6.531982421874986],[9.490234375,6.418652343749997],[8.997167968750006,5.917724609375],[8.715625,5.046875],[8.514843750000068,4.724707031250034],[8.23378906250008,4.907470703124972],[8.293066406250006,4.557617187500014],[7.644238281250068,4.525341796875011],[7.530761718750028,4.655175781249994],[7.284375,4.547656250000031],[7.076562500000051,4.716162109374991],[7.15468750000008,4.514404296875],[6.92324218750008,4.390673828125017],[6.767675781250006,4.724707031250034],[6.860351562500057,4.373339843750045],[6.633007812500011,4.340234375000051],[6.579980468750051,4.475976562499994],[6.554589843750023,4.34140625000002],[6.263671875,4.309423828124991],[6.270996093749972,4.432128906250028],[6.173339843749972,4.277392578125031],[5.970703125,4.338574218749983],[5.587792968750051,4.647216796874972],[5.448144531250023,4.945849609374974],[5.383300781250057,5.129003906249977],[5.475976562500023,5.153857421874989],[5.370019531250023,5.195019531250026],[5.367968750000045,5.337744140624963],[5.549707031250023,5.474218749999963],[5.385839843750034,5.401757812500037],[5.199218750000028,5.533544921874977],[5.456640624999977,5.61171875],[5.327343750000011,5.707519531249986],[5.112402343750034,5.64155273437504],[4.861035156250068,6.026318359374997],[4.431347656250011,6.348583984375026],[3.450781249999977,6.427050781250017],[3.71699218750004,6.597949218750017],[3.430175781250057,6.525],[3.335546875000063,6.396923828125011],[2.706445312500051,6.369238281249963],[2.735644531250045,6.595703125],[2.753710937499989,6.661767578124966],[2.774609374999983,6.711718750000017],[2.752929687500028,6.771630859374966],[2.731738281250045,6.852832031249989],[2.721386718750068,6.980273437500017],[2.75673828125008,7.067919921875017],[2.750488281250057,7.39506835937496],[2.765820312500068,7.422509765625051],[2.783984375000045,7.443408203125045],[2.78515625,7.476855468750017],[2.703125,8.371826171875],[2.774804687500023,9.048535156250026],[3.044921875,9.08383789062502],[3.325195312499972,9.778466796875051],[3.60205078125,10.004541015625009],[3.646582031250006,10.408984374999989],[3.771777343750017,10.417626953124966],[3.83447265625,10.607421875],[3.7568359375,10.76875],[3.71640625,11.07958984375],[3.695312499999972,11.12031250000004],[3.63886718750004,11.176855468750006],[3.487792968749972,11.395410156250037],[3.490527343750017,11.499218750000054],[3.55390625000004,11.631884765624989],[3.595410156250068,11.696289062500057],[3.664746093750068,11.762451171875028],[3.646679687500011,12.529980468749983],[3.947851562500006,12.775048828124994],[4.147558593750006,13.457714843749983],[4.664843750000045,13.733203124999974],[5.241894531250011,13.757226562499994],[5.361621093750074,13.836865234375054],[5.415820312500017,13.859179687499974],[5.491992187500074,13.872851562500003],[6.2998046875,13.658789062500006],[6.804296875,13.107666015625]]]]},"properties":{"name":"Nigeria","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[-83.6419921875,10.917236328125],[-83.71293945312499,10.785888671875],[-83.91928710937499,10.7353515625],[-84.6341796875,11.045605468749997],[-84.9091796875,10.9453125],[-85.5841796875,11.189453125],[-85.7443359375,11.06210937499999],[-87.670166015625,12.965673828124991],[-87.58505859374999,13.043310546874991],[-87.42436523437499,12.921142578125],[-87.33725585937499,12.979248046875],[-87.05917968749999,12.991455078125],[-87.00932617187499,13.0078125],[-86.918212890625,13.223583984374997],[-86.87353515625,13.266503906249994],[-86.792138671875,13.27978515625],[-86.72929687499999,13.284375],[-86.710693359375,13.313378906249994],[-86.76352539062499,13.63525390625],[-86.77060546874999,13.69873046875],[-86.758984375,13.746142578125003],[-86.733642578125,13.763476562500003],[-86.61025390625,13.774853515624997],[-86.376953125,13.755664062500003],[-86.33173828125,13.770068359375003],[-86.238232421875,13.899462890625003],[-86.15122070312499,13.994580078124997],[-86.0892578125,14.037207031249991],[-86.04038085937499,14.050146484374991],[-85.9837890625,13.965673828124991],[-85.78671875,13.844433593749997],[-85.75341796875,13.85205078125],[-85.73393554687499,13.858691406250003],[-85.727734375,13.876074218749991],[-85.731201171875,13.931835937499997],[-85.68193359374999,13.982568359374994],[-85.20834960937499,14.311816406250003],[-85.059375,14.582958984374997],[-84.86044921874999,14.809765625],[-84.645947265625,14.661083984374997],[-84.53764648437499,14.633398437499991],[-83.635498046875,14.876416015624997],[-83.5365234375,14.977001953124997],[-83.4150390625,15.008056640625],[-83.15751953124999,14.993066406249994],[-83.18535156249999,14.956396484374991],[-83.21591796874999,14.932373046875],[-83.27988281249999,14.812792968750003],[-83.344384765625,14.902099609375],[-83.413720703125,14.825341796874994],[-83.29921875,14.7490234375],[-83.187744140625,14.340087890625],[-83.4123046875,13.99648437499999],[-83.567333984375,13.3203125],[-83.5109375,12.411816406249997],[-83.627197265625,12.459326171874991],[-83.59335937499999,12.713085937499997],[-83.75424804687499,12.501953125],[-83.680419921875,12.024316406249994],[-83.7671875,12.059277343749997],[-83.82890624999999,11.861035156249997],[-83.70458984375,11.824560546874991],[-83.6517578125,11.642041015624997],[-83.86787109375,11.300048828125],[-83.6419921875,10.917236328125]]]},"properties":{"name":"Nicaragua","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-169.80341796875,-19.0830078125],[-169.94833984375,-19.072851562500006],[-169.834033203125,-18.96601562500001],[-169.80341796875,-19.0830078125]]]},"properties":{"name":"Niue","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-68.205810546875,12.144580078124989],[-68.25434570312495,12.032080078124977],[-68.36923828125,12.301953124999983],[-68.205810546875,12.144580078124989]]],[[[4.226171875000034,51.38647460937503],[3.902050781250011,51.20766601562502],[3.43251953125008,51.24575195312505],[3.35009765625,51.37768554687503],[4.226171875000034,51.38647460937503]]],[[[3.94912109375008,51.73945312500001],[4.07509765625008,51.648779296875006],[3.699023437500017,51.70991210937501],[3.94912109375008,51.73945312500001]]],[[[4.886132812500023,53.07070312500005],[4.70917968750004,53.036035156249994],[4.886425781249983,53.18330078124998],[4.886132812500023,53.07070312500005]]],[[[4.226171875000034,51.38647460937503],[3.448925781250068,51.54077148437503],[3.743945312500017,51.596044921875006],[4.27412109375004,51.47163085937498],[4.004785156250051,51.595849609374966],[4.182617187500057,51.61030273437498],[3.946875,51.810546875],[4.482812500000023,52.30917968749998],[4.76875,52.941308593749966],[5.061230468750068,52.96064453125001],[5.532031250000074,53.268701171874966],[6.062207031250068,53.407080078125006],[6.816210937500045,53.44116210937503],[7.197265625000028,53.28227539062499],[7.033007812500045,52.65136718749997],[6.710742187500045,52.61787109374998],[6.748828125000074,52.464013671874994],[7.035156250000057,52.38022460937498],[6.724511718749994,52.080224609374966],[6.800390625,51.96738281249998],[5.948730468750057,51.80268554687501],[6.198828125000034,51.45],[6.129980468750034,51.14741210937501],[5.857519531250034,51.030126953125006],[6.048437500000034,50.90488281250006],[5.993945312500017,50.75043945312504],[5.693554687500011,50.774755859375006],[5.796484375000034,51.153076171875],[5.214160156250045,51.278955078124966],[5.03095703125004,51.46909179687498],[4.226171875000034,51.38647460937503]]],[[[5.325781250000063,53.38574218750003],[5.190234375000074,53.39179687500001],[5.582617187500063,53.438085937500034],[5.325781250000063,53.38574218750003]]]]},"properties":{"name":"Netherlands","childNum":6,"cp":[5.0752777,52.358465]}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[5.085839843750023,60.30756835937501],[5.089062500000068,60.188769531250045],[4.95722656250004,60.44726562500006],[5.085839843750023,60.30756835937501]]],[[[4.958691406250068,61.084570312500034],[4.79902343750004,61.08271484375001],[4.861621093749989,61.19384765625],[4.958691406250068,61.084570312500034]]],[[[8.10273437500004,63.33759765625004],[7.804003906250017,63.413916015625034],[8.073535156250045,63.47080078124998],[8.10273437500004,63.33759765625004]]],[[[8.470800781250063,63.66713867187502],[8.287109375000028,63.68715820312502],[8.764648437500057,63.804638671874955],[8.78652343750008,63.703466796875034],[8.470800781250063,63.66713867187502]]],[[[11.2314453125,64.865869140625],[10.739843750000034,64.87031250000001],[11.02099609375,64.97871093749995],[11.2314453125,64.865869140625]]],[[[12.971777343750063,67.87412109375],[12.824023437500074,67.82124023437498],[13.068066406250068,68.07133789062505],[12.971777343750063,67.87412109375]]],[[[13.872851562500045,68.26533203125004],[14.096777343750034,68.218603515625],[13.229394531250051,67.995361328125],[13.300195312499994,68.16044921875007],[13.872851562500045,68.26533203125004]]],[[[15.207128906250006,68.943115234375],[15.222070312500023,68.61630859375003],[14.404687500000051,68.663232421875],[15.037792968750068,69.00053710937507],[15.207128906250006,68.943115234375]]],[[[15.760351562500006,68.56123046875001],[16.328906250000017,68.87631835937498],[16.519238281250068,68.63300781249998],[15.975292968750011,68.402490234375],[14.257519531249983,68.19077148437503],[15.412597656250028,68.61582031250003],[15.483007812500006,69.04345703125003],[16.04804687500001,69.30205078125002],[15.760351562500006,68.56123046875001]]],[[[17.503027343750034,69.59624023437502],[18.004101562500068,69.50498046874998],[17.95068359375003,69.19814453125],[17.487890625000063,69.19682617187499],[17.08251953124997,69.013671875],[16.81044921875008,69.07070312499997],[17.001757812500045,69.36191406250006],[17.36083984375003,69.38149414062497],[17.503027343750034,69.59624023437502]]],[[[29.956152343750006,69.79677734375002],[29.766210937500006,69.76752929687501],[29.835839843749994,69.90556640625005],[29.956152343750006,69.79677734375002]]],[[[20.779199218750023,70.08974609375002],[20.46425781250005,70.0765625],[20.492773437500006,70.20332031249995],[20.78603515625008,70.21953124999999],[20.779199218750023,70.08974609375002]]],[[[19.25507812500001,70.06640625000006],[19.607812500000023,70.019140625],[19.334765625000074,69.82026367187501],[18.784765625000034,69.57900390624997],[18.12988281250003,69.557861328125],[18.34931640625004,69.76787109374999],[18.67402343750004,69.78164062500002],[19.13271484375005,70.24414062500003],[19.25507812500001,70.06640625000006]]],[[[19.76748046875005,70.21669921875002],[20.005957031250034,70.07622070312502],[19.599023437499994,70.26616210937507],[19.76748046875005,70.21669921875002]]],[[[23.615332031250034,70.54931640625003],[23.15917968750003,70.28261718750005],[22.941015625000063,70.444580078125],[23.546679687500017,70.61708984374997],[23.615332031250034,70.54931640625003]]],[[[24.01757812500003,70.56738281249997],[23.716601562500074,70.561865234375],[23.778417968750063,70.74736328125005],[24.01757812500003,70.56738281249997]]],[[[23.440527343750063,70.81577148437503],[22.8291015625,70.54155273437505],[22.358691406250017,70.514794921875],[21.99453125000008,70.65712890624997],[23.440527343750063,70.81577148437503]]],[[[30.869726562500006,69.78344726562506],[30.860742187499994,69.53842773437503],[30.18017578124997,69.63583984375],[30.08730468750005,69.43286132812503],[29.38828125,69.29814453125005],[28.96582031250003,69.02197265625],[28.846289062500006,69.17690429687502],[29.33339843750005,69.47299804687503],[29.14160156250003,69.67143554687505],[27.747851562500045,70.06484375],[27.127539062500063,69.90649414062497],[26.525390625000057,69.91503906250003],[26.07246093750004,69.69155273437497],[25.748339843750017,68.99013671875],[24.94140625000003,68.59326171875006],[23.85400390625,68.80590820312503],[23.324023437500017,68.64897460937502],[22.410937500000074,68.719873046875],[21.59375,69.273583984375],[21.06611328125001,69.21411132812497],[21.065722656250017,69.04174804687503],[20.622167968750006,69.036865234375],[20.116699218750057,69.02089843750005],[20.348046875000023,68.84873046875003],[19.969824218750063,68.35639648437501],[18.303027343750045,68.55541992187497],[17.91669921875001,67.96489257812502],[17.324609375000023,68.10380859374999],[16.783593750000023,67.89501953125],[16.12744140625,67.42583007812507],[16.40351562500004,67.05498046875002],[15.422949218750006,66.48984374999998],[15.483789062500051,66.30595703124999],[14.543261718750045,66.12934570312498],[14.47968750000004,65.30146484374998],[13.650292968750023,64.58154296874997],[14.077636718750028,64.464013671875],[14.141210937500006,64.17353515624998],[13.960546875000063,64.01401367187498],[13.203515625000023,64.07509765625],[12.792773437500017,64],[12.175195312500051,63.595947265625],[11.999902343750051,63.29169921875001],[12.303515625000074,62.28559570312501],[12.155371093750006,61.720751953125045],[12.88076171875008,61.35229492187506],[12.706054687500028,61.059863281250074],[12.29414062500004,61.00268554687506],[12.588671874999989,60.450732421875045],[12.486132812500074,60.10678710937506],[11.680761718750034,59.59228515625003],[11.798144531250074,59.28989257812498],[11.64277343750004,58.92607421875002],[11.470703125000057,58.909521484375034],[11.388281250000063,59.036523437499966],[10.834472656250028,59.18393554687498],[10.595312500000063,59.764550781249966],[10.179394531250068,59.00927734375003],[9.842578125000017,58.95849609374997],[9.557226562500063,59.11269531250002],[9.65693359375004,58.97119140624997],[8.166113281250063,58.145312500000045],[7.0048828125,58.024218750000074],[6.877050781250006,58.15073242187498],[6.590527343750068,58.09731445312502],[6.659863281250068,58.26274414062499],[5.706835937500074,58.52363281250001],[5.55556640625008,58.975195312500006],[6.099023437500023,58.87026367187502],[6.363281250000028,59.00092773437501],[6.099414062500017,58.951953125000074],[5.88916015625,59.097949218750045],[5.951855468750068,59.299072265625],[6.415332031250074,59.547119140625],[5.17324218750008,59.16254882812498],[5.2421875,59.564306640625034],[5.472460937500017,59.713085937499955],[5.77216796875004,59.66093749999999],[6.216601562499989,59.818359375],[5.73046875,59.863085937500045],[6.348730468750006,60.35297851562504],[6.57363281250008,60.36059570312497],[6.526855468750057,60.152929687500034],[6.995703125,60.511962890625],[6.1533203125,60.34624023437499],[5.145800781250074,59.63881835937502],[5.205664062500006,60.087939453125045],[5.688574218749977,60.12319335937502],[5.285839843750011,60.20571289062505],[5.13710937500008,60.445605468750074],[5.648339843750051,60.68798828124997],[5.244042968750023,60.569580078125],[5.115820312500006,60.63598632812503],[5.008593750000017,61.038183593750006],[6.777832031250028,61.142431640625006],[7.038671875000063,60.952929687500045],[7.040136718750006,61.091162109375034],[7.604492187500057,61.210546875000034],[7.34658203125008,61.30058593749999],[7.442578125000011,61.43461914062502],[7.173535156250011,61.16596679687501],[6.599902343750017,61.28964843749998],[6.383496093750068,61.133886718750034],[5.451269531250034,61.10234375000002],[5.106738281250017,61.187548828125045],[5.002734375000074,61.43359375],[5.338671875000017,61.485498046874994],[4.927832031249977,61.71069335937506],[4.93007812499999,61.878320312499994],[6.01582031250004,61.7875],[6.730761718750045,61.86977539062505],[5.266894531250045,61.935595703125045],[5.143164062500063,62.159912109375],[5.908300781249977,62.41601562500003],[6.083496093750057,62.349609375],[6.580078125000057,62.407275390625045],[6.692382812500028,62.46806640624999],[6.136132812500051,62.40747070312497],[6.352929687500051,62.61113281249999],[7.653125,62.56401367187499],[7.538378906250074,62.67207031249998],[8.045507812500006,62.77124023437503],[6.734960937500006,62.72070312500003],[6.940429687500028,62.930468750000045],[7.571875,63.09951171875002],[8.100585937500028,63.090966796874966],[8.623144531250006,62.84624023437502],[8.158007812500017,63.16152343750005],[8.635546875000045,63.34233398437502],[8.360742187500023,63.498876953125034],[8.576171875000028,63.60117187499998],[9.135839843750006,63.593652343749966],[9.156054687500045,63.459326171875034],[9.696875,63.624560546875045],[10.020996093750028,63.39082031250004],[10.76015625000008,63.461279296875006],[10.725292968750068,63.625],[11.370703125000034,63.804833984374994],[11.175585937500074,63.89887695312498],[11.457617187500063,64.00297851562505],[11.306640625000028,64.04887695312499],[10.91425781250004,63.92109374999998],[10.934863281250045,63.770214843749955],[10.055078125000051,63.5126953125],[9.567285156250051,63.70615234374998],[10.565625,64.418310546875],[11.523828125000051,64.744384765625],[11.632910156250063,64.81391601562495],[11.296777343750051,64.75478515625],[11.489355468750034,64.975830078125],[12.15966796875,65.178955078125],[12.508398437499977,65.09941406250005],[12.915527343750057,65.33925781249997],[12.417578125000063,65.18408203124997],[12.133886718749977,65.27915039062498],[12.68886718750008,65.90219726562498],[13.033105468750051,65.95625],[12.783789062500063,66.10043945312506],[14.034179687500057,66.29755859374998],[13.118847656250011,66.23066406250004],[13.211425781250028,66.64082031250001],[13.959472656250028,66.79433593750002],[13.651562500000011,66.90708007812498],[14.10878906250008,67.11923828125003],[15.41572265625004,67.20244140625002],[14.441699218750045,67.27138671875005],[14.961914062500057,67.57426757812502],[15.59443359375004,67.34853515625005],[15.691503906250006,67.52138671875],[15.24873046875004,67.6021484375],[15.303906250000011,67.76528320312502],[14.854687500000068,67.66333007812506],[14.798925781250063,67.80932617187503],[15.13427734375,67.97270507812502],[15.621386718750017,67.94829101562502],[15.316015624999977,68.06875],[16.007910156250006,68.22871093750004],[16.312304687500017,67.88144531249998],[16.20380859375001,68.31674804687503],[17.552832031250063,68.42626953125006],[16.51435546875004,68.53256835937503],[18.101464843749994,69.15629882812499],[18.259765625,69.47060546875],[18.915917968750023,69.33559570312502],[18.614453125000068,69.49057617187498],[19.197265625000057,69.74785156249999],[19.722460937500017,69.78164062500002],[19.64150390625005,69.42402343750001],[20.324218750000057,69.94531249999997],[20.054492187500074,69.33266601562497],[20.486718750000023,69.54208984375],[20.739453124999983,69.52050781250003],[20.622070312500057,69.91391601562498],[21.163085937500057,69.88950195312498],[21.432910156250045,70.01318359375006],[21.974707031250034,69.83457031249998],[21.355761718750045,70.23339843749997],[22.321972656250068,70.264501953125],[22.684570312500057,70.374755859375],[23.35390625000008,69.98339843750003],[23.3291015625,70.20722656249995],[24.420019531250034,70.70200195312503],[24.263476562500017,70.82631835937497],[24.658007812500017,71.00102539062505],[25.264648437500057,70.843505859375],[25.768164062500063,70.85317382812502],[25.043847656250023,70.10903320312502],[26.66132812500004,70.93974609374999],[26.585058593750034,70.41000976562498],[26.989355468750063,70.51137695312502],[27.183691406250034,70.74404296875],[27.546484375000063,70.80400390625005],[27.23525390625008,70.94721679687498],[27.59707031250005,71.09130859375003],[28.392285156250068,70.97529296875004],[27.898046875,70.67792968750001],[28.271777343750017,70.66796875000003],[28.192968750000034,70.24858398437505],[28.83154296875003,70.86396484375001],[29.7375,70.646826171875],[30.065136718750097,70.70297851562498],[30.944140625000017,70.27441406249997],[30.262988281250074,70.12470703125004],[28.804296875000063,70.09252929687506],[29.601367187500017,69.97675781249998],[29.792089843750063,69.727880859375],[30.08828125,69.71757812500005],[30.237597656250017,69.86220703125002],[30.428320312500006,69.722265625],[30.869726562500006,69.78344726562506]]],[[[25.58632812500005,71.14208984375],[26.13378906250003,70.99580078125004],[25.582031250000057,70.960791015625],[25.31494140625,71.03413085937504],[25.58632812500005,71.14208984375]]],[[[-8.953564453124983,70.83916015625002],[-8.001367187499966,71.17768554687495],[-8.002099609374937,71.04125976562497],[-8.953564453124983,70.83916015625002]]],[[[19.219335937500006,74.39101562500002],[18.86123046875008,74.51416015624997],[19.182910156250045,74.51791992187503],[19.219335937500006,74.39101562500002]]],[[[21.60810546875004,78.59570312499997],[22.04316406250004,78.57695312500007],[22.29951171875004,78.22817382812497],[23.451953125000074,78.14946289062502],[23.11669921874997,77.99150390624999],[24.901855468750057,77.756591796875],[22.55371093750003,77.26665039062502],[22.685351562500045,77.55351562500002],[20.928125,77.45966796874998],[21.653125,77.92353515624998],[20.22792968750005,78.47783203125005],[21.60810546875004,78.59570312499997]]],[[[11.250292968750017,78.610693359375],[12.116406250000068,78.232568359375],[11.121289062500011,78.46328125],[10.558203125000063,78.90292968750003],[11.250292968750017,78.610693359375]]],[[[29.047070312500068,78.91206054687504],[29.69667968750005,78.90473632812495],[27.88906250000005,78.8521484375],[28.511132812500023,78.96733398437502],[29.047070312500068,78.91206054687504]]],[[[16.786718750000034,79.90673828125],[17.834570312499977,79.80004882812503],[17.66875,79.38593750000004],[18.39736328125008,79.60517578125001],[18.677832031250006,79.26171875000003],[19.893554687500057,79.05620117187499],[20.61103515625004,79.10664062499998],[21.388769531250034,78.74042968749998],[19.67675781250003,78.60957031249995],[16.700488281250045,76.57929687499995],[14.365820312500034,77.23447265625003],[13.995703125000034,77.50820312500002],[14.69501953125004,77.525048828125],[14.920800781250023,77.68881835937506],[17.033300781250006,77.79770507812503],[16.91406250000003,77.89799804687505],[14.089941406250063,77.77138671875],[13.680566406250051,78.028125],[14.307226562500006,78.00507812500001],[15.783886718750011,78.32705078125005],[17.00292968750003,78.36938476562497],[16.44863281250008,78.50356445312502],[16.78261718750008,78.66362304687505],[15.417382812500023,78.47324218749998],[15.384179687500023,78.77119140625001],[15.01630859375004,78.63012695312497],[14.689257812500017,78.720947265625],[14.638281250000034,78.41459960937502],[14.110449218750063,78.27089843749997],[13.150195312499989,78.2375],[11.365429687500011,78.95039062500004],[12.323437500000068,78.91425781249995],[12.083984375000028,79.26752929687498],[11.579785156250068,79.28349609375005],[11.208105468750034,79.12963867187503],[10.737597656250017,79.52016601562502],[10.804003906250045,79.79877929687504],[11.150390625,79.71699218749998],[11.702343750000011,79.82060546875005],[12.287792968750068,79.713134765625],[12.279980468749983,79.81596679687507],[13.692871093749972,79.860986328125],[13.777539062500011,79.71528320312498],[12.555371093750068,79.56948242187502],[13.333789062500017,79.57480468750006],[14.029589843750017,79.34414062500005],[14.59365234375008,79.79873046875002],[16.34375,78.97612304687502],[15.816113281250011,79.68183593750001],[16.245703125000034,80.04946289062502],[16.786718750000034,79.90673828125]]],[[[32.52597656250006,80.119140625],[31.48193359374997,80.10791015625003],[33.62929687499999,80.21743164062497],[32.52597656250006,80.119140625]]],[[[20.897851562500023,80.24995117187501],[22.289746093749983,80.04921874999997],[22.450781250000034,80.40224609375005],[23.00800781250004,80.473974609375],[23.114550781250074,80.18696289062498],[24.29755859375004,80.36040039062505],[26.86083984375,80.16000976562498],[27.19863281250008,79.90659179687506],[25.641210937500034,79.40302734374995],[23.94775390625,79.19428710937498],[22.903710937500023,79.23066406250001],[22.865527343750045,79.41186523437497],[20.861132812500017,79.39785156249997],[20.128222656250074,79.489599609375],[19.674609375000045,79.591162109375],[20.784082031250023,79.74858398437502],[18.725,79.7607421875],[18.25537109375,79.92919921875003],[18.855957031250057,80.03662109375],[17.91689453125005,80.14311523437502],[19.343359375000063,80.11640624999998],[19.733300781249994,80.47783203124999],[20.897851562500023,80.24995117187501]]]]},"properties":{"name":"Norway","childNum":27}},{"geometry":{"type":"Polygon","coordinates":[[[87.984375,27.133935546874994],[87.9931640625,27.086083984374994],[88.11103515625001,26.928466796875],[88.1572265625,26.807324218749997],[88.16152343750002,26.724804687499997],[88.11152343750001,26.58642578125],[88.05488281250001,26.430029296875],[88.02695312500003,26.39501953125],[87.9951171875,26.382373046874996],[87.28740234374999,26.360302734374997],[87.01640624999999,26.555419921875],[86.70136718750001,26.43505859375],[86.00732421875,26.649365234374997],[85.79453125000003,26.604150390624994],[85.7373046875,26.63974609375],[85.6484375,26.829003906249994],[85.56845703125003,26.83984375],[85.29296875,26.741015625],[85.19179687500002,26.766552734374997],[84.68535156249999,27.041015625],[84.65380859375,27.091699218749994],[84.65478515625,27.203662109374996],[84.64072265625003,27.249853515625],[84.61015624999999,27.298681640625],[84.48085937500002,27.348193359374996],[84.22978515624999,27.42783203125],[84.09101562500001,27.491357421874994],[83.82880859375001,27.377832031249994],[83.74697265625002,27.395947265624997],[83.55166015625002,27.456347656249996],[83.44716796875002,27.46533203125],[83.38398437500001,27.44482421875],[83.36943359374999,27.41025390625],[83.28974609375001,27.370996093749994],[82.7333984375,27.518994140624997],[82.71083984375002,27.5966796875],[82.67734375000003,27.6734375],[82.6298828125,27.687060546874996],[82.45136718750001,27.671826171874997],[82.28769531250003,27.756542968749997],[82.11191406250003,27.864941406249997],[82.03701171875002,27.900585937499997],[81.98769531250002,27.913769531249997],[81.94521484375002,27.899267578125],[81.896875,27.874462890624997],[81.85263671875003,27.867089843749994],[81.1689453125,28.335009765624996],[80.58701171875003,28.649609375],[80.51787109374999,28.665185546874994],[80.49580078125001,28.635791015624996],[80.47910156250003,28.604882812499994],[80.41855468750003,28.612011718749997],[80.32480468750003,28.66640625],[80.2265625,28.723339843749997],[80.07070312500002,28.83017578125],[80.05166015625002,28.8703125],[80.08457031250003,28.994189453124996],[80.13046875000003,29.100390625],[80.16953125000003,29.124316406249996],[80.23300781250003,29.194628906249996],[80.25595703125003,29.318017578124994],[80.2548828125,29.42333984375],[80.31689453125,29.572070312499996],[80.40185546875,29.730273437499996],[80.54902343750001,29.899804687499994],[80.81992187500003,30.119335937499997],[80.84814453125,30.13974609375],[80.90761718750002,30.171923828124996],[80.96611328124999,30.180029296875],[81.17714843750002,30.039892578125],[81.25507812500001,30.093310546874996],[81.41718750000001,30.337597656249997],[81.64189453124999,30.3875],[81.85488281250002,30.36240234375],[82.04335937500002,30.3267578125],[82.220703125,30.063867187499994],[83.15546875000001,29.612646484375],[83.58349609375,29.18359375],[83.93593750000002,29.279492187499997],[84.02197265625,29.253857421874997],[84.10136718749999,29.219970703125],[84.12783203125002,29.156298828124996],[84.17558593749999,29.036376953125],[84.22871093750001,28.911767578124994],[84.796875,28.560205078124994],[84.85507812500003,28.553613281249994],[85.06914062499999,28.609667968749996],[85.12636718750002,28.60263671875],[85.15908203125002,28.592236328124997],[85.16015625,28.571875],[85.12148437500002,28.484277343749994],[85.08857421875001,28.372265625],[85.12246093750002,28.315966796874996],[85.21210937500001,28.292626953124994],[85.41064453125,28.276025390624994],[85.67832031250003,28.27744140625],[85.75947265625001,28.220654296874997],[85.84023437500002,28.1353515625],[85.92167968749999,27.989697265624997],[85.9541015625,27.92822265625],[85.99453125000002,27.910400390625],[86.06416015625001,27.934716796874994],[86.07871093750003,28.08359375],[86.13701171874999,28.11435546875],[86.21796875000001,28.0220703125],[86.32861328125,27.959521484374996],[86.40869140625,27.928662109374997],[86.51689453124999,27.963525390624994],[86.55449218749999,28.085205078125],[86.61445312500001,28.10302734375],[86.69052734375003,28.094921875],[86.71962890625002,28.070654296875],[86.75039062500002,28.0220703125],[86.93378906250001,27.968457031249997],[87.02011718750003,27.928662109374997],[87.14140624999999,27.838330078124997],[87.29072265625001,27.821923828124994],[87.62255859375,27.815185546875],[87.86074218750002,27.886083984375],[88.10976562500002,27.87060546875],[87.984375,27.133935546874994]]]},"properties":{"name":"Nepal","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[169.17822265624997,-52.497265625],[169.12753906250006,-52.570312499999964],[169.02177734375002,-52.49541015624998],[169.17822265624997,-52.497265625]]],[[[166.22109375,-50.76152343749997],[166.2428710937501,-50.84570312499998],[165.88916015624997,-50.80771484374996],[166.10136718750002,-50.538964843750016],[166.26748046875005,-50.558593750000014],[166.22109375,-50.76152343749997]]],[[[168.14492187500005,-46.862207031249966],[168.04316406250004,-46.9326171875],[168.2409179687501,-47.070019531250026],[167.52197265624997,-47.258691406249994],[167.80078125000003,-46.90654296875002],[167.78398437500007,-46.699804687500006],[167.9557617187501,-46.69443359374998],[168.14492187500005,-46.862207031249966]]],[[[166.97949218749997,-45.17968750000003],[167.02265625000004,-45.299804687499986],[166.89267578125012,-45.24052734374999],[166.97949218749997,-45.17968750000003]]],[[[-176.17763671874997,-43.74033203124998],[-176.38173828124997,-43.86679687499998],[-176.40737304687497,-43.7609375],[-176.516552734375,-43.78476562499996],[-176.33359375000003,-44.02529296875004],[-176.51552734374997,-44.11660156249998],[-176.62934570312495,-44.036132812500014],[-176.55512695312504,-43.85195312499998],[-176.84765625000003,-43.82392578125004],[-176.56611328124995,-43.717578125000045],[-176.17763671874997,-43.74033203124998]]],[[[173.91464843750018,-40.86367187500004],[173.78085937500012,-40.921777343749966],[173.964453125,-40.71298828124998],[173.91464843750018,-40.86367187500004]]],[[[173.11533203125006,-41.27929687499997],[173.94716796875005,-40.92412109375],[173.79785156250003,-41.271972656249986],[173.99941406250005,-40.99326171874996],[174.30253906249996,-41.019531249999986],[174.03857421875003,-41.24189453125],[174.37011718750009,-41.1037109375],[174.06933593750009,-41.42949218750002],[174.08369140625015,-41.67080078124998],[174.2831054687501,-41.740625],[173.22119140624997,-42.976562499999986],[172.62402343749997,-43.27246093749996],[172.73476562500005,-43.35478515625003],[172.52666015625002,-43.464746093749966],[172.69345703125006,-43.444335937499986],[172.80703125000005,-43.620996093749994],[173.07324218750003,-43.676171874999966],[173.065625,-43.87460937499998],[172.50273437500002,-43.84365234374998],[172.48037109375,-43.726660156250034],[172.29658203125004,-43.867871093750026],[172.035546875,-43.70175781250002],[172.17978515625006,-43.895996093749986],[171.24072265624997,-44.26416015625003],[171.14628906250002,-44.9123046875],[170.99902343750003,-44.91142578124999],[171.11328125000003,-45.03925781250001],[170.7005859375,-45.68427734374997],[170.77626953125005,-45.870898437499974],[170.4191406250001,-45.94101562499996],[169.68662109375006,-46.55166015625002],[169.34228515625003,-46.62050781250001],[168.38212890625007,-46.60537109374995],[168.1891601562501,-46.362207031249966],[167.8419921875001,-46.366210937499986],[167.539453125,-46.14853515624996],[167.36894531250007,-46.24150390624999],[166.73154296875006,-46.19785156249998],[166.91669921875004,-45.95722656249998],[166.64990234374997,-46.04169921875004],[166.71796875000004,-45.88935546875001],[166.49316406249997,-45.9638671875],[166.48828124999997,-45.83183593750002],[167.0033203125,-45.71210937500004],[166.79765625000002,-45.64560546874999],[166.99082031250012,-45.531738281249986],[166.73398437500012,-45.54355468749999],[166.74306640625,-45.46845703124997],[166.91992187499997,-45.40791015624998],[166.86923828125006,-45.31123046875],[167.15566406250005,-45.410937499999974],[167.23007812500012,-45.29033203125],[167.02587890624997,-45.12363281249998],[167.25947265625004,-45.08222656249997],[167.19453125000004,-44.963476562500034],[167.41074218750006,-44.82792968750003],[167.4662109375,-44.958300781250045],[167.48496093750006,-44.77138671874998],[167.78701171875,-44.59501953125002],[167.90898437500002,-44.66474609375001],[167.85654296875012,-44.50068359374998],[168.45742187500005,-44.030566406250045],[169.17890625000004,-43.9130859375],[169.16953125000006,-43.77705078125],[169.83388671875,-43.53701171875004],[170.24023437499997,-43.163867187500045],[170.39609375000012,-43.18222656249996],[170.30283203125012,-43.10761718750004],[170.61181640625003,-43.091796875000014],[170.5236328125001,-43.00898437500001],[170.6654296875,-42.961230468749974],[170.73525390625005,-43.029785156249986],[170.96992187500004,-42.71835937499996],[171.01171875000003,-42.88505859374999],[171.027734375,-42.696093750000045],[171.31337890625005,-42.460156250000026],[171.48623046875,-41.7947265625],[171.94804687500002,-41.53867187499996],[172.13945312500002,-40.947265625000014],[172.640625,-40.51826171875001],[172.94365234375007,-40.51875],[172.73261718750004,-40.54375],[172.70439453125002,-40.6677734375],[172.988671875,-40.84824218749999],[173.11533203125006,-41.27929687499997]]],[[[175.54316406250015,-36.279296874999986],[175.34619140624997,-36.217773437499986],[175.3895507812501,-36.07773437499996],[175.54316406250015,-36.279296874999986]]],[[[173.26943359375,-34.93476562499998],[173.44785156250012,-34.844335937500034],[173.47265625000003,-34.94697265624998],[174.10400390625003,-35.14287109375002],[174.1431640625,-35.3],[174.32031250000003,-35.246679687500034],[174.58066406250018,-35.78554687500004],[174.39580078124996,-35.79736328124996],[174.8021484375,-36.30947265625001],[174.72246093750007,-36.84121093749998],[175.29951171875004,-36.99326171874996],[175.38535156250012,-37.206933593749966],[175.54248046874997,-37.2013671875],[175.46083984375005,-36.475683593750034],[175.77216796875004,-36.73515625],[176.10839843749997,-37.64511718749998],[177.27402343750012,-37.993457031249974],[178.0091796875,-37.55488281249998],[178.53623046875006,-37.69208984375004],[178.26767578125006,-38.551171875],[177.976171875,-38.72226562500005],[177.90878906250012,-39.23955078125],[177.52294921875003,-39.07382812499999],[177.07675781250012,-39.22177734375002],[176.93925781249996,-39.55527343750002],[177.10986328125009,-39.673144531250045],[176.8421875000001,-40.15781250000002],[175.98291015625003,-41.21328125000002],[175.30976562499998,-41.610644531249974],[175.16562500000012,-41.41738281249995],[174.88134765624997,-41.42402343749997],[174.8656250000001,-41.223046874999966],[174.63535156250012,-41.28945312499999],[175.1625,-40.62158203125],[175.25410156250004,-40.28935546875],[175.1559570312501,-40.11494140625],[175.00927734375009,-39.95214843749996],[173.93437500000013,-39.50908203125002],[173.76367187499997,-39.31875],[173.84433593750006,-39.13935546875001],[174.39843749999997,-38.96259765624998],[174.59736328124998,-38.78505859374995],[174.80166015625005,-37.895507812500014],[174.92802734375002,-37.80449218750003],[174.58583984374994,-37.09775390625002],[174.73427734375,-37.21523437499998],[174.92890625000004,-37.084765625000045],[174.78203125000013,-36.94375],[174.47558593750009,-36.94189453124997],[174.1888671875001,-36.492285156250034],[174.4015625000001,-36.60195312499999],[174.39277343750004,-36.24003906249999],[174.26787109375002,-36.16308593750003],[174.25371093749996,-36.24912109374998],[174.03642578125013,-36.12246093750001],[173.91445312499994,-35.908691406249986],[173.91728515625002,-36.01816406249999],[174.16640624999994,-36.327636718749986],[174.05468749999991,-36.35976562500004],[173.41220703125012,-35.542578125],[173.62617187500004,-35.31914062499996],[173.3763671875001,-35.50009765624996],[173.31396484375003,-35.44335937499996],[173.11669921874997,-35.205273437500026],[173.190625,-35.01621093749998],[172.70595703125005,-34.45517578124998],[173.04394531249997,-34.429101562499994],[172.96376953125,-34.53515625000003],[173.26943359375,-34.93476562499998]]]]},"properties":{"name":"New Zealand","childNum":9}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[58.722070312499994,20.21875],[58.640917968750074,20.210693359375057],[58.64121093750006,20.33735351562501],[58.884375,20.680566406250023],[58.95078125000006,20.516162109375017],[58.722070312499994,20.21875]]],[[[56.38798828125002,24.97919921875004],[56.640625,24.4703125],[57.12304687500003,23.980712890625],[58.773046875,23.517187499999977],[59.42939453125004,22.660839843749955],[59.82324218749997,22.50898437500004],[59.8,22.21992187500001],[59.37148437500005,21.498828125000017],[58.89570312500004,21.11279296874997],[58.47421875000006,20.406884765624966],[58.20898437500003,20.423974609374994],[58.245019531249994,20.599218749999977],[58.16943359375003,20.58950195312505],[57.86181640624997,20.24414062500003],[57.71416015625002,19.678417968749983],[57.81162109375006,19.01708984374997],[56.825976562500074,18.753515625],[56.3834960937501,17.98798828125001],[55.479101562500006,17.84326171875003],[55.25537109375003,17.58564453125004],[55.275195312500074,17.320898437500006],[55.06416015625004,17.038916015625034],[54.06816406250002,17.005517578124966],[53.60986328124997,16.75996093750004],[53.08564453125004,16.648388671874955],[51.977636718750006,18.996142578125074],[54.97734375000002,19.995947265625006],[55.64101562499999,22.001855468749994],[55.185839843750074,22.7041015625],[55.1999023437501,23.034765625000034],[55.53164062499999,23.81904296875001],[55.4684570312501,23.94111328125001],[55.98515625000002,24.063378906249966],[55.92861328125005,24.215136718750074],[55.76083984375006,24.24267578125],[55.795703125000074,24.868115234374955],[56.00058593750006,24.953222656249977],[56.06386718750005,24.73876953125],[56.38798828125002,24.97919921875004]]],[[[56.29785156250003,25.650683593750045],[56.144628906250006,25.690527343750006],[56.16748046875003,26.047460937499977],[56.08046875,26.06264648437505],[56.41308593749997,26.351171875000034],[56.29785156250003,25.650683593750045]]]]},"properties":{"name":"Oman","childNum":3}},{"geometry":{"type":"Polygon","coordinates":[[[73.08961802927895,36.86435907947333],[73.08203125000107,36.43949943991182],[72.31128647748268,35.77290936638241],[73.13410859949555,34.82510160558277],[73.19895048106557,33.88770931468204],[74.00809389139292,33.25375789331485],[73.98984375,33.22119140625],[74.30361328125002,32.991796875],[74.30546875000002,32.810449218749994],[74.35458984375,32.768701171874994],[74.58828125000002,32.753222656249996],[74.632421875,32.770898437499994],[74.66328125000001,32.757666015625],[74.64335937500002,32.607714843749996],[74.68574218750001,32.493798828124994],[74.78886718750002,32.4578125],[74.9873046875,32.462207031249996],[75.33349609375,32.279199218749994],[75.25410156250001,32.14033203125],[75.13876953125,32.104785156249996],[75.07148437500001,32.08935546875],[74.73945312500001,31.948828125],[74.6357421875,31.88974609375],[74.55556640625002,31.818554687499997],[74.5259765625,31.76513671875],[74.50996093750001,31.712939453124996],[74.58183593750002,31.52392578125],[74.59394531250001,31.465380859374996],[74.53496093750002,31.261376953124994],[74.51767578125,31.185595703124996],[74.6103515625,31.112841796874996],[74.62578125000002,31.06875],[74.6328125,31.03466796875],[74.509765625,30.959667968749997],[74.38037109375,30.893408203125],[74.33935546875,30.8935546875],[74.00898437500001,30.519677734374994],[73.89931640625002,30.435351562499996],[73.88271484375002,30.3521484375],[73.92460937500002,30.28164062499999],[73.93339843750002,30.222070312499994],[73.88652343750002,30.162011718749994],[73.8091796875,30.093359375],[73.38164062500002,29.934375],[72.9033203125,29.028759765624997],[72.34189453125,28.751904296874997],[72.2919921875,28.697265625],[72.128515625,28.346337890624994],[71.94804687500002,28.177294921874996],[71.88886718750001,28.0474609375],[71.87031250000001,27.9625],[71.54296875,27.869873046875],[71.18476562500001,27.831640625],[70.87490234375002,27.714453125],[70.79794921875,27.709619140624994],[70.69160156250001,27.768994140624997],[70.62910156250001,27.937451171874997],[70.40371093750002,28.025048828124994],[70.24433593750001,27.934130859374996],[70.1939453125,27.894873046875],[70.14453125,27.849023437499994],[70.0498046875,27.694726562499994],[69.89628906250002,27.4736328125],[69.56796875,27.174609375],[69.47001953125002,26.804443359375],[70.11464843750002,26.548046875],[70.14921875000002,26.347558593749994],[70.1001953125,25.910058593749994],[70.2646484375,25.70654296875],[70.3251953125,25.685742187499997],[70.44853515625002,25.681347656249997],[70.505859375,25.685302734375],[70.56953125000001,25.705957031249994],[70.6484375,25.666943359374997],[70.65205078125001,25.422900390625003],[70.87773437500002,25.06298828125],[70.95087890625001,24.8916015625],[71.02070312500001,24.75766601562499],[71.0478515625,24.687744140625],[71.00234375000002,24.65390625],[70.97636718750002,24.61875],[70.96982421875,24.571875],[71.04531250000002,24.429980468750003],[71.04404296875,24.400097656249997],[70.98281250000002,24.361035156249997],[70.928125,24.362353515625003],[70.88623046875,24.34375],[70.80507812500002,24.261962890625],[70.76728515625001,24.245410156250003],[70.71630859375,24.237988281249997],[70.65947265625002,24.24609375],[70.57929687500001,24.279052734375],[70.55585937500001,24.331103515625003],[70.5650390625,24.385791015625003],[70.54677734375002,24.41831054687499],[70.2890625,24.35629882812499],[70.0982421875,24.2875],[69.80517578125,24.165234375],[69.71621093750002,24.172607421875],[69.63417968750002,24.22519531249999],[69.5591796875,24.273095703124994],[69.44345703125,24.275390625],[69.23505859375001,24.268261718749997],[69.11953125000002,24.26865234374999],[69.05156250000002,24.286328125],[68.98457031250001,24.273095703124994],[68.90078125000002,24.292431640624997],[68.86347656250001,24.266503906249994],[68.82832031250001,24.26401367187499],[68.78115234375002,24.313720703125],[68.75898437500001,24.30722656249999],[68.73964843750002,24.2919921875],[68.728125,24.265625],[68.72412109375,23.96469726562499],[68.48867187500002,23.967236328124997],[68.38125,23.950878906249997],[68.28251953125002,23.927978515625],[68.1650390625,23.857324218749994],[68.11552734375002,23.753369140624997],[67.8599609375,23.90268554687499],[67.66845703125,23.810986328124997],[67.309375,24.1748046875],[67.171484375,24.756103515625],[66.70302734375002,24.8609375],[66.69863281250002,25.226318359375],[66.32421875,25.601806640625],[66.13115234375002,25.49326171874999],[66.46767578125002,25.4453125],[64.77666015625002,25.307324218749997],[64.65898437500002,25.18408203125],[64.059375,25.40292968749999],[63.556640625,25.353173828124994],[63.49140625000001,25.210839843749994],[61.56689453125,25.186328125],[61.587890625,25.20234375],[61.61542968750001,25.2861328125],[61.64013671875,25.584619140624994],[61.67138671875,25.6923828125],[61.66181640625001,25.751269531250003],[61.66865234375001,25.768994140624997],[61.73769531250002,25.82109375],[61.75439453125,25.84335937499999],[61.78076171875,25.995849609375],[61.80996093750002,26.165283203125],[61.842382812500006,26.225927734375],[62.1259765625,26.368994140625],[62.239355468750006,26.35703125],[62.31230468750002,26.490869140624994],[63.168066406250006,26.665576171874996],[63.186132812500006,26.837597656249997],[63.24160156250002,26.86474609375],[63.25039062500002,26.879248046875],[63.24208984375002,27.077685546874996],[63.30517578125,27.124560546874996],[63.30156250000002,27.15146484375],[63.25625,27.207910156249994],[63.19609375000002,27.243945312499996],[63.16679687500002,27.252490234374996],[62.75273437500002,27.265625],[62.782324218750006,27.800537109375],[62.7625,28.202050781249994],[61.88984375000001,28.546533203124994],[61.15214843750002,29.542724609375],[61.0341796875,29.663427734375],[60.843359375,29.858691406249996],[61.22441406250002,29.749414062499994],[62.0009765625,29.530419921874994],[62.4765625,29.408349609374994],[63.56757812500001,29.497998046874997],[64.09873046875,29.391943359375],[64.39375,29.544335937499994],[65.09550781250002,29.559472656249994],[66.23125,29.86572265625],[66.346875,30.802783203124996],[66.82929687500001,31.263671875],[67.45283203125001,31.234619140625],[67.737890625,31.343945312499997],[67.57822265625,31.506494140624994],[68.16103515625002,31.802978515625],[68.59765625,31.802978515625],[68.86894531250002,31.634228515624997],[69.279296875,31.936816406249996],[69.24140625000001,32.433544921875],[69.5015625,33.020068359374996],[70.26113281250002,33.289013671875],[69.8896484375,34.007275390625],[70.65400390625001,33.952294921874994],[71.05156250000002,34.049707031249994],[71.095703125,34.369433593749996],[70.965625,34.53037109375],[71.62050781250002,35.183007812499994],[71.57197265625001,35.546826171875],[71.18505859375,36.04208984375],[71.23291015625,36.12177734375],[72.24980468750002,36.734716796875],[73.08961802927895,36.86435907947333]]]},"properties":{"name":"Pakistan","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-81.60327148437497,7.332812499999989],[-81.85205078125003,7.453320312500026],[-81.812158203125,7.59238281250002],[-81.72875976562494,7.62119140625002],[-81.60327148437497,7.332812499999989]]],[[[-78.89833984375002,8.27426757812502],[-78.960595703125,8.435839843749989],[-78.88325195312495,8.460253906249989],[-78.89833984375002,8.27426757812502]]],[[[-77.37421874999993,8.65830078125002],[-77.47851562499994,8.498437500000037],[-77.19599609374995,7.972460937500003],[-77.53828124999995,7.56625976562502],[-77.76191406249995,7.698828125000034],[-77.90117187499999,7.229345703125048],[-78.42158203124995,8.060986328125011],[-78.28735351562497,8.091796874999972],[-78.14189453125002,8.386083984374977],[-77.76054687499993,8.133251953124983],[-78.09946289062498,8.496972656250009],[-78.22304687500002,8.396630859374994],[-78.39921874999993,8.505664062500003],[-78.40986328124998,8.35532226562502],[-78.51406249999997,8.628173828125],[-79.08637695312495,8.997167968750034],[-79.50708007812494,8.97006835937502],[-79.68745117187493,8.850976562500009],[-79.81591796875,8.639208984375031],[-79.75043945312498,8.595507812500017],[-80.458984375,8.213867187499972],[-80.45810546875,8.077050781249994],[-80.01123046875,7.500048828125031],[-80.66669921874995,7.225683593750006],[-80.90122070312503,7.277148437500017],[-81.06386718749994,7.89975585937502],[-81.26840820312495,7.625488281250014],[-81.50415039062503,7.721191406249972],[-81.72763671875,8.137548828124977],[-82.15986328124995,8.19482421875],[-82.23544921874998,8.311035156250057],[-82.67954101562503,8.321972656249969],[-82.86611328124994,8.246337890625014],[-82.87934570312498,8.07065429687502],[-83.02734375,8.337744140624991],[-82.86162109374999,8.453515625000037],[-82.84477539062493,8.489355468749963],[-82.85571289062494,8.635302734375031],[-82.91704101562502,8.740332031250034],[-82.88198242187497,8.805322265625037],[-82.72783203125002,8.916064453125031],[-82.78305664062498,8.990283203124974],[-82.88134765625003,9.055859375000011],[-82.94033203124997,9.060107421874989],[-82.93984374999994,9.449169921875026],[-82.92504882812494,9.469042968749989],[-82.88896484374999,9.481005859375017],[-82.86015625,9.511474609375014],[-82.84399414062497,9.570800781250014],[-82.801025390625,9.591796875000028],[-82.64409179687502,9.505859375000028],[-82.56357421875003,9.576660156249972],[-82.50034179687503,9.523242187500017],[-82.37080078124993,9.428564453124991],[-82.33974609375,9.209179687499983],[-82.18813476562502,9.191748046874977],[-82.24418945312499,9.031494140625014],[-82.07788085937503,8.93486328124996],[-81.78022460937495,8.957226562499983],[-81.89448242187495,9.140429687500003],[-81.35478515624996,8.78056640624996],[-80.83867187499999,8.887207031250014],[-80.12709960937497,9.20991210937504],[-79.57729492187497,9.597851562500026],[-78.08276367187494,9.236279296874997],[-77.37421874999993,8.65830078125002]]]]},"properties":{"name":"Panama","childNum":3}},{"geometry":{"type":"Polygon","coordinates":[[[-73.137353515625,-6.4658203125],[-73.75810546874999,-6.90576171875],[-73.79301757812499,-7.135058593750003],[-73.758203125,-7.172753906250009],[-73.72041015625,-7.309277343750011],[-73.964306640625,-7.37890625],[-73.95849609375,-7.506640625],[-73.98173828124999,-7.535742187500006],[-74.00205078124999,-7.556054687500009],[-73.98173828124999,-7.585058593750006],[-73.946875,-7.611230468750009],[-73.89462890624999,-7.65478515625],[-73.82207031249999,-7.738964843750011],[-73.76689453124999,-7.753515625],[-73.72041015625,-7.782519531250003],[-73.73203125,-7.875390625],[-73.54912109374999,-8.345800781250006],[-73.39814453125,-8.458984375],[-73.36040039062499,-8.479296875],[-73.351708984375,-8.51416015625],[-73.35673828124999,-8.566992187500006],[-73.30244140625,-8.654003906250011],[-73.203125,-8.719335937500006],[-73.0705078125,-8.8828125],[-72.9740234375,-8.9931640625],[-72.970361328125,-9.1201171875],[-73.08984375,-9.265722656250006],[-73.209423828125,-9.411425781250003],[-72.379052734375,-9.51015625],[-72.181591796875,-10.003710937500003],[-71.33940429687499,-9.988574218750003],[-71.11528320312499,-9.852441406250009],[-71.041748046875,-9.81875],[-70.6369140625,-9.478222656250011],[-70.60791015625,-9.463671875],[-70.54111328124999,-9.4375],[-70.57016601562499,-9.48984375],[-70.592236328125,-9.54345703125],[-70.59916992187499,-9.620507812500009],[-70.642333984375,-11.01025390625],[-70.59653320312499,-10.976855468750003],[-70.53325195312499,-10.946875],[-70.45087890625,-11.024804687500009],[-70.39228515625,-11.05859375],[-70.3419921875,-11.066699218750003],[-70.29038085937499,-11.064257812500003],[-70.22006835937499,-11.04765625],[-70.06630859375,-10.982421875],[-69.9603515625,-10.929882812500011],[-69.839794921875,-10.933398437500003],[-69.6740234375,-10.9541015625],[-69.57861328125,-10.951757812500006],[-68.68525390625,-12.501953125],[-68.97861328124999,-12.880078125000011],[-69.07412109375,-13.682812500000011],[-68.87089843749999,-14.169726562500003],[-69.35947265624999,-14.7953125],[-69.37470703125,-14.962988281250006],[-69.17246093749999,-15.236621093750003],[-69.4208984375,-15.640625],[-69.21757812499999,-16.14912109375001],[-68.8427734375,-16.337890625],[-69.03291015625,-16.47597656250001],[-69.020703125,-16.6421875],[-69.62485351562499,-17.2001953125],[-69.645703125,-17.24853515625],[-69.521923828125,-17.388964843750003],[-69.510986328125,-17.46035156250001],[-69.51108398437499,-17.5048828125],[-69.5109375,-17.50605468750001],[-69.58642578125,-17.5732421875],[-69.684765625,-17.64980468750001],[-69.85209960937499,-17.70380859375001],[-69.80258789062499,-17.990234375],[-69.92636718749999,-18.2060546875],[-70.41826171874999,-18.34560546875001],[-71.33696289062499,-17.68251953125001],[-71.5322265625,-17.29433593750001],[-72.46767578125,-16.708105468750006],[-73.727685546875,-16.20166015625],[-75.104248046875,-15.411914062500003],[-75.533642578125,-14.89921875],[-75.93388671874999,-14.63359375],[-76.37646484375,-13.863085937500003],[-76.259228515625,-13.802832031250006],[-76.2236328125,-13.371191406250006],[-76.83212890624999,-12.348730468750006],[-77.152734375,-12.060351562500003],[-77.2203125,-11.663378906250003],[-77.633203125,-11.287792968750011],[-77.736083984375,-10.83671875],[-78.18559570312499,-10.089062500000011],[-78.76225585937499,-8.616992187500003],[-79.37724609374999,-7.835546875],[-79.99497070312499,-6.768945312500009],[-81.142041015625,-6.056738281250006],[-81.164306640625,-5.875292968750003],[-80.9306640625,-5.8408203125],[-80.88193359374999,-5.635058593750003],[-81.33662109375,-4.66953125],[-81.283203125,-4.322265625],[-80.503662109375,-3.49609375],[-80.324658203125,-3.387890625000011],[-80.24375,-3.576757812500006],[-80.19414062499999,-3.905859375],[-80.23051757812499,-3.924023437500011],[-80.26689453124999,-3.948828125],[-80.30327148437499,-4.005078125000011],[-80.43720703125,-3.978613281250006],[-80.49013671875,-4.010058593750003],[-80.510009765625,-4.069531250000011],[-80.49345703124999,-4.119140625],[-80.4884765625,-4.16552734375],[-80.453759765625,-4.205175781250006],[-80.35288085937499,-4.20849609375],[-80.44384765625,-4.335839843750009],[-80.4884765625,-4.393652343750006],[-80.47856445312499,-4.430078125],[-80.42416992187499,-4.46142578125],[-80.38349609375,-4.463671875],[-80.293359375,-4.416796875],[-80.1974609375,-4.31103515625],[-80.13955078125,-4.296093750000011],[-80.06352539062499,-4.327539062500009],[-79.962890625,-4.390332031250011],[-79.8451171875,-4.445898437500006],[-79.797265625,-4.476367187500003],[-79.71098632812499,-4.467578125],[-79.63852539062499,-4.454882812500003],[-79.57768554687499,-4.500585937500006],[-79.51616210937499,-4.539160156250006],[-79.501904296875,-4.670605468750011],[-79.45576171875,-4.766210937500006],[-79.3994140625,-4.840039062500011],[-79.33095703125,-4.927832031250006],[-79.26811523437499,-4.957617187500006],[-79.186669921875,-4.958203125000011],[-79.07626953124999,-4.990625],[-79.03330078124999,-4.969140625],[-78.995263671875,-4.908007812500003],[-78.97539062499999,-4.873242187500011],[-78.919189453125,-4.8583984375],[-78.92578125,-4.770703125000011],[-78.9076171875,-4.714453125],[-78.8615234375,-4.6650390625],[-78.68603515625,-4.562402343750009],[-78.64799804687499,-4.248144531250006],[-78.345361328125,-3.397363281250009],[-78.240380859375,-3.472558593750009],[-77.860595703125,-2.981640625000011],[-76.6791015625,-2.562597656250006],[-76.089794921875,-2.133105468750003],[-75.570556640625,-1.53125],[-75.42041015625,-0.962207031250003],[-75.40805664062499,-0.92431640625],[-75.24960937499999,-0.951855468750011],[-75.259375,-0.590136718750003],[-75.42470703125,-0.408886718750011],[-75.49106445312499,-0.248339843750003],[-75.56059570312499,-0.200097656250009],[-75.63203125,-0.157617187500009],[-75.62626953124999,-0.122851562500003],[-75.340478515625,-0.1421875],[-75.13837890625,-0.050488281250011],[-74.8017578125,-0.200097656250009],[-74.78046875,-0.24453125],[-74.75537109375,-0.298632812500003],[-74.691650390625,-0.335253906250003],[-74.616357421875,-0.370019531250009],[-74.555078125,-0.429882812500011],[-74.5138671875,-0.470117187500009],[-74.46518554687499,-0.517675781250006],[-74.41787109375,-0.580664062500006],[-74.334423828125,-0.850878906250003],[-74.28388671875,-0.927832031250006],[-74.24638671874999,-0.970605468750009],[-74.05439453125,-1.028613281250003],[-73.98681640625,-1.09814453125],[-73.926953125,-1.125195312500011],[-73.86318359375,-1.196679687500009],[-73.664306640625,-1.248828125],[-73.4962890625,-1.693066406250011],[-73.19697265625,-1.830273437500011],[-73.1544921875,-2.278222656250009],[-72.9896484375,-2.339746093750009],[-72.94111328125,-2.39404296875],[-72.21845703125,-2.400488281250006],[-71.98427734375,-2.3265625],[-71.93247070312499,-2.288671875],[-71.86728515624999,-2.227734375000011],[-71.802734375,-2.166308593750003],[-71.75253906249999,-2.152734375],[-71.55947265625,-2.22421875],[-71.39697265625,-2.334082031250006],[-71.19638671874999,-2.313085937500006],[-71.11337890624999,-2.245410156250003],[-71.027294921875,-2.225781250000011],[-70.96855468749999,-2.206835937500003],[-70.70537109374999,-2.341992187500011],[-70.64799804687499,-2.40576171875],[-70.57587890625,-2.418261718750003],[-70.29462890625,-2.552539062500003],[-70.24443359374999,-2.606542968750006],[-70.16474609375,-2.639843750000011],[-70.095849609375,-2.658203125],[-70.735107421875,-3.781542968750003],[-70.5296875,-3.866406250000011],[-70.48583984375,-3.869335937500011],[-70.42109375,-3.849609375],[-70.37919921874999,-3.81875],[-70.339501953125,-3.814355468750009],[-70.2984375,-3.84423828125],[-70.24028320312499,-3.882714843750009],[-70.16752929687499,-4.050195312500009],[-70.0171875,-4.162011718750009],[-69.96591796874999,-4.2359375],[-69.97202148437499,-4.301171875],[-70.00395507812499,-4.327246093750006],[-70.05332031249999,-4.333105468750006],[-70.12880859375,-4.28662109375],[-70.23916015625,-4.301171875],[-70.31689453125,-4.246972656250009],[-70.34365234375,-4.193652343750003],[-70.40463867187499,-4.150097656250011],[-70.5306640625,-4.167578125],[-70.72158203125,-4.158886718750011],[-70.79951171875,-4.17333984375],[-70.97368164062499,-4.350488281250009],[-71.8447265625,-4.50439453125],[-72.256787109375,-4.748925781250009],[-72.35283203124999,-4.786035156250009],[-72.468994140625,-4.901269531250009],[-72.608349609375,-5.009570312500003],[-72.69873046875,-5.0671875],[-72.83193359375,-5.09375],[-72.88706054687499,-5.122753906250011],[-72.9798828125,-5.634863281250006],[-73.16289062499999,-5.933398437500003],[-73.209375,-6.028710937500009],[-73.235546875,-6.0984375],[-73.137353515625,-6.4658203125]]]},"properties":{"name":"Peru","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[120.250390625,5.256591796875043],[119.82148437500004,5.06953125000004],[120.1652343750001,5.332421875000037],[120.250390625,5.256591796875043]]],[[[121.159375,6.075634765625011],[121.41103515625005,5.939843749999966],[121.29443359374997,5.869970703125034],[120.8763671875,5.95263671875],[121.159375,6.075634765625011]]],[[[122.09287109375012,6.428320312500006],[121.95917968750004,6.415820312500045],[121.83203125000003,6.664062499999986],[122.0583007812501,6.740722656249972],[122.32353515625002,6.602246093750011],[122.09287109375012,6.428320312500006]]],[[[122.93710937500006,7.409130859374983],[122.80468750000003,7.315966796875017],[122.82216796875,7.428466796875014],[122.93710937500006,7.409130859374983]]],[[[117.07988281250007,7.883398437499977],[117.02832031249997,7.807519531249966],[116.96953125000007,7.894921875],[116.9935546875,8.050537109375014],[117.07705078125,8.069140624999974],[117.07988281250007,7.883398437499977]]],[[[117.35527343750002,8.21464843749996],[117.28701171875,8.191015625000034],[117.28085937500006,8.314990234374974],[117.35527343750002,8.21464843749996]]],[[[124.80664062500003,9.142626953125003],[124.66582031250002,9.132324218750043],[124.65332031250003,9.225830078125],[124.80664062500003,9.142626953125003]]],[[[123.69765625000005,9.237304687500028],[123.61445312500004,9.103320312499989],[123.49345703125002,9.192089843750054],[123.69765625000005,9.237304687500028]]],[[[126.00595703125006,9.320947265625009],[126.19335937499997,9.276708984374963],[126.30458984375,8.952050781249994],[126.13955078125005,8.59565429687504],[126.36533203125012,8.483886718750014],[126.45869140625004,8.20283203125004],[126.43535156250002,7.832812499999974],[126.57011718750002,7.677246093749986],[126.58154296875003,7.247753906249969],[126.1920898437501,6.852539062500014],[126.18935546875,6.309667968749991],[125.82441406250004,7.333300781249989],[125.68925781250007,7.263037109374977],[125.38066406250007,6.689941406250014],[125.58847656250012,6.465771484374997],[125.66796874999997,5.97866210937498],[125.34648437500002,5.598974609374977],[125.23154296875006,6.069531250000011],[124.92734375000006,5.875341796874977],[124.21279296875,6.233251953124977],[124.078125,6.404443359375037],[123.98525390625,6.993701171875003],[124.20664062500006,7.396435546874983],[123.66582031250002,7.817773437500023],[123.49306640625,7.80791015624996],[123.39091796875007,7.407519531250017],[123.09667968749997,7.700439453125],[122.8429687500001,7.529296875000043],[122.79179687500002,7.72246093749996],[122.61621093749997,7.763134765624983],[122.14248046875,6.949658203124997],[121.96425781250005,6.96821289062504],[121.92460937500002,7.199511718750003],[122.24335937500004,7.945117187500031],[122.91113281250003,8.156445312499997],[123.05058593750002,8.433935546875048],[123.43457031249997,8.70332031250004],[123.84921875000006,8.432714843749977],[123.79941406250006,8.049121093749989],[124.19765625,8.229541015624974],[124.40488281250006,8.599853515625014],[124.7311523437501,8.562988281250043],[124.86894531250002,8.972265625000034],[125.141015625,8.86875],[125.20966796875004,9.027148437500017],[125.49873046875004,9.014746093749977],[125.47128906250006,9.756787109374983],[126.00595703125006,9.320947265625009]]],[[[126.059375,9.766210937500034],[125.99121093750003,9.838525390625023],[126.07382812500006,10.059228515625051],[126.1725585937501,9.79995117187498],[126.059375,9.766210937500034]]],[[[124.59384765625006,9.787207031249963],[124.1224609375,9.599316406249969],[123.93564453125012,9.623974609375011],[123.81718750000002,9.817382812499986],[124.17285156250003,10.135205078124983],[124.33574218750002,10.159912109375043],[124.57714843749997,10.026708984374991],[124.59384765625006,9.787207031249963]]],[[[125.69023437500007,9.914453125000037],[125.49482421875004,10.118701171875003],[125.66679687500002,10.440136718750026],[125.69023437500007,9.914453125000037]]],[[[119.91621093750004,10.485986328125037],[119.79316406250004,10.455273437499997],[119.85205078124997,10.64013671875],[120.00839843750012,10.570117187500031],[119.91621093750004,10.485986328125037]]],[[[122.64951171875012,10.472705078125003],[122.53837890625002,10.424951171875037],[122.5375,10.607568359375023],[122.70126953125006,10.740625],[122.64951171875012,10.472705078125003]]],[[[123.13085937500003,9.064111328124994],[122.99472656250006,9.058837890624986],[122.8666015625,9.319824218750043],[122.5625,9.482812500000037],[122.39951171875006,9.823046874999989],[122.47148437500007,9.961523437500034],[122.85556640625006,10.0869140625],[122.81699218750012,10.503808593750023],[122.98330078125,10.886621093750037],[123.25664062500007,10.99394531249996],[123.51064453125005,10.923046875],[123.5675781250001,10.780761718750057],[123.16201171875,9.864257812500028],[123.1498046875,9.606152343750026],[123.32050781250004,9.27294921875],[123.13085937500003,9.064111328124994]]],[[[123.37031250000004,9.449609375000023],[123.38623046874997,9.967089843750017],[124.03886718750002,11.273535156249991],[124.00498046875012,10.40009765625004],[123.70048828125007,10.128320312500009],[123.37031250000004,9.449609375000023]]],[[[123.75703125000004,11.28330078125002],[123.815625,11.15073242187502],[123.73671875,11.151464843749991],[123.75703125000004,11.28330078125002]]],[[[117.31113281250012,8.439599609375051],[117.21855468750007,8.367285156249963],[117.34990234375002,8.713574218749997],[119.22382812500004,10.477294921875043],[119.30566406250003,10.9736328125],[119.55332031250012,11.31352539062496],[119.52666015625002,10.953173828125003],[119.68691406250005,10.500341796875034],[119.36933593750004,10.327294921875037],[119.19150390625012,10.061083984374989],[118.78212890625005,9.91611328125002],[118.4349609375,9.256005859375009],[117.31113281250012,8.439599609375051]]],[[[119.86142578125006,11.52534179687504],[119.83066406250012,11.375683593750011],[119.72998046874997,11.431933593750017],[119.86142578125006,11.52534179687504]]],[[[124.574609375,11.343066406250031],[124.92998046875002,11.372851562499974],[125.02656250000004,11.21171875],[125.01318359374997,10.785693359374989],[125.26845703125005,10.307714843750048],[125.14257812499997,10.189453125000028],[124.9875,10.36757812499998],[125.02656250000004,10.033105468749966],[124.78076171874997,10.16806640625002],[124.78671875000012,10.781396484375009],[124.66269531250006,10.961962890625017],[124.44550781250004,10.923583984375014],[124.33066406250012,11.535205078125003],[124.574609375,11.343066406250031]]],[[[124.60839843750003,11.492187500000043],[124.48349609375006,11.485839843749986],[124.36035156250003,11.665917968749994],[124.5109375000001,11.687109375000048],[124.60839843750003,11.492187500000043]]],[[[122.49619140625006,11.615087890625034],[122.83808593750004,11.595654296874983],[122.89453125000003,11.44130859374998],[123.15830078125012,11.53554687499999],[123.11953125,11.286816406250026],[122.8029296875001,10.99003906249996],[122.76992187500005,10.823828125000034],[121.95400390625,10.444384765625003],[122.10351562499997,11.64291992187502],[121.91601562499997,11.854345703125006],[122.02919921875005,11.895410156250023],[122.49619140625006,11.615087890625034]]],[[[120.03876953125004,11.703320312499969],[119.94492187500006,11.690722656249989],[119.86093750000006,11.953955078124963],[120.03593750000002,11.917236328125028],[120.03876953125004,11.703320312499969]]],[[[120.1,12.167675781249983],[120.22822265625004,12.219824218750034],[120.31455078125012,12.012402343749969],[120.01054687500002,12.008251953125011],[119.88574218749997,12.299853515625003],[120.1,12.167675781249983]]],[[[122.65449218750004,12.309033203125011],[122.42294921875006,12.455078125],[122.60361328125006,12.49160156249998],[122.65449218750004,12.309033203125011]]],[[[125.23955078125002,12.527880859375003],[125.32021484375,12.321826171875031],[125.53564453125003,12.191406250000028],[125.49179687500006,11.594335937499977],[125.57353515625002,11.238232421874997],[125.73564453125002,11.049609375000017],[125.23339843749997,11.145068359375017],[125.03427734375012,11.341259765625026],[124.91699218750003,11.558398437500031],[124.99501953125,11.764941406250003],[124.445703125,12.152783203124969],[124.29472656250007,12.569335937500014],[125.23955078125002,12.527880859375003]]],[[[123.71660156250007,12.287353515625028],[124.04033203125002,11.966796875],[124.04550781250012,11.752441406250028],[123.47373046875006,12.21665039062502],[123.15781250000012,11.925634765624963],[123.23642578125012,12.583496093750057],[123.71660156250007,12.287353515625028]]],[[[122.09404296875002,12.354882812500023],[122.01396484375002,12.105615234375037],[121.9232421875,12.331298828125014],[122.00156250000006,12.598535156250009],[122.14501953124997,12.652636718750017],[122.09404296875002,12.354882812500023]]],[[[123.77539062499997,12.453906250000031],[123.77910156250002,12.366259765625031],[123.62148437500005,12.67490234375002],[123.77539062499997,12.453906250000031]]],[[[123.28183593750006,12.85341796874998],[123.36718750000003,12.70083007812498],[122.95751953124997,13.107177734374986],[123.28183593750006,12.85341796874998]]],[[[120.70439453125002,13.479492187499986],[121.20273437500006,13.432324218749969],[121.52275390625007,13.131201171874991],[121.540625,12.63818359375],[121.39433593750002,12.300585937499974],[121.23671875000005,12.218798828125003],[120.92216796875002,12.51162109374998],[120.65136718749997,13.169140625],[120.33847656250012,13.412353515624986],[120.40126953125,13.517041015624997],[120.70439453125002,13.479492187499986]]],[[[121.91484375000002,13.540332031250031],[122.11455078125002,13.463183593750031],[122.00488281249997,13.204980468750009],[121.82919921875006,13.328613281249972],[121.91484375000002,13.540332031250031]]],[[[124.35361328125006,13.632226562500009],[124.17539062500012,13.531542968750017],[124.03886718750002,13.663134765625003],[124.22490234375007,14.077587890624969],[124.41718750000004,13.871044921874997],[124.35361328125006,13.632226562500009]]],[[[122.03349609375002,15.005029296875009],[121.93300781250005,14.656054687500045],[121.83984374999997,15.038134765625003],[122.03349609375002,15.005029296875009]]],[[[121.10156249999997,18.615283203125017],[121.84560546875,18.29541015625003],[122.03847656250005,18.32792968749999],[122.14667968750004,18.486572265625],[122.26552734375005,18.458837890625034],[122.15234374999997,17.664404296875006],[122.51914062500012,17.124853515625034],[122.13515625000005,16.18481445312503],[121.59531250000012,15.933251953125023],[121.60703125000006,15.669824218749994],[121.39228515625004,15.324414062499969],[121.69541015625006,14.7373046875],[121.62792968749997,14.581152343749977],[121.76660156249997,14.16806640625002],[122.21171875000002,13.930175781250057],[122.2875,13.996191406250006],[122.19970703125003,14.148046875000034],[122.6271484375001,14.317529296875009],[122.93417968750012,14.18808593750002],[123.101953125,13.750244140624986],[123.29697265625012,13.836425781250043],[123.32031249999997,14.061669921875023],[123.81572265625002,13.837109375000011],[123.80625000000012,13.721728515625045],[123.54960937500007,13.645751953125014],[123.81923828125,13.269482421875011],[123.78515625000003,13.110546875000054],[124.14277343750004,13.035791015625009],[124.0597656250001,12.567089843749997],[123.87783203125005,12.689697265625014],[123.94853515625007,12.916406250000023],[123.31093750000005,13.044091796875009],[123.16328125000004,13.44174804687502],[122.59521484374997,13.90761718749998],[122.46796875000004,13.886718749999986],[122.66787109375,13.395361328124991],[122.59990234375002,13.194140625000031],[122.37656250000012,13.520605468750006],[121.77792968750006,13.93764648437498],[121.50107421875006,13.8421875],[121.344140625,13.649121093749997],[121.09550781250007,13.679492187500045],[120.84072265625,13.884716796875026],[120.637109375,13.804492187500031],[120.61679687500006,14.188037109375003],[120.9220703125001,14.493115234374983],[120.94130859375,14.645068359375031],[120.58369140625004,14.88125],[120.58867187500002,14.483105468749983],[120.43876953125002,14.453369140624972],[120.25078125000002,14.793310546875034],[120.08212890625012,14.851074218749986],[119.77255859375012,16.25512695312503],[119.83076171875004,16.326562500000023],[120.15976562500012,16.047656250000045],[120.36875,16.109570312499955],[120.35839843749997,17.63818359375],[120.59970703125012,18.507861328125074],[121.10156249999997,18.615283203125017]]],[[[121.92167968750007,18.89472656250001],[121.82519531250003,18.842724609374983],[121.94335937500003,19.010449218749955],[121.92167968750007,18.89472656250001]]],[[[121.52089843750005,19.361962890624994],[121.53125,19.271337890625006],[121.37460937500006,19.356298828124977],[121.52089843750005,19.361962890624994]]]]},"properties":{"name":"Philippines","childNum":37}},{"geometry":{"type":"Polygon","coordinates":[[[134.5954101562501,7.382031249999969],[134.51572265625012,7.525781250000037],[134.65117187500002,7.712109374999983],[134.5954101562501,7.382031249999969]]]},"properties":{"name":"Palau","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[153.53613281249997,-11.476171874999949],[153.75986328125006,-11.586328125],[153.55371093749997,-11.630566406249969],[153.28681640625004,-11.516992187500009],[153.20361328124997,-11.32412109374998],[153.53613281249997,-11.476171874999949]]],[[[154.28076171874997,-11.36142578125002],[154.12119140625006,-11.425683593749966],[154.02343750000003,-11.347949218750031],[154.28076171874997,-11.36142578125002]]],[[[150.89873046875002,-10.565332031250023],[150.88466796875,-10.643457031250037],[150.78574218750006,-10.603417968749966],[150.89873046875002,-10.565332031250023]]],[[[151.08095703125,-10.020117187499963],[151.29648437500012,-9.956738281250026],[151.230859375,-10.194726562500009],[150.95917968750004,-10.092578124999989],[150.77607421875004,-9.70908203125002],[151.08095703125,-10.020117187499963]]],[[[150.52841796875006,-9.34658203124998],[150.78867187500006,-9.417968749999957],[150.89404296875003,-9.667480468749986],[150.43623046875004,-9.624609374999949],[150.5084960937501,-9.536132812499957],[150.43730468750007,-9.359960937500034],[150.52841796875006,-9.34658203124998]]],[[[150.3454101562501,-9.493847656249955],[150.10976562500005,-9.361914062499991],[150.20830078125002,-9.206347656250003],[150.32011718750007,-9.264160156249972],[150.3454101562501,-9.493847656249955]]],[[[152.63095703125012,-8.959375],[152.95292968750007,-9.07011718749996],[152.96689453125006,-9.208984375000014],[152.51513671874997,-9.009863281250034],[152.63095703125012,-8.959375]]],[[[151.10683593750005,-8.733496093749949],[151.12412109375012,-8.804882812500011],[151.00498046875006,-8.523828124999952],[151.117578125,-8.41884765624998],[151.10683593750005,-8.733496093749949]]],[[[143.58681640625005,-8.481738281250003],[143.321875,-8.367578125],[143.5814453125,-8.390917968749974],[143.58681640625005,-8.481738281250003]]],[[[148.02578125,-5.826367187500011],[147.78105468750007,-5.627246093749946],[147.7946289062501,-5.492382812500011],[148.05478515625006,-5.61152343750004],[148.02578125,-5.826367187500011]]],[[[155.95761718750006,-6.686816406249989],[155.71933593750012,-6.862792968749957],[155.34404296875007,-6.721679687499986],[155.20214843750003,-6.3076171875],[154.75927734375003,-5.931347656249997],[154.72929687500002,-5.444433593750006],[155.09384765625006,-5.620214843750034],[155.46699218750004,-6.145117187500034],[155.82255859375002,-6.38046875000002],[155.95761718750006,-6.686816406249989]]],[[[147.17626953124997,-5.431933593749946],[147.00585937499997,-5.30703125],[147.1310546875001,-5.190820312500037],[147.17626953124997,-5.431933593749946]]],[[[154.64726562500002,-5.43271484375002],[154.54003906250003,-5.11083984375],[154.63261718750007,-5.013867187499955],[154.72714843750006,-5.218066406249989],[154.64726562500002,-5.43271484375002]]],[[[146.01933593750007,-4.726171874999963],[145.88359375000007,-4.66748046875],[145.9958007812501,-4.539257812499983],[146.01933593750007,-4.726171874999963]]],[[[151.915625,-4.296777343749966],[152.11718749999997,-4.212207031249974],[152.40566406250005,-4.340722656249952],[152.35117187500006,-4.82216796874998],[151.98369140625007,-5.07441406250004],[152.14296875,-5.357031249999963],[152.07705078125,-5.458300781249989],[151.86542968750004,-5.564843750000023],[151.51513671874997,-5.552343749999963],[151.22929687500002,-5.919921874999986],[150.47353515625,-6.263378906249969],[149.65253906250004,-6.290429687499966],[149.38232421874997,-6.078125],[149.0990234375,-6.116992187499989],[148.33720703125007,-5.669433593750014],[148.43203125,-5.471777343749991],[149.35888671875003,-5.583984375000014],[149.8314453125,-5.524121093749997],[149.96279296875,-5.447753906249972],[150.0900390625001,-5.011816406249977],[150.1703125,-5.070605468749974],[150.0724609375001,-5.309570312499986],[150.18310546874997,-5.523632812499983],[150.90029296875005,-5.447167968750037],[151.32656250000005,-4.96035156249998],[151.67119140625007,-4.88330078125],[151.59306640625007,-4.200781249999949],[151.915625,-4.296777343749966]]],[[[152.67060546875004,-3.13339843750002],[152.64619140625004,-3.221191406249957],[152.54326171875002,-3.095605468749952],[152.63876953125012,-3.042773437500031],[152.67060546875004,-3.13339843750002]]],[[[140.97617187500012,-9.11875],[140.97519531250006,-6.90537109375002],[140.86230468749997,-6.740039062499989],[140.975,-6.346093750000023],[140.97353515625,-2.803417968750026],[140.97343750000007,-2.609765625],[142.90517578125,-3.32070312499998],[143.50898437500004,-3.431152343750014],[144.06640625000003,-3.80517578125],[144.4777343750001,-3.82529296875002],[145.08779296875,-4.349121093749972],[145.33457031250012,-4.385253906249972],[145.7669921875,-4.823046874999989],[145.74521484375012,-5.402441406249977],[147.56669921875002,-6.056933593750003],[147.80205078125002,-6.31523437499996],[147.84550781250007,-6.662402343749989],[147.11914062499997,-6.721679687499986],[146.95361328124997,-6.834082031249963],[147.19003906250012,-7.378125],[148.12675781250007,-8.103613281249963],[148.246875,-8.554296875000034],[148.45117187499997,-8.694531250000011],[148.58310546875006,-9.051757812499957],[149.19833984375006,-9.03125],[149.26318359374997,-9.497851562499974],[150.01103515625007,-9.688183593750026],[149.76123046874997,-9.805859375000011],[149.87441406250005,-10.012988281250031],[150.84951171875,-10.236035156249997],[150.44609375000007,-10.30732421875004],[150.6471679687501,-10.517968749999966],[150.31992187500012,-10.654882812499963],[150.0167968750001,-10.577148437500028],[149.75410156250004,-10.353027343750028],[147.76865234375012,-10.070117187500031],[147.01718750000006,-9.38789062500004],[146.96376953125,-9.059570312499943],[146.63085937499997,-8.951171874999972],[146.03320312499997,-8.076367187500011],[144.97382812500004,-7.802148437500009],[144.86425781249997,-7.631542968749983],[144.50986328125006,-7.567382812499972],[144.14287109375007,-7.757226562500009],[143.65488281250012,-7.460351562500009],[143.94228515625005,-7.944238281250009],[143.8333984375,-8.029101562499974],[143.51816406250006,-8.000683593749955],[143.61376953125003,-8.200390624999969],[142.52412109375004,-8.32167968749998],[142.34746093750002,-8.167480468750014],[142.20683593750002,-8.195800781250014],[142.47480468750004,-8.369433593750031],[142.79794921875006,-8.345019531250031],[143.11181640624997,-8.474511718750037],[143.37724609375007,-8.762207031250028],[143.36621093750003,-8.961035156250034],[142.6471679687501,-9.327832031249969],[142.22958984375012,-9.169921874999957],[141.13320312500005,-9.221289062500034],[140.97617187500012,-9.11875]]],[[[152.96582031249997,-4.756347656249986],[152.89169921875006,-4.832421875000023],[152.73994140625004,-4.635839843750034],[152.66816406250004,-4.131835937500028],[152.27939453125006,-3.582421875],[151.06679687500005,-2.829003906249994],[150.74609374999997,-2.73886718750002],[150.8253906250001,-2.572949218749969],[152.03291015625004,-3.25136718749998],[153.01679687500004,-4.105664062500026],[153.1325195312501,-4.352441406250037],[152.96582031249997,-4.756347656249986]]],[[[150.43662109375012,-2.66181640625004],[150.16572265625004,-2.660253906249991],[149.96162109375004,-2.473828125000026],[150.22714843750006,-2.384179687499966],[150.42949218750007,-2.47041015625004],[150.43662109375012,-2.66181640625004]]],[[[147.06757812500004,-1.96015625],[147.43808593750012,-2.05898437499998],[147.20634765625007,-2.181933593749974],[146.54648437500012,-2.20859375],[146.65625,-1.97402343749998],[147.06757812500004,-1.96015625]]],[[[149.76542968750007,-1.553027343750017],[149.54589843749997,-1.471679687499957],[149.58095703125005,-1.353222656249983],[149.76542968750007,-1.553027343750017]]]]},"properties":{"name":"Papua New Guinea","childNum":21}},{"geometry":{"type":"Polygon","coordinates":[[[23.484667968750017,53.939794921875],[23.915429687500023,52.770263671875],[23.175097656250017,52.28662109375],[23.652441406250006,52.040380859375],[23.605273437500017,51.517919921875],[23.664453125000023,51.31005859375],[24.095800781250006,50.87275390625],[23.9970703125,50.809375],[24.089941406250006,50.53046875],[23.97265625,50.410058593749994],[23.711718750000017,50.37734375],[23.03632812500001,49.899072265624994],[22.706152343750006,49.606201171875],[22.6494140625,49.539013671875],[22.66064453125,49.483691406249996],[22.71992187500001,49.353808593749996],[22.732421875,49.295166015625],[22.705664062500006,49.171191406249996],[22.847070312500023,49.08125],[22.538671875,49.072705078125],[22.473046875000023,49.081298828125],[22.020117187500006,49.209521484374996],[21.6396484375,49.411962890625],[21.079394531250017,49.418261718749996],[20.868457031250017,49.314697265625],[20.36298828125001,49.38525390625],[20.0576171875,49.181298828124994],[19.756640625000017,49.204394531249996],[19.77392578125,49.37216796875],[19.44160156250001,49.597705078124996],[19.1494140625,49.4],[18.83222656250001,49.510791015624996],[18.562402343750023,49.879345703125],[18.0283203125,50.03525390625],[17.874804687500017,49.972265625],[17.627050781250006,50.11640625],[17.702246093750006,50.307177734374996],[17.41523437500001,50.254785156249994],[16.88007812500001,50.427050781249996],[16.989648437500023,50.2369140625],[16.63916015625,50.1021484375],[16.210351562500023,50.423730468749994],[16.419726562500017,50.573632812499994],[16.2822265625,50.655615234375],[16.007226562500023,50.611621093749996],[14.99375,51.01435546875],[14.98291015625,50.886572265625],[14.895800781250017,50.861376953124996],[14.809375,50.858984375],[14.814257812500017,50.871630859374996],[14.91748046875,51.008740234375],[14.9638671875,51.095117187499994],[14.935546875,51.435351562499996],[14.905957031250011,51.463330078125],[14.724707031250006,51.523876953125],[14.7109375,51.544921875],[14.738671875000023,51.6271484375],[14.601660156250006,51.832373046875],[14.752539062500006,52.081835937499996],[14.679882812500011,52.25],[14.615625,52.277636718749996],[14.573925781250011,52.31416015625],[14.554589843750023,52.359667968749996],[14.569726562500023,52.431103515625],[14.619433593750017,52.528515625],[14.514062500000023,52.64560546875],[14.253710937500017,52.782519531249996],[14.128613281250011,52.878222656249996],[14.138867187500011,52.932861328125],[14.293164062500011,53.0267578125],[14.368554687500023,53.10556640625],[14.410937500000017,53.199023437499996],[14.412304687500011,53.216748046875],[14.41455078125,53.283496093749996],[14.258886718750006,53.729638671875],[14.58349609375,53.63935546875],[14.558398437500017,53.823193359375],[14.21142578125,53.950341796875],[16.186328125000017,54.290380859375],[16.55976562500001,54.55380859375],[18.32343750000001,54.838183593749996],[18.75927734375,54.6845703125],[18.43623046875001,54.7447265625],[18.83642578125,54.369580078125],[19.604394531250023,54.4591796875],[20.20820312500001,54.420751953125],[22.16845703125,54.35986328125],[22.731835937500023,54.35009765625],[22.766210937500006,54.356787109375],[22.82373046875,54.395800781249996],[22.893945312500023,54.39052734375],[22.97675781250001,54.366357421875],[23.015527343750023,54.34833984375],[23.04218750000001,54.30419921875],[23.0875,54.299462890625],[23.170312500000023,54.2814453125],[23.282324218750006,54.24033203125],[23.3701171875,54.200488281249996],[23.45361328125,54.14345703125],[23.484667968750017,53.939794921875]]]},"properties":{"name":"Poland","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-65.42558593749999,18.105615234374994],[-65.57221679687493,18.137304687499977],[-65.29487304687501,18.133349609375045],[-65.42558593749999,18.105615234374994]]],[[[-66.12939453125003,18.444921875000034],[-65.62880859375,18.381396484375045],[-65.62084960937497,18.242333984374966],[-65.97080078124995,17.974365234375],[-67.196875,17.994189453125045],[-67.2640625,18.364599609375006],[-67.15864257812501,18.499218749999983],[-66.12939453125003,18.444921875000034]]]]},"properties":{"name":"Puerto Rico","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[130.52695312500012,42.535400390625],[130.68730468750007,42.30253906249999],[130.2357421875,42.183203125000034],[129.75634765624997,41.712255859375006],[129.70869140625004,40.857324218749994],[129.34111328125002,40.72631835937506],[128.51123046874997,40.130224609375006],[127.56816406250002,39.78198242187503],[127.39453125000003,39.207910156249966],[127.78613281250003,39.084130859374966],[128.37460937500012,38.6234375],[128.03896484375,38.30854492187498],[127.09033203125003,38.28388671875001],[126.63388671875012,37.78183593750006],[126.36992187500007,37.87836914062501],[126.11669921875003,37.74291992187503],[125.76914062500006,37.98535156250003],[125.35781250000005,37.72480468749998],[125.31074218750004,37.843505859375],[124.98876953124997,37.93144531249999],[125.2067382812501,38.08154296875],[124.69091796874997,38.12919921875002],[125.06738281250003,38.556738281250006],[125.55449218750002,38.68623046875001],[125.16884765625,38.80551757812506],[125.40966796875003,39.28837890625002],[125.36083984375003,39.52661132812497],[124.77529296875,39.75805664062506],[124.63828125000006,39.61508789062506],[124.36210937500002,40.004052734374994],[124.8893554687501,40.459814453125006],[125.98906250000002,40.904638671875034],[126.74306640625,41.724853515625],[126.95478515625004,41.76948242187501],[127.17968750000003,41.531347656250006],[128.14941406249997,41.38774414062496],[128.28925781250004,41.60742187500006],[128.04521484375007,41.9875],[128.92343750000006,42.038232421874966],[129.3136718750001,42.41357421874997],[129.69785156250012,42.448144531249994],[129.89824218750002,42.998144531250034],[130.24033203125006,42.891796874999955],[130.24667968750012,42.744824218749955],[130.52695312500012,42.535400390625]]]},"properties":{"name":"Dem. Rep. Korea","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-17.190869140624926,32.86860351562498],[-16.693261718749966,32.75800781250001],[-17.018261718749926,32.66279296874998],[-17.226025390624983,32.76684570312503],[-17.190869140624926,32.86860351562498]]],[[[-25.64897460937499,37.840917968750006],[-25.18193359374996,37.837890625],[-25.19072265624999,37.764355468749955],[-25.73447265624992,37.76289062500001],[-25.845898437499983,37.89404296875],[-25.64897460937499,37.840917968750006]]],[[[-28.14726562499996,38.45268554687502],[-28.064794921875034,38.412744140624966],[-28.454492187500023,38.40864257812504],[-28.54882812499997,38.51855468750003],[-28.14726562499996,38.45268554687502]]],[[[-28.641308593749983,38.525],[-28.842041015625,38.5984375],[-28.69775390625,38.638476562500045],[-28.641308593749983,38.525]]],[[[-27.07524414062496,38.643457031249994],[-27.38593750000001,38.765820312499955],[-27.127001953125017,38.78984375],[-27.07524414062496,38.643457031249994]]],[[[-31.137109374999937,39.40693359375001],[-31.282958984375,39.39409179687496],[-31.260839843750034,39.49677734375001],[-31.137109374999937,39.40693359375001]]],[[[-7.406152343749937,37.17944335937497],[-7.834130859374994,37.005712890625034],[-8.597656249999943,37.12133789062506],[-8.997802734375028,37.03227539062502],[-8.814160156249983,37.43081054687502],[-8.881103515624943,38.44667968750005],[-8.668310546874949,38.42431640625003],[-8.798876953124989,38.518164062500034],[-9.213281249999937,38.44809570312498],[-9.250390624999966,38.65673828125003],[-9.021484374999943,38.746875],[-8.79160156249992,39.07817382812502],[-9.13579101562496,38.74277343749998],[-9.35673828124996,38.697900390624994],[-9.479736328124972,38.79877929687501],[-9.374755859374972,39.338281249999966],[-8.837841796874926,40.11567382812498],[-8.684619140624989,40.75253906250006],[-8.755419921874932,41.69838867187502],[-8.887597656249937,41.76459960937501],[-8.777148437500017,41.941064453124994],[-8.266064453124983,42.13740234375001],[-8.152490234374937,41.81196289062498],[-7.40361328124996,41.833691406249955],[-7.147119140625023,41.98115234374998],[-6.61826171874992,41.9423828125],[-6.542187499999955,41.672509765624994],[-6.2125,41.53203125],[-6.928466796874972,41.009130859375006],[-6.8101562499999,40.343115234375034],[-7.032617187499966,40.16791992187498],[-6.896093749999949,40.02182617187506],[-6.975390624999932,39.79838867187502],[-7.117675781249972,39.681689453125045],[-7.53569335937496,39.66157226562501],[-6.997949218749994,39.05644531250002],[-7.343017578124943,38.45742187500002],[-7.106396484374983,38.181005859375006],[-6.957568359374932,38.18789062499999],[-7.44394531249992,37.72827148437497],[-7.406152343749937,37.17944335937497]]]]},"properties":{"name":"Portugal","childNum":7,"cp":[-8.7440694,39.9251454]}},{"geometry":{"type":"Polygon","coordinates":[[[-58.15976562499999,-20.164648437500006],[-58.13779296874999,-20.2373046875],[-58.12460937499999,-20.29345703125],[-58.09150390625,-20.33320312500001],[-58.05844726562499,-20.38613281250001],[-58.025390625,-20.415820312500003],[-58.00224609374999,-20.465429687500006],[-57.97905273437499,-20.657324218750006],[-57.91513671874999,-20.69033203125001],[-57.830224609374994,-20.99794921875001],[-57.94267578124999,-21.79833984375],[-57.95590820312499,-22.109179687500003],[-56.77519531249999,-22.261328125],[-56.44780273437499,-22.076171875],[-56.39487304687499,-22.09267578125001],[-56.35185546874999,-22.17861328125001],[-56.246044921875,-22.2646484375],[-56.18984375,-22.28115234375001],[-55.99140625,-22.28115234375001],[-55.84916992187499,-22.3076171875],[-55.75327148437499,-22.41015625],[-55.74663085937499,-22.5126953125],[-55.61767578125,-22.671484375],[-55.53828125,-23.58095703125001],[-55.518457031249994,-23.627246093750003],[-55.458886718749994,-23.68671875000001],[-55.4423828125,-23.792578125],[-55.4423828125,-23.865332031250006],[-55.415917968749994,-23.95136718750001],[-55.36630859374999,-23.991015625],[-55.28691406249999,-24.004296875],[-55.1943359375,-24.01748046875001],[-55.08188476562499,-23.99765625],[-54.982666015625,-23.97451171875001],[-54.62548828125,-23.8125],[-54.44023437499999,-23.90175781250001],[-54.37080078125,-23.97119140625],[-54.24179687499999,-24.047265625],[-54.281005859375,-24.30605468750001],[-54.43623046875,-25.12128906250001],[-54.47314453125,-25.22021484375],[-54.610546875,-25.432714843750006],[-54.615869140624994,-25.57607421875001],[-54.63193359374999,-26.00576171875001],[-54.677734375,-26.30878906250001],[-54.934472656249994,-26.70253906250001],[-55.1359375,-26.93115234375],[-55.426660156249994,-27.00927734375],[-55.450634765625,-27.068359375],[-55.496728515624994,-27.115332031250006],[-55.564892578125,-27.15],[-55.59726562499999,-27.207617187500006],[-55.59379882812499,-27.2880859375],[-55.63291015624999,-27.35712890625001],[-55.71464843749999,-27.41484375],[-55.789990234375,-27.41640625],[-55.95146484374999,-27.32568359375],[-56.1640625,-27.32148437500001],[-56.437158203124994,-27.553808593750006],[-58.16826171874999,-27.2734375],[-58.60483398437499,-27.31435546875001],[-58.641748046874994,-27.19609375],[-58.618603515625,-27.132128906250003],[-58.222070312499994,-26.65],[-58.18149414062499,-26.307421875],[-57.943115234375,-26.05292968750001],[-57.563134765624994,-25.473730468750006],[-57.821679687499994,-25.13642578125001],[-59.187255859375,-24.562304687500003],[-59.892480468749994,-24.093554687500003],[-60.83984375,-23.85810546875001],[-61.084716796875,-23.65644531250001],[-61.79853515625,-23.18203125],[-62.21416015624999,-22.612402343750006],[-62.372509765625,-22.43916015625001],[-62.54155273437499,-22.349609375],[-62.6259765625,-22.29042968750001],[-62.62568359375,-22.261523437500003],[-62.65097656249999,-22.233691406250003],[-62.27666015624999,-21.066015625],[-62.276318359375,-20.5625],[-61.7568359375,-19.6453125],[-60.00737304687499,-19.29755859375001],[-59.09052734375,-19.286230468750006],[-58.18017578125,-19.81787109375],[-58.15976562499999,-20.164648437500006]]]},"properties":{"name":"Paraguay","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[34.34833984375004,31.292919921874955],[34.2453125000001,31.208300781250045],[34.2125,31.292285156250017],[34.198144531249994,31.322607421875063],[34.47734375000002,31.584863281250023],[34.52412109375004,31.541650390624994],[34.5255859375001,31.52563476562503],[34.34833984375004,31.292919921874955]]],[[[34.88046875,31.3681640625],[34.950976562500074,31.60229492187503],[35.20371093750006,31.75],[35.1271484375001,31.816748046875006],[35.05322265625003,31.83793945312496],[34.983007812500006,31.816796875000023],[34.9611328125001,31.823339843750006],[34.95380859375004,31.84125976562504],[34.98974609374997,31.913281249999955],[34.955957031249994,32.1609375],[35.01054687500002,32.33818359375002],[35.06503906250006,32.46044921875006],[35.19326171875005,32.53442382812503],[35.303808593750006,32.512939453125],[35.38671875000003,32.493017578125034],[35.402636718750074,32.45063476562501],[35.484375,32.40166015624999],[35.5514648437501,32.39550781250006],[35.57207031250002,32.237890625],[35.450585937499994,31.479296875000017],[34.88046875,31.3681640625]]]]},"properties":{"name":"Palestine","childNum":2}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-149.321533203125,-17.690039062499963],[-149.177685546875,-17.736621093750045],[-149.18178710937497,-17.86230468749997],[-149.34111328125,-17.732421874999986],[-149.57890624999993,-17.734960937499963],[-149.635009765625,-17.564257812500003],[-149.37919921874993,-17.522363281249994],[-149.321533203125,-17.690039062499963]]],[[[-143.44057617187497,-16.619726562499963],[-143.38618164062498,-16.668847656250023],[-143.55068359375002,-16.62109374999997],[-143.44057617187497,-16.619726562499963]]],[[[-139.02431640624997,-9.695214843750037],[-138.82734375,-9.74160156249998],[-139.13408203124996,-9.829492187500037],[-139.02431640624997,-9.695214843750037]]],[[[-140.075634765625,-9.425976562499983],[-140.14438476562498,-9.359375],[-140.07094726562497,-9.328125],[-140.075634765625,-9.425976562499983]]],[[[-140.07260742187503,-8.910449218750031],[-140.21743164062497,-8.929687499999957],[-140.24003906249993,-8.79755859375004],[-140.057666015625,-8.801464843750026],[-140.07260742187503,-8.910449218750031]]]]},"properties":{"name":"Fr. Polynesia","childNum":5}},{"geometry":{"type":"Polygon","coordinates":[[[51.26796875000002,24.607226562500003],[51.17802734375002,24.58671875],[51.093359375,24.564648437499997],[51.02275390625002,24.565234375],[50.96601562500001,24.573925781249997],[50.928320312500006,24.595117187499994],[50.85566406250001,24.679638671874997],[50.80439453125001,24.789257812499997],[50.8359375,24.850390625],[50.846777343750006,24.888574218749994],[50.75458984375001,25.39926757812499],[51.003125,25.9814453125],[51.262304687500006,26.153271484374997],[51.543066406250006,25.902392578125003],[51.4853515625,25.524707031250003],[51.60888671875,25.052880859374994],[51.42792968750001,24.668261718750003],[51.26796875000002,24.607226562500003]]]},"properties":{"name":"Qatar","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[28.2125,45.450439453125],[28.317675781250017,45.347119140625],[28.451269531250006,45.2921875],[28.78828125000001,45.240966796875],[28.78173828125,45.309863281249996],[28.894335937500017,45.289941406249994],[29.223535156250023,45.4029296875],[29.403710937500023,45.419677734375],[29.567675781250017,45.37080078125],[29.705859375000017,45.259912109374994],[29.557519531250023,44.843408203124994],[29.048242187500023,44.757568359375],[29.0953125,44.975048828125],[28.891503906250023,44.91865234375],[28.585351562500023,43.742236328124996],[28.221972656250017,43.772851562499994],[27.88427734375,43.987353515624996],[27.425390625,44.0205078125],[27.0869140625,44.167382812499994],[26.2158203125,44.007275390625],[25.4970703125,43.670800781249994],[22.919042968750006,43.83447265625],[22.868261718750006,43.947900390624994],[23.02851562500001,44.077978515625],[22.705078125,44.23779296875],[22.687890625000023,44.248291015625],[22.494531250000023,44.435449218749994],[22.554003906250017,44.540332031249996],[22.6201171875,44.562353515625],[22.70078125,44.555517578125],[22.734375,44.569921875],[22.72089843750001,44.605517578124996],[22.64208984375,44.6509765625],[22.49765625,44.70625],[22.350683593750006,44.676123046875],[22.200976562500017,44.560693359374994],[22.093066406250017,44.541943359375],[21.909277343750006,44.66611328125],[21.636132812500023,44.71044921875],[21.52314453125001,44.790087890624996],[21.36005859375001,44.82666015625],[21.35791015625,44.86181640625],[21.384375,44.870068359375],[21.442187500000017,44.873388671875],[21.519921875000023,44.880810546875],[21.532324218750006,44.900683593749996],[21.35703125,44.990771484374996],[21.465429687500006,45.171875],[21.431445312500017,45.192529296874994],[20.794042968750006,45.46787109375],[20.775,45.749804687499996],[20.760156250000023,45.758105468749996],[20.746875,45.748974609375],[20.727832031250017,45.73740234375],[20.709277343750017,45.735253906249994],[20.652734375000023,45.77939453125],[20.581152343750006,45.869482421875],[20.35859375000001,45.975488281249994],[20.241796875,46.10859375],[20.28095703125001,46.1330078125],[20.508105468750017,46.166943359375],[20.613671875000023,46.13349609375],[20.76025390625,46.246240234374994],[21.121679687500006,46.282421875],[21.99970703125001,47.505029296874994],[22.87666015625001,47.947265625],[23.054785156250006,48.00654296875],[23.139453125000017,48.08740234375],[23.20263671875,48.084521484374996],[23.408203125,47.989990234375],[23.628710937500017,47.995849609375],[24.578906250000017,47.931054687499994],[24.979101562500006,47.72412109375],[25.464257812500023,47.910791015624994],[25.689257812500017,47.932470703125],[25.90869140625,47.967578125],[26.162695312500006,47.992529296875],[26.236230468750023,48.064355468749994],[26.276953125,48.113232421875],[26.3056640625,48.203759765624994],[26.4423828125,48.22998046875],[26.618945312500017,48.25986328125],[26.980761718750017,48.155029296875],[27.614062500000017,47.34052734375],[28.07177734375,46.978417968749994],[28.23945312500001,46.6408203125],[28.07470703125,45.598974609375],[28.2125,45.450439453125]]]},"properties":{"name":"Romania","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[146.71396484375012,43.743798828124994],[146.62197265625,43.81298828125006],[146.88408203125002,43.82915039062496],[146.71396484375012,43.743798828124994]]],[[[146.20761718750006,44.49765625],[146.5677734375,44.44042968749997],[145.91406249999997,44.10371093750004],[145.58681640625,43.84511718750002],[145.5558593750001,43.66459960937502],[145.46171875000007,43.870898437500045],[146.20761718750006,44.49765625]]],[[[148.59951171875,45.317626953125],[147.91376953125004,44.99038085937502],[147.65781250000012,44.97714843749998],[146.89746093750003,44.404296875],[147.24658203124997,44.856054687500006],[147.88554687500007,45.22563476562499],[147.9240234375001,45.38330078125006],[148.05605468750005,45.26210937500005],[148.32421874999997,45.28242187500001],[148.8122070312501,45.510009765625],[148.83710937500004,45.36269531250002],[148.59951171875,45.317626953125]]],[[[149.68769531250004,45.64204101562501],[149.44707031250002,45.593359375000034],[149.9623046875,46.02192382812504],[150.553125,46.208544921875045],[149.68769531250004,45.64204101562501]]],[[[152.00205078125006,46.89716796874998],[151.72343750000007,46.82880859375001],[152.28886718750007,47.1421875],[152.00205078125006,46.89716796874998]]],[[[154.81044921875005,49.31201171875],[154.61093750000006,49.29404296874998],[154.82490234375004,49.64692382812501],[154.81044921875005,49.31201171875]]],[[[155.9210937500001,50.30219726562501],[155.39716796875004,50.04125976562497],[155.24306640625,50.09462890625002],[155.21835937500012,50.29785156250003],[155.68017578124997,50.400732421875034],[156.096875,50.771875],[155.9210937500001,50.30219726562501]]],[[[156.40507812500002,50.65761718750005],[156.16796874999997,50.73188476562498],[156.37646484374997,50.86210937499996],[156.4875,50.84296874999998],[156.40507812500002,50.65761718750005]]],[[[142.76103515625002,54.393945312499966],[143.32470703125003,52.96308593749998],[143.15556640625002,52.08374023437497],[143.29951171875004,51.632373046875045],[143.81601562500006,50.28261718750002],[144.71376953125,48.64028320312502],[144.04873046875,49.249169921874994],[143.73232421875,49.31201171875],[143.10498046875003,49.198828125000034],[142.57421874999997,48.07216796875002],[142.55693359375002,47.737890625000034],[143.21767578125005,46.79487304687504],[143.48564453125002,46.752050781250006],[143.58066406250012,46.360693359375034],[143.43164062500003,46.02866210937498],[143.28232421875006,46.55898437500002],[142.57802734375005,46.700781250000034],[142.07714843749997,45.91704101562499],[141.83037109375002,46.451074218749966],[142.03867187500012,47.140283203124966],[141.9640625000001,47.58745117187502],[142.18173828125012,48.01337890625001],[141.86630859375006,48.750097656250006],[142.1422851562501,49.56914062499999],[142.06601562500006,50.630468750000034],[142.20673828125004,51.22255859375002],[141.72236328125004,51.73632812499997],[141.66083984375004,52.27294921874997],[141.85556640625012,52.79350585937499],[141.82353515625007,53.33950195312502],[142.1419921875,53.49560546875003],[142.52617187500002,53.44746093749998],[142.70595703125,53.89570312499998],[142.33496093749997,54.28071289062501],[142.76103515625002,54.393945312499966]]],[[[137.17861328125005,55.100439453125034],[137.05527343750006,54.9267578125],[136.71464843750002,54.956152343750034],[137.17861328125005,55.100439453125034]]],[[[137.94052734375012,55.092626953125034],[138.20615234375012,55.03354492187498],[137.72148437500007,54.66323242187505],[137.46269531250002,54.873388671875034],[137.23291015624997,54.79057617187496],[137.5773437500001,55.19702148437497],[137.94052734375012,55.092626953125034]]],[[[21.235742187500023,55.26411132812498],[22.072363281250034,55.06367187499998],[22.56728515625005,55.05913085937496],[22.82470703125,54.87128906249998],[22.684472656250023,54.56293945312504],[22.679882812500068,54.493017578125006],[22.766210937499977,54.356787109375034],[22.168457031250057,54.35986328125006],[21.14052734375008,54.39179687499998],[19.604394531250023,54.45917968750004],[19.974511718750023,54.92119140625002],[20.520312500000017,54.994873046875],[20.89980468750008,55.286669921875045],[20.957812500000074,55.27890625000006],[20.594824218750006,54.982373046874955],[20.995898437500017,54.90268554687506],[21.18886718750008,54.93520507812502],[21.235742187500023,55.26411132812498]]],[[[166.65029296875005,54.83906249999998],[166.64511718750006,54.69409179687503],[165.75107421875006,55.294531250000034],[166.27578125000005,55.311962890624955],[166.24804687499997,55.16542968750002],[166.65029296875005,54.83906249999998]]],[[[150.58994140625006,59.01875],[150.47021484375003,59.05405273437498],[150.66621093750004,59.16015625000003],[150.58994140625006,59.01875]]],[[[163.63515625000005,58.603369140625006],[163.47138671875004,58.509375],[163.7609375000001,59.01503906250002],[164.57265625,59.22114257812501],[164.61572265624997,58.885595703125034],[163.63515625000005,58.603369140625006]]],[[[35.8161132812501,65.18208007812501],[35.77871093750005,64.97666015625],[35.52890625000006,65.15107421875001],[35.8161132812501,65.18208007812501]]],[[[70.02070312500004,66.502197265625],[69.65136718750003,66.56533203125],[69.50273437500002,66.75107421875],[70.07666015624997,66.69589843750003],[70.02070312500004,66.502197265625]]],[[[-179.79853515625,68.9404296875],[-178.873876953125,68.75410156249995],[-178.69262695312503,68.54599609375],[-178.09746093750002,68.4248046875],[-178.05581054687497,68.26489257812503],[-177.79677734374997,68.33798828125],[-178.37304687500003,68.56567382812503],[-177.52724609375002,68.29438476562501],[-177.58920898437503,68.22421875],[-175.34521484375,67.67807617187503],[-175.37470703124998,67.35737304687498],[-175.00268554687494,67.4375],[-174.849853515625,67.34887695312503],[-174.92490234375,66.62314453125006],[-174.503759765625,66.537939453125],[-174.39409179687496,66.34423828124997],[-174.084765625,66.47309570312504],[-174.06503906249998,66.22958984374998],[-173.77397460937502,66.43466796875003],[-174.23159179687497,66.63188476562505],[-174.08642578125,66.94287109375],[-174.55009765624993,67.090625],[-173.6796875,67.144775390625],[-173.15781249999998,67.06909179687503],[-173.32353515625,66.95483398437503],[-173.25893554687497,66.84008789062503],[-173.19301757812497,66.99360351562504],[-172.5201171875,66.952490234375],[-173.00751953125,67.06489257812498],[-171.79555664062502,66.93173828125003],[-170.50952148437503,66.34365234375005],[-170.604443359375,66.24892578125002],[-170.30122070312504,66.29404296874998],[-170.24394531250002,66.16928710937503],[-169.777880859375,66.14311523437505],[-169.83168945312497,65.99892578124997],[-170.54067382812497,65.86542968749995],[-170.66630859375,65.62153320312501],[-171.42153320312502,65.81035156250002],[-171.10585937500002,65.51103515625005],[-171.90712890625,65.495947265625],[-172.78330078124998,65.68105468749997],[-172.23281250000002,65.45571289062497],[-172.30927734375004,65.27563476562497],[-172.66191406249993,65.24853515625006],[-172.28603515625002,65.20571289062502],[-172.21318359375,65.04814453124999],[-173.08579101562498,64.81733398437495],[-172.80107421874996,64.79052734375],[-172.90087890624994,64.62885742187501],[-172.40146484374998,64.413916015625],[-172.73916015624997,64.41225585937502],[-172.90317382812498,64.52607421875004],[-172.96005859375003,64.32768554687502],[-173.27548828124998,64.2896484375],[-173.327490234375,64.53955078125003],[-173.72973632812497,64.36450195312497],[-174.57055664062503,64.7177734375],[-175.39511718749998,64.80239257812502],[-175.85385742187498,65.01083984375003],[-176.09326171875,65.471044921875],[-177.05625,65.613623046875],[-177.48876953125,65.50371093749999],[-178.4125,65.49555664062501],[-178.93906249999998,66.03276367187505],[-178.74672851562497,66.01367187500006],[-178.52656250000004,66.40156250000004],[-178.86811523437498,66.18706054687502],[-179.14340820312503,66.37504882812505],[-179.327197265625,66.16259765625003],[-179.68330078124998,66.18413085937505],[-179.78969726562497,65.90087890625],[-179.352099609375,65.51674804687497],[-180,65.06723632812498],[-180,65.31196289062501],[-180,65.55678710937497],[-180,65.80156250000002],[-180,66.04628906250002],[-180,66.29106445312499],[-180,66.53583984375004],[-180,66.78056640625005],[-180,67.02534179687501],[-180,67.27011718750006],[-180,67.51484374999998],[-180,67.75961914062503],[-180,68.00439453124997],[-180,68.24912109375],[-180,68.49389648437497],[-180,68.738671875],[-179.999951171875,68.98344726562505],[-179.79853515625,68.9404296875]]],[[[50.265234375,69.18559570312502],[49.62626953125002,68.85971679687498],[48.91035156250004,68.74306640625002],[48.4390625,68.80488281249998],[48.319921875,69.26923828125001],[48.8449218750001,69.49472656250003],[49.22519531250006,69.51123046875],[50.265234375,69.18559570312502]]],[[[161.46708984375002,68.90097656250003],[161.08281250000007,69.4056640625],[161.50517578125007,69.63945312500002],[161.46708984375002,68.90097656250003]]],[[[169.20078125000006,69.58046875],[168.34804687500005,69.66435546875005],[167.86474609375003,69.90107421875004],[168.35791015625003,70.01567382812502],[169.37480468750007,69.88261718749999],[169.20078125000006,69.58046875]]],[[[60.450488281250074,69.93486328124999],[60.44023437500002,69.72592773437506],[59.637011718750074,69.72104492187503],[59.50263671875004,69.86621093750003],[58.952734375,69.89277343750004],[58.51992187500005,70.31831054687504],[59.04804687500004,70.46049804687505],[60.450488281250074,69.93486328124999]]],[[[52.90332031250003,71.36499023437503],[53.19257812500004,71.21528320312498],[53.0226562500001,70.96870117187501],[52.24960937500006,71.28491210937506],[52.90332031250003,71.36499023437503]]],[[[178.8615234375001,70.826416015625],[178.68388671875013,71.10566406250004],[180,71.53774414062505],[180,70.993017578125],[178.8615234375001,70.826416015625]]],[[[137.95986328125005,71.50766601562503],[137.71181640625005,71.4232421875],[137.06406250000006,71.52988281250003],[137.816796875,71.58789062500006],[137.95986328125005,71.50766601562503]]],[[[-178.87646484375,71.57705078124997],[-178.13388671874998,71.46547851562497],[-177.523583984375,71.16689453125],[-179.415673828125,70.91899414062502],[-179.999951171875,70.993017578125],[-179.999951171875,71.53774414062505],[-178.87646484375,71.57705078124997]]],[[[77.6325195312501,72.291259765625],[76.87109374999997,72.317041015625],[77.74853515625003,72.63120117187506],[78.36513671875005,72.48242187500003],[77.6325195312501,72.291259765625]]],[[[79.50146484374997,72.72192382812497],[78.63320312500005,72.85073242187502],[79.16425781250004,73.0943359375],[79.50146484374997,72.72192382812497]]],[[[74.660546875,72.87343750000002],[74.18066406250003,72.975341796875],[74.19853515625002,73.10908203124998],[74.9615234375,73.0625],[74.660546875,72.87343750000002]]],[[[120.26132812500012,73.08984374999997],[119.79208984375006,73.04541015624997],[119.64042968750002,73.12431640625007],[120.26132812500012,73.08984374999997]]],[[[55.31982421875003,73.30830078124998],[56.42958984375005,73.201171875],[56.121679687500006,72.80659179687498],[55.40332031249997,72.54907226562503],[55.29785156249997,71.93535156250005],[56.45439453125002,71.10737304687504],[57.62539062500005,70.72880859374999],[57.14589843750005,70.58911132812506],[56.38574218749997,70.73413085937503],[56.49970703125004,70.56640625000003],[55.687304687500074,70.69218749999999],[54.60117187500006,70.68007812500002],[53.383593750000074,70.87353515625],[53.670507812500006,71.08691406250003],[54.155664062499994,71.12548828125],[53.40996093750002,71.34013671875002],[53.41162109375003,71.530126953125],[51.93789062500005,71.47470703124998],[51.511328125,71.64809570312497],[51.58251953124997,72.07119140625],[52.252050781250006,72.12973632812503],[52.66191406250002,72.33686523437495],[52.91660156250006,72.66889648437501],[52.5792968750001,72.791357421875],[53.3698242187501,72.91674804687506],[53.2511718750001,73.182958984375],[54.80390625000004,73.38764648437498],[55.31982421875003,73.30830078124998]]],[[[70.67392578125006,73.09501953125005],[70.04072265625004,73.03715820312507],[69.99589843750002,73.359375],[70.94023437500002,73.51440429687503],[71.6261718750001,73.17397460937497],[70.67392578125006,73.09501953125005]]],[[[142.18486328125007,73.89589843750005],[143.34375,73.56875],[143.45146484375007,73.231298828125],[141.59667968750003,73.31083984375005],[140.66279296875004,73.45200195312503],[139.785546875,73.35522460937503],[141.08476562500002,73.86586914062497],[142.18486328125007,73.89589843750005]]],[[[83.5490234375001,74.07177734375],[82.8177734375,74.09160156250005],[83.14980468750005,74.151611328125],[83.5490234375001,74.07177734375]]],[[[141.01025390625003,73.99946289062501],[140.40947265625002,73.92167968750005],[140.1935546875001,74.23671875000002],[141.03857421875003,74.24272460937502],[141.01025390625003,73.99946289062501]]],[[[113.38720703124997,74.40043945312499],[112.78242187500004,74.09506835937503],[111.50341796874997,74.35307617187502],[111.87978515625,74.36381835937499],[112.08447265624997,74.54897460937505],[113.38720703124997,74.40043945312499]]],[[[86.653125,74.981298828125],[87.05214843750005,74.982568359375],[86.92714843750005,74.83076171874998],[86.25859375000002,74.89350585937498],[86.653125,74.981298828125]]],[[[82.17236328125003,75.41938476562501],[81.97851562499997,75.24711914062499],[81.65478515625003,75.28891601562498],[81.71210937500004,75.45141601562506],[82.165625,75.515625],[82.17236328125003,75.41938476562501]]],[[[146.79521484375007,75.37075195312505],[148.43242187500002,75.41352539062495],[148.59013671875007,75.23637695312502],[150.82236328125006,75.15654296875002],[150.64628906250002,74.944580078125],[149.596875,74.77260742187505],[148.296875,74.80043945312502],[146.14853515625012,75.19829101562499],[146.5375,75.58178710937506],[146.79521484375007,75.37075195312505]]],[[[135.9486328125,75.40957031250005],[135.45195312500007,75.38955078124997],[135.6986328125,75.84526367187499],[136.16894531249997,75.60556640625],[135.9486328125,75.40957031250005]]],[[[140.04873046875,75.82895507812503],[140.81591796874997,75.63071289062498],[141.48544921875012,76.13715820312495],[142.66953125000012,75.86342773437497],[143.68583984375002,75.86367187500002],[145.35996093750006,75.53046874999998],[144.01972656250004,75.04467773437506],[143.1703125,75.11689453125001],[142.72949218749997,75.33764648437506],[142.941796875,75.71328125000002],[142.30791015625007,75.69169921875005],[142.19882812500006,75.39267578124998],[143.12792968749997,74.9703125],[142.47275390625006,74.82041015625],[141.98730468750003,74.99125976562499],[140.26787109375002,74.846923828125],[139.68125,74.96406249999995],[139.09912109374997,74.65654296875002],[138.09228515625003,74.79746093750003],[136.94765625000005,75.32553710937498],[137.28974609375004,75.34863281249997],[137.26884765625002,75.7494140625],[137.70654296875003,75.75957031250002],[137.56054687499997,75.95522460937502],[138.20761718750006,76.11494140624995],[138.91953125000006,76.19672851562501],[140.04873046875,75.82895507812503]]],[[[96.5324218750001,76.278125],[96.30058593750002,76.121728515625],[95.31113281250006,76.21474609375002],[95.37988281250003,76.2890625],[96.5324218750001,76.278125]]],[[[112.47802734375003,76.62089843749999],[112.531640625,76.450048828125],[111.96894531250004,76.62617187500001],[112.47802734375003,76.62089843749999]]],[[[149.15019531250002,76.65991210937506],[148.39863281250004,76.64824218750007],[149.4064453125001,76.78208007812498],[149.15019531250002,76.65991210937506]]],[[[67.7653320312501,76.23759765624999],[61.35595703124997,75.31484375000002],[60.27685546875003,75.00756835937503],[60.501367187499994,74.90463867187503],[59.67402343750004,74.61015624999999],[59.24013671875005,74.69296874999998],[59.040429687499994,74.48554687500001],[58.53466796875003,74.49892578124997],[58.6178710937501,74.22739257812498],[57.76738281250002,74.013818359375],[57.755957031250006,73.769189453125],[57.313085937500006,73.838037109375],[57.54257812500006,73.65820312500003],[56.96386718750003,73.36655273437503],[56.43037109375004,73.29721679687503],[55.00683593750003,73.45385742187506],[54.29990234375006,73.35097656249997],[53.7628906250001,73.76616210937499],[54.64267578125006,73.95957031250006],[55.34091796875006,74.41962890624998],[56.13710937500005,74.49609375000003],[55.5822265625001,74.627685546875],[56.4987304687501,74.95708007812505],[55.81005859374997,75.12490234374997],[56.03554687499999,75.19423828124997],[56.57031250000003,75.09775390625003],[56.8444335937501,75.351416015625],[57.606835937499994,75.34125976562498],[58.05830078125004,75.6630859375],[58.88125,75.85478515625007],[60.27929687499997,76.09624023437505],[60.94218750000002,76.07128906250003],[61.20166015624997,76.28203125000007],[62.97148437500002,76.23666992187498],[64.4634765625,76.37817382812503],[67.65185546874997,77.011572265625],[68.48574218750005,76.93369140625003],[68.94169921875002,76.707666015625],[67.7653320312501,76.23759765624999]]],[[[96.28544921875002,77.02666015625007],[95.27031250000007,77.01884765624999],[96.52841796875006,77.20551757812501],[96.28544921875002,77.02666015625007]]],[[[89.51425781250006,77.18881835937498],[89.14169921875012,77.22680664062497],[89.61621093749997,77.31103515625],[89.51425781250006,77.18881835937498]]],[[[130.68730468750007,42.30253906249999],[130.52695312500012,42.535400390625],[130.42480468749997,42.72705078124997],[131.06855468750004,42.90224609375005],[131.25732421875003,43.378076171874994],[131.2552734375,44.07158203124999],[130.9816406250001,44.844335937500034],[131.44687500000012,44.984033203124966],[131.85185546875002,45.32685546875001],[132.93603515624997,45.029931640624994],[133.1134765625001,45.130712890625006],[133.18603515625003,45.49482421875004],[133.43642578125,45.60468750000004],[133.86132812500003,46.24775390625004],[134.1676757812501,47.30219726562501],[134.75234375,47.71542968749998],[134.56601562500006,48.02250976562502],[134.66523437500004,48.25390625],[134.29335937500005,48.37343750000002],[133.46835937500006,48.09716796875003],[133.14404296875003,48.10566406249998],[132.7072265625001,47.94726562500006],[132.47626953125004,47.714990234374994],[130.96191406249997,47.70932617187498],[130.7326171875001,48.01923828124998],[130.80429687500012,48.34150390624998],[130.5521484375,48.602490234374955],[130.553125,48.861181640625006],[130.1959960937501,48.89165039062499],[129.49814453125012,49.38881835937502],[129.0651367187501,49.374658203124966],[128.70400390625,49.60014648437499],[127.99960937500006,49.56860351562506],[127.55078124999997,49.801806640625045],[127.590234375,50.20898437500003],[127.33720703125007,50.35014648437502],[127.30703125000005,50.70795898437501],[126.92480468749997,51.10014648437496],[126.34169921875,52.36201171875001],[125.64902343750012,53.042285156250045],[125.075,53.20366210937496],[124.81230468750002,53.133837890625045],[123.6078125,53.546533203124994],[120.98544921875012,53.28457031250002],[120.09453125000007,52.787207031250034],[120.0675781250001,52.632910156250034],[120.65615234375,52.56665039062503],[120.74980468750007,52.096533203125006],[120.06689453125003,51.60068359375006],[119.16367187500006,50.40600585937503],[119.34628906250012,50.278955078124994],[119.25986328125012,50.06640625000003],[118.4515625,49.84448242187503],[117.8734375,49.51347656250002],[116.6833007812501,49.82377929687499],[116.551171875,49.92031250000002],[116.35117187500012,49.97807617187499],[116.21679687500003,50.00927734375003],[116.13457031250002,50.01079101562499],[115.9259765625001,49.95214843750003],[115.79521484375002,49.90590820312502],[115.71777343750003,49.88061523437503],[115.58798828125006,49.88603515624996],[115.42919921874997,49.89648437499997],[115.36503906250002,49.911767578124966],[115.27451171875006,49.948876953124994],[115.00332031250005,50.138574218749994],[114.74316406249997,50.23369140625002],[114.29707031250004,50.27441406250006],[113.57421874999997,50.00703125000001],[113.44550781250004,49.94160156250001],[113.31904296875004,49.87431640624999],[113.16416015625012,49.79716796874999],[113.09208984375007,49.692529296874994],[113.05556640625,49.61625976562499],[112.91484375000002,49.569238281249994],[112.80644531250007,49.52358398437502],[112.69736328125012,49.50727539062498],[112.49492187500002,49.532324218750034],[112.07968750000006,49.42421875000002],[111.42929687500006,49.342626953125034],[111.3366210937501,49.355859374999966],[111.20419921875012,49.304296875000034],[110.82792968750002,49.16616210937505],[110.70976562500002,49.14296875000002],[110.42783203125006,49.219970703125],[110.32138671875012,49.215869140625045],[110.19990234375004,49.17041015625003],[109.5287109375,49.269873046875034],[109.45371093750012,49.29633789062501],[109.23671875000005,49.334912109374955],[108.61367187500005,49.32280273437499],[108.52246093750003,49.34150390624998],[108.4069335937501,49.39638671875005],[107.96542968750012,49.65351562500004],[107.91660156250012,49.947802734375045],[107.63095703125012,49.98310546875004],[107.3470703125,49.986669921875034],[107.23330078125,49.989404296874994],[107.14306640625003,50.03300781249999],[107.04023437500004,50.086474609375045],[106.94130859375005,50.19667968750002],[106.71113281250004,50.312597656250006],[106.57441406250004,50.32880859375004],[106.36845703125002,50.317578124999955],[106.21787109375006,50.304589843749966],[105.38359375000002,50.47373046874998],[104.07871093750012,50.15424804687498],[103.63291015625006,50.138574218749994],[103.49628906250004,50.16494140625005],[103.42119140625002,50.18706054687502],[103.3043945312501,50.200292968750034],[102.28837890625007,50.58510742187502],[102.31660156250004,50.71845703125001],[102.21503906250004,50.82944335937506],[102.19453125000004,51.05068359375002],[102.15195312500006,51.107519531250034],[102.14238281250007,51.21606445312503],[102.16005859375005,51.260839843750006],[102.1556640625,51.31376953124996],[102.1115234375001,51.353466796874955],[101.97919921875004,51.382226562499966],[101.82119140625,51.421044921874966],[101.57089843750006,51.46718750000005],[101.38125,51.45263671875],[100.53623046875006,51.713476562500034],[100.46894531250004,51.72607421875003],[100.23037109375,51.729833984375006],[100.0345703125,51.73710937499996],[99.92167968750002,51.755517578124994],[99.71923828124997,51.87163085937502],[98.89316406250006,52.11728515625006],[98.64052734375005,51.80117187500005],[98.103125,51.483544921874994],[97.82529296875012,50.985253906249994],[97.953125,50.85517578124998],[98.02978515625003,50.64462890624998],[98.07890625000002,50.60380859375002],[98.14501953124997,50.56855468750001],[98.22050781250007,50.55717773437502],[98.2794921875001,50.53325195312502],[98.25029296875002,50.30244140624998],[98.00390625000003,50.01425781249998],[97.35976562500005,49.741455078125],[97.20859375000006,49.73081054687506],[96.98574218750005,49.88281250000003],[96.31503906250012,49.90112304687503],[96.06552734375006,49.99873046875001],[95.52265625000004,49.911230468750034],[95.11142578125012,49.935449218749994],[94.93027343750006,50.04375],[94.8112304687501,50.04819335937506],[94.71806640625002,50.04326171875002],[94.67548828125004,50.02807617187506],[94.61474609375003,50.02373046874996],[94.56464843750004,50.08793945312499],[94.35468750000004,50.221826171874994],[94.25107421875006,50.55639648437503],[93.103125,50.60390625000002],[92.94130859375005,50.77822265625002],[92.85644531250003,50.78911132812502],[92.77929687500003,50.778662109375006],[92.738671875,50.71093749999997],[92.68134765625004,50.683203125],[92.6266601562501,50.68828124999999],[92.57890625000002,50.725439453125006],[92.42636718750006,50.803076171875006],[92.35478515625002,50.86416015625002],[92.29580078125,50.84980468750004],[92.19238281249997,50.700585937499994],[91.80429687500006,50.693603515625],[91.4464843750001,50.52216796874998],[91.41503906249997,50.46801757812506],[91.34082031249997,50.470068359375034],[91.30058593750002,50.46337890625],[91.2337890625,50.45239257812497],[91.02158203125012,50.41547851562501],[90.83808593750004,50.32373046874997],[90.76074218749997,50.30595703124999],[90.71435546874997,50.25942382812502],[90.65507812500007,50.22236328125001],[90.05371093750003,50.09375],[89.64384765625002,49.90302734374998],[89.65410156250007,49.71748046875001],[89.57919921875006,49.69970703125003],[89.475,49.66054687500005],[89.39560546875006,49.61152343750001],[89.24394531250007,49.62705078125006],[89.20292968750007,49.59570312499997],[89.17998046875002,49.5322265625],[89.10947265625012,49.50136718750002],[89.00839843750006,49.472802734374994],[88.97060546875,49.483740234375006],[88.94541015625012,49.50766601562498],[88.90019531250002,49.53969726562502],[88.86386718750006,49.52763671874996],[88.83164062500012,49.44843749999998],[88.633203125,49.486132812500045],[88.19257812500004,49.451708984375045],[88.13554687500002,49.38149414062502],[88.11572265624997,49.25629882812501],[88.0285156250001,49.219775390625045],[87.98808593750002,49.186914062499994],[87.9347656250001,49.16455078124997],[87.81425781250002,49.162304687499955],[87.7625,49.16582031249996],[87.5158203125001,49.122412109375006],[87.41669921875004,49.07661132812501],[87.32285156250012,49.085791015625006],[86.62646484374997,49.56269531250001],[86.67548828125004,49.77729492187501],[86.1808593750001,49.49931640624996],[85.2326171875001,49.61582031249998],[84.9894531250001,50.061425781249994],[84.32324218749997,50.239160156249966],[83.94511718750007,50.774658203125],[83.35732421875005,50.99458007812504],[82.76083984375012,50.89335937500002],[82.49394531250007,50.72758789062499],[81.46591796875006,50.73984375],[81.38828125000006,50.95649414062501],[81.0714843750001,50.96875],[81.12724609375002,51.19106445312502],[80.73525390625,51.29340820312498],[80.44804687500002,51.18334960937503],[80.42363281250002,50.94628906249997],[79.98623046875,50.774560546874966],[77.85996093750006,53.269189453124994],[76.48476562500005,54.02255859374998],[76.42167968750007,54.151513671874966],[76.65458984375007,54.14526367187503],[76.8373046875,54.4423828125],[75.43720703125004,54.08964843749999],[75.22021484374997,53.89379882812506],[74.45195312500007,53.64726562500002],[74.35156250000003,53.487646484375006],[73.85898437500006,53.61972656249998],[73.40693359375004,53.44755859374999],[73.30566406250003,53.707226562499955],[73.71240234375003,54.04238281250002],[73.22988281250005,53.957812500000045],[72.62226562500004,54.13432617187502],[72.44677734375003,53.94184570312498],[72.18603515625003,54.32563476562501],[72.00449218750006,54.20566406249998],[71.09316406250005,54.21220703124999],[71.18554687500003,54.59931640624998],[70.73808593750007,55.30517578125],[70.18242187500002,55.162451171875034],[68.9772460937501,55.389599609374955],[68.20625,55.16093750000002],[68.15585937500006,54.97670898437505],[65.476953125,54.62329101562497],[65.08837890624997,54.340185546875034],[64.46123046875002,54.38417968750002],[61.92871093750003,53.94648437500004],[61.231054687500006,54.01948242187498],[60.97949218749997,53.62172851562505],[61.53496093750002,53.52329101562506],[61.22890625,53.445898437500006],[61.19921874999997,53.28715820312502],[61.65986328125004,53.22846679687504],[62.08271484375004,53.00541992187499],[61.047460937500006,52.97246093750002],[60.77441406249997,52.67578124999997],[60.99453125000005,52.33686523437504],[60.03027343749997,51.93325195312505],[60.464746093749994,51.651171875000045],[61.55468750000003,51.32460937500005],[61.38945312500002,50.86103515625001],[60.94228515625005,50.69550781250004],[60.42480468749997,50.67915039062498],[60.05859374999997,50.850292968749955],[59.812402343749994,50.58203125],[59.523046875,50.492871093749955],[59.4523437500001,50.62041015625002],[58.88369140625005,50.694433593750006],[58.359179687500074,51.063818359375034],[57.83886718750003,51.091650390625006],[57.44218750000002,50.88886718749998],[57.01171874999997,51.06518554687503],[56.49140625000004,51.01953124999997],[55.68623046875004,50.582861328125006],[54.64160156250003,51.011572265625034],[54.555273437500006,50.535791015624994],[54.139746093750006,51.04077148437503],[53.33808593750004,51.48237304687504],[52.57119140625005,51.481640624999955],[52.21914062499999,51.709375],[51.344531250000074,51.47534179687503],[51.16347656250005,51.6474609375],[50.79394531249997,51.729199218749955],[50.246875,51.28950195312498],[49.49804687500003,51.08359375000006],[49.32343750000004,50.851708984374966],[48.625097656250006,50.61269531250005],[48.7589843750001,49.92832031250006],[48.33496093750003,49.858251953125006],[47.7057617187501,50.37797851562502],[47.42919921874997,50.35795898437502],[46.889550781249994,49.69697265625001],[46.80205078125002,49.36708984375002],[47.031347656250006,49.150292968749994],[46.70263671875003,48.80556640625002],[46.660937500000074,48.41225585937502],[47.06464843750004,48.23247070312499],[47.292382812499994,47.74091796875004],[47.48193359374997,47.80390624999998],[48.16699218750003,47.70878906249996],[48.959375,46.77460937499998],[48.558398437500074,46.75712890624999],[48.54121093750004,46.60561523437502],[49.232226562500074,46.33715820312503],[48.683691406250006,46.08618164062497],[48.72958984375006,45.896826171875034],[48.4870117187501,45.93486328124996],[47.63330078124997,45.58403320312499],[47.46328125,45.67968750000003],[47.5294921875001,45.530224609374955],[47.3512695312501,45.21772460937498],[46.7072265625001,44.503320312499994],[47.30703125000005,44.103125],[47.462792968749994,43.55502929687498],[47.64648437500003,43.88461914062498],[47.463183593750074,43.03505859375002],[48.572851562500006,41.84448242187503],[47.79101562499997,41.19926757812502],[47.31767578125002,41.28242187500001],[46.74931640625002,41.812597656250006],[46.42988281250004,41.890966796875006],[46.21269531250002,41.989892578124994],[45.63857421875005,42.20507812500003],[45.63427734374997,42.234716796875034],[45.72753906249997,42.47504882812498],[45.70527343750004,42.49809570312496],[45.56289062499999,42.53574218749998],[45.34375,42.52978515625003],[45.16025390625006,42.675],[45.07158203125002,42.69414062500002],[44.94335937499997,42.73027343750002],[44.870996093749994,42.75639648437499],[44.850488281249994,42.746826171875],[44.77109375000006,42.61679687499998],[44.69179687499999,42.709619140624966],[44.64433593750002,42.734716796875034],[44.50585937500003,42.748632812500006],[44.329492187499994,42.703515624999966],[44.10273437500004,42.616357421874994],[44.004687500000074,42.59560546875002],[43.95742187500005,42.56655273437505],[43.825976562500074,42.571533203125],[43.759863281250006,42.593847656250006],[43.738378906250006,42.61699218750002],[43.74990234375005,42.65751953125002],[43.79541015624997,42.702978515625034],[43.78261718750005,42.747021484374955],[43.62304687500003,42.80771484374998],[43.5578125000001,42.844482421875],[43.089160156250074,42.9890625],[43.00019531250004,43.04965820312506],[42.991601562499994,43.09150390624998],[42.76064453125005,43.169580078124966],[41.58056640624997,43.21923828124997],[41.460742187500074,43.276318359374955],[41.35820312500002,43.33339843750005],[41.08310546875006,43.37446289062498],[40.94199218750006,43.41806640624998],[40.801660156249994,43.479931640624955],[40.64804687500006,43.53388671875004],[40.084570312500006,43.553125],[40.02373046875002,43.48486328125],[39.873632812500006,43.47280273437502],[38.71728515624997,44.28808593750003],[38.18125,44.41967773437503],[37.851464843749994,44.698828125000034],[37.49511718750003,44.69526367187504],[37.20478515625004,44.97197265624999],[36.62763671875004,45.15131835937504],[36.941210937500074,45.289697265624994],[36.72041015625004,45.371875],[36.8659179687501,45.42705078124999],[37.21357421875004,45.272314453125006],[37.6471679687501,45.37719726562506],[37.61240234375006,45.56469726562506],[37.93310546875003,46.001708984375],[38.014257812500006,46.047753906249966],[38.07958984375003,45.93481445312506],[38.18359374999997,46.09482421875006],[38.49228515625006,46.09052734374998],[37.913867187500074,46.40649414062503],[37.766503906249994,46.63613281250002],[38.50097656249997,46.663671875000034],[38.43867187500004,46.813085937500006],[39.29345703125003,47.105761718750045],[39.19570312499999,47.268847656250045],[39.023730468750074,47.27221679687503],[38.928320312500006,47.175683593749994],[38.55244140625004,47.15034179687498],[38.7619140625001,47.261621093749994],[38.21435546875003,47.091455078124966],[38.36884765625004,47.609960937500006],[38.90029296875005,47.85512695312502],[39.77871093750005,47.88754882812506],[39.95791015625005,48.268896484375034],[39.8356445312501,48.54277343749996],[39.6447265625001,48.591210937499966],[39.792871093749994,48.807714843750034],[40.00361328125004,48.82207031250002],[39.68652343749997,49.007910156250034],[40.10878906250005,49.251562500000034],[40.080664062500006,49.576855468749955],[39.780566406250074,49.57202148437503],[39.17480468750003,49.85595703124997],[38.91835937499999,49.82470703125],[38.258593750000074,50.05234375],[38.046875,49.92001953125006],[37.42285156249997,50.411474609375006],[36.619433593750074,50.209228515625],[36.1164062500001,50.408544921875006],[35.59111328125002,50.36875],[35.31191406250005,51.043896484374955],[35.0640625,51.203417968750045],[34.21386718750003,51.25537109375006],[34.12109375000003,51.67915039062498],[34.397851562499994,51.780419921874994],[33.735253906249994,52.344775390625045],[32.435449218749994,52.307226562500034],[32.12226562500004,52.05058593749996],[31.763378906250097,52.10107421875003],[31.758593750000017,52.125830078125034],[31.690625,52.22065429687498],[31.64990234374997,52.26220703125],[31.60156250000003,52.284814453124994],[31.57734375000004,52.31230468749999],[31.585546875,52.532470703125],[31.56484375,52.75922851562501],[31.53515624999997,52.798242187499966],[31.442773437499994,52.86181640625003],[31.35302734374997,52.93344726562498],[31.295117187500097,52.98979492187499],[31.25878906249997,53.01669921875006],[31.364550781250017,53.13896484375002],[31.388378906250097,53.18481445312503],[31.41787109375005,53.196044921875],[31.849707031250006,53.106201171875],[32.14199218750005,53.091162109375034],[32.46933593750006,53.270312500000045],[32.578027343749994,53.312402343749994],[32.644433593749994,53.32890624999999],[32.70429687500004,53.33632812499999],[32.45097656250002,53.6533203125],[32.20039062500004,53.78125],[31.99218750000003,53.796875],[31.82080078124997,53.79194335937498],[31.754199218750017,53.81044921875002],[31.825292968750006,53.93500976562501],[31.837792968749994,54.00078124999999],[31.825976562500074,54.030712890624955],[31.79199218749997,54.05590820312503],[31.62841796874997,54.111181640625006],[31.403613281250017,54.195947265624966],[31.299121093750017,54.29169921875001],[31.184765625000097,54.452978515625006],[31.074804687500063,54.491796875],[31.154882812500063,54.610937500000034],[31.152148437500017,54.625341796875034],[31.12128906250004,54.64848632812496],[30.984179687500074,54.695898437500034],[30.79882812499997,54.78325195312499],[30.79101562499997,54.806005859375006],[30.804492187500074,54.8609375],[30.829882812500017,54.91499023437498],[30.977734375000097,55.05048828124998],[30.977734375000097,55.08779296875002],[30.958886718749994,55.13759765625005],[30.87744140625003,55.223437500000045],[30.81445312499997,55.27871093750002],[30.81054687499997,55.306982421875006],[30.82099609375004,55.330273437499955],[30.900585937500097,55.397412109374955],[30.906835937500063,55.57001953125004],[30.625585937500006,55.666259765625],[30.23359375000004,55.84521484375006],[30.04267578125004,55.83642578125003],[29.93701171874997,55.84526367187499],[29.881640625000074,55.83232421875002],[29.82392578125004,55.79511718749998],[29.74414062499997,55.770410156249994],[29.630078125000097,55.75117187499998],[29.482226562500074,55.6845703125],[29.412988281249994,55.72485351562506],[29.35341796875005,55.784375],[29.375,55.938720703125],[28.284277343750006,56.055908203125],[28.14794921875003,56.142919921875034],[28.202050781250023,56.260400390624994],[28.191699218750045,56.31557617187505],[28.169238281250017,56.386865234374994],[28.11083984375,56.51069335937501],[28.103125,56.545703125000045],[27.89208984375003,56.741064453125034],[27.88154296875001,56.82416992187501],[27.848632812500057,56.85341796875002],[27.806054687499994,56.86708984375005],[27.639453125000074,56.84565429687504],[27.83027343750004,57.19448242187505],[27.83828125000008,57.247705078124966],[27.82861328124997,57.293310546875006],[27.796875,57.316943359375045],[27.538671875000063,57.429785156250034],[27.51113281250005,57.508154296875006],[27.469726562500057,57.524023437500034],[27.35195312500005,57.528125],[27.4,57.66679687499999],[27.542089843750063,57.799414062500006],[27.778515625000068,57.87070312500006],[27.502441406250057,58.221337890624994],[27.434179687500006,58.787255859374994],[28.15107421875004,59.374414062499966],[28.0125,59.484277343749966],[28.05800781250008,59.781542968750045],[28.334570312500034,59.69252929687502],[28.518164062500034,59.849560546874955],[28.947265625000057,59.828759765624994],[29.147265625000045,59.999755859375],[30.12255859374997,59.873583984375074],[30.172656250000017,59.957128906250034],[29.72119140624997,60.19531249999997],[29.069140625000017,60.19145507812499],[28.643164062500006,60.375292968750045],[28.512792968750006,60.67729492187502],[27.797656250000074,60.53613281250003],[29.69013671875004,61.54609375000001],[31.18671875000004,62.48139648437504],[31.533984375000017,62.885400390624994],[31.180859375000097,63.208300781250074],[29.991503906250074,63.73515625000002],[30.50390625000003,64.02060546875],[30.513769531250006,64.2],[30.04189453125005,64.44335937499997],[30.072851562500063,64.76503906250005],[29.60419921875004,64.968408203125],[29.826953125000017,65.14506835937502],[29.608007812500006,65.248681640625],[29.715917968750063,65.62456054687502],[30.102734375000097,65.72626953125004],[29.066210937500045,66.89174804687497],[29.988085937500017,67.66826171874999],[29.343847656250006,68.06186523437506],[28.685156250000034,68.189794921875],[28.470703125000057,68.48837890625],[28.77285156250005,68.84003906249995],[28.414062500000057,68.90415039062506],[28.96582031250003,69.02197265625],[29.38828125,69.29814453125005],[30.08730468750005,69.43286132812503],[30.18017578124997,69.63583984375],[30.860742187499994,69.53842773437503],[30.869726562500006,69.78344726562506],[31.546972656250063,69.696923828125],[31.997949218749994,69.80991210937503],[31.98457031250004,69.95366210937499],[33.00781249999997,69.72211914062498],[32.91503906249997,69.60170898437497],[32.17675781250003,69.67402343749995],[32.37773437500002,69.47910156250003],[32.99980468750002,69.4701171875],[32.97890625000005,69.367333984375],[33.45429687500004,69.42817382812495],[33.14121093750006,69.068701171875],[33.684375,69.31025390625001],[35.85791015625003,69.19174804687503],[37.73056640625006,68.69213867187503],[38.43017578125003,68.35561523437505],[39.568945312500006,68.07172851562501],[39.82333984375006,68.05859375],[39.80927734375004,68.15083007812498],[40.38066406250002,67.831884765625],[40.96640625000006,67.71347656250003],[41.358789062499994,67.20966796874998],[41.18896484375003,66.82617187500003],[40.10332031250002,66.29995117187502],[38.65390625000006,66.06904296874995],[35.51347656250002,66.39580078125002],[34.82460937499999,66.61113281249999],[34.48261718750004,66.55034179687505],[34.4515625,66.651220703125],[33.15019531250002,66.84394531250001],[32.93046875000002,67.08681640625002],[31.895312500000074,67.16142578125002],[33.65595703125004,66.44262695312506],[33.36054687500004,66.32954101562501],[34.112695312499994,66.225244140625],[34.69179687500005,65.95185546874998],[34.77695312500006,65.76826171874998],[34.40644531250004,65.39575195312503],[35.03535156250004,64.44023437500005],[35.802050781250074,64.3353515625],[36.3649414062501,64.00283203125002],[37.44218750000002,63.813378906249966],[37.9679687500001,63.949121093749994],[38.0622070312501,64.09101562499995],[37.953710937500006,64.32011718749999],[37.183691406250006,64.40849609375007],[36.6242187500001,64.75053710937502],[36.534570312499994,64.93862304687497],[36.88281249999997,65.17236328124997],[39.7580078125001,64.57705078125002],[40.05781250000004,64.77075195312497],[40.44492187500006,64.7787109375],[39.7980468750001,65.349853515625],[39.816503906250006,65.59794921874999],[41.4757812500001,66.12343750000002],[42.21054687500006,66.51967773437502],[43.23320312500002,66.41552734375003],[43.653125,66.2509765625],[43.54189453125005,66.12338867187503],[43.84375,66.14238281249999],[44.10439453125005,66.00859374999999],[44.42929687500006,66.93774414062503],[43.7824218750001,67.25449218749998],[44.20468750000006,68.25375976562498],[43.33320312500004,68.67338867187502],[44.04804687500004,68.54882812499997],[45.891992187499994,68.47968750000001],[46.69042968750003,67.84882812500001],[45.52871093750005,67.75756835937497],[44.90214843750002,67.41313476562505],[45.56220703125004,67.18559570312507],[45.88535156250006,66.89106445312501],[46.4923828125001,66.80019531249997],[47.65585937500006,66.97592773437498],[47.87470703125004,67.58417968749998],[48.83320312500004,67.681494140625],[48.75429687500005,67.89594726562501],[49.15527343750003,67.87041015625005],[51.994726562500006,68.53876953124995],[52.3966796875001,68.35170898437505],[52.72265624999997,68.484033203125],[52.34404296875002,68.60815429687497],[53.80195312500004,68.99589843750002],[54.49121093750003,68.992333984375],[53.797656250000074,68.90747070312503],[53.9308593750001,68.43554687499997],[53.260546875000074,68.26748046875002],[54.476171875,68.29414062499995],[54.86132812500003,68.20185546874998],[55.418066406250006,68.56782226562501],[56.04365234375004,68.64887695312501],[57.126855468749994,68.55400390625005],[58.17304687500004,68.88974609375006],[59.0573242187501,69.00605468750004],[59.37050781250005,68.73837890625003],[59.09902343750005,68.4443359375],[59.725683593750006,68.35161132812502],[59.89599609374997,68.70634765624999],[60.489160156249994,68.72895507812498],[60.93359374999997,68.98676757812501],[60.17060546875004,69.59091796875],[60.90908203125005,69.84711914062495],[64.19042968750003,69.53466796875],[64.89628906250002,69.247802734375],[67.00244140625003,68.87358398437505],[68.37119140625006,68.31425781250005],[69.14052734375005,68.95063476562501],[68.54277343750002,68.96708984374999],[68.00585937499997,69.48002929687505],[67.62412109375,69.58442382812501],[67.06445312500003,69.69370117187498],[66.89667968750004,69.55380859374998],[67.28476562500006,70.73872070312498],[67.14335937500002,70.83754882812502],[66.70224609375006,70.81850585937497],[66.63964843749997,71.08139648437498],[68.2692382812501,71.68281250000001],[69.61181640625003,72.98193359375],[69.73828124999997,72.88496093749998],[71.5001953125001,72.91367187500003],[72.812109375,72.69140624999997],[72.57412109375,72.01254882812506],[71.86728515625,71.457373046875],[72.70449218750005,70.96323242187498],[72.5767578125,68.96870117187498],[73.59169921875005,68.48188476562501],[73.13945312500002,68.18134765624998],[73.06679687500005,67.766943359375],[71.84746093750002,67.00761718750005],[71.36523437500003,66.96152343749998],[71.53955078125003,66.68310546875],[70.72490234375007,66.51943359374997],[70.38281249999997,66.60249023437501],[70.69072265625002,66.74531249999998],[70.2833984375001,66.68579101562503],[69.8771484375001,66.84545898437506],[69.21777343749997,66.82861328125],[69.01347656250002,66.78833007812503],[69.19433593749997,66.57866210937505],[70.33945312500006,66.34238281250006],[71.35800781250006,66.35942382812505],[71.91699218749997,66.24672851562502],[72.32158203125002,66.33212890625],[72.4173828125,66.56079101562506],[73.79208984375,66.99531250000001],[74.07451171875007,67.41411132812499],[74.76953124999997,67.76635742187497],[74.39140625000007,68.42060546874995],[74.57958984375003,68.751220703125],[76.10751953125006,68.975732421875],[76.45917968750004,68.97827148437497],[77.2384765625001,68.46958007812498],[77.17441406250012,67.77851562499998],[77.77158203125006,67.57026367187501],[78.92246093750006,67.58911132812503],[77.58828125000005,67.75190429687498],[77.66484375000002,68.19038085937495],[77.99511718749997,68.25947265624998],[77.65068359375007,68.90302734375001],[76.00097656249997,69.23505859374998],[75.42001953125,69.23862304687498],[74.81484375,69.09057617187503],[73.83603515625006,69.143212890625],[73.578125,69.80297851562503],[74.34335937500006,70.57871093749998],[73.08623046875007,71.44492187500006],[73.67177734375,71.84506835937503],[74.99218749999997,72.14482421874999],[74.78681640625004,72.811865234375],[75.15244140625,72.85273437499998],[75.74140625000004,72.29624023437503],[75.273828125,71.95893554687495],[75.33203125000003,71.34174804687498],[76.92900390625002,71.12788085937504],[77.58964843750007,71.16791992187501],[78.32060546875002,70.93041992187503],[78.94218750000002,70.93378906250001],[79.08388671875,71.00200195312505],[78.58769531250007,70.993896484375],[78.21259765625004,71.26630859374998],[76.43339843750002,71.55249023437503],[76.03242187500004,71.91040039062503],[76.87138671875002,72.03300781250005],[77.77753906250004,71.83642578125006],[78.23242187500003,71.95229492187502],[78.01640625000007,72.092041015625],[77.49287109375004,72.07172851562504],[77.47158203125,72.19213867187506],[78.22539062500007,72.37744140625006],[79.4220703125001,72.38076171875002],[80.7625,72.08916015625002],[81.66162109374997,71.71596679687502],[82.75781250000003,71.76411132812498],[83.23359375000004,71.66816406249995],[82.32285156250006,71.26000976562503],[82.16318359375012,70.59814453125003],[82.22119140625003,70.39570312499998],[82.86914062499997,70.95483398437503],[83.03017578125,70.58051757812498],[82.6823242187501,70.21772460937498],[83.0807617187501,70.09301757812497],[83.07382812500012,70.276708984375],[83.73593750000006,70.54648437499998],[83.15126953125005,71.10361328124998],[83.534375,71.68393554687498],[83.20029296875012,71.87470703125004],[82.64541015625005,71.92524414062504],[82.09365234375,72.26542968750005],[80.82705078125005,72.48828124999997],[80.84160156250007,72.94916992187498],[80.4245117187501,73.23115234374998],[80.5832031250001,73.56845703125003],[85.20058593750005,73.72153320312506],[86.89296875,73.88710937500002],[85.79257812500012,73.438330078125],[86.67705078125002,73.10678710937503],[85.93896484374997,73.45649414062495],[87.12011718750003,73.61503906250002],[87.57119140625,73.81074218750001],[86.57109375000007,74.24375],[86.0013671875,74.316015625],[86.39580078125007,74.45009765624997],[86.89794921874997,74.32534179687497],[87.22968750000004,74.3638671875],[85.79101562499997,74.6451171875],[86.20126953125006,74.81621093750005],[86.65146484375012,74.68242187500005],[87.04179687500007,74.77885742187499],[87.46757812500002,75.01323242187505],[86.93906250000006,75.06811523437503],[87.00595703125012,75.16982421874997],[87.67138671874997,75.12958984375004],[90.18496093750005,75.59106445312497],[94.07519531249997,75.91289062499999],[92.89042968750002,75.90996093750002],[93.25927734375003,76.09877929687502],[95.57871093750012,76.13730468749998],[96.07548828125007,76.08198242187498],[95.65332031250003,75.89218750000003],[96.50859375000002,76.00556640624995],[96.49707031249997,75.89121093750003],[98.66201171875005,76.24267578125003],[99.77041015625,76.02875976562498],[99.5407226562501,75.79858398437497],[99.85136718750007,75.93027343749998],[99.8253906250001,76.13593749999995],[98.80566406250003,76.48066406250004],[100.84375,76.52519531250005],[101.59775390625006,76.43920898437503],[100.92802734375002,76.55673828124998],[100.98994140625004,76.99047851562497],[102.61015625000007,77.508544921875],[104.01455078125,77.73041992187501],[106.05957031249997,77.39052734375002],[104.20244140625002,77.101806640625],[106.9416015625001,77.034375],[107.42978515625006,76.92656250000002],[106.41357421874997,76.51225585937499],[107.72216796875003,76.52231445312498],[108.18164062500003,76.73784179687502],[111.39248046875,76.686669921875],[112.09394531250004,76.48032226562506],[111.94267578125002,76.38046875000003],[112.61953125,76.38354492187506],[112.65625,76.05356445312498],[113.2726562500001,76.25166015625001],[113.5638671875,75.89165039062502],[113.85722656250007,75.92128906250002],[113.56757812500004,75.56840820312499],[112.45302734375,75.83017578125003],[112.95566406250006,75.571923828125],[113.24296875000007,75.61142578125003],[113.72617187500012,75.45063476562498],[112.92490234375012,75.01503906249997],[109.84033203124997,74.32197265624998],[109.8102539062501,74.16918945312503],[108.19951171875002,73.69409179687497],[107.27109375000006,73.62104492187501],[106.67939453125004,73.3306640625],[106.1886718750001,73.3080078125],[105.14394531250005,72.77705078125001],[105.7082031250001,72.836669921875],[106.47792968750005,73.13940429687503],[107.750390625,73.17314453125007],[109.33105468749997,73.48745117187497],[109.85527343750002,73.47246093750002],[110.86816406249997,73.73071289062497],[109.70673828125004,73.74375],[110.2614257812501,74.01743164062503],[111.05625,73.93935546875002],[111.13085937500003,74.05283203125003],[111.55058593750007,74.02851562499998],[111.22812500000012,73.96855468750002],[111.40039062500003,73.827734375],[112.14726562500007,73.70893554687498],[112.79541015625003,73.74609375],[112.83593750000003,73.96206054687502],[113.03281250000006,73.91386718750007],[113.4162109375001,73.647607421875],[113.15693359375004,73.45957031249998],[113.49091796875004,73.34609375000002],[113.12783203125,72.8306640625],[113.66455078124997,72.63452148437503],[113.2155273437501,72.80585937500001],[113.88623046875003,73.34580078124998],[113.51035156250012,73.50498046874998],[115.33769531250007,73.70258789062501],[118.87089843750007,73.53789062500002],[118.45703124999997,73.46440429687507],[118.43027343750012,73.24653320312501],[119.750390625,72.97910156250006],[122.26015625,72.88056640624995],[122.75195312500003,72.906494140625],[122.61523437499997,73.02792968750006],[123.1603515625001,72.95488281250002],[123.62226562500004,73.19326171875],[123.49111328125005,73.666357421875],[124.54121093750004,73.75126953125007],[125.59853515625005,73.447412109375],[126.25449218750012,73.548193359375],[126.55253906250007,73.33491210937498],[127.03134765625006,73.54746093750003],[127.74033203125012,73.48154296875],[129.10058593750003,73.11235351562502],[128.5990234375,72.895166015625],[129.01728515625004,72.8724609375],[129.250390625,72.70517578125003],[128.41826171875002,72.53515625000003],[129.28134765625006,72.43769531249998],[129.41064453124997,72.16630859375002],[128.93496093750005,72.07949218750002],[127.8034179687501,72.43403320312504],[127.84140625000012,72.308251953125],[128.91142578125002,71.75532226562495],[129.21025390625007,71.91694335937501],[129.46083984375,71.73930664062499],[128.84326171875003,71.6634765625],[129.76191406250004,71.11953125000002],[130.53710937500003,70.89252929687495],[130.75712890625002,70.96235351562498],[131.02158203125006,70.74609374999997],[132.0353515625001,71.24404296875],[132.65390625000006,71.92597656250001],[133.6888671875,71.434228515625],[134.70273437500012,71.38681640625003],[135.55917968750006,71.6103515625],[136.09033203125003,71.61958007812501],[137.9396484375001,71.1333984375],[137.84404296875007,71.22680664062503],[138.31406250000006,71.32553710937498],[137.918359375,71.38408203124999],[138.23417968750007,71.596337890625],[138.78017578125,71.62900390624998],[139.209375,71.44477539062501],[139.98417968750007,71.49150390625005],[139.72294921875002,71.88496093749998],[139.35927734375005,71.95136718750001],[140.18769531250004,72.19130859374997],[139.17636718750006,72.16347656249997],[139.14082031250004,72.32973632812502],[139.60117187500012,72.49609374999997],[141.07929687500004,72.5869140625],[140.80820312500006,72.89096679687503],[142.06142578125005,72.72080078125],[146.25292968749997,72.442236328125],[146.234765625,72.34970703125],[144.77636718749997,72.38227539062495],[144.16923828125002,72.25878906250003],[144.29492187499997,72.19262695312497],[146.83183593750007,72.29541015625003],[146.11328125000003,71.94497070312497],[146.23027343750007,72.1375],[145.75859375000007,72.22587890624999],[145.75673828125005,71.94130859375002],[145.06396484374997,71.92607421875002],[145.18857421875012,71.69580078125],[146.07324218749997,71.80834960937503],[147.26181640625006,72.327880859375],[149.50156250000012,72.16430664062497],[150.01689453125002,71.89565429687505],[149.04873046875005,71.79575195312503],[148.9681640625,71.69047851562499],[150.59980468750004,71.5201171875],[150.09765624999997,71.22656249999997],[150.96777343749997,71.38046874999998],[151.58242187500005,71.28696289062503],[152.09277343749997,71.02329101562503],[151.76201171875002,70.98247070312499],[152.50878906250003,70.83447265625003],[156.68457031250003,71.09375],[158.03701171875005,71.03925781250001],[159.35068359375006,70.79072265625001],[160.00644531250006,70.30966796875006],[159.72939453125005,69.87021484375006],[160.91074218750012,69.60634765625002],[161.03554687500005,69.09819335937507],[161.30986328125007,68.98227539062498],[160.85605468750006,68.53833007812506],[161.565625,68.90517578125],[161.53691406250002,69.379541015625],[162.16601562499997,69.61157226562503],[163.20136718750004,69.71474609375],[166.82031250000003,69.49956054687505],[167.8568359375,69.72822265624998],[168.30302734375002,69.27148437500003],[169.31064453125006,69.07954101562498],[169.60986328124997,68.78603515624997],[170.53759765624997,68.82539062500001],[170.99541015625002,69.04531250000005],[170.58222656250004,69.58334960937506],[170.16093750000007,69.62656249999998],[170.48681640625003,70.107568359375],[173.27744140625006,69.823828125],[173.43867187500004,69.94682617187502],[175.92148437500012,69.89531250000002],[179.27265624999998,69.25966796875002],[180,68.98344726562505],[180,65.06723632812498],[178.51953125000003,64.60297851562498],[177.7486328125,64.71704101562503],[176.88085937499997,65.08193359375002],[176.34101562500015,65.04731445312501],[177.03730468750004,64.99965820312497],[177.22285156250004,64.861669921875],[177.06875,64.78666992187502],[176.06113281250012,64.96088867187498],[174.54882812500009,64.68388671875005],[176.0565429687501,64.90473632812498],[176.35097656250005,64.70512695312502],[176.14091796875007,64.58583984375005],[177.42744140625015,64.76337890624998],[177.43291015625002,64.44448242187502],[177.6875,64.30473632812507],[178.04472656250013,64.21958007812503],[178.22949218749991,64.36440429687497],[178.38144531250018,64.26088867187502],[178.73144531250003,63.667089843750006],[178.44042968750009,63.605566406250006],[178.74404296874994,63.39477539062503],[178.79296874999997,63.54033203125002],[179.38857421875,63.14721679687497],[179.25957031250002,63.00830078125],[179.5705078125001,62.6875],[179.12070312500012,62.32036132812499],[177.292578125,62.59902343750002],[177.33896484375006,62.781347656250034],[177.02353515625012,62.777246093749994],[177.15947265625007,62.56098632812498],[174.51435546875015,61.823632812499966],[173.6234375,61.716064453125],[173.13183593749997,61.40664062500002],[172.85654296875006,61.469189453124955],[172.90800781250002,61.311621093750006],[172.39609375000006,61.16738281250002],[172.39277343750004,61.061767578125],[170.60820312500007,60.434912109375034],[170.3509765625,59.965527343749955],[169.9826171875001,60.067089843749955],[169.2267578125001,60.59594726562497],[168.1375,60.57392578125001],[167.22675781250004,60.406298828125045],[166.27304687500012,59.85625],[166.13603515625007,59.979345703125034],[166.35214843750006,60.48481445312498],[165.08457031250006,60.09858398437498],[164.95371093750006,59.843603515625006],[164.52529296875,60.06127929687503],[164.11328125000003,59.89755859374998],[164.13505859375002,59.984375],[163.74384765625004,60.02802734374998],[163.36484375000012,59.78144531250004],[163.27285156250005,59.302587890625006],[162.14160156249997,58.44741210937502],[161.96005859375012,58.07690429687506],[162.39140625000002,57.717236328124955],[162.65429687499997,57.94824218750003],[163.22578125000004,57.790380859375034],[162.77929687500003,57.35761718749998],[162.79111328125012,56.875390624999966],[162.92207031250004,56.72265625000003],[163.2565429687501,56.68803710937499],[163.33554687500012,56.232519531250006],[163.04736328125003,56.044677734375],[162.84033203125003,56.065625],[162.628125,56.232275390625034],[163.03837890625002,56.521875],[162.67148437500006,56.49008789062498],[162.52822265625005,56.260693359374955],[162.08496093749997,56.08964843750002],[161.72392578125002,55.49614257812499],[162.10556640625006,54.75214843750004],[161.62480468750002,54.51625976562502],[160.77265625000004,54.54135742187498],[160.0744140625001,54.18916015625001],[159.84375,53.78364257812498],[160.02509765625004,53.129589843749955],[159.58593750000003,53.237695312499966],[158.74541015625002,52.90893554687506],[158.47207031250005,53.032373046874966],[158.6087890625,52.873632812500034],[158.49316406249997,52.383154296875034],[158.10351562500003,51.80961914062499],[156.84746093750002,51.006591796875],[156.74775390625004,50.969287109375045],[156.52119140625004,51.38027343750002],[156.36474609374997,52.509375],[156.11035156250003,52.86616210937504],[155.62031250000004,54.86455078125002],[155.5548828125001,55.348486328125034],[155.98251953125012,56.69521484375002],[156.8488281250001,57.290185546874994],[156.97675781250004,57.46630859375],[156.82988281250007,57.77963867187498],[157.4503906250001,57.79926757812498],[157.66640625000005,58.01977539062506],[158.27519531250007,58.00898437499998],[159.21064453125004,58.519433593749966],[159.8473632812501,59.127148437499955],[161.75351562500012,60.15229492187501],[162.06816406250002,60.466406250000034],[163.70996093749997,60.916796875000045],[163.55351562500002,61.02563476562503],[164.00546875000006,61.34379882812499],[163.80439453125004,61.46137695312498],[164.20722656250004,62.29223632812506],[164.59833984375004,62.470556640625034],[165.20810546875012,62.37397460937501],[165.41738281250005,62.447070312500045],[164.418359375,62.704638671875045],[163.33173828125004,62.550927734374994],[163.01767578125006,61.89106445312504],[163.25781249999997,61.69946289062497],[163.08525390625002,61.570556640625],[162.85595703125003,61.705029296874955],[162.39257812500003,61.662109375],[160.76660156249997,60.753320312499966],[160.17363281250002,60.638427734375],[160.37890625000003,61.02548828124998],[159.79042968750005,60.956640625],[160.309375,61.894384765625006],[159.55234375000012,61.71948242187497],[159.18925781250007,61.92939453125001],[158.07011718750002,61.75361328125001],[157.46933593750012,61.798925781250006],[157.0841796875001,61.67568359375002],[155.71611328125002,60.682373046875],[154.97080078125012,60.376660156249955],[154.29306640625006,59.833349609375034],[154.1498046875,59.52851562500001],[154.97128906250006,59.44960937500002],[155.16044921875002,59.19013671875001],[154.45800781250003,59.21655273437497],[154.01093750000004,59.075537109375006],[153.69521484375005,59.22475585937505],[153.36113281250002,59.214794921874955],[152.81787109375003,58.92626953124997],[152.31962890625002,59.03076171875003],[152.08789062499997,58.910449218750045],[151.32675781250006,58.875097656250034],[151.12109375000003,59.08251953125003],[152.26064453125,59.22358398437498],[151.34824218750012,59.561132812500006],[150.4835937500001,59.494384765625],[150.66728515625002,59.55634765625001],[149.64257812499997,59.770410156249994],[149.06523437500002,59.63051757812502],[149.20498046875,59.488183593749966],[148.79707031250004,59.532324218750006],[148.74414062499997,59.37353515624997],[148.96464843750007,59.36914062499997],[148.72666015625006,59.257910156250034],[148.25742187500006,59.414208984374994],[147.51445312500002,59.2685546875],[146.53720703125006,59.45698242187501],[146.0495117187501,59.17055664062502],[145.55458984375,59.413525390624955],[143.19218750000002,59.3701171875],[142.58027343750004,59.240136718749966],[140.79023437500004,58.30346679687503],[140.446875,57.81367187499998],[138.66210937500003,56.96552734375004],[137.69150390625006,56.13935546875004],[135.2625,54.94331054687498],[135.25771484375005,54.73149414062499],[135.85156249999997,54.583935546874955],[136.797265625,54.62099609375005],[136.71884765625006,53.804101562499994],[137.15537109375012,53.82167968750002],[137.14160156249997,54.182226562500006],[137.66601562500003,54.283300781250006],[137.3392578125,54.10053710937498],[137.83476562500002,53.94672851562498],[137.25371093750007,53.546142578125],[137.95048828125007,53.60356445312499],[138.52792968750012,53.959863281249994],[138.56914062500002,53.818798828124955],[138.24970703125004,53.524023437500034],[138.45068359375003,53.53701171875002],[138.69941406250004,53.869726562500034],[138.65722656249997,54.29833984375003],[139.31972656250005,54.19296874999998],[139.707421875,54.27714843749999],[140.68759765625012,53.59643554687503],[141.3737304687501,53.29277343749999],[141.18125,53.01528320312505],[140.83964843750002,53.087890625],[141.25585937499997,52.84013671874996],[141.13242187500006,52.435693359374994],[141.48525390625,52.17851562500002],[141.36689453125004,51.92065429687506],[140.93261718750003,51.61992187499999],[140.5208984375,50.80019531250005],[140.62451171874997,50.08242187500002],[140.46269531250002,49.911474609375006],[140.51718750000012,49.59614257812498],[140.17060546875004,48.52368164062497],[138.58681640625005,47.057226562500006],[138.33691406250003,46.543408203124955],[137.68544921875,45.81835937500003],[136.14228515625004,44.489111328125034],[135.87460937500012,44.37353515625003],[135.1310546875001,43.52573242187506],[134.01044921875004,42.94746093750001],[133.15996093750007,42.69697265624998],[132.70898437500003,42.875830078125006],[132.30380859375006,42.88330078125],[132.30957031249997,43.31352539062499],[131.8666015625,43.09516601562501],[131.93896484374997,43.30195312500004],[131.15830078125012,42.62602539062499],[130.709375,42.656396484374966],[130.8341796875001,42.52294921875006],[130.68730468750007,42.30253906249999]]],[[[107.69550781250004,78.13090820312505],[107.48164062500004,78.057763671875],[106.41552734375003,78.13984375000001],[107.69550781250004,78.13090820312505]]],[[[102.88476562499997,79.25395507812505],[102.4123046875001,78.83544921874997],[103.80078124999997,79.14926757812503],[104.45205078125005,78.880029296875],[105.14599609375003,78.81884765625006],[105.31259765625012,78.49990234375],[104.74179687500012,78.33974609374997],[102.79667968750007,78.18789062500002],[101.20410156249997,78.19194335937505],[99.50029296875002,77.97607421875003],[101.590625,79.350439453125],[102.25126953125002,79.25605468749995],[102.40488281250006,79.43320312499998],[102.88476562499997,79.25395507812505]]],[[[76.24892578125005,79.65107421874995],[77.58896484375012,79.50190429687504],[76.64951171875012,79.493408203125],[76.24892578125005,79.65107421874995]]],[[[92.68349609375005,79.685205078125],[91.37626953125007,79.83549804687505],[91.22929687500007,80.03071289062504],[93.803125,79.904541015625],[92.68349609375005,79.685205078125]]],[[[51.409277343750006,79.94423828125],[50.09140625,79.98056640625003],[50.93632812500002,80.09423828125],[51.409277343750006,79.94423828125]]],[[[59.68886718750005,79.95581054687506],[58.91923828125002,79.98461914062506],[59.54453125000006,80.11884765624995],[59.68886718750005,79.95581054687506]]],[[[97.67451171875004,80.15825195312499],[97.65166015625002,79.76064453125],[98.59648437500002,80.05219726562495],[100.0612304687501,79.77709960937506],[99.68066406250003,79.32333984374998],[99.04179687500007,79.29301757812502],[99.92929687500012,78.96142578124997],[98.41113281250003,78.78779296875004],[95.53105468750007,79.09809570312501],[95.02041015625005,79.05268554687498],[94.21875,79.40234375],[93.07080078124997,79.49531250000001],[94.98730468749997,80.096826171875],[95.28134765625012,80.030517578125],[97.67451171875004,80.15825195312499]]],[[[50.05175781250003,80.07431640625003],[49.55605468750005,80.15893554687503],[49.883691406249994,80.230224609375],[50.05175781250003,80.07431640625003]]],[[[57.07871093750006,80.35092773437498],[56.986914062500006,80.07148437499998],[55.811621093750006,80.08715820312497],[56.02441406250003,80.34130859374997],[57.07871093750006,80.35092773437498]]],[[[53.521386718749994,80.18520507812497],[52.34355468750002,80.213232421875],[52.85390625,80.40239257812499],[53.85166015625006,80.26835937500005],[53.521386718749994,80.18520507812497]]],[[[57.95625,80.12324218749995],[57.33232421875002,80.15810546875005],[57.075,80.49394531249999],[59.25546875000006,80.34321289062501],[58.39794921874997,80.31875],[57.95625,80.12324218749995]]],[[[54.41533203125002,80.47280273437502],[53.811914062499994,80.47622070312502],[53.87724609375002,80.60527343750002],[54.41533203125002,80.47280273437502]]],[[[47.441992187500006,80.853662109375],[48.44570312500005,80.80600585937506],[48.68359375000003,80.63325195312504],[47.7052734375001,80.76518554687499],[46.141406250000074,80.44672851562495],[45.969042968750074,80.56948242187502],[44.9049804687501,80.61127929687501],[47.441992187500006,80.853662109375]]],[[[62.167773437500074,80.83476562500005],[62.07578125000006,80.616943359375],[61.05126953124997,80.418603515625],[60.27832031249997,80.49443359374999],[59.649804687499994,80.43125],[59.59228515625003,80.81650390624998],[62.167773437500074,80.83476562500005]]],[[[50.278125,80.92724609374997],[51.70361328125003,80.68764648437502],[48.81103515625003,80.35371093750001],[48.97753906250003,80.16259765624997],[47.73730468749997,80.08168945312502],[47.89296875000005,80.23925781249997],[46.991015625000074,80.182763671875],[46.644433593749994,80.30034179687507],[47.89580078125002,80.52905273437503],[49.087792968749994,80.515771484375],[49.24433593750004,80.82138671875],[50.278125,80.92724609374997]]],[[[80.02666015625007,80.84814453125003],[79.09853515625005,80.81206054687505],[79.21738281250012,80.96035156249997],[80.27958984375007,80.94980468750003],[80.02666015625007,80.84814453125003]]],[[[61.1408203125001,80.95034179687497],[60.0783203125001,80.99916992187497],[61.45742187499999,81.10395507812501],[61.1408203125001,80.95034179687497]]],[[[54.71894531250004,81.11596679687497],[56.47226562500006,80.99824218749995],[57.58037109375002,80.75546874999998],[55.88339843750006,80.62841796875003],[54.66816406250004,80.73867187500002],[54.04541015624997,80.87197265625],[54.71894531250004,81.11596679687497]]],[[[58.62236328125002,81.04165039062502],[58.930566406249994,80.83168945312497],[58.28564453124997,80.76489257812503],[57.21093749999997,81.01708984374997],[58.04951171875004,81.11845703125002],[58.62236328125002,81.04165039062502]]],[[[63.37382812500002,80.70009765624997],[62.59257812500002,80.85302734375006],[64.80205078125002,81.197265625],[65.43740234375005,80.93071289062507],[63.37382812500002,80.70009765624997]]],[[[91.56718750000007,81.14121093750003],[91.2228515625001,81.063818359375],[89.90117187500002,81.17070312500002],[91.56718750000007,81.14121093750003]]],[[[96.52656250000004,81.0755859375],[97.86992187500007,80.76328125000006],[97.02539062499997,80.53554687500002],[97.29843750000006,80.27275390625005],[93.6546875,80.009619140625],[91.52382812500005,80.35854492187502],[93.2625,80.79125976562497],[92.59257812500007,80.780859375],[92.7103515625,80.87216796875003],[95.1595703125,81.27099609375003],[95.80068359375005,81.28046874999998],[96.52656250000004,81.0755859375]]],[[[57.81025390625004,81.54604492187502],[58.563867187499994,81.41840820312504],[57.858691406250074,81.36806640625],[57.76972656250004,81.16972656249999],[55.71669921875005,81.1884765625],[55.46601562500004,81.31118164062502],[57.81025390625004,81.54604492187502]]],[[[63.65097656250006,81.60932617187501],[62.10644531249997,81.679345703125],[63.709570312500006,81.68730468750002],[63.65097656250006,81.60932617187501]]],[[[58.29541015625003,81.715185546875],[58.13457031250002,81.82797851562498],[59.261816406250006,81.85419921874998],[59.35644531250003,81.75898437499995],[58.29541015625003,81.715185546875]]]]},"properties":{"name":"Russia","childNum":73}},{"geometry":{"type":"Polygon","coordinates":[[[30.50996093750001,-1.067285156250009],[30.47705078125,-1.0830078125],[30.47021484375,-1.131152343750003],[30.508105468750017,-1.208203125000011],[30.631933593750006,-1.367480468750003],[30.710742187500017,-1.396777343750003],[30.76220703125,-1.458691406250011],[30.812597656250006,-1.563085937500006],[30.8765625,-2.143359375],[30.85498046875,-2.265429687500003],[30.828710937500006,-2.338476562500006],[30.7625,-2.371679687500006],[30.71484375,-2.363476562500011],[30.656640625000023,-2.373828125],[30.593359375,-2.396777343750003],[30.553613281250023,-2.400097656250011],[30.408496093750017,-2.31298828125],[30.117285156250006,-2.416601562500006],[29.93017578125,-2.339550781250011],[29.8681640625,-2.71640625],[29.698046875000017,-2.794726562500003],[29.390234375,-2.80859375],[29.10205078125,-2.595703125],[29.01435546875001,-2.72021484375],[28.893945312500023,-2.635058593750003],[28.876367187500023,-2.400292968750009],[29.13154296875001,-2.195117187500003],[29.196582031250017,-1.719921875000011],[29.576953125000017,-1.387890625000011],[29.82539062500001,-1.335546875],[29.930078125000023,-1.469921875000011],[30.360253906250023,-1.074609375],[30.41230468750001,-1.063085937500006],[30.46992187500001,-1.066015625],[30.50996093750001,-1.067285156250009]]]},"properties":{"name":"Rwanda","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[41.98769531250005,16.715625],[42.059960937499994,16.803515625000017],[42.15781250000006,16.570703125000023],[41.80156250000002,16.778759765624955],[41.86044921875006,17.002539062499977],[41.98769531250005,16.715625]]],[[[46.53144531250004,29.09624023437499],[47.433203125,28.989550781250017],[47.671289062499994,28.53315429687504],[48.442480468750006,28.542919921874983],[48.80898437499999,27.895898437499966],[48.797167968750074,27.72431640625001],[49.2375,27.49272460937499],[49.17509765625002,27.43764648437505],[49.40527343749997,27.18095703124996],[50.149804687499994,26.66264648437499],[50.00810546875002,26.678515625000017],[50.21386718750003,26.30849609375005],[50.15546875000004,26.100537109374955],[50.03164062499999,26.11098632812505],[50.55791015625002,25.086669921875],[50.66689453125005,24.96381835937501],[50.72558593749997,24.869384765625057],[50.80439453125004,24.789257812499983],[50.928320312500006,24.595117187500023],[50.96601562500004,24.573925781249983],[51.022753906250074,24.56523437499999],[51.09335937500006,24.564648437499955],[51.178027343750074,24.586718750000017],[51.26796875,24.607226562500017],[51.33847656250006,24.564355468749994],[51.41123046875006,24.570800781250057],[51.30986328125002,24.340380859375017],[51.56835937500003,24.286181640625074],[51.592578125000074,24.07885742187503],[52.55507812500005,22.932812499999955],[55.104296875000074,22.621484375000023],[55.185839843750074,22.7041015625],[55.64101562499999,22.001855468749994],[54.97734375000002,19.995947265625006],[51.977636718750006,18.996142578125074],[49.04199218750003,18.58178710937503],[48.17216796875002,18.156933593749983],[47.57958984374997,17.448339843750034],[47.44179687499999,17.111865234375045],[47.14355468749997,16.946679687499966],[46.97568359375006,16.953466796875034],[46.72763671875006,17.26557617187501],[45.5353515625001,17.30205078124999],[45.14804687500006,17.427441406249955],[43.91699218749997,17.32470703124997],[43.41796875000003,17.516259765625023],[43.19091796875003,17.359375],[43.16503906249997,16.689404296874955],[42.79931640624997,16.37177734375001],[42.29394531249997,17.434960937499966],[41.75,17.88574218749997],[41.22949218750003,18.678417968749983],[40.75917968750005,19.755468750000034],[40.080664062500006,20.265917968750017],[39.728320312500074,20.390332031249955],[39.27607421875004,20.973974609375034],[39.093554687500074,21.31035156249999],[39.14707031250006,21.518994140624955],[38.98789062500006,21.88173828125005],[39.06201171874997,22.592187500000023],[38.46416015625002,23.71186523437504],[37.91972656250002,24.185400390625063],[37.54306640625006,24.291650390625023],[37.18085937500004,24.82001953125001],[37.26630859375004,24.960058593750034],[37.14882812499999,25.291113281249977],[35.18046875000002,28.03486328125004],[34.722070312499994,28.130664062500017],[34.625,28.064501953125017],[34.95078125,29.353515625],[36.068457031250006,29.200537109375006],[36.28281250000006,29.355371093750023],[36.47607421874997,29.49511718749997],[36.59179687500003,29.666113281250006],[36.703906250000074,29.831640624999977],[36.75527343750005,29.86601562499996],[37.46923828125003,29.995068359374955],[37.49072265625003,30.01171874999997],[37.55361328125005,30.14458007812496],[37.63359375000002,30.313281250000045],[37.64990234374997,30.330957031249994],[37.669726562500074,30.34814453125003],[37.862890625,30.44262695312503],[37.98007812500006,30.5],[37.47900390624997,31.007763671874955],[37.10527343750002,31.35517578125004],[36.95859375000006,31.491503906250017],[37.215625,31.55610351562501],[37.49335937500004,31.625878906250023],[38.111425781250006,31.78115234375005],[38.37548828124997,31.84746093749996],[38.962304687499994,31.99492187499999],[38.99707031249997,32.00747070312505],[39.145410156249994,32.12451171875],[39.36865234374997,32.09174804687498],[39.70410156250003,32.04252929687499],[40.02783203124997,31.995019531249994],[40.3693359375001,31.93896484375003],[40.47890625000005,31.89335937499999],[42.07441406250004,31.08037109374999],[43.77373046875002,29.84921875],[44.71650390625004,29.19360351562503],[46.35644531250003,29.06367187500001],[46.53144531250004,29.09624023437499]]]]},"properties":{"name":"Saudi Arabia","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[36.87138671875002,21.996728515624994],[36.92695312500001,21.58652343749999],[37.25859375000002,21.108544921874994],[37.25722656250002,21.03940429687499],[37.15058593750001,21.103759765625],[37.14111328125,20.98178710937499],[37.19316406250002,20.12070312499999],[37.471289062500006,18.820117187500003],[38.609472656250006,18.005078125],[38.422460937500006,17.823925781249997],[38.39716796875001,17.778369140625003],[38.38554687500002,17.751269531250003],[38.37373046875001,17.717333984375003],[38.34736328125001,17.68359375],[38.28984375000002,17.637011718750003],[38.26728515625001,17.61669921875],[38.253515625,17.584765625],[37.78242187500001,17.4580078125],[37.547460937500006,17.324121093749994],[37.51015625000002,17.288134765625003],[37.45292968750002,17.108691406250003],[37.41103515625002,17.06171875],[37.24882812500002,17.056884765625],[37.16953125,17.04140625],[37.0615234375,17.061279296875],[37.00898437500001,17.058886718750003],[36.995214843750006,17.020556640625003],[36.97578125000001,16.86655273437499],[36.97871093750001,16.800585937500003],[36.887792968750006,16.624658203124994],[36.91376953125001,16.296191406250003],[36.566015625,15.362109375],[36.4267578125,15.132080078125],[36.44814453125002,14.940087890624994],[36.470800781250006,14.736474609374994],[36.52431640625002,14.2568359375],[36.12519531250001,12.75703125],[35.67021484375002,12.623730468749997],[35.1123046875,11.816552734374994],[34.93144531250002,10.864794921874989],[34.77128906250002,10.746191406249991],[34.571875,10.880175781249989],[34.34394531250001,10.658642578124997],[34.31123046875001,10.190869140624997],[34.078125,9.461523437499991],[33.87148437500002,9.506152343749989],[33.96328125000002,9.861767578124997],[33.90703125000002,10.181445312499989],[33.13007812500001,10.745947265624991],[33.073339843750006,11.606103515624994],[33.199316406250006,12.21728515625],[32.721875,12.223095703124997],[32.73671875000002,12.009667968749994],[32.072265625,12.006738281249994],[32.338476562500006,11.710107421874994],[32.42080078125002,11.089111328125],[31.224902343750017,9.799267578124997],[30.75537109375,9.731201171875],[30.003027343750006,10.277392578124989],[29.60546875,10.065087890624994],[29.47314453125,9.768603515624989],[28.979589843750006,9.594189453124997],[28.844531250000017,9.326074218749994],[28.048925781250006,9.32861328125],[27.880859375,9.601611328124989],[27.07421875,9.613818359374989],[26.65869140625,9.484130859375],[25.91914062500001,10.169335937499994],[25.858203125000017,10.406494140625],[25.211718750000017,10.329931640624991],[25.066992187500006,10.293798828124991],[24.785253906250006,9.774658203125],[24.53193359375001,8.886914062499997],[24.147363281250023,8.665625],[23.53730468750001,8.815820312499994],[23.46826171875,9.11474609375],[23.62265625,9.340625],[23.646289062500017,9.822900390624994],[22.86005859375001,10.919677734375],[22.922656250000017,11.344873046874994],[22.591113281250017,11.579882812499989],[22.580957031250023,11.990136718749994],[22.472460937500017,12.067773437499994],[22.352343750000017,12.660449218749989],[21.928125,12.678125],[21.825292968750006,12.79052734375],[22.228125,13.32958984375],[22.1064453125,13.7998046875],[22.53857421875,14.161865234375],[22.38154296875001,14.550488281249997],[22.6708984375,14.722460937500003],[22.93232421875001,15.162109375],[22.933886718750017,15.533105468749994],[23.10517578125001,15.702539062499994],[23.970800781250006,15.721533203124991],[23.980273437500017,19.496630859375003],[23.980273437500017,19.99594726562499],[24.9794921875,20.002587890624994],[24.980273437500017,21.995849609375],[28.036425781250017,21.995361328125],[31.092675781250023,21.994873046875],[31.260644531250023,22.00229492187499],[31.400292968750023,22.202441406250003],[31.486132812500017,22.14780273437499],[31.434472656250023,21.995849609375],[36.87138671875002,21.996728515624994]]]},"properties":{"name":"Sudan","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[34.078125,9.461523437499991],[34.07275390625,8.545263671874991],[33.95332031250001,8.443505859374994],[33.28105468750002,8.437255859375],[32.99892578125002,7.899511718749991],[33.902441406250006,7.509521484375],[34.06425781250002,7.225732421874994],[34.71064453125001,6.660302734374994],[34.98359375000001,5.858300781249994],[35.26835937500002,5.492285156249991],[35.08447265625,5.311865234374991],[34.87832031250002,5.109570312499997],[34.63984375000001,4.87548828125],[34.38017578125002,4.620654296874989],[34.176855468750006,4.419091796874994],[33.97607421875,4.22021484375],[33.74160156250002,3.985253906249994],[33.568457031250006,3.81171875],[33.489355468750006,3.755078125],[32.99726562500001,3.880175781249989],[32.33574218750002,3.706201171874994],[32.13593750000001,3.519726562499997],[31.79804687500001,3.802636718749994],[31.547167968750017,3.677587890624991],[31.15234375,3.785595703124997],[30.83857421875001,3.49072265625],[30.757226562500023,3.62421875],[30.586718750000017,3.62421875],[30.50830078125,3.835693359375],[30.194921875,3.98193359375],[29.676855468750006,4.5869140625],[29.469628906250023,4.61181640625],[29.224902343750017,4.391894531249989],[28.72705078125,4.504980468749991],[28.427539062500017,4.324169921874997],[28.19208984375001,4.350244140624994],[27.7880859375,4.644677734374994],[27.4033203125,5.109179687499989],[27.143945312500023,5.722949218749989],[26.514257812500006,6.069238281249994],[26.30859375,6.455322265625],[26.36181640625,6.635302734374989],[25.27890625,7.427490234375],[25.18134765625001,7.557226562499991],[25.20039062500001,7.807910156249989],[24.853320312500017,8.137548828124991],[24.291406250000023,8.29140625],[24.147363281250023,8.665625],[24.53193359375001,8.886914062499997],[24.785253906250006,9.774658203125],[25.066992187500006,10.293798828124991],[25.211718750000017,10.329931640624991],[25.858203125000017,10.406494140625],[25.91914062500001,10.169335937499994],[26.65869140625,9.484130859375],[27.07421875,9.613818359374989],[27.880859375,9.601611328124989],[28.048925781250006,9.32861328125],[28.844531250000017,9.326074218749994],[28.979589843750006,9.594189453124997],[29.47314453125,9.768603515624989],[29.60546875,10.065087890624994],[30.003027343750006,10.277392578124989],[30.75537109375,9.731201171875],[31.224902343750017,9.799267578124997],[32.42080078125002,11.089111328125],[32.338476562500006,11.710107421874994],[32.072265625,12.006738281249994],[32.73671875000002,12.009667968749994],[32.721875,12.223095703124997],[33.199316406250006,12.21728515625],[33.073339843750006,11.606103515624994],[33.13007812500001,10.745947265624991],[33.90703125000002,10.181445312499989],[33.96328125000002,9.861767578124997],[33.87148437500002,9.506152343749989],[34.078125,9.461523437499991]]]},"properties":{"name":"S. Sudan","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-12.280615234374977,14.809033203124997],[-12.228417968749994,14.45859375],[-12.019189453124994,14.206494140624997],[-11.960888671874983,13.875292968750003],[-12.05419921875,13.633056640625],[-11.831689453124994,13.315820312499994],[-11.634960937499983,13.369873046875],[-11.390380859375,12.941992187499991],[-11.389404296875,12.404394531249991],[-12.399072265624994,12.340087890625],[-12.930712890624989,12.532275390624989],[-13.061279296875,12.489990234375],[-13.082910156249994,12.633544921875],[-13.729248046875,12.673925781249991],[-14.06484375,12.67529296875],[-14.349218749999977,12.676416015624994],[-15.196093749999989,12.679931640625],[-15.3779296875,12.588964843749991],[-15.574804687499977,12.490380859374994],[-15.839550781249983,12.43789062499999],[-16.144189453124994,12.45742187499999],[-16.24150390624999,12.443310546874997],[-16.41630859374999,12.36767578125],[-16.521337890624977,12.3486328125],[-16.656933593749983,12.364355468749991],[-16.711816406249994,12.354833984374991],[-16.76030273437499,12.52578125],[-16.44287109375,12.609472656249991],[-16.59765625,12.715283203124997],[-16.743896484375,12.58544921875],[-16.763330078124994,13.064160156249997],[-16.648779296874977,13.154150390624991],[-15.834277343749989,13.156445312499997],[-15.814404296874983,13.325146484374997],[-15.286230468749977,13.39599609375],[-15.151123046875,13.556494140624991],[-14.246777343749983,13.23583984375],[-13.826708984374989,13.4078125],[-13.977392578124977,13.54345703125],[-14.405468749999983,13.503710937500003],[-15.108349609374983,13.81210937499999],[-15.426855468749977,13.727001953124997],[-15.509667968749994,13.586230468750003],[-16.56230468749999,13.587304687499994],[-16.766943359374977,13.904931640624994],[-16.618115234374983,14.04052734375],[-16.791748046875,14.004150390625],[-17.168066406249977,14.640625],[-17.345800781249977,14.729296875],[-17.445019531249983,14.651611328125],[-17.53564453125,14.755126953125],[-17.147167968749983,14.922021484374994],[-16.843408203124994,15.293994140625003],[-16.570751953124983,15.734423828125003],[-16.535253906249977,15.83837890625],[-16.502050781249977,15.917333984374991],[-16.480078124999977,16.097216796875003],[-16.441015624999977,16.204541015624997],[-16.239013671875,16.531298828125003],[-15.768212890624994,16.485107421875],[-14.990625,16.676904296874994],[-14.300097656249989,16.580273437499997],[-13.868457031249989,16.148144531249997],[-13.756640624999989,16.172509765624994],[-13.40966796875,16.05917968749999],[-13.105273437499989,15.57177734375],[-12.735253906249994,15.13125],[-12.40869140625,14.889013671874991],[-12.280615234374977,14.809033203124997]]]},"properties":{"name":"Senegal","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[103.9697265625,1.331445312499994],[103.65019531249999,1.325537109374991],[103.81796875000003,1.447070312499989],[103.9697265625,1.331445312499994]]]},"properties":{"name":"Singapore","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-37.10332031249996,-54.065625],[-36.70380859375001,-54.10810546874999],[-36.64741210937498,-54.26230468749996],[-36.32646484374996,-54.251171875],[-35.79858398437497,-54.76347656250002],[-36.08549804687499,-54.86679687500001],[-36.885986328125,-54.33945312499996],[-37.63090820312496,-54.16748046875001],[-37.61884765625001,-54.04208984375004],[-38.017431640625034,-54.008007812500026],[-37.10332031249996,-54.065625]]]},"properties":{"name":"S. Geo. and S. Sandw. Is.","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-5.692138671874972,-15.997753906249997],[-5.782519531250017,-16.00400390625002],[-5.707861328124977,-15.90615234374998],[-5.692138671874972,-15.997753906249997]]]},"properties":{"name":"Saint Helena","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[160.57626953125006,-11.797851562500028],[160.44306640625004,-11.814941406249957],[159.98632812499997,-11.494726562500006],[160.57626953125006,-11.797851562500028]]],[[[166.13320312500005,-10.757812499999972],[165.90400390625004,-10.851464843749966],[165.79101562500003,-10.784765624999963],[166.02382812500005,-10.6611328125],[166.13320312500005,-10.757812499999972]]],[[[161.71533203124997,-10.387304687499991],[162.10537109375005,-10.45380859375004],[162.37333984375002,-10.823242187499986],[161.78681640625004,-10.716894531249991],[161.53789062500007,-10.566406249999972],[161.4870117187501,-10.361425781249963],[161.29394531250003,-10.326464843750031],[161.30478515625012,-10.204394531250031],[161.71533203124997,-10.387304687499991]]],[[[161.54785156249997,-9.625683593749997],[161.55380859375012,-9.769726562500026],[161.40976562500006,-9.681640625000028],[161.36416015625,-9.353417968750037],[161.54785156249997,-9.625683593749997]]],[[[159.75039062500005,-9.272656250000011],[159.97060546875,-9.433300781249969],[160.35458984375006,-9.421582031249983],[160.81894531250006,-9.862792968749986],[160.64921875000002,-9.92861328124998],[159.80273437499997,-9.763476562500003],[159.61230468749997,-9.470703124999943],[159.62558593750012,-9.311230468749969],[159.75039062500005,-9.272656250000011]]],[[[160.1681640625001,-8.995507812500037],[160.40751953125007,-9.140332031249969],[160.10537109375,-9.080761718749997],[160.1681640625001,-8.995507812500037]]],[[[159.18857421875006,-9.123535156250014],[159.03632812500004,-9.075],[159.12978515625,-8.99306640624998],[159.22841796875005,-9.029980468749955],[159.18857421875006,-9.123535156250014]]],[[[158.10791015625003,-8.684179687500034],[157.93759765625006,-8.73642578125002],[157.90927734375006,-8.565625],[158.10546874999997,-8.536816406250026],[158.10791015625003,-8.684179687500034]]],[[[157.38896484375002,-8.713476562499963],[157.2123046875,-8.565039062500006],[157.37949218750012,-8.420898437499943],[157.38896484375002,-8.713476562499963]]],[[[160.7494140625,-8.313964843750014],[160.99765625000006,-8.612011718749983],[160.94433593750003,-8.799023437499983],[161.15869140624997,-8.961816406250009],[161.36738281250004,-9.61123046874998],[160.77207031250012,-8.963867187499986],[160.7140625000001,-8.539257812499997],[160.59042968750006,-8.372753906249997],[160.7494140625,-8.313964843750014]]],[[[157.76347656250002,-8.242187499999957],[157.89843749999997,-8.506347656249943],[157.81933593750003,-8.612011718749983],[157.58789062500003,-8.445410156249963],[157.5580078125,-8.269921875],[157.30244140625004,-8.33330078124996],[157.21757812500002,-8.262792968749977],[157.490625,-7.965722656250037],[157.76347656250002,-8.242187499999957]]],[[[157.171875,-8.108105468749997],[156.95830078125002,-8.014355468749997],[157.02412109375004,-7.867871093749997],[157.18613281250006,-7.941210937500017],[157.171875,-8.108105468749997]]],[[[156.687890625,-7.92304687500004],[156.5109375000001,-7.707812499999974],[156.5609375,-7.574023437499989],[156.80908203124997,-7.722851562500026],[156.687890625,-7.92304687500004]]],[[[159.8791015625001,-8.534277343749949],[158.9440429687501,-8.04072265625004],[158.457421875,-7.544726562499974],[158.734375,-7.604296875000031],[159.43144531250002,-8.029003906249955],[159.84306640625002,-8.326953124999989],[159.8791015625001,-8.534277343749949]]],[[[155.83984374999997,-7.097167968750014],[155.67753906250002,-7.08896484375002],[155.73896484375004,-6.972949218750017],[155.83984374999997,-7.097167968750014]]],[[[157.48671875000005,-7.330371093750003],[157.44130859375,-7.425683593749966],[157.10156249999997,-7.323632812499966],[156.4525390625,-6.638281249999963],[157.03027343750003,-6.891992187499952],[157.19335937499997,-7.160351562499997],[157.48671875000005,-7.330371093750003]]]]},"properties":{"name":"Solomon Is.","childNum":16}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-12.526074218749926,7.436328125000017],[-12.951611328124926,7.570849609374989],[-12.615234374999972,7.63720703125],[-12.5125,7.582421875000037],[-12.526074218749926,7.436328125000017]]],[[[-10.758593749999989,9.385351562499991],[-10.682714843750006,9.289355468749974],[-10.687646484374937,9.261132812499994],[-10.749951171874926,9.12236328124996],[-10.747021484374955,9.095263671875045],[-10.726855468749932,9.081689453125023],[-10.615966796875,9.059179687499977],[-10.500537109375017,8.687548828125017],[-10.677343749999977,8.400585937499997],[-10.712109374999955,8.335253906250017],[-10.686962890624983,8.321679687500009],[-10.652636718749989,8.330273437499983],[-10.604003906249943,8.319482421874994],[-10.55771484374992,8.315673828125028],[-10.496435546874977,8.362109374999974],[-10.394433593749966,8.480957031250028],[-10.360058593749983,8.49550781249998],[-10.283203124999972,8.48515625],[-10.285742187499949,8.454101562499986],[-10.314648437499983,8.310839843750017],[-10.359814453124926,8.187939453125026],[-10.570849609374932,8.071142578125034],[-10.6474609375,7.759375],[-10.878076171874994,7.538232421874994],[-11.267675781249977,7.232617187499997],[-11.507519531249983,6.906542968750003],[-12.48564453124996,7.386279296875045],[-12.480273437499932,7.75327148437502],[-12.697607421874977,7.715869140625045],[-12.850878906249932,7.818701171875034],[-12.956933593749966,8.145312500000045],[-13.148974609374989,8.214599609375043],[-13.272753906249989,8.429736328124989],[-13.085009765624932,8.42475585937504],[-12.894091796874932,8.62978515624998],[-13.181835937499955,8.576904296875043],[-13.206933593749994,8.843115234375006],[-13.059472656249966,8.881152343750031],[-13.292675781249955,9.04921875],[-13.077294921874966,9.069628906249974],[-12.958789062499989,9.263330078124994],[-12.755859374999943,9.373583984374989],[-12.557861328125,9.704980468749994],[-12.427978515625028,9.898144531250011],[-12.142333984375,9.87539062499999],[-11.911083984374955,9.993017578124977],[-11.273632812499955,9.996533203124983],[-11.205664062499949,9.977734374999969],[-11.180859374999955,9.925341796875045],[-11.047460937499977,9.786328125000054],[-10.758593749999989,9.385351562499991]]]]},"properties":{"name":"Sierra Leone","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[-89.36259765624999,14.416015625],[-89.1205078125,14.370214843749991],[-88.51254882812499,13.978955078124997],[-88.504345703125,13.964208984374991],[-88.49765625,13.904541015625],[-88.482666015625,13.854248046875],[-88.44912109375,13.850976562499994],[-88.40849609374999,13.87539062499999],[-88.27622070312499,13.942675781250003],[-88.151025390625,13.987353515625003],[-87.99101562499999,13.879638671875],[-87.8919921875,13.894970703124997],[-87.80224609375,13.889990234374991],[-87.7314453125,13.841064453125],[-87.71533203125,13.812695312499997],[-87.781884765625,13.521386718749994],[-87.930859375,13.1806640625],[-88.68564453124999,13.281494140625],[-88.51201171874999,13.183935546874991],[-89.80419921875,13.560107421875003],[-90.09521484375,13.736523437499997],[-90.04814453124999,13.904052734375],[-89.54716796874999,14.241259765625003],[-89.5736328125,14.390087890624997],[-89.36259765624999,14.416015625]]]},"properties":{"name":"El Salvador","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-56.26708984374997,46.838476562500034],[-56.38476562499994,46.81943359375006],[-56.36464843749994,47.09897460937498],[-56.26708984374997,46.838476562500034]]]},"properties":{"name":"St. Pierre and Miquelon","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[6.659960937499989,0.120654296874989],[6.51972656250004,0.066308593750023],[6.468164062499994,0.22734375],[6.68691406250008,0.404394531249977],[6.75,0.24345703124996],[6.659960937499989,0.120654296874989]]],[[[7.423828125,1.567724609375006],[7.330664062500034,1.603369140624991],[7.414453125000051,1.699121093750037],[7.423828125,1.567724609375006]]]]},"properties":{"name":"São Tomé and Principe","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[-54.03422851562499,3.62939453125],[-54.00957031249999,3.448535156249989],[-54.06318359375,3.353320312499989],[-54.18803710937499,3.178759765624989],[-54.203125,3.13818359375],[-54.17070312499999,2.993603515624997],[-54.18808593749999,2.874853515624991],[-54.1955078125,2.81787109375],[-54.256738281249994,2.713720703124991],[-54.402001953124994,2.461523437499991],[-54.53593749999999,2.343310546874989],[-54.56840820312499,2.342578124999989],[-54.604736328125,2.335791015624991],[-54.61625976562499,2.326757812499991],[-54.661865234375,2.327539062499994],[-54.697412109374994,2.359814453124997],[-54.72221679687499,2.441650390625],[-54.87607421874999,2.450390625],[-54.92656249999999,2.497363281249989],[-54.968408203124994,2.54833984375],[-54.978662109374994,2.59765625],[-55.005810546875,2.59296875],[-55.0703125,2.54833984375],[-55.11411132812499,2.539208984374994],[-55.1876953125,2.547509765624994],[-55.286035156249994,2.499658203124994],[-55.343994140625,2.48876953125],[-55.38535156249999,2.440625],[-55.73056640624999,2.406152343749994],[-55.957470703125,2.520458984374997],[-55.99350585937499,2.497509765624997],[-56.02036132812499,2.392773437499997],[-56.0451171875,2.364404296874994],[-56.087792968749994,2.34130859375],[-56.12939453125,2.299511718749997],[-56.1376953125,2.259033203125],[-56.073632812499994,2.236767578124997],[-56.02006835937499,2.158154296874997],[-55.96196289062499,2.095117187499994],[-55.91533203124999,2.03955078125],[-55.921630859375,1.976660156249991],[-55.929638671875,1.8875],[-56.01992187499999,1.842236328124997],[-56.4828125,1.942138671875],[-56.704345703125,2.036474609374991],[-57.19736328124999,2.853271484375],[-57.303662109375,3.377099609374994],[-57.646728515625,3.39453125],[-58.05429687499999,4.101660156249991],[-57.84599609374999,4.668164062499997],[-57.91704101562499,4.820410156249991],[-57.711083984374994,4.991064453124991],[-57.331005859375,5.020166015624994],[-57.20981445312499,5.195410156249991],[-57.3185546875,5.335351562499994],[-57.194775390625,5.5484375],[-56.96982421874999,5.992871093749997],[-56.235595703125,5.885351562499991],[-55.897607421874994,5.699316406249991],[-55.909912109375,5.892626953124989],[-55.648339843749994,5.985888671874989],[-54.83369140625,5.988330078124989],[-54.05419921875,5.807910156249989],[-54.08046875,5.502246093749989],[-54.4796875,4.836523437499991],[-54.350732421874994,4.054101562499994],[-54.03422851562499,3.62939453125]]]},"properties":{"name":"Suriname","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[22.538671875,49.072705078125],[22.52412109375001,49.031396484374994],[22.389453125000017,48.873486328125],[22.295214843750017,48.685839843749996],[22.142871093750017,48.568505859374994],[22.1318359375,48.405322265624996],[21.766992187500023,48.3380859375],[21.45136718750001,48.55224609375],[20.490039062500017,48.526904296874996],[20.333789062500017,48.295556640624994],[19.95039062500001,48.146630859374994],[19.625390625000023,48.223095703125],[18.791894531250023,48.000292968749996],[18.72421875,47.787158203124996],[17.76191406250001,47.770166015624994],[17.147363281250023,48.00595703125],[16.86542968750001,48.3869140625],[16.953125,48.598828125],[17.135644531250023,48.841064453125],[17.75849609375001,48.888134765625],[18.0859375,49.06513671875],[18.160937500000017,49.257373046874996],[18.83222656250001,49.510791015624996],[19.1494140625,49.4],[19.44160156250001,49.597705078124996],[19.77392578125,49.37216796875],[19.756640625000017,49.204394531249996],[20.0576171875,49.181298828124994],[20.36298828125001,49.38525390625],[20.868457031250017,49.314697265625],[21.079394531250017,49.418261718749996],[21.6396484375,49.411962890625],[22.020117187500006,49.209521484374996],[22.473046875000023,49.081298828125],[22.538671875,49.072705078125]]]},"properties":{"name":"Slovakia","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[16.516210937500006,46.499902343749994],[16.427636718750023,46.5244140625],[16.321191406250023,46.534619140625],[16.1064453125,46.382226562499994],[15.608984375,46.171923828124996],[15.592578125000017,46.139990234375],[15.596875,46.109228515625],[15.675585937500017,45.983691406249996],[15.652148437500017,45.862158203125],[15.277050781250011,45.7326171875],[15.353710937500011,45.659912109375],[15.283593750000023,45.5796875],[15.291210937500011,45.541552734374996],[15.32666015625,45.502294921875],[15.339453125,45.467041015625],[15.242089843750023,45.44140625],[15.110449218750006,45.45078125],[14.95458984375,45.499902343749994],[14.793066406250006,45.47822265625],[14.649511718750006,45.571484375],[14.591796875,45.651269531249994],[14.56884765625,45.6572265625],[14.548448660714302,45.628388671875],[14.507586495535731,45.59039341517857],[14.42734375,45.505761718749994],[14.369921875000017,45.4814453125],[13.878710937500017,45.428369140624994],[13.577929687500017,45.516894531249996],[13.8447265625,45.59287109375],[13.831152343750006,45.680419921875],[13.663476562500023,45.7919921875],[13.6005859375,45.979785156249996],[13.509179687500023,45.973779296874994],[13.487695312500023,45.987109375],[13.480273437500017,46.009228515625],[13.486425781250006,46.03955078125],[13.548046875000011,46.089111328125],[13.616601562500023,46.133105468749996],[13.634960937500011,46.157763671874996],[13.632519531250011,46.177050781249996],[13.420996093750006,46.212304687499994],[13.399511718750006,46.317529296874994],[13.563281250000017,46.415087890624996],[13.637109375000023,46.448535156249996],[13.6796875,46.462890625],[13.7,46.520263671875],[14.5498046875,46.399707031249996],[14.893261718750011,46.605908203125],[15.957617187500006,46.677636718749994],[16.093066406250017,46.86328125],[16.283593750000023,46.857275390625],[16.516210937500006,46.499902343749994]]]},"properties":{"name":"Slovenia","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[16.52851562500001,56.29052734375],[16.431640625,56.24375],[16.41230468750004,56.568994140624994],[17.02539062499997,57.345068359375006],[16.52851562500001,56.29052734375]]],[[[19.076464843750045,57.8359375],[18.813867187500023,57.70620117187502],[18.907910156250068,57.39833984375002],[18.146386718749994,56.920507812500006],[18.285351562500068,57.08320312500001],[18.136523437500045,57.55664062500003],[18.53740234374999,57.83056640625006],[18.90058593750001,57.91547851562504],[19.076464843750045,57.8359375]]],[[[19.156347656250063,57.92260742187497],[19.086523437500034,57.86499023437506],[19.134863281250034,57.98134765625002],[19.331445312500023,57.962890625],[19.156347656250063,57.92260742187497]]],[[[24.15546875000004,65.80527343750006],[23.102343750000074,65.73535156250003],[22.400976562500006,65.86210937499999],[22.254003906250006,65.59755859375002],[21.565527343750063,65.40810546874997],[21.609179687500074,65.261376953125],[21.410351562500068,65.31743164062505],[21.57392578125001,65.12578124999999],[21.138183593750057,64.80869140625006],[21.519628906250034,64.46308593749998],[20.76269531250003,63.86782226562505],[18.60644531250003,63.17827148437499],[18.31289062500008,62.996386718750045],[18.46308593750004,62.895849609375006],[18.170019531250034,62.789355468750074],[17.906640625000023,62.88676757812502],[18.037304687500068,62.60053710937498],[17.834472656250057,62.50273437500002],[17.410253906250063,62.508398437500034],[17.633691406249994,62.23300781250006],[17.374511718750057,61.866308593750034],[17.465429687500006,61.68447265625005],[17.196386718750006,61.72456054687504],[17.13076171875005,61.57573242187499],[17.25097656250003,60.70078125],[17.6611328125,60.53515625000003],[17.955761718750068,60.589794921874955],[18.85273437500001,60.02587890625],[18.970507812500045,59.757226562499994],[17.964257812500023,59.359375],[18.56025390625004,59.39448242187498],[18.285351562500068,59.109375],[16.978125,58.65415039062506],[16.214257812500023,58.636669921874955],[16.92382812499997,58.49257812499999],[16.651953125,58.43432617187503],[16.65224609375008,57.50068359374998],[16.348730468750063,56.70927734374996],[15.826660156250028,56.12495117187501],[14.782031250000017,56.16191406250002],[14.754785156250051,56.03315429687498],[14.401953125000034,55.97675781250004],[14.21503906250004,55.83261718749998],[14.341699218749994,55.52773437500002],[14.17373046875008,55.396630859374966],[12.885839843750063,55.41137695312506],[12.973925781250074,55.748144531250006],[12.471191406250057,56.29052734375],[12.801660156250051,56.263916015625],[12.65644531250004,56.44057617187502],[12.857421875000028,56.45239257812503],[12.883691406250051,56.61772460937496],[12.421484375000034,56.906396484374966],[11.449316406250063,58.118359374999955],[11.43154296875008,58.339990234374994],[11.24824218750004,58.369140625],[11.14716796875004,58.98862304687498],[11.19580078125,59.07827148437505],[11.388281250000063,59.036523437499966],[11.470703125000057,58.909521484375034],[11.64277343750004,58.92607421875002],[11.798144531250074,59.28989257812498],[11.680761718750034,59.59228515625003],[12.486132812500074,60.10678710937506],[12.588671874999989,60.450732421875045],[12.29414062500004,61.00268554687506],[12.706054687500028,61.059863281250074],[12.88076171875008,61.35229492187506],[12.155371093750006,61.720751953125045],[12.303515625000074,62.28559570312501],[11.999902343750051,63.29169921875001],[12.175195312500051,63.595947265625],[12.792773437500017,64],[13.203515625000023,64.07509765625],[13.960546875000063,64.01401367187498],[14.141210937500006,64.17353515624998],[14.077636718750028,64.464013671875],[13.650292968750023,64.58154296874997],[14.47968750000004,65.30146484374998],[14.543261718750045,66.12934570312498],[15.483789062500051,66.30595703124999],[15.422949218750006,66.48984374999998],[16.40351562500004,67.05498046875002],[16.12744140625,67.42583007812507],[16.783593750000023,67.89501953125],[17.324609375000023,68.10380859374999],[17.91669921875001,67.96489257812502],[18.303027343750045,68.55541992187497],[19.969824218750063,68.35639648437501],[20.348046875000023,68.84873046875003],[20.116699218750057,69.02089843750005],[20.622167968750006,69.036865234375],[21.99746093750005,68.52060546874998],[22.854101562500034,68.36733398437502],[23.63886718750004,67.95439453125002],[23.454882812500045,67.46025390625007],[23.733593750000068,67.42290039062499],[23.64150390625005,67.12939453124997],[23.988574218750045,66.81054687500003],[23.700292968750034,66.25263671874998],[24.15546875000004,65.80527343750006]]]]},"properties":{"name":"Sweden","childNum":4}},{"geometry":{"type":"Polygon","coordinates":[[[31.9482421875,-25.957617187500006],[32.060546875,-26.018359375],[32.04140625000002,-26.28125],[32.10595703125,-26.52001953125],[32.112890625,-26.839453125],[32.02480468750002,-26.811132812500006],[31.994726562500006,-26.817480468750006],[31.967187500000023,-26.96064453125001],[31.946093750000017,-27.173632812500003],[31.958398437500023,-27.30585937500001],[31.742578125000023,-27.30996093750001],[31.469531250000017,-27.295507812500006],[31.274023437500006,-27.238378906250006],[31.063378906250023,-27.1123046875],[30.938085937500006,-26.915820312500003],[30.88330078125,-26.79238281250001],[30.806738281250006,-26.785253906250006],[30.794335937500023,-26.764257812500006],[30.803320312500006,-26.41347656250001],[31.08808593750001,-25.98066406250001],[31.207324218750017,-25.843359375],[31.33515625000001,-25.75556640625001],[31.382617187500017,-25.74296875],[31.415136718750006,-25.74658203125],[31.921679687500017,-25.96875],[31.9482421875,-25.957617187500006]]]},"properties":{"name":"Swaziland","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[55.54033203125002,-4.693066406250011],[55.54296875,-4.785546875],[55.383398437500006,-4.609277343750009],[55.45576171875001,-4.558789062500011],[55.54033203125002,-4.693066406250011]]]},"properties":{"name":"Seychelles","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[42.358984375,37.10859375],[41.78857421875,36.59716796875],[41.41679687500002,36.5146484375],[41.295996093750006,36.383349609374996],[41.354101562500006,35.640429687499996],[41.19472656250002,34.768994140625],[40.98701171875001,34.429052734375],[38.773535156250006,33.372216796874994],[36.818359375,32.317285156249994],[36.3720703125,32.3869140625],[35.78730468750001,32.734912109374996],[35.91347656250002,32.94960937499999],[35.869140625,33.43173828125],[36.03447265625002,33.58505859375],[35.98613281250002,33.75263671875],[36.36503906250002,33.83935546875],[36.27783203125,33.92529296875],[36.5849609375,34.221240234374996],[36.50439453125,34.432373046875],[36.32988281250002,34.499609375],[36.383886718750006,34.65791015625],[35.97626953125001,34.629199218749996],[35.902441406250006,35.420703125],[35.76445312500002,35.571582031249996],[35.83964843750002,35.84921875],[35.892675781250006,35.916552734374996],[35.96757812500002,35.910058593749994],[36.12734375000002,35.831445312499994],[36.15361328125002,35.833886718749994],[36.34755859375002,36.003515625],[36.37539062500002,36.171240234375],[36.63671875,36.233984375],[36.64140625000002,36.263525390625],[36.5375,36.45742187499999],[36.54667968750002,36.50634765625],[36.596875,36.7013671875],[36.62841796875,36.777685546875],[36.65859375000002,36.802539062499996],[36.77656250000001,36.79267578125],[36.94179687500002,36.7583984375],[36.9853515625,36.702392578125],[37.06621093750002,36.652636718749996],[37.43632812500002,36.643310546875],[37.523535156250006,36.6783203125],[37.7203125,36.743701171874996],[37.90664062500002,36.79462890625],[38.19169921875002,36.9015625],[38.7666015625,36.693115234375],[38.90644531250001,36.694677734375],[39.1083984375,36.680566406249994],[39.35664062500001,36.681591796875],[39.50146484375,36.70224609375],[39.6865234375,36.738623046875],[40.01640625000002,36.826074218749994],[40.705664062500006,37.097705078124996],[41.886816406250006,37.156396484374994],[42.05986328125002,37.2060546875],[42.16787109375002,37.288623046874996],[42.202734375,37.29726562499999],[42.24755859375,37.2822265625],[42.2685546875,37.2765625],[42.31289062500002,37.22958984375],[42.358984375,37.10859375]]]},"properties":{"name":"Syria","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-72.3328125,21.85136718749999],[-72.14433593750002,21.79272460937503],[-72.33544921874994,21.758007812499983],[-72.3328125,21.85136718749999]]]},"properties":{"name":"Turks and Caicos Is.","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[23.980273437500017,19.496630859375003],[23.970800781250006,15.721533203124991],[23.10517578125001,15.702539062499994],[22.933886718750017,15.533105468749994],[22.93232421875001,15.162109375],[22.6708984375,14.722460937500003],[22.38154296875001,14.550488281249997],[22.53857421875,14.161865234375],[22.1064453125,13.7998046875],[22.228125,13.32958984375],[21.825292968750006,12.79052734375],[21.928125,12.678125],[22.352343750000017,12.660449218749989],[22.472460937500017,12.067773437499994],[22.580957031250023,11.990136718749994],[22.591113281250017,11.579882812499989],[22.922656250000017,11.344873046874994],[22.86005859375001,10.919677734375],[22.49384765625001,10.996240234374994],[21.771484375,10.642822265625],[21.682714843750006,10.289843749999989],[20.773242187500017,9.405664062499994],[20.342089843750017,9.127099609374994],[18.95625,8.938867187499994],[18.886035156250017,8.836035156249991],[19.108691406250017,8.656152343749994],[18.56416015625001,8.0458984375],[17.6494140625,7.98359375],[16.784765625,7.550976562499997],[16.545312500000023,7.865478515625],[16.37890625,7.683544921874997],[15.957617187500006,7.507568359375],[15.480078125,7.523779296874991],[15.5498046875,7.787890624999989],[15.1162109375,8.557324218749997],[14.332324218750017,9.20351562499999],[13.977246093750011,9.691552734374994],[14.243261718750006,9.979736328125],[15.654882812500006,10.0078125],[15.276074218750011,10.357373046874997],[15.132226562500023,10.648486328124989],[15.029882812500006,11.11367187499999],[15.08125,11.845507812499989],[14.847070312500023,12.502099609374994],[14.461718750000017,13.021777343749989],[14.244824218750011,13.07734375],[14.06396484375,13.07851562499999],[13.932324218750011,13.258496093749997],[13.606347656250023,13.70458984375],[13.505761718750023,14.134423828124994],[13.4482421875,14.380664062500003],[14.367968750000017,15.750146484374994],[15.474316406250011,16.908398437499997],[15.735058593750011,19.904052734375],[15.963183593750017,20.34619140625],[15.587109375000011,20.733300781249994],[15.607324218750023,20.954394531250003],[15.181835937500011,21.523388671874997],[14.97900390625,22.99619140624999],[15.984082031250011,23.445214843749994],[20.14765625000001,21.38925781249999],[23.980273437500017,19.496630859375003]]]},"properties":{"name":"Chad","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[0.900488281250006,10.993261718749991],[0.763378906250011,10.386669921874997],[1.330078125,9.996972656249994],[1.3857421875,9.361669921874991],[1.600195312500006,9.050048828125],[1.624707031250011,6.997314453125],[1.530957031250011,6.992431640625],[1.777929687500006,6.294628906249997],[1.62265625,6.216796875],[1.187207031250011,6.089404296874989],[0.736914062500006,6.452587890624997],[0.525585937500011,6.850927734374991],[0.634765625,7.353662109374994],[0.5,7.546875],[0.686328125000017,8.354882812499994],[0.37255859375,8.75927734375],[0.48876953125,8.851464843749994],[0.525683593750017,9.398486328124989],[0.2333984375,9.463525390624994],[0.342578125000017,9.604150390624994],[0.264550781250023,9.644726562499997],[0.380859375,10.291845703124991],[-0.08632812499999,10.673046875],[0.009423828125023,11.02099609375],[-0.068603515625,11.115625],[0.49267578125,10.954980468749994],[0.900488281250006,10.993261718749991]]]},"properties":{"name":"Togo","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[98.40908203125005,7.90205078125004],[98.2962890625,7.776074218750054],[98.32207031250007,8.166308593749974],[98.4349609375,8.085644531249969],[98.40908203125005,7.90205078125004]]],[[[100.070703125,9.58603515625002],[99.96240234375003,9.421630859375],[99.93955078125006,9.559960937500037],[100.070703125,9.58603515625002]]],[[[102.42675781250003,11.988720703125026],[102.30195312500004,11.98081054687502],[102.27744140625006,12.151855468750043],[102.42675781250003,11.988720703125026]]],[[[100.12246093750005,20.316650390625057],[100.11494140625004,20.257666015625034],[100.13974609375012,20.245410156250017],[100.31796875000006,20.38588867187505],[100.51953125000003,20.17792968750004],[100.39765625000004,19.756103515625],[100.51357421875005,19.553466796875],[101.21191406249997,19.54833984375003],[101.22080078125006,19.486621093750074],[101.19755859375007,19.327929687500074],[101.2863281250001,18.977148437500006],[101.04697265625012,18.441992187500063],[101.05058593750002,18.407031250000045],[101.1375,18.28686523437497],[101.14394531250005,18.14262695312499],[100.90849609375002,17.583886718750023],[100.95585937500002,17.541113281250006],[101.10517578125004,17.47954101562499],[101.16748046874997,17.49902343749997],[101.41367187500012,17.71875],[101.55507812500005,17.812353515625034],[101.56367187500004,17.82050781250001],[101.6875,17.889404296875],[101.77480468750005,18.03339843750004],[101.81865234375002,18.06464843750001],[101.87548828124997,18.046435546875017],[101.94746093750004,18.081494140624983],[102.03457031250005,18.169824218750023],[102.10146484375,18.210644531249983],[102.14824218750002,18.20385742187503],[102.35185546875002,18.045947265625017],[102.45878906250002,17.984619140625057],[102.55253906250007,17.96508789062497],[102.61679687500006,17.833349609375034],[102.66064453124997,17.817968750000034],[102.680078125,17.824121093750023],[103.05136718750006,18.02851562500001],[103.0912109375,18.13823242187499],[103.14853515625006,18.221728515625045],[103.19970703124997,18.259472656249983],[103.26318359374997,18.27846679687505],[103.27958984375002,18.304980468750017],[103.24892578125,18.338964843750034],[103.25175781250002,18.373486328124955],[103.2882812500001,18.408398437499955],[103.36699218750007,18.42333984374997],[103.48798828125004,18.418164062499983],[103.62968750000002,18.38256835937503],[103.79228515625002,18.316503906249977],[103.89882812500005,18.295312500000023],[103.949609375,18.31899414062505],[104.04873046875005,18.216699218749994],[104.19619140625005,17.988378906250006],[104.32265625,17.815820312500023],[104.428125,17.69897460937503],[104.7396484375,17.461669921875],[104.81601562500012,17.30029296874997],[104.75898437500004,17.0771484375],[104.7435546875,16.884375],[104.75058593750012,16.647558593750063],[104.81933593750003,16.46606445312503],[105.04716796875007,16.160253906249977],[105.14873046875007,16.09355468749999],[105.33066406250006,16.037890625000017],[105.40625,15.987451171875051],[105.39892578124997,15.829882812500017],[105.62207031250003,15.699951171875],[105.641015625,15.656542968750045],[105.6388671875001,15.585937500000057],[105.615625,15.488281250000057],[105.49042968750004,15.256591796875],[105.49042968750004,15.127587890625009],[105.5333984375001,15.041601562499991],[105.54667968750002,14.932470703124963],[105.52304687500012,14.843310546875003],[105.49736328125002,14.590673828124963],[105.47558593750003,14.530126953124977],[105.42265625000007,14.471630859375054],[105.34218750000005,14.416699218750054],[105.24365234375003,14.367871093750054],[105.1833007812501,14.346240234374989],[105.16914062500004,14.336083984374966],[105.12597656250003,14.280957031250011],[105.07412109375005,14.227441406250037],[104.77900390625004,14.427832031250006],[103.19941406250004,14.332617187499977],[102.90927734375006,14.136718750000028],[102.546875,13.585693359375043],[102.33632812500005,13.560302734375014],[102.49960937500012,12.669970703125003],[102.75566406250002,12.42626953125],[102.73662109375007,12.089794921875011],[102.93388671875002,11.706689453125037],[102.594140625,12.203027343749994],[102.54023437500004,12.109228515624977],[101.83574218750002,12.640380859375014],[100.89775390625007,12.653808593749986],[100.96269531250007,13.431982421874991],[100.60292968750005,13.568164062500017],[100.23564453125002,13.48447265625002],[99.99052734375007,13.243457031250031],[100.08994140625006,13.045654296874972],[99.96396484375006,12.690039062500006],[99.98906250000007,12.170800781249994],[99.16503906250003,10.319824218750028],[99.25390625000003,9.265234375000034],[99.83554687500012,9.288378906250031],[99.98955078125007,8.589208984374977],[100.129296875,8.428076171875006],[100.16347656250005,8.508398437500034],[100.27939453125006,8.268505859375011],[100.54521484375002,7.226904296874991],[100.43935546875005,7.280761718750043],[100.38037109375003,7.541503906250043],[100.28378906250006,7.551513671875043],[100.25664062500002,7.774902343749986],[100.16074218750012,7.599267578124994],[100.4235351562501,7.18784179687502],[101.01787109375002,6.860937500000034],[101.49794921875005,6.865283203125031],[102.10107421874997,6.242236328125031],[101.87363281250012,5.825292968749991],[101.67841796875004,5.778808593750028],[101.5560546875,5.907763671875003],[101.1139648437501,5.636767578125045],[100.98164062500004,5.771044921875045],[101.05351562500002,6.242578125],[100.87392578125,6.24541015624996],[100.75449218750012,6.460058593749991],[100.3454101562501,6.549902343750006],[100.26142578125004,6.682714843749963],[100.11914062499997,6.441992187500048],[99.69599609375004,6.87666015625004],[99.72031250000012,7.106201171875],[99.55302734375002,7.218798828125031],[99.59697265625002,7.355615234375009],[99.35859375000004,7.372216796875023],[99.26367187499997,7.619042968750037],[99.07763671874997,7.718066406250045],[99.05107421875002,7.887841796874994],[98.78867187500012,8.059814453125028],[98.703515625,8.256738281250009],[98.57919921875006,8.344287109374989],[98.42099609375006,8.17822265625],[98.30546875000007,8.226220703125009],[98.24179687500006,8.767871093750045],[98.70253906250005,10.19038085937504],[98.7572265625,10.660937499999974],[99.1901367187501,11.105273437499989],[99.61474609374997,11.781201171875026],[99.40507812500002,12.547900390625003],[99.12392578125,13.030761718750043],[99.13681640625006,13.716699218749994],[98.57001953125004,14.359912109375031],[98.20214843749997,14.97592773437502],[98.19101562500012,15.204101562499972],[98.55693359375007,15.367675781249986],[98.59238281250006,16.05068359375005],[98.81796875000012,16.180810546874994],[98.88828125000006,16.351904296875034],[98.83544921875003,16.417578125],[98.66074218750006,16.330419921875006],[98.4388671875,16.975683593750034],[97.7064453125,17.79711914062503],[97.63222656250005,18.290332031250074],[97.37392578125,18.51796875],[97.74589843750002,18.58818359374999],[97.816796875,19.459960937500057],[98.01503906250005,19.74951171874997],[98.37128906250004,19.68916015625004],[98.9166992187501,19.77290039062504],[99.07421875000003,20.09936523437503],[99.48593750000006,20.14985351562501],[99.45888671875005,20.363037109375],[99.72011718750005,20.32543945312497],[99.8903320312501,20.424414062499977],[99.9542968750001,20.415429687500023],[100.0036132812501,20.37958984375001],[100.12246093750005,20.316650390625057]]]]},"properties":{"name":"Thailand","childNum":4}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[70.66416015625,39.85546875],[70.55957031250003,39.790917968749994],[70.48925781250003,39.86303710937503],[70.48281250000005,39.88271484375005],[70.49775390625004,39.88242187499998],[70.56708984375004,39.86660156250005],[70.66416015625,39.85546875]]],[[[70.95800781250003,40.238867187500034],[70.59921875,39.974511718749994],[69.96679687499997,40.202246093750034],[69.46875,40.020751953125],[69.47099609375002,39.990625],[69.43193359375007,39.909765625000034],[69.36542968750004,39.94707031250002],[69.30722656250006,39.968554687500045],[69.27880859374997,39.91777343749999],[69.24472656250006,39.82709960937498],[69.29765625000007,39.52480468750005],[70.50117187500004,39.58735351562501],[70.79931640625003,39.39472656250001],[71.4703125,39.60366210937502],[71.50302734375006,39.58217773437502],[71.51738281250002,39.55385742187502],[71.50585937499997,39.51708984374997],[71.5033203125,39.47880859374999],[71.73222656250002,39.422998046874994],[71.77861328125007,39.27797851562502],[72.04277343750002,39.352148437500034],[72.08417968750004,39.310644531250034],[72.14736328125005,39.26074218749997],[72.22998046874997,39.20751953124997],[72.63994140625002,39.385986328125],[73.10927734375,39.36191406249998],[73.2349609375,39.37456054687499],[73.3361328125001,39.41235351562506],[73.38740234375004,39.442724609375034],[73.4704101562501,39.46059570312502],[73.63164062500007,39.44887695312502],[73.63632812500006,39.396679687499955],[73.60732421875,39.229199218749955],[73.8052734375,38.968652343749994],[73.69609375000007,38.85429687499996],[73.80166015625,38.60688476562501],[74.02558593750004,38.53984375000002],[74.27744140625,38.659765625000034],[74.81230468750002,38.46030273437498],[74.8942382812501,37.60141601562498],[75.11875,37.38569335937498],[74.89130859375004,37.231640624999955],[74.875390625,37.24199218750002],[74.83046875,37.28593750000002],[74.73056640625006,37.35703125],[74.659375,37.39448242187501],[74.34902343750005,37.41875],[74.25966796875005,37.41542968750002],[74.20351562500005,37.37246093750005],[74.16708984375,37.32944335937498],[73.74960937500006,37.23178710937498],[73.6535156250001,37.239355468750034],[73.62753906250006,37.261572265625006],[73.71728515625003,37.32944335937498],[73.7337890625,37.37578125000002],[73.72060546875,37.41875],[73.65712890625005,37.43046875],[73.6046875000001,37.44604492187503],[73.48134765625,37.4716796875],[73.38291015625006,37.462255859375034],[73.21113281250004,37.40849609375002],[72.89550781250003,37.26752929687498],[72.65742187500004,37.029052734375],[71.665625,36.696923828124994],[71.530859375,36.845117187499994],[71.43291015625007,37.12753906249998],[71.5822265625001,37.91010742187498],[71.55195312500004,37.93315429687496],[71.48779296874997,37.93188476562497],[71.38964843750003,37.90629882812502],[71.31992187500006,37.90185546875],[71.27851562500004,37.91840820312498],[71.33271484375004,38.170263671875034],[71.25585937499997,38.306982421875006],[70.7359375,38.42255859375001],[70.41777343750002,38.075439453125],[70.21464843750002,37.92441406250006],[70.19941406250004,37.88603515624996],[70.25498046875006,37.76538085937497],[70.25146484374997,37.66416015625006],[70.18867187500004,37.58247070312501],[70.11982421875004,37.54350585937499],[69.9849609375,37.566162109375],[69.8208984375,37.60957031250004],[69.62578125000002,37.59404296874999],[69.49208984375,37.55307617187498],[69.42011718750004,37.486718749999966],[69.39921875000007,37.39931640625002],[69.42968749999997,37.290869140625034],[69.414453125,37.20776367187497],[69.35380859375007,37.15004882812502],[69.3039062500001,37.11694335937503],[69.26484375000004,37.1083984375],[69.18017578125003,37.158300781250034],[68.96044921875003,37.32504882812498],[68.9118164062501,37.33393554687501],[68.88525390624997,37.32807617187498],[68.85537109375005,37.31684570312501],[68.83847656250006,37.30283203124998],[68.82373046874997,37.27070312500001],[68.78203125000002,37.25800781250001],[68.7232421875,37.26801757812501],[68.6691406250001,37.258398437500006],[68.3869140625001,37.1375],[68.29951171875004,37.08842773437502],[68.28476562500006,37.036328124999955],[68.2609375000001,37.01308593750002],[68.2121093750001,37.02153320312496],[68.0677734375,36.949804687500006],[67.95800781249997,36.972021484375006],[67.83447265624997,37.06420898437506],[67.75898437500004,37.172216796875034],[67.7980468750001,37.244970703125006],[67.81435546875005,37.48701171875004],[68.3502929687501,38.211035156250006],[68.08720703125002,38.47353515625002],[68.13251953125004,38.927636718749966],[67.69443359375006,38.99462890625003],[67.64833984375005,39.13105468750004],[67.3576171875001,39.216699218749994],[67.426171875,39.46557617187497],[67.71904296875007,39.62138671875002],[68.46328125,39.53671874999998],[68.63896484375007,39.8388671875],[68.86875,39.90747070312503],[68.80468750000003,40.05034179687499],[68.9720703125,40.08994140624998],[68.63066406250007,40.16708984374998],[69.27490234374997,40.19809570312498],[69.20625,40.566552734374994],[69.35722656250002,40.76738281249996],[69.71289062500003,40.65698242187503],[70.40195312500006,41.03510742187498],[70.75107421875006,40.721777343750006],[70.37158203125003,40.38413085937506],[70.653125,40.201171875],[70.95800781250003,40.238867187500034]]]]},"properties":{"name":"Tajikistan","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[66.52226562500007,37.34848632812506],[66.471875,37.3447265625],[65.7650390625,37.56914062499996],[65.55498046875002,37.25117187500004],[65.30361328125005,37.24677734375001],[65.08964843750007,37.237939453124994],[64.9515625,37.19355468750001],[64.81630859375005,37.13208007812503],[64.7824218750001,37.05927734375001],[64.60253906250003,36.554541015625034],[64.5658203125,36.427587890625034],[64.51103515625002,36.34067382812498],[64.184375,36.14892578125],[63.8625,36.012353515624994],[63.12998046875006,35.84619140624997],[63.169726562500074,35.678125],[63.05664062500003,35.44580078125003],[62.98027343750002,35.40917968750003],[62.85800781250006,35.34965820312499],[62.688085937500006,35.25532226562504],[62.3078125000001,35.17080078125005],[62.08964843750002,35.3796875],[61.62099609375005,35.43232421875004],[61.34472656249997,35.62949218750006],[61.26201171875002,35.61958007812498],[61.25214843750004,35.86762695312498],[61.15292968750006,35.97675781250001],[61.212011718750006,36.190527343750034],[61.11962890625003,36.64257812500003],[60.34130859375003,36.63764648437501],[60.06279296875002,36.962890625],[59.454980468749994,37.25283203125002],[59.30175781249997,37.51064453125005],[58.81542968750003,37.683496093749994],[58.261621093749994,37.665820312500045],[57.35371093750004,37.97333984374998],[57.1935546875001,38.216406250000034],[56.440625,38.249414062499994],[56.272070312500006,38.080419921875034],[55.38085937500003,38.051123046875034],[54.90009765625004,37.77792968750006],[54.6994140625001,37.47016601562498],[53.91416015625006,37.34355468750002],[53.86865234375003,38.949267578125045],[53.70458984375003,39.209570312500034],[53.33632812500005,39.34082031250006],[53.15664062499999,39.26499023437506],[53.23564453125002,39.608544921874966],[53.603125,39.546972656250034],[53.472265625,39.66879882812498],[53.48730468749997,39.909375],[52.9875,39.98759765625002],[53.03554687500005,39.7744140625],[52.80468749999997,40.054003906250045],[52.73369140625002,40.39873046875002],[52.943457031250006,41.03808593750006],[53.1452148437501,40.82495117187497],[53.61523437500003,40.818505859374994],[53.87001953125005,40.64868164062503],[54.37734375,40.693261718749966],[54.319433593750006,40.83457031249998],[54.68505859375003,40.873046875],[54.70371093750006,41.071142578125034],[54.094824218750006,41.51938476562506],[53.80468749999997,42.11762695312498],[53.16416015625006,42.09379882812502],[52.97001953125002,41.97622070312505],[52.81484375,41.711816406249994],[52.850390625000074,41.20029296875006],[52.4938476562501,41.780371093750034],[53.0558593750001,42.14775390624999],[54.120996093749994,42.335205078125],[54.85380859375002,41.965185546875006],[55.434375,41.296289062499994],[55.97744140625005,41.32221679687504],[57.01796875,41.26347656249996],[57.11884765625004,41.35029296874998],[56.96406250000004,41.856542968750006],[57.290625,42.123779296875],[57.814257812500074,42.18984375000005],[58.02890625,42.48764648437506],[58.474414062500074,42.29936523437496],[58.15156250000004,42.628076171874966],[58.477148437500006,42.66284179687503],[58.5890625000001,42.778466796874966],[59.35429687500002,42.32329101562496],[59.98515625000002,42.21171875],[59.94179687499999,41.97353515625002],[60.20078125000006,41.803125],[60.07558593750005,41.759667968749966],[60.089648437500074,41.39941406250003],[60.454980468749994,41.221630859374955],[61.2423828125001,41.18920898437503],[61.496972656249994,41.276074218749955],[61.90283203124997,41.09370117187501],[62.48320312500002,39.97563476562496],[63.76367187500003,39.16054687499999],[64.3099609375,38.97729492187497],[65.612890625,38.23857421875002],[65.97119140624997,38.244238281250006],[66.60625,37.98671875000005],[66.52558593750004,37.785742187500034],[66.51132812500006,37.59916992187496],[66.51064453125,37.45869140625004],[66.52226562500007,37.34848632812506]]]},"properties":{"name":"Turkmenistan","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[124.0363281250001,-9.341601562500031],[124.44443359375012,-9.190332031250023],[124.28232421875012,-9.427929687500026],[124.0363281250001,-9.341601562500031]]],[[[125.06816406250002,-9.511914062499997],[124.96015625000004,-9.213769531250009],[125.10048828125,-9.189843750000023],[125.14902343750012,-9.042578125000034],[124.93681640625007,-9.053417968750026],[124.92226562500005,-8.942480468749977],[125.17802734375002,-8.647851562499994],[125.38183593749997,-8.575390624999983],[126.61972656250006,-8.459472656249986],[126.96640625000012,-8.315722656250017],[127.29609375000004,-8.424511718749969],[126.91523437500004,-8.715234374999966],[125.40800781250002,-9.275781250000023],[125.06816406250002,-9.511914062499997]]],[[[125.64609375000006,-8.139941406250003],[125.5794921875,-8.311816406250017],[125.50712890625007,-8.275097656249997],[125.64609375000006,-8.139941406250003]]]]},"properties":{"name":"Timor-Leste","childNum":3}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-175.1619140625,-21.169335937500023],[-175.07817382812496,-21.129003906249977],[-175.15659179687495,-21.26367187499997],[-175.36235351562496,-21.106835937499994],[-175.1619140625,-21.169335937500023]]],[[[-173.953515625,-18.63935546875001],[-174.06914062500002,-18.640234375],[-173.96806640624993,-18.565332031250023],[-173.953515625,-18.63935546875001]]]]},"properties":{"name":"Tonga","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[-61.012109374999966,10.134326171874989],[-61.906103515625006,10.069140625000031],[-61.49931640624999,10.268554687499972],[-61.47827148437497,10.603369140624977],[-61.65117187499993,10.718066406249974],[-60.917626953124966,10.84023437499999],[-61.03374023437502,10.669873046875026],[-61.012109374999966,10.134326171874989]]]},"properties":{"name":"Trinidad and Tobago","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[10.957617187500063,33.72207031250005],[10.722070312500051,33.738916015624994],[10.745214843750063,33.88867187500006],[11.017871093749989,33.82333984374998],[10.957617187500063,33.72207031250005]]],[[[11.278027343750068,34.753808593749994],[11.123632812500063,34.68168945312496],[11.254882812500057,34.82031250000006],[11.278027343750068,34.753808593749994]]],[[[10.274609375000011,31.684960937499994],[10.114941406250068,31.46376953125005],[10.216406250000063,30.78320312500003],[10.05976562500004,30.58007812500003],[9.932519531250051,30.42534179687496],[9.895019531250028,30.387304687500034],[9.51875,30.229394531249994],[9.224023437500023,31.373681640624994],[9.160253906250006,31.621337890625],[9.044042968750034,32.072363281250034],[8.333398437500051,32.54360351562502],[8.1125,33.055322265624994],[7.877246093750017,33.172119140625],[7.534375,33.717919921874994],[7.513867187500068,34.080517578124955],[8.24560546875,34.73408203124998],[8.276855468750057,34.97949218749997],[8.312109375000063,35.084619140624994],[8.394238281250011,35.20385742187503],[8.318066406250011,35.654931640624994],[8.348730468750063,36.367968750000045],[8.207617187500006,36.518945312499994],[8.601269531250068,36.83393554687504],[8.576562500000023,36.93720703125001],[9.687988281250057,37.34038085937499],[9.838476562500063,37.30898437499999],[9.830273437499983,37.13535156250006],[9.875585937499977,37.25415039062503],[10.196386718750063,37.205859375000045],[10.293261718750074,36.781494140625],[10.412304687499983,36.73183593750002],[11.053906250000068,37.07250976562506],[11.12666015625004,36.874072265625045],[10.476562500000028,36.175146484375006],[10.590820312500028,35.88725585937499],[11.00429687500008,35.63383789062496],[11.120117187500057,35.24028320312499],[10.69091796875,34.67846679687503],[10.118359375000068,34.280078125000045],[10.049023437500068,34.056298828124994],[10.305273437500034,33.72827148437497],[10.713183593750017,33.68901367187496],[10.722753906250006,33.514404296875],[10.958007812500057,33.62631835937498],[11.257421875000034,33.30883789062506],[11.202636718749972,33.24921874999998],[11.50458984375004,33.181933593750045],[11.502441406250028,33.15556640624999],[11.467187500000051,32.96572265625005],[11.459179687500011,32.897363281249966],[11.453906250000017,32.64257812500003],[11.533789062500034,32.52495117187496],[11.535937500000017,32.47333984375001],[11.504980468750034,32.413671875000034],[11.358007812500006,32.34521484375003],[11.168261718750074,32.25673828125002],[11.005175781250074,32.17270507812506],[10.826367187500068,32.080664062500034],[10.771582031250006,32.02119140625001],[10.60888671875,31.929541015624977],[10.47578125000004,31.736035156249983],[10.274609375000011,31.684960937499994]]]]},"properties":{"name":"Tunisia","childNum":3}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[25.970019531250045,40.136328125],[25.6689453125,40.13588867187502],[25.918359375000023,40.23798828125004],[25.970019531250045,40.136328125]]],[[[43.43339843750002,41.155517578125],[43.43945312500003,41.10712890625001],[43.72265624999997,40.71953124999999],[43.56933593750003,40.48237304687498],[43.66621093750004,40.12636718750002],[44.28925781250004,40.040380859375006],[44.76826171875004,39.70351562500005],[44.81718750000002,39.65043945312496],[44.58710937500004,39.76855468750006],[44.3893554687501,39.422119140625],[44.02324218750002,39.37744140625006],[44.27167968750004,38.83603515625006],[44.2985351562501,38.38627929687499],[44.4499023437501,38.33422851562506],[44.21132812499999,37.908056640625006],[44.589941406250006,37.710351562499966],[44.574023437500074,37.435400390625006],[44.79414062500004,37.290380859375034],[44.76513671875003,37.142431640625006],[44.73095703124997,37.16528320312503],[44.66933593750005,37.17358398437503],[44.60595703124997,37.176025390625],[44.401953125,37.05849609375002],[44.325585937499994,37.0107421875],[44.28183593750006,36.97802734374997],[44.24570312500006,36.983300781249994],[44.20166015624997,37.05180664062502],[44.208398437499994,37.20263671875],[44.19179687499999,37.249853515625034],[44.15625,37.28295898437503],[44.11445312500004,37.30185546875006],[44.01318359375003,37.313525390625045],[43.83642578124997,37.223535156249994],[43.67578125000003,37.227246093749955],[43.09248046875004,37.36738281249998],[42.936621093750006,37.32475585937502],[42.77460937500004,37.371875],[42.74111328125005,37.361914062500034],[42.6354492187501,37.249267578125],[42.45585937500002,37.128710937500045],[42.358984375,37.10859375000004],[42.31289062499999,37.22958984374998],[42.26855468749997,37.276562499999955],[42.24755859375003,37.28222656250006],[42.20273437500006,37.29726562499999],[42.16787109375005,37.28862304687502],[42.059863281250074,37.2060546875],[41.886816406250006,37.156396484374994],[40.70566406250006,37.09770507812502],[40.4503906250001,37.00888671875006],[40.016406250000074,36.82607421875002],[39.68652343749997,36.73862304687506],[39.50146484374997,36.702246093750034],[39.35664062500004,36.68159179687498],[39.10839843749997,36.68056640625005],[38.90644531250004,36.69467773437498],[38.76660156249997,36.69311523437503],[38.19169921875002,36.90156250000004],[37.90664062500005,36.79462890625001],[37.7203125,36.74370117187502],[37.52353515625006,36.678320312500034],[37.436328125000074,36.643310546875],[37.327050781249994,36.64658203125006],[37.18740234375005,36.655908203124994],[37.066210937500074,36.652636718750045],[36.98535156250003,36.70239257812506],[36.94179687499999,36.758398437500006],[36.77656250000004,36.79267578124998],[36.65859375000005,36.80253906250002],[36.62841796875003,36.777685546875034],[36.596875,36.70136718750001],[36.546679687500074,36.50634765625],[36.5375,36.457421874999966],[36.63671874999997,36.233984375],[36.37539062499999,36.171240234375034],[36.347558593749994,36.003515625000034],[36.20195312500002,35.93754882812502],[36.15361328125002,35.83388671875005],[36.12734375,35.831445312499994],[35.967578125000074,35.91005859375002],[35.89267578125006,35.91655273437502],[35.81093750000005,36.30986328125002],[36.18847656250003,36.65898437499999],[36.048925781250006,36.91059570312501],[35.393164062500006,36.57519531249997],[34.70361328125003,36.81679687499999],[33.694726562499994,36.18198242187498],[32.794824218749994,36.03588867187497],[32.37773437500002,36.18364257812496],[32.02197265625003,36.53530273437502],[31.35253906249997,36.80107421874999],[30.64404296874997,36.86567382812501],[30.446093750000074,36.269873046875034],[29.6890625,36.15668945312498],[29.22363281249997,36.32446289062497],[28.96962890625008,36.71533203125003],[28.303710937500057,36.81196289062498],[28.01943359375005,36.63447265624998],[28.083984375000057,36.75146484375],[27.453906250000017,36.712158203125],[28.00537109375003,36.83198242187498],[28.242382812500068,37.029052734375],[27.262988281250045,36.97656250000003],[27.30019531250005,37.12685546875002],[27.53505859375005,37.16386718750002],[27.06796875,37.65791015625004],[27.224414062500074,37.725439453125006],[27.23242187500003,37.978662109374994],[26.29072265625001,38.27719726562498],[26.44130859375005,38.64121093749998],[26.67421875000008,38.33574218750002],[27.14423828125001,38.45195312499996],[26.906835937500034,38.48173828124999],[26.763671875,38.709619140624966],[27.013671875000057,38.88686523437502],[26.814941406250057,38.96098632812502],[26.853613281250034,39.115625],[26.68183593750004,39.292236328125],[26.89921874999999,39.549658203125034],[26.113085937500074,39.46738281249998],[26.101367187500074,39.56894531249998],[26.18134765625004,39.99008789062498],[26.738085937500045,40.40024414062506],[27.28457031250008,40.45561523437496],[27.4755859375,40.319921875000034],[27.72802734375,40.32880859374998],[27.84853515625005,40.38173828125002],[27.73183593750008,40.48149414062499],[27.87490234375008,40.512939453125],[27.989550781250074,40.48945312500001],[27.96259765625001,40.369873046875],[29.00712890624999,40.389746093750034],[28.787890625000017,40.534033203125034],[28.95800781250003,40.63056640624998],[29.849218750000063,40.760107421875006],[29.113867187499977,40.93784179687506],[29.14814453125004,41.221044921875034],[31.25488281249997,41.10761718750001],[31.45800781249997,41.32001953125004],[32.306445312500074,41.72958984374998],[33.38134765625003,42.01757812500003],[34.75048828124997,41.95683593749999],[35.006445312500006,42.06328125000002],[35.15488281250006,42.02753906250001],[35.12207031250003,41.89111328125003],[35.297753906249994,41.72851562500003],[35.558007812499994,41.63403320312506],[36.05175781249997,41.68256835937498],[36.40537109375006,41.27460937500001],[36.77773437499999,41.36347656250001],[37.066210937500074,41.184423828125034],[38.38105468750004,40.92451171875001],[39.426367187500006,41.10644531250003],[40.26523437500006,40.96132812500005],[41.08359375000006,41.26118164062504],[41.41435546875002,41.42363281249999],[41.510058593750074,41.51748046875002],[41.70175781250006,41.471582031249994],[41.77939453125006,41.44052734374998],[41.823535156250074,41.432373046875],[41.92578125000003,41.49565429687502],[42.46640625,41.43984375000002],[42.56738281249997,41.55927734375001],[42.590429687500006,41.57070312500002],[42.60683593750005,41.57880859374998],[42.682421875000074,41.58574218749999],[42.75410156250004,41.57890625000002],[42.787890625000074,41.56372070312503],[42.82167968750005,41.49238281249998],[42.90673828125003,41.46684570312502],[43.05712890625003,41.35283203124996],[43.149023437500006,41.30712890624997],[43.171289062499994,41.28793945312498],[43.14101562499999,41.26484374999998],[43.15283203124997,41.23642578125006],[43.20546875000005,41.19916992187501],[43.43339843750002,41.155517578125]]],[[[27.47480468750001,41.946875],[28.014453125000017,41.96904296874999],[28.197851562500063,41.55449218750002],[29.057226562500006,41.22973632812503],[28.95625,41.00820312499999],[28.172167968750074,41.08071289062502],[27.49941406250005,40.97314453124997],[27.258007812499983,40.687353515625006],[26.772070312500034,40.498046875],[26.202734375000034,40.07539062500004],[26.25380859375005,40.31469726562503],[26.792089843750034,40.626611328124994],[26.10546875000003,40.61132812499997],[26.03896484375008,40.726757812499955],[26.331054687500057,40.954492187499994],[26.330664062499977,41.23876953125],[26.62490234375008,41.401757812499994],[26.581347656250074,41.60126953125004],[26.320898437500034,41.716552734375],[26.3603515625,41.80156249999999],[26.51142578125004,41.82636718749998],[26.549707031250023,41.896728515625],[26.5796875,41.947949218749955],[26.615332031250063,41.964892578125045],[26.884863281250006,41.99184570312502],[26.96875,42.02685546875006],[27.01171875,42.05864257812496],[27.193359375000057,42.07709960937498],[27.24433593750004,42.09326171875],[27.294921875000057,42.079541015624955],[27.47480468750001,41.946875]]]]},"properties":{"name":"Turkey","childNum":3}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[39.71132812499999,-7.977441406250023],[39.602929687499994,-7.936132812499949],[39.907128906249994,-7.649218750000031],[39.71132812499999,-7.977441406250023]]],[[[39.49648437499999,-6.174609375],[39.573046875000074,-6.387402343750011],[39.48095703124997,-6.45371093750002],[39.18232421875004,-6.172558593750026],[39.30898437499999,-5.721972656249974],[39.49648437499999,-6.174609375]]],[[[39.86503906250002,-4.906152343750037],[39.74931640625002,-5.443847656249986],[39.646777343750074,-5.368554687500009],[39.6734375,-4.927050781250031],[39.86503906250002,-4.906152343750037]]],[[[33.90322265625005,-1.002050781250034],[37.643847656250074,-3.045410156250028],[37.608203125000074,-3.497070312500028],[39.221777343750006,-4.692382812500014],[38.80468750000003,-6.070117187500031],[38.87402343750003,-6.33125],[39.5460937500001,-7.024023437500034],[39.288476562499994,-7.517871093750003],[39.28701171875005,-7.787695312500006],[39.4284179687501,-7.81279296874996],[39.441015625,-8.011523437499946],[39.304003906250074,-8.44384765625],[39.451269531250006,-8.94296875],[39.64130859375004,-9.19248046875002],[39.72519531250006,-10.000488281249972],[40.46357421875004,-10.464355468749972],[39.98867187499999,-10.820800781250014],[39.81708984375004,-10.912402343750031],[38.9875,-11.167285156250003],[38.49179687500006,-11.413281250000026],[37.92021484375002,-11.294726562500031],[37.72480468750004,-11.58066406250002],[37.54169921875004,-11.675097656249974],[37.37285156250002,-11.710449218749986],[36.97890625000005,-11.566992187499977],[36.30566406250003,-11.706347656249946],[36.191308593749994,-11.670703124999974],[36.17548828125004,-11.60927734374998],[36.08222656250004,-11.537304687499969],[35.91132812500004,-11.45468750000002],[35.785449218750074,-11.452929687500017],[35.63095703125006,-11.582031250000028],[35.564355468749994,-11.602343749999989],[35.418261718750074,-11.583203125],[35.18261718750003,-11.574804687499977],[34.95947265625003,-11.578125],[34.93701171874997,-11.463476562500034],[34.890625,-11.3935546875],[34.77382812500005,-11.341699218750009],[34.60791015624997,-11.08046875],[34.66708984375006,-10.792480468750028],[34.56992187500006,-10.241113281249966],[34.32089843750006,-9.731542968749977],[33.99560546875003,-9.495410156250003],[33.88886718750004,-9.670117187499983],[32.91992187500003,-9.407421875000026],[32.75664062500002,-9.322265625],[31.94257812500004,-9.05400390624996],[31.91865234375004,-8.942187500000017],[31.886132812499994,-8.921972656249977],[31.81806640625004,-8.902246093749952],[31.673632812500017,-8.908789062499963],[31.55625,-8.80546875],[31.44921874999997,-8.65390625],[31.35058593750003,-8.607031250000034],[31.07636718750004,-8.611914062499963],[30.968359375000063,-8.550976562499983],[30.89199218750005,-8.473730468749963],[30.830664062500063,-8.385546875000031],[30.720898437500097,-8.104394531250037],[30.40673828125003,-7.460644531249983],[30.313183593750097,-7.203710937499949],[30.212695312500017,-7.037890625000017],[30.10625,-6.915039062500028],[29.961816406249994,-6.803125],[29.798144531250017,-6.691894531249957],[29.70966796875004,-6.61689453125004],[29.590625,-6.394433593750023],[29.540820312500017,-6.313867187500037],[29.50625,-6.172070312500011],[29.480078125,-6.025],[29.490820312500063,-5.96542968750002],[29.59638671875004,-5.775976562499963],[29.60703125,-5.722656250000028],[29.59414062500005,-5.650781250000037],[29.542382812499994,-5.499804687500017],[29.34277343749997,-4.983105468749997],[29.32343750000004,-4.898828124999966],[29.32568359374997,-4.835644531249969],[29.404199218749994,-4.49667968750002],[29.40322265625005,-4.449316406249963],[29.71777343750003,-4.45585937499996],[29.94726562499997,-4.307324218749983],[30.4,-3.65390625],[30.790234375000097,-3.274609375000011],[30.811132812500006,-3.116406250000011],[30.78027343750003,-2.984863281249957],[30.70947265624997,-2.977246093749997],[30.604296875000074,-2.935253906249969],[30.515039062499994,-2.917578125],[30.45556640625003,-2.893164062500006],[30.433496093749994,-2.874511718750028],[30.424023437500097,-2.82402343749996],[30.473339843750097,-2.6943359375],[30.42421875000005,-2.641601562500014],[30.441992187500006,-2.613476562499969],[30.53369140624997,-2.426269531250014],[30.55361328125005,-2.400097656250011],[30.593359375000063,-2.39677734374996],[30.65664062500005,-2.373828124999989],[30.71484375000003,-2.363476562500011],[30.7625,-2.371679687499991],[30.828710937500006,-2.338476562499977],[30.85498046874997,-2.265429687500017],[30.8765625,-2.143359375000017],[30.864648437499994,-2.044042968749949],[30.819140625000017,-1.967480468749983],[30.812597656250006,-1.56308593750002],[30.76220703124997,-1.458691406249983],[30.710742187500074,-1.396777343749974],[30.631933593750006,-1.36748046874996],[30.508105468750074,-1.208203125000026],[30.47021484374997,-1.13115234374996],[30.47705078124997,-1.0830078125],[30.509960937500097,-1.067285156249994],[30.51992187499999,-1.0625],[30.67275390625005,-1.051367187499949],[30.741992187500017,-1.007519531249997],[30.809179687500063,-0.994921875],[30.82363281250005,-0.999023437499943],[30.84472656250003,-1.002050781250034],[32.371875,-1.002050781250034],[33.90322265625005,-1.002050781250034]]]]},"properties":{"name":"Tanzania","childNum":4}},{"geometry":{"type":"Polygon","coordinates":[[[30.50996093750001,-1.067285156250009],[30.46992187500001,-1.066015625],[30.41230468750001,-1.063085937500006],[30.360253906250023,-1.074609375],[29.930078125000023,-1.469921875000011],[29.82539062500001,-1.335546875],[29.576953125000017,-1.387890625000011],[29.717675781250023,0.098339843749997],[29.934472656250023,0.4990234375],[29.94287109375,0.819238281249994],[31.252734375000017,2.044580078124994],[31.176367187500006,2.270068359374989],[30.728613281250006,2.455371093749989],[30.8466796875,2.847021484374991],[30.754003906250006,3.041796874999989],[30.90644531250001,3.408935546875],[30.83857421875001,3.49072265625],[31.15234375,3.785595703124997],[31.547167968750017,3.677587890624991],[31.79804687500001,3.802636718749994],[32.13593750000001,3.519726562499997],[32.33574218750002,3.706201171874994],[32.99726562500001,3.880175781249989],[33.489355468750006,3.755078125],[33.568457031250006,3.81171875],[33.74160156250002,3.985253906249994],[33.97607421875,4.22021484375],[34.13203125000001,3.88916015625],[34.18574218750001,3.869775390624994],[34.1650390625,3.81298828125],[34.26708984375,3.733154296875],[34.39287109375002,3.691503906249991],[34.43769531250001,3.650585937499997],[34.44179687500002,3.60625],[34.3994140625,3.412695312499991],[34.4072265625,3.357519531249991],[34.447851562500006,3.163476562499994],[34.90576171875,2.4796875],[34.88300781250001,2.417919921874997],[34.96406250000001,2.062402343749994],[34.9775390625,1.861914062499991],[34.97646484375002,1.719628906249994],[34.79863281250002,1.24453125],[34.48173828125002,1.042138671874994],[34.41083984375001,0.867285156249991],[34.16093750000002,0.605175781249997],[33.94316406250002,0.173779296874997],[33.90322265625002,-1.002050781250006],[32.371875,-1.002050781250006],[30.8447265625,-1.002050781250006],[30.823632812500023,-0.9990234375],[30.809179687500006,-0.994921875],[30.741992187500017,-1.007519531250011],[30.672753906250023,-1.051367187500006],[30.598730468750006,-1.069726562500009],[30.519921875000023,-1.0625],[30.50996093750001,-1.067285156250009]]]},"properties":{"name":"Uganda","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[32.01220703124997,46.20390624999999],[32.15009765625004,46.1546875],[31.56386718750005,46.25776367187504],[31.50878906250003,46.373144531250006],[32.01220703124997,46.20390624999999]]],[[[38.21435546875003,47.091455078124966],[37.54335937499999,47.07456054687498],[36.794824218749994,46.71440429687499],[36.55878906250004,46.76269531250006],[35.82714843749997,46.62431640625002],[35.01455078125005,46.10600585937502],[35.280175781249994,46.27949218750001],[35.23037109375005,46.440625],[34.84960937500003,46.189892578124955],[35.02285156250005,45.70097656250002],[35.45751953124997,45.316308593749994],[36.170507812500006,45.453076171874955],[36.575,45.3935546875],[36.39335937500002,45.06538085937501],[35.87011718750003,45.005322265624955],[35.472558593749994,45.098486328125006],[35.08769531250002,44.802636718749966],[34.46992187500004,44.7216796875],[33.909960937500074,44.387597656249966],[33.45068359374997,44.553662109374955],[33.55517578125003,45.09765625000003],[32.5080078125001,45.40380859375006],[33.664843750000074,45.94707031249996],[33.59414062500005,46.09624023437499],[33.42988281250004,46.05761718750003],[33.20224609375006,46.17573242187501],[32.47675781250004,46.08369140625001],[31.83125,46.28168945312501],[32.00849609375004,46.42998046875002],[31.554882812500097,46.554296875000034],[32.36132812499997,46.474951171875034],[32.578027343749994,46.615625],[32.04433593750005,46.642480468749966],[31.75917968750005,47.21284179687501],[31.872851562500017,46.649755859375034],[31.532128906249994,46.66474609374998],[31.56337890625005,46.77729492187501],[31.402929687500063,46.62880859375002],[30.796289062499994,46.55200195312503],[30.219042968750074,45.866748046875045],[29.62841796875003,45.722460937500045],[29.705859375000074,45.25991210937505],[29.567675781250074,45.37080078124998],[29.40371093750005,45.419677734375],[29.22353515625005,45.402929687500034],[28.894335937500017,45.28994140625002],[28.78173828125,45.30986328125002],[28.76660156250003,45.28623046874998],[28.78828125000001,45.240966796875],[28.451269531250006,45.292187499999955],[28.317675781250045,45.347119140624955],[28.2125,45.45043945312506],[28.26484375000004,45.48388671875003],[28.310351562500074,45.49858398437499],[28.499023437500057,45.517724609374994],[28.513769531250034,45.57241210937502],[28.49160156250005,45.66577148437503],[28.562304687500074,45.73579101562501],[28.667578125,45.79384765625002],[28.729296875000074,45.852001953124955],[28.73876953125003,45.937158203124994],[28.84951171875005,45.97866210937502],[28.94775390624997,46.049951171874966],[28.971875,46.12763671874998],[29.00625,46.17646484374998],[28.94375,46.28842773437506],[28.930566406250023,46.36225585937501],[28.92744140625001,46.42412109374999],[28.958398437500023,46.45849609374997],[29.146289062500017,46.52690429687496],[29.186230468750068,46.52397460937499],[29.20078125,46.504980468750034],[29.20458984374997,46.37934570312501],[29.223828125000097,46.37695312499997],[29.458789062500017,46.453759765624994],[29.83789062499997,46.35053710937501],[29.878027343750063,46.360205078125034],[30.07568359375003,46.377832031249966],[30.131054687500097,46.42309570312506],[29.92431640624997,46.53886718750002],[29.934765625000097,46.625],[29.942480468750063,46.72377929687502],[29.918066406250063,46.78242187499998],[29.877832031249994,46.828906250000045],[29.57197265625004,46.96401367187502],[29.455664062500006,47.292626953124994],[29.134863281250006,47.48969726562501],[29.125390625000023,47.96455078125001],[28.42304687500001,48.146875],[28.34052734375001,48.144433593749994],[27.54921875000008,48.47773437500004],[27.22851562500003,48.37143554687506],[26.90058593750001,48.37192382812506],[26.847070312500023,48.387158203124955],[26.640429687500045,48.29414062500001],[26.618945312500017,48.25986328125006],[26.4423828125,48.22998046875],[26.162695312500063,47.992529296875034],[25.90869140625,47.96757812500002],[25.689257812500045,47.93247070312506],[25.46425781250005,47.910791015624994],[24.979101562500063,47.72412109374997],[24.578906250000074,47.93105468750005],[23.628710937500017,47.995849609375],[23.40820312500003,47.98999023437506],[23.20263671875,48.084521484375045],[23.13945312499999,48.08740234375],[22.87666015625001,47.94726562500006],[22.769140625000063,48.109619140625],[22.582421875000023,48.134033203125],[22.253710937500017,48.407373046874994],[22.131835937500057,48.40532226562502],[22.142871093750017,48.568505859374966],[22.295214843750045,48.68583984374999],[22.389453125000045,48.87348632812501],[22.52412109375004,49.03139648437502],[22.538671875,49.07270507812501],[22.847070312500023,49.08125],[22.705664062500006,49.17119140624999],[22.6494140625,49.53901367187498],[22.706152343750006,49.60620117187497],[23.03632812500004,49.899072265624966],[23.711718750000045,50.377343749999966],[23.97265625,50.410058593749966],[24.089941406250006,50.53046874999998],[24.0947265625,50.617041015625034],[23.9970703125,50.809375],[24.095800781250063,50.87275390625001],[23.664453125000023,51.31005859375],[23.61376953125,51.525390625],[23.706835937500045,51.64130859374998],[23.79169921875001,51.63710937500002],[23.864257812500057,51.62397460937501],[23.951171875,51.58505859374998],[23.978320312500017,51.59130859375003],[24.12685546875008,51.664648437500034],[24.280078125000017,51.77470703124999],[24.361914062500006,51.86752929687498],[25.785742187500006,51.923828125],[26.77343750000003,51.77070312499998],[26.952832031249983,51.754003906250034],[27.074121093750023,51.760839843750006],[27.14199218750008,51.75205078124998],[27.29628906250008,51.59741210937503],[27.689746093750017,51.572412109374994],[27.7,51.47797851562501],[27.85859375000004,51.59238281250006],[28.532031250000017,51.56245117187501],[28.59902343750008,51.54262695312505],[28.647753906250074,51.45654296875],[28.690234375000017,51.43886718750005],[28.73125,51.43339843749999],[28.84951171875005,51.540185546874994],[28.927539062500045,51.56215820312502],[28.97773437500004,51.57177734375003],[29.01308593750005,51.59892578124996],[29.06074218750001,51.625439453124955],[29.102050781250057,51.627539062500034],[29.346484375000017,51.38256835937503],[30.160742187500006,51.477880859375006],[30.449511718750017,51.274316406249994],[30.63251953125004,51.35541992187501],[30.61171875000005,51.406347656250006],[30.602343750000017,51.47124023437499],[30.56074218750004,51.531494140625],[30.533007812500017,51.596337890624966],[30.583886718749994,51.68896484375003],[30.667285156250017,51.81411132812502],[30.755273437499994,51.89516601562502],[30.84570312500003,51.95307617187501],[30.980664062500097,52.04619140624996],[31.217968750000097,52.05024414062498],[31.345996093750074,52.10537109375002],[31.57373046875003,52.108105468749955],[31.763378906250097,52.10107421875003],[32.12226562500004,52.05058593749996],[32.435449218749994,52.307226562500034],[33.735253906249994,52.344775390625045],[34.397851562499994,51.780419921874994],[34.12109375000003,51.67915039062498],[34.21386718750003,51.25537109375006],[35.0640625,51.203417968750045],[35.31191406250005,51.043896484374955],[35.59111328125002,50.36875],[36.1164062500001,50.408544921875006],[36.619433593750074,50.209228515625],[37.42285156249997,50.411474609375006],[38.046875,49.92001953125006],[38.258593750000074,50.05234375],[38.91835937499999,49.82470703125],[39.17480468750003,49.85595703124997],[39.780566406250074,49.57202148437503],[40.080664062500006,49.576855468749955],[40.10878906250005,49.251562500000034],[39.68652343749997,49.007910156250034],[40.00361328125004,48.82207031250002],[39.792871093749994,48.807714843750034],[39.6447265625001,48.591210937499966],[39.8356445312501,48.54277343749996],[39.95791015625005,48.268896484375034],[39.77871093750005,47.88754882812506],[38.90029296875005,47.85512695312502],[38.36884765625004,47.609960937500006],[38.21435546875003,47.091455078124966]]]]},"properties":{"name":"Ukraine","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[-57.81059570312499,-30.85859375000001],[-57.872509765625,-30.59101562500001],[-57.831201171874994,-30.495214843750006],[-57.71269531249999,-30.38447265625001],[-57.65087890625,-30.295019531250006],[-57.645751953125,-30.226953125],[-57.60888671875,-30.187792968750003],[-57.55229492187499,-30.26123046875],[-57.21445312499999,-30.28339843750001],[-57.186914062499994,-30.26484375000001],[-57.120507812499994,-30.14443359375001],[-56.83271484375,-30.107226562500003],[-56.4072265625,-30.44746093750001],[-55.998974609375,-30.837207031250003],[-56.018457031249994,-30.99189453125001],[-56.00468749999999,-31.079199218750006],[-55.873681640624994,-31.069628906250003],[-55.6271484375,-30.85810546875001],[-55.60302734375,-30.85078125000001],[-55.55732421875,-30.8759765625],[-55.17353515625,-31.279589843750003],[-55.09116210937499,-31.31396484375],[-55.036035156249994,-31.27900390625001],[-54.587646484375,-31.48515625],[-54.22055664062499,-31.85517578125001],[-53.76171875,-32.05683593750001],[-53.601708984374994,-32.40302734375001],[-53.12558593749999,-32.73671875],[-53.2140625,-32.82109375],[-53.31010742187499,-32.92705078125],[-53.39521484375,-33.010351562500006],[-53.482861328125,-33.06855468750001],[-53.511865234374994,-33.10869140625],[-53.53134765624999,-33.1708984375],[-53.53134765624999,-33.65546875000001],[-53.37060546875,-33.7421875],[-53.419580078124994,-33.77919921875001],[-53.47246093749999,-33.84931640625001],[-53.53452148437499,-34.01748046875001],[-53.742919921875,-34.24951171875],[-53.785302734374994,-34.38037109375],[-54.16855468749999,-34.670703125],[-54.902294921875,-34.93281250000001],[-55.67314453124999,-34.77568359375],[-56.249951171875,-34.90126953125001],[-57.17070312499999,-34.45234375000001],[-57.8291015625,-34.47734375],[-58.40019531249999,-33.91240234375],[-58.363525390625,-33.18232421875001],[-58.08232421874999,-32.893652343750006],[-58.12958984375,-32.75722656250001],[-58.16220703124999,-32.566503906250006],[-58.201171875,-32.4716796875],[-58.123046875,-32.321875],[-58.11972656249999,-32.24892578125001],[-58.164794921875,-32.18486328125],[-58.177001953125,-32.11904296875001],[-58.15634765624999,-32.0515625],[-58.160400390625,-31.98652343750001],[-58.18901367187499,-31.92421875],[-58.16748046875,-31.87265625],[-58.04233398437499,-31.76923828125001],[-58.006982421874994,-31.68496093750001],[-58.053857421874994,-31.494921875],[-58.0333984375,-31.416601562500006],[-57.89335937499999,-31.1953125],[-57.868408203125,-31.10439453125001],[-57.88632812499999,-30.93740234375001],[-57.81059570312499,-30.85859375000001]]]},"properties":{"name":"Uruguay","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-155.58134765624996,19.012011718750017],[-155.88129882812495,19.07050781250001],[-156.04868164062498,19.749951171874983],[-155.82031249999997,20.01416015624997],[-155.83164062499998,20.27583007812501],[-155.198779296875,19.99438476562503],[-154.80419921875,19.524462890625045],[-155.58134765624996,19.012011718750017]]],[[[-156.84960937499997,20.772656249999955],[-156.97338867187497,20.757519531249983],[-157.0505859375,20.912451171875034],[-156.88056640624995,20.904833984375074],[-156.84960937499997,20.772656249999955]]],[[[-156.48681640624994,20.93256835937504],[-156.27753906250004,20.951269531250034],[-155.98984374999998,20.75712890624999],[-156.40878906249998,20.60517578125004],[-156.480078125,20.80122070312501],[-156.69775390625003,20.949072265625034],[-156.58540039062495,21.034326171874994],[-156.48681640624994,20.93256835937504]]],[[[-157.21362304687497,21.215380859375017],[-156.71215820312506,21.155078125000074],[-156.85986328125,21.05634765625004],[-157.29033203124996,21.112597656250017],[-157.21362304687497,21.215380859375017]]],[[[-157.79936523437502,21.456640625000034],[-157.63540039062502,21.30761718749997],[-158.11035156249994,21.318603515625],[-158.27314453125,21.585253906250045],[-157.9625,21.701367187499983],[-157.79936523437502,21.456640625000034]]],[[[-159.37275390625,21.93237304687497],[-159.60883789062495,21.909521484375034],[-159.78916015625003,22.041796875000074],[-159.57919921874998,22.22314453124997],[-159.35205078124997,22.219580078125034],[-159.37275390625,21.93237304687497]]],[[[-81.04418945312503,24.716796875000057],[-81.137353515625,24.710498046875017],[-80.93046875,24.75947265625004],[-81.04418945312503,24.716796875000057]]],[[[-80.3818359375,25.142285156249955],[-80.58056640624997,24.954248046875023],[-80.25708007812497,25.34760742187504],[-80.3818359375,25.142285156249955]]],[[[-97.17070312499996,26.159375],[-97.40209960937494,26.820507812499983],[-97.38598632812494,27.19648437500004],[-97.17070312499996,26.159375]]],[[[-80.18676757812497,27.278417968750034],[-80.17050781250003,27.20478515625004],[-80.43691406249994,27.850537109374955],[-80.18676757812497,27.278417968750034]]],[[[-91.793701171875,29.50073242187497],[-92.00664062499996,29.61030273437501],[-91.875244140625,29.640966796875034],[-91.793701171875,29.50073242187497]]],[[[-84.90791015624998,29.642626953125017],[-85.11674804687499,29.63281249999997],[-84.737158203125,29.732421875],[-84.90791015624998,29.642626953125017]]],[[[-89.22397460937498,30.084082031249977],[-89.34199218749995,30.062841796875006],[-89.18466796874995,30.168652343749983],[-89.22397460937498,30.084082031249977]]],[[[-118.34794921875002,33.3857421875],[-118.29746093750003,33.312109375],[-118.44628906249997,33.317089843749955],[-118.56943359375002,33.46416015624999],[-118.34794921875002,33.3857421875]]],[[[-120.04355468749995,33.918847656249994],[-120.25190429687494,34.01386718749998],[-120.07182617187493,34.026513671874966],[-120.04355468749995,33.918847656249994]]],[[[-119.88237304687497,34.07968749999998],[-119.54926757812497,34.02817382812506],[-119.80957031249997,33.9677734375],[-119.88237304687497,34.07968749999998]]],[[[-75.54414062499995,35.240087890625034],[-75.69008789062502,35.221582031249994],[-75.53637695312497,35.27861328124999],[-75.50351562500003,35.769140625],[-75.46474609374994,35.448632812499966],[-75.54414062499995,35.240087890625034]]],[[[-74.13320312500002,39.680761718750034],[-74.25048828125,39.529394531250006],[-74.10673828124996,39.74643554687498],[-74.13320312500002,39.680761718750034]]],[[[-72.50976562500003,40.98603515625001],[-72.58085937499996,40.92133789062498],[-71.90322265625,41.06069335937505],[-73.19428710937495,40.654199218749994],[-74.01489257812497,40.581201171874966],[-73.87924804687498,40.79165039062502],[-73.573828125,40.91962890624998],[-72.62509765624998,40.99184570312505],[-72.27412109374998,41.15302734375001],[-72.50976562500003,40.98603515625001]]],[[[-69.9779296875,41.26557617187504],[-70.23305664062502,41.28632812500001],[-70.04121093750001,41.3974609375],[-69.9779296875,41.26557617187504]]],[[[-70.50991210937502,41.376318359375034],[-70.82919921874995,41.35898437500006],[-70.61601562499996,41.45722656250001],[-70.50991210937502,41.376318359375034]]],[[[-71.24140625000001,41.49194335937497],[-71.34624023437496,41.469384765624994],[-71.23203124999995,41.654296875],[-71.24140625000001,41.49194335937497]]],[[[-68.18725585937497,44.33247070312501],[-68.41171875000003,44.294335937499966],[-68.29941406249998,44.456494140624955],[-68.18725585937497,44.33247070312501]]],[[[-122.394140625,47.39526367187503],[-122.50991210937497,47.358007812500006],[-122.486474609375,47.48876953125],[-122.394140625,47.39526367187503]]],[[[-122.57275390624999,48.15664062499999],[-122.38315429687499,47.923193359375034],[-122.74150390624999,48.22529296875004],[-122.62861328125,48.38422851562498],[-122.54243164062503,48.29399414062499],[-122.69702148437499,48.228662109374994],[-122.57275390624999,48.15664062499999]]],[[[-94.80346679687497,49.0029296875],[-94.71279296874997,48.863427734374994],[-94.62089843749999,48.74262695312501],[-93.85161132812496,48.607275390625034],[-93.70771484374995,48.52543945312499],[-93.37788085937498,48.61655273437498],[-93.25795898437497,48.62885742187501],[-92.83671875,48.567773437499994],[-92.50058593749995,48.43535156250002],[-92.41459960937493,48.276611328125],[-92.3484375,48.276611328125],[-92.00517578125002,48.301855468750006],[-91.38720703124997,48.05854492187498],[-91.04345703125003,48.19370117187498],[-90.84033203125003,48.20053710937506],[-90.79731445312495,48.13105468750001],[-89.4556640625,47.996240234374994],[-88.37817382812497,48.30307617187498],[-87.74389648437497,48.06054687500003],[-87.20800781249997,47.848486328125006],[-86.67216796874996,47.636425781249955],[-85.65224609375,47.21997070312503],[-85.07006835937497,46.97993164062498],[-84.87597656249994,46.89990234375003],[-84.66577148437503,46.54326171875002],[-84.44047851562496,46.49814453125006],[-84.12319335937497,46.50292968749997],[-83.97778320312503,46.08491210937498],[-83.61596679687503,46.116845703124994],[-83.46948242187503,45.99467773437499],[-83.59267578125,45.81713867187506],[-82.91933593749994,45.51796875000002],[-82.55107421874996,45.34736328125001],[-82.48505859374993,45.08374023437503],[-82.137841796875,43.570898437500034],[-82.19038085937495,43.47407226562501],[-82.54531249999997,42.62470703124998],[-83.10952148437497,42.25068359375001],[-83.141943359375,41.97587890624996],[-82.69003906249995,41.675195312499994],[-82.43906249999998,41.67485351562502],[-81.97416992187496,41.88872070312499],[-81.50732421874997,42.10346679687504],[-81.02822265624997,42.247167968750006],[-80.24755859375,42.36601562499996],[-79.17373046875,42.74853515625],[-78.91508789062496,42.90913085937504],[-78.98076171874993,42.98061523437502],[-79.02617187499996,43.01733398437506],[-79.066064453125,43.10610351562502],[-79.171875,43.466552734375],[-79.00249023437502,43.52714843749999],[-78.845556640625,43.58334960937498],[-78.72041015625001,43.62495117187501],[-78.45825195312497,43.63149414062502],[-77.596533203125,43.62861328124998],[-76.819970703125,43.62880859375002],[-76.18579101562503,44.24223632812502],[-75.81933593749997,44.468017578125],[-75.40126953124997,44.77226562499999],[-74.99614257812496,44.970117187499966],[-74.76245117187494,44.99907226562502],[-74.663232421875,45.00390625000003],[-71.51752929687495,45.00756835937497],[-71.327294921875,45.29008789062496],[-70.86503906249999,45.27070312500001],[-70.296240234375,45.90610351562506],[-70.00771484375002,46.70893554687501],[-69.24287109374998,47.46298828124998],[-69.0501953125,47.426611328125034],[-68.93720703124998,47.21123046875002],[-68.23549804687502,47.34594726562503],[-67.806787109375,47.08281249999999],[-67.80224609374994,45.7275390625],[-67.43266601562496,45.603125],[-67.366943359375,45.17377929687498],[-67.12485351562498,45.16943359375],[-66.98701171874995,44.82768554687502],[-67.191259765625,44.67558593750002],[-67.83906249999998,44.576269531250034],[-68.056640625,44.38432617187502],[-68.15205078124998,44.50200195312499],[-68.45058593749997,44.50761718749999],[-68.53251953124996,44.25864257812498],[-68.81191406249994,44.33935546875],[-68.76269531249994,44.57075195312498],[-69.22607421875003,43.98647460937505],[-69.52075195312503,43.89736328125002],[-69.55668945312496,43.982763671875006],[-69.62392578125,43.88061523437497],[-69.65288085937493,43.99389648437506],[-69.808349609375,43.772314453125034],[-69.965234375,43.855078125],[-70.17880859374998,43.76635742187506],[-70.73310546875001,43.07001953125004],[-70.82905273437493,42.82534179687502],[-70.61293945312497,42.623242187499955],[-71.04619140624993,42.331103515625045],[-70.73828125,42.228857421875006],[-70.42666015625002,41.75727539062501],[-70.00141601562498,41.82617187500003],[-70.24106445312495,42.09121093750002],[-70.10893554687496,42.07832031249998],[-69.97788085937498,41.961279296875006],[-69.94863281249997,41.67714843750005],[-70.65712890625,41.53422851562496],[-70.70112304687498,41.71484375],[-71.1685546875,41.489404296874994],[-71.14873046874996,41.74570312499998],[-71.27109375,41.68125],[-71.39013671875003,41.79531250000005],[-71.52285156249997,41.378955078125045],[-72.92470703125002,41.28515625000003],[-73.98710937499999,40.751367187499994],[-73.87197265625,41.05517578124997],[-73.96992187499995,41.24970703125001],[-73.92719726562495,40.914257812499955],[-74.26420898437496,40.52861328124999],[-73.972265625,40.40034179687498],[-74.079931640625,39.78813476562496],[-74.06459960937497,39.99311523437498],[-74.79448242187499,39.00190429687501],[-74.95429687499995,38.949951171875],[-74.89702148437502,39.14545898437504],[-75.52421874999999,39.49018554687501],[-75.421875,39.78969726562502],[-75.07416992187495,39.98349609375006],[-75.40063476562503,39.83159179687502],[-75.58759765625001,39.64077148437505],[-75.3921875,39.09277343750006],[-75.08867187499999,38.777539062499955],[-75.18710937499995,38.59111328124999],[-75.03876953124993,38.426367187500006],[-75.934375,37.15190429687496],[-75.97504882812498,37.3984375],[-75.65927734374995,37.953955078125034],[-75.850830078125,37.971582031249994],[-75.85869140624999,38.36206054687503],[-76.05122070312495,38.27954101562503],[-76.2646484375,38.436425781249994],[-76.26416015625,38.599951171875006],[-76.016943359375,38.62509765624998],[-76.21298828124998,38.75830078125003],[-76.34116210937498,38.70966796874998],[-76.16816406249998,38.85273437499998],[-76.32958984375,38.95278320312505],[-76.13520507812493,39.082128906250006],[-76.23569335937498,39.19160156250001],[-76.153125,39.315039062500034],[-75.87597656249997,39.3759765625],[-76.003125,39.41083984375001],[-75.87294921874997,39.510888671874966],[-75.95893554687498,39.58505859374998],[-76.2763671875,39.32275390625],[-76.330810546875,39.40390625],[-76.42089843749997,39.225],[-76.57041015624995,39.26933593749996],[-76.42758789062498,39.12602539062499],[-76.55854492187493,39.065234375000045],[-76.39409179687502,38.368994140625034],[-76.67734374999998,38.611962890624966],[-76.66855468749998,38.5375],[-76.34116210937498,38.08701171875006],[-76.86811523437495,38.39028320312502],[-76.88974609375,38.292089843750006],[-77.00117187499995,38.44526367187504],[-77.23251953125,38.40771484375003],[-77.03037109374995,38.88925781249998],[-77.26040039062502,38.6],[-77.27324218749996,38.35175781249998],[-77.04677734375002,38.356689453125],[-76.26425781250003,37.89355468749997],[-76.34414062499997,37.675683593749994],[-76.49248046874999,37.682226562500006],[-77.11108398437497,38.165673828124994],[-76.54946289062494,37.66914062500001],[-76.30556640625,37.57148437500001],[-76.26347656249996,37.35703125],[-76.40097656249998,37.386132812499994],[-76.45390624999993,37.27353515625006],[-76.75771484375002,37.50541992187496],[-76.28330078125,37.05268554687501],[-76.40087890624997,36.991308593750034],[-76.63090820312493,37.22172851562499],[-77.25087890624994,37.329199218750034],[-76.671875,37.172949218750006],[-76.48784179687502,36.89702148437499],[-75.99941406249997,36.91264648437499],[-75.53417968749997,35.81909179687506],[-75.94648437499995,36.65908203125002],[-75.99277343749995,36.47377929687502],[-75.82006835937494,36.11284179687502],[-76.14785156250002,36.279296875],[-76.15,36.14575195312497],[-76.27060546874998,36.18989257812501],[-76.22739257812498,36.11601562499996],[-76.559375,36.015332031249955],[-76.733642578125,36.229150390624994],[-76.726220703125,35.957617187500034],[-76.06977539062501,35.970312500000034],[-76.08359374999998,35.69052734375006],[-75.85390625,35.96015625000001],[-75.75883789062499,35.84326171875],[-75.77392578124997,35.64697265624997],[-76.17382812499997,35.354150390624994],[-76.489501953125,35.397021484375045],[-76.57719726562502,35.53232421874998],[-76.74140624999998,35.431494140625034],[-77.03999023437495,35.527392578125045],[-76.51293945312497,35.270410156249994],[-76.77915039062503,34.990332031250034],[-77.07026367187501,35.154638671875034],[-76.97495117187503,35.025195312500045],[-76.74497070312498,34.94096679687502],[-76.45673828124998,34.989355468750034],[-76.36220703125,34.9365234375],[-76.43979492187498,34.84291992187502],[-77.29624023437503,34.602929687499994],[-77.41225585937497,34.730810546875034],[-77.37978515625,34.526611328125],[-77.750732421875,34.28496093749996],[-77.92783203125,33.93974609374999],[-77.95327148437494,34.16899414062496],[-78.01333007812502,33.91181640624998],[-78.40585937499995,33.91757812499998],[-78.84145507812497,33.72407226562501],[-79.19379882812498,33.24414062500003],[-79.22646484375,33.40488281249998],[-79.27602539062497,33.135400390624966],[-79.80498046874999,32.78740234374996],[-79.93310546874997,32.81005859375006],[-79.94072265625002,32.667138671874966],[-80.36284179687496,32.500732421875],[-80.6341796875,32.51171875000003],[-80.474267578125,32.42275390625002],[-80.579345703125,32.28730468750004],[-80.80253906249999,32.44804687500002],[-80.69423828124997,32.21572265625002],[-81.11328124999997,31.87861328125001],[-81.06611328124995,31.787988281250023],[-81.259375,31.538916015624977],[-81.17543945312494,31.531298828125017],[-81.38095703124998,31.353271484375],[-81.28847656249997,31.263916015625],[-81.441748046875,31.19970703124997],[-81.5162109375,30.801806640625017],[-81.24951171875003,29.793798828125006],[-80.52412109374995,28.48608398437503],[-80.5849609375,28.271582031250034],[-80.456884765625,27.90068359374996],[-80.61000976562494,28.177587890624977],[-80.60693359375003,28.522900390624983],[-80.693505859375,28.34497070312497],[-80.68847656250003,28.578515625000023],[-80.83818359374999,28.757666015625034],[-80.74863281250003,28.381005859375023],[-80.050048828125,26.807714843750063],[-80.1263671875,25.83349609375],[-80.48466796874999,25.229833984375034],[-81.11049804687494,25.138037109374977],[-81.13603515624999,25.309667968750034],[-80.94042968750003,25.264208984375017],[-81.11333007812499,25.367236328125045],[-81.36494140625001,25.83105468750003],[-81.715478515625,25.98315429687503],[-81.95893554687495,26.489941406249983],[-81.82866210937496,26.68706054687499],[-82.03959960937496,26.552050781250017],[-82.01328125,26.96157226562505],[-82.24287109374998,26.848876953125],[-82.44135742187501,27.059667968750034],[-82.71459960937497,27.499609375000063],[-82.40576171874994,27.862890624999977],[-82.67519531249994,27.963769531250023],[-82.61098632812502,27.77724609375005],[-82.74287109374995,27.709375],[-82.84350585937494,27.845996093750017],[-82.65146484375,28.8875],[-83.69438476562502,29.92597656250001],[-84.04423828124996,30.10380859374999],[-84.30966796874995,30.064746093750045],[-84.38281250000003,29.90737304687505],[-85.31894531249995,29.680224609375045],[-85.413818359375,29.76757812499997],[-85.413818359375,29.842480468749955],[-85.31489257812493,29.758105468750017],[-85.35361328125,29.875732421875],[-85.67578125,30.121923828125063],[-85.60351562500003,30.286767578124966],[-85.75581054687495,30.1669921875],[-86.454443359375,30.39912109375004],[-86.12382812499999,30.40581054687499],[-86.25737304687502,30.493017578124977],[-87.201171875,30.339257812499994],[-86.98579101562498,30.43085937500001],[-86.99755859375,30.5703125],[-87.17060546874998,30.538769531249983],[-87.28105468750002,30.339257812499994],[-87.47578124999998,30.294287109375006],[-87.44829101562499,30.394140625],[-87.62226562499998,30.264746093750006],[-88.00595703124998,30.230908203124955],[-87.79028320312503,30.291796875000017],[-88.011328125,30.694189453125006],[-88.13544921874998,30.366601562499994],[-88.90522460937495,30.415136718750006],[-89.32055664062503,30.3453125],[-89.58847656249998,30.165966796874955],[-90.12597656249997,30.369091796874955],[-90.33198242187493,30.277587890625057],[-90.41303710937501,30.140332031249983],[-90.17534179687499,30.02910156249996],[-89.73745117187497,30.171972656250034],[-89.66503906249994,30.117041015625034],[-89.81518554687497,30.007275390624955],[-89.631689453125,29.90380859375003],[-89.400732421875,30.04604492187505],[-89.35444335937501,29.82021484375005],[-89.72089843749995,29.619287109374966],[-89.01572265625,29.202880859375057],[-89.15551757812497,29.01660156250003],[-89.23608398437494,29.081103515625017],[-89.37612304687497,28.981347656250023],[-89.44316406249996,29.194140625000045],[-90.15908203124997,29.537158203125017],[-90.05278320312499,29.336816406249966],[-90.21279296875,29.104931640624983],[-90.37919921874996,29.29511718750001],[-90.75102539062496,29.13085937500003],[-91.29013671875,29.288964843749994],[-91.15078124999994,29.317919921875045],[-91.24882812499993,29.56420898437503],[-91.51420898437499,29.55537109375001],[-91.8931640625,29.836035156249977],[-92.135498046875,29.699462890625057],[-92.08403320312499,29.59282226562499],[-92.26083984374995,29.55683593750004],[-93.17568359375,29.778955078124994],[-93.82646484374999,29.725146484375045],[-93.84145507812502,29.97973632812503],[-93.89047851562495,29.689355468750023],[-94.759619140625,29.384277343750057],[-94.52626953125,29.547949218750006],[-94.77827148437498,29.54785156249997],[-94.74194335937497,29.75],[-95.0228515625,29.70234375000001],[-94.88828125000003,29.37055664062501],[-95.27348632812499,28.96386718750003],[-96.23452148437502,28.488964843749983],[-96.01103515624996,28.631933593749977],[-96.44873046874997,28.594482421875],[-96.64003906249994,28.708789062500017],[-96.42109374999993,28.457324218750045],[-96.67636718749998,28.34130859375003],[-96.77353515624998,28.421630859375057],[-96.839501953125,28.194384765625017],[-97.156494140625,28.144335937500045],[-97.141259765625,28.060742187499983],[-97.034326171875,28.093847656250063],[-97.07309570312498,27.98608398437503],[-97.43149414062498,27.83720703124999],[-97.28872070312494,27.670605468749983],[-97.43911132812502,27.328271484374966],[-97.76845703124997,27.45751953125],[-97.69238281250003,27.287158203125017],[-97.48510742187497,27.237402343750006],[-97.55468749999994,26.96733398437496],[-97.43505859375,26.48583984375003],[-97.14624023437494,25.961474609375045],[-97.37563476562497,25.871826171875],[-99.10776367187498,26.446923828124994],[-99.45654296874999,27.05668945312496],[-99.50532226562497,27.54833984375003],[-100.29604492187495,28.32768554687499],[-100.75458984375001,29.182519531249994],[-101.44038085937503,29.77685546875],[-102.26894531249998,29.871191406250034],[-102.61494140624994,29.75234375],[-102.8919921875,29.216406250000034],[-103.16831054687498,28.998193359374994],[-104.110595703125,29.386132812499994],[-104.50400390624995,29.677685546874955],[-104.97880859374996,30.645947265624955],[-106.14804687499995,31.450927734375],[-106.44541015624996,31.768408203125006],[-108.21181640625002,31.779345703125017],[-108.21445312499993,31.329443359375034],[-111.0419921875,31.32421875000003],[-114.83593749999994,32.50830078125003],[-114.72475585937495,32.71533203125003],[-117.12827148437495,32.533349609374994],[-117.46743164062495,33.295507812500006],[-118.08051757812497,33.72216796874997],[-118.41044921874996,33.74394531249996],[-118.506201171875,34.01738281249999],[-119.14375,34.11201171874998],[-119.60605468749999,34.41801757812499],[-120.48120117187503,34.47163085937498],[-120.64467773437502,34.57998046875002],[-120.65908203124994,35.122412109375034],[-120.85737304687501,35.209667968749955],[-120.899609375,35.42509765624999],[-121.28383789062494,35.67631835937499],[-121.87739257812498,36.33105468749997],[-121.80742187499995,36.851220703124994],[-122.394921875,37.20751953125003],[-122.49921875000001,37.542626953124994],[-122.44560546875002,37.797998046874966],[-122.07050781249998,37.47827148437503],[-122.38544921875001,37.960595703124966],[-122.31425781249999,38.00732421874997],[-121.52534179687503,38.05590820312503],[-122.39335937499995,38.14482421875002],[-122.52133789062499,37.82641601562497],[-122.93198242187498,38.05546875000002],[-122.998779296875,37.98862304687498],[-122.90815429687501,38.19658203124999],[-123.701123046875,38.90727539062502],[-123.83291015624994,39.775488281250034],[-124.35654296875003,40.37109374999997],[-124.07192382812497,41.45952148437502],[-124.53964843750003,42.812890624999966],[-124.14873046874997,43.691748046875034],[-123.92934570312495,45.57695312499996],[-123.989306640625,46.21938476562502],[-123.22060546874998,46.153613281250045],[-123.46484375,46.27109374999998],[-124.07275390624996,46.279443359374994],[-124.04433593750002,46.605078125],[-123.946142578125,46.43256835937501],[-123.88916015625003,46.660009765625006],[-124.11254882812497,46.862695312499994],[-123.84287109375002,46.963183593750045],[-124.11171875,47.03520507812496],[-124.1392578125,46.95468749999998],[-124.376025390625,47.658642578124955],[-124.66308593749996,47.97412109375003],[-124.7099609375,48.38037109375],[-123.97578125,48.16845703125],[-122.97387695312499,48.07329101562496],[-122.77861328125,48.13759765625002],[-122.65664062500002,47.88115234374999],[-122.77841796874996,47.738427734374966],[-122.82138671875,47.79316406250001],[-123.1390625,47.386083984375034],[-122.92216796874993,47.40766601562498],[-123.066796875,47.39965820312506],[-123.04863281249995,47.479345703125034],[-122.53281250000002,47.919726562500045],[-122.67548828124995,47.612353515625045],[-122.57788085937496,47.29316406250001],[-122.76777343750001,47.21835937500006],[-122.82846679687503,47.336572265624994],[-123.02758789062501,47.13891601562503],[-122.70195312500002,47.11088867187502],[-122.35380859374996,47.37158203125],[-122.40180664062497,47.78427734374998],[-122.24199218750002,48.01074218750003],[-122.5169921875,48.15966796874997],[-122.40854492187502,48.29389648437498],[-122.66899414062496,48.465234374999966],[-122.49677734374995,48.50556640625001],[-122.51274414062502,48.66943359375],[-122.56201171875001,48.777978515624994],[-122.68593749999995,48.794287109375034],[-122.72246093750002,48.85302734375003],[-122.78876953125003,48.993017578125034],[-121.40722656249994,48.993017578125034],[-119.70170898437495,48.993017578125034],[-119.27534179687494,48.99306640625005],[-118.84892578124993,48.99306640625005],[-117.99619140625002,48.99306640625005],[-116.71704101562501,48.99306640625005],[-110.74765625,48.99306640625005],[-104.77832031249997,48.993115234374955],[-98.80898437499995,48.99316406249997],[-97.52983398437493,48.99316406249997],[-96.67705078124993,48.99316406249997],[-96.25068359374993,48.99316406249997],[-95.39790039062493,48.99316406249997],[-95.16206054687493,48.991748046875045],[-95.15527343749997,49.36967773437502],[-94.85434570312495,49.304589843749994],[-94.86040039062493,49.258593750000045],[-94.80346679687497,49.0029296875]]],[[[-176.28671874999998,51.79199218750006],[-176.34965820312502,51.733300781249994],[-176.41372070312502,51.840576171875],[-176.28671874999998,51.79199218750006]]],[[[-177.87905273437502,51.64970703125002],[-178.05888671875,51.67260742187497],[-177.98637695312493,51.76425781249998],[-178.16826171874996,51.90302734375001],[-177.644482421875,51.826269531250006],[-177.87905273437502,51.64970703125002]]],[[[-177.14819335937497,51.71674804687498],[-177.67021484375002,51.701074218749994],[-177.11005859375,51.92875976562502],[-177.14819335937497,51.71674804687498]]],[[[-176.593310546875,51.86669921875],[-176.45234374999995,51.735693359375034],[-176.96162109374998,51.60366210937505],[-176.69833984374998,51.986035156249955],[-176.593310546875,51.86669921875]]],[[[179.72773437500015,51.905419921874966],[179.50390625000003,51.97958984374998],[179.6271484375001,52.03041992187502],[179.72773437500015,51.905419921874966]]],[[[177.4154296875,51.88281249999997],[177.25029296875013,51.902929687500006],[177.6696289062501,52.10302734375],[177.4154296875,51.88281249999997]]],[[[-173.5533203125,52.13627929687502],[-173.02290039062504,52.07915039062502],[-173.83579101562498,52.048193359375006],[-173.99248046874993,52.12333984374996],[-173.5533203125,52.13627929687502]]],[[[-172.464794921875,52.27226562500002],[-172.61982421874998,52.27285156250005],[-172.47041015625,52.38803710937506],[-172.31362304687497,52.32958984375006],[-172.464794921875,52.27226562500002]]],[[[-174.67739257812502,52.035009765625006],[-175.29555664062502,52.022167968749955],[-174.30615234375,52.216162109375034],[-174.43554687499997,52.317236328125034],[-174.168896484375,52.42016601562503],[-174.04560546875,52.36723632812499],[-174.12065429687493,52.13520507812498],[-174.67739257812502,52.035009765625006]]],[[[173.72275390625018,52.35957031250004],[173.40234375000009,52.40478515625],[173.77607421875004,52.49511718750003],[173.72275390625018,52.35957031250004]]],[[[172.81181640625002,53.01298828125002],[173.43603515625003,52.85205078125],[172.93515625000012,52.752099609374966],[172.49482421875004,52.93789062499999],[172.81181640625002,53.01298828125002]]],[[[-167.96435546875003,53.345117187499994],[-169.088916015625,52.83203125],[-168.68984375000002,53.227246093749955],[-168.38041992187496,53.28344726562506],[-168.28769531249998,53.500146484374966],[-167.82807617187495,53.50795898437505],[-167.96435546875003,53.345117187499994]]],[[[-166.61533203124998,53.90092773437499],[-166.37231445312494,53.99897460937498],[-166.230859375,53.93261718750006],[-166.54560546875,53.726464843749966],[-166.354541015625,53.67353515625004],[-166.85097656249997,53.45288085937503],[-167.78085937500003,53.30024414062501],[-167.13608398437503,53.526464843750006],[-167.01572265625003,53.69838867187502],[-166.80898437500002,53.64614257812505],[-166.741259765625,53.71293945312496],[-167.10561523437497,53.813378906249994],[-167.03808593749997,53.9421875],[-166.67329101562498,54.00595703124998],[-166.61533203124998,53.90092773437499]]],[[[-165.841552734375,54.070654296875006],[-166.05664062500003,54.054345703124994],[-166.08774414062498,54.16914062500001],[-165.89287109375,54.20698242187498],[-165.69287109375,54.09990234375002],[-165.841552734375,54.070654296875006]]],[[[-165.56113281249998,54.13671874999997],[-165.55063476562498,54.28452148437498],[-165.40786132812502,54.19682617187496],[-165.56113281249998,54.13671874999997]]],[[[-162.29814453124993,54.847021484375006],[-162.43388671875,54.931542968749994],[-162.26459960937504,54.983496093750006],[-162.29814453124993,54.847021484375006]]],[[[-163.476025390625,54.98071289062497],[-163.37895507812496,54.81552734374998],[-163.083251953125,54.66899414062496],[-163.35810546874995,54.73569335937506],[-164.82343749999998,54.41909179687505],[-164.887646484375,54.60781250000002],[-164.47861328124998,54.906835937500006],[-163.80712890624997,55.04907226562503],[-163.476025390625,54.98071289062497]]],[[[-159.51513671875,55.15185546875003],[-159.617724609375,55.05732421875004],[-159.54506835937497,55.22597656250002],[-159.51513671875,55.15185546875003]]],[[[-131.33974609375002,55.079833984375],[-131.32954101562498,54.887744140625045],[-131.592236328125,55.02568359374999],[-131.5654296875,55.26411132812498],[-131.33974609375002,55.079833984375]]],[[[-159.87299804687495,55.128759765625034],[-160.22705078124997,54.92270507812506],[-160.17207031249995,55.123046875],[-159.88735351562497,55.27299804687502],[-159.87299804687495,55.128759765625034]]],[[[-132.86225585937504,54.894433593749966],[-132.61723632812493,54.892431640625006],[-132.70581054687497,54.684179687500034],[-133.42905273437498,55.30380859374998],[-133.097412109375,55.213720703125006],[-132.86225585937504,54.894433593749966]]],[[[-160.329296875,55.337695312500045],[-160.34331054687493,55.25878906250006],[-160.51748046875,55.33383789062506],[-160.329296875,55.337695312500045]]],[[[-160.68491210937498,55.314794921875006],[-160.552783203125,55.38076171875002],[-160.48754882812503,55.18486328124999],[-160.79506835937497,55.14521484375001],[-160.72392578124993,55.404638671875006],[-160.68491210937498,55.314794921875006]]],[[[-133.30507812500002,55.54375],[-133.6501953125,55.26928710937506],[-133.73710937500002,55.49692382812498],[-133.30507812500002,55.54375]]],[[[-155.56601562500003,55.82119140625005],[-155.73735351562493,55.82978515625001],[-155.59394531250004,55.92431640625],[-155.56601562500003,55.82119140625005]]],[[[-130.97915039062502,55.489160156249994],[-131.187890625,55.206298828125],[-131.44755859374996,55.40878906250006],[-131.7625,55.16582031250002],[-131.84609374999997,55.41625976562497],[-131.62495117187504,55.831689453124966],[-131.26923828125004,55.95537109375002],[-130.997802734375,55.727636718750006],[-130.97915039062502,55.489160156249994]]],[[[-133.56611328125,56.33920898437498],[-133.202978515625,56.31982421875003],[-133.096630859375,56.09003906250001],[-132.59760742187504,55.89501953125],[-132.17270507812498,55.48061523437502],[-132.51127929687493,55.59394531250001],[-132.63129882812495,55.47319335937502],[-132.41787109375002,55.48291015625006],[-132.20668945312497,55.22441406249996],[-131.97641601562498,55.208593750000034],[-132.06474609375002,54.713134765625],[-133.11855468750002,55.32763671875003],[-132.95888671875002,55.39555664062502],[-133.0333984375,55.589697265625034],[-133.68017578124994,55.78515625],[-133.24150390624993,55.920800781249994],[-133.371240234375,56.035888671875],[-133.74252929687498,55.96484375],[-133.530859375,56.145654296874966],[-133.56611328125,56.33920898437498]]],[[[-132.77988281249998,56.24726562499998],[-133.03500976562498,56.34091796875006],[-132.90205078124998,56.45375976562505],[-132.62910156249995,56.411914062500045],[-132.77988281249998,56.24726562499998]]],[[[-132.11235351562493,56.109375],[-132.13295898437497,55.94326171875005],[-132.28730468749995,55.92939453124998],[-132.65991210937503,56.07817382812499],[-132.379833984375,56.49877929687497],[-132.06689453125,56.24423828124998],[-132.11235351562493,56.109375]]],[[[-154.208642578125,56.51489257812497],[-154.32221679687504,56.570605468750045],[-154.11040039062496,56.602929687499966],[-154.208642578125,56.51489257812497]]],[[[-169.755224609375,56.63505859375002],[-169.47431640624998,56.59404296875002],[-169.6326171875,56.545703125000045],[-169.755224609375,56.63505859375002]]],[[[-132.746875,56.525683593750045],[-132.94804687500002,56.56723632812498],[-132.842529296875,56.79477539062506],[-132.56796875000003,56.57583007812505],[-132.746875,56.525683593750045]]],[[[-133.98959960937503,56.84497070312497],[-133.73837890625,56.65043945312496],[-133.94970703125,56.12773437499996],[-134.18959960937502,56.07695312500002],[-134.084375,56.456347656250045],[-134.37368164062502,56.838671875000045],[-134.14326171874998,56.93232421875001],[-133.98959960937503,56.84497070312497]]],[[[-133.36621093750006,57.003515625000034],[-132.99624023437497,56.93041992187497],[-132.95917968749998,56.67705078124996],[-133.03491210937494,56.62075195312505],[-133.32895507812498,56.83007812499997],[-133.158154296875,56.495166015625045],[-133.4841796875,56.45175781249998],[-133.979443359375,57.009570312500045],[-133.36621093750006,57.003515625000034]]],[[[-153.007080078125,57.12485351562498],[-153.37460937499998,57.05190429687505],[-153.285205078125,57.18505859375],[-152.90839843750004,57.152441406250006],[-153.007080078125,57.12485351562498]]],[[[-134.96977539062496,57.351416015625034],[-134.62070312499998,56.71831054687502],[-134.68188476562503,56.216162109375034],[-134.98056640625003,56.518945312499994],[-134.88344726562497,56.679052734375034],[-135.33061523437505,56.821875],[-135.19960937499997,57.02734375],[-135.45493164062503,57.24941406250005],[-135.81230468750002,57.00952148437503],[-135.82275390625,57.280419921874966],[-135.448681640625,57.534375],[-134.96977539062496,57.351416015625034]]],[[[-152.89804687499998,57.82392578125004],[-152.42875976562493,57.82568359375003],[-152.48261718749998,57.70332031249998],[-152.21621093749997,57.577001953125006],[-152.41220703125003,57.454785156249955],[-152.94077148437498,57.49809570312499],[-152.67905273437503,57.345117187499994],[-153.274365234375,57.22636718749996],[-153.732568359375,57.052343750000034],[-153.643310546875,56.960742187500045],[-154.02734375,56.77797851562502],[-153.793212890625,56.98950195312503],[-154.24375,57.143017578124955],[-154.33896484374998,56.9208984375],[-154.67319335937498,57.44609375],[-154.11616210937498,57.651220703125006],[-153.6876953125,57.30512695312504],[-153.841552734375,57.86284179687496],[-153.48793945312497,57.73095703125],[-153.21748046875004,57.79575195312506],[-153.16044921875,57.97197265624999],[-152.85039062499993,57.896777343750045],[-152.89804687499998,57.82392578125004]]],[[[-135.73037109375002,58.244238281250034],[-135.61323242187507,57.99184570312505],[-135.346630859375,58.12412109374998],[-134.9546875,58.01533203125004],[-134.97065429687495,57.817236328125006],[-135.33847656250003,57.768652343750034],[-134.97885742187503,57.724365234375],[-134.93149414062498,57.48115234375001],[-135.564208984375,57.66640625],[-135.691943359375,57.41992187500006],[-135.91079101562502,57.44658203124999],[-136.568603515625,57.97216796875003],[-136.32197265625,58.21889648437502],[-136.14375,58.098486328125006],[-136.09438476562502,58.198144531249966],[-135.73037109375002,58.244238281250034]]],[[[-134.68027343749998,58.16166992187499],[-134.24008789062498,58.143994140624955],[-133.82275390624997,57.62866210937503],[-134.29233398437498,58.044726562500074],[-133.91113281250003,57.3525390625],[-134.51601562499997,57.042578125],[-134.48676757812495,57.48203125],[-134.92348632812497,58.354638671874966],[-134.68027343749998,58.16166992187499]]],[[[-152.416943359375,58.360205078125034],[-151.974365234375,58.30986328124999],[-152.068896484375,58.17792968750001],[-152.26835937499993,58.25170898437506],[-152.30922851562502,58.133886718750034],[-152.5982421875,58.16259765625],[-152.92841796875004,57.99370117187499],[-153.38134765625003,58.08720703125002],[-152.976123046875,58.29702148437505],[-152.771875,58.278564453125],[-152.84111328125002,58.41640625000002],[-152.416943359375,58.360205078125034]]],[[[-152.486083984375,58.485009765624966],[-152.63662109375002,58.54169921874998],[-152.3955078125,58.619384765625],[-152.486083984375,58.485009765624966]]],[[[-160.918994140625,58.57709960937498],[-161.13149414062502,58.668212890625],[-160.71513671875005,58.79521484375002],[-160.918994140625,58.57709960937498]]],[[[-148.02177734375,60.06533203125005],[-148.271875,60.05327148437499],[-148.07958984375003,60.151660156250045],[-148.02177734375,60.06533203125005]]],[[[-147.735888671875,59.81323242187503],[-147.76806640625,59.94375],[-147.180859375,60.358251953125034],[-147.01987304687498,60.33222656249998],[-147.735888671875,59.81323242187503]]],[[[-166.13544921875,60.38354492187503],[-165.72968750000004,60.31420898437503],[-165.591796875,59.913134765625045],[-166.14873046874996,59.764111328124955],[-167.13886718749998,60.00854492187503],[-167.43642578125002,60.20664062500006],[-166.836328125,60.21699218750004],[-166.47568359374998,60.382763671874955],[-166.13544921875,60.38354492187503]]],[[[-146.3939453125,60.44965820312501],[-146.10224609374998,60.41118164062499],[-146.61831054687497,60.27368164062503],[-146.70253906249997,60.40854492187498],[-146.3939453125,60.44965820312501]]],[[[-147.658251953125,60.45048828124999],[-147.787841796875,60.17792968749998],[-147.89145507812498,60.299414062500034],[-147.658251953125,60.45048828124999]]],[[[-172.74223632812496,60.45737304687498],[-172.23208007812494,60.299121093750074],[-172.63574218750003,60.328857421875],[-173.04765625000002,60.56831054687501],[-172.74223632812496,60.45737304687498]]],[[[-171.46303710937494,63.640039062499994],[-171.03486328125,63.58549804687499],[-170.29936523437502,63.68061523437501],[-169.55454101562498,63.373486328124955],[-168.71601562500004,63.310595703125045],[-168.76132812500003,63.21376953125002],[-169.364697265625,63.17114257812506],[-169.67636718750003,62.95610351562502],[-169.81860351562494,63.122363281250045],[-170.84838867187494,63.44438476562502],[-171.63183593749997,63.351220703124966],[-171.74638671874993,63.703076171874955],[-171.46303710937494,63.640039062499994]]],[[[-141.00214843750004,68.77416992187506],[-141.00214843750004,67.89755859374998],[-141.00214843750004,66.43652343750006],[-141.00214843750004,65.55991210937498],[-141.00214843750004,64.09887695312506],[-141.00214843750004,63.22226562499998],[-141.00214843750004,61.761279296875045],[-141.00214843750004,60.884667968749994],[-141.00214843750004,60.30024414062504],[-140.76274414062505,60.259130859375006],[-140.525439453125,60.218359375000034],[-140.45283203125004,60.29970703125002],[-139.97329101562497,60.183154296875074],[-139.67631835937505,60.32832031249998],[-139.23476562499997,60.339746093749994],[-139.07924804687497,60.34370117187501],[-139.07924804687497,60.279443359374966],[-139.136962890625,60.17270507812498],[-139.18515624999998,60.083593750000034],[-138.86875,59.94575195312501],[-138.317626953125,59.611132812500074],[-137.59331054687493,59.22626953124998],[-137.52089843750002,58.91538085937498],[-137.43857421875003,58.903125],[-137.2775390625,58.988183593749994],[-137.126220703125,59.04096679687498],[-136.81328125000002,59.150048828124994],[-136.57875976562502,59.15224609375002],[-136.46635742187493,59.459082031250006],[-136.27797851562502,59.48032226562506],[-136.321826171875,59.604833984375034],[-135.70258789062504,59.72875976562506],[-135.36787109374998,59.743310546874994],[-135.051025390625,59.57866210937502],[-134.94375,59.28828125000001],[-134.67724609374997,59.19926757812499],[-134.39306640625,59.009179687499994],[-134.32963867187505,58.93969726562506],[-134.21850585937503,58.849902343750045],[-133.54638671874997,58.50346679687499],[-133.27529296875,58.22285156250004],[-133.00141601562495,57.948974609375],[-132.55048828125,57.499902343749994],[-132.44248046874998,57.40673828125003],[-132.30166015624997,57.27631835937501],[-132.232177734375,57.19853515624999],[-132.27939453124998,57.14536132812498],[-132.33798828124998,57.07944335937506],[-132.15703125,57.048193359375006],[-132.03154296875,57.02656250000004],[-132.062890625,56.95336914062503],[-132.104296875,56.856787109375006],[-131.86616210937495,56.792822265625006],[-131.82426757812496,56.589990234374994],[-131.471875,56.55673828125006],[-130.649072265625,56.26367187500003],[-130.47709960937496,56.230566406250034],[-130.413134765625,56.12250976562498],[-130.09785156249995,56.10927734375002],[-130.01406249999997,55.950537109375006],[-130.2140625,55.02587890625003],[-130.57534179687497,54.769677734374966],[-130.849609375,54.80761718750006],[-131.04785156249997,55.157666015624955],[-130.74819335937502,55.31801757812502],[-131.127685546875,55.96015625000001],[-131.032763671875,56.08808593749998],[-131.78417968749997,55.876562500000034],[-131.98339843749994,55.535009765625006],[-132.15541992187502,55.59956054687501],[-132.20751953124997,55.75341796875],[-131.84384765625003,56.16010742187498],[-131.55136718749998,56.206787109375],[-131.88789062500004,56.24165039062498],[-132.18203125000002,56.42065429687506],[-132.82460937500002,57.05581054687505],[-133.465869140625,57.17216796875002],[-133.64873046874993,57.64228515624998],[-133.11704101562498,57.56621093750002],[-133.535205078125,57.83295898437501],[-133.1943359375,57.87768554687506],[-133.559375,57.924462890624994],[-133.72231445312502,57.84423828125],[-134.03110351562498,58.072167968749966],[-133.87675781249996,58.51816406249998],[-134.20883789062503,58.232958984375045],[-134.77612304687506,58.45385742187503],[-135.36367187500002,59.41943359375],[-135.50234375000002,59.202294921874994],[-135.090234375,58.245849609375],[-135.57177734374994,58.41206054687504],[-135.89755859374998,58.40019531250002],[-136.04311523437497,58.82163085937498],[-135.82636718750004,58.89794921874997],[-136.0166015625,58.87397460937498],[-136.150048828125,59.04809570312503],[-136.22583007812497,58.765478515625006],[-136.98901367187503,59.03447265624999],[-137.05903320312498,58.87373046875001],[-136.613916015625,58.809277343749955],[-136.48374023437503,58.61767578125],[-136.224609375,58.602246093749955],[-136.06147460937495,58.45273437500006],[-136.607421875,58.24399414062498],[-137.54399414062502,58.58120117187502],[-138.51489257812503,59.16591796875005],[-139.77329101562498,59.52729492187504],[-139.51303710937498,59.698095703125006],[-139.5123046875,59.95356445312501],[-139.28671874999998,59.610937500000034],[-139.22080078125003,59.819873046875045],[-138.9880859375,59.83500976562502],[-139.43144531249996,60.012255859375074],[-140.41982421874997,59.71074218750002],[-141.40830078125,59.90278320312498],[-141.408740234375,60.11767578125006],[-141.67016601562497,59.969873046874966],[-142.94565429687503,60.09697265625002],[-144.14721679687494,60.01640625000002],[-144.185498046875,60.150732421875034],[-144.901318359375,60.335156249999955],[-144.69111328125,60.66909179687502],[-145.248291015625,60.38012695312506],[-145.898876953125,60.47817382812505],[-145.67490234374998,60.65112304687503],[-146.57045898437497,60.72915039062502],[-146.39199218749997,60.810839843750045],[-146.63842773437497,60.89731445312498],[-146.59912109374994,61.05351562500002],[-146.284912109375,61.11264648437498],[-147.89111328125,60.889892578125],[-148.00512695312494,60.96855468750002],[-147.75185546874997,61.218945312499955],[-148.34189453125,61.060400390625006],[-148.34443359374998,60.853564453125045],[-148.55615234374994,60.82700195312506],[-148.25673828124997,60.67529296874997],[-148.64013671875,60.48945312500004],[-148.11918945312502,60.57514648437498],[-147.96411132812494,60.48486328124997],[-148.430712890625,59.98911132812498],[-149.2666015625,59.99829101562497],[-149.395263671875,60.10576171875002],[-149.59804687500002,59.77045898437501],[-149.7138671875,59.91958007812502],[-149.80126953124994,59.737939453124966],[-150.00532226562507,59.78442382812503],[-150.19804687499996,59.56655273437505],[-150.60737304687504,59.56337890625002],[-150.934521484375,59.249121093750034],[-151.18276367187502,59.30078124999997],[-151.73818359375002,59.18852539062502],[-151.94951171875,59.26508789062498],[-151.88461914062503,59.386328125],[-151.39960937499995,59.51630859375001],[-151.04648437499998,59.771826171875034],[-151.45009765624997,59.65039062499997],[-151.85322265625,59.78208007812498],[-151.39599609375006,60.27446289062502],[-151.35644531249997,60.72294921874999],[-150.44125976562503,61.02358398437505],[-149.07509765624997,60.87641601562498],[-150.05327148437496,61.17109374999998],[-149.433544921875,61.50078125000002],[-149.97568359374998,61.27934570312502],[-150.61225585937495,61.301123046875006],[-151.59350585937494,60.979638671874966],[-152.54091796874997,60.265429687500045],[-153.025,60.29565429687497],[-152.660107421875,59.99721679687502],[-153.21123046875002,59.84272460937498],[-153.09360351562503,59.70913085937505],[-153.65253906250004,59.64702148437499],[-154.17832031250003,59.155566406250074],[-153.41826171875,58.9599609375],[-153.43759765625003,58.754833984374955],[-154.289013671875,58.30434570312502],[-154.247021484375,58.15942382812497],[-155.006884765625,58.01606445312501],[-155.77797851562497,57.56821289062498],[-156.43588867187498,57.359960937500006],[-156.62900390624998,57.00996093750001],[-158.41440429687498,56.435839843750045],[-158.5521484375,56.31269531249998],[-158.27563476562497,56.19624023437498],[-158.5046875,56.062109375],[-158.59116210937503,56.18452148437498],[-158.78984375000002,55.98691406250006],[-159.52324218749993,55.81000976562498],[-159.65966796875003,55.625927734374955],[-159.77138671874997,55.84111328125002],[-160.49931640625002,55.53730468750004],[-161.38193359374998,55.371289062499955],[-161.44379882812495,55.513281250000034],[-161.202099609375,55.54355468750006],[-161.51694335937503,55.61840820312503],[-162.073974609375,55.13930664062505],[-162.38637695312497,55.05234375],[-162.63037109375003,55.24667968749998],[-162.67436523437505,54.99658203125],[-162.86503906249996,54.954541015624955],[-163.11962890624997,55.06469726562503],[-163.131103515625,54.916552734375045],[-163.33530273437503,54.83916015624999],[-163.27880859374997,55.12182617187503],[-162.906591796875,55.19555664062503],[-161.69731445312502,55.9072265625],[-161.215625,56.02143554687498],[-160.8986328125,55.99365234375],[-161.00537109375,55.88715820312498],[-160.80283203125003,55.754443359375045],[-160.70634765625002,55.870458984375034],[-160.29169921875,55.80507812500005],[-160.53906250000006,56.00629882812501],[-160.30205078125,56.31411132812502],[-158.91801757812502,56.882177734375006],[-158.675146484375,56.79487304687498],[-158.66079101562502,57.03940429687498],[-158.32094726562497,57.29790039062499],[-157.84575195312496,57.52807617187497],[-157.4619140625,57.506201171875034],[-157.697216796875,57.679443359375],[-157.610888671875,58.050830078125074],[-157.19370117187498,58.19418945312506],[-157.48837890624998,58.25371093750002],[-157.52363281249998,58.421337890624955],[-156.97465820312496,58.736328125],[-156.80888671875005,59.13427734375],[-157.14204101562504,58.87763671875001],[-158.19091796875003,58.6142578125],[-158.50317382812494,58.85034179687497],[-158.42563476562498,58.99931640625002],[-158.080517578125,58.97744140625002],[-158.422802734375,59.08984375],[-158.67827148437502,58.92939453124998],[-158.80947265625002,58.973876953125],[-158.78862304687493,58.440966796875045],[-158.95068359375,58.404541015625],[-159.67026367187498,58.9111328125],[-159.92021484375,58.819873046875074],[-160.36313476562498,59.05117187500002],[-161.246826171875,58.799462890624994],[-161.36132812499994,58.66953124999998],[-162.144921875,58.64423828124998],[-161.724365234375,58.794287109375006],[-161.64438476562498,59.109667968750045],[-161.9810546875,59.14614257812502],[-161.82871093749998,59.588623046875],[-162.421337890625,60.28398437500002],[-161.96201171875003,60.695361328125045],[-162.68496093749997,60.268945312499966],[-162.57075195312495,59.98974609375],[-163.68037109374998,59.80151367187503],[-164.14282226562497,59.89677734374999],[-165.02651367187497,60.500634765624994],[-165.35380859375002,60.54121093750001],[-164.80517578125,60.89204101562498],[-164.31850585937497,60.77128906249999],[-164.37236328125002,60.59184570312502],[-163.999560546875,60.76606445312498],[-163.72998046874997,60.589990234374994],[-163.420947265625,60.757421875],[-163.90654296874996,60.85380859375002],[-163.58691406249994,60.902978515624994],[-163.74902343750003,60.9697265625],[-163.99462890624997,60.86469726562501],[-165.11484375,60.93281250000004],[-164.86899414062503,61.11176757812498],[-165.27978515624994,61.169628906249955],[-165.27363281250004,61.27485351562498],[-165.56586914062498,61.10234375000002],[-165.86396484375004,61.33569335937503],[-165.84531249999998,61.536230468750034],[-166.152734375,61.545947265625074],[-166.16811523437502,61.65083007812501],[-165.80893554687503,61.69609375000002],[-166.07880859375,61.803125],[-165.61279296875003,61.86928710937502],[-165.707275390625,62.10043945312506],[-165.19453125,62.47353515625002],[-164.75786132812493,62.496728515624966],[-164.589453125,62.709375],[-164.79267578125,62.623193359374966],[-164.79965820312503,62.918066406250006],[-164.384228515625,63.03046874999998],[-164.40903320312503,63.21503906250001],[-163.94287109375,63.247216796874994],[-163.61630859374998,63.125146484374994],[-163.73784179687496,63.016406250000045],[-163.504345703125,63.105859374999966],[-163.28784179687494,63.046435546875045],[-162.621484375,63.26582031249998],[-162.28281250000003,63.529199218749994],[-161.97397460937498,63.45292968749999],[-161.09970703125003,63.557910156250045],[-160.778564453125,63.818945312500034],[-160.987548828125,64.25126953125002],[-161.49072265625003,64.43378906249998],[-160.93193359374996,64.5791015625],[-160.855908203125,64.755615234375],[-161.13017578125005,64.92543945312505],[-161.759375,64.816259765625],[-162.80703124999997,64.37421875000001],[-163.20390625,64.65200195312502],[-163.14433593750002,64.423828125],[-163.71308593749998,64.588232421875],[-164.978759765625,64.45366210937502],[-166.1427734375,64.58276367187503],[-166.48139648437498,64.72807617187507],[-166.415234375,64.926513671875],[-166.92841796875,65.15708007812498],[-166.15703125,65.28583984375001],[-167.40400390625,65.42211914062497],[-168.08837890624997,65.65776367187502],[-166.39873046875002,66.14443359375005],[-165.62993164062496,66.131201171875],[-165.77617187500002,66.31904296875001],[-164.46049804687502,66.58842773437499],[-163.63823242187502,66.57465820312504],[-163.89394531249997,66.57587890625001],[-164.03374023437493,66.21552734374995],[-163.69536132812502,66.08383789062503],[-161.93369140625003,66.04287109374997],[-161.45541992187503,66.28139648437497],[-161.03427734375003,66.18881835937503],[-161.12031249999995,66.334326171875],[-161.91689453124997,66.41181640624998],[-162.54365234375004,66.80512695312501],[-162.36162109375,66.94731445312502],[-161.591015625,66.45952148437502],[-160.23168945312503,66.420263671875],[-160.360888671875,66.6125],[-160.864013671875,66.67084960937501],[-161.39804687499998,66.55185546875],[-161.85668945312497,66.70034179687497],[-161.719921875,67.02055664062502],[-163.5318359375,67.10258789062502],[-164.1251953125,67.60673828125007],[-166.786279296875,68.35961914062497],[-166.38051757812502,68.425146484375],[-166.20908203125,68.88535156250003],[-165.04394531249994,68.882470703125],[-163.867919921875,69.03666992187505],[-161.88095703125003,70.33173828125001],[-162.073876953125,70.16196289062498],[-160.9962890625,70.30458984375],[-160.11713867187495,70.59121093750002],[-159.86567382812498,70.27885742187499],[-159.81499023437496,70.49707031250003],[-159.38676757812493,70.52451171875003],[-160.081591796875,70.63486328125003],[-159.680908203125,70.786767578125],[-159.31450195312496,70.87851562500003],[-159.251171875,70.7484375],[-157.909375,70.860107421875],[-156.47021484374994,71.40766601562501],[-156.469970703125,71.29155273437507],[-155.57944335937503,71.12109374999997],[-156.14658203125,70.92783203125003],[-155.97353515625002,70.84199218749995],[-155.16684570312498,71.09921875000006],[-154.19521484375002,70.80112304687498],[-153.23291015625,70.93256835937504],[-152.49121093749994,70.88095703125],[-152.23291015625,70.81035156249999],[-152.39921875,70.62045898437503],[-151.76904296875,70.56015625],[-151.94467773437498,70.45209960937501],[-149.26943359374997,70.50078124999999],[-147.70537109375,70.21723632812495],[-145.82314453124997,70.16005859375002],[-145.19736328125003,70.00869140625002],[-143.218310546875,70.11625976562499],[-142.70786132812498,70.03378906249998],[-141.40791015625,69.65336914062502],[-141.00214843750004,69.65078125000002],[-141.00214843750004,68.77416992187506]]]]},"properties":{"name":"United States","childNum":76}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[71.20615234375006,39.892578125],[71.15625,39.88344726562502],[71.06425781250002,39.88491210937505],[71.01171874999997,39.895117187500006],[71.04365234375004,39.97631835937503],[71.04482421875005,39.992529296875034],[70.96064453125004,40.087988281250034],[71.00546875,40.15229492187498],[71.0241210937501,40.14916992187497],[71.08037109375007,40.07988281249999],[71.2287109375001,40.04814453124999],[71.20615234375006,39.892578125]]],[[[70.94677734374997,42.24868164062505],[70.97900390625003,42.26655273437504],[71.03603515625,42.28466796875],[71.12998046875006,42.25],[71.21269531250002,42.20644531250005],[71.23232421875005,42.18627929687503],[71.22851562499997,42.16289062499996],[70.18095703125007,41.571435546874994],[70.734375,41.400537109374994],[70.86044921875006,41.22490234375002],[71.11074218750005,41.152636718750045],[71.29882812500003,41.152490234374994],[71.39306640625003,41.123388671875034],[71.40839843750004,41.13603515625002],[71.42089843750003,41.341894531250034],[71.60625,41.367431640625],[71.66494140625,41.54121093749998],[71.70068359374997,41.454003906249966],[71.75771484375005,41.42802734375002],[71.79248046875003,41.41313476562499],[71.85800781250006,41.311376953125034],[71.8786132812501,41.195019531249955],[71.95849609375003,41.18706054687502],[72.05244140625004,41.16474609375001],[72.1154296875001,41.18657226562502],[72.1642578125001,41.173730468749966],[72.18095703125002,41.11845703124999],[72.18730468750002,41.02592773437499],[72.2130859375001,41.014257812500006],[72.36406250000002,41.04345703125],[72.65830078125,40.86992187499999],[73.13212890625002,40.82851562499999],[72.6041015625,40.52543945312499],[72.40205078125004,40.578076171874955],[72.3892578125,40.427392578124994],[72.13125,40.438623046874966],[71.69248046875,40.15234375],[71.30468749999997,40.28691406249996],[70.990625,40.2548828125],[70.95800781250003,40.238867187500034],[70.653125,40.201171875],[70.37158203125003,40.38413085937506],[70.75107421875006,40.721777343750006],[70.40195312500006,41.03510742187498],[69.71289062500003,40.65698242187503],[69.35722656250002,40.76738281249996],[69.20625,40.566552734374994],[69.27490234374997,40.19809570312498],[68.63066406250007,40.16708984374998],[68.9720703125,40.08994140624998],[68.80468750000003,40.05034179687499],[68.86875,39.90747070312503],[68.63896484375007,39.8388671875],[68.46328125,39.53671874999998],[67.71904296875007,39.62138671875002],[67.426171875,39.46557617187497],[67.3576171875001,39.216699218749994],[67.64833984375005,39.13105468750004],[67.69443359375006,38.99462890625003],[68.13251953125004,38.927636718749966],[68.08720703125002,38.47353515625002],[68.3502929687501,38.211035156250006],[67.81435546875005,37.48701171875004],[67.7980468750001,37.244970703125006],[67.75898437500004,37.172216796875034],[67.75292968749997,37.199804687500034],[67.7,37.227246093749955],[67.60742187499997,37.22250976562506],[67.5172851562501,37.26665039062499],[67.44169921875007,37.25800781250001],[67.3197265625,37.209570312500006],[67.1955078125001,37.23520507812498],[67.06884765624997,37.334814453125006],[66.82773437500006,37.37128906249998],[66.52226562500007,37.34848632812506],[66.51064453125,37.45869140625004],[66.51132812500006,37.59916992187496],[66.52558593750004,37.785742187500034],[66.60625,37.98671875000005],[65.97119140624997,38.244238281250006],[65.612890625,38.23857421875002],[64.3099609375,38.97729492187497],[63.76367187500003,39.16054687499999],[62.48320312500002,39.97563476562496],[61.90283203124997,41.09370117187501],[61.496972656249994,41.276074218749955],[61.2423828125001,41.18920898437503],[60.454980468749994,41.221630859374955],[60.089648437500074,41.39941406250003],[60.07558593750005,41.759667968749966],[60.20078125000006,41.803125],[59.94179687499999,41.97353515625002],[59.98515625000002,42.21171875],[59.35429687500002,42.32329101562496],[58.5890625000001,42.778466796874966],[58.477148437500006,42.66284179687503],[58.15156250000004,42.628076171874966],[58.474414062500074,42.29936523437496],[58.02890625,42.48764648437506],[57.814257812500074,42.18984375000005],[57.290625,42.123779296875],[56.96406250000004,41.856542968750006],[57.11884765625004,41.35029296874998],[57.01796875,41.26347656249996],[55.97744140625005,41.32221679687504],[55.97568359375006,44.99492187499996],[58.555273437500006,45.55537109375001],[61.007910156250006,44.39379882812497],[61.99023437500003,43.492138671874955],[63.20703125000003,43.62797851562502],[64.44316406250007,43.55117187499999],[64.9054687500001,43.714697265625006],[65.49619140625,43.310546875],[65.80302734375002,42.87695312500006],[66.1002929687501,42.99082031249998],[66.00957031250007,42.00488281250003],[66.49863281250006,41.99487304687503],[66.70966796875004,41.17915039062501],[67.9357421875001,41.19658203125002],[68.11308593750007,41.02861328124999],[68.04765625000007,40.80927734374998],[68.29189453125,40.656103515625034],[68.57265625,40.62265624999998],[68.58408203125,40.876269531250045],[69.15361328125002,41.42524414062498],[70.94677734374997,42.24868164062505]]]]},"properties":{"name":"Uzbekistan","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[-61.17451171875001,13.158105468749966],[-61.268457031249966,13.287695312499991],[-61.13896484374996,13.358740234374991],[-61.17451171875001,13.158105468749966]]]},"properties":{"name":"St. Vin. and Gren.","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-60.99790039062498,8.867333984374966],[-61.069189453125034,8.947314453125003],[-60.91582031249996,9.070312500000014],[-60.86142578124998,8.949609375000037],[-60.99790039062498,8.867333984374966]]],[[[-60.821191406249966,9.138378906250026],[-60.94140625000003,9.105566406250006],[-60.73583984374997,9.203320312500026],[-60.821191406249966,9.138378906250026]]],[[[-63.84936523437494,11.131005859374994],[-63.917626953124994,10.887548828125048],[-64.40234375,10.981591796875023],[-64.21367187500002,11.086132812499997],[-64.0283203125,11.00185546874998],[-63.84936523437494,11.131005859374994]]],[[[-60.742138671874926,5.202050781250037],[-60.71196289062499,5.191552734375023],[-60.671972656250034,5.164355468749989],[-60.603857421875006,4.94936523437498],[-61.00283203125002,4.535253906249991],[-61.28007812500002,4.516894531249974],[-61.82084960937496,4.197021484375],[-62.153125,4.098388671874986],[-62.41064453124994,4.156738281249972],[-62.71210937499998,4.01791992187502],[-62.85698242187502,3.593457031249969],[-63.33867187500002,3.943896484375045],[-64.02148437500003,3.929101562500051],[-64.19248046874995,4.126855468750009],[-64.57636718750001,4.139892578125],[-64.788671875,4.276025390625023],[-64.66899414062496,4.01181640625002],[-64.22109375000002,3.587402343749972],[-64.04658203124998,2.502392578124997],[-63.389257812500006,2.411914062500045],[-63.43251953124994,2.155566406250045],[-64.00849609374995,1.931591796874969],[-64.20502929687493,1.52949218750004],[-65.10375976562497,1.108105468749983],[-65.47338867187497,0.691259765624977],[-65.55605468750002,0.687988281250014],[-65.52299804687493,0.843408203124966],[-65.68144531249999,0.983447265624989],[-66.06005859375003,0.78535156250004],[-66.34711914062498,0.7671875],[-66.87602539062499,1.223046875000037],[-67.21083984375,2.390136718750043],[-67.61870117187496,2.793603515624994],[-67.85908203124998,2.793603515624994],[-67.3111328125,3.41586914062502],[-67.66162109375,3.864257812499986],[-67.85527343750002,4.506884765624989],[-67.82490234374995,5.270458984375026],[-67.47387695312503,5.929980468750003],[-67.48198242187499,6.18027343750002],[-67.85917968749999,6.289892578124963],[-68.47177734375,6.156542968749974],[-69.42714843749997,6.123974609374997],[-70.12919921874999,6.95361328125],[-70.73715820312503,7.090039062499997],[-71.12861328124993,6.98671875],[-72.00664062499993,7.032617187500023],[-72.20771484374995,7.37026367187498],[-72.47197265624996,7.524267578124991],[-72.39033203124995,8.287060546874969],[-72.66542968749994,8.62758789062498],[-72.79638671874997,9.10898437499999],[-73.05839843749999,9.259570312500031],[-73.36621093749997,9.194140625000017],[-73.00654296874998,9.789160156250006],[-72.86933593750001,10.49125976562496],[-72.690087890625,10.835839843749994],[-72.24848632812501,11.196435546875009],[-71.95810546875,11.66640625],[-71.31972656249997,11.861914062500048],[-71.95693359375002,11.569921874999977],[-71.835107421875,11.190332031250009],[-71.6416015625,11.013525390625048],[-71.73090820312498,10.994677734375017],[-71.59433593749995,10.657373046875051],[-72.11284179687499,9.815576171874966],[-71.61953124999994,9.047949218749991],[-71.24140625000001,9.160449218750003],[-71.08583984375002,9.348242187499977],[-71.05268554687501,9.705810546874986],[-71.49423828125,10.533203124999972],[-71.46953124999993,10.964160156250017],[-70.23251953124998,11.372998046874997],[-70.09711914062493,11.519775390624972],[-69.80478515624998,11.47421875000002],[-69.81733398437495,11.672070312499997],[-70.19257812499993,11.62460937500002],[-70.28652343749997,11.886035156249989],[-70.20278320312497,12.098388671874986],[-70.00395507812496,12.177880859375023],[-69.63159179687494,11.479931640625026],[-68.827978515625,11.431738281249977],[-68.39863281249995,11.160986328124977],[-68.29628906249997,10.689355468749994],[-68.13994140624999,10.492724609374989],[-66.24721679687497,10.632226562499994],[-65.85175781249995,10.257763671874997],[-65.12910156249998,10.070068359375043],[-64.85048828125,10.098095703124969],[-64.188330078125,10.457812499999989],[-63.73188476562501,10.503417968750043],[-64.24750976562498,10.54257812500002],[-64.298193359375,10.635156249999966],[-61.879492187500006,10.741015625000031],[-62.379980468750006,10.546875],[-62.91357421875,10.531494140624986],[-62.68583984374996,10.289794921875043],[-62.740576171875006,10.056152343750043],[-62.55034179687499,10.200439453125043],[-62.320410156250034,9.783056640625006],[-62.22114257812498,9.882568359375028],[-62.15336914062493,9.821777343749986],[-62.15532226562499,9.979248046875014],[-62.077099609374926,9.97504882812504],[-61.73593749999998,9.631201171874977],[-61.76591796874996,9.813818359374963],[-61.58886718749994,9.894531249999986],[-60.79248046874997,9.360742187500037],[-61.02314453124998,9.15458984374996],[-61.24726562499998,8.600341796875014],[-61.61870117187499,8.59746093749996],[-61.30400390624999,8.410400390625043],[-60.800976562499926,8.592138671875034],[-60.16748046875,8.616992187500031],[-60.01752929687501,8.549316406250014],[-59.83164062499998,8.305957031250003],[-59.84907226562498,8.248681640624966],[-59.96484375000003,8.191601562499969],[-59.99072265624997,8.16201171874998],[-60.032421874999926,8.053564453125006],[-60.51362304687501,7.813183593749969],[-60.71865234374994,7.535937499999974],[-60.606542968750006,7.320849609375031],[-60.63330078124997,7.211083984374966],[-60.58320312499998,7.156201171874969],[-60.523193359375,7.143701171875009],[-60.464941406250034,7.166552734375045],[-60.39238281249999,7.164550781249986],[-60.34506835937495,7.15],[-60.32548828124996,7.133984374999983],[-60.32207031249996,7.092041015625043],[-60.35209960937496,7.002880859374997],[-60.39501953125,6.945361328125003],[-60.717919921874966,6.768310546875],[-61.14560546874998,6.694531249999983],[-61.20361328124997,6.588378906250028],[-61.181591796874926,6.513378906250026],[-61.15102539062502,6.446533203124986],[-61.15229492187501,6.385107421875006],[-61.12871093749999,6.214306640625026],[-61.15947265624996,6.174414062499977],[-61.22495117187498,6.129199218750003],[-61.303125,6.049511718750026],[-61.39082031250001,5.938769531250017],[-61.376806640625006,5.906982421875028],[-61.167187499999926,5.674218750000037],[-60.95400390625002,5.437402343750023],[-60.742138671874926,5.202050781250037]]]]},"properties":{"name":"Venezuela","childNum":4}},{"geometry":{"type":"Polygon","coordinates":[[[-64.765625,17.794335937499994],[-64.58046874999994,17.750195312499983],[-64.88911132812495,17.701708984375045],[-64.765625,17.794335937499994]]]},"properties":{"name":"U.S. Virgin Is.","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[104.06396484375003,10.390820312500011],[104.01845703125,10.029199218749966],[103.84951171875005,10.371093749999986],[104.06396484375003,10.390820312500011]]],[[[107.52128906250007,20.926611328124977],[107.39921875000007,20.903466796874966],[107.55126953125003,21.034033203125006],[107.52128906250007,20.926611328124977]]],[[[107.60273437500004,21.21679687500003],[107.40351562500004,21.093652343749994],[107.47626953125004,21.268945312499994],[107.60273437500004,21.21679687500003]]],[[[107.97265624999997,21.507958984375023],[107.40996093750002,21.284814453125023],[107.35429687500007,21.055175781250057],[107.1647460937501,20.94873046875003],[106.68339843750007,21.000292968750074],[106.75341796875003,20.73505859375004],[106.55078124999997,20.52656250000001],[106.57285156250012,20.392187499999977],[105.98408203125004,19.939062500000034],[105.62177734375004,18.96630859375003],[105.88828125000006,18.502490234375045],[106.49902343749997,17.946435546874994],[106.47890625000005,17.719580078125063],[106.3705078125,17.746875],[107.83378906250002,16.322460937499983],[108.02939453125012,16.331103515625074],[108.82128906249997,15.377929687500028],[109.30332031250012,13.856445312500043],[109.271875,13.279345703124974],[109.42392578125006,12.955957031249994],[109.44492187500006,12.599609375000057],[109.33554687500012,12.751904296874997],[109.21894531250004,12.64580078124996],[109.30468750000003,12.391162109375045],[109.20683593750007,12.415380859375006],[109.1986328125,11.724853515625014],[109.03964843750012,11.592675781249994],[108.98671875,11.336376953124997],[108.09492187500004,10.897265624999989],[108.0013671875,10.720361328125009],[107.26152343750007,10.39838867187504],[107.00664062500002,10.66054687499998],[106.94746093750004,10.400341796874997],[106.72734375000007,10.535644531250028],[106.605859375,10.46494140625002],[106.74121093750003,10.444384765625003],[106.75742187500006,10.295800781250023],[106.46406250000004,10.298291015624997],[106.78525390625012,10.116455078124986],[106.59560546875005,9.859863281250028],[106.1364257812501,10.221679687500014],[106.56435546875005,9.715625],[106.48408203125004,9.559423828125006],[105.83095703125005,10.000732421875028],[106.15859375,9.59414062499998],[106.16835937500005,9.396728515625],[105.50097656249997,9.093212890624983],[105.11435546875006,8.629199218750031],[104.77041015625,8.59765625],[104.89628906250007,8.746630859374974],[104.81855468750004,8.801855468750034],[104.84521484375003,9.606152343750026],[105.08447265625003,9.99570312499999],[104.8019531250001,10.202734374999977],[104.66347656250005,10.169921875000043],[104.42636718750006,10.411230468749991],[104.85058593749997,10.534472656249974],[105.04638671874997,10.701660156250014],[105.04570312500002,10.911376953125014],[105.3146484375001,10.845166015625026],[105.40576171875003,10.95161132812504],[105.75507812500004,10.989990234375043],[105.85332031250007,10.86357421874996],[106.16396484375005,10.794921875],[106.16093750000002,11.037109375000057],[105.85605468750006,11.294287109375048],[105.85146484375005,11.635009765625],[106.0060546875001,11.758007812500011],[106.39921875000007,11.687011718750028],[106.41386718750002,11.9484375],[106.70009765625,11.979296874999974],[107.21210937500004,12.30400390624996],[107.39335937500002,12.260498046874972],[107.50644531250006,12.364550781250031],[107.47539062500002,13.030371093749963],[107.60546874999997,13.437792968750017],[107.3314453125,14.126611328125009],[107.51943359375005,14.705078125],[107.51376953125012,14.817382812500057],[107.52451171875012,14.871826171875043],[107.50468750000007,14.915917968749966],[107.48037109375,14.979882812500037],[107.55527343750006,15.057031250000023],[107.58964843750002,15.118457031250017],[107.63369140625005,15.18984375],[107.653125,15.255224609374991],[107.62167968750006,15.309863281250017],[107.56425781250002,15.391601562499972],[107.45957031250012,15.4658203125],[107.33876953125,15.560498046875011],[107.27939453125006,15.618701171875045],[107.16591796875005,15.802490234375028],[107.1888671875,15.838623046875],[107.36064453125002,15.921728515624977],[107.3919921875,15.951660156250028],[107.39638671875,16.04301757812499],[106.93066406249997,16.353125],[106.8927734375001,16.396533203125074],[106.85107421875003,16.515625],[106.83242187500005,16.526269531250023],[106.79160156250006,16.490332031250006],[106.73955078125007,16.452539062500023],[106.6564453125001,16.49262695312501],[106.54619140625002,16.650732421874977],[106.53369140625003,16.821044921875057],[106.52597656250006,16.876611328124994],[106.50224609375002,16.95410156249997],[106.26953125000003,17.21679687500003],[106.00625,17.415283203125057],[105.69140625000003,17.737841796875045],[105.58847656250012,17.983691406250045],[105.51855468749997,18.077441406250045],[105.45820312500004,18.15429687499997],[105.11455078125002,18.40527343750003],[105.08701171875006,18.496240234374994],[105.14541015625,18.616796875000063],[105.14648437500003,18.650976562500006],[103.89160156250003,19.304980468750017],[103.89638671875,19.339990234375023],[103.93203125,19.366064453125006],[104.0275390625001,19.42045898437499],[104.062890625,19.48256835937505],[104.05156250000007,19.564160156249955],[104.01347656250007,19.64648437500003],[104.03203125000002,19.675146484375006],[104.06279296875007,19.678417968749983],[104.25986328125006,19.685498046874983],[104.5462890625,19.61054687500001],[104.58789062500003,19.61875],[104.74316406250003,19.754736328124977],[104.80175781249997,19.83613281250004],[104.81513671875004,19.90400390625001],[104.9279296875001,20.01811523437499],[104.92919921875003,20.082812500000017],[104.88867187500003,20.169091796875023],[104.84785156250004,20.202441406250045],[104.69873046875003,20.20532226562503],[104.67695312500004,20.224707031249977],[104.66191406250007,20.28901367187501],[104.65644531250004,20.32851562499999],[104.6188476562501,20.37451171875003],[104.49619140625006,20.413671875],[104.39218750000012,20.424755859374955],[104.36777343750012,20.44140624999997],[104.40781250000012,20.48574218750005],[104.47861328125006,20.529589843750017],[104.53271484374997,20.55488281250001],[104.58320312500004,20.646679687499955],[104.34960937499997,20.821093750000074],[104.19531249999997,20.913964843749966],[104.10136718750002,20.94550781250001],[103.63505859375007,20.697070312500017],[103.46357421875004,20.779833984375017],[103.21074218750002,20.840625],[103.10449218749997,20.891650390625045],[102.88378906250003,21.202587890624983],[102.85117187500006,21.26591796874999],[102.94960937500005,21.681347656249983],[102.84521484374997,21.73476562500005],[102.81591796874997,21.807373046875],[102.7982421875,21.797949218750034],[102.77109375000006,21.709667968749983],[102.73857421875002,21.67792968750001],[102.66201171875005,21.67602539062497],[102.58251953125003,21.90429687500003],[102.12744140624997,22.379199218750045],[102.1759765625001,22.414648437500006],[102.2370117187501,22.466015624999983],[102.40644531250004,22.70800781249997],[102.47089843750004,22.75092773437501],[102.98193359374997,22.4482421875],[103.32666015625003,22.769775390625057],[103.49296875000007,22.587988281250034],[103.62021484375006,22.782031250000045],[103.94150390625006,22.540087890625045],[104.14306640624997,22.800146484375006],[104.37177734375004,22.704052734374983],[104.68730468750002,22.822216796874983],[104.86474609375003,23.136376953125023],[105.27539062500003,23.34521484375003],[105.8429687500001,22.922802734374955],[106.14843749999997,22.970068359375006],[106.2790039062501,22.857470703125045],[106.54179687500007,22.908349609375023],[106.78027343749997,22.778906250000034],[106.55039062500006,22.501367187499994],[106.66357421875003,21.97890625000005],[106.97099609375002,21.923925781250034],[107.35117187500012,21.60888671874997],[107.75927734374997,21.655029296875057],[107.97265624999997,21.507958984375023]]]]},"properties":{"name":"Vietnam","childNum":4}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[169.49130859375006,-19.54013671875002],[169.34726562500006,-19.623535156249957],[169.2174804687501,-19.476367187500003],[169.24746093750005,-19.3447265625],[169.49130859375006,-19.54013671875002]]],[[[169.334375,-18.940234375000017],[168.98691406250006,-18.87128906250001],[169.01582031250004,-18.64375],[169.14384765625002,-18.63105468750001],[169.334375,-18.940234375000017]]],[[[168.44580078124997,-17.54218750000004],[168.58496093750003,-17.695898437500006],[168.52460937500004,-17.798046875000026],[168.15820312500003,-17.710546874999963],[168.2731445312501,-17.552246093749957],[168.44580078124997,-17.54218750000004]]],[[[168.44677734375003,-16.778808593749957],[168.18144531250002,-16.804003906250017],[168.13535156250006,-16.636914062499997],[168.44677734375003,-16.778808593749957]]],[[[168.29667968750007,-16.33652343749999],[167.92900390625002,-16.22871093749997],[168.16386718750002,-16.081640625000034],[168.29667968750007,-16.33652343749999]]],[[[167.4125,-16.095898437499997],[167.83662109375004,-16.449707031249957],[167.44931640625012,-16.554980468750003],[167.34921875000006,-16.15449218750004],[167.15146484375006,-16.080468749999966],[167.19951171875002,-15.885058593750031],[167.33574218750007,-15.916699218749997],[167.4125,-16.095898437499997]]],[[[167.9113281250001,-15.435937500000023],[167.67421875,-15.4515625],[168.00253906250012,-15.283203124999986],[167.9113281250001,-15.435937500000023]]],[[[166.74580078125004,-14.826855468750011],[166.81015625000012,-15.15742187500004],[167.0755859375,-14.935644531249977],[167.20078125000012,-15.443066406249969],[167.0939453125001,-15.580859374999974],[166.75830078125003,-15.631152343750003],[166.63105468750004,-15.406054687499974],[166.56738281250003,-14.641796874999969],[166.74580078125004,-14.826855468750011]]],[[[167.58486328125,-14.260937500000011],[167.43027343750012,-14.294921875],[167.41074218750006,-14.19746093750004],[167.50644531250012,-14.142187499999977],[167.58486328125,-14.260937500000011]]],[[[167.48886718750006,-13.907226562499972],[167.3917968750001,-13.788378906250017],[167.48105468750006,-13.709472656250014],[167.48886718750006,-13.907226562499972]]]]},"properties":{"name":"Vanuatu","childNum":10}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-171.4541015625,-14.04648437500002],[-171.9119140625,-14.001660156250026],[-172.04589843750003,-13.857128906249983],[-171.60390624999997,-13.879199218750045],[-171.4541015625,-14.04648437500002]]],[[[-172.33349609375,-13.46523437499999],[-172.17685546874998,-13.68466796875002],[-172.224951171875,-13.804296874999963],[-172.535693359375,-13.791699218749983],[-172.77851562499998,-13.516796875000011],[-172.33349609375,-13.46523437499999]]]]},"properties":{"name":"Samoa","childNum":2}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[53.76318359374997,12.636816406249991],[54.18740234375005,12.664013671875026],[54.511132812499994,12.552783203125017],[54.12949218750006,12.360644531250045],[53.71884765625006,12.318994140624994],[53.31582031250005,12.533154296875011],[53.53496093750002,12.715771484374997],[53.76318359374997,12.636816406249991]]],[[[42.75585937500003,13.70429687500004],[42.689746093750074,13.673632812500017],[42.7941406250001,13.766113281250028],[42.75585937500003,13.70429687500004]]],[[[42.787402343750074,13.971484375000031],[42.69404296875004,14.007910156249991],[42.76210937500005,14.067480468750048],[42.787402343750074,13.971484375000031]]],[[[53.08564453125004,16.648388671874955],[52.327734375,16.293554687500063],[52.17402343750004,15.956835937500017],[52.2174804687501,15.655517578125],[51.3224609375001,15.22626953125004],[49.34990234375002,14.637792968749977],[48.66835937499999,14.050146484374977],[47.9899414062501,14.048095703125],[47.40771484374997,13.661621093750057],[46.78886718750002,13.465576171874986],[45.65732421875006,13.338720703124991],[45.03867187500006,12.815869140624969],[44.617773437500006,12.817236328124977],[44.00585937499997,12.607666015625],[43.634375,12.744482421874991],[43.487597656250074,12.69882812500002],[43.23193359375003,13.267089843750057],[43.2824218750001,13.692529296875037],[43.08906250000004,14.010986328125],[42.93642578125005,14.938574218749963],[42.85566406250004,15.132958984375037],[42.65781250000006,15.232812500000051],[42.79902343750004,15.326269531249991],[42.71718750000005,15.654638671875006],[42.83964843750002,16.032031250000074],[42.79931640624997,16.37177734375001],[43.16503906249997,16.689404296874955],[43.19091796875003,17.359375],[43.41796875000003,17.516259765625023],[43.91699218749997,17.32470703124997],[45.14804687500006,17.427441406249955],[45.5353515625001,17.30205078124999],[46.72763671875006,17.26557617187501],[46.97568359375006,16.953466796875034],[47.14355468749997,16.946679687499966],[47.44179687499999,17.111865234375045],[47.57958984374997,17.448339843750034],[48.17216796875002,18.156933593749983],[49.04199218750003,18.58178710937503],[51.977636718750006,18.996142578125074],[53.08564453125004,16.648388671874955]]]]},"properties":{"name":"Yemen","childNum":4}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[37.85693359375003,-46.94423828124998],[37.5900390625001,-46.90800781250006],[37.78955078124997,-46.8375],[37.85693359375003,-46.94423828124998]]],[[[31.799609375000017,-23.8921875],[31.98583984374997,-24.460644531249983],[31.921679687500017,-25.96875],[31.335156250000097,-25.755566406249997],[31.207324218750074,-25.843359375000034],[31.08808593750004,-25.980664062500026],[30.803320312500006,-26.41347656250001],[30.806738281250006,-26.78525390624999],[30.88330078124997,-26.792382812500023],[30.938085937500006,-26.91582031250003],[31.06337890625005,-27.1123046875],[31.274023437500063,-27.23837890625002],[31.469531250000017,-27.29550781250002],[31.74257812500005,-27.309960937500037],[31.95839843750005,-27.305859375],[31.946093750000017,-27.173632812499974],[31.96718750000005,-26.96064453125001],[31.994726562500006,-26.817480468749977],[32.024804687499994,-26.81113281250002],[32.112890625,-26.83945312500002],[32.19960937499999,-26.833496093749957],[32.35351562499997,-26.861621093750003],[32.7765625000001,-26.850976562499966],[32.88613281250005,-26.849316406249983],[32.53476562500006,-28.19970703125003],[32.285742187500006,-28.62148437499998],[31.335156250000097,-29.378125],[29.97119140625003,-31.322070312500017],[28.449414062500068,-32.62460937499999],[27.077441406250074,-33.52119140625004],[26.429492187500045,-33.75957031250002],[25.80585937500001,-33.737109374999974],[25.574218750000057,-34.03535156249998],[25.00292968750003,-33.97363281250003],[24.8271484375,-34.16894531250003],[24.595507812500074,-34.17451171875],[23.697851562500063,-33.99277343750002],[23.268164062500006,-34.08115234374999],[22.553808593750063,-34.01005859374999],[22.24550781250005,-34.06914062500003],[21.788964843750023,-34.37265624999996],[20.529882812500034,-34.4630859375],[20.020605468750006,-34.785742187500006],[19.298242187500023,-34.61503906249996],[19.330761718750068,-34.49238281250001],[19.098339843750068,-34.350097656249986],[18.831347656250017,-34.36406249999999],[18.75214843750004,-34.08261718750002],[18.50039062499999,-34.10927734375004],[18.46162109375001,-34.346875],[18.35205078124997,-34.1884765625],[18.43300781250005,-33.71728515625003],[17.851074218750057,-32.82744140625002],[17.96523437500005,-32.70859374999996],[18.125,-32.74912109374996],[18.325292968750034,-32.50498046874996],[18.21083984375008,-31.74248046874996],[17.34707031250005,-30.44482421875],[16.95,-29.40341796875002],[16.739453124999983,-29.009375],[16.447558593750045,-28.61757812499998],[16.755761718750023,-28.45214843750003],[16.7875,-28.39472656249997],[16.81015625,-28.264550781249994],[16.841210937500023,-28.21894531250004],[16.875292968750045,-28.12792968749997],[16.93330078125004,-28.06962890624999],[17.05625,-28.03105468750003],[17.1884765625,-28.13251953125001],[17.358691406250017,-28.269433593750023],[17.44794921875001,-28.698144531249966],[18.310839843750017,-28.88623046875],[19.16171875,-28.93876953124996],[19.245800781250068,-28.90166015625003],[19.31269531250004,-28.733300781250023],[19.539843750000017,-28.574609375000023],[19.98046875,-28.45126953125002],[19.98046875,-28.310351562500003],[19.98046875,-24.77675781249998],[20.430664062500057,-25.14707031250002],[20.79316406250001,-25.915625],[20.641406250000017,-26.7421875],[20.739843749999977,-26.84882812499997],[21.694726562500023,-26.840917968749963],[21.738085937500045,-26.806835937500026],[21.788281250000068,-26.710058593750034],[22.01093750000004,-26.635839843750006],[22.090917968749977,-26.580175781250034],[22.217578125000045,-26.38886718749997],[22.47089843750004,-26.219042968750003],[22.548632812500074,-26.178417968749997],[22.59765625000003,-26.13271484375001],[22.878808593750023,-25.457910156250023],[23.148730468750017,-25.288671875],[23.389257812500006,-25.291406250000023],[23.89375,-25.600878906250017],[23.96953124999999,-25.62607421874999],[24.192968750000034,-25.632910156249963],[24.33056640625,-25.742871093749983],[25.21337890625,-25.75625],[25.518164062500006,-25.66279296875001],[25.91210937499997,-24.747460937499966],[26.031835937500034,-24.70244140625003],[26.130859375000057,-24.671484375000034],[26.39716796875004,-24.61357421874996],[26.451757812500063,-24.582714843749983],[26.835058593750063,-24.240820312499963],[27.085546875000034,-23.577929687500003],[27.7685546875,-23.14892578125],[27.812597656250006,-23.108007812500006],[28.210156249999983,-22.693652343749974],[28.83984375000003,-22.480859374999966],[28.94580078125003,-22.39511718749999],[29.013476562500045,-22.27841796875002],[29.129882812500057,-22.21328125],[29.364843750000063,-22.19394531250005],[29.37744140625003,-22.19277343749998],[29.66308593749997,-22.146289062500017],[29.90234375000003,-22.184179687500006],[30.19042968750003,-22.291113281250034],[30.460156250000097,-22.329003906250023],[30.71162109375004,-22.297851562499986],[31.07343750000004,-22.30781249999997],[31.19726562499997,-22.344921874999983],[31.287890625000074,-22.402050781249983],[31.54560546875004,-23.48232421874998],[31.799609375000017,-23.8921875]],[[27.19355468750001,-29.94130859375001],[27.364062500000017,-30.27919921875001],[27.753125,-30.6],[28.05683593750001,-30.63105468750001],[28.128710937500017,-30.52509765625001],[28.39208984375003,-30.14755859375002],[28.646875,-30.1265625],[29.09804687500005,-29.919042968750006],[29.142187500000063,-29.70097656249999],[29.293554687500006,-29.56689453125003],[29.348828125000097,-29.441992187499977],[29.38671874999997,-29.319726562500023],[29.301367187500006,-29.08984375],[28.625781250000017,-28.581738281250054],[28.583398437499994,-28.59414062499999],[28.471875,-28.615820312499977],[28.23261718750004,-28.701269531249977],[28.084375,-28.779980468750026],[27.95986328125008,-28.87333984375003],[27.73554687500004,-28.940039062500034],[27.294531250000063,-29.519335937500017],[27.056933593750074,-29.62558593749999],[27.19355468750001,-29.94130859375001]]]]},"properties":{"name":"South Africa","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[33.148046875,-9.603515625],[33.25,-9.759570312500003],[33.35097656250002,-9.862207031250009],[33.33710937500001,-9.954003906250009],[33.3115234375,-10.037988281250009],[33.52890625,-10.234667968750003],[33.53759765625,-10.3515625],[33.5537109375,-10.391308593750011],[33.66152343750002,-10.553125],[33.29277343750002,-10.85234375],[33.37978515625002,-11.157910156250011],[33.26835937500002,-11.40390625],[33.23271484375002,-11.417675781250011],[33.22636718750002,-11.534863281250011],[33.30390625000001,-11.690820312500009],[33.25234375000002,-12.112597656250003],[33.34013671875002,-12.308300781250011],[33.512304687500006,-12.347753906250006],[32.975195312500006,-12.701367187500011],[32.96757812500002,-13.225],[32.67041015625,-13.590429687500006],[32.797460937500006,-13.6884765625],[32.98125,-14.009375],[33.148046875,-13.94091796875],[33.201757812500006,-14.013378906250011],[30.231835937500023,-14.990332031250006],[30.39609375,-15.64306640625],[29.4873046875,-15.69677734375],[28.9130859375,-15.98779296875],[28.760546875000017,-16.53212890625001],[27.932226562500006,-16.89619140625001],[27.020800781250017,-17.95839843750001],[26.779882812500006,-18.04150390625],[26.333398437500023,-17.929296875],[25.995898437500017,-17.969824218750006],[25.2587890625,-17.793554687500006],[25.001757812500017,-17.56855468750001],[24.73291015625,-17.51777343750001],[24.27490234375,-17.481054687500006],[23.380664062500017,-17.640625],[22.193945312500006,-16.628125],[21.979785156250017,-15.95556640625],[21.979394531250023,-14.440527343750006],[21.979296875000017,-14.11962890625],[21.979101562500006,-13.798730468750009],[21.978906250000023,-13.0009765625],[22.209570312500006,-13.0009765625],[23.843164062500023,-13.0009765625],[23.962988281250006,-12.988476562500011],[23.882421875,-12.799023437500011],[23.886523437500017,-12.743261718750006],[23.909375,-12.636132812500009],[23.98388671875,-11.725],[23.96650390625001,-10.871777343750011],[24.36572265625,-11.1298828125],[24.3779296875,-11.417089843750006],[25.28876953125001,-11.21240234375],[25.349414062500017,-11.623046875],[26.025976562500006,-11.89013671875],[26.824023437500017,-11.965234375],[27.1591796875,-11.579199218750006],[27.573828125,-12.22705078125],[28.412890625000017,-12.51806640625],[28.550878906250006,-12.836132812500011],[28.730078125,-12.925488281250011],[29.014257812500006,-13.368847656250011],[29.20185546875001,-13.398339843750009],[29.55419921875,-13.248925781250009],[29.775195312500017,-13.438085937500006],[29.79511718750001,-12.155468750000011],[29.508203125000023,-12.228222656250011],[29.48554687500001,-12.41845703125],[29.064355468750023,-12.348828125000011],[28.482519531250006,-11.812109375],[28.383398437500006,-11.566699218750003],[28.6455078125,-10.550195312500009],[28.60419921875001,-9.678808593750006],[28.400683593750017,-9.224804687500011],[28.869531250000023,-8.785839843750011],[28.89814453125001,-8.485449218750006],[30.75117187500001,-8.193652343750003],[30.830664062500006,-8.385546875],[30.891992187500023,-8.473730468750006],[30.968359375,-8.550976562500011],[31.07636718750001,-8.611914062500006],[31.3505859375,-8.60703125],[31.44921875,-8.65390625],[31.53486328125001,-8.71328125],[31.55625,-8.80546875],[31.673632812500017,-8.908789062500006],[31.91865234375001,-8.9421875],[31.921875,-9.019433593750009],[31.94257812500001,-9.054003906250003],[32.75664062500002,-9.322265625],[32.919921875,-9.407421875000011],[32.99599609375002,-9.622851562500003],[33.148046875,-9.603515625]]]},"properties":{"name":"Zambia","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[31.287890625000017,-22.40205078125001],[31.07343750000001,-22.30781250000001],[30.71162109375001,-22.2978515625],[30.46015625000001,-22.32900390625001],[30.1904296875,-22.291113281250006],[29.90234375,-22.184179687500006],[29.6630859375,-22.146289062500003],[29.37744140625,-22.19277343750001],[29.36484375,-22.193945312500006],[29.315234375000017,-22.15771484375],[29.237207031250023,-22.07949218750001],[29.042382812500023,-22.018359375],[29.02558593750001,-21.796875],[28.014062500000023,-21.55419921875],[27.66943359375,-21.064257812500003],[27.679296875,-20.503027343750006],[27.28076171875,-20.47871093750001],[27.17822265625,-20.10097656250001],[26.168066406250006,-19.53828125000001],[25.939355468750023,-18.93867187500001],[25.242285156250006,-17.969042968750003],[25.2587890625,-17.793554687500006],[25.995898437500017,-17.969824218750006],[26.333398437500023,-17.929296875],[26.779882812500006,-18.04150390625],[27.020800781250017,-17.95839843750001],[27.932226562500006,-16.89619140625001],[28.760546875000017,-16.53212890625001],[28.9130859375,-15.98779296875],[29.4873046875,-15.69677734375],[30.39609375,-15.64306640625],[30.437792968750017,-15.995312500000011],[31.236230468750023,-16.02363281250001],[31.939843750000023,-16.428808593750006],[32.94804687500002,-16.71230468750001],[32.87626953125002,-16.88359375],[32.99306640625002,-18.35957031250001],[32.69970703125,-18.94091796875],[32.84980468750001,-19.10439453125001],[32.77763671875002,-19.388769531250006],[32.992773437500006,-19.98486328125],[32.49238281250001,-20.659765625],[32.353613281250006,-21.136523437500003],[32.429785156250006,-21.29707031250001],[31.429492187500017,-22.298828125],[31.287890625000017,-22.40205078125001]]]},"properties":{"name":"Zimbabwe","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[74.00809389139292,33.25375789331485],[73.19660141888893,33.898124784580936],[73.13410859949555,34.82510160558277],[72.31128647748268,35.77290936638241],[73.08203125000107,36.43949943991182],[73.08961802927895,36.86435907947333],[73.116796875,36.868554687499994],[74.03886718750002,36.825732421874996],[74.54140625000002,37.02216796875],[74.69218750000002,37.0357421875],[74.8892578125,36.952441406249996],[74.94912109375002,36.968359375],[75.05390625000001,36.987158203125],[75.14521484375001,36.9732421875],[75.3466796875,36.913476562499994],[75.37685546875002,36.883691406249994],[75.42421875000002,36.738232421875],[75.46025390625002,36.725048828125],[75.57373046875,36.759326171874996],[75.66718750000001,36.741992187499996],[75.77216796875001,36.694921875],[75.84023437500002,36.649707031249996],[75.88496093750001,36.600732421874994],[75.93300781250002,36.52158203125],[75.95185546875001,36.45810546875],[75.97441406250002,36.382421875],[75.91230468750001,36.048974609374994],[76.07089843750003,35.9830078125],[76.14785156250002,35.829003906249994],[76.17783203125003,35.810546875],[76.25166015625001,35.8109375],[76.3857421875,35.837158203125],[76.50205078125003,35.878222656249996],[76.55126953125,35.887060546875],[76.5634765625,35.772998046874996],[76.6318359375,35.729394531249994],[76.7275390625,35.678662109375],[76.76689453124999,35.66171875],[76.81279296874999,35.571826171874996],[76.88222656250002,35.4357421875],[76.927734375,35.346630859375],[77.04863281249999,35.109912109374996],[77.00087890625002,34.991992187499996],[76.78291015625001,34.900195312499996],[76.75751953125001,34.877832031249994],[76.7490234375,34.847558593749994],[76.6962890625,34.786914062499996],[76.59443359375001,34.73583984375],[76.45673828125001,34.756103515625],[76.17246093750003,34.667724609375],[76.041015625,34.669921875],[75.93828125000002,34.612548828125],[75.86210937500002,34.56025390625],[75.70917968750001,34.503076171874994],[74.300390625,34.765380859375],[74.17197265625,34.7208984375],[74.05585937500001,34.6806640625],[73.96123046875002,34.653466796874994],[73.79453125,34.378222656249996],[73.80996093750002,34.325341796874994],[73.92460937500002,34.287841796875],[73.97236328125001,34.236621093749996],[73.9794921875,34.191308593749994],[73.90390625,34.1080078125],[73.94990234375001,34.018798828125],[74.24648437500002,33.990185546875],[73.97646484375002,33.7212890625],[74.15,33.506982421874994],[74.00809389139292,33.25375789331485]]]},"properties":{"name":"","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[78.49194250885338,32.53122786149202],[78.10154031239509,32.87658365066666],[77.71342088235082,32.6917648744551],[77.06655516561037,33.301666835953235],[76.62299010270264,33.32014871357439],[76.32728006076415,32.87658365066666],[75.73585997688717,32.78417426256088],[75.62496871116024,32.28516356678968],[75.32221348233018,32.28516356678968],[74.98730468749997,32.46220703124996],[74.78886718750013,32.4578125],[74.6857421875001,32.493798828124994],[74.66328125000004,32.75766601562495],[74.63242187499995,32.770898437500136],[74.58828125000011,32.7532226562501],[74.35458984375012,32.76870117187505],[74.30546875000007,32.81044921875002],[74.30361328125005,32.991796875000034],[73.98984375000006,33.22119140625006],[74.15,33.506982421874994],[73.97646484375016,33.72128906249998],[74.24648437500011,33.99018554687504],[73.9499023437501,34.018798828125],[73.90390625000012,34.10800781250006],[73.97949218750009,34.191308593749966],[73.97236328125004,34.23662109374996],[73.92460937500007,34.287841796875114],[73.80996093750016,34.32534179687511],[73.79453125000006,34.378222656250045],[73.96123046875007,34.653466796874994],[74.05585937500015,34.68066406250003],[74.17197265624995,34.72089843750004],[74.30039062500006,34.76538085937506],[75.70917968750004,34.50307617187508],[75.86210937500002,34.56025390625001],[75.93828125000019,34.612548828125],[76.04101562500014,34.66992187499997],[76.17246093750006,34.66772460937506],[76.4567382812501,34.756103515625114],[76.5944335937501,34.73583984375006],[76.69628906249997,34.78691406249999],[76.74902343750014,34.84755859375008],[76.7575195312501,34.87783203125005],[76.7829101562501,34.90019531249999],[77.00087890625011,34.99199218750002],[77.03066406250011,35.06235351562498],[77.04863281250007,35.109912109375074],[77.42343749999995,35.30258789062506],[77.57158203125002,35.37875976562495],[77.69697265625015,35.443261718750136],[77.79941406250006,35.49589843750002],[78.0426757812501,35.4797851562501],[78.07578125000006,35.13491210937502],[78.15849609375002,34.94648437499998],[78.32695312500007,34.60639648437498],[78.86484375000006,34.39033203125001],[78.93642578125,34.35195312500002],[78.97060546875011,34.22822265625004],[78.72666015625006,34.013378906249955],[78.78378906250006,33.80878906250004],[78.86503906250002,33.43110351562501],[78.94843750000004,33.346533203125006],[79.1125,33.22626953125001],[79.13515625000005,33.17192382812496],[79.10283203125007,33.05253906249996],[79.14550781250003,33.00146484375006],[79.16992187500003,32.497216796874994],[78.91894531249997,32.3582031250001],[78.75351562500012,32.49926757812506],[78.73671875,32.55839843750002],[78.49194250885338,32.53122786149202]]]]},"properties":{"name":"","childNum":1}}]}');Q.registerMap("world",oe);const re=n=>{const{areaStyleColors:i,dataLoaded:o,hasData:r,highlight:s,type:a,option:l,series:c,onChange:u,zoomStart:h,zoomEnd:d,title:p,seriesConfig:g=[],noDataComponent:m=null,zoomColors:f}=n,[y,b]=(0,e.useState)(null),v=(0,e.useRef)(null),w=()=>{y&&y.resize()},A={defaultOpts:(0,X.fromJS)({title:{show:!0,text:p,left:0},color:[],toolbox:{right:"0",orient:"horizontal",itemSize:15,showTitle:!0,feature:null},dataZoom:[{show:!0,start:0,end:100,orient:"horizontal",dataBackground:{lineStyle:{color:(null==f?void 0:f.lineStyle)||"#368493"},areaStyle:{color:(null==f?void 0:f.areaStyle)||"#368493"}},handleStyle:{color:(null==f?void 0:f.handleStyle)||"#368493"},textStyle:{color:(null==f?void 0:f.textStyle)||"#368493"},borderColor:"transparent",fillerColor:(null==f?void 0:f.fillerColor)||"rgba(54, 132, 147, 0.1)"}],legend:{show:!1},tooltip:{trigger:"axis",axisPointer:{type:"cross"}},grid:{left:"1%",right:"1%",bottom:"50px",top:"40px",containLabel:!0},xAxis:{boundaryGap:!1,type:"category",splitLine:{show:!0,lineStyle:{type:"dotted",color:"#F0F0F0"}},axisLine:{show:!1},axisTick:{show:!1},data:[]},yAxis:{min:"dataMin",boundaryGap:!0,axisPointer:{show:!0},splitLine:{lineStyle:{type:"dotted",color:"#F0F0F0"},show:!0},axisLabel:{show:!0},axisLine:{show:!0},axisTick:{show:!1},type:"value"},textStyle:{color:"#5a5a68"},series:[],animationEasing:"elasticOut"}),seriesDefault:(0,X.fromJS)({data:[],type:"line",areaStyle:{opacity:1,color:i?new Q.graphic.LinearGradient(0,0,1,1,i.map(((e,t)=>({offset:t,color:e})))):[]},smooth:!1,symbolSize:7,name:""})},k={defaultOpts:(0,X.fromJS)({tooltip:{trigger:"axis",formatter:"{b}: {c} ({d}%)"},legend:{orient:"horizontal",x:"left",y:"top",data:[]},color:[],series:[]}),seriesDefault:(0,X.fromJS)({type:"pie",center:["50%","55%"],radius:["50%","75%"],avoidLabelOverlap:!1,animationType:"scale",animationEasing:"elasticOut",labelLine:{normal:{show:!0,smooth:.2,length:6,length2:6}},data:[]})},x={defaultOpts:(0,X.fromJS)({series:[]}),seriesDefault:(0,X.fromJS)({type:"map",data:[]})};(0,e.useEffect)((()=>(window.addEventListener("resize",w),()=>{window.removeEventListener("resize",w)})),[y]),(0,e.useEffect)((()=>{if(null==v?void 0:v.current)return b(Q.init(v.current)),()=>{y&&y.dispose()}}),[v.current]);const S=e=>{u&&u(e)};(0,e.useEffect)((()=>{let e;return y&&(e=Z(S,500),y.on("dataZoom",e),y.on("restore",e),y.on("click",e),y.on("mousemove",(e=>{e.data&&y.getZr().setCursorStyle("pointer")}))),()=>{y&&(y.off("dataZoom",e),y.off("restore",e),y.off("click",e))}}),[y,u]);const $=C(y),E=C(l),O=C(a),T=C(c);(0,e.useEffect)((()=>{var e,t,n,i,o,r;!y||(null==(t=null==(e=(0,X.fromJS)($))?void 0:e.equals)?void 0:t.call(e,(0,X.fromJS)(y)))&&(null==(i=null==(n=(0,X.fromJS)(E))?void 0:n.equals)?void 0:i.call(n,(0,X.fromJS)(l)))&&O===a&&(null==(r=(o=(0,X.fromJS)(T)).equals)?void 0:r.call(o,(0,X.fromJS)(c)))||(y.clear(),y.setOption(((e,t,n)=>{let i={};switch(e){case"pie":i=k.defaultOpts.mergeDeep((0,X.fromJS)(t)).toJS(),n.forEach((e=>{i.series.push(k.seriesDefault.mergeDeep((0,X.fromJS)(e)).toJS())}));break;case"geo":i=x.defaultOpts.mergeDeep((0,X.fromJS)(t)).toJS(),n.forEach((e=>{i.series.push(x.seriesDefault.mergeDeep((0,X.fromJS)(e)).toJS())}));break;default:i=A.defaultOpts.mergeDeep((0,X.fromJS)(t)).toJS(),Array.isArray(t.yAxis)&&(i.yAxis=t.yAxis),n.forEach(((e,t)=>{const n=Object.assign({},A.seriesDefault.toJS(),g[t],e);i.series.push(n)}))}return i})(a,l,c)),y.dispatchAction({type:"takeGlobalCursor",key:"dataZoomSelect",dataZoomSelectActive:!0}))}),[y,l,c,a]),(0,e.useEffect)((()=>{y&&s&&(y.dispatchAction({type:"highlight",seriesIndex:s.seriesIndex,dataIndex:s.dataIndex}),y.dispatchAction({type:"showTip",seriesIndex:s.seriesIndex,dataIndex:s.dataIndex}))}),[s]);const _=C(h),R=C(d);(0,e.useEffect)((()=>{!y||-1===h||-1===d||_===h&&R===d||y.dispatchAction({type:"dataZoom",startValue:h,endValue:d})}),[h,d]);const M=()=>!o||!1!==r&&!0!==r||r;return t().createElement("div",{className:"tyk-chart__wrapper"},o?null:t().createElement(te,null),t().createElement("div",{className:(()=>{const e=["tyk-chart"];return o||e.push("tyk-chart--loading-chart"),M()||e.push("tyk-chart--no-data"),e.join(" ")})(),style:(()=>{const{style:e}=n,t=e||{};return t.height||(t.height="300px"),t.width||(t.width="100%"),t})(),ref:v}),M()?null:m?m():t().createElement(ie,{theme:"info"},"No data to display"))};re.propTypes={areaStyleColors:r().instanceOf(Array),dataLoaded:r().bool,hasData:r().bool,highlight:r().oneOfType([r().number,r().string,r().instanceOf(Array)]),noDataComponent:r().func,zoomStart:r().number,zoomEnd:r().number,zoomColors:r().instanceOf(Object),option:r().instanceOf(Object),onChange:r().func,style:r().instanceOf(Object),type:r().string,title:r().string,series:r().instanceOf(Array),seriesConfig:r().instanceOf(Object)};const se=(0,e.memo)(re);var ae=n(745);const le=e=>{const{children:n,options:i,onClose:o,index:r}=e,s=Object.assign({theme:"success",delay:3e3},i),a=e=>{o(e),clearTimeout(void 0)};return k((()=>a(r)),s.delay),t().createElement(ie,{className:"tyk-toast__message",theme:s.theme,onClose:()=>a(r)},n)};le.propTypes={children:r().oneOfType([r().element,r().node,r().string]),options:r().instanceOf(Object),onClose:r().func,index:r().number};const ce=le;var ue=Object.defineProperty,he=Object.defineProperties,de=Object.getOwnPropertyDescriptors,pe=Object.getOwnPropertySymbols,ge=Object.prototype.hasOwnProperty,me=Object.prototype.propertyIsEnumerable,fe=(e,t,n)=>t in e?ue(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,ye=(e,t)=>{for(var n in t||(t={}))ge.call(t,n)&&fe(e,n,t[n]);if(pe)for(var n of pe(t))me.call(t,n)&&fe(e,n,t[n]);return e};const be=n=>{const[i,o]=(0,e.useState)({}),{notify:r}=n,s=(e,t)=>{const n=Math.floor(1e6*Math.random());o((i=>{return o=ye({},i),he(o,de({[n]:{message:e,options:t}}));var o}))};(0,e.useEffect)((()=>{r(s)}),[i]);const a=e=>{delete ye({},i)[e],o((t=>{const n=t,{[e]:i}=n;var o;return((e,t)=>{var n={};for(var i in e)ge.call(e,i)&&t.indexOf(i)<0&&(n[i]=e[i]);if(null!=e&&pe)for(var i of pe(e))t.indexOf(i)<0&&me.call(e,i)&&(n[i]=e[i]);return n})(n,[(o=e,"symbol"==typeof o?o:o+"")])}))};return t().createElement("div",{className:"tyk-toast__container"},Object.keys(i).map((e=>i[e]?t().createElement(ce,{options:i[e].options,onClose:a.bind(null,e),index:e,key:e},i[e].message):null)))};be.propTypes={notify:r().func};const ve=be;var we=Object.defineProperty,Ae=Object.defineProperties,Ce=Object.getOwnPropertyDescriptors,ke=Object.getOwnPropertySymbols,xe=Object.prototype.hasOwnProperty,Se=Object.prototype.propertyIsEnumerable,$e=(e,t,n)=>t in e?we(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Ee=(e,t)=>{for(var n in t||(t={}))xe.call(t,n)&&$e(e,n,t[n]);if(ke)for(var n of ke(t))Se.call(t,n)&&$e(e,n,t[n]);return e},Oe=(e,t)=>Ae(e,Ce(t));const Te=new class{constructor(){var e;$e(this,"symbol"!=typeof(e="bindNotify")?e+"":e,(e=>{this.createNotification=e}));const n=document.createElement("div");n.className="tyk-toast",document.body.appendChild(n),(0,ae.s)(n).render(t().createElement(ve,{notify:this.bindNotify}))}notify(e,t){this.createNotification&&this.createNotification(e,t)}danger(e,t){this.notify(e,Oe(Ee({},t),{theme:"danger"}))}success(e,t){this.notify(e,Oe(Ee({},t),{theme:"success"}))}warning(e,t){this.notify(e,Oe(Ee({},t),{theme:"warning"}))}info(e,t){this.notify(e,Oe(Ee({},t),{theme:"info"}))}},_e=Te;var Re=Object.defineProperty,Me=Object.getOwnPropertySymbols,Le=Object.prototype.hasOwnProperty,Be=Object.prototype.propertyIsEnumerable,Ne=(e,t,n)=>t in e?Re(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;const Ie=n=>{const{display:i,copy:o,children:r,onCopy:s}=n,a=(0,e.createRef)(),l=(0,e.useCallback)((()=>{if(s&&s(),!window.navigator.clipboard)return a.current.select(),document.execCommand("copy"),void _e.notify("copied",{theme:"success"});window.navigator.clipboard.writeText(o),_e.notify("copied",{theme:"success"})}),[s,a]);return t().createElement(e.Fragment,null,t().createElement(n.element,((e,t)=>{for(var n in t||(t={}))Le.call(t,n)&&Ne(e,n,t[n]);if(Me)for(var n of Me(t))Be.call(t,n)&&Ne(e,n,t[n]);return e})({onClick:l,onKeyUp:l},n),r||i),window.navigator.clipboard?null:t().createElement("textarea",{ref:a,className:"tyk-copy-to-clipboard",name:"copy",value:o},o))};Ie.propTypes={onCopy:r().func,copy:r().string.isRequired,display:r().string,children:r().oneOfType([r().element,r().string,r().object,r().node])};const Pe=Ie;var De=n(137),Fe=n.n(De);function We({children:e}){return t().createElement("div",{className:"tyk-modal__footer"},e)}We.propTypes={children:r().oneOfType([r().element,r().node,r().string])};const He=We;function je({children:e}){return t().createElement("div",{className:"tyk-modal__body"},e)}je.propTypes={children:r().oneOfType([r().element,r().node,r().string])};const ze=je;var Ue=Object.defineProperty,Ve=Object.getOwnPropertySymbols,Ge=Object.prototype.hasOwnProperty,Ke=Object.prototype.propertyIsEnumerable,qe=(e,t,n)=>t in e?Ue(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;function Ye(e){var n=e,{children:i,theme:o="none",disableCloseCommands:r=!1,opened:s=!1,onClose:a=(()=>{}),size:l="md",className:c="",showBackdrop:u=!0}=n,h=((e,t)=>{var n={};for(var i in e)Ge.call(e,i)&&t.indexOf(i)<0&&(n[i]=e[i]);if(null!=e&&Ve)for(var i of Ve(e))t.indexOf(i)<0&&Ke.call(e,i)&&(n[i]=e[i]);return n})(n,["children","theme","disableCloseCommands","opened","onClose","size","className","showBackdrop"]);const d=["tyk-modal",`tyk-modal--theme-${o}`,s&&"opened"].concat(c.split(" ")).filter(Boolean).join(" "),p=["tyk-modal__backdrop",s&&"opened"].filter(Boolean).join(" "),m={success:"check",warning:"warning",danger:"delete"}[o];return t().createElement(t().Fragment,null,Fe().createPortal(t().createElement(A.CSSTransition,{in:s,timeout:100,classNames:"appear"},t().createElement("div",((e,t)=>{for(var n in t||(t={}))Ge.call(t,n)&&qe(e,n,t[n]);if(Ve)for(var n of Ve(t))Ke.call(t,n)&&qe(e,n,t[n]);return e})({className:d},h),t().createElement("div",{className:`tyk-modal__dialog tyk-modal--${l}`},t().createElement("div",{className:"tyk-modal__content"},"none"!==o&&t().createElement("div",{className:"tyk-modal__theme-header"},t().createElement(g,{family:"tykon",type:m})),i)))),document.querySelector("body")),u&&Fe().createPortal(t().createElement(A.CSSTransition,{in:s,timeout:100,classNames:"fade"},t().createElement("button",{className:p,onClick:()=>!r&&a(),onKeyDown:()=>{},type:"button","aria-label":"Close"})),document.querySelector("body")))}Ye.Body=ze,Ye.Footer=He,Ye.Header=({children:e})=>(console.warn("%cModal.Header%c is deprecated.","font-weight: bold",""),t().createElement("div",{className:"tyk-modal__header"},e)),Ye.Title=({children:e})=>(console.warn("%cModal.Title%c is deprecated.","font-weight: bold",""),t().createElement("h4",{className:"tyk-modal__title"},e)),Ye.propTypes={children:r().oneOfType([r().element,r().node,r().string]),className:r().string,theme:r().string,disableCloseCommands:r().bool,opened:r().bool,onClose:r().func,size:r().string,showBackdrop:r().bool};const Je=Ye;function Qe(n){const{children:i,title:o,description:r,confirmBtnText:s="Confirm",cancelBtnText:a="Cancel"}=n,[l,c]=(0,e.useState)(!1),[u,h]=(0,e.useState)(null),[d,p]=(0,e.useState)(null),g=()=>{c(!1),h(null),p(null)},m=()=>{d&&d(),g()};return t().createElement(t().Fragment,null,i(((e,t,n)=>(...i)=>{n&&n(...i),c(!0),h((()=>()=>e(...i))),t&&p((()=>()=>t(...i)))})),t().createElement(Je,{opened:l,onClose:m},t().createElement(Je.Body,null,t().createElement("h4",null,o),r),t().createElement(Je.Footer,null,t().createElement(q,{onClick:m,theme:"default"},a),t().createElement(q,{onClick:()=>{u(),g()},theme:"success"},s))))}Qe.propTypes={confirmBtnText:r().string,cancelBtnText:r().string,title:r().string,description:r().string,children:r().oneOfType([r().element,r().string,r().object,r().node,r().func])};const Xe=Qe;function Ze({children:n,className:i,showShadow:o}){const r=(0,e.useRef)(null),s=(0,e.useCallback)((()=>{const e=r.current;e&&(window.scrollY?e.classList.add("tyk-fixed-wrapper--scrolled"):e.classList.remove("tyk-fixed-wrapper--scrolled"))}),[r.current]),a=(0,e.useCallback)(Z(s,100),[s]);return(0,e.useEffect)((()=>(o&&window.addEventListener("scroll",a),()=>{window.removeEventListener("scroll",a)})),[a,o]),t().createElement("div",{className:`tyk-fixed-wrapper ${i}`,ref:r},n)}Ze.propTypes={children:r().oneOfType([r().element,r().node,r().string]),className:r().string,showShadow:r().bool},Ze.defaultProps={className:""};const et=Ze;function tt({children:n,hasMore:i,initialLoad:o,loadMore:r,pageNumber:s,refChild:a}){const[l,c]=(0,e.useState)(!1),u=(0,e.useRef)(null),h=E(a);(0,e.useEffect)((()=>{o&&"function"==typeof r&&(c(!1),r(s))}),[o]);const d=(0,e.useCallback)((()=>{if(!u.current)return!1;const{clientHeight:e,scrollTop:t}=u.current;return i&&(e+Math.round(t)===h.height||e>=h.height)}),[u,h.height]),p=(0,e.useCallback)((()=>{i&&"function"==typeof r?(r(s+1),c(!0)):c(!1)}),[i,s]),g=C(s),m=(0,e.useCallback)(Z((()=>{d()&&g<=s&&p()}),200),[p,d]);(0,e.useEffect)((()=>{var e;return null==(e=u.current)||e.addEventListener("scroll",m),()=>{var e;return null==(e=u.current)?void 0:e.removeEventListener("scroll",m)}}),[u,m]),(0,e.useEffect)((()=>{g>0&&0===s&&(u.current.scrollTop=0)}),[u,s]);const f=C(h);return(0,e.useEffect)((()=>{h&&f&&h.height!==f.height&&!0===l&&c(!1)}),[l,h.height]),(0,e.useEffect)((()=>{a&&h.heightt in e?it(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;function lt({element:n,size:i="auto",forceDisplay:o="auto",displayAxis:r="auto",preferredPosition:s,offset:a=0,className:l,children:c,infiniteScrollerConfig:u},h){const d=(0,e.useRef)(null),p=h||d,g=(0,e.useRef)(null);return(0,e.useEffect)((()=>{window.requestAnimationFrame((function e(){(function(){const e="auto"!==o?o:function(){const e=n.current,t=p.current;if(!t)return(null!=s?s:"vertical"===r)?"bottom":"right";const{left:i,top:o}=e.getBoundingClientRect(),a=o,l=window.innerHeight-o-e.offsetHeight,c=i,u=window.innerWidth-i-e.offsetWidth,h=a>t.scrollHeight,d=l>t.scrollHeight,g=c>t.offsetWidth,m=u>t.offsetWidth,f=i+e.offsetWidth/2-t.offsetWidth/2>0,y=o+e.offsetHeight/2-t.scrollHeight/2>0;return"vertical"===r||"auto"===r&&(h||d)&&f?"top"===s&&h?"top":"bottom"===s&&d||d||l>a?"bottom":"top":"horizontal"===r?"left"===s&&g?"left":"right"===s&&g||m||u>c?"right":"left":h&&f?"top":d&&f?"bottom":m&&y?"right":g&&y?"left":null!=s?s:"bottom"}(),t=n.current,l=p.current;if(!t||!l)return;const c=t.getBoundingClientRect();if("top"===e){const e=c.top-l.offsetHeight-a;l.style.top=`${e}px`,l.style.left="auto"===i?c.left+t.offsetWidth/2-l.offsetWidth/2+"px":`${c.left}px`,"matchElement"===i?l.style.width=`${t.offsetWidth}px`:"function"==typeof i&&(l.style.width=`${i(t.offsetWidth)}px`),l.style.maxHeight=c.top-a+"px"}if("bottom"===e&&(l.style.top=`${c.bottom+a}px`,l.style.left="auto"===i?c.left+t.offsetWidth/2-l.offsetWidth/2+"px":`${c.left}px`,"matchElement"===i?l.style.width=`${t.offsetWidth}px`:"function"==typeof i&&(l.style.width=`${i(t.offsetWidth)}px`),l.style.maxHeight=window.innerHeight-c.bottom-a+"px"),"left"===e){const e=c.top+t.offsetHeight/2-l.offsetHeight/2;l.style.top="auto"===i?`${e}px`:`${c.top}px`,l.style.left=c.left-l.offsetWidth-a+"px","matchElement"===i?l.style.height=`${t.offsetHeight}px`:"function"==typeof i&&(l.style.height=`${i(t.offsetHeight)}px`),l.style.maxWidth=c.left-a+"px"}if("right"===e){const e=c.top+t.offsetHeight/2-l.offsetHeight/2;l.style.top="auto"===i?`${e}px`:`${c.top}px`,l.style.left=`${c.left+t.offsetWidth+a}px`,"matchElement"===i?l.style.height=`${t.offsetHeight}px`:"function"==typeof i&&(l.style.height=`${i(t.offsetHeight)}px`),l.style.maxWidth=window.innerWidth-c.left-t.offsetWidth-a+"px"}})(),window.requestAnimationFrame(e)}))}),[]),(0,De.createPortal)(t().createElement("div",{className:`floating-container ${l||""}`,ref:p},t().createElement(nt,((e,t)=>{for(var n in t||(t={}))rt.call(t,n)&&at(e,n,t[n]);if(ot)for(var n of ot(t))st.call(t,n)&&at(e,n,t[n]);return e})({refChild:g},u),t().createElement("div",{className:"floating-container__content-wrapper",ref:g},c))),document.querySelector("body"))}lt.propTypes={element:r().instanceOf(Object),className:r().string,size:r().oneOfType([r().oneOf(["auto","matchElement"]),r().func]),offset:r().number,forceDisplay:r().oneOf(["auto","top","bottom","left","right"]),displayAxis:r().oneOf(["auto","vertical","horizontal"]),preferredPosition:r().oneOf(["top","bottom","left","right"]),infiniteScrollerConfig:r().instanceOf(Object)};const ct=(0,e.forwardRef)(lt);function ut({children:e}){return t().createElement("div",{className:"tyk-info-note"},t().createElement(ie,{theme:"info"},e))}ut.propTypes={children:r().oneOfType([r().element,r().node,r().string])};const ht=ut,dt=e=>{const{className:n,children:i}=e;return t().createElement("li",{className:n},i)};dt.propTypes={children:r().oneOfType([r().arrayOf(r().node),r().node,r().element,r().string]),className:r().string},dt.defaultProps={className:""};const pt=dt,gt=e=>{const{className:n,children:i,label:o,labelwidth:r,theme:s,style:a}=e;return t().createElement("div",{className:"tyk-list__wrapper "+(r?"tyk-list--with-inline-label":"")},void 0!==o?t().createElement("label",{style:{flexBasis:r||"auto"}},o):null,t().createElement("ul",{className:(()=>{let e=["tyk-list"];return s&&e.push(`tyk-list--${s}`),n&&(e=e.concat(n.split(" "))),e.join(" ")})(),style:(()=>{const e=(0,X.fromJS)(a).toJS();return r&&(e.flexBasis=`calc(100% - ${r} - 20px)`),e})()},i))};gt.propTypes={children:r().oneOfType([r().arrayOf(r().node),r().node,r().element,r().string]),className:r().string,label:r().string,labelwidth:r().string,theme:r().string,style:r().instanceOf(Object)},gt.defaultProps={theme:"default",style:{}},gt.Item=pt;const mt=gt;function ft({align:e="center",children:n,left:i,right:o,title:r,pre:s,subtitle:a,withTabs:l}){const c=a?t().createElement("p",{className:"font-family-medium"},a):null;return t().createElement("section",{className:"tyk-nav-bar "+(l?"tyk-nav-bar__with-tabs":"")},t().createElement("div",{className:`tyk-nav-bar__wrapper tyk-nav-bar--align-${e}`},s&&t().createElement("div",{className:"tyk-nav-bar__pre"},s),r?t().createElement("div",null,t().createElement("h1",null,r),c):c,t().createElement("div",{className:"tyk-nav-bar__container"},i&&t().createElement("div",{className:"tyk-nav-bar__left"},i),o&&t().createElement("div",{className:"tyk-nav-bar__right"},o))),n)}ft.propTypes={align:r().string,children:r().oneOfType([r().arrayOf(r().node),r().node,r().element,r().string]),title:r().string,subtitle:r().string,pre:r().oneOfType([r().element,r().node]),left:r().oneOfType([r().element,r().node]),right:r().oneOfType([r().element,r().node]),withTabs:r().bool};const yt=ft;function bt({children:e}){return t().createElement("li",{className:"tyk-navigation-item"},e)}bt.propTypes={children:r().oneOfType([r().arrayOf(r().node),r().node,r().element,r().string])};const vt=bt;function wt({children:e}){return t().createElement("ul",{className:"tyk-navigation"},e)}wt.propTypes={children:r().oneOfType([r().arrayOf(r().node),r().node,r().element,r().string])},wt.Item=vt;const At=wt,Ct=(0,e.createContext)();var kt=Object.defineProperty,xt=Object.defineProperties,St=Object.getOwnPropertyDescriptors,$t=Object.getOwnPropertySymbols,Et=Object.prototype.hasOwnProperty,Ot=Object.prototype.propertyIsEnumerable,Tt=(e,t,n)=>t in e?kt(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,_t=(e,t)=>{for(var n in t||(t={}))Et.call(t,n)&&Tt(e,n,t[n]);if($t)for(var n of $t(t))Ot.call(t,n)&&Tt(e,n,t[n]);return e},Rt=(e,t)=>xt(e,St(t));function Mt(n){var i=n,{children:o,noPadding:r,className:s}=i,a=((e,t)=>{var n={};for(var i in e)Et.call(e,i)&&t.indexOf(i)<0&&(n[i]=e[i]);if(null!=e&&$t)for(var i of $t(e))t.indexOf(i)<0&&Ot.call(e,i)&&(n[i]=e[i]);return n})(i,["children","noPadding","className"]);const l=(0,e.useCallback)((()=>["tyk-panel__body",s,r&&"no-padding"].filter(Boolean).join(" ")),[s,r]);return t().createElement(Ct.Consumer,null,(e=>e.collapsable?t().createElement(I,Rt(_t({},a),{collapsed:e.collapsed,className:l()}),o):t().createElement("div",Rt(_t({},a),{className:l()}),o)))}Mt.propTypes={children:r().oneOfType([r().element,r().node,r().string]),noPadding:r().bool,className:r().string};const Lt=Mt,Bt=e=>{const{children:n}=e;return t().createElement("div",{className:"tyk-panel__footer"},n)};Bt.propTypes={children:r().oneOfType([r().element,r().node,r().string])};const Nt=Bt;var It=Object.defineProperty;class Pt extends e.Component{getCssClasses(e){const{className:t}=this.props;let n=["tyk-panel__header"];return e.collapsable&&n.push("collapsable"),t&&(n=n.concat(t.split(" "))),n.join(" ")}render(){const{children:e}=this.props;return t().createElement(Ct.Consumer,null,(n=>{const i="blank"===n.theme?"h3":"div",o=n.collapsed?"chevron-down":"chevron-up";return t().createElement(i,{className:this.getCssClasses(n),onClick:n.collapsable?n.onToggle:void 0},e,n.collapsable?t().createElement("div",{className:`collapsable__arrow-${n.collapsibleIconPosition}`},t().createElement(g,{type:o})):null)}))}}((e,t,n)=>{t in e?It(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n})(Pt,"propTypes"+"",{children:r().oneOfType([r().element,r().node,r().string]).isRequired,className:r().string});const Dt=n=>{const{children:i,className:o,collapsed:r,collapsable:s,theme:a,onToggleCollapse:l,collapsibleIconPosition:c="right"}=n,[u,h]=(0,e.useState)(r||!1);(0,e.useEffect)((()=>{r!==u&&h(r)}),[r]);const d=()=>{h(!u),l&&l(!u)};return t().createElement("div",{className:(()=>{let e=["tyk-panel"];const t=`tyk-panel--${a||"default"}`,n=`tyk-panel__icon-collapse--${c}`;return e.push(t),e.push(n),o&&(e=e.concat(o.split(" "))),u&&e.push("tyk-panel--collapsed"),e.join(" ")})()},t().createElement(Ct.Provider,{value:{collapsable:s,collapsed:u,onToggle:d,theme:a,collapsibleIconPosition:c}},"function"==typeof i?i({toggleCollapse:d}):i))};Dt.propTypes={children:r().oneOfType([r().func,r().element,r().node,r().string]),className:r().string,collapsable:r().bool,collapsibleIconPosition:r().string,collapsed:r().bool,theme:r().string,onToggleCollapse:r().func},Dt.Body=Lt,Dt.Footer=Nt,Dt.Header=Pt;const Ft=Dt,Wt=e=>{const{children:n,className:i,theme:o}=e;return t().createElement("div",{className:(()=>{let e=["tyk-pill",...o.split(" ").map((e=>`tyk-pill--${e}`))];return i&&(e=e.concat(i)),e.join(" ")})()},n)};Wt.propTypes={children:r().oneOfType([r().arrayOf(r().node),r().node,r().element,r().string]),className:r().string,theme:r().string},Wt.defaultProps={theme:"default"};const Ht=Wt;var jt,zt,Ut,Vt,Gt,Kt,qt,Yt,Jt=(e,t,n)=>{if(!t.has(e))throw TypeError("Cannot "+n)},Qt=(e,t,n)=>(Jt(e,t,"read from private field"),n?n.call(e):t.get(e)),Xt=(e,t,n)=>{if(t.has(e))throw TypeError("Cannot add the same private member more than once");t instanceof WeakSet?t.add(e):t.set(e,n)},Zt=(e,t,n,i)=>(Jt(e,t,"write to private field"),i?i.call(e,n):t.set(e,n),n);class en{constructor(){Xt(this,jt,null),Xt(this,zt,null),Xt(this,Ut,null),Xt(this,Vt,null),Xt(this,Gt,[]),Xt(this,Kt,[]),Xt(this,qt,[]),Xt(this,Yt,!1)}on(e,t){let n=null;"onHeightChange"===e?n=Qt(this,Gt):"onDragStart"===e?n=Qt(this,Kt):"onDragEnd"===e&&(n=Qt(this,qt)),n&&this.addListener(n,t)}off(e,t){let n=null;"onHeightChange"===e?n=Qt(this,Gt):"onDragStart"===e?n=Qt(this,Kt):"onDragEnd"===e&&(n=Qt(this,qt)),n&&this.removeListener(n,t)}setRefs(e,t,n){(Qt(this,zt)||Qt(this,Ut)||Qt(this,Vt))&&this.unbindEvents(),Zt(this,Vt,e),Zt(this,zt,t),Zt(this,Ut,n),Zt(this,jt,null),this.bindEvents()}bindEvents(){this.ensureRefs("bindEvents"),Qt(this,Ut).addEventListener("mousedown",this.onMouseDown.bind(this)),document.addEventListener("mousemove",this.onMouseMove.bind(this)),document.addEventListener("mouseup",this.onMouseUp.bind(this))}getHeight(){return this.ensureRefs("getHeight"),Qt(this,zt).getBoundingClientRect().height}onMouseDown(e){this.ensureRefs("onMouseDown"),Zt(this,jt,{mouseDown:!0,initialRect:Qt(this,zt).getBoundingClientRect(),initialEvent:e})}onMouseMove(e){if(this.ensureRefs("onMouseMove"),!Qt(this,jt))return;if(!this.isPrimaryMouseButtonDown(e))return void this.onMouseUp();Qt(this,Yt)||(Zt(this,Yt,!0),this.onDragStart.bind(this)());const t=Qt(this,jt).initialEvent.y-e.y,n=Math.ceil(Qt(this,jt).initialRect.height+t);this.setHeight(`${n}px`,"mousemove")}notifyListeners(e,t){e&&Array.isArray(e)&&e.length&&e.forEach((e=>{"function"==typeof e&&e(t)}))}addListener(e,t){e&&Array.isArray(e)&&"function"==typeof t&&e.push(t)}removeListener(e,t){if(e&&Array.isArray(e)&&"function"==typeof t&&e.length){const n=e.indexOf(t);n>-1&&e.splice(n,1)}}onDragEnd(){Qt(this,Yt)&&this.notifyListeners(Qt(this,qt),this.getHeight())}onDragStart(){this.notifyListeners(Qt(this,Kt),this.getHeight())}isPrimaryMouseButtonDown(e){return 1===(void 0!==e.buttons?e.buttons:e.which)}onMouseUp(){Zt(this,jt,null),this.onDragEnd.bind(this)(),Zt(this,Yt,!1)}setHeight(e){let t=e;this.ensureRefs("setHeight"),"number"==typeof t&&(t+="px"),Qt(this,zt).style.height=t,this.notifyListeners(Qt(this,Gt),this.getHeight())}ensureRefs(e){if(!Qt(this,zt)||!Qt(this,Ut)||!Qt(this,Vt))throw new Error(`${e}: Wrapper, panel, and gutter elements are required. Use setRefs method first.`)}isHidden(){return this.ensureRefs("isHidden"),"hidden"===Qt(this,Vt).style.visibility}hide(){this.ensureRefs("hide"),Qt(this,Vt).style.visibility="hidden"}show(){this.ensureRefs("show"),Qt(this,Vt).style.visibility="visible"}unbindEvents(){Zt(this,Gt,[]),Zt(this,Kt,[]),Zt(this,qt,[]),Qt(this,Ut).removeEventListener("mousedown",this.onMouseDown.bind(this)),document.removeEventListener("mousemove",this.onMouseMove.bind(this)),document.removeEventListener("mouseup",this.onMouseUp.bind(this))}deinit(){this.unbindEvents()}}function tn({children:e}){return t().createElement(t().Fragment,null,e)}function nn({children:e}){return t().createElement(t().Fragment,null,e)}jt=new WeakMap,zt=new WeakMap,Ut=new WeakMap,Vt=new WeakMap,Gt=new WeakMap,Kt=new WeakMap,qt=new WeakMap,Yt=new WeakMap,tn.propTypes={children:r().instanceOf({})},nn.propTypes={children:r().instanceOf({})};const on=(...e)=>e.map((e=>(e||"").trim())).filter(Boolean).join(" "),rn=(0,e.forwardRef)((({children:n,height:i,onHeightChange:o=null,onDragStart:r=null,onDragEnd:s=null,style:a=null,parentSelector:l=null,contentStyle:c,contentClassName:u,gutterClassName:h,wrapperClassName:d},p)=>{const g=(0,e.useRef)(null),m=(0,e.useRef)(null),f=(0,e.useRef)(null),y=(0,e.useRef)(new en).current;(0,e.useEffect)((()=>{if(g.current&&m.current&&f.current&&y)return y.setRefs(f.current,g.current,m.current),y.on("onHeightChange",o),y.on("onDragStart",r),y.on("onDragEnd",s),y.setHeight(i,"initialize"),()=>{y.unbindEvents()}}),[]),(0,e.useImperativeHandle)(p,(()=>{const e=e=>e.bind(y);return{getHeight:e(y.getHeight),setHeight:e(y.setHeight),hide:e(y.hide),show:e(y.show),isHidden:e(y.isHidden),deinit:e(y.deinit),on:e(y.on),off:e(y.off)}}),[]);let b=null,v=null;const w=[];t().Children.forEach(n,(e=>{e&&t().isValidElement(e)&&(e.type===tn?b=e:e.type===nn?v=e:w.push(e))}));const A=t().createElement("div",{className:on("tyk-ui-reveal-wrapper",d||"cem"),ref:f,style:a},t().createElement("div",{className:"tyk-ui-reveal-wrapper__hole"}),t().createElement("div",{ref:m,className:on("tyk-ui-reveal-wrapper__gutter",h)},t().createElement("div",{className:"tyk-ui-reveal-wrapper__gutter__headerleft"},b),t().createElement("div",{className:"tyk-ui-reveal-wrapper__gutter__logo"}," "),t().createElement("div",{className:"tyk-ui-reveal-wrapper__gutter__headerright"},v)),t().createElement("div",{ref:g,className:on("tyk-ui-reveal-wrapper__panel",u),style:c},w));if(l)return(0,De.createPortal)(A,document.querySelector(l))}));rn.propTypes={children:r().instanceOf({}),height:r().string,onHeightChange:r().func,onDragStart:r().func,onDragEnd:r().func,parentSelector:r().string,style:r().instanceOf({}),contentStyle:r().instanceOf({}),contentClassName:r().string,gutterClassName:r().string,wrapperClassName:r().string},rn.HeaderLeft=tn,rn.HeaderRight=nn;const sn=rn,an=(0,e.createContext)(),ln=(0,e.createContext)();var cn=Object.defineProperty,un=Object.getOwnPropertySymbols,hn=Object.prototype.hasOwnProperty,dn=Object.prototype.propertyIsEnumerable,pn=(e,t,n)=>t in e?cn(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,gn=(e,t)=>{for(var n in t||(t={}))hn.call(t,n)&&pn(e,n,t[n]);if(un)for(var n of un(t))dn.call(t,n)&&pn(e,n,t[n]);return e};const mn=n=>{const{addTab:i,hideTab:o,updateTab:r,showTab:s,children:a,selectedPath:l,tabData:c,tabsId:u,tabExists:h,path:d,rendered:p,hideTabContent:g,tabs:m}=n;(0,e.useEffect)((()=>{const e=gn({},c);h(d)||i(e,d)}),[c,d]);const f=C(c);return(0,e.useEffect)((()=>{if(h(d)&&(null==c?void 0:c.title)&&((null==f?void 0:f.title)!==(null==c?void 0:c.title)||f.selected!==c.selected)){const e=gn({},c);r(e,d)}}),[c,d,f,m]),(0,e.useEffect)((()=>(s(d),()=>o(d))),[]),(0,e.useMemo)((()=>!!Object.keys(m).length&&!g&&!1!==m[c.id].show&&(p?l&&l.indexOf(c.id)>-1:h(d))),[g,p,l,c,m])?t().createElement("div",{key:c.id,className:"tyk-tab__content",style:{display:l&&l.indexOf(c.id)>-1?"block":"none"}},t().createElement(ln.Provider,{value:{path:d,tabsId:u}},a)):null};mn.propTypes={addTab:r().func,updateTab:r().func,hideTab:r().func,showTab:r().func,children:r().oneOfType([r().arrayOf(r().node),r().node,r().element,r().string]),path:r().instanceOf(Array),hideTabContent:r().bool,rendered:r().bool,selectedPath:r().instanceOf(Array),tabExists:r().func,tabsId:r().string,tabData:r().instanceOf(Object),tabs:r().instanceOf(Object)};const fn=mn,yn=n=>{const{id:i}=n,o=(0,e.useContext)(an),r=(0,e.useContext)(ln),{tabExists:s,selectedPath:a,addTab:l,updateTab:c,hideTab:u,showTab:h,rendered:d,hideTabContent:p,tabs:g}=o,{children:m}=n,[f,y]=(0,e.useState)("");return(0,e.useEffect)((()=>{let e;e=r&&f&&r.tabsId===o.id?r.path.concat([i]):[i],y(e)}),[r]),f?t().createElement(e.Fragment,null,t().createElement(fn,{addTab:l,updateTab:c,hideTab:u,showTab:h,tabExists:s,tabData:n,path:f,tabsId:o.id,selectedPath:a,rendered:d,hideTabContent:p,tabs:g},m)):null};yn.propTypes={children:r().oneOfType([r().arrayOf(r().node),r().node,r().element,r().string]),id:r().string},yn.defaultProps={};const bn=yn;var vn=Object.defineProperty,wn=Object.getOwnPropertySymbols,An=Object.prototype.hasOwnProperty,Cn=Object.prototype.propertyIsEnumerable,kn=(e,t,n)=>t in e?vn(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,xn=(e,t)=>{for(var n in t||(t={}))An.call(t,n)&&kn(e,n,t[n]);if(wn)for(var n of wn(t))Cn.call(t,n)&&kn(e,n,t[n]);return e};const Sn=n=>{const{children:i,className:o,id:r,onTabChange:s,type:a,hideTabContent:l}=n,[c,u]=(0,e.useState)({}),[h,d]=(0,e.useState)([]),[p,m]=(0,e.useState)(!1),[f,y]=(0,e.useState)(null);(0,e.useEffect)((()=>{d(f)}),[f]);const b=(e,t)=>{const n=e.slice(0);let i=!0;t.collapsible&&(n.push(Object.keys(t.tabs)[0]),i=!1),u((t=>{let n=Object.assign({},t);return n=((e,t)=>{let n=Object.assign({},e);const i=t.slice(0);for(;i.length>1;)n=n[i.shift()];const o=i.shift();return void 0===n[o].collapsed?n[o].collapsed=!0:n[o].collapsed=!n[o].collapsed,n})(n,e),n})),d(n),m(i),s&&s(t)},v=e=>{const t=[];return h&&h.indexOf(e)>-1&&t.push("active"),t.join(" ")},w=(e,n)=>e?t().createElement("ul",null,Object.keys(e).map(((i,o)=>{const r=n?n.concat([e[i].id]):[e[i].id],s=e[i].collapsed?"chevron-up":"chevron-down";return!1===e[i].show?null:t().createElement("li",{className:v(e[i].id),key:e[i].id},t().createElement("button",{type:"button",onClick:b.bind(null,r,e[i]),onKeyDown:b.bind(null,r,e[i]),tabIndex:o},e[i].title,e[i].collapsible?t().createElement(g,{className:"collapsable-arrow",type:s}):null),e[i].collapsible?t().createElement(I,{collapsed:e[i].collapsed},w(e[i].tabs,r)):w(e[i].tabs,r))}))):null,A=e=>{u((t=>{const n=xn({},t);return n[e].show=!1,n}))},C=e=>{u((t=>{const n=xn({},t);return n[e].show=!0,n}))};return t().createElement("div",{className:(()=>{let e=["tyk-tabs"];return e.push(`tyk-tabs--${a||"default"}`),o&&(e=e.concat(o.split(" "))),e.join(" ")})()},w(c),t().createElement(an.Provider,{value:{id:r,addTab:(e,t)=>{u((n=>((e,t,n)=>{let i=Object.assign({},e);const o=Object.assign({},n),r=t.slice(0);for(;r.length>1;)i=i[r.shift()],i||(i={});return o.tempPath=r,i[r.shift()]=o,i})(xn({},n),t,e))),e.selected&&y(t)},hideTab:A,updateTab:(e,t)=>{u((t=>{const n=xn({},t);return n[e.id]=e,n})),e.selected&&b(t,e)},showTab:C,tabExists:e=>{let t=xn({},c);const n=e.slice(0);for(;n.length>1;)t=t[n.shift()];const i=n.shift();return!(!t||!t[i])},selectedPath:h,rendered:p,hideTabContent:l,tabs:c}},"function"==typeof i?i({hideTab:A,showTab:C}):i))};Sn.propTypes={className:r().string,children:r().oneOfType([r().arrayOf(r().node),r().node,r().element,r().string]),hideTabContent:r().bool,id:r().string,onTabChange:r().func,type:r().string},Sn.Tab=bn;const $n=Sn;var En=Object.defineProperty,On=Object.getOwnPropertySymbols,Tn=Object.prototype.hasOwnProperty,_n=Object.prototype.propertyIsEnumerable,Rn=(e,t,n)=>t in e?En(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Mn=(e,t)=>{for(var n in t||(t={}))Tn.call(t,n)&&Rn(e,n,t[n]);if(On)for(var n of On(t))_n.call(t,n)&&Rn(e,n,t[n]);return e};function Ln(n){var i=n,{render:o,className:r,children:s,position:a="auto",style:l,icon:c=!1,closable:u,isOpened:h=!1,additionalClickParents:d=[]}=i,p=((e,t)=>{var n={};for(var i in e)Tn.call(e,i)&&t.indexOf(i)<0&&(n[i]=e[i]);if(null!=e&&On)for(var i of On(e))t.indexOf(i)<0&&_n.call(e,i)&&(n[i]=e[i]);return n})(i,["render","className","children","position","style","icon","closable","isOpened","additionalClickParents"]);const[m,f]=(0,e.useState)(!1),y=(0,e.useRef)(null),b=(0,e.useRef)(null),v=u?{onClick:()=>f(!0)}:{onMouseEnter:()=>f(!0),onMouseLeave:()=>f(!1),onFocus:()=>f(!0),onBlur:()=>f(!1)},w=(0,e.useCallback)((e=>{[...d,b.current].some((t=>{var n;return null==(n=null==t?void 0:t.contains)?void 0:n.call(t,e.target)}))||f(!1)}),[d]);(0,e.useEffect)((()=>(document.addEventListener("click",w,!0),()=>document.removeEventListener("click",w,!0))),[w]),(0,e.useEffect)((()=>{f(h)}),[h]);const A=["tyk-tooltip",r].filter(Boolean).join(" ");return t().createElement("div",Mn(Mn({className:"tyk-tooltip__wrapper",style:Mn({display:"inline-block"},l),ref:y},v),p),s,m&&t().createElement(ct,{element:y,forceDisplay:a,preferredPosition:"top",offset:20},t().createElement("div",{className:A,ref:b},c&&(!0===c?t().createElement(g,{family:"tykon",type:"help"}):c),t().createElement("div",{className:"tyk-tooltip__content"},o),u&&t().createElement(g,{family:"tykon",type:"x",onClick:e=>{e.stopPropagation(),f(!1)}}))))}Ln.propTypes={children:r().node.isRequired,style:r().instanceOf(Object),position:r().string,render:r().oneOfType([r().node,r().string]),className:r().string,icon:r().oneOfType([r().bool,r().node]),closable:r().bool,isOpened:r().bool,additionalClickParents:r().instanceOf(Array)};const Bn=Ln;function Nn({text:e,limit:n,position:i}){return e.length>n?t().createElement(Bn,{render:e,position:i},e.substring(0,n),"..."):e}Nn.propTypes={text:r().string,limit:r().number,position:r().string};const In=Nn;var Pn=Object.defineProperty;const Dn=(e,t)=>{let n;const i=[];for(n=0;n<=e;n+=1)o=n,r=t,((s=e)<10||r<5&&o<5||r>s-5&&o>s-5||o>=r-2&&o<=r+2||[0,1,s-1,s].indexOf(o)>-1)&&(n>i[i.length-1]&&i.push("..."),i.push(n+1));var o,r,s;return i};class Fn extends e.Component{constructor(e){super(e);const{value:t,totalNrOfPages:n}=this.props;this.state={prevProps:this.props,selectedPage:t||0,pagesArray:Dn(n,t)},this.pageKey=0}static getDerivedStateFromProps(e,t){return e.value!==t.prevProps.value||e.totalNrOfPages!==t.prevProps.totalNrOfPages?{selectedPage:e.value,pagesArray:Dn(e.totalNrOfPages,e.value)}:null}getPageCssClass(e){const{selectedPage:t}=this.state,n=[];return t===e&&n.push("active"),n.join(" ")}getPageKey(){return this.pageKey+=1,this.pageKey}goToPage(e){const{onChange:t,totalNrOfPages:n}=this.props;this.setState({selectedPage:e,pagesArray:Dn(n,e)},(()=>{t&&t(e)}))}render(){const{totalNrOfPages:n}=this.props,{pagesArray:i,selectedPage:o}=this.state;return t().createElement(e.Fragment,null,n?t().createElement("ul",{className:"tyk-pagination"},o>0&&n>5?t().createElement("li",null,t().createElement("button",{onClick:this.goToPage.bind(this,o-1),type:"button"},"Previous")):null,i.map((e=>t().createElement("li",{key:this.getPageKey(),className:this.getPageCssClass(e-1)},"..."!==e?t().createElement("button",{onClick:this.goToPage.bind(this,e-1),type:"button"},e):t().createElement("span",null,e)))),o5?t().createElement("li",null,t().createElement("button",{onClick:this.goToPage.bind(this,o+1),type:"button"},"Next")):null):null)}}((e,t,n)=>{((e,t,n)=>{t in e?Pn(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n})(e,t+"",n)})(Fn,"propTypes",{value:r().number,totalNrOfPages:r().number,onChange:r().func});const Wn=(0,e.createContext)(),Hn=({column:n})=>{const{sortable:i}=n,[o,r]=(0,e.useState)((null==i?void 0:i.default)||"ASC"),{state:s,sendMessage:a}=(0,e.useContext)(Wn);return t().createElement("th",{key:n.id,onClick:i?()=>{a("sort",{column:n,sortOrder:o}),r("ASC"===o?"DESC":"ASC")}:null,className:s.maxHeight?"fixed-header":""},n.name,n.sortable&&t().createElement("span",{className:"header-sort"},t().createElement(g,{family:"tykon",type:"arrowsort"})))};Hn.propTypes={column:r().instanceOf(Object)};var jn=Object.defineProperty,zn=Object.defineProperties,Un=Object.getOwnPropertyDescriptors,Vn=Object.getOwnPropertySymbols,Gn=Object.prototype.hasOwnProperty,Kn=Object.prototype.propertyIsEnumerable,qn=(e,t,n)=>t in e?jn(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;const Yn=()=>{const[n,i]=(0,e.useState)(!1),{state:o,sendMessage:r}=(0,e.useContext)(Wn),{columns:s,selectable:a}=o,l=()=>{var e;if(!a)return;const s=a.type;return t().createElement("th",{className:o.maxHeight?"fixed-header":""},(null==a?void 0:a.allowSelectAll)?t().createElement("div",{className:null==a?void 0:a.style},t().createElement(s,(l=((e,t)=>{for(var n in t||(t={}))Gn.call(t,n)&&qn(e,n,t[n]);if(Vn)for(var n of Vn(t))Kn.call(t,n)&&qn(e,n,t[n]);return e})({},a.values),zn(l,Un({onClick:()=>{i(!n),r("header.selectAll.click",n)},onChange:e=>{r("header.selectAll.change",e)}}))),null==(e=a.values)?void 0:e.value)):a.name||"Select");var l};return t().createElement("thead",null,t().createElement("tr",null,a&&"LEFT"===a.position&&l(),s.map((e=>t().createElement(Hn,{key:e.id,column:e}))),a&&"RIGHT"===a.position&&l()))};var Jn=Object.defineProperty,Qn=Object.defineProperties,Xn=Object.getOwnPropertyDescriptors,Zn=Object.getOwnPropertySymbols,ei=Object.prototype.hasOwnProperty,ti=Object.prototype.propertyIsEnumerable,ni=(e,t,n)=>t in e?Jn(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,ii=(e,t)=>{for(var n in t||(t={}))ei.call(t,n)&&ni(e,n,t[n]);if(Zn)for(var n of Zn(t))ti.call(t,n)&&ni(e,n,t[n]);return e};class oi extends e.Component{getCssClasses(){const{inline:e,disabled:t,readOnly:n,theme:i="",wrapperClassName:o=""}=this.props,r=[o];return r.push("tyk-checkbox"),e&&r.push("tyk-checkbox--inline"),i.trim()&&r.push(...i.split(" ").map((e=>`tyk-checkbox--theme-${e}`))),(t||n)&&r.push("tyk-checkbox--is-disabled"),r.join(" ")}displayError(){const{error:e}=this.props;return e?t().createElement("p",{className:"tyk-form-control__error-message"},e):null}displayNote(){const{note:e}=this.props;return e?t().createElement("p",{className:"tyk-form-control__help-block"},e):null}render(){const e=this.props,{input:n,value:i,label:o}=e,r=((e,t)=>{var n={};for(var i in e)ei.call(e,i)&&t.indexOf(i)<0&&(n[i]=e[i]);if(null!=e&&Zn)for(var i of Zn(e))t.indexOf(i)<0&&ti.call(e,i)&&(n[i]=e[i]);return n})(e,["input","value","label"]);return t().createElement("div",{className:this.getCssClasses()},t().createElement("div",{className:"tyk-form-control__wrapper"},t().createElement("label",null,t().createElement("input",(s=ii(ii({checked:n?n.value:i},n),r),Qn(s,Xn({type:"checkbox"})))),o),this.displayNote(),this.displayError()));var s}}((e,t,n)=>{ni(e,t+"",n)})(oi,"propTypes",{disabled:r().bool,readOnly:r().bool,inline:r().bool,theme:r().string,error:r().oneOfType([r().string,r().bool]),note:r().string,input:r().instanceOf(Object),label:r().oneOfType([r().arrayOf(r().node),r().node,r().element,r().func,r().string]),name:r().string,value:r().oneOfType([r().string,r().bool]),checked:r().oneOfType([r().string,r().bool]),onChange:r().func,wrapperClassName:r().string});var ri=Object.defineProperty,si=Object.getOwnPropertySymbols,ai=Object.prototype.hasOwnProperty,li=Object.prototype.propertyIsEnumerable,ci=(e,t,n)=>t in e?ri(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,ui=(e,t)=>{for(var n in t||(t={}))ai.call(t,n)&&ci(e,n,t[n]);if(si)for(var n of si(t))li.call(t,n)&&ci(e,n,t[n]);return e};const hi=({col:e,row:n})=>{var i,o,r,s,a;if(!n.values[e.id])return t().createElement("td",null);if("string"===e.type)return t().createElement("td",ui({className:(null==(i=n.values[e.id].styling)?void 0:i.className)||null},null==(o=null==n?void 0:n.values[e.id])?void 0:o.events),null==(r=n.values[e.id])?void 0:r.value);const l=e.type;return t().createElement("td",ui({className:(null==(s=n.values[e.id].styling)?void 0:s.className)||null},null==(a=null==n?void 0:n.values[e.id])?void 0:a.events),t().createElement(l,ui({},n.values[e.id].props),n.values[e.id].children?n.values[e.id].children:null))};hi.propTypes={col:r().instanceOf(Object),row:r().instanceOf(Object),index:r().number};const di=({row:n,index:i})=>{var o,r;const{state:s,sendMessage:a}=(0,e.useContext)(Wn),{columns:l,selectable:c}=s,u=()=>t().createElement("td",null,t().createElement(oi,{defaultChecked:n.selected,onChange:e=>a("row.selected",{index:i,selected:e})}));return t().createElement("tr",{onClick:null==(o=n.events)?void 0:o.onClick,className:null==(r=n.styling)?void 0:r.className},c&&"LEFT"===c.position&&u(),l.map((e=>t().createElement(hi,{key:e.id,col:e,row:n,index:i}))),c&&"RIGHT"===c.position&&u())};di.propTypes={row:r().instanceOf(Object),index:r().number};const pi=()=>{const{state:n}=(0,e.useContext)(Wn),{rows:i}=n;return t().createElement("tbody",null,i.map(((e,n)=>t().createElement(di,{key:n,row:e,index:n}))))};var gi=Object.defineProperty,mi=Object.defineProperties,fi=Object.getOwnPropertyDescriptors,yi=Object.getOwnPropertySymbols,bi=Object.prototype.hasOwnProperty,vi=Object.prototype.propertyIsEnumerable,wi=(e,t,n)=>t in e?gi(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Ai=(e,t)=>{for(var n in t||(t={}))bi.call(t,n)&&wi(e,n,t[n]);if(yi)for(var n of yi(t))vi.call(t,n)&&wi(e,n,t[n]);return e},Ci=(e,t)=>mi(e,fi(t));function ki({value:n,onChange:i,noDataMessage:o,loading:r,infiniteScrolling:s}){var a;const[l,c]=(0,e.useState)(null),[u,h]=(0,e.useState)("api"),d=(0,e.useRef)(null),p=e=>{c(Ci(Ai({},l),{rows:l.rows.map((t=>Ci(Ai({},t),{selected:e})))}))},g={getState:()=>l,setState:e=>c(e)},m=(e,t)=>{var n,i;h(e),"sort"===e&&(n=t.column.id,i=t.sortOrder,c(Ci(Ai({},l),{sort:{order:i,col:n}}))),"header.selectAll.click"===e&&p(t),"header.selectAll.change"===e&&p(t),"row.selected"===e&&(e=>{const{index:t,selected:n}=e,i=l.rows[t];c(Ci(Ai({},l),{rows:[...l.rows.slice(0,t),Ci(Ai({},i),{selected:n}),...l.rows.slice(t+1)]}))})(t),"pagination.change"===e&&(e=>{c(Ci(Ai({},l),{pagination:Ci(Ai({},l.pagination),{current:e+1})}))})(t)};if((0,e.useEffect)((()=>c(n)),[n]),(0,e.useEffect)((()=>{i&&i(u,l,g),h("api")}),[l]),!l)return t().createElement(te,{position:"absolute"});if(l.rows<=0)return t().createElement(ie,{theme:"info"},o||"No Data Available");const f=()=>t().createElement("table",{className:"tyk-table",ref:d},t().createElement(Yn,null),t().createElement(pi,null));return t().createElement(Wn.Provider,{value:{state:l,sendMessage:m}},t().createElement("div",{className:`scrollable ${(null==(a=l.styling)?void 0:a.className)||""}`,style:{height:l.maxHeight?l.maxHeight:"auto",position:"relative"}},r&&t().createElement(te,{position:"absolute",withbackground:!0}),s&&l.pagination?t().createElement(nt,{refChild:d,hasMore:l.pagination.totalPages>l.pagination.current,loadMore:e=>m("pagination.change",e),pageNumber:l.pagination.current-1,initialLoad:!1},f()):f()),l.pagination&&!s&&t().createElement("div",{className:"new-table-pagination"},t().createElement(Fn,{value:l.pagination.current-1,nrItemsOnPage:l.pagination.perPage-1,totalNrOfPages:l.pagination.totalPages-1,onChange:e=>m("pagination.change",e)})))}ki.propTypes={value:r().shape({columns:r().arrayOf(r().shape({id:r().string.isRequired,name:r().string,type:r().oneOfType([r().string,r().element,r().func]),sortable:r().oneOfType([r().bool,r().shape({default:r().string})])})),rows:r().arrayOf(r().shape({})),selectable:r().shape({}),pagination:r().shape({}),maxHeight:r().string,styling:r().shape({className:r().string})}).isRequired,onChange:r().func,noDataMessage:r().string,loading:r().bool,infiniteScrolling:r().bool},ki.defaultProps={loading:!1,infiniteScrolling:!1,noDataMessage:"No Data Available",onChange:null};const xi=ki;var Si=Object.defineProperty,$i=Object.defineProperties,Ei=Object.getOwnPropertyDescriptors,Oi=Object.getOwnPropertySymbols,Ti=Object.prototype.hasOwnProperty,_i=Object.prototype.propertyIsEnumerable,Ri=(e,t,n)=>t in e?Si(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;class Mi extends e.PureComponent{getCssClasses(){const{align:e,className:t,offset:n,size:i}=this.props,o=i.split(" "),r=n?n.split(" "):[];let s=o.map((e=>`tyk-col--${e}`));const a=r.map((e=>`tyk-col--offset-${e}`));return e&&s.push(`tyk-col--align-${e}`),t&&(s=s.concat(t.split(" "))),s.push("tyk-col"),s=s.concat(a||[]),s.join(" ")}render(){const e=this.props,{children:n,id:i}=e,o=((e,t)=>{var n={};for(var i in e)Ti.call(e,i)&&t.indexOf(i)<0&&(n[i]=e[i]);if(null!=e&&Oi)for(var i of Oi(e))t.indexOf(i)<0&&_i.call(e,i)&&(n[i]=e[i]);return n})(e,["children","id"]);return t().createElement("div",(r=((e,t)=>{for(var n in t||(t={}))Ti.call(t,n)&&Ri(e,n,t[n]);if(Oi)for(var n of Oi(t))_i.call(t,n)&&Ri(e,n,t[n]);return e})({},o),s={className:this.getCssClasses(),id:i},$i(r,Ei(s))),n);var r,s}}((e,t,n)=>{Ri(e,t+"",n)})(Mi,"propTypes",{align:r().string,className:r().string,id:r().string,size:r().string.isRequired,offset:r().string,children:r().oneOfType([r().element,r().string,r().object,r().node])});const Li=Mi;var Bi=Object.defineProperty,Ni=Object.defineProperties,Ii=Object.getOwnPropertyDescriptors,Pi=Object.getOwnPropertySymbols,Di=Object.prototype.hasOwnProperty,Fi=Object.prototype.propertyIsEnumerable,Wi=(e,t,n)=>t in e?Bi(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;class Hi extends e.PureComponent{getCssClasses(){const{className:e,nogutters:t}=this.props;let n=["tyk-row"];return t&&(n.push("no-gutters"),n.push("tyk-row--gutterless")),e&&(n=n.concat(e.split(" "))),n.join(" ")}render(){const e=this.props,{children:n,nogutters:i}=e,o=((e,t)=>{var n={};for(var i in e)Di.call(e,i)&&t.indexOf(i)<0&&(n[i]=e[i]);if(null!=e&&Pi)for(var i of Pi(e))t.indexOf(i)<0&&Fi.call(e,i)&&(n[i]=e[i]);return n})(e,["children","nogutters"]);return t().createElement("div",(r=((e,t)=>{for(var n in t||(t={}))Di.call(t,n)&&Wi(e,n,t[n]);if(Pi)for(var n of Pi(t))Fi.call(t,n)&&Wi(e,n,t[n]);return e})({},o),s={className:this.getCssClasses()},Ni(r,Ii(s))),n);var r,s}}((e,t,n)=>{Wi(e,t+"",n)})(Hi,"propTypes",{children:r().oneOfType([r().element,r().node]),className:r().string,nogutters:r().bool});const ji=(0,e.createContext)();function zi(n){const{customdropdownitem:i,children:o,eventKey:r,href:s,target:a,title:l,onClick:c}=n,u=(0,e.useCallback)(((e,t)=>{e.onSelectItem(r,t),c&&c(r)}),[]);return t().createElement(ji.Consumer,null,(c=>t().createElement("li",{onClick:()=>u(c,n),onKeyUp:()=>{}},i?(0,e.cloneElement)(i,{}):t().createElement("a",{href:s,target:a},r&&c.selectedItem===r&&c.showCheckmark?t().createElement(g,{type:"check"}):null,t().createElement("span",null,l||o)))))}zi.propTypes={children:r().oneOfType([r().element,r().node,r().string]),customdropdownitem:r().oneOfType([r().arrayOf(r().node),r().node,r().element]),eventKey:r().string,href:r().string,target:r().string,onClick:r().func,title:r().string};const Ui=zi;var Vi=Object.defineProperty,Gi=Object.getOwnPropertySymbols,Ki=Object.prototype.hasOwnProperty,qi=Object.prototype.propertyIsEnumerable,Yi=(e,t,n)=>t in e?Vi(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;class Ji extends e.Component{static isElemInRightView(e,t){const n=window.innerWidth;return e.getBoundingClientRect().left+t<=n}static isElemInBottomView(e,t){const n=window.innerHeight,i=e.getBoundingClientRect(),o=e.clientHeight;return i.top+o+t<=n}constructor(t){super(t);const{selectedItem:n,open:i}=this.props;this.state={opened:i,selectedItem:n||null},this.dropdownRef=(0,e.createRef)(),this.dropdownListRef=(0,e.createRef)(),this.dropdownButtonRef=(0,e.createRef)(),this.onSelectItem=this.onSelectItem.bind(this),this.toggleDropdown=this.toggleDropdown.bind(this),this.handleClickOutside=this.handleClickOutside.bind(this)}componentDidMount(){document.addEventListener("mousedown",this.handleClickOutside),this.dropdownListRef.current&&this.getStyles()}componentDidUpdate(e){const{open:t}=this.props,{opened:n}=this.state;this.dropdownListRef.current&&this.getStyles(),e.open||!0!==t||n||this.toggleDropdown(),e.open&&!1===t&&n&&this.closeDropdown()}componentWillUnmount(){document.removeEventListener("mousedown",this.handleClickOutside)}handleClickOutside(e){this.dropdownListRef.current&&!this.dropdownListRef.current.contains(e.target)&&this.dropdownRef.current&&!this.dropdownRef.current.contains(e.target)&&this.closeDropdown()}onSelectItem(e,t){const{closeOnSelect:n,onSelect:i}=this.props,o={selectedItem:e,selectedItemProps:t};n&&(o.opened=!1),this.setState(o),i&&"function"==typeof i&&i(e)}getStyles(){const{display:e,position:t,offset:n}=this.props,i=this.dropdownListRef.current;if(n)return i.style.top=`${n.top}`,void(i.style.left=`${n.left}`);const o=Math.max(document.documentElement.scrollTop,document.body.scrollTop,window.scrollY),r=this.dropdownRef.current,s=r.clientHeight,a=i?i.clientHeight:0,l=i?i.clientWidth:0,c=r.getBoundingClientRect(),{left:u,top:h}=c;let d=0,p=u;d=Ji.isElemInBottomView(r,a)?h+o+s:h+o-a-5,p=Ji.isElemInRightView(r,l)?u:u+r.clientWidth-l,"relative"!==t&&(i.style.top=`${d}px`,"block"!==e&&(i.style.left=`${p}px`)),"block"!==e&&(i.style.minWidth=`${this.dropdownButtonRef.current.clientWidth}px`)}getWrapperCssClasses(){const{btnGroup:e,btnGroupSize:t,className:n,btnTheme:i,wrapperClassName:o=""}=this.props;let r=[o,"tyk-dropdown"];return r.push(`theme-${i||"default"}`),n&&(r=r.concat(n.split(" "))),e&&(r.push("tyk-button-group"),r.push(t?`tyk-button-group--${t}`:"tyk-button-group--md")),r.join(" ")}getCssClasses(){const{opened:e}=this.state,{hasCustomContent:t,display:n,listclassnames:i,position:o,maxHeight:r}=this.props;let s=["tyk-dropdown-menu","tyk-dropdown"];return r&&s.push("tyk-dropdown--scrollable"),e&&s.push("opened"),i&&(s=s.concat(i.split(" "))),n&&s.push("tyk-dropdown--block"),t&&s.push("tyk-dropdown--custom"),"relative"===o&&s.push("tyk-dropdown--relative"),s.join(" ")}getBtnTitle(){const{btnTitle:e,stopButtonTextChange:t}=this.props,{selectedItemProps:n}=this.state;return!t&&n&&n.title?n.title:e}closeDropdown(){const{onClose:e}=this.props;this.setState({opened:!1},(()=>{e&&e()}))}toggleDropdown(){const{opened:e}=this.state;e?this.closeDropdown():this.setState({opened:!0})}render(){const{appendTo:e,btnClassName:n,btnSize:i,customBtnTitle:o,hasCustomContent:r,btnTheme:s,children:a,label:l,showDropdownIcon:c,showTriggerButton:u,showCheckmark:h,disabled:d=!1,maxHeight:p}=this.props,{selectedItem:g,opened:m}=this.state,f=r?"div":"ul";return t().createElement("div",{className:this.getWrapperCssClasses(),ref:this.dropdownRef},l?t().createElement("label",{className:"font-family-medium"},l):null,u?t().createElement(q,{className:`tyk-dropdown__trigger ${m?"tyk-dropdown__trigger--opened ":" "} ${n}`,theme:s||"default",onClick:this.toggleDropdown,iconType:c?"chevron-down":null,iconPosition:"right",size:i||"md",type:"button",disabled:d,ref:this.dropdownButtonRef},o||this.getBtnTitle()):null,m?Fe().createPortal(t().createElement(ji.Provider,{value:{onSelectItem:this.onSelectItem,selectedItem:g,showCheckmark:h}},m?t().createElement(f,((e,t)=>{for(var n in t||(t={}))Ki.call(t,n)&&Yi(e,n,t[n]);if(Gi)for(var n of Gi(t))qi.call(t,n)&&Yi(e,n,t[n]);return e})({className:this.getCssClasses(),ref:this.dropdownListRef},p&&{style:{maxHeight:p}}),"function"==typeof a?a({closeDropdown:this.closeDropdown.bind(this)}):a):null),document.querySelector(e||"body")):null)}}Ji.propTypes={appendTo:r().string,children:r().oneOfType([r().element,r().node,r().string,r().func]),closeOnSelect:r().bool,btnClassName:r().string,btnSize:r().string,btnGroupSize:r().string,btnTheme:r().string,btnTitle:r().oneOfType([r().node,r().element,r().string]),customBtnTitle:r().oneOfType([r().node,r().element,r().string]),btnGroup:r().bool,className:r().string,display:r().string,disabled:r().bool,hasCustomContent:r().bool,label:r().oneOfType([r().arrayOf(r().node),r().node,r().element,r().func,r().string]),listclassnames:r().string,onClose:r().func,onSelect:r().func,open:r().bool,offset:r().instanceOf(Object),position:r().string,selectedItem:r().string,showDropdownIcon:r().bool,stopButtonTextChange:r().bool,showTriggerButton:r().bool,showCheckmark:r().bool,maxHeight:r().string,wrapperClassName:r().string},Ji.defaultProps={closeOnSelect:!1,showDropdownIcon:!0,showTriggerButton:!0,showCheckmark:!0,open:!1},Ji.Item=Ui;const Qi=Ji;var Xi=n(239),Zi=n.n(Xi);const eo=require("react-ace");var to=n.n(eo);n(395),n(576),n(7),n(549),n(252),n(202),n(711),n(604),n(134),n(203);const no=n.p+"ee385296b124aae4e5d9.js";var io=Object.defineProperty,oo=Object.defineProperties,ro=Object.getOwnPropertyDescriptors,so=Object.getOwnPropertySymbols,ao=Object.prototype.hasOwnProperty,lo=Object.prototype.propertyIsEnumerable,co=(e,t,n)=>t in e?io(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,uo=(e,t)=>{for(var n in t||(t={}))ao.call(t,n)&&co(e,n,t[n]);if(so)for(var n of so(t))lo.call(t,n)&&co(e,n,t[n]);return e};function ho(n){const{disabled:i,readOnly:o,disableValidation:r,id:s,error:a,label:l,labelwidth:c,note:u,onBlur:h,onChange:d,theme:p,value:g,setOptions:m,wrapperClassName:f}=n,y=["tyk-form-group",f,...p?p.split(" ").map((e=>`tyk-form-group--${e}`)):[],c&&"tyk-form-group--label-has-width",a&&"has-error"].filter(Boolean).join(" "),b=uo(uo({},m),r&&{useWorker:!1}),v=(0,e.useCallback)((()=>a&&"true"!==a&&"false"!==a?t().createElement("p",{className:"tyk-form-control__error-message"},a):null),[a]),w=(0,e.useCallback)((()=>c?{flexBasis:c}:{}),[c]),A=(0,e.useCallback)((()=>c?{flexBasis:`calc(100% - ${c} - 20px)`}:{}),[c]),C=(0,e.useCallback)((e=>{d&&d(e)}),[d]),k=(0,e.useCallback)((()=>{h&&h(g)}),[h,g]);return t().createElement("div",{className:y},l?t().createElement("label",{htmlFor:s,style:w()},l):null,t().createElement("div",{className:"tyk-form-control__wrapper",style:A()},t().createElement(to(),(x=uo({className:"tyk-form-control"},n),oo(x,ro({onChange:C,onBlur:k,theme:"github",editorProps:{$blockScrolling:!0},readOnly:o||i,onLoad:e=>{e.container.style.resize="both",document.addEventListener("mouseup",(()=>e.resize()))},setOptions:b})))),u?t().createElement("p",{className:"tyk-form-control__help-block"},u):null,v()));var x}Zi().config.setModuleUrl("ace/mode/json_worker",no),ho.propTypes={disabled:r().bool,readOnly:r().bool,disableValidation:r().bool,id:r().string,error:r().oneOfType([r().string,r().bool]),label:r().oneOfType([r().arrayOf(r().node),r().node,r().element,r().func,r().string]),labelwidth:r().string,mode:r().string,name:r().string,note:r().string,onBlur:r().func,onChange:r().func,theme:r().string,value:r().string,setOptions:r().instanceOf(Object),wrapperClassName:r().string};const po=ho;var go=Object.defineProperty,mo=Object.defineProperties,fo=Object.getOwnPropertyDescriptors,yo=Object.getOwnPropertySymbols,bo=Object.prototype.hasOwnProperty,vo=Object.prototype.propertyIsEnumerable,wo=(e,t,n)=>t in e?go(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Ao=(e,t,n)=>(wo(e,"symbol"!=typeof t?t+"":t,n),n);const Co=(e,t,n)=>n||(e||t?[]:null),ko=class n extends e.Component{static closeList(){return{cursor:-1,opened:!1}}static openList(){return{opened:!0}}static filterByName(e,t){return e.name.toLowerCase().indexOf(t)>-1}constructor(t){super(t);const{multiple:i,tags:o,value:r}=t;this.state={cursor:-1,opened:!1,width:50,initialValue:r,stateSelectedValues:Co(i,o,r),searchText:"",tags:o},this.comboboxRef=(0,e.createRef)(),this.valuesListRef=(0,e.createRef)(),this.inputRef=(0,e.createRef)(),this.textRef=(0,e.createRef)(),this.focusInput=this.focusInput.bind(this),this.onKeyUp=this.onKeyUp.bind(this),n.openList=n.openList.bind(this),this.handleClickOutside=this.handleClickOutside.bind(this),this.handleItemsNavigation=this.handleItemsNavigation.bind(this),this.handleComboboxDropdownClick=this.handleComboboxDropdownClick.bind(this),this.handleListItemClick=this.handleListItemClick.bind(this),this.handlePillRemoveClick=this.handlePillRemoveClick.bind(this),this.manageSelectedTags=this.manageSelectedTags.bind(this)}componentDidMount(){const{tags:e}=this.props;e&&this.setInputWidth(),this.bindEvents()}componentWillUnmount(){this.unBindEvents()}static getDerivedStateFromProps(e,t){return JSON.stringify(e.value)!==JSON.stringify(t.initialValue)||e.tags!==t.tags?{initialValue:e.value,stateSelectedValues:Co(e.multiple,e.tags,e.value),tags:e.tags}:null}onKeyUp(e){const{tags:t,allowCustomValues:i}=this.props,{cursor:o,opened:r}=this.state,s=this.filterValues();let a=Object.assign({},this.getSearchText());if(t&&"Escape"!==e.key&&(a=Object.assign({},a,this.setInputWidth())),"Enter"===e.key){const e=t?"manageSelectedTags":"manageSelectedValues";a=Object.assign({},a,this[e](o))}i&&" "===!e.key&&t&&(a=Object.assign({},a,this.manageSelectedTags())),!r&&this.inputRef.current.value&&s&&s.length&&"Escape"!==e.key&&(a=Object.assign({},a,n.openList())),"Escape"===e.key&&r&&(a=Object.assign({},a,n.closeList())),r&&s&&!s.length&&(a=Object.assign({},a,n.closeList())),this.setState((e=>Object.assign({},e,a)))}getLabelStyles(){const{labelwidth:e}=this.props,t={};return e&&(t.flexBasis=e),t}getNonLabelWidth(){const{labelwidth:e}=this.props,t={};return e&&(t.flexBasis=`calc(100% - ${e} - 20px)`),t}setInputWidth(){return{width:50+this.textRef.current.offsetWidth}}getSelectedIndex(e){const{stateSelectedValues:t}=this.state;let n=-1;return Array.isArray(t)?t.forEach(((t,i)=>{t.id===e.id&&(n=i)})):t&&t.id===e.id&&(n=0),n}getSearchText(){return{searchText:this.inputRef.current.value}}getListItemCssClasses(e,t){const n=[],{cursor:i}=this.state;return i===t&&n.push("active"),e.disabled&&n.push("disabled"),n.join(" ")}getComboboxListCssClass(){const{opened:e}=this.state,{tags:t,theme:n}=this.props,i=n?n.split(" "):[],o=["tyk-combobox__list"];return e&&o.push("tyk-combobox__list--opened"),t&&o.push("tyk-combobox__list--has-tags"),i.length&&i.forEach((e=>{o.push(`tyk-form-group--${e}`)})),o.join(" ")}getCssClasses(){const{error:e,disabled:t,theme:n,labelwidth:i}=this.props,o=["tyk-form-group","tyk-combobox"],r=n?n.split(" "):[];return e&&o.push("has-error"),i&&o.push("tyk-form-group--label-has-width"),r.length&&r.forEach((e=>{o.push(`tyk-form-group--${e}`)})),t&&o.push("disabled"),o.join(" ")}getInputError(){const{error:e}=this.props;return e&&"true"!==e&&"false"!==e?t().createElement("p",{className:"tyk-form-control__error-message"},e):null}getStyles(){const{scrollTop:e}=document.documentElement,t=this.comboboxRef.current,n=t.offsetHeight,i=t.offsetWidth,o=t.getBoundingClientRect(),{left:r}=o;let s=0;return s=o.top+e+n,{top:s-1+"px",left:`${r}px`,width:`${i}px`}}getComboboxDisplayData(){const{stateSelectedValues:e}=this.state,{multiple:t,placeholder:n,values:i}=this.props;return e?e&&Array.isArray(e)&&!e.length?n:!e||Array.isArray(e)||e.id?Array.isArray(e)&&t?e.reduce(((t,n,i)=>t+n.name+(i!==e.length-1?", ":"")),""):i&&i.length&&!Array.isArray(e)&&!e.name?i.filter((t=>t.id===e.id))[0].name:e.name:n:n}manageSelectedTags(e){const{max:t,allowCustomValues:n}=this.props,{stateSelectedValues:i}=this.state,o=this.filterValues(),r={id:this.inputRef.current.value,name:this.inputRef.current.value};if(!1===n&&-1===e)return null;const s=o[e]||r,a=this.getSelectedIndex(s);let l={};if(this.inputRef.current.value="",a>-1&&this.isInInitialValues(s))l=this.removeSelectedValue(a);else if(-1===a){if(t&&i.length>=t)return l;l=this.addSelectedValue(s)}return l}manageSelectedValues(e){const{stateSelectedValues:t}=this.state,{multiple:n,onChange:i,max:o}=this.props,r=this.filterValues(),s=r[e];let a;const l=this.getSelectedIndex(s);if(s&&n)if(l>-1)a=this.removeSelectedValue(l);else{if(o&&t.length>=o)return a;a=this.addSelectedValue(r[e])}else a={stateSelectedValues:-1===l?s:{id:null}},i&&"function"==typeof i&&i(-1===l?s:null);return a}removeSelectedValue(e){const{stateSelectedValues:t}=this.state,{onChange:n}=this.props,i=JSON.parse(JSON.stringify(t));return i.splice(e,1),n&&"function"==typeof n&&n(i.length?i:null),{stateSelectedValues:i,searchText:""}}addSelectedValue(e){const{stateSelectedValues:t}=this.state,{onChange:n}=this.props,i=JSON.parse(JSON.stringify(t));return i.push(e),n&&"function"==typeof n&&n(i.length?i:null),{stateSelectedValues:i,searchText:""}}isInInitialValues(e){const{values:t}=this.props;let n=!1;return t.forEach((t=>{e.id===t.id&&(n=!0)})),n}filterValues(){const{values:e,searchItem:t}=this.props;if(!this.inputRef.current)return e;const i=e.filter((e=>t?t(e,this.inputRef.current.value.toLowerCase()):n.filterByName(e,this.inputRef.current.value.toLowerCase())));return i}bindEvents(){document.addEventListener("mousedown",this.handleClickOutside)}unBindEvents(){document.removeEventListener("mousedown",this.handleClickOutside)}handleItemsNavigation(e){const{tags:t}=this.props;if(-1===["ArrowDown","ArrowUp"].indexOf(e.key))return;const{cursor:n}=this.state,i=this.filterValues();let o;if(e.preventDefault(),"ArrowDown"===e.key&&(-1===n||n===i.length-1?o=0:n0?n-1:i.length-1),this.valuesListRef.current&&o>4){const e=38*(o-4);this.valuesListRef.current.scrollTop=t?e:60+e}else this.valuesListRef.current&&(this.valuesListRef.current.scrollTop=0);this.setState((e=>{return t=((e,t)=>{for(var n in t||(t={}))bo.call(t,n)&&wo(e,n,t[n]);if(yo)for(var n of yo(t))vo.call(t,n)&&wo(e,n,t[n]);return e})({},e),mo(t,fo({opened:!0,cursor:o}));var t}))}handleListItemClick(e){if(this.props.values[e].disabled)return;const{multiple:t,tags:n}=this.props,i=n?"manageSelectedTags":"manageSelectedValues",o=Object.assign({},this.state,this[i](e));this.setState((e=>(t||n||(o.opened=!1),Object.assign({},e,o))))}handlePillRemoveClick(e){const{disabled:t}=this.props;if(t)return;const n=this.removeSelectedValue(e);this.setState((e=>Object.assign({},e,n)))}handleClickOutside(e){this.valuesListRef.current&&!this.valuesListRef.current.contains(e.target)&&this.comboboxRef.current&&!this.comboboxRef.current.contains(e.target)&&this.setState((e=>Object.assign({},e,n.closeList())))}handleComboboxDropdownClick(){const{disabled:e}=this.props;e||this.setState((e=>Object.assign({},e,n.openList())))}reset(){const{multiple:e,tags:t,value:n}=this.props;this.setState({stateSelectedValues:Co(e,t,n)})}focusInput(){this.inputRef.current&&this.inputRef.current.focus()}render(){const{CustomListComponent:n,disabled:i,id:o,label:r,note:s,tags:a,max:l,placeholder:c}=this.props,{width:u,opened:h,searchText:d,stateSelectedValues:p}=this.state,m=this.filterValues();return t().createElement(e.Fragment,null,t().createElement("div",{className:this.getCssClasses()},r?t().createElement("label",{htmlFor:o,style:this.getLabelStyles()},r):null,t().createElement("div",{className:"tyk-form-control__wrapper",style:this.getNonLabelWidth()},t().createElement("ul",{className:"tyk-form-control"+(a?" tyk-form-control--with-tags":""),onClick:this.focusInput,onKeyDown:()=>{},ref:this.comboboxRef},a?t().createElement(e.Fragment,null,(p||[]).map(((e,n)=>t().createElement("li",{className:"pill",key:e.id},t().createElement("button",{type:"button",onClick:this.handlePillRemoveClick.bind(this,n)},t().createElement(g,{type:"times"})),t().createElement("span",null,e.name)))),t().createElement("li",{className:"tyk-combobox__search-box",style:{width:p&&p.length?"auto":"100%"}},(void 0===l||(null==p?void 0:p.length){"Enter"===e.key&&e.preventDefault()},onKeyUp:this.onKeyUp,onKeyDown:this.handleItemsNavigation,placeholder:p&&p.length?"":c,ref:this.inputRef,style:{width:p&&p.length?`${u}px`:"100%"}}),t().createElement("span",{ref:this.textRef,style:{visbility:"hidden",position:"absolute",top:"-9999px"}},d)),m.length?t().createElement(q,{className:"tyk-combobox--with-tags__button-down",iconType:"arrow-down",iconOnly:!0,onClick:this.handleComboboxDropdownClick}):null)):t().createElement("li",{className:"tyk-combobox__placeholder",onClick:this.handleComboboxDropdownClick,onKeyDown:()=>{}},this.getComboboxDisplayData(),t().createElement(g,{family:"tykon",type:"arrowdown"}))),s?t().createElement("p",{className:"tyk-form-control__help-block"},s):null,this.getInputError())),n?t().createElement(n,{ref:this.valuesListRef,className:this.getComboboxListCssClass(),getListItemCssClasses:this.getListItemCssClasses.bind(this),getSelectedIndex:this.getSelectedIndex.bind(this),filteredValues:m,handleListItemClick:this.handleListItemClick.bind(this)}):h&&m.length?Fe().createPortal(t().createElement("ul",{className:this.getComboboxListCssClass(),ref:this.valuesListRef,style:this.getStyles()},a?null:t().createElement("li",{className:"combobox-search__container"},t().createElement("input",{autoFocus:h,className:"tyk-form-control",onKeyUp:this.onKeyUp,onKeyDown:this.handleItemsNavigation,key:"searchInput",ref:this.inputRef})),m.map(((e,n)=>t().createElement("li",{className:this.getListItemCssClasses(e,n),onClick:this.handleListItemClick.bind(this,n),onKeyDown:()=>{},key:e.id},this.getSelectedIndex(e)>-1?t().createElement(g,{type:"check"}):null,t().createElement("span",null," ",e.name))))),document.querySelector("body")):null)}};Ao(ko,"propTypes",{allowCustomValues:r().bool,CustomListComponent:r().elementType,searchItem:r().func,disabled:r().bool,error:r().string,id:r().string,label:r().oneOfType([r().arrayOf(r().node),r().node,r().element,r().func,r().string]),labelwidth:r().string,multiple:r().bool,max:r().number,note:r().oneOfType([r().node,r().element,r().string]),onChange:r().func,placeholder:r().string,tags:r().bool,theme:r().string,value:r().oneOfType([r().string,r().instanceOf(Object),r().instanceOf(Array)]),values:r().instanceOf(Array)}),Ao(ko,"defaultProps",{allowCustomValues:!0});let xo=ko;const So=function(n){const{value:i,max:o,tags:r,tagSeparators:s,addTagOnBlur:a,placeholder:l,disabled:c,renderValue:u,valueOverflow:h,focus:d,onMessage:p,readOnly:m}=n,f=(0,e.useRef)(null),y=(0,e.useRef)(null),[b,v]=(0,e.useState)(""),[w,A]=(0,e.useState)("70px");function C(e){if(s.some((t=>e.slice(-1)===t)))return;const t=y.current;t.innerHTML=e,A(`${Math.max(t.clientWidth,60)+10}px`),v(e),p("tag.input.change",e)}function k(){p("text-value.click")}function x(e,n=!1){if(m)return e||"-";const i=["tyk-combobox2__text-value",`overflow-${h}`,n&&"is-placeholder"].filter(Boolean).join(" ");return t().createElement("span",{className:i,title:"single"===h?e:void 0,role:"none",tabIndex:c?"-1":"0",onClick:k,onKeyPress:k},e)}function S(e){return u(e,{tags:r,tagSeparators:s,placeholder:l,disabled:c,renderValue:u,sendMessage:p})}return(0,e.useEffect)((()=>{d&&f.current&&f.current.focus()}),[d]),m?t().createElement("div",{className:"tyk-form-control--readonly"},x(i.map((e=>e.name)).join(", "))):r?t().createElement(t().Fragment,null,i.map((function(e){return u?S(e):t().createElement(Ht,{key:e.id,theme:"combobox"},t().createElement("button",{type:"button",onClick:t=>{t.stopPropagation(),p("tag.remove",e.id)}},t().createElement(g,{type:"times"})),t().createElement("span",{title:e.name},e.name))})),i.lengthC(e.target.value),onKeyDown:e=>{"Enter"===e.key&&e.preventDefault(),function(e,t){if(r){if(""!==t||"Backspace"!==e||!i.length)return"Enter"===e?(p("tag.input.enter",t),void C("")):void("ArrowUp"!==e?"ArrowDown"!==e?"Escape"!==e?s.includes(e)&&(p("tag.add",t),C("")):p("tag.input.escape"):p("tag.input.arrowDown"):p("tag.input.arrowUp"));p("tag.remove",i[i.length-1].id)}}(e.key,e.target.value)},onFocus:()=>p("tag.input.focus"),onBlur:e=>{p("tag.input.blur",e.target.value),a&&C("")}}),t().createElement("span",{ref:y,style:{visbility:"hidden",position:"absolute",top:"-9999px"}}))):u?0===i.length?x(l,!0):i.map(S):0===i.length?x(l,!0):x(i.map((e=>e.name)).join(", "))};function $o(n){const{listRef:i,tags:o,values:r,searchValue:s,activeItem:a,onMessage:l,renderListItem:c,selectAll:u,showSearch:h}=n;return(0,e.useEffect)((()=>{if(!i.current)return;const e=i.current.querySelector(".active");e&&e.scrollIntoView({block:"end"})}),[a]),t().createElement(t().Fragment,null,!o&&h&&t().createElement("div",{className:"tyk-combobox2__combobox-search"},t().createElement("input",{autoFocus:!0,className:"tyk-form-control",value:s,onChange:e=>l("search.change",e.target.value),onKeyDown:e=>{"Escape"===e.key&&l("search.escape"),"ArrowUp"===e.key&&l("search.arrowUp"),"ArrowDown"===e.key&&l("search.arrowDown"),"Enter"===e.key&&l("search.enter")}})),r.length>0&&t().createElement("ul",{ref:i,className:"tyk-combobox2__combobox-list"},Boolean(u)&&function(){var e,n,i;const o=r.every((e=>e.selected)),s=r.every((e=>!e.selected)),a=null!=(e=null==u?void 0:u.label)?e:"Select All",c=null!=(n=null==u?void 0:u.mode)?n:"select",h=null!=(i=null==u?void 0:u.show)?i:"always",d=null==u?void 0:u.render;return"always"!==h&&("select"===c?o:s)?null:d?d({label:a,mode:c,show:h,isAllSelected:o,isNoneSelected:s},l):t().createElement("li",{onClick:()=>l("value.select-all","select"===c?!o:s),onKeyDown:()=>{}},("select"===c?o:s)&&t().createElement(g,{type:"check"}),a)}(),r.map((function(e){return c?c(e,{tags:o,searchValue:s,sendMessage:l,activeItem:a}):t().createElement("li",{key:e.id,title:e.name,className:[e.disabled&&"disabled",a&&e.id===a.id&&"active"].filter(Boolean).join(" "),onClick:()=>!e.disabled&&l("value.select",{item:e}),onKeyPress:()=>{}},e.selected&&t().createElement(g,{type:"check"}),t().createElement("span",{className:"item-name"},e.name))}))))}$o.propTypes={listRef:r().instanceOf(Object),tags:r().bool,values:r().instanceOf(Array),searchValue:r().string,activeItem:r().instanceOf(Object),onMessage:r().func,renderListItem:r().func,selectAll:r().oneOfType([r().bool,r().shape({label:r().oneOfType([r().arrayOf(r().node),r().node,r().element,r().func,r().string]),mode:r().oneOf(["select","unselect"]),show:r().oneOf(["always","notSameState"]),render:r().func})]),showSearch:r().bool};const Eo=$o;var Oo=Object.defineProperty,To=Object.defineProperties,_o=Object.getOwnPropertyDescriptors,Ro=Object.getOwnPropertySymbols,Mo=Object.prototype.hasOwnProperty,Lo=Object.prototype.propertyIsEnumerable,Bo=(e,t,n)=>t in e?Oo(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,No=(e,t)=>{for(var n in t||(t={}))Mo.call(t,n)&&Bo(e,n,t[n]);if(Ro)for(var n of Ro(t))Lo.call(t,n)&&Bo(e,n,t[n]);return e},Io=(e,t)=>To(e,_o(t));function Po(e,t){let n=e;if("string"==typeof e?n={id:e,name:e}:e.hasOwnProperty("name")||(n=Io(No({},e),{name:e.id})),!t)return n;const i=t.find((e=>e.id===n.id));return i?No(No({},n),i):n}function Do(e,t){return e?Array.isArray(e)?e.map((e=>Po(e,t))):[Po(e,t)]:[]}function Fo(n){var i=n,{value:o,values:r=[],valueOverflow:s="single",label:a="",labelwidth:l,tags:c=!1,tagSeparators:u=[" ","Enter"],addTagOnBlur:h=!1,max:d,multiple:p=!1,placeholder:m="",theme:f,note:y="",error:b="",disabled:v=!1,readOnly:w=!1,allowCustomValues:A=!0,searchItem:C,renderValue:k,renderListItem:x,renderList:S,CustomListComponent:$,onBeforeChange:E=(()=>!0),onChange:O=(()=>{}),floatingContainerConfig:T,expandMode:_,infiniteScrollerConfig:R,displayDropdownTrigger:M=!0,selectAll:L,closeOnSelect:B,showSearch:N=!1,required:I=!1,validateOnChange:P=(()=>{}),wrapperClassName:D=""}=i,F=((e,t)=>{var n={};for(var i in e)Mo.call(e,i)&&t.indexOf(i)<0&&(n[i]=e[i]);if(null!=e&&Ro)for(var i of Ro(e))t.indexOf(i)<0&&Lo.call(e,i)&&(n[i]=e[i]);return n})(i,["value","values","valueOverflow","label","labelwidth","tags","tagSeparators","addTagOnBlur","max","multiple","placeholder","theme","note","error","disabled","readOnly","allowCustomValues","searchItem","renderValue","renderListItem","renderList","CustomListComponent","onBeforeChange","onChange","floatingContainerConfig","expandMode","infiniteScrollerConfig","displayDropdownTrigger","selectAll","closeOnSelect","showSearch","required","validateOnChange","wrapperClassName"]);const W=p?1/0:d||(c?1/0:1),H=$?(e,{sendMessage:n})=>t().createElement($,{filteredValues:e,handleListItemClick:t=>n("value.select",{item:e[t]}),getListItemCssClasses:()=>{}}):S,j=(0,e.useRef)(null),z=(0,e.useRef)(null),U=(0,e.useRef)(null),V=(0,e.useRef)(null),[G,K]=(0,e.useState)(Do(o,r)),[q,Y]=(0,e.useState)(r.map((e=>Po(e)))),[J,Q]=(0,e.useState)(""),[X,Z]=(0,e.useState)(null),[ee,te]=(0,e.useState)(!1),[ne,ie]=(0,e.useState)(!1),[oe,re]=(0,e.useState)("");function se(){return(f?f.split(" "):[]).map((e=>`tyk-form-group--${e}`))}function ae(){const e=C||((e,t)=>{var n,i;return null==(i=null==(n=null==e?void 0:e.name)?void 0:n.toLowerCase())?void 0:i.includes(t)});return q.filter((t=>e(t,J.toLowerCase())))}function le(){te(!0)}function ce(){te(!1),c||ue(""),Z(null)}function ue(e){Q(e),X&&ae().every((e=>e.id!==X.id))&&Z(null),e&&!ee&&le()}function he(e,t){const n=P(e,t);return re(n),void 0===n}function de(e){K(e),O(1!==W||c?e:e[0]||null)}function pe(e){if(!e)return;if(G.length>=W)return;if(G.some((({name:t})=>t===e)))return;const t=q.findIndex((t=>t.name===e));let n,i,o=[...G];-1===t?A&&(n={id:e,name:e},o=[...G,n]):(i=[...q.slice(0,t),Io(No({},q[t]),{selected:!0}),...q.slice(t+1)],n=q[t],o=[...G,q[t]]),he(o,n)&&E(G,o)&&(i&&Y(i),de(o))}function ge({id:e}){const t=q.find((t=>t.id===e));let n=G,i=q;t.selected?I&&1===W||(n=G.filter((e=>e.id!==t.id)),i=q.map((e=>e.id===t.id?Io(No({},e),{selected:!1}):e))):G.lengthe.id===t.id?Io(No({},e),{selected:!0}):e))):1===W&&(n=[t],i=q.map((e=>Io(No({},e),{selected:e.id===t.id})))),he(n,t)&&E(G,n)&&(de(n),Y(i)),(1===W||B)&&ce()}function me(){const e=ae().filter((e=>!e.disabled));if(0===e.length)return;if(null===X||1===e.length)return void Z(e[e.length-1]);const t=e.findIndex((e=>e.id===X.id));Z(e[t>0?t-1:e.length-1])}function fe(){const e=ae().filter((e=>!e.disabled));if(0===e.length)return;if(null===X||1===e.length)return void Z(e[0]);const t=e.findIndex((e=>e.id===X.id));Z(e[tt.id===e)),n=G.filter((t=>t.id!==e));E(G,n)&&(-1!==t&&Y([...q.slice(0,t),Io(No({},q[t]),{selected:!1}),...q.slice(t+1)]),de(n))}(t),"input.change"===e&&ue(t),"input.enter"===e&&(X?ge(X):u.includes("Enter")&&(pe(t),ue(""))),"input.arrowUp"===e&&(le(),me()),"input.arrowDown"===e&&(le(),fe()),"input.escape"===e&&ce(),"input.blur"===e&&h&&(pe(t),ue("")),"input.focus"===e&&le()}(e.slice(4),t),"value.select"===e&&ge(t.item),"value.select-all"===e&&function(e){if(q.length>W)return;const t=e?[...q]:[];E(G,t)&&(de(t),Y(q.map((t=>Io(No({},t),{selected:e})))),B&&ce())}(t),"text-value.click"===e&&le(),"search.change"===e&&ue(t),"search.escape"===e&&ce(),"search.arrowUp"===e&&me(),"search.arrowDown"===e&&fe(),"search.enter"===e&&X&&ge(X)}(0,e.useEffect)((()=>(window.addEventListener("click",be,!0),()=>window.removeEventListener("click",be,!0))),[]),(0,e.useEffect)((()=>{if(r.length){const e=r.map((e=>Io(No({},Po(e)),{selected:G.some((t=>t.id===e.id))})));Y(e),K((t=>t.map((t=>e.find((e=>e.id===t.id))||t))))}else q.length&&Y([])}),[r]),(0,e.useEffect)((()=>{const e=Do(o,q);K(e),Y((t=>t.map((t=>Io(No({},Po(t)),{selected:e.some((e=>e.id===t.id))})))))}),[o]),(0,e.useEffect)((()=>{if(!_)return()=>{};const e=z.current.querySelector(".tyk-combobox2__current-values"),t=()=>{e.scrollTop=e.scrollHeight},n=new MutationObserver(t),i=new ResizeObserver(t);return n.observe(e,{attributes:!0,childList:!0,subtree:!0}),i.observe(e),()=>{n.disconnect(),i.disconnect()}}));const we=ae(),Ae=["tyk-combobox2__current-values",_&&"expand-mode","tyk-combobox2__current-values--"+(ne?"expanded":"collapsed")].join(" ");return t().createElement("div",Io(No({ref:j,tabIndex:v?"-1":"0",onClickCapture:function(e){if(!v)return;if(!_)return void e.stopPropagation();const t=j.current.querySelector(".tyk-combobox2__values-container-trigger");t&&(t===e.target||t.contains(e.target)||e.stopPropagation())}},F),{className:[D,"tyk-form-group","tyk-combobox2",...se(),(b||oe)&&"has-error",l&&"tyk-form-group--label-has-width",v&&"disabled",_&&"is-expand-mode"].filter(Boolean).join(" ")}),a&&t().createElement("label",{style:{flexBasis:l||"auto"}},a),!w&&t().createElement("div",{className:"tyk-form-control__wrapper",style:{flexBasis:`calc(100% - ${l} - 20px)`}},t().createElement("div",{className:"tyk-form-control",ref:z},t().createElement("div",{className:Ae,onClick:le,role:"none"},t().createElement(So,{value:G,max:W,tags:c,tagSeparators:u,addTagOnBlur:h,allowCustomValues:A,placeholder:m,disabled:v,valueOverflow:s,renderValue:k,focus:ee,onMessage:ve,readOnly:w})),M&&t().createElement("div",{className:"tyk-combobox2__values-container-trigger"+(ne?" tyk-combobox2__values-container-trigger--expanded":""),role:"button",tabIndex:v?-1:0,onClick:ye,onKeyPress:ye},_?t().createElement(g,{type:ne?"compress-arrows-alt":"expand-arrows-alt"}):t().createElement(g,{family:"tykon",type:"arrowdown"}))),ee&&(!c||we.length>0)&&t().createElement(ct,Io(No({element:z,size:"matchElement",className:`tyk-combobox2__combobox-dropdown tyk-form-group ${se().join(" ")}`,ref:U,displayAxis:"vertical"},T),{infiniteScrollerConfig:R}),H?H(we,{tags:c,searchValue:J,activeItem:X,listRef:V,sendMessage:ve}):t().createElement(Eo,{listRef:V,showSearch:N,values:we,tags:c,searchValue:J,activeItem:X,onMessage:ve,renderListItem:x,selectAll:L})),y&&t().createElement("p",{className:"tyk-form-control__help-block"},y),(b&&"true"!==b&&"false"!==b||Boolean(oe))&&t().createElement("p",{className:"tyk-form-control__error-message"},b||oe)),w&&t().createElement("div",null,t().createElement(So,{value:G,tags:c,renderValue:k,readOnly:w})))}Fo.propTypes={allowCustomValues:r().bool,CustomListComponent:r().elementType,searchItem:r().func,renderValue:r().func,renderListItem:r().func,renderList:r().func,disabled:r().bool,readOnly:r().bool,error:r().string,label:r().oneOfType([r().arrayOf(r().node),r().node,r().element,r().func,r().string]),labelwidth:r().string,max:r().number,multiple:r().bool,note:r().oneOfType([r().node,r().element,r().string]),onBeforeChange:r().func,onChange:r().func,placeholder:r().string,tags:r().bool,tagSeparators:r().arrayOf(r().string),addTagOnBlur:r().bool,theme:r().string,value:r().oneOfType([r().string,r().instanceOf(Array),r().instanceOf(Object)]),values:r().instanceOf(Array),floatingContainerConfig:r().instanceOf(Object),valueOverflow:r().oneOf(["single","multiple"]),expandMode:r().bool,infiniteScrollerConfig:r().instanceOf(Object),displayDropdownTrigger:r().bool,selectAll:r().oneOfType([r().bool,r().shape({label:r().oneOfType([r().arrayOf(r().node),r().node,r().element,r().func,r().string]),mode:r().oneOf(["select","unselect"]),show:r().oneOf(["always","notSameState"]),render:r().func})]),closeOnSelect:r().bool,showSearch:r().bool,required:r().bool,validateOnChange:r().func,wrapperClassName:r().string};const Wo=Fo,Ho=require("flatpickr");var jo=n.n(Ho),zo=n(379),Uo=n.n(zo),Vo=n(795),Go=n.n(Vo),Ko=n(569),qo=n.n(Ko),Yo=n(565),Jo=n.n(Yo),Qo=n(216),Xo=n.n(Qo),Zo=n(589),er=n.n(Zo),tr=n(821),nr={};nr.styleTagTransform=er(),nr.setAttributes=Jo(),nr.insert=qo().bind(null,"head"),nr.domAPI=Go(),nr.insertStyleElement=Xo(),Uo()(tr.Z,nr),tr.Z&&tr.Z.locals&&tr.Z.locals;var ir=Object.defineProperty,or=Object.defineProperties,rr=Object.getOwnPropertyDescriptors,sr=Object.getOwnPropertySymbols,ar=Object.prototype.hasOwnProperty,lr=Object.prototype.propertyIsEnumerable,cr=(e,t,n)=>t in e?ir(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;function ur({children:n,disabled:i,readOnly:o=!1,error:r,id:s,label:a,labelwidth:l,note:c,onClose:u,onChange:h,onOpen:d,theme:p,config:m={},value:f,wrapperClassName:y=""}){const[b,v]=(0,e.useState)(null),w=(0,e.useRef)(null),A=C(f),k=(0,e.useCallback)(((e,t)=>{if(!e)return!0;if(!Array.isArray(t))return e.getTime()!==t.getTime();let n=t;return e&&t.length&&e.length?(n=t.filter(((t,n)=>t.getTime()!==e[n].getTime())),n.length>0):t.length>0}),[]),x=(0,e.useCallback)((e=>{const t="range"===m.mode?e:e[0]||null;h&&("range"===m.mode?2===t.length&&k(A,t)&&h(t):h(t))}),[A,h,k]);(0,e.useEffect)((()=>{if(w&&w.current&&!b){const t=jo()(w.current,(e=((e,t)=>{for(var n in t||(t={}))ar.call(t,n)&&cr(e,n,t[n]);if(sr)for(var n of sr(t))lr.call(t,n)&&cr(e,n,t[n]);return e})({},m),or(e,rr({defaultDate:f,onChange:x,onClose:u,onOpen:d}))));v(t)}var e;return()=>{b&&b.destroy()}}),[w.current,b]),(0,e.useEffect)((()=>{if(b){let e=f;"string"==typeof f?e=new Date(f):Array.isArray(f)&&(e=f.map((e=>"string"==typeof e?new Date(e):e))),k(A,e)&&(b.set("onChange",x),"range"===m.mode?e&&2===e.length&&b.setDate(e,!0):b.setDate(e,!0))}}),[A,f,b]);const S=["tyk-form-group","tyk-form-group--addon-right",y,...p?p.split(" ").map((e=>`tyk-form-group--${e}`)):[],l&&"tyk-form-group--label-has-width",r&&"has-error"].filter(Boolean).join(" "),$=(0,e.useCallback)((()=>{b&&b.open()}),[b]);return t().createElement(t().Fragment,null,n&&n.length?n({openCalendar:$,ref:w}):t().createElement("div",{className:S},a?t().createElement("label",{htmlFor:s,style:l?{flexBasis:l}:{}},a):null,!o&&t().createElement("div",{className:"tyk-form-control__wrapper flatpickr",style:l?{flexBasis:`calc(100% - ${l} - 20px)`}:{}},t().createElement("div",{className:"tyk-input-group"},(()=>{let e={},n={};return m&&m.inline&&(e={height:0,padding:0,width:0,visibility:"hidden"},n={display:"none"}),t().createElement(t().Fragment,null,t().createElement("input",{disabled:i,className:"tyk-form-control","data-input":!0,type:"date",ref:w,style:e}),t().createElement("div",{className:"tyk-input-group__addon",onClick:$,role:"button",onKeyUp:()=>{},tabIndex:0,style:n},t().createElement(g,{type:"calendar"})))})()),c?t().createElement("p",{className:"tyk-form-control__help-block"},c):null,r&&"true"!==r&&"false"!==r?t().createElement("p",{className:"tyk-form-control__error-message"},r):null)),t().createElement("div",{className:"tyk-form-control--readonly"},o&&!f&&"-",o&&f&&jo().formatDate(f,m.dateFormat||"d/m/Y")))}ur.propTypes={config:r().instanceOf(Object),children:r().oneOfType([r().element,r().node,r().string,r().func]),disabled:r().bool,readOnly:r().bool,id:r().string,label:r().oneOfType([r().arrayOf(r().node),r().node,r().element,r().func,r().string]),labelwidth:r().string,note:r().string,onChange:r().oneOfType([r().func,r().instanceOf(Array)]),onClose:r().oneOfType([r().func,r().instanceOf(Array)]),onOpen:r().oneOfType([r().func,r().instanceOf(Array)]),theme:r().string,error:r().string,value:r().oneOfType([r().instanceOf(Array),r().instanceOf(Object),r().string]),wrapperClassName:r().string};const hr=ur;function dr(e){return dr="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},dr(e)}function pr(e,t){if(t.length1?"s":"")+" required, but only "+t.length+" present")}function gr(e){return pr(1,arguments),e instanceof Date||"object"===dr(e)&&"[object Date]"===Object.prototype.toString.call(e)}function mr(e){pr(1,arguments);var t=Object.prototype.toString.call(e);return e instanceof Date||"object"===dr(e)&&"[object Date]"===t?new Date(e.getTime()):"number"==typeof e||"[object Number]"===t?new Date(e):("string"!=typeof e&&"[object String]"!==t||"undefined"==typeof console||(console.warn("Starting with v2.0.0-beta.1 date-fns doesn't accept strings as date arguments. Please use `parseISO` to parse strings. See: https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#string-arguments"),console.warn((new Error).stack)),new Date(NaN))}function fr(e){if(null===e||!0===e||!1===e)return NaN;var t=Number(e);return isNaN(t)?t:t<0?Math.ceil(t):Math.floor(t)}function yr(e){pr(1,arguments);var t=mr(e),n=t.getUTCDay(),i=(n<1?7:0)+n-1;return t.setUTCDate(t.getUTCDate()-i),t.setUTCHours(0,0,0,0),t}function br(e){pr(1,arguments);var t=mr(e),n=t.getUTCFullYear(),i=new Date(0);i.setUTCFullYear(n+1,0,4),i.setUTCHours(0,0,0,0);var o=yr(i),r=new Date(0);r.setUTCFullYear(n,0,4),r.setUTCHours(0,0,0,0);var s=yr(r);return t.getTime()>=o.getTime()?n+1:t.getTime()>=s.getTime()?n:n-1}var vr={};function wr(){return vr}function Ar(e,t){var n,i,o,r,s,a,l,c;pr(1,arguments);var u=wr(),h=fr(null!==(n=null!==(i=null!==(o=null!==(r=null==t?void 0:t.weekStartsOn)&&void 0!==r?r:null==t||null===(s=t.locale)||void 0===s||null===(a=s.options)||void 0===a?void 0:a.weekStartsOn)&&void 0!==o?o:u.weekStartsOn)&&void 0!==i?i:null===(l=u.locale)||void 0===l||null===(c=l.options)||void 0===c?void 0:c.weekStartsOn)&&void 0!==n?n:0);if(!(h>=0&&h<=6))throw new RangeError("weekStartsOn must be between 0 and 6 inclusively");var d=mr(e),p=d.getUTCDay(),g=(p=1&&p<=7))throw new RangeError("firstWeekContainsDate must be between 1 and 7 inclusively");var g=new Date(0);g.setUTCFullYear(h+1,0,p),g.setUTCHours(0,0,0,0);var m=Ar(g,t),f=new Date(0);f.setUTCFullYear(h,0,p),f.setUTCHours(0,0,0,0);var y=Ar(f,t);return u.getTime()>=m.getTime()?h+1:u.getTime()>=y.getTime()?h:h-1}function kr(e,t){for(var n=e<0?"-":"",i=Math.abs(e).toString();i.length0?n:1-n;return kr("yy"===t?i%100:i,t.length)},Sr=function(e,t){var n=e.getUTCMonth();return"M"===t?String(n+1):kr(n+1,2)},$r=function(e,t){return kr(e.getUTCDate(),t.length)},Er=function(e,t){return kr(e.getUTCHours()%12||12,t.length)},Or=function(e,t){return kr(e.getUTCHours(),t.length)},Tr=function(e,t){return kr(e.getUTCMinutes(),t.length)},_r=function(e,t){return kr(e.getUTCSeconds(),t.length)},Rr=function(e,t){var n=t.length,i=e.getUTCMilliseconds();return kr(Math.floor(i*Math.pow(10,n-3)),t.length)};var Mr={G:function(e,t,n){var i=e.getUTCFullYear()>0?1:0;switch(t){case"G":case"GG":case"GGG":return n.era(i,{width:"abbreviated"});case"GGGGG":return n.era(i,{width:"narrow"});default:return n.era(i,{width:"wide"})}},y:function(e,t,n){if("yo"===t){var i=e.getUTCFullYear(),o=i>0?i:1-i;return n.ordinalNumber(o,{unit:"year"})}return xr(e,t)},Y:function(e,t,n,i){var o=Cr(e,i),r=o>0?o:1-o;return"YY"===t?kr(r%100,2):"Yo"===t?n.ordinalNumber(r,{unit:"year"}):kr(r,t.length)},R:function(e,t){return kr(br(e),t.length)},u:function(e,t){return kr(e.getUTCFullYear(),t.length)},Q:function(e,t,n){var i=Math.ceil((e.getUTCMonth()+1)/3);switch(t){case"Q":return String(i);case"QQ":return kr(i,2);case"Qo":return n.ordinalNumber(i,{unit:"quarter"});case"QQQ":return n.quarter(i,{width:"abbreviated",context:"formatting"});case"QQQQQ":return n.quarter(i,{width:"narrow",context:"formatting"});default:return n.quarter(i,{width:"wide",context:"formatting"})}},q:function(e,t,n){var i=Math.ceil((e.getUTCMonth()+1)/3);switch(t){case"q":return String(i);case"qq":return kr(i,2);case"qo":return n.ordinalNumber(i,{unit:"quarter"});case"qqq":return n.quarter(i,{width:"abbreviated",context:"standalone"});case"qqqqq":return n.quarter(i,{width:"narrow",context:"standalone"});default:return n.quarter(i,{width:"wide",context:"standalone"})}},M:function(e,t,n){var i=e.getUTCMonth();switch(t){case"M":case"MM":return Sr(e,t);case"Mo":return n.ordinalNumber(i+1,{unit:"month"});case"MMM":return n.month(i,{width:"abbreviated",context:"formatting"});case"MMMMM":return n.month(i,{width:"narrow",context:"formatting"});default:return n.month(i,{width:"wide",context:"formatting"})}},L:function(e,t,n){var i=e.getUTCMonth();switch(t){case"L":return String(i+1);case"LL":return kr(i+1,2);case"Lo":return n.ordinalNumber(i+1,{unit:"month"});case"LLL":return n.month(i,{width:"abbreviated",context:"standalone"});case"LLLLL":return n.month(i,{width:"narrow",context:"standalone"});default:return n.month(i,{width:"wide",context:"standalone"})}},w:function(e,t,n,i){var o=function(e,t){pr(1,arguments);var n=mr(e),i=Ar(n,t).getTime()-function(e,t){var n,i,o,r,s,a,l,c;pr(1,arguments);var u=wr(),h=fr(null!==(n=null!==(i=null!==(o=null!==(r=null==t?void 0:t.firstWeekContainsDate)&&void 0!==r?r:null==t||null===(s=t.locale)||void 0===s||null===(a=s.options)||void 0===a?void 0:a.firstWeekContainsDate)&&void 0!==o?o:u.firstWeekContainsDate)&&void 0!==i?i:null===(l=u.locale)||void 0===l||null===(c=l.options)||void 0===c?void 0:c.firstWeekContainsDate)&&void 0!==n?n:1),d=Cr(e,t),p=new Date(0);return p.setUTCFullYear(d,0,h),p.setUTCHours(0,0,0,0),Ar(p,t)}(n,t).getTime();return Math.round(i/6048e5)+1}(e,i);return"wo"===t?n.ordinalNumber(o,{unit:"week"}):kr(o,t.length)},I:function(e,t,n){var i=function(e){pr(1,arguments);var t=mr(e),n=yr(t).getTime()-function(e){pr(1,arguments);var t=br(e),n=new Date(0);return n.setUTCFullYear(t,0,4),n.setUTCHours(0,0,0,0),yr(n)}(t).getTime();return Math.round(n/6048e5)+1}(e);return"Io"===t?n.ordinalNumber(i,{unit:"week"}):kr(i,t.length)},d:function(e,t,n){return"do"===t?n.ordinalNumber(e.getUTCDate(),{unit:"date"}):$r(e,t)},D:function(e,t,n){var i=function(e){pr(1,arguments);var t=mr(e),n=t.getTime();t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0);var i=n-t.getTime();return Math.floor(i/864e5)+1}(e);return"Do"===t?n.ordinalNumber(i,{unit:"dayOfYear"}):kr(i,t.length)},E:function(e,t,n){var i=e.getUTCDay();switch(t){case"E":case"EE":case"EEE":return n.day(i,{width:"abbreviated",context:"formatting"});case"EEEEE":return n.day(i,{width:"narrow",context:"formatting"});case"EEEEEE":return n.day(i,{width:"short",context:"formatting"});default:return n.day(i,{width:"wide",context:"formatting"})}},e:function(e,t,n,i){var o=e.getUTCDay(),r=(o-i.weekStartsOn+8)%7||7;switch(t){case"e":return String(r);case"ee":return kr(r,2);case"eo":return n.ordinalNumber(r,{unit:"day"});case"eee":return n.day(o,{width:"abbreviated",context:"formatting"});case"eeeee":return n.day(o,{width:"narrow",context:"formatting"});case"eeeeee":return n.day(o,{width:"short",context:"formatting"});default:return n.day(o,{width:"wide",context:"formatting"})}},c:function(e,t,n,i){var o=e.getUTCDay(),r=(o-i.weekStartsOn+8)%7||7;switch(t){case"c":return String(r);case"cc":return kr(r,t.length);case"co":return n.ordinalNumber(r,{unit:"day"});case"ccc":return n.day(o,{width:"abbreviated",context:"standalone"});case"ccccc":return n.day(o,{width:"narrow",context:"standalone"});case"cccccc":return n.day(o,{width:"short",context:"standalone"});default:return n.day(o,{width:"wide",context:"standalone"})}},i:function(e,t,n){var i=e.getUTCDay(),o=0===i?7:i;switch(t){case"i":return String(o);case"ii":return kr(o,t.length);case"io":return n.ordinalNumber(o,{unit:"day"});case"iii":return n.day(i,{width:"abbreviated",context:"formatting"});case"iiiii":return n.day(i,{width:"narrow",context:"formatting"});case"iiiiii":return n.day(i,{width:"short",context:"formatting"});default:return n.day(i,{width:"wide",context:"formatting"})}},a:function(e,t,n){var i=e.getUTCHours()/12>=1?"pm":"am";switch(t){case"a":case"aa":return n.dayPeriod(i,{width:"abbreviated",context:"formatting"});case"aaa":return n.dayPeriod(i,{width:"abbreviated",context:"formatting"}).toLowerCase();case"aaaaa":return n.dayPeriod(i,{width:"narrow",context:"formatting"});default:return n.dayPeriod(i,{width:"wide",context:"formatting"})}},b:function(e,t,n){var i,o=e.getUTCHours();switch(i=12===o?"noon":0===o?"midnight":o/12>=1?"pm":"am",t){case"b":case"bb":return n.dayPeriod(i,{width:"abbreviated",context:"formatting"});case"bbb":return n.dayPeriod(i,{width:"abbreviated",context:"formatting"}).toLowerCase();case"bbbbb":return n.dayPeriod(i,{width:"narrow",context:"formatting"});default:return n.dayPeriod(i,{width:"wide",context:"formatting"})}},B:function(e,t,n){var i,o=e.getUTCHours();switch(i=o>=17?"evening":o>=12?"afternoon":o>=4?"morning":"night",t){case"B":case"BB":case"BBB":return n.dayPeriod(i,{width:"abbreviated",context:"formatting"});case"BBBBB":return n.dayPeriod(i,{width:"narrow",context:"formatting"});default:return n.dayPeriod(i,{width:"wide",context:"formatting"})}},h:function(e,t,n){if("ho"===t){var i=e.getUTCHours()%12;return 0===i&&(i=12),n.ordinalNumber(i,{unit:"hour"})}return Er(e,t)},H:function(e,t,n){return"Ho"===t?n.ordinalNumber(e.getUTCHours(),{unit:"hour"}):Or(e,t)},K:function(e,t,n){var i=e.getUTCHours()%12;return"Ko"===t?n.ordinalNumber(i,{unit:"hour"}):kr(i,t.length)},k:function(e,t,n){var i=e.getUTCHours();return 0===i&&(i=24),"ko"===t?n.ordinalNumber(i,{unit:"hour"}):kr(i,t.length)},m:function(e,t,n){return"mo"===t?n.ordinalNumber(e.getUTCMinutes(),{unit:"minute"}):Tr(e,t)},s:function(e,t,n){return"so"===t?n.ordinalNumber(e.getUTCSeconds(),{unit:"second"}):_r(e,t)},S:function(e,t){return Rr(e,t)},X:function(e,t,n,i){var o=(i._originalDate||e).getTimezoneOffset();if(0===o)return"Z";switch(t){case"X":return Br(o);case"XXXX":case"XX":return Nr(o);default:return Nr(o,":")}},x:function(e,t,n,i){var o=(i._originalDate||e).getTimezoneOffset();switch(t){case"x":return Br(o);case"xxxx":case"xx":return Nr(o);default:return Nr(o,":")}},O:function(e,t,n,i){var o=(i._originalDate||e).getTimezoneOffset();switch(t){case"O":case"OO":case"OOO":return"GMT"+Lr(o,":");default:return"GMT"+Nr(o,":")}},z:function(e,t,n,i){var o=(i._originalDate||e).getTimezoneOffset();switch(t){case"z":case"zz":case"zzz":return"GMT"+Lr(o,":");default:return"GMT"+Nr(o,":")}},t:function(e,t,n,i){var o=i._originalDate||e;return kr(Math.floor(o.getTime()/1e3),t.length)},T:function(e,t,n,i){return kr((i._originalDate||e).getTime(),t.length)}};function Lr(e,t){var n=e>0?"-":"+",i=Math.abs(e),o=Math.floor(i/60),r=i%60;if(0===r)return n+String(o);var s=t||"";return n+String(o)+s+kr(r,2)}function Br(e,t){return e%60==0?(e>0?"-":"+")+kr(Math.abs(e)/60,2):Nr(e,t)}function Nr(e,t){var n=t||"",i=e>0?"-":"+",o=Math.abs(e);return i+kr(Math.floor(o/60),2)+n+kr(o%60,2)}const Ir=Mr;var Pr=function(e,t){switch(e){case"P":return t.date({width:"short"});case"PP":return t.date({width:"medium"});case"PPP":return t.date({width:"long"});default:return t.date({width:"full"})}},Dr=function(e,t){switch(e){case"p":return t.time({width:"short"});case"pp":return t.time({width:"medium"});case"ppp":return t.time({width:"long"});default:return t.time({width:"full"})}};const Fr={p:Dr,P:function(e,t){var n,i=e.match(/(P+)(p+)?/)||[],o=i[1],r=i[2];if(!r)return Pr(e,t);switch(o){case"P":n=t.dateTime({width:"short"});break;case"PP":n=t.dateTime({width:"medium"});break;case"PPP":n=t.dateTime({width:"long"});break;default:n=t.dateTime({width:"full"})}return n.replace("{{date}}",Pr(o,t)).replace("{{time}}",Dr(r,t))}};var Wr=["D","DD"],Hr=["YY","YYYY"];function jr(e,t,n){if("YYYY"===e)throw new RangeError("Use `yyyy` instead of `YYYY` (in `".concat(t,"`) for formatting years to the input `").concat(n,"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md"));if("YY"===e)throw new RangeError("Use `yy` instead of `YY` (in `".concat(t,"`) for formatting years to the input `").concat(n,"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md"));if("D"===e)throw new RangeError("Use `d` instead of `D` (in `".concat(t,"`) for formatting days of the month to the input `").concat(n,"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md"));if("DD"===e)throw new RangeError("Use `dd` instead of `DD` (in `".concat(t,"`) for formatting days of the month to the input `").concat(n,"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md"))}var zr={lessThanXSeconds:{one:"less than a second",other:"less than {{count}} seconds"},xSeconds:{one:"1 second",other:"{{count}} seconds"},halfAMinute:"half a minute",lessThanXMinutes:{one:"less than a minute",other:"less than {{count}} minutes"},xMinutes:{one:"1 minute",other:"{{count}} minutes"},aboutXHours:{one:"about 1 hour",other:"about {{count}} hours"},xHours:{one:"1 hour",other:"{{count}} hours"},xDays:{one:"1 day",other:"{{count}} days"},aboutXWeeks:{one:"about 1 week",other:"about {{count}} weeks"},xWeeks:{one:"1 week",other:"{{count}} weeks"},aboutXMonths:{one:"about 1 month",other:"about {{count}} months"},xMonths:{one:"1 month",other:"{{count}} months"},aboutXYears:{one:"about 1 year",other:"about {{count}} years"},xYears:{one:"1 year",other:"{{count}} years"},overXYears:{one:"over 1 year",other:"over {{count}} years"},almostXYears:{one:"almost 1 year",other:"almost {{count}} years"}};function Ur(e){return function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=t.width?String(t.width):e.defaultWidth;return e.formats[n]||e.formats[e.defaultWidth]}}const Vr={date:Ur({formats:{full:"EEEE, MMMM do, y",long:"MMMM do, y",medium:"MMM d, y",short:"MM/dd/yyyy"},defaultWidth:"full"}),time:Ur({formats:{full:"h:mm:ss a zzzz",long:"h:mm:ss a z",medium:"h:mm:ss a",short:"h:mm a"},defaultWidth:"full"}),dateTime:Ur({formats:{full:"{{date}} 'at' {{time}}",long:"{{date}} 'at' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},defaultWidth:"full"})};var Gr={lastWeek:"'last' eeee 'at' p",yesterday:"'yesterday at' p",today:"'today at' p",tomorrow:"'tomorrow at' p",nextWeek:"eeee 'at' p",other:"P"};function Kr(e){return function(t,n){var i;if("formatting"===(null!=n&&n.context?String(n.context):"standalone")&&e.formattingValues){var o=e.defaultFormattingWidth||e.defaultWidth,r=null!=n&&n.width?String(n.width):o;i=e.formattingValues[r]||e.formattingValues[o]}else{var s=e.defaultWidth,a=null!=n&&n.width?String(n.width):e.defaultWidth;i=e.values[a]||e.values[s]}return i[e.argumentCallback?e.argumentCallback(t):t]}}const qr={ordinalNumber:function(e,t){var n=Number(e),i=n%100;if(i>20||i<10)switch(i%10){case 1:return n+"st";case 2:return n+"nd";case 3:return n+"rd"}return n+"th"},era:Kr({values:{narrow:["B","A"],abbreviated:["BC","AD"],wide:["Before Christ","Anno Domini"]},defaultWidth:"wide"}),quarter:Kr({values:{narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1st quarter","2nd quarter","3rd quarter","4th quarter"]},defaultWidth:"wide",argumentCallback:function(e){return e-1}}),month:Kr({values:{narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],wide:["January","February","March","April","May","June","July","August","September","October","November","December"]},defaultWidth:"wide"}),day:Kr({values:{narrow:["S","M","T","W","T","F","S"],short:["Su","Mo","Tu","We","Th","Fr","Sa"],abbreviated:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],wide:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},defaultWidth:"wide"}),dayPeriod:Kr({values:{narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"}},defaultWidth:"wide",formattingValues:{narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"}},defaultFormattingWidth:"wide"})};function Yr(e){return function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=n.width,o=i&&e.matchPatterns[i]||e.matchPatterns[e.defaultMatchWidth],r=t.match(o);if(!r)return null;var s,a=r[0],l=i&&e.parsePatterns[i]||e.parsePatterns[e.defaultParseWidth],c=Array.isArray(l)?function(e,t){for(var n=0;n1&&void 0!==arguments[1]?arguments[1]:{},n=e.match(Jr.matchPattern);if(!n)return null;var i=n[0],o=e.match(Jr.parsePattern);if(!o)return null;var r=Jr.valueCallback?Jr.valueCallback(o[0]):o[0];return{value:r=t.valueCallback?t.valueCallback(r):r,rest:e.slice(i.length)}}),era:Yr({matchPatterns:{narrow:/^(b|a)/i,abbreviated:/^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i,wide:/^(before christ|before common era|anno domini|common era)/i},defaultMatchWidth:"wide",parsePatterns:{any:[/^b/i,/^(a|c)/i]},defaultParseWidth:"any"}),quarter:Yr({matchPatterns:{narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](th|st|nd|rd)? quarter/i},defaultMatchWidth:"wide",parsePatterns:{any:[/1/i,/2/i,/3/i,/4/i]},defaultParseWidth:"any",valueCallback:function(e){return e+1}}),month:Yr({matchPatterns:{narrow:/^[jfmasond]/i,abbreviated:/^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,wide:/^(january|february|march|april|may|june|july|august|september|october|november|december)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^ap/i,/^may/i,/^jun/i,/^jul/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},defaultParseWidth:"any"}),day:Yr({matchPatterns:{narrow:/^[smtwf]/i,short:/^(su|mo|tu|we|th|fr|sa)/i,abbreviated:/^(sun|mon|tue|wed|thu|fri|sat)/i,wide:/^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^s/i,/^m/i,/^t/i,/^w/i,/^t/i,/^f/i,/^s/i],any:[/^su/i,/^m/i,/^tu/i,/^w/i,/^th/i,/^f/i,/^sa/i]},defaultParseWidth:"any"}),dayPeriod:Yr({matchPatterns:{narrow:/^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,any:/^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i},defaultMatchWidth:"any",parsePatterns:{any:{am:/^a/i,pm:/^p/i,midnight:/^mi/i,noon:/^no/i,morning:/morning/i,afternoon:/afternoon/i,evening:/evening/i,night:/night/i}},defaultParseWidth:"any"})};const Xr={code:"en-US",formatDistance:function(e,t,n){var i,o=zr[e];return i="string"==typeof o?o:1===t?o.one:o.other.replace("{{count}}",t.toString()),null!=n&&n.addSuffix?n.comparison&&n.comparison>0?"in "+i:i+" ago":i},formatLong:Vr,formatRelative:function(e,t,n,i){return Gr[e]},localize:qr,match:Qr,options:{weekStartsOn:0,firstWeekContainsDate:1}};var Zr=/[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g,es=/P+p+|P+|p+|''|'(''|[^'])+('|$)|./g,ts=/^'([^]*?)'?$/,ns=/''/g,is=/[a-zA-Z]/;function os(e,t,n){var i,o,r,s,a,l,c,u,h,d,p,g,m,f,y,b,v,w;pr(2,arguments);var A=String(t),C=wr(),k=null!==(i=null!==(o=null==n?void 0:n.locale)&&void 0!==o?o:C.locale)&&void 0!==i?i:Xr,x=fr(null!==(r=null!==(s=null!==(a=null!==(l=null==n?void 0:n.firstWeekContainsDate)&&void 0!==l?l:null==n||null===(c=n.locale)||void 0===c||null===(u=c.options)||void 0===u?void 0:u.firstWeekContainsDate)&&void 0!==a?a:C.firstWeekContainsDate)&&void 0!==s?s:null===(h=C.locale)||void 0===h||null===(d=h.options)||void 0===d?void 0:d.firstWeekContainsDate)&&void 0!==r?r:1);if(!(x>=1&&x<=7))throw new RangeError("firstWeekContainsDate must be between 1 and 7 inclusively");var S=fr(null!==(p=null!==(g=null!==(m=null!==(f=null==n?void 0:n.weekStartsOn)&&void 0!==f?f:null==n||null===(y=n.locale)||void 0===y||null===(b=y.options)||void 0===b?void 0:b.weekStartsOn)&&void 0!==m?m:C.weekStartsOn)&&void 0!==g?g:null===(v=C.locale)||void 0===v||null===(w=v.options)||void 0===w?void 0:w.weekStartsOn)&&void 0!==p?p:0);if(!(S>=0&&S<=6))throw new RangeError("weekStartsOn must be between 0 and 6 inclusively");if(!k.localize)throw new RangeError("locale must contain localize property");if(!k.formatLong)throw new RangeError("locale must contain formatLong property");var $=mr(e);if(!function(e){if(pr(1,arguments),!gr(e)&&"number"!=typeof e)return!1;var t=mr(e);return!isNaN(Number(t))}($))throw new RangeError("Invalid time value");var E=function(e){var t=new Date(Date.UTC(e.getFullYear(),e.getMonth(),e.getDate(),e.getHours(),e.getMinutes(),e.getSeconds(),e.getMilliseconds()));return t.setUTCFullYear(e.getFullYear()),e.getTime()-t.getTime()}($),O=function(e,t){return pr(2,arguments),function(e,t){pr(2,arguments);var n=mr(e).getTime(),i=fr(t);return new Date(n+i)}(e,-fr(t))}($,E),T={firstWeekContainsDate:x,weekStartsOn:S,locale:k,_originalDate:$};return A.match(es).map((function(e){var t=e[0];return"p"===t||"P"===t?(0,Fr[t])(e,k.formatLong):e})).join("").match(Zr).map((function(i){if("''"===i)return"'";var o,r,s=i[0];if("'"===s)return(r=(o=i).match(ts))?r[1].replace(ns,"'"):o;var a,l=Ir[s];if(l)return null!=n&&n.useAdditionalWeekYearTokens||(a=i,-1===Hr.indexOf(a))||jr(i,t,String(e)),null!=n&&n.useAdditionalDayOfYearTokens||!function(e){return-1!==Wr.indexOf(e)}(i)||jr(i,t,String(e)),l(O,i,k.localize,T);if(s.match(is))throw new RangeError("Format string contains an unescaped latin alphabet character `"+s+"`");return i})).join("")}var rs=n(590),ss=n.n(rs),as=Object.defineProperty,ls=Object.defineProperties,cs=Object.getOwnPropertyDescriptors,us=Object.getOwnPropertySymbols,hs=Object.prototype.hasOwnProperty,ds=Object.prototype.propertyIsEnumerable,ps=(e,t,n)=>t in e?as(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;const gs=class n extends e.Component{static getMainFormValue(e){const t=new Array(e.length);return e.forEach(((e,n)=>{t[n]=e.props.value||void 0})),t}constructor(t){super(t);const{components:i}=t;this.submitButtonRef=(0,e.createRef)(),this.handleOnChange=this.handleOnChange.bind(this),this.submitForm=this.submitForm.bind(this),this.state={components:i,errors:{},mainError:null,mainFormValue:n.getMainFormValue(i),refs:[]}}componentDidMount(){const{addValueOnFieldChange:e,getMainFormButtonWidth:t}=this.props;this.createRefs(),t&&t(e?0:this.submitButtonRef.current.clientWidth)}static getDerivedStateFromProps(e,t){const i={},{components:o}=e,{components:r}=t;return ss()(o,r)||ss()(n.getMainFormValue(o),n.getMainFormValue(r))||(i.mainFormValue=n.getMainFormValue(o),i.components=o),i}getFormCssClasses(){const{noLabels:e}=this.props,t=["tyk-editable-list__form"];return e&&t.push("no-labels"),t.join(" ")}getButtonClassName(){const{buttonStyle:e,displayType:t}=this.props,n=[];return e&&n.push(e),t&&n.push(t),n.join(" ")}getComponentsError(e){const{error:t,errors:n,mainError:i}=this.state;return t||i?n[e.props.name]="true":t||i||"true"!==n[e.props.name]||delete n[e.props.name],n[e.props.name]?n[e.props.name].toString():void 0}createRefs(){const{components:t}=this.props,n=[];t.forEach((()=>{n.push((0,e.createRef)())})),this.setState({refs:n})}validateValue(e,t){const{mainError:n,errors:i}=this.state,{error:o,errorPersist:r}=this.props,s=t.validate?Object.keys(t.validate):[],a={errors:o||n?{}:Object.assign({},i)};let l=!0;if(r)return a;for(let n=0;n0||(t.forEach(((e,t)=>{o.errors=Object.assign({},o.errors,this.validateValue(i[t],e.props).errors)})),Object.keys(o.errors).length>0))}handleOnChange(e,t,n){const{addValueOnFieldChange:i}=this.props;let o=this.state;o=Object.assign({},o,this.validateValue(n,e.props)),o.errors[e.props.name]||(o.mainFormValue[t]=n,e.props.onChange&&e.props.onChange(n)),this.setState((e=>Object.assign({},e,o)),(()=>{i&&this.submitForm()}))}resetForm(){const{refs:e}=this.state,{components:t}=this.props;e.forEach((e=>{var t;(null==(t=e.current)?void 0:t.reset)&&e.current.reset()})),this.setState({errors:{},mainError:null,mainFormValue:n.getMainFormValue(t)})}showMainError(e){this.setState({mainError:e})}submitForm(){const{errors:e,mainFormValue:t}=this.state,{errorPersist:n,onSubmit:i,validate:o,validationmessage:r}=this.props;n&&(i(t),this.resetForm()),0===Object.keys(e).length&&i&&"function"==typeof i&&(o&&o(t)?this.showMainError(r):(i(t),this.resetForm()))}render(){const{addValueOnFieldChange:e,components:n,buttonName:i,disabled:o,displayType:r,error:s}=this.props,{mainError:a,refs:l,errors:c}=this.state;return t().createElement("div",null,t().createElement("div",{className:this.getFormCssClasses()},t().createElement(Hi,null,n.map(((e,n)=>{const i=e.name,s=e.props,{onChange:a,value:c}=s,u=((e,t)=>{var n={};for(var i in e)hs.call(e,i)&&t.indexOf(i)<0&&(n[i]=e[i]);if(null!=e&&us)for(var i of us(e))t.indexOf(i)<0&&ds.call(e,i)&&(n[i]=e[i]);return n})(s,["onChange","value"]);return t().createElement(Li,{size:`md-${e.size||"12"} lg-${e.size||"12"}`,key:e.props.name},t().createElement(i,(h=((e,t)=>{for(var n in t||(t={}))hs.call(t,n)&&ps(e,n,t[n]);if(us)for(var n of us(t))ds.call(t,n)&&ps(e,n,t[n]);return e})({disabled:o||e.props.disabled,onChange:this.handleOnChange.bind(this,e,n)},u),d={label:"inline"===r?"":e.props.label,error:this.getComponentsError(e),ref:l[n],value:c},ls(h,cs(d)))));var h,d}))),e?null:t().createElement("span",{className:this.getButtonClassName(),ref:this.submitButtonRef},t().createElement(q,{disabled:this.hasMainFormErrors(c),className:"tyk-editable-list__submit-btn",onClick:this.submitForm,theme:"default",type:"button",size:"inline"===r?"sm":"md"},i||"ADD"))),s||a?t().createElement("div",{className:"tyk-editable-list-main-error"},t().createElement("p",{className:"error-message"},s||a)):null)}};((e,t,n)=>{ps(e,t+"",n)})(gs,"propTypes",{addValueOnFieldChange:r().bool,noLabels:r().bool,buttonName:r().string,buttonStyle:r().string,components:r().instanceOf(Array),displayType:r().string,disabled:r().bool,getMainFormButtonWidth:r().func,error:r().string,errorPersist:r().bool,onSubmit:r().func,validate:r().func,validationmessage:r().string});let ms=gs;var fs=Object.defineProperty;const ys=class n extends e.Component{static getItemListValue(e){let t=null;return"string"==typeof e&&(t=e),"[object Object]"===Object.prototype.toString.call(e)&&(t=e.name),gr(e)&&(t=os(e,"dd/MM/yyyy")),t}static getListItemCssClass(e){const t=[];return"inline"===e&&t.push("tyk-editable-list-item--inline"),t.join(" ")}constructor(t){super(t);const{value:n}=this.props;this.state={initialValue:n||"",value:n||[],buttonWidth:0},this.startIndex=1,this.handleFormSubmit=this.handleFormSubmit.bind(this),this.getMainFormButtonWidth=this.getMainFormButtonWidth.bind(this),this.dropdownListItemRef=(0,e.createRef)()}static getDerivedStateFromProps(e,t){const n={};return e.value&&JSON.stringify(e.value)!==JSON.stringify(t.initialValue)&&(n.value=e.value||[],n.initialValue=e.value||""),n.value?n:null}getListItemsCssClass(e){const{config:t}=this.props,n=["tyk-editable-list-items"];return n.push(t.displayType||"table"),"inline"===e&&n.push("tyk-editable-list-items--inline"),n.join(" ")}getFormInputKey(){return this.startIndex+=1,this.startIndex}getListItemText(e){const{config:i}=this.props;let o=null;switch(i.displayType){case"list":case"inline":o=e.value.reduce(((t,i,o)=>{const r=n.getItemListValue(i);let s=", ";return o===e.value.length-1&&(s=""),t+r+s}),"");break;default:o=t().createElement(Hi,null,i.components.map(((i,o)=>t().createElement(Li,{key:this.getFormInputKey(),size:`md-${i.size} lg-${i.size}`},n.getItemListValue(e.value[o])))))}return o}getMainFormButtonWidth(e){this.setState({buttonWidth:e})}setItemEditMode(e){const t=this.closeListItems();this.setState((n=>{const i=Object.assign({},n);return i.value=t,i.value[e].editMode=!i.value[e].editMode,i}))}isInList(e,t){const{value:n}=this.state;let i=!1;return n.forEach(((n,o)=>{JSON.stringify(n.value)===JSON.stringify(t)&&(i=!(e>=0&&o===e))})),i}addValues(e){const{value:t}=this.state,{config:n}=this.props,i={editMode:!1,value:e},o={value:t.slice(0)};return n.children&&(i.children=[]),o.value.push(i),o}removeListItem(e){let t;this.setState((n=>{const i=n.value.slice(0);return t=i.splice(e,1),{value:i}}),(()=>{this.triggerOnChange(e,t,null)}))}handleFormSubmit(e){const t=this.addValues(e);this.setState((e=>Object.assign({},e,t)),(()=>{this.triggerOnChange(t.value.length-1,null,e)}))}handleItemUpdate(e,t){let n;this.setState((i=>{const o=Object.assign({},i);return n=(0,X.fromJS)(o.value[e].value).toJS(),o.value[e].value=t,o.value[e].editMode=!1,o}),(()=>{this.triggerOnChange(e,n,t)}))}handleChildrenOnChange(e,t){let n;this.setState((i=>{const o=Object.assign({},i);return n=(0,X.fromJS)(o.value[e].children).toJS(),o.value[e].children=t,o}),(()=>{this.triggerOnChange(e,n,t)}))}closeListItems(){const{value:e}=this.state;return e.map((e=>{const t=Object.assign({},e);return t.editMode?(t.editMode=!1,t):t}))}triggerOnChange(e,t,n){const{onChange:i}=this.props,{value:o}=this.state;i&&"function"==typeof i&&i(o.length?o:null,e,t,n)}genListItem(i,o){const{config:r,disabled:s}=this.props,{buttonWidth:a,value:l}=this.state,c=(0,X.fromJS)(r.components).toJS();return i.value.forEach(((e,t)=>{c[t].props.value=e})),t().createElement("li",{key:o,className:n.getListItemCssClass(r.displayType),ref:this.dropdownListItemRef},t().createElement("div",{className:`tyk-editable-list-item__text ${r.displayType||"table"}${i.editMode?" edit-mode-wrapper":""}`},i.editMode?t().createElement(e.Fragment,null,t().createElement(ms,{buttonName:"Update",noLabels:r.noLabels,disabled:s,displayType:r.displayType,components:c,onSubmit:this.handleItemUpdate.bind(this,o),validate:this.isInList.bind(this,o),validationmessage:"This value is already in the list"}),t().createElement("button",{type:"button",className:"tyk-editable-list-action__button on-edit",onClick:this.removeListItem.bind(this,o)},t().createElement(g,{type:"trash"}))):t().createElement(e.Fragment,null,this.getListItemText(i,o),t().createElement("div",{className:"tyk-editable-list-item__controls",style:{display:"block",width:"inline"===r.displayType?"auto":`${a+60}px`}},t().createElement("button",{disabled:s,type:"button",className:"tyk-editable-list-action__button",onClick:this.setItemEditMode.bind(this,o)},t().createElement(g,{type:"edit"})),t().createElement("button",{disabled:s,type:"button",className:"tyk-editable-list-action__button",onClick:this.removeListItem.bind(this,o)},t().createElement(g,{type:"trash"}))))),r.children?t().createElement(n,{disabled:s,onChange:this.handleChildrenOnChange.bind(this,o),config:r.children.config,value:l[o]&&l[o].children||[]}):null)}genList(){const{config:n}=this.props,{buttonWidth:i,value:o}=this.state;return o&&0!==o.length?t().createElement(e.Fragment,null,"table"!==n.displayType&&n.displayType?null:t().createElement("div",{className:"tyk-editable-list__header",style:{paddingRight:`${i+60}px`}},t().createElement(Hi,null,n.components.map(((e,n)=>t().createElement(Li,{key:e.props.label||n,size:`md-${e.size||12} lg-${e.size||12}`},e.props.label))))),t().createElement("ul",{className:this.getListItemsCssClass(n.displayType)},o.map(((e,t)=>this.genListItem(e,t))))):null}render(){const{addValueOnFieldChange:e,config:n,error:i,disabled:o,label:r}=this.props,s=document.querySelector(n.appendTo)||document.querySelector("body");return t().createElement("div",{className:"tyk-editable-list"},r?t().createElement("label",null,r):null,t().createElement(ms,{addValueOnFieldChange:e,components:n.components,buttonName:n.formButtonTitle,buttonStyle:n.formButtonStyle,disabled:o,error:i,errorPersist:!!i,noLabels:n.noLabels,onSubmit:this.handleFormSubmit,validate:this.isInList.bind(this,-1),validationmessage:"This value is already in the list",getMainFormButtonWidth:this.getMainFormButtonWidth}),n.appendTo?Fe().createPortal(this.genList(),s):this.genList())}};((e,t,n)=>{((e,t,n)=>{t in e?fs(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n})(e,t+"",n)})(ys,"propTypes",{addValueOnFieldChange:r().bool,disabled:r().bool,error:r().string,config:r().instanceOf(Object),onChange:r().func,label:r().oneOfType([r().arrayOf(r().node),r().node,r().element,r().func,r().string]),value:r().oneOfType([r().instanceOf(Array),r().instanceOf(Object)])});let bs=ys;const vs=({label:e,addButtonName:n,onAddRow:i,disabled:o,readOnly:r})=>t().createElement("div",{className:"editable-list__header"},e?t().createElement("label",null,e):null,!o&&!r&&t().createElement(q,{theme:"primary rounded-corners",onClick:i},n||"Add"));vs.propTypes={disabled:r().bool,readOnly:r().bool,onAddRow:r().func,addButtonName:r().string,label:r().oneOfType([r().string,r().element,r().node])};const ws=vs,As=({fields:e,readOnly:n})=>t().createElement("li",{className:"editable-list__item editable-list__item-header"},e.map((e=>{var n;return t().createElement("div",{className:`editable-list__item-cell editable-list__item--size-${(null==e?void 0:e.size)||12}`},null==(n=null==e?void 0:e.props)?void 0:n.label)})),t().createElement("div",{className:`editable-list__item-cell editable-list__item-action ${n&&"editable-list__item-action--read-only"}`},"Delete"));As.propTypes={fields:r().instanceOf(Array),readOnly:r().bool};const Cs=As;var ks=Object.defineProperty,xs=Object.defineProperties,Ss=Object.getOwnPropertyDescriptors,$s=Object.getOwnPropertySymbols,Es=Object.prototype.hasOwnProperty,Os=Object.prototype.propertyIsEnumerable,Ts=(e,t,n)=>t in e?ks(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;const _s=({fields:e,disabled:n,readOnly:i,errors:o,components:r,onChange:s,onDelete:a,value:l,rowIndex:c})=>t().createElement("li",{className:"editable-list__item"},r.map(((r,a)=>{var u,h,d;let p=e[a],g="function"==typeof p?p(c,a):p;return t().createElement("div",{className:`editable-list__item-cell editable-list__item--size-${(null==(u=e[a])?void 0:u.size)||12}`},t().createElement(r,(m=((e,t)=>{for(var n in t||(t={}))Es.call(t,n)&&Ts(e,n,t[n]);if($s)for(var n of $s(t))Os.call(t,n)&&Ts(e,n,t[n]);return e})({},null==g?void 0:g.props),f={label:"",value:l[a],onChange:s.bind(null,a),error:null==o?void 0:o[a],disabled:n||(null==(h=null==g?void 0:g.props)?void 0:h.disabled),readOnly:i||(null==(d=null==g?void 0:g.props)?void 0:d.readOnly)},xs(m,Ss(f)))));var m,f})),t().createElement("div",{className:`editable-list__item-cell editable-list__item-action ${i&&"editable-list__item-action--read-only"}`},t().createElement(q,{iconOnly:!0,iconType:"trash-alt",theme:"primary-link",onClick:a,disabled:i||n})));_s.propTypes={disabled:r().bool,readOnly:r().bool,rowIndex:r().oneOfType([r().string,r().number]),fields:r().instanceOf(Array),errors:r().instanceOf(Array),components:r().instanceOf(Array),value:r().instanceOf(Array),onChange:r().func,onDelete:r().func};const Rs=_s;var Ms=Object.defineProperty,Ls=Object.defineProperties,Bs=Object.getOwnPropertyDescriptors,Ns=Object.getOwnPropertySymbols,Is=Object.prototype.hasOwnProperty,Ps=Object.prototype.propertyIsEnumerable,Ds=(e,t,n)=>t in e?Ms(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;let Fs=1;const Ws=({addButtonName:n,disabled:i,readOnly:o,fields:r,label:s,error:a,value:l=[],onChange:c=(()=>{}),hideOnEmpty:u=!0,wrapperClassName:h=""})=>{const[d,p]=(0,e.useState)(null),g=(e,t,n,i)=>{var o;const s=l?[...l]:[];if(l){const i=[...s[e]];i[t]=n,s[e]=i,s[e].id=l[e].id}else s[e]=[...new Array(r.length)],s[e][t]=n;if((null==(o=null==d?void 0:d[e])?void 0:o[t])&&i){const n=[...d],i=[...n[e]];i[t]=null,n[e]=i,p(n)}c(s)},m=(0,e.useMemo)((()=>r.map((n=>{let i="function"==typeof n?n():n;return o=(null==i?void 0:i.component)||t().createElement(t().Fragment,null),n=>{var i=n,{onChange:r,validate:s,error:a}=i,l=((e,t)=>{var n={};for(var i in e)Is.call(e,i)&&t.indexOf(i)<0&&(n[i]=e[i]);if(null!=e&&Ns)for(var i of Ns(e))t.indexOf(i)<0&&Ps.call(e,i)&&(n[i]=e[i]);return n})(i,["onChange","validate","error"]);const[c,u]=(0,e.useState)(null),h=(0,e.useCallback)((e=>{const t=(null==e?void 0:e.target)?["radio","checkbox"].includes(e.target.type)?e.target.checked:null==e?void 0:e.target.value:e;let n=!0;if(s&&"function"==typeof s){const e=s(t);n=!e,u(e)}r(t,n)}),[s,r]);return t().createElement(o,(d=((e,t)=>{for(var n in t||(t={}))Is.call(t,n)&&Ds(e,n,t[n]);if(Ns)for(var n of Ns(t))Ps.call(t,n)&&Ds(e,n,t[n]);return e})({},l),Ls(d,Bs({onChange:h,error:c||a}))));var d};var o}))),[]),f=e=>{if(!l)return;const t=[...l];t.splice(e,1),c(t)};return t().createElement("div",{className:`editable-list__wrapper tyk-form-group tyk-form-group--default ${a?"has-error":""} ${h}`},t().createElement(ws,{disabled:i,readOnly:o,label:s,addButtonName:n,onAddRow:()=>{const e=((e,t)=>{var n;return null==(n=t||[[void 0,void 0]])?void 0:n.map((t=>null==t?void 0:t.map(((t,n)=>{var i,o;return(null==(o=null==(i=null==e?void 0:e[n])?void 0:i.props)?void 0:o.validate)&&e[n].props.validate(t)}))))})(r,l);if((e=>{var t;return Boolean(null==(t=null==e?void 0:e.flat())?void 0:t.filter(Boolean).length)})(e))return void p(e);const t=[...new Array(r.length)];t.id="row-"+Fs++,c([...l&&l,t])}}),(null==l?void 0:l.length)||!u?t().createElement("ul",{className:"editable-list__list"},(l||[[]]).map(((e,n)=>t().createElement(t().Fragment,null,t().createElement(Rs,{key:e.id||n,rowIndex:n,disabled:i,readOnly:o,fields:r,onChange:g.bind(null,n),onDelete:f.bind(null,n),value:e,errors:null==d?void 0:d[n],components:m})))),t().createElement(Cs,{fields:r,readOnly:o})):null,a&&"true"!==a&&"false"!==a?t().createElement("p",{className:"tyk-form-control__error-message"},a):null)};Ws.propTypes={disabled:r().bool,readOnly:r().bool,addButtonName:r().string,label:r().oneOfType([r().string,r().element,r().node]),fields:r().instanceOf(Array),onChange:r().func,value:r().oneOfType([r().instanceOf(Object),r().instanceOf(Array)]),error:r().string,hideOnEmpty:r().bool,wrapperClassName:r().string};const Hs=Ws;var js=Object.defineProperty,zs=Object.defineProperties,Us=Object.getOwnPropertyDescriptors,Vs=Object.getOwnPropertySymbols,Gs=Object.prototype.hasOwnProperty,Ks=Object.prototype.propertyIsEnumerable,qs=(e,t,n)=>t in e?js(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;class Ys extends e.Component{constructor(t){super(t),this.handleOnChange=this.handleOnChange.bind(this),this.clearValue=this.clearValue.bind(this),this.fileInputRef=(0,e.createRef)()}getCssClasses(){const{error:e,theme:t,labelwidth:n,wrapperClassName:i=""}=this.props,o=[i,"tyk-form-group"],r=t?t.split(" "):[];return r.length&&r.forEach((e=>{o.push(`tyk-form-group--${e}`)})),n&&o.push("tyk-form-group--label-has-width"),e&&o.push("has-error"),o.join(" ")}getLabelStyles(){const{labelwidth:e}=this.props,t={};return e&&(t.flexBasis=e),t}getNonLabelWidth(){const{labelwidth:e}=this.props,t={};return e&&(t.flexBasis=`calc(100% - ${e} - 20px)`),t}getFileInputError(){const{error:e}=this.props;return e&&"true"!==e&&"false"!==e?t().createElement("p",{className:"tyk-form-control__error-message"},e):null}getFileInputComponent(){const e=this.props,{accept:n,value:i,onChange:o}=e,r=((e,t)=>{var n={};for(var i in e)Gs.call(e,i)&&t.indexOf(i)<0&&(n[i]=e[i]);if(null!=e&&Vs)for(var i of Vs(e))t.indexOf(i)<0&&Ks.call(e,i)&&(n[i]=e[i]);return n})(e,["accept","value","onChange"]);return t().createElement("div",{className:"tyk-file-input__wrapper",style:this.getNonLabelWidth()},t().createElement("input",(s=((e,t)=>{for(var n in t||(t={}))Gs.call(t,n)&&qs(e,n,t[n]);if(Vs)for(var n of Vs(t))Ks.call(t,n)&&qs(e,n,t[n]);return e})({accept:n,className:"tyk-form-control"},r),a={onChange:this.handleOnChange,ref:this.fileInputRef,type:"file"},zs(s,Us(a)))),this.fileInputRef.current&&this.fileInputRef.current.files.length>0?t().createElement("button",{onClick:this.clearValue,type:"button"},t().createElement(g,{type:"times"})):null);var s,a}clearValue(){const{onChange:e}=this.props;this.fileInputRef.current.value="",e("")}handleOnChange(e){const{onChange:t}=this.props;t(e.target.files)}reset(){}render(){const{id:n,label:i,note:o}=this.props;return t().createElement(e.Fragment,null,t().createElement("div",{className:this.getCssClasses()},i?t().createElement("label",{htmlFor:n,style:this.getLabelStyles()},i):null,t().createElement("div",{className:"tyk-form-control__wrapper"},this.getFileInputComponent(),o?t().createElement("p",{className:"tyk-form-control__help-block"},o):null),this.getFileInputError()))}}((e,t,n)=>{qs(e,t+"",n)})(Ys,"propTypes",{accept:r().string,disabled:r().bool,id:r().string,error:r().oneOfType([r().string,r().bool]),label:r().oneOfType([r().arrayOf(r().node),r().node,r().element,r().func,r().string]),labelwidth:r().string,name:r().string,note:r().string,onChange:r().func,placeholder:r().string,theme:r().string,value:r().instanceOf(Object),wrapperClassName:r().string});var Js=Object.defineProperty,Qs=Object.defineProperties,Xs=Object.getOwnPropertyDescriptors,Zs=Object.getOwnPropertySymbols,ea=Object.prototype.hasOwnProperty,ta=Object.prototype.propertyIsEnumerable,na=(e,t,n)=>t in e?Js(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;const ia=class n extends e.Component{static getAddon(e){return t().createElement("div",{className:"tyk-input-group__addon"},e)}constructor(e){super(e);const{value:t}=this.props;this.state={initValue:t,stateValue:t},this.handleOnChange=this.handleOnChange.bind(this)}componentDidUpdate(e){const{isfield:t,value:n,onChange:i}=this.props;t||e.value===n||this.setState({stateValue:n},(()=>{i&&i(n)}))}getLabelStyles(){const{labelwidth:e}=this.props,t={};return e&&(t.flexBasis=e),t}getNonLabelWidth(){const{labelwidth:e}=this.props,t={};return e&&(t.flexBasis=`calc(100% - ${e} - 20px)`),t}getInputError(){const{error:e}=this.props;return e&&"true"!==e&&"false"!==e?t().createElement("p",{className:"tyk-form-control__error-message"},e):null}getCssClasses(){const{error:e,theme:t,labelwidth:n,inputgroupaddonleft:i,inputgroupaddonright:o}=this.props,r=["tyk-form-group"],s=t?t.split(" "):[];return s.length&&s.forEach((e=>{r.push(`tyk-form-group--${e}`)})),i&&r.push("tyk-form-group--addon-left"),o&&r.push("tyk-form-group--addon-right"),n&&r.push("tyk-form-group--label-has-width"),e&&r.push("has-error"),r.join(" ")}getInputGroupAddon(){const{inputgroupaddonleft:e,inputgroupaddonright:i}=this.props;return t().createElement("div",{className:"tyk-input-group"},e?n.getAddon(e):null,this.getInputComponent(),i?n.getAddon(i):null)}getInputComponent(){const e=this.props,{isfield:n,onChange:i,value:o}=e,r=((e,t)=>{var n={};for(var i in e)ea.call(e,i)&&t.indexOf(i)<0&&(n[i]=e[i]);if(null!=e&&Zs)for(var i of Zs(e))t.indexOf(i)<0&&ta.call(e,i)&&(n[i]=e[i]);return n})(e,["isfield","onChange","value"]),{stateValue:s}=this.state;return t().createElement("input",(a=((e,t)=>{for(var n in t||(t={}))ea.call(t,n)&&na(e,n,t[n]);if(Zs)for(var n of Zs(t))ta.call(t,n)&&na(e,n,t[n]);return e})({autoComplete:"off",className:"tyk-form-control"},r),l={onChange:this.handleOnChange,value:n?o:s},Qs(a,Xs(l))));var a,l}reset(){const{initValue:e}=this.state;this.setState({stateValue:e})}handleOnChange(e){const{onChange:t,isfield:n}=this.props,i=e.target.value;n?t(i):this.setState({stateValue:i},(()=>{t&&t(i)}))}render(){const{label:e,id:n,inputgroupaddonleft:i,inputgroupaddonright:o,note:r,readOnly:s,value:a}=this.props;return t().createElement("div",{className:this.getCssClasses()},e?t().createElement("label",{htmlFor:n,style:this.getLabelStyles()},e):null,!s&&t().createElement("div",{className:"tyk-form-control__wrapper",style:this.getNonLabelWidth()},i||o?this.getInputGroupAddon():this.getInputComponent(),r?t().createElement("p",{className:"tyk-form-control__help-block"},r):null,this.getInputError()),s&&t().createElement("div",{className:"tyk-form-control--readonly"},a||"-"))}};((e,t,n)=>{na(e,t+"",n)})(ia,"propTypes",{disabled:r().bool,readOnly:r().bool,id:r().string,isfield:r().bool,error:r().oneOfType([r().string,r().bool]),inputgroupaddonleft:r().oneOfType([r().element,r().node,r().string]),inputgroupaddonright:r().oneOfType([r().element,r().node,r().string]),label:r().oneOfType([r().string,r().element,r().node]),labelwidth:r().string,name:r().string,note:r().string,onChange:r().func,placeholder:r().string,theme:r().string,value:r().oneOfType([r().number,r().string])});let oa=ia;var ra=Object.defineProperty,sa=Object.defineProperties,aa=Object.getOwnPropertyDescriptors,la=Object.getOwnPropertySymbols,ca=Object.prototype.hasOwnProperty,ua=Object.prototype.propertyIsEnumerable,ha=(e,t,n)=>t in e?ra(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,da=(e,t)=>{for(var n in t||(t={}))ca.call(t,n)&&ha(e,n,t[n]);if(la)for(var n of la(t))ua.call(t,n)&&ha(e,n,t[n]);return e};const pa=(0,e.forwardRef)(((n,i)=>{var o=n,{error:r,onChange:s,readOnly:a,id:l,inputgroupaddonleft:c,inputgroupaddonright:u,label:h,labelwidth:d,note:p,theme:g,value:m,wrapperClassName:f=""}=o,y=((e,t)=>{var n={};for(var i in e)ca.call(e,i)&&t.indexOf(i)<0&&(n[i]=e[i]);if(null!=e&&la)for(var i of la(e))t.indexOf(i)<0&&ua.call(e,i)&&(n[i]=e[i]);return n})(o,["error","onChange","readOnly","id","inputgroupaddonleft","inputgroupaddonright","label","labelwidth","note","theme","value","wrapperClassName"]);const b=(0,e.useRef)();(0,e.useImperativeHandle)(i,(()=>({focus:()=>{b.current.focus()}})));const v=e=>t().createElement("div",{className:"tyk-input-group__addon"},e),w=e=>{s(e,e.target.value)},A=()=>{return t().createElement("input",(e=da({autoComplete:"off",className:"tyk-form-control"},y),sa(e,aa({onChange:w,value:m,ref:b}))));var e};return t().createElement("div",{className:(()=>{const e=[f,"tyk-form-group"],t=g?g.split(" "):[];return t.length&&t.forEach((t=>{e.push(`tyk-form-group--${t}`)})),c&&e.push("tyk-form-group--addon-left"),u&&e.push("tyk-form-group--addon-right"),d&&e.push("tyk-form-group--label-has-width"),r&&e.push("has-error"),e.join(" ")})()},h?t().createElement("label",{htmlFor:l,style:da({},d&&{flexBasis:d})},h):null,!a&&t().createElement("div",{className:"tyk-form-control__wrapper",style:da({},d&&{flexBasis:`calc(100% - ${d} - 20px)`})},c||u?t().createElement("div",{className:"tyk-input-group"},c?v(c):null,A(),u?v(u):null):A(),p?t().createElement("p",{className:"tyk-form-control__help-block"},p):null,r&&"true"!==r&&"false"!==r?t().createElement("p",{className:"tyk-form-control__error-message"},r):null),a&&t().createElement("div",{className:"tyk-form-control--readonly"},m||"-"))}));pa.propTypes={disabled:r().bool,readOnly:r().bool,id:r().string,error:r().oneOfType([r().string,r().bool]),inputgroupaddonleft:r().oneOfType([r().element,r().node,r().string]),inputgroupaddonright:r().oneOfType([r().element,r().node,r().string]),label:r().oneOfType([r().string,r().element,r().node]),labelwidth:r().string,name:r().string,note:r().string,onChange:r().func,placeholder:r().string,theme:r().string,value:r().oneOfType([r().number,r().string]),wrapperClassName:r().string};const ga=pa,ma=(0,e.createContext)();var fa=Object.defineProperty;class ya extends e.Component{isInSearchValue(e){const{searchValue:t,item:n}=this.props;if(e&&e.length>0){let i=e.slice(0);return i=i.filter((e=>n[e]&&n[e].search(t)>-1)),i.length>0}return JSON.stringify(n).search(t)>-1}render(){const{item:n,itemType:i,onChange:o}=this.props;return t().createElement(e.Fragment,null,t().createElement(ma.Consumer,null,(e=>this.isInSearchValue(e.fieldsToSearchOn)?t().createElement("li",null,t().createElement("div",null,t().createElement("span",{className:"tyk-multiselect-item__name"},e.itemDisplayTemplate?e.itemDisplayTemplate(n):JSON.stringify(n)),t().createElement("span",{className:"tyk-multiselect-item__controls"},t().createElement(q,{iconType:"normal"===i?"plus":"minus",iconOnly:!0,onClick:o.bind(null,n),disabled:e.disabled||e.maxSelections&&e.maxSelections===e.nrSelectedItems&&"normal"===i}),t().createElement(q,{iconType:e.opened[n.id]?"chevron-up":"chevron-down",iconOnly:!0,onClick:e.onGetItemDetails.bind(e.parentContext,n)}))),n.details?t().createElement(I,{collapsed:!e.opened[n.id],className:"tyk-multiselect-item__details"},((e,t)=>e.detailsDisplayTemplate?e.detailsDisplayTemplate(t):JSON.stringify(t.details))(e,n)):((e,n)=>{const{opened:i}=e;return i[n.id]?t().createElement(te,{position:"relative"}):null})(e,n)):null)))}}((e,t,n)=>{((e,t,n)=>{t in e?fa(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n})(e,t+"",n)})(ya,"propTypes",{item:r().instanceOf(Object),itemType:r().string,searchValue:r().string,onChange:r().func});const ba=ya;var va=Object.defineProperty,wa=(e,t,n)=>(((e,t,n)=>{t in e?va(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n})(e,"symbol"!=typeof t?t+"":t,n),n);class Aa extends e.Component{constructor(t){super(t),wa(this,"state",{searchValue:""}),this.searchOnChange=this.searchOnChange.bind(this),this.itemChanged=this.itemChanged.bind(this),this.itemIndex=0,this.itemsListRef=(0,e.createRef)()}getItemIndex(){return this.itemIndex+=1,this.itemIndex}getItemsList(){const{itemsPageNumber:e,itemsNrPages:n,loadMoreItems:i,serverLoad:o}=this.props;return o?t().createElement(nt,{refChild:this.itemsListRef,hasMore:n>e,loadMore:i,pageNumber:e},this.renderListItems()):this.renderListItems()}searchOnChange(e){const{onCustomSearch:t}=this.props;t?t(e):this.setState({searchValue:e})}itemChanged(e){const{items:t,onChange:n}=this.props;let i=(0,X.fromJS)(t).toJS();i=i.filter((t=>e.id!==t.id)),n(i,e)}renderListItems(){const{customSearch:e,items:n,panelType:i,serverLoad:o}=this.props,{searchValue:r}=this.state;return t().createElement("ul",{className:"tyk-multiselect__list"+(o?"":" tyk-multiselect__list--scroll"),ref:this.itemsListRef},n.map((n=>t().createElement(ba,{itemType:i,key:this.getItemIndex(),onChange:this.itemChanged,searchValue:e?"":r,item:n}))))}render(){const{inputPlaceholder:e,noItemsMessage:n,items:i}=this.props,{searchValue:o}=this.state;return t().createElement("div",{className:"tyk-multiselect__panel"},t().createElement(oa,{inputgroupaddonleft:t().createElement(g,{type:"search"}),name:"search",onChange:this.searchOnChange,placeholder:e,value:o}),i.length?this.getItemsList():t().createElement(ie,{theme:"info"},n))}}wa(Aa,"propTypes",{customSearch:r().bool,onCustomSearch:r().func,panelType:r().string,onChange:r().func,items:r().instanceOf(Array),itemsPageNumber:r().number,itemsNrPages:r().number,inputPlaceholder:r().string,loadMoreItems:r().func,noItemsMessage:r().string,serverLoad:r().bool});const Ca=Aa;var ka=Object.defineProperty,xa=(e,t,n)=>(((e,t,n)=>{t in e?ka(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n})(e,"symbol"!=typeof t?t+"":t,n),n);const Sa=(e,t)=>t.filter((t=>!(e.filter((e=>e.id===t.id)).length>0)));class $a extends e.Component{constructor(e){super(e),xa(this,"state",{opened:{}}),this.valueChange=this.valueChange.bind(this),this.itemsChange=this.itemsChange.bind(this)}onGetItemDetails(e){const{getItemDetails:t}=this.props;this.setState((t=>{const n=Object.assign({},t);return n.opened[e.id]=!n.opened[e.id],n}),(()=>{t&&t(e)}))}getMultiselectError(){const{error:e}=this.props;return e&&"true"!==e&&"false"!==e?t().createElement("p",{className:"tyk-form-control__error-message"},e):null}getCssClasses(){const{error:e,wrapperClassName:t=""}=this.props,n=[t,"tyk-multiselect"];return e&&n.push("has-error"),n.join(" ")}itemsChange(e,t){const{value:n,onChange:i}=this.props,o=(0,X.fromJS)(n).toJS();o.unshift(t),i(o,t,"added")}valueChange(e,t){const{items:n,onChange:i}=this.props;(0,X.fromJS)(n).toJS().unshift(t),i(e,t,"removed")}render(){const{customSearch:n,entityNamePlural:i,disabled:o,itemDisplayTemplate:r,detailsDisplayTemplate:s,fieldsToSearchOn:a,items:l,itemsPageNumber:c,itemsNrPages:u,loadMoreItems:h,maxSelections:d,note:p,value:g}=this.props,{opened:m}=this.state;return t().createElement(e.Fragment,null,t().createElement("div",{className:this.getCssClasses()},t().createElement(ma.Provider,{value:{disabled:o,parentContext:this,itemDisplayTemplate:r,detailsDisplayTemplate:s,fieldsToSearchOn:a,maxSelections:d,nrSelectedItems:g.length,onGetItemDetails:this.onGetItemDetails,opened:m}},t().createElement("div",{className:"tyk-multiselect__header"},t().createElement("div",null,g.length," ","Selected"," ",i),t().createElement("div",null,"Select from existing",i)),t().createElement("div",{className:"tyk-multiselect__panel-wrapper"},t().createElement(Ca,{inputPlaceholder:`Search through selected ${i}`,noItemsMessage:`Selected ${i} will show here`,items:g,onChange:this.valueChange,panelType:"selected"}),t().createElement(Ca,{inputPlaceholder:`Search existing ${i}`,noItemsMessage:`No ${i} to display`,entityNamePlural:i,customSearch:!!n,onCustomSearch:n,items:Sa(g,l),onChange:this.itemsChange,serverLoad:!!h,loadMoreItems:h,itemsPageNumber:c,itemsNrPages:u,panelType:"normal"})))),t().createElement("div",null,p?t().createElement("p",{className:"tyk-form-control__help-block"},p):null),this.getMultiselectError())}}xa($a,"propTypes",{customSearch:r().func,disabled:r().bool,error:r().string,entityNamePlural:r().string,items:r().instanceOf(Array),itemDisplayTemplate:r().func,detailsDisplayTemplate:r().func,fieldsToSearchOn:r().instanceOf(Array),onChange:r().func,getItemDetails:r().func,itemsPageNumber:r().number,itemsNrPages:r().number,loadMoreItems:r().func,note:r().string,maxSelections:r().number,value:r().instanceOf(Array),wrapperClassName:r().string});const Ea=$a;var Oa=Object.defineProperty,Ta=Object.defineProperties,_a=Object.getOwnPropertyDescriptors,Ra=Object.getOwnPropertySymbols,Ma=Object.prototype.hasOwnProperty,La=Object.prototype.propertyIsEnumerable,Ba=(e,t,n)=>t in e?Oa(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Na=(e,t)=>{for(var n in t||(t={}))Ma.call(t,n)&&Ba(e,n,t[n]);if(Ra)for(var n of Ra(t))La.call(t,n)&&Ba(e,n,t[n]);return e};class Ia extends e.Component{getCssClasses(){const{inline:e,nospace:t,theme:n="",disabled:i,readOnly:o,wrapperClassName:r=""}=this.props,s=[r];return e?s.push("tyk-radio--inline"):s.push("tyk-radio"),t&&s.push("no-margin"),n.trim()&&s.push(...n.split(" ").map((e=>`tyk-radio--theme-${e}`))),(o||i)&&s.push("tyk-radio--is-disabled"),s.join(" ")}render(){const e=this.props,{input:n,label:i,note:o,disabled:r,readOnly:s}=e,a=((e,t)=>{var n={};for(var i in e)Ma.call(e,i)&&t.indexOf(i)<0&&(n[i]=e[i]);if(null!=e&&Ra)for(var i of Ra(e))t.indexOf(i)<0&&La.call(e,i)&&(n[i]=e[i]);return n})(e,["input","label","note","disabled","readOnly"]);return t().createElement("div",{className:this.getCssClasses()},t().createElement("label",null,t().createElement("input",(l=Na(Na({},n),a),Ta(l,_a({type:"radio",disabled:s||r})))),i),t().createElement("p",{className:"tyk-form-control__help-block"},o));var l}}((e,t,n)=>{Ba(e,t+"",n)})(Ia,"propTypes",{disabled:r().bool,readOnly:r().bool,inline:r().bool,theme:r().string,input:r().instanceOf(Object),label:r().oneOfType([r().arrayOf(r().node),r().node,r().element,r().func,r().string]),name:r().string,nospace:r().bool,value:r().string,note:r().oneOfType([r().string,r().element,r().node]),wrapperClassName:r().string});var Pa=Object.defineProperty,Da=Object.defineProperties,Fa=Object.getOwnPropertyDescriptors,Wa=Object.getOwnPropertySymbols,Ha=Object.prototype.hasOwnProperty,ja=Object.prototype.propertyIsEnumerable,za=(e,t,n)=>t in e?Pa(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;class Ua extends e.Component{constructor(e){super(e);const{value:t}=this.props;this.state={initValue:t,stateValue:t},this.handleOnChange=this.handleOnChange.bind(this),this.handleOnBlur=this.handleOnBlur.bind(this)}componentDidUpdate(e){const{isfield:t,value:n,onChange:i}=this.props;t||e.value===n||this.setState({stateValue:n},(()=>{i&&i(n)}))}getSelectComponent(){const e=this.props,{isfield:n,options:i,onChange:o,onBlur:r,value:s}=e,a=((e,t)=>{var n={};for(var i in e)Ha.call(e,i)&&t.indexOf(i)<0&&(n[i]=e[i]);if(null!=e&&Wa)for(var i of Wa(e))t.indexOf(i)<0&&ja.call(e,i)&&(n[i]=e[i]);return n})(e,["isfield","options","onChange","onBlur","value"]),{stateValue:l}=this.state;let c="";return n&&s?c=s:l&&(c=l),t().createElement("select",(u=((e,t)=>{for(var n in t||(t={}))Ha.call(t,n)&&za(e,n,t[n]);if(Wa)for(var n of Wa(t))ja.call(t,n)&&za(e,n,t[n]);return e})({className:"tyk-form-control tyk-select"},a),h={onChange:this.handleOnChange,onBlur:this.handleOnBlur,value:c?c.id:""},Da(u,Fa(h))),i.map((e=>t().createElement("option",{key:e.id,value:e.id},e.name))));var u,h}getSelectError(){const{error:e}=this.props;return e&&"true"!==e&&"false"!==e?t().createElement("p",{className:"tyk-form-control__error-message"},e):null}getCssClasses(){const{error:e,labelwidth:t,theme:n,wrapperClassName:i=""}=this.props,o=[i,"tyk-form-group"],r=n?n.split(" "):[];return r.length&&r.forEach((e=>{o.push(`tyk-form-group--${e}`)})),t&&o.push("tyk-form-group--label-has-width"),e&&o.push("has-error"),o.join(" ")}getLabelStyles(){const{labelwidth:e}=this.props,t={};return e&&(t.flexBasis=e),t}getNonLabelWidth(){const{labelwidth:e}=this.props,t={};return e&&(t.flexBasis=`calc(100% - ${e} - 20px)`),t}handleOnBlur(){const{value:e,onBlur:t}=this.props;t&&t(e)}handleOnChange(e){const{onChange:t,isfield:n,options:i}=this.props;let o=null;o=i.filter((t=>t.id===e.target.value)),[o]=o,n?t(o.id?o:null):this.setState({stateValue:o},(()=>{t(o.id?o:null)}))}reset(){const{initValue:e}=this.state;this.setState({stateValue:e})}render(){const{label:n,id:i,note:o,readOnly:r,value:s}=this.props;return t().createElement(e.Fragment,null,t().createElement("div",{className:this.getCssClasses()},n?t().createElement("label",{htmlFor:i,style:this.getLabelStyles()},n):null,!r&&t().createElement("div",{className:"tyk-form-control__wrapper",style:this.getNonLabelWidth()},this.getSelectComponent(),o?t().createElement("p",{className:"tyk-form-control__help-block"},o):null,this.getSelectError()),r&&t().createElement("div",{className:"tyk-form-control--readonly"},s||"-")))}}((e,t,n)=>{za(e,t+"",n)})(Ua,"propTypes",{disabled:r().bool,readOnly:r().bool,id:r().string,isfield:r().bool,error:r().oneOfType([r().string,r().bool]),options:r().instanceOf(Array),label:r().oneOfType([r().arrayOf(r().node),r().node,r().element,r().func,r().string]),labelwidth:r().string,name:r().string,note:r().string,onBlur:r().func,onChange:r().func,placeholder:r().string,theme:r().string,value:r().oneOfType([r().string,r().object]),wrapperClassName:r().string});var Va=Object.defineProperty,Ga=Object.defineProperties,Ka=Object.getOwnPropertyDescriptors,qa=Object.getOwnPropertySymbols,Ya=Object.prototype.hasOwnProperty,Ja=Object.prototype.propertyIsEnumerable,Qa=(e,t,n)=>t in e?Va(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;function Xa(e){const{checkboxalticon:n,items:i,itemTemplate:o,value:r,noItemsMessage:s="No items in the list",onChange:a,theme:l,primaryKey:c,wrapperClassName:u=""}=e,h=e=>{const t=structuredClone(r),n=t.findIndex((t=>JSON.stringify(t)===JSON.stringify(Array.isArray(t)?e.target.value.split(","):e.target.value)));if(e.target.checked&&-1===n){const n=e.target.value.split(","),i=n.length>1?n:e.target.value;t.push(i)}else!e.target.checked&&n>-1&&t.splice(n,1);a&&a(t)},d=e=>{const t=[];return n&&t.push("tyk-selectable-list__item--with-icon"),e&&t.push("tyk-selectable-list__item--active"),t.join(" ")};return t().createElement(mt,(p=((e,t)=>{for(var n in t||(t={}))Ya.call(t,n)&&Qa(e,n,t[n]);if(qa)for(var n of qa(t))Ja.call(t,n)&&Qa(e,n,t[n]);return e})({},e),Ga(p,Ka({theme:l||"default",className:`tyk-selectable-list ${u}`}))),i.length?i.map(((e,i)=>{return t().createElement(mt.Item,{key:i,className:d(r.includes(e[c]))},t().createElement("label",null,t().createElement("div",{className:"tyk-selectable-list__item"},o?o(e):e.name),t().createElement("input",{type:"checkbox",checked:(s=r,a=e[c],Boolean(s.find((e=>JSON.stringify(a)===JSON.stringify(e))))),onChange:h.bind(e),value:e[c]}),n?t().createElement(g,{type:n}):null));var s,a})):t().createElement("li",{className:"tyk-selectable-list__no-items-message"},t().createElement(ie,{theme:"info"},s)));var p}Xa.propTypes={items:r().instanceOf(Array),itemTemplate:r().oneOfType([r().node,r().element,r().string,r().func]),value:r().instanceOf(Array),onChange:r().func,primaryKey:r().string,noItemsMessage:r().string,checkboxalticon:r().oneOfType([r().node,r().element,r().string]),theme:r().string,wrapperClassName:r().string},Xa.defaultProps={items:[],primaryKey:"id",value:[]};const Za=Xa;var el=Object.defineProperty,tl=Object.getOwnPropertySymbols,nl=Object.prototype.hasOwnProperty,il=Object.prototype.propertyIsEnumerable,ol=(e,t,n)=>t in e?el(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,rl=(e,t)=>{for(var n in t||(t={}))nl.call(t,n)&&ol(e,n,t[n]);if(tl)for(var n of tl(t))il.call(t,n)&&ol(e,n,t[n]);return e};function sl(e){var n=e,{id:i,input:o,label:r,note:s,error:a,theme:l,labelwidth:c,value:u,readOnly:h,wrapperClassName:d}=n,p=((e,t)=>{var n={};for(var i in e)nl.call(e,i)&&t.indexOf(i)<0&&(n[i]=e[i]);if(null!=e&&tl)for(var i of tl(e))t.indexOf(i)<0&&il.call(e,i)&&(n[i]=e[i]);return n})(n,["id","input","label","note","error","theme","labelwidth","value","readOnly","wrapperClassName"]);const g=["tyk-form-group",d,...l?l.split(" ").map((e=>`tyk-form-group--${e}`)):[],c&&"tyk-form-group--label-has-width",a&&"has-error"].filter(Boolean).join(" ");return t().createElement("div",{className:g},r?t().createElement("label",{htmlFor:i,style:c?{flexBasis:c}:{}},r):null,!h&&t().createElement("div",{className:"tyk-form-control__wrapper",style:c?{flexBasis:`calc(100% - ${c} - 20px)`}:{}},t().createElement("textarea",rl(rl({className:"tyk-form-control"},p),o),u),s?t().createElement("p",{className:"tyk-form-control__help-block"},s):null,a&&"true"!==a&&"false"!==a?t().createElement("p",{className:"tyk-form-control__error-message"},a):null),h&&t().createElement("div",{className:"tyk-form-control--readonly"},u||"-"))}sl.propTypes={disabled:r().bool,readOnly:r().bool,input:r().instanceOf(Object),error:r().string,label:r().oneOfType([r().arrayOf(r().node),r().node,r().element,r().func,r().string]),labelwidth:r().string,name:r().string,note:r().string,onChange:r().func,id:r().string,theme:r().string,value:r().string,wrapperClassName:r().string};const al=sl,ll=(0,e.createContext)();class cl extends e.Component{static getNotchCssClasses(e){return["tyk-toggle__item-notch",`tyk-toggle__item-notch--${e.type}`].join(" ")}constructor(t){super(t),this.itemRef=(0,e.createRef)()}componentDidMount(){const{context:e,value:t}=this.props;e.value===t&&e.saveSelectedRef(this.itemRef)}componentDidUpdate(e){const{context:t,value:n}=this.props;e.context.value!==t.value&&t.value===n&&t.saveSelectedRef(this.itemRef)}onChange(e){const{context:t,value:n}=this.props,{disabled:i,readOnly:o}=t;i||o||t.onItemSelected("single"===t.type?!t.value:n,e)}render(){const{context:e,label:n,name:i,value:o}=this.props;return t().createElement("li",{className:"tyk-toggle__item "+(!e.value||"single"!==e.type&&e.value!==o?"":"tyk-toggle__item--active"),ref:this.itemRef},t().createElement("label",null,t().createElement("input",{type:"single"===e.type?"checkbox":"radio",name:i,checked:e.value===o,onChange:this.onChange.bind(this),value:o}),n?t().createElement("span",null,n):t().createElement("span",{className:"empty-toggle"}," "),"single"===e.type?t().createElement("span",{className:cl.getNotchCssClasses(e)}):null))}}cl.propTypes={context:r().instanceOf(Object),label:r().oneOfType([r().arrayOf(r().node),r().node,r().element,r().func,r().string]),name:r().string,value:r().string};const ul=cl;var hl=Object.defineProperty,dl=Object.defineProperties,pl=Object.getOwnPropertyDescriptors,gl=Object.getOwnPropertySymbols,ml=Object.prototype.hasOwnProperty,fl=Object.prototype.propertyIsEnumerable,yl=(e,t,n)=>t in e?hl(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;const bl=t().forwardRef(((e,n)=>t().createElement(ll.Consumer,null,(i=>{return t().createElement(ul,(o=((e,t)=>{for(var n in t||(t={}))ml.call(t,n)&&yl(e,n,t[n]);if(gl)for(var n of gl(t))fl.call(t,n)&&yl(e,n,t[n]);return e})({},e),dl(o,pl({context:i,ref:n}))),e.children);var o}))));bl.propTypes={children:r().oneOfType([r().arrayOf(r().node),r().node,r().element,r().string])};const vl=bl;function wl({className:n,disabled:i,readOnly:o,size:r,theme:s,direction:a,onDark:l,wrapperClassName:c="",onChange:u,labelwidth:h,label:d,separated:p,children:g,type:m,value:f,error:y}){const[b,v]=(0,e.useState)(null),w=(0,e.useRef)(),A=(0,e.useRef)(),C=[c,n,"tyk-toggle",`tyk-toggle--disabled-${o||i}`,`tyk-toggle--${r||"md"}`,`tyk-toggle--${s}`,`tyk-toggle--${a}`,l&&"tyk-toggle--on-dark"].filter(Boolean).join(" "),k=(0,e.useCallback)(((e,t)=>{u&&u(e,t)}),[u]),x=(0,e.useCallback)((()=>h?{flexBasis:h}:{}),[h]),S=(0,e.useCallback)((()=>{if(!b||p)return{};const e=b.current.offsetWidth;return{left:b.current.getBoundingClientRect().left-A.current.getBoundingClientRect().left+4+"px",width:e-8+"px"}}),[b,p]),$=(0,e.useMemo)((()=>({disabled:i,readOnly:o,onItemSelected:k,saveSelectedRef:v,separated:p,type:m,value:f})),[i,o,k,p,m,f]);return t().createElement(t().Fragment,null,t().createElement("div",{className:C,ref:A},t().createElement(ll.Provider,{value:$},d?t().createElement("label",{className:"tyk-toggle__label",style:x()},d):null,t().createElement("ul",{className:`tyk-toggle__list tyk-toggle__list--${m} ${y&&"tyk-toggle__list--has-error"} tyk-toggle__list--${p?"separated":"not-separated"}`},g,"multiple"!==m||p?null:t().createElement("li",{className:"tyk-toggle__notch",ref:w,style:S()})))),y&&t().createElement("p",{className:"tyk-form-control__error-message"},y))}wl.propTypes={children:r().oneOfType([r().arrayOf(r().node),r().node,r().element,r().string]),className:r().string,disabled:r().bool,readOnly:r().bool,error:r().string,onChange:r().func,label:r().oneOfType([r().arrayOf(r().node),r().node,r().element,r().func,r().string]),labelwidth:r().string,theme:r().string,type:r().string,size:r().string,separated:r().bool,direction:r().string,value:r().oneOfType([r().bool,r().string]),onDark:r().bool,wrapperClassName:r().string},wl.defaultProps={separated:!1,theme:"primary",type:"single",direction:"row"},wl.Item=vl;const Al=wl,Cl=(e,t)=>{let n=e;return t.forEach((e=>{n=n.replaceAll(e.id,`__TOKEN__${e.id}__TOKEN__`)})),n},kl=(e,t)=>{setTimeout((()=>{e.current.setSelectionRange(t,t)}),20)};function xl({setShowOptions:n,tokenValue:i,disabled:o,placeholder:r,tokens:s,dropdownTriggerKey:a,setStringBuilderHeight:l,stringBuilderHeight:c,setTokenString:u,tokenString:h,showOptions:d,options:p,setTokenValue:g,inputRef:m,setInputInFocus:f,invalidTokenRegex:y,name:b,contextMaxLength:v}){const[w,A]=(0,e.useState)(!1);(0,e.useEffect)((()=>{if(i){const e=i.length>50?i.length/5:0;l(m.current.scrollHeight+e)}}),[]);const C=(e,t)=>{if(t-1===i.length)return void u(`${h}${e}`);const n=i.slice(0,t-1)+e+i.slice(t-1),o=Cl(n,p);u(o)};return t().createElement("textarea",{spellCheck:!1,disabled:o,className:"string-builder__input",value:i,onChange:e=>(e=>{const{target:t}=e,{selectionStart:i,value:o}=t;if(d&&n(!1),g(o),o&&!w){const e=o.charAt(i-1);C(e,i)}A(!1)})(e),onKeyDown:e=>(e=>{const{key:t}=e,{selectionEnd:o,selectionStart:r,value:l}=e.target,c=l.substring(r,o);if(t===a&&!d)return e.preventDefault(),void n(!0);"Enter"!==t?("Backspace"===t&&(e.preventDefault(),(e=>{const{selectionEnd:t}=e.target;if(t===i.length){const t=s[(null==s?void 0:s.length)-2],n=i.slice(-(null==t?void 0:t.length));if(t===n)return e.preventDefault(),void u(h.slice(0,-`__TOKEN__${n}__TOKEN__`.length));if(i.endsWith(" ")){const e=i.match(y),t=i.slice(0,-` ${e[e.length-1]} `.length),n=Cl(t,p);return void u(n)}return void u(h.slice(0,-1))}const n=i.substring(0,t),o=i.slice(t),r=Cl(n,p);if(r.endsWith("__TOKEN__")){e.preventDefault();const i=r.split(/__TOKEN__(.*?)__TOKEN__/g),s=i[i.length-2],a=`${n.slice(0,-s.length)}${o}`,l=Cl(a,p);return u(l),void kl(m,t-s.length)}const a=n.match(y);if((null==a?void 0:a[0])&&1===a.length){e.preventDefault();const i=`${n.replaceAll(y,"").trim()}${o}`,r=Cl(i,p);return u(r),void kl(m,t-` ${a[0]} `.length)}const l=`${n.slice(0,-1)}${o}`,c=Cl(l,p);u(c),kl(m,t-1)})(e)),"Delete"===t&&(e.preventDefault(),(e=>{const{selectionEnd:t}=e.target;if(t===i.length)return;const n=i.substring(0,t),o=i.slice(t),r=Cl(o,p);if(r.startsWith("__TOKEN__")){const e=r.split(/__TOKEN__(.*?)__TOKEN__/g).filter((e=>""!==e))[0],i=`${n}${o.substr(e.length)}`,s=Cl(i,p);return u(s),void kl(m,t)}const s=`${n}${o.substr(1)}`,a=Cl(s,p);u(a),kl(m,t)})(e)),e.metaKey&&"x"===t&&u(""),c&&(e.preventDefault(),((e,t,n)=>{if(n.length>1&&-1===["Delete","Backspace"].indexOf(n))return;const{selectionEnd:o,selectionStart:r}=e.target,s=n.length>1?"":n;if(t.length>1){const e=i.substring(0,r)+s+i.substring(o),t=Cl(e,p);u(t),kl(m,s.length?r+1:r)}})(e,c,t))):e.preventDefault()})(e),placeholder:r,name:b,ref:m,style:{height:`${c}px`},maxLength:v,onPaste:e=>{e.preventDefault();const{clipboardData:t}=e,{selectionStart:n,selectionEnd:o}=e.target;A(!0);let r=t.getData("text/plain");if(n!==o){r=i.slice(0,n)+r+i.slice(o,i.length);const e=Cl(r,p);return void u(e)}const s=Cl(r,p);C(s,n)},onFocus:()=>{f(!0)},onBlur:()=>f(!1)})}xl.propTypes={setShowOptions:r().func,tokenValue:r().string,disabled:r().bool,placeholder:r().string,tokenString:r().string,stringBuilderHeight:r().number,dropdownTriggerKey:r().string,setStringBuilderHeight:r().func,setTokenString:r().func,setTokenValue:r().func,setInputInFocus:r().func,showOptions:r().bool,tokens:r().arrayOf(r().string),options:r().arrayOf(r().shape({id:r().string.isRequired,name:r().string.isRequired,className:r().string,desc:r().string})),inputRef:r().instanceOf(Object),invalidTokenRegex:r().instanceOf(RegExp),name:r().string,contextMaxLength:r().number};const Sl=e=>{const{token:n,findInvalidTokenSubstitute:i}=e;return t().createElement("span",{role:"main",onClick:()=>i(n),onKeyDown:()=>{}},t().createElement(Bn,{render:"invalid token detected",position:"top"},t().createElement("span",{className:"invalid_token"},`${n}`,t().createElement(g,{type:"exclamation-circle"}))))};Sl.propTypes={token:r().string,findInvalidTokenSubstitute:r().func};const $l=Sl,El=e=>{const{tokens:n,options:i,disabled:o,invalidTokenRegex:r,findInvalidTokenSubstitute:s}=e,a=new Set(n).size!==n.length,l=n&&n.map((e=>{if(i){const n=i.find((t=>t.id===e));if(r&&!n){const n=e.replaceAll(" ","").split(r);if((null==n?void 0:n.length)>1)return t().createElement("span",{key:`${e}${a&&Math.random()}`},n.map((e=>e.match(r)?t().createElement($l,{token:e,findInvalidTokenSubstitute:s}):t().createElement("span",null,`${e} `))))}if(n)return t().createElement("span",{key:`${e}${a&&Math.random()}`,className:`${n.className||"default-option-name"}`},n.id)}return t().createElement("span",{key:`${e}${a&&Math.random()}`},e)}));return t().createElement("div",{className:`string-builder__styled ${o&&"string-builder__disabled"}`},l)};El.propTypes={tokens:r().arrayOf(r().string),options:r().arrayOf(r().instanceOf(Object)),disabled:r().bool,invalidTokenRegex:r().instanceOf(RegExp),findInvalidTokenSubstitute:r().func};const Ol=({options:n,showOptions:i,handleOptionSelection:o,containerRef:r,getThemeClasses:s,setShowOptions:a,allowSearch:l,initialSearchValue:c})=>{const[u,h]=(0,e.useState)(c),[d,p]=(0,e.useState)(n);return(0,e.useEffect)((()=>{h(c)}),[c]),(0,e.useEffect)((()=>{if(""===u)return void p(n);const e=n.filter((e=>e.name.toLowerCase().includes(u.toLowerCase())));p(e)}),[u]),(0,e.useEffect)((()=>{p(n)}),[n]),i?t().createElement(t().Fragment,null,t().createElement(ct,{className:`string-builder-dropdown tyk-form-group ${s().join(" ")}`,element:r,size:"matchElement",displayAxis:"vertical"},l&&t().createElement("div",{className:"string-builder-search"},t().createElement("input",{autoFocus:!0,className:"tyk-form-control",value:u,placeholder:"Search parameter",onChange:e=>{h(e.target.value)},onKeyDown:e=>{"Escape"!==e.key&&"ArrowUp"!==e.key&&"Enter"!==e.key||a(!1)}})),t().createElement("ul",{className:"string-builder-list"},d.map((e=>t().createElement("li",{key:`${e.id}${Math.random()}`,onMouseDown:()=>o(e)},t().createElement("span",{className:`url-builder__options_name ${e.className||"default-option-name"}`},e.name),e.desc&&t().createElement("span",{className:"url-builder__options_description"},"  :  ",e.desc))))))):null};Ol.propTypes={options:r().arrayOf(Object),showOptions:r().bool,handleOptionSelection:r().func,getThemeClasses:r().func,setShowOptions:r().func,containerRef:r().instanceOf(Object),allowSearch:r().bool,initialSearchValue:r().string};const Tl=e=>{const{note:n,error:i,inputInFocus:o,stringBuilderHeight:r,dropdownTriggerKey:s}=e;return t().createElement("div",{className:"string-builder-footer",style:{marginTop:r?r-8+"px":"30px"}},o&&!i&&t().createElement("p",{className:"tyk-form-control__help-block"},t().createElement("span",null,"Enter",t().createElement("span",{className:"string_builder_trigger"},s),"to add any parameter")),n&&t().createElement("p",{className:"tyk-form-control__help-block"},n),i&&"true"!==i&&"false"!==i&&t().createElement("p",{className:"tyk-form-control__error-message"},i))};function _l(n){const{options:i,onChange:o,value:r,theme:s,error:a,disabled:l,readOnly:c,note:u,label:h,labelwidth:d,placeholder:p,allowSearch:g,dropdownTriggerKey:m,invalidTokenRegex:f,name:y,wrapperClassName:b=""}=n,[v,w]=(0,e.useState)(r),[A,k]=(0,e.useState)(),[x,S]=(0,e.useState)(!1),[$,E]=(0,e.useState)(Cl(r,i)),[O,T]=(0,e.useState)(v.length+5),[_,R]=(0,e.useState)([]),[M,L]=(0,e.useState)(),[B,N]=(0,e.useState)(!1),[I,P]=(0,e.useState)(""),[D,F]=(0,e.useState)(null),W=C($),H=(0,e.useRef)(),j=(0,e.useRef)();(0,e.useEffect)((()=>{o&&o(v.replaceAll(" ",""))}),[v]),(0,e.useEffect)((()=>{const e=f?r.replaceAll(f," $& "):r;w((()=>e)),E((()=>Cl(e,i)))}),[r]),(0,e.useEffect)((()=>{const e=$.split(/__TOKEN__(.*?)__TOKEN__/g),t=e.join("");R((()=>e)),w((()=>t)),L((()=>t))}),[$]),(0,e.useEffect)((()=>{if(O-3e)),T((()=>O+25))}}),[$,v]);const z=()=>(s?s.split(" "):[]).map((e=>`tyk-form-group--${e}`));return t().createElement("div",{className:`string-builder ${b}`,ref:H},t().createElement("div",{className:["tyk-form-group",...z(),a&&"has-error",l&&"disabled"].filter(Boolean).join(" ")},h&&t().createElement("label",{style:{flexBasis:d||"auto"}},h),!c&&t().createElement("div",{className:"tyk-form-control__wrapper"},t().createElement("div",{className:`tyk-form-control ${l&&"string-builder__disabled"}`,style:{height:`${A}px`}},t().createElement(xl,{setInputInFocus:N,setShowOptions:S,tokenValue:v,disabled:l,placeholder:p,allowSearch:g,tokens:_,dropdownTriggerKey:m,setStringBuilderHeight:k,stringBuilderHeight:A,setTokenString:E,tokenString:$,showOptions:x,options:i,setTokenValue:w,inputRef:j,invalidTokenRegex:f,name:y,contextMaxLength:O,setContentMaxLength:T}),t().createElement(El,{tokens:_,options:i,disabled:l,invalidTokenRegex:f,findInvalidTokenSubstitute:e=>{F((()=>e)),P((()=>e.replace(/[^a-zA-Z ]/g,""))),S((()=>!0))}}),t().createElement(Ol,{showOptions:x,options:i,handleOptionSelection:e=>{let t="";const{selectionStart:n}=j.current;W&&W!==r&&!D&&(t=W+v.split(M)[1]);let o="";if(n===v.length||D)o=`${t||v}__TOKEN__${e.id}__TOKEN__`;else{const t=v.slice(0,n)+e.id+v.slice(n);o=Cl(t,i),kl(j,n+e.id.length)}D&&(o=$.replace(` ${D} `,`__TOKEN__${e.id}__TOKEN__`),F((()=>null)),P((()=>""))),E((()=>o)),S((()=>!1)),setTimeout((()=>{j.current.focus()}),20)},containerRef:H,getThemeClasses:z,setShowOptions:S,allowSearch:g,initialSearchValue:I}),t().createElement(Tl,{error:a,note:u,inputInFocus:B,stringBuilderHeight:A,dropdownTriggerKey:m}))),c&&t().createElement("div",{className:"tyk-form-control--readonly"},r||"-")))}Tl.propTypes={note:r().string,error:r().string,dropdownTriggerKey:r().string,inputInFocus:r().bool,stringBuilderHeight:r().number},_l.propTypes={options:r().arrayOf(r().shape({id:r().string.isRequired,name:r().string.isRequired,className:r().string,desc:r().string})),onChange:r().func,value:r().string,disabled:r().bool,readOnly:r().bool,error:r().string,theme:r().string,note:r().string,label:r().oneOfType([r().arrayOf(r().node),r().node,r().element,r().func,r().string]),labelwidth:r().string,placeholder:r().string,dropdownTriggerKey:r().string,invalidTokenRegex:r().instanceOf(RegExp),allowSearch:r().bool,name:r().string,wrapperClassName:r().string},_l.defaultProps={onChange:null,value:"",options:[],theme:"default"};const Rl=_l,Ml={FORM_DEBOUNCE:200};function Ll(e,t){Ml[e]=t}const Bl=Ml;var Nl=Object.defineProperty,Il=Object.defineProperties,Pl=Object.getOwnPropertyDescriptors,Dl=Object.getOwnPropertySymbols,Fl=Object.prototype.hasOwnProperty,Wl=Object.prototype.propertyIsEnumerable,Hl=(e,t,n)=>t in e?Nl(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,jl=(e,t)=>{for(var n in t||(t={}))Fl.call(t,n)&&Hl(e,n,t[n]);if(Dl)for(var n of Dl(t))Wl.call(t,n)&&Hl(e,n,t[n]);return e},zl=(e,t)=>Il(e,Pl(t));function Ul(e,t){return t.split(/[\][.]/).filter(Boolean).reduce(((e,t)=>e?e[t]:e),e)}const Vl=(n,i)=>o=>{var r,s=o,{field:a,form:l}=s,c=((e,t)=>{var n={};for(var i in e)Fl.call(e,i)&&t.indexOf(i)<0&&(n[i]=e[i]);if(null!=e&&Dl)for(var i of Dl(e))t.indexOf(i)<0&&Wl.call(e,i)&&(n[i]=e[i]);return n})(s,["field","form"]);const u="number"==typeof Bl.FORM_DEBOUNCE?Bl.FORM_DEBOUNCE:200,[h,d]=(0,e.useState)(a.value),p=jl({getOnChangeProps:()=>({}),hasIsFieldProp:!1},i),g=(0,e.useCallback)((()=>{const e=e=>e();return!1===c.debounce||!1===Bl.FORM_DEBOUNCE&&!c.debounce?e:function(e,t){let n;return(...i)=>{clearTimeout(n),n=setTimeout(e,t,...i)}}(e,"number"==typeof c.debounce?c.debounce:u)})(),[]),m=e=>{const t=(n=e)&&n.target?"INPUT"!==n.target.nodeName||"checkbox"!==n.target.type&&"radio"!==n.target.type?n.target.value:n.target.checked:n;var n;const i=p.getOnChangeProps(t,a,l,c),o=i.value||c.value||t;g((()=>{"function"==typeof c.onChange&&c.onChange(o),a.onChange({target:jl({name:a.name,value:o},i)})})),d(o)},f=(Ul(l.touched,a.name)||Boolean(l.submitCount))&&Ul(l.errors,a.name),y="string"==typeof f?f:"";(0,e.useEffect)((()=>{d(a.value)}),[a.value]),(null==(r=l.status)?void 0:r.disabled)&&(c.disabled=!0);const b=jl({},c);return delete b.debounce,t().createElement(n,zl(jl(jl(zl(jl({},a),{error:y}),p.hasIsFieldProp?{isfield:!0}:{}),b),{checked:"string"==typeof c.value?a.value===c.value:a.value,onChange:m,value:h,input:{value:h,onChange:m}}))},Gl=Vl(oi,{getOnChangeProps:e=>({checked:e})}),Kl=Vl(po),ql=Vl(xo),Yl=Vl(Wo),Jl=Vl(hr),Ql=Vl(bs,{getOnChangeProps:e=>({value:e||[]})}),Xl=Vl(Hs),Zl=Vl(Ys),ec=Vl(oa,{hasIsFieldProp:!0}),tc=Vl(ga),nc=Vl(Ea),ic=Vl(Ia,{getOnChangeProps:(e,t,n,i)=>({checked:e===i.value,value:i.value})}),oc=Vl(Ua,{hasIsFieldProp:!0}),rc=Vl(Za),sc=Vl(al),ac=Vl(Al),lc=Vl(Rl);var cc=Object.defineProperty,uc=Object.defineProperties,hc=Object.getOwnPropertyDescriptors,dc=Object.getOwnPropertySymbols,pc=Object.prototype.hasOwnProperty,gc=Object.prototype.propertyIsEnumerable,mc=(e,t,n)=>t in e?cc(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,fc=(e,t)=>{for(var n in t||(t={}))pc.call(t,n)&&mc(e,n,t[n]);if(dc)for(var n of dc(t))gc.call(t,n)&&mc(e,n,t[n]);return e};class yc extends e.Component{constructor(e){super(e),this.handleOnChange=this.handleOnChange.bind(this)}getInputError(){const{meta:e,validationmessages:t}=this.props,{touched:n,error:i,warning:o}=e;let r=null;return n&&i&&t[i]?r=t[i]:n&&o&&(r="warning"),r}handleOnChange(e){const{input:t}=this.prop,{onChange:n}=t;n((0,X.fromJS)(e))}render(){const e=this.props,{input:n}=e,i=((e,t)=>{var n={};for(var i in e)pc.call(e,i)&&t.indexOf(i)<0&&(n[i]=e[i]);if(null!=e&&dc)for(var i of dc(e))t.indexOf(i)<0&&gc.call(e,i)&&(n[i]=e[i]);return n})(e,["input"]);return t().createElement(po,(o=fc(fc({},n),i),r={error:this.getInputError()},uc(o,hc(r))));var o,r}}((e,t,n)=>{mc(e,t+"",n)})(yc,"propTypes",{input:r().instanceOf(Object),meta:r().instanceOf(Object),validationmessages:r().instanceOf(Object)});var bc=Object.defineProperty,vc=Object.defineProperties,wc=Object.getOwnPropertyDescriptors,Ac=Object.getOwnPropertySymbols,Cc=Object.prototype.hasOwnProperty,kc=Object.prototype.propertyIsEnumerable,xc=(e,t,n)=>t in e?bc(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;class Sc extends e.Component{constructor(e){super(e),this.handleOnChange=this.handleOnChange.bind(this)}getComboboxError(){const{meta:e,validationmessages:t}=this.props,{touched:n,error:i,warning:o}=e;let r=null;return n&&i&&t[i]?r=t[i]:n&&o&&(r="warning"),r}handleOnChange(e){const{input:t}=this.props,{onChange:n}=t;n((0,X.fromJS)(e))}render(){const e=((e,t)=>{var n={};for(var i in e)Cc.call(e,i)&&t.indexOf(i)<0&&(n[i]=e[i]);if(null!=e&&Ac)for(var i of Ac(e))t.indexOf(i)<0&&kc.call(e,i)&&(n[i]=e[i]);return n})(this.props,[]);return t().createElement(xo,(n=((e,t)=>{for(var n in t||(t={}))Cc.call(t,n)&&xc(e,n,t[n]);if(Ac)for(var n of Ac(t))kc.call(t,n)&&xc(e,n,t[n]);return e})({},e),i={onChange:this.handleOnChange,value:e.input.value?e.input.value.toJS():e.input.value,error:this.getComboboxError()},vc(n,wc(i))));var n,i}}((e,t,n)=>{xc(e,t+"",n)})(Sc,"propTypes",{meta:r().instanceOf(Object),input:r().instanceOf(Object),validationmessages:r().instanceOf(Object)});var $c=Object.defineProperty,Ec=Object.defineProperties,Oc=Object.getOwnPropertyDescriptors,Tc=Object.getOwnPropertySymbols,_c=Object.prototype.hasOwnProperty,Rc=Object.prototype.propertyIsEnumerable,Mc=(e,t,n)=>t in e?$c(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;class Lc extends e.Component{constructor(e){super(e),this.handleOnChange=this.handleOnChange.bind(this)}handleOnChange(e){const{input:t}=this.props,{onChange:n}=t;n((0,X.fromJS)(e))}render(){const e=this.props,{children:n,input:i}=e,o=((e,t)=>{var n={};for(var i in e)_c.call(e,i)&&t.indexOf(i)<0&&(n[i]=e[i]);if(null!=e&&Tc)for(var i of Tc(e))t.indexOf(i)<0&&Rc.call(e,i)&&(n[i]=e[i]);return n})(e,["children","input"]);return t().createElement(Qi,(r=((e,t)=>{for(var n in t||(t={}))_c.call(t,n)&&Mc(e,n,t[n]);if(Tc)for(var n of Tc(t))Rc.call(t,n)&&Mc(e,n,t[n]);return e})({},o),s={onSelect:this.handleOnChange,selectedItem:i.value},Ec(r,Oc(s))),n);var r,s}}((e,t,n)=>{Mc(e,t+"",n)})(Lc,"propTypes",{children:r().oneOfType([r().arrayOf(r().node),r().node,r().element,r().string]),input:r().instanceOf(Object)});var Bc=Object.defineProperty,Nc=Object.defineProperties,Ic=Object.getOwnPropertyDescriptors,Pc=Object.getOwnPropertySymbols,Dc=Object.prototype.hasOwnProperty,Fc=Object.prototype.propertyIsEnumerable,Wc=(e,t,n)=>t in e?Bc(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Hc=(e,t)=>{for(var n in t||(t={}))Dc.call(t,n)&&Wc(e,n,t[n]);if(Pc)for(var n of Pc(t))Fc.call(t,n)&&Wc(e,n,t[n]);return e};const jc=e=>{const n=e,{input:i}=n,o=((e,t)=>{var n={};for(var i in e)Dc.call(e,i)&&t.indexOf(i)<0&&(n[i]=e[i]);if(null!=e&&Pc)for(var i of Pc(e))t.indexOf(i)<0&&Fc.call(e,i)&&(n[i]=e[i]);return n})(n,["input"]);return t().createElement(Fn,(r=Hc(Hc({},i),o),s={onChange:i.onChange,value:i.value?i.value:0},Nc(r,Ic(s))));var r,s};jc.propTypes={input:r().instanceOf(Object)};const zc=jc;var Uc=Object.defineProperty,Vc=Object.defineProperties,Gc=Object.getOwnPropertyDescriptors,Kc=Object.getOwnPropertySymbols,qc=Object.prototype.hasOwnProperty,Yc=Object.prototype.propertyIsEnumerable,Jc=(e,t,n)=>t in e?Uc(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;const Qc=e=>{const{input:n,meta:i,validationmessages:o}=e;return t().createElement(Wo,(r=((e,t)=>{for(var n in t||(t={}))qc.call(t,n)&&Jc(e,n,t[n]);if(Kc)for(var n of Kc(t))Yc.call(t,n)&&Jc(e,n,t[n]);return e})({},e),s={onChange:e=>{const{onChange:t}=n;t((0,X.fromJS)(e))},value:n.value?n.value.toJS():n.value,error:(()=>{const{touched:e,error:t,warning:n}=i;let r=null;return e&&t&&o[t]?r=o[t]:e&&n&&(r="warning"),r})()},Vc(r,Gc(s))));var r,s};Qc.propTypes={meta:r().instanceOf(Object),input:r().instanceOf(Object),validationmessages:r().instanceOf(Object)};const Xc=Qc;var Zc=Object.defineProperty,eu=Object.defineProperties,tu=Object.getOwnPropertyDescriptors,nu=Object.getOwnPropertySymbols,iu=Object.prototype.hasOwnProperty,ou=Object.prototype.propertyIsEnumerable,ru=(e,t,n)=>t in e?Zc(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;const su=e=>{const n=e,{input:i,meta:o,validationmessages:r}=n,s=((e,t)=>{var n={};for(var i in e)iu.call(e,i)&&t.indexOf(i)<0&&(n[i]=e[i]);if(null!=e&&nu)for(var i of nu(e))t.indexOf(i)<0&&ou.call(e,i)&&(n[i]=e[i]);return n})(n,["input","meta","validationmessages"]);return t().createElement(hr,(a=((e,t)=>{for(var n in t||(t={}))iu.call(t,n)&&ru(e,n,t[n]);if(nu)for(var n of nu(t))ou.call(t,n)&&ru(e,n,t[n]);return e})({},s),l={onChange:e=>{const{onChange:t}=i;t((0,X.fromJS)(e))},value:i.value?i.value.toJS():i.value,error:(()=>{const{touched:e,error:t}=o;let n=null;return e&&t&&r[t]&&(n=r[t]),n})()},eu(a,tu(l))));var a,l};su.propTypes={meta:r().instanceOf(Object),input:r().instanceOf(Object),validationmessages:r().instanceOf(Object)};const au=su;var lu=Object.defineProperty,cu=Object.defineProperties,uu=Object.getOwnPropertyDescriptors,hu=Object.getOwnPropertySymbols,du=Object.prototype.hasOwnProperty,pu=Object.prototype.propertyIsEnumerable,gu=(e,t,n)=>t in e?lu(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;class mu extends e.Component{constructor(e){super(e),this.handleOnChange=this.handleOnChange.bind(this)}getEditableListError(){const{meta:e,validationmessages:t}=this.props,{touched:n,error:i}=e;let o=null;return n&&i&&t[i]&&(o=t[i]),o}handleOnChange(e){const{input:t}=this.props,{onChange:n}=t;n((0,X.fromJS)(e))}render(){const e=((e,t)=>{var n={};for(var i in e)du.call(e,i)&&t.indexOf(i)<0&&(n[i]=e[i]);if(null!=e&&hu)for(var i of hu(e))t.indexOf(i)<0&&pu.call(e,i)&&(n[i]=e[i]);return n})(this.props,[]);return t().createElement(bs,(n=((e,t)=>{for(var n in t||(t={}))du.call(t,n)&&gu(e,n,t[n]);if(hu)for(var n of hu(t))pu.call(t,n)&&gu(e,n,t[n]);return e})({},e),i={onChange:this.handleOnChange,value:e.input.value?e.input.value.toJS():null,error:this.getEditableListError()},cu(n,uu(i))));var n,i}}((e,t,n)=>{gu(e,t+"",n)})(mu,"propTypes",{input:r().instanceOf(Object),meta:r().instanceOf(Object),validationmessages:r().instanceOf(Object)});var fu=Object.defineProperty,yu=Object.defineProperties,bu=Object.getOwnPropertyDescriptors,vu=Object.getOwnPropertySymbols,wu=Object.prototype.hasOwnProperty,Au=Object.prototype.propertyIsEnumerable,Cu=(e,t,n)=>t in e?fu(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,ku=(e,t)=>{for(var n in t||(t={}))wu.call(t,n)&&Cu(e,n,t[n]);if(vu)for(var n of vu(t))Au.call(t,n)&&Cu(e,n,t[n]);return e};class xu extends e.Component{getInputError(){const{meta:e,validationmessages:t}=this.props,{touched:n,error:i,warning:o}=e;let r=null;return n&&i&&t[i]?r=t[i]:n&&o&&(r="warning"),r}render(){const e=this.props,{input:n}=e,i=((e,t)=>{var n={};for(var i in e)wu.call(e,i)&&t.indexOf(i)<0&&(n[i]=e[i]);if(null!=e&&vu)for(var i of vu(e))t.indexOf(i)<0&&Au.call(e,i)&&(n[i]=e[i]);return n})(e,["input"]);return t().createElement(Ys,(o=ku(ku({},n),i),r={error:this.getInputError()},yu(o,bu(r))));var o,r}}((e,t,n)=>{Cu(e,t+"",n)})(xu,"propTypes",{input:r().instanceOf(Object),meta:r().instanceOf(Object),validationmessages:r().instanceOf(Object)});var Su=Object.defineProperty,$u=Object.defineProperties,Eu=Object.getOwnPropertyDescriptors,Ou=Object.getOwnPropertySymbols,Tu=Object.prototype.hasOwnProperty,_u=Object.prototype.propertyIsEnumerable,Ru=(e,t,n)=>t in e?Su(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Mu=(e,t)=>{for(var n in t||(t={}))Tu.call(t,n)&&Ru(e,n,t[n]);if(Ou)for(var n of Ou(t))_u.call(t,n)&&Ru(e,n,t[n]);return e};class Lu extends e.Component{getInputError(){const{meta:e,validationmessages:t}=this.props,{touched:n,error:i,warning:o}=e;let r=null;return n&&i&&t[i]?r=t[i]:n&&o&&(r="warning"),r}render(){const e=this.props,{input:n}=e,i=((e,t)=>{var n={};for(var i in e)Tu.call(e,i)&&t.indexOf(i)<0&&(n[i]=e[i]);if(null!=e&&Ou)for(var i of Ou(e))t.indexOf(i)<0&&_u.call(e,i)&&(n[i]=e[i]);return n})(e,["input"]);return t().createElement(oa,(o=Mu(Mu({},n),i),r={isfield:!0,error:this.getInputError()},$u(o,Eu(r))));var o,r}}((e,t,n)=>{Ru(e,t+"",n)})(Lu,"propTypes",{meta:r().instanceOf(Object),input:r().instanceOf(Object),validationmessages:r().instanceOf(Object)});var Bu=Object.defineProperty,Nu=Object.defineProperties,Iu=Object.getOwnPropertyDescriptors,Pu=Object.getOwnPropertySymbols,Du=Object.prototype.hasOwnProperty,Fu=Object.prototype.propertyIsEnumerable,Wu=(e,t,n)=>t in e?Bu(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;class Hu extends e.Component{constructor(e){super(e),this.handleOnChange=this.handleOnChange.bind(this)}getMultiselectError(){const{meta:e,validationmessages:t}=this.props,{touched:n,error:i,warning:o}=e;let r=null;return n&&i&&t[i]?r=t[i]:n&&o&&(r="warning"),r}handleOnChange(e){const{input:t}=this.props,{onChange:n}=t;n((0,X.fromJS)(e))}render(){const e=((e,t)=>{var n={};for(var i in e)Du.call(e,i)&&t.indexOf(i)<0&&(n[i]=e[i]);if(null!=e&&Pu)for(var i of Pu(e))t.indexOf(i)<0&&Fu.call(e,i)&&(n[i]=e[i]);return n})(this.props,[]);return t().createElement(Ea,(n=((e,t)=>{for(var n in t||(t={}))Du.call(t,n)&&Wu(e,n,t[n]);if(Pu)for(var n of Pu(t))Fu.call(t,n)&&Wu(e,n,t[n]);return e})({},e),i={onChange:this.handleOnChange,value:e.input.value?e.input.value.toJS():e.input.value,error:this.getMultiselectError()},Nu(n,Iu(i))));var n,i}}((e,t,n)=>{Wu(e,t+"",n)})(Hu,"propTypes",{input:r().instanceOf(Object),meta:r().instanceOf(Object),validationmessages:r().instanceOf(Object)});var ju=Object.defineProperty,zu=Object.defineProperties,Uu=Object.getOwnPropertyDescriptors,Vu=Object.getOwnPropertySymbols,Gu=Object.prototype.hasOwnProperty,Ku=Object.prototype.propertyIsEnumerable,qu=(e,t,n)=>t in e?ju(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Yu=(e,t)=>{for(var n in t||(t={}))Gu.call(t,n)&&qu(e,n,t[n]);if(Vu)for(var n of Vu(t))Ku.call(t,n)&&qu(e,n,t[n]);return e};class Ju extends e.Component{constructor(e){super(e),this.handleEvent=this.handleEvent.bind(this)}getSelectError(){const{meta:e,validationmessages:t}=this.props,{touched:n,error:i,warning:o}=e;let r=null;return n&&i&&t[i]?r=t[i]:n&&o&&(r="warning"),r}handleEvent(e){const{input:t}=this.props,{onChange:n,value:i}=t;n((0,X.fromJS)(void 0!==e?e:i))}render(){const e=this.props,{input:n}=e,i=((e,t)=>{var n={};for(var i in e)Gu.call(e,i)&&t.indexOf(i)<0&&(n[i]=e[i]);if(null!=e&&Vu)for(var i of Vu(e))t.indexOf(i)<0&&Ku.call(e,i)&&(n[i]=e[i]);return n})(e,["input"]);return t().createElement(Ua,(o=Yu(Yu({},n),i),r={isfield:!0,error:this.getSelectError(),onChange:this.handleEvent,onBlur:this.handleEvent,value:n.value?n.value.toJS():n.value},zu(o,Uu(r))));var o,r}}((e,t,n)=>{qu(e,t+"",n)})(Ju,"propTypes",{input:r().instanceOf(Object),meta:r().instanceOf(Object),validationmessages:r().instanceOf(Object)});var Qu=Object.defineProperty,Xu=Object.defineProperties,Zu=Object.getOwnPropertyDescriptors,eh=Object.getOwnPropertySymbols,th=Object.prototype.hasOwnProperty,nh=Object.prototype.propertyIsEnumerable,ih=(e,t,n)=>t in e?Qu(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;class oh extends e.Component{constructor(e){super(e),this.handleOnChange=this.handleOnChange.bind(this)}handleOnChange(e){const{input:t}=this.props;t.onChange((0,X.fromJS)(e))}render(){const e=this.props,{children:n}=e,i=((e,t)=>{var n={};for(var i in e)th.call(e,i)&&t.indexOf(i)<0&&(n[i]=e[i]);if(null!=e&&eh)for(var i of eh(e))t.indexOf(i)<0&&nh.call(e,i)&&(n[i]=e[i]);return n})(e,["children"]);return t().createElement(Za,(o=((e,t)=>{for(var n in t||(t={}))th.call(t,n)&&ih(e,n,t[n]);if(eh)for(var n of eh(t))nh.call(t,n)&&ih(e,n,t[n]);return e})({},i),r={onChange:this.handleOnChange,value:i.input.value?i.input.value.toJS():[]},Xu(o,Zu(r))));var o,r}}((e,t,n)=>{ih(e,t+"",n)})(oh,"propTypes",{children:r().oneOfType([r().node]),onChange:r().func,input:r().instanceOf(Object)});var rh=Object.defineProperty,sh=Object.defineProperties,ah=Object.getOwnPropertyDescriptors,lh=Object.getOwnPropertySymbols,ch=Object.prototype.hasOwnProperty,uh=Object.prototype.propertyIsEnumerable,hh=(e,t,n)=>t in e?rh(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;class dh extends e.Component{constructor(e){super(e),this.handleOnChange=this.handleOnChange.bind(this)}handleOnChange(e){const{input:t}=this.props;t.onChange((0,X.fromJS)(e))}render(){const e=this.props,{children:n}=e,i=((e,t)=>{var n={};for(var i in e)ch.call(e,i)&&t.indexOf(i)<0&&(n[i]=e[i]);if(null!=e&&lh)for(var i of lh(e))t.indexOf(i)<0&&uh.call(e,i)&&(n[i]=e[i]);return n})(e,["children"]);return t().createElement(Al,(o=((e,t)=>{for(var n in t||(t={}))ch.call(t,n)&&hh(e,n,t[n]);if(lh)for(var n of lh(t))uh.call(t,n)&&hh(e,n,t[n]);return e})({},i),r={onChange:this.handleOnChange,value:i.input.value},sh(o,ah(r))),n);var o,r}}((e,t,n)=>{hh(e,t+"",n)})(dh,"propTypes",{children:r().oneOfType([r().node]),onChange:r().func,input:r().instanceOf(Object)})})(),module.exports=i})(); //# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/lib/index.js.LICENSE.txt b/lib/index.js.LICENSE.txt new file mode 100644 index 00000000..01d56f9f --- /dev/null +++ b/lib/index.js.LICENSE.txt @@ -0,0 +1,38 @@ +/* + * based on code from: + * + * @license RequireJS text 0.25.0 Copyright (c) 2010-2011, The Dojo Foundation All Rights Reserved. + * Available via the MIT or new BSD license. + * see: http://github.com/jrburke/requirejs for details + */ + +/*! @license +========================================================================== +SproutCore -- JavaScript Application Framework +copyright 2006-2009, Sprout Systems Inc., Apple Inc. and contributors. + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the "Software"), +to deal in the Software without restriction, including without limitation +the rights to use, copy, modify, merge, publish, distribute, sublicense, +and/or sell copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. + +SproutCore and the SproutCore logo are trademarks of Sprout Systems, Inc. + +For more information about SproutCore, visit http://www.sproutcore.com + + +========================================================================== +@license */ diff --git a/lib/index.js.map b/lib/index.js.map index a8363772..15f0c334 100644 --- a/lib/index.js.map +++ b/lib/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","mappings":";;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA,2BAA2B,cAAc;AACzC,8DAA8D;;;AAG9D;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA,2CAA2C,OAAO;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,CAAC;;AAED,iGAAiG;AACjG;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,0BAA0B;AACtD;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,SAAS;AACjC;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,wBAAwB,SAAS;AACjC;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA,CAAC;;AAED,0HAA0H;AAC1H;AACA;;AAEA,CAAC;;AAED,kGAAkG;AAClG;AACA;AACA;AACA;AACA;AACA,0BAA0B,kBAAkB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,iHAAiH;AACjH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,OAAO;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,gBAAgB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,mBAAmB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC;AAClC;AACA;AACA,0CAA0C,uBAAuB,uBAAuB,uBAAuB;AAC/G;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,kGAAkG;AAClG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iEAAiE;AACjE,2DAA2D,qCAAqC;AAChG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,gHAAgH;AAChH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,gBAAgB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,gBAAgB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,8BAA8B;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,0GAA0G;AAC1G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,4FAA4F;AAC5F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,sGAAsG;AACtG;AACA,oCAAoC;AACpC,mCAAmC;AACnC;AACA;AACA,wDAAwD;AACxD,4DAA4D;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,sBAAsB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C;AAC9C;AACA;AACA;AACA,oBAAoB,sBAAsB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,6CAA6C;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,qGAAqG;AACrG;AACA;AACA;AACA;AACA,6BAA6B,UAAU;AACvC;;AAEA,CAAC;;AAED,gKAAgK;AAChK;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iFAAiF;AACjF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;;AAEA,CAAC;;AAED,uGAAuG,uCAAuC,wBAAwB,gBAAgB,GAAG,+BAA+B,eAAe,wBAAwB,GAAG,uBAAuB,gCAAgC,GAAG,aAAa,8BAA8B,iBAAiB,GAAG,yBAAyB,iBAAiB,GAAG,oCAAoC,8BAA8B,GAAG,iDAAiD,gBAAgB,GAAG,2BAA2B,2BAA2B,GAAG,uCAAuC,4BAA4B,GAAG,wCAAwC,4BAA4B,GAAG,uCAAuC,2BAA2B,GAAG,0BAA0B,2CAA2C,eAAe,GAAG,uCAAuC,4BAA4B,GAAG,uCAAuC,2BAA2B,GAAG,oEAAoE,8BAA8B,GAAG,uCAAuC,8BAA8B,GAAG,yBAAyB,0BAA0B,GAAG,0BAA0B,6BAA6B,GAAG,kCAAkC,4BAA4B,GAAG,0CAA0C,8BAA8B,GAAG,uCAAuC,0BAA0B,GAAG,2BAA2B,6BAA6B,GAAG,yBAAyB,6BAA6B,GAAG,+CAA+C,mBAAmB,GAAG,4BAA4B,2BAA2B,GAAG,uBAAuB,2BAA2B,GAAG,+BAA+B,0BAA0B,GAAG,mCAAmC,4BAA4B,8CAA8C,mCAAmC,GAAG,oDAAoD,kCAAkC,GAAG,uCAAuC,iCAAiC,GAAG,0CAA0C,mCAAmC,GAAG,4CAA4C,0BAA0B,yCAAyC,GAAG,gDAAgD,oCAAoC,GAAG,qCAAqC,iCAAiC,GAAG,kDAAkD,mCAAmC,yCAAyC,GAAG,+BAA+B,qCAAqC,kIAAkI,GAAG,sCAAsC,qCAAqC,8NAA8N,GAAG;;AAE9nG,CAAC;;AAED,0IAA0I;AAC1I;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,gLAAgL;AAChL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,kCAAkC;AACjF;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,CAAC;;AAED;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;;AAEA,QAAQ,IAA4B;AACpC,qBAAqB,wBAAM;AAC3B;AACA,WAAW;;AAEX;AACA;AACA;AACA,gGAAgG,wBAAM;;AAEtG;AACA;AACA,8EAA8E;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,kBAAkB;AACpC;;AAEA;AACA;AACA;;AAEA;AACA,2CAA2C,OAAO;AAClD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,kDAAkD,0BAA0B;AAC5E;AACA,CAAC;;AAED,0FAA0F;AAC1F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA,wBAAwB;AACxB;AACA,0BAA0B;AAC1B;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,2GAA2G;AAC3G;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,sDAAsD;AACtD;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,IAAI;AACnD;AACA;AACA,aAAa;AACb;AACA,KAAK;AACL;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,iIAAiI;AACjI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2EAA2E;AAC3E;AACA,0CAA0C;AAC1C;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,eAAe;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,8FAA8F;AAC9F;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA,CAAC;;AAED,oNAAoN;AACpN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,iBAAiB;AAC3C;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,gCAAgC,qBAAqB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,qBAAqB;AAC1C;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,wBAAwB,uDAAuD;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,aAAa;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C;AAC3C,yCAAyC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,2BAA2B;AACrE;AACA;AACA;AACA;AACA;AACA,6DAA6D;AAC7D,6CAA6C;AAC7C,oHAAoH;AACpH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,+HAA+H;AAC/H;AACA,qBAAqB;AACrB,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;;AAEA,CAAC;;AAED,sIAAsI;AACtI;AACA;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,iCAAiC;AAC5E;AACA;AACA,iEAAiE,UAAU;AAC3E;AACA;AACA;AACA,oIAAoI,yBAAyB;AAC7J;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,QAAQ;AACxC;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,QAAQ;AAChC;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;AAEA,CAAC;;AAED,0KAA0K;AAC1K;AACA;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,+CAA+C;AACxE,2BAA2B,mDAAmD;AAC9E,wBAAwB;AACxB;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA,2BAA2B;AAC3B;AACA;AACA,sCAAsC;AACtC;AACA,kCAAkC,mBAAmB;AACrD;AACA;AACA,gCAAgC,wCAAwC;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC;AACnC;AACA,wBAAwB,4BAA4B;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oHAAoH,2BAA2B;AAC/I;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,QAAQ;AAChC;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA,CAAC;AACD;;AAEA,CAAC;;AAED,0IAA0I;AAC1I;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;AAEA,CAAC;;AAED,6JAA6J;AAC7J;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,kBAAkB,mBAAmB;AAC/E;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;;AAEA,CAAC;;AAED,8JAA8J;AAC9J;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,iDAAiD;AACzF,uCAAuC,4CAA4C;AACnF,uCAAuC,2CAA2C;AAClF,wCAAwC,6CAA6C;AACrF,sCAAsC,4CAA4C;AAClF,2BAA2B,4CAA4C;AACvE,2BAA2B,0DAA0D;AACrF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,aAAa;AACb;AACA,uBAAuB,4CAA4C;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA,CAAC;;AAED,wSAAwS;AACxS;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,mBAAmB;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,WAAW,iBAAiB;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA,mBAAmB,iBAAiB;AACpC,iBAAiB,2CAA2C;AAC5D,mBAAmB,oBAAoB;AACvC,oBAAoB,iBAAiB;AACrC,2BAA2B;AAC3B,CAAC;AACD;;AAEA,CAAC;;AAED,qHAAqH;AACrH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D,iCAAiC;AAChG;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,CAAC;AACD;;AAEA,CAAC;;AAED,uIAAuI;AACvI;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,4CAA4C,IAAI;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;AAEA,CAAC;;AAED,iGAAiG;AACjG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,SAAS;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,UAAU;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,QAAQ;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,QAAQ;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,SAAS;AAC7B;AACA;AACA,oCAAoC,QAAQ;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,SAAS;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,8BAA8B;AAClD;AACA;AACA;AACA,oBAAoB,kCAAkC,OAAO;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,8BAA8B;AAClD;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,oBAAoB,iBAAiB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,qCAAqC;AACzD;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,kIAAkI;AAClI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kEAAkE,mBAAmB;AACrF;AACA;AACA;AACA,4CAA4C,qBAAqB;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,eAAe;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,wBAAwB;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,sDAAsD;AACxF;AACA;AACA;AACA;AACA;AACA,8BAA8B,sDAAsD;AACpF;AACA;AACA,4BAA4B,uBAAuB;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;AAEA,CAAC;;AAED,+JAA+J;AAC/J;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,IAAI;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,IAAI;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,qHAAqH;AACrH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD;AACtD;AACA;AACA,4BAA4B,kBAAkB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,yBAAyB;AAC/C;AACA,0CAA0C,OAAO;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,OAAO;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yFAAyF,uBAAuB;AAChH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;AACA,4BAA4B,sBAAsB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B,oCAAoC,iBAAiB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;;AAEA,CAAC;;AAED,kIAAkI;AAClI;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,kBAAkB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,mBAAmB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,mBAAmB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,kBAAkB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kEAAkE,kBAAkB;AACpF;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D,iBAAiB;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,IAAI;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,iCAAiC;AACjC,iCAAiC;AACjC;AACA;AACA;AACA;AACA,CAAC;AACD;;AAEA,CAAC;;AAED,mGAAmG;AACnG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,mBAAmB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;AAEA,CAAC;;AAED,+GAA+G;AAC/G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;AAEA,CAAC;;AAED,iLAAiL;AACjL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA,kDAAkD;AAClD,yDAAyD,KAAK;AAC9D;AACA;AACA,0BAA0B;AAC1B,wEAAwE;AACxE;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA,yEAAyE;AACzE;AACA,gCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA,+BAA+B;AAC/B,6DAA6D,KAAK,4CAA4C;AAC9G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C;AAC9C;AACA;AACA;AACA,gCAAgC;AAChC,iEAAiE,4CAA4C,IAAI;AACjH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,kDAAkD;AAClD;AACA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kEAAkE,4CAA4C;AAC9G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kEAAkE,4CAA4C;AAC9G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC,2CAA2C,GAAG;AAC9C,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,4FAA4F;AAC5F;AACA;AACA;AACA,gBAAgB,sBAAsB;AACtC;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,qPAAqP;AACrP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,6BAA6B;AACpE,uCAAuC,2BAA2B;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,mBAAmB;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,2BAA2B;AACtE;AACA,2CAA2C,2BAA2B;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,aAAa;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,wBAAwB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,yBAAyB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,OAAO;AAC3D;AACA;AACA;AACA;AACA;AACA,2EAA2E,aAAa;AACxF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,CAAC;AACD;;AAEA,CAAC;;AAED,gGAAgG;AAChG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,iIAAiI;AACjI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,oCAAoC;AACtF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2DAA2D;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,8KAA8K;AAC9K;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,mBAAmB;AACxD;AACA;AACA,0BAA0B,mBAAmB;AAC7C;AACA;AACA;AACA;AACA;AACA,sBAAsB,mBAAmB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,0BAA0B;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,wBAAwB;AACnE,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,wBAAwB;AACnE,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,mBAAmB;AAC3C;AACA;AACA;AACA;AACA,wCAAwC,QAAQ;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,UAAU;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,sDAAsD,OAAO;AAC7D;AACA;AACA,yBAAyB;AACzB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,SAAS;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;;AAEA,CAAC;;AAED,+IAA+I;AAC/I;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,YAAY;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;;AAEA,CAAC;;AAED,gIAAgI;AAChI;AACA;AACA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,UAAU;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,wCAAwC,IAAI;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;;AAEA,CAAC;;AAED,4GAA4G;AAC5G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,IAAI;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,IAAI;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,IAAI;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,sBAAsB,IAAI;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,IAAI;AACjC,wBAAwB,gBAAgB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,IAAI;AACvC;AACA,wBAAwB,qBAAqB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,sBAAsB;AAC1C;AACA,wBAAwB,mBAAmB;AAC3C;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,uHAAuH;AACvH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,kBAAkB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,uBAAuB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,kBAAkB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,kBAAkB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,wBAAwB,uBAAuB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;AAEA,CAAC;;AAED,2GAA2G;AAC3G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,iBAAiB;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,IAAI;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,wBAAwB,iBAAiB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,0BAA0B;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,0BAA0B;AACrE;AACA;AACA,yCAAyC,wBAAwB;AACjE;AACA;AACA;AACA,iCAAiC,cAAc;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,OAAO;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,OAAO;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,OAAO;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,OAAO;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;;AAEA,CAAC;;AAED,uHAAuH;AACvH;AACA;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,0BAA0B;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,0BAA0B;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,UAAU;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,uNAAuN;AACvN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,kBAAkB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,sBAAsB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,kBAAkB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,sBAAsB;AAC9C,4BAA4B,+BAA+B;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA,wBAAwB,2BAA2B;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,qBAAqB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,qBAAqB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,qBAAqB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,wBAAwB,qBAAqB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,2BAA2B;AAChE;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,8BAA8B;AACnE;AACA;AACA;AACA,wBAAwB,kBAAkB;AAC1C;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D,4CAA4C;AACzG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;AACA,oBAAoB;AACpB;AACA;AACA,iCAAiC,cAAc;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,mBAAmB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,gJAAgJ;AAChJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,WAAW;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,WAAW;AACzD;AACA;AACA,oBAAoB;AACpB,8CAA8C,WAAW;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,WAAW;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,KAAK;AACf,UAAU,KAAK;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sLAAsL;AACtL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C;AAC7C;AACA,qMAAqM;AACrM;AACA;AACA;AACA;AACA,uMAAuM;AACvM;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uEAAuE;AACvE;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mFAAmF;AACnF;AACA;AACA;AACA;AACA;AACA,2KAA2K;AAC3K;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C;AAC7C;AACA,oMAAoM;AACpM;AACA;AACA,kCAAkC;AAClC,kMAAkM;AAClM;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,eAAe;AACnD;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,gXAAgX;AAChX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,mBAAmB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C;AAC3C;AACA;AACA;AACA,2CAA2C;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,iBAAiB;AACzC;AACA;AACA,2CAA2C;AAC3C;AACA;AACA;AACA,2CAA2C;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C;AAC3C;AACA;AACA;AACA,2CAA2C;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gEAAgE;AAChE,uDAAuD;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,8BAA8B;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,SAAS;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,SAAS;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,mBAAmB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,mBAAmB;AAC3C;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,iCAAiC,eAAe;AAChD,oCAAoC,qBAAqB;AACzD;AACA;AACA;AACA;AACA;AACA,yCAAyC,uBAAuB;AAChE;AACA;AACA;AACA,4BAA4B,UAAU;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,wBAAwB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,wBAAwB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,uBAAuB;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,mBAAmB;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,eAAe;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,wBAAwB;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,uBAAuB;AACnD;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,gBAAgB;AACxC;AACA;AACA;AACA;AACA,gCAAgC,aAAa;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,qBAAqB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,qBAAqB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,qBAAqB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,yBAAyB;AACzB,yBAAyB;AACzB,4BAA4B;AAC5B,4BAA4B;AAC5B,0BAA0B;AAC1B,wBAAwB;AACxB,iCAAiC;AACjC,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA,2BAA2B,mCAAmC;AAC9D;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL,mBAAmB,oBAAoB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL,8BAA8B,qBAAqB;AACnD;AACA,8BAA8B,yBAAyB;AACvD;AACA,KAAK;AACL;AACA,8BAA8B,kCAAkC;AAChE;AACA,KAAK;AACL;AACA,8BAA8B,+BAA+B;AAC7D,2BAA2B,mCAAmC;AAC9D;AACA,KAAK;AACL;AACA,8BAA8B,oBAAoB;AAClD,2BAA2B,sBAAsB;AACjD;AACA;AACA,CAAC;AACD;;AAEA,CAAC;;AAED,oIAAoI;AACpI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,eAAe;AACjE,gCAAgC,SAAS;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,kBAAkB;AAC9C;AACA,gCAAgC,oBAAoB;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,OAAO;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D,IAAI;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,6EAA6E,EAAE;AACjI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,kBAAkB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,iBAAiB;AAC7C;AACA;AACA;AACA;AACA,0DAA0D,iBAAiB;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,gBAAgB;AACpD;AACA;AACA;AACA;AACA,0DAA0D,gBAAgB;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,SAAS;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,QAAQ;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,CAAC;AACD;AACA;AACA;AACA,oCAAoC;AACpC,+FAA+F,EAAE,IAAI,EAAE;AACvG;AACA;AACA;AACA,wCAAwC,EAAE,IAAI,EAAE;AAChD,iCAAiC,EAAE,IAAI,EAAE;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,6IAA6I;AAC7I;AACA;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,wDAAwD;AAC7F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,qBAAqB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,sFAAsF,WAAW;AACjG;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,qBAAqB;AACrB;AACA,mCAAmC,IAAI;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA,2EAA2E;AAC3E;AACA,qCAAqC;AACrC;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,+KAA+K;AAC/K;AACA;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD;AAClD;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,yCAAyC,IAAI;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,CAAC;AACD;AACA;;AAEA,CAAC;;AAED,sJAAsJ;AACtJ;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,qBAAqB;AACvD;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,2BAA2B;AAC7D;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,mBAAmB;AAC/C,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA,kCAAkC,mCAAmC;AACrE;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,kCAAkC,kCAAkC;AACpE;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,oCAAoC;AACtE;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,wCAAwC;AAC1E;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,2BAA2B;AAC7D;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,mCAAmC;AACrE;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,0BAA0B;AAC5D;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,oBAAoB;AACtD;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,wBAAwB;AAC1D;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,kEAAkE,mBAAmB;AACrF,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,2BAA2B;AAC7D;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,0CAA0C;AAC5E;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,6BAA6B;AAC/D;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,mCAAmC;AACrE;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,wCAAwC,gCAAgC;AACxE;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,wCAAwC;AAC1E;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,2BAA2B;AAC7D;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,qCAAqC;AACvE;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,wCAAwC,kCAAkC;AAC1E;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,yCAAyC;AAC3E;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,4BAA4B;AAC9D;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,0CAA0C;AAC5E;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,6BAA6B;AAC/D;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,qCAAqC;AACvE;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,wCAAwC,kCAAkC;AAC1E;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,0CAA0C;AAC5E;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,6BAA6B;AAC/D;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,wCAAwC;AAC1E;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,2BAA2B;AAC7D;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,sCAAsC;AACxE;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,wCAAwC,mCAAmC;AAC3E;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,0BAA0B;AAC5D;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,0BAA0B;AAC5D;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,wBAAwB;AAC1D;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,wBAAwB;AAC1D;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,wBAAwB;AAC1D;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,sBAAsB;AACxD;AACA,KAAK;AACL;AACA;AACA;AACA,6BAA6B,iEAAiE;AAC9F;AACA,KAAK;AACL;AACA;AACA;AACA,6BAA6B,gEAAgE;AAC7F;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,0CAA0C;AAC5E;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,wCAAwC;AAC1E;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,0CAA0C;AAC5E;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,iCAAiC;AACnE;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,0BAA0B;AAC5D;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,8BAA8B;AAChE;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,oCAAoC;AACtE;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,uBAAuB;AACzD;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,8BAA8B;AAChE;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,qBAAqB;AACvD;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,8BAA8B;AAChE;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,8BAA8B;AAChE;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,yBAAyB;AAC3D;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,0BAA0B;AAC5D;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,kEAAkE,yBAAyB;AAC3F;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC;AAClC,KAAK;AACL;AACA;AACA;AACA,kCAAkC;AAClC,KAAK;AACL;AACA;AACA;AACA,kCAAkC,uBAAuB;AACzD;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,uBAAuB;AACzD;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,yBAAyB;AAC3D;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,yBAAyB;AAC3D;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,yBAAyB;AAC3D;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,wBAAwB;AAC1D;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,6BAA6B;AAC/D;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,2BAA2B;AAC7D;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,0BAA0B;AAC5D;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,2BAA2B;AAC7D;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,wBAAwB;AAC1D;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,kBAAkB;AACpD;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,wBAAwB;AAC1D;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,uBAAuB;AACzD;AACA;AACA,KAAK;AACL;AACA;AACA,uCAAuC,qBAAqB;AAC5D;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,qBAAqB;AACvD;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,4BAA4B;AAC9D,+CAA+C,gCAAgC;AAC/E;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,uBAAuB;AACzD;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,uBAAuB;AACzD;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,sBAAsB;AACxD;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,kCAAkC;AAClC,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,2BAA2B;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,mBAAmB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,sBAAsB;AAClD;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,4BAA4B,mBAAmB;AAC/C,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,4BAA4B,mBAAmB;AAC/C,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,4BAA4B,gBAAgB;AAC5C,SAAS;AACT;AACA,KAAK;AACL,gBAAgB,OAAO;AACvB;AACA;AACA;AACA;AACA,kCAAkC,yCAAyC;AAC3E;AACA;AACA,KAAK;AACL;;AAEA,CAAC;;AAED,+GAA+G;AAC/G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,SAAS;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,QAAQ,SAAS,gBAAgB;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,QAAQ,SAAS,gBAAgB;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,2BAA2B;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,QAAQ,SAAS,cAAc;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,WAAW;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D,mBAAmB;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;AAEA,CAAC;;AAED,8JAA8J;AAC9J;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,4BAA4B;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;AAEA,CAAC;;AAED,kgBAAkgB;AAClgB;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA,qEAAqE;AACrE;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,2DAA2D,iBAAiB;AAC5E,qDAAqD,cAAc;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,mBAAmB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,yCAAyC;AAC1E;AACA;AACA;AACA;AACA;AACA,iCAAiC,iCAAiC;AAClE,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,IAAI;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD;AACnD;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,gCAAgC;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,eAAe;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,qBAAqB;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,WAAW,wBAAwB;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,gBAAgB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,iCAAiC,gBAAgB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,wBAAwB,sBAAsB;AAC9C;AACA,4BAA4B,QAAQ;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4FAA4F,qBAAqB;AACjH;AACA;AACA;AACA;AACA,wDAAwD;AACxD;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,QAAQ;AAChC;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,OAAO;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,KAAK;AACnB,cAAc,KAAK;AACnB;AACA;AACA,sCAAsC;AACtC,uBAAuB,kCAAkC;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,0CAA0C;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,QAAQ;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,gBAAgB;AAC/C;AACA;AACA;AACA,+BAA+B,cAAc;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,qCAAqC;AACzD;AACA;AACA,6BAA6B,oCAAoC;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,aAAa;AAChE,SAAS;AACT;AACA,KAAK;AACL;AACA,2BAA2B,oCAAoC;AAC/D;AACA,KAAK;AACL;AACA,0CAA0C,4BAA4B;AACtE;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA,8BAA8B,2BAA2B;AACzD;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL,yBAAyB,oBAAoB;AAC7C,6BAA6B,oBAAoB;AACjD,wBAAwB,oBAAoB;AAC5C;AACA,8BAA8B;AAC9B,KAAK;AACL;AACA,8BAA8B,+BAA+B;AAC7D,2BAA2B,4BAA4B;AACvD;AACA,KAAK;AACL;AACA,8BAA8B,6BAA6B;AAC3D,2BAA2B,yBAAyB;AACpD;AACA;AACA,KAAK;AACL;AACA,8BAA8B,uBAAuB;AACrD,2BAA2B,sBAAsB;AACjD;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,8GAA8G;AAC9G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,iBAAiB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,iBAAiB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;AAEA,CAAC;;AAED,mMAAmM;AACnM;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,wBAAwB;AAChD;AACA;AACA;AACA;AACA,qDAAqD;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,kBAAkB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oGAAoG,SAAS;AAC7G;AACA;AACA,oFAAoF,SAAS;AAC7F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,mBAAmB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,WAAW;AAC/C,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,2HAA2H;AAC3H;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,YAAY;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4EAA4E,aAAa,uBAAuB,oBAAoB;AACpI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mEAAmE;AACnE,uCAAuC;AACvC,mCAAmC;AACnC,wCAAwC;AACxC;AACA;AACA;AACA;AACA;AACA;AACA,gGAAgG;AAChG,qBAAqB;AACrB,+BAA+B;AAC/B,oCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD;AACjD,mCAAmC;AACnC,+BAA+B;AAC/B,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA,qDAAqD;AACrD,wEAAwE;AACxE,mCAAmC;AACnC,2DAA2D;AAC3D,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD;AACjD,+BAA+B;AAC/B,oBAAoB,QAAQ;AAC5B;AACA;AACA;AACA;AACA,iDAAiD;AACjD,+BAA+B;AAC/B,oBAAoB,QAAQ;AAC5B;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,oGAAoG;AACpG;AACA;AACA;AACA;;AAEA,CAAC;;AAED,uNAAuN;AACvN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,iBAAiB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,aAAa;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oGAAoG,SAAS;AAC7G;AACA;AACA,kGAAkG,SAAS;AAC3G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,WAAW;AACvC;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,UAAU;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,mBAAmB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,kBAAkB;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,kBAAkB;AAC1C;AACA;AACA;AACA,gCAAgC,uBAAuB;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,kBAAkB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,QAAQ;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,mBAAmB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,mBAAmB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,+GAA+G;AAC/G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,IAAI;AACzC;AACA;AACA;AACA;AACA,qCAAqC,IAAI;AACzC;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,cAAc;AAC1C;AACA,+CAA+C,OAAO;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;;AAEA,CAAC;;AAED,kKAAkK;AAClK;AACA;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,sBAAsB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,uBAAuB;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,gCAAgC;AAChC,iCAAiC;AACjC,iCAAiC;AACjC;AACA;;AAEA,CAAC;;AAED,yKAAyK;AACzK;AACA;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,0EAA0E,uBAAuB,yCAAyC,gCAAgC,2BAA2B,2BAA2B,uBAAuB,eAAe,GAAG,gDAAgD,uBAAuB,eAAe,qBAAqB,+BAA+B,GAAG,yBAAyB,eAAe,aAAa,WAAW,gBAAgB,GAAG,6BAA6B,eAAe,aAAa,gBAAgB,GAAG,yBAAyB,cAAc,YAAY,iBAAiB,GAAG,6BAA6B,cAAc,iBAAiB,GAAG,+BAA+B,eAAe,qBAAqB,GAAG;AACjwB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,iBAAiB;AACxD;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,uCAAuC;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,sBAAsB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,kBAAkB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,0CAA0C;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,uBAAuB;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,gCAAgC;AAChC,iCAAiC;AACjC,iCAAiC;AACjC;AACA;;AAEA,CAAC;;AAED,+GAA+G;AAC/G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;AAEA,CAAC;;AAED,8MAA8M;AAC9M;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,YAAY;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,gBAAgB,iBAAiB;AAChF,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B,6BAA6B;AAC7B,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,yCAAyC;AACzC;AACA;;AAEA,CAAC;;AAED,mGAAmG;AACnG;AACA,gBAAgB,QAAQ;AACxB,kCAAkC;AAClC;AACA;AACA,0DAA0D;AAC1D,KAAK,gCAAgC;AACrC;AACA;AACA;AACA,8BAA8B,iCAAiC,YAAY,iCAAiC,YAAY,iCAAiC,iCAAiC,YAAY,iCAAiC,YAAY,iCAAiC,iCAAiC,YAAY,iCAAiC,iCAAiC,YAAY,iCAAiC,iCAAiC,iCAAiC,YAAY,iCAAiC,YAAY,iCAAiC,iCAAiC,YAAY,iCAAiC,iCAAiC,YAAY,iCAAiC,iCAAiC,iCAAiC,YAAY,iCAAiC,iCAAiC,YA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B,GAAG,4BAA4B,6BAA6B,gBAAgB,GAAG,6BAA6B,6BAA6B,GAAG,sBAAsB,yBAAyB,4BAA4B,6BAA6B,uBAAuB,mBAAmB,qBAAqB,GAAG,qBAAqB,mBAAmB,yBAAyB,uBAAuB,GAAG,4BAA4B,wBAAwB,oBAAoB,eAAe,gBAAgB,iBAAiB,sBAAsB,GAAG;;AAE15sB,CAAC;;AAED,yJAAyJ;AACzJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,4BAA4B,wBAAwB;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,qBAAqB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;;AAEA,CAAC;;AAED,ubAAub;AACvb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,OAAO;AAC3B;AACA;AACA;AACA;AACA,uDAAuD,sBAAsB;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,mBAAmB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,iCAAiC,cAAc,gCAAgC;AACzH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,cAAc;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,eAAe;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,sBAAsB,qBAAqB;AAC3C;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA,2BAA2B,4BAA4B;AACvD;AACA,KAAK;AACL;AACA,2BAA2B,4BAA4B;AACvD;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA,8BAA8B,qBAAqB;AACnD,2BAA2B,qCAAqC;AAChE;AACA;AACA,KAAK;AACL,wBAAwB;AACxB;AACA;AACA;AACA,CAAC;AACD;;AAEA,CAAC;;AAED;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,qEAAqE;AACrE;AACA,mCAAmC,iCAAiC;AACpE,MAAM,YAAY;AAClB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAiB,0BAA0B;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA,wCAAwC,eAAe;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,kCAAkC,yBAAyB;AAC3D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iCAAiC;AACjC,0DAA0D,qBAAqB,iBAAiB;AAChG;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV,iCAAiC,QAAQ;AACzC;;AAEA,CAAC;;;AAGD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL,+CAA+C;;AAE/C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,gCAAgC,UAAU;AAC1C;AACA;AACA,0BAA0B,yCAAyC;AACnE;AACA;AACA,0BAA0B,sCAAsC;AAChE;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;;;AAGA,CAAC;;AAED,kJAAkJ;AAClJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,wGAAwG;AACxG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,wBAAwB,wBAAwB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,QAAQ;AAC7D;AACA,mCAAmC;AACnC;AACA;AACA;AACA;AACA,qDAAqD,QAAQ;AAC7D;AACA,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,IAAI;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,IAAI;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,mBAAmB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;;AAEA,CAAC;;AAED,mJAAmJ;AACnJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,oBAAoB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,wBAAwB;AACxE;AACA;AACA;AACA;;AAEA,CAAC;;AAED,+IAA+I;AAC/I;AACA;AACA;AACA,kCAAkC,6BAA6B;AAC/D,mBAAmB,wCAAwC;AAC3D;AACA;AACA,KAAK;AACL;AACA;AACA,kCAAkC,4BAA4B;AAC9D,mBAAmB,4CAA4C;AAC/D;AACA;AACA,KAAK;AACL;AACA;AACA,kCAAkC,mCAAmC;AACrE,mBAAmB,oDAAoD;AACvE;AACA;AACA,KAAK;AACL;AACA;AACA,kCAAkC,kCAAkC;AACpE,mBAAmB,wDAAwD;AAC3E;AACA;AACA,KAAK;AACL;AACA;AACA,kCAAkC,wBAAwB;AAC1D,mBAAmB,4CAA4C;AAC/D;AACA;AACA,KAAK;AACL;AACA;AACA,kCAAkC,uBAAuB;AACzD,mBAAmB,8CAA8C;AACjE;AACA;AACA,KAAK;AACL;AACA;AACA,kCAAkC,8BAA8B;AAChE,mBAAmB,wDAAwD;AAC3E;AACA;AACA,KAAK;AACL;AACA;AACA,kCAAkC,6BAA6B;AAC/D,mBAAmB,0DAA0D;AAC7E;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,mBAAmB,sCAAsC;AACzD;AACA,KAAK;AACL;AACA;AACA,kCAAkC,sCAAsC;AACxE;AACA,KAAK;AACL;AACA;AACA,kCAAkC,wBAAwB;AAC1D,mBAAmB,sCAAsC;AACzD;AACA,KAAK;AACL;AACA;AACA,kCAAkC,mBAAmB;AACrD,mBAAmB,sCAAsC;AACzD;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,kCAAkC,+BAA+B;AACjE;AACA;AACA,yCAAyC;AACzC,KAAK;AACL;AACA;;AAEA,CAAC;;AAED,6SAA6S;AAC7S;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,cAAc;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,IAAI;AACzC;AACA;AACA;AACA,sCAAsC,iBAAiB;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,mBAAmB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,IAAI;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,eAAe;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,YAAY;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD;AACtD;AACA;AACA,mEAAmE;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD,wBAAwB;AAC/E;AACA;AACA;AACA;AACA,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gEAAgE,wBAAwB;AACxF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,mBAAmB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,IAAI;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,IAAI;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,IAAI;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,oBAAoB;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,CAAC;;AAED,CAAC;;AAED,uHAAuH;AACvH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED,CAAC;;AAED,+JAA+J;AAC/J;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,sBAAsB;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,2BAA2B;AACjF;AACA,kDAAkD,8BAA8B,yBAAyB,4BAA4B,qBAAqB,gCAAgC,mCAAmC,wBAAwB,6BAA6B,gCAAgC,OAAO,6DAA6D,sCAAsC,iEAAiE,sCAAsC,2DAA2D,sCAAsC,uDAAuD,sCAAsC,2BAA2B,6BAA6B,4BAA4B,kDAAkD,oDAAoD,mDAAmD,oBAAoB,OAAO;;AAEz8B,CAAC;;AAED,gYAAgY;AAChY;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC;AACzC,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC,cAAc;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,kFAAkF;AAClF,8EAA8E;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,KAAuD;AAC/E;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;;;;;;;;ACjipBA,sHAAsH;AACtH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wGAAwG;AACxG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,eAAe;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA,iDAAiD;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD;AACjD;AACA;AACA,8DAA8D;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,uCAAuC;AACzF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8EAA8E;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,eAAe;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,YAAY;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD;AAClD,gCAAgC,kBAAkB;AAClD;AACA,qDAAqD;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;;AAEL,CAAC,kBAAkB;AACnB;AACA,4BAA4B,KAAuD;AACnF;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB;;;;;;;;ACzUA,sGAAsG,wPAAwP,6BAA6B,kBAAkB,gCAAgC,yBAAyB,uBAAuB,gBAAgB,6BAA6B,yBAAyB,aAAa,kBAAkB,0BAA0B,GAAG,oBAAoB,0BAA0B,qCAAqC,cAAc,GAAG,qBAAqB,qCAAqC,2BAA2B,eAAe,GAAG,yCAAyC,2BAA2B,uBAAuB,uBAAuB,GAAG,qBAAqB,sBAAsB,GAAG,gCAAgC,6BAA6B,GAAG,uBAAuB,iCAAiC,8BAA8B,mBAAmB,gCAAgC,2BAA2B,iBAAiB,iBAAiB,yBAAyB,gBAAgB,2BAA2B,qBAAqB,sBAAsB,0BAA0B,wBAAwB,8BAA8B,GAAG,kBAAkB,gCAAgC,2BAA2B,4BAA4B,qBAAqB,uBAAuB,2BAA2B,qCAAqC,sBAAsB,gBAAgB,yBAAyB,kBAAkB,GAAG,6BAA6B,iCAAiC,sCAAsC,GAAG,2BAA2B,uBAAuB,sBAAsB,GAAG,wBAAwB,gCAAgC,GAAG,4CAA4C,4BAA4B,wDAAwD,qBAAqB,8BAA8B,oBAAoB,qBAAqB,kCAAkC,4BAA4B,iCAAiC,GAAG,6BAA6B,kCAAkC,GAAG,wBAAwB,qCAAqC,iPAAiP,yBAAyB,qBAAqB,qBAAqB,sBAAsB,4BAA4B,iBAAiB,mBAAmB,kBAAkB,eAAe,iBAAiB,yBAAyB,GAAG,8BAA8B,gCAAgC,oCAAoC,mBAAmB,GAAG,iBAAiB,uBAAuB,sBAAsB,gCAAgC,6BAA6B,2BAA2B,4BAA4B,wBAAwB,uBAAuB,mBAAmB,+CAA+C,mBAAmB,0CAA0C,mBAAmB,GAAG,uBAAuB,6BAA6B,gBAAgB,GAAG,sBAAsB,6BAA6B,GAAG,yBAAyB,4BAA4B,gBAAgB,GAAG,wBAAwB,yBAAyB,wBAAwB,gCAAgC,6BAA6B,2BAA2B,4BAA4B,wBAAwB,kBAAkB,GAAG,yBAAyB,kBAAkB,yBAAyB,qBAAqB,GAAG;;AAEzzH,CAAC;;AAED,+NAA+N;AAC/N;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,2BAA2B;AAC1D,uBAAuB,8CAA8C;AACrE,sBAAsB,0BAA0B;AAChD,4BAA4B,gFAAgF;AAC5G,2BAA2B,iDAAiD;AAC5E,2BAA2B,iDAAiD;AAC5E,2BAA2B,+DAA+D;AAC1F;AACA,sBAAsB,2BAA2B;AACjD,4BAA4B,kFAAkF;AAC9G,2BAA2B,sDAAsD;AACjF,2BAA2B,8CAA8C;AACzE;AACA,sBAAsB,6BAA6B;AACnD,2BAA2B;AAC3B,2CAA2C,gBAAgB,cAAc,GAAG;AAC5E,2BAA2B,6BAA6B;AACxD,2BAA2B,8EAA8E;AACzG,2BAA2B,wFAAwF;AACnH,2BAA2B,kFAAkF;AAC7G,2BAA2B,qFAAqF;AAChH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,6CAA6C,iBAAiB;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,6CAA6C,iBAAiB;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA,iCAAiC,YAAY;AAC7C,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,CAAC;AACD;AACA;AACA,mBAAmB,kDAAkD;AACrE;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,mBAAmB,kDAAkD;AACrE;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,mBAAmB,kDAAkD;AACrE;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC,kBAAkB;AACnB;AACA,4BAA4B,KAAuD;AACnF;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB;;;;;;;;ACtVA,0KAA0K;AAC1K;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,aAAa;AACb;AACA,2BAA2B;AAC3B;AACA,aAAa;AACb;AACA,2BAA2B;AAC3B,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA,2BAA2B;AAC3B;AACA,aAAa;AACb;AACA,2BAA2B;AAC3B;AACA,aAAa;AACb;AACA,yBAAyB;AACzB;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,qBAAqB;AACrB,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA,2BAA2B;AAC3B,aAAa;AACb;AACA,2BAA2B;AAC3B;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA,kCAAkC,EAAE;AACpC,aAAa;AACb;AACA,kCAAkC,EAAE;AACpC,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,qBAAqB;AACrB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,qBAAqB;AACrB;AACA;AACA;AACA,qBAAqB;AACrB;AACA,qBAAqB;AACrB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,qBAAqB;AACrB;AACA;AACA;AACA,qBAAqB;AACrB;AACA,qBAAqB;AACrB,aAAa;AACb;AACA;AACA,sCAAsC,IAAI;AAC1C,aAAa;AACb;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,4HAA4H;AAC5H;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA,uCAAuC;AACvC;AACA;AACA;AACA,qDAAqD,0BAA0B;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;AAEA,CAAC;;AAED,yGAAyG;AACzG;AACA,oBAAoB,UAAU;AAC9B,0BAA0B,wCAAwC;AAClE,0BAA0B,iBAAiB;AAC3C,2BAA2B,yEAAyE;AACpG,6BAA6B,yEAAyE;AACtG,+BAA+B,yBAAyB;AACxD,yBAAyB,0BAA0B;AACnD,yBAAyB,qDAAqD;AAC9E,2BAA2B,qDAAqD;AAChF,gBAAgB,yDAAyD;AACzE,sBAAsB,UAAU;AAChC,sBAAsB,4IAA4I;AAClK,yBAAyB,8BAA8B;AACvD,gBAAgB,0BAA0B;AAC1C,eAAe,6CAA6C;AAC5D,eAAe,8BAA8B;AAC7C,gBAAgB,mNAAmN;AACnO,iBAAiB,wEAAwE;AACzF,qBAAqB,sBAAsB;AAC3C,eAAe,kCAAkC;AACjD,qBAAqB,iNAAiN;AACtO,mBAAmB,0BAA0B;AAC7C,qBAAqB,wBAAwB;AAC7C,oBAAoB,0BAA0B;AAC9C,sBAAsB,8BAA8B;AACpD,gBAAgB,0BAA0B;AAC1C,cAAc,0BAA0B;AACxC,wBAAwB,aAAa;AACrC,qBAAqB,aAAa;AAClC,yBAAyB,sOAAsO;AAC/P,gBAAgB,0BAA0B;AAC1C,sBAAsB,0BAA0B;AAChD,qBAAqB,0BAA0B;AAC/C,oBAAoB,0BAA0B;AAC9C,uBAAuB,0BAA0B;AACjD,oBAAoB,0BAA0B;AAC9C,mBAAmB,0BAA0B;AAC7C,oBAAoB,0BAA0B;AAC9C,mBAAmB,0BAA0B;AAC7C,kBAAkB,mDAAmD;AACrE,oBAAoB,mDAAmD;AACvE,oBAAoB,mDAAmD;AACvE,iBAAiB,0BAA0B;AAC3C,qBAAqB,0BAA0B;AAC/C,uBAAuB,0BAA0B;AACjD,wBAAwB,0BAA0B;AAClD,sBAAsB,0BAA0B;AAChD,0BAA0B,2DAA2D;AACrF,2BAA2B,2DAA2D;AACtF,kBAAkB,uDAAuD;AACzE,eAAe,0BAA0B;AACzC,sBAAsB,uBAAuB;AAC7C,yBAAyB,0DAA0D;AACnF,oBAAoB,kDAAkD;AACtE,wBAAwB,4DAA4D;AACpF,aAAa,0BAA0B;AACvC,wBAAwB,uBAAuB;AAC/C,oBAAoB,2BAA2B;AAC/C,qBAAqB,kEAAkE;AACvF,eAAe,0BAA0B;AACzC,sBAAsB,aAAa;AACnC,gBAAgB,2BAA2B;AAC3C,qBAAqB,yBAAyB;AAC9C,uBAAuB,8CAA8C;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,wCAAwC;AAC3D,wBAAwB,wCAAwC;AAChE,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAqE;AACrE;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,2DAA2D;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,CAAC;AACD;;AAEA,CAAC;;AAED,2LAA2L;AAC3L;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,uBAAuB;AACvB;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,uBAAuB,EAAE;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA,CAAC;;AAED,+JAA+J;AAC/J;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,UAAU;AAC7C,qCAAqC,QAAQ;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED,CAAC;;AAED,qSAAqS;AACrS;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,CAAC;AACD;;AAEA,CAAC,kBAAkB;AACnB;AACA,4BAA4B,KAAuD;AACnF;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB;;;;;;;;ACpnBA,mKAAmK;AACnK;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,qMAAqM;AACrM;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,uCAAuC,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE;AAC9D;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA,6BAA6B;AAC7B;AACA;AACA,iBAAiB;AACjB;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA,uCAAuC;AACvC,aAAa;AACb;AACA,4BAA4B;AAC5B,aAAa;AACb;AACA,8BAA8B;AAC9B,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,4HAA4H;AAC5H;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA,uCAAuC;AACvC;AACA;AACA;AACA,qDAAqD,0BAA0B;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;AAEA,CAAC;;AAED,+JAA+J;AAC/J;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,UAAU;AAC7C,qCAAqC,QAAQ;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED,CAAC;;AAED,4NAA4N;AAC5N;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C;AAC1C;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;AAEA,CAAC,kBAAkB;AACnB;AACA,4BAA4B,KAAuD;AACnF;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB;;;;;;;;ACpVA,qKAAqK;AACrK;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iGAAiG;AACjG;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA,6BAA6B;AAC7B;AACA,yCAAyC;AACzC;AACA;AACA;AACA,qBAAqB;AACrB;AACA,kCAAkC;AAClC;AACA,qBAAqB;AACrB;AACA,iCAAiC;AACjC;AACA,qBAAqB;AACrB;AACA,qBAAqB;AACrB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,yFAAyF;AACzF;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA,6BAA6B;AAC7B;AACA,yCAAyC;AACzC;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iCAAiC;AACjC;AACA,qBAAqB;AACrB;AACA,qBAAqB;AACrB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,2MAA2M;AAC3M;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,yCAAyC,EAAE;AAC3C,sBAAsB,EAAE;AACxB,WAAW,YAAY,KAAK;AAC5B,oBAAoB,IAAI;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA,mCAAmC,EAAE;AACrC;AACA,aAAa;AACb;AACA,6BAA6B;AAC7B;AACA,aAAa;AACb;AACA,6BAA6B;AAC7B;AACA,aAAa;AACb;AACA,6BAA6B;AAC7B,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,EAAE,cAAc,EAAE;AAC9D,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA,0BAA0B,YAAY,4BAA4B,GAAG;AACrE,aAAa;AACb;AACA,uCAAuC,YAAY;AACnD,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,EAAE,cAAc,EAAE;AAC9D,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB,qCAAqC;AACrC,6BAA6B;AAC7B;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,+BAA+B;AAC/B;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,wBAAwB,EAAE;AAC1B,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,sBAAsB;AAChC,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,gCAAgC;AAC1D,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,kBAAkB,8DAA8D;AAChF,kBAAkB,sBAAsB;AACxC,kBAAkB;AAClB;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,kBAAkB,8DAA8D;AAChF,kBAAkB,sBAAsB;AACxC,kBAAkB;AAClB;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,gCAAgC,qBAAqB,yBAAyB;AAC9E,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,wDAAwD;AAC1E,kBAAkB;AAClB;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,kBAAkB,qDAAqD;AACvE,kBAAkB;AAClB;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,4HAA4H;AAC5H;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA,uCAAuC;AACvC;AACA;AACA;AACA,qDAAqD,0BAA0B;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;AAEA,CAAC;;AAED,+JAA+J;AAC/J;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,UAAU;AAC7C,qCAAqC,QAAQ;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED,CAAC;;AAED,2RAA2R;AAC3R;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,CAAC;AACD;;AAEA,CAAC,kBAAkB;AACnB;AACA,4BAA4B,KAAuD;AACnF;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB;;;;;;;;ACp3BA,4JAA4J;AAC5J;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA,4BAA4B;AAC5B,aAAa;AACb;AACA,8BAA8B;AAC9B,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,EAAE,cAAc,EAAE;AAC5D,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,4HAA4H;AAC5H;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA,uCAAuC;AACvC;AACA;AACA;AACA,qDAAqD,0BAA0B;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;AAEA,CAAC;;AAED,+JAA+J;AAC/J;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,UAAU;AAC7C,qCAAqC,QAAQ;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED,CAAC;;AAED,mPAAmP;AACnP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA,0CAA0C;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,CAAC;AACD;;AAEA,CAAC,kBAAkB;AACnB;AACA,4BAA4B,KAAuD;AACnF;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB;;;;;;;;AClRA,mKAAmK;AACnK;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,iNAAiN;AACjN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,gGAAgG;AAChG,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA,uCAAuC;AACvC,aAAa;AACb;AACA,4BAA4B;AAC5B,aAAa;AACb;AACA,8BAA8B;AAC9B,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,4HAA4H;AAC5H;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA,uCAAuC;AACvC;AACA;AACA;AACA,qDAAqD,0BAA0B;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;AAEA,CAAC;;AAED,+JAA+J;AAC/J;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,UAAU;AAC7C,qCAAqC,QAAQ;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED,CAAC;;AAED,sNAAsN;AACtN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;AAEA,CAAC,kBAAkB;AACnB;AACA,4BAA4B,KAAuD;AACnF;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB;;;;;;;;ACjVA,8JAA8J;AAC9J;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,EAAE,OAAO,EAAE,+BAA+B,EAAE,cAAc,EAAE;AACtG;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,mCAAmC,EAAE;AACrC;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA,mCAAmC,EAAE;AACrC;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA,sCAAsC,EAAE;AACxC;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA,sCAAsC,EAAE;AACxC;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA,yCAAyC,EAAE;AAC3C;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA,yCAAyC,EAAE;AAC3C;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA,4CAA4C,EAAE;AAC9C;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA,4CAA4C,EAAE;AAC9C;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA,6BAA6B;AAC7B,aAAa;AACb;AACA,kCAAkC;AAClC,aAAa;AACb;AACA,kCAAkC;AAClC,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA,0BAA0B,EAAE;AAC5B;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA,0BAA0B,EAAE;AAC5B;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,0BAA0B,EAAE;AAC5B;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,0BAA0B,EAAE;AAC5B;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA,0BAA0B,EAAE;AAC5B;AACA,aAAa;AACb;AACA,yBAAyB;AACzB;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA,0BAA0B,EAAE;AAC5B;AACA,aAAa;AACb;AACA,yBAAyB;AACzB;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA,yBAAyB;AACzB;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA,yBAAyB;AACzB;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,0BAA0B,EAAE;AAC5B;AACA,aAAa;AACb;AACA,yBAAyB;AACzB;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,0BAA0B,EAAE;AAC5B;AACA,aAAa;AACb;AACA,yBAAyB;AACzB;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA,yBAAyB;AACzB;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,yBAAyB;AACzB;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,yBAAyB;AACzB;AACA,aAAa;AACb;AACA,yBAAyB;AACzB;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,qJAAqJ;AACrJ;AACA;AACA;AACA,gDAAgD;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED,CAAC;;AAED,wMAAwM;AACxM;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;AAEA,CAAC,kBAAkB;AACnB;AACA,4BAA4B,KAAuD;AACnF;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB;;;;;;;;AC3dA,2JAA2J;AAC3J;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,oEAAoE;AAClF;AACA;AACA;AACA,aAAa;AACb,cAAc,8DAA8D;AAC5E;AACA;AACA;AACA,aAAa;AACb,cAAc,gBAAgB;AAC9B,cAAc,6CAA6C;AAC3D,cAAc,wCAAwC;AACtD,cAAc,sBAAsB;AACpC,cAAc;AACd;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA,cAAc,uBAAuB;AACrC,cAAc,mBAAmB;AACjC,cAAc,wDAAwD;AACtE,cAAc,+CAA+C;AAC7D,cAAc;AACd;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,qBAAqB;AACrB,sBAAsB,mBAAmB;AACzC,aAAa;AACb;AACA,cAAc,4DAA4D;AAC1E,cAAc,kCAAkC;AAChD,cAAc;AACd;AACA;AACA,cAAc,uDAAuD;AACrE,cAAc;AACd;AACA;AACA;AACA,oCAAoC,qBAAqB,yBAAyB;AAClF,aAAa;AACb;AACA;AACA,oCAAoC,qBAAqB,yBAAyB;AAClF,aAAa;AACb;AACA;AACA;AACA;AACA,sBAAsB,uBAAuB;AAC7C,sBAAsB;AACtB;AACA,aAAa;AACb;AACA,cAAc;AACd;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA,sBAAsB,8CAA8C;AACpE,sBAAsB;AACtB;AACA,aAAa;AACb;AACA;AACA;AACA,sBAAsB,8CAA8C;AACpE,sBAAsB;AACtB;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,sBAAsB,8DAA8D;AACpF,sBAAsB,2BAA2B;AACjD,sBAAsB;AACtB;AACA,aAAa;AACb;AACA;AACA;AACA,sBAAsB,8DAA8D;AACpF,sBAAsB,2BAA2B;AACjD,sBAAsB;AACtB;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,uBAAuB;AACzC,kBAAkB;AAClB;AACA,SAAS;AACT;AACA,cAAc,uBAAuB;AACrC,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA,CAAC;AACD;AACA;;AAEA,CAAC;;AAED,8KAA8K;AAC9K;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA,CAAC;;AAED,4JAA4J;AAC5J;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,mBAAmB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,mBAAmB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA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AAQ,mBAAO,CAAC,GAAW;AAC3B,IAAI,IAAqC;AACzC,EAAE,SAAkB;AACpB,EAAE,yBAAmB;AACrB,EAAE,KAAK,UAkBN;;;;;;;;ACxBD;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,uBAAuB,UAAU;AACjC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,uBAAuB,UAAU;AACjC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,qBAAqB,UAAU;AAC/B;AACA;;AAEA;AACA;AACA;;AAEA;AACA,qBAAqB,UAAU;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC1Ia;;AAEb;AACA;AACA;AACA,kBAAkB,wBAAwB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,iBAAiB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,4BAA4B;AAChD;AACA;AACA;AACA;AACA;AACA,qBAAqB,6BAA6B;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACnFa;;AAEb;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACjCa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACTa;;AAEb;AACA;AACA,cAAc,KAAwC,GAAG,sBAAiB,GAAG,CAAI;AACjF;AACA;AACA;AACA;AACA;;;;;;;;ACTa;;AAEb;AACA;AACA;AACA;AACA,kDAAkD;AAClD;AACA;AACA,0CAA0C;AAC1C;AACA;AACA;AACA,iFAAiF;AACjF;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,yDAAyD;AACzD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC5Da;;AAEb;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACbA;;;;;;UCAA;UACA;;UAEA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;;UAEA;UACA;;UAEA;UACA;;UAEA;UACA;UACA;;;;;WCzBA;WACA;WACA;;;;;WCFA;WACA;WACA;WACA;WACA;WACA,iCAAiC,WAAW;WAC5C;WACA;;;;;WCPA;WACA;WACA;WACA;WACA,yCAAyC,wCAAwC;WACjF;WACA;WACA;;;;;WCPA;;;;;WCAA;WACA;WACA;WACA,uDAAuD,iBAAiB;WACxE;WACA,gDAAgD,aAAa;WAC7D;;;;;WCNA;WACA;WACA;WACA;WACA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A;AACA,kCAAkC,OAAO;AACzC;AACA;AACA,IAAI;AACJ;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnDwC;AACA;AACiB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8DAA8D;AAC9D;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa,SAAS;AACtB,YAAY,WAAW;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe;AACf,EAAE,YAAY;AACd,OAAO,MAAM;AACb;AACA;AACA,aAAa,MAAM;AACnB;AACA;;ACzCe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACTmD;AACX;AACiB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,WAAW,QAAQ;AACnB,aAAa,MAAM;AACnB,YAAY,WAAW;AACvB;AACA;AACA;AACA;AACA;AACA;AACe;AACf,EAAE,YAAY;AACd,kBAAkB,MAAM;AACxB,eAAe,SAAS;AACxB;AACA;;AC1B0D;AACD;AACN;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,WAAW,QAAQ;AACnB,aAAa,MAAM;AACnB,YAAY,WAAW;AACvB;AACA;AACA;AACA;AACA;AACA;AACe;AACf,EAAE,YAAY;AACd,eAAe,SAAS;AACxB,SAAS,eAAe;AACxB;;ACzB2C;AACS;AACpD;AACe;AACf,EAAE,YAAY;AACd,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;;ACZ2C;AACS;AACrC;AACf,EAAE,YAAY;AACd;AACA,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;;ACX2C;AACS;AACU;AAC/C;AACf,EAAE,YAAY;AACd,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA,wBAAwB,iBAAiB;AACzC;AACA;AACA;AACA,wBAAwB,iBAAiB;AACzC;AACA;AACA,IAAI;AACJ;AACA,IAAI;AACJ;AACA;AACA;;ACtB8D;AACA;AACV;AACrC;AACf,EAAE,YAAY;AACd,aAAa,iBAAiB;AAC9B;AACA;AACA;AACA,aAAa,iBAAiB;AAC9B;AACA;;ACX2C;AACmB;AACQ;AAClB;AACpD;AACe;AACf,EAAE,YAAY;AACd,aAAa,MAAM;AACnB,aAAa,iBAAiB,mBAAmB,qBAAqB;;AAEtE;AACA;AACA;AACA;AACA;;ACdA;AACO;AACP;AACA;AACO;AACP;AACA;;ACN2C;AACS;AACN;AACiB;AAChD;AACf;AACA,EAAE,YAAY;AACd,uBAAuB,iBAAiB;AACxC,qBAAqB,SAAS;;AAE9B;AACA;AACA;AACA;AACA,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;;ACpB2C;AACS;AACI;AACV;AACiB;AAChD;AACf;AACA,EAAE,YAAY;AACd,aAAa,MAAM;AACnB;AACA,uBAAuB,iBAAiB;AACxC,8BAA8B,SAAS;;AAEvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,cAAc;AACtC;AACA;AACA;AACA,wBAAwB,cAAc;AACtC;AACA;AACA,IAAI;AACJ;AACA,IAAI;AACJ;AACA;AACA;;AChCwD;AACJ;AACI;AACV;AACiB;AAChD;AACf;AACA,EAAE,YAAY;AACd,uBAAuB,iBAAiB;AACxC,8BAA8B,SAAS;AACvC,aAAa,cAAc;AAC3B;AACA;AACA;AACA,aAAa,cAAc;AAC3B;AACA;;AChB2C;AACa;AACQ;AACZ;AACpD,IAAI,+BAAoB;AACT;AACf,EAAE,YAAY;AACd,aAAa,MAAM;AACnB,aAAa,cAAc,4BAA4B,kBAAkB;;AAEzE;AACA;AACA;AACA,2BAA2B,+BAAoB;AAC/C;;ACde;AACf;AACA;AACA;AACA;AACA;AACA;AACA;;ACP6D;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,eAAe;AAC1B,GAAG;AACH;AACA;AACA;AACA,+CAA+C,eAAe;AAC9D,GAAG;AACH;AACA;AACA,WAAW,eAAe;AAC1B,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,WAAW,eAAe;AAC1B,GAAG;AACH;AACA;AACA,WAAW,eAAe;AAC1B,GAAG;AACH;AACA;AACA,WAAW,eAAe;AAC1B,GAAG;AACH;AACA;AACA,WAAW,eAAe;AAC1B,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,WAAW,eAAe;AAC1B;AACA;AACA,sDAAe,UAAU;;AC/E4C;AACJ;AACQ;AACd;AACQ;AACN;AACH;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,IAAI,qBAAU;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,WAAW,eAAe;AAC1B,GAAG;AACH;AACA;AACA,yBAAyB,cAAc;AACvC;AACA;;AAEA;AACA;AACA;AACA,aAAa,eAAe;AAC5B;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA,WAAW,eAAe;AAC1B,GAAG;AACH;AACA;AACA,sBAAsB,iBAAiB;;AAEvC;AACA,WAAW,eAAe;AAC1B,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,eAAe;AAC1B,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,eAAe;AAC9B;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,qCAAqC;AACrC;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,eAAe;AAC9B;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,qCAAqC;AACrC;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,eAAe;AAC9B;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,eAAe;AAC9B;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,GAAG;AACH;AACA;AACA,eAAe,UAAU;AACzB;AACA;AACA;AACA,OAAO;AACP;AACA,WAAW,eAAe;AAC1B,GAAG;AACH;AACA;AACA,kBAAkB,aAAa;AAC/B;AACA;AACA;AACA,OAAO;AACP;AACA,WAAW,eAAe;AAC1B,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,WAAW,eAAe;AAC1B,GAAG;AACH;AACA;AACA,oBAAoB,eAAe;AACnC;AACA;AACA;AACA,OAAO;AACP;AACA,WAAW,eAAe;AAC1B,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,eAAe;AAC9B;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,eAAe;AAC9B;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,eAAe;AAC9B;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,WAAW,eAAe;AAC1B,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,WAAW,eAAe;AAC1B,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,WAAW,eAAe;AAC1B,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,WAAW,eAAe;AAC1B,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,WAAW,eAAe;AAC1B,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,WAAW,eAAe;AAC1B,GAAG;AACH;AACA;AACA,WAAW,eAAe;AAC1B,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,WAAW,eAAe;AAC1B,GAAG;AACH;AACA;AACA;AACA;AACA,WAAW,eAAe;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,eAAe;AAC3D;AACA;AACA;AACA;AACA,kBAAkB,eAAe;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,eAAe;AAC7B,gBAAgB,eAAe;AAC/B;AACA;AACA,wDAAe,qBAAU;;ACnwBzB;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,mCAAmC,MAAM,0DAA0D,MAAM;AACzG;AACA;AACA;AACA;AACA;AACA,4DAAe,cAAc;;AC/E7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe;AACf;AACA;AACA;AACA;;ACfA;AACA;AACO;AACP;AACA;AACO;AACP;AACA;AACO;AACP;AACA,yIAAyI;AACzI,IAAI;AACJ,qIAAqI;AACrI,IAAI;AACJ,+IAA+I;AAC/I,IAAI;AACJ,iJAAiJ;AACjJ;AACA;;AClBA;AACA;AACA;AACA,wBAAwB,QAAQ;AAChC,GAAG;AACH;AACA;AACA,cAAc,QAAQ;AACtB,GAAG;AACH;AACA;AACA;AACA,wBAAwB,QAAQ;AAChC,GAAG;AACH;AACA;AACA,cAAc,QAAQ;AACtB,GAAG;AACH;AACA;AACA,oBAAoB,QAAQ;AAC5B,GAAG;AACH;AACA;AACA,cAAc,QAAQ;AACtB,GAAG;AACH;AACA;AACA,cAAc,QAAQ;AACtB,GAAG;AACH;AACA;AACA,oBAAoB,QAAQ;AAC5B,GAAG;AACH;AACA;AACA,cAAc,QAAQ;AACtB,GAAG;AACH;AACA;AACA,oBAAoB,QAAQ;AAC5B,GAAG;AACH;AACA;AACA,cAAc,QAAQ;AACtB,GAAG;AACH;AACA;AACA,oBAAoB,QAAQ;AAC5B,GAAG;AACH;AACA;AACA,cAAc,QAAQ;AACtB,GAAG;AACH;AACA;AACA,mBAAmB,QAAQ;AAC3B,GAAG;AACH;AACA;AACA,qBAAqB,QAAQ;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA,IAAI;AACJ,yCAAyC,OAAO;AAChD;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA,0DAAe,cAAc;;AClFd;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACRyE;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO,OAAO,MAAM;AAC/B,WAAW,OAAO,OAAO,MAAM;AAC/B,aAAa,MAAM,IAAI,MAAM;AAC7B,YAAY,MAAM,IAAI,MAAM;AAC5B;AACA;AACA,QAAQ,iBAAiB;AACzB;AACA;AACA,GAAG;AACH,QAAQ,iBAAiB;AACzB;AACA;AACA,GAAG;AACH,YAAY,iBAAiB;AAC7B;AACA;AACA,GAAG;AACH;AACA,sDAAe,UAAU;;ACjCzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAAe,cAAc;;ACXd;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBqE;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,eAAe;AACtB;AACA;AACA,GAAG;AACH,WAAW,eAAe;AAC1B;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,SAAS,eAAe;AACxB;AACA;AACA,GAAG;AACH,OAAO,eAAe;AACtB;AACA;AACA,GAAG;AACH,aAAa,eAAe;AAC5B;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,oDAAe,QAAQ;;AC9IR;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,oBAAoB;AACxC;AACA;AACA;AACA;AACA;AACA;;ACzCe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChB+D;AACc;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,mBAAmB;AACpC;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,OAAO,YAAY;AACnB;AACA;AACA;AACA;AACA,GAAG;AACH,WAAW,YAAY;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,SAAS,YAAY;AACrB;AACA;AACA;AACA;AACA,GAAG;AACH,OAAO,YAAY;AACnB;AACA;AACA;AACA;AACA,GAAG;AACH,aAAa,YAAY;AACzB;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,iDAAe,KAAK;;ACjGwC;AACR;AACQ;AACZ;AACN;AAC1C;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,oCAAoC;AACpC,mCAAmC;AACnC;AACA;AACA;AACA,kBAAkB,mBAAc;AAChC,cAAc,eAAU;AACxB,kBAAkB,mBAAc;AAChC,YAAY,aAAQ;AACpB,SAAS,UAAK;AACd;AACA;AACA;AACA;AACA;AACA,4CAAe,MAAM;;AC1BmC;AACxD,oDAAe,KAAa;;ACDc;AACgB;AAClB;AACoB;AACQ;AAC2B;AAC6B;AACzE;AACM;AACW;AACT,CAAC;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,WAAW;AAC5D;AACA,iDAAiD,WAAW;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oEAAoE;AACpE,wBAAwB,4CAA4C;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,QAAQ,iEAAiE;AACpF,WAAW,eAAe;AAC1B,WAAW,QAAQ;AACnB,WAAW,SAAS;AACpB;AACA,WAAW,SAAS;AACpB;AACA,aAAa,QAAQ;AACrB,YAAY,WAAW;AACvB,YAAY,YAAY;AACxB,YAAY,YAAY;AACxB,YAAY,YAAY;AACxB,YAAY,YAAY;AACxB,YAAY,YAAY;AACxB,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eAAe,OAAO;AACpB,UAAM,EAAE,MAAM,IAAI,KAAK;AAEvB,UAAM,SAAS,6CAAM,CAAC,KAAK,CAAC;AAAA,EAC9B;AAAA,EAEA,SAAS;AACP,UAA+B,UAAK,OAA5B,WA5BZ,IA4BmC,IAAV,4BAAU,IAAV,CAAb;AAER,WACE;AAAA,MAAC,iBAAM;AAAN,2DACK,QADL;AAAA,QAEC,UAAU,KAAK;AAAA,QACf,OAAO,MAAM,MAAM;AAAA;AAAA,MAElB;AAAA,IACH;AAAA,EAEJ;AACF;AAjCE,wBADmB,aACZ,aAAY;AAAA,EACjB,UAAU,uCAAmB,CAAC;AAAA,IAC5B,oCAAc;AAAJ,EACZ,CAAC;AAAA,EACD,UAAU,oCAAc;AAAJ,EACpB,OAAO,wCAAoB,CAAC,MAAM;AACpC;;;ACbK;AAG8B;AACH;AACK;AACA;AACN;AACU;AACR;AACK;AACK;AACb;AACY;AACR;AACJ;AACE;AACC;AACF;AACC;AACI;AACL;AACD;AACO;AACP;AACQ;AACP;AACE;AACF;AAGC;AACH;AAGK;AACA;AACE;AACF;AACC;AACC;AACE;AACC;AACJ;AACJ;AACC;AACK;AACN;AACC;AACQ;AACN;AACF;AACI;AACG;AAIC;AACE;AACF;AACC;AACC;AACE;AACC;AACJ;AACJ;AACC;AACK;AACN;AACC;AACQ;AACN;AACF;AACO;AACN;AAIE;AACF;AACA;AACE;AACD;AACC;AACE;AACH;AACJ;AACM;AACL;AACQ;AACR;AAGA;AACD;AACC;AACK;AACA;AAClB","sources":["webpack://@tyk-technologies/tyk-ui/./node_modules/ace-builds/src-noconflict/ace.js","webpack://@tyk-technologies/tyk-ui/./node_modules/ace-builds/src-noconflict/ext-beautify.js","webpack://@tyk-technologies/tyk-ui/./node_modules/ace-builds/src-noconflict/ext-searchbox.js","webpack://@tyk-technologies/tyk-ui/./node_modules/ace-builds/src-noconflict/mode-css.js","webpack://@tyk-technologies/tyk-ui/./node_modules/ace-builds/src-noconflict/mode-golang.js","webpack://@tyk-technologies/tyk-ui/./node_modules/ace-builds/src-noconflict/mode-javascript.js","webpack://@tyk-technologies/tyk-ui/./node_modules/ace-builds/src-noconflict/mode-json.js","webpack://@tyk-technologies/tyk-ui/./node_modules/ace-builds/src-noconflict/mode-jsx.js","webpack://@tyk-technologies/tyk-ui/./node_modules/ace-builds/src-noconflict/mode-python.js","webpack://@tyk-technologies/tyk-ui/./node_modules/ace-builds/src-noconflict/mode-xml.js","webpack://@tyk-technologies/tyk-ui/./node_modules/ace-builds/src-noconflict/theme-github.js","webpack://@tyk-technologies/tyk-ui/./node_modules/flatpickr/dist/flatpickr.min.css","webpack://@tyk-technologies/tyk-ui/./node_modules/css-loader/dist/runtime/api.js","webpack://@tyk-technologies/tyk-ui/./node_modules/css-loader/dist/runtime/sourceMaps.js","webpack://@tyk-technologies/tyk-ui/./node_modules/react-dom/client.js","webpack://@tyk-technologies/tyk-ui/./node_modules/react-fast-compare/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js","webpack://@tyk-technologies/tyk-ui/./node_modules/style-loader/dist/runtime/insertBySelector.js","webpack://@tyk-technologies/tyk-ui/./node_modules/style-loader/dist/runtime/insertStyleElement.js","webpack://@tyk-technologies/tyk-ui/./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js","webpack://@tyk-technologies/tyk-ui/./node_modules/style-loader/dist/runtime/styleDomAPI.js","webpack://@tyk-technologies/tyk-ui/./node_modules/style-loader/dist/runtime/styleTagTransform.js","webpack://@tyk-technologies/tyk-ui/external commonjs2 \"react-dom\"","webpack://@tyk-technologies/tyk-ui/webpack/bootstrap","webpack://@tyk-technologies/tyk-ui/webpack/runtime/amd define","webpack://@tyk-technologies/tyk-ui/webpack/runtime/compat get default export","webpack://@tyk-technologies/tyk-ui/webpack/runtime/define property getters","webpack://@tyk-technologies/tyk-ui/webpack/runtime/hasOwnProperty shorthand","webpack://@tyk-technologies/tyk-ui/webpack/runtime/make namespace object","webpack://@tyk-technologies/tyk-ui/webpack/runtime/node module decorator","webpack://@tyk-technologies/tyk-ui/webpack/runtime/publicPath","webpack://@tyk-technologies/tyk-ui/webpack/runtime/nonce","webpack://@tyk-technologies/tyk-ui/external commonjs2 \"react\"","webpack://@tyk-technologies/tyk-ui/external commonjs2 \"prop-types\"","webpack://@tyk-technologies/tyk-ui/./src/components/Accordion/js/AccordionContext.js","webpack://@tyk-technologies/tyk-ui/./src/components/Accordion/js/AccordionItemContext.js","webpack://@tyk-technologies/tyk-ui/./src/components/Icon/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Accordion/js/AccordionItemTrigger.js","webpack://@tyk-technologies/tyk-ui/./src/components/Accordion/js/AccordionItem.js","webpack://@tyk-technologies/tyk-ui/./src/components/Accordion/js/AccordionItemHeader.js","webpack://@tyk-technologies/tyk-ui/external commonjs2 \"react-transition-group\"","webpack://@tyk-technologies/tyk-ui/./src/hooks/usePrevious/index.js","webpack://@tyk-technologies/tyk-ui/./src/hooks/useTimeout/index.js","webpack://@tyk-technologies/tyk-ui/./src/hooks/useInterval/index.js","webpack://@tyk-technologies/tyk-ui/./src/hooks/useEventListener/index.js","webpack://@tyk-technologies/tyk-ui/./src/hooks/useComponentSize/index.js","webpack://@tyk-technologies/tyk-ui/./src/hooks/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Collapsible/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Accordion/js/AccordionItemContent.js","webpack://@tyk-technologies/tyk-ui/./src/components/Accordion/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Button/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/ButtonGroup/index.js","webpack://@tyk-technologies/tyk-ui/external commonjs2 \"echarts\"","webpack://@tyk-technologies/tyk-ui/external commonjs2 \"immutable\"","webpack://@tyk-technologies/tyk-ui/./src/utils/debounce/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Loader/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Message/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Chart/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Toast/js/ToastMessage.js","webpack://@tyk-technologies/tyk-ui/./src/components/Toast/js/ToastContainer.js","webpack://@tyk-technologies/tyk-ui/./src/components/Toast/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/CopyToClipboard/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Modal/js/ModalFooter.js","webpack://@tyk-technologies/tyk-ui/./src/components/Modal/js/ModalBody.js","webpack://@tyk-technologies/tyk-ui/./src/components/Modal/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Confirm/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/FixedWrapper/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/InfiniteScroller/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/FloatingContainer/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/InfoNote/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/List/js/ListItem.js","webpack://@tyk-technologies/tyk-ui/./src/components/List/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/NavBar/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Navigation/js/NavigationItem.js","webpack://@tyk-technologies/tyk-ui/./src/components/Navigation/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Panel/panel-context.js","webpack://@tyk-technologies/tyk-ui/./src/components/Panel/js/PanelBody.js","webpack://@tyk-technologies/tyk-ui/./src/components/Panel/js/PanelFooter.js","webpack://@tyk-technologies/tyk-ui/./src/components/Panel/js/PanelHeader.js","webpack://@tyk-technologies/tyk-ui/./src/components/Panel/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Pill/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/RevealPanel/js/RevealPanelService.js","webpack://@tyk-technologies/tyk-ui/./src/components/RevealPanel/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Tabs/tabs-context.js","webpack://@tyk-technologies/tyk-ui/./src/components/Tabs/js/TabContext.js","webpack://@tyk-technologies/tyk-ui/./src/components/Tabs/js/TabContent.js","webpack://@tyk-technologies/tyk-ui/./src/components/Tabs/js/Tab.js","webpack://@tyk-technologies/tyk-ui/./src/components/Tabs/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Tooltip/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/TextEllipsis/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Pagination/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Table/tableContext.js","webpack://@tyk-technologies/tyk-ui/./src/components/Table/js/header-cell.js","webpack://@tyk-technologies/tyk-ui/./src/components/Table/js/header.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Checkbox/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Table/js/cell.js","webpack://@tyk-technologies/tyk-ui/./src/components/Table/js/row.js","webpack://@tyk-technologies/tyk-ui/./src/components/Table/js/body.js","webpack://@tyk-technologies/tyk-ui/./src/components/Table/index.js","webpack://@tyk-technologies/tyk-ui/./src/layout/Column/index.js","webpack://@tyk-technologies/tyk-ui/./src/layout/Row/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Dropdown/dropdown-context.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Dropdown/js/DropdownItem.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Dropdown/index.js","webpack://@tyk-technologies/tyk-ui/external commonjs2 \"react-ace\"","webpack://@tyk-technologies/tyk-ui/./src/form/components/CodeEditor/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Combobox/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Combobox2/js/Value.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Combobox2/js/List.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Combobox2/index.js","webpack://@tyk-technologies/tyk-ui/external commonjs2 \"flatpickr\"","webpack://@tyk-technologies/tyk-ui/./node_modules/flatpickr/dist/flatpickr.min.css?e03b","webpack://@tyk-technologies/tyk-ui/./src/form/components/DatePicker/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/@babel/runtime/helpers/esm/typeof.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/requiredArgs/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/isDate/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/toDate/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/isValid/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/toInteger/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/addMilliseconds/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/subMilliseconds/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/getUTCDayOfYear/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/startOfUTCISOWeek/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/getUTCISOWeekYear/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/startOfUTCISOWeekYear/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/getUTCISOWeek/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/defaultOptions/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/startOfUTCWeek/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/getUTCWeekYear/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/startOfUTCWeekYear/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/getUTCWeek/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/addLeadingZeros/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/format/lightFormatters/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/format/formatters/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/format/longFormatters/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/getTimezoneOffsetInMilliseconds/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/protectedTokens/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/locale/en-US/_lib/formatDistance/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/locale/_lib/buildFormatLongFn/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/locale/en-US/_lib/formatLong/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/locale/en-US/_lib/formatRelative/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/locale/_lib/buildLocalizeFn/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/locale/en-US/_lib/localize/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/locale/_lib/buildMatchFn/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/locale/_lib/buildMatchPatternFn/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/locale/en-US/_lib/match/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/locale/en-US/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/defaultLocale/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/format/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/EditableList/js/EditableListForm.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/EditableList/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/EditableList2/Header.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/EditableList2/ListHeader.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/EditableList2/FieldsList.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/EditableList2/validate-values.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/EditableList2/with-validation.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/EditableList2/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/FileInput/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Input/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Input2/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Multiselect/js/MultiselectContext.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Multiselect/js/MultiselectItem.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Multiselect/js/MultiselectPanel.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Multiselect/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Radio/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Select/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/SelectableList/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Textarea/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Toggle/js/ToggleContext.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Toggle/js/ToggleItem.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Toggle/js/ToggleItemWrapper.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Toggle/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/StringBuilder/js/service.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/StringBuilder/js/string-input.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/StringBuilder/js/invalid-token.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/StringBuilder/js/tokenized-string.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/StringBuilder/js/options-list.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/StringBuilder/js/string-builder-footer.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/StringBuilder/index.js","webpack://@tyk-technologies/tyk-ui/./src/utils/config/config.js","webpack://@tyk-technologies/tyk-ui/./src/utils/formik/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikCheckbox/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikCodeEditor/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikCombobox/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikCombobox2/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikDatePicker/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikEditableList/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikEditableList2/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikFileInput/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikInput/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikInput2/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikMultiselect/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikRadio/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikSelect/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikSelectableList/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikTextarea/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikToggle/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikStringBuilder/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/redux-form/FieldCodeEditor/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/redux-form/FieldCombobox/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/redux-form/FieldDropdown/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/redux-form/FieldPagination/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/redux-form/FieldCombobox2/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/redux-form/FieldDatePicker/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/redux-form/FieldEditableList/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/redux-form/FieldFileInput/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/redux-form/FieldInput/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/redux-form/FieldMultiselect/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/redux-form/FieldSelect/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/redux-form/FieldSelectableList/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/redux-form/FieldToggle/index.js","webpack://@tyk-technologies/tyk-ui/./src/index.js"],"sourcesContent":["/* ***** BEGIN LICENSE BLOCK *****\n * Distributed under the BSD license:\n *\n * Copyright (c) 2010, Ajax.org B.V.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright\n * notice, this list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright\n * notice, this list of conditions and the following disclaimer in the\n * documentation and/or other materials provided with the distribution.\n * * Neither the name of Ajax.org B.V. nor the\n * names of its contributors may be used to endorse or promote products\n * derived from this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\n * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY\n * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\n * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *\n * ***** END LICENSE BLOCK ***** */\n\n/**\n * Define a module along with a payload\n * @param module a name for the payload\n * @param payload a function to call with (require, exports, module) params\n */\n\n(function() {\n\nvar ACE_NAMESPACE = \"ace\";\n\nvar global = (function() { return this; })();\nif (!global && typeof window != \"undefined\") global = window; // strict mode\n\n\nif (!ACE_NAMESPACE && typeof requirejs !== \"undefined\")\n return;\n\n\nvar define = function(module, deps, payload) {\n if (typeof module !== \"string\") {\n if (define.original)\n define.original.apply(this, arguments);\n else {\n console.error(\"dropping module because define wasn\\'t a string.\");\n console.trace();\n }\n return;\n }\n if (arguments.length == 2)\n payload = deps;\n if (!define.modules[module]) {\n define.payloads[module] = payload;\n define.modules[module] = null;\n }\n};\n\ndefine.modules = {};\ndefine.payloads = {};\n\n/**\n * Get at functionality define()ed using the function above\n */\nvar _require = function(parentId, module, callback) {\n if (typeof module === \"string\") {\n var payload = lookup(parentId, module);\n if (payload != undefined) {\n callback && callback();\n return payload;\n }\n } else if (Object.prototype.toString.call(module) === \"[object Array]\") {\n var params = [];\n for (var i = 0, l = module.length; i < l; ++i) {\n var dep = lookup(parentId, module[i]);\n if (dep == undefined && require.original)\n return;\n params.push(dep);\n }\n return callback && callback.apply(null, params) || true;\n }\n};\n\nvar require = function(module, callback) {\n var packagedModule = _require(\"\", module, callback);\n if (packagedModule == undefined && require.original)\n return require.original.apply(this, arguments);\n return packagedModule;\n};\n\nvar normalizeModule = function(parentId, moduleName) {\n // normalize plugin requires\n if (moduleName.indexOf(\"!\") !== -1) {\n var chunks = moduleName.split(\"!\");\n return normalizeModule(parentId, chunks[0]) + \"!\" + normalizeModule(parentId, chunks[1]);\n }\n // normalize relative requires\n if (moduleName.charAt(0) == \".\") {\n var base = parentId.split(\"/\").slice(0, -1).join(\"/\");\n moduleName = base + \"/\" + moduleName;\n\n while(moduleName.indexOf(\".\") !== -1 && previous != moduleName) {\n var previous = moduleName;\n moduleName = moduleName.replace(/\\/\\.\\//, \"/\").replace(/[^\\/]+\\/\\.\\.\\//, \"\");\n }\n }\n return moduleName;\n};\n\n/**\n * Internal function to lookup moduleNames and resolve them by calling the\n * definition function if needed.\n */\nvar lookup = function(parentId, moduleName) {\n moduleName = normalizeModule(parentId, moduleName);\n\n var module = define.modules[moduleName];\n if (!module) {\n module = define.payloads[moduleName];\n if (typeof module === 'function') {\n var exports = {};\n var mod = {\n id: moduleName,\n uri: '',\n exports: exports,\n packaged: true\n };\n\n var req = function(module, callback) {\n return _require(moduleName, module, callback);\n };\n\n var returnValue = module(req, exports, mod);\n exports = returnValue || mod.exports;\n define.modules[moduleName] = exports;\n delete define.payloads[moduleName];\n }\n module = define.modules[moduleName] = exports || module;\n }\n return module;\n};\n\nfunction exportAce(ns) {\n var root = global;\n if (ns) {\n if (!global[ns])\n global[ns] = {};\n root = global[ns];\n }\n\n if (!root.define || !root.define.packaged) {\n define.original = root.define;\n root.define = define;\n root.define.packaged = true;\n }\n\n if (!root.require || !root.require.packaged) {\n require.original = root.require;\n root.require = require;\n root.require.packaged = true;\n }\n}\n\nexportAce(ACE_NAMESPACE);\n\n})();\n\nace.define(\"ace/lib/es6-shim\",[\"require\",\"exports\",\"module\"], function(require, exports, module){function defineProp(obj, name, val) {\n Object.defineProperty(obj, name, {\n value: val,\n enumerable: false,\n writable: true,\n configurable: true\n });\n}\nif (!String.prototype.startsWith) {\n defineProp(String.prototype, \"startsWith\", function (searchString, position) {\n position = position || 0;\n return this.lastIndexOf(searchString, position) === position;\n });\n}\nif (!String.prototype.endsWith) {\n defineProp(String.prototype, \"endsWith\", function (searchString, position) {\n var subjectString = this;\n if (position === undefined || position > subjectString.length) {\n position = subjectString.length;\n }\n position -= searchString.length;\n var lastIndex = subjectString.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n });\n}\nif (!String.prototype.repeat) {\n defineProp(String.prototype, \"repeat\", function (count) {\n var result = \"\";\n var string = this;\n while (count > 0) {\n if (count & 1)\n result += string;\n if ((count >>= 1))\n string += string;\n }\n return result;\n });\n}\nif (!String.prototype.includes) {\n defineProp(String.prototype, \"includes\", function (str, position) {\n return this.indexOf(str, position) != -1;\n });\n}\nif (!Object.assign) {\n Object.assign = function (target) {\n if (target === undefined || target === null) {\n throw new TypeError(\"Cannot convert undefined or null to object\");\n }\n var output = Object(target);\n for (var index = 1; index < arguments.length; index++) {\n var source = arguments[index];\n if (source !== undefined && source !== null) {\n Object.keys(source).forEach(function (key) {\n output[key] = source[key];\n });\n }\n }\n return output;\n };\n}\nif (!Object.values) {\n Object.values = function (o) {\n return Object.keys(o).map(function (k) {\n return o[k];\n });\n };\n}\nif (!Array.prototype.find) {\n defineProp(Array.prototype, \"find\", function (predicate) {\n var len = this.length;\n var thisArg = arguments[1];\n for (var k = 0; k < len; k++) {\n var kValue = this[k];\n if (predicate.call(thisArg, kValue, k, this)) {\n return kValue;\n }\n }\n });\n}\nif (!Array.prototype.findIndex) {\n defineProp(Array.prototype, \"findIndex\", function (predicate) {\n var len = this.length;\n var thisArg = arguments[1];\n for (var k = 0; k < len; k++) {\n var kValue = this[k];\n if (predicate.call(thisArg, kValue, k, this)) {\n return k;\n }\n }\n });\n}\nif (!Array.prototype.includes) {\n defineProp(Array.prototype, \"includes\", function (item, position) {\n return this.indexOf(item, position) != -1;\n });\n}\nif (!Array.prototype.fill) {\n defineProp(Array.prototype, \"fill\", function (value) {\n var O = this;\n var len = O.length >>> 0;\n var start = arguments[1];\n var relativeStart = start >> 0;\n var k = relativeStart < 0\n ? Math.max(len + relativeStart, 0)\n : Math.min(relativeStart, len);\n var end = arguments[2];\n var relativeEnd = end === undefined ? len : end >> 0;\n var final = relativeEnd < 0\n ? Math.max(len + relativeEnd, 0)\n : Math.min(relativeEnd, len);\n while (k < final) {\n O[k] = value;\n k++;\n }\n return O;\n });\n}\nif (!Array.of) {\n defineProp(Array, \"of\", function () {\n return Array.prototype.slice.call(arguments);\n });\n}\n\n});\n\nace.define(\"ace/lib/fixoldbrowsers\",[\"require\",\"exports\",\"module\",\"ace/lib/es6-shim\"], function(require, exports, module){// vim:set ts=4 sts=4 sw=4 st:\n\"use strict\";\nrequire(\"./es6-shim\");\n\n});\n\nace.define(\"ace/lib/deep_copy\",[\"require\",\"exports\",\"module\"], function(require, exports, module){exports.deepCopy = function deepCopy(obj) {\n if (typeof obj !== \"object\" || !obj)\n return obj;\n var copy;\n if (Array.isArray(obj)) {\n copy = [];\n for (var key = 0; key < obj.length; key++) {\n copy[key] = deepCopy(obj[key]);\n }\n return copy;\n }\n if (Object.prototype.toString.call(obj) !== \"[object Object]\")\n return obj;\n copy = {};\n for (var key in obj)\n copy[key] = deepCopy(obj[key]);\n return copy;\n};\n\n});\n\nace.define(\"ace/lib/lang\",[\"require\",\"exports\",\"module\",\"ace/lib/deep_copy\"], function(require, exports, module){\"use strict\";\nexports.last = function (a) {\n return a[a.length - 1];\n};\nexports.stringReverse = function (string) {\n return string.split(\"\").reverse().join(\"\");\n};\nexports.stringRepeat = function (string, count) {\n var result = '';\n while (count > 0) {\n if (count & 1)\n result += string;\n if (count >>= 1)\n string += string;\n }\n return result;\n};\nvar trimBeginRegexp = /^\\s\\s*/;\nvar trimEndRegexp = /\\s\\s*$/;\nexports.stringTrimLeft = function (string) {\n return string.replace(trimBeginRegexp, '');\n};\nexports.stringTrimRight = function (string) {\n return string.replace(trimEndRegexp, '');\n};\nexports.copyObject = function (obj) {\n var copy = {};\n for (var key in obj) {\n copy[key] = obj[key];\n }\n return copy;\n};\nexports.copyArray = function (array) {\n var copy = [];\n for (var i = 0, l = array.length; i < l; i++) {\n if (array[i] && typeof array[i] == \"object\")\n copy[i] = this.copyObject(array[i]);\n else\n copy[i] = array[i];\n }\n return copy;\n};\nexports.deepCopy = require(\"./deep_copy\").deepCopy;\nexports.arrayToMap = function (arr) {\n var map = {};\n for (var i = 0; i < arr.length; i++) {\n map[arr[i]] = 1;\n }\n return map;\n};\nexports.createMap = function (props) {\n var map = Object.create(null);\n for (var i in props) {\n map[i] = props[i];\n }\n return map;\n};\nexports.arrayRemove = function (array, value) {\n for (var i = 0; i <= array.length; i++) {\n if (value === array[i]) {\n array.splice(i, 1);\n }\n }\n};\nexports.escapeRegExp = function (str) {\n return str.replace(/([.*+?^${}()|[\\]\\/\\\\])/g, '\\\\$1');\n};\nexports.escapeHTML = function (str) {\n return (\"\" + str).replace(/&/g, \"&\").replace(/\"/g, \""\").replace(/'/g, \"'\").replace(/ 0xffff ? 2 : 1;\n};\n\n});\n\nace.define(\"ace/lib/useragent\",[\"require\",\"exports\",\"module\"], function(require, exports, module){\"use strict\";\nexports.OS = {\n LINUX: \"LINUX\",\n MAC: \"MAC\",\n WINDOWS: \"WINDOWS\"\n};\nexports.getOS = function () {\n if (exports.isMac) {\n return exports.OS.MAC;\n }\n else if (exports.isLinux) {\n return exports.OS.LINUX;\n }\n else {\n return exports.OS.WINDOWS;\n }\n};\nvar _navigator = typeof navigator == \"object\" ? navigator : {};\nvar os = (/mac|win|linux/i.exec(_navigator.platform) || [\"other\"])[0].toLowerCase();\nvar ua = _navigator.userAgent || \"\";\nvar appName = _navigator.appName || \"\";\nexports.isWin = (os == \"win\");\nexports.isMac = (os == \"mac\");\nexports.isLinux = (os == \"linux\");\nexports.isIE =\n (appName == \"Microsoft Internet Explorer\" || appName.indexOf(\"MSAppHost\") >= 0)\n ? parseFloat((ua.match(/(?:MSIE |Trident\\/[0-9]+[\\.0-9]+;.*rv:)([0-9]+[\\.0-9]+)/) || [])[1])\n : parseFloat((ua.match(/(?:Trident\\/[0-9]+[\\.0-9]+;.*rv:)([0-9]+[\\.0-9]+)/) || [])[1]); // for ie\nexports.isOldIE = exports.isIE && exports.isIE < 9;\nexports.isGecko = exports.isMozilla = ua.match(/ Gecko\\/\\d+/);\nexports.isOpera = typeof opera == \"object\" && Object.prototype.toString.call(window.opera) == \"[object Opera]\";\nexports.isWebKit = parseFloat(ua.split(\"WebKit/\")[1]) || undefined;\nexports.isChrome = parseFloat(ua.split(\" Chrome/\")[1]) || undefined;\nexports.isSafari = parseFloat(ua.split(\" Safari/\")[1]) && !exports.isChrome || undefined;\nexports.isEdge = parseFloat(ua.split(\" Edge/\")[1]) || undefined;\nexports.isAIR = ua.indexOf(\"AdobeAIR\") >= 0;\nexports.isAndroid = ua.indexOf(\"Android\") >= 0;\nexports.isChromeOS = ua.indexOf(\" CrOS \") >= 0;\nexports.isIOS = /iPad|iPhone|iPod/.test(ua) && !window.MSStream;\nif (exports.isIOS)\n exports.isMac = true;\nexports.isMobile = exports.isIOS || exports.isAndroid;\n\n});\n\nace.define(\"ace/lib/dom\",[\"require\",\"exports\",\"module\",\"ace/lib/useragent\"], function(require, exports, module){\"use strict\";\nvar useragent = require(\"./useragent\");\nvar XHTML_NS = \"http://www.w3.org/1999/xhtml\";\nexports.buildDom = function buildDom(arr, parent, refs) {\n if (typeof arr == \"string\" && arr) {\n var txt = document.createTextNode(arr);\n if (parent)\n parent.appendChild(txt);\n return txt;\n }\n if (!Array.isArray(arr)) {\n if (arr && arr.appendChild && parent)\n parent.appendChild(arr);\n return arr;\n }\n if (typeof arr[0] != \"string\" || !arr[0]) {\n var els = [];\n for (var i = 0; i < arr.length; i++) {\n var ch = buildDom(arr[i], parent, refs);\n ch && els.push(ch);\n }\n return els;\n }\n var el = document.createElement(arr[0]);\n var options = arr[1];\n var childIndex = 1;\n if (options && typeof options == \"object\" && !Array.isArray(options))\n childIndex = 2;\n for (var i = childIndex; i < arr.length; i++)\n buildDom(arr[i], el, refs);\n if (childIndex == 2) {\n Object.keys(options).forEach(function (n) {\n var val = options[n];\n if (n === \"class\") {\n el.className = Array.isArray(val) ? val.join(\" \") : val;\n }\n else if (typeof val == \"function\" || n == \"value\" || n[0] == \"$\") {\n el[n] = val;\n }\n else if (n === \"ref\") {\n if (refs)\n refs[val] = el;\n }\n else if (n === \"style\") {\n if (typeof val == \"string\")\n el.style.cssText = val;\n }\n else if (val != null) {\n el.setAttribute(n, val);\n }\n });\n }\n if (parent)\n parent.appendChild(el);\n return el;\n};\nexports.getDocumentHead = function (doc) {\n if (!doc)\n doc = document;\n return doc.head || doc.getElementsByTagName(\"head\")[0] || doc.documentElement;\n};\nexports.createElement = function (tag, ns) {\n return document.createElementNS ?\n document.createElementNS(ns || XHTML_NS, tag) :\n document.createElement(tag);\n};\nexports.removeChildren = function (element) {\n element.innerHTML = \"\";\n};\nexports.createTextNode = function (textContent, element) {\n var doc = element ? element.ownerDocument : document;\n return doc.createTextNode(textContent);\n};\nexports.createFragment = function (element) {\n var doc = element ? element.ownerDocument : document;\n return doc.createDocumentFragment();\n};\nexports.hasCssClass = function (el, name) {\n var classes = (el.className + \"\").split(/\\s+/g);\n return classes.indexOf(name) !== -1;\n};\nexports.addCssClass = function (el, name) {\n if (!exports.hasCssClass(el, name)) {\n el.className += \" \" + name;\n }\n};\nexports.removeCssClass = function (el, name) {\n var classes = el.className.split(/\\s+/g);\n while (true) {\n var index = classes.indexOf(name);\n if (index == -1) {\n break;\n }\n classes.splice(index, 1);\n }\n el.className = classes.join(\" \");\n};\nexports.toggleCssClass = function (el, name) {\n var classes = el.className.split(/\\s+/g), add = true;\n while (true) {\n var index = classes.indexOf(name);\n if (index == -1) {\n break;\n }\n add = false;\n classes.splice(index, 1);\n }\n if (add)\n classes.push(name);\n el.className = classes.join(\" \");\n return add;\n};\nexports.setCssClass = function (node, className, include) {\n if (include) {\n exports.addCssClass(node, className);\n }\n else {\n exports.removeCssClass(node, className);\n }\n};\nexports.hasCssString = function (id, doc) {\n var index = 0, sheets;\n doc = doc || document;\n if ((sheets = doc.querySelectorAll(\"style\"))) {\n while (index < sheets.length) {\n if (sheets[index++].id === id) {\n return true;\n }\n }\n }\n};\nexports.removeElementById = function (id, doc) {\n doc = doc || document;\n if (doc.getElementById(id)) {\n doc.getElementById(id).remove();\n }\n};\nvar strictCSP;\nvar cssCache = [];\nexports.useStrictCSP = function (value) {\n strictCSP = value;\n if (value == false)\n insertPendingStyles();\n else if (!cssCache)\n cssCache = [];\n};\nfunction insertPendingStyles() {\n var cache = cssCache;\n cssCache = null;\n cache && cache.forEach(function (item) {\n importCssString(item[0], item[1]);\n });\n}\nfunction importCssString(cssText, id, target) {\n if (typeof document == \"undefined\")\n return;\n if (cssCache) {\n if (target) {\n insertPendingStyles();\n }\n else if (target === false) {\n return cssCache.push([cssText, id]);\n }\n }\n if (strictCSP)\n return;\n var container = target;\n if (!target || !target.getRootNode) {\n container = document;\n }\n else {\n container = target.getRootNode();\n if (!container || container == target)\n container = document;\n }\n var doc = container.ownerDocument || container;\n if (id && exports.hasCssString(id, container))\n return null;\n if (id)\n cssText += \"\\n/*# sourceURL=ace/css/\" + id + \" */\";\n var style = exports.createElement(\"style\");\n style.appendChild(doc.createTextNode(cssText));\n if (id)\n style.id = id;\n if (container == doc)\n container = exports.getDocumentHead(doc);\n container.insertBefore(style, container.firstChild);\n}\nexports.importCssString = importCssString;\nexports.importCssStylsheet = function (uri, doc) {\n exports.buildDom([\"link\", { rel: \"stylesheet\", href: uri }], exports.getDocumentHead(doc));\n};\nexports.scrollbarWidth = function (doc) {\n var inner = exports.createElement(\"ace_inner\");\n inner.style.width = \"100%\";\n inner.style.minWidth = \"0px\";\n inner.style.height = \"200px\";\n inner.style.display = \"block\";\n var outer = exports.createElement(\"ace_outer\");\n var style = outer.style;\n style.position = \"absolute\";\n style.left = \"-10000px\";\n style.overflow = \"hidden\";\n style.width = \"200px\";\n style.minWidth = \"0px\";\n style.height = \"150px\";\n style.display = \"block\";\n outer.appendChild(inner);\n var body = (doc && doc.documentElement) || (document && document.documentElement);\n if (!body)\n return 0;\n body.appendChild(outer);\n var noScrollbar = inner.offsetWidth;\n style.overflow = \"scroll\";\n var withScrollbar = inner.offsetWidth;\n if (noScrollbar === withScrollbar) {\n withScrollbar = outer.clientWidth;\n }\n body.removeChild(outer);\n return noScrollbar - withScrollbar;\n};\nexports.computedStyle = function (element, style) {\n return window.getComputedStyle(element, \"\") || {};\n};\nexports.setStyle = function (styles, property, value) {\n if (styles[property] !== value) {\n styles[property] = value;\n }\n};\nexports.HAS_CSS_ANIMATION = false;\nexports.HAS_CSS_TRANSFORMS = false;\nexports.HI_DPI = useragent.isWin\n ? typeof window !== \"undefined\" && window.devicePixelRatio >= 1.5\n : true;\nif (useragent.isChromeOS)\n exports.HI_DPI = false;\nif (typeof document !== \"undefined\") {\n var div = document.createElement(\"div\");\n if (exports.HI_DPI && div.style.transform !== undefined)\n exports.HAS_CSS_TRANSFORMS = true;\n if (!useragent.isEdge && typeof div.style.animationName !== \"undefined\")\n exports.HAS_CSS_ANIMATION = true;\n div = null;\n}\nif (exports.HAS_CSS_TRANSFORMS) {\n exports.translate = function (element, tx, ty) {\n element.style.transform = \"translate(\" + Math.round(tx) + \"px, \" + Math.round(ty) + \"px)\";\n };\n}\nelse {\n exports.translate = function (element, tx, ty) {\n element.style.top = Math.round(ty) + \"px\";\n element.style.left = Math.round(tx) + \"px\";\n };\n}\n\n});\n\nace.define(\"ace/lib/net\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"], function(require, exports, module){/*\n * based on code from:\n *\n * @license RequireJS text 0.25.0 Copyright (c) 2010-2011, The Dojo Foundation All Rights Reserved.\n * Available via the MIT or new BSD license.\n * see: http://github.com/jrburke/requirejs for details\n */\n\"use strict\";\nvar dom = require(\"./dom\");\nexports.get = function (url, callback) {\n var xhr = new XMLHttpRequest();\n xhr.open('GET', url, true);\n xhr.onreadystatechange = function () {\n if (xhr.readyState === 4) {\n callback(xhr.responseText);\n }\n };\n xhr.send(null);\n};\nexports.loadScript = function (path, callback) {\n var head = dom.getDocumentHead();\n var s = document.createElement('script');\n s.src = path;\n head.appendChild(s);\n s.onload = s.onreadystatechange = function (_, isAbort) {\n if (isAbort || !s.readyState || s.readyState == \"loaded\" || s.readyState == \"complete\") {\n s = s.onload = s.onreadystatechange = null;\n if (!isAbort)\n callback();\n }\n };\n};\nexports.qualifyURL = function (url) {\n var a = document.createElement('a');\n a.href = url;\n return a.href;\n};\n\n});\n\nace.define(\"ace/lib/oop\",[\"require\",\"exports\",\"module\"], function(require, exports, module){\"use strict\";\nexports.inherits = function (ctor, superCtor) {\n ctor.super_ = superCtor;\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n};\nexports.mixin = function (obj, mixin) {\n for (var key in mixin) {\n obj[key] = mixin[key];\n }\n return obj;\n};\nexports.implement = function (proto, mixin) {\n exports.mixin(proto, mixin);\n};\n\n});\n\nace.define(\"ace/lib/event_emitter\",[\"require\",\"exports\",\"module\"], function(require, exports, module){\"use strict\";\nvar EventEmitter = {};\nvar stopPropagation = function () { this.propagationStopped = true; };\nvar preventDefault = function () { this.defaultPrevented = true; };\nEventEmitter._emit =\n EventEmitter._dispatchEvent = function (eventName, e) {\n this._eventRegistry || (this._eventRegistry = {});\n this._defaultHandlers || (this._defaultHandlers = {});\n var listeners = this._eventRegistry[eventName] || [];\n var defaultHandler = this._defaultHandlers[eventName];\n if (!listeners.length && !defaultHandler)\n return;\n if (typeof e != \"object\" || !e)\n e = {};\n if (!e.type)\n e.type = eventName;\n if (!e.stopPropagation)\n e.stopPropagation = stopPropagation;\n if (!e.preventDefault)\n e.preventDefault = preventDefault;\n listeners = listeners.slice();\n for (var i = 0; i < listeners.length; i++) {\n listeners[i](e, this);\n if (e.propagationStopped)\n break;\n }\n if (defaultHandler && !e.defaultPrevented)\n return defaultHandler(e, this);\n };\nEventEmitter._signal = function (eventName, e) {\n var listeners = (this._eventRegistry || {})[eventName];\n if (!listeners)\n return;\n listeners = listeners.slice();\n for (var i = 0; i < listeners.length; i++)\n listeners[i](e, this);\n};\nEventEmitter.once = function (eventName, callback) {\n var _self = this;\n this.on(eventName, function newCallback() {\n _self.off(eventName, newCallback);\n callback.apply(null, arguments);\n });\n if (!callback) {\n return new Promise(function (resolve) {\n callback = resolve;\n });\n }\n};\nEventEmitter.setDefaultHandler = function (eventName, callback) {\n var handlers = this._defaultHandlers;\n if (!handlers)\n handlers = this._defaultHandlers = { _disabled_: {} };\n if (handlers[eventName]) {\n var old = handlers[eventName];\n var disabled = handlers._disabled_[eventName];\n if (!disabled)\n handlers._disabled_[eventName] = disabled = [];\n disabled.push(old);\n var i = disabled.indexOf(callback);\n if (i != -1)\n disabled.splice(i, 1);\n }\n handlers[eventName] = callback;\n};\nEventEmitter.removeDefaultHandler = function (eventName, callback) {\n var handlers = this._defaultHandlers;\n if (!handlers)\n return;\n var disabled = handlers._disabled_[eventName];\n if (handlers[eventName] == callback) {\n if (disabled)\n this.setDefaultHandler(eventName, disabled.pop());\n }\n else if (disabled) {\n var i = disabled.indexOf(callback);\n if (i != -1)\n disabled.splice(i, 1);\n }\n};\nEventEmitter.on =\n EventEmitter.addEventListener = function (eventName, callback, capturing) {\n this._eventRegistry = this._eventRegistry || {};\n var listeners = this._eventRegistry[eventName];\n if (!listeners)\n listeners = this._eventRegistry[eventName] = [];\n if (listeners.indexOf(callback) == -1)\n listeners[capturing ? \"unshift\" : \"push\"](callback);\n return callback;\n };\nEventEmitter.off =\n EventEmitter.removeListener =\n EventEmitter.removeEventListener = function (eventName, callback) {\n this._eventRegistry = this._eventRegistry || {};\n var listeners = this._eventRegistry[eventName];\n if (!listeners)\n return;\n var index = listeners.indexOf(callback);\n if (index !== -1)\n listeners.splice(index, 1);\n };\nEventEmitter.removeAllListeners = function (eventName) {\n if (!eventName)\n this._eventRegistry = this._defaultHandlers = undefined;\n if (this._eventRegistry)\n this._eventRegistry[eventName] = undefined;\n if (this._defaultHandlers)\n this._defaultHandlers[eventName] = undefined;\n};\nexports.EventEmitter = EventEmitter;\n\n});\n\nace.define(\"ace/lib/report_error\",[\"require\",\"exports\",\"module\"], function(require, exports, module){exports.reportError = function reportError(msg, data) {\n var e = new Error(msg);\n e.data = data;\n if (typeof console == \"object\" && console.error)\n console.error(e);\n setTimeout(function () { throw e; });\n};\n\n});\n\nace.define(\"ace/lib/app_config\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/event_emitter\",\"ace/lib/report_error\"], function(require, exports, module){\"no use strict\";\nvar oop = require(\"./oop\");\nvar EventEmitter = require(\"./event_emitter\").EventEmitter;\nvar reportError = require(\"./report_error\").reportError;\nvar optionsProvider = {\n setOptions: function (optList) {\n Object.keys(optList).forEach(function (key) {\n this.setOption(key, optList[key]);\n }, this);\n },\n getOptions: function (optionNames) {\n var result = {};\n if (!optionNames) {\n var options = this.$options;\n optionNames = Object.keys(options).filter(function (key) {\n return !options[key].hidden;\n });\n }\n else if (!Array.isArray(optionNames)) {\n result = optionNames;\n optionNames = Object.keys(result);\n }\n optionNames.forEach(function (key) {\n result[key] = this.getOption(key);\n }, this);\n return result;\n },\n setOption: function (name, value) {\n if (this[\"$\" + name] === value)\n return;\n var opt = this.$options[name];\n if (!opt) {\n return warn('misspelled option \"' + name + '\"');\n }\n if (opt.forwardTo)\n return this[opt.forwardTo] && this[opt.forwardTo].setOption(name, value);\n if (!opt.handlesSet)\n this[\"$\" + name] = value;\n if (opt && opt.set)\n opt.set.call(this, value);\n },\n getOption: function (name) {\n var opt = this.$options[name];\n if (!opt) {\n return warn('misspelled option \"' + name + '\"');\n }\n if (opt.forwardTo)\n return this[opt.forwardTo] && this[opt.forwardTo].getOption(name);\n return opt && opt.get ? opt.get.call(this) : this[\"$\" + name];\n }\n};\nfunction warn(message) {\n if (typeof console != \"undefined\" && console.warn)\n console.warn.apply(console, arguments);\n}\nvar messages;\nvar AppConfig = /** @class */ (function () {\n function AppConfig() {\n this.$defaultOptions = {};\n }\n AppConfig.prototype.defineOptions = function (obj, path, options) {\n if (!obj.$options)\n this.$defaultOptions[path] = obj.$options = {};\n Object.keys(options).forEach(function (key) {\n var opt = options[key];\n if (typeof opt == \"string\")\n opt = { forwardTo: opt };\n opt.name || (opt.name = key);\n obj.$options[opt.name] = opt;\n if (\"initialValue\" in opt)\n obj[\"$\" + opt.name] = opt.initialValue;\n });\n oop.implement(obj, optionsProvider);\n return this;\n };\n AppConfig.prototype.resetOptions = function (obj) {\n Object.keys(obj.$options).forEach(function (key) {\n var opt = obj.$options[key];\n if (\"value\" in opt)\n obj.setOption(key, opt.value);\n });\n };\n AppConfig.prototype.setDefaultValue = function (path, name, value) {\n if (!path) {\n for (path in this.$defaultOptions)\n if (this.$defaultOptions[path][name])\n break;\n if (!this.$defaultOptions[path][name])\n return false;\n }\n var opts = this.$defaultOptions[path] || (this.$defaultOptions[path] = {});\n if (opts[name]) {\n if (opts.forwardTo)\n this.setDefaultValue(opts.forwardTo, name, value);\n else\n opts[name].value = value;\n }\n };\n AppConfig.prototype.setDefaultValues = function (path, optionHash) {\n Object.keys(optionHash).forEach(function (key) {\n this.setDefaultValue(path, key, optionHash[key]);\n }, this);\n };\n AppConfig.prototype.setMessages = function (value) {\n messages = value;\n };\n AppConfig.prototype.nls = function (string, params) {\n if (messages && !messages[string]) {\n warn(\"No message found for '\" + string + \"' in the provided messages, falling back to default English message.\");\n }\n var translated = messages && messages[string] || string;\n if (params) {\n translated = translated.replace(/\\$(\\$|[\\d]+)/g, function (_, name) {\n if (name == \"$\")\n return \"$\";\n return params[name];\n });\n }\n return translated;\n };\n return AppConfig;\n}());\nAppConfig.prototype.warn = warn;\nAppConfig.prototype.reportError = reportError;\noop.implement(AppConfig.prototype, EventEmitter);\nexports.AppConfig = AppConfig;\n\n});\n\nace.define(\"ace/theme/textmate-css\",[\"require\",\"exports\",\"module\"], function(require, exports, module){module.exports = \".ace-tm .ace_gutter {\\n background: #f0f0f0;\\n color: #333;\\n}\\n\\n.ace-tm .ace_print-margin {\\n width: 1px;\\n background: #e8e8e8;\\n}\\n\\n.ace-tm .ace_fold {\\n background-color: #6B72E6;\\n}\\n\\n.ace-tm {\\n background-color: #FFFFFF;\\n color: black;\\n}\\n\\n.ace-tm .ace_cursor {\\n color: black;\\n}\\n \\n.ace-tm .ace_invisible {\\n color: rgb(191, 191, 191);\\n}\\n\\n.ace-tm .ace_storage,\\n.ace-tm .ace_keyword {\\n color: blue;\\n}\\n\\n.ace-tm .ace_constant {\\n color: rgb(197, 6, 11);\\n}\\n\\n.ace-tm .ace_constant.ace_buildin {\\n color: rgb(88, 72, 246);\\n}\\n\\n.ace-tm .ace_constant.ace_language {\\n color: rgb(88, 92, 246);\\n}\\n\\n.ace-tm .ace_constant.ace_library {\\n color: rgb(6, 150, 14);\\n}\\n\\n.ace-tm .ace_invalid {\\n background-color: rgba(255, 0, 0, 0.1);\\n color: red;\\n}\\n\\n.ace-tm .ace_support.ace_function {\\n color: rgb(60, 76, 114);\\n}\\n\\n.ace-tm .ace_support.ace_constant {\\n color: rgb(6, 150, 14);\\n}\\n\\n.ace-tm .ace_support.ace_type,\\n.ace-tm .ace_support.ace_class {\\n color: rgb(109, 121, 222);\\n}\\n\\n.ace-tm .ace_keyword.ace_operator {\\n color: rgb(104, 118, 135);\\n}\\n\\n.ace-tm .ace_string {\\n color: rgb(3, 106, 7);\\n}\\n\\n.ace-tm .ace_comment {\\n color: rgb(76, 136, 107);\\n}\\n\\n.ace-tm .ace_comment.ace_doc {\\n color: rgb(0, 102, 255);\\n}\\n\\n.ace-tm .ace_comment.ace_doc.ace_tag {\\n color: rgb(128, 159, 191);\\n}\\n\\n.ace-tm .ace_constant.ace_numeric {\\n color: rgb(0, 0, 205);\\n}\\n\\n.ace-tm .ace_variable {\\n color: rgb(49, 132, 149);\\n}\\n\\n.ace-tm .ace_xml-pe {\\n color: rgb(104, 104, 91);\\n}\\n\\n.ace-tm .ace_entity.ace_name.ace_function {\\n color: #0000A2;\\n}\\n\\n\\n.ace-tm .ace_heading {\\n color: rgb(12, 7, 255);\\n}\\n\\n.ace-tm .ace_list {\\n color:rgb(185, 6, 144);\\n}\\n\\n.ace-tm .ace_meta.ace_tag {\\n color:rgb(0, 22, 142);\\n}\\n\\n.ace-tm .ace_string.ace_regex {\\n color: rgb(255, 0, 0)\\n}\\n\\n.ace-tm .ace_marker-layer .ace_selection {\\n background: rgb(181, 213, 255);\\n}\\n.ace-tm.ace_multiselect .ace_selection.ace_start {\\n box-shadow: 0 0 3px 0px white;\\n}\\n.ace-tm .ace_marker-layer .ace_step {\\n background: rgb(252, 255, 0);\\n}\\n\\n.ace-tm .ace_marker-layer .ace_stack {\\n background: rgb(164, 229, 101);\\n}\\n\\n.ace-tm .ace_marker-layer .ace_bracket {\\n margin: -1px 0 0 -1px;\\n border: 1px solid rgb(192, 192, 192);\\n}\\n\\n.ace-tm .ace_marker-layer .ace_active-line {\\n background: rgba(0, 0, 0, 0.07);\\n}\\n\\n.ace-tm .ace_gutter-active-line {\\n background-color : #dcdcdc;\\n}\\n\\n.ace-tm .ace_marker-layer .ace_selected-word {\\n background: rgb(250, 250, 255);\\n border: 1px solid rgb(200, 200, 250);\\n}\\n\\n.ace-tm .ace_indent-guide {\\n background: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==\\\") right repeat-y;\\n}\\n\\n.ace-tm .ace_indent-guide-active {\\n background: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAAZSURBVHjaYvj///9/hivKyv8BAAAA//8DACLqBhbvk+/eAAAAAElFTkSuQmCC\\\") right repeat-y;\\n}\\n\";\n\n});\n\nace.define(\"ace/theme/textmate\",[\"require\",\"exports\",\"module\",\"ace/theme/textmate-css\",\"ace/lib/dom\"], function(require, exports, module){\"use strict\";\nexports.isDark = false;\nexports.cssClass = \"ace-tm\";\nexports.cssText = require(\"./textmate-css\");\nexports.$id = \"ace/theme/textmate\";\nvar dom = require(\"../lib/dom\");\ndom.importCssString(exports.cssText, exports.cssClass, false);\n\n});\n\nace.define(\"ace/config\",[\"require\",\"exports\",\"module\",\"ace/lib/lang\",\"ace/lib/net\",\"ace/lib/dom\",\"ace/lib/app_config\",\"ace/theme/textmate\"], function(require, exports, module){\"no use strict\";\nvar lang = require(\"./lib/lang\");\nvar net = require(\"./lib/net\");\nvar dom = require(\"./lib/dom\");\nvar AppConfig = require(\"./lib/app_config\").AppConfig;\nmodule.exports = exports = new AppConfig();\nvar options = {\n packaged: false,\n workerPath: null,\n modePath: null,\n themePath: null,\n basePath: \"\",\n suffix: \".js\",\n $moduleUrls: {},\n loadWorkerFromBlob: true,\n sharedPopups: false,\n useStrictCSP: null\n};\nexports.get = function (key) {\n if (!options.hasOwnProperty(key))\n throw new Error(\"Unknown config key: \" + key);\n return options[key];\n};\nexports.set = function (key, value) {\n if (options.hasOwnProperty(key))\n options[key] = value;\n else if (this.setDefaultValue(\"\", key, value) == false)\n throw new Error(\"Unknown config key: \" + key);\n if (key == \"useStrictCSP\")\n dom.useStrictCSP(value);\n};\nexports.all = function () {\n return lang.copyObject(options);\n};\nexports.$modes = {};\nexports.moduleUrl = function (name, component) {\n if (options.$moduleUrls[name])\n return options.$moduleUrls[name];\n var parts = name.split(\"/\");\n component = component || parts[parts.length - 2] || \"\";\n var sep = component == \"snippets\" ? \"/\" : \"-\";\n var base = parts[parts.length - 1];\n if (component == \"worker\" && sep == \"-\") {\n var re = new RegExp(\"^\" + component + \"[\\\\-_]|[\\\\-_]\" + component + \"$\", \"g\");\n base = base.replace(re, \"\");\n }\n if ((!base || base == component) && parts.length > 1)\n base = parts[parts.length - 2];\n var path = options[component + \"Path\"];\n if (path == null) {\n path = options.basePath;\n }\n else if (sep == \"/\") {\n component = sep = \"\";\n }\n if (path && path.slice(-1) != \"/\")\n path += \"/\";\n return path + component + sep + base + this.get(\"suffix\");\n};\nexports.setModuleUrl = function (name, subst) {\n return options.$moduleUrls[name] = subst;\n};\nvar loader = function (moduleName, cb) {\n if (moduleName === \"ace/theme/textmate\" || moduleName === \"./theme/textmate\")\n return cb(null, require(\"./theme/textmate\"));\n if (customLoader)\n return customLoader(moduleName, cb);\n console.error(\"loader is not configured\");\n};\nvar customLoader;\nexports.setLoader = function (cb) {\n customLoader = cb;\n};\nexports.dynamicModules = Object.create(null);\nexports.$loading = {};\nexports.$loaded = {};\nexports.loadModule = function (moduleName, onLoad) {\n var loadedModule, moduleType;\n if (Array.isArray(moduleName)) {\n moduleType = moduleName[0];\n moduleName = moduleName[1];\n }\n var load = function (module) {\n if (module && !exports.$loading[moduleName])\n return onLoad && onLoad(module);\n if (!exports.$loading[moduleName])\n exports.$loading[moduleName] = [];\n exports.$loading[moduleName].push(onLoad);\n if (exports.$loading[moduleName].length > 1)\n return;\n var afterLoad = function () {\n loader(moduleName, function (err, module) {\n if (module)\n exports.$loaded[moduleName] = module;\n exports._emit(\"load.module\", { name: moduleName, module: module });\n var listeners = exports.$loading[moduleName];\n exports.$loading[moduleName] = null;\n listeners.forEach(function (onLoad) {\n onLoad && onLoad(module);\n });\n });\n };\n if (!exports.get(\"packaged\"))\n return afterLoad();\n net.loadScript(exports.moduleUrl(moduleName, moduleType), afterLoad);\n reportErrorIfPathIsNotConfigured();\n };\n if (exports.dynamicModules[moduleName]) {\n exports.dynamicModules[moduleName]().then(function (module) {\n if (module.default) {\n load(module.default);\n }\n else {\n load(module);\n }\n });\n }\n else {\n try {\n loadedModule = this.$require(moduleName);\n }\n catch (e) { }\n load(loadedModule || exports.$loaded[moduleName]);\n }\n};\nexports.$require = function (moduleName) {\n if (typeof module.require == \"function\") {\n var req = \"require\";\n return module[req](moduleName);\n }\n};\nexports.setModuleLoader = function (moduleName, onLoad) {\n exports.dynamicModules[moduleName] = onLoad;\n};\nvar reportErrorIfPathIsNotConfigured = function () {\n if (!options.basePath && !options.workerPath\n && !options.modePath && !options.themePath\n && !Object.keys(options.$moduleUrls).length) {\n console.error(\"Unable to infer path to ace from script src,\", \"use ace.config.set('basePath', 'path') to enable dynamic loading of modes and themes\", \"or with webpack use ace/webpack-resolver\");\n reportErrorIfPathIsNotConfigured = function () { };\n }\n};\nexports.version = \"1.32.0\";\n\n});\n\nace.define(\"ace/loader_build\",[\"require\",\"exports\",\"module\",\"ace/lib/fixoldbrowsers\",\"ace/config\"], function(require, exports, module) {\n\"use strict\";\n\nrequire(\"./lib/fixoldbrowsers\");\nvar config = require(\"./config\");\nconfig.setLoader(function(moduleName, cb) {\n require([moduleName], function(module) {\n cb(null, module);\n });\n});\n\nvar global = (function() {\n return this || typeof window != \"undefined\" && window;\n})();\n\nmodule.exports = function(ace) {\n config.init = init;\n config.$require = require;\n ace.require = require;\n\n if (typeof define === \"function\")\n ace.define = define;\n};\ninit(true);function init(packaged) {\n\n if (!global || !global.document)\n return;\n \n config.set(\"packaged\", packaged || require.packaged || module.packaged || (global.define && define.packaged));\n\n var scriptOptions = {};\n var scriptUrl = \"\";\n var currentScript = (document.currentScript || document._currentScript ); // native or polyfill\n var currentDocument = currentScript && currentScript.ownerDocument || document;\n \n if (currentScript && currentScript.src) {\n scriptUrl = currentScript.src.split(/[?#]/)[0].split(\"/\").slice(0, -1).join(\"/\") || \"\";\n }\n \n var scripts = currentDocument.getElementsByTagName(\"script\");\n for (var i=0; i [\" + this.end.row + \"/\" + this.end.column + \"]\");\n };\n Range.prototype.contains = function (row, column) {\n return this.compare(row, column) == 0;\n };\n Range.prototype.compareRange = function (range) {\n var cmp, end = range.end, start = range.start;\n cmp = this.compare(end.row, end.column);\n if (cmp == 1) {\n cmp = this.compare(start.row, start.column);\n if (cmp == 1) {\n return 2;\n }\n else if (cmp == 0) {\n return 1;\n }\n else {\n return 0;\n }\n }\n else if (cmp == -1) {\n return -2;\n }\n else {\n cmp = this.compare(start.row, start.column);\n if (cmp == -1) {\n return -1;\n }\n else if (cmp == 1) {\n return 42;\n }\n else {\n return 0;\n }\n }\n };\n Range.prototype.comparePoint = function (p) {\n return this.compare(p.row, p.column);\n };\n Range.prototype.containsRange = function (range) {\n return this.comparePoint(range.start) == 0 && this.comparePoint(range.end) == 0;\n };\n Range.prototype.intersects = function (range) {\n var cmp = this.compareRange(range);\n return (cmp == -1 || cmp == 0 || cmp == 1);\n };\n Range.prototype.isEnd = function (row, column) {\n return this.end.row == row && this.end.column == column;\n };\n Range.prototype.isStart = function (row, column) {\n return this.start.row == row && this.start.column == column;\n };\n Range.prototype.setStart = function (row, column) {\n if (typeof row == \"object\") {\n this.start.column = row.column;\n this.start.row = row.row;\n }\n else {\n this.start.row = row;\n this.start.column = column;\n }\n };\n Range.prototype.setEnd = function (row, column) {\n if (typeof row == \"object\") {\n this.end.column = row.column;\n this.end.row = row.row;\n }\n else {\n this.end.row = row;\n this.end.column = column;\n }\n };\n Range.prototype.inside = function (row, column) {\n if (this.compare(row, column) == 0) {\n if (this.isEnd(row, column) || this.isStart(row, column)) {\n return false;\n }\n else {\n return true;\n }\n }\n return false;\n };\n Range.prototype.insideStart = function (row, column) {\n if (this.compare(row, column) == 0) {\n if (this.isEnd(row, column)) {\n return false;\n }\n else {\n return true;\n }\n }\n return false;\n };\n Range.prototype.insideEnd = function (row, column) {\n if (this.compare(row, column) == 0) {\n if (this.isStart(row, column)) {\n return false;\n }\n else {\n return true;\n }\n }\n return false;\n };\n Range.prototype.compare = function (row, column) {\n if (!this.isMultiLine()) {\n if (row === this.start.row) {\n return column < this.start.column ? -1 : (column > this.end.column ? 1 : 0);\n }\n }\n if (row < this.start.row)\n return -1;\n if (row > this.end.row)\n return 1;\n if (this.start.row === row)\n return column >= this.start.column ? 0 : -1;\n if (this.end.row === row)\n return column <= this.end.column ? 0 : 1;\n return 0;\n };\n Range.prototype.compareStart = function (row, column) {\n if (this.start.row == row && this.start.column == column) {\n return -1;\n }\n else {\n return this.compare(row, column);\n }\n };\n Range.prototype.compareEnd = function (row, column) {\n if (this.end.row == row && this.end.column == column) {\n return 1;\n }\n else {\n return this.compare(row, column);\n }\n };\n Range.prototype.compareInside = function (row, column) {\n if (this.end.row == row && this.end.column == column) {\n return 1;\n }\n else if (this.start.row == row && this.start.column == column) {\n return -1;\n }\n else {\n return this.compare(row, column);\n }\n };\n Range.prototype.clipRows = function (firstRow, lastRow) {\n if (this.end.row > lastRow)\n var end = { row: lastRow + 1, column: 0 };\n else if (this.end.row < firstRow)\n var end = { row: firstRow, column: 0 };\n if (this.start.row > lastRow)\n var start = { row: lastRow + 1, column: 0 };\n else if (this.start.row < firstRow)\n var start = { row: firstRow, column: 0 };\n return Range.fromPoints(start || this.start, end || this.end);\n };\n Range.prototype.extend = function (row, column) {\n var cmp = this.compare(row, column);\n if (cmp == 0)\n return this;\n else if (cmp == -1)\n var start = { row: row, column: column };\n else\n var end = { row: row, column: column };\n return Range.fromPoints(start || this.start, end || this.end);\n };\n Range.prototype.isEmpty = function () {\n return (this.start.row === this.end.row && this.start.column === this.end.column);\n };\n Range.prototype.isMultiLine = function () {\n return (this.start.row !== this.end.row);\n };\n Range.prototype.clone = function () {\n return Range.fromPoints(this.start, this.end);\n };\n Range.prototype.collapseRows = function () {\n if (this.end.column == 0)\n return new Range(this.start.row, 0, Math.max(this.start.row, this.end.row - 1), 0);\n else\n return new Range(this.start.row, 0, this.end.row, 0);\n };\n Range.prototype.toScreenRange = function (session) {\n var screenPosStart = session.documentToScreenPosition(this.start);\n var screenPosEnd = session.documentToScreenPosition(this.end);\n return new Range(screenPosStart.row, screenPosStart.column, screenPosEnd.row, screenPosEnd.column);\n };\n Range.prototype.moveBy = function (row, column) {\n this.start.row += row;\n this.start.column += column;\n this.end.row += row;\n this.end.column += column;\n };\n return Range;\n}());\nRange.fromPoints = function (start, end) {\n return new Range(start.row, start.column, end.row, end.column);\n};\nRange.comparePoints = comparePoints;\nRange.comparePoints = function (p1, p2) {\n return p1.row - p2.row || p1.column - p2.column;\n};\nexports.Range = Range;\n\n});\n\nace.define(\"ace/lib/keys\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\"], function(require, exports, module){/*! @license\n==========================================================================\nSproutCore -- JavaScript Application Framework\ncopyright 2006-2009, Sprout Systems Inc., Apple Inc. and contributors.\n\nPermission is hereby granted, free of charge, to any person obtaining a\ncopy of this software and associated documentation files (the \"Software\"),\nto deal in the Software without restriction, including without limitation\nthe rights to use, copy, modify, merge, publish, distribute, sublicense,\nand/or sell copies of the Software, and to permit persons to whom the\nSoftware is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\nFROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n\nSproutCore and the SproutCore logo are trademarks of Sprout Systems, Inc.\n\nFor more information about SproutCore, visit http://www.sproutcore.com\n\n\n==========================================================================\n@license */\n\"use strict\";\nvar oop = require(\"./oop\");\nvar Keys = (function () {\n var ret = {\n MODIFIER_KEYS: {\n 16: 'Shift', 17: 'Ctrl', 18: 'Alt', 224: 'Meta',\n 91: 'MetaLeft', 92: 'MetaRight', 93: 'ContextMenu'\n },\n KEY_MODS: {\n \"ctrl\": 1, \"alt\": 2, \"option\": 2, \"shift\": 4,\n \"super\": 8, \"meta\": 8, \"command\": 8, \"cmd\": 8,\n \"control\": 1\n },\n FUNCTION_KEYS: {\n 8: \"Backspace\",\n 9: \"Tab\",\n 13: \"Return\",\n 19: \"Pause\",\n 27: \"Esc\",\n 32: \"Space\",\n 33: \"PageUp\",\n 34: \"PageDown\",\n 35: \"End\",\n 36: \"Home\",\n 37: \"Left\",\n 38: \"Up\",\n 39: \"Right\",\n 40: \"Down\",\n 44: \"Print\",\n 45: \"Insert\",\n 46: \"Delete\",\n 96: \"Numpad0\",\n 97: \"Numpad1\",\n 98: \"Numpad2\",\n 99: \"Numpad3\",\n 100: \"Numpad4\",\n 101: \"Numpad5\",\n 102: \"Numpad6\",\n 103: \"Numpad7\",\n 104: \"Numpad8\",\n 105: \"Numpad9\",\n '-13': \"NumpadEnter\",\n 112: \"F1\",\n 113: \"F2\",\n 114: \"F3\",\n 115: \"F4\",\n 116: \"F5\",\n 117: \"F6\",\n 118: \"F7\",\n 119: \"F8\",\n 120: \"F9\",\n 121: \"F10\",\n 122: \"F11\",\n 123: \"F12\",\n 144: \"Numlock\",\n 145: \"Scrolllock\"\n },\n PRINTABLE_KEYS: {\n 32: ' ', 48: '0', 49: '1', 50: '2', 51: '3', 52: '4', 53: '5',\n 54: '6', 55: '7', 56: '8', 57: '9', 59: ';', 61: '=', 65: 'a',\n 66: 'b', 67: 'c', 68: 'd', 69: 'e', 70: 'f', 71: 'g', 72: 'h',\n 73: 'i', 74: 'j', 75: 'k', 76: 'l', 77: 'm', 78: 'n', 79: 'o',\n 80: 'p', 81: 'q', 82: 'r', 83: 's', 84: 't', 85: 'u', 86: 'v',\n 87: 'w', 88: 'x', 89: 'y', 90: 'z', 107: '+', 109: '-', 110: '.',\n 186: ';', 187: '=', 188: ',', 189: '-', 190: '.', 191: '/', 192: '`',\n 219: '[', 220: '\\\\', 221: ']', 222: \"'\", 111: '/', 106: '*'\n }\n };\n ret.PRINTABLE_KEYS[173] = '-';\n var name, i;\n for (i in ret.FUNCTION_KEYS) {\n name = ret.FUNCTION_KEYS[i].toLowerCase();\n ret[name] = parseInt(i, 10);\n }\n for (i in ret.PRINTABLE_KEYS) {\n name = ret.PRINTABLE_KEYS[i].toLowerCase();\n ret[name] = parseInt(i, 10);\n }\n oop.mixin(ret, ret.MODIFIER_KEYS);\n oop.mixin(ret, ret.PRINTABLE_KEYS);\n oop.mixin(ret, ret.FUNCTION_KEYS);\n ret.enter = ret[\"return\"];\n ret.escape = ret.esc;\n ret.del = ret[\"delete\"];\n (function () {\n var mods = [\"cmd\", \"ctrl\", \"alt\", \"shift\"];\n for (var i = Math.pow(2, mods.length); i--;) {\n ret.KEY_MODS[i] = mods.filter(function (x) {\n return i & ret.KEY_MODS[x];\n }).join(\"-\") + \"-\";\n }\n })();\n ret.KEY_MODS[0] = \"\";\n ret.KEY_MODS[-1] = \"input-\";\n return ret;\n})();\noop.mixin(exports, Keys);\nexports.default = exports;\nexports.keyCodeToString = function (keyCode) {\n var keyString = Keys[keyCode];\n if (typeof keyString != \"string\")\n keyString = String.fromCharCode(keyCode);\n return keyString.toLowerCase();\n};\n\n});\n\nace.define(\"ace/lib/event\",[\"require\",\"exports\",\"module\",\"ace/lib/keys\",\"ace/lib/useragent\"], function(require, exports, module){\"use strict\";\nvar keys = require(\"./keys\");\nvar useragent = require(\"./useragent\");\nvar pressedKeys = null;\nvar ts = 0;\nvar activeListenerOptions;\nfunction detectListenerOptionsSupport() {\n activeListenerOptions = false;\n try {\n document.createComment(\"\").addEventListener(\"test\", function () { }, {\n get passive() {\n activeListenerOptions = { passive: false };\n }\n });\n }\n catch (e) { }\n}\nfunction getListenerOptions() {\n if (activeListenerOptions == undefined)\n detectListenerOptionsSupport();\n return activeListenerOptions;\n}\nfunction EventListener(elem, type, callback) {\n this.elem = elem;\n this.type = type;\n this.callback = callback;\n}\nEventListener.prototype.destroy = function () {\n removeListener(this.elem, this.type, this.callback);\n this.elem = this.type = this.callback = undefined;\n};\nvar addListener = exports.addListener = function (elem, type, callback, destroyer) {\n elem.addEventListener(type, callback, getListenerOptions());\n if (destroyer)\n destroyer.$toDestroy.push(new EventListener(elem, type, callback));\n};\nvar removeListener = exports.removeListener = function (elem, type, callback) {\n elem.removeEventListener(type, callback, getListenerOptions());\n};\nexports.stopEvent = function (e) {\n exports.stopPropagation(e);\n exports.preventDefault(e);\n return false;\n};\nexports.stopPropagation = function (e) {\n if (e.stopPropagation)\n e.stopPropagation();\n};\nexports.preventDefault = function (e) {\n if (e.preventDefault)\n e.preventDefault();\n};\nexports.getButton = function (e) {\n if (e.type == \"dblclick\")\n return 0;\n if (e.type == \"contextmenu\" || (useragent.isMac && (e.ctrlKey && !e.altKey && !e.shiftKey)))\n return 2;\n return e.button;\n};\nexports.capture = function (el, eventHandler, releaseCaptureHandler) {\n var ownerDocument = el && el.ownerDocument || document;\n function onMouseUp(e) {\n eventHandler && eventHandler(e);\n releaseCaptureHandler && releaseCaptureHandler(e);\n removeListener(ownerDocument, \"mousemove\", eventHandler);\n removeListener(ownerDocument, \"mouseup\", onMouseUp);\n removeListener(ownerDocument, \"dragstart\", onMouseUp);\n }\n addListener(ownerDocument, \"mousemove\", eventHandler);\n addListener(ownerDocument, \"mouseup\", onMouseUp);\n addListener(ownerDocument, \"dragstart\", onMouseUp);\n return onMouseUp;\n};\nexports.addMouseWheelListener = function (el, callback, destroyer) {\n addListener(el, \"wheel\", function (e) {\n var factor = 0.15;\n var deltaX = e.deltaX || 0;\n var deltaY = e.deltaY || 0;\n switch (e.deltaMode) {\n case e.DOM_DELTA_PIXEL:\n e.wheelX = deltaX * factor;\n e.wheelY = deltaY * factor;\n break;\n case e.DOM_DELTA_LINE:\n var linePixels = 15;\n e.wheelX = deltaX * linePixels;\n e.wheelY = deltaY * linePixels;\n break;\n case e.DOM_DELTA_PAGE:\n var pagePixels = 150;\n e.wheelX = deltaX * pagePixels;\n e.wheelY = deltaY * pagePixels;\n break;\n }\n callback(e);\n }, destroyer);\n};\nexports.addMultiMouseDownListener = function (elements, timeouts, eventHandler, callbackName, destroyer) {\n var clicks = 0;\n var startX, startY, timer;\n var eventNames = {\n 2: \"dblclick\",\n 3: \"tripleclick\",\n 4: \"quadclick\"\n };\n function onMousedown(e) {\n if (exports.getButton(e) !== 0) {\n clicks = 0;\n }\n else if (e.detail > 1) {\n clicks++;\n if (clicks > 4)\n clicks = 1;\n }\n else {\n clicks = 1;\n }\n if (useragent.isIE) {\n var isNewClick = Math.abs(e.clientX - startX) > 5 || Math.abs(e.clientY - startY) > 5;\n if (!timer || isNewClick)\n clicks = 1;\n if (timer)\n clearTimeout(timer);\n timer = setTimeout(function () { timer = null; }, timeouts[clicks - 1] || 600);\n if (clicks == 1) {\n startX = e.clientX;\n startY = e.clientY;\n }\n }\n e._clicks = clicks;\n eventHandler[callbackName](\"mousedown\", e);\n if (clicks > 4)\n clicks = 0;\n else if (clicks > 1)\n return eventHandler[callbackName](eventNames[clicks], e);\n }\n if (!Array.isArray(elements))\n elements = [elements];\n elements.forEach(function (el) {\n addListener(el, \"mousedown\", onMousedown, destroyer);\n });\n};\nvar getModifierHash = function (e) {\n return 0 | (e.ctrlKey ? 1 : 0) | (e.altKey ? 2 : 0) | (e.shiftKey ? 4 : 0) | (e.metaKey ? 8 : 0);\n};\nexports.getModifierString = function (e) {\n return keys.KEY_MODS[getModifierHash(e)];\n};\nfunction normalizeCommandKeys(callback, e, keyCode) {\n var hashId = getModifierHash(e);\n if (!useragent.isMac && pressedKeys) {\n if (e.getModifierState && (e.getModifierState(\"OS\") || e.getModifierState(\"Win\")))\n hashId |= 8;\n if (pressedKeys.altGr) {\n if ((3 & hashId) != 3)\n pressedKeys.altGr = 0;\n else\n return;\n }\n if (keyCode === 18 || keyCode === 17) {\n var location = \"location\" in e ? e.location : e.keyLocation;\n if (keyCode === 17 && location === 1) {\n if (pressedKeys[keyCode] == 1)\n ts = e.timeStamp;\n }\n else if (keyCode === 18 && hashId === 3 && location === 2) {\n var dt = e.timeStamp - ts;\n if (dt < 50)\n pressedKeys.altGr = true;\n }\n }\n }\n if (keyCode in keys.MODIFIER_KEYS) {\n keyCode = -1;\n }\n if (!hashId && keyCode === 13) {\n var location = \"location\" in e ? e.location : e.keyLocation;\n if (location === 3) {\n callback(e, hashId, -keyCode);\n if (e.defaultPrevented)\n return;\n }\n }\n if (useragent.isChromeOS && hashId & 8) {\n callback(e, hashId, keyCode);\n if (e.defaultPrevented)\n return;\n else\n hashId &= ~8;\n }\n if (!hashId && !(keyCode in keys.FUNCTION_KEYS) && !(keyCode in keys.PRINTABLE_KEYS)) {\n return false;\n }\n return callback(e, hashId, keyCode);\n}\nexports.addCommandKeyListener = function (el, callback, destroyer) {\n if (useragent.isOldGecko || (useragent.isOpera && !(\"KeyboardEvent\" in window))) {\n var lastKeyDownKeyCode = null;\n addListener(el, \"keydown\", function (e) {\n lastKeyDownKeyCode = e.keyCode;\n }, destroyer);\n addListener(el, \"keypress\", function (e) {\n return normalizeCommandKeys(callback, e, lastKeyDownKeyCode);\n }, destroyer);\n }\n else {\n var lastDefaultPrevented = null;\n addListener(el, \"keydown\", function (e) {\n pressedKeys[e.keyCode] = (pressedKeys[e.keyCode] || 0) + 1;\n var result = normalizeCommandKeys(callback, e, e.keyCode);\n lastDefaultPrevented = e.defaultPrevented;\n return result;\n }, destroyer);\n addListener(el, \"keypress\", function (e) {\n if (lastDefaultPrevented && (e.ctrlKey || e.altKey || e.shiftKey || e.metaKey)) {\n exports.stopEvent(e);\n lastDefaultPrevented = null;\n }\n }, destroyer);\n addListener(el, \"keyup\", function (e) {\n pressedKeys[e.keyCode] = null;\n }, destroyer);\n if (!pressedKeys) {\n resetPressedKeys();\n addListener(window, \"focus\", resetPressedKeys);\n }\n }\n};\nfunction resetPressedKeys() {\n pressedKeys = Object.create(null);\n}\nif (typeof window == \"object\" && window.postMessage && !useragent.isOldIE) {\n var postMessageId = 1;\n exports.nextTick = function (callback, win) {\n win = win || window;\n var messageName = \"zero-timeout-message-\" + (postMessageId++);\n var listener = function (e) {\n if (e.data == messageName) {\n exports.stopPropagation(e);\n removeListener(win, \"message\", listener);\n callback();\n }\n };\n addListener(win, \"message\", listener);\n win.postMessage(messageName, \"*\");\n };\n}\nexports.$idleBlocked = false;\nexports.onIdle = function (cb, timeout) {\n return setTimeout(function handler() {\n if (!exports.$idleBlocked) {\n cb();\n }\n else {\n setTimeout(handler, 100);\n }\n }, timeout);\n};\nexports.$idleBlockId = null;\nexports.blockIdle = function (delay) {\n if (exports.$idleBlockId)\n clearTimeout(exports.$idleBlockId);\n exports.$idleBlocked = true;\n exports.$idleBlockId = setTimeout(function () {\n exports.$idleBlocked = false;\n }, delay || 100);\n};\nexports.nextFrame = typeof window == \"object\" && (window.requestAnimationFrame\n || window.mozRequestAnimationFrame\n || window.webkitRequestAnimationFrame\n || window.msRequestAnimationFrame\n || window.oRequestAnimationFrame);\nif (exports.nextFrame)\n exports.nextFrame = exports.nextFrame.bind(window);\nelse\n exports.nextFrame = function (callback) {\n setTimeout(callback, 17);\n };\n\n});\n\nace.define(\"ace/clipboard\",[\"require\",\"exports\",\"module\"], function(require, exports, module){\"use strict\";\nvar $cancelT;\nmodule.exports = {\n lineMode: false,\n pasteCancelled: function () {\n if ($cancelT && $cancelT > Date.now() - 50)\n return true;\n return $cancelT = false;\n },\n cancel: function () {\n $cancelT = Date.now();\n }\n};\n\n});\n\nace.define(\"ace/keyboard/textinput\",[\"require\",\"exports\",\"module\",\"ace/lib/event\",\"ace/config\",\"ace/lib/useragent\",\"ace/lib/dom\",\"ace/lib/lang\",\"ace/clipboard\",\"ace/lib/keys\"], function(require, exports, module){\"use strict\";\nvar event = require(\"../lib/event\");\nvar nls = require(\"../config\").nls;\nvar useragent = require(\"../lib/useragent\");\nvar dom = require(\"../lib/dom\");\nvar lang = require(\"../lib/lang\");\nvar clipboard = require(\"../clipboard\");\nvar BROKEN_SETDATA = useragent.isChrome < 18;\nvar USE_IE_MIME_TYPE = useragent.isIE;\nvar HAS_FOCUS_ARGS = useragent.isChrome > 63;\nvar MAX_LINE_LENGTH = 400;\nvar KEYS = require(\"../lib/keys\");\nvar MODS = KEYS.KEY_MODS;\nvar isIOS = useragent.isIOS;\nvar valueResetRegex = isIOS ? /\\s/ : /\\n/;\nvar isMobile = useragent.isMobile;\nvar TextInput = function (parentNode, host) {\n var text = dom.createElement(\"textarea\");\n text.className = \"ace_text-input\";\n text.setAttribute(\"wrap\", \"off\");\n text.setAttribute(\"autocorrect\", \"off\");\n text.setAttribute(\"autocapitalize\", \"off\");\n text.setAttribute(\"spellcheck\", false);\n text.style.opacity = \"0\";\n parentNode.insertBefore(text, parentNode.firstChild);\n var copied = false;\n var pasted = false;\n var inComposition = false;\n var sendingText = false;\n var tempStyle = '';\n if (!isMobile)\n text.style.fontSize = \"1px\";\n var commandMode = false;\n var ignoreFocusEvents = false;\n var lastValue = \"\";\n var lastSelectionStart = 0;\n var lastSelectionEnd = 0;\n var lastRestoreEnd = 0;\n var rowStart = Number.MAX_SAFE_INTEGER;\n var rowEnd = Number.MIN_SAFE_INTEGER;\n var numberOfExtraLines = 0;\n try {\n var isFocused = document.activeElement === text;\n }\n catch (e) { }\n this.setNumberOfExtraLines = function (number) {\n rowStart = Number.MAX_SAFE_INTEGER;\n rowEnd = Number.MIN_SAFE_INTEGER;\n if (number < 0) {\n numberOfExtraLines = 0;\n return;\n }\n numberOfExtraLines = number;\n };\n this.setAriaOptions = function (options) {\n if (options.activeDescendant) {\n text.setAttribute(\"aria-haspopup\", \"true\");\n text.setAttribute(\"aria-autocomplete\", options.inline ? \"both\" : \"list\");\n text.setAttribute(\"aria-activedescendant\", options.activeDescendant);\n }\n else {\n text.setAttribute(\"aria-haspopup\", \"false\");\n text.setAttribute(\"aria-autocomplete\", \"both\");\n text.removeAttribute(\"aria-activedescendant\");\n }\n if (options.role) {\n text.setAttribute(\"role\", options.role);\n }\n if (options.setLabel) {\n text.setAttribute(\"aria-roledescription\", nls(\"editor\"));\n if (host.session) {\n var row = host.session.selection.cursor.row;\n text.setAttribute(\"aria-label\", nls(\"Cursor at row $0\", [row + 1]));\n }\n }\n };\n this.setAriaOptions({ role: \"textbox\" });\n event.addListener(text, \"blur\", function (e) {\n if (ignoreFocusEvents)\n return;\n host.onBlur(e);\n isFocused = false;\n }, host);\n event.addListener(text, \"focus\", function (e) {\n if (ignoreFocusEvents)\n return;\n isFocused = true;\n if (useragent.isEdge) {\n try {\n if (!document.hasFocus())\n return;\n }\n catch (e) { }\n }\n host.onFocus(e);\n if (useragent.isEdge)\n setTimeout(resetSelection);\n else\n resetSelection();\n }, host);\n this.$focusScroll = false;\n this.focus = function () {\n this.setAriaOptions({\n setLabel: host.renderer.enableKeyboardAccessibility\n });\n if (tempStyle || HAS_FOCUS_ARGS || this.$focusScroll == \"browser\")\n return text.focus({ preventScroll: true });\n var top = text.style.top;\n text.style.position = \"fixed\";\n text.style.top = \"0px\";\n try {\n var isTransformed = text.getBoundingClientRect().top != 0;\n }\n catch (e) {\n return;\n }\n var ancestors = [];\n if (isTransformed) {\n var t = text.parentElement;\n while (t && t.nodeType == 1) {\n ancestors.push(t);\n t.setAttribute(\"ace_nocontext\", true);\n if (!t.parentElement && t.getRootNode)\n t = t.getRootNode().host;\n else\n t = t.parentElement;\n }\n }\n text.focus({ preventScroll: true });\n if (isTransformed) {\n ancestors.forEach(function (p) {\n p.removeAttribute(\"ace_nocontext\");\n });\n }\n setTimeout(function () {\n text.style.position = \"\";\n if (text.style.top == \"0px\")\n text.style.top = top;\n }, 0);\n };\n this.blur = function () {\n text.blur();\n };\n this.isFocused = function () {\n return isFocused;\n };\n host.on(\"beforeEndOperation\", function () {\n var curOp = host.curOp;\n var commandName = curOp && curOp.command && curOp.command.name;\n if (commandName == \"insertstring\")\n return;\n var isUserAction = commandName && (curOp.docChanged || curOp.selectionChanged);\n if (inComposition && isUserAction) {\n lastValue = text.value = \"\";\n onCompositionEnd();\n }\n resetSelection();\n });\n var positionToSelection = function (row, column) {\n var selection = column;\n for (var i = 1; i <= row - rowStart && i < 2 * numberOfExtraLines + 1; i++) {\n selection += host.session.getLine(row - i).length + 1;\n }\n return selection;\n };\n var resetSelection = isIOS\n ? function (value) {\n if (!isFocused || (copied && !value) || sendingText)\n return;\n if (!value)\n value = \"\";\n var newValue = \"\\n ab\" + value + \"cde fg\\n\";\n if (newValue != text.value)\n text.value = lastValue = newValue;\n var selectionStart = 4;\n var selectionEnd = 4 + (value.length || (host.selection.isEmpty() ? 0 : 1));\n if (lastSelectionStart != selectionStart || lastSelectionEnd != selectionEnd) {\n text.setSelectionRange(selectionStart, selectionEnd);\n }\n lastSelectionStart = selectionStart;\n lastSelectionEnd = selectionEnd;\n }\n : function () {\n if (inComposition || sendingText)\n return;\n if (!isFocused && !afterContextMenu)\n return;\n inComposition = true;\n var selectionStart = 0;\n var selectionEnd = 0;\n var line = \"\";\n if (host.session) {\n var selection = host.selection;\n var range = selection.getRange();\n var row = selection.cursor.row;\n if (row === rowEnd + 1) {\n rowStart = rowEnd + 1;\n rowEnd = rowStart + 2 * numberOfExtraLines;\n }\n else if (row === rowStart - 1) {\n rowEnd = rowStart - 1;\n rowStart = rowEnd - 2 * numberOfExtraLines;\n }\n else if (row < rowStart - 1 || row > rowEnd + 1) {\n rowStart = row > numberOfExtraLines ? row - numberOfExtraLines : 0;\n rowEnd = row > numberOfExtraLines ? row + numberOfExtraLines : 2 * numberOfExtraLines;\n }\n var lines = [];\n for (var i = rowStart; i <= rowEnd; i++) {\n lines.push(host.session.getLine(i));\n }\n line = lines.join('\\n');\n selectionStart = positionToSelection(range.start.row, range.start.column);\n selectionEnd = positionToSelection(range.end.row, range.end.column);\n if (range.start.row < rowStart) {\n var prevLine = host.session.getLine(rowStart - 1);\n selectionStart = range.start.row < rowStart - 1 ? 0 : selectionStart;\n selectionEnd += prevLine.length + 1;\n line = prevLine + \"\\n\" + line;\n }\n else if (range.end.row > rowEnd) {\n var nextLine = host.session.getLine(rowEnd + 1);\n selectionEnd = range.end.row > rowEnd + 1 ? nextLine.length : range.end.column;\n selectionEnd += line.length + 1;\n line = line + \"\\n\" + nextLine;\n }\n else if (isMobile && row > 0) {\n line = \"\\n\" + line;\n selectionEnd += 1;\n selectionStart += 1;\n }\n if (line.length > MAX_LINE_LENGTH) {\n if (selectionStart < MAX_LINE_LENGTH && selectionEnd < MAX_LINE_LENGTH) {\n line = line.slice(0, MAX_LINE_LENGTH);\n }\n else {\n line = \"\\n\";\n if (selectionStart == selectionEnd) {\n selectionStart = selectionEnd = 0;\n }\n else {\n selectionStart = 0;\n selectionEnd = 1;\n }\n }\n }\n var newValue = line + \"\\n\\n\";\n if (newValue != lastValue) {\n text.value = lastValue = newValue;\n lastSelectionStart = lastSelectionEnd = newValue.length;\n }\n }\n if (afterContextMenu) {\n lastSelectionStart = text.selectionStart;\n lastSelectionEnd = text.selectionEnd;\n }\n if (lastSelectionEnd != selectionEnd\n || lastSelectionStart != selectionStart\n || text.selectionEnd != lastSelectionEnd // on ie edge selectionEnd changes silently after the initialization\n ) {\n try {\n text.setSelectionRange(selectionStart, selectionEnd);\n lastSelectionStart = selectionStart;\n lastSelectionEnd = selectionEnd;\n }\n catch (e) { }\n }\n inComposition = false;\n };\n this.resetSelection = resetSelection;\n if (isFocused)\n host.onFocus();\n var isAllSelected = function (text) {\n return text.selectionStart === 0 && text.selectionEnd >= lastValue.length\n && text.value === lastValue && lastValue\n && text.selectionEnd !== lastSelectionEnd;\n };\n var onSelect = function (e) {\n if (inComposition)\n return;\n if (copied) {\n copied = false;\n }\n else if (isAllSelected(text)) {\n host.selectAll();\n resetSelection();\n }\n else if (isMobile && text.selectionStart != lastSelectionStart) {\n resetSelection();\n }\n };\n var inputHandler = null;\n this.setInputHandler = function (cb) { inputHandler = cb; };\n this.getInputHandler = function () { return inputHandler; };\n var afterContextMenu = false;\n var sendText = function (value, fromInput) {\n if (afterContextMenu)\n afterContextMenu = false;\n if (pasted) {\n resetSelection();\n if (value)\n host.onPaste(value);\n pasted = false;\n return \"\";\n }\n else {\n var selectionStart = text.selectionStart;\n var selectionEnd = text.selectionEnd;\n var extendLeft = lastSelectionStart;\n var extendRight = lastValue.length - lastSelectionEnd;\n var inserted = value;\n var restoreStart = value.length - selectionStart;\n var restoreEnd = value.length - selectionEnd;\n var i = 0;\n while (extendLeft > 0 && lastValue[i] == value[i]) {\n i++;\n extendLeft--;\n }\n inserted = inserted.slice(i);\n i = 1;\n while (extendRight > 0 && lastValue.length - i > lastSelectionStart - 1 && lastValue[lastValue.length - i] == value[value.length - i]) {\n i++;\n extendRight--;\n }\n restoreStart -= i - 1;\n restoreEnd -= i - 1;\n var endIndex = inserted.length - i + 1;\n if (endIndex < 0) {\n extendLeft = -endIndex;\n endIndex = 0;\n }\n inserted = inserted.slice(0, endIndex);\n if (!fromInput && !inserted && !restoreStart && !extendLeft && !extendRight && !restoreEnd)\n return \"\";\n sendingText = true;\n var shouldReset = false;\n if (useragent.isAndroid && inserted == \". \") {\n inserted = \" \";\n shouldReset = true;\n }\n if (inserted && !extendLeft && !extendRight && !restoreStart && !restoreEnd || commandMode) {\n host.onTextInput(inserted);\n }\n else {\n host.onTextInput(inserted, {\n extendLeft: extendLeft,\n extendRight: extendRight,\n restoreStart: restoreStart,\n restoreEnd: restoreEnd\n });\n }\n sendingText = false;\n lastValue = value;\n lastSelectionStart = selectionStart;\n lastSelectionEnd = selectionEnd;\n lastRestoreEnd = restoreEnd;\n return shouldReset ? \"\\n\" : inserted;\n }\n };\n var onInput = function (e) {\n if (inComposition)\n return onCompositionUpdate();\n if (e && e.inputType) {\n if (e.inputType == \"historyUndo\")\n return host.execCommand(\"undo\");\n if (e.inputType == \"historyRedo\")\n return host.execCommand(\"redo\");\n }\n var data = text.value;\n var inserted = sendText(data, true);\n if (data.length > MAX_LINE_LENGTH + 100\n || valueResetRegex.test(inserted)\n || isMobile && lastSelectionStart < 1 && lastSelectionStart == lastSelectionEnd) {\n resetSelection();\n }\n };\n var handleClipboardData = function (e, data, forceIEMime) {\n var clipboardData = e.clipboardData || window.clipboardData;\n if (!clipboardData || BROKEN_SETDATA)\n return;\n var mime = USE_IE_MIME_TYPE || forceIEMime ? \"Text\" : \"text/plain\";\n try {\n if (data) {\n return clipboardData.setData(mime, data) !== false;\n }\n else {\n return clipboardData.getData(mime);\n }\n }\n catch (e) {\n if (!forceIEMime)\n return handleClipboardData(e, data, true);\n }\n };\n var doCopy = function (e, isCut) {\n var data = host.getCopyText();\n if (!data)\n return event.preventDefault(e);\n if (handleClipboardData(e, data)) {\n if (isIOS) {\n resetSelection(data);\n copied = data;\n setTimeout(function () {\n copied = false;\n }, 10);\n }\n isCut ? host.onCut() : host.onCopy();\n event.preventDefault(e);\n }\n else {\n copied = true;\n text.value = data;\n text.select();\n setTimeout(function () {\n copied = false;\n resetSelection();\n isCut ? host.onCut() : host.onCopy();\n });\n }\n };\n var onCut = function (e) {\n doCopy(e, true);\n };\n var onCopy = function (e) {\n doCopy(e, false);\n };\n var onPaste = function (e) {\n var data = handleClipboardData(e);\n if (clipboard.pasteCancelled())\n return;\n if (typeof data == \"string\") {\n if (data)\n host.onPaste(data, e);\n if (useragent.isIE)\n setTimeout(resetSelection);\n event.preventDefault(e);\n }\n else {\n text.value = \"\";\n pasted = true;\n }\n };\n event.addCommandKeyListener(text, host.onCommandKey.bind(host), host);\n event.addListener(text, \"select\", onSelect, host);\n event.addListener(text, \"input\", onInput, host);\n event.addListener(text, \"cut\", onCut, host);\n event.addListener(text, \"copy\", onCopy, host);\n event.addListener(text, \"paste\", onPaste, host);\n if (!('oncut' in text) || !('oncopy' in text) || !('onpaste' in text)) {\n event.addListener(parentNode, \"keydown\", function (e) {\n if ((useragent.isMac && !e.metaKey) || !e.ctrlKey)\n return;\n switch (e.keyCode) {\n case 67:\n onCopy(e);\n break;\n case 86:\n onPaste(e);\n break;\n case 88:\n onCut(e);\n break;\n }\n }, host);\n }\n var onCompositionStart = function (e) {\n if (inComposition || !host.onCompositionStart || host.$readOnly)\n return;\n inComposition = {};\n if (commandMode)\n return;\n if (e.data)\n inComposition.useTextareaForIME = false;\n setTimeout(onCompositionUpdate, 0);\n host._signal(\"compositionStart\");\n host.on(\"mousedown\", cancelComposition);\n var range = host.getSelectionRange();\n range.end.row = range.start.row;\n range.end.column = range.start.column;\n inComposition.markerRange = range;\n inComposition.selectionStart = lastSelectionStart;\n host.onCompositionStart(inComposition);\n if (inComposition.useTextareaForIME) {\n lastValue = text.value = \"\";\n lastSelectionStart = 0;\n lastSelectionEnd = 0;\n }\n else {\n if (text.msGetInputContext)\n inComposition.context = text.msGetInputContext();\n if (text.getInputContext)\n inComposition.context = text.getInputContext();\n }\n };\n var onCompositionUpdate = function () {\n if (!inComposition || !host.onCompositionUpdate || host.$readOnly)\n return;\n if (commandMode)\n return cancelComposition();\n if (inComposition.useTextareaForIME) {\n host.onCompositionUpdate(text.value);\n }\n else {\n var data = text.value;\n sendText(data);\n if (inComposition.markerRange) {\n if (inComposition.context) {\n inComposition.markerRange.start.column = inComposition.selectionStart\n = inComposition.context.compositionStartOffset;\n }\n inComposition.markerRange.end.column = inComposition.markerRange.start.column\n + lastSelectionEnd - inComposition.selectionStart + lastRestoreEnd;\n }\n }\n };\n var onCompositionEnd = function (e) {\n if (!host.onCompositionEnd || host.$readOnly)\n return;\n inComposition = false;\n host.onCompositionEnd();\n host.off(\"mousedown\", cancelComposition);\n if (e)\n onInput();\n };\n function cancelComposition() {\n ignoreFocusEvents = true;\n text.blur();\n text.focus();\n ignoreFocusEvents = false;\n }\n var syncComposition = lang.delayedCall(onCompositionUpdate, 50).schedule.bind(null, null);\n function onKeyup(e) {\n if (e.keyCode == 27 && text.value.length < text.selectionStart) {\n if (!inComposition)\n lastValue = text.value;\n lastSelectionStart = lastSelectionEnd = -1;\n resetSelection();\n }\n syncComposition();\n }\n event.addListener(text, \"compositionstart\", onCompositionStart, host);\n event.addListener(text, \"compositionupdate\", onCompositionUpdate, host);\n event.addListener(text, \"keyup\", onKeyup, host);\n event.addListener(text, \"keydown\", syncComposition, host);\n event.addListener(text, \"compositionend\", onCompositionEnd, host);\n this.getElement = function () {\n return text;\n };\n this.setCommandMode = function (value) {\n commandMode = value;\n text.readOnly = false;\n };\n this.setReadOnly = function (readOnly) {\n if (!commandMode)\n text.readOnly = readOnly;\n };\n this.setCopyWithEmptySelection = function (value) {\n };\n this.onContextMenu = function (e) {\n afterContextMenu = true;\n resetSelection();\n host._emit(\"nativecontextmenu\", { target: host, domEvent: e });\n this.moveToMouse(e, true);\n };\n this.moveToMouse = function (e, bringToFront) {\n if (!tempStyle)\n tempStyle = text.style.cssText;\n text.style.cssText = (bringToFront ? \"z-index:100000;\" : \"\")\n + (useragent.isIE ? \"opacity:0.1;\" : \"\")\n + \"text-indent: -\" + (lastSelectionStart + lastSelectionEnd) * host.renderer.characterWidth * 0.5 + \"px;\";\n var rect = host.container.getBoundingClientRect();\n var style = dom.computedStyle(host.container);\n var top = rect.top + (parseInt(style.borderTopWidth) || 0);\n var left = rect.left + (parseInt(rect.borderLeftWidth) || 0);\n var maxTop = rect.bottom - top - text.clientHeight - 2;\n var move = function (e) {\n dom.translate(text, e.clientX - left - 2, Math.min(e.clientY - top - 2, maxTop));\n };\n move(e);\n if (e.type != \"mousedown\")\n return;\n host.renderer.$isMousePressed = true;\n clearTimeout(closeTimeout);\n if (useragent.isWin)\n event.capture(host.container, move, onContextMenuClose);\n };\n this.onContextMenuClose = onContextMenuClose;\n var closeTimeout;\n function onContextMenuClose() {\n clearTimeout(closeTimeout);\n closeTimeout = setTimeout(function () {\n if (tempStyle) {\n text.style.cssText = tempStyle;\n tempStyle = '';\n }\n host.renderer.$isMousePressed = false;\n if (host.renderer.$keepTextAreaAtCursor)\n host.renderer.$moveTextAreaToCursor();\n }, 0);\n }\n var onContextMenu = function (e) {\n host.textInput.onContextMenu(e);\n onContextMenuClose();\n };\n event.addListener(text, \"mouseup\", onContextMenu, host);\n event.addListener(text, \"mousedown\", function (e) {\n e.preventDefault();\n onContextMenuClose();\n }, host);\n event.addListener(host.renderer.scroller, \"contextmenu\", onContextMenu, host);\n event.addListener(text, \"contextmenu\", onContextMenu, host);\n if (isIOS)\n addIosSelectionHandler(parentNode, host, text);\n function addIosSelectionHandler(parentNode, host, text) {\n var typingResetTimeout = null;\n var typing = false;\n text.addEventListener(\"keydown\", function (e) {\n if (typingResetTimeout)\n clearTimeout(typingResetTimeout);\n typing = true;\n }, true);\n text.addEventListener(\"keyup\", function (e) {\n typingResetTimeout = setTimeout(function () {\n typing = false;\n }, 100);\n }, true);\n var detectArrowKeys = function (e) {\n if (document.activeElement !== text)\n return;\n if (typing || inComposition || host.$mouseHandler.isMousePressed)\n return;\n if (copied) {\n return;\n }\n var selectionStart = text.selectionStart;\n var selectionEnd = text.selectionEnd;\n var key = null;\n var modifier = 0;\n if (selectionStart == 0) {\n key = KEYS.up;\n }\n else if (selectionStart == 1) {\n key = KEYS.home;\n }\n else if (selectionEnd > lastSelectionEnd && lastValue[selectionEnd] == \"\\n\") {\n key = KEYS.end;\n }\n else if (selectionStart < lastSelectionStart && lastValue[selectionStart - 1] == \" \") {\n key = KEYS.left;\n modifier = MODS.option;\n }\n else if (selectionStart < lastSelectionStart\n || (selectionStart == lastSelectionStart\n && lastSelectionEnd != lastSelectionStart\n && selectionStart == selectionEnd)) {\n key = KEYS.left;\n }\n else if (selectionEnd > lastSelectionEnd && lastValue.slice(0, selectionEnd).split(\"\\n\").length > 2) {\n key = KEYS.down;\n }\n else if (selectionEnd > lastSelectionEnd && lastValue[selectionEnd - 1] == \" \") {\n key = KEYS.right;\n modifier = MODS.option;\n }\n else if (selectionEnd > lastSelectionEnd\n || (selectionEnd == lastSelectionEnd\n && lastSelectionEnd != lastSelectionStart\n && selectionStart == selectionEnd)) {\n key = KEYS.right;\n }\n if (selectionStart !== selectionEnd)\n modifier |= MODS.shift;\n if (key) {\n var result = host.onCommandKey({}, modifier, key);\n if (!result && host.commands) {\n key = KEYS.keyCodeToString(key);\n var command = host.commands.findKeyCommand(modifier, key);\n if (command)\n host.execCommand(command);\n }\n lastSelectionStart = selectionStart;\n lastSelectionEnd = selectionEnd;\n resetSelection(\"\");\n }\n };\n document.addEventListener(\"selectionchange\", detectArrowKeys);\n host.on(\"destroy\", function () {\n document.removeEventListener(\"selectionchange\", detectArrowKeys);\n });\n }\n this.destroy = function () {\n if (text.parentElement)\n text.parentElement.removeChild(text);\n };\n};\nexports.TextInput = TextInput;\nexports.$setUserAgentForTests = function (_isMobile, _isIOS) {\n isMobile = _isMobile;\n isIOS = _isIOS;\n};\n\n});\n\nace.define(\"ace/mouse/default_handlers\",[\"require\",\"exports\",\"module\",\"ace/lib/useragent\"], function(require, exports, module){\"use strict\";\nvar useragent = require(\"../lib/useragent\");\nvar DRAG_OFFSET = 0; // pixels\nvar SCROLL_COOLDOWN_T = 550; // milliseconds\nvar DefaultHandlers = /** @class */ (function () {\n function DefaultHandlers(mouseHandler) {\n mouseHandler.$clickSelection = null;\n var editor = mouseHandler.editor;\n editor.setDefaultHandler(\"mousedown\", this.onMouseDown.bind(mouseHandler));\n editor.setDefaultHandler(\"dblclick\", this.onDoubleClick.bind(mouseHandler));\n editor.setDefaultHandler(\"tripleclick\", this.onTripleClick.bind(mouseHandler));\n editor.setDefaultHandler(\"quadclick\", this.onQuadClick.bind(mouseHandler));\n editor.setDefaultHandler(\"mousewheel\", this.onMouseWheel.bind(mouseHandler));\n var exports = [\"select\", \"startSelect\", \"selectEnd\", \"selectAllEnd\", \"selectByWordsEnd\",\n \"selectByLinesEnd\", \"dragWait\", \"dragWaitEnd\", \"focusWait\"];\n exports.forEach(function (x) {\n mouseHandler[x] = this[x];\n }, this);\n mouseHandler.selectByLines = this.extendSelectionBy.bind(mouseHandler, \"getLineRange\");\n mouseHandler.selectByWords = this.extendSelectionBy.bind(mouseHandler, \"getWordRange\");\n }\n DefaultHandlers.prototype.onMouseDown = function (ev) {\n var inSelection = ev.inSelection();\n var pos = ev.getDocumentPosition();\n this.mousedownEvent = ev;\n var editor = this.editor;\n var button = ev.getButton();\n if (button !== 0) {\n var selectionRange = editor.getSelectionRange();\n var selectionEmpty = selectionRange.isEmpty();\n if (selectionEmpty || button == 1)\n editor.selection.moveToPosition(pos);\n if (button == 2) {\n editor.textInput.onContextMenu(ev.domEvent);\n if (!useragent.isMozilla)\n ev.preventDefault();\n }\n return;\n }\n this.mousedownEvent.time = Date.now();\n if (inSelection && !editor.isFocused()) {\n editor.focus();\n if (this.$focusTimeout && !this.$clickSelection && !editor.inMultiSelectMode) {\n this.setState(\"focusWait\");\n this.captureMouse(ev);\n return;\n }\n }\n this.captureMouse(ev);\n this.startSelect(pos, ev.domEvent._clicks > 1);\n return ev.preventDefault();\n };\n DefaultHandlers.prototype.startSelect = function (pos, waitForClickSelection) {\n pos = pos || this.editor.renderer.screenToTextCoordinates(this.x, this.y);\n var editor = this.editor;\n if (!this.mousedownEvent)\n return;\n if (this.mousedownEvent.getShiftKey())\n editor.selection.selectToPosition(pos);\n else if (!waitForClickSelection)\n editor.selection.moveToPosition(pos);\n if (!waitForClickSelection)\n this.select();\n editor.setStyle(\"ace_selecting\");\n this.setState(\"select\");\n };\n DefaultHandlers.prototype.select = function () {\n var anchor, editor = this.editor;\n var cursor = editor.renderer.screenToTextCoordinates(this.x, this.y);\n if (this.$clickSelection) {\n var cmp = this.$clickSelection.comparePoint(cursor);\n if (cmp == -1) {\n anchor = this.$clickSelection.end;\n }\n else if (cmp == 1) {\n anchor = this.$clickSelection.start;\n }\n else {\n var orientedRange = calcRangeOrientation(this.$clickSelection, cursor);\n cursor = orientedRange.cursor;\n anchor = orientedRange.anchor;\n }\n editor.selection.setSelectionAnchor(anchor.row, anchor.column);\n }\n editor.selection.selectToPosition(cursor);\n editor.renderer.scrollCursorIntoView();\n };\n DefaultHandlers.prototype.extendSelectionBy = function (unitName) {\n var anchor, editor = this.editor;\n var cursor = editor.renderer.screenToTextCoordinates(this.x, this.y);\n var range = editor.selection[unitName](cursor.row, cursor.column);\n if (this.$clickSelection) {\n var cmpStart = this.$clickSelection.comparePoint(range.start);\n var cmpEnd = this.$clickSelection.comparePoint(range.end);\n if (cmpStart == -1 && cmpEnd <= 0) {\n anchor = this.$clickSelection.end;\n if (range.end.row != cursor.row || range.end.column != cursor.column)\n cursor = range.start;\n }\n else if (cmpEnd == 1 && cmpStart >= 0) {\n anchor = this.$clickSelection.start;\n if (range.start.row != cursor.row || range.start.column != cursor.column)\n cursor = range.end;\n }\n else if (cmpStart == -1 && cmpEnd == 1) {\n cursor = range.end;\n anchor = range.start;\n }\n else {\n var orientedRange = calcRangeOrientation(this.$clickSelection, cursor);\n cursor = orientedRange.cursor;\n anchor = orientedRange.anchor;\n }\n editor.selection.setSelectionAnchor(anchor.row, anchor.column);\n }\n editor.selection.selectToPosition(cursor);\n editor.renderer.scrollCursorIntoView();\n };\n DefaultHandlers.prototype.selectByLinesEnd = function () {\n this.$clickSelection = null;\n this.editor.unsetStyle(\"ace_selecting\");\n };\n DefaultHandlers.prototype.focusWait = function () {\n var distance = calcDistance(this.mousedownEvent.x, this.mousedownEvent.y, this.x, this.y);\n var time = Date.now();\n if (distance > DRAG_OFFSET || time - this.mousedownEvent.time > this.$focusTimeout)\n this.startSelect(this.mousedownEvent.getDocumentPosition());\n };\n DefaultHandlers.prototype.onDoubleClick = function (ev) {\n var pos = ev.getDocumentPosition();\n var editor = this.editor;\n var session = editor.session;\n var range = session.getBracketRange(pos);\n if (range) {\n if (range.isEmpty()) {\n range.start.column--;\n range.end.column++;\n }\n this.setState(\"select\");\n }\n else {\n range = editor.selection.getWordRange(pos.row, pos.column);\n this.setState(\"selectByWords\");\n }\n this.$clickSelection = range;\n this.select();\n };\n DefaultHandlers.prototype.onTripleClick = function (ev) {\n var pos = ev.getDocumentPosition();\n var editor = this.editor;\n this.setState(\"selectByLines\");\n var range = editor.getSelectionRange();\n if (range.isMultiLine() && range.contains(pos.row, pos.column)) {\n this.$clickSelection = editor.selection.getLineRange(range.start.row);\n this.$clickSelection.end = editor.selection.getLineRange(range.end.row).end;\n }\n else {\n this.$clickSelection = editor.selection.getLineRange(pos.row);\n }\n this.select();\n };\n DefaultHandlers.prototype.onQuadClick = function (ev) {\n var editor = this.editor;\n editor.selectAll();\n this.$clickSelection = editor.getSelectionRange();\n this.setState(\"selectAll\");\n };\n DefaultHandlers.prototype.onMouseWheel = function (ev) {\n if (ev.getAccelKey())\n return;\n if (ev.getShiftKey() && ev.wheelY && !ev.wheelX) {\n ev.wheelX = ev.wheelY;\n ev.wheelY = 0;\n }\n var editor = this.editor;\n if (!this.$lastScroll)\n this.$lastScroll = { t: 0, vx: 0, vy: 0, allowed: 0 };\n var prevScroll = this.$lastScroll;\n var t = ev.domEvent.timeStamp;\n var dt = t - prevScroll.t;\n var vx = dt ? ev.wheelX / dt : prevScroll.vx;\n var vy = dt ? ev.wheelY / dt : prevScroll.vy;\n if (dt < SCROLL_COOLDOWN_T) {\n vx = (vx + prevScroll.vx) / 2;\n vy = (vy + prevScroll.vy) / 2;\n }\n var direction = Math.abs(vx / vy);\n var canScroll = false;\n if (direction >= 1 && editor.renderer.isScrollableBy(ev.wheelX * ev.speed, 0))\n canScroll = true;\n if (direction <= 1 && editor.renderer.isScrollableBy(0, ev.wheelY * ev.speed))\n canScroll = true;\n if (canScroll) {\n prevScroll.allowed = t;\n }\n else if (t - prevScroll.allowed < SCROLL_COOLDOWN_T) {\n var isSlower = Math.abs(vx) <= 1.5 * Math.abs(prevScroll.vx)\n && Math.abs(vy) <= 1.5 * Math.abs(prevScroll.vy);\n if (isSlower) {\n canScroll = true;\n prevScroll.allowed = t;\n }\n else {\n prevScroll.allowed = 0;\n }\n }\n prevScroll.t = t;\n prevScroll.vx = vx;\n prevScroll.vy = vy;\n if (canScroll) {\n editor.renderer.scrollBy(ev.wheelX * ev.speed, ev.wheelY * ev.speed);\n return ev.stop();\n }\n };\n return DefaultHandlers;\n}());\nDefaultHandlers.prototype.selectEnd = DefaultHandlers.prototype.selectByLinesEnd;\nDefaultHandlers.prototype.selectAllEnd = DefaultHandlers.prototype.selectByLinesEnd;\nDefaultHandlers.prototype.selectByWordsEnd = DefaultHandlers.prototype.selectByLinesEnd;\nexports.DefaultHandlers = DefaultHandlers;\nfunction calcDistance(ax, ay, bx, by) {\n return Math.sqrt(Math.pow(bx - ax, 2) + Math.pow(by - ay, 2));\n}\nfunction calcRangeOrientation(range, cursor) {\n if (range.start.row == range.end.row)\n var cmp = 2 * cursor.column - range.start.column - range.end.column;\n else if (range.start.row == range.end.row - 1 && !range.start.column && !range.end.column)\n var cmp = cursor.column - 4;\n else\n var cmp = 2 * cursor.row - range.start.row - range.end.row;\n if (cmp < 0)\n return { cursor: range.start, anchor: range.end };\n else\n return { cursor: range.end, anchor: range.start };\n}\n\n});\n\nace.define(\"ace/tooltip\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\",\"ace/lib/event\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar dom = require(\"./lib/dom\");\nvar event = require(\"./lib/event\");\nvar Range = require(\"./range\").Range;\nvar CLASSNAME = \"ace_tooltip\";\nvar Tooltip = /** @class */ (function () {\n function Tooltip(parentNode) {\n this.isOpen = false;\n this.$element = null;\n this.$parentNode = parentNode;\n }\n Tooltip.prototype.$init = function () {\n this.$element = dom.createElement(\"div\");\n this.$element.className = CLASSNAME;\n this.$element.style.display = \"none\";\n this.$parentNode.appendChild(this.$element);\n return this.$element;\n };\n Tooltip.prototype.getElement = function () {\n return this.$element || this.$init();\n };\n Tooltip.prototype.setText = function (text) {\n this.getElement().textContent = text;\n };\n Tooltip.prototype.setHtml = function (html) {\n this.getElement().innerHTML = html;\n };\n Tooltip.prototype.setPosition = function (x, y) {\n this.getElement().style.left = x + \"px\";\n this.getElement().style.top = y + \"px\";\n };\n Tooltip.prototype.setClassName = function (className) {\n dom.addCssClass(this.getElement(), className);\n };\n Tooltip.prototype.setTheme = function (theme) {\n this.$element.className = CLASSNAME + \" \" +\n (theme.isDark ? \"ace_dark \" : \"\") + (theme.cssClass || \"\");\n };\n Tooltip.prototype.show = function (text, x, y) {\n if (text != null)\n this.setText(text);\n if (x != null && y != null)\n this.setPosition(x, y);\n if (!this.isOpen) {\n this.getElement().style.display = \"block\";\n this.isOpen = true;\n }\n };\n Tooltip.prototype.hide = function () {\n if (this.isOpen) {\n this.getElement().style.display = \"none\";\n this.getElement().className = CLASSNAME;\n this.isOpen = false;\n }\n };\n Tooltip.prototype.getHeight = function () {\n return this.getElement().offsetHeight;\n };\n Tooltip.prototype.getWidth = function () {\n return this.getElement().offsetWidth;\n };\n Tooltip.prototype.destroy = function () {\n this.isOpen = false;\n if (this.$element && this.$element.parentNode) {\n this.$element.parentNode.removeChild(this.$element);\n }\n };\n return Tooltip;\n}());\nvar PopupManager = /** @class */ (function () {\n function PopupManager() {\n this.popups = [];\n }\n PopupManager.prototype.addPopup = function (popup) {\n this.popups.push(popup);\n this.updatePopups();\n };\n PopupManager.prototype.removePopup = function (popup) {\n var index = this.popups.indexOf(popup);\n if (index !== -1) {\n this.popups.splice(index, 1);\n this.updatePopups();\n }\n };\n PopupManager.prototype.updatePopups = function () {\n var e_1, _a, e_2, _b;\n this.popups.sort(function (a, b) { return b.priority - a.priority; });\n var visiblepopups = [];\n try {\n for (var _c = __values(this.popups), _d = _c.next(); !_d.done; _d = _c.next()) {\n var popup = _d.value;\n var shouldDisplay = true;\n try {\n for (var visiblepopups_1 = (e_2 = void 0, __values(visiblepopups)), visiblepopups_1_1 = visiblepopups_1.next(); !visiblepopups_1_1.done; visiblepopups_1_1 = visiblepopups_1.next()) {\n var visiblePopup = visiblepopups_1_1.value;\n if (this.doPopupsOverlap(visiblePopup, popup)) {\n shouldDisplay = false;\n break;\n }\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (visiblepopups_1_1 && !visiblepopups_1_1.done && (_b = visiblepopups_1.return)) _b.call(visiblepopups_1);\n }\n finally { if (e_2) throw e_2.error; }\n }\n if (shouldDisplay) {\n visiblepopups.push(popup);\n }\n else {\n popup.hide();\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_d && !_d.done && (_a = _c.return)) _a.call(_c);\n }\n finally { if (e_1) throw e_1.error; }\n }\n };\n PopupManager.prototype.doPopupsOverlap = function (popupA, popupB) {\n var rectA = popupA.getElement().getBoundingClientRect();\n var rectB = popupB.getElement().getBoundingClientRect();\n return (rectA.left < rectB.right && rectA.right > rectB.left && rectA.top < rectB.bottom && rectA.bottom\n > rectB.top);\n };\n return PopupManager;\n}());\nvar popupManager = new PopupManager();\nexports.popupManager = popupManager;\nexports.Tooltip = Tooltip;\nvar HoverTooltip = /** @class */ (function (_super) {\n __extends(HoverTooltip, _super);\n function HoverTooltip(parentNode) {\n if (parentNode === void 0) { parentNode = document.body; }\n var _this = _super.call(this, parentNode) || this;\n _this.timeout = undefined;\n _this.lastT = 0;\n _this.idleTime = 350;\n _this.lastEvent = undefined;\n _this.onMouseOut = _this.onMouseOut.bind(_this);\n _this.onMouseMove = _this.onMouseMove.bind(_this);\n _this.waitForHover = _this.waitForHover.bind(_this);\n _this.hide = _this.hide.bind(_this);\n var el = _this.getElement();\n el.style.whiteSpace = \"pre-wrap\";\n el.style.pointerEvents = \"auto\";\n el.addEventListener(\"mouseout\", _this.onMouseOut);\n el.tabIndex = -1;\n el.addEventListener(\"blur\", function () {\n if (!el.contains(document.activeElement))\n this.hide();\n }.bind(_this));\n el.addEventListener(\"wheel\", event.stopPropagation);\n return _this;\n }\n HoverTooltip.prototype.addToEditor = function (editor) {\n editor.on(\"mousemove\", this.onMouseMove);\n editor.on(\"mousedown\", this.hide);\n editor.renderer.getMouseEventTarget().addEventListener(\"mouseout\", this.onMouseOut, true);\n };\n HoverTooltip.prototype.removeFromEditor = function (editor) {\n editor.off(\"mousemove\", this.onMouseMove);\n editor.off(\"mousedown\", this.hide);\n editor.renderer.getMouseEventTarget().removeEventListener(\"mouseout\", this.onMouseOut, true);\n if (this.timeout) {\n clearTimeout(this.timeout);\n this.timeout = null;\n }\n };\n HoverTooltip.prototype.onMouseMove = function (e, editor) {\n this.lastEvent = e;\n this.lastT = Date.now();\n var isMousePressed = editor.$mouseHandler.isMousePressed;\n if (this.isOpen) {\n var pos = this.lastEvent && this.lastEvent.getDocumentPosition();\n if (!this.range\n || !this.range.contains(pos.row, pos.column)\n || isMousePressed\n || this.isOutsideOfText(this.lastEvent)) {\n this.hide();\n }\n }\n if (this.timeout || isMousePressed)\n return;\n this.lastEvent = e;\n this.timeout = setTimeout(this.waitForHover, this.idleTime);\n };\n HoverTooltip.prototype.waitForHover = function () {\n if (this.timeout)\n clearTimeout(this.timeout);\n var dt = Date.now() - this.lastT;\n if (this.idleTime - dt > 10) {\n this.timeout = setTimeout(this.waitForHover, this.idleTime - dt);\n return;\n }\n this.timeout = null;\n if (this.lastEvent && !this.isOutsideOfText(this.lastEvent)) {\n this.$gatherData(this.lastEvent, this.lastEvent.editor);\n }\n };\n HoverTooltip.prototype.isOutsideOfText = function (e) {\n var editor = e.editor;\n var docPos = e.getDocumentPosition();\n var line = editor.session.getLine(docPos.row);\n if (docPos.column == line.length) {\n var screenPos = editor.renderer.pixelToScreenCoordinates(e.clientX, e.clientY);\n var clippedPos = editor.session.documentToScreenPosition(docPos.row, docPos.column);\n if (clippedPos.column != screenPos.column\n || clippedPos.row != screenPos.row) {\n return true;\n }\n }\n return false;\n };\n HoverTooltip.prototype.setDataProvider = function (value) {\n this.$gatherData = value;\n };\n HoverTooltip.prototype.showForRange = function (editor, range, domNode, startingEvent) {\n var MARGIN = 10;\n if (startingEvent && startingEvent != this.lastEvent)\n return;\n if (this.isOpen && document.activeElement == this.getElement())\n return;\n var renderer = editor.renderer;\n if (!this.isOpen) {\n popupManager.addPopup(this);\n this.$registerCloseEvents();\n this.setTheme(renderer.theme);\n }\n this.isOpen = true;\n this.addMarker(range, editor.session);\n this.range = Range.fromPoints(range.start, range.end);\n var position = renderer.textToScreenCoordinates(range.start.row, range.start.column);\n var rect = renderer.scroller.getBoundingClientRect();\n if (position.pageX < rect.left)\n position.pageX = rect.left;\n var element = this.getElement();\n element.innerHTML = \"\";\n element.appendChild(domNode);\n element.style.maxHeight = \"\";\n element.style.display = \"block\";\n var labelHeight = element.clientHeight;\n var labelWidth = element.clientWidth;\n var spaceBelow = window.innerHeight - position.pageY - renderer.lineHeight;\n var isAbove = true;\n if (position.pageY - labelHeight < 0 && position.pageY < spaceBelow) {\n isAbove = false;\n }\n element.style.maxHeight = (isAbove ? position.pageY : spaceBelow) - MARGIN + \"px\";\n element.style.top = isAbove ? \"\" : position.pageY + renderer.lineHeight + \"px\";\n element.style.bottom = isAbove ? window.innerHeight - position.pageY + \"px\" : \"\";\n element.style.left = Math.min(position.pageX, window.innerWidth - labelWidth - MARGIN) + \"px\";\n };\n HoverTooltip.prototype.addMarker = function (range, session) {\n if (this.marker) {\n this.$markerSession.removeMarker(this.marker);\n }\n this.$markerSession = session;\n this.marker = session && session.addMarker(range, \"ace_highlight-marker\", \"text\");\n };\n HoverTooltip.prototype.hide = function (e) {\n if (!e && document.activeElement == this.getElement())\n return;\n if (e && e.target && (e.type != \"keydown\" || e.ctrlKey || e.metaKey) && this.$element.contains(e.target))\n return;\n this.lastEvent = null;\n if (this.timeout)\n clearTimeout(this.timeout);\n this.timeout = null;\n this.addMarker(null);\n if (this.isOpen) {\n this.$removeCloseEvents();\n this.getElement().style.display = \"none\";\n this.isOpen = false;\n popupManager.removePopup(this);\n }\n };\n HoverTooltip.prototype.$registerCloseEvents = function () {\n window.addEventListener(\"keydown\", this.hide, true);\n window.addEventListener(\"wheel\", this.hide, true);\n window.addEventListener(\"mousedown\", this.hide, true);\n };\n HoverTooltip.prototype.$removeCloseEvents = function () {\n window.removeEventListener(\"keydown\", this.hide, true);\n window.removeEventListener(\"wheel\", this.hide, true);\n window.removeEventListener(\"mousedown\", this.hide, true);\n };\n HoverTooltip.prototype.onMouseOut = function (e) {\n if (this.timeout) {\n clearTimeout(this.timeout);\n this.timeout = null;\n }\n this.lastEvent = null;\n if (!this.isOpen)\n return;\n if (!e.relatedTarget || this.getElement().contains(e.relatedTarget))\n return;\n if (e && e.currentTarget.contains(e.relatedTarget))\n return;\n if (!e.relatedTarget.classList.contains(\"ace_content\"))\n this.hide();\n };\n return HoverTooltip;\n}(Tooltip));\nexports.HoverTooltip = HoverTooltip;\n\n});\n\nace.define(\"ace/mouse/default_gutter_handler\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\",\"ace/lib/event\",\"ace/tooltip\",\"ace/config\"], function(require, exports, module){\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar dom = require(\"../lib/dom\");\nvar event = require(\"../lib/event\");\nvar Tooltip = require(\"../tooltip\").Tooltip;\nvar nls = require(\"../config\").nls;\nfunction GutterHandler(mouseHandler) {\n var editor = mouseHandler.editor;\n var gutter = editor.renderer.$gutterLayer;\n var tooltip = new GutterTooltip(editor);\n mouseHandler.editor.setDefaultHandler(\"guttermousedown\", function (e) {\n if (!editor.isFocused() || e.getButton() != 0)\n return;\n var gutterRegion = gutter.getRegion(e);\n if (gutterRegion == \"foldWidgets\")\n return;\n var row = e.getDocumentPosition().row;\n var selection = editor.session.selection;\n if (e.getShiftKey())\n selection.selectTo(row, 0);\n else {\n if (e.domEvent.detail == 2) {\n editor.selectAll();\n return e.preventDefault();\n }\n mouseHandler.$clickSelection = editor.selection.getLineRange(row);\n }\n mouseHandler.setState(\"selectByLines\");\n mouseHandler.captureMouse(e);\n return e.preventDefault();\n });\n var tooltipTimeout, mouseEvent;\n function showTooltip() {\n var row = mouseEvent.getDocumentPosition().row;\n var maxRow = editor.session.getLength();\n if (row == maxRow) {\n var screenRow = editor.renderer.pixelToScreenCoordinates(0, mouseEvent.y).row;\n var pos = mouseEvent.$pos;\n if (screenRow > editor.session.documentToScreenRow(pos.row, pos.column))\n return hideTooltip();\n }\n tooltip.showTooltip(row);\n if (!tooltip.isOpen)\n return;\n editor.on(\"mousewheel\", hideTooltip);\n if (mouseHandler.$tooltipFollowsMouse) {\n moveTooltip(mouseEvent);\n }\n else {\n var gutterRow = mouseEvent.getGutterRow();\n var gutterCell = gutter.$lines.get(gutterRow);\n if (gutterCell) {\n var gutterElement = gutterCell.element.querySelector(\".ace_gutter_annotation\");\n var rect = gutterElement.getBoundingClientRect();\n var style = tooltip.getElement().style;\n style.left = rect.right + \"px\";\n style.top = rect.bottom + \"px\";\n }\n else {\n moveTooltip(mouseEvent);\n }\n }\n }\n function hideTooltip() {\n if (tooltipTimeout)\n tooltipTimeout = clearTimeout(tooltipTimeout);\n if (tooltip.isOpen) {\n tooltip.hideTooltip();\n editor.off(\"mousewheel\", hideTooltip);\n }\n }\n function moveTooltip(e) {\n tooltip.setPosition(e.x, e.y);\n }\n mouseHandler.editor.setDefaultHandler(\"guttermousemove\", function (e) {\n var target = e.domEvent.target || e.domEvent.srcElement;\n if (dom.hasCssClass(target, \"ace_fold-widget\"))\n return hideTooltip();\n if (tooltip.isOpen && mouseHandler.$tooltipFollowsMouse)\n moveTooltip(e);\n mouseEvent = e;\n if (tooltipTimeout)\n return;\n tooltipTimeout = setTimeout(function () {\n tooltipTimeout = null;\n if (mouseEvent && !mouseHandler.isMousePressed)\n showTooltip();\n else\n hideTooltip();\n }, 50);\n });\n event.addListener(editor.renderer.$gutter, \"mouseout\", function (e) {\n mouseEvent = null;\n if (!tooltip.isOpen || tooltipTimeout)\n return;\n tooltipTimeout = setTimeout(function () {\n tooltipTimeout = null;\n hideTooltip();\n }, 50);\n }, editor);\n editor.on(\"changeSession\", hideTooltip);\n editor.on(\"input\", hideTooltip);\n}\nexports.GutterHandler = GutterHandler;\nvar GutterTooltip = /** @class */ (function (_super) {\n __extends(GutterTooltip, _super);\n function GutterTooltip(editor) {\n var _this = _super.call(this, editor.container) || this;\n _this.editor = editor;\n return _this;\n }\n GutterTooltip.prototype.setPosition = function (x, y) {\n var windowWidth = window.innerWidth || document.documentElement.clientWidth;\n var windowHeight = window.innerHeight || document.documentElement.clientHeight;\n var width = this.getWidth();\n var height = this.getHeight();\n x += 15;\n y += 15;\n if (x + width > windowWidth) {\n x -= (x + width) - windowWidth;\n }\n if (y + height > windowHeight) {\n y -= 20 + height;\n }\n Tooltip.prototype.setPosition.call(this, x, y);\n };\n Object.defineProperty(GutterTooltip, \"annotationLabels\", {\n get: function () {\n return {\n error: { singular: nls(\"error\"), plural: nls(\"errors\") },\n warning: { singular: nls(\"warning\"), plural: nls(\"warnings\") },\n info: { singular: nls(\"information message\"), plural: nls(\"information messages\") }\n };\n },\n enumerable: false,\n configurable: true\n });\n GutterTooltip.prototype.showTooltip = function (row) {\n var gutter = this.editor.renderer.$gutterLayer;\n var annotationsInRow = gutter.$annotations[row];\n var annotation;\n if (annotationsInRow)\n annotation = { text: Array.from(annotationsInRow.text), type: Array.from(annotationsInRow.type) };\n else\n annotation = { text: [], type: [] };\n var fold = gutter.session.getFoldLine(row);\n if (fold && gutter.$showFoldedAnnotations) {\n var annotationsInFold = { error: [], warning: [], info: [] };\n var mostSevereAnnotationInFoldType;\n for (var i = row + 1; i <= fold.end.row; i++) {\n if (!gutter.$annotations[i])\n continue;\n for (var j = 0; j < gutter.$annotations[i].text.length; j++) {\n var annotationType = gutter.$annotations[i].type[j];\n annotationsInFold[annotationType].push(gutter.$annotations[i].text[j]);\n if (annotationType === \"error\") {\n mostSevereAnnotationInFoldType = \"error_fold\";\n continue;\n }\n if (annotationType === \"warning\") {\n mostSevereAnnotationInFoldType = \"warning_fold\";\n continue;\n }\n }\n }\n if (mostSevereAnnotationInFoldType === \"error_fold\" || mostSevereAnnotationInFoldType === \"warning_fold\") {\n var summaryFoldedAnnotations = \"\".concat(GutterTooltip.annotationsToSummaryString(annotationsInFold), \" in folded code.\");\n annotation.text.push(summaryFoldedAnnotations);\n annotation.type.push(mostSevereAnnotationInFoldType);\n }\n }\n if (annotation.text.length === 0)\n return this.hide();\n var annotationMessages = { error: [], warning: [], info: [] };\n var iconClassName = gutter.$useSvgGutterIcons ? \"ace_icon_svg\" : \"ace_icon\";\n for (var i = 0; i < annotation.text.length; i++) {\n var line = \" \").concat(annotation.text[i]);\n annotationMessages[annotation.type[i].replace(\"_fold\", \"\")].push(line);\n }\n var tooltipContent = [].concat(annotationMessages.error, annotationMessages.warning, annotationMessages.info).join(\"
    \");\n this.setHtml(tooltipContent);\n this.$element.setAttribute(\"aria-live\", \"polite\");\n if (!this.isOpen) {\n this.setTheme(this.editor.renderer.theme);\n this.setClassName(\"ace_gutter-tooltip\");\n }\n this.show();\n this.editor._signal(\"showGutterTooltip\", this);\n };\n GutterTooltip.prototype.hideTooltip = function () {\n this.$element.removeAttribute(\"aria-live\");\n this.hide();\n this.editor._signal(\"hideGutterTooltip\", this);\n };\n GutterTooltip.annotationsToSummaryString = function (annotations) {\n var e_1, _a;\n var summary = [];\n var annotationTypes = ['error', 'warning', 'info'];\n try {\n for (var annotationTypes_1 = __values(annotationTypes), annotationTypes_1_1 = annotationTypes_1.next(); !annotationTypes_1_1.done; annotationTypes_1_1 = annotationTypes_1.next()) {\n var annotationType = annotationTypes_1_1.value;\n if (!annotations[annotationType].length)\n continue;\n var label = annotations[annotationType].length === 1 ? GutterTooltip.annotationLabels[annotationType].singular : GutterTooltip.annotationLabels[annotationType].plural;\n summary.push(\"\".concat(annotations[annotationType].length, \" \").concat(label));\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (annotationTypes_1_1 && !annotationTypes_1_1.done && (_a = annotationTypes_1.return)) _a.call(annotationTypes_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return summary.join(\", \");\n };\n return GutterTooltip;\n}(Tooltip));\nexports.GutterTooltip = GutterTooltip;\n\n});\n\nace.define(\"ace/mouse/mouse_event\",[\"require\",\"exports\",\"module\",\"ace/lib/event\",\"ace/lib/useragent\"], function(require, exports, module){\"use strict\";\nvar event = require(\"../lib/event\");\nvar useragent = require(\"../lib/useragent\");\nvar MouseEvent = /** @class */ (function () {\n function MouseEvent(domEvent, editor) {\n this.domEvent = domEvent;\n this.editor = editor;\n this.x = this.clientX = domEvent.clientX;\n this.y = this.clientY = domEvent.clientY;\n this.$pos = null;\n this.$inSelection = null;\n this.propagationStopped = false;\n this.defaultPrevented = false;\n }\n MouseEvent.prototype.stopPropagation = function () {\n event.stopPropagation(this.domEvent);\n this.propagationStopped = true;\n };\n MouseEvent.prototype.preventDefault = function () {\n event.preventDefault(this.domEvent);\n this.defaultPrevented = true;\n };\n MouseEvent.prototype.stop = function () {\n this.stopPropagation();\n this.preventDefault();\n };\n MouseEvent.prototype.getDocumentPosition = function () {\n if (this.$pos)\n return this.$pos;\n this.$pos = this.editor.renderer.screenToTextCoordinates(this.clientX, this.clientY);\n return this.$pos;\n };\n MouseEvent.prototype.getGutterRow = function () {\n var documentRow = this.getDocumentPosition().row;\n var screenRow = this.editor.session.documentToScreenRow(documentRow, 0);\n var screenTopRow = this.editor.session.documentToScreenRow(this.editor.renderer.$gutterLayer.$lines.get(0).row, 0);\n return screenRow - screenTopRow;\n };\n MouseEvent.prototype.inSelection = function () {\n if (this.$inSelection !== null)\n return this.$inSelection;\n var editor = this.editor;\n var selectionRange = editor.getSelectionRange();\n if (selectionRange.isEmpty())\n this.$inSelection = false;\n else {\n var pos = this.getDocumentPosition();\n this.$inSelection = selectionRange.contains(pos.row, pos.column);\n }\n return this.$inSelection;\n };\n MouseEvent.prototype.getButton = function () {\n return event.getButton(this.domEvent);\n };\n MouseEvent.prototype.getShiftKey = function () {\n return this.domEvent.shiftKey;\n };\n MouseEvent.prototype.getAccelKey = function () {\n return useragent.isMac ? this.domEvent.metaKey : this.domEvent.ctrlKey;\n };\n return MouseEvent;\n}());\nexports.MouseEvent = MouseEvent;\n\n});\n\nace.define(\"ace/mouse/dragdrop_handler\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\",\"ace/lib/event\",\"ace/lib/useragent\"], function(require, exports, module){\"use strict\";\nvar dom = require(\"../lib/dom\");\nvar event = require(\"../lib/event\");\nvar useragent = require(\"../lib/useragent\");\nvar AUTOSCROLL_DELAY = 200;\nvar SCROLL_CURSOR_DELAY = 200;\nvar SCROLL_CURSOR_HYSTERESIS = 5;\nfunction DragdropHandler(mouseHandler) {\n var editor = mouseHandler.editor;\n var dragImage = dom.createElement(\"div\");\n dragImage.style.cssText = \"top:-100px;position:absolute;z-index:2147483647;opacity:0.5\";\n dragImage.textContent = \"\\xa0\";\n var exports = [\"dragWait\", \"dragWaitEnd\", \"startDrag\", \"dragReadyEnd\", \"onMouseDrag\"];\n exports.forEach(function (x) {\n mouseHandler[x] = this[x];\n }, this);\n editor.on(\"mousedown\", this.onMouseDown.bind(mouseHandler));\n var mouseTarget = editor.container;\n var dragSelectionMarker, x, y;\n var timerId, range;\n var dragCursor, counter = 0;\n var dragOperation;\n var isInternal;\n var autoScrollStartTime;\n var cursorMovedTime;\n var cursorPointOnCaretMoved;\n this.onDragStart = function (e) {\n if (this.cancelDrag || !mouseTarget.draggable) {\n var self = this;\n setTimeout(function () {\n self.startSelect();\n self.captureMouse(e);\n }, 0);\n return e.preventDefault();\n }\n range = editor.getSelectionRange();\n var dataTransfer = e.dataTransfer;\n dataTransfer.effectAllowed = editor.getReadOnly() ? \"copy\" : \"copyMove\";\n editor.container.appendChild(dragImage);\n dataTransfer.setDragImage && dataTransfer.setDragImage(dragImage, 0, 0);\n setTimeout(function () {\n editor.container.removeChild(dragImage);\n });\n dataTransfer.clearData();\n dataTransfer.setData(\"Text\", editor.session.getTextRange());\n isInternal = true;\n this.setState(\"drag\");\n };\n this.onDragEnd = function (e) {\n mouseTarget.draggable = false;\n isInternal = false;\n this.setState(null);\n if (!editor.getReadOnly()) {\n var dropEffect = e.dataTransfer.dropEffect;\n if (!dragOperation && dropEffect == \"move\")\n editor.session.remove(editor.getSelectionRange());\n editor.$resetCursorStyle();\n }\n this.editor.unsetStyle(\"ace_dragging\");\n this.editor.renderer.setCursorStyle(\"\");\n };\n this.onDragEnter = function (e) {\n if (editor.getReadOnly() || !canAccept(e.dataTransfer))\n return;\n x = e.clientX;\n y = e.clientY;\n if (!dragSelectionMarker)\n addDragMarker();\n counter++;\n e.dataTransfer.dropEffect = dragOperation = getDropEffect(e);\n return event.preventDefault(e);\n };\n this.onDragOver = function (e) {\n if (editor.getReadOnly() || !canAccept(e.dataTransfer))\n return;\n x = e.clientX;\n y = e.clientY;\n if (!dragSelectionMarker) {\n addDragMarker();\n counter++;\n }\n if (onMouseMoveTimer !== null)\n onMouseMoveTimer = null;\n e.dataTransfer.dropEffect = dragOperation = getDropEffect(e);\n return event.preventDefault(e);\n };\n this.onDragLeave = function (e) {\n counter--;\n if (counter <= 0 && dragSelectionMarker) {\n clearDragMarker();\n dragOperation = null;\n return event.preventDefault(e);\n }\n };\n this.onDrop = function (e) {\n if (!dragCursor)\n return;\n var dataTransfer = e.dataTransfer;\n if (isInternal) {\n switch (dragOperation) {\n case \"move\":\n if (range.contains(dragCursor.row, dragCursor.column)) {\n range = {\n start: dragCursor,\n end: dragCursor\n };\n }\n else {\n range = editor.moveText(range, dragCursor);\n }\n break;\n case \"copy\":\n range = editor.moveText(range, dragCursor, true);\n break;\n }\n }\n else {\n var dropData = dataTransfer.getData('Text');\n range = {\n start: dragCursor,\n end: editor.session.insert(dragCursor, dropData)\n };\n editor.focus();\n dragOperation = null;\n }\n clearDragMarker();\n return event.preventDefault(e);\n };\n event.addListener(mouseTarget, \"dragstart\", this.onDragStart.bind(mouseHandler), editor);\n event.addListener(mouseTarget, \"dragend\", this.onDragEnd.bind(mouseHandler), editor);\n event.addListener(mouseTarget, \"dragenter\", this.onDragEnter.bind(mouseHandler), editor);\n event.addListener(mouseTarget, \"dragover\", this.onDragOver.bind(mouseHandler), editor);\n event.addListener(mouseTarget, \"dragleave\", this.onDragLeave.bind(mouseHandler), editor);\n event.addListener(mouseTarget, \"drop\", this.onDrop.bind(mouseHandler), editor);\n function scrollCursorIntoView(cursor, prevCursor) {\n var now = Date.now();\n var vMovement = !prevCursor || cursor.row != prevCursor.row;\n var hMovement = !prevCursor || cursor.column != prevCursor.column;\n if (!cursorMovedTime || vMovement || hMovement) {\n editor.moveCursorToPosition(cursor);\n cursorMovedTime = now;\n cursorPointOnCaretMoved = { x: x, y: y };\n }\n else {\n var distance = calcDistance(cursorPointOnCaretMoved.x, cursorPointOnCaretMoved.y, x, y);\n if (distance > SCROLL_CURSOR_HYSTERESIS) {\n cursorMovedTime = null;\n }\n else if (now - cursorMovedTime >= SCROLL_CURSOR_DELAY) {\n editor.renderer.scrollCursorIntoView();\n cursorMovedTime = null;\n }\n }\n }\n function autoScroll(cursor, prevCursor) {\n var now = Date.now();\n var lineHeight = editor.renderer.layerConfig.lineHeight;\n var characterWidth = editor.renderer.layerConfig.characterWidth;\n var editorRect = editor.renderer.scroller.getBoundingClientRect();\n var offsets = {\n x: {\n left: x - editorRect.left,\n right: editorRect.right - x\n },\n y: {\n top: y - editorRect.top,\n bottom: editorRect.bottom - y\n }\n };\n var nearestXOffset = Math.min(offsets.x.left, offsets.x.right);\n var nearestYOffset = Math.min(offsets.y.top, offsets.y.bottom);\n var scrollCursor = { row: cursor.row, column: cursor.column };\n if (nearestXOffset / characterWidth <= 2) {\n scrollCursor.column += (offsets.x.left < offsets.x.right ? -3 : +2);\n }\n if (nearestYOffset / lineHeight <= 1) {\n scrollCursor.row += (offsets.y.top < offsets.y.bottom ? -1 : +1);\n }\n var vScroll = cursor.row != scrollCursor.row;\n var hScroll = cursor.column != scrollCursor.column;\n var vMovement = !prevCursor || cursor.row != prevCursor.row;\n if (vScroll || (hScroll && !vMovement)) {\n if (!autoScrollStartTime)\n autoScrollStartTime = now;\n else if (now - autoScrollStartTime >= AUTOSCROLL_DELAY)\n editor.renderer.scrollCursorIntoView(scrollCursor);\n }\n else {\n autoScrollStartTime = null;\n }\n }\n function onDragInterval() {\n var prevCursor = dragCursor;\n dragCursor = editor.renderer.screenToTextCoordinates(x, y);\n scrollCursorIntoView(dragCursor, prevCursor);\n autoScroll(dragCursor, prevCursor);\n }\n function addDragMarker() {\n range = editor.selection.toOrientedRange();\n dragSelectionMarker = editor.session.addMarker(range, \"ace_selection\", editor.getSelectionStyle());\n editor.clearSelection();\n if (editor.isFocused())\n editor.renderer.$cursorLayer.setBlinking(false);\n clearInterval(timerId);\n onDragInterval();\n timerId = setInterval(onDragInterval, 20);\n counter = 0;\n event.addListener(document, \"mousemove\", onMouseMove);\n }\n function clearDragMarker() {\n clearInterval(timerId);\n editor.session.removeMarker(dragSelectionMarker);\n dragSelectionMarker = null;\n editor.selection.fromOrientedRange(range);\n if (editor.isFocused() && !isInternal)\n editor.$resetCursorStyle();\n range = null;\n dragCursor = null;\n counter = 0;\n autoScrollStartTime = null;\n cursorMovedTime = null;\n event.removeListener(document, \"mousemove\", onMouseMove);\n }\n var onMouseMoveTimer = null;\n function onMouseMove() {\n if (onMouseMoveTimer == null) {\n onMouseMoveTimer = setTimeout(function () {\n if (onMouseMoveTimer != null && dragSelectionMarker)\n clearDragMarker();\n }, 20);\n }\n }\n function canAccept(dataTransfer) {\n var types = dataTransfer.types;\n return !types || Array.prototype.some.call(types, function (type) {\n return type == 'text/plain' || type == 'Text';\n });\n }\n function getDropEffect(e) {\n var copyAllowed = ['copy', 'copymove', 'all', 'uninitialized'];\n var moveAllowed = ['move', 'copymove', 'linkmove', 'all', 'uninitialized'];\n var copyModifierState = useragent.isMac ? e.altKey : e.ctrlKey;\n var effectAllowed = \"uninitialized\";\n try {\n effectAllowed = e.dataTransfer.effectAllowed.toLowerCase();\n }\n catch (e) { }\n var dropEffect = \"none\";\n if (copyModifierState && copyAllowed.indexOf(effectAllowed) >= 0)\n dropEffect = \"copy\";\n else if (moveAllowed.indexOf(effectAllowed) >= 0)\n dropEffect = \"move\";\n else if (copyAllowed.indexOf(effectAllowed) >= 0)\n dropEffect = \"copy\";\n return dropEffect;\n }\n}\n(function () {\n this.dragWait = function () {\n var interval = Date.now() - this.mousedownEvent.time;\n if (interval > this.editor.getDragDelay())\n this.startDrag();\n };\n this.dragWaitEnd = function () {\n var target = this.editor.container;\n target.draggable = false;\n this.startSelect(this.mousedownEvent.getDocumentPosition());\n this.selectEnd();\n };\n this.dragReadyEnd = function (e) {\n this.editor.$resetCursorStyle();\n this.editor.unsetStyle(\"ace_dragging\");\n this.editor.renderer.setCursorStyle(\"\");\n this.dragWaitEnd();\n };\n this.startDrag = function () {\n this.cancelDrag = false;\n var editor = this.editor;\n var target = editor.container;\n target.draggable = true;\n editor.renderer.$cursorLayer.setBlinking(false);\n editor.setStyle(\"ace_dragging\");\n var cursorStyle = useragent.isWin ? \"default\" : \"move\";\n editor.renderer.setCursorStyle(cursorStyle);\n this.setState(\"dragReady\");\n };\n this.onMouseDrag = function (e) {\n var target = this.editor.container;\n if (useragent.isIE && this.state == \"dragReady\") {\n var distance = calcDistance(this.mousedownEvent.x, this.mousedownEvent.y, this.x, this.y);\n if (distance > 3)\n target.dragDrop();\n }\n if (this.state === \"dragWait\") {\n var distance = calcDistance(this.mousedownEvent.x, this.mousedownEvent.y, this.x, this.y);\n if (distance > 0) {\n target.draggable = false;\n this.startSelect(this.mousedownEvent.getDocumentPosition());\n }\n }\n };\n this.onMouseDown = function (e) {\n if (!this.$dragEnabled)\n return;\n this.mousedownEvent = e;\n var editor = this.editor;\n var inSelection = e.inSelection();\n var button = e.getButton();\n var clickCount = e.domEvent.detail || 1;\n if (clickCount === 1 && button === 0 && inSelection) {\n if (e.editor.inMultiSelectMode && (e.getAccelKey() || e.getShiftKey()))\n return;\n this.mousedownEvent.time = Date.now();\n var eventTarget = e.domEvent.target || e.domEvent.srcElement;\n if (\"unselectable\" in eventTarget)\n eventTarget.unselectable = \"on\";\n if (editor.getDragDelay()) {\n if (useragent.isWebKit) {\n this.cancelDrag = true;\n var mouseTarget = editor.container;\n mouseTarget.draggable = true;\n }\n this.setState(\"dragWait\");\n }\n else {\n this.startDrag();\n }\n this.captureMouse(e, this.onMouseDrag.bind(this));\n e.defaultPrevented = true;\n }\n };\n}).call(DragdropHandler.prototype);\nfunction calcDistance(ax, ay, bx, by) {\n return Math.sqrt(Math.pow(bx - ax, 2) + Math.pow(by - ay, 2));\n}\nexports.DragdropHandler = DragdropHandler;\n\n});\n\nace.define(\"ace/mouse/touch_handler\",[\"require\",\"exports\",\"module\",\"ace/mouse/mouse_event\",\"ace/lib/event\",\"ace/lib/dom\"], function(require, exports, module){\"use strict\";\nvar MouseEvent = require(\"./mouse_event\").MouseEvent;\nvar event = require(\"../lib/event\");\nvar dom = require(\"../lib/dom\");\nexports.addTouchListeners = function (el, editor) {\n var mode = \"scroll\";\n var startX;\n var startY;\n var touchStartT;\n var lastT;\n var longTouchTimer;\n var animationTimer;\n var animationSteps = 0;\n var pos;\n var clickCount = 0;\n var vX = 0;\n var vY = 0;\n var pressed;\n var contextMenu;\n function createContextMenu() {\n var clipboard = window.navigator && window.navigator.clipboard;\n var isOpen = false;\n var updateMenu = function () {\n var selected = editor.getCopyText();\n var hasUndo = editor.session.getUndoManager().hasUndo();\n contextMenu.replaceChild(dom.buildDom(isOpen ? [\"span\",\n !selected && [\"span\", { class: \"ace_mobile-button\", action: \"selectall\" }, \"Select All\"],\n selected && [\"span\", { class: \"ace_mobile-button\", action: \"copy\" }, \"Copy\"],\n selected && [\"span\", { class: \"ace_mobile-button\", action: \"cut\" }, \"Cut\"],\n clipboard && [\"span\", { class: \"ace_mobile-button\", action: \"paste\" }, \"Paste\"],\n hasUndo && [\"span\", { class: \"ace_mobile-button\", action: \"undo\" }, \"Undo\"],\n [\"span\", { class: \"ace_mobile-button\", action: \"find\" }, \"Find\"],\n [\"span\", { class: \"ace_mobile-button\", action: \"openCommandPalette\" }, \"Palette\"]\n ] : [\"span\"]), contextMenu.firstChild);\n };\n var handleClick = function (e) {\n var action = e.target.getAttribute(\"action\");\n if (action == \"more\" || !isOpen) {\n isOpen = !isOpen;\n return updateMenu();\n }\n if (action == \"paste\") {\n clipboard.readText().then(function (text) {\n editor.execCommand(action, text);\n });\n }\n else if (action) {\n if (action == \"cut\" || action == \"copy\") {\n if (clipboard)\n clipboard.writeText(editor.getCopyText());\n else\n document.execCommand(\"copy\");\n }\n editor.execCommand(action);\n }\n contextMenu.firstChild.style.display = \"none\";\n isOpen = false;\n if (action != \"openCommandPalette\")\n editor.focus();\n };\n contextMenu = dom.buildDom([\"div\",\n {\n class: \"ace_mobile-menu\",\n ontouchstart: function (e) {\n mode = \"menu\";\n e.stopPropagation();\n e.preventDefault();\n editor.textInput.focus();\n },\n ontouchend: function (e) {\n e.stopPropagation();\n e.preventDefault();\n handleClick(e);\n },\n onclick: handleClick\n },\n [\"span\"],\n [\"span\", { class: \"ace_mobile-button\", action: \"more\" }, \"...\"]\n ], editor.container);\n }\n function showContextMenu() {\n if (!contextMenu)\n createContextMenu();\n var cursor = editor.selection.cursor;\n var pagePos = editor.renderer.textToScreenCoordinates(cursor.row, cursor.column);\n var leftOffset = editor.renderer.textToScreenCoordinates(0, 0).pageX;\n var scrollLeft = editor.renderer.scrollLeft;\n var rect = editor.container.getBoundingClientRect();\n contextMenu.style.top = pagePos.pageY - rect.top - 3 + \"px\";\n if (pagePos.pageX - rect.left < rect.width - 70) {\n contextMenu.style.left = \"\";\n contextMenu.style.right = \"10px\";\n }\n else {\n contextMenu.style.right = \"\";\n contextMenu.style.left = leftOffset + scrollLeft - rect.left + \"px\";\n }\n contextMenu.style.display = \"\";\n contextMenu.firstChild.style.display = \"none\";\n editor.on(\"input\", hideContextMenu);\n }\n function hideContextMenu(e) {\n if (contextMenu)\n contextMenu.style.display = \"none\";\n editor.off(\"input\", hideContextMenu);\n }\n function handleLongTap() {\n longTouchTimer = null;\n clearTimeout(longTouchTimer);\n var range = editor.selection.getRange();\n var inSelection = range.contains(pos.row, pos.column);\n if (range.isEmpty() || !inSelection) {\n editor.selection.moveToPosition(pos);\n editor.selection.selectWord();\n }\n mode = \"wait\";\n showContextMenu();\n }\n function switchToSelectionMode() {\n longTouchTimer = null;\n clearTimeout(longTouchTimer);\n editor.selection.moveToPosition(pos);\n var range = clickCount >= 2\n ? editor.selection.getLineRange(pos.row)\n : editor.session.getBracketRange(pos);\n if (range && !range.isEmpty()) {\n editor.selection.setRange(range);\n }\n else {\n editor.selection.selectWord();\n }\n mode = \"wait\";\n }\n event.addListener(el, \"contextmenu\", function (e) {\n if (!pressed)\n return;\n var textarea = editor.textInput.getElement();\n textarea.focus();\n }, editor);\n event.addListener(el, \"touchstart\", function (e) {\n var touches = e.touches;\n if (longTouchTimer || touches.length > 1) {\n clearTimeout(longTouchTimer);\n longTouchTimer = null;\n touchStartT = -1;\n mode = \"zoom\";\n return;\n }\n pressed = editor.$mouseHandler.isMousePressed = true;\n var h = editor.renderer.layerConfig.lineHeight;\n var w = editor.renderer.layerConfig.lineHeight;\n var t = e.timeStamp;\n lastT = t;\n var touchObj = touches[0];\n var x = touchObj.clientX;\n var y = touchObj.clientY;\n if (Math.abs(startX - x) + Math.abs(startY - y) > h)\n touchStartT = -1;\n startX = e.clientX = x;\n startY = e.clientY = y;\n vX = vY = 0;\n var ev = new MouseEvent(e, editor);\n pos = ev.getDocumentPosition();\n if (t - touchStartT < 500 && touches.length == 1 && !animationSteps) {\n clickCount++;\n e.preventDefault();\n e.button = 0;\n switchToSelectionMode();\n }\n else {\n clickCount = 0;\n var cursor = editor.selection.cursor;\n var anchor = editor.selection.isEmpty() ? cursor : editor.selection.anchor;\n var cursorPos = editor.renderer.$cursorLayer.getPixelPosition(cursor, true);\n var anchorPos = editor.renderer.$cursorLayer.getPixelPosition(anchor, true);\n var rect = editor.renderer.scroller.getBoundingClientRect();\n var offsetTop = editor.renderer.layerConfig.offset;\n var offsetLeft = editor.renderer.scrollLeft;\n var weightedDistance = function (x, y) {\n x = x / w;\n y = y / h - 0.75;\n return x * x + y * y;\n };\n if (e.clientX < rect.left) {\n mode = \"zoom\";\n return;\n }\n var diff1 = weightedDistance(e.clientX - rect.left - cursorPos.left + offsetLeft, e.clientY - rect.top - cursorPos.top + offsetTop);\n var diff2 = weightedDistance(e.clientX - rect.left - anchorPos.left + offsetLeft, e.clientY - rect.top - anchorPos.top + offsetTop);\n if (diff1 < 3.5 && diff2 < 3.5)\n mode = diff1 > diff2 ? \"cursor\" : \"anchor\";\n if (diff2 < 3.5)\n mode = \"anchor\";\n else if (diff1 < 3.5)\n mode = \"cursor\";\n else\n mode = \"scroll\";\n longTouchTimer = setTimeout(handleLongTap, 450);\n }\n touchStartT = t;\n }, editor);\n event.addListener(el, \"touchend\", function (e) {\n pressed = editor.$mouseHandler.isMousePressed = false;\n if (animationTimer)\n clearInterval(animationTimer);\n if (mode == \"zoom\") {\n mode = \"\";\n animationSteps = 0;\n }\n else if (longTouchTimer) {\n editor.selection.moveToPosition(pos);\n animationSteps = 0;\n showContextMenu();\n }\n else if (mode == \"scroll\") {\n animate();\n hideContextMenu();\n }\n else {\n showContextMenu();\n }\n clearTimeout(longTouchTimer);\n longTouchTimer = null;\n }, editor);\n event.addListener(el, \"touchmove\", function (e) {\n if (longTouchTimer) {\n clearTimeout(longTouchTimer);\n longTouchTimer = null;\n }\n var touches = e.touches;\n if (touches.length > 1 || mode == \"zoom\")\n return;\n var touchObj = touches[0];\n var wheelX = startX - touchObj.clientX;\n var wheelY = startY - touchObj.clientY;\n if (mode == \"wait\") {\n if (wheelX * wheelX + wheelY * wheelY > 4)\n mode = \"cursor\";\n else\n return e.preventDefault();\n }\n startX = touchObj.clientX;\n startY = touchObj.clientY;\n e.clientX = touchObj.clientX;\n e.clientY = touchObj.clientY;\n var t = e.timeStamp;\n var dt = t - lastT;\n lastT = t;\n if (mode == \"scroll\") {\n var mouseEvent = new MouseEvent(e, editor);\n mouseEvent.speed = 1;\n mouseEvent.wheelX = wheelX;\n mouseEvent.wheelY = wheelY;\n if (10 * Math.abs(wheelX) < Math.abs(wheelY))\n wheelX = 0;\n if (10 * Math.abs(wheelY) < Math.abs(wheelX))\n wheelY = 0;\n if (dt != 0) {\n vX = wheelX / dt;\n vY = wheelY / dt;\n }\n editor._emit(\"mousewheel\", mouseEvent);\n if (!mouseEvent.propagationStopped) {\n vX = vY = 0;\n }\n }\n else {\n var ev = new MouseEvent(e, editor);\n var pos = ev.getDocumentPosition();\n if (mode == \"cursor\")\n editor.selection.moveCursorToPosition(pos);\n else if (mode == \"anchor\")\n editor.selection.setSelectionAnchor(pos.row, pos.column);\n editor.renderer.scrollCursorIntoView(pos);\n e.preventDefault();\n }\n }, editor);\n function animate() {\n animationSteps += 60;\n animationTimer = setInterval(function () {\n if (animationSteps-- <= 0) {\n clearInterval(animationTimer);\n animationTimer = null;\n }\n if (Math.abs(vX) < 0.01)\n vX = 0;\n if (Math.abs(vY) < 0.01)\n vY = 0;\n if (animationSteps < 20)\n vX = 0.9 * vX;\n if (animationSteps < 20)\n vY = 0.9 * vY;\n var oldScrollTop = editor.session.getScrollTop();\n editor.renderer.scrollBy(10 * vX, 10 * vY);\n if (oldScrollTop == editor.session.getScrollTop())\n animationSteps = 0;\n }, 10);\n }\n};\n\n});\n\nace.define(\"ace/mouse/mouse_handler\",[\"require\",\"exports\",\"module\",\"ace/lib/event\",\"ace/lib/useragent\",\"ace/mouse/default_handlers\",\"ace/mouse/default_gutter_handler\",\"ace/mouse/mouse_event\",\"ace/mouse/dragdrop_handler\",\"ace/mouse/touch_handler\",\"ace/config\"], function(require, exports, module){\"use strict\";\nvar event = require(\"../lib/event\");\nvar useragent = require(\"../lib/useragent\");\nvar DefaultHandlers = require(\"./default_handlers\").DefaultHandlers;\nvar DefaultGutterHandler = require(\"./default_gutter_handler\").GutterHandler;\nvar MouseEvent = require(\"./mouse_event\").MouseEvent;\nvar DragdropHandler = require(\"./dragdrop_handler\").DragdropHandler;\nvar addTouchListeners = require(\"./touch_handler\").addTouchListeners;\nvar config = require(\"../config\");\nvar MouseHandler = /** @class */ (function () {\n function MouseHandler(editor) {\n var _self = this;\n this.editor = editor;\n new DefaultHandlers(this);\n new DefaultGutterHandler(this);\n new DragdropHandler(this);\n var focusEditor = function (e) {\n var windowBlurred = !document.hasFocus || !document.hasFocus()\n || !editor.isFocused() && document.activeElement == (editor.textInput && editor.textInput.getElement());\n if (windowBlurred)\n window.focus();\n editor.focus();\n setTimeout(function () {\n if (!editor.isFocused())\n editor.focus();\n });\n };\n var mouseTarget = editor.renderer.getMouseEventTarget();\n event.addListener(mouseTarget, \"click\", this.onMouseEvent.bind(this, \"click\"), editor);\n event.addListener(mouseTarget, \"mousemove\", this.onMouseMove.bind(this, \"mousemove\"), editor);\n event.addMultiMouseDownListener([\n mouseTarget,\n editor.renderer.scrollBarV && editor.renderer.scrollBarV.inner,\n editor.renderer.scrollBarH && editor.renderer.scrollBarH.inner,\n editor.textInput && editor.textInput.getElement()\n ].filter(Boolean), [400, 300, 250], this, \"onMouseEvent\", editor);\n event.addMouseWheelListener(editor.container, this.onMouseWheel.bind(this, \"mousewheel\"), editor);\n addTouchListeners(editor.container, editor);\n var gutterEl = editor.renderer.$gutter;\n event.addListener(gutterEl, \"mousedown\", this.onMouseEvent.bind(this, \"guttermousedown\"), editor);\n event.addListener(gutterEl, \"click\", this.onMouseEvent.bind(this, \"gutterclick\"), editor);\n event.addListener(gutterEl, \"dblclick\", this.onMouseEvent.bind(this, \"gutterdblclick\"), editor);\n event.addListener(gutterEl, \"mousemove\", this.onMouseEvent.bind(this, \"guttermousemove\"), editor);\n event.addListener(mouseTarget, \"mousedown\", focusEditor, editor);\n event.addListener(gutterEl, \"mousedown\", focusEditor, editor);\n if (useragent.isIE && editor.renderer.scrollBarV) {\n event.addListener(editor.renderer.scrollBarV.element, \"mousedown\", focusEditor, editor);\n event.addListener(editor.renderer.scrollBarH.element, \"mousedown\", focusEditor, editor);\n }\n editor.on(\"mousemove\", function (e) {\n if (_self.state || _self.$dragDelay || !_self.$dragEnabled)\n return;\n var character = editor.renderer.screenToTextCoordinates(e.x, e.y);\n var range = editor.session.selection.getRange();\n var renderer = editor.renderer;\n if (!range.isEmpty() && range.insideStart(character.row, character.column)) {\n renderer.setCursorStyle(\"default\");\n }\n else {\n renderer.setCursorStyle(\"\");\n }\n }, editor);\n }\n MouseHandler.prototype.onMouseEvent = function (name, e) {\n if (!this.editor.session)\n return;\n this.editor._emit(name, new MouseEvent(e, this.editor));\n };\n MouseHandler.prototype.onMouseMove = function (name, e) {\n var listeners = this.editor._eventRegistry && this.editor._eventRegistry.mousemove;\n if (!listeners || !listeners.length)\n return;\n this.editor._emit(name, new MouseEvent(e, this.editor));\n };\n MouseHandler.prototype.onMouseWheel = function (name, e) {\n var mouseEvent = new MouseEvent(e, this.editor);\n mouseEvent.speed = this.$scrollSpeed * 2;\n mouseEvent.wheelX = e.wheelX;\n mouseEvent.wheelY = e.wheelY;\n this.editor._emit(name, mouseEvent);\n };\n MouseHandler.prototype.setState = function (state) {\n this.state = state;\n };\n MouseHandler.prototype.captureMouse = function (ev, mouseMoveHandler) {\n this.x = ev.x;\n this.y = ev.y;\n this.isMousePressed = true;\n var editor = this.editor;\n var renderer = this.editor.renderer;\n renderer.$isMousePressed = true;\n var self = this;\n var onMouseMove = function (e) {\n if (!e)\n return;\n if (useragent.isWebKit && !e.which && self.releaseMouse)\n return self.releaseMouse();\n self.x = e.clientX;\n self.y = e.clientY;\n mouseMoveHandler && mouseMoveHandler(e);\n self.mouseEvent = new MouseEvent(e, self.editor);\n self.$mouseMoved = true;\n };\n var onCaptureEnd = function (e) {\n editor.off(\"beforeEndOperation\", onOperationEnd);\n clearInterval(timerId);\n if (editor.session)\n onCaptureInterval();\n self[self.state + \"End\"] && self[self.state + \"End\"](e);\n self.state = \"\";\n self.isMousePressed = renderer.$isMousePressed = false;\n if (renderer.$keepTextAreaAtCursor)\n renderer.$moveTextAreaToCursor();\n self.$onCaptureMouseMove = self.releaseMouse = null;\n e && self.onMouseEvent(\"mouseup\", e);\n editor.endOperation();\n };\n var onCaptureInterval = function () {\n self[self.state] && self[self.state]();\n self.$mouseMoved = false;\n };\n if (useragent.isOldIE && ev.domEvent.type == \"dblclick\") {\n return setTimeout(function () { onCaptureEnd(ev); });\n }\n var onOperationEnd = function (e) {\n if (!self.releaseMouse)\n return;\n if (editor.curOp.command.name && editor.curOp.selectionChanged) {\n self[self.state + \"End\"] && self[self.state + \"End\"]();\n self.state = \"\";\n self.releaseMouse();\n }\n };\n editor.on(\"beforeEndOperation\", onOperationEnd);\n editor.startOperation({ command: { name: \"mouse\" } });\n self.$onCaptureMouseMove = onMouseMove;\n self.releaseMouse = event.capture(this.editor.container, onMouseMove, onCaptureEnd);\n var timerId = setInterval(onCaptureInterval, 20);\n };\n MouseHandler.prototype.cancelContextMenu = function () {\n var stop = function (e) {\n if (e && e.domEvent && e.domEvent.type != \"contextmenu\")\n return;\n this.editor.off(\"nativecontextmenu\", stop);\n if (e && e.domEvent)\n event.stopEvent(e.domEvent);\n }.bind(this);\n setTimeout(stop, 10);\n this.editor.on(\"nativecontextmenu\", stop);\n };\n MouseHandler.prototype.destroy = function () {\n if (this.releaseMouse)\n this.releaseMouse();\n };\n return MouseHandler;\n}());\nMouseHandler.prototype.releaseMouse = null;\nconfig.defineOptions(MouseHandler.prototype, \"mouseHandler\", {\n scrollSpeed: { initialValue: 2 },\n dragDelay: { initialValue: (useragent.isMac ? 150 : 0) },\n dragEnabled: { initialValue: true },\n focusTimeout: { initialValue: 0 },\n tooltipFollowsMouse: { initialValue: true }\n});\nexports.MouseHandler = MouseHandler;\n\n});\n\nace.define(\"ace/mouse/fold_handler\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"], function(require, exports, module){\"use strict\";\nvar dom = require(\"../lib/dom\");\nvar FoldHandler = /** @class */ (function () {\n function FoldHandler(editor) {\n editor.on(\"click\", function (e) {\n var position = e.getDocumentPosition();\n var session = editor.session;\n var fold = session.getFoldAt(position.row, position.column, 1);\n if (fold) {\n if (e.getAccelKey())\n session.removeFold(fold);\n else\n session.expandFold(fold);\n e.stop();\n }\n var target = e.domEvent && e.domEvent.target;\n if (target && dom.hasCssClass(target, \"ace_inline_button\")) {\n if (dom.hasCssClass(target, \"ace_toggle_wrap\")) {\n session.setOption(\"wrap\", !session.getUseWrapMode());\n editor.renderer.scrollCursorIntoView();\n }\n }\n });\n editor.on(\"gutterclick\", function (e) {\n var gutterRegion = editor.renderer.$gutterLayer.getRegion(e);\n if (gutterRegion == \"foldWidgets\") {\n var row = e.getDocumentPosition().row;\n var session = editor.session;\n if (session.foldWidgets && session.foldWidgets[row])\n editor.session.onFoldWidgetClick(row, e);\n if (!editor.isFocused())\n editor.focus();\n e.stop();\n }\n });\n editor.on(\"gutterdblclick\", function (e) {\n var gutterRegion = editor.renderer.$gutterLayer.getRegion(e);\n if (gutterRegion == \"foldWidgets\") {\n var row = e.getDocumentPosition().row;\n var session = editor.session;\n var data = session.getParentFoldRangeData(row, true);\n var range = data.range || data.firstRange;\n if (range) {\n row = range.start.row;\n var fold = session.getFoldAt(row, session.getLine(row).length, 1);\n if (fold) {\n session.removeFold(fold);\n }\n else {\n session.addFold(\"...\", range);\n editor.renderer.scrollCursorIntoView({ row: range.start.row, column: 0 });\n }\n }\n e.stop();\n }\n });\n }\n return FoldHandler;\n}());\nexports.FoldHandler = FoldHandler;\n\n});\n\nace.define(\"ace/keyboard/keybinding\",[\"require\",\"exports\",\"module\",\"ace/lib/keys\",\"ace/lib/event\"], function(require, exports, module){\"use strict\";\nvar keyUtil = require(\"../lib/keys\");\nvar event = require(\"../lib/event\");\nvar KeyBinding = /** @class */ (function () {\n function KeyBinding(editor) {\n this.$editor = editor;\n this.$data = { editor: editor };\n this.$handlers = [];\n this.setDefaultHandler(editor.commands);\n }\n KeyBinding.prototype.setDefaultHandler = function (kb) {\n this.removeKeyboardHandler(this.$defaultHandler);\n this.$defaultHandler = kb;\n this.addKeyboardHandler(kb, 0);\n };\n KeyBinding.prototype.setKeyboardHandler = function (kb) {\n var h = this.$handlers;\n if (h[h.length - 1] == kb)\n return;\n while (h[h.length - 1] && h[h.length - 1] != this.$defaultHandler)\n this.removeKeyboardHandler(h[h.length - 1]);\n this.addKeyboardHandler(kb, 1);\n };\n KeyBinding.prototype.addKeyboardHandler = function (kb, pos) {\n if (!kb)\n return;\n if (typeof kb == \"function\" && !kb.handleKeyboard)\n kb.handleKeyboard = kb;\n var i = this.$handlers.indexOf(kb);\n if (i != -1)\n this.$handlers.splice(i, 1);\n if (pos == undefined)\n this.$handlers.push(kb);\n else\n this.$handlers.splice(pos, 0, kb);\n if (i == -1 && kb.attach)\n kb.attach(this.$editor);\n };\n KeyBinding.prototype.removeKeyboardHandler = function (kb) {\n var i = this.$handlers.indexOf(kb);\n if (i == -1)\n return false;\n this.$handlers.splice(i, 1);\n kb.detach && kb.detach(this.$editor);\n return true;\n };\n KeyBinding.prototype.getKeyboardHandler = function () {\n return this.$handlers[this.$handlers.length - 1];\n };\n KeyBinding.prototype.getStatusText = function () {\n var data = this.$data;\n var editor = data.editor;\n return this.$handlers.map(function (h) {\n return h.getStatusText && h.getStatusText(editor, data) || \"\";\n }).filter(Boolean).join(\" \");\n };\n KeyBinding.prototype.$callKeyboardHandlers = function (hashId, keyString, keyCode, e) {\n var toExecute;\n var success = false;\n var commands = this.$editor.commands;\n for (var i = this.$handlers.length; i--;) {\n toExecute = this.$handlers[i].handleKeyboard(this.$data, hashId, keyString, keyCode, e);\n if (!toExecute || !toExecute.command)\n continue;\n if (toExecute.command == \"null\") {\n success = true;\n }\n else {\n success = commands.exec(toExecute.command, this.$editor, toExecute.args, e);\n }\n if (success && e && hashId != -1 &&\n toExecute.passEvent != true && toExecute.command.passEvent != true) {\n event.stopEvent(e);\n }\n if (success)\n break;\n }\n if (!success && hashId == -1) {\n toExecute = { command: \"insertstring\" };\n success = commands.exec(\"insertstring\", this.$editor, keyString);\n }\n if (success && this.$editor._signal)\n this.$editor._signal(\"keyboardActivity\", toExecute);\n return success;\n };\n KeyBinding.prototype.onCommandKey = function (e, hashId, keyCode) {\n var keyString = keyUtil.keyCodeToString(keyCode);\n return this.$callKeyboardHandlers(hashId, keyString, keyCode, e);\n };\n KeyBinding.prototype.onTextInput = function (text) {\n return this.$callKeyboardHandlers(-1, text);\n };\n return KeyBinding;\n}());\nexports.KeyBinding = KeyBinding;\n\n});\n\nace.define(\"ace/lib/bidiutil\",[\"require\",\"exports\",\"module\"], function(require, exports, module){\"use strict\";\nvar ArabicAlefBetIntervalsBegine = ['\\u0621', '\\u0641'];\nvar ArabicAlefBetIntervalsEnd = ['\\u063A', '\\u064a'];\nvar dir = 0, hiLevel = 0;\nvar lastArabic = false, hasUBAT_AL = false, hasUBAT_B = false, hasUBAT_S = false, hasBlockSep = false, hasSegSep = false;\nvar impTab_LTR = [ [0, 3, 0, 1, 0, 0, 0], [0, 3, 0, 1, 2, 2, 0], [0, 3, 0, 0x11, 2, 0, 1], [0, 3, 5, 5, 4, 1, 0], [0, 3, 0x15, 0x15, 4, 0, 1], [0, 3, 5, 5, 4, 2, 0]\n];\nvar impTab_RTL = [ [2, 0, 1, 1, 0, 1, 0], [2, 0, 1, 1, 0, 2, 0], [2, 0, 2, 1, 3, 2, 0], [2, 0, 2, 0x21, 3, 1, 1]\n];\nvar LTR = 0, RTL = 1;\nvar L = 0;\nvar R = 1;\nvar EN = 2;\nvar AN = 3;\nvar ON = 4;\nvar B = 5;\nvar S = 6;\nvar AL = 7;\nvar WS = 8;\nvar CS = 9;\nvar ES = 10;\nvar ET = 11;\nvar NSM = 12;\nvar LRE = 13;\nvar RLE = 14;\nvar PDF = 15;\nvar LRO = 16;\nvar RLO = 17;\nvar BN = 18;\nvar UnicodeTBL00 = [\n BN, BN, BN, BN, BN, BN, BN, BN, BN, S, B, S, WS, B, BN, BN,\n BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, B, B, B, S,\n WS, ON, ON, ET, ET, ET, ON, ON, ON, ON, ON, ES, CS, ES, CS, CS,\n EN, EN, EN, EN, EN, EN, EN, EN, EN, EN, CS, ON, ON, ON, ON, ON,\n ON, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L,\n L, L, L, L, L, L, L, L, L, L, L, ON, ON, ON, ON, ON,\n ON, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L,\n L, L, L, L, L, L, L, L, L, L, L, ON, ON, ON, ON, BN,\n BN, BN, BN, BN, BN, B, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN,\n BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN,\n CS, ON, ET, ET, ET, ET, ON, ON, ON, ON, L, ON, ON, BN, ON, ON,\n ET, ET, EN, EN, ON, L, ON, ON, ON, EN, L, ON, ON, ON, ON, ON\n];\nvar UnicodeTBL20 = [\n WS, WS, WS, WS, WS, WS, WS, WS, WS, WS, WS, BN, BN, BN, L, R,\n ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON,\n ON, ON, ON, ON, ON, ON, ON, ON, WS, B, LRE, RLE, PDF, LRO, RLO, CS,\n ET, ET, ET, ET, ET, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON,\n ON, ON, ON, ON, CS, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON,\n ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, WS\n];\nfunction _computeLevels(chars, levels, len, charTypes) {\n var impTab = dir ? impTab_RTL : impTab_LTR, prevState = null, newClass = null, newLevel = null, newState = 0, action = null, cond = null, condPos = -1, i = null, ix = null, classes = [];\n if (!charTypes) {\n for (i = 0, charTypes = []; i < len; i++) {\n charTypes[i] = _getCharacterType(chars[i]);\n }\n }\n hiLevel = dir;\n lastArabic = false;\n hasUBAT_AL = false;\n hasUBAT_B = false;\n hasUBAT_S = false;\n for (ix = 0; ix < len; ix++) {\n prevState = newState;\n classes[ix] = newClass = _getCharClass(chars, charTypes, classes, ix);\n newState = impTab[prevState][newClass];\n action = newState & 0xF0;\n newState &= 0x0F;\n levels[ix] = newLevel = impTab[newState][5];\n if (action > 0) {\n if (action == 0x10) {\n for (i = condPos; i < ix; i++) {\n levels[i] = 1;\n }\n condPos = -1;\n }\n else {\n condPos = -1;\n }\n }\n cond = impTab[newState][6];\n if (cond) {\n if (condPos == -1) {\n condPos = ix;\n }\n }\n else {\n if (condPos > -1) {\n for (i = condPos; i < ix; i++) {\n levels[i] = newLevel;\n }\n condPos = -1;\n }\n }\n if (charTypes[ix] == B) {\n levels[ix] = 0;\n }\n hiLevel |= newLevel;\n }\n if (hasUBAT_S) {\n for (i = 0; i < len; i++) {\n if (charTypes[i] == S) {\n levels[i] = dir;\n for (var j = i - 1; j >= 0; j--) {\n if (charTypes[j] == WS) {\n levels[j] = dir;\n }\n else {\n break;\n }\n }\n }\n }\n }\n}\nfunction _invertLevel(lev, levels, _array) {\n if (hiLevel < lev) {\n return;\n }\n if (lev == 1 && dir == RTL && !hasUBAT_B) {\n _array.reverse();\n return;\n }\n var len = _array.length, start = 0, end, lo, hi, tmp;\n while (start < len) {\n if (levels[start] >= lev) {\n end = start + 1;\n while (end < len && levels[end] >= lev) {\n end++;\n }\n for (lo = start, hi = end - 1; lo < hi; lo++, hi--) {\n tmp = _array[lo];\n _array[lo] = _array[hi];\n _array[hi] = tmp;\n }\n start = end;\n }\n start++;\n }\n}\nfunction _getCharClass(chars, types, classes, ix) {\n var cType = types[ix], wType, nType, len, i;\n switch (cType) {\n case L:\n case R:\n lastArabic = false;\n case ON:\n case AN:\n return cType;\n case EN:\n return lastArabic ? AN : EN;\n case AL:\n lastArabic = true;\n hasUBAT_AL = true;\n return R;\n case WS:\n return ON;\n case CS:\n if (ix < 1 || (ix + 1) >= types.length ||\n ((wType = classes[ix - 1]) != EN && wType != AN) ||\n ((nType = types[ix + 1]) != EN && nType != AN)) {\n return ON;\n }\n if (lastArabic) {\n nType = AN;\n }\n return nType == wType ? nType : ON;\n case ES:\n wType = ix > 0 ? classes[ix - 1] : B;\n if (wType == EN && (ix + 1) < types.length && types[ix + 1] == EN) {\n return EN;\n }\n return ON;\n case ET:\n if (ix > 0 && classes[ix - 1] == EN) {\n return EN;\n }\n if (lastArabic) {\n return ON;\n }\n i = ix + 1;\n len = types.length;\n while (i < len && types[i] == ET) {\n i++;\n }\n if (i < len && types[i] == EN) {\n return EN;\n }\n return ON;\n case NSM:\n len = types.length;\n i = ix + 1;\n while (i < len && types[i] == NSM) {\n i++;\n }\n if (i < len) {\n var c = chars[ix], rtlCandidate = (c >= 0x0591 && c <= 0x08FF) || c == 0xFB1E;\n wType = types[i];\n if (rtlCandidate && (wType == R || wType == AL)) {\n return R;\n }\n }\n if (ix < 1 || (wType = types[ix - 1]) == B) {\n return ON;\n }\n return classes[ix - 1];\n case B:\n lastArabic = false;\n hasUBAT_B = true;\n return dir;\n case S:\n hasUBAT_S = true;\n return ON;\n case LRE:\n case RLE:\n case LRO:\n case RLO:\n case PDF:\n lastArabic = false;\n case BN:\n return ON;\n }\n}\nfunction _getCharacterType(ch) {\n var uc = ch.charCodeAt(0), hi = uc >> 8;\n if (hi == 0) {\n return ((uc > 0x00BF) ? L : UnicodeTBL00[uc]);\n }\n else if (hi == 5) {\n return (/[\\u0591-\\u05f4]/.test(ch) ? R : L);\n }\n else if (hi == 6) {\n if (/[\\u0610-\\u061a\\u064b-\\u065f\\u06d6-\\u06e4\\u06e7-\\u06ed]/.test(ch))\n return NSM;\n else if (/[\\u0660-\\u0669\\u066b-\\u066c]/.test(ch))\n return AN;\n else if (uc == 0x066A)\n return ET;\n else if (/[\\u06f0-\\u06f9]/.test(ch))\n return EN;\n else\n return AL;\n }\n else if (hi == 0x20 && uc <= 0x205F) {\n return UnicodeTBL20[uc & 0xFF];\n }\n else if (hi == 0xFE) {\n return (uc >= 0xFE70 ? AL : ON);\n }\n return ON;\n}\nfunction _isArabicDiacritics(ch) {\n return (ch >= '\\u064b' && ch <= '\\u0655');\n}\nexports.L = L;\nexports.R = R;\nexports.EN = EN;\nexports.ON_R = 3;\nexports.AN = 4;\nexports.R_H = 5;\nexports.B = 6;\nexports.RLE = 7;\nexports.DOT = \"\\xB7\";\nexports.doBidiReorder = function (text, textCharTypes, isRtl) {\n if (text.length < 2)\n return {};\n var chars = text.split(\"\"), logicalFromVisual = new Array(chars.length), bidiLevels = new Array(chars.length), levels = [];\n dir = isRtl ? RTL : LTR;\n _computeLevels(chars, levels, chars.length, textCharTypes);\n for (var i = 0; i < logicalFromVisual.length; logicalFromVisual[i] = i, i++)\n ;\n _invertLevel(2, levels, logicalFromVisual);\n _invertLevel(1, levels, logicalFromVisual);\n for (var i = 0; i < logicalFromVisual.length - 1; i++) { //fix levels to reflect character width\n if (textCharTypes[i] === AN) {\n levels[i] = exports.AN;\n }\n else if (levels[i] === R && ((textCharTypes[i] > AL && textCharTypes[i] < LRE)\n || textCharTypes[i] === ON || textCharTypes[i] === BN)) {\n levels[i] = exports.ON_R;\n }\n else if ((i > 0 && chars[i - 1] === '\\u0644') && /\\u0622|\\u0623|\\u0625|\\u0627/.test(chars[i])) {\n levels[i - 1] = levels[i] = exports.R_H;\n i++;\n }\n }\n if (chars[chars.length - 1] === exports.DOT)\n levels[chars.length - 1] = exports.B;\n if (chars[0] === '\\u202B')\n levels[0] = exports.RLE;\n for (var i = 0; i < logicalFromVisual.length; i++) {\n bidiLevels[i] = levels[logicalFromVisual[i]];\n }\n return { 'logicalFromVisual': logicalFromVisual, 'bidiLevels': bidiLevels };\n};\nexports.hasBidiCharacters = function (text, textCharTypes) {\n var ret = false;\n for (var i = 0; i < text.length; i++) {\n textCharTypes[i] = _getCharacterType(text.charAt(i));\n if (!ret && (textCharTypes[i] == R || textCharTypes[i] == AL || textCharTypes[i] == AN))\n ret = true;\n }\n return ret;\n};\nexports.getVisualFromLogicalIdx = function (logIdx, rowMap) {\n for (var i = 0; i < rowMap.logicalFromVisual.length; i++) {\n if (rowMap.logicalFromVisual[i] == logIdx)\n return i;\n }\n return 0;\n};\n\n});\n\nace.define(\"ace/bidihandler\",[\"require\",\"exports\",\"module\",\"ace/lib/bidiutil\",\"ace/lib/lang\"], function(require, exports, module){\"use strict\";\nvar bidiUtil = require(\"./lib/bidiutil\");\nvar lang = require(\"./lib/lang\");\nvar bidiRE = /[\\u0590-\\u05f4\\u0600-\\u06ff\\u0700-\\u08ac\\u202B]/;\nvar BidiHandler = /** @class */ (function () {\n function BidiHandler(session) {\n this.session = session;\n this.bidiMap = {};\n this.currentRow = null;\n this.bidiUtil = bidiUtil;\n this.charWidths = [];\n this.EOL = \"\\xAC\";\n this.showInvisibles = true;\n this.isRtlDir = false;\n this.$isRtl = false;\n this.line = \"\";\n this.wrapIndent = 0;\n this.EOF = \"\\xB6\";\n this.RLE = \"\\u202B\";\n this.contentWidth = 0;\n this.fontMetrics = null;\n this.rtlLineOffset = 0;\n this.wrapOffset = 0;\n this.isMoveLeftOperation = false;\n this.seenBidi = bidiRE.test(session.getValue());\n }\n BidiHandler.prototype.isBidiRow = function (screenRow, docRow, splitIndex) {\n if (!this.seenBidi)\n return false;\n if (screenRow !== this.currentRow) {\n this.currentRow = screenRow;\n this.updateRowLine(docRow, splitIndex);\n this.updateBidiMap();\n }\n return this.bidiMap.bidiLevels;\n };\n BidiHandler.prototype.onChange = function (delta) {\n if (!this.seenBidi) {\n if (delta.action == \"insert\" && bidiRE.test(delta.lines.join(\"\\n\"))) {\n this.seenBidi = true;\n this.currentRow = null;\n }\n }\n else {\n this.currentRow = null;\n }\n };\n BidiHandler.prototype.getDocumentRow = function () {\n var docRow = 0;\n var rowCache = this.session.$screenRowCache;\n if (rowCache.length) {\n var index = this.session.$getRowCacheIndex(rowCache, this.currentRow);\n if (index >= 0)\n docRow = this.session.$docRowCache[index];\n }\n return docRow;\n };\n BidiHandler.prototype.getSplitIndex = function () {\n var splitIndex = 0;\n var rowCache = this.session.$screenRowCache;\n if (rowCache.length) {\n var currentIndex, prevIndex = this.session.$getRowCacheIndex(rowCache, this.currentRow);\n while (this.currentRow - splitIndex > 0) {\n currentIndex = this.session.$getRowCacheIndex(rowCache, this.currentRow - splitIndex - 1);\n if (currentIndex !== prevIndex)\n break;\n prevIndex = currentIndex;\n splitIndex++;\n }\n }\n else {\n splitIndex = this.currentRow;\n }\n return splitIndex;\n };\n BidiHandler.prototype.updateRowLine = function (docRow, splitIndex) {\n if (docRow === undefined)\n docRow = this.getDocumentRow();\n var isLastRow = (docRow === this.session.getLength() - 1), endOfLine = isLastRow ? this.EOF : this.EOL;\n this.wrapIndent = 0;\n this.line = this.session.getLine(docRow);\n this.isRtlDir = this.$isRtl || this.line.charAt(0) === this.RLE;\n if (this.session.$useWrapMode) {\n var splits = this.session.$wrapData[docRow];\n if (splits) {\n if (splitIndex === undefined)\n splitIndex = this.getSplitIndex();\n if (splitIndex > 0 && splits.length) {\n this.wrapIndent = splits.indent;\n this.wrapOffset = this.wrapIndent * this.charWidths[bidiUtil.L];\n this.line = (splitIndex < splits.length) ?\n this.line.substring(splits[splitIndex - 1], splits[splitIndex]) :\n this.line.substring(splits[splits.length - 1]);\n }\n else {\n this.line = this.line.substring(0, splits[splitIndex]);\n }\n if (splitIndex == splits.length) {\n this.line += (this.showInvisibles) ? endOfLine : bidiUtil.DOT;\n }\n }\n }\n else {\n this.line += this.showInvisibles ? endOfLine : bidiUtil.DOT;\n }\n var session = this.session, shift = 0, size;\n this.line = this.line.replace(/\\t|[\\u1100-\\u2029, \\u202F-\\uFFE6]/g, function (ch, i) {\n if (ch === '\\t' || session.isFullWidth(ch.charCodeAt(0))) {\n size = (ch === '\\t') ? session.getScreenTabSize(i + shift) : 2;\n shift += size - 1;\n return lang.stringRepeat(bidiUtil.DOT, size);\n }\n return ch;\n });\n if (this.isRtlDir) {\n this.fontMetrics.$main.textContent = (this.line.charAt(this.line.length - 1) == bidiUtil.DOT) ? this.line.substr(0, this.line.length - 1) : this.line;\n this.rtlLineOffset = this.contentWidth - this.fontMetrics.$main.getBoundingClientRect().width;\n }\n };\n BidiHandler.prototype.updateBidiMap = function () {\n var textCharTypes = [];\n if (bidiUtil.hasBidiCharacters(this.line, textCharTypes) || this.isRtlDir) {\n this.bidiMap = bidiUtil.doBidiReorder(this.line, textCharTypes, this.isRtlDir);\n }\n else {\n this.bidiMap = {};\n }\n };\n BidiHandler.prototype.markAsDirty = function () {\n this.currentRow = null;\n };\n BidiHandler.prototype.updateCharacterWidths = function (fontMetrics) {\n if (this.characterWidth === fontMetrics.$characterSize.width)\n return;\n this.fontMetrics = fontMetrics;\n var characterWidth = this.characterWidth = fontMetrics.$characterSize.width;\n var bidiCharWidth = fontMetrics.$measureCharWidth(\"\\u05d4\");\n this.charWidths[bidiUtil.L] = this.charWidths[bidiUtil.EN] = this.charWidths[bidiUtil.ON_R] = characterWidth;\n this.charWidths[bidiUtil.R] = this.charWidths[bidiUtil.AN] = bidiCharWidth;\n this.charWidths[bidiUtil.R_H] = bidiCharWidth * 0.45;\n this.charWidths[bidiUtil.B] = this.charWidths[bidiUtil.RLE] = 0;\n this.currentRow = null;\n };\n BidiHandler.prototype.setShowInvisibles = function (showInvisibles) {\n this.showInvisibles = showInvisibles;\n this.currentRow = null;\n };\n BidiHandler.prototype.setEolChar = function (eolChar) {\n this.EOL = eolChar;\n };\n BidiHandler.prototype.setContentWidth = function (width) {\n this.contentWidth = width;\n };\n BidiHandler.prototype.isRtlLine = function (row) {\n if (this.$isRtl)\n return true;\n if (row != undefined)\n return (this.session.getLine(row).charAt(0) == this.RLE);\n else\n return this.isRtlDir;\n };\n BidiHandler.prototype.setRtlDirection = function (editor, isRtlDir) {\n var cursor = editor.getCursorPosition();\n for (var row = editor.selection.getSelectionAnchor().row; row <= cursor.row; row++) {\n if (!isRtlDir && editor.session.getLine(row).charAt(0) === editor.session.$bidiHandler.RLE)\n editor.session.doc.removeInLine(row, 0, 1);\n else if (isRtlDir && editor.session.getLine(row).charAt(0) !== editor.session.$bidiHandler.RLE)\n editor.session.doc.insert({ column: 0, row: row }, editor.session.$bidiHandler.RLE);\n }\n };\n BidiHandler.prototype.getPosLeft = function (col) {\n col -= this.wrapIndent;\n var leftBoundary = (this.line.charAt(0) === this.RLE) ? 1 : 0;\n var logicalIdx = (col > leftBoundary) ? (this.session.getOverwrite() ? col : col - 1) : leftBoundary;\n var visualIdx = bidiUtil.getVisualFromLogicalIdx(logicalIdx, this.bidiMap), levels = this.bidiMap.bidiLevels, left = 0;\n if (!this.session.getOverwrite() && col <= leftBoundary && levels[visualIdx] % 2 !== 0)\n visualIdx++;\n for (var i = 0; i < visualIdx; i++) {\n left += this.charWidths[levels[i]];\n }\n if (!this.session.getOverwrite() && (col > leftBoundary) && (levels[visualIdx] % 2 === 0))\n left += this.charWidths[levels[visualIdx]];\n if (this.wrapIndent)\n left += this.isRtlDir ? (-1 * this.wrapOffset) : this.wrapOffset;\n if (this.isRtlDir)\n left += this.rtlLineOffset;\n return left;\n };\n BidiHandler.prototype.getSelections = function (startCol, endCol) {\n var map = this.bidiMap, levels = map.bidiLevels, level, selections = [], offset = 0, selColMin = Math.min(startCol, endCol) - this.wrapIndent, selColMax = Math.max(startCol, endCol) - this.wrapIndent, isSelected = false, isSelectedPrev = false, selectionStart = 0;\n if (this.wrapIndent)\n offset += this.isRtlDir ? (-1 * this.wrapOffset) : this.wrapOffset;\n for (var logIdx, visIdx = 0; visIdx < levels.length; visIdx++) {\n logIdx = map.logicalFromVisual[visIdx];\n level = levels[visIdx];\n isSelected = (logIdx >= selColMin) && (logIdx < selColMax);\n if (isSelected && !isSelectedPrev) {\n selectionStart = offset;\n }\n else if (!isSelected && isSelectedPrev) {\n selections.push({ left: selectionStart, width: offset - selectionStart });\n }\n offset += this.charWidths[level];\n isSelectedPrev = isSelected;\n }\n if (isSelected && (visIdx === levels.length)) {\n selections.push({ left: selectionStart, width: offset - selectionStart });\n }\n if (this.isRtlDir) {\n for (var i = 0; i < selections.length; i++) {\n selections[i].left += this.rtlLineOffset;\n }\n }\n return selections;\n };\n BidiHandler.prototype.offsetToCol = function (posX) {\n if (this.isRtlDir)\n posX -= this.rtlLineOffset;\n var logicalIdx = 0, posX = Math.max(posX, 0), offset = 0, visualIdx = 0, levels = this.bidiMap.bidiLevels, charWidth = this.charWidths[levels[visualIdx]];\n if (this.wrapIndent)\n posX -= this.isRtlDir ? (-1 * this.wrapOffset) : this.wrapOffset;\n while (posX > offset + charWidth / 2) {\n offset += charWidth;\n if (visualIdx === levels.length - 1) {\n charWidth = 0;\n break;\n }\n charWidth = this.charWidths[levels[++visualIdx]];\n }\n if (visualIdx > 0 && (levels[visualIdx - 1] % 2 !== 0) && (levels[visualIdx] % 2 === 0)) {\n if (posX < offset)\n visualIdx--;\n logicalIdx = this.bidiMap.logicalFromVisual[visualIdx];\n }\n else if (visualIdx > 0 && (levels[visualIdx - 1] % 2 === 0) && (levels[visualIdx] % 2 !== 0)) {\n logicalIdx = 1 + ((posX > offset) ? this.bidiMap.logicalFromVisual[visualIdx]\n : this.bidiMap.logicalFromVisual[visualIdx - 1]);\n }\n else if ((this.isRtlDir && visualIdx === levels.length - 1 && charWidth === 0 && (levels[visualIdx - 1] % 2 === 0))\n || (!this.isRtlDir && visualIdx === 0 && (levels[visualIdx] % 2 !== 0))) {\n logicalIdx = 1 + this.bidiMap.logicalFromVisual[visualIdx];\n }\n else {\n if (visualIdx > 0 && (levels[visualIdx - 1] % 2 !== 0) && charWidth !== 0)\n visualIdx--;\n logicalIdx = this.bidiMap.logicalFromVisual[visualIdx];\n }\n if (logicalIdx === 0 && this.isRtlDir)\n logicalIdx++;\n return (logicalIdx + this.wrapIndent);\n };\n return BidiHandler;\n}());\nexports.BidiHandler = BidiHandler;\n\n});\n\nace.define(\"ace/selection\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/lib/event_emitter\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"./lib/oop\");\nvar lang = require(\"./lib/lang\");\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar Range = require(\"./range\").Range;\nvar Selection = /** @class */ (function () {\n function Selection(session) {\n this.session = session;\n this.doc = session.getDocument();\n this.clearSelection();\n this.cursor = this.lead = this.doc.createAnchor(0, 0);\n this.anchor = this.doc.createAnchor(0, 0);\n this.$silent = false;\n var self = this;\n this.cursor.on(\"change\", function (e) {\n self.$cursorChanged = true;\n if (!self.$silent)\n self._emit(\"changeCursor\");\n if (!self.$isEmpty && !self.$silent)\n self._emit(\"changeSelection\");\n if (!self.$keepDesiredColumnOnChange && e.old.column != e.value.column)\n self.$desiredColumn = null;\n });\n this.anchor.on(\"change\", function () {\n self.$anchorChanged = true;\n if (!self.$isEmpty && !self.$silent)\n self._emit(\"changeSelection\");\n });\n }\n Selection.prototype.isEmpty = function () {\n return this.$isEmpty || (this.anchor.row == this.lead.row &&\n this.anchor.column == this.lead.column);\n };\n Selection.prototype.isMultiLine = function () {\n return !this.$isEmpty && this.anchor.row != this.cursor.row;\n };\n Selection.prototype.getCursor = function () {\n return this.lead.getPosition();\n };\n Selection.prototype.setAnchor = function (row, column) {\n this.$isEmpty = false;\n this.anchor.setPosition(row, column);\n };\n Selection.prototype.getAnchor = function () {\n if (this.$isEmpty)\n return this.getSelectionLead();\n return this.anchor.getPosition();\n };\n Selection.prototype.getSelectionLead = function () {\n return this.lead.getPosition();\n };\n Selection.prototype.isBackwards = function () {\n var anchor = this.anchor;\n var lead = this.lead;\n return (anchor.row > lead.row || (anchor.row == lead.row && anchor.column > lead.column));\n };\n Selection.prototype.getRange = function () {\n var anchor = this.anchor;\n var lead = this.lead;\n if (this.$isEmpty)\n return Range.fromPoints(lead, lead);\n return this.isBackwards()\n ? Range.fromPoints(lead, anchor)\n : Range.fromPoints(anchor, lead);\n };\n Selection.prototype.clearSelection = function () {\n if (!this.$isEmpty) {\n this.$isEmpty = true;\n this._emit(\"changeSelection\");\n }\n };\n Selection.prototype.selectAll = function () {\n this.$setSelection(0, 0, Number.MAX_VALUE, Number.MAX_VALUE);\n };\n Selection.prototype.setRange = function (range, reverse) {\n var start = reverse ? range.end : range.start;\n var end = reverse ? range.start : range.end;\n this.$setSelection(start.row, start.column, end.row, end.column);\n };\n Selection.prototype.$setSelection = function (anchorRow, anchorColumn, cursorRow, cursorColumn) {\n if (this.$silent)\n return;\n var wasEmpty = this.$isEmpty;\n var wasMultiselect = this.inMultiSelectMode;\n this.$silent = true;\n this.$cursorChanged = this.$anchorChanged = false;\n this.anchor.setPosition(anchorRow, anchorColumn);\n this.cursor.setPosition(cursorRow, cursorColumn);\n this.$isEmpty = !Range.comparePoints(this.anchor, this.cursor);\n this.$silent = false;\n if (this.$cursorChanged)\n this._emit(\"changeCursor\");\n if (this.$cursorChanged || this.$anchorChanged || wasEmpty != this.$isEmpty || wasMultiselect)\n this._emit(\"changeSelection\");\n };\n Selection.prototype.$moveSelection = function (mover) {\n var lead = this.lead;\n if (this.$isEmpty)\n this.setSelectionAnchor(lead.row, lead.column);\n mover.call(this);\n };\n Selection.prototype.selectTo = function (row, column) {\n this.$moveSelection(function () {\n this.moveCursorTo(row, column);\n });\n };\n Selection.prototype.selectToPosition = function (pos) {\n this.$moveSelection(function () {\n this.moveCursorToPosition(pos);\n });\n };\n Selection.prototype.moveTo = function (row, column) {\n this.clearSelection();\n this.moveCursorTo(row, column);\n };\n Selection.prototype.moveToPosition = function (pos) {\n this.clearSelection();\n this.moveCursorToPosition(pos);\n };\n Selection.prototype.selectUp = function () {\n this.$moveSelection(this.moveCursorUp);\n };\n Selection.prototype.selectDown = function () {\n this.$moveSelection(this.moveCursorDown);\n };\n Selection.prototype.selectRight = function () {\n this.$moveSelection(this.moveCursorRight);\n };\n Selection.prototype.selectLeft = function () {\n this.$moveSelection(this.moveCursorLeft);\n };\n Selection.prototype.selectLineStart = function () {\n this.$moveSelection(this.moveCursorLineStart);\n };\n Selection.prototype.selectLineEnd = function () {\n this.$moveSelection(this.moveCursorLineEnd);\n };\n Selection.prototype.selectFileEnd = function () {\n this.$moveSelection(this.moveCursorFileEnd);\n };\n Selection.prototype.selectFileStart = function () {\n this.$moveSelection(this.moveCursorFileStart);\n };\n Selection.prototype.selectWordRight = function () {\n this.$moveSelection(this.moveCursorWordRight);\n };\n Selection.prototype.selectWordLeft = function () {\n this.$moveSelection(this.moveCursorWordLeft);\n };\n Selection.prototype.getWordRange = function (row, column) {\n if (typeof column == \"undefined\") {\n var cursor = row || this.lead;\n row = cursor.row;\n column = cursor.column;\n }\n return this.session.getWordRange(row, column);\n };\n Selection.prototype.selectWord = function () {\n this.setSelectionRange(this.getWordRange());\n };\n Selection.prototype.selectAWord = function () {\n var cursor = this.getCursor();\n var range = this.session.getAWordRange(cursor.row, cursor.column);\n this.setSelectionRange(range);\n };\n Selection.prototype.getLineRange = function (row, excludeLastChar) {\n var rowStart = typeof row == \"number\" ? row : this.lead.row;\n var rowEnd;\n var foldLine = this.session.getFoldLine(rowStart);\n if (foldLine) {\n rowStart = foldLine.start.row;\n rowEnd = foldLine.end.row;\n }\n else {\n rowEnd = rowStart;\n }\n if (excludeLastChar === true)\n return new Range(rowStart, 0, rowEnd, this.session.getLine(rowEnd).length);\n else\n return new Range(rowStart, 0, rowEnd + 1, 0);\n };\n Selection.prototype.selectLine = function () {\n this.setSelectionRange(this.getLineRange());\n };\n Selection.prototype.moveCursorUp = function () {\n this.moveCursorBy(-1, 0);\n };\n Selection.prototype.moveCursorDown = function () {\n this.moveCursorBy(1, 0);\n };\n Selection.prototype.wouldMoveIntoSoftTab = function (cursor, tabSize, direction) {\n var start = cursor.column;\n var end = cursor.column + tabSize;\n if (direction < 0) {\n start = cursor.column - tabSize;\n end = cursor.column;\n }\n return this.session.isTabStop(cursor) && this.doc.getLine(cursor.row).slice(start, end).split(\" \").length - 1 == tabSize;\n };\n Selection.prototype.moveCursorLeft = function () {\n var cursor = this.lead.getPosition(), fold;\n if (fold = this.session.getFoldAt(cursor.row, cursor.column, -1)) {\n this.moveCursorTo(fold.start.row, fold.start.column);\n }\n else if (cursor.column === 0) {\n if (cursor.row > 0) {\n this.moveCursorTo(cursor.row - 1, this.doc.getLine(cursor.row - 1).length);\n }\n }\n else {\n var tabSize = this.session.getTabSize();\n if (this.wouldMoveIntoSoftTab(cursor, tabSize, -1) && !this.session.getNavigateWithinSoftTabs()) {\n this.moveCursorBy(0, -tabSize);\n }\n else {\n this.moveCursorBy(0, -1);\n }\n }\n };\n Selection.prototype.moveCursorRight = function () {\n var cursor = this.lead.getPosition(), fold;\n if (fold = this.session.getFoldAt(cursor.row, cursor.column, 1)) {\n this.moveCursorTo(fold.end.row, fold.end.column);\n }\n else if (this.lead.column == this.doc.getLine(this.lead.row).length) {\n if (this.lead.row < this.doc.getLength() - 1) {\n this.moveCursorTo(this.lead.row + 1, 0);\n }\n }\n else {\n var tabSize = this.session.getTabSize();\n var cursor = this.lead;\n if (this.wouldMoveIntoSoftTab(cursor, tabSize, 1) && !this.session.getNavigateWithinSoftTabs()) {\n this.moveCursorBy(0, tabSize);\n }\n else {\n this.moveCursorBy(0, 1);\n }\n }\n };\n Selection.prototype.moveCursorLineStart = function () {\n var row = this.lead.row;\n var column = this.lead.column;\n var screenRow = this.session.documentToScreenRow(row, column);\n var firstColumnPosition = this.session.screenToDocumentPosition(screenRow, 0);\n var beforeCursor = this.session.getDisplayLine(row, null, firstColumnPosition.row, firstColumnPosition.column);\n var leadingSpace = beforeCursor.match(/^\\s*/);\n if (leadingSpace[0].length != column && !this.session.$useEmacsStyleLineStart)\n firstColumnPosition.column += leadingSpace[0].length;\n this.moveCursorToPosition(firstColumnPosition);\n };\n Selection.prototype.moveCursorLineEnd = function () {\n var lead = this.lead;\n var lineEnd = this.session.getDocumentLastRowColumnPosition(lead.row, lead.column);\n if (this.lead.column == lineEnd.column) {\n var line = this.session.getLine(lineEnd.row);\n if (lineEnd.column == line.length) {\n var textEnd = line.search(/\\s+$/);\n if (textEnd > 0)\n lineEnd.column = textEnd;\n }\n }\n this.moveCursorTo(lineEnd.row, lineEnd.column);\n };\n Selection.prototype.moveCursorFileEnd = function () {\n var row = this.doc.getLength() - 1;\n var column = this.doc.getLine(row).length;\n this.moveCursorTo(row, column);\n };\n Selection.prototype.moveCursorFileStart = function () {\n this.moveCursorTo(0, 0);\n };\n Selection.prototype.moveCursorLongWordRight = function () {\n var row = this.lead.row;\n var column = this.lead.column;\n var line = this.doc.getLine(row);\n var rightOfCursor = line.substring(column);\n this.session.nonTokenRe.lastIndex = 0;\n this.session.tokenRe.lastIndex = 0;\n var fold = this.session.getFoldAt(row, column, 1);\n if (fold) {\n this.moveCursorTo(fold.end.row, fold.end.column);\n return;\n }\n if (this.session.nonTokenRe.exec(rightOfCursor)) {\n column += this.session.nonTokenRe.lastIndex;\n this.session.nonTokenRe.lastIndex = 0;\n rightOfCursor = line.substring(column);\n }\n if (column >= line.length) {\n this.moveCursorTo(row, line.length);\n this.moveCursorRight();\n if (row < this.doc.getLength() - 1)\n this.moveCursorWordRight();\n return;\n }\n if (this.session.tokenRe.exec(rightOfCursor)) {\n column += this.session.tokenRe.lastIndex;\n this.session.tokenRe.lastIndex = 0;\n }\n this.moveCursorTo(row, column);\n };\n Selection.prototype.moveCursorLongWordLeft = function () {\n var row = this.lead.row;\n var column = this.lead.column;\n var fold;\n if (fold = this.session.getFoldAt(row, column, -1)) {\n this.moveCursorTo(fold.start.row, fold.start.column);\n return;\n }\n var str = this.session.getFoldStringAt(row, column, -1);\n if (str == null) {\n str = this.doc.getLine(row).substring(0, column);\n }\n var leftOfCursor = lang.stringReverse(str);\n this.session.nonTokenRe.lastIndex = 0;\n this.session.tokenRe.lastIndex = 0;\n if (this.session.nonTokenRe.exec(leftOfCursor)) {\n column -= this.session.nonTokenRe.lastIndex;\n leftOfCursor = leftOfCursor.slice(this.session.nonTokenRe.lastIndex);\n this.session.nonTokenRe.lastIndex = 0;\n }\n if (column <= 0) {\n this.moveCursorTo(row, 0);\n this.moveCursorLeft();\n if (row > 0)\n this.moveCursorWordLeft();\n return;\n }\n if (this.session.tokenRe.exec(leftOfCursor)) {\n column -= this.session.tokenRe.lastIndex;\n this.session.tokenRe.lastIndex = 0;\n }\n this.moveCursorTo(row, column);\n };\n Selection.prototype.$shortWordEndIndex = function (rightOfCursor) {\n var index = 0, ch;\n var whitespaceRe = /\\s/;\n var tokenRe = this.session.tokenRe;\n tokenRe.lastIndex = 0;\n if (this.session.tokenRe.exec(rightOfCursor)) {\n index = this.session.tokenRe.lastIndex;\n }\n else {\n while ((ch = rightOfCursor[index]) && whitespaceRe.test(ch))\n index++;\n if (index < 1) {\n tokenRe.lastIndex = 0;\n while ((ch = rightOfCursor[index]) && !tokenRe.test(ch)) {\n tokenRe.lastIndex = 0;\n index++;\n if (whitespaceRe.test(ch)) {\n if (index > 2) {\n index--;\n break;\n }\n else {\n while ((ch = rightOfCursor[index]) && whitespaceRe.test(ch))\n index++;\n if (index > 2)\n break;\n }\n }\n }\n }\n }\n tokenRe.lastIndex = 0;\n return index;\n };\n Selection.prototype.moveCursorShortWordRight = function () {\n var row = this.lead.row;\n var column = this.lead.column;\n var line = this.doc.getLine(row);\n var rightOfCursor = line.substring(column);\n var fold = this.session.getFoldAt(row, column, 1);\n if (fold)\n return this.moveCursorTo(fold.end.row, fold.end.column);\n if (column == line.length) {\n var l = this.doc.getLength();\n do {\n row++;\n rightOfCursor = this.doc.getLine(row);\n } while (row < l && /^\\s*$/.test(rightOfCursor));\n if (!/^\\s+/.test(rightOfCursor))\n rightOfCursor = \"\";\n column = 0;\n }\n var index = this.$shortWordEndIndex(rightOfCursor);\n this.moveCursorTo(row, column + index);\n };\n Selection.prototype.moveCursorShortWordLeft = function () {\n var row = this.lead.row;\n var column = this.lead.column;\n var fold;\n if (fold = this.session.getFoldAt(row, column, -1))\n return this.moveCursorTo(fold.start.row, fold.start.column);\n var line = this.session.getLine(row).substring(0, column);\n if (column === 0) {\n do {\n row--;\n line = this.doc.getLine(row);\n } while (row > 0 && /^\\s*$/.test(line));\n column = line.length;\n if (!/\\s+$/.test(line))\n line = \"\";\n }\n var leftOfCursor = lang.stringReverse(line);\n var index = this.$shortWordEndIndex(leftOfCursor);\n return this.moveCursorTo(row, column - index);\n };\n Selection.prototype.moveCursorWordRight = function () {\n if (this.session.$selectLongWords)\n this.moveCursorLongWordRight();\n else\n this.moveCursorShortWordRight();\n };\n Selection.prototype.moveCursorWordLeft = function () {\n if (this.session.$selectLongWords)\n this.moveCursorLongWordLeft();\n else\n this.moveCursorShortWordLeft();\n };\n Selection.prototype.moveCursorBy = function (rows, chars) {\n var screenPos = this.session.documentToScreenPosition(this.lead.row, this.lead.column);\n var offsetX;\n if (chars === 0) {\n if (rows !== 0) {\n if (this.session.$bidiHandler.isBidiRow(screenPos.row, this.lead.row)) {\n offsetX = this.session.$bidiHandler.getPosLeft(screenPos.column);\n screenPos.column = Math.round(offsetX / this.session.$bidiHandler.charWidths[0]);\n }\n else {\n offsetX = screenPos.column * this.session.$bidiHandler.charWidths[0];\n }\n }\n if (this.$desiredColumn)\n screenPos.column = this.$desiredColumn;\n else\n this.$desiredColumn = screenPos.column;\n }\n if (rows != 0 && this.session.lineWidgets && this.session.lineWidgets[this.lead.row]) {\n var widget = this.session.lineWidgets[this.lead.row];\n if (rows < 0)\n rows -= widget.rowsAbove || 0;\n else if (rows > 0)\n rows += widget.rowCount - (widget.rowsAbove || 0);\n }\n var docPos = this.session.screenToDocumentPosition(screenPos.row + rows, screenPos.column, offsetX);\n if (rows !== 0 && chars === 0 && docPos.row === this.lead.row && docPos.column === this.lead.column) {\n }\n this.moveCursorTo(docPos.row, docPos.column + chars, chars === 0);\n };\n Selection.prototype.moveCursorToPosition = function (position) {\n this.moveCursorTo(position.row, position.column);\n };\n Selection.prototype.moveCursorTo = function (row, column, keepDesiredColumn) {\n var fold = this.session.getFoldAt(row, column, 1);\n if (fold) {\n row = fold.start.row;\n column = fold.start.column;\n }\n this.$keepDesiredColumnOnChange = true;\n var line = this.session.getLine(row);\n if (/[\\uDC00-\\uDFFF]/.test(line.charAt(column)) && line.charAt(column - 1)) {\n if (this.lead.row == row && this.lead.column == column + 1)\n column = column - 1;\n else\n column = column + 1;\n }\n this.lead.setPosition(row, column);\n this.$keepDesiredColumnOnChange = false;\n if (!keepDesiredColumn)\n this.$desiredColumn = null;\n };\n Selection.prototype.moveCursorToScreen = function (row, column, keepDesiredColumn) {\n var pos = this.session.screenToDocumentPosition(row, column);\n this.moveCursorTo(pos.row, pos.column, keepDesiredColumn);\n };\n Selection.prototype.detach = function () {\n this.lead.detach();\n this.anchor.detach();\n };\n Selection.prototype.fromOrientedRange = function (range) {\n this.setSelectionRange(range, range.cursor == range.start);\n this.$desiredColumn = range.desiredColumn || this.$desiredColumn;\n };\n Selection.prototype.toOrientedRange = function (range) {\n var r = this.getRange();\n if (range) {\n range.start.column = r.start.column;\n range.start.row = r.start.row;\n range.end.column = r.end.column;\n range.end.row = r.end.row;\n }\n else {\n range = r;\n }\n range.cursor = this.isBackwards() ? range.start : range.end;\n range.desiredColumn = this.$desiredColumn;\n return range;\n };\n Selection.prototype.getRangeOfMovements = function (func) {\n var start = this.getCursor();\n try {\n func(this);\n var end = this.getCursor();\n return Range.fromPoints(start, end);\n }\n catch (e) {\n return Range.fromPoints(start, start);\n }\n finally {\n this.moveCursorToPosition(start);\n }\n };\n Selection.prototype.toJSON = function () {\n if (this.rangeCount) {\n var data = this.ranges.map(function (r) {\n var r1 = r.clone();\n r1.isBackwards = r.cursor == r.start;\n return r1;\n });\n }\n else {\n var data = this.getRange();\n data.isBackwards = this.isBackwards();\n }\n return data;\n };\n Selection.prototype.fromJSON = function (data) {\n if (data.start == undefined) {\n if (this.rangeList && data.length > 1) {\n this.toSingleRange(data[0]);\n for (var i = data.length; i--;) {\n var r = Range.fromPoints(data[i].start, data[i].end);\n if (data[i].isBackwards)\n r.cursor = r.start;\n this.addRange(r, true);\n }\n return;\n }\n else {\n data = data[0];\n }\n }\n if (this.rangeList)\n this.toSingleRange(data);\n this.setSelectionRange(data, data.isBackwards);\n };\n Selection.prototype.isEqual = function (data) {\n if ((data.length || this.rangeCount) && data.length != this.rangeCount)\n return false;\n if (!data.length || !this.ranges)\n return this.getRange().isEqual(data);\n for (var i = this.ranges.length; i--;) {\n if (!this.ranges[i].isEqual(data[i]))\n return false;\n }\n return true;\n };\n return Selection;\n}());\nSelection.prototype.setSelectionAnchor = Selection.prototype.setAnchor;\nSelection.prototype.getSelectionAnchor = Selection.prototype.getAnchor;\nSelection.prototype.setSelectionRange = Selection.prototype.setRange;\noop.implement(Selection.prototype, EventEmitter);\nexports.Selection = Selection;\n\n});\n\nace.define(\"ace/tokenizer\",[\"require\",\"exports\",\"module\",\"ace/lib/report_error\"], function(require, exports, module){\"use strict\";\nvar reportError = require(\"./lib/report_error\").reportError;\nvar MAX_TOKEN_COUNT = 2000;\nvar Tokenizer = /** @class */ (function () {\n function Tokenizer(rules) {\n this.states = rules;\n this.regExps = {};\n this.matchMappings = {};\n for (var key in this.states) {\n var state = this.states[key];\n var ruleRegExps = [];\n var matchTotal = 0;\n var mapping = this.matchMappings[key] = { defaultToken: \"text\" };\n var flag = \"g\";\n var splitterRurles = [];\n for (var i = 0; i < state.length; i++) {\n var rule = state[i];\n if (rule.defaultToken)\n mapping.defaultToken = rule.defaultToken;\n if (rule.caseInsensitive && flag.indexOf(\"i\") === -1)\n flag += \"i\";\n if (rule.unicode && flag.indexOf(\"u\") === -1)\n flag += \"u\";\n if (rule.regex == null)\n continue;\n if (rule.regex instanceof RegExp)\n rule.regex = rule.regex.toString().slice(1, -1);\n var adjustedregex = rule.regex;\n var matchcount = new RegExp(\"(?:(\" + adjustedregex + \")|(.))\").exec(\"a\").length - 2;\n if (Array.isArray(rule.token)) {\n if (rule.token.length == 1 || matchcount == 1) {\n rule.token = rule.token[0];\n }\n else if (matchcount - 1 != rule.token.length) {\n this.reportError(\"number of classes and regexp groups doesn't match\", {\n rule: rule,\n groupCount: matchcount - 1\n });\n rule.token = rule.token[0];\n }\n else {\n rule.tokenArray = rule.token;\n rule.token = null;\n rule.onMatch = this.$arrayTokens;\n }\n }\n else if (typeof rule.token == \"function\" && !rule.onMatch) {\n if (matchcount > 1)\n rule.onMatch = this.$applyToken;\n else\n rule.onMatch = rule.token;\n }\n if (matchcount > 1) {\n if (/\\\\\\d/.test(rule.regex)) {\n adjustedregex = rule.regex.replace(/\\\\([0-9]+)/g, function (match, digit) {\n return \"\\\\\" + (parseInt(digit, 10) + matchTotal + 1);\n });\n }\n else {\n matchcount = 1;\n adjustedregex = this.removeCapturingGroups(rule.regex);\n }\n if (!rule.splitRegex && typeof rule.token != \"string\")\n splitterRurles.push(rule); // flag will be known only at the very end\n }\n mapping[matchTotal] = i;\n matchTotal += matchcount;\n ruleRegExps.push(adjustedregex);\n if (!rule.onMatch)\n rule.onMatch = null;\n }\n if (!ruleRegExps.length) {\n mapping[0] = 0;\n ruleRegExps.push(\"$\");\n }\n splitterRurles.forEach(function (rule) {\n rule.splitRegex = this.createSplitterRegexp(rule.regex, flag);\n }, this);\n this.regExps[key] = new RegExp(\"(\" + ruleRegExps.join(\")|(\") + \")|($)\", flag);\n }\n }\n Tokenizer.prototype.$setMaxTokenCount = function (m) {\n MAX_TOKEN_COUNT = m | 0;\n };\n Tokenizer.prototype.$applyToken = function (str) {\n var values = this.splitRegex.exec(str).slice(1);\n var types = this.token.apply(this, values);\n if (typeof types === \"string\")\n return [{ type: types, value: str }];\n var tokens = [];\n for (var i = 0, l = types.length; i < l; i++) {\n if (values[i])\n tokens[tokens.length] = {\n type: types[i],\n value: values[i]\n };\n }\n return tokens;\n };\n Tokenizer.prototype.$arrayTokens = function (str) {\n if (!str)\n return [];\n var values = this.splitRegex.exec(str);\n if (!values)\n return \"text\";\n var tokens = [];\n var types = this.tokenArray;\n for (var i = 0, l = types.length; i < l; i++) {\n if (values[i + 1])\n tokens[tokens.length] = {\n type: types[i],\n value: values[i + 1]\n };\n }\n return tokens;\n };\n Tokenizer.prototype.removeCapturingGroups = function (src) {\n var r = src.replace(/\\\\.|\\[(?:\\\\.|[^\\\\\\]])*|\\(\\?[:=!<]|(\\()/g, function (x, y) { return y ? \"(?:\" : x; });\n return r;\n };\n Tokenizer.prototype.createSplitterRegexp = function (src, flag) {\n if (src.indexOf(\"(?=\") != -1) {\n var stack = 0;\n var inChClass = false;\n var lastCapture = {};\n src.replace(/(\\\\.)|(\\((?:\\?[=!])?)|(\\))|([\\[\\]])/g, function (m, esc, parenOpen, parenClose, square, index) {\n if (inChClass) {\n inChClass = square != \"]\";\n }\n else if (square) {\n inChClass = true;\n }\n else if (parenClose) {\n if (stack == lastCapture.stack) {\n lastCapture.end = index + 1;\n lastCapture.stack = -1;\n }\n stack--;\n }\n else if (parenOpen) {\n stack++;\n if (parenOpen.length != 1) {\n lastCapture.stack = stack;\n lastCapture.start = index;\n }\n }\n return m;\n });\n if (lastCapture.end != null && /^\\)*$/.test(src.substr(lastCapture.end)))\n src = src.substring(0, lastCapture.start) + src.substr(lastCapture.end);\n }\n if (src.charAt(0) != \"^\")\n src = \"^\" + src;\n if (src.charAt(src.length - 1) != \"$\")\n src += \"$\";\n return new RegExp(src, (flag || \"\").replace(\"g\", \"\"));\n };\n Tokenizer.prototype.getLineTokens = function (line, startState) {\n if (startState && typeof startState != \"string\") {\n var stack = startState.slice(0);\n startState = stack[0];\n if (startState === \"#tmp\") {\n stack.shift();\n startState = stack.shift();\n }\n }\n else\n var stack = [];\n var currentState = startState || \"start\";\n var state = this.states[currentState];\n if (!state) {\n currentState = \"start\";\n state = this.states[currentState];\n }\n var mapping = this.matchMappings[currentState];\n var re = this.regExps[currentState];\n re.lastIndex = 0;\n var match, tokens = [];\n var lastIndex = 0;\n var matchAttempts = 0;\n var token = { type: null, value: \"\" };\n while (match = re.exec(line)) {\n var type = mapping.defaultToken;\n var rule = null;\n var value = match[0];\n var index = re.lastIndex;\n if (index - value.length > lastIndex) {\n var skipped = line.substring(lastIndex, index - value.length);\n if (token.type == type) {\n token.value += skipped;\n }\n else {\n if (token.type)\n tokens.push(token);\n token = { type: type, value: skipped };\n }\n }\n for (var i = 0; i < match.length - 2; i++) {\n if (match[i + 1] === undefined)\n continue;\n rule = state[mapping[i]];\n if (rule.onMatch)\n type = rule.onMatch(value, currentState, stack, line);\n else\n type = rule.token;\n if (rule.next) {\n if (typeof rule.next == \"string\") {\n currentState = rule.next;\n }\n else {\n currentState = rule.next(currentState, stack);\n }\n state = this.states[currentState];\n if (!state) {\n this.reportError(\"state doesn't exist\", currentState);\n currentState = \"start\";\n state = this.states[currentState];\n }\n mapping = this.matchMappings[currentState];\n lastIndex = index;\n re = this.regExps[currentState];\n re.lastIndex = index;\n }\n if (rule.consumeLineEnd)\n lastIndex = index;\n break;\n }\n if (value) {\n if (typeof type === \"string\") {\n if ((!rule || rule.merge !== false) && token.type === type) {\n token.value += value;\n }\n else {\n if (token.type)\n tokens.push(token);\n token = { type: type, value: value };\n }\n }\n else if (type) {\n if (token.type)\n tokens.push(token);\n token = { type: null, value: \"\" };\n for (var i = 0; i < type.length; i++)\n tokens.push(type[i]);\n }\n }\n if (lastIndex == line.length)\n break;\n lastIndex = index;\n if (matchAttempts++ > MAX_TOKEN_COUNT) {\n if (matchAttempts > 2 * line.length) {\n this.reportError(\"infinite loop with in ace tokenizer\", {\n startState: startState,\n line: line\n });\n }\n while (lastIndex < line.length) {\n if (token.type)\n tokens.push(token);\n token = {\n value: line.substring(lastIndex, lastIndex += 500),\n type: \"overflow\"\n };\n }\n currentState = \"start\";\n stack = [];\n break;\n }\n }\n if (token.type)\n tokens.push(token);\n if (stack.length > 1) {\n if (stack[0] !== currentState)\n stack.unshift(\"#tmp\", currentState);\n }\n return {\n tokens: tokens,\n state: stack.length ? stack : currentState\n };\n };\n return Tokenizer;\n}());\nTokenizer.prototype.reportError = reportError;\nexports.Tokenizer = Tokenizer;\n\n});\n\nace.define(\"ace/mode/text_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/deep_copy\"], function(require, exports, module){\"use strict\";\nvar deepCopy = require(\"../lib/deep_copy\").deepCopy;\nvar TextHighlightRules = function () {\n this.$rules = {\n \"start\": [{\n token: \"empty_line\",\n regex: '^$'\n }, {\n defaultToken: \"text\"\n }]\n };\n};\n(function () {\n this.addRules = function (rules, prefix) {\n if (!prefix) {\n for (var key in rules)\n this.$rules[key] = rules[key];\n return;\n }\n for (var key in rules) {\n var state = rules[key];\n for (var i = 0; i < state.length; i++) {\n var rule = state[i];\n if (rule.next || rule.onMatch) {\n if (typeof rule.next == \"string\") {\n if (rule.next.indexOf(prefix) !== 0)\n rule.next = prefix + rule.next;\n }\n if (rule.nextState && rule.nextState.indexOf(prefix) !== 0)\n rule.nextState = prefix + rule.nextState;\n }\n }\n this.$rules[prefix + key] = state;\n }\n };\n this.getRules = function () {\n return this.$rules;\n };\n this.embedRules = function (HighlightRules, prefix, escapeRules, states, append) {\n var embedRules = typeof HighlightRules == \"function\"\n ? new HighlightRules().getRules()\n : HighlightRules;\n if (states) {\n for (var i = 0; i < states.length; i++)\n states[i] = prefix + states[i];\n }\n else {\n states = [];\n for (var key in embedRules)\n states.push(prefix + key);\n }\n this.addRules(embedRules, prefix);\n if (escapeRules) {\n var addRules = Array.prototype[append ? \"push\" : \"unshift\"];\n for (var i = 0; i < states.length; i++)\n addRules.apply(this.$rules[states[i]], deepCopy(escapeRules));\n }\n if (!this.$embeds)\n this.$embeds = [];\n this.$embeds.push(prefix);\n };\n this.getEmbeds = function () {\n return this.$embeds;\n };\n var pushState = function (currentState, stack) {\n if (currentState != \"start\" || stack.length)\n stack.unshift(this.nextState, currentState);\n return this.nextState;\n };\n var popState = function (currentState, stack) {\n stack.shift();\n return stack.shift() || \"start\";\n };\n this.normalizeRules = function () {\n var id = 0;\n var rules = this.$rules;\n function processState(key) {\n var state = rules[key];\n state.processed = true;\n for (var i = 0; i < state.length; i++) {\n var rule = state[i];\n var toInsert = null;\n if (Array.isArray(rule)) {\n toInsert = rule;\n rule = {};\n }\n if (!rule.regex && rule.start) {\n rule.regex = rule.start;\n if (!rule.next)\n rule.next = [];\n rule.next.push({\n defaultToken: rule.token\n }, {\n token: rule.token + \".end\",\n regex: rule.end || rule.start,\n next: \"pop\"\n });\n rule.token = rule.token + \".start\";\n rule.push = true;\n }\n var next = rule.next || rule.push;\n if (next && Array.isArray(next)) {\n var stateName = rule.stateName;\n if (!stateName) {\n stateName = rule.token;\n if (typeof stateName != \"string\")\n stateName = stateName[0] || \"\";\n if (rules[stateName])\n stateName += id++;\n }\n rules[stateName] = next;\n rule.next = stateName;\n processState(stateName);\n }\n else if (next == \"pop\") {\n rule.next = popState;\n }\n if (rule.push) {\n rule.nextState = rule.next || rule.push;\n rule.next = pushState;\n delete rule.push;\n }\n if (rule.rules) {\n for (var r in rule.rules) {\n if (rules[r]) {\n if (rules[r].push)\n rules[r].push.apply(rules[r], rule.rules[r]);\n }\n else {\n rules[r] = rule.rules[r];\n }\n }\n }\n var includeName = typeof rule == \"string\" ? rule : rule.include;\n if (includeName) {\n if (includeName === \"$self\")\n includeName = \"start\";\n if (Array.isArray(includeName))\n toInsert = includeName.map(function (x) { return rules[x]; });\n else\n toInsert = rules[includeName];\n }\n if (toInsert) {\n var args = [i, 1].concat(toInsert);\n if (rule.noEscape)\n args = args.filter(function (x) { return !x.next; });\n state.splice.apply(state, args);\n i--;\n }\n if (rule.keywordMap) {\n rule.token = this.createKeywordMapper(rule.keywordMap, rule.defaultToken || \"text\", rule.caseInsensitive);\n delete rule.defaultToken;\n }\n }\n }\n Object.keys(rules).forEach(processState, this);\n };\n this.createKeywordMapper = function (map, defaultToken, ignoreCase, splitChar) {\n var keywords = Object.create(null);\n this.$keywordList = [];\n Object.keys(map).forEach(function (className) {\n var a = map[className];\n var list = a.split(splitChar || \"|\");\n for (var i = list.length; i--;) {\n var word = list[i];\n this.$keywordList.push(word);\n if (ignoreCase)\n word = word.toLowerCase();\n keywords[word] = className;\n }\n }, this);\n map = null;\n return ignoreCase\n ? function (value) { return keywords[value.toLowerCase()] || defaultToken; }\n : function (value) { return keywords[value] || defaultToken; };\n };\n this.getKeywords = function () {\n return this.$keywords;\n };\n}).call(TextHighlightRules.prototype);\nexports.TextHighlightRules = TextHighlightRules;\n\n});\n\nace.define(\"ace/mode/behaviour\",[\"require\",\"exports\",\"module\"], function(require, exports, module){\"use strict\";\nvar Behaviour = function () {\n this.$behaviours = {};\n};\n(function () {\n this.add = function (name, action, callback) {\n switch (undefined) {\n case this.$behaviours:\n this.$behaviours = {};\n case this.$behaviours[name]:\n this.$behaviours[name] = {};\n }\n this.$behaviours[name][action] = callback;\n };\n this.addBehaviours = function (behaviours) {\n for (var key in behaviours) {\n for (var action in behaviours[key]) {\n this.add(key, action, behaviours[key][action]);\n }\n }\n };\n this.remove = function (name) {\n if (this.$behaviours && this.$behaviours[name]) {\n delete this.$behaviours[name];\n }\n };\n this.inherit = function (mode, filter) {\n if (typeof mode === \"function\") {\n var behaviours = new mode().getBehaviours(filter);\n }\n else {\n var behaviours = mode.getBehaviours(filter);\n }\n this.addBehaviours(behaviours);\n };\n this.getBehaviours = function (filter) {\n if (!filter) {\n return this.$behaviours;\n }\n else {\n var ret = {};\n for (var i = 0; i < filter.length; i++) {\n if (this.$behaviours[filter[i]]) {\n ret[filter[i]] = this.$behaviours[filter[i]];\n }\n }\n return ret;\n }\n };\n}).call(Behaviour.prototype);\nexports.Behaviour = Behaviour;\n\n});\n\nace.define(\"ace/token_iterator\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar Range = require(\"./range\").Range;\nvar TokenIterator = /** @class */ (function () {\n function TokenIterator(session, initialRow, initialColumn) {\n this.$session = session;\n this.$row = initialRow;\n this.$rowTokens = session.getTokens(initialRow);\n var token = session.getTokenAt(initialRow, initialColumn);\n this.$tokenIndex = token ? token.index : -1;\n }\n TokenIterator.prototype.stepBackward = function () {\n this.$tokenIndex -= 1;\n while (this.$tokenIndex < 0) {\n this.$row -= 1;\n if (this.$row < 0) {\n this.$row = 0;\n return null;\n }\n this.$rowTokens = this.$session.getTokens(this.$row);\n this.$tokenIndex = this.$rowTokens.length - 1;\n }\n return this.$rowTokens[this.$tokenIndex];\n };\n TokenIterator.prototype.stepForward = function () {\n this.$tokenIndex += 1;\n var rowCount;\n while (this.$tokenIndex >= this.$rowTokens.length) {\n this.$row += 1;\n if (!rowCount)\n rowCount = this.$session.getLength();\n if (this.$row >= rowCount) {\n this.$row = rowCount - 1;\n return null;\n }\n this.$rowTokens = this.$session.getTokens(this.$row);\n this.$tokenIndex = 0;\n }\n return this.$rowTokens[this.$tokenIndex];\n };\n TokenIterator.prototype.getCurrentToken = function () {\n return this.$rowTokens[this.$tokenIndex];\n };\n TokenIterator.prototype.getCurrentTokenRow = function () {\n return this.$row;\n };\n TokenIterator.prototype.getCurrentTokenColumn = function () {\n var rowTokens = this.$rowTokens;\n var tokenIndex = this.$tokenIndex;\n var column = rowTokens[tokenIndex].start;\n if (column !== undefined)\n return column;\n column = 0;\n while (tokenIndex > 0) {\n tokenIndex -= 1;\n column += rowTokens[tokenIndex].value.length;\n }\n return column;\n };\n TokenIterator.prototype.getCurrentTokenPosition = function () {\n return { row: this.$row, column: this.getCurrentTokenColumn() };\n };\n TokenIterator.prototype.getCurrentTokenRange = function () {\n var token = this.$rowTokens[this.$tokenIndex];\n var column = this.getCurrentTokenColumn();\n return new Range(this.$row, column, this.$row, column + token.value.length);\n };\n return TokenIterator;\n}());\nexports.TokenIterator = TokenIterator;\n\n});\n\nace.define(\"ace/mode/behaviour/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/behaviour\",\"ace/token_iterator\",\"ace/lib/lang\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../../lib/oop\");\nvar Behaviour = require(\"../behaviour\").Behaviour;\nvar TokenIterator = require(\"../../token_iterator\").TokenIterator;\nvar lang = require(\"../../lib/lang\");\nvar SAFE_INSERT_IN_TOKENS = [\"text\", \"paren.rparen\", \"rparen\", \"paren\", \"punctuation.operator\"];\nvar SAFE_INSERT_BEFORE_TOKENS = [\"text\", \"paren.rparen\", \"rparen\", \"paren\", \"punctuation.operator\", \"comment\"];\nvar context;\nvar contextCache = {};\nvar defaultQuotes = { '\"': '\"', \"'\": \"'\" };\nvar initContext = function (editor) {\n var id = -1;\n if (editor.multiSelect) {\n id = editor.selection.index;\n if (contextCache.rangeCount != editor.multiSelect.rangeCount)\n contextCache = { rangeCount: editor.multiSelect.rangeCount };\n }\n if (contextCache[id])\n return context = contextCache[id];\n context = contextCache[id] = {\n autoInsertedBrackets: 0,\n autoInsertedRow: -1,\n autoInsertedLineEnd: \"\",\n maybeInsertedBrackets: 0,\n maybeInsertedRow: -1,\n maybeInsertedLineStart: \"\",\n maybeInsertedLineEnd: \"\"\n };\n};\nvar getWrapped = function (selection, selected, opening, closing) {\n var rowDiff = selection.end.row - selection.start.row;\n return {\n text: opening + selected + closing,\n selection: [\n 0,\n selection.start.column + 1,\n rowDiff,\n selection.end.column + (rowDiff ? 0 : 1)\n ]\n };\n};\nvar CstyleBehaviour = function (options) {\n options = options || {};\n this.add(\"braces\", \"insertion\", function (state, action, editor, session, text) {\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n if (text == '{') {\n initContext(editor);\n var selection = editor.getSelectionRange();\n var selected = session.doc.getTextRange(selection);\n if (selected !== \"\" && selected !== \"{\" && editor.getWrapBehavioursEnabled()) {\n return getWrapped(selection, selected, '{', '}');\n }\n else if (CstyleBehaviour.isSaneInsertion(editor, session)) {\n if (/[\\]\\}\\)]/.test(line[cursor.column]) || editor.inMultiSelectMode || options.braces) {\n CstyleBehaviour.recordAutoInsert(editor, session, \"}\");\n return {\n text: '{}',\n selection: [1, 1]\n };\n }\n else {\n CstyleBehaviour.recordMaybeInsert(editor, session, \"{\");\n return {\n text: '{',\n selection: [1, 1]\n };\n }\n }\n }\n else if (text == '}') {\n initContext(editor);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n if (rightChar == '}') {\n var matching = session.$findOpeningBracket('}', { column: cursor.column + 1, row: cursor.row });\n if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) {\n CstyleBehaviour.popAutoInsertedClosing();\n return {\n text: '',\n selection: [1, 1]\n };\n }\n }\n }\n else if (text == \"\\n\" || text == \"\\r\\n\") {\n initContext(editor);\n var closing = \"\";\n if (CstyleBehaviour.isMaybeInsertedClosing(cursor, line)) {\n closing = lang.stringRepeat(\"}\", context.maybeInsertedBrackets);\n CstyleBehaviour.clearMaybeInsertedClosing();\n }\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n if (rightChar === '}') {\n var openBracePos = session.findMatchingBracket({ row: cursor.row, column: cursor.column + 1 }, '}');\n if (!openBracePos)\n return null;\n var next_indent = this.$getIndent(session.getLine(openBracePos.row));\n }\n else if (closing) {\n var next_indent = this.$getIndent(line);\n }\n else {\n CstyleBehaviour.clearMaybeInsertedClosing();\n return;\n }\n var indent = next_indent + session.getTabString();\n return {\n text: '\\n' + indent + '\\n' + next_indent + closing,\n selection: [1, indent.length, 1, indent.length]\n };\n }\n else {\n CstyleBehaviour.clearMaybeInsertedClosing();\n }\n });\n this.add(\"braces\", \"deletion\", function (state, action, editor, session, range) {\n var selected = session.doc.getTextRange(range);\n if (!range.isMultiLine() && selected == '{') {\n initContext(editor);\n var line = session.doc.getLine(range.start.row);\n var rightChar = line.substring(range.end.column, range.end.column + 1);\n if (rightChar == '}') {\n range.end.column++;\n return range;\n }\n else {\n context.maybeInsertedBrackets--;\n }\n }\n });\n this.add(\"parens\", \"insertion\", function (state, action, editor, session, text) {\n if (text == '(') {\n initContext(editor);\n var selection = editor.getSelectionRange();\n var selected = session.doc.getTextRange(selection);\n if (selected !== \"\" && editor.getWrapBehavioursEnabled()) {\n return getWrapped(selection, selected, '(', ')');\n }\n else if (CstyleBehaviour.isSaneInsertion(editor, session)) {\n CstyleBehaviour.recordAutoInsert(editor, session, \")\");\n return {\n text: '()',\n selection: [1, 1]\n };\n }\n }\n else if (text == ')') {\n initContext(editor);\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n if (rightChar == ')') {\n var matching = session.$findOpeningBracket(')', { column: cursor.column + 1, row: cursor.row });\n if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) {\n CstyleBehaviour.popAutoInsertedClosing();\n return {\n text: '',\n selection: [1, 1]\n };\n }\n }\n }\n });\n this.add(\"parens\", \"deletion\", function (state, action, editor, session, range) {\n var selected = session.doc.getTextRange(range);\n if (!range.isMultiLine() && selected == '(') {\n initContext(editor);\n var line = session.doc.getLine(range.start.row);\n var rightChar = line.substring(range.start.column + 1, range.start.column + 2);\n if (rightChar == ')') {\n range.end.column++;\n return range;\n }\n }\n });\n this.add(\"brackets\", \"insertion\", function (state, action, editor, session, text) {\n if (text == '[') {\n initContext(editor);\n var selection = editor.getSelectionRange();\n var selected = session.doc.getTextRange(selection);\n if (selected !== \"\" && editor.getWrapBehavioursEnabled()) {\n return getWrapped(selection, selected, '[', ']');\n }\n else if (CstyleBehaviour.isSaneInsertion(editor, session)) {\n CstyleBehaviour.recordAutoInsert(editor, session, \"]\");\n return {\n text: '[]',\n selection: [1, 1]\n };\n }\n }\n else if (text == ']') {\n initContext(editor);\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n if (rightChar == ']') {\n var matching = session.$findOpeningBracket(']', { column: cursor.column + 1, row: cursor.row });\n if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) {\n CstyleBehaviour.popAutoInsertedClosing();\n return {\n text: '',\n selection: [1, 1]\n };\n }\n }\n }\n });\n this.add(\"brackets\", \"deletion\", function (state, action, editor, session, range) {\n var selected = session.doc.getTextRange(range);\n if (!range.isMultiLine() && selected == '[') {\n initContext(editor);\n var line = session.doc.getLine(range.start.row);\n var rightChar = line.substring(range.start.column + 1, range.start.column + 2);\n if (rightChar == ']') {\n range.end.column++;\n return range;\n }\n }\n });\n this.add(\"string_dquotes\", \"insertion\", function (state, action, editor, session, text) {\n var quotes = session.$mode.$quotes || defaultQuotes;\n if (text.length == 1 && quotes[text]) {\n if (this.lineCommentStart && this.lineCommentStart.indexOf(text) != -1)\n return;\n initContext(editor);\n var quote = text;\n var selection = editor.getSelectionRange();\n var selected = session.doc.getTextRange(selection);\n if (selected !== \"\" && (selected.length != 1 || !quotes[selected]) && editor.getWrapBehavioursEnabled()) {\n return getWrapped(selection, selected, quote, quote);\n }\n else if (!selected) {\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n var leftChar = line.substring(cursor.column - 1, cursor.column);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n var token = session.getTokenAt(cursor.row, cursor.column);\n var rightToken = session.getTokenAt(cursor.row, cursor.column + 1);\n if (leftChar == \"\\\\\" && token && /escape/.test(token.type))\n return null;\n var stringBefore = token && /string|escape/.test(token.type);\n var stringAfter = !rightToken || /string|escape/.test(rightToken.type);\n var pair;\n if (rightChar == quote) {\n pair = stringBefore !== stringAfter;\n if (pair && /string\\.end/.test(rightToken.type))\n pair = false;\n }\n else {\n if (stringBefore && !stringAfter)\n return null; // wrap string with different quote\n if (stringBefore && stringAfter)\n return null; // do not pair quotes inside strings\n var wordRe = session.$mode.tokenRe;\n wordRe.lastIndex = 0;\n var isWordBefore = wordRe.test(leftChar);\n wordRe.lastIndex = 0;\n var isWordAfter = wordRe.test(rightChar);\n var pairQuotesAfter = session.$mode.$pairQuotesAfter;\n var shouldPairQuotes = pairQuotesAfter && pairQuotesAfter[quote] && pairQuotesAfter[quote].test(leftChar);\n if ((!shouldPairQuotes && isWordBefore) || isWordAfter)\n return null; // before or after alphanumeric\n if (rightChar && !/[\\s;,.})\\]\\\\]/.test(rightChar))\n return null; // there is rightChar and it isn't closing\n var charBefore = line[cursor.column - 2];\n if (leftChar == quote && (charBefore == quote || wordRe.test(charBefore)))\n return null;\n pair = true;\n }\n return {\n text: pair ? quote + quote : \"\",\n selection: [1, 1]\n };\n }\n }\n });\n this.add(\"string_dquotes\", \"deletion\", function (state, action, editor, session, range) {\n var quotes = session.$mode.$quotes || defaultQuotes;\n var selected = session.doc.getTextRange(range);\n if (!range.isMultiLine() && quotes.hasOwnProperty(selected)) {\n initContext(editor);\n var line = session.doc.getLine(range.start.row);\n var rightChar = line.substring(range.start.column + 1, range.start.column + 2);\n if (rightChar == selected) {\n range.end.column++;\n return range;\n }\n }\n });\n if (options.closeDocComment !== false) {\n this.add(\"doc comment end\", \"insertion\", function (state, action, editor, session, text) {\n if (state === \"doc-start\" && (text === \"\\n\" || text === \"\\r\\n\") && editor.selection.isEmpty()) {\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n var nextLine = session.doc.getLine(cursor.row + 1);\n var indent = this.$getIndent(line);\n if (/\\s*\\*/.test(nextLine)) {\n if (/^\\s*\\*/.test(line)) {\n return {\n text: text + indent + \"* \",\n selection: [1, 3 + indent.length, 1, 3 + indent.length]\n };\n }\n else {\n return {\n text: text + indent + \" * \",\n selection: [1, 3 + indent.length, 1, 3 + indent.length]\n };\n }\n }\n if (/\\/\\*\\*/.test(line.substring(0, cursor.column))) {\n return {\n text: text + indent + \" * \" + text + \" \" + indent + \"*/\",\n selection: [1, 4 + indent.length, 1, 4 + indent.length]\n };\n }\n }\n });\n }\n};\nCstyleBehaviour.isSaneInsertion = function (editor, session) {\n var cursor = editor.getCursorPosition();\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n if (!this.$matchTokenType(iterator.getCurrentToken() || \"text\", SAFE_INSERT_IN_TOKENS)) {\n if (/[)}\\]]/.test(editor.session.getLine(cursor.row)[cursor.column]))\n return true;\n var iterator2 = new TokenIterator(session, cursor.row, cursor.column + 1);\n if (!this.$matchTokenType(iterator2.getCurrentToken() || \"text\", SAFE_INSERT_IN_TOKENS))\n return false;\n }\n iterator.stepForward();\n return iterator.getCurrentTokenRow() !== cursor.row ||\n this.$matchTokenType(iterator.getCurrentToken() || \"text\", SAFE_INSERT_BEFORE_TOKENS);\n};\nCstyleBehaviour.$matchTokenType = function (token, types) {\n return types.indexOf(token.type || token) > -1;\n};\nCstyleBehaviour.recordAutoInsert = function (editor, session, bracket) {\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n if (!this.isAutoInsertedClosing(cursor, line, context.autoInsertedLineEnd[0]))\n context.autoInsertedBrackets = 0;\n context.autoInsertedRow = cursor.row;\n context.autoInsertedLineEnd = bracket + line.substr(cursor.column);\n context.autoInsertedBrackets++;\n};\nCstyleBehaviour.recordMaybeInsert = function (editor, session, bracket) {\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n if (!this.isMaybeInsertedClosing(cursor, line))\n context.maybeInsertedBrackets = 0;\n context.maybeInsertedRow = cursor.row;\n context.maybeInsertedLineStart = line.substr(0, cursor.column) + bracket;\n context.maybeInsertedLineEnd = line.substr(cursor.column);\n context.maybeInsertedBrackets++;\n};\nCstyleBehaviour.isAutoInsertedClosing = function (cursor, line, bracket) {\n return context.autoInsertedBrackets > 0 &&\n cursor.row === context.autoInsertedRow &&\n bracket === context.autoInsertedLineEnd[0] &&\n line.substr(cursor.column) === context.autoInsertedLineEnd;\n};\nCstyleBehaviour.isMaybeInsertedClosing = function (cursor, line) {\n return context.maybeInsertedBrackets > 0 &&\n cursor.row === context.maybeInsertedRow &&\n line.substr(cursor.column) === context.maybeInsertedLineEnd &&\n line.substr(0, cursor.column) == context.maybeInsertedLineStart;\n};\nCstyleBehaviour.popAutoInsertedClosing = function () {\n context.autoInsertedLineEnd = context.autoInsertedLineEnd.substr(1);\n context.autoInsertedBrackets--;\n};\nCstyleBehaviour.clearMaybeInsertedClosing = function () {\n if (context) {\n context.maybeInsertedBrackets = 0;\n context.maybeInsertedRow = -1;\n }\n};\noop.inherits(CstyleBehaviour, Behaviour);\nexports.CstyleBehaviour = CstyleBehaviour;\n\n});\n\nace.define(\"ace/unicode\",[\"require\",\"exports\",\"module\"], function(require, exports, module){\"use strict\";\nvar wordChars = [48, 9, 8, 25, 5, 0, 2, 25, 48, 0, 11, 0, 5, 0, 6, 22, 2, 30, 2, 457, 5, 11, 15, 4, 8, 0, 2, 0, 18, 116, 2, 1, 3, 3, 9, 0, 2, 2, 2, 0, 2, 19, 2, 82, 2, 138, 2, 4, 3, 155, 12, 37, 3, 0, 8, 38, 10, 44, 2, 0, 2, 1, 2, 1, 2, 0, 9, 26, 6, 2, 30, 10, 7, 61, 2, 9, 5, 101, 2, 7, 3, 9, 2, 18, 3, 0, 17, 58, 3, 100, 15, 53, 5, 0, 6, 45, 211, 57, 3, 18, 2, 5, 3, 11, 3, 9, 2, 1, 7, 6, 2, 2, 2, 7, 3, 1, 3, 21, 2, 6, 2, 0, 4, 3, 3, 8, 3, 1, 3, 3, 9, 0, 5, 1, 2, 4, 3, 11, 16, 2, 2, 5, 5, 1, 3, 21, 2, 6, 2, 1, 2, 1, 2, 1, 3, 0, 2, 4, 5, 1, 3, 2, 4, 0, 8, 3, 2, 0, 8, 15, 12, 2, 2, 8, 2, 2, 2, 21, 2, 6, 2, 1, 2, 4, 3, 9, 2, 2, 2, 2, 3, 0, 16, 3, 3, 9, 18, 2, 2, 7, 3, 1, 3, 21, 2, 6, 2, 1, 2, 4, 3, 8, 3, 1, 3, 2, 9, 1, 5, 1, 2, 4, 3, 9, 2, 0, 17, 1, 2, 5, 4, 2, 2, 3, 4, 1, 2, 0, 2, 1, 4, 1, 4, 2, 4, 11, 5, 4, 4, 2, 2, 3, 3, 0, 7, 0, 15, 9, 18, 2, 2, 7, 2, 2, 2, 22, 2, 9, 2, 4, 4, 7, 2, 2, 2, 3, 8, 1, 2, 1, 7, 3, 3, 9, 19, 1, 2, 7, 2, 2, 2, 22, 2, 9, 2, 4, 3, 8, 2, 2, 2, 3, 8, 1, 8, 0, 2, 3, 3, 9, 19, 1, 2, 7, 2, 2, 2, 22, 2, 15, 4, 7, 2, 2, 2, 3, 10, 0, 9, 3, 3, 9, 11, 5, 3, 1, 2, 17, 4, 23, 2, 8, 2, 0, 3, 6, 4, 0, 5, 5, 2, 0, 2, 7, 19, 1, 14, 57, 6, 14, 2, 9, 40, 1, 2, 0, 3, 1, 2, 0, 3, 0, 7, 3, 2, 6, 2, 2, 2, 0, 2, 0, 3, 1, 2, 12, 2, 2, 3, 4, 2, 0, 2, 5, 3, 9, 3, 1, 35, 0, 24, 1, 7, 9, 12, 0, 2, 0, 2, 0, 5, 9, 2, 35, 5, 19, 2, 5, 5, 7, 2, 35, 10, 0, 58, 73, 7, 77, 3, 37, 11, 42, 2, 0, 4, 328, 2, 3, 3, 6, 2, 0, 2, 3, 3, 40, 2, 3, 3, 32, 2, 3, 3, 6, 2, 0, 2, 3, 3, 14, 2, 56, 2, 3, 3, 66, 5, 0, 33, 15, 17, 84, 13, 619, 3, 16, 2, 25, 6, 74, 22, 12, 2, 6, 12, 20, 12, 19, 13, 12, 2, 2, 2, 1, 13, 51, 3, 29, 4, 0, 5, 1, 3, 9, 34, 2, 3, 9, 7, 87, 9, 42, 6, 69, 11, 28, 4, 11, 5, 11, 11, 39, 3, 4, 12, 43, 5, 25, 7, 10, 38, 27, 5, 62, 2, 28, 3, 10, 7, 9, 14, 0, 89, 75, 5, 9, 18, 8, 13, 42, 4, 11, 71, 55, 9, 9, 4, 48, 83, 2, 2, 30, 14, 230, 23, 280, 3, 5, 3, 37, 3, 5, 3, 7, 2, 0, 2, 0, 2, 0, 2, 30, 3, 52, 2, 6, 2, 0, 4, 2, 2, 6, 4, 3, 3, 5, 5, 12, 6, 2, 2, 6, 67, 1, 20, 0, 29, 0, 14, 0, 17, 4, 60, 12, 5, 0, 4, 11, 18, 0, 5, 0, 3, 9, 2, 0, 4, 4, 7, 0, 2, 0, 2, 0, 2, 3, 2, 10, 3, 3, 6, 4, 5, 0, 53, 1, 2684, 46, 2, 46, 2, 132, 7, 6, 15, 37, 11, 53, 10, 0, 17, 22, 10, 6, 2, 6, 2, 6, 2, 6, 2, 6, 2, 6, 2, 6, 2, 6, 2, 31, 48, 0, 470, 1, 36, 5, 2, 4, 6, 1, 5, 85, 3, 1, 3, 2, 2, 89, 2, 3, 6, 40, 4, 93, 18, 23, 57, 15, 513, 6581, 75, 20939, 53, 1164, 68, 45, 3, 268, 4, 27, 21, 31, 3, 13, 13, 1, 2, 24, 9, 69, 11, 1, 38, 8, 3, 102, 3, 1, 111, 44, 25, 51, 13, 68, 12, 9, 7, 23, 4, 0, 5, 45, 3, 35, 13, 28, 4, 64, 15, 10, 39, 54, 10, 13, 3, 9, 7, 22, 4, 1, 5, 66, 25, 2, 227, 42, 2, 1, 3, 9, 7, 11171, 13, 22, 5, 48, 8453, 301, 3, 61, 3, 105, 39, 6, 13, 4, 6, 11, 2, 12, 2, 4, 2, 0, 2, 1, 2, 1, 2, 107, 34, 362, 19, 63, 3, 53, 41, 11, 5, 15, 17, 6, 13, 1, 25, 2, 33, 4, 2, 134, 20, 9, 8, 25, 5, 0, 2, 25, 12, 88, 4, 5, 3, 5, 3, 5, 3, 2];\nvar code = 0;\nvar str = [];\nfor (var i = 0; i < wordChars.length; i += 2) {\n str.push(code += wordChars[i]);\n if (wordChars[i + 1])\n str.push(45, code += wordChars[i + 1]);\n}\nexports.wordChars = String.fromCharCode.apply(null, str);\n\n});\n\nace.define(\"ace/mode/text\",[\"require\",\"exports\",\"module\",\"ace/config\",\"ace/tokenizer\",\"ace/mode/text_highlight_rules\",\"ace/mode/behaviour/cstyle\",\"ace/unicode\",\"ace/lib/lang\",\"ace/token_iterator\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar config = require(\"../config\");\nvar Tokenizer = require(\"../tokenizer\").Tokenizer;\nvar TextHighlightRules = require(\"./text_highlight_rules\").TextHighlightRules;\nvar CstyleBehaviour = require(\"./behaviour/cstyle\").CstyleBehaviour;\nvar unicode = require(\"../unicode\");\nvar lang = require(\"../lib/lang\");\nvar TokenIterator = require(\"../token_iterator\").TokenIterator;\nvar Range = require(\"../range\").Range;\nvar Mode = function () {\n this.HighlightRules = TextHighlightRules;\n};\n(function () {\n this.$defaultBehaviour = new CstyleBehaviour();\n this.tokenRe = new RegExp(\"^[\" + unicode.wordChars + \"\\\\$_]+\", \"g\");\n this.nonTokenRe = new RegExp(\"^(?:[^\" + unicode.wordChars + \"\\\\$_]|\\\\s])+\", \"g\");\n this.getTokenizer = function () {\n if (!this.$tokenizer) {\n this.$highlightRules = this.$highlightRules || new this.HighlightRules(this.$highlightRuleConfig);\n this.$tokenizer = new Tokenizer(this.$highlightRules.getRules());\n }\n return this.$tokenizer;\n };\n this.lineCommentStart = \"\";\n this.blockComment = \"\";\n this.toggleCommentLines = function (state, session, startRow, endRow) {\n var doc = session.doc;\n var ignoreBlankLines = true;\n var shouldRemove = true;\n var minIndent = Infinity;\n var tabSize = session.getTabSize();\n var insertAtTabStop = false;\n if (!this.lineCommentStart) {\n if (!this.blockComment)\n return false;\n var lineCommentStart = this.blockComment.start;\n var lineCommentEnd = this.blockComment.end;\n var regexpStart = new RegExp(\"^(\\\\s*)(?:\" + lang.escapeRegExp(lineCommentStart) + \")\");\n var regexpEnd = new RegExp(\"(?:\" + lang.escapeRegExp(lineCommentEnd) + \")\\\\s*$\");\n var comment = function (line, i) {\n if (testRemove(line, i))\n return;\n if (!ignoreBlankLines || /\\S/.test(line)) {\n doc.insertInLine({ row: i, column: line.length }, lineCommentEnd);\n doc.insertInLine({ row: i, column: minIndent }, lineCommentStart);\n }\n };\n var uncomment = function (line, i) {\n var m;\n if (m = line.match(regexpEnd))\n doc.removeInLine(i, line.length - m[0].length, line.length);\n if (m = line.match(regexpStart))\n doc.removeInLine(i, m[1].length, m[0].length);\n };\n var testRemove = function (line, row) {\n if (regexpStart.test(line))\n return true;\n var tokens = session.getTokens(row);\n for (var i = 0; i < tokens.length; i++) {\n if (tokens[i].type === \"comment\")\n return true;\n }\n };\n }\n else {\n if (Array.isArray(this.lineCommentStart)) {\n var regexpStart = this.lineCommentStart.map(lang.escapeRegExp).join(\"|\");\n var lineCommentStart = this.lineCommentStart[0];\n }\n else {\n var regexpStart = lang.escapeRegExp(this.lineCommentStart);\n var lineCommentStart = this.lineCommentStart;\n }\n regexpStart = new RegExp(\"^(\\\\s*)(?:\" + regexpStart + \") ?\");\n insertAtTabStop = session.getUseSoftTabs();\n var uncomment = function (line, i) {\n var m = line.match(regexpStart);\n if (!m)\n return;\n var start = m[1].length, end = m[0].length;\n if (!shouldInsertSpace(line, start, end) && m[0][end - 1] == \" \")\n end--;\n doc.removeInLine(i, start, end);\n };\n var commentWithSpace = lineCommentStart + \" \";\n var comment = function (line, i) {\n if (!ignoreBlankLines || /\\S/.test(line)) {\n if (shouldInsertSpace(line, minIndent, minIndent))\n doc.insertInLine({ row: i, column: minIndent }, commentWithSpace);\n else\n doc.insertInLine({ row: i, column: minIndent }, lineCommentStart);\n }\n };\n var testRemove = function (line, i) {\n return regexpStart.test(line);\n };\n var shouldInsertSpace = function (line, before, after) {\n var spaces = 0;\n while (before-- && line.charAt(before) == \" \")\n spaces++;\n if (spaces % tabSize != 0)\n return false;\n var spaces = 0;\n while (line.charAt(after++) == \" \")\n spaces++;\n if (tabSize > 2)\n return spaces % tabSize != tabSize - 1;\n else\n return spaces % tabSize == 0;\n };\n }\n function iter(fun) {\n for (var i = startRow; i <= endRow; i++)\n fun(doc.getLine(i), i);\n }\n var minEmptyLength = Infinity;\n iter(function (line, i) {\n var indent = line.search(/\\S/);\n if (indent !== -1) {\n if (indent < minIndent)\n minIndent = indent;\n if (shouldRemove && !testRemove(line, i))\n shouldRemove = false;\n }\n else if (minEmptyLength > line.length) {\n minEmptyLength = line.length;\n }\n });\n if (minIndent == Infinity) {\n minIndent = minEmptyLength;\n ignoreBlankLines = false;\n shouldRemove = false;\n }\n if (insertAtTabStop && minIndent % tabSize != 0)\n minIndent = Math.floor(minIndent / tabSize) * tabSize;\n iter(shouldRemove ? uncomment : comment);\n };\n this.toggleBlockComment = function (state, session, range, cursor) {\n var comment = this.blockComment;\n if (!comment)\n return;\n if (!comment.start && comment[0])\n comment = comment[0];\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n var token = iterator.getCurrentToken();\n var sel = session.selection;\n var initialRange = session.selection.toOrientedRange();\n var startRow, colDiff;\n if (token && /comment/.test(token.type)) {\n var startRange, endRange;\n while (token && /comment/.test(token.type)) {\n var i = token.value.indexOf(comment.start);\n if (i != -1) {\n var row = iterator.getCurrentTokenRow();\n var column = iterator.getCurrentTokenColumn() + i;\n startRange = new Range(row, column, row, column + comment.start.length);\n break;\n }\n token = iterator.stepBackward();\n }\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n var token = iterator.getCurrentToken();\n while (token && /comment/.test(token.type)) {\n var i = token.value.indexOf(comment.end);\n if (i != -1) {\n var row = iterator.getCurrentTokenRow();\n var column = iterator.getCurrentTokenColumn() + i;\n endRange = new Range(row, column, row, column + comment.end.length);\n break;\n }\n token = iterator.stepForward();\n }\n if (endRange)\n session.remove(endRange);\n if (startRange) {\n session.remove(startRange);\n startRow = startRange.start.row;\n colDiff = -comment.start.length;\n }\n }\n else {\n colDiff = comment.start.length;\n startRow = range.start.row;\n session.insert(range.end, comment.end);\n session.insert(range.start, comment.start);\n }\n if (initialRange.start.row == startRow)\n initialRange.start.column += colDiff;\n if (initialRange.end.row == startRow)\n initialRange.end.column += colDiff;\n session.selection.fromOrientedRange(initialRange);\n };\n this.getNextLineIndent = function (state, line, tab) {\n return this.$getIndent(line);\n };\n this.checkOutdent = function (state, line, input) {\n return false;\n };\n this.autoOutdent = function (state, doc, row) {\n };\n this.$getIndent = function (line) {\n return line.match(/^\\s*/)[0];\n };\n this.createWorker = function (session) {\n return null;\n };\n this.createModeDelegates = function (mapping) {\n this.$embeds = [];\n this.$modes = {};\n for (var i in mapping) {\n if (mapping[i]) {\n var Mode = mapping[i];\n var id = Mode.prototype.$id;\n var mode = config.$modes[id];\n if (!mode)\n config.$modes[id] = mode = new Mode();\n if (!config.$modes[i])\n config.$modes[i] = mode;\n this.$embeds.push(i);\n this.$modes[i] = mode;\n }\n }\n var delegations = [\"toggleBlockComment\", \"toggleCommentLines\", \"getNextLineIndent\",\n \"checkOutdent\", \"autoOutdent\", \"transformAction\", \"getCompletions\"];\n for (var i = 0; i < delegations.length; i++) {\n (function (scope) {\n var functionName = delegations[i];\n var defaultHandler = scope[functionName];\n scope[delegations[i]] = function () {\n return this.$delegator(functionName, arguments, defaultHandler);\n };\n }(this));\n }\n };\n this.$delegator = function (method, args, defaultHandler) {\n var state = args[0] || \"start\";\n if (typeof state != \"string\") {\n if (Array.isArray(state[2])) {\n var language = state[2][state[2].length - 1];\n var mode = this.$modes[language];\n if (mode)\n return mode[method].apply(mode, [state[1]].concat([].slice.call(args, 1)));\n }\n state = state[0] || \"start\";\n }\n for (var i = 0; i < this.$embeds.length; i++) {\n if (!this.$modes[this.$embeds[i]])\n continue;\n var split = state.split(this.$embeds[i]);\n if (!split[0] && split[1]) {\n args[0] = split[1];\n var mode = this.$modes[this.$embeds[i]];\n return mode[method].apply(mode, args);\n }\n }\n var ret = defaultHandler.apply(this, args);\n return defaultHandler ? ret : undefined;\n };\n this.transformAction = function (state, action, editor, session, param) {\n if (this.$behaviour) {\n var behaviours = this.$behaviour.getBehaviours();\n for (var key in behaviours) {\n if (behaviours[key][action]) {\n var ret = behaviours[key][action].apply(this, arguments);\n if (ret) {\n return ret;\n }\n }\n }\n }\n };\n this.getKeywords = function (append) {\n if (!this.completionKeywords) {\n var rules = this.$tokenizer.rules;\n var completionKeywords = [];\n for (var rule in rules) {\n var ruleItr = rules[rule];\n for (var r = 0, l = ruleItr.length; r < l; r++) {\n if (typeof ruleItr[r].token === \"string\") {\n if (/keyword|support|storage/.test(ruleItr[r].token))\n completionKeywords.push(ruleItr[r].regex);\n }\n else if (typeof ruleItr[r].token === \"object\") {\n for (var a = 0, aLength = ruleItr[r].token.length; a < aLength; a++) {\n if (/keyword|support|storage/.test(ruleItr[r].token[a])) {\n var rule = ruleItr[r].regex.match(/\\(.+?\\)/g)[a];\n completionKeywords.push(rule.substr(1, rule.length - 2));\n }\n }\n }\n }\n }\n this.completionKeywords = completionKeywords;\n }\n if (!append)\n return this.$keywordList;\n return completionKeywords.concat(this.$keywordList || []);\n };\n this.$createKeywordList = function () {\n if (!this.$highlightRules)\n this.getTokenizer();\n return this.$keywordList = this.$highlightRules.$keywordList || [];\n };\n this.getCompletions = function (state, session, pos, prefix) {\n var keywords = this.$keywordList || this.$createKeywordList();\n return keywords.map(function (word) {\n return {\n name: word,\n value: word,\n score: 0,\n meta: \"keyword\"\n };\n });\n };\n this.$id = \"ace/mode/text\";\n}).call(Mode.prototype);\nexports.Mode = Mode;\n\n});\n\nace.define(\"ace/apply_delta\",[\"require\",\"exports\",\"module\"], function(require, exports, module){\"use strict\";\nfunction throwDeltaError(delta, errorText) {\n console.log(\"Invalid Delta:\", delta);\n throw \"Invalid Delta: \" + errorText;\n}\nfunction positionInDocument(docLines, position) {\n return position.row >= 0 && position.row < docLines.length &&\n position.column >= 0 && position.column <= docLines[position.row].length;\n}\nfunction validateDelta(docLines, delta) {\n if (delta.action != \"insert\" && delta.action != \"remove\")\n throwDeltaError(delta, \"delta.action must be 'insert' or 'remove'\");\n if (!(delta.lines instanceof Array))\n throwDeltaError(delta, \"delta.lines must be an Array\");\n if (!delta.start || !delta.end)\n throwDeltaError(delta, \"delta.start/end must be an present\");\n var start = delta.start;\n if (!positionInDocument(docLines, delta.start))\n throwDeltaError(delta, \"delta.start must be contained in document\");\n var end = delta.end;\n if (delta.action == \"remove\" && !positionInDocument(docLines, end))\n throwDeltaError(delta, \"delta.end must contained in document for 'remove' actions\");\n var numRangeRows = end.row - start.row;\n var numRangeLastLineChars = (end.column - (numRangeRows == 0 ? start.column : 0));\n if (numRangeRows != delta.lines.length - 1 || delta.lines[numRangeRows].length != numRangeLastLineChars)\n throwDeltaError(delta, \"delta.range must match delta lines\");\n}\nexports.applyDelta = function (docLines, delta, doNotValidate) {\n var row = delta.start.row;\n var startColumn = delta.start.column;\n var line = docLines[row] || \"\";\n switch (delta.action) {\n case \"insert\":\n var lines = delta.lines;\n if (lines.length === 1) {\n docLines[row] = line.substring(0, startColumn) + delta.lines[0] + line.substring(startColumn);\n }\n else {\n var args = [row, 1].concat(delta.lines);\n docLines.splice.apply(docLines, args);\n docLines[row] = line.substring(0, startColumn) + docLines[row];\n docLines[row + delta.lines.length - 1] += line.substring(startColumn);\n }\n break;\n case \"remove\":\n var endColumn = delta.end.column;\n var endRow = delta.end.row;\n if (row === endRow) {\n docLines[row] = line.substring(0, startColumn) + line.substring(endColumn);\n }\n else {\n docLines.splice(row, endRow - row + 1, line.substring(0, startColumn) + docLines[endRow].substring(endColumn));\n }\n break;\n }\n};\n\n});\n\nace.define(\"ace/anchor\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/event_emitter\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"./lib/oop\");\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar Anchor = /** @class */ (function () {\n function Anchor(doc, row, column) {\n this.$onChange = this.onChange.bind(this);\n this.attach(doc);\n if (typeof column == \"undefined\")\n this.setPosition(row.row, row.column);\n else\n this.setPosition(row, column);\n }\n Anchor.prototype.getPosition = function () {\n return this.$clipPositionToDocument(this.row, this.column);\n };\n Anchor.prototype.getDocument = function () {\n return this.document;\n };\n Anchor.prototype.onChange = function (delta) {\n if (delta.start.row == delta.end.row && delta.start.row != this.row)\n return;\n if (delta.start.row > this.row)\n return;\n var point = $getTransformedPoint(delta, { row: this.row, column: this.column }, this.$insertRight);\n this.setPosition(point.row, point.column, true);\n };\n Anchor.prototype.setPosition = function (row, column, noClip) {\n var pos;\n if (noClip) {\n pos = {\n row: row,\n column: column\n };\n }\n else {\n pos = this.$clipPositionToDocument(row, column);\n }\n if (this.row == pos.row && this.column == pos.column)\n return;\n var old = {\n row: this.row,\n column: this.column\n };\n this.row = pos.row;\n this.column = pos.column;\n this._signal(\"change\", {\n old: old,\n value: pos\n });\n };\n Anchor.prototype.detach = function () {\n this.document.off(\"change\", this.$onChange);\n };\n Anchor.prototype.attach = function (doc) {\n this.document = doc || this.document;\n this.document.on(\"change\", this.$onChange);\n };\n Anchor.prototype.$clipPositionToDocument = function (row, column) {\n var pos = {};\n if (row >= this.document.getLength()) {\n pos.row = Math.max(0, this.document.getLength() - 1);\n pos.column = this.document.getLine(pos.row).length;\n }\n else if (row < 0) {\n pos.row = 0;\n pos.column = 0;\n }\n else {\n pos.row = row;\n pos.column = Math.min(this.document.getLine(pos.row).length, Math.max(0, column));\n }\n if (column < 0)\n pos.column = 0;\n return pos;\n };\n return Anchor;\n}());\nAnchor.prototype.$insertRight = false;\noop.implement(Anchor.prototype, EventEmitter);\nfunction $pointsInOrder(point1, point2, equalPointsInOrder) {\n var bColIsAfter = equalPointsInOrder ? point1.column <= point2.column : point1.column < point2.column;\n return (point1.row < point2.row) || (point1.row == point2.row && bColIsAfter);\n}\nfunction $getTransformedPoint(delta, point, moveIfEqual) {\n var deltaIsInsert = delta.action == \"insert\";\n var deltaRowShift = (deltaIsInsert ? 1 : -1) * (delta.end.row - delta.start.row);\n var deltaColShift = (deltaIsInsert ? 1 : -1) * (delta.end.column - delta.start.column);\n var deltaStart = delta.start;\n var deltaEnd = deltaIsInsert ? deltaStart : delta.end; // Collapse insert range.\n if ($pointsInOrder(point, deltaStart, moveIfEqual)) {\n return {\n row: point.row,\n column: point.column\n };\n }\n if ($pointsInOrder(deltaEnd, point, !moveIfEqual)) {\n return {\n row: point.row + deltaRowShift,\n column: point.column + (point.row == deltaEnd.row ? deltaColShift : 0)\n };\n }\n return {\n row: deltaStart.row,\n column: deltaStart.column\n };\n}\nexports.Anchor = Anchor;\n\n});\n\nace.define(\"ace/document\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/apply_delta\",\"ace/lib/event_emitter\",\"ace/range\",\"ace/anchor\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"./lib/oop\");\nvar applyDelta = require(\"./apply_delta\").applyDelta;\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar Range = require(\"./range\").Range;\nvar Anchor = require(\"./anchor\").Anchor;\nvar Document = /** @class */ (function () {\n function Document(textOrLines) {\n this.$lines = [\"\"];\n if (textOrLines.length === 0) {\n this.$lines = [\"\"];\n }\n else if (Array.isArray(textOrLines)) {\n this.insertMergedLines({ row: 0, column: 0 }, textOrLines);\n }\n else {\n this.insert({ row: 0, column: 0 }, textOrLines);\n }\n }\n Document.prototype.setValue = function (text) {\n var len = this.getLength() - 1;\n this.remove(new Range(0, 0, len, this.getLine(len).length));\n this.insert({ row: 0, column: 0 }, text || \"\");\n };\n Document.prototype.getValue = function () {\n return this.getAllLines().join(this.getNewLineCharacter());\n };\n Document.prototype.createAnchor = function (row, column) {\n return new Anchor(this, row, column);\n };\n Document.prototype.$detectNewLine = function (text) {\n var match = text.match(/^.*?(\\r\\n|\\r|\\n)/m);\n this.$autoNewLine = match ? match[1] : \"\\n\";\n this._signal(\"changeNewLineMode\");\n };\n Document.prototype.getNewLineCharacter = function () {\n switch (this.$newLineMode) {\n case \"windows\":\n return \"\\r\\n\";\n case \"unix\":\n return \"\\n\";\n default:\n return this.$autoNewLine || \"\\n\";\n }\n };\n Document.prototype.setNewLineMode = function (newLineMode) {\n if (this.$newLineMode === newLineMode)\n return;\n this.$newLineMode = newLineMode;\n this._signal(\"changeNewLineMode\");\n };\n Document.prototype.getNewLineMode = function () {\n return this.$newLineMode;\n };\n Document.prototype.isNewLine = function (text) {\n return (text == \"\\r\\n\" || text == \"\\r\" || text == \"\\n\");\n };\n Document.prototype.getLine = function (row) {\n return this.$lines[row] || \"\";\n };\n Document.prototype.getLines = function (firstRow, lastRow) {\n return this.$lines.slice(firstRow, lastRow + 1);\n };\n Document.prototype.getAllLines = function () {\n return this.getLines(0, this.getLength());\n };\n Document.prototype.getLength = function () {\n return this.$lines.length;\n };\n Document.prototype.getTextRange = function (range) {\n return this.getLinesForRange(range).join(this.getNewLineCharacter());\n };\n Document.prototype.getLinesForRange = function (range) {\n var lines;\n if (range.start.row === range.end.row) {\n lines = [this.getLine(range.start.row).substring(range.start.column, range.end.column)];\n }\n else {\n lines = this.getLines(range.start.row, range.end.row);\n lines[0] = (lines[0] || \"\").substring(range.start.column);\n var l = lines.length - 1;\n if (range.end.row - range.start.row == l)\n lines[l] = lines[l].substring(0, range.end.column);\n }\n return lines;\n };\n Document.prototype.insertLines = function (row, lines) {\n console.warn(\"Use of document.insertLines is deprecated. Use the insertFullLines method instead.\");\n return this.insertFullLines(row, lines);\n };\n Document.prototype.removeLines = function (firstRow, lastRow) {\n console.warn(\"Use of document.removeLines is deprecated. Use the removeFullLines method instead.\");\n return this.removeFullLines(firstRow, lastRow);\n };\n Document.prototype.insertNewLine = function (position) {\n console.warn(\"Use of document.insertNewLine is deprecated. Use insertMergedLines(position, ['', '']) instead.\");\n return this.insertMergedLines(position, [\"\", \"\"]);\n };\n Document.prototype.insert = function (position, text) {\n if (this.getLength() <= 1)\n this.$detectNewLine(text);\n return this.insertMergedLines(position, this.$split(text));\n };\n Document.prototype.insertInLine = function (position, text) {\n var start = this.clippedPos(position.row, position.column);\n var end = this.pos(position.row, position.column + text.length);\n this.applyDelta({\n start: start,\n end: end,\n action: \"insert\",\n lines: [text]\n }, true);\n return this.clonePos(end);\n };\n Document.prototype.clippedPos = function (row, column) {\n var length = this.getLength();\n if (row === undefined) {\n row = length;\n }\n else if (row < 0) {\n row = 0;\n }\n else if (row >= length) {\n row = length - 1;\n column = undefined;\n }\n var line = this.getLine(row);\n if (column == undefined)\n column = line.length;\n column = Math.min(Math.max(column, 0), line.length);\n return { row: row, column: column };\n };\n Document.prototype.clonePos = function (pos) {\n return { row: pos.row, column: pos.column };\n };\n Document.prototype.pos = function (row, column) {\n return { row: row, column: column };\n };\n Document.prototype.$clipPosition = function (position) {\n var length = this.getLength();\n if (position.row >= length) {\n position.row = Math.max(0, length - 1);\n position.column = this.getLine(length - 1).length;\n }\n else {\n position.row = Math.max(0, position.row);\n position.column = Math.min(Math.max(position.column, 0), this.getLine(position.row).length);\n }\n return position;\n };\n Document.prototype.insertFullLines = function (row, lines) {\n row = Math.min(Math.max(row, 0), this.getLength());\n var column = 0;\n if (row < this.getLength()) {\n lines = lines.concat([\"\"]);\n column = 0;\n }\n else {\n lines = [\"\"].concat(lines);\n row--;\n column = this.$lines[row].length;\n }\n this.insertMergedLines({ row: row, column: column }, lines);\n };\n Document.prototype.insertMergedLines = function (position, lines) {\n var start = this.clippedPos(position.row, position.column);\n var end = {\n row: start.row + lines.length - 1,\n column: (lines.length == 1 ? start.column : 0) + lines[lines.length - 1].length\n };\n this.applyDelta({\n start: start,\n end: end,\n action: \"insert\",\n lines: lines\n });\n return this.clonePos(end);\n };\n Document.prototype.remove = function (range) {\n var start = this.clippedPos(range.start.row, range.start.column);\n var end = this.clippedPos(range.end.row, range.end.column);\n this.applyDelta({\n start: start,\n end: end,\n action: \"remove\",\n lines: this.getLinesForRange({ start: start, end: end })\n });\n return this.clonePos(start);\n };\n Document.prototype.removeInLine = function (row, startColumn, endColumn) {\n var start = this.clippedPos(row, startColumn);\n var end = this.clippedPos(row, endColumn);\n this.applyDelta({\n start: start,\n end: end,\n action: \"remove\",\n lines: this.getLinesForRange({ start: start, end: end })\n }, true);\n return this.clonePos(start);\n };\n Document.prototype.removeFullLines = function (firstRow, lastRow) {\n firstRow = Math.min(Math.max(0, firstRow), this.getLength() - 1);\n lastRow = Math.min(Math.max(0, lastRow), this.getLength() - 1);\n var deleteFirstNewLine = lastRow == this.getLength() - 1 && firstRow > 0;\n var deleteLastNewLine = lastRow < this.getLength() - 1;\n var startRow = (deleteFirstNewLine ? firstRow - 1 : firstRow);\n var startCol = (deleteFirstNewLine ? this.getLine(startRow).length : 0);\n var endRow = (deleteLastNewLine ? lastRow + 1 : lastRow);\n var endCol = (deleteLastNewLine ? 0 : this.getLine(endRow).length);\n var range = new Range(startRow, startCol, endRow, endCol);\n var deletedLines = this.$lines.slice(firstRow, lastRow + 1);\n this.applyDelta({\n start: range.start,\n end: range.end,\n action: \"remove\",\n lines: this.getLinesForRange(range)\n });\n return deletedLines;\n };\n Document.prototype.removeNewLine = function (row) {\n if (row < this.getLength() - 1 && row >= 0) {\n this.applyDelta({\n start: this.pos(row, this.getLine(row).length),\n end: this.pos(row + 1, 0),\n action: \"remove\",\n lines: [\"\", \"\"]\n });\n }\n };\n Document.prototype.replace = function (range, text) {\n if (!(range instanceof Range))\n range = Range.fromPoints(range.start, range.end);\n if (text.length === 0 && range.isEmpty())\n return range.start;\n if (text == this.getTextRange(range))\n return range.end;\n this.remove(range);\n var end;\n if (text) {\n end = this.insert(range.start, text);\n }\n else {\n end = range.start;\n }\n return end;\n };\n Document.prototype.applyDeltas = function (deltas) {\n for (var i = 0; i < deltas.length; i++) {\n this.applyDelta(deltas[i]);\n }\n };\n Document.prototype.revertDeltas = function (deltas) {\n for (var i = deltas.length - 1; i >= 0; i--) {\n this.revertDelta(deltas[i]);\n }\n };\n Document.prototype.applyDelta = function (delta, doNotValidate) {\n var isInsert = delta.action == \"insert\";\n if (isInsert ? delta.lines.length <= 1 && !delta.lines[0]\n : !Range.comparePoints(delta.start, delta.end)) {\n return;\n }\n if (isInsert && delta.lines.length > 20000) {\n this.$splitAndapplyLargeDelta(delta, 20000);\n }\n else {\n applyDelta(this.$lines, delta, doNotValidate);\n this._signal(\"change\", delta);\n }\n };\n Document.prototype.$safeApplyDelta = function (delta) {\n var docLength = this.$lines.length;\n if (delta.action == \"remove\" && delta.start.row < docLength && delta.end.row < docLength\n || delta.action == \"insert\" && delta.start.row <= docLength) {\n this.applyDelta(delta);\n }\n };\n Document.prototype.$splitAndapplyLargeDelta = function (delta, MAX) {\n var lines = delta.lines;\n var l = lines.length - MAX + 1;\n var row = delta.start.row;\n var column = delta.start.column;\n for (var from = 0, to = 0; from < l; from = to) {\n to += MAX - 1;\n var chunk = lines.slice(from, to);\n chunk.push(\"\");\n this.applyDelta({\n start: this.pos(row + from, column),\n end: this.pos(row + to, column = 0),\n action: delta.action,\n lines: chunk\n }, true);\n }\n delta.lines = lines.slice(from);\n delta.start.row = row + from;\n delta.start.column = column;\n this.applyDelta(delta, true);\n };\n Document.prototype.revertDelta = function (delta) {\n this.$safeApplyDelta({\n start: this.clonePos(delta.start),\n end: this.clonePos(delta.end),\n action: (delta.action == \"insert\" ? \"remove\" : \"insert\"),\n lines: delta.lines.slice()\n });\n };\n Document.prototype.indexToPosition = function (index, startRow) {\n var lines = this.$lines || this.getAllLines();\n var newlineLength = this.getNewLineCharacter().length;\n for (var i = startRow || 0, l = lines.length; i < l; i++) {\n index -= lines[i].length + newlineLength;\n if (index < 0)\n return { row: i, column: index + lines[i].length + newlineLength };\n }\n return { row: l - 1, column: index + lines[l - 1].length + newlineLength };\n };\n Document.prototype.positionToIndex = function (pos, startRow) {\n var lines = this.$lines || this.getAllLines();\n var newlineLength = this.getNewLineCharacter().length;\n var index = 0;\n var row = Math.min(pos.row, lines.length);\n for (var i = startRow || 0; i < row; ++i)\n index += lines[i].length + newlineLength;\n return index + pos.column;\n };\n Document.prototype.$split = function (text) {\n return text.split(/\\r\\n|\\r|\\n/);\n };\n return Document;\n}());\nDocument.prototype.$autoNewLine = \"\";\nDocument.prototype.$newLineMode = \"auto\";\noop.implement(Document.prototype, EventEmitter);\nexports.Document = Document;\n\n});\n\nace.define(\"ace/background_tokenizer\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/event_emitter\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"./lib/oop\");\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar BackgroundTokenizer = /** @class */ (function () {\n function BackgroundTokenizer(tokenizer, editor) {\n this.running = false;\n this.lines = [];\n this.states = [];\n this.currentLine = 0;\n this.tokenizer = tokenizer;\n var self = this;\n this.$worker = function () {\n if (!self.running) {\n return;\n }\n var workerStart = new Date();\n var currentLine = self.currentLine;\n var endLine = -1;\n var doc = self.doc;\n var startLine = currentLine;\n while (self.lines[currentLine])\n currentLine++;\n var len = doc.getLength();\n var processedLines = 0;\n self.running = false;\n while (currentLine < len) {\n self.$tokenizeRow(currentLine);\n endLine = currentLine;\n do {\n currentLine++;\n } while (self.lines[currentLine]);\n processedLines++;\n if ((processedLines % 5 === 0) && (new Date() - workerStart) > 20) {\n self.running = setTimeout(self.$worker, 20);\n break;\n }\n }\n self.currentLine = currentLine;\n if (endLine == -1)\n endLine = currentLine;\n if (startLine <= endLine)\n self.fireUpdateEvent(startLine, endLine);\n };\n }\n BackgroundTokenizer.prototype.setTokenizer = function (tokenizer) {\n this.tokenizer = tokenizer;\n this.lines = [];\n this.states = [];\n this.start(0);\n };\n BackgroundTokenizer.prototype.setDocument = function (doc) {\n this.doc = doc;\n this.lines = [];\n this.states = [];\n this.stop();\n };\n BackgroundTokenizer.prototype.fireUpdateEvent = function (firstRow, lastRow) {\n var data = {\n first: firstRow,\n last: lastRow\n };\n this._signal(\"update\", { data: data });\n };\n BackgroundTokenizer.prototype.start = function (startRow) {\n this.currentLine = Math.min(startRow || 0, this.currentLine, this.doc.getLength());\n this.lines.splice(this.currentLine, this.lines.length);\n this.states.splice(this.currentLine, this.states.length);\n this.stop();\n this.running = setTimeout(this.$worker, 700);\n };\n BackgroundTokenizer.prototype.scheduleStart = function () {\n if (!this.running)\n this.running = setTimeout(this.$worker, 700);\n };\n BackgroundTokenizer.prototype.$updateOnChange = function (delta) {\n var startRow = delta.start.row;\n var len = delta.end.row - startRow;\n if (len === 0) {\n this.lines[startRow] = null;\n }\n else if (delta.action == \"remove\") {\n this.lines.splice(startRow, len + 1, null);\n this.states.splice(startRow, len + 1, null);\n }\n else {\n var args = Array(len + 1);\n args.unshift(startRow, 1);\n this.lines.splice.apply(this.lines, args);\n this.states.splice.apply(this.states, args);\n }\n this.currentLine = Math.min(startRow, this.currentLine, this.doc.getLength());\n this.stop();\n };\n BackgroundTokenizer.prototype.stop = function () {\n if (this.running)\n clearTimeout(this.running);\n this.running = false;\n };\n BackgroundTokenizer.prototype.getTokens = function (row) {\n return this.lines[row] || this.$tokenizeRow(row);\n };\n BackgroundTokenizer.prototype.getState = function (row) {\n if (this.currentLine == row)\n this.$tokenizeRow(row);\n return this.states[row] || \"start\";\n };\n BackgroundTokenizer.prototype.$tokenizeRow = function (row) {\n var line = this.doc.getLine(row);\n var state = this.states[row - 1];\n var data = this.tokenizer.getLineTokens(line, state, row);\n if (this.states[row] + \"\" !== data.state + \"\") {\n this.states[row] = data.state;\n this.lines[row + 1] = null;\n if (this.currentLine > row + 1)\n this.currentLine = row + 1;\n }\n else if (this.currentLine == row) {\n this.currentLine = row + 1;\n }\n return this.lines[row] = data.tokens;\n };\n BackgroundTokenizer.prototype.cleanup = function () {\n this.running = false;\n this.lines = [];\n this.states = [];\n this.currentLine = 0;\n this.removeAllListeners();\n };\n return BackgroundTokenizer;\n}());\noop.implement(BackgroundTokenizer.prototype, EventEmitter);\nexports.BackgroundTokenizer = BackgroundTokenizer;\n\n});\n\nace.define(\"ace/search_highlight\",[\"require\",\"exports\",\"module\",\"ace/lib/lang\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar lang = require(\"./lib/lang\");\nvar Range = require(\"./range\").Range;\nvar SearchHighlight = /** @class */ (function () {\n function SearchHighlight(regExp, clazz, type) {\n if (type === void 0) { type = \"text\"; }\n this.setRegexp(regExp);\n this.clazz = clazz;\n this.type = type;\n }\n SearchHighlight.prototype.setRegexp = function (regExp) {\n if (this.regExp + \"\" == regExp + \"\")\n return;\n this.regExp = regExp;\n this.cache = [];\n };\n SearchHighlight.prototype.update = function (html, markerLayer, session, config) {\n if (!this.regExp)\n return;\n var start = config.firstRow, end = config.lastRow;\n var renderedMarkerRanges = {};\n for (var i = start; i <= end; i++) {\n var ranges = this.cache[i];\n if (ranges == null) {\n ranges = lang.getMatchOffsets(session.getLine(i), this.regExp);\n if (ranges.length > this.MAX_RANGES)\n ranges = ranges.slice(0, this.MAX_RANGES);\n ranges = ranges.map(function (match) {\n return new Range(i, match.offset, i, match.offset + match.length);\n });\n this.cache[i] = ranges.length ? ranges : \"\";\n }\n for (var j = ranges.length; j--;) {\n var rangeToAddMarkerTo = ranges[j].toScreenRange(session);\n var rangeAsString = rangeToAddMarkerTo.toString();\n if (renderedMarkerRanges[rangeAsString])\n continue;\n renderedMarkerRanges[rangeAsString] = true;\n markerLayer.drawSingleLineMarker(html, rangeToAddMarkerTo, this.clazz, config);\n }\n }\n };\n return SearchHighlight;\n}());\nSearchHighlight.prototype.MAX_RANGES = 500;\nexports.SearchHighlight = SearchHighlight;\n\n});\n\nace.define(\"ace/undomanager\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar UndoManager = /** @class */ (function () {\n function UndoManager() {\n this.$maxRev = 0;\n this.$fromUndo = false;\n this.$undoDepth = Infinity;\n this.reset();\n }\n UndoManager.prototype.addSession = function (session) {\n this.$session = session;\n };\n UndoManager.prototype.add = function (delta, allowMerge, session) {\n if (this.$fromUndo)\n return;\n if (delta == this.$lastDelta)\n return;\n if (!this.$keepRedoStack)\n this.$redoStack.length = 0;\n if (allowMerge === false || !this.lastDeltas) {\n this.lastDeltas = [];\n var undoStackLength = this.$undoStack.length;\n if (undoStackLength > this.$undoDepth - 1) {\n this.$undoStack.splice(0, undoStackLength - this.$undoDepth + 1);\n }\n this.$undoStack.push(this.lastDeltas);\n delta.id = this.$rev = ++this.$maxRev;\n }\n if (delta.action == \"remove\" || delta.action == \"insert\")\n this.$lastDelta = delta;\n this.lastDeltas.push(delta);\n };\n UndoManager.prototype.addSelection = function (selection, rev) {\n this.selections.push({\n value: selection,\n rev: rev || this.$rev\n });\n };\n UndoManager.prototype.startNewGroup = function () {\n this.lastDeltas = null;\n return this.$rev;\n };\n UndoManager.prototype.markIgnored = function (from, to) {\n if (to == null)\n to = this.$rev + 1;\n var stack = this.$undoStack;\n for (var i = stack.length; i--;) {\n var delta = stack[i][0];\n if (delta.id <= from)\n break;\n if (delta.id < to)\n delta.ignore = true;\n }\n this.lastDeltas = null;\n };\n UndoManager.prototype.getSelection = function (rev, after) {\n var stack = this.selections;\n for (var i = stack.length; i--;) {\n var selection = stack[i];\n if (selection.rev < rev) {\n if (after)\n selection = stack[i + 1];\n return selection;\n }\n }\n };\n UndoManager.prototype.getRevision = function () {\n return this.$rev;\n };\n UndoManager.prototype.getDeltas = function (from, to) {\n if (to == null)\n to = this.$rev + 1;\n var stack = this.$undoStack;\n var end = null, start = 0;\n for (var i = stack.length; i--;) {\n var delta = stack[i][0];\n if (delta.id < to && !end)\n end = i + 1;\n if (delta.id <= from) {\n start = i + 1;\n break;\n }\n }\n return stack.slice(start, end);\n };\n UndoManager.prototype.getChangedRanges = function (from, to) {\n if (to == null)\n to = this.$rev + 1;\n };\n UndoManager.prototype.getChangedLines = function (from, to) {\n if (to == null)\n to = this.$rev + 1;\n };\n UndoManager.prototype.undo = function (session, dontSelect) {\n this.lastDeltas = null;\n var stack = this.$undoStack;\n if (!rearrangeUndoStack(stack, stack.length))\n return;\n if (!session)\n session = this.$session;\n if (this.$redoStackBaseRev !== this.$rev && this.$redoStack.length)\n this.$redoStack = [];\n this.$fromUndo = true;\n var deltaSet = stack.pop();\n var undoSelectionRange = null;\n if (deltaSet) {\n undoSelectionRange = session.undoChanges(deltaSet, dontSelect);\n this.$redoStack.push(deltaSet);\n this.$syncRev();\n }\n this.$fromUndo = false;\n return undoSelectionRange;\n };\n UndoManager.prototype.redo = function (session, dontSelect) {\n this.lastDeltas = null;\n if (!session)\n session = this.$session;\n this.$fromUndo = true;\n if (this.$redoStackBaseRev != this.$rev) {\n var diff = this.getDeltas(this.$redoStackBaseRev, this.$rev + 1);\n rebaseRedoStack(this.$redoStack, diff);\n this.$redoStackBaseRev = this.$rev;\n this.$redoStack.forEach(function (x) {\n x[0].id = ++this.$maxRev;\n }, this);\n }\n var deltaSet = this.$redoStack.pop();\n var redoSelectionRange = null;\n if (deltaSet) {\n redoSelectionRange = session.redoChanges(deltaSet, dontSelect);\n this.$undoStack.push(deltaSet);\n this.$syncRev();\n }\n this.$fromUndo = false;\n return redoSelectionRange;\n };\n UndoManager.prototype.$syncRev = function () {\n var stack = this.$undoStack;\n var nextDelta = stack[stack.length - 1];\n var id = nextDelta && nextDelta[0].id || 0;\n this.$redoStackBaseRev = id;\n this.$rev = id;\n };\n UndoManager.prototype.reset = function () {\n this.lastDeltas = null;\n this.$lastDelta = null;\n this.$undoStack = [];\n this.$redoStack = [];\n this.$rev = 0;\n this.mark = 0;\n this.$redoStackBaseRev = this.$rev;\n this.selections = [];\n };\n UndoManager.prototype.canUndo = function () {\n return this.$undoStack.length > 0;\n };\n UndoManager.prototype.canRedo = function () {\n return this.$redoStack.length > 0;\n };\n UndoManager.prototype.bookmark = function (rev) {\n if (rev == undefined)\n rev = this.$rev;\n this.mark = rev;\n };\n UndoManager.prototype.isAtBookmark = function () {\n return this.$rev === this.mark;\n };\n UndoManager.prototype.toJSON = function () {\n return {\n $redoStack: this.$redoStack,\n $undoStack: this.$undoStack\n };\n };\n UndoManager.prototype.fromJSON = function (json) {\n this.reset();\n this.$undoStack = json.$undoStack;\n this.$redoStack = json.$redoStack;\n };\n UndoManager.prototype.$prettyPrint = function (delta) {\n if (delta)\n return stringifyDelta(delta);\n return stringifyDelta(this.$undoStack) + \"\\n---\\n\" + stringifyDelta(this.$redoStack);\n };\n return UndoManager;\n}());\nUndoManager.prototype.hasUndo = UndoManager.prototype.canUndo;\nUndoManager.prototype.hasRedo = UndoManager.prototype.canRedo;\nUndoManager.prototype.isClean = UndoManager.prototype.isAtBookmark;\nUndoManager.prototype.markClean = UndoManager.prototype.bookmark;\nfunction rearrangeUndoStack(stack, pos) {\n for (var i = pos; i--;) {\n var deltaSet = stack[i];\n if (deltaSet && !deltaSet[0].ignore) {\n while (i < pos - 1) {\n var swapped = swapGroups(stack[i], stack[i + 1]);\n stack[i] = swapped[0];\n stack[i + 1] = swapped[1];\n i++;\n }\n return true;\n }\n }\n}\nvar Range = require(\"./range\").Range;\nvar cmp = Range.comparePoints;\nvar comparePoints = Range.comparePoints;\nfunction $updateMarkers(delta) {\n var isInsert = delta.action == \"insert\";\n var start = delta.start;\n var end = delta.end;\n var rowShift = (end.row - start.row) * (isInsert ? 1 : -1);\n var colShift = (end.column - start.column) * (isInsert ? 1 : -1);\n if (isInsert)\n end = start;\n for (var i in this.marks) {\n var point = this.marks[i];\n var cmp = comparePoints(point, start);\n if (cmp < 0) {\n continue; // delta starts after the range\n }\n if (cmp === 0) {\n if (isInsert) {\n if (point.bias == 1) {\n cmp = 1;\n }\n else {\n point.bias == -1;\n continue;\n }\n }\n }\n var cmp2 = isInsert ? cmp : comparePoints(point, end);\n if (cmp2 > 0) {\n point.row += rowShift;\n point.column += point.row == end.row ? colShift : 0;\n continue;\n }\n if (!isInsert && cmp2 <= 0) {\n point.row = start.row;\n point.column = start.column;\n if (cmp2 === 0)\n point.bias = 1;\n }\n }\n}\nfunction clonePos(pos) {\n return { row: pos.row, column: pos.column };\n}\nfunction cloneDelta(d) {\n return {\n start: clonePos(d.start),\n end: clonePos(d.end),\n action: d.action,\n lines: d.lines.slice()\n };\n}\nfunction stringifyDelta(d) {\n d = d || this;\n if (Array.isArray(d)) {\n return d.map(stringifyDelta).join(\"\\n\");\n }\n var type = \"\";\n if (d.action) {\n type = d.action == \"insert\" ? \"+\" : \"-\";\n type += \"[\" + d.lines + \"]\";\n }\n else if (d.value) {\n if (Array.isArray(d.value)) {\n type = d.value.map(stringifyRange).join(\"\\n\");\n }\n else {\n type = stringifyRange(d.value);\n }\n }\n if (d.start) {\n type += stringifyRange(d);\n }\n if (d.id || d.rev) {\n type += \"\\t(\" + (d.id || d.rev) + \")\";\n }\n return type;\n}\nfunction stringifyRange(r) {\n return r.start.row + \":\" + r.start.column\n + \"=>\" + r.end.row + \":\" + r.end.column;\n}\nfunction swap(d1, d2) {\n var i1 = d1.action == \"insert\";\n var i2 = d2.action == \"insert\";\n if (i1 && i2) {\n if (cmp(d2.start, d1.end) >= 0) {\n shift(d2, d1, -1);\n }\n else if (cmp(d2.start, d1.start) <= 0) {\n shift(d1, d2, +1);\n }\n else {\n return null;\n }\n }\n else if (i1 && !i2) {\n if (cmp(d2.start, d1.end) >= 0) {\n shift(d2, d1, -1);\n }\n else if (cmp(d2.end, d1.start) <= 0) {\n shift(d1, d2, -1);\n }\n else {\n return null;\n }\n }\n else if (!i1 && i2) {\n if (cmp(d2.start, d1.start) >= 0) {\n shift(d2, d1, +1);\n }\n else if (cmp(d2.start, d1.start) <= 0) {\n shift(d1, d2, +1);\n }\n else {\n return null;\n }\n }\n else if (!i1 && !i2) {\n if (cmp(d2.start, d1.start) >= 0) {\n shift(d2, d1, +1);\n }\n else if (cmp(d2.end, d1.start) <= 0) {\n shift(d1, d2, -1);\n }\n else {\n return null;\n }\n }\n return [d2, d1];\n}\nfunction swapGroups(ds1, ds2) {\n for (var i = ds1.length; i--;) {\n for (var j = 0; j < ds2.length; j++) {\n if (!swap(ds1[i], ds2[j])) {\n while (i < ds1.length) {\n while (j--) {\n swap(ds2[j], ds1[i]);\n }\n j = ds2.length;\n i++;\n }\n return [ds1, ds2];\n }\n }\n }\n ds1.selectionBefore = ds2.selectionBefore =\n ds1.selectionAfter = ds2.selectionAfter = null;\n return [ds2, ds1];\n}\nfunction xform(d1, c1) {\n var i1 = d1.action == \"insert\";\n var i2 = c1.action == \"insert\";\n if (i1 && i2) {\n if (cmp(d1.start, c1.start) < 0) {\n shift(c1, d1, 1);\n }\n else {\n shift(d1, c1, 1);\n }\n }\n else if (i1 && !i2) {\n if (cmp(d1.start, c1.end) >= 0) {\n shift(d1, c1, -1);\n }\n else if (cmp(d1.start, c1.start) <= 0) {\n shift(c1, d1, +1);\n }\n else {\n shift(d1, Range.fromPoints(c1.start, d1.start), -1);\n shift(c1, d1, +1);\n }\n }\n else if (!i1 && i2) {\n if (cmp(c1.start, d1.end) >= 0) {\n shift(c1, d1, -1);\n }\n else if (cmp(c1.start, d1.start) <= 0) {\n shift(d1, c1, +1);\n }\n else {\n shift(c1, Range.fromPoints(d1.start, c1.start), -1);\n shift(d1, c1, +1);\n }\n }\n else if (!i1 && !i2) {\n if (cmp(c1.start, d1.end) >= 0) {\n shift(c1, d1, -1);\n }\n else if (cmp(c1.end, d1.start) <= 0) {\n shift(d1, c1, -1);\n }\n else {\n var before, after;\n if (cmp(d1.start, c1.start) < 0) {\n before = d1;\n d1 = splitDelta(d1, c1.start);\n }\n if (cmp(d1.end, c1.end) > 0) {\n after = splitDelta(d1, c1.end);\n }\n shiftPos(c1.end, d1.start, d1.end, -1);\n if (after && !before) {\n d1.lines = after.lines;\n d1.start = after.start;\n d1.end = after.end;\n after = d1;\n }\n return [c1, before, after].filter(Boolean);\n }\n }\n return [c1, d1];\n}\nfunction shift(d1, d2, dir) {\n shiftPos(d1.start, d2.start, d2.end, dir);\n shiftPos(d1.end, d2.start, d2.end, dir);\n}\nfunction shiftPos(pos, start, end, dir) {\n if (pos.row == (dir == 1 ? start : end).row) {\n pos.column += dir * (end.column - start.column);\n }\n pos.row += dir * (end.row - start.row);\n}\nfunction splitDelta(c, pos) {\n var lines = c.lines;\n var end = c.end;\n c.end = clonePos(pos);\n var rowsBefore = c.end.row - c.start.row;\n var otherLines = lines.splice(rowsBefore, lines.length);\n var col = rowsBefore ? pos.column : pos.column - c.start.column;\n lines.push(otherLines[0].substring(0, col));\n otherLines[0] = otherLines[0].substr(col);\n var rest = {\n start: clonePos(pos),\n end: end,\n lines: otherLines,\n action: c.action\n };\n return rest;\n}\nfunction moveDeltasByOne(redoStack, d) {\n d = cloneDelta(d);\n for (var j = redoStack.length; j--;) {\n var deltaSet = redoStack[j];\n for (var i = 0; i < deltaSet.length; i++) {\n var x = deltaSet[i];\n var xformed = xform(x, d);\n d = xformed[0];\n if (xformed.length != 2) {\n if (xformed[2]) {\n deltaSet.splice(i + 1, 1, xformed[1], xformed[2]);\n i++;\n }\n else if (!xformed[1]) {\n deltaSet.splice(i, 1);\n i--;\n }\n }\n }\n if (!deltaSet.length) {\n redoStack.splice(j, 1);\n }\n }\n return redoStack;\n}\nfunction rebaseRedoStack(redoStack, deltaSets) {\n for (var i = 0; i < deltaSets.length; i++) {\n var deltas = deltaSets[i];\n for (var j = 0; j < deltas.length; j++) {\n moveDeltasByOne(redoStack, deltas[j]);\n }\n }\n}\nexports.UndoManager = UndoManager;\n\n});\n\nace.define(\"ace/edit_session/fold_line\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar Range = require(\"../range\").Range;\nvar FoldLine = /** @class */ (function () {\n function FoldLine(foldData, folds) {\n this.foldData = foldData;\n if (Array.isArray(folds)) {\n this.folds = folds;\n }\n else {\n folds = this.folds = [folds];\n }\n var last = folds[folds.length - 1];\n this.range = new Range(folds[0].start.row, folds[0].start.column, last.end.row, last.end.column);\n this.start = this.range.start;\n this.end = this.range.end;\n this.folds.forEach(function (fold) {\n fold.setFoldLine(this);\n }, this);\n }\n FoldLine.prototype.shiftRow = function (shift) {\n this.start.row += shift;\n this.end.row += shift;\n this.folds.forEach(function (fold) {\n fold.start.row += shift;\n fold.end.row += shift;\n });\n };\n FoldLine.prototype.addFold = function (fold) {\n if (fold.sameRow) {\n if (fold.start.row < this.startRow || fold.endRow > this.endRow) {\n throw new Error(\"Can't add a fold to this FoldLine as it has no connection\");\n }\n this.folds.push(fold);\n this.folds.sort(function (a, b) {\n return -a.range.compareEnd(b.start.row, b.start.column);\n });\n if (this.range.compareEnd(fold.start.row, fold.start.column) > 0) {\n this.end.row = fold.end.row;\n this.end.column = fold.end.column;\n }\n else if (this.range.compareStart(fold.end.row, fold.end.column) < 0) {\n this.start.row = fold.start.row;\n this.start.column = fold.start.column;\n }\n }\n else if (fold.start.row == this.end.row) {\n this.folds.push(fold);\n this.end.row = fold.end.row;\n this.end.column = fold.end.column;\n }\n else if (fold.end.row == this.start.row) {\n this.folds.unshift(fold);\n this.start.row = fold.start.row;\n this.start.column = fold.start.column;\n }\n else {\n throw new Error(\"Trying to add fold to FoldRow that doesn't have a matching row\");\n }\n fold.foldLine = this;\n };\n FoldLine.prototype.containsRow = function (row) {\n return row >= this.start.row && row <= this.end.row;\n };\n FoldLine.prototype.walk = function (callback, endRow, endColumn) {\n var lastEnd = 0, folds = this.folds, fold, cmp, stop, isNewRow = true;\n if (endRow == null) {\n endRow = this.end.row;\n endColumn = this.end.column;\n }\n for (var i = 0; i < folds.length; i++) {\n fold = folds[i];\n cmp = fold.range.compareStart(endRow, endColumn);\n if (cmp == -1) {\n callback(null, endRow, endColumn, lastEnd, isNewRow);\n return;\n }\n stop = callback(null, fold.start.row, fold.start.column, lastEnd, isNewRow);\n stop = !stop && callback(fold.placeholder, fold.start.row, fold.start.column, lastEnd);\n if (stop || cmp === 0) {\n return;\n }\n isNewRow = !fold.sameRow;\n lastEnd = fold.end.column;\n }\n callback(null, endRow, endColumn, lastEnd, isNewRow);\n };\n FoldLine.prototype.getNextFoldTo = function (row, column) {\n var fold, cmp;\n for (var i = 0; i < this.folds.length; i++) {\n fold = this.folds[i];\n cmp = fold.range.compareEnd(row, column);\n if (cmp == -1) {\n return {\n fold: fold,\n kind: \"after\"\n };\n }\n else if (cmp === 0) {\n return {\n fold: fold,\n kind: \"inside\"\n };\n }\n }\n return null;\n };\n FoldLine.prototype.addRemoveChars = function (row, column, len) {\n var ret = this.getNextFoldTo(row, column), fold, folds;\n if (ret) {\n fold = ret.fold;\n if (ret.kind == \"inside\"\n && fold.start.column != column\n && fold.start.row != row) {\n window.console && window.console.log(row, column, fold);\n }\n else if (fold.start.row == row) {\n folds = this.folds;\n var i = folds.indexOf(fold);\n if (i === 0) {\n this.start.column += len;\n }\n for (i; i < folds.length; i++) {\n fold = folds[i];\n fold.start.column += len;\n if (!fold.sameRow) {\n return;\n }\n fold.end.column += len;\n }\n this.end.column += len;\n }\n }\n };\n FoldLine.prototype.split = function (row, column) {\n var pos = this.getNextFoldTo(row, column);\n if (!pos || pos.kind == \"inside\")\n return null;\n var fold = pos.fold;\n var folds = this.folds;\n var foldData = this.foldData;\n var i = folds.indexOf(fold);\n var foldBefore = folds[i - 1];\n this.end.row = foldBefore.end.row;\n this.end.column = foldBefore.end.column;\n folds = folds.splice(i, folds.length - i);\n var newFoldLine = new FoldLine(foldData, folds);\n foldData.splice(foldData.indexOf(this) + 1, 0, newFoldLine);\n return newFoldLine;\n };\n FoldLine.prototype.merge = function (foldLineNext) {\n var folds = foldLineNext.folds;\n for (var i = 0; i < folds.length; i++) {\n this.addFold(folds[i]);\n }\n var foldData = this.foldData;\n foldData.splice(foldData.indexOf(foldLineNext), 1);\n };\n FoldLine.prototype.toString = function () {\n var ret = [this.range.toString() + \": [\"];\n this.folds.forEach(function (fold) {\n ret.push(\" \" + fold.toString());\n });\n ret.push(\"]\");\n return ret.join(\"\\n\");\n };\n FoldLine.prototype.idxToPosition = function (idx) {\n var lastFoldEndColumn = 0;\n for (var i = 0; i < this.folds.length; i++) {\n var fold = this.folds[i];\n idx -= fold.start.column - lastFoldEndColumn;\n if (idx < 0) {\n return {\n row: fold.start.row,\n column: fold.start.column + idx\n };\n }\n idx -= fold.placeholder.length;\n if (idx < 0) {\n return fold.start;\n }\n lastFoldEndColumn = fold.end.column;\n }\n return {\n row: this.end.row,\n column: this.end.column + idx\n };\n };\n return FoldLine;\n}());\nexports.FoldLine = FoldLine;\n\n});\n\nace.define(\"ace/range_list\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar Range = require(\"./range\").Range;\nvar comparePoints = Range.comparePoints;\nvar RangeList = /** @class */ (function () {\n function RangeList() {\n this.ranges = [];\n this.$bias = 1;\n }\n RangeList.prototype.pointIndex = function (pos, excludeEdges, startIndex) {\n var list = this.ranges;\n for (var i = startIndex || 0; i < list.length; i++) {\n var range = list[i];\n var cmpEnd = comparePoints(pos, range.end);\n if (cmpEnd > 0)\n continue;\n var cmpStart = comparePoints(pos, range.start);\n if (cmpEnd === 0)\n return excludeEdges && cmpStart !== 0 ? -i - 2 : i;\n if (cmpStart > 0 || (cmpStart === 0 && !excludeEdges))\n return i;\n return -i - 1;\n }\n return -i - 1;\n };\n RangeList.prototype.add = function (range) {\n var excludeEdges = !range.isEmpty();\n var startIndex = this.pointIndex(range.start, excludeEdges);\n if (startIndex < 0)\n startIndex = -startIndex - 1;\n var endIndex = this.pointIndex(range.end, excludeEdges, startIndex);\n if (endIndex < 0)\n endIndex = -endIndex - 1;\n else\n endIndex++;\n return this.ranges.splice(startIndex, endIndex - startIndex, range);\n };\n RangeList.prototype.addList = function (list) {\n var removed = [];\n for (var i = list.length; i--;) {\n removed.push.apply(removed, this.add(list[i]));\n }\n return removed;\n };\n RangeList.prototype.substractPoint = function (pos) {\n var i = this.pointIndex(pos);\n if (i >= 0)\n return this.ranges.splice(i, 1);\n };\n RangeList.prototype.merge = function () {\n var removed = [];\n var list = this.ranges;\n list = list.sort(function (a, b) {\n return comparePoints(a.start, b.start);\n });\n var next = list[0], range;\n for (var i = 1; i < list.length; i++) {\n range = next;\n next = list[i];\n var cmp = comparePoints(range.end, next.start);\n if (cmp < 0)\n continue;\n if (cmp == 0 && !range.isEmpty() && !next.isEmpty())\n continue;\n if (comparePoints(range.end, next.end) < 0) {\n range.end.row = next.end.row;\n range.end.column = next.end.column;\n }\n list.splice(i, 1);\n removed.push(next);\n next = range;\n i--;\n }\n this.ranges = list;\n return removed;\n };\n RangeList.prototype.contains = function (row, column) {\n return this.pointIndex({ row: row, column: column }) >= 0;\n };\n RangeList.prototype.containsPoint = function (pos) {\n return this.pointIndex(pos) >= 0;\n };\n RangeList.prototype.rangeAtPoint = function (pos) {\n var i = this.pointIndex(pos);\n if (i >= 0)\n return this.ranges[i];\n };\n RangeList.prototype.clipRows = function (startRow, endRow) {\n var list = this.ranges;\n if (list[0].start.row > endRow || list[list.length - 1].start.row < startRow)\n return [];\n var startIndex = this.pointIndex({ row: startRow, column: 0 });\n if (startIndex < 0)\n startIndex = -startIndex - 1;\n var endIndex = this.pointIndex({ row: endRow, column: 0 }, startIndex);\n if (endIndex < 0)\n endIndex = -endIndex - 1;\n var clipped = [];\n for (var i = startIndex; i < endIndex; i++) {\n clipped.push(list[i]);\n }\n return clipped;\n };\n RangeList.prototype.removeAll = function () {\n return this.ranges.splice(0, this.ranges.length);\n };\n RangeList.prototype.attach = function (session) {\n if (this.session)\n this.detach();\n this.session = session;\n this.onChange = this.$onChange.bind(this);\n this.session.on('change', this.onChange);\n };\n RangeList.prototype.detach = function () {\n if (!this.session)\n return;\n this.session.removeListener('change', this.onChange);\n this.session = null;\n };\n RangeList.prototype.$onChange = function (delta) {\n var start = delta.start;\n var end = delta.end;\n var startRow = start.row;\n var endRow = end.row;\n var ranges = this.ranges;\n for (var i = 0, n = ranges.length; i < n; i++) {\n var r = ranges[i];\n if (r.end.row >= startRow)\n break;\n }\n if (delta.action == \"insert\") {\n var lineDif = endRow - startRow;\n var colDiff = -start.column + end.column;\n for (; i < n; i++) {\n var r = ranges[i];\n if (r.start.row > startRow)\n break;\n if (r.start.row == startRow && r.start.column >= start.column) {\n if (r.start.column == start.column && this.$bias <= 0) {\n }\n else {\n r.start.column += colDiff;\n r.start.row += lineDif;\n }\n }\n if (r.end.row == startRow && r.end.column >= start.column) {\n if (r.end.column == start.column && this.$bias < 0) {\n continue;\n }\n if (r.end.column == start.column && colDiff > 0 && i < n - 1) {\n if (r.end.column > r.start.column && r.end.column == ranges[i + 1].start.column)\n r.end.column -= colDiff;\n }\n r.end.column += colDiff;\n r.end.row += lineDif;\n }\n }\n }\n else {\n var lineDif = startRow - endRow;\n var colDiff = start.column - end.column;\n for (; i < n; i++) {\n var r = ranges[i];\n if (r.start.row > endRow)\n break;\n if (r.end.row < endRow\n && (startRow < r.end.row\n || startRow == r.end.row && start.column < r.end.column)) {\n r.end.row = startRow;\n r.end.column = start.column;\n }\n else if (r.end.row == endRow) {\n if (r.end.column <= end.column) {\n if (lineDif || r.end.column > start.column) {\n r.end.column = start.column;\n r.end.row = start.row;\n }\n }\n else {\n r.end.column += colDiff;\n r.end.row += lineDif;\n }\n }\n else if (r.end.row > endRow) {\n r.end.row += lineDif;\n }\n if (r.start.row < endRow\n && (startRow < r.start.row\n || startRow == r.start.row && start.column < r.start.column)) {\n r.start.row = startRow;\n r.start.column = start.column;\n }\n else if (r.start.row == endRow) {\n if (r.start.column <= end.column) {\n if (lineDif || r.start.column > start.column) {\n r.start.column = start.column;\n r.start.row = start.row;\n }\n }\n else {\n r.start.column += colDiff;\n r.start.row += lineDif;\n }\n }\n else if (r.start.row > endRow) {\n r.start.row += lineDif;\n }\n }\n }\n if (lineDif != 0 && i < n) {\n for (; i < n; i++) {\n var r = ranges[i];\n r.start.row += lineDif;\n r.end.row += lineDif;\n }\n }\n };\n return RangeList;\n}());\nRangeList.prototype.comparePoints = comparePoints;\nexports.RangeList = RangeList;\n\n});\n\nace.define(\"ace/edit_session/fold\",[\"require\",\"exports\",\"module\",\"ace/range_list\"], function(require, exports, module){\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar RangeList = require(\"../range_list\").RangeList;\nvar Fold = /** @class */ (function (_super) {\n __extends(Fold, _super);\n function Fold(range, placeholder) {\n var _this = _super.call(this) || this;\n _this.foldLine = null;\n _this.placeholder = placeholder;\n _this.range = range;\n _this.start = range.start;\n _this.end = range.end;\n _this.sameRow = range.start.row == range.end.row;\n _this.subFolds = _this.ranges = [];\n return _this;\n }\n Fold.prototype.toString = function () {\n return '\"' + this.placeholder + '\" ' + this.range.toString();\n };\n Fold.prototype.setFoldLine = function (foldLine) {\n this.foldLine = foldLine;\n this.subFolds.forEach(function (fold) {\n fold.setFoldLine(foldLine);\n });\n };\n Fold.prototype.clone = function () {\n var range = this.range.clone();\n var fold = new Fold(range, this.placeholder);\n this.subFolds.forEach(function (subFold) {\n fold.subFolds.push(subFold.clone());\n });\n fold.collapseChildren = this.collapseChildren;\n return fold;\n };\n Fold.prototype.addSubFold = function (fold) {\n if (this.range.isEqual(fold))\n return;\n consumeRange(fold, this.start);\n var row = fold.start.row, column = fold.start.column;\n for (var i = 0, cmp = -1; i < this.subFolds.length; i++) {\n cmp = this.subFolds[i].range.compare(row, column);\n if (cmp != 1)\n break;\n }\n var afterStart = this.subFolds[i];\n var firstConsumed = 0;\n if (cmp == 0) {\n if (afterStart.range.containsRange(fold))\n return afterStart.addSubFold(fold);\n else\n firstConsumed = 1;\n }\n var row = fold.range.end.row, column = fold.range.end.column;\n for (var j = i, cmp = -1; j < this.subFolds.length; j++) {\n cmp = this.subFolds[j].range.compare(row, column);\n if (cmp != 1)\n break;\n }\n if (cmp == 0)\n j++;\n var consumedFolds = this.subFolds.splice(i, j - i, fold);\n var last = cmp == 0 ? consumedFolds.length - 1 : consumedFolds.length;\n for (var k = firstConsumed; k < last; k++) {\n fold.addSubFold(consumedFolds[k]);\n }\n fold.setFoldLine(this.foldLine);\n return fold;\n };\n Fold.prototype.restoreRange = function (range) {\n return restoreRange(range, this.start);\n };\n return Fold;\n}(RangeList));\nfunction consumePoint(point, anchor) {\n point.row -= anchor.row;\n if (point.row == 0)\n point.column -= anchor.column;\n}\nfunction consumeRange(range, anchor) {\n consumePoint(range.start, anchor);\n consumePoint(range.end, anchor);\n}\nfunction restorePoint(point, anchor) {\n if (point.row == 0)\n point.column += anchor.column;\n point.row += anchor.row;\n}\nfunction restoreRange(range, anchor) {\n restorePoint(range.start, anchor);\n restorePoint(range.end, anchor);\n}\nexports.Fold = Fold;\n\n});\n\nace.define(\"ace/edit_session/folding\",[\"require\",\"exports\",\"module\",\"ace/range\",\"ace/edit_session/fold_line\",\"ace/edit_session/fold\",\"ace/token_iterator\",\"ace/mouse/mouse_event\"], function(require, exports, module){\"use strict\";\nvar Range = require(\"../range\").Range;\nvar FoldLine = require(\"./fold_line\").FoldLine;\nvar Fold = require(\"./fold\").Fold;\nvar TokenIterator = require(\"../token_iterator\").TokenIterator;\nvar MouseEvent = require(\"../mouse/mouse_event\").MouseEvent;\nfunction Folding() {\n this.getFoldAt = function (row, column, side) {\n var foldLine = this.getFoldLine(row);\n if (!foldLine)\n return null;\n var folds = foldLine.folds;\n for (var i = 0; i < folds.length; i++) {\n var range = folds[i].range;\n if (range.contains(row, column)) {\n if (side == 1 && range.isEnd(row, column) && !range.isEmpty()) {\n continue;\n }\n else if (side == -1 && range.isStart(row, column) && !range.isEmpty()) {\n continue;\n }\n return folds[i];\n }\n }\n };\n this.getFoldsInRange = function (range) {\n var start = range.start;\n var end = range.end;\n var foldLines = this.$foldData;\n var foundFolds = [];\n start.column += 1;\n end.column -= 1;\n for (var i = 0; i < foldLines.length; i++) {\n var cmp = foldLines[i].range.compareRange(range);\n if (cmp == 2) {\n continue;\n }\n else if (cmp == -2) {\n break;\n }\n var folds = foldLines[i].folds;\n for (var j = 0; j < folds.length; j++) {\n var fold = folds[j];\n cmp = fold.range.compareRange(range);\n if (cmp == -2) {\n break;\n }\n else if (cmp == 2) {\n continue;\n }\n else \n if (cmp == 42) {\n break;\n }\n foundFolds.push(fold);\n }\n }\n start.column -= 1;\n end.column += 1;\n return foundFolds;\n };\n this.getFoldsInRangeList = function (ranges) {\n if (Array.isArray(ranges)) {\n var folds = [];\n ranges.forEach(function (range) {\n folds = folds.concat(this.getFoldsInRange(range));\n }, this);\n }\n else {\n var folds = this.getFoldsInRange(ranges);\n }\n return folds;\n };\n this.getAllFolds = function () {\n var folds = [];\n var foldLines = this.$foldData;\n for (var i = 0; i < foldLines.length; i++)\n for (var j = 0; j < foldLines[i].folds.length; j++)\n folds.push(foldLines[i].folds[j]);\n return folds;\n };\n this.getFoldStringAt = function (row, column, trim, foldLine) {\n foldLine = foldLine || this.getFoldLine(row);\n if (!foldLine)\n return null;\n var lastFold = {\n end: { column: 0 }\n };\n var str, fold;\n for (var i = 0; i < foldLine.folds.length; i++) {\n fold = foldLine.folds[i];\n var cmp = fold.range.compareEnd(row, column);\n if (cmp == -1) {\n str = this\n .getLine(fold.start.row)\n .substring(lastFold.end.column, fold.start.column);\n break;\n }\n else if (cmp === 0) {\n return null;\n }\n lastFold = fold;\n }\n if (!str)\n str = this.getLine(fold.start.row).substring(lastFold.end.column);\n if (trim == -1)\n return str.substring(0, column - lastFold.end.column);\n else if (trim == 1)\n return str.substring(column - lastFold.end.column);\n else\n return str;\n };\n this.getFoldLine = function (docRow, startFoldLine) {\n var foldData = this.$foldData;\n var i = 0;\n if (startFoldLine)\n i = foldData.indexOf(startFoldLine);\n if (i == -1)\n i = 0;\n for (i; i < foldData.length; i++) {\n var foldLine = foldData[i];\n if (foldLine.start.row <= docRow && foldLine.end.row >= docRow) {\n return foldLine;\n }\n else if (foldLine.end.row > docRow) {\n return null;\n }\n }\n return null;\n };\n this.getNextFoldLine = function (docRow, startFoldLine) {\n var foldData = this.$foldData;\n var i = 0;\n if (startFoldLine)\n i = foldData.indexOf(startFoldLine);\n if (i == -1)\n i = 0;\n for (i; i < foldData.length; i++) {\n var foldLine = foldData[i];\n if (foldLine.end.row >= docRow) {\n return foldLine;\n }\n }\n return null;\n };\n this.getFoldedRowCount = function (first, last) {\n var foldData = this.$foldData, rowCount = last - first + 1;\n for (var i = 0; i < foldData.length; i++) {\n var foldLine = foldData[i], end = foldLine.end.row, start = foldLine.start.row;\n if (end >= last) {\n if (start < last) {\n if (start >= first)\n rowCount -= last - start;\n else\n rowCount = 0; // in one fold\n }\n break;\n }\n else if (end >= first) {\n if (start >= first) // fold inside range\n rowCount -= end - start;\n else\n rowCount -= end - first + 1;\n }\n }\n return rowCount;\n };\n this.$addFoldLine = function (foldLine) {\n this.$foldData.push(foldLine);\n this.$foldData.sort(function (a, b) {\n return a.start.row - b.start.row;\n });\n return foldLine;\n };\n this.addFold = function (placeholder, range) {\n var foldData = this.$foldData;\n var added = false;\n var fold;\n if (placeholder instanceof Fold)\n fold = placeholder;\n else {\n fold = new Fold(range, placeholder);\n fold.collapseChildren = range.collapseChildren;\n }\n this.$clipRangeToDocument(fold.range);\n var startRow = fold.start.row;\n var startColumn = fold.start.column;\n var endRow = fold.end.row;\n var endColumn = fold.end.column;\n var startFold = this.getFoldAt(startRow, startColumn, 1);\n var endFold = this.getFoldAt(endRow, endColumn, -1);\n if (startFold && endFold == startFold)\n return startFold.addSubFold(fold);\n if (startFold && !startFold.range.isStart(startRow, startColumn))\n this.removeFold(startFold);\n if (endFold && !endFold.range.isEnd(endRow, endColumn))\n this.removeFold(endFold);\n var folds = this.getFoldsInRange(fold.range);\n if (folds.length > 0) {\n this.removeFolds(folds);\n if (!fold.collapseChildren) {\n folds.forEach(function (subFold) {\n fold.addSubFold(subFold);\n });\n }\n }\n for (var i = 0; i < foldData.length; i++) {\n var foldLine = foldData[i];\n if (endRow == foldLine.start.row) {\n foldLine.addFold(fold);\n added = true;\n break;\n }\n else if (startRow == foldLine.end.row) {\n foldLine.addFold(fold);\n added = true;\n if (!fold.sameRow) {\n var foldLineNext = foldData[i + 1];\n if (foldLineNext && foldLineNext.start.row == endRow) {\n foldLine.merge(foldLineNext);\n break;\n }\n }\n break;\n }\n else if (endRow <= foldLine.start.row) {\n break;\n }\n }\n if (!added)\n foldLine = this.$addFoldLine(new FoldLine(this.$foldData, fold));\n if (this.$useWrapMode)\n this.$updateWrapData(foldLine.start.row, foldLine.start.row);\n else\n this.$updateRowLengthCache(foldLine.start.row, foldLine.start.row);\n this.$modified = true;\n this._signal(\"changeFold\", { data: fold, action: \"add\" });\n return fold;\n };\n this.addFolds = function (folds) {\n folds.forEach(function (fold) {\n this.addFold(fold);\n }, this);\n };\n this.removeFold = function (fold) {\n var foldLine = fold.foldLine;\n var startRow = foldLine.start.row;\n var endRow = foldLine.end.row;\n var foldLines = this.$foldData;\n var folds = foldLine.folds;\n if (folds.length == 1) {\n foldLines.splice(foldLines.indexOf(foldLine), 1);\n }\n else \n if (foldLine.range.isEnd(fold.end.row, fold.end.column)) {\n folds.pop();\n foldLine.end.row = folds[folds.length - 1].end.row;\n foldLine.end.column = folds[folds.length - 1].end.column;\n }\n else \n if (foldLine.range.isStart(fold.start.row, fold.start.column)) {\n folds.shift();\n foldLine.start.row = folds[0].start.row;\n foldLine.start.column = folds[0].start.column;\n }\n else \n if (fold.sameRow) {\n folds.splice(folds.indexOf(fold), 1);\n }\n else \n {\n var newFoldLine = foldLine.split(fold.start.row, fold.start.column);\n folds = newFoldLine.folds;\n folds.shift();\n newFoldLine.start.row = folds[0].start.row;\n newFoldLine.start.column = folds[0].start.column;\n }\n if (!this.$updating) {\n if (this.$useWrapMode)\n this.$updateWrapData(startRow, endRow);\n else\n this.$updateRowLengthCache(startRow, endRow);\n }\n this.$modified = true;\n this._signal(\"changeFold\", { data: fold, action: \"remove\" });\n };\n this.removeFolds = function (folds) {\n var cloneFolds = [];\n for (var i = 0; i < folds.length; i++) {\n cloneFolds.push(folds[i]);\n }\n cloneFolds.forEach(function (fold) {\n this.removeFold(fold);\n }, this);\n this.$modified = true;\n };\n this.expandFold = function (fold) {\n this.removeFold(fold);\n fold.subFolds.forEach(function (subFold) {\n fold.restoreRange(subFold);\n this.addFold(subFold);\n }, this);\n if (fold.collapseChildren > 0) {\n this.foldAll(fold.start.row + 1, fold.end.row, fold.collapseChildren - 1);\n }\n fold.subFolds = [];\n };\n this.expandFolds = function (folds) {\n folds.forEach(function (fold) {\n this.expandFold(fold);\n }, this);\n };\n this.unfold = function (location, expandInner) {\n var range, folds;\n if (location == null) {\n range = new Range(0, 0, this.getLength(), 0);\n if (expandInner == null)\n expandInner = true;\n }\n else if (typeof location == \"number\") {\n range = new Range(location, 0, location, this.getLine(location).length);\n }\n else if (\"row\" in location) {\n range = Range.fromPoints(location, location);\n }\n else if (Array.isArray(location)) {\n folds = [];\n location.forEach(function (range) {\n folds = folds.concat(this.unfold(range));\n }, this);\n return folds;\n }\n else {\n range = location;\n }\n folds = this.getFoldsInRangeList(range);\n var outermostFolds = folds;\n while (folds.length == 1\n && Range.comparePoints(folds[0].start, range.start) < 0\n && Range.comparePoints(folds[0].end, range.end) > 0) {\n this.expandFolds(folds);\n folds = this.getFoldsInRangeList(range);\n }\n if (expandInner != false) {\n this.removeFolds(folds);\n }\n else {\n this.expandFolds(folds);\n }\n if (outermostFolds.length)\n return outermostFolds;\n };\n this.isRowFolded = function (docRow, startFoldRow) {\n return !!this.getFoldLine(docRow, startFoldRow);\n };\n this.getRowFoldEnd = function (docRow, startFoldRow) {\n var foldLine = this.getFoldLine(docRow, startFoldRow);\n return foldLine ? foldLine.end.row : docRow;\n };\n this.getRowFoldStart = function (docRow, startFoldRow) {\n var foldLine = this.getFoldLine(docRow, startFoldRow);\n return foldLine ? foldLine.start.row : docRow;\n };\n this.getFoldDisplayLine = function (foldLine, endRow, endColumn, startRow, startColumn) {\n if (startRow == null)\n startRow = foldLine.start.row;\n if (startColumn == null)\n startColumn = 0;\n if (endRow == null)\n endRow = foldLine.end.row;\n if (endColumn == null)\n endColumn = this.getLine(endRow).length;\n var doc = this.doc;\n var textLine = \"\";\n foldLine.walk(function (placeholder, row, column, lastColumn) {\n if (row < startRow)\n return;\n if (row == startRow) {\n if (column < startColumn)\n return;\n lastColumn = Math.max(startColumn, lastColumn);\n }\n if (placeholder != null) {\n textLine += placeholder;\n }\n else {\n textLine += doc.getLine(row).substring(lastColumn, column);\n }\n }, endRow, endColumn);\n return textLine;\n };\n this.getDisplayLine = function (row, endColumn, startRow, startColumn) {\n var foldLine = this.getFoldLine(row);\n if (!foldLine) {\n var line;\n line = this.doc.getLine(row);\n return line.substring(startColumn || 0, endColumn || line.length);\n }\n else {\n return this.getFoldDisplayLine(foldLine, row, endColumn, startRow, startColumn);\n }\n };\n this.$cloneFoldData = function () {\n var fd = [];\n fd = this.$foldData.map(function (foldLine) {\n var folds = foldLine.folds.map(function (fold) {\n return fold.clone();\n });\n return new FoldLine(fd, folds);\n });\n return fd;\n };\n this.toggleFold = function (tryToUnfold) {\n var selection = this.selection;\n var range = selection.getRange();\n var fold;\n var bracketPos;\n if (range.isEmpty()) {\n var cursor = range.start;\n fold = this.getFoldAt(cursor.row, cursor.column);\n if (fold) {\n this.expandFold(fold);\n return;\n }\n else if (bracketPos = this.findMatchingBracket(cursor)) {\n if (range.comparePoint(bracketPos) == 1) {\n range.end = bracketPos;\n }\n else {\n range.start = bracketPos;\n range.start.column++;\n range.end.column--;\n }\n }\n else if (bracketPos = this.findMatchingBracket({ row: cursor.row, column: cursor.column + 1 })) {\n if (range.comparePoint(bracketPos) == 1)\n range.end = bracketPos;\n else\n range.start = bracketPos;\n range.start.column++;\n }\n else {\n range = this.getCommentFoldRange(cursor.row, cursor.column) || range;\n }\n }\n else {\n var folds = this.getFoldsInRange(range);\n if (tryToUnfold && folds.length) {\n this.expandFolds(folds);\n return;\n }\n else if (folds.length == 1) {\n fold = folds[0];\n }\n }\n if (!fold)\n fold = this.getFoldAt(range.start.row, range.start.column);\n if (fold && fold.range.toString() == range.toString()) {\n this.expandFold(fold);\n return;\n }\n var placeholder = \"...\";\n if (!range.isMultiLine()) {\n placeholder = this.getTextRange(range);\n if (placeholder.length < 4)\n return;\n placeholder = placeholder.trim().substring(0, 2) + \"..\";\n }\n this.addFold(placeholder, range);\n };\n this.getCommentFoldRange = function (row, column, dir) {\n var iterator = new TokenIterator(this, row, column);\n var token = iterator.getCurrentToken();\n var type = token && token.type;\n if (token && /^comment|string/.test(type)) {\n type = type.match(/comment|string/)[0];\n if (type == \"comment\")\n type += \"|doc-start|\\\\.doc\";\n var re = new RegExp(type);\n var range = new Range();\n if (dir != 1) {\n do {\n token = iterator.stepBackward();\n } while (token && re.test(token.type) && !/^comment.end/.test(token.type));\n token = iterator.stepForward();\n }\n range.start.row = iterator.getCurrentTokenRow();\n range.start.column = iterator.getCurrentTokenColumn() + (/^comment.start/.test(token.type) ? token.value.length : 2);\n iterator = new TokenIterator(this, row, column);\n if (dir != -1) {\n var lastRow = -1;\n do {\n token = iterator.stepForward();\n if (lastRow == -1) {\n var state = this.getState(iterator.$row);\n if (!re.test(state))\n lastRow = iterator.$row;\n }\n else if (iterator.$row > lastRow) {\n break;\n }\n } while (token && re.test(token.type) && !/^comment.start/.test(token.type));\n token = iterator.stepBackward();\n }\n else\n token = iterator.getCurrentToken();\n range.end.row = iterator.getCurrentTokenRow();\n range.end.column = iterator.getCurrentTokenColumn();\n if (!/^comment.end/.test(token.type)) {\n range.end.column += token.value.length - 2;\n }\n return range;\n }\n };\n this.foldAll = function (startRow, endRow, depth, test) {\n if (depth == undefined)\n depth = 100000; // JSON.stringify doesn't hanle Infinity\n var foldWidgets = this.foldWidgets;\n if (!foldWidgets)\n return; // mode doesn't support folding\n endRow = endRow || this.getLength();\n startRow = startRow || 0;\n for (var row = startRow; row < endRow; row++) {\n if (foldWidgets[row] == null)\n foldWidgets[row] = this.getFoldWidget(row);\n if (foldWidgets[row] != \"start\")\n continue;\n if (test && !test(row))\n continue;\n var range = this.getFoldWidgetRange(row);\n if (range && range.isMultiLine()\n && range.end.row <= endRow\n && range.start.row >= startRow) {\n row = range.end.row;\n range.collapseChildren = depth;\n this.addFold(\"...\", range);\n }\n }\n };\n this.foldToLevel = function (level) {\n this.foldAll();\n while (level-- > 0)\n this.unfold(null, false);\n };\n this.foldAllComments = function () {\n var session = this;\n this.foldAll(null, null, null, function (row) {\n var tokens = session.getTokens(row);\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n if (token.type == \"text\" && /^\\s+$/.test(token.value))\n continue;\n if (/comment/.test(token.type))\n return true;\n return false;\n }\n });\n };\n this.$foldStyles = {\n \"manual\": 1,\n \"markbegin\": 1,\n \"markbeginend\": 1\n };\n this.$foldStyle = \"markbegin\";\n this.setFoldStyle = function (style) {\n if (!this.$foldStyles[style])\n throw new Error(\"invalid fold style: \" + style + \"[\" + Object.keys(this.$foldStyles).join(\", \") + \"]\");\n if (this.$foldStyle == style)\n return;\n this.$foldStyle = style;\n if (style == \"manual\")\n this.unfold();\n var mode = this.$foldMode;\n this.$setFolding(null);\n this.$setFolding(mode);\n };\n this.$setFolding = function (foldMode) {\n if (this.$foldMode == foldMode)\n return;\n this.$foldMode = foldMode;\n this.off('change', this.$updateFoldWidgets);\n this.off('tokenizerUpdate', this.$tokenizerUpdateFoldWidgets);\n this._signal(\"changeAnnotation\");\n if (!foldMode || this.$foldStyle == \"manual\") {\n this.foldWidgets = null;\n return;\n }\n this.foldWidgets = [];\n this.getFoldWidget = foldMode.getFoldWidget.bind(foldMode, this, this.$foldStyle);\n this.getFoldWidgetRange = foldMode.getFoldWidgetRange.bind(foldMode, this, this.$foldStyle);\n this.$updateFoldWidgets = this.updateFoldWidgets.bind(this);\n this.$tokenizerUpdateFoldWidgets = this.tokenizerUpdateFoldWidgets.bind(this);\n this.on('change', this.$updateFoldWidgets);\n this.on('tokenizerUpdate', this.$tokenizerUpdateFoldWidgets);\n };\n this.getParentFoldRangeData = function (row, ignoreCurrent) {\n var fw = this.foldWidgets;\n if (!fw || (ignoreCurrent && fw[row]))\n return {};\n var i = row - 1, firstRange;\n while (i >= 0) {\n var c = fw[i];\n if (c == null)\n c = fw[i] = this.getFoldWidget(i);\n if (c == \"start\") {\n var range = this.getFoldWidgetRange(i);\n if (!firstRange)\n firstRange = range;\n if (range && range.end.row >= row)\n break;\n }\n i--;\n }\n return {\n range: i !== -1 && range,\n firstRange: firstRange\n };\n };\n this.onFoldWidgetClick = function (row, e) {\n if (e instanceof MouseEvent)\n e = e.domEvent;\n var options = {\n children: e.shiftKey,\n all: e.ctrlKey || e.metaKey,\n siblings: e.altKey\n };\n var range = this.$toggleFoldWidget(row, options);\n if (!range) {\n var el = (e.target || e.srcElement);\n if (el && /ace_fold-widget/.test(el.className))\n el.className += \" ace_invalid\";\n }\n };\n this.$toggleFoldWidget = function (row, options) {\n if (!this.getFoldWidget)\n return;\n var type = this.getFoldWidget(row);\n var line = this.getLine(row);\n var dir = type === \"end\" ? -1 : 1;\n var fold = this.getFoldAt(row, dir === -1 ? 0 : line.length, dir);\n if (fold) {\n if (options.children || options.all)\n this.removeFold(fold);\n else\n this.expandFold(fold);\n return fold;\n }\n var range = this.getFoldWidgetRange(row, true);\n if (range && !range.isMultiLine()) {\n fold = this.getFoldAt(range.start.row, range.start.column, 1);\n if (fold && range.isEqual(fold.range)) {\n this.removeFold(fold);\n return fold;\n }\n }\n if (options.siblings) {\n var data = this.getParentFoldRangeData(row);\n if (data.range) {\n var startRow = data.range.start.row + 1;\n var endRow = data.range.end.row;\n }\n this.foldAll(startRow, endRow, options.all ? 10000 : 0);\n }\n else if (options.children) {\n endRow = range ? range.end.row : this.getLength();\n this.foldAll(row + 1, endRow, options.all ? 10000 : 0);\n }\n else if (range) {\n if (options.all)\n range.collapseChildren = 10000;\n this.addFold(\"...\", range);\n }\n return range;\n };\n this.toggleFoldWidget = function (toggleParent) {\n var row = this.selection.getCursor().row;\n row = this.getRowFoldStart(row);\n var range = this.$toggleFoldWidget(row, {});\n if (range)\n return;\n var data = this.getParentFoldRangeData(row, true);\n range = data.range || data.firstRange;\n if (range) {\n row = range.start.row;\n var fold = this.getFoldAt(row, this.getLine(row).length, 1);\n if (fold) {\n this.removeFold(fold);\n }\n else {\n this.addFold(\"...\", range);\n }\n }\n };\n this.updateFoldWidgets = function (delta) {\n var firstRow = delta.start.row;\n var len = delta.end.row - firstRow;\n if (len === 0) {\n this.foldWidgets[firstRow] = null;\n }\n else if (delta.action == 'remove') {\n this.foldWidgets.splice(firstRow, len + 1, null);\n }\n else {\n var args = Array(len + 1);\n args.unshift(firstRow, 1);\n this.foldWidgets.splice.apply(this.foldWidgets, args);\n }\n };\n this.tokenizerUpdateFoldWidgets = function (e) {\n var rows = e.data;\n if (rows.first != rows.last) {\n if (this.foldWidgets.length > rows.first)\n this.foldWidgets.splice(rows.first, this.foldWidgets.length);\n }\n };\n}\nexports.Folding = Folding;\n\n});\n\nace.define(\"ace/edit_session/bracket_match\",[\"require\",\"exports\",\"module\",\"ace/token_iterator\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar TokenIterator = require(\"../token_iterator\").TokenIterator;\nvar Range = require(\"../range\").Range;\nfunction BracketMatch() {\n this.findMatchingBracket = function (position, chr) {\n if (position.column == 0)\n return null;\n var charBeforeCursor = chr || this.getLine(position.row).charAt(position.column - 1);\n if (charBeforeCursor == \"\")\n return null;\n var match = charBeforeCursor.match(/([\\(\\[\\{])|([\\)\\]\\}])/);\n if (!match)\n return null;\n if (match[1])\n return this.$findClosingBracket(match[1], position);\n else\n return this.$findOpeningBracket(match[2], position);\n };\n this.getBracketRange = function (pos) {\n var line = this.getLine(pos.row);\n var before = true, range;\n var chr = line.charAt(pos.column - 1);\n var match = chr && chr.match(/([\\(\\[\\{])|([\\)\\]\\}])/);\n if (!match) {\n chr = line.charAt(pos.column);\n pos = { row: pos.row, column: pos.column + 1 };\n match = chr && chr.match(/([\\(\\[\\{])|([\\)\\]\\}])/);\n before = false;\n }\n if (!match)\n return null;\n if (match[1]) {\n var bracketPos = this.$findClosingBracket(match[1], pos);\n if (!bracketPos)\n return null;\n range = Range.fromPoints(pos, bracketPos);\n if (!before) {\n range.end.column++;\n range.start.column--;\n }\n range.cursor = range.end;\n }\n else {\n var bracketPos = this.$findOpeningBracket(match[2], pos);\n if (!bracketPos)\n return null;\n range = Range.fromPoints(bracketPos, pos);\n if (!before) {\n range.start.column++;\n range.end.column--;\n }\n range.cursor = range.start;\n }\n return range;\n };\n this.getMatchingBracketRanges = function (pos, isBackwards) {\n var line = this.getLine(pos.row);\n var bracketsRegExp = /([\\(\\[\\{])|([\\)\\]\\}])/;\n var chr = !isBackwards && line.charAt(pos.column - 1);\n var match = chr && chr.match(bracketsRegExp);\n if (!match) {\n chr = (isBackwards === undefined || isBackwards) && line.charAt(pos.column);\n pos = {\n row: pos.row,\n column: pos.column + 1\n };\n match = chr && chr.match(bracketsRegExp);\n }\n if (!match)\n return null;\n var startRange = new Range(pos.row, pos.column - 1, pos.row, pos.column);\n var bracketPos = match[1] ? this.$findClosingBracket(match[1], pos)\n : this.$findOpeningBracket(match[2], pos);\n if (!bracketPos)\n return [startRange];\n var endRange = new Range(bracketPos.row, bracketPos.column, bracketPos.row, bracketPos.column + 1);\n return [startRange, endRange];\n };\n this.$brackets = {\n \")\": \"(\",\n \"(\": \")\",\n \"]\": \"[\",\n \"[\": \"]\",\n \"{\": \"}\",\n \"}\": \"{\",\n \"<\": \">\",\n \">\": \"<\"\n };\n this.$findOpeningBracket = function (bracket, position, typeRe) {\n var openBracket = this.$brackets[bracket];\n var depth = 1;\n var iterator = new TokenIterator(this, position.row, position.column);\n var token = iterator.getCurrentToken();\n if (!token)\n token = iterator.stepForward();\n if (!token)\n return;\n if (!typeRe) {\n typeRe = new RegExp(\"(\\\\.?\" +\n token.type.replace(\".\", \"\\\\.\").replace(\"rparen\", \".paren\")\n .replace(/\\b(?:end)\\b/, \"(?:start|begin|end)\")\n .replace(/-close\\b/, \"-(close|open)\")\n + \")+\");\n }\n var valueIndex = position.column - iterator.getCurrentTokenColumn() - 2;\n var value = token.value;\n while (true) {\n while (valueIndex >= 0) {\n var chr = value.charAt(valueIndex);\n if (chr == openBracket) {\n depth -= 1;\n if (depth == 0) {\n return { row: iterator.getCurrentTokenRow(),\n column: valueIndex + iterator.getCurrentTokenColumn() };\n }\n }\n else if (chr == bracket) {\n depth += 1;\n }\n valueIndex -= 1;\n }\n do {\n token = iterator.stepBackward();\n } while (token && !typeRe.test(token.type));\n if (token == null)\n break;\n value = token.value;\n valueIndex = value.length - 1;\n }\n return null;\n };\n this.$findClosingBracket = function (bracket, position, typeRe) {\n var closingBracket = this.$brackets[bracket];\n var depth = 1;\n var iterator = new TokenIterator(this, position.row, position.column);\n var token = iterator.getCurrentToken();\n if (!token)\n token = iterator.stepForward();\n if (!token)\n return;\n if (!typeRe) {\n typeRe = new RegExp(\"(\\\\.?\" +\n token.type.replace(\".\", \"\\\\.\").replace(\"lparen\", \".paren\")\n .replace(/\\b(?:start|begin)\\b/, \"(?:start|begin|end)\")\n .replace(/-open\\b/, \"-(close|open)\")\n + \")+\");\n }\n var valueIndex = position.column - iterator.getCurrentTokenColumn();\n while (true) {\n var value = token.value;\n var valueLength = value.length;\n while (valueIndex < valueLength) {\n var chr = value.charAt(valueIndex);\n if (chr == closingBracket) {\n depth -= 1;\n if (depth == 0) {\n return { row: iterator.getCurrentTokenRow(),\n column: valueIndex + iterator.getCurrentTokenColumn() };\n }\n }\n else if (chr == bracket) {\n depth += 1;\n }\n valueIndex += 1;\n }\n do {\n token = iterator.stepForward();\n } while (token && !typeRe.test(token.type));\n if (token == null)\n break;\n valueIndex = 0;\n }\n return null;\n };\n this.getMatchingTags = function (pos) {\n var iterator = new TokenIterator(this, pos.row, pos.column);\n var token = this.$findTagName(iterator);\n if (!token)\n return;\n var prevToken = iterator.stepBackward();\n if (prevToken.value === '<') {\n return this.$findClosingTag(iterator, token);\n }\n else {\n return this.$findOpeningTag(iterator, token);\n }\n };\n this.$findTagName = function (iterator) {\n var token = iterator.getCurrentToken();\n var found = false;\n var backward = false;\n if (token && token.type.indexOf('tag-name') === -1) {\n do {\n if (backward)\n token = iterator.stepBackward();\n else\n token = iterator.stepForward();\n if (token) {\n if (token.value === \"/>\") {\n backward = true;\n }\n else if (token.type.indexOf('tag-name') !== -1) {\n found = true;\n }\n }\n } while (token && !found);\n }\n return token;\n };\n this.$findClosingTag = function (iterator, token) {\n var prevToken;\n var currentTag = token.value;\n var tag = token.value;\n var depth = 0;\n var openTagStart = new Range(iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn(), iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() + 1);\n token = iterator.stepForward();\n var openTagName = new Range(iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn(), iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() + token.value.length);\n var foundOpenTagEnd = false;\n do {\n prevToken = token;\n token = iterator.stepForward();\n if (token) {\n if (token.value === '>' && !foundOpenTagEnd) {\n var openTagEnd = new Range(iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn(), iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() + 1); //Range for `>`\n foundOpenTagEnd = true;\n }\n if (token.type.indexOf('tag-name') !== -1) {\n currentTag = token.value;\n if (tag === currentTag) {\n if (prevToken.value === '<') {\n depth++;\n }\n else if (prevToken.value === '') {\n var closeTagEnd = new Range(iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn(), iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() + 1); //Range for >\n }\n else {\n return;\n }\n }\n }\n }\n }\n else if (tag === currentTag && token.value === '/>') { // self-closing tag\n depth--;\n if (depth < 0) { //found self-closing tag end\n var closeTagStart = new Range(iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn(), iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() + 2);\n var closeTagName = closeTagStart;\n var closeTagEnd = closeTagName;\n var openTagEnd = new Range(openTagName.end.row, openTagName.end.column, openTagName.end.row, openTagName.end.column + 1);\n }\n }\n }\n } while (token && depth >= 0);\n if (openTagStart && openTagEnd && closeTagStart && closeTagEnd && openTagName && closeTagName) {\n return {\n openTag: new Range(openTagStart.start.row, openTagStart.start.column, openTagEnd.end.row, openTagEnd.end.column),\n closeTag: new Range(closeTagStart.start.row, closeTagStart.start.column, closeTagEnd.end.row, closeTagEnd.end.column),\n openTagName: openTagName,\n closeTagName: closeTagName\n };\n }\n };\n this.$findOpeningTag = function (iterator, token) {\n var prevToken = iterator.getCurrentToken();\n var tag = token.value;\n var depth = 0;\n var startRow = iterator.getCurrentTokenRow();\n var startColumn = iterator.getCurrentTokenColumn();\n var endColumn = startColumn + 2;\n var closeTagStart = new Range(startRow, startColumn, startRow, endColumn); //Range for \")\n return;\n var closeTagEnd = new Range(iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn(), iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() + 1); //Range for >\n iterator.stepBackward();\n iterator.stepBackward();\n do {\n token = prevToken;\n startRow = iterator.getCurrentTokenRow();\n startColumn = iterator.getCurrentTokenColumn();\n endColumn = startColumn + token.value.length;\n prevToken = iterator.stepBackward();\n if (token) {\n if (token.type.indexOf('tag-name') !== -1) {\n if (tag === token.value) {\n if (prevToken.value === '<') {\n depth++;\n if (depth > 0) { //found opening tag\n var openTagName = new Range(startRow, startColumn, startRow, endColumn);\n var openTagStart = new Range(iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn(), iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() + 1); //Range for <\n do {\n token = iterator.stepForward();\n } while (token && token.value !== '>');\n var openTagEnd = new Range(iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn(), iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() + 1); //Range for >\n }\n }\n else if (prevToken.value === '') { // self-closing tag\n var stepCount = 0;\n var tmpToken = prevToken;\n while (tmpToken) {\n if (tmpToken.type.indexOf('tag-name') !== -1 && tmpToken.value === tag) {\n depth--;\n break;\n }\n else if (tmpToken.value === '<') {\n break;\n }\n tmpToken = iterator.stepBackward();\n stepCount++;\n }\n for (var i = 0; i < stepCount; i++) {\n iterator.stepForward();\n }\n }\n }\n } while (prevToken && depth <= 0);\n if (openTagStart && openTagEnd && closeTagStart && closeTagEnd && openTagName && closeTagName) {\n return {\n openTag: new Range(openTagStart.start.row, openTagStart.start.column, openTagEnd.end.row, openTagEnd.end.column),\n closeTag: new Range(closeTagStart.start.row, closeTagStart.start.column, closeTagEnd.end.row, closeTagEnd.end.column),\n openTagName: openTagName,\n closeTagName: closeTagName\n };\n }\n };\n}\nexports.BracketMatch = BracketMatch;\n\n});\n\nace.define(\"ace/edit_session\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/bidihandler\",\"ace/config\",\"ace/lib/event_emitter\",\"ace/selection\",\"ace/mode/text\",\"ace/range\",\"ace/document\",\"ace/background_tokenizer\",\"ace/search_highlight\",\"ace/undomanager\",\"ace/edit_session/folding\",\"ace/edit_session/bracket_match\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"./lib/oop\");\nvar lang = require(\"./lib/lang\");\nvar BidiHandler = require(\"./bidihandler\").BidiHandler;\nvar config = require(\"./config\");\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar Selection = require(\"./selection\").Selection;\nvar TextMode = require(\"./mode/text\").Mode;\nvar Range = require(\"./range\").Range;\nvar Document = require(\"./document\").Document;\nvar BackgroundTokenizer = require(\"./background_tokenizer\").BackgroundTokenizer;\nvar SearchHighlight = require(\"./search_highlight\").SearchHighlight;\nvar UndoManager = require(\"./undomanager\").UndoManager;\nvar EditSession = /** @class */ (function () {\n function EditSession(text, mode) {\n this.$breakpoints = [];\n this.$decorations = [];\n this.$frontMarkers = {};\n this.$backMarkers = {};\n this.$markerId = 1;\n this.$undoSelect = true;\n this.$foldData = [];\n this.id = \"session\" + (++EditSession.$uid);\n this.$foldData.toString = function () {\n return this.join(\"\\n\");\n };\n this.bgTokenizer = new BackgroundTokenizer((new TextMode()).getTokenizer(), this);\n var _self = this;\n this.bgTokenizer.on(\"update\", function (e) {\n _self._signal(\"tokenizerUpdate\", e);\n });\n this.on(\"changeFold\", this.onChangeFold.bind(this));\n this.$onChange = this.onChange.bind(this);\n if (typeof text != \"object\" || !text.getLine)\n text = new Document(text);\n this.setDocument(text);\n this.selection = new Selection(this);\n this.$bidiHandler = new BidiHandler(this);\n config.resetOptions(this);\n this.setMode(mode);\n config._signal(\"session\", this);\n this.destroyed = false;\n }\n EditSession.prototype.setDocument = function (doc) {\n if (this.doc)\n this.doc.off(\"change\", this.$onChange);\n this.doc = doc;\n doc.on(\"change\", this.$onChange, true);\n this.bgTokenizer.setDocument(this.getDocument());\n this.resetCaches();\n };\n EditSession.prototype.getDocument = function () {\n return this.doc;\n };\n EditSession.prototype.$resetRowCache = function (docRow) {\n if (!docRow) {\n this.$docRowCache = [];\n this.$screenRowCache = [];\n return;\n }\n var l = this.$docRowCache.length;\n var i = this.$getRowCacheIndex(this.$docRowCache, docRow) + 1;\n if (l > i) {\n this.$docRowCache.splice(i, l);\n this.$screenRowCache.splice(i, l);\n }\n };\n EditSession.prototype.$getRowCacheIndex = function (cacheArray, val) {\n var low = 0;\n var hi = cacheArray.length - 1;\n while (low <= hi) {\n var mid = (low + hi) >> 1;\n var c = cacheArray[mid];\n if (val > c)\n low = mid + 1;\n else if (val < c)\n hi = mid - 1;\n else\n return mid;\n }\n return low - 1;\n };\n EditSession.prototype.resetCaches = function () {\n this.$modified = true;\n this.$wrapData = [];\n this.$rowLengthCache = [];\n this.$resetRowCache(0);\n if (!this.destroyed)\n this.bgTokenizer.start(0);\n };\n EditSession.prototype.onChangeFold = function (e) {\n var fold = e.data;\n this.$resetRowCache(fold.start.row);\n };\n EditSession.prototype.onChange = function (delta) {\n this.$modified = true;\n this.$bidiHandler.onChange(delta);\n this.$resetRowCache(delta.start.row);\n var removedFolds = this.$updateInternalDataOnChange(delta);\n if (!this.$fromUndo && this.$undoManager) {\n if (removedFolds && removedFolds.length) {\n this.$undoManager.add({\n action: \"removeFolds\",\n folds: removedFolds\n }, this.mergeUndoDeltas);\n this.mergeUndoDeltas = true;\n }\n this.$undoManager.add(delta, this.mergeUndoDeltas);\n this.mergeUndoDeltas = true;\n this.$informUndoManager.schedule();\n }\n this.bgTokenizer.$updateOnChange(delta);\n this._signal(\"change\", delta);\n };\n EditSession.prototype.setValue = function (text) {\n this.doc.setValue(text);\n this.selection.moveTo(0, 0);\n this.$resetRowCache(0);\n this.setUndoManager(this.$undoManager);\n this.getUndoManager().reset();\n };\n EditSession.fromJSON = function (session) {\n session = JSON.parse(session);\n var undoManager = new UndoManager();\n undoManager.$undoStack = session.history.undo;\n undoManager.$redoStack = session.history.redo;\n undoManager.mark = session.history.mark;\n undoManager.$rev = session.history.rev;\n var editSession = new EditSession(session.value);\n session.folds.forEach(function (fold) {\n editSession.addFold(\"...\", Range.fromPoints(fold.start, fold.end));\n });\n editSession.setAnnotations(session.annotations);\n editSession.setBreakpoints(session.breakpoints);\n editSession.setMode(session.mode);\n editSession.setScrollLeft(session.scrollLeft);\n editSession.setScrollTop(session.scrollTop);\n editSession.setUndoManager(undoManager);\n editSession.selection.fromJSON(session.selection);\n return editSession;\n };\n EditSession.prototype.toJSON = function () {\n return {\n annotations: this.$annotations,\n breakpoints: this.$breakpoints,\n folds: this.getAllFolds().map(function (fold) {\n return fold.range;\n }),\n history: this.getUndoManager(),\n mode: this.$mode.$id,\n scrollLeft: this.$scrollLeft,\n scrollTop: this.$scrollTop,\n selection: this.selection.toJSON(),\n value: this.doc.getValue()\n };\n };\n EditSession.prototype.toString = function () {\n return this.doc.getValue();\n };\n EditSession.prototype.getSelection = function () {\n return this.selection;\n };\n EditSession.prototype.getState = function (row) {\n return this.bgTokenizer.getState(row);\n };\n EditSession.prototype.getTokens = function (row) {\n return this.bgTokenizer.getTokens(row);\n };\n EditSession.prototype.getTokenAt = function (row, column) {\n var tokens = this.bgTokenizer.getTokens(row);\n var token, c = 0;\n if (column == null) {\n var i = tokens.length - 1;\n c = this.getLine(row).length;\n }\n else {\n for (var i = 0; i < tokens.length; i++) {\n c += tokens[i].value.length;\n if (c >= column)\n break;\n }\n }\n token = tokens[i];\n if (!token)\n return null;\n token.index = i;\n token.start = c - token.value.length;\n return token;\n };\n EditSession.prototype.setUndoManager = function (undoManager) {\n this.$undoManager = undoManager;\n if (this.$informUndoManager)\n this.$informUndoManager.cancel();\n if (undoManager) {\n var self = this;\n undoManager.addSession(this);\n this.$syncInformUndoManager = function () {\n self.$informUndoManager.cancel();\n self.mergeUndoDeltas = false;\n };\n this.$informUndoManager = lang.delayedCall(this.$syncInformUndoManager);\n }\n else {\n this.$syncInformUndoManager = function () { };\n }\n };\n EditSession.prototype.markUndoGroup = function () {\n if (this.$syncInformUndoManager)\n this.$syncInformUndoManager();\n };\n EditSession.prototype.getUndoManager = function () {\n return this.$undoManager || this.$defaultUndoManager;\n };\n EditSession.prototype.getTabString = function () {\n if (this.getUseSoftTabs()) {\n return lang.stringRepeat(\" \", this.getTabSize());\n }\n else {\n return \"\\t\";\n }\n };\n EditSession.prototype.setUseSoftTabs = function (val) {\n this.setOption(\"useSoftTabs\", val);\n };\n EditSession.prototype.getUseSoftTabs = function () {\n return this.$useSoftTabs && !this.$mode.$indentWithTabs;\n };\n EditSession.prototype.setTabSize = function (tabSize) {\n this.setOption(\"tabSize\", tabSize);\n };\n EditSession.prototype.getTabSize = function () {\n return this.$tabSize;\n };\n EditSession.prototype.isTabStop = function (position) {\n return this.$useSoftTabs && (position.column % this.$tabSize === 0);\n };\n EditSession.prototype.setNavigateWithinSoftTabs = function (navigateWithinSoftTabs) {\n this.setOption(\"navigateWithinSoftTabs\", navigateWithinSoftTabs);\n };\n EditSession.prototype.getNavigateWithinSoftTabs = function () {\n return this.$navigateWithinSoftTabs;\n };\n EditSession.prototype.setOverwrite = function (overwrite) {\n this.setOption(\"overwrite\", overwrite);\n };\n EditSession.prototype.getOverwrite = function () {\n return this.$overwrite;\n };\n EditSession.prototype.toggleOverwrite = function () {\n this.setOverwrite(!this.$overwrite);\n };\n EditSession.prototype.addGutterDecoration = function (row, className) {\n if (!this.$decorations[row])\n this.$decorations[row] = \"\";\n this.$decorations[row] += \" \" + className;\n this._signal(\"changeBreakpoint\", {});\n };\n EditSession.prototype.removeGutterDecoration = function (row, className) {\n this.$decorations[row] = (this.$decorations[row] || \"\").replace(\" \" + className, \"\");\n this._signal(\"changeBreakpoint\", {});\n };\n EditSession.prototype.getBreakpoints = function () {\n return this.$breakpoints;\n };\n EditSession.prototype.setBreakpoints = function (rows) {\n this.$breakpoints = [];\n for (var i = 0; i < rows.length; i++) {\n this.$breakpoints[rows[i]] = \"ace_breakpoint\";\n }\n this._signal(\"changeBreakpoint\", {});\n };\n EditSession.prototype.clearBreakpoints = function () {\n this.$breakpoints = [];\n this._signal(\"changeBreakpoint\", {});\n };\n EditSession.prototype.setBreakpoint = function (row, className) {\n if (className === undefined)\n className = \"ace_breakpoint\";\n if (className)\n this.$breakpoints[row] = className;\n else\n delete this.$breakpoints[row];\n this._signal(\"changeBreakpoint\", {});\n };\n EditSession.prototype.clearBreakpoint = function (row) {\n delete this.$breakpoints[row];\n this._signal(\"changeBreakpoint\", {});\n };\n EditSession.prototype.addMarker = function (range, clazz, type, inFront) {\n var id = this.$markerId++;\n var marker = {\n range: range,\n type: type || \"line\",\n renderer: typeof type == \"function\" ? type : null,\n clazz: clazz,\n inFront: !!inFront,\n id: id\n };\n if (inFront) {\n this.$frontMarkers[id] = marker;\n this._signal(\"changeFrontMarker\");\n }\n else {\n this.$backMarkers[id] = marker;\n this._signal(\"changeBackMarker\");\n }\n return id;\n };\n EditSession.prototype.addDynamicMarker = function (marker, inFront) {\n if (!marker.update)\n return;\n var id = this.$markerId++;\n marker.id = id;\n marker.inFront = !!inFront;\n if (inFront) {\n this.$frontMarkers[id] = marker;\n this._signal(\"changeFrontMarker\");\n }\n else {\n this.$backMarkers[id] = marker;\n this._signal(\"changeBackMarker\");\n }\n return marker;\n };\n EditSession.prototype.removeMarker = function (markerId) {\n var marker = this.$frontMarkers[markerId] || this.$backMarkers[markerId];\n if (!marker)\n return;\n var markers = marker.inFront ? this.$frontMarkers : this.$backMarkers;\n delete (markers[markerId]);\n this._signal(marker.inFront ? \"changeFrontMarker\" : \"changeBackMarker\");\n };\n EditSession.prototype.getMarkers = function (inFront) {\n return inFront ? this.$frontMarkers : this.$backMarkers;\n };\n EditSession.prototype.highlight = function (re) {\n if (!this.$searchHighlight) {\n var highlight = new SearchHighlight(null, \"ace_selected-word\", \"text\");\n this.$searchHighlight = this.addDynamicMarker(highlight);\n }\n this.$searchHighlight.setRegexp(re);\n };\n EditSession.prototype.highlightLines = function (startRow, endRow, clazz, inFront) {\n if (typeof endRow != \"number\") {\n clazz = endRow;\n endRow = startRow;\n }\n if (!clazz)\n clazz = \"ace_step\";\n var range = new Range(startRow, 0, endRow, Infinity);\n range.id = this.addMarker(range, clazz, \"fullLine\", inFront);\n return range;\n };\n EditSession.prototype.setAnnotations = function (annotations) {\n this.$annotations = annotations;\n this._signal(\"changeAnnotation\", {});\n };\n EditSession.prototype.getAnnotations = function () {\n return this.$annotations || [];\n };\n EditSession.prototype.clearAnnotations = function () {\n this.setAnnotations([]);\n };\n EditSession.prototype.$detectNewLine = function (text) {\n var match = text.match(/^.*?(\\r?\\n)/m);\n if (match) {\n this.$autoNewLine = match[1];\n }\n else {\n this.$autoNewLine = \"\\n\";\n }\n };\n EditSession.prototype.getWordRange = function (row, column) {\n var line = this.getLine(row);\n var inToken = false;\n if (column > 0)\n inToken = !!line.charAt(column - 1).match(this.tokenRe);\n if (!inToken)\n inToken = !!line.charAt(column).match(this.tokenRe);\n if (inToken)\n var re = this.tokenRe;\n else if (/^\\s+$/.test(line.slice(column - 1, column + 1)))\n var re = /\\s/;\n else\n var re = this.nonTokenRe;\n var start = column;\n if (start > 0) {\n do {\n start--;\n } while (start >= 0 && line.charAt(start).match(re));\n start++;\n }\n var end = column;\n while (end < line.length && line.charAt(end).match(re)) {\n end++;\n }\n return new Range(row, start, row, end);\n };\n EditSession.prototype.getAWordRange = function (row, column) {\n var wordRange = this.getWordRange(row, column);\n var line = this.getLine(wordRange.end.row);\n while (line.charAt(wordRange.end.column).match(/[ \\t]/)) {\n wordRange.end.column += 1;\n }\n return wordRange;\n };\n EditSession.prototype.setNewLineMode = function (newLineMode) {\n this.doc.setNewLineMode(newLineMode);\n };\n EditSession.prototype.getNewLineMode = function () {\n return this.doc.getNewLineMode();\n };\n EditSession.prototype.setUseWorker = function (useWorker) { this.setOption(\"useWorker\", useWorker); };\n EditSession.prototype.getUseWorker = function () { return this.$useWorker; };\n EditSession.prototype.onReloadTokenizer = function (e) {\n var rows = e.data;\n this.bgTokenizer.start(rows.first);\n this._signal(\"tokenizerUpdate\", e);\n };\n EditSession.prototype.setMode = function (mode, cb) {\n if (mode && typeof mode === \"object\") {\n if (mode.getTokenizer)\n return this.$onChangeMode(mode);\n var options = mode;\n var path = options.path;\n }\n else {\n path = mode || \"ace/mode/text\";\n }\n if (!this.$modes[\"ace/mode/text\"])\n this.$modes[\"ace/mode/text\"] = new TextMode();\n if (this.$modes[path] && !options) {\n this.$onChangeMode(this.$modes[path]);\n cb && cb();\n return;\n }\n this.$modeId = path;\n config.loadModule([\"mode\", path], function (m) {\n if (this.$modeId !== path)\n return cb && cb();\n if (this.$modes[path] && !options) {\n this.$onChangeMode(this.$modes[path]);\n }\n else if (m && m.Mode) {\n m = new m.Mode(options);\n if (!options) {\n this.$modes[path] = m;\n m.$id = path;\n }\n this.$onChangeMode(m);\n }\n cb && cb();\n }.bind(this));\n if (!this.$mode)\n this.$onChangeMode(this.$modes[\"ace/mode/text\"], true);\n };\n EditSession.prototype.$onChangeMode = function (mode, $isPlaceholder) {\n if (!$isPlaceholder)\n this.$modeId = mode.$id;\n if (this.$mode === mode)\n return;\n var oldMode = this.$mode;\n this.$mode = mode;\n this.$stopWorker();\n if (this.$useWorker)\n this.$startWorker();\n var tokenizer = mode.getTokenizer();\n if (tokenizer.on !== undefined) {\n var onReloadTokenizer = this.onReloadTokenizer.bind(this);\n tokenizer.on(\"update\", onReloadTokenizer);\n }\n this.bgTokenizer.setTokenizer(tokenizer);\n this.bgTokenizer.setDocument(this.getDocument());\n this.tokenRe = mode.tokenRe;\n this.nonTokenRe = mode.nonTokenRe;\n if (!$isPlaceholder) {\n if (mode.attachToSession)\n mode.attachToSession(this);\n this.$options.wrapMethod.set.call(this, this.$wrapMethod);\n this.$setFolding(mode.foldingRules);\n this.bgTokenizer.start(0);\n this._emit(\"changeMode\", { oldMode: oldMode, mode: mode });\n }\n };\n EditSession.prototype.$stopWorker = function () {\n if (this.$worker) {\n this.$worker.terminate();\n this.$worker = null;\n }\n };\n EditSession.prototype.$startWorker = function () {\n try {\n this.$worker = this.$mode.createWorker(this);\n }\n catch (e) {\n config.warn(\"Could not load worker\", e);\n this.$worker = null;\n }\n };\n EditSession.prototype.getMode = function () {\n return this.$mode;\n };\n EditSession.prototype.setScrollTop = function (scrollTop) {\n if (this.$scrollTop === scrollTop || isNaN(scrollTop))\n return;\n this.$scrollTop = scrollTop;\n this._signal(\"changeScrollTop\", scrollTop);\n };\n EditSession.prototype.getScrollTop = function () {\n return this.$scrollTop;\n };\n EditSession.prototype.setScrollLeft = function (scrollLeft) {\n if (this.$scrollLeft === scrollLeft || isNaN(scrollLeft))\n return;\n this.$scrollLeft = scrollLeft;\n this._signal(\"changeScrollLeft\", scrollLeft);\n };\n EditSession.prototype.getScrollLeft = function () {\n return this.$scrollLeft;\n };\n EditSession.prototype.getScreenWidth = function () {\n this.$computeWidth();\n if (this.lineWidgets)\n return Math.max(this.getLineWidgetMaxWidth(), this.screenWidth);\n return this.screenWidth;\n };\n EditSession.prototype.getLineWidgetMaxWidth = function () {\n if (this.lineWidgetsWidth != null)\n return this.lineWidgetsWidth;\n var width = 0;\n this.lineWidgets.forEach(function (w) {\n if (w && w.screenWidth > width)\n width = w.screenWidth;\n });\n return this.lineWidgetWidth = width;\n };\n EditSession.prototype.$computeWidth = function (force) {\n if (this.$modified || force) {\n this.$modified = false;\n if (this.$useWrapMode)\n return this.screenWidth = this.$wrapLimit;\n var lines = this.doc.getAllLines();\n var cache = this.$rowLengthCache;\n var longestScreenLine = 0;\n var foldIndex = 0;\n var foldLine = this.$foldData[foldIndex];\n var foldStart = foldLine ? foldLine.start.row : Infinity;\n var len = lines.length;\n for (var i = 0; i < len; i++) {\n if (i > foldStart) {\n i = foldLine.end.row + 1;\n if (i >= len)\n break;\n foldLine = this.$foldData[foldIndex++];\n foldStart = foldLine ? foldLine.start.row : Infinity;\n }\n if (cache[i] == null)\n cache[i] = this.$getStringScreenWidth(lines[i])[0];\n if (cache[i] > longestScreenLine)\n longestScreenLine = cache[i];\n }\n this.screenWidth = longestScreenLine;\n }\n };\n EditSession.prototype.getLine = function (row) {\n return this.doc.getLine(row);\n };\n EditSession.prototype.getLines = function (firstRow, lastRow) {\n return this.doc.getLines(firstRow, lastRow);\n };\n EditSession.prototype.getLength = function () {\n return this.doc.getLength();\n };\n EditSession.prototype.getTextRange = function (range) {\n return this.doc.getTextRange(range || this.selection.getRange());\n };\n EditSession.prototype.insert = function (position, text) {\n return this.doc.insert(position, text);\n };\n EditSession.prototype.remove = function (range) {\n return this.doc.remove(range);\n };\n EditSession.prototype.removeFullLines = function (firstRow, lastRow) {\n return this.doc.removeFullLines(firstRow, lastRow);\n };\n EditSession.prototype.undoChanges = function (deltas, dontSelect) {\n if (!deltas.length)\n return;\n this.$fromUndo = true;\n for (var i = deltas.length - 1; i != -1; i--) {\n var delta = deltas[i];\n if (delta.action == \"insert\" || delta.action == \"remove\") {\n this.doc.revertDelta(delta);\n }\n else if (delta.folds) {\n this.addFolds(delta.folds);\n }\n }\n if (!dontSelect && this.$undoSelect) {\n if (deltas.selectionBefore)\n this.selection.fromJSON(deltas.selectionBefore);\n else\n this.selection.setRange(this.$getUndoSelection(deltas, true));\n }\n this.$fromUndo = false;\n };\n EditSession.prototype.redoChanges = function (deltas, dontSelect) {\n if (!deltas.length)\n return;\n this.$fromUndo = true;\n for (var i = 0; i < deltas.length; i++) {\n var delta = deltas[i];\n if (delta.action == \"insert\" || delta.action == \"remove\") {\n this.doc.$safeApplyDelta(delta);\n }\n }\n if (!dontSelect && this.$undoSelect) {\n if (deltas.selectionAfter)\n this.selection.fromJSON(deltas.selectionAfter);\n else\n this.selection.setRange(this.$getUndoSelection(deltas, false));\n }\n this.$fromUndo = false;\n };\n EditSession.prototype.setUndoSelect = function (enable) {\n this.$undoSelect = enable;\n };\n EditSession.prototype.$getUndoSelection = function (deltas, isUndo) {\n function isInsert(delta) {\n return isUndo ? delta.action !== \"insert\" : delta.action === \"insert\";\n }\n var range, point;\n for (var i = 0; i < deltas.length; i++) {\n var delta = deltas[i];\n if (!delta.start)\n continue; // skip folds\n if (!range) {\n if (isInsert(delta)) {\n range = Range.fromPoints(delta.start, delta.end);\n }\n else {\n range = Range.fromPoints(delta.start, delta.start);\n }\n continue;\n }\n if (isInsert(delta)) {\n point = delta.start;\n if (range.compare(point.row, point.column) == -1) {\n range.setStart(point);\n }\n point = delta.end;\n if (range.compare(point.row, point.column) == 1) {\n range.setEnd(point);\n }\n }\n else {\n point = delta.start;\n if (range.compare(point.row, point.column) == -1) {\n range = Range.fromPoints(delta.start, delta.start);\n }\n }\n }\n return range;\n };\n EditSession.prototype.replace = function (range, text) {\n return this.doc.replace(range, text);\n };\n EditSession.prototype.moveText = function (fromRange, toPosition, copy) {\n var text = this.getTextRange(fromRange);\n var folds = this.getFoldsInRange(fromRange);\n var toRange = Range.fromPoints(toPosition, toPosition);\n if (!copy) {\n this.remove(fromRange);\n var rowDiff = fromRange.start.row - fromRange.end.row;\n var collDiff = rowDiff ? -fromRange.end.column : fromRange.start.column - fromRange.end.column;\n if (collDiff) {\n if (toRange.start.row == fromRange.end.row && toRange.start.column > fromRange.end.column)\n toRange.start.column += collDiff;\n if (toRange.end.row == fromRange.end.row && toRange.end.column > fromRange.end.column)\n toRange.end.column += collDiff;\n }\n if (rowDiff && toRange.start.row >= fromRange.end.row) {\n toRange.start.row += rowDiff;\n toRange.end.row += rowDiff;\n }\n }\n toRange.end = this.insert(toRange.start, text);\n if (folds.length) {\n var oldStart = fromRange.start;\n var newStart = toRange.start;\n var rowDiff = newStart.row - oldStart.row;\n var collDiff = newStart.column - oldStart.column;\n this.addFolds(folds.map(function (x) {\n x = x.clone();\n if (x.start.row == oldStart.row)\n x.start.column += collDiff;\n if (x.end.row == oldStart.row)\n x.end.column += collDiff;\n x.start.row += rowDiff;\n x.end.row += rowDiff;\n return x;\n }));\n }\n return toRange;\n };\n EditSession.prototype.indentRows = function (startRow, endRow, indentString) {\n indentString = indentString.replace(/\\t/g, this.getTabString());\n for (var row = startRow; row <= endRow; row++)\n this.doc.insertInLine({ row: row, column: 0 }, indentString);\n };\n EditSession.prototype.outdentRows = function (range) {\n var rowRange = range.collapseRows();\n var deleteRange = new Range(0, 0, 0, 0);\n var size = this.getTabSize();\n for (var i = rowRange.start.row; i <= rowRange.end.row; ++i) {\n var line = this.getLine(i);\n deleteRange.start.row = i;\n deleteRange.end.row = i;\n for (var j = 0; j < size; ++j)\n if (line.charAt(j) != ' ')\n break;\n if (j < size && line.charAt(j) == '\\t') {\n deleteRange.start.column = j;\n deleteRange.end.column = j + 1;\n }\n else {\n deleteRange.start.column = 0;\n deleteRange.end.column = j;\n }\n this.remove(deleteRange);\n }\n };\n EditSession.prototype.$moveLines = function (firstRow, lastRow, dir) {\n firstRow = this.getRowFoldStart(firstRow);\n lastRow = this.getRowFoldEnd(lastRow);\n if (dir < 0) {\n var row = this.getRowFoldStart(firstRow + dir);\n if (row < 0)\n return 0;\n var diff = row - firstRow;\n }\n else if (dir > 0) {\n var row = this.getRowFoldEnd(lastRow + dir);\n if (row > this.doc.getLength() - 1)\n return 0;\n var diff = row - lastRow;\n }\n else {\n firstRow = this.$clipRowToDocument(firstRow);\n lastRow = this.$clipRowToDocument(lastRow);\n var diff = lastRow - firstRow + 1;\n }\n var range = new Range(firstRow, 0, lastRow, Number.MAX_VALUE);\n var folds = this.getFoldsInRange(range).map(function (x) {\n x = x.clone();\n x.start.row += diff;\n x.end.row += diff;\n return x;\n });\n var lines = dir == 0\n ? this.doc.getLines(firstRow, lastRow)\n : this.doc.removeFullLines(firstRow, lastRow);\n this.doc.insertFullLines(firstRow + diff, lines);\n folds.length && this.addFolds(folds);\n return diff;\n };\n EditSession.prototype.moveLinesUp = function (firstRow, lastRow) {\n return this.$moveLines(firstRow, lastRow, -1);\n };\n EditSession.prototype.moveLinesDown = function (firstRow, lastRow) {\n return this.$moveLines(firstRow, lastRow, 1);\n };\n EditSession.prototype.duplicateLines = function (firstRow, lastRow) {\n return this.$moveLines(firstRow, lastRow, 0);\n };\n EditSession.prototype.$clipRowToDocument = function (row) {\n return Math.max(0, Math.min(row, this.doc.getLength() - 1));\n };\n EditSession.prototype.$clipColumnToRow = function (row, column) {\n if (column < 0)\n return 0;\n return Math.min(this.doc.getLine(row).length, column);\n };\n EditSession.prototype.$clipPositionToDocument = function (row, column) {\n column = Math.max(0, column);\n if (row < 0) {\n row = 0;\n column = 0;\n }\n else {\n var len = this.doc.getLength();\n if (row >= len) {\n row = len - 1;\n column = this.doc.getLine(len - 1).length;\n }\n else {\n column = Math.min(this.doc.getLine(row).length, column);\n }\n }\n return {\n row: row,\n column: column\n };\n };\n EditSession.prototype.$clipRangeToDocument = function (range) {\n if (range.start.row < 0) {\n range.start.row = 0;\n range.start.column = 0;\n }\n else {\n range.start.column = this.$clipColumnToRow(range.start.row, range.start.column);\n }\n var len = this.doc.getLength() - 1;\n if (range.end.row > len) {\n range.end.row = len;\n range.end.column = this.doc.getLine(len).length;\n }\n else {\n range.end.column = this.$clipColumnToRow(range.end.row, range.end.column);\n }\n return range;\n };\n EditSession.prototype.setUseWrapMode = function (useWrapMode) {\n if (useWrapMode != this.$useWrapMode) {\n this.$useWrapMode = useWrapMode;\n this.$modified = true;\n this.$resetRowCache(0);\n if (useWrapMode) {\n var len = this.getLength();\n this.$wrapData = Array(len);\n this.$updateWrapData(0, len - 1);\n }\n this._signal(\"changeWrapMode\");\n }\n };\n EditSession.prototype.getUseWrapMode = function () {\n return this.$useWrapMode;\n };\n EditSession.prototype.setWrapLimitRange = function (min, max) {\n if (this.$wrapLimitRange.min !== min || this.$wrapLimitRange.max !== max) {\n this.$wrapLimitRange = { min: min, max: max };\n this.$modified = true;\n this.$bidiHandler.markAsDirty();\n if (this.$useWrapMode)\n this._signal(\"changeWrapMode\");\n }\n };\n EditSession.prototype.adjustWrapLimit = function (desiredLimit, $printMargin) {\n var limits = this.$wrapLimitRange;\n if (limits.max < 0)\n limits = { min: $printMargin, max: $printMargin };\n var wrapLimit = this.$constrainWrapLimit(desiredLimit, limits.min, limits.max);\n if (wrapLimit != this.$wrapLimit && wrapLimit > 1) {\n this.$wrapLimit = wrapLimit;\n this.$modified = true;\n if (this.$useWrapMode) {\n this.$updateWrapData(0, this.getLength() - 1);\n this.$resetRowCache(0);\n this._signal(\"changeWrapLimit\");\n }\n return true;\n }\n return false;\n };\n EditSession.prototype.$constrainWrapLimit = function (wrapLimit, min, max) {\n if (min)\n wrapLimit = Math.max(min, wrapLimit);\n if (max)\n wrapLimit = Math.min(max, wrapLimit);\n return wrapLimit;\n };\n EditSession.prototype.getWrapLimit = function () {\n return this.$wrapLimit;\n };\n EditSession.prototype.setWrapLimit = function (limit) {\n this.setWrapLimitRange(limit, limit);\n };\n EditSession.prototype.getWrapLimitRange = function () {\n return {\n min: this.$wrapLimitRange.min,\n max: this.$wrapLimitRange.max\n };\n };\n EditSession.prototype.$updateInternalDataOnChange = function (delta) {\n var useWrapMode = this.$useWrapMode;\n var action = delta.action;\n var start = delta.start;\n var end = delta.end;\n var firstRow = start.row;\n var lastRow = end.row;\n var len = lastRow - firstRow;\n var removedFolds = null;\n this.$updating = true;\n if (len != 0) {\n if (action === \"remove\") {\n this[useWrapMode ? \"$wrapData\" : \"$rowLengthCache\"].splice(firstRow, len);\n var foldLines = this.$foldData;\n removedFolds = this.getFoldsInRange(delta);\n this.removeFolds(removedFolds);\n var foldLine = this.getFoldLine(end.row);\n var idx = 0;\n if (foldLine) {\n foldLine.addRemoveChars(end.row, end.column, start.column - end.column);\n foldLine.shiftRow(-len);\n var foldLineBefore = this.getFoldLine(firstRow);\n if (foldLineBefore && foldLineBefore !== foldLine) {\n foldLineBefore.merge(foldLine);\n foldLine = foldLineBefore;\n }\n idx = foldLines.indexOf(foldLine) + 1;\n }\n for (idx; idx < foldLines.length; idx++) {\n var foldLine = foldLines[idx];\n if (foldLine.start.row >= end.row) {\n foldLine.shiftRow(-len);\n }\n }\n lastRow = firstRow;\n }\n else {\n var args = Array(len);\n args.unshift(firstRow, 0);\n var arr = useWrapMode ? this.$wrapData : this.$rowLengthCache;\n arr.splice.apply(arr, args);\n var foldLines = this.$foldData;\n var foldLine = this.getFoldLine(firstRow);\n var idx = 0;\n if (foldLine) {\n var cmp = foldLine.range.compareInside(start.row, start.column);\n if (cmp == 0) {\n foldLine = foldLine.split(start.row, start.column);\n if (foldLine) {\n foldLine.shiftRow(len);\n foldLine.addRemoveChars(lastRow, 0, end.column - start.column);\n }\n }\n else \n if (cmp == -1) {\n foldLine.addRemoveChars(firstRow, 0, end.column - start.column);\n foldLine.shiftRow(len);\n }\n idx = foldLines.indexOf(foldLine) + 1;\n }\n for (idx; idx < foldLines.length; idx++) {\n var foldLine = foldLines[idx];\n if (foldLine.start.row >= firstRow) {\n foldLine.shiftRow(len);\n }\n }\n }\n }\n else {\n len = Math.abs(delta.start.column - delta.end.column);\n if (action === \"remove\") {\n removedFolds = this.getFoldsInRange(delta);\n this.removeFolds(removedFolds);\n len = -len;\n }\n var foldLine = this.getFoldLine(firstRow);\n if (foldLine) {\n foldLine.addRemoveChars(firstRow, start.column, len);\n }\n }\n if (useWrapMode && this.$wrapData.length != this.doc.getLength()) {\n console.error(\"doc.getLength() and $wrapData.length have to be the same!\");\n }\n this.$updating = false;\n if (useWrapMode)\n this.$updateWrapData(firstRow, lastRow);\n else\n this.$updateRowLengthCache(firstRow, lastRow);\n return removedFolds;\n };\n EditSession.prototype.$updateRowLengthCache = function (firstRow, lastRow, b) {\n this.$rowLengthCache[firstRow] = null;\n this.$rowLengthCache[lastRow] = null;\n };\n EditSession.prototype.$updateWrapData = function (firstRow, lastRow) {\n var lines = this.doc.getAllLines();\n var tabSize = this.getTabSize();\n var wrapData = this.$wrapData;\n var wrapLimit = this.$wrapLimit;\n var tokens;\n var foldLine;\n var row = firstRow;\n lastRow = Math.min(lastRow, lines.length - 1);\n while (row <= lastRow) {\n foldLine = this.getFoldLine(row, foldLine);\n if (!foldLine) {\n tokens = this.$getDisplayTokens(lines[row]);\n wrapData[row] = this.$computeWrapSplits(tokens, wrapLimit, tabSize);\n row++;\n }\n else {\n tokens = [];\n foldLine.walk(function (placeholder, row, column, lastColumn) {\n var walkTokens;\n if (placeholder != null) {\n walkTokens = this.$getDisplayTokens(placeholder, tokens.length);\n walkTokens[0] = PLACEHOLDER_START;\n for (var i = 1; i < walkTokens.length; i++) {\n walkTokens[i] = PLACEHOLDER_BODY;\n }\n }\n else {\n walkTokens = this.$getDisplayTokens(lines[row].substring(lastColumn, column), tokens.length);\n }\n tokens = tokens.concat(walkTokens);\n }.bind(this), foldLine.end.row, lines[foldLine.end.row].length + 1);\n wrapData[foldLine.start.row] = this.$computeWrapSplits(tokens, wrapLimit, tabSize);\n row = foldLine.end.row + 1;\n }\n }\n };\n EditSession.prototype.$computeWrapSplits = function (tokens, wrapLimit, tabSize) {\n if (tokens.length == 0) {\n return [];\n }\n var splits = [];\n var displayLength = tokens.length;\n var lastSplit = 0, lastDocSplit = 0;\n var isCode = this.$wrapAsCode;\n var indentedSoftWrap = this.$indentedSoftWrap;\n var maxIndent = wrapLimit <= Math.max(2 * tabSize, 8)\n || indentedSoftWrap === false ? 0 : Math.floor(wrapLimit / 2);\n function getWrapIndent() {\n var indentation = 0;\n if (maxIndent === 0)\n return indentation;\n if (indentedSoftWrap) {\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n if (token == SPACE)\n indentation += 1;\n else if (token == TAB)\n indentation += tabSize;\n else if (token == TAB_SPACE)\n continue;\n else\n break;\n }\n }\n if (isCode && indentedSoftWrap !== false)\n indentation += tabSize;\n return Math.min(indentation, maxIndent);\n }\n function addSplit(screenPos) {\n var len = screenPos - lastSplit;\n for (var i = lastSplit; i < screenPos; i++) {\n var ch = tokens[i];\n if (ch === 12 || ch === 2)\n len -= 1;\n }\n if (!splits.length) {\n indent = getWrapIndent();\n splits.indent = indent;\n }\n lastDocSplit += len;\n splits.push(lastDocSplit);\n lastSplit = screenPos;\n }\n var indent = 0;\n while (displayLength - lastSplit > wrapLimit - indent) {\n var split = lastSplit + wrapLimit - indent;\n if (tokens[split - 1] >= SPACE && tokens[split] >= SPACE) {\n addSplit(split);\n continue;\n }\n if (tokens[split] == PLACEHOLDER_START || tokens[split] == PLACEHOLDER_BODY) {\n for (split; split != lastSplit - 1; split--) {\n if (tokens[split] == PLACEHOLDER_START) {\n break;\n }\n }\n if (split > lastSplit) {\n addSplit(split);\n continue;\n }\n split = lastSplit + wrapLimit;\n for (split; split < tokens.length; split++) {\n if (tokens[split] != PLACEHOLDER_BODY) {\n break;\n }\n }\n if (split == tokens.length) {\n break; // Breaks the while-loop.\n }\n addSplit(split);\n continue;\n }\n var minSplit = Math.max(split - (wrapLimit - (wrapLimit >> 2)), lastSplit - 1);\n while (split > minSplit && tokens[split] < PLACEHOLDER_START) {\n split--;\n }\n if (isCode) {\n while (split > minSplit && tokens[split] < PLACEHOLDER_START) {\n split--;\n }\n while (split > minSplit && tokens[split] == PUNCTUATION) {\n split--;\n }\n }\n else {\n while (split > minSplit && tokens[split] < SPACE) {\n split--;\n }\n }\n if (split > minSplit) {\n addSplit(++split);\n continue;\n }\n split = lastSplit + wrapLimit;\n if (tokens[split] == CHAR_EXT)\n split--;\n addSplit(split - indent);\n }\n return splits;\n };\n EditSession.prototype.$getDisplayTokens = function (str, offset) {\n var arr = [];\n var tabSize;\n offset = offset || 0;\n for (var i = 0; i < str.length; i++) {\n var c = str.charCodeAt(i);\n if (c == 9) {\n tabSize = this.getScreenTabSize(arr.length + offset);\n arr.push(TAB);\n for (var n = 1; n < tabSize; n++) {\n arr.push(TAB_SPACE);\n }\n }\n else if (c == 32) {\n arr.push(SPACE);\n }\n else if ((c > 39 && c < 48) || (c > 57 && c < 64)) {\n arr.push(PUNCTUATION);\n }\n else if (c >= 0x1100 && isFullWidth(c)) {\n arr.push(CHAR, CHAR_EXT);\n }\n else {\n arr.push(CHAR);\n }\n }\n return arr;\n };\n EditSession.prototype.$getStringScreenWidth = function (str, maxScreenColumn, screenColumn) {\n if (maxScreenColumn == 0)\n return [0, 0];\n if (maxScreenColumn == null)\n maxScreenColumn = Infinity;\n screenColumn = screenColumn || 0;\n var c, column;\n for (column = 0; column < str.length; column++) {\n c = str.charCodeAt(column);\n if (c == 9) {\n screenColumn += this.getScreenTabSize(screenColumn);\n }\n else if (c >= 0x1100 && isFullWidth(c)) {\n screenColumn += 2;\n }\n else {\n screenColumn += 1;\n }\n if (screenColumn > maxScreenColumn) {\n break;\n }\n }\n return [screenColumn, column];\n };\n EditSession.prototype.getRowLength = function (row) {\n var h = 1;\n if (this.lineWidgets)\n h += this.lineWidgets[row] && this.lineWidgets[row].rowCount || 0;\n if (!this.$useWrapMode || !this.$wrapData[row])\n return h;\n else\n return this.$wrapData[row].length + h;\n };\n EditSession.prototype.getRowLineCount = function (row) {\n if (!this.$useWrapMode || !this.$wrapData[row]) {\n return 1;\n }\n else {\n return this.$wrapData[row].length + 1;\n }\n };\n EditSession.prototype.getRowWrapIndent = function (screenRow) {\n if (this.$useWrapMode) {\n var pos = this.screenToDocumentPosition(screenRow, Number.MAX_VALUE);\n var splits = this.$wrapData[pos.row];\n return splits.length && splits[0] < pos.column ? splits.indent : 0;\n }\n else {\n return 0;\n }\n };\n EditSession.prototype.getScreenLastRowColumn = function (screenRow) {\n var pos = this.screenToDocumentPosition(screenRow, Number.MAX_VALUE);\n return this.documentToScreenColumn(pos.row, pos.column);\n };\n EditSession.prototype.getDocumentLastRowColumn = function (docRow, docColumn) {\n var screenRow = this.documentToScreenRow(docRow, docColumn);\n return this.getScreenLastRowColumn(screenRow);\n };\n EditSession.prototype.getDocumentLastRowColumnPosition = function (docRow, docColumn) {\n var screenRow = this.documentToScreenRow(docRow, docColumn);\n return this.screenToDocumentPosition(screenRow, Number.MAX_VALUE / 10);\n };\n EditSession.prototype.getRowSplitData = function (row) {\n if (!this.$useWrapMode) {\n return undefined;\n }\n else {\n return this.$wrapData[row];\n }\n };\n EditSession.prototype.getScreenTabSize = function (screenColumn) {\n return this.$tabSize - (screenColumn % this.$tabSize | 0);\n };\n EditSession.prototype.screenToDocumentRow = function (screenRow, screenColumn) {\n return this.screenToDocumentPosition(screenRow, screenColumn).row;\n };\n EditSession.prototype.screenToDocumentColumn = function (screenRow, screenColumn) {\n return this.screenToDocumentPosition(screenRow, screenColumn).column;\n };\n EditSession.prototype.screenToDocumentPosition = function (screenRow, screenColumn, offsetX) {\n if (screenRow < 0)\n return { row: 0, column: 0 };\n var line;\n var docRow = 0;\n var docColumn = 0;\n var column;\n var row = 0;\n var rowLength = 0;\n var rowCache = this.$screenRowCache;\n var i = this.$getRowCacheIndex(rowCache, screenRow);\n var l = rowCache.length;\n if (l && i >= 0) {\n var row = rowCache[i];\n var docRow = this.$docRowCache[i];\n var doCache = screenRow > rowCache[l - 1];\n }\n else {\n var doCache = !l;\n }\n var maxRow = this.getLength() - 1;\n var foldLine = this.getNextFoldLine(docRow);\n var foldStart = foldLine ? foldLine.start.row : Infinity;\n while (row <= screenRow) {\n rowLength = this.getRowLength(docRow);\n if (row + rowLength > screenRow || docRow >= maxRow) {\n break;\n }\n else {\n row += rowLength;\n docRow++;\n if (docRow > foldStart) {\n docRow = foldLine.end.row + 1;\n foldLine = this.getNextFoldLine(docRow, foldLine);\n foldStart = foldLine ? foldLine.start.row : Infinity;\n }\n }\n if (doCache) {\n this.$docRowCache.push(docRow);\n this.$screenRowCache.push(row);\n }\n }\n if (foldLine && foldLine.start.row <= docRow) {\n line = this.getFoldDisplayLine(foldLine);\n docRow = foldLine.start.row;\n }\n else if (row + rowLength <= screenRow || docRow > maxRow) {\n return {\n row: maxRow,\n column: this.getLine(maxRow).length\n };\n }\n else {\n line = this.getLine(docRow);\n foldLine = null;\n }\n var wrapIndent = 0, splitIndex = Math.floor(screenRow - row);\n if (this.$useWrapMode) {\n var splits = this.$wrapData[docRow];\n if (splits) {\n column = splits[splitIndex];\n if (splitIndex > 0 && splits.length) {\n wrapIndent = splits.indent;\n docColumn = splits[splitIndex - 1] || splits[splits.length - 1];\n line = line.substring(docColumn);\n }\n }\n }\n if (offsetX !== undefined && this.$bidiHandler.isBidiRow(row + splitIndex, docRow, splitIndex))\n screenColumn = this.$bidiHandler.offsetToCol(offsetX);\n docColumn += this.$getStringScreenWidth(line, screenColumn - wrapIndent)[1];\n if (this.$useWrapMode && docColumn >= column)\n docColumn = column - 1;\n if (foldLine)\n return foldLine.idxToPosition(docColumn);\n return { row: docRow, column: docColumn };\n };\n EditSession.prototype.documentToScreenPosition = function (docRow, docColumn) {\n if (typeof docColumn === \"undefined\")\n var pos = this.$clipPositionToDocument(docRow.row, docRow.column);\n else\n pos = this.$clipPositionToDocument(docRow, docColumn);\n docRow = pos.row;\n docColumn = pos.column;\n var screenRow = 0;\n var foldStartRow = null;\n var fold = null;\n fold = this.getFoldAt(docRow, docColumn, 1);\n if (fold) {\n docRow = fold.start.row;\n docColumn = fold.start.column;\n }\n var rowEnd, row = 0;\n var rowCache = this.$docRowCache;\n var i = this.$getRowCacheIndex(rowCache, docRow);\n var l = rowCache.length;\n if (l && i >= 0) {\n var row = rowCache[i];\n var screenRow = this.$screenRowCache[i];\n var doCache = docRow > rowCache[l - 1];\n }\n else {\n var doCache = !l;\n }\n var foldLine = this.getNextFoldLine(row);\n var foldStart = foldLine ? foldLine.start.row : Infinity;\n while (row < docRow) {\n if (row >= foldStart) {\n rowEnd = foldLine.end.row + 1;\n if (rowEnd > docRow)\n break;\n foldLine = this.getNextFoldLine(rowEnd, foldLine);\n foldStart = foldLine ? foldLine.start.row : Infinity;\n }\n else {\n rowEnd = row + 1;\n }\n screenRow += this.getRowLength(row);\n row = rowEnd;\n if (doCache) {\n this.$docRowCache.push(row);\n this.$screenRowCache.push(screenRow);\n }\n }\n var textLine = \"\";\n if (foldLine && row >= foldStart) {\n textLine = this.getFoldDisplayLine(foldLine, docRow, docColumn);\n foldStartRow = foldLine.start.row;\n }\n else {\n textLine = this.getLine(docRow).substring(0, docColumn);\n foldStartRow = docRow;\n }\n var wrapIndent = 0;\n if (this.$useWrapMode) {\n var wrapRow = this.$wrapData[foldStartRow];\n if (wrapRow) {\n var screenRowOffset = 0;\n while (textLine.length >= wrapRow[screenRowOffset]) {\n screenRow++;\n screenRowOffset++;\n }\n textLine = textLine.substring(wrapRow[screenRowOffset - 1] || 0, textLine.length);\n wrapIndent = screenRowOffset > 0 ? wrapRow.indent : 0;\n }\n }\n if (this.lineWidgets && this.lineWidgets[row] && this.lineWidgets[row].rowsAbove)\n screenRow += this.lineWidgets[row].rowsAbove;\n return {\n row: screenRow,\n column: wrapIndent + this.$getStringScreenWidth(textLine)[0]\n };\n };\n EditSession.prototype.documentToScreenColumn = function (row, docColumn) {\n return this.documentToScreenPosition(row, docColumn).column;\n };\n EditSession.prototype.documentToScreenRow = function (docRow, docColumn) {\n return this.documentToScreenPosition(docRow, docColumn).row;\n };\n EditSession.prototype.getScreenLength = function () {\n var screenRows = 0;\n var fold = null;\n if (!this.$useWrapMode) {\n screenRows = this.getLength();\n var foldData = this.$foldData;\n for (var i = 0; i < foldData.length; i++) {\n fold = foldData[i];\n screenRows -= fold.end.row - fold.start.row;\n }\n }\n else {\n var lastRow = this.$wrapData.length;\n var row = 0, i = 0;\n var fold = this.$foldData[i++];\n var foldStart = fold ? fold.start.row : Infinity;\n while (row < lastRow) {\n var splits = this.$wrapData[row];\n screenRows += splits ? splits.length + 1 : 1;\n row++;\n if (row > foldStart) {\n row = fold.end.row + 1;\n fold = this.$foldData[i++];\n foldStart = fold ? fold.start.row : Infinity;\n }\n }\n }\n if (this.lineWidgets)\n screenRows += this.$getWidgetScreenLength();\n return screenRows;\n };\n EditSession.prototype.$setFontMetrics = function (fm) {\n if (!this.$enableVarChar)\n return;\n this.$getStringScreenWidth = function (str, maxScreenColumn, screenColumn) {\n if (maxScreenColumn === 0)\n return [0, 0];\n if (!maxScreenColumn)\n maxScreenColumn = Infinity;\n screenColumn = screenColumn || 0;\n var c, column;\n for (column = 0; column < str.length; column++) {\n c = str.charAt(column);\n if (c === \"\\t\") {\n screenColumn += this.getScreenTabSize(screenColumn);\n }\n else {\n screenColumn += fm.getCharacterWidth(c);\n }\n if (screenColumn > maxScreenColumn) {\n break;\n }\n }\n return [screenColumn, column];\n };\n };\n EditSession.prototype.destroy = function () {\n if (!this.destroyed) {\n this.bgTokenizer.setDocument(null);\n this.bgTokenizer.cleanup();\n this.destroyed = true;\n }\n this.$stopWorker();\n this.removeAllListeners();\n if (this.doc) {\n this.doc.off(\"change\", this.$onChange);\n }\n this.selection.detach();\n };\n return EditSession;\n}());\nEditSession.$uid = 0;\nEditSession.prototype.$modes = config.$modes;\nEditSession.prototype.getValue = EditSession.prototype.toString;\nEditSession.prototype.$defaultUndoManager = {\n undo: function () { },\n redo: function () { },\n hasUndo: function () { },\n hasRedo: function () { },\n reset: function () { },\n add: function () { },\n addSelection: function () { },\n startNewGroup: function () { },\n addSession: function () { }\n};\nEditSession.prototype.$overwrite = false;\nEditSession.prototype.$mode = null;\nEditSession.prototype.$modeId = null;\nEditSession.prototype.$scrollTop = 0;\nEditSession.prototype.$scrollLeft = 0;\nEditSession.prototype.$wrapLimit = 80;\nEditSession.prototype.$useWrapMode = false;\nEditSession.prototype.$wrapLimitRange = {\n min: null,\n max: null\n};\nEditSession.prototype.lineWidgets = null;\nEditSession.prototype.isFullWidth = isFullWidth;\noop.implement(EditSession.prototype, EventEmitter);\nvar CHAR = 1, CHAR_EXT = 2, PLACEHOLDER_START = 3, PLACEHOLDER_BODY = 4, PUNCTUATION = 9, SPACE = 10, TAB = 11, TAB_SPACE = 12;\nfunction isFullWidth(c) {\n if (c < 0x1100)\n return false;\n return c >= 0x1100 && c <= 0x115F ||\n c >= 0x11A3 && c <= 0x11A7 ||\n c >= 0x11FA && c <= 0x11FF ||\n c >= 0x2329 && c <= 0x232A ||\n c >= 0x2E80 && c <= 0x2E99 ||\n c >= 0x2E9B && c <= 0x2EF3 ||\n c >= 0x2F00 && c <= 0x2FD5 ||\n c >= 0x2FF0 && c <= 0x2FFB ||\n c >= 0x3000 && c <= 0x303E ||\n c >= 0x3041 && c <= 0x3096 ||\n c >= 0x3099 && c <= 0x30FF ||\n c >= 0x3105 && c <= 0x312D ||\n c >= 0x3131 && c <= 0x318E ||\n c >= 0x3190 && c <= 0x31BA ||\n c >= 0x31C0 && c <= 0x31E3 ||\n c >= 0x31F0 && c <= 0x321E ||\n c >= 0x3220 && c <= 0x3247 ||\n c >= 0x3250 && c <= 0x32FE ||\n c >= 0x3300 && c <= 0x4DBF ||\n c >= 0x4E00 && c <= 0xA48C ||\n c >= 0xA490 && c <= 0xA4C6 ||\n c >= 0xA960 && c <= 0xA97C ||\n c >= 0xAC00 && c <= 0xD7A3 ||\n c >= 0xD7B0 && c <= 0xD7C6 ||\n c >= 0xD7CB && c <= 0xD7FB ||\n c >= 0xF900 && c <= 0xFAFF ||\n c >= 0xFE10 && c <= 0xFE19 ||\n c >= 0xFE30 && c <= 0xFE52 ||\n c >= 0xFE54 && c <= 0xFE66 ||\n c >= 0xFE68 && c <= 0xFE6B ||\n c >= 0xFF01 && c <= 0xFF60 ||\n c >= 0xFFE0 && c <= 0xFFE6;\n}\nrequire(\"./edit_session/folding\").Folding.call(EditSession.prototype);\nrequire(\"./edit_session/bracket_match\").BracketMatch.call(EditSession.prototype);\nconfig.defineOptions(EditSession.prototype, \"session\", {\n wrap: {\n set: function (value) {\n if (!value || value == \"off\")\n value = false;\n else if (value == \"free\")\n value = true;\n else if (value == \"printMargin\")\n value = -1;\n else if (typeof value == \"string\")\n value = parseInt(value, 10) || false;\n if (this.$wrap == value)\n return;\n this.$wrap = value;\n if (!value) {\n this.setUseWrapMode(false);\n }\n else {\n var col = typeof value == \"number\" ? value : null;\n this.setWrapLimitRange(col, col);\n this.setUseWrapMode(true);\n }\n },\n get: function () {\n if (this.getUseWrapMode()) {\n if (this.$wrap == -1)\n return \"printMargin\";\n if (!this.getWrapLimitRange().min)\n return \"free\";\n return this.$wrap;\n }\n return \"off\";\n },\n handlesSet: true\n },\n wrapMethod: {\n set: function (val) {\n val = val == \"auto\"\n ? this.$mode.type != \"text\"\n : val != \"text\";\n if (val != this.$wrapAsCode) {\n this.$wrapAsCode = val;\n if (this.$useWrapMode) {\n this.$useWrapMode = false;\n this.setUseWrapMode(true);\n }\n }\n },\n initialValue: \"auto\"\n },\n indentedSoftWrap: {\n set: function () {\n if (this.$useWrapMode) {\n this.$useWrapMode = false;\n this.setUseWrapMode(true);\n }\n },\n initialValue: true\n },\n firstLineNumber: {\n set: function () { this._signal(\"changeBreakpoint\"); },\n initialValue: 1\n },\n useWorker: {\n set: function (useWorker) {\n this.$useWorker = useWorker;\n this.$stopWorker();\n if (useWorker)\n this.$startWorker();\n },\n initialValue: true\n },\n useSoftTabs: { initialValue: true },\n tabSize: {\n set: function (tabSize) {\n tabSize = parseInt(tabSize);\n if (tabSize > 0 && this.$tabSize !== tabSize) {\n this.$modified = true;\n this.$rowLengthCache = [];\n this.$tabSize = tabSize;\n this._signal(\"changeTabSize\");\n }\n },\n initialValue: 4,\n handlesSet: true\n },\n navigateWithinSoftTabs: { initialValue: false },\n foldStyle: {\n set: function (val) { this.setFoldStyle(val); },\n handlesSet: true\n },\n overwrite: {\n set: function (val) { this._signal(\"changeOverwrite\"); },\n initialValue: false\n },\n newLineMode: {\n set: function (val) { this.doc.setNewLineMode(val); },\n get: function () { return this.doc.getNewLineMode(); },\n handlesSet: true\n },\n mode: {\n set: function (val) { this.setMode(val); },\n get: function () { return this.$modeId; },\n handlesSet: true\n }\n});\nexports.EditSession = EditSession;\n\n});\n\nace.define(\"ace/search\",[\"require\",\"exports\",\"module\",\"ace/lib/lang\",\"ace/lib/oop\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar lang = require(\"./lib/lang\");\nvar oop = require(\"./lib/oop\");\nvar Range = require(\"./range\").Range;\nvar Search = /** @class */ (function () {\n function Search() {\n this.$options = {};\n }\n Search.prototype.set = function (options) {\n oop.mixin(this.$options, options);\n return this;\n };\n Search.prototype.getOptions = function () {\n return lang.copyObject(this.$options);\n };\n Search.prototype.setOptions = function (options) {\n this.$options = options;\n };\n Search.prototype.find = function (session) {\n var options = this.$options;\n var iterator = this.$matchIterator(session, options);\n if (!iterator)\n return false;\n var firstRange = null;\n iterator.forEach(function (sr, sc, er, ec) {\n firstRange = new Range(sr, sc, er, ec);\n if (sc == ec && options.start && options.start.start\n && options.skipCurrent != false && firstRange.isEqual(options.start)) {\n firstRange = null;\n return false;\n }\n return true;\n });\n return firstRange;\n };\n Search.prototype.findAll = function (session) {\n var options = this.$options;\n if (!options.needle)\n return [];\n this.$assembleRegExp(options);\n var range = options.range;\n var lines = range\n ? session.getLines(range.start.row, range.end.row)\n : session.doc.getAllLines();\n var ranges = [];\n var re = options.re;\n if (options.$isMultiLine) {\n var len = re.length;\n var maxRow = lines.length - len;\n var prevRange;\n outer: for (var row = re.offset || 0; row <= maxRow; row++) {\n for (var j = 0; j < len; j++)\n if (lines[row + j].search(re[j]) == -1)\n continue outer;\n var startLine = lines[row];\n var line = lines[row + len - 1];\n var startIndex = startLine.length - startLine.match(re[0])[0].length;\n var endIndex = line.match(re[len - 1])[0].length;\n if (prevRange && prevRange.end.row === row &&\n prevRange.end.column > startIndex) {\n continue;\n }\n ranges.push(prevRange = new Range(row, startIndex, row + len - 1, endIndex));\n if (len > 2)\n row = row + len - 2;\n }\n }\n else {\n for (var i = 0; i < lines.length; i++) {\n var matches = lang.getMatchOffsets(lines[i], re);\n for (var j = 0; j < matches.length; j++) {\n var match = matches[j];\n ranges.push(new Range(i, match.offset, i, match.offset + match.length));\n }\n }\n }\n if (range) {\n var startColumn = range.start.column;\n var endColumn = range.end.column;\n var i = 0, j = ranges.length - 1;\n while (i < j && ranges[i].start.column < startColumn && ranges[i].start.row == 0)\n i++;\n var endRow = range.end.row - range.start.row;\n while (i < j && ranges[j].end.column > endColumn && ranges[j].end.row == endRow)\n j--;\n ranges = ranges.slice(i, j + 1);\n for (i = 0, j = ranges.length; i < j; i++) {\n ranges[i].start.row += range.start.row;\n ranges[i].end.row += range.start.row;\n }\n }\n return ranges;\n };\n Search.prototype.replace = function (input, replacement) {\n var options = this.$options;\n var re = this.$assembleRegExp(options);\n if (options.$isMultiLine)\n return replacement;\n if (!re)\n return;\n var match = re.exec(input);\n if (!match || match[0].length != input.length)\n return null;\n replacement = input.replace(re, replacement);\n if (options.preserveCase) {\n replacement = replacement.split(\"\");\n for (var i = Math.min(input.length, input.length); i--;) {\n var ch = input[i];\n if (ch && ch.toLowerCase() != ch)\n replacement[i] = replacement[i].toUpperCase();\n else\n replacement[i] = replacement[i].toLowerCase();\n }\n replacement = replacement.join(\"\");\n }\n return replacement;\n };\n Search.prototype.$assembleRegExp = function (options, $disableFakeMultiline) {\n if (options.needle instanceof RegExp)\n return options.re = options.needle;\n var needle = options.needle;\n if (!options.needle)\n return options.re = false;\n if (!options.regExp)\n needle = lang.escapeRegExp(needle);\n var modifier = options.caseSensitive ? \"gm\" : \"gmi\";\n try {\n new RegExp(needle, \"u\");\n options.$supportsUnicodeFlag = true;\n modifier += \"u\";\n }\n catch (e) {\n options.$supportsUnicodeFlag = false; //left for backward compatibility with previous versions for cases like /ab\\{2}/gu\n }\n if (options.wholeWord)\n needle = addWordBoundary(needle, options);\n options.$isMultiLine = !$disableFakeMultiline && /[\\n\\r]/.test(needle);\n if (options.$isMultiLine)\n return options.re = this.$assembleMultilineRegExp(needle, modifier);\n try {\n var re = new RegExp(needle, modifier);\n }\n catch (e) {\n re = false;\n }\n return options.re = re;\n };\n Search.prototype.$assembleMultilineRegExp = function (needle, modifier) {\n var parts = needle.replace(/\\r\\n|\\r|\\n/g, \"$\\n^\").split(\"\\n\");\n var re = [];\n for (var i = 0; i < parts.length; i++)\n try {\n re.push(new RegExp(parts[i], modifier));\n }\n catch (e) {\n return false;\n }\n return re;\n };\n Search.prototype.$matchIterator = function (session, options) {\n var re = this.$assembleRegExp(options);\n if (!re)\n return false;\n var backwards = options.backwards == true;\n var skipCurrent = options.skipCurrent != false;\n var supportsUnicodeFlag = re.unicode;\n var range = options.range;\n var start = options.start;\n if (!start)\n start = range ? range[backwards ? \"end\" : \"start\"] : session.selection.getRange();\n if (start.start)\n start = start[skipCurrent != backwards ? \"end\" : \"start\"];\n var firstRow = range ? range.start.row : 0;\n var lastRow = range ? range.end.row : session.getLength() - 1;\n if (backwards) {\n var forEach = function (callback) {\n var row = start.row;\n if (forEachInLine(row, start.column, callback))\n return;\n for (row--; row >= firstRow; row--)\n if (forEachInLine(row, Number.MAX_VALUE, callback))\n return;\n if (options.wrap == false)\n return;\n for (row = lastRow, firstRow = start.row; row >= firstRow; row--)\n if (forEachInLine(row, Number.MAX_VALUE, callback))\n return;\n };\n }\n else {\n var forEach = function (callback) {\n var row = start.row;\n if (forEachInLine(row, start.column, callback))\n return;\n for (row = row + 1; row <= lastRow; row++)\n if (forEachInLine(row, 0, callback))\n return;\n if (options.wrap == false)\n return;\n for (row = firstRow, lastRow = start.row; row <= lastRow; row++)\n if (forEachInLine(row, 0, callback))\n return;\n };\n }\n if (options.$isMultiLine) {\n var len = re.length;\n var forEachInLine = function (row, offset, callback) {\n var startRow = backwards ? row - len + 1 : row;\n if (startRow < 0 || startRow + len > session.getLength())\n return;\n var line = session.getLine(startRow);\n var startIndex = line.search(re[0]);\n if (!backwards && startIndex < offset || startIndex === -1)\n return;\n for (var i = 1; i < len; i++) {\n line = session.getLine(startRow + i);\n if (line.search(re[i]) == -1)\n return;\n }\n var endIndex = line.match(re[len - 1])[0].length;\n if (backwards && endIndex > offset)\n return;\n if (callback(startRow, startIndex, startRow + len - 1, endIndex))\n return true;\n };\n }\n else if (backwards) {\n var forEachInLine = function (row, endIndex, callback) {\n var line = session.getLine(row);\n var matches = [];\n var m, last = 0;\n re.lastIndex = 0;\n while ((m = re.exec(line))) {\n var length = m[0].length;\n last = m.index;\n if (!length) {\n if (last >= line.length)\n break;\n re.lastIndex = last += lang.skipEmptyMatch(line, last, supportsUnicodeFlag);\n }\n if (m.index + length > endIndex)\n break;\n matches.push(m.index, length);\n }\n for (var i = matches.length - 1; i >= 0; i -= 2) {\n var column = matches[i - 1];\n var length = matches[i];\n if (callback(row, column, row, column + length))\n return true;\n }\n };\n }\n else {\n var forEachInLine = function (row, startIndex, callback) {\n var line = session.getLine(row);\n var last;\n var m;\n re.lastIndex = startIndex;\n while ((m = re.exec(line))) {\n var length = m[0].length;\n last = m.index;\n if (callback(row, last, row, last + length))\n return true;\n if (!length) {\n re.lastIndex = last += lang.skipEmptyMatch(line, last, supportsUnicodeFlag);\n if (last >= line.length)\n return false;\n }\n }\n };\n }\n return { forEach: forEach };\n };\n return Search;\n}());\nfunction addWordBoundary(needle, options) {\n var supportsLookbehind = lang.supportsLookbehind();\n function wordBoundary(c, firstChar) {\n if (firstChar === void 0) { firstChar = true; }\n var wordRegExp = supportsLookbehind && options.$supportsUnicodeFlag ? new RegExp(\"[\\\\p{L}\\\\p{N}_]\", \"u\") : new RegExp(\"\\\\w\");\n if (wordRegExp.test(c) || options.regExp) {\n if (supportsLookbehind && options.$supportsUnicodeFlag) {\n if (firstChar)\n return \"(?<=^|[^\\\\p{L}\\\\p{N}_])\";\n return \"(?=[^\\\\p{L}\\\\p{N}_]|$)\";\n }\n return \"\\\\b\";\n }\n return \"\";\n }\n var needleArray = Array.from(needle);\n var firstChar = needleArray[0];\n var lastChar = needleArray[needleArray.length - 1];\n return wordBoundary(firstChar) + needle + wordBoundary(lastChar, false);\n}\nexports.Search = Search;\n\n});\n\nace.define(\"ace/keyboard/hash_handler\",[\"require\",\"exports\",\"module\",\"ace/lib/keys\",\"ace/lib/useragent\"], function(require, exports, module){\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar keyUtil = require(\"../lib/keys\");\nvar useragent = require(\"../lib/useragent\");\nvar KEY_MODS = keyUtil.KEY_MODS;\nvar MultiHashHandler = /** @class */ (function () {\n function MultiHashHandler(config, platform) {\n this.$init(config, platform, false);\n }\n MultiHashHandler.prototype.$init = function (config, platform, $singleCommand) {\n this.platform = platform || (useragent.isMac ? \"mac\" : \"win\");\n this.commands = {};\n this.commandKeyBinding = {};\n this.addCommands(config);\n this.$singleCommand = $singleCommand;\n };\n MultiHashHandler.prototype.addCommand = function (command) {\n if (this.commands[command.name])\n this.removeCommand(command);\n this.commands[command.name] = command;\n if (command.bindKey)\n this._buildKeyHash(command);\n };\n MultiHashHandler.prototype.removeCommand = function (command, keepCommand) {\n var name = command && (typeof command === 'string' ? command : command.name);\n command = this.commands[name];\n if (!keepCommand)\n delete this.commands[name];\n var ckb = this.commandKeyBinding;\n for (var keyId in ckb) {\n var cmdGroup = ckb[keyId];\n if (cmdGroup == command) {\n delete ckb[keyId];\n }\n else if (Array.isArray(cmdGroup)) {\n var i = cmdGroup.indexOf(command);\n if (i != -1) {\n cmdGroup.splice(i, 1);\n if (cmdGroup.length == 1)\n ckb[keyId] = cmdGroup[0];\n }\n }\n }\n };\n MultiHashHandler.prototype.bindKey = function (key, command, position) {\n if (typeof key == \"object\" && key) {\n if (position == undefined)\n position = key.position;\n key = key[this.platform];\n }\n if (!key)\n return;\n if (typeof command == \"function\")\n return this.addCommand({ exec: command, bindKey: key, name: command.name || key });\n key.split(\"|\").forEach(function (keyPart) {\n var chain = \"\";\n if (keyPart.indexOf(\" \") != -1) {\n var parts = keyPart.split(/\\s+/);\n keyPart = parts.pop();\n parts.forEach(function (keyPart) {\n var binding = this.parseKeys(keyPart);\n var id = KEY_MODS[binding.hashId] + binding.key;\n chain += (chain ? \" \" : \"\") + id;\n this._addCommandToBinding(chain, \"chainKeys\");\n }, this);\n chain += \" \";\n }\n var binding = this.parseKeys(keyPart);\n var id = KEY_MODS[binding.hashId] + binding.key;\n this._addCommandToBinding(chain + id, command, position);\n }, this);\n };\n MultiHashHandler.prototype._addCommandToBinding = function (keyId, command, position) {\n var ckb = this.commandKeyBinding, i;\n if (!command) {\n delete ckb[keyId];\n }\n else if (!ckb[keyId] || this.$singleCommand) {\n ckb[keyId] = command;\n }\n else {\n if (!Array.isArray(ckb[keyId])) {\n ckb[keyId] = [ckb[keyId]];\n }\n else if ((i = ckb[keyId].indexOf(command)) != -1) {\n ckb[keyId].splice(i, 1);\n }\n if (typeof position != \"number\") {\n position = getPosition(command);\n }\n var commands = ckb[keyId];\n for (i = 0; i < commands.length; i++) {\n var other = commands[i];\n var otherPos = getPosition(other);\n if (otherPos > position)\n break;\n }\n commands.splice(i, 0, command);\n }\n };\n MultiHashHandler.prototype.addCommands = function (commands) {\n commands && Object.keys(commands).forEach(function (name) {\n var command = commands[name];\n if (!command)\n return;\n if (typeof command === \"string\")\n return this.bindKey(command, name);\n if (typeof command === \"function\")\n command = { exec: command };\n if (typeof command !== \"object\")\n return;\n if (!command.name)\n command.name = name;\n this.addCommand(command);\n }, this);\n };\n MultiHashHandler.prototype.removeCommands = function (commands) {\n Object.keys(commands).forEach(function (name) {\n this.removeCommand(commands[name]);\n }, this);\n };\n MultiHashHandler.prototype.bindKeys = function (keyList) {\n Object.keys(keyList).forEach(function (key) {\n this.bindKey(key, keyList[key]);\n }, this);\n };\n MultiHashHandler.prototype._buildKeyHash = function (command) {\n this.bindKey(command.bindKey, command);\n };\n MultiHashHandler.prototype.parseKeys = function (keys) {\n var parts = keys.toLowerCase().split(/[\\-\\+]([\\-\\+])?/).filter(function (x) { return x; });\n var key = parts.pop();\n var keyCode = keyUtil[key];\n if (keyUtil.FUNCTION_KEYS[keyCode])\n key = keyUtil.FUNCTION_KEYS[keyCode].toLowerCase();\n else if (!parts.length)\n return { key: key, hashId: -1 };\n else if (parts.length == 1 && parts[0] == \"shift\")\n return { key: key.toUpperCase(), hashId: -1 };\n var hashId = 0;\n for (var i = parts.length; i--;) {\n var modifier = keyUtil.KEY_MODS[parts[i]];\n if (modifier == null) {\n if (typeof console != \"undefined\")\n console.error(\"invalid modifier \" + parts[i] + \" in \" + keys);\n return false;\n }\n hashId |= modifier;\n }\n return { key: key, hashId: hashId };\n };\n MultiHashHandler.prototype.findKeyCommand = function (hashId, keyString) {\n var key = KEY_MODS[hashId] + keyString;\n return this.commandKeyBinding[key];\n };\n MultiHashHandler.prototype.handleKeyboard = function (data, hashId, keyString, keyCode) {\n if (keyCode < 0)\n return;\n var key = KEY_MODS[hashId] + keyString;\n var command = this.commandKeyBinding[key];\n if (data.$keyChain) {\n data.$keyChain += \" \" + key;\n command = this.commandKeyBinding[data.$keyChain] || command;\n }\n if (command) {\n if (command == \"chainKeys\" || command[command.length - 1] == \"chainKeys\") {\n data.$keyChain = data.$keyChain || key;\n return { command: \"null\" };\n }\n }\n if (data.$keyChain) {\n if ((!hashId || hashId == 4) && keyString.length == 1)\n data.$keyChain = data.$keyChain.slice(0, -key.length - 1); // wait for input\n else if (hashId == -1 || keyCode > 0)\n data.$keyChain = \"\"; // reset keyChain\n }\n return { command: command };\n };\n MultiHashHandler.prototype.getStatusText = function (editor, data) {\n return data.$keyChain || \"\";\n };\n return MultiHashHandler;\n}());\nfunction getPosition(command) {\n return typeof command == \"object\" && command.bindKey\n && command.bindKey.position\n || (command.isDefault ? -100 : 0);\n}\nvar HashHandler = /** @class */ (function (_super) {\n __extends(HashHandler, _super);\n function HashHandler(config, platform) {\n var _this = _super.call(this, config, platform) || this;\n _this.$singleCommand = true;\n return _this;\n }\n return HashHandler;\n}(MultiHashHandler));\nHashHandler.call = function (thisArg, config, platform) {\n MultiHashHandler.prototype.$init.call(thisArg, config, platform, true);\n};\nMultiHashHandler.call = function (thisArg, config, platform) {\n MultiHashHandler.prototype.$init.call(thisArg, config, platform, false);\n};\nexports.HashHandler = HashHandler;\nexports.MultiHashHandler = MultiHashHandler;\n\n});\n\nace.define(\"ace/commands/command_manager\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/keyboard/hash_handler\",\"ace/lib/event_emitter\"], function(require, exports, module){\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar oop = require(\"../lib/oop\");\nvar MultiHashHandler = require(\"../keyboard/hash_handler\").MultiHashHandler;\nvar EventEmitter = require(\"../lib/event_emitter\").EventEmitter;\nvar CommandManager = /** @class */ (function (_super) {\n __extends(CommandManager, _super);\n function CommandManager(platform, commands) {\n var _this = _super.call(this, commands, platform) || this;\n _this.byName = _this.commands;\n _this.setDefaultHandler(\"exec\", function (e) {\n if (!e.args) {\n return e.command.exec(e.editor, {}, e.event, true);\n }\n return e.command.exec(e.editor, e.args, e.event, false);\n });\n return _this;\n }\n CommandManager.prototype.exec = function (command, editor, args) {\n if (Array.isArray(command)) {\n for (var i = command.length; i--;) {\n if (this.exec(command[i], editor, args))\n return true;\n }\n return false;\n }\n if (typeof command === \"string\")\n command = this.commands[command];\n if (!command)\n return false;\n if (editor && editor.$readOnly && !command.readOnly)\n return false;\n if (this.$checkCommandState != false && command.isAvailable && !command.isAvailable(editor))\n return false;\n var e = { editor: editor, command: command, args: args };\n e.returnValue = this._emit(\"exec\", e);\n this._signal(\"afterExec\", e);\n return e.returnValue === false ? false : true;\n };\n CommandManager.prototype.toggleRecording = function (editor) {\n if (this.$inReplay)\n return;\n editor && editor._emit(\"changeStatus\");\n if (this.recording) {\n this.macro.pop();\n this.off(\"exec\", this.$addCommandToMacro);\n if (!this.macro.length)\n this.macro = this.oldMacro;\n return this.recording = false;\n }\n if (!this.$addCommandToMacro) {\n this.$addCommandToMacro = function (e) {\n this.macro.push([e.command, e.args]);\n }.bind(this);\n }\n this.oldMacro = this.macro;\n this.macro = [];\n this.on(\"exec\", this.$addCommandToMacro);\n return this.recording = true;\n };\n CommandManager.prototype.replay = function (editor) {\n if (this.$inReplay || !this.macro)\n return;\n if (this.recording)\n return this.toggleRecording(editor);\n try {\n this.$inReplay = true;\n this.macro.forEach(function (x) {\n if (typeof x == \"string\")\n this.exec(x, editor);\n else\n this.exec(x[0], editor, x[1]);\n }, this);\n }\n finally {\n this.$inReplay = false;\n }\n };\n CommandManager.prototype.trimMacro = function (m) {\n return m.map(function (x) {\n if (typeof x[0] != \"string\")\n x[0] = x[0].name;\n if (!x[1])\n x = x[0];\n return x;\n });\n };\n return CommandManager;\n}(MultiHashHandler));\noop.implement(CommandManager.prototype, EventEmitter);\nexports.CommandManager = CommandManager;\n\n});\n\nace.define(\"ace/commands/default_commands\",[\"require\",\"exports\",\"module\",\"ace/lib/lang\",\"ace/config\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar lang = require(\"../lib/lang\");\nvar config = require(\"../config\");\nvar Range = require(\"../range\").Range;\nfunction bindKey(win, mac) {\n return { win: win, mac: mac };\n}\nexports.commands = [{\n name: \"showSettingsMenu\",\n description: \"Show settings menu\",\n bindKey: bindKey(\"Ctrl-,\", \"Command-,\"),\n exec: function (editor) {\n config.loadModule(\"ace/ext/settings_menu\", function (module) {\n module.init(editor);\n editor.showSettingsMenu();\n });\n },\n readOnly: true\n }, {\n name: \"goToNextError\",\n description: \"Go to next error\",\n bindKey: bindKey(\"Alt-E\", \"F4\"),\n exec: function (editor) {\n config.loadModule(\"ace/ext/error_marker\", function (module) {\n module.showErrorMarker(editor, 1);\n });\n },\n scrollIntoView: \"animate\",\n readOnly: true\n }, {\n name: \"goToPreviousError\",\n description: \"Go to previous error\",\n bindKey: bindKey(\"Alt-Shift-E\", \"Shift-F4\"),\n exec: function (editor) {\n config.loadModule(\"ace/ext/error_marker\", function (module) {\n module.showErrorMarker(editor, -1);\n });\n },\n scrollIntoView: \"animate\",\n readOnly: true\n }, {\n name: \"selectall\",\n description: \"Select all\",\n bindKey: bindKey(\"Ctrl-A\", \"Command-A\"),\n exec: function (editor) { editor.selectAll(); },\n readOnly: true\n }, {\n name: \"centerselection\",\n description: \"Center selection\",\n bindKey: bindKey(null, \"Ctrl-L\"),\n exec: function (editor) { editor.centerSelection(); },\n readOnly: true\n }, {\n name: \"gotoline\",\n description: \"Go to line...\",\n bindKey: bindKey(\"Ctrl-L\", \"Command-L\"),\n exec: function (editor, line) {\n if (typeof line === \"number\" && !isNaN(line))\n editor.gotoLine(line);\n editor.prompt({ $type: \"gotoLine\" });\n },\n readOnly: true\n }, {\n name: \"fold\",\n bindKey: bindKey(\"Alt-L|Ctrl-F1\", \"Command-Alt-L|Command-F1\"),\n exec: function (editor) { editor.session.toggleFold(false); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"center\",\n readOnly: true\n }, {\n name: \"unfold\",\n bindKey: bindKey(\"Alt-Shift-L|Ctrl-Shift-F1\", \"Command-Alt-Shift-L|Command-Shift-F1\"),\n exec: function (editor) { editor.session.toggleFold(true); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"center\",\n readOnly: true\n }, {\n name: \"toggleFoldWidget\",\n description: \"Toggle fold widget\",\n bindKey: bindKey(\"F2\", \"F2\"),\n exec: function (editor) { editor.session.toggleFoldWidget(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"center\",\n readOnly: true\n }, {\n name: \"toggleParentFoldWidget\",\n description: \"Toggle parent fold widget\",\n bindKey: bindKey(\"Alt-F2\", \"Alt-F2\"),\n exec: function (editor) { editor.session.toggleFoldWidget(true); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"center\",\n readOnly: true\n }, {\n name: \"foldall\",\n description: \"Fold all\",\n bindKey: bindKey(null, \"Ctrl-Command-Option-0\"),\n exec: function (editor) { editor.session.foldAll(); },\n scrollIntoView: \"center\",\n readOnly: true\n }, {\n name: \"foldAllComments\",\n description: \"Fold all comments\",\n bindKey: bindKey(null, \"Ctrl-Command-Option-0\"),\n exec: function (editor) { editor.session.foldAllComments(); },\n scrollIntoView: \"center\",\n readOnly: true\n }, {\n name: \"foldOther\",\n description: \"Fold other\",\n bindKey: bindKey(\"Alt-0\", \"Command-Option-0\"),\n exec: function (editor) {\n editor.session.foldAll();\n editor.session.unfold(editor.selection.getAllRanges());\n },\n scrollIntoView: \"center\",\n readOnly: true\n }, {\n name: \"unfoldall\",\n description: \"Unfold all\",\n bindKey: bindKey(\"Alt-Shift-0\", \"Command-Option-Shift-0\"),\n exec: function (editor) { editor.session.unfold(); },\n scrollIntoView: \"center\",\n readOnly: true\n }, {\n name: \"findnext\",\n description: \"Find next\",\n bindKey: bindKey(\"Ctrl-K\", \"Command-G\"),\n exec: function (editor) { editor.findNext(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"center\",\n readOnly: true\n }, {\n name: \"findprevious\",\n description: \"Find previous\",\n bindKey: bindKey(\"Ctrl-Shift-K\", \"Command-Shift-G\"),\n exec: function (editor) { editor.findPrevious(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"center\",\n readOnly: true\n }, {\n name: \"selectOrFindNext\",\n description: \"Select or find next\",\n bindKey: bindKey(\"Alt-K\", \"Ctrl-G\"),\n exec: function (editor) {\n if (editor.selection.isEmpty())\n editor.selection.selectWord();\n else\n editor.findNext();\n },\n readOnly: true\n }, {\n name: \"selectOrFindPrevious\",\n description: \"Select or find previous\",\n bindKey: bindKey(\"Alt-Shift-K\", \"Ctrl-Shift-G\"),\n exec: function (editor) {\n if (editor.selection.isEmpty())\n editor.selection.selectWord();\n else\n editor.findPrevious();\n },\n readOnly: true\n }, {\n name: \"find\",\n description: \"Find\",\n bindKey: bindKey(\"Ctrl-F\", \"Command-F\"),\n exec: function (editor) {\n config.loadModule(\"ace/ext/searchbox\", function (e) { e.Search(editor); });\n },\n readOnly: true\n }, {\n name: \"overwrite\",\n description: \"Overwrite\",\n bindKey: \"Insert\",\n exec: function (editor) { editor.toggleOverwrite(); },\n readOnly: true\n }, {\n name: \"selecttostart\",\n description: \"Select to start\",\n bindKey: bindKey(\"Ctrl-Shift-Home\", \"Command-Shift-Home|Command-Shift-Up\"),\n exec: function (editor) { editor.getSelection().selectFileStart(); },\n multiSelectAction: \"forEach\",\n readOnly: true,\n scrollIntoView: \"animate\",\n aceCommandGroup: \"fileJump\"\n }, {\n name: \"gotostart\",\n description: \"Go to start\",\n bindKey: bindKey(\"Ctrl-Home\", \"Command-Home|Command-Up\"),\n exec: function (editor) { editor.navigateFileStart(); },\n multiSelectAction: \"forEach\",\n readOnly: true,\n scrollIntoView: \"animate\",\n aceCommandGroup: \"fileJump\"\n }, {\n name: \"selectup\",\n description: \"Select up\",\n bindKey: bindKey(\"Shift-Up\", \"Shift-Up|Ctrl-Shift-P\"),\n exec: function (editor) { editor.getSelection().selectUp(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"golineup\",\n description: \"Go line up\",\n bindKey: bindKey(\"Up\", \"Up|Ctrl-P\"),\n exec: function (editor, args) { editor.navigateUp(args.times); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"selecttoend\",\n description: \"Select to end\",\n bindKey: bindKey(\"Ctrl-Shift-End\", \"Command-Shift-End|Command-Shift-Down\"),\n exec: function (editor) { editor.getSelection().selectFileEnd(); },\n multiSelectAction: \"forEach\",\n readOnly: true,\n scrollIntoView: \"animate\",\n aceCommandGroup: \"fileJump\"\n }, {\n name: \"gotoend\",\n description: \"Go to end\",\n bindKey: bindKey(\"Ctrl-End\", \"Command-End|Command-Down\"),\n exec: function (editor) { editor.navigateFileEnd(); },\n multiSelectAction: \"forEach\",\n readOnly: true,\n scrollIntoView: \"animate\",\n aceCommandGroup: \"fileJump\"\n }, {\n name: \"selectdown\",\n description: \"Select down\",\n bindKey: bindKey(\"Shift-Down\", \"Shift-Down|Ctrl-Shift-N\"),\n exec: function (editor) { editor.getSelection().selectDown(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"golinedown\",\n description: \"Go line down\",\n bindKey: bindKey(\"Down\", \"Down|Ctrl-N\"),\n exec: function (editor, args) { editor.navigateDown(args.times); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"selectwordleft\",\n description: \"Select word left\",\n bindKey: bindKey(\"Ctrl-Shift-Left\", \"Option-Shift-Left\"),\n exec: function (editor) { editor.getSelection().selectWordLeft(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"gotowordleft\",\n description: \"Go to word left\",\n bindKey: bindKey(\"Ctrl-Left\", \"Option-Left\"),\n exec: function (editor) { editor.navigateWordLeft(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"selecttolinestart\",\n description: \"Select to line start\",\n bindKey: bindKey(\"Alt-Shift-Left\", \"Command-Shift-Left|Ctrl-Shift-A\"),\n exec: function (editor) { editor.getSelection().selectLineStart(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"gotolinestart\",\n description: \"Go to line start\",\n bindKey: bindKey(\"Alt-Left|Home\", \"Command-Left|Home|Ctrl-A\"),\n exec: function (editor) { editor.navigateLineStart(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"selectleft\",\n description: \"Select left\",\n bindKey: bindKey(\"Shift-Left\", \"Shift-Left|Ctrl-Shift-B\"),\n exec: function (editor) { editor.getSelection().selectLeft(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"gotoleft\",\n description: \"Go to left\",\n bindKey: bindKey(\"Left\", \"Left|Ctrl-B\"),\n exec: function (editor, args) { editor.navigateLeft(args.times); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"selectwordright\",\n description: \"Select word right\",\n bindKey: bindKey(\"Ctrl-Shift-Right\", \"Option-Shift-Right\"),\n exec: function (editor) { editor.getSelection().selectWordRight(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"gotowordright\",\n description: \"Go to word right\",\n bindKey: bindKey(\"Ctrl-Right\", \"Option-Right\"),\n exec: function (editor) { editor.navigateWordRight(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"selecttolineend\",\n description: \"Select to line end\",\n bindKey: bindKey(\"Alt-Shift-Right\", \"Command-Shift-Right|Shift-End|Ctrl-Shift-E\"),\n exec: function (editor) { editor.getSelection().selectLineEnd(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"gotolineend\",\n description: \"Go to line end\",\n bindKey: bindKey(\"Alt-Right|End\", \"Command-Right|End|Ctrl-E\"),\n exec: function (editor) { editor.navigateLineEnd(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"selectright\",\n description: \"Select right\",\n bindKey: bindKey(\"Shift-Right\", \"Shift-Right\"),\n exec: function (editor) { editor.getSelection().selectRight(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"gotoright\",\n description: \"Go to right\",\n bindKey: bindKey(\"Right\", \"Right|Ctrl-F\"),\n exec: function (editor, args) { editor.navigateRight(args.times); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"selectpagedown\",\n description: \"Select page down\",\n bindKey: \"Shift-PageDown\",\n exec: function (editor) { editor.selectPageDown(); },\n readOnly: true\n }, {\n name: \"pagedown\",\n description: \"Page down\",\n bindKey: bindKey(null, \"Option-PageDown\"),\n exec: function (editor) { editor.scrollPageDown(); },\n readOnly: true\n }, {\n name: \"gotopagedown\",\n description: \"Go to page down\",\n bindKey: bindKey(\"PageDown\", \"PageDown|Ctrl-V\"),\n exec: function (editor) { editor.gotoPageDown(); },\n readOnly: true\n }, {\n name: \"selectpageup\",\n description: \"Select page up\",\n bindKey: \"Shift-PageUp\",\n exec: function (editor) { editor.selectPageUp(); },\n readOnly: true\n }, {\n name: \"pageup\",\n description: \"Page up\",\n bindKey: bindKey(null, \"Option-PageUp\"),\n exec: function (editor) { editor.scrollPageUp(); },\n readOnly: true\n }, {\n name: \"gotopageup\",\n description: \"Go to page up\",\n bindKey: \"PageUp\",\n exec: function (editor) { editor.gotoPageUp(); },\n readOnly: true\n }, {\n name: \"scrollup\",\n description: \"Scroll up\",\n bindKey: bindKey(\"Ctrl-Up\", null),\n exec: function (e) { e.renderer.scrollBy(0, -2 * e.renderer.layerConfig.lineHeight); },\n readOnly: true\n }, {\n name: \"scrolldown\",\n description: \"Scroll down\",\n bindKey: bindKey(\"Ctrl-Down\", null),\n exec: function (e) { e.renderer.scrollBy(0, 2 * e.renderer.layerConfig.lineHeight); },\n readOnly: true\n }, {\n name: \"selectlinestart\",\n description: \"Select line start\",\n bindKey: \"Shift-Home\",\n exec: function (editor) { editor.getSelection().selectLineStart(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"selectlineend\",\n description: \"Select line end\",\n bindKey: \"Shift-End\",\n exec: function (editor) { editor.getSelection().selectLineEnd(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"togglerecording\",\n description: \"Toggle recording\",\n bindKey: bindKey(\"Ctrl-Alt-E\", \"Command-Option-E\"),\n exec: function (editor) { editor.commands.toggleRecording(editor); },\n readOnly: true\n }, {\n name: \"replaymacro\",\n description: \"Replay macro\",\n bindKey: bindKey(\"Ctrl-Shift-E\", \"Command-Shift-E\"),\n exec: function (editor) { editor.commands.replay(editor); },\n readOnly: true\n }, {\n name: \"jumptomatching\",\n description: \"Jump to matching\",\n bindKey: bindKey(\"Ctrl-\\\\|Ctrl-P\", \"Command-\\\\\"),\n exec: function (editor) { editor.jumpToMatching(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"animate\",\n readOnly: true\n }, {\n name: \"selecttomatching\",\n description: \"Select to matching\",\n bindKey: bindKey(\"Ctrl-Shift-\\\\|Ctrl-Shift-P\", \"Command-Shift-\\\\\"),\n exec: function (editor) { editor.jumpToMatching(true); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"animate\",\n readOnly: true\n }, {\n name: \"expandToMatching\",\n description: \"Expand to matching\",\n bindKey: bindKey(\"Ctrl-Shift-M\", \"Ctrl-Shift-M\"),\n exec: function (editor) { editor.jumpToMatching(true, true); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"animate\",\n readOnly: true\n }, {\n name: \"passKeysToBrowser\",\n description: \"Pass keys to browser\",\n bindKey: bindKey(null, null),\n exec: function () { },\n passEvent: true,\n readOnly: true\n }, {\n name: \"copy\",\n description: \"Copy\",\n exec: function (editor) {\n },\n readOnly: true\n },\n {\n name: \"cut\",\n description: \"Cut\",\n exec: function (editor) {\n var cutLine = editor.$copyWithEmptySelection && editor.selection.isEmpty();\n var range = cutLine ? editor.selection.getLineRange() : editor.selection.getRange();\n editor._emit(\"cut\", range);\n if (!range.isEmpty())\n editor.session.remove(range);\n editor.clearSelection();\n },\n scrollIntoView: \"cursor\",\n multiSelectAction: \"forEach\"\n }, {\n name: \"paste\",\n description: \"Paste\",\n exec: function (editor, args) {\n editor.$handlePaste(args);\n },\n scrollIntoView: \"cursor\"\n }, {\n name: \"removeline\",\n description: \"Remove line\",\n bindKey: bindKey(\"Ctrl-D\", \"Command-D\"),\n exec: function (editor) { editor.removeLines(); },\n scrollIntoView: \"cursor\",\n multiSelectAction: \"forEachLine\"\n }, {\n name: \"duplicateSelection\",\n description: \"Duplicate selection\",\n bindKey: bindKey(\"Ctrl-Shift-D\", \"Command-Shift-D\"),\n exec: function (editor) { editor.duplicateSelection(); },\n scrollIntoView: \"cursor\",\n multiSelectAction: \"forEach\"\n }, {\n name: \"sortlines\",\n description: \"Sort lines\",\n bindKey: bindKey(\"Ctrl-Alt-S\", \"Command-Alt-S\"),\n exec: function (editor) { editor.sortLines(); },\n scrollIntoView: \"selection\",\n multiSelectAction: \"forEachLine\"\n }, {\n name: \"togglecomment\",\n description: \"Toggle comment\",\n bindKey: bindKey(\"Ctrl-/\", \"Command-/\"),\n exec: function (editor) { editor.toggleCommentLines(); },\n multiSelectAction: \"forEachLine\",\n scrollIntoView: \"selectionPart\"\n }, {\n name: \"toggleBlockComment\",\n description: \"Toggle block comment\",\n bindKey: bindKey(\"Ctrl-Shift-/\", \"Command-Shift-/\"),\n exec: function (editor) { editor.toggleBlockComment(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"selectionPart\"\n }, {\n name: \"modifyNumberUp\",\n description: \"Modify number up\",\n bindKey: bindKey(\"Ctrl-Shift-Up\", \"Alt-Shift-Up\"),\n exec: function (editor) { editor.modifyNumber(1); },\n scrollIntoView: \"cursor\",\n multiSelectAction: \"forEach\"\n }, {\n name: \"modifyNumberDown\",\n description: \"Modify number down\",\n bindKey: bindKey(\"Ctrl-Shift-Down\", \"Alt-Shift-Down\"),\n exec: function (editor) { editor.modifyNumber(-1); },\n scrollIntoView: \"cursor\",\n multiSelectAction: \"forEach\"\n }, {\n name: \"replace\",\n description: \"Replace\",\n bindKey: bindKey(\"Ctrl-H\", \"Command-Option-F\"),\n exec: function (editor) {\n config.loadModule(\"ace/ext/searchbox\", function (e) { e.Search(editor, true); });\n }\n }, {\n name: \"undo\",\n description: \"Undo\",\n bindKey: bindKey(\"Ctrl-Z\", \"Command-Z\"),\n exec: function (editor) { editor.undo(); }\n }, {\n name: \"redo\",\n description: \"Redo\",\n bindKey: bindKey(\"Ctrl-Shift-Z|Ctrl-Y\", \"Command-Shift-Z|Command-Y\"),\n exec: function (editor) { editor.redo(); }\n }, {\n name: \"copylinesup\",\n description: \"Copy lines up\",\n bindKey: bindKey(\"Alt-Shift-Up\", \"Command-Option-Up\"),\n exec: function (editor) { editor.copyLinesUp(); },\n scrollIntoView: \"cursor\"\n }, {\n name: \"movelinesup\",\n description: \"Move lines up\",\n bindKey: bindKey(\"Alt-Up\", \"Option-Up\"),\n exec: function (editor) { editor.moveLinesUp(); },\n scrollIntoView: \"cursor\"\n }, {\n name: \"copylinesdown\",\n description: \"Copy lines down\",\n bindKey: bindKey(\"Alt-Shift-Down\", \"Command-Option-Down\"),\n exec: function (editor) { editor.copyLinesDown(); },\n scrollIntoView: \"cursor\"\n }, {\n name: \"movelinesdown\",\n description: \"Move lines down\",\n bindKey: bindKey(\"Alt-Down\", \"Option-Down\"),\n exec: function (editor) { editor.moveLinesDown(); },\n scrollIntoView: \"cursor\"\n }, {\n name: \"del\",\n description: \"Delete\",\n bindKey: bindKey(\"Delete\", \"Delete|Ctrl-D|Shift-Delete\"),\n exec: function (editor) { editor.remove(\"right\"); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"backspace\",\n description: \"Backspace\",\n bindKey: bindKey(\"Shift-Backspace|Backspace\", \"Ctrl-Backspace|Shift-Backspace|Backspace|Ctrl-H\"),\n exec: function (editor) { editor.remove(\"left\"); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"cut_or_delete\",\n description: \"Cut or delete\",\n bindKey: bindKey(\"Shift-Delete\", null),\n exec: function (editor) {\n if (editor.selection.isEmpty()) {\n editor.remove(\"left\");\n }\n else {\n return false;\n }\n },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"removetolinestart\",\n description: \"Remove to line start\",\n bindKey: bindKey(\"Alt-Backspace\", \"Command-Backspace\"),\n exec: function (editor) { editor.removeToLineStart(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"removetolineend\",\n description: \"Remove to line end\",\n bindKey: bindKey(\"Alt-Delete\", \"Ctrl-K|Command-Delete\"),\n exec: function (editor) { editor.removeToLineEnd(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"removetolinestarthard\",\n description: \"Remove to line start hard\",\n bindKey: bindKey(\"Ctrl-Shift-Backspace\", null),\n exec: function (editor) {\n var range = editor.selection.getRange();\n range.start.column = 0;\n editor.session.remove(range);\n },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"removetolineendhard\",\n description: \"Remove to line end hard\",\n bindKey: bindKey(\"Ctrl-Shift-Delete\", null),\n exec: function (editor) {\n var range = editor.selection.getRange();\n range.end.column = Number.MAX_VALUE;\n editor.session.remove(range);\n },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"removewordleft\",\n description: \"Remove word left\",\n bindKey: bindKey(\"Ctrl-Backspace\", \"Alt-Backspace|Ctrl-Alt-Backspace\"),\n exec: function (editor) { editor.removeWordLeft(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"removewordright\",\n description: \"Remove word right\",\n bindKey: bindKey(\"Ctrl-Delete\", \"Alt-Delete\"),\n exec: function (editor) { editor.removeWordRight(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"outdent\",\n description: \"Outdent\",\n bindKey: bindKey(\"Shift-Tab\", \"Shift-Tab\"),\n exec: function (editor) { editor.blockOutdent(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"selectionPart\"\n }, {\n name: \"indent\",\n description: \"Indent\",\n bindKey: bindKey(\"Tab\", \"Tab\"),\n exec: function (editor) { editor.indent(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"selectionPart\"\n }, {\n name: \"blockoutdent\",\n description: \"Block outdent\",\n bindKey: bindKey(\"Ctrl-[\", \"Ctrl-[\"),\n exec: function (editor) { editor.blockOutdent(); },\n multiSelectAction: \"forEachLine\",\n scrollIntoView: \"selectionPart\"\n }, {\n name: \"blockindent\",\n description: \"Block indent\",\n bindKey: bindKey(\"Ctrl-]\", \"Ctrl-]\"),\n exec: function (editor) { editor.blockIndent(); },\n multiSelectAction: \"forEachLine\",\n scrollIntoView: \"selectionPart\"\n }, {\n name: \"insertstring\",\n description: \"Insert string\",\n exec: function (editor, str) { editor.insert(str); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"inserttext\",\n description: \"Insert text\",\n exec: function (editor, args) {\n editor.insert(lang.stringRepeat(args.text || \"\", args.times || 1));\n },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"splitline\",\n description: \"Split line\",\n bindKey: bindKey(null, \"Ctrl-O\"),\n exec: function (editor) { editor.splitLine(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"transposeletters\",\n description: \"Transpose letters\",\n bindKey: bindKey(\"Alt-Shift-X\", \"Ctrl-T\"),\n exec: function (editor) { editor.transposeLetters(); },\n multiSelectAction: function (editor) { editor.transposeSelections(1); },\n scrollIntoView: \"cursor\"\n }, {\n name: \"touppercase\",\n description: \"To uppercase\",\n bindKey: bindKey(\"Ctrl-U\", \"Ctrl-U\"),\n exec: function (editor) { editor.toUpperCase(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"tolowercase\",\n description: \"To lowercase\",\n bindKey: bindKey(\"Ctrl-Shift-U\", \"Ctrl-Shift-U\"),\n exec: function (editor) { editor.toLowerCase(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"autoindent\",\n description: \"Auto Indent\",\n bindKey: bindKey(null, null),\n exec: function (editor) { editor.autoIndent(); },\n multiSelectAction: \"forEachLine\",\n scrollIntoView: \"animate\"\n }, {\n name: \"expandtoline\",\n description: \"Expand to line\",\n bindKey: bindKey(\"Ctrl-Shift-L\", \"Command-Shift-L\"),\n exec: function (editor) {\n var range = editor.selection.getRange();\n range.start.column = range.end.column = 0;\n range.end.row++;\n editor.selection.setRange(range, false);\n },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"openlink\",\n bindKey: bindKey(\"Ctrl+F3\", \"F3\"),\n exec: function (editor) { editor.openLink(); }\n }, {\n name: \"joinlines\",\n description: \"Join lines\",\n bindKey: bindKey(null, null),\n exec: function (editor) {\n var isBackwards = editor.selection.isBackwards();\n var selectionStart = isBackwards ? editor.selection.getSelectionLead() : editor.selection.getSelectionAnchor();\n var selectionEnd = isBackwards ? editor.selection.getSelectionAnchor() : editor.selection.getSelectionLead();\n var firstLineEndCol = editor.session.doc.getLine(selectionStart.row).length;\n var selectedText = editor.session.doc.getTextRange(editor.selection.getRange());\n var selectedCount = selectedText.replace(/\\n\\s*/, \" \").length;\n var insertLine = editor.session.doc.getLine(selectionStart.row);\n for (var i = selectionStart.row + 1; i <= selectionEnd.row + 1; i++) {\n var curLine = lang.stringTrimLeft(lang.stringTrimRight(editor.session.doc.getLine(i)));\n if (curLine.length !== 0) {\n curLine = \" \" + curLine;\n }\n insertLine += curLine;\n }\n if (selectionEnd.row + 1 < (editor.session.doc.getLength() - 1)) {\n insertLine += editor.session.doc.getNewLineCharacter();\n }\n editor.clearSelection();\n editor.session.doc.replace(new Range(selectionStart.row, 0, selectionEnd.row + 2, 0), insertLine);\n if (selectedCount > 0) {\n editor.selection.moveCursorTo(selectionStart.row, selectionStart.column);\n editor.selection.selectTo(selectionStart.row, selectionStart.column + selectedCount);\n }\n else {\n firstLineEndCol = editor.session.doc.getLine(selectionStart.row).length > firstLineEndCol ? (firstLineEndCol + 1) : firstLineEndCol;\n editor.selection.moveCursorTo(selectionStart.row, firstLineEndCol);\n }\n },\n multiSelectAction: \"forEach\",\n readOnly: true\n }, {\n name: \"invertSelection\",\n description: \"Invert selection\",\n bindKey: bindKey(null, null),\n exec: function (editor) {\n var endRow = editor.session.doc.getLength() - 1;\n var endCol = editor.session.doc.getLine(endRow).length;\n var ranges = editor.selection.rangeList.ranges;\n var newRanges = [];\n if (ranges.length < 1) {\n ranges = [editor.selection.getRange()];\n }\n for (var i = 0; i < ranges.length; i++) {\n if (i == (ranges.length - 1)) {\n if (!(ranges[i].end.row === endRow && ranges[i].end.column === endCol)) {\n newRanges.push(new Range(ranges[i].end.row, ranges[i].end.column, endRow, endCol));\n }\n }\n if (i === 0) {\n if (!(ranges[i].start.row === 0 && ranges[i].start.column === 0)) {\n newRanges.push(new Range(0, 0, ranges[i].start.row, ranges[i].start.column));\n }\n }\n else {\n newRanges.push(new Range(ranges[i - 1].end.row, ranges[i - 1].end.column, ranges[i].start.row, ranges[i].start.column));\n }\n }\n editor.exitMultiSelectMode();\n editor.clearSelection();\n for (var i = 0; i < newRanges.length; i++) {\n editor.selection.addRange(newRanges[i], false);\n }\n },\n readOnly: true,\n scrollIntoView: \"none\"\n }, {\n name: \"addLineAfter\",\n description: \"Add new line after the current line\",\n exec: function (editor) {\n editor.selection.clearSelection();\n editor.navigateLineEnd();\n editor.insert(\"\\n\");\n },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"addLineBefore\",\n description: \"Add new line before the current line\",\n exec: function (editor) {\n editor.selection.clearSelection();\n var cursor = editor.getCursorPosition();\n editor.selection.moveTo(cursor.row - 1, Number.MAX_VALUE);\n editor.insert(\"\\n\");\n if (cursor.row === 0)\n editor.navigateUp();\n },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"openCommandPallete\",\n exec: function (editor) {\n console.warn(\"This is an obsolete command. Please use `openCommandPalette` instead.\");\n editor.prompt({ $type: \"commands\" });\n },\n readOnly: true\n }, {\n name: \"openCommandPalette\",\n description: \"Open command palette\",\n bindKey: bindKey(\"F1\", \"F1\"),\n exec: function (editor) {\n editor.prompt({ $type: \"commands\" });\n },\n readOnly: true\n }, {\n name: \"modeSelect\",\n description: \"Change language mode...\",\n bindKey: bindKey(null, null),\n exec: function (editor) {\n editor.prompt({ $type: \"modes\" });\n },\n readOnly: true\n }];\nfor (var i = 1; i < 9; i++) {\n exports.commands.push({\n name: \"foldToLevel\" + i,\n description: \"Fold To Level \" + i,\n level: i,\n exec: function (editor) { editor.session.foldToLevel(this.level); },\n scrollIntoView: \"center\",\n readOnly: true\n });\n}\n\n});\n\nace.define(\"ace/line_widgets\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"], function(require, exports, module){\"use strict\";\nvar dom = require(\"./lib/dom\");\nvar LineWidgets = /** @class */ (function () {\n function LineWidgets(session) {\n this.session = session;\n this.session.widgetManager = this;\n this.session.getRowLength = this.getRowLength;\n this.session.$getWidgetScreenLength = this.$getWidgetScreenLength;\n this.updateOnChange = this.updateOnChange.bind(this);\n this.renderWidgets = this.renderWidgets.bind(this);\n this.measureWidgets = this.measureWidgets.bind(this);\n this.session._changedWidgets = [];\n this.$onChangeEditor = this.$onChangeEditor.bind(this);\n this.session.on(\"change\", this.updateOnChange);\n this.session.on(\"changeFold\", this.updateOnFold);\n this.session.on(\"changeEditor\", this.$onChangeEditor);\n }\n LineWidgets.prototype.getRowLength = function (row) {\n var h;\n if (this.lineWidgets)\n h = this.lineWidgets[row] && this.lineWidgets[row].rowCount || 0;\n else\n h = 0;\n if (!this.$useWrapMode || !this.$wrapData[row]) {\n return 1 + h;\n }\n else {\n return this.$wrapData[row].length + 1 + h;\n }\n };\n LineWidgets.prototype.$getWidgetScreenLength = function () {\n var screenRows = 0;\n this.lineWidgets.forEach(function (w) {\n if (w && w.rowCount && !w.hidden)\n screenRows += w.rowCount;\n });\n return screenRows;\n };\n LineWidgets.prototype.$onChangeEditor = function (e) {\n this.attach(e.editor);\n };\n LineWidgets.prototype.attach = function (editor) {\n if (editor && editor.widgetManager && editor.widgetManager != this)\n editor.widgetManager.detach();\n if (this.editor == editor)\n return;\n this.detach();\n this.editor = editor;\n if (editor) {\n editor.widgetManager = this;\n editor.renderer.on(\"beforeRender\", this.measureWidgets);\n editor.renderer.on(\"afterRender\", this.renderWidgets);\n }\n };\n LineWidgets.prototype.detach = function (e) {\n var editor = this.editor;\n if (!editor)\n return;\n this.editor = null;\n editor.widgetManager = null;\n editor.renderer.off(\"beforeRender\", this.measureWidgets);\n editor.renderer.off(\"afterRender\", this.renderWidgets);\n var lineWidgets = this.session.lineWidgets;\n lineWidgets && lineWidgets.forEach(function (w) {\n if (w && w.el && w.el.parentNode) {\n w._inDocument = false;\n w.el.parentNode.removeChild(w.el);\n }\n });\n };\n LineWidgets.prototype.updateOnFold = function (e, session) {\n var lineWidgets = session.lineWidgets;\n if (!lineWidgets || !e.action)\n return;\n var fold = e.data;\n var start = fold.start.row;\n var end = fold.end.row;\n var hide = e.action == \"add\";\n for (var i = start + 1; i < end; i++) {\n if (lineWidgets[i])\n lineWidgets[i].hidden = hide;\n }\n if (lineWidgets[end]) {\n if (hide) {\n if (!lineWidgets[start])\n lineWidgets[start] = lineWidgets[end];\n else\n lineWidgets[end].hidden = hide;\n }\n else {\n if (lineWidgets[start] == lineWidgets[end])\n lineWidgets[start] = undefined;\n lineWidgets[end].hidden = hide;\n }\n }\n };\n LineWidgets.prototype.updateOnChange = function (delta) {\n var lineWidgets = this.session.lineWidgets;\n if (!lineWidgets)\n return;\n var startRow = delta.start.row;\n var len = delta.end.row - startRow;\n if (len === 0) {\n }\n else if (delta.action == \"remove\") {\n var removed = lineWidgets.splice(startRow + 1, len);\n if (!lineWidgets[startRow] && removed[removed.length - 1]) {\n lineWidgets[startRow] = removed.pop();\n }\n removed.forEach(function (w) {\n w && this.removeLineWidget(w);\n }, this);\n this.$updateRows();\n }\n else {\n var args = new Array(len);\n if (lineWidgets[startRow] && lineWidgets[startRow].column != null) {\n if (delta.start.column > lineWidgets[startRow].column)\n startRow++;\n }\n args.unshift(startRow, 0);\n lineWidgets.splice.apply(lineWidgets, args);\n this.$updateRows();\n }\n };\n LineWidgets.prototype.$updateRows = function () {\n var lineWidgets = this.session.lineWidgets;\n if (!lineWidgets)\n return;\n var noWidgets = true;\n lineWidgets.forEach(function (w, i) {\n if (w) {\n noWidgets = false;\n w.row = i;\n while (w.$oldWidget) {\n w.$oldWidget.row = i;\n w = w.$oldWidget;\n }\n }\n });\n if (noWidgets)\n this.session.lineWidgets = null;\n };\n LineWidgets.prototype.$registerLineWidget = function (w) {\n if (!this.session.lineWidgets)\n this.session.lineWidgets = new Array(this.session.getLength());\n var old = this.session.lineWidgets[w.row];\n if (old) {\n w.$oldWidget = old;\n if (old.el && old.el.parentNode) {\n old.el.parentNode.removeChild(old.el);\n old._inDocument = false;\n }\n }\n this.session.lineWidgets[w.row] = w;\n return w;\n };\n LineWidgets.prototype.addLineWidget = function (w) {\n this.$registerLineWidget(w);\n w.session = this.session;\n if (!this.editor)\n return w;\n var renderer = this.editor.renderer;\n if (w.html && !w.el) {\n w.el = dom.createElement(\"div\");\n w.el.innerHTML = w.html;\n }\n if (w.text && !w.el) {\n w.el = dom.createElement(\"div\");\n w.el.textContent = w.text;\n }\n if (w.el) {\n dom.addCssClass(w.el, \"ace_lineWidgetContainer\");\n if (w.className) {\n dom.addCssClass(w.el, w.className);\n }\n w.el.style.position = \"absolute\";\n w.el.style.zIndex = 5;\n renderer.container.appendChild(w.el);\n w._inDocument = true;\n if (!w.coverGutter) {\n w.el.style.zIndex = 3;\n }\n if (w.pixelHeight == null) {\n w.pixelHeight = w.el.offsetHeight;\n }\n }\n if (w.rowCount == null) {\n w.rowCount = w.pixelHeight / renderer.layerConfig.lineHeight;\n }\n var fold = this.session.getFoldAt(w.row, 0);\n w.$fold = fold;\n if (fold) {\n var lineWidgets = this.session.lineWidgets;\n if (w.row == fold.end.row && !lineWidgets[fold.start.row])\n lineWidgets[fold.start.row] = w;\n else\n w.hidden = true;\n }\n this.session._emit(\"changeFold\", { data: { start: { row: w.row } } });\n this.$updateRows();\n this.renderWidgets(null, renderer);\n this.onWidgetChanged(w);\n return w;\n };\n LineWidgets.prototype.removeLineWidget = function (w) {\n w._inDocument = false;\n w.session = null;\n if (w.el && w.el.parentNode)\n w.el.parentNode.removeChild(w.el);\n if (w.editor && w.editor.destroy)\n try {\n w.editor.destroy();\n }\n catch (e) { }\n if (this.session.lineWidgets) {\n var w1 = this.session.lineWidgets[w.row];\n if (w1 == w) {\n this.session.lineWidgets[w.row] = w.$oldWidget;\n if (w.$oldWidget)\n this.onWidgetChanged(w.$oldWidget);\n }\n else {\n while (w1) {\n if (w1.$oldWidget == w) {\n w1.$oldWidget = w.$oldWidget;\n break;\n }\n w1 = w1.$oldWidget;\n }\n }\n }\n this.session._emit(\"changeFold\", { data: { start: { row: w.row } } });\n this.$updateRows();\n };\n LineWidgets.prototype.getWidgetsAtRow = function (row) {\n var lineWidgets = this.session.lineWidgets;\n var w = lineWidgets && lineWidgets[row];\n var list = [];\n while (w) {\n list.push(w);\n w = w.$oldWidget;\n }\n return list;\n };\n LineWidgets.prototype.onWidgetChanged = function (w) {\n this.session._changedWidgets.push(w);\n this.editor && this.editor.renderer.updateFull();\n };\n LineWidgets.prototype.measureWidgets = function (e, renderer) {\n var changedWidgets = this.session._changedWidgets;\n var config = renderer.layerConfig;\n if (!changedWidgets || !changedWidgets.length)\n return;\n var min = Infinity;\n for (var i = 0; i < changedWidgets.length; i++) {\n var w = changedWidgets[i];\n if (!w || !w.el)\n continue;\n if (w.session != this.session)\n continue;\n if (!w._inDocument) {\n if (this.session.lineWidgets[w.row] != w)\n continue;\n w._inDocument = true;\n renderer.container.appendChild(w.el);\n }\n w.h = w.el.offsetHeight;\n if (!w.fixedWidth) {\n w.w = w.el.offsetWidth;\n w.screenWidth = Math.ceil(w.w / config.characterWidth);\n }\n var rowCount = w.h / config.lineHeight;\n if (w.coverLine) {\n rowCount -= this.session.getRowLineCount(w.row);\n if (rowCount < 0)\n rowCount = 0;\n }\n if (w.rowCount != rowCount) {\n w.rowCount = rowCount;\n if (w.row < min)\n min = w.row;\n }\n }\n if (min != Infinity) {\n this.session._emit(\"changeFold\", { data: { start: { row: min } } });\n this.session.lineWidgetWidth = null;\n }\n this.session._changedWidgets = [];\n };\n LineWidgets.prototype.renderWidgets = function (e, renderer) {\n var config = renderer.layerConfig;\n var lineWidgets = this.session.lineWidgets;\n if (!lineWidgets)\n return;\n var first = Math.min(this.firstRow, config.firstRow);\n var last = Math.max(this.lastRow, config.lastRow, lineWidgets.length);\n while (first > 0 && !lineWidgets[first])\n first--;\n this.firstRow = config.firstRow;\n this.lastRow = config.lastRow;\n renderer.$cursorLayer.config = config;\n for (var i = first; i <= last; i++) {\n var w = lineWidgets[i];\n if (!w || !w.el)\n continue;\n if (w.hidden) {\n w.el.style.top = -100 - (w.pixelHeight || 0) + \"px\";\n continue;\n }\n if (!w._inDocument) {\n w._inDocument = true;\n renderer.container.appendChild(w.el);\n }\n var top = renderer.$cursorLayer.getPixelPosition({ row: i, column: 0 }, true).top;\n if (!w.coverLine)\n top += config.lineHeight * this.session.getRowLineCount(w.row);\n w.el.style.top = top - config.offset + \"px\";\n var left = w.coverGutter ? 0 : renderer.gutterWidth;\n if (!w.fixedWidth)\n left -= renderer.scrollLeft;\n w.el.style.left = left + \"px\";\n if (w.fullWidth && w.screenWidth) {\n w.el.style.minWidth = config.width + 2 * config.padding + \"px\";\n }\n if (w.fixedWidth) {\n w.el.style.right = renderer.scrollBar.getWidth() + \"px\";\n }\n else {\n w.el.style.right = \"\";\n }\n }\n };\n return LineWidgets;\n}());\nexports.LineWidgets = LineWidgets;\n\n});\n\nace.define(\"ace/keyboard/gutter_handler\",[\"require\",\"exports\",\"module\",\"ace/lib/keys\",\"ace/mouse/default_gutter_handler\"], function(require, exports, module){\"use strict\";\nvar keys = require('../lib/keys');\nvar GutterTooltip = require(\"../mouse/default_gutter_handler\").GutterTooltip;\nvar GutterKeyboardHandler = /** @class */ (function () {\n function GutterKeyboardHandler(editor) {\n this.editor = editor;\n this.gutterLayer = editor.renderer.$gutterLayer;\n this.element = editor.renderer.$gutter;\n this.lines = editor.renderer.$gutterLayer.$lines;\n this.activeRowIndex = null;\n this.activeLane = null;\n this.annotationTooltip = new GutterTooltip(this.editor);\n }\n GutterKeyboardHandler.prototype.addListener = function () {\n this.element.addEventListener(\"keydown\", this.$onGutterKeyDown.bind(this));\n this.element.addEventListener(\"focusout\", this.$blurGutter.bind(this));\n this.editor.on(\"mousewheel\", this.$blurGutter.bind(this));\n };\n GutterKeyboardHandler.prototype.removeListener = function () {\n this.element.removeEventListener(\"keydown\", this.$onGutterKeyDown.bind(this));\n this.element.removeEventListener(\"focusout\", this.$blurGutter.bind(this));\n this.editor.off(\"mousewheel\", this.$blurGutter.bind(this));\n };\n GutterKeyboardHandler.prototype.$onGutterKeyDown = function (e) {\n if (this.annotationTooltip.isOpen) {\n e.preventDefault();\n if (e.keyCode === keys[\"escape\"])\n this.annotationTooltip.hideTooltip();\n return;\n }\n if (e.target === this.element) {\n if (e.keyCode != keys[\"enter\"]) {\n return;\n }\n e.preventDefault();\n var row = this.editor.getCursorPosition().row;\n if (!this.editor.isRowVisible(row))\n this.editor.scrollToLine(row, true, true);\n setTimeout(function () {\n var index = this.$rowToRowIndex(this.gutterLayer.$cursorCell.row);\n var nearestFoldIndex = this.$findNearestFoldWidget(index);\n var nearestAnnotationIndex = this.$findNearestAnnotation(index);\n if (nearestFoldIndex === null && nearestAnnotationIndex === null)\n return;\n if (nearestFoldIndex === null && nearestAnnotationIndex !== null) {\n this.activeRowIndex = nearestAnnotationIndex;\n this.activeLane = \"annotation\";\n this.$focusAnnotation(this.activeRowIndex);\n return;\n }\n if (nearestFoldIndex !== null && nearestAnnotationIndex === null) {\n this.activeRowIndex = nearestFoldIndex;\n this.activeLane = \"fold\";\n this.$focusFoldWidget(this.activeRowIndex);\n return;\n }\n if (Math.abs(nearestAnnotationIndex - index) < Math.abs(nearestFoldIndex - index)) {\n this.activeRowIndex = nearestAnnotationIndex;\n this.activeLane = \"annotation\";\n this.$focusAnnotation(this.activeRowIndex);\n return;\n }\n else {\n this.activeRowIndex = nearestFoldIndex;\n this.activeLane = \"fold\";\n this.$focusFoldWidget(this.activeRowIndex);\n return;\n }\n }.bind(this), 10);\n return;\n }\n this.$handleGutterKeyboardInteraction(e);\n setTimeout(function () {\n this.editor._signal(\"gutterkeydown\", new GutterKeyboardEvent(e, this));\n }.bind(this), 10);\n };\n GutterKeyboardHandler.prototype.$handleGutterKeyboardInteraction = function (e) {\n if (e.keyCode === keys[\"tab\"]) {\n e.preventDefault();\n return;\n }\n if (e.keyCode === keys[\"escape\"]) {\n e.preventDefault();\n this.$blurGutter();\n this.element.focus();\n this.lane = null;\n return;\n }\n if (e.keyCode === keys[\"up\"]) {\n e.preventDefault();\n switch (this.activeLane) {\n case \"fold\":\n this.$moveFoldWidgetUp();\n break;\n case \"annotation\":\n this.$moveAnnotationUp();\n break;\n }\n return;\n }\n if (e.keyCode === keys[\"down\"]) {\n e.preventDefault();\n switch (this.activeLane) {\n case \"fold\":\n this.$moveFoldWidgetDown();\n break;\n case \"annotation\":\n this.$moveAnnotationDown();\n break;\n }\n return;\n }\n if (e.keyCode === keys[\"left\"]) {\n e.preventDefault();\n this.$switchLane(\"annotation\");\n return;\n }\n if (e.keyCode === keys[\"right\"]) {\n e.preventDefault();\n this.$switchLane(\"fold\");\n return;\n }\n if (e.keyCode === keys[\"enter\"] || e.keyCode === keys[\"space\"]) {\n e.preventDefault();\n switch (this.activeLane) {\n case \"fold\":\n if (this.gutterLayer.session.foldWidgets[this.$rowIndexToRow(this.activeRowIndex)] === 'start') {\n var rowFoldingWidget = this.$rowIndexToRow(this.activeRowIndex);\n this.editor.session.onFoldWidgetClick(this.$rowIndexToRow(this.activeRowIndex), e);\n setTimeout(function () {\n if (this.$rowIndexToRow(this.activeRowIndex) !== rowFoldingWidget) {\n this.$blurFoldWidget(this.activeRowIndex);\n this.activeRowIndex = this.$rowToRowIndex(rowFoldingWidget);\n this.$focusFoldWidget(this.activeRowIndex);\n }\n }.bind(this), 10);\n break;\n }\n else if (this.gutterLayer.session.foldWidgets[this.$rowIndexToRow(this.activeRowIndex)] === 'end') {\n break;\n }\n return;\n case \"annotation\":\n var gutterElement = this.lines.cells[this.activeRowIndex].element.childNodes[2];\n var rect = gutterElement.getBoundingClientRect();\n var style = this.annotationTooltip.getElement().style;\n style.left = rect.right + \"px\";\n style.top = rect.bottom + \"px\";\n this.annotationTooltip.showTooltip(this.$rowIndexToRow(this.activeRowIndex));\n break;\n }\n return;\n }\n };\n GutterKeyboardHandler.prototype.$blurGutter = function () {\n if (this.activeRowIndex !== null) {\n switch (this.activeLane) {\n case \"fold\":\n this.$blurFoldWidget(this.activeRowIndex);\n break;\n case \"annotation\":\n this.$blurAnnotation(this.activeRowIndex);\n break;\n }\n }\n if (this.annotationTooltip.isOpen)\n this.annotationTooltip.hideTooltip();\n return;\n };\n GutterKeyboardHandler.prototype.$isFoldWidgetVisible = function (index) {\n var isRowFullyVisible = this.editor.isRowFullyVisible(this.$rowIndexToRow(index));\n var isIconVisible = this.$getFoldWidget(index).style.display !== \"none\";\n return isRowFullyVisible && isIconVisible;\n };\n GutterKeyboardHandler.prototype.$isAnnotationVisible = function (index) {\n var isRowFullyVisible = this.editor.isRowFullyVisible(this.$rowIndexToRow(index));\n var isIconVisible = this.$getAnnotation(index).style.display !== \"none\";\n return isRowFullyVisible && isIconVisible;\n };\n GutterKeyboardHandler.prototype.$getFoldWidget = function (index) {\n var cell = this.lines.get(index);\n var element = cell.element;\n return element.childNodes[1];\n };\n GutterKeyboardHandler.prototype.$getAnnotation = function (index) {\n var cell = this.lines.get(index);\n var element = cell.element;\n return element.childNodes[2];\n };\n GutterKeyboardHandler.prototype.$findNearestFoldWidget = function (index) {\n if (this.$isFoldWidgetVisible(index))\n return index;\n var i = 0;\n while (index - i > 0 || index + i < this.lines.getLength() - 1) {\n i++;\n if (index - i >= 0 && this.$isFoldWidgetVisible(index - i))\n return index - i;\n if (index + i <= this.lines.getLength() - 1 && this.$isFoldWidgetVisible(index + i))\n return index + i;\n }\n return null;\n };\n GutterKeyboardHandler.prototype.$findNearestAnnotation = function (index) {\n if (this.$isAnnotationVisible(index))\n return index;\n var i = 0;\n while (index - i > 0 || index + i < this.lines.getLength() - 1) {\n i++;\n if (index - i >= 0 && this.$isAnnotationVisible(index - i))\n return index - i;\n if (index + i <= this.lines.getLength() - 1 && this.$isAnnotationVisible(index + i))\n return index + i;\n }\n return null;\n };\n GutterKeyboardHandler.prototype.$focusFoldWidget = function (index) {\n if (index == null)\n return;\n var foldWidget = this.$getFoldWidget(index);\n foldWidget.classList.add(this.editor.renderer.keyboardFocusClassName);\n foldWidget.focus();\n };\n GutterKeyboardHandler.prototype.$focusAnnotation = function (index) {\n if (index == null)\n return;\n var annotation = this.$getAnnotation(index);\n annotation.classList.add(this.editor.renderer.keyboardFocusClassName);\n annotation.focus();\n };\n GutterKeyboardHandler.prototype.$blurFoldWidget = function (index) {\n var foldWidget = this.$getFoldWidget(index);\n foldWidget.classList.remove(this.editor.renderer.keyboardFocusClassName);\n foldWidget.blur();\n };\n GutterKeyboardHandler.prototype.$blurAnnotation = function (index) {\n var annotation = this.$getAnnotation(index);\n annotation.classList.remove(this.editor.renderer.keyboardFocusClassName);\n annotation.blur();\n };\n GutterKeyboardHandler.prototype.$moveFoldWidgetUp = function () {\n var index = this.activeRowIndex;\n while (index > 0) {\n index--;\n if (this.$isFoldWidgetVisible(index)) {\n this.$blurFoldWidget(this.activeRowIndex);\n this.activeRowIndex = index;\n this.$focusFoldWidget(this.activeRowIndex);\n return;\n }\n }\n return;\n };\n GutterKeyboardHandler.prototype.$moveFoldWidgetDown = function () {\n var index = this.activeRowIndex;\n while (index < this.lines.getLength() - 1) {\n index++;\n if (this.$isFoldWidgetVisible(index)) {\n this.$blurFoldWidget(this.activeRowIndex);\n this.activeRowIndex = index;\n this.$focusFoldWidget(this.activeRowIndex);\n return;\n }\n }\n return;\n };\n GutterKeyboardHandler.prototype.$moveAnnotationUp = function () {\n var index = this.activeRowIndex;\n while (index > 0) {\n index--;\n if (this.$isAnnotationVisible(index)) {\n this.$blurAnnotation(this.activeRowIndex);\n this.activeRowIndex = index;\n this.$focusAnnotation(this.activeRowIndex);\n return;\n }\n }\n return;\n };\n GutterKeyboardHandler.prototype.$moveAnnotationDown = function () {\n var index = this.activeRowIndex;\n while (index < this.lines.getLength() - 1) {\n index++;\n if (this.$isAnnotationVisible(index)) {\n this.$blurAnnotation(this.activeRowIndex);\n this.activeRowIndex = index;\n this.$focusAnnotation(this.activeRowIndex);\n return;\n }\n }\n return;\n };\n GutterKeyboardHandler.prototype.$switchLane = function (desinationLane) {\n switch (desinationLane) {\n case \"annotation\":\n if (this.activeLane === \"annotation\") {\n break;\n }\n var annotationIndex = this.$findNearestAnnotation(this.activeRowIndex);\n if (annotationIndex == null) {\n break;\n }\n this.activeLane = \"annotation\";\n this.$blurFoldWidget(this.activeRowIndex);\n this.activeRowIndex = annotationIndex;\n this.$focusAnnotation(this.activeRowIndex);\n break;\n case \"fold\":\n if (this.activeLane === \"fold\") {\n break;\n }\n var foldWidgetIndex = this.$findNearestFoldWidget(this.activeRowIndex);\n if (foldWidgetIndex == null) {\n break;\n }\n this.activeLane = \"fold\";\n this.$blurAnnotation(this.activeRowIndex);\n this.activeRowIndex = foldWidgetIndex;\n this.$focusFoldWidget(this.activeRowIndex);\n break;\n }\n return;\n };\n GutterKeyboardHandler.prototype.$rowIndexToRow = function (index) {\n var cell = this.lines.get(index);\n if (cell)\n return cell.row;\n return null;\n };\n GutterKeyboardHandler.prototype.$rowToRowIndex = function (row) {\n for (var i = 0; i < this.lines.getLength(); i++) {\n var cell = this.lines.get(i);\n if (cell.row == row)\n return i;\n }\n return null;\n };\n return GutterKeyboardHandler;\n}());\nexports.GutterKeyboardHandler = GutterKeyboardHandler;\nvar GutterKeyboardEvent = /** @class */ (function () {\n function GutterKeyboardEvent(domEvent, gutterKeyboardHandler) {\n this.gutterKeyboardHandler = gutterKeyboardHandler;\n this.domEvent = domEvent;\n }\n GutterKeyboardEvent.prototype.getKey = function () {\n return keys.keyCodeToString(this.domEvent.keyCode);\n };\n GutterKeyboardEvent.prototype.getRow = function () {\n return this.gutterKeyboardHandler.$rowIndexToRow(this.gutterKeyboardHandler.activeRowIndex);\n };\n GutterKeyboardEvent.prototype.isInAnnotationLane = function () {\n return this.gutterKeyboardHandler.activeLane === \"annotation\";\n };\n GutterKeyboardEvent.prototype.isInFoldLane = function () {\n return this.gutterKeyboardHandler.activeLane === \"fold\";\n };\n return GutterKeyboardEvent;\n}());\nexports.GutterKeyboardEvent = GutterKeyboardEvent;\n\n});\n\nace.define(\"ace/editor\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/dom\",\"ace/lib/lang\",\"ace/lib/useragent\",\"ace/keyboard/textinput\",\"ace/mouse/mouse_handler\",\"ace/mouse/fold_handler\",\"ace/keyboard/keybinding\",\"ace/edit_session\",\"ace/search\",\"ace/range\",\"ace/lib/event_emitter\",\"ace/commands/command_manager\",\"ace/commands/default_commands\",\"ace/config\",\"ace/token_iterator\",\"ace/line_widgets\",\"ace/keyboard/gutter_handler\",\"ace/config\",\"ace/clipboard\",\"ace/lib/keys\"], function(require, exports, module){\"use strict\";\nvar __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar oop = require(\"./lib/oop\");\nvar dom = require(\"./lib/dom\");\nvar lang = require(\"./lib/lang\");\nvar useragent = require(\"./lib/useragent\");\nvar TextInput = require(\"./keyboard/textinput\").TextInput;\nvar MouseHandler = require(\"./mouse/mouse_handler\").MouseHandler;\nvar FoldHandler = require(\"./mouse/fold_handler\").FoldHandler;\nvar KeyBinding = require(\"./keyboard/keybinding\").KeyBinding;\nvar EditSession = require(\"./edit_session\").EditSession;\nvar Search = require(\"./search\").Search;\nvar Range = require(\"./range\").Range;\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar CommandManager = require(\"./commands/command_manager\").CommandManager;\nvar defaultCommands = require(\"./commands/default_commands\").commands;\nvar config = require(\"./config\");\nvar TokenIterator = require(\"./token_iterator\").TokenIterator;\nvar LineWidgets = require(\"./line_widgets\").LineWidgets;\nvar GutterKeyboardHandler = require(\"./keyboard/gutter_handler\").GutterKeyboardHandler;\nvar nls = require(\"./config\").nls;\nvar clipboard = require(\"./clipboard\");\nvar keys = require('./lib/keys');\nvar Editor = /** @class */ (function () {\n function Editor(renderer, session, options) {\n this.$toDestroy = [];\n var container = renderer.getContainerElement();\n this.container = container;\n this.renderer = renderer;\n this.id = \"editor\" + (++Editor.$uid);\n this.commands = new CommandManager(useragent.isMac ? \"mac\" : \"win\", defaultCommands);\n if (typeof document == \"object\") {\n this.textInput = new TextInput(renderer.getTextAreaContainer(), this);\n this.renderer.textarea = this.textInput.getElement();\n this.$mouseHandler = new MouseHandler(this);\n new FoldHandler(this);\n }\n this.keyBinding = new KeyBinding(this);\n this.$search = new Search().set({\n wrap: true\n });\n this.$historyTracker = this.$historyTracker.bind(this);\n this.commands.on(\"exec\", this.$historyTracker);\n this.$initOperationListeners();\n this._$emitInputEvent = lang.delayedCall(function () {\n this._signal(\"input\", {});\n if (this.session && !this.session.destroyed)\n this.session.bgTokenizer.scheduleStart();\n }.bind(this));\n this.on(\"change\", function (_, _self) {\n _self._$emitInputEvent.schedule(31);\n });\n this.setSession(session || options && options.session || new EditSession(\"\"));\n config.resetOptions(this);\n if (options)\n this.setOptions(options);\n config._signal(\"editor\", this);\n }\n Editor.prototype.$initOperationListeners = function () {\n this.commands.on(\"exec\", this.startOperation.bind(this), true);\n this.commands.on(\"afterExec\", this.endOperation.bind(this), true);\n this.$opResetTimer = lang.delayedCall(this.endOperation.bind(this, true));\n this.on(\"change\", function () {\n if (!this.curOp) {\n this.startOperation();\n this.curOp.selectionBefore = this.$lastSel;\n }\n this.curOp.docChanged = true;\n }.bind(this), true);\n this.on(\"changeSelection\", function () {\n if (!this.curOp) {\n this.startOperation();\n this.curOp.selectionBefore = this.$lastSel;\n }\n this.curOp.selectionChanged = true;\n }.bind(this), true);\n };\n Editor.prototype.startOperation = function (commandEvent) {\n if (this.curOp) {\n if (!commandEvent || this.curOp.command)\n return;\n this.prevOp = this.curOp;\n }\n if (!commandEvent) {\n this.previousCommand = null;\n commandEvent = {};\n }\n this.$opResetTimer.schedule();\n this.curOp = this.session.curOp = {\n command: commandEvent.command || {},\n args: commandEvent.args,\n scrollTop: this.renderer.scrollTop\n };\n this.curOp.selectionBefore = this.selection.toJSON();\n };\n Editor.prototype.endOperation = function (e) {\n if (this.curOp && this.session) {\n if (e && e.returnValue === false || !this.session)\n return (this.curOp = null);\n if (e == true && this.curOp.command && this.curOp.command.name == \"mouse\")\n return;\n this._signal(\"beforeEndOperation\");\n if (!this.curOp)\n return;\n var command = this.curOp.command;\n var scrollIntoView = command && command.scrollIntoView;\n if (scrollIntoView) {\n switch (scrollIntoView) {\n case \"center-animate\":\n scrollIntoView = \"animate\";\n case \"center\":\n this.renderer.scrollCursorIntoView(null, 0.5);\n break;\n case \"animate\":\n case \"cursor\":\n this.renderer.scrollCursorIntoView();\n break;\n case \"selectionPart\":\n var range = this.selection.getRange();\n var config = this.renderer.layerConfig;\n if (range.start.row >= config.lastRow || range.end.row <= config.firstRow) {\n this.renderer.scrollSelectionIntoView(this.selection.anchor, this.selection.lead);\n }\n break;\n default:\n break;\n }\n if (scrollIntoView == \"animate\")\n this.renderer.animateScrolling(this.curOp.scrollTop);\n }\n var sel = this.selection.toJSON();\n this.curOp.selectionAfter = sel;\n this.$lastSel = this.selection.toJSON();\n this.session.getUndoManager().addSelection(sel);\n this.prevOp = this.curOp;\n this.curOp = null;\n }\n };\n Editor.prototype.$historyTracker = function (e) {\n if (!this.$mergeUndoDeltas)\n return;\n var prev = this.prevOp;\n var mergeableCommands = this.$mergeableCommands;\n var shouldMerge = prev.command && (e.command.name == prev.command.name);\n if (e.command.name == \"insertstring\") {\n var text = e.args;\n if (this.mergeNextCommand === undefined)\n this.mergeNextCommand = true;\n shouldMerge = shouldMerge\n && this.mergeNextCommand // previous command allows to coalesce with\n && (!/\\s/.test(text) || /\\s/.test(prev.args)); // previous insertion was of same type\n this.mergeNextCommand = true;\n }\n else {\n shouldMerge = shouldMerge\n && mergeableCommands.indexOf(e.command.name) !== -1; // the command is mergeable\n }\n if (this.$mergeUndoDeltas != \"always\"\n && Date.now() - this.sequenceStartTime > 2000) {\n shouldMerge = false; // the sequence is too long\n }\n if (shouldMerge)\n this.session.mergeUndoDeltas = true;\n else if (mergeableCommands.indexOf(e.command.name) !== -1)\n this.sequenceStartTime = Date.now();\n };\n Editor.prototype.setKeyboardHandler = function (keyboardHandler, cb) {\n if (keyboardHandler && typeof keyboardHandler === \"string\" && keyboardHandler != \"ace\") {\n this.$keybindingId = keyboardHandler;\n var _self = this;\n config.loadModule([\"keybinding\", keyboardHandler], function (module) {\n if (_self.$keybindingId == keyboardHandler)\n _self.keyBinding.setKeyboardHandler(module && module.handler);\n cb && cb();\n });\n }\n else {\n this.$keybindingId = null;\n this.keyBinding.setKeyboardHandler(keyboardHandler);\n cb && cb();\n }\n };\n Editor.prototype.getKeyboardHandler = function () {\n return this.keyBinding.getKeyboardHandler();\n };\n Editor.prototype.setSession = function (session) {\n if (this.session == session)\n return;\n if (this.curOp)\n this.endOperation();\n this.curOp = {};\n var oldSession = this.session;\n if (oldSession) {\n this.session.off(\"change\", this.$onDocumentChange);\n this.session.off(\"changeMode\", this.$onChangeMode);\n this.session.off(\"tokenizerUpdate\", this.$onTokenizerUpdate);\n this.session.off(\"changeTabSize\", this.$onChangeTabSize);\n this.session.off(\"changeWrapLimit\", this.$onChangeWrapLimit);\n this.session.off(\"changeWrapMode\", this.$onChangeWrapMode);\n this.session.off(\"changeFold\", this.$onChangeFold);\n this.session.off(\"changeFrontMarker\", this.$onChangeFrontMarker);\n this.session.off(\"changeBackMarker\", this.$onChangeBackMarker);\n this.session.off(\"changeBreakpoint\", this.$onChangeBreakpoint);\n this.session.off(\"changeAnnotation\", this.$onChangeAnnotation);\n this.session.off(\"changeOverwrite\", this.$onCursorChange);\n this.session.off(\"changeScrollTop\", this.$onScrollTopChange);\n this.session.off(\"changeScrollLeft\", this.$onScrollLeftChange);\n var selection = this.session.getSelection();\n selection.off(\"changeCursor\", this.$onCursorChange);\n selection.off(\"changeSelection\", this.$onSelectionChange);\n }\n this.session = session;\n if (session) {\n this.$onDocumentChange = this.onDocumentChange.bind(this);\n session.on(\"change\", this.$onDocumentChange);\n this.renderer.setSession(session);\n this.$onChangeMode = this.onChangeMode.bind(this);\n session.on(\"changeMode\", this.$onChangeMode);\n this.$onTokenizerUpdate = this.onTokenizerUpdate.bind(this);\n session.on(\"tokenizerUpdate\", this.$onTokenizerUpdate);\n this.$onChangeTabSize = this.renderer.onChangeTabSize.bind(this.renderer);\n session.on(\"changeTabSize\", this.$onChangeTabSize);\n this.$onChangeWrapLimit = this.onChangeWrapLimit.bind(this);\n session.on(\"changeWrapLimit\", this.$onChangeWrapLimit);\n this.$onChangeWrapMode = this.onChangeWrapMode.bind(this);\n session.on(\"changeWrapMode\", this.$onChangeWrapMode);\n this.$onChangeFold = this.onChangeFold.bind(this);\n session.on(\"changeFold\", this.$onChangeFold);\n this.$onChangeFrontMarker = this.onChangeFrontMarker.bind(this);\n this.session.on(\"changeFrontMarker\", this.$onChangeFrontMarker);\n this.$onChangeBackMarker = this.onChangeBackMarker.bind(this);\n this.session.on(\"changeBackMarker\", this.$onChangeBackMarker);\n this.$onChangeBreakpoint = this.onChangeBreakpoint.bind(this);\n this.session.on(\"changeBreakpoint\", this.$onChangeBreakpoint);\n this.$onChangeAnnotation = this.onChangeAnnotation.bind(this);\n this.session.on(\"changeAnnotation\", this.$onChangeAnnotation);\n this.$onCursorChange = this.onCursorChange.bind(this);\n this.session.on(\"changeOverwrite\", this.$onCursorChange);\n this.$onScrollTopChange = this.onScrollTopChange.bind(this);\n this.session.on(\"changeScrollTop\", this.$onScrollTopChange);\n this.$onScrollLeftChange = this.onScrollLeftChange.bind(this);\n this.session.on(\"changeScrollLeft\", this.$onScrollLeftChange);\n this.selection = session.getSelection();\n this.selection.on(\"changeCursor\", this.$onCursorChange);\n this.$onSelectionChange = this.onSelectionChange.bind(this);\n this.selection.on(\"changeSelection\", this.$onSelectionChange);\n this.onChangeMode();\n this.onCursorChange();\n this.onScrollTopChange();\n this.onScrollLeftChange();\n this.onSelectionChange();\n this.onChangeFrontMarker();\n this.onChangeBackMarker();\n this.onChangeBreakpoint();\n this.onChangeAnnotation();\n this.session.getUseWrapMode() && this.renderer.adjustWrapLimit();\n this.renderer.updateFull();\n }\n else {\n this.selection = null;\n this.renderer.setSession(session);\n }\n this._signal(\"changeSession\", {\n session: session,\n oldSession: oldSession\n });\n this.curOp = null;\n oldSession && oldSession._signal(\"changeEditor\", { oldEditor: this });\n session && session._signal(\"changeEditor\", { editor: this });\n if (session && !session.destroyed)\n session.bgTokenizer.scheduleStart();\n };\n Editor.prototype.getSession = function () {\n return this.session;\n };\n Editor.prototype.setValue = function (val, cursorPos) {\n this.session.doc.setValue(val);\n if (!cursorPos)\n this.selectAll();\n else if (cursorPos == 1)\n this.navigateFileEnd();\n else if (cursorPos == -1)\n this.navigateFileStart();\n return val;\n };\n Editor.prototype.getValue = function () {\n return this.session.getValue();\n };\n Editor.prototype.getSelection = function () {\n return this.selection;\n };\n Editor.prototype.resize = function (force) {\n this.renderer.onResize(force);\n };\n Editor.prototype.setTheme = function (theme, cb) {\n this.renderer.setTheme(theme, cb);\n };\n Editor.prototype.getTheme = function () {\n return this.renderer.getTheme();\n };\n Editor.prototype.setStyle = function (style) {\n this.renderer.setStyle(style);\n };\n Editor.prototype.unsetStyle = function (style) {\n this.renderer.unsetStyle(style);\n };\n Editor.prototype.getFontSize = function () {\n return this.getOption(\"fontSize\") ||\n dom.computedStyle(this.container).fontSize;\n };\n Editor.prototype.setFontSize = function (size) {\n this.setOption(\"fontSize\", size);\n };\n Editor.prototype.$highlightBrackets = function () {\n if (this.$highlightPending) {\n return;\n }\n var self = this;\n this.$highlightPending = true;\n setTimeout(function () {\n self.$highlightPending = false;\n var session = self.session;\n if (!session || session.destroyed)\n return;\n if (session.$bracketHighlight) {\n session.$bracketHighlight.markerIds.forEach(function (id) {\n session.removeMarker(id);\n });\n session.$bracketHighlight = null;\n }\n var pos = self.getCursorPosition();\n var handler = self.getKeyboardHandler();\n var isBackwards = handler && handler.$getDirectionForHighlight && handler.$getDirectionForHighlight(self);\n var ranges = session.getMatchingBracketRanges(pos, isBackwards);\n if (!ranges) {\n var iterator = new TokenIterator(session, pos.row, pos.column);\n var token = iterator.getCurrentToken();\n if (token && /\\b(?:tag-open|tag-name)/.test(token.type)) {\n var tagNamesRanges = session.getMatchingTags(pos);\n if (tagNamesRanges)\n ranges = [tagNamesRanges.openTagName, tagNamesRanges.closeTagName];\n }\n }\n if (!ranges && session.$mode.getMatching)\n ranges = session.$mode.getMatching(self.session);\n if (!ranges) {\n if (self.getHighlightIndentGuides())\n self.renderer.$textLayer.$highlightIndentGuide();\n return;\n }\n var markerType = \"ace_bracket\";\n if (!Array.isArray(ranges)) {\n ranges = [ranges];\n }\n else if (ranges.length == 1) {\n markerType = \"ace_error_bracket\";\n }\n if (ranges.length == 2) {\n if (Range.comparePoints(ranges[0].end, ranges[1].start) == 0)\n ranges = [Range.fromPoints(ranges[0].start, ranges[1].end)];\n else if (Range.comparePoints(ranges[0].start, ranges[1].end) == 0)\n ranges = [Range.fromPoints(ranges[1].start, ranges[0].end)];\n }\n session.$bracketHighlight = {\n ranges: ranges,\n markerIds: ranges.map(function (range) {\n return session.addMarker(range, markerType, \"text\");\n })\n };\n if (self.getHighlightIndentGuides())\n self.renderer.$textLayer.$highlightIndentGuide();\n }, 50);\n };\n Editor.prototype.focus = function () {\n this.textInput.focus();\n };\n Editor.prototype.isFocused = function () {\n return this.textInput.isFocused();\n };\n Editor.prototype.blur = function () {\n this.textInput.blur();\n };\n Editor.prototype.onFocus = function (e) {\n if (this.$isFocused)\n return;\n this.$isFocused = true;\n this.renderer.showCursor();\n this.renderer.visualizeFocus();\n this._emit(\"focus\", e);\n };\n Editor.prototype.onBlur = function (e) {\n if (!this.$isFocused)\n return;\n this.$isFocused = false;\n this.renderer.hideCursor();\n this.renderer.visualizeBlur();\n this._emit(\"blur\", e);\n };\n Editor.prototype.$cursorChange = function () {\n this.renderer.updateCursor();\n this.$highlightBrackets();\n this.$updateHighlightActiveLine();\n };\n Editor.prototype.onDocumentChange = function (delta) {\n var wrap = this.session.$useWrapMode;\n var lastRow = (delta.start.row == delta.end.row ? delta.end.row : Infinity);\n this.renderer.updateLines(delta.start.row, lastRow, wrap);\n this._signal(\"change\", delta);\n this.$cursorChange();\n };\n Editor.prototype.onTokenizerUpdate = function (e) {\n var rows = e.data;\n this.renderer.updateLines(rows.first, rows.last);\n };\n Editor.prototype.onScrollTopChange = function () {\n this.renderer.scrollToY(this.session.getScrollTop());\n };\n Editor.prototype.onScrollLeftChange = function () {\n this.renderer.scrollToX(this.session.getScrollLeft());\n };\n Editor.prototype.onCursorChange = function () {\n this.$cursorChange();\n this._signal(\"changeSelection\");\n };\n Editor.prototype.$updateHighlightActiveLine = function () {\n var session = this.getSession();\n var highlight;\n if (this.$highlightActiveLine) {\n if (this.$selectionStyle != \"line\" || !this.selection.isMultiLine())\n highlight = this.getCursorPosition();\n if (this.renderer.theme && this.renderer.theme.$selectionColorConflict && !this.selection.isEmpty())\n highlight = false;\n if (this.renderer.$maxLines && this.session.getLength() === 1 && !(this.renderer.$minLines > 1))\n highlight = false;\n }\n if (session.$highlightLineMarker && !highlight) {\n session.removeMarker(session.$highlightLineMarker.id);\n session.$highlightLineMarker = null;\n }\n else if (!session.$highlightLineMarker && highlight) {\n var range = new Range(highlight.row, highlight.column, highlight.row, Infinity);\n range.id = session.addMarker(range, \"ace_active-line\", \"screenLine\");\n session.$highlightLineMarker = range;\n }\n else if (highlight) {\n session.$highlightLineMarker.start.row = highlight.row;\n session.$highlightLineMarker.end.row = highlight.row;\n session.$highlightLineMarker.start.column = highlight.column;\n session._signal(\"changeBackMarker\");\n }\n };\n Editor.prototype.onSelectionChange = function (e) {\n var session = this.session;\n if (session.$selectionMarker) {\n session.removeMarker(session.$selectionMarker);\n }\n session.$selectionMarker = null;\n if (!this.selection.isEmpty()) {\n var range = this.selection.getRange();\n var style = this.getSelectionStyle();\n session.$selectionMarker = session.addMarker(range, \"ace_selection\", style);\n }\n else {\n this.$updateHighlightActiveLine();\n }\n var re = this.$highlightSelectedWord && this.$getSelectionHighLightRegexp();\n this.session.highlight(re);\n this._signal(\"changeSelection\");\n };\n Editor.prototype.$getSelectionHighLightRegexp = function () {\n var session = this.session;\n var selection = this.getSelectionRange();\n if (selection.isEmpty() || selection.isMultiLine())\n return;\n var startColumn = selection.start.column;\n var endColumn = selection.end.column;\n var line = session.getLine(selection.start.row);\n var needle = line.substring(startColumn, endColumn);\n if (needle.length > 5000 || !/[\\w\\d]/.test(needle))\n return;\n var re = this.$search.$assembleRegExp({\n wholeWord: true,\n caseSensitive: true,\n needle: needle\n });\n var wordWithBoundary = line.substring(startColumn - 1, endColumn + 1);\n if (!re.test(wordWithBoundary))\n return;\n return re;\n };\n Editor.prototype.onChangeFrontMarker = function () {\n this.renderer.updateFrontMarkers();\n };\n Editor.prototype.onChangeBackMarker = function () {\n this.renderer.updateBackMarkers();\n };\n Editor.prototype.onChangeBreakpoint = function () {\n this.renderer.updateBreakpoints();\n };\n Editor.prototype.onChangeAnnotation = function () {\n this.renderer.setAnnotations(this.session.getAnnotations());\n };\n Editor.prototype.onChangeMode = function (e) {\n this.renderer.updateText();\n this._emit(\"changeMode\", e);\n };\n Editor.prototype.onChangeWrapLimit = function () {\n this.renderer.updateFull();\n };\n Editor.prototype.onChangeWrapMode = function () {\n this.renderer.onResize(true);\n };\n Editor.prototype.onChangeFold = function () {\n this.$updateHighlightActiveLine();\n this.renderer.updateFull();\n };\n Editor.prototype.getSelectedText = function () {\n return this.session.getTextRange(this.getSelectionRange());\n };\n Editor.prototype.getCopyText = function () {\n var text = this.getSelectedText();\n var nl = this.session.doc.getNewLineCharacter();\n var copyLine = false;\n if (!text && this.$copyWithEmptySelection) {\n copyLine = true;\n var ranges = this.selection.getAllRanges();\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i];\n if (i && ranges[i - 1].start.row == range.start.row)\n continue;\n text += this.session.getLine(range.start.row) + nl;\n }\n }\n var e = { text: text };\n this._signal(\"copy\", e);\n clipboard.lineMode = copyLine ? e.text : false;\n return e.text;\n };\n Editor.prototype.onCopy = function () {\n this.commands.exec(\"copy\", this);\n };\n Editor.prototype.onCut = function () {\n this.commands.exec(\"cut\", this);\n };\n Editor.prototype.onPaste = function (text, event) {\n var e = { text: text, event: event };\n this.commands.exec(\"paste\", this, e);\n };\n Editor.prototype.$handlePaste = function (e) {\n if (typeof e == \"string\")\n e = { text: e };\n this._signal(\"paste\", e);\n var text = e.text;\n var lineMode = text === clipboard.lineMode;\n var session = this.session;\n if (!this.inMultiSelectMode || this.inVirtualSelectionMode) {\n if (lineMode)\n session.insert({ row: this.selection.lead.row, column: 0 }, text);\n else\n this.insert(text);\n }\n else if (lineMode) {\n this.selection.rangeList.ranges.forEach(function (range) {\n session.insert({ row: range.start.row, column: 0 }, text);\n });\n }\n else {\n var lines = text.split(/\\r\\n|\\r|\\n/);\n var ranges = this.selection.rangeList.ranges;\n var isFullLine = lines.length == 2 && (!lines[0] || !lines[1]);\n if (lines.length != ranges.length || isFullLine)\n return this.commands.exec(\"insertstring\", this, text);\n for (var i = ranges.length; i--;) {\n var range = ranges[i];\n if (!range.isEmpty())\n session.remove(range);\n session.insert(range.start, lines[i]);\n }\n }\n };\n Editor.prototype.execCommand = function (command, args) {\n return this.commands.exec(command, this, args);\n };\n Editor.prototype.insert = function (text, pasted) {\n var session = this.session;\n var mode = session.getMode();\n var cursor = this.getCursorPosition();\n if (this.getBehavioursEnabled() && !pasted) {\n var transform = mode.transformAction(session.getState(cursor.row), 'insertion', this, session, text);\n if (transform) {\n if (text !== transform.text) {\n if (!this.inVirtualSelectionMode) {\n this.session.mergeUndoDeltas = false;\n this.mergeNextCommand = false;\n }\n }\n text = transform.text;\n }\n }\n if (text == \"\\t\")\n text = this.session.getTabString();\n if (!this.selection.isEmpty()) {\n var range = this.getSelectionRange();\n cursor = this.session.remove(range);\n this.clearSelection();\n }\n else if (this.session.getOverwrite() && text.indexOf(\"\\n\") == -1) {\n var range = new Range.fromPoints(cursor, cursor);\n range.end.column += text.length;\n this.session.remove(range);\n }\n if (text == \"\\n\" || text == \"\\r\\n\") {\n var line = session.getLine(cursor.row);\n if (cursor.column > line.search(/\\S|$/)) {\n var d = line.substr(cursor.column).search(/\\S|$/);\n session.doc.removeInLine(cursor.row, cursor.column, cursor.column + d);\n }\n }\n this.clearSelection();\n var start = cursor.column;\n var lineState = session.getState(cursor.row);\n var line = session.getLine(cursor.row);\n var shouldOutdent = mode.checkOutdent(lineState, line, text);\n session.insert(cursor, text);\n if (transform && transform.selection) {\n if (transform.selection.length == 2) { // Transform relative to the current column\n this.selection.setSelectionRange(new Range(cursor.row, start + transform.selection[0], cursor.row, start + transform.selection[1]));\n }\n else { // Transform relative to the current row.\n this.selection.setSelectionRange(new Range(cursor.row + transform.selection[0], transform.selection[1], cursor.row + transform.selection[2], transform.selection[3]));\n }\n }\n if (this.$enableAutoIndent) {\n if (session.getDocument().isNewLine(text)) {\n var lineIndent = mode.getNextLineIndent(lineState, line.slice(0, cursor.column), session.getTabString());\n session.insert({ row: cursor.row + 1, column: 0 }, lineIndent);\n }\n if (shouldOutdent)\n mode.autoOutdent(lineState, session, cursor.row);\n }\n };\n Editor.prototype.autoIndent = function () {\n var session = this.session;\n var mode = session.getMode();\n var startRow, endRow;\n if (this.selection.isEmpty()) {\n startRow = 0;\n endRow = session.doc.getLength() - 1;\n }\n else {\n var selectedRange = this.getSelectionRange();\n startRow = selectedRange.start.row;\n endRow = selectedRange.end.row;\n }\n var prevLineState = \"\";\n var prevLine = \"\";\n var lineIndent = \"\";\n var line, currIndent, range;\n var tab = session.getTabString();\n for (var row = startRow; row <= endRow; row++) {\n if (row > 0) {\n prevLineState = session.getState(row - 1);\n prevLine = session.getLine(row - 1);\n lineIndent = mode.getNextLineIndent(prevLineState, prevLine, tab);\n }\n line = session.getLine(row);\n currIndent = mode.$getIndent(line);\n if (lineIndent !== currIndent) {\n if (currIndent.length > 0) {\n range = new Range(row, 0, row, currIndent.length);\n session.remove(range);\n }\n if (lineIndent.length > 0) {\n session.insert({ row: row, column: 0 }, lineIndent);\n }\n }\n mode.autoOutdent(prevLineState, session, row);\n }\n };\n Editor.prototype.onTextInput = function (text, composition) {\n if (!composition)\n return this.keyBinding.onTextInput(text);\n this.startOperation({ command: { name: \"insertstring\" } });\n var applyComposition = this.applyComposition.bind(this, text, composition);\n if (this.selection.rangeCount)\n this.forEachSelection(applyComposition);\n else\n applyComposition();\n this.endOperation();\n };\n Editor.prototype.applyComposition = function (text, composition) {\n if (composition.extendLeft || composition.extendRight) {\n var r = this.selection.getRange();\n r.start.column -= composition.extendLeft;\n r.end.column += composition.extendRight;\n if (r.start.column < 0) {\n r.start.row--;\n r.start.column += this.session.getLine(r.start.row).length + 1;\n }\n this.selection.setRange(r);\n if (!text && !r.isEmpty())\n this.remove();\n }\n if (text || !this.selection.isEmpty())\n this.insert(text, true);\n if (composition.restoreStart || composition.restoreEnd) {\n var r = this.selection.getRange();\n r.start.column -= composition.restoreStart;\n r.end.column -= composition.restoreEnd;\n this.selection.setRange(r);\n }\n };\n Editor.prototype.onCommandKey = function (e, hashId, keyCode) {\n return this.keyBinding.onCommandKey(e, hashId, keyCode);\n };\n Editor.prototype.setOverwrite = function (overwrite) {\n this.session.setOverwrite(overwrite);\n };\n Editor.prototype.getOverwrite = function () {\n return this.session.getOverwrite();\n };\n Editor.prototype.toggleOverwrite = function () {\n this.session.toggleOverwrite();\n };\n Editor.prototype.setScrollSpeed = function (speed) {\n this.setOption(\"scrollSpeed\", speed);\n };\n Editor.prototype.getScrollSpeed = function () {\n return this.getOption(\"scrollSpeed\");\n };\n Editor.prototype.setDragDelay = function (dragDelay) {\n this.setOption(\"dragDelay\", dragDelay);\n };\n Editor.prototype.getDragDelay = function () {\n return this.getOption(\"dragDelay\");\n };\n Editor.prototype.setSelectionStyle = function (val) {\n this.setOption(\"selectionStyle\", val);\n };\n Editor.prototype.getSelectionStyle = function () {\n return this.getOption(\"selectionStyle\");\n };\n Editor.prototype.setHighlightActiveLine = function (shouldHighlight) {\n this.setOption(\"highlightActiveLine\", shouldHighlight);\n };\n Editor.prototype.getHighlightActiveLine = function () {\n return this.getOption(\"highlightActiveLine\");\n };\n Editor.prototype.setHighlightGutterLine = function (shouldHighlight) {\n this.setOption(\"highlightGutterLine\", shouldHighlight);\n };\n Editor.prototype.getHighlightGutterLine = function () {\n return this.getOption(\"highlightGutterLine\");\n };\n Editor.prototype.setHighlightSelectedWord = function (shouldHighlight) {\n this.setOption(\"highlightSelectedWord\", shouldHighlight);\n };\n Editor.prototype.getHighlightSelectedWord = function () {\n return this.$highlightSelectedWord;\n };\n Editor.prototype.setAnimatedScroll = function (shouldAnimate) {\n this.renderer.setAnimatedScroll(shouldAnimate);\n };\n Editor.prototype.getAnimatedScroll = function () {\n return this.renderer.getAnimatedScroll();\n };\n Editor.prototype.setShowInvisibles = function (showInvisibles) {\n this.renderer.setShowInvisibles(showInvisibles);\n };\n Editor.prototype.getShowInvisibles = function () {\n return this.renderer.getShowInvisibles();\n };\n Editor.prototype.setDisplayIndentGuides = function (display) {\n this.renderer.setDisplayIndentGuides(display);\n };\n Editor.prototype.getDisplayIndentGuides = function () {\n return this.renderer.getDisplayIndentGuides();\n };\n Editor.prototype.setHighlightIndentGuides = function (highlight) {\n this.renderer.setHighlightIndentGuides(highlight);\n };\n Editor.prototype.getHighlightIndentGuides = function () {\n return this.renderer.getHighlightIndentGuides();\n };\n Editor.prototype.setShowPrintMargin = function (showPrintMargin) {\n this.renderer.setShowPrintMargin(showPrintMargin);\n };\n Editor.prototype.getShowPrintMargin = function () {\n return this.renderer.getShowPrintMargin();\n };\n Editor.prototype.setPrintMarginColumn = function (showPrintMargin) {\n this.renderer.setPrintMarginColumn(showPrintMargin);\n };\n Editor.prototype.getPrintMarginColumn = function () {\n return this.renderer.getPrintMarginColumn();\n };\n Editor.prototype.setReadOnly = function (readOnly) {\n this.setOption(\"readOnly\", readOnly);\n };\n Editor.prototype.getReadOnly = function () {\n return this.getOption(\"readOnly\");\n };\n Editor.prototype.setBehavioursEnabled = function (enabled) {\n this.setOption(\"behavioursEnabled\", enabled);\n };\n Editor.prototype.getBehavioursEnabled = function () {\n return this.getOption(\"behavioursEnabled\");\n };\n Editor.prototype.setWrapBehavioursEnabled = function (enabled) {\n this.setOption(\"wrapBehavioursEnabled\", enabled);\n };\n Editor.prototype.getWrapBehavioursEnabled = function () {\n return this.getOption(\"wrapBehavioursEnabled\");\n };\n Editor.prototype.setShowFoldWidgets = function (show) {\n this.setOption(\"showFoldWidgets\", show);\n };\n Editor.prototype.getShowFoldWidgets = function () {\n return this.getOption(\"showFoldWidgets\");\n };\n Editor.prototype.setFadeFoldWidgets = function (fade) {\n this.setOption(\"fadeFoldWidgets\", fade);\n };\n Editor.prototype.getFadeFoldWidgets = function () {\n return this.getOption(\"fadeFoldWidgets\");\n };\n Editor.prototype.remove = function (dir) {\n if (this.selection.isEmpty()) {\n if (dir == \"left\")\n this.selection.selectLeft();\n else\n this.selection.selectRight();\n }\n var range = this.getSelectionRange();\n if (this.getBehavioursEnabled()) {\n var session = this.session;\n var state = session.getState(range.start.row);\n var new_range = session.getMode().transformAction(state, 'deletion', this, session, range);\n if (range.end.column === 0) {\n var text = session.getTextRange(range);\n if (text[text.length - 1] == \"\\n\") {\n var line = session.getLine(range.end.row);\n if (/^\\s+$/.test(line)) {\n range.end.column = line.length;\n }\n }\n }\n if (new_range)\n range = new_range;\n }\n this.session.remove(range);\n this.clearSelection();\n };\n Editor.prototype.removeWordRight = function () {\n if (this.selection.isEmpty())\n this.selection.selectWordRight();\n this.session.remove(this.getSelectionRange());\n this.clearSelection();\n };\n Editor.prototype.removeWordLeft = function () {\n if (this.selection.isEmpty())\n this.selection.selectWordLeft();\n this.session.remove(this.getSelectionRange());\n this.clearSelection();\n };\n Editor.prototype.removeToLineStart = function () {\n if (this.selection.isEmpty())\n this.selection.selectLineStart();\n if (this.selection.isEmpty())\n this.selection.selectLeft();\n this.session.remove(this.getSelectionRange());\n this.clearSelection();\n };\n Editor.prototype.removeToLineEnd = function () {\n if (this.selection.isEmpty())\n this.selection.selectLineEnd();\n var range = this.getSelectionRange();\n if (range.start.column == range.end.column && range.start.row == range.end.row) {\n range.end.column = 0;\n range.end.row++;\n }\n this.session.remove(range);\n this.clearSelection();\n };\n Editor.prototype.splitLine = function () {\n if (!this.selection.isEmpty()) {\n this.session.remove(this.getSelectionRange());\n this.clearSelection();\n }\n var cursor = this.getCursorPosition();\n this.insert(\"\\n\");\n this.moveCursorToPosition(cursor);\n };\n Editor.prototype.setGhostText = function (text, position) {\n if (!this.session.widgetManager) {\n this.session.widgetManager = new LineWidgets(this.session);\n this.session.widgetManager.attach(this);\n }\n this.renderer.setGhostText(text, position);\n };\n Editor.prototype.removeGhostText = function () {\n if (!this.session.widgetManager)\n return;\n this.renderer.removeGhostText();\n };\n Editor.prototype.transposeLetters = function () {\n if (!this.selection.isEmpty()) {\n return;\n }\n var cursor = this.getCursorPosition();\n var column = cursor.column;\n if (column === 0)\n return;\n var line = this.session.getLine(cursor.row);\n var swap, range;\n if (column < line.length) {\n swap = line.charAt(column) + line.charAt(column - 1);\n range = new Range(cursor.row, column - 1, cursor.row, column + 1);\n }\n else {\n swap = line.charAt(column - 1) + line.charAt(column - 2);\n range = new Range(cursor.row, column - 2, cursor.row, column);\n }\n this.session.replace(range, swap);\n this.session.selection.moveToPosition(range.end);\n };\n Editor.prototype.toLowerCase = function () {\n var originalRange = this.getSelectionRange();\n if (this.selection.isEmpty()) {\n this.selection.selectWord();\n }\n var range = this.getSelectionRange();\n var text = this.session.getTextRange(range);\n this.session.replace(range, text.toLowerCase());\n this.selection.setSelectionRange(originalRange);\n };\n Editor.prototype.toUpperCase = function () {\n var originalRange = this.getSelectionRange();\n if (this.selection.isEmpty()) {\n this.selection.selectWord();\n }\n var range = this.getSelectionRange();\n var text = this.session.getTextRange(range);\n this.session.replace(range, text.toUpperCase());\n this.selection.setSelectionRange(originalRange);\n };\n Editor.prototype.indent = function () {\n var session = this.session;\n var range = this.getSelectionRange();\n if (range.start.row < range.end.row) {\n var rows = this.$getSelectedRows();\n session.indentRows(rows.first, rows.last, \"\\t\");\n return;\n }\n else if (range.start.column < range.end.column) {\n var text = session.getTextRange(range);\n if (!/^\\s+$/.test(text)) {\n var rows = this.$getSelectedRows();\n session.indentRows(rows.first, rows.last, \"\\t\");\n return;\n }\n }\n var line = session.getLine(range.start.row);\n var position = range.start;\n var size = session.getTabSize();\n var column = session.documentToScreenColumn(position.row, position.column);\n if (this.session.getUseSoftTabs()) {\n var count = (size - column % size);\n var indentString = lang.stringRepeat(\" \", count);\n }\n else {\n var count = column % size;\n while (line[range.start.column - 1] == \" \" && count) {\n range.start.column--;\n count--;\n }\n this.selection.setSelectionRange(range);\n indentString = \"\\t\";\n }\n return this.insert(indentString);\n };\n Editor.prototype.blockIndent = function () {\n var rows = this.$getSelectedRows();\n this.session.indentRows(rows.first, rows.last, \"\\t\");\n };\n Editor.prototype.blockOutdent = function () {\n var selection = this.session.getSelection();\n this.session.outdentRows(selection.getRange());\n };\n Editor.prototype.sortLines = function () {\n var rows = this.$getSelectedRows();\n var session = this.session;\n var lines = [];\n for (var i = rows.first; i <= rows.last; i++)\n lines.push(session.getLine(i));\n lines.sort(function (a, b) {\n if (a.toLowerCase() < b.toLowerCase())\n return -1;\n if (a.toLowerCase() > b.toLowerCase())\n return 1;\n return 0;\n });\n var deleteRange = new Range(0, 0, 0, 0);\n for (var i = rows.first; i <= rows.last; i++) {\n var line = session.getLine(i);\n deleteRange.start.row = i;\n deleteRange.end.row = i;\n deleteRange.end.column = line.length;\n session.replace(deleteRange, lines[i - rows.first]);\n }\n };\n Editor.prototype.toggleCommentLines = function () {\n var state = this.session.getState(this.getCursorPosition().row);\n var rows = this.$getSelectedRows();\n this.session.getMode().toggleCommentLines(state, this.session, rows.first, rows.last);\n };\n Editor.prototype.toggleBlockComment = function () {\n var cursor = this.getCursorPosition();\n var state = this.session.getState(cursor.row);\n var range = this.getSelectionRange();\n this.session.getMode().toggleBlockComment(state, this.session, range, cursor);\n };\n Editor.prototype.getNumberAt = function (row, column) {\n var _numberRx = /[\\-]?[0-9]+(?:\\.[0-9]+)?/g;\n _numberRx.lastIndex = 0;\n var s = this.session.getLine(row);\n while (_numberRx.lastIndex < column) {\n var m = _numberRx.exec(s);\n if (m.index <= column && m.index + m[0].length >= column) {\n var number = {\n value: m[0],\n start: m.index,\n end: m.index + m[0].length\n };\n return number;\n }\n }\n return null;\n };\n Editor.prototype.modifyNumber = function (amount) {\n var row = this.selection.getCursor().row;\n var column = this.selection.getCursor().column;\n var charRange = new Range(row, column - 1, row, column);\n var c = this.session.getTextRange(charRange);\n if (!isNaN(parseFloat(c)) && isFinite(c)) {\n var nr = this.getNumberAt(row, column);\n if (nr) {\n var fp = nr.value.indexOf(\".\") >= 0 ? nr.start + nr.value.indexOf(\".\") + 1 : nr.end;\n var decimals = nr.start + nr.value.length - fp;\n var t = parseFloat(nr.value);\n t *= Math.pow(10, decimals);\n if (fp !== nr.end && column < fp) {\n amount *= Math.pow(10, nr.end - column - 1);\n }\n else {\n amount *= Math.pow(10, nr.end - column);\n }\n t += amount;\n t /= Math.pow(10, decimals);\n var nnr = t.toFixed(decimals);\n var replaceRange = new Range(row, nr.start, row, nr.end);\n this.session.replace(replaceRange, nnr);\n this.moveCursorTo(row, Math.max(nr.start + 1, column + nnr.length - nr.value.length));\n }\n }\n else {\n this.toggleWord();\n }\n };\n Editor.prototype.toggleWord = function () {\n var row = this.selection.getCursor().row;\n var column = this.selection.getCursor().column;\n this.selection.selectWord();\n var currentState = this.getSelectedText();\n var currWordStart = this.selection.getWordRange().start.column;\n var wordParts = currentState.replace(/([a-z]+|[A-Z]+)(?=[A-Z_]|$)/g, '$1 ').split(/\\s/);\n var delta = column - currWordStart - 1;\n if (delta < 0)\n delta = 0;\n var curLength = 0, itLength = 0;\n var that = this;\n if (currentState.match(/[A-Za-z0-9_]+/)) {\n wordParts.forEach(function (item, i) {\n itLength = curLength + item.length;\n if (delta >= curLength && delta <= itLength) {\n currentState = item;\n that.selection.clearSelection();\n that.moveCursorTo(row, curLength + currWordStart);\n that.selection.selectTo(row, itLength + currWordStart);\n }\n curLength = itLength;\n });\n }\n var wordPairs = this.$toggleWordPairs;\n var reg;\n for (var i = 0; i < wordPairs.length; i++) {\n var item = wordPairs[i];\n for (var j = 0; j <= 1; j++) {\n var negate = +!j;\n var firstCondition = currentState.match(new RegExp('^\\\\s?_?(' + lang.escapeRegExp(item[j]) + ')\\\\s?$', 'i'));\n if (firstCondition) {\n var secondCondition = currentState.match(new RegExp('([_]|^|\\\\s)(' + lang.escapeRegExp(firstCondition[1]) + ')($|\\\\s)', 'g'));\n if (secondCondition) {\n reg = currentState.replace(new RegExp(lang.escapeRegExp(item[j]), 'i'), function (result) {\n var res = item[negate];\n if (result.toUpperCase() == result) {\n res = res.toUpperCase();\n }\n else if (result.charAt(0).toUpperCase() == result.charAt(0)) {\n res = res.substr(0, 0) + item[negate].charAt(0).toUpperCase() + res.substr(1);\n }\n return res;\n });\n this.insert(reg);\n reg = \"\";\n }\n }\n }\n }\n };\n Editor.prototype.findLinkAt = function (row, column) {\n var e_1, _a;\n var line = this.session.getLine(row);\n var wordParts = line.split(/((?:https?|ftp):\\/\\/[\\S]+)/);\n var columnPosition = column;\n if (columnPosition < 0)\n columnPosition = 0;\n var previousPosition = 0, currentPosition = 0, match;\n try {\n for (var wordParts_1 = __values(wordParts), wordParts_1_1 = wordParts_1.next(); !wordParts_1_1.done; wordParts_1_1 = wordParts_1.next()) {\n var item = wordParts_1_1.value;\n currentPosition = previousPosition + item.length;\n if (columnPosition >= previousPosition && columnPosition <= currentPosition) {\n if (item.match(/((?:https?|ftp):\\/\\/[\\S]+)/)) {\n match = item.replace(/[\\s:.,'\";}\\]]+$/, \"\");\n break;\n }\n }\n previousPosition = currentPosition;\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (wordParts_1_1 && !wordParts_1_1.done && (_a = wordParts_1.return)) _a.call(wordParts_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return match;\n };\n Editor.prototype.openLink = function () {\n var cursor = this.selection.getCursor();\n var url = this.findLinkAt(cursor.row, cursor.column);\n if (url)\n window.open(url, '_blank');\n return url != null;\n };\n Editor.prototype.removeLines = function () {\n var rows = this.$getSelectedRows();\n this.session.removeFullLines(rows.first, rows.last);\n this.clearSelection();\n };\n Editor.prototype.duplicateSelection = function () {\n var sel = this.selection;\n var doc = this.session;\n var range = sel.getRange();\n var reverse = sel.isBackwards();\n if (range.isEmpty()) {\n var row = range.start.row;\n doc.duplicateLines(row, row);\n }\n else {\n var point = reverse ? range.start : range.end;\n var endPoint = doc.insert(point, doc.getTextRange(range), false);\n range.start = point;\n range.end = endPoint;\n sel.setSelectionRange(range, reverse);\n }\n };\n Editor.prototype.moveLinesDown = function () {\n this.$moveLines(1, false);\n };\n Editor.prototype.moveLinesUp = function () {\n this.$moveLines(-1, false);\n };\n Editor.prototype.moveText = function (range, toPosition, copy) {\n return this.session.moveText(range, toPosition, copy);\n };\n Editor.prototype.copyLinesUp = function () {\n this.$moveLines(-1, true);\n };\n Editor.prototype.copyLinesDown = function () {\n this.$moveLines(1, true);\n };\n Editor.prototype.$moveLines = function (dir, copy) {\n var rows, moved;\n var selection = this.selection;\n if (!selection.inMultiSelectMode || this.inVirtualSelectionMode) {\n var range = selection.toOrientedRange();\n rows = this.$getSelectedRows(range);\n moved = this.session.$moveLines(rows.first, rows.last, copy ? 0 : dir);\n if (copy && dir == -1)\n moved = 0;\n range.moveBy(moved, 0);\n selection.fromOrientedRange(range);\n }\n else {\n var ranges = selection.rangeList.ranges;\n selection.rangeList.detach(this.session);\n this.inVirtualSelectionMode = true;\n var diff = 0;\n var totalDiff = 0;\n var l = ranges.length;\n for (var i = 0; i < l; i++) {\n var rangeIndex = i;\n ranges[i].moveBy(diff, 0);\n rows = this.$getSelectedRows(ranges[i]);\n var first = rows.first;\n var last = rows.last;\n while (++i < l) {\n if (totalDiff)\n ranges[i].moveBy(totalDiff, 0);\n var subRows = this.$getSelectedRows(ranges[i]);\n if (copy && subRows.first != last)\n break;\n else if (!copy && subRows.first > last + 1)\n break;\n last = subRows.last;\n }\n i--;\n diff = this.session.$moveLines(first, last, copy ? 0 : dir);\n if (copy && dir == -1)\n rangeIndex = i + 1;\n while (rangeIndex <= i) {\n ranges[rangeIndex].moveBy(diff, 0);\n rangeIndex++;\n }\n if (!copy)\n diff = 0;\n totalDiff += diff;\n }\n selection.fromOrientedRange(selection.ranges[0]);\n selection.rangeList.attach(this.session);\n this.inVirtualSelectionMode = false;\n }\n };\n Editor.prototype.$getSelectedRows = function (range) {\n range = (range || this.getSelectionRange()).collapseRows();\n return {\n first: this.session.getRowFoldStart(range.start.row),\n last: this.session.getRowFoldEnd(range.end.row)\n };\n };\n Editor.prototype.onCompositionStart = function (compositionState) {\n this.renderer.showComposition(compositionState);\n };\n Editor.prototype.onCompositionUpdate = function (text) {\n this.renderer.setCompositionText(text);\n };\n Editor.prototype.onCompositionEnd = function () {\n this.renderer.hideComposition();\n };\n Editor.prototype.getFirstVisibleRow = function () {\n return this.renderer.getFirstVisibleRow();\n };\n Editor.prototype.getLastVisibleRow = function () {\n return this.renderer.getLastVisibleRow();\n };\n Editor.prototype.isRowVisible = function (row) {\n return (row >= this.getFirstVisibleRow() && row <= this.getLastVisibleRow());\n };\n Editor.prototype.isRowFullyVisible = function (row) {\n return (row >= this.renderer.getFirstFullyVisibleRow() && row <= this.renderer.getLastFullyVisibleRow());\n };\n Editor.prototype.$getVisibleRowCount = function () {\n return this.renderer.getScrollBottomRow() - this.renderer.getScrollTopRow() + 1;\n };\n Editor.prototype.$moveByPage = function (dir, select) {\n var renderer = this.renderer;\n var config = this.renderer.layerConfig;\n var rows = dir * Math.floor(config.height / config.lineHeight);\n if (select === true) {\n this.selection.$moveSelection(function () {\n this.moveCursorBy(rows, 0);\n });\n }\n else if (select === false) {\n this.selection.moveCursorBy(rows, 0);\n this.selection.clearSelection();\n }\n var scrollTop = renderer.scrollTop;\n renderer.scrollBy(0, rows * config.lineHeight);\n if (select != null)\n renderer.scrollCursorIntoView(null, 0.5);\n renderer.animateScrolling(scrollTop);\n };\n Editor.prototype.selectPageDown = function () {\n this.$moveByPage(1, true);\n };\n Editor.prototype.selectPageUp = function () {\n this.$moveByPage(-1, true);\n };\n Editor.prototype.gotoPageDown = function () {\n this.$moveByPage(1, false);\n };\n Editor.prototype.gotoPageUp = function () {\n this.$moveByPage(-1, false);\n };\n Editor.prototype.scrollPageDown = function () {\n this.$moveByPage(1);\n };\n Editor.prototype.scrollPageUp = function () {\n this.$moveByPage(-1);\n };\n Editor.prototype.scrollToRow = function (row) {\n this.renderer.scrollToRow(row);\n };\n Editor.prototype.scrollToLine = function (line, center, animate, callback) {\n this.renderer.scrollToLine(line, center, animate, callback);\n };\n Editor.prototype.centerSelection = function () {\n var range = this.getSelectionRange();\n var pos = {\n row: Math.floor(range.start.row + (range.end.row - range.start.row) / 2),\n column: Math.floor(range.start.column + (range.end.column - range.start.column) / 2)\n };\n this.renderer.alignCursor(pos, 0.5);\n };\n Editor.prototype.getCursorPosition = function () {\n return this.selection.getCursor();\n };\n Editor.prototype.getCursorPositionScreen = function () {\n return this.session.documentToScreenPosition(this.getCursorPosition());\n };\n Editor.prototype.getSelectionRange = function () {\n return this.selection.getRange();\n };\n Editor.prototype.selectAll = function () {\n this.selection.selectAll();\n };\n Editor.prototype.clearSelection = function () {\n this.selection.clearSelection();\n };\n Editor.prototype.moveCursorTo = function (row, column) {\n this.selection.moveCursorTo(row, column);\n };\n Editor.prototype.moveCursorToPosition = function (pos) {\n this.selection.moveCursorToPosition(pos);\n };\n Editor.prototype.jumpToMatching = function (select, expand) {\n var cursor = this.getCursorPosition();\n var iterator = new TokenIterator(this.session, cursor.row, cursor.column);\n var prevToken = iterator.getCurrentToken();\n var tokenCount = 0;\n if (prevToken && prevToken.type.indexOf('tag-name') !== -1) {\n prevToken = iterator.stepBackward();\n }\n var token = prevToken || iterator.stepForward();\n if (!token)\n return;\n var matchType;\n var found = false;\n var depth = {};\n var i = cursor.column - token.start;\n var bracketType;\n var brackets = {\n \")\": \"(\",\n \"(\": \"(\",\n \"]\": \"[\",\n \"[\": \"[\",\n \"{\": \"{\",\n \"}\": \"{\"\n };\n do {\n if (token.value.match(/[{}()\\[\\]]/g)) {\n for (; i < token.value.length && !found; i++) {\n if (!brackets[token.value[i]]) {\n continue;\n }\n bracketType = brackets[token.value[i]] + '.' + token.type.replace(\"rparen\", \"lparen\");\n if (isNaN(depth[bracketType])) {\n depth[bracketType] = 0;\n }\n switch (token.value[i]) {\n case '(':\n case '[':\n case '{':\n depth[bracketType]++;\n break;\n case ')':\n case ']':\n case '}':\n depth[bracketType]--;\n if (depth[bracketType] === -1) {\n matchType = 'bracket';\n found = true;\n }\n break;\n }\n }\n }\n else if (token.type.indexOf('tag-name') !== -1) {\n if (isNaN(depth[token.value])) {\n depth[token.value] = 0;\n }\n if (prevToken.value === '<' && tokenCount > 1) {\n depth[token.value]++;\n }\n else if (prevToken.value === '= 0; --i) {\n if (this.$tryReplace(ranges[i], replacement)) {\n replaced++;\n }\n }\n this.selection.setSelectionRange(selection);\n return replaced;\n };\n Editor.prototype.$tryReplace = function (range, replacement) {\n var input = this.session.getTextRange(range);\n replacement = this.$search.replace(input, replacement);\n if (replacement !== null) {\n range.end = this.session.replace(range, replacement);\n return range;\n }\n else {\n return null;\n }\n };\n Editor.prototype.getLastSearchOptions = function () {\n return this.$search.getOptions();\n };\n Editor.prototype.find = function (needle, options, animate) {\n if (!options)\n options = {};\n if (typeof needle == \"string\" || needle instanceof RegExp)\n options.needle = needle;\n else if (typeof needle == \"object\")\n oop.mixin(options, needle);\n var range = this.selection.getRange();\n if (options.needle == null) {\n needle = this.session.getTextRange(range)\n || this.$search.$options.needle;\n if (!needle) {\n range = this.session.getWordRange(range.start.row, range.start.column);\n needle = this.session.getTextRange(range);\n }\n this.$search.set({ needle: needle });\n }\n this.$search.set(options);\n if (!options.start)\n this.$search.set({ start: range });\n var newRange = this.$search.find(this.session);\n if (options.preventScroll)\n return newRange;\n if (newRange) {\n this.revealRange(newRange, animate);\n return newRange;\n }\n if (options.backwards)\n range.start = range.end;\n else\n range.end = range.start;\n this.selection.setRange(range);\n };\n Editor.prototype.findNext = function (options, animate) {\n this.find({ skipCurrent: true, backwards: false }, options, animate);\n };\n Editor.prototype.findPrevious = function (options, animate) {\n this.find(options, { skipCurrent: true, backwards: true }, animate);\n };\n Editor.prototype.revealRange = function (range, animate) {\n this.session.unfold(range);\n this.selection.setSelectionRange(range);\n var scrollTop = this.renderer.scrollTop;\n this.renderer.scrollSelectionIntoView(range.start, range.end, 0.5);\n if (animate !== false)\n this.renderer.animateScrolling(scrollTop);\n };\n Editor.prototype.undo = function () {\n this.session.getUndoManager().undo(this.session);\n this.renderer.scrollCursorIntoView(null, 0.5);\n };\n Editor.prototype.redo = function () {\n this.session.getUndoManager().redo(this.session);\n this.renderer.scrollCursorIntoView(null, 0.5);\n };\n Editor.prototype.destroy = function () {\n if (this.$toDestroy) {\n this.$toDestroy.forEach(function (el) {\n el.destroy();\n });\n this.$toDestroy = null;\n }\n if (this.$mouseHandler)\n this.$mouseHandler.destroy();\n this.renderer.destroy();\n this._signal(\"destroy\", this);\n if (this.session)\n this.session.destroy();\n if (this._$emitInputEvent)\n this._$emitInputEvent.cancel();\n this.removeAllListeners();\n };\n Editor.prototype.setAutoScrollEditorIntoView = function (enable) {\n if (!enable)\n return;\n var rect;\n var self = this;\n var shouldScroll = false;\n if (!this.$scrollAnchor)\n this.$scrollAnchor = document.createElement(\"div\");\n var scrollAnchor = this.$scrollAnchor;\n scrollAnchor.style.cssText = \"position:absolute\";\n this.container.insertBefore(scrollAnchor, this.container.firstChild);\n var onChangeSelection = this.on(\"changeSelection\", function () {\n shouldScroll = true;\n });\n var onBeforeRender = this.renderer.on(\"beforeRender\", function () {\n if (shouldScroll)\n rect = self.renderer.container.getBoundingClientRect();\n });\n var onAfterRender = this.renderer.on(\"afterRender\", function () {\n if (shouldScroll && rect && (self.isFocused()\n || self.searchBox && self.searchBox.isFocused())) {\n var renderer = self.renderer;\n var pos = renderer.$cursorLayer.$pixelPos;\n var config = renderer.layerConfig;\n var top = pos.top - config.offset;\n if (pos.top >= 0 && top + rect.top < 0) {\n shouldScroll = true;\n }\n else if (pos.top < config.height &&\n pos.top + rect.top + config.lineHeight > window.innerHeight) {\n shouldScroll = false;\n }\n else {\n shouldScroll = null;\n }\n if (shouldScroll != null) {\n scrollAnchor.style.top = top + \"px\";\n scrollAnchor.style.left = pos.left + \"px\";\n scrollAnchor.style.height = config.lineHeight + \"px\";\n scrollAnchor.scrollIntoView(shouldScroll);\n }\n shouldScroll = rect = null;\n }\n });\n this.setAutoScrollEditorIntoView = function (enable) {\n if (enable)\n return;\n delete this.setAutoScrollEditorIntoView;\n this.off(\"changeSelection\", onChangeSelection);\n this.renderer.off(\"afterRender\", onAfterRender);\n this.renderer.off(\"beforeRender\", onBeforeRender);\n };\n };\n Editor.prototype.$resetCursorStyle = function () {\n var style = this.$cursorStyle || \"ace\";\n var cursorLayer = this.renderer.$cursorLayer;\n if (!cursorLayer)\n return;\n cursorLayer.setSmoothBlinking(/smooth/.test(style));\n cursorLayer.isBlinking = !this.$readOnly && style != \"wide\";\n dom.setCssClass(cursorLayer.element, \"ace_slim-cursors\", /slim/.test(style));\n };\n Editor.prototype.prompt = function (message, options, callback) {\n var editor = this;\n config.loadModule(\"ace/ext/prompt\", function (module) {\n module.prompt(editor, message, options, callback);\n });\n };\n return Editor;\n}());\nEditor.$uid = 0;\nEditor.prototype.curOp = null;\nEditor.prototype.prevOp = {};\nEditor.prototype.$mergeableCommands = [\"backspace\", \"del\", \"insertstring\"];\nEditor.prototype.$toggleWordPairs = [\n [\"first\", \"last\"],\n [\"true\", \"false\"],\n [\"yes\", \"no\"],\n [\"width\", \"height\"],\n [\"top\", \"bottom\"],\n [\"right\", \"left\"],\n [\"on\", \"off\"],\n [\"x\", \"y\"],\n [\"get\", \"set\"],\n [\"max\", \"min\"],\n [\"horizontal\", \"vertical\"],\n [\"show\", \"hide\"],\n [\"add\", \"remove\"],\n [\"up\", \"down\"],\n [\"before\", \"after\"],\n [\"even\", \"odd\"],\n [\"in\", \"out\"],\n [\"inside\", \"outside\"],\n [\"next\", \"previous\"],\n [\"increase\", \"decrease\"],\n [\"attach\", \"detach\"],\n [\"&&\", \"||\"],\n [\"==\", \"!=\"]\n];\noop.implement(Editor.prototype, EventEmitter);\nconfig.defineOptions(Editor.prototype, \"editor\", {\n selectionStyle: {\n set: function (style) {\n this.onSelectionChange();\n this._signal(\"changeSelectionStyle\", { data: style });\n },\n initialValue: \"line\"\n },\n highlightActiveLine: {\n set: function () { this.$updateHighlightActiveLine(); },\n initialValue: true\n },\n highlightSelectedWord: {\n set: function (shouldHighlight) { this.$onSelectionChange(); },\n initialValue: true\n },\n readOnly: {\n set: function (readOnly) {\n this.textInput.setReadOnly(readOnly);\n this.$resetCursorStyle();\n },\n initialValue: false\n },\n copyWithEmptySelection: {\n set: function (value) {\n this.textInput.setCopyWithEmptySelection(value);\n },\n initialValue: false\n },\n cursorStyle: {\n set: function (val) { this.$resetCursorStyle(); },\n values: [\"ace\", \"slim\", \"smooth\", \"wide\"],\n initialValue: \"ace\"\n },\n mergeUndoDeltas: {\n values: [false, true, \"always\"],\n initialValue: true\n },\n behavioursEnabled: { initialValue: true },\n wrapBehavioursEnabled: { initialValue: true },\n enableAutoIndent: { initialValue: true },\n autoScrollEditorIntoView: {\n set: function (val) { this.setAutoScrollEditorIntoView(val); }\n },\n keyboardHandler: {\n set: function (val) { this.setKeyboardHandler(val); },\n get: function () { return this.$keybindingId; },\n handlesSet: true\n },\n value: {\n set: function (val) { this.session.setValue(val); },\n get: function () { return this.getValue(); },\n handlesSet: true,\n hidden: true\n },\n session: {\n set: function (val) { this.setSession(val); },\n get: function () { return this.session; },\n handlesSet: true,\n hidden: true\n },\n showLineNumbers: {\n set: function (show) {\n this.renderer.$gutterLayer.setShowLineNumbers(show);\n this.renderer.$loop.schedule(this.renderer.CHANGE_GUTTER);\n if (show && this.$relativeLineNumbers)\n relativeNumberRenderer.attach(this);\n else\n relativeNumberRenderer.detach(this);\n },\n initialValue: true\n },\n relativeLineNumbers: {\n set: function (value) {\n if (this.$showLineNumbers && value)\n relativeNumberRenderer.attach(this);\n else\n relativeNumberRenderer.detach(this);\n }\n },\n placeholder: {\n set: function (message) {\n if (!this.$updatePlaceholder) {\n this.$updatePlaceholder = function () {\n var hasValue = this.session && (this.renderer.$composition ||\n this.session.getLength() > 1 || this.session.getLine(0).length > 0);\n if (hasValue && this.renderer.placeholderNode) {\n this.renderer.off(\"afterRender\", this.$updatePlaceholder);\n dom.removeCssClass(this.container, \"ace_hasPlaceholder\");\n this.renderer.placeholderNode.remove();\n this.renderer.placeholderNode = null;\n }\n else if (!hasValue && !this.renderer.placeholderNode) {\n this.renderer.on(\"afterRender\", this.$updatePlaceholder);\n dom.addCssClass(this.container, \"ace_hasPlaceholder\");\n var el = dom.createElement(\"div\");\n el.className = \"ace_placeholder\";\n el.textContent = this.$placeholder || \"\";\n this.renderer.placeholderNode = el;\n this.renderer.content.appendChild(this.renderer.placeholderNode);\n }\n else if (!hasValue && this.renderer.placeholderNode) {\n this.renderer.placeholderNode.textContent = this.$placeholder || \"\";\n }\n }.bind(this);\n this.on(\"input\", this.$updatePlaceholder);\n }\n this.$updatePlaceholder();\n }\n },\n enableKeyboardAccessibility: {\n set: function (value) {\n var blurCommand = {\n name: \"blurTextInput\",\n description: \"Set focus to the editor content div to allow tabbing through the page\",\n bindKey: \"Esc\",\n exec: function (editor) {\n editor.blur();\n editor.renderer.scroller.focus();\n },\n readOnly: true\n };\n var focusOnEnterKeyup = function (e) {\n if (e.target == this.renderer.scroller && e.keyCode === keys['enter']) {\n e.preventDefault();\n var row = this.getCursorPosition().row;\n if (!this.isRowVisible(row))\n this.scrollToLine(row, true, true);\n this.focus();\n }\n };\n var gutterKeyboardHandler;\n if (value) {\n this.renderer.enableKeyboardAccessibility = true;\n this.renderer.keyboardFocusClassName = \"ace_keyboard-focus\";\n this.textInput.getElement().setAttribute(\"tabindex\", -1);\n this.textInput.setNumberOfExtraLines(useragent.isWin ? 3 : 0);\n this.renderer.scroller.setAttribute(\"tabindex\", 0);\n this.renderer.scroller.setAttribute(\"role\", \"group\");\n this.renderer.scroller.setAttribute(\"aria-roledescription\", nls(\"editor\"));\n this.renderer.scroller.classList.add(this.renderer.keyboardFocusClassName);\n this.renderer.scroller.setAttribute(\"aria-label\", nls(\"Editor content, press Enter to start editing, press Escape to exit\"));\n this.renderer.scroller.addEventListener(\"keyup\", focusOnEnterKeyup.bind(this));\n this.commands.addCommand(blurCommand);\n this.renderer.$gutter.setAttribute(\"tabindex\", 0);\n this.renderer.$gutter.setAttribute(\"aria-hidden\", false);\n this.renderer.$gutter.setAttribute(\"role\", \"group\");\n this.renderer.$gutter.setAttribute(\"aria-roledescription\", nls(\"editor\"));\n this.renderer.$gutter.setAttribute(\"aria-label\", nls(\"Editor gutter, press Enter to interact with controls using arrow keys, press Escape to exit\"));\n this.renderer.$gutter.classList.add(this.renderer.keyboardFocusClassName);\n this.renderer.content.setAttribute(\"aria-hidden\", true);\n if (!gutterKeyboardHandler)\n gutterKeyboardHandler = new GutterKeyboardHandler(this);\n gutterKeyboardHandler.addListener();\n }\n else {\n this.renderer.enableKeyboardAccessibility = false;\n this.textInput.getElement().setAttribute(\"tabindex\", 0);\n this.textInput.setNumberOfExtraLines(0);\n this.renderer.scroller.setAttribute(\"tabindex\", -1);\n this.renderer.scroller.removeAttribute(\"role\");\n this.renderer.scroller.removeAttribute(\"aria-roledescription\");\n this.renderer.scroller.classList.remove(this.renderer.keyboardFocusClassName);\n this.renderer.scroller.removeAttribute(\"aria-label\");\n this.renderer.scroller.removeEventListener(\"keyup\", focusOnEnterKeyup.bind(this));\n this.commands.removeCommand(blurCommand);\n this.renderer.content.removeAttribute(\"aria-hidden\");\n this.renderer.$gutter.setAttribute(\"tabindex\", -1);\n this.renderer.$gutter.setAttribute(\"aria-hidden\", true);\n this.renderer.$gutter.removeAttribute(\"role\");\n this.renderer.$gutter.removeAttribute(\"aria-roledescription\");\n this.renderer.$gutter.removeAttribute(\"aria-label\");\n this.renderer.$gutter.classList.remove(this.renderer.keyboardFocusClassName);\n if (gutterKeyboardHandler)\n gutterKeyboardHandler.removeListener();\n }\n },\n initialValue: false\n },\n customScrollbar: \"renderer\",\n hScrollBarAlwaysVisible: \"renderer\",\n vScrollBarAlwaysVisible: \"renderer\",\n highlightGutterLine: \"renderer\",\n animatedScroll: \"renderer\",\n showInvisibles: \"renderer\",\n showPrintMargin: \"renderer\",\n printMarginColumn: \"renderer\",\n printMargin: \"renderer\",\n fadeFoldWidgets: \"renderer\",\n showFoldWidgets: \"renderer\",\n displayIndentGuides: \"renderer\",\n highlightIndentGuides: \"renderer\",\n showGutter: \"renderer\",\n fontSize: \"renderer\",\n fontFamily: \"renderer\",\n maxLines: \"renderer\",\n minLines: \"renderer\",\n scrollPastEnd: \"renderer\",\n fixedWidthGutter: \"renderer\",\n theme: \"renderer\",\n hasCssTransforms: \"renderer\",\n maxPixelHeight: \"renderer\",\n useTextareaForIME: \"renderer\",\n useResizeObserver: \"renderer\",\n useSvgGutterIcons: \"renderer\",\n showFoldedAnnotations: \"renderer\",\n scrollSpeed: \"$mouseHandler\",\n dragDelay: \"$mouseHandler\",\n dragEnabled: \"$mouseHandler\",\n focusTimeout: \"$mouseHandler\",\n tooltipFollowsMouse: \"$mouseHandler\",\n firstLineNumber: \"session\",\n overwrite: \"session\",\n newLineMode: \"session\",\n useWorker: \"session\",\n useSoftTabs: \"session\",\n navigateWithinSoftTabs: \"session\",\n tabSize: \"session\",\n wrap: \"session\",\n indentedSoftWrap: \"session\",\n foldStyle: \"session\",\n mode: \"session\"\n});\nvar relativeNumberRenderer = {\n getText: function (session, row) {\n return (Math.abs(session.selection.lead.row - row) || (row + 1 + (row < 9 ? \"\\xb7\" : \"\"))) + \"\";\n },\n getWidth: function (session, lastLineNumber, config) {\n return Math.max(lastLineNumber.toString().length, (config.lastRow + 1).toString().length, 2) * config.characterWidth;\n },\n update: function (e, editor) {\n editor.renderer.$loop.schedule(editor.renderer.CHANGE_GUTTER);\n },\n attach: function (editor) {\n editor.renderer.$gutterLayer.$renderer = this;\n editor.on(\"changeSelection\", this.update);\n this.update(null, editor);\n },\n detach: function (editor) {\n if (editor.renderer.$gutterLayer.$renderer == this)\n editor.renderer.$gutterLayer.$renderer = null;\n editor.off(\"changeSelection\", this.update);\n this.update(null, editor);\n }\n};\nexports.Editor = Editor;\n\n});\n\nace.define(\"ace/layer/lines\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"], function(require, exports, module){\"use strict\";\nvar dom = require(\"../lib/dom\");\nvar Lines = /** @class */ (function () {\n function Lines(element, canvasHeight) {\n this.element = element;\n this.canvasHeight = canvasHeight || 500000;\n this.element.style.height = (this.canvasHeight * 2) + \"px\";\n this.cells = [];\n this.cellCache = [];\n this.$offsetCoefficient = 0;\n }\n Lines.prototype.moveContainer = function (config) {\n dom.translate(this.element, 0, -((config.firstRowScreen * config.lineHeight) % this.canvasHeight) - config.offset * this.$offsetCoefficient);\n };\n Lines.prototype.pageChanged = function (oldConfig, newConfig) {\n return (Math.floor((oldConfig.firstRowScreen * oldConfig.lineHeight) / this.canvasHeight) !==\n Math.floor((newConfig.firstRowScreen * newConfig.lineHeight) / this.canvasHeight));\n };\n Lines.prototype.computeLineTop = function (row, config, session) {\n var screenTop = config.firstRowScreen * config.lineHeight;\n var screenPage = Math.floor(screenTop / this.canvasHeight);\n var lineTop = session.documentToScreenRow(row, 0) * config.lineHeight;\n return lineTop - (screenPage * this.canvasHeight);\n };\n Lines.prototype.computeLineHeight = function (row, config, session) {\n return config.lineHeight * session.getRowLineCount(row);\n };\n Lines.prototype.getLength = function () {\n return this.cells.length;\n };\n Lines.prototype.get = function (index) {\n return this.cells[index];\n };\n Lines.prototype.shift = function () {\n this.$cacheCell(this.cells.shift());\n };\n Lines.prototype.pop = function () {\n this.$cacheCell(this.cells.pop());\n };\n Lines.prototype.push = function (cell) {\n if (Array.isArray(cell)) {\n this.cells.push.apply(this.cells, cell);\n var fragment = dom.createFragment(this.element);\n for (var i = 0; i < cell.length; i++) {\n fragment.appendChild(cell[i].element);\n }\n this.element.appendChild(fragment);\n }\n else {\n this.cells.push(cell);\n this.element.appendChild(cell.element);\n }\n };\n Lines.prototype.unshift = function (cell) {\n if (Array.isArray(cell)) {\n this.cells.unshift.apply(this.cells, cell);\n var fragment = dom.createFragment(this.element);\n for (var i = 0; i < cell.length; i++) {\n fragment.appendChild(cell[i].element);\n }\n if (this.element.firstChild)\n this.element.insertBefore(fragment, this.element.firstChild);\n else\n this.element.appendChild(fragment);\n }\n else {\n this.cells.unshift(cell);\n this.element.insertAdjacentElement(\"afterbegin\", cell.element);\n }\n };\n Lines.prototype.last = function () {\n if (this.cells.length)\n return this.cells[this.cells.length - 1];\n else\n return null;\n };\n Lines.prototype.$cacheCell = function (cell) {\n if (!cell)\n return;\n cell.element.remove();\n this.cellCache.push(cell);\n };\n Lines.prototype.createCell = function (row, config, session, initElement) {\n var cell = this.cellCache.pop();\n if (!cell) {\n var element = dom.createElement(\"div\");\n if (initElement)\n initElement(element);\n this.element.appendChild(element);\n cell = {\n element: element,\n text: \"\",\n row: row\n };\n }\n cell.row = row;\n return cell;\n };\n return Lines;\n}());\nexports.Lines = Lines;\n\n});\n\nace.define(\"ace/layer/gutter\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/lib/event_emitter\",\"ace/layer/lines\",\"ace/config\"], function(require, exports, module){\"use strict\";\nvar dom = require(\"../lib/dom\");\nvar oop = require(\"../lib/oop\");\nvar lang = require(\"../lib/lang\");\nvar EventEmitter = require(\"../lib/event_emitter\").EventEmitter;\nvar Lines = require(\"./lines\").Lines;\nvar nls = require(\"../config\").nls;\nvar Gutter = /** @class */ (function () {\n function Gutter(parentEl) {\n this.element = dom.createElement(\"div\");\n this.element.className = \"ace_layer ace_gutter-layer\";\n parentEl.appendChild(this.element);\n this.setShowFoldWidgets(this.$showFoldWidgets);\n this.gutterWidth = 0;\n this.$annotations = [];\n this.$updateAnnotations = this.$updateAnnotations.bind(this);\n this.$lines = new Lines(this.element);\n this.$lines.$offsetCoefficient = 1;\n }\n Gutter.prototype.setSession = function (session) {\n if (this.session)\n this.session.off(\"change\", this.$updateAnnotations);\n this.session = session;\n if (session)\n session.on(\"change\", this.$updateAnnotations);\n };\n Gutter.prototype.addGutterDecoration = function (row, className) {\n if (window.console)\n console.warn && console.warn(\"deprecated use session.addGutterDecoration\");\n this.session.addGutterDecoration(row, className);\n };\n Gutter.prototype.removeGutterDecoration = function (row, className) {\n if (window.console)\n console.warn && console.warn(\"deprecated use session.removeGutterDecoration\");\n this.session.removeGutterDecoration(row, className);\n };\n Gutter.prototype.setAnnotations = function (annotations) {\n this.$annotations = [];\n for (var i = 0; i < annotations.length; i++) {\n var annotation = annotations[i];\n var row = annotation.row;\n var rowInfo = this.$annotations[row];\n if (!rowInfo)\n rowInfo = this.$annotations[row] = { text: [], type: [] };\n var annoText = annotation.text;\n var annoType = annotation.type;\n annoText = annoText ? lang.escapeHTML(annoText) : annotation.html || \"\";\n if (rowInfo.text.indexOf(annoText) === -1) {\n rowInfo.text.push(annoText);\n rowInfo.type.push(annoType);\n }\n var className = annotation.className;\n if (className)\n rowInfo.className = className;\n else if (annoType == \"error\")\n rowInfo.className = \" ace_error\";\n else if (annoType == \"warning\" && rowInfo.className != \" ace_error\")\n rowInfo.className = \" ace_warning\";\n else if (annoType == \"info\" && (!rowInfo.className))\n rowInfo.className = \" ace_info\";\n }\n };\n Gutter.prototype.$updateAnnotations = function (delta) {\n if (!this.$annotations.length)\n return;\n var firstRow = delta.start.row;\n var len = delta.end.row - firstRow;\n if (len === 0) {\n }\n else if (delta.action == 'remove') {\n this.$annotations.splice(firstRow, len + 1, null);\n }\n else {\n var args = new Array(len + 1);\n args.unshift(firstRow, 1);\n this.$annotations.splice.apply(this.$annotations, args);\n }\n };\n Gutter.prototype.update = function (config) {\n this.config = config;\n var session = this.session;\n var firstRow = config.firstRow;\n var lastRow = Math.min(config.lastRow + config.gutterOffset, // needed to compensate for hor scollbar\n session.getLength() - 1);\n this.oldLastRow = lastRow;\n this.config = config;\n this.$lines.moveContainer(config);\n this.$updateCursorRow();\n var fold = session.getNextFoldLine(firstRow);\n var foldStart = fold ? fold.start.row : Infinity;\n var cell = null;\n var index = -1;\n var row = firstRow;\n while (true) {\n if (row > foldStart) {\n row = fold.end.row + 1;\n fold = session.getNextFoldLine(row, fold);\n foldStart = fold ? fold.start.row : Infinity;\n }\n if (row > lastRow) {\n while (this.$lines.getLength() > index + 1)\n this.$lines.pop();\n break;\n }\n cell = this.$lines.get(++index);\n if (cell) {\n cell.row = row;\n }\n else {\n cell = this.$lines.createCell(row, config, this.session, onCreateCell);\n this.$lines.push(cell);\n }\n this.$renderCell(cell, config, fold, row);\n row++;\n }\n this._signal(\"afterRender\");\n this.$updateGutterWidth(config);\n };\n Gutter.prototype.$updateGutterWidth = function (config) {\n var session = this.session;\n var gutterRenderer = session.gutterRenderer || this.$renderer;\n var firstLineNumber = session.$firstLineNumber;\n var lastLineText = this.$lines.last() ? this.$lines.last().text : \"\";\n if (this.$fixedWidth || session.$useWrapMode)\n lastLineText = session.getLength() + firstLineNumber - 1;\n var gutterWidth = gutterRenderer\n ? gutterRenderer.getWidth(session, lastLineText, config)\n : lastLineText.toString().length * config.characterWidth;\n var padding = this.$padding || this.$computePadding();\n gutterWidth += padding.left + padding.right;\n if (gutterWidth !== this.gutterWidth && !isNaN(gutterWidth)) {\n this.gutterWidth = gutterWidth;\n this.element.parentNode.style.width =\n this.element.style.width = Math.ceil(this.gutterWidth) + \"px\";\n this._signal(\"changeGutterWidth\", gutterWidth);\n }\n };\n Gutter.prototype.$updateCursorRow = function () {\n if (!this.$highlightGutterLine)\n return;\n var position = this.session.selection.getCursor();\n if (this.$cursorRow === position.row)\n return;\n this.$cursorRow = position.row;\n };\n Gutter.prototype.updateLineHighlight = function () {\n if (!this.$highlightGutterLine)\n return;\n var row = this.session.selection.cursor.row;\n this.$cursorRow = row;\n if (this.$cursorCell && this.$cursorCell.row == row)\n return;\n if (this.$cursorCell)\n this.$cursorCell.element.className = this.$cursorCell.element.className.replace(\"ace_gutter-active-line \", \"\");\n var cells = this.$lines.cells;\n this.$cursorCell = null;\n for (var i = 0; i < cells.length; i++) {\n var cell = cells[i];\n if (cell.row >= this.$cursorRow) {\n if (cell.row > this.$cursorRow) {\n var fold = this.session.getFoldLine(this.$cursorRow);\n if (i > 0 && fold && fold.start.row == cells[i - 1].row)\n cell = cells[i - 1];\n else\n break;\n }\n cell.element.className = \"ace_gutter-active-line \" + cell.element.className;\n this.$cursorCell = cell;\n break;\n }\n }\n };\n Gutter.prototype.scrollLines = function (config) {\n var oldConfig = this.config;\n this.config = config;\n this.$updateCursorRow();\n if (this.$lines.pageChanged(oldConfig, config))\n return this.update(config);\n this.$lines.moveContainer(config);\n var lastRow = Math.min(config.lastRow + config.gutterOffset, // needed to compensate for hor scollbar\n this.session.getLength() - 1);\n var oldLastRow = this.oldLastRow;\n this.oldLastRow = lastRow;\n if (!oldConfig || oldLastRow < config.firstRow)\n return this.update(config);\n if (lastRow < oldConfig.firstRow)\n return this.update(config);\n if (oldConfig.firstRow < config.firstRow)\n for (var row = this.session.getFoldedRowCount(oldConfig.firstRow, config.firstRow - 1); row > 0; row--)\n this.$lines.shift();\n if (oldLastRow > lastRow)\n for (var row = this.session.getFoldedRowCount(lastRow + 1, oldLastRow); row > 0; row--)\n this.$lines.pop();\n if (config.firstRow < oldConfig.firstRow) {\n this.$lines.unshift(this.$renderLines(config, config.firstRow, oldConfig.firstRow - 1));\n }\n if (lastRow > oldLastRow) {\n this.$lines.push(this.$renderLines(config, oldLastRow + 1, lastRow));\n }\n this.updateLineHighlight();\n this._signal(\"afterRender\");\n this.$updateGutterWidth(config);\n };\n Gutter.prototype.$renderLines = function (config, firstRow, lastRow) {\n var fragment = [];\n var row = firstRow;\n var foldLine = this.session.getNextFoldLine(row);\n var foldStart = foldLine ? foldLine.start.row : Infinity;\n while (true) {\n if (row > foldStart) {\n row = foldLine.end.row + 1;\n foldLine = this.session.getNextFoldLine(row, foldLine);\n foldStart = foldLine ? foldLine.start.row : Infinity;\n }\n if (row > lastRow)\n break;\n var cell = this.$lines.createCell(row, config, this.session, onCreateCell);\n this.$renderCell(cell, config, foldLine, row);\n fragment.push(cell);\n row++;\n }\n return fragment;\n };\n Gutter.prototype.$renderCell = function (cell, config, fold, row) {\n var element = cell.element;\n var session = this.session;\n var textNode = element.childNodes[0];\n var foldWidget = element.childNodes[1];\n var annotationNode = element.childNodes[2];\n var annotationIconNode = annotationNode.firstChild;\n var firstLineNumber = session.$firstLineNumber;\n var breakpoints = session.$breakpoints;\n var decorations = session.$decorations;\n var gutterRenderer = session.gutterRenderer || this.$renderer;\n var foldWidgets = this.$showFoldWidgets && session.foldWidgets;\n var foldStart = fold ? fold.start.row : Number.MAX_VALUE;\n var lineHeight = config.lineHeight + \"px\";\n var className = this.$useSvgGutterIcons ? \"ace_gutter-cell_svg-icons \" : \"ace_gutter-cell \";\n var iconClassName = this.$useSvgGutterIcons ? \"ace_icon_svg\" : \"ace_icon\";\n var rowText = (gutterRenderer\n ? gutterRenderer.getText(session, row)\n : row + firstLineNumber).toString();\n if (this.$highlightGutterLine) {\n if (row == this.$cursorRow || (fold && row < this.$cursorRow && row >= foldStart && this.$cursorRow <= fold.end.row)) {\n className += \"ace_gutter-active-line \";\n if (this.$cursorCell != cell) {\n if (this.$cursorCell)\n this.$cursorCell.element.className = this.$cursorCell.element.className.replace(\"ace_gutter-active-line \", \"\");\n this.$cursorCell = cell;\n }\n }\n }\n if (breakpoints[row])\n className += breakpoints[row];\n if (decorations[row])\n className += decorations[row];\n if (this.$annotations[row] && row !== foldStart)\n className += this.$annotations[row].className;\n if (foldWidgets) {\n var c = foldWidgets[row];\n if (c == null)\n c = foldWidgets[row] = session.getFoldWidget(row);\n }\n if (c) {\n var foldClass = \"ace_fold-widget ace_\" + c;\n var isClosedFold = c == \"start\" && row == foldStart && row < fold.end.row;\n if (isClosedFold) {\n foldClass += \" ace_closed\";\n var foldAnnotationClass = '';\n var annotationInFold = false;\n for (var i = row + 1; i <= fold.end.row; i++) {\n if (!this.$annotations[i])\n continue;\n if (this.$annotations[i].className === \" ace_error\") {\n annotationInFold = true;\n foldAnnotationClass = \" ace_error_fold\";\n break;\n }\n if (this.$annotations[i].className === \" ace_warning\") {\n annotationInFold = true;\n foldAnnotationClass = \" ace_warning_fold\";\n continue;\n }\n }\n className += foldAnnotationClass;\n }\n else\n foldClass += \" ace_open\";\n if (foldWidget.className != foldClass)\n foldWidget.className = foldClass;\n dom.setStyle(foldWidget.style, \"height\", lineHeight);\n dom.setStyle(foldWidget.style, \"display\", \"inline-block\");\n foldWidget.setAttribute(\"role\", \"button\");\n foldWidget.setAttribute(\"tabindex\", \"-1\");\n var foldRange = session.getFoldWidgetRange(row);\n if (foldRange)\n foldWidget.setAttribute(\"aria-label\", nls(\"Toggle code folding, rows $0 through $1\", [foldRange.start.row + 1, foldRange.end.row + 1]));\n else {\n if (fold)\n foldWidget.setAttribute(\"aria-label\", nls(\"Toggle code folding, rows $0 through $1\", [fold.start.row + 1, fold.end.row + 1]));\n else\n foldWidget.setAttribute(\"aria-label\", nls(\"Toggle code folding, row $0\", [row + 1]));\n }\n if (isClosedFold) {\n foldWidget.setAttribute(\"aria-expanded\", \"false\");\n foldWidget.setAttribute(\"title\", nls(\"Unfold code\"));\n }\n else {\n foldWidget.setAttribute(\"aria-expanded\", \"true\");\n foldWidget.setAttribute(\"title\", nls(\"Fold code\"));\n }\n }\n else {\n if (foldWidget) {\n dom.setStyle(foldWidget.style, \"display\", \"none\");\n foldWidget.setAttribute(\"tabindex\", \"0\");\n foldWidget.removeAttribute(\"role\");\n foldWidget.removeAttribute(\"aria-label\");\n }\n }\n if (annotationInFold && this.$showFoldedAnnotations) {\n annotationNode.className = \"ace_gutter_annotation\";\n annotationIconNode.className = iconClassName;\n annotationIconNode.className += foldAnnotationClass;\n dom.setStyle(annotationIconNode.style, \"height\", lineHeight);\n dom.setStyle(annotationNode.style, \"display\", \"block\");\n dom.setStyle(annotationNode.style, \"height\", lineHeight);\n annotationNode.setAttribute(\"aria-label\", nls(\"Read annotations row $0\", [rowText]));\n annotationNode.setAttribute(\"tabindex\", \"-1\");\n annotationNode.setAttribute(\"role\", \"button\");\n }\n else if (this.$annotations[row]) {\n annotationNode.className = \"ace_gutter_annotation\";\n annotationIconNode.className = iconClassName;\n if (this.$useSvgGutterIcons)\n annotationIconNode.className += this.$annotations[row].className;\n else\n element.classList.add(this.$annotations[row].className.replace(\" \", \"\"));\n dom.setStyle(annotationIconNode.style, \"height\", lineHeight);\n dom.setStyle(annotationNode.style, \"display\", \"block\");\n dom.setStyle(annotationNode.style, \"height\", lineHeight);\n annotationNode.setAttribute(\"aria-label\", nls(\"Read annotations row $0\", [rowText]));\n annotationNode.setAttribute(\"tabindex\", \"-1\");\n annotationNode.setAttribute(\"role\", \"button\");\n }\n else {\n dom.setStyle(annotationNode.style, \"display\", \"none\");\n annotationNode.removeAttribute(\"aria-label\");\n annotationNode.removeAttribute(\"role\");\n annotationNode.setAttribute(\"tabindex\", \"0\");\n }\n if (rowText !== textNode.data) {\n textNode.data = rowText;\n }\n if (element.className != className)\n element.className = className;\n dom.setStyle(cell.element.style, \"height\", this.$lines.computeLineHeight(row, config, session) + \"px\");\n dom.setStyle(cell.element.style, \"top\", this.$lines.computeLineTop(row, config, session) + \"px\");\n cell.text = rowText;\n if (annotationNode.style.display === \"none\" && foldWidget.style.display === \"none\")\n cell.element.setAttribute(\"aria-hidden\", true);\n else\n cell.element.setAttribute(\"aria-hidden\", false);\n return cell;\n };\n Gutter.prototype.setHighlightGutterLine = function (highlightGutterLine) {\n this.$highlightGutterLine = highlightGutterLine;\n };\n Gutter.prototype.setShowLineNumbers = function (show) {\n this.$renderer = !show && {\n getWidth: function () { return 0; },\n getText: function () { return \"\"; }\n };\n };\n Gutter.prototype.getShowLineNumbers = function () {\n return this.$showLineNumbers;\n };\n Gutter.prototype.setShowFoldWidgets = function (show) {\n if (show)\n dom.addCssClass(this.element, \"ace_folding-enabled\");\n else\n dom.removeCssClass(this.element, \"ace_folding-enabled\");\n this.$showFoldWidgets = show;\n this.$padding = null;\n };\n Gutter.prototype.getShowFoldWidgets = function () {\n return this.$showFoldWidgets;\n };\n Gutter.prototype.$computePadding = function () {\n if (!this.element.firstChild)\n return { left: 0, right: 0 };\n var style = dom.computedStyle(this.element.firstChild);\n this.$padding = {};\n this.$padding.left = (parseInt(style.borderLeftWidth) || 0)\n + (parseInt(style.paddingLeft) || 0) + 1;\n this.$padding.right = (parseInt(style.borderRightWidth) || 0)\n + (parseInt(style.paddingRight) || 0);\n return this.$padding;\n };\n Gutter.prototype.getRegion = function (point) {\n var padding = this.$padding || this.$computePadding();\n var rect = this.element.getBoundingClientRect();\n if (point.x < padding.left + rect.left)\n return \"markers\";\n if (this.$showFoldWidgets && point.x > rect.right - padding.right)\n return \"foldWidgets\";\n };\n return Gutter;\n}());\nGutter.prototype.$fixedWidth = false;\nGutter.prototype.$highlightGutterLine = true;\nGutter.prototype.$renderer = \"\";\nGutter.prototype.$showLineNumbers = true;\nGutter.prototype.$showFoldWidgets = true;\noop.implement(Gutter.prototype, EventEmitter);\nfunction onCreateCell(element) {\n var textNode = document.createTextNode('');\n element.appendChild(textNode);\n var foldWidget = dom.createElement(\"span\");\n element.appendChild(foldWidget);\n var annotationNode = dom.createElement(\"span\");\n element.appendChild(annotationNode);\n var annotationIconNode = dom.createElement(\"span\");\n annotationNode.appendChild(annotationIconNode);\n return element;\n}\nexports.Gutter = Gutter;\n\n});\n\nace.define(\"ace/layer/marker\",[\"require\",\"exports\",\"module\",\"ace/range\",\"ace/lib/dom\"], function(require, exports, module){\"use strict\";\nvar Range = require(\"../range\").Range;\nvar dom = require(\"../lib/dom\");\nvar Marker = /** @class */ (function () {\n function Marker(parentEl) {\n this.element = dom.createElement(\"div\");\n this.element.className = \"ace_layer ace_marker-layer\";\n parentEl.appendChild(this.element);\n }\n Marker.prototype.setPadding = function (padding) {\n this.$padding = padding;\n };\n Marker.prototype.setSession = function (session) {\n this.session = session;\n };\n Marker.prototype.setMarkers = function (markers) {\n this.markers = markers;\n };\n Marker.prototype.elt = function (className, css) {\n var x = this.i != -1 && this.element.childNodes[this.i];\n if (!x) {\n x = document.createElement(\"div\");\n this.element.appendChild(x);\n this.i = -1;\n }\n else {\n this.i++;\n }\n x.style.cssText = css;\n x.className = className;\n };\n Marker.prototype.update = function (config) {\n if (!config)\n return;\n this.config = config;\n this.i = 0;\n var html;\n for (var key in this.markers) {\n var marker = this.markers[key];\n if (!marker.range) {\n marker.update(html, this, this.session, config);\n continue;\n }\n var range = marker.range.clipRows(config.firstRow, config.lastRow);\n if (range.isEmpty())\n continue;\n range = range.toScreenRange(this.session);\n if (marker.renderer) {\n var top = this.$getTop(range.start.row, config);\n var left = this.$padding + range.start.column * config.characterWidth;\n marker.renderer(html, range, left, top, config);\n }\n else if (marker.type == \"fullLine\") {\n this.drawFullLineMarker(html, range, marker.clazz, config);\n }\n else if (marker.type == \"screenLine\") {\n this.drawScreenLineMarker(html, range, marker.clazz, config);\n }\n else if (range.isMultiLine()) {\n if (marker.type == \"text\")\n this.drawTextMarker(html, range, marker.clazz, config);\n else\n this.drawMultiLineMarker(html, range, marker.clazz, config);\n }\n else {\n this.drawSingleLineMarker(html, range, marker.clazz + \" ace_start\" + \" ace_br15\", config);\n }\n }\n if (this.i != -1) {\n while (this.i < this.element.childElementCount)\n this.element.removeChild(this.element.lastChild);\n }\n };\n Marker.prototype.$getTop = function (row, layerConfig) {\n return (row - layerConfig.firstRowScreen) * layerConfig.lineHeight;\n };\n Marker.prototype.drawTextMarker = function (stringBuilder, range, clazz, layerConfig, extraStyle) {\n var session = this.session;\n var start = range.start.row;\n var end = range.end.row;\n var row = start;\n var prev = 0;\n var curr = 0;\n var next = session.getScreenLastRowColumn(row);\n var lineRange = new Range(row, range.start.column, row, curr);\n for (; row <= end; row++) {\n lineRange.start.row = lineRange.end.row = row;\n lineRange.start.column = row == start ? range.start.column : session.getRowWrapIndent(row);\n lineRange.end.column = next;\n prev = curr;\n curr = next;\n next = row + 1 < end ? session.getScreenLastRowColumn(row + 1) : row == end ? 0 : range.end.column;\n this.drawSingleLineMarker(stringBuilder, lineRange, clazz + (row == start ? \" ace_start\" : \"\") + \" ace_br\"\n + getBorderClass(row == start || row == start + 1 && range.start.column, prev < curr, curr > next, row == end), layerConfig, row == end ? 0 : 1, extraStyle);\n }\n };\n Marker.prototype.drawMultiLineMarker = function (stringBuilder, range, clazz, config, extraStyle) {\n var padding = this.$padding;\n var height = config.lineHeight;\n var top = this.$getTop(range.start.row, config);\n var left = padding + range.start.column * config.characterWidth;\n extraStyle = extraStyle || \"\";\n if (this.session.$bidiHandler.isBidiRow(range.start.row)) {\n var range1 = range.clone();\n range1.end.row = range1.start.row;\n range1.end.column = this.session.getLine(range1.start.row).length;\n this.drawBidiSingleLineMarker(stringBuilder, range1, clazz + \" ace_br1 ace_start\", config, null, extraStyle);\n }\n else {\n this.elt(clazz + \" ace_br1 ace_start\", \"height:\" + height + \"px;\" + \"right:0;\" + \"top:\" + top + \"px;left:\" + left + \"px;\" + (extraStyle || \"\"));\n }\n if (this.session.$bidiHandler.isBidiRow(range.end.row)) {\n var range1 = range.clone();\n range1.start.row = range1.end.row;\n range1.start.column = 0;\n this.drawBidiSingleLineMarker(stringBuilder, range1, clazz + \" ace_br12\", config, null, extraStyle);\n }\n else {\n top = this.$getTop(range.end.row, config);\n var width = range.end.column * config.characterWidth;\n this.elt(clazz + \" ace_br12\", \"height:\" + height + \"px;\" +\n \"width:\" + width + \"px;\" +\n \"top:\" + top + \"px;\" +\n \"left:\" + padding + \"px;\" + (extraStyle || \"\"));\n }\n height = (range.end.row - range.start.row - 1) * config.lineHeight;\n if (height <= 0)\n return;\n top = this.$getTop(range.start.row + 1, config);\n var radiusClass = (range.start.column ? 1 : 0) | (range.end.column ? 0 : 8);\n this.elt(clazz + (radiusClass ? \" ace_br\" + radiusClass : \"\"), \"height:\" + height + \"px;\" +\n \"right:0;\" +\n \"top:\" + top + \"px;\" +\n \"left:\" + padding + \"px;\" + (extraStyle || \"\"));\n };\n Marker.prototype.drawSingleLineMarker = function (stringBuilder, range, clazz, config, extraLength, extraStyle) {\n if (this.session.$bidiHandler.isBidiRow(range.start.row))\n return this.drawBidiSingleLineMarker(stringBuilder, range, clazz, config, extraLength, extraStyle);\n var height = config.lineHeight;\n var width = (range.end.column + (extraLength || 0) - range.start.column) * config.characterWidth;\n var top = this.$getTop(range.start.row, config);\n var left = this.$padding + range.start.column * config.characterWidth;\n this.elt(clazz, \"height:\" + height + \"px;\" +\n \"width:\" + width + \"px;\" +\n \"top:\" + top + \"px;\" +\n \"left:\" + left + \"px;\" + (extraStyle || \"\"));\n };\n Marker.prototype.drawBidiSingleLineMarker = function (stringBuilder, range, clazz, config, extraLength, extraStyle) {\n var height = config.lineHeight, top = this.$getTop(range.start.row, config), padding = this.$padding;\n var selections = this.session.$bidiHandler.getSelections(range.start.column, range.end.column);\n selections.forEach(function (selection) {\n this.elt(clazz, \"height:\" + height + \"px;\" +\n \"width:\" + (selection.width + (extraLength || 0)) + \"px;\" +\n \"top:\" + top + \"px;\" +\n \"left:\" + (padding + selection.left) + \"px;\" + (extraStyle || \"\"));\n }, this);\n };\n Marker.prototype.drawFullLineMarker = function (stringBuilder, range, clazz, config, extraStyle) {\n var top = this.$getTop(range.start.row, config);\n var height = config.lineHeight;\n if (range.start.row != range.end.row)\n height += this.$getTop(range.end.row, config) - top;\n this.elt(clazz, \"height:\" + height + \"px;\" +\n \"top:\" + top + \"px;\" +\n \"left:0;right:0;\" + (extraStyle || \"\"));\n };\n Marker.prototype.drawScreenLineMarker = function (stringBuilder, range, clazz, config, extraStyle) {\n var top = this.$getTop(range.start.row, config);\n var height = config.lineHeight;\n this.elt(clazz, \"height:\" + height + \"px;\" +\n \"top:\" + top + \"px;\" +\n \"left:0;right:0;\" + (extraStyle || \"\"));\n };\n return Marker;\n}());\nMarker.prototype.$padding = 0;\nfunction getBorderClass(tl, tr, br, bl) {\n return (tl ? 1 : 0) | (tr ? 2 : 0) | (br ? 4 : 0) | (bl ? 8 : 0);\n}\nexports.Marker = Marker;\n\n});\n\nace.define(\"ace/layer/text_util\",[\"require\",\"exports\",\"module\"], function(require, exports, module){// Tokens for which Ace just uses a simple TextNode and does not add any special className.\nvar textTokens = new Set([\"text\", \"rparen\", \"lparen\"]);\nexports.isTextToken = function (tokenType) {\n return textTokens.has(tokenType);\n};\n\n});\n\nace.define(\"ace/layer/text\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/dom\",\"ace/lib/lang\",\"ace/layer/lines\",\"ace/lib/event_emitter\",\"ace/config\",\"ace/layer/text_util\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar dom = require(\"../lib/dom\");\nvar lang = require(\"../lib/lang\");\nvar Lines = require(\"./lines\").Lines;\nvar EventEmitter = require(\"../lib/event_emitter\").EventEmitter;\nvar nls = require(\"../config\").nls;\nvar isTextToken = require(\"./text_util\").isTextToken;\nvar Text = /** @class */ (function () {\n function Text(parentEl) {\n this.dom = dom;\n this.element = this.dom.createElement(\"div\");\n this.element.className = \"ace_layer ace_text-layer\";\n parentEl.appendChild(this.element);\n this.$updateEolChar = this.$updateEolChar.bind(this);\n this.$lines = new Lines(this.element);\n }\n Text.prototype.$updateEolChar = function () {\n var doc = this.session.doc;\n var unixMode = doc.getNewLineCharacter() == \"\\n\" && doc.getNewLineMode() != \"windows\";\n var EOL_CHAR = unixMode ? this.EOL_CHAR_LF : this.EOL_CHAR_CRLF;\n if (this.EOL_CHAR != EOL_CHAR) {\n this.EOL_CHAR = EOL_CHAR;\n return true;\n }\n };\n Text.prototype.setPadding = function (padding) {\n this.$padding = padding;\n this.element.style.margin = \"0 \" + padding + \"px\";\n };\n Text.prototype.getLineHeight = function () {\n return this.$fontMetrics.$characterSize.height || 0;\n };\n Text.prototype.getCharacterWidth = function () {\n return this.$fontMetrics.$characterSize.width || 0;\n };\n Text.prototype.$setFontMetrics = function (measure) {\n this.$fontMetrics = measure;\n this.$fontMetrics.on(\"changeCharacterSize\", function (e) {\n this._signal(\"changeCharacterSize\", e);\n }.bind(this));\n this.$pollSizeChanges();\n };\n Text.prototype.checkForSizeChanges = function () {\n this.$fontMetrics.checkForSizeChanges();\n };\n Text.prototype.$pollSizeChanges = function () {\n return this.$pollSizeChangesTimer = this.$fontMetrics.$pollSizeChanges();\n };\n Text.prototype.setSession = function (session) {\n this.session = session;\n if (session)\n this.$computeTabString();\n };\n Text.prototype.setShowInvisibles = function (showInvisibles) {\n if (this.showInvisibles == showInvisibles)\n return false;\n this.showInvisibles = showInvisibles;\n if (typeof showInvisibles == \"string\") {\n this.showSpaces = /tab/i.test(showInvisibles);\n this.showTabs = /space/i.test(showInvisibles);\n this.showEOL = /eol/i.test(showInvisibles);\n }\n else {\n this.showSpaces = this.showTabs = this.showEOL = showInvisibles;\n }\n this.$computeTabString();\n return true;\n };\n Text.prototype.setDisplayIndentGuides = function (display) {\n if (this.displayIndentGuides == display)\n return false;\n this.displayIndentGuides = display;\n this.$computeTabString();\n return true;\n };\n Text.prototype.setHighlightIndentGuides = function (highlight) {\n if (this.$highlightIndentGuides === highlight)\n return false;\n this.$highlightIndentGuides = highlight;\n return highlight;\n };\n Text.prototype.$computeTabString = function () {\n var tabSize = this.session.getTabSize();\n this.tabSize = tabSize;\n var tabStr = this.$tabStrings = [0];\n for (var i = 1; i < tabSize + 1; i++) {\n if (this.showTabs) {\n var span = this.dom.createElement(\"span\");\n span.className = \"ace_invisible ace_invisible_tab\";\n span.textContent = lang.stringRepeat(this.TAB_CHAR, i);\n tabStr.push(span);\n }\n else {\n tabStr.push(this.dom.createTextNode(lang.stringRepeat(\" \", i), this.element));\n }\n }\n if (this.displayIndentGuides) {\n this.$indentGuideRe = /\\s\\S| \\t|\\t |\\s$/;\n var className = \"ace_indent-guide\";\n var spaceClass = this.showSpaces ? \" ace_invisible ace_invisible_space\" : \"\";\n var spaceContent = this.showSpaces\n ? lang.stringRepeat(this.SPACE_CHAR, this.tabSize)\n : lang.stringRepeat(\" \", this.tabSize);\n var tabClass = this.showTabs ? \" ace_invisible ace_invisible_tab\" : \"\";\n var tabContent = this.showTabs\n ? lang.stringRepeat(this.TAB_CHAR, this.tabSize)\n : spaceContent;\n var span = this.dom.createElement(\"span\");\n span.className = className + spaceClass;\n span.textContent = spaceContent;\n this.$tabStrings[\" \"] = span;\n var span = this.dom.createElement(\"span\");\n span.className = className + tabClass;\n span.textContent = tabContent;\n this.$tabStrings[\"\\t\"] = span;\n }\n };\n Text.prototype.updateLines = function (config, firstRow, lastRow) {\n if (this.config.lastRow != config.lastRow ||\n this.config.firstRow != config.firstRow) {\n return this.update(config);\n }\n this.config = config;\n var first = Math.max(firstRow, config.firstRow);\n var last = Math.min(lastRow, config.lastRow);\n var lineElements = this.element.childNodes;\n var lineElementsIdx = 0;\n for (var row = config.firstRow; row < first; row++) {\n var foldLine = this.session.getFoldLine(row);\n if (foldLine) {\n if (foldLine.containsRow(first)) {\n first = foldLine.start.row;\n break;\n }\n else {\n row = foldLine.end.row;\n }\n }\n lineElementsIdx++;\n }\n var heightChanged = false;\n var row = first;\n var foldLine = this.session.getNextFoldLine(row);\n var foldStart = foldLine ? foldLine.start.row : Infinity;\n while (true) {\n if (row > foldStart) {\n row = foldLine.end.row + 1;\n foldLine = this.session.getNextFoldLine(row, foldLine);\n foldStart = foldLine ? foldLine.start.row : Infinity;\n }\n if (row > last)\n break;\n var lineElement = lineElements[lineElementsIdx++];\n if (lineElement) {\n this.dom.removeChildren(lineElement);\n this.$renderLine(lineElement, row, row == foldStart ? foldLine : false);\n if (heightChanged)\n lineElement.style.top = this.$lines.computeLineTop(row, config, this.session) + \"px\";\n var height = (config.lineHeight * this.session.getRowLength(row)) + \"px\";\n if (lineElement.style.height != height) {\n heightChanged = true;\n lineElement.style.height = height;\n }\n }\n row++;\n }\n if (heightChanged) {\n while (lineElementsIdx < this.$lines.cells.length) {\n var cell = this.$lines.cells[lineElementsIdx++];\n cell.element.style.top = this.$lines.computeLineTop(cell.row, config, this.session) + \"px\";\n }\n }\n };\n Text.prototype.scrollLines = function (config) {\n var oldConfig = this.config;\n this.config = config;\n if (this.$lines.pageChanged(oldConfig, config))\n return this.update(config);\n this.$lines.moveContainer(config);\n var lastRow = config.lastRow;\n var oldLastRow = oldConfig ? oldConfig.lastRow : -1;\n if (!oldConfig || oldLastRow < config.firstRow)\n return this.update(config);\n if (lastRow < oldConfig.firstRow)\n return this.update(config);\n if (!oldConfig || oldConfig.lastRow < config.firstRow)\n return this.update(config);\n if (config.lastRow < oldConfig.firstRow)\n return this.update(config);\n if (oldConfig.firstRow < config.firstRow)\n for (var row = this.session.getFoldedRowCount(oldConfig.firstRow, config.firstRow - 1); row > 0; row--)\n this.$lines.shift();\n if (oldConfig.lastRow > config.lastRow)\n for (var row = this.session.getFoldedRowCount(config.lastRow + 1, oldConfig.lastRow); row > 0; row--)\n this.$lines.pop();\n if (config.firstRow < oldConfig.firstRow) {\n this.$lines.unshift(this.$renderLinesFragment(config, config.firstRow, oldConfig.firstRow - 1));\n }\n if (config.lastRow > oldConfig.lastRow) {\n this.$lines.push(this.$renderLinesFragment(config, oldConfig.lastRow + 1, config.lastRow));\n }\n this.$highlightIndentGuide();\n };\n Text.prototype.$renderLinesFragment = function (config, firstRow, lastRow) {\n var fragment = [];\n var row = firstRow;\n var foldLine = this.session.getNextFoldLine(row);\n var foldStart = foldLine ? foldLine.start.row : Infinity;\n while (true) {\n if (row > foldStart) {\n row = foldLine.end.row + 1;\n foldLine = this.session.getNextFoldLine(row, foldLine);\n foldStart = foldLine ? foldLine.start.row : Infinity;\n }\n if (row > lastRow)\n break;\n var line = this.$lines.createCell(row, config, this.session);\n var lineEl = line.element;\n this.dom.removeChildren(lineEl);\n dom.setStyle(lineEl.style, \"height\", this.$lines.computeLineHeight(row, config, this.session) + \"px\");\n dom.setStyle(lineEl.style, \"top\", this.$lines.computeLineTop(row, config, this.session) + \"px\");\n this.$renderLine(lineEl, row, row == foldStart ? foldLine : false);\n if (this.$useLineGroups()) {\n lineEl.className = \"ace_line_group\";\n }\n else {\n lineEl.className = \"ace_line\";\n }\n fragment.push(line);\n row++;\n }\n return fragment;\n };\n Text.prototype.update = function (config) {\n this.$lines.moveContainer(config);\n this.config = config;\n var firstRow = config.firstRow;\n var lastRow = config.lastRow;\n var lines = this.$lines;\n while (lines.getLength())\n lines.pop();\n lines.push(this.$renderLinesFragment(config, firstRow, lastRow));\n };\n Text.prototype.$renderToken = function (parent, screenColumn, token, value) {\n var self = this;\n var re = /(\\t)|( +)|([\\x00-\\x1f\\x80-\\xa0\\xad\\u1680\\u180E\\u2000-\\u200f\\u2028\\u2029\\u202F\\u205F\\uFEFF\\uFFF9-\\uFFFC\\u2066\\u2067\\u2068\\u202A\\u202B\\u202D\\u202E\\u202C\\u2069]+)|(\\u3000)|([\\u1100-\\u115F\\u11A3-\\u11A7\\u11FA-\\u11FF\\u2329-\\u232A\\u2E80-\\u2E99\\u2E9B-\\u2EF3\\u2F00-\\u2FD5\\u2FF0-\\u2FFB\\u3001-\\u303E\\u3041-\\u3096\\u3099-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u3190-\\u31BA\\u31C0-\\u31E3\\u31F0-\\u321E\\u3220-\\u3247\\u3250-\\u32FE\\u3300-\\u4DBF\\u4E00-\\uA48C\\uA490-\\uA4C6\\uA960-\\uA97C\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFAFF\\uFE10-\\uFE19\\uFE30-\\uFE52\\uFE54-\\uFE66\\uFE68-\\uFE6B\\uFF01-\\uFF60\\uFFE0-\\uFFE6]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF])/g;\n var valueFragment = this.dom.createFragment(this.element);\n var m;\n var i = 0;\n while (m = re.exec(value)) {\n var tab = m[1];\n var simpleSpace = m[2];\n var controlCharacter = m[3];\n var cjkSpace = m[4];\n var cjk = m[5];\n if (!self.showSpaces && simpleSpace)\n continue;\n var before = i != m.index ? value.slice(i, m.index) : \"\";\n i = m.index + m[0].length;\n if (before) {\n valueFragment.appendChild(this.dom.createTextNode(before, this.element));\n }\n if (tab) {\n var tabSize = self.session.getScreenTabSize(screenColumn + m.index);\n valueFragment.appendChild(self.$tabStrings[tabSize].cloneNode(true));\n screenColumn += tabSize - 1;\n }\n else if (simpleSpace) {\n if (self.showSpaces) {\n var span = this.dom.createElement(\"span\");\n span.className = \"ace_invisible ace_invisible_space\";\n span.textContent = lang.stringRepeat(self.SPACE_CHAR, simpleSpace.length);\n valueFragment.appendChild(span);\n }\n else {\n valueFragment.appendChild(this.dom.createTextNode(simpleSpace, this.element));\n }\n }\n else if (controlCharacter) {\n var span = this.dom.createElement(\"span\");\n span.className = \"ace_invisible ace_invisible_space ace_invalid\";\n span.textContent = lang.stringRepeat(self.SPACE_CHAR, controlCharacter.length);\n valueFragment.appendChild(span);\n }\n else if (cjkSpace) {\n screenColumn += 1;\n var span = this.dom.createElement(\"span\");\n span.style.width = (self.config.characterWidth * 2) + \"px\";\n span.className = self.showSpaces ? \"ace_cjk ace_invisible ace_invisible_space\" : \"ace_cjk\";\n span.textContent = self.showSpaces ? self.SPACE_CHAR : cjkSpace;\n valueFragment.appendChild(span);\n }\n else if (cjk) {\n screenColumn += 1;\n var span = this.dom.createElement(\"span\");\n span.style.width = (self.config.characterWidth * 2) + \"px\";\n span.className = \"ace_cjk\";\n span.textContent = cjk;\n valueFragment.appendChild(span);\n }\n }\n valueFragment.appendChild(this.dom.createTextNode(i ? value.slice(i) : value, this.element));\n if (!isTextToken(token.type)) {\n var classes = \"ace_\" + token.type.replace(/\\./g, \" ace_\");\n var span = this.dom.createElement(\"span\");\n if (token.type == \"fold\") {\n span.style.width = (token.value.length * this.config.characterWidth) + \"px\";\n span.setAttribute(\"title\", nls(\"Unfold code\"));\n }\n span.className = classes;\n span.appendChild(valueFragment);\n parent.appendChild(span);\n }\n else {\n parent.appendChild(valueFragment);\n }\n return screenColumn + value.length;\n };\n Text.prototype.renderIndentGuide = function (parent, value, max) {\n var cols = value.search(this.$indentGuideRe);\n if (cols <= 0 || cols >= max)\n return value;\n if (value[0] == \" \") {\n cols -= cols % this.tabSize;\n var count = cols / this.tabSize;\n for (var i = 0; i < count; i++) {\n parent.appendChild(this.$tabStrings[\" \"].cloneNode(true));\n }\n this.$highlightIndentGuide();\n return value.substr(cols);\n }\n else if (value[0] == \"\\t\") {\n for (var i = 0; i < cols; i++) {\n parent.appendChild(this.$tabStrings[\"\\t\"].cloneNode(true));\n }\n this.$highlightIndentGuide();\n return value.substr(cols);\n }\n this.$highlightIndentGuide();\n return value;\n };\n Text.prototype.$highlightIndentGuide = function () {\n if (!this.$highlightIndentGuides || !this.displayIndentGuides)\n return;\n this.$highlightIndentGuideMarker = {\n indentLevel: undefined,\n start: undefined,\n end: undefined,\n dir: undefined\n };\n var lines = this.session.doc.$lines;\n if (!lines)\n return;\n var cursor = this.session.selection.getCursor();\n var initialIndent = /^\\s*/.exec(this.session.doc.getLine(cursor.row))[0].length;\n var elementIndentLevel = Math.floor(initialIndent / this.tabSize);\n this.$highlightIndentGuideMarker = {\n indentLevel: elementIndentLevel,\n start: cursor.row\n };\n var bracketHighlight = this.session.$bracketHighlight;\n if (bracketHighlight) {\n var ranges = this.session.$bracketHighlight.ranges;\n for (var i = 0; i < ranges.length; i++) {\n if (cursor.row !== ranges[i].start.row) {\n this.$highlightIndentGuideMarker.end = ranges[i].start.row;\n if (cursor.row > ranges[i].start.row) {\n this.$highlightIndentGuideMarker.dir = -1;\n }\n else {\n this.$highlightIndentGuideMarker.dir = 1;\n }\n break;\n }\n }\n }\n if (!this.$highlightIndentGuideMarker.end) {\n if (lines[cursor.row] !== '' && cursor.column === lines[cursor.row].length) {\n this.$highlightIndentGuideMarker.dir = 1;\n for (var i = cursor.row + 1; i < lines.length; i++) {\n var line = lines[i];\n var currentIndent = /^\\s*/.exec(line)[0].length;\n if (line !== '') {\n this.$highlightIndentGuideMarker.end = i;\n if (currentIndent <= initialIndent)\n break;\n }\n }\n }\n }\n this.$renderHighlightIndentGuide();\n };\n Text.prototype.$clearActiveIndentGuide = function () {\n var cells = this.$lines.cells;\n for (var i = 0; i < cells.length; i++) {\n var cell = cells[i];\n var childNodes = cell.element.childNodes;\n if (childNodes.length > 0) {\n for (var j = 0; j < childNodes.length; j++) {\n if (childNodes[j].classList && childNodes[j].classList.contains(\"ace_indent-guide-active\")) {\n childNodes[j].classList.remove(\"ace_indent-guide-active\");\n break;\n }\n }\n }\n }\n };\n Text.prototype.$setIndentGuideActive = function (cell, indentLevel) {\n var line = this.session.doc.getLine(cell.row);\n if (line !== \"\") {\n var childNodes = cell.element.childNodes;\n if (childNodes) {\n var node = childNodes[indentLevel - 1];\n if (node && node.classList && node.classList.contains(\"ace_indent-guide\"))\n node.classList.add(\"ace_indent-guide-active\");\n }\n }\n };\n Text.prototype.$renderHighlightIndentGuide = function () {\n if (!this.$lines)\n return;\n var cells = this.$lines.cells;\n this.$clearActiveIndentGuide();\n var indentLevel = this.$highlightIndentGuideMarker.indentLevel;\n if (indentLevel !== 0) {\n if (this.$highlightIndentGuideMarker.dir === 1) {\n for (var i = 0; i < cells.length; i++) {\n var cell = cells[i];\n if (this.$highlightIndentGuideMarker.end && cell.row >= this.$highlightIndentGuideMarker.start\n + 1) {\n if (cell.row >= this.$highlightIndentGuideMarker.end)\n break;\n this.$setIndentGuideActive(cell, indentLevel);\n }\n }\n }\n else {\n for (var i = cells.length - 1; i >= 0; i--) {\n var cell = cells[i];\n if (this.$highlightIndentGuideMarker.end && cell.row < this.$highlightIndentGuideMarker.start) {\n if (cell.row <= this.$highlightIndentGuideMarker.end)\n break;\n this.$setIndentGuideActive(cell, indentLevel);\n }\n }\n }\n }\n };\n Text.prototype.$createLineElement = function (parent) {\n var lineEl = this.dom.createElement(\"div\");\n lineEl.className = \"ace_line\";\n lineEl.style.height = this.config.lineHeight + \"px\";\n return lineEl;\n };\n Text.prototype.$renderWrappedLine = function (parent, tokens, splits) {\n var chars = 0;\n var split = 0;\n var splitChars = splits[0];\n var screenColumn = 0;\n var lineEl = this.$createLineElement();\n parent.appendChild(lineEl);\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n var value = token.value;\n if (i == 0 && this.displayIndentGuides) {\n chars = value.length;\n value = this.renderIndentGuide(lineEl, value, splitChars);\n if (!value)\n continue;\n chars -= value.length;\n }\n if (chars + value.length < splitChars) {\n screenColumn = this.$renderToken(lineEl, screenColumn, token, value);\n chars += value.length;\n }\n else {\n while (chars + value.length >= splitChars) {\n screenColumn = this.$renderToken(lineEl, screenColumn, token, value.substring(0, splitChars - chars));\n value = value.substring(splitChars - chars);\n chars = splitChars;\n lineEl = this.$createLineElement();\n parent.appendChild(lineEl);\n lineEl.appendChild(this.dom.createTextNode(lang.stringRepeat(\"\\xa0\", splits.indent), this.element));\n split++;\n screenColumn = 0;\n splitChars = splits[split] || Number.MAX_VALUE;\n }\n if (value.length != 0) {\n chars += value.length;\n screenColumn = this.$renderToken(lineEl, screenColumn, token, value);\n }\n }\n }\n if (splits[splits.length - 1] > this.MAX_LINE_LENGTH)\n this.$renderOverflowMessage(lineEl, screenColumn, null, \"\", true);\n };\n Text.prototype.$renderSimpleLine = function (parent, tokens) {\n var screenColumn = 0;\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n var value = token.value;\n if (i == 0 && this.displayIndentGuides) {\n value = this.renderIndentGuide(parent, value);\n if (!value)\n continue;\n }\n if (screenColumn + value.length > this.MAX_LINE_LENGTH)\n return this.$renderOverflowMessage(parent, screenColumn, token, value);\n screenColumn = this.$renderToken(parent, screenColumn, token, value);\n }\n };\n Text.prototype.$renderOverflowMessage = function (parent, screenColumn, token, value, hide) {\n token && this.$renderToken(parent, screenColumn, token, value.slice(0, this.MAX_LINE_LENGTH - screenColumn));\n var overflowEl = this.dom.createElement(\"span\");\n overflowEl.className = \"ace_inline_button ace_keyword ace_toggle_wrap\";\n overflowEl.textContent = hide ? \"\" : \"\";\n parent.appendChild(overflowEl);\n };\n Text.prototype.$renderLine = function (parent, row, foldLine) {\n if (!foldLine && foldLine != false)\n foldLine = this.session.getFoldLine(row);\n if (foldLine)\n var tokens = this.$getFoldLineTokens(row, foldLine);\n else\n var tokens = this.session.getTokens(row);\n var lastLineEl = parent;\n if (tokens.length) {\n var splits = this.session.getRowSplitData(row);\n if (splits && splits.length) {\n this.$renderWrappedLine(parent, tokens, splits);\n var lastLineEl = parent.lastChild;\n }\n else {\n var lastLineEl = parent;\n if (this.$useLineGroups()) {\n lastLineEl = this.$createLineElement();\n parent.appendChild(lastLineEl);\n }\n this.$renderSimpleLine(lastLineEl, tokens);\n }\n }\n else if (this.$useLineGroups()) {\n lastLineEl = this.$createLineElement();\n parent.appendChild(lastLineEl);\n }\n if (this.showEOL && lastLineEl) {\n if (foldLine)\n row = foldLine.end.row;\n var invisibleEl = this.dom.createElement(\"span\");\n invisibleEl.className = \"ace_invisible ace_invisible_eol\";\n invisibleEl.textContent = row == this.session.getLength() - 1 ? this.EOF_CHAR : this.EOL_CHAR;\n lastLineEl.appendChild(invisibleEl);\n }\n };\n Text.prototype.$getFoldLineTokens = function (row, foldLine) {\n var session = this.session;\n var renderTokens = [];\n function addTokens(tokens, from, to) {\n var idx = 0, col = 0;\n while ((col + tokens[idx].value.length) < from) {\n col += tokens[idx].value.length;\n idx++;\n if (idx == tokens.length)\n return;\n }\n if (col != from) {\n var value = tokens[idx].value.substring(from - col);\n if (value.length > (to - from))\n value = value.substring(0, to - from);\n renderTokens.push({\n type: tokens[idx].type,\n value: value\n });\n col = from + value.length;\n idx += 1;\n }\n while (col < to && idx < tokens.length) {\n var value = tokens[idx].value;\n if (value.length + col > to) {\n renderTokens.push({\n type: tokens[idx].type,\n value: value.substring(0, to - col)\n });\n }\n else\n renderTokens.push(tokens[idx]);\n col += value.length;\n idx += 1;\n }\n }\n var tokens = session.getTokens(row);\n foldLine.walk(function (placeholder, row, column, lastColumn, isNewRow) {\n if (placeholder != null) {\n renderTokens.push({\n type: \"fold\",\n value: placeholder\n });\n }\n else {\n if (isNewRow)\n tokens = session.getTokens(row);\n if (tokens.length)\n addTokens(tokens, lastColumn, column);\n }\n }, foldLine.end.row, this.session.getLine(foldLine.end.row).length);\n return renderTokens;\n };\n Text.prototype.$useLineGroups = function () {\n return this.session.getUseWrapMode();\n };\n return Text;\n}());\nText.prototype.EOF_CHAR = \"\\xB6\";\nText.prototype.EOL_CHAR_LF = \"\\xAC\";\nText.prototype.EOL_CHAR_CRLF = \"\\xa4\";\nText.prototype.EOL_CHAR = Text.prototype.EOL_CHAR_LF;\nText.prototype.TAB_CHAR = \"\\u2014\"; //\"\\u21E5\";\nText.prototype.SPACE_CHAR = \"\\xB7\";\nText.prototype.$padding = 0;\nText.prototype.MAX_LINE_LENGTH = 10000;\nText.prototype.showInvisibles = false;\nText.prototype.showSpaces = false;\nText.prototype.showTabs = false;\nText.prototype.showEOL = false;\nText.prototype.displayIndentGuides = true;\nText.prototype.$highlightIndentGuides = true;\nText.prototype.$tabStrings = [];\nText.prototype.destroy = {};\nText.prototype.onChangeTabSize = Text.prototype.$computeTabString;\noop.implement(Text.prototype, EventEmitter);\nexports.Text = Text;\n\n});\n\nace.define(\"ace/layer/cursor\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"], function(require, exports, module){\"use strict\";\nvar dom = require(\"../lib/dom\");\nvar Cursor = /** @class */ (function () {\n function Cursor(parentEl) {\n this.element = dom.createElement(\"div\");\n this.element.className = \"ace_layer ace_cursor-layer\";\n parentEl.appendChild(this.element);\n this.isVisible = false;\n this.isBlinking = true;\n this.blinkInterval = 1000;\n this.smoothBlinking = false;\n this.cursors = [];\n this.cursor = this.addCursor();\n dom.addCssClass(this.element, \"ace_hidden-cursors\");\n this.$updateCursors = this.$updateOpacity.bind(this);\n }\n Cursor.prototype.$updateOpacity = function (val) {\n var cursors = this.cursors;\n for (var i = cursors.length; i--;)\n dom.setStyle(cursors[i].style, \"opacity\", val ? \"\" : \"0\");\n };\n Cursor.prototype.$startCssAnimation = function () {\n var cursors = this.cursors;\n for (var i = cursors.length; i--;)\n cursors[i].style.animationDuration = this.blinkInterval + \"ms\";\n this.$isAnimating = true;\n setTimeout(function () {\n if (this.$isAnimating) {\n dom.addCssClass(this.element, \"ace_animate-blinking\");\n }\n }.bind(this));\n };\n Cursor.prototype.$stopCssAnimation = function () {\n this.$isAnimating = false;\n dom.removeCssClass(this.element, \"ace_animate-blinking\");\n };\n Cursor.prototype.setPadding = function (padding) {\n this.$padding = padding;\n };\n Cursor.prototype.setSession = function (session) {\n this.session = session;\n };\n Cursor.prototype.setBlinking = function (blinking) {\n if (blinking != this.isBlinking) {\n this.isBlinking = blinking;\n this.restartTimer();\n }\n };\n Cursor.prototype.setBlinkInterval = function (blinkInterval) {\n if (blinkInterval != this.blinkInterval) {\n this.blinkInterval = blinkInterval;\n this.restartTimer();\n }\n };\n Cursor.prototype.setSmoothBlinking = function (smoothBlinking) {\n if (smoothBlinking != this.smoothBlinking) {\n this.smoothBlinking = smoothBlinking;\n dom.setCssClass(this.element, \"ace_smooth-blinking\", smoothBlinking);\n this.$updateCursors(true);\n this.restartTimer();\n }\n };\n Cursor.prototype.addCursor = function () {\n var el = dom.createElement(\"div\");\n el.className = \"ace_cursor\";\n this.element.appendChild(el);\n this.cursors.push(el);\n return el;\n };\n Cursor.prototype.removeCursor = function () {\n if (this.cursors.length > 1) {\n var el = this.cursors.pop();\n el.parentNode.removeChild(el);\n return el;\n }\n };\n Cursor.prototype.hideCursor = function () {\n this.isVisible = false;\n dom.addCssClass(this.element, \"ace_hidden-cursors\");\n this.restartTimer();\n };\n Cursor.prototype.showCursor = function () {\n this.isVisible = true;\n dom.removeCssClass(this.element, \"ace_hidden-cursors\");\n this.restartTimer();\n };\n Cursor.prototype.restartTimer = function () {\n var update = this.$updateCursors;\n clearInterval(this.intervalId);\n clearTimeout(this.timeoutId);\n this.$stopCssAnimation();\n if (this.smoothBlinking) {\n this.$isSmoothBlinking = false;\n dom.removeCssClass(this.element, \"ace_smooth-blinking\");\n }\n update(true);\n if (!this.isBlinking || !this.blinkInterval || !this.isVisible) {\n this.$stopCssAnimation();\n return;\n }\n if (this.smoothBlinking) {\n this.$isSmoothBlinking = true;\n setTimeout(function () {\n if (this.$isSmoothBlinking) {\n dom.addCssClass(this.element, \"ace_smooth-blinking\");\n }\n }.bind(this));\n }\n if (dom.HAS_CSS_ANIMATION) {\n this.$startCssAnimation();\n }\n else {\n var blink = function () {\n this.timeoutId = setTimeout(function () {\n update(false);\n }, 0.6 * this.blinkInterval);\n }.bind(this);\n this.intervalId = setInterval(function () {\n update(true);\n blink();\n }, this.blinkInterval);\n blink();\n }\n };\n Cursor.prototype.getPixelPosition = function (position, onScreen) {\n if (!this.config || !this.session)\n return { left: 0, top: 0 };\n if (!position)\n position = this.session.selection.getCursor();\n var pos = this.session.documentToScreenPosition(position);\n var cursorLeft = this.$padding + (this.session.$bidiHandler.isBidiRow(pos.row, position.row)\n ? this.session.$bidiHandler.getPosLeft(pos.column)\n : pos.column * this.config.characterWidth);\n var cursorTop = (pos.row - (onScreen ? this.config.firstRowScreen : 0)) *\n this.config.lineHeight;\n return { left: cursorLeft, top: cursorTop };\n };\n Cursor.prototype.isCursorInView = function (pixelPos, config) {\n return pixelPos.top >= 0 && pixelPos.top < config.maxHeight;\n };\n Cursor.prototype.update = function (config) {\n this.config = config;\n var selections = this.session.$selectionMarkers;\n var i = 0, cursorIndex = 0;\n if (selections === undefined || selections.length === 0) {\n selections = [{ cursor: null }];\n }\n for (var i = 0, n = selections.length; i < n; i++) {\n var pixelPos = this.getPixelPosition(selections[i].cursor, true);\n if ((pixelPos.top > config.height + config.offset ||\n pixelPos.top < 0) && i > 1) {\n continue;\n }\n var element = this.cursors[cursorIndex++] || this.addCursor();\n var style = element.style;\n if (!this.drawCursor) {\n if (!this.isCursorInView(pixelPos, config)) {\n dom.setStyle(style, \"display\", \"none\");\n }\n else {\n dom.setStyle(style, \"display\", \"block\");\n dom.translate(element, pixelPos.left, pixelPos.top);\n dom.setStyle(style, \"width\", Math.round(config.characterWidth) + \"px\");\n dom.setStyle(style, \"height\", config.lineHeight + \"px\");\n }\n }\n else {\n this.drawCursor(element, pixelPos, config, selections[i], this.session);\n }\n }\n while (this.cursors.length > cursorIndex)\n this.removeCursor();\n var overwrite = this.session.getOverwrite();\n this.$setOverwrite(overwrite);\n this.$pixelPos = pixelPos;\n this.restartTimer();\n };\n Cursor.prototype.$setOverwrite = function (overwrite) {\n if (overwrite != this.overwrite) {\n this.overwrite = overwrite;\n if (overwrite)\n dom.addCssClass(this.element, \"ace_overwrite-cursors\");\n else\n dom.removeCssClass(this.element, \"ace_overwrite-cursors\");\n }\n };\n Cursor.prototype.destroy = function () {\n clearInterval(this.intervalId);\n clearTimeout(this.timeoutId);\n };\n return Cursor;\n}());\nCursor.prototype.$padding = 0;\nCursor.prototype.drawCursor = null;\nexports.Cursor = Cursor;\n\n});\n\nace.define(\"ace/scrollbar\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/dom\",\"ace/lib/event\",\"ace/lib/event_emitter\"], function(require, exports, module){\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar oop = require(\"./lib/oop\");\nvar dom = require(\"./lib/dom\");\nvar event = require(\"./lib/event\");\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar MAX_SCROLL_H = 0x8000;\nvar Scrollbar = /** @class */ (function () {\n function Scrollbar(parent, classSuffix) {\n this.element = dom.createElement(\"div\");\n this.element.className = \"ace_scrollbar ace_scrollbar\" + classSuffix;\n this.inner = dom.createElement(\"div\");\n this.inner.className = \"ace_scrollbar-inner\";\n this.inner.textContent = \"\\xa0\";\n this.element.appendChild(this.inner);\n parent.appendChild(this.element);\n this.setVisible(false);\n this.skipEvent = false;\n event.addListener(this.element, \"scroll\", this.onScroll.bind(this));\n event.addListener(this.element, \"mousedown\", event.preventDefault);\n }\n Scrollbar.prototype.setVisible = function (isVisible) {\n this.element.style.display = isVisible ? \"\" : \"none\";\n this.isVisible = isVisible;\n this.coeff = 1;\n };\n return Scrollbar;\n}());\noop.implement(Scrollbar.prototype, EventEmitter);\nvar VScrollBar = /** @class */ (function (_super) {\n __extends(VScrollBar, _super);\n function VScrollBar(parent, renderer) {\n var _this = _super.call(this, parent, '-v') || this;\n _this.scrollTop = 0;\n _this.scrollHeight = 0;\n renderer.$scrollbarWidth =\n _this.width = dom.scrollbarWidth(parent.ownerDocument);\n _this.inner.style.width =\n _this.element.style.width = (_this.width || 15) + 5 + \"px\";\n _this.$minWidth = 0;\n return _this;\n }\n VScrollBar.prototype.onScroll = function () {\n if (!this.skipEvent) {\n this.scrollTop = this.element.scrollTop;\n if (this.coeff != 1) {\n var h = this.element.clientHeight / this.scrollHeight;\n this.scrollTop = this.scrollTop * (1 - h) / (this.coeff - h);\n }\n this._emit(\"scroll\", { data: this.scrollTop });\n }\n this.skipEvent = false;\n };\n VScrollBar.prototype.getWidth = function () {\n return Math.max(this.isVisible ? this.width : 0, this.$minWidth || 0);\n };\n VScrollBar.prototype.setHeight = function (height) {\n this.element.style.height = height + \"px\";\n };\n VScrollBar.prototype.setScrollHeight = function (height) {\n this.scrollHeight = height;\n if (height > MAX_SCROLL_H) {\n this.coeff = MAX_SCROLL_H / height;\n height = MAX_SCROLL_H;\n }\n else if (this.coeff != 1) {\n this.coeff = 1;\n }\n this.inner.style.height = height + \"px\";\n };\n VScrollBar.prototype.setScrollTop = function (scrollTop) {\n if (this.scrollTop != scrollTop) {\n this.skipEvent = true;\n this.scrollTop = scrollTop;\n this.element.scrollTop = scrollTop * this.coeff;\n }\n };\n return VScrollBar;\n}(Scrollbar));\nVScrollBar.prototype.setInnerHeight = VScrollBar.prototype.setScrollHeight;\nvar HScrollBar = /** @class */ (function (_super) {\n __extends(HScrollBar, _super);\n function HScrollBar(parent, renderer) {\n var _this = _super.call(this, parent, '-h') || this;\n _this.scrollLeft = 0;\n _this.height = renderer.$scrollbarWidth;\n _this.inner.style.height =\n _this.element.style.height = (_this.height || 15) + 5 + \"px\";\n return _this;\n }\n HScrollBar.prototype.onScroll = function () {\n if (!this.skipEvent) {\n this.scrollLeft = this.element.scrollLeft;\n this._emit(\"scroll\", { data: this.scrollLeft });\n }\n this.skipEvent = false;\n };\n HScrollBar.prototype.getHeight = function () {\n return this.isVisible ? this.height : 0;\n };\n HScrollBar.prototype.setWidth = function (width) {\n this.element.style.width = width + \"px\";\n };\n HScrollBar.prototype.setInnerWidth = function (width) {\n this.inner.style.width = width + \"px\";\n };\n HScrollBar.prototype.setScrollWidth = function (width) {\n this.inner.style.width = width + \"px\";\n };\n HScrollBar.prototype.setScrollLeft = function (scrollLeft) {\n if (this.scrollLeft != scrollLeft) {\n this.skipEvent = true;\n this.scrollLeft = this.element.scrollLeft = scrollLeft;\n }\n };\n return HScrollBar;\n}(Scrollbar));\nexports.ScrollBar = VScrollBar; // backward compatibility\nexports.ScrollBarV = VScrollBar; // backward compatibility\nexports.ScrollBarH = HScrollBar; // backward compatibility\nexports.VScrollBar = VScrollBar;\nexports.HScrollBar = HScrollBar;\n\n});\n\nace.define(\"ace/scrollbar_custom\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/dom\",\"ace/lib/event\",\"ace/lib/event_emitter\"], function(require, exports, module){\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar oop = require(\"./lib/oop\");\nvar dom = require(\"./lib/dom\");\nvar event = require(\"./lib/event\");\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\ndom.importCssString(\".ace_editor>.ace_sb-v div, .ace_editor>.ace_sb-h div{\\n position: absolute;\\n background: rgba(128, 128, 128, 0.6);\\n -moz-box-sizing: border-box;\\n box-sizing: border-box;\\n border: 1px solid #bbb;\\n border-radius: 2px;\\n z-index: 8;\\n}\\n.ace_editor>.ace_sb-v, .ace_editor>.ace_sb-h {\\n position: absolute;\\n z-index: 6;\\n background: none;\\n overflow: hidden!important;\\n}\\n.ace_editor>.ace_sb-v {\\n z-index: 6;\\n right: 0;\\n top: 0;\\n width: 12px;\\n}\\n.ace_editor>.ace_sb-v div {\\n z-index: 8;\\n right: 0;\\n width: 100%;\\n}\\n.ace_editor>.ace_sb-h {\\n bottom: 0;\\n left: 0;\\n height: 12px;\\n}\\n.ace_editor>.ace_sb-h div {\\n bottom: 0;\\n height: 100%;\\n}\\n.ace_editor>.ace_sb_grabbed {\\n z-index: 8;\\n background: #000;\\n}\", \"ace_scrollbar.css\", false);\nvar ScrollBar = /** @class */ (function () {\n function ScrollBar(parent, classSuffix) {\n this.element = dom.createElement(\"div\");\n this.element.className = \"ace_sb\" + classSuffix;\n this.inner = dom.createElement(\"div\");\n this.inner.className = \"\";\n this.element.appendChild(this.inner);\n this.VScrollWidth = 12;\n this.HScrollHeight = 12;\n parent.appendChild(this.element);\n this.setVisible(false);\n this.skipEvent = false;\n event.addMultiMouseDownListener(this.element, [500, 300, 300], this, \"onMouseDown\");\n }\n ScrollBar.prototype.setVisible = function (isVisible) {\n this.element.style.display = isVisible ? \"\" : \"none\";\n this.isVisible = isVisible;\n this.coeff = 1;\n };\n return ScrollBar;\n}());\noop.implement(ScrollBar.prototype, EventEmitter);\nvar VScrollBar = /** @class */ (function (_super) {\n __extends(VScrollBar, _super);\n function VScrollBar(parent, renderer) {\n var _this = _super.call(this, parent, '-v') || this;\n _this.scrollTop = 0;\n _this.scrollHeight = 0;\n _this.parent = parent;\n _this.width = _this.VScrollWidth;\n _this.renderer = renderer;\n _this.inner.style.width = _this.element.style.width = (_this.width || 15) + \"px\";\n _this.$minWidth = 0;\n return _this;\n }\n VScrollBar.prototype.onMouseDown = function (eType, e) {\n if (eType !== \"mousedown\")\n return;\n if (event.getButton(e) !== 0 || e.detail === 2) {\n return;\n }\n if (e.target === this.inner) {\n var self = this;\n var mousePageY = e.clientY;\n var onMouseMove = function (e) {\n mousePageY = e.clientY;\n };\n var onMouseUp = function () {\n clearInterval(timerId);\n };\n var startY = e.clientY;\n var startTop = this.thumbTop;\n var onScrollInterval = function () {\n if (mousePageY === undefined)\n return;\n var scrollTop = self.scrollTopFromThumbTop(startTop + mousePageY - startY);\n if (scrollTop === self.scrollTop)\n return;\n self._emit(\"scroll\", { data: scrollTop });\n };\n event.capture(this.inner, onMouseMove, onMouseUp);\n var timerId = setInterval(onScrollInterval, 20);\n return event.preventDefault(e);\n }\n var top = e.clientY - this.element.getBoundingClientRect().top - this.thumbHeight / 2;\n this._emit(\"scroll\", { data: this.scrollTopFromThumbTop(top) });\n return event.preventDefault(e);\n };\n VScrollBar.prototype.getHeight = function () {\n return this.height;\n };\n VScrollBar.prototype.scrollTopFromThumbTop = function (thumbTop) {\n var scrollTop = thumbTop * (this.pageHeight - this.viewHeight) / (this.slideHeight - this.thumbHeight);\n scrollTop = scrollTop >> 0;\n if (scrollTop < 0) {\n scrollTop = 0;\n }\n else if (scrollTop > this.pageHeight - this.viewHeight) {\n scrollTop = this.pageHeight - this.viewHeight;\n }\n return scrollTop;\n };\n VScrollBar.prototype.getWidth = function () {\n return Math.max(this.isVisible ? this.width : 0, this.$minWidth || 0);\n };\n VScrollBar.prototype.setHeight = function (height) {\n this.height = Math.max(0, height);\n this.slideHeight = this.height;\n this.viewHeight = this.height;\n this.setScrollHeight(this.pageHeight, true);\n };\n VScrollBar.prototype.setScrollHeight = function (height, force) {\n if (this.pageHeight === height && !force)\n return;\n this.pageHeight = height;\n this.thumbHeight = this.slideHeight * this.viewHeight / this.pageHeight;\n if (this.thumbHeight > this.slideHeight)\n this.thumbHeight = this.slideHeight;\n if (this.thumbHeight < 15)\n this.thumbHeight = 15;\n this.inner.style.height = this.thumbHeight + \"px\";\n if (this.scrollTop > (this.pageHeight - this.viewHeight)) {\n this.scrollTop = (this.pageHeight - this.viewHeight);\n if (this.scrollTop < 0)\n this.scrollTop = 0;\n this._emit(\"scroll\", { data: this.scrollTop });\n }\n };\n VScrollBar.prototype.setScrollTop = function (scrollTop) {\n this.scrollTop = scrollTop;\n if (scrollTop < 0)\n scrollTop = 0;\n this.thumbTop = scrollTop * (this.slideHeight - this.thumbHeight) / (this.pageHeight - this.viewHeight);\n this.inner.style.top = this.thumbTop + \"px\";\n };\n return VScrollBar;\n}(ScrollBar));\nVScrollBar.prototype.setInnerHeight = VScrollBar.prototype.setScrollHeight;\nvar HScrollBar = /** @class */ (function (_super) {\n __extends(HScrollBar, _super);\n function HScrollBar(parent, renderer) {\n var _this = _super.call(this, parent, '-h') || this;\n _this.scrollLeft = 0;\n _this.scrollWidth = 0;\n _this.height = _this.HScrollHeight;\n _this.inner.style.height = _this.element.style.height = (_this.height || 12) + \"px\";\n _this.renderer = renderer;\n return _this;\n }\n HScrollBar.prototype.onMouseDown = function (eType, e) {\n if (eType !== \"mousedown\")\n return;\n if (event.getButton(e) !== 0 || e.detail === 2) {\n return;\n }\n if (e.target === this.inner) {\n var self = this;\n var mousePageX = e.clientX;\n var onMouseMove = function (e) {\n mousePageX = e.clientX;\n };\n var onMouseUp = function () {\n clearInterval(timerId);\n };\n var startX = e.clientX;\n var startLeft = this.thumbLeft;\n var onScrollInterval = function () {\n if (mousePageX === undefined)\n return;\n var scrollLeft = self.scrollLeftFromThumbLeft(startLeft + mousePageX - startX);\n if (scrollLeft === self.scrollLeft)\n return;\n self._emit(\"scroll\", { data: scrollLeft });\n };\n event.capture(this.inner, onMouseMove, onMouseUp);\n var timerId = setInterval(onScrollInterval, 20);\n return event.preventDefault(e);\n }\n var left = e.clientX - this.element.getBoundingClientRect().left - this.thumbWidth / 2;\n this._emit(\"scroll\", { data: this.scrollLeftFromThumbLeft(left) });\n return event.preventDefault(e);\n };\n HScrollBar.prototype.getHeight = function () {\n return this.isVisible ? this.height : 0;\n };\n HScrollBar.prototype.scrollLeftFromThumbLeft = function (thumbLeft) {\n var scrollLeft = thumbLeft * (this.pageWidth - this.viewWidth) / (this.slideWidth - this.thumbWidth);\n scrollLeft = scrollLeft >> 0;\n if (scrollLeft < 0) {\n scrollLeft = 0;\n }\n else if (scrollLeft > this.pageWidth - this.viewWidth) {\n scrollLeft = this.pageWidth - this.viewWidth;\n }\n return scrollLeft;\n };\n HScrollBar.prototype.setWidth = function (width) {\n this.width = Math.max(0, width);\n this.element.style.width = this.width + \"px\";\n this.slideWidth = this.width;\n this.viewWidth = this.width;\n this.setScrollWidth(this.pageWidth, true);\n };\n HScrollBar.prototype.setScrollWidth = function (width, force) {\n if (this.pageWidth === width && !force)\n return;\n this.pageWidth = width;\n this.thumbWidth = this.slideWidth * this.viewWidth / this.pageWidth;\n if (this.thumbWidth > this.slideWidth)\n this.thumbWidth = this.slideWidth;\n if (this.thumbWidth < 15)\n this.thumbWidth = 15;\n this.inner.style.width = this.thumbWidth + \"px\";\n if (this.scrollLeft > (this.pageWidth - this.viewWidth)) {\n this.scrollLeft = (this.pageWidth - this.viewWidth);\n if (this.scrollLeft < 0)\n this.scrollLeft = 0;\n this._emit(\"scroll\", { data: this.scrollLeft });\n }\n };\n HScrollBar.prototype.setScrollLeft = function (scrollLeft) {\n this.scrollLeft = scrollLeft;\n if (scrollLeft < 0)\n scrollLeft = 0;\n this.thumbLeft = scrollLeft * (this.slideWidth - this.thumbWidth) / (this.pageWidth - this.viewWidth);\n this.inner.style.left = (this.thumbLeft) + \"px\";\n };\n return HScrollBar;\n}(ScrollBar));\nHScrollBar.prototype.setInnerWidth = HScrollBar.prototype.setScrollWidth;\nexports.ScrollBar = VScrollBar; // backward compatibility\nexports.ScrollBarV = VScrollBar; // backward compatibility\nexports.ScrollBarH = HScrollBar; // backward compatibility\nexports.VScrollBar = VScrollBar;\nexports.HScrollBar = HScrollBar;\n\n});\n\nace.define(\"ace/renderloop\",[\"require\",\"exports\",\"module\",\"ace/lib/event\"], function(require, exports, module){\"use strict\";\nvar event = require(\"./lib/event\");\nvar RenderLoop = /** @class */ (function () {\n function RenderLoop(onRender, win) {\n this.onRender = onRender;\n this.pending = false;\n this.changes = 0;\n this.$recursionLimit = 2;\n this.window = win || window;\n var _self = this;\n this._flush = function (ts) {\n _self.pending = false;\n var changes = _self.changes;\n if (changes) {\n event.blockIdle(100);\n _self.changes = 0;\n _self.onRender(changes);\n }\n if (_self.changes) {\n if (_self.$recursionLimit-- < 0)\n return;\n _self.schedule();\n }\n else {\n _self.$recursionLimit = 2;\n }\n };\n }\n RenderLoop.prototype.schedule = function (change) {\n this.changes = this.changes | change;\n if (this.changes && !this.pending) {\n event.nextFrame(this._flush);\n this.pending = true;\n }\n };\n RenderLoop.prototype.clear = function (change) {\n var changes = this.changes;\n this.changes = 0;\n return changes;\n };\n return RenderLoop;\n}());\nexports.RenderLoop = RenderLoop;\n\n});\n\nace.define(\"ace/layer/font_metrics\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/dom\",\"ace/lib/lang\",\"ace/lib/event\",\"ace/lib/useragent\",\"ace/lib/event_emitter\"], function(require, exports, module){var oop = require(\"../lib/oop\");\nvar dom = require(\"../lib/dom\");\nvar lang = require(\"../lib/lang\");\nvar event = require(\"../lib/event\");\nvar useragent = require(\"../lib/useragent\");\nvar EventEmitter = require(\"../lib/event_emitter\").EventEmitter;\nvar CHAR_COUNT = 512;\nvar USE_OBSERVER = typeof ResizeObserver == \"function\";\nvar L = 200;\nvar FontMetrics = /** @class */ (function () {\n function FontMetrics(parentEl) {\n this.el = dom.createElement(\"div\");\n this.$setMeasureNodeStyles(this.el.style, true);\n this.$main = dom.createElement(\"div\");\n this.$setMeasureNodeStyles(this.$main.style);\n this.$measureNode = dom.createElement(\"div\");\n this.$setMeasureNodeStyles(this.$measureNode.style);\n this.el.appendChild(this.$main);\n this.el.appendChild(this.$measureNode);\n parentEl.appendChild(this.el);\n this.$measureNode.textContent = lang.stringRepeat(\"X\", CHAR_COUNT);\n this.$characterSize = { width: 0, height: 0 };\n if (USE_OBSERVER)\n this.$addObserver();\n else\n this.checkForSizeChanges();\n }\n FontMetrics.prototype.$setMeasureNodeStyles = function (style, isRoot) {\n style.width = style.height = \"auto\";\n style.left = style.top = \"0px\";\n style.visibility = \"hidden\";\n style.position = \"absolute\";\n style.whiteSpace = \"pre\";\n if (useragent.isIE < 8) {\n style[\"font-family\"] = \"inherit\";\n }\n else {\n style.font = \"inherit\";\n }\n style.overflow = isRoot ? \"hidden\" : \"visible\";\n };\n FontMetrics.prototype.checkForSizeChanges = function (size) {\n if (size === undefined)\n size = this.$measureSizes();\n if (size && (this.$characterSize.width !== size.width || this.$characterSize.height !== size.height)) {\n this.$measureNode.style.fontWeight = \"bold\";\n var boldSize = this.$measureSizes();\n this.$measureNode.style.fontWeight = \"\";\n this.$characterSize = size;\n this.charSizes = Object.create(null);\n this.allowBoldFonts = boldSize && boldSize.width === size.width && boldSize.height === size.height;\n this._emit(\"changeCharacterSize\", { data: size });\n }\n };\n FontMetrics.prototype.$addObserver = function () {\n var self = this;\n this.$observer = new window.ResizeObserver(function (e) {\n self.checkForSizeChanges();\n });\n this.$observer.observe(this.$measureNode);\n };\n FontMetrics.prototype.$pollSizeChanges = function () {\n if (this.$pollSizeChangesTimer || this.$observer)\n return this.$pollSizeChangesTimer;\n var self = this;\n return this.$pollSizeChangesTimer = event.onIdle(function cb() {\n self.checkForSizeChanges();\n event.onIdle(cb, 500);\n }, 500);\n };\n FontMetrics.prototype.setPolling = function (val) {\n if (val) {\n this.$pollSizeChanges();\n }\n else if (this.$pollSizeChangesTimer) {\n clearInterval(this.$pollSizeChangesTimer);\n this.$pollSizeChangesTimer = 0;\n }\n };\n FontMetrics.prototype.$measureSizes = function (node) {\n var size = {\n height: (node || this.$measureNode).clientHeight,\n width: (node || this.$measureNode).clientWidth / CHAR_COUNT\n };\n if (size.width === 0 || size.height === 0)\n return null;\n return size;\n };\n FontMetrics.prototype.$measureCharWidth = function (ch) {\n this.$main.textContent = lang.stringRepeat(ch, CHAR_COUNT);\n var rect = this.$main.getBoundingClientRect();\n return rect.width / CHAR_COUNT;\n };\n FontMetrics.prototype.getCharacterWidth = function (ch) {\n var w = this.charSizes[ch];\n if (w === undefined) {\n w = this.charSizes[ch] = this.$measureCharWidth(ch) / this.$characterSize.width;\n }\n return w;\n };\n FontMetrics.prototype.destroy = function () {\n clearInterval(this.$pollSizeChangesTimer);\n if (this.$observer)\n this.$observer.disconnect();\n if (this.el && this.el.parentNode)\n this.el.parentNode.removeChild(this.el);\n };\n FontMetrics.prototype.$getZoom = function (element) {\n if (!element || !element.parentElement)\n return 1;\n return (window.getComputedStyle(element).zoom || 1) * this.$getZoom(element.parentElement);\n };\n FontMetrics.prototype.$initTransformMeasureNodes = function () {\n var t = function (t, l) {\n return [\"div\", {\n style: \"position: absolute;top:\" + t + \"px;left:\" + l + \"px;\"\n }];\n };\n this.els = dom.buildDom([t(0, 0), t(L, 0), t(0, L), t(L, L)], this.el);\n };\n FontMetrics.prototype.transformCoordinates = function (clientPos, elPos) {\n if (clientPos) {\n var zoom = this.$getZoom(this.el);\n clientPos = mul(1 / zoom, clientPos);\n }\n function solve(l1, l2, r) {\n var det = l1[1] * l2[0] - l1[0] * l2[1];\n return [\n (-l2[1] * r[0] + l2[0] * r[1]) / det,\n (+l1[1] * r[0] - l1[0] * r[1]) / det\n ];\n }\n function sub(a, b) { return [a[0] - b[0], a[1] - b[1]]; }\n function add(a, b) { return [a[0] + b[0], a[1] + b[1]]; }\n function mul(a, b) { return [a * b[0], a * b[1]]; }\n if (!this.els)\n this.$initTransformMeasureNodes();\n function p(el) {\n var r = el.getBoundingClientRect();\n return [r.left, r.top];\n }\n var a = p(this.els[0]);\n var b = p(this.els[1]);\n var c = p(this.els[2]);\n var d = p(this.els[3]);\n var h = solve(sub(d, b), sub(d, c), sub(add(b, c), add(d, a)));\n var m1 = mul(1 + h[0], sub(b, a));\n var m2 = mul(1 + h[1], sub(c, a));\n if (elPos) {\n var x = elPos;\n var k = h[0] * x[0] / L + h[1] * x[1] / L + 1;\n var ut = add(mul(x[0], m1), mul(x[1], m2));\n return add(mul(1 / k / L, ut), a);\n }\n var u = sub(clientPos, a);\n var f = solve(sub(m1, mul(h[0], u)), sub(m2, mul(h[1], u)), u);\n return mul(L, f);\n };\n return FontMetrics;\n}());\nFontMetrics.prototype.$characterSize = { width: 0, height: 0 };\noop.implement(FontMetrics.prototype, EventEmitter);\nexports.FontMetrics = FontMetrics;\n\n});\n\nace.define(\"ace/css/editor-css\",[\"require\",\"exports\",\"module\"], function(require, exports, module){/*\nstyles = []\nfor (var i = 1; i < 16; i++) {\n styles.push(\".ace_br\" + i + \"{\" + (\n [\"top-left\", \"top-right\", \"bottom-right\", \"bottom-left\"]\n ).map(function(x, j) {\n return i & (1< .ace_line, .ace_text-layer > .ace_line_group {\\n contain: style size layout;\\n position: absolute;\\n top: 0;\\n left: 0;\\n right: 0;\\n}\\n\\n.ace_hidpi .ace_text-layer,\\n.ace_hidpi .ace_gutter-layer,\\n.ace_hidpi .ace_content,\\n.ace_hidpi .ace_gutter {\\n contain: strict;\\n}\\n.ace_hidpi .ace_text-layer > .ace_line, \\n.ace_hidpi .ace_text-layer > .ace_line_group {\\n contain: strict;\\n}\\n\\n.ace_cjk {\\n display: inline-block;\\n text-align: center;\\n}\\n\\n.ace_cursor-layer {\\n z-index: 4;\\n}\\n\\n.ace_cursor {\\n z-index: 4;\\n position: absolute;\\n box-sizing: border-box;\\n border-left: 2px solid;\\n /* workaround for smooth cursor repaintng whole screen in chrome */\\n transform: translatez(0);\\n}\\n\\n.ace_multiselect .ace_cursor {\\n border-left-width: 1px;\\n}\\n\\n.ace_slim-cursors .ace_cursor {\\n border-left-width: 1px;\\n}\\n\\n.ace_overwrite-cursors .ace_cursor {\\n border-left-width: 0;\\n border-bottom: 1px solid;\\n}\\n\\n.ace_hidden-cursors .ace_cursor {\\n opacity: 0.2;\\n}\\n\\n.ace_hasPlaceholder .ace_hidden-cursors .ace_cursor {\\n opacity: 0;\\n}\\n\\n.ace_smooth-blinking .ace_cursor {\\n transition: opacity 0.18s;\\n}\\n\\n.ace_animate-blinking .ace_cursor {\\n animation-duration: 1000ms;\\n animation-timing-function: step-end;\\n animation-name: blink-ace-animate;\\n animation-iteration-count: infinite;\\n}\\n\\n.ace_animate-blinking.ace_smooth-blinking .ace_cursor {\\n animation-duration: 1000ms;\\n animation-timing-function: ease-in-out;\\n animation-name: blink-ace-animate-smooth;\\n}\\n \\n@keyframes blink-ace-animate {\\n from, to { opacity: 1; }\\n 60% { opacity: 0; }\\n}\\n\\n@keyframes blink-ace-animate-smooth {\\n from, to { opacity: 1; }\\n 45% { opacity: 1; }\\n 60% { opacity: 0; }\\n 85% { opacity: 0; }\\n}\\n\\n.ace_marker-layer .ace_step, .ace_marker-layer .ace_stack {\\n position: absolute;\\n z-index: 3;\\n}\\n\\n.ace_marker-layer .ace_selection {\\n position: absolute;\\n z-index: 5;\\n}\\n\\n.ace_marker-layer .ace_bracket {\\n position: absolute;\\n z-index: 6;\\n}\\n\\n.ace_marker-layer .ace_error_bracket {\\n position: absolute;\\n border-bottom: 1px solid #DE5555;\\n border-radius: 0;\\n}\\n\\n.ace_marker-layer .ace_active-line {\\n position: absolute;\\n z-index: 2;\\n}\\n\\n.ace_marker-layer .ace_selected-word {\\n position: absolute;\\n z-index: 4;\\n box-sizing: border-box;\\n}\\n\\n.ace_line .ace_fold {\\n box-sizing: border-box;\\n\\n display: inline-block;\\n height: 11px;\\n margin-top: -2px;\\n vertical-align: middle;\\n\\n background-image:\\n url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII=\\\"),\\n url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACJJREFUeNpi+P//fxgTAwPDBxDxD078RSX+YeEyDFMCIMAAI3INmXiwf2YAAAAASUVORK5CYII=\\\");\\n background-repeat: no-repeat, repeat-x;\\n background-position: center center, top left;\\n color: transparent;\\n\\n border: 1px solid black;\\n border-radius: 2px;\\n\\n cursor: pointer;\\n pointer-events: auto;\\n}\\n\\n.ace_dark .ace_fold {\\n}\\n\\n.ace_fold:hover{\\n background-image:\\n url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII=\\\"),\\n url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACBJREFUeNpi+P//fz4TAwPDZxDxD5X4i5fLMEwJgAADAEPVDbjNw87ZAAAAAElFTkSuQmCC\\\");\\n}\\n\\n.ace_tooltip {\\n background-color: #f5f5f5;\\n border: 1px solid gray;\\n border-radius: 1px;\\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);\\n color: black;\\n max-width: 100%;\\n padding: 3px 4px;\\n position: fixed;\\n z-index: 999999;\\n box-sizing: border-box;\\n cursor: default;\\n white-space: pre-wrap;\\n word-wrap: break-word;\\n line-height: normal;\\n font-style: normal;\\n font-weight: normal;\\n letter-spacing: normal;\\n pointer-events: none;\\n overflow: auto;\\n max-width: min(60em, 66vw);\\n}\\n.ace_tooltip pre {\\n white-space: pre-wrap;\\n}\\n\\n.ace_tooltip.ace_dark {\\n background-color: #636363;\\n color: #fff;\\n}\\n\\n.ace_tooltip:focus {\\n outline: 1px solid #5E9ED6;\\n}\\n\\n.ace_icon {\\n display: inline-block;\\n width: 18px;\\n vertical-align: top;\\n}\\n\\n.ace_icon_svg {\\n display: inline-block;\\n width: 12px;\\n vertical-align: top;\\n -webkit-mask-repeat: no-repeat;\\n -webkit-mask-size: 12px;\\n -webkit-mask-position: center;\\n}\\n\\n.ace_folding-enabled > .ace_gutter-cell, .ace_folding-enabled > .ace_gutter-cell_svg-icons {\\n padding-right: 13px;\\n}\\n\\n.ace_fold-widget {\\n box-sizing: border-box;\\n\\n margin: 0 -12px 0 1px;\\n display: none;\\n width: 11px;\\n vertical-align: top;\\n\\n background-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42mWKsQ0AMAzC8ixLlrzQjzmBiEjp0A6WwBCSPgKAXoLkqSot7nN3yMwR7pZ32NzpKkVoDBUxKAAAAABJRU5ErkJggg==\\\");\\n background-repeat: no-repeat;\\n background-position: center;\\n\\n border-radius: 3px;\\n \\n border: 1px solid transparent;\\n cursor: pointer;\\n}\\n\\n.ace_folding-enabled .ace_fold-widget {\\n display: inline-block; \\n}\\n\\n.ace_fold-widget.ace_end {\\n background-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42m3HwQkAMAhD0YzsRchFKI7sAikeWkrxwScEB0nh5e7KTPWimZki4tYfVbX+MNl4pyZXejUO1QAAAABJRU5ErkJggg==\\\");\\n}\\n\\n.ace_fold-widget.ace_closed {\\n background-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAGCAYAAAAG5SQMAAAAOUlEQVR42jXKwQkAMAgDwKwqKD4EwQ26sSOkVWjgIIHAzPiCgaqiqnJHZnKICBERHN194O5b9vbLuAVRL+l0YWnZAAAAAElFTkSuQmCCXA==\\\");\\n}\\n\\n.ace_fold-widget:hover {\\n border: 1px solid rgba(0, 0, 0, 0.3);\\n background-color: rgba(255, 255, 255, 0.2);\\n box-shadow: 0 1px 1px rgba(255, 255, 255, 0.7);\\n}\\n\\n.ace_fold-widget:active {\\n border: 1px solid rgba(0, 0, 0, 0.4);\\n background-color: rgba(0, 0, 0, 0.05);\\n box-shadow: 0 1px 1px rgba(255, 255, 255, 0.8);\\n}\\n/**\\n * Dark version for fold widgets\\n */\\n.ace_dark .ace_fold-widget {\\n background-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHklEQVQIW2P4//8/AzoGEQ7oGCaLLAhWiSwB146BAQCSTPYocqT0AAAAAElFTkSuQmCC\\\");\\n}\\n.ace_dark .ace_fold-widget.ace_end {\\n background-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAH0lEQVQIW2P4//8/AxQ7wNjIAjDMgC4AxjCVKBirIAAF0kz2rlhxpAAAAABJRU5ErkJggg==\\\");\\n}\\n.ace_dark .ace_fold-widget.ace_closed {\\n background-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAFCAYAAACAcVaiAAAAHElEQVQIW2P4//+/AxAzgDADlOOAznHAKgPWAwARji8UIDTfQQAAAABJRU5ErkJggg==\\\");\\n}\\n.ace_dark .ace_fold-widget:hover {\\n box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);\\n background-color: rgba(255, 255, 255, 0.1);\\n}\\n.ace_dark .ace_fold-widget:active {\\n box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);\\n}\\n\\n.ace_inline_button {\\n border: 1px solid lightgray;\\n display: inline-block;\\n margin: -1px 8px;\\n padding: 0 5px;\\n pointer-events: auto;\\n cursor: pointer;\\n}\\n.ace_inline_button:hover {\\n border-color: gray;\\n background: rgba(200,200,200,0.2);\\n display: inline-block;\\n pointer-events: auto;\\n}\\n\\n.ace_fold-widget.ace_invalid {\\n background-color: #FFB4B4;\\n border-color: #DE5555;\\n}\\n\\n.ace_fade-fold-widgets .ace_fold-widget {\\n transition: opacity 0.4s ease 0.05s;\\n opacity: 0;\\n}\\n\\n.ace_fade-fold-widgets:hover .ace_fold-widget {\\n transition: opacity 0.05s ease 0.05s;\\n opacity:1;\\n}\\n\\n.ace_underline {\\n text-decoration: underline;\\n}\\n\\n.ace_bold {\\n font-weight: bold;\\n}\\n\\n.ace_nobold .ace_bold {\\n font-weight: normal;\\n}\\n\\n.ace_italic {\\n font-style: italic;\\n}\\n\\n\\n.ace_error-marker {\\n background-color: rgba(255, 0, 0,0.2);\\n position: absolute;\\n z-index: 9;\\n}\\n\\n.ace_highlight-marker {\\n background-color: rgba(255, 255, 0,0.2);\\n position: absolute;\\n z-index: 8;\\n}\\n\\n.ace_mobile-menu {\\n position: absolute;\\n line-height: 1.5;\\n border-radius: 4px;\\n -ms-user-select: none;\\n -moz-user-select: none;\\n -webkit-user-select: none;\\n user-select: none;\\n background: white;\\n box-shadow: 1px 3px 2px grey;\\n border: 1px solid #dcdcdc;\\n color: black;\\n}\\n.ace_dark > .ace_mobile-menu {\\n background: #333;\\n color: #ccc;\\n box-shadow: 1px 3px 2px grey;\\n border: 1px solid #444;\\n\\n}\\n.ace_mobile-button {\\n padding: 2px;\\n cursor: pointer;\\n overflow: hidden;\\n}\\n.ace_mobile-button:hover {\\n background-color: #eee;\\n opacity:1;\\n}\\n.ace_mobile-button:active {\\n background-color: #ddd;\\n}\\n\\n.ace_placeholder {\\n font-family: arial;\\n transform: scale(0.9);\\n transform-origin: left;\\n white-space: pre;\\n opacity: 0.7;\\n margin: 0 10px;\\n}\\n\\n.ace_ghost_text {\\n opacity: 0.5;\\n font-style: italic;\\n white-space: pre;\\n}\\n\\n.ace_screenreader-only {\\n position:absolute;\\n left:-10000px;\\n top:auto;\\n width:1px;\\n height:1px;\\n overflow:hidden;\\n}\";\n\n});\n\nace.define(\"ace/layer/decorators\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\",\"ace/lib/oop\",\"ace/lib/event_emitter\"], function(require, exports, module){\"use strict\";\nvar dom = require(\"../lib/dom\");\nvar oop = require(\"../lib/oop\");\nvar EventEmitter = require(\"../lib/event_emitter\").EventEmitter;\nvar Decorator = /** @class */ (function () {\n function Decorator(parent, renderer) {\n this.canvas = dom.createElement(\"canvas\");\n this.renderer = renderer;\n this.pixelRatio = 1;\n this.maxHeight = renderer.layerConfig.maxHeight;\n this.lineHeight = renderer.layerConfig.lineHeight;\n this.canvasHeight = parent.parent.scrollHeight;\n this.heightRatio = this.canvasHeight / this.maxHeight;\n this.canvasWidth = parent.width;\n this.minDecorationHeight = (2 * this.pixelRatio) | 0;\n this.halfMinDecorationHeight = (this.minDecorationHeight / 2) | 0;\n this.canvas.width = this.canvasWidth;\n this.canvas.height = this.canvasHeight;\n this.canvas.style.top = 0 + \"px\";\n this.canvas.style.right = 0 + \"px\";\n this.canvas.style.zIndex = 7 + \"px\";\n this.canvas.style.position = \"absolute\";\n this.colors = {};\n this.colors.dark = {\n \"error\": \"rgba(255, 18, 18, 1)\",\n \"warning\": \"rgba(18, 136, 18, 1)\",\n \"info\": \"rgba(18, 18, 136, 1)\"\n };\n this.colors.light = {\n \"error\": \"rgb(255,51,51)\",\n \"warning\": \"rgb(32,133,72)\",\n \"info\": \"rgb(35,68,138)\"\n };\n parent.element.appendChild(this.canvas);\n }\n Decorator.prototype.$updateDecorators = function (config) {\n var colors = (this.renderer.theme.isDark === true) ? this.colors.dark : this.colors.light;\n if (config) {\n this.maxHeight = config.maxHeight;\n this.lineHeight = config.lineHeight;\n this.canvasHeight = config.height;\n var allLineHeight = (config.lastRow + 1) * this.lineHeight;\n if (allLineHeight < this.canvasHeight) {\n this.heightRatio = 1;\n }\n else {\n this.heightRatio = this.canvasHeight / this.maxHeight;\n }\n }\n var ctx = this.canvas.getContext(\"2d\");\n function compare(a, b) {\n if (a.priority < b.priority)\n return -1;\n if (a.priority > b.priority)\n return 1;\n return 0;\n }\n var annotations = this.renderer.session.$annotations;\n ctx.clearRect(0, 0, this.canvas.width, this.canvas.height);\n if (annotations) {\n var priorities = {\n \"info\": 1,\n \"warning\": 2,\n \"error\": 3\n };\n annotations.forEach(function (item) {\n item.priority = priorities[item.type] || null;\n });\n annotations = annotations.sort(compare);\n var foldData = this.renderer.session.$foldData;\n for (var i = 0; i < annotations.length; i++) {\n var row = annotations[i].row;\n var compensateFold = this.compensateFoldRows(row, foldData);\n var currentY = Math.round((row - compensateFold) * this.lineHeight * this.heightRatio);\n var y1 = Math.round(((row - compensateFold) * this.lineHeight * this.heightRatio));\n var y2 = Math.round((((row - compensateFold) * this.lineHeight + this.lineHeight) * this.heightRatio));\n var height = y2 - y1;\n if (height < this.minDecorationHeight) {\n var yCenter = ((y1 + y2) / 2) | 0;\n if (yCenter < this.halfMinDecorationHeight) {\n yCenter = this.halfMinDecorationHeight;\n }\n else if (yCenter + this.halfMinDecorationHeight > this.canvasHeight) {\n yCenter = this.canvasHeight - this.halfMinDecorationHeight;\n }\n y1 = Math.round(yCenter - this.halfMinDecorationHeight);\n y2 = Math.round(yCenter + this.halfMinDecorationHeight);\n }\n ctx.fillStyle = colors[annotations[i].type] || null;\n ctx.fillRect(0, currentY, this.canvasWidth, y2 - y1);\n }\n }\n var cursor = this.renderer.session.selection.getCursor();\n if (cursor) {\n var compensateFold = this.compensateFoldRows(cursor.row, foldData);\n var currentY = Math.round((cursor.row - compensateFold) * this.lineHeight * this.heightRatio);\n ctx.fillStyle = \"rgba(0, 0, 0, 0.5)\";\n ctx.fillRect(0, currentY, this.canvasWidth, 2);\n }\n };\n Decorator.prototype.compensateFoldRows = function (row, foldData) {\n var compensateFold = 0;\n if (foldData && foldData.length > 0) {\n for (var j = 0; j < foldData.length; j++) {\n if (row > foldData[j].start.row && row < foldData[j].end.row) {\n compensateFold += row - foldData[j].start.row;\n }\n else if (row >= foldData[j].end.row) {\n compensateFold += foldData[j].end.row - foldData[j].start.row;\n }\n }\n }\n return compensateFold;\n };\n return Decorator;\n}());\noop.implement(Decorator.prototype, EventEmitter);\nexports.Decorator = Decorator;\n\n});\n\nace.define(\"ace/virtual_renderer\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/dom\",\"ace/lib/lang\",\"ace/config\",\"ace/layer/gutter\",\"ace/layer/marker\",\"ace/layer/text\",\"ace/layer/cursor\",\"ace/scrollbar\",\"ace/scrollbar\",\"ace/scrollbar_custom\",\"ace/scrollbar_custom\",\"ace/renderloop\",\"ace/layer/font_metrics\",\"ace/lib/event_emitter\",\"ace/css/editor-css\",\"ace/layer/decorators\",\"ace/lib/useragent\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"./lib/oop\");\nvar dom = require(\"./lib/dom\");\nvar lang = require(\"./lib/lang\");\nvar config = require(\"./config\");\nvar GutterLayer = require(\"./layer/gutter\").Gutter;\nvar MarkerLayer = require(\"./layer/marker\").Marker;\nvar TextLayer = require(\"./layer/text\").Text;\nvar CursorLayer = require(\"./layer/cursor\").Cursor;\nvar HScrollBar = require(\"./scrollbar\").HScrollBar;\nvar VScrollBar = require(\"./scrollbar\").VScrollBar;\nvar HScrollBarCustom = require(\"./scrollbar_custom\").HScrollBar;\nvar VScrollBarCustom = require(\"./scrollbar_custom\").VScrollBar;\nvar RenderLoop = require(\"./renderloop\").RenderLoop;\nvar FontMetrics = require(\"./layer/font_metrics\").FontMetrics;\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar editorCss = require(\"./css/editor-css\");\nvar Decorator = require(\"./layer/decorators\").Decorator;\nvar useragent = require(\"./lib/useragent\");\ndom.importCssString(editorCss, \"ace_editor.css\", false);\nvar VirtualRenderer = /** @class */ (function () {\n function VirtualRenderer(container, theme) {\n var _self = this;\n this.container = container || dom.createElement(\"div\");\n dom.addCssClass(this.container, \"ace_editor\");\n if (dom.HI_DPI)\n dom.addCssClass(this.container, \"ace_hidpi\");\n this.setTheme(theme);\n if (config.get(\"useStrictCSP\") == null)\n config.set(\"useStrictCSP\", false);\n this.$gutter = dom.createElement(\"div\");\n this.$gutter.className = \"ace_gutter\";\n this.container.appendChild(this.$gutter);\n this.$gutter.setAttribute(\"aria-hidden\", true);\n this.scroller = dom.createElement(\"div\");\n this.scroller.className = \"ace_scroller\";\n this.container.appendChild(this.scroller);\n this.content = dom.createElement(\"div\");\n this.content.className = \"ace_content\";\n this.scroller.appendChild(this.content);\n this.$gutterLayer = new GutterLayer(this.$gutter);\n this.$gutterLayer.on(\"changeGutterWidth\", this.onGutterResize.bind(this));\n this.$markerBack = new MarkerLayer(this.content);\n var textLayer = this.$textLayer = new TextLayer(this.content);\n this.canvas = textLayer.element;\n this.$markerFront = new MarkerLayer(this.content);\n this.$cursorLayer = new CursorLayer(this.content);\n this.$horizScroll = false;\n this.$vScroll = false;\n this.scrollBar =\n this.scrollBarV = new VScrollBar(this.container, this);\n this.scrollBarH = new HScrollBar(this.container, this);\n this.scrollBarV.on(\"scroll\", function (e) {\n if (!_self.$scrollAnimation)\n _self.session.setScrollTop(e.data - _self.scrollMargin.top);\n });\n this.scrollBarH.on(\"scroll\", function (e) {\n if (!_self.$scrollAnimation)\n _self.session.setScrollLeft(e.data - _self.scrollMargin.left);\n });\n this.scrollTop = 0;\n this.scrollLeft = 0;\n this.cursorPos = {\n row: 0,\n column: 0\n };\n this.$fontMetrics = new FontMetrics(this.container);\n this.$textLayer.$setFontMetrics(this.$fontMetrics);\n this.$textLayer.on(\"changeCharacterSize\", function (e) {\n _self.updateCharacterSize();\n _self.onResize(true, _self.gutterWidth, _self.$size.width, _self.$size.height);\n _self._signal(\"changeCharacterSize\", e);\n });\n this.$size = {\n width: 0,\n height: 0,\n scrollerHeight: 0,\n scrollerWidth: 0,\n $dirty: true\n };\n this.layerConfig = {\n width: 1,\n padding: 0,\n firstRow: 0,\n firstRowScreen: 0,\n lastRow: 0,\n lineHeight: 0,\n characterWidth: 0,\n minHeight: 1,\n maxHeight: 1,\n offset: 0,\n height: 1,\n gutterOffset: 1\n };\n this.scrollMargin = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0,\n v: 0,\n h: 0\n };\n this.margin = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0,\n v: 0,\n h: 0\n };\n this.$keepTextAreaAtCursor = !useragent.isIOS;\n this.$loop = new RenderLoop(this.$renderChanges.bind(this), this.container.ownerDocument.defaultView);\n this.$loop.schedule(this.CHANGE_FULL);\n this.updateCharacterSize();\n this.setPadding(4);\n this.$addResizeObserver();\n config.resetOptions(this);\n config._signal(\"renderer\", this);\n }\n VirtualRenderer.prototype.updateCharacterSize = function () {\n if (this.$textLayer.allowBoldFonts != this.$allowBoldFonts) {\n this.$allowBoldFonts = this.$textLayer.allowBoldFonts;\n this.setStyle(\"ace_nobold\", !this.$allowBoldFonts);\n }\n this.layerConfig.characterWidth =\n this.characterWidth = this.$textLayer.getCharacterWidth();\n this.layerConfig.lineHeight =\n this.lineHeight = this.$textLayer.getLineHeight();\n this.$updatePrintMargin();\n dom.setStyle(this.scroller.style, \"line-height\", this.lineHeight + \"px\");\n };\n VirtualRenderer.prototype.setSession = function (session) {\n if (this.session)\n this.session.doc.off(\"changeNewLineMode\", this.onChangeNewLineMode);\n this.session = session;\n if (session && this.scrollMargin.top && session.getScrollTop() <= 0)\n session.setScrollTop(-this.scrollMargin.top);\n this.$cursorLayer.setSession(session);\n this.$markerBack.setSession(session);\n this.$markerFront.setSession(session);\n this.$gutterLayer.setSession(session);\n this.$textLayer.setSession(session);\n if (!session)\n return;\n this.$loop.schedule(this.CHANGE_FULL);\n this.session.$setFontMetrics(this.$fontMetrics);\n this.scrollBarH.scrollLeft = this.scrollBarV.scrollTop = null;\n this.onChangeNewLineMode = this.onChangeNewLineMode.bind(this);\n this.onChangeNewLineMode();\n this.session.doc.on(\"changeNewLineMode\", this.onChangeNewLineMode);\n };\n VirtualRenderer.prototype.updateLines = function (firstRow, lastRow, force) {\n if (lastRow === undefined)\n lastRow = Infinity;\n if (!this.$changedLines) {\n this.$changedLines = {\n firstRow: firstRow,\n lastRow: lastRow\n };\n }\n else {\n if (this.$changedLines.firstRow > firstRow)\n this.$changedLines.firstRow = firstRow;\n if (this.$changedLines.lastRow < lastRow)\n this.$changedLines.lastRow = lastRow;\n }\n if (this.$changedLines.lastRow < this.layerConfig.firstRow) {\n if (force)\n this.$changedLines.lastRow = this.layerConfig.lastRow;\n else\n return;\n }\n if (this.$changedLines.firstRow > this.layerConfig.lastRow)\n return;\n this.$loop.schedule(this.CHANGE_LINES);\n };\n VirtualRenderer.prototype.onChangeNewLineMode = function () {\n this.$loop.schedule(this.CHANGE_TEXT);\n this.$textLayer.$updateEolChar();\n this.session.$bidiHandler.setEolChar(this.$textLayer.EOL_CHAR);\n };\n VirtualRenderer.prototype.onChangeTabSize = function () {\n this.$loop.schedule(this.CHANGE_TEXT | this.CHANGE_MARKER);\n this.$textLayer.onChangeTabSize();\n };\n VirtualRenderer.prototype.updateText = function () {\n this.$loop.schedule(this.CHANGE_TEXT);\n };\n VirtualRenderer.prototype.updateFull = function (force) {\n if (force)\n this.$renderChanges(this.CHANGE_FULL, true);\n else\n this.$loop.schedule(this.CHANGE_FULL);\n };\n VirtualRenderer.prototype.updateFontSize = function () {\n this.$textLayer.checkForSizeChanges();\n };\n VirtualRenderer.prototype.$updateSizeAsync = function () {\n if (this.$loop.pending)\n this.$size.$dirty = true;\n else\n this.onResize();\n };\n VirtualRenderer.prototype.onResize = function (force, gutterWidth, width, height) {\n if (this.resizing > 2)\n return;\n else if (this.resizing > 0)\n this.resizing++;\n else\n this.resizing = force ? 1 : 0;\n var el = this.container;\n if (!height)\n height = el.clientHeight || el.scrollHeight;\n if (!width)\n width = el.clientWidth || el.scrollWidth;\n var changes = this.$updateCachedSize(force, gutterWidth, width, height);\n if (this.$resizeTimer)\n this.$resizeTimer.cancel();\n if (!this.$size.scrollerHeight || (!width && !height))\n return this.resizing = 0;\n if (force)\n this.$gutterLayer.$padding = null;\n if (force)\n this.$renderChanges(changes | this.$changes, true);\n else\n this.$loop.schedule(changes | this.$changes);\n if (this.resizing)\n this.resizing = 0;\n this.scrollBarH.scrollLeft = this.scrollBarV.scrollTop = null;\n if (this.$customScrollbar) {\n this.$updateCustomScrollbar(true);\n }\n };\n VirtualRenderer.prototype.$updateCachedSize = function (force, gutterWidth, width, height) {\n height -= (this.$extraHeight || 0);\n var changes = 0;\n var size = this.$size;\n var oldSize = {\n width: size.width,\n height: size.height,\n scrollerHeight: size.scrollerHeight,\n scrollerWidth: size.scrollerWidth\n };\n if (height && (force || size.height != height)) {\n size.height = height;\n changes |= this.CHANGE_SIZE;\n size.scrollerHeight = size.height;\n if (this.$horizScroll)\n size.scrollerHeight -= this.scrollBarH.getHeight();\n this.scrollBarV.setHeight(size.scrollerHeight);\n this.scrollBarV.element.style.bottom = this.scrollBarH.getHeight() + \"px\";\n changes = changes | this.CHANGE_SCROLL;\n }\n if (width && (force || size.width != width)) {\n changes |= this.CHANGE_SIZE;\n size.width = width;\n if (gutterWidth == null)\n gutterWidth = this.$showGutter ? this.$gutter.offsetWidth : 0;\n this.gutterWidth = gutterWidth;\n dom.setStyle(this.scrollBarH.element.style, \"left\", gutterWidth + \"px\");\n dom.setStyle(this.scroller.style, \"left\", gutterWidth + this.margin.left + \"px\");\n size.scrollerWidth = Math.max(0, width - gutterWidth - this.scrollBarV.getWidth() - this.margin.h);\n dom.setStyle(this.$gutter.style, \"left\", this.margin.left + \"px\");\n var right = this.scrollBarV.getWidth() + \"px\";\n dom.setStyle(this.scrollBarH.element.style, \"right\", right);\n dom.setStyle(this.scroller.style, \"right\", right);\n dom.setStyle(this.scroller.style, \"bottom\", this.scrollBarH.getHeight());\n this.scrollBarH.setWidth(size.scrollerWidth);\n if (this.session && this.session.getUseWrapMode() && this.adjustWrapLimit() || force) {\n changes |= this.CHANGE_FULL;\n }\n }\n size.$dirty = !width || !height;\n if (changes)\n this._signal(\"resize\", oldSize);\n return changes;\n };\n VirtualRenderer.prototype.onGutterResize = function (width) {\n var gutterWidth = this.$showGutter ? width : 0;\n if (gutterWidth != this.gutterWidth)\n this.$changes |= this.$updateCachedSize(true, gutterWidth, this.$size.width, this.$size.height);\n if (this.session.getUseWrapMode() && this.adjustWrapLimit()) {\n this.$loop.schedule(this.CHANGE_FULL);\n }\n else if (this.$size.$dirty) {\n this.$loop.schedule(this.CHANGE_FULL);\n }\n else {\n this.$computeLayerConfig();\n }\n };\n VirtualRenderer.prototype.adjustWrapLimit = function () {\n var availableWidth = this.$size.scrollerWidth - this.$padding * 2;\n var limit = Math.floor(availableWidth / this.characterWidth);\n return this.session.adjustWrapLimit(limit, this.$showPrintMargin && this.$printMarginColumn);\n };\n VirtualRenderer.prototype.setAnimatedScroll = function (shouldAnimate) {\n this.setOption(\"animatedScroll\", shouldAnimate);\n };\n VirtualRenderer.prototype.getAnimatedScroll = function () {\n return this.$animatedScroll;\n };\n VirtualRenderer.prototype.setShowInvisibles = function (showInvisibles) {\n this.setOption(\"showInvisibles\", showInvisibles);\n this.session.$bidiHandler.setShowInvisibles(showInvisibles);\n };\n VirtualRenderer.prototype.getShowInvisibles = function () {\n return this.getOption(\"showInvisibles\");\n };\n VirtualRenderer.prototype.getDisplayIndentGuides = function () {\n return this.getOption(\"displayIndentGuides\");\n };\n VirtualRenderer.prototype.setDisplayIndentGuides = function (display) {\n this.setOption(\"displayIndentGuides\", display);\n };\n VirtualRenderer.prototype.getHighlightIndentGuides = function () {\n return this.getOption(\"highlightIndentGuides\");\n };\n VirtualRenderer.prototype.setHighlightIndentGuides = function (highlight) {\n this.setOption(\"highlightIndentGuides\", highlight);\n };\n VirtualRenderer.prototype.setShowPrintMargin = function (showPrintMargin) {\n this.setOption(\"showPrintMargin\", showPrintMargin);\n };\n VirtualRenderer.prototype.getShowPrintMargin = function () {\n return this.getOption(\"showPrintMargin\");\n };\n VirtualRenderer.prototype.setPrintMarginColumn = function (showPrintMargin) {\n this.setOption(\"printMarginColumn\", showPrintMargin);\n };\n VirtualRenderer.prototype.getPrintMarginColumn = function () {\n return this.getOption(\"printMarginColumn\");\n };\n VirtualRenderer.prototype.getShowGutter = function () {\n return this.getOption(\"showGutter\");\n };\n VirtualRenderer.prototype.setShowGutter = function (show) {\n return this.setOption(\"showGutter\", show);\n };\n VirtualRenderer.prototype.getFadeFoldWidgets = function () {\n return this.getOption(\"fadeFoldWidgets\");\n };\n VirtualRenderer.prototype.setFadeFoldWidgets = function (show) {\n this.setOption(\"fadeFoldWidgets\", show);\n };\n VirtualRenderer.prototype.setHighlightGutterLine = function (shouldHighlight) {\n this.setOption(\"highlightGutterLine\", shouldHighlight);\n };\n VirtualRenderer.prototype.getHighlightGutterLine = function () {\n return this.getOption(\"highlightGutterLine\");\n };\n VirtualRenderer.prototype.$updatePrintMargin = function () {\n if (!this.$showPrintMargin && !this.$printMarginEl)\n return;\n if (!this.$printMarginEl) {\n var containerEl = dom.createElement(\"div\");\n containerEl.className = \"ace_layer ace_print-margin-layer\";\n this.$printMarginEl = dom.createElement(\"div\");\n this.$printMarginEl.className = \"ace_print-margin\";\n containerEl.appendChild(this.$printMarginEl);\n this.content.insertBefore(containerEl, this.content.firstChild);\n }\n var style = this.$printMarginEl.style;\n style.left = Math.round(this.characterWidth * this.$printMarginColumn + this.$padding) + \"px\";\n style.visibility = this.$showPrintMargin ? \"visible\" : \"hidden\";\n if (this.session && this.session.$wrap == -1)\n this.adjustWrapLimit();\n };\n VirtualRenderer.prototype.getContainerElement = function () {\n return this.container;\n };\n VirtualRenderer.prototype.getMouseEventTarget = function () {\n return this.scroller;\n };\n VirtualRenderer.prototype.getTextAreaContainer = function () {\n return this.container;\n };\n VirtualRenderer.prototype.$moveTextAreaToCursor = function () {\n if (this.$isMousePressed)\n return;\n var style = this.textarea.style;\n var composition = this.$composition;\n if (!this.$keepTextAreaAtCursor && !composition) {\n dom.translate(this.textarea, -100, 0);\n return;\n }\n var pixelPos = this.$cursorLayer.$pixelPos;\n if (!pixelPos)\n return;\n if (composition && composition.markerRange)\n pixelPos = this.$cursorLayer.getPixelPosition(composition.markerRange.start, true);\n var config = this.layerConfig;\n var posTop = pixelPos.top;\n var posLeft = pixelPos.left;\n posTop -= config.offset;\n var h = composition && composition.useTextareaForIME || useragent.isMobile ? this.lineHeight : 1;\n if (posTop < 0 || posTop > config.height - h) {\n dom.translate(this.textarea, 0, 0);\n return;\n }\n var w = 1;\n var maxTop = this.$size.height - h;\n if (!composition) {\n posTop += this.lineHeight;\n }\n else {\n if (composition.useTextareaForIME) {\n var val = this.textarea.value;\n w = this.characterWidth * (this.session.$getStringScreenWidth(val)[0]);\n }\n else {\n posTop += this.lineHeight + 2;\n }\n }\n posLeft -= this.scrollLeft;\n if (posLeft > this.$size.scrollerWidth - w)\n posLeft = this.$size.scrollerWidth - w;\n posLeft += this.gutterWidth + this.margin.left;\n dom.setStyle(style, \"height\", h + \"px\");\n dom.setStyle(style, \"width\", w + \"px\");\n dom.translate(this.textarea, Math.min(posLeft, this.$size.scrollerWidth - w), Math.min(posTop, maxTop));\n };\n VirtualRenderer.prototype.getFirstVisibleRow = function () {\n return this.layerConfig.firstRow;\n };\n VirtualRenderer.prototype.getFirstFullyVisibleRow = function () {\n return this.layerConfig.firstRow + (this.layerConfig.offset === 0 ? 0 : 1);\n };\n VirtualRenderer.prototype.getLastFullyVisibleRow = function () {\n var config = this.layerConfig;\n var lastRow = config.lastRow;\n var top = this.session.documentToScreenRow(lastRow, 0) * config.lineHeight;\n if (top - this.session.getScrollTop() > config.height - config.lineHeight)\n return lastRow - 1;\n return lastRow;\n };\n VirtualRenderer.prototype.getLastVisibleRow = function () {\n return this.layerConfig.lastRow;\n };\n VirtualRenderer.prototype.setPadding = function (padding) {\n this.$padding = padding;\n this.$textLayer.setPadding(padding);\n this.$cursorLayer.setPadding(padding);\n this.$markerFront.setPadding(padding);\n this.$markerBack.setPadding(padding);\n this.$loop.schedule(this.CHANGE_FULL);\n this.$updatePrintMargin();\n };\n VirtualRenderer.prototype.setScrollMargin = function (top, bottom, left, right) {\n var sm = this.scrollMargin;\n sm.top = top | 0;\n sm.bottom = bottom | 0;\n sm.right = right | 0;\n sm.left = left | 0;\n sm.v = sm.top + sm.bottom;\n sm.h = sm.left + sm.right;\n if (sm.top && this.scrollTop <= 0 && this.session)\n this.session.setScrollTop(-sm.top);\n this.updateFull();\n };\n VirtualRenderer.prototype.setMargin = function (top, bottom, left, right) {\n var sm = this.margin;\n sm.top = top | 0;\n sm.bottom = bottom | 0;\n sm.right = right | 0;\n sm.left = left | 0;\n sm.v = sm.top + sm.bottom;\n sm.h = sm.left + sm.right;\n this.$updateCachedSize(true, this.gutterWidth, this.$size.width, this.$size.height);\n this.updateFull();\n };\n VirtualRenderer.prototype.getHScrollBarAlwaysVisible = function () {\n return this.$hScrollBarAlwaysVisible;\n };\n VirtualRenderer.prototype.setHScrollBarAlwaysVisible = function (alwaysVisible) {\n this.setOption(\"hScrollBarAlwaysVisible\", alwaysVisible);\n };\n VirtualRenderer.prototype.getVScrollBarAlwaysVisible = function () {\n return this.$vScrollBarAlwaysVisible;\n };\n VirtualRenderer.prototype.setVScrollBarAlwaysVisible = function (alwaysVisible) {\n this.setOption(\"vScrollBarAlwaysVisible\", alwaysVisible);\n };\n VirtualRenderer.prototype.$updateScrollBarV = function () {\n var scrollHeight = this.layerConfig.maxHeight;\n var scrollerHeight = this.$size.scrollerHeight;\n if (!this.$maxLines && this.$scrollPastEnd) {\n scrollHeight -= (scrollerHeight - this.lineHeight) * this.$scrollPastEnd;\n if (this.scrollTop > scrollHeight - scrollerHeight) {\n scrollHeight = this.scrollTop + scrollerHeight;\n this.scrollBarV.scrollTop = null;\n }\n }\n this.scrollBarV.setScrollHeight(scrollHeight + this.scrollMargin.v);\n this.scrollBarV.setScrollTop(this.scrollTop + this.scrollMargin.top);\n };\n VirtualRenderer.prototype.$updateScrollBarH = function () {\n this.scrollBarH.setScrollWidth(this.layerConfig.width + 2 * this.$padding + this.scrollMargin.h);\n this.scrollBarH.setScrollLeft(this.scrollLeft + this.scrollMargin.left);\n };\n VirtualRenderer.prototype.freeze = function () {\n this.$frozen = true;\n };\n VirtualRenderer.prototype.unfreeze = function () {\n this.$frozen = false;\n };\n VirtualRenderer.prototype.$renderChanges = function (changes, force) {\n if (this.$changes) {\n changes |= this.$changes;\n this.$changes = 0;\n }\n if ((!this.session || !this.container.offsetWidth || this.$frozen) || (!changes && !force)) {\n this.$changes |= changes;\n return;\n }\n if (this.$size.$dirty) {\n this.$changes |= changes;\n return this.onResize(true);\n }\n if (!this.lineHeight) {\n this.$textLayer.checkForSizeChanges();\n }\n this._signal(\"beforeRender\", changes);\n if (this.session && this.session.$bidiHandler)\n this.session.$bidiHandler.updateCharacterWidths(this.$fontMetrics);\n var config = this.layerConfig;\n if (changes & this.CHANGE_FULL ||\n changes & this.CHANGE_SIZE ||\n changes & this.CHANGE_TEXT ||\n changes & this.CHANGE_LINES ||\n changes & this.CHANGE_SCROLL ||\n changes & this.CHANGE_H_SCROLL) {\n changes |= this.$computeLayerConfig() | this.$loop.clear();\n if (config.firstRow != this.layerConfig.firstRow && config.firstRowScreen == this.layerConfig.firstRowScreen) {\n var st = this.scrollTop + (config.firstRow - Math.max(this.layerConfig.firstRow, 0)) * this.lineHeight;\n if (st > 0) {\n this.scrollTop = st;\n changes = changes | this.CHANGE_SCROLL;\n changes |= this.$computeLayerConfig() | this.$loop.clear();\n }\n }\n config = this.layerConfig;\n this.$updateScrollBarV();\n if (changes & this.CHANGE_H_SCROLL)\n this.$updateScrollBarH();\n dom.translate(this.content, -this.scrollLeft, -config.offset);\n var width = config.width + 2 * this.$padding + \"px\";\n var height = config.minHeight + \"px\";\n dom.setStyle(this.content.style, \"width\", width);\n dom.setStyle(this.content.style, \"height\", height);\n }\n if (changes & this.CHANGE_H_SCROLL) {\n dom.translate(this.content, -this.scrollLeft, -config.offset);\n this.scroller.className = this.scrollLeft <= 0 ? \"ace_scroller \" : \"ace_scroller ace_scroll-left \";\n if (this.enableKeyboardAccessibility)\n this.scroller.className += this.keyboardFocusClassName;\n }\n if (changes & this.CHANGE_FULL) {\n this.$changedLines = null;\n this.$textLayer.update(config);\n if (this.$showGutter)\n this.$gutterLayer.update(config);\n if (this.$customScrollbar) {\n this.$scrollDecorator.$updateDecorators(config);\n }\n this.$markerBack.update(config);\n this.$markerFront.update(config);\n this.$cursorLayer.update(config);\n this.$moveTextAreaToCursor();\n this._signal(\"afterRender\", changes);\n return;\n }\n if (changes & this.CHANGE_SCROLL) {\n this.$changedLines = null;\n if (changes & this.CHANGE_TEXT || changes & this.CHANGE_LINES)\n this.$textLayer.update(config);\n else\n this.$textLayer.scrollLines(config);\n if (this.$showGutter) {\n if (changes & this.CHANGE_GUTTER || changes & this.CHANGE_LINES)\n this.$gutterLayer.update(config);\n else\n this.$gutterLayer.scrollLines(config);\n }\n if (this.$customScrollbar) {\n this.$scrollDecorator.$updateDecorators(config);\n }\n this.$markerBack.update(config);\n this.$markerFront.update(config);\n this.$cursorLayer.update(config);\n this.$moveTextAreaToCursor();\n this._signal(\"afterRender\", changes);\n return;\n }\n if (changes & this.CHANGE_TEXT) {\n this.$changedLines = null;\n this.$textLayer.update(config);\n if (this.$showGutter)\n this.$gutterLayer.update(config);\n if (this.$customScrollbar) {\n this.$scrollDecorator.$updateDecorators(config);\n }\n }\n else if (changes & this.CHANGE_LINES) {\n if (this.$updateLines() || (changes & this.CHANGE_GUTTER) && this.$showGutter)\n this.$gutterLayer.update(config);\n if (this.$customScrollbar) {\n this.$scrollDecorator.$updateDecorators(config);\n }\n }\n else if (changes & this.CHANGE_TEXT || changes & this.CHANGE_GUTTER) {\n if (this.$showGutter)\n this.$gutterLayer.update(config);\n if (this.$customScrollbar) {\n this.$scrollDecorator.$updateDecorators(config);\n }\n }\n else if (changes & this.CHANGE_CURSOR) {\n if (this.$highlightGutterLine)\n this.$gutterLayer.updateLineHighlight(config);\n if (this.$customScrollbar) {\n this.$scrollDecorator.$updateDecorators(config);\n }\n }\n if (changes & this.CHANGE_CURSOR) {\n this.$cursorLayer.update(config);\n this.$moveTextAreaToCursor();\n }\n if (changes & (this.CHANGE_MARKER | this.CHANGE_MARKER_FRONT)) {\n this.$markerFront.update(config);\n }\n if (changes & (this.CHANGE_MARKER | this.CHANGE_MARKER_BACK)) {\n this.$markerBack.update(config);\n }\n this._signal(\"afterRender\", changes);\n };\n VirtualRenderer.prototype.$autosize = function () {\n var height = this.session.getScreenLength() * this.lineHeight;\n var maxHeight = this.$maxLines * this.lineHeight;\n var desiredHeight = Math.min(maxHeight, Math.max((this.$minLines || 1) * this.lineHeight, height)) + this.scrollMargin.v + (this.$extraHeight || 0);\n if (this.$horizScroll)\n desiredHeight += this.scrollBarH.getHeight();\n if (this.$maxPixelHeight && desiredHeight > this.$maxPixelHeight)\n desiredHeight = this.$maxPixelHeight;\n var hideScrollbars = desiredHeight <= 2 * this.lineHeight;\n var vScroll = !hideScrollbars && height > maxHeight;\n if (desiredHeight != this.desiredHeight ||\n this.$size.height != this.desiredHeight || vScroll != this.$vScroll) {\n if (vScroll != this.$vScroll) {\n this.$vScroll = vScroll;\n this.scrollBarV.setVisible(vScroll);\n }\n var w = this.container.clientWidth;\n this.container.style.height = desiredHeight + \"px\";\n this.$updateCachedSize(true, this.$gutterWidth, w, desiredHeight);\n this.desiredHeight = desiredHeight;\n this._signal(\"autosize\");\n }\n };\n VirtualRenderer.prototype.$computeLayerConfig = function () {\n var session = this.session;\n var size = this.$size;\n var hideScrollbars = size.height <= 2 * this.lineHeight;\n var screenLines = this.session.getScreenLength();\n var maxHeight = screenLines * this.lineHeight;\n var longestLine = this.$getLongestLine();\n var horizScroll = !hideScrollbars && (this.$hScrollBarAlwaysVisible ||\n size.scrollerWidth - longestLine - 2 * this.$padding < 0);\n var hScrollChanged = this.$horizScroll !== horizScroll;\n if (hScrollChanged) {\n this.$horizScroll = horizScroll;\n this.scrollBarH.setVisible(horizScroll);\n }\n var vScrollBefore = this.$vScroll; // autosize can change vscroll value in which case we need to update longestLine\n if (this.$maxLines && this.lineHeight > 1)\n this.$autosize();\n var minHeight = size.scrollerHeight + this.lineHeight;\n var scrollPastEnd = !this.$maxLines && this.$scrollPastEnd\n ? (size.scrollerHeight - this.lineHeight) * this.$scrollPastEnd\n : 0;\n maxHeight += scrollPastEnd;\n var sm = this.scrollMargin;\n this.session.setScrollTop(Math.max(-sm.top, Math.min(this.scrollTop, maxHeight - size.scrollerHeight + sm.bottom)));\n this.session.setScrollLeft(Math.max(-sm.left, Math.min(this.scrollLeft, longestLine + 2 * this.$padding - size.scrollerWidth + sm.right)));\n var vScroll = !hideScrollbars && (this.$vScrollBarAlwaysVisible ||\n size.scrollerHeight - maxHeight + scrollPastEnd < 0 || this.scrollTop > sm.top);\n var vScrollChanged = vScrollBefore !== vScroll;\n if (vScrollChanged) {\n this.$vScroll = vScroll;\n this.scrollBarV.setVisible(vScroll);\n }\n var offset = this.scrollTop % this.lineHeight;\n var lineCount = Math.ceil(minHeight / this.lineHeight) - 1;\n var firstRow = Math.max(0, Math.round((this.scrollTop - offset) / this.lineHeight));\n var lastRow = firstRow + lineCount;\n var firstRowScreen, firstRowHeight;\n var lineHeight = this.lineHeight;\n firstRow = session.screenToDocumentRow(firstRow, 0);\n var foldLine = session.getFoldLine(firstRow);\n if (foldLine) {\n firstRow = foldLine.start.row;\n }\n firstRowScreen = session.documentToScreenRow(firstRow, 0);\n firstRowHeight = session.getRowLength(firstRow) * lineHeight;\n lastRow = Math.min(session.screenToDocumentRow(lastRow, 0), session.getLength() - 1);\n minHeight = size.scrollerHeight + session.getRowLength(lastRow) * lineHeight +\n firstRowHeight;\n offset = this.scrollTop - firstRowScreen * lineHeight;\n var changes = 0;\n if (this.layerConfig.width != longestLine || hScrollChanged)\n changes = this.CHANGE_H_SCROLL;\n if (hScrollChanged || vScrollChanged) {\n changes |= this.$updateCachedSize(true, this.gutterWidth, size.width, size.height);\n this._signal(\"scrollbarVisibilityChanged\");\n if (vScrollChanged)\n longestLine = this.$getLongestLine();\n }\n this.layerConfig = {\n width: longestLine,\n padding: this.$padding,\n firstRow: firstRow,\n firstRowScreen: firstRowScreen,\n lastRow: lastRow,\n lineHeight: lineHeight,\n characterWidth: this.characterWidth,\n minHeight: minHeight,\n maxHeight: maxHeight,\n offset: offset,\n gutterOffset: lineHeight ? Math.max(0, Math.ceil((offset + size.height - size.scrollerHeight) / lineHeight)) : 0,\n height: this.$size.scrollerHeight\n };\n if (this.session.$bidiHandler)\n this.session.$bidiHandler.setContentWidth(longestLine - this.$padding);\n return changes;\n };\n VirtualRenderer.prototype.$updateLines = function () {\n if (!this.$changedLines)\n return;\n var firstRow = this.$changedLines.firstRow;\n var lastRow = this.$changedLines.lastRow;\n this.$changedLines = null;\n var layerConfig = this.layerConfig;\n if (firstRow > layerConfig.lastRow + 1) {\n return;\n }\n if (lastRow < layerConfig.firstRow) {\n return;\n }\n if (lastRow === Infinity) {\n if (this.$showGutter)\n this.$gutterLayer.update(layerConfig);\n this.$textLayer.update(layerConfig);\n return;\n }\n this.$textLayer.updateLines(layerConfig, firstRow, lastRow);\n return true;\n };\n VirtualRenderer.prototype.$getLongestLine = function () {\n var charCount = this.session.getScreenWidth();\n if (this.showInvisibles && !this.session.$useWrapMode)\n charCount += 1;\n if (this.$textLayer && charCount > this.$textLayer.MAX_LINE_LENGTH)\n charCount = this.$textLayer.MAX_LINE_LENGTH + 30;\n return Math.max(this.$size.scrollerWidth - 2 * this.$padding, Math.round(charCount * this.characterWidth));\n };\n VirtualRenderer.prototype.updateFrontMarkers = function () {\n this.$markerFront.setMarkers(this.session.getMarkers(true));\n this.$loop.schedule(this.CHANGE_MARKER_FRONT);\n };\n VirtualRenderer.prototype.updateBackMarkers = function () {\n this.$markerBack.setMarkers(this.session.getMarkers());\n this.$loop.schedule(this.CHANGE_MARKER_BACK);\n };\n VirtualRenderer.prototype.addGutterDecoration = function (row, className) {\n this.$gutterLayer.addGutterDecoration(row, className);\n };\n VirtualRenderer.prototype.removeGutterDecoration = function (row, className) {\n this.$gutterLayer.removeGutterDecoration(row, className);\n };\n VirtualRenderer.prototype.updateBreakpoints = function (rows) {\n this.$loop.schedule(this.CHANGE_GUTTER);\n };\n VirtualRenderer.prototype.setAnnotations = function (annotations) {\n this.$gutterLayer.setAnnotations(annotations);\n this.$loop.schedule(this.CHANGE_GUTTER);\n };\n VirtualRenderer.prototype.updateCursor = function () {\n this.$loop.schedule(this.CHANGE_CURSOR);\n };\n VirtualRenderer.prototype.hideCursor = function () {\n this.$cursorLayer.hideCursor();\n };\n VirtualRenderer.prototype.showCursor = function () {\n this.$cursorLayer.showCursor();\n };\n VirtualRenderer.prototype.scrollSelectionIntoView = function (anchor, lead, offset) {\n this.scrollCursorIntoView(anchor, offset);\n this.scrollCursorIntoView(lead, offset);\n };\n VirtualRenderer.prototype.scrollCursorIntoView = function (cursor, offset, $viewMargin) {\n if (this.$size.scrollerHeight === 0)\n return;\n var pos = this.$cursorLayer.getPixelPosition(cursor);\n var newLeft = pos.left;\n var newTop = pos.top;\n var topMargin = $viewMargin && $viewMargin.top || 0;\n var bottomMargin = $viewMargin && $viewMargin.bottom || 0;\n if (this.$scrollAnimation) {\n this.$stopAnimation = true;\n }\n var currentTop = this.$scrollAnimation ? this.session.getScrollTop() : this.scrollTop;\n if (currentTop + topMargin > newTop) {\n if (offset && currentTop + topMargin > newTop + this.lineHeight)\n newTop -= offset * this.$size.scrollerHeight;\n if (newTop === 0)\n newTop = -this.scrollMargin.top;\n this.session.setScrollTop(newTop);\n }\n else if (currentTop + this.$size.scrollerHeight - bottomMargin < newTop + this.lineHeight) {\n if (offset && currentTop + this.$size.scrollerHeight - bottomMargin < newTop - this.lineHeight)\n newTop += offset * this.$size.scrollerHeight;\n this.session.setScrollTop(newTop + this.lineHeight + bottomMargin - this.$size.scrollerHeight);\n }\n var currentLeft = this.scrollLeft;\n var twoCharsWidth = 2 * this.layerConfig.characterWidth;\n if (newLeft - twoCharsWidth < currentLeft) {\n newLeft -= twoCharsWidth;\n if (newLeft < this.$padding + twoCharsWidth) {\n newLeft = -this.scrollMargin.left;\n }\n this.session.setScrollLeft(newLeft);\n }\n else {\n newLeft += twoCharsWidth;\n if (currentLeft + this.$size.scrollerWidth < newLeft + this.characterWidth) {\n this.session.setScrollLeft(Math.round(newLeft + this.characterWidth - this.$size.scrollerWidth));\n }\n else if (currentLeft <= this.$padding && newLeft - currentLeft < this.characterWidth) {\n this.session.setScrollLeft(0);\n }\n }\n };\n VirtualRenderer.prototype.getScrollTop = function () {\n return this.session.getScrollTop();\n };\n VirtualRenderer.prototype.getScrollLeft = function () {\n return this.session.getScrollLeft();\n };\n VirtualRenderer.prototype.getScrollTopRow = function () {\n return this.scrollTop / this.lineHeight;\n };\n VirtualRenderer.prototype.getScrollBottomRow = function () {\n return Math.max(0, Math.floor((this.scrollTop + this.$size.scrollerHeight) / this.lineHeight) - 1);\n };\n VirtualRenderer.prototype.scrollToRow = function (row) {\n this.session.setScrollTop(row * this.lineHeight);\n };\n VirtualRenderer.prototype.alignCursor = function (cursor, alignment) {\n if (typeof cursor == \"number\")\n cursor = { row: cursor, column: 0 };\n var pos = this.$cursorLayer.getPixelPosition(cursor);\n var h = this.$size.scrollerHeight - this.lineHeight;\n var offset = pos.top - h * (alignment || 0);\n this.session.setScrollTop(offset);\n return offset;\n };\n VirtualRenderer.prototype.$calcSteps = function (fromValue, toValue) {\n var i = 0;\n var l = this.STEPS;\n var steps = [];\n var func = function (t, x_min, dx) {\n return dx * (Math.pow(t - 1, 3) + 1) + x_min;\n };\n for (i = 0; i < l; ++i)\n steps.push(func(i / this.STEPS, fromValue, toValue - fromValue));\n return steps;\n };\n VirtualRenderer.prototype.scrollToLine = function (line, center, animate, callback) {\n var pos = this.$cursorLayer.getPixelPosition({ row: line, column: 0 });\n var offset = pos.top;\n if (center)\n offset -= this.$size.scrollerHeight / 2;\n var initialScroll = this.scrollTop;\n this.session.setScrollTop(offset);\n if (animate !== false)\n this.animateScrolling(initialScroll, callback);\n };\n VirtualRenderer.prototype.animateScrolling = function (fromValue, callback) {\n var toValue = this.scrollTop;\n if (!this.$animatedScroll)\n return;\n var _self = this;\n if (fromValue == toValue)\n return;\n if (this.$scrollAnimation) {\n var oldSteps = this.$scrollAnimation.steps;\n if (oldSteps.length) {\n fromValue = oldSteps[0];\n if (fromValue == toValue)\n return;\n }\n }\n var steps = _self.$calcSteps(fromValue, toValue);\n this.$scrollAnimation = { from: fromValue, to: toValue, steps: steps };\n clearInterval(this.$timer);\n _self.session.setScrollTop(steps.shift());\n _self.session.$scrollTop = toValue;\n function endAnimation() {\n _self.$timer = clearInterval(_self.$timer);\n _self.$scrollAnimation = null;\n _self.$stopAnimation = false;\n callback && callback();\n }\n this.$timer = setInterval(function () {\n if (_self.$stopAnimation) {\n endAnimation();\n return;\n }\n if (!_self.session)\n return clearInterval(_self.$timer);\n if (steps.length) {\n _self.session.setScrollTop(steps.shift());\n _self.session.$scrollTop = toValue;\n }\n else if (toValue != null) {\n _self.session.$scrollTop = -1;\n _self.session.setScrollTop(toValue);\n toValue = null;\n }\n else {\n endAnimation();\n }\n }, 10);\n };\n VirtualRenderer.prototype.scrollToY = function (scrollTop) {\n if (this.scrollTop !== scrollTop) {\n this.$loop.schedule(this.CHANGE_SCROLL);\n this.scrollTop = scrollTop;\n }\n };\n VirtualRenderer.prototype.scrollToX = function (scrollLeft) {\n if (this.scrollLeft !== scrollLeft)\n this.scrollLeft = scrollLeft;\n this.$loop.schedule(this.CHANGE_H_SCROLL);\n };\n VirtualRenderer.prototype.scrollTo = function (x, y) {\n this.session.setScrollTop(y);\n this.session.setScrollLeft(x);\n };\n VirtualRenderer.prototype.scrollBy = function (deltaX, deltaY) {\n deltaY && this.session.setScrollTop(this.session.getScrollTop() + deltaY);\n deltaX && this.session.setScrollLeft(this.session.getScrollLeft() + deltaX);\n };\n VirtualRenderer.prototype.isScrollableBy = function (deltaX, deltaY) {\n if (deltaY < 0 && this.session.getScrollTop() >= 1 - this.scrollMargin.top)\n return true;\n if (deltaY > 0 && this.session.getScrollTop() + this.$size.scrollerHeight\n - this.layerConfig.maxHeight < -1 + this.scrollMargin.bottom)\n return true;\n if (deltaX < 0 && this.session.getScrollLeft() >= 1 - this.scrollMargin.left)\n return true;\n if (deltaX > 0 && this.session.getScrollLeft() + this.$size.scrollerWidth\n - this.layerConfig.width < -1 + this.scrollMargin.right)\n return true;\n };\n VirtualRenderer.prototype.pixelToScreenCoordinates = function (x, y) {\n var canvasPos;\n if (this.$hasCssTransforms) {\n canvasPos = { top: 0, left: 0 };\n var p = this.$fontMetrics.transformCoordinates([x, y]);\n x = p[1] - this.gutterWidth - this.margin.left;\n y = p[0];\n }\n else {\n canvasPos = this.scroller.getBoundingClientRect();\n }\n var offsetX = x + this.scrollLeft - canvasPos.left - this.$padding;\n var offset = offsetX / this.characterWidth;\n var row = Math.floor((y + this.scrollTop - canvasPos.top) / this.lineHeight);\n var col = this.$blockCursor ? Math.floor(offset) : Math.round(offset);\n return { row: row, column: col, side: offset - col > 0 ? 1 : -1, offsetX: offsetX };\n };\n VirtualRenderer.prototype.screenToTextCoordinates = function (x, y) {\n var canvasPos;\n if (this.$hasCssTransforms) {\n canvasPos = { top: 0, left: 0 };\n var p = this.$fontMetrics.transformCoordinates([x, y]);\n x = p[1] - this.gutterWidth - this.margin.left;\n y = p[0];\n }\n else {\n canvasPos = this.scroller.getBoundingClientRect();\n }\n var offsetX = x + this.scrollLeft - canvasPos.left - this.$padding;\n var offset = offsetX / this.characterWidth;\n var col = this.$blockCursor ? Math.floor(offset) : Math.round(offset);\n var row = Math.floor((y + this.scrollTop - canvasPos.top) / this.lineHeight);\n return this.session.screenToDocumentPosition(row, Math.max(col, 0), offsetX);\n };\n VirtualRenderer.prototype.textToScreenCoordinates = function (row, column) {\n var canvasPos = this.scroller.getBoundingClientRect();\n var pos = this.session.documentToScreenPosition(row, column);\n var x = this.$padding + (this.session.$bidiHandler.isBidiRow(pos.row, row)\n ? this.session.$bidiHandler.getPosLeft(pos.column)\n : Math.round(pos.column * this.characterWidth));\n var y = pos.row * this.lineHeight;\n return {\n pageX: canvasPos.left + x - this.scrollLeft,\n pageY: canvasPos.top + y - this.scrollTop\n };\n };\n VirtualRenderer.prototype.visualizeFocus = function () {\n dom.addCssClass(this.container, \"ace_focus\");\n };\n VirtualRenderer.prototype.visualizeBlur = function () {\n dom.removeCssClass(this.container, \"ace_focus\");\n };\n VirtualRenderer.prototype.showComposition = function (composition) {\n this.$composition = composition;\n if (!composition.cssText) {\n composition.cssText = this.textarea.style.cssText;\n }\n if (composition.useTextareaForIME == undefined)\n composition.useTextareaForIME = this.$useTextareaForIME;\n if (this.$useTextareaForIME) {\n dom.addCssClass(this.textarea, \"ace_composition\");\n this.textarea.style.cssText = \"\";\n this.$moveTextAreaToCursor();\n this.$cursorLayer.element.style.display = \"none\";\n }\n else {\n composition.markerId = this.session.addMarker(composition.markerRange, \"ace_composition_marker\", \"text\");\n }\n };\n VirtualRenderer.prototype.setCompositionText = function (text) {\n var cursor = this.session.selection.cursor;\n this.addToken(text, \"composition_placeholder\", cursor.row, cursor.column);\n this.$moveTextAreaToCursor();\n };\n VirtualRenderer.prototype.hideComposition = function () {\n if (!this.$composition)\n return;\n if (this.$composition.markerId)\n this.session.removeMarker(this.$composition.markerId);\n dom.removeCssClass(this.textarea, \"ace_composition\");\n this.textarea.style.cssText = this.$composition.cssText;\n var cursor = this.session.selection.cursor;\n this.removeExtraToken(cursor.row, cursor.column);\n this.$composition = null;\n this.$cursorLayer.element.style.display = \"\";\n };\n VirtualRenderer.prototype.setGhostText = function (text, position) {\n var cursor = this.session.selection.cursor;\n var insertPosition = position || { row: cursor.row, column: cursor.column };\n this.removeGhostText();\n var textLines = text.split(\"\\n\");\n this.addToken(textLines[0], \"ghost_text\", insertPosition.row, insertPosition.column);\n this.$ghostText = {\n text: text,\n position: {\n row: insertPosition.row,\n column: insertPosition.column\n }\n };\n if (textLines.length > 1) {\n this.$ghostTextWidget = {\n text: textLines.slice(1).join(\"\\n\"),\n row: insertPosition.row,\n column: insertPosition.column,\n className: \"ace_ghost_text\"\n };\n this.session.widgetManager.addLineWidget(this.$ghostTextWidget);\n var pixelPosition = this.$cursorLayer.getPixelPosition(insertPosition, true);\n var el = this.container;\n var height = el.getBoundingClientRect().height;\n var ghostTextHeight = textLines.length * this.lineHeight;\n var fitsY = ghostTextHeight < height - pixelPosition.top;\n if (fitsY)\n return;\n if (ghostTextHeight < height) {\n this.scrollBy(0, (textLines.length - 1) * this.lineHeight);\n }\n else {\n this.scrollBy(0, pixelPosition.top);\n }\n }\n };\n VirtualRenderer.prototype.removeGhostText = function () {\n if (!this.$ghostText)\n return;\n var position = this.$ghostText.position;\n this.removeExtraToken(position.row, position.column);\n if (this.$ghostTextWidget) {\n this.session.widgetManager.removeLineWidget(this.$ghostTextWidget);\n this.$ghostTextWidget = null;\n }\n this.$ghostText = null;\n };\n VirtualRenderer.prototype.addToken = function (text, type, row, column) {\n var session = this.session;\n session.bgTokenizer.lines[row] = null;\n var newToken = { type: type, value: text };\n var tokens = session.getTokens(row);\n if (column == null || !tokens.length) {\n tokens.push(newToken);\n }\n else {\n var l = 0;\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n l += token.value.length;\n if (column <= l) {\n var diff = token.value.length - (l - column);\n var before = token.value.slice(0, diff);\n var after = token.value.slice(diff);\n tokens.splice(i, 1, { type: token.type, value: before }, newToken, { type: token.type, value: after });\n break;\n }\n }\n }\n this.updateLines(row, row);\n };\n VirtualRenderer.prototype.removeExtraToken = function (row, column) {\n this.session.bgTokenizer.lines[row] = null;\n this.updateLines(row, row);\n };\n VirtualRenderer.prototype.setTheme = function (theme, cb) {\n var _self = this;\n this.$themeId = theme;\n _self._dispatchEvent('themeChange', { theme: theme });\n if (!theme || typeof theme == \"string\") {\n var moduleName = theme || this.$options.theme.initialValue;\n config.loadModule([\"theme\", moduleName], afterLoad);\n }\n else {\n afterLoad(theme);\n }\n function afterLoad(module) {\n if (_self.$themeId != theme)\n return cb && cb();\n if (!module || !module.cssClass)\n throw new Error(\"couldn't load module \" + theme + \" or it didn't call define\");\n if (module.$id)\n _self.$themeId = module.$id;\n dom.importCssString(module.cssText, module.cssClass, _self.container);\n if (_self.theme)\n dom.removeCssClass(_self.container, _self.theme.cssClass);\n var padding = \"padding\" in module ? module.padding\n : \"padding\" in (_self.theme || {}) ? 4 : _self.$padding;\n if (_self.$padding && padding != _self.$padding)\n _self.setPadding(padding);\n _self.$theme = module.cssClass;\n _self.theme = module;\n dom.addCssClass(_self.container, module.cssClass);\n dom.setCssClass(_self.container, \"ace_dark\", module.isDark);\n if (_self.$size) {\n _self.$size.width = 0;\n _self.$updateSizeAsync();\n }\n _self._dispatchEvent('themeLoaded', { theme: module });\n cb && cb();\n }\n };\n VirtualRenderer.prototype.getTheme = function () {\n return this.$themeId;\n };\n VirtualRenderer.prototype.setStyle = function (style, include) {\n dom.setCssClass(this.container, style, include !== false);\n };\n VirtualRenderer.prototype.unsetStyle = function (style) {\n dom.removeCssClass(this.container, style);\n };\n VirtualRenderer.prototype.setCursorStyle = function (style) {\n dom.setStyle(this.scroller.style, \"cursor\", style);\n };\n VirtualRenderer.prototype.setMouseCursor = function (cursorStyle) {\n dom.setStyle(this.scroller.style, \"cursor\", cursorStyle);\n };\n VirtualRenderer.prototype.attachToShadowRoot = function () {\n dom.importCssString(editorCss, \"ace_editor.css\", this.container);\n };\n VirtualRenderer.prototype.destroy = function () {\n this.freeze();\n this.$fontMetrics.destroy();\n this.$cursorLayer.destroy();\n this.removeAllListeners();\n this.container.textContent = \"\";\n this.setOption(\"useResizeObserver\", false);\n };\n VirtualRenderer.prototype.$updateCustomScrollbar = function (val) {\n var _self = this;\n this.$horizScroll = this.$vScroll = null;\n this.scrollBarV.element.remove();\n this.scrollBarH.element.remove();\n if (this.$scrollDecorator) {\n delete this.$scrollDecorator;\n }\n if (val === true) {\n this.scrollBarV = new VScrollBarCustom(this.container, this);\n this.scrollBarH = new HScrollBarCustom(this.container, this);\n this.scrollBarV.setHeight(this.$size.scrollerHeight);\n this.scrollBarH.setWidth(this.$size.scrollerWidth);\n this.scrollBarV.addEventListener(\"scroll\", function (e) {\n if (!_self.$scrollAnimation)\n _self.session.setScrollTop(e.data - _self.scrollMargin.top);\n });\n this.scrollBarH.addEventListener(\"scroll\", function (e) {\n if (!_self.$scrollAnimation)\n _self.session.setScrollLeft(e.data - _self.scrollMargin.left);\n });\n this.$scrollDecorator = new Decorator(this.scrollBarV, this);\n this.$scrollDecorator.$updateDecorators();\n }\n else {\n this.scrollBarV = new VScrollBar(this.container, this);\n this.scrollBarH = new HScrollBar(this.container, this);\n this.scrollBarV.addEventListener(\"scroll\", function (e) {\n if (!_self.$scrollAnimation)\n _self.session.setScrollTop(e.data - _self.scrollMargin.top);\n });\n this.scrollBarH.addEventListener(\"scroll\", function (e) {\n if (!_self.$scrollAnimation)\n _self.session.setScrollLeft(e.data - _self.scrollMargin.left);\n });\n }\n };\n VirtualRenderer.prototype.$addResizeObserver = function () {\n if (!window.ResizeObserver || this.$resizeObserver)\n return;\n var self = this;\n this.$resizeTimer = lang.delayedCall(function () {\n if (!self.destroyed)\n self.onResize();\n }, 50);\n this.$resizeObserver = new window.ResizeObserver(function (e) {\n var w = e[0].contentRect.width;\n var h = e[0].contentRect.height;\n if (Math.abs(self.$size.width - w) > 1\n || Math.abs(self.$size.height - h) > 1) {\n self.$resizeTimer.delay();\n }\n else {\n self.$resizeTimer.cancel();\n }\n });\n this.$resizeObserver.observe(this.container);\n };\n return VirtualRenderer;\n}());\nVirtualRenderer.prototype.CHANGE_CURSOR = 1;\nVirtualRenderer.prototype.CHANGE_MARKER = 2;\nVirtualRenderer.prototype.CHANGE_GUTTER = 4;\nVirtualRenderer.prototype.CHANGE_SCROLL = 8;\nVirtualRenderer.prototype.CHANGE_LINES = 16;\nVirtualRenderer.prototype.CHANGE_TEXT = 32;\nVirtualRenderer.prototype.CHANGE_SIZE = 64;\nVirtualRenderer.prototype.CHANGE_MARKER_BACK = 128;\nVirtualRenderer.prototype.CHANGE_MARKER_FRONT = 256;\nVirtualRenderer.prototype.CHANGE_FULL = 512;\nVirtualRenderer.prototype.CHANGE_H_SCROLL = 1024;\nVirtualRenderer.prototype.$changes = 0;\nVirtualRenderer.prototype.$padding = null;\nVirtualRenderer.prototype.$frozen = false;\nVirtualRenderer.prototype.STEPS = 8;\noop.implement(VirtualRenderer.prototype, EventEmitter);\nconfig.defineOptions(VirtualRenderer.prototype, \"renderer\", {\n useResizeObserver: {\n set: function (value) {\n if (!value && this.$resizeObserver) {\n this.$resizeObserver.disconnect();\n this.$resizeTimer.cancel();\n this.$resizeTimer = this.$resizeObserver = null;\n }\n else if (value && !this.$resizeObserver) {\n this.$addResizeObserver();\n }\n }\n },\n animatedScroll: { initialValue: false },\n showInvisibles: {\n set: function (value) {\n if (this.$textLayer.setShowInvisibles(value))\n this.$loop.schedule(this.CHANGE_TEXT);\n },\n initialValue: false\n },\n showPrintMargin: {\n set: function () { this.$updatePrintMargin(); },\n initialValue: true\n },\n printMarginColumn: {\n set: function () { this.$updatePrintMargin(); },\n initialValue: 80\n },\n printMargin: {\n set: function (val) {\n if (typeof val == \"number\")\n this.$printMarginColumn = val;\n this.$showPrintMargin = !!val;\n this.$updatePrintMargin();\n },\n get: function () {\n return this.$showPrintMargin && this.$printMarginColumn;\n }\n },\n showGutter: {\n set: function (show) {\n this.$gutter.style.display = show ? \"block\" : \"none\";\n this.$loop.schedule(this.CHANGE_FULL);\n this.onGutterResize();\n },\n initialValue: true\n },\n useSvgGutterIcons: {\n set: function (value) {\n this.$gutterLayer.$useSvgGutterIcons = value;\n },\n initialValue: false\n },\n showFoldedAnnotations: {\n set: function (value) {\n this.$gutterLayer.$showFoldedAnnotations = value;\n },\n initialValue: false\n },\n fadeFoldWidgets: {\n set: function (show) {\n dom.setCssClass(this.$gutter, \"ace_fade-fold-widgets\", show);\n },\n initialValue: false\n },\n showFoldWidgets: {\n set: function (show) {\n this.$gutterLayer.setShowFoldWidgets(show);\n this.$loop.schedule(this.CHANGE_GUTTER);\n },\n initialValue: true\n },\n displayIndentGuides: {\n set: function (show) {\n if (this.$textLayer.setDisplayIndentGuides(show))\n this.$loop.schedule(this.CHANGE_TEXT);\n },\n initialValue: true\n },\n highlightIndentGuides: {\n set: function (show) {\n if (this.$textLayer.setHighlightIndentGuides(show) == true) {\n this.$textLayer.$highlightIndentGuide();\n }\n else {\n this.$textLayer.$clearActiveIndentGuide(this.$textLayer.$lines.cells);\n }\n },\n initialValue: true\n },\n highlightGutterLine: {\n set: function (shouldHighlight) {\n this.$gutterLayer.setHighlightGutterLine(shouldHighlight);\n this.$loop.schedule(this.CHANGE_GUTTER);\n },\n initialValue: true\n },\n hScrollBarAlwaysVisible: {\n set: function (val) {\n if (!this.$hScrollBarAlwaysVisible || !this.$horizScroll)\n this.$loop.schedule(this.CHANGE_SCROLL);\n },\n initialValue: false\n },\n vScrollBarAlwaysVisible: {\n set: function (val) {\n if (!this.$vScrollBarAlwaysVisible || !this.$vScroll)\n this.$loop.schedule(this.CHANGE_SCROLL);\n },\n initialValue: false\n },\n fontSize: {\n set: function (size) {\n if (typeof size == \"number\")\n size = size + \"px\";\n this.container.style.fontSize = size;\n this.updateFontSize();\n },\n initialValue: 12\n },\n fontFamily: {\n set: function (name) {\n this.container.style.fontFamily = name;\n this.updateFontSize();\n }\n },\n maxLines: {\n set: function (val) {\n this.updateFull();\n }\n },\n minLines: {\n set: function (val) {\n if (!(this.$minLines < 0x1ffffffffffff))\n this.$minLines = 0;\n this.updateFull();\n }\n },\n maxPixelHeight: {\n set: function (val) {\n this.updateFull();\n },\n initialValue: 0\n },\n scrollPastEnd: {\n set: function (val) {\n val = +val || 0;\n if (this.$scrollPastEnd == val)\n return;\n this.$scrollPastEnd = val;\n this.$loop.schedule(this.CHANGE_SCROLL);\n },\n initialValue: 0,\n handlesSet: true\n },\n fixedWidthGutter: {\n set: function (val) {\n this.$gutterLayer.$fixedWidth = !!val;\n this.$loop.schedule(this.CHANGE_GUTTER);\n }\n },\n customScrollbar: {\n set: function (val) {\n this.$updateCustomScrollbar(val);\n },\n initialValue: false\n },\n theme: {\n set: function (val) { this.setTheme(val); },\n get: function () { return this.$themeId || this.theme; },\n initialValue: \"./theme/textmate\",\n handlesSet: true\n },\n hasCssTransforms: {},\n useTextareaForIME: {\n initialValue: !useragent.isMobile && !useragent.isIE\n }\n});\nexports.VirtualRenderer = VirtualRenderer;\n\n});\n\nace.define(\"ace/worker/worker_client\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/net\",\"ace/lib/event_emitter\",\"ace/config\"], function(require, exports, module) {\n\"use strict\";\n\nvar oop = require(\"../lib/oop\");\nvar net = require(\"../lib/net\");\nvar EventEmitter = require(\"../lib/event_emitter\").EventEmitter;\nvar config = require(\"../config\");\n\nfunction $workerBlob(workerUrl) {\n var script = \"importScripts('\" + net.qualifyURL(workerUrl) + \"');\";\n try {\n return new Blob([script], {\"type\": \"application/javascript\"});\n } catch (e) { // Backwards-compatibility\n var BlobBuilder = window.BlobBuilder || window.WebKitBlobBuilder || window.MozBlobBuilder;\n var blobBuilder = new BlobBuilder();\n blobBuilder.append(script);\n return blobBuilder.getBlob(\"application/javascript\");\n }\n}\n\nfunction createWorker(workerUrl) {\n if (typeof Worker == \"undefined\")\n return { postMessage: function() {}, terminate: function() {} };\n if (config.get(\"loadWorkerFromBlob\")) {\n var blob = $workerBlob(workerUrl);\n var URL = window.URL || window.webkitURL;\n var blobURL = URL.createObjectURL(blob);\n return new Worker(blobURL);\n }\n return new Worker(workerUrl);\n}\n\nvar WorkerClient = function(worker) {\n if (!worker.postMessage)\n worker = this.$createWorkerFromOldConfig.apply(this, arguments);\n\n this.$worker = worker;\n this.$sendDeltaQueue = this.$sendDeltaQueue.bind(this);\n this.changeListener = this.changeListener.bind(this);\n this.onMessage = this.onMessage.bind(this);\n\n this.callbackId = 1;\n this.callbacks = {};\n\n this.$worker.onmessage = this.onMessage;\n};\n\n(function(){\n\n oop.implement(this, EventEmitter);\n\n this.$createWorkerFromOldConfig = function(topLevelNamespaces, mod, classname, workerUrl, importScripts) {\n if (require.nameToUrl && !require.toUrl)\n require.toUrl = require.nameToUrl;\n\n if (config.get(\"packaged\") || !require.toUrl) {\n workerUrl = workerUrl || config.moduleUrl(mod, \"worker\");\n } else {\n var normalizePath = this.$normalizePath;\n workerUrl = workerUrl || normalizePath(require.toUrl(\"ace/worker/worker.js\", null, \"_\"));\n\n var tlns = {};\n topLevelNamespaces.forEach(function(ns) {\n tlns[ns] = normalizePath(require.toUrl(ns, null, \"_\").replace(/(\\.js)?(\\?.*)?$/, \"\"));\n });\n }\n\n this.$worker = createWorker(workerUrl);\n if (importScripts) {\n this.send(\"importScripts\", importScripts);\n }\n this.$worker.postMessage({\n init : true,\n tlns : tlns,\n module : mod,\n classname : classname\n });\n return this.$worker;\n };\n\n this.onMessage = function(e) {\n var msg = e.data;\n switch (msg.type) {\n case \"event\":\n this._signal(msg.name, {data: msg.data});\n break;\n case \"call\":\n var callback = this.callbacks[msg.id];\n if (callback) {\n callback(msg.data);\n delete this.callbacks[msg.id];\n }\n break;\n case \"error\":\n this.reportError(msg.data);\n break;\n case \"log\":\n window.console && console.log && console.log.apply(console, msg.data);\n break;\n }\n };\n \n this.reportError = function(err) {\n window.console && console.error && console.error(err);\n };\n\n this.$normalizePath = function(path) {\n return net.qualifyURL(path);\n };\n\n this.terminate = function() {\n this._signal(\"terminate\", {});\n this.deltaQueue = null;\n this.$worker.terminate();\n this.$worker.onerror = function(e) {\n e.preventDefault();\n };\n this.$worker = null;\n if (this.$doc)\n this.$doc.off(\"change\", this.changeListener);\n this.$doc = null;\n };\n\n this.send = function(cmd, args) {\n this.$worker.postMessage({command: cmd, args: args});\n };\n\n this.call = function(cmd, args, callback) {\n if (callback) {\n var id = this.callbackId++;\n this.callbacks[id] = callback;\n args.push(id);\n }\n this.send(cmd, args);\n };\n\n this.emit = function(event, data) {\n try {\n if (data.data && data.data.err)\n data.data.err = {message: data.data.err.message, stack: data.data.err.stack, code: data.data.err.code};\n this.$worker && this.$worker.postMessage({event: event, data: {data: data.data}});\n }\n catch(ex) {\n console.error(ex.stack);\n }\n };\n\n this.attachToDocument = function(doc) {\n if (this.$doc)\n this.terminate();\n\n this.$doc = doc;\n this.call(\"setValue\", [doc.getValue()]);\n doc.on(\"change\", this.changeListener, true);\n };\n\n this.changeListener = function(delta) {\n if (!this.deltaQueue) {\n this.deltaQueue = [];\n setTimeout(this.$sendDeltaQueue, 0);\n }\n if (delta.action == \"insert\")\n this.deltaQueue.push(delta.start, delta.lines);\n else\n this.deltaQueue.push(delta.start, delta.end);\n };\n\n this.$sendDeltaQueue = function() {\n var q = this.deltaQueue;\n if (!q) return;\n this.deltaQueue = null;\n if (q.length > 50 && q.length > this.$doc.getLength() >> 1) {\n this.call(\"setValue\", [this.$doc.getValue()]);\n } else\n this.emit(\"change\", {data: q});\n };\n\n}).call(WorkerClient.prototype);\n\n\nvar UIWorkerClient = function(topLevelNamespaces, mod, classname) {\n var main = null;\n var emitSync = false;\n var sender = Object.create(EventEmitter);\n\n var messageBuffer = [];\n var workerClient = new WorkerClient({\n messageBuffer: messageBuffer,\n terminate: function() {},\n postMessage: function(e) {\n messageBuffer.push(e);\n if (!main) return;\n if (emitSync)\n setTimeout(processNext);\n else\n processNext();\n }\n });\n\n workerClient.setEmitSync = function(val) { emitSync = val; };\n\n var processNext = function() {\n var msg = messageBuffer.shift();\n if (msg.command)\n main[msg.command].apply(main, msg.args);\n else if (msg.event)\n sender._signal(msg.event, msg.data);\n };\n\n sender.postMessage = function(msg) {\n workerClient.onMessage({data: msg});\n };\n sender.callback = function(data, callbackId) {\n this.postMessage({type: \"call\", id: callbackId, data: data});\n };\n sender.emit = function(name, data) {\n this.postMessage({type: \"event\", name: name, data: data});\n };\n\n config.loadModule([\"worker\", mod], function(Main) {\n main = new Main[classname](sender);\n while (messageBuffer.length)\n processNext();\n });\n\n return workerClient;\n};\n\nexports.UIWorkerClient = UIWorkerClient;\nexports.WorkerClient = WorkerClient;\nexports.createWorker = createWorker;\n\n\n});\n\nace.define(\"ace/placeholder\",[\"require\",\"exports\",\"module\",\"ace/range\",\"ace/lib/event_emitter\",\"ace/lib/oop\"], function(require, exports, module){\"use strict\";\nvar Range = require(\"./range\").Range;\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar oop = require(\"./lib/oop\");\nvar PlaceHolder = /** @class */ (function () {\n function PlaceHolder(session, length, pos, others, mainClass, othersClass) {\n var _self = this;\n this.length = length;\n this.session = session;\n this.doc = session.getDocument();\n this.mainClass = mainClass;\n this.othersClass = othersClass;\n this.$onUpdate = this.onUpdate.bind(this);\n this.doc.on(\"change\", this.$onUpdate, true);\n this.$others = others;\n this.$onCursorChange = function () {\n setTimeout(function () {\n _self.onCursorChange();\n });\n };\n this.$pos = pos;\n var undoStack = session.getUndoManager().$undoStack || session.getUndoManager().$undostack || { length: -1 };\n this.$undoStackDepth = undoStack.length;\n this.setup();\n session.selection.on(\"changeCursor\", this.$onCursorChange);\n }\n PlaceHolder.prototype.setup = function () {\n var _self = this;\n var doc = this.doc;\n var session = this.session;\n this.selectionBefore = session.selection.toJSON();\n if (session.selection.inMultiSelectMode)\n session.selection.toSingleRange();\n this.pos = doc.createAnchor(this.$pos.row, this.$pos.column);\n var pos = this.pos;\n pos.$insertRight = true;\n pos.detach();\n pos.markerId = session.addMarker(new Range(pos.row, pos.column, pos.row, pos.column + this.length), this.mainClass, null, false);\n this.others = [];\n this.$others.forEach(function (other) {\n var anchor = doc.createAnchor(other.row, other.column);\n anchor.$insertRight = true;\n anchor.detach();\n _self.others.push(anchor);\n });\n session.setUndoSelect(false);\n };\n PlaceHolder.prototype.showOtherMarkers = function () {\n if (this.othersActive)\n return;\n var session = this.session;\n var _self = this;\n this.othersActive = true;\n this.others.forEach(function (anchor) {\n anchor.markerId = session.addMarker(new Range(anchor.row, anchor.column, anchor.row, anchor.column + _self.length), _self.othersClass, null, false);\n });\n };\n PlaceHolder.prototype.hideOtherMarkers = function () {\n if (!this.othersActive)\n return;\n this.othersActive = false;\n for (var i = 0; i < this.others.length; i++) {\n this.session.removeMarker(this.others[i].markerId);\n }\n };\n PlaceHolder.prototype.onUpdate = function (delta) {\n if (this.$updating)\n return this.updateAnchors(delta);\n var range = delta;\n if (range.start.row !== range.end.row)\n return;\n if (range.start.row !== this.pos.row)\n return;\n this.$updating = true;\n var lengthDiff = delta.action === \"insert\" ? range.end.column - range.start.column : range.start.column - range.end.column;\n var inMainRange = range.start.column >= this.pos.column && range.start.column <= this.pos.column + this.length + 1;\n var distanceFromStart = range.start.column - this.pos.column;\n this.updateAnchors(delta);\n if (inMainRange)\n this.length += lengthDiff;\n if (inMainRange && !this.session.$fromUndo) {\n if (delta.action === 'insert') {\n for (var i = this.others.length - 1; i >= 0; i--) {\n var otherPos = this.others[i];\n var newPos = { row: otherPos.row, column: otherPos.column + distanceFromStart };\n this.doc.insertMergedLines(newPos, delta.lines);\n }\n }\n else if (delta.action === 'remove') {\n for (var i = this.others.length - 1; i >= 0; i--) {\n var otherPos = this.others[i];\n var newPos = { row: otherPos.row, column: otherPos.column + distanceFromStart };\n this.doc.remove(new Range(newPos.row, newPos.column, newPos.row, newPos.column - lengthDiff));\n }\n }\n }\n this.$updating = false;\n this.updateMarkers();\n };\n PlaceHolder.prototype.updateAnchors = function (delta) {\n this.pos.onChange(delta);\n for (var i = this.others.length; i--;)\n this.others[i].onChange(delta);\n this.updateMarkers();\n };\n PlaceHolder.prototype.updateMarkers = function () {\n if (this.$updating)\n return;\n var _self = this;\n var session = this.session;\n var updateMarker = function (pos, className) {\n session.removeMarker(pos.markerId);\n pos.markerId = session.addMarker(new Range(pos.row, pos.column, pos.row, pos.column + _self.length), className, null, false);\n };\n updateMarker(this.pos, this.mainClass);\n for (var i = this.others.length; i--;)\n updateMarker(this.others[i], this.othersClass);\n };\n PlaceHolder.prototype.onCursorChange = function (event) {\n if (this.$updating || !this.session)\n return;\n var pos = this.session.selection.getCursor();\n if (pos.row === this.pos.row && pos.column >= this.pos.column && pos.column <= this.pos.column + this.length) {\n this.showOtherMarkers();\n this._emit(\"cursorEnter\", event);\n }\n else {\n this.hideOtherMarkers();\n this._emit(\"cursorLeave\", event);\n }\n };\n PlaceHolder.prototype.detach = function () {\n this.session.removeMarker(this.pos && this.pos.markerId);\n this.hideOtherMarkers();\n this.doc.off(\"change\", this.$onUpdate);\n this.session.selection.off(\"changeCursor\", this.$onCursorChange);\n this.session.setUndoSelect(true);\n this.session = null;\n };\n PlaceHolder.prototype.cancel = function () {\n if (this.$undoStackDepth === -1)\n return;\n var undoManager = this.session.getUndoManager();\n var undosRequired = (undoManager.$undoStack || undoManager.$undostack).length - this.$undoStackDepth;\n for (var i = 0; i < undosRequired; i++) {\n undoManager.undo(this.session, true);\n }\n if (this.selectionBefore)\n this.session.selection.fromJSON(this.selectionBefore);\n };\n return PlaceHolder;\n}());\noop.implement(PlaceHolder.prototype, EventEmitter);\nexports.PlaceHolder = PlaceHolder;\n\n});\n\nace.define(\"ace/mouse/multi_select_handler\",[\"require\",\"exports\",\"module\",\"ace/lib/event\",\"ace/lib/useragent\"], function(require, exports, module){var event = require(\"../lib/event\");\nvar useragent = require(\"../lib/useragent\");\nfunction isSamePoint(p1, p2) {\n return p1.row == p2.row && p1.column == p2.column;\n}\nfunction onMouseDown(e) {\n var ev = e.domEvent;\n var alt = ev.altKey;\n var shift = ev.shiftKey;\n var ctrl = ev.ctrlKey;\n var accel = e.getAccelKey();\n var button = e.getButton();\n if (ctrl && useragent.isMac)\n button = ev.button;\n if (e.editor.inMultiSelectMode && button == 2) {\n e.editor.textInput.onContextMenu(e.domEvent);\n return;\n }\n if (!ctrl && !alt && !accel) {\n if (button === 0 && e.editor.inMultiSelectMode)\n e.editor.exitMultiSelectMode();\n return;\n }\n if (button !== 0)\n return;\n var editor = e.editor;\n var selection = editor.selection;\n var isMultiSelect = editor.inMultiSelectMode;\n var pos = e.getDocumentPosition();\n var cursor = selection.getCursor();\n var inSelection = e.inSelection() || (selection.isEmpty() && isSamePoint(pos, cursor));\n var mouseX = e.x, mouseY = e.y;\n var onMouseSelection = function (e) {\n mouseX = e.clientX;\n mouseY = e.clientY;\n };\n var session = editor.session;\n var screenAnchor = editor.renderer.pixelToScreenCoordinates(mouseX, mouseY);\n var screenCursor = screenAnchor;\n var selectionMode;\n if (editor.$mouseHandler.$enableJumpToDef) {\n if (ctrl && alt || accel && alt)\n selectionMode = shift ? \"block\" : \"add\";\n else if (alt && editor.$blockSelectEnabled)\n selectionMode = \"block\";\n }\n else {\n if (accel && !alt) {\n selectionMode = \"add\";\n if (!isMultiSelect && shift)\n return;\n }\n else if (alt && editor.$blockSelectEnabled) {\n selectionMode = \"block\";\n }\n }\n if (selectionMode && useragent.isMac && ev.ctrlKey) {\n editor.$mouseHandler.cancelContextMenu();\n }\n if (selectionMode == \"add\") {\n if (!isMultiSelect && inSelection)\n return; // dragging\n if (!isMultiSelect) {\n var range = selection.toOrientedRange();\n editor.addSelectionMarker(range);\n }\n var oldRange = selection.rangeList.rangeAtPoint(pos);\n editor.inVirtualSelectionMode = true;\n if (shift) {\n oldRange = null;\n range = selection.ranges[0] || range;\n editor.removeSelectionMarker(range);\n }\n editor.once(\"mouseup\", function () {\n var tmpSel = selection.toOrientedRange();\n if (oldRange && tmpSel.isEmpty() && isSamePoint(oldRange.cursor, tmpSel.cursor))\n selection.substractPoint(tmpSel.cursor);\n else {\n if (shift) {\n selection.substractPoint(range.cursor);\n }\n else if (range) {\n editor.removeSelectionMarker(range);\n selection.addRange(range);\n }\n selection.addRange(tmpSel);\n }\n editor.inVirtualSelectionMode = false;\n });\n }\n else if (selectionMode == \"block\") {\n e.stop();\n editor.inVirtualSelectionMode = true;\n var initialRange;\n var rectSel = [];\n var blockSelect = function () {\n var newCursor = editor.renderer.pixelToScreenCoordinates(mouseX, mouseY);\n var cursor = session.screenToDocumentPosition(newCursor.row, newCursor.column, newCursor.offsetX);\n if (isSamePoint(screenCursor, newCursor) && isSamePoint(cursor, selection.lead))\n return;\n screenCursor = newCursor;\n editor.selection.moveToPosition(cursor);\n editor.renderer.scrollCursorIntoView();\n editor.removeSelectionMarkers(rectSel);\n rectSel = selection.rectangularRangeBlock(screenCursor, screenAnchor);\n if (editor.$mouseHandler.$clickSelection && rectSel.length == 1 && rectSel[0].isEmpty())\n rectSel[0] = editor.$mouseHandler.$clickSelection.clone();\n rectSel.forEach(editor.addSelectionMarker, editor);\n editor.updateSelectionMarkers();\n };\n if (isMultiSelect && !accel) {\n selection.toSingleRange();\n }\n else if (!isMultiSelect && accel) {\n initialRange = selection.toOrientedRange();\n editor.addSelectionMarker(initialRange);\n }\n if (shift)\n screenAnchor = session.documentToScreenPosition(selection.lead);\n else\n selection.moveToPosition(pos);\n screenCursor = { row: -1, column: -1 };\n var onMouseSelectionEnd = function (e) {\n blockSelect();\n clearInterval(timerId);\n editor.removeSelectionMarkers(rectSel);\n if (!rectSel.length)\n rectSel = [selection.toOrientedRange()];\n if (initialRange) {\n editor.removeSelectionMarker(initialRange);\n selection.toSingleRange(initialRange);\n }\n for (var i = 0; i < rectSel.length; i++)\n selection.addRange(rectSel[i]);\n editor.inVirtualSelectionMode = false;\n editor.$mouseHandler.$clickSelection = null;\n };\n var onSelectionInterval = blockSelect;\n event.capture(editor.container, onMouseSelection, onMouseSelectionEnd);\n var timerId = setInterval(function () { onSelectionInterval(); }, 20);\n return e.preventDefault();\n }\n}\nexports.onMouseDown = onMouseDown;\n\n});\n\nace.define(\"ace/commands/multi_select_commands\",[\"require\",\"exports\",\"module\",\"ace/keyboard/hash_handler\"], function(require, exports, module){// commands to enter multiselect mode\nexports.defaultCommands = [{\n name: \"addCursorAbove\",\n description: \"Add cursor above\",\n exec: function (editor) { editor.selectMoreLines(-1); },\n bindKey: { win: \"Ctrl-Alt-Up\", mac: \"Ctrl-Alt-Up\" },\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"addCursorBelow\",\n description: \"Add cursor below\",\n exec: function (editor) { editor.selectMoreLines(1); },\n bindKey: { win: \"Ctrl-Alt-Down\", mac: \"Ctrl-Alt-Down\" },\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"addCursorAboveSkipCurrent\",\n description: \"Add cursor above (skip current)\",\n exec: function (editor) { editor.selectMoreLines(-1, true); },\n bindKey: { win: \"Ctrl-Alt-Shift-Up\", mac: \"Ctrl-Alt-Shift-Up\" },\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"addCursorBelowSkipCurrent\",\n description: \"Add cursor below (skip current)\",\n exec: function (editor) { editor.selectMoreLines(1, true); },\n bindKey: { win: \"Ctrl-Alt-Shift-Down\", mac: \"Ctrl-Alt-Shift-Down\" },\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"selectMoreBefore\",\n description: \"Select more before\",\n exec: function (editor) { editor.selectMore(-1); },\n bindKey: { win: \"Ctrl-Alt-Left\", mac: \"Ctrl-Alt-Left\" },\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"selectMoreAfter\",\n description: \"Select more after\",\n exec: function (editor) { editor.selectMore(1); },\n bindKey: { win: \"Ctrl-Alt-Right\", mac: \"Ctrl-Alt-Right\" },\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"selectNextBefore\",\n description: \"Select next before\",\n exec: function (editor) { editor.selectMore(-1, true); },\n bindKey: { win: \"Ctrl-Alt-Shift-Left\", mac: \"Ctrl-Alt-Shift-Left\" },\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"selectNextAfter\",\n description: \"Select next after\",\n exec: function (editor) { editor.selectMore(1, true); },\n bindKey: { win: \"Ctrl-Alt-Shift-Right\", mac: \"Ctrl-Alt-Shift-Right\" },\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"toggleSplitSelectionIntoLines\",\n description: \"Split selection into lines\",\n exec: function (editor) {\n if (editor.multiSelect.rangeCount > 1)\n editor.multiSelect.joinSelections();\n else\n editor.multiSelect.splitIntoLines();\n },\n bindKey: { win: \"Ctrl-Alt-L\", mac: \"Ctrl-Alt-L\" },\n readOnly: true\n }, {\n name: \"splitSelectionIntoLines\",\n description: \"Split into lines\",\n exec: function (editor) { editor.multiSelect.splitIntoLines(); },\n readOnly: true\n }, {\n name: \"alignCursors\",\n description: \"Align cursors\",\n exec: function (editor) { editor.alignCursors(); },\n bindKey: { win: \"Ctrl-Alt-A\", mac: \"Ctrl-Alt-A\" },\n scrollIntoView: \"cursor\"\n }, {\n name: \"findAll\",\n description: \"Find all\",\n exec: function (editor) { editor.findAll(); },\n bindKey: { win: \"Ctrl-Alt-K\", mac: \"Ctrl-Alt-G\" },\n scrollIntoView: \"cursor\",\n readOnly: true\n }];\nexports.multiSelectCommands = [{\n name: \"singleSelection\",\n description: \"Single selection\",\n bindKey: \"esc\",\n exec: function (editor) { editor.exitMultiSelectMode(); },\n scrollIntoView: \"cursor\",\n readOnly: true,\n isAvailable: function (editor) { return editor && editor.inMultiSelectMode; }\n }];\nvar HashHandler = require(\"../keyboard/hash_handler\").HashHandler;\nexports.keyboardHandler = new HashHandler(exports.multiSelectCommands);\n\n});\n\nace.define(\"ace/multi_select\",[\"require\",\"exports\",\"module\",\"ace/range_list\",\"ace/range\",\"ace/selection\",\"ace/mouse/multi_select_handler\",\"ace/lib/event\",\"ace/lib/lang\",\"ace/commands/multi_select_commands\",\"ace/search\",\"ace/edit_session\",\"ace/editor\",\"ace/config\"], function(require, exports, module){var RangeList = require(\"./range_list\").RangeList;\nvar Range = require(\"./range\").Range;\nvar Selection = require(\"./selection\").Selection;\nvar onMouseDown = require(\"./mouse/multi_select_handler\").onMouseDown;\nvar event = require(\"./lib/event\");\nvar lang = require(\"./lib/lang\");\nvar commands = require(\"./commands/multi_select_commands\");\nexports.commands = commands.defaultCommands.concat(commands.multiSelectCommands);\nvar Search = require(\"./search\").Search;\nvar search = new Search();\nfunction find(session, needle, dir) {\n search.$options.wrap = true;\n search.$options.needle = needle;\n search.$options.backwards = dir == -1;\n return search.find(session);\n}\nvar EditSession = require(\"./edit_session\").EditSession;\n(function () {\n this.getSelectionMarkers = function () {\n return this.$selectionMarkers;\n };\n}).call(EditSession.prototype);\n(function () {\n this.ranges = null;\n this.rangeList = null;\n this.addRange = function (range, $blockChangeEvents) {\n if (!range)\n return;\n if (!this.inMultiSelectMode && this.rangeCount === 0) {\n var oldRange = this.toOrientedRange();\n this.rangeList.add(oldRange);\n this.rangeList.add(range);\n if (this.rangeList.ranges.length != 2) {\n this.rangeList.removeAll();\n return $blockChangeEvents || this.fromOrientedRange(range);\n }\n this.rangeList.removeAll();\n this.rangeList.add(oldRange);\n this.$onAddRange(oldRange);\n }\n if (!range.cursor)\n range.cursor = range.end;\n var removed = this.rangeList.add(range);\n this.$onAddRange(range);\n if (removed.length)\n this.$onRemoveRange(removed);\n if (this.rangeCount > 1 && !this.inMultiSelectMode) {\n this._signal(\"multiSelect\");\n this.inMultiSelectMode = true;\n this.session.$undoSelect = false;\n this.rangeList.attach(this.session);\n }\n return $blockChangeEvents || this.fromOrientedRange(range);\n };\n this.toSingleRange = function (range) {\n range = range || this.ranges[0];\n var removed = this.rangeList.removeAll();\n if (removed.length)\n this.$onRemoveRange(removed);\n range && this.fromOrientedRange(range);\n };\n this.substractPoint = function (pos) {\n var removed = this.rangeList.substractPoint(pos);\n if (removed) {\n this.$onRemoveRange(removed);\n return removed[0];\n }\n };\n this.mergeOverlappingRanges = function () {\n var removed = this.rangeList.merge();\n if (removed.length)\n this.$onRemoveRange(removed);\n };\n this.$onAddRange = function (range) {\n this.rangeCount = this.rangeList.ranges.length;\n this.ranges.unshift(range);\n this._signal(\"addRange\", { range: range });\n };\n this.$onRemoveRange = function (removed) {\n this.rangeCount = this.rangeList.ranges.length;\n if (this.rangeCount == 1 && this.inMultiSelectMode) {\n var lastRange = this.rangeList.ranges.pop();\n removed.push(lastRange);\n this.rangeCount = 0;\n }\n for (var i = removed.length; i--;) {\n var index = this.ranges.indexOf(removed[i]);\n this.ranges.splice(index, 1);\n }\n this._signal(\"removeRange\", { ranges: removed });\n if (this.rangeCount === 0 && this.inMultiSelectMode) {\n this.inMultiSelectMode = false;\n this._signal(\"singleSelect\");\n this.session.$undoSelect = true;\n this.rangeList.detach(this.session);\n }\n lastRange = lastRange || this.ranges[0];\n if (lastRange && !lastRange.isEqual(this.getRange()))\n this.fromOrientedRange(lastRange);\n };\n this.$initRangeList = function () {\n if (this.rangeList)\n return;\n this.rangeList = new RangeList();\n this.ranges = [];\n this.rangeCount = 0;\n };\n this.getAllRanges = function () {\n return this.rangeCount ? this.rangeList.ranges.concat() : [this.getRange()];\n };\n this.splitIntoLines = function () {\n var ranges = this.ranges.length ? this.ranges : [this.getRange()];\n var newRanges = [];\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i];\n var row = range.start.row;\n var endRow = range.end.row;\n if (row === endRow) {\n newRanges.push(range.clone());\n }\n else {\n newRanges.push(new Range(row, range.start.column, row, this.session.getLine(row).length));\n while (++row < endRow)\n newRanges.push(this.getLineRange(row, true));\n newRanges.push(new Range(endRow, 0, endRow, range.end.column));\n }\n if (i == 0 && !this.isBackwards())\n newRanges = newRanges.reverse();\n }\n this.toSingleRange();\n for (var i = newRanges.length; i--;)\n this.addRange(newRanges[i]);\n };\n this.joinSelections = function () {\n var ranges = this.rangeList.ranges;\n var lastRange = ranges[ranges.length - 1];\n var range = Range.fromPoints(ranges[0].start, lastRange.end);\n this.toSingleRange();\n this.setSelectionRange(range, lastRange.cursor == lastRange.start);\n };\n this.toggleBlockSelection = function () {\n if (this.rangeCount > 1) {\n var ranges = this.rangeList.ranges;\n var lastRange = ranges[ranges.length - 1];\n var range = Range.fromPoints(ranges[0].start, lastRange.end);\n this.toSingleRange();\n this.setSelectionRange(range, lastRange.cursor == lastRange.start);\n }\n else {\n var cursor = this.session.documentToScreenPosition(this.cursor);\n var anchor = this.session.documentToScreenPosition(this.anchor);\n var rectSel = this.rectangularRangeBlock(cursor, anchor);\n rectSel.forEach(this.addRange, this);\n }\n };\n this.rectangularRangeBlock = function (screenCursor, screenAnchor, includeEmptyLines) {\n var rectSel = [];\n var xBackwards = screenCursor.column < screenAnchor.column;\n if (xBackwards) {\n var startColumn = screenCursor.column;\n var endColumn = screenAnchor.column;\n var startOffsetX = screenCursor.offsetX;\n var endOffsetX = screenAnchor.offsetX;\n }\n else {\n var startColumn = screenAnchor.column;\n var endColumn = screenCursor.column;\n var startOffsetX = screenAnchor.offsetX;\n var endOffsetX = screenCursor.offsetX;\n }\n var yBackwards = screenCursor.row < screenAnchor.row;\n if (yBackwards) {\n var startRow = screenCursor.row;\n var endRow = screenAnchor.row;\n }\n else {\n var startRow = screenAnchor.row;\n var endRow = screenCursor.row;\n }\n if (startColumn < 0)\n startColumn = 0;\n if (startRow < 0)\n startRow = 0;\n if (startRow == endRow)\n includeEmptyLines = true;\n var docEnd;\n for (var row = startRow; row <= endRow; row++) {\n var range = Range.fromPoints(this.session.screenToDocumentPosition(row, startColumn, startOffsetX), this.session.screenToDocumentPosition(row, endColumn, endOffsetX));\n if (range.isEmpty()) {\n if (docEnd && isSamePoint(range.end, docEnd))\n break;\n docEnd = range.end;\n }\n range.cursor = xBackwards ? range.start : range.end;\n rectSel.push(range);\n }\n if (yBackwards)\n rectSel.reverse();\n if (!includeEmptyLines) {\n var end = rectSel.length - 1;\n while (rectSel[end].isEmpty() && end > 0)\n end--;\n if (end > 0) {\n var start = 0;\n while (rectSel[start].isEmpty())\n start++;\n }\n for (var i = end; i >= start; i--) {\n if (rectSel[i].isEmpty())\n rectSel.splice(i, 1);\n }\n }\n return rectSel;\n };\n}).call(Selection.prototype);\nvar Editor = require(\"./editor\").Editor;\n(function () {\n this.updateSelectionMarkers = function () {\n this.renderer.updateCursor();\n this.renderer.updateBackMarkers();\n };\n this.addSelectionMarker = function (orientedRange) {\n if (!orientedRange.cursor)\n orientedRange.cursor = orientedRange.end;\n var style = this.getSelectionStyle();\n orientedRange.marker = this.session.addMarker(orientedRange, \"ace_selection\", style);\n this.session.$selectionMarkers.push(orientedRange);\n this.session.selectionMarkerCount = this.session.$selectionMarkers.length;\n return orientedRange;\n };\n this.removeSelectionMarker = function (range) {\n if (!range.marker)\n return;\n this.session.removeMarker(range.marker);\n var index = this.session.$selectionMarkers.indexOf(range);\n if (index != -1)\n this.session.$selectionMarkers.splice(index, 1);\n this.session.selectionMarkerCount = this.session.$selectionMarkers.length;\n };\n this.removeSelectionMarkers = function (ranges) {\n var markerList = this.session.$selectionMarkers;\n for (var i = ranges.length; i--;) {\n var range = ranges[i];\n if (!range.marker)\n continue;\n this.session.removeMarker(range.marker);\n var index = markerList.indexOf(range);\n if (index != -1)\n markerList.splice(index, 1);\n }\n this.session.selectionMarkerCount = markerList.length;\n };\n this.$onAddRange = function (e) {\n this.addSelectionMarker(e.range);\n this.renderer.updateCursor();\n this.renderer.updateBackMarkers();\n };\n this.$onRemoveRange = function (e) {\n this.removeSelectionMarkers(e.ranges);\n this.renderer.updateCursor();\n this.renderer.updateBackMarkers();\n };\n this.$onMultiSelect = function (e) {\n if (this.inMultiSelectMode)\n return;\n this.inMultiSelectMode = true;\n this.setStyle(\"ace_multiselect\");\n this.keyBinding.addKeyboardHandler(commands.keyboardHandler);\n this.commands.setDefaultHandler(\"exec\", this.$onMultiSelectExec);\n this.renderer.updateCursor();\n this.renderer.updateBackMarkers();\n };\n this.$onSingleSelect = function (e) {\n if (this.session.multiSelect.inVirtualMode)\n return;\n this.inMultiSelectMode = false;\n this.unsetStyle(\"ace_multiselect\");\n this.keyBinding.removeKeyboardHandler(commands.keyboardHandler);\n this.commands.removeDefaultHandler(\"exec\", this.$onMultiSelectExec);\n this.renderer.updateCursor();\n this.renderer.updateBackMarkers();\n this._emit(\"changeSelection\");\n };\n this.$onMultiSelectExec = function (e) {\n var command = e.command;\n var editor = e.editor;\n if (!editor.multiSelect)\n return;\n if (!command.multiSelectAction) {\n var result = command.exec(editor, e.args || {});\n editor.multiSelect.addRange(editor.multiSelect.toOrientedRange());\n editor.multiSelect.mergeOverlappingRanges();\n }\n else if (command.multiSelectAction == \"forEach\") {\n result = editor.forEachSelection(command, e.args);\n }\n else if (command.multiSelectAction == \"forEachLine\") {\n result = editor.forEachSelection(command, e.args, true);\n }\n else if (command.multiSelectAction == \"single\") {\n editor.exitMultiSelectMode();\n result = command.exec(editor, e.args || {});\n }\n else {\n result = command.multiSelectAction(editor, e.args || {});\n }\n return result;\n };\n this.forEachSelection = function (cmd, args, options) {\n if (this.inVirtualSelectionMode)\n return;\n var keepOrder = options && options.keepOrder;\n var $byLines = options == true || options && options.$byLines;\n var session = this.session;\n var selection = this.selection;\n var rangeList = selection.rangeList;\n var ranges = (keepOrder ? selection : rangeList).ranges;\n var result;\n if (!ranges.length)\n return cmd.exec ? cmd.exec(this, args || {}) : cmd(this, args || {});\n var reg = selection._eventRegistry;\n selection._eventRegistry = {};\n var tmpSel = new Selection(session);\n this.inVirtualSelectionMode = true;\n for (var i = ranges.length; i--;) {\n if ($byLines) {\n while (i > 0 && ranges[i].start.row == ranges[i - 1].end.row)\n i--;\n }\n tmpSel.fromOrientedRange(ranges[i]);\n tmpSel.index = i;\n this.selection = session.selection = tmpSel;\n var cmdResult = cmd.exec ? cmd.exec(this, args || {}) : cmd(this, args || {});\n if (!result && cmdResult !== undefined)\n result = cmdResult;\n tmpSel.toOrientedRange(ranges[i]);\n }\n tmpSel.detach();\n this.selection = session.selection = selection;\n this.inVirtualSelectionMode = false;\n selection._eventRegistry = reg;\n selection.mergeOverlappingRanges();\n if (selection.ranges[0])\n selection.fromOrientedRange(selection.ranges[0]);\n var anim = this.renderer.$scrollAnimation;\n this.onCursorChange();\n this.onSelectionChange();\n if (anim && anim.from == anim.to)\n this.renderer.animateScrolling(anim.from);\n return result;\n };\n this.exitMultiSelectMode = function () {\n if (!this.inMultiSelectMode || this.inVirtualSelectionMode)\n return;\n this.multiSelect.toSingleRange();\n };\n this.getSelectedText = function () {\n var text = \"\";\n if (this.inMultiSelectMode && !this.inVirtualSelectionMode) {\n var ranges = this.multiSelect.rangeList.ranges;\n var buf = [];\n for (var i = 0; i < ranges.length; i++) {\n buf.push(this.session.getTextRange(ranges[i]));\n }\n var nl = this.session.getDocument().getNewLineCharacter();\n text = buf.join(nl);\n if (text.length == (buf.length - 1) * nl.length)\n text = \"\";\n }\n else if (!this.selection.isEmpty()) {\n text = this.session.getTextRange(this.getSelectionRange());\n }\n return text;\n };\n this.$checkMultiselectChange = function (e, anchor) {\n if (this.inMultiSelectMode && !this.inVirtualSelectionMode) {\n var range = this.multiSelect.ranges[0];\n if (this.multiSelect.isEmpty() && anchor == this.multiSelect.anchor)\n return;\n var pos = anchor == this.multiSelect.anchor\n ? range.cursor == range.start ? range.end : range.start\n : range.cursor;\n if (pos.row != anchor.row\n || this.session.$clipPositionToDocument(pos.row, pos.column).column != anchor.column)\n this.multiSelect.toSingleRange(this.multiSelect.toOrientedRange());\n else\n this.multiSelect.mergeOverlappingRanges();\n }\n };\n this.findAll = function (needle, options, additive) {\n options = options || {};\n options.needle = needle || options.needle;\n if (options.needle == undefined) {\n var range = this.selection.isEmpty()\n ? this.selection.getWordRange()\n : this.selection.getRange();\n options.needle = this.session.getTextRange(range);\n }\n this.$search.set(options);\n var ranges = this.$search.findAll(this.session);\n if (!ranges.length)\n return 0;\n var selection = this.multiSelect;\n if (!additive)\n selection.toSingleRange(ranges[0]);\n for (var i = ranges.length; i--;)\n selection.addRange(ranges[i], true);\n if (range && selection.rangeList.rangeAtPoint(range.start))\n selection.addRange(range, true);\n return ranges.length;\n };\n this.selectMoreLines = function (dir, skip) {\n var range = this.selection.toOrientedRange();\n var isBackwards = range.cursor == range.end;\n var screenLead = this.session.documentToScreenPosition(range.cursor);\n if (this.selection.$desiredColumn)\n screenLead.column = this.selection.$desiredColumn;\n var lead = this.session.screenToDocumentPosition(screenLead.row + dir, screenLead.column);\n if (!range.isEmpty()) {\n var screenAnchor = this.session.documentToScreenPosition(isBackwards ? range.end : range.start);\n var anchor = this.session.screenToDocumentPosition(screenAnchor.row + dir, screenAnchor.column);\n }\n else {\n var anchor = lead;\n }\n if (isBackwards) {\n var newRange = Range.fromPoints(lead, anchor);\n newRange.cursor = newRange.start;\n }\n else {\n var newRange = Range.fromPoints(anchor, lead);\n newRange.cursor = newRange.end;\n }\n newRange.desiredColumn = screenLead.column;\n if (!this.selection.inMultiSelectMode) {\n this.selection.addRange(range);\n }\n else {\n if (skip)\n var toRemove = range.cursor;\n }\n this.selection.addRange(newRange);\n if (toRemove)\n this.selection.substractPoint(toRemove);\n };\n this.transposeSelections = function (dir) {\n var session = this.session;\n var sel = session.multiSelect;\n var all = sel.ranges;\n for (var i = all.length; i--;) {\n var range = all[i];\n if (range.isEmpty()) {\n var tmp = session.getWordRange(range.start.row, range.start.column);\n range.start.row = tmp.start.row;\n range.start.column = tmp.start.column;\n range.end.row = tmp.end.row;\n range.end.column = tmp.end.column;\n }\n }\n sel.mergeOverlappingRanges();\n var words = [];\n for (var i = all.length; i--;) {\n var range = all[i];\n words.unshift(session.getTextRange(range));\n }\n if (dir < 0)\n words.unshift(words.pop());\n else\n words.push(words.shift());\n for (var i = all.length; i--;) {\n var range = all[i];\n var tmp = range.clone();\n session.replace(range, words[i]);\n range.start.row = tmp.start.row;\n range.start.column = tmp.start.column;\n }\n sel.fromOrientedRange(sel.ranges[0]);\n };\n this.selectMore = function (dir, skip, stopAtFirst) {\n var session = this.session;\n var sel = session.multiSelect;\n var range = sel.toOrientedRange();\n if (range.isEmpty()) {\n range = session.getWordRange(range.start.row, range.start.column);\n range.cursor = dir == -1 ? range.start : range.end;\n this.multiSelect.addRange(range);\n if (stopAtFirst)\n return;\n }\n var needle = session.getTextRange(range);\n var newRange = find(session, needle, dir);\n if (newRange) {\n newRange.cursor = dir == -1 ? newRange.start : newRange.end;\n this.session.unfold(newRange);\n this.multiSelect.addRange(newRange);\n this.renderer.scrollCursorIntoView(null, 0.5);\n }\n if (skip)\n this.multiSelect.substractPoint(range.cursor);\n };\n this.alignCursors = function () {\n var session = this.session;\n var sel = session.multiSelect;\n var ranges = sel.ranges;\n var row = -1;\n var sameRowRanges = ranges.filter(function (r) {\n if (r.cursor.row == row)\n return true;\n row = r.cursor.row;\n });\n if (!ranges.length || sameRowRanges.length == ranges.length - 1) {\n var range = this.selection.getRange();\n var fr = range.start.row, lr = range.end.row;\n var guessRange = fr == lr;\n if (guessRange) {\n var max = this.session.getLength();\n var line;\n do {\n line = this.session.getLine(lr);\n } while (/[=:]/.test(line) && ++lr < max);\n do {\n line = this.session.getLine(fr);\n } while (/[=:]/.test(line) && --fr > 0);\n if (fr < 0)\n fr = 0;\n if (lr >= max)\n lr = max - 1;\n }\n var lines = this.session.removeFullLines(fr, lr);\n lines = this.$reAlignText(lines, guessRange);\n this.session.insert({ row: fr, column: 0 }, lines.join(\"\\n\") + \"\\n\");\n if (!guessRange) {\n range.start.column = 0;\n range.end.column = lines[lines.length - 1].length;\n }\n this.selection.setRange(range);\n }\n else {\n sameRowRanges.forEach(function (r) {\n sel.substractPoint(r.cursor);\n });\n var maxCol = 0;\n var minSpace = Infinity;\n var spaceOffsets = ranges.map(function (r) {\n var p = r.cursor;\n var line = session.getLine(p.row);\n var spaceOffset = line.substr(p.column).search(/\\S/g);\n if (spaceOffset == -1)\n spaceOffset = 0;\n if (p.column > maxCol)\n maxCol = p.column;\n if (spaceOffset < minSpace)\n minSpace = spaceOffset;\n return spaceOffset;\n });\n ranges.forEach(function (r, i) {\n var p = r.cursor;\n var l = maxCol - p.column;\n var d = spaceOffsets[i] - minSpace;\n if (l > d)\n session.insert(p, lang.stringRepeat(\" \", l - d));\n else\n session.remove(new Range(p.row, p.column, p.row, p.column - l + d));\n r.start.column = r.end.column = maxCol;\n r.start.row = r.end.row = p.row;\n r.cursor = r.end;\n });\n sel.fromOrientedRange(ranges[0]);\n this.renderer.updateCursor();\n this.renderer.updateBackMarkers();\n }\n };\n this.$reAlignText = function (lines, forceLeft) {\n var isLeftAligned = true, isRightAligned = true;\n var startW, textW, endW;\n return lines.map(function (line) {\n var m = line.match(/(\\s*)(.*?)(\\s*)([=:].*)/);\n if (!m)\n return [line];\n if (startW == null) {\n startW = m[1].length;\n textW = m[2].length;\n endW = m[3].length;\n return m;\n }\n if (startW + textW + endW != m[1].length + m[2].length + m[3].length)\n isRightAligned = false;\n if (startW != m[1].length)\n isLeftAligned = false;\n if (startW > m[1].length)\n startW = m[1].length;\n if (textW < m[2].length)\n textW = m[2].length;\n if (endW > m[3].length)\n endW = m[3].length;\n return m;\n }).map(forceLeft ? alignLeft :\n isLeftAligned ? isRightAligned ? alignRight : alignLeft : unAlign);\n function spaces(n) {\n return lang.stringRepeat(\" \", n);\n }\n function alignLeft(m) {\n return !m[2] ? m[0] : spaces(startW) + m[2]\n + spaces(textW - m[2].length + endW)\n + m[4].replace(/^([=:])\\s+/, \"$1 \");\n }\n function alignRight(m) {\n return !m[2] ? m[0] : spaces(startW + textW - m[2].length) + m[2]\n + spaces(endW)\n + m[4].replace(/^([=:])\\s+/, \"$1 \");\n }\n function unAlign(m) {\n return !m[2] ? m[0] : spaces(startW) + m[2]\n + spaces(endW)\n + m[4].replace(/^([=:])\\s+/, \"$1 \");\n }\n };\n}).call(Editor.prototype);\nfunction isSamePoint(p1, p2) {\n return p1.row == p2.row && p1.column == p2.column;\n}\nexports.onSessionChange = function (e) {\n var session = e.session;\n if (session && !session.multiSelect) {\n session.$selectionMarkers = [];\n session.selection.$initRangeList();\n session.multiSelect = session.selection;\n }\n this.multiSelect = session && session.multiSelect;\n var oldSession = e.oldSession;\n if (oldSession) {\n oldSession.multiSelect.off(\"addRange\", this.$onAddRange);\n oldSession.multiSelect.off(\"removeRange\", this.$onRemoveRange);\n oldSession.multiSelect.off(\"multiSelect\", this.$onMultiSelect);\n oldSession.multiSelect.off(\"singleSelect\", this.$onSingleSelect);\n oldSession.multiSelect.lead.off(\"change\", this.$checkMultiselectChange);\n oldSession.multiSelect.anchor.off(\"change\", this.$checkMultiselectChange);\n }\n if (session) {\n session.multiSelect.on(\"addRange\", this.$onAddRange);\n session.multiSelect.on(\"removeRange\", this.$onRemoveRange);\n session.multiSelect.on(\"multiSelect\", this.$onMultiSelect);\n session.multiSelect.on(\"singleSelect\", this.$onSingleSelect);\n session.multiSelect.lead.on(\"change\", this.$checkMultiselectChange);\n session.multiSelect.anchor.on(\"change\", this.$checkMultiselectChange);\n }\n if (session && this.inMultiSelectMode != session.selection.inMultiSelectMode) {\n if (session.selection.inMultiSelectMode)\n this.$onMultiSelect();\n else\n this.$onSingleSelect();\n }\n};\nfunction MultiSelect(editor) {\n if (editor.$multiselectOnSessionChange)\n return;\n editor.$onAddRange = editor.$onAddRange.bind(editor);\n editor.$onRemoveRange = editor.$onRemoveRange.bind(editor);\n editor.$onMultiSelect = editor.$onMultiSelect.bind(editor);\n editor.$onSingleSelect = editor.$onSingleSelect.bind(editor);\n editor.$multiselectOnSessionChange = exports.onSessionChange.bind(editor);\n editor.$checkMultiselectChange = editor.$checkMultiselectChange.bind(editor);\n editor.$multiselectOnSessionChange(editor);\n editor.on(\"changeSession\", editor.$multiselectOnSessionChange);\n editor.on(\"mousedown\", onMouseDown);\n editor.commands.addCommands(commands.defaultCommands);\n addAltCursorListeners(editor);\n}\nfunction addAltCursorListeners(editor) {\n if (!editor.textInput)\n return;\n var el = editor.textInput.getElement();\n var altCursor = false;\n event.addListener(el, \"keydown\", function (e) {\n var altDown = e.keyCode == 18 && !(e.ctrlKey || e.shiftKey || e.metaKey);\n if (editor.$blockSelectEnabled && altDown) {\n if (!altCursor) {\n editor.renderer.setMouseCursor(\"crosshair\");\n altCursor = true;\n }\n }\n else if (altCursor) {\n reset();\n }\n }, editor);\n event.addListener(el, \"keyup\", reset, editor);\n event.addListener(el, \"blur\", reset, editor);\n function reset(e) {\n if (altCursor) {\n editor.renderer.setMouseCursor(\"\");\n altCursor = false;\n }\n }\n}\nexports.MultiSelect = MultiSelect;\nrequire(\"./config\").defineOptions(Editor.prototype, \"editor\", {\n enableMultiselect: {\n set: function (val) {\n MultiSelect(this);\n if (val) {\n this.on(\"mousedown\", onMouseDown);\n }\n else {\n this.off(\"mousedown\", onMouseDown);\n }\n },\n value: true\n },\n enableBlockSelect: {\n set: function (val) {\n this.$blockSelectEnabled = val;\n },\n value: true\n }\n});\n\n});\n\nace.define(\"ace/mode/folding/fold_mode\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar Range = require(\"../../range\").Range;\nvar FoldMode = exports.FoldMode = function () { };\n(function () {\n this.foldingStartMarker = null;\n this.foldingStopMarker = null;\n this.getFoldWidget = function (session, foldStyle, row) {\n var line = session.getLine(row);\n if (this.foldingStartMarker.test(line))\n return \"start\";\n if (foldStyle == \"markbeginend\"\n && this.foldingStopMarker\n && this.foldingStopMarker.test(line))\n return \"end\";\n return \"\";\n };\n this.getFoldWidgetRange = function (session, foldStyle, row) {\n return null;\n };\n this.indentationBlock = function (session, row, column) {\n var re = /\\S/;\n var line = session.getLine(row);\n var startLevel = line.search(re);\n if (startLevel == -1)\n return;\n var startColumn = column || line.length;\n var maxRow = session.getLength();\n var startRow = row;\n var endRow = row;\n while (++row < maxRow) {\n var level = session.getLine(row).search(re);\n if (level == -1)\n continue;\n if (level <= startLevel) {\n var token = session.getTokenAt(row, 0);\n if (!token || token.type !== \"string\")\n break;\n }\n endRow = row;\n }\n if (endRow > startRow) {\n var endColumn = session.getLine(endRow).length;\n return new Range(startRow, startColumn, endRow, endColumn);\n }\n };\n this.openingBracketBlock = function (session, bracket, row, column, typeRe) {\n var start = { row: row, column: column + 1 };\n var end = session.$findClosingBracket(bracket, start, typeRe);\n if (!end)\n return;\n var fw = session.foldWidgets[end.row];\n if (fw == null)\n fw = session.getFoldWidget(end.row);\n if (fw == \"start\" && end.row > start.row) {\n end.row--;\n end.column = session.getLine(end.row).length;\n }\n return Range.fromPoints(start, end);\n };\n this.closingBracketBlock = function (session, bracket, row, column, typeRe) {\n var end = { row: row, column: column };\n var start = session.$findOpeningBracket(bracket, end);\n if (!start)\n return;\n start.column++;\n end.column--;\n return Range.fromPoints(start, end);\n };\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/ext/error_marker\",[\"require\",\"exports\",\"module\",\"ace/line_widgets\",\"ace/lib/dom\",\"ace/range\",\"ace/config\"], function(require, exports, module){\"use strict\";\nvar LineWidgets = require(\"../line_widgets\").LineWidgets;\nvar dom = require(\"../lib/dom\");\nvar Range = require(\"../range\").Range;\nvar nls = require(\"../config\").nls;\nfunction binarySearch(array, needle, comparator) {\n var first = 0;\n var last = array.length - 1;\n while (first <= last) {\n var mid = (first + last) >> 1;\n var c = comparator(needle, array[mid]);\n if (c > 0)\n first = mid + 1;\n else if (c < 0)\n last = mid - 1;\n else\n return mid;\n }\n return -(first + 1);\n}\nfunction findAnnotations(session, row, dir) {\n var annotations = session.getAnnotations().sort(Range.comparePoints);\n if (!annotations.length)\n return;\n var i = binarySearch(annotations, { row: row, column: -1 }, Range.comparePoints);\n if (i < 0)\n i = -i - 1;\n if (i >= annotations.length)\n i = dir > 0 ? 0 : annotations.length - 1;\n else if (i === 0 && dir < 0)\n i = annotations.length - 1;\n var annotation = annotations[i];\n if (!annotation || !dir)\n return;\n if (annotation.row === row) {\n do {\n annotation = annotations[i += dir];\n } while (annotation && annotation.row === row);\n if (!annotation)\n return annotations.slice();\n }\n var matched = [];\n row = annotation.row;\n do {\n matched[dir < 0 ? \"unshift\" : \"push\"](annotation);\n annotation = annotations[i += dir];\n } while (annotation && annotation.row == row);\n return matched.length && matched;\n}\nexports.showErrorMarker = function (editor, dir) {\n var session = editor.session;\n if (!session.widgetManager) {\n session.widgetManager = new LineWidgets(session);\n session.widgetManager.attach(editor);\n }\n var pos = editor.getCursorPosition();\n var row = pos.row;\n var oldWidget = session.widgetManager.getWidgetsAtRow(row).filter(function (w) {\n return w.type == \"errorMarker\";\n })[0];\n if (oldWidget) {\n oldWidget.destroy();\n }\n else {\n row -= dir;\n }\n var annotations = findAnnotations(session, row, dir);\n var gutterAnno;\n if (annotations) {\n var annotation = annotations[0];\n pos.column = (annotation.pos && typeof annotation.column != \"number\"\n ? annotation.pos.sc\n : annotation.column) || 0;\n pos.row = annotation.row;\n gutterAnno = editor.renderer.$gutterLayer.$annotations[pos.row];\n }\n else if (oldWidget) {\n return;\n }\n else {\n gutterAnno = {\n text: [nls(\"Looks good!\")],\n className: \"ace_ok\"\n };\n }\n editor.session.unfold(pos.row);\n editor.selection.moveToPosition(pos);\n var w = {\n row: pos.row,\n fixedWidth: true,\n coverGutter: true,\n el: dom.createElement(\"div\"),\n type: \"errorMarker\"\n };\n var el = w.el.appendChild(dom.createElement(\"div\"));\n var arrow = w.el.appendChild(dom.createElement(\"div\"));\n arrow.className = \"error_widget_arrow \" + gutterAnno.className;\n var left = editor.renderer.$cursorLayer\n .getPixelPosition(pos).left;\n arrow.style.left = left + editor.renderer.gutterWidth - 5 + \"px\";\n w.el.className = \"error_widget_wrapper\";\n el.className = \"error_widget \" + gutterAnno.className;\n el.innerHTML = gutterAnno.text.join(\"
    \");\n el.appendChild(dom.createElement(\"div\"));\n var kb = function (_, hashId, keyString) {\n if (hashId === 0 && (keyString === \"esc\" || keyString === \"return\")) {\n w.destroy();\n return { command: \"null\" };\n }\n };\n w.destroy = function () {\n if (editor.$mouseHandler.isMousePressed)\n return;\n editor.keyBinding.removeKeyboardHandler(kb);\n session.widgetManager.removeLineWidget(w);\n editor.off(\"changeSelection\", w.destroy);\n editor.off(\"changeSession\", w.destroy);\n editor.off(\"mouseup\", w.destroy);\n editor.off(\"change\", w.destroy);\n };\n editor.keyBinding.addKeyboardHandler(kb);\n editor.on(\"changeSelection\", w.destroy);\n editor.on(\"changeSession\", w.destroy);\n editor.on(\"mouseup\", w.destroy);\n editor.on(\"change\", w.destroy);\n editor.session.widgetManager.addLineWidget(w);\n w.el.onmousedown = editor.focus.bind(editor);\n editor.renderer.scrollCursorIntoView(null, 0.5, { bottom: w.el.offsetHeight });\n};\ndom.importCssString(\"\\n .error_widget_wrapper {\\n background: inherit;\\n color: inherit;\\n border:none\\n }\\n .error_widget {\\n border-top: solid 2px;\\n border-bottom: solid 2px;\\n margin: 5px 0;\\n padding: 10px 40px;\\n white-space: pre-wrap;\\n }\\n .error_widget.ace_error, .error_widget_arrow.ace_error{\\n border-color: #ff5a5a\\n }\\n .error_widget.ace_warning, .error_widget_arrow.ace_warning{\\n border-color: #F1D817\\n }\\n .error_widget.ace_info, .error_widget_arrow.ace_info{\\n border-color: #5a5a5a\\n }\\n .error_widget.ace_ok, .error_widget_arrow.ace_ok{\\n border-color: #5aaa5a\\n }\\n .error_widget_arrow {\\n position: absolute;\\n border: solid 5px;\\n border-top-color: transparent!important;\\n border-right-color: transparent!important;\\n border-left-color: transparent!important;\\n top: -5px;\\n }\\n\", \"error_marker.css\", false);\n\n});\n\nace.define(\"ace/ace\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\",\"ace/range\",\"ace/editor\",\"ace/edit_session\",\"ace/undomanager\",\"ace/virtual_renderer\",\"ace/worker/worker_client\",\"ace/keyboard/hash_handler\",\"ace/placeholder\",\"ace/multi_select\",\"ace/mode/folding/fold_mode\",\"ace/theme/textmate\",\"ace/ext/error_marker\",\"ace/config\",\"ace/loader_build\"], function(require, exports, module){/**\n * The main class required to set up an Ace instance in the browser.\n *\n * @class Ace\n **/\n\"use strict\";\nrequire(\"./loader_build\")(exports)\nvar dom = require(\"./lib/dom\");\nvar Range = require(\"./range\").Range;\nvar Editor = require(\"./editor\").Editor;\nvar EditSession = require(\"./edit_session\").EditSession;\nvar UndoManager = require(\"./undomanager\").UndoManager;\nvar Renderer = require(\"./virtual_renderer\").VirtualRenderer;\nrequire(\"./worker/worker_client\");\nrequire(\"./keyboard/hash_handler\");\nrequire(\"./placeholder\");\nrequire(\"./multi_select\");\nrequire(\"./mode/folding/fold_mode\");\nrequire(\"./theme/textmate\");\nrequire(\"./ext/error_marker\");\nexports.config = require(\"./config\");\nexports.edit = function (el, options) {\n if (typeof el == \"string\") {\n var _id = el;\n el = document.getElementById(_id);\n if (!el)\n throw new Error(\"ace.edit can't find div #\" + _id);\n }\n if (el && el.env && el.env.editor instanceof Editor)\n return el.env.editor;\n var value = \"\";\n if (el && /input|textarea/i.test(el.tagName)) {\n var oldNode = el;\n value = oldNode.value;\n el = dom.createElement(\"pre\");\n oldNode.parentNode.replaceChild(el, oldNode);\n }\n else if (el) {\n value = el.textContent;\n el.innerHTML = \"\";\n }\n var doc = exports.createEditSession(value);\n var editor = new Editor(new Renderer(el), doc, options);\n var env = {\n document: doc,\n editor: editor,\n onResize: editor.resize.bind(editor, null)\n };\n if (oldNode)\n env.textarea = oldNode;\n editor.on(\"destroy\", function () {\n env.editor.container.env = null; // prevent memory leak on old ie\n });\n editor.container.env = editor.env = env;\n return editor;\n};\nexports.createEditSession = function (text, mode) {\n var doc = new EditSession(text, mode);\n doc.setUndoManager(new UndoManager());\n return doc;\n};\nexports.Range = Range;\nexports.Editor = Editor;\nexports.EditSession = EditSession;\nexports.UndoManager = UndoManager;\nexports.VirtualRenderer = Renderer;\nexports.version = exports.config.version;\n\n}); (function() {\n ace.require([\"ace/ace\"], function(a) {\n if (a) {\n a.config.init(true);\n a.define = ace.define;\n }\n var global = (function () {\n return this;\n })();\n if (!global && typeof window != \"undefined\") global = window; // can happen in strict mode\n if (!global && typeof self != \"undefined\") global = self; // can happen in webworker\n \n if (!global.ace)\n global.ace = a;\n for (var key in a) if (a.hasOwnProperty(key))\n global.ace[key] = a[key];\n global.ace[\"default\"] = global.ace;\n if (typeof module == \"object\" && typeof exports == \"object\" && module) {\n module.exports = global.ace;\n }\n });\n })();\n ","ace.define(\"ace/ext/beautify\",[\"require\",\"exports\",\"module\",\"ace/token_iterator\"], function(require, exports, module){// [WIP]\n\"use strict\";\nvar TokenIterator = require(\"../token_iterator\").TokenIterator;\nfunction is(token, type) {\n return token.type.lastIndexOf(type + \".xml\") > -1;\n}\nexports.singletonTags = [\"area\", \"base\", \"br\", \"col\", \"command\", \"embed\", \"hr\", \"html\", \"img\", \"input\", \"keygen\", \"link\", \"meta\", \"param\", \"source\", \"track\", \"wbr\"];\nexports.blockTags = [\"article\", \"aside\", \"blockquote\", \"body\", \"div\", \"dl\", \"fieldset\", \"footer\", \"form\", \"head\", \"header\", \"html\", \"nav\", \"ol\", \"p\", \"script\", \"section\", \"style\", \"table\", \"tbody\", \"tfoot\", \"thead\", \"ul\"];\nexports.formatOptions = {\n lineBreaksAfterCommasInCurlyBlock: true\n};\nexports.beautify = function (session) {\n var iterator = new TokenIterator(session, 0, 0);\n var token = iterator.getCurrentToken();\n var tabString = session.getTabString();\n var singletonTags = exports.singletonTags;\n var blockTags = exports.blockTags;\n var formatOptions = exports.formatOptions || {};\n var nextToken;\n var breakBefore = false;\n var spaceBefore = false;\n var spaceAfter = false;\n var code = \"\";\n var value = \"\";\n var tagName = \"\";\n var depth = 0;\n var lastDepth = 0;\n var lastIndent = 0;\n var indent = 0;\n var unindent = 0;\n var roundDepth = 0;\n var curlyDepth = 0;\n var row;\n var curRow = 0;\n var rowsToAdd = 0;\n var rowTokens = [];\n var abort = false;\n var i;\n var indentNextLine = false;\n var inTag = false;\n var inCSS = false;\n var inBlock = false;\n var levels = { 0: 0 };\n var parents = [];\n var caseBody = false;\n var trimNext = function () {\n if (nextToken && nextToken.value && nextToken.type !== 'string.regexp')\n nextToken.value = nextToken.value.replace(/^\\s*/, \"\");\n };\n var trimLine = function () {\n var end = code.length - 1;\n while (true) {\n if (end == 0)\n break;\n if (code[end] !== \" \")\n break;\n end = end - 1;\n }\n code = code.slice(0, end + 1);\n };\n var trimCode = function () {\n code = code.trimRight();\n breakBefore = false;\n };\n while (token !== null) {\n curRow = iterator.getCurrentTokenRow();\n rowTokens = iterator.$rowTokens;\n nextToken = iterator.stepForward();\n if (typeof token !== \"undefined\") {\n value = token.value;\n unindent = 0;\n inCSS = (tagName === \"style\" || session.$modeId === \"ace/mode/css\");\n if (is(token, \"tag-open\")) {\n inTag = true;\n if (nextToken)\n inBlock = (blockTags.indexOf(nextToken.value) !== -1);\n if (value === \" 0; rowsToAdd--)\n code += \"\\n\";\n breakBefore = true;\n if (!is(token, \"comment\") && !token.type.match(/^(comment|string)$/))\n value = value.trimLeft();\n }\n if (value) {\n if (token.type === \"keyword\" && value.match(/^(if|else|elseif|for|foreach|while|switch)$/)) {\n parents[depth] = value;\n trimNext();\n spaceAfter = true;\n if (value.match(/^(else|elseif)$/)) {\n if (code.match(/\\}[\\s]*$/)) {\n trimCode();\n spaceBefore = true;\n }\n }\n }\n else if (token.type === \"paren.lparen\") {\n trimNext();\n if (value.substr(-1) === \"{\") {\n spaceAfter = true;\n indentNextLine = false;\n if (!inTag)\n rowsToAdd = 1;\n }\n if (value.substr(0, 1) === \"{\") {\n spaceBefore = true;\n if (code.substr(-1) !== '[' && code.trimRight().substr(-1) === '[') {\n trimCode();\n spaceBefore = false;\n }\n else if (code.trimRight().substr(-1) === ')') {\n trimCode();\n }\n else {\n trimLine();\n }\n }\n }\n else if (token.type === \"paren.rparen\") {\n unindent = 1;\n if (value.substr(0, 1) === \"}\") {\n if (parents[depth - 1] === 'case')\n unindent++;\n if (code.trimRight().substr(-1) === '{') {\n trimCode();\n }\n else {\n spaceBefore = true;\n if (inCSS)\n rowsToAdd += 2;\n }\n }\n if (value.substr(0, 1) === \"]\") {\n if (code.substr(-1) !== '}' && code.trimRight().substr(-1) === '}') {\n spaceBefore = false;\n indent++;\n trimCode();\n }\n }\n if (value.substr(0, 1) === \")\") {\n if (code.substr(-1) !== '(' && code.trimRight().substr(-1) === '(') {\n spaceBefore = false;\n indent++;\n trimCode();\n }\n }\n trimLine();\n }\n else if ((token.type === \"keyword.operator\" || token.type === \"keyword\") && value.match(/^(=|==|===|!=|!==|&&|\\|\\||and|or|xor|\\+=|.=|>|>=|<|<=|=>)$/)) {\n trimCode();\n trimNext();\n spaceBefore = true;\n spaceAfter = true;\n }\n else if (token.type === \"punctuation.operator\" && value === ';') {\n trimCode();\n trimNext();\n spaceAfter = true;\n if (inCSS)\n rowsToAdd++;\n }\n else if (token.type === \"punctuation.operator\" && value.match(/^(:|,)$/)) {\n trimCode();\n trimNext();\n if (value.match(/^(,)$/) && curlyDepth > 0 && roundDepth === 0 && formatOptions.lineBreaksAfterCommasInCurlyBlock) {\n rowsToAdd++;\n }\n else {\n spaceAfter = true;\n breakBefore = false;\n }\n }\n else if (token.type === \"support.php_tag\" && value === \"?>\" && !breakBefore) {\n trimCode();\n spaceBefore = true;\n }\n else if (is(token, \"attribute-name\") && code.substr(-1).match(/^\\s$/)) {\n spaceBefore = true;\n }\n else if (is(token, \"attribute-equals\")) {\n trimLine();\n trimNext();\n }\n else if (is(token, \"tag-close\")) {\n trimLine();\n if (value === \"/>\")\n spaceBefore = true;\n }\n else if (token.type === \"keyword\" && value.match(/^(case|default)$/)) {\n if (caseBody)\n unindent = 1;\n }\n if (breakBefore && !(token.type.match(/^(comment)$/) && !value.substr(0, 1).match(/^[/#]$/)) && !(token.type.match(/^(string)$/) && !value.substr(0, 1).match(/^['\"@]$/))) {\n indent = lastIndent;\n if (depth > lastDepth) {\n indent++;\n for (i = depth; i > lastDepth; i--)\n levels[i] = indent;\n }\n else if (depth < lastDepth)\n indent = levels[depth];\n lastDepth = depth;\n lastIndent = indent;\n if (unindent)\n indent -= unindent;\n if (indentNextLine && !roundDepth) {\n indent++;\n indentNextLine = false;\n }\n for (i = 0; i < indent; i++)\n code += tabString;\n }\n if (token.type === \"keyword\" && value.match(/^(case|default)$/)) {\n if (caseBody === false) {\n parents[depth] = value;\n depth++;\n caseBody = true;\n }\n }\n else if (token.type === \"keyword\" && value.match(/^(break)$/)) {\n if (parents[depth - 1] && parents[depth - 1].match(/^(case|default)$/)) {\n depth--;\n caseBody = false;\n }\n }\n if (token.type === \"paren.lparen\") {\n roundDepth += (value.match(/\\(/g) || []).length;\n curlyDepth += (value.match(/\\{/g) || []).length;\n depth += value.length;\n }\n if (token.type === \"keyword\" && value.match(/^(if|else|elseif|for|while)$/)) {\n indentNextLine = true;\n roundDepth = 0;\n }\n else if (!roundDepth && value.trim() && token.type !== \"comment\")\n indentNextLine = false;\n if (token.type === \"paren.rparen\") {\n roundDepth -= (value.match(/\\)/g) || []).length;\n curlyDepth -= (value.match(/\\}/g) || []).length;\n for (i = 0; i < value.length; i++) {\n depth--;\n if (value.substr(i, 1) === '}' && parents[depth] === 'case') {\n depth--;\n }\n }\n }\n if (token.type == \"text\")\n value = value.replace(/\\s+$/, \" \");\n if (spaceBefore && !breakBefore) {\n trimLine();\n if (code.substr(-1) !== \"\\n\")\n code += \" \";\n }\n code += value;\n if (spaceAfter)\n code += \" \";\n breakBefore = false;\n spaceBefore = false;\n spaceAfter = false;\n if ((is(token, \"tag-close\") && (inBlock || blockTags.indexOf(tagName) !== -1)) || (is(token, \"doctype\") && value === \">\")) {\n if (inBlock && nextToken && nextToken.value === \"\") {\n depth--;\n }\n }\n if (is(token, \"tag-name\")) {\n tagName = value;\n }\n row = curRow;\n }\n }\n token = nextToken;\n }\n code = code.trim();\n session.doc.setValue(code);\n};\nexports.commands = [{\n name: \"beautify\",\n description: \"Format selection (Beautify)\",\n exec: function (editor) {\n exports.beautify(editor.session);\n },\n bindKey: \"Ctrl-Shift-B\"\n }];\n\n}); (function() {\n ace.require([\"ace/ext/beautify\"], function(m) {\n if (typeof module == \"object\" && typeof exports == \"object\" && module) {\n module.exports = m;\n }\n });\n })();\n ","ace.define(\"ace/ext/searchbox-css\",[\"require\",\"exports\",\"module\"], function(require, exports, module){module.exports = \"\\n\\n/* ------------------------------------------------------------------------------------------\\n * Editor Search Form\\n * --------------------------------------------------------------------------------------- */\\n.ace_search {\\n background-color: #ddd;\\n color: #666;\\n border: 1px solid #cbcbcb;\\n border-top: 0 none;\\n overflow: hidden;\\n margin: 0;\\n padding: 4px 6px 0 4px;\\n position: absolute;\\n top: 0;\\n z-index: 99;\\n white-space: normal;\\n}\\n.ace_search.left {\\n border-left: 0 none;\\n border-radius: 0px 0px 5px 0px;\\n left: 0;\\n}\\n.ace_search.right {\\n border-radius: 0px 0px 0px 5px;\\n border-right: 0 none;\\n right: 0;\\n}\\n\\n.ace_search_form, .ace_replace_form {\\n margin: 0 20px 4px 0;\\n overflow: hidden;\\n line-height: 1.9;\\n}\\n.ace_replace_form {\\n margin-right: 0;\\n}\\n.ace_search_form.ace_nomatch {\\n outline: 1px solid red;\\n}\\n\\n.ace_search_field {\\n border-radius: 3px 0 0 3px;\\n background-color: white;\\n color: black;\\n border: 1px solid #cbcbcb;\\n border-right: 0 none;\\n outline: 0;\\n padding: 0;\\n font-size: inherit;\\n margin: 0;\\n line-height: inherit;\\n padding: 0 6px;\\n min-width: 17em;\\n vertical-align: top;\\n min-height: 1.8em;\\n box-sizing: content-box;\\n}\\n.ace_searchbtn {\\n border: 1px solid #cbcbcb;\\n line-height: inherit;\\n display: inline-block;\\n padding: 0 6px;\\n background: #fff;\\n border-right: 0 none;\\n border-left: 1px solid #dcdcdc;\\n cursor: pointer;\\n margin: 0;\\n position: relative;\\n color: #666;\\n}\\n.ace_searchbtn:last-child {\\n border-radius: 0 3px 3px 0;\\n border-right: 1px solid #cbcbcb;\\n}\\n.ace_searchbtn:disabled {\\n background: none;\\n cursor: default;\\n}\\n.ace_searchbtn:hover {\\n background-color: #eef1f6;\\n}\\n.ace_searchbtn.prev, .ace_searchbtn.next {\\n padding: 0px 0.7em\\n}\\n.ace_searchbtn.prev:after, .ace_searchbtn.next:after {\\n content: \\\"\\\";\\n border: solid 2px #888;\\n width: 0.5em;\\n height: 0.5em;\\n border-width: 2px 0 0 2px;\\n display:inline-block;\\n transform: rotate(-45deg);\\n}\\n.ace_searchbtn.next:after {\\n border-width: 0 2px 2px 0 ;\\n}\\n.ace_searchbtn_close {\\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAcCAYAAABRVo5BAAAAZ0lEQVR42u2SUQrAMAhDvazn8OjZBilCkYVVxiis8H4CT0VrAJb4WHT3C5xU2a2IQZXJjiQIRMdkEoJ5Q2yMqpfDIo+XY4k6h+YXOyKqTIj5REaxloNAd0xiKmAtsTHqW8sR2W5f7gCu5nWFUpVjZwAAAABJRU5ErkJggg==) no-repeat 50% 0;\\n border-radius: 50%;\\n border: 0 none;\\n color: #656565;\\n cursor: pointer;\\n font: 16px/16px Arial;\\n padding: 0;\\n height: 14px;\\n width: 14px;\\n top: 9px;\\n right: 7px;\\n position: absolute;\\n}\\n.ace_searchbtn_close:hover {\\n background-color: #656565;\\n background-position: 50% 100%;\\n color: white;\\n}\\n\\n.ace_button {\\n margin-left: 2px;\\n cursor: pointer;\\n -webkit-user-select: none;\\n -moz-user-select: none;\\n -o-user-select: none;\\n -ms-user-select: none;\\n user-select: none;\\n overflow: hidden;\\n opacity: 0.7;\\n border: 1px solid rgba(100,100,100,0.23);\\n padding: 1px;\\n box-sizing: border-box!important;\\n color: black;\\n}\\n\\n.ace_button:hover {\\n background-color: #eee;\\n opacity:1;\\n}\\n.ace_button:active {\\n background-color: #ddd;\\n}\\n\\n.ace_button.checked {\\n border-color: #3399ff;\\n opacity:1;\\n}\\n\\n.ace_search_options{\\n margin-bottom: 3px;\\n text-align: right;\\n -webkit-user-select: none;\\n -moz-user-select: none;\\n -o-user-select: none;\\n -ms-user-select: none;\\n user-select: none;\\n clear: both;\\n}\\n\\n.ace_search_counter {\\n float: left;\\n font-family: arial;\\n padding: 0 8px;\\n}\";\n\n});\n\nace.define(\"ace/ext/searchbox\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\",\"ace/lib/lang\",\"ace/lib/event\",\"ace/ext/searchbox-css\",\"ace/keyboard/hash_handler\",\"ace/lib/keys\",\"ace/config\"], function(require, exports, module){\"use strict\";\nvar dom = require(\"../lib/dom\");\nvar lang = require(\"../lib/lang\");\nvar event = require(\"../lib/event\");\nvar searchboxCss = require(\"./searchbox-css\");\nvar HashHandler = require(\"../keyboard/hash_handler\").HashHandler;\nvar keyUtil = require(\"../lib/keys\");\nvar nls = require(\"../config\").nls;\nvar MAX_COUNT = 999;\ndom.importCssString(searchboxCss, \"ace_searchbox\", false);\nvar SearchBox = /** @class */ (function () {\n function SearchBox(editor, range, showReplaceForm) {\n var div = dom.createElement(\"div\");\n dom.buildDom([\"div\", { class: \"ace_search right\" },\n [\"span\", { action: \"hide\", class: \"ace_searchbtn_close\" }],\n [\"div\", { class: \"ace_search_form\" },\n [\"input\", { class: \"ace_search_field\", placeholder: nls(\"Search for\"), spellcheck: \"false\" }],\n [\"span\", { action: \"findPrev\", class: \"ace_searchbtn prev\" }, \"\\u200b\"],\n [\"span\", { action: \"findNext\", class: \"ace_searchbtn next\" }, \"\\u200b\"],\n [\"span\", { action: \"findAll\", class: \"ace_searchbtn\", title: \"Alt-Enter\" }, nls(\"All\")]\n ],\n [\"div\", { class: \"ace_replace_form\" },\n [\"input\", { class: \"ace_search_field\", placeholder: nls(\"Replace with\"), spellcheck: \"false\" }],\n [\"span\", { action: \"replaceAndFindNext\", class: \"ace_searchbtn\" }, nls(\"Replace\")],\n [\"span\", { action: \"replaceAll\", class: \"ace_searchbtn\" }, nls(\"All\")]\n ],\n [\"div\", { class: \"ace_search_options\" },\n [\"span\", { action: \"toggleReplace\", class: \"ace_button\", title: nls(\"Toggle Replace mode\"),\n style: \"float:left;margin-top:-2px;padding:0 5px;\" }, \"+\"],\n [\"span\", { class: \"ace_search_counter\" }],\n [\"span\", { action: \"toggleRegexpMode\", class: \"ace_button\", title: nls(\"RegExp Search\") }, \".*\"],\n [\"span\", { action: \"toggleCaseSensitive\", class: \"ace_button\", title: nls(\"CaseSensitive Search\") }, \"Aa\"],\n [\"span\", { action: \"toggleWholeWords\", class: \"ace_button\", title: nls(\"Whole Word Search\") }, \"\\\\b\"],\n [\"span\", { action: \"searchInSelection\", class: \"ace_button\", title: nls(\"Search In Selection\") }, \"S\"]\n ]\n ], div);\n this.element = div.firstChild;\n this.setSession = this.setSession.bind(this);\n this.$init();\n this.setEditor(editor);\n dom.importCssString(searchboxCss, \"ace_searchbox\", editor.container);\n }\n SearchBox.prototype.setEditor = function (editor) {\n editor.searchBox = this;\n editor.renderer.scroller.appendChild(this.element);\n this.editor = editor;\n };\n SearchBox.prototype.setSession = function (e) {\n this.searchRange = null;\n this.$syncOptions(true);\n };\n SearchBox.prototype.$initElements = function (sb) {\n this.searchBox = sb.querySelector(\".ace_search_form\");\n this.replaceBox = sb.querySelector(\".ace_replace_form\");\n this.searchOption = sb.querySelector(\"[action=searchInSelection]\");\n this.replaceOption = sb.querySelector(\"[action=toggleReplace]\");\n this.regExpOption = sb.querySelector(\"[action=toggleRegexpMode]\");\n this.caseSensitiveOption = sb.querySelector(\"[action=toggleCaseSensitive]\");\n this.wholeWordOption = sb.querySelector(\"[action=toggleWholeWords]\");\n this.searchInput = this.searchBox.querySelector(\".ace_search_field\");\n this.replaceInput = this.replaceBox.querySelector(\".ace_search_field\");\n this.searchCounter = sb.querySelector(\".ace_search_counter\");\n };\n SearchBox.prototype.$init = function () {\n var sb = this.element;\n this.$initElements(sb);\n var _this = this;\n event.addListener(sb, \"mousedown\", function (e) {\n setTimeout(function () {\n _this.activeInput.focus();\n }, 0);\n event.stopPropagation(e);\n });\n event.addListener(sb, \"click\", function (e) {\n var t = e.target || e.srcElement;\n var action = t.getAttribute(\"action\");\n if (action && _this[action])\n _this[action]();\n else if (_this.$searchBarKb.commands[action])\n _this.$searchBarKb.commands[action].exec(_this);\n event.stopPropagation(e);\n });\n event.addCommandKeyListener(sb, function (e, hashId, keyCode) {\n var keyString = keyUtil.keyCodeToString(keyCode);\n var command = _this.$searchBarKb.findKeyCommand(hashId, keyString);\n if (command && command.exec) {\n command.exec(_this);\n event.stopEvent(e);\n }\n });\n this.$onChange = lang.delayedCall(function () {\n _this.find(false, false);\n });\n event.addListener(this.searchInput, \"input\", function () {\n _this.$onChange.schedule(20);\n });\n event.addListener(this.searchInput, \"focus\", function () {\n _this.activeInput = _this.searchInput;\n _this.searchInput.value && _this.highlight();\n });\n event.addListener(this.replaceInput, \"focus\", function () {\n _this.activeInput = _this.replaceInput;\n _this.searchInput.value && _this.highlight();\n });\n };\n SearchBox.prototype.setSearchRange = function (range) {\n this.searchRange = range;\n if (range) {\n this.searchRangeMarker = this.editor.session.addMarker(range, \"ace_active-line\");\n }\n else if (this.searchRangeMarker) {\n this.editor.session.removeMarker(this.searchRangeMarker);\n this.searchRangeMarker = null;\n }\n };\n SearchBox.prototype.$syncOptions = function (preventScroll) {\n dom.setCssClass(this.replaceOption, \"checked\", this.searchRange);\n dom.setCssClass(this.searchOption, \"checked\", this.searchOption.checked);\n this.replaceOption.textContent = this.replaceOption.checked ? \"-\" : \"+\";\n dom.setCssClass(this.regExpOption, \"checked\", this.regExpOption.checked);\n dom.setCssClass(this.wholeWordOption, \"checked\", this.wholeWordOption.checked);\n dom.setCssClass(this.caseSensitiveOption, \"checked\", this.caseSensitiveOption.checked);\n var readOnly = this.editor.getReadOnly();\n this.replaceOption.style.display = readOnly ? \"none\" : \"\";\n this.replaceBox.style.display = this.replaceOption.checked && !readOnly ? \"\" : \"none\";\n this.find(false, false, preventScroll);\n };\n SearchBox.prototype.highlight = function (re) {\n this.editor.session.highlight(re || this.editor.$search.$options.re);\n this.editor.renderer.updateBackMarkers();\n };\n SearchBox.prototype.find = function (skipCurrent, backwards, preventScroll) {\n var range = this.editor.find(this.searchInput.value, {\n skipCurrent: skipCurrent,\n backwards: backwards,\n wrap: true,\n regExp: this.regExpOption.checked,\n caseSensitive: this.caseSensitiveOption.checked,\n wholeWord: this.wholeWordOption.checked,\n preventScroll: preventScroll,\n range: this.searchRange\n });\n var noMatch = !range && this.searchInput.value;\n dom.setCssClass(this.searchBox, \"ace_nomatch\", noMatch);\n this.editor._emit(\"findSearchBox\", { match: !noMatch });\n this.highlight();\n this.updateCounter();\n };\n SearchBox.prototype.updateCounter = function () {\n var editor = this.editor;\n var regex = editor.$search.$options.re;\n var supportsUnicodeFlag = regex.unicode;\n var all = 0;\n var before = 0;\n if (regex) {\n var value = this.searchRange\n ? editor.session.getTextRange(this.searchRange)\n : editor.getValue();\n var offset = editor.session.doc.positionToIndex(editor.selection.anchor);\n if (this.searchRange)\n offset -= editor.session.doc.positionToIndex(this.searchRange.start);\n var last = regex.lastIndex = 0;\n var m;\n while ((m = regex.exec(value))) {\n all++;\n last = m.index;\n if (last <= offset)\n before++;\n if (all > MAX_COUNT)\n break;\n if (!m[0]) {\n regex.lastIndex = last += lang.skipEmptyMatch(value, last, supportsUnicodeFlag);\n if (last >= value.length)\n break;\n }\n }\n }\n this.searchCounter.textContent = nls(\"$0 of $1\", [before, (all > MAX_COUNT ? MAX_COUNT + \"+\" : all)]);\n };\n SearchBox.prototype.findNext = function () {\n this.find(true, false);\n };\n SearchBox.prototype.findPrev = function () {\n this.find(true, true);\n };\n SearchBox.prototype.findAll = function () {\n var range = this.editor.findAll(this.searchInput.value, {\n regExp: this.regExpOption.checked,\n caseSensitive: this.caseSensitiveOption.checked,\n wholeWord: this.wholeWordOption.checked\n });\n var noMatch = !range && this.searchInput.value;\n dom.setCssClass(this.searchBox, \"ace_nomatch\", noMatch);\n this.editor._emit(\"findSearchBox\", { match: !noMatch });\n this.highlight();\n this.hide();\n };\n SearchBox.prototype.replace = function () {\n if (!this.editor.getReadOnly())\n this.editor.replace(this.replaceInput.value);\n };\n SearchBox.prototype.replaceAndFindNext = function () {\n if (!this.editor.getReadOnly()) {\n this.editor.replace(this.replaceInput.value);\n this.findNext();\n }\n };\n SearchBox.prototype.replaceAll = function () {\n if (!this.editor.getReadOnly())\n this.editor.replaceAll(this.replaceInput.value);\n };\n SearchBox.prototype.hide = function () {\n this.active = false;\n this.setSearchRange(null);\n this.editor.off(\"changeSession\", this.setSession);\n this.element.style.display = \"none\";\n this.editor.keyBinding.removeKeyboardHandler(this.$closeSearchBarKb);\n this.editor.focus();\n };\n SearchBox.prototype.show = function (value, isReplace) {\n this.active = true;\n this.editor.on(\"changeSession\", this.setSession);\n this.element.style.display = \"\";\n this.replaceOption.checked = isReplace;\n if (value)\n this.searchInput.value = value;\n this.searchInput.focus();\n this.searchInput.select();\n this.editor.keyBinding.addKeyboardHandler(this.$closeSearchBarKb);\n this.$syncOptions(true);\n };\n SearchBox.prototype.isFocused = function () {\n var el = document.activeElement;\n return el == this.searchInput || el == this.replaceInput;\n };\n return SearchBox;\n}());\nvar $searchBarKb = new HashHandler();\n$searchBarKb.bindKeys({\n \"Ctrl-f|Command-f\": function (sb) {\n var isReplace = sb.isReplace = !sb.isReplace;\n sb.replaceBox.style.display = isReplace ? \"\" : \"none\";\n sb.replaceOption.checked = false;\n sb.$syncOptions();\n sb.searchInput.focus();\n },\n \"Ctrl-H|Command-Option-F\": function (sb) {\n if (sb.editor.getReadOnly())\n return;\n sb.replaceOption.checked = true;\n sb.$syncOptions();\n sb.replaceInput.focus();\n },\n \"Ctrl-G|Command-G\": function (sb) {\n sb.findNext();\n },\n \"Ctrl-Shift-G|Command-Shift-G\": function (sb) {\n sb.findPrev();\n },\n \"esc\": function (sb) {\n setTimeout(function () { sb.hide(); });\n },\n \"Return\": function (sb) {\n if (sb.activeInput == sb.replaceInput)\n sb.replace();\n sb.findNext();\n },\n \"Shift-Return\": function (sb) {\n if (sb.activeInput == sb.replaceInput)\n sb.replace();\n sb.findPrev();\n },\n \"Alt-Return\": function (sb) {\n if (sb.activeInput == sb.replaceInput)\n sb.replaceAll();\n sb.findAll();\n },\n \"Tab\": function (sb) {\n (sb.activeInput == sb.replaceInput ? sb.searchInput : sb.replaceInput).focus();\n }\n});\n$searchBarKb.addCommands([{\n name: \"toggleRegexpMode\",\n bindKey: { win: \"Alt-R|Alt-/\", mac: \"Ctrl-Alt-R|Ctrl-Alt-/\" },\n exec: function (sb) {\n sb.regExpOption.checked = !sb.regExpOption.checked;\n sb.$syncOptions();\n }\n }, {\n name: \"toggleCaseSensitive\",\n bindKey: { win: \"Alt-C|Alt-I\", mac: \"Ctrl-Alt-R|Ctrl-Alt-I\" },\n exec: function (sb) {\n sb.caseSensitiveOption.checked = !sb.caseSensitiveOption.checked;\n sb.$syncOptions();\n }\n }, {\n name: \"toggleWholeWords\",\n bindKey: { win: \"Alt-B|Alt-W\", mac: \"Ctrl-Alt-B|Ctrl-Alt-W\" },\n exec: function (sb) {\n sb.wholeWordOption.checked = !sb.wholeWordOption.checked;\n sb.$syncOptions();\n }\n }, {\n name: \"toggleReplace\",\n exec: function (sb) {\n sb.replaceOption.checked = !sb.replaceOption.checked;\n sb.$syncOptions();\n }\n }, {\n name: \"searchInSelection\",\n exec: function (sb) {\n sb.searchOption.checked = !sb.searchRange;\n sb.setSearchRange(sb.searchOption.checked && sb.editor.getSelectionRange());\n sb.$syncOptions();\n }\n }]);\nvar $closeSearchBarKb = new HashHandler([{\n bindKey: \"Esc\",\n name: \"closeSearchBar\",\n exec: function (editor) {\n editor.searchBox.hide();\n }\n }]);\nSearchBox.prototype.$searchBarKb = $searchBarKb;\nSearchBox.prototype.$closeSearchBarKb = $closeSearchBarKb;\nexports.SearchBox = SearchBox;\nexports.Search = function (editor, isReplace) {\n var sb = editor.searchBox || new SearchBox(editor);\n sb.show(editor.session.getTextRange(), isReplace);\n};\n\n}); (function() {\n ace.require([\"ace/ext/searchbox\"], function(m) {\n if (typeof module == \"object\" && typeof exports == \"object\" && module) {\n module.exports = m;\n }\n });\n })();\n ","ace.define(\"ace/mode/css_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/mode/text_highlight_rules\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar lang = require(\"../lib/lang\");\nvar TextHighlightRules = require(\"./text_highlight_rules\").TextHighlightRules;\nvar supportType = exports.supportType = \"align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index\";\nvar supportFunction = exports.supportFunction = \"rgb|rgba|url|attr|counter|counters\";\nvar supportConstant = exports.supportConstant = \"absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|flex-end|flex-start|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom\";\nvar supportConstantColor = exports.supportConstantColor = \"aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|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|green|greenyellow|grey|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|magenta|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|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen\";\nvar supportConstantFonts = exports.supportConstantFonts = \"arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace\";\nvar numRe = exports.numRe = \"\\\\-?(?:(?:[0-9]+(?:\\\\.[0-9]+)?)|(?:\\\\.[0-9]+))\";\nvar pseudoElements = exports.pseudoElements = \"(\\\\:+)\\\\b(after|before|first-letter|first-line|moz-selection|selection)\\\\b\";\nvar pseudoClasses = exports.pseudoClasses = \"(:)\\\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\\\b\";\nvar CssHighlightRules = function () {\n var keywordMapper = this.createKeywordMapper({\n \"support.function\": supportFunction,\n \"support.constant\": supportConstant,\n \"support.type\": supportType,\n \"support.constant.color\": supportConstantColor,\n \"support.constant.fonts\": supportConstantFonts\n }, \"text\", true);\n this.$rules = {\n \"start\": [{\n include: [\"strings\", \"url\", \"comments\"]\n }, {\n token: \"paren.lparen\",\n regex: \"\\\\{\",\n next: \"ruleset\"\n }, {\n token: \"paren.rparen\",\n regex: \"\\\\}\"\n }, {\n token: \"string\",\n regex: \"@(?!viewport)\",\n next: \"media\"\n }, {\n token: \"keyword\",\n regex: \"#[a-z0-9-_]+\"\n }, {\n token: \"keyword\",\n regex: \"%\"\n }, {\n token: \"variable\",\n regex: \"\\\\.[a-z0-9-_]+\"\n }, {\n token: \"string\",\n regex: \":[a-z0-9-_]+\"\n }, {\n token: \"constant.numeric\",\n regex: numRe\n }, {\n token: \"constant\",\n regex: \"[a-z0-9-_]+\"\n }, {\n caseInsensitive: true\n }],\n \"media\": [{\n include: [\"strings\", \"url\", \"comments\"]\n }, {\n token: \"paren.lparen\",\n regex: \"\\\\{\",\n next: \"start\"\n }, {\n token: \"paren.rparen\",\n regex: \"\\\\}\",\n next: \"start\"\n }, {\n token: \"string\",\n regex: \";\",\n next: \"start\"\n }, {\n token: \"keyword\",\n regex: \"(?:media|supports|document|charset|import|namespace|media|supports|document\"\n + \"|page|font|keyframes|viewport|counter-style|font-feature-values\"\n + \"|swash|ornaments|annotation|stylistic|styleset|character-variant)\"\n }],\n \"comments\": [{\n token: \"comment\",\n regex: \"\\\\/\\\\*\",\n push: [{\n token: \"comment\",\n regex: \"\\\\*\\\\/\",\n next: \"pop\"\n }, {\n defaultToken: \"comment\"\n }]\n }],\n \"ruleset\": [{\n regex: \"-(webkit|ms|moz|o)-\",\n token: \"text\"\n }, {\n token: \"punctuation.operator\",\n regex: \"[:;]\"\n }, {\n token: \"paren.rparen\",\n regex: \"\\\\}\",\n next: \"start\"\n }, {\n include: [\"strings\", \"url\", \"comments\"]\n }, {\n token: [\"constant.numeric\", \"keyword\"],\n regex: \"(\" + numRe + \")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)\"\n }, {\n token: \"constant.numeric\",\n regex: numRe\n }, {\n token: \"constant.numeric\",\n regex: \"#[a-f0-9]{6}\"\n }, {\n token: \"constant.numeric\",\n regex: \"#[a-f0-9]{3}\"\n }, {\n token: [\"punctuation\", \"entity.other.attribute-name.pseudo-element.css\"],\n regex: pseudoElements\n }, {\n token: [\"punctuation\", \"entity.other.attribute-name.pseudo-class.css\"],\n regex: pseudoClasses\n }, {\n include: \"url\"\n }, {\n token: keywordMapper,\n regex: \"\\\\-?[a-zA-Z_][a-zA-Z0-9_\\\\-]*\"\n }, {\n caseInsensitive: true\n }],\n url: [{\n token: \"support.function\",\n regex: \"(?:url(:?-prefix)?|domain|regexp)\\\\(\",\n push: [{\n token: \"support.function\",\n regex: \"\\\\)\",\n next: \"pop\"\n }, {\n defaultToken: \"string\"\n }]\n }],\n strings: [{\n token: \"string.start\",\n regex: \"'\",\n push: [{\n token: \"string.end\",\n regex: \"'|$\",\n next: \"pop\"\n }, {\n include: \"escapes\"\n }, {\n token: \"constant.language.escape\",\n regex: /\\\\$/,\n consumeLineEnd: true\n }, {\n defaultToken: \"string\"\n }]\n }, {\n token: \"string.start\",\n regex: '\"',\n push: [{\n token: \"string.end\",\n regex: '\"|$',\n next: \"pop\"\n }, {\n include: \"escapes\"\n }, {\n token: \"constant.language.escape\",\n regex: /\\\\$/,\n consumeLineEnd: true\n }, {\n defaultToken: \"string\"\n }]\n }],\n escapes: [{\n token: \"constant.language.escape\",\n regex: /\\\\([a-fA-F\\d]{1,6}|[^a-fA-F\\d])/\n }]\n };\n this.normalizeRules();\n};\noop.inherits(CssHighlightRules, TextHighlightRules);\nexports.CssHighlightRules = CssHighlightRules;\n\n});\n\nace.define(\"ace/mode/matching_brace_outdent\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar Range = require(\"../range\").Range;\nvar MatchingBraceOutdent = function () { };\n(function () {\n this.checkOutdent = function (line, input) {\n if (!/^\\s+$/.test(line))\n return false;\n return /^\\s*\\}/.test(input);\n };\n this.autoOutdent = function (doc, row) {\n var line = doc.getLine(row);\n var match = line.match(/^(\\s*\\})/);\n if (!match)\n return 0;\n var column = match[1].length;\n var openBracePos = doc.findMatchingBracket({ row: row, column: column });\n if (!openBracePos || openBracePos.row == row)\n return 0;\n var indent = this.$getIndent(doc.getLine(openBracePos.row));\n doc.replace(new Range(row, 0, row, column - 1), indent);\n };\n this.$getIndent = function (line) {\n return line.match(/^\\s*/)[0];\n };\n}).call(MatchingBraceOutdent.prototype);\nexports.MatchingBraceOutdent = MatchingBraceOutdent;\n\n});\n\nace.define(\"ace/mode/css_completions\",[\"require\",\"exports\",\"module\"], function(require, exports, module){\"use strict\";\nvar propertyMap = {\n \"background\": { \"#$0\": 1 },\n \"background-color\": { \"#$0\": 1, \"transparent\": 1, \"fixed\": 1 },\n \"background-image\": { \"url('/$0')\": 1 },\n \"background-repeat\": { \"repeat\": 1, \"repeat-x\": 1, \"repeat-y\": 1, \"no-repeat\": 1, \"inherit\": 1 },\n \"background-position\": { \"bottom\": 2, \"center\": 2, \"left\": 2, \"right\": 2, \"top\": 2, \"inherit\": 2 },\n \"background-attachment\": { \"scroll\": 1, \"fixed\": 1 },\n \"background-size\": { \"cover\": 1, \"contain\": 1 },\n \"background-clip\": { \"border-box\": 1, \"padding-box\": 1, \"content-box\": 1 },\n \"background-origin\": { \"border-box\": 1, \"padding-box\": 1, \"content-box\": 1 },\n \"border\": { \"solid $0\": 1, \"dashed $0\": 1, \"dotted $0\": 1, \"#$0\": 1 },\n \"border-color\": { \"#$0\": 1 },\n \"border-style\": { \"solid\": 2, \"dashed\": 2, \"dotted\": 2, \"double\": 2, \"groove\": 2, \"hidden\": 2, \"inherit\": 2, \"inset\": 2, \"none\": 2, \"outset\": 2, \"ridged\": 2 },\n \"border-collapse\": { \"collapse\": 1, \"separate\": 1 },\n \"bottom\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"clear\": { \"left\": 1, \"right\": 1, \"both\": 1, \"none\": 1 },\n \"color\": { \"#$0\": 1, \"rgb(#$00,0,0)\": 1 },\n \"cursor\": { \"default\": 1, \"pointer\": 1, \"move\": 1, \"text\": 1, \"wait\": 1, \"help\": 1, \"progress\": 1, \"n-resize\": 1, \"ne-resize\": 1, \"e-resize\": 1, \"se-resize\": 1, \"s-resize\": 1, \"sw-resize\": 1, \"w-resize\": 1, \"nw-resize\": 1 },\n \"display\": { \"none\": 1, \"block\": 1, \"inline\": 1, \"inline-block\": 1, \"table-cell\": 1 },\n \"empty-cells\": { \"show\": 1, \"hide\": 1 },\n \"float\": { \"left\": 1, \"right\": 1, \"none\": 1 },\n \"font-family\": { \"Arial\": 2, \"Comic Sans MS\": 2, \"Consolas\": 2, \"Courier New\": 2, \"Courier\": 2, \"Georgia\": 2, \"Monospace\": 2, \"Sans-Serif\": 2, \"Segoe UI\": 2, \"Tahoma\": 2, \"Times New Roman\": 2, \"Trebuchet MS\": 2, \"Verdana\": 1 },\n \"font-size\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"font-weight\": { \"bold\": 1, \"normal\": 1 },\n \"font-style\": { \"italic\": 1, \"normal\": 1 },\n \"font-variant\": { \"normal\": 1, \"small-caps\": 1 },\n \"height\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"left\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"letter-spacing\": { \"normal\": 1 },\n \"line-height\": { \"normal\": 1 },\n \"list-style-type\": { \"none\": 1, \"disc\": 1, \"circle\": 1, \"square\": 1, \"decimal\": 1, \"decimal-leading-zero\": 1, \"lower-roman\": 1, \"upper-roman\": 1, \"lower-greek\": 1, \"lower-latin\": 1, \"upper-latin\": 1, \"georgian\": 1, \"lower-alpha\": 1, \"upper-alpha\": 1 },\n \"margin\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"margin-right\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"margin-left\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"margin-top\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"margin-bottom\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"max-height\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"max-width\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"min-height\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"min-width\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"overflow\": { \"hidden\": 1, \"visible\": 1, \"auto\": 1, \"scroll\": 1 },\n \"overflow-x\": { \"hidden\": 1, \"visible\": 1, \"auto\": 1, \"scroll\": 1 },\n \"overflow-y\": { \"hidden\": 1, \"visible\": 1, \"auto\": 1, \"scroll\": 1 },\n \"padding\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"padding-top\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"padding-right\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"padding-bottom\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"padding-left\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"page-break-after\": { \"auto\": 1, \"always\": 1, \"avoid\": 1, \"left\": 1, \"right\": 1 },\n \"page-break-before\": { \"auto\": 1, \"always\": 1, \"avoid\": 1, \"left\": 1, \"right\": 1 },\n \"position\": { \"absolute\": 1, \"relative\": 1, \"fixed\": 1, \"static\": 1 },\n \"right\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"table-layout\": { \"fixed\": 1, \"auto\": 1 },\n \"text-decoration\": { \"none\": 1, \"underline\": 1, \"line-through\": 1, \"blink\": 1 },\n \"text-align\": { \"left\": 1, \"right\": 1, \"center\": 1, \"justify\": 1 },\n \"text-transform\": { \"capitalize\": 1, \"uppercase\": 1, \"lowercase\": 1, \"none\": 1 },\n \"top\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"vertical-align\": { \"top\": 1, \"bottom\": 1 },\n \"visibility\": { \"hidden\": 1, \"visible\": 1 },\n \"white-space\": { \"nowrap\": 1, \"normal\": 1, \"pre\": 1, \"pre-line\": 1, \"pre-wrap\": 1 },\n \"width\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"word-spacing\": { \"normal\": 1 },\n \"filter\": { \"alpha(opacity=$0100)\": 1 },\n \"text-shadow\": { \"$02px 2px 2px #777\": 1 },\n \"text-overflow\": { \"ellipsis-word\": 1, \"clip\": 1, \"ellipsis\": 1 },\n \"-moz-border-radius\": 1,\n \"-moz-border-radius-topright\": 1,\n \"-moz-border-radius-bottomright\": 1,\n \"-moz-border-radius-topleft\": 1,\n \"-moz-border-radius-bottomleft\": 1,\n \"-webkit-border-radius\": 1,\n \"-webkit-border-top-right-radius\": 1,\n \"-webkit-border-top-left-radius\": 1,\n \"-webkit-border-bottom-right-radius\": 1,\n \"-webkit-border-bottom-left-radius\": 1,\n \"-moz-box-shadow\": 1,\n \"-webkit-box-shadow\": 1,\n \"transform\": { \"rotate($00deg)\": 1, \"skew($00deg)\": 1 },\n \"-moz-transform\": { \"rotate($00deg)\": 1, \"skew($00deg)\": 1 },\n \"-webkit-transform\": { \"rotate($00deg)\": 1, \"skew($00deg)\": 1 }\n};\nvar CssCompletions = function () {\n};\n(function () {\n this.completionsDefined = false;\n this.defineCompletions = function () {\n if (document) {\n var style = document.createElement('c').style;\n for (var i in style) {\n if (typeof style[i] !== 'string')\n continue;\n var name = i.replace(/[A-Z]/g, function (x) {\n return '-' + x.toLowerCase();\n });\n if (!propertyMap.hasOwnProperty(name))\n propertyMap[name] = 1;\n }\n }\n this.completionsDefined = true;\n };\n this.getCompletions = function (state, session, pos, prefix) {\n if (!this.completionsDefined) {\n this.defineCompletions();\n }\n if (state === 'ruleset' || session.$mode.$id == \"ace/mode/scss\") {\n var line = session.getLine(pos.row).substr(0, pos.column);\n var inParens = /\\([^)]*$/.test(line);\n if (inParens) {\n line = line.substr(line.lastIndexOf('(') + 1);\n }\n if (/:[^;]+$/.test(line)) {\n /([\\w\\-]+):[^:]*$/.test(line);\n return this.getPropertyValueCompletions(state, session, pos, prefix);\n }\n else {\n return this.getPropertyCompletions(state, session, pos, prefix, inParens);\n }\n }\n return [];\n };\n this.getPropertyCompletions = function (state, session, pos, prefix, skipSemicolon) {\n skipSemicolon = skipSemicolon || false;\n var properties = Object.keys(propertyMap);\n return properties.map(function (property) {\n return {\n caption: property,\n snippet: property + ': $0' + (skipSemicolon ? '' : ';'),\n meta: \"property\",\n score: 1000000\n };\n });\n };\n this.getPropertyValueCompletions = function (state, session, pos, prefix) {\n var line = session.getLine(pos.row).substr(0, pos.column);\n var property = (/([\\w\\-]+):[^:]*$/.exec(line) || {})[1];\n if (!property)\n return [];\n var values = [];\n if (property in propertyMap && typeof propertyMap[property] === \"object\") {\n values = Object.keys(propertyMap[property]);\n }\n return values.map(function (value) {\n return {\n caption: value,\n snippet: value,\n meta: \"property value\",\n score: 1000000\n };\n });\n };\n}).call(CssCompletions.prototype);\nexports.CssCompletions = CssCompletions;\n\n});\n\nace.define(\"ace/mode/behaviour/css\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/behaviour\",\"ace/mode/behaviour/cstyle\",\"ace/token_iterator\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../../lib/oop\");\nvar Behaviour = require(\"../behaviour\").Behaviour;\nvar CstyleBehaviour = require(\"./cstyle\").CstyleBehaviour;\nvar TokenIterator = require(\"../../token_iterator\").TokenIterator;\nvar CssBehaviour = function () {\n this.inherit(CstyleBehaviour);\n this.add(\"colon\", \"insertion\", function (state, action, editor, session, text) {\n if (text === ':' && editor.selection.isEmpty()) {\n var cursor = editor.getCursorPosition();\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n var token = iterator.getCurrentToken();\n if (token && token.value.match(/\\s+/)) {\n token = iterator.stepBackward();\n }\n if (token && token.type === 'support.type') {\n var line = session.doc.getLine(cursor.row);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n if (rightChar === ':') {\n return {\n text: '',\n selection: [1, 1]\n };\n }\n if (/^(\\s+[^;]|\\s*$)/.test(line.substring(cursor.column))) {\n return {\n text: ':;',\n selection: [1, 1]\n };\n }\n }\n }\n });\n this.add(\"colon\", \"deletion\", function (state, action, editor, session, range) {\n var selected = session.doc.getTextRange(range);\n if (!range.isMultiLine() && selected === ':') {\n var cursor = editor.getCursorPosition();\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n var token = iterator.getCurrentToken();\n if (token && token.value.match(/\\s+/)) {\n token = iterator.stepBackward();\n }\n if (token && token.type === 'support.type') {\n var line = session.doc.getLine(range.start.row);\n var rightChar = line.substring(range.end.column, range.end.column + 1);\n if (rightChar === ';') {\n range.end.column++;\n return range;\n }\n }\n }\n });\n this.add(\"semicolon\", \"insertion\", function (state, action, editor, session, text) {\n if (text === ';' && editor.selection.isEmpty()) {\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n if (rightChar === ';') {\n return {\n text: '',\n selection: [1, 1]\n };\n }\n }\n });\n this.add(\"!important\", \"insertion\", function (state, action, editor, session, text) {\n if (text === '!' && editor.selection.isEmpty()) {\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n if (/^\\s*(;|}|$)/.test(line.substring(cursor.column))) {\n return {\n text: '!important',\n selection: [10, 10]\n };\n }\n }\n });\n};\noop.inherits(CssBehaviour, CstyleBehaviour);\nexports.CssBehaviour = CssBehaviour;\n\n});\n\nace.define(\"ace/mode/folding/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/range\",\"ace/mode/folding/fold_mode\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../../lib/oop\");\nvar Range = require(\"../../range\").Range;\nvar BaseFoldMode = require(\"./fold_mode\").FoldMode;\nvar FoldMode = exports.FoldMode = function (commentRegex) {\n if (commentRegex) {\n this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.start));\n this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.end));\n }\n};\noop.inherits(FoldMode, BaseFoldMode);\n(function () {\n this.foldingStartMarker = /([\\{\\[\\(])[^\\}\\]\\)]*$|^\\s*(\\/\\*)/;\n this.foldingStopMarker = /^[^\\[\\{\\(]*([\\}\\]\\)])|^[\\s\\*]*(\\*\\/)/;\n this.singleLineBlockCommentRe = /^\\s*(\\/\\*).*\\*\\/\\s*$/;\n this.tripleStarBlockCommentRe = /^\\s*(\\/\\*\\*\\*).*\\*\\/\\s*$/;\n this.startRegionRe = /^\\s*(\\/\\*|\\/\\/)#?region\\b/;\n this._getFoldWidgetBase = this.getFoldWidget;\n this.getFoldWidget = function (session, foldStyle, row) {\n var line = session.getLine(row);\n if (this.singleLineBlockCommentRe.test(line)) {\n if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line))\n return \"\";\n }\n var fw = this._getFoldWidgetBase(session, foldStyle, row);\n if (!fw && this.startRegionRe.test(line))\n return \"start\"; // lineCommentRegionStart\n return fw;\n };\n this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) {\n var line = session.getLine(row);\n if (this.startRegionRe.test(line))\n return this.getCommentRegionBlock(session, line, row);\n var match = line.match(this.foldingStartMarker);\n if (match) {\n var i = match.index;\n if (match[1])\n return this.openingBracketBlock(session, match[1], row, i);\n var range = session.getCommentFoldRange(row, i + match[0].length, 1);\n if (range && !range.isMultiLine()) {\n if (forceMultiline) {\n range = this.getSectionRange(session, row);\n }\n else if (foldStyle != \"all\")\n range = null;\n }\n return range;\n }\n if (foldStyle === \"markbegin\")\n return;\n var match = line.match(this.foldingStopMarker);\n if (match) {\n var i = match.index + match[0].length;\n if (match[1])\n return this.closingBracketBlock(session, match[1], row, i);\n return session.getCommentFoldRange(row, i, -1);\n }\n };\n this.getSectionRange = function (session, row) {\n var line = session.getLine(row);\n var startIndent = line.search(/\\S/);\n var startRow = row;\n var startColumn = line.length;\n row = row + 1;\n var endRow = row;\n var maxRow = session.getLength();\n while (++row < maxRow) {\n line = session.getLine(row);\n var indent = line.search(/\\S/);\n if (indent === -1)\n continue;\n if (startIndent > indent)\n break;\n var subRange = this.getFoldWidgetRange(session, \"all\", row);\n if (subRange) {\n if (subRange.start.row <= startRow) {\n break;\n }\n else if (subRange.isMultiLine()) {\n row = subRange.end.row;\n }\n else if (startIndent == indent) {\n break;\n }\n }\n endRow = row;\n }\n return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);\n };\n this.getCommentRegionBlock = function (session, line, row) {\n var startColumn = line.search(/\\s*$/);\n var maxRow = session.getLength();\n var startRow = row;\n var re = /^\\s*(?:\\/\\*|\\/\\/|--)#?(end)?region\\b/;\n var depth = 1;\n while (++row < maxRow) {\n line = session.getLine(row);\n var m = re.exec(line);\n if (!m)\n continue;\n if (m[1])\n depth--;\n else\n depth++;\n if (!depth)\n break;\n }\n var endRow = row;\n if (endRow > startRow) {\n return new Range(startRow, startColumn, endRow, line.length);\n }\n };\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/css\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/css_highlight_rules\",\"ace/mode/matching_brace_outdent\",\"ace/worker/worker_client\",\"ace/mode/css_completions\",\"ace/mode/behaviour/css\",\"ace/mode/folding/cstyle\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar TextMode = require(\"./text\").Mode;\nvar CssHighlightRules = require(\"./css_highlight_rules\").CssHighlightRules;\nvar MatchingBraceOutdent = require(\"./matching_brace_outdent\").MatchingBraceOutdent;\nvar WorkerClient = require(\"../worker/worker_client\").WorkerClient;\nvar CssCompletions = require(\"./css_completions\").CssCompletions;\nvar CssBehaviour = require(\"./behaviour/css\").CssBehaviour;\nvar CStyleFoldMode = require(\"./folding/cstyle\").FoldMode;\nvar Mode = function () {\n this.HighlightRules = CssHighlightRules;\n this.$outdent = new MatchingBraceOutdent();\n this.$behaviour = new CssBehaviour();\n this.$completer = new CssCompletions();\n this.foldingRules = new CStyleFoldMode();\n};\noop.inherits(Mode, TextMode);\n(function () {\n this.foldingRules = \"cStyle\";\n this.blockComment = { start: \"/*\", end: \"*/\" };\n this.getNextLineIndent = function (state, line, tab) {\n var indent = this.$getIndent(line);\n var tokens = this.getTokenizer().getLineTokens(line, state).tokens;\n if (tokens.length && tokens[tokens.length - 1].type == \"comment\") {\n return indent;\n }\n var match = line.match(/^.*\\{\\s*$/);\n if (match) {\n indent += tab;\n }\n return indent;\n };\n this.checkOutdent = function (state, line, input) {\n return this.$outdent.checkOutdent(line, input);\n };\n this.autoOutdent = function (state, doc, row) {\n this.$outdent.autoOutdent(doc, row);\n };\n this.getCompletions = function (state, session, pos, prefix) {\n return this.$completer.getCompletions(state, session, pos, prefix);\n };\n this.createWorker = function (session) {\n var worker = new WorkerClient([\"ace\"], \"ace/mode/css_worker\", \"Worker\");\n worker.attachToDocument(session.getDocument());\n worker.on(\"annotate\", function (e) {\n session.setAnnotations(e.data);\n });\n worker.on(\"terminate\", function () {\n session.clearAnnotations();\n });\n return worker;\n };\n this.$id = \"ace/mode/css\";\n this.snippetFileId = \"ace/snippets/css\";\n}).call(Mode.prototype);\nexports.Mode = Mode;\n\n}); (function() {\n ace.require([\"ace/mode/css\"], function(m) {\n if (typeof module == \"object\" && typeof exports == \"object\" && module) {\n module.exports = m;\n }\n });\n })();\n ","ace.define(\"ace/mode/doc_comment_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar TextHighlightRules = require(\"./text_highlight_rules\").TextHighlightRules;\nvar DocCommentHighlightRules = function () {\n this.$rules = {\n \"start\": [\n {\n token: \"comment.doc.tag\",\n regex: \"@\\\\w+(?=\\\\s|$)\"\n }, DocCommentHighlightRules.getTagRule(), {\n defaultToken: \"comment.doc\",\n caseInsensitive: true\n }\n ]\n };\n};\noop.inherits(DocCommentHighlightRules, TextHighlightRules);\nDocCommentHighlightRules.getTagRule = function (start) {\n return {\n token: \"comment.doc.tag.storage.type\",\n regex: \"\\\\b(?:TODO|FIXME|XXX|HACK)\\\\b\"\n };\n};\nDocCommentHighlightRules.getStartRule = function (start) {\n return {\n token: \"comment.doc\",\n regex: \"\\\\/\\\\*(?=\\\\*)\",\n next: start\n };\n};\nDocCommentHighlightRules.getEndRule = function (start) {\n return {\n token: \"comment.doc\",\n regex: \"\\\\*\\\\/\",\n next: start\n };\n};\nexports.DocCommentHighlightRules = DocCommentHighlightRules;\n\n});\n\nace.define(\"ace/mode/golang_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/doc_comment_highlight_rules\",\"ace/mode/text_highlight_rules\"], function(require, exports, module){var oop = require(\"../lib/oop\");\nvar DocCommentHighlightRules = require(\"./doc_comment_highlight_rules\").DocCommentHighlightRules;\nvar TextHighlightRules = require(\"./text_highlight_rules\").TextHighlightRules;\nvar GolangHighlightRules = function () {\n var keywords = (\"else|break|case|return|goto|if|const|select|\" +\n \"continue|struct|default|switch|for|range|\" +\n \"func|import|package|chan|defer|fallthrough|go|interface|map|range|\" +\n \"select|type|var\");\n var builtinTypes = (\"string|uint8|uint16|uint32|uint64|int8|int16|int32|int64|float32|\" +\n \"float64|complex64|complex128|byte|rune|uint|int|uintptr|bool|error\");\n var builtinFunctions = (\"new|close|cap|copy|panic|panicln|print|println|len|make|delete|real|recover|imag|append\");\n var builtinConstants = (\"nil|true|false|iota\");\n var keywordMapper = this.createKeywordMapper({\n \"keyword\": keywords,\n \"constant.language\": builtinConstants,\n \"support.function\": builtinFunctions,\n \"support.type\": builtinTypes\n }, \"\");\n var stringEscapeRe = \"\\\\\\\\(?:[0-7]{3}|x\\\\h{2}|u{4}|U\\\\h{6}|[abfnrtv'\\\"\\\\\\\\])\".replace(/\\\\h/g, \"[a-fA-F\\\\d]\");\n this.$rules = {\n \"start\": [\n {\n token: \"comment\",\n regex: \"\\\\/\\\\/.*$\"\n },\n DocCommentHighlightRules.getStartRule(\"doc-start\"),\n {\n token: \"comment.start\",\n regex: \"\\\\/\\\\*\",\n next: \"comment\"\n }, {\n token: \"string\",\n regex: /\"(?:[^\"\\\\]|\\\\.)*?\"/\n }, {\n token: \"string\",\n regex: '`',\n next: \"bqstring\"\n }, {\n token: \"constant.numeric\",\n regex: \"'(?:[^\\\\'\\uD800-\\uDBFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|\" + stringEscapeRe.replace('\"', '') + \")'\"\n }, {\n token: \"constant.numeric\",\n regex: \"0[xX][0-9a-fA-F]+\\\\b\"\n }, {\n token: \"constant.numeric\",\n regex: \"[+-]?\\\\d+(?:(?:\\\\.\\\\d*)?(?:[eE][+-]?\\\\d+)?)?\\\\b\"\n }, {\n token: [\"keyword\", \"text\", \"entity.name.function\"],\n regex: \"(func)(\\\\s+)([a-zA-Z_$][a-zA-Z0-9_$]*)\\\\b\"\n }, {\n token: function (val) {\n if (val[val.length - 1] == \"(\") {\n return [{\n type: keywordMapper(val.slice(0, -1)) || \"support.function\",\n value: val.slice(0, -1)\n }, {\n type: \"paren.lparen\",\n value: val.slice(-1)\n }];\n }\n return keywordMapper(val) || \"identifier\";\n },\n regex: \"[a-zA-Z_$][a-zA-Z0-9_$]*\\\\b\\\\(?\"\n }, {\n token: \"keyword.operator\",\n regex: \"!|\\\\$|%|&|\\\\*|\\\\-\\\\-|\\\\-|\\\\+\\\\+|\\\\+|~|==|=|!=|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\\\|\\\\||\\\\?\\\\:|\\\\*=|%=|\\\\+=|\\\\-=|&=|\\\\^=\"\n }, {\n token: \"punctuation.operator\",\n regex: \"\\\\?|\\\\:|\\\\,|\\\\;|\\\\.\"\n }, {\n token: \"paren.lparen\",\n regex: \"[[({]\"\n }, {\n token: \"paren.rparen\",\n regex: \"[\\\\])}]\"\n }, {\n token: \"text\",\n regex: \"\\\\s+\"\n }\n ],\n \"comment\": [\n {\n token: \"comment.end\",\n regex: \"\\\\*\\\\/\",\n next: \"start\"\n }, {\n defaultToken: \"comment\"\n }\n ],\n \"bqstring\": [\n {\n token: \"string\",\n regex: '`',\n next: \"start\"\n }, {\n defaultToken: \"string\"\n }\n ]\n };\n this.embedRules(DocCommentHighlightRules, \"doc-\", [DocCommentHighlightRules.getEndRule(\"start\")]);\n};\noop.inherits(GolangHighlightRules, TextHighlightRules);\nexports.GolangHighlightRules = GolangHighlightRules;\n\n});\n\nace.define(\"ace/mode/matching_brace_outdent\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar Range = require(\"../range\").Range;\nvar MatchingBraceOutdent = function () { };\n(function () {\n this.checkOutdent = function (line, input) {\n if (!/^\\s+$/.test(line))\n return false;\n return /^\\s*\\}/.test(input);\n };\n this.autoOutdent = function (doc, row) {\n var line = doc.getLine(row);\n var match = line.match(/^(\\s*\\})/);\n if (!match)\n return 0;\n var column = match[1].length;\n var openBracePos = doc.findMatchingBracket({ row: row, column: column });\n if (!openBracePos || openBracePos.row == row)\n return 0;\n var indent = this.$getIndent(doc.getLine(openBracePos.row));\n doc.replace(new Range(row, 0, row, column - 1), indent);\n };\n this.$getIndent = function (line) {\n return line.match(/^\\s*/)[0];\n };\n}).call(MatchingBraceOutdent.prototype);\nexports.MatchingBraceOutdent = MatchingBraceOutdent;\n\n});\n\nace.define(\"ace/mode/folding/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/range\",\"ace/mode/folding/fold_mode\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../../lib/oop\");\nvar Range = require(\"../../range\").Range;\nvar BaseFoldMode = require(\"./fold_mode\").FoldMode;\nvar FoldMode = exports.FoldMode = function (commentRegex) {\n if (commentRegex) {\n this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.start));\n this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.end));\n }\n};\noop.inherits(FoldMode, BaseFoldMode);\n(function () {\n this.foldingStartMarker = /([\\{\\[\\(])[^\\}\\]\\)]*$|^\\s*(\\/\\*)/;\n this.foldingStopMarker = /^[^\\[\\{\\(]*([\\}\\]\\)])|^[\\s\\*]*(\\*\\/)/;\n this.singleLineBlockCommentRe = /^\\s*(\\/\\*).*\\*\\/\\s*$/;\n this.tripleStarBlockCommentRe = /^\\s*(\\/\\*\\*\\*).*\\*\\/\\s*$/;\n this.startRegionRe = /^\\s*(\\/\\*|\\/\\/)#?region\\b/;\n this._getFoldWidgetBase = this.getFoldWidget;\n this.getFoldWidget = function (session, foldStyle, row) {\n var line = session.getLine(row);\n if (this.singleLineBlockCommentRe.test(line)) {\n if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line))\n return \"\";\n }\n var fw = this._getFoldWidgetBase(session, foldStyle, row);\n if (!fw && this.startRegionRe.test(line))\n return \"start\"; // lineCommentRegionStart\n return fw;\n };\n this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) {\n var line = session.getLine(row);\n if (this.startRegionRe.test(line))\n return this.getCommentRegionBlock(session, line, row);\n var match = line.match(this.foldingStartMarker);\n if (match) {\n var i = match.index;\n if (match[1])\n return this.openingBracketBlock(session, match[1], row, i);\n var range = session.getCommentFoldRange(row, i + match[0].length, 1);\n if (range && !range.isMultiLine()) {\n if (forceMultiline) {\n range = this.getSectionRange(session, row);\n }\n else if (foldStyle != \"all\")\n range = null;\n }\n return range;\n }\n if (foldStyle === \"markbegin\")\n return;\n var match = line.match(this.foldingStopMarker);\n if (match) {\n var i = match.index + match[0].length;\n if (match[1])\n return this.closingBracketBlock(session, match[1], row, i);\n return session.getCommentFoldRange(row, i, -1);\n }\n };\n this.getSectionRange = function (session, row) {\n var line = session.getLine(row);\n var startIndent = line.search(/\\S/);\n var startRow = row;\n var startColumn = line.length;\n row = row + 1;\n var endRow = row;\n var maxRow = session.getLength();\n while (++row < maxRow) {\n line = session.getLine(row);\n var indent = line.search(/\\S/);\n if (indent === -1)\n continue;\n if (startIndent > indent)\n break;\n var subRange = this.getFoldWidgetRange(session, \"all\", row);\n if (subRange) {\n if (subRange.start.row <= startRow) {\n break;\n }\n else if (subRange.isMultiLine()) {\n row = subRange.end.row;\n }\n else if (startIndent == indent) {\n break;\n }\n }\n endRow = row;\n }\n return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);\n };\n this.getCommentRegionBlock = function (session, line, row) {\n var startColumn = line.search(/\\s*$/);\n var maxRow = session.getLength();\n var startRow = row;\n var re = /^\\s*(?:\\/\\*|\\/\\/|--)#?(end)?region\\b/;\n var depth = 1;\n while (++row < maxRow) {\n line = session.getLine(row);\n var m = re.exec(line);\n if (!m)\n continue;\n if (m[1])\n depth--;\n else\n depth++;\n if (!depth)\n break;\n }\n var endRow = row;\n if (endRow > startRow) {\n return new Range(startRow, startColumn, endRow, line.length);\n }\n };\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/golang\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/golang_highlight_rules\",\"ace/mode/matching_brace_outdent\",\"ace/mode/folding/cstyle\"], function(require, exports, module){var oop = require(\"../lib/oop\");\nvar TextMode = require(\"./text\").Mode;\nvar GolangHighlightRules = require(\"./golang_highlight_rules\").GolangHighlightRules;\nvar MatchingBraceOutdent = require(\"./matching_brace_outdent\").MatchingBraceOutdent;\nvar CStyleFoldMode = require(\"./folding/cstyle\").FoldMode;\nvar Mode = function () {\n this.HighlightRules = GolangHighlightRules;\n this.$outdent = new MatchingBraceOutdent();\n this.foldingRules = new CStyleFoldMode();\n this.$behaviour = this.$defaultBehaviour;\n};\noop.inherits(Mode, TextMode);\n(function () {\n this.lineCommentStart = \"//\";\n this.blockComment = { start: \"/*\", end: \"*/\" };\n this.getNextLineIndent = function (state, line, tab) {\n var indent = this.$getIndent(line);\n var tokenizedLine = this.getTokenizer().getLineTokens(line, state);\n var tokens = tokenizedLine.tokens;\n var endState = tokenizedLine.state;\n if (tokens.length && tokens[tokens.length - 1].type == \"comment\") {\n return indent;\n }\n if (state == \"start\") {\n var match = line.match(/^.*[\\{\\(\\[]\\s*$/);\n if (match) {\n indent += tab;\n }\n }\n return indent;\n }; //end getNextLineIndent\n this.checkOutdent = function (state, line, input) {\n return this.$outdent.checkOutdent(line, input);\n };\n this.autoOutdent = function (state, doc, row) {\n this.$outdent.autoOutdent(doc, row);\n };\n this.$id = \"ace/mode/golang\";\n}).call(Mode.prototype);\nexports.Mode = Mode;\n\n}); (function() {\n ace.require([\"ace/mode/golang\"], function(m) {\n if (typeof module == \"object\" && typeof exports == \"object\" && module) {\n module.exports = m;\n }\n });\n })();\n ","ace.define(\"ace/mode/jsdoc_comment_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar TextHighlightRules = require(\"./text_highlight_rules\").TextHighlightRules;\nvar JsDocCommentHighlightRules = function () {\n this.$rules = {\n \"start\": [\n {\n token: [\"comment.doc.tag\", \"comment.doc.text\", \"lparen.doc\"],\n regex: \"(@(?:param|member|typedef|property|namespace|var|const|callback))(\\\\s*)({)\",\n push: [\n {\n token: \"lparen.doc\",\n regex: \"{\",\n push: [\n {\n include: \"doc-syntax\"\n }, {\n token: \"rparen.doc\",\n regex: \"}|(?=$)\",\n next: \"pop\"\n }\n ]\n }, {\n token: [\"rparen.doc\", \"text.doc\", \"variable.parameter.doc\", \"lparen.doc\", \"variable.parameter.doc\", \"rparen.doc\"],\n regex: /(})(\\s*)(?:([\\w=:\\/\\.]+)|(?:(\\[)([\\w=:\\/\\.]+)(\\])))/,\n next: \"pop\"\n }, {\n token: \"rparen.doc\",\n regex: \"}|(?=$)\",\n next: \"pop\"\n }, {\n include: \"doc-syntax\"\n }, {\n defaultToken: \"text.doc\"\n }\n ]\n }, {\n token: [\"comment.doc.tag\", \"text.doc\", \"lparen.doc\"],\n regex: \"(@(?:returns?|yields|type|this|suppress|public|protected|private|package|modifies|\"\n + \"implements|external|exception|throws|enum|define|extends))(\\\\s*)({)\",\n push: [\n {\n token: \"lparen.doc\",\n regex: \"{\",\n push: [\n {\n include: \"doc-syntax\"\n }, {\n token: \"rparen.doc\",\n regex: \"}|(?=$)\",\n next: \"pop\"\n }\n ]\n }, {\n token: \"rparen.doc\",\n regex: \"}|(?=$)\",\n next: \"pop\"\n }, {\n include: \"doc-syntax\"\n }, {\n defaultToken: \"text.doc\"\n }\n ]\n }, {\n token: [\"comment.doc.tag\", \"text.doc\", \"variable.parameter.doc\"],\n regex: \"(@(?:alias|memberof|instance|module|name|lends|namespace|external|this|template|\"\n + \"requires|param|implements|function|extends|typedef|mixes|constructor|var|\"\n + \"memberof\\\\!|event|listens|exports|class|constructs|interface|emits|fires|\"\n + \"throws|const|callback|borrows|augments))(\\\\s+)(\\\\w[\\\\w#\\.:\\/~\\\"\\\\-]*)?\"\n }, {\n token: [\"comment.doc.tag\", \"text.doc\", \"variable.parameter.doc\"],\n regex: \"(@method)(\\\\s+)(\\\\w[\\\\w\\.\\\\(\\\\)]*)\"\n }, {\n token: \"comment.doc.tag\",\n regex: \"@access\\\\s+(?:private|public|protected)\"\n }, {\n token: \"comment.doc.tag\",\n regex: \"@kind\\\\s+(?:class|constant|event|external|file|function|member|mixin|module|namespace|typedef)\"\n }, {\n token: \"comment.doc.tag\",\n regex: \"@\\\\w+(?=\\\\s|$)\"\n },\n JsDocCommentHighlightRules.getTagRule(),\n {\n defaultToken: \"comment.doc\",\n caseInsensitive: true\n }\n ],\n \"doc-syntax\": [{\n token: \"operator.doc\",\n regex: /[|:]/\n }, {\n token: \"paren.doc\",\n regex: /[\\[\\]]/\n }]\n };\n this.normalizeRules();\n};\noop.inherits(JsDocCommentHighlightRules, TextHighlightRules);\nJsDocCommentHighlightRules.getTagRule = function (start) {\n return {\n token: \"comment.doc.tag.storage.type\",\n regex: \"\\\\b(?:TODO|FIXME|XXX|HACK)\\\\b\"\n };\n};\nJsDocCommentHighlightRules.getStartRule = function (start) {\n return {\n token: \"comment.doc\",\n regex: \"\\\\/\\\\*(?=\\\\*)\",\n next: start\n };\n};\nJsDocCommentHighlightRules.getEndRule = function (start) {\n return {\n token: \"comment.doc\",\n regex: \"\\\\*\\\\/\",\n next: start\n };\n};\nexports.JsDocCommentHighlightRules = JsDocCommentHighlightRules;\n\n});\n\nace.define(\"ace/mode/javascript_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/jsdoc_comment_highlight_rules\",\"ace/mode/text_highlight_rules\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar DocCommentHighlightRules = require(\"./jsdoc_comment_highlight_rules\").JsDocCommentHighlightRules;\nvar TextHighlightRules = require(\"./text_highlight_rules\").TextHighlightRules;\nvar identifierRe = \"[a-zA-Z\\\\$_\\u00a1-\\uffff][a-zA-Z\\\\d\\\\$_\\u00a1-\\uffff]*\";\nvar JavaScriptHighlightRules = function (options) {\n var keywordMapper = this.createKeywordMapper({\n \"variable.language\": \"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Symbol|\" + // Constructors\n \"Namespace|QName|XML|XMLList|\" + // E4X\n \"ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|\" +\n \"Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|\" +\n \"Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|\" + // Errors\n \"SyntaxError|TypeError|URIError|\" +\n \"decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|\" + // Non-constructor functions\n \"isNaN|parseFloat|parseInt|\" +\n \"JSON|Math|\" + // Other\n \"this|arguments|prototype|window|document\",\n \"keyword\": \"const|yield|import|get|set|async|await|\" +\n \"break|case|catch|continue|default|delete|do|else|finally|for|function|\" +\n \"if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|\" +\n \"__parent__|__count__|escape|unescape|with|__proto__|\" +\n \"class|enum|extends|super|export|implements|private|public|interface|package|protected|static|constructor\",\n \"storage.type\": \"const|let|var|function\",\n \"constant.language\": \"null|Infinity|NaN|undefined\",\n \"support.function\": \"alert\",\n \"constant.language.boolean\": \"true|false\"\n }, \"identifier\");\n var kwBeforeRe = \"case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void\";\n var escapedRe = \"\\\\\\\\(?:x[0-9a-fA-F]{2}|\" + // hex\n \"u[0-9a-fA-F]{4}|\" + // unicode\n \"u{[0-9a-fA-F]{1,6}}|\" + // es6 unicode\n \"[0-2][0-7]{0,2}|\" + // oct\n \"3[0-7][0-7]?|\" + // oct\n \"[4-7][0-7]?|\" + //oct\n \".)\";\n this.$rules = {\n \"no_regex\": [\n DocCommentHighlightRules.getStartRule(\"doc-start\"),\n comments(\"no_regex\"),\n {\n token: \"string\",\n regex: \"'(?=.)\",\n next: \"qstring\"\n }, {\n token: \"string\",\n regex: '\"(?=.)',\n next: \"qqstring\"\n }, {\n token: \"constant.numeric\",\n regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\\b/\n }, {\n token: \"constant.numeric\",\n regex: /(?:\\d\\d*(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+\\b)?/\n }, {\n token: [\n \"storage.type\", \"punctuation.operator\", \"support.function\",\n \"punctuation.operator\", \"entity.name.function\", \"text\", \"keyword.operator\"\n ],\n regex: \"(\" + identifierRe + \")(\\\\.)(prototype)(\\\\.)(\" + identifierRe + \")(\\\\s*)(=)\",\n next: \"function_arguments\"\n }, {\n token: [\n \"storage.type\", \"punctuation.operator\", \"entity.name.function\", \"text\",\n \"keyword.operator\", \"text\", \"storage.type\", \"text\", \"paren.lparen\"\n ],\n regex: \"(\" + identifierRe + \")(\\\\.)(\" + identifierRe + \")(\\\\s*)(=)(\\\\s*)(function\\\\*?)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token: [\n \"entity.name.function\", \"text\", \"keyword.operator\", \"text\", \"storage.type\",\n \"text\", \"paren.lparen\"\n ],\n regex: \"(\" + identifierRe + \")(\\\\s*)(=)(\\\\s*)(function\\\\*?)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token: [\n \"storage.type\", \"punctuation.operator\", \"entity.name.function\", \"text\",\n \"keyword.operator\", \"text\",\n \"storage.type\", \"text\", \"entity.name.function\", \"text\", \"paren.lparen\"\n ],\n regex: \"(\" + identifierRe + \")(\\\\.)(\" + identifierRe + \")(\\\\s*)(=)(\\\\s*)(function\\\\*?)(\\\\s+)(\\\\w+)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token: [\n \"storage.type\", \"text\", \"entity.name.function\", \"text\", \"paren.lparen\"\n ],\n regex: \"(function\\\\*?)(\\\\s+)(\" + identifierRe + \")(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token: [\n \"entity.name.function\", \"text\", \"punctuation.operator\",\n \"text\", \"storage.type\", \"text\", \"paren.lparen\"\n ],\n regex: \"(\" + identifierRe + \")(\\\\s*)(:)(\\\\s*)(function\\\\*?)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token: [\n \"text\", \"text\", \"storage.type\", \"text\", \"paren.lparen\"\n ],\n regex: \"(:)(\\\\s*)(function\\\\*?)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token: \"keyword\",\n regex: \"from(?=\\\\s*('|\\\"))\"\n }, {\n token: \"keyword\",\n regex: \"(?:\" + kwBeforeRe + \")\\\\b\",\n next: \"start\"\n }, {\n token: \"support.constant\",\n regex: /that\\b/\n }, {\n token: [\"storage.type\", \"punctuation.operator\", \"support.function.firebug\"],\n regex: /(console)(\\.)(warn|info|log|error|time|trace|timeEnd|assert)\\b/\n }, {\n token: keywordMapper,\n regex: identifierRe\n }, {\n token: \"punctuation.operator\",\n regex: /[.](?![.])/,\n next: \"property\"\n }, {\n token: \"storage.type\",\n regex: /=>/,\n next: \"start\"\n }, {\n token: \"keyword.operator\",\n regex: /--|\\+\\+|\\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\\|\\||\\?:|[!$%&*+\\-~\\/^]=?/,\n next: \"start\"\n }, {\n token: \"punctuation.operator\",\n regex: /[?:,;.]/,\n next: \"start\"\n }, {\n token: \"paren.lparen\",\n regex: /[\\[({]/,\n next: \"start\"\n }, {\n token: \"paren.rparen\",\n regex: /[\\])}]/\n }, {\n token: \"comment\",\n regex: /^#!.*$/\n }\n ],\n property: [{\n token: \"text\",\n regex: \"\\\\s+\"\n }, {\n token: [\n \"storage.type\", \"punctuation.operator\", \"entity.name.function\", \"text\",\n \"keyword.operator\", \"text\",\n \"storage.type\", \"text\", \"entity.name.function\", \"text\", \"paren.lparen\"\n ],\n regex: \"(\" + identifierRe + \")(\\\\.)(\" + identifierRe + \")(\\\\s*)(=)(\\\\s*)(function\\\\*?)(?:(\\\\s+)(\\\\w+))?(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token: \"punctuation.operator\",\n regex: /[.](?![.])/\n }, {\n token: \"support.function\",\n regex: /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|lter|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward|rEach)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\\b(?=\\()/\n }, {\n token: \"support.function.dom\",\n regex: /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\\b(?=\\()/\n }, {\n token: \"support.constant\",\n regex: /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\\b/\n }, {\n token: \"identifier\",\n regex: identifierRe\n }, {\n regex: \"\",\n token: \"empty\",\n next: \"no_regex\"\n }\n ],\n \"start\": [\n DocCommentHighlightRules.getStartRule(\"doc-start\"),\n comments(\"start\"),\n {\n token: \"string.regexp\",\n regex: \"\\\\/\",\n next: \"regex\"\n }, {\n token: \"text\",\n regex: \"\\\\s+|^$\",\n next: \"start\"\n }, {\n token: \"empty\",\n regex: \"\",\n next: \"no_regex\"\n }\n ],\n \"regex\": [\n {\n token: \"regexp.keyword.operator\",\n regex: \"\\\\\\\\(?:u[\\\\da-fA-F]{4}|x[\\\\da-fA-F]{2}|.)\"\n }, {\n token: \"string.regexp\",\n regex: \"/[sxngimy]*\",\n next: \"no_regex\"\n }, {\n token: \"invalid\",\n regex: /\\{\\d+\\b,?\\d*\\}[+*]|[+*$^?][+*]|[$^][?]|\\?{3,}/\n }, {\n token: \"constant.language.escape\",\n regex: /\\(\\?[:=!]|\\)|\\{\\d+\\b,?\\d*\\}|[+*]\\?|[()$^+*?.]/\n }, {\n token: \"constant.language.delimiter\",\n regex: /\\|/\n }, {\n token: \"constant.language.escape\",\n regex: /\\[\\^?/,\n next: \"regex_character_class\"\n }, {\n token: \"empty\",\n regex: \"$\",\n next: \"no_regex\"\n }, {\n defaultToken: \"string.regexp\"\n }\n ],\n \"regex_character_class\": [\n {\n token: \"regexp.charclass.keyword.operator\",\n regex: \"\\\\\\\\(?:u[\\\\da-fA-F]{4}|x[\\\\da-fA-F]{2}|.)\"\n }, {\n token: \"constant.language.escape\",\n regex: \"]\",\n next: \"regex\"\n }, {\n token: \"constant.language.escape\",\n regex: \"-\"\n }, {\n token: \"empty\",\n regex: \"$\",\n next: \"no_regex\"\n }, {\n defaultToken: \"string.regexp.charachterclass\"\n }\n ],\n \"default_parameter\": [\n {\n token: \"string\",\n regex: \"'(?=.)\",\n push: [\n {\n token: \"string\",\n regex: \"'|$\",\n next: \"pop\"\n }, {\n include: \"qstring\"\n }\n ]\n }, {\n token: \"string\",\n regex: '\"(?=.)',\n push: [\n {\n token: \"string\",\n regex: '\"|$',\n next: \"pop\"\n }, {\n include: \"qqstring\"\n }\n ]\n }, {\n token: \"constant.language\",\n regex: \"null|Infinity|NaN|undefined\"\n }, {\n token: \"constant.numeric\",\n regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\\b/\n }, {\n token: \"constant.numeric\",\n regex: /(?:\\d\\d*(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+\\b)?/\n }, {\n token: \"punctuation.operator\",\n regex: \",\",\n next: \"function_arguments\"\n }, {\n token: \"text\",\n regex: \"\\\\s+\"\n }, {\n token: \"punctuation.operator\",\n regex: \"$\"\n }, {\n token: \"empty\",\n regex: \"\",\n next: \"no_regex\"\n }\n ],\n \"function_arguments\": [\n comments(\"function_arguments\"),\n {\n token: \"variable.parameter\",\n regex: identifierRe\n }, {\n token: \"punctuation.operator\",\n regex: \",\"\n }, {\n token: \"text\",\n regex: \"\\\\s+\"\n }, {\n token: \"punctuation.operator\",\n regex: \"$\"\n }, {\n token: \"empty\",\n regex: \"\",\n next: \"no_regex\"\n }\n ],\n \"qqstring\": [\n {\n token: \"constant.language.escape\",\n regex: escapedRe\n }, {\n token: \"string\",\n regex: \"\\\\\\\\$\",\n consumeLineEnd: true\n }, {\n token: \"string\",\n regex: '\"|$',\n next: \"no_regex\"\n }, {\n defaultToken: \"string\"\n }\n ],\n \"qstring\": [\n {\n token: \"constant.language.escape\",\n regex: escapedRe\n }, {\n token: \"string\",\n regex: \"\\\\\\\\$\",\n consumeLineEnd: true\n }, {\n token: \"string\",\n regex: \"'|$\",\n next: \"no_regex\"\n }, {\n defaultToken: \"string\"\n }\n ]\n };\n if (!options || !options.noES6) {\n this.$rules.no_regex.unshift({\n regex: \"[{}]\", onMatch: function (val, state, stack) {\n this.next = val == \"{\" ? this.nextState : \"\";\n if (val == \"{\" && stack.length) {\n stack.unshift(\"start\", state);\n }\n else if (val == \"}\" && stack.length) {\n stack.shift();\n this.next = stack.shift();\n if (this.next.indexOf(\"string\") != -1 || this.next.indexOf(\"jsx\") != -1)\n return \"paren.quasi.end\";\n }\n return val == \"{\" ? \"paren.lparen\" : \"paren.rparen\";\n },\n nextState: \"start\"\n }, {\n token: \"string.quasi.start\",\n regex: /`/,\n push: [{\n token: \"constant.language.escape\",\n regex: escapedRe\n }, {\n token: \"paren.quasi.start\",\n regex: /\\${/,\n push: \"start\"\n }, {\n token: \"string.quasi.end\",\n regex: /`/,\n next: \"pop\"\n }, {\n defaultToken: \"string.quasi\"\n }]\n }, {\n token: [\"variable.parameter\", \"text\"],\n regex: \"(\" + identifierRe + \")(\\\\s*)(?=\\\\=>)\"\n }, {\n token: \"paren.lparen\",\n regex: \"(\\\\()(?=.+\\\\s*=>)\",\n next: \"function_arguments\"\n }, {\n token: \"variable.language\",\n regex: \"(?:(?:(?:Weak)?(?:Set|Map))|Promise)\\\\b\"\n });\n this.$rules[\"function_arguments\"].unshift({\n token: \"keyword.operator\",\n regex: \"=\",\n next: \"default_parameter\"\n }, {\n token: \"keyword.operator\",\n regex: \"\\\\.{3}\"\n });\n this.$rules[\"property\"].unshift({\n token: \"support.function\",\n regex: \"(findIndex|repeat|startsWith|endsWith|includes|isSafeInteger|trunc|cbrt|log2|log10|sign|then|catch|\"\n + \"finally|resolve|reject|race|any|all|allSettled|keys|entries|isInteger)\\\\b(?=\\\\()\"\n }, {\n token: \"constant.language\",\n regex: \"(?:MAX_SAFE_INTEGER|MIN_SAFE_INTEGER|EPSILON)\\\\b\"\n });\n if (!options || options.jsx != false)\n JSX.call(this);\n }\n this.embedRules(DocCommentHighlightRules, \"doc-\", [DocCommentHighlightRules.getEndRule(\"no_regex\")]);\n this.normalizeRules();\n};\noop.inherits(JavaScriptHighlightRules, TextHighlightRules);\nfunction JSX() {\n var tagRegex = identifierRe.replace(\"\\\\d\", \"\\\\d\\\\-\");\n var jsxTag = {\n onMatch: function (val, state, stack) {\n var offset = val.charAt(1) == \"/\" ? 2 : 1;\n if (offset == 1) {\n if (state != this.nextState)\n stack.unshift(this.next, this.nextState, 0);\n else\n stack.unshift(this.next);\n stack[2]++;\n }\n else if (offset == 2) {\n if (state == this.nextState) {\n stack[1]--;\n if (!stack[1] || stack[1] < 0) {\n stack.shift();\n stack.shift();\n }\n }\n }\n return [{\n type: \"meta.tag.punctuation.\" + (offset == 1 ? \"\" : \"end-\") + \"tag-open.xml\",\n value: val.slice(0, offset)\n }, {\n type: \"meta.tag.tag-name.xml\",\n value: val.substr(offset)\n }];\n },\n regex: \"\",\n onMatch: function (value, currentState, stack) {\n if (currentState == stack[0])\n stack.shift();\n if (value.length == 2) {\n if (stack[0] == this.nextState)\n stack[1]--;\n if (!stack[1] || stack[1] < 0) {\n stack.splice(0, 2);\n }\n }\n this.next = stack[0] || \"start\";\n return [{ type: this.token, value: value }];\n },\n nextState: \"jsx\"\n },\n jsxJsRule,\n comments(\"jsxAttributes\"),\n {\n token: \"entity.other.attribute-name.xml\",\n regex: tagRegex\n }, {\n token: \"keyword.operator.attribute-equals.xml\",\n regex: \"=\"\n }, {\n token: \"text.tag-whitespace.xml\",\n regex: \"\\\\s+\"\n }, {\n token: \"string.attribute-value.xml\",\n regex: \"'\",\n stateName: \"jsx_attr_q\",\n push: [\n { token: \"string.attribute-value.xml\", regex: \"'\", next: \"pop\" },\n { include: \"reference\" },\n { defaultToken: \"string.attribute-value.xml\" }\n ]\n }, {\n token: \"string.attribute-value.xml\",\n regex: '\"',\n stateName: \"jsx_attr_qq\",\n push: [\n { token: \"string.attribute-value.xml\", regex: '\"', next: \"pop\" },\n { include: \"reference\" },\n { defaultToken: \"string.attribute-value.xml\" }\n ]\n },\n jsxTag\n ];\n this.$rules.reference = [{\n token: \"constant.language.escape.reference.xml\",\n regex: \"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\\\.-]+;)\"\n }];\n}\nfunction comments(next) {\n return [\n {\n token: \"comment\",\n regex: /\\/\\*/,\n next: [\n DocCommentHighlightRules.getTagRule(),\n { token: \"comment\", regex: \"\\\\*\\\\/\", next: next || \"pop\" },\n { defaultToken: \"comment\", caseInsensitive: true }\n ]\n }, {\n token: \"comment\",\n regex: \"\\\\/\\\\/\",\n next: [\n DocCommentHighlightRules.getTagRule(),\n { token: \"comment\", regex: \"$|^\", next: next || \"pop\" },\n { defaultToken: \"comment\", caseInsensitive: true }\n ]\n }\n ];\n}\nexports.JavaScriptHighlightRules = JavaScriptHighlightRules;\n\n});\n\nace.define(\"ace/mode/matching_brace_outdent\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar Range = require(\"../range\").Range;\nvar MatchingBraceOutdent = function () { };\n(function () {\n this.checkOutdent = function (line, input) {\n if (!/^\\s+$/.test(line))\n return false;\n return /^\\s*\\}/.test(input);\n };\n this.autoOutdent = function (doc, row) {\n var line = doc.getLine(row);\n var match = line.match(/^(\\s*\\})/);\n if (!match)\n return 0;\n var column = match[1].length;\n var openBracePos = doc.findMatchingBracket({ row: row, column: column });\n if (!openBracePos || openBracePos.row == row)\n return 0;\n var indent = this.$getIndent(doc.getLine(openBracePos.row));\n doc.replace(new Range(row, 0, row, column - 1), indent);\n };\n this.$getIndent = function (line) {\n return line.match(/^\\s*/)[0];\n };\n}).call(MatchingBraceOutdent.prototype);\nexports.MatchingBraceOutdent = MatchingBraceOutdent;\n\n});\n\nace.define(\"ace/mode/folding/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/range\",\"ace/mode/folding/fold_mode\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../../lib/oop\");\nvar Range = require(\"../../range\").Range;\nvar BaseFoldMode = require(\"./fold_mode\").FoldMode;\nvar FoldMode = exports.FoldMode = function (commentRegex) {\n if (commentRegex) {\n this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.start));\n this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.end));\n }\n};\noop.inherits(FoldMode, BaseFoldMode);\n(function () {\n this.foldingStartMarker = /([\\{\\[\\(])[^\\}\\]\\)]*$|^\\s*(\\/\\*)/;\n this.foldingStopMarker = /^[^\\[\\{\\(]*([\\}\\]\\)])|^[\\s\\*]*(\\*\\/)/;\n this.singleLineBlockCommentRe = /^\\s*(\\/\\*).*\\*\\/\\s*$/;\n this.tripleStarBlockCommentRe = /^\\s*(\\/\\*\\*\\*).*\\*\\/\\s*$/;\n this.startRegionRe = /^\\s*(\\/\\*|\\/\\/)#?region\\b/;\n this._getFoldWidgetBase = this.getFoldWidget;\n this.getFoldWidget = function (session, foldStyle, row) {\n var line = session.getLine(row);\n if (this.singleLineBlockCommentRe.test(line)) {\n if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line))\n return \"\";\n }\n var fw = this._getFoldWidgetBase(session, foldStyle, row);\n if (!fw && this.startRegionRe.test(line))\n return \"start\"; // lineCommentRegionStart\n return fw;\n };\n this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) {\n var line = session.getLine(row);\n if (this.startRegionRe.test(line))\n return this.getCommentRegionBlock(session, line, row);\n var match = line.match(this.foldingStartMarker);\n if (match) {\n var i = match.index;\n if (match[1])\n return this.openingBracketBlock(session, match[1], row, i);\n var range = session.getCommentFoldRange(row, i + match[0].length, 1);\n if (range && !range.isMultiLine()) {\n if (forceMultiline) {\n range = this.getSectionRange(session, row);\n }\n else if (foldStyle != \"all\")\n range = null;\n }\n return range;\n }\n if (foldStyle === \"markbegin\")\n return;\n var match = line.match(this.foldingStopMarker);\n if (match) {\n var i = match.index + match[0].length;\n if (match[1])\n return this.closingBracketBlock(session, match[1], row, i);\n return session.getCommentFoldRange(row, i, -1);\n }\n };\n this.getSectionRange = function (session, row) {\n var line = session.getLine(row);\n var startIndent = line.search(/\\S/);\n var startRow = row;\n var startColumn = line.length;\n row = row + 1;\n var endRow = row;\n var maxRow = session.getLength();\n while (++row < maxRow) {\n line = session.getLine(row);\n var indent = line.search(/\\S/);\n if (indent === -1)\n continue;\n if (startIndent > indent)\n break;\n var subRange = this.getFoldWidgetRange(session, \"all\", row);\n if (subRange) {\n if (subRange.start.row <= startRow) {\n break;\n }\n else if (subRange.isMultiLine()) {\n row = subRange.end.row;\n }\n else if (startIndent == indent) {\n break;\n }\n }\n endRow = row;\n }\n return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);\n };\n this.getCommentRegionBlock = function (session, line, row) {\n var startColumn = line.search(/\\s*$/);\n var maxRow = session.getLength();\n var startRow = row;\n var re = /^\\s*(?:\\/\\*|\\/\\/|--)#?(end)?region\\b/;\n var depth = 1;\n while (++row < maxRow) {\n line = session.getLine(row);\n var m = re.exec(line);\n if (!m)\n continue;\n if (m[1])\n depth--;\n else\n depth++;\n if (!depth)\n break;\n }\n var endRow = row;\n if (endRow > startRow) {\n return new Range(startRow, startColumn, endRow, line.length);\n }\n };\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/javascript\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/javascript_highlight_rules\",\"ace/mode/matching_brace_outdent\",\"ace/worker/worker_client\",\"ace/mode/behaviour/cstyle\",\"ace/mode/folding/cstyle\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar TextMode = require(\"./text\").Mode;\nvar JavaScriptHighlightRules = require(\"./javascript_highlight_rules\").JavaScriptHighlightRules;\nvar MatchingBraceOutdent = require(\"./matching_brace_outdent\").MatchingBraceOutdent;\nvar WorkerClient = require(\"../worker/worker_client\").WorkerClient;\nvar CstyleBehaviour = require(\"./behaviour/cstyle\").CstyleBehaviour;\nvar CStyleFoldMode = require(\"./folding/cstyle\").FoldMode;\nvar Mode = function () {\n this.HighlightRules = JavaScriptHighlightRules;\n this.$outdent = new MatchingBraceOutdent();\n this.$behaviour = new CstyleBehaviour();\n this.foldingRules = new CStyleFoldMode();\n};\noop.inherits(Mode, TextMode);\n(function () {\n this.lineCommentStart = \"//\";\n this.blockComment = { start: \"/*\", end: \"*/\" };\n this.$quotes = { '\"': '\"', \"'\": \"'\", \"`\": \"`\" };\n this.$pairQuotesAfter = {\n \"`\": /\\w/\n };\n this.getNextLineIndent = function (state, line, tab) {\n var indent = this.$getIndent(line);\n var tokenizedLine = this.getTokenizer().getLineTokens(line, state);\n var tokens = tokenizedLine.tokens;\n var endState = tokenizedLine.state;\n if (tokens.length && tokens[tokens.length - 1].type == \"comment\") {\n return indent;\n }\n if (state == \"start\" || state == \"no_regex\") {\n var match = line.match(/^.*(?:\\bcase\\b.*:|[\\{\\(\\[])\\s*$/);\n if (match) {\n indent += tab;\n }\n }\n else if (state == \"doc-start\") {\n if (endState == \"start\" || endState == \"no_regex\") {\n return \"\";\n }\n var match = line.match(/^\\s*(\\/?)\\*/);\n if (match) {\n if (match[1]) {\n indent += \" \";\n }\n indent += \"* \";\n }\n }\n return indent;\n };\n this.checkOutdent = function (state, line, input) {\n return this.$outdent.checkOutdent(line, input);\n };\n this.autoOutdent = function (state, doc, row) {\n this.$outdent.autoOutdent(doc, row);\n };\n this.createWorker = function (session) {\n var worker = new WorkerClient([\"ace\"], \"ace/mode/javascript_worker\", \"JavaScriptWorker\");\n worker.attachToDocument(session.getDocument());\n worker.on(\"annotate\", function (results) {\n session.setAnnotations(results.data);\n });\n worker.on(\"terminate\", function () {\n session.clearAnnotations();\n });\n return worker;\n };\n this.$id = \"ace/mode/javascript\";\n this.snippetFileId = \"ace/snippets/javascript\";\n}).call(Mode.prototype);\nexports.Mode = Mode;\n\n}); (function() {\n ace.require([\"ace/mode/javascript\"], function(m) {\n if (typeof module == \"object\" && typeof exports == \"object\" && module) {\n module.exports = m;\n }\n });\n })();\n ","ace.define(\"ace/mode/json_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar TextHighlightRules = require(\"./text_highlight_rules\").TextHighlightRules;\nvar JsonHighlightRules = function () {\n this.$rules = {\n \"start\": [\n {\n token: \"variable\",\n regex: '[\"](?:(?:\\\\\\\\.)|(?:[^\"\\\\\\\\]))*?[\"]\\\\s*(?=:)'\n }, {\n token: \"string\",\n regex: '\"',\n next: \"string\"\n }, {\n token: \"constant.numeric\",\n regex: \"0[xX][0-9a-fA-F]+\\\\b\"\n }, {\n token: \"constant.numeric\",\n regex: \"[+-]?\\\\d+(?:(?:\\\\.\\\\d*)?(?:[eE][+-]?\\\\d+)?)?\\\\b\"\n }, {\n token: \"constant.language.boolean\",\n regex: \"(?:true|false)\\\\b\"\n }, {\n token: \"text\",\n regex: \"['](?:(?:\\\\\\\\.)|(?:[^'\\\\\\\\]))*?[']\"\n }, {\n token: \"comment\",\n regex: \"\\\\/\\\\/.*$\"\n }, {\n token: \"comment.start\",\n regex: \"\\\\/\\\\*\",\n next: \"comment\"\n }, {\n token: \"paren.lparen\",\n regex: \"[[({]\"\n }, {\n token: \"paren.rparen\",\n regex: \"[\\\\])}]\"\n }, {\n token: \"punctuation.operator\",\n regex: /[,]/\n }, {\n token: \"text\",\n regex: \"\\\\s+\"\n }\n ],\n \"string\": [\n {\n token: \"constant.language.escape\",\n regex: /\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|[\"\\\\\\/bfnrt])/\n }, {\n token: \"string\",\n regex: '\"|$',\n next: \"start\"\n }, {\n defaultToken: \"string\"\n }\n ],\n \"comment\": [\n {\n token: \"comment.end\",\n regex: \"\\\\*\\\\/\",\n next: \"start\"\n }, {\n defaultToken: \"comment\"\n }\n ]\n };\n};\noop.inherits(JsonHighlightRules, TextHighlightRules);\nexports.JsonHighlightRules = JsonHighlightRules;\n\n});\n\nace.define(\"ace/mode/matching_brace_outdent\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar Range = require(\"../range\").Range;\nvar MatchingBraceOutdent = function () { };\n(function () {\n this.checkOutdent = function (line, input) {\n if (!/^\\s+$/.test(line))\n return false;\n return /^\\s*\\}/.test(input);\n };\n this.autoOutdent = function (doc, row) {\n var line = doc.getLine(row);\n var match = line.match(/^(\\s*\\})/);\n if (!match)\n return 0;\n var column = match[1].length;\n var openBracePos = doc.findMatchingBracket({ row: row, column: column });\n if (!openBracePos || openBracePos.row == row)\n return 0;\n var indent = this.$getIndent(doc.getLine(openBracePos.row));\n doc.replace(new Range(row, 0, row, column - 1), indent);\n };\n this.$getIndent = function (line) {\n return line.match(/^\\s*/)[0];\n };\n}).call(MatchingBraceOutdent.prototype);\nexports.MatchingBraceOutdent = MatchingBraceOutdent;\n\n});\n\nace.define(\"ace/mode/folding/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/range\",\"ace/mode/folding/fold_mode\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../../lib/oop\");\nvar Range = require(\"../../range\").Range;\nvar BaseFoldMode = require(\"./fold_mode\").FoldMode;\nvar FoldMode = exports.FoldMode = function (commentRegex) {\n if (commentRegex) {\n this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.start));\n this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.end));\n }\n};\noop.inherits(FoldMode, BaseFoldMode);\n(function () {\n this.foldingStartMarker = /([\\{\\[\\(])[^\\}\\]\\)]*$|^\\s*(\\/\\*)/;\n this.foldingStopMarker = /^[^\\[\\{\\(]*([\\}\\]\\)])|^[\\s\\*]*(\\*\\/)/;\n this.singleLineBlockCommentRe = /^\\s*(\\/\\*).*\\*\\/\\s*$/;\n this.tripleStarBlockCommentRe = /^\\s*(\\/\\*\\*\\*).*\\*\\/\\s*$/;\n this.startRegionRe = /^\\s*(\\/\\*|\\/\\/)#?region\\b/;\n this._getFoldWidgetBase = this.getFoldWidget;\n this.getFoldWidget = function (session, foldStyle, row) {\n var line = session.getLine(row);\n if (this.singleLineBlockCommentRe.test(line)) {\n if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line))\n return \"\";\n }\n var fw = this._getFoldWidgetBase(session, foldStyle, row);\n if (!fw && this.startRegionRe.test(line))\n return \"start\"; // lineCommentRegionStart\n return fw;\n };\n this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) {\n var line = session.getLine(row);\n if (this.startRegionRe.test(line))\n return this.getCommentRegionBlock(session, line, row);\n var match = line.match(this.foldingStartMarker);\n if (match) {\n var i = match.index;\n if (match[1])\n return this.openingBracketBlock(session, match[1], row, i);\n var range = session.getCommentFoldRange(row, i + match[0].length, 1);\n if (range && !range.isMultiLine()) {\n if (forceMultiline) {\n range = this.getSectionRange(session, row);\n }\n else if (foldStyle != \"all\")\n range = null;\n }\n return range;\n }\n if (foldStyle === \"markbegin\")\n return;\n var match = line.match(this.foldingStopMarker);\n if (match) {\n var i = match.index + match[0].length;\n if (match[1])\n return this.closingBracketBlock(session, match[1], row, i);\n return session.getCommentFoldRange(row, i, -1);\n }\n };\n this.getSectionRange = function (session, row) {\n var line = session.getLine(row);\n var startIndent = line.search(/\\S/);\n var startRow = row;\n var startColumn = line.length;\n row = row + 1;\n var endRow = row;\n var maxRow = session.getLength();\n while (++row < maxRow) {\n line = session.getLine(row);\n var indent = line.search(/\\S/);\n if (indent === -1)\n continue;\n if (startIndent > indent)\n break;\n var subRange = this.getFoldWidgetRange(session, \"all\", row);\n if (subRange) {\n if (subRange.start.row <= startRow) {\n break;\n }\n else if (subRange.isMultiLine()) {\n row = subRange.end.row;\n }\n else if (startIndent == indent) {\n break;\n }\n }\n endRow = row;\n }\n return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);\n };\n this.getCommentRegionBlock = function (session, line, row) {\n var startColumn = line.search(/\\s*$/);\n var maxRow = session.getLength();\n var startRow = row;\n var re = /^\\s*(?:\\/\\*|\\/\\/|--)#?(end)?region\\b/;\n var depth = 1;\n while (++row < maxRow) {\n line = session.getLine(row);\n var m = re.exec(line);\n if (!m)\n continue;\n if (m[1])\n depth--;\n else\n depth++;\n if (!depth)\n break;\n }\n var endRow = row;\n if (endRow > startRow) {\n return new Range(startRow, startColumn, endRow, line.length);\n }\n };\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/json\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/json_highlight_rules\",\"ace/mode/matching_brace_outdent\",\"ace/mode/folding/cstyle\",\"ace/worker/worker_client\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar TextMode = require(\"./text\").Mode;\nvar HighlightRules = require(\"./json_highlight_rules\").JsonHighlightRules;\nvar MatchingBraceOutdent = require(\"./matching_brace_outdent\").MatchingBraceOutdent;\nvar CStyleFoldMode = require(\"./folding/cstyle\").FoldMode;\nvar WorkerClient = require(\"../worker/worker_client\").WorkerClient;\nvar Mode = function () {\n this.HighlightRules = HighlightRules;\n this.$outdent = new MatchingBraceOutdent();\n this.$behaviour = this.$defaultBehaviour;\n this.foldingRules = new CStyleFoldMode();\n};\noop.inherits(Mode, TextMode);\n(function () {\n this.lineCommentStart = \"//\";\n this.blockComment = { start: \"/*\", end: \"*/\" };\n this.getNextLineIndent = function (state, line, tab) {\n var indent = this.$getIndent(line);\n if (state == \"start\") {\n var match = line.match(/^.*[\\{\\(\\[]\\s*$/);\n if (match) {\n indent += tab;\n }\n }\n return indent;\n };\n this.checkOutdent = function (state, line, input) {\n return this.$outdent.checkOutdent(line, input);\n };\n this.autoOutdent = function (state, doc, row) {\n this.$outdent.autoOutdent(doc, row);\n };\n this.createWorker = function (session) {\n var worker = new WorkerClient([\"ace\"], \"ace/mode/json_worker\", \"JsonWorker\");\n worker.attachToDocument(session.getDocument());\n worker.on(\"annotate\", function (e) {\n session.setAnnotations(e.data);\n });\n worker.on(\"terminate\", function () {\n session.clearAnnotations();\n });\n return worker;\n };\n this.$id = \"ace/mode/json\";\n}).call(Mode.prototype);\nexports.Mode = Mode;\n\n}); (function() {\n ace.require([\"ace/mode/json\"], function(m) {\n if (typeof module == \"object\" && typeof exports == \"object\" && module) {\n module.exports = m;\n }\n });\n })();\n ","ace.define(\"ace/mode/doc_comment_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar TextHighlightRules = require(\"./text_highlight_rules\").TextHighlightRules;\nvar DocCommentHighlightRules = function () {\n this.$rules = {\n \"start\": [\n {\n token: \"comment.doc.tag\",\n regex: \"@\\\\w+(?=\\\\s|$)\"\n }, DocCommentHighlightRules.getTagRule(), {\n defaultToken: \"comment.doc\",\n caseInsensitive: true\n }\n ]\n };\n};\noop.inherits(DocCommentHighlightRules, TextHighlightRules);\nDocCommentHighlightRules.getTagRule = function (start) {\n return {\n token: \"comment.doc.tag.storage.type\",\n regex: \"\\\\b(?:TODO|FIXME|XXX|HACK)\\\\b\"\n };\n};\nDocCommentHighlightRules.getStartRule = function (start) {\n return {\n token: \"comment.doc\",\n regex: \"\\\\/\\\\*(?=\\\\*)\",\n next: start\n };\n};\nDocCommentHighlightRules.getEndRule = function (start) {\n return {\n token: \"comment.doc\",\n regex: \"\\\\*\\\\/\",\n next: start\n };\n};\nexports.DocCommentHighlightRules = DocCommentHighlightRules;\n\n});\n\nace.define(\"ace/mode/jsx_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/mode/doc_comment_highlight_rules\",\"ace/mode/text_highlight_rules\"], function(require, exports, module){var oop = require(\"../lib/oop\");\nvar lang = require(\"../lib/lang\");\nvar DocCommentHighlightRules = require(\"./doc_comment_highlight_rules\").DocCommentHighlightRules;\nvar TextHighlightRules = require(\"./text_highlight_rules\").TextHighlightRules;\nvar JsxHighlightRules = function () {\n var keywords = lang.arrayToMap((\"break|do|instanceof|typeof|case|else|new|var|catch|finally|return|void|continue|for|switch|default|while|function|this|\" +\n \"if|throw|\" +\n \"delete|in|try|\" +\n \"class|extends|super|import|from|into|implements|interface|static|mixin|override|abstract|final|\" +\n \"number|int|string|boolean|variant|\" +\n \"log|assert\").split(\"|\"));\n var buildinConstants = lang.arrayToMap((\"null|true|false|NaN|Infinity|__FILE__|__LINE__|undefined\").split(\"|\"));\n var reserved = lang.arrayToMap((\"debugger|with|\" +\n \"const|export|\" +\n \"let|private|public|yield|protected|\" +\n \"extern|native|as|operator|__fake__|__readonly__\").split(\"|\"));\n var identifierRe = \"[a-zA-Z_][a-zA-Z0-9_]*\\\\b\";\n this.$rules = {\n \"start\": [\n {\n token: \"comment\",\n regex: \"\\\\/\\\\/.*$\"\n },\n DocCommentHighlightRules.getStartRule(\"doc-start\"),\n {\n token: \"comment\",\n regex: \"\\\\/\\\\*\",\n next: \"comment\"\n }, {\n token: \"string.regexp\",\n regex: \"[/](?:(?:\\\\[(?:\\\\\\\\]|[^\\\\]])+\\\\])|(?:\\\\\\\\/|[^\\\\]/]))*[/]\\\\w*\\\\s*(?=[).,;]|$)\"\n }, {\n token: \"string\",\n regex: '[\"](?:(?:\\\\\\\\.)|(?:[^\"\\\\\\\\]))*?[\"]'\n }, {\n token: \"string\",\n regex: \"['](?:(?:\\\\\\\\.)|(?:[^'\\\\\\\\]))*?[']\"\n }, {\n token: \"constant.numeric\",\n regex: \"0[xX][0-9a-fA-F]+\\\\b\"\n }, {\n token: \"constant.numeric\",\n regex: \"[+-]?\\\\d+(?:(?:\\\\.\\\\d*)?(?:[eE][+-]?\\\\d+)?)?\\\\b\"\n }, {\n token: \"constant.language.boolean\",\n regex: \"(?:true|false)\\\\b\"\n }, {\n token: [\n \"storage.type\",\n \"text\",\n \"entity.name.function\"\n ],\n regex: \"(function)(\\\\s+)(\" + identifierRe + \")\"\n }, {\n token: function (value) {\n if (value == \"this\")\n return \"variable.language\";\n else if (value == \"function\")\n return \"storage.type\";\n else if (keywords.hasOwnProperty(value) || reserved.hasOwnProperty(value))\n return \"keyword\";\n else if (buildinConstants.hasOwnProperty(value))\n return \"constant.language\";\n else if (/^_?[A-Z][a-zA-Z0-9_]*$/.test(value))\n return \"language.support.class\";\n else\n return \"identifier\";\n },\n regex: identifierRe\n }, {\n token: \"keyword.operator\",\n regex: \"!|%|&|\\\\*|\\\\-\\\\-|\\\\-|\\\\+\\\\+|\\\\+|~|==|=|!=|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\\\|\\\\||\\\\?\\\\:|\\\\*=|%=|\\\\+=|\\\\-=|&=|\\\\^=|\\\\b(?:in|instanceof|new|delete|typeof|void)\"\n }, {\n token: \"punctuation.operator\",\n regex: \"\\\\?|\\\\:|\\\\,|\\\\;|\\\\.\"\n }, {\n token: \"paren.lparen\",\n regex: \"[[({<]\"\n }, {\n token: \"paren.rparen\",\n regex: \"[\\\\])}>]\"\n }, {\n token: \"text\",\n regex: \"\\\\s+\"\n }\n ],\n \"comment\": [\n {\n token: \"comment\",\n regex: \"\\\\*\\\\/\",\n next: \"start\"\n }, {\n defaultToken: \"comment\"\n }\n ]\n };\n this.embedRules(DocCommentHighlightRules, \"doc-\", [DocCommentHighlightRules.getEndRule(\"start\")]);\n};\noop.inherits(JsxHighlightRules, TextHighlightRules);\nexports.JsxHighlightRules = JsxHighlightRules;\n\n});\n\nace.define(\"ace/mode/matching_brace_outdent\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar Range = require(\"../range\").Range;\nvar MatchingBraceOutdent = function () { };\n(function () {\n this.checkOutdent = function (line, input) {\n if (!/^\\s+$/.test(line))\n return false;\n return /^\\s*\\}/.test(input);\n };\n this.autoOutdent = function (doc, row) {\n var line = doc.getLine(row);\n var match = line.match(/^(\\s*\\})/);\n if (!match)\n return 0;\n var column = match[1].length;\n var openBracePos = doc.findMatchingBracket({ row: row, column: column });\n if (!openBracePos || openBracePos.row == row)\n return 0;\n var indent = this.$getIndent(doc.getLine(openBracePos.row));\n doc.replace(new Range(row, 0, row, column - 1), indent);\n };\n this.$getIndent = function (line) {\n return line.match(/^\\s*/)[0];\n };\n}).call(MatchingBraceOutdent.prototype);\nexports.MatchingBraceOutdent = MatchingBraceOutdent;\n\n});\n\nace.define(\"ace/mode/folding/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/range\",\"ace/mode/folding/fold_mode\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../../lib/oop\");\nvar Range = require(\"../../range\").Range;\nvar BaseFoldMode = require(\"./fold_mode\").FoldMode;\nvar FoldMode = exports.FoldMode = function (commentRegex) {\n if (commentRegex) {\n this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.start));\n this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.end));\n }\n};\noop.inherits(FoldMode, BaseFoldMode);\n(function () {\n this.foldingStartMarker = /([\\{\\[\\(])[^\\}\\]\\)]*$|^\\s*(\\/\\*)/;\n this.foldingStopMarker = /^[^\\[\\{\\(]*([\\}\\]\\)])|^[\\s\\*]*(\\*\\/)/;\n this.singleLineBlockCommentRe = /^\\s*(\\/\\*).*\\*\\/\\s*$/;\n this.tripleStarBlockCommentRe = /^\\s*(\\/\\*\\*\\*).*\\*\\/\\s*$/;\n this.startRegionRe = /^\\s*(\\/\\*|\\/\\/)#?region\\b/;\n this._getFoldWidgetBase = this.getFoldWidget;\n this.getFoldWidget = function (session, foldStyle, row) {\n var line = session.getLine(row);\n if (this.singleLineBlockCommentRe.test(line)) {\n if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line))\n return \"\";\n }\n var fw = this._getFoldWidgetBase(session, foldStyle, row);\n if (!fw && this.startRegionRe.test(line))\n return \"start\"; // lineCommentRegionStart\n return fw;\n };\n this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) {\n var line = session.getLine(row);\n if (this.startRegionRe.test(line))\n return this.getCommentRegionBlock(session, line, row);\n var match = line.match(this.foldingStartMarker);\n if (match) {\n var i = match.index;\n if (match[1])\n return this.openingBracketBlock(session, match[1], row, i);\n var range = session.getCommentFoldRange(row, i + match[0].length, 1);\n if (range && !range.isMultiLine()) {\n if (forceMultiline) {\n range = this.getSectionRange(session, row);\n }\n else if (foldStyle != \"all\")\n range = null;\n }\n return range;\n }\n if (foldStyle === \"markbegin\")\n return;\n var match = line.match(this.foldingStopMarker);\n if (match) {\n var i = match.index + match[0].length;\n if (match[1])\n return this.closingBracketBlock(session, match[1], row, i);\n return session.getCommentFoldRange(row, i, -1);\n }\n };\n this.getSectionRange = function (session, row) {\n var line = session.getLine(row);\n var startIndent = line.search(/\\S/);\n var startRow = row;\n var startColumn = line.length;\n row = row + 1;\n var endRow = row;\n var maxRow = session.getLength();\n while (++row < maxRow) {\n line = session.getLine(row);\n var indent = line.search(/\\S/);\n if (indent === -1)\n continue;\n if (startIndent > indent)\n break;\n var subRange = this.getFoldWidgetRange(session, \"all\", row);\n if (subRange) {\n if (subRange.start.row <= startRow) {\n break;\n }\n else if (subRange.isMultiLine()) {\n row = subRange.end.row;\n }\n else if (startIndent == indent) {\n break;\n }\n }\n endRow = row;\n }\n return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);\n };\n this.getCommentRegionBlock = function (session, line, row) {\n var startColumn = line.search(/\\s*$/);\n var maxRow = session.getLength();\n var startRow = row;\n var re = /^\\s*(?:\\/\\*|\\/\\/|--)#?(end)?region\\b/;\n var depth = 1;\n while (++row < maxRow) {\n line = session.getLine(row);\n var m = re.exec(line);\n if (!m)\n continue;\n if (m[1])\n depth--;\n else\n depth++;\n if (!depth)\n break;\n }\n var endRow = row;\n if (endRow > startRow) {\n return new Range(startRow, startColumn, endRow, line.length);\n }\n };\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/jsx\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/jsx_highlight_rules\",\"ace/mode/matching_brace_outdent\",\"ace/mode/folding/cstyle\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar TextMode = require(\"./text\").Mode;\nvar JsxHighlightRules = require(\"./jsx_highlight_rules\").JsxHighlightRules;\nvar MatchingBraceOutdent = require(\"./matching_brace_outdent\").MatchingBraceOutdent;\nvar CStyleFoldMode = require(\"./folding/cstyle\").FoldMode;\nfunction Mode() {\n this.HighlightRules = JsxHighlightRules;\n this.$outdent = new MatchingBraceOutdent();\n this.$behaviour = this.$defaultBehaviour;\n this.foldingRules = new CStyleFoldMode();\n}\noop.inherits(Mode, TextMode);\n(function () {\n this.lineCommentStart = \"//\";\n this.blockComment = { start: \"/*\", end: \"*/\" };\n this.getNextLineIndent = function (state, line, tab) {\n var indent = this.$getIndent(line);\n var tokenizedLine = this.getTokenizer().getLineTokens(line, state);\n var tokens = tokenizedLine.tokens;\n if (tokens.length && tokens[tokens.length - 1].type == \"comment\") {\n return indent;\n }\n if (state == \"start\") {\n var match = line.match(/^.*[\\{\\(\\[]\\s*$/);\n if (match) {\n indent += tab;\n }\n }\n return indent;\n };\n this.checkOutdent = function (state, line, input) {\n return this.$outdent.checkOutdent(line, input);\n };\n this.autoOutdent = function (state, doc, row) {\n this.$outdent.autoOutdent(doc, row);\n };\n this.$id = \"ace/mode/jsx\";\n}).call(Mode.prototype);\nexports.Mode = Mode;\n\n}); (function() {\n ace.require([\"ace/mode/jsx\"], function(m) {\n if (typeof module == \"object\" && typeof exports == \"object\" && module) {\n module.exports = m;\n }\n });\n })();\n ","ace.define(\"ace/mode/python_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(require, exports, module){/*\n * TODO: python delimiters\n */\n\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar TextHighlightRules = require(\"./text_highlight_rules\").TextHighlightRules;\nvar PythonHighlightRules = function () {\n var keywords = (\"and|as|assert|break|class|continue|def|del|elif|else|except|exec|\" +\n \"finally|for|from|global|if|import|in|is|lambda|not|or|pass|print|\" +\n \"raise|return|try|while|with|yield|async|await|nonlocal\");\n var builtinConstants = (\"True|False|None|NotImplemented|Ellipsis|__debug__\");\n var builtinFunctions = (\"abs|divmod|input|open|staticmethod|all|enumerate|int|ord|str|any|\" +\n \"eval|isinstance|pow|sum|basestring|execfile|issubclass|print|super|\" +\n \"binfile|bin|iter|property|tuple|bool|filter|len|range|type|bytearray|\" +\n \"float|list|raw_input|unichr|callable|format|locals|reduce|unicode|\" +\n \"chr|frozenset|long|reload|vars|classmethod|getattr|map|repr|xrange|\" +\n \"cmp|globals|max|reversed|zip|compile|hasattr|memoryview|round|\" +\n \"__import__|complex|hash|min|apply|delattr|help|next|setattr|set|\" +\n \"buffer|dict|hex|object|slice|coerce|dir|id|oct|sorted|intern|\" +\n \"ascii|breakpoint|bytes\");\n var keywordMapper = this.createKeywordMapper({\n \"invalid.deprecated\": \"debugger\",\n \"support.function\": builtinFunctions,\n \"variable.language\": \"self|cls\",\n \"constant.language\": builtinConstants,\n \"keyword\": keywords\n }, \"identifier\");\n var strPre = \"[uU]?\";\n var strRawPre = \"[rR]\";\n var strFormatPre = \"[fF]\";\n var strRawFormatPre = \"(?:[rR][fF]|[fF][rR])\";\n var decimalInteger = \"(?:(?:[1-9]\\\\d*)|(?:0))\";\n var octInteger = \"(?:0[oO]?[0-7]+)\";\n var hexInteger = \"(?:0[xX][\\\\dA-Fa-f]+)\";\n var binInteger = \"(?:0[bB][01]+)\";\n var integer = \"(?:\" + decimalInteger + \"|\" + octInteger + \"|\" + hexInteger + \"|\" + binInteger + \")\";\n var exponent = \"(?:[eE][+-]?\\\\d+)\";\n var fraction = \"(?:\\\\.\\\\d+)\";\n var intPart = \"(?:\\\\d+)\";\n var pointFloat = \"(?:(?:\" + intPart + \"?\" + fraction + \")|(?:\" + intPart + \"\\\\.))\";\n var exponentFloat = \"(?:(?:\" + pointFloat + \"|\" + intPart + \")\" + exponent + \")\";\n var floatNumber = \"(?:\" + exponentFloat + \"|\" + pointFloat + \")\";\n var stringEscape = \"\\\\\\\\(x[0-9A-Fa-f]{2}|[0-7]{3}|[\\\\\\\\abfnrtv'\\\"]|U[0-9A-Fa-f]{8}|u[0-9A-Fa-f]{4})\";\n this.$rules = {\n \"start\": [{\n token: \"comment\",\n regex: \"#.*$\"\n }, {\n token: \"string\",\n regex: strPre + '\"{3}',\n next: \"qqstring3\"\n }, {\n token: \"string\",\n regex: strPre + '\"(?=.)',\n next: \"qqstring\"\n }, {\n token: \"string\",\n regex: strPre + \"'{3}\",\n next: \"qstring3\"\n }, {\n token: \"string\",\n regex: strPre + \"'(?=.)\",\n next: \"qstring\"\n }, {\n token: \"string\",\n regex: strRawPre + '\"{3}',\n next: \"rawqqstring3\"\n }, {\n token: \"string\",\n regex: strRawPre + '\"(?=.)',\n next: \"rawqqstring\"\n }, {\n token: \"string\",\n regex: strRawPre + \"'{3}\",\n next: \"rawqstring3\"\n }, {\n token: \"string\",\n regex: strRawPre + \"'(?=.)\",\n next: \"rawqstring\"\n }, {\n token: \"string\",\n regex: strFormatPre + '\"{3}',\n next: \"fqqstring3\"\n }, {\n token: \"string\",\n regex: strFormatPre + '\"(?=.)',\n next: \"fqqstring\"\n }, {\n token: \"string\",\n regex: strFormatPre + \"'{3}\",\n next: \"fqstring3\"\n }, {\n token: \"string\",\n regex: strFormatPre + \"'(?=.)\",\n next: \"fqstring\"\n }, {\n token: \"string\",\n regex: strRawFormatPre + '\"{3}',\n next: \"rfqqstring3\"\n }, {\n token: \"string\",\n regex: strRawFormatPre + '\"(?=.)',\n next: \"rfqqstring\"\n }, {\n token: \"string\",\n regex: strRawFormatPre + \"'{3}\",\n next: \"rfqstring3\"\n }, {\n token: \"string\",\n regex: strRawFormatPre + \"'(?=.)\",\n next: \"rfqstring\"\n }, {\n token: \"keyword.operator\",\n regex: \"\\\\+|\\\\-|\\\\*|\\\\*\\\\*|\\\\/|\\\\/\\\\/|%|@|<<|>>|&|\\\\||\\\\^|~|<|>|<=|=>|==|!=|<>|=\"\n }, {\n token: \"punctuation\",\n regex: \",|:|;|\\\\->|\\\\+=|\\\\-=|\\\\*=|\\\\/=|\\\\/\\\\/=|%=|@=|&=|\\\\|=|^=|>>=|<<=|\\\\*\\\\*=\"\n }, {\n token: \"paren.lparen\",\n regex: \"[\\\\[\\\\(\\\\{]\"\n }, {\n token: \"paren.rparen\",\n regex: \"[\\\\]\\\\)\\\\}]\"\n }, {\n token: [\"keyword\", \"text\", \"entity.name.function\"],\n regex: \"(def|class)(\\\\s+)([\\\\u00BF-\\\\u1FFF\\\\u2C00-\\\\uD7FF\\\\w]+)\"\n }, {\n token: \"text\",\n regex: \"\\\\s+\"\n }, {\n include: \"constants\"\n }],\n \"qqstring3\": [{\n token: \"constant.language.escape\",\n regex: stringEscape\n }, {\n token: \"string\",\n regex: '\"{3}',\n next: \"start\"\n }, {\n defaultToken: \"string\"\n }],\n \"qstring3\": [{\n token: \"constant.language.escape\",\n regex: stringEscape\n }, {\n token: \"string\",\n regex: \"'{3}\",\n next: \"start\"\n }, {\n defaultToken: \"string\"\n }],\n \"qqstring\": [{\n token: \"constant.language.escape\",\n regex: stringEscape\n }, {\n token: \"string\",\n regex: \"\\\\\\\\$\",\n next: \"qqstring\"\n }, {\n token: \"string\",\n regex: '\"|$',\n next: \"start\"\n }, {\n defaultToken: \"string\"\n }],\n \"qstring\": [{\n token: \"constant.language.escape\",\n regex: stringEscape\n }, {\n token: \"string\",\n regex: \"\\\\\\\\$\",\n next: \"qstring\"\n }, {\n token: \"string\",\n regex: \"'|$\",\n next: \"start\"\n }, {\n defaultToken: \"string\"\n }],\n \"rawqqstring3\": [{\n token: \"string\",\n regex: '\"{3}',\n next: \"start\"\n }, {\n defaultToken: \"string\"\n }],\n \"rawqstring3\": [{\n token: \"string\",\n regex: \"'{3}\",\n next: \"start\"\n }, {\n defaultToken: \"string\"\n }],\n \"rawqqstring\": [{\n token: \"string\",\n regex: \"\\\\\\\\$\",\n next: \"rawqqstring\"\n }, {\n token: \"string\",\n regex: '\"|$',\n next: \"start\"\n }, {\n defaultToken: \"string\"\n }],\n \"rawqstring\": [{\n token: \"string\",\n regex: \"\\\\\\\\$\",\n next: \"rawqstring\"\n }, {\n token: \"string\",\n regex: \"'|$\",\n next: \"start\"\n }, {\n defaultToken: \"string\"\n }],\n \"fqqstring3\": [{\n token: \"constant.language.escape\",\n regex: stringEscape\n }, {\n token: \"string\",\n regex: '\"{3}',\n next: \"start\"\n }, {\n token: \"paren.lparen\",\n regex: \"{\",\n push: \"fqstringParRules\"\n }, {\n defaultToken: \"string\"\n }],\n \"fqstring3\": [{\n token: \"constant.language.escape\",\n regex: stringEscape\n }, {\n token: \"string\",\n regex: \"'{3}\",\n next: \"start\"\n }, {\n token: \"paren.lparen\",\n regex: \"{\",\n push: \"fqstringParRules\"\n }, {\n defaultToken: \"string\"\n }],\n \"fqqstring\": [{\n token: \"constant.language.escape\",\n regex: stringEscape\n }, {\n token: \"string\",\n regex: \"\\\\\\\\$\",\n next: \"fqqstring\"\n }, {\n token: \"string\",\n regex: '\"|$',\n next: \"start\"\n }, {\n token: \"paren.lparen\",\n regex: \"{\",\n push: \"fqstringParRules\"\n }, {\n defaultToken: \"string\"\n }],\n \"fqstring\": [{\n token: \"constant.language.escape\",\n regex: stringEscape\n }, {\n token: \"string\",\n regex: \"'|$\",\n next: \"start\"\n }, {\n token: \"paren.lparen\",\n regex: \"{\",\n push: \"fqstringParRules\"\n }, {\n defaultToken: \"string\"\n }],\n \"rfqqstring3\": [{\n token: \"string\",\n regex: '\"{3}',\n next: \"start\"\n }, {\n token: \"paren.lparen\",\n regex: \"{\",\n push: \"fqstringParRules\"\n }, {\n defaultToken: \"string\"\n }],\n \"rfqstring3\": [{\n token: \"string\",\n regex: \"'{3}\",\n next: \"start\"\n }, {\n token: \"paren.lparen\",\n regex: \"{\",\n push: \"fqstringParRules\"\n }, {\n defaultToken: \"string\"\n }],\n \"rfqqstring\": [{\n token: \"string\",\n regex: \"\\\\\\\\$\",\n next: \"rfqqstring\"\n }, {\n token: \"string\",\n regex: '\"|$',\n next: \"start\"\n }, {\n token: \"paren.lparen\",\n regex: \"{\",\n push: \"fqstringParRules\"\n }, {\n defaultToken: \"string\"\n }],\n \"rfqstring\": [{\n token: \"string\",\n regex: \"'|$\",\n next: \"start\"\n }, {\n token: \"paren.lparen\",\n regex: \"{\",\n push: \"fqstringParRules\"\n }, {\n defaultToken: \"string\"\n }],\n \"fqstringParRules\": [{\n token: \"paren.lparen\",\n regex: \"[\\\\[\\\\(]\"\n }, {\n token: \"paren.rparen\",\n regex: \"[\\\\]\\\\)]\"\n }, {\n token: \"string\",\n regex: \"\\\\s+\"\n }, {\n token: \"string\",\n regex: \"'[^']*'\"\n }, {\n token: \"string\",\n regex: '\"[^\"]*\"'\n }, {\n token: \"function.support\",\n regex: \"(!s|!r|!a)\"\n }, {\n include: \"constants\"\n }, {\n token: 'paren.rparen',\n regex: \"}\",\n next: 'pop'\n }, {\n token: 'paren.lparen',\n regex: \"{\",\n push: \"fqstringParRules\"\n }],\n \"constants\": [{\n token: \"constant.numeric\",\n regex: \"(?:\" + floatNumber + \"|\\\\d+)[jJ]\\\\b\"\n }, {\n token: \"constant.numeric\",\n regex: floatNumber\n }, {\n token: \"constant.numeric\",\n regex: integer + \"[lL]\\\\b\"\n }, {\n token: \"constant.numeric\",\n regex: integer + \"\\\\b\"\n }, {\n token: [\"punctuation\", \"function.support\"],\n regex: \"(\\\\.)([a-zA-Z_]+)\\\\b\"\n }, {\n token: keywordMapper,\n regex: \"[a-zA-Z_$][a-zA-Z0-9_$]*\\\\b\"\n }]\n };\n this.normalizeRules();\n};\noop.inherits(PythonHighlightRules, TextHighlightRules);\nexports.PythonHighlightRules = PythonHighlightRules;\n\n});\n\nace.define(\"ace/mode/folding/pythonic\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/folding/fold_mode\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../../lib/oop\");\nvar BaseFoldMode = require(\"./fold_mode\").FoldMode;\nvar FoldMode = exports.FoldMode = function (markers) {\n this.foldingStartMarker = new RegExp(\"([\\\\[{])(?:\\\\s*)$|(\" + markers + \")(?:\\\\s*)(?:#.*)?$\");\n};\noop.inherits(FoldMode, BaseFoldMode);\n(function () {\n this.getFoldWidgetRange = function (session, foldStyle, row) {\n var line = session.getLine(row);\n var match = line.match(this.foldingStartMarker);\n if (match) {\n if (match[1])\n return this.openingBracketBlock(session, match[1], row, match.index);\n if (match[2])\n return this.indentationBlock(session, row, match.index + match[2].length);\n return this.indentationBlock(session, row);\n }\n };\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/python\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/python_highlight_rules\",\"ace/mode/folding/pythonic\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar TextMode = require(\"./text\").Mode;\nvar PythonHighlightRules = require(\"./python_highlight_rules\").PythonHighlightRules;\nvar PythonFoldMode = require(\"./folding/pythonic\").FoldMode;\nvar Range = require(\"../range\").Range;\nvar Mode = function () {\n this.HighlightRules = PythonHighlightRules;\n this.foldingRules = new PythonFoldMode(\"\\\\:\");\n this.$behaviour = this.$defaultBehaviour;\n};\noop.inherits(Mode, TextMode);\n(function () {\n this.lineCommentStart = \"#\";\n this.$pairQuotesAfter = {\n \"'\": /[ruf]/i,\n '\"': /[ruf]/i\n };\n this.getNextLineIndent = function (state, line, tab) {\n var indent = this.$getIndent(line);\n var tokenizedLine = this.getTokenizer().getLineTokens(line, state);\n var tokens = tokenizedLine.tokens;\n if (tokens.length && tokens[tokens.length - 1].type == \"comment\") {\n return indent;\n }\n if (state == \"start\") {\n var match = line.match(/^.*[\\{\\(\\[:]\\s*$/);\n if (match) {\n indent += tab;\n }\n }\n return indent;\n };\n var outdents = {\n \"pass\": 1,\n \"return\": 1,\n \"raise\": 1,\n \"break\": 1,\n \"continue\": 1\n };\n this.checkOutdent = function (state, line, input) {\n if (input !== \"\\r\\n\" && input !== \"\\r\" && input !== \"\\n\")\n return false;\n var tokens = this.getTokenizer().getLineTokens(line.trim(), state).tokens;\n if (!tokens)\n return false;\n do {\n var last = tokens.pop();\n } while (last && (last.type == \"comment\" || (last.type == \"text\" && last.value.match(/^\\s+$/))));\n if (!last)\n return false;\n return (last.type == \"keyword\" && outdents[last.value]);\n };\n this.autoOutdent = function (state, doc, row) {\n row += 1;\n var indent = this.$getIndent(doc.getLine(row));\n var tab = doc.getTabString();\n if (indent.slice(-tab.length) == tab)\n doc.remove(new Range(row, indent.length - tab.length, row, indent.length));\n };\n this.$id = \"ace/mode/python\";\n this.snippetFileId = \"ace/snippets/python\";\n}).call(Mode.prototype);\nexports.Mode = Mode;\n\n}); (function() {\n ace.require([\"ace/mode/python\"], function(m) {\n if (typeof module == \"object\" && typeof exports == \"object\" && module) {\n module.exports = m;\n }\n });\n })();\n ","ace.define(\"ace/mode/xml_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar TextHighlightRules = require(\"./text_highlight_rules\").TextHighlightRules;\nvar XmlHighlightRules = function (normalize) {\n var tagRegex = \"[_:a-zA-Z\\xc0-\\uffff][-_:.a-zA-Z0-9\\xc0-\\uffff]*\";\n this.$rules = {\n start: [\n { token: \"string.cdata.xml\", regex: \"<\\\\!\\\\[CDATA\\\\[\", next: \"cdata\" },\n {\n token: [\"punctuation.instruction.xml\", \"keyword.instruction.xml\"],\n regex: \"(<\\\\?)(\" + tagRegex + \")\", next: \"processing_instruction\"\n },\n { token: \"comment.start.xml\", regex: \"<\\\\!--\", next: \"comment\" },\n {\n token: [\"xml-pe.doctype.xml\", \"xml-pe.doctype.xml\"],\n regex: \"(<\\\\!)(DOCTYPE)(?=[\\\\s])\", next: \"doctype\", caseInsensitive: true\n },\n { include: \"tag\" },\n { token: \"text.end-tag-open.xml\", regex: \"\",\n next: \"start\"\n }],\n doctype: [\n { include: \"whitespace\" },\n { include: \"string\" },\n { token: \"xml-pe.doctype.xml\", regex: \">\", next: \"start\" },\n { token: \"xml-pe.xml\", regex: \"[-_a-zA-Z0-9:]+\" },\n { token: \"punctuation.int-subset\", regex: \"\\\\[\", push: \"int_subset\" }\n ],\n int_subset: [{\n token: \"text.xml\",\n regex: \"\\\\s+\"\n }, {\n token: \"punctuation.int-subset.xml\",\n regex: \"]\",\n next: \"pop\"\n }, {\n token: [\"punctuation.markup-decl.xml\", \"keyword.markup-decl.xml\"],\n regex: \"(<\\\\!)(\" + tagRegex + \")\",\n push: [{\n token: \"text\",\n regex: \"\\\\s+\"\n },\n {\n token: \"punctuation.markup-decl.xml\",\n regex: \">\",\n next: \"pop\"\n },\n { include: \"string\" }]\n }],\n cdata: [\n { token: \"string.cdata.xml\", regex: \"\\\\]\\\\]>\", next: \"start\" },\n { token: \"text.xml\", regex: \"\\\\s+\" },\n { token: \"text.xml\", regex: \"(?:[^\\\\]]|\\\\](?!\\\\]>))+\" }\n ],\n comment: [\n { token: \"comment.end.xml\", regex: \"-->\", next: \"start\" },\n { defaultToken: \"comment.xml\" }\n ],\n reference: [{\n token: \"constant.language.escape.reference.xml\",\n regex: \"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\\\.-]+;)\"\n }],\n attr_reference: [{\n token: \"constant.language.escape.reference.attribute-value.xml\",\n regex: \"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\\\.-]+;)\"\n }],\n tag: [{\n token: [\"meta.tag.punctuation.tag-open.xml\", \"meta.tag.punctuation.end-tag-open.xml\", \"meta.tag.tag-name.xml\"],\n regex: \"(?:(<)|(\", next: \"start\" }\n ]\n }],\n tag_whitespace: [\n { token: \"text.tag-whitespace.xml\", regex: \"\\\\s+\" }\n ],\n whitespace: [\n { token: \"text.whitespace.xml\", regex: \"\\\\s+\" }\n ],\n string: [{\n token: \"string.xml\",\n regex: \"'\",\n push: [\n { token: \"string.xml\", regex: \"'\", next: \"pop\" },\n { defaultToken: \"string.xml\" }\n ]\n }, {\n token: \"string.xml\",\n regex: '\"',\n push: [\n { token: \"string.xml\", regex: '\"', next: \"pop\" },\n { defaultToken: \"string.xml\" }\n ]\n }],\n attributes: [{\n token: \"entity.other.attribute-name.xml\",\n regex: tagRegex\n }, {\n token: \"keyword.operator.attribute-equals.xml\",\n regex: \"=\"\n }, {\n include: \"tag_whitespace\"\n }, {\n include: \"attribute_value\"\n }],\n attribute_value: [{\n token: \"string.attribute-value.xml\",\n regex: \"'\",\n push: [\n { token: \"string.attribute-value.xml\", regex: \"'\", next: \"pop\" },\n { include: \"attr_reference\" },\n { defaultToken: \"string.attribute-value.xml\" }\n ]\n }, {\n token: \"string.attribute-value.xml\",\n regex: '\"',\n push: [\n { token: \"string.attribute-value.xml\", regex: '\"', next: \"pop\" },\n { include: \"attr_reference\" },\n { defaultToken: \"string.attribute-value.xml\" }\n ]\n }]\n };\n if (this.constructor === XmlHighlightRules)\n this.normalizeRules();\n};\n(function () {\n this.embedTagRules = function (HighlightRules, prefix, tag) {\n this.$rules.tag.unshift({\n token: [\"meta.tag.punctuation.tag-open.xml\", \"meta.tag.\" + tag + \".tag-name.xml\"],\n regex: \"(<)(\" + tag + \"(?=\\\\s|>|$))\",\n next: [\n { include: \"attributes\" },\n { token: \"meta.tag.punctuation.tag-close.xml\", regex: \"/?>\", next: prefix + \"start\" }\n ]\n });\n this.$rules[tag + \"-end\"] = [\n { include: \"attributes\" },\n { token: \"meta.tag.punctuation.tag-close.xml\", regex: \"/?>\", next: \"start\",\n onMatch: function (value, currentState, stack) {\n stack.splice(0);\n return this.token;\n } }\n ];\n this.embedRules(HighlightRules, prefix, [{\n token: [\"meta.tag.punctuation.end-tag-open.xml\", \"meta.tag.\" + tag + \".tag-name.xml\"],\n regex: \"(|$))\",\n next: tag + \"-end\"\n }, {\n token: \"string.cdata.xml\",\n regex: \"<\\\\!\\\\[CDATA\\\\[\"\n }, {\n token: \"string.cdata.xml\",\n regex: \"\\\\]\\\\]>\"\n }]);\n };\n}).call(TextHighlightRules.prototype);\noop.inherits(XmlHighlightRules, TextHighlightRules);\nexports.XmlHighlightRules = XmlHighlightRules;\n\n});\n\nace.define(\"ace/mode/behaviour/xml\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/behaviour\",\"ace/token_iterator\",\"ace/lib/lang\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../../lib/oop\");\nvar Behaviour = require(\"../behaviour\").Behaviour;\nvar TokenIterator = require(\"../../token_iterator\").TokenIterator;\nvar lang = require(\"../../lib/lang\");\nfunction is(token, type) {\n return token && token.type.lastIndexOf(type + \".xml\") > -1;\n}\nvar XmlBehaviour = function () {\n this.add(\"string_dquotes\", \"insertion\", function (state, action, editor, session, text) {\n if (text == '\"' || text == \"'\") {\n var quote = text;\n var selected = session.doc.getTextRange(editor.getSelectionRange());\n if (selected !== \"\" && selected !== \"'\" && selected != '\"' && editor.getWrapBehavioursEnabled()) {\n return {\n text: quote + selected + quote,\n selection: false\n };\n }\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n var token = iterator.getCurrentToken();\n if (rightChar == quote && (is(token, \"attribute-value\") || is(token, \"string\"))) {\n return {\n text: \"\",\n selection: [1, 1]\n };\n }\n if (!token)\n token = iterator.stepBackward();\n if (!token)\n return;\n while (is(token, \"tag-whitespace\") || is(token, \"whitespace\")) {\n token = iterator.stepBackward();\n }\n var rightSpace = !rightChar || rightChar.match(/\\s/);\n if (is(token, \"attribute-equals\") && (rightSpace || rightChar == '>') || (is(token, \"decl-attribute-equals\") && (rightSpace || rightChar == '?'))) {\n return {\n text: quote + quote,\n selection: [1, 1]\n };\n }\n }\n });\n this.add(\"string_dquotes\", \"deletion\", function (state, action, editor, session, range) {\n var selected = session.doc.getTextRange(range);\n if (!range.isMultiLine() && (selected == '\"' || selected == \"'\")) {\n var line = session.doc.getLine(range.start.row);\n var rightChar = line.substring(range.start.column + 1, range.start.column + 2);\n if (rightChar == selected) {\n range.end.column++;\n return range;\n }\n }\n });\n this.add(\"autoclosing\", \"insertion\", function (state, action, editor, session, text) {\n if (text == '>') {\n var position = editor.getSelectionRange().start;\n var iterator = new TokenIterator(session, position.row, position.column);\n var token = iterator.getCurrentToken() || iterator.stepBackward();\n if (!token || !(is(token, \"tag-name\") || is(token, \"tag-whitespace\") || is(token, \"attribute-name\") || is(token, \"attribute-equals\") || is(token, \"attribute-value\")))\n return;\n if (is(token, \"reference.attribute-value\"))\n return;\n if (is(token, \"attribute-value\")) {\n var tokenEndColumn = iterator.getCurrentTokenColumn() + token.value.length;\n if (position.column < tokenEndColumn)\n return;\n if (position.column == tokenEndColumn) {\n var nextToken = iterator.stepForward();\n if (nextToken && is(nextToken, \"attribute-value\"))\n return;\n iterator.stepBackward();\n }\n }\n if (/^\\s*>/.test(session.getLine(position.row).slice(position.column)))\n return;\n while (!is(token, \"tag-name\")) {\n token = iterator.stepBackward();\n if (token.value == \"<\") {\n token = iterator.stepForward();\n break;\n }\n }\n var tokenRow = iterator.getCurrentTokenRow();\n var tokenColumn = iterator.getCurrentTokenColumn();\n if (is(iterator.stepBackward(), \"end-tag-open\"))\n return;\n var element = token.value;\n if (tokenRow == position.row)\n element = element.substring(0, position.column - tokenColumn);\n if (this.voidElements.hasOwnProperty(element.toLowerCase()))\n return;\n return {\n text: \">\" + \"\",\n selection: [1, 1]\n };\n }\n });\n this.add(\"autoindent\", \"insertion\", function (state, action, editor, session, text) {\n if (text == \"\\n\") {\n var cursor = editor.getCursorPosition();\n var line = session.getLine(cursor.row);\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n var token = iterator.getCurrentToken();\n if (token && token.type.indexOf(\"tag-close\") !== -1) {\n if (token.value == \"/>\")\n return;\n while (token && token.type.indexOf(\"tag-name\") === -1) {\n token = iterator.stepBackward();\n }\n if (!token) {\n return;\n }\n var tag = token.value;\n var row = iterator.getCurrentTokenRow();\n token = iterator.stepBackward();\n if (!token || token.type.indexOf(\"end-tag\") !== -1) {\n return;\n }\n if (this.voidElements && !this.voidElements[tag]) {\n var nextToken = session.getTokenAt(cursor.row, cursor.column + 1);\n var line = session.getLine(row);\n var nextIndent = this.$getIndent(line);\n var indent = nextIndent + session.getTabString();\n if (nextToken && nextToken.value === \" -1;\n}\n(function () {\n this.getFoldWidget = function (session, foldStyle, row) {\n var tag = this._getFirstTagInLine(session, row);\n if (!tag)\n return this.getCommentFoldWidget(session, row);\n if (tag.closing || (!tag.tagName && tag.selfClosing))\n return foldStyle === \"markbeginend\" ? \"end\" : \"\";\n if (!tag.tagName || tag.selfClosing || this.voidElements.hasOwnProperty(tag.tagName.toLowerCase()))\n return \"\";\n if (this._findEndTagInLine(session, row, tag.tagName, tag.end.column))\n return \"\";\n return \"start\";\n };\n this.getCommentFoldWidget = function (session, row) {\n if (/comment/.test(session.getState(row)) && /';\n break;\n }\n }\n return tag;\n }\n else if (is(token, \"tag-close\")) {\n tag.selfClosing = token.value == '/>';\n return tag;\n }\n tag.start.column += token.value.length;\n }\n return null;\n };\n this._findEndTagInLine = function (session, row, tagName, startColumn) {\n var tokens = session.getTokens(row);\n var column = 0;\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n column += token.value.length;\n if (column < startColumn)\n continue;\n if (is(token, \"end-tag-open\")) {\n token = tokens[i + 1];\n if (token && token.value == tagName)\n return true;\n }\n }\n return false;\n };\n this.getFoldWidgetRange = function (session, foldStyle, row) {\n var tags = session.getMatchingTags({ row: row, column: 0 });\n if (tags) {\n return new Range(tags.openTag.end.row, tags.openTag.end.column, tags.closeTag.start.row, tags.closeTag.start.column);\n }\n else {\n return this.getCommentFoldWidget(session, row)\n && session.getCommentFoldRange(row, session.getLine(row).length);\n }\n };\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/xml\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/mode/text\",\"ace/mode/xml_highlight_rules\",\"ace/mode/behaviour/xml\",\"ace/mode/folding/xml\",\"ace/worker/worker_client\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar lang = require(\"../lib/lang\");\nvar TextMode = require(\"./text\").Mode;\nvar XmlHighlightRules = require(\"./xml_highlight_rules\").XmlHighlightRules;\nvar XmlBehaviour = require(\"./behaviour/xml\").XmlBehaviour;\nvar XmlFoldMode = require(\"./folding/xml\").FoldMode;\nvar WorkerClient = require(\"../worker/worker_client\").WorkerClient;\nvar Mode = function () {\n this.HighlightRules = XmlHighlightRules;\n this.$behaviour = new XmlBehaviour();\n this.foldingRules = new XmlFoldMode();\n};\noop.inherits(Mode, TextMode);\n(function () {\n this.voidElements = lang.arrayToMap([]);\n this.blockComment = { start: \"\" };\n this.createWorker = function (session) {\n var worker = new WorkerClient([\"ace\"], \"ace/mode/xml_worker\", \"Worker\");\n worker.attachToDocument(session.getDocument());\n worker.on(\"error\", function (e) {\n session.setAnnotations(e.data);\n });\n worker.on(\"terminate\", function () {\n session.clearAnnotations();\n });\n return worker;\n };\n this.$id = \"ace/mode/xml\";\n}).call(Mode.prototype);\nexports.Mode = Mode;\n\n}); (function() {\n ace.require([\"ace/mode/xml\"], function(m) {\n if (typeof module == \"object\" && typeof exports == \"object\" && module) {\n module.exports = m;\n }\n });\n })();\n ","ace.define(\"ace/theme/github-css\",[\"require\",\"exports\",\"module\"], function(require, exports, module){module.exports = \"/* CSS style content from github's default pygments highlighter template.\\n Cursor and selection styles from textmate.css. */\\n.ace-github .ace_gutter {\\n background: #e8e8e8;\\n color: #AAA;\\n}\\n\\n.ace-github {\\n background: #fff;\\n color: #000;\\n}\\n\\n.ace-github .ace_keyword {\\n font-weight: bold;\\n}\\n\\n.ace-github .ace_string {\\n color: #D14;\\n}\\n\\n.ace-github .ace_variable.ace_class {\\n color: teal;\\n}\\n\\n.ace-github .ace_constant.ace_numeric {\\n color: #099;\\n}\\n\\n.ace-github .ace_constant.ace_buildin {\\n color: #0086B3;\\n}\\n\\n.ace-github .ace_support.ace_function {\\n color: #0086B3;\\n}\\n\\n.ace-github .ace_comment {\\n color: #998;\\n font-style: italic;\\n}\\n\\n.ace-github .ace_variable.ace_language {\\n color: #0086B3;\\n}\\n\\n.ace-github .ace_paren {\\n font-weight: bold;\\n}\\n\\n.ace-github .ace_boolean {\\n font-weight: bold;\\n}\\n\\n.ace-github .ace_string.ace_regexp {\\n color: #009926;\\n font-weight: normal;\\n}\\n\\n.ace-github .ace_variable.ace_instance {\\n color: teal;\\n}\\n\\n.ace-github .ace_constant.ace_language {\\n font-weight: bold;\\n}\\n\\n.ace-github .ace_cursor {\\n color: black;\\n}\\n\\n.ace-github.ace_focus .ace_marker-layer .ace_active-line {\\n background: rgb(255, 255, 204);\\n}\\n.ace-github .ace_marker-layer .ace_active-line {\\n background: rgb(245, 245, 245);\\n}\\n\\n.ace-github .ace_marker-layer .ace_selection {\\n background: rgb(181, 213, 255);\\n}\\n\\n.ace-github.ace_multiselect .ace_selection.ace_start {\\n box-shadow: 0 0 3px 0px white;\\n}\\n/* bold keywords cause cursor issues for some fonts */\\n/* this disables bold style for editor and keeps for static highlighter */\\n.ace-github.ace_nobold .ace_line > span {\\n font-weight: normal !important;\\n}\\n\\n.ace-github .ace_marker-layer .ace_step {\\n background: rgb(252, 255, 0);\\n}\\n\\n.ace-github .ace_marker-layer .ace_stack {\\n background: rgb(164, 229, 101);\\n}\\n\\n.ace-github .ace_marker-layer .ace_bracket {\\n margin: -1px 0 0 -1px;\\n border: 1px solid rgb(192, 192, 192);\\n}\\n\\n.ace-github .ace_gutter-active-line {\\n background-color : rgba(0, 0, 0, 0.07);\\n}\\n\\n.ace-github .ace_marker-layer .ace_selected-word {\\n background: rgb(250, 250, 255);\\n border: 1px solid rgb(200, 200, 250);\\n}\\n\\n.ace-github .ace_invisible {\\n color: #BFBFBF\\n}\\n\\n.ace-github .ace_print-margin {\\n width: 1px;\\n background: #e8e8e8;\\n}\\n\\n.ace-github .ace_indent-guide {\\n background: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==\\\") right repeat-y;\\n}\\n\\n.ace-github .ace_indent-guide-active {\\n background: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAAZSURBVHjaYvj///9/hivKyv8BAAAA//8DACLqBhbvk+/eAAAAAElFTkSuQmCC\\\") right repeat-y;\\n}\\n\";\n\n});\n\nace.define(\"ace/theme/github\",[\"require\",\"exports\",\"module\",\"ace/theme/github-css\",\"ace/lib/dom\"], function(require, exports, module){exports.isDark = false;\nexports.cssClass = \"ace-github\";\nexports.cssText = require(\"./github-css\");\nvar dom = require(\"../lib/dom\");\ndom.importCssString(exports.cssText, exports.cssClass, false);\n\n}); (function() {\n ace.require([\"ace/theme/github\"], function(m) {\n if (typeof module == \"object\" && typeof exports == \"object\" && module) {\n module.exports = m;\n }\n });\n })();\n ","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.flatpickr-calendar{background:transparent;opacity:0;display:none;text-align:center;visibility:hidden;padding:0;-webkit-animation:none;animation:none;direction:ltr;border:0;font-size:14px;line-height:24px;border-radius:5px;position:absolute;width:307.875px;-webkit-box-sizing:border-box;box-sizing:border-box;-ms-touch-action:manipulation;touch-action:manipulation;background:#fff;-webkit-box-shadow:1px 0 0 #e6e6e6,-1px 0 0 #e6e6e6,0 1px 0 #e6e6e6,0 -1px 0 #e6e6e6,0 3px 13px rgba(0,0,0,0.08);box-shadow:1px 0 0 #e6e6e6,-1px 0 0 #e6e6e6,0 1px 0 #e6e6e6,0 -1px 0 #e6e6e6,0 3px 13px rgba(0,0,0,0.08)}.flatpickr-calendar.open,.flatpickr-calendar.inline{opacity:1;max-height:640px;visibility:visible}.flatpickr-calendar.open{display:inline-block;z-index:99999}.flatpickr-calendar.animate.open{-webkit-animation:fpFadeInDown 300ms cubic-bezier(.23,1,.32,1);animation:fpFadeInDown 300ms cubic-bezier(.23,1,.32,1)}.flatpickr-calendar.inline{display:block;position:relative;top:2px}.flatpickr-calendar.static{position:absolute;top:calc(100% + 2px)}.flatpickr-calendar.static.open{z-index:999;display:block}.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+1) .flatpickr-day.inRange:nth-child(7n+7){-webkit-box-shadow:none !important;box-shadow:none !important}.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+2) .flatpickr-day.inRange:nth-child(7n+1){-webkit-box-shadow:-2px 0 0 #e6e6e6,5px 0 0 #e6e6e6;box-shadow:-2px 0 0 #e6e6e6,5px 0 0 #e6e6e6}.flatpickr-calendar .hasWeeks .dayContainer,.flatpickr-calendar .hasTime .dayContainer{border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.flatpickr-calendar .hasWeeks .dayContainer{border-left:0}.flatpickr-calendar.hasTime .flatpickr-time{height:40px;border-top:1px solid #e6e6e6}.flatpickr-calendar.noCalendar.hasTime .flatpickr-time{height:auto}.flatpickr-calendar:before,.flatpickr-calendar:after{position:absolute;display:block;pointer-events:none;border:solid transparent;content:'';height:0;width:0;left:22px}.flatpickr-calendar.rightMost:before,.flatpickr-calendar.arrowRight:before,.flatpickr-calendar.rightMost:after,.flatpickr-calendar.arrowRight:after{left:auto;right:22px}.flatpickr-calendar.arrowCenter:before,.flatpickr-calendar.arrowCenter:after{left:50%;right:50%}.flatpickr-calendar:before{border-width:5px;margin:0 -5px}.flatpickr-calendar:after{border-width:4px;margin:0 -4px}.flatpickr-calendar.arrowTop:before,.flatpickr-calendar.arrowTop:after{bottom:100%}.flatpickr-calendar.arrowTop:before{border-bottom-color:#e6e6e6}.flatpickr-calendar.arrowTop:after{border-bottom-color:#fff}.flatpickr-calendar.arrowBottom:before,.flatpickr-calendar.arrowBottom:after{top:100%}.flatpickr-calendar.arrowBottom:before{border-top-color:#e6e6e6}.flatpickr-calendar.arrowBottom:after{border-top-color:#fff}.flatpickr-calendar:focus{outline:0}.flatpickr-wrapper{position:relative;display:inline-block}.flatpickr-months{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.flatpickr-months .flatpickr-month{background:transparent;color:rgba(0,0,0,0.9);fill:rgba(0,0,0,0.9);height:34px;line-height:1;text-align:center;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:hidden;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}.flatpickr-months .flatpickr-prev-month,.flatpickr-months .flatpickr-next-month{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;text-decoration:none;cursor:pointer;position:absolute;top:0;height:34px;padding:10px;z-index:3;color:rgba(0,0,0,0.9);fill:rgba(0,0,0,0.9)}.flatpickr-months .flatpickr-prev-month.flatpickr-disabled,.flatpickr-months .flatpickr-next-month.flatpickr-disabled{display:none}.flatpickr-months .flatpickr-prev-month i,.flatpickr-months .flatpickr-next-month i{position:relative}.flatpickr-months .flatpickr-prev-month.flatpickr-prev-month,.flatpickr-months .flatpickr-next-month.flatpickr-prev-month{/*\n /*rtl:begin:ignore*/left:0/*\n /*rtl:end:ignore*/}/*\n /*rtl:begin:ignore*/\n/*\n /*rtl:end:ignore*/\n.flatpickr-months .flatpickr-prev-month.flatpickr-next-month,.flatpickr-months .flatpickr-next-month.flatpickr-next-month{/*\n /*rtl:begin:ignore*/right:0/*\n /*rtl:end:ignore*/}/*\n /*rtl:begin:ignore*/\n/*\n /*rtl:end:ignore*/\n.flatpickr-months .flatpickr-prev-month:hover,.flatpickr-months .flatpickr-next-month:hover{color:#959ea9}.flatpickr-months .flatpickr-prev-month:hover svg,.flatpickr-months .flatpickr-next-month:hover svg{fill:#f64747}.flatpickr-months .flatpickr-prev-month svg,.flatpickr-months .flatpickr-next-month svg{width:14px;height:14px}.flatpickr-months .flatpickr-prev-month svg path,.flatpickr-months .flatpickr-next-month svg path{-webkit-transition:fill .1s;transition:fill .1s;fill:inherit}.numInputWrapper{position:relative;height:auto}.numInputWrapper input,.numInputWrapper span{display:inline-block}.numInputWrapper input{width:100%}.numInputWrapper input::-ms-clear{display:none}.numInputWrapper input::-webkit-outer-spin-button,.numInputWrapper input::-webkit-inner-spin-button{margin:0;-webkit-appearance:none}.numInputWrapper span{position:absolute;right:0;width:14px;padding:0 4px 0 2px;height:50%;line-height:50%;opacity:0;cursor:pointer;border:1px solid rgba(57,57,57,0.15);-webkit-box-sizing:border-box;box-sizing:border-box}.numInputWrapper span:hover{background:rgba(0,0,0,0.1)}.numInputWrapper span:active{background:rgba(0,0,0,0.2)}.numInputWrapper span:after{display:block;content:\"\";position:absolute}.numInputWrapper span.arrowUp{top:0;border-bottom:0}.numInputWrapper span.arrowUp:after{border-left:4px solid transparent;border-right:4px solid transparent;border-bottom:4px solid rgba(57,57,57,0.6);top:26%}.numInputWrapper span.arrowDown{top:50%}.numInputWrapper span.arrowDown:after{border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px solid rgba(57,57,57,0.6);top:40%}.numInputWrapper span svg{width:inherit;height:auto}.numInputWrapper span svg path{fill:rgba(0,0,0,0.5)}.numInputWrapper:hover{background:rgba(0,0,0,0.05)}.numInputWrapper:hover span{opacity:1}.flatpickr-current-month{font-size:135%;line-height:inherit;font-weight:300;color:inherit;position:absolute;width:75%;left:12.5%;padding:7.48px 0 0 0;line-height:1;height:34px;display:inline-block;text-align:center;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.flatpickr-current-month span.cur-month{font-family:inherit;font-weight:700;color:inherit;display:inline-block;margin-left:.5ch;padding:0}.flatpickr-current-month span.cur-month:hover{background:rgba(0,0,0,0.05)}.flatpickr-current-month .numInputWrapper{width:6ch;width:7ch\\\\0;display:inline-block}.flatpickr-current-month .numInputWrapper span.arrowUp:after{border-bottom-color:rgba(0,0,0,0.9)}.flatpickr-current-month .numInputWrapper span.arrowDown:after{border-top-color:rgba(0,0,0,0.9)}.flatpickr-current-month input.cur-year{background:transparent;-webkit-box-sizing:border-box;box-sizing:border-box;color:inherit;cursor:text;padding:0 0 0 .5ch;margin:0;display:inline-block;font-size:inherit;font-family:inherit;font-weight:300;line-height:inherit;height:auto;border:0;border-radius:0;vertical-align:initial;-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.flatpickr-current-month input.cur-year:focus{outline:0}.flatpickr-current-month input.cur-year[disabled],.flatpickr-current-month input.cur-year[disabled]:hover{font-size:100%;color:rgba(0,0,0,0.5);background:transparent;pointer-events:none}.flatpickr-current-month .flatpickr-monthDropdown-months{appearance:menulist;background:transparent;border:none;border-radius:0;box-sizing:border-box;color:inherit;cursor:pointer;font-size:inherit;font-family:inherit;font-weight:300;height:auto;line-height:inherit;margin:-1px 0 0 0;outline:none;padding:0 0 0 .5ch;position:relative;vertical-align:initial;-webkit-box-sizing:border-box;-webkit-appearance:menulist;-moz-appearance:menulist;width:auto}.flatpickr-current-month .flatpickr-monthDropdown-months:focus,.flatpickr-current-month .flatpickr-monthDropdown-months:active{outline:none}.flatpickr-current-month .flatpickr-monthDropdown-months:hover{background:rgba(0,0,0,0.05)}.flatpickr-current-month .flatpickr-monthDropdown-months .flatpickr-monthDropdown-month{background-color:transparent;outline:none;padding:0}.flatpickr-weekdays{background:transparent;text-align:center;overflow:hidden;width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;height:28px}.flatpickr-weekdays .flatpickr-weekdaycontainer{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}span.flatpickr-weekday{cursor:default;font-size:90%;background:transparent;color:rgba(0,0,0,0.54);line-height:1;margin:0;text-align:center;display:block;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;font-weight:bolder}.dayContainer,.flatpickr-weeks{padding:1px 0 0 0}.flatpickr-days{position:relative;overflow:hidden;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:flex-start;width:307.875px}.flatpickr-days:focus{outline:0}.dayContainer{padding:0;outline:0;text-align:left;width:307.875px;min-width:307.875px;max-width:307.875px;-webkit-box-sizing:border-box;box-sizing:border-box;display:inline-block;display:-ms-flexbox;display:-webkit-box;display:-webkit-flex;display:flex;-webkit-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-wrap:wrap;-ms-flex-pack:justify;-webkit-justify-content:space-around;justify-content:space-around;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}.dayContainer + .dayContainer{-webkit-box-shadow:-1px 0 0 #e6e6e6;box-shadow:-1px 0 0 #e6e6e6}.flatpickr-day{background:none;border:1px solid transparent;border-radius:150px;-webkit-box-sizing:border-box;box-sizing:border-box;color:#393939;cursor:pointer;font-weight:400;width:14.2857143%;-webkit-flex-basis:14.2857143%;-ms-flex-preferred-size:14.2857143%;flex-basis:14.2857143%;max-width:39px;height:39px;line-height:39px;margin:0;display:inline-block;position:relative;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;text-align:center}.flatpickr-day.inRange,.flatpickr-day.prevMonthDay.inRange,.flatpickr-day.nextMonthDay.inRange,.flatpickr-day.today.inRange,.flatpickr-day.prevMonthDay.today.inRange,.flatpickr-day.nextMonthDay.today.inRange,.flatpickr-day:hover,.flatpickr-day.prevMonthDay:hover,.flatpickr-day.nextMonthDay:hover,.flatpickr-day:focus,.flatpickr-day.prevMonthDay:focus,.flatpickr-day.nextMonthDay:focus{cursor:pointer;outline:0;background:#e6e6e6;border-color:#e6e6e6}.flatpickr-day.today{border-color:#959ea9}.flatpickr-day.today:hover,.flatpickr-day.today:focus{border-color:#959ea9;background:#959ea9;color:#fff}.flatpickr-day.selected,.flatpickr-day.startRange,.flatpickr-day.endRange,.flatpickr-day.selected.inRange,.flatpickr-day.startRange.inRange,.flatpickr-day.endRange.inRange,.flatpickr-day.selected:focus,.flatpickr-day.startRange:focus,.flatpickr-day.endRange:focus,.flatpickr-day.selected:hover,.flatpickr-day.startRange:hover,.flatpickr-day.endRange:hover,.flatpickr-day.selected.prevMonthDay,.flatpickr-day.startRange.prevMonthDay,.flatpickr-day.endRange.prevMonthDay,.flatpickr-day.selected.nextMonthDay,.flatpickr-day.startRange.nextMonthDay,.flatpickr-day.endRange.nextMonthDay{background:#569ff7;-webkit-box-shadow:none;box-shadow:none;color:#fff;border-color:#569ff7}.flatpickr-day.selected.startRange,.flatpickr-day.startRange.startRange,.flatpickr-day.endRange.startRange{border-radius:50px 0 0 50px}.flatpickr-day.selected.endRange,.flatpickr-day.startRange.endRange,.flatpickr-day.endRange.endRange{border-radius:0 50px 50px 0}.flatpickr-day.selected.startRange + .endRange:not(:nth-child(7n+1)),.flatpickr-day.startRange.startRange + .endRange:not(:nth-child(7n+1)),.flatpickr-day.endRange.startRange + .endRange:not(:nth-child(7n+1)){-webkit-box-shadow:-10px 0 0 #569ff7;box-shadow:-10px 0 0 #569ff7}.flatpickr-day.selected.startRange.endRange,.flatpickr-day.startRange.startRange.endRange,.flatpickr-day.endRange.startRange.endRange{border-radius:50px}.flatpickr-day.inRange{border-radius:0;-webkit-box-shadow:-5px 0 0 #e6e6e6,5px 0 0 #e6e6e6;box-shadow:-5px 0 0 #e6e6e6,5px 0 0 #e6e6e6}.flatpickr-day.flatpickr-disabled,.flatpickr-day.flatpickr-disabled:hover,.flatpickr-day.prevMonthDay,.flatpickr-day.nextMonthDay,.flatpickr-day.notAllowed,.flatpickr-day.notAllowed.prevMonthDay,.flatpickr-day.notAllowed.nextMonthDay{color:rgba(57,57,57,0.3);background:transparent;border-color:transparent;cursor:default}.flatpickr-day.flatpickr-disabled,.flatpickr-day.flatpickr-disabled:hover{cursor:not-allowed;color:rgba(57,57,57,0.1)}.flatpickr-day.week.selected{border-radius:0;-webkit-box-shadow:-5px 0 0 #569ff7,5px 0 0 #569ff7;box-shadow:-5px 0 0 #569ff7,5px 0 0 #569ff7}.flatpickr-day.hidden{visibility:hidden}.rangeMode .flatpickr-day{margin-top:1px}.flatpickr-weekwrapper{float:left}.flatpickr-weekwrapper .flatpickr-weeks{padding:0 12px;-webkit-box-shadow:1px 0 0 #e6e6e6;box-shadow:1px 0 0 #e6e6e6}.flatpickr-weekwrapper .flatpickr-weekday{float:none;width:100%;line-height:28px}.flatpickr-weekwrapper span.flatpickr-day,.flatpickr-weekwrapper span.flatpickr-day:hover{display:block;width:100%;max-width:none;color:rgba(57,57,57,0.3);background:transparent;cursor:default;border:none}.flatpickr-innerContainer{display:block;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden}.flatpickr-rContainer{display:inline-block;padding:0;-webkit-box-sizing:border-box;box-sizing:border-box}.flatpickr-time{text-align:center;outline:0;display:block;height:0;line-height:40px;max-height:40px;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.flatpickr-time:after{content:\"\";display:table;clear:both}.flatpickr-time .numInputWrapper{-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;width:40%;height:40px;float:left}.flatpickr-time .numInputWrapper span.arrowUp:after{border-bottom-color:#393939}.flatpickr-time .numInputWrapper span.arrowDown:after{border-top-color:#393939}.flatpickr-time.hasSeconds .numInputWrapper{width:26%}.flatpickr-time.time24hr .numInputWrapper{width:49%}.flatpickr-time input{background:transparent;-webkit-box-shadow:none;box-shadow:none;border:0;border-radius:0;text-align:center;margin:0;padding:0;height:inherit;line-height:inherit;color:#393939;font-size:14px;position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.flatpickr-time input.flatpickr-hour{font-weight:bold}.flatpickr-time input.flatpickr-minute,.flatpickr-time input.flatpickr-second{font-weight:400}.flatpickr-time input:focus{outline:0;border:0}.flatpickr-time .flatpickr-time-separator,.flatpickr-time .flatpickr-am-pm{height:inherit;float:left;line-height:inherit;color:#393939;font-weight:bold;width:2%;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-align-self:center;-ms-flex-item-align:center;align-self:center}.flatpickr-time .flatpickr-am-pm{outline:0;width:18%;cursor:pointer;text-align:center;font-weight:400}.flatpickr-time input:hover,.flatpickr-time .flatpickr-am-pm:hover,.flatpickr-time input:focus,.flatpickr-time .flatpickr-am-pm:focus{background:#eee}.flatpickr-input[readonly]{cursor:pointer}@-webkit-keyframes fpFadeInDown{from{opacity:0;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@keyframes fpFadeInDown{from{opacity:0;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/flatpickr/dist/flatpickr.min.css\"],\"names\":[],\"mappings\":\"AAAA,oBAAoB,sBAAsB,CAAC,SAAS,CAAC,YAAY,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,SAAS,CAAC,sBAAsB,CAAC,cAAc,CAAC,aAAa,CAAC,QAAQ,CAAC,cAAc,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,eAAe,CAAC,6BAA6B,CAAC,qBAAqB,CAAC,6BAA6B,CAAC,yBAAyB,CAAC,eAAe,CAAC,gHAAgH,CAAC,wGAAwG,CAAC,oDAAoD,SAAS,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,yBAAyB,oBAAoB,CAAC,aAAa,CAAC,iCAAiC,8DAA8D,CAAC,sDAAsD,CAAC,2BAA2B,aAAa,CAAC,iBAAiB,CAAC,OAAO,CAAC,2BAA2B,iBAAiB,CAAC,oBAAoB,CAAC,gCAAgC,WAAW,CAAC,aAAa,CAAC,mHAAmH,kCAAkC,CAAC,0BAA0B,CAAC,mHAAmH,mDAAmD,CAAC,2CAA2C,CAAC,uFAAuF,eAAe,CAAC,4BAA4B,CAAC,2BAA2B,CAAC,4CAA4C,aAAa,CAAC,4CAA4C,WAAW,CAAC,4BAA4B,CAAC,uDAAuD,WAAW,CAAC,qDAAqD,iBAAiB,CAAC,aAAa,CAAC,mBAAmB,CAAC,wBAAwB,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,oJAAoJ,SAAS,CAAC,UAAU,CAAC,6EAA6E,QAAQ,CAAC,SAAS,CAAC,2BAA2B,gBAAgB,CAAC,aAAa,CAAC,0BAA0B,gBAAgB,CAAC,aAAa,CAAC,uEAAuE,WAAW,CAAC,oCAAoC,2BAA2B,CAAC,mCAAmC,wBAAwB,CAAC,6EAA6E,QAAQ,CAAC,uCAAuC,wBAAwB,CAAC,sCAAsC,qBAAqB,CAAC,0BAA0B,SAAS,CAAC,mBAAmB,iBAAiB,CAAC,oBAAoB,CAAC,kBAAkB,mBAAmB,CAAC,oBAAoB,CAAC,mBAAmB,CAAC,YAAY,CAAC,mCAAmC,sBAAsB,CAAC,qBAAqB,CAAC,oBAAoB,CAAC,WAAW,CAAC,aAAa,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,wBAAwB,CAAC,qBAAqB,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,eAAe,CAAC,kBAAkB,CAAC,cAAc,CAAC,UAAU,CAAC,MAAM,CAAC,gFAAgF,wBAAwB,CAAC,qBAAqB,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,cAAc,CAAC,iBAAiB,CAAC,KAAK,CAAC,WAAW,CAAC,YAAY,CAAC,SAAS,CAAC,qBAAqB,CAAC,oBAAoB,CAAC,sHAAsH,YAAY,CAAC,oFAAoF,iBAAiB,CAAC,0HAA0H;yBACr3H,CAAC,KAAK,CAAC;uBACT,CAAC,CAAC;yBACA;AACzB;uBACuB;AACvB,0HAA0H;yBACjG,CAAC,MAAM,CAAC;uBACV,CAAC,CAAC;yBACA;AACzB;uBACuB;AACvB,4FAA4F,aAAa,CAAC,oGAAoG,YAAY,CAAC,wFAAwF,UAAU,CAAC,WAAW,CAAC,kGAAkG,2BAA2B,CAAC,mBAAmB,CAAC,YAAY,CAAC,iBAAiB,iBAAiB,CAAC,WAAW,CAAC,6CAA6C,oBAAoB,CAAC,uBAAuB,UAAU,CAAC,kCAAkC,YAAY,CAAC,oGAAoG,QAAQ,CAAC,uBAAuB,CAAC,sBAAsB,iBAAiB,CAAC,OAAO,CAAC,UAAU,CAAC,mBAAmB,CAAC,UAAU,CAAC,eAAe,CAAC,SAAS,CAAC,cAAc,CAAC,oCAAoC,CAAC,6BAA6B,CAAC,qBAAqB,CAAC,4BAA4B,0BAA0B,CAAC,6BAA6B,0BAA0B,CAAC,4BAA4B,aAAa,CAAC,UAAU,CAAC,iBAAiB,CAAC,8BAA8B,KAAK,CAAC,eAAe,CAAC,oCAAoC,iCAAiC,CAAC,kCAAkC,CAAC,0CAA0C,CAAC,OAAO,CAAC,gCAAgC,OAAO,CAAC,sCAAsC,iCAAiC,CAAC,kCAAkC,CAAC,uCAAuC,CAAC,OAAO,CAAC,0BAA0B,aAAa,CAAC,WAAW,CAAC,+BAA+B,oBAAoB,CAAC,uBAAuB,2BAA2B,CAAC,4BAA4B,SAAS,CAAC,yBAAyB,cAAc,CAAC,mBAAmB,CAAC,eAAe,CAAC,aAAa,CAAC,iBAAiB,CAAC,SAAS,CAAC,UAAU,CAAC,oBAAoB,CAAC,aAAa,CAAC,WAAW,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,oCAAoC,CAAC,4BAA4B,CAAC,wCAAwC,mBAAmB,CAAC,eAAe,CAAC,aAAa,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,SAAS,CAAC,8CAA8C,2BAA2B,CAAC,0CAA0C,SAAS,CAAC,WAAW,CAAC,oBAAoB,CAAC,6DAA6D,mCAAmC,CAAC,+DAA+D,gCAAgC,CAAC,wCAAwC,sBAAsB,CAAC,6BAA6B,CAAC,qBAAqB,CAAC,aAAa,CAAC,WAAW,CAAC,kBAAkB,CAAC,QAAQ,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,eAAe,CAAC,mBAAmB,CAAC,WAAW,CAAC,QAAQ,CAAC,eAAe,CAAC,sBAAsB,CAAC,4BAA4B,CAAC,yBAAyB,CAAC,oBAAoB,CAAC,8CAA8C,SAAS,CAAC,0GAA0G,cAAc,CAAC,qBAAqB,CAAC,sBAAsB,CAAC,mBAAmB,CAAC,yDAAyD,mBAAmB,CAAC,sBAAsB,CAAC,WAAW,CAAC,eAAe,CAAC,qBAAqB,CAAC,aAAa,CAAC,cAAc,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,eAAe,CAAC,WAAW,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,YAAY,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,sBAAsB,CAAC,6BAA6B,CAAC,2BAA2B,CAAC,wBAAwB,CAAC,UAAU,CAAC,+HAA+H,YAAY,CAAC,+DAA+D,2BAA2B,CAAC,wFAAwF,4BAA4B,CAAC,YAAY,CAAC,SAAS,CAAC,oBAAoB,sBAAsB,CAAC,iBAAiB,CAAC,eAAe,CAAC,UAAU,CAAC,mBAAmB,CAAC,oBAAoB,CAAC,mBAAmB,CAAC,YAAY,CAAC,wBAAwB,CAAC,0BAA0B,CAAC,qBAAqB,CAAC,kBAAkB,CAAC,WAAW,CAAC,gDAAgD,mBAAmB,CAAC,oBAAoB,CAAC,mBAAmB,CAAC,YAAY,CAAC,kBAAkB,CAAC,cAAc,CAAC,UAAU,CAAC,MAAM,CAAC,uBAAuB,cAAc,CAAC,aAAa,CAAC,sBAAsB,CAAC,sBAAsB,CAAC,aAAa,CAAC,QAAQ,CAAC,iBAAiB,CAAC,aAAa,CAAC,kBAAkB,CAAC,cAAc,CAAC,UAAU,CAAC,MAAM,CAAC,kBAAkB,CAAC,+BAA+B,iBAAiB,CAAC,gBAAgB,iBAAiB,CAAC,eAAe,CAAC,mBAAmB,CAAC,oBAAoB,CAAC,mBAAmB,CAAC,YAAY,CAAC,uBAAuB,CAAC,8BAA8B,CAAC,oBAAoB,CAAC,sBAAsB,CAAC,eAAe,CAAC,sBAAsB,SAAS,CAAC,cAAc,SAAS,CAAC,SAAS,CAAC,eAAe,CAAC,eAAe,CAAC,mBAAmB,CAAC,mBAAmB,CAAC,6BAA6B,CAAC,qBAAqB,CAAC,oBAAoB,CAAC,mBAAmB,CAAC,mBAAmB,CAAC,oBAAoB,CAAC,YAAY,CAAC,sBAAsB,CAAC,cAAc,CAAC,kBAAkB,CAAC,qBAAqB,CAAC,oCAAoC,CAAC,4BAA4B,CAAC,oCAAoC,CAAC,4BAA4B,CAAC,SAAS,CAAC,8BAA8B,mCAAmC,CAAC,2BAA2B,CAAC,eAAe,eAAe,CAAC,4BAA4B,CAAC,mBAAmB,CAAC,6BAA6B,CAAC,qBAAqB,CAAC,aAAa,CAAC,cAAc,CAAC,eAAe,CAAC,iBAAiB,CAAC,8BAA8B,CAAC,mCAAmC,CAAC,sBAAsB,CAAC,cAAc,CAAC,WAAW,CAAC,gBAAgB,CAAC,QAAQ,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,uBAAuB,CAAC,8BAA8B,CAAC,oBAAoB,CAAC,sBAAsB,CAAC,iBAAiB,CAAC,kYAAkY,cAAc,CAAC,SAAS,CAAC,kBAAkB,CAAC,oBAAoB,CAAC,qBAAqB,oBAAoB,CAAC,sDAAsD,oBAAoB,CAAC,kBAAkB,CAAC,UAAU,CAAC,skBAAskB,kBAAkB,CAAC,uBAAuB,CAAC,eAAe,CAAC,UAAU,CAAC,oBAAoB,CAAC,2GAA2G,2BAA2B,CAAC,qGAAqG,2BAA2B,CAAC,iNAAiN,oCAAoC,CAAC,4BAA4B,CAAC,sIAAsI,kBAAkB,CAAC,uBAAuB,eAAe,CAAC,mDAAmD,CAAC,2CAA2C,CAAC,0OAA0O,wBAAwB,CAAC,sBAAsB,CAAC,wBAAwB,CAAC,cAAc,CAAC,0EAA0E,kBAAkB,CAAC,wBAAwB,CAAC,6BAA6B,eAAe,CAAC,mDAAmD,CAAC,2CAA2C,CAAC,sBAAsB,iBAAiB,CAAC,0BAA0B,cAAc,CAAC,uBAAuB,UAAU,CAAC,wCAAwC,cAAc,CAAC,kCAAkC,CAAC,0BAA0B,CAAC,0CAA0C,UAAU,CAAC,UAAU,CAAC,gBAAgB,CAAC,0FAA0F,aAAa,CAAC,UAAU,CAAC,cAAc,CAAC,wBAAwB,CAAC,sBAAsB,CAAC,cAAc,CAAC,WAAW,CAAC,0BAA0B,aAAa,CAAC,mBAAmB,CAAC,oBAAoB,CAAC,mBAAmB,CAAC,YAAY,CAAC,6BAA6B,CAAC,qBAAqB,CAAC,eAAe,CAAC,sBAAsB,oBAAoB,CAAC,SAAS,CAAC,6BAA6B,CAAC,qBAAqB,CAAC,gBAAgB,iBAAiB,CAAC,SAAS,CAAC,aAAa,CAAC,QAAQ,CAAC,gBAAgB,CAAC,eAAe,CAAC,6BAA6B,CAAC,qBAAqB,CAAC,eAAe,CAAC,mBAAmB,CAAC,oBAAoB,CAAC,mBAAmB,CAAC,YAAY,CAAC,sBAAsB,UAAU,CAAC,aAAa,CAAC,UAAU,CAAC,iCAAiC,kBAAkB,CAAC,cAAc,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,UAAU,CAAC,oDAAoD,2BAA2B,CAAC,sDAAsD,wBAAwB,CAAC,4CAA4C,SAAS,CAAC,0CAA0C,SAAS,CAAC,sBAAsB,sBAAsB,CAAC,uBAAuB,CAAC,eAAe,CAAC,QAAQ,CAAC,eAAe,CAAC,iBAAiB,CAAC,QAAQ,CAAC,SAAS,CAAC,cAAc,CAAC,mBAAmB,CAAC,aAAa,CAAC,cAAc,CAAC,iBAAiB,CAAC,6BAA6B,CAAC,qBAAqB,CAAC,4BAA4B,CAAC,yBAAyB,CAAC,oBAAoB,CAAC,qCAAqC,gBAAgB,CAAC,8EAA8E,eAAe,CAAC,4BAA4B,SAAS,CAAC,QAAQ,CAAC,2EAA2E,cAAc,CAAC,UAAU,CAAC,mBAAmB,CAAC,aAAa,CAAC,gBAAgB,CAAC,QAAQ,CAAC,wBAAwB,CAAC,qBAAqB,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,yBAAyB,CAAC,0BAA0B,CAAC,iBAAiB,CAAC,iCAAiC,SAAS,CAAC,SAAS,CAAC,cAAc,CAAC,iBAAiB,CAAC,eAAe,CAAC,sIAAsI,eAAe,CAAC,2BAA2B,cAAc,CAAC,gCAAgC,KAAK,SAAS,CAAC,wCAAwC,CAAC,gCAAgC,CAAC,GAAG,SAAS,CAAC,oCAAoC,CAAC,4BAA4B,CAAC,CAAC,wBAAwB,KAAK,SAAS,CAAC,wCAAwC,CAAC,gCAAgC,CAAC,GAAG,SAAS,CAAC,oCAAoC,CAAC,4BAA4B,CAAC\",\"sourcesContent\":[\".flatpickr-calendar{background:transparent;opacity:0;display:none;text-align:center;visibility:hidden;padding:0;-webkit-animation:none;animation:none;direction:ltr;border:0;font-size:14px;line-height:24px;border-radius:5px;position:absolute;width:307.875px;-webkit-box-sizing:border-box;box-sizing:border-box;-ms-touch-action:manipulation;touch-action:manipulation;background:#fff;-webkit-box-shadow:1px 0 0 #e6e6e6,-1px 0 0 #e6e6e6,0 1px 0 #e6e6e6,0 -1px 0 #e6e6e6,0 3px 13px rgba(0,0,0,0.08);box-shadow:1px 0 0 #e6e6e6,-1px 0 0 #e6e6e6,0 1px 0 #e6e6e6,0 -1px 0 #e6e6e6,0 3px 13px rgba(0,0,0,0.08)}.flatpickr-calendar.open,.flatpickr-calendar.inline{opacity:1;max-height:640px;visibility:visible}.flatpickr-calendar.open{display:inline-block;z-index:99999}.flatpickr-calendar.animate.open{-webkit-animation:fpFadeInDown 300ms cubic-bezier(.23,1,.32,1);animation:fpFadeInDown 300ms cubic-bezier(.23,1,.32,1)}.flatpickr-calendar.inline{display:block;position:relative;top:2px}.flatpickr-calendar.static{position:absolute;top:calc(100% + 2px)}.flatpickr-calendar.static.open{z-index:999;display:block}.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+1) .flatpickr-day.inRange:nth-child(7n+7){-webkit-box-shadow:none !important;box-shadow:none !important}.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+2) .flatpickr-day.inRange:nth-child(7n+1){-webkit-box-shadow:-2px 0 0 #e6e6e6,5px 0 0 #e6e6e6;box-shadow:-2px 0 0 #e6e6e6,5px 0 0 #e6e6e6}.flatpickr-calendar .hasWeeks .dayContainer,.flatpickr-calendar .hasTime .dayContainer{border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.flatpickr-calendar .hasWeeks .dayContainer{border-left:0}.flatpickr-calendar.hasTime .flatpickr-time{height:40px;border-top:1px solid #e6e6e6}.flatpickr-calendar.noCalendar.hasTime .flatpickr-time{height:auto}.flatpickr-calendar:before,.flatpickr-calendar:after{position:absolute;display:block;pointer-events:none;border:solid transparent;content:'';height:0;width:0;left:22px}.flatpickr-calendar.rightMost:before,.flatpickr-calendar.arrowRight:before,.flatpickr-calendar.rightMost:after,.flatpickr-calendar.arrowRight:after{left:auto;right:22px}.flatpickr-calendar.arrowCenter:before,.flatpickr-calendar.arrowCenter:after{left:50%;right:50%}.flatpickr-calendar:before{border-width:5px;margin:0 -5px}.flatpickr-calendar:after{border-width:4px;margin:0 -4px}.flatpickr-calendar.arrowTop:before,.flatpickr-calendar.arrowTop:after{bottom:100%}.flatpickr-calendar.arrowTop:before{border-bottom-color:#e6e6e6}.flatpickr-calendar.arrowTop:after{border-bottom-color:#fff}.flatpickr-calendar.arrowBottom:before,.flatpickr-calendar.arrowBottom:after{top:100%}.flatpickr-calendar.arrowBottom:before{border-top-color:#e6e6e6}.flatpickr-calendar.arrowBottom:after{border-top-color:#fff}.flatpickr-calendar:focus{outline:0}.flatpickr-wrapper{position:relative;display:inline-block}.flatpickr-months{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.flatpickr-months .flatpickr-month{background:transparent;color:rgba(0,0,0,0.9);fill:rgba(0,0,0,0.9);height:34px;line-height:1;text-align:center;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:hidden;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}.flatpickr-months .flatpickr-prev-month,.flatpickr-months .flatpickr-next-month{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;text-decoration:none;cursor:pointer;position:absolute;top:0;height:34px;padding:10px;z-index:3;color:rgba(0,0,0,0.9);fill:rgba(0,0,0,0.9)}.flatpickr-months .flatpickr-prev-month.flatpickr-disabled,.flatpickr-months .flatpickr-next-month.flatpickr-disabled{display:none}.flatpickr-months .flatpickr-prev-month i,.flatpickr-months .flatpickr-next-month i{position:relative}.flatpickr-months .flatpickr-prev-month.flatpickr-prev-month,.flatpickr-months .flatpickr-next-month.flatpickr-prev-month{/*\\n /*rtl:begin:ignore*/left:0/*\\n /*rtl:end:ignore*/}/*\\n /*rtl:begin:ignore*/\\n/*\\n /*rtl:end:ignore*/\\n.flatpickr-months .flatpickr-prev-month.flatpickr-next-month,.flatpickr-months .flatpickr-next-month.flatpickr-next-month{/*\\n /*rtl:begin:ignore*/right:0/*\\n /*rtl:end:ignore*/}/*\\n /*rtl:begin:ignore*/\\n/*\\n /*rtl:end:ignore*/\\n.flatpickr-months .flatpickr-prev-month:hover,.flatpickr-months .flatpickr-next-month:hover{color:#959ea9}.flatpickr-months .flatpickr-prev-month:hover svg,.flatpickr-months .flatpickr-next-month:hover svg{fill:#f64747}.flatpickr-months .flatpickr-prev-month svg,.flatpickr-months .flatpickr-next-month svg{width:14px;height:14px}.flatpickr-months .flatpickr-prev-month svg path,.flatpickr-months .flatpickr-next-month svg path{-webkit-transition:fill .1s;transition:fill .1s;fill:inherit}.numInputWrapper{position:relative;height:auto}.numInputWrapper input,.numInputWrapper span{display:inline-block}.numInputWrapper input{width:100%}.numInputWrapper input::-ms-clear{display:none}.numInputWrapper input::-webkit-outer-spin-button,.numInputWrapper input::-webkit-inner-spin-button{margin:0;-webkit-appearance:none}.numInputWrapper span{position:absolute;right:0;width:14px;padding:0 4px 0 2px;height:50%;line-height:50%;opacity:0;cursor:pointer;border:1px solid rgba(57,57,57,0.15);-webkit-box-sizing:border-box;box-sizing:border-box}.numInputWrapper span:hover{background:rgba(0,0,0,0.1)}.numInputWrapper span:active{background:rgba(0,0,0,0.2)}.numInputWrapper span:after{display:block;content:\\\"\\\";position:absolute}.numInputWrapper span.arrowUp{top:0;border-bottom:0}.numInputWrapper span.arrowUp:after{border-left:4px solid transparent;border-right:4px solid transparent;border-bottom:4px solid rgba(57,57,57,0.6);top:26%}.numInputWrapper span.arrowDown{top:50%}.numInputWrapper span.arrowDown:after{border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px solid rgba(57,57,57,0.6);top:40%}.numInputWrapper span svg{width:inherit;height:auto}.numInputWrapper span svg path{fill:rgba(0,0,0,0.5)}.numInputWrapper:hover{background:rgba(0,0,0,0.05)}.numInputWrapper:hover span{opacity:1}.flatpickr-current-month{font-size:135%;line-height:inherit;font-weight:300;color:inherit;position:absolute;width:75%;left:12.5%;padding:7.48px 0 0 0;line-height:1;height:34px;display:inline-block;text-align:center;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.flatpickr-current-month span.cur-month{font-family:inherit;font-weight:700;color:inherit;display:inline-block;margin-left:.5ch;padding:0}.flatpickr-current-month span.cur-month:hover{background:rgba(0,0,0,0.05)}.flatpickr-current-month .numInputWrapper{width:6ch;width:7ch\\\\0;display:inline-block}.flatpickr-current-month .numInputWrapper span.arrowUp:after{border-bottom-color:rgba(0,0,0,0.9)}.flatpickr-current-month .numInputWrapper span.arrowDown:after{border-top-color:rgba(0,0,0,0.9)}.flatpickr-current-month input.cur-year{background:transparent;-webkit-box-sizing:border-box;box-sizing:border-box;color:inherit;cursor:text;padding:0 0 0 .5ch;margin:0;display:inline-block;font-size:inherit;font-family:inherit;font-weight:300;line-height:inherit;height:auto;border:0;border-radius:0;vertical-align:initial;-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.flatpickr-current-month input.cur-year:focus{outline:0}.flatpickr-current-month input.cur-year[disabled],.flatpickr-current-month input.cur-year[disabled]:hover{font-size:100%;color:rgba(0,0,0,0.5);background:transparent;pointer-events:none}.flatpickr-current-month .flatpickr-monthDropdown-months{appearance:menulist;background:transparent;border:none;border-radius:0;box-sizing:border-box;color:inherit;cursor:pointer;font-size:inherit;font-family:inherit;font-weight:300;height:auto;line-height:inherit;margin:-1px 0 0 0;outline:none;padding:0 0 0 .5ch;position:relative;vertical-align:initial;-webkit-box-sizing:border-box;-webkit-appearance:menulist;-moz-appearance:menulist;width:auto}.flatpickr-current-month .flatpickr-monthDropdown-months:focus,.flatpickr-current-month .flatpickr-monthDropdown-months:active{outline:none}.flatpickr-current-month .flatpickr-monthDropdown-months:hover{background:rgba(0,0,0,0.05)}.flatpickr-current-month .flatpickr-monthDropdown-months .flatpickr-monthDropdown-month{background-color:transparent;outline:none;padding:0}.flatpickr-weekdays{background:transparent;text-align:center;overflow:hidden;width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;height:28px}.flatpickr-weekdays .flatpickr-weekdaycontainer{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}span.flatpickr-weekday{cursor:default;font-size:90%;background:transparent;color:rgba(0,0,0,0.54);line-height:1;margin:0;text-align:center;display:block;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;font-weight:bolder}.dayContainer,.flatpickr-weeks{padding:1px 0 0 0}.flatpickr-days{position:relative;overflow:hidden;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:flex-start;width:307.875px}.flatpickr-days:focus{outline:0}.dayContainer{padding:0;outline:0;text-align:left;width:307.875px;min-width:307.875px;max-width:307.875px;-webkit-box-sizing:border-box;box-sizing:border-box;display:inline-block;display:-ms-flexbox;display:-webkit-box;display:-webkit-flex;display:flex;-webkit-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-wrap:wrap;-ms-flex-pack:justify;-webkit-justify-content:space-around;justify-content:space-around;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}.dayContainer + .dayContainer{-webkit-box-shadow:-1px 0 0 #e6e6e6;box-shadow:-1px 0 0 #e6e6e6}.flatpickr-day{background:none;border:1px solid transparent;border-radius:150px;-webkit-box-sizing:border-box;box-sizing:border-box;color:#393939;cursor:pointer;font-weight:400;width:14.2857143%;-webkit-flex-basis:14.2857143%;-ms-flex-preferred-size:14.2857143%;flex-basis:14.2857143%;max-width:39px;height:39px;line-height:39px;margin:0;display:inline-block;position:relative;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;text-align:center}.flatpickr-day.inRange,.flatpickr-day.prevMonthDay.inRange,.flatpickr-day.nextMonthDay.inRange,.flatpickr-day.today.inRange,.flatpickr-day.prevMonthDay.today.inRange,.flatpickr-day.nextMonthDay.today.inRange,.flatpickr-day:hover,.flatpickr-day.prevMonthDay:hover,.flatpickr-day.nextMonthDay:hover,.flatpickr-day:focus,.flatpickr-day.prevMonthDay:focus,.flatpickr-day.nextMonthDay:focus{cursor:pointer;outline:0;background:#e6e6e6;border-color:#e6e6e6}.flatpickr-day.today{border-color:#959ea9}.flatpickr-day.today:hover,.flatpickr-day.today:focus{border-color:#959ea9;background:#959ea9;color:#fff}.flatpickr-day.selected,.flatpickr-day.startRange,.flatpickr-day.endRange,.flatpickr-day.selected.inRange,.flatpickr-day.startRange.inRange,.flatpickr-day.endRange.inRange,.flatpickr-day.selected:focus,.flatpickr-day.startRange:focus,.flatpickr-day.endRange:focus,.flatpickr-day.selected:hover,.flatpickr-day.startRange:hover,.flatpickr-day.endRange:hover,.flatpickr-day.selected.prevMonthDay,.flatpickr-day.startRange.prevMonthDay,.flatpickr-day.endRange.prevMonthDay,.flatpickr-day.selected.nextMonthDay,.flatpickr-day.startRange.nextMonthDay,.flatpickr-day.endRange.nextMonthDay{background:#569ff7;-webkit-box-shadow:none;box-shadow:none;color:#fff;border-color:#569ff7}.flatpickr-day.selected.startRange,.flatpickr-day.startRange.startRange,.flatpickr-day.endRange.startRange{border-radius:50px 0 0 50px}.flatpickr-day.selected.endRange,.flatpickr-day.startRange.endRange,.flatpickr-day.endRange.endRange{border-radius:0 50px 50px 0}.flatpickr-day.selected.startRange + .endRange:not(:nth-child(7n+1)),.flatpickr-day.startRange.startRange + .endRange:not(:nth-child(7n+1)),.flatpickr-day.endRange.startRange + .endRange:not(:nth-child(7n+1)){-webkit-box-shadow:-10px 0 0 #569ff7;box-shadow:-10px 0 0 #569ff7}.flatpickr-day.selected.startRange.endRange,.flatpickr-day.startRange.startRange.endRange,.flatpickr-day.endRange.startRange.endRange{border-radius:50px}.flatpickr-day.inRange{border-radius:0;-webkit-box-shadow:-5px 0 0 #e6e6e6,5px 0 0 #e6e6e6;box-shadow:-5px 0 0 #e6e6e6,5px 0 0 #e6e6e6}.flatpickr-day.flatpickr-disabled,.flatpickr-day.flatpickr-disabled:hover,.flatpickr-day.prevMonthDay,.flatpickr-day.nextMonthDay,.flatpickr-day.notAllowed,.flatpickr-day.notAllowed.prevMonthDay,.flatpickr-day.notAllowed.nextMonthDay{color:rgba(57,57,57,0.3);background:transparent;border-color:transparent;cursor:default}.flatpickr-day.flatpickr-disabled,.flatpickr-day.flatpickr-disabled:hover{cursor:not-allowed;color:rgba(57,57,57,0.1)}.flatpickr-day.week.selected{border-radius:0;-webkit-box-shadow:-5px 0 0 #569ff7,5px 0 0 #569ff7;box-shadow:-5px 0 0 #569ff7,5px 0 0 #569ff7}.flatpickr-day.hidden{visibility:hidden}.rangeMode .flatpickr-day{margin-top:1px}.flatpickr-weekwrapper{float:left}.flatpickr-weekwrapper .flatpickr-weeks{padding:0 12px;-webkit-box-shadow:1px 0 0 #e6e6e6;box-shadow:1px 0 0 #e6e6e6}.flatpickr-weekwrapper .flatpickr-weekday{float:none;width:100%;line-height:28px}.flatpickr-weekwrapper span.flatpickr-day,.flatpickr-weekwrapper span.flatpickr-day:hover{display:block;width:100%;max-width:none;color:rgba(57,57,57,0.3);background:transparent;cursor:default;border:none}.flatpickr-innerContainer{display:block;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden}.flatpickr-rContainer{display:inline-block;padding:0;-webkit-box-sizing:border-box;box-sizing:border-box}.flatpickr-time{text-align:center;outline:0;display:block;height:0;line-height:40px;max-height:40px;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.flatpickr-time:after{content:\\\"\\\";display:table;clear:both}.flatpickr-time .numInputWrapper{-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;width:40%;height:40px;float:left}.flatpickr-time .numInputWrapper span.arrowUp:after{border-bottom-color:#393939}.flatpickr-time .numInputWrapper span.arrowDown:after{border-top-color:#393939}.flatpickr-time.hasSeconds .numInputWrapper{width:26%}.flatpickr-time.time24hr .numInputWrapper{width:49%}.flatpickr-time input{background:transparent;-webkit-box-shadow:none;box-shadow:none;border:0;border-radius:0;text-align:center;margin:0;padding:0;height:inherit;line-height:inherit;color:#393939;font-size:14px;position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.flatpickr-time input.flatpickr-hour{font-weight:bold}.flatpickr-time input.flatpickr-minute,.flatpickr-time input.flatpickr-second{font-weight:400}.flatpickr-time input:focus{outline:0;border:0}.flatpickr-time .flatpickr-time-separator,.flatpickr-time .flatpickr-am-pm{height:inherit;float:left;line-height:inherit;color:#393939;font-weight:bold;width:2%;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-align-self:center;-ms-flex-item-align:center;align-self:center}.flatpickr-time .flatpickr-am-pm{outline:0;width:18%;cursor:pointer;text-align:center;font-weight:400}.flatpickr-time input:hover,.flatpickr-time .flatpickr-am-pm:hover,.flatpickr-time input:focus,.flatpickr-time .flatpickr-am-pm:focus{background:#eee}.flatpickr-input[readonly]{cursor:pointer}@-webkit-keyframes fpFadeInDown{from{opacity:0;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@keyframes fpFadeInDown{from{opacity:0;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","\"use strict\";\n\n/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n*/\nmodule.exports = function (cssWithMappingToString) {\n var list = [];\n\n // return the list of modules as css string\n list.toString = function toString() {\n return this.map(function (item) {\n var content = \"\";\n var needLayer = typeof item[5] !== \"undefined\";\n if (item[4]) {\n content += \"@supports (\".concat(item[4], \") {\");\n }\n if (item[2]) {\n content += \"@media \".concat(item[2], \" {\");\n }\n if (needLayer) {\n content += \"@layer\".concat(item[5].length > 0 ? \" \".concat(item[5]) : \"\", \" {\");\n }\n content += cssWithMappingToString(item);\n if (needLayer) {\n content += \"}\";\n }\n if (item[2]) {\n content += \"}\";\n }\n if (item[4]) {\n content += \"}\";\n }\n return content;\n }).join(\"\");\n };\n\n // import a list of modules into the list\n list.i = function i(modules, media, dedupe, supports, layer) {\n if (typeof modules === \"string\") {\n modules = [[null, modules, undefined]];\n }\n var alreadyImportedModules = {};\n if (dedupe) {\n for (var k = 0; k < this.length; k++) {\n var id = this[k][0];\n if (id != null) {\n alreadyImportedModules[id] = true;\n }\n }\n }\n for (var _k = 0; _k < modules.length; _k++) {\n var item = [].concat(modules[_k]);\n if (dedupe && alreadyImportedModules[item[0]]) {\n continue;\n }\n if (typeof layer !== \"undefined\") {\n if (typeof item[5] === \"undefined\") {\n item[5] = layer;\n } else {\n item[1] = \"@layer\".concat(item[5].length > 0 ? \" \".concat(item[5]) : \"\", \" {\").concat(item[1], \"}\");\n item[5] = layer;\n }\n }\n if (media) {\n if (!item[2]) {\n item[2] = media;\n } else {\n item[1] = \"@media \".concat(item[2], \" {\").concat(item[1], \"}\");\n item[2] = media;\n }\n }\n if (supports) {\n if (!item[4]) {\n item[4] = \"\".concat(supports);\n } else {\n item[1] = \"@supports (\".concat(item[4], \") {\").concat(item[1], \"}\");\n item[4] = supports;\n }\n }\n list.push(item);\n }\n };\n return list;\n};","\"use strict\";\n\nmodule.exports = function (item) {\n var content = item[1];\n var cssMapping = item[3];\n if (!cssMapping) {\n return content;\n }\n if (typeof btoa === \"function\") {\n var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(cssMapping))));\n var data = \"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(base64);\n var sourceMapping = \"/*# \".concat(data, \" */\");\n return [content].concat([sourceMapping]).join(\"\\n\");\n }\n return [content].join(\"\\n\");\n};","'use strict';\n\nvar m = require('react-dom');\nif (process.env.NODE_ENV === 'production') {\n exports.createRoot = m.createRoot;\n exports.hydrateRoot = m.hydrateRoot;\n} else {\n var i = m.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\n exports.createRoot = function(c, o) {\n i.usingClientEntryPoint = true;\n try {\n return m.createRoot(c, o);\n } finally {\n i.usingClientEntryPoint = false;\n }\n };\n exports.hydrateRoot = function(c, h, o) {\n i.usingClientEntryPoint = true;\n try {\n return m.hydrateRoot(c, h, o);\n } finally {\n i.usingClientEntryPoint = false;\n }\n };\n}\n","/* global Map:readonly, Set:readonly, ArrayBuffer:readonly */\n\nvar hasElementType = typeof Element !== 'undefined';\nvar hasMap = typeof Map === 'function';\nvar hasSet = typeof Set === 'function';\nvar hasArrayBuffer = typeof ArrayBuffer === 'function' && !!ArrayBuffer.isView;\n\n// Note: We **don't** need `envHasBigInt64Array` in fde es6/index.js\n\nfunction equal(a, b) {\n // START: fast-deep-equal es6/index.js 3.1.3\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n // START: Modifications:\n // 1. Extra `has &&` helpers in initial condition allow es6 code\n // to co-exist with es5.\n // 2. Replace `for of` with es5 compliant iteration using `for`.\n // Basically, take:\n //\n // ```js\n // for (i of a.entries())\n // if (!b.has(i[0])) return false;\n // ```\n //\n // ... and convert to:\n //\n // ```js\n // it = a.entries();\n // while (!(i = it.next()).done)\n // if (!b.has(i.value[0])) return false;\n // ```\n //\n // **Note**: `i` access switches to `i.value`.\n var it;\n if (hasMap && (a instanceof Map) && (b instanceof Map)) {\n if (a.size !== b.size) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!b.has(i.value[0])) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!equal(i.value[1], b.get(i.value[0]))) return false;\n return true;\n }\n\n if (hasSet && (a instanceof Set) && (b instanceof Set)) {\n if (a.size !== b.size) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!b.has(i.value[0])) return false;\n return true;\n }\n // END: Modifications\n\n if (hasArrayBuffer && ArrayBuffer.isView(a) && ArrayBuffer.isView(b)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (a[i] !== b[i]) return false;\n return true;\n }\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n // START: Modifications:\n // Apply guards for `Object.create(null)` handling. See:\n // - https://github.com/FormidableLabs/react-fast-compare/issues/64\n // - https://github.com/epoberezkin/fast-deep-equal/issues/49\n if (a.valueOf !== Object.prototype.valueOf && typeof a.valueOf === 'function' && typeof b.valueOf === 'function') return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString && typeof a.toString === 'function' && typeof b.toString === 'function') return a.toString() === b.toString();\n // END: Modifications\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n // END: fast-deep-equal\n\n // START: react-fast-compare\n // custom handling for DOM elements\n if (hasElementType && a instanceof Element) return false;\n\n // custom handling for React/Preact\n for (i = length; i-- !== 0;) {\n if ((keys[i] === '_owner' || keys[i] === '__v' || keys[i] === '__o') && a.$$typeof) {\n // React-specific: avoid traversing React elements' _owner\n // Preact-specific: avoid traversing Preact elements' __v and __o\n // __v = $_original / $_vnode\n // __o = $_owner\n // These properties contain circular references and are not needed when\n // comparing the actual elements (and not their owners)\n // .$$typeof and ._store on just reasonable markers of elements\n\n continue;\n }\n\n // all other properties should be traversed as usual\n if (!equal(a[keys[i]], b[keys[i]])) return false;\n }\n // END: react-fast-compare\n\n // START: fast-deep-equal\n return true;\n }\n\n return a !== a && b !== b;\n}\n// end fast-deep-equal\n\nmodule.exports = function isEqual(a, b) {\n try {\n return equal(a, b);\n } catch (error) {\n if (((error.message || '').match(/stack|recursion/i))) {\n // warn on circular references, don't crash\n // browsers give this different errors name and messages:\n // chrome/safari: \"RangeError\", \"Maximum call stack size exceeded\"\n // firefox: \"InternalError\", too much recursion\"\n // edge: \"Error\", \"Out of stack space\"\n console.warn('react-fast-compare cannot handle circular refs');\n return false;\n }\n // some other error. we should definitely know about these\n throw error;\n }\n};\n","\"use strict\";\n\nvar stylesInDOM = [];\nfunction getIndexByIdentifier(identifier) {\n var result = -1;\n for (var i = 0; i < stylesInDOM.length; i++) {\n if (stylesInDOM[i].identifier === identifier) {\n result = i;\n break;\n }\n }\n return result;\n}\nfunction modulesToDom(list, options) {\n var idCountMap = {};\n var identifiers = [];\n for (var i = 0; i < list.length; i++) {\n var item = list[i];\n var id = options.base ? item[0] + options.base : item[0];\n var count = idCountMap[id] || 0;\n var identifier = \"\".concat(id, \" \").concat(count);\n idCountMap[id] = count + 1;\n var indexByIdentifier = getIndexByIdentifier(identifier);\n var obj = {\n css: item[1],\n media: item[2],\n sourceMap: item[3],\n supports: item[4],\n layer: item[5]\n };\n if (indexByIdentifier !== -1) {\n stylesInDOM[indexByIdentifier].references++;\n stylesInDOM[indexByIdentifier].updater(obj);\n } else {\n var updater = addElementStyle(obj, options);\n options.byIndex = i;\n stylesInDOM.splice(i, 0, {\n identifier: identifier,\n updater: updater,\n references: 1\n });\n }\n identifiers.push(identifier);\n }\n return identifiers;\n}\nfunction addElementStyle(obj, options) {\n var api = options.domAPI(options);\n api.update(obj);\n var updater = function updater(newObj) {\n if (newObj) {\n if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap && newObj.supports === obj.supports && newObj.layer === obj.layer) {\n return;\n }\n api.update(obj = newObj);\n } else {\n api.remove();\n }\n };\n return updater;\n}\nmodule.exports = function (list, options) {\n options = options || {};\n list = list || [];\n var lastIdentifiers = modulesToDom(list, options);\n return function update(newList) {\n newList = newList || [];\n for (var i = 0; i < lastIdentifiers.length; i++) {\n var identifier = lastIdentifiers[i];\n var index = getIndexByIdentifier(identifier);\n stylesInDOM[index].references--;\n }\n var newLastIdentifiers = modulesToDom(newList, options);\n for (var _i = 0; _i < lastIdentifiers.length; _i++) {\n var _identifier = lastIdentifiers[_i];\n var _index = getIndexByIdentifier(_identifier);\n if (stylesInDOM[_index].references === 0) {\n stylesInDOM[_index].updater();\n stylesInDOM.splice(_index, 1);\n }\n }\n lastIdentifiers = newLastIdentifiers;\n };\n};","\"use strict\";\n\nvar memo = {};\n\n/* istanbul ignore next */\nfunction getTarget(target) {\n if (typeof memo[target] === \"undefined\") {\n var styleTarget = document.querySelector(target);\n\n // Special case to return head of iframe instead of iframe itself\n if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {\n try {\n // This will throw an exception if access to iframe is blocked\n // due to cross-origin restrictions\n styleTarget = styleTarget.contentDocument.head;\n } catch (e) {\n // istanbul ignore next\n styleTarget = null;\n }\n }\n memo[target] = styleTarget;\n }\n return memo[target];\n}\n\n/* istanbul ignore next */\nfunction insertBySelector(insert, style) {\n var target = getTarget(insert);\n if (!target) {\n throw new Error(\"Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.\");\n }\n target.appendChild(style);\n}\nmodule.exports = insertBySelector;","\"use strict\";\n\n/* istanbul ignore next */\nfunction insertStyleElement(options) {\n var element = document.createElement(\"style\");\n options.setAttributes(element, options.attributes);\n options.insert(element, options.options);\n return element;\n}\nmodule.exports = insertStyleElement;","\"use strict\";\n\n/* istanbul ignore next */\nfunction setAttributesWithoutAttributes(styleElement) {\n var nonce = typeof __webpack_nonce__ !== \"undefined\" ? __webpack_nonce__ : null;\n if (nonce) {\n styleElement.setAttribute(\"nonce\", nonce);\n }\n}\nmodule.exports = setAttributesWithoutAttributes;","\"use strict\";\n\n/* istanbul ignore next */\nfunction apply(styleElement, options, obj) {\n var css = \"\";\n if (obj.supports) {\n css += \"@supports (\".concat(obj.supports, \") {\");\n }\n if (obj.media) {\n css += \"@media \".concat(obj.media, \" {\");\n }\n var needLayer = typeof obj.layer !== \"undefined\";\n if (needLayer) {\n css += \"@layer\".concat(obj.layer.length > 0 ? \" \".concat(obj.layer) : \"\", \" {\");\n }\n css += obj.css;\n if (needLayer) {\n css += \"}\";\n }\n if (obj.media) {\n css += \"}\";\n }\n if (obj.supports) {\n css += \"}\";\n }\n var sourceMap = obj.sourceMap;\n if (sourceMap && typeof btoa !== \"undefined\") {\n css += \"\\n/*# sourceMappingURL=data:application/json;base64,\".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), \" */\");\n }\n\n // For old IE\n /* istanbul ignore if */\n options.styleTagTransform(css, styleElement, options.options);\n}\nfunction removeStyleElement(styleElement) {\n // istanbul ignore if\n if (styleElement.parentNode === null) {\n return false;\n }\n styleElement.parentNode.removeChild(styleElement);\n}\n\n/* istanbul ignore next */\nfunction domAPI(options) {\n if (typeof document === \"undefined\") {\n return {\n update: function update() {},\n remove: function remove() {}\n };\n }\n var styleElement = options.insertStyleElement(options);\n return {\n update: function update(obj) {\n apply(styleElement, options, obj);\n },\n remove: function remove() {\n removeStyleElement(styleElement);\n }\n };\n}\nmodule.exports = domAPI;","\"use strict\";\n\n/* istanbul ignore next */\nfunction styleTagTransform(css, styleElement) {\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}\nmodule.exports = styleTagTransform;","module.exports = require(\"react-dom\");","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","__webpack_require__.amdD = function () {\n\tthrow new Error('define cannot be used indirect');\n};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.p = \"\";","__webpack_require__.nc = undefined;","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"react\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"prop-types\");","import { createContext } from 'react';\n\nconst AccordionContext = createContext();\n\nexport default AccordionContext;\n","import { createContext } from 'react';\n\nconst AccordionItemContext = createContext();\n\nexport default AccordionItemContext;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nfunction Icon({\n className,\n family,\n type,\n ...rest\n}) {\n function getCSSClasses() {\n const fontFamily = family || 'fa';\n\n return [\n 'tyk-icon',\n fontFamily,\n `${fontFamily}-${type}`,\n className,\n ].filter(Boolean).join(' ');\n }\n\n return ;\n}\n\nIcon.propTypes = {\n className: PropTypes.string,\n family: PropTypes.string,\n type: PropTypes.string.isRequired,\n};\n\nexport default Icon;\n","import React, { useContext } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Icon from '../../Icon';\nimport AccordionItemContext from './AccordionItemContext';\n\nfunction ItemTrigger({ wrap }) {\n const { collapsed, disabled, toggleChange } = useContext(AccordionItemContext);\n\n const iconType = collapsed ? 'chevron-down' : 'chevron-up';\n const classes = [\n 'tyk-accordion__trigger',\n disabled && 'tyk-accordion__trigger--disabled',\n ].filter(Boolean).join(' ');\n const trigger = (\n \n \n \n );\n\n return wrap\n ?
    {trigger}
    \n : trigger;\n}\n\nItemTrigger.propTypes = {\n wrap: PropTypes.bool,\n};\n\nexport default ItemTrigger;\n","import React, {\n useMemo, useState, useContext, forwardRef,\n} from 'react';\nimport PropTypes from 'prop-types';\n\nimport AccordionContext from './AccordionContext';\nimport AccordionItemContext from './AccordionItemContext';\nimport ItemTrigger from './AccordionItemTrigger';\n\nfunction AccordionItem({\n collapsed: collapsedProp,\n children,\n className,\n disabled,\n}, ref) {\n const { arrow } = useContext(AccordionContext);\n const [collapsed, setCollapsed] = useState(collapsedProp);\n\n const toggleChange = () => {\n if (disabled) {\n return;\n }\n\n setCollapsed(!collapsed);\n };\n\n const classes = useMemo(() => [\n 'tyk-accordion__item',\n arrow.expandToContent\n ? `tyk-accordion__item--trigger-position-${arrow.position}`\n : 'tyk-accordion__item--trigger-in-header',\n className,\n collapsed === false && 'tyk-accordion__item--active',\n ].filter(Boolean).join(' '), [arrow, className, collapsed]);\n\n const contextValue = useMemo(() => ({\n collapsed,\n disabled,\n toggleChange,\n }), [collapsed, disabled, toggleChange]);\n\n return (\n
    \n \n {arrow.expandToContent && (\n \n )}\n {children}\n \n
    \n );\n}\n\nAccordionItem.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n collapsed: PropTypes.bool,\n className: PropTypes.string,\n disabled: PropTypes.bool,\n};\n\nAccordionItem.defaultProps = {\n collapsed: false,\n};\n\nexport default forwardRef(AccordionItem);\n","import React, { useContext } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Icon from '../../Icon';\nimport AccordionContext from './AccordionContext';\nimport AccordionItemContext from './AccordionItemContext';\nimport ItemTrigger from './AccordionItemTrigger';\n\nfunction AccordionItemHeader({ className, children }) {\n const { collapsed, disabled, toggleChange } = useContext(AccordionItemContext);\n const { usearrowastrigger, arrow } = useContext(AccordionContext);\n const iconType = collapsed ? 'chevron-down' : 'chevron-up';\n const classes = [\n 'tyk-accordion__item-header',\n usearrowastrigger && 'tyk-accordion__arrow-trigger',\n className,\n ].filter(Boolean).join(' ');\n\n return (\n
    \n {\n !usearrowastrigger\n ? (\n \n {children}\n \n \n )\n : (\n <>\n {!arrow.expandToContent && arrow.position === 'left' && (\n \n )}\n
    {children}
    \n {!arrow.expandToContent && arrow.position === 'right' && (\n \n )}\n \n )\n }\n
    \n );\n}\n\nAccordionItemHeader.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n className: PropTypes.string,\n};\n\nexport default AccordionItemHeader;\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"react-transition-group\");","import { useEffect, useRef } from 'react';\n\nconst usePrevious = (value) => {\n const ref = useRef();\n useEffect(() => {\n ref.current = value;\n }, [value]);\n return ref.current;\n};\n\n/** @component */\nexport default usePrevious;\n","import { useEffect, useRef } from 'react';\n\nconst useTimeout = (callback, delay) => {\n const savedCallback = useRef();\n\n useEffect(() => {\n savedCallback.current = callback;\n },\n [callback]);\n\n useEffect(() => {\n function tick() {\n savedCallback.current();\n }\n if (delay !== null) {\n const id = setTimeout(tick, delay);\n return () => clearTimeout(id);\n }\n\n return () => {};\n },\n [delay]);\n};\n\n/** @component */\nexport default useTimeout;\n","import { useEffect, useRef } from 'react';\n\n/** @component */\nexport default function useInterval(callback, delay, ...args) {\n const savedCallback = useRef();\n\n useEffect(() => {\n savedCallback.current = callback;\n }, [callback]);\n\n /* eslint-disable consistent-return */\n useEffect(() => {\n function tick() {\n savedCallback.current(...args);\n }\n if (delay !== null && delay !== undefined) {\n const id = setInterval(tick, delay);\n return () => clearInterval(id);\n }\n }, [delay]);\n /* eslint-disable consistent-return */\n}\n","import { useEffect, useRef } from 'react';\n\nconst useEventListener = (eventName, handler, element) => {\n const savedHandler = useRef();\n useEffect(() => {\n savedHandler.current = handler;\n }, [handler]);\n\n useEffect(() => {\n const isSupported = element?.addEventListener;\n if (!isSupported) {\n // eslint-disable-next-line consistent-return\n return;\n }\n\n const eventListener = (event) => savedHandler.current(event);\n element.addEventListener(eventName, eventListener);\n\n // eslint-disable-next-line consistent-return\n return () => {\n element.removeEventListener(eventName, eventListener);\n };\n }, [eventName, element]);\n};\n\n/** @component */\nexport default useEventListener;\n","import { useCallback, useState, useLayoutEffect } from 'react';\n\nconst getSize = (el) => {\n if (!el) {\n return {\n width: 0,\n height: 0,\n };\n }\n\n return {\n width: el.offsetWidth,\n height: el.offsetHeight,\n };\n};\n\nconst useComponentSize = (ref) => {\n const [ComponentSize, setComponentSize] = useState(getSize(ref ? ref.current : {}));\n const handleResize = useCallback(() => {\n if (ref.current) {\n setComponentSize(getSize(ref.current));\n }\n }, [ref]);\n\n useLayoutEffect(() => {\n handleResize();\n\n let resizeObserver = new ResizeObserver(() => {\n handleResize();\n });\n resizeObserver.observe(ref.current);\n\n return () => {\n resizeObserver.disconnect(ref.current);\n resizeObserver = null;\n };\n }, [ref.current]);\n\n return ComponentSize;\n};\n\n/** @component */\nexport default useComponentSize;\n","export { default as usePrevious } from './usePrevious';\nexport { default as useTimeout } from './useTimeout';\nexport { default as useInterval } from './useInterval';\nexport { default as useEventListener } from './useEventListener';\nexport { default as useComponentSize } from './useComponentSize';\n","import React, {\n useRef, useState, useCallback, useEffect,\n} from 'react';\nimport PropTypes from 'prop-types';\nimport { CSSTransition } from 'react-transition-group';\nimport { useEventListener, useComponentSize } from '../../hooks';\n\n/**\n * Collapsible is a component that helps you to collapse/expand any type of content\n */\nfunction Collapsible({\n className,\n collapsed,\n children,\n ...rest\n}) {\n const contentContainer = useRef(null);\n const collapseWrapper = useRef(null);\n const refContainerSize = useComponentSize(contentContainer);\n const [contentContainerStyle, setContentContainerStyle] = useState({\n // eslint-disable-next-line\n height: (collapsed) ? 0 : 'auto',\n });\n\n const setHeight = (height) => {\n setContentContainerStyle({\n height: `${height}px`,\n });\n };\n\n const getHeight = () => (contentContainer.current ? contentContainer.current.clientHeight : 0);\n\n const onEnter = () => {\n setHeight(getHeight());\n };\n\n const onExit = () => {\n setHeight(0);\n };\n\n useEffect(() => {\n if (!collapsed\n && refContainerSize?.height\n && contentContainerStyle.height !== refContainerSize?.height\n ) {\n setHeight(refContainerSize.height);\n }\n }, [refContainerSize.height]);\n\n const onWindowResize = useCallback(() => {\n if (!collapsed && contentContainer.current) {\n setHeight(getHeight());\n collapseWrapper.current.style.height = `${getHeight()}px`;\n }\n }, [collapsed, contentContainer.current]);\n\n useEventListener('resize', onWindowResize, window);\n\n return (\n \n \n \n { children }\n \n \n \n );\n}\n\nCollapsible.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]),\n /** Describes if the content of Collapsible should be hidden or not */\n collapsed: PropTypes.bool,\n /** CSS classes that can be passed to the Collapsible element */\n className: PropTypes.string,\n};\n\nexport default Collapsible;\n","import React, { useContext } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Collapsible from '../../Collapsible';\nimport AccordionItemContext from './AccordionItemContext';\n\nfunction AccordionItemContent({ children, className }) {\n const { collapsed } = useContext(AccordionItemContext);\n\n const classes = [\n 'tyk-accordion__item-content',\n className,\n ].filter(Boolean).join(' ');\n\n return (\n
    \n \n { children }\n \n
    \n );\n}\n\nAccordionItemContent.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n className: PropTypes.string,\n};\n\nexport default AccordionItemContent;\n","import React, { useMemo } from 'react';\nimport PropTypes from 'prop-types';\nimport AccordionItem from './js/AccordionItem';\nimport AccordionItemHeader from './js/AccordionItemHeader';\nimport AccordionItemContent from './js/AccordionItemContent';\nimport AccordionContext from './js/AccordionContext';\n\nfunction Accordion({\n className,\n children,\n usearrowastrigger,\n arrow = { position: 'right', expandToContent: false },\n}) {\n const classes = [\n 'tyk-accordion',\n className,\n ].filter(Boolean).join(' ');\n\n const contextValue = useMemo(() => ({\n usearrowastrigger,\n arrow,\n }), [usearrowastrigger, arrow]);\n\n return (\n
    \n \n {children}\n \n
    \n );\n}\n\nAccordion.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n className: PropTypes.string,\n usearrowastrigger: PropTypes.bool,\n arrow: PropTypes.shape({\n position: PropTypes.oneOf(['left', 'right']),\n expandToContent: PropTypes.bool,\n }),\n};\n\nAccordion.defaultProps = {\n usearrowastrigger: false,\n};\n\n// For Readme.md : Start\nAccordion.Item = AccordionItem;\nAccordion.Item.Header = AccordionItemHeader;\nAccordion.Item.Content = AccordionItemContent;\n// For Readme.md : End\n\nexport default Accordion;\n","import React, { Fragment, cloneElement } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Icon from '../Icon';\n\n/**\n * Button component.\n */\nconst Button = React.forwardRef((props, ref) => {\n const {\n customButton,\n children,\n iconType,\n iconFamily,\n iconPosition,\n iconOnly,\n id,\n className,\n disabled,\n display,\n href,\n onClick,\n noStyle,\n size,\n theme,\n type,\n ...rest\n } = props;\n\n const getCssClasses = () => {\n const cssClasses = ['tyk-button'].concat(className ? className.split(' ') : []);\n const sizeClass = (size) ? `tyk-button--${size}` : 'tyk-button--md';\n const disabledClass = (disabled) ? 'disabled' : '';\n const displayClass = display || '';\n const themeClass = theme ? `tyk-button--${theme}` : '';\n const iconOnlyClass = iconOnly ? 'tyk-button--icon-only' : '';\n const noStyleClass = noStyle ? 'tyk-button--no-style' : '';\n\n cssClasses.push(iconOnlyClass);\n cssClasses.push(themeClass);\n cssClasses.push(sizeClass);\n cssClasses.push(disabledClass);\n cssClasses.push(displayClass);\n cssClasses.push(noStyleClass);\n\n if (iconType) {\n cssClasses.push(`icon-${iconPosition || 'left'}`);\n }\n\n return cssClasses.join(' ');\n };\n\n const getButtonIcon = (position) => {\n const iPos = iconPosition || 'left';\n\n return (\n (iconType && iPos === position)\n ? \n : null\n );\n };\n\n const getButtonType = () => {\n let buttonType;\n\n if (customButton) {\n return (\n \n { cloneElement(customButton, {\n className: getCssClasses(),\n disabled,\n })\n }\n \n );\n }\n\n if (href) {\n buttonType = (\n \n { getButtonIcon('left') }\n { children }\n { getButtonIcon('right') }\n \n );\n } else {\n buttonType = (\n // eslint-disable-next-line react/button-has-type\n \n { getButtonIcon('left') }\n { children && {children} }\n { getButtonIcon('right') }\n \n );\n }\n\n return buttonType;\n };\n\n\n return (\n getButtonType()\n );\n});\n\nButton.propTypes = {\n /**\n * Content of a button. Can be a DOM element or a React component\n */\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n customButton: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n ]),\n className: PropTypes.string,\n /**\n * Display type: inline/block. Default is inline\n */\n display: PropTypes.string,\n /**\n * Sets the button disabled state\n */\n disabled: PropTypes.bool,\n /**\n * Having this property set the button will become a link\n */\n id: PropTypes.string,\n href: PropTypes.string,\n iconPosition: PropTypes.string, // left or right\n iconFamily: PropTypes.string,\n iconOnly: PropTypes.bool,\n iconType: PropTypes.string,\n noStyle: PropTypes.bool,\n /**\n * Callback function, called when the button si clicked\n */\n onClick: PropTypes.func,\n /**\n * Describes the appearence of the button (ex: primary, danger, primary-outline etc.)\n */\n theme: PropTypes.string,\n /**\n * Type of the button (ex: button, submit etc.)\n */\n type: PropTypes.string,\n /**\n * Describes the size of the button (sm, md, lg). Default one is md\n */\n size: PropTypes.string,\n};\n\nButton.defaultProps = {\n theme: '',\n type: 'button',\n};\n\nexport default Button;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\n/**\n * Tyk button component.\n */\nfunction ButtonGroup({\n className,\n children,\n label,\n}) {\n return (\n
    \n {Boolean(label) && (\n \n )}\n
    \n {children}\n
    \n
    \n );\n}\n\nButtonGroup.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n className: PropTypes.string,\n /**\n * Label that will sit above the button group\n */\n label: PropTypes.string,\n};\n\nexport default ButtonGroup;\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"echarts\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"immutable\");","export default (func, wait, immediate) => {\n let timeout;\n return function debouncer(...args) {\n const context = this;\n const later = () => {\n timeout = null;\n if (!immediate) {\n func.apply(context, args);\n }\n };\n const callNow = immediate && !timeout;\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n if (callNow) {\n func.apply(context, args);\n }\n };\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nfunction Loader({ className, position = 'relative', withbackground = false }) {\n const classes = [\n 'loading',\n position,\n className,\n ].filter(Boolean).join(' ');\n\n const loader = (\n
    \n
    \n
    \n
    \n
    \n
    \n );\n\n return withbackground\n ?
    {loader}
    \n : loader;\n}\n\nLoader.propTypes = {\n /** add a class to loader */\n className: PropTypes.string,\n /** position of loader (absolute / relative) */\n position: PropTypes.string,\n /** defines weather loader should be renders with or without background */\n withbackground: PropTypes.bool,\n};\n\nexport default Loader;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport Icon from '../Icon';\n\n/**\n * The Message component is used to highlight important content to the users.\n *\n * If the content you are displaying needs immediate attention or is a feedback,\n * consider using `toast` instead\n */\nfunction Message({\n children, theme, onClose, noMargin, className,\n}) {\n function getCssClasses() {\n return [\n 'tyk-message',\n `tyk-message--${theme || 'info'}`,\n noMargin && 'no-margin',\n className,\n ].filter(Boolean).join(' ');\n }\n\n const iconType = theme === 'success' ? 'check' : 'warning';\n\n return (\n
    \n \n
    \n { children }\n
    \n {onClose && (\n \n )}\n
    \n );\n}\n\nMessage.propTypes = {\n /** Set theme for message (eg. default, success, danger, etc) */\n theme: PropTypes.string,\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]),\n /** add a class to loader */\n className: PropTypes.string,\n /** Removes margins by adding `no-margin` class */\n noMargin: PropTypes.bool,\n /** Callback for clicking on the \"x\" */\n onClose: PropTypes.func,\n};\n\nexport default Message;\n","import React, {\n useState, useEffect, useRef, memo,\n} from 'react';\nimport PropTypes from 'prop-types';\nimport * as echarts from 'echarts';\nimport { fromJS } from 'immutable';\n\nimport debounce from '../../utils/debounce';\nimport { usePrevious } from '../../hooks';\nimport Loader from '../Loader';\nimport Message from '../Message';\nimport worldMap from './maps/world.json';\n\necharts.registerMap('world', worldMap);\n\nconst Chart = (props) => {\n const {\n areaStyleColors,\n dataLoaded,\n hasData,\n highlight,\n type,\n option,\n series,\n onChange,\n zoomStart,\n zoomEnd,\n title,\n seriesConfig = [],\n noDataComponent = null,\n zoomColors,\n } = props;\n const [tykChartInstance, setTykChartInstance] = useState(null);\n const chartWrapperRef = useRef(null);\n const onResize = () => {\n if (tykChartInstance) {\n tykChartInstance.resize();\n }\n };\n\n const lineBarChart = {\n defaultOpts: fromJS({\n title: {\n show: true,\n text: title,\n left: 0,\n },\n color: [],\n toolbox: {\n right: '0',\n orient: 'horizontal',\n itemSize: 15,\n showTitle: true,\n feature: null,\n },\n dataZoom: [{\n show: true,\n start: 0,\n end: 100,\n orient: 'horizontal',\n dataBackground: {\n lineStyle: {\n color: zoomColors?.lineStyle || '#368493',\n },\n areaStyle: {\n color: zoomColors?.areaStyle || '#368493',\n },\n },\n handleStyle: {\n color: zoomColors?.handleStyle || '#368493',\n },\n textStyle: {\n color: zoomColors?.textStyle || '#368493',\n },\n borderColor: 'transparent',\n fillerColor: zoomColors?.fillerColor || 'rgba(54, 132, 147, 0.1)',\n }],\n legend: {\n show: false,\n // data: [],\n // right: '1%',\n },\n tooltip: {\n trigger: 'axis',\n axisPointer: {\n type: 'cross',\n },\n },\n grid: {\n left: '1%',\n right: '1%',\n bottom: '50px',\n top: '40px',\n containLabel: true,\n },\n xAxis: {\n boundaryGap: false,\n type: 'category',\n splitLine: {\n show: true,\n lineStyle: {\n type: 'dotted',\n color: '#F0F0F0',\n },\n },\n axisLine: {\n show: false,\n },\n axisTick: {\n show: false,\n },\n data: [],\n },\n yAxis: {\n min: 'dataMin',\n boundaryGap: true,\n axisPointer: {\n show: true,\n },\n splitLine: {\n lineStyle: {\n type: 'dotted',\n color: '#F0F0F0',\n },\n show: true,\n },\n axisLabel: {\n show: true,\n },\n axisLine: {\n show: true,\n },\n axisTick: {\n show: false,\n },\n type: 'value',\n },\n textStyle: {\n color: '#5a5a68',\n },\n series: [],\n animationEasing: 'elasticOut',\n }),\n seriesDefault: fromJS({\n data: [],\n type: 'line',\n areaStyle: {\n opacity: 1,\n color: areaStyleColors ? new echarts.graphic.LinearGradient(0, 0, 1, 1,\n areaStyleColors.map((color, index) => ({\n offset: index,\n color,\n }))) : [],\n },\n smooth: false,\n symbolSize: 7,\n name: '',\n }),\n };\n\n const pieChart = {\n defaultOpts: fromJS({\n tooltip: {\n trigger: 'axis',\n formatter: '{b}: {c} ({d}%)',\n },\n legend: {\n orient: 'horizontal',\n x: 'left',\n y: 'top',\n data: [],\n },\n color: [],\n series: [],\n }),\n seriesDefault: fromJS({\n type: 'pie',\n center: [\n '50%',\n '55%',\n ],\n radius: [\n '50%',\n '75%',\n ],\n avoidLabelOverlap: false,\n animationType: 'scale',\n animationEasing: 'elasticOut',\n labelLine: {\n normal: {\n show: true,\n smooth: 0.2,\n length: 6,\n length2: 6,\n },\n },\n data: [],\n }),\n };\n\n const geoChart = {\n defaultOpts: fromJS({\n series: [],\n }),\n seriesDefault: fromJS({\n type: 'map',\n data: [],\n }),\n };\n\n const buildChartOptions = (selectedType, selectedOptions, selectedSeries) => {\n let finalOpts = {};\n switch (selectedType) {\n case 'pie': {\n finalOpts = pieChart.defaultOpts.mergeDeep(fromJS(selectedOptions)).toJS();\n\n selectedSeries.forEach((entry) => {\n finalOpts.series.push(pieChart.seriesDefault.mergeDeep(fromJS(entry)).toJS());\n });\n\n break;\n }\n\n case 'geo': {\n finalOpts = geoChart.defaultOpts.mergeDeep(fromJS(selectedOptions)).toJS();\n\n selectedSeries.forEach((entry) => {\n finalOpts.series.push(geoChart.seriesDefault.mergeDeep(fromJS(entry)).toJS());\n });\n\n break;\n }\n\n default: {\n finalOpts = lineBarChart.defaultOpts.mergeDeep(fromJS(selectedOptions)).toJS();\n if (Array.isArray(selectedOptions.yAxis)) {\n finalOpts.yAxis = selectedOptions.yAxis;\n }\n\n selectedSeries.forEach((entry, index) => {\n const seriesData = Object.assign(\n {},\n lineBarChart.seriesDefault.toJS(),\n seriesConfig[index], entry,\n );\n finalOpts.series.push(seriesData);\n });\n break;\n }\n }\n return finalOpts;\n };\n\n useEffect(() => {\n window.addEventListener('resize', onResize);\n\n return () => {\n window.removeEventListener('resize', onResize);\n };\n }, [tykChartInstance]);\n\n useEffect(() => {\n\n if (!chartWrapperRef?.current) {\n return;\n }\n\n setTykChartInstance(echarts.init(chartWrapperRef.current));\n return () => {\n if (tykChartInstance) {\n tykChartInstance.dispose();\n }\n };\n }, [chartWrapperRef.current]);\n\n const eventCallBack = (e) => {\n if (onChange) {\n onChange(e);\n }\n };\n\n useEffect(() => {\n let debouncedMethod;\n if (tykChartInstance) {\n debouncedMethod = debounce(eventCallBack, 500);\n tykChartInstance.on('dataZoom', debouncedMethod);\n tykChartInstance.on('restore', debouncedMethod);\n tykChartInstance.on('click', debouncedMethod);\n\n tykChartInstance.on('mousemove', (params) => {\n if (params.data) {\n tykChartInstance.getZr().setCursorStyle('pointer');\n }\n });\n }\n\n return () => {\n if (tykChartInstance) {\n tykChartInstance.off('dataZoom', debouncedMethod);\n tykChartInstance.off('restore', debouncedMethod);\n tykChartInstance.off('click', debouncedMethod);\n }\n };\n }, [tykChartInstance, onChange]);\n\n const prevInstance = usePrevious(tykChartInstance);\n const prevOption = usePrevious(option);\n const prevType = usePrevious(type);\n const prevSeries = usePrevious(series);\n useEffect(() => {\n if (\n tykChartInstance\n && (\n !fromJS(prevInstance)?.equals?.(fromJS(tykChartInstance))\n || !fromJS(prevOption)?.equals?.(fromJS(option))\n || (prevType !== type)\n || !fromJS(prevSeries).equals?.(fromJS(series))\n )\n ) {\n tykChartInstance.clear();\n tykChartInstance.setOption(buildChartOptions(type, option, series));\n tykChartInstance.dispatchAction({\n type: 'takeGlobalCursor',\n key: 'dataZoomSelect',\n dataZoomSelectActive: true,\n });\n }\n }, [tykChartInstance, option, series, type]);\n\n useEffect(() => {\n if (tykChartInstance && highlight) {\n tykChartInstance.dispatchAction({\n type: 'highlight',\n seriesIndex: highlight.seriesIndex,\n dataIndex: highlight.dataIndex,\n });\n tykChartInstance.dispatchAction({\n type: 'showTip',\n seriesIndex: highlight.seriesIndex,\n dataIndex: highlight.dataIndex,\n });\n }\n }, [highlight]);\n\n\n const prevZoomStart = usePrevious(zoomStart);\n const prevZoomEnd = usePrevious(zoomEnd);\n useEffect(() => {\n if (\n tykChartInstance\n && zoomStart !== -1\n && zoomEnd !== -1\n && (\n prevZoomStart !== zoomStart\n || prevZoomEnd !== zoomEnd\n )\n ) {\n tykChartInstance.dispatchAction({\n type: 'dataZoom',\n startValue: zoomStart,\n endValue: zoomEnd,\n });\n }\n }, [zoomStart, zoomEnd]);\n\n const getStyle = () => {\n const { style } = props;\n const tempStyle = style || {};\n\n if (!tempStyle.height) {\n tempStyle.height = '300px';\n }\n if (!tempStyle.width) {\n tempStyle.width = '100%';\n }\n return tempStyle;\n };\n\n const chartHasData = () => (\n (dataLoaded && (hasData === false || hasData === true)) ? hasData : true\n );\n\n const getCssClasses = () => {\n const cssClasses = ['tyk-chart'];\n\n if (!dataLoaded) {\n cssClasses.push('tyk-chart--loading-chart');\n }\n\n if (!chartHasData()) {\n cssClasses.push('tyk-chart--no-data');\n }\n\n return cssClasses.join(' ');\n };\n\n return (\n
    \n {\n !dataLoaded\n ? \n : null\n }\n \n {\n /* eslint-disable-next-line no-nested-ternary */\n chartHasData()\n ? null\n : noDataComponent\n ? noDataComponent()\n : (\n \n No data to display\n \n )\n }\n
    \n );\n};\n\nChart.propTypes = {\n areaStyleColors: PropTypes.instanceOf(Array),\n dataLoaded: PropTypes.bool,\n hasData: PropTypes.bool,\n highlight: PropTypes.oneOfType([\n PropTypes.number,\n PropTypes.string,\n PropTypes.instanceOf(Array),\n ]),\n noDataComponent: PropTypes.func,\n zoomStart: PropTypes.number,\n zoomEnd: PropTypes.number,\n zoomColors: PropTypes.instanceOf(Object),\n option: PropTypes.instanceOf(Object),\n onChange: PropTypes.func,\n style: PropTypes.instanceOf(Object),\n type: PropTypes.string,\n title: PropTypes.string,\n series: PropTypes.instanceOf(Array),\n seriesConfig: PropTypes.instanceOf(Object),\n};\n\nexport default memo(Chart);\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport Message from '../../Message';\nimport { useTimeout } from '../../../hooks';\n\nconst ToastMessage = (props) => {\n const {\n children,\n options,\n onClose,\n index,\n } = props;\n const opts = Object.assign({\n theme: 'success',\n delay: 3000,\n }, options);\n let timer;\n\n const handleClose = (itemIndex) => {\n onClose(itemIndex);\n clearTimeout(timer);\n };\n\n useTimeout(() => handleClose(index), opts.delay);\n\n return (\n handleClose(index)}\n >\n {children}\n \n );\n};\n\nToastMessage.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]),\n options: PropTypes.instanceOf(Object),\n onClose: PropTypes.func,\n index: PropTypes.number,\n};\n\nexport default ToastMessage;\n","import React, {\n useEffect, useState,\n} from 'react';\nimport PropTypes from 'prop-types';\n\nimport ToastMessage from './ToastMessage';\n\nconst ToastContainer = (props) => {\n const [messages, setMessages] = useState({});\n const {\n notify,\n } = props;\n\n const updateNotifications = (message, options) => {\n const msgID = Math.floor(Math.random() * 1000000);\n \n setMessages((prevMessages) => ({\n ...prevMessages,\n [msgID]: {\n message,\n options,\n }\n }));\n };\n\n useEffect(() => {\n notify(updateNotifications);\n }, [messages]);\n\n const onMessageClosed = (index) => {\n const tempMessages = {...messages};\n delete tempMessages[index];\n setMessages((prevMessages) => {\n const { [index]: messageToBeRemoved, ...restMessages } = prevMessages;\n return restMessages;\n });\n };\n\n return (\n
    \n {\n Object.keys(messages).map((msgID) => (\n messages[msgID]\n ? (\n \n {messages[msgID].message}\n \n )\n : null\n ))\n }\n
    \n );\n};\n\nToastContainer.propTypes = {\n notify: PropTypes.func,\n};\n\nexport default ToastContainer;\n","import React from 'react';\nimport { createRoot } from 'react-dom/client';\nimport ToastContainer from './js/ToastContainer';\n/**\n * Toast is a service that displays dialogs\n * on the bottom right part of the screen.\n *\n * The dialogs can have one of the Tyk UI themes, so that\n * it would match it's purpose (i.e success message, error message)\n *\n */\nclass ToastCreator {\n constructor() {\n const el = document.createElement('div');\n el.className = 'tyk-toast';\n document.body.appendChild(el);\n const root = createRoot(el);\n root.render();\n }\n\n bindNotify = (fn) => {\n this.createNotification = fn;\n };\n\n notify(message, options) {\n if (this.createNotification) {\n this.createNotification(message, options);\n }\n }\n\n danger(message, options) {\n this.notify(message, { ...options, theme: 'danger' });\n }\n\n success(message, options) {\n this.notify(message, { ...options, theme: 'success' });\n }\n\n warning(message, options) {\n this.notify(message, { ...options, theme: 'warning' });\n }\n\n info(message, options) {\n this.notify(message, { ...options, theme: 'info' });\n }\n}\n\nconst toast = new ToastCreator();\n\nexport default toast;\n","import React, { Fragment, createRef, useCallback } from 'react';\nimport PropTypes from 'prop-types';\n\nimport toast from '../Toast';\n\n/**\n * - CopyToClipboard is used to copy string for a user.\n * - Can be used normally with a text or a custom components (Eg. Button, Icon, etc)\n */\n\nconst CopyToClipboard = (props) => {\n const {\n display, copy, children, onCopy,\n } = props;\n const txtRef = createRef();\n const handleClick = useCallback(() => {\n if (onCopy) {\n onCopy();\n }\n\n if (!window.navigator.clipboard) {\n txtRef.current.select();\n document.execCommand('copy');\n toast.notify('copied', { theme: 'success' });\n return;\n }\n window.navigator.clipboard.writeText(copy);\n toast.notify('copied', { theme: 'success' });\n }, [onCopy, txtRef]);\n\n return (\n \n \n {children || display}\n \n {!window.navigator.clipboard ? (\n \n ) : null}\n \n );\n};\n\nCopyToClipboard.propTypes = {\n /** Callback function executed after text is copied */\n onCopy: PropTypes.func,\n /** Text to be copied */\n copy: PropTypes.string.isRequired,\n /** Text to be displayed */\n display: PropTypes.string,\n /** Children of custom element if you are using any custom element */\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.string,\n PropTypes.object,\n PropTypes.node,\n ]),\n};\n\nexport default CopyToClipboard;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nfunction ModalFooter({ children }) {\n return (\n
    \n { children }\n
    \n );\n}\n\nModalFooter.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]),\n};\n\nexport default ModalFooter;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nfunction ModalBody({ children }) {\n return (\n
    \n { children }\n
    \n );\n}\n\nModalBody.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]),\n};\n\nexport default ModalBody;\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport { CSSTransition } from 'react-transition-group';\n\nimport Icon from '../Icon';\nimport ModalFooter from './js/ModalFooter';\nimport ModalBody from './js/ModalBody';\n\n/**\n * Modals add dialogs confirmation boxes, notifications, or completely custom content\n * - only one Modal can be opened at a time\n * - are unmounted when Modal is closed\n */\nfunction Modal({\n children,\n theme = 'none',\n disableCloseCommands = false,\n opened = false,\n onClose = () => {},\n size = 'md',\n className = '',\n showBackdrop = true,\n ...restProps\n}) {\n const modalClasses = [\n 'tyk-modal',\n `tyk-modal--theme-${theme}`,\n opened && 'opened',\n ].concat(className.split(' ')).filter(Boolean).join(' ');\n\n const backdropClasses = [\n 'tyk-modal__backdrop',\n opened && 'opened',\n ].filter(Boolean).join(' ');\n\n const themeIcon = {\n success: 'check',\n warning: 'warning',\n danger: 'delete',\n }[theme];\n\n return (\n <>\n {\n ReactDOM.createPortal(\n \n
    \n
    \n
    \n {theme !== 'none' && (\n
    \n \n
    \n )}\n { children }\n
    \n
    \n
    \n ,\n document.querySelector('body'),\n )\n }\n {showBackdrop && ReactDOM.createPortal(\n \n !disableCloseCommands && onClose()}\n onKeyDown={() => {}}\n type=\"button\"\n aria-label=\"Close\"\n />\n ,\n document.querySelector('body'),\n )}\n \n );\n}\n\nModal.Body = ModalBody;\nModal.Footer = ModalFooter;\n/* eslint-disable-next-line */\nModal.Header = ({ children }) => {\n console.warn('%cModal.Header%c is deprecated.', 'font-weight: bold', '');\n return (\n
    \n { children }\n
    \n );\n};\n/* eslint-disable-next-line */\nModal.Title = ({ children }) => {\n console.warn('%cModal.Title%c is deprecated.', 'font-weight: bold', '');\n return (\n

    \n { children }\n

    \n );\n};\n\nModal.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]),\n className: PropTypes.string,\n /** one of \"success\", \"warning\", \"danger\", \"none\"; default is \"none\" */\n theme: PropTypes.string,\n /** If set on true, the Modal won't close when clicking on the overlay or by pressing ESC key */\n disableCloseCommands: PropTypes.bool,\n /** If true the Modal will be by default opened */\n opened: PropTypes.bool,\n /** Callback method when the Modal is closed */\n onClose: PropTypes.func,\n /** Width of the Moda: md or lg */\n size: PropTypes.string,\n showBackdrop: PropTypes.bool,\n};\n\nexport default Modal;\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Button from '../Button';\nimport Modal from '../Modal';\n\n/**\n * Confirm component can be used to open a dialog () before a specific action\n */\nfunction Confirm(props) {\n const {\n children,\n title,\n description,\n confirmBtnText = 'Confirm',\n cancelBtnText = 'Cancel',\n } = props;\n const [open, setOpen] = useState(false);\n const [callback, setCallback] = useState(null);\n const [cancelCallback, setCancelCallback] = useState(null);\n\n const show = (callbackFunc, cancelCallbackFunc, beforeCallback) => (...args) => {\n if (beforeCallback) {\n beforeCallback(...args);\n }\n setOpen(true);\n setCallback(() => () => callbackFunc(...args));\n if (cancelCallbackFunc) {\n setCancelCallback(() => () => cancelCallbackFunc(...args));\n }\n };\n\n const hide = () => {\n setOpen(false);\n setCallback(null);\n setCancelCallback(null);\n };\n\n const cancel = () => {\n if (cancelCallback) {\n cancelCallback();\n }\n hide();\n };\n\n const confirm = () => {\n callback();\n hide();\n };\n\n return (\n <>\n {children(show)}\n \n \n

    {title}

    \n {description}\n
    \n \n \n {cancelBtnText}\n \n \n {confirmBtnText}\n \n \n
    \n \n );\n}\n\nConfirm.propTypes = {\n /** Sets the text for primary / confirmation button on opened modal */\n confirmBtnText: PropTypes.string,\n /** Sets the text for danger / abort button on opened modal */\n cancelBtnText: PropTypes.string,\n /** Sets the title for the opened modal */\n title: PropTypes.string,\n /** Sets the description for the opened modal */\n description: PropTypes.string,\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.string,\n PropTypes.object,\n PropTypes.node,\n PropTypes.func,\n ]),\n};\n\nexport default Confirm;\n","import React, { useCallback, useEffect, useRef } from 'react';\nimport PropTypes from 'prop-types';\n\nimport debounce from '../../utils/debounce';\n/**\n * FixedWrapper component, keeps all its children in a fix position on the page,\n * even if the scroll position changes\n * i.e: The top navigation bar of a page sits within FixedWrapper component\n */\nfunction FixedWrapper({ children, className, showShadow }) {\n const fixedWrapperRef = useRef(null);\n\n const attachShadow = useCallback(() => {\n const element = fixedWrapperRef.current;\n\n if (!element) {\n return;\n }\n\n if (window.scrollY) {\n element.classList.add('tyk-fixed-wrapper--scrolled');\n } else {\n element.classList.remove('tyk-fixed-wrapper--scrolled');\n }\n }, [fixedWrapperRef.current]);\n\n const debouncedAttachShadow = useCallback(debounce(attachShadow, 100), [attachShadow]);\n\n useEffect(() => {\n if (showShadow) {\n window.addEventListener('scroll', debouncedAttachShadow);\n }\n\n return () => {\n window.removeEventListener('scroll', debouncedAttachShadow);\n };\n }, [debouncedAttachShadow, showShadow]);\n\n return (\n
    \n { children }\n
    \n );\n}\n\nFixedWrapper.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]),\n /** Css classes that can be passed to the FixedWraper element */\n className: PropTypes.string,\n /** If true, bottom shadow on the FixedWrapper component\n * is being displayed when scroll happens\n */\n showShadow: PropTypes.bool,\n};\n\nFixedWrapper.defaultProps = {\n className: '',\n};\n\nexport default FixedWrapper;\n","import React, {\n useEffect, useState, useRef, useCallback,\n} from 'react';\nimport { PropTypes } from 'prop-types';\n\nimport debounce from '../../utils/debounce';\nimport { usePrevious, useComponentSize } from '../../hooks';\nimport Loader from '../Loader';\n\nfunction InfiniteScroller({\n children,\n hasMore,\n initialLoad,\n loadMore,\n pageNumber,\n refChild,\n}) {\n const [showLoader, setShowLoader] = useState(false);\n const containerRef = useRef(null);\n const refChildSize = useComponentSize(refChild);\n\n useEffect(() => {\n if (initialLoad && typeof loadMore === 'function') {\n setShowLoader(false);\n loadMore(pageNumber);\n }\n }, [initialLoad]);\n\n const shouldLoad = useCallback(() => {\n if (!containerRef.current) return false;\n const { clientHeight, scrollTop } = containerRef.current;\n\n return (\n hasMore\n && (\n (clientHeight + Math.round(scrollTop) === refChildSize.height)\n || (clientHeight >= refChildSize.height)\n )\n );\n }, [containerRef, refChildSize.height]);\n\n const loadMoreData = useCallback(() => {\n if (hasMore && typeof loadMore === 'function') {\n loadMore(pageNumber + 1);\n setShowLoader(true);\n } else {\n setShowLoader(false);\n }\n }, [hasMore, pageNumber]);\n\n const prevPageNumber = usePrevious(pageNumber);\n const scrollHandler = useCallback(debounce(() => {\n if (shouldLoad() && prevPageNumber <= pageNumber) {\n loadMoreData();\n }\n }, 200), [loadMoreData, shouldLoad]);\n\n useEffect(() => {\n containerRef.current?.addEventListener('scroll', scrollHandler);\n return () => containerRef.current?.removeEventListener('scroll', scrollHandler);\n }, [containerRef, scrollHandler]);\n\n // if content resets (page number resets) scroll to top\n useEffect(() => {\n if (prevPageNumber > 0 && pageNumber === 0) {\n containerRef.current.scrollTop = 0;\n }\n }, [containerRef, pageNumber]);\n\n const prevRefChildSize = usePrevious(refChildSize);\n useEffect(() => {\n if (\n refChildSize && prevRefChildSize\n && refChildSize.height !== prevRefChildSize.height\n && showLoader === true\n ) {\n setShowLoader(false);\n }\n }, [showLoader, refChildSize.height]);\n\n useEffect(() => {\n if (\n refChild && refChildSize.height < containerRef.current.clientHeight\n && refChildSize.height\n && hasMore\n ) {\n loadMoreData();\n }\n }, [containerRef, refChildSize, refChild, hasMore]);\n\n return (\n
    \n \n { children }\n
    \n {showLoader && (\n \n )}\n
    \n );\n}\n\nInfiniteScroller.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n hasMore: PropTypes.bool,\n initialLoad: PropTypes.bool,\n pageNumber: PropTypes.number,\n loadMore: PropTypes.func,\n refChild: PropTypes.instanceOf(Object),\n};\n\nInfiniteScroller.defaultProps = {\n hasMore: true,\n};\n\nexport default InfiniteScroller;\n","import React, {\n useEffect, useRef, forwardRef,\n} from 'react';\nimport { createPortal } from 'react-dom';\nimport PropTypes from 'prop-types';\nimport InfiniteScroller from '../InfiniteScroller';\n\n/**\n * It displays a container relative to another element.\n * Meant to be used for dropdowns, tooltips, and other similar components.\n */\nfunction FloatingContainer({\n element,\n size = 'auto',\n forceDisplay = 'auto',\n displayAxis = 'auto',\n preferredPosition,\n offset = 0,\n className,\n children,\n infiniteScrollerConfig,\n}, ref) {\n const localRef = useRef(null);\n const floatingContainerRef = ref || localRef;\n const contentWrapperRef = useRef(null);\n\n function determineDisplay() {\n const target = element.current;\n const container = floatingContainerRef.current;\n if (!container) return preferredPosition ?? displayAxis === 'vertical' ? 'bottom' : 'right';\n\n const { left, top } = target.getBoundingClientRect();\n const topSpace = top;\n const bottomSpace = window.innerHeight - top - target.offsetHeight;\n const leftSpace = left;\n const rightSpace = window.innerWidth - left - target.offsetWidth;\n const hasTopSpace = topSpace > container.scrollHeight;\n const hasBottomSpace = bottomSpace > container.scrollHeight;\n const hasLeftSpace = leftSpace > container.offsetWidth;\n const hasRightSpace = rightSpace > container.offsetWidth;\n const positionedVerticallyFitsInViewport = left + target.offsetWidth / 2 - container.offsetWidth / 2 > 0; // eslint-disable-line max-len\n const positionedHorizontallyFitsInViewport = top + target.offsetHeight / 2 - container.scrollHeight / 2 > 0; // eslint-disable-line max-len\n\n if (\n displayAxis === 'vertical'\n || (\n displayAxis === 'auto'\n && (hasTopSpace || hasBottomSpace)\n && positionedVerticallyFitsInViewport\n )\n ) {\n if (preferredPosition === 'top' && hasTopSpace) return 'top';\n if (preferredPosition === 'bottom' && hasBottomSpace) return 'bottom';\n return hasBottomSpace || bottomSpace > topSpace ? 'bottom' : 'top';\n }\n\n if (displayAxis === 'horizontal') {\n if (preferredPosition === 'left' && hasLeftSpace) return 'left';\n if (preferredPosition === 'right' && hasLeftSpace) return 'right';\n return hasRightSpace || rightSpace > leftSpace ? 'right' : 'left';\n }\n\n if (hasTopSpace && positionedVerticallyFitsInViewport) return 'top';\n if (hasBottomSpace && positionedVerticallyFitsInViewport) return 'bottom';\n if (hasRightSpace && positionedHorizontallyFitsInViewport) return 'right';\n if (hasLeftSpace && positionedHorizontallyFitsInViewport) return 'left';\n return preferredPosition ?? 'bottom';\n }\n\n function adjustPosition() {\n const display = forceDisplay !== 'auto' ? forceDisplay : determineDisplay();\n const target = element.current;\n const container = floatingContainerRef.current;\n\n if (!target || !container) return;\n\n const targetPosition = target.getBoundingClientRect();\n\n if (display === 'top') {\n const topPos = targetPosition.top - container.offsetHeight - offset;\n container.style.top = `${topPos}px`;\n container.style.left = (size === 'auto'\n ? `${targetPosition.left + target.offsetWidth / 2 - container.offsetWidth / 2}px`\n : `${targetPosition.left}px`);\n\n if (size === 'matchElement') {\n container.style.width = `${target.offsetWidth}px`;\n } else if (typeof size === 'function') {\n container.style.width = `${size(target.offsetWidth)}px`;\n }\n container.style.maxHeight = `${targetPosition.top - offset}px`;\n }\n\n if (display === 'bottom') {\n container.style.top = `${targetPosition.bottom + offset}px`;\n container.style.left = size === 'auto'\n ? `${targetPosition.left + target.offsetWidth / 2 - container.offsetWidth / 2}px`\n : `${targetPosition.left}px`;\n if (size === 'matchElement') {\n container.style.width = `${target.offsetWidth}px`;\n } else if (typeof size === 'function') {\n container.style.width = `${size(target.offsetWidth)}px`;\n }\n container.style.maxHeight = `${window.innerHeight - targetPosition.bottom - offset}px`;\n }\n\n if (display === 'left') {\n const topPos = targetPosition.top + target.offsetHeight / 2 - container.offsetHeight / 2;\n container.style.top = size === 'auto'\n ? `${topPos}px`\n : `${targetPosition.top}px`;\n container.style.left = `${targetPosition.left - container.offsetWidth - offset}px`;\n if (size === 'matchElement') {\n container.style.height = `${target.offsetHeight}px`;\n } else if (typeof size === 'function') {\n container.style.height = `${size(target.offsetHeight)}px`;\n }\n container.style.maxWidth = `${targetPosition.left - offset}px`;\n }\n\n if (display === 'right') {\n const topPos = targetPosition.top + target.offsetHeight / 2 - container.offsetHeight / 2;\n container.style.top = size === 'auto'\n ? `${topPos}px`\n : `${targetPosition.top}px`;\n container.style.left = `${targetPosition.left + target.offsetWidth + offset}px`;\n if (size === 'matchElement') {\n container.style.height = `${target.offsetHeight}px`;\n } else if (typeof size === 'function') {\n container.style.height = `${size(target.offsetHeight)}px`;\n }\n container.style.maxWidth = `${window.innerWidth - targetPosition.left - target.offsetWidth - offset}px`;\n }\n }\n\n useEffect(() => {\n window.requestAnimationFrame(function schedulePositionUpdate() {\n adjustPosition();\n window.requestAnimationFrame(schedulePositionUpdate);\n });\n }, []);\n\n return createPortal(\n \n \n \n {children}\n
    \n \n
    ,\n document.querySelector('body'),\n );\n}\n\nFloatingContainer.propTypes = {\n /** A DOM element that the floating container will be displayed relative to. */\n element: PropTypes.instanceOf(Object),\n className: PropTypes.string,\n /** The size of the container.\n * If `auto` the size will be determined by its contents.\n * If `matchElement` it will take the width or the height of the element depending\n * on the `displayAxis` prop.\n * It can also be a function that returns a number representing the width\n * or the height in pixels.\n */\n size: PropTypes.oneOfType([\n PropTypes.oneOf(['auto', 'matchElement']),\n PropTypes.func,\n ]),\n /**\n * The distance between the element and the floating container.\n * It can be positive or negative.\n */\n offset: PropTypes.number,\n /**\n * If `auto` the component will try to determine where to display the container relative to the\n * element (top, bottom, left, right).\n * It can also be one of top, bottom, left, right, to force the floating container to always be\n * displayed in that position.\n */\n forceDisplay: PropTypes.oneOf(['auto', 'top', 'bottom', 'left', 'right']),\n /**\n * It can be `auto`, `vertical` or `horizontal`. It specifies the axis where\n * it will be displayed when `forceDisplay` is `auto`.\n */\n displayAxis: PropTypes.oneOf(['auto', 'vertical', 'horizontal']),\n /**\n * If there is space on both sides of the axis preffer this side.\n */\n preferredPosition: PropTypes.oneOf(['top', 'bottom', 'left', 'right']),\n /**\n * Configuration object that will be passed to the infinite scroller component.\n */\n infiniteScrollerConfig: PropTypes.instanceOf(Object),\n};\n\nexport default forwardRef(FloatingContainer);\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport Message from '../Message';\n\nfunction InfoNote({ children }) {\n return (\n
    \n \n { children }\n \n
    \n );\n}\n\nInfoNote.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]),\n};\n\nexport default InfoNote;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nconst ListItem = (props) => {\n const {\n className,\n children,\n } = props;\n\n return (\n
  • \n {children}\n
  • \n );\n};\n\nListItem.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n className: PropTypes.string,\n};\n\nListItem.defaultProps = {\n className: '',\n};\n\nexport default ListItem;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { fromJS } from 'immutable';\nimport ListItem from './js/ListItem';\n\nconst List = (props) => {\n const {\n className,\n children,\n label,\n labelwidth,\n theme,\n style,\n } = props;\n\n const getCssClasses = () => {\n let cssClasses = ['tyk-list'];\n\n if (theme) {\n cssClasses.push(`tyk-list--${theme}`);\n }\n\n if (className) {\n cssClasses = cssClasses.concat(className.split(' '));\n }\n\n return cssClasses.join(' ');\n };\n\n const getListStyle = () => {\n const styleCopy = fromJS(style).toJS();\n if (labelwidth) {\n styleCopy.flexBasis = `calc(100% - ${labelwidth} - 20px)`;\n }\n\n return styleCopy;\n };\n\n return (\n
    \n {\n label !== undefined\n ? (\n \n )\n : null\n }\n
      \n {children}\n
    \n
    \n );\n};\n\nList.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n className: PropTypes.string,\n label: PropTypes.string,\n labelwidth: PropTypes.string,\n theme: PropTypes.string,\n style: PropTypes.instanceOf(Object),\n};\n\nList.defaultProps = {\n theme: 'default',\n style: {},\n};\n\n\nList.Item = ListItem;\n\n\nexport default List;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nfunction NavBar({\n align = 'center',\n children,\n left,\n right,\n title,\n pre,\n subtitle,\n withTabs,\n}) {\n const subtitleContent = subtitle ?

    { subtitle }

    : null;\n return (\n
    \n
    \n {pre && (\n
    {pre}
    \n )}\n {\n title\n ? (\n
    \n

    { title }

    \n { subtitleContent }\n
    \n )\n : subtitleContent\n }\n
    \n {left && (\n
    { left }
    \n )}\n {right && (\n
    { right }
    \n )}\n
    \n
    \n { children }\n
    \n );\n}\n\nNavBar.propTypes = {\n align: PropTypes.string,\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n title: PropTypes.string,\n subtitle: PropTypes.string,\n pre: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n ]),\n left: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n ]),\n right: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n ]),\n withTabs: PropTypes.bool,\n};\n\nexport default NavBar;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nfunction NavigationItem({ children }) {\n return (\n
  • \n {children}\n
  • \n );\n}\n\nNavigationItem.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n};\n\nexport default NavigationItem;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport NavigationItem from './js/NavigationItem';\n\nfunction Navigation({ children }) {\n return (\n
      \n {children}\n
    \n );\n}\n\nNavigation.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n};\n\nNavigation.Item = NavigationItem;\n\nexport default Navigation;\n","import { createContext } from 'react';\n\nexport const PortalContext = createContext();\n","import React, { useCallback } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Collapsible from '../../Collapsible';\nimport { PortalContext } from '../panel-context';\n\nfunction PanelBody({\n children,\n noPadding,\n className,\n ...rest\n}) {\n const getCssClasses = useCallback(\n () => [\n 'tyk-panel__body',\n className,\n noPadding && 'no-padding',\n ].filter(Boolean).join(' '),\n [className, noPadding],\n );\n\n return (\n \n {\n (portalContext) => (\n portalContext.collapsable\n ? (\n \n { children }\n \n )\n : (\n \n { children }\n
    \n )\n )\n }\n \n );\n}\n\nPanelBody.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]),\n noPadding: PropTypes.bool,\n className: PropTypes.string,\n};\n\nexport default PanelBody;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nconst PanelFooter = (props) => {\n const { children } = props;\n return (\n
    \n { children }\n
    \n );\n};\n\nPanelFooter.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]),\n};\n\nexport default PanelFooter;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Icon from '../../Icon';\nimport { PortalContext } from '../panel-context';\n\nexport default class PanelHeader extends Component {\n static propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]).isRequired,\n className: PropTypes.string,\n }\n\n getCssClasses(props) {\n const { className } = this.props;\n let cssClasses = ['tyk-panel__header'];\n\n if (props.collapsable) {\n cssClasses.push('collapsable');\n }\n\n if (className) {\n cssClasses = cssClasses.concat(className.split(' '));\n }\n\n return cssClasses.join(' ');\n }\n\n render() {\n const {\n children,\n } = this.props;\n\n return (\n \n {\n (portalContext) => {\n const HeaderTag = portalContext.theme === 'blank' ? 'h3' : 'div';\n const iconType = portalContext.collapsed ? 'chevron-down' : 'chevron-up';\n\n return (\n \n { children }\n {\n portalContext.collapsable\n ?
    \n : null\n }\n \n );\n }\n }\n
    \n );\n }\n}\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport PanelBody from './js/PanelBody';\nimport PanelFooter from './js/PanelFooter';\nimport PanelHeader from './js/PanelHeader';\n\n\nimport { PortalContext } from './panel-context';\n\n\nconst Panel = (props) => {\n const {\n children,\n className,\n collapsed,\n collapsable,\n theme,\n onToggleCollapse,\n collapsibleIconPosition = 'right',\n } = props;\n const [collapsedState, setCollapsedState] = useState(collapsed || false);\n\n useEffect(() => {\n if (collapsed !== collapsedState) {\n setCollapsedState(collapsed);\n }\n }, [collapsed]);\n\n const getCssClasses = () => {\n let cssClasses = ['tyk-panel'];\n const panelTheme = `tyk-panel--${theme || 'default'}`;\n const collapsbleIconPosition = `tyk-panel__icon-collapse--${collapsibleIconPosition}`;\n\n cssClasses.push(panelTheme);\n cssClasses.push(collapsbleIconPosition);\n\n if (className) {\n cssClasses = cssClasses.concat(className.split(' '));\n }\n\n if (collapsedState) {\n cssClasses.push('tyk-panel--collapsed');\n }\n\n return cssClasses.join(' ');\n };\n\n const handleToggle = () => {\n setCollapsedState(!collapsedState);\n\n if (onToggleCollapse) {\n onToggleCollapse(!collapsedState);\n }\n };\n\n return (\n
    \n \n {\n (typeof children === 'function')\n ? children({\n toggleCollapse: handleToggle,\n })\n : children\n }\n \n
    \n );\n};\n\nPanel.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.func,\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]),\n className: PropTypes.string,\n collapsable: PropTypes.bool,\n collapsibleIconPosition: PropTypes.string,\n collapsed: PropTypes.bool,\n theme: PropTypes.string,\n onToggleCollapse: PropTypes.func,\n};\n\n\nPanel.Body = PanelBody;\nPanel.Footer = PanelFooter;\nPanel.Header = PanelHeader;\n\nexport default Panel;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n/**\n * Pill\n *\n */\nconst Pill = (props) => {\n const {\n children,\n className,\n theme,\n } = props;\n\n const getCssClasses = () => {\n let cssClasses = ['tyk-pill', ...theme.split(' ').map(t => `tyk-pill--${t}`)];\n\n if (className) {\n cssClasses = cssClasses.concat(className);\n }\n\n return cssClasses.join(' ');\n };\n\n return (\n
    \n {children}\n
    \n );\n};\n\nPill.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n /** Css classes that can be passed to the Pill element */\n className: PropTypes.string,\n /** Theme that can be applied to a Pill */\n theme: PropTypes.string,\n};\n\nPill.defaultProps = {\n theme: 'default',\n};\n\nexport default Pill;\n","import { useRef } from 'react';\n\n/**\n * RevealPanelService is a class that manages the resizing of a panel element.\n * It provides methods to set the panel's height, hide and show it, and attach\n * event listeners for resizing.\n */\nclass RevealPanelService {\n #state = null; // Private state for mouse interactions.\n\n #panel = null; // The panel element to be resized.\n\n #gutter = null; // The gutter element used for resizing.\n\n #wrapper = null; // The wrapper element that contains the panel and gutter.\n\n #onHeightChangeCallbacks = []; // Callback function to be executed when the panel is resized.\n\n #onDragStartCallbacks = []; // Callback function to be executed when the panel is resized.\n\n #onDragEndCallbacks = []; // Callback function to be executed when the panel is resized.\n\n #dragStarted = false;\n /**\n * Sets a callback function to be executed when the panel is resized.\n * @param {function} callback - The callback function to be called on panel resize.\n */\n\n on(eventName, listener) {\n let list = null;\n if (eventName === 'onHeightChange') {\n list = this.#onHeightChangeCallbacks;\n } else if (eventName === 'onDragStart') {\n list = this.#onDragStartCallbacks;\n } else if (eventName === 'onDragEnd') {\n list = this.#onDragEndCallbacks;\n }\n\n if (list) {\n this.addListener(list, listener);\n }\n }\n\n off(eventName, listener) {\n let list = null;\n if (eventName === 'onHeightChange') {\n list = this.#onHeightChangeCallbacks;\n } else if (eventName === 'onDragStart') {\n list = this.#onDragStartCallbacks;\n } else if (eventName === 'onDragEnd') {\n list = this.#onDragEndCallbacks;\n }\n\n if (list) {\n this.removeListener(list, listener);\n }\n }\n\n /**\n * Sets the panel, gutter, and wrapper elements to be controlled by this class.\n * @param {HTMLElement} wrapper - The wrapper element containing the panel and gutter.\n * @param {HTMLElement} panel - The panel element to be resized.\n * @param {HTMLElement} gutter - The gutter element used for resizing.\n */\n setRefs(wrapper, panel, gutter) {\n if (this.#panel || this.#gutter || this.#wrapper) {\n this.unbindEvents();\n }\n this.#wrapper = wrapper;\n this.#panel = panel;\n this.#gutter = gutter;\n this.#state = null;\n this.bindEvents();\n }\n\n /**\n * Attaches event listeners for panel resizing.\n */\n bindEvents() {\n this.ensureRefs('bindEvents');\n this.#gutter.addEventListener('mousedown', this.onMouseDown.bind(this));\n document.addEventListener('mousemove', this.onMouseMove.bind(this));\n document.addEventListener('mouseup', this.onMouseUp.bind(this));\n }\n\n /**\n * Gets the current height of the panel.\n * @returns {number} - The height of the panel in pixels.\n */\n getHeight() {\n this.ensureRefs('getHeight');\n const size = this.#panel.getBoundingClientRect();\n return size.height;\n }\n\n /**\n * Handles the mouse down event, initiating the resizing process.\n * @param {MouseEvent} e - The mouse event object.\n */\n onMouseDown(e) {\n this.ensureRefs('onMouseDown');\n this.#state = {\n mouseDown: true,\n initialRect: this.#panel.getBoundingClientRect(),\n initialEvent: e,\n };\n }\n\n /**\n * Handles the mouse move event, adjusting the panel's height during resizing.\n * @param {MouseEvent} e - The mouse event object.\n */\n onMouseMove(e) {\n this.ensureRefs('onMouseMove');\n\n if (!this.#state) {\n return;\n }\n\n const isButtonDown = this.isPrimaryMouseButtonDown(e);\n if (!isButtonDown) {\n this.onMouseUp();\n return;\n }\n\n if (!this.#dragStarted) {\n this.#dragStarted = true;\n this.onDragStart.bind(this)();\n }\n\n const newY = this.#state.initialEvent.y - e.y;\n const finalHeight = Math.ceil(this.#state.initialRect.height + newY);\n this.setHeight(`${finalHeight}px`, 'mousemove');\n }\n\n // eslint-disable-next-line class-methods-use-this\n notifyListeners(list, value) {\n if (list && Array.isArray(list) && list.length) {\n list.forEach((fn) => {\n if (typeof fn === 'function') {\n fn(value);\n }\n });\n }\n }\n\n // eslint-disable-next-line class-methods-use-this\n addListener(list, listener) {\n if (list && Array.isArray(list) && typeof listener === 'function') {\n list.push(listener);\n }\n }\n\n // eslint-disable-next-line class-methods-use-this\n removeListener(list, listener) {\n if (list && Array.isArray(list) && typeof listener === 'function' && list.length) {\n const index = list.indexOf(listener);\n\n if (index > -1) {\n list.splice(index, 1);\n }\n }\n }\n\n onDragEnd() {\n if (this.#dragStarted) {\n this.notifyListeners(this.#onDragEndCallbacks, this.getHeight());\n }\n }\n\n onDragStart() {\n this.notifyListeners(this.#onDragStartCallbacks, this.getHeight());\n }\n\n // eslint-disable-next-line class-methods-use-this\n isPrimaryMouseButtonDown(e) {\n const flags = e.buttons !== undefined ? e.buttons : e.which;\n // eslint-disable-next-line no-bitwise\n const isDown = flags === 1;\n return isDown;\n }\n\n /**\n * Resets the state after the mouse up event, ending the resizing process.\n */\n onMouseUp() {\n this.#state = null;\n this.onDragEnd.bind(this)();\n this.#dragStarted = false;\n }\n\n /**\n * Sets the height of the panel.\n * @param {string} height - The new height value as a CSS string (e.g., \"100px\").\n */\n setHeight(height) {\n let heightVal = height;\n this.ensureRefs('setHeight');\n\n if (typeof heightVal === 'number') {\n heightVal += 'px';\n }\n\n this.#panel.style.height = heightVal;\n\n this.notifyListeners(this.#onHeightChangeCallbacks, this.getHeight());\n }\n\n /**\n * Ensures that the required elements (wrapper, panel, and gutter) are set.\n * Throws an error if they are missing.\n */\n ensureRefs(reason) {\n if (!this.#panel || !this.#gutter || !this.#wrapper) {\n throw new Error(\n `${reason}: Wrapper, panel, and gutter elements are required. Use setRefs method first.`,\n );\n }\n }\n\n /**\n * Checks if the panel is hidden.\n * @returns {boolean} - True if the panel is hidden; false otherwise.\n */\n isHidden() {\n this.ensureRefs('isHidden');\n return this.#wrapper.style.visibility === 'hidden';\n }\n\n /**\n * Hides the panel by setting its visibility to \"hidden\".\n */\n hide() {\n this.ensureRefs('hide');\n this.#wrapper.style.visibility = 'hidden';\n }\n\n /**\n * Shows the panel by setting its visibility to \"visible\".\n */\n show() {\n this.ensureRefs('show');\n this.#wrapper.style.visibility = 'visible';\n }\n\n /**\n * Unbinds the event listeners added for resizing.\n */\n unbindEvents() {\n this.#onHeightChangeCallbacks = [];\n this.#onDragStartCallbacks = [];\n this.#onDragEndCallbacks = [];\n this.#gutter.removeEventListener('mousedown', this.onMouseDown.bind(this));\n document.removeEventListener('mousemove', this.onMouseMove.bind(this));\n document.removeEventListener('mouseup', this.onMouseUp.bind(this));\n }\n\n deinit() {\n this.unbindEvents();\n }\n}\n\nexport const useRevealPanelService = () => {\n const revealPanelServiceRef = useRef(new RevealPanelService());\n return revealPanelServiceRef.current;\n};\n","import React, {\n useEffect,\n useRef,\n useImperativeHandle,\n forwardRef,\n} from 'react';\nimport PropTypes from 'prop-types';\nimport { createPortal } from 'react-dom';\nimport { useRevealPanelService } from './js/RevealPanelService';\n\nfunction RevealPanelHeaderLeft({ children }) {\n // eslint-disable-next-line react/jsx-no-useless-fragment\n return <>{children};\n}\n\nRevealPanelHeaderLeft.propTypes = {\n children: PropTypes.instanceOf({}),\n};\n\nfunction RevealPanelHeaderRight({ children }) {\n // eslint-disable-next-line react/jsx-no-useless-fragment\n return <>{children};\n}\n\nRevealPanelHeaderRight.propTypes = {\n children: PropTypes.instanceOf({}),\n};\n\nconst mergeClasses = (...classNames) => classNames.map((it) => (it || '').trim()).filter(Boolean).join(' ');\n\nconst RevealPanel = forwardRef(({\n children,\n height,\n onHeightChange = null,\n onDragStart = null,\n onDragEnd = null,\n style = null,\n parentSelector = null,\n contentStyle,\n contentClassName,\n gutterClassName,\n wrapperClassName,\n// eslint-disable-next-line consistent-return\n}, ref) => {\n const panelRef = useRef(null);\n const gutterRef = useRef(null);\n const wrapperRef = useRef(null);\n\n const panelService = useRevealPanelService();\n\n useEffect(() => {\n if (!panelRef.current || !gutterRef.current || !wrapperRef.current) {\n return;\n }\n\n if (!panelService) {\n return;\n }\n\n panelService.setRefs(wrapperRef.current, panelRef.current, gutterRef.current);\n panelService.on('onHeightChange', onHeightChange);\n panelService.on('onDragStart', onDragStart);\n panelService.on('onDragEnd', onDragEnd);\n panelService.setHeight(height, 'initialize');\n\n // eslint-disable-next-line consistent-return\n return () => {\n panelService.unbindEvents();\n };\n }, []);\n\n useImperativeHandle(\n ref,\n () => {\n // bind this context\n const bind = (func) => func.bind(panelService);\n\n return {\n getHeight: bind(panelService.getHeight),\n setHeight: bind(panelService.setHeight),\n hide: bind(panelService.hide),\n show: bind(panelService.show),\n isHidden: bind(panelService.isHidden),\n deinit: bind(panelService.deinit),\n on: bind(panelService.on),\n off: bind(panelService.off),\n };\n },\n [],\n );\n\n let headerLeft = null;\n let headerRight = null;\n const contents = [];\n\n React.Children.forEach(children, (child) => {\n if (child && React.isValidElement(child)) {\n if (child.type === RevealPanelHeaderLeft) {\n headerLeft = child;\n } else if (child.type === RevealPanelHeaderRight) {\n headerRight = child;\n } else {\n contents.push(child);\n }\n }\n });\n\n const element = (\n
    \n
    \n
    \n\n
    {headerLeft}
    \n
    \n
    {headerRight}
    \n\n
    \n
    \n {contents}\n
    \n
    \n );\n\n if (parentSelector) {\n return createPortal(element, document.querySelector(parentSelector));\n }\n});\n\nRevealPanel.propTypes = {\n children: PropTypes.instanceOf({}),\n height: PropTypes.string,\n onHeightChange: PropTypes.func,\n onDragStart: PropTypes.func,\n onDragEnd: PropTypes.func,\n parentSelector: PropTypes.string,\n style: PropTypes.instanceOf({}),\n contentStyle: PropTypes.instanceOf({}),\n contentClassName: PropTypes.string,\n gutterClassName: PropTypes.string,\n wrapperClassName: PropTypes.string,\n};\n\nRevealPanel.HeaderLeft = RevealPanelHeaderLeft;\nRevealPanel.HeaderRight = RevealPanelHeaderRight;\n\nexport default RevealPanel;\n","import { createContext } from 'react';\n\nexport const TabsContext = createContext();\n","import { createContext } from 'react';\n\nexport default createContext();\n","import React, { useEffect, useMemo } from 'react';\nimport PropTypes from 'prop-types';\n\nimport TabContext from './TabContext';\nimport { usePrevious } from '../../../hooks';\n\nconst TabContent = (props) => {\n const {\n addTab,\n hideTab,\n updateTab,\n showTab,\n children,\n selectedPath,\n tabData,\n tabsId,\n tabExists,\n path,\n rendered,\n hideTabContent,\n tabs,\n } = props;\n\n useEffect(() => {\n const tempTabData = { ...tabData };\n\n if (!tabExists(path)) {\n addTab(tempTabData, path);\n }\n }, [tabData, path]);\n\n const prevTabData = usePrevious(tabData);\n useEffect(() => {\n if (\n tabExists(path) && tabData?.title\n && (prevTabData?.title !== tabData?.title || prevTabData.selected !== tabData.selected)\n ) {\n const tempTabData = { ...tabData };\n updateTab(tempTabData, path);\n }\n }, [tabData, path, prevTabData, tabs]);\n\n useEffect(() => {\n showTab(path);\n return () => hideTab(path);\n }, []);\n\n const shouldRender = useMemo(() => {\n if (!Object.keys(tabs).length) {\n return false;\n }\n\n if (hideTabContent || tabs[tabData.id].show === false) {\n return false;\n }\n\n if (!rendered) {\n return tabExists(path);\n }\n return selectedPath && selectedPath.indexOf(tabData.id) > -1;\n }, [hideTabContent, rendered, selectedPath, tabData, tabs]);\n\n return (\n (\n shouldRender\n ? (\n
    -1 ? 'block' : 'none' }}>\n \n {children}\n \n
    \n )\n : null\n )\n );\n};\n\nTabContent.propTypes = {\n addTab: PropTypes.func,\n updateTab: PropTypes.func,\n hideTab: PropTypes.func,\n showTab: PropTypes.func,\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n path: PropTypes.instanceOf(Array),\n hideTabContent: PropTypes.bool,\n rendered: PropTypes.bool,\n selectedPath: PropTypes.instanceOf(Array),\n tabExists: PropTypes.func,\n tabsId: PropTypes.string,\n tabData: PropTypes.instanceOf(Object),\n tabs: PropTypes.instanceOf(Object),\n};\n\nexport default TabContent;\n","import React, {\n Fragment, useContext, useEffect, useState,\n} from 'react';\nimport PropTypes from 'prop-types';\nimport { TabsContext } from '../tabs-context';\nimport TabContext from './TabContext';\nimport TabContent from './TabContent';\n\nconst Tab = (props) => {\n const { id } = props;\n const tabsContext = useContext(TabsContext);\n const tabContext = useContext(TabContext);\n const {\n tabExists,\n selectedPath,\n addTab,\n updateTab,\n hideTab,\n showTab,\n rendered,\n hideTabContent,\n tabs,\n } = tabsContext;\n const {\n children,\n } = props;\n const [path, setPath] = useState('');\n\n useEffect(() => {\n let tempPath;\n if (tabContext && path) {\n if (tabContext.tabsId === tabsContext.id) {\n tempPath = tabContext.path.concat([id]);\n } else {\n tempPath = [id];\n }\n } else {\n tempPath = [id];\n }\n setPath(tempPath);\n }, [tabContext]);\n\n if (!path) {\n return null;\n }\n\n return (\n \n \n {children}\n \n \n );\n};\n\nTab.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n id: PropTypes.string,\n};\n\nTab.defaultProps = {};\n\nexport default Tab;\n","\nimport React, {\n useEffect, useState,\n} from 'react';\nimport PropTypes from 'prop-types';\nimport Tab from './js/Tab';\n\nimport Collapsible from '../Collapsible';\nimport Icon from '../Icon';\nimport { TabsContext } from './tabs-context';\n\nconst Tabs = (props) => {\n const {\n children,\n className,\n id,\n onTabChange,\n type,\n hideTabContent,\n } = props;\n const [tabs, setTabs] = useState({});\n const [selectedPath, setSelectedPath] = useState([]);\n const [rendered, setRendered] = useState(false);\n const [initialPath, setInitialPath] = useState(null);\n\n useEffect(() => {\n setSelectedPath(initialPath);\n }, [initialPath]);\n\n const updateTabsList = (tabsState, path, tabData) => {\n let tempTabsState = Object.assign({}, tabsState);\n const tempTabData = Object.assign({}, tabData);\n const tempPath = path.slice(0);\n\n while (tempPath.length > 1) {\n tempTabsState = tempTabsState[tempPath.shift()];\n\n if (!tempTabsState) {\n tempTabsState = {};\n }\n }\n\n tempTabData.tempPath = tempPath;\n tempTabsState[tempPath.shift()] = tempTabData;\n\n return tempTabsState;\n };\n\n const toggleTab = (tabsState, path) => {\n let tempTabsState = Object.assign({}, tabsState);\n const tempPath = path.slice(0);\n\n while (tempPath.length > 1) {\n tempTabsState = tempTabsState[tempPath.shift()];\n }\n\n const key = tempPath.shift();\n if (tempTabsState[key].collapsed === undefined) {\n tempTabsState[key].collapsed = true;\n } else {\n tempTabsState[key].collapsed = !tempTabsState[key].collapsed;\n }\n\n return tempTabsState;\n };\n\n const getCssClasses = () => {\n let cssClasses = ['tyk-tabs'];\n\n cssClasses.push(`tyk-tabs--${type || 'default'}`);\n\n if (className) {\n cssClasses = cssClasses.concat(className.split(' '));\n }\n\n return cssClasses.join(' ');\n };\n\n const setCurrentSelectedPath = (path, tabData) => {\n const tempPath = path.slice(0);\n let tempRendered = true;\n\n if (tabData.collapsible) {\n tempPath.push(Object.keys(tabData.tabs)[0]);\n tempRendered = false;\n }\n\n setTabs((prevTabs) => {\n let tempTabs = Object.assign({}, prevTabs);\n\n tempTabs = toggleTab(tempTabs, path);\n\n return tempTabs;\n });\n setSelectedPath(tempPath);\n setRendered(tempRendered);\n\n if (onTabChange) {\n onTabChange(tabData);\n }\n };\n\n const getTabCssClass = (tabId) => {\n const cssClasses = [];\n\n if (selectedPath && selectedPath.indexOf(tabId) > -1) {\n cssClasses.push('active');\n }\n\n return cssClasses.join(' ');\n };\n\n const genTabs = (currentTabs, path) => {\n if (!currentTabs) {\n return null;\n }\n\n return (\n
      \n {\n Object.keys(currentTabs).map((tabId, index) => {\n const tempPath = path ? path.concat([currentTabs[tabId].id]) : [currentTabs[tabId].id];\n const iconType = currentTabs[tabId].collapsed ? 'chevron-up' : 'chevron-down';\n\n if (currentTabs[tabId].show === false) {\n return null;\n }\n\n return (\n
    • \n \n { currentTabs[tabId].title }\n {\n currentTabs[tabId].collapsible\n ? \n : null\n }\n \n {\n currentTabs[tabId].collapsible\n ? (\n \n {genTabs(currentTabs[tabId].tabs, tempPath)}\n \n )\n : genTabs(currentTabs[tabId].tabs, tempPath)\n }\n
    • \n );\n })\n }\n
    \n );\n };\n\n const addTab = (tabData, path) => {\n setTabs(prevTabs => updateTabsList({ ...prevTabs }, path, tabData));\n\n if (tabData.selected) {\n setInitialPath(path);\n }\n };\n\n const updateTab = (tabData, path) => {\n setTabs((prevTabs) => {\n const tempTabs = { ...prevTabs };\n tempTabs[tabData.id] = tabData;\n return tempTabs;\n });\n\n if (tabData.selected) {\n setCurrentSelectedPath(path, tabData);\n }\n };\n\n const hideTab = (path) => {\n setTabs((prevTabs) => {\n const tempTabs = { ...prevTabs };\n tempTabs[path].show = false;\n\n return tempTabs;\n });\n };\n\n const showTab = (path) => {\n setTabs((prevTabs) => {\n const tempTabs = { ...prevTabs };\n\n tempTabs[path].show = true;\n\n return tempTabs;\n });\n };\n\n const tabExists = (path) => {\n let tempTabs = { ...tabs };\n const tempPath = path.slice(0);\n while (tempPath.length > 1) {\n tempTabs = tempTabs[tempPath.shift()];\n }\n\n const key = tempPath.shift();\n\n return !!(tempTabs && tempTabs[key]);\n };\n\n return (\n
    \n {genTabs(tabs)}\n \n {\n (typeof children === 'function')\n ? children({\n hideTab,\n showTab,\n })\n : children\n }\n \n
    \n );\n};\n\nTabs.propTypes = {\n className: PropTypes.string,\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n hideTabContent: PropTypes.bool,\n id: PropTypes.string,\n onTabChange: PropTypes.func,\n type: PropTypes.string,\n};\n\n\nTabs.Tab = Tab;\n\nexport default Tabs;\n","import React, {\n useCallback, useEffect, useRef, useState,\n} from 'react';\nimport PropTypes from 'prop-types';\n\nimport FloatingContainer from '../FloatingContainer';\nimport Icon from '../Icon';\n\nfunction Tooltip({\n render,\n className,\n children,\n position = 'auto',\n style,\n icon = false,\n closable,\n isOpened = false,\n additionalClickParents = [],\n ...props\n}) {\n const [isActive, setIsActive] = useState(false);\n const wrapperRef = useRef(null);\n const tooltipRef = useRef(null);\n const activeEvents = closable\n ? {\n onClick: () => setIsActive(true),\n }\n : {\n onMouseEnter: () => setIsActive(true),\n onMouseLeave: () => setIsActive(false),\n onFocus: () => setIsActive(true),\n onBlur: () => setIsActive(false),\n };\n\n const handleDocumentClick = useCallback((e) => {\n if ([...additionalClickParents, tooltipRef.current].some((p) => p?.contains?.(e.target))) {\n return;\n }\n setIsActive(false);\n }, [additionalClickParents]);\n\n useEffect(() => {\n document.addEventListener('click', handleDocumentClick, true);\n return () => document.removeEventListener('click', handleDocumentClick, true);\n }, [handleDocumentClick]);\n\n useEffect(() => {\n setIsActive(isOpened);\n }, [isOpened]);\n\n const classes = ['tyk-tooltip', className].filter(Boolean).join(' ');\n return (\n \n {children}\n {isActive && (\n \n
    \n {icon && (\n icon === true ? (\n \n ) : (\n icon\n )\n )}\n
    \n {render}\n
    \n {closable && (\n {\n e.stopPropagation();\n setIsActive(false);\n }}\n />\n )}\n
    \n \n )}\n
    \n );\n}\n\nTooltip.propTypes = {\n children: PropTypes.node.isRequired,\n /** custom styles to apply on hovered element */\n style: PropTypes.instanceOf(Object),\n /** describes where the tooltip should be displayed in relation\n * whith the hovered element: top, bottom, left, right\n */\n position: PropTypes.string,\n /** content of the tooltip, can be a string or a React node element */\n render: PropTypes.oneOfType([\n PropTypes.node,\n PropTypes.string,\n ]),\n /** additional tooltip classes */\n className: PropTypes.string,\n /** if `true` displays the \"question mark\" icon;\n * optionally you can pass a different icon\n */\n icon: PropTypes.oneOfType([\n PropTypes.bool,\n PropTypes.node,\n ]),\n /** if `true` the tooltip is activated on click and an \"x\" is displayed to close it;\n * if `false` the tooltip is activated on hover and it closes when no longer hovering\n */\n closable: PropTypes.bool,\n /** handles the `isActive` state of the tooltip from outside */\n isOpened: PropTypes.bool,\n /** Additional dom elements to check if the document click was inside of them.\n * Useful when you want to open the tooltip after an interaction\n * with an element not inside the tooltip root.\n */\n additionalClickParents: PropTypes.instanceOf(Array),\n};\n\nexport default Tooltip;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Tooltip from '../Tooltip';\n/**\n * TextEllipsis component helps you to hide a part of a text,\n * but displaying it when it's being hovered.\n * The entire text is displayed with the help of Tooltip component\n */\n\nfunction TextEllipsis({ text, limit, position }) {\n return (\n text.length > limit\n ? (\n \n {text.substring(0, limit)}\n ...\n \n )\n : text\n );\n}\n\nTextEllipsis.propTypes = {\n /** Text to be shrinked by TextEllipsis */\n text: PropTypes.string,\n /** Number of characters that TextEllipsis would leave visible */\n limit: PropTypes.number,\n /** tooltip position */\n position: PropTypes.string,\n};\n\nexport default TextEllipsis;\n","import React, { Component, Fragment } from 'react';\nimport PropTypes from 'prop-types';\n\nconst shouldShowPage = (currentNr, pageNr, totalNrOfPages) => {\n const basePageNr = 5;\n const minimumNrOfPages = 10;\n\n if (totalNrOfPages < minimumNrOfPages) {\n return true;\n }\n\n if (\n pageNr < basePageNr\n && currentNr < basePageNr\n ) {\n return true;\n }\n\n if (\n pageNr > totalNrOfPages - basePageNr\n && currentNr > totalNrOfPages - basePageNr\n ) {\n return true;\n }\n\n if (\n currentNr >= pageNr - 2\n && currentNr <= pageNr + 2\n ) {\n return true;\n }\n\n if ([0, 1, totalNrOfPages - 1, totalNrOfPages].indexOf(currentNr) > -1) {\n return true;\n }\n\n return false;\n};\n\nconst getPagesArr = (nrOfPages, selectedPage) => {\n let i; const\n pagesArr = [];\n\n for (i = 0; i <= nrOfPages; i += 1) {\n if (shouldShowPage(i, selectedPage, nrOfPages)) {\n if (i > pagesArr[pagesArr.length - 1]) {\n pagesArr.push('...');\n }\n pagesArr.push(i + 1);\n }\n }\n\n return pagesArr;\n};\n\nexport default class Pagination extends Component {\n static propTypes = {\n value: PropTypes.number,\n totalNrOfPages: PropTypes.number,\n onChange: PropTypes.func,\n };\n\n constructor(props) {\n super(props);\n const {\n value,\n totalNrOfPages,\n } = this.props;\n\n this.state = {\n prevProps: this.props,\n selectedPage: value || 0,\n pagesArray: getPagesArr(totalNrOfPages, value),\n };\n\n this.pageKey = 0;\n }\n\n static getDerivedStateFromProps(nextProps, prevState) {\n if (\n nextProps.value !== prevState.prevProps.value\n || nextProps.totalNrOfPages !== prevState.prevProps.totalNrOfPages\n ) {\n return {\n selectedPage: nextProps.value,\n pagesArray: getPagesArr(nextProps.totalNrOfPages, nextProps.value),\n };\n }\n\n return null;\n }\n\n getPageCssClass(pageNr) {\n const { selectedPage } = this.state;\n const cssClasses = [];\n\n if (selectedPage === pageNr) {\n cssClasses.push('active');\n }\n\n return cssClasses.join(' ');\n }\n\n getPageKey() {\n this.pageKey += 1;\n\n return this.pageKey;\n }\n\n goToPage(pageNr) {\n const { onChange, totalNrOfPages } = this.props;\n this.setState({\n selectedPage: pageNr,\n pagesArray: getPagesArr(totalNrOfPages, pageNr),\n }, () => {\n if (onChange) {\n onChange(pageNr);\n }\n });\n }\n\n render() {\n const { totalNrOfPages } = this.props;\n const { pagesArray, selectedPage } = this.state;\n\n return (\n \n {\n totalNrOfPages\n ? (\n
      \n {\n selectedPage > 0 && totalNrOfPages > 5\n ? (\n
    • \n \n
    • \n )\n : null\n }\n {\n pagesArray.map(pageNr => (\n
    • \n {\n pageNr !== '...'\n ? \n : { pageNr }\n }\n
    • \n ))\n }\n {\n selectedPage < totalNrOfPages && totalNrOfPages > 5\n ? (\n
    • \n \n
    • \n )\n : null\n }\n
    \n )\n : null\n }\n
    \n );\n }\n}\n","import { createContext } from 'react';\n\nexport const tableContext = createContext();\n","import React, { useState, useContext } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { tableContext } from '../tableContext';\nimport Icon from '../../Icon';\n\nexport const HeaderCell = ({ column }) => {\n const { sortable } = column;\n const [sortOrder, setSortOrder] = useState(sortable?.default || 'ASC');\n const { state, sendMessage } = useContext(tableContext);\n return (\n {\n sendMessage('sort', { column, sortOrder });\n setSortOrder(sortOrder === 'ASC' ? 'DESC' : 'ASC');\n } : null}\n className={state.maxHeight ? 'fixed-header' : ''}\n >\n {column.name}\n {column.sortable && (\n \n \n \n )}\n \n );\n};\n\nHeaderCell.propTypes = {\n column: PropTypes.instanceOf(Object),\n};\n","import React, { useContext, useState } from 'react';\nimport { HeaderCell } from './header-cell';\nimport { tableContext } from '../tableContext';\n\nexport const Header = () => {\n const [selectAll, setSelectAll] = useState(false);\n const { state, sendMessage } = useContext(tableContext);\n const { columns, selectable } = state;\n\n const generateHeaders = () => columns.map(column => (\n \n ));\n\n const generateSelectable = () => {\n if (!selectable) {\n return;\n }\n const Component = selectable.type;\n // eslint-disable-next-line consistent-return\n return (\n \n {selectable?.allowSelectAll ? (\n
    \n {\n setSelectAll(!selectAll);\n sendMessage('header.selectAll.click', selectAll);\n }}\n onChange={(v) => {\n sendMessage('header.selectAll.change', v);\n }}\n >\n {selectable.values?.value}\n \n
    \n ) : (\n selectable.name || 'Select'\n )}\n \n );\n };\n\n return (\n \n \n {selectable && selectable.position === 'LEFT' && generateSelectable()}\n {generateHeaders()}\n {selectable && selectable.position === 'RIGHT' && generateSelectable()}\n \n \n );\n};\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\n\n/**\n * - Checkboxes are used when a user needs to select one or more values from a series of options.\n * - They can be also be used as a binary toggle but consider radio instead.\n * - Can be used with Formik respectively (FormikCheckbox)\n */\nexport default class Checkbox extends Component {\n static propTypes = {\n /** Disable a checkbox */\n disabled: PropTypes.bool,\n /** Readonly prop behaves the same as disable on checkboxes */\n readOnly: PropTypes.bool,\n /** Align checkbox with in same line with other elements */\n inline: PropTypes.bool,\n /** Set a theme for checkbox */\n theme: PropTypes.string,\n /** Set an error state for checkbox if boolean will show just icon without message */\n error: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.bool,\n ]),\n /** Adds additional information under the checkbox element */\n note: PropTypes.string,\n input: PropTypes.instanceOf(Object),\n /** Adds a label to checkbox */\n label: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.func,\n PropTypes.string,\n ]),\n /** Set a name for checkbox */\n name: PropTypes.string,\n /** Set initial value for checkbox */\n value: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.bool,\n ]),\n /** Make checkbox checked by default */\n checked: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.bool,\n ]),\n /** Callback function executed on change of checkbox */\n onChange: PropTypes.func,\n /** CSS classes added to the wrapper of the component */\n wrapperClassName: PropTypes.string,\n };\n\n getCssClasses() {\n const {\n inline, disabled, readOnly, theme = '', wrapperClassName = '',\n } = this.props;\n\n const cssClasses = [wrapperClassName];\n\n cssClasses.push('tyk-checkbox');\n\n if (inline) {\n cssClasses.push('tyk-checkbox--inline');\n }\n\n if (theme.trim()) {\n cssClasses.push(...theme.split(' ').map(t => `tyk-checkbox--theme-${t}`));\n }\n\n if (disabled || readOnly) {\n cssClasses.push('tyk-checkbox--is-disabled');\n }\n\n return cssClasses.join(' ');\n }\n\n displayError() {\n const { error } = this.props;\n if (!error) return null;\n\n return (\n

    \n {error}\n

    \n );\n }\n\n displayNote() {\n const { note } = this.props;\n if (!note) return null;\n\n return (\n

    \n {note}\n

    \n );\n }\n\n render() {\n const {\n input, value, label, ...rest\n } = this.props;\n return (\n \n
    \n \n {this.displayNote()}\n {this.displayError()}\n
    \n \n );\n }\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nexport const Cell = ({ col, row }) => {\n if (!row.values[col.id]) {\n return ;\n }\n\n if (col.type === 'string') {\n return (\n // eslint-disable-next-line jsx-a11y/click-events-have-key-events\n \n {row.values[col.id]?.value}\n \n );\n }\n const Component = col.type;\n return (\n \n \n {row.values[col.id].children ? row.values[col.id].children : null}\n
    \n \n );\n};\n\nCell.propTypes = {\n col: PropTypes.instanceOf(Object),\n row: PropTypes.instanceOf(Object),\n index: PropTypes.number,\n};\n","import React, { useContext } from 'react';\nimport PropTypes from 'prop-types';\nimport Checkbox from '../../../form/components/Checkbox';\nimport { Cell } from './cell';\nimport { tableContext } from '../tableContext';\n\nexport const Row = ({ row, index }) => {\n const { state, sendMessage } = useContext(tableContext);\n const { columns, selectable } = state;\n\n const SelectableCheckbox = () => (\n \n sendMessage('row.selected', { index, selected: v })}\n />\n \n );\n\n return (\n \n {selectable && selectable.position === 'LEFT' && SelectableCheckbox()}\n {columns.map(col => (\n \n ))}\n {selectable && selectable.position === 'RIGHT' && SelectableCheckbox()}\n \n );\n};\n\nRow.propTypes = {\n row: PropTypes.instanceOf(Object),\n index: PropTypes.number,\n};\n","import React, { useContext } from 'react';\nimport { tableContext } from '../tableContext';\nimport { Row } from './row';\n\n\nexport const Body = () => {\n const { state } = useContext(tableContext);\n const { rows } = state;\n\n return (\n \n {\n // eslint-disable-next-line react/no-array-index-key\n rows.map((row, i) => )\n }\n \n );\n};\n","import React, { useState, useEffect, useRef } from 'react';\nimport PropTypes from 'prop-types';\nimport Message from '../Message';\nimport Pagination from '../../form/components/Pagination';\nimport Loader from '../Loader';\nimport InfiniteScroller from '../InfiniteScroller';\nimport { Header } from './js/header';\nimport { Body } from './js/body';\nimport { tableContext } from './tableContext';\n\n/**\n * This is tyk's table component used to render a data in a tabular view.\n * See the example configuration object below to understand how to hydrate the table component\n */\n\nfunction Table({\n value, onChange, noDataMessage, loading, infiniteScrolling,\n}) {\n const [state, setState] = useState(null);\n const [onChangeMsg, setOnChangeMsg] = useState('api');\n const itemsListRef = useRef(null);\n const sortRows = (col, sortOrder) => {\n setState({\n ...state,\n sort: {\n order: sortOrder,\n col,\n },\n });\n };\n\n const selectAllRows = (data) => {\n setState({\n ...state,\n rows: state.rows.map((row) => ({ ...row, selected: data })),\n });\n };\n\n const selectRow = (data) => {\n const { index, selected } = data;\n const selectedRow = state.rows[index];\n \n setState({\n ...state,\n rows: [\n ...state.rows.slice(0, index),\n { ...selectedRow, selected },\n ...state.rows.slice(index + 1),\n ],\n });\n };\n\n const setPagination = (data) => {\n setState({\n ...state,\n pagination: {\n ...state.pagination,\n current: data + 1,\n },\n });\n };\n\n const api = {\n getState: () => state,\n setState: (newState) => setState(newState),\n };\n\n const sendMessage = (message, data) => {\n setOnChangeMsg(message);\n if (message === 'sort') {\n sortRows(data.column.id, data.sortOrder);\n }\n\n if (message === 'header.selectAll.click') {\n selectAllRows(data);\n }\n\n if (message === 'header.selectAll.change') {\n selectAllRows(data);\n }\n\n if (message === 'row.selected') {\n selectRow(data);\n }\n\n if (message === 'pagination.change') {\n setPagination(data);\n }\n };\n\n useEffect(() => setState(value), [value]);\n useEffect(() => {\n if (onChange) {\n onChange(onChangeMsg, state, api);\n }\n setOnChangeMsg('api');\n }, [state]);\n\n if (!state) {\n return ;\n }\n\n if (state.rows <= 0) {\n return {noDataMessage || 'No Data Available'};\n }\n\n const getTable = () => (\n \n
    \n \n
    \n );\n\n\n return (\n \n
    \n {\n loading && \n }\n {\n infiniteScrolling && state.pagination\n ? (\n state.pagination.current}\n loadMore={(num) => sendMessage('pagination.change', num)}\n pageNumber={state.pagination.current - 1}\n initialLoad={false}\n >\n { getTable() }\n \n )\n : getTable()\n }\n
    \n {state.pagination && !infiniteScrolling && (\n
    \n sendMessage('pagination.change', num)}\n />\n
    \n )}\n
    \n );\n}\n\nTable.propTypes = {\n /** Configuration object used to render the component */\n value: PropTypes.shape({\n /** Configuration for table columns */\n columns: PropTypes.arrayOf(PropTypes.shape({\n /** Unique id of the column */\n id: PropTypes.string.isRequired,\n /** Name of the column */\n name: PropTypes.string,\n /** Type of column, String by default */\n type: PropTypes.oneOfType([\n /** Just renders cell data of type strings */\n PropTypes.string,\n /** Render cell of elements (eg. Input / Button) */\n PropTypes.element,\n /** Render a custom function/component */\n PropTypes.func,\n ]),\n sortable: PropTypes.oneOfType([\n /** Make Column sortable */\n PropTypes.bool,\n /** Configure sorting behaviour */\n PropTypes.shape({\n /** Set default sorting direction ASC / DESC */\n default: PropTypes.string,\n }),\n ]),\n })),\n /** Configuration for table rows */\n rows: PropTypes.arrayOf(PropTypes.shape({})),\n /** Configuration to make table rows selectable */\n selectable: PropTypes.shape({}),\n /** Renders pagination for table if the object is missing / empty no pagination is rendered. */\n pagination: PropTypes.shape({}),\n /** Sets maximum height for table container. */\n maxHeight: PropTypes.string,\n /** Styling for the table container. */\n styling: PropTypes.shape({\n /** It's recommended to add styles to a class and pass the class in this object */\n className: PropTypes.string,\n }),\n }).isRequired,\n /** Callback executed with message and value when there are changes on table */\n onChange: PropTypes.func,\n /** Renders a component with the given message when `config.rows` is empty */\n noDataMessage: PropTypes.string,\n /** Show placeholder loader */\n loading: PropTypes.bool,\n /** Adds infinite scroller on page and calls `onChange` with `pagination.change` message */\n infiniteScrolling: PropTypes.bool,\n};\n\nTable.defaultProps = {\n loading: false,\n infiniteScrolling: false,\n noDataMessage: 'No Data Available',\n onChange: null,\n};\n\nexport default Table;\n","import React, { PureComponent } from 'react';\nimport PropTypes from 'prop-types';\n\n/**\n * Column component.\n */\nclass Column extends PureComponent {\n static propTypes = {\n /**\n * This property describes how the column element will be aligned vertically\n * within a Row: bottom, center, top\n */\n align: PropTypes.string,\n /** Css classes that can be passed to the column element */\n className: PropTypes.string,\n /**\n * ID that can be passed to the column element\n */\n id: PropTypes.string,\n /**\n * Specifies the size of the column within a Row (values must be between 1 - 12)\n */\n size: PropTypes.string.isRequired,\n /**\n * Specifies the left gap a column can have within a Row (values must be between 1 - 12)\n */\n offset: PropTypes.string,\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.string,\n PropTypes.object,\n PropTypes.node,\n ]),\n };\n\n getCssClasses() {\n const {\n align, className, offset, size,\n } = this.props;\n const colSize = size.split(' ');\n const colOffsets = offset ? offset.split(' ') : [];\n\n let cssClasses = colSize.map(cSize => `tyk-col--${cSize}`);\n const offsets = colOffsets.map(cOffset => `tyk-col--offset-${cOffset}`);\n\n if (align) {\n cssClasses.push(`tyk-col--align-${align}`);\n }\n\n if (className) {\n cssClasses = cssClasses.concat(className.split(' '));\n }\n\n cssClasses.push('tyk-col');\n cssClasses = cssClasses.concat(offsets || []);\n\n return cssClasses.join(' ');\n }\n\n render() {\n const { children, id, ...props } = this.props;\n\n return (\n
    \n { children }\n
    \n );\n }\n}\n\nexport default Column;\n","import React, { PureComponent } from 'react';\nimport PropTypes from 'prop-types';\n\n\n/** Row component which must be always present as a wrapper for Columns */\nexport default class Row extends PureComponent {\n static propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n ]),\n /** Css classes that can be passed to the Row element */\n className: PropTypes.string,\n /** Removes all the spaces between column */\n nogutters: PropTypes.bool,\n }\n\n getCssClasses() {\n const { className, nogutters } = this.props;\n let cssClass = ['tyk-row'];\n\n if (nogutters) {\n cssClass.push('no-gutters');\n cssClass.push('tyk-row--gutterless');\n }\n\n if (className) {\n cssClass = cssClass.concat(className.split(' '));\n }\n\n return cssClass.join(' ');\n }\n\n render() {\n const {\n children,\n nogutters,\n ...rest\n } = this.props;\n\n return (\n
    \n { children }\n
    \n );\n }\n}\n","import { createContext } from 'react';\n\nexport const DropdownContext = createContext();\n","import React, { cloneElement, useCallback } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { DropdownContext } from '../dropdown-context';\nimport Icon from '../../../../components/Icon';\n\nfunction DropdownItem(props) {\n const {\n customdropdownitem,\n children,\n eventKey,\n href,\n target,\n title,\n onClick,\n } = props;\n const dropdownItemCLick = useCallback((dropdownContext, itemProps) => {\n dropdownContext.onSelectItem(eventKey, itemProps);\n\n if (onClick) onClick(eventKey);\n }, []);\n\n return (\n \n {\n (dropdownContext) => (\n dropdownItemCLick(dropdownContext, props)}\n onKeyUp={() => {}}\n >\n {\n customdropdownitem\n ? cloneElement(customdropdownitem, {})\n : (\n \n {\n eventKey\n && dropdownContext.selectedItem === eventKey\n && dropdownContext.showCheckmark\n ? \n : null\n }\n \n {title || children}\n \n \n )\n }\n \n )\n }\n \n );\n}\n\nDropdownItem.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]),\n customdropdownitem: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n ]),\n eventKey: PropTypes.string,\n href: PropTypes.string,\n target: PropTypes.string,\n onClick: PropTypes.func,\n title: PropTypes.string,\n};\n\nexport default DropdownItem;\n","import React, {\n Component, createRef,\n} from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport DropdownItem from './js/DropdownItem';\nimport Button from '../../../components/Button';\nimport { DropdownContext } from './dropdown-context';\n\nclass Dropdown extends Component {\n static isElemInRightView(el, dropdownWidth) {\n const windowWidth = window.innerWidth;\n const offset = el.getBoundingClientRect();\n const elemRight = offset.left + dropdownWidth;\n\n return elemRight <= windowWidth;\n }\n\n static isElemInBottomView(el, dropdownHeight) {\n const windowHeight = window.innerHeight;\n const offset = el.getBoundingClientRect();\n const elHeight = el.clientHeight;\n const elemBottom = offset.top + elHeight + dropdownHeight;\n\n return elemBottom <= windowHeight;\n }\n\n constructor(props) {\n super(props);\n\n const {\n selectedItem,\n open,\n } = this.props;\n\n this.state = {\n opened: open,\n selectedItem: selectedItem || null,\n };\n\n this.dropdownRef = createRef();\n this.dropdownListRef = createRef();\n this.dropdownButtonRef = createRef();\n this.onSelectItem = this.onSelectItem.bind(this);\n this.toggleDropdown = this.toggleDropdown.bind(this);\n this.handleClickOutside = this.handleClickOutside.bind(this);\n }\n\n componentDidMount() {\n document.addEventListener('mousedown', this.handleClickOutside);\n\n if (this.dropdownListRef.current) {\n this.getStyles();\n }\n }\n\n componentDidUpdate(prevProps) {\n const {\n open,\n } = this.props;\n const {\n opened,\n } = this.state;\n\n if (this.dropdownListRef.current) {\n this.getStyles();\n }\n\n if (\n !prevProps.open\n && open === true\n && !opened\n ) {\n this.toggleDropdown();\n }\n\n if (\n prevProps.open\n && open === false\n && opened\n ) {\n this.closeDropdown();\n }\n }\n\n componentWillUnmount() {\n document.removeEventListener('mousedown', this.handleClickOutside);\n }\n\n handleClickOutside(event) {\n if (\n this.dropdownListRef.current && !this.dropdownListRef.current.contains(event.target)\n && this.dropdownRef.current && !this.dropdownRef.current.contains(event.target)\n ) {\n this.closeDropdown();\n }\n }\n\n onSelectItem(itemId, itemProps) {\n const { closeOnSelect, onSelect } = this.props;\n const changes = {\n selectedItem: itemId,\n selectedItemProps: itemProps,\n };\n\n if (closeOnSelect) {\n changes.opened = false;\n }\n\n this.setState(changes);\n\n if (onSelect && typeof onSelect === 'function') {\n onSelect(itemId);\n }\n }\n\n getStyles() {\n const {\n display,\n position,\n offset,\n } = this.props;\n\n const dropdownEl = this.dropdownListRef.current;\n\n if (offset) {\n dropdownEl.style.top = `${offset.top}`;\n dropdownEl.style.left = `${offset.left}`;\n return;\n }\n\n const scrollTop = Math.max(\n document.documentElement.scrollTop,\n document.body.scrollTop,\n window.scrollY,\n );\n const el = this.dropdownRef.current;\n const elHeight = el.clientHeight;\n const dropdownHeight = dropdownEl ? dropdownEl.clientHeight : 0;\n const dropdownWidth = dropdownEl ? dropdownEl.clientWidth : 0;\n const offsetPosition = el.getBoundingClientRect();\n const { left, top } = offsetPosition;\n let customTop = 0;\n let customLeft = left;\n\n // calculate top position, depending on the element position on the page\n if (Dropdown.isElemInBottomView(el, dropdownHeight)) {\n customTop = top + scrollTop + elHeight;\n } else {\n customTop = top + scrollTop - dropdownHeight - 5;\n }\n\n if (Dropdown.isElemInRightView(el, dropdownWidth)) {\n customLeft = left;\n } else {\n customLeft = left + el.clientWidth - dropdownWidth;\n }\n\n if (position !== 'relative') {\n dropdownEl.style.top = `${customTop}px`;\n if (display !== 'block') {\n dropdownEl.style.left = `${customLeft}px`;\n }\n }\n if (display !== 'block') {\n dropdownEl.style.minWidth = `${this.dropdownButtonRef.current.clientWidth}px`;\n }\n }\n\n getWrapperCssClasses() {\n const {\n btnGroup,\n btnGroupSize,\n className,\n btnTheme,\n wrapperClassName = '',\n } = this.props;\n let cssClasses = [wrapperClassName, 'tyk-dropdown'];\n\n cssClasses.push(`theme-${btnTheme || 'default'}`);\n\n if (className) {\n cssClasses = cssClasses.concat(className.split(' '));\n }\n\n if (btnGroup) {\n cssClasses.push('tyk-button-group');\n cssClasses.push(btnGroupSize ? `tyk-button-group--${btnGroupSize}` : 'tyk-button-group--md');\n }\n\n return cssClasses.join(' ');\n }\n\n getCssClasses() {\n const {\n opened,\n } = this.state;\n const {\n hasCustomContent,\n display,\n listclassnames,\n position,\n maxHeight,\n } = this.props;\n let cssClasses = ['tyk-dropdown-menu', 'tyk-dropdown'];\n\n if (maxHeight) {\n cssClasses.push('tyk-dropdown--scrollable');\n }\n\n if (opened) {\n cssClasses.push('opened');\n }\n\n if (listclassnames) {\n cssClasses = cssClasses.concat(listclassnames.split(' '));\n }\n\n if (display) {\n cssClasses.push('tyk-dropdown--block');\n }\n\n if (hasCustomContent) {\n cssClasses.push('tyk-dropdown--custom');\n }\n\n if (position === 'relative') {\n cssClasses.push('tyk-dropdown--relative');\n }\n\n return cssClasses.join(' ');\n }\n\n getBtnTitle() {\n const { btnTitle, stopButtonTextChange } = this.props;\n const { selectedItemProps } = this.state;\n\n if (!stopButtonTextChange && selectedItemProps && selectedItemProps.title) {\n return selectedItemProps.title;\n }\n\n return btnTitle;\n }\n\n closeDropdown() {\n const { onClose } = this.props;\n\n this.setState({\n opened: false,\n }, () => {\n if (onClose) {\n onClose();\n }\n });\n }\n\n toggleDropdown() {\n const {\n opened,\n } = this.state;\n if (opened) {\n this.closeDropdown();\n\n return;\n }\n\n this.setState({\n opened: true,\n });\n }\n\n render() {\n const {\n appendTo,\n btnClassName,\n btnSize,\n customBtnTitle,\n hasCustomContent,\n btnTheme,\n children,\n label,\n showDropdownIcon,\n showTriggerButton,\n showCheckmark,\n disabled = false,\n maxHeight,\n } = this.props;\n const {\n selectedItem,\n opened,\n } = this.state;\n const DropdownWrapperTag = hasCustomContent ? 'div' : 'ul';\n return (\n \n {\n label\n ? (\n \n )\n : null\n }\n {\n showTriggerButton\n ? (\n \n { customBtnTitle || this.getBtnTitle() }\n \n )\n : null\n }\n {\n opened\n ? ReactDOM.createPortal(\n \n {\n opened\n ? (\n \n {\n (typeof children === 'function')\n ? children({\n closeDropdown: this.closeDropdown.bind(this),\n })\n : children\n }\n \n )\n : null\n }\n ,\n document.querySelector(appendTo || 'body'),\n )\n : null\n }\n \n );\n }\n}\n\nDropdown.propTypes = {\n appendTo: PropTypes.string,\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n PropTypes.func,\n ]),\n closeOnSelect: PropTypes.bool,\n btnClassName: PropTypes.string,\n btnSize: PropTypes.string,\n btnGroupSize: PropTypes.string,\n btnTheme: PropTypes.string,\n btnTitle: PropTypes.oneOfType([\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n customBtnTitle: PropTypes.oneOfType([\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n btnGroup: PropTypes.bool,\n className: PropTypes.string,\n display: PropTypes.string,\n disabled: PropTypes.bool,\n hasCustomContent: PropTypes.bool,\n label: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.func,\n PropTypes.string,\n ]),\n listclassnames: PropTypes.string,\n onClose: PropTypes.func,\n onSelect: PropTypes.func,\n open: PropTypes.bool,\n offset: PropTypes.instanceOf(Object),\n position: PropTypes.string,\n selectedItem: PropTypes.string,\n showDropdownIcon: PropTypes.bool,\n stopButtonTextChange: PropTypes.bool,\n showTriggerButton: PropTypes.bool,\n showCheckmark: PropTypes.bool,\n maxHeight: PropTypes.string,\n wrapperClassName: PropTypes.string,\n};\n\nDropdown.defaultProps = {\n closeOnSelect: false,\n showDropdownIcon: true,\n showTriggerButton: true,\n showCheckmark: true,\n open: false,\n};\n\nDropdown.Item = DropdownItem;\n\nexport default Dropdown;\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"react-ace\");","import React, { useCallback } from 'react';\nimport PropTypes from 'prop-types';\n\nimport ace from 'ace-builds/src-noconflict/ace';\nimport AceEditor from 'react-ace';\nimport 'ace-builds/src-noconflict/mode-javascript';\nimport 'ace-builds/src-noconflict/mode-golang';\nimport 'ace-builds/src-noconflict/mode-python';\nimport 'ace-builds/src-noconflict/mode-css';\nimport 'ace-builds/src-noconflict/mode-json';\nimport 'ace-builds/src-noconflict/mode-xml';\nimport 'ace-builds/src-noconflict/mode-jsx';\nimport 'ace-builds/src-noconflict/ext-searchbox';\nimport 'ace-builds/src-noconflict/ext-beautify';\nimport 'ace-builds/src-noconflict/theme-github';\nimport jsonWorker from 'ace-builds/src-noconflict/worker-json';\n\nace.config.setModuleUrl('ace/mode/json_worker', jsonWorker);\n\nfunction CodeEditor(props) {\n const {\n disabled,\n readOnly,\n disableValidation,\n id,\n error,\n label,\n labelwidth,\n note,\n onBlur,\n onChange,\n theme,\n value,\n setOptions,\n wrapperClassName,\n } = props;\n const classes = [\n 'tyk-form-group',\n wrapperClassName,\n ...(theme ? theme.split(' ').map((t) => `tyk-form-group--${t}`) : []),\n labelwidth && 'tyk-form-group--label-has-width',\n error && 'has-error',\n ].filter(Boolean).join(' ');\n\n const finalSetOptions = {\n ...setOptions,\n ...disableValidation && { useWorker: false },\n };\n\n const getCodeEditorError = useCallback(() => (\n error && error !== 'true' && error !== 'false'\n ? (\n

    \n {error}\n

    \n )\n : null\n ), [error]);\n\n const getLabelStyles = useCallback(() => {\n if (labelwidth) return { flexBasis: labelwidth };\n return {};\n }, [labelwidth]);\n\n const getNonLabelWidth = useCallback(() => {\n if (labelwidth) return { flexBasis: `calc(100% - ${labelwidth} - 20px)` };\n return {};\n }, [labelwidth]);\n\n const handleOnChange = useCallback((newValue) => {\n if (onChange) onChange(newValue);\n }, [onChange]);\n\n const handleOnBlur = useCallback(() => {\n if (onBlur) onBlur(value);\n }, [onBlur, value]);\n\n return (\n
    \n {\n label\n ? \n : null\n }\n
    \n {\n // eslint-disable-next-line\n editorInstance.container.style.resize = 'both';\n // mouseup = css resize end\n document.addEventListener('mouseup', () => (\n editorInstance.resize()\n ));\n }}\n setOptions={finalSetOptions}\n />\n {\n note\n ?

    { note }

    \n : null\n }\n { getCodeEditorError() }\n
    \n
    \n );\n}\n\nCodeEditor.propTypes = {\n disabled: PropTypes.bool,\n readOnly: PropTypes.bool,\n disableValidation: PropTypes.bool,\n id: PropTypes.string,\n error: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.bool,\n ]),\n label: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.func,\n PropTypes.string,\n ]),\n labelwidth: PropTypes.string,\n mode: PropTypes.string,\n name: PropTypes.string,\n note: PropTypes.string,\n onBlur: PropTypes.func,\n onChange: PropTypes.func,\n theme: PropTypes.string,\n value: PropTypes.string,\n setOptions: PropTypes.instanceOf(Object),\n wrapperClassName: PropTypes.string,\n};\n\nexport default CodeEditor;\n","import React, { Component, Fragment, createRef } from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\n\nimport Icon from '../../../components/Icon';\nimport Button from '../../../components/Button';\n\nconst getStateSelectedValues = (multiple, tags, value) => {\n if (!value) {\n return (multiple || tags) ? [] : null;\n }\n\n return value;\n};\n\nexport default class Combobox extends Component {\n static closeList() {\n return {\n cursor: -1,\n opened: false,\n };\n }\n\n static openList() {\n return {\n opened: true,\n };\n }\n\n static filterByName(itemValue, inputValue) {\n return itemValue.name.toLowerCase().indexOf(inputValue) > -1;\n }\n\n static propTypes = {\n allowCustomValues: PropTypes.bool,\n CustomListComponent: PropTypes.elementType,\n searchItem: PropTypes.func,\n disabled: PropTypes.bool,\n error: PropTypes.string,\n id: PropTypes.string,\n label: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.func,\n PropTypes.string,\n ]),\n labelwidth: PropTypes.string,\n multiple: PropTypes.bool,\n max: PropTypes.number,\n note: PropTypes.oneOfType([\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n onChange: PropTypes.func,\n placeholder: PropTypes.string,\n tags: PropTypes.bool,\n theme: PropTypes.string,\n value: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.instanceOf(Object),\n PropTypes.instanceOf(Array),\n ]),\n values: PropTypes.instanceOf(Array),\n };\n\n static defaultProps = {\n allowCustomValues: true,\n };\n\n constructor(props) {\n super(props);\n const {\n multiple,\n tags,\n value,\n } = props;\n\n this.state = {\n cursor: -1,\n opened: false,\n width: 50,\n initialValue: value,\n stateSelectedValues: getStateSelectedValues(multiple, tags, value),\n searchText: '',\n tags,\n };\n\n this.comboboxRef = createRef();\n this.valuesListRef = createRef();\n this.inputRef = createRef();\n this.textRef = createRef();\n\n this.focusInput = this.focusInput.bind(this);\n this.onKeyUp = this.onKeyUp.bind(this);\n Combobox.openList = Combobox.openList.bind(this);\n this.handleClickOutside = this.handleClickOutside.bind(this);\n this.handleItemsNavigation = this.handleItemsNavigation.bind(this);\n this.handleComboboxDropdownClick = this.handleComboboxDropdownClick.bind(this);\n this.handleListItemClick = this.handleListItemClick.bind(this);\n this.handlePillRemoveClick = this.handlePillRemoveClick.bind(this);\n this.manageSelectedTags = this.manageSelectedTags.bind(this);\n }\n\n componentDidMount() {\n const { tags } = this.props;\n\n if (tags) {\n this.setInputWidth();\n }\n\n this.bindEvents();\n }\n\n componentWillUnmount() {\n this.unBindEvents();\n }\n\n static getDerivedStateFromProps(nextProps, prevState) {\n if (\n JSON.stringify(nextProps.value) !== JSON.stringify(prevState.initialValue)\n || nextProps.tags !== prevState.tags\n ) {\n return {\n initialValue: nextProps.value,\n stateSelectedValues: getStateSelectedValues(\n nextProps.multiple,\n nextProps.tags,\n nextProps.value,\n ),\n tags: nextProps.tags,\n };\n }\n\n return null;\n }\n\n onKeyUp(e) {\n const { tags, allowCustomValues } = this.props;\n const { cursor, opened } = this.state;\n const filteredValues = this.filterValues();\n let tempState = Object.assign({}, this.getSearchText());\n\n if (tags && e.key !== 'Escape') {\n tempState = Object.assign({}, tempState, this.setInputWidth());\n }\n\n if (e.key === 'Enter') {\n const methodName = (tags) ? 'manageSelectedTags' : 'manageSelectedValues';\n tempState = Object.assign({}, tempState, this[methodName](cursor));\n }\n\n if (allowCustomValues && !e.key === ' ' && tags) {\n tempState = Object.assign({}, tempState, this.manageSelectedTags());\n }\n\n if (\n !opened\n && this.inputRef.current.value\n && filteredValues\n && filteredValues.length\n && e.key !== 'Escape'\n ) {\n tempState = Object.assign({}, tempState, Combobox.openList());\n }\n\n if (e.key === 'Escape' && opened) {\n tempState = Object.assign({}, tempState, Combobox.closeList());\n }\n\n if (opened && filteredValues && !filteredValues.length) {\n tempState = Object.assign({}, tempState, Combobox.closeList());\n }\n\n this.setState(previousState => Object.assign({}, previousState, tempState));\n }\n\n getLabelStyles() {\n const { labelwidth } = this.props;\n const styles = {};\n\n if (labelwidth) {\n styles.flexBasis = labelwidth;\n }\n\n return styles;\n }\n\n getNonLabelWidth() {\n const { labelwidth } = this.props;\n const styles = {};\n\n if (labelwidth) {\n styles.flexBasis = `calc(100% - ${labelwidth} - 20px)`;\n }\n\n return styles;\n }\n\n setInputWidth() {\n return {\n width: 50 + this.textRef.current.offsetWidth,\n };\n }\n\n getSelectedIndex(value) {\n const { stateSelectedValues } = this.state;\n let position = -1;\n\n if (Array.isArray(stateSelectedValues)) {\n stateSelectedValues.forEach((item, index) => {\n if (item.id === value.id) {\n position = index;\n }\n });\n } else if (stateSelectedValues) {\n if (stateSelectedValues.id === value.id) {\n position = 0;\n }\n }\n\n return position;\n }\n\n getSearchText() {\n return {\n searchText: this.inputRef.current.value,\n };\n }\n\n getListItemCssClasses(value, index) {\n const cssClasses = [];\n const {\n cursor,\n } = this.state;\n\n if (cursor === index) {\n cssClasses.push('active');\n }\n\n if (value.disabled) {\n cssClasses.push('disabled');\n }\n\n return cssClasses.join(' ');\n }\n\n getComboboxListCssClass() {\n const { opened } = this.state;\n const { tags, theme } = this.props;\n const themes = theme ? theme.split(' ') : [];\n\n const cssClasses = ['tyk-combobox__list'];\n\n if (opened) {\n cssClasses.push('tyk-combobox__list--opened');\n }\n\n if (tags) {\n cssClasses.push('tyk-combobox__list--has-tags');\n }\n\n if (themes.length) {\n themes.forEach((iTheme) => {\n cssClasses.push(`tyk-form-group--${iTheme}`);\n });\n }\n\n return cssClasses.join(' ');\n }\n\n getCssClasses() {\n const {\n error, disabled, theme, labelwidth,\n } = this.props;\n const cssClasses = ['tyk-form-group', 'tyk-combobox'];\n const themes = theme ? theme.split(' ') : [];\n\n if (error) {\n cssClasses.push('has-error');\n }\n\n if (labelwidth) {\n cssClasses.push('tyk-form-group--label-has-width');\n }\n\n if (themes.length) {\n themes.forEach((iTheme) => {\n cssClasses.push(`tyk-form-group--${iTheme}`);\n });\n }\n\n if (disabled) {\n cssClasses.push('disabled');\n }\n\n return cssClasses.join(' ');\n }\n\n getInputError() {\n const { error } = this.props;\n\n return (error && error !== 'true' && error !== 'false')\n ? (\n \n { error }\n

    \n )\n : null;\n }\n\n getStyles() {\n const { scrollTop } = document.documentElement;\n const el = this.comboboxRef.current;\n const elHeight = el.offsetHeight;\n const elWidth = el.offsetWidth;\n\n const offset = el.getBoundingClientRect();\n const { left } = offset;\n let top = 0;\n\n top = offset.top + scrollTop + elHeight;\n\n return {\n top: `${top - 1}px`,\n left: `${left}px`,\n width: `${elWidth}px`,\n };\n }\n\n getComboboxDisplayData() {\n const { stateSelectedValues } = this.state;\n const { multiple, placeholder, values } = this.props;\n\n if (!stateSelectedValues) {\n return placeholder;\n }\n\n if (stateSelectedValues && Array.isArray(stateSelectedValues) && !stateSelectedValues.length) {\n return placeholder;\n }\n\n if (stateSelectedValues && !Array.isArray(stateSelectedValues) && !stateSelectedValues.id) {\n return placeholder;\n }\n\n if (Array.isArray(stateSelectedValues) && multiple) {\n return stateSelectedValues.reduce((prevValue, value, index) => prevValue + value.name + ((index !== stateSelectedValues.length - 1) ? ', ' : ''), '');\n }\n\n if (\n values\n && values.length\n && !Array.isArray(stateSelectedValues) && !stateSelectedValues.name\n ) {\n return values.filter(value => value.id === stateSelectedValues.id)[0].name;\n }\n\n return stateSelectedValues.name;\n }\n\n manageSelectedTags(index) {\n const { max, allowCustomValues } = this.props;\n const { stateSelectedValues } = this.state;\n const filteredValues = this.filterValues();\n const value = { id: this.inputRef.current.value, name: this.inputRef.current.value };\n\n if (allowCustomValues === false && index === -1) {\n return null;\n }\n\n const tempValue = filteredValues[index] || value;\n const selectedIndex = this.getSelectedIndex(tempValue);\n let selectedValues = {};\n\n this.inputRef.current.value = '';\n\n if (selectedIndex > -1 && this.isInInitialValues(tempValue)) {\n selectedValues = this.removeSelectedValue(selectedIndex);\n } else if (selectedIndex === -1) {\n if (max && stateSelectedValues.length >= max) {\n return selectedValues;\n }\n selectedValues = this.addSelectedValue(tempValue);\n }\n\n return selectedValues;\n }\n\n manageSelectedValues(index) {\n const { stateSelectedValues } = this.state;\n const {\n multiple, onChange, max,\n } = this.props;\n const filteredValues = this.filterValues();\n const tempSelectedValues = filteredValues[index];\n let selectedValues;\n const selectedIndex = this.getSelectedIndex(tempSelectedValues);\n\n if (tempSelectedValues && multiple) {\n if (selectedIndex > -1) {\n selectedValues = this.removeSelectedValue(selectedIndex);\n } else {\n if (max && stateSelectedValues.length >= max) {\n return selectedValues;\n }\n selectedValues = this.addSelectedValue(filteredValues[index]);\n }\n\n // tempSelectedValues = stateSelectedValues;\n } else {\n selectedValues = {\n stateSelectedValues: (selectedIndex === -1) ? tempSelectedValues : { id: null },\n };\n\n if (onChange && typeof onChange === 'function') {\n onChange((selectedIndex === -1) ? tempSelectedValues : null);\n }\n }\n\n return selectedValues;\n }\n\n removeSelectedValue(index) {\n const { stateSelectedValues } = this.state;\n const { onChange } = this.props;\n const tempStateSelectedValues = JSON.parse(JSON.stringify(stateSelectedValues));\n\n tempStateSelectedValues.splice(index, 1);\n\n if (onChange && typeof onChange === 'function') {\n onChange(tempStateSelectedValues.length ? tempStateSelectedValues : null);\n }\n\n return {\n stateSelectedValues: tempStateSelectedValues,\n searchText: '',\n };\n }\n\n addSelectedValue(value) {\n const { stateSelectedValues } = this.state;\n const { onChange } = this.props;\n const tempStateSelectedValues = JSON.parse(JSON.stringify(stateSelectedValues));\n\n tempStateSelectedValues.push(value);\n\n if (onChange && typeof onChange === 'function') {\n onChange(tempStateSelectedValues.length ? tempStateSelectedValues : null);\n }\n\n return {\n stateSelectedValues: tempStateSelectedValues,\n searchText: '',\n };\n }\n\n isInInitialValues(value) {\n const { values } = this.props;\n let ok = false;\n\n values.forEach((item) => {\n if (value.id === item.id) {\n ok = true;\n }\n });\n\n return ok;\n }\n\n filterValues() {\n const { values, searchItem } = this.props;\n\n if (!this.inputRef.current) {\n return values;\n }\n\n const arr = values\n .filter(\n value => (searchItem\n ? searchItem(value, this.inputRef.current.value.toLowerCase())\n : Combobox.filterByName(value, this.inputRef.current.value.toLowerCase())),\n );\n\n return arr;\n }\n\n bindEvents() {\n document.addEventListener('mousedown', this.handleClickOutside);\n }\n\n unBindEvents() {\n document.removeEventListener('mousedown', this.handleClickOutside);\n }\n\n handleItemsNavigation(e) {\n const { tags } = this.props;\n if (['ArrowDown', 'ArrowUp'].indexOf(e.key) === -1) {\n return;\n }\n\n const { cursor } = this.state;\n const filteredValues = this.filterValues();\n let cursorNext;\n\n e.preventDefault();\n\n if (e.key === 'ArrowDown') {\n if (cursor === -1 || cursor === filteredValues.length - 1) {\n cursorNext = 0;\n } else if (cursor < filteredValues.length - 1) {\n cursorNext = cursor + 1;\n }\n }\n\n if (e.key === 'ArrowUp') {\n if (cursor > 0) {\n cursorNext = cursor - 1;\n } else {\n cursorNext = filteredValues.length - 1;\n }\n }\n\n if (this.valuesListRef.current && cursorNext > 4) {\n const scrollTop = (cursorNext - 4) * 38;\n\n this.valuesListRef.current.scrollTop = (!tags) ? 60 + scrollTop : scrollTop;\n } else if (this.valuesListRef.current) {\n this.valuesListRef.current.scrollTop = 0;\n }\n\n this.setState(previousState => ({\n ...previousState,\n opened: true,\n cursor: cursorNext,\n }));\n }\n\n handleListItemClick(index) {\n // eslint-disable-next-line react/destructuring-assignment\n const clickedValue = this.props.values[index];\n if (clickedValue.disabled) return;\n\n const { multiple, tags } = this.props;\n\n const methodName = (tags) ? 'manageSelectedTags' : 'manageSelectedValues';\n const tempState = Object.assign({}, this.state, this[methodName](index));\n\n this.setState((previousState) => {\n if (!multiple && !tags) {\n tempState.opened = false;\n }\n\n return Object.assign({}, previousState, tempState);\n });\n }\n\n handlePillRemoveClick(index) {\n const { disabled } = this.props;\n\n if (disabled) {\n return;\n }\n\n const tempState = this.removeSelectedValue(index);\n\n this.setState(previousState => Object.assign({}, previousState, tempState));\n }\n\n handleClickOutside(event) {\n if (\n this.valuesListRef.current && !this.valuesListRef.current.contains(event.target)\n && this.comboboxRef.current && !this.comboboxRef.current.contains(event.target)\n ) {\n this.setState(previousState => Object.assign({}, previousState, Combobox.closeList()));\n }\n }\n\n handleComboboxDropdownClick() {\n const { disabled } = this.props;\n\n if (disabled) {\n return;\n }\n\n this.setState(previousState => Object.assign({}, previousState, Combobox.openList()));\n }\n\n reset() {\n const { multiple, tags, value } = this.props;\n\n this.setState({\n stateSelectedValues: getStateSelectedValues(multiple, tags, value),\n });\n }\n\n focusInput() {\n if (this.inputRef.current) {\n this.inputRef.current.focus();\n }\n }\n\n render() {\n const {\n CustomListComponent,\n disabled,\n id,\n label,\n note,\n tags,\n max,\n placeholder,\n } = this.props;\n const {\n width, opened, searchText, stateSelectedValues,\n } = this.state;\n\n const filteredValues = this.filterValues();\n\n return (\n \n
    \n {\n label\n ? \n : null\n }\n \n {}}\n ref={this.comboboxRef}\n >\n {\n tags\n ? (\n \n {\n (stateSelectedValues || []).map((value, index) => (\n
  • \n \n { value.name }\n
  • \n ))\n }\n \n {(max === undefined || stateSelectedValues?.length < max) && (\n <>\n {\n if (e.key === 'Enter') {\n e.preventDefault();\n }\n }}\n onKeyUp={this.onKeyUp}\n onKeyDown={this.handleItemsNavigation}\n placeholder={(!stateSelectedValues || !stateSelectedValues.length) ? placeholder : ''}\n ref={this.inputRef}\n style={{\n width: (!stateSelectedValues || !stateSelectedValues.length) ? '100%' : `${width}px`,\n }}\n />\n \n { searchText }\n \n \n )}\n {\n filteredValues.length\n ? (\n \n )\n : null\n }\n \n
    \n )\n : (\n {}}\n >\n { this.getComboboxDisplayData() }\n \n \n )\n }\n \n {\n note\n ?

    { note }

    \n : null\n }\n { this.getInputError() }\n
    \n \n {\n // eslint-disable-next-line no-nested-ternary\n !CustomListComponent\n ? opened && filteredValues.length\n ? ReactDOM.createPortal(\n \n {\n !tags\n ? (\n
  • \n \n
  • \n )\n : null\n }\n {\n filteredValues\n .map((value, index) => (\n {}}\n key={value.id}\n >\n {\n (this.getSelectedIndex(value) > -1)\n ? \n : null\n }\n \n {' '}\n { value.name }\n \n \n ))\n }\n ,\n document.querySelector('body'),\n )\n : null\n : (\n \n )\n }\n
    \n );\n }\n}\n","import React, { useState, useRef, useEffect } from 'react';\nimport Icon from '../../../../components/Icon';\nimport Pill from '../../../../components/Pill';\n\nfunction Value(props) {\n const {\n value,\n max,\n tags,\n tagSeparators,\n addTagOnBlur,\n placeholder,\n disabled,\n renderValue,\n valueOverflow,\n focus,\n onMessage: sendMessage,\n readOnly,\n } = props;\n const INPUT_MIN_WIDTH = 60;\n const inputRef = useRef(null);\n const dummyElementRef = useRef(null);\n const [inputValue, setInputValue] = useState('');\n const [inputWidth, setInputWidth] = useState(`${INPUT_MIN_WIDTH + 10}px`);\n\n function entryFieldOnChange(val) {\n if (tagSeparators.some(ts => val.slice(-1) === ts)) return;\n const dummy = dummyElementRef.current;\n dummy.innerHTML = val;\n setInputWidth(`${Math.max(dummy.clientWidth, INPUT_MIN_WIDTH) + 10}px`);\n setInputValue(val);\n sendMessage('tag.input.change', val);\n }\n\n function entryFieldOnKeyDown(key, val) {\n if (!tags) return;\n if (val === '' && key === 'Backspace' && value.length) {\n sendMessage('tag.remove', value[value.length - 1].id);\n return;\n }\n if (key === 'Enter') {\n sendMessage('tag.input.enter', val);\n entryFieldOnChange('');\n return;\n }\n if (key === 'ArrowUp') {\n sendMessage('tag.input.arrowUp');\n return;\n }\n if (key === 'ArrowDown') {\n sendMessage('tag.input.arrowDown');\n return;\n }\n if (key === 'Escape') {\n sendMessage('tag.input.escape');\n return;\n }\n if (tagSeparators.includes(key)) {\n sendMessage('tag.add', val);\n entryFieldOnChange('');\n }\n }\n\n function triggerAction() {\n sendMessage('text-value.click');\n }\n\n function textValue(val, isPlaceholder = false) {\n if (readOnly) return val || '-';\n\n const classes = [\n 'tyk-combobox2__text-value',\n `overflow-${valueOverflow}`,\n isPlaceholder && 'is-placeholder',\n ].filter(Boolean).join(' ');\n return (\n \n {val}\n \n );\n }\n\n function renderCustomValue(v) {\n const config = {\n tags,\n tagSeparators,\n placeholder,\n disabled,\n renderValue,\n sendMessage,\n };\n return renderValue(v, config);\n }\n\n function renderTag(v) {\n if (renderValue) return renderCustomValue(v);\n\n return (\n \n {\n e.stopPropagation();\n sendMessage('tag.remove', v.id);\n }}\n >\n \n \n { v.name }\n \n );\n }\n\n function getTags() {\n return (\n <>\n {value.map(renderTag)}\n {value.length < max && (\n <>\n entryFieldOnChange(e.target.value)}\n onKeyDown={(e) => {\n if (e.key === 'Enter') e.preventDefault();\n entryFieldOnKeyDown(e.key, e.target.value);\n }}\n onFocus={() => sendMessage('tag.input.focus')}\n onBlur={(e) => {\n sendMessage('tag.input.blur', e.target.value);\n if (addTagOnBlur) entryFieldOnChange('');\n }}\n />\n \n \n )}\n \n );\n }\n\n useEffect(() => {\n if (focus && inputRef.current) inputRef.current.focus();\n }, [focus]);\n\n if (readOnly) {\n return
    {textValue(value.map(v => v.name).join(', '))}
    ;\n }\n\n if (tags) return getTags();\n if (renderValue) {\n return value.length === 0 ? textValue(placeholder, true) : value.map(renderCustomValue);\n }\n return value.length === 0\n ? textValue(placeholder, true)\n : textValue(value.map(v => v.name).join(', '));\n}\n\nexport default Value;\n","import React, { useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport Icon from '../../../../components/Icon';\n\nfunction List(props) {\n const {\n listRef,\n tags,\n values,\n searchValue,\n activeItem,\n onMessage: sendMessage,\n renderListItem,\n selectAll,\n showSearch,\n } = props;\n\n useEffect(() => {\n if (!listRef.current) return;\n const activeElement = listRef.current.querySelector('.active');\n if (activeElement) activeElement.scrollIntoView({ block: 'end' });\n }, [activeItem]);\n\n function renderItem(item) {\n if (renderListItem) {\n return renderListItem(item, {\n tags, searchValue, sendMessage, activeItem,\n });\n }\n\n return (\n !item.disabled && sendMessage('value.select', { item })}\n onKeyPress={() => {}}\n >\n {item.selected && }\n {item.name}\n \n );\n }\n\n function renderSelectAllOption() {\n const isAllSelected = values.every(v => v.selected);\n const isNoneSelected = values.every(v => !v.selected);\n const label = selectAll?.label ?? 'Select All';\n const mode = selectAll?.mode ?? 'select';\n const show = selectAll?.show ?? 'always';\n const render = selectAll?.render;\n\n const shouldRenderOption = show === 'always' || (mode === 'select' ? !isAllSelected : !isNoneSelected);\n if (!shouldRenderOption) return null;\n\n if (render) {\n return render({\n label,\n mode,\n show,\n isAllSelected,\n isNoneSelected,\n }, sendMessage);\n }\n return (\n sendMessage('value.select-all', mode === 'select' ? !isAllSelected : isNoneSelected)}\n onKeyDown={() => {}}\n >\n {(mode === 'select' ? isAllSelected : isNoneSelected) && }\n {label}\n \n );\n }\n\n return (\n <>\n {!tags && showSearch && (\n
    \n sendMessage('search.change', e.target.value)}\n onKeyDown={(e) => {\n if (e.key === 'Escape') sendMessage('search.escape');\n if (e.key === 'ArrowUp') sendMessage('search.arrowUp');\n if (e.key === 'ArrowDown') sendMessage('search.arrowDown');\n if (e.key === 'Enter') sendMessage('search.enter');\n }}\n />\n
    \n )}\n {values.length > 0 && (\n
      \n {Boolean(selectAll) && (\n renderSelectAllOption()\n )}\n {values.map(renderItem)}\n
    \n )}\n \n );\n}\n\nList.propTypes = {\n listRef: PropTypes.instanceOf(Object),\n tags: PropTypes.bool,\n values: PropTypes.instanceOf(Array),\n searchValue: PropTypes.string,\n activeItem: PropTypes.instanceOf(Object),\n onMessage: PropTypes.func,\n renderListItem: PropTypes.func,\n selectAll: PropTypes.oneOfType([\n PropTypes.bool,\n PropTypes.shape({\n label: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.func,\n PropTypes.string,\n ]),\n mode: PropTypes.oneOf(['select', 'unselect']),\n show: PropTypes.oneOf(['always', 'notSameState']),\n render: PropTypes.func,\n }),\n ]),\n showSearch: PropTypes.bool,\n};\n\nexport default List;\n","import React, { useState, useRef, useEffect } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Icon from '../../../components/Icon';\nimport FloatingContainer from '../../../components/FloatingContainer';\n\nimport Value from './js/Value';\nimport List from './js/List';\n\nfunction normalizeValue(value, values) {\n let v = value;\n if (typeof value === 'string') v = { id: value, name: value };\n else if (!value.hasOwnProperty('name')) v = { ...value, name: value.id }; // eslint-disable-line no-prototype-builtins\n if (!values) return v;\n const existingVal = values.find((ev) => ev.id === v.id);\n return existingVal ? { ...v, ...existingVal } : v;\n}\n\nfunction getValueFromProp(value, values) {\n if (!value) return [];\n if (Array.isArray(value)) return value.map((v) => normalizeValue(v, values));\n return [normalizeValue(value, values)];\n}\n\n/**\n * Dropdown-like component that can display selected values as regular text,\n * tags, or in a custom way.\n * You can select values from a list or type in new ones.\n */\nfunction Combobox2({\n value: propValue,\n values: propValues = [],\n valueOverflow = 'single',\n label = '',\n labelwidth,\n tags = false,\n tagSeparators = [' ', 'Enter'],\n addTagOnBlur = false,\n max: maxProp,\n multiple = false,\n placeholder = '',\n theme,\n note = '',\n error = '',\n disabled = false,\n readOnly = false,\n allowCustomValues = true,\n searchItem: matchItemFn,\n renderValue,\n renderListItem,\n renderList: renderListProp,\n CustomListComponent,\n onBeforeChange = () => true,\n onChange = () => {},\n floatingContainerConfig,\n expandMode,\n infiniteScrollerConfig,\n displayDropdownTrigger = true,\n selectAll,\n closeOnSelect,\n showSearch = false,\n required = false,\n validateOnChange = () => {},\n wrapperClassName = '',\n ...restProps\n}) {\n const max = multiple ? Infinity : maxProp || (tags ? Infinity : 1);\n const renderList = CustomListComponent\n ? (values, { sendMessage }) => (\n sendMessage('value.select', { item: values[index] })}\n getListItemCssClasses={() => {}}\n />\n )\n : renderListProp;\n\n const rootRef = useRef(null);\n const comboboxControlRef = useRef(null);\n const dropdownRef = useRef(null);\n const listRef = useRef(null);\n\n const [value, setValue] = useState(getValueFromProp(propValue, propValues));\n const [values, setValues] = useState(propValues.map((v) => normalizeValue(v)));\n const [searchValue, setSearchValue] = useState('');\n const [activeItem, setActiveItem] = useState(null);\n const [isOpened, setIsOpened] = useState(false);\n const [valuesExpanded, setValuesExpanded] = useState(false);\n const [localValidationError, setLocalValidationError] = useState('');\n\n function getThemeClasses() {\n const themes = theme ? theme.split(' ') : [];\n return themes.map((iTheme) => `tyk-form-group--${iTheme}`);\n }\n\n function getCssClasses() {\n return [\n wrapperClassName,\n 'tyk-form-group',\n 'tyk-combobox2',\n ...getThemeClasses(),\n (error || localValidationError) && 'has-error',\n labelwidth && 'tyk-form-group--label-has-width',\n disabled && 'disabled',\n expandMode && 'is-expand-mode',\n ].filter(Boolean).join(' ');\n }\n\n function getFilteredValues() {\n const defaultFn = (v, s) => v?.name?.toLowerCase()?.includes(s);\n const fn = matchItemFn || defaultFn;\n const filteredValues = values.filter((v) => fn(v, searchValue.toLowerCase()));\n return filteredValues;\n }\n\n function openDropdown() {\n setIsOpened(true);\n }\n\n function closeDropdown() {\n setIsOpened(false);\n if (!tags) updateSearchValue('');\n setActiveItem(null);\n }\n\n function updateSearchValue(newSearchValue) {\n setSearchValue(newSearchValue);\n if (activeItem && getFilteredValues().every((fv) => fv.id !== activeItem.id)) {\n setActiveItem(null);\n }\n if (newSearchValue && !isOpened) openDropdown();\n }\n\n function isValidValue(newValues, lastValue) {\n const localError = validateOnChange(newValues, lastValue);\n setLocalValidationError(localError);\n return localError === undefined;\n }\n\n function updateValue(newValues) {\n setValue(newValues);\n onChange(max === 1 && !tags ? (newValues[0] || null) : newValues);\n }\n\n function addTag(val) {\n if (!val) return;\n if (value.length >= max) return;\n if (value.some(({ name }) => name === val)) return;\n\n const listValueIndex = values.findIndex((lv) => lv.name === val);\n let newValue;\n let finalValue = [...value];\n let selectedValues;\n\n if (listValueIndex === -1) {\n if (allowCustomValues) {\n newValue = { id: val, name: val };\n finalValue = [...value, newValue];\n }\n } else {\n selectedValues = [\n ...values.slice(0, listValueIndex),\n { ...values[listValueIndex], selected: true },\n ...values.slice(listValueIndex + 1),\n ];\n newValue = values[listValueIndex];\n finalValue = [...value, values[listValueIndex]];\n }\n\n if (isValidValue(finalValue, newValue) && onBeforeChange(value, finalValue)) {\n if (selectedValues) {\n setValues(selectedValues);\n }\n updateValue(finalValue);\n }\n }\n\n function removeTag(id) {\n if (required && max === 1) return;\n\n const listValueIndex = values.findIndex((lv) => lv.id === id);\n const newValue = value.filter((v) => v.id !== id);\n\n if (!onBeforeChange(value, newValue)) return;\n\n if (listValueIndex !== -1) {\n setValues([\n ...values.slice(0, listValueIndex),\n { ...values[listValueIndex], selected: false },\n ...values.slice(listValueIndex + 1),\n ]);\n }\n updateValue(newValue);\n }\n\n function selectValue({ id }) {\n const val = values.find((v) => v.id === id);\n let finalValue = value;\n let selectedValues = values;\n\n if (val.selected) {\n if (!required || max !== 1) {\n finalValue = value.filter((v) => v.id !== val.id);\n selectedValues = values.map((v) => (v.id === val.id ? { ...v, selected: false } : v));\n }\n } else if (value.length < max) {\n finalValue = [...value, val];\n selectedValues = values.map((v) => (v.id === val.id ? { ...v, selected: true } : v));\n } else if (max === 1) {\n finalValue = [val];\n selectedValues = values.map((v) => ({ ...v, selected: v.id === val.id }));\n }\n\n if (isValidValue(finalValue, val) && onBeforeChange(value, finalValue)) {\n updateValue(finalValue);\n setValues(selectedValues);\n }\n\n if (max === 1 || closeOnSelect) {\n closeDropdown();\n }\n }\n\n function selectAllValues(selected) {\n if (values.length > max) return;\n const newValue = selected ? [...values] : [];\n\n if (!onBeforeChange(value, newValue)) return;\n\n updateValue(newValue);\n setValues(values.map((v) => ({ ...v, selected })));\n if (closeOnSelect) closeDropdown();\n }\n\n function moveUpActiveItem() {\n const visibleItems = getFilteredValues().filter((v) => !v.disabled);\n if (visibleItems.length === 0) return;\n if (activeItem === null || visibleItems.length === 1) {\n setActiveItem(visibleItems[visibleItems.length - 1]);\n return;\n }\n const activeIndex = visibleItems.findIndex((v) => v.id === activeItem.id);\n setActiveItem(visibleItems[activeIndex > 0 ? activeIndex - 1 : visibleItems.length - 1]);\n }\n\n function moveDownActiveItem() {\n const visibleItems = getFilteredValues().filter((v) => !v.disabled);\n if (visibleItems.length === 0) return;\n if (activeItem === null || visibleItems.length === 1) {\n setActiveItem(visibleItems[0]);\n return;\n }\n const activeIndex = visibleItems.findIndex((v) => v.id === activeItem.id);\n setActiveItem(visibleItems[activeIndex < visibleItems.length - 1 ? activeIndex + 1 : 0]);\n }\n\n function executeTriggerAction() {\n if (expandMode) {\n setValuesExpanded(!valuesExpanded);\n } else {\n openDropdown();\n }\n }\n\n function handleDocumentClick(e) {\n const isClickInside = (rootRef.current && rootRef.current.contains(e.target))\n || (dropdownRef.current && dropdownRef.current.contains(e.target));\n if (!isClickInside) {\n closeDropdown();\n }\n }\n\n function onClickCapture(e) {\n if (!disabled) return;\n if (!expandMode) {\n e.stopPropagation();\n return;\n }\n\n const triggerElement = rootRef.current.querySelector('.tyk-combobox2__values-container-trigger');\n if (!triggerElement) return;\n\n const isClickOnTrigger = triggerElement === e.target || triggerElement.contains(e.target);\n if (!isClickOnTrigger) e.stopPropagation();\n }\n\n function onTagMessage(message, data) {\n if (message === 'add') {\n addTag(data);\n updateSearchValue('');\n }\n\n if (message === 'remove') removeTag(data);\n\n if (message === 'input.change') updateSearchValue(data);\n\n if (message === 'input.enter') {\n if (activeItem) {\n selectValue(activeItem);\n } else if (tagSeparators.includes('Enter')) {\n addTag(data);\n updateSearchValue('');\n }\n }\n\n if (message === 'input.arrowUp') {\n openDropdown();\n moveUpActiveItem();\n }\n\n if (message === 'input.arrowDown') {\n openDropdown();\n moveDownActiveItem();\n }\n\n if (message === 'input.escape') closeDropdown();\n\n if (message === 'input.blur' && addTagOnBlur) {\n addTag(data);\n updateSearchValue('');\n }\n\n if (message === 'input.focus') {\n openDropdown();\n }\n }\n\n function onMessage(message, data) {\n if (message.startsWith('tag.')) onTagMessage(message.slice(4), data);\n\n if (message === 'value.select') selectValue(data.item);\n\n if (message === 'value.select-all') selectAllValues(data);\n\n if (message === 'text-value.click') openDropdown();\n\n if (message === 'search.change') updateSearchValue(data);\n\n if (message === 'search.escape') closeDropdown();\n\n if (message === 'search.arrowUp') moveUpActiveItem();\n\n if (message === 'search.arrowDown') moveDownActiveItem();\n\n if (message === 'search.enter') {\n if (activeItem) selectValue(activeItem);\n }\n }\n\n useEffect(() => {\n window.addEventListener('click', handleDocumentClick, true);\n return () => window.removeEventListener('click', handleDocumentClick, true);\n }, []);\n\n useEffect(() => {\n if (propValues.length) {\n const newValues = propValues.map((v) => ({\n ...normalizeValue(v),\n selected: value.some((sv) => sv.id === v.id),\n }));\n setValues(newValues);\n setValue((val) => val.map((v) => newValues.find((nv) => nv.id === v.id) || v));\n } else if (values.length) {\n setValues([]);\n }\n }, [propValues]);\n\n useEffect(() => {\n const newValue = getValueFromProp(propValue, values);\n setValue(newValue);\n setValues((vals) => vals.map((v) => ({\n ...normalizeValue(v),\n selected: newValue.some((nv) => nv.id === v.id),\n })));\n }, [propValue]);\n\n useEffect(() => {\n if (!expandMode) return () => {};\n\n const valuesElement = comboboxControlRef.current.querySelector('.tyk-combobox2__current-values');\n const updateScroll = () => {\n valuesElement.scrollTop = valuesElement.scrollHeight;\n };\n /* eslint-disable-next-line no-undef */\n const mobserver = new MutationObserver(updateScroll);\n const robserver = new ResizeObserver(updateScroll);\n\n mobserver.observe(valuesElement, { attributes: true, childList: true, subtree: true });\n robserver.observe(valuesElement);\n\n return () => {\n mobserver.disconnect();\n robserver.disconnect();\n };\n });\n\n const filteredValues = getFilteredValues();\n const currentValuesClasses = [\n 'tyk-combobox2__current-values',\n expandMode && 'expand-mode',\n `tyk-combobox2__current-values--${valuesExpanded ? 'expanded' : 'collapsed'}`,\n ].join(' ');\n return (\n \n {label && (\n \n )}\n {!readOnly && (\n \n
    \n \n \n
    \n {displayDropdownTrigger && (\n \n {expandMode\n ? (\n \n )\n : (\n \n )}\n \n )}\n \n {isOpened && (!tags || filteredValues.length > 0) && (\n \n {renderList ? (\n renderList(filteredValues, {\n tags,\n searchValue,\n activeItem,\n listRef,\n sendMessage: onMessage,\n })\n ) : (\n \n )}\n \n )}\n {note && (\n

    {note}

    \n )}\n {((error && error !== 'true' && error !== 'false') || Boolean(localValidationError)) && (\n

    {error || localValidationError}

    \n )}\n \n )}\n {readOnly && (\n
    \n \n
    \n )}\n \n );\n}\n\nCombobox2.propTypes = {\n /** If `true` it allows entering values that are not in the list. */\n allowCustomValues: PropTypes.bool,\n /** Alias for `renderList`\n * used for backwards compatibility with the old Combobox component. */\n CustomListComponent: PropTypes.elementType,\n /** A function used for filtering elements displayed in the list when typing in. */\n searchItem: PropTypes.func,\n /** A custom component that will be used to display a value. */\n renderValue: PropTypes.func,\n /** A custom component that will be used to display an item in the dropdown list. */\n renderListItem: PropTypes.func,\n /** A custom component that will be used to display the entire content of the dropdown. */\n renderList: PropTypes.func,\n disabled: PropTypes.bool,\n /** hides the UI form element and displayes just the value as text */\n readOnly: PropTypes.bool,\n error: PropTypes.string,\n label: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.func,\n PropTypes.string,\n ]),\n labelwidth: PropTypes.string,\n /** The maximum number of values that can be selected/added. */\n max: PropTypes.number,\n /** Shorthand for max=Infinity */\n multiple: PropTypes.bool,\n note: PropTypes.oneOfType([\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n /**\n * Callback called before changing the value of the component.\n * The value change will succeed only if the callback's return value is truthy.\n * The callback is called with two arguments: 1) the previous value, 2) the next value */\n onBeforeChange: PropTypes.func,\n onChange: PropTypes.func,\n placeholder: PropTypes.string,\n /** Enables the display of values as `Pill` components that can be\n * removed without opening the dropdown. */\n tags: PropTypes.bool,\n /** A list of characters that will trigger the creation of a tag when typed. */\n tagSeparators: PropTypes.arrayOf(PropTypes.string),\n /** If set to true a tag will be created whenever the component loses focus\n * and there is something typed in. */\n addTagOnBlur: PropTypes.bool,\n theme: PropTypes.string,\n /** The value of the component. It can be a string, an array,\n * or an object with an `id` property. */\n value: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.instanceOf(Array),\n PropTypes.instanceOf(Object),\n ]),\n /** An array of selectable values. */\n values: PropTypes.instanceOf(Array),\n /** Config object passed to the internal floating container component. */\n floatingContainerConfig: PropTypes.instanceOf(Object),\n /** If set to `single` it will display the values on a single line\n * with an ellipsis at the end. */\n valueOverflow: PropTypes.oneOf(['single', 'multiple']),\n /**\n * If set to `true` whenever the user clicks on the dropdown trigger\n * the selected values container\n * will expand to show all selected values instead of opening the dropdown.\n */\n expandMode: PropTypes.bool,\n /** Config object passed to the internal infinite scroller component. */\n infiniteScrollerConfig: PropTypes.instanceOf(Object),\n /** Toggles the display of the dropdown trigger. */\n displayDropdownTrigger: PropTypes.bool,\n /**\n * If a boolean it will toggle the select all functionality from the dropdown.\n * It can also be an object with the shape `{ label, show, mode, render }`.\n * label - A string displayed as the select all option\n * show - It can be one of `['always', 'notSameState']`.\n * `always` means the option will always be displayed.\n * `notSameState` means it will be displayed only if the list items are\n * not all with the same state (depending on the `mode` value)\n * mode - It can be one of `['select', 'unselect']` and makes sense only\n * when the `show` property is `notSameState`\n * `select` means the select all option will only be displayed if not all\n * items are selected\n * `unselect` means the option will be displayed if no items are selected\n */\n selectAll: PropTypes.oneOfType([\n PropTypes.bool,\n PropTypes.shape({\n label: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.func,\n PropTypes.string,\n ]),\n mode: PropTypes.oneOf(['select', 'unselect']),\n show: PropTypes.oneOf(['always', 'notSameState']),\n render: PropTypes.func,\n }),\n ]),\n /** It `true` the dropdown will close after selecting a value. */\n closeOnSelect: PropTypes.bool,\n /** Toggles the display of the search input from the dropdown. */\n showSearch: PropTypes.bool,\n /** If it is required and can only select one value once you have something\n * selected you will not be able to deselect */\n required: PropTypes.bool,\n /** Validates newly added value before adding it to the selected values.\n * Returns an error string in case of error otherwise it returns undefined\n */\n validateOnChange: PropTypes.func,\n wrapperClassName: PropTypes.string,\n};\n\nexport default Combobox2;\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"flatpickr\");","\n import API from \"!../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../css-loader/dist/cjs.js!./flatpickr.min.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../css-loader/dist/cjs.js!./flatpickr.min.css\";\n export default content && content.locals ? content.locals : undefined;\n","import React, {\n useEffect, useState, useRef, useCallback,\n} from 'react';\nimport PropTypes from 'prop-types';\nimport flatpickr from 'flatpickr';\nimport 'flatpickr/dist/flatpickr.min.css';\n\nimport Icon from '../../../components/Icon';\nimport { usePrevious } from '../../../hooks';\n\nfunction DatePicker({\n children,\n disabled,\n readOnly = false,\n error,\n id,\n label,\n labelwidth,\n note,\n onClose,\n onChange,\n onOpen,\n theme,\n config = {},\n value,\n wrapperClassName = '',\n}) {\n const [pickerInstance, setPickerInstance] = useState(null);\n const dateRef = useRef(null);\n\n const prevValue = usePrevious(value);\n\n const hasValueChanged = useCallback((prevDate, currentDate) => {\n if (!prevDate) return true;\n if (!Array.isArray(currentDate)) return prevDate.getTime() !== currentDate.getTime();\n\n let diffDates = currentDate;\n\n if (prevDate && currentDate.length && prevDate.length) {\n diffDates = currentDate.filter((date, index) => date.getTime() !== prevDate[index].getTime());\n\n return diffDates.length > 0;\n }\n\n return currentDate.length > 0;\n }, []);\n\n const onDateChange = useCallback((dateValue) => {\n const finalValue = config.mode === 'range' ? dateValue : dateValue[0] || null;\n\n if (!onChange) return;\n\n if (config.mode === 'range') {\n if (finalValue.length === 2 && hasValueChanged(prevValue, finalValue)) {\n onChange(finalValue);\n }\n } else {\n onChange(finalValue);\n }\n }, [prevValue, onChange, hasValueChanged]);\n\n useEffect(() => {\n if (dateRef && dateRef.current && !pickerInstance) {\n const instance = flatpickr(dateRef.current, {\n ...config, defaultDate: value, onChange: onDateChange, onClose, onOpen,\n });\n setPickerInstance(instance);\n }\n\n return () => {\n if (pickerInstance) {\n pickerInstance.destroy();\n }\n };\n }, [dateRef.current, pickerInstance]);\n\n useEffect(() => {\n if (pickerInstance) {\n let tempValue = value;\n\n if (typeof value === 'string') {\n tempValue = new Date(value);\n } else if (Array.isArray(value)) {\n tempValue = value.map((date) => (typeof date === 'string' ? new Date(date) : date));\n }\n\n if (hasValueChanged(prevValue, tempValue)) {\n pickerInstance.set('onChange', onDateChange);\n if (config.mode === 'range') {\n if (tempValue && tempValue.length === 2) {\n pickerInstance.setDate(tempValue, true);\n }\n } else {\n pickerInstance.setDate(tempValue, true);\n }\n }\n }\n }, [prevValue, value, pickerInstance]);\n\n const classes = [\n 'tyk-form-group',\n 'tyk-form-group--addon-right',\n wrapperClassName,\n ...(theme ? theme.split(' ').map((t) => `tyk-form-group--${t}`) : []),\n labelwidth && 'tyk-form-group--label-has-width',\n error && 'has-error',\n ].filter(Boolean).join(' ');\n\n const getLabelStyles = () => {\n if (labelwidth) return { flexBasis: labelwidth };\n return {};\n };\n\n const getNonLabelWidth = () => {\n if (labelwidth) return { flexBasis: `calc(100% - ${labelwidth} - 20px)` };\n return {};\n };\n\n const openCalendar = useCallback(() => {\n if (!pickerInstance) return;\n\n pickerInstance.open();\n }, [pickerInstance]);\n\n const getInputError = () => (\n (error && error !== 'true' && error !== 'false')\n ? (\n

    \n { error }\n

    \n )\n : null\n );\n\n const getInputField = () => {\n let inputStyle = {};\n let addonStyle = {};\n\n if (config && config.inline) {\n inputStyle = {\n height: 0,\n padding: 0,\n width: 0,\n visibility: 'hidden',\n };\n\n addonStyle = {\n display: 'none',\n };\n }\n return (\n <>\n \n {}}\n tabIndex={0}\n style={addonStyle}\n >\n \n \n \n );\n };\n\n return (\n <>\n {\n children && children.length\n ? children({ openCalendar, ref: dateRef })\n : (\n
    \n {\n label\n ? \n : null\n }\n {!readOnly && (\n \n
    \n {getInputField()}\n
    \n {\n note\n ?

    { note }

    \n : null\n }\n { getInputError() }\n
    \n )}\n \n )\n }\n
    \n {readOnly && !value && '-'}\n {readOnly && value && flatpickr.formatDate(value, config.dateFormat || 'd/m/Y')}\n
    \n \n );\n}\n\nDatePicker.propTypes = {\n config: PropTypes.instanceOf(Object),\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n PropTypes.func,\n ]),\n disabled: PropTypes.bool,\n readOnly: PropTypes.bool,\n id: PropTypes.string,\n label: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.func,\n PropTypes.string,\n ]),\n labelwidth: PropTypes.string,\n note: PropTypes.string,\n onChange: PropTypes.oneOfType([\n PropTypes.func,\n PropTypes.instanceOf(Array),\n ]),\n onClose: PropTypes.oneOfType([\n PropTypes.func,\n PropTypes.instanceOf(Array),\n ]),\n onOpen: PropTypes.oneOfType([\n PropTypes.func,\n PropTypes.instanceOf(Array),\n ]),\n theme: PropTypes.string,\n error: PropTypes.string,\n value: PropTypes.oneOfType([\n PropTypes.instanceOf(Array),\n PropTypes.instanceOf(Object),\n PropTypes.string,\n ]),\n wrapperClassName: PropTypes.string,\n};\n\nexport default DatePicker;\n","export default function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}","export default function requiredArgs(required, args) {\n if (args.length < required) {\n throw new TypeError(required + ' argument' + (required > 1 ? 's' : '') + ' required, but only ' + args.length + ' present');\n }\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isDate\n * @category Common Helpers\n * @summary Is the given value a date?\n *\n * @description\n * Returns true if the given value is an instance of Date. The function works for dates transferred across iframes.\n *\n * @param {*} value - the value to check\n * @returns {boolean} true if the given value is a date\n * @throws {TypeError} 1 arguments required\n *\n * @example\n * // For a valid date:\n * const result = isDate(new Date())\n * //=> true\n *\n * @example\n * // For an invalid date:\n * const result = isDate(new Date(NaN))\n * //=> true\n *\n * @example\n * // For some value:\n * const result = isDate('2014-02-31')\n * //=> false\n *\n * @example\n * // For an object:\n * const result = isDate({})\n * //=> false\n */\nexport default function isDate(value) {\n requiredArgs(1, arguments);\n return value instanceof Date || _typeof(value) === 'object' && Object.prototype.toString.call(value) === '[object Date]';\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n *\n * @param {Date|Number} argument - the value to convert\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Clone the date:\n * const result = toDate(new Date(2014, 1, 11, 11, 30, 30))\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert the timestamp to date:\n * const result = toDate(1392098430000)\n * //=> Tue Feb 11 2014 11:30:30\n */\nexport default function toDate(argument) {\n requiredArgs(1, arguments);\n var argStr = Object.prototype.toString.call(argument);\n\n // Clone the date\n if (argument instanceof Date || _typeof(argument) === 'object' && argStr === '[object Date]') {\n // Prevent the date to lose the milliseconds when passed to new Date() in IE10\n return new Date(argument.getTime());\n } else if (typeof argument === 'number' || argStr === '[object Number]') {\n return new Date(argument);\n } else {\n if ((typeof argument === 'string' || argStr === '[object String]') && typeof console !== 'undefined') {\n // eslint-disable-next-line no-console\n console.warn(\"Starting with v2.0.0-beta.1 date-fns doesn't accept strings as date arguments. Please use `parseISO` to parse strings. See: https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#string-arguments\");\n // eslint-disable-next-line no-console\n console.warn(new Error().stack);\n }\n return new Date(NaN);\n }\n}","import isDate from \"../isDate/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isValid\n * @category Common Helpers\n * @summary Is the given date valid?\n *\n * @description\n * Returns false if argument is Invalid Date and true otherwise.\n * Argument is converted to Date using `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * Invalid Date is a Date, whose time value is NaN.\n *\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @param {*} date - the date to check\n * @returns {Boolean} the date is valid\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // For the valid date:\n * const result = isValid(new Date(2014, 1, 31))\n * //=> true\n *\n * @example\n * // For the value, convertable into a date:\n * const result = isValid(1393804800000)\n * //=> true\n *\n * @example\n * // For the invalid date:\n * const result = isValid(new Date(''))\n * //=> false\n */\nexport default function isValid(dirtyDate) {\n requiredArgs(1, arguments);\n if (!isDate(dirtyDate) && typeof dirtyDate !== 'number') {\n return false;\n }\n var date = toDate(dirtyDate);\n return !isNaN(Number(date));\n}","export default function toInteger(dirtyNumber) {\n if (dirtyNumber === null || dirtyNumber === true || dirtyNumber === false) {\n return NaN;\n }\n var number = Number(dirtyNumber);\n if (isNaN(number)) {\n return number;\n }\n return number < 0 ? Math.ceil(number) : Math.floor(number);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addMilliseconds\n * @category Millisecond Helpers\n * @summary Add the specified number of milliseconds to the given date.\n *\n * @description\n * Add the specified number of milliseconds to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the milliseconds added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 750 milliseconds to 10 July 2014 12:45:30.000:\n * const result = addMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:30.750\n */\nexport default function addMilliseconds(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var timestamp = toDate(dirtyDate).getTime();\n var amount = toInteger(dirtyAmount);\n return new Date(timestamp + amount);\n}","import addMilliseconds from \"../addMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\n/**\n * @name subMilliseconds\n * @category Millisecond Helpers\n * @summary Subtract the specified number of milliseconds from the given date.\n *\n * @description\n * Subtract the specified number of milliseconds from the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the milliseconds subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 750 milliseconds from 10 July 2014 12:45:30.000:\n * const result = subMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:29.250\n */\nexport default function subMilliseconds(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMilliseconds(dirtyDate, -amount);\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_DAY = 86400000;\nexport default function getUTCDayOfYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var timestamp = date.getTime();\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n var startOfYearTimestamp = date.getTime();\n var difference = timestamp - startOfYearTimestamp;\n return Math.floor(difference / MILLISECONDS_IN_DAY) + 1;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nexport default function startOfUTCISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n var weekStartsOn = 1;\n var date = toDate(dirtyDate);\n var day = date.getUTCDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setUTCDate(date.getUTCDate() - diff);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nexport default function getUTCISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getUTCFullYear();\n var fourthOfJanuaryOfNextYear = new Date(0);\n fourthOfJanuaryOfNextYear.setUTCFullYear(year + 1, 0, 4);\n fourthOfJanuaryOfNextYear.setUTCHours(0, 0, 0, 0);\n var startOfNextYear = startOfUTCISOWeek(fourthOfJanuaryOfNextYear);\n var fourthOfJanuaryOfThisYear = new Date(0);\n fourthOfJanuaryOfThisYear.setUTCFullYear(year, 0, 4);\n fourthOfJanuaryOfThisYear.setUTCHours(0, 0, 0, 0);\n var startOfThisYear = startOfUTCISOWeek(fourthOfJanuaryOfThisYear);\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}","import getUTCISOWeekYear from \"../getUTCISOWeekYear/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nexport default function startOfUTCISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var year = getUTCISOWeekYear(dirtyDate);\n var fourthOfJanuary = new Date(0);\n fourthOfJanuary.setUTCFullYear(year, 0, 4);\n fourthOfJanuary.setUTCHours(0, 0, 0, 0);\n var date = startOfUTCISOWeek(fourthOfJanuary);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nimport startOfUTCISOWeekYear from \"../startOfUTCISOWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000;\nexport default function getUTCISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var diff = startOfUTCISOWeek(date).getTime() - startOfUTCISOWeekYear(date).getTime();\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","var defaultOptions = {};\nexport function getDefaultOptions() {\n return defaultOptions;\n}\nexport function setDefaultOptions(newOptions) {\n defaultOptions = newOptions;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nimport { getDefaultOptions } from \"../defaultOptions/index.js\";\nexport default function startOfUTCWeek(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$weekStartsOn, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(1, arguments);\n var defaultOptions = getDefaultOptions();\n var weekStartsOn = toInteger((_ref = (_ref2 = (_ref3 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.weekStartsOn) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.weekStartsOn) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.weekStartsOn) !== null && _ref !== void 0 ? _ref : 0);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n var date = toDate(dirtyDate);\n var day = date.getUTCDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setUTCDate(date.getUTCDate() - diff);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nimport { getDefaultOptions } from \"../defaultOptions/index.js\";\nexport default function getUTCWeekYear(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$firstWeekCon, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getUTCFullYear();\n var defaultOptions = getDefaultOptions();\n var firstWeekContainsDate = toInteger((_ref = (_ref2 = (_ref3 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref !== void 0 ? _ref : 1);\n\n // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n var firstWeekOfNextYear = new Date(0);\n firstWeekOfNextYear.setUTCFullYear(year + 1, 0, firstWeekContainsDate);\n firstWeekOfNextYear.setUTCHours(0, 0, 0, 0);\n var startOfNextYear = startOfUTCWeek(firstWeekOfNextYear, options);\n var firstWeekOfThisYear = new Date(0);\n firstWeekOfThisYear.setUTCFullYear(year, 0, firstWeekContainsDate);\n firstWeekOfThisYear.setUTCHours(0, 0, 0, 0);\n var startOfThisYear = startOfUTCWeek(firstWeekOfThisYear, options);\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}","import getUTCWeekYear from \"../getUTCWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nimport { getDefaultOptions } from \"../defaultOptions/index.js\";\nexport default function startOfUTCWeekYear(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$firstWeekCon, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(1, arguments);\n var defaultOptions = getDefaultOptions();\n var firstWeekContainsDate = toInteger((_ref = (_ref2 = (_ref3 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref !== void 0 ? _ref : 1);\n var year = getUTCWeekYear(dirtyDate, options);\n var firstWeek = new Date(0);\n firstWeek.setUTCFullYear(year, 0, firstWeekContainsDate);\n firstWeek.setUTCHours(0, 0, 0, 0);\n var date = startOfUTCWeek(firstWeek, options);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport startOfUTCWeekYear from \"../startOfUTCWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000;\nexport default function getUTCWeek(dirtyDate, options) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var diff = startOfUTCWeek(date, options).getTime() - startOfUTCWeekYear(date, options).getTime();\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","export default function addLeadingZeros(number, targetLength) {\n var sign = number < 0 ? '-' : '';\n var output = Math.abs(number).toString();\n while (output.length < targetLength) {\n output = '0' + output;\n }\n return sign + output;\n}","import addLeadingZeros from \"../../addLeadingZeros/index.js\";\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | |\n * | d | Day of month | D | |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | m | Minute | M | Month |\n * | s | Second | S | Fraction of second |\n * | y | Year (abs) | Y | |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n */\nvar formatters = {\n // Year\n y: function y(date, token) {\n // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_tokens\n // | Year | y | yy | yyy | yyyy | yyyyy |\n // |----------|-------|----|-------|-------|-------|\n // | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n // | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n // | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n // | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n\n var signedYear = date.getUTCFullYear();\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n var year = signedYear > 0 ? signedYear : 1 - signedYear;\n return addLeadingZeros(token === 'yy' ? year % 100 : year, token.length);\n },\n // Month\n M: function M(date, token) {\n var month = date.getUTCMonth();\n return token === 'M' ? String(month + 1) : addLeadingZeros(month + 1, 2);\n },\n // Day of the month\n d: function d(date, token) {\n return addLeadingZeros(date.getUTCDate(), token.length);\n },\n // AM or PM\n a: function a(date, token) {\n var dayPeriodEnumValue = date.getUTCHours() / 12 >= 1 ? 'pm' : 'am';\n switch (token) {\n case 'a':\n case 'aa':\n return dayPeriodEnumValue.toUpperCase();\n case 'aaa':\n return dayPeriodEnumValue;\n case 'aaaaa':\n return dayPeriodEnumValue[0];\n case 'aaaa':\n default:\n return dayPeriodEnumValue === 'am' ? 'a.m.' : 'p.m.';\n }\n },\n // Hour [1-12]\n h: function h(date, token) {\n return addLeadingZeros(date.getUTCHours() % 12 || 12, token.length);\n },\n // Hour [0-23]\n H: function H(date, token) {\n return addLeadingZeros(date.getUTCHours(), token.length);\n },\n // Minute\n m: function m(date, token) {\n return addLeadingZeros(date.getUTCMinutes(), token.length);\n },\n // Second\n s: function s(date, token) {\n return addLeadingZeros(date.getUTCSeconds(), token.length);\n },\n // Fraction of second\n S: function S(date, token) {\n var numberOfDigits = token.length;\n var milliseconds = date.getUTCMilliseconds();\n var fractionalSeconds = Math.floor(milliseconds * Math.pow(10, numberOfDigits - 3));\n return addLeadingZeros(fractionalSeconds, token.length);\n }\n};\nexport default formatters;","import getUTCDayOfYear from \"../../../_lib/getUTCDayOfYear/index.js\";\nimport getUTCISOWeek from \"../../../_lib/getUTCISOWeek/index.js\";\nimport getUTCISOWeekYear from \"../../../_lib/getUTCISOWeekYear/index.js\";\nimport getUTCWeek from \"../../../_lib/getUTCWeek/index.js\";\nimport getUTCWeekYear from \"../../../_lib/getUTCWeekYear/index.js\";\nimport addLeadingZeros from \"../../addLeadingZeros/index.js\";\nimport lightFormatters from \"../lightFormatters/index.js\";\nvar dayPeriodEnum = {\n am: 'am',\n pm: 'pm',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n};\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O | Timezone (GMT) |\n * | p! | Long localized time | P! | Long localized date |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `format` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n * - `P` is long localized date format\n * - `p` is long localized time format\n */\n\nvar formatters = {\n // Era\n G: function G(date, token, localize) {\n var era = date.getUTCFullYear() > 0 ? 1 : 0;\n switch (token) {\n // AD, BC\n case 'G':\n case 'GG':\n case 'GGG':\n return localize.era(era, {\n width: 'abbreviated'\n });\n // A, B\n case 'GGGGG':\n return localize.era(era, {\n width: 'narrow'\n });\n // Anno Domini, Before Christ\n case 'GGGG':\n default:\n return localize.era(era, {\n width: 'wide'\n });\n }\n },\n // Year\n y: function y(date, token, localize) {\n // Ordinal number\n if (token === 'yo') {\n var signedYear = date.getUTCFullYear();\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n var year = signedYear > 0 ? signedYear : 1 - signedYear;\n return localize.ordinalNumber(year, {\n unit: 'year'\n });\n }\n return lightFormatters.y(date, token);\n },\n // Local week-numbering year\n Y: function Y(date, token, localize, options) {\n var signedWeekYear = getUTCWeekYear(date, options);\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n var weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear;\n\n // Two digit year\n if (token === 'YY') {\n var twoDigitYear = weekYear % 100;\n return addLeadingZeros(twoDigitYear, 2);\n }\n\n // Ordinal number\n if (token === 'Yo') {\n return localize.ordinalNumber(weekYear, {\n unit: 'year'\n });\n }\n\n // Padding\n return addLeadingZeros(weekYear, token.length);\n },\n // ISO week-numbering year\n R: function R(date, token) {\n var isoWeekYear = getUTCISOWeekYear(date);\n\n // Padding\n return addLeadingZeros(isoWeekYear, token.length);\n },\n // Extended year. This is a single number designating the year of this calendar system.\n // The main difference between `y` and `u` localizers are B.C. years:\n // | Year | `y` | `u` |\n // |------|-----|-----|\n // | AC 1 | 1 | 1 |\n // | BC 1 | 1 | 0 |\n // | BC 2 | 2 | -1 |\n // Also `yy` always returns the last two digits of a year,\n // while `uu` pads single digit years to 2 characters and returns other years unchanged.\n u: function u(date, token) {\n var year = date.getUTCFullYear();\n return addLeadingZeros(year, token.length);\n },\n // Quarter\n Q: function Q(date, token, localize) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case 'Q':\n return String(quarter);\n // 01, 02, 03, 04\n case 'QQ':\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n case 'Qo':\n return localize.ordinalNumber(quarter, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n case 'QQQ':\n return localize.quarter(quarter, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case 'QQQQQ':\n return localize.quarter(quarter, {\n width: 'narrow',\n context: 'formatting'\n });\n // 1st quarter, 2nd quarter, ...\n case 'QQQQ':\n default:\n return localize.quarter(quarter, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone quarter\n q: function q(date, token, localize) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case 'q':\n return String(quarter);\n // 01, 02, 03, 04\n case 'qq':\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n case 'qo':\n return localize.ordinalNumber(quarter, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n case 'qqq':\n return localize.quarter(quarter, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case 'qqqqq':\n return localize.quarter(quarter, {\n width: 'narrow',\n context: 'standalone'\n });\n // 1st quarter, 2nd quarter, ...\n case 'qqqq':\n default:\n return localize.quarter(quarter, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // Month\n M: function M(date, token, localize) {\n var month = date.getUTCMonth();\n switch (token) {\n case 'M':\n case 'MM':\n return lightFormatters.M(date, token);\n // 1st, 2nd, ..., 12th\n case 'Mo':\n return localize.ordinalNumber(month + 1, {\n unit: 'month'\n });\n // Jan, Feb, ..., Dec\n case 'MMM':\n return localize.month(month, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // J, F, ..., D\n case 'MMMMM':\n return localize.month(month, {\n width: 'narrow',\n context: 'formatting'\n });\n // January, February, ..., December\n case 'MMMM':\n default:\n return localize.month(month, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone month\n L: function L(date, token, localize) {\n var month = date.getUTCMonth();\n switch (token) {\n // 1, 2, ..., 12\n case 'L':\n return String(month + 1);\n // 01, 02, ..., 12\n case 'LL':\n return addLeadingZeros(month + 1, 2);\n // 1st, 2nd, ..., 12th\n case 'Lo':\n return localize.ordinalNumber(month + 1, {\n unit: 'month'\n });\n // Jan, Feb, ..., Dec\n case 'LLL':\n return localize.month(month, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // J, F, ..., D\n case 'LLLLL':\n return localize.month(month, {\n width: 'narrow',\n context: 'standalone'\n });\n // January, February, ..., December\n case 'LLLL':\n default:\n return localize.month(month, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // Local week of year\n w: function w(date, token, localize, options) {\n var week = getUTCWeek(date, options);\n if (token === 'wo') {\n return localize.ordinalNumber(week, {\n unit: 'week'\n });\n }\n return addLeadingZeros(week, token.length);\n },\n // ISO week of year\n I: function I(date, token, localize) {\n var isoWeek = getUTCISOWeek(date);\n if (token === 'Io') {\n return localize.ordinalNumber(isoWeek, {\n unit: 'week'\n });\n }\n return addLeadingZeros(isoWeek, token.length);\n },\n // Day of the month\n d: function d(date, token, localize) {\n if (token === 'do') {\n return localize.ordinalNumber(date.getUTCDate(), {\n unit: 'date'\n });\n }\n return lightFormatters.d(date, token);\n },\n // Day of year\n D: function D(date, token, localize) {\n var dayOfYear = getUTCDayOfYear(date);\n if (token === 'Do') {\n return localize.ordinalNumber(dayOfYear, {\n unit: 'dayOfYear'\n });\n }\n return addLeadingZeros(dayOfYear, token.length);\n },\n // Day of week\n E: function E(date, token, localize) {\n var dayOfWeek = date.getUTCDay();\n switch (token) {\n // Tue\n case 'E':\n case 'EE':\n case 'EEE':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n case 'EEEEE':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n case 'EEEEEE':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n case 'EEEE':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Local day of week\n e: function e(date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n switch (token) {\n // Numerical value (Nth day of week with current locale or weekStartsOn)\n case 'e':\n return String(localDayOfWeek);\n // Padded numerical value\n case 'ee':\n return addLeadingZeros(localDayOfWeek, 2);\n // 1st, 2nd, ..., 7th\n case 'eo':\n return localize.ordinalNumber(localDayOfWeek, {\n unit: 'day'\n });\n case 'eee':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n case 'eeeee':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n case 'eeeeee':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n case 'eeee':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone local day of week\n c: function c(date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n switch (token) {\n // Numerical value (same as in `e`)\n case 'c':\n return String(localDayOfWeek);\n // Padded numerical value\n case 'cc':\n return addLeadingZeros(localDayOfWeek, token.length);\n // 1st, 2nd, ..., 7th\n case 'co':\n return localize.ordinalNumber(localDayOfWeek, {\n unit: 'day'\n });\n case 'ccc':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // T\n case 'ccccc':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'standalone'\n });\n // Tu\n case 'cccccc':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'standalone'\n });\n // Tuesday\n case 'cccc':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // ISO day of week\n i: function i(date, token, localize) {\n var dayOfWeek = date.getUTCDay();\n var isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek;\n switch (token) {\n // 2\n case 'i':\n return String(isoDayOfWeek);\n // 02\n case 'ii':\n return addLeadingZeros(isoDayOfWeek, token.length);\n // 2nd\n case 'io':\n return localize.ordinalNumber(isoDayOfWeek, {\n unit: 'day'\n });\n // Tue\n case 'iii':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n case 'iiiii':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n case 'iiiiii':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n case 'iiii':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // AM or PM\n a: function a(date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n switch (token) {\n case 'a':\n case 'aa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n case 'aaa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n }).toLowerCase();\n case 'aaaaa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'aaaa':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // AM, PM, midnight, noon\n b: function b(date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue;\n if (hours === 12) {\n dayPeriodEnumValue = dayPeriodEnum.noon;\n } else if (hours === 0) {\n dayPeriodEnumValue = dayPeriodEnum.midnight;\n } else {\n dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n }\n switch (token) {\n case 'b':\n case 'bb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n case 'bbb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n }).toLowerCase();\n case 'bbbbb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'bbbb':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // in the morning, in the afternoon, in the evening, at night\n B: function B(date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue;\n if (hours >= 17) {\n dayPeriodEnumValue = dayPeriodEnum.evening;\n } else if (hours >= 12) {\n dayPeriodEnumValue = dayPeriodEnum.afternoon;\n } else if (hours >= 4) {\n dayPeriodEnumValue = dayPeriodEnum.morning;\n } else {\n dayPeriodEnumValue = dayPeriodEnum.night;\n }\n switch (token) {\n case 'B':\n case 'BB':\n case 'BBB':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n case 'BBBBB':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'BBBB':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Hour [1-12]\n h: function h(date, token, localize) {\n if (token === 'ho') {\n var hours = date.getUTCHours() % 12;\n if (hours === 0) hours = 12;\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n return lightFormatters.h(date, token);\n },\n // Hour [0-23]\n H: function H(date, token, localize) {\n if (token === 'Ho') {\n return localize.ordinalNumber(date.getUTCHours(), {\n unit: 'hour'\n });\n }\n return lightFormatters.H(date, token);\n },\n // Hour [0-11]\n K: function K(date, token, localize) {\n var hours = date.getUTCHours() % 12;\n if (token === 'Ko') {\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n return addLeadingZeros(hours, token.length);\n },\n // Hour [1-24]\n k: function k(date, token, localize) {\n var hours = date.getUTCHours();\n if (hours === 0) hours = 24;\n if (token === 'ko') {\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n return addLeadingZeros(hours, token.length);\n },\n // Minute\n m: function m(date, token, localize) {\n if (token === 'mo') {\n return localize.ordinalNumber(date.getUTCMinutes(), {\n unit: 'minute'\n });\n }\n return lightFormatters.m(date, token);\n },\n // Second\n s: function s(date, token, localize) {\n if (token === 'so') {\n return localize.ordinalNumber(date.getUTCSeconds(), {\n unit: 'second'\n });\n }\n return lightFormatters.s(date, token);\n },\n // Fraction of second\n S: function S(date, token) {\n return lightFormatters.S(date, token);\n },\n // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)\n X: function X(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n if (timezoneOffset === 0) {\n return 'Z';\n }\n switch (token) {\n // Hours and optional minutes\n case 'X':\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XX`\n case 'XXXX':\n case 'XX':\n // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XXX`\n case 'XXXXX':\n case 'XXX': // Hours and minutes with `:` delimiter\n default:\n return formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)\n x: function x(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n switch (token) {\n // Hours and optional minutes\n case 'x':\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xx`\n case 'xxxx':\n case 'xx':\n // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xxx`\n case 'xxxxx':\n case 'xxx': // Hours and minutes with `:` delimiter\n default:\n return formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (GMT)\n O: function O(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n switch (token) {\n // Short\n case 'O':\n case 'OO':\n case 'OOO':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n // Long\n case 'OOOO':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (specific non-location)\n z: function z(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n switch (token) {\n // Short\n case 'z':\n case 'zz':\n case 'zzz':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n // Long\n case 'zzzz':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':');\n }\n },\n // Seconds timestamp\n t: function t(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timestamp = Math.floor(originalDate.getTime() / 1000);\n return addLeadingZeros(timestamp, token.length);\n },\n // Milliseconds timestamp\n T: function T(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timestamp = originalDate.getTime();\n return addLeadingZeros(timestamp, token.length);\n }\n};\nfunction formatTimezoneShort(offset, dirtyDelimiter) {\n var sign = offset > 0 ? '-' : '+';\n var absOffset = Math.abs(offset);\n var hours = Math.floor(absOffset / 60);\n var minutes = absOffset % 60;\n if (minutes === 0) {\n return sign + String(hours);\n }\n var delimiter = dirtyDelimiter || '';\n return sign + String(hours) + delimiter + addLeadingZeros(minutes, 2);\n}\nfunction formatTimezoneWithOptionalMinutes(offset, dirtyDelimiter) {\n if (offset % 60 === 0) {\n var sign = offset > 0 ? '-' : '+';\n return sign + addLeadingZeros(Math.abs(offset) / 60, 2);\n }\n return formatTimezone(offset, dirtyDelimiter);\n}\nfunction formatTimezone(offset, dirtyDelimiter) {\n var delimiter = dirtyDelimiter || '';\n var sign = offset > 0 ? '-' : '+';\n var absOffset = Math.abs(offset);\n var hours = addLeadingZeros(Math.floor(absOffset / 60), 2);\n var minutes = addLeadingZeros(absOffset % 60, 2);\n return sign + hours + delimiter + minutes;\n}\nexport default formatters;","var dateLongFormatter = function dateLongFormatter(pattern, formatLong) {\n switch (pattern) {\n case 'P':\n return formatLong.date({\n width: 'short'\n });\n case 'PP':\n return formatLong.date({\n width: 'medium'\n });\n case 'PPP':\n return formatLong.date({\n width: 'long'\n });\n case 'PPPP':\n default:\n return formatLong.date({\n width: 'full'\n });\n }\n};\nvar timeLongFormatter = function timeLongFormatter(pattern, formatLong) {\n switch (pattern) {\n case 'p':\n return formatLong.time({\n width: 'short'\n });\n case 'pp':\n return formatLong.time({\n width: 'medium'\n });\n case 'ppp':\n return formatLong.time({\n width: 'long'\n });\n case 'pppp':\n default:\n return formatLong.time({\n width: 'full'\n });\n }\n};\nvar dateTimeLongFormatter = function dateTimeLongFormatter(pattern, formatLong) {\n var matchResult = pattern.match(/(P+)(p+)?/) || [];\n var datePattern = matchResult[1];\n var timePattern = matchResult[2];\n if (!timePattern) {\n return dateLongFormatter(pattern, formatLong);\n }\n var dateTimeFormat;\n switch (datePattern) {\n case 'P':\n dateTimeFormat = formatLong.dateTime({\n width: 'short'\n });\n break;\n case 'PP':\n dateTimeFormat = formatLong.dateTime({\n width: 'medium'\n });\n break;\n case 'PPP':\n dateTimeFormat = formatLong.dateTime({\n width: 'long'\n });\n break;\n case 'PPPP':\n default:\n dateTimeFormat = formatLong.dateTime({\n width: 'full'\n });\n break;\n }\n return dateTimeFormat.replace('{{date}}', dateLongFormatter(datePattern, formatLong)).replace('{{time}}', timeLongFormatter(timePattern, formatLong));\n};\nvar longFormatters = {\n p: timeLongFormatter,\n P: dateTimeLongFormatter\n};\nexport default longFormatters;","/**\n * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds.\n * They usually appear for dates that denote time before the timezones were introduced\n * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891\n * and GMT+01:00:00 after that date)\n *\n * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above,\n * which would lead to incorrect calculations.\n *\n * This function returns the timezone offset in milliseconds that takes seconds in account.\n */\nexport default function getTimezoneOffsetInMilliseconds(date) {\n var utcDate = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds()));\n utcDate.setUTCFullYear(date.getFullYear());\n return date.getTime() - utcDate.getTime();\n}","var protectedDayOfYearTokens = ['D', 'DD'];\nvar protectedWeekYearTokens = ['YY', 'YYYY'];\nexport function isProtectedDayOfYearToken(token) {\n return protectedDayOfYearTokens.indexOf(token) !== -1;\n}\nexport function isProtectedWeekYearToken(token) {\n return protectedWeekYearTokens.indexOf(token) !== -1;\n}\nexport function throwProtectedError(token, format, input) {\n if (token === 'YYYY') {\n throw new RangeError(\"Use `yyyy` instead of `YYYY` (in `\".concat(format, \"`) for formatting years to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n } else if (token === 'YY') {\n throw new RangeError(\"Use `yy` instead of `YY` (in `\".concat(format, \"`) for formatting years to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n } else if (token === 'D') {\n throw new RangeError(\"Use `d` instead of `D` (in `\".concat(format, \"`) for formatting days of the month to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n } else if (token === 'DD') {\n throw new RangeError(\"Use `dd` instead of `DD` (in `\".concat(format, \"`) for formatting days of the month to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n }\n}","var formatDistanceLocale = {\n lessThanXSeconds: {\n one: 'less than a second',\n other: 'less than {{count}} seconds'\n },\n xSeconds: {\n one: '1 second',\n other: '{{count}} seconds'\n },\n halfAMinute: 'half a minute',\n lessThanXMinutes: {\n one: 'less than a minute',\n other: 'less than {{count}} minutes'\n },\n xMinutes: {\n one: '1 minute',\n other: '{{count}} minutes'\n },\n aboutXHours: {\n one: 'about 1 hour',\n other: 'about {{count}} hours'\n },\n xHours: {\n one: '1 hour',\n other: '{{count}} hours'\n },\n xDays: {\n one: '1 day',\n other: '{{count}} days'\n },\n aboutXWeeks: {\n one: 'about 1 week',\n other: 'about {{count}} weeks'\n },\n xWeeks: {\n one: '1 week',\n other: '{{count}} weeks'\n },\n aboutXMonths: {\n one: 'about 1 month',\n other: 'about {{count}} months'\n },\n xMonths: {\n one: '1 month',\n other: '{{count}} months'\n },\n aboutXYears: {\n one: 'about 1 year',\n other: 'about {{count}} years'\n },\n xYears: {\n one: '1 year',\n other: '{{count}} years'\n },\n overXYears: {\n one: 'over 1 year',\n other: 'over {{count}} years'\n },\n almostXYears: {\n one: 'almost 1 year',\n other: 'almost {{count}} years'\n }\n};\nvar formatDistance = function formatDistance(token, count, options) {\n var result;\n var tokenValue = formatDistanceLocale[token];\n if (typeof tokenValue === 'string') {\n result = tokenValue;\n } else if (count === 1) {\n result = tokenValue.one;\n } else {\n result = tokenValue.other.replace('{{count}}', count.toString());\n }\n if (options !== null && options !== void 0 && options.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return 'in ' + result;\n } else {\n return result + ' ago';\n }\n }\n return result;\n};\nexport default formatDistance;","export default function buildFormatLongFn(args) {\n return function () {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n // TODO: Remove String()\n var width = options.width ? String(options.width) : args.defaultWidth;\n var format = args.formats[width] || args.formats[args.defaultWidth];\n return format;\n };\n}","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\nvar dateFormats = {\n full: 'EEEE, MMMM do, y',\n long: 'MMMM do, y',\n medium: 'MMM d, y',\n short: 'MM/dd/yyyy'\n};\nvar timeFormats = {\n full: 'h:mm:ss a zzzz',\n long: 'h:mm:ss a z',\n medium: 'h:mm:ss a',\n short: 'h:mm a'\n};\nvar dateTimeFormats = {\n full: \"{{date}} 'at' {{time}}\",\n long: \"{{date}} 'at' {{time}}\",\n medium: '{{date}}, {{time}}',\n short: '{{date}}, {{time}}'\n};\nvar formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: 'full'\n }),\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: 'full'\n }),\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: 'full'\n })\n};\nexport default formatLong;","var formatRelativeLocale = {\n lastWeek: \"'last' eeee 'at' p\",\n yesterday: \"'yesterday at' p\",\n today: \"'today at' p\",\n tomorrow: \"'tomorrow at' p\",\n nextWeek: \"eeee 'at' p\",\n other: 'P'\n};\nvar formatRelative = function formatRelative(token, _date, _baseDate, _options) {\n return formatRelativeLocale[token];\n};\nexport default formatRelative;","export default function buildLocalizeFn(args) {\n return function (dirtyIndex, options) {\n var context = options !== null && options !== void 0 && options.context ? String(options.context) : 'standalone';\n var valuesArray;\n if (context === 'formatting' && args.formattingValues) {\n var defaultWidth = args.defaultFormattingWidth || args.defaultWidth;\n var width = options !== null && options !== void 0 && options.width ? String(options.width) : defaultWidth;\n valuesArray = args.formattingValues[width] || args.formattingValues[defaultWidth];\n } else {\n var _defaultWidth = args.defaultWidth;\n var _width = options !== null && options !== void 0 && options.width ? String(options.width) : args.defaultWidth;\n valuesArray = args.values[_width] || args.values[_defaultWidth];\n }\n var index = args.argumentCallback ? args.argumentCallback(dirtyIndex) : dirtyIndex;\n // @ts-ignore: For some reason TypeScript just don't want to match it, no matter how hard we try. I challenge you to try to remove it!\n return valuesArray[index];\n };\n}","import buildLocalizeFn from \"../../../_lib/buildLocalizeFn/index.js\";\nvar eraValues = {\n narrow: ['B', 'A'],\n abbreviated: ['BC', 'AD'],\n wide: ['Before Christ', 'Anno Domini']\n};\nvar quarterValues = {\n narrow: ['1', '2', '3', '4'],\n abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'],\n wide: ['1st quarter', '2nd quarter', '3rd quarter', '4th quarter']\n};\n\n// Note: in English, the names of days of the week and months are capitalized.\n// If you are making a new locale based on this one, check if the same is true for the language you're working on.\n// Generally, formatted dates should look like they are in the middle of a sentence,\n// e.g. in Spanish language the weekdays and months should be in the lowercase.\nvar monthValues = {\n narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],\n abbreviated: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n wide: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']\n};\nvar dayValues = {\n narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],\n short: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n abbreviated: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n wide: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']\n};\nvar dayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n }\n};\nvar formattingDayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n }\n};\nvar ordinalNumber = function ordinalNumber(dirtyNumber, _options) {\n var number = Number(dirtyNumber);\n\n // If ordinal numbers depend on context, for example,\n // if they are different for different grammatical genders,\n // use `options.unit`.\n //\n // `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',\n // 'day', 'hour', 'minute', 'second'.\n\n var rem100 = number % 100;\n if (rem100 > 20 || rem100 < 10) {\n switch (rem100 % 10) {\n case 1:\n return number + 'st';\n case 2:\n return number + 'nd';\n case 3:\n return number + 'rd';\n }\n }\n return number + 'th';\n};\nvar localize = {\n ordinalNumber: ordinalNumber,\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: 'wide'\n }),\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: 'wide',\n argumentCallback: function argumentCallback(quarter) {\n return quarter - 1;\n }\n }),\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: 'wide'\n }),\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: 'wide'\n }),\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: 'wide',\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: 'wide'\n })\n};\nexport default localize;","export default function buildMatchFn(args) {\n return function (string) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var width = options.width;\n var matchPattern = width && args.matchPatterns[width] || args.matchPatterns[args.defaultMatchWidth];\n var matchResult = string.match(matchPattern);\n if (!matchResult) {\n return null;\n }\n var matchedString = matchResult[0];\n var parsePatterns = width && args.parsePatterns[width] || args.parsePatterns[args.defaultParseWidth];\n var key = Array.isArray(parsePatterns) ? findIndex(parsePatterns, function (pattern) {\n return pattern.test(matchedString);\n }) : findKey(parsePatterns, function (pattern) {\n return pattern.test(matchedString);\n });\n var value;\n value = args.valueCallback ? args.valueCallback(key) : key;\n value = options.valueCallback ? options.valueCallback(value) : value;\n var rest = string.slice(matchedString.length);\n return {\n value: value,\n rest: rest\n };\n };\n}\nfunction findKey(object, predicate) {\n for (var key in object) {\n if (object.hasOwnProperty(key) && predicate(object[key])) {\n return key;\n }\n }\n return undefined;\n}\nfunction findIndex(array, predicate) {\n for (var key = 0; key < array.length; key++) {\n if (predicate(array[key])) {\n return key;\n }\n }\n return undefined;\n}","export default function buildMatchPatternFn(args) {\n return function (string) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var matchResult = string.match(args.matchPattern);\n if (!matchResult) return null;\n var matchedString = matchResult[0];\n var parseResult = string.match(args.parsePattern);\n if (!parseResult) return null;\n var value = args.valueCallback ? args.valueCallback(parseResult[0]) : parseResult[0];\n value = options.valueCallback ? options.valueCallback(value) : value;\n var rest = string.slice(matchedString.length);\n return {\n value: value,\n rest: rest\n };\n };\n}","import buildMatchFn from \"../../../_lib/buildMatchFn/index.js\";\nimport buildMatchPatternFn from \"../../../_lib/buildMatchPatternFn/index.js\";\nvar matchOrdinalNumberPattern = /^(\\d+)(th|st|nd|rd)?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n narrow: /^(b|a)/i,\n abbreviated: /^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)/i,\n wide: /^(before christ|before common era|anno domini|common era)/i\n};\nvar parseEraPatterns = {\n any: [/^b/i, /^(a|c)/i]\n};\nvar matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^q[1234]/i,\n wide: /^[1234](th|st|nd|rd)? quarter/i\n};\nvar parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i]\n};\nvar matchMonthPatterns = {\n narrow: /^[jfmasond]/i,\n abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,\n wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i\n};\nvar parseMonthPatterns = {\n narrow: [/^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],\n any: [/^ja/i, /^f/i, /^mar/i, /^ap/i, /^may/i, /^jun/i, /^jul/i, /^au/i, /^s/i, /^o/i, /^n/i, /^d/i]\n};\nvar matchDayPatterns = {\n narrow: /^[smtwf]/i,\n short: /^(su|mo|tu|we|th|fr|sa)/i,\n abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,\n wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i\n};\nvar parseDayPatterns = {\n narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],\n any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i]\n};\nvar matchDayPeriodPatterns = {\n narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,\n any: /^([ap]\\.?\\s?m\\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i\n};\nvar parseDayPeriodPatterns = {\n any: {\n am: /^a/i,\n pm: /^p/i,\n midnight: /^mi/i,\n noon: /^no/i,\n morning: /morning/i,\n afternoon: /afternoon/i,\n evening: /evening/i,\n night: /night/i\n }\n};\nvar match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: function valueCallback(value) {\n return parseInt(value, 10);\n }\n }),\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseEraPatterns,\n defaultParseWidth: 'any'\n }),\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: 'any',\n valueCallback: function valueCallback(index) {\n return index + 1;\n }\n }),\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: 'any'\n }),\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseDayPatterns,\n defaultParseWidth: 'any'\n }),\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: 'any',\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: 'any'\n })\n};\nexport default match;","import formatDistance from \"./_lib/formatDistance/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\nimport formatRelative from \"./_lib/formatRelative/index.js\";\nimport localize from \"./_lib/localize/index.js\";\nimport match from \"./_lib/match/index.js\";\n/**\n * @type {Locale}\n * @category Locales\n * @summary English locale (United States).\n * @language English\n * @iso-639-2 eng\n * @author Sasha Koss [@kossnocorp]{@link https://github.com/kossnocorp}\n * @author Lesha Koss [@leshakoss]{@link https://github.com/leshakoss}\n */\nvar locale = {\n code: 'en-US',\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 0 /* Sunday */,\n firstWeekContainsDate: 1\n }\n};\nexport default locale;","import defaultLocale from \"../../locale/en-US/index.js\";\nexport default defaultLocale;","import isValid from \"../isValid/index.js\";\nimport subMilliseconds from \"../subMilliseconds/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport formatters from \"../_lib/format/formatters/index.js\";\nimport longFormatters from \"../_lib/format/longFormatters/index.js\";\nimport getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport { isProtectedDayOfYearToken, isProtectedWeekYearToken, throwProtectedError } from \"../_lib/protectedTokens/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getDefaultOptions } from \"../_lib/defaultOptions/index.js\";\nimport defaultLocale from \"../_lib/defaultLocale/index.js\"; // This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\nvar formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g;\n\n// This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\nvar longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\nvar escapedStringRegExp = /^'([^]*?)'?$/;\nvar doubleQuoteRegExp = /''/g;\nvar unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n\n/**\n * @name format\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format. The result may vary by locale.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * The characters wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n * (see the last example)\n *\n * Format of the string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 7 below the table).\n *\n * Accepted patterns:\n * | Unit | Pattern | Result examples | Notes |\n * |---------------------------------|---------|-----------------------------------|-------|\n * | Era | G..GGG | AD, BC | |\n * | | GGGG | Anno Domini, Before Christ | 2 |\n * | | GGGGG | A, B | |\n * | Calendar year | y | 44, 1, 1900, 2017 | 5 |\n * | | yo | 44th, 1st, 0th, 17th | 5,7 |\n * | | yy | 44, 01, 00, 17 | 5 |\n * | | yyy | 044, 001, 1900, 2017 | 5 |\n * | | yyyy | 0044, 0001, 1900, 2017 | 5 |\n * | | yyyyy | ... | 3,5 |\n * | Local week-numbering year | Y | 44, 1, 1900, 2017 | 5 |\n * | | Yo | 44th, 1st, 1900th, 2017th | 5,7 |\n * | | YY | 44, 01, 00, 17 | 5,8 |\n * | | YYY | 044, 001, 1900, 2017 | 5 |\n * | | YYYY | 0044, 0001, 1900, 2017 | 5,8 |\n * | | YYYYY | ... | 3,5 |\n * | ISO week-numbering year | R | -43, 0, 1, 1900, 2017 | 5,7 |\n * | | RR | -43, 00, 01, 1900, 2017 | 5,7 |\n * | | RRR | -043, 000, 001, 1900, 2017 | 5,7 |\n * | | RRRR | -0043, 0000, 0001, 1900, 2017 | 5,7 |\n * | | RRRRR | ... | 3,5,7 |\n * | Extended year | u | -43, 0, 1, 1900, 2017 | 5 |\n * | | uu | -43, 01, 1900, 2017 | 5 |\n * | | uuu | -043, 001, 1900, 2017 | 5 |\n * | | uuuu | -0043, 0001, 1900, 2017 | 5 |\n * | | uuuuu | ... | 3,5 |\n * | Quarter (formatting) | Q | 1, 2, 3, 4 | |\n * | | Qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | QQ | 01, 02, 03, 04 | |\n * | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | q | 1, 2, 3, 4 | |\n * | | qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | qq | 01, 02, 03, 04 | |\n * | | qqq | Q1, Q2, Q3, Q4 | |\n * | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | qqqqq | 1, 2, 3, 4 | 4 |\n * | Month (formatting) | M | 1, 2, ..., 12 | |\n * | | Mo | 1st, 2nd, ..., 12th | 7 |\n * | | MM | 01, 02, ..., 12 | |\n * | | MMM | Jan, Feb, ..., Dec | |\n * | | MMMM | January, February, ..., December | 2 |\n * | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | L | 1, 2, ..., 12 | |\n * | | Lo | 1st, 2nd, ..., 12th | 7 |\n * | | LL | 01, 02, ..., 12 | |\n * | | LLL | Jan, Feb, ..., Dec | |\n * | | LLLL | January, February, ..., December | 2 |\n * | | LLLLL | J, F, ..., D | |\n * | Local week of year | w | 1, 2, ..., 53 | |\n * | | wo | 1st, 2nd, ..., 53th | 7 |\n * | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | I | 1, 2, ..., 53 | 7 |\n * | | Io | 1st, 2nd, ..., 53th | 7 |\n * | | II | 01, 02, ..., 53 | 7 |\n * | Day of month | d | 1, 2, ..., 31 | |\n * | | do | 1st, 2nd, ..., 31st | 7 |\n * | | dd | 01, 02, ..., 31 | |\n * | Day of year | D | 1, 2, ..., 365, 366 | 9 |\n * | | Do | 1st, 2nd, ..., 365th, 366th | 7 |\n * | | DD | 01, 02, ..., 365, 366 | 9 |\n * | | DDD | 001, 002, ..., 365, 366 | |\n * | | DDDD | ... | 3 |\n * | Day of week (formatting) | E..EEE | Mon, Tue, Wed, ..., Sun | |\n * | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | EEEEE | M, T, W, T, F, S, S | |\n * | | EEEEEE | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | ISO day of week (formatting) | i | 1, 2, 3, ..., 7 | 7 |\n * | | io | 1st, 2nd, ..., 7th | 7 |\n * | | ii | 01, 02, ..., 07 | 7 |\n * | | iii | Mon, Tue, Wed, ..., Sun | 7 |\n * | | iiii | Monday, Tuesday, ..., Sunday | 2,7 |\n * | | iiiii | M, T, W, T, F, S, S | 7 |\n * | | iiiiii | Mo, Tu, We, Th, Fr, Sa, Su | 7 |\n * | Local day of week (formatting) | e | 2, 3, 4, ..., 1 | |\n * | | eo | 2nd, 3rd, ..., 1st | 7 |\n * | | ee | 02, 03, ..., 01 | |\n * | | eee | Mon, Tue, Wed, ..., Sun | |\n * | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | eeeee | M, T, W, T, F, S, S | |\n * | | eeeeee | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | Local day of week (stand-alone) | c | 2, 3, 4, ..., 1 | |\n * | | co | 2nd, 3rd, ..., 1st | 7 |\n * | | cc | 02, 03, ..., 01 | |\n * | | ccc | Mon, Tue, Wed, ..., Sun | |\n * | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | ccccc | M, T, W, T, F, S, S | |\n * | | cccccc | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | AM, PM | a..aa | AM, PM | |\n * | | aaa | am, pm | |\n * | | aaaa | a.m., p.m. | 2 |\n * | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | b..bb | AM, PM, noon, midnight | |\n * | | bbb | am, pm, noon, midnight | |\n * | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | bbbbb | a, p, n, mi | |\n * | Flexible day period | B..BBB | at night, in the morning, ... | |\n * | | BBBB | at night, in the morning, ... | 2 |\n * | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | h | 1, 2, ..., 11, 12 | |\n * | | ho | 1st, 2nd, ..., 11th, 12th | 7 |\n * | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | H | 0, 1, 2, ..., 23 | |\n * | | Ho | 0th, 1st, 2nd, ..., 23rd | 7 |\n * | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | K | 1, 2, ..., 11, 0 | |\n * | | Ko | 1st, 2nd, ..., 11th, 0th | 7 |\n * | | KK | 01, 02, ..., 11, 00 | |\n * | Hour [1-24] | k | 24, 1, 2, ..., 23 | |\n * | | ko | 24th, 1st, 2nd, ..., 23rd | 7 |\n * | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | m | 0, 1, ..., 59 | |\n * | | mo | 0th, 1st, ..., 59th | 7 |\n * | | mm | 00, 01, ..., 59 | |\n * | Second | s | 0, 1, ..., 59 | |\n * | | so | 0th, 1st, ..., 59th | 7 |\n * | | ss | 00, 01, ..., 59 | |\n * | Fraction of second | S | 0, 1, ..., 9 | |\n * | | SS | 00, 01, ..., 99 | |\n * | | SSS | 000, 001, ..., 999 | |\n * | | SSSS | ... | 3 |\n * | Timezone (ISO-8601 w/ Z) | X | -08, +0530, Z | |\n * | | XX | -0800, +0530, Z | |\n * | | XXX | -08:00, +05:30, Z | |\n * | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | x | -08, +0530, +00 | |\n * | | xx | -0800, +0530, +0000 | |\n * | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Timezone (GMT) | O...OOO | GMT-8, GMT+5:30, GMT+0 | |\n * | | OOOO | GMT-08:00, GMT+05:30, GMT+00:00 | 2 |\n * | Timezone (specific non-locat.) | z...zzz | GMT-8, GMT+5:30, GMT+0 | 6 |\n * | | zzzz | GMT-08:00, GMT+05:30, GMT+00:00 | 2,6 |\n * | Seconds timestamp | t | 512969520 | 7 |\n * | | tt | ... | 3,7 |\n * | Milliseconds timestamp | T | 512969520900 | 7 |\n * | | TT | ... | 3,7 |\n * | Long localized date | P | 04/29/1453 | 7 |\n * | | PP | Apr 29, 1453 | 7 |\n * | | PPP | April 29th, 1453 | 7 |\n * | | PPPP | Friday, April 29th, 1453 | 2,7 |\n * | Long localized time | p | 12:00 AM | 7 |\n * | | pp | 12:00:00 AM | 7 |\n * | | ppp | 12:00:00 AM GMT+2 | 7 |\n * | | pppp | 12:00:00 AM GMT+02:00 | 2,7 |\n * | Combination of date and time | Pp | 04/29/1453, 12:00 AM | 7 |\n * | | PPpp | Apr 29, 1453, 12:00:00 AM | 7 |\n * | | PPPppp | April 29th, 1453 at ... | 7 |\n * | | PPPPpppp| Friday, April 29th, 1453 at ... | 2,7 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table (e.g. `EEEEEEEEEEE`)\n * the output will be the same as default pattern for this unit, usually\n * the longest one (in case of ISO weekdays, `EEEE`). Default patterns for units\n * are marked with \"2\" in the last column of the table.\n *\n * `format(new Date(2017, 10, 6), 'MMM') //=> 'Nov'`\n *\n * `format(new Date(2017, 10, 6), 'MMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMM') //=> 'N'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMMM') //=> 'November'`\n *\n * 3. Some patterns could be unlimited length (such as `yyyyyyyy`).\n * The output will be padded with zeros to match the length of the pattern.\n *\n * `format(new Date(2017, 10, 6), 'yyyyyyyy') //=> '00002017'`\n *\n * 4. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 5. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` always returns the last two digits of a year,\n * while `uu` pads single digit years to 2 characters and returns other years unchanged:\n *\n * | Year | `yy` | `uu` |\n * |------|------|------|\n * | 1 | 01 | 01 |\n * | 14 | 14 | 14 |\n * | 376 | 76 | 376 |\n * | 1453 | 53 | 1453 |\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [getISOWeekYear]{@link https://date-fns.org/docs/getISOWeekYear}\n * and [getWeekYear]{@link https://date-fns.org/docs/getWeekYear}).\n *\n * 6. Specific non-location timezones are currently unavailable in `date-fns`,\n * so right now these tokens fall back to GMT timezones.\n *\n * 7. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `t`: seconds timestamp\n * - `T`: milliseconds timestamp\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 8. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n * You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 9. `D` and `DD` tokens represent days of the year but they are often confused with days of the month.\n * You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * @param {Date|Number} date - the original date\n * @param {String} format - the string of tokens\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {Number} [options.firstWeekContainsDate=1] - the day of January, which is\n * @param {Boolean} [options.useAdditionalWeekYearTokens=false] - if true, allows usage of the week-numbering year tokens `YY` and `YYYY`;\n * see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @param {Boolean} [options.useAdditionalDayOfYearTokens=false] - if true, allows usage of the day of year tokens `D` and `DD`;\n * see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @returns {String} the formatted date string\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `options.locale` must contain `localize` property\n * @throws {RangeError} `options.locale` must contain `formatLong` property\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} format string contains an unescaped latin alphabet character\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * const result = format(new Date(2014, 1, 11), 'MM/dd/yyyy')\n * //=> '02/11/2014'\n *\n * @example\n * // Represent 2 July 2014 in Esperanto:\n * import { eoLocale } from 'date-fns/locale/eo'\n * const result = format(new Date(2014, 6, 2), \"do 'de' MMMM yyyy\", {\n * locale: eoLocale\n * })\n * //=> '2-a de julio 2014'\n *\n * @example\n * // Escape string by single quote characters:\n * const result = format(new Date(2014, 6, 2, 15), \"h 'o''clock'\")\n * //=> \"3 o'clock\"\n */\n\nexport default function format(dirtyDate, dirtyFormatStr, options) {\n var _ref, _options$locale, _ref2, _ref3, _ref4, _options$firstWeekCon, _options$locale2, _options$locale2$opti, _defaultOptions$local, _defaultOptions$local2, _ref5, _ref6, _ref7, _options$weekStartsOn, _options$locale3, _options$locale3$opti, _defaultOptions$local3, _defaultOptions$local4;\n requiredArgs(2, arguments);\n var formatStr = String(dirtyFormatStr);\n var defaultOptions = getDefaultOptions();\n var locale = (_ref = (_options$locale = options === null || options === void 0 ? void 0 : options.locale) !== null && _options$locale !== void 0 ? _options$locale : defaultOptions.locale) !== null && _ref !== void 0 ? _ref : defaultLocale;\n var firstWeekContainsDate = toInteger((_ref2 = (_ref3 = (_ref4 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale2 = options.locale) === null || _options$locale2 === void 0 ? void 0 : (_options$locale2$opti = _options$locale2.options) === null || _options$locale2$opti === void 0 ? void 0 : _options$locale2$opti.firstWeekContainsDate) !== null && _ref4 !== void 0 ? _ref4 : defaultOptions.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : 1);\n\n // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n var weekStartsOn = toInteger((_ref5 = (_ref6 = (_ref7 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale3 = options.locale) === null || _options$locale3 === void 0 ? void 0 : (_options$locale3$opti = _options$locale3.options) === null || _options$locale3$opti === void 0 ? void 0 : _options$locale3$opti.weekStartsOn) !== null && _ref7 !== void 0 ? _ref7 : defaultOptions.weekStartsOn) !== null && _ref6 !== void 0 ? _ref6 : (_defaultOptions$local3 = defaultOptions.locale) === null || _defaultOptions$local3 === void 0 ? void 0 : (_defaultOptions$local4 = _defaultOptions$local3.options) === null || _defaultOptions$local4 === void 0 ? void 0 : _defaultOptions$local4.weekStartsOn) !== null && _ref5 !== void 0 ? _ref5 : 0);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n if (!locale.localize) {\n throw new RangeError('locale must contain localize property');\n }\n if (!locale.formatLong) {\n throw new RangeError('locale must contain formatLong property');\n }\n var originalDate = toDate(dirtyDate);\n if (!isValid(originalDate)) {\n throw new RangeError('Invalid time value');\n }\n\n // Convert the date in system timezone to the same date in UTC+00:00 timezone.\n // This ensures that when UTC functions will be implemented, locales will be compatible with them.\n // See an issue about UTC functions: https://github.com/date-fns/date-fns/issues/376\n var timezoneOffset = getTimezoneOffsetInMilliseconds(originalDate);\n var utcDate = subMilliseconds(originalDate, timezoneOffset);\n var formatterOptions = {\n firstWeekContainsDate: firstWeekContainsDate,\n weekStartsOn: weekStartsOn,\n locale: locale,\n _originalDate: originalDate\n };\n var result = formatStr.match(longFormattingTokensRegExp).map(function (substring) {\n var firstCharacter = substring[0];\n if (firstCharacter === 'p' || firstCharacter === 'P') {\n var longFormatter = longFormatters[firstCharacter];\n return longFormatter(substring, locale.formatLong);\n }\n return substring;\n }).join('').match(formattingTokensRegExp).map(function (substring) {\n // Replace two single quote characters with one single quote character\n if (substring === \"''\") {\n return \"'\";\n }\n var firstCharacter = substring[0];\n if (firstCharacter === \"'\") {\n return cleanEscapedString(substring);\n }\n var formatter = formatters[firstCharacter];\n if (formatter) {\n if (!(options !== null && options !== void 0 && options.useAdditionalWeekYearTokens) && isProtectedWeekYearToken(substring)) {\n throwProtectedError(substring, dirtyFormatStr, String(dirtyDate));\n }\n if (!(options !== null && options !== void 0 && options.useAdditionalDayOfYearTokens) && isProtectedDayOfYearToken(substring)) {\n throwProtectedError(substring, dirtyFormatStr, String(dirtyDate));\n }\n return formatter(utcDate, substring, locale.localize, formatterOptions);\n }\n if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n throw new RangeError('Format string contains an unescaped latin alphabet character `' + firstCharacter + '`');\n }\n return substring;\n }).join('');\n return result;\n}\nfunction cleanEscapedString(input) {\n var matched = input.match(escapedStringRegExp);\n if (!matched) {\n return input;\n }\n return matched[1].replace(doubleQuoteRegExp, \"'\");\n}","import React, { Component, createRef } from 'react';\nimport isEqual from 'react-fast-compare';\nimport PropTypes from 'prop-types';\n\nimport Column from '../../../../layout/Column';\nimport Row from '../../../../layout/Row';\nimport Button from '../../../../components/Button';\n\nexport default class EditableListForm extends Component {\n static propTypes = {\n addValueOnFieldChange: PropTypes.bool,\n noLabels: PropTypes.bool,\n buttonName: PropTypes.string,\n buttonStyle: PropTypes.string,\n components: PropTypes.instanceOf(Array),\n displayType: PropTypes.string,\n disabled: PropTypes.bool,\n getMainFormButtonWidth: PropTypes.func,\n error: PropTypes.string,\n errorPersist: PropTypes.bool,\n onSubmit: PropTypes.func,\n validate: PropTypes.func,\n validationmessage: PropTypes.string,\n };\n\n static getMainFormValue(components) {\n const mainFormValue = new Array(components.length);\n\n components.forEach((component, index) => {\n mainFormValue[index] = component.props.value || undefined;\n });\n\n return mainFormValue;\n }\n\n constructor(props) {\n super(props);\n const {\n components,\n } = props;\n\n this.submitButtonRef = createRef();\n this.handleOnChange = this.handleOnChange.bind(this);\n this.submitForm = this.submitForm.bind(this);\n\n this.state = {\n components,\n errors: {},\n mainError: null,\n mainFormValue: EditableListForm.getMainFormValue(components),\n refs: [],\n };\n }\n\n componentDidMount() {\n const {\n addValueOnFieldChange,\n getMainFormButtonWidth,\n } = this.props;\n this.createRefs();\n\n if (getMainFormButtonWidth) {\n getMainFormButtonWidth(\n !addValueOnFieldChange\n ? this.submitButtonRef.current.clientWidth\n : 0,\n );\n }\n }\n\n static getDerivedStateFromProps(nextProps, prevState) {\n const state = {};\n const {\n components: propsComponents,\n } = nextProps;\n\n const {\n components: stateComponents,\n } = prevState;\n if (\n !isEqual(propsComponents, stateComponents)\n && !isEqual(\n EditableListForm.getMainFormValue(propsComponents),\n EditableListForm.getMainFormValue(stateComponents),\n )\n ) {\n state.mainFormValue = EditableListForm.getMainFormValue(propsComponents);\n state.components = propsComponents;\n }\n\n return state;\n }\n\n getFormCssClasses() {\n const { noLabels } = this.props;\n const cssClasses = ['tyk-editable-list__form'];\n\n if (noLabels) {\n cssClasses.push('no-labels');\n }\n\n return cssClasses.join(' ');\n }\n\n getButtonClassName() {\n const { buttonStyle, displayType } = this.props;\n const cssClasses = [];\n\n if (buttonStyle) {\n cssClasses.push(buttonStyle);\n }\n\n if (displayType) {\n cssClasses.push(displayType);\n }\n\n return cssClasses.join(' ');\n }\n\n getComponentsError(component) {\n const {\n error,\n errors,\n mainError,\n } = this.state;\n\n if (error || mainError) {\n errors[component.props.name] = 'true';\n } else if (!(error || mainError) && errors[component.props.name] === 'true') {\n delete errors[component.props.name];\n }\n\n return errors[component.props.name] ? errors[component.props.name].toString() : undefined;\n }\n\n createRefs() {\n const { components } = this.props;\n const refs = [];\n\n components.forEach(() => {\n refs.push(createRef());\n });\n\n this.setState({\n refs,\n });\n }\n\n validateValue(value, props) {\n const { mainError, errors } = this.state;\n const { error, errorPersist } = this.props;\n\n const validatorsNames = props.validate ? Object.keys(props.validate) : [];\n // if there is a general form error don't take field errors into consideration\n const tempState = {\n errors: (error || mainError) ? {} : Object.assign({}, errors),\n };\n let ok = true;\n\n // if the error should stay after changing fields values don't take actions\n if (errorPersist) {\n return tempState;\n }\n\n // validate each field from the form\n for (let i = 0; i < validatorsNames.length; i += 1) {\n const validator = props.validate[validatorsNames[i]];\n if (validator(value)) {\n tempState.errors[props.name] = props.validationmessages[validatorsNames[i]];\n ok = false;\n break;\n }\n }\n\n // if the field is ok delete its error\n if (ok) {\n delete tempState.errors[props.name];\n }\n\n tempState.mainError = null;\n\n return tempState;\n }\n\n hasMainFormErrors(errors) {\n const { components, errorPersist } = this.props;\n const { mainFormValue } = this.state;\n const tempState = {\n errors: Object.assign({}, errors),\n };\n\n if (errorPersist && mainFormValue.indexOf(undefined) === -1) {\n return false;\n }\n\n if (Object.keys(tempState.errors).length > 0) {\n return true;\n }\n\n components.forEach((component, index) => {\n tempState.errors = Object.assign(\n {},\n tempState.errors,\n this.validateValue(mainFormValue[index], component.props).errors,\n );\n });\n\n return Object.keys(tempState.errors).length > 0;\n }\n\n handleOnChange(component, index, value) {\n const { addValueOnFieldChange } = this.props;\n let tempState = this.state;\n\n tempState = Object.assign({}, tempState, this.validateValue(value, component.props));\n\n if (!tempState.errors[component.props.name]) {\n tempState.mainFormValue[index] = value;\n\n if (component.props.onChange) {\n component.props.onChange(value);\n }\n }\n\n this.setState(previousState => Object.assign({}, previousState, tempState), () => {\n if (addValueOnFieldChange) {\n this.submitForm();\n }\n });\n }\n\n resetForm() {\n const { refs } = this.state;\n const {\n components,\n } = this.props;\n\n refs.forEach((ref) => {\n if (ref.current?.reset) {\n ref.current.reset();\n }\n });\n\n this.setState({\n errors: {},\n mainError: null,\n mainFormValue: EditableListForm.getMainFormValue(components),\n });\n }\n\n showMainError(error) {\n this.setState({\n mainError: error,\n });\n }\n\n submitForm() {\n const { errors, mainFormValue } = this.state;\n const {\n errorPersist, onSubmit, validate, validationmessage,\n } = this.props;\n\n if (errorPersist) {\n onSubmit(mainFormValue);\n this.resetForm();\n }\n\n if (\n Object.keys(errors).length === 0\n && (onSubmit && typeof onSubmit === 'function')\n ) {\n if (validate) {\n if (validate(mainFormValue)) {\n this.showMainError(validationmessage);\n } else {\n onSubmit(mainFormValue);\n this.resetForm();\n }\n } else {\n onSubmit(mainFormValue);\n this.resetForm();\n }\n }\n }\n\n render() {\n const {\n addValueOnFieldChange, components, buttonName, disabled, displayType, error,\n } = this.props;\n const {\n mainError, refs, errors,\n } = this.state;\n\n return (\n
    \n
    \n \n {\n components.map((component, index) => {\n const ComponentName = component.name;\n const {\n onChange, value, ...rest\n } = component.props;\n\n return (\n \n \n \n );\n })\n }\n \n {\n !addValueOnFieldChange\n ? (\n \n \n { buttonName || 'ADD' }\n \n \n )\n : null\n }\n
    \n {\n error || mainError\n ? (\n
    \n

    \n { error || mainError }\n

    \n
    \n )\n : null\n }\n
    \n );\n }\n}\n","import React, { Component, Fragment, createRef } from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport { fromJS } from 'immutable';\n\nimport format from 'date-fns/format';\nimport isDate from 'date-fns/isDate';\n\nimport EditableListForm from './js/EditableListForm';\nimport Column from '../../../layout/Column';\nimport Icon from '../../../components/Icon';\nimport Row from '../../../layout/Row';\n\nexport default class EditableList extends Component {\n static propTypes = {\n addValueOnFieldChange: PropTypes.bool,\n disabled: PropTypes.bool,\n error: PropTypes.string,\n config: PropTypes.instanceOf(Object),\n onChange: PropTypes.func,\n label: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.func,\n PropTypes.string,\n ]),\n value: PropTypes.oneOfType([\n PropTypes.instanceOf(Array),\n PropTypes.instanceOf(Object),\n ]),\n };\n\n static getItemListValue(itemValue) {\n let tempValue = null;\n\n if (typeof itemValue === 'string') {\n tempValue = itemValue;\n }\n\n if (Object.prototype.toString.call(itemValue) === '[object Object]') {\n tempValue = itemValue.name;\n }\n\n if (isDate(itemValue)) {\n tempValue = format(itemValue, 'dd/MM/yyyy');\n }\n\n return tempValue;\n }\n\n static getListItemCssClass(displayType) {\n const cssClasses = [];\n\n if (displayType === 'inline') {\n cssClasses.push('tyk-editable-list-item--inline');\n }\n\n return cssClasses.join(' ');\n }\n\n constructor(props) {\n super(props);\n const {\n value,\n } = this.props;\n\n this.state = {\n initialValue: value || '',\n value: value || [],\n buttonWidth: 0,\n };\n\n this.startIndex = 1;\n\n this.handleFormSubmit = this.handleFormSubmit.bind(this);\n this.getMainFormButtonWidth = this.getMainFormButtonWidth.bind(this);\n this.dropdownListItemRef = createRef();\n }\n\n static getDerivedStateFromProps(nextProps, prevState) {\n const state = {};\n\n if (\n nextProps.value && JSON.stringify(nextProps.value)\n !== JSON.stringify(prevState.initialValue)\n ) {\n state.value = nextProps.value || [];\n state.initialValue = nextProps.value || '';\n }\n\n return state.value ? state : null;\n }\n\n getListItemsCssClass(displayType) {\n const { config } = this.props;\n const cssClasses = ['tyk-editable-list-items'];\n\n cssClasses.push(config.displayType || 'table');\n\n if (displayType === 'inline') {\n cssClasses.push('tyk-editable-list-items--inline');\n }\n\n return cssClasses.join(' ');\n }\n\n getFormInputKey() {\n this.startIndex += 1;\n return this.startIndex;\n }\n\n // generate list item value's based on the display types\n // table, inline, list\n getListItemText(itemData) {\n const { config } = this.props;\n let value = null;\n\n switch (config.displayType) {\n case 'list':\n case 'inline': {\n const itemText = itemData.value.reduce((prevValue, itemValue, index) => {\n const tempValue = EditableList.getItemListValue(itemValue);\n let separator = ', ';\n\n if (index === itemData.value.length - 1) {\n separator = '';\n }\n\n return prevValue + tempValue + separator;\n }, '');\n\n value = itemText;\n\n break;\n }\n default:\n value = (\n \n {\n config.components.map((component, index) => (\n \n { EditableList.getItemListValue(itemData.value[index]) }\n \n ))\n }\n \n );\n\n break;\n }\n\n return value;\n }\n\n getMainFormButtonWidth(value) {\n this.setState({\n buttonWidth: value,\n });\n }\n\n setItemEditMode(index) {\n const newValues = this.closeListItems();\n\n this.setState((previousState) => {\n const tempState = Object.assign({}, previousState);\n tempState.value = newValues;\n tempState.value[index].editMode = !tempState.value[index].editMode;\n\n return tempState;\n });\n }\n\n isInList(index, itemValue) {\n const { value } = this.state;\n let ok = false;\n\n value.forEach((item, itemIndex) => {\n if (JSON.stringify(item.value) === JSON.stringify(itemValue)) {\n if (index >= 0 && itemIndex === index) {\n ok = false;\n } else {\n ok = true;\n }\n }\n });\n\n return ok;\n }\n\n addValues(newValue) {\n const { value } = this.state;\n const { config } = this.props;\n const itemValue = {\n editMode: false,\n value: newValue,\n };\n const tempState = {\n value: value.slice(0),\n };\n\n if (config.children) {\n itemValue.children = [];\n }\n\n tempState.value.push(itemValue);\n\n return tempState;\n }\n\n removeListItem(index) {\n let removedItem;\n this.setState((previousState) => {\n const valueArr = previousState.value.slice(0);\n removedItem = valueArr.splice(index, 1);\n\n return {\n value: valueArr,\n };\n }, () => {\n this.triggerOnChange(index, removedItem, null);\n });\n }\n\n handleFormSubmit(value) {\n const tempState = this.addValues(value);\n this.setState(previousState => Object.assign({}, previousState, tempState), () => {\n this.triggerOnChange(tempState.value.length - 1, null, value);\n });\n }\n\n handleItemUpdate(index, value) {\n let prevValue;\n this.setState((previousState) => {\n const tempState = Object.assign({}, previousState);\n prevValue = fromJS(tempState.value[index].value).toJS();\n tempState.value[index].value = value;\n tempState.value[index].editMode = false;\n\n return tempState;\n }, () => {\n this.triggerOnChange(index, prevValue, value);\n });\n }\n\n handleChildrenOnChange(index, value) {\n let prevValue;\n this.setState((previousState) => {\n const tempState = Object.assign({}, previousState);\n prevValue = fromJS(tempState.value[index].children).toJS();\n tempState.value[index].children = value;\n\n return tempState;\n }, () => {\n this.triggerOnChange(index, prevValue, value);\n });\n }\n\n closeListItems() {\n const { value } = this.state;\n\n const newValues = value.map((itemValue) => {\n const tempItemValue = Object.assign({}, itemValue);\n\n if (tempItemValue.editMode) {\n tempItemValue.editMode = false;\n return tempItemValue;\n }\n\n return tempItemValue;\n });\n\n return newValues;\n }\n\n triggerOnChange(index, prevValue, nextValue) {\n const { onChange } = this.props;\n const { value } = this.state;\n\n if (onChange && typeof onChange === 'function') {\n onChange(((value.length) ? value : null), index, prevValue, nextValue);\n }\n }\n\n genListItem(itemData, index) {\n const { config, disabled } = this.props;\n const { buttonWidth, value } = this.state;\n\n const clonedComponents = fromJS(config.components).toJS();\n\n itemData.value.forEach((itemValue, itemIndex) => {\n clonedComponents[itemIndex].props.value = itemValue;\n });\n\n return (\n \n \n {\n !itemData.editMode\n ? (\n \n { this.getListItemText(itemData, index) }\n \n \n \n \n \n )\n : (\n \n \n \n \n )\n }\n \n {\n config.children\n ? (\n \n )\n : null\n }\n \n );\n }\n\n genList() {\n const { config } = this.props;\n const { buttonWidth, value } = this.state;\n\n if (!value || value.length === 0) {\n return null;\n }\n\n return (\n \n {\n config.displayType === 'table' || !config.displayType\n ? (\n \n \n {\n config.components.map((component, index) => (\n \n { component.props.label }\n \n ))\n }\n \n \n )\n : null\n }\n
      \n {\n value.map((itemData, index) => this.genListItem(itemData, index))\n }\n
    \n
    \n );\n }\n\n render() {\n const {\n addValueOnFieldChange, config, error, disabled, label,\n } = this.props;\n const appendToElement = document.querySelector(config.appendTo) || document.querySelector('body');\n\n return (\n
    \n {\n label\n ? \n : null\n }\n \n {\n config.appendTo\n ? ReactDOM.createPortal(\n this.genList(),\n appendToElement,\n )\n : this.genList()\n }\n
    \n );\n }\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport Button from '../../../components/Button';\n\nconst Header = ({\n label, addButtonName, onAddRow, disabled, readOnly,\n}) => (\n
    \n {\n label\n ? \n : null\n }\n {!disabled && !readOnly && (\n \n {addButtonName || 'Add'}\n \n )}\n
    \n);\n\nHeader.propTypes = {\n disabled: PropTypes.bool,\n readOnly: PropTypes.bool,\n onAddRow: PropTypes.func,\n addButtonName: PropTypes.string,\n label: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.element,\n PropTypes.node,\n ]),\n};\n\nexport default Header;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nconst ListHeader = ({\n fields,\n readOnly,\n}) => (\n
  • \n {\n fields.map(field => (\n
    {field?.props?.label}
    \n ))\n }\n
    Delete
    \n
  • \n);\n\nListHeader.propTypes = {\n fields: PropTypes.instanceOf(Array),\n readOnly: PropTypes.bool,\n};\n\nexport default ListHeader;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Button from '../../../components/Button';\n\nconst FieldsList = ({\n fields,\n disabled,\n readOnly,\n errors,\n components,\n onChange,\n onDelete,\n value,\n rowIndex,\n}) => (\n
  • \n {\n components.map((Component, index) => {\n let field = fields[index];\n let tempField = typeof field === 'function' ? field(rowIndex, index) : field;\n return (\n /* eslint-disable-next-line */\n
    \n \n
    \n );\n })\n }\n
    \n \n
    \n
  • \n);\n\nFieldsList.propTypes = {\n disabled: PropTypes.bool,\n readOnly: PropTypes.bool,\n rowIndex: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number,\n ]),\n fields: PropTypes.instanceOf(Array),\n errors: PropTypes.instanceOf(Array),\n components: PropTypes.instanceOf(Array),\n value: PropTypes.instanceOf(Array),\n onChange: PropTypes.func,\n onDelete: PropTypes.func,\n};\n\nexport default FieldsList;\n","const validateValues = (fields, rowValues) => (rowValues || [[undefined, undefined]])?.map(\n colValue => colValue?.map(\n (value, index) => fields?.[index]?.props?.validate\n && fields[index].props.validate(value),\n ),\n);\n\nexport default validateValues;\n","import React, { useCallback, useState } from 'react';\n\nconst withValidation = Component => ({\n onChange,\n validate,\n error,\n ...rest\n}) => {\n const [internalError, setInternalError] = useState(null);\n const onFieldChange = useCallback((event) => {\n /* eslint-disable-next-line */\n const value = event?.target\n ? ['radio', 'checkbox'].includes(event.target.type)\n ? event.target.checked\n : event?.target.value\n : event;\n\n let isValid = true;\n if (validate && typeof validate === 'function') {\n const errorMsg = validate(value);\n isValid = !errorMsg;\n setInternalError(errorMsg);\n }\n\n onChange(value, isValid);\n }, [validate, onChange]);\n\n return ;\n};\n\nexport default withValidation;\n","import React, { useMemo, useState } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Header from './Header';\nimport ListHeader from './ListHeader';\nimport FieldsList from './FieldsList';\nimport validateValues from './validate-values';\nimport withValidation from './with-validation';\n\nlet id = 1;\n/* eslint-disable-next-line */\nconst getUID = prefix => `${prefix}-${id++}`;\n\n/**\n * Editable list is a component, that lists rows of form elements (can have n elements on a row),\n * and stores the values of all the rows in an Array list\n */\nconst EditableList2 = ({\n addButtonName,\n disabled,\n readOnly,\n fields,\n label,\n error,\n value = [],\n onChange = () => {},\n hideOnEmpty = true,\n wrapperClassName = '',\n}) => {\n const [internalErrors, setInteranlErrors] = useState(null);\n\n const updateRowValue = (rowIndex, fieldIndex, componentValue, isValid) => {\n const tempValueArr = !value ? [] : [...value];\n\n if (!value) {\n tempValueArr[rowIndex] = [...new Array(fields.length)];\n tempValueArr[rowIndex][fieldIndex] = componentValue;\n } else {\n const tempValue = [...tempValueArr[rowIndex]];\n tempValue[fieldIndex] = componentValue;\n tempValueArr[rowIndex] = tempValue;\n tempValueArr[rowIndex].id = value[rowIndex].id;\n }\n\n if (internalErrors?.[rowIndex]?.[fieldIndex] && isValid) {\n const tempErrors = [...internalErrors];\n const tempFieldError = [...tempErrors[rowIndex]];\n tempFieldError[fieldIndex] = null;\n tempErrors[rowIndex] = tempFieldError;\n setInteranlErrors(tempErrors);\n }\n onChange(tempValueArr);\n };\n\n const hasErrors = errors => Boolean(errors?.flat()?.filter(Boolean).length);\n\n const Components = useMemo(\n () => fields.map(field => {\n let tempField = typeof field === 'function' ? field() : field;\n\n return withValidation(tempField?.component || <>)\n }),\n [],\n );\n\n const onAddRow = () => {\n const errors = validateValues(fields, value);\n\n if (hasErrors(errors)) {\n setInteranlErrors(errors);\n return;\n }\n\n const newValue = [...new Array(fields.length)];\n newValue.id = getUID('row');\n\n onChange([\n ...value && value,\n newValue,\n ]);\n };\n\n const deleteRow = (index) => {\n if (!value) {\n return;\n }\n const tempValue = [...value];\n tempValue.splice(index, 1);\n onChange(tempValue);\n };\n\n return (\n
    \n \n {value?.length || !hideOnEmpty ? (\n
      \n {(value || [[]]).map((v, i) => (\n <>\n \n \n ))}\n \n
    \n ) : null}\n {error && error !== 'true' && error !== 'false' ? (\n

    {error}

    \n ) : null}\n
    \n );\n};\n\nEditableList2.propTypes = {\n /** Sets Editable list in edit mode.\n * If enabled all fields are disabled, the add button is hidden and delete button is disabled\n * */\n disabled: PropTypes.bool,\n /** Sets Editable list in read only mode.\n * If enabled all fields are displaying just the value,\n * the add button is hidden and delete button is disabled\n */\n readOnly: PropTypes.bool,\n /** Name of the Add button. By default has 'Add value' */\n addButtonName: PropTypes.string,\n /** Label of Editable list, is displayed above the list and inline with the Add button */\n label: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.element,\n PropTypes.node,\n ]),\n /** Array of form elements that you want the list to have\n * Each field is an object points to the Form element component that you want to use,\n * the props you want to apply on it,\n * and the size (as in width, it's like columns system, between 1 and 12)\n * Example:\n * ...\n * fields={[\n {\n component: Input2,\n styles: {\n width: \"200px\",\n },\n size: 4,\n props: {\n name: 'input',\n label: 'Claim name',\n theme: 'default rounded-corners',\n placeholder: 'Enter claim name',\n validate: formikRequired('This field is required')\n }\n },\n {\n component: Combobox2,\n size: 8,\n props: comboboxProps\n }\n ]}\n */\n fields: PropTypes.instanceOf(Array),\n /** onChange function is called everytime the value of editable list changes */\n onChange: PropTypes.func,\n /** value of editable list, wich is an Array (List of row values)\n * of Arrays (List of column values,\n * each column will have the value format depending on the component type)\n */\n value: PropTypes.oneOfType([\n PropTypes.instanceOf(Object),\n PropTypes.instanceOf(Array),\n ]),\n error: PropTypes.string,\n hideOnEmpty: PropTypes.bool,\n wrapperClassName: PropTypes.string,\n};\n\nexport default EditableList2;\n","import React, { Component, Fragment, createRef } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Icon from '../../../components/Icon';\n\nexport default class FileInput extends Component {\n static propTypes = {\n accept: PropTypes.string,\n disabled: PropTypes.bool,\n id: PropTypes.string,\n error: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.bool,\n ]),\n label: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.func,\n PropTypes.string,\n ]),\n labelwidth: PropTypes.string,\n name: PropTypes.string,\n note: PropTypes.string,\n onChange: PropTypes.func,\n placeholder: PropTypes.string,\n theme: PropTypes.string,\n value: PropTypes.instanceOf(Object),\n wrapperClassName: PropTypes.string,\n }\n\n constructor(props) {\n super(props);\n\n this.handleOnChange = this.handleOnChange.bind(this);\n this.clearValue = this.clearValue.bind(this);\n this.fileInputRef = createRef();\n }\n\n getCssClasses() {\n const {\n error, theme, labelwidth, wrapperClassName = '',\n } = this.props;\n const cssClasses = [wrapperClassName, 'tyk-form-group'];\n const themes = theme ? theme.split(' ') : [];\n\n if (themes.length) {\n themes.forEach((iTheme) => {\n cssClasses.push(`tyk-form-group--${iTheme}`);\n });\n }\n\n if (labelwidth) {\n cssClasses.push('tyk-form-group--label-has-width');\n }\n\n if (error) {\n cssClasses.push('has-error');\n }\n\n return cssClasses.join(' ');\n }\n\n getLabelStyles() {\n const { labelwidth } = this.props;\n const styles = {};\n\n if (labelwidth) {\n styles.flexBasis = labelwidth;\n }\n\n return styles;\n }\n\n getNonLabelWidth() {\n const { labelwidth } = this.props;\n const styles = {};\n\n if (labelwidth) {\n styles.flexBasis = `calc(100% - ${labelwidth} - 20px)`;\n }\n\n return styles;\n }\n\n getFileInputError() {\n const { error } = this.props;\n\n return (error && error !== 'true' && error !== 'false')\n ? (\n \n { error }\n

    \n )\n : null;\n }\n\n getFileInputComponent() {\n const {\n accept, value: omitValue, onChange, ...rest\n } = this.props;\n\n return (\n \n \n {\n this.fileInputRef.current && this.fileInputRef.current.files.length > 0\n ? (\n \n \n \n )\n : null\n }\n \n );\n }\n\n clearValue() {\n const { onChange } = this.props;\n this.fileInputRef.current.value = '';\n onChange('');\n }\n\n handleOnChange(e) {\n const { onChange } = this.props;\n\n onChange(e.target.files);\n }\n\n // eslint-disable-next-line class-methods-use-this\n reset() {}\n\n render() {\n const {\n id,\n label,\n note,\n } = this.props;\n\n return (\n \n
    \n {\n label\n ? \n : null\n }\n
    \n { this.getFileInputComponent() }\n {\n note\n ?

    { note }

    \n : null\n }\n
    \n { this.getFileInputError() }\n
    \n
    \n );\n }\n}\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\nexport default class Input extends Component {\n static propTypes = {\n disabled: PropTypes.bool,\n readOnly: PropTypes.bool,\n id: PropTypes.string,\n isfield: PropTypes.bool,\n error: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.bool,\n ]),\n inputgroupaddonleft: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]),\n inputgroupaddonright: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]),\n label: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.element,\n PropTypes.node,\n ]),\n labelwidth: PropTypes.string,\n name: PropTypes.string,\n note: PropTypes.string,\n onChange: PropTypes.func,\n placeholder: PropTypes.string,\n theme: PropTypes.string,\n value: PropTypes.oneOfType([\n PropTypes.number,\n PropTypes.string,\n ]),\n }\n\n static getAddon(content) {\n return (\n
    \n { content }\n
    \n );\n }\n\n constructor(props) {\n super(props);\n const {\n value,\n } = this.props;\n\n this.state = {\n initValue: value,\n stateValue: value,\n };\n\n this.handleOnChange = this.handleOnChange.bind(this);\n }\n\n componentDidUpdate(prevProps) {\n const {\n isfield,\n value,\n onChange,\n } = this.props;\n\n if (!isfield && prevProps.value !== value) {\n /* eslint-disable react/no-did-update-set-state */\n this.setState({\n stateValue: value,\n }, () => {\n if (onChange) {\n onChange(value);\n }\n });\n }\n }\n\n getLabelStyles() {\n const { labelwidth } = this.props;\n const styles = {};\n\n if (labelwidth) {\n styles.flexBasis = labelwidth;\n }\n\n return styles;\n }\n\n getNonLabelWidth() {\n const { labelwidth } = this.props;\n const styles = {};\n\n if (labelwidth) {\n styles.flexBasis = `calc(100% - ${labelwidth} - 20px)`;\n }\n\n return styles;\n }\n\n getInputError() {\n const { error } = this.props;\n\n return (error && error !== 'true' && error !== 'false')\n ? (\n \n { error }\n

    \n )\n : null;\n }\n\n getCssClasses() {\n const {\n error,\n theme,\n labelwidth,\n inputgroupaddonleft,\n inputgroupaddonright,\n } = this.props;\n const cssClasses = ['tyk-form-group'];\n const themes = theme ? theme.split(' ') : [];\n\n if (themes.length) {\n themes.forEach((iTheme) => {\n cssClasses.push(`tyk-form-group--${iTheme}`);\n });\n }\n\n if (inputgroupaddonleft) {\n cssClasses.push('tyk-form-group--addon-left');\n }\n\n if (inputgroupaddonright) {\n cssClasses.push('tyk-form-group--addon-right');\n }\n\n if (labelwidth) {\n cssClasses.push('tyk-form-group--label-has-width');\n }\n\n if (error) {\n cssClasses.push('has-error');\n }\n\n return cssClasses.join(' ');\n }\n\n getInputGroupAddon() {\n const {\n inputgroupaddonleft,\n inputgroupaddonright,\n } = this.props;\n\n return (\n
    \n {\n inputgroupaddonleft\n ? Input.getAddon(inputgroupaddonleft)\n : null\n }\n { this.getInputComponent() }\n {\n inputgroupaddonright\n ? Input.getAddon(inputgroupaddonright)\n : null\n }\n
    \n );\n }\n\n getInputComponent() {\n const {\n isfield, onChange, value, ...rest\n } = this.props;\n const { stateValue } = this.state;\n return (\n \n );\n }\n\n reset() {\n const { initValue } = this.state;\n\n this.setState({\n stateValue: initValue,\n });\n }\n\n handleOnChange(e) {\n const { onChange, isfield } = this.props;\n const inputValue = e.target.value;\n\n if (!isfield) {\n this.setState({\n stateValue: inputValue,\n }, () => {\n if (onChange) {\n onChange(inputValue);\n }\n });\n } else {\n onChange(inputValue);\n }\n }\n\n render() {\n const {\n label,\n id,\n inputgroupaddonleft,\n inputgroupaddonright,\n note,\n readOnly,\n value,\n } = this.props;\n\n return (\n
    \n {\n label\n ? \n : null\n }\n {!readOnly && (\n \n {\n inputgroupaddonleft || inputgroupaddonright\n ? this.getInputGroupAddon()\n : this.getInputComponent()\n }\n {\n note\n ?

    { note }

    \n : null\n }\n { this.getInputError() }\n
    \n )}\n {\n readOnly &&
    {value || '-'}
    \n }\n \n );\n }\n}\n","import React, { useImperativeHandle, useRef, forwardRef } from 'react';\nimport PropTypes from 'prop-types';\n\nconst Input2 = forwardRef(({\n error,\n onChange,\n readOnly,\n id,\n inputgroupaddonleft,\n inputgroupaddonright,\n label,\n labelwidth,\n note,\n theme,\n value,\n wrapperClassName = '',\n ...rest\n}, ref) => {\n const inputRef = useRef();\n\n useImperativeHandle(ref, () => ({\n focus: () => {\n inputRef.current.focus();\n },\n }));\n\n const getAddon = content => (\n
    \n { content }\n
    \n );\n\n const getLabelStyles = () => ({\n ...labelwidth && {\n flexBasis: labelwidth,\n },\n });\n\n const getNonLabelWidth = () => ({\n ...labelwidth && {\n flexBasis: `calc(100% - ${labelwidth} - 20px)`,\n },\n });\n\n const getInputError = () => (\n (error && error !== 'true' && error !== 'false')\n ? (\n \n { error }\n

    \n )\n : null\n );\n\n const getCssClasses = () => {\n const cssClasses = [wrapperClassName, 'tyk-form-group'];\n const themes = theme ? theme.split(' ') : [];\n\n if (themes.length) {\n themes.forEach((iTheme) => {\n cssClasses.push(`tyk-form-group--${iTheme}`);\n });\n }\n\n if (inputgroupaddonleft) {\n cssClasses.push('tyk-form-group--addon-left');\n }\n\n if (inputgroupaddonright) {\n cssClasses.push('tyk-form-group--addon-right');\n }\n\n if (labelwidth) {\n cssClasses.push('tyk-form-group--label-has-width');\n }\n\n if (error) {\n cssClasses.push('has-error');\n }\n\n return cssClasses.join(' ');\n };\n\n const handleOnChange = (e) => {\n onChange(e, e.target.value);\n };\n\n const getInputElement = () => (\n \n );\n\n const getInputGroupAddon = () => (\n
    \n {\n inputgroupaddonleft\n ? getAddon(inputgroupaddonleft)\n : null\n }\n { getInputElement() }\n {\n inputgroupaddonright\n ? getAddon(inputgroupaddonright)\n : null\n }\n
    \n );\n\n return (\n
    \n {\n label\n ? \n : null\n }\n {!readOnly && (\n \n {\n inputgroupaddonleft || inputgroupaddonright\n ? getInputGroupAddon()\n : getInputElement()\n }\n {\n note\n ?

    { note }

    \n : null\n }\n { getInputError() }\n
    \n )}\n {\n readOnly && (\n
    \n {value || '-'}\n
    \n )\n }\n \n );\n});\n\nInput2.propTypes = {\n disabled: PropTypes.bool,\n readOnly: PropTypes.bool,\n id: PropTypes.string,\n error: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.bool,\n ]),\n inputgroupaddonleft: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]),\n inputgroupaddonright: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]),\n label: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.element,\n PropTypes.node,\n ]),\n labelwidth: PropTypes.string,\n name: PropTypes.string,\n note: PropTypes.string,\n onChange: PropTypes.func,\n placeholder: PropTypes.string,\n theme: PropTypes.string,\n value: PropTypes.oneOfType([\n PropTypes.number,\n PropTypes.string,\n ]),\n wrapperClassName: PropTypes.string,\n};\n\nexport default Input2;\n","import { createContext } from 'react';\n\nconst MultiselectContext = createContext();\n\nexport default MultiselectContext;\n","import React, { Component, Fragment } from 'react';\nimport PropTypes from 'prop-types';\n\nimport MultiselectContext from './MultiselectContext';\nimport Button from '../../../../components/Button';\nimport Collapsible from '../../../../components/Collapsible';\nimport Loader from '../../../../components/Loader';\n\nconst getItemContent = (context, item) => (\n context.detailsDisplayTemplate\n ? context.detailsDisplayTemplate(item)\n : JSON.stringify(item.details)\n);\n\nconst getItemLoader = (context, item) => {\n const { opened } = context;\n\n return opened[item.id]\n ? \n : null;\n};\n\nclass MultiselectItem extends Component {\n static propTypes = {\n item: PropTypes.instanceOf(Object),\n itemType: PropTypes.string,\n searchValue: PropTypes.string,\n onChange: PropTypes.func,\n };\n\n isInSearchValue(fieldsToSearchOn) {\n const { searchValue, item } = this.props;\n\n if (fieldsToSearchOn && fieldsToSearchOn.length > 0) {\n let fields = fieldsToSearchOn.slice(0);\n\n fields = fields.filter(key => item[key] && item[key].search(searchValue) > -1);\n\n return fields.length > 0;\n }\n\n return JSON.stringify(item).search(searchValue) > -1;\n }\n\n render() {\n const {\n item,\n itemType,\n onChange,\n } = this.props;\n\n return (\n \n \n {\n context => (\n this.isInSearchValue(context.fieldsToSearchOn)\n ? (\n
  • \n
    \n \n {\n context.itemDisplayTemplate\n ? context.itemDisplayTemplate(item)\n : JSON.stringify(item)\n }\n \n \n \n \n \n
    \n {\n item.details\n ? (\n \n {getItemContent(context, item)}\n \n )\n : getItemLoader(context, item)\n }\n
  • \n )\n : null\n )\n }\n
    \n
    \n );\n }\n}\n\nexport default MultiselectItem;\n","import React, { Component, createRef } from 'react';\nimport PropTypes from 'prop-types';\nimport { fromJS } from 'immutable';\n\nimport Input from '../../Input';\nimport Icon from '../../../../components/Icon';\nimport Message from '../../../../components/Message';\nimport InfiniteScroller from '../../../../components/InfiniteScroller';\nimport MultiselectItem from './MultiselectItem';\n\nclass MultiselectPanel extends Component {\n static propTypes = {\n customSearch: PropTypes.bool,\n onCustomSearch: PropTypes.func,\n panelType: PropTypes.string,\n onChange: PropTypes.func,\n items: PropTypes.instanceOf(Array),\n itemsPageNumber: PropTypes.number,\n itemsNrPages: PropTypes.number,\n inputPlaceholder: PropTypes.string,\n loadMoreItems: PropTypes.func,\n noItemsMessage: PropTypes.string,\n serverLoad: PropTypes.bool,\n };\n\n state = {\n searchValue: '',\n };\n\n constructor(props) {\n super(props);\n\n this.searchOnChange = this.searchOnChange.bind(this);\n this.itemChanged = this.itemChanged.bind(this);\n this.itemIndex = 0;\n this.itemsListRef = createRef();\n }\n\n getItemIndex() {\n this.itemIndex += 1;\n\n return this.itemIndex;\n }\n\n getItemsList() {\n const {\n itemsPageNumber,\n itemsNrPages,\n loadMoreItems,\n serverLoad,\n } = this.props;\n\n return (\n serverLoad\n ? (\n itemsPageNumber}\n loadMore={loadMoreItems}\n pageNumber={itemsPageNumber}\n >\n { this.renderListItems() }\n \n )\n : this.renderListItems()\n );\n }\n\n searchOnChange(value) {\n const { onCustomSearch } = this.props;\n\n if (!onCustomSearch) {\n this.setState({\n searchValue: value,\n });\n } else {\n onCustomSearch(value);\n }\n }\n\n itemChanged(item) {\n const { items, onChange } = this.props;\n\n let cloneItems = fromJS(items).toJS();\n cloneItems = cloneItems.filter(clonedItem => item.id !== clonedItem.id);\n\n onChange(cloneItems, item);\n }\n\n renderListItems() {\n const {\n customSearch, items, panelType, serverLoad,\n } = this.props;\n const { searchValue } = this.state;\n return (\n \n {\n items.map(item => (\n \n ))\n }\n \n );\n }\n\n render() {\n const {\n inputPlaceholder,\n noItemsMessage,\n items,\n } = this.props;\n const { searchValue } = this.state;\n\n return (\n
    \n \n }\n name=\"search\"\n onChange={this.searchOnChange}\n placeholder={inputPlaceholder}\n value={searchValue}\n />\n {\n items.length\n ? this.getItemsList()\n : (\n \n { noItemsMessage }\n \n )\n }\n
    \n );\n }\n}\n\nexport default MultiselectPanel;\n","import React, { Component, Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport { fromJS } from 'immutable';\n\nimport MultiselectPanel from './js/MultiselectPanel';\nimport MultiselectContext from './js/MultiselectContext';\n\nconst diffObjects = (value, items) => {\n const newItems = items.filter((item) => {\n const isCommon = value.filter(selectedItem => selectedItem.id === item.id).length > 0;\n\n return !isCommon;\n });\n\n return newItems;\n};\n\nclass Multiselect extends Component {\n static propTypes = {\n customSearch: PropTypes.func,\n disabled: PropTypes.bool,\n error: PropTypes.string,\n entityNamePlural: PropTypes.string,\n items: PropTypes.instanceOf(Array),\n itemDisplayTemplate: PropTypes.func,\n detailsDisplayTemplate: PropTypes.func,\n fieldsToSearchOn: PropTypes.instanceOf(Array),\n onChange: PropTypes.func,\n getItemDetails: PropTypes.func,\n itemsPageNumber: PropTypes.number,\n itemsNrPages: PropTypes.number,\n loadMoreItems: PropTypes.func,\n note: PropTypes.string,\n maxSelections: PropTypes.number,\n value: PropTypes.instanceOf(Array),\n wrapperClassName: PropTypes.string,\n };\n\n state = {\n opened: {},\n };\n\n constructor(props) {\n super(props);\n\n this.valueChange = this.valueChange.bind(this);\n this.itemsChange = this.itemsChange.bind(this);\n }\n\n onGetItemDetails(item) {\n const { getItemDetails } = this.props;\n\n this.setState((prevState) => {\n const tempState = Object.assign({}, prevState);\n tempState.opened[item.id] = !tempState.opened[item.id];\n\n return tempState;\n }, () => {\n if (getItemDetails) {\n getItemDetails(item);\n }\n });\n }\n\n getMultiselectError() {\n const { error } = this.props;\n\n return (error && error !== 'true' && error !== 'false')\n ? (\n \n { error }\n

    \n )\n : null;\n }\n\n getCssClasses() {\n const { error, wrapperClassName = '' } = this.props;\n const cssClasses = [wrapperClassName, 'tyk-multiselect'];\n\n if (error) {\n cssClasses.push('has-error');\n }\n\n return cssClasses.join(' ');\n }\n\n itemsChange(allItems, item) {\n const { value, onChange } = this.props;\n const valueClone = fromJS(value).toJS();\n\n valueClone.unshift(item);\n\n onChange(valueClone, item, 'added');\n }\n\n valueChange(value, item) {\n const { items, onChange } = this.props;\n const allItemsClone = fromJS(items).toJS();\n\n allItemsClone.unshift(item);\n\n onChange(value, item, 'removed');\n }\n\n render() {\n const {\n customSearch,\n entityNamePlural,\n disabled,\n itemDisplayTemplate,\n detailsDisplayTemplate,\n fieldsToSearchOn,\n items,\n itemsPageNumber,\n itemsNrPages,\n loadMoreItems,\n maxSelections,\n note,\n value,\n } = this.props;\n const { opened } = this.state;\n\n return (\n \n
    \n \n
    \n
    \n { value.length }\n {' '}\n Selected\n {' '}\n { entityNamePlural }\n
    \n
    \n Select from existing\n { entityNamePlural }\n
    \n
    \n
    \n \n \n
    \n \n
    \n
    \n {\n note\n ?

    { note }

    \n : null\n }\n
    \n { this.getMultiselectError() }\n
    \n );\n }\n}\n\nexport default Multiselect;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\n\n/**\n * Radio can be used when a user needs to select at most one value from a multiple options.\n */\nexport default class Radio extends Component {\n static propTypes = {\n /** Used to disable the element */\n disabled: PropTypes.bool,\n /** Readonly prop behaves the same as disabled on radio elements */\n readOnly: PropTypes.bool,\n /** Align radio with in same line with other elements */\n inline: PropTypes.bool,\n /** Set a theme for radio */\n theme: PropTypes.string,\n input: PropTypes.instanceOf(Object),\n /** Adds label to the radio input */\n label: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.func,\n PropTypes.string,\n ]),\n /** Set name for the radio input */\n name: PropTypes.string,\n /** If set to true removes margin by adding `no-margin` class */\n nospace: PropTypes.bool,\n /** Set initial value for the radio input */\n value: PropTypes.string,\n /** Add note at the bottom of the radio input */\n note: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.element,\n PropTypes.node,\n ]),\n wrapperClassName: PropTypes.string,\n };\n\n getCssClasses() {\n const {\n inline, nospace, theme = '', disabled, readOnly, wrapperClassName = '',\n } = this.props;\n const cssClasses = [wrapperClassName];\n\n if (inline) {\n cssClasses.push('tyk-radio--inline');\n } else {\n cssClasses.push('tyk-radio');\n }\n\n if (nospace) {\n cssClasses.push('no-margin');\n }\n\n if (theme.trim()) {\n cssClasses.push(...theme.split(' ').map(t => `tyk-radio--theme-${t}`));\n }\n\n if (readOnly || disabled) {\n cssClasses.push('tyk-radio--is-disabled');\n }\n\n return cssClasses.join(' ');\n }\n\n render() {\n const {\n input, label, note, disabled, readOnly, ...rest\n } = this.props;\n return (\n \n \n

    {note}

    \n \n );\n }\n}\n","import React, { Component, Fragment } from 'react';\nimport PropTypes from 'prop-types';\n\nexport default class Select extends Component {\n static propTypes = {\n disabled: PropTypes.bool,\n readOnly: PropTypes.bool,\n id: PropTypes.string,\n isfield: PropTypes.bool,\n error: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.bool,\n ]),\n options: PropTypes.instanceOf(Array),\n label: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.func,\n PropTypes.string,\n ]),\n labelwidth: PropTypes.string,\n name: PropTypes.string,\n note: PropTypes.string,\n onBlur: PropTypes.func,\n onChange: PropTypes.func,\n placeholder: PropTypes.string,\n theme: PropTypes.string,\n value: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.object,\n ]),\n wrapperClassName: PropTypes.string,\n }\n\n constructor(props) {\n super(props);\n const {\n value,\n } = this.props;\n\n this.state = {\n initValue: value,\n stateValue: value,\n };\n\n this.handleOnChange = this.handleOnChange.bind(this);\n this.handleOnBlur = this.handleOnBlur.bind(this);\n }\n\n componentDidUpdate(prevProps) {\n const {\n isfield,\n value,\n onChange,\n } = this.props;\n\n if (!isfield && prevProps.value !== value) {\n /* eslint-disable react/no-did-update-set-state */\n this.setState({\n stateValue: value,\n }, () => {\n if (onChange) {\n onChange(value);\n }\n });\n }\n }\n\n getSelectComponent() {\n const {\n isfield, options, onChange, onBlur, value, ...rest\n } = this.props;\n const {\n stateValue,\n } = this.state;\n\n let selectValue = '';\n\n if (isfield && value) {\n selectValue = value;\n } else if (stateValue) {\n selectValue = stateValue;\n }\n\n return (\n \n {\n options.map(option => )\n }\n \n );\n }\n\n getSelectError() {\n const { error } = this.props;\n\n return (error && error !== 'true' && error !== 'false')\n ? (\n \n { error }\n

    \n )\n : null;\n }\n\n getCssClasses() {\n const {\n error, labelwidth, theme, wrapperClassName = '',\n } = this.props;\n const cssClasses = [wrapperClassName, 'tyk-form-group'];\n const themes = theme ? theme.split(' ') : [];\n\n if (themes.length) {\n themes.forEach((iTheme) => {\n cssClasses.push(`tyk-form-group--${iTheme}`);\n });\n }\n\n if (labelwidth) {\n cssClasses.push('tyk-form-group--label-has-width');\n }\n\n if (error) {\n cssClasses.push('has-error');\n }\n\n return cssClasses.join(' ');\n }\n\n getLabelStyles() {\n const { labelwidth } = this.props;\n const styles = {};\n\n if (labelwidth) {\n styles.flexBasis = labelwidth;\n }\n\n return styles;\n }\n\n getNonLabelWidth() {\n const { labelwidth } = this.props;\n const styles = {};\n\n if (labelwidth) {\n styles.flexBasis = `calc(100% - ${labelwidth} - 20px)`;\n }\n\n return styles;\n }\n\n handleOnBlur() {\n const { value, onBlur } = this.props;\n\n if (onBlur) {\n onBlur(value);\n }\n }\n\n handleOnChange(e) {\n const {\n onChange,\n isfield,\n options,\n } = this.props;\n let selectedValue = null;\n\n selectedValue = options.filter(option => option.id === e.target.value);\n [selectedValue] = selectedValue;\n\n if (!isfield) {\n this.setState({\n stateValue: selectedValue,\n }, () => {\n onChange(selectedValue.id ? selectedValue : null);\n });\n } else {\n onChange(selectedValue.id ? selectedValue : null);\n }\n }\n\n reset() {\n const { initValue } = this.state;\n\n this.setState({\n stateValue: initValue,\n });\n }\n\n render() {\n const {\n label,\n id,\n note,\n readOnly,\n value,\n } = this.props;\n\n return (\n \n
    \n {\n label\n ? \n : null\n }\n {!readOnly && (\n \n {\n this.getSelectComponent()\n }\n {\n note\n ?

    { note }

    \n : null\n }\n { this.getSelectError() }\n
    \n )}\n {readOnly &&
    {value || '-'}
    }\n \n
    \n );\n }\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport Message from '../../../components/Message';\nimport List from '../../../components/List';\nimport Icon from '../../../components/Icon';\n\nfunction SelectableList(props) {\n const {\n checkboxalticon,\n items,\n itemTemplate,\n value,\n noItemsMessage = 'No items in the list',\n onChange,\n theme,\n primaryKey,\n wrapperClassName = '',\n } = props;\n\n const handleOnSelect = (event) => {\n const newSelectedItems = structuredClone(value);\n const elemPosition = newSelectedItems.findIndex(\n (id) => JSON.stringify(id) === JSON.stringify(\n Array.isArray(id)\n ? event.target.value.split(',')\n : event.target.value,\n ),\n );\n\n if (event.target.checked && elemPosition === -1) {\n const tempValue = event.target.value.split(',');\n const finalValue = tempValue.length > 1 ? tempValue : event.target.value;\n\n newSelectedItems.push(finalValue);\n } else if (!event.target.checked && elemPosition > -1) {\n newSelectedItems.splice(elemPosition, 1);\n }\n\n if (onChange) {\n onChange(newSelectedItems);\n }\n };\n\n const getListItemCssClassName = (isActive) => {\n const cssClasses = [];\n\n if (checkboxalticon) {\n cssClasses.push('tyk-selectable-list__item--with-icon');\n }\n\n if (isActive) {\n cssClasses.push('tyk-selectable-list__item--active');\n }\n\n return cssClasses.join(' ');\n };\n\n const isChecked = (inputValue, itemValue) => Boolean(\n inputValue.find((tvalue) => JSON.stringify(itemValue) === JSON.stringify(tvalue)),\n );\n\n return (\n \n {\n !items.length\n ? (\n
  • \n \n {noItemsMessage}\n \n
  • \n )\n : items.map((item, index) => (\n \n \n \n ))\n }\n
    \n );\n}\n\nSelectableList.propTypes = {\n items: PropTypes.instanceOf(Array),\n itemTemplate: PropTypes.oneOfType([\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n PropTypes.func,\n ]),\n value: PropTypes.instanceOf(Array),\n onChange: PropTypes.func,\n primaryKey: PropTypes.string,\n noItemsMessage: PropTypes.string,\n checkboxalticon: PropTypes.oneOfType([\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n theme: PropTypes.string,\n wrapperClassName: PropTypes.string,\n};\n\nSelectableList.defaultProps = {\n items: [],\n primaryKey: 'id',\n value: [],\n};\n\nexport default SelectableList;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nfunction Textarea({\n id,\n input,\n label,\n note,\n error,\n theme,\n labelwidth,\n value,\n readOnly,\n wrapperClassName,\n ...rest\n}) {\n const classes = [\n 'tyk-form-group',\n wrapperClassName,\n ...(theme ? theme.split(' ').map((t) => `tyk-form-group--${t}`) : []),\n labelwidth && 'tyk-form-group--label-has-width',\n error && 'has-error',\n ].filter(Boolean).join(' ');\n\n const getLabelStyles = () => {\n if (labelwidth) return { flexBasis: labelwidth };\n return {};\n };\n\n const getNonLabelWidth = () => {\n if (labelwidth) return { flexBasis: `calc(100% - ${labelwidth} - 20px)` };\n return {};\n };\n\n function getTextareaError() {\n return (error && error !== 'true' && error !== 'false')\n ? (\n

    \n { error }\n

    \n )\n : null;\n }\n\n return (\n
    \n {\n label\n ? \n : null\n }\n {!readOnly && (\n \n \n { value }\n \n {\n note\n ?

    { note }

    \n : null\n }\n {getTextareaError()}\n
    \n )}\n {readOnly &&
    {value || '-'}
    }\n \n );\n}\n\nTextarea.propTypes = {\n /** Disable the component */\n disabled: PropTypes.bool,\n /** Displays only the text value of the component, or \"-\" if no value is set */\n readOnly: PropTypes.bool,\n input: PropTypes.instanceOf(Object),\n /** Set an error message for the component and the component is rendered in the error state */\n error: PropTypes.string,\n /** Adds a label to the component */\n label: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.func,\n PropTypes.string,\n ]),\n /** Sets the width of the label */\n labelwidth: PropTypes.string,\n /** Set a name for the component */\n name: PropTypes.string,\n /** Adds additional information under the component */\n note: PropTypes.string,\n /** Callback function executed on value change */\n onChange: PropTypes.func,\n id: PropTypes.string,\n /** Set a theme for the component */\n theme: PropTypes.string,\n /** Set the value of the component */\n value: PropTypes.string,\n /** CSS classes added to the wrapper of the component */\n wrapperClassName: PropTypes.string,\n};\n\nexport default Textarea;\n","import { createContext } from 'react';\n\nconst ToggleContext = createContext();\n\nexport default ToggleContext;\n","import React, { Component, createRef } from 'react';\nimport PropTypes from 'prop-types';\n\nclass ToggleItem extends Component {\n static getNotchCssClasses(context) {\n return ['tyk-toggle__item-notch', `tyk-toggle__item-notch--${context.type}`].join(' ');\n }\n\n constructor(props) {\n super(props);\n\n this.itemRef = createRef();\n }\n\n componentDidMount() {\n const { context, value } = this.props;\n\n if (context.value === value) {\n context.saveSelectedRef(this.itemRef);\n }\n }\n\n componentDidUpdate(prevProps) {\n const { context, value } = this.props;\n\n if (prevProps.context.value !== context.value && context.value === value) {\n context.saveSelectedRef(this.itemRef);\n }\n }\n\n onChange(event) {\n const { context, value } = this.props;\n const { disabled, readOnly } = context;\n\n if (disabled || readOnly) {\n return;\n }\n\n context.onItemSelected(context.type === 'single' ? !context.value : value, event);\n }\n\n render() {\n const {\n context, label, name, value,\n } = this.props;\n return (\n
  • \n \n
  • \n );\n }\n}\n\nToggleItem.propTypes = {\n context: PropTypes.instanceOf(Object),\n label: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.func,\n PropTypes.string,\n ]),\n name: PropTypes.string,\n value: PropTypes.string,\n};\n\nexport default ToggleItem;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport ToggleContext from './ToggleContext';\nimport ToggleItem from './ToggleItem';\n\nconst ToggleItemWrapper = React.forwardRef((props, ref) => (\n \n {(context) => (\n \n {props.children}\n \n )}\n \n));\n\nToggleItemWrapper.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n};\n\nexport default ToggleItemWrapper;\n","import React, {\n useCallback, useMemo, useRef, useState,\n} from 'react';\nimport PropTypes from 'prop-types';\n\nimport ToggleContext from './js/ToggleContext';\nimport ToggleItemWrapper from './js/ToggleItemWrapper';\n\nfunction Toggle({\n className,\n disabled,\n readOnly,\n size,\n theme,\n direction,\n onDark,\n wrapperClassName = '',\n onChange,\n labelwidth,\n label,\n separated,\n children,\n type,\n value,\n error,\n}) {\n const [selectedRef, setSelectedRef] = useState(null);\n const notchRef = useRef();\n const toggleRef = useRef();\n\n const classes = [\n wrapperClassName,\n className,\n 'tyk-toggle',\n `tyk-toggle--disabled-${readOnly || disabled}`,\n `tyk-toggle--${size || 'md'}`,\n `tyk-toggle--${theme}`,\n `tyk-toggle--${direction}`,\n onDark && 'tyk-toggle--on-dark',\n ].filter(Boolean).join(' ');\n\n const onItemSelected = useCallback((itemValue, event) => {\n if (!onChange) return;\n onChange(itemValue, event);\n }, [onChange]);\n\n const getLabelStyles = useCallback(() => {\n if (labelwidth) return { flexBasis: labelwidth };\n return {};\n }, [labelwidth]);\n\n const positionNotch = useCallback(() => {\n if (!selectedRef || separated) {\n return {};\n }\n\n const selectedWidth = selectedRef.current.offsetWidth;\n const selectedOffset = selectedRef.current.getBoundingClientRect().left;\n const toggleOffset = toggleRef.current.getBoundingClientRect().left;\n const left = selectedOffset - toggleOffset;\n\n return {\n left: `${left + 4}px`,\n width: `${selectedWidth - 8}px`,\n };\n }, [selectedRef, separated]);\n\n const contextValue = useMemo(() => ({\n disabled,\n readOnly,\n onItemSelected,\n saveSelectedRef: setSelectedRef,\n separated,\n type,\n value,\n }), [disabled, readOnly, onItemSelected, separated, type, value]);\n\n return (\n <>\n
    \n \n {\n label\n ? \n : null\n }\n
      \n { children }\n {\n type === 'multiple' && !separated\n ?
    • \n : null\n }\n
    \n \n
    \n {\n error && (\n

    \n { error }\n

    \n )\n }\n \n );\n}\n\nToggle.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n className: PropTypes.string,\n disabled: PropTypes.bool,\n readOnly: PropTypes.bool,\n error: PropTypes.string,\n onChange: PropTypes.func,\n label: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.func,\n PropTypes.string,\n ]),\n labelwidth: PropTypes.string,\n theme: PropTypes.string,\n type: PropTypes.string, // single || multiple\n size: PropTypes.string,\n separated: PropTypes.bool,\n direction: PropTypes.string,\n value: PropTypes.oneOfType([\n PropTypes.bool,\n PropTypes.string,\n ]),\n onDark: PropTypes.bool,\n wrapperClassName: PropTypes.string,\n};\n\nToggle.defaultProps = {\n separated: false,\n theme: 'primary',\n type: 'single',\n direction: 'row',\n};\n\nToggle.Item = ToggleItemWrapper;\n\nexport default Toggle;\n","export const stringToTokenString = (value, options) => {\n let tempStr = value;\n options.forEach((option) => {\n tempStr = tempStr.replaceAll(option.id, `__TOKEN__${option.id}__TOKEN__`);\n });\n return tempStr;\n};\n\n\nexport const setCursorPos = (ref, pos) => {\n setTimeout(() => {\n ref.current.setSelectionRange(pos, pos);\n }, 20);\n};\n","import React, { useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { stringToTokenString, setCursorPos } from './service';\n\nfunction StringInput({\n setShowOptions,\n tokenValue,\n disabled,\n placeholder,\n tokens,\n dropdownTriggerKey,\n setStringBuilderHeight,\n stringBuilderHeight,\n setTokenString,\n tokenString,\n showOptions,\n options,\n setTokenValue,\n inputRef,\n setInputInFocus,\n invalidTokenRegex,\n name,\n contextMaxLength,\n}) {\n const [isPasteEvent, setIsPasteEvent] = useState(false);\n\n useEffect(() => {\n // Set height if initial value exists\n if (tokenValue) {\n const tokenLen = tokenValue.length > 50 ? tokenValue.length / 5 : 0;\n setStringBuilderHeight(inputRef.current.scrollHeight + tokenLen);\n }\n }, []);\n\n /**\n *\n * @param {*} e : Event\n * Handle delete event (fn + delete on mac)\n */\n\n const handleDelete = (e) => {\n const { selectionEnd } = e.target;\n if (selectionEnd === tokenValue.length) {\n // - Cursor is at the end of input\n return;\n }\n\n const stringBeforeCursor = tokenValue.substring(0, selectionEnd);\n const stringAfterCursor = tokenValue.slice(selectionEnd);\n\n const tokenStringForStringAfterCursor = stringToTokenString(\n stringAfterCursor,\n options,\n );\n if (tokenStringForStringAfterCursor.startsWith('__TOKEN__')) {\n // If string before delete is a token\n const splitTokens = tokenStringForStringAfterCursor.split(/__TOKEN__(.*?)__TOKEN__/g).filter((t) => t !== '');\n const firstToken = splitTokens[0];\n const newTokenValue = `${stringBeforeCursor}${stringAfterCursor.substr(firstToken.length)}`;\n const newTokenizedString = stringToTokenString(newTokenValue, options);\n setTokenString(newTokenizedString);\n setCursorPos(inputRef, selectionEnd);\n return;\n }\n const newTokenValue = `${stringBeforeCursor}${stringAfterCursor.substr(1)}`;\n const newTokenizedString = stringToTokenString(newTokenValue, options);\n setTokenString(newTokenizedString);\n setCursorPos(inputRef, selectionEnd);\n };\n\n /**\n *\n * @param {*} e : Event\n * Handle backspace event\n * - If the last thing added by user was a token prevent default and\n * remove the entire token instead of single character, else continue with default behaviour\n * - Also handles if the string is manipulated from middle\n */\n const handleBackSpace = (e) => {\n const { selectionEnd } = e.target;\n\n // -- START :: Handle backspacing when cursor is at the end of the string\n if (selectionEnd === tokenValue.length) {\n const lastToken = tokens[tokens?.length - 2];\n const lastCharsInString = tokenValue.slice(-lastToken?.length);\n if (lastToken === lastCharsInString) {\n e.preventDefault();\n setTokenString(\n tokenString.slice(0, -`__TOKEN__${lastCharsInString}__TOKEN__`.length),\n );\n return;\n }\n if (tokenValue.endsWith(' ')) {\n const invalidToken = tokenValue.match(invalidTokenRegex);\n const newTokenValue = tokenValue.slice(0, -` ${invalidToken[invalidToken.length - 1]} `.length);\n const newTokenStr = stringToTokenString(newTokenValue, options);\n setTokenString(newTokenStr);\n return;\n }\n setTokenString(tokenString.slice(0, -1));\n return;\n }\n // -- END :: Handle backspacing when cursor is at the end of the string\n\n // -- START :: Handle backspacing when cursor is in between\n const stringBeforeCursor = tokenValue.substring(0, selectionEnd);\n const stringAfterCursor = tokenValue.slice(selectionEnd);\n\n const tokenStringForStringBeforeCursor = stringToTokenString(stringBeforeCursor, options);\n\n // -- IF the string before cursor is a token\n if (tokenStringForStringBeforeCursor.endsWith('__TOKEN__')) {\n e.preventDefault();\n const splitTokens = tokenStringForStringBeforeCursor.split(/__TOKEN__(.*?)__TOKEN__/g);\n const lastToken = splitTokens[splitTokens.length - 2];\n const newTokenValue = `${stringBeforeCursor.slice(0, -(lastToken.length))}${stringAfterCursor}`;\n const newTokenizedString = stringToTokenString(newTokenValue, options);\n setTokenString(newTokenizedString);\n setCursorPos(inputRef, selectionEnd - lastToken.length);\n return;\n }\n\n const invalidToken = stringBeforeCursor.match(invalidTokenRegex);\n // If Token is Invalid Token\n if (invalidToken?.[0] && invalidToken.length === 1) {\n e.preventDefault();\n const newTokenValue = `${stringBeforeCursor.replaceAll(invalidTokenRegex, '').trim()}${stringAfterCursor}`;\n const newTokenizedString = stringToTokenString(newTokenValue, options);\n setTokenString(newTokenizedString);\n setCursorPos(inputRef, selectionEnd - ` ${invalidToken[0]} `.length);\n return;\n }\n\n const newTokenValue = `${stringBeforeCursor.slice(\n 0,\n -1,\n )}${stringAfterCursor}`;\n const newTokenizedString = stringToTokenString(newTokenValue, options);\n setTokenString(newTokenizedString);\n setCursorPos(inputRef, selectionEnd - 1);\n // -- END :: Handle backspacing when cursor is in between\n };\n\n const addCharacterToTokenString = (text, selectionStart) => {\n // Cursor is at end\n if (selectionStart - 1 === tokenValue.length) {\n setTokenString(`${tokenString}${text}`);\n return;\n }\n\n // Cursor is in middle of string\n const newTokenValue = tokenValue.slice(0, selectionStart - 1)\n + text\n + tokenValue.slice(selectionStart - 1);\n\n const newTokenizedString = stringToTokenString(newTokenValue, options);\n setTokenString(newTokenizedString);\n };\n\n // -- START :: Handle highlighted text deletion / replacement\n const handleTextSelection = (e, selectedText, key) => {\n const allowedKeys = ['Delete', 'Backspace'];\n if (key.length > 1 && allowedKeys.indexOf(key) === -1) {\n return;\n }\n const { selectionEnd, selectionStart } = e.target;\n const substitute = key.length > 1 ? '' : key;\n if (selectedText.length > 1) {\n const newStr = tokenValue.substring(0, selectionStart)\n + substitute\n + tokenValue.substring(selectionEnd);\n const newTokenStr = stringToTokenString(newStr, options);\n setTokenString(newTokenStr);\n setCursorPos(inputRef, substitute.length ? selectionStart + 1 : selectionStart);\n }\n };\n // -- END :: Handle highlighted text deletion / replacement\n\n const handleKeyDown = (e) => {\n const { key } = e;\n const { selectionEnd, selectionStart, value } = e.target;\n const selectedText = value.substring(selectionStart, selectionEnd);\n\n if (key === dropdownTriggerKey && !showOptions) {\n e.preventDefault();\n setShowOptions(true);\n return;\n }\n if (key === 'Enter') {\n e.preventDefault();\n return;\n }\n if (key === 'Backspace') {\n e.preventDefault();\n handleBackSpace(e);\n }\n if (key === 'Delete') {\n e.preventDefault();\n handleDelete(e);\n }\n if (e.metaKey && key === 'x') {\n setTokenString('');\n }\n if (selectedText) {\n e.preventDefault();\n handleTextSelection(e, selectedText, key);\n }\n };\n\n const handleOnChange = (e) => {\n const { target } = e;\n const { selectionStart, value } = target;\n\n if (showOptions) {\n setShowOptions(false);\n }\n setTokenValue(value);\n if (value && !isPasteEvent) {\n const text = value.charAt(selectionStart - 1);\n addCharacterToTokenString(text, selectionStart);\n }\n setIsPasteEvent(false);\n };\n\n const handlePasteEvent = (e) => {\n e.preventDefault();\n const { clipboardData } = e;\n const { selectionStart, selectionEnd } = e.target;\n setIsPasteEvent(true);\n let pasteString = clipboardData.getData('text/plain');\n if (selectionStart !== selectionEnd) {\n pasteString = tokenValue.slice(0, selectionStart)\n + pasteString\n + tokenValue.slice(selectionEnd, tokenValue.length);\n const newTokenString = stringToTokenString(pasteString, options);\n setTokenString(newTokenString);\n return;\n }\n const newTokenString = stringToTokenString(pasteString, options);\n addCharacterToTokenString(newTokenString, selectionStart);\n };\n\n const handleOnFocus = () => {\n setInputInFocus(true);\n };\n\n return (\n handleOnChange(e)}\n onKeyDown={(e) => handleKeyDown(e)}\n placeholder={placeholder}\n name={name}\n ref={inputRef}\n style={{ height: `${stringBuilderHeight}px` }}\n maxLength={contextMaxLength}\n onPaste={handlePasteEvent}\n onFocus={handleOnFocus}\n onBlur={() => setInputInFocus(false)}\n />\n );\n}\n\nStringInput.propTypes = {\n setShowOptions: PropTypes.func,\n tokenValue: PropTypes.string,\n disabled: PropTypes.bool,\n placeholder: PropTypes.string,\n tokenString: PropTypes.string,\n stringBuilderHeight: PropTypes.number,\n dropdownTriggerKey: PropTypes.string,\n setStringBuilderHeight: PropTypes.func,\n setTokenString: PropTypes.func,\n setTokenValue: PropTypes.func,\n setInputInFocus: PropTypes.func,\n showOptions: PropTypes.bool,\n tokens: PropTypes.arrayOf(PropTypes.string),\n options: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.string.isRequired,\n name: PropTypes.string.isRequired,\n className: PropTypes.string,\n desc: PropTypes.string,\n }),\n ),\n inputRef: PropTypes.instanceOf(Object),\n invalidTokenRegex: PropTypes.instanceOf(RegExp),\n name: PropTypes.string,\n contextMaxLength: PropTypes.number,\n};\n\nexport { StringInput };\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Tooltip from '../../../../components/Tooltip';\nimport Icon from '../../../../components/Icon';\n\n\nconst InvalidToken = (props) => {\n const { token, findInvalidTokenSubstitute } = props;\n return (\n findInvalidTokenSubstitute(token)}\n onKeyDown={() => {}}\n >\n \n \n {`${token}`}\n \n \n \n \n );\n};\n\nInvalidToken.propTypes = {\n token: PropTypes.string,\n findInvalidTokenSubstitute: PropTypes.func,\n};\n\nexport default InvalidToken;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport InvalidToken from './invalid-token';\n\nexport const TokenizedString = (props) => {\n const {\n tokens,\n options,\n disabled,\n invalidTokenRegex,\n findInvalidTokenSubstitute,\n } = props;\n\n /**\n * hasDuplicates : used to avoid duplicate keys in map :\n * having duplicate tokens causes invalid unpredictable react renders.\n * eg: http://alpaha.com/{{.agruments.id}}/id={{.arguments.id}}\n * `{{.arguments.id}}` is repeated twice : maybe edge case but quite possible\n */\n\n const hasDuplicates = new Set(tokens).size !== tokens.length;\n\n const allTokens = tokens\n && tokens.map((token) => {\n if (options) {\n const matchedOption = options.find(option => option.id === token);\n // if invalid token\n if (invalidTokenRegex && !matchedOption) {\n const matchedTokens = token.replaceAll(' ', '').split(invalidTokenRegex);\n if (matchedTokens?.length > 1) {\n return (\n \n {matchedTokens.map((tkn) => {\n if (tkn.match(invalidTokenRegex)) {\n return (\n \n );\n }\n return ({`${tkn} `});\n })}\n \n );\n }\n }\n // if token matches option\n\n if (matchedOption) {\n return (\n \n {matchedOption.id}\n \n );\n }\n }\n return (\n {token}\n );\n });\n return (\n \n {allTokens}\n \n );\n};\n\nTokenizedString.propTypes = {\n tokens: PropTypes.arrayOf(PropTypes.string),\n options: PropTypes.arrayOf(PropTypes.instanceOf(Object)),\n disabled: PropTypes.bool,\n invalidTokenRegex: PropTypes.instanceOf(RegExp),\n findInvalidTokenSubstitute: PropTypes.func,\n};\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\n\nimport FloatingContainer from '../../../../components/FloatingContainer';\n\nexport const OptionsList = ({\n options,\n showOptions,\n handleOptionSelection,\n containerRef,\n getThemeClasses,\n setShowOptions,\n allowSearch,\n initialSearchValue,\n}) => {\n const [filterValue, setFilterValue] = useState(initialSearchValue);\n const [filteredOptions, setFilteredOptions] = useState(options);\n\n useEffect(() => {\n setFilterValue(initialSearchValue);\n }, [initialSearchValue]);\n\n useEffect(() => {\n if (filterValue === '') {\n setFilteredOptions(options);\n return;\n }\n const newFilteredOptions = options.filter(\n option => option.name.toLowerCase().includes(filterValue.toLowerCase()),\n );\n setFilteredOptions(newFilteredOptions);\n }, [filterValue]);\n\n useEffect(() => {\n setFilteredOptions(options);\n }, [options]);\n\n if (!showOptions) {\n return null;\n }\n\n return (\n <>\n \n {allowSearch && (\n
    \n {\n setFilterValue(e.target.value);\n }}\n onKeyDown={(e) => {\n if (\n e.key === 'Escape'\n || e.key === 'ArrowUp'\n // || e.key === 'ArrowDown'\n || e.key === 'Enter'\n ) {\n setShowOptions(false);\n }\n }}\n />\n
    \n )}\n
      \n {filteredOptions.map(option => (\n handleOptionSelection(option)}\n >\n \n {option.name}\n \n {option.desc && (\n \n   :  \n {option.desc}\n \n )}\n \n ))}\n
    \n \n \n );\n};\n\nOptionsList.propTypes = {\n options: PropTypes.arrayOf(Object),\n showOptions: PropTypes.bool,\n handleOptionSelection: PropTypes.func,\n getThemeClasses: PropTypes.func,\n setShowOptions: PropTypes.func,\n containerRef: PropTypes.instanceOf(Object),\n allowSearch: PropTypes.bool,\n initialSearchValue: PropTypes.string,\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nexport const StringBuilderFooter = (props) => {\n const {\n note, error, inputInFocus, stringBuilderHeight, dropdownTriggerKey,\n } = props;\n return (\n \n {inputInFocus && !error && (\n

    \n \n Enter\n {dropdownTriggerKey}\n to add any parameter\n \n

    \n )}\n {note &&

    {note}

    }\n {error && error !== 'true' && error !== 'false' && (\n

    {error}

    \n )}\n \n );\n};\n\nStringBuilderFooter.propTypes = {\n note: PropTypes.string,\n error: PropTypes.string,\n dropdownTriggerKey: PropTypes.string,\n inputInFocus: PropTypes.bool,\n stringBuilderHeight: PropTypes.number,\n};\n","import React, { useEffect, useState, useRef } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { usePrevious } from '../../../hooks';\n\nimport { StringInput } from './js/string-input';\nimport { TokenizedString } from './js/tokenized-string';\nimport { OptionsList } from './js/options-list';\nimport { StringBuilderFooter } from './js/string-builder-footer';\nimport { stringToTokenString, setCursorPos } from './js/service';\n\n/**\n * - String builder component used to build one single string using the given options.\n * - This component can be useful from UX perspective,\n * when user needs to build any string which might contain complex values which are error prone.\n * - `` abstracts the complex values by supplying them\n * as selectable options in more user friendly format with description for user.\n * - Wire-frames : https://miro.com/app/board/o9J_kipLWwA=/\n */\n\nfunction StringBuilder(props) {\n const {\n options,\n onChange,\n value,\n theme,\n error,\n disabled,\n readOnly,\n note,\n label,\n labelwidth,\n placeholder,\n allowSearch,\n dropdownTriggerKey,\n invalidTokenRegex,\n name,\n wrapperClassName = '',\n } = props;\n const [tokenValue, setTokenValue] = useState(value);\n const [stringBuilderHeight, setStringBuilderHeight] = useState();\n const [showOptions, setShowOptions] = useState(false);\n const [tokenString, setTokenString] = useState(stringToTokenString(value, options));\n const [contextMaxLength, setContentMaxLength] = useState(\n tokenValue.length + 5,\n );\n const [tokens, setTokens] = useState([]);\n const [prevTokenValue, setPrevTokenValue] = useState();\n const [inputInFocus, setInputInFocus] = useState(false);\n const [initialSearchValue, setInitialSearchValue] = useState('');\n const [selectedInvalidToken, setSelectedInvalidToken] = useState(null);\n\n const prevTokenString = usePrevious(tokenString);\n\n const containerRef = useRef();\n const inputRef = useRef();\n\n // Execute callback on value change\n useEffect(() => {\n if (onChange) {\n onChange(tokenValue.replaceAll(' ', ''));\n }\n }, [tokenValue]);\n\n useEffect(() => {\n const tempVal = invalidTokenRegex ? value.replaceAll(invalidTokenRegex, ' $& ') : value;\n setTokenValue(() => tempVal);\n setTokenString(() => stringToTokenString(tempVal, options));\n }, [value]);\n\n /**\n * Split string into tokens and set string value w/o __TOKEN__\n * Tokens are used to render a styled tokens using ``\n */\n useEffect(() => {\n const splitTokens = tokenString.split(/__TOKEN__(.*?)__TOKEN__/g);\n const splitTokensStr = splitTokens.join('');\n setTokens(() => splitTokens);\n setTokenValue(() => splitTokensStr);\n setPrevTokenValue(() => splitTokensStr);\n }, [tokenString]);\n\n useEffect(() => {\n // Auto Grow Input\n if (contextMaxLength - 3 < tokenValue.length) {\n const newHeight = inputRef.current.scrollHeight + 3;\n setStringBuilderHeight(() => newHeight);\n setContentMaxLength(() => contextMaxLength + 25);\n }\n }, [tokenString, tokenValue]);\n\n /**\n *\n * @param {*} option : Option object for selected option from dropdown\n * When user selects an option append and prepend `__TOKEN__` to detect the token,\n * so they can be styled or manipulated later\n */\n const handleOptionSelection = (option) => {\n let newInput = '';\n const { selectionStart } = inputRef.current;\n if (prevTokenString && prevTokenString !== value && !selectedInvalidToken) {\n /* eslint prefer-destructuring: [\"error\", {VariableDeclarator: {object: true}}] */\n newInput = prevTokenString + tokenValue.split(prevTokenValue)[1];\n }\n let tokenizedString = '';\n // Adding token in Middle\n if (selectionStart !== tokenValue.length && !selectedInvalidToken) {\n const newTokenValue = tokenValue.slice(0, selectionStart)\n + option.id\n + tokenValue.slice(selectionStart);\n tokenizedString = stringToTokenString(newTokenValue, options);\n setCursorPos(inputRef, selectionStart + option.id.length);\n } else {\n tokenizedString = `${newInput || tokenValue}__TOKEN__${\n option.id\n }__TOKEN__`;\n }\n if (selectedInvalidToken) {\n tokenizedString = tokenString.replace(\n ` ${selectedInvalidToken} `,\n `__TOKEN__${option.id}__TOKEN__`,\n );\n setSelectedInvalidToken(() => null);\n setInitialSearchValue(() => '');\n }\n setTokenString(() => tokenizedString);\n setShowOptions(() => false);\n setTimeout(() => {\n inputRef.current.focus();\n }, 20);\n };\n\n const getThemeClasses = () => {\n const themes = theme ? theme.split(' ') : [];\n return themes.map((iTheme) => `tyk-form-group--${iTheme}`);\n };\n\n const getCssClasses = () => [\n 'tyk-form-group',\n ...getThemeClasses(),\n error && 'has-error',\n disabled && 'disabled',\n ]\n .filter(Boolean)\n .join(' ');\n\n const findInvalidTokenSubstitute = (invalidToken) => {\n setSelectedInvalidToken(() => invalidToken);\n setInitialSearchValue(() => invalidToken.replace(/[^a-zA-Z ]/g, ''));\n setShowOptions(() => true);\n };\n\n return (\n
    \n
    \n {label && (\n \n )}\n {!readOnly && (\n
    \n \n \n \n \n \n
    \n
    \n )}\n {\n readOnly &&
    {value || '-'}
    \n }\n
    \n \n );\n}\n\nStringBuilder.propTypes = {\n /** Options to render in the list */\n options: PropTypes.arrayOf(\n PropTypes.shape({\n /** id is the value that will be appended to the string on selection */\n id: PropTypes.string.isRequired,\n /** name of option (view) */\n name: PropTypes.string.isRequired,\n /** to style / highlight the token */\n className: PropTypes.string,\n /** description of option */\n desc: PropTypes.string,\n }),\n ),\n /** Callback executed on change of string value */\n onChange: PropTypes.func,\n /** Initial value */\n value: PropTypes.string,\n /** Disable input */\n disabled: PropTypes.bool,\n /** Read Only prop removes the form element and displays just the value */\n readOnly: PropTypes.bool,\n /** Show error state (w/ or w/o message) */\n error: PropTypes.string,\n /** Component theme */\n theme: PropTypes.string,\n /** Footnote for component */\n note: PropTypes.string,\n /** Label for component */\n label: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.func,\n PropTypes.string,\n ]),\n /** Label Width for component */\n labelwidth: PropTypes.string,\n /** Placeholder for component */\n placeholder: PropTypes.string,\n /** Key To trigger dropdown */\n dropdownTriggerKey: PropTypes.string,\n /** Regex to detect invalid tokens in the value */\n invalidTokenRegex: PropTypes.instanceOf(RegExp),\n /** Allow users to search from options */\n allowSearch: PropTypes.bool,\n name: PropTypes.string,\n wrapperClassName: PropTypes.string,\n};\n\nStringBuilder.defaultProps = {\n onChange: null,\n value: '',\n options: [],\n theme: 'default',\n};\n\nexport default StringBuilder;\n","const config = {\n FORM_DEBOUNCE: 200,\n};\n\nexport function setConfig(key, val) {\n config[key] = val;\n}\n\nexport default config;\n","import React, { useCallback, useEffect, useState } from 'react';\n\nimport config from '../config/config';\n\nfunction getValueFromPath(obj, path) {\n // turn 'aaa.qqq[2].bbb[5][3].mmm' into ['aaa', 'qqq', '2', 'bbb', '5', '3', 'mmm']\n const indexes = path.split(/[\\][.]/).filter(Boolean);\n return indexes.reduce((acc, v) => (acc ? acc[v] : acc), obj);\n}\n\nfunction debounce(f, limit) {\n let timeoutId;\n return (...args) => {\n clearTimeout(timeoutId);\n timeoutId = setTimeout(f, limit, ...args);\n };\n}\n\n/* eslint-disable react/prop-types, react/function-component-definition */\n/**\n * A wrapper function that \"prepares\" a tyk-ui form component to be used with the formik library.\n * It handles things like setting the value of the component, change events, error state,\n * and also has a default debounce time for when the change event is triggered.\n */\nconst wrapper = (Component, options) => ({ field, form, ...properties }) => {\n const DEFAULT_DEBOUNCE_TIME_MS = typeof config.FORM_DEBOUNCE === 'number' ? config.FORM_DEBOUNCE : 200;\n const [myValue, setMyValue] = useState(field.value);\n const opts = {\n getOnChangeProps: () => ({}),\n hasIsFieldProp: false,\n ...options,\n };\n\n const executeDebounced = useCallback((() => {\n const fn = (f) => f();\n if (\n properties.debounce === false\n || (config.FORM_DEBOUNCE === false && !properties.debounce)\n ) {\n return fn;\n }\n const timeout = typeof properties.debounce === 'number'\n ? properties.debounce\n : DEFAULT_DEBOUNCE_TIME_MS;\n return debounce(fn, timeout);\n })(), []);\n\n const getValue = (v) => {\n if (v && v.target) {\n if (v.target.nodeName === 'INPUT' && (v.target.type === 'checkbox' || v.target.type === 'radio')) {\n return v.target.checked;\n }\n return v.target.value;\n }\n return v;\n };\n\n const onChange = (valueOrEvent) => {\n const value = getValue(valueOrEvent);\n const onChangeProps = opts.getOnChangeProps(value, field, form, properties);\n\n const newValue = onChangeProps.value || properties.value || value;\n executeDebounced(() => {\n if (typeof properties.onChange === 'function') {\n properties.onChange(newValue);\n }\n field.onChange({ target: { name: field.name, value: newValue, ...onChangeProps } });\n });\n setMyValue(newValue);\n };\n\n const formError = (getValueFromPath(form.touched, field.name) || Boolean(form.submitCount))\n && getValueFromPath(form.errors, field.name);\n const error = typeof formError === 'string' ? formError : '';\n\n useEffect(() => {\n setMyValue(field.value);\n }, [field.value]);\n\n // eslint-disable-next-line no-param-reassign\n if (form.status?.disabled) properties.disabled = true;\n\n const componentProps = { ...properties };\n delete componentProps.debounce;\n\n return (\n \n );\n};\n\nexport default wrapper;\n","import wrapper from '../../../utils/formik';\nimport Checkbox from '../../components/Checkbox';\n\nexport default wrapper(Checkbox, {\n getOnChangeProps: (value) => ({\n checked: value,\n }),\n});\n","import wrapper from '../../../utils/formik';\nimport CodeEditor from '../../components/CodeEditor';\n\nexport default wrapper(CodeEditor);\n","import wrapper from '../../../utils/formik';\nimport Combobox from '../../components/Combobox';\n\nexport default wrapper(Combobox);\n","import wrapper from '../../../utils/formik';\nimport Combobox2 from '../../components/Combobox2';\n\nexport default wrapper(Combobox2);\n","import wrapper from '../../../utils/formik';\nimport DatePicker from '../../components/DatePicker';\n\nexport default wrapper(DatePicker);\n","import wrapper from '../../../utils/formik';\nimport EditableList from '../../components/EditableList';\n\nexport default wrapper(EditableList, {\n getOnChangeProps: value => ({ value: value || [] }),\n});\n","import wrapper from '../../../utils/formik';\nimport EditableList2 from '../../components/EditableList2';\n\nexport default wrapper(EditableList2);\n","import wrapper from '../../../utils/formik';\nimport FileInput from '../../components/FileInput';\n\nexport default wrapper(FileInput);\n","import wrapper from '../../../utils/formik';\nimport Input from '../../components/Input';\n\nexport default wrapper(Input, { hasIsFieldProp: true });\n","import wrapper from '../../../utils/formik';\nimport Input2 from '../../components/Input2';\n\nexport default wrapper(Input2);\n","import wrapper from '../../../utils/formik';\nimport MultiSelect from '../../components/Multiselect';\n\nexport default wrapper(MultiSelect);\n","import wrapper from '../../../utils/formik';\nimport Radio from '../../components/Radio';\n\nexport default wrapper(Radio, {\n getOnChangeProps: (value, field, form, properties) => ({\n checked: value === properties.value,\n value: properties.value,\n }),\n});\n","import wrapper from '../../../utils/formik';\nimport Select from '../../components/Select';\n\nexport default wrapper(Select, { hasIsFieldProp: true });\n","import wrapper from '../../../utils/formik';\nimport SelectableList from '../../components/SelectableList';\n\nexport default wrapper(SelectableList);\n","import wrapper from '../../../utils/formik';\nimport Textarea from '../../components/Textarea';\n\nexport default wrapper(Textarea);\n","import wrapper from '../../../utils/formik';\nimport Toggle from '../../components/Toggle';\n\nexport default wrapper(Toggle);\n","import wrapper from '../../../utils/formik';\nimport StringBuilder from '../../components/StringBuilder';\n\nexport default wrapper(StringBuilder);\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { fromJS } from 'immutable';\n\nimport CodeEditor from '../../components/CodeEditor';\n\nexport default class FieldCodeEditor extends Component {\n static propTypes = {\n input: PropTypes.instanceOf(Object),\n meta: PropTypes.instanceOf(Object),\n validationmessages: PropTypes.instanceOf(Object),\n };\n\n constructor(props) {\n super(props);\n\n this.handleOnChange = this.handleOnChange.bind(this);\n }\n\n getInputError() {\n const { meta, validationmessages } = this.props;\n const { touched, error, warning } = meta;\n let message = null;\n\n if (touched && error && validationmessages[error]) {\n message = validationmessages[error];\n } else if (touched && warning) {\n message = 'warning';\n }\n\n return message;\n }\n\n handleOnChange(value) {\n const { input } = this.prop;\n const { onChange } = input;\n\n onChange(fromJS(value));\n }\n\n render() {\n const { input, ...rest } = this.props;\n\n return (\n \n );\n }\n}\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { fromJS } from 'immutable';\n\nimport Combobox from '../../components/Combobox';\n\nexport default class FieldCombobox extends Component {\n static propTypes = {\n meta: PropTypes.instanceOf(Object),\n input: PropTypes.instanceOf(Object),\n validationmessages: PropTypes.instanceOf(Object),\n }\n\n constructor(props) {\n super(props);\n\n this.handleOnChange = this.handleOnChange.bind(this);\n }\n\n getComboboxError() {\n const { meta, validationmessages } = this.props;\n const { touched, error, warning } = meta;\n let message = null;\n\n if (touched && error && validationmessages[error]) {\n message = validationmessages[error];\n } else if (touched && warning) {\n message = 'warning';\n }\n\n return message;\n }\n\n handleOnChange(value) {\n const { input } = this.props;\n const { onChange } = input;\n\n onChange(fromJS(value));\n }\n\n render() {\n const { ...props } = this.props;\n\n return (\n \n );\n }\n}\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { fromJS } from 'immutable';\n\nimport Dropdown from '../../components/Dropdown';\n\nexport default class FieldDropdown extends Component {\n static propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n input: PropTypes.instanceOf(Object),\n };\n\n constructor(props) {\n super(props);\n\n this.handleOnChange = this.handleOnChange.bind(this);\n }\n\n handleOnChange(value) {\n const { input } = this.props;\n const { onChange } = input;\n\n onChange(fromJS(value));\n }\n\n render() {\n const {\n children,\n input,\n ...rest\n } = this.props;\n\n return (\n \n {children}\n \n );\n }\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport Pagination from '../../components/Pagination';\n\nconst FieldPagination = (props) => {\n const { input, ...rest } = props;\n\n return (\n \n );\n};\n\nFieldPagination.propTypes = {\n input: PropTypes.instanceOf(Object),\n};\n\nexport default FieldPagination;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { fromJS } from 'immutable';\n\nimport Combobox2 from '../../components/Combobox2';\n\nconst FieldCombobox2 = (props) => {\n const { input, meta, validationmessages } = props;\n\n const getComboboxError = () => {\n const { touched, error, warning } = meta;\n let message = null;\n\n if (touched && error && validationmessages[error]) {\n message = validationmessages[error];\n } else if (touched && warning) {\n message = 'warning';\n }\n return message;\n };\n\n const handleOnChange = (value) => {\n const { onChange } = input;\n onChange(fromJS(value));\n };\n\n return (\n \n );\n};\n\nFieldCombobox2.propTypes = {\n meta: PropTypes.instanceOf(Object),\n input: PropTypes.instanceOf(Object),\n validationmessages: PropTypes.instanceOf(Object),\n};\n\nexport default FieldCombobox2;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { fromJS } from 'immutable';\n\nimport DatePicker from '../../components/DatePicker';\n\nconst FormDatePicker = (props) => {\n const {\n input,\n meta,\n validationmessages,\n ...rest\n } = props;\n\n const getDatePickerError = () => {\n const { touched, error } = meta;\n let message = null;\n\n if (touched && error && validationmessages[error]) {\n message = validationmessages[error];\n }\n\n return message;\n };\n\n const handleOnChange = (value) => {\n const { onChange } = input;\n\n onChange(fromJS(value));\n };\n\n return (\n \n );\n};\n\nFormDatePicker.propTypes = {\n meta: PropTypes.instanceOf(Object),\n input: PropTypes.instanceOf(Object),\n validationmessages: PropTypes.instanceOf(Object),\n};\n\nexport default FormDatePicker;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { fromJS } from 'immutable';\n\nimport EditableList from '../../components/EditableList';\n\nexport default class FieldEditableList extends Component {\n static propTypes = {\n input: PropTypes.instanceOf(Object),\n meta: PropTypes.instanceOf(Object),\n validationmessages: PropTypes.instanceOf(Object),\n };\n\n constructor(props) {\n super(props);\n\n this.handleOnChange = this.handleOnChange.bind(this);\n }\n\n getEditableListError() {\n const { meta, validationmessages } = this.props;\n const { touched, error } = meta;\n let message = null;\n\n if (touched && error && validationmessages[error]) {\n message = validationmessages[error];\n }\n\n return message;\n }\n\n handleOnChange(value) {\n const { input } = this.props;\n const { onChange } = input;\n\n onChange(fromJS(value));\n }\n\n render() {\n const { ...props } = this.props;\n\n return (\n \n );\n }\n}\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\nimport FileInput from '../../components/FileInput';\n\nexport default class FieldFileInput extends Component {\n static propTypes = {\n input: PropTypes.instanceOf(Object),\n meta: PropTypes.instanceOf(Object),\n validationmessages: PropTypes.instanceOf(Object),\n };\n\n getInputError() {\n const { meta, validationmessages } = this.props;\n const { touched, error, warning } = meta;\n let message = null;\n\n if (touched && error && validationmessages[error]) {\n message = validationmessages[error];\n } else if (touched && warning) {\n message = 'warning';\n }\n\n return message;\n }\n\n render() {\n const { input, ...rest } = this.props;\n\n return (\n \n );\n }\n}\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Input from '../../components/Input';\n\nexport default class FieldInput extends Component {\n static propTypes = {\n meta: PropTypes.instanceOf(Object),\n input: PropTypes.instanceOf(Object),\n validationmessages: PropTypes.instanceOf(Object),\n }\n\n getInputError() {\n const { meta, validationmessages } = this.props;\n const { touched, error, warning } = meta;\n let message = null;\n\n if (touched && error && validationmessages[error]) {\n message = validationmessages[error];\n } else if (touched && warning) {\n message = 'warning';\n }\n\n return message;\n }\n\n render() {\n const { input, ...rest } = this.props;\n\n return (\n \n );\n }\n}\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { fromJS } from 'immutable';\n\nimport Multiselect from '../../components/Multiselect';\n\nexport default class FieldMultiselect extends Component {\n static propTypes = {\n input: PropTypes.instanceOf(Object),\n meta: PropTypes.instanceOf(Object),\n validationmessages: PropTypes.instanceOf(Object),\n }\n\n constructor(props) {\n super(props);\n\n this.handleOnChange = this.handleOnChange.bind(this);\n }\n\n getMultiselectError() {\n const { meta, validationmessages } = this.props;\n const { touched, error, warning } = meta;\n let message = null;\n\n if (touched && error && validationmessages[error]) {\n message = validationmessages[error];\n } else if (touched && warning) {\n message = 'warning';\n }\n\n return message;\n }\n\n handleOnChange(value) {\n const { input } = this.props;\n const { onChange } = input;\n\n onChange(fromJS(value));\n }\n\n render() {\n const { ...props } = this.props;\n\n return (\n \n );\n }\n}\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { fromJS } from 'immutable';\n\nimport Select from '../../components/Select';\n\nexport default class FieldSelect extends Component {\n static propTypes = {\n input: PropTypes.instanceOf(Object),\n meta: PropTypes.instanceOf(Object),\n validationmessages: PropTypes.instanceOf(Object),\n };\n\n constructor(props) {\n super(props);\n\n this.handleEvent = this.handleEvent.bind(this);\n }\n\n getSelectError() {\n const { meta, validationmessages } = this.props;\n const { touched, error, warning } = meta;\n let message = null;\n\n if (touched && error && validationmessages[error]) {\n message = validationmessages[error];\n } else if (touched && warning) {\n message = 'warning';\n }\n\n return message;\n }\n\n handleEvent(selectValue) {\n const { input } = this.props;\n const { onChange, value } = input;\n\n onChange(fromJS(selectValue !== undefined ? selectValue : value));\n }\n\n render() {\n const { input, ...rest } = this.props;\n\n return (\n \n );\n }\n}\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { fromJS } from 'immutable';\n\nimport SelectableList from '../../components/SelectableList';\n\nexport default class FieldSelectableList extends Component {\n static propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.node,\n ]),\n onChange: PropTypes.func,\n input: PropTypes.instanceOf(Object),\n };\n\n constructor(props) {\n super(props);\n\n this.handleOnChange = this.handleOnChange.bind(this);\n }\n\n handleOnChange(value) {\n const { input } = this.props;\n\n input.onChange(fromJS(value));\n }\n\n render() {\n const { children, ...props } = this.props;\n\n return (\n \n );\n }\n}\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { fromJS } from 'immutable';\n\nimport Toggle from '../../components/Toggle';\n\nexport default class FieldToggle extends Component {\n static propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.node,\n ]),\n onChange: PropTypes.func,\n input: PropTypes.instanceOf(Object),\n };\n\n constructor(props) {\n super(props);\n\n this.handleOnChange = this.handleOnChange.bind(this);\n }\n\n handleOnChange(value) {\n const { input } = this.props;\n\n input.onChange(fromJS(value));\n }\n\n render() {\n const { children, ...props } = this.props;\n\n return (\n \n {children}\n \n );\n }\n}\n","import './index.scss';\n\n// -- Components\nexport { default as Accordion } from './components/Accordion';\nexport { default as Button } from './components/Button';\nexport { default as ButtonGroup } from './components/ButtonGroup';\nexport { default as Collapsible } from './components/Collapsible';\nexport { default as Chart } from './components/Chart';\nexport { default as CopyToClipboard } from './components/CopyToClipboard';\nexport { default as Confirm } from './components/Confirm';\nexport { default as FixedWrapper } from './components/FixedWrapper';\nexport { default as FloatingContainer } from './components/FloatingContainer';\nexport { default as Icon } from './components/Icon';\nexport { default as InfiniteScroller } from './components/InfiniteScroller';\nexport { default as InfoNote } from './components/InfoNote';\nexport { default as List } from './components/List';\nexport { default as Loader } from './components/Loader';\nexport { default as Message } from './components/Message';\nexport { default as Modal } from './components/Modal';\nexport { default as NavBar } from './components/NavBar';\nexport { default as Navigation } from './components/Navigation';\nexport { default as Panel } from './components/Panel';\nexport { default as Pill } from './components/Pill';\nexport { default as RevealPanel } from './components/RevealPanel';\nexport { default as Tabs } from './components/Tabs';\nexport { default as TextEllipsis } from './components/TextEllipsis';\nexport { default as toast } from './components/Toast';\nexport { default as Tooltip } from './components/Tooltip';\nexport { default as Table } from './components/Table';\n\n// -- Layout\nexport { default as Column } from './layout/Column';\nexport { default as Row } from './layout/Row';\n\n// -- Form Components\nexport { default as Checkbox } from './form/components/Checkbox';\nexport { default as Dropdown } from './form/components/Dropdown';\nexport { default as CodeEditor } from './form/components/CodeEditor';\nexport { default as Combobox } from './form/components/Combobox';\nexport { default as Combobox2 } from './form/components/Combobox2';\nexport { default as DatePicker } from './form/components/DatePicker';\nexport { default as EditableList } from './form/components/EditableList';\nexport { default as EditableList2 } from './form/components/EditableList2';\nexport { default as FileInput } from './form/components/FileInput';\nexport { default as Input } from './form/components/Input';\nexport { default as Input2 } from './form/components/Input2';\nexport { default as Multiselect } from './form/components/Multiselect';\nexport { default as Radio } from './form/components/Radio';\nexport { default as Select } from './form/components/Select';\nexport { default as SelectableList } from './form/components/SelectableList';\nexport { default as Textarea } from './form/components/Textarea';\nexport { default as Toggle } from './form/components/Toggle';\nexport { default as Pagination } from './form/components/Pagination';\nexport { default as StringBuilder } from './form/components/StringBuilder';\n\n// -- Formik\n\nexport { default as FormikCheckbox } from './form/formik/FormikCheckbox';\nexport { default as FormikCodeEditor } from './form/formik/FormikCodeEditor';\nexport { default as FormikCombobox } from './form/formik/FormikCombobox';\nexport { default as FormikCombobox2 } from './form/formik/FormikCombobox2';\nexport { default as FormikDatePicker } from './form/formik/FormikDatePicker';\nexport { default as FormikEditableList } from './form/formik/FormikEditableList';\nexport { default as FormikEditableList2 } from './form/formik/FormikEditableList2';\nexport { default as FormikFileInput } from './form/formik/FormikFileInput';\nexport { default as FormikInput } from './form/formik/FormikInput';\nexport { default as FormikInput2 } from './form/formik/FormikInput2';\nexport { default as FormikMultiselect } from './form/formik/FormikMultiselect';\nexport { default as FormikRadio } from './form/formik/FormikRadio';\nexport { default as FormikSelect } from './form/formik/FormikSelect';\nexport { default as FormikSelectableList } from './form/formik/FormikSelectableList';\nexport { default as FormikTextarea } from './form/formik/FormikTextarea';\nexport { default as FormikToggle } from './form/formik/FormikToggle';\nexport { default as FormikStringBuilder } from './form/formik/FormikStringBuilder';\nexport { default as FormikWrapper } from './utils/formik';\n\n// Redux - Form\n\nexport { default as FieldCodeEditor } from './form/redux-form/FieldCodeEditor';\nexport { default as FieldCombobox } from './form/redux-form/FieldCombobox';\nexport { default as FieldDropdown } from './form/redux-form/FieldDropdown';\nexport { default as FieldPagination } from './form/redux-form/FieldPagination';\nexport { default as FieldCombobox2 } from './form/redux-form/FieldCombobox2';\nexport { default as FieldDatePicker } from './form/redux-form/FieldDatePicker';\nexport { default as FieldEditableList } from './form/redux-form/FieldEditableList';\nexport { default as FieldFileInput } from './form/redux-form/FieldFileInput';\nexport { default as FieldInput } from './form/redux-form/FieldInput';\nexport { default as FieldMultiselect } from './form/redux-form/FieldMultiselect';\nexport { default as FieldSelect } from './form/redux-form/FieldSelect';\nexport { default as FieldSelectableList } from './form/redux-form/FieldSelectableList';\nexport { default as FieldToggle } from './form/redux-form/FieldToggle';\n\n// -- Utils\nexport { default as usePrevious } from './hooks/usePrevious';\nexport { default as useTimeout } from './hooks/useTimeout';\nexport { default as useInterval } from './hooks/useInterval';\nexport { default as useEventListener } from './hooks/useEventListener';\nexport { default as useComponentSize } from './hooks/useComponentSize';\nexport { setConfig } from './utils/config/config';\n"],"names":["_a","values","_b","filteredValues","newTokenValue","newTokenizedString","invalidToken","newTokenString"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"index.js","mappings":"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EAAG,EAAG,IAAK,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,IAAK,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,IAAK,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,IAAK,GAAI,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,KAAM,GAAI,EAAG,GAAI,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,IAAK,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,KAAM,GAAI,MAAO,GAAI,KAAM,GAAI,GAAI,EAAG,IAAK,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,IAAK,EAAG,EAAG,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,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ACCG,MAAO,CAAC,eAAgB,uBAAwB,4BAChDH,MAAO,kEACR,CACCG,MAAOqyD,EACPxyD,MAAO80D,GACR,CACC30D,MAAO,uBACPH,MAAO,aACPpkB,KAAM,YACP,CACCukB,MAAO,eACPH,MAAO,KACPpkB,KAAM,SACP,CACCukB,MAAO,mBACPH,MAAO,yEACPpkB,KAAM,SACP,CACCukB,MAAO,uBACPH,MAAO,UACPpkB,KAAM,SACP,CACCukB,MAAO,eACPH,MAAO,SACPpkB,KAAM,SACP,CACCukB,MAAO,eACPH,MAAO,UACR,CACCG,MAAO,UACPH,MAAO,WAGf7mC,SAAU,CAAC,CACHgnC,MAAO,OACPH,MAAO,QACR,CACCG,MAAO,CACH,eAAgB,uBAAwB,uBAAwB,OAChE,mBAAoB,OACpB,eAAgB,OAAQ,uBAAwB,OAAQ,gBAE5DH,MAAO,IAAM80D,EAAe,UAAYA,EAAe,6DACvDl5E,KAAM,sBACP,CACCukB,MAAO,uBACPH,MAAO,cACR,CACCG,MAAO,mBACPH,MAAO,gwDACR,CACCG,MAAO,uBACPH,MAAO,+lBACR,CACCG,MAAO,mBACPH,MAAO,y2DACR,CACCG,MAAO,aACPH,MAAO80D,GACR,CACC90D,MAAO,GACPG,MAAO,QACPvkB,KAAM,aAGd,MAAS,CACL04E,EAAyBE,aAAa,aACtCS,EAAS,SACT,CACI90D,MAAO,gBACPH,MAAO,MACPpkB,KAAM,SACP,CACCukB,MAAO,OACPH,MAAO,UACPpkB,KAAM,SACP,CACCukB,MAAO,QACPH,MAAO,GACPpkB,KAAM,aAGd,MAAS,CACL,CACIukB,MAAO,0BACPH,MAAO,6CACR,CACCG,MAAO,gBACPH,MAAO,cACPpkB,KAAM,YACP,CACCukB,MAAO,UACPH,MAAO,iDACR,CACCG,MAAO,2BACPH,MAAO,iDACR,CACCG,MAAO,8BACPH,MAAO,MACR,CACCG,MAAO,2BACPH,MAAO,QACPpkB,KAAM,yBACP,CACCukB,MAAO,QACPH,MAAO,IACPpkB,KAAM,YACP,CACC8jB,aAAc,kBAGtB,sBAAyB,CACrB,CACIS,MAAO,oCACPH,MAAO,6CACR,CACCG,MAAO,2BACPH,MAAO,IACPpkB,KAAM,SACP,CACCukB,MAAO,2BACPH,MAAO,KACR,CACCG,MAAO,QACPH,MAAO,IACPpkB,KAAM,YACP,CACC8jB,aAAc,kCAGtB,kBAAqB,CACjB,CACIS,MAAO,SACPH,MAAO,SACP11C,KAAM,CACF,CACI61C,MAAO,SACPH,MAAO,MACPpkB,KAAM,OACP,CACC/kB,QAAS,aAGlB,CACCspC,MAAO,SACPH,MAAO,SACP11C,KAAM,CACF,CACI61C,MAAO,SACPH,MAAO,MACPpkB,KAAM,OACP,CACC/kB,QAAS,cAGlB,CACCspC,MAAO,oBACPH,MAAO,+BACR,CACCG,MAAO,mBACPH,MAAO,gDACR,CACCG,MAAO,mBACPH,MAAO,gDACR,CACCG,MAAO,uBACPH,MAAO,IACPpkB,KAAM,sBACP,CACCukB,MAAO,OACPH,MAAO,QACR,CACCG,MAAO,uBACPH,MAAO,KACR,CACCG,MAAO,QACPH,MAAO,GACPpkB,KAAM,aAGd,mBAAsB,CAClBq5E,EAAS,sBACT,CACI90D,MAAO,qBACPH,MAAO80D,GACR,CACC30D,MAAO,uBACPH,MAAO,KACR,CACCG,MAAO,OACPH,MAAO,QACR,CACCG,MAAO,uBACPH,MAAO,KACR,CACCG,MAAO,QACPH,MAAO,GACPpkB,KAAM,aAGd,SAAY,CACR,CACIukB,MAAO,2BACPH,MAAOg1D,GACR,CACC70D,MAAO,SACPH,MAAO,QACP0B,gBAAgB,GACjB,CACCvB,MAAO,SACPH,MAAO,MACPpkB,KAAM,YACP,CACC8jB,aAAc,WAGtB,QAAW,CACP,CACIS,MAAO,2BACPH,MAAOg1D,GACR,CACC70D,MAAO,SACPH,MAAO,QACP0B,gBAAgB,GACjB,CACCvB,MAAO,SACPH,MAAO,MACPpkB,KAAM,YACP,CACC8jB,aAAc,YAIrB1qC,GAAYA,EAAQkgG,QACrB3sG,KAAKu5C,OAAOqzD,SAASvzD,QAAQ,CACzB5B,MAAO,OAAQM,QAAS,SAAU30C,EAAK+9B,EAAOqX,GAE1C,GADAx4C,KAAKqzB,KAAc,KAAPjwB,EAAa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,OACnBv6E,KAAM,eACP,CACCukB,MAAO,SACPH,MAAOm2D,EAAY,SACnBv6E,KAAM,cACP,CACCukB,MAAO,SACPH,MAAOo2D,EAAe,OACtBx6E,KAAM,cACP,CACCukB,MAAO,SACPH,MAAOo2D,EAAe,SACtBx6E,KAAM,aACP,CACCukB,MAAO,SACPH,MAAOo2D,EAAe,OACtBx6E,KAAM,aACP,CACCukB,MAAO,SACPH,MAAOo2D,EAAe,SACtBx6E,KAAM,YACP,CACCukB,MAAO,SACPH,MAAOq2D,EAAkB,OACzBz6E,KAAM,eACP,CACCukB,MAAO,SACPH,MAAOq2D,EAAkB,SACzBz6E,KAAM,cACP,CACCukB,MAAO,SACPH,MAAOq2D,EAAkB,OACzBz6E,KAAM,cACP,CACCukB,MAAO,SACPH,MAAOq2D,EAAkB,SACzBz6E,KAAM,aACP,CACCukB,MAAO,mBACPH,MAAO,4EACR,CACCG,MAAO,cACPH,MAAO,2EACR,CACCG,MAAO,eACPH,MAAO,eACR,CACCG,MAAO,eACPH,MAAO,eACR,CACCG,MAAO,CAAC,UAAW,OAAQ,wBAC3BH,MAAO,2DACR,CACCG,MAAO,OACPH,MAAO,QACR,CACCnpC,QAAS,cAEjB,UAAa,CAAC,CACNspC,MAAO,2BACPH,MAAO02D,GACR,CACCv2D,MAAO,SACPH,MAAO,OACPpkB,KAAM,SACP,CACC8jB,aAAc,WAEtB,SAAY,CAAC,CACLS,MAAO,2BACPH,MAAO02D,GACR,CACCv2D,MAAO,SACPH,MAAO,OACPpkB,KAAM,SACP,CACC8jB,aAAc,WAEtB,SAAY,CAAC,CACLS,MAAO,2BACPH,MAAO02D,GACR,CACCv2D,MAAO,SACPH,MAAO,QACPpkB,KAAM,YACP,CACCukB,MAAO,SACPH,MAAO,MACPpkB,KAAM,SACP,CACC8jB,aAAc,WAEtB,QAAW,CAAC,CACJS,MAAO,2BACPH,MAAO02D,GACR,CACCv2D,MAAO,SACPH,MAAO,QACPpkB,KAAM,WACP,CACCukB,MAAO,SACPH,MAAO,MACPpkB,KAAM,SACP,CACC8jB,aAAc,WAEtB,aAAgB,CAAC,CACTS,MAAO,SACPH,MAAO,OACPpkB,KAAM,SACP,CACC8jB,aAAc,WAEtB,YAAe,CAAC,CACRS,MAAO,SACPH,MAAO,OACPpkB,KAAM,SACP,CACC8jB,aAAc,WAEtB,YAAe,CAAC,CACRS,MAAO,SACPH,MAAO,QACPpkB,KAAM,eACP,CACCukB,MAAO,SACPH,MAAO,MACPpkB,KAAM,SACP,CACC8jB,aAAc,WAEtB,WAAc,CAAC,CACPS,MAAO,SACPH,MAAO,QACPpkB,KAAM,cACP,CACCukB,MAAO,SACPH,MAAO,MACPpkB,KAAM,SACP,CACC8jB,aAAc,WAEtB,WAAc,CAAC,CACPS,MAAO,2BACPH,MAAO02D,GACR,CACCv2D,MAAO,SACPH,MAAO,OACPpkB,KAAM,SACP,CACCukB,MAAO,eACPH,MAAO,IACP11C,KAAM,oBACP,CACCo1C,aAAc,WAEtB,UAAa,CAAC,CACNS,MAAO,2BACPH,MAAO02D,GACR,CACCv2D,MAAO,SACPH,MAAO,OACPpkB,KAAM,SACP,CACCukB,MAAO,eACPH,MAAO,IACP11C,KAAM,oBACP,CACCo1C,aAAc,WAEtB,UAAa,CAAC,CACNS,MAAO,2BACPH,MAAO02D,GACR,CACCv2D,MAAO,SACPH,MAAO,QACPpkB,KAAM,aACP,CACCukB,MAAO,SACPH,MAAO,MACPpkB,KAAM,SACP,CACCukB,MAAO,eACPH,MAAO,IACP11C,KAAM,oBACP,CACCo1C,aAAc,WAEtB,SAAY,CAAC,CACLS,MAAO,2BACPH,MAAO02D,GACR,CACCv2D,MAAO,SACPH,MAAO,MACPpkB,KAAM,SACP,CACCukB,MAAO,eACPH,MAAO,IACP11C,KAAM,oBACP,CACCo1C,aAAc,WAEtB,YAAe,CAAC,CACRS,MAAO,SACPH,MAAO,OACPpkB,KAAM,SACP,CACCukB,MAAO,eACPH,MAAO,IACP11C,KAAM,oBACP,CACCo1C,aAAc,WAEtB,WAAc,CAAC,CACPS,MAAO,SACPH,MAAO,OACPpkB,KAAM,SACP,CACCukB,MAAO,eACPH,MAAO,IACP11C,KAAM,oBACP,CACCo1C,aAAc,WAEtB,WAAc,CAAC,CA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","sources":["webpack://@tyk-technologies/tyk-ui/./node_modules/ace-builds/src-noconflict/ace.js","webpack://@tyk-technologies/tyk-ui/./node_modules/ace-builds/src-noconflict/ext-beautify.js","webpack://@tyk-technologies/tyk-ui/./node_modules/ace-builds/src-noconflict/ext-searchbox.js","webpack://@tyk-technologies/tyk-ui/./node_modules/ace-builds/src-noconflict/mode-css.js","webpack://@tyk-technologies/tyk-ui/./node_modules/ace-builds/src-noconflict/mode-golang.js","webpack://@tyk-technologies/tyk-ui/./node_modules/ace-builds/src-noconflict/mode-javascript.js","webpack://@tyk-technologies/tyk-ui/./node_modules/ace-builds/src-noconflict/mode-json.js","webpack://@tyk-technologies/tyk-ui/./node_modules/ace-builds/src-noconflict/mode-jsx.js","webpack://@tyk-technologies/tyk-ui/./node_modules/ace-builds/src-noconflict/mode-python.js","webpack://@tyk-technologies/tyk-ui/./node_modules/ace-builds/src-noconflict/mode-xml.js","webpack://@tyk-technologies/tyk-ui/./node_modules/ace-builds/src-noconflict/theme-github.js","webpack://@tyk-technologies/tyk-ui/./node_modules/flatpickr/dist/flatpickr.min.css","webpack://@tyk-technologies/tyk-ui/./node_modules/css-loader/dist/runtime/api.js","webpack://@tyk-technologies/tyk-ui/./node_modules/css-loader/dist/runtime/sourceMaps.js","webpack://@tyk-technologies/tyk-ui/./node_modules/react-dom/client.js","webpack://@tyk-technologies/tyk-ui/./node_modules/react-fast-compare/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js","webpack://@tyk-technologies/tyk-ui/./node_modules/style-loader/dist/runtime/insertBySelector.js","webpack://@tyk-technologies/tyk-ui/./node_modules/style-loader/dist/runtime/insertStyleElement.js","webpack://@tyk-technologies/tyk-ui/./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js","webpack://@tyk-technologies/tyk-ui/./node_modules/style-loader/dist/runtime/styleDomAPI.js","webpack://@tyk-technologies/tyk-ui/./node_modules/style-loader/dist/runtime/styleTagTransform.js","webpack://@tyk-technologies/tyk-ui/external commonjs2 \"react-dom\"","webpack://@tyk-technologies/tyk-ui/webpack/bootstrap","webpack://@tyk-technologies/tyk-ui/webpack/runtime/amd define","webpack://@tyk-technologies/tyk-ui/webpack/runtime/compat get default export","webpack://@tyk-technologies/tyk-ui/webpack/runtime/define property getters","webpack://@tyk-technologies/tyk-ui/webpack/runtime/hasOwnProperty shorthand","webpack://@tyk-technologies/tyk-ui/webpack/runtime/make namespace object","webpack://@tyk-technologies/tyk-ui/webpack/runtime/node module decorator","webpack://@tyk-technologies/tyk-ui/webpack/runtime/publicPath","webpack://@tyk-technologies/tyk-ui/webpack/runtime/nonce","webpack://@tyk-technologies/tyk-ui/external commonjs2 \"react\"","webpack://@tyk-technologies/tyk-ui/external commonjs2 \"prop-types\"","webpack://@tyk-technologies/tyk-ui/./src/components/Accordion/js/AccordionContext.js","webpack://@tyk-technologies/tyk-ui/./src/components/Accordion/js/AccordionItemContext.js","webpack://@tyk-technologies/tyk-ui/./src/components/Icon/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Accordion/js/AccordionItemTrigger.js","webpack://@tyk-technologies/tyk-ui/./src/components/Accordion/js/AccordionItem.js","webpack://@tyk-technologies/tyk-ui/./src/components/Accordion/js/AccordionItemHeader.js","webpack://@tyk-technologies/tyk-ui/external commonjs2 \"react-transition-group\"","webpack://@tyk-technologies/tyk-ui/./src/hooks/usePrevious/index.js","webpack://@tyk-technologies/tyk-ui/./src/hooks/useTimeout/index.js","webpack://@tyk-technologies/tyk-ui/./src/hooks/useInterval/index.js","webpack://@tyk-technologies/tyk-ui/./src/hooks/useEventListener/index.js","webpack://@tyk-technologies/tyk-ui/./src/hooks/useComponentSize/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Collapsible/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Accordion/js/AccordionItemContent.js","webpack://@tyk-technologies/tyk-ui/./src/components/Accordion/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Button/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/ButtonGroup/index.js","webpack://@tyk-technologies/tyk-ui/external commonjs2 \"echarts\"","webpack://@tyk-technologies/tyk-ui/external commonjs2 \"immutable\"","webpack://@tyk-technologies/tyk-ui/./src/utils/debounce/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Loader/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Message/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Chart/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Toast/js/ToastMessage.js","webpack://@tyk-technologies/tyk-ui/./src/components/Toast/js/ToastContainer.js","webpack://@tyk-technologies/tyk-ui/./src/components/Toast/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/CopyToClipboard/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Modal/js/ModalFooter.js","webpack://@tyk-technologies/tyk-ui/./src/components/Modal/js/ModalBody.js","webpack://@tyk-technologies/tyk-ui/./src/components/Modal/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Confirm/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/FixedWrapper/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/InfiniteScroller/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/FloatingContainer/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/InfoNote/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/List/js/ListItem.js","webpack://@tyk-technologies/tyk-ui/./src/components/List/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/NavBar/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Navigation/js/NavigationItem.js","webpack://@tyk-technologies/tyk-ui/./src/components/Navigation/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Panel/panel-context.js","webpack://@tyk-technologies/tyk-ui/./src/components/Panel/js/PanelBody.js","webpack://@tyk-technologies/tyk-ui/./src/components/Panel/js/PanelFooter.js","webpack://@tyk-technologies/tyk-ui/./src/components/Panel/js/PanelHeader.js","webpack://@tyk-technologies/tyk-ui/./src/components/Panel/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Pill/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/RevealPanel/js/RevealPanelService.js","webpack://@tyk-technologies/tyk-ui/./src/components/RevealPanel/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Tabs/tabs-context.js","webpack://@tyk-technologies/tyk-ui/./src/components/Tabs/js/TabContext.js","webpack://@tyk-technologies/tyk-ui/./src/components/Tabs/js/TabContent.js","webpack://@tyk-technologies/tyk-ui/./src/components/Tabs/js/Tab.js","webpack://@tyk-technologies/tyk-ui/./src/components/Tabs/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Tooltip/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/TextEllipsis/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Pagination/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Table/tableContext.js","webpack://@tyk-technologies/tyk-ui/./src/components/Table/js/header-cell.js","webpack://@tyk-technologies/tyk-ui/./src/components/Table/js/header.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Checkbox/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Table/js/cell.js","webpack://@tyk-technologies/tyk-ui/./src/components/Table/js/row.js","webpack://@tyk-technologies/tyk-ui/./src/components/Table/js/body.js","webpack://@tyk-technologies/tyk-ui/./src/components/Table/index.js","webpack://@tyk-technologies/tyk-ui/./src/layout/Column/index.js","webpack://@tyk-technologies/tyk-ui/./src/layout/Row/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Dropdown/dropdown-context.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Dropdown/js/DropdownItem.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Dropdown/index.js","webpack://@tyk-technologies/tyk-ui/external commonjs2 \"react-ace\"","webpack://@tyk-technologies/tyk-ui/./src/form/components/CodeEditor/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Combobox/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Combobox2/js/Value.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Combobox2/js/List.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Combobox2/index.js","webpack://@tyk-technologies/tyk-ui/external commonjs2 \"flatpickr\"","webpack://@tyk-technologies/tyk-ui/./node_modules/flatpickr/dist/flatpickr.min.css?e03b","webpack://@tyk-technologies/tyk-ui/./src/form/components/DatePicker/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/@babel/runtime/helpers/esm/typeof.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/requiredArgs/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/isDate/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/toDate/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/toInteger/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/startOfUTCISOWeek/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/getUTCISOWeekYear/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/defaultOptions/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/startOfUTCWeek/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/getUTCWeekYear/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/addLeadingZeros/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/format/lightFormatters/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/format/formatters/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/getUTCWeek/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/startOfUTCWeekYear/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/getUTCISOWeek/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/startOfUTCISOWeekYear/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/getUTCDayOfYear/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/format/longFormatters/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/protectedTokens/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/locale/en-US/_lib/formatDistance/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/locale/_lib/buildFormatLongFn/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/locale/en-US/_lib/formatLong/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/locale/en-US/_lib/formatRelative/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/locale/_lib/buildLocalizeFn/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/locale/en-US/_lib/localize/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/locale/_lib/buildMatchFn/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/locale/en-US/_lib/match/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/locale/_lib/buildMatchPatternFn/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/locale/en-US/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/defaultLocale/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/format/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/isValid/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/getTimezoneOffsetInMilliseconds/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/subMilliseconds/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/addMilliseconds/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/EditableList/js/EditableListForm.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/EditableList/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/EditableList2/Header.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/EditableList2/ListHeader.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/EditableList2/FieldsList.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/EditableList2/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/EditableList2/with-validation.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/EditableList2/validate-values.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/FileInput/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Input/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Input2/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Multiselect/js/MultiselectContext.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Multiselect/js/MultiselectItem.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Multiselect/js/MultiselectPanel.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Multiselect/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Radio/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Select/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/SelectableList/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Textarea/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Toggle/js/ToggleContext.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Toggle/js/ToggleItem.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Toggle/js/ToggleItemWrapper.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Toggle/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/StringBuilder/js/service.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/StringBuilder/js/string-input.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/StringBuilder/js/invalid-token.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/StringBuilder/js/tokenized-string.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/StringBuilder/js/options-list.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/StringBuilder/js/string-builder-footer.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/StringBuilder/index.js","webpack://@tyk-technologies/tyk-ui/./src/utils/config/config.js","webpack://@tyk-technologies/tyk-ui/./src/utils/formik/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikCheckbox/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikCodeEditor/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikCombobox/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikCombobox2/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikDatePicker/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikEditableList/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikEditableList2/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikFileInput/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikInput/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikInput2/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikMultiselect/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikRadio/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikSelect/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikSelectableList/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikTextarea/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikToggle/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikStringBuilder/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/redux-form/FieldCodeEditor/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/redux-form/FieldCombobox/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/redux-form/FieldDropdown/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/redux-form/FieldPagination/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/redux-form/FieldCombobox2/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/redux-form/FieldDatePicker/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/redux-form/FieldEditableList/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/redux-form/FieldFileInput/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/redux-form/FieldInput/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/redux-form/FieldMultiselect/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/redux-form/FieldSelect/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/redux-form/FieldSelectableList/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/redux-form/FieldToggle/index.js"],"sourcesContent":["/* ***** BEGIN LICENSE BLOCK *****\n * Distributed under the BSD license:\n *\n * Copyright (c) 2010, Ajax.org B.V.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright\n * notice, this list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright\n * notice, this list of conditions and the following disclaimer in the\n * documentation and/or other materials provided with the distribution.\n * * Neither the name of Ajax.org B.V. nor the\n * names of its contributors may be used to endorse or promote products\n * derived from this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\n * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY\n * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\n * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *\n * ***** END LICENSE BLOCK ***** */\n\n/**\n * Define a module along with a payload\n * @param module a name for the payload\n * @param payload a function to call with (require, exports, module) params\n */\n\n(function() {\n\nvar ACE_NAMESPACE = \"ace\";\n\nvar global = (function() { return this; })();\nif (!global && typeof window != \"undefined\") global = window; // strict mode\n\n\nif (!ACE_NAMESPACE && typeof requirejs !== \"undefined\")\n return;\n\n\nvar define = function(module, deps, payload) {\n if (typeof module !== \"string\") {\n if (define.original)\n define.original.apply(this, arguments);\n else {\n console.error(\"dropping module because define wasn\\'t a string.\");\n console.trace();\n }\n return;\n }\n if (arguments.length == 2)\n payload = deps;\n if (!define.modules[module]) {\n define.payloads[module] = payload;\n define.modules[module] = null;\n }\n};\n\ndefine.modules = {};\ndefine.payloads = {};\n\n/**\n * Get at functionality define()ed using the function above\n */\nvar _require = function(parentId, module, callback) {\n if (typeof module === \"string\") {\n var payload = lookup(parentId, module);\n if (payload != undefined) {\n callback && callback();\n return payload;\n }\n } else if (Object.prototype.toString.call(module) === \"[object Array]\") {\n var params = [];\n for (var i = 0, l = module.length; i < l; ++i) {\n var dep = lookup(parentId, module[i]);\n if (dep == undefined && require.original)\n return;\n params.push(dep);\n }\n return callback && callback.apply(null, params) || true;\n }\n};\n\nvar require = function(module, callback) {\n var packagedModule = _require(\"\", module, callback);\n if (packagedModule == undefined && require.original)\n return require.original.apply(this, arguments);\n return packagedModule;\n};\n\nvar normalizeModule = function(parentId, moduleName) {\n // normalize plugin requires\n if (moduleName.indexOf(\"!\") !== -1) {\n var chunks = moduleName.split(\"!\");\n return normalizeModule(parentId, chunks[0]) + \"!\" + normalizeModule(parentId, chunks[1]);\n }\n // normalize relative requires\n if (moduleName.charAt(0) == \".\") {\n var base = parentId.split(\"/\").slice(0, -1).join(\"/\");\n moduleName = base + \"/\" + moduleName;\n\n while(moduleName.indexOf(\".\") !== -1 && previous != moduleName) {\n var previous = moduleName;\n moduleName = moduleName.replace(/\\/\\.\\//, \"/\").replace(/[^\\/]+\\/\\.\\.\\//, \"\");\n }\n }\n return moduleName;\n};\n\n/**\n * Internal function to lookup moduleNames and resolve them by calling the\n * definition function if needed.\n */\nvar lookup = function(parentId, moduleName) {\n moduleName = normalizeModule(parentId, moduleName);\n\n var module = define.modules[moduleName];\n if (!module) {\n module = define.payloads[moduleName];\n if (typeof module === 'function') {\n var exports = {};\n var mod = {\n id: moduleName,\n uri: '',\n exports: exports,\n packaged: true\n };\n\n var req = function(module, callback) {\n return _require(moduleName, module, callback);\n };\n\n var returnValue = module(req, exports, mod);\n exports = returnValue || mod.exports;\n define.modules[moduleName] = exports;\n delete define.payloads[moduleName];\n }\n module = define.modules[moduleName] = exports || module;\n }\n return module;\n};\n\nfunction exportAce(ns) {\n var root = global;\n if (ns) {\n if (!global[ns])\n global[ns] = {};\n root = global[ns];\n }\n\n if (!root.define || !root.define.packaged) {\n define.original = root.define;\n root.define = define;\n root.define.packaged = true;\n }\n\n if (!root.require || !root.require.packaged) {\n require.original = root.require;\n root.require = require;\n root.require.packaged = true;\n }\n}\n\nexportAce(ACE_NAMESPACE);\n\n})();\n\nace.define(\"ace/lib/es6-shim\",[\"require\",\"exports\",\"module\"], function(require, exports, module){function defineProp(obj, name, val) {\n Object.defineProperty(obj, name, {\n value: val,\n enumerable: false,\n writable: true,\n configurable: true\n });\n}\nif (!String.prototype.startsWith) {\n defineProp(String.prototype, \"startsWith\", function (searchString, position) {\n position = position || 0;\n return this.lastIndexOf(searchString, position) === position;\n });\n}\nif (!String.prototype.endsWith) {\n defineProp(String.prototype, \"endsWith\", function (searchString, position) {\n var subjectString = this;\n if (position === undefined || position > subjectString.length) {\n position = subjectString.length;\n }\n position -= searchString.length;\n var lastIndex = subjectString.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n });\n}\nif (!String.prototype.repeat) {\n defineProp(String.prototype, \"repeat\", function (count) {\n var result = \"\";\n var string = this;\n while (count > 0) {\n if (count & 1)\n result += string;\n if ((count >>= 1))\n string += string;\n }\n return result;\n });\n}\nif (!String.prototype.includes) {\n defineProp(String.prototype, \"includes\", function (str, position) {\n return this.indexOf(str, position) != -1;\n });\n}\nif (!Object.assign) {\n Object.assign = function (target) {\n if (target === undefined || target === null) {\n throw new TypeError(\"Cannot convert undefined or null to object\");\n }\n var output = Object(target);\n for (var index = 1; index < arguments.length; index++) {\n var source = arguments[index];\n if (source !== undefined && source !== null) {\n Object.keys(source).forEach(function (key) {\n output[key] = source[key];\n });\n }\n }\n return output;\n };\n}\nif (!Object.values) {\n Object.values = function (o) {\n return Object.keys(o).map(function (k) {\n return o[k];\n });\n };\n}\nif (!Array.prototype.find) {\n defineProp(Array.prototype, \"find\", function (predicate) {\n var len = this.length;\n var thisArg = arguments[1];\n for (var k = 0; k < len; k++) {\n var kValue = this[k];\n if (predicate.call(thisArg, kValue, k, this)) {\n return kValue;\n }\n }\n });\n}\nif (!Array.prototype.findIndex) {\n defineProp(Array.prototype, \"findIndex\", function (predicate) {\n var len = this.length;\n var thisArg = arguments[1];\n for (var k = 0; k < len; k++) {\n var kValue = this[k];\n if (predicate.call(thisArg, kValue, k, this)) {\n return k;\n }\n }\n });\n}\nif (!Array.prototype.includes) {\n defineProp(Array.prototype, \"includes\", function (item, position) {\n return this.indexOf(item, position) != -1;\n });\n}\nif (!Array.prototype.fill) {\n defineProp(Array.prototype, \"fill\", function (value) {\n var O = this;\n var len = O.length >>> 0;\n var start = arguments[1];\n var relativeStart = start >> 0;\n var k = relativeStart < 0\n ? Math.max(len + relativeStart, 0)\n : Math.min(relativeStart, len);\n var end = arguments[2];\n var relativeEnd = end === undefined ? len : end >> 0;\n var final = relativeEnd < 0\n ? Math.max(len + relativeEnd, 0)\n : Math.min(relativeEnd, len);\n while (k < final) {\n O[k] = value;\n k++;\n }\n return O;\n });\n}\nif (!Array.of) {\n defineProp(Array, \"of\", function () {\n return Array.prototype.slice.call(arguments);\n });\n}\n\n});\n\nace.define(\"ace/lib/fixoldbrowsers\",[\"require\",\"exports\",\"module\",\"ace/lib/es6-shim\"], function(require, exports, module){// vim:set ts=4 sts=4 sw=4 st:\n\"use strict\";\nrequire(\"./es6-shim\");\n\n});\n\nace.define(\"ace/lib/deep_copy\",[\"require\",\"exports\",\"module\"], function(require, exports, module){exports.deepCopy = function deepCopy(obj) {\n if (typeof obj !== \"object\" || !obj)\n return obj;\n var copy;\n if (Array.isArray(obj)) {\n copy = [];\n for (var key = 0; key < obj.length; key++) {\n copy[key] = deepCopy(obj[key]);\n }\n return copy;\n }\n if (Object.prototype.toString.call(obj) !== \"[object Object]\")\n return obj;\n copy = {};\n for (var key in obj)\n copy[key] = deepCopy(obj[key]);\n return copy;\n};\n\n});\n\nace.define(\"ace/lib/lang\",[\"require\",\"exports\",\"module\",\"ace/lib/deep_copy\"], function(require, exports, module){\"use strict\";\nexports.last = function (a) {\n return a[a.length - 1];\n};\nexports.stringReverse = function (string) {\n return string.split(\"\").reverse().join(\"\");\n};\nexports.stringRepeat = function (string, count) {\n var result = '';\n while (count > 0) {\n if (count & 1)\n result += string;\n if (count >>= 1)\n string += string;\n }\n return result;\n};\nvar trimBeginRegexp = /^\\s\\s*/;\nvar trimEndRegexp = /\\s\\s*$/;\nexports.stringTrimLeft = function (string) {\n return string.replace(trimBeginRegexp, '');\n};\nexports.stringTrimRight = function (string) {\n return string.replace(trimEndRegexp, '');\n};\nexports.copyObject = function (obj) {\n var copy = {};\n for (var key in obj) {\n copy[key] = obj[key];\n }\n return copy;\n};\nexports.copyArray = function (array) {\n var copy = [];\n for (var i = 0, l = array.length; i < l; i++) {\n if (array[i] && typeof array[i] == \"object\")\n copy[i] = this.copyObject(array[i]);\n else\n copy[i] = array[i];\n }\n return copy;\n};\nexports.deepCopy = require(\"./deep_copy\").deepCopy;\nexports.arrayToMap = function (arr) {\n var map = {};\n for (var i = 0; i < arr.length; i++) {\n map[arr[i]] = 1;\n }\n return map;\n};\nexports.createMap = function (props) {\n var map = Object.create(null);\n for (var i in props) {\n map[i] = props[i];\n }\n return map;\n};\nexports.arrayRemove = function (array, value) {\n for (var i = 0; i <= array.length; i++) {\n if (value === array[i]) {\n array.splice(i, 1);\n }\n }\n};\nexports.escapeRegExp = function (str) {\n return str.replace(/([.*+?^${}()|[\\]\\/\\\\])/g, '\\\\$1');\n};\nexports.escapeHTML = function (str) {\n return (\"\" + str).replace(/&/g, \"&\").replace(/\"/g, \""\").replace(/'/g, \"'\").replace(/ 0xffff ? 2 : 1;\n};\n\n});\n\nace.define(\"ace/lib/useragent\",[\"require\",\"exports\",\"module\"], function(require, exports, module){\"use strict\";\nexports.OS = {\n LINUX: \"LINUX\",\n MAC: \"MAC\",\n WINDOWS: \"WINDOWS\"\n};\nexports.getOS = function () {\n if (exports.isMac) {\n return exports.OS.MAC;\n }\n else if (exports.isLinux) {\n return exports.OS.LINUX;\n }\n else {\n return exports.OS.WINDOWS;\n }\n};\nvar _navigator = typeof navigator == \"object\" ? navigator : {};\nvar os = (/mac|win|linux/i.exec(_navigator.platform) || [\"other\"])[0].toLowerCase();\nvar ua = _navigator.userAgent || \"\";\nvar appName = _navigator.appName || \"\";\nexports.isWin = (os == \"win\");\nexports.isMac = (os == \"mac\");\nexports.isLinux = (os == \"linux\");\nexports.isIE =\n (appName == \"Microsoft Internet Explorer\" || appName.indexOf(\"MSAppHost\") >= 0)\n ? parseFloat((ua.match(/(?:MSIE |Trident\\/[0-9]+[\\.0-9]+;.*rv:)([0-9]+[\\.0-9]+)/) || [])[1])\n : parseFloat((ua.match(/(?:Trident\\/[0-9]+[\\.0-9]+;.*rv:)([0-9]+[\\.0-9]+)/) || [])[1]); // for ie\nexports.isOldIE = exports.isIE && exports.isIE < 9;\nexports.isGecko = exports.isMozilla = ua.match(/ Gecko\\/\\d+/);\nexports.isOpera = typeof opera == \"object\" && Object.prototype.toString.call(window.opera) == \"[object Opera]\";\nexports.isWebKit = parseFloat(ua.split(\"WebKit/\")[1]) || undefined;\nexports.isChrome = parseFloat(ua.split(\" Chrome/\")[1]) || undefined;\nexports.isSafari = parseFloat(ua.split(\" Safari/\")[1]) && !exports.isChrome || undefined;\nexports.isEdge = parseFloat(ua.split(\" Edge/\")[1]) || undefined;\nexports.isAIR = ua.indexOf(\"AdobeAIR\") >= 0;\nexports.isAndroid = ua.indexOf(\"Android\") >= 0;\nexports.isChromeOS = ua.indexOf(\" CrOS \") >= 0;\nexports.isIOS = /iPad|iPhone|iPod/.test(ua) && !window.MSStream;\nif (exports.isIOS)\n exports.isMac = true;\nexports.isMobile = exports.isIOS || exports.isAndroid;\n\n});\n\nace.define(\"ace/lib/dom\",[\"require\",\"exports\",\"module\",\"ace/lib/useragent\"], function(require, exports, module){\"use strict\";\nvar useragent = require(\"./useragent\");\nvar XHTML_NS = \"http://www.w3.org/1999/xhtml\";\nexports.buildDom = function buildDom(arr, parent, refs) {\n if (typeof arr == \"string\" && arr) {\n var txt = document.createTextNode(arr);\n if (parent)\n parent.appendChild(txt);\n return txt;\n }\n if (!Array.isArray(arr)) {\n if (arr && arr.appendChild && parent)\n parent.appendChild(arr);\n return arr;\n }\n if (typeof arr[0] != \"string\" || !arr[0]) {\n var els = [];\n for (var i = 0; i < arr.length; i++) {\n var ch = buildDom(arr[i], parent, refs);\n ch && els.push(ch);\n }\n return els;\n }\n var el = document.createElement(arr[0]);\n var options = arr[1];\n var childIndex = 1;\n if (options && typeof options == \"object\" && !Array.isArray(options))\n childIndex = 2;\n for (var i = childIndex; i < arr.length; i++)\n buildDom(arr[i], el, refs);\n if (childIndex == 2) {\n Object.keys(options).forEach(function (n) {\n var val = options[n];\n if (n === \"class\") {\n el.className = Array.isArray(val) ? val.join(\" \") : val;\n }\n else if (typeof val == \"function\" || n == \"value\" || n[0] == \"$\") {\n el[n] = val;\n }\n else if (n === \"ref\") {\n if (refs)\n refs[val] = el;\n }\n else if (n === \"style\") {\n if (typeof val == \"string\")\n el.style.cssText = val;\n }\n else if (val != null) {\n el.setAttribute(n, val);\n }\n });\n }\n if (parent)\n parent.appendChild(el);\n return el;\n};\nexports.getDocumentHead = function (doc) {\n if (!doc)\n doc = document;\n return doc.head || doc.getElementsByTagName(\"head\")[0] || doc.documentElement;\n};\nexports.createElement = function (tag, ns) {\n return document.createElementNS ?\n document.createElementNS(ns || XHTML_NS, tag) :\n document.createElement(tag);\n};\nexports.removeChildren = function (element) {\n element.innerHTML = \"\";\n};\nexports.createTextNode = function (textContent, element) {\n var doc = element ? element.ownerDocument : document;\n return doc.createTextNode(textContent);\n};\nexports.createFragment = function (element) {\n var doc = element ? element.ownerDocument : document;\n return doc.createDocumentFragment();\n};\nexports.hasCssClass = function (el, name) {\n var classes = (el.className + \"\").split(/\\s+/g);\n return classes.indexOf(name) !== -1;\n};\nexports.addCssClass = function (el, name) {\n if (!exports.hasCssClass(el, name)) {\n el.className += \" \" + name;\n }\n};\nexports.removeCssClass = function (el, name) {\n var classes = el.className.split(/\\s+/g);\n while (true) {\n var index = classes.indexOf(name);\n if (index == -1) {\n break;\n }\n classes.splice(index, 1);\n }\n el.className = classes.join(\" \");\n};\nexports.toggleCssClass = function (el, name) {\n var classes = el.className.split(/\\s+/g), add = true;\n while (true) {\n var index = classes.indexOf(name);\n if (index == -1) {\n break;\n }\n add = false;\n classes.splice(index, 1);\n }\n if (add)\n classes.push(name);\n el.className = classes.join(\" \");\n return add;\n};\nexports.setCssClass = function (node, className, include) {\n if (include) {\n exports.addCssClass(node, className);\n }\n else {\n exports.removeCssClass(node, className);\n }\n};\nexports.hasCssString = function (id, doc) {\n var index = 0, sheets;\n doc = doc || document;\n if ((sheets = doc.querySelectorAll(\"style\"))) {\n while (index < sheets.length) {\n if (sheets[index++].id === id) {\n return true;\n }\n }\n }\n};\nexports.removeElementById = function (id, doc) {\n doc = doc || document;\n if (doc.getElementById(id)) {\n doc.getElementById(id).remove();\n }\n};\nvar strictCSP;\nvar cssCache = [];\nexports.useStrictCSP = function (value) {\n strictCSP = value;\n if (value == false)\n insertPendingStyles();\n else if (!cssCache)\n cssCache = [];\n};\nfunction insertPendingStyles() {\n var cache = cssCache;\n cssCache = null;\n cache && cache.forEach(function (item) {\n importCssString(item[0], item[1]);\n });\n}\nfunction importCssString(cssText, id, target) {\n if (typeof document == \"undefined\")\n return;\n if (cssCache) {\n if (target) {\n insertPendingStyles();\n }\n else if (target === false) {\n return cssCache.push([cssText, id]);\n }\n }\n if (strictCSP)\n return;\n var container = target;\n if (!target || !target.getRootNode) {\n container = document;\n }\n else {\n container = target.getRootNode();\n if (!container || container == target)\n container = document;\n }\n var doc = container.ownerDocument || container;\n if (id && exports.hasCssString(id, container))\n return null;\n if (id)\n cssText += \"\\n/*# sourceURL=ace/css/\" + id + \" */\";\n var style = exports.createElement(\"style\");\n style.appendChild(doc.createTextNode(cssText));\n if (id)\n style.id = id;\n if (container == doc)\n container = exports.getDocumentHead(doc);\n container.insertBefore(style, container.firstChild);\n}\nexports.importCssString = importCssString;\nexports.importCssStylsheet = function (uri, doc) {\n exports.buildDom([\"link\", { rel: \"stylesheet\", href: uri }], exports.getDocumentHead(doc));\n};\nexports.scrollbarWidth = function (doc) {\n var inner = exports.createElement(\"ace_inner\");\n inner.style.width = \"100%\";\n inner.style.minWidth = \"0px\";\n inner.style.height = \"200px\";\n inner.style.display = \"block\";\n var outer = exports.createElement(\"ace_outer\");\n var style = outer.style;\n style.position = \"absolute\";\n style.left = \"-10000px\";\n style.overflow = \"hidden\";\n style.width = \"200px\";\n style.minWidth = \"0px\";\n style.height = \"150px\";\n style.display = \"block\";\n outer.appendChild(inner);\n var body = (doc && doc.documentElement) || (document && document.documentElement);\n if (!body)\n return 0;\n body.appendChild(outer);\n var noScrollbar = inner.offsetWidth;\n style.overflow = \"scroll\";\n var withScrollbar = inner.offsetWidth;\n if (noScrollbar === withScrollbar) {\n withScrollbar = outer.clientWidth;\n }\n body.removeChild(outer);\n return noScrollbar - withScrollbar;\n};\nexports.computedStyle = function (element, style) {\n return window.getComputedStyle(element, \"\") || {};\n};\nexports.setStyle = function (styles, property, value) {\n if (styles[property] !== value) {\n styles[property] = value;\n }\n};\nexports.HAS_CSS_ANIMATION = false;\nexports.HAS_CSS_TRANSFORMS = false;\nexports.HI_DPI = useragent.isWin\n ? typeof window !== \"undefined\" && window.devicePixelRatio >= 1.5\n : true;\nif (useragent.isChromeOS)\n exports.HI_DPI = false;\nif (typeof document !== \"undefined\") {\n var div = document.createElement(\"div\");\n if (exports.HI_DPI && div.style.transform !== undefined)\n exports.HAS_CSS_TRANSFORMS = true;\n if (!useragent.isEdge && typeof div.style.animationName !== \"undefined\")\n exports.HAS_CSS_ANIMATION = true;\n div = null;\n}\nif (exports.HAS_CSS_TRANSFORMS) {\n exports.translate = function (element, tx, ty) {\n element.style.transform = \"translate(\" + Math.round(tx) + \"px, \" + Math.round(ty) + \"px)\";\n };\n}\nelse {\n exports.translate = function (element, tx, ty) {\n element.style.top = Math.round(ty) + \"px\";\n element.style.left = Math.round(tx) + \"px\";\n };\n}\n\n});\n\nace.define(\"ace/lib/net\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"], function(require, exports, module){/*\n * based on code from:\n *\n * @license RequireJS text 0.25.0 Copyright (c) 2010-2011, The Dojo Foundation All Rights Reserved.\n * Available via the MIT or new BSD license.\n * see: http://github.com/jrburke/requirejs for details\n */\n\"use strict\";\nvar dom = require(\"./dom\");\nexports.get = function (url, callback) {\n var xhr = new XMLHttpRequest();\n xhr.open('GET', url, true);\n xhr.onreadystatechange = function () {\n if (xhr.readyState === 4) {\n callback(xhr.responseText);\n }\n };\n xhr.send(null);\n};\nexports.loadScript = function (path, callback) {\n var head = dom.getDocumentHead();\n var s = document.createElement('script');\n s.src = path;\n head.appendChild(s);\n s.onload = s.onreadystatechange = function (_, isAbort) {\n if (isAbort || !s.readyState || s.readyState == \"loaded\" || s.readyState == \"complete\") {\n s = s.onload = s.onreadystatechange = null;\n if (!isAbort)\n callback();\n }\n };\n};\nexports.qualifyURL = function (url) {\n var a = document.createElement('a');\n a.href = url;\n return a.href;\n};\n\n});\n\nace.define(\"ace/lib/oop\",[\"require\",\"exports\",\"module\"], function(require, exports, module){\"use strict\";\nexports.inherits = function (ctor, superCtor) {\n ctor.super_ = superCtor;\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n};\nexports.mixin = function (obj, mixin) {\n for (var key in mixin) {\n obj[key] = mixin[key];\n }\n return obj;\n};\nexports.implement = function (proto, mixin) {\n exports.mixin(proto, mixin);\n};\n\n});\n\nace.define(\"ace/lib/event_emitter\",[\"require\",\"exports\",\"module\"], function(require, exports, module){\"use strict\";\nvar EventEmitter = {};\nvar stopPropagation = function () { this.propagationStopped = true; };\nvar preventDefault = function () { this.defaultPrevented = true; };\nEventEmitter._emit =\n EventEmitter._dispatchEvent = function (eventName, e) {\n this._eventRegistry || (this._eventRegistry = {});\n this._defaultHandlers || (this._defaultHandlers = {});\n var listeners = this._eventRegistry[eventName] || [];\n var defaultHandler = this._defaultHandlers[eventName];\n if (!listeners.length && !defaultHandler)\n return;\n if (typeof e != \"object\" || !e)\n e = {};\n if (!e.type)\n e.type = eventName;\n if (!e.stopPropagation)\n e.stopPropagation = stopPropagation;\n if (!e.preventDefault)\n e.preventDefault = preventDefault;\n listeners = listeners.slice();\n for (var i = 0; i < listeners.length; i++) {\n listeners[i](e, this);\n if (e.propagationStopped)\n break;\n }\n if (defaultHandler && !e.defaultPrevented)\n return defaultHandler(e, this);\n };\nEventEmitter._signal = function (eventName, e) {\n var listeners = (this._eventRegistry || {})[eventName];\n if (!listeners)\n return;\n listeners = listeners.slice();\n for (var i = 0; i < listeners.length; i++)\n listeners[i](e, this);\n};\nEventEmitter.once = function (eventName, callback) {\n var _self = this;\n this.on(eventName, function newCallback() {\n _self.off(eventName, newCallback);\n callback.apply(null, arguments);\n });\n if (!callback) {\n return new Promise(function (resolve) {\n callback = resolve;\n });\n }\n};\nEventEmitter.setDefaultHandler = function (eventName, callback) {\n var handlers = this._defaultHandlers;\n if (!handlers)\n handlers = this._defaultHandlers = { _disabled_: {} };\n if (handlers[eventName]) {\n var old = handlers[eventName];\n var disabled = handlers._disabled_[eventName];\n if (!disabled)\n handlers._disabled_[eventName] = disabled = [];\n disabled.push(old);\n var i = disabled.indexOf(callback);\n if (i != -1)\n disabled.splice(i, 1);\n }\n handlers[eventName] = callback;\n};\nEventEmitter.removeDefaultHandler = function (eventName, callback) {\n var handlers = this._defaultHandlers;\n if (!handlers)\n return;\n var disabled = handlers._disabled_[eventName];\n if (handlers[eventName] == callback) {\n if (disabled)\n this.setDefaultHandler(eventName, disabled.pop());\n }\n else if (disabled) {\n var i = disabled.indexOf(callback);\n if (i != -1)\n disabled.splice(i, 1);\n }\n};\nEventEmitter.on =\n EventEmitter.addEventListener = function (eventName, callback, capturing) {\n this._eventRegistry = this._eventRegistry || {};\n var listeners = this._eventRegistry[eventName];\n if (!listeners)\n listeners = this._eventRegistry[eventName] = [];\n if (listeners.indexOf(callback) == -1)\n listeners[capturing ? \"unshift\" : \"push\"](callback);\n return callback;\n };\nEventEmitter.off =\n EventEmitter.removeListener =\n EventEmitter.removeEventListener = function (eventName, callback) {\n this._eventRegistry = this._eventRegistry || {};\n var listeners = this._eventRegistry[eventName];\n if (!listeners)\n return;\n var index = listeners.indexOf(callback);\n if (index !== -1)\n listeners.splice(index, 1);\n };\nEventEmitter.removeAllListeners = function (eventName) {\n if (!eventName)\n this._eventRegistry = this._defaultHandlers = undefined;\n if (this._eventRegistry)\n this._eventRegistry[eventName] = undefined;\n if (this._defaultHandlers)\n this._defaultHandlers[eventName] = undefined;\n};\nexports.EventEmitter = EventEmitter;\n\n});\n\nace.define(\"ace/lib/report_error\",[\"require\",\"exports\",\"module\"], function(require, exports, module){exports.reportError = function reportError(msg, data) {\n var e = new Error(msg);\n e.data = data;\n if (typeof console == \"object\" && console.error)\n console.error(e);\n setTimeout(function () { throw e; });\n};\n\n});\n\nace.define(\"ace/lib/app_config\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/event_emitter\",\"ace/lib/report_error\"], function(require, exports, module){\"no use strict\";\nvar oop = require(\"./oop\");\nvar EventEmitter = require(\"./event_emitter\").EventEmitter;\nvar reportError = require(\"./report_error\").reportError;\nvar optionsProvider = {\n setOptions: function (optList) {\n Object.keys(optList).forEach(function (key) {\n this.setOption(key, optList[key]);\n }, this);\n },\n getOptions: function (optionNames) {\n var result = {};\n if (!optionNames) {\n var options = this.$options;\n optionNames = Object.keys(options).filter(function (key) {\n return !options[key].hidden;\n });\n }\n else if (!Array.isArray(optionNames)) {\n result = optionNames;\n optionNames = Object.keys(result);\n }\n optionNames.forEach(function (key) {\n result[key] = this.getOption(key);\n }, this);\n return result;\n },\n setOption: function (name, value) {\n if (this[\"$\" + name] === value)\n return;\n var opt = this.$options[name];\n if (!opt) {\n return warn('misspelled option \"' + name + '\"');\n }\n if (opt.forwardTo)\n return this[opt.forwardTo] && this[opt.forwardTo].setOption(name, value);\n if (!opt.handlesSet)\n this[\"$\" + name] = value;\n if (opt && opt.set)\n opt.set.call(this, value);\n },\n getOption: function (name) {\n var opt = this.$options[name];\n if (!opt) {\n return warn('misspelled option \"' + name + '\"');\n }\n if (opt.forwardTo)\n return this[opt.forwardTo] && this[opt.forwardTo].getOption(name);\n return opt && opt.get ? opt.get.call(this) : this[\"$\" + name];\n }\n};\nfunction warn(message) {\n if (typeof console != \"undefined\" && console.warn)\n console.warn.apply(console, arguments);\n}\nvar messages;\nvar AppConfig = /** @class */ (function () {\n function AppConfig() {\n this.$defaultOptions = {};\n }\n AppConfig.prototype.defineOptions = function (obj, path, options) {\n if (!obj.$options)\n this.$defaultOptions[path] = obj.$options = {};\n Object.keys(options).forEach(function (key) {\n var opt = options[key];\n if (typeof opt == \"string\")\n opt = { forwardTo: opt };\n opt.name || (opt.name = key);\n obj.$options[opt.name] = opt;\n if (\"initialValue\" in opt)\n obj[\"$\" + opt.name] = opt.initialValue;\n });\n oop.implement(obj, optionsProvider);\n return this;\n };\n AppConfig.prototype.resetOptions = function (obj) {\n Object.keys(obj.$options).forEach(function (key) {\n var opt = obj.$options[key];\n if (\"value\" in opt)\n obj.setOption(key, opt.value);\n });\n };\n AppConfig.prototype.setDefaultValue = function (path, name, value) {\n if (!path) {\n for (path in this.$defaultOptions)\n if (this.$defaultOptions[path][name])\n break;\n if (!this.$defaultOptions[path][name])\n return false;\n }\n var opts = this.$defaultOptions[path] || (this.$defaultOptions[path] = {});\n if (opts[name]) {\n if (opts.forwardTo)\n this.setDefaultValue(opts.forwardTo, name, value);\n else\n opts[name].value = value;\n }\n };\n AppConfig.prototype.setDefaultValues = function (path, optionHash) {\n Object.keys(optionHash).forEach(function (key) {\n this.setDefaultValue(path, key, optionHash[key]);\n }, this);\n };\n AppConfig.prototype.setMessages = function (value) {\n messages = value;\n };\n AppConfig.prototype.nls = function (string, params) {\n if (messages && !messages[string]) {\n warn(\"No message found for '\" + string + \"' in the provided messages, falling back to default English message.\");\n }\n var translated = messages && messages[string] || string;\n if (params) {\n translated = translated.replace(/\\$(\\$|[\\d]+)/g, function (_, name) {\n if (name == \"$\")\n return \"$\";\n return params[name];\n });\n }\n return translated;\n };\n return AppConfig;\n}());\nAppConfig.prototype.warn = warn;\nAppConfig.prototype.reportError = reportError;\noop.implement(AppConfig.prototype, EventEmitter);\nexports.AppConfig = AppConfig;\n\n});\n\nace.define(\"ace/theme/textmate-css\",[\"require\",\"exports\",\"module\"], function(require, exports, module){module.exports = \".ace-tm .ace_gutter {\\n background: #f0f0f0;\\n color: #333;\\n}\\n\\n.ace-tm .ace_print-margin {\\n width: 1px;\\n background: #e8e8e8;\\n}\\n\\n.ace-tm .ace_fold {\\n background-color: #6B72E6;\\n}\\n\\n.ace-tm {\\n background-color: #FFFFFF;\\n color: black;\\n}\\n\\n.ace-tm .ace_cursor {\\n color: black;\\n}\\n \\n.ace-tm .ace_invisible {\\n color: rgb(191, 191, 191);\\n}\\n\\n.ace-tm .ace_storage,\\n.ace-tm .ace_keyword {\\n color: blue;\\n}\\n\\n.ace-tm .ace_constant {\\n color: rgb(197, 6, 11);\\n}\\n\\n.ace-tm .ace_constant.ace_buildin {\\n color: rgb(88, 72, 246);\\n}\\n\\n.ace-tm .ace_constant.ace_language {\\n color: rgb(88, 92, 246);\\n}\\n\\n.ace-tm .ace_constant.ace_library {\\n color: rgb(6, 150, 14);\\n}\\n\\n.ace-tm .ace_invalid {\\n background-color: rgba(255, 0, 0, 0.1);\\n color: red;\\n}\\n\\n.ace-tm .ace_support.ace_function {\\n color: rgb(60, 76, 114);\\n}\\n\\n.ace-tm .ace_support.ace_constant {\\n color: rgb(6, 150, 14);\\n}\\n\\n.ace-tm .ace_support.ace_type,\\n.ace-tm .ace_support.ace_class {\\n color: rgb(109, 121, 222);\\n}\\n\\n.ace-tm .ace_keyword.ace_operator {\\n color: rgb(104, 118, 135);\\n}\\n\\n.ace-tm .ace_string {\\n color: rgb(3, 106, 7);\\n}\\n\\n.ace-tm .ace_comment {\\n color: rgb(76, 136, 107);\\n}\\n\\n.ace-tm .ace_comment.ace_doc {\\n color: rgb(0, 102, 255);\\n}\\n\\n.ace-tm .ace_comment.ace_doc.ace_tag {\\n color: rgb(128, 159, 191);\\n}\\n\\n.ace-tm .ace_constant.ace_numeric {\\n color: rgb(0, 0, 205);\\n}\\n\\n.ace-tm .ace_variable {\\n color: rgb(49, 132, 149);\\n}\\n\\n.ace-tm .ace_xml-pe {\\n color: rgb(104, 104, 91);\\n}\\n\\n.ace-tm .ace_entity.ace_name.ace_function {\\n color: #0000A2;\\n}\\n\\n\\n.ace-tm .ace_heading {\\n color: rgb(12, 7, 255);\\n}\\n\\n.ace-tm .ace_list {\\n color:rgb(185, 6, 144);\\n}\\n\\n.ace-tm .ace_meta.ace_tag {\\n color:rgb(0, 22, 142);\\n}\\n\\n.ace-tm .ace_string.ace_regex {\\n color: rgb(255, 0, 0)\\n}\\n\\n.ace-tm .ace_marker-layer .ace_selection {\\n background: rgb(181, 213, 255);\\n}\\n.ace-tm.ace_multiselect .ace_selection.ace_start {\\n box-shadow: 0 0 3px 0px white;\\n}\\n.ace-tm .ace_marker-layer .ace_step {\\n background: rgb(252, 255, 0);\\n}\\n\\n.ace-tm .ace_marker-layer .ace_stack {\\n background: rgb(164, 229, 101);\\n}\\n\\n.ace-tm .ace_marker-layer .ace_bracket {\\n margin: -1px 0 0 -1px;\\n border: 1px solid rgb(192, 192, 192);\\n}\\n\\n.ace-tm .ace_marker-layer .ace_active-line {\\n background: rgba(0, 0, 0, 0.07);\\n}\\n\\n.ace-tm .ace_gutter-active-line {\\n background-color : #dcdcdc;\\n}\\n\\n.ace-tm .ace_marker-layer .ace_selected-word {\\n background: rgb(250, 250, 255);\\n border: 1px solid rgb(200, 200, 250);\\n}\\n\\n.ace-tm .ace_indent-guide {\\n background: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==\\\") right repeat-y;\\n}\\n\\n.ace-tm .ace_indent-guide-active {\\n background: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAAZSURBVHjaYvj///9/hivKyv8BAAAA//8DACLqBhbvk+/eAAAAAElFTkSuQmCC\\\") right repeat-y;\\n}\\n\";\n\n});\n\nace.define(\"ace/theme/textmate\",[\"require\",\"exports\",\"module\",\"ace/theme/textmate-css\",\"ace/lib/dom\"], function(require, exports, module){\"use strict\";\nexports.isDark = false;\nexports.cssClass = \"ace-tm\";\nexports.cssText = require(\"./textmate-css\");\nexports.$id = \"ace/theme/textmate\";\nvar dom = require(\"../lib/dom\");\ndom.importCssString(exports.cssText, exports.cssClass, false);\n\n});\n\nace.define(\"ace/config\",[\"require\",\"exports\",\"module\",\"ace/lib/lang\",\"ace/lib/net\",\"ace/lib/dom\",\"ace/lib/app_config\",\"ace/theme/textmate\"], function(require, exports, module){\"no use strict\";\nvar lang = require(\"./lib/lang\");\nvar net = require(\"./lib/net\");\nvar dom = require(\"./lib/dom\");\nvar AppConfig = require(\"./lib/app_config\").AppConfig;\nmodule.exports = exports = new AppConfig();\nvar options = {\n packaged: false,\n workerPath: null,\n modePath: null,\n themePath: null,\n basePath: \"\",\n suffix: \".js\",\n $moduleUrls: {},\n loadWorkerFromBlob: true,\n sharedPopups: false,\n useStrictCSP: null\n};\nexports.get = function (key) {\n if (!options.hasOwnProperty(key))\n throw new Error(\"Unknown config key: \" + key);\n return options[key];\n};\nexports.set = function (key, value) {\n if (options.hasOwnProperty(key))\n options[key] = value;\n else if (this.setDefaultValue(\"\", key, value) == false)\n throw new Error(\"Unknown config key: \" + key);\n if (key == \"useStrictCSP\")\n dom.useStrictCSP(value);\n};\nexports.all = function () {\n return lang.copyObject(options);\n};\nexports.$modes = {};\nexports.moduleUrl = function (name, component) {\n if (options.$moduleUrls[name])\n return options.$moduleUrls[name];\n var parts = name.split(\"/\");\n component = component || parts[parts.length - 2] || \"\";\n var sep = component == \"snippets\" ? \"/\" : \"-\";\n var base = parts[parts.length - 1];\n if (component == \"worker\" && sep == \"-\") {\n var re = new RegExp(\"^\" + component + \"[\\\\-_]|[\\\\-_]\" + component + \"$\", \"g\");\n base = base.replace(re, \"\");\n }\n if ((!base || base == component) && parts.length > 1)\n base = parts[parts.length - 2];\n var path = options[component + \"Path\"];\n if (path == null) {\n path = options.basePath;\n }\n else if (sep == \"/\") {\n component = sep = \"\";\n }\n if (path && path.slice(-1) != \"/\")\n path += \"/\";\n return path + component + sep + base + this.get(\"suffix\");\n};\nexports.setModuleUrl = function (name, subst) {\n return options.$moduleUrls[name] = subst;\n};\nvar loader = function (moduleName, cb) {\n if (moduleName === \"ace/theme/textmate\" || moduleName === \"./theme/textmate\")\n return cb(null, require(\"./theme/textmate\"));\n if (customLoader)\n return customLoader(moduleName, cb);\n console.error(\"loader is not configured\");\n};\nvar customLoader;\nexports.setLoader = function (cb) {\n customLoader = cb;\n};\nexports.dynamicModules = Object.create(null);\nexports.$loading = {};\nexports.$loaded = {};\nexports.loadModule = function (moduleName, onLoad) {\n var loadedModule, moduleType;\n if (Array.isArray(moduleName)) {\n moduleType = moduleName[0];\n moduleName = moduleName[1];\n }\n var load = function (module) {\n if (module && !exports.$loading[moduleName])\n return onLoad && onLoad(module);\n if (!exports.$loading[moduleName])\n exports.$loading[moduleName] = [];\n exports.$loading[moduleName].push(onLoad);\n if (exports.$loading[moduleName].length > 1)\n return;\n var afterLoad = function () {\n loader(moduleName, function (err, module) {\n if (module)\n exports.$loaded[moduleName] = module;\n exports._emit(\"load.module\", { name: moduleName, module: module });\n var listeners = exports.$loading[moduleName];\n exports.$loading[moduleName] = null;\n listeners.forEach(function (onLoad) {\n onLoad && onLoad(module);\n });\n });\n };\n if (!exports.get(\"packaged\"))\n return afterLoad();\n net.loadScript(exports.moduleUrl(moduleName, moduleType), afterLoad);\n reportErrorIfPathIsNotConfigured();\n };\n if (exports.dynamicModules[moduleName]) {\n exports.dynamicModules[moduleName]().then(function (module) {\n if (module.default) {\n load(module.default);\n }\n else {\n load(module);\n }\n });\n }\n else {\n try {\n loadedModule = this.$require(moduleName);\n }\n catch (e) { }\n load(loadedModule || exports.$loaded[moduleName]);\n }\n};\nexports.$require = function (moduleName) {\n if (typeof module.require == \"function\") {\n var req = \"require\";\n return module[req](moduleName);\n }\n};\nexports.setModuleLoader = function (moduleName, onLoad) {\n exports.dynamicModules[moduleName] = onLoad;\n};\nvar reportErrorIfPathIsNotConfigured = function () {\n if (!options.basePath && !options.workerPath\n && !options.modePath && !options.themePath\n && !Object.keys(options.$moduleUrls).length) {\n console.error(\"Unable to infer path to ace from script src,\", \"use ace.config.set('basePath', 'path') to enable dynamic loading of modes and themes\", \"or with webpack use ace/webpack-resolver\");\n reportErrorIfPathIsNotConfigured = function () { };\n }\n};\nexports.version = \"1.32.0\";\n\n});\n\nace.define(\"ace/loader_build\",[\"require\",\"exports\",\"module\",\"ace/lib/fixoldbrowsers\",\"ace/config\"], function(require, exports, module) {\n\"use strict\";\n\nrequire(\"./lib/fixoldbrowsers\");\nvar config = require(\"./config\");\nconfig.setLoader(function(moduleName, cb) {\n require([moduleName], function(module) {\n cb(null, module);\n });\n});\n\nvar global = (function() {\n return this || typeof window != \"undefined\" && window;\n})();\n\nmodule.exports = function(ace) {\n config.init = init;\n config.$require = require;\n ace.require = require;\n\n if (typeof define === \"function\")\n ace.define = define;\n};\ninit(true);function init(packaged) {\n\n if (!global || !global.document)\n return;\n \n config.set(\"packaged\", packaged || require.packaged || module.packaged || (global.define && define.packaged));\n\n var scriptOptions = {};\n var scriptUrl = \"\";\n var currentScript = (document.currentScript || document._currentScript ); // native or polyfill\n var currentDocument = currentScript && currentScript.ownerDocument || document;\n \n if (currentScript && currentScript.src) {\n scriptUrl = currentScript.src.split(/[?#]/)[0].split(\"/\").slice(0, -1).join(\"/\") || \"\";\n }\n \n var scripts = currentDocument.getElementsByTagName(\"script\");\n for (var i=0; i [\" + this.end.row + \"/\" + this.end.column + \"]\");\n };\n Range.prototype.contains = function (row, column) {\n return this.compare(row, column) == 0;\n };\n Range.prototype.compareRange = function (range) {\n var cmp, end = range.end, start = range.start;\n cmp = this.compare(end.row, end.column);\n if (cmp == 1) {\n cmp = this.compare(start.row, start.column);\n if (cmp == 1) {\n return 2;\n }\n else if (cmp == 0) {\n return 1;\n }\n else {\n return 0;\n }\n }\n else if (cmp == -1) {\n return -2;\n }\n else {\n cmp = this.compare(start.row, start.column);\n if (cmp == -1) {\n return -1;\n }\n else if (cmp == 1) {\n return 42;\n }\n else {\n return 0;\n }\n }\n };\n Range.prototype.comparePoint = function (p) {\n return this.compare(p.row, p.column);\n };\n Range.prototype.containsRange = function (range) {\n return this.comparePoint(range.start) == 0 && this.comparePoint(range.end) == 0;\n };\n Range.prototype.intersects = function (range) {\n var cmp = this.compareRange(range);\n return (cmp == -1 || cmp == 0 || cmp == 1);\n };\n Range.prototype.isEnd = function (row, column) {\n return this.end.row == row && this.end.column == column;\n };\n Range.prototype.isStart = function (row, column) {\n return this.start.row == row && this.start.column == column;\n };\n Range.prototype.setStart = function (row, column) {\n if (typeof row == \"object\") {\n this.start.column = row.column;\n this.start.row = row.row;\n }\n else {\n this.start.row = row;\n this.start.column = column;\n }\n };\n Range.prototype.setEnd = function (row, column) {\n if (typeof row == \"object\") {\n this.end.column = row.column;\n this.end.row = row.row;\n }\n else {\n this.end.row = row;\n this.end.column = column;\n }\n };\n Range.prototype.inside = function (row, column) {\n if (this.compare(row, column) == 0) {\n if (this.isEnd(row, column) || this.isStart(row, column)) {\n return false;\n }\n else {\n return true;\n }\n }\n return false;\n };\n Range.prototype.insideStart = function (row, column) {\n if (this.compare(row, column) == 0) {\n if (this.isEnd(row, column)) {\n return false;\n }\n else {\n return true;\n }\n }\n return false;\n };\n Range.prototype.insideEnd = function (row, column) {\n if (this.compare(row, column) == 0) {\n if (this.isStart(row, column)) {\n return false;\n }\n else {\n return true;\n }\n }\n return false;\n };\n Range.prototype.compare = function (row, column) {\n if (!this.isMultiLine()) {\n if (row === this.start.row) {\n return column < this.start.column ? -1 : (column > this.end.column ? 1 : 0);\n }\n }\n if (row < this.start.row)\n return -1;\n if (row > this.end.row)\n return 1;\n if (this.start.row === row)\n return column >= this.start.column ? 0 : -1;\n if (this.end.row === row)\n return column <= this.end.column ? 0 : 1;\n return 0;\n };\n Range.prototype.compareStart = function (row, column) {\n if (this.start.row == row && this.start.column == column) {\n return -1;\n }\n else {\n return this.compare(row, column);\n }\n };\n Range.prototype.compareEnd = function (row, column) {\n if (this.end.row == row && this.end.column == column) {\n return 1;\n }\n else {\n return this.compare(row, column);\n }\n };\n Range.prototype.compareInside = function (row, column) {\n if (this.end.row == row && this.end.column == column) {\n return 1;\n }\n else if (this.start.row == row && this.start.column == column) {\n return -1;\n }\n else {\n return this.compare(row, column);\n }\n };\n Range.prototype.clipRows = function (firstRow, lastRow) {\n if (this.end.row > lastRow)\n var end = { row: lastRow + 1, column: 0 };\n else if (this.end.row < firstRow)\n var end = { row: firstRow, column: 0 };\n if (this.start.row > lastRow)\n var start = { row: lastRow + 1, column: 0 };\n else if (this.start.row < firstRow)\n var start = { row: firstRow, column: 0 };\n return Range.fromPoints(start || this.start, end || this.end);\n };\n Range.prototype.extend = function (row, column) {\n var cmp = this.compare(row, column);\n if (cmp == 0)\n return this;\n else if (cmp == -1)\n var start = { row: row, column: column };\n else\n var end = { row: row, column: column };\n return Range.fromPoints(start || this.start, end || this.end);\n };\n Range.prototype.isEmpty = function () {\n return (this.start.row === this.end.row && this.start.column === this.end.column);\n };\n Range.prototype.isMultiLine = function () {\n return (this.start.row !== this.end.row);\n };\n Range.prototype.clone = function () {\n return Range.fromPoints(this.start, this.end);\n };\n Range.prototype.collapseRows = function () {\n if (this.end.column == 0)\n return new Range(this.start.row, 0, Math.max(this.start.row, this.end.row - 1), 0);\n else\n return new Range(this.start.row, 0, this.end.row, 0);\n };\n Range.prototype.toScreenRange = function (session) {\n var screenPosStart = session.documentToScreenPosition(this.start);\n var screenPosEnd = session.documentToScreenPosition(this.end);\n return new Range(screenPosStart.row, screenPosStart.column, screenPosEnd.row, screenPosEnd.column);\n };\n Range.prototype.moveBy = function (row, column) {\n this.start.row += row;\n this.start.column += column;\n this.end.row += row;\n this.end.column += column;\n };\n return Range;\n}());\nRange.fromPoints = function (start, end) {\n return new Range(start.row, start.column, end.row, end.column);\n};\nRange.comparePoints = comparePoints;\nRange.comparePoints = function (p1, p2) {\n return p1.row - p2.row || p1.column - p2.column;\n};\nexports.Range = Range;\n\n});\n\nace.define(\"ace/lib/keys\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\"], function(require, exports, module){/*! @license\n==========================================================================\nSproutCore -- JavaScript Application Framework\ncopyright 2006-2009, Sprout Systems Inc., Apple Inc. and contributors.\n\nPermission is hereby granted, free of charge, to any person obtaining a\ncopy of this software and associated documentation files (the \"Software\"),\nto deal in the Software without restriction, including without limitation\nthe rights to use, copy, modify, merge, publish, distribute, sublicense,\nand/or sell copies of the Software, and to permit persons to whom the\nSoftware is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\nFROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n\nSproutCore and the SproutCore logo are trademarks of Sprout Systems, Inc.\n\nFor more information about SproutCore, visit http://www.sproutcore.com\n\n\n==========================================================================\n@license */\n\"use strict\";\nvar oop = require(\"./oop\");\nvar Keys = (function () {\n var ret = {\n MODIFIER_KEYS: {\n 16: 'Shift', 17: 'Ctrl', 18: 'Alt', 224: 'Meta',\n 91: 'MetaLeft', 92: 'MetaRight', 93: 'ContextMenu'\n },\n KEY_MODS: {\n \"ctrl\": 1, \"alt\": 2, \"option\": 2, \"shift\": 4,\n \"super\": 8, \"meta\": 8, \"command\": 8, \"cmd\": 8,\n \"control\": 1\n },\n FUNCTION_KEYS: {\n 8: \"Backspace\",\n 9: \"Tab\",\n 13: \"Return\",\n 19: \"Pause\",\n 27: \"Esc\",\n 32: \"Space\",\n 33: \"PageUp\",\n 34: \"PageDown\",\n 35: \"End\",\n 36: \"Home\",\n 37: \"Left\",\n 38: \"Up\",\n 39: \"Right\",\n 40: \"Down\",\n 44: \"Print\",\n 45: \"Insert\",\n 46: \"Delete\",\n 96: \"Numpad0\",\n 97: \"Numpad1\",\n 98: \"Numpad2\",\n 99: \"Numpad3\",\n 100: \"Numpad4\",\n 101: \"Numpad5\",\n 102: \"Numpad6\",\n 103: \"Numpad7\",\n 104: \"Numpad8\",\n 105: \"Numpad9\",\n '-13': \"NumpadEnter\",\n 112: \"F1\",\n 113: \"F2\",\n 114: \"F3\",\n 115: \"F4\",\n 116: \"F5\",\n 117: \"F6\",\n 118: \"F7\",\n 119: \"F8\",\n 120: \"F9\",\n 121: \"F10\",\n 122: \"F11\",\n 123: \"F12\",\n 144: \"Numlock\",\n 145: \"Scrolllock\"\n },\n PRINTABLE_KEYS: {\n 32: ' ', 48: '0', 49: '1', 50: '2', 51: '3', 52: '4', 53: '5',\n 54: '6', 55: '7', 56: '8', 57: '9', 59: ';', 61: '=', 65: 'a',\n 66: 'b', 67: 'c', 68: 'd', 69: 'e', 70: 'f', 71: 'g', 72: 'h',\n 73: 'i', 74: 'j', 75: 'k', 76: 'l', 77: 'm', 78: 'n', 79: 'o',\n 80: 'p', 81: 'q', 82: 'r', 83: 's', 84: 't', 85: 'u', 86: 'v',\n 87: 'w', 88: 'x', 89: 'y', 90: 'z', 107: '+', 109: '-', 110: '.',\n 186: ';', 187: '=', 188: ',', 189: '-', 190: '.', 191: '/', 192: '`',\n 219: '[', 220: '\\\\', 221: ']', 222: \"'\", 111: '/', 106: '*'\n }\n };\n ret.PRINTABLE_KEYS[173] = '-';\n var name, i;\n for (i in ret.FUNCTION_KEYS) {\n name = ret.FUNCTION_KEYS[i].toLowerCase();\n ret[name] = parseInt(i, 10);\n }\n for (i in ret.PRINTABLE_KEYS) {\n name = ret.PRINTABLE_KEYS[i].toLowerCase();\n ret[name] = parseInt(i, 10);\n }\n oop.mixin(ret, ret.MODIFIER_KEYS);\n oop.mixin(ret, ret.PRINTABLE_KEYS);\n oop.mixin(ret, ret.FUNCTION_KEYS);\n ret.enter = ret[\"return\"];\n ret.escape = ret.esc;\n ret.del = ret[\"delete\"];\n (function () {\n var mods = [\"cmd\", \"ctrl\", \"alt\", \"shift\"];\n for (var i = Math.pow(2, mods.length); i--;) {\n ret.KEY_MODS[i] = mods.filter(function (x) {\n return i & ret.KEY_MODS[x];\n }).join(\"-\") + \"-\";\n }\n })();\n ret.KEY_MODS[0] = \"\";\n ret.KEY_MODS[-1] = \"input-\";\n return ret;\n})();\noop.mixin(exports, Keys);\nexports.default = exports;\nexports.keyCodeToString = function (keyCode) {\n var keyString = Keys[keyCode];\n if (typeof keyString != \"string\")\n keyString = String.fromCharCode(keyCode);\n return keyString.toLowerCase();\n};\n\n});\n\nace.define(\"ace/lib/event\",[\"require\",\"exports\",\"module\",\"ace/lib/keys\",\"ace/lib/useragent\"], function(require, exports, module){\"use strict\";\nvar keys = require(\"./keys\");\nvar useragent = require(\"./useragent\");\nvar pressedKeys = null;\nvar ts = 0;\nvar activeListenerOptions;\nfunction detectListenerOptionsSupport() {\n activeListenerOptions = false;\n try {\n document.createComment(\"\").addEventListener(\"test\", function () { }, {\n get passive() {\n activeListenerOptions = { passive: false };\n }\n });\n }\n catch (e) { }\n}\nfunction getListenerOptions() {\n if (activeListenerOptions == undefined)\n detectListenerOptionsSupport();\n return activeListenerOptions;\n}\nfunction EventListener(elem, type, callback) {\n this.elem = elem;\n this.type = type;\n this.callback = callback;\n}\nEventListener.prototype.destroy = function () {\n removeListener(this.elem, this.type, this.callback);\n this.elem = this.type = this.callback = undefined;\n};\nvar addListener = exports.addListener = function (elem, type, callback, destroyer) {\n elem.addEventListener(type, callback, getListenerOptions());\n if (destroyer)\n destroyer.$toDestroy.push(new EventListener(elem, type, callback));\n};\nvar removeListener = exports.removeListener = function (elem, type, callback) {\n elem.removeEventListener(type, callback, getListenerOptions());\n};\nexports.stopEvent = function (e) {\n exports.stopPropagation(e);\n exports.preventDefault(e);\n return false;\n};\nexports.stopPropagation = function (e) {\n if (e.stopPropagation)\n e.stopPropagation();\n};\nexports.preventDefault = function (e) {\n if (e.preventDefault)\n e.preventDefault();\n};\nexports.getButton = function (e) {\n if (e.type == \"dblclick\")\n return 0;\n if (e.type == \"contextmenu\" || (useragent.isMac && (e.ctrlKey && !e.altKey && !e.shiftKey)))\n return 2;\n return e.button;\n};\nexports.capture = function (el, eventHandler, releaseCaptureHandler) {\n var ownerDocument = el && el.ownerDocument || document;\n function onMouseUp(e) {\n eventHandler && eventHandler(e);\n releaseCaptureHandler && releaseCaptureHandler(e);\n removeListener(ownerDocument, \"mousemove\", eventHandler);\n removeListener(ownerDocument, \"mouseup\", onMouseUp);\n removeListener(ownerDocument, \"dragstart\", onMouseUp);\n }\n addListener(ownerDocument, \"mousemove\", eventHandler);\n addListener(ownerDocument, \"mouseup\", onMouseUp);\n addListener(ownerDocument, \"dragstart\", onMouseUp);\n return onMouseUp;\n};\nexports.addMouseWheelListener = function (el, callback, destroyer) {\n addListener(el, \"wheel\", function (e) {\n var factor = 0.15;\n var deltaX = e.deltaX || 0;\n var deltaY = e.deltaY || 0;\n switch (e.deltaMode) {\n case e.DOM_DELTA_PIXEL:\n e.wheelX = deltaX * factor;\n e.wheelY = deltaY * factor;\n break;\n case e.DOM_DELTA_LINE:\n var linePixels = 15;\n e.wheelX = deltaX * linePixels;\n e.wheelY = deltaY * linePixels;\n break;\n case e.DOM_DELTA_PAGE:\n var pagePixels = 150;\n e.wheelX = deltaX * pagePixels;\n e.wheelY = deltaY * pagePixels;\n break;\n }\n callback(e);\n }, destroyer);\n};\nexports.addMultiMouseDownListener = function (elements, timeouts, eventHandler, callbackName, destroyer) {\n var clicks = 0;\n var startX, startY, timer;\n var eventNames = {\n 2: \"dblclick\",\n 3: \"tripleclick\",\n 4: \"quadclick\"\n };\n function onMousedown(e) {\n if (exports.getButton(e) !== 0) {\n clicks = 0;\n }\n else if (e.detail > 1) {\n clicks++;\n if (clicks > 4)\n clicks = 1;\n }\n else {\n clicks = 1;\n }\n if (useragent.isIE) {\n var isNewClick = Math.abs(e.clientX - startX) > 5 || Math.abs(e.clientY - startY) > 5;\n if (!timer || isNewClick)\n clicks = 1;\n if (timer)\n clearTimeout(timer);\n timer = setTimeout(function () { timer = null; }, timeouts[clicks - 1] || 600);\n if (clicks == 1) {\n startX = e.clientX;\n startY = e.clientY;\n }\n }\n e._clicks = clicks;\n eventHandler[callbackName](\"mousedown\", e);\n if (clicks > 4)\n clicks = 0;\n else if (clicks > 1)\n return eventHandler[callbackName](eventNames[clicks], e);\n }\n if (!Array.isArray(elements))\n elements = [elements];\n elements.forEach(function (el) {\n addListener(el, \"mousedown\", onMousedown, destroyer);\n });\n};\nvar getModifierHash = function (e) {\n return 0 | (e.ctrlKey ? 1 : 0) | (e.altKey ? 2 : 0) | (e.shiftKey ? 4 : 0) | (e.metaKey ? 8 : 0);\n};\nexports.getModifierString = function (e) {\n return keys.KEY_MODS[getModifierHash(e)];\n};\nfunction normalizeCommandKeys(callback, e, keyCode) {\n var hashId = getModifierHash(e);\n if (!useragent.isMac && pressedKeys) {\n if (e.getModifierState && (e.getModifierState(\"OS\") || e.getModifierState(\"Win\")))\n hashId |= 8;\n if (pressedKeys.altGr) {\n if ((3 & hashId) != 3)\n pressedKeys.altGr = 0;\n else\n return;\n }\n if (keyCode === 18 || keyCode === 17) {\n var location = \"location\" in e ? e.location : e.keyLocation;\n if (keyCode === 17 && location === 1) {\n if (pressedKeys[keyCode] == 1)\n ts = e.timeStamp;\n }\n else if (keyCode === 18 && hashId === 3 && location === 2) {\n var dt = e.timeStamp - ts;\n if (dt < 50)\n pressedKeys.altGr = true;\n }\n }\n }\n if (keyCode in keys.MODIFIER_KEYS) {\n keyCode = -1;\n }\n if (!hashId && keyCode === 13) {\n var location = \"location\" in e ? e.location : e.keyLocation;\n if (location === 3) {\n callback(e, hashId, -keyCode);\n if (e.defaultPrevented)\n return;\n }\n }\n if (useragent.isChromeOS && hashId & 8) {\n callback(e, hashId, keyCode);\n if (e.defaultPrevented)\n return;\n else\n hashId &= ~8;\n }\n if (!hashId && !(keyCode in keys.FUNCTION_KEYS) && !(keyCode in keys.PRINTABLE_KEYS)) {\n return false;\n }\n return callback(e, hashId, keyCode);\n}\nexports.addCommandKeyListener = function (el, callback, destroyer) {\n if (useragent.isOldGecko || (useragent.isOpera && !(\"KeyboardEvent\" in window))) {\n var lastKeyDownKeyCode = null;\n addListener(el, \"keydown\", function (e) {\n lastKeyDownKeyCode = e.keyCode;\n }, destroyer);\n addListener(el, \"keypress\", function (e) {\n return normalizeCommandKeys(callback, e, lastKeyDownKeyCode);\n }, destroyer);\n }\n else {\n var lastDefaultPrevented = null;\n addListener(el, \"keydown\", function (e) {\n pressedKeys[e.keyCode] = (pressedKeys[e.keyCode] || 0) + 1;\n var result = normalizeCommandKeys(callback, e, e.keyCode);\n lastDefaultPrevented = e.defaultPrevented;\n return result;\n }, destroyer);\n addListener(el, \"keypress\", function (e) {\n if (lastDefaultPrevented && (e.ctrlKey || e.altKey || e.shiftKey || e.metaKey)) {\n exports.stopEvent(e);\n lastDefaultPrevented = null;\n }\n }, destroyer);\n addListener(el, \"keyup\", function (e) {\n pressedKeys[e.keyCode] = null;\n }, destroyer);\n if (!pressedKeys) {\n resetPressedKeys();\n addListener(window, \"focus\", resetPressedKeys);\n }\n }\n};\nfunction resetPressedKeys() {\n pressedKeys = Object.create(null);\n}\nif (typeof window == \"object\" && window.postMessage && !useragent.isOldIE) {\n var postMessageId = 1;\n exports.nextTick = function (callback, win) {\n win = win || window;\n var messageName = \"zero-timeout-message-\" + (postMessageId++);\n var listener = function (e) {\n if (e.data == messageName) {\n exports.stopPropagation(e);\n removeListener(win, \"message\", listener);\n callback();\n }\n };\n addListener(win, \"message\", listener);\n win.postMessage(messageName, \"*\");\n };\n}\nexports.$idleBlocked = false;\nexports.onIdle = function (cb, timeout) {\n return setTimeout(function handler() {\n if (!exports.$idleBlocked) {\n cb();\n }\n else {\n setTimeout(handler, 100);\n }\n }, timeout);\n};\nexports.$idleBlockId = null;\nexports.blockIdle = function (delay) {\n if (exports.$idleBlockId)\n clearTimeout(exports.$idleBlockId);\n exports.$idleBlocked = true;\n exports.$idleBlockId = setTimeout(function () {\n exports.$idleBlocked = false;\n }, delay || 100);\n};\nexports.nextFrame = typeof window == \"object\" && (window.requestAnimationFrame\n || window.mozRequestAnimationFrame\n || window.webkitRequestAnimationFrame\n || window.msRequestAnimationFrame\n || window.oRequestAnimationFrame);\nif (exports.nextFrame)\n exports.nextFrame = exports.nextFrame.bind(window);\nelse\n exports.nextFrame = function (callback) {\n setTimeout(callback, 17);\n };\n\n});\n\nace.define(\"ace/clipboard\",[\"require\",\"exports\",\"module\"], function(require, exports, module){\"use strict\";\nvar $cancelT;\nmodule.exports = {\n lineMode: false,\n pasteCancelled: function () {\n if ($cancelT && $cancelT > Date.now() - 50)\n return true;\n return $cancelT = false;\n },\n cancel: function () {\n $cancelT = Date.now();\n }\n};\n\n});\n\nace.define(\"ace/keyboard/textinput\",[\"require\",\"exports\",\"module\",\"ace/lib/event\",\"ace/config\",\"ace/lib/useragent\",\"ace/lib/dom\",\"ace/lib/lang\",\"ace/clipboard\",\"ace/lib/keys\"], function(require, exports, module){\"use strict\";\nvar event = require(\"../lib/event\");\nvar nls = require(\"../config\").nls;\nvar useragent = require(\"../lib/useragent\");\nvar dom = require(\"../lib/dom\");\nvar lang = require(\"../lib/lang\");\nvar clipboard = require(\"../clipboard\");\nvar BROKEN_SETDATA = useragent.isChrome < 18;\nvar USE_IE_MIME_TYPE = useragent.isIE;\nvar HAS_FOCUS_ARGS = useragent.isChrome > 63;\nvar MAX_LINE_LENGTH = 400;\nvar KEYS = require(\"../lib/keys\");\nvar MODS = KEYS.KEY_MODS;\nvar isIOS = useragent.isIOS;\nvar valueResetRegex = isIOS ? /\\s/ : /\\n/;\nvar isMobile = useragent.isMobile;\nvar TextInput = function (parentNode, host) {\n var text = dom.createElement(\"textarea\");\n text.className = \"ace_text-input\";\n text.setAttribute(\"wrap\", \"off\");\n text.setAttribute(\"autocorrect\", \"off\");\n text.setAttribute(\"autocapitalize\", \"off\");\n text.setAttribute(\"spellcheck\", false);\n text.style.opacity = \"0\";\n parentNode.insertBefore(text, parentNode.firstChild);\n var copied = false;\n var pasted = false;\n var inComposition = false;\n var sendingText = false;\n var tempStyle = '';\n if (!isMobile)\n text.style.fontSize = \"1px\";\n var commandMode = false;\n var ignoreFocusEvents = false;\n var lastValue = \"\";\n var lastSelectionStart = 0;\n var lastSelectionEnd = 0;\n var lastRestoreEnd = 0;\n var rowStart = Number.MAX_SAFE_INTEGER;\n var rowEnd = Number.MIN_SAFE_INTEGER;\n var numberOfExtraLines = 0;\n try {\n var isFocused = document.activeElement === text;\n }\n catch (e) { }\n this.setNumberOfExtraLines = function (number) {\n rowStart = Number.MAX_SAFE_INTEGER;\n rowEnd = Number.MIN_SAFE_INTEGER;\n if (number < 0) {\n numberOfExtraLines = 0;\n return;\n }\n numberOfExtraLines = number;\n };\n this.setAriaOptions = function (options) {\n if (options.activeDescendant) {\n text.setAttribute(\"aria-haspopup\", \"true\");\n text.setAttribute(\"aria-autocomplete\", options.inline ? \"both\" : \"list\");\n text.setAttribute(\"aria-activedescendant\", options.activeDescendant);\n }\n else {\n text.setAttribute(\"aria-haspopup\", \"false\");\n text.setAttribute(\"aria-autocomplete\", \"both\");\n text.removeAttribute(\"aria-activedescendant\");\n }\n if (options.role) {\n text.setAttribute(\"role\", options.role);\n }\n if (options.setLabel) {\n text.setAttribute(\"aria-roledescription\", nls(\"editor\"));\n if (host.session) {\n var row = host.session.selection.cursor.row;\n text.setAttribute(\"aria-label\", nls(\"Cursor at row $0\", [row + 1]));\n }\n }\n };\n this.setAriaOptions({ role: \"textbox\" });\n event.addListener(text, \"blur\", function (e) {\n if (ignoreFocusEvents)\n return;\n host.onBlur(e);\n isFocused = false;\n }, host);\n event.addListener(text, \"focus\", function (e) {\n if (ignoreFocusEvents)\n return;\n isFocused = true;\n if (useragent.isEdge) {\n try {\n if (!document.hasFocus())\n return;\n }\n catch (e) { }\n }\n host.onFocus(e);\n if (useragent.isEdge)\n setTimeout(resetSelection);\n else\n resetSelection();\n }, host);\n this.$focusScroll = false;\n this.focus = function () {\n this.setAriaOptions({\n setLabel: host.renderer.enableKeyboardAccessibility\n });\n if (tempStyle || HAS_FOCUS_ARGS || this.$focusScroll == \"browser\")\n return text.focus({ preventScroll: true });\n var top = text.style.top;\n text.style.position = \"fixed\";\n text.style.top = \"0px\";\n try {\n var isTransformed = text.getBoundingClientRect().top != 0;\n }\n catch (e) {\n return;\n }\n var ancestors = [];\n if (isTransformed) {\n var t = text.parentElement;\n while (t && t.nodeType == 1) {\n ancestors.push(t);\n t.setAttribute(\"ace_nocontext\", true);\n if (!t.parentElement && t.getRootNode)\n t = t.getRootNode().host;\n else\n t = t.parentElement;\n }\n }\n text.focus({ preventScroll: true });\n if (isTransformed) {\n ancestors.forEach(function (p) {\n p.removeAttribute(\"ace_nocontext\");\n });\n }\n setTimeout(function () {\n text.style.position = \"\";\n if (text.style.top == \"0px\")\n text.style.top = top;\n }, 0);\n };\n this.blur = function () {\n text.blur();\n };\n this.isFocused = function () {\n return isFocused;\n };\n host.on(\"beforeEndOperation\", function () {\n var curOp = host.curOp;\n var commandName = curOp && curOp.command && curOp.command.name;\n if (commandName == \"insertstring\")\n return;\n var isUserAction = commandName && (curOp.docChanged || curOp.selectionChanged);\n if (inComposition && isUserAction) {\n lastValue = text.value = \"\";\n onCompositionEnd();\n }\n resetSelection();\n });\n var positionToSelection = function (row, column) {\n var selection = column;\n for (var i = 1; i <= row - rowStart && i < 2 * numberOfExtraLines + 1; i++) {\n selection += host.session.getLine(row - i).length + 1;\n }\n return selection;\n };\n var resetSelection = isIOS\n ? function (value) {\n if (!isFocused || (copied && !value) || sendingText)\n return;\n if (!value)\n value = \"\";\n var newValue = \"\\n ab\" + value + \"cde fg\\n\";\n if (newValue != text.value)\n text.value = lastValue = newValue;\n var selectionStart = 4;\n var selectionEnd = 4 + (value.length || (host.selection.isEmpty() ? 0 : 1));\n if (lastSelectionStart != selectionStart || lastSelectionEnd != selectionEnd) {\n text.setSelectionRange(selectionStart, selectionEnd);\n }\n lastSelectionStart = selectionStart;\n lastSelectionEnd = selectionEnd;\n }\n : function () {\n if (inComposition || sendingText)\n return;\n if (!isFocused && !afterContextMenu)\n return;\n inComposition = true;\n var selectionStart = 0;\n var selectionEnd = 0;\n var line = \"\";\n if (host.session) {\n var selection = host.selection;\n var range = selection.getRange();\n var row = selection.cursor.row;\n if (row === rowEnd + 1) {\n rowStart = rowEnd + 1;\n rowEnd = rowStart + 2 * numberOfExtraLines;\n }\n else if (row === rowStart - 1) {\n rowEnd = rowStart - 1;\n rowStart = rowEnd - 2 * numberOfExtraLines;\n }\n else if (row < rowStart - 1 || row > rowEnd + 1) {\n rowStart = row > numberOfExtraLines ? row - numberOfExtraLines : 0;\n rowEnd = row > numberOfExtraLines ? row + numberOfExtraLines : 2 * numberOfExtraLines;\n }\n var lines = [];\n for (var i = rowStart; i <= rowEnd; i++) {\n lines.push(host.session.getLine(i));\n }\n line = lines.join('\\n');\n selectionStart = positionToSelection(range.start.row, range.start.column);\n selectionEnd = positionToSelection(range.end.row, range.end.column);\n if (range.start.row < rowStart) {\n var prevLine = host.session.getLine(rowStart - 1);\n selectionStart = range.start.row < rowStart - 1 ? 0 : selectionStart;\n selectionEnd += prevLine.length + 1;\n line = prevLine + \"\\n\" + line;\n }\n else if (range.end.row > rowEnd) {\n var nextLine = host.session.getLine(rowEnd + 1);\n selectionEnd = range.end.row > rowEnd + 1 ? nextLine.length : range.end.column;\n selectionEnd += line.length + 1;\n line = line + \"\\n\" + nextLine;\n }\n else if (isMobile && row > 0) {\n line = \"\\n\" + line;\n selectionEnd += 1;\n selectionStart += 1;\n }\n if (line.length > MAX_LINE_LENGTH) {\n if (selectionStart < MAX_LINE_LENGTH && selectionEnd < MAX_LINE_LENGTH) {\n line = line.slice(0, MAX_LINE_LENGTH);\n }\n else {\n line = \"\\n\";\n if (selectionStart == selectionEnd) {\n selectionStart = selectionEnd = 0;\n }\n else {\n selectionStart = 0;\n selectionEnd = 1;\n }\n }\n }\n var newValue = line + \"\\n\\n\";\n if (newValue != lastValue) {\n text.value = lastValue = newValue;\n lastSelectionStart = lastSelectionEnd = newValue.length;\n }\n }\n if (afterContextMenu) {\n lastSelectionStart = text.selectionStart;\n lastSelectionEnd = text.selectionEnd;\n }\n if (lastSelectionEnd != selectionEnd\n || lastSelectionStart != selectionStart\n || text.selectionEnd != lastSelectionEnd // on ie edge selectionEnd changes silently after the initialization\n ) {\n try {\n text.setSelectionRange(selectionStart, selectionEnd);\n lastSelectionStart = selectionStart;\n lastSelectionEnd = selectionEnd;\n }\n catch (e) { }\n }\n inComposition = false;\n };\n this.resetSelection = resetSelection;\n if (isFocused)\n host.onFocus();\n var isAllSelected = function (text) {\n return text.selectionStart === 0 && text.selectionEnd >= lastValue.length\n && text.value === lastValue && lastValue\n && text.selectionEnd !== lastSelectionEnd;\n };\n var onSelect = function (e) {\n if (inComposition)\n return;\n if (copied) {\n copied = false;\n }\n else if (isAllSelected(text)) {\n host.selectAll();\n resetSelection();\n }\n else if (isMobile && text.selectionStart != lastSelectionStart) {\n resetSelection();\n }\n };\n var inputHandler = null;\n this.setInputHandler = function (cb) { inputHandler = cb; };\n this.getInputHandler = function () { return inputHandler; };\n var afterContextMenu = false;\n var sendText = function (value, fromInput) {\n if (afterContextMenu)\n afterContextMenu = false;\n if (pasted) {\n resetSelection();\n if (value)\n host.onPaste(value);\n pasted = false;\n return \"\";\n }\n else {\n var selectionStart = text.selectionStart;\n var selectionEnd = text.selectionEnd;\n var extendLeft = lastSelectionStart;\n var extendRight = lastValue.length - lastSelectionEnd;\n var inserted = value;\n var restoreStart = value.length - selectionStart;\n var restoreEnd = value.length - selectionEnd;\n var i = 0;\n while (extendLeft > 0 && lastValue[i] == value[i]) {\n i++;\n extendLeft--;\n }\n inserted = inserted.slice(i);\n i = 1;\n while (extendRight > 0 && lastValue.length - i > lastSelectionStart - 1 && lastValue[lastValue.length - i] == value[value.length - i]) {\n i++;\n extendRight--;\n }\n restoreStart -= i - 1;\n restoreEnd -= i - 1;\n var endIndex = inserted.length - i + 1;\n if (endIndex < 0) {\n extendLeft = -endIndex;\n endIndex = 0;\n }\n inserted = inserted.slice(0, endIndex);\n if (!fromInput && !inserted && !restoreStart && !extendLeft && !extendRight && !restoreEnd)\n return \"\";\n sendingText = true;\n var shouldReset = false;\n if (useragent.isAndroid && inserted == \". \") {\n inserted = \" \";\n shouldReset = true;\n }\n if (inserted && !extendLeft && !extendRight && !restoreStart && !restoreEnd || commandMode) {\n host.onTextInput(inserted);\n }\n else {\n host.onTextInput(inserted, {\n extendLeft: extendLeft,\n extendRight: extendRight,\n restoreStart: restoreStart,\n restoreEnd: restoreEnd\n });\n }\n sendingText = false;\n lastValue = value;\n lastSelectionStart = selectionStart;\n lastSelectionEnd = selectionEnd;\n lastRestoreEnd = restoreEnd;\n return shouldReset ? \"\\n\" : inserted;\n }\n };\n var onInput = function (e) {\n if (inComposition)\n return onCompositionUpdate();\n if (e && e.inputType) {\n if (e.inputType == \"historyUndo\")\n return host.execCommand(\"undo\");\n if (e.inputType == \"historyRedo\")\n return host.execCommand(\"redo\");\n }\n var data = text.value;\n var inserted = sendText(data, true);\n if (data.length > MAX_LINE_LENGTH + 100\n || valueResetRegex.test(inserted)\n || isMobile && lastSelectionStart < 1 && lastSelectionStart == lastSelectionEnd) {\n resetSelection();\n }\n };\n var handleClipboardData = function (e, data, forceIEMime) {\n var clipboardData = e.clipboardData || window.clipboardData;\n if (!clipboardData || BROKEN_SETDATA)\n return;\n var mime = USE_IE_MIME_TYPE || forceIEMime ? \"Text\" : \"text/plain\";\n try {\n if (data) {\n return clipboardData.setData(mime, data) !== false;\n }\n else {\n return clipboardData.getData(mime);\n }\n }\n catch (e) {\n if (!forceIEMime)\n return handleClipboardData(e, data, true);\n }\n };\n var doCopy = function (e, isCut) {\n var data = host.getCopyText();\n if (!data)\n return event.preventDefault(e);\n if (handleClipboardData(e, data)) {\n if (isIOS) {\n resetSelection(data);\n copied = data;\n setTimeout(function () {\n copied = false;\n }, 10);\n }\n isCut ? host.onCut() : host.onCopy();\n event.preventDefault(e);\n }\n else {\n copied = true;\n text.value = data;\n text.select();\n setTimeout(function () {\n copied = false;\n resetSelection();\n isCut ? host.onCut() : host.onCopy();\n });\n }\n };\n var onCut = function (e) {\n doCopy(e, true);\n };\n var onCopy = function (e) {\n doCopy(e, false);\n };\n var onPaste = function (e) {\n var data = handleClipboardData(e);\n if (clipboard.pasteCancelled())\n return;\n if (typeof data == \"string\") {\n if (data)\n host.onPaste(data, e);\n if (useragent.isIE)\n setTimeout(resetSelection);\n event.preventDefault(e);\n }\n else {\n text.value = \"\";\n pasted = true;\n }\n };\n event.addCommandKeyListener(text, host.onCommandKey.bind(host), host);\n event.addListener(text, \"select\", onSelect, host);\n event.addListener(text, \"input\", onInput, host);\n event.addListener(text, \"cut\", onCut, host);\n event.addListener(text, \"copy\", onCopy, host);\n event.addListener(text, \"paste\", onPaste, host);\n if (!('oncut' in text) || !('oncopy' in text) || !('onpaste' in text)) {\n event.addListener(parentNode, \"keydown\", function (e) {\n if ((useragent.isMac && !e.metaKey) || !e.ctrlKey)\n return;\n switch (e.keyCode) {\n case 67:\n onCopy(e);\n break;\n case 86:\n onPaste(e);\n break;\n case 88:\n onCut(e);\n break;\n }\n }, host);\n }\n var onCompositionStart = function (e) {\n if (inComposition || !host.onCompositionStart || host.$readOnly)\n return;\n inComposition = {};\n if (commandMode)\n return;\n if (e.data)\n inComposition.useTextareaForIME = false;\n setTimeout(onCompositionUpdate, 0);\n host._signal(\"compositionStart\");\n host.on(\"mousedown\", cancelComposition);\n var range = host.getSelectionRange();\n range.end.row = range.start.row;\n range.end.column = range.start.column;\n inComposition.markerRange = range;\n inComposition.selectionStart = lastSelectionStart;\n host.onCompositionStart(inComposition);\n if (inComposition.useTextareaForIME) {\n lastValue = text.value = \"\";\n lastSelectionStart = 0;\n lastSelectionEnd = 0;\n }\n else {\n if (text.msGetInputContext)\n inComposition.context = text.msGetInputContext();\n if (text.getInputContext)\n inComposition.context = text.getInputContext();\n }\n };\n var onCompositionUpdate = function () {\n if (!inComposition || !host.onCompositionUpdate || host.$readOnly)\n return;\n if (commandMode)\n return cancelComposition();\n if (inComposition.useTextareaForIME) {\n host.onCompositionUpdate(text.value);\n }\n else {\n var data = text.value;\n sendText(data);\n if (inComposition.markerRange) {\n if (inComposition.context) {\n inComposition.markerRange.start.column = inComposition.selectionStart\n = inComposition.context.compositionStartOffset;\n }\n inComposition.markerRange.end.column = inComposition.markerRange.start.column\n + lastSelectionEnd - inComposition.selectionStart + lastRestoreEnd;\n }\n }\n };\n var onCompositionEnd = function (e) {\n if (!host.onCompositionEnd || host.$readOnly)\n return;\n inComposition = false;\n host.onCompositionEnd();\n host.off(\"mousedown\", cancelComposition);\n if (e)\n onInput();\n };\n function cancelComposition() {\n ignoreFocusEvents = true;\n text.blur();\n text.focus();\n ignoreFocusEvents = false;\n }\n var syncComposition = lang.delayedCall(onCompositionUpdate, 50).schedule.bind(null, null);\n function onKeyup(e) {\n if (e.keyCode == 27 && text.value.length < text.selectionStart) {\n if (!inComposition)\n lastValue = text.value;\n lastSelectionStart = lastSelectionEnd = -1;\n resetSelection();\n }\n syncComposition();\n }\n event.addListener(text, \"compositionstart\", onCompositionStart, host);\n event.addListener(text, \"compositionupdate\", onCompositionUpdate, host);\n event.addListener(text, \"keyup\", onKeyup, host);\n event.addListener(text, \"keydown\", syncComposition, host);\n event.addListener(text, \"compositionend\", onCompositionEnd, host);\n this.getElement = function () {\n return text;\n };\n this.setCommandMode = function (value) {\n commandMode = value;\n text.readOnly = false;\n };\n this.setReadOnly = function (readOnly) {\n if (!commandMode)\n text.readOnly = readOnly;\n };\n this.setCopyWithEmptySelection = function (value) {\n };\n this.onContextMenu = function (e) {\n afterContextMenu = true;\n resetSelection();\n host._emit(\"nativecontextmenu\", { target: host, domEvent: e });\n this.moveToMouse(e, true);\n };\n this.moveToMouse = function (e, bringToFront) {\n if (!tempStyle)\n tempStyle = text.style.cssText;\n text.style.cssText = (bringToFront ? \"z-index:100000;\" : \"\")\n + (useragent.isIE ? \"opacity:0.1;\" : \"\")\n + \"text-indent: -\" + (lastSelectionStart + lastSelectionEnd) * host.renderer.characterWidth * 0.5 + \"px;\";\n var rect = host.container.getBoundingClientRect();\n var style = dom.computedStyle(host.container);\n var top = rect.top + (parseInt(style.borderTopWidth) || 0);\n var left = rect.left + (parseInt(rect.borderLeftWidth) || 0);\n var maxTop = rect.bottom - top - text.clientHeight - 2;\n var move = function (e) {\n dom.translate(text, e.clientX - left - 2, Math.min(e.clientY - top - 2, maxTop));\n };\n move(e);\n if (e.type != \"mousedown\")\n return;\n host.renderer.$isMousePressed = true;\n clearTimeout(closeTimeout);\n if (useragent.isWin)\n event.capture(host.container, move, onContextMenuClose);\n };\n this.onContextMenuClose = onContextMenuClose;\n var closeTimeout;\n function onContextMenuClose() {\n clearTimeout(closeTimeout);\n closeTimeout = setTimeout(function () {\n if (tempStyle) {\n text.style.cssText = tempStyle;\n tempStyle = '';\n }\n host.renderer.$isMousePressed = false;\n if (host.renderer.$keepTextAreaAtCursor)\n host.renderer.$moveTextAreaToCursor();\n }, 0);\n }\n var onContextMenu = function (e) {\n host.textInput.onContextMenu(e);\n onContextMenuClose();\n };\n event.addListener(text, \"mouseup\", onContextMenu, host);\n event.addListener(text, \"mousedown\", function (e) {\n e.preventDefault();\n onContextMenuClose();\n }, host);\n event.addListener(host.renderer.scroller, \"contextmenu\", onContextMenu, host);\n event.addListener(text, \"contextmenu\", onContextMenu, host);\n if (isIOS)\n addIosSelectionHandler(parentNode, host, text);\n function addIosSelectionHandler(parentNode, host, text) {\n var typingResetTimeout = null;\n var typing = false;\n text.addEventListener(\"keydown\", function (e) {\n if (typingResetTimeout)\n clearTimeout(typingResetTimeout);\n typing = true;\n }, true);\n text.addEventListener(\"keyup\", function (e) {\n typingResetTimeout = setTimeout(function () {\n typing = false;\n }, 100);\n }, true);\n var detectArrowKeys = function (e) {\n if (document.activeElement !== text)\n return;\n if (typing || inComposition || host.$mouseHandler.isMousePressed)\n return;\n if (copied) {\n return;\n }\n var selectionStart = text.selectionStart;\n var selectionEnd = text.selectionEnd;\n var key = null;\n var modifier = 0;\n if (selectionStart == 0) {\n key = KEYS.up;\n }\n else if (selectionStart == 1) {\n key = KEYS.home;\n }\n else if (selectionEnd > lastSelectionEnd && lastValue[selectionEnd] == \"\\n\") {\n key = KEYS.end;\n }\n else if (selectionStart < lastSelectionStart && lastValue[selectionStart - 1] == \" \") {\n key = KEYS.left;\n modifier = MODS.option;\n }\n else if (selectionStart < lastSelectionStart\n || (selectionStart == lastSelectionStart\n && lastSelectionEnd != lastSelectionStart\n && selectionStart == selectionEnd)) {\n key = KEYS.left;\n }\n else if (selectionEnd > lastSelectionEnd && lastValue.slice(0, selectionEnd).split(\"\\n\").length > 2) {\n key = KEYS.down;\n }\n else if (selectionEnd > lastSelectionEnd && lastValue[selectionEnd - 1] == \" \") {\n key = KEYS.right;\n modifier = MODS.option;\n }\n else if (selectionEnd > lastSelectionEnd\n || (selectionEnd == lastSelectionEnd\n && lastSelectionEnd != lastSelectionStart\n && selectionStart == selectionEnd)) {\n key = KEYS.right;\n }\n if (selectionStart !== selectionEnd)\n modifier |= MODS.shift;\n if (key) {\n var result = host.onCommandKey({}, modifier, key);\n if (!result && host.commands) {\n key = KEYS.keyCodeToString(key);\n var command = host.commands.findKeyCommand(modifier, key);\n if (command)\n host.execCommand(command);\n }\n lastSelectionStart = selectionStart;\n lastSelectionEnd = selectionEnd;\n resetSelection(\"\");\n }\n };\n document.addEventListener(\"selectionchange\", detectArrowKeys);\n host.on(\"destroy\", function () {\n document.removeEventListener(\"selectionchange\", detectArrowKeys);\n });\n }\n this.destroy = function () {\n if (text.parentElement)\n text.parentElement.removeChild(text);\n };\n};\nexports.TextInput = TextInput;\nexports.$setUserAgentForTests = function (_isMobile, _isIOS) {\n isMobile = _isMobile;\n isIOS = _isIOS;\n};\n\n});\n\nace.define(\"ace/mouse/default_handlers\",[\"require\",\"exports\",\"module\",\"ace/lib/useragent\"], function(require, exports, module){\"use strict\";\nvar useragent = require(\"../lib/useragent\");\nvar DRAG_OFFSET = 0; // pixels\nvar SCROLL_COOLDOWN_T = 550; // milliseconds\nvar DefaultHandlers = /** @class */ (function () {\n function DefaultHandlers(mouseHandler) {\n mouseHandler.$clickSelection = null;\n var editor = mouseHandler.editor;\n editor.setDefaultHandler(\"mousedown\", this.onMouseDown.bind(mouseHandler));\n editor.setDefaultHandler(\"dblclick\", this.onDoubleClick.bind(mouseHandler));\n editor.setDefaultHandler(\"tripleclick\", this.onTripleClick.bind(mouseHandler));\n editor.setDefaultHandler(\"quadclick\", this.onQuadClick.bind(mouseHandler));\n editor.setDefaultHandler(\"mousewheel\", this.onMouseWheel.bind(mouseHandler));\n var exports = [\"select\", \"startSelect\", \"selectEnd\", \"selectAllEnd\", \"selectByWordsEnd\",\n \"selectByLinesEnd\", \"dragWait\", \"dragWaitEnd\", \"focusWait\"];\n exports.forEach(function (x) {\n mouseHandler[x] = this[x];\n }, this);\n mouseHandler.selectByLines = this.extendSelectionBy.bind(mouseHandler, \"getLineRange\");\n mouseHandler.selectByWords = this.extendSelectionBy.bind(mouseHandler, \"getWordRange\");\n }\n DefaultHandlers.prototype.onMouseDown = function (ev) {\n var inSelection = ev.inSelection();\n var pos = ev.getDocumentPosition();\n this.mousedownEvent = ev;\n var editor = this.editor;\n var button = ev.getButton();\n if (button !== 0) {\n var selectionRange = editor.getSelectionRange();\n var selectionEmpty = selectionRange.isEmpty();\n if (selectionEmpty || button == 1)\n editor.selection.moveToPosition(pos);\n if (button == 2) {\n editor.textInput.onContextMenu(ev.domEvent);\n if (!useragent.isMozilla)\n ev.preventDefault();\n }\n return;\n }\n this.mousedownEvent.time = Date.now();\n if (inSelection && !editor.isFocused()) {\n editor.focus();\n if (this.$focusTimeout && !this.$clickSelection && !editor.inMultiSelectMode) {\n this.setState(\"focusWait\");\n this.captureMouse(ev);\n return;\n }\n }\n this.captureMouse(ev);\n this.startSelect(pos, ev.domEvent._clicks > 1);\n return ev.preventDefault();\n };\n DefaultHandlers.prototype.startSelect = function (pos, waitForClickSelection) {\n pos = pos || this.editor.renderer.screenToTextCoordinates(this.x, this.y);\n var editor = this.editor;\n if (!this.mousedownEvent)\n return;\n if (this.mousedownEvent.getShiftKey())\n editor.selection.selectToPosition(pos);\n else if (!waitForClickSelection)\n editor.selection.moveToPosition(pos);\n if (!waitForClickSelection)\n this.select();\n editor.setStyle(\"ace_selecting\");\n this.setState(\"select\");\n };\n DefaultHandlers.prototype.select = function () {\n var anchor, editor = this.editor;\n var cursor = editor.renderer.screenToTextCoordinates(this.x, this.y);\n if (this.$clickSelection) {\n var cmp = this.$clickSelection.comparePoint(cursor);\n if (cmp == -1) {\n anchor = this.$clickSelection.end;\n }\n else if (cmp == 1) {\n anchor = this.$clickSelection.start;\n }\n else {\n var orientedRange = calcRangeOrientation(this.$clickSelection, cursor);\n cursor = orientedRange.cursor;\n anchor = orientedRange.anchor;\n }\n editor.selection.setSelectionAnchor(anchor.row, anchor.column);\n }\n editor.selection.selectToPosition(cursor);\n editor.renderer.scrollCursorIntoView();\n };\n DefaultHandlers.prototype.extendSelectionBy = function (unitName) {\n var anchor, editor = this.editor;\n var cursor = editor.renderer.screenToTextCoordinates(this.x, this.y);\n var range = editor.selection[unitName](cursor.row, cursor.column);\n if (this.$clickSelection) {\n var cmpStart = this.$clickSelection.comparePoint(range.start);\n var cmpEnd = this.$clickSelection.comparePoint(range.end);\n if (cmpStart == -1 && cmpEnd <= 0) {\n anchor = this.$clickSelection.end;\n if (range.end.row != cursor.row || range.end.column != cursor.column)\n cursor = range.start;\n }\n else if (cmpEnd == 1 && cmpStart >= 0) {\n anchor = this.$clickSelection.start;\n if (range.start.row != cursor.row || range.start.column != cursor.column)\n cursor = range.end;\n }\n else if (cmpStart == -1 && cmpEnd == 1) {\n cursor = range.end;\n anchor = range.start;\n }\n else {\n var orientedRange = calcRangeOrientation(this.$clickSelection, cursor);\n cursor = orientedRange.cursor;\n anchor = orientedRange.anchor;\n }\n editor.selection.setSelectionAnchor(anchor.row, anchor.column);\n }\n editor.selection.selectToPosition(cursor);\n editor.renderer.scrollCursorIntoView();\n };\n DefaultHandlers.prototype.selectByLinesEnd = function () {\n this.$clickSelection = null;\n this.editor.unsetStyle(\"ace_selecting\");\n };\n DefaultHandlers.prototype.focusWait = function () {\n var distance = calcDistance(this.mousedownEvent.x, this.mousedownEvent.y, this.x, this.y);\n var time = Date.now();\n if (distance > DRAG_OFFSET || time - this.mousedownEvent.time > this.$focusTimeout)\n this.startSelect(this.mousedownEvent.getDocumentPosition());\n };\n DefaultHandlers.prototype.onDoubleClick = function (ev) {\n var pos = ev.getDocumentPosition();\n var editor = this.editor;\n var session = editor.session;\n var range = session.getBracketRange(pos);\n if (range) {\n if (range.isEmpty()) {\n range.start.column--;\n range.end.column++;\n }\n this.setState(\"select\");\n }\n else {\n range = editor.selection.getWordRange(pos.row, pos.column);\n this.setState(\"selectByWords\");\n }\n this.$clickSelection = range;\n this.select();\n };\n DefaultHandlers.prototype.onTripleClick = function (ev) {\n var pos = ev.getDocumentPosition();\n var editor = this.editor;\n this.setState(\"selectByLines\");\n var range = editor.getSelectionRange();\n if (range.isMultiLine() && range.contains(pos.row, pos.column)) {\n this.$clickSelection = editor.selection.getLineRange(range.start.row);\n this.$clickSelection.end = editor.selection.getLineRange(range.end.row).end;\n }\n else {\n this.$clickSelection = editor.selection.getLineRange(pos.row);\n }\n this.select();\n };\n DefaultHandlers.prototype.onQuadClick = function (ev) {\n var editor = this.editor;\n editor.selectAll();\n this.$clickSelection = editor.getSelectionRange();\n this.setState(\"selectAll\");\n };\n DefaultHandlers.prototype.onMouseWheel = function (ev) {\n if (ev.getAccelKey())\n return;\n if (ev.getShiftKey() && ev.wheelY && !ev.wheelX) {\n ev.wheelX = ev.wheelY;\n ev.wheelY = 0;\n }\n var editor = this.editor;\n if (!this.$lastScroll)\n this.$lastScroll = { t: 0, vx: 0, vy: 0, allowed: 0 };\n var prevScroll = this.$lastScroll;\n var t = ev.domEvent.timeStamp;\n var dt = t - prevScroll.t;\n var vx = dt ? ev.wheelX / dt : prevScroll.vx;\n var vy = dt ? ev.wheelY / dt : prevScroll.vy;\n if (dt < SCROLL_COOLDOWN_T) {\n vx = (vx + prevScroll.vx) / 2;\n vy = (vy + prevScroll.vy) / 2;\n }\n var direction = Math.abs(vx / vy);\n var canScroll = false;\n if (direction >= 1 && editor.renderer.isScrollableBy(ev.wheelX * ev.speed, 0))\n canScroll = true;\n if (direction <= 1 && editor.renderer.isScrollableBy(0, ev.wheelY * ev.speed))\n canScroll = true;\n if (canScroll) {\n prevScroll.allowed = t;\n }\n else if (t - prevScroll.allowed < SCROLL_COOLDOWN_T) {\n var isSlower = Math.abs(vx) <= 1.5 * Math.abs(prevScroll.vx)\n && Math.abs(vy) <= 1.5 * Math.abs(prevScroll.vy);\n if (isSlower) {\n canScroll = true;\n prevScroll.allowed = t;\n }\n else {\n prevScroll.allowed = 0;\n }\n }\n prevScroll.t = t;\n prevScroll.vx = vx;\n prevScroll.vy = vy;\n if (canScroll) {\n editor.renderer.scrollBy(ev.wheelX * ev.speed, ev.wheelY * ev.speed);\n return ev.stop();\n }\n };\n return DefaultHandlers;\n}());\nDefaultHandlers.prototype.selectEnd = DefaultHandlers.prototype.selectByLinesEnd;\nDefaultHandlers.prototype.selectAllEnd = DefaultHandlers.prototype.selectByLinesEnd;\nDefaultHandlers.prototype.selectByWordsEnd = DefaultHandlers.prototype.selectByLinesEnd;\nexports.DefaultHandlers = DefaultHandlers;\nfunction calcDistance(ax, ay, bx, by) {\n return Math.sqrt(Math.pow(bx - ax, 2) + Math.pow(by - ay, 2));\n}\nfunction calcRangeOrientation(range, cursor) {\n if (range.start.row == range.end.row)\n var cmp = 2 * cursor.column - range.start.column - range.end.column;\n else if (range.start.row == range.end.row - 1 && !range.start.column && !range.end.column)\n var cmp = cursor.column - 4;\n else\n var cmp = 2 * cursor.row - range.start.row - range.end.row;\n if (cmp < 0)\n return { cursor: range.start, anchor: range.end };\n else\n return { cursor: range.end, anchor: range.start };\n}\n\n});\n\nace.define(\"ace/tooltip\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\",\"ace/lib/event\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar dom = require(\"./lib/dom\");\nvar event = require(\"./lib/event\");\nvar Range = require(\"./range\").Range;\nvar CLASSNAME = \"ace_tooltip\";\nvar Tooltip = /** @class */ (function () {\n function Tooltip(parentNode) {\n this.isOpen = false;\n this.$element = null;\n this.$parentNode = parentNode;\n }\n Tooltip.prototype.$init = function () {\n this.$element = dom.createElement(\"div\");\n this.$element.className = CLASSNAME;\n this.$element.style.display = \"none\";\n this.$parentNode.appendChild(this.$element);\n return this.$element;\n };\n Tooltip.prototype.getElement = function () {\n return this.$element || this.$init();\n };\n Tooltip.prototype.setText = function (text) {\n this.getElement().textContent = text;\n };\n Tooltip.prototype.setHtml = function (html) {\n this.getElement().innerHTML = html;\n };\n Tooltip.prototype.setPosition = function (x, y) {\n this.getElement().style.left = x + \"px\";\n this.getElement().style.top = y + \"px\";\n };\n Tooltip.prototype.setClassName = function (className) {\n dom.addCssClass(this.getElement(), className);\n };\n Tooltip.prototype.setTheme = function (theme) {\n this.$element.className = CLASSNAME + \" \" +\n (theme.isDark ? \"ace_dark \" : \"\") + (theme.cssClass || \"\");\n };\n Tooltip.prototype.show = function (text, x, y) {\n if (text != null)\n this.setText(text);\n if (x != null && y != null)\n this.setPosition(x, y);\n if (!this.isOpen) {\n this.getElement().style.display = \"block\";\n this.isOpen = true;\n }\n };\n Tooltip.prototype.hide = function () {\n if (this.isOpen) {\n this.getElement().style.display = \"none\";\n this.getElement().className = CLASSNAME;\n this.isOpen = false;\n }\n };\n Tooltip.prototype.getHeight = function () {\n return this.getElement().offsetHeight;\n };\n Tooltip.prototype.getWidth = function () {\n return this.getElement().offsetWidth;\n };\n Tooltip.prototype.destroy = function () {\n this.isOpen = false;\n if (this.$element && this.$element.parentNode) {\n this.$element.parentNode.removeChild(this.$element);\n }\n };\n return Tooltip;\n}());\nvar PopupManager = /** @class */ (function () {\n function PopupManager() {\n this.popups = [];\n }\n PopupManager.prototype.addPopup = function (popup) {\n this.popups.push(popup);\n this.updatePopups();\n };\n PopupManager.prototype.removePopup = function (popup) {\n var index = this.popups.indexOf(popup);\n if (index !== -1) {\n this.popups.splice(index, 1);\n this.updatePopups();\n }\n };\n PopupManager.prototype.updatePopups = function () {\n var e_1, _a, e_2, _b;\n this.popups.sort(function (a, b) { return b.priority - a.priority; });\n var visiblepopups = [];\n try {\n for (var _c = __values(this.popups), _d = _c.next(); !_d.done; _d = _c.next()) {\n var popup = _d.value;\n var shouldDisplay = true;\n try {\n for (var visiblepopups_1 = (e_2 = void 0, __values(visiblepopups)), visiblepopups_1_1 = visiblepopups_1.next(); !visiblepopups_1_1.done; visiblepopups_1_1 = visiblepopups_1.next()) {\n var visiblePopup = visiblepopups_1_1.value;\n if (this.doPopupsOverlap(visiblePopup, popup)) {\n shouldDisplay = false;\n break;\n }\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (visiblepopups_1_1 && !visiblepopups_1_1.done && (_b = visiblepopups_1.return)) _b.call(visiblepopups_1);\n }\n finally { if (e_2) throw e_2.error; }\n }\n if (shouldDisplay) {\n visiblepopups.push(popup);\n }\n else {\n popup.hide();\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_d && !_d.done && (_a = _c.return)) _a.call(_c);\n }\n finally { if (e_1) throw e_1.error; }\n }\n };\n PopupManager.prototype.doPopupsOverlap = function (popupA, popupB) {\n var rectA = popupA.getElement().getBoundingClientRect();\n var rectB = popupB.getElement().getBoundingClientRect();\n return (rectA.left < rectB.right && rectA.right > rectB.left && rectA.top < rectB.bottom && rectA.bottom\n > rectB.top);\n };\n return PopupManager;\n}());\nvar popupManager = new PopupManager();\nexports.popupManager = popupManager;\nexports.Tooltip = Tooltip;\nvar HoverTooltip = /** @class */ (function (_super) {\n __extends(HoverTooltip, _super);\n function HoverTooltip(parentNode) {\n if (parentNode === void 0) { parentNode = document.body; }\n var _this = _super.call(this, parentNode) || this;\n _this.timeout = undefined;\n _this.lastT = 0;\n _this.idleTime = 350;\n _this.lastEvent = undefined;\n _this.onMouseOut = _this.onMouseOut.bind(_this);\n _this.onMouseMove = _this.onMouseMove.bind(_this);\n _this.waitForHover = _this.waitForHover.bind(_this);\n _this.hide = _this.hide.bind(_this);\n var el = _this.getElement();\n el.style.whiteSpace = \"pre-wrap\";\n el.style.pointerEvents = \"auto\";\n el.addEventListener(\"mouseout\", _this.onMouseOut);\n el.tabIndex = -1;\n el.addEventListener(\"blur\", function () {\n if (!el.contains(document.activeElement))\n this.hide();\n }.bind(_this));\n el.addEventListener(\"wheel\", event.stopPropagation);\n return _this;\n }\n HoverTooltip.prototype.addToEditor = function (editor) {\n editor.on(\"mousemove\", this.onMouseMove);\n editor.on(\"mousedown\", this.hide);\n editor.renderer.getMouseEventTarget().addEventListener(\"mouseout\", this.onMouseOut, true);\n };\n HoverTooltip.prototype.removeFromEditor = function (editor) {\n editor.off(\"mousemove\", this.onMouseMove);\n editor.off(\"mousedown\", this.hide);\n editor.renderer.getMouseEventTarget().removeEventListener(\"mouseout\", this.onMouseOut, true);\n if (this.timeout) {\n clearTimeout(this.timeout);\n this.timeout = null;\n }\n };\n HoverTooltip.prototype.onMouseMove = function (e, editor) {\n this.lastEvent = e;\n this.lastT = Date.now();\n var isMousePressed = editor.$mouseHandler.isMousePressed;\n if (this.isOpen) {\n var pos = this.lastEvent && this.lastEvent.getDocumentPosition();\n if (!this.range\n || !this.range.contains(pos.row, pos.column)\n || isMousePressed\n || this.isOutsideOfText(this.lastEvent)) {\n this.hide();\n }\n }\n if (this.timeout || isMousePressed)\n return;\n this.lastEvent = e;\n this.timeout = setTimeout(this.waitForHover, this.idleTime);\n };\n HoverTooltip.prototype.waitForHover = function () {\n if (this.timeout)\n clearTimeout(this.timeout);\n var dt = Date.now() - this.lastT;\n if (this.idleTime - dt > 10) {\n this.timeout = setTimeout(this.waitForHover, this.idleTime - dt);\n return;\n }\n this.timeout = null;\n if (this.lastEvent && !this.isOutsideOfText(this.lastEvent)) {\n this.$gatherData(this.lastEvent, this.lastEvent.editor);\n }\n };\n HoverTooltip.prototype.isOutsideOfText = function (e) {\n var editor = e.editor;\n var docPos = e.getDocumentPosition();\n var line = editor.session.getLine(docPos.row);\n if (docPos.column == line.length) {\n var screenPos = editor.renderer.pixelToScreenCoordinates(e.clientX, e.clientY);\n var clippedPos = editor.session.documentToScreenPosition(docPos.row, docPos.column);\n if (clippedPos.column != screenPos.column\n || clippedPos.row != screenPos.row) {\n return true;\n }\n }\n return false;\n };\n HoverTooltip.prototype.setDataProvider = function (value) {\n this.$gatherData = value;\n };\n HoverTooltip.prototype.showForRange = function (editor, range, domNode, startingEvent) {\n var MARGIN = 10;\n if (startingEvent && startingEvent != this.lastEvent)\n return;\n if (this.isOpen && document.activeElement == this.getElement())\n return;\n var renderer = editor.renderer;\n if (!this.isOpen) {\n popupManager.addPopup(this);\n this.$registerCloseEvents();\n this.setTheme(renderer.theme);\n }\n this.isOpen = true;\n this.addMarker(range, editor.session);\n this.range = Range.fromPoints(range.start, range.end);\n var position = renderer.textToScreenCoordinates(range.start.row, range.start.column);\n var rect = renderer.scroller.getBoundingClientRect();\n if (position.pageX < rect.left)\n position.pageX = rect.left;\n var element = this.getElement();\n element.innerHTML = \"\";\n element.appendChild(domNode);\n element.style.maxHeight = \"\";\n element.style.display = \"block\";\n var labelHeight = element.clientHeight;\n var labelWidth = element.clientWidth;\n var spaceBelow = window.innerHeight - position.pageY - renderer.lineHeight;\n var isAbove = true;\n if (position.pageY - labelHeight < 0 && position.pageY < spaceBelow) {\n isAbove = false;\n }\n element.style.maxHeight = (isAbove ? position.pageY : spaceBelow) - MARGIN + \"px\";\n element.style.top = isAbove ? \"\" : position.pageY + renderer.lineHeight + \"px\";\n element.style.bottom = isAbove ? window.innerHeight - position.pageY + \"px\" : \"\";\n element.style.left = Math.min(position.pageX, window.innerWidth - labelWidth - MARGIN) + \"px\";\n };\n HoverTooltip.prototype.addMarker = function (range, session) {\n if (this.marker) {\n this.$markerSession.removeMarker(this.marker);\n }\n this.$markerSession = session;\n this.marker = session && session.addMarker(range, \"ace_highlight-marker\", \"text\");\n };\n HoverTooltip.prototype.hide = function (e) {\n if (!e && document.activeElement == this.getElement())\n return;\n if (e && e.target && (e.type != \"keydown\" || e.ctrlKey || e.metaKey) && this.$element.contains(e.target))\n return;\n this.lastEvent = null;\n if (this.timeout)\n clearTimeout(this.timeout);\n this.timeout = null;\n this.addMarker(null);\n if (this.isOpen) {\n this.$removeCloseEvents();\n this.getElement().style.display = \"none\";\n this.isOpen = false;\n popupManager.removePopup(this);\n }\n };\n HoverTooltip.prototype.$registerCloseEvents = function () {\n window.addEventListener(\"keydown\", this.hide, true);\n window.addEventListener(\"wheel\", this.hide, true);\n window.addEventListener(\"mousedown\", this.hide, true);\n };\n HoverTooltip.prototype.$removeCloseEvents = function () {\n window.removeEventListener(\"keydown\", this.hide, true);\n window.removeEventListener(\"wheel\", this.hide, true);\n window.removeEventListener(\"mousedown\", this.hide, true);\n };\n HoverTooltip.prototype.onMouseOut = function (e) {\n if (this.timeout) {\n clearTimeout(this.timeout);\n this.timeout = null;\n }\n this.lastEvent = null;\n if (!this.isOpen)\n return;\n if (!e.relatedTarget || this.getElement().contains(e.relatedTarget))\n return;\n if (e && e.currentTarget.contains(e.relatedTarget))\n return;\n if (!e.relatedTarget.classList.contains(\"ace_content\"))\n this.hide();\n };\n return HoverTooltip;\n}(Tooltip));\nexports.HoverTooltip = HoverTooltip;\n\n});\n\nace.define(\"ace/mouse/default_gutter_handler\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\",\"ace/lib/event\",\"ace/tooltip\",\"ace/config\"], function(require, exports, module){\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar dom = require(\"../lib/dom\");\nvar event = require(\"../lib/event\");\nvar Tooltip = require(\"../tooltip\").Tooltip;\nvar nls = require(\"../config\").nls;\nfunction GutterHandler(mouseHandler) {\n var editor = mouseHandler.editor;\n var gutter = editor.renderer.$gutterLayer;\n var tooltip = new GutterTooltip(editor);\n mouseHandler.editor.setDefaultHandler(\"guttermousedown\", function (e) {\n if (!editor.isFocused() || e.getButton() != 0)\n return;\n var gutterRegion = gutter.getRegion(e);\n if (gutterRegion == \"foldWidgets\")\n return;\n var row = e.getDocumentPosition().row;\n var selection = editor.session.selection;\n if (e.getShiftKey())\n selection.selectTo(row, 0);\n else {\n if (e.domEvent.detail == 2) {\n editor.selectAll();\n return e.preventDefault();\n }\n mouseHandler.$clickSelection = editor.selection.getLineRange(row);\n }\n mouseHandler.setState(\"selectByLines\");\n mouseHandler.captureMouse(e);\n return e.preventDefault();\n });\n var tooltipTimeout, mouseEvent;\n function showTooltip() {\n var row = mouseEvent.getDocumentPosition().row;\n var maxRow = editor.session.getLength();\n if (row == maxRow) {\n var screenRow = editor.renderer.pixelToScreenCoordinates(0, mouseEvent.y).row;\n var pos = mouseEvent.$pos;\n if (screenRow > editor.session.documentToScreenRow(pos.row, pos.column))\n return hideTooltip();\n }\n tooltip.showTooltip(row);\n if (!tooltip.isOpen)\n return;\n editor.on(\"mousewheel\", hideTooltip);\n if (mouseHandler.$tooltipFollowsMouse) {\n moveTooltip(mouseEvent);\n }\n else {\n var gutterRow = mouseEvent.getGutterRow();\n var gutterCell = gutter.$lines.get(gutterRow);\n if (gutterCell) {\n var gutterElement = gutterCell.element.querySelector(\".ace_gutter_annotation\");\n var rect = gutterElement.getBoundingClientRect();\n var style = tooltip.getElement().style;\n style.left = rect.right + \"px\";\n style.top = rect.bottom + \"px\";\n }\n else {\n moveTooltip(mouseEvent);\n }\n }\n }\n function hideTooltip() {\n if (tooltipTimeout)\n tooltipTimeout = clearTimeout(tooltipTimeout);\n if (tooltip.isOpen) {\n tooltip.hideTooltip();\n editor.off(\"mousewheel\", hideTooltip);\n }\n }\n function moveTooltip(e) {\n tooltip.setPosition(e.x, e.y);\n }\n mouseHandler.editor.setDefaultHandler(\"guttermousemove\", function (e) {\n var target = e.domEvent.target || e.domEvent.srcElement;\n if (dom.hasCssClass(target, \"ace_fold-widget\"))\n return hideTooltip();\n if (tooltip.isOpen && mouseHandler.$tooltipFollowsMouse)\n moveTooltip(e);\n mouseEvent = e;\n if (tooltipTimeout)\n return;\n tooltipTimeout = setTimeout(function () {\n tooltipTimeout = null;\n if (mouseEvent && !mouseHandler.isMousePressed)\n showTooltip();\n else\n hideTooltip();\n }, 50);\n });\n event.addListener(editor.renderer.$gutter, \"mouseout\", function (e) {\n mouseEvent = null;\n if (!tooltip.isOpen || tooltipTimeout)\n return;\n tooltipTimeout = setTimeout(function () {\n tooltipTimeout = null;\n hideTooltip();\n }, 50);\n }, editor);\n editor.on(\"changeSession\", hideTooltip);\n editor.on(\"input\", hideTooltip);\n}\nexports.GutterHandler = GutterHandler;\nvar GutterTooltip = /** @class */ (function (_super) {\n __extends(GutterTooltip, _super);\n function GutterTooltip(editor) {\n var _this = _super.call(this, editor.container) || this;\n _this.editor = editor;\n return _this;\n }\n GutterTooltip.prototype.setPosition = function (x, y) {\n var windowWidth = window.innerWidth || document.documentElement.clientWidth;\n var windowHeight = window.innerHeight || document.documentElement.clientHeight;\n var width = this.getWidth();\n var height = this.getHeight();\n x += 15;\n y += 15;\n if (x + width > windowWidth) {\n x -= (x + width) - windowWidth;\n }\n if (y + height > windowHeight) {\n y -= 20 + height;\n }\n Tooltip.prototype.setPosition.call(this, x, y);\n };\n Object.defineProperty(GutterTooltip, \"annotationLabels\", {\n get: function () {\n return {\n error: { singular: nls(\"error\"), plural: nls(\"errors\") },\n warning: { singular: nls(\"warning\"), plural: nls(\"warnings\") },\n info: { singular: nls(\"information message\"), plural: nls(\"information messages\") }\n };\n },\n enumerable: false,\n configurable: true\n });\n GutterTooltip.prototype.showTooltip = function (row) {\n var gutter = this.editor.renderer.$gutterLayer;\n var annotationsInRow = gutter.$annotations[row];\n var annotation;\n if (annotationsInRow)\n annotation = { text: Array.from(annotationsInRow.text), type: Array.from(annotationsInRow.type) };\n else\n annotation = { text: [], type: [] };\n var fold = gutter.session.getFoldLine(row);\n if (fold && gutter.$showFoldedAnnotations) {\n var annotationsInFold = { error: [], warning: [], info: [] };\n var mostSevereAnnotationInFoldType;\n for (var i = row + 1; i <= fold.end.row; i++) {\n if (!gutter.$annotations[i])\n continue;\n for (var j = 0; j < gutter.$annotations[i].text.length; j++) {\n var annotationType = gutter.$annotations[i].type[j];\n annotationsInFold[annotationType].push(gutter.$annotations[i].text[j]);\n if (annotationType === \"error\") {\n mostSevereAnnotationInFoldType = \"error_fold\";\n continue;\n }\n if (annotationType === \"warning\") {\n mostSevereAnnotationInFoldType = \"warning_fold\";\n continue;\n }\n }\n }\n if (mostSevereAnnotationInFoldType === \"error_fold\" || mostSevereAnnotationInFoldType === \"warning_fold\") {\n var summaryFoldedAnnotations = \"\".concat(GutterTooltip.annotationsToSummaryString(annotationsInFold), \" in folded code.\");\n annotation.text.push(summaryFoldedAnnotations);\n annotation.type.push(mostSevereAnnotationInFoldType);\n }\n }\n if (annotation.text.length === 0)\n return this.hide();\n var annotationMessages = { error: [], warning: [], info: [] };\n var iconClassName = gutter.$useSvgGutterIcons ? \"ace_icon_svg\" : \"ace_icon\";\n for (var i = 0; i < annotation.text.length; i++) {\n var line = \" \").concat(annotation.text[i]);\n annotationMessages[annotation.type[i].replace(\"_fold\", \"\")].push(line);\n }\n var tooltipContent = [].concat(annotationMessages.error, annotationMessages.warning, annotationMessages.info).join(\"
    \");\n this.setHtml(tooltipContent);\n this.$element.setAttribute(\"aria-live\", \"polite\");\n if (!this.isOpen) {\n this.setTheme(this.editor.renderer.theme);\n this.setClassName(\"ace_gutter-tooltip\");\n }\n this.show();\n this.editor._signal(\"showGutterTooltip\", this);\n };\n GutterTooltip.prototype.hideTooltip = function () {\n this.$element.removeAttribute(\"aria-live\");\n this.hide();\n this.editor._signal(\"hideGutterTooltip\", this);\n };\n GutterTooltip.annotationsToSummaryString = function (annotations) {\n var e_1, _a;\n var summary = [];\n var annotationTypes = ['error', 'warning', 'info'];\n try {\n for (var annotationTypes_1 = __values(annotationTypes), annotationTypes_1_1 = annotationTypes_1.next(); !annotationTypes_1_1.done; annotationTypes_1_1 = annotationTypes_1.next()) {\n var annotationType = annotationTypes_1_1.value;\n if (!annotations[annotationType].length)\n continue;\n var label = annotations[annotationType].length === 1 ? GutterTooltip.annotationLabels[annotationType].singular : GutterTooltip.annotationLabels[annotationType].plural;\n summary.push(\"\".concat(annotations[annotationType].length, \" \").concat(label));\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (annotationTypes_1_1 && !annotationTypes_1_1.done && (_a = annotationTypes_1.return)) _a.call(annotationTypes_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return summary.join(\", \");\n };\n return GutterTooltip;\n}(Tooltip));\nexports.GutterTooltip = GutterTooltip;\n\n});\n\nace.define(\"ace/mouse/mouse_event\",[\"require\",\"exports\",\"module\",\"ace/lib/event\",\"ace/lib/useragent\"], function(require, exports, module){\"use strict\";\nvar event = require(\"../lib/event\");\nvar useragent = require(\"../lib/useragent\");\nvar MouseEvent = /** @class */ (function () {\n function MouseEvent(domEvent, editor) {\n this.domEvent = domEvent;\n this.editor = editor;\n this.x = this.clientX = domEvent.clientX;\n this.y = this.clientY = domEvent.clientY;\n this.$pos = null;\n this.$inSelection = null;\n this.propagationStopped = false;\n this.defaultPrevented = false;\n }\n MouseEvent.prototype.stopPropagation = function () {\n event.stopPropagation(this.domEvent);\n this.propagationStopped = true;\n };\n MouseEvent.prototype.preventDefault = function () {\n event.preventDefault(this.domEvent);\n this.defaultPrevented = true;\n };\n MouseEvent.prototype.stop = function () {\n this.stopPropagation();\n this.preventDefault();\n };\n MouseEvent.prototype.getDocumentPosition = function () {\n if (this.$pos)\n return this.$pos;\n this.$pos = this.editor.renderer.screenToTextCoordinates(this.clientX, this.clientY);\n return this.$pos;\n };\n MouseEvent.prototype.getGutterRow = function () {\n var documentRow = this.getDocumentPosition().row;\n var screenRow = this.editor.session.documentToScreenRow(documentRow, 0);\n var screenTopRow = this.editor.session.documentToScreenRow(this.editor.renderer.$gutterLayer.$lines.get(0).row, 0);\n return screenRow - screenTopRow;\n };\n MouseEvent.prototype.inSelection = function () {\n if (this.$inSelection !== null)\n return this.$inSelection;\n var editor = this.editor;\n var selectionRange = editor.getSelectionRange();\n if (selectionRange.isEmpty())\n this.$inSelection = false;\n else {\n var pos = this.getDocumentPosition();\n this.$inSelection = selectionRange.contains(pos.row, pos.column);\n }\n return this.$inSelection;\n };\n MouseEvent.prototype.getButton = function () {\n return event.getButton(this.domEvent);\n };\n MouseEvent.prototype.getShiftKey = function () {\n return this.domEvent.shiftKey;\n };\n MouseEvent.prototype.getAccelKey = function () {\n return useragent.isMac ? this.domEvent.metaKey : this.domEvent.ctrlKey;\n };\n return MouseEvent;\n}());\nexports.MouseEvent = MouseEvent;\n\n});\n\nace.define(\"ace/mouse/dragdrop_handler\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\",\"ace/lib/event\",\"ace/lib/useragent\"], function(require, exports, module){\"use strict\";\nvar dom = require(\"../lib/dom\");\nvar event = require(\"../lib/event\");\nvar useragent = require(\"../lib/useragent\");\nvar AUTOSCROLL_DELAY = 200;\nvar SCROLL_CURSOR_DELAY = 200;\nvar SCROLL_CURSOR_HYSTERESIS = 5;\nfunction DragdropHandler(mouseHandler) {\n var editor = mouseHandler.editor;\n var dragImage = dom.createElement(\"div\");\n dragImage.style.cssText = \"top:-100px;position:absolute;z-index:2147483647;opacity:0.5\";\n dragImage.textContent = \"\\xa0\";\n var exports = [\"dragWait\", \"dragWaitEnd\", \"startDrag\", \"dragReadyEnd\", \"onMouseDrag\"];\n exports.forEach(function (x) {\n mouseHandler[x] = this[x];\n }, this);\n editor.on(\"mousedown\", this.onMouseDown.bind(mouseHandler));\n var mouseTarget = editor.container;\n var dragSelectionMarker, x, y;\n var timerId, range;\n var dragCursor, counter = 0;\n var dragOperation;\n var isInternal;\n var autoScrollStartTime;\n var cursorMovedTime;\n var cursorPointOnCaretMoved;\n this.onDragStart = function (e) {\n if (this.cancelDrag || !mouseTarget.draggable) {\n var self = this;\n setTimeout(function () {\n self.startSelect();\n self.captureMouse(e);\n }, 0);\n return e.preventDefault();\n }\n range = editor.getSelectionRange();\n var dataTransfer = e.dataTransfer;\n dataTransfer.effectAllowed = editor.getReadOnly() ? \"copy\" : \"copyMove\";\n editor.container.appendChild(dragImage);\n dataTransfer.setDragImage && dataTransfer.setDragImage(dragImage, 0, 0);\n setTimeout(function () {\n editor.container.removeChild(dragImage);\n });\n dataTransfer.clearData();\n dataTransfer.setData(\"Text\", editor.session.getTextRange());\n isInternal = true;\n this.setState(\"drag\");\n };\n this.onDragEnd = function (e) {\n mouseTarget.draggable = false;\n isInternal = false;\n this.setState(null);\n if (!editor.getReadOnly()) {\n var dropEffect = e.dataTransfer.dropEffect;\n if (!dragOperation && dropEffect == \"move\")\n editor.session.remove(editor.getSelectionRange());\n editor.$resetCursorStyle();\n }\n this.editor.unsetStyle(\"ace_dragging\");\n this.editor.renderer.setCursorStyle(\"\");\n };\n this.onDragEnter = function (e) {\n if (editor.getReadOnly() || !canAccept(e.dataTransfer))\n return;\n x = e.clientX;\n y = e.clientY;\n if (!dragSelectionMarker)\n addDragMarker();\n counter++;\n e.dataTransfer.dropEffect = dragOperation = getDropEffect(e);\n return event.preventDefault(e);\n };\n this.onDragOver = function (e) {\n if (editor.getReadOnly() || !canAccept(e.dataTransfer))\n return;\n x = e.clientX;\n y = e.clientY;\n if (!dragSelectionMarker) {\n addDragMarker();\n counter++;\n }\n if (onMouseMoveTimer !== null)\n onMouseMoveTimer = null;\n e.dataTransfer.dropEffect = dragOperation = getDropEffect(e);\n return event.preventDefault(e);\n };\n this.onDragLeave = function (e) {\n counter--;\n if (counter <= 0 && dragSelectionMarker) {\n clearDragMarker();\n dragOperation = null;\n return event.preventDefault(e);\n }\n };\n this.onDrop = function (e) {\n if (!dragCursor)\n return;\n var dataTransfer = e.dataTransfer;\n if (isInternal) {\n switch (dragOperation) {\n case \"move\":\n if (range.contains(dragCursor.row, dragCursor.column)) {\n range = {\n start: dragCursor,\n end: dragCursor\n };\n }\n else {\n range = editor.moveText(range, dragCursor);\n }\n break;\n case \"copy\":\n range = editor.moveText(range, dragCursor, true);\n break;\n }\n }\n else {\n var dropData = dataTransfer.getData('Text');\n range = {\n start: dragCursor,\n end: editor.session.insert(dragCursor, dropData)\n };\n editor.focus();\n dragOperation = null;\n }\n clearDragMarker();\n return event.preventDefault(e);\n };\n event.addListener(mouseTarget, \"dragstart\", this.onDragStart.bind(mouseHandler), editor);\n event.addListener(mouseTarget, \"dragend\", this.onDragEnd.bind(mouseHandler), editor);\n event.addListener(mouseTarget, \"dragenter\", this.onDragEnter.bind(mouseHandler), editor);\n event.addListener(mouseTarget, \"dragover\", this.onDragOver.bind(mouseHandler), editor);\n event.addListener(mouseTarget, \"dragleave\", this.onDragLeave.bind(mouseHandler), editor);\n event.addListener(mouseTarget, \"drop\", this.onDrop.bind(mouseHandler), editor);\n function scrollCursorIntoView(cursor, prevCursor) {\n var now = Date.now();\n var vMovement = !prevCursor || cursor.row != prevCursor.row;\n var hMovement = !prevCursor || cursor.column != prevCursor.column;\n if (!cursorMovedTime || vMovement || hMovement) {\n editor.moveCursorToPosition(cursor);\n cursorMovedTime = now;\n cursorPointOnCaretMoved = { x: x, y: y };\n }\n else {\n var distance = calcDistance(cursorPointOnCaretMoved.x, cursorPointOnCaretMoved.y, x, y);\n if (distance > SCROLL_CURSOR_HYSTERESIS) {\n cursorMovedTime = null;\n }\n else if (now - cursorMovedTime >= SCROLL_CURSOR_DELAY) {\n editor.renderer.scrollCursorIntoView();\n cursorMovedTime = null;\n }\n }\n }\n function autoScroll(cursor, prevCursor) {\n var now = Date.now();\n var lineHeight = editor.renderer.layerConfig.lineHeight;\n var characterWidth = editor.renderer.layerConfig.characterWidth;\n var editorRect = editor.renderer.scroller.getBoundingClientRect();\n var offsets = {\n x: {\n left: x - editorRect.left,\n right: editorRect.right - x\n },\n y: {\n top: y - editorRect.top,\n bottom: editorRect.bottom - y\n }\n };\n var nearestXOffset = Math.min(offsets.x.left, offsets.x.right);\n var nearestYOffset = Math.min(offsets.y.top, offsets.y.bottom);\n var scrollCursor = { row: cursor.row, column: cursor.column };\n if (nearestXOffset / characterWidth <= 2) {\n scrollCursor.column += (offsets.x.left < offsets.x.right ? -3 : +2);\n }\n if (nearestYOffset / lineHeight <= 1) {\n scrollCursor.row += (offsets.y.top < offsets.y.bottom ? -1 : +1);\n }\n var vScroll = cursor.row != scrollCursor.row;\n var hScroll = cursor.column != scrollCursor.column;\n var vMovement = !prevCursor || cursor.row != prevCursor.row;\n if (vScroll || (hScroll && !vMovement)) {\n if (!autoScrollStartTime)\n autoScrollStartTime = now;\n else if (now - autoScrollStartTime >= AUTOSCROLL_DELAY)\n editor.renderer.scrollCursorIntoView(scrollCursor);\n }\n else {\n autoScrollStartTime = null;\n }\n }\n function onDragInterval() {\n var prevCursor = dragCursor;\n dragCursor = editor.renderer.screenToTextCoordinates(x, y);\n scrollCursorIntoView(dragCursor, prevCursor);\n autoScroll(dragCursor, prevCursor);\n }\n function addDragMarker() {\n range = editor.selection.toOrientedRange();\n dragSelectionMarker = editor.session.addMarker(range, \"ace_selection\", editor.getSelectionStyle());\n editor.clearSelection();\n if (editor.isFocused())\n editor.renderer.$cursorLayer.setBlinking(false);\n clearInterval(timerId);\n onDragInterval();\n timerId = setInterval(onDragInterval, 20);\n counter = 0;\n event.addListener(document, \"mousemove\", onMouseMove);\n }\n function clearDragMarker() {\n clearInterval(timerId);\n editor.session.removeMarker(dragSelectionMarker);\n dragSelectionMarker = null;\n editor.selection.fromOrientedRange(range);\n if (editor.isFocused() && !isInternal)\n editor.$resetCursorStyle();\n range = null;\n dragCursor = null;\n counter = 0;\n autoScrollStartTime = null;\n cursorMovedTime = null;\n event.removeListener(document, \"mousemove\", onMouseMove);\n }\n var onMouseMoveTimer = null;\n function onMouseMove() {\n if (onMouseMoveTimer == null) {\n onMouseMoveTimer = setTimeout(function () {\n if (onMouseMoveTimer != null && dragSelectionMarker)\n clearDragMarker();\n }, 20);\n }\n }\n function canAccept(dataTransfer) {\n var types = dataTransfer.types;\n return !types || Array.prototype.some.call(types, function (type) {\n return type == 'text/plain' || type == 'Text';\n });\n }\n function getDropEffect(e) {\n var copyAllowed = ['copy', 'copymove', 'all', 'uninitialized'];\n var moveAllowed = ['move', 'copymove', 'linkmove', 'all', 'uninitialized'];\n var copyModifierState = useragent.isMac ? e.altKey : e.ctrlKey;\n var effectAllowed = \"uninitialized\";\n try {\n effectAllowed = e.dataTransfer.effectAllowed.toLowerCase();\n }\n catch (e) { }\n var dropEffect = \"none\";\n if (copyModifierState && copyAllowed.indexOf(effectAllowed) >= 0)\n dropEffect = \"copy\";\n else if (moveAllowed.indexOf(effectAllowed) >= 0)\n dropEffect = \"move\";\n else if (copyAllowed.indexOf(effectAllowed) >= 0)\n dropEffect = \"copy\";\n return dropEffect;\n }\n}\n(function () {\n this.dragWait = function () {\n var interval = Date.now() - this.mousedownEvent.time;\n if (interval > this.editor.getDragDelay())\n this.startDrag();\n };\n this.dragWaitEnd = function () {\n var target = this.editor.container;\n target.draggable = false;\n this.startSelect(this.mousedownEvent.getDocumentPosition());\n this.selectEnd();\n };\n this.dragReadyEnd = function (e) {\n this.editor.$resetCursorStyle();\n this.editor.unsetStyle(\"ace_dragging\");\n this.editor.renderer.setCursorStyle(\"\");\n this.dragWaitEnd();\n };\n this.startDrag = function () {\n this.cancelDrag = false;\n var editor = this.editor;\n var target = editor.container;\n target.draggable = true;\n editor.renderer.$cursorLayer.setBlinking(false);\n editor.setStyle(\"ace_dragging\");\n var cursorStyle = useragent.isWin ? \"default\" : \"move\";\n editor.renderer.setCursorStyle(cursorStyle);\n this.setState(\"dragReady\");\n };\n this.onMouseDrag = function (e) {\n var target = this.editor.container;\n if (useragent.isIE && this.state == \"dragReady\") {\n var distance = calcDistance(this.mousedownEvent.x, this.mousedownEvent.y, this.x, this.y);\n if (distance > 3)\n target.dragDrop();\n }\n if (this.state === \"dragWait\") {\n var distance = calcDistance(this.mousedownEvent.x, this.mousedownEvent.y, this.x, this.y);\n if (distance > 0) {\n target.draggable = false;\n this.startSelect(this.mousedownEvent.getDocumentPosition());\n }\n }\n };\n this.onMouseDown = function (e) {\n if (!this.$dragEnabled)\n return;\n this.mousedownEvent = e;\n var editor = this.editor;\n var inSelection = e.inSelection();\n var button = e.getButton();\n var clickCount = e.domEvent.detail || 1;\n if (clickCount === 1 && button === 0 && inSelection) {\n if (e.editor.inMultiSelectMode && (e.getAccelKey() || e.getShiftKey()))\n return;\n this.mousedownEvent.time = Date.now();\n var eventTarget = e.domEvent.target || e.domEvent.srcElement;\n if (\"unselectable\" in eventTarget)\n eventTarget.unselectable = \"on\";\n if (editor.getDragDelay()) {\n if (useragent.isWebKit) {\n this.cancelDrag = true;\n var mouseTarget = editor.container;\n mouseTarget.draggable = true;\n }\n this.setState(\"dragWait\");\n }\n else {\n this.startDrag();\n }\n this.captureMouse(e, this.onMouseDrag.bind(this));\n e.defaultPrevented = true;\n }\n };\n}).call(DragdropHandler.prototype);\nfunction calcDistance(ax, ay, bx, by) {\n return Math.sqrt(Math.pow(bx - ax, 2) + Math.pow(by - ay, 2));\n}\nexports.DragdropHandler = DragdropHandler;\n\n});\n\nace.define(\"ace/mouse/touch_handler\",[\"require\",\"exports\",\"module\",\"ace/mouse/mouse_event\",\"ace/lib/event\",\"ace/lib/dom\"], function(require, exports, module){\"use strict\";\nvar MouseEvent = require(\"./mouse_event\").MouseEvent;\nvar event = require(\"../lib/event\");\nvar dom = require(\"../lib/dom\");\nexports.addTouchListeners = function (el, editor) {\n var mode = \"scroll\";\n var startX;\n var startY;\n var touchStartT;\n var lastT;\n var longTouchTimer;\n var animationTimer;\n var animationSteps = 0;\n var pos;\n var clickCount = 0;\n var vX = 0;\n var vY = 0;\n var pressed;\n var contextMenu;\n function createContextMenu() {\n var clipboard = window.navigator && window.navigator.clipboard;\n var isOpen = false;\n var updateMenu = function () {\n var selected = editor.getCopyText();\n var hasUndo = editor.session.getUndoManager().hasUndo();\n contextMenu.replaceChild(dom.buildDom(isOpen ? [\"span\",\n !selected && [\"span\", { class: \"ace_mobile-button\", action: \"selectall\" }, \"Select All\"],\n selected && [\"span\", { class: \"ace_mobile-button\", action: \"copy\" }, \"Copy\"],\n selected && [\"span\", { class: \"ace_mobile-button\", action: \"cut\" }, \"Cut\"],\n clipboard && [\"span\", { class: \"ace_mobile-button\", action: \"paste\" }, \"Paste\"],\n hasUndo && [\"span\", { class: \"ace_mobile-button\", action: \"undo\" }, \"Undo\"],\n [\"span\", { class: \"ace_mobile-button\", action: \"find\" }, \"Find\"],\n [\"span\", { class: \"ace_mobile-button\", action: \"openCommandPalette\" }, \"Palette\"]\n ] : [\"span\"]), contextMenu.firstChild);\n };\n var handleClick = function (e) {\n var action = e.target.getAttribute(\"action\");\n if (action == \"more\" || !isOpen) {\n isOpen = !isOpen;\n return updateMenu();\n }\n if (action == \"paste\") {\n clipboard.readText().then(function (text) {\n editor.execCommand(action, text);\n });\n }\n else if (action) {\n if (action == \"cut\" || action == \"copy\") {\n if (clipboard)\n clipboard.writeText(editor.getCopyText());\n else\n document.execCommand(\"copy\");\n }\n editor.execCommand(action);\n }\n contextMenu.firstChild.style.display = \"none\";\n isOpen = false;\n if (action != \"openCommandPalette\")\n editor.focus();\n };\n contextMenu = dom.buildDom([\"div\",\n {\n class: \"ace_mobile-menu\",\n ontouchstart: function (e) {\n mode = \"menu\";\n e.stopPropagation();\n e.preventDefault();\n editor.textInput.focus();\n },\n ontouchend: function (e) {\n e.stopPropagation();\n e.preventDefault();\n handleClick(e);\n },\n onclick: handleClick\n },\n [\"span\"],\n [\"span\", { class: \"ace_mobile-button\", action: \"more\" }, \"...\"]\n ], editor.container);\n }\n function showContextMenu() {\n if (!contextMenu)\n createContextMenu();\n var cursor = editor.selection.cursor;\n var pagePos = editor.renderer.textToScreenCoordinates(cursor.row, cursor.column);\n var leftOffset = editor.renderer.textToScreenCoordinates(0, 0).pageX;\n var scrollLeft = editor.renderer.scrollLeft;\n var rect = editor.container.getBoundingClientRect();\n contextMenu.style.top = pagePos.pageY - rect.top - 3 + \"px\";\n if (pagePos.pageX - rect.left < rect.width - 70) {\n contextMenu.style.left = \"\";\n contextMenu.style.right = \"10px\";\n }\n else {\n contextMenu.style.right = \"\";\n contextMenu.style.left = leftOffset + scrollLeft - rect.left + \"px\";\n }\n contextMenu.style.display = \"\";\n contextMenu.firstChild.style.display = \"none\";\n editor.on(\"input\", hideContextMenu);\n }\n function hideContextMenu(e) {\n if (contextMenu)\n contextMenu.style.display = \"none\";\n editor.off(\"input\", hideContextMenu);\n }\n function handleLongTap() {\n longTouchTimer = null;\n clearTimeout(longTouchTimer);\n var range = editor.selection.getRange();\n var inSelection = range.contains(pos.row, pos.column);\n if (range.isEmpty() || !inSelection) {\n editor.selection.moveToPosition(pos);\n editor.selection.selectWord();\n }\n mode = \"wait\";\n showContextMenu();\n }\n function switchToSelectionMode() {\n longTouchTimer = null;\n clearTimeout(longTouchTimer);\n editor.selection.moveToPosition(pos);\n var range = clickCount >= 2\n ? editor.selection.getLineRange(pos.row)\n : editor.session.getBracketRange(pos);\n if (range && !range.isEmpty()) {\n editor.selection.setRange(range);\n }\n else {\n editor.selection.selectWord();\n }\n mode = \"wait\";\n }\n event.addListener(el, \"contextmenu\", function (e) {\n if (!pressed)\n return;\n var textarea = editor.textInput.getElement();\n textarea.focus();\n }, editor);\n event.addListener(el, \"touchstart\", function (e) {\n var touches = e.touches;\n if (longTouchTimer || touches.length > 1) {\n clearTimeout(longTouchTimer);\n longTouchTimer = null;\n touchStartT = -1;\n mode = \"zoom\";\n return;\n }\n pressed = editor.$mouseHandler.isMousePressed = true;\n var h = editor.renderer.layerConfig.lineHeight;\n var w = editor.renderer.layerConfig.lineHeight;\n var t = e.timeStamp;\n lastT = t;\n var touchObj = touches[0];\n var x = touchObj.clientX;\n var y = touchObj.clientY;\n if (Math.abs(startX - x) + Math.abs(startY - y) > h)\n touchStartT = -1;\n startX = e.clientX = x;\n startY = e.clientY = y;\n vX = vY = 0;\n var ev = new MouseEvent(e, editor);\n pos = ev.getDocumentPosition();\n if (t - touchStartT < 500 && touches.length == 1 && !animationSteps) {\n clickCount++;\n e.preventDefault();\n e.button = 0;\n switchToSelectionMode();\n }\n else {\n clickCount = 0;\n var cursor = editor.selection.cursor;\n var anchor = editor.selection.isEmpty() ? cursor : editor.selection.anchor;\n var cursorPos = editor.renderer.$cursorLayer.getPixelPosition(cursor, true);\n var anchorPos = editor.renderer.$cursorLayer.getPixelPosition(anchor, true);\n var rect = editor.renderer.scroller.getBoundingClientRect();\n var offsetTop = editor.renderer.layerConfig.offset;\n var offsetLeft = editor.renderer.scrollLeft;\n var weightedDistance = function (x, y) {\n x = x / w;\n y = y / h - 0.75;\n return x * x + y * y;\n };\n if (e.clientX < rect.left) {\n mode = \"zoom\";\n return;\n }\n var diff1 = weightedDistance(e.clientX - rect.left - cursorPos.left + offsetLeft, e.clientY - rect.top - cursorPos.top + offsetTop);\n var diff2 = weightedDistance(e.clientX - rect.left - anchorPos.left + offsetLeft, e.clientY - rect.top - anchorPos.top + offsetTop);\n if (diff1 < 3.5 && diff2 < 3.5)\n mode = diff1 > diff2 ? \"cursor\" : \"anchor\";\n if (diff2 < 3.5)\n mode = \"anchor\";\n else if (diff1 < 3.5)\n mode = \"cursor\";\n else\n mode = \"scroll\";\n longTouchTimer = setTimeout(handleLongTap, 450);\n }\n touchStartT = t;\n }, editor);\n event.addListener(el, \"touchend\", function (e) {\n pressed = editor.$mouseHandler.isMousePressed = false;\n if (animationTimer)\n clearInterval(animationTimer);\n if (mode == \"zoom\") {\n mode = \"\";\n animationSteps = 0;\n }\n else if (longTouchTimer) {\n editor.selection.moveToPosition(pos);\n animationSteps = 0;\n showContextMenu();\n }\n else if (mode == \"scroll\") {\n animate();\n hideContextMenu();\n }\n else {\n showContextMenu();\n }\n clearTimeout(longTouchTimer);\n longTouchTimer = null;\n }, editor);\n event.addListener(el, \"touchmove\", function (e) {\n if (longTouchTimer) {\n clearTimeout(longTouchTimer);\n longTouchTimer = null;\n }\n var touches = e.touches;\n if (touches.length > 1 || mode == \"zoom\")\n return;\n var touchObj = touches[0];\n var wheelX = startX - touchObj.clientX;\n var wheelY = startY - touchObj.clientY;\n if (mode == \"wait\") {\n if (wheelX * wheelX + wheelY * wheelY > 4)\n mode = \"cursor\";\n else\n return e.preventDefault();\n }\n startX = touchObj.clientX;\n startY = touchObj.clientY;\n e.clientX = touchObj.clientX;\n e.clientY = touchObj.clientY;\n var t = e.timeStamp;\n var dt = t - lastT;\n lastT = t;\n if (mode == \"scroll\") {\n var mouseEvent = new MouseEvent(e, editor);\n mouseEvent.speed = 1;\n mouseEvent.wheelX = wheelX;\n mouseEvent.wheelY = wheelY;\n if (10 * Math.abs(wheelX) < Math.abs(wheelY))\n wheelX = 0;\n if (10 * Math.abs(wheelY) < Math.abs(wheelX))\n wheelY = 0;\n if (dt != 0) {\n vX = wheelX / dt;\n vY = wheelY / dt;\n }\n editor._emit(\"mousewheel\", mouseEvent);\n if (!mouseEvent.propagationStopped) {\n vX = vY = 0;\n }\n }\n else {\n var ev = new MouseEvent(e, editor);\n var pos = ev.getDocumentPosition();\n if (mode == \"cursor\")\n editor.selection.moveCursorToPosition(pos);\n else if (mode == \"anchor\")\n editor.selection.setSelectionAnchor(pos.row, pos.column);\n editor.renderer.scrollCursorIntoView(pos);\n e.preventDefault();\n }\n }, editor);\n function animate() {\n animationSteps += 60;\n animationTimer = setInterval(function () {\n if (animationSteps-- <= 0) {\n clearInterval(animationTimer);\n animationTimer = null;\n }\n if (Math.abs(vX) < 0.01)\n vX = 0;\n if (Math.abs(vY) < 0.01)\n vY = 0;\n if (animationSteps < 20)\n vX = 0.9 * vX;\n if (animationSteps < 20)\n vY = 0.9 * vY;\n var oldScrollTop = editor.session.getScrollTop();\n editor.renderer.scrollBy(10 * vX, 10 * vY);\n if (oldScrollTop == editor.session.getScrollTop())\n animationSteps = 0;\n }, 10);\n }\n};\n\n});\n\nace.define(\"ace/mouse/mouse_handler\",[\"require\",\"exports\",\"module\",\"ace/lib/event\",\"ace/lib/useragent\",\"ace/mouse/default_handlers\",\"ace/mouse/default_gutter_handler\",\"ace/mouse/mouse_event\",\"ace/mouse/dragdrop_handler\",\"ace/mouse/touch_handler\",\"ace/config\"], function(require, exports, module){\"use strict\";\nvar event = require(\"../lib/event\");\nvar useragent = require(\"../lib/useragent\");\nvar DefaultHandlers = require(\"./default_handlers\").DefaultHandlers;\nvar DefaultGutterHandler = require(\"./default_gutter_handler\").GutterHandler;\nvar MouseEvent = require(\"./mouse_event\").MouseEvent;\nvar DragdropHandler = require(\"./dragdrop_handler\").DragdropHandler;\nvar addTouchListeners = require(\"./touch_handler\").addTouchListeners;\nvar config = require(\"../config\");\nvar MouseHandler = /** @class */ (function () {\n function MouseHandler(editor) {\n var _self = this;\n this.editor = editor;\n new DefaultHandlers(this);\n new DefaultGutterHandler(this);\n new DragdropHandler(this);\n var focusEditor = function (e) {\n var windowBlurred = !document.hasFocus || !document.hasFocus()\n || !editor.isFocused() && document.activeElement == (editor.textInput && editor.textInput.getElement());\n if (windowBlurred)\n window.focus();\n editor.focus();\n setTimeout(function () {\n if (!editor.isFocused())\n editor.focus();\n });\n };\n var mouseTarget = editor.renderer.getMouseEventTarget();\n event.addListener(mouseTarget, \"click\", this.onMouseEvent.bind(this, \"click\"), editor);\n event.addListener(mouseTarget, \"mousemove\", this.onMouseMove.bind(this, \"mousemove\"), editor);\n event.addMultiMouseDownListener([\n mouseTarget,\n editor.renderer.scrollBarV && editor.renderer.scrollBarV.inner,\n editor.renderer.scrollBarH && editor.renderer.scrollBarH.inner,\n editor.textInput && editor.textInput.getElement()\n ].filter(Boolean), [400, 300, 250], this, \"onMouseEvent\", editor);\n event.addMouseWheelListener(editor.container, this.onMouseWheel.bind(this, \"mousewheel\"), editor);\n addTouchListeners(editor.container, editor);\n var gutterEl = editor.renderer.$gutter;\n event.addListener(gutterEl, \"mousedown\", this.onMouseEvent.bind(this, \"guttermousedown\"), editor);\n event.addListener(gutterEl, \"click\", this.onMouseEvent.bind(this, \"gutterclick\"), editor);\n event.addListener(gutterEl, \"dblclick\", this.onMouseEvent.bind(this, \"gutterdblclick\"), editor);\n event.addListener(gutterEl, \"mousemove\", this.onMouseEvent.bind(this, \"guttermousemove\"), editor);\n event.addListener(mouseTarget, \"mousedown\", focusEditor, editor);\n event.addListener(gutterEl, \"mousedown\", focusEditor, editor);\n if (useragent.isIE && editor.renderer.scrollBarV) {\n event.addListener(editor.renderer.scrollBarV.element, \"mousedown\", focusEditor, editor);\n event.addListener(editor.renderer.scrollBarH.element, \"mousedown\", focusEditor, editor);\n }\n editor.on(\"mousemove\", function (e) {\n if (_self.state || _self.$dragDelay || !_self.$dragEnabled)\n return;\n var character = editor.renderer.screenToTextCoordinates(e.x, e.y);\n var range = editor.session.selection.getRange();\n var renderer = editor.renderer;\n if (!range.isEmpty() && range.insideStart(character.row, character.column)) {\n renderer.setCursorStyle(\"default\");\n }\n else {\n renderer.setCursorStyle(\"\");\n }\n }, editor);\n }\n MouseHandler.prototype.onMouseEvent = function (name, e) {\n if (!this.editor.session)\n return;\n this.editor._emit(name, new MouseEvent(e, this.editor));\n };\n MouseHandler.prototype.onMouseMove = function (name, e) {\n var listeners = this.editor._eventRegistry && this.editor._eventRegistry.mousemove;\n if (!listeners || !listeners.length)\n return;\n this.editor._emit(name, new MouseEvent(e, this.editor));\n };\n MouseHandler.prototype.onMouseWheel = function (name, e) {\n var mouseEvent = new MouseEvent(e, this.editor);\n mouseEvent.speed = this.$scrollSpeed * 2;\n mouseEvent.wheelX = e.wheelX;\n mouseEvent.wheelY = e.wheelY;\n this.editor._emit(name, mouseEvent);\n };\n MouseHandler.prototype.setState = function (state) {\n this.state = state;\n };\n MouseHandler.prototype.captureMouse = function (ev, mouseMoveHandler) {\n this.x = ev.x;\n this.y = ev.y;\n this.isMousePressed = true;\n var editor = this.editor;\n var renderer = this.editor.renderer;\n renderer.$isMousePressed = true;\n var self = this;\n var onMouseMove = function (e) {\n if (!e)\n return;\n if (useragent.isWebKit && !e.which && self.releaseMouse)\n return self.releaseMouse();\n self.x = e.clientX;\n self.y = e.clientY;\n mouseMoveHandler && mouseMoveHandler(e);\n self.mouseEvent = new MouseEvent(e, self.editor);\n self.$mouseMoved = true;\n };\n var onCaptureEnd = function (e) {\n editor.off(\"beforeEndOperation\", onOperationEnd);\n clearInterval(timerId);\n if (editor.session)\n onCaptureInterval();\n self[self.state + \"End\"] && self[self.state + \"End\"](e);\n self.state = \"\";\n self.isMousePressed = renderer.$isMousePressed = false;\n if (renderer.$keepTextAreaAtCursor)\n renderer.$moveTextAreaToCursor();\n self.$onCaptureMouseMove = self.releaseMouse = null;\n e && self.onMouseEvent(\"mouseup\", e);\n editor.endOperation();\n };\n var onCaptureInterval = function () {\n self[self.state] && self[self.state]();\n self.$mouseMoved = false;\n };\n if (useragent.isOldIE && ev.domEvent.type == \"dblclick\") {\n return setTimeout(function () { onCaptureEnd(ev); });\n }\n var onOperationEnd = function (e) {\n if (!self.releaseMouse)\n return;\n if (editor.curOp.command.name && editor.curOp.selectionChanged) {\n self[self.state + \"End\"] && self[self.state + \"End\"]();\n self.state = \"\";\n self.releaseMouse();\n }\n };\n editor.on(\"beforeEndOperation\", onOperationEnd);\n editor.startOperation({ command: { name: \"mouse\" } });\n self.$onCaptureMouseMove = onMouseMove;\n self.releaseMouse = event.capture(this.editor.container, onMouseMove, onCaptureEnd);\n var timerId = setInterval(onCaptureInterval, 20);\n };\n MouseHandler.prototype.cancelContextMenu = function () {\n var stop = function (e) {\n if (e && e.domEvent && e.domEvent.type != \"contextmenu\")\n return;\n this.editor.off(\"nativecontextmenu\", stop);\n if (e && e.domEvent)\n event.stopEvent(e.domEvent);\n }.bind(this);\n setTimeout(stop, 10);\n this.editor.on(\"nativecontextmenu\", stop);\n };\n MouseHandler.prototype.destroy = function () {\n if (this.releaseMouse)\n this.releaseMouse();\n };\n return MouseHandler;\n}());\nMouseHandler.prototype.releaseMouse = null;\nconfig.defineOptions(MouseHandler.prototype, \"mouseHandler\", {\n scrollSpeed: { initialValue: 2 },\n dragDelay: { initialValue: (useragent.isMac ? 150 : 0) },\n dragEnabled: { initialValue: true },\n focusTimeout: { initialValue: 0 },\n tooltipFollowsMouse: { initialValue: true }\n});\nexports.MouseHandler = MouseHandler;\n\n});\n\nace.define(\"ace/mouse/fold_handler\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"], function(require, exports, module){\"use strict\";\nvar dom = require(\"../lib/dom\");\nvar FoldHandler = /** @class */ (function () {\n function FoldHandler(editor) {\n editor.on(\"click\", function (e) {\n var position = e.getDocumentPosition();\n var session = editor.session;\n var fold = session.getFoldAt(position.row, position.column, 1);\n if (fold) {\n if (e.getAccelKey())\n session.removeFold(fold);\n else\n session.expandFold(fold);\n e.stop();\n }\n var target = e.domEvent && e.domEvent.target;\n if (target && dom.hasCssClass(target, \"ace_inline_button\")) {\n if (dom.hasCssClass(target, \"ace_toggle_wrap\")) {\n session.setOption(\"wrap\", !session.getUseWrapMode());\n editor.renderer.scrollCursorIntoView();\n }\n }\n });\n editor.on(\"gutterclick\", function (e) {\n var gutterRegion = editor.renderer.$gutterLayer.getRegion(e);\n if (gutterRegion == \"foldWidgets\") {\n var row = e.getDocumentPosition().row;\n var session = editor.session;\n if (session.foldWidgets && session.foldWidgets[row])\n editor.session.onFoldWidgetClick(row, e);\n if (!editor.isFocused())\n editor.focus();\n e.stop();\n }\n });\n editor.on(\"gutterdblclick\", function (e) {\n var gutterRegion = editor.renderer.$gutterLayer.getRegion(e);\n if (gutterRegion == \"foldWidgets\") {\n var row = e.getDocumentPosition().row;\n var session = editor.session;\n var data = session.getParentFoldRangeData(row, true);\n var range = data.range || data.firstRange;\n if (range) {\n row = range.start.row;\n var fold = session.getFoldAt(row, session.getLine(row).length, 1);\n if (fold) {\n session.removeFold(fold);\n }\n else {\n session.addFold(\"...\", range);\n editor.renderer.scrollCursorIntoView({ row: range.start.row, column: 0 });\n }\n }\n e.stop();\n }\n });\n }\n return FoldHandler;\n}());\nexports.FoldHandler = FoldHandler;\n\n});\n\nace.define(\"ace/keyboard/keybinding\",[\"require\",\"exports\",\"module\",\"ace/lib/keys\",\"ace/lib/event\"], function(require, exports, module){\"use strict\";\nvar keyUtil = require(\"../lib/keys\");\nvar event = require(\"../lib/event\");\nvar KeyBinding = /** @class */ (function () {\n function KeyBinding(editor) {\n this.$editor = editor;\n this.$data = { editor: editor };\n this.$handlers = [];\n this.setDefaultHandler(editor.commands);\n }\n KeyBinding.prototype.setDefaultHandler = function (kb) {\n this.removeKeyboardHandler(this.$defaultHandler);\n this.$defaultHandler = kb;\n this.addKeyboardHandler(kb, 0);\n };\n KeyBinding.prototype.setKeyboardHandler = function (kb) {\n var h = this.$handlers;\n if (h[h.length - 1] == kb)\n return;\n while (h[h.length - 1] && h[h.length - 1] != this.$defaultHandler)\n this.removeKeyboardHandler(h[h.length - 1]);\n this.addKeyboardHandler(kb, 1);\n };\n KeyBinding.prototype.addKeyboardHandler = function (kb, pos) {\n if (!kb)\n return;\n if (typeof kb == \"function\" && !kb.handleKeyboard)\n kb.handleKeyboard = kb;\n var i = this.$handlers.indexOf(kb);\n if (i != -1)\n this.$handlers.splice(i, 1);\n if (pos == undefined)\n this.$handlers.push(kb);\n else\n this.$handlers.splice(pos, 0, kb);\n if (i == -1 && kb.attach)\n kb.attach(this.$editor);\n };\n KeyBinding.prototype.removeKeyboardHandler = function (kb) {\n var i = this.$handlers.indexOf(kb);\n if (i == -1)\n return false;\n this.$handlers.splice(i, 1);\n kb.detach && kb.detach(this.$editor);\n return true;\n };\n KeyBinding.prototype.getKeyboardHandler = function () {\n return this.$handlers[this.$handlers.length - 1];\n };\n KeyBinding.prototype.getStatusText = function () {\n var data = this.$data;\n var editor = data.editor;\n return this.$handlers.map(function (h) {\n return h.getStatusText && h.getStatusText(editor, data) || \"\";\n }).filter(Boolean).join(\" \");\n };\n KeyBinding.prototype.$callKeyboardHandlers = function (hashId, keyString, keyCode, e) {\n var toExecute;\n var success = false;\n var commands = this.$editor.commands;\n for (var i = this.$handlers.length; i--;) {\n toExecute = this.$handlers[i].handleKeyboard(this.$data, hashId, keyString, keyCode, e);\n if (!toExecute || !toExecute.command)\n continue;\n if (toExecute.command == \"null\") {\n success = true;\n }\n else {\n success = commands.exec(toExecute.command, this.$editor, toExecute.args, e);\n }\n if (success && e && hashId != -1 &&\n toExecute.passEvent != true && toExecute.command.passEvent != true) {\n event.stopEvent(e);\n }\n if (success)\n break;\n }\n if (!success && hashId == -1) {\n toExecute = { command: \"insertstring\" };\n success = commands.exec(\"insertstring\", this.$editor, keyString);\n }\n if (success && this.$editor._signal)\n this.$editor._signal(\"keyboardActivity\", toExecute);\n return success;\n };\n KeyBinding.prototype.onCommandKey = function (e, hashId, keyCode) {\n var keyString = keyUtil.keyCodeToString(keyCode);\n return this.$callKeyboardHandlers(hashId, keyString, keyCode, e);\n };\n KeyBinding.prototype.onTextInput = function (text) {\n return this.$callKeyboardHandlers(-1, text);\n };\n return KeyBinding;\n}());\nexports.KeyBinding = KeyBinding;\n\n});\n\nace.define(\"ace/lib/bidiutil\",[\"require\",\"exports\",\"module\"], function(require, exports, module){\"use strict\";\nvar ArabicAlefBetIntervalsBegine = ['\\u0621', '\\u0641'];\nvar ArabicAlefBetIntervalsEnd = ['\\u063A', '\\u064a'];\nvar dir = 0, hiLevel = 0;\nvar lastArabic = false, hasUBAT_AL = false, hasUBAT_B = false, hasUBAT_S = false, hasBlockSep = false, hasSegSep = false;\nvar impTab_LTR = [ [0, 3, 0, 1, 0, 0, 0], [0, 3, 0, 1, 2, 2, 0], [0, 3, 0, 0x11, 2, 0, 1], [0, 3, 5, 5, 4, 1, 0], [0, 3, 0x15, 0x15, 4, 0, 1], [0, 3, 5, 5, 4, 2, 0]\n];\nvar impTab_RTL = [ [2, 0, 1, 1, 0, 1, 0], [2, 0, 1, 1, 0, 2, 0], [2, 0, 2, 1, 3, 2, 0], [2, 0, 2, 0x21, 3, 1, 1]\n];\nvar LTR = 0, RTL = 1;\nvar L = 0;\nvar R = 1;\nvar EN = 2;\nvar AN = 3;\nvar ON = 4;\nvar B = 5;\nvar S = 6;\nvar AL = 7;\nvar WS = 8;\nvar CS = 9;\nvar ES = 10;\nvar ET = 11;\nvar NSM = 12;\nvar LRE = 13;\nvar RLE = 14;\nvar PDF = 15;\nvar LRO = 16;\nvar RLO = 17;\nvar BN = 18;\nvar UnicodeTBL00 = [\n BN, BN, BN, BN, BN, BN, BN, BN, BN, S, B, S, WS, B, BN, BN,\n BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, B, B, B, S,\n WS, ON, ON, ET, ET, ET, ON, ON, ON, ON, ON, ES, CS, ES, CS, CS,\n EN, EN, EN, EN, EN, EN, EN, EN, EN, EN, CS, ON, ON, ON, ON, ON,\n ON, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L,\n L, L, L, L, L, L, L, L, L, L, L, ON, ON, ON, ON, ON,\n ON, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L,\n L, L, L, L, L, L, L, L, L, L, L, ON, ON, ON, ON, BN,\n BN, BN, BN, BN, BN, B, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN,\n BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN,\n CS, ON, ET, ET, ET, ET, ON, ON, ON, ON, L, ON, ON, BN, ON, ON,\n ET, ET, EN, EN, ON, L, ON, ON, ON, EN, L, ON, ON, ON, ON, ON\n];\nvar UnicodeTBL20 = [\n WS, WS, WS, WS, WS, WS, WS, WS, WS, WS, WS, BN, BN, BN, L, R,\n ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON,\n ON, ON, ON, ON, ON, ON, ON, ON, WS, B, LRE, RLE, PDF, LRO, RLO, CS,\n ET, ET, ET, ET, ET, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON,\n ON, ON, ON, ON, CS, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON,\n ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, WS\n];\nfunction _computeLevels(chars, levels, len, charTypes) {\n var impTab = dir ? impTab_RTL : impTab_LTR, prevState = null, newClass = null, newLevel = null, newState = 0, action = null, cond = null, condPos = -1, i = null, ix = null, classes = [];\n if (!charTypes) {\n for (i = 0, charTypes = []; i < len; i++) {\n charTypes[i] = _getCharacterType(chars[i]);\n }\n }\n hiLevel = dir;\n lastArabic = false;\n hasUBAT_AL = false;\n hasUBAT_B = false;\n hasUBAT_S = false;\n for (ix = 0; ix < len; ix++) {\n prevState = newState;\n classes[ix] = newClass = _getCharClass(chars, charTypes, classes, ix);\n newState = impTab[prevState][newClass];\n action = newState & 0xF0;\n newState &= 0x0F;\n levels[ix] = newLevel = impTab[newState][5];\n if (action > 0) {\n if (action == 0x10) {\n for (i = condPos; i < ix; i++) {\n levels[i] = 1;\n }\n condPos = -1;\n }\n else {\n condPos = -1;\n }\n }\n cond = impTab[newState][6];\n if (cond) {\n if (condPos == -1) {\n condPos = ix;\n }\n }\n else {\n if (condPos > -1) {\n for (i = condPos; i < ix; i++) {\n levels[i] = newLevel;\n }\n condPos = -1;\n }\n }\n if (charTypes[ix] == B) {\n levels[ix] = 0;\n }\n hiLevel |= newLevel;\n }\n if (hasUBAT_S) {\n for (i = 0; i < len; i++) {\n if (charTypes[i] == S) {\n levels[i] = dir;\n for (var j = i - 1; j >= 0; j--) {\n if (charTypes[j] == WS) {\n levels[j] = dir;\n }\n else {\n break;\n }\n }\n }\n }\n }\n}\nfunction _invertLevel(lev, levels, _array) {\n if (hiLevel < lev) {\n return;\n }\n if (lev == 1 && dir == RTL && !hasUBAT_B) {\n _array.reverse();\n return;\n }\n var len = _array.length, start = 0, end, lo, hi, tmp;\n while (start < len) {\n if (levels[start] >= lev) {\n end = start + 1;\n while (end < len && levels[end] >= lev) {\n end++;\n }\n for (lo = start, hi = end - 1; lo < hi; lo++, hi--) {\n tmp = _array[lo];\n _array[lo] = _array[hi];\n _array[hi] = tmp;\n }\n start = end;\n }\n start++;\n }\n}\nfunction _getCharClass(chars, types, classes, ix) {\n var cType = types[ix], wType, nType, len, i;\n switch (cType) {\n case L:\n case R:\n lastArabic = false;\n case ON:\n case AN:\n return cType;\n case EN:\n return lastArabic ? AN : EN;\n case AL:\n lastArabic = true;\n hasUBAT_AL = true;\n return R;\n case WS:\n return ON;\n case CS:\n if (ix < 1 || (ix + 1) >= types.length ||\n ((wType = classes[ix - 1]) != EN && wType != AN) ||\n ((nType = types[ix + 1]) != EN && nType != AN)) {\n return ON;\n }\n if (lastArabic) {\n nType = AN;\n }\n return nType == wType ? nType : ON;\n case ES:\n wType = ix > 0 ? classes[ix - 1] : B;\n if (wType == EN && (ix + 1) < types.length && types[ix + 1] == EN) {\n return EN;\n }\n return ON;\n case ET:\n if (ix > 0 && classes[ix - 1] == EN) {\n return EN;\n }\n if (lastArabic) {\n return ON;\n }\n i = ix + 1;\n len = types.length;\n while (i < len && types[i] == ET) {\n i++;\n }\n if (i < len && types[i] == EN) {\n return EN;\n }\n return ON;\n case NSM:\n len = types.length;\n i = ix + 1;\n while (i < len && types[i] == NSM) {\n i++;\n }\n if (i < len) {\n var c = chars[ix], rtlCandidate = (c >= 0x0591 && c <= 0x08FF) || c == 0xFB1E;\n wType = types[i];\n if (rtlCandidate && (wType == R || wType == AL)) {\n return R;\n }\n }\n if (ix < 1 || (wType = types[ix - 1]) == B) {\n return ON;\n }\n return classes[ix - 1];\n case B:\n lastArabic = false;\n hasUBAT_B = true;\n return dir;\n case S:\n hasUBAT_S = true;\n return ON;\n case LRE:\n case RLE:\n case LRO:\n case RLO:\n case PDF:\n lastArabic = false;\n case BN:\n return ON;\n }\n}\nfunction _getCharacterType(ch) {\n var uc = ch.charCodeAt(0), hi = uc >> 8;\n if (hi == 0) {\n return ((uc > 0x00BF) ? L : UnicodeTBL00[uc]);\n }\n else if (hi == 5) {\n return (/[\\u0591-\\u05f4]/.test(ch) ? R : L);\n }\n else if (hi == 6) {\n if (/[\\u0610-\\u061a\\u064b-\\u065f\\u06d6-\\u06e4\\u06e7-\\u06ed]/.test(ch))\n return NSM;\n else if (/[\\u0660-\\u0669\\u066b-\\u066c]/.test(ch))\n return AN;\n else if (uc == 0x066A)\n return ET;\n else if (/[\\u06f0-\\u06f9]/.test(ch))\n return EN;\n else\n return AL;\n }\n else if (hi == 0x20 && uc <= 0x205F) {\n return UnicodeTBL20[uc & 0xFF];\n }\n else if (hi == 0xFE) {\n return (uc >= 0xFE70 ? AL : ON);\n }\n return ON;\n}\nfunction _isArabicDiacritics(ch) {\n return (ch >= '\\u064b' && ch <= '\\u0655');\n}\nexports.L = L;\nexports.R = R;\nexports.EN = EN;\nexports.ON_R = 3;\nexports.AN = 4;\nexports.R_H = 5;\nexports.B = 6;\nexports.RLE = 7;\nexports.DOT = \"\\xB7\";\nexports.doBidiReorder = function (text, textCharTypes, isRtl) {\n if (text.length < 2)\n return {};\n var chars = text.split(\"\"), logicalFromVisual = new Array(chars.length), bidiLevels = new Array(chars.length), levels = [];\n dir = isRtl ? RTL : LTR;\n _computeLevels(chars, levels, chars.length, textCharTypes);\n for (var i = 0; i < logicalFromVisual.length; logicalFromVisual[i] = i, i++)\n ;\n _invertLevel(2, levels, logicalFromVisual);\n _invertLevel(1, levels, logicalFromVisual);\n for (var i = 0; i < logicalFromVisual.length - 1; i++) { //fix levels to reflect character width\n if (textCharTypes[i] === AN) {\n levels[i] = exports.AN;\n }\n else if (levels[i] === R && ((textCharTypes[i] > AL && textCharTypes[i] < LRE)\n || textCharTypes[i] === ON || textCharTypes[i] === BN)) {\n levels[i] = exports.ON_R;\n }\n else if ((i > 0 && chars[i - 1] === '\\u0644') && /\\u0622|\\u0623|\\u0625|\\u0627/.test(chars[i])) {\n levels[i - 1] = levels[i] = exports.R_H;\n i++;\n }\n }\n if (chars[chars.length - 1] === exports.DOT)\n levels[chars.length - 1] = exports.B;\n if (chars[0] === '\\u202B')\n levels[0] = exports.RLE;\n for (var i = 0; i < logicalFromVisual.length; i++) {\n bidiLevels[i] = levels[logicalFromVisual[i]];\n }\n return { 'logicalFromVisual': logicalFromVisual, 'bidiLevels': bidiLevels };\n};\nexports.hasBidiCharacters = function (text, textCharTypes) {\n var ret = false;\n for (var i = 0; i < text.length; i++) {\n textCharTypes[i] = _getCharacterType(text.charAt(i));\n if (!ret && (textCharTypes[i] == R || textCharTypes[i] == AL || textCharTypes[i] == AN))\n ret = true;\n }\n return ret;\n};\nexports.getVisualFromLogicalIdx = function (logIdx, rowMap) {\n for (var i = 0; i < rowMap.logicalFromVisual.length; i++) {\n if (rowMap.logicalFromVisual[i] == logIdx)\n return i;\n }\n return 0;\n};\n\n});\n\nace.define(\"ace/bidihandler\",[\"require\",\"exports\",\"module\",\"ace/lib/bidiutil\",\"ace/lib/lang\"], function(require, exports, module){\"use strict\";\nvar bidiUtil = require(\"./lib/bidiutil\");\nvar lang = require(\"./lib/lang\");\nvar bidiRE = /[\\u0590-\\u05f4\\u0600-\\u06ff\\u0700-\\u08ac\\u202B]/;\nvar BidiHandler = /** @class */ (function () {\n function BidiHandler(session) {\n this.session = session;\n this.bidiMap = {};\n this.currentRow = null;\n this.bidiUtil = bidiUtil;\n this.charWidths = [];\n this.EOL = \"\\xAC\";\n this.showInvisibles = true;\n this.isRtlDir = false;\n this.$isRtl = false;\n this.line = \"\";\n this.wrapIndent = 0;\n this.EOF = \"\\xB6\";\n this.RLE = \"\\u202B\";\n this.contentWidth = 0;\n this.fontMetrics = null;\n this.rtlLineOffset = 0;\n this.wrapOffset = 0;\n this.isMoveLeftOperation = false;\n this.seenBidi = bidiRE.test(session.getValue());\n }\n BidiHandler.prototype.isBidiRow = function (screenRow, docRow, splitIndex) {\n if (!this.seenBidi)\n return false;\n if (screenRow !== this.currentRow) {\n this.currentRow = screenRow;\n this.updateRowLine(docRow, splitIndex);\n this.updateBidiMap();\n }\n return this.bidiMap.bidiLevels;\n };\n BidiHandler.prototype.onChange = function (delta) {\n if (!this.seenBidi) {\n if (delta.action == \"insert\" && bidiRE.test(delta.lines.join(\"\\n\"))) {\n this.seenBidi = true;\n this.currentRow = null;\n }\n }\n else {\n this.currentRow = null;\n }\n };\n BidiHandler.prototype.getDocumentRow = function () {\n var docRow = 0;\n var rowCache = this.session.$screenRowCache;\n if (rowCache.length) {\n var index = this.session.$getRowCacheIndex(rowCache, this.currentRow);\n if (index >= 0)\n docRow = this.session.$docRowCache[index];\n }\n return docRow;\n };\n BidiHandler.prototype.getSplitIndex = function () {\n var splitIndex = 0;\n var rowCache = this.session.$screenRowCache;\n if (rowCache.length) {\n var currentIndex, prevIndex = this.session.$getRowCacheIndex(rowCache, this.currentRow);\n while (this.currentRow - splitIndex > 0) {\n currentIndex = this.session.$getRowCacheIndex(rowCache, this.currentRow - splitIndex - 1);\n if (currentIndex !== prevIndex)\n break;\n prevIndex = currentIndex;\n splitIndex++;\n }\n }\n else {\n splitIndex = this.currentRow;\n }\n return splitIndex;\n };\n BidiHandler.prototype.updateRowLine = function (docRow, splitIndex) {\n if (docRow === undefined)\n docRow = this.getDocumentRow();\n var isLastRow = (docRow === this.session.getLength() - 1), endOfLine = isLastRow ? this.EOF : this.EOL;\n this.wrapIndent = 0;\n this.line = this.session.getLine(docRow);\n this.isRtlDir = this.$isRtl || this.line.charAt(0) === this.RLE;\n if (this.session.$useWrapMode) {\n var splits = this.session.$wrapData[docRow];\n if (splits) {\n if (splitIndex === undefined)\n splitIndex = this.getSplitIndex();\n if (splitIndex > 0 && splits.length) {\n this.wrapIndent = splits.indent;\n this.wrapOffset = this.wrapIndent * this.charWidths[bidiUtil.L];\n this.line = (splitIndex < splits.length) ?\n this.line.substring(splits[splitIndex - 1], splits[splitIndex]) :\n this.line.substring(splits[splits.length - 1]);\n }\n else {\n this.line = this.line.substring(0, splits[splitIndex]);\n }\n if (splitIndex == splits.length) {\n this.line += (this.showInvisibles) ? endOfLine : bidiUtil.DOT;\n }\n }\n }\n else {\n this.line += this.showInvisibles ? endOfLine : bidiUtil.DOT;\n }\n var session = this.session, shift = 0, size;\n this.line = this.line.replace(/\\t|[\\u1100-\\u2029, \\u202F-\\uFFE6]/g, function (ch, i) {\n if (ch === '\\t' || session.isFullWidth(ch.charCodeAt(0))) {\n size = (ch === '\\t') ? session.getScreenTabSize(i + shift) : 2;\n shift += size - 1;\n return lang.stringRepeat(bidiUtil.DOT, size);\n }\n return ch;\n });\n if (this.isRtlDir) {\n this.fontMetrics.$main.textContent = (this.line.charAt(this.line.length - 1) == bidiUtil.DOT) ? this.line.substr(0, this.line.length - 1) : this.line;\n this.rtlLineOffset = this.contentWidth - this.fontMetrics.$main.getBoundingClientRect().width;\n }\n };\n BidiHandler.prototype.updateBidiMap = function () {\n var textCharTypes = [];\n if (bidiUtil.hasBidiCharacters(this.line, textCharTypes) || this.isRtlDir) {\n this.bidiMap = bidiUtil.doBidiReorder(this.line, textCharTypes, this.isRtlDir);\n }\n else {\n this.bidiMap = {};\n }\n };\n BidiHandler.prototype.markAsDirty = function () {\n this.currentRow = null;\n };\n BidiHandler.prototype.updateCharacterWidths = function (fontMetrics) {\n if (this.characterWidth === fontMetrics.$characterSize.width)\n return;\n this.fontMetrics = fontMetrics;\n var characterWidth = this.characterWidth = fontMetrics.$characterSize.width;\n var bidiCharWidth = fontMetrics.$measureCharWidth(\"\\u05d4\");\n this.charWidths[bidiUtil.L] = this.charWidths[bidiUtil.EN] = this.charWidths[bidiUtil.ON_R] = characterWidth;\n this.charWidths[bidiUtil.R] = this.charWidths[bidiUtil.AN] = bidiCharWidth;\n this.charWidths[bidiUtil.R_H] = bidiCharWidth * 0.45;\n this.charWidths[bidiUtil.B] = this.charWidths[bidiUtil.RLE] = 0;\n this.currentRow = null;\n };\n BidiHandler.prototype.setShowInvisibles = function (showInvisibles) {\n this.showInvisibles = showInvisibles;\n this.currentRow = null;\n };\n BidiHandler.prototype.setEolChar = function (eolChar) {\n this.EOL = eolChar;\n };\n BidiHandler.prototype.setContentWidth = function (width) {\n this.contentWidth = width;\n };\n BidiHandler.prototype.isRtlLine = function (row) {\n if (this.$isRtl)\n return true;\n if (row != undefined)\n return (this.session.getLine(row).charAt(0) == this.RLE);\n else\n return this.isRtlDir;\n };\n BidiHandler.prototype.setRtlDirection = function (editor, isRtlDir) {\n var cursor = editor.getCursorPosition();\n for (var row = editor.selection.getSelectionAnchor().row; row <= cursor.row; row++) {\n if (!isRtlDir && editor.session.getLine(row).charAt(0) === editor.session.$bidiHandler.RLE)\n editor.session.doc.removeInLine(row, 0, 1);\n else if (isRtlDir && editor.session.getLine(row).charAt(0) !== editor.session.$bidiHandler.RLE)\n editor.session.doc.insert({ column: 0, row: row }, editor.session.$bidiHandler.RLE);\n }\n };\n BidiHandler.prototype.getPosLeft = function (col) {\n col -= this.wrapIndent;\n var leftBoundary = (this.line.charAt(0) === this.RLE) ? 1 : 0;\n var logicalIdx = (col > leftBoundary) ? (this.session.getOverwrite() ? col : col - 1) : leftBoundary;\n var visualIdx = bidiUtil.getVisualFromLogicalIdx(logicalIdx, this.bidiMap), levels = this.bidiMap.bidiLevels, left = 0;\n if (!this.session.getOverwrite() && col <= leftBoundary && levels[visualIdx] % 2 !== 0)\n visualIdx++;\n for (var i = 0; i < visualIdx; i++) {\n left += this.charWidths[levels[i]];\n }\n if (!this.session.getOverwrite() && (col > leftBoundary) && (levels[visualIdx] % 2 === 0))\n left += this.charWidths[levels[visualIdx]];\n if (this.wrapIndent)\n left += this.isRtlDir ? (-1 * this.wrapOffset) : this.wrapOffset;\n if (this.isRtlDir)\n left += this.rtlLineOffset;\n return left;\n };\n BidiHandler.prototype.getSelections = function (startCol, endCol) {\n var map = this.bidiMap, levels = map.bidiLevels, level, selections = [], offset = 0, selColMin = Math.min(startCol, endCol) - this.wrapIndent, selColMax = Math.max(startCol, endCol) - this.wrapIndent, isSelected = false, isSelectedPrev = false, selectionStart = 0;\n if (this.wrapIndent)\n offset += this.isRtlDir ? (-1 * this.wrapOffset) : this.wrapOffset;\n for (var logIdx, visIdx = 0; visIdx < levels.length; visIdx++) {\n logIdx = map.logicalFromVisual[visIdx];\n level = levels[visIdx];\n isSelected = (logIdx >= selColMin) && (logIdx < selColMax);\n if (isSelected && !isSelectedPrev) {\n selectionStart = offset;\n }\n else if (!isSelected && isSelectedPrev) {\n selections.push({ left: selectionStart, width: offset - selectionStart });\n }\n offset += this.charWidths[level];\n isSelectedPrev = isSelected;\n }\n if (isSelected && (visIdx === levels.length)) {\n selections.push({ left: selectionStart, width: offset - selectionStart });\n }\n if (this.isRtlDir) {\n for (var i = 0; i < selections.length; i++) {\n selections[i].left += this.rtlLineOffset;\n }\n }\n return selections;\n };\n BidiHandler.prototype.offsetToCol = function (posX) {\n if (this.isRtlDir)\n posX -= this.rtlLineOffset;\n var logicalIdx = 0, posX = Math.max(posX, 0), offset = 0, visualIdx = 0, levels = this.bidiMap.bidiLevels, charWidth = this.charWidths[levels[visualIdx]];\n if (this.wrapIndent)\n posX -= this.isRtlDir ? (-1 * this.wrapOffset) : this.wrapOffset;\n while (posX > offset + charWidth / 2) {\n offset += charWidth;\n if (visualIdx === levels.length - 1) {\n charWidth = 0;\n break;\n }\n charWidth = this.charWidths[levels[++visualIdx]];\n }\n if (visualIdx > 0 && (levels[visualIdx - 1] % 2 !== 0) && (levels[visualIdx] % 2 === 0)) {\n if (posX < offset)\n visualIdx--;\n logicalIdx = this.bidiMap.logicalFromVisual[visualIdx];\n }\n else if (visualIdx > 0 && (levels[visualIdx - 1] % 2 === 0) && (levels[visualIdx] % 2 !== 0)) {\n logicalIdx = 1 + ((posX > offset) ? this.bidiMap.logicalFromVisual[visualIdx]\n : this.bidiMap.logicalFromVisual[visualIdx - 1]);\n }\n else if ((this.isRtlDir && visualIdx === levels.length - 1 && charWidth === 0 && (levels[visualIdx - 1] % 2 === 0))\n || (!this.isRtlDir && visualIdx === 0 && (levels[visualIdx] % 2 !== 0))) {\n logicalIdx = 1 + this.bidiMap.logicalFromVisual[visualIdx];\n }\n else {\n if (visualIdx > 0 && (levels[visualIdx - 1] % 2 !== 0) && charWidth !== 0)\n visualIdx--;\n logicalIdx = this.bidiMap.logicalFromVisual[visualIdx];\n }\n if (logicalIdx === 0 && this.isRtlDir)\n logicalIdx++;\n return (logicalIdx + this.wrapIndent);\n };\n return BidiHandler;\n}());\nexports.BidiHandler = BidiHandler;\n\n});\n\nace.define(\"ace/selection\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/lib/event_emitter\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"./lib/oop\");\nvar lang = require(\"./lib/lang\");\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar Range = require(\"./range\").Range;\nvar Selection = /** @class */ (function () {\n function Selection(session) {\n this.session = session;\n this.doc = session.getDocument();\n this.clearSelection();\n this.cursor = this.lead = this.doc.createAnchor(0, 0);\n this.anchor = this.doc.createAnchor(0, 0);\n this.$silent = false;\n var self = this;\n this.cursor.on(\"change\", function (e) {\n self.$cursorChanged = true;\n if (!self.$silent)\n self._emit(\"changeCursor\");\n if (!self.$isEmpty && !self.$silent)\n self._emit(\"changeSelection\");\n if (!self.$keepDesiredColumnOnChange && e.old.column != e.value.column)\n self.$desiredColumn = null;\n });\n this.anchor.on(\"change\", function () {\n self.$anchorChanged = true;\n if (!self.$isEmpty && !self.$silent)\n self._emit(\"changeSelection\");\n });\n }\n Selection.prototype.isEmpty = function () {\n return this.$isEmpty || (this.anchor.row == this.lead.row &&\n this.anchor.column == this.lead.column);\n };\n Selection.prototype.isMultiLine = function () {\n return !this.$isEmpty && this.anchor.row != this.cursor.row;\n };\n Selection.prototype.getCursor = function () {\n return this.lead.getPosition();\n };\n Selection.prototype.setAnchor = function (row, column) {\n this.$isEmpty = false;\n this.anchor.setPosition(row, column);\n };\n Selection.prototype.getAnchor = function () {\n if (this.$isEmpty)\n return this.getSelectionLead();\n return this.anchor.getPosition();\n };\n Selection.prototype.getSelectionLead = function () {\n return this.lead.getPosition();\n };\n Selection.prototype.isBackwards = function () {\n var anchor = this.anchor;\n var lead = this.lead;\n return (anchor.row > lead.row || (anchor.row == lead.row && anchor.column > lead.column));\n };\n Selection.prototype.getRange = function () {\n var anchor = this.anchor;\n var lead = this.lead;\n if (this.$isEmpty)\n return Range.fromPoints(lead, lead);\n return this.isBackwards()\n ? Range.fromPoints(lead, anchor)\n : Range.fromPoints(anchor, lead);\n };\n Selection.prototype.clearSelection = function () {\n if (!this.$isEmpty) {\n this.$isEmpty = true;\n this._emit(\"changeSelection\");\n }\n };\n Selection.prototype.selectAll = function () {\n this.$setSelection(0, 0, Number.MAX_VALUE, Number.MAX_VALUE);\n };\n Selection.prototype.setRange = function (range, reverse) {\n var start = reverse ? range.end : range.start;\n var end = reverse ? range.start : range.end;\n this.$setSelection(start.row, start.column, end.row, end.column);\n };\n Selection.prototype.$setSelection = function (anchorRow, anchorColumn, cursorRow, cursorColumn) {\n if (this.$silent)\n return;\n var wasEmpty = this.$isEmpty;\n var wasMultiselect = this.inMultiSelectMode;\n this.$silent = true;\n this.$cursorChanged = this.$anchorChanged = false;\n this.anchor.setPosition(anchorRow, anchorColumn);\n this.cursor.setPosition(cursorRow, cursorColumn);\n this.$isEmpty = !Range.comparePoints(this.anchor, this.cursor);\n this.$silent = false;\n if (this.$cursorChanged)\n this._emit(\"changeCursor\");\n if (this.$cursorChanged || this.$anchorChanged || wasEmpty != this.$isEmpty || wasMultiselect)\n this._emit(\"changeSelection\");\n };\n Selection.prototype.$moveSelection = function (mover) {\n var lead = this.lead;\n if (this.$isEmpty)\n this.setSelectionAnchor(lead.row, lead.column);\n mover.call(this);\n };\n Selection.prototype.selectTo = function (row, column) {\n this.$moveSelection(function () {\n this.moveCursorTo(row, column);\n });\n };\n Selection.prototype.selectToPosition = function (pos) {\n this.$moveSelection(function () {\n this.moveCursorToPosition(pos);\n });\n };\n Selection.prototype.moveTo = function (row, column) {\n this.clearSelection();\n this.moveCursorTo(row, column);\n };\n Selection.prototype.moveToPosition = function (pos) {\n this.clearSelection();\n this.moveCursorToPosition(pos);\n };\n Selection.prototype.selectUp = function () {\n this.$moveSelection(this.moveCursorUp);\n };\n Selection.prototype.selectDown = function () {\n this.$moveSelection(this.moveCursorDown);\n };\n Selection.prototype.selectRight = function () {\n this.$moveSelection(this.moveCursorRight);\n };\n Selection.prototype.selectLeft = function () {\n this.$moveSelection(this.moveCursorLeft);\n };\n Selection.prototype.selectLineStart = function () {\n this.$moveSelection(this.moveCursorLineStart);\n };\n Selection.prototype.selectLineEnd = function () {\n this.$moveSelection(this.moveCursorLineEnd);\n };\n Selection.prototype.selectFileEnd = function () {\n this.$moveSelection(this.moveCursorFileEnd);\n };\n Selection.prototype.selectFileStart = function () {\n this.$moveSelection(this.moveCursorFileStart);\n };\n Selection.prototype.selectWordRight = function () {\n this.$moveSelection(this.moveCursorWordRight);\n };\n Selection.prototype.selectWordLeft = function () {\n this.$moveSelection(this.moveCursorWordLeft);\n };\n Selection.prototype.getWordRange = function (row, column) {\n if (typeof column == \"undefined\") {\n var cursor = row || this.lead;\n row = cursor.row;\n column = cursor.column;\n }\n return this.session.getWordRange(row, column);\n };\n Selection.prototype.selectWord = function () {\n this.setSelectionRange(this.getWordRange());\n };\n Selection.prototype.selectAWord = function () {\n var cursor = this.getCursor();\n var range = this.session.getAWordRange(cursor.row, cursor.column);\n this.setSelectionRange(range);\n };\n Selection.prototype.getLineRange = function (row, excludeLastChar) {\n var rowStart = typeof row == \"number\" ? row : this.lead.row;\n var rowEnd;\n var foldLine = this.session.getFoldLine(rowStart);\n if (foldLine) {\n rowStart = foldLine.start.row;\n rowEnd = foldLine.end.row;\n }\n else {\n rowEnd = rowStart;\n }\n if (excludeLastChar === true)\n return new Range(rowStart, 0, rowEnd, this.session.getLine(rowEnd).length);\n else\n return new Range(rowStart, 0, rowEnd + 1, 0);\n };\n Selection.prototype.selectLine = function () {\n this.setSelectionRange(this.getLineRange());\n };\n Selection.prototype.moveCursorUp = function () {\n this.moveCursorBy(-1, 0);\n };\n Selection.prototype.moveCursorDown = function () {\n this.moveCursorBy(1, 0);\n };\n Selection.prototype.wouldMoveIntoSoftTab = function (cursor, tabSize, direction) {\n var start = cursor.column;\n var end = cursor.column + tabSize;\n if (direction < 0) {\n start = cursor.column - tabSize;\n end = cursor.column;\n }\n return this.session.isTabStop(cursor) && this.doc.getLine(cursor.row).slice(start, end).split(\" \").length - 1 == tabSize;\n };\n Selection.prototype.moveCursorLeft = function () {\n var cursor = this.lead.getPosition(), fold;\n if (fold = this.session.getFoldAt(cursor.row, cursor.column, -1)) {\n this.moveCursorTo(fold.start.row, fold.start.column);\n }\n else if (cursor.column === 0) {\n if (cursor.row > 0) {\n this.moveCursorTo(cursor.row - 1, this.doc.getLine(cursor.row - 1).length);\n }\n }\n else {\n var tabSize = this.session.getTabSize();\n if (this.wouldMoveIntoSoftTab(cursor, tabSize, -1) && !this.session.getNavigateWithinSoftTabs()) {\n this.moveCursorBy(0, -tabSize);\n }\n else {\n this.moveCursorBy(0, -1);\n }\n }\n };\n Selection.prototype.moveCursorRight = function () {\n var cursor = this.lead.getPosition(), fold;\n if (fold = this.session.getFoldAt(cursor.row, cursor.column, 1)) {\n this.moveCursorTo(fold.end.row, fold.end.column);\n }\n else if (this.lead.column == this.doc.getLine(this.lead.row).length) {\n if (this.lead.row < this.doc.getLength() - 1) {\n this.moveCursorTo(this.lead.row + 1, 0);\n }\n }\n else {\n var tabSize = this.session.getTabSize();\n var cursor = this.lead;\n if (this.wouldMoveIntoSoftTab(cursor, tabSize, 1) && !this.session.getNavigateWithinSoftTabs()) {\n this.moveCursorBy(0, tabSize);\n }\n else {\n this.moveCursorBy(0, 1);\n }\n }\n };\n Selection.prototype.moveCursorLineStart = function () {\n var row = this.lead.row;\n var column = this.lead.column;\n var screenRow = this.session.documentToScreenRow(row, column);\n var firstColumnPosition = this.session.screenToDocumentPosition(screenRow, 0);\n var beforeCursor = this.session.getDisplayLine(row, null, firstColumnPosition.row, firstColumnPosition.column);\n var leadingSpace = beforeCursor.match(/^\\s*/);\n if (leadingSpace[0].length != column && !this.session.$useEmacsStyleLineStart)\n firstColumnPosition.column += leadingSpace[0].length;\n this.moveCursorToPosition(firstColumnPosition);\n };\n Selection.prototype.moveCursorLineEnd = function () {\n var lead = this.lead;\n var lineEnd = this.session.getDocumentLastRowColumnPosition(lead.row, lead.column);\n if (this.lead.column == lineEnd.column) {\n var line = this.session.getLine(lineEnd.row);\n if (lineEnd.column == line.length) {\n var textEnd = line.search(/\\s+$/);\n if (textEnd > 0)\n lineEnd.column = textEnd;\n }\n }\n this.moveCursorTo(lineEnd.row, lineEnd.column);\n };\n Selection.prototype.moveCursorFileEnd = function () {\n var row = this.doc.getLength() - 1;\n var column = this.doc.getLine(row).length;\n this.moveCursorTo(row, column);\n };\n Selection.prototype.moveCursorFileStart = function () {\n this.moveCursorTo(0, 0);\n };\n Selection.prototype.moveCursorLongWordRight = function () {\n var row = this.lead.row;\n var column = this.lead.column;\n var line = this.doc.getLine(row);\n var rightOfCursor = line.substring(column);\n this.session.nonTokenRe.lastIndex = 0;\n this.session.tokenRe.lastIndex = 0;\n var fold = this.session.getFoldAt(row, column, 1);\n if (fold) {\n this.moveCursorTo(fold.end.row, fold.end.column);\n return;\n }\n if (this.session.nonTokenRe.exec(rightOfCursor)) {\n column += this.session.nonTokenRe.lastIndex;\n this.session.nonTokenRe.lastIndex = 0;\n rightOfCursor = line.substring(column);\n }\n if (column >= line.length) {\n this.moveCursorTo(row, line.length);\n this.moveCursorRight();\n if (row < this.doc.getLength() - 1)\n this.moveCursorWordRight();\n return;\n }\n if (this.session.tokenRe.exec(rightOfCursor)) {\n column += this.session.tokenRe.lastIndex;\n this.session.tokenRe.lastIndex = 0;\n }\n this.moveCursorTo(row, column);\n };\n Selection.prototype.moveCursorLongWordLeft = function () {\n var row = this.lead.row;\n var column = this.lead.column;\n var fold;\n if (fold = this.session.getFoldAt(row, column, -1)) {\n this.moveCursorTo(fold.start.row, fold.start.column);\n return;\n }\n var str = this.session.getFoldStringAt(row, column, -1);\n if (str == null) {\n str = this.doc.getLine(row).substring(0, column);\n }\n var leftOfCursor = lang.stringReverse(str);\n this.session.nonTokenRe.lastIndex = 0;\n this.session.tokenRe.lastIndex = 0;\n if (this.session.nonTokenRe.exec(leftOfCursor)) {\n column -= this.session.nonTokenRe.lastIndex;\n leftOfCursor = leftOfCursor.slice(this.session.nonTokenRe.lastIndex);\n this.session.nonTokenRe.lastIndex = 0;\n }\n if (column <= 0) {\n this.moveCursorTo(row, 0);\n this.moveCursorLeft();\n if (row > 0)\n this.moveCursorWordLeft();\n return;\n }\n if (this.session.tokenRe.exec(leftOfCursor)) {\n column -= this.session.tokenRe.lastIndex;\n this.session.tokenRe.lastIndex = 0;\n }\n this.moveCursorTo(row, column);\n };\n Selection.prototype.$shortWordEndIndex = function (rightOfCursor) {\n var index = 0, ch;\n var whitespaceRe = /\\s/;\n var tokenRe = this.session.tokenRe;\n tokenRe.lastIndex = 0;\n if (this.session.tokenRe.exec(rightOfCursor)) {\n index = this.session.tokenRe.lastIndex;\n }\n else {\n while ((ch = rightOfCursor[index]) && whitespaceRe.test(ch))\n index++;\n if (index < 1) {\n tokenRe.lastIndex = 0;\n while ((ch = rightOfCursor[index]) && !tokenRe.test(ch)) {\n tokenRe.lastIndex = 0;\n index++;\n if (whitespaceRe.test(ch)) {\n if (index > 2) {\n index--;\n break;\n }\n else {\n while ((ch = rightOfCursor[index]) && whitespaceRe.test(ch))\n index++;\n if (index > 2)\n break;\n }\n }\n }\n }\n }\n tokenRe.lastIndex = 0;\n return index;\n };\n Selection.prototype.moveCursorShortWordRight = function () {\n var row = this.lead.row;\n var column = this.lead.column;\n var line = this.doc.getLine(row);\n var rightOfCursor = line.substring(column);\n var fold = this.session.getFoldAt(row, column, 1);\n if (fold)\n return this.moveCursorTo(fold.end.row, fold.end.column);\n if (column == line.length) {\n var l = this.doc.getLength();\n do {\n row++;\n rightOfCursor = this.doc.getLine(row);\n } while (row < l && /^\\s*$/.test(rightOfCursor));\n if (!/^\\s+/.test(rightOfCursor))\n rightOfCursor = \"\";\n column = 0;\n }\n var index = this.$shortWordEndIndex(rightOfCursor);\n this.moveCursorTo(row, column + index);\n };\n Selection.prototype.moveCursorShortWordLeft = function () {\n var row = this.lead.row;\n var column = this.lead.column;\n var fold;\n if (fold = this.session.getFoldAt(row, column, -1))\n return this.moveCursorTo(fold.start.row, fold.start.column);\n var line = this.session.getLine(row).substring(0, column);\n if (column === 0) {\n do {\n row--;\n line = this.doc.getLine(row);\n } while (row > 0 && /^\\s*$/.test(line));\n column = line.length;\n if (!/\\s+$/.test(line))\n line = \"\";\n }\n var leftOfCursor = lang.stringReverse(line);\n var index = this.$shortWordEndIndex(leftOfCursor);\n return this.moveCursorTo(row, column - index);\n };\n Selection.prototype.moveCursorWordRight = function () {\n if (this.session.$selectLongWords)\n this.moveCursorLongWordRight();\n else\n this.moveCursorShortWordRight();\n };\n Selection.prototype.moveCursorWordLeft = function () {\n if (this.session.$selectLongWords)\n this.moveCursorLongWordLeft();\n else\n this.moveCursorShortWordLeft();\n };\n Selection.prototype.moveCursorBy = function (rows, chars) {\n var screenPos = this.session.documentToScreenPosition(this.lead.row, this.lead.column);\n var offsetX;\n if (chars === 0) {\n if (rows !== 0) {\n if (this.session.$bidiHandler.isBidiRow(screenPos.row, this.lead.row)) {\n offsetX = this.session.$bidiHandler.getPosLeft(screenPos.column);\n screenPos.column = Math.round(offsetX / this.session.$bidiHandler.charWidths[0]);\n }\n else {\n offsetX = screenPos.column * this.session.$bidiHandler.charWidths[0];\n }\n }\n if (this.$desiredColumn)\n screenPos.column = this.$desiredColumn;\n else\n this.$desiredColumn = screenPos.column;\n }\n if (rows != 0 && this.session.lineWidgets && this.session.lineWidgets[this.lead.row]) {\n var widget = this.session.lineWidgets[this.lead.row];\n if (rows < 0)\n rows -= widget.rowsAbove || 0;\n else if (rows > 0)\n rows += widget.rowCount - (widget.rowsAbove || 0);\n }\n var docPos = this.session.screenToDocumentPosition(screenPos.row + rows, screenPos.column, offsetX);\n if (rows !== 0 && chars === 0 && docPos.row === this.lead.row && docPos.column === this.lead.column) {\n }\n this.moveCursorTo(docPos.row, docPos.column + chars, chars === 0);\n };\n Selection.prototype.moveCursorToPosition = function (position) {\n this.moveCursorTo(position.row, position.column);\n };\n Selection.prototype.moveCursorTo = function (row, column, keepDesiredColumn) {\n var fold = this.session.getFoldAt(row, column, 1);\n if (fold) {\n row = fold.start.row;\n column = fold.start.column;\n }\n this.$keepDesiredColumnOnChange = true;\n var line = this.session.getLine(row);\n if (/[\\uDC00-\\uDFFF]/.test(line.charAt(column)) && line.charAt(column - 1)) {\n if (this.lead.row == row && this.lead.column == column + 1)\n column = column - 1;\n else\n column = column + 1;\n }\n this.lead.setPosition(row, column);\n this.$keepDesiredColumnOnChange = false;\n if (!keepDesiredColumn)\n this.$desiredColumn = null;\n };\n Selection.prototype.moveCursorToScreen = function (row, column, keepDesiredColumn) {\n var pos = this.session.screenToDocumentPosition(row, column);\n this.moveCursorTo(pos.row, pos.column, keepDesiredColumn);\n };\n Selection.prototype.detach = function () {\n this.lead.detach();\n this.anchor.detach();\n };\n Selection.prototype.fromOrientedRange = function (range) {\n this.setSelectionRange(range, range.cursor == range.start);\n this.$desiredColumn = range.desiredColumn || this.$desiredColumn;\n };\n Selection.prototype.toOrientedRange = function (range) {\n var r = this.getRange();\n if (range) {\n range.start.column = r.start.column;\n range.start.row = r.start.row;\n range.end.column = r.end.column;\n range.end.row = r.end.row;\n }\n else {\n range = r;\n }\n range.cursor = this.isBackwards() ? range.start : range.end;\n range.desiredColumn = this.$desiredColumn;\n return range;\n };\n Selection.prototype.getRangeOfMovements = function (func) {\n var start = this.getCursor();\n try {\n func(this);\n var end = this.getCursor();\n return Range.fromPoints(start, end);\n }\n catch (e) {\n return Range.fromPoints(start, start);\n }\n finally {\n this.moveCursorToPosition(start);\n }\n };\n Selection.prototype.toJSON = function () {\n if (this.rangeCount) {\n var data = this.ranges.map(function (r) {\n var r1 = r.clone();\n r1.isBackwards = r.cursor == r.start;\n return r1;\n });\n }\n else {\n var data = this.getRange();\n data.isBackwards = this.isBackwards();\n }\n return data;\n };\n Selection.prototype.fromJSON = function (data) {\n if (data.start == undefined) {\n if (this.rangeList && data.length > 1) {\n this.toSingleRange(data[0]);\n for (var i = data.length; i--;) {\n var r = Range.fromPoints(data[i].start, data[i].end);\n if (data[i].isBackwards)\n r.cursor = r.start;\n this.addRange(r, true);\n }\n return;\n }\n else {\n data = data[0];\n }\n }\n if (this.rangeList)\n this.toSingleRange(data);\n this.setSelectionRange(data, data.isBackwards);\n };\n Selection.prototype.isEqual = function (data) {\n if ((data.length || this.rangeCount) && data.length != this.rangeCount)\n return false;\n if (!data.length || !this.ranges)\n return this.getRange().isEqual(data);\n for (var i = this.ranges.length; i--;) {\n if (!this.ranges[i].isEqual(data[i]))\n return false;\n }\n return true;\n };\n return Selection;\n}());\nSelection.prototype.setSelectionAnchor = Selection.prototype.setAnchor;\nSelection.prototype.getSelectionAnchor = Selection.prototype.getAnchor;\nSelection.prototype.setSelectionRange = Selection.prototype.setRange;\noop.implement(Selection.prototype, EventEmitter);\nexports.Selection = Selection;\n\n});\n\nace.define(\"ace/tokenizer\",[\"require\",\"exports\",\"module\",\"ace/lib/report_error\"], function(require, exports, module){\"use strict\";\nvar reportError = require(\"./lib/report_error\").reportError;\nvar MAX_TOKEN_COUNT = 2000;\nvar Tokenizer = /** @class */ (function () {\n function Tokenizer(rules) {\n this.states = rules;\n this.regExps = {};\n this.matchMappings = {};\n for (var key in this.states) {\n var state = this.states[key];\n var ruleRegExps = [];\n var matchTotal = 0;\n var mapping = this.matchMappings[key] = { defaultToken: \"text\" };\n var flag = \"g\";\n var splitterRurles = [];\n for (var i = 0; i < state.length; i++) {\n var rule = state[i];\n if (rule.defaultToken)\n mapping.defaultToken = rule.defaultToken;\n if (rule.caseInsensitive && flag.indexOf(\"i\") === -1)\n flag += \"i\";\n if (rule.unicode && flag.indexOf(\"u\") === -1)\n flag += \"u\";\n if (rule.regex == null)\n continue;\n if (rule.regex instanceof RegExp)\n rule.regex = rule.regex.toString().slice(1, -1);\n var adjustedregex = rule.regex;\n var matchcount = new RegExp(\"(?:(\" + adjustedregex + \")|(.))\").exec(\"a\").length - 2;\n if (Array.isArray(rule.token)) {\n if (rule.token.length == 1 || matchcount == 1) {\n rule.token = rule.token[0];\n }\n else if (matchcount - 1 != rule.token.length) {\n this.reportError(\"number of classes and regexp groups doesn't match\", {\n rule: rule,\n groupCount: matchcount - 1\n });\n rule.token = rule.token[0];\n }\n else {\n rule.tokenArray = rule.token;\n rule.token = null;\n rule.onMatch = this.$arrayTokens;\n }\n }\n else if (typeof rule.token == \"function\" && !rule.onMatch) {\n if (matchcount > 1)\n rule.onMatch = this.$applyToken;\n else\n rule.onMatch = rule.token;\n }\n if (matchcount > 1) {\n if (/\\\\\\d/.test(rule.regex)) {\n adjustedregex = rule.regex.replace(/\\\\([0-9]+)/g, function (match, digit) {\n return \"\\\\\" + (parseInt(digit, 10) + matchTotal + 1);\n });\n }\n else {\n matchcount = 1;\n adjustedregex = this.removeCapturingGroups(rule.regex);\n }\n if (!rule.splitRegex && typeof rule.token != \"string\")\n splitterRurles.push(rule); // flag will be known only at the very end\n }\n mapping[matchTotal] = i;\n matchTotal += matchcount;\n ruleRegExps.push(adjustedregex);\n if (!rule.onMatch)\n rule.onMatch = null;\n }\n if (!ruleRegExps.length) {\n mapping[0] = 0;\n ruleRegExps.push(\"$\");\n }\n splitterRurles.forEach(function (rule) {\n rule.splitRegex = this.createSplitterRegexp(rule.regex, flag);\n }, this);\n this.regExps[key] = new RegExp(\"(\" + ruleRegExps.join(\")|(\") + \")|($)\", flag);\n }\n }\n Tokenizer.prototype.$setMaxTokenCount = function (m) {\n MAX_TOKEN_COUNT = m | 0;\n };\n Tokenizer.prototype.$applyToken = function (str) {\n var values = this.splitRegex.exec(str).slice(1);\n var types = this.token.apply(this, values);\n if (typeof types === \"string\")\n return [{ type: types, value: str }];\n var tokens = [];\n for (var i = 0, l = types.length; i < l; i++) {\n if (values[i])\n tokens[tokens.length] = {\n type: types[i],\n value: values[i]\n };\n }\n return tokens;\n };\n Tokenizer.prototype.$arrayTokens = function (str) {\n if (!str)\n return [];\n var values = this.splitRegex.exec(str);\n if (!values)\n return \"text\";\n var tokens = [];\n var types = this.tokenArray;\n for (var i = 0, l = types.length; i < l; i++) {\n if (values[i + 1])\n tokens[tokens.length] = {\n type: types[i],\n value: values[i + 1]\n };\n }\n return tokens;\n };\n Tokenizer.prototype.removeCapturingGroups = function (src) {\n var r = src.replace(/\\\\.|\\[(?:\\\\.|[^\\\\\\]])*|\\(\\?[:=!<]|(\\()/g, function (x, y) { return y ? \"(?:\" : x; });\n return r;\n };\n Tokenizer.prototype.createSplitterRegexp = function (src, flag) {\n if (src.indexOf(\"(?=\") != -1) {\n var stack = 0;\n var inChClass = false;\n var lastCapture = {};\n src.replace(/(\\\\.)|(\\((?:\\?[=!])?)|(\\))|([\\[\\]])/g, function (m, esc, parenOpen, parenClose, square, index) {\n if (inChClass) {\n inChClass = square != \"]\";\n }\n else if (square) {\n inChClass = true;\n }\n else if (parenClose) {\n if (stack == lastCapture.stack) {\n lastCapture.end = index + 1;\n lastCapture.stack = -1;\n }\n stack--;\n }\n else if (parenOpen) {\n stack++;\n if (parenOpen.length != 1) {\n lastCapture.stack = stack;\n lastCapture.start = index;\n }\n }\n return m;\n });\n if (lastCapture.end != null && /^\\)*$/.test(src.substr(lastCapture.end)))\n src = src.substring(0, lastCapture.start) + src.substr(lastCapture.end);\n }\n if (src.charAt(0) != \"^\")\n src = \"^\" + src;\n if (src.charAt(src.length - 1) != \"$\")\n src += \"$\";\n return new RegExp(src, (flag || \"\").replace(\"g\", \"\"));\n };\n Tokenizer.prototype.getLineTokens = function (line, startState) {\n if (startState && typeof startState != \"string\") {\n var stack = startState.slice(0);\n startState = stack[0];\n if (startState === \"#tmp\") {\n stack.shift();\n startState = stack.shift();\n }\n }\n else\n var stack = [];\n var currentState = startState || \"start\";\n var state = this.states[currentState];\n if (!state) {\n currentState = \"start\";\n state = this.states[currentState];\n }\n var mapping = this.matchMappings[currentState];\n var re = this.regExps[currentState];\n re.lastIndex = 0;\n var match, tokens = [];\n var lastIndex = 0;\n var matchAttempts = 0;\n var token = { type: null, value: \"\" };\n while (match = re.exec(line)) {\n var type = mapping.defaultToken;\n var rule = null;\n var value = match[0];\n var index = re.lastIndex;\n if (index - value.length > lastIndex) {\n var skipped = line.substring(lastIndex, index - value.length);\n if (token.type == type) {\n token.value += skipped;\n }\n else {\n if (token.type)\n tokens.push(token);\n token = { type: type, value: skipped };\n }\n }\n for (var i = 0; i < match.length - 2; i++) {\n if (match[i + 1] === undefined)\n continue;\n rule = state[mapping[i]];\n if (rule.onMatch)\n type = rule.onMatch(value, currentState, stack, line);\n else\n type = rule.token;\n if (rule.next) {\n if (typeof rule.next == \"string\") {\n currentState = rule.next;\n }\n else {\n currentState = rule.next(currentState, stack);\n }\n state = this.states[currentState];\n if (!state) {\n this.reportError(\"state doesn't exist\", currentState);\n currentState = \"start\";\n state = this.states[currentState];\n }\n mapping = this.matchMappings[currentState];\n lastIndex = index;\n re = this.regExps[currentState];\n re.lastIndex = index;\n }\n if (rule.consumeLineEnd)\n lastIndex = index;\n break;\n }\n if (value) {\n if (typeof type === \"string\") {\n if ((!rule || rule.merge !== false) && token.type === type) {\n token.value += value;\n }\n else {\n if (token.type)\n tokens.push(token);\n token = { type: type, value: value };\n }\n }\n else if (type) {\n if (token.type)\n tokens.push(token);\n token = { type: null, value: \"\" };\n for (var i = 0; i < type.length; i++)\n tokens.push(type[i]);\n }\n }\n if (lastIndex == line.length)\n break;\n lastIndex = index;\n if (matchAttempts++ > MAX_TOKEN_COUNT) {\n if (matchAttempts > 2 * line.length) {\n this.reportError(\"infinite loop with in ace tokenizer\", {\n startState: startState,\n line: line\n });\n }\n while (lastIndex < line.length) {\n if (token.type)\n tokens.push(token);\n token = {\n value: line.substring(lastIndex, lastIndex += 500),\n type: \"overflow\"\n };\n }\n currentState = \"start\";\n stack = [];\n break;\n }\n }\n if (token.type)\n tokens.push(token);\n if (stack.length > 1) {\n if (stack[0] !== currentState)\n stack.unshift(\"#tmp\", currentState);\n }\n return {\n tokens: tokens,\n state: stack.length ? stack : currentState\n };\n };\n return Tokenizer;\n}());\nTokenizer.prototype.reportError = reportError;\nexports.Tokenizer = Tokenizer;\n\n});\n\nace.define(\"ace/mode/text_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/deep_copy\"], function(require, exports, module){\"use strict\";\nvar deepCopy = require(\"../lib/deep_copy\").deepCopy;\nvar TextHighlightRules = function () {\n this.$rules = {\n \"start\": [{\n token: \"empty_line\",\n regex: '^$'\n }, {\n defaultToken: \"text\"\n }]\n };\n};\n(function () {\n this.addRules = function (rules, prefix) {\n if (!prefix) {\n for (var key in rules)\n this.$rules[key] = rules[key];\n return;\n }\n for (var key in rules) {\n var state = rules[key];\n for (var i = 0; i < state.length; i++) {\n var rule = state[i];\n if (rule.next || rule.onMatch) {\n if (typeof rule.next == \"string\") {\n if (rule.next.indexOf(prefix) !== 0)\n rule.next = prefix + rule.next;\n }\n if (rule.nextState && rule.nextState.indexOf(prefix) !== 0)\n rule.nextState = prefix + rule.nextState;\n }\n }\n this.$rules[prefix + key] = state;\n }\n };\n this.getRules = function () {\n return this.$rules;\n };\n this.embedRules = function (HighlightRules, prefix, escapeRules, states, append) {\n var embedRules = typeof HighlightRules == \"function\"\n ? new HighlightRules().getRules()\n : HighlightRules;\n if (states) {\n for (var i = 0; i < states.length; i++)\n states[i] = prefix + states[i];\n }\n else {\n states = [];\n for (var key in embedRules)\n states.push(prefix + key);\n }\n this.addRules(embedRules, prefix);\n if (escapeRules) {\n var addRules = Array.prototype[append ? \"push\" : \"unshift\"];\n for (var i = 0; i < states.length; i++)\n addRules.apply(this.$rules[states[i]], deepCopy(escapeRules));\n }\n if (!this.$embeds)\n this.$embeds = [];\n this.$embeds.push(prefix);\n };\n this.getEmbeds = function () {\n return this.$embeds;\n };\n var pushState = function (currentState, stack) {\n if (currentState != \"start\" || stack.length)\n stack.unshift(this.nextState, currentState);\n return this.nextState;\n };\n var popState = function (currentState, stack) {\n stack.shift();\n return stack.shift() || \"start\";\n };\n this.normalizeRules = function () {\n var id = 0;\n var rules = this.$rules;\n function processState(key) {\n var state = rules[key];\n state.processed = true;\n for (var i = 0; i < state.length; i++) {\n var rule = state[i];\n var toInsert = null;\n if (Array.isArray(rule)) {\n toInsert = rule;\n rule = {};\n }\n if (!rule.regex && rule.start) {\n rule.regex = rule.start;\n if (!rule.next)\n rule.next = [];\n rule.next.push({\n defaultToken: rule.token\n }, {\n token: rule.token + \".end\",\n regex: rule.end || rule.start,\n next: \"pop\"\n });\n rule.token = rule.token + \".start\";\n rule.push = true;\n }\n var next = rule.next || rule.push;\n if (next && Array.isArray(next)) {\n var stateName = rule.stateName;\n if (!stateName) {\n stateName = rule.token;\n if (typeof stateName != \"string\")\n stateName = stateName[0] || \"\";\n if (rules[stateName])\n stateName += id++;\n }\n rules[stateName] = next;\n rule.next = stateName;\n processState(stateName);\n }\n else if (next == \"pop\") {\n rule.next = popState;\n }\n if (rule.push) {\n rule.nextState = rule.next || rule.push;\n rule.next = pushState;\n delete rule.push;\n }\n if (rule.rules) {\n for (var r in rule.rules) {\n if (rules[r]) {\n if (rules[r].push)\n rules[r].push.apply(rules[r], rule.rules[r]);\n }\n else {\n rules[r] = rule.rules[r];\n }\n }\n }\n var includeName = typeof rule == \"string\" ? rule : rule.include;\n if (includeName) {\n if (includeName === \"$self\")\n includeName = \"start\";\n if (Array.isArray(includeName))\n toInsert = includeName.map(function (x) { return rules[x]; });\n else\n toInsert = rules[includeName];\n }\n if (toInsert) {\n var args = [i, 1].concat(toInsert);\n if (rule.noEscape)\n args = args.filter(function (x) { return !x.next; });\n state.splice.apply(state, args);\n i--;\n }\n if (rule.keywordMap) {\n rule.token = this.createKeywordMapper(rule.keywordMap, rule.defaultToken || \"text\", rule.caseInsensitive);\n delete rule.defaultToken;\n }\n }\n }\n Object.keys(rules).forEach(processState, this);\n };\n this.createKeywordMapper = function (map, defaultToken, ignoreCase, splitChar) {\n var keywords = Object.create(null);\n this.$keywordList = [];\n Object.keys(map).forEach(function (className) {\n var a = map[className];\n var list = a.split(splitChar || \"|\");\n for (var i = list.length; i--;) {\n var word = list[i];\n this.$keywordList.push(word);\n if (ignoreCase)\n word = word.toLowerCase();\n keywords[word] = className;\n }\n }, this);\n map = null;\n return ignoreCase\n ? function (value) { return keywords[value.toLowerCase()] || defaultToken; }\n : function (value) { return keywords[value] || defaultToken; };\n };\n this.getKeywords = function () {\n return this.$keywords;\n };\n}).call(TextHighlightRules.prototype);\nexports.TextHighlightRules = TextHighlightRules;\n\n});\n\nace.define(\"ace/mode/behaviour\",[\"require\",\"exports\",\"module\"], function(require, exports, module){\"use strict\";\nvar Behaviour = function () {\n this.$behaviours = {};\n};\n(function () {\n this.add = function (name, action, callback) {\n switch (undefined) {\n case this.$behaviours:\n this.$behaviours = {};\n case this.$behaviours[name]:\n this.$behaviours[name] = {};\n }\n this.$behaviours[name][action] = callback;\n };\n this.addBehaviours = function (behaviours) {\n for (var key in behaviours) {\n for (var action in behaviours[key]) {\n this.add(key, action, behaviours[key][action]);\n }\n }\n };\n this.remove = function (name) {\n if (this.$behaviours && this.$behaviours[name]) {\n delete this.$behaviours[name];\n }\n };\n this.inherit = function (mode, filter) {\n if (typeof mode === \"function\") {\n var behaviours = new mode().getBehaviours(filter);\n }\n else {\n var behaviours = mode.getBehaviours(filter);\n }\n this.addBehaviours(behaviours);\n };\n this.getBehaviours = function (filter) {\n if (!filter) {\n return this.$behaviours;\n }\n else {\n var ret = {};\n for (var i = 0; i < filter.length; i++) {\n if (this.$behaviours[filter[i]]) {\n ret[filter[i]] = this.$behaviours[filter[i]];\n }\n }\n return ret;\n }\n };\n}).call(Behaviour.prototype);\nexports.Behaviour = Behaviour;\n\n});\n\nace.define(\"ace/token_iterator\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar Range = require(\"./range\").Range;\nvar TokenIterator = /** @class */ (function () {\n function TokenIterator(session, initialRow, initialColumn) {\n this.$session = session;\n this.$row = initialRow;\n this.$rowTokens = session.getTokens(initialRow);\n var token = session.getTokenAt(initialRow, initialColumn);\n this.$tokenIndex = token ? token.index : -1;\n }\n TokenIterator.prototype.stepBackward = function () {\n this.$tokenIndex -= 1;\n while (this.$tokenIndex < 0) {\n this.$row -= 1;\n if (this.$row < 0) {\n this.$row = 0;\n return null;\n }\n this.$rowTokens = this.$session.getTokens(this.$row);\n this.$tokenIndex = this.$rowTokens.length - 1;\n }\n return this.$rowTokens[this.$tokenIndex];\n };\n TokenIterator.prototype.stepForward = function () {\n this.$tokenIndex += 1;\n var rowCount;\n while (this.$tokenIndex >= this.$rowTokens.length) {\n this.$row += 1;\n if (!rowCount)\n rowCount = this.$session.getLength();\n if (this.$row >= rowCount) {\n this.$row = rowCount - 1;\n return null;\n }\n this.$rowTokens = this.$session.getTokens(this.$row);\n this.$tokenIndex = 0;\n }\n return this.$rowTokens[this.$tokenIndex];\n };\n TokenIterator.prototype.getCurrentToken = function () {\n return this.$rowTokens[this.$tokenIndex];\n };\n TokenIterator.prototype.getCurrentTokenRow = function () {\n return this.$row;\n };\n TokenIterator.prototype.getCurrentTokenColumn = function () {\n var rowTokens = this.$rowTokens;\n var tokenIndex = this.$tokenIndex;\n var column = rowTokens[tokenIndex].start;\n if (column !== undefined)\n return column;\n column = 0;\n while (tokenIndex > 0) {\n tokenIndex -= 1;\n column += rowTokens[tokenIndex].value.length;\n }\n return column;\n };\n TokenIterator.prototype.getCurrentTokenPosition = function () {\n return { row: this.$row, column: this.getCurrentTokenColumn() };\n };\n TokenIterator.prototype.getCurrentTokenRange = function () {\n var token = this.$rowTokens[this.$tokenIndex];\n var column = this.getCurrentTokenColumn();\n return new Range(this.$row, column, this.$row, column + token.value.length);\n };\n return TokenIterator;\n}());\nexports.TokenIterator = TokenIterator;\n\n});\n\nace.define(\"ace/mode/behaviour/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/behaviour\",\"ace/token_iterator\",\"ace/lib/lang\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../../lib/oop\");\nvar Behaviour = require(\"../behaviour\").Behaviour;\nvar TokenIterator = require(\"../../token_iterator\").TokenIterator;\nvar lang = require(\"../../lib/lang\");\nvar SAFE_INSERT_IN_TOKENS = [\"text\", \"paren.rparen\", \"rparen\", \"paren\", \"punctuation.operator\"];\nvar SAFE_INSERT_BEFORE_TOKENS = [\"text\", \"paren.rparen\", \"rparen\", \"paren\", \"punctuation.operator\", \"comment\"];\nvar context;\nvar contextCache = {};\nvar defaultQuotes = { '\"': '\"', \"'\": \"'\" };\nvar initContext = function (editor) {\n var id = -1;\n if (editor.multiSelect) {\n id = editor.selection.index;\n if (contextCache.rangeCount != editor.multiSelect.rangeCount)\n contextCache = { rangeCount: editor.multiSelect.rangeCount };\n }\n if (contextCache[id])\n return context = contextCache[id];\n context = contextCache[id] = {\n autoInsertedBrackets: 0,\n autoInsertedRow: -1,\n autoInsertedLineEnd: \"\",\n maybeInsertedBrackets: 0,\n maybeInsertedRow: -1,\n maybeInsertedLineStart: \"\",\n maybeInsertedLineEnd: \"\"\n };\n};\nvar getWrapped = function (selection, selected, opening, closing) {\n var rowDiff = selection.end.row - selection.start.row;\n return {\n text: opening + selected + closing,\n selection: [\n 0,\n selection.start.column + 1,\n rowDiff,\n selection.end.column + (rowDiff ? 0 : 1)\n ]\n };\n};\nvar CstyleBehaviour = function (options) {\n options = options || {};\n this.add(\"braces\", \"insertion\", function (state, action, editor, session, text) {\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n if (text == '{') {\n initContext(editor);\n var selection = editor.getSelectionRange();\n var selected = session.doc.getTextRange(selection);\n if (selected !== \"\" && selected !== \"{\" && editor.getWrapBehavioursEnabled()) {\n return getWrapped(selection, selected, '{', '}');\n }\n else if (CstyleBehaviour.isSaneInsertion(editor, session)) {\n if (/[\\]\\}\\)]/.test(line[cursor.column]) || editor.inMultiSelectMode || options.braces) {\n CstyleBehaviour.recordAutoInsert(editor, session, \"}\");\n return {\n text: '{}',\n selection: [1, 1]\n };\n }\n else {\n CstyleBehaviour.recordMaybeInsert(editor, session, \"{\");\n return {\n text: '{',\n selection: [1, 1]\n };\n }\n }\n }\n else if (text == '}') {\n initContext(editor);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n if (rightChar == '}') {\n var matching = session.$findOpeningBracket('}', { column: cursor.column + 1, row: cursor.row });\n if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) {\n CstyleBehaviour.popAutoInsertedClosing();\n return {\n text: '',\n selection: [1, 1]\n };\n }\n }\n }\n else if (text == \"\\n\" || text == \"\\r\\n\") {\n initContext(editor);\n var closing = \"\";\n if (CstyleBehaviour.isMaybeInsertedClosing(cursor, line)) {\n closing = lang.stringRepeat(\"}\", context.maybeInsertedBrackets);\n CstyleBehaviour.clearMaybeInsertedClosing();\n }\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n if (rightChar === '}') {\n var openBracePos = session.findMatchingBracket({ row: cursor.row, column: cursor.column + 1 }, '}');\n if (!openBracePos)\n return null;\n var next_indent = this.$getIndent(session.getLine(openBracePos.row));\n }\n else if (closing) {\n var next_indent = this.$getIndent(line);\n }\n else {\n CstyleBehaviour.clearMaybeInsertedClosing();\n return;\n }\n var indent = next_indent + session.getTabString();\n return {\n text: '\\n' + indent + '\\n' + next_indent + closing,\n selection: [1, indent.length, 1, indent.length]\n };\n }\n else {\n CstyleBehaviour.clearMaybeInsertedClosing();\n }\n });\n this.add(\"braces\", \"deletion\", function (state, action, editor, session, range) {\n var selected = session.doc.getTextRange(range);\n if (!range.isMultiLine() && selected == '{') {\n initContext(editor);\n var line = session.doc.getLine(range.start.row);\n var rightChar = line.substring(range.end.column, range.end.column + 1);\n if (rightChar == '}') {\n range.end.column++;\n return range;\n }\n else {\n context.maybeInsertedBrackets--;\n }\n }\n });\n this.add(\"parens\", \"insertion\", function (state, action, editor, session, text) {\n if (text == '(') {\n initContext(editor);\n var selection = editor.getSelectionRange();\n var selected = session.doc.getTextRange(selection);\n if (selected !== \"\" && editor.getWrapBehavioursEnabled()) {\n return getWrapped(selection, selected, '(', ')');\n }\n else if (CstyleBehaviour.isSaneInsertion(editor, session)) {\n CstyleBehaviour.recordAutoInsert(editor, session, \")\");\n return {\n text: '()',\n selection: [1, 1]\n };\n }\n }\n else if (text == ')') {\n initContext(editor);\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n if (rightChar == ')') {\n var matching = session.$findOpeningBracket(')', { column: cursor.column + 1, row: cursor.row });\n if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) {\n CstyleBehaviour.popAutoInsertedClosing();\n return {\n text: '',\n selection: [1, 1]\n };\n }\n }\n }\n });\n this.add(\"parens\", \"deletion\", function (state, action, editor, session, range) {\n var selected = session.doc.getTextRange(range);\n if (!range.isMultiLine() && selected == '(') {\n initContext(editor);\n var line = session.doc.getLine(range.start.row);\n var rightChar = line.substring(range.start.column + 1, range.start.column + 2);\n if (rightChar == ')') {\n range.end.column++;\n return range;\n }\n }\n });\n this.add(\"brackets\", \"insertion\", function (state, action, editor, session, text) {\n if (text == '[') {\n initContext(editor);\n var selection = editor.getSelectionRange();\n var selected = session.doc.getTextRange(selection);\n if (selected !== \"\" && editor.getWrapBehavioursEnabled()) {\n return getWrapped(selection, selected, '[', ']');\n }\n else if (CstyleBehaviour.isSaneInsertion(editor, session)) {\n CstyleBehaviour.recordAutoInsert(editor, session, \"]\");\n return {\n text: '[]',\n selection: [1, 1]\n };\n }\n }\n else if (text == ']') {\n initContext(editor);\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n if (rightChar == ']') {\n var matching = session.$findOpeningBracket(']', { column: cursor.column + 1, row: cursor.row });\n if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) {\n CstyleBehaviour.popAutoInsertedClosing();\n return {\n text: '',\n selection: [1, 1]\n };\n }\n }\n }\n });\n this.add(\"brackets\", \"deletion\", function (state, action, editor, session, range) {\n var selected = session.doc.getTextRange(range);\n if (!range.isMultiLine() && selected == '[') {\n initContext(editor);\n var line = session.doc.getLine(range.start.row);\n var rightChar = line.substring(range.start.column + 1, range.start.column + 2);\n if (rightChar == ']') {\n range.end.column++;\n return range;\n }\n }\n });\n this.add(\"string_dquotes\", \"insertion\", function (state, action, editor, session, text) {\n var quotes = session.$mode.$quotes || defaultQuotes;\n if (text.length == 1 && quotes[text]) {\n if (this.lineCommentStart && this.lineCommentStart.indexOf(text) != -1)\n return;\n initContext(editor);\n var quote = text;\n var selection = editor.getSelectionRange();\n var selected = session.doc.getTextRange(selection);\n if (selected !== \"\" && (selected.length != 1 || !quotes[selected]) && editor.getWrapBehavioursEnabled()) {\n return getWrapped(selection, selected, quote, quote);\n }\n else if (!selected) {\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n var leftChar = line.substring(cursor.column - 1, cursor.column);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n var token = session.getTokenAt(cursor.row, cursor.column);\n var rightToken = session.getTokenAt(cursor.row, cursor.column + 1);\n if (leftChar == \"\\\\\" && token && /escape/.test(token.type))\n return null;\n var stringBefore = token && /string|escape/.test(token.type);\n var stringAfter = !rightToken || /string|escape/.test(rightToken.type);\n var pair;\n if (rightChar == quote) {\n pair = stringBefore !== stringAfter;\n if (pair && /string\\.end/.test(rightToken.type))\n pair = false;\n }\n else {\n if (stringBefore && !stringAfter)\n return null; // wrap string with different quote\n if (stringBefore && stringAfter)\n return null; // do not pair quotes inside strings\n var wordRe = session.$mode.tokenRe;\n wordRe.lastIndex = 0;\n var isWordBefore = wordRe.test(leftChar);\n wordRe.lastIndex = 0;\n var isWordAfter = wordRe.test(rightChar);\n var pairQuotesAfter = session.$mode.$pairQuotesAfter;\n var shouldPairQuotes = pairQuotesAfter && pairQuotesAfter[quote] && pairQuotesAfter[quote].test(leftChar);\n if ((!shouldPairQuotes && isWordBefore) || isWordAfter)\n return null; // before or after alphanumeric\n if (rightChar && !/[\\s;,.})\\]\\\\]/.test(rightChar))\n return null; // there is rightChar and it isn't closing\n var charBefore = line[cursor.column - 2];\n if (leftChar == quote && (charBefore == quote || wordRe.test(charBefore)))\n return null;\n pair = true;\n }\n return {\n text: pair ? quote + quote : \"\",\n selection: [1, 1]\n };\n }\n }\n });\n this.add(\"string_dquotes\", \"deletion\", function (state, action, editor, session, range) {\n var quotes = session.$mode.$quotes || defaultQuotes;\n var selected = session.doc.getTextRange(range);\n if (!range.isMultiLine() && quotes.hasOwnProperty(selected)) {\n initContext(editor);\n var line = session.doc.getLine(range.start.row);\n var rightChar = line.substring(range.start.column + 1, range.start.column + 2);\n if (rightChar == selected) {\n range.end.column++;\n return range;\n }\n }\n });\n if (options.closeDocComment !== false) {\n this.add(\"doc comment end\", \"insertion\", function (state, action, editor, session, text) {\n if (state === \"doc-start\" && (text === \"\\n\" || text === \"\\r\\n\") && editor.selection.isEmpty()) {\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n var nextLine = session.doc.getLine(cursor.row + 1);\n var indent = this.$getIndent(line);\n if (/\\s*\\*/.test(nextLine)) {\n if (/^\\s*\\*/.test(line)) {\n return {\n text: text + indent + \"* \",\n selection: [1, 3 + indent.length, 1, 3 + indent.length]\n };\n }\n else {\n return {\n text: text + indent + \" * \",\n selection: [1, 3 + indent.length, 1, 3 + indent.length]\n };\n }\n }\n if (/\\/\\*\\*/.test(line.substring(0, cursor.column))) {\n return {\n text: text + indent + \" * \" + text + \" \" + indent + \"*/\",\n selection: [1, 4 + indent.length, 1, 4 + indent.length]\n };\n }\n }\n });\n }\n};\nCstyleBehaviour.isSaneInsertion = function (editor, session) {\n var cursor = editor.getCursorPosition();\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n if (!this.$matchTokenType(iterator.getCurrentToken() || \"text\", SAFE_INSERT_IN_TOKENS)) {\n if (/[)}\\]]/.test(editor.session.getLine(cursor.row)[cursor.column]))\n return true;\n var iterator2 = new TokenIterator(session, cursor.row, cursor.column + 1);\n if (!this.$matchTokenType(iterator2.getCurrentToken() || \"text\", SAFE_INSERT_IN_TOKENS))\n return false;\n }\n iterator.stepForward();\n return iterator.getCurrentTokenRow() !== cursor.row ||\n this.$matchTokenType(iterator.getCurrentToken() || \"text\", SAFE_INSERT_BEFORE_TOKENS);\n};\nCstyleBehaviour.$matchTokenType = function (token, types) {\n return types.indexOf(token.type || token) > -1;\n};\nCstyleBehaviour.recordAutoInsert = function (editor, session, bracket) {\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n if (!this.isAutoInsertedClosing(cursor, line, context.autoInsertedLineEnd[0]))\n context.autoInsertedBrackets = 0;\n context.autoInsertedRow = cursor.row;\n context.autoInsertedLineEnd = bracket + line.substr(cursor.column);\n context.autoInsertedBrackets++;\n};\nCstyleBehaviour.recordMaybeInsert = function (editor, session, bracket) {\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n if (!this.isMaybeInsertedClosing(cursor, line))\n context.maybeInsertedBrackets = 0;\n context.maybeInsertedRow = cursor.row;\n context.maybeInsertedLineStart = line.substr(0, cursor.column) + bracket;\n context.maybeInsertedLineEnd = line.substr(cursor.column);\n context.maybeInsertedBrackets++;\n};\nCstyleBehaviour.isAutoInsertedClosing = function (cursor, line, bracket) {\n return context.autoInsertedBrackets > 0 &&\n cursor.row === context.autoInsertedRow &&\n bracket === context.autoInsertedLineEnd[0] &&\n line.substr(cursor.column) === context.autoInsertedLineEnd;\n};\nCstyleBehaviour.isMaybeInsertedClosing = function (cursor, line) {\n return context.maybeInsertedBrackets > 0 &&\n cursor.row === context.maybeInsertedRow &&\n line.substr(cursor.column) === context.maybeInsertedLineEnd &&\n line.substr(0, cursor.column) == context.maybeInsertedLineStart;\n};\nCstyleBehaviour.popAutoInsertedClosing = function () {\n context.autoInsertedLineEnd = context.autoInsertedLineEnd.substr(1);\n context.autoInsertedBrackets--;\n};\nCstyleBehaviour.clearMaybeInsertedClosing = function () {\n if (context) {\n context.maybeInsertedBrackets = 0;\n context.maybeInsertedRow = -1;\n }\n};\noop.inherits(CstyleBehaviour, Behaviour);\nexports.CstyleBehaviour = CstyleBehaviour;\n\n});\n\nace.define(\"ace/unicode\",[\"require\",\"exports\",\"module\"], function(require, exports, module){\"use strict\";\nvar wordChars = [48, 9, 8, 25, 5, 0, 2, 25, 48, 0, 11, 0, 5, 0, 6, 22, 2, 30, 2, 457, 5, 11, 15, 4, 8, 0, 2, 0, 18, 116, 2, 1, 3, 3, 9, 0, 2, 2, 2, 0, 2, 19, 2, 82, 2, 138, 2, 4, 3, 155, 12, 37, 3, 0, 8, 38, 10, 44, 2, 0, 2, 1, 2, 1, 2, 0, 9, 26, 6, 2, 30, 10, 7, 61, 2, 9, 5, 101, 2, 7, 3, 9, 2, 18, 3, 0, 17, 58, 3, 100, 15, 53, 5, 0, 6, 45, 211, 57, 3, 18, 2, 5, 3, 11, 3, 9, 2, 1, 7, 6, 2, 2, 2, 7, 3, 1, 3, 21, 2, 6, 2, 0, 4, 3, 3, 8, 3, 1, 3, 3, 9, 0, 5, 1, 2, 4, 3, 11, 16, 2, 2, 5, 5, 1, 3, 21, 2, 6, 2, 1, 2, 1, 2, 1, 3, 0, 2, 4, 5, 1, 3, 2, 4, 0, 8, 3, 2, 0, 8, 15, 12, 2, 2, 8, 2, 2, 2, 21, 2, 6, 2, 1, 2, 4, 3, 9, 2, 2, 2, 2, 3, 0, 16, 3, 3, 9, 18, 2, 2, 7, 3, 1, 3, 21, 2, 6, 2, 1, 2, 4, 3, 8, 3, 1, 3, 2, 9, 1, 5, 1, 2, 4, 3, 9, 2, 0, 17, 1, 2, 5, 4, 2, 2, 3, 4, 1, 2, 0, 2, 1, 4, 1, 4, 2, 4, 11, 5, 4, 4, 2, 2, 3, 3, 0, 7, 0, 15, 9, 18, 2, 2, 7, 2, 2, 2, 22, 2, 9, 2, 4, 4, 7, 2, 2, 2, 3, 8, 1, 2, 1, 7, 3, 3, 9, 19, 1, 2, 7, 2, 2, 2, 22, 2, 9, 2, 4, 3, 8, 2, 2, 2, 3, 8, 1, 8, 0, 2, 3, 3, 9, 19, 1, 2, 7, 2, 2, 2, 22, 2, 15, 4, 7, 2, 2, 2, 3, 10, 0, 9, 3, 3, 9, 11, 5, 3, 1, 2, 17, 4, 23, 2, 8, 2, 0, 3, 6, 4, 0, 5, 5, 2, 0, 2, 7, 19, 1, 14, 57, 6, 14, 2, 9, 40, 1, 2, 0, 3, 1, 2, 0, 3, 0, 7, 3, 2, 6, 2, 2, 2, 0, 2, 0, 3, 1, 2, 12, 2, 2, 3, 4, 2, 0, 2, 5, 3, 9, 3, 1, 35, 0, 24, 1, 7, 9, 12, 0, 2, 0, 2, 0, 5, 9, 2, 35, 5, 19, 2, 5, 5, 7, 2, 35, 10, 0, 58, 73, 7, 77, 3, 37, 11, 42, 2, 0, 4, 328, 2, 3, 3, 6, 2, 0, 2, 3, 3, 40, 2, 3, 3, 32, 2, 3, 3, 6, 2, 0, 2, 3, 3, 14, 2, 56, 2, 3, 3, 66, 5, 0, 33, 15, 17, 84, 13, 619, 3, 16, 2, 25, 6, 74, 22, 12, 2, 6, 12, 20, 12, 19, 13, 12, 2, 2, 2, 1, 13, 51, 3, 29, 4, 0, 5, 1, 3, 9, 34, 2, 3, 9, 7, 87, 9, 42, 6, 69, 11, 28, 4, 11, 5, 11, 11, 39, 3, 4, 12, 43, 5, 25, 7, 10, 38, 27, 5, 62, 2, 28, 3, 10, 7, 9, 14, 0, 89, 75, 5, 9, 18, 8, 13, 42, 4, 11, 71, 55, 9, 9, 4, 48, 83, 2, 2, 30, 14, 230, 23, 280, 3, 5, 3, 37, 3, 5, 3, 7, 2, 0, 2, 0, 2, 0, 2, 30, 3, 52, 2, 6, 2, 0, 4, 2, 2, 6, 4, 3, 3, 5, 5, 12, 6, 2, 2, 6, 67, 1, 20, 0, 29, 0, 14, 0, 17, 4, 60, 12, 5, 0, 4, 11, 18, 0, 5, 0, 3, 9, 2, 0, 4, 4, 7, 0, 2, 0, 2, 0, 2, 3, 2, 10, 3, 3, 6, 4, 5, 0, 53, 1, 2684, 46, 2, 46, 2, 132, 7, 6, 15, 37, 11, 53, 10, 0, 17, 22, 10, 6, 2, 6, 2, 6, 2, 6, 2, 6, 2, 6, 2, 6, 2, 6, 2, 31, 48, 0, 470, 1, 36, 5, 2, 4, 6, 1, 5, 85, 3, 1, 3, 2, 2, 89, 2, 3, 6, 40, 4, 93, 18, 23, 57, 15, 513, 6581, 75, 20939, 53, 1164, 68, 45, 3, 268, 4, 27, 21, 31, 3, 13, 13, 1, 2, 24, 9, 69, 11, 1, 38, 8, 3, 102, 3, 1, 111, 44, 25, 51, 13, 68, 12, 9, 7, 23, 4, 0, 5, 45, 3, 35, 13, 28, 4, 64, 15, 10, 39, 54, 10, 13, 3, 9, 7, 22, 4, 1, 5, 66, 25, 2, 227, 42, 2, 1, 3, 9, 7, 11171, 13, 22, 5, 48, 8453, 301, 3, 61, 3, 105, 39, 6, 13, 4, 6, 11, 2, 12, 2, 4, 2, 0, 2, 1, 2, 1, 2, 107, 34, 362, 19, 63, 3, 53, 41, 11, 5, 15, 17, 6, 13, 1, 25, 2, 33, 4, 2, 134, 20, 9, 8, 25, 5, 0, 2, 25, 12, 88, 4, 5, 3, 5, 3, 5, 3, 2];\nvar code = 0;\nvar str = [];\nfor (var i = 0; i < wordChars.length; i += 2) {\n str.push(code += wordChars[i]);\n if (wordChars[i + 1])\n str.push(45, code += wordChars[i + 1]);\n}\nexports.wordChars = String.fromCharCode.apply(null, str);\n\n});\n\nace.define(\"ace/mode/text\",[\"require\",\"exports\",\"module\",\"ace/config\",\"ace/tokenizer\",\"ace/mode/text_highlight_rules\",\"ace/mode/behaviour/cstyle\",\"ace/unicode\",\"ace/lib/lang\",\"ace/token_iterator\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar config = require(\"../config\");\nvar Tokenizer = require(\"../tokenizer\").Tokenizer;\nvar TextHighlightRules = require(\"./text_highlight_rules\").TextHighlightRules;\nvar CstyleBehaviour = require(\"./behaviour/cstyle\").CstyleBehaviour;\nvar unicode = require(\"../unicode\");\nvar lang = require(\"../lib/lang\");\nvar TokenIterator = require(\"../token_iterator\").TokenIterator;\nvar Range = require(\"../range\").Range;\nvar Mode = function () {\n this.HighlightRules = TextHighlightRules;\n};\n(function () {\n this.$defaultBehaviour = new CstyleBehaviour();\n this.tokenRe = new RegExp(\"^[\" + unicode.wordChars + \"\\\\$_]+\", \"g\");\n this.nonTokenRe = new RegExp(\"^(?:[^\" + unicode.wordChars + \"\\\\$_]|\\\\s])+\", \"g\");\n this.getTokenizer = function () {\n if (!this.$tokenizer) {\n this.$highlightRules = this.$highlightRules || new this.HighlightRules(this.$highlightRuleConfig);\n this.$tokenizer = new Tokenizer(this.$highlightRules.getRules());\n }\n return this.$tokenizer;\n };\n this.lineCommentStart = \"\";\n this.blockComment = \"\";\n this.toggleCommentLines = function (state, session, startRow, endRow) {\n var doc = session.doc;\n var ignoreBlankLines = true;\n var shouldRemove = true;\n var minIndent = Infinity;\n var tabSize = session.getTabSize();\n var insertAtTabStop = false;\n if (!this.lineCommentStart) {\n if (!this.blockComment)\n return false;\n var lineCommentStart = this.blockComment.start;\n var lineCommentEnd = this.blockComment.end;\n var regexpStart = new RegExp(\"^(\\\\s*)(?:\" + lang.escapeRegExp(lineCommentStart) + \")\");\n var regexpEnd = new RegExp(\"(?:\" + lang.escapeRegExp(lineCommentEnd) + \")\\\\s*$\");\n var comment = function (line, i) {\n if (testRemove(line, i))\n return;\n if (!ignoreBlankLines || /\\S/.test(line)) {\n doc.insertInLine({ row: i, column: line.length }, lineCommentEnd);\n doc.insertInLine({ row: i, column: minIndent }, lineCommentStart);\n }\n };\n var uncomment = function (line, i) {\n var m;\n if (m = line.match(regexpEnd))\n doc.removeInLine(i, line.length - m[0].length, line.length);\n if (m = line.match(regexpStart))\n doc.removeInLine(i, m[1].length, m[0].length);\n };\n var testRemove = function (line, row) {\n if (regexpStart.test(line))\n return true;\n var tokens = session.getTokens(row);\n for (var i = 0; i < tokens.length; i++) {\n if (tokens[i].type === \"comment\")\n return true;\n }\n };\n }\n else {\n if (Array.isArray(this.lineCommentStart)) {\n var regexpStart = this.lineCommentStart.map(lang.escapeRegExp).join(\"|\");\n var lineCommentStart = this.lineCommentStart[0];\n }\n else {\n var regexpStart = lang.escapeRegExp(this.lineCommentStart);\n var lineCommentStart = this.lineCommentStart;\n }\n regexpStart = new RegExp(\"^(\\\\s*)(?:\" + regexpStart + \") ?\");\n insertAtTabStop = session.getUseSoftTabs();\n var uncomment = function (line, i) {\n var m = line.match(regexpStart);\n if (!m)\n return;\n var start = m[1].length, end = m[0].length;\n if (!shouldInsertSpace(line, start, end) && m[0][end - 1] == \" \")\n end--;\n doc.removeInLine(i, start, end);\n };\n var commentWithSpace = lineCommentStart + \" \";\n var comment = function (line, i) {\n if (!ignoreBlankLines || /\\S/.test(line)) {\n if (shouldInsertSpace(line, minIndent, minIndent))\n doc.insertInLine({ row: i, column: minIndent }, commentWithSpace);\n else\n doc.insertInLine({ row: i, column: minIndent }, lineCommentStart);\n }\n };\n var testRemove = function (line, i) {\n return regexpStart.test(line);\n };\n var shouldInsertSpace = function (line, before, after) {\n var spaces = 0;\n while (before-- && line.charAt(before) == \" \")\n spaces++;\n if (spaces % tabSize != 0)\n return false;\n var spaces = 0;\n while (line.charAt(after++) == \" \")\n spaces++;\n if (tabSize > 2)\n return spaces % tabSize != tabSize - 1;\n else\n return spaces % tabSize == 0;\n };\n }\n function iter(fun) {\n for (var i = startRow; i <= endRow; i++)\n fun(doc.getLine(i), i);\n }\n var minEmptyLength = Infinity;\n iter(function (line, i) {\n var indent = line.search(/\\S/);\n if (indent !== -1) {\n if (indent < minIndent)\n minIndent = indent;\n if (shouldRemove && !testRemove(line, i))\n shouldRemove = false;\n }\n else if (minEmptyLength > line.length) {\n minEmptyLength = line.length;\n }\n });\n if (minIndent == Infinity) {\n minIndent = minEmptyLength;\n ignoreBlankLines = false;\n shouldRemove = false;\n }\n if (insertAtTabStop && minIndent % tabSize != 0)\n minIndent = Math.floor(minIndent / tabSize) * tabSize;\n iter(shouldRemove ? uncomment : comment);\n };\n this.toggleBlockComment = function (state, session, range, cursor) {\n var comment = this.blockComment;\n if (!comment)\n return;\n if (!comment.start && comment[0])\n comment = comment[0];\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n var token = iterator.getCurrentToken();\n var sel = session.selection;\n var initialRange = session.selection.toOrientedRange();\n var startRow, colDiff;\n if (token && /comment/.test(token.type)) {\n var startRange, endRange;\n while (token && /comment/.test(token.type)) {\n var i = token.value.indexOf(comment.start);\n if (i != -1) {\n var row = iterator.getCurrentTokenRow();\n var column = iterator.getCurrentTokenColumn() + i;\n startRange = new Range(row, column, row, column + comment.start.length);\n break;\n }\n token = iterator.stepBackward();\n }\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n var token = iterator.getCurrentToken();\n while (token && /comment/.test(token.type)) {\n var i = token.value.indexOf(comment.end);\n if (i != -1) {\n var row = iterator.getCurrentTokenRow();\n var column = iterator.getCurrentTokenColumn() + i;\n endRange = new Range(row, column, row, column + comment.end.length);\n break;\n }\n token = iterator.stepForward();\n }\n if (endRange)\n session.remove(endRange);\n if (startRange) {\n session.remove(startRange);\n startRow = startRange.start.row;\n colDiff = -comment.start.length;\n }\n }\n else {\n colDiff = comment.start.length;\n startRow = range.start.row;\n session.insert(range.end, comment.end);\n session.insert(range.start, comment.start);\n }\n if (initialRange.start.row == startRow)\n initialRange.start.column += colDiff;\n if (initialRange.end.row == startRow)\n initialRange.end.column += colDiff;\n session.selection.fromOrientedRange(initialRange);\n };\n this.getNextLineIndent = function (state, line, tab) {\n return this.$getIndent(line);\n };\n this.checkOutdent = function (state, line, input) {\n return false;\n };\n this.autoOutdent = function (state, doc, row) {\n };\n this.$getIndent = function (line) {\n return line.match(/^\\s*/)[0];\n };\n this.createWorker = function (session) {\n return null;\n };\n this.createModeDelegates = function (mapping) {\n this.$embeds = [];\n this.$modes = {};\n for (var i in mapping) {\n if (mapping[i]) {\n var Mode = mapping[i];\n var id = Mode.prototype.$id;\n var mode = config.$modes[id];\n if (!mode)\n config.$modes[id] = mode = new Mode();\n if (!config.$modes[i])\n config.$modes[i] = mode;\n this.$embeds.push(i);\n this.$modes[i] = mode;\n }\n }\n var delegations = [\"toggleBlockComment\", \"toggleCommentLines\", \"getNextLineIndent\",\n \"checkOutdent\", \"autoOutdent\", \"transformAction\", \"getCompletions\"];\n for (var i = 0; i < delegations.length; i++) {\n (function (scope) {\n var functionName = delegations[i];\n var defaultHandler = scope[functionName];\n scope[delegations[i]] = function () {\n return this.$delegator(functionName, arguments, defaultHandler);\n };\n }(this));\n }\n };\n this.$delegator = function (method, args, defaultHandler) {\n var state = args[0] || \"start\";\n if (typeof state != \"string\") {\n if (Array.isArray(state[2])) {\n var language = state[2][state[2].length - 1];\n var mode = this.$modes[language];\n if (mode)\n return mode[method].apply(mode, [state[1]].concat([].slice.call(args, 1)));\n }\n state = state[0] || \"start\";\n }\n for (var i = 0; i < this.$embeds.length; i++) {\n if (!this.$modes[this.$embeds[i]])\n continue;\n var split = state.split(this.$embeds[i]);\n if (!split[0] && split[1]) {\n args[0] = split[1];\n var mode = this.$modes[this.$embeds[i]];\n return mode[method].apply(mode, args);\n }\n }\n var ret = defaultHandler.apply(this, args);\n return defaultHandler ? ret : undefined;\n };\n this.transformAction = function (state, action, editor, session, param) {\n if (this.$behaviour) {\n var behaviours = this.$behaviour.getBehaviours();\n for (var key in behaviours) {\n if (behaviours[key][action]) {\n var ret = behaviours[key][action].apply(this, arguments);\n if (ret) {\n return ret;\n }\n }\n }\n }\n };\n this.getKeywords = function (append) {\n if (!this.completionKeywords) {\n var rules = this.$tokenizer.rules;\n var completionKeywords = [];\n for (var rule in rules) {\n var ruleItr = rules[rule];\n for (var r = 0, l = ruleItr.length; r < l; r++) {\n if (typeof ruleItr[r].token === \"string\") {\n if (/keyword|support|storage/.test(ruleItr[r].token))\n completionKeywords.push(ruleItr[r].regex);\n }\n else if (typeof ruleItr[r].token === \"object\") {\n for (var a = 0, aLength = ruleItr[r].token.length; a < aLength; a++) {\n if (/keyword|support|storage/.test(ruleItr[r].token[a])) {\n var rule = ruleItr[r].regex.match(/\\(.+?\\)/g)[a];\n completionKeywords.push(rule.substr(1, rule.length - 2));\n }\n }\n }\n }\n }\n this.completionKeywords = completionKeywords;\n }\n if (!append)\n return this.$keywordList;\n return completionKeywords.concat(this.$keywordList || []);\n };\n this.$createKeywordList = function () {\n if (!this.$highlightRules)\n this.getTokenizer();\n return this.$keywordList = this.$highlightRules.$keywordList || [];\n };\n this.getCompletions = function (state, session, pos, prefix) {\n var keywords = this.$keywordList || this.$createKeywordList();\n return keywords.map(function (word) {\n return {\n name: word,\n value: word,\n score: 0,\n meta: \"keyword\"\n };\n });\n };\n this.$id = \"ace/mode/text\";\n}).call(Mode.prototype);\nexports.Mode = Mode;\n\n});\n\nace.define(\"ace/apply_delta\",[\"require\",\"exports\",\"module\"], function(require, exports, module){\"use strict\";\nfunction throwDeltaError(delta, errorText) {\n console.log(\"Invalid Delta:\", delta);\n throw \"Invalid Delta: \" + errorText;\n}\nfunction positionInDocument(docLines, position) {\n return position.row >= 0 && position.row < docLines.length &&\n position.column >= 0 && position.column <= docLines[position.row].length;\n}\nfunction validateDelta(docLines, delta) {\n if (delta.action != \"insert\" && delta.action != \"remove\")\n throwDeltaError(delta, \"delta.action must be 'insert' or 'remove'\");\n if (!(delta.lines instanceof Array))\n throwDeltaError(delta, \"delta.lines must be an Array\");\n if (!delta.start || !delta.end)\n throwDeltaError(delta, \"delta.start/end must be an present\");\n var start = delta.start;\n if (!positionInDocument(docLines, delta.start))\n throwDeltaError(delta, \"delta.start must be contained in document\");\n var end = delta.end;\n if (delta.action == \"remove\" && !positionInDocument(docLines, end))\n throwDeltaError(delta, \"delta.end must contained in document for 'remove' actions\");\n var numRangeRows = end.row - start.row;\n var numRangeLastLineChars = (end.column - (numRangeRows == 0 ? start.column : 0));\n if (numRangeRows != delta.lines.length - 1 || delta.lines[numRangeRows].length != numRangeLastLineChars)\n throwDeltaError(delta, \"delta.range must match delta lines\");\n}\nexports.applyDelta = function (docLines, delta, doNotValidate) {\n var row = delta.start.row;\n var startColumn = delta.start.column;\n var line = docLines[row] || \"\";\n switch (delta.action) {\n case \"insert\":\n var lines = delta.lines;\n if (lines.length === 1) {\n docLines[row] = line.substring(0, startColumn) + delta.lines[0] + line.substring(startColumn);\n }\n else {\n var args = [row, 1].concat(delta.lines);\n docLines.splice.apply(docLines, args);\n docLines[row] = line.substring(0, startColumn) + docLines[row];\n docLines[row + delta.lines.length - 1] += line.substring(startColumn);\n }\n break;\n case \"remove\":\n var endColumn = delta.end.column;\n var endRow = delta.end.row;\n if (row === endRow) {\n docLines[row] = line.substring(0, startColumn) + line.substring(endColumn);\n }\n else {\n docLines.splice(row, endRow - row + 1, line.substring(0, startColumn) + docLines[endRow].substring(endColumn));\n }\n break;\n }\n};\n\n});\n\nace.define(\"ace/anchor\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/event_emitter\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"./lib/oop\");\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar Anchor = /** @class */ (function () {\n function Anchor(doc, row, column) {\n this.$onChange = this.onChange.bind(this);\n this.attach(doc);\n if (typeof column == \"undefined\")\n this.setPosition(row.row, row.column);\n else\n this.setPosition(row, column);\n }\n Anchor.prototype.getPosition = function () {\n return this.$clipPositionToDocument(this.row, this.column);\n };\n Anchor.prototype.getDocument = function () {\n return this.document;\n };\n Anchor.prototype.onChange = function (delta) {\n if (delta.start.row == delta.end.row && delta.start.row != this.row)\n return;\n if (delta.start.row > this.row)\n return;\n var point = $getTransformedPoint(delta, { row: this.row, column: this.column }, this.$insertRight);\n this.setPosition(point.row, point.column, true);\n };\n Anchor.prototype.setPosition = function (row, column, noClip) {\n var pos;\n if (noClip) {\n pos = {\n row: row,\n column: column\n };\n }\n else {\n pos = this.$clipPositionToDocument(row, column);\n }\n if (this.row == pos.row && this.column == pos.column)\n return;\n var old = {\n row: this.row,\n column: this.column\n };\n this.row = pos.row;\n this.column = pos.column;\n this._signal(\"change\", {\n old: old,\n value: pos\n });\n };\n Anchor.prototype.detach = function () {\n this.document.off(\"change\", this.$onChange);\n };\n Anchor.prototype.attach = function (doc) {\n this.document = doc || this.document;\n this.document.on(\"change\", this.$onChange);\n };\n Anchor.prototype.$clipPositionToDocument = function (row, column) {\n var pos = {};\n if (row >= this.document.getLength()) {\n pos.row = Math.max(0, this.document.getLength() - 1);\n pos.column = this.document.getLine(pos.row).length;\n }\n else if (row < 0) {\n pos.row = 0;\n pos.column = 0;\n }\n else {\n pos.row = row;\n pos.column = Math.min(this.document.getLine(pos.row).length, Math.max(0, column));\n }\n if (column < 0)\n pos.column = 0;\n return pos;\n };\n return Anchor;\n}());\nAnchor.prototype.$insertRight = false;\noop.implement(Anchor.prototype, EventEmitter);\nfunction $pointsInOrder(point1, point2, equalPointsInOrder) {\n var bColIsAfter = equalPointsInOrder ? point1.column <= point2.column : point1.column < point2.column;\n return (point1.row < point2.row) || (point1.row == point2.row && bColIsAfter);\n}\nfunction $getTransformedPoint(delta, point, moveIfEqual) {\n var deltaIsInsert = delta.action == \"insert\";\n var deltaRowShift = (deltaIsInsert ? 1 : -1) * (delta.end.row - delta.start.row);\n var deltaColShift = (deltaIsInsert ? 1 : -1) * (delta.end.column - delta.start.column);\n var deltaStart = delta.start;\n var deltaEnd = deltaIsInsert ? deltaStart : delta.end; // Collapse insert range.\n if ($pointsInOrder(point, deltaStart, moveIfEqual)) {\n return {\n row: point.row,\n column: point.column\n };\n }\n if ($pointsInOrder(deltaEnd, point, !moveIfEqual)) {\n return {\n row: point.row + deltaRowShift,\n column: point.column + (point.row == deltaEnd.row ? deltaColShift : 0)\n };\n }\n return {\n row: deltaStart.row,\n column: deltaStart.column\n };\n}\nexports.Anchor = Anchor;\n\n});\n\nace.define(\"ace/document\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/apply_delta\",\"ace/lib/event_emitter\",\"ace/range\",\"ace/anchor\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"./lib/oop\");\nvar applyDelta = require(\"./apply_delta\").applyDelta;\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar Range = require(\"./range\").Range;\nvar Anchor = require(\"./anchor\").Anchor;\nvar Document = /** @class */ (function () {\n function Document(textOrLines) {\n this.$lines = [\"\"];\n if (textOrLines.length === 0) {\n this.$lines = [\"\"];\n }\n else if (Array.isArray(textOrLines)) {\n this.insertMergedLines({ row: 0, column: 0 }, textOrLines);\n }\n else {\n this.insert({ row: 0, column: 0 }, textOrLines);\n }\n }\n Document.prototype.setValue = function (text) {\n var len = this.getLength() - 1;\n this.remove(new Range(0, 0, len, this.getLine(len).length));\n this.insert({ row: 0, column: 0 }, text || \"\");\n };\n Document.prototype.getValue = function () {\n return this.getAllLines().join(this.getNewLineCharacter());\n };\n Document.prototype.createAnchor = function (row, column) {\n return new Anchor(this, row, column);\n };\n Document.prototype.$detectNewLine = function (text) {\n var match = text.match(/^.*?(\\r\\n|\\r|\\n)/m);\n this.$autoNewLine = match ? match[1] : \"\\n\";\n this._signal(\"changeNewLineMode\");\n };\n Document.prototype.getNewLineCharacter = function () {\n switch (this.$newLineMode) {\n case \"windows\":\n return \"\\r\\n\";\n case \"unix\":\n return \"\\n\";\n default:\n return this.$autoNewLine || \"\\n\";\n }\n };\n Document.prototype.setNewLineMode = function (newLineMode) {\n if (this.$newLineMode === newLineMode)\n return;\n this.$newLineMode = newLineMode;\n this._signal(\"changeNewLineMode\");\n };\n Document.prototype.getNewLineMode = function () {\n return this.$newLineMode;\n };\n Document.prototype.isNewLine = function (text) {\n return (text == \"\\r\\n\" || text == \"\\r\" || text == \"\\n\");\n };\n Document.prototype.getLine = function (row) {\n return this.$lines[row] || \"\";\n };\n Document.prototype.getLines = function (firstRow, lastRow) {\n return this.$lines.slice(firstRow, lastRow + 1);\n };\n Document.prototype.getAllLines = function () {\n return this.getLines(0, this.getLength());\n };\n Document.prototype.getLength = function () {\n return this.$lines.length;\n };\n Document.prototype.getTextRange = function (range) {\n return this.getLinesForRange(range).join(this.getNewLineCharacter());\n };\n Document.prototype.getLinesForRange = function (range) {\n var lines;\n if (range.start.row === range.end.row) {\n lines = [this.getLine(range.start.row).substring(range.start.column, range.end.column)];\n }\n else {\n lines = this.getLines(range.start.row, range.end.row);\n lines[0] = (lines[0] || \"\").substring(range.start.column);\n var l = lines.length - 1;\n if (range.end.row - range.start.row == l)\n lines[l] = lines[l].substring(0, range.end.column);\n }\n return lines;\n };\n Document.prototype.insertLines = function (row, lines) {\n console.warn(\"Use of document.insertLines is deprecated. Use the insertFullLines method instead.\");\n return this.insertFullLines(row, lines);\n };\n Document.prototype.removeLines = function (firstRow, lastRow) {\n console.warn(\"Use of document.removeLines is deprecated. Use the removeFullLines method instead.\");\n return this.removeFullLines(firstRow, lastRow);\n };\n Document.prototype.insertNewLine = function (position) {\n console.warn(\"Use of document.insertNewLine is deprecated. Use insertMergedLines(position, ['', '']) instead.\");\n return this.insertMergedLines(position, [\"\", \"\"]);\n };\n Document.prototype.insert = function (position, text) {\n if (this.getLength() <= 1)\n this.$detectNewLine(text);\n return this.insertMergedLines(position, this.$split(text));\n };\n Document.prototype.insertInLine = function (position, text) {\n var start = this.clippedPos(position.row, position.column);\n var end = this.pos(position.row, position.column + text.length);\n this.applyDelta({\n start: start,\n end: end,\n action: \"insert\",\n lines: [text]\n }, true);\n return this.clonePos(end);\n };\n Document.prototype.clippedPos = function (row, column) {\n var length = this.getLength();\n if (row === undefined) {\n row = length;\n }\n else if (row < 0) {\n row = 0;\n }\n else if (row >= length) {\n row = length - 1;\n column = undefined;\n }\n var line = this.getLine(row);\n if (column == undefined)\n column = line.length;\n column = Math.min(Math.max(column, 0), line.length);\n return { row: row, column: column };\n };\n Document.prototype.clonePos = function (pos) {\n return { row: pos.row, column: pos.column };\n };\n Document.prototype.pos = function (row, column) {\n return { row: row, column: column };\n };\n Document.prototype.$clipPosition = function (position) {\n var length = this.getLength();\n if (position.row >= length) {\n position.row = Math.max(0, length - 1);\n position.column = this.getLine(length - 1).length;\n }\n else {\n position.row = Math.max(0, position.row);\n position.column = Math.min(Math.max(position.column, 0), this.getLine(position.row).length);\n }\n return position;\n };\n Document.prototype.insertFullLines = function (row, lines) {\n row = Math.min(Math.max(row, 0), this.getLength());\n var column = 0;\n if (row < this.getLength()) {\n lines = lines.concat([\"\"]);\n column = 0;\n }\n else {\n lines = [\"\"].concat(lines);\n row--;\n column = this.$lines[row].length;\n }\n this.insertMergedLines({ row: row, column: column }, lines);\n };\n Document.prototype.insertMergedLines = function (position, lines) {\n var start = this.clippedPos(position.row, position.column);\n var end = {\n row: start.row + lines.length - 1,\n column: (lines.length == 1 ? start.column : 0) + lines[lines.length - 1].length\n };\n this.applyDelta({\n start: start,\n end: end,\n action: \"insert\",\n lines: lines\n });\n return this.clonePos(end);\n };\n Document.prototype.remove = function (range) {\n var start = this.clippedPos(range.start.row, range.start.column);\n var end = this.clippedPos(range.end.row, range.end.column);\n this.applyDelta({\n start: start,\n end: end,\n action: \"remove\",\n lines: this.getLinesForRange({ start: start, end: end })\n });\n return this.clonePos(start);\n };\n Document.prototype.removeInLine = function (row, startColumn, endColumn) {\n var start = this.clippedPos(row, startColumn);\n var end = this.clippedPos(row, endColumn);\n this.applyDelta({\n start: start,\n end: end,\n action: \"remove\",\n lines: this.getLinesForRange({ start: start, end: end })\n }, true);\n return this.clonePos(start);\n };\n Document.prototype.removeFullLines = function (firstRow, lastRow) {\n firstRow = Math.min(Math.max(0, firstRow), this.getLength() - 1);\n lastRow = Math.min(Math.max(0, lastRow), this.getLength() - 1);\n var deleteFirstNewLine = lastRow == this.getLength() - 1 && firstRow > 0;\n var deleteLastNewLine = lastRow < this.getLength() - 1;\n var startRow = (deleteFirstNewLine ? firstRow - 1 : firstRow);\n var startCol = (deleteFirstNewLine ? this.getLine(startRow).length : 0);\n var endRow = (deleteLastNewLine ? lastRow + 1 : lastRow);\n var endCol = (deleteLastNewLine ? 0 : this.getLine(endRow).length);\n var range = new Range(startRow, startCol, endRow, endCol);\n var deletedLines = this.$lines.slice(firstRow, lastRow + 1);\n this.applyDelta({\n start: range.start,\n end: range.end,\n action: \"remove\",\n lines: this.getLinesForRange(range)\n });\n return deletedLines;\n };\n Document.prototype.removeNewLine = function (row) {\n if (row < this.getLength() - 1 && row >= 0) {\n this.applyDelta({\n start: this.pos(row, this.getLine(row).length),\n end: this.pos(row + 1, 0),\n action: \"remove\",\n lines: [\"\", \"\"]\n });\n }\n };\n Document.prototype.replace = function (range, text) {\n if (!(range instanceof Range))\n range = Range.fromPoints(range.start, range.end);\n if (text.length === 0 && range.isEmpty())\n return range.start;\n if (text == this.getTextRange(range))\n return range.end;\n this.remove(range);\n var end;\n if (text) {\n end = this.insert(range.start, text);\n }\n else {\n end = range.start;\n }\n return end;\n };\n Document.prototype.applyDeltas = function (deltas) {\n for (var i = 0; i < deltas.length; i++) {\n this.applyDelta(deltas[i]);\n }\n };\n Document.prototype.revertDeltas = function (deltas) {\n for (var i = deltas.length - 1; i >= 0; i--) {\n this.revertDelta(deltas[i]);\n }\n };\n Document.prototype.applyDelta = function (delta, doNotValidate) {\n var isInsert = delta.action == \"insert\";\n if (isInsert ? delta.lines.length <= 1 && !delta.lines[0]\n : !Range.comparePoints(delta.start, delta.end)) {\n return;\n }\n if (isInsert && delta.lines.length > 20000) {\n this.$splitAndapplyLargeDelta(delta, 20000);\n }\n else {\n applyDelta(this.$lines, delta, doNotValidate);\n this._signal(\"change\", delta);\n }\n };\n Document.prototype.$safeApplyDelta = function (delta) {\n var docLength = this.$lines.length;\n if (delta.action == \"remove\" && delta.start.row < docLength && delta.end.row < docLength\n || delta.action == \"insert\" && delta.start.row <= docLength) {\n this.applyDelta(delta);\n }\n };\n Document.prototype.$splitAndapplyLargeDelta = function (delta, MAX) {\n var lines = delta.lines;\n var l = lines.length - MAX + 1;\n var row = delta.start.row;\n var column = delta.start.column;\n for (var from = 0, to = 0; from < l; from = to) {\n to += MAX - 1;\n var chunk = lines.slice(from, to);\n chunk.push(\"\");\n this.applyDelta({\n start: this.pos(row + from, column),\n end: this.pos(row + to, column = 0),\n action: delta.action,\n lines: chunk\n }, true);\n }\n delta.lines = lines.slice(from);\n delta.start.row = row + from;\n delta.start.column = column;\n this.applyDelta(delta, true);\n };\n Document.prototype.revertDelta = function (delta) {\n this.$safeApplyDelta({\n start: this.clonePos(delta.start),\n end: this.clonePos(delta.end),\n action: (delta.action == \"insert\" ? \"remove\" : \"insert\"),\n lines: delta.lines.slice()\n });\n };\n Document.prototype.indexToPosition = function (index, startRow) {\n var lines = this.$lines || this.getAllLines();\n var newlineLength = this.getNewLineCharacter().length;\n for (var i = startRow || 0, l = lines.length; i < l; i++) {\n index -= lines[i].length + newlineLength;\n if (index < 0)\n return { row: i, column: index + lines[i].length + newlineLength };\n }\n return { row: l - 1, column: index + lines[l - 1].length + newlineLength };\n };\n Document.prototype.positionToIndex = function (pos, startRow) {\n var lines = this.$lines || this.getAllLines();\n var newlineLength = this.getNewLineCharacter().length;\n var index = 0;\n var row = Math.min(pos.row, lines.length);\n for (var i = startRow || 0; i < row; ++i)\n index += lines[i].length + newlineLength;\n return index + pos.column;\n };\n Document.prototype.$split = function (text) {\n return text.split(/\\r\\n|\\r|\\n/);\n };\n return Document;\n}());\nDocument.prototype.$autoNewLine = \"\";\nDocument.prototype.$newLineMode = \"auto\";\noop.implement(Document.prototype, EventEmitter);\nexports.Document = Document;\n\n});\n\nace.define(\"ace/background_tokenizer\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/event_emitter\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"./lib/oop\");\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar BackgroundTokenizer = /** @class */ (function () {\n function BackgroundTokenizer(tokenizer, editor) {\n this.running = false;\n this.lines = [];\n this.states = [];\n this.currentLine = 0;\n this.tokenizer = tokenizer;\n var self = this;\n this.$worker = function () {\n if (!self.running) {\n return;\n }\n var workerStart = new Date();\n var currentLine = self.currentLine;\n var endLine = -1;\n var doc = self.doc;\n var startLine = currentLine;\n while (self.lines[currentLine])\n currentLine++;\n var len = doc.getLength();\n var processedLines = 0;\n self.running = false;\n while (currentLine < len) {\n self.$tokenizeRow(currentLine);\n endLine = currentLine;\n do {\n currentLine++;\n } while (self.lines[currentLine]);\n processedLines++;\n if ((processedLines % 5 === 0) && (new Date() - workerStart) > 20) {\n self.running = setTimeout(self.$worker, 20);\n break;\n }\n }\n self.currentLine = currentLine;\n if (endLine == -1)\n endLine = currentLine;\n if (startLine <= endLine)\n self.fireUpdateEvent(startLine, endLine);\n };\n }\n BackgroundTokenizer.prototype.setTokenizer = function (tokenizer) {\n this.tokenizer = tokenizer;\n this.lines = [];\n this.states = [];\n this.start(0);\n };\n BackgroundTokenizer.prototype.setDocument = function (doc) {\n this.doc = doc;\n this.lines = [];\n this.states = [];\n this.stop();\n };\n BackgroundTokenizer.prototype.fireUpdateEvent = function (firstRow, lastRow) {\n var data = {\n first: firstRow,\n last: lastRow\n };\n this._signal(\"update\", { data: data });\n };\n BackgroundTokenizer.prototype.start = function (startRow) {\n this.currentLine = Math.min(startRow || 0, this.currentLine, this.doc.getLength());\n this.lines.splice(this.currentLine, this.lines.length);\n this.states.splice(this.currentLine, this.states.length);\n this.stop();\n this.running = setTimeout(this.$worker, 700);\n };\n BackgroundTokenizer.prototype.scheduleStart = function () {\n if (!this.running)\n this.running = setTimeout(this.$worker, 700);\n };\n BackgroundTokenizer.prototype.$updateOnChange = function (delta) {\n var startRow = delta.start.row;\n var len = delta.end.row - startRow;\n if (len === 0) {\n this.lines[startRow] = null;\n }\n else if (delta.action == \"remove\") {\n this.lines.splice(startRow, len + 1, null);\n this.states.splice(startRow, len + 1, null);\n }\n else {\n var args = Array(len + 1);\n args.unshift(startRow, 1);\n this.lines.splice.apply(this.lines, args);\n this.states.splice.apply(this.states, args);\n }\n this.currentLine = Math.min(startRow, this.currentLine, this.doc.getLength());\n this.stop();\n };\n BackgroundTokenizer.prototype.stop = function () {\n if (this.running)\n clearTimeout(this.running);\n this.running = false;\n };\n BackgroundTokenizer.prototype.getTokens = function (row) {\n return this.lines[row] || this.$tokenizeRow(row);\n };\n BackgroundTokenizer.prototype.getState = function (row) {\n if (this.currentLine == row)\n this.$tokenizeRow(row);\n return this.states[row] || \"start\";\n };\n BackgroundTokenizer.prototype.$tokenizeRow = function (row) {\n var line = this.doc.getLine(row);\n var state = this.states[row - 1];\n var data = this.tokenizer.getLineTokens(line, state, row);\n if (this.states[row] + \"\" !== data.state + \"\") {\n this.states[row] = data.state;\n this.lines[row + 1] = null;\n if (this.currentLine > row + 1)\n this.currentLine = row + 1;\n }\n else if (this.currentLine == row) {\n this.currentLine = row + 1;\n }\n return this.lines[row] = data.tokens;\n };\n BackgroundTokenizer.prototype.cleanup = function () {\n this.running = false;\n this.lines = [];\n this.states = [];\n this.currentLine = 0;\n this.removeAllListeners();\n };\n return BackgroundTokenizer;\n}());\noop.implement(BackgroundTokenizer.prototype, EventEmitter);\nexports.BackgroundTokenizer = BackgroundTokenizer;\n\n});\n\nace.define(\"ace/search_highlight\",[\"require\",\"exports\",\"module\",\"ace/lib/lang\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar lang = require(\"./lib/lang\");\nvar Range = require(\"./range\").Range;\nvar SearchHighlight = /** @class */ (function () {\n function SearchHighlight(regExp, clazz, type) {\n if (type === void 0) { type = \"text\"; }\n this.setRegexp(regExp);\n this.clazz = clazz;\n this.type = type;\n }\n SearchHighlight.prototype.setRegexp = function (regExp) {\n if (this.regExp + \"\" == regExp + \"\")\n return;\n this.regExp = regExp;\n this.cache = [];\n };\n SearchHighlight.prototype.update = function (html, markerLayer, session, config) {\n if (!this.regExp)\n return;\n var start = config.firstRow, end = config.lastRow;\n var renderedMarkerRanges = {};\n for (var i = start; i <= end; i++) {\n var ranges = this.cache[i];\n if (ranges == null) {\n ranges = lang.getMatchOffsets(session.getLine(i), this.regExp);\n if (ranges.length > this.MAX_RANGES)\n ranges = ranges.slice(0, this.MAX_RANGES);\n ranges = ranges.map(function (match) {\n return new Range(i, match.offset, i, match.offset + match.length);\n });\n this.cache[i] = ranges.length ? ranges : \"\";\n }\n for (var j = ranges.length; j--;) {\n var rangeToAddMarkerTo = ranges[j].toScreenRange(session);\n var rangeAsString = rangeToAddMarkerTo.toString();\n if (renderedMarkerRanges[rangeAsString])\n continue;\n renderedMarkerRanges[rangeAsString] = true;\n markerLayer.drawSingleLineMarker(html, rangeToAddMarkerTo, this.clazz, config);\n }\n }\n };\n return SearchHighlight;\n}());\nSearchHighlight.prototype.MAX_RANGES = 500;\nexports.SearchHighlight = SearchHighlight;\n\n});\n\nace.define(\"ace/undomanager\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar UndoManager = /** @class */ (function () {\n function UndoManager() {\n this.$maxRev = 0;\n this.$fromUndo = false;\n this.$undoDepth = Infinity;\n this.reset();\n }\n UndoManager.prototype.addSession = function (session) {\n this.$session = session;\n };\n UndoManager.prototype.add = function (delta, allowMerge, session) {\n if (this.$fromUndo)\n return;\n if (delta == this.$lastDelta)\n return;\n if (!this.$keepRedoStack)\n this.$redoStack.length = 0;\n if (allowMerge === false || !this.lastDeltas) {\n this.lastDeltas = [];\n var undoStackLength = this.$undoStack.length;\n if (undoStackLength > this.$undoDepth - 1) {\n this.$undoStack.splice(0, undoStackLength - this.$undoDepth + 1);\n }\n this.$undoStack.push(this.lastDeltas);\n delta.id = this.$rev = ++this.$maxRev;\n }\n if (delta.action == \"remove\" || delta.action == \"insert\")\n this.$lastDelta = delta;\n this.lastDeltas.push(delta);\n };\n UndoManager.prototype.addSelection = function (selection, rev) {\n this.selections.push({\n value: selection,\n rev: rev || this.$rev\n });\n };\n UndoManager.prototype.startNewGroup = function () {\n this.lastDeltas = null;\n return this.$rev;\n };\n UndoManager.prototype.markIgnored = function (from, to) {\n if (to == null)\n to = this.$rev + 1;\n var stack = this.$undoStack;\n for (var i = stack.length; i--;) {\n var delta = stack[i][0];\n if (delta.id <= from)\n break;\n if (delta.id < to)\n delta.ignore = true;\n }\n this.lastDeltas = null;\n };\n UndoManager.prototype.getSelection = function (rev, after) {\n var stack = this.selections;\n for (var i = stack.length; i--;) {\n var selection = stack[i];\n if (selection.rev < rev) {\n if (after)\n selection = stack[i + 1];\n return selection;\n }\n }\n };\n UndoManager.prototype.getRevision = function () {\n return this.$rev;\n };\n UndoManager.prototype.getDeltas = function (from, to) {\n if (to == null)\n to = this.$rev + 1;\n var stack = this.$undoStack;\n var end = null, start = 0;\n for (var i = stack.length; i--;) {\n var delta = stack[i][0];\n if (delta.id < to && !end)\n end = i + 1;\n if (delta.id <= from) {\n start = i + 1;\n break;\n }\n }\n return stack.slice(start, end);\n };\n UndoManager.prototype.getChangedRanges = function (from, to) {\n if (to == null)\n to = this.$rev + 1;\n };\n UndoManager.prototype.getChangedLines = function (from, to) {\n if (to == null)\n to = this.$rev + 1;\n };\n UndoManager.prototype.undo = function (session, dontSelect) {\n this.lastDeltas = null;\n var stack = this.$undoStack;\n if (!rearrangeUndoStack(stack, stack.length))\n return;\n if (!session)\n session = this.$session;\n if (this.$redoStackBaseRev !== this.$rev && this.$redoStack.length)\n this.$redoStack = [];\n this.$fromUndo = true;\n var deltaSet = stack.pop();\n var undoSelectionRange = null;\n if (deltaSet) {\n undoSelectionRange = session.undoChanges(deltaSet, dontSelect);\n this.$redoStack.push(deltaSet);\n this.$syncRev();\n }\n this.$fromUndo = false;\n return undoSelectionRange;\n };\n UndoManager.prototype.redo = function (session, dontSelect) {\n this.lastDeltas = null;\n if (!session)\n session = this.$session;\n this.$fromUndo = true;\n if (this.$redoStackBaseRev != this.$rev) {\n var diff = this.getDeltas(this.$redoStackBaseRev, this.$rev + 1);\n rebaseRedoStack(this.$redoStack, diff);\n this.$redoStackBaseRev = this.$rev;\n this.$redoStack.forEach(function (x) {\n x[0].id = ++this.$maxRev;\n }, this);\n }\n var deltaSet = this.$redoStack.pop();\n var redoSelectionRange = null;\n if (deltaSet) {\n redoSelectionRange = session.redoChanges(deltaSet, dontSelect);\n this.$undoStack.push(deltaSet);\n this.$syncRev();\n }\n this.$fromUndo = false;\n return redoSelectionRange;\n };\n UndoManager.prototype.$syncRev = function () {\n var stack = this.$undoStack;\n var nextDelta = stack[stack.length - 1];\n var id = nextDelta && nextDelta[0].id || 0;\n this.$redoStackBaseRev = id;\n this.$rev = id;\n };\n UndoManager.prototype.reset = function () {\n this.lastDeltas = null;\n this.$lastDelta = null;\n this.$undoStack = [];\n this.$redoStack = [];\n this.$rev = 0;\n this.mark = 0;\n this.$redoStackBaseRev = this.$rev;\n this.selections = [];\n };\n UndoManager.prototype.canUndo = function () {\n return this.$undoStack.length > 0;\n };\n UndoManager.prototype.canRedo = function () {\n return this.$redoStack.length > 0;\n };\n UndoManager.prototype.bookmark = function (rev) {\n if (rev == undefined)\n rev = this.$rev;\n this.mark = rev;\n };\n UndoManager.prototype.isAtBookmark = function () {\n return this.$rev === this.mark;\n };\n UndoManager.prototype.toJSON = function () {\n return {\n $redoStack: this.$redoStack,\n $undoStack: this.$undoStack\n };\n };\n UndoManager.prototype.fromJSON = function (json) {\n this.reset();\n this.$undoStack = json.$undoStack;\n this.$redoStack = json.$redoStack;\n };\n UndoManager.prototype.$prettyPrint = function (delta) {\n if (delta)\n return stringifyDelta(delta);\n return stringifyDelta(this.$undoStack) + \"\\n---\\n\" + stringifyDelta(this.$redoStack);\n };\n return UndoManager;\n}());\nUndoManager.prototype.hasUndo = UndoManager.prototype.canUndo;\nUndoManager.prototype.hasRedo = UndoManager.prototype.canRedo;\nUndoManager.prototype.isClean = UndoManager.prototype.isAtBookmark;\nUndoManager.prototype.markClean = UndoManager.prototype.bookmark;\nfunction rearrangeUndoStack(stack, pos) {\n for (var i = pos; i--;) {\n var deltaSet = stack[i];\n if (deltaSet && !deltaSet[0].ignore) {\n while (i < pos - 1) {\n var swapped = swapGroups(stack[i], stack[i + 1]);\n stack[i] = swapped[0];\n stack[i + 1] = swapped[1];\n i++;\n }\n return true;\n }\n }\n}\nvar Range = require(\"./range\").Range;\nvar cmp = Range.comparePoints;\nvar comparePoints = Range.comparePoints;\nfunction $updateMarkers(delta) {\n var isInsert = delta.action == \"insert\";\n var start = delta.start;\n var end = delta.end;\n var rowShift = (end.row - start.row) * (isInsert ? 1 : -1);\n var colShift = (end.column - start.column) * (isInsert ? 1 : -1);\n if (isInsert)\n end = start;\n for (var i in this.marks) {\n var point = this.marks[i];\n var cmp = comparePoints(point, start);\n if (cmp < 0) {\n continue; // delta starts after the range\n }\n if (cmp === 0) {\n if (isInsert) {\n if (point.bias == 1) {\n cmp = 1;\n }\n else {\n point.bias == -1;\n continue;\n }\n }\n }\n var cmp2 = isInsert ? cmp : comparePoints(point, end);\n if (cmp2 > 0) {\n point.row += rowShift;\n point.column += point.row == end.row ? colShift : 0;\n continue;\n }\n if (!isInsert && cmp2 <= 0) {\n point.row = start.row;\n point.column = start.column;\n if (cmp2 === 0)\n point.bias = 1;\n }\n }\n}\nfunction clonePos(pos) {\n return { row: pos.row, column: pos.column };\n}\nfunction cloneDelta(d) {\n return {\n start: clonePos(d.start),\n end: clonePos(d.end),\n action: d.action,\n lines: d.lines.slice()\n };\n}\nfunction stringifyDelta(d) {\n d = d || this;\n if (Array.isArray(d)) {\n return d.map(stringifyDelta).join(\"\\n\");\n }\n var type = \"\";\n if (d.action) {\n type = d.action == \"insert\" ? \"+\" : \"-\";\n type += \"[\" + d.lines + \"]\";\n }\n else if (d.value) {\n if (Array.isArray(d.value)) {\n type = d.value.map(stringifyRange).join(\"\\n\");\n }\n else {\n type = stringifyRange(d.value);\n }\n }\n if (d.start) {\n type += stringifyRange(d);\n }\n if (d.id || d.rev) {\n type += \"\\t(\" + (d.id || d.rev) + \")\";\n }\n return type;\n}\nfunction stringifyRange(r) {\n return r.start.row + \":\" + r.start.column\n + \"=>\" + r.end.row + \":\" + r.end.column;\n}\nfunction swap(d1, d2) {\n var i1 = d1.action == \"insert\";\n var i2 = d2.action == \"insert\";\n if (i1 && i2) {\n if (cmp(d2.start, d1.end) >= 0) {\n shift(d2, d1, -1);\n }\n else if (cmp(d2.start, d1.start) <= 0) {\n shift(d1, d2, +1);\n }\n else {\n return null;\n }\n }\n else if (i1 && !i2) {\n if (cmp(d2.start, d1.end) >= 0) {\n shift(d2, d1, -1);\n }\n else if (cmp(d2.end, d1.start) <= 0) {\n shift(d1, d2, -1);\n }\n else {\n return null;\n }\n }\n else if (!i1 && i2) {\n if (cmp(d2.start, d1.start) >= 0) {\n shift(d2, d1, +1);\n }\n else if (cmp(d2.start, d1.start) <= 0) {\n shift(d1, d2, +1);\n }\n else {\n return null;\n }\n }\n else if (!i1 && !i2) {\n if (cmp(d2.start, d1.start) >= 0) {\n shift(d2, d1, +1);\n }\n else if (cmp(d2.end, d1.start) <= 0) {\n shift(d1, d2, -1);\n }\n else {\n return null;\n }\n }\n return [d2, d1];\n}\nfunction swapGroups(ds1, ds2) {\n for (var i = ds1.length; i--;) {\n for (var j = 0; j < ds2.length; j++) {\n if (!swap(ds1[i], ds2[j])) {\n while (i < ds1.length) {\n while (j--) {\n swap(ds2[j], ds1[i]);\n }\n j = ds2.length;\n i++;\n }\n return [ds1, ds2];\n }\n }\n }\n ds1.selectionBefore = ds2.selectionBefore =\n ds1.selectionAfter = ds2.selectionAfter = null;\n return [ds2, ds1];\n}\nfunction xform(d1, c1) {\n var i1 = d1.action == \"insert\";\n var i2 = c1.action == \"insert\";\n if (i1 && i2) {\n if (cmp(d1.start, c1.start) < 0) {\n shift(c1, d1, 1);\n }\n else {\n shift(d1, c1, 1);\n }\n }\n else if (i1 && !i2) {\n if (cmp(d1.start, c1.end) >= 0) {\n shift(d1, c1, -1);\n }\n else if (cmp(d1.start, c1.start) <= 0) {\n shift(c1, d1, +1);\n }\n else {\n shift(d1, Range.fromPoints(c1.start, d1.start), -1);\n shift(c1, d1, +1);\n }\n }\n else if (!i1 && i2) {\n if (cmp(c1.start, d1.end) >= 0) {\n shift(c1, d1, -1);\n }\n else if (cmp(c1.start, d1.start) <= 0) {\n shift(d1, c1, +1);\n }\n else {\n shift(c1, Range.fromPoints(d1.start, c1.start), -1);\n shift(d1, c1, +1);\n }\n }\n else if (!i1 && !i2) {\n if (cmp(c1.start, d1.end) >= 0) {\n shift(c1, d1, -1);\n }\n else if (cmp(c1.end, d1.start) <= 0) {\n shift(d1, c1, -1);\n }\n else {\n var before, after;\n if (cmp(d1.start, c1.start) < 0) {\n before = d1;\n d1 = splitDelta(d1, c1.start);\n }\n if (cmp(d1.end, c1.end) > 0) {\n after = splitDelta(d1, c1.end);\n }\n shiftPos(c1.end, d1.start, d1.end, -1);\n if (after && !before) {\n d1.lines = after.lines;\n d1.start = after.start;\n d1.end = after.end;\n after = d1;\n }\n return [c1, before, after].filter(Boolean);\n }\n }\n return [c1, d1];\n}\nfunction shift(d1, d2, dir) {\n shiftPos(d1.start, d2.start, d2.end, dir);\n shiftPos(d1.end, d2.start, d2.end, dir);\n}\nfunction shiftPos(pos, start, end, dir) {\n if (pos.row == (dir == 1 ? start : end).row) {\n pos.column += dir * (end.column - start.column);\n }\n pos.row += dir * (end.row - start.row);\n}\nfunction splitDelta(c, pos) {\n var lines = c.lines;\n var end = c.end;\n c.end = clonePos(pos);\n var rowsBefore = c.end.row - c.start.row;\n var otherLines = lines.splice(rowsBefore, lines.length);\n var col = rowsBefore ? pos.column : pos.column - c.start.column;\n lines.push(otherLines[0].substring(0, col));\n otherLines[0] = otherLines[0].substr(col);\n var rest = {\n start: clonePos(pos),\n end: end,\n lines: otherLines,\n action: c.action\n };\n return rest;\n}\nfunction moveDeltasByOne(redoStack, d) {\n d = cloneDelta(d);\n for (var j = redoStack.length; j--;) {\n var deltaSet = redoStack[j];\n for (var i = 0; i < deltaSet.length; i++) {\n var x = deltaSet[i];\n var xformed = xform(x, d);\n d = xformed[0];\n if (xformed.length != 2) {\n if (xformed[2]) {\n deltaSet.splice(i + 1, 1, xformed[1], xformed[2]);\n i++;\n }\n else if (!xformed[1]) {\n deltaSet.splice(i, 1);\n i--;\n }\n }\n }\n if (!deltaSet.length) {\n redoStack.splice(j, 1);\n }\n }\n return redoStack;\n}\nfunction rebaseRedoStack(redoStack, deltaSets) {\n for (var i = 0; i < deltaSets.length; i++) {\n var deltas = deltaSets[i];\n for (var j = 0; j < deltas.length; j++) {\n moveDeltasByOne(redoStack, deltas[j]);\n }\n }\n}\nexports.UndoManager = UndoManager;\n\n});\n\nace.define(\"ace/edit_session/fold_line\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar Range = require(\"../range\").Range;\nvar FoldLine = /** @class */ (function () {\n function FoldLine(foldData, folds) {\n this.foldData = foldData;\n if (Array.isArray(folds)) {\n this.folds = folds;\n }\n else {\n folds = this.folds = [folds];\n }\n var last = folds[folds.length - 1];\n this.range = new Range(folds[0].start.row, folds[0].start.column, last.end.row, last.end.column);\n this.start = this.range.start;\n this.end = this.range.end;\n this.folds.forEach(function (fold) {\n fold.setFoldLine(this);\n }, this);\n }\n FoldLine.prototype.shiftRow = function (shift) {\n this.start.row += shift;\n this.end.row += shift;\n this.folds.forEach(function (fold) {\n fold.start.row += shift;\n fold.end.row += shift;\n });\n };\n FoldLine.prototype.addFold = function (fold) {\n if (fold.sameRow) {\n if (fold.start.row < this.startRow || fold.endRow > this.endRow) {\n throw new Error(\"Can't add a fold to this FoldLine as it has no connection\");\n }\n this.folds.push(fold);\n this.folds.sort(function (a, b) {\n return -a.range.compareEnd(b.start.row, b.start.column);\n });\n if (this.range.compareEnd(fold.start.row, fold.start.column) > 0) {\n this.end.row = fold.end.row;\n this.end.column = fold.end.column;\n }\n else if (this.range.compareStart(fold.end.row, fold.end.column) < 0) {\n this.start.row = fold.start.row;\n this.start.column = fold.start.column;\n }\n }\n else if (fold.start.row == this.end.row) {\n this.folds.push(fold);\n this.end.row = fold.end.row;\n this.end.column = fold.end.column;\n }\n else if (fold.end.row == this.start.row) {\n this.folds.unshift(fold);\n this.start.row = fold.start.row;\n this.start.column = fold.start.column;\n }\n else {\n throw new Error(\"Trying to add fold to FoldRow that doesn't have a matching row\");\n }\n fold.foldLine = this;\n };\n FoldLine.prototype.containsRow = function (row) {\n return row >= this.start.row && row <= this.end.row;\n };\n FoldLine.prototype.walk = function (callback, endRow, endColumn) {\n var lastEnd = 0, folds = this.folds, fold, cmp, stop, isNewRow = true;\n if (endRow == null) {\n endRow = this.end.row;\n endColumn = this.end.column;\n }\n for (var i = 0; i < folds.length; i++) {\n fold = folds[i];\n cmp = fold.range.compareStart(endRow, endColumn);\n if (cmp == -1) {\n callback(null, endRow, endColumn, lastEnd, isNewRow);\n return;\n }\n stop = callback(null, fold.start.row, fold.start.column, lastEnd, isNewRow);\n stop = !stop && callback(fold.placeholder, fold.start.row, fold.start.column, lastEnd);\n if (stop || cmp === 0) {\n return;\n }\n isNewRow = !fold.sameRow;\n lastEnd = fold.end.column;\n }\n callback(null, endRow, endColumn, lastEnd, isNewRow);\n };\n FoldLine.prototype.getNextFoldTo = function (row, column) {\n var fold, cmp;\n for (var i = 0; i < this.folds.length; i++) {\n fold = this.folds[i];\n cmp = fold.range.compareEnd(row, column);\n if (cmp == -1) {\n return {\n fold: fold,\n kind: \"after\"\n };\n }\n else if (cmp === 0) {\n return {\n fold: fold,\n kind: \"inside\"\n };\n }\n }\n return null;\n };\n FoldLine.prototype.addRemoveChars = function (row, column, len) {\n var ret = this.getNextFoldTo(row, column), fold, folds;\n if (ret) {\n fold = ret.fold;\n if (ret.kind == \"inside\"\n && fold.start.column != column\n && fold.start.row != row) {\n window.console && window.console.log(row, column, fold);\n }\n else if (fold.start.row == row) {\n folds = this.folds;\n var i = folds.indexOf(fold);\n if (i === 0) {\n this.start.column += len;\n }\n for (i; i < folds.length; i++) {\n fold = folds[i];\n fold.start.column += len;\n if (!fold.sameRow) {\n return;\n }\n fold.end.column += len;\n }\n this.end.column += len;\n }\n }\n };\n FoldLine.prototype.split = function (row, column) {\n var pos = this.getNextFoldTo(row, column);\n if (!pos || pos.kind == \"inside\")\n return null;\n var fold = pos.fold;\n var folds = this.folds;\n var foldData = this.foldData;\n var i = folds.indexOf(fold);\n var foldBefore = folds[i - 1];\n this.end.row = foldBefore.end.row;\n this.end.column = foldBefore.end.column;\n folds = folds.splice(i, folds.length - i);\n var newFoldLine = new FoldLine(foldData, folds);\n foldData.splice(foldData.indexOf(this) + 1, 0, newFoldLine);\n return newFoldLine;\n };\n FoldLine.prototype.merge = function (foldLineNext) {\n var folds = foldLineNext.folds;\n for (var i = 0; i < folds.length; i++) {\n this.addFold(folds[i]);\n }\n var foldData = this.foldData;\n foldData.splice(foldData.indexOf(foldLineNext), 1);\n };\n FoldLine.prototype.toString = function () {\n var ret = [this.range.toString() + \": [\"];\n this.folds.forEach(function (fold) {\n ret.push(\" \" + fold.toString());\n });\n ret.push(\"]\");\n return ret.join(\"\\n\");\n };\n FoldLine.prototype.idxToPosition = function (idx) {\n var lastFoldEndColumn = 0;\n for (var i = 0; i < this.folds.length; i++) {\n var fold = this.folds[i];\n idx -= fold.start.column - lastFoldEndColumn;\n if (idx < 0) {\n return {\n row: fold.start.row,\n column: fold.start.column + idx\n };\n }\n idx -= fold.placeholder.length;\n if (idx < 0) {\n return fold.start;\n }\n lastFoldEndColumn = fold.end.column;\n }\n return {\n row: this.end.row,\n column: this.end.column + idx\n };\n };\n return FoldLine;\n}());\nexports.FoldLine = FoldLine;\n\n});\n\nace.define(\"ace/range_list\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar Range = require(\"./range\").Range;\nvar comparePoints = Range.comparePoints;\nvar RangeList = /** @class */ (function () {\n function RangeList() {\n this.ranges = [];\n this.$bias = 1;\n }\n RangeList.prototype.pointIndex = function (pos, excludeEdges, startIndex) {\n var list = this.ranges;\n for (var i = startIndex || 0; i < list.length; i++) {\n var range = list[i];\n var cmpEnd = comparePoints(pos, range.end);\n if (cmpEnd > 0)\n continue;\n var cmpStart = comparePoints(pos, range.start);\n if (cmpEnd === 0)\n return excludeEdges && cmpStart !== 0 ? -i - 2 : i;\n if (cmpStart > 0 || (cmpStart === 0 && !excludeEdges))\n return i;\n return -i - 1;\n }\n return -i - 1;\n };\n RangeList.prototype.add = function (range) {\n var excludeEdges = !range.isEmpty();\n var startIndex = this.pointIndex(range.start, excludeEdges);\n if (startIndex < 0)\n startIndex = -startIndex - 1;\n var endIndex = this.pointIndex(range.end, excludeEdges, startIndex);\n if (endIndex < 0)\n endIndex = -endIndex - 1;\n else\n endIndex++;\n return this.ranges.splice(startIndex, endIndex - startIndex, range);\n };\n RangeList.prototype.addList = function (list) {\n var removed = [];\n for (var i = list.length; i--;) {\n removed.push.apply(removed, this.add(list[i]));\n }\n return removed;\n };\n RangeList.prototype.substractPoint = function (pos) {\n var i = this.pointIndex(pos);\n if (i >= 0)\n return this.ranges.splice(i, 1);\n };\n RangeList.prototype.merge = function () {\n var removed = [];\n var list = this.ranges;\n list = list.sort(function (a, b) {\n return comparePoints(a.start, b.start);\n });\n var next = list[0], range;\n for (var i = 1; i < list.length; i++) {\n range = next;\n next = list[i];\n var cmp = comparePoints(range.end, next.start);\n if (cmp < 0)\n continue;\n if (cmp == 0 && !range.isEmpty() && !next.isEmpty())\n continue;\n if (comparePoints(range.end, next.end) < 0) {\n range.end.row = next.end.row;\n range.end.column = next.end.column;\n }\n list.splice(i, 1);\n removed.push(next);\n next = range;\n i--;\n }\n this.ranges = list;\n return removed;\n };\n RangeList.prototype.contains = function (row, column) {\n return this.pointIndex({ row: row, column: column }) >= 0;\n };\n RangeList.prototype.containsPoint = function (pos) {\n return this.pointIndex(pos) >= 0;\n };\n RangeList.prototype.rangeAtPoint = function (pos) {\n var i = this.pointIndex(pos);\n if (i >= 0)\n return this.ranges[i];\n };\n RangeList.prototype.clipRows = function (startRow, endRow) {\n var list = this.ranges;\n if (list[0].start.row > endRow || list[list.length - 1].start.row < startRow)\n return [];\n var startIndex = this.pointIndex({ row: startRow, column: 0 });\n if (startIndex < 0)\n startIndex = -startIndex - 1;\n var endIndex = this.pointIndex({ row: endRow, column: 0 }, startIndex);\n if (endIndex < 0)\n endIndex = -endIndex - 1;\n var clipped = [];\n for (var i = startIndex; i < endIndex; i++) {\n clipped.push(list[i]);\n }\n return clipped;\n };\n RangeList.prototype.removeAll = function () {\n return this.ranges.splice(0, this.ranges.length);\n };\n RangeList.prototype.attach = function (session) {\n if (this.session)\n this.detach();\n this.session = session;\n this.onChange = this.$onChange.bind(this);\n this.session.on('change', this.onChange);\n };\n RangeList.prototype.detach = function () {\n if (!this.session)\n return;\n this.session.removeListener('change', this.onChange);\n this.session = null;\n };\n RangeList.prototype.$onChange = function (delta) {\n var start = delta.start;\n var end = delta.end;\n var startRow = start.row;\n var endRow = end.row;\n var ranges = this.ranges;\n for (var i = 0, n = ranges.length; i < n; i++) {\n var r = ranges[i];\n if (r.end.row >= startRow)\n break;\n }\n if (delta.action == \"insert\") {\n var lineDif = endRow - startRow;\n var colDiff = -start.column + end.column;\n for (; i < n; i++) {\n var r = ranges[i];\n if (r.start.row > startRow)\n break;\n if (r.start.row == startRow && r.start.column >= start.column) {\n if (r.start.column == start.column && this.$bias <= 0) {\n }\n else {\n r.start.column += colDiff;\n r.start.row += lineDif;\n }\n }\n if (r.end.row == startRow && r.end.column >= start.column) {\n if (r.end.column == start.column && this.$bias < 0) {\n continue;\n }\n if (r.end.column == start.column && colDiff > 0 && i < n - 1) {\n if (r.end.column > r.start.column && r.end.column == ranges[i + 1].start.column)\n r.end.column -= colDiff;\n }\n r.end.column += colDiff;\n r.end.row += lineDif;\n }\n }\n }\n else {\n var lineDif = startRow - endRow;\n var colDiff = start.column - end.column;\n for (; i < n; i++) {\n var r = ranges[i];\n if (r.start.row > endRow)\n break;\n if (r.end.row < endRow\n && (startRow < r.end.row\n || startRow == r.end.row && start.column < r.end.column)) {\n r.end.row = startRow;\n r.end.column = start.column;\n }\n else if (r.end.row == endRow) {\n if (r.end.column <= end.column) {\n if (lineDif || r.end.column > start.column) {\n r.end.column = start.column;\n r.end.row = start.row;\n }\n }\n else {\n r.end.column += colDiff;\n r.end.row += lineDif;\n }\n }\n else if (r.end.row > endRow) {\n r.end.row += lineDif;\n }\n if (r.start.row < endRow\n && (startRow < r.start.row\n || startRow == r.start.row && start.column < r.start.column)) {\n r.start.row = startRow;\n r.start.column = start.column;\n }\n else if (r.start.row == endRow) {\n if (r.start.column <= end.column) {\n if (lineDif || r.start.column > start.column) {\n r.start.column = start.column;\n r.start.row = start.row;\n }\n }\n else {\n r.start.column += colDiff;\n r.start.row += lineDif;\n }\n }\n else if (r.start.row > endRow) {\n r.start.row += lineDif;\n }\n }\n }\n if (lineDif != 0 && i < n) {\n for (; i < n; i++) {\n var r = ranges[i];\n r.start.row += lineDif;\n r.end.row += lineDif;\n }\n }\n };\n return RangeList;\n}());\nRangeList.prototype.comparePoints = comparePoints;\nexports.RangeList = RangeList;\n\n});\n\nace.define(\"ace/edit_session/fold\",[\"require\",\"exports\",\"module\",\"ace/range_list\"], function(require, exports, module){\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar RangeList = require(\"../range_list\").RangeList;\nvar Fold = /** @class */ (function (_super) {\n __extends(Fold, _super);\n function Fold(range, placeholder) {\n var _this = _super.call(this) || this;\n _this.foldLine = null;\n _this.placeholder = placeholder;\n _this.range = range;\n _this.start = range.start;\n _this.end = range.end;\n _this.sameRow = range.start.row == range.end.row;\n _this.subFolds = _this.ranges = [];\n return _this;\n }\n Fold.prototype.toString = function () {\n return '\"' + this.placeholder + '\" ' + this.range.toString();\n };\n Fold.prototype.setFoldLine = function (foldLine) {\n this.foldLine = foldLine;\n this.subFolds.forEach(function (fold) {\n fold.setFoldLine(foldLine);\n });\n };\n Fold.prototype.clone = function () {\n var range = this.range.clone();\n var fold = new Fold(range, this.placeholder);\n this.subFolds.forEach(function (subFold) {\n fold.subFolds.push(subFold.clone());\n });\n fold.collapseChildren = this.collapseChildren;\n return fold;\n };\n Fold.prototype.addSubFold = function (fold) {\n if (this.range.isEqual(fold))\n return;\n consumeRange(fold, this.start);\n var row = fold.start.row, column = fold.start.column;\n for (var i = 0, cmp = -1; i < this.subFolds.length; i++) {\n cmp = this.subFolds[i].range.compare(row, column);\n if (cmp != 1)\n break;\n }\n var afterStart = this.subFolds[i];\n var firstConsumed = 0;\n if (cmp == 0) {\n if (afterStart.range.containsRange(fold))\n return afterStart.addSubFold(fold);\n else\n firstConsumed = 1;\n }\n var row = fold.range.end.row, column = fold.range.end.column;\n for (var j = i, cmp = -1; j < this.subFolds.length; j++) {\n cmp = this.subFolds[j].range.compare(row, column);\n if (cmp != 1)\n break;\n }\n if (cmp == 0)\n j++;\n var consumedFolds = this.subFolds.splice(i, j - i, fold);\n var last = cmp == 0 ? consumedFolds.length - 1 : consumedFolds.length;\n for (var k = firstConsumed; k < last; k++) {\n fold.addSubFold(consumedFolds[k]);\n }\n fold.setFoldLine(this.foldLine);\n return fold;\n };\n Fold.prototype.restoreRange = function (range) {\n return restoreRange(range, this.start);\n };\n return Fold;\n}(RangeList));\nfunction consumePoint(point, anchor) {\n point.row -= anchor.row;\n if (point.row == 0)\n point.column -= anchor.column;\n}\nfunction consumeRange(range, anchor) {\n consumePoint(range.start, anchor);\n consumePoint(range.end, anchor);\n}\nfunction restorePoint(point, anchor) {\n if (point.row == 0)\n point.column += anchor.column;\n point.row += anchor.row;\n}\nfunction restoreRange(range, anchor) {\n restorePoint(range.start, anchor);\n restorePoint(range.end, anchor);\n}\nexports.Fold = Fold;\n\n});\n\nace.define(\"ace/edit_session/folding\",[\"require\",\"exports\",\"module\",\"ace/range\",\"ace/edit_session/fold_line\",\"ace/edit_session/fold\",\"ace/token_iterator\",\"ace/mouse/mouse_event\"], function(require, exports, module){\"use strict\";\nvar Range = require(\"../range\").Range;\nvar FoldLine = require(\"./fold_line\").FoldLine;\nvar Fold = require(\"./fold\").Fold;\nvar TokenIterator = require(\"../token_iterator\").TokenIterator;\nvar MouseEvent = require(\"../mouse/mouse_event\").MouseEvent;\nfunction Folding() {\n this.getFoldAt = function (row, column, side) {\n var foldLine = this.getFoldLine(row);\n if (!foldLine)\n return null;\n var folds = foldLine.folds;\n for (var i = 0; i < folds.length; i++) {\n var range = folds[i].range;\n if (range.contains(row, column)) {\n if (side == 1 && range.isEnd(row, column) && !range.isEmpty()) {\n continue;\n }\n else if (side == -1 && range.isStart(row, column) && !range.isEmpty()) {\n continue;\n }\n return folds[i];\n }\n }\n };\n this.getFoldsInRange = function (range) {\n var start = range.start;\n var end = range.end;\n var foldLines = this.$foldData;\n var foundFolds = [];\n start.column += 1;\n end.column -= 1;\n for (var i = 0; i < foldLines.length; i++) {\n var cmp = foldLines[i].range.compareRange(range);\n if (cmp == 2) {\n continue;\n }\n else if (cmp == -2) {\n break;\n }\n var folds = foldLines[i].folds;\n for (var j = 0; j < folds.length; j++) {\n var fold = folds[j];\n cmp = fold.range.compareRange(range);\n if (cmp == -2) {\n break;\n }\n else if (cmp == 2) {\n continue;\n }\n else \n if (cmp == 42) {\n break;\n }\n foundFolds.push(fold);\n }\n }\n start.column -= 1;\n end.column += 1;\n return foundFolds;\n };\n this.getFoldsInRangeList = function (ranges) {\n if (Array.isArray(ranges)) {\n var folds = [];\n ranges.forEach(function (range) {\n folds = folds.concat(this.getFoldsInRange(range));\n }, this);\n }\n else {\n var folds = this.getFoldsInRange(ranges);\n }\n return folds;\n };\n this.getAllFolds = function () {\n var folds = [];\n var foldLines = this.$foldData;\n for (var i = 0; i < foldLines.length; i++)\n for (var j = 0; j < foldLines[i].folds.length; j++)\n folds.push(foldLines[i].folds[j]);\n return folds;\n };\n this.getFoldStringAt = function (row, column, trim, foldLine) {\n foldLine = foldLine || this.getFoldLine(row);\n if (!foldLine)\n return null;\n var lastFold = {\n end: { column: 0 }\n };\n var str, fold;\n for (var i = 0; i < foldLine.folds.length; i++) {\n fold = foldLine.folds[i];\n var cmp = fold.range.compareEnd(row, column);\n if (cmp == -1) {\n str = this\n .getLine(fold.start.row)\n .substring(lastFold.end.column, fold.start.column);\n break;\n }\n else if (cmp === 0) {\n return null;\n }\n lastFold = fold;\n }\n if (!str)\n str = this.getLine(fold.start.row).substring(lastFold.end.column);\n if (trim == -1)\n return str.substring(0, column - lastFold.end.column);\n else if (trim == 1)\n return str.substring(column - lastFold.end.column);\n else\n return str;\n };\n this.getFoldLine = function (docRow, startFoldLine) {\n var foldData = this.$foldData;\n var i = 0;\n if (startFoldLine)\n i = foldData.indexOf(startFoldLine);\n if (i == -1)\n i = 0;\n for (i; i < foldData.length; i++) {\n var foldLine = foldData[i];\n if (foldLine.start.row <= docRow && foldLine.end.row >= docRow) {\n return foldLine;\n }\n else if (foldLine.end.row > docRow) {\n return null;\n }\n }\n return null;\n };\n this.getNextFoldLine = function (docRow, startFoldLine) {\n var foldData = this.$foldData;\n var i = 0;\n if (startFoldLine)\n i = foldData.indexOf(startFoldLine);\n if (i == -1)\n i = 0;\n for (i; i < foldData.length; i++) {\n var foldLine = foldData[i];\n if (foldLine.end.row >= docRow) {\n return foldLine;\n }\n }\n return null;\n };\n this.getFoldedRowCount = function (first, last) {\n var foldData = this.$foldData, rowCount = last - first + 1;\n for (var i = 0; i < foldData.length; i++) {\n var foldLine = foldData[i], end = foldLine.end.row, start = foldLine.start.row;\n if (end >= last) {\n if (start < last) {\n if (start >= first)\n rowCount -= last - start;\n else\n rowCount = 0; // in one fold\n }\n break;\n }\n else if (end >= first) {\n if (start >= first) // fold inside range\n rowCount -= end - start;\n else\n rowCount -= end - first + 1;\n }\n }\n return rowCount;\n };\n this.$addFoldLine = function (foldLine) {\n this.$foldData.push(foldLine);\n this.$foldData.sort(function (a, b) {\n return a.start.row - b.start.row;\n });\n return foldLine;\n };\n this.addFold = function (placeholder, range) {\n var foldData = this.$foldData;\n var added = false;\n var fold;\n if (placeholder instanceof Fold)\n fold = placeholder;\n else {\n fold = new Fold(range, placeholder);\n fold.collapseChildren = range.collapseChildren;\n }\n this.$clipRangeToDocument(fold.range);\n var startRow = fold.start.row;\n var startColumn = fold.start.column;\n var endRow = fold.end.row;\n var endColumn = fold.end.column;\n var startFold = this.getFoldAt(startRow, startColumn, 1);\n var endFold = this.getFoldAt(endRow, endColumn, -1);\n if (startFold && endFold == startFold)\n return startFold.addSubFold(fold);\n if (startFold && !startFold.range.isStart(startRow, startColumn))\n this.removeFold(startFold);\n if (endFold && !endFold.range.isEnd(endRow, endColumn))\n this.removeFold(endFold);\n var folds = this.getFoldsInRange(fold.range);\n if (folds.length > 0) {\n this.removeFolds(folds);\n if (!fold.collapseChildren) {\n folds.forEach(function (subFold) {\n fold.addSubFold(subFold);\n });\n }\n }\n for (var i = 0; i < foldData.length; i++) {\n var foldLine = foldData[i];\n if (endRow == foldLine.start.row) {\n foldLine.addFold(fold);\n added = true;\n break;\n }\n else if (startRow == foldLine.end.row) {\n foldLine.addFold(fold);\n added = true;\n if (!fold.sameRow) {\n var foldLineNext = foldData[i + 1];\n if (foldLineNext && foldLineNext.start.row == endRow) {\n foldLine.merge(foldLineNext);\n break;\n }\n }\n break;\n }\n else if (endRow <= foldLine.start.row) {\n break;\n }\n }\n if (!added)\n foldLine = this.$addFoldLine(new FoldLine(this.$foldData, fold));\n if (this.$useWrapMode)\n this.$updateWrapData(foldLine.start.row, foldLine.start.row);\n else\n this.$updateRowLengthCache(foldLine.start.row, foldLine.start.row);\n this.$modified = true;\n this._signal(\"changeFold\", { data: fold, action: \"add\" });\n return fold;\n };\n this.addFolds = function (folds) {\n folds.forEach(function (fold) {\n this.addFold(fold);\n }, this);\n };\n this.removeFold = function (fold) {\n var foldLine = fold.foldLine;\n var startRow = foldLine.start.row;\n var endRow = foldLine.end.row;\n var foldLines = this.$foldData;\n var folds = foldLine.folds;\n if (folds.length == 1) {\n foldLines.splice(foldLines.indexOf(foldLine), 1);\n }\n else \n if (foldLine.range.isEnd(fold.end.row, fold.end.column)) {\n folds.pop();\n foldLine.end.row = folds[folds.length - 1].end.row;\n foldLine.end.column = folds[folds.length - 1].end.column;\n }\n else \n if (foldLine.range.isStart(fold.start.row, fold.start.column)) {\n folds.shift();\n foldLine.start.row = folds[0].start.row;\n foldLine.start.column = folds[0].start.column;\n }\n else \n if (fold.sameRow) {\n folds.splice(folds.indexOf(fold), 1);\n }\n else \n {\n var newFoldLine = foldLine.split(fold.start.row, fold.start.column);\n folds = newFoldLine.folds;\n folds.shift();\n newFoldLine.start.row = folds[0].start.row;\n newFoldLine.start.column = folds[0].start.column;\n }\n if (!this.$updating) {\n if (this.$useWrapMode)\n this.$updateWrapData(startRow, endRow);\n else\n this.$updateRowLengthCache(startRow, endRow);\n }\n this.$modified = true;\n this._signal(\"changeFold\", { data: fold, action: \"remove\" });\n };\n this.removeFolds = function (folds) {\n var cloneFolds = [];\n for (var i = 0; i < folds.length; i++) {\n cloneFolds.push(folds[i]);\n }\n cloneFolds.forEach(function (fold) {\n this.removeFold(fold);\n }, this);\n this.$modified = true;\n };\n this.expandFold = function (fold) {\n this.removeFold(fold);\n fold.subFolds.forEach(function (subFold) {\n fold.restoreRange(subFold);\n this.addFold(subFold);\n }, this);\n if (fold.collapseChildren > 0) {\n this.foldAll(fold.start.row + 1, fold.end.row, fold.collapseChildren - 1);\n }\n fold.subFolds = [];\n };\n this.expandFolds = function (folds) {\n folds.forEach(function (fold) {\n this.expandFold(fold);\n }, this);\n };\n this.unfold = function (location, expandInner) {\n var range, folds;\n if (location == null) {\n range = new Range(0, 0, this.getLength(), 0);\n if (expandInner == null)\n expandInner = true;\n }\n else if (typeof location == \"number\") {\n range = new Range(location, 0, location, this.getLine(location).length);\n }\n else if (\"row\" in location) {\n range = Range.fromPoints(location, location);\n }\n else if (Array.isArray(location)) {\n folds = [];\n location.forEach(function (range) {\n folds = folds.concat(this.unfold(range));\n }, this);\n return folds;\n }\n else {\n range = location;\n }\n folds = this.getFoldsInRangeList(range);\n var outermostFolds = folds;\n while (folds.length == 1\n && Range.comparePoints(folds[0].start, range.start) < 0\n && Range.comparePoints(folds[0].end, range.end) > 0) {\n this.expandFolds(folds);\n folds = this.getFoldsInRangeList(range);\n }\n if (expandInner != false) {\n this.removeFolds(folds);\n }\n else {\n this.expandFolds(folds);\n }\n if (outermostFolds.length)\n return outermostFolds;\n };\n this.isRowFolded = function (docRow, startFoldRow) {\n return !!this.getFoldLine(docRow, startFoldRow);\n };\n this.getRowFoldEnd = function (docRow, startFoldRow) {\n var foldLine = this.getFoldLine(docRow, startFoldRow);\n return foldLine ? foldLine.end.row : docRow;\n };\n this.getRowFoldStart = function (docRow, startFoldRow) {\n var foldLine = this.getFoldLine(docRow, startFoldRow);\n return foldLine ? foldLine.start.row : docRow;\n };\n this.getFoldDisplayLine = function (foldLine, endRow, endColumn, startRow, startColumn) {\n if (startRow == null)\n startRow = foldLine.start.row;\n if (startColumn == null)\n startColumn = 0;\n if (endRow == null)\n endRow = foldLine.end.row;\n if (endColumn == null)\n endColumn = this.getLine(endRow).length;\n var doc = this.doc;\n var textLine = \"\";\n foldLine.walk(function (placeholder, row, column, lastColumn) {\n if (row < startRow)\n return;\n if (row == startRow) {\n if (column < startColumn)\n return;\n lastColumn = Math.max(startColumn, lastColumn);\n }\n if (placeholder != null) {\n textLine += placeholder;\n }\n else {\n textLine += doc.getLine(row).substring(lastColumn, column);\n }\n }, endRow, endColumn);\n return textLine;\n };\n this.getDisplayLine = function (row, endColumn, startRow, startColumn) {\n var foldLine = this.getFoldLine(row);\n if (!foldLine) {\n var line;\n line = this.doc.getLine(row);\n return line.substring(startColumn || 0, endColumn || line.length);\n }\n else {\n return this.getFoldDisplayLine(foldLine, row, endColumn, startRow, startColumn);\n }\n };\n this.$cloneFoldData = function () {\n var fd = [];\n fd = this.$foldData.map(function (foldLine) {\n var folds = foldLine.folds.map(function (fold) {\n return fold.clone();\n });\n return new FoldLine(fd, folds);\n });\n return fd;\n };\n this.toggleFold = function (tryToUnfold) {\n var selection = this.selection;\n var range = selection.getRange();\n var fold;\n var bracketPos;\n if (range.isEmpty()) {\n var cursor = range.start;\n fold = this.getFoldAt(cursor.row, cursor.column);\n if (fold) {\n this.expandFold(fold);\n return;\n }\n else if (bracketPos = this.findMatchingBracket(cursor)) {\n if (range.comparePoint(bracketPos) == 1) {\n range.end = bracketPos;\n }\n else {\n range.start = bracketPos;\n range.start.column++;\n range.end.column--;\n }\n }\n else if (bracketPos = this.findMatchingBracket({ row: cursor.row, column: cursor.column + 1 })) {\n if (range.comparePoint(bracketPos) == 1)\n range.end = bracketPos;\n else\n range.start = bracketPos;\n range.start.column++;\n }\n else {\n range = this.getCommentFoldRange(cursor.row, cursor.column) || range;\n }\n }\n else {\n var folds = this.getFoldsInRange(range);\n if (tryToUnfold && folds.length) {\n this.expandFolds(folds);\n return;\n }\n else if (folds.length == 1) {\n fold = folds[0];\n }\n }\n if (!fold)\n fold = this.getFoldAt(range.start.row, range.start.column);\n if (fold && fold.range.toString() == range.toString()) {\n this.expandFold(fold);\n return;\n }\n var placeholder = \"...\";\n if (!range.isMultiLine()) {\n placeholder = this.getTextRange(range);\n if (placeholder.length < 4)\n return;\n placeholder = placeholder.trim().substring(0, 2) + \"..\";\n }\n this.addFold(placeholder, range);\n };\n this.getCommentFoldRange = function (row, column, dir) {\n var iterator = new TokenIterator(this, row, column);\n var token = iterator.getCurrentToken();\n var type = token && token.type;\n if (token && /^comment|string/.test(type)) {\n type = type.match(/comment|string/)[0];\n if (type == \"comment\")\n type += \"|doc-start|\\\\.doc\";\n var re = new RegExp(type);\n var range = new Range();\n if (dir != 1) {\n do {\n token = iterator.stepBackward();\n } while (token && re.test(token.type) && !/^comment.end/.test(token.type));\n token = iterator.stepForward();\n }\n range.start.row = iterator.getCurrentTokenRow();\n range.start.column = iterator.getCurrentTokenColumn() + (/^comment.start/.test(token.type) ? token.value.length : 2);\n iterator = new TokenIterator(this, row, column);\n if (dir != -1) {\n var lastRow = -1;\n do {\n token = iterator.stepForward();\n if (lastRow == -1) {\n var state = this.getState(iterator.$row);\n if (!re.test(state))\n lastRow = iterator.$row;\n }\n else if (iterator.$row > lastRow) {\n break;\n }\n } while (token && re.test(token.type) && !/^comment.start/.test(token.type));\n token = iterator.stepBackward();\n }\n else\n token = iterator.getCurrentToken();\n range.end.row = iterator.getCurrentTokenRow();\n range.end.column = iterator.getCurrentTokenColumn();\n if (!/^comment.end/.test(token.type)) {\n range.end.column += token.value.length - 2;\n }\n return range;\n }\n };\n this.foldAll = function (startRow, endRow, depth, test) {\n if (depth == undefined)\n depth = 100000; // JSON.stringify doesn't hanle Infinity\n var foldWidgets = this.foldWidgets;\n if (!foldWidgets)\n return; // mode doesn't support folding\n endRow = endRow || this.getLength();\n startRow = startRow || 0;\n for (var row = startRow; row < endRow; row++) {\n if (foldWidgets[row] == null)\n foldWidgets[row] = this.getFoldWidget(row);\n if (foldWidgets[row] != \"start\")\n continue;\n if (test && !test(row))\n continue;\n var range = this.getFoldWidgetRange(row);\n if (range && range.isMultiLine()\n && range.end.row <= endRow\n && range.start.row >= startRow) {\n row = range.end.row;\n range.collapseChildren = depth;\n this.addFold(\"...\", range);\n }\n }\n };\n this.foldToLevel = function (level) {\n this.foldAll();\n while (level-- > 0)\n this.unfold(null, false);\n };\n this.foldAllComments = function () {\n var session = this;\n this.foldAll(null, null, null, function (row) {\n var tokens = session.getTokens(row);\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n if (token.type == \"text\" && /^\\s+$/.test(token.value))\n continue;\n if (/comment/.test(token.type))\n return true;\n return false;\n }\n });\n };\n this.$foldStyles = {\n \"manual\": 1,\n \"markbegin\": 1,\n \"markbeginend\": 1\n };\n this.$foldStyle = \"markbegin\";\n this.setFoldStyle = function (style) {\n if (!this.$foldStyles[style])\n throw new Error(\"invalid fold style: \" + style + \"[\" + Object.keys(this.$foldStyles).join(\", \") + \"]\");\n if (this.$foldStyle == style)\n return;\n this.$foldStyle = style;\n if (style == \"manual\")\n this.unfold();\n var mode = this.$foldMode;\n this.$setFolding(null);\n this.$setFolding(mode);\n };\n this.$setFolding = function (foldMode) {\n if (this.$foldMode == foldMode)\n return;\n this.$foldMode = foldMode;\n this.off('change', this.$updateFoldWidgets);\n this.off('tokenizerUpdate', this.$tokenizerUpdateFoldWidgets);\n this._signal(\"changeAnnotation\");\n if (!foldMode || this.$foldStyle == \"manual\") {\n this.foldWidgets = null;\n return;\n }\n this.foldWidgets = [];\n this.getFoldWidget = foldMode.getFoldWidget.bind(foldMode, this, this.$foldStyle);\n this.getFoldWidgetRange = foldMode.getFoldWidgetRange.bind(foldMode, this, this.$foldStyle);\n this.$updateFoldWidgets = this.updateFoldWidgets.bind(this);\n this.$tokenizerUpdateFoldWidgets = this.tokenizerUpdateFoldWidgets.bind(this);\n this.on('change', this.$updateFoldWidgets);\n this.on('tokenizerUpdate', this.$tokenizerUpdateFoldWidgets);\n };\n this.getParentFoldRangeData = function (row, ignoreCurrent) {\n var fw = this.foldWidgets;\n if (!fw || (ignoreCurrent && fw[row]))\n return {};\n var i = row - 1, firstRange;\n while (i >= 0) {\n var c = fw[i];\n if (c == null)\n c = fw[i] = this.getFoldWidget(i);\n if (c == \"start\") {\n var range = this.getFoldWidgetRange(i);\n if (!firstRange)\n firstRange = range;\n if (range && range.end.row >= row)\n break;\n }\n i--;\n }\n return {\n range: i !== -1 && range,\n firstRange: firstRange\n };\n };\n this.onFoldWidgetClick = function (row, e) {\n if (e instanceof MouseEvent)\n e = e.domEvent;\n var options = {\n children: e.shiftKey,\n all: e.ctrlKey || e.metaKey,\n siblings: e.altKey\n };\n var range = this.$toggleFoldWidget(row, options);\n if (!range) {\n var el = (e.target || e.srcElement);\n if (el && /ace_fold-widget/.test(el.className))\n el.className += \" ace_invalid\";\n }\n };\n this.$toggleFoldWidget = function (row, options) {\n if (!this.getFoldWidget)\n return;\n var type = this.getFoldWidget(row);\n var line = this.getLine(row);\n var dir = type === \"end\" ? -1 : 1;\n var fold = this.getFoldAt(row, dir === -1 ? 0 : line.length, dir);\n if (fold) {\n if (options.children || options.all)\n this.removeFold(fold);\n else\n this.expandFold(fold);\n return fold;\n }\n var range = this.getFoldWidgetRange(row, true);\n if (range && !range.isMultiLine()) {\n fold = this.getFoldAt(range.start.row, range.start.column, 1);\n if (fold && range.isEqual(fold.range)) {\n this.removeFold(fold);\n return fold;\n }\n }\n if (options.siblings) {\n var data = this.getParentFoldRangeData(row);\n if (data.range) {\n var startRow = data.range.start.row + 1;\n var endRow = data.range.end.row;\n }\n this.foldAll(startRow, endRow, options.all ? 10000 : 0);\n }\n else if (options.children) {\n endRow = range ? range.end.row : this.getLength();\n this.foldAll(row + 1, endRow, options.all ? 10000 : 0);\n }\n else if (range) {\n if (options.all)\n range.collapseChildren = 10000;\n this.addFold(\"...\", range);\n }\n return range;\n };\n this.toggleFoldWidget = function (toggleParent) {\n var row = this.selection.getCursor().row;\n row = this.getRowFoldStart(row);\n var range = this.$toggleFoldWidget(row, {});\n if (range)\n return;\n var data = this.getParentFoldRangeData(row, true);\n range = data.range || data.firstRange;\n if (range) {\n row = range.start.row;\n var fold = this.getFoldAt(row, this.getLine(row).length, 1);\n if (fold) {\n this.removeFold(fold);\n }\n else {\n this.addFold(\"...\", range);\n }\n }\n };\n this.updateFoldWidgets = function (delta) {\n var firstRow = delta.start.row;\n var len = delta.end.row - firstRow;\n if (len === 0) {\n this.foldWidgets[firstRow] = null;\n }\n else if (delta.action == 'remove') {\n this.foldWidgets.splice(firstRow, len + 1, null);\n }\n else {\n var args = Array(len + 1);\n args.unshift(firstRow, 1);\n this.foldWidgets.splice.apply(this.foldWidgets, args);\n }\n };\n this.tokenizerUpdateFoldWidgets = function (e) {\n var rows = e.data;\n if (rows.first != rows.last) {\n if (this.foldWidgets.length > rows.first)\n this.foldWidgets.splice(rows.first, this.foldWidgets.length);\n }\n };\n}\nexports.Folding = Folding;\n\n});\n\nace.define(\"ace/edit_session/bracket_match\",[\"require\",\"exports\",\"module\",\"ace/token_iterator\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar TokenIterator = require(\"../token_iterator\").TokenIterator;\nvar Range = require(\"../range\").Range;\nfunction BracketMatch() {\n this.findMatchingBracket = function (position, chr) {\n if (position.column == 0)\n return null;\n var charBeforeCursor = chr || this.getLine(position.row).charAt(position.column - 1);\n if (charBeforeCursor == \"\")\n return null;\n var match = charBeforeCursor.match(/([\\(\\[\\{])|([\\)\\]\\}])/);\n if (!match)\n return null;\n if (match[1])\n return this.$findClosingBracket(match[1], position);\n else\n return this.$findOpeningBracket(match[2], position);\n };\n this.getBracketRange = function (pos) {\n var line = this.getLine(pos.row);\n var before = true, range;\n var chr = line.charAt(pos.column - 1);\n var match = chr && chr.match(/([\\(\\[\\{])|([\\)\\]\\}])/);\n if (!match) {\n chr = line.charAt(pos.column);\n pos = { row: pos.row, column: pos.column + 1 };\n match = chr && chr.match(/([\\(\\[\\{])|([\\)\\]\\}])/);\n before = false;\n }\n if (!match)\n return null;\n if (match[1]) {\n var bracketPos = this.$findClosingBracket(match[1], pos);\n if (!bracketPos)\n return null;\n range = Range.fromPoints(pos, bracketPos);\n if (!before) {\n range.end.column++;\n range.start.column--;\n }\n range.cursor = range.end;\n }\n else {\n var bracketPos = this.$findOpeningBracket(match[2], pos);\n if (!bracketPos)\n return null;\n range = Range.fromPoints(bracketPos, pos);\n if (!before) {\n range.start.column++;\n range.end.column--;\n }\n range.cursor = range.start;\n }\n return range;\n };\n this.getMatchingBracketRanges = function (pos, isBackwards) {\n var line = this.getLine(pos.row);\n var bracketsRegExp = /([\\(\\[\\{])|([\\)\\]\\}])/;\n var chr = !isBackwards && line.charAt(pos.column - 1);\n var match = chr && chr.match(bracketsRegExp);\n if (!match) {\n chr = (isBackwards === undefined || isBackwards) && line.charAt(pos.column);\n pos = {\n row: pos.row,\n column: pos.column + 1\n };\n match = chr && chr.match(bracketsRegExp);\n }\n if (!match)\n return null;\n var startRange = new Range(pos.row, pos.column - 1, pos.row, pos.column);\n var bracketPos = match[1] ? this.$findClosingBracket(match[1], pos)\n : this.$findOpeningBracket(match[2], pos);\n if (!bracketPos)\n return [startRange];\n var endRange = new Range(bracketPos.row, bracketPos.column, bracketPos.row, bracketPos.column + 1);\n return [startRange, endRange];\n };\n this.$brackets = {\n \")\": \"(\",\n \"(\": \")\",\n \"]\": \"[\",\n \"[\": \"]\",\n \"{\": \"}\",\n \"}\": \"{\",\n \"<\": \">\",\n \">\": \"<\"\n };\n this.$findOpeningBracket = function (bracket, position, typeRe) {\n var openBracket = this.$brackets[bracket];\n var depth = 1;\n var iterator = new TokenIterator(this, position.row, position.column);\n var token = iterator.getCurrentToken();\n if (!token)\n token = iterator.stepForward();\n if (!token)\n return;\n if (!typeRe) {\n typeRe = new RegExp(\"(\\\\.?\" +\n token.type.replace(\".\", \"\\\\.\").replace(\"rparen\", \".paren\")\n .replace(/\\b(?:end)\\b/, \"(?:start|begin|end)\")\n .replace(/-close\\b/, \"-(close|open)\")\n + \")+\");\n }\n var valueIndex = position.column - iterator.getCurrentTokenColumn() - 2;\n var value = token.value;\n while (true) {\n while (valueIndex >= 0) {\n var chr = value.charAt(valueIndex);\n if (chr == openBracket) {\n depth -= 1;\n if (depth == 0) {\n return { row: iterator.getCurrentTokenRow(),\n column: valueIndex + iterator.getCurrentTokenColumn() };\n }\n }\n else if (chr == bracket) {\n depth += 1;\n }\n valueIndex -= 1;\n }\n do {\n token = iterator.stepBackward();\n } while (token && !typeRe.test(token.type));\n if (token == null)\n break;\n value = token.value;\n valueIndex = value.length - 1;\n }\n return null;\n };\n this.$findClosingBracket = function (bracket, position, typeRe) {\n var closingBracket = this.$brackets[bracket];\n var depth = 1;\n var iterator = new TokenIterator(this, position.row, position.column);\n var token = iterator.getCurrentToken();\n if (!token)\n token = iterator.stepForward();\n if (!token)\n return;\n if (!typeRe) {\n typeRe = new RegExp(\"(\\\\.?\" +\n token.type.replace(\".\", \"\\\\.\").replace(\"lparen\", \".paren\")\n .replace(/\\b(?:start|begin)\\b/, \"(?:start|begin|end)\")\n .replace(/-open\\b/, \"-(close|open)\")\n + \")+\");\n }\n var valueIndex = position.column - iterator.getCurrentTokenColumn();\n while (true) {\n var value = token.value;\n var valueLength = value.length;\n while (valueIndex < valueLength) {\n var chr = value.charAt(valueIndex);\n if (chr == closingBracket) {\n depth -= 1;\n if (depth == 0) {\n return { row: iterator.getCurrentTokenRow(),\n column: valueIndex + iterator.getCurrentTokenColumn() };\n }\n }\n else if (chr == bracket) {\n depth += 1;\n }\n valueIndex += 1;\n }\n do {\n token = iterator.stepForward();\n } while (token && !typeRe.test(token.type));\n if (token == null)\n break;\n valueIndex = 0;\n }\n return null;\n };\n this.getMatchingTags = function (pos) {\n var iterator = new TokenIterator(this, pos.row, pos.column);\n var token = this.$findTagName(iterator);\n if (!token)\n return;\n var prevToken = iterator.stepBackward();\n if (prevToken.value === '<') {\n return this.$findClosingTag(iterator, token);\n }\n else {\n return this.$findOpeningTag(iterator, token);\n }\n };\n this.$findTagName = function (iterator) {\n var token = iterator.getCurrentToken();\n var found = false;\n var backward = false;\n if (token && token.type.indexOf('tag-name') === -1) {\n do {\n if (backward)\n token = iterator.stepBackward();\n else\n token = iterator.stepForward();\n if (token) {\n if (token.value === \"/>\") {\n backward = true;\n }\n else if (token.type.indexOf('tag-name') !== -1) {\n found = true;\n }\n }\n } while (token && !found);\n }\n return token;\n };\n this.$findClosingTag = function (iterator, token) {\n var prevToken;\n var currentTag = token.value;\n var tag = token.value;\n var depth = 0;\n var openTagStart = new Range(iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn(), iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() + 1);\n token = iterator.stepForward();\n var openTagName = new Range(iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn(), iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() + token.value.length);\n var foundOpenTagEnd = false;\n do {\n prevToken = token;\n token = iterator.stepForward();\n if (token) {\n if (token.value === '>' && !foundOpenTagEnd) {\n var openTagEnd = new Range(iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn(), iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() + 1); //Range for `>`\n foundOpenTagEnd = true;\n }\n if (token.type.indexOf('tag-name') !== -1) {\n currentTag = token.value;\n if (tag === currentTag) {\n if (prevToken.value === '<') {\n depth++;\n }\n else if (prevToken.value === '') {\n var closeTagEnd = new Range(iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn(), iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() + 1); //Range for >\n }\n else {\n return;\n }\n }\n }\n }\n }\n else if (tag === currentTag && token.value === '/>') { // self-closing tag\n depth--;\n if (depth < 0) { //found self-closing tag end\n var closeTagStart = new Range(iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn(), iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() + 2);\n var closeTagName = closeTagStart;\n var closeTagEnd = closeTagName;\n var openTagEnd = new Range(openTagName.end.row, openTagName.end.column, openTagName.end.row, openTagName.end.column + 1);\n }\n }\n }\n } while (token && depth >= 0);\n if (openTagStart && openTagEnd && closeTagStart && closeTagEnd && openTagName && closeTagName) {\n return {\n openTag: new Range(openTagStart.start.row, openTagStart.start.column, openTagEnd.end.row, openTagEnd.end.column),\n closeTag: new Range(closeTagStart.start.row, closeTagStart.start.column, closeTagEnd.end.row, closeTagEnd.end.column),\n openTagName: openTagName,\n closeTagName: closeTagName\n };\n }\n };\n this.$findOpeningTag = function (iterator, token) {\n var prevToken = iterator.getCurrentToken();\n var tag = token.value;\n var depth = 0;\n var startRow = iterator.getCurrentTokenRow();\n var startColumn = iterator.getCurrentTokenColumn();\n var endColumn = startColumn + 2;\n var closeTagStart = new Range(startRow, startColumn, startRow, endColumn); //Range for \")\n return;\n var closeTagEnd = new Range(iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn(), iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() + 1); //Range for >\n iterator.stepBackward();\n iterator.stepBackward();\n do {\n token = prevToken;\n startRow = iterator.getCurrentTokenRow();\n startColumn = iterator.getCurrentTokenColumn();\n endColumn = startColumn + token.value.length;\n prevToken = iterator.stepBackward();\n if (token) {\n if (token.type.indexOf('tag-name') !== -1) {\n if (tag === token.value) {\n if (prevToken.value === '<') {\n depth++;\n if (depth > 0) { //found opening tag\n var openTagName = new Range(startRow, startColumn, startRow, endColumn);\n var openTagStart = new Range(iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn(), iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() + 1); //Range for <\n do {\n token = iterator.stepForward();\n } while (token && token.value !== '>');\n var openTagEnd = new Range(iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn(), iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() + 1); //Range for >\n }\n }\n else if (prevToken.value === '') { // self-closing tag\n var stepCount = 0;\n var tmpToken = prevToken;\n while (tmpToken) {\n if (tmpToken.type.indexOf('tag-name') !== -1 && tmpToken.value === tag) {\n depth--;\n break;\n }\n else if (tmpToken.value === '<') {\n break;\n }\n tmpToken = iterator.stepBackward();\n stepCount++;\n }\n for (var i = 0; i < stepCount; i++) {\n iterator.stepForward();\n }\n }\n }\n } while (prevToken && depth <= 0);\n if (openTagStart && openTagEnd && closeTagStart && closeTagEnd && openTagName && closeTagName) {\n return {\n openTag: new Range(openTagStart.start.row, openTagStart.start.column, openTagEnd.end.row, openTagEnd.end.column),\n closeTag: new Range(closeTagStart.start.row, closeTagStart.start.column, closeTagEnd.end.row, closeTagEnd.end.column),\n openTagName: openTagName,\n closeTagName: closeTagName\n };\n }\n };\n}\nexports.BracketMatch = BracketMatch;\n\n});\n\nace.define(\"ace/edit_session\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/bidihandler\",\"ace/config\",\"ace/lib/event_emitter\",\"ace/selection\",\"ace/mode/text\",\"ace/range\",\"ace/document\",\"ace/background_tokenizer\",\"ace/search_highlight\",\"ace/undomanager\",\"ace/edit_session/folding\",\"ace/edit_session/bracket_match\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"./lib/oop\");\nvar lang = require(\"./lib/lang\");\nvar BidiHandler = require(\"./bidihandler\").BidiHandler;\nvar config = require(\"./config\");\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar Selection = require(\"./selection\").Selection;\nvar TextMode = require(\"./mode/text\").Mode;\nvar Range = require(\"./range\").Range;\nvar Document = require(\"./document\").Document;\nvar BackgroundTokenizer = require(\"./background_tokenizer\").BackgroundTokenizer;\nvar SearchHighlight = require(\"./search_highlight\").SearchHighlight;\nvar UndoManager = require(\"./undomanager\").UndoManager;\nvar EditSession = /** @class */ (function () {\n function EditSession(text, mode) {\n this.$breakpoints = [];\n this.$decorations = [];\n this.$frontMarkers = {};\n this.$backMarkers = {};\n this.$markerId = 1;\n this.$undoSelect = true;\n this.$foldData = [];\n this.id = \"session\" + (++EditSession.$uid);\n this.$foldData.toString = function () {\n return this.join(\"\\n\");\n };\n this.bgTokenizer = new BackgroundTokenizer((new TextMode()).getTokenizer(), this);\n var _self = this;\n this.bgTokenizer.on(\"update\", function (e) {\n _self._signal(\"tokenizerUpdate\", e);\n });\n this.on(\"changeFold\", this.onChangeFold.bind(this));\n this.$onChange = this.onChange.bind(this);\n if (typeof text != \"object\" || !text.getLine)\n text = new Document(text);\n this.setDocument(text);\n this.selection = new Selection(this);\n this.$bidiHandler = new BidiHandler(this);\n config.resetOptions(this);\n this.setMode(mode);\n config._signal(\"session\", this);\n this.destroyed = false;\n }\n EditSession.prototype.setDocument = function (doc) {\n if (this.doc)\n this.doc.off(\"change\", this.$onChange);\n this.doc = doc;\n doc.on(\"change\", this.$onChange, true);\n this.bgTokenizer.setDocument(this.getDocument());\n this.resetCaches();\n };\n EditSession.prototype.getDocument = function () {\n return this.doc;\n };\n EditSession.prototype.$resetRowCache = function (docRow) {\n if (!docRow) {\n this.$docRowCache = [];\n this.$screenRowCache = [];\n return;\n }\n var l = this.$docRowCache.length;\n var i = this.$getRowCacheIndex(this.$docRowCache, docRow) + 1;\n if (l > i) {\n this.$docRowCache.splice(i, l);\n this.$screenRowCache.splice(i, l);\n }\n };\n EditSession.prototype.$getRowCacheIndex = function (cacheArray, val) {\n var low = 0;\n var hi = cacheArray.length - 1;\n while (low <= hi) {\n var mid = (low + hi) >> 1;\n var c = cacheArray[mid];\n if (val > c)\n low = mid + 1;\n else if (val < c)\n hi = mid - 1;\n else\n return mid;\n }\n return low - 1;\n };\n EditSession.prototype.resetCaches = function () {\n this.$modified = true;\n this.$wrapData = [];\n this.$rowLengthCache = [];\n this.$resetRowCache(0);\n if (!this.destroyed)\n this.bgTokenizer.start(0);\n };\n EditSession.prototype.onChangeFold = function (e) {\n var fold = e.data;\n this.$resetRowCache(fold.start.row);\n };\n EditSession.prototype.onChange = function (delta) {\n this.$modified = true;\n this.$bidiHandler.onChange(delta);\n this.$resetRowCache(delta.start.row);\n var removedFolds = this.$updateInternalDataOnChange(delta);\n if (!this.$fromUndo && this.$undoManager) {\n if (removedFolds && removedFolds.length) {\n this.$undoManager.add({\n action: \"removeFolds\",\n folds: removedFolds\n }, this.mergeUndoDeltas);\n this.mergeUndoDeltas = true;\n }\n this.$undoManager.add(delta, this.mergeUndoDeltas);\n this.mergeUndoDeltas = true;\n this.$informUndoManager.schedule();\n }\n this.bgTokenizer.$updateOnChange(delta);\n this._signal(\"change\", delta);\n };\n EditSession.prototype.setValue = function (text) {\n this.doc.setValue(text);\n this.selection.moveTo(0, 0);\n this.$resetRowCache(0);\n this.setUndoManager(this.$undoManager);\n this.getUndoManager().reset();\n };\n EditSession.fromJSON = function (session) {\n session = JSON.parse(session);\n var undoManager = new UndoManager();\n undoManager.$undoStack = session.history.undo;\n undoManager.$redoStack = session.history.redo;\n undoManager.mark = session.history.mark;\n undoManager.$rev = session.history.rev;\n var editSession = new EditSession(session.value);\n session.folds.forEach(function (fold) {\n editSession.addFold(\"...\", Range.fromPoints(fold.start, fold.end));\n });\n editSession.setAnnotations(session.annotations);\n editSession.setBreakpoints(session.breakpoints);\n editSession.setMode(session.mode);\n editSession.setScrollLeft(session.scrollLeft);\n editSession.setScrollTop(session.scrollTop);\n editSession.setUndoManager(undoManager);\n editSession.selection.fromJSON(session.selection);\n return editSession;\n };\n EditSession.prototype.toJSON = function () {\n return {\n annotations: this.$annotations,\n breakpoints: this.$breakpoints,\n folds: this.getAllFolds().map(function (fold) {\n return fold.range;\n }),\n history: this.getUndoManager(),\n mode: this.$mode.$id,\n scrollLeft: this.$scrollLeft,\n scrollTop: this.$scrollTop,\n selection: this.selection.toJSON(),\n value: this.doc.getValue()\n };\n };\n EditSession.prototype.toString = function () {\n return this.doc.getValue();\n };\n EditSession.prototype.getSelection = function () {\n return this.selection;\n };\n EditSession.prototype.getState = function (row) {\n return this.bgTokenizer.getState(row);\n };\n EditSession.prototype.getTokens = function (row) {\n return this.bgTokenizer.getTokens(row);\n };\n EditSession.prototype.getTokenAt = function (row, column) {\n var tokens = this.bgTokenizer.getTokens(row);\n var token, c = 0;\n if (column == null) {\n var i = tokens.length - 1;\n c = this.getLine(row).length;\n }\n else {\n for (var i = 0; i < tokens.length; i++) {\n c += tokens[i].value.length;\n if (c >= column)\n break;\n }\n }\n token = tokens[i];\n if (!token)\n return null;\n token.index = i;\n token.start = c - token.value.length;\n return token;\n };\n EditSession.prototype.setUndoManager = function (undoManager) {\n this.$undoManager = undoManager;\n if (this.$informUndoManager)\n this.$informUndoManager.cancel();\n if (undoManager) {\n var self = this;\n undoManager.addSession(this);\n this.$syncInformUndoManager = function () {\n self.$informUndoManager.cancel();\n self.mergeUndoDeltas = false;\n };\n this.$informUndoManager = lang.delayedCall(this.$syncInformUndoManager);\n }\n else {\n this.$syncInformUndoManager = function () { };\n }\n };\n EditSession.prototype.markUndoGroup = function () {\n if (this.$syncInformUndoManager)\n this.$syncInformUndoManager();\n };\n EditSession.prototype.getUndoManager = function () {\n return this.$undoManager || this.$defaultUndoManager;\n };\n EditSession.prototype.getTabString = function () {\n if (this.getUseSoftTabs()) {\n return lang.stringRepeat(\" \", this.getTabSize());\n }\n else {\n return \"\\t\";\n }\n };\n EditSession.prototype.setUseSoftTabs = function (val) {\n this.setOption(\"useSoftTabs\", val);\n };\n EditSession.prototype.getUseSoftTabs = function () {\n return this.$useSoftTabs && !this.$mode.$indentWithTabs;\n };\n EditSession.prototype.setTabSize = function (tabSize) {\n this.setOption(\"tabSize\", tabSize);\n };\n EditSession.prototype.getTabSize = function () {\n return this.$tabSize;\n };\n EditSession.prototype.isTabStop = function (position) {\n return this.$useSoftTabs && (position.column % this.$tabSize === 0);\n };\n EditSession.prototype.setNavigateWithinSoftTabs = function (navigateWithinSoftTabs) {\n this.setOption(\"navigateWithinSoftTabs\", navigateWithinSoftTabs);\n };\n EditSession.prototype.getNavigateWithinSoftTabs = function () {\n return this.$navigateWithinSoftTabs;\n };\n EditSession.prototype.setOverwrite = function (overwrite) {\n this.setOption(\"overwrite\", overwrite);\n };\n EditSession.prototype.getOverwrite = function () {\n return this.$overwrite;\n };\n EditSession.prototype.toggleOverwrite = function () {\n this.setOverwrite(!this.$overwrite);\n };\n EditSession.prototype.addGutterDecoration = function (row, className) {\n if (!this.$decorations[row])\n this.$decorations[row] = \"\";\n this.$decorations[row] += \" \" + className;\n this._signal(\"changeBreakpoint\", {});\n };\n EditSession.prototype.removeGutterDecoration = function (row, className) {\n this.$decorations[row] = (this.$decorations[row] || \"\").replace(\" \" + className, \"\");\n this._signal(\"changeBreakpoint\", {});\n };\n EditSession.prototype.getBreakpoints = function () {\n return this.$breakpoints;\n };\n EditSession.prototype.setBreakpoints = function (rows) {\n this.$breakpoints = [];\n for (var i = 0; i < rows.length; i++) {\n this.$breakpoints[rows[i]] = \"ace_breakpoint\";\n }\n this._signal(\"changeBreakpoint\", {});\n };\n EditSession.prototype.clearBreakpoints = function () {\n this.$breakpoints = [];\n this._signal(\"changeBreakpoint\", {});\n };\n EditSession.prototype.setBreakpoint = function (row, className) {\n if (className === undefined)\n className = \"ace_breakpoint\";\n if (className)\n this.$breakpoints[row] = className;\n else\n delete this.$breakpoints[row];\n this._signal(\"changeBreakpoint\", {});\n };\n EditSession.prototype.clearBreakpoint = function (row) {\n delete this.$breakpoints[row];\n this._signal(\"changeBreakpoint\", {});\n };\n EditSession.prototype.addMarker = function (range, clazz, type, inFront) {\n var id = this.$markerId++;\n var marker = {\n range: range,\n type: type || \"line\",\n renderer: typeof type == \"function\" ? type : null,\n clazz: clazz,\n inFront: !!inFront,\n id: id\n };\n if (inFront) {\n this.$frontMarkers[id] = marker;\n this._signal(\"changeFrontMarker\");\n }\n else {\n this.$backMarkers[id] = marker;\n this._signal(\"changeBackMarker\");\n }\n return id;\n };\n EditSession.prototype.addDynamicMarker = function (marker, inFront) {\n if (!marker.update)\n return;\n var id = this.$markerId++;\n marker.id = id;\n marker.inFront = !!inFront;\n if (inFront) {\n this.$frontMarkers[id] = marker;\n this._signal(\"changeFrontMarker\");\n }\n else {\n this.$backMarkers[id] = marker;\n this._signal(\"changeBackMarker\");\n }\n return marker;\n };\n EditSession.prototype.removeMarker = function (markerId) {\n var marker = this.$frontMarkers[markerId] || this.$backMarkers[markerId];\n if (!marker)\n return;\n var markers = marker.inFront ? this.$frontMarkers : this.$backMarkers;\n delete (markers[markerId]);\n this._signal(marker.inFront ? \"changeFrontMarker\" : \"changeBackMarker\");\n };\n EditSession.prototype.getMarkers = function (inFront) {\n return inFront ? this.$frontMarkers : this.$backMarkers;\n };\n EditSession.prototype.highlight = function (re) {\n if (!this.$searchHighlight) {\n var highlight = new SearchHighlight(null, \"ace_selected-word\", \"text\");\n this.$searchHighlight = this.addDynamicMarker(highlight);\n }\n this.$searchHighlight.setRegexp(re);\n };\n EditSession.prototype.highlightLines = function (startRow, endRow, clazz, inFront) {\n if (typeof endRow != \"number\") {\n clazz = endRow;\n endRow = startRow;\n }\n if (!clazz)\n clazz = \"ace_step\";\n var range = new Range(startRow, 0, endRow, Infinity);\n range.id = this.addMarker(range, clazz, \"fullLine\", inFront);\n return range;\n };\n EditSession.prototype.setAnnotations = function (annotations) {\n this.$annotations = annotations;\n this._signal(\"changeAnnotation\", {});\n };\n EditSession.prototype.getAnnotations = function () {\n return this.$annotations || [];\n };\n EditSession.prototype.clearAnnotations = function () {\n this.setAnnotations([]);\n };\n EditSession.prototype.$detectNewLine = function (text) {\n var match = text.match(/^.*?(\\r?\\n)/m);\n if (match) {\n this.$autoNewLine = match[1];\n }\n else {\n this.$autoNewLine = \"\\n\";\n }\n };\n EditSession.prototype.getWordRange = function (row, column) {\n var line = this.getLine(row);\n var inToken = false;\n if (column > 0)\n inToken = !!line.charAt(column - 1).match(this.tokenRe);\n if (!inToken)\n inToken = !!line.charAt(column).match(this.tokenRe);\n if (inToken)\n var re = this.tokenRe;\n else if (/^\\s+$/.test(line.slice(column - 1, column + 1)))\n var re = /\\s/;\n else\n var re = this.nonTokenRe;\n var start = column;\n if (start > 0) {\n do {\n start--;\n } while (start >= 0 && line.charAt(start).match(re));\n start++;\n }\n var end = column;\n while (end < line.length && line.charAt(end).match(re)) {\n end++;\n }\n return new Range(row, start, row, end);\n };\n EditSession.prototype.getAWordRange = function (row, column) {\n var wordRange = this.getWordRange(row, column);\n var line = this.getLine(wordRange.end.row);\n while (line.charAt(wordRange.end.column).match(/[ \\t]/)) {\n wordRange.end.column += 1;\n }\n return wordRange;\n };\n EditSession.prototype.setNewLineMode = function (newLineMode) {\n this.doc.setNewLineMode(newLineMode);\n };\n EditSession.prototype.getNewLineMode = function () {\n return this.doc.getNewLineMode();\n };\n EditSession.prototype.setUseWorker = function (useWorker) { this.setOption(\"useWorker\", useWorker); };\n EditSession.prototype.getUseWorker = function () { return this.$useWorker; };\n EditSession.prototype.onReloadTokenizer = function (e) {\n var rows = e.data;\n this.bgTokenizer.start(rows.first);\n this._signal(\"tokenizerUpdate\", e);\n };\n EditSession.prototype.setMode = function (mode, cb) {\n if (mode && typeof mode === \"object\") {\n if (mode.getTokenizer)\n return this.$onChangeMode(mode);\n var options = mode;\n var path = options.path;\n }\n else {\n path = mode || \"ace/mode/text\";\n }\n if (!this.$modes[\"ace/mode/text\"])\n this.$modes[\"ace/mode/text\"] = new TextMode();\n if (this.$modes[path] && !options) {\n this.$onChangeMode(this.$modes[path]);\n cb && cb();\n return;\n }\n this.$modeId = path;\n config.loadModule([\"mode\", path], function (m) {\n if (this.$modeId !== path)\n return cb && cb();\n if (this.$modes[path] && !options) {\n this.$onChangeMode(this.$modes[path]);\n }\n else if (m && m.Mode) {\n m = new m.Mode(options);\n if (!options) {\n this.$modes[path] = m;\n m.$id = path;\n }\n this.$onChangeMode(m);\n }\n cb && cb();\n }.bind(this));\n if (!this.$mode)\n this.$onChangeMode(this.$modes[\"ace/mode/text\"], true);\n };\n EditSession.prototype.$onChangeMode = function (mode, $isPlaceholder) {\n if (!$isPlaceholder)\n this.$modeId = mode.$id;\n if (this.$mode === mode)\n return;\n var oldMode = this.$mode;\n this.$mode = mode;\n this.$stopWorker();\n if (this.$useWorker)\n this.$startWorker();\n var tokenizer = mode.getTokenizer();\n if (tokenizer.on !== undefined) {\n var onReloadTokenizer = this.onReloadTokenizer.bind(this);\n tokenizer.on(\"update\", onReloadTokenizer);\n }\n this.bgTokenizer.setTokenizer(tokenizer);\n this.bgTokenizer.setDocument(this.getDocument());\n this.tokenRe = mode.tokenRe;\n this.nonTokenRe = mode.nonTokenRe;\n if (!$isPlaceholder) {\n if (mode.attachToSession)\n mode.attachToSession(this);\n this.$options.wrapMethod.set.call(this, this.$wrapMethod);\n this.$setFolding(mode.foldingRules);\n this.bgTokenizer.start(0);\n this._emit(\"changeMode\", { oldMode: oldMode, mode: mode });\n }\n };\n EditSession.prototype.$stopWorker = function () {\n if (this.$worker) {\n this.$worker.terminate();\n this.$worker = null;\n }\n };\n EditSession.prototype.$startWorker = function () {\n try {\n this.$worker = this.$mode.createWorker(this);\n }\n catch (e) {\n config.warn(\"Could not load worker\", e);\n this.$worker = null;\n }\n };\n EditSession.prototype.getMode = function () {\n return this.$mode;\n };\n EditSession.prototype.setScrollTop = function (scrollTop) {\n if (this.$scrollTop === scrollTop || isNaN(scrollTop))\n return;\n this.$scrollTop = scrollTop;\n this._signal(\"changeScrollTop\", scrollTop);\n };\n EditSession.prototype.getScrollTop = function () {\n return this.$scrollTop;\n };\n EditSession.prototype.setScrollLeft = function (scrollLeft) {\n if (this.$scrollLeft === scrollLeft || isNaN(scrollLeft))\n return;\n this.$scrollLeft = scrollLeft;\n this._signal(\"changeScrollLeft\", scrollLeft);\n };\n EditSession.prototype.getScrollLeft = function () {\n return this.$scrollLeft;\n };\n EditSession.prototype.getScreenWidth = function () {\n this.$computeWidth();\n if (this.lineWidgets)\n return Math.max(this.getLineWidgetMaxWidth(), this.screenWidth);\n return this.screenWidth;\n };\n EditSession.prototype.getLineWidgetMaxWidth = function () {\n if (this.lineWidgetsWidth != null)\n return this.lineWidgetsWidth;\n var width = 0;\n this.lineWidgets.forEach(function (w) {\n if (w && w.screenWidth > width)\n width = w.screenWidth;\n });\n return this.lineWidgetWidth = width;\n };\n EditSession.prototype.$computeWidth = function (force) {\n if (this.$modified || force) {\n this.$modified = false;\n if (this.$useWrapMode)\n return this.screenWidth = this.$wrapLimit;\n var lines = this.doc.getAllLines();\n var cache = this.$rowLengthCache;\n var longestScreenLine = 0;\n var foldIndex = 0;\n var foldLine = this.$foldData[foldIndex];\n var foldStart = foldLine ? foldLine.start.row : Infinity;\n var len = lines.length;\n for (var i = 0; i < len; i++) {\n if (i > foldStart) {\n i = foldLine.end.row + 1;\n if (i >= len)\n break;\n foldLine = this.$foldData[foldIndex++];\n foldStart = foldLine ? foldLine.start.row : Infinity;\n }\n if (cache[i] == null)\n cache[i] = this.$getStringScreenWidth(lines[i])[0];\n if (cache[i] > longestScreenLine)\n longestScreenLine = cache[i];\n }\n this.screenWidth = longestScreenLine;\n }\n };\n EditSession.prototype.getLine = function (row) {\n return this.doc.getLine(row);\n };\n EditSession.prototype.getLines = function (firstRow, lastRow) {\n return this.doc.getLines(firstRow, lastRow);\n };\n EditSession.prototype.getLength = function () {\n return this.doc.getLength();\n };\n EditSession.prototype.getTextRange = function (range) {\n return this.doc.getTextRange(range || this.selection.getRange());\n };\n EditSession.prototype.insert = function (position, text) {\n return this.doc.insert(position, text);\n };\n EditSession.prototype.remove = function (range) {\n return this.doc.remove(range);\n };\n EditSession.prototype.removeFullLines = function (firstRow, lastRow) {\n return this.doc.removeFullLines(firstRow, lastRow);\n };\n EditSession.prototype.undoChanges = function (deltas, dontSelect) {\n if (!deltas.length)\n return;\n this.$fromUndo = true;\n for (var i = deltas.length - 1; i != -1; i--) {\n var delta = deltas[i];\n if (delta.action == \"insert\" || delta.action == \"remove\") {\n this.doc.revertDelta(delta);\n }\n else if (delta.folds) {\n this.addFolds(delta.folds);\n }\n }\n if (!dontSelect && this.$undoSelect) {\n if (deltas.selectionBefore)\n this.selection.fromJSON(deltas.selectionBefore);\n else\n this.selection.setRange(this.$getUndoSelection(deltas, true));\n }\n this.$fromUndo = false;\n };\n EditSession.prototype.redoChanges = function (deltas, dontSelect) {\n if (!deltas.length)\n return;\n this.$fromUndo = true;\n for (var i = 0; i < deltas.length; i++) {\n var delta = deltas[i];\n if (delta.action == \"insert\" || delta.action == \"remove\") {\n this.doc.$safeApplyDelta(delta);\n }\n }\n if (!dontSelect && this.$undoSelect) {\n if (deltas.selectionAfter)\n this.selection.fromJSON(deltas.selectionAfter);\n else\n this.selection.setRange(this.$getUndoSelection(deltas, false));\n }\n this.$fromUndo = false;\n };\n EditSession.prototype.setUndoSelect = function (enable) {\n this.$undoSelect = enable;\n };\n EditSession.prototype.$getUndoSelection = function (deltas, isUndo) {\n function isInsert(delta) {\n return isUndo ? delta.action !== \"insert\" : delta.action === \"insert\";\n }\n var range, point;\n for (var i = 0; i < deltas.length; i++) {\n var delta = deltas[i];\n if (!delta.start)\n continue; // skip folds\n if (!range) {\n if (isInsert(delta)) {\n range = Range.fromPoints(delta.start, delta.end);\n }\n else {\n range = Range.fromPoints(delta.start, delta.start);\n }\n continue;\n }\n if (isInsert(delta)) {\n point = delta.start;\n if (range.compare(point.row, point.column) == -1) {\n range.setStart(point);\n }\n point = delta.end;\n if (range.compare(point.row, point.column) == 1) {\n range.setEnd(point);\n }\n }\n else {\n point = delta.start;\n if (range.compare(point.row, point.column) == -1) {\n range = Range.fromPoints(delta.start, delta.start);\n }\n }\n }\n return range;\n };\n EditSession.prototype.replace = function (range, text) {\n return this.doc.replace(range, text);\n };\n EditSession.prototype.moveText = function (fromRange, toPosition, copy) {\n var text = this.getTextRange(fromRange);\n var folds = this.getFoldsInRange(fromRange);\n var toRange = Range.fromPoints(toPosition, toPosition);\n if (!copy) {\n this.remove(fromRange);\n var rowDiff = fromRange.start.row - fromRange.end.row;\n var collDiff = rowDiff ? -fromRange.end.column : fromRange.start.column - fromRange.end.column;\n if (collDiff) {\n if (toRange.start.row == fromRange.end.row && toRange.start.column > fromRange.end.column)\n toRange.start.column += collDiff;\n if (toRange.end.row == fromRange.end.row && toRange.end.column > fromRange.end.column)\n toRange.end.column += collDiff;\n }\n if (rowDiff && toRange.start.row >= fromRange.end.row) {\n toRange.start.row += rowDiff;\n toRange.end.row += rowDiff;\n }\n }\n toRange.end = this.insert(toRange.start, text);\n if (folds.length) {\n var oldStart = fromRange.start;\n var newStart = toRange.start;\n var rowDiff = newStart.row - oldStart.row;\n var collDiff = newStart.column - oldStart.column;\n this.addFolds(folds.map(function (x) {\n x = x.clone();\n if (x.start.row == oldStart.row)\n x.start.column += collDiff;\n if (x.end.row == oldStart.row)\n x.end.column += collDiff;\n x.start.row += rowDiff;\n x.end.row += rowDiff;\n return x;\n }));\n }\n return toRange;\n };\n EditSession.prototype.indentRows = function (startRow, endRow, indentString) {\n indentString = indentString.replace(/\\t/g, this.getTabString());\n for (var row = startRow; row <= endRow; row++)\n this.doc.insertInLine({ row: row, column: 0 }, indentString);\n };\n EditSession.prototype.outdentRows = function (range) {\n var rowRange = range.collapseRows();\n var deleteRange = new Range(0, 0, 0, 0);\n var size = this.getTabSize();\n for (var i = rowRange.start.row; i <= rowRange.end.row; ++i) {\n var line = this.getLine(i);\n deleteRange.start.row = i;\n deleteRange.end.row = i;\n for (var j = 0; j < size; ++j)\n if (line.charAt(j) != ' ')\n break;\n if (j < size && line.charAt(j) == '\\t') {\n deleteRange.start.column = j;\n deleteRange.end.column = j + 1;\n }\n else {\n deleteRange.start.column = 0;\n deleteRange.end.column = j;\n }\n this.remove(deleteRange);\n }\n };\n EditSession.prototype.$moveLines = function (firstRow, lastRow, dir) {\n firstRow = this.getRowFoldStart(firstRow);\n lastRow = this.getRowFoldEnd(lastRow);\n if (dir < 0) {\n var row = this.getRowFoldStart(firstRow + dir);\n if (row < 0)\n return 0;\n var diff = row - firstRow;\n }\n else if (dir > 0) {\n var row = this.getRowFoldEnd(lastRow + dir);\n if (row > this.doc.getLength() - 1)\n return 0;\n var diff = row - lastRow;\n }\n else {\n firstRow = this.$clipRowToDocument(firstRow);\n lastRow = this.$clipRowToDocument(lastRow);\n var diff = lastRow - firstRow + 1;\n }\n var range = new Range(firstRow, 0, lastRow, Number.MAX_VALUE);\n var folds = this.getFoldsInRange(range).map(function (x) {\n x = x.clone();\n x.start.row += diff;\n x.end.row += diff;\n return x;\n });\n var lines = dir == 0\n ? this.doc.getLines(firstRow, lastRow)\n : this.doc.removeFullLines(firstRow, lastRow);\n this.doc.insertFullLines(firstRow + diff, lines);\n folds.length && this.addFolds(folds);\n return diff;\n };\n EditSession.prototype.moveLinesUp = function (firstRow, lastRow) {\n return this.$moveLines(firstRow, lastRow, -1);\n };\n EditSession.prototype.moveLinesDown = function (firstRow, lastRow) {\n return this.$moveLines(firstRow, lastRow, 1);\n };\n EditSession.prototype.duplicateLines = function (firstRow, lastRow) {\n return this.$moveLines(firstRow, lastRow, 0);\n };\n EditSession.prototype.$clipRowToDocument = function (row) {\n return Math.max(0, Math.min(row, this.doc.getLength() - 1));\n };\n EditSession.prototype.$clipColumnToRow = function (row, column) {\n if (column < 0)\n return 0;\n return Math.min(this.doc.getLine(row).length, column);\n };\n EditSession.prototype.$clipPositionToDocument = function (row, column) {\n column = Math.max(0, column);\n if (row < 0) {\n row = 0;\n column = 0;\n }\n else {\n var len = this.doc.getLength();\n if (row >= len) {\n row = len - 1;\n column = this.doc.getLine(len - 1).length;\n }\n else {\n column = Math.min(this.doc.getLine(row).length, column);\n }\n }\n return {\n row: row,\n column: column\n };\n };\n EditSession.prototype.$clipRangeToDocument = function (range) {\n if (range.start.row < 0) {\n range.start.row = 0;\n range.start.column = 0;\n }\n else {\n range.start.column = this.$clipColumnToRow(range.start.row, range.start.column);\n }\n var len = this.doc.getLength() - 1;\n if (range.end.row > len) {\n range.end.row = len;\n range.end.column = this.doc.getLine(len).length;\n }\n else {\n range.end.column = this.$clipColumnToRow(range.end.row, range.end.column);\n }\n return range;\n };\n EditSession.prototype.setUseWrapMode = function (useWrapMode) {\n if (useWrapMode != this.$useWrapMode) {\n this.$useWrapMode = useWrapMode;\n this.$modified = true;\n this.$resetRowCache(0);\n if (useWrapMode) {\n var len = this.getLength();\n this.$wrapData = Array(len);\n this.$updateWrapData(0, len - 1);\n }\n this._signal(\"changeWrapMode\");\n }\n };\n EditSession.prototype.getUseWrapMode = function () {\n return this.$useWrapMode;\n };\n EditSession.prototype.setWrapLimitRange = function (min, max) {\n if (this.$wrapLimitRange.min !== min || this.$wrapLimitRange.max !== max) {\n this.$wrapLimitRange = { min: min, max: max };\n this.$modified = true;\n this.$bidiHandler.markAsDirty();\n if (this.$useWrapMode)\n this._signal(\"changeWrapMode\");\n }\n };\n EditSession.prototype.adjustWrapLimit = function (desiredLimit, $printMargin) {\n var limits = this.$wrapLimitRange;\n if (limits.max < 0)\n limits = { min: $printMargin, max: $printMargin };\n var wrapLimit = this.$constrainWrapLimit(desiredLimit, limits.min, limits.max);\n if (wrapLimit != this.$wrapLimit && wrapLimit > 1) {\n this.$wrapLimit = wrapLimit;\n this.$modified = true;\n if (this.$useWrapMode) {\n this.$updateWrapData(0, this.getLength() - 1);\n this.$resetRowCache(0);\n this._signal(\"changeWrapLimit\");\n }\n return true;\n }\n return false;\n };\n EditSession.prototype.$constrainWrapLimit = function (wrapLimit, min, max) {\n if (min)\n wrapLimit = Math.max(min, wrapLimit);\n if (max)\n wrapLimit = Math.min(max, wrapLimit);\n return wrapLimit;\n };\n EditSession.prototype.getWrapLimit = function () {\n return this.$wrapLimit;\n };\n EditSession.prototype.setWrapLimit = function (limit) {\n this.setWrapLimitRange(limit, limit);\n };\n EditSession.prototype.getWrapLimitRange = function () {\n return {\n min: this.$wrapLimitRange.min,\n max: this.$wrapLimitRange.max\n };\n };\n EditSession.prototype.$updateInternalDataOnChange = function (delta) {\n var useWrapMode = this.$useWrapMode;\n var action = delta.action;\n var start = delta.start;\n var end = delta.end;\n var firstRow = start.row;\n var lastRow = end.row;\n var len = lastRow - firstRow;\n var removedFolds = null;\n this.$updating = true;\n if (len != 0) {\n if (action === \"remove\") {\n this[useWrapMode ? \"$wrapData\" : \"$rowLengthCache\"].splice(firstRow, len);\n var foldLines = this.$foldData;\n removedFolds = this.getFoldsInRange(delta);\n this.removeFolds(removedFolds);\n var foldLine = this.getFoldLine(end.row);\n var idx = 0;\n if (foldLine) {\n foldLine.addRemoveChars(end.row, end.column, start.column - end.column);\n foldLine.shiftRow(-len);\n var foldLineBefore = this.getFoldLine(firstRow);\n if (foldLineBefore && foldLineBefore !== foldLine) {\n foldLineBefore.merge(foldLine);\n foldLine = foldLineBefore;\n }\n idx = foldLines.indexOf(foldLine) + 1;\n }\n for (idx; idx < foldLines.length; idx++) {\n var foldLine = foldLines[idx];\n if (foldLine.start.row >= end.row) {\n foldLine.shiftRow(-len);\n }\n }\n lastRow = firstRow;\n }\n else {\n var args = Array(len);\n args.unshift(firstRow, 0);\n var arr = useWrapMode ? this.$wrapData : this.$rowLengthCache;\n arr.splice.apply(arr, args);\n var foldLines = this.$foldData;\n var foldLine = this.getFoldLine(firstRow);\n var idx = 0;\n if (foldLine) {\n var cmp = foldLine.range.compareInside(start.row, start.column);\n if (cmp == 0) {\n foldLine = foldLine.split(start.row, start.column);\n if (foldLine) {\n foldLine.shiftRow(len);\n foldLine.addRemoveChars(lastRow, 0, end.column - start.column);\n }\n }\n else \n if (cmp == -1) {\n foldLine.addRemoveChars(firstRow, 0, end.column - start.column);\n foldLine.shiftRow(len);\n }\n idx = foldLines.indexOf(foldLine) + 1;\n }\n for (idx; idx < foldLines.length; idx++) {\n var foldLine = foldLines[idx];\n if (foldLine.start.row >= firstRow) {\n foldLine.shiftRow(len);\n }\n }\n }\n }\n else {\n len = Math.abs(delta.start.column - delta.end.column);\n if (action === \"remove\") {\n removedFolds = this.getFoldsInRange(delta);\n this.removeFolds(removedFolds);\n len = -len;\n }\n var foldLine = this.getFoldLine(firstRow);\n if (foldLine) {\n foldLine.addRemoveChars(firstRow, start.column, len);\n }\n }\n if (useWrapMode && this.$wrapData.length != this.doc.getLength()) {\n console.error(\"doc.getLength() and $wrapData.length have to be the same!\");\n }\n this.$updating = false;\n if (useWrapMode)\n this.$updateWrapData(firstRow, lastRow);\n else\n this.$updateRowLengthCache(firstRow, lastRow);\n return removedFolds;\n };\n EditSession.prototype.$updateRowLengthCache = function (firstRow, lastRow, b) {\n this.$rowLengthCache[firstRow] = null;\n this.$rowLengthCache[lastRow] = null;\n };\n EditSession.prototype.$updateWrapData = function (firstRow, lastRow) {\n var lines = this.doc.getAllLines();\n var tabSize = this.getTabSize();\n var wrapData = this.$wrapData;\n var wrapLimit = this.$wrapLimit;\n var tokens;\n var foldLine;\n var row = firstRow;\n lastRow = Math.min(lastRow, lines.length - 1);\n while (row <= lastRow) {\n foldLine = this.getFoldLine(row, foldLine);\n if (!foldLine) {\n tokens = this.$getDisplayTokens(lines[row]);\n wrapData[row] = this.$computeWrapSplits(tokens, wrapLimit, tabSize);\n row++;\n }\n else {\n tokens = [];\n foldLine.walk(function (placeholder, row, column, lastColumn) {\n var walkTokens;\n if (placeholder != null) {\n walkTokens = this.$getDisplayTokens(placeholder, tokens.length);\n walkTokens[0] = PLACEHOLDER_START;\n for (var i = 1; i < walkTokens.length; i++) {\n walkTokens[i] = PLACEHOLDER_BODY;\n }\n }\n else {\n walkTokens = this.$getDisplayTokens(lines[row].substring(lastColumn, column), tokens.length);\n }\n tokens = tokens.concat(walkTokens);\n }.bind(this), foldLine.end.row, lines[foldLine.end.row].length + 1);\n wrapData[foldLine.start.row] = this.$computeWrapSplits(tokens, wrapLimit, tabSize);\n row = foldLine.end.row + 1;\n }\n }\n };\n EditSession.prototype.$computeWrapSplits = function (tokens, wrapLimit, tabSize) {\n if (tokens.length == 0) {\n return [];\n }\n var splits = [];\n var displayLength = tokens.length;\n var lastSplit = 0, lastDocSplit = 0;\n var isCode = this.$wrapAsCode;\n var indentedSoftWrap = this.$indentedSoftWrap;\n var maxIndent = wrapLimit <= Math.max(2 * tabSize, 8)\n || indentedSoftWrap === false ? 0 : Math.floor(wrapLimit / 2);\n function getWrapIndent() {\n var indentation = 0;\n if (maxIndent === 0)\n return indentation;\n if (indentedSoftWrap) {\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n if (token == SPACE)\n indentation += 1;\n else if (token == TAB)\n indentation += tabSize;\n else if (token == TAB_SPACE)\n continue;\n else\n break;\n }\n }\n if (isCode && indentedSoftWrap !== false)\n indentation += tabSize;\n return Math.min(indentation, maxIndent);\n }\n function addSplit(screenPos) {\n var len = screenPos - lastSplit;\n for (var i = lastSplit; i < screenPos; i++) {\n var ch = tokens[i];\n if (ch === 12 || ch === 2)\n len -= 1;\n }\n if (!splits.length) {\n indent = getWrapIndent();\n splits.indent = indent;\n }\n lastDocSplit += len;\n splits.push(lastDocSplit);\n lastSplit = screenPos;\n }\n var indent = 0;\n while (displayLength - lastSplit > wrapLimit - indent) {\n var split = lastSplit + wrapLimit - indent;\n if (tokens[split - 1] >= SPACE && tokens[split] >= SPACE) {\n addSplit(split);\n continue;\n }\n if (tokens[split] == PLACEHOLDER_START || tokens[split] == PLACEHOLDER_BODY) {\n for (split; split != lastSplit - 1; split--) {\n if (tokens[split] == PLACEHOLDER_START) {\n break;\n }\n }\n if (split > lastSplit) {\n addSplit(split);\n continue;\n }\n split = lastSplit + wrapLimit;\n for (split; split < tokens.length; split++) {\n if (tokens[split] != PLACEHOLDER_BODY) {\n break;\n }\n }\n if (split == tokens.length) {\n break; // Breaks the while-loop.\n }\n addSplit(split);\n continue;\n }\n var minSplit = Math.max(split - (wrapLimit - (wrapLimit >> 2)), lastSplit - 1);\n while (split > minSplit && tokens[split] < PLACEHOLDER_START) {\n split--;\n }\n if (isCode) {\n while (split > minSplit && tokens[split] < PLACEHOLDER_START) {\n split--;\n }\n while (split > minSplit && tokens[split] == PUNCTUATION) {\n split--;\n }\n }\n else {\n while (split > minSplit && tokens[split] < SPACE) {\n split--;\n }\n }\n if (split > minSplit) {\n addSplit(++split);\n continue;\n }\n split = lastSplit + wrapLimit;\n if (tokens[split] == CHAR_EXT)\n split--;\n addSplit(split - indent);\n }\n return splits;\n };\n EditSession.prototype.$getDisplayTokens = function (str, offset) {\n var arr = [];\n var tabSize;\n offset = offset || 0;\n for (var i = 0; i < str.length; i++) {\n var c = str.charCodeAt(i);\n if (c == 9) {\n tabSize = this.getScreenTabSize(arr.length + offset);\n arr.push(TAB);\n for (var n = 1; n < tabSize; n++) {\n arr.push(TAB_SPACE);\n }\n }\n else if (c == 32) {\n arr.push(SPACE);\n }\n else if ((c > 39 && c < 48) || (c > 57 && c < 64)) {\n arr.push(PUNCTUATION);\n }\n else if (c >= 0x1100 && isFullWidth(c)) {\n arr.push(CHAR, CHAR_EXT);\n }\n else {\n arr.push(CHAR);\n }\n }\n return arr;\n };\n EditSession.prototype.$getStringScreenWidth = function (str, maxScreenColumn, screenColumn) {\n if (maxScreenColumn == 0)\n return [0, 0];\n if (maxScreenColumn == null)\n maxScreenColumn = Infinity;\n screenColumn = screenColumn || 0;\n var c, column;\n for (column = 0; column < str.length; column++) {\n c = str.charCodeAt(column);\n if (c == 9) {\n screenColumn += this.getScreenTabSize(screenColumn);\n }\n else if (c >= 0x1100 && isFullWidth(c)) {\n screenColumn += 2;\n }\n else {\n screenColumn += 1;\n }\n if (screenColumn > maxScreenColumn) {\n break;\n }\n }\n return [screenColumn, column];\n };\n EditSession.prototype.getRowLength = function (row) {\n var h = 1;\n if (this.lineWidgets)\n h += this.lineWidgets[row] && this.lineWidgets[row].rowCount || 0;\n if (!this.$useWrapMode || !this.$wrapData[row])\n return h;\n else\n return this.$wrapData[row].length + h;\n };\n EditSession.prototype.getRowLineCount = function (row) {\n if (!this.$useWrapMode || !this.$wrapData[row]) {\n return 1;\n }\n else {\n return this.$wrapData[row].length + 1;\n }\n };\n EditSession.prototype.getRowWrapIndent = function (screenRow) {\n if (this.$useWrapMode) {\n var pos = this.screenToDocumentPosition(screenRow, Number.MAX_VALUE);\n var splits = this.$wrapData[pos.row];\n return splits.length && splits[0] < pos.column ? splits.indent : 0;\n }\n else {\n return 0;\n }\n };\n EditSession.prototype.getScreenLastRowColumn = function (screenRow) {\n var pos = this.screenToDocumentPosition(screenRow, Number.MAX_VALUE);\n return this.documentToScreenColumn(pos.row, pos.column);\n };\n EditSession.prototype.getDocumentLastRowColumn = function (docRow, docColumn) {\n var screenRow = this.documentToScreenRow(docRow, docColumn);\n return this.getScreenLastRowColumn(screenRow);\n };\n EditSession.prototype.getDocumentLastRowColumnPosition = function (docRow, docColumn) {\n var screenRow = this.documentToScreenRow(docRow, docColumn);\n return this.screenToDocumentPosition(screenRow, Number.MAX_VALUE / 10);\n };\n EditSession.prototype.getRowSplitData = function (row) {\n if (!this.$useWrapMode) {\n return undefined;\n }\n else {\n return this.$wrapData[row];\n }\n };\n EditSession.prototype.getScreenTabSize = function (screenColumn) {\n return this.$tabSize - (screenColumn % this.$tabSize | 0);\n };\n EditSession.prototype.screenToDocumentRow = function (screenRow, screenColumn) {\n return this.screenToDocumentPosition(screenRow, screenColumn).row;\n };\n EditSession.prototype.screenToDocumentColumn = function (screenRow, screenColumn) {\n return this.screenToDocumentPosition(screenRow, screenColumn).column;\n };\n EditSession.prototype.screenToDocumentPosition = function (screenRow, screenColumn, offsetX) {\n if (screenRow < 0)\n return { row: 0, column: 0 };\n var line;\n var docRow = 0;\n var docColumn = 0;\n var column;\n var row = 0;\n var rowLength = 0;\n var rowCache = this.$screenRowCache;\n var i = this.$getRowCacheIndex(rowCache, screenRow);\n var l = rowCache.length;\n if (l && i >= 0) {\n var row = rowCache[i];\n var docRow = this.$docRowCache[i];\n var doCache = screenRow > rowCache[l - 1];\n }\n else {\n var doCache = !l;\n }\n var maxRow = this.getLength() - 1;\n var foldLine = this.getNextFoldLine(docRow);\n var foldStart = foldLine ? foldLine.start.row : Infinity;\n while (row <= screenRow) {\n rowLength = this.getRowLength(docRow);\n if (row + rowLength > screenRow || docRow >= maxRow) {\n break;\n }\n else {\n row += rowLength;\n docRow++;\n if (docRow > foldStart) {\n docRow = foldLine.end.row + 1;\n foldLine = this.getNextFoldLine(docRow, foldLine);\n foldStart = foldLine ? foldLine.start.row : Infinity;\n }\n }\n if (doCache) {\n this.$docRowCache.push(docRow);\n this.$screenRowCache.push(row);\n }\n }\n if (foldLine && foldLine.start.row <= docRow) {\n line = this.getFoldDisplayLine(foldLine);\n docRow = foldLine.start.row;\n }\n else if (row + rowLength <= screenRow || docRow > maxRow) {\n return {\n row: maxRow,\n column: this.getLine(maxRow).length\n };\n }\n else {\n line = this.getLine(docRow);\n foldLine = null;\n }\n var wrapIndent = 0, splitIndex = Math.floor(screenRow - row);\n if (this.$useWrapMode) {\n var splits = this.$wrapData[docRow];\n if (splits) {\n column = splits[splitIndex];\n if (splitIndex > 0 && splits.length) {\n wrapIndent = splits.indent;\n docColumn = splits[splitIndex - 1] || splits[splits.length - 1];\n line = line.substring(docColumn);\n }\n }\n }\n if (offsetX !== undefined && this.$bidiHandler.isBidiRow(row + splitIndex, docRow, splitIndex))\n screenColumn = this.$bidiHandler.offsetToCol(offsetX);\n docColumn += this.$getStringScreenWidth(line, screenColumn - wrapIndent)[1];\n if (this.$useWrapMode && docColumn >= column)\n docColumn = column - 1;\n if (foldLine)\n return foldLine.idxToPosition(docColumn);\n return { row: docRow, column: docColumn };\n };\n EditSession.prototype.documentToScreenPosition = function (docRow, docColumn) {\n if (typeof docColumn === \"undefined\")\n var pos = this.$clipPositionToDocument(docRow.row, docRow.column);\n else\n pos = this.$clipPositionToDocument(docRow, docColumn);\n docRow = pos.row;\n docColumn = pos.column;\n var screenRow = 0;\n var foldStartRow = null;\n var fold = null;\n fold = this.getFoldAt(docRow, docColumn, 1);\n if (fold) {\n docRow = fold.start.row;\n docColumn = fold.start.column;\n }\n var rowEnd, row = 0;\n var rowCache = this.$docRowCache;\n var i = this.$getRowCacheIndex(rowCache, docRow);\n var l = rowCache.length;\n if (l && i >= 0) {\n var row = rowCache[i];\n var screenRow = this.$screenRowCache[i];\n var doCache = docRow > rowCache[l - 1];\n }\n else {\n var doCache = !l;\n }\n var foldLine = this.getNextFoldLine(row);\n var foldStart = foldLine ? foldLine.start.row : Infinity;\n while (row < docRow) {\n if (row >= foldStart) {\n rowEnd = foldLine.end.row + 1;\n if (rowEnd > docRow)\n break;\n foldLine = this.getNextFoldLine(rowEnd, foldLine);\n foldStart = foldLine ? foldLine.start.row : Infinity;\n }\n else {\n rowEnd = row + 1;\n }\n screenRow += this.getRowLength(row);\n row = rowEnd;\n if (doCache) {\n this.$docRowCache.push(row);\n this.$screenRowCache.push(screenRow);\n }\n }\n var textLine = \"\";\n if (foldLine && row >= foldStart) {\n textLine = this.getFoldDisplayLine(foldLine, docRow, docColumn);\n foldStartRow = foldLine.start.row;\n }\n else {\n textLine = this.getLine(docRow).substring(0, docColumn);\n foldStartRow = docRow;\n }\n var wrapIndent = 0;\n if (this.$useWrapMode) {\n var wrapRow = this.$wrapData[foldStartRow];\n if (wrapRow) {\n var screenRowOffset = 0;\n while (textLine.length >= wrapRow[screenRowOffset]) {\n screenRow++;\n screenRowOffset++;\n }\n textLine = textLine.substring(wrapRow[screenRowOffset - 1] || 0, textLine.length);\n wrapIndent = screenRowOffset > 0 ? wrapRow.indent : 0;\n }\n }\n if (this.lineWidgets && this.lineWidgets[row] && this.lineWidgets[row].rowsAbove)\n screenRow += this.lineWidgets[row].rowsAbove;\n return {\n row: screenRow,\n column: wrapIndent + this.$getStringScreenWidth(textLine)[0]\n };\n };\n EditSession.prototype.documentToScreenColumn = function (row, docColumn) {\n return this.documentToScreenPosition(row, docColumn).column;\n };\n EditSession.prototype.documentToScreenRow = function (docRow, docColumn) {\n return this.documentToScreenPosition(docRow, docColumn).row;\n };\n EditSession.prototype.getScreenLength = function () {\n var screenRows = 0;\n var fold = null;\n if (!this.$useWrapMode) {\n screenRows = this.getLength();\n var foldData = this.$foldData;\n for (var i = 0; i < foldData.length; i++) {\n fold = foldData[i];\n screenRows -= fold.end.row - fold.start.row;\n }\n }\n else {\n var lastRow = this.$wrapData.length;\n var row = 0, i = 0;\n var fold = this.$foldData[i++];\n var foldStart = fold ? fold.start.row : Infinity;\n while (row < lastRow) {\n var splits = this.$wrapData[row];\n screenRows += splits ? splits.length + 1 : 1;\n row++;\n if (row > foldStart) {\n row = fold.end.row + 1;\n fold = this.$foldData[i++];\n foldStart = fold ? fold.start.row : Infinity;\n }\n }\n }\n if (this.lineWidgets)\n screenRows += this.$getWidgetScreenLength();\n return screenRows;\n };\n EditSession.prototype.$setFontMetrics = function (fm) {\n if (!this.$enableVarChar)\n return;\n this.$getStringScreenWidth = function (str, maxScreenColumn, screenColumn) {\n if (maxScreenColumn === 0)\n return [0, 0];\n if (!maxScreenColumn)\n maxScreenColumn = Infinity;\n screenColumn = screenColumn || 0;\n var c, column;\n for (column = 0; column < str.length; column++) {\n c = str.charAt(column);\n if (c === \"\\t\") {\n screenColumn += this.getScreenTabSize(screenColumn);\n }\n else {\n screenColumn += fm.getCharacterWidth(c);\n }\n if (screenColumn > maxScreenColumn) {\n break;\n }\n }\n return [screenColumn, column];\n };\n };\n EditSession.prototype.destroy = function () {\n if (!this.destroyed) {\n this.bgTokenizer.setDocument(null);\n this.bgTokenizer.cleanup();\n this.destroyed = true;\n }\n this.$stopWorker();\n this.removeAllListeners();\n if (this.doc) {\n this.doc.off(\"change\", this.$onChange);\n }\n this.selection.detach();\n };\n return EditSession;\n}());\nEditSession.$uid = 0;\nEditSession.prototype.$modes = config.$modes;\nEditSession.prototype.getValue = EditSession.prototype.toString;\nEditSession.prototype.$defaultUndoManager = {\n undo: function () { },\n redo: function () { },\n hasUndo: function () { },\n hasRedo: function () { },\n reset: function () { },\n add: function () { },\n addSelection: function () { },\n startNewGroup: function () { },\n addSession: function () { }\n};\nEditSession.prototype.$overwrite = false;\nEditSession.prototype.$mode = null;\nEditSession.prototype.$modeId = null;\nEditSession.prototype.$scrollTop = 0;\nEditSession.prototype.$scrollLeft = 0;\nEditSession.prototype.$wrapLimit = 80;\nEditSession.prototype.$useWrapMode = false;\nEditSession.prototype.$wrapLimitRange = {\n min: null,\n max: null\n};\nEditSession.prototype.lineWidgets = null;\nEditSession.prototype.isFullWidth = isFullWidth;\noop.implement(EditSession.prototype, EventEmitter);\nvar CHAR = 1, CHAR_EXT = 2, PLACEHOLDER_START = 3, PLACEHOLDER_BODY = 4, PUNCTUATION = 9, SPACE = 10, TAB = 11, TAB_SPACE = 12;\nfunction isFullWidth(c) {\n if (c < 0x1100)\n return false;\n return c >= 0x1100 && c <= 0x115F ||\n c >= 0x11A3 && c <= 0x11A7 ||\n c >= 0x11FA && c <= 0x11FF ||\n c >= 0x2329 && c <= 0x232A ||\n c >= 0x2E80 && c <= 0x2E99 ||\n c >= 0x2E9B && c <= 0x2EF3 ||\n c >= 0x2F00 && c <= 0x2FD5 ||\n c >= 0x2FF0 && c <= 0x2FFB ||\n c >= 0x3000 && c <= 0x303E ||\n c >= 0x3041 && c <= 0x3096 ||\n c >= 0x3099 && c <= 0x30FF ||\n c >= 0x3105 && c <= 0x312D ||\n c >= 0x3131 && c <= 0x318E ||\n c >= 0x3190 && c <= 0x31BA ||\n c >= 0x31C0 && c <= 0x31E3 ||\n c >= 0x31F0 && c <= 0x321E ||\n c >= 0x3220 && c <= 0x3247 ||\n c >= 0x3250 && c <= 0x32FE ||\n c >= 0x3300 && c <= 0x4DBF ||\n c >= 0x4E00 && c <= 0xA48C ||\n c >= 0xA490 && c <= 0xA4C6 ||\n c >= 0xA960 && c <= 0xA97C ||\n c >= 0xAC00 && c <= 0xD7A3 ||\n c >= 0xD7B0 && c <= 0xD7C6 ||\n c >= 0xD7CB && c <= 0xD7FB ||\n c >= 0xF900 && c <= 0xFAFF ||\n c >= 0xFE10 && c <= 0xFE19 ||\n c >= 0xFE30 && c <= 0xFE52 ||\n c >= 0xFE54 && c <= 0xFE66 ||\n c >= 0xFE68 && c <= 0xFE6B ||\n c >= 0xFF01 && c <= 0xFF60 ||\n c >= 0xFFE0 && c <= 0xFFE6;\n}\nrequire(\"./edit_session/folding\").Folding.call(EditSession.prototype);\nrequire(\"./edit_session/bracket_match\").BracketMatch.call(EditSession.prototype);\nconfig.defineOptions(EditSession.prototype, \"session\", {\n wrap: {\n set: function (value) {\n if (!value || value == \"off\")\n value = false;\n else if (value == \"free\")\n value = true;\n else if (value == \"printMargin\")\n value = -1;\n else if (typeof value == \"string\")\n value = parseInt(value, 10) || false;\n if (this.$wrap == value)\n return;\n this.$wrap = value;\n if (!value) {\n this.setUseWrapMode(false);\n }\n else {\n var col = typeof value == \"number\" ? value : null;\n this.setWrapLimitRange(col, col);\n this.setUseWrapMode(true);\n }\n },\n get: function () {\n if (this.getUseWrapMode()) {\n if (this.$wrap == -1)\n return \"printMargin\";\n if (!this.getWrapLimitRange().min)\n return \"free\";\n return this.$wrap;\n }\n return \"off\";\n },\n handlesSet: true\n },\n wrapMethod: {\n set: function (val) {\n val = val == \"auto\"\n ? this.$mode.type != \"text\"\n : val != \"text\";\n if (val != this.$wrapAsCode) {\n this.$wrapAsCode = val;\n if (this.$useWrapMode) {\n this.$useWrapMode = false;\n this.setUseWrapMode(true);\n }\n }\n },\n initialValue: \"auto\"\n },\n indentedSoftWrap: {\n set: function () {\n if (this.$useWrapMode) {\n this.$useWrapMode = false;\n this.setUseWrapMode(true);\n }\n },\n initialValue: true\n },\n firstLineNumber: {\n set: function () { this._signal(\"changeBreakpoint\"); },\n initialValue: 1\n },\n useWorker: {\n set: function (useWorker) {\n this.$useWorker = useWorker;\n this.$stopWorker();\n if (useWorker)\n this.$startWorker();\n },\n initialValue: true\n },\n useSoftTabs: { initialValue: true },\n tabSize: {\n set: function (tabSize) {\n tabSize = parseInt(tabSize);\n if (tabSize > 0 && this.$tabSize !== tabSize) {\n this.$modified = true;\n this.$rowLengthCache = [];\n this.$tabSize = tabSize;\n this._signal(\"changeTabSize\");\n }\n },\n initialValue: 4,\n handlesSet: true\n },\n navigateWithinSoftTabs: { initialValue: false },\n foldStyle: {\n set: function (val) { this.setFoldStyle(val); },\n handlesSet: true\n },\n overwrite: {\n set: function (val) { this._signal(\"changeOverwrite\"); },\n initialValue: false\n },\n newLineMode: {\n set: function (val) { this.doc.setNewLineMode(val); },\n get: function () { return this.doc.getNewLineMode(); },\n handlesSet: true\n },\n mode: {\n set: function (val) { this.setMode(val); },\n get: function () { return this.$modeId; },\n handlesSet: true\n }\n});\nexports.EditSession = EditSession;\n\n});\n\nace.define(\"ace/search\",[\"require\",\"exports\",\"module\",\"ace/lib/lang\",\"ace/lib/oop\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar lang = require(\"./lib/lang\");\nvar oop = require(\"./lib/oop\");\nvar Range = require(\"./range\").Range;\nvar Search = /** @class */ (function () {\n function Search() {\n this.$options = {};\n }\n Search.prototype.set = function (options) {\n oop.mixin(this.$options, options);\n return this;\n };\n Search.prototype.getOptions = function () {\n return lang.copyObject(this.$options);\n };\n Search.prototype.setOptions = function (options) {\n this.$options = options;\n };\n Search.prototype.find = function (session) {\n var options = this.$options;\n var iterator = this.$matchIterator(session, options);\n if (!iterator)\n return false;\n var firstRange = null;\n iterator.forEach(function (sr, sc, er, ec) {\n firstRange = new Range(sr, sc, er, ec);\n if (sc == ec && options.start && options.start.start\n && options.skipCurrent != false && firstRange.isEqual(options.start)) {\n firstRange = null;\n return false;\n }\n return true;\n });\n return firstRange;\n };\n Search.prototype.findAll = function (session) {\n var options = this.$options;\n if (!options.needle)\n return [];\n this.$assembleRegExp(options);\n var range = options.range;\n var lines = range\n ? session.getLines(range.start.row, range.end.row)\n : session.doc.getAllLines();\n var ranges = [];\n var re = options.re;\n if (options.$isMultiLine) {\n var len = re.length;\n var maxRow = lines.length - len;\n var prevRange;\n outer: for (var row = re.offset || 0; row <= maxRow; row++) {\n for (var j = 0; j < len; j++)\n if (lines[row + j].search(re[j]) == -1)\n continue outer;\n var startLine = lines[row];\n var line = lines[row + len - 1];\n var startIndex = startLine.length - startLine.match(re[0])[0].length;\n var endIndex = line.match(re[len - 1])[0].length;\n if (prevRange && prevRange.end.row === row &&\n prevRange.end.column > startIndex) {\n continue;\n }\n ranges.push(prevRange = new Range(row, startIndex, row + len - 1, endIndex));\n if (len > 2)\n row = row + len - 2;\n }\n }\n else {\n for (var i = 0; i < lines.length; i++) {\n var matches = lang.getMatchOffsets(lines[i], re);\n for (var j = 0; j < matches.length; j++) {\n var match = matches[j];\n ranges.push(new Range(i, match.offset, i, match.offset + match.length));\n }\n }\n }\n if (range) {\n var startColumn = range.start.column;\n var endColumn = range.end.column;\n var i = 0, j = ranges.length - 1;\n while (i < j && ranges[i].start.column < startColumn && ranges[i].start.row == 0)\n i++;\n var endRow = range.end.row - range.start.row;\n while (i < j && ranges[j].end.column > endColumn && ranges[j].end.row == endRow)\n j--;\n ranges = ranges.slice(i, j + 1);\n for (i = 0, j = ranges.length; i < j; i++) {\n ranges[i].start.row += range.start.row;\n ranges[i].end.row += range.start.row;\n }\n }\n return ranges;\n };\n Search.prototype.replace = function (input, replacement) {\n var options = this.$options;\n var re = this.$assembleRegExp(options);\n if (options.$isMultiLine)\n return replacement;\n if (!re)\n return;\n var match = re.exec(input);\n if (!match || match[0].length != input.length)\n return null;\n replacement = input.replace(re, replacement);\n if (options.preserveCase) {\n replacement = replacement.split(\"\");\n for (var i = Math.min(input.length, input.length); i--;) {\n var ch = input[i];\n if (ch && ch.toLowerCase() != ch)\n replacement[i] = replacement[i].toUpperCase();\n else\n replacement[i] = replacement[i].toLowerCase();\n }\n replacement = replacement.join(\"\");\n }\n return replacement;\n };\n Search.prototype.$assembleRegExp = function (options, $disableFakeMultiline) {\n if (options.needle instanceof RegExp)\n return options.re = options.needle;\n var needle = options.needle;\n if (!options.needle)\n return options.re = false;\n if (!options.regExp)\n needle = lang.escapeRegExp(needle);\n var modifier = options.caseSensitive ? \"gm\" : \"gmi\";\n try {\n new RegExp(needle, \"u\");\n options.$supportsUnicodeFlag = true;\n modifier += \"u\";\n }\n catch (e) {\n options.$supportsUnicodeFlag = false; //left for backward compatibility with previous versions for cases like /ab\\{2}/gu\n }\n if (options.wholeWord)\n needle = addWordBoundary(needle, options);\n options.$isMultiLine = !$disableFakeMultiline && /[\\n\\r]/.test(needle);\n if (options.$isMultiLine)\n return options.re = this.$assembleMultilineRegExp(needle, modifier);\n try {\n var re = new RegExp(needle, modifier);\n }\n catch (e) {\n re = false;\n }\n return options.re = re;\n };\n Search.prototype.$assembleMultilineRegExp = function (needle, modifier) {\n var parts = needle.replace(/\\r\\n|\\r|\\n/g, \"$\\n^\").split(\"\\n\");\n var re = [];\n for (var i = 0; i < parts.length; i++)\n try {\n re.push(new RegExp(parts[i], modifier));\n }\n catch (e) {\n return false;\n }\n return re;\n };\n Search.prototype.$matchIterator = function (session, options) {\n var re = this.$assembleRegExp(options);\n if (!re)\n return false;\n var backwards = options.backwards == true;\n var skipCurrent = options.skipCurrent != false;\n var supportsUnicodeFlag = re.unicode;\n var range = options.range;\n var start = options.start;\n if (!start)\n start = range ? range[backwards ? \"end\" : \"start\"] : session.selection.getRange();\n if (start.start)\n start = start[skipCurrent != backwards ? \"end\" : \"start\"];\n var firstRow = range ? range.start.row : 0;\n var lastRow = range ? range.end.row : session.getLength() - 1;\n if (backwards) {\n var forEach = function (callback) {\n var row = start.row;\n if (forEachInLine(row, start.column, callback))\n return;\n for (row--; row >= firstRow; row--)\n if (forEachInLine(row, Number.MAX_VALUE, callback))\n return;\n if (options.wrap == false)\n return;\n for (row = lastRow, firstRow = start.row; row >= firstRow; row--)\n if (forEachInLine(row, Number.MAX_VALUE, callback))\n return;\n };\n }\n else {\n var forEach = function (callback) {\n var row = start.row;\n if (forEachInLine(row, start.column, callback))\n return;\n for (row = row + 1; row <= lastRow; row++)\n if (forEachInLine(row, 0, callback))\n return;\n if (options.wrap == false)\n return;\n for (row = firstRow, lastRow = start.row; row <= lastRow; row++)\n if (forEachInLine(row, 0, callback))\n return;\n };\n }\n if (options.$isMultiLine) {\n var len = re.length;\n var forEachInLine = function (row, offset, callback) {\n var startRow = backwards ? row - len + 1 : row;\n if (startRow < 0 || startRow + len > session.getLength())\n return;\n var line = session.getLine(startRow);\n var startIndex = line.search(re[0]);\n if (!backwards && startIndex < offset || startIndex === -1)\n return;\n for (var i = 1; i < len; i++) {\n line = session.getLine(startRow + i);\n if (line.search(re[i]) == -1)\n return;\n }\n var endIndex = line.match(re[len - 1])[0].length;\n if (backwards && endIndex > offset)\n return;\n if (callback(startRow, startIndex, startRow + len - 1, endIndex))\n return true;\n };\n }\n else if (backwards) {\n var forEachInLine = function (row, endIndex, callback) {\n var line = session.getLine(row);\n var matches = [];\n var m, last = 0;\n re.lastIndex = 0;\n while ((m = re.exec(line))) {\n var length = m[0].length;\n last = m.index;\n if (!length) {\n if (last >= line.length)\n break;\n re.lastIndex = last += lang.skipEmptyMatch(line, last, supportsUnicodeFlag);\n }\n if (m.index + length > endIndex)\n break;\n matches.push(m.index, length);\n }\n for (var i = matches.length - 1; i >= 0; i -= 2) {\n var column = matches[i - 1];\n var length = matches[i];\n if (callback(row, column, row, column + length))\n return true;\n }\n };\n }\n else {\n var forEachInLine = function (row, startIndex, callback) {\n var line = session.getLine(row);\n var last;\n var m;\n re.lastIndex = startIndex;\n while ((m = re.exec(line))) {\n var length = m[0].length;\n last = m.index;\n if (callback(row, last, row, last + length))\n return true;\n if (!length) {\n re.lastIndex = last += lang.skipEmptyMatch(line, last, supportsUnicodeFlag);\n if (last >= line.length)\n return false;\n }\n }\n };\n }\n return { forEach: forEach };\n };\n return Search;\n}());\nfunction addWordBoundary(needle, options) {\n var supportsLookbehind = lang.supportsLookbehind();\n function wordBoundary(c, firstChar) {\n if (firstChar === void 0) { firstChar = true; }\n var wordRegExp = supportsLookbehind && options.$supportsUnicodeFlag ? new RegExp(\"[\\\\p{L}\\\\p{N}_]\", \"u\") : new RegExp(\"\\\\w\");\n if (wordRegExp.test(c) || options.regExp) {\n if (supportsLookbehind && options.$supportsUnicodeFlag) {\n if (firstChar)\n return \"(?<=^|[^\\\\p{L}\\\\p{N}_])\";\n return \"(?=[^\\\\p{L}\\\\p{N}_]|$)\";\n }\n return \"\\\\b\";\n }\n return \"\";\n }\n var needleArray = Array.from(needle);\n var firstChar = needleArray[0];\n var lastChar = needleArray[needleArray.length - 1];\n return wordBoundary(firstChar) + needle + wordBoundary(lastChar, false);\n}\nexports.Search = Search;\n\n});\n\nace.define(\"ace/keyboard/hash_handler\",[\"require\",\"exports\",\"module\",\"ace/lib/keys\",\"ace/lib/useragent\"], function(require, exports, module){\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar keyUtil = require(\"../lib/keys\");\nvar useragent = require(\"../lib/useragent\");\nvar KEY_MODS = keyUtil.KEY_MODS;\nvar MultiHashHandler = /** @class */ (function () {\n function MultiHashHandler(config, platform) {\n this.$init(config, platform, false);\n }\n MultiHashHandler.prototype.$init = function (config, platform, $singleCommand) {\n this.platform = platform || (useragent.isMac ? \"mac\" : \"win\");\n this.commands = {};\n this.commandKeyBinding = {};\n this.addCommands(config);\n this.$singleCommand = $singleCommand;\n };\n MultiHashHandler.prototype.addCommand = function (command) {\n if (this.commands[command.name])\n this.removeCommand(command);\n this.commands[command.name] = command;\n if (command.bindKey)\n this._buildKeyHash(command);\n };\n MultiHashHandler.prototype.removeCommand = function (command, keepCommand) {\n var name = command && (typeof command === 'string' ? command : command.name);\n command = this.commands[name];\n if (!keepCommand)\n delete this.commands[name];\n var ckb = this.commandKeyBinding;\n for (var keyId in ckb) {\n var cmdGroup = ckb[keyId];\n if (cmdGroup == command) {\n delete ckb[keyId];\n }\n else if (Array.isArray(cmdGroup)) {\n var i = cmdGroup.indexOf(command);\n if (i != -1) {\n cmdGroup.splice(i, 1);\n if (cmdGroup.length == 1)\n ckb[keyId] = cmdGroup[0];\n }\n }\n }\n };\n MultiHashHandler.prototype.bindKey = function (key, command, position) {\n if (typeof key == \"object\" && key) {\n if (position == undefined)\n position = key.position;\n key = key[this.platform];\n }\n if (!key)\n return;\n if (typeof command == \"function\")\n return this.addCommand({ exec: command, bindKey: key, name: command.name || key });\n key.split(\"|\").forEach(function (keyPart) {\n var chain = \"\";\n if (keyPart.indexOf(\" \") != -1) {\n var parts = keyPart.split(/\\s+/);\n keyPart = parts.pop();\n parts.forEach(function (keyPart) {\n var binding = this.parseKeys(keyPart);\n var id = KEY_MODS[binding.hashId] + binding.key;\n chain += (chain ? \" \" : \"\") + id;\n this._addCommandToBinding(chain, \"chainKeys\");\n }, this);\n chain += \" \";\n }\n var binding = this.parseKeys(keyPart);\n var id = KEY_MODS[binding.hashId] + binding.key;\n this._addCommandToBinding(chain + id, command, position);\n }, this);\n };\n MultiHashHandler.prototype._addCommandToBinding = function (keyId, command, position) {\n var ckb = this.commandKeyBinding, i;\n if (!command) {\n delete ckb[keyId];\n }\n else if (!ckb[keyId] || this.$singleCommand) {\n ckb[keyId] = command;\n }\n else {\n if (!Array.isArray(ckb[keyId])) {\n ckb[keyId] = [ckb[keyId]];\n }\n else if ((i = ckb[keyId].indexOf(command)) != -1) {\n ckb[keyId].splice(i, 1);\n }\n if (typeof position != \"number\") {\n position = getPosition(command);\n }\n var commands = ckb[keyId];\n for (i = 0; i < commands.length; i++) {\n var other = commands[i];\n var otherPos = getPosition(other);\n if (otherPos > position)\n break;\n }\n commands.splice(i, 0, command);\n }\n };\n MultiHashHandler.prototype.addCommands = function (commands) {\n commands && Object.keys(commands).forEach(function (name) {\n var command = commands[name];\n if (!command)\n return;\n if (typeof command === \"string\")\n return this.bindKey(command, name);\n if (typeof command === \"function\")\n command = { exec: command };\n if (typeof command !== \"object\")\n return;\n if (!command.name)\n command.name = name;\n this.addCommand(command);\n }, this);\n };\n MultiHashHandler.prototype.removeCommands = function (commands) {\n Object.keys(commands).forEach(function (name) {\n this.removeCommand(commands[name]);\n }, this);\n };\n MultiHashHandler.prototype.bindKeys = function (keyList) {\n Object.keys(keyList).forEach(function (key) {\n this.bindKey(key, keyList[key]);\n }, this);\n };\n MultiHashHandler.prototype._buildKeyHash = function (command) {\n this.bindKey(command.bindKey, command);\n };\n MultiHashHandler.prototype.parseKeys = function (keys) {\n var parts = keys.toLowerCase().split(/[\\-\\+]([\\-\\+])?/).filter(function (x) { return x; });\n var key = parts.pop();\n var keyCode = keyUtil[key];\n if (keyUtil.FUNCTION_KEYS[keyCode])\n key = keyUtil.FUNCTION_KEYS[keyCode].toLowerCase();\n else if (!parts.length)\n return { key: key, hashId: -1 };\n else if (parts.length == 1 && parts[0] == \"shift\")\n return { key: key.toUpperCase(), hashId: -1 };\n var hashId = 0;\n for (var i = parts.length; i--;) {\n var modifier = keyUtil.KEY_MODS[parts[i]];\n if (modifier == null) {\n if (typeof console != \"undefined\")\n console.error(\"invalid modifier \" + parts[i] + \" in \" + keys);\n return false;\n }\n hashId |= modifier;\n }\n return { key: key, hashId: hashId };\n };\n MultiHashHandler.prototype.findKeyCommand = function (hashId, keyString) {\n var key = KEY_MODS[hashId] + keyString;\n return this.commandKeyBinding[key];\n };\n MultiHashHandler.prototype.handleKeyboard = function (data, hashId, keyString, keyCode) {\n if (keyCode < 0)\n return;\n var key = KEY_MODS[hashId] + keyString;\n var command = this.commandKeyBinding[key];\n if (data.$keyChain) {\n data.$keyChain += \" \" + key;\n command = this.commandKeyBinding[data.$keyChain] || command;\n }\n if (command) {\n if (command == \"chainKeys\" || command[command.length - 1] == \"chainKeys\") {\n data.$keyChain = data.$keyChain || key;\n return { command: \"null\" };\n }\n }\n if (data.$keyChain) {\n if ((!hashId || hashId == 4) && keyString.length == 1)\n data.$keyChain = data.$keyChain.slice(0, -key.length - 1); // wait for input\n else if (hashId == -1 || keyCode > 0)\n data.$keyChain = \"\"; // reset keyChain\n }\n return { command: command };\n };\n MultiHashHandler.prototype.getStatusText = function (editor, data) {\n return data.$keyChain || \"\";\n };\n return MultiHashHandler;\n}());\nfunction getPosition(command) {\n return typeof command == \"object\" && command.bindKey\n && command.bindKey.position\n || (command.isDefault ? -100 : 0);\n}\nvar HashHandler = /** @class */ (function (_super) {\n __extends(HashHandler, _super);\n function HashHandler(config, platform) {\n var _this = _super.call(this, config, platform) || this;\n _this.$singleCommand = true;\n return _this;\n }\n return HashHandler;\n}(MultiHashHandler));\nHashHandler.call = function (thisArg, config, platform) {\n MultiHashHandler.prototype.$init.call(thisArg, config, platform, true);\n};\nMultiHashHandler.call = function (thisArg, config, platform) {\n MultiHashHandler.prototype.$init.call(thisArg, config, platform, false);\n};\nexports.HashHandler = HashHandler;\nexports.MultiHashHandler = MultiHashHandler;\n\n});\n\nace.define(\"ace/commands/command_manager\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/keyboard/hash_handler\",\"ace/lib/event_emitter\"], function(require, exports, module){\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar oop = require(\"../lib/oop\");\nvar MultiHashHandler = require(\"../keyboard/hash_handler\").MultiHashHandler;\nvar EventEmitter = require(\"../lib/event_emitter\").EventEmitter;\nvar CommandManager = /** @class */ (function (_super) {\n __extends(CommandManager, _super);\n function CommandManager(platform, commands) {\n var _this = _super.call(this, commands, platform) || this;\n _this.byName = _this.commands;\n _this.setDefaultHandler(\"exec\", function (e) {\n if (!e.args) {\n return e.command.exec(e.editor, {}, e.event, true);\n }\n return e.command.exec(e.editor, e.args, e.event, false);\n });\n return _this;\n }\n CommandManager.prototype.exec = function (command, editor, args) {\n if (Array.isArray(command)) {\n for (var i = command.length; i--;) {\n if (this.exec(command[i], editor, args))\n return true;\n }\n return false;\n }\n if (typeof command === \"string\")\n command = this.commands[command];\n if (!command)\n return false;\n if (editor && editor.$readOnly && !command.readOnly)\n return false;\n if (this.$checkCommandState != false && command.isAvailable && !command.isAvailable(editor))\n return false;\n var e = { editor: editor, command: command, args: args };\n e.returnValue = this._emit(\"exec\", e);\n this._signal(\"afterExec\", e);\n return e.returnValue === false ? false : true;\n };\n CommandManager.prototype.toggleRecording = function (editor) {\n if (this.$inReplay)\n return;\n editor && editor._emit(\"changeStatus\");\n if (this.recording) {\n this.macro.pop();\n this.off(\"exec\", this.$addCommandToMacro);\n if (!this.macro.length)\n this.macro = this.oldMacro;\n return this.recording = false;\n }\n if (!this.$addCommandToMacro) {\n this.$addCommandToMacro = function (e) {\n this.macro.push([e.command, e.args]);\n }.bind(this);\n }\n this.oldMacro = this.macro;\n this.macro = [];\n this.on(\"exec\", this.$addCommandToMacro);\n return this.recording = true;\n };\n CommandManager.prototype.replay = function (editor) {\n if (this.$inReplay || !this.macro)\n return;\n if (this.recording)\n return this.toggleRecording(editor);\n try {\n this.$inReplay = true;\n this.macro.forEach(function (x) {\n if (typeof x == \"string\")\n this.exec(x, editor);\n else\n this.exec(x[0], editor, x[1]);\n }, this);\n }\n finally {\n this.$inReplay = false;\n }\n };\n CommandManager.prototype.trimMacro = function (m) {\n return m.map(function (x) {\n if (typeof x[0] != \"string\")\n x[0] = x[0].name;\n if (!x[1])\n x = x[0];\n return x;\n });\n };\n return CommandManager;\n}(MultiHashHandler));\noop.implement(CommandManager.prototype, EventEmitter);\nexports.CommandManager = CommandManager;\n\n});\n\nace.define(\"ace/commands/default_commands\",[\"require\",\"exports\",\"module\",\"ace/lib/lang\",\"ace/config\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar lang = require(\"../lib/lang\");\nvar config = require(\"../config\");\nvar Range = require(\"../range\").Range;\nfunction bindKey(win, mac) {\n return { win: win, mac: mac };\n}\nexports.commands = [{\n name: \"showSettingsMenu\",\n description: \"Show settings menu\",\n bindKey: bindKey(\"Ctrl-,\", \"Command-,\"),\n exec: function (editor) {\n config.loadModule(\"ace/ext/settings_menu\", function (module) {\n module.init(editor);\n editor.showSettingsMenu();\n });\n },\n readOnly: true\n }, {\n name: \"goToNextError\",\n description: \"Go to next error\",\n bindKey: bindKey(\"Alt-E\", \"F4\"),\n exec: function (editor) {\n config.loadModule(\"ace/ext/error_marker\", function (module) {\n module.showErrorMarker(editor, 1);\n });\n },\n scrollIntoView: \"animate\",\n readOnly: true\n }, {\n name: \"goToPreviousError\",\n description: \"Go to previous error\",\n bindKey: bindKey(\"Alt-Shift-E\", \"Shift-F4\"),\n exec: function (editor) {\n config.loadModule(\"ace/ext/error_marker\", function (module) {\n module.showErrorMarker(editor, -1);\n });\n },\n scrollIntoView: \"animate\",\n readOnly: true\n }, {\n name: \"selectall\",\n description: \"Select all\",\n bindKey: bindKey(\"Ctrl-A\", \"Command-A\"),\n exec: function (editor) { editor.selectAll(); },\n readOnly: true\n }, {\n name: \"centerselection\",\n description: \"Center selection\",\n bindKey: bindKey(null, \"Ctrl-L\"),\n exec: function (editor) { editor.centerSelection(); },\n readOnly: true\n }, {\n name: \"gotoline\",\n description: \"Go to line...\",\n bindKey: bindKey(\"Ctrl-L\", \"Command-L\"),\n exec: function (editor, line) {\n if (typeof line === \"number\" && !isNaN(line))\n editor.gotoLine(line);\n editor.prompt({ $type: \"gotoLine\" });\n },\n readOnly: true\n }, {\n name: \"fold\",\n bindKey: bindKey(\"Alt-L|Ctrl-F1\", \"Command-Alt-L|Command-F1\"),\n exec: function (editor) { editor.session.toggleFold(false); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"center\",\n readOnly: true\n }, {\n name: \"unfold\",\n bindKey: bindKey(\"Alt-Shift-L|Ctrl-Shift-F1\", \"Command-Alt-Shift-L|Command-Shift-F1\"),\n exec: function (editor) { editor.session.toggleFold(true); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"center\",\n readOnly: true\n }, {\n name: \"toggleFoldWidget\",\n description: \"Toggle fold widget\",\n bindKey: bindKey(\"F2\", \"F2\"),\n exec: function (editor) { editor.session.toggleFoldWidget(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"center\",\n readOnly: true\n }, {\n name: \"toggleParentFoldWidget\",\n description: \"Toggle parent fold widget\",\n bindKey: bindKey(\"Alt-F2\", \"Alt-F2\"),\n exec: function (editor) { editor.session.toggleFoldWidget(true); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"center\",\n readOnly: true\n }, {\n name: \"foldall\",\n description: \"Fold all\",\n bindKey: bindKey(null, \"Ctrl-Command-Option-0\"),\n exec: function (editor) { editor.session.foldAll(); },\n scrollIntoView: \"center\",\n readOnly: true\n }, {\n name: \"foldAllComments\",\n description: \"Fold all comments\",\n bindKey: bindKey(null, \"Ctrl-Command-Option-0\"),\n exec: function (editor) { editor.session.foldAllComments(); },\n scrollIntoView: \"center\",\n readOnly: true\n }, {\n name: \"foldOther\",\n description: \"Fold other\",\n bindKey: bindKey(\"Alt-0\", \"Command-Option-0\"),\n exec: function (editor) {\n editor.session.foldAll();\n editor.session.unfold(editor.selection.getAllRanges());\n },\n scrollIntoView: \"center\",\n readOnly: true\n }, {\n name: \"unfoldall\",\n description: \"Unfold all\",\n bindKey: bindKey(\"Alt-Shift-0\", \"Command-Option-Shift-0\"),\n exec: function (editor) { editor.session.unfold(); },\n scrollIntoView: \"center\",\n readOnly: true\n }, {\n name: \"findnext\",\n description: \"Find next\",\n bindKey: bindKey(\"Ctrl-K\", \"Command-G\"),\n exec: function (editor) { editor.findNext(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"center\",\n readOnly: true\n }, {\n name: \"findprevious\",\n description: \"Find previous\",\n bindKey: bindKey(\"Ctrl-Shift-K\", \"Command-Shift-G\"),\n exec: function (editor) { editor.findPrevious(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"center\",\n readOnly: true\n }, {\n name: \"selectOrFindNext\",\n description: \"Select or find next\",\n bindKey: bindKey(\"Alt-K\", \"Ctrl-G\"),\n exec: function (editor) {\n if (editor.selection.isEmpty())\n editor.selection.selectWord();\n else\n editor.findNext();\n },\n readOnly: true\n }, {\n name: \"selectOrFindPrevious\",\n description: \"Select or find previous\",\n bindKey: bindKey(\"Alt-Shift-K\", \"Ctrl-Shift-G\"),\n exec: function (editor) {\n if (editor.selection.isEmpty())\n editor.selection.selectWord();\n else\n editor.findPrevious();\n },\n readOnly: true\n }, {\n name: \"find\",\n description: \"Find\",\n bindKey: bindKey(\"Ctrl-F\", \"Command-F\"),\n exec: function (editor) {\n config.loadModule(\"ace/ext/searchbox\", function (e) { e.Search(editor); });\n },\n readOnly: true\n }, {\n name: \"overwrite\",\n description: \"Overwrite\",\n bindKey: \"Insert\",\n exec: function (editor) { editor.toggleOverwrite(); },\n readOnly: true\n }, {\n name: \"selecttostart\",\n description: \"Select to start\",\n bindKey: bindKey(\"Ctrl-Shift-Home\", \"Command-Shift-Home|Command-Shift-Up\"),\n exec: function (editor) { editor.getSelection().selectFileStart(); },\n multiSelectAction: \"forEach\",\n readOnly: true,\n scrollIntoView: \"animate\",\n aceCommandGroup: \"fileJump\"\n }, {\n name: \"gotostart\",\n description: \"Go to start\",\n bindKey: bindKey(\"Ctrl-Home\", \"Command-Home|Command-Up\"),\n exec: function (editor) { editor.navigateFileStart(); },\n multiSelectAction: \"forEach\",\n readOnly: true,\n scrollIntoView: \"animate\",\n aceCommandGroup: \"fileJump\"\n }, {\n name: \"selectup\",\n description: \"Select up\",\n bindKey: bindKey(\"Shift-Up\", \"Shift-Up|Ctrl-Shift-P\"),\n exec: function (editor) { editor.getSelection().selectUp(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"golineup\",\n description: \"Go line up\",\n bindKey: bindKey(\"Up\", \"Up|Ctrl-P\"),\n exec: function (editor, args) { editor.navigateUp(args.times); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"selecttoend\",\n description: \"Select to end\",\n bindKey: bindKey(\"Ctrl-Shift-End\", \"Command-Shift-End|Command-Shift-Down\"),\n exec: function (editor) { editor.getSelection().selectFileEnd(); },\n multiSelectAction: \"forEach\",\n readOnly: true,\n scrollIntoView: \"animate\",\n aceCommandGroup: \"fileJump\"\n }, {\n name: \"gotoend\",\n description: \"Go to end\",\n bindKey: bindKey(\"Ctrl-End\", \"Command-End|Command-Down\"),\n exec: function (editor) { editor.navigateFileEnd(); },\n multiSelectAction: \"forEach\",\n readOnly: true,\n scrollIntoView: \"animate\",\n aceCommandGroup: \"fileJump\"\n }, {\n name: \"selectdown\",\n description: \"Select down\",\n bindKey: bindKey(\"Shift-Down\", \"Shift-Down|Ctrl-Shift-N\"),\n exec: function (editor) { editor.getSelection().selectDown(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"golinedown\",\n description: \"Go line down\",\n bindKey: bindKey(\"Down\", \"Down|Ctrl-N\"),\n exec: function (editor, args) { editor.navigateDown(args.times); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"selectwordleft\",\n description: \"Select word left\",\n bindKey: bindKey(\"Ctrl-Shift-Left\", \"Option-Shift-Left\"),\n exec: function (editor) { editor.getSelection().selectWordLeft(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"gotowordleft\",\n description: \"Go to word left\",\n bindKey: bindKey(\"Ctrl-Left\", \"Option-Left\"),\n exec: function (editor) { editor.navigateWordLeft(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"selecttolinestart\",\n description: \"Select to line start\",\n bindKey: bindKey(\"Alt-Shift-Left\", \"Command-Shift-Left|Ctrl-Shift-A\"),\n exec: function (editor) { editor.getSelection().selectLineStart(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"gotolinestart\",\n description: \"Go to line start\",\n bindKey: bindKey(\"Alt-Left|Home\", \"Command-Left|Home|Ctrl-A\"),\n exec: function (editor) { editor.navigateLineStart(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"selectleft\",\n description: \"Select left\",\n bindKey: bindKey(\"Shift-Left\", \"Shift-Left|Ctrl-Shift-B\"),\n exec: function (editor) { editor.getSelection().selectLeft(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"gotoleft\",\n description: \"Go to left\",\n bindKey: bindKey(\"Left\", \"Left|Ctrl-B\"),\n exec: function (editor, args) { editor.navigateLeft(args.times); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"selectwordright\",\n description: \"Select word right\",\n bindKey: bindKey(\"Ctrl-Shift-Right\", \"Option-Shift-Right\"),\n exec: function (editor) { editor.getSelection().selectWordRight(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"gotowordright\",\n description: \"Go to word right\",\n bindKey: bindKey(\"Ctrl-Right\", \"Option-Right\"),\n exec: function (editor) { editor.navigateWordRight(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"selecttolineend\",\n description: \"Select to line end\",\n bindKey: bindKey(\"Alt-Shift-Right\", \"Command-Shift-Right|Shift-End|Ctrl-Shift-E\"),\n exec: function (editor) { editor.getSelection().selectLineEnd(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"gotolineend\",\n description: \"Go to line end\",\n bindKey: bindKey(\"Alt-Right|End\", \"Command-Right|End|Ctrl-E\"),\n exec: function (editor) { editor.navigateLineEnd(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"selectright\",\n description: \"Select right\",\n bindKey: bindKey(\"Shift-Right\", \"Shift-Right\"),\n exec: function (editor) { editor.getSelection().selectRight(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"gotoright\",\n description: \"Go to right\",\n bindKey: bindKey(\"Right\", \"Right|Ctrl-F\"),\n exec: function (editor, args) { editor.navigateRight(args.times); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"selectpagedown\",\n description: \"Select page down\",\n bindKey: \"Shift-PageDown\",\n exec: function (editor) { editor.selectPageDown(); },\n readOnly: true\n }, {\n name: \"pagedown\",\n description: \"Page down\",\n bindKey: bindKey(null, \"Option-PageDown\"),\n exec: function (editor) { editor.scrollPageDown(); },\n readOnly: true\n }, {\n name: \"gotopagedown\",\n description: \"Go to page down\",\n bindKey: bindKey(\"PageDown\", \"PageDown|Ctrl-V\"),\n exec: function (editor) { editor.gotoPageDown(); },\n readOnly: true\n }, {\n name: \"selectpageup\",\n description: \"Select page up\",\n bindKey: \"Shift-PageUp\",\n exec: function (editor) { editor.selectPageUp(); },\n readOnly: true\n }, {\n name: \"pageup\",\n description: \"Page up\",\n bindKey: bindKey(null, \"Option-PageUp\"),\n exec: function (editor) { editor.scrollPageUp(); },\n readOnly: true\n }, {\n name: \"gotopageup\",\n description: \"Go to page up\",\n bindKey: \"PageUp\",\n exec: function (editor) { editor.gotoPageUp(); },\n readOnly: true\n }, {\n name: \"scrollup\",\n description: \"Scroll up\",\n bindKey: bindKey(\"Ctrl-Up\", null),\n exec: function (e) { e.renderer.scrollBy(0, -2 * e.renderer.layerConfig.lineHeight); },\n readOnly: true\n }, {\n name: \"scrolldown\",\n description: \"Scroll down\",\n bindKey: bindKey(\"Ctrl-Down\", null),\n exec: function (e) { e.renderer.scrollBy(0, 2 * e.renderer.layerConfig.lineHeight); },\n readOnly: true\n }, {\n name: \"selectlinestart\",\n description: \"Select line start\",\n bindKey: \"Shift-Home\",\n exec: function (editor) { editor.getSelection().selectLineStart(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"selectlineend\",\n description: \"Select line end\",\n bindKey: \"Shift-End\",\n exec: function (editor) { editor.getSelection().selectLineEnd(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"togglerecording\",\n description: \"Toggle recording\",\n bindKey: bindKey(\"Ctrl-Alt-E\", \"Command-Option-E\"),\n exec: function (editor) { editor.commands.toggleRecording(editor); },\n readOnly: true\n }, {\n name: \"replaymacro\",\n description: \"Replay macro\",\n bindKey: bindKey(\"Ctrl-Shift-E\", \"Command-Shift-E\"),\n exec: function (editor) { editor.commands.replay(editor); },\n readOnly: true\n }, {\n name: \"jumptomatching\",\n description: \"Jump to matching\",\n bindKey: bindKey(\"Ctrl-\\\\|Ctrl-P\", \"Command-\\\\\"),\n exec: function (editor) { editor.jumpToMatching(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"animate\",\n readOnly: true\n }, {\n name: \"selecttomatching\",\n description: \"Select to matching\",\n bindKey: bindKey(\"Ctrl-Shift-\\\\|Ctrl-Shift-P\", \"Command-Shift-\\\\\"),\n exec: function (editor) { editor.jumpToMatching(true); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"animate\",\n readOnly: true\n }, {\n name: \"expandToMatching\",\n description: \"Expand to matching\",\n bindKey: bindKey(\"Ctrl-Shift-M\", \"Ctrl-Shift-M\"),\n exec: function (editor) { editor.jumpToMatching(true, true); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"animate\",\n readOnly: true\n }, {\n name: \"passKeysToBrowser\",\n description: \"Pass keys to browser\",\n bindKey: bindKey(null, null),\n exec: function () { },\n passEvent: true,\n readOnly: true\n }, {\n name: \"copy\",\n description: \"Copy\",\n exec: function (editor) {\n },\n readOnly: true\n },\n {\n name: \"cut\",\n description: \"Cut\",\n exec: function (editor) {\n var cutLine = editor.$copyWithEmptySelection && editor.selection.isEmpty();\n var range = cutLine ? editor.selection.getLineRange() : editor.selection.getRange();\n editor._emit(\"cut\", range);\n if (!range.isEmpty())\n editor.session.remove(range);\n editor.clearSelection();\n },\n scrollIntoView: \"cursor\",\n multiSelectAction: \"forEach\"\n }, {\n name: \"paste\",\n description: \"Paste\",\n exec: function (editor, args) {\n editor.$handlePaste(args);\n },\n scrollIntoView: \"cursor\"\n }, {\n name: \"removeline\",\n description: \"Remove line\",\n bindKey: bindKey(\"Ctrl-D\", \"Command-D\"),\n exec: function (editor) { editor.removeLines(); },\n scrollIntoView: \"cursor\",\n multiSelectAction: \"forEachLine\"\n }, {\n name: \"duplicateSelection\",\n description: \"Duplicate selection\",\n bindKey: bindKey(\"Ctrl-Shift-D\", \"Command-Shift-D\"),\n exec: function (editor) { editor.duplicateSelection(); },\n scrollIntoView: \"cursor\",\n multiSelectAction: \"forEach\"\n }, {\n name: \"sortlines\",\n description: \"Sort lines\",\n bindKey: bindKey(\"Ctrl-Alt-S\", \"Command-Alt-S\"),\n exec: function (editor) { editor.sortLines(); },\n scrollIntoView: \"selection\",\n multiSelectAction: \"forEachLine\"\n }, {\n name: \"togglecomment\",\n description: \"Toggle comment\",\n bindKey: bindKey(\"Ctrl-/\", \"Command-/\"),\n exec: function (editor) { editor.toggleCommentLines(); },\n multiSelectAction: \"forEachLine\",\n scrollIntoView: \"selectionPart\"\n }, {\n name: \"toggleBlockComment\",\n description: \"Toggle block comment\",\n bindKey: bindKey(\"Ctrl-Shift-/\", \"Command-Shift-/\"),\n exec: function (editor) { editor.toggleBlockComment(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"selectionPart\"\n }, {\n name: \"modifyNumberUp\",\n description: \"Modify number up\",\n bindKey: bindKey(\"Ctrl-Shift-Up\", \"Alt-Shift-Up\"),\n exec: function (editor) { editor.modifyNumber(1); },\n scrollIntoView: \"cursor\",\n multiSelectAction: \"forEach\"\n }, {\n name: \"modifyNumberDown\",\n description: \"Modify number down\",\n bindKey: bindKey(\"Ctrl-Shift-Down\", \"Alt-Shift-Down\"),\n exec: function (editor) { editor.modifyNumber(-1); },\n scrollIntoView: \"cursor\",\n multiSelectAction: \"forEach\"\n }, {\n name: \"replace\",\n description: \"Replace\",\n bindKey: bindKey(\"Ctrl-H\", \"Command-Option-F\"),\n exec: function (editor) {\n config.loadModule(\"ace/ext/searchbox\", function (e) { e.Search(editor, true); });\n }\n }, {\n name: \"undo\",\n description: \"Undo\",\n bindKey: bindKey(\"Ctrl-Z\", \"Command-Z\"),\n exec: function (editor) { editor.undo(); }\n }, {\n name: \"redo\",\n description: \"Redo\",\n bindKey: bindKey(\"Ctrl-Shift-Z|Ctrl-Y\", \"Command-Shift-Z|Command-Y\"),\n exec: function (editor) { editor.redo(); }\n }, {\n name: \"copylinesup\",\n description: \"Copy lines up\",\n bindKey: bindKey(\"Alt-Shift-Up\", \"Command-Option-Up\"),\n exec: function (editor) { editor.copyLinesUp(); },\n scrollIntoView: \"cursor\"\n }, {\n name: \"movelinesup\",\n description: \"Move lines up\",\n bindKey: bindKey(\"Alt-Up\", \"Option-Up\"),\n exec: function (editor) { editor.moveLinesUp(); },\n scrollIntoView: \"cursor\"\n }, {\n name: \"copylinesdown\",\n description: \"Copy lines down\",\n bindKey: bindKey(\"Alt-Shift-Down\", \"Command-Option-Down\"),\n exec: function (editor) { editor.copyLinesDown(); },\n scrollIntoView: \"cursor\"\n }, {\n name: \"movelinesdown\",\n description: \"Move lines down\",\n bindKey: bindKey(\"Alt-Down\", \"Option-Down\"),\n exec: function (editor) { editor.moveLinesDown(); },\n scrollIntoView: \"cursor\"\n }, {\n name: \"del\",\n description: \"Delete\",\n bindKey: bindKey(\"Delete\", \"Delete|Ctrl-D|Shift-Delete\"),\n exec: function (editor) { editor.remove(\"right\"); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"backspace\",\n description: \"Backspace\",\n bindKey: bindKey(\"Shift-Backspace|Backspace\", \"Ctrl-Backspace|Shift-Backspace|Backspace|Ctrl-H\"),\n exec: function (editor) { editor.remove(\"left\"); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"cut_or_delete\",\n description: \"Cut or delete\",\n bindKey: bindKey(\"Shift-Delete\", null),\n exec: function (editor) {\n if (editor.selection.isEmpty()) {\n editor.remove(\"left\");\n }\n else {\n return false;\n }\n },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"removetolinestart\",\n description: \"Remove to line start\",\n bindKey: bindKey(\"Alt-Backspace\", \"Command-Backspace\"),\n exec: function (editor) { editor.removeToLineStart(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"removetolineend\",\n description: \"Remove to line end\",\n bindKey: bindKey(\"Alt-Delete\", \"Ctrl-K|Command-Delete\"),\n exec: function (editor) { editor.removeToLineEnd(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"removetolinestarthard\",\n description: \"Remove to line start hard\",\n bindKey: bindKey(\"Ctrl-Shift-Backspace\", null),\n exec: function (editor) {\n var range = editor.selection.getRange();\n range.start.column = 0;\n editor.session.remove(range);\n },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"removetolineendhard\",\n description: \"Remove to line end hard\",\n bindKey: bindKey(\"Ctrl-Shift-Delete\", null),\n exec: function (editor) {\n var range = editor.selection.getRange();\n range.end.column = Number.MAX_VALUE;\n editor.session.remove(range);\n },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"removewordleft\",\n description: \"Remove word left\",\n bindKey: bindKey(\"Ctrl-Backspace\", \"Alt-Backspace|Ctrl-Alt-Backspace\"),\n exec: function (editor) { editor.removeWordLeft(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"removewordright\",\n description: \"Remove word right\",\n bindKey: bindKey(\"Ctrl-Delete\", \"Alt-Delete\"),\n exec: function (editor) { editor.removeWordRight(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"outdent\",\n description: \"Outdent\",\n bindKey: bindKey(\"Shift-Tab\", \"Shift-Tab\"),\n exec: function (editor) { editor.blockOutdent(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"selectionPart\"\n }, {\n name: \"indent\",\n description: \"Indent\",\n bindKey: bindKey(\"Tab\", \"Tab\"),\n exec: function (editor) { editor.indent(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"selectionPart\"\n }, {\n name: \"blockoutdent\",\n description: \"Block outdent\",\n bindKey: bindKey(\"Ctrl-[\", \"Ctrl-[\"),\n exec: function (editor) { editor.blockOutdent(); },\n multiSelectAction: \"forEachLine\",\n scrollIntoView: \"selectionPart\"\n }, {\n name: \"blockindent\",\n description: \"Block indent\",\n bindKey: bindKey(\"Ctrl-]\", \"Ctrl-]\"),\n exec: function (editor) { editor.blockIndent(); },\n multiSelectAction: \"forEachLine\",\n scrollIntoView: \"selectionPart\"\n }, {\n name: \"insertstring\",\n description: \"Insert string\",\n exec: function (editor, str) { editor.insert(str); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"inserttext\",\n description: \"Insert text\",\n exec: function (editor, args) {\n editor.insert(lang.stringRepeat(args.text || \"\", args.times || 1));\n },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"splitline\",\n description: \"Split line\",\n bindKey: bindKey(null, \"Ctrl-O\"),\n exec: function (editor) { editor.splitLine(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"transposeletters\",\n description: \"Transpose letters\",\n bindKey: bindKey(\"Alt-Shift-X\", \"Ctrl-T\"),\n exec: function (editor) { editor.transposeLetters(); },\n multiSelectAction: function (editor) { editor.transposeSelections(1); },\n scrollIntoView: \"cursor\"\n }, {\n name: \"touppercase\",\n description: \"To uppercase\",\n bindKey: bindKey(\"Ctrl-U\", \"Ctrl-U\"),\n exec: function (editor) { editor.toUpperCase(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"tolowercase\",\n description: \"To lowercase\",\n bindKey: bindKey(\"Ctrl-Shift-U\", \"Ctrl-Shift-U\"),\n exec: function (editor) { editor.toLowerCase(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"autoindent\",\n description: \"Auto Indent\",\n bindKey: bindKey(null, null),\n exec: function (editor) { editor.autoIndent(); },\n multiSelectAction: \"forEachLine\",\n scrollIntoView: \"animate\"\n }, {\n name: \"expandtoline\",\n description: \"Expand to line\",\n bindKey: bindKey(\"Ctrl-Shift-L\", \"Command-Shift-L\"),\n exec: function (editor) {\n var range = editor.selection.getRange();\n range.start.column = range.end.column = 0;\n range.end.row++;\n editor.selection.setRange(range, false);\n },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"openlink\",\n bindKey: bindKey(\"Ctrl+F3\", \"F3\"),\n exec: function (editor) { editor.openLink(); }\n }, {\n name: \"joinlines\",\n description: \"Join lines\",\n bindKey: bindKey(null, null),\n exec: function (editor) {\n var isBackwards = editor.selection.isBackwards();\n var selectionStart = isBackwards ? editor.selection.getSelectionLead() : editor.selection.getSelectionAnchor();\n var selectionEnd = isBackwards ? editor.selection.getSelectionAnchor() : editor.selection.getSelectionLead();\n var firstLineEndCol = editor.session.doc.getLine(selectionStart.row).length;\n var selectedText = editor.session.doc.getTextRange(editor.selection.getRange());\n var selectedCount = selectedText.replace(/\\n\\s*/, \" \").length;\n var insertLine = editor.session.doc.getLine(selectionStart.row);\n for (var i = selectionStart.row + 1; i <= selectionEnd.row + 1; i++) {\n var curLine = lang.stringTrimLeft(lang.stringTrimRight(editor.session.doc.getLine(i)));\n if (curLine.length !== 0) {\n curLine = \" \" + curLine;\n }\n insertLine += curLine;\n }\n if (selectionEnd.row + 1 < (editor.session.doc.getLength() - 1)) {\n insertLine += editor.session.doc.getNewLineCharacter();\n }\n editor.clearSelection();\n editor.session.doc.replace(new Range(selectionStart.row, 0, selectionEnd.row + 2, 0), insertLine);\n if (selectedCount > 0) {\n editor.selection.moveCursorTo(selectionStart.row, selectionStart.column);\n editor.selection.selectTo(selectionStart.row, selectionStart.column + selectedCount);\n }\n else {\n firstLineEndCol = editor.session.doc.getLine(selectionStart.row).length > firstLineEndCol ? (firstLineEndCol + 1) : firstLineEndCol;\n editor.selection.moveCursorTo(selectionStart.row, firstLineEndCol);\n }\n },\n multiSelectAction: \"forEach\",\n readOnly: true\n }, {\n name: \"invertSelection\",\n description: \"Invert selection\",\n bindKey: bindKey(null, null),\n exec: function (editor) {\n var endRow = editor.session.doc.getLength() - 1;\n var endCol = editor.session.doc.getLine(endRow).length;\n var ranges = editor.selection.rangeList.ranges;\n var newRanges = [];\n if (ranges.length < 1) {\n ranges = [editor.selection.getRange()];\n }\n for (var i = 0; i < ranges.length; i++) {\n if (i == (ranges.length - 1)) {\n if (!(ranges[i].end.row === endRow && ranges[i].end.column === endCol)) {\n newRanges.push(new Range(ranges[i].end.row, ranges[i].end.column, endRow, endCol));\n }\n }\n if (i === 0) {\n if (!(ranges[i].start.row === 0 && ranges[i].start.column === 0)) {\n newRanges.push(new Range(0, 0, ranges[i].start.row, ranges[i].start.column));\n }\n }\n else {\n newRanges.push(new Range(ranges[i - 1].end.row, ranges[i - 1].end.column, ranges[i].start.row, ranges[i].start.column));\n }\n }\n editor.exitMultiSelectMode();\n editor.clearSelection();\n for (var i = 0; i < newRanges.length; i++) {\n editor.selection.addRange(newRanges[i], false);\n }\n },\n readOnly: true,\n scrollIntoView: \"none\"\n }, {\n name: \"addLineAfter\",\n description: \"Add new line after the current line\",\n exec: function (editor) {\n editor.selection.clearSelection();\n editor.navigateLineEnd();\n editor.insert(\"\\n\");\n },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"addLineBefore\",\n description: \"Add new line before the current line\",\n exec: function (editor) {\n editor.selection.clearSelection();\n var cursor = editor.getCursorPosition();\n editor.selection.moveTo(cursor.row - 1, Number.MAX_VALUE);\n editor.insert(\"\\n\");\n if (cursor.row === 0)\n editor.navigateUp();\n },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"openCommandPallete\",\n exec: function (editor) {\n console.warn(\"This is an obsolete command. Please use `openCommandPalette` instead.\");\n editor.prompt({ $type: \"commands\" });\n },\n readOnly: true\n }, {\n name: \"openCommandPalette\",\n description: \"Open command palette\",\n bindKey: bindKey(\"F1\", \"F1\"),\n exec: function (editor) {\n editor.prompt({ $type: \"commands\" });\n },\n readOnly: true\n }, {\n name: \"modeSelect\",\n description: \"Change language mode...\",\n bindKey: bindKey(null, null),\n exec: function (editor) {\n editor.prompt({ $type: \"modes\" });\n },\n readOnly: true\n }];\nfor (var i = 1; i < 9; i++) {\n exports.commands.push({\n name: \"foldToLevel\" + i,\n description: \"Fold To Level \" + i,\n level: i,\n exec: function (editor) { editor.session.foldToLevel(this.level); },\n scrollIntoView: \"center\",\n readOnly: true\n });\n}\n\n});\n\nace.define(\"ace/line_widgets\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"], function(require, exports, module){\"use strict\";\nvar dom = require(\"./lib/dom\");\nvar LineWidgets = /** @class */ (function () {\n function LineWidgets(session) {\n this.session = session;\n this.session.widgetManager = this;\n this.session.getRowLength = this.getRowLength;\n this.session.$getWidgetScreenLength = this.$getWidgetScreenLength;\n this.updateOnChange = this.updateOnChange.bind(this);\n this.renderWidgets = this.renderWidgets.bind(this);\n this.measureWidgets = this.measureWidgets.bind(this);\n this.session._changedWidgets = [];\n this.$onChangeEditor = this.$onChangeEditor.bind(this);\n this.session.on(\"change\", this.updateOnChange);\n this.session.on(\"changeFold\", this.updateOnFold);\n this.session.on(\"changeEditor\", this.$onChangeEditor);\n }\n LineWidgets.prototype.getRowLength = function (row) {\n var h;\n if (this.lineWidgets)\n h = this.lineWidgets[row] && this.lineWidgets[row].rowCount || 0;\n else\n h = 0;\n if (!this.$useWrapMode || !this.$wrapData[row]) {\n return 1 + h;\n }\n else {\n return this.$wrapData[row].length + 1 + h;\n }\n };\n LineWidgets.prototype.$getWidgetScreenLength = function () {\n var screenRows = 0;\n this.lineWidgets.forEach(function (w) {\n if (w && w.rowCount && !w.hidden)\n screenRows += w.rowCount;\n });\n return screenRows;\n };\n LineWidgets.prototype.$onChangeEditor = function (e) {\n this.attach(e.editor);\n };\n LineWidgets.prototype.attach = function (editor) {\n if (editor && editor.widgetManager && editor.widgetManager != this)\n editor.widgetManager.detach();\n if (this.editor == editor)\n return;\n this.detach();\n this.editor = editor;\n if (editor) {\n editor.widgetManager = this;\n editor.renderer.on(\"beforeRender\", this.measureWidgets);\n editor.renderer.on(\"afterRender\", this.renderWidgets);\n }\n };\n LineWidgets.prototype.detach = function (e) {\n var editor = this.editor;\n if (!editor)\n return;\n this.editor = null;\n editor.widgetManager = null;\n editor.renderer.off(\"beforeRender\", this.measureWidgets);\n editor.renderer.off(\"afterRender\", this.renderWidgets);\n var lineWidgets = this.session.lineWidgets;\n lineWidgets && lineWidgets.forEach(function (w) {\n if (w && w.el && w.el.parentNode) {\n w._inDocument = false;\n w.el.parentNode.removeChild(w.el);\n }\n });\n };\n LineWidgets.prototype.updateOnFold = function (e, session) {\n var lineWidgets = session.lineWidgets;\n if (!lineWidgets || !e.action)\n return;\n var fold = e.data;\n var start = fold.start.row;\n var end = fold.end.row;\n var hide = e.action == \"add\";\n for (var i = start + 1; i < end; i++) {\n if (lineWidgets[i])\n lineWidgets[i].hidden = hide;\n }\n if (lineWidgets[end]) {\n if (hide) {\n if (!lineWidgets[start])\n lineWidgets[start] = lineWidgets[end];\n else\n lineWidgets[end].hidden = hide;\n }\n else {\n if (lineWidgets[start] == lineWidgets[end])\n lineWidgets[start] = undefined;\n lineWidgets[end].hidden = hide;\n }\n }\n };\n LineWidgets.prototype.updateOnChange = function (delta) {\n var lineWidgets = this.session.lineWidgets;\n if (!lineWidgets)\n return;\n var startRow = delta.start.row;\n var len = delta.end.row - startRow;\n if (len === 0) {\n }\n else if (delta.action == \"remove\") {\n var removed = lineWidgets.splice(startRow + 1, len);\n if (!lineWidgets[startRow] && removed[removed.length - 1]) {\n lineWidgets[startRow] = removed.pop();\n }\n removed.forEach(function (w) {\n w && this.removeLineWidget(w);\n }, this);\n this.$updateRows();\n }\n else {\n var args = new Array(len);\n if (lineWidgets[startRow] && lineWidgets[startRow].column != null) {\n if (delta.start.column > lineWidgets[startRow].column)\n startRow++;\n }\n args.unshift(startRow, 0);\n lineWidgets.splice.apply(lineWidgets, args);\n this.$updateRows();\n }\n };\n LineWidgets.prototype.$updateRows = function () {\n var lineWidgets = this.session.lineWidgets;\n if (!lineWidgets)\n return;\n var noWidgets = true;\n lineWidgets.forEach(function (w, i) {\n if (w) {\n noWidgets = false;\n w.row = i;\n while (w.$oldWidget) {\n w.$oldWidget.row = i;\n w = w.$oldWidget;\n }\n }\n });\n if (noWidgets)\n this.session.lineWidgets = null;\n };\n LineWidgets.prototype.$registerLineWidget = function (w) {\n if (!this.session.lineWidgets)\n this.session.lineWidgets = new Array(this.session.getLength());\n var old = this.session.lineWidgets[w.row];\n if (old) {\n w.$oldWidget = old;\n if (old.el && old.el.parentNode) {\n old.el.parentNode.removeChild(old.el);\n old._inDocument = false;\n }\n }\n this.session.lineWidgets[w.row] = w;\n return w;\n };\n LineWidgets.prototype.addLineWidget = function (w) {\n this.$registerLineWidget(w);\n w.session = this.session;\n if (!this.editor)\n return w;\n var renderer = this.editor.renderer;\n if (w.html && !w.el) {\n w.el = dom.createElement(\"div\");\n w.el.innerHTML = w.html;\n }\n if (w.text && !w.el) {\n w.el = dom.createElement(\"div\");\n w.el.textContent = w.text;\n }\n if (w.el) {\n dom.addCssClass(w.el, \"ace_lineWidgetContainer\");\n if (w.className) {\n dom.addCssClass(w.el, w.className);\n }\n w.el.style.position = \"absolute\";\n w.el.style.zIndex = 5;\n renderer.container.appendChild(w.el);\n w._inDocument = true;\n if (!w.coverGutter) {\n w.el.style.zIndex = 3;\n }\n if (w.pixelHeight == null) {\n w.pixelHeight = w.el.offsetHeight;\n }\n }\n if (w.rowCount == null) {\n w.rowCount = w.pixelHeight / renderer.layerConfig.lineHeight;\n }\n var fold = this.session.getFoldAt(w.row, 0);\n w.$fold = fold;\n if (fold) {\n var lineWidgets = this.session.lineWidgets;\n if (w.row == fold.end.row && !lineWidgets[fold.start.row])\n lineWidgets[fold.start.row] = w;\n else\n w.hidden = true;\n }\n this.session._emit(\"changeFold\", { data: { start: { row: w.row } } });\n this.$updateRows();\n this.renderWidgets(null, renderer);\n this.onWidgetChanged(w);\n return w;\n };\n LineWidgets.prototype.removeLineWidget = function (w) {\n w._inDocument = false;\n w.session = null;\n if (w.el && w.el.parentNode)\n w.el.parentNode.removeChild(w.el);\n if (w.editor && w.editor.destroy)\n try {\n w.editor.destroy();\n }\n catch (e) { }\n if (this.session.lineWidgets) {\n var w1 = this.session.lineWidgets[w.row];\n if (w1 == w) {\n this.session.lineWidgets[w.row] = w.$oldWidget;\n if (w.$oldWidget)\n this.onWidgetChanged(w.$oldWidget);\n }\n else {\n while (w1) {\n if (w1.$oldWidget == w) {\n w1.$oldWidget = w.$oldWidget;\n break;\n }\n w1 = w1.$oldWidget;\n }\n }\n }\n this.session._emit(\"changeFold\", { data: { start: { row: w.row } } });\n this.$updateRows();\n };\n LineWidgets.prototype.getWidgetsAtRow = function (row) {\n var lineWidgets = this.session.lineWidgets;\n var w = lineWidgets && lineWidgets[row];\n var list = [];\n while (w) {\n list.push(w);\n w = w.$oldWidget;\n }\n return list;\n };\n LineWidgets.prototype.onWidgetChanged = function (w) {\n this.session._changedWidgets.push(w);\n this.editor && this.editor.renderer.updateFull();\n };\n LineWidgets.prototype.measureWidgets = function (e, renderer) {\n var changedWidgets = this.session._changedWidgets;\n var config = renderer.layerConfig;\n if (!changedWidgets || !changedWidgets.length)\n return;\n var min = Infinity;\n for (var i = 0; i < changedWidgets.length; i++) {\n var w = changedWidgets[i];\n if (!w || !w.el)\n continue;\n if (w.session != this.session)\n continue;\n if (!w._inDocument) {\n if (this.session.lineWidgets[w.row] != w)\n continue;\n w._inDocument = true;\n renderer.container.appendChild(w.el);\n }\n w.h = w.el.offsetHeight;\n if (!w.fixedWidth) {\n w.w = w.el.offsetWidth;\n w.screenWidth = Math.ceil(w.w / config.characterWidth);\n }\n var rowCount = w.h / config.lineHeight;\n if (w.coverLine) {\n rowCount -= this.session.getRowLineCount(w.row);\n if (rowCount < 0)\n rowCount = 0;\n }\n if (w.rowCount != rowCount) {\n w.rowCount = rowCount;\n if (w.row < min)\n min = w.row;\n }\n }\n if (min != Infinity) {\n this.session._emit(\"changeFold\", { data: { start: { row: min } } });\n this.session.lineWidgetWidth = null;\n }\n this.session._changedWidgets = [];\n };\n LineWidgets.prototype.renderWidgets = function (e, renderer) {\n var config = renderer.layerConfig;\n var lineWidgets = this.session.lineWidgets;\n if (!lineWidgets)\n return;\n var first = Math.min(this.firstRow, config.firstRow);\n var last = Math.max(this.lastRow, config.lastRow, lineWidgets.length);\n while (first > 0 && !lineWidgets[first])\n first--;\n this.firstRow = config.firstRow;\n this.lastRow = config.lastRow;\n renderer.$cursorLayer.config = config;\n for (var i = first; i <= last; i++) {\n var w = lineWidgets[i];\n if (!w || !w.el)\n continue;\n if (w.hidden) {\n w.el.style.top = -100 - (w.pixelHeight || 0) + \"px\";\n continue;\n }\n if (!w._inDocument) {\n w._inDocument = true;\n renderer.container.appendChild(w.el);\n }\n var top = renderer.$cursorLayer.getPixelPosition({ row: i, column: 0 }, true).top;\n if (!w.coverLine)\n top += config.lineHeight * this.session.getRowLineCount(w.row);\n w.el.style.top = top - config.offset + \"px\";\n var left = w.coverGutter ? 0 : renderer.gutterWidth;\n if (!w.fixedWidth)\n left -= renderer.scrollLeft;\n w.el.style.left = left + \"px\";\n if (w.fullWidth && w.screenWidth) {\n w.el.style.minWidth = config.width + 2 * config.padding + \"px\";\n }\n if (w.fixedWidth) {\n w.el.style.right = renderer.scrollBar.getWidth() + \"px\";\n }\n else {\n w.el.style.right = \"\";\n }\n }\n };\n return LineWidgets;\n}());\nexports.LineWidgets = LineWidgets;\n\n});\n\nace.define(\"ace/keyboard/gutter_handler\",[\"require\",\"exports\",\"module\",\"ace/lib/keys\",\"ace/mouse/default_gutter_handler\"], function(require, exports, module){\"use strict\";\nvar keys = require('../lib/keys');\nvar GutterTooltip = require(\"../mouse/default_gutter_handler\").GutterTooltip;\nvar GutterKeyboardHandler = /** @class */ (function () {\n function GutterKeyboardHandler(editor) {\n this.editor = editor;\n this.gutterLayer = editor.renderer.$gutterLayer;\n this.element = editor.renderer.$gutter;\n this.lines = editor.renderer.$gutterLayer.$lines;\n this.activeRowIndex = null;\n this.activeLane = null;\n this.annotationTooltip = new GutterTooltip(this.editor);\n }\n GutterKeyboardHandler.prototype.addListener = function () {\n this.element.addEventListener(\"keydown\", this.$onGutterKeyDown.bind(this));\n this.element.addEventListener(\"focusout\", this.$blurGutter.bind(this));\n this.editor.on(\"mousewheel\", this.$blurGutter.bind(this));\n };\n GutterKeyboardHandler.prototype.removeListener = function () {\n this.element.removeEventListener(\"keydown\", this.$onGutterKeyDown.bind(this));\n this.element.removeEventListener(\"focusout\", this.$blurGutter.bind(this));\n this.editor.off(\"mousewheel\", this.$blurGutter.bind(this));\n };\n GutterKeyboardHandler.prototype.$onGutterKeyDown = function (e) {\n if (this.annotationTooltip.isOpen) {\n e.preventDefault();\n if (e.keyCode === keys[\"escape\"])\n this.annotationTooltip.hideTooltip();\n return;\n }\n if (e.target === this.element) {\n if (e.keyCode != keys[\"enter\"]) {\n return;\n }\n e.preventDefault();\n var row = this.editor.getCursorPosition().row;\n if (!this.editor.isRowVisible(row))\n this.editor.scrollToLine(row, true, true);\n setTimeout(function () {\n var index = this.$rowToRowIndex(this.gutterLayer.$cursorCell.row);\n var nearestFoldIndex = this.$findNearestFoldWidget(index);\n var nearestAnnotationIndex = this.$findNearestAnnotation(index);\n if (nearestFoldIndex === null && nearestAnnotationIndex === null)\n return;\n if (nearestFoldIndex === null && nearestAnnotationIndex !== null) {\n this.activeRowIndex = nearestAnnotationIndex;\n this.activeLane = \"annotation\";\n this.$focusAnnotation(this.activeRowIndex);\n return;\n }\n if (nearestFoldIndex !== null && nearestAnnotationIndex === null) {\n this.activeRowIndex = nearestFoldIndex;\n this.activeLane = \"fold\";\n this.$focusFoldWidget(this.activeRowIndex);\n return;\n }\n if (Math.abs(nearestAnnotationIndex - index) < Math.abs(nearestFoldIndex - index)) {\n this.activeRowIndex = nearestAnnotationIndex;\n this.activeLane = \"annotation\";\n this.$focusAnnotation(this.activeRowIndex);\n return;\n }\n else {\n this.activeRowIndex = nearestFoldIndex;\n this.activeLane = \"fold\";\n this.$focusFoldWidget(this.activeRowIndex);\n return;\n }\n }.bind(this), 10);\n return;\n }\n this.$handleGutterKeyboardInteraction(e);\n setTimeout(function () {\n this.editor._signal(\"gutterkeydown\", new GutterKeyboardEvent(e, this));\n }.bind(this), 10);\n };\n GutterKeyboardHandler.prototype.$handleGutterKeyboardInteraction = function (e) {\n if (e.keyCode === keys[\"tab\"]) {\n e.preventDefault();\n return;\n }\n if (e.keyCode === keys[\"escape\"]) {\n e.preventDefault();\n this.$blurGutter();\n this.element.focus();\n this.lane = null;\n return;\n }\n if (e.keyCode === keys[\"up\"]) {\n e.preventDefault();\n switch (this.activeLane) {\n case \"fold\":\n this.$moveFoldWidgetUp();\n break;\n case \"annotation\":\n this.$moveAnnotationUp();\n break;\n }\n return;\n }\n if (e.keyCode === keys[\"down\"]) {\n e.preventDefault();\n switch (this.activeLane) {\n case \"fold\":\n this.$moveFoldWidgetDown();\n break;\n case \"annotation\":\n this.$moveAnnotationDown();\n break;\n }\n return;\n }\n if (e.keyCode === keys[\"left\"]) {\n e.preventDefault();\n this.$switchLane(\"annotation\");\n return;\n }\n if (e.keyCode === keys[\"right\"]) {\n e.preventDefault();\n this.$switchLane(\"fold\");\n return;\n }\n if (e.keyCode === keys[\"enter\"] || e.keyCode === keys[\"space\"]) {\n e.preventDefault();\n switch (this.activeLane) {\n case \"fold\":\n if (this.gutterLayer.session.foldWidgets[this.$rowIndexToRow(this.activeRowIndex)] === 'start') {\n var rowFoldingWidget = this.$rowIndexToRow(this.activeRowIndex);\n this.editor.session.onFoldWidgetClick(this.$rowIndexToRow(this.activeRowIndex), e);\n setTimeout(function () {\n if (this.$rowIndexToRow(this.activeRowIndex) !== rowFoldingWidget) {\n this.$blurFoldWidget(this.activeRowIndex);\n this.activeRowIndex = this.$rowToRowIndex(rowFoldingWidget);\n this.$focusFoldWidget(this.activeRowIndex);\n }\n }.bind(this), 10);\n break;\n }\n else if (this.gutterLayer.session.foldWidgets[this.$rowIndexToRow(this.activeRowIndex)] === 'end') {\n break;\n }\n return;\n case \"annotation\":\n var gutterElement = this.lines.cells[this.activeRowIndex].element.childNodes[2];\n var rect = gutterElement.getBoundingClientRect();\n var style = this.annotationTooltip.getElement().style;\n style.left = rect.right + \"px\";\n style.top = rect.bottom + \"px\";\n this.annotationTooltip.showTooltip(this.$rowIndexToRow(this.activeRowIndex));\n break;\n }\n return;\n }\n };\n GutterKeyboardHandler.prototype.$blurGutter = function () {\n if (this.activeRowIndex !== null) {\n switch (this.activeLane) {\n case \"fold\":\n this.$blurFoldWidget(this.activeRowIndex);\n break;\n case \"annotation\":\n this.$blurAnnotation(this.activeRowIndex);\n break;\n }\n }\n if (this.annotationTooltip.isOpen)\n this.annotationTooltip.hideTooltip();\n return;\n };\n GutterKeyboardHandler.prototype.$isFoldWidgetVisible = function (index) {\n var isRowFullyVisible = this.editor.isRowFullyVisible(this.$rowIndexToRow(index));\n var isIconVisible = this.$getFoldWidget(index).style.display !== \"none\";\n return isRowFullyVisible && isIconVisible;\n };\n GutterKeyboardHandler.prototype.$isAnnotationVisible = function (index) {\n var isRowFullyVisible = this.editor.isRowFullyVisible(this.$rowIndexToRow(index));\n var isIconVisible = this.$getAnnotation(index).style.display !== \"none\";\n return isRowFullyVisible && isIconVisible;\n };\n GutterKeyboardHandler.prototype.$getFoldWidget = function (index) {\n var cell = this.lines.get(index);\n var element = cell.element;\n return element.childNodes[1];\n };\n GutterKeyboardHandler.prototype.$getAnnotation = function (index) {\n var cell = this.lines.get(index);\n var element = cell.element;\n return element.childNodes[2];\n };\n GutterKeyboardHandler.prototype.$findNearestFoldWidget = function (index) {\n if (this.$isFoldWidgetVisible(index))\n return index;\n var i = 0;\n while (index - i > 0 || index + i < this.lines.getLength() - 1) {\n i++;\n if (index - i >= 0 && this.$isFoldWidgetVisible(index - i))\n return index - i;\n if (index + i <= this.lines.getLength() - 1 && this.$isFoldWidgetVisible(index + i))\n return index + i;\n }\n return null;\n };\n GutterKeyboardHandler.prototype.$findNearestAnnotation = function (index) {\n if (this.$isAnnotationVisible(index))\n return index;\n var i = 0;\n while (index - i > 0 || index + i < this.lines.getLength() - 1) {\n i++;\n if (index - i >= 0 && this.$isAnnotationVisible(index - i))\n return index - i;\n if (index + i <= this.lines.getLength() - 1 && this.$isAnnotationVisible(index + i))\n return index + i;\n }\n return null;\n };\n GutterKeyboardHandler.prototype.$focusFoldWidget = function (index) {\n if (index == null)\n return;\n var foldWidget = this.$getFoldWidget(index);\n foldWidget.classList.add(this.editor.renderer.keyboardFocusClassName);\n foldWidget.focus();\n };\n GutterKeyboardHandler.prototype.$focusAnnotation = function (index) {\n if (index == null)\n return;\n var annotation = this.$getAnnotation(index);\n annotation.classList.add(this.editor.renderer.keyboardFocusClassName);\n annotation.focus();\n };\n GutterKeyboardHandler.prototype.$blurFoldWidget = function (index) {\n var foldWidget = this.$getFoldWidget(index);\n foldWidget.classList.remove(this.editor.renderer.keyboardFocusClassName);\n foldWidget.blur();\n };\n GutterKeyboardHandler.prototype.$blurAnnotation = function (index) {\n var annotation = this.$getAnnotation(index);\n annotation.classList.remove(this.editor.renderer.keyboardFocusClassName);\n annotation.blur();\n };\n GutterKeyboardHandler.prototype.$moveFoldWidgetUp = function () {\n var index = this.activeRowIndex;\n while (index > 0) {\n index--;\n if (this.$isFoldWidgetVisible(index)) {\n this.$blurFoldWidget(this.activeRowIndex);\n this.activeRowIndex = index;\n this.$focusFoldWidget(this.activeRowIndex);\n return;\n }\n }\n return;\n };\n GutterKeyboardHandler.prototype.$moveFoldWidgetDown = function () {\n var index = this.activeRowIndex;\n while (index < this.lines.getLength() - 1) {\n index++;\n if (this.$isFoldWidgetVisible(index)) {\n this.$blurFoldWidget(this.activeRowIndex);\n this.activeRowIndex = index;\n this.$focusFoldWidget(this.activeRowIndex);\n return;\n }\n }\n return;\n };\n GutterKeyboardHandler.prototype.$moveAnnotationUp = function () {\n var index = this.activeRowIndex;\n while (index > 0) {\n index--;\n if (this.$isAnnotationVisible(index)) {\n this.$blurAnnotation(this.activeRowIndex);\n this.activeRowIndex = index;\n this.$focusAnnotation(this.activeRowIndex);\n return;\n }\n }\n return;\n };\n GutterKeyboardHandler.prototype.$moveAnnotationDown = function () {\n var index = this.activeRowIndex;\n while (index < this.lines.getLength() - 1) {\n index++;\n if (this.$isAnnotationVisible(index)) {\n this.$blurAnnotation(this.activeRowIndex);\n this.activeRowIndex = index;\n this.$focusAnnotation(this.activeRowIndex);\n return;\n }\n }\n return;\n };\n GutterKeyboardHandler.prototype.$switchLane = function (desinationLane) {\n switch (desinationLane) {\n case \"annotation\":\n if (this.activeLane === \"annotation\") {\n break;\n }\n var annotationIndex = this.$findNearestAnnotation(this.activeRowIndex);\n if (annotationIndex == null) {\n break;\n }\n this.activeLane = \"annotation\";\n this.$blurFoldWidget(this.activeRowIndex);\n this.activeRowIndex = annotationIndex;\n this.$focusAnnotation(this.activeRowIndex);\n break;\n case \"fold\":\n if (this.activeLane === \"fold\") {\n break;\n }\n var foldWidgetIndex = this.$findNearestFoldWidget(this.activeRowIndex);\n if (foldWidgetIndex == null) {\n break;\n }\n this.activeLane = \"fold\";\n this.$blurAnnotation(this.activeRowIndex);\n this.activeRowIndex = foldWidgetIndex;\n this.$focusFoldWidget(this.activeRowIndex);\n break;\n }\n return;\n };\n GutterKeyboardHandler.prototype.$rowIndexToRow = function (index) {\n var cell = this.lines.get(index);\n if (cell)\n return cell.row;\n return null;\n };\n GutterKeyboardHandler.prototype.$rowToRowIndex = function (row) {\n for (var i = 0; i < this.lines.getLength(); i++) {\n var cell = this.lines.get(i);\n if (cell.row == row)\n return i;\n }\n return null;\n };\n return GutterKeyboardHandler;\n}());\nexports.GutterKeyboardHandler = GutterKeyboardHandler;\nvar GutterKeyboardEvent = /** @class */ (function () {\n function GutterKeyboardEvent(domEvent, gutterKeyboardHandler) {\n this.gutterKeyboardHandler = gutterKeyboardHandler;\n this.domEvent = domEvent;\n }\n GutterKeyboardEvent.prototype.getKey = function () {\n return keys.keyCodeToString(this.domEvent.keyCode);\n };\n GutterKeyboardEvent.prototype.getRow = function () {\n return this.gutterKeyboardHandler.$rowIndexToRow(this.gutterKeyboardHandler.activeRowIndex);\n };\n GutterKeyboardEvent.prototype.isInAnnotationLane = function () {\n return this.gutterKeyboardHandler.activeLane === \"annotation\";\n };\n GutterKeyboardEvent.prototype.isInFoldLane = function () {\n return this.gutterKeyboardHandler.activeLane === \"fold\";\n };\n return GutterKeyboardEvent;\n}());\nexports.GutterKeyboardEvent = GutterKeyboardEvent;\n\n});\n\nace.define(\"ace/editor\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/dom\",\"ace/lib/lang\",\"ace/lib/useragent\",\"ace/keyboard/textinput\",\"ace/mouse/mouse_handler\",\"ace/mouse/fold_handler\",\"ace/keyboard/keybinding\",\"ace/edit_session\",\"ace/search\",\"ace/range\",\"ace/lib/event_emitter\",\"ace/commands/command_manager\",\"ace/commands/default_commands\",\"ace/config\",\"ace/token_iterator\",\"ace/line_widgets\",\"ace/keyboard/gutter_handler\",\"ace/config\",\"ace/clipboard\",\"ace/lib/keys\"], function(require, exports, module){\"use strict\";\nvar __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar oop = require(\"./lib/oop\");\nvar dom = require(\"./lib/dom\");\nvar lang = require(\"./lib/lang\");\nvar useragent = require(\"./lib/useragent\");\nvar TextInput = require(\"./keyboard/textinput\").TextInput;\nvar MouseHandler = require(\"./mouse/mouse_handler\").MouseHandler;\nvar FoldHandler = require(\"./mouse/fold_handler\").FoldHandler;\nvar KeyBinding = require(\"./keyboard/keybinding\").KeyBinding;\nvar EditSession = require(\"./edit_session\").EditSession;\nvar Search = require(\"./search\").Search;\nvar Range = require(\"./range\").Range;\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar CommandManager = require(\"./commands/command_manager\").CommandManager;\nvar defaultCommands = require(\"./commands/default_commands\").commands;\nvar config = require(\"./config\");\nvar TokenIterator = require(\"./token_iterator\").TokenIterator;\nvar LineWidgets = require(\"./line_widgets\").LineWidgets;\nvar GutterKeyboardHandler = require(\"./keyboard/gutter_handler\").GutterKeyboardHandler;\nvar nls = require(\"./config\").nls;\nvar clipboard = require(\"./clipboard\");\nvar keys = require('./lib/keys');\nvar Editor = /** @class */ (function () {\n function Editor(renderer, session, options) {\n this.$toDestroy = [];\n var container = renderer.getContainerElement();\n this.container = container;\n this.renderer = renderer;\n this.id = \"editor\" + (++Editor.$uid);\n this.commands = new CommandManager(useragent.isMac ? \"mac\" : \"win\", defaultCommands);\n if (typeof document == \"object\") {\n this.textInput = new TextInput(renderer.getTextAreaContainer(), this);\n this.renderer.textarea = this.textInput.getElement();\n this.$mouseHandler = new MouseHandler(this);\n new FoldHandler(this);\n }\n this.keyBinding = new KeyBinding(this);\n this.$search = new Search().set({\n wrap: true\n });\n this.$historyTracker = this.$historyTracker.bind(this);\n this.commands.on(\"exec\", this.$historyTracker);\n this.$initOperationListeners();\n this._$emitInputEvent = lang.delayedCall(function () {\n this._signal(\"input\", {});\n if (this.session && !this.session.destroyed)\n this.session.bgTokenizer.scheduleStart();\n }.bind(this));\n this.on(\"change\", function (_, _self) {\n _self._$emitInputEvent.schedule(31);\n });\n this.setSession(session || options && options.session || new EditSession(\"\"));\n config.resetOptions(this);\n if (options)\n this.setOptions(options);\n config._signal(\"editor\", this);\n }\n Editor.prototype.$initOperationListeners = function () {\n this.commands.on(\"exec\", this.startOperation.bind(this), true);\n this.commands.on(\"afterExec\", this.endOperation.bind(this), true);\n this.$opResetTimer = lang.delayedCall(this.endOperation.bind(this, true));\n this.on(\"change\", function () {\n if (!this.curOp) {\n this.startOperation();\n this.curOp.selectionBefore = this.$lastSel;\n }\n this.curOp.docChanged = true;\n }.bind(this), true);\n this.on(\"changeSelection\", function () {\n if (!this.curOp) {\n this.startOperation();\n this.curOp.selectionBefore = this.$lastSel;\n }\n this.curOp.selectionChanged = true;\n }.bind(this), true);\n };\n Editor.prototype.startOperation = function (commandEvent) {\n if (this.curOp) {\n if (!commandEvent || this.curOp.command)\n return;\n this.prevOp = this.curOp;\n }\n if (!commandEvent) {\n this.previousCommand = null;\n commandEvent = {};\n }\n this.$opResetTimer.schedule();\n this.curOp = this.session.curOp = {\n command: commandEvent.command || {},\n args: commandEvent.args,\n scrollTop: this.renderer.scrollTop\n };\n this.curOp.selectionBefore = this.selection.toJSON();\n };\n Editor.prototype.endOperation = function (e) {\n if (this.curOp && this.session) {\n if (e && e.returnValue === false || !this.session)\n return (this.curOp = null);\n if (e == true && this.curOp.command && this.curOp.command.name == \"mouse\")\n return;\n this._signal(\"beforeEndOperation\");\n if (!this.curOp)\n return;\n var command = this.curOp.command;\n var scrollIntoView = command && command.scrollIntoView;\n if (scrollIntoView) {\n switch (scrollIntoView) {\n case \"center-animate\":\n scrollIntoView = \"animate\";\n case \"center\":\n this.renderer.scrollCursorIntoView(null, 0.5);\n break;\n case \"animate\":\n case \"cursor\":\n this.renderer.scrollCursorIntoView();\n break;\n case \"selectionPart\":\n var range = this.selection.getRange();\n var config = this.renderer.layerConfig;\n if (range.start.row >= config.lastRow || range.end.row <= config.firstRow) {\n this.renderer.scrollSelectionIntoView(this.selection.anchor, this.selection.lead);\n }\n break;\n default:\n break;\n }\n if (scrollIntoView == \"animate\")\n this.renderer.animateScrolling(this.curOp.scrollTop);\n }\n var sel = this.selection.toJSON();\n this.curOp.selectionAfter = sel;\n this.$lastSel = this.selection.toJSON();\n this.session.getUndoManager().addSelection(sel);\n this.prevOp = this.curOp;\n this.curOp = null;\n }\n };\n Editor.prototype.$historyTracker = function (e) {\n if (!this.$mergeUndoDeltas)\n return;\n var prev = this.prevOp;\n var mergeableCommands = this.$mergeableCommands;\n var shouldMerge = prev.command && (e.command.name == prev.command.name);\n if (e.command.name == \"insertstring\") {\n var text = e.args;\n if (this.mergeNextCommand === undefined)\n this.mergeNextCommand = true;\n shouldMerge = shouldMerge\n && this.mergeNextCommand // previous command allows to coalesce with\n && (!/\\s/.test(text) || /\\s/.test(prev.args)); // previous insertion was of same type\n this.mergeNextCommand = true;\n }\n else {\n shouldMerge = shouldMerge\n && mergeableCommands.indexOf(e.command.name) !== -1; // the command is mergeable\n }\n if (this.$mergeUndoDeltas != \"always\"\n && Date.now() - this.sequenceStartTime > 2000) {\n shouldMerge = false; // the sequence is too long\n }\n if (shouldMerge)\n this.session.mergeUndoDeltas = true;\n else if (mergeableCommands.indexOf(e.command.name) !== -1)\n this.sequenceStartTime = Date.now();\n };\n Editor.prototype.setKeyboardHandler = function (keyboardHandler, cb) {\n if (keyboardHandler && typeof keyboardHandler === \"string\" && keyboardHandler != \"ace\") {\n this.$keybindingId = keyboardHandler;\n var _self = this;\n config.loadModule([\"keybinding\", keyboardHandler], function (module) {\n if (_self.$keybindingId == keyboardHandler)\n _self.keyBinding.setKeyboardHandler(module && module.handler);\n cb && cb();\n });\n }\n else {\n this.$keybindingId = null;\n this.keyBinding.setKeyboardHandler(keyboardHandler);\n cb && cb();\n }\n };\n Editor.prototype.getKeyboardHandler = function () {\n return this.keyBinding.getKeyboardHandler();\n };\n Editor.prototype.setSession = function (session) {\n if (this.session == session)\n return;\n if (this.curOp)\n this.endOperation();\n this.curOp = {};\n var oldSession = this.session;\n if (oldSession) {\n this.session.off(\"change\", this.$onDocumentChange);\n this.session.off(\"changeMode\", this.$onChangeMode);\n this.session.off(\"tokenizerUpdate\", this.$onTokenizerUpdate);\n this.session.off(\"changeTabSize\", this.$onChangeTabSize);\n this.session.off(\"changeWrapLimit\", this.$onChangeWrapLimit);\n this.session.off(\"changeWrapMode\", this.$onChangeWrapMode);\n this.session.off(\"changeFold\", this.$onChangeFold);\n this.session.off(\"changeFrontMarker\", this.$onChangeFrontMarker);\n this.session.off(\"changeBackMarker\", this.$onChangeBackMarker);\n this.session.off(\"changeBreakpoint\", this.$onChangeBreakpoint);\n this.session.off(\"changeAnnotation\", this.$onChangeAnnotation);\n this.session.off(\"changeOverwrite\", this.$onCursorChange);\n this.session.off(\"changeScrollTop\", this.$onScrollTopChange);\n this.session.off(\"changeScrollLeft\", this.$onScrollLeftChange);\n var selection = this.session.getSelection();\n selection.off(\"changeCursor\", this.$onCursorChange);\n selection.off(\"changeSelection\", this.$onSelectionChange);\n }\n this.session = session;\n if (session) {\n this.$onDocumentChange = this.onDocumentChange.bind(this);\n session.on(\"change\", this.$onDocumentChange);\n this.renderer.setSession(session);\n this.$onChangeMode = this.onChangeMode.bind(this);\n session.on(\"changeMode\", this.$onChangeMode);\n this.$onTokenizerUpdate = this.onTokenizerUpdate.bind(this);\n session.on(\"tokenizerUpdate\", this.$onTokenizerUpdate);\n this.$onChangeTabSize = this.renderer.onChangeTabSize.bind(this.renderer);\n session.on(\"changeTabSize\", this.$onChangeTabSize);\n this.$onChangeWrapLimit = this.onChangeWrapLimit.bind(this);\n session.on(\"changeWrapLimit\", this.$onChangeWrapLimit);\n this.$onChangeWrapMode = this.onChangeWrapMode.bind(this);\n session.on(\"changeWrapMode\", this.$onChangeWrapMode);\n this.$onChangeFold = this.onChangeFold.bind(this);\n session.on(\"changeFold\", this.$onChangeFold);\n this.$onChangeFrontMarker = this.onChangeFrontMarker.bind(this);\n this.session.on(\"changeFrontMarker\", this.$onChangeFrontMarker);\n this.$onChangeBackMarker = this.onChangeBackMarker.bind(this);\n this.session.on(\"changeBackMarker\", this.$onChangeBackMarker);\n this.$onChangeBreakpoint = this.onChangeBreakpoint.bind(this);\n this.session.on(\"changeBreakpoint\", this.$onChangeBreakpoint);\n this.$onChangeAnnotation = this.onChangeAnnotation.bind(this);\n this.session.on(\"changeAnnotation\", this.$onChangeAnnotation);\n this.$onCursorChange = this.onCursorChange.bind(this);\n this.session.on(\"changeOverwrite\", this.$onCursorChange);\n this.$onScrollTopChange = this.onScrollTopChange.bind(this);\n this.session.on(\"changeScrollTop\", this.$onScrollTopChange);\n this.$onScrollLeftChange = this.onScrollLeftChange.bind(this);\n this.session.on(\"changeScrollLeft\", this.$onScrollLeftChange);\n this.selection = session.getSelection();\n this.selection.on(\"changeCursor\", this.$onCursorChange);\n this.$onSelectionChange = this.onSelectionChange.bind(this);\n this.selection.on(\"changeSelection\", this.$onSelectionChange);\n this.onChangeMode();\n this.onCursorChange();\n this.onScrollTopChange();\n this.onScrollLeftChange();\n this.onSelectionChange();\n this.onChangeFrontMarker();\n this.onChangeBackMarker();\n this.onChangeBreakpoint();\n this.onChangeAnnotation();\n this.session.getUseWrapMode() && this.renderer.adjustWrapLimit();\n this.renderer.updateFull();\n }\n else {\n this.selection = null;\n this.renderer.setSession(session);\n }\n this._signal(\"changeSession\", {\n session: session,\n oldSession: oldSession\n });\n this.curOp = null;\n oldSession && oldSession._signal(\"changeEditor\", { oldEditor: this });\n session && session._signal(\"changeEditor\", { editor: this });\n if (session && !session.destroyed)\n session.bgTokenizer.scheduleStart();\n };\n Editor.prototype.getSession = function () {\n return this.session;\n };\n Editor.prototype.setValue = function (val, cursorPos) {\n this.session.doc.setValue(val);\n if (!cursorPos)\n this.selectAll();\n else if (cursorPos == 1)\n this.navigateFileEnd();\n else if (cursorPos == -1)\n this.navigateFileStart();\n return val;\n };\n Editor.prototype.getValue = function () {\n return this.session.getValue();\n };\n Editor.prototype.getSelection = function () {\n return this.selection;\n };\n Editor.prototype.resize = function (force) {\n this.renderer.onResize(force);\n };\n Editor.prototype.setTheme = function (theme, cb) {\n this.renderer.setTheme(theme, cb);\n };\n Editor.prototype.getTheme = function () {\n return this.renderer.getTheme();\n };\n Editor.prototype.setStyle = function (style) {\n this.renderer.setStyle(style);\n };\n Editor.prototype.unsetStyle = function (style) {\n this.renderer.unsetStyle(style);\n };\n Editor.prototype.getFontSize = function () {\n return this.getOption(\"fontSize\") ||\n dom.computedStyle(this.container).fontSize;\n };\n Editor.prototype.setFontSize = function (size) {\n this.setOption(\"fontSize\", size);\n };\n Editor.prototype.$highlightBrackets = function () {\n if (this.$highlightPending) {\n return;\n }\n var self = this;\n this.$highlightPending = true;\n setTimeout(function () {\n self.$highlightPending = false;\n var session = self.session;\n if (!session || session.destroyed)\n return;\n if (session.$bracketHighlight) {\n session.$bracketHighlight.markerIds.forEach(function (id) {\n session.removeMarker(id);\n });\n session.$bracketHighlight = null;\n }\n var pos = self.getCursorPosition();\n var handler = self.getKeyboardHandler();\n var isBackwards = handler && handler.$getDirectionForHighlight && handler.$getDirectionForHighlight(self);\n var ranges = session.getMatchingBracketRanges(pos, isBackwards);\n if (!ranges) {\n var iterator = new TokenIterator(session, pos.row, pos.column);\n var token = iterator.getCurrentToken();\n if (token && /\\b(?:tag-open|tag-name)/.test(token.type)) {\n var tagNamesRanges = session.getMatchingTags(pos);\n if (tagNamesRanges)\n ranges = [tagNamesRanges.openTagName, tagNamesRanges.closeTagName];\n }\n }\n if (!ranges && session.$mode.getMatching)\n ranges = session.$mode.getMatching(self.session);\n if (!ranges) {\n if (self.getHighlightIndentGuides())\n self.renderer.$textLayer.$highlightIndentGuide();\n return;\n }\n var markerType = \"ace_bracket\";\n if (!Array.isArray(ranges)) {\n ranges = [ranges];\n }\n else if (ranges.length == 1) {\n markerType = \"ace_error_bracket\";\n }\n if (ranges.length == 2) {\n if (Range.comparePoints(ranges[0].end, ranges[1].start) == 0)\n ranges = [Range.fromPoints(ranges[0].start, ranges[1].end)];\n else if (Range.comparePoints(ranges[0].start, ranges[1].end) == 0)\n ranges = [Range.fromPoints(ranges[1].start, ranges[0].end)];\n }\n session.$bracketHighlight = {\n ranges: ranges,\n markerIds: ranges.map(function (range) {\n return session.addMarker(range, markerType, \"text\");\n })\n };\n if (self.getHighlightIndentGuides())\n self.renderer.$textLayer.$highlightIndentGuide();\n }, 50);\n };\n Editor.prototype.focus = function () {\n this.textInput.focus();\n };\n Editor.prototype.isFocused = function () {\n return this.textInput.isFocused();\n };\n Editor.prototype.blur = function () {\n this.textInput.blur();\n };\n Editor.prototype.onFocus = function (e) {\n if (this.$isFocused)\n return;\n this.$isFocused = true;\n this.renderer.showCursor();\n this.renderer.visualizeFocus();\n this._emit(\"focus\", e);\n };\n Editor.prototype.onBlur = function (e) {\n if (!this.$isFocused)\n return;\n this.$isFocused = false;\n this.renderer.hideCursor();\n this.renderer.visualizeBlur();\n this._emit(\"blur\", e);\n };\n Editor.prototype.$cursorChange = function () {\n this.renderer.updateCursor();\n this.$highlightBrackets();\n this.$updateHighlightActiveLine();\n };\n Editor.prototype.onDocumentChange = function (delta) {\n var wrap = this.session.$useWrapMode;\n var lastRow = (delta.start.row == delta.end.row ? delta.end.row : Infinity);\n this.renderer.updateLines(delta.start.row, lastRow, wrap);\n this._signal(\"change\", delta);\n this.$cursorChange();\n };\n Editor.prototype.onTokenizerUpdate = function (e) {\n var rows = e.data;\n this.renderer.updateLines(rows.first, rows.last);\n };\n Editor.prototype.onScrollTopChange = function () {\n this.renderer.scrollToY(this.session.getScrollTop());\n };\n Editor.prototype.onScrollLeftChange = function () {\n this.renderer.scrollToX(this.session.getScrollLeft());\n };\n Editor.prototype.onCursorChange = function () {\n this.$cursorChange();\n this._signal(\"changeSelection\");\n };\n Editor.prototype.$updateHighlightActiveLine = function () {\n var session = this.getSession();\n var highlight;\n if (this.$highlightActiveLine) {\n if (this.$selectionStyle != \"line\" || !this.selection.isMultiLine())\n highlight = this.getCursorPosition();\n if (this.renderer.theme && this.renderer.theme.$selectionColorConflict && !this.selection.isEmpty())\n highlight = false;\n if (this.renderer.$maxLines && this.session.getLength() === 1 && !(this.renderer.$minLines > 1))\n highlight = false;\n }\n if (session.$highlightLineMarker && !highlight) {\n session.removeMarker(session.$highlightLineMarker.id);\n session.$highlightLineMarker = null;\n }\n else if (!session.$highlightLineMarker && highlight) {\n var range = new Range(highlight.row, highlight.column, highlight.row, Infinity);\n range.id = session.addMarker(range, \"ace_active-line\", \"screenLine\");\n session.$highlightLineMarker = range;\n }\n else if (highlight) {\n session.$highlightLineMarker.start.row = highlight.row;\n session.$highlightLineMarker.end.row = highlight.row;\n session.$highlightLineMarker.start.column = highlight.column;\n session._signal(\"changeBackMarker\");\n }\n };\n Editor.prototype.onSelectionChange = function (e) {\n var session = this.session;\n if (session.$selectionMarker) {\n session.removeMarker(session.$selectionMarker);\n }\n session.$selectionMarker = null;\n if (!this.selection.isEmpty()) {\n var range = this.selection.getRange();\n var style = this.getSelectionStyle();\n session.$selectionMarker = session.addMarker(range, \"ace_selection\", style);\n }\n else {\n this.$updateHighlightActiveLine();\n }\n var re = this.$highlightSelectedWord && this.$getSelectionHighLightRegexp();\n this.session.highlight(re);\n this._signal(\"changeSelection\");\n };\n Editor.prototype.$getSelectionHighLightRegexp = function () {\n var session = this.session;\n var selection = this.getSelectionRange();\n if (selection.isEmpty() || selection.isMultiLine())\n return;\n var startColumn = selection.start.column;\n var endColumn = selection.end.column;\n var line = session.getLine(selection.start.row);\n var needle = line.substring(startColumn, endColumn);\n if (needle.length > 5000 || !/[\\w\\d]/.test(needle))\n return;\n var re = this.$search.$assembleRegExp({\n wholeWord: true,\n caseSensitive: true,\n needle: needle\n });\n var wordWithBoundary = line.substring(startColumn - 1, endColumn + 1);\n if (!re.test(wordWithBoundary))\n return;\n return re;\n };\n Editor.prototype.onChangeFrontMarker = function () {\n this.renderer.updateFrontMarkers();\n };\n Editor.prototype.onChangeBackMarker = function () {\n this.renderer.updateBackMarkers();\n };\n Editor.prototype.onChangeBreakpoint = function () {\n this.renderer.updateBreakpoints();\n };\n Editor.prototype.onChangeAnnotation = function () {\n this.renderer.setAnnotations(this.session.getAnnotations());\n };\n Editor.prototype.onChangeMode = function (e) {\n this.renderer.updateText();\n this._emit(\"changeMode\", e);\n };\n Editor.prototype.onChangeWrapLimit = function () {\n this.renderer.updateFull();\n };\n Editor.prototype.onChangeWrapMode = function () {\n this.renderer.onResize(true);\n };\n Editor.prototype.onChangeFold = function () {\n this.$updateHighlightActiveLine();\n this.renderer.updateFull();\n };\n Editor.prototype.getSelectedText = function () {\n return this.session.getTextRange(this.getSelectionRange());\n };\n Editor.prototype.getCopyText = function () {\n var text = this.getSelectedText();\n var nl = this.session.doc.getNewLineCharacter();\n var copyLine = false;\n if (!text && this.$copyWithEmptySelection) {\n copyLine = true;\n var ranges = this.selection.getAllRanges();\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i];\n if (i && ranges[i - 1].start.row == range.start.row)\n continue;\n text += this.session.getLine(range.start.row) + nl;\n }\n }\n var e = { text: text };\n this._signal(\"copy\", e);\n clipboard.lineMode = copyLine ? e.text : false;\n return e.text;\n };\n Editor.prototype.onCopy = function () {\n this.commands.exec(\"copy\", this);\n };\n Editor.prototype.onCut = function () {\n this.commands.exec(\"cut\", this);\n };\n Editor.prototype.onPaste = function (text, event) {\n var e = { text: text, event: event };\n this.commands.exec(\"paste\", this, e);\n };\n Editor.prototype.$handlePaste = function (e) {\n if (typeof e == \"string\")\n e = { text: e };\n this._signal(\"paste\", e);\n var text = e.text;\n var lineMode = text === clipboard.lineMode;\n var session = this.session;\n if (!this.inMultiSelectMode || this.inVirtualSelectionMode) {\n if (lineMode)\n session.insert({ row: this.selection.lead.row, column: 0 }, text);\n else\n this.insert(text);\n }\n else if (lineMode) {\n this.selection.rangeList.ranges.forEach(function (range) {\n session.insert({ row: range.start.row, column: 0 }, text);\n });\n }\n else {\n var lines = text.split(/\\r\\n|\\r|\\n/);\n var ranges = this.selection.rangeList.ranges;\n var isFullLine = lines.length == 2 && (!lines[0] || !lines[1]);\n if (lines.length != ranges.length || isFullLine)\n return this.commands.exec(\"insertstring\", this, text);\n for (var i = ranges.length; i--;) {\n var range = ranges[i];\n if (!range.isEmpty())\n session.remove(range);\n session.insert(range.start, lines[i]);\n }\n }\n };\n Editor.prototype.execCommand = function (command, args) {\n return this.commands.exec(command, this, args);\n };\n Editor.prototype.insert = function (text, pasted) {\n var session = this.session;\n var mode = session.getMode();\n var cursor = this.getCursorPosition();\n if (this.getBehavioursEnabled() && !pasted) {\n var transform = mode.transformAction(session.getState(cursor.row), 'insertion', this, session, text);\n if (transform) {\n if (text !== transform.text) {\n if (!this.inVirtualSelectionMode) {\n this.session.mergeUndoDeltas = false;\n this.mergeNextCommand = false;\n }\n }\n text = transform.text;\n }\n }\n if (text == \"\\t\")\n text = this.session.getTabString();\n if (!this.selection.isEmpty()) {\n var range = this.getSelectionRange();\n cursor = this.session.remove(range);\n this.clearSelection();\n }\n else if (this.session.getOverwrite() && text.indexOf(\"\\n\") == -1) {\n var range = new Range.fromPoints(cursor, cursor);\n range.end.column += text.length;\n this.session.remove(range);\n }\n if (text == \"\\n\" || text == \"\\r\\n\") {\n var line = session.getLine(cursor.row);\n if (cursor.column > line.search(/\\S|$/)) {\n var d = line.substr(cursor.column).search(/\\S|$/);\n session.doc.removeInLine(cursor.row, cursor.column, cursor.column + d);\n }\n }\n this.clearSelection();\n var start = cursor.column;\n var lineState = session.getState(cursor.row);\n var line = session.getLine(cursor.row);\n var shouldOutdent = mode.checkOutdent(lineState, line, text);\n session.insert(cursor, text);\n if (transform && transform.selection) {\n if (transform.selection.length == 2) { // Transform relative to the current column\n this.selection.setSelectionRange(new Range(cursor.row, start + transform.selection[0], cursor.row, start + transform.selection[1]));\n }\n else { // Transform relative to the current row.\n this.selection.setSelectionRange(new Range(cursor.row + transform.selection[0], transform.selection[1], cursor.row + transform.selection[2], transform.selection[3]));\n }\n }\n if (this.$enableAutoIndent) {\n if (session.getDocument().isNewLine(text)) {\n var lineIndent = mode.getNextLineIndent(lineState, line.slice(0, cursor.column), session.getTabString());\n session.insert({ row: cursor.row + 1, column: 0 }, lineIndent);\n }\n if (shouldOutdent)\n mode.autoOutdent(lineState, session, cursor.row);\n }\n };\n Editor.prototype.autoIndent = function () {\n var session = this.session;\n var mode = session.getMode();\n var startRow, endRow;\n if (this.selection.isEmpty()) {\n startRow = 0;\n endRow = session.doc.getLength() - 1;\n }\n else {\n var selectedRange = this.getSelectionRange();\n startRow = selectedRange.start.row;\n endRow = selectedRange.end.row;\n }\n var prevLineState = \"\";\n var prevLine = \"\";\n var lineIndent = \"\";\n var line, currIndent, range;\n var tab = session.getTabString();\n for (var row = startRow; row <= endRow; row++) {\n if (row > 0) {\n prevLineState = session.getState(row - 1);\n prevLine = session.getLine(row - 1);\n lineIndent = mode.getNextLineIndent(prevLineState, prevLine, tab);\n }\n line = session.getLine(row);\n currIndent = mode.$getIndent(line);\n if (lineIndent !== currIndent) {\n if (currIndent.length > 0) {\n range = new Range(row, 0, row, currIndent.length);\n session.remove(range);\n }\n if (lineIndent.length > 0) {\n session.insert({ row: row, column: 0 }, lineIndent);\n }\n }\n mode.autoOutdent(prevLineState, session, row);\n }\n };\n Editor.prototype.onTextInput = function (text, composition) {\n if (!composition)\n return this.keyBinding.onTextInput(text);\n this.startOperation({ command: { name: \"insertstring\" } });\n var applyComposition = this.applyComposition.bind(this, text, composition);\n if (this.selection.rangeCount)\n this.forEachSelection(applyComposition);\n else\n applyComposition();\n this.endOperation();\n };\n Editor.prototype.applyComposition = function (text, composition) {\n if (composition.extendLeft || composition.extendRight) {\n var r = this.selection.getRange();\n r.start.column -= composition.extendLeft;\n r.end.column += composition.extendRight;\n if (r.start.column < 0) {\n r.start.row--;\n r.start.column += this.session.getLine(r.start.row).length + 1;\n }\n this.selection.setRange(r);\n if (!text && !r.isEmpty())\n this.remove();\n }\n if (text || !this.selection.isEmpty())\n this.insert(text, true);\n if (composition.restoreStart || composition.restoreEnd) {\n var r = this.selection.getRange();\n r.start.column -= composition.restoreStart;\n r.end.column -= composition.restoreEnd;\n this.selection.setRange(r);\n }\n };\n Editor.prototype.onCommandKey = function (e, hashId, keyCode) {\n return this.keyBinding.onCommandKey(e, hashId, keyCode);\n };\n Editor.prototype.setOverwrite = function (overwrite) {\n this.session.setOverwrite(overwrite);\n };\n Editor.prototype.getOverwrite = function () {\n return this.session.getOverwrite();\n };\n Editor.prototype.toggleOverwrite = function () {\n this.session.toggleOverwrite();\n };\n Editor.prototype.setScrollSpeed = function (speed) {\n this.setOption(\"scrollSpeed\", speed);\n };\n Editor.prototype.getScrollSpeed = function () {\n return this.getOption(\"scrollSpeed\");\n };\n Editor.prototype.setDragDelay = function (dragDelay) {\n this.setOption(\"dragDelay\", dragDelay);\n };\n Editor.prototype.getDragDelay = function () {\n return this.getOption(\"dragDelay\");\n };\n Editor.prototype.setSelectionStyle = function (val) {\n this.setOption(\"selectionStyle\", val);\n };\n Editor.prototype.getSelectionStyle = function () {\n return this.getOption(\"selectionStyle\");\n };\n Editor.prototype.setHighlightActiveLine = function (shouldHighlight) {\n this.setOption(\"highlightActiveLine\", shouldHighlight);\n };\n Editor.prototype.getHighlightActiveLine = function () {\n return this.getOption(\"highlightActiveLine\");\n };\n Editor.prototype.setHighlightGutterLine = function (shouldHighlight) {\n this.setOption(\"highlightGutterLine\", shouldHighlight);\n };\n Editor.prototype.getHighlightGutterLine = function () {\n return this.getOption(\"highlightGutterLine\");\n };\n Editor.prototype.setHighlightSelectedWord = function (shouldHighlight) {\n this.setOption(\"highlightSelectedWord\", shouldHighlight);\n };\n Editor.prototype.getHighlightSelectedWord = function () {\n return this.$highlightSelectedWord;\n };\n Editor.prototype.setAnimatedScroll = function (shouldAnimate) {\n this.renderer.setAnimatedScroll(shouldAnimate);\n };\n Editor.prototype.getAnimatedScroll = function () {\n return this.renderer.getAnimatedScroll();\n };\n Editor.prototype.setShowInvisibles = function (showInvisibles) {\n this.renderer.setShowInvisibles(showInvisibles);\n };\n Editor.prototype.getShowInvisibles = function () {\n return this.renderer.getShowInvisibles();\n };\n Editor.prototype.setDisplayIndentGuides = function (display) {\n this.renderer.setDisplayIndentGuides(display);\n };\n Editor.prototype.getDisplayIndentGuides = function () {\n return this.renderer.getDisplayIndentGuides();\n };\n Editor.prototype.setHighlightIndentGuides = function (highlight) {\n this.renderer.setHighlightIndentGuides(highlight);\n };\n Editor.prototype.getHighlightIndentGuides = function () {\n return this.renderer.getHighlightIndentGuides();\n };\n Editor.prototype.setShowPrintMargin = function (showPrintMargin) {\n this.renderer.setShowPrintMargin(showPrintMargin);\n };\n Editor.prototype.getShowPrintMargin = function () {\n return this.renderer.getShowPrintMargin();\n };\n Editor.prototype.setPrintMarginColumn = function (showPrintMargin) {\n this.renderer.setPrintMarginColumn(showPrintMargin);\n };\n Editor.prototype.getPrintMarginColumn = function () {\n return this.renderer.getPrintMarginColumn();\n };\n Editor.prototype.setReadOnly = function (readOnly) {\n this.setOption(\"readOnly\", readOnly);\n };\n Editor.prototype.getReadOnly = function () {\n return this.getOption(\"readOnly\");\n };\n Editor.prototype.setBehavioursEnabled = function (enabled) {\n this.setOption(\"behavioursEnabled\", enabled);\n };\n Editor.prototype.getBehavioursEnabled = function () {\n return this.getOption(\"behavioursEnabled\");\n };\n Editor.prototype.setWrapBehavioursEnabled = function (enabled) {\n this.setOption(\"wrapBehavioursEnabled\", enabled);\n };\n Editor.prototype.getWrapBehavioursEnabled = function () {\n return this.getOption(\"wrapBehavioursEnabled\");\n };\n Editor.prototype.setShowFoldWidgets = function (show) {\n this.setOption(\"showFoldWidgets\", show);\n };\n Editor.prototype.getShowFoldWidgets = function () {\n return this.getOption(\"showFoldWidgets\");\n };\n Editor.prototype.setFadeFoldWidgets = function (fade) {\n this.setOption(\"fadeFoldWidgets\", fade);\n };\n Editor.prototype.getFadeFoldWidgets = function () {\n return this.getOption(\"fadeFoldWidgets\");\n };\n Editor.prototype.remove = function (dir) {\n if (this.selection.isEmpty()) {\n if (dir == \"left\")\n this.selection.selectLeft();\n else\n this.selection.selectRight();\n }\n var range = this.getSelectionRange();\n if (this.getBehavioursEnabled()) {\n var session = this.session;\n var state = session.getState(range.start.row);\n var new_range = session.getMode().transformAction(state, 'deletion', this, session, range);\n if (range.end.column === 0) {\n var text = session.getTextRange(range);\n if (text[text.length - 1] == \"\\n\") {\n var line = session.getLine(range.end.row);\n if (/^\\s+$/.test(line)) {\n range.end.column = line.length;\n }\n }\n }\n if (new_range)\n range = new_range;\n }\n this.session.remove(range);\n this.clearSelection();\n };\n Editor.prototype.removeWordRight = function () {\n if (this.selection.isEmpty())\n this.selection.selectWordRight();\n this.session.remove(this.getSelectionRange());\n this.clearSelection();\n };\n Editor.prototype.removeWordLeft = function () {\n if (this.selection.isEmpty())\n this.selection.selectWordLeft();\n this.session.remove(this.getSelectionRange());\n this.clearSelection();\n };\n Editor.prototype.removeToLineStart = function () {\n if (this.selection.isEmpty())\n this.selection.selectLineStart();\n if (this.selection.isEmpty())\n this.selection.selectLeft();\n this.session.remove(this.getSelectionRange());\n this.clearSelection();\n };\n Editor.prototype.removeToLineEnd = function () {\n if (this.selection.isEmpty())\n this.selection.selectLineEnd();\n var range = this.getSelectionRange();\n if (range.start.column == range.end.column && range.start.row == range.end.row) {\n range.end.column = 0;\n range.end.row++;\n }\n this.session.remove(range);\n this.clearSelection();\n };\n Editor.prototype.splitLine = function () {\n if (!this.selection.isEmpty()) {\n this.session.remove(this.getSelectionRange());\n this.clearSelection();\n }\n var cursor = this.getCursorPosition();\n this.insert(\"\\n\");\n this.moveCursorToPosition(cursor);\n };\n Editor.prototype.setGhostText = function (text, position) {\n if (!this.session.widgetManager) {\n this.session.widgetManager = new LineWidgets(this.session);\n this.session.widgetManager.attach(this);\n }\n this.renderer.setGhostText(text, position);\n };\n Editor.prototype.removeGhostText = function () {\n if (!this.session.widgetManager)\n return;\n this.renderer.removeGhostText();\n };\n Editor.prototype.transposeLetters = function () {\n if (!this.selection.isEmpty()) {\n return;\n }\n var cursor = this.getCursorPosition();\n var column = cursor.column;\n if (column === 0)\n return;\n var line = this.session.getLine(cursor.row);\n var swap, range;\n if (column < line.length) {\n swap = line.charAt(column) + line.charAt(column - 1);\n range = new Range(cursor.row, column - 1, cursor.row, column + 1);\n }\n else {\n swap = line.charAt(column - 1) + line.charAt(column - 2);\n range = new Range(cursor.row, column - 2, cursor.row, column);\n }\n this.session.replace(range, swap);\n this.session.selection.moveToPosition(range.end);\n };\n Editor.prototype.toLowerCase = function () {\n var originalRange = this.getSelectionRange();\n if (this.selection.isEmpty()) {\n this.selection.selectWord();\n }\n var range = this.getSelectionRange();\n var text = this.session.getTextRange(range);\n this.session.replace(range, text.toLowerCase());\n this.selection.setSelectionRange(originalRange);\n };\n Editor.prototype.toUpperCase = function () {\n var originalRange = this.getSelectionRange();\n if (this.selection.isEmpty()) {\n this.selection.selectWord();\n }\n var range = this.getSelectionRange();\n var text = this.session.getTextRange(range);\n this.session.replace(range, text.toUpperCase());\n this.selection.setSelectionRange(originalRange);\n };\n Editor.prototype.indent = function () {\n var session = this.session;\n var range = this.getSelectionRange();\n if (range.start.row < range.end.row) {\n var rows = this.$getSelectedRows();\n session.indentRows(rows.first, rows.last, \"\\t\");\n return;\n }\n else if (range.start.column < range.end.column) {\n var text = session.getTextRange(range);\n if (!/^\\s+$/.test(text)) {\n var rows = this.$getSelectedRows();\n session.indentRows(rows.first, rows.last, \"\\t\");\n return;\n }\n }\n var line = session.getLine(range.start.row);\n var position = range.start;\n var size = session.getTabSize();\n var column = session.documentToScreenColumn(position.row, position.column);\n if (this.session.getUseSoftTabs()) {\n var count = (size - column % size);\n var indentString = lang.stringRepeat(\" \", count);\n }\n else {\n var count = column % size;\n while (line[range.start.column - 1] == \" \" && count) {\n range.start.column--;\n count--;\n }\n this.selection.setSelectionRange(range);\n indentString = \"\\t\";\n }\n return this.insert(indentString);\n };\n Editor.prototype.blockIndent = function () {\n var rows = this.$getSelectedRows();\n this.session.indentRows(rows.first, rows.last, \"\\t\");\n };\n Editor.prototype.blockOutdent = function () {\n var selection = this.session.getSelection();\n this.session.outdentRows(selection.getRange());\n };\n Editor.prototype.sortLines = function () {\n var rows = this.$getSelectedRows();\n var session = this.session;\n var lines = [];\n for (var i = rows.first; i <= rows.last; i++)\n lines.push(session.getLine(i));\n lines.sort(function (a, b) {\n if (a.toLowerCase() < b.toLowerCase())\n return -1;\n if (a.toLowerCase() > b.toLowerCase())\n return 1;\n return 0;\n });\n var deleteRange = new Range(0, 0, 0, 0);\n for (var i = rows.first; i <= rows.last; i++) {\n var line = session.getLine(i);\n deleteRange.start.row = i;\n deleteRange.end.row = i;\n deleteRange.end.column = line.length;\n session.replace(deleteRange, lines[i - rows.first]);\n }\n };\n Editor.prototype.toggleCommentLines = function () {\n var state = this.session.getState(this.getCursorPosition().row);\n var rows = this.$getSelectedRows();\n this.session.getMode().toggleCommentLines(state, this.session, rows.first, rows.last);\n };\n Editor.prototype.toggleBlockComment = function () {\n var cursor = this.getCursorPosition();\n var state = this.session.getState(cursor.row);\n var range = this.getSelectionRange();\n this.session.getMode().toggleBlockComment(state, this.session, range, cursor);\n };\n Editor.prototype.getNumberAt = function (row, column) {\n var _numberRx = /[\\-]?[0-9]+(?:\\.[0-9]+)?/g;\n _numberRx.lastIndex = 0;\n var s = this.session.getLine(row);\n while (_numberRx.lastIndex < column) {\n var m = _numberRx.exec(s);\n if (m.index <= column && m.index + m[0].length >= column) {\n var number = {\n value: m[0],\n start: m.index,\n end: m.index + m[0].length\n };\n return number;\n }\n }\n return null;\n };\n Editor.prototype.modifyNumber = function (amount) {\n var row = this.selection.getCursor().row;\n var column = this.selection.getCursor().column;\n var charRange = new Range(row, column - 1, row, column);\n var c = this.session.getTextRange(charRange);\n if (!isNaN(parseFloat(c)) && isFinite(c)) {\n var nr = this.getNumberAt(row, column);\n if (nr) {\n var fp = nr.value.indexOf(\".\") >= 0 ? nr.start + nr.value.indexOf(\".\") + 1 : nr.end;\n var decimals = nr.start + nr.value.length - fp;\n var t = parseFloat(nr.value);\n t *= Math.pow(10, decimals);\n if (fp !== nr.end && column < fp) {\n amount *= Math.pow(10, nr.end - column - 1);\n }\n else {\n amount *= Math.pow(10, nr.end - column);\n }\n t += amount;\n t /= Math.pow(10, decimals);\n var nnr = t.toFixed(decimals);\n var replaceRange = new Range(row, nr.start, row, nr.end);\n this.session.replace(replaceRange, nnr);\n this.moveCursorTo(row, Math.max(nr.start + 1, column + nnr.length - nr.value.length));\n }\n }\n else {\n this.toggleWord();\n }\n };\n Editor.prototype.toggleWord = function () {\n var row = this.selection.getCursor().row;\n var column = this.selection.getCursor().column;\n this.selection.selectWord();\n var currentState = this.getSelectedText();\n var currWordStart = this.selection.getWordRange().start.column;\n var wordParts = currentState.replace(/([a-z]+|[A-Z]+)(?=[A-Z_]|$)/g, '$1 ').split(/\\s/);\n var delta = column - currWordStart - 1;\n if (delta < 0)\n delta = 0;\n var curLength = 0, itLength = 0;\n var that = this;\n if (currentState.match(/[A-Za-z0-9_]+/)) {\n wordParts.forEach(function (item, i) {\n itLength = curLength + item.length;\n if (delta >= curLength && delta <= itLength) {\n currentState = item;\n that.selection.clearSelection();\n that.moveCursorTo(row, curLength + currWordStart);\n that.selection.selectTo(row, itLength + currWordStart);\n }\n curLength = itLength;\n });\n }\n var wordPairs = this.$toggleWordPairs;\n var reg;\n for (var i = 0; i < wordPairs.length; i++) {\n var item = wordPairs[i];\n for (var j = 0; j <= 1; j++) {\n var negate = +!j;\n var firstCondition = currentState.match(new RegExp('^\\\\s?_?(' + lang.escapeRegExp(item[j]) + ')\\\\s?$', 'i'));\n if (firstCondition) {\n var secondCondition = currentState.match(new RegExp('([_]|^|\\\\s)(' + lang.escapeRegExp(firstCondition[1]) + ')($|\\\\s)', 'g'));\n if (secondCondition) {\n reg = currentState.replace(new RegExp(lang.escapeRegExp(item[j]), 'i'), function (result) {\n var res = item[negate];\n if (result.toUpperCase() == result) {\n res = res.toUpperCase();\n }\n else if (result.charAt(0).toUpperCase() == result.charAt(0)) {\n res = res.substr(0, 0) + item[negate].charAt(0).toUpperCase() + res.substr(1);\n }\n return res;\n });\n this.insert(reg);\n reg = \"\";\n }\n }\n }\n }\n };\n Editor.prototype.findLinkAt = function (row, column) {\n var e_1, _a;\n var line = this.session.getLine(row);\n var wordParts = line.split(/((?:https?|ftp):\\/\\/[\\S]+)/);\n var columnPosition = column;\n if (columnPosition < 0)\n columnPosition = 0;\n var previousPosition = 0, currentPosition = 0, match;\n try {\n for (var wordParts_1 = __values(wordParts), wordParts_1_1 = wordParts_1.next(); !wordParts_1_1.done; wordParts_1_1 = wordParts_1.next()) {\n var item = wordParts_1_1.value;\n currentPosition = previousPosition + item.length;\n if (columnPosition >= previousPosition && columnPosition <= currentPosition) {\n if (item.match(/((?:https?|ftp):\\/\\/[\\S]+)/)) {\n match = item.replace(/[\\s:.,'\";}\\]]+$/, \"\");\n break;\n }\n }\n previousPosition = currentPosition;\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (wordParts_1_1 && !wordParts_1_1.done && (_a = wordParts_1.return)) _a.call(wordParts_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return match;\n };\n Editor.prototype.openLink = function () {\n var cursor = this.selection.getCursor();\n var url = this.findLinkAt(cursor.row, cursor.column);\n if (url)\n window.open(url, '_blank');\n return url != null;\n };\n Editor.prototype.removeLines = function () {\n var rows = this.$getSelectedRows();\n this.session.removeFullLines(rows.first, rows.last);\n this.clearSelection();\n };\n Editor.prototype.duplicateSelection = function () {\n var sel = this.selection;\n var doc = this.session;\n var range = sel.getRange();\n var reverse = sel.isBackwards();\n if (range.isEmpty()) {\n var row = range.start.row;\n doc.duplicateLines(row, row);\n }\n else {\n var point = reverse ? range.start : range.end;\n var endPoint = doc.insert(point, doc.getTextRange(range), false);\n range.start = point;\n range.end = endPoint;\n sel.setSelectionRange(range, reverse);\n }\n };\n Editor.prototype.moveLinesDown = function () {\n this.$moveLines(1, false);\n };\n Editor.prototype.moveLinesUp = function () {\n this.$moveLines(-1, false);\n };\n Editor.prototype.moveText = function (range, toPosition, copy) {\n return this.session.moveText(range, toPosition, copy);\n };\n Editor.prototype.copyLinesUp = function () {\n this.$moveLines(-1, true);\n };\n Editor.prototype.copyLinesDown = function () {\n this.$moveLines(1, true);\n };\n Editor.prototype.$moveLines = function (dir, copy) {\n var rows, moved;\n var selection = this.selection;\n if (!selection.inMultiSelectMode || this.inVirtualSelectionMode) {\n var range = selection.toOrientedRange();\n rows = this.$getSelectedRows(range);\n moved = this.session.$moveLines(rows.first, rows.last, copy ? 0 : dir);\n if (copy && dir == -1)\n moved = 0;\n range.moveBy(moved, 0);\n selection.fromOrientedRange(range);\n }\n else {\n var ranges = selection.rangeList.ranges;\n selection.rangeList.detach(this.session);\n this.inVirtualSelectionMode = true;\n var diff = 0;\n var totalDiff = 0;\n var l = ranges.length;\n for (var i = 0; i < l; i++) {\n var rangeIndex = i;\n ranges[i].moveBy(diff, 0);\n rows = this.$getSelectedRows(ranges[i]);\n var first = rows.first;\n var last = rows.last;\n while (++i < l) {\n if (totalDiff)\n ranges[i].moveBy(totalDiff, 0);\n var subRows = this.$getSelectedRows(ranges[i]);\n if (copy && subRows.first != last)\n break;\n else if (!copy && subRows.first > last + 1)\n break;\n last = subRows.last;\n }\n i--;\n diff = this.session.$moveLines(first, last, copy ? 0 : dir);\n if (copy && dir == -1)\n rangeIndex = i + 1;\n while (rangeIndex <= i) {\n ranges[rangeIndex].moveBy(diff, 0);\n rangeIndex++;\n }\n if (!copy)\n diff = 0;\n totalDiff += diff;\n }\n selection.fromOrientedRange(selection.ranges[0]);\n selection.rangeList.attach(this.session);\n this.inVirtualSelectionMode = false;\n }\n };\n Editor.prototype.$getSelectedRows = function (range) {\n range = (range || this.getSelectionRange()).collapseRows();\n return {\n first: this.session.getRowFoldStart(range.start.row),\n last: this.session.getRowFoldEnd(range.end.row)\n };\n };\n Editor.prototype.onCompositionStart = function (compositionState) {\n this.renderer.showComposition(compositionState);\n };\n Editor.prototype.onCompositionUpdate = function (text) {\n this.renderer.setCompositionText(text);\n };\n Editor.prototype.onCompositionEnd = function () {\n this.renderer.hideComposition();\n };\n Editor.prototype.getFirstVisibleRow = function () {\n return this.renderer.getFirstVisibleRow();\n };\n Editor.prototype.getLastVisibleRow = function () {\n return this.renderer.getLastVisibleRow();\n };\n Editor.prototype.isRowVisible = function (row) {\n return (row >= this.getFirstVisibleRow() && row <= this.getLastVisibleRow());\n };\n Editor.prototype.isRowFullyVisible = function (row) {\n return (row >= this.renderer.getFirstFullyVisibleRow() && row <= this.renderer.getLastFullyVisibleRow());\n };\n Editor.prototype.$getVisibleRowCount = function () {\n return this.renderer.getScrollBottomRow() - this.renderer.getScrollTopRow() + 1;\n };\n Editor.prototype.$moveByPage = function (dir, select) {\n var renderer = this.renderer;\n var config = this.renderer.layerConfig;\n var rows = dir * Math.floor(config.height / config.lineHeight);\n if (select === true) {\n this.selection.$moveSelection(function () {\n this.moveCursorBy(rows, 0);\n });\n }\n else if (select === false) {\n this.selection.moveCursorBy(rows, 0);\n this.selection.clearSelection();\n }\n var scrollTop = renderer.scrollTop;\n renderer.scrollBy(0, rows * config.lineHeight);\n if (select != null)\n renderer.scrollCursorIntoView(null, 0.5);\n renderer.animateScrolling(scrollTop);\n };\n Editor.prototype.selectPageDown = function () {\n this.$moveByPage(1, true);\n };\n Editor.prototype.selectPageUp = function () {\n this.$moveByPage(-1, true);\n };\n Editor.prototype.gotoPageDown = function () {\n this.$moveByPage(1, false);\n };\n Editor.prototype.gotoPageUp = function () {\n this.$moveByPage(-1, false);\n };\n Editor.prototype.scrollPageDown = function () {\n this.$moveByPage(1);\n };\n Editor.prototype.scrollPageUp = function () {\n this.$moveByPage(-1);\n };\n Editor.prototype.scrollToRow = function (row) {\n this.renderer.scrollToRow(row);\n };\n Editor.prototype.scrollToLine = function (line, center, animate, callback) {\n this.renderer.scrollToLine(line, center, animate, callback);\n };\n Editor.prototype.centerSelection = function () {\n var range = this.getSelectionRange();\n var pos = {\n row: Math.floor(range.start.row + (range.end.row - range.start.row) / 2),\n column: Math.floor(range.start.column + (range.end.column - range.start.column) / 2)\n };\n this.renderer.alignCursor(pos, 0.5);\n };\n Editor.prototype.getCursorPosition = function () {\n return this.selection.getCursor();\n };\n Editor.prototype.getCursorPositionScreen = function () {\n return this.session.documentToScreenPosition(this.getCursorPosition());\n };\n Editor.prototype.getSelectionRange = function () {\n return this.selection.getRange();\n };\n Editor.prototype.selectAll = function () {\n this.selection.selectAll();\n };\n Editor.prototype.clearSelection = function () {\n this.selection.clearSelection();\n };\n Editor.prototype.moveCursorTo = function (row, column) {\n this.selection.moveCursorTo(row, column);\n };\n Editor.prototype.moveCursorToPosition = function (pos) {\n this.selection.moveCursorToPosition(pos);\n };\n Editor.prototype.jumpToMatching = function (select, expand) {\n var cursor = this.getCursorPosition();\n var iterator = new TokenIterator(this.session, cursor.row, cursor.column);\n var prevToken = iterator.getCurrentToken();\n var tokenCount = 0;\n if (prevToken && prevToken.type.indexOf('tag-name') !== -1) {\n prevToken = iterator.stepBackward();\n }\n var token = prevToken || iterator.stepForward();\n if (!token)\n return;\n var matchType;\n var found = false;\n var depth = {};\n var i = cursor.column - token.start;\n var bracketType;\n var brackets = {\n \")\": \"(\",\n \"(\": \"(\",\n \"]\": \"[\",\n \"[\": \"[\",\n \"{\": \"{\",\n \"}\": \"{\"\n };\n do {\n if (token.value.match(/[{}()\\[\\]]/g)) {\n for (; i < token.value.length && !found; i++) {\n if (!brackets[token.value[i]]) {\n continue;\n }\n bracketType = brackets[token.value[i]] + '.' + token.type.replace(\"rparen\", \"lparen\");\n if (isNaN(depth[bracketType])) {\n depth[bracketType] = 0;\n }\n switch (token.value[i]) {\n case '(':\n case '[':\n case '{':\n depth[bracketType]++;\n break;\n case ')':\n case ']':\n case '}':\n depth[bracketType]--;\n if (depth[bracketType] === -1) {\n matchType = 'bracket';\n found = true;\n }\n break;\n }\n }\n }\n else if (token.type.indexOf('tag-name') !== -1) {\n if (isNaN(depth[token.value])) {\n depth[token.value] = 0;\n }\n if (prevToken.value === '<' && tokenCount > 1) {\n depth[token.value]++;\n }\n else if (prevToken.value === '= 0; --i) {\n if (this.$tryReplace(ranges[i], replacement)) {\n replaced++;\n }\n }\n this.selection.setSelectionRange(selection);\n return replaced;\n };\n Editor.prototype.$tryReplace = function (range, replacement) {\n var input = this.session.getTextRange(range);\n replacement = this.$search.replace(input, replacement);\n if (replacement !== null) {\n range.end = this.session.replace(range, replacement);\n return range;\n }\n else {\n return null;\n }\n };\n Editor.prototype.getLastSearchOptions = function () {\n return this.$search.getOptions();\n };\n Editor.prototype.find = function (needle, options, animate) {\n if (!options)\n options = {};\n if (typeof needle == \"string\" || needle instanceof RegExp)\n options.needle = needle;\n else if (typeof needle == \"object\")\n oop.mixin(options, needle);\n var range = this.selection.getRange();\n if (options.needle == null) {\n needle = this.session.getTextRange(range)\n || this.$search.$options.needle;\n if (!needle) {\n range = this.session.getWordRange(range.start.row, range.start.column);\n needle = this.session.getTextRange(range);\n }\n this.$search.set({ needle: needle });\n }\n this.$search.set(options);\n if (!options.start)\n this.$search.set({ start: range });\n var newRange = this.$search.find(this.session);\n if (options.preventScroll)\n return newRange;\n if (newRange) {\n this.revealRange(newRange, animate);\n return newRange;\n }\n if (options.backwards)\n range.start = range.end;\n else\n range.end = range.start;\n this.selection.setRange(range);\n };\n Editor.prototype.findNext = function (options, animate) {\n this.find({ skipCurrent: true, backwards: false }, options, animate);\n };\n Editor.prototype.findPrevious = function (options, animate) {\n this.find(options, { skipCurrent: true, backwards: true }, animate);\n };\n Editor.prototype.revealRange = function (range, animate) {\n this.session.unfold(range);\n this.selection.setSelectionRange(range);\n var scrollTop = this.renderer.scrollTop;\n this.renderer.scrollSelectionIntoView(range.start, range.end, 0.5);\n if (animate !== false)\n this.renderer.animateScrolling(scrollTop);\n };\n Editor.prototype.undo = function () {\n this.session.getUndoManager().undo(this.session);\n this.renderer.scrollCursorIntoView(null, 0.5);\n };\n Editor.prototype.redo = function () {\n this.session.getUndoManager().redo(this.session);\n this.renderer.scrollCursorIntoView(null, 0.5);\n };\n Editor.prototype.destroy = function () {\n if (this.$toDestroy) {\n this.$toDestroy.forEach(function (el) {\n el.destroy();\n });\n this.$toDestroy = null;\n }\n if (this.$mouseHandler)\n this.$mouseHandler.destroy();\n this.renderer.destroy();\n this._signal(\"destroy\", this);\n if (this.session)\n this.session.destroy();\n if (this._$emitInputEvent)\n this._$emitInputEvent.cancel();\n this.removeAllListeners();\n };\n Editor.prototype.setAutoScrollEditorIntoView = function (enable) {\n if (!enable)\n return;\n var rect;\n var self = this;\n var shouldScroll = false;\n if (!this.$scrollAnchor)\n this.$scrollAnchor = document.createElement(\"div\");\n var scrollAnchor = this.$scrollAnchor;\n scrollAnchor.style.cssText = \"position:absolute\";\n this.container.insertBefore(scrollAnchor, this.container.firstChild);\n var onChangeSelection = this.on(\"changeSelection\", function () {\n shouldScroll = true;\n });\n var onBeforeRender = this.renderer.on(\"beforeRender\", function () {\n if (shouldScroll)\n rect = self.renderer.container.getBoundingClientRect();\n });\n var onAfterRender = this.renderer.on(\"afterRender\", function () {\n if (shouldScroll && rect && (self.isFocused()\n || self.searchBox && self.searchBox.isFocused())) {\n var renderer = self.renderer;\n var pos = renderer.$cursorLayer.$pixelPos;\n var config = renderer.layerConfig;\n var top = pos.top - config.offset;\n if (pos.top >= 0 && top + rect.top < 0) {\n shouldScroll = true;\n }\n else if (pos.top < config.height &&\n pos.top + rect.top + config.lineHeight > window.innerHeight) {\n shouldScroll = false;\n }\n else {\n shouldScroll = null;\n }\n if (shouldScroll != null) {\n scrollAnchor.style.top = top + \"px\";\n scrollAnchor.style.left = pos.left + \"px\";\n scrollAnchor.style.height = config.lineHeight + \"px\";\n scrollAnchor.scrollIntoView(shouldScroll);\n }\n shouldScroll = rect = null;\n }\n });\n this.setAutoScrollEditorIntoView = function (enable) {\n if (enable)\n return;\n delete this.setAutoScrollEditorIntoView;\n this.off(\"changeSelection\", onChangeSelection);\n this.renderer.off(\"afterRender\", onAfterRender);\n this.renderer.off(\"beforeRender\", onBeforeRender);\n };\n };\n Editor.prototype.$resetCursorStyle = function () {\n var style = this.$cursorStyle || \"ace\";\n var cursorLayer = this.renderer.$cursorLayer;\n if (!cursorLayer)\n return;\n cursorLayer.setSmoothBlinking(/smooth/.test(style));\n cursorLayer.isBlinking = !this.$readOnly && style != \"wide\";\n dom.setCssClass(cursorLayer.element, \"ace_slim-cursors\", /slim/.test(style));\n };\n Editor.prototype.prompt = function (message, options, callback) {\n var editor = this;\n config.loadModule(\"ace/ext/prompt\", function (module) {\n module.prompt(editor, message, options, callback);\n });\n };\n return Editor;\n}());\nEditor.$uid = 0;\nEditor.prototype.curOp = null;\nEditor.prototype.prevOp = {};\nEditor.prototype.$mergeableCommands = [\"backspace\", \"del\", \"insertstring\"];\nEditor.prototype.$toggleWordPairs = [\n [\"first\", \"last\"],\n [\"true\", \"false\"],\n [\"yes\", \"no\"],\n [\"width\", \"height\"],\n [\"top\", \"bottom\"],\n [\"right\", \"left\"],\n [\"on\", \"off\"],\n [\"x\", \"y\"],\n [\"get\", \"set\"],\n [\"max\", \"min\"],\n [\"horizontal\", \"vertical\"],\n [\"show\", \"hide\"],\n [\"add\", \"remove\"],\n [\"up\", \"down\"],\n [\"before\", \"after\"],\n [\"even\", \"odd\"],\n [\"in\", \"out\"],\n [\"inside\", \"outside\"],\n [\"next\", \"previous\"],\n [\"increase\", \"decrease\"],\n [\"attach\", \"detach\"],\n [\"&&\", \"||\"],\n [\"==\", \"!=\"]\n];\noop.implement(Editor.prototype, EventEmitter);\nconfig.defineOptions(Editor.prototype, \"editor\", {\n selectionStyle: {\n set: function (style) {\n this.onSelectionChange();\n this._signal(\"changeSelectionStyle\", { data: style });\n },\n initialValue: \"line\"\n },\n highlightActiveLine: {\n set: function () { this.$updateHighlightActiveLine(); },\n initialValue: true\n },\n highlightSelectedWord: {\n set: function (shouldHighlight) { this.$onSelectionChange(); },\n initialValue: true\n },\n readOnly: {\n set: function (readOnly) {\n this.textInput.setReadOnly(readOnly);\n this.$resetCursorStyle();\n },\n initialValue: false\n },\n copyWithEmptySelection: {\n set: function (value) {\n this.textInput.setCopyWithEmptySelection(value);\n },\n initialValue: false\n },\n cursorStyle: {\n set: function (val) { this.$resetCursorStyle(); },\n values: [\"ace\", \"slim\", \"smooth\", \"wide\"],\n initialValue: \"ace\"\n },\n mergeUndoDeltas: {\n values: [false, true, \"always\"],\n initialValue: true\n },\n behavioursEnabled: { initialValue: true },\n wrapBehavioursEnabled: { initialValue: true },\n enableAutoIndent: { initialValue: true },\n autoScrollEditorIntoView: {\n set: function (val) { this.setAutoScrollEditorIntoView(val); }\n },\n keyboardHandler: {\n set: function (val) { this.setKeyboardHandler(val); },\n get: function () { return this.$keybindingId; },\n handlesSet: true\n },\n value: {\n set: function (val) { this.session.setValue(val); },\n get: function () { return this.getValue(); },\n handlesSet: true,\n hidden: true\n },\n session: {\n set: function (val) { this.setSession(val); },\n get: function () { return this.session; },\n handlesSet: true,\n hidden: true\n },\n showLineNumbers: {\n set: function (show) {\n this.renderer.$gutterLayer.setShowLineNumbers(show);\n this.renderer.$loop.schedule(this.renderer.CHANGE_GUTTER);\n if (show && this.$relativeLineNumbers)\n relativeNumberRenderer.attach(this);\n else\n relativeNumberRenderer.detach(this);\n },\n initialValue: true\n },\n relativeLineNumbers: {\n set: function (value) {\n if (this.$showLineNumbers && value)\n relativeNumberRenderer.attach(this);\n else\n relativeNumberRenderer.detach(this);\n }\n },\n placeholder: {\n set: function (message) {\n if (!this.$updatePlaceholder) {\n this.$updatePlaceholder = function () {\n var hasValue = this.session && (this.renderer.$composition ||\n this.session.getLength() > 1 || this.session.getLine(0).length > 0);\n if (hasValue && this.renderer.placeholderNode) {\n this.renderer.off(\"afterRender\", this.$updatePlaceholder);\n dom.removeCssClass(this.container, \"ace_hasPlaceholder\");\n this.renderer.placeholderNode.remove();\n this.renderer.placeholderNode = null;\n }\n else if (!hasValue && !this.renderer.placeholderNode) {\n this.renderer.on(\"afterRender\", this.$updatePlaceholder);\n dom.addCssClass(this.container, \"ace_hasPlaceholder\");\n var el = dom.createElement(\"div\");\n el.className = \"ace_placeholder\";\n el.textContent = this.$placeholder || \"\";\n this.renderer.placeholderNode = el;\n this.renderer.content.appendChild(this.renderer.placeholderNode);\n }\n else if (!hasValue && this.renderer.placeholderNode) {\n this.renderer.placeholderNode.textContent = this.$placeholder || \"\";\n }\n }.bind(this);\n this.on(\"input\", this.$updatePlaceholder);\n }\n this.$updatePlaceholder();\n }\n },\n enableKeyboardAccessibility: {\n set: function (value) {\n var blurCommand = {\n name: \"blurTextInput\",\n description: \"Set focus to the editor content div to allow tabbing through the page\",\n bindKey: \"Esc\",\n exec: function (editor) {\n editor.blur();\n editor.renderer.scroller.focus();\n },\n readOnly: true\n };\n var focusOnEnterKeyup = function (e) {\n if (e.target == this.renderer.scroller && e.keyCode === keys['enter']) {\n e.preventDefault();\n var row = this.getCursorPosition().row;\n if (!this.isRowVisible(row))\n this.scrollToLine(row, true, true);\n this.focus();\n }\n };\n var gutterKeyboardHandler;\n if (value) {\n this.renderer.enableKeyboardAccessibility = true;\n this.renderer.keyboardFocusClassName = \"ace_keyboard-focus\";\n this.textInput.getElement().setAttribute(\"tabindex\", -1);\n this.textInput.setNumberOfExtraLines(useragent.isWin ? 3 : 0);\n this.renderer.scroller.setAttribute(\"tabindex\", 0);\n this.renderer.scroller.setAttribute(\"role\", \"group\");\n this.renderer.scroller.setAttribute(\"aria-roledescription\", nls(\"editor\"));\n this.renderer.scroller.classList.add(this.renderer.keyboardFocusClassName);\n this.renderer.scroller.setAttribute(\"aria-label\", nls(\"Editor content, press Enter to start editing, press Escape to exit\"));\n this.renderer.scroller.addEventListener(\"keyup\", focusOnEnterKeyup.bind(this));\n this.commands.addCommand(blurCommand);\n this.renderer.$gutter.setAttribute(\"tabindex\", 0);\n this.renderer.$gutter.setAttribute(\"aria-hidden\", false);\n this.renderer.$gutter.setAttribute(\"role\", \"group\");\n this.renderer.$gutter.setAttribute(\"aria-roledescription\", nls(\"editor\"));\n this.renderer.$gutter.setAttribute(\"aria-label\", nls(\"Editor gutter, press Enter to interact with controls using arrow keys, press Escape to exit\"));\n this.renderer.$gutter.classList.add(this.renderer.keyboardFocusClassName);\n this.renderer.content.setAttribute(\"aria-hidden\", true);\n if (!gutterKeyboardHandler)\n gutterKeyboardHandler = new GutterKeyboardHandler(this);\n gutterKeyboardHandler.addListener();\n }\n else {\n this.renderer.enableKeyboardAccessibility = false;\n this.textInput.getElement().setAttribute(\"tabindex\", 0);\n this.textInput.setNumberOfExtraLines(0);\n this.renderer.scroller.setAttribute(\"tabindex\", -1);\n this.renderer.scroller.removeAttribute(\"role\");\n this.renderer.scroller.removeAttribute(\"aria-roledescription\");\n this.renderer.scroller.classList.remove(this.renderer.keyboardFocusClassName);\n this.renderer.scroller.removeAttribute(\"aria-label\");\n this.renderer.scroller.removeEventListener(\"keyup\", focusOnEnterKeyup.bind(this));\n this.commands.removeCommand(blurCommand);\n this.renderer.content.removeAttribute(\"aria-hidden\");\n this.renderer.$gutter.setAttribute(\"tabindex\", -1);\n this.renderer.$gutter.setAttribute(\"aria-hidden\", true);\n this.renderer.$gutter.removeAttribute(\"role\");\n this.renderer.$gutter.removeAttribute(\"aria-roledescription\");\n this.renderer.$gutter.removeAttribute(\"aria-label\");\n this.renderer.$gutter.classList.remove(this.renderer.keyboardFocusClassName);\n if (gutterKeyboardHandler)\n gutterKeyboardHandler.removeListener();\n }\n },\n initialValue: false\n },\n customScrollbar: \"renderer\",\n hScrollBarAlwaysVisible: \"renderer\",\n vScrollBarAlwaysVisible: \"renderer\",\n highlightGutterLine: \"renderer\",\n animatedScroll: \"renderer\",\n showInvisibles: \"renderer\",\n showPrintMargin: \"renderer\",\n printMarginColumn: \"renderer\",\n printMargin: \"renderer\",\n fadeFoldWidgets: \"renderer\",\n showFoldWidgets: \"renderer\",\n displayIndentGuides: \"renderer\",\n highlightIndentGuides: \"renderer\",\n showGutter: \"renderer\",\n fontSize: \"renderer\",\n fontFamily: \"renderer\",\n maxLines: \"renderer\",\n minLines: \"renderer\",\n scrollPastEnd: \"renderer\",\n fixedWidthGutter: \"renderer\",\n theme: \"renderer\",\n hasCssTransforms: \"renderer\",\n maxPixelHeight: \"renderer\",\n useTextareaForIME: \"renderer\",\n useResizeObserver: \"renderer\",\n useSvgGutterIcons: \"renderer\",\n showFoldedAnnotations: \"renderer\",\n scrollSpeed: \"$mouseHandler\",\n dragDelay: \"$mouseHandler\",\n dragEnabled: \"$mouseHandler\",\n focusTimeout: \"$mouseHandler\",\n tooltipFollowsMouse: \"$mouseHandler\",\n firstLineNumber: \"session\",\n overwrite: \"session\",\n newLineMode: \"session\",\n useWorker: \"session\",\n useSoftTabs: \"session\",\n navigateWithinSoftTabs: \"session\",\n tabSize: \"session\",\n wrap: \"session\",\n indentedSoftWrap: \"session\",\n foldStyle: \"session\",\n mode: \"session\"\n});\nvar relativeNumberRenderer = {\n getText: function (session, row) {\n return (Math.abs(session.selection.lead.row - row) || (row + 1 + (row < 9 ? \"\\xb7\" : \"\"))) + \"\";\n },\n getWidth: function (session, lastLineNumber, config) {\n return Math.max(lastLineNumber.toString().length, (config.lastRow + 1).toString().length, 2) * config.characterWidth;\n },\n update: function (e, editor) {\n editor.renderer.$loop.schedule(editor.renderer.CHANGE_GUTTER);\n },\n attach: function (editor) {\n editor.renderer.$gutterLayer.$renderer = this;\n editor.on(\"changeSelection\", this.update);\n this.update(null, editor);\n },\n detach: function (editor) {\n if (editor.renderer.$gutterLayer.$renderer == this)\n editor.renderer.$gutterLayer.$renderer = null;\n editor.off(\"changeSelection\", this.update);\n this.update(null, editor);\n }\n};\nexports.Editor = Editor;\n\n});\n\nace.define(\"ace/layer/lines\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"], function(require, exports, module){\"use strict\";\nvar dom = require(\"../lib/dom\");\nvar Lines = /** @class */ (function () {\n function Lines(element, canvasHeight) {\n this.element = element;\n this.canvasHeight = canvasHeight || 500000;\n this.element.style.height = (this.canvasHeight * 2) + \"px\";\n this.cells = [];\n this.cellCache = [];\n this.$offsetCoefficient = 0;\n }\n Lines.prototype.moveContainer = function (config) {\n dom.translate(this.element, 0, -((config.firstRowScreen * config.lineHeight) % this.canvasHeight) - config.offset * this.$offsetCoefficient);\n };\n Lines.prototype.pageChanged = function (oldConfig, newConfig) {\n return (Math.floor((oldConfig.firstRowScreen * oldConfig.lineHeight) / this.canvasHeight) !==\n Math.floor((newConfig.firstRowScreen * newConfig.lineHeight) / this.canvasHeight));\n };\n Lines.prototype.computeLineTop = function (row, config, session) {\n var screenTop = config.firstRowScreen * config.lineHeight;\n var screenPage = Math.floor(screenTop / this.canvasHeight);\n var lineTop = session.documentToScreenRow(row, 0) * config.lineHeight;\n return lineTop - (screenPage * this.canvasHeight);\n };\n Lines.prototype.computeLineHeight = function (row, config, session) {\n return config.lineHeight * session.getRowLineCount(row);\n };\n Lines.prototype.getLength = function () {\n return this.cells.length;\n };\n Lines.prototype.get = function (index) {\n return this.cells[index];\n };\n Lines.prototype.shift = function () {\n this.$cacheCell(this.cells.shift());\n };\n Lines.prototype.pop = function () {\n this.$cacheCell(this.cells.pop());\n };\n Lines.prototype.push = function (cell) {\n if (Array.isArray(cell)) {\n this.cells.push.apply(this.cells, cell);\n var fragment = dom.createFragment(this.element);\n for (var i = 0; i < cell.length; i++) {\n fragment.appendChild(cell[i].element);\n }\n this.element.appendChild(fragment);\n }\n else {\n this.cells.push(cell);\n this.element.appendChild(cell.element);\n }\n };\n Lines.prototype.unshift = function (cell) {\n if (Array.isArray(cell)) {\n this.cells.unshift.apply(this.cells, cell);\n var fragment = dom.createFragment(this.element);\n for (var i = 0; i < cell.length; i++) {\n fragment.appendChild(cell[i].element);\n }\n if (this.element.firstChild)\n this.element.insertBefore(fragment, this.element.firstChild);\n else\n this.element.appendChild(fragment);\n }\n else {\n this.cells.unshift(cell);\n this.element.insertAdjacentElement(\"afterbegin\", cell.element);\n }\n };\n Lines.prototype.last = function () {\n if (this.cells.length)\n return this.cells[this.cells.length - 1];\n else\n return null;\n };\n Lines.prototype.$cacheCell = function (cell) {\n if (!cell)\n return;\n cell.element.remove();\n this.cellCache.push(cell);\n };\n Lines.prototype.createCell = function (row, config, session, initElement) {\n var cell = this.cellCache.pop();\n if (!cell) {\n var element = dom.createElement(\"div\");\n if (initElement)\n initElement(element);\n this.element.appendChild(element);\n cell = {\n element: element,\n text: \"\",\n row: row\n };\n }\n cell.row = row;\n return cell;\n };\n return Lines;\n}());\nexports.Lines = Lines;\n\n});\n\nace.define(\"ace/layer/gutter\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/lib/event_emitter\",\"ace/layer/lines\",\"ace/config\"], function(require, exports, module){\"use strict\";\nvar dom = require(\"../lib/dom\");\nvar oop = require(\"../lib/oop\");\nvar lang = require(\"../lib/lang\");\nvar EventEmitter = require(\"../lib/event_emitter\").EventEmitter;\nvar Lines = require(\"./lines\").Lines;\nvar nls = require(\"../config\").nls;\nvar Gutter = /** @class */ (function () {\n function Gutter(parentEl) {\n this.element = dom.createElement(\"div\");\n this.element.className = \"ace_layer ace_gutter-layer\";\n parentEl.appendChild(this.element);\n this.setShowFoldWidgets(this.$showFoldWidgets);\n this.gutterWidth = 0;\n this.$annotations = [];\n this.$updateAnnotations = this.$updateAnnotations.bind(this);\n this.$lines = new Lines(this.element);\n this.$lines.$offsetCoefficient = 1;\n }\n Gutter.prototype.setSession = function (session) {\n if (this.session)\n this.session.off(\"change\", this.$updateAnnotations);\n this.session = session;\n if (session)\n session.on(\"change\", this.$updateAnnotations);\n };\n Gutter.prototype.addGutterDecoration = function (row, className) {\n if (window.console)\n console.warn && console.warn(\"deprecated use session.addGutterDecoration\");\n this.session.addGutterDecoration(row, className);\n };\n Gutter.prototype.removeGutterDecoration = function (row, className) {\n if (window.console)\n console.warn && console.warn(\"deprecated use session.removeGutterDecoration\");\n this.session.removeGutterDecoration(row, className);\n };\n Gutter.prototype.setAnnotations = function (annotations) {\n this.$annotations = [];\n for (var i = 0; i < annotations.length; i++) {\n var annotation = annotations[i];\n var row = annotation.row;\n var rowInfo = this.$annotations[row];\n if (!rowInfo)\n rowInfo = this.$annotations[row] = { text: [], type: [] };\n var annoText = annotation.text;\n var annoType = annotation.type;\n annoText = annoText ? lang.escapeHTML(annoText) : annotation.html || \"\";\n if (rowInfo.text.indexOf(annoText) === -1) {\n rowInfo.text.push(annoText);\n rowInfo.type.push(annoType);\n }\n var className = annotation.className;\n if (className)\n rowInfo.className = className;\n else if (annoType == \"error\")\n rowInfo.className = \" ace_error\";\n else if (annoType == \"warning\" && rowInfo.className != \" ace_error\")\n rowInfo.className = \" ace_warning\";\n else if (annoType == \"info\" && (!rowInfo.className))\n rowInfo.className = \" ace_info\";\n }\n };\n Gutter.prototype.$updateAnnotations = function (delta) {\n if (!this.$annotations.length)\n return;\n var firstRow = delta.start.row;\n var len = delta.end.row - firstRow;\n if (len === 0) {\n }\n else if (delta.action == 'remove') {\n this.$annotations.splice(firstRow, len + 1, null);\n }\n else {\n var args = new Array(len + 1);\n args.unshift(firstRow, 1);\n this.$annotations.splice.apply(this.$annotations, args);\n }\n };\n Gutter.prototype.update = function (config) {\n this.config = config;\n var session = this.session;\n var firstRow = config.firstRow;\n var lastRow = Math.min(config.lastRow + config.gutterOffset, // needed to compensate for hor scollbar\n session.getLength() - 1);\n this.oldLastRow = lastRow;\n this.config = config;\n this.$lines.moveContainer(config);\n this.$updateCursorRow();\n var fold = session.getNextFoldLine(firstRow);\n var foldStart = fold ? fold.start.row : Infinity;\n var cell = null;\n var index = -1;\n var row = firstRow;\n while (true) {\n if (row > foldStart) {\n row = fold.end.row + 1;\n fold = session.getNextFoldLine(row, fold);\n foldStart = fold ? fold.start.row : Infinity;\n }\n if (row > lastRow) {\n while (this.$lines.getLength() > index + 1)\n this.$lines.pop();\n break;\n }\n cell = this.$lines.get(++index);\n if (cell) {\n cell.row = row;\n }\n else {\n cell = this.$lines.createCell(row, config, this.session, onCreateCell);\n this.$lines.push(cell);\n }\n this.$renderCell(cell, config, fold, row);\n row++;\n }\n this._signal(\"afterRender\");\n this.$updateGutterWidth(config);\n };\n Gutter.prototype.$updateGutterWidth = function (config) {\n var session = this.session;\n var gutterRenderer = session.gutterRenderer || this.$renderer;\n var firstLineNumber = session.$firstLineNumber;\n var lastLineText = this.$lines.last() ? this.$lines.last().text : \"\";\n if (this.$fixedWidth || session.$useWrapMode)\n lastLineText = session.getLength() + firstLineNumber - 1;\n var gutterWidth = gutterRenderer\n ? gutterRenderer.getWidth(session, lastLineText, config)\n : lastLineText.toString().length * config.characterWidth;\n var padding = this.$padding || this.$computePadding();\n gutterWidth += padding.left + padding.right;\n if (gutterWidth !== this.gutterWidth && !isNaN(gutterWidth)) {\n this.gutterWidth = gutterWidth;\n this.element.parentNode.style.width =\n this.element.style.width = Math.ceil(this.gutterWidth) + \"px\";\n this._signal(\"changeGutterWidth\", gutterWidth);\n }\n };\n Gutter.prototype.$updateCursorRow = function () {\n if (!this.$highlightGutterLine)\n return;\n var position = this.session.selection.getCursor();\n if (this.$cursorRow === position.row)\n return;\n this.$cursorRow = position.row;\n };\n Gutter.prototype.updateLineHighlight = function () {\n if (!this.$highlightGutterLine)\n return;\n var row = this.session.selection.cursor.row;\n this.$cursorRow = row;\n if (this.$cursorCell && this.$cursorCell.row == row)\n return;\n if (this.$cursorCell)\n this.$cursorCell.element.className = this.$cursorCell.element.className.replace(\"ace_gutter-active-line \", \"\");\n var cells = this.$lines.cells;\n this.$cursorCell = null;\n for (var i = 0; i < cells.length; i++) {\n var cell = cells[i];\n if (cell.row >= this.$cursorRow) {\n if (cell.row > this.$cursorRow) {\n var fold = this.session.getFoldLine(this.$cursorRow);\n if (i > 0 && fold && fold.start.row == cells[i - 1].row)\n cell = cells[i - 1];\n else\n break;\n }\n cell.element.className = \"ace_gutter-active-line \" + cell.element.className;\n this.$cursorCell = cell;\n break;\n }\n }\n };\n Gutter.prototype.scrollLines = function (config) {\n var oldConfig = this.config;\n this.config = config;\n this.$updateCursorRow();\n if (this.$lines.pageChanged(oldConfig, config))\n return this.update(config);\n this.$lines.moveContainer(config);\n var lastRow = Math.min(config.lastRow + config.gutterOffset, // needed to compensate for hor scollbar\n this.session.getLength() - 1);\n var oldLastRow = this.oldLastRow;\n this.oldLastRow = lastRow;\n if (!oldConfig || oldLastRow < config.firstRow)\n return this.update(config);\n if (lastRow < oldConfig.firstRow)\n return this.update(config);\n if (oldConfig.firstRow < config.firstRow)\n for (var row = this.session.getFoldedRowCount(oldConfig.firstRow, config.firstRow - 1); row > 0; row--)\n this.$lines.shift();\n if (oldLastRow > lastRow)\n for (var row = this.session.getFoldedRowCount(lastRow + 1, oldLastRow); row > 0; row--)\n this.$lines.pop();\n if (config.firstRow < oldConfig.firstRow) {\n this.$lines.unshift(this.$renderLines(config, config.firstRow, oldConfig.firstRow - 1));\n }\n if (lastRow > oldLastRow) {\n this.$lines.push(this.$renderLines(config, oldLastRow + 1, lastRow));\n }\n this.updateLineHighlight();\n this._signal(\"afterRender\");\n this.$updateGutterWidth(config);\n };\n Gutter.prototype.$renderLines = function (config, firstRow, lastRow) {\n var fragment = [];\n var row = firstRow;\n var foldLine = this.session.getNextFoldLine(row);\n var foldStart = foldLine ? foldLine.start.row : Infinity;\n while (true) {\n if (row > foldStart) {\n row = foldLine.end.row + 1;\n foldLine = this.session.getNextFoldLine(row, foldLine);\n foldStart = foldLine ? foldLine.start.row : Infinity;\n }\n if (row > lastRow)\n break;\n var cell = this.$lines.createCell(row, config, this.session, onCreateCell);\n this.$renderCell(cell, config, foldLine, row);\n fragment.push(cell);\n row++;\n }\n return fragment;\n };\n Gutter.prototype.$renderCell = function (cell, config, fold, row) {\n var element = cell.element;\n var session = this.session;\n var textNode = element.childNodes[0];\n var foldWidget = element.childNodes[1];\n var annotationNode = element.childNodes[2];\n var annotationIconNode = annotationNode.firstChild;\n var firstLineNumber = session.$firstLineNumber;\n var breakpoints = session.$breakpoints;\n var decorations = session.$decorations;\n var gutterRenderer = session.gutterRenderer || this.$renderer;\n var foldWidgets = this.$showFoldWidgets && session.foldWidgets;\n var foldStart = fold ? fold.start.row : Number.MAX_VALUE;\n var lineHeight = config.lineHeight + \"px\";\n var className = this.$useSvgGutterIcons ? \"ace_gutter-cell_svg-icons \" : \"ace_gutter-cell \";\n var iconClassName = this.$useSvgGutterIcons ? \"ace_icon_svg\" : \"ace_icon\";\n var rowText = (gutterRenderer\n ? gutterRenderer.getText(session, row)\n : row + firstLineNumber).toString();\n if (this.$highlightGutterLine) {\n if (row == this.$cursorRow || (fold && row < this.$cursorRow && row >= foldStart && this.$cursorRow <= fold.end.row)) {\n className += \"ace_gutter-active-line \";\n if (this.$cursorCell != cell) {\n if (this.$cursorCell)\n this.$cursorCell.element.className = this.$cursorCell.element.className.replace(\"ace_gutter-active-line \", \"\");\n this.$cursorCell = cell;\n }\n }\n }\n if (breakpoints[row])\n className += breakpoints[row];\n if (decorations[row])\n className += decorations[row];\n if (this.$annotations[row] && row !== foldStart)\n className += this.$annotations[row].className;\n if (foldWidgets) {\n var c = foldWidgets[row];\n if (c == null)\n c = foldWidgets[row] = session.getFoldWidget(row);\n }\n if (c) {\n var foldClass = \"ace_fold-widget ace_\" + c;\n var isClosedFold = c == \"start\" && row == foldStart && row < fold.end.row;\n if (isClosedFold) {\n foldClass += \" ace_closed\";\n var foldAnnotationClass = '';\n var annotationInFold = false;\n for (var i = row + 1; i <= fold.end.row; i++) {\n if (!this.$annotations[i])\n continue;\n if (this.$annotations[i].className === \" ace_error\") {\n annotationInFold = true;\n foldAnnotationClass = \" ace_error_fold\";\n break;\n }\n if (this.$annotations[i].className === \" ace_warning\") {\n annotationInFold = true;\n foldAnnotationClass = \" ace_warning_fold\";\n continue;\n }\n }\n className += foldAnnotationClass;\n }\n else\n foldClass += \" ace_open\";\n if (foldWidget.className != foldClass)\n foldWidget.className = foldClass;\n dom.setStyle(foldWidget.style, \"height\", lineHeight);\n dom.setStyle(foldWidget.style, \"display\", \"inline-block\");\n foldWidget.setAttribute(\"role\", \"button\");\n foldWidget.setAttribute(\"tabindex\", \"-1\");\n var foldRange = session.getFoldWidgetRange(row);\n if (foldRange)\n foldWidget.setAttribute(\"aria-label\", nls(\"Toggle code folding, rows $0 through $1\", [foldRange.start.row + 1, foldRange.end.row + 1]));\n else {\n if (fold)\n foldWidget.setAttribute(\"aria-label\", nls(\"Toggle code folding, rows $0 through $1\", [fold.start.row + 1, fold.end.row + 1]));\n else\n foldWidget.setAttribute(\"aria-label\", nls(\"Toggle code folding, row $0\", [row + 1]));\n }\n if (isClosedFold) {\n foldWidget.setAttribute(\"aria-expanded\", \"false\");\n foldWidget.setAttribute(\"title\", nls(\"Unfold code\"));\n }\n else {\n foldWidget.setAttribute(\"aria-expanded\", \"true\");\n foldWidget.setAttribute(\"title\", nls(\"Fold code\"));\n }\n }\n else {\n if (foldWidget) {\n dom.setStyle(foldWidget.style, \"display\", \"none\");\n foldWidget.setAttribute(\"tabindex\", \"0\");\n foldWidget.removeAttribute(\"role\");\n foldWidget.removeAttribute(\"aria-label\");\n }\n }\n if (annotationInFold && this.$showFoldedAnnotations) {\n annotationNode.className = \"ace_gutter_annotation\";\n annotationIconNode.className = iconClassName;\n annotationIconNode.className += foldAnnotationClass;\n dom.setStyle(annotationIconNode.style, \"height\", lineHeight);\n dom.setStyle(annotationNode.style, \"display\", \"block\");\n dom.setStyle(annotationNode.style, \"height\", lineHeight);\n annotationNode.setAttribute(\"aria-label\", nls(\"Read annotations row $0\", [rowText]));\n annotationNode.setAttribute(\"tabindex\", \"-1\");\n annotationNode.setAttribute(\"role\", \"button\");\n }\n else if (this.$annotations[row]) {\n annotationNode.className = \"ace_gutter_annotation\";\n annotationIconNode.className = iconClassName;\n if (this.$useSvgGutterIcons)\n annotationIconNode.className += this.$annotations[row].className;\n else\n element.classList.add(this.$annotations[row].className.replace(\" \", \"\"));\n dom.setStyle(annotationIconNode.style, \"height\", lineHeight);\n dom.setStyle(annotationNode.style, \"display\", \"block\");\n dom.setStyle(annotationNode.style, \"height\", lineHeight);\n annotationNode.setAttribute(\"aria-label\", nls(\"Read annotations row $0\", [rowText]));\n annotationNode.setAttribute(\"tabindex\", \"-1\");\n annotationNode.setAttribute(\"role\", \"button\");\n }\n else {\n dom.setStyle(annotationNode.style, \"display\", \"none\");\n annotationNode.removeAttribute(\"aria-label\");\n annotationNode.removeAttribute(\"role\");\n annotationNode.setAttribute(\"tabindex\", \"0\");\n }\n if (rowText !== textNode.data) {\n textNode.data = rowText;\n }\n if (element.className != className)\n element.className = className;\n dom.setStyle(cell.element.style, \"height\", this.$lines.computeLineHeight(row, config, session) + \"px\");\n dom.setStyle(cell.element.style, \"top\", this.$lines.computeLineTop(row, config, session) + \"px\");\n cell.text = rowText;\n if (annotationNode.style.display === \"none\" && foldWidget.style.display === \"none\")\n cell.element.setAttribute(\"aria-hidden\", true);\n else\n cell.element.setAttribute(\"aria-hidden\", false);\n return cell;\n };\n Gutter.prototype.setHighlightGutterLine = function (highlightGutterLine) {\n this.$highlightGutterLine = highlightGutterLine;\n };\n Gutter.prototype.setShowLineNumbers = function (show) {\n this.$renderer = !show && {\n getWidth: function () { return 0; },\n getText: function () { return \"\"; }\n };\n };\n Gutter.prototype.getShowLineNumbers = function () {\n return this.$showLineNumbers;\n };\n Gutter.prototype.setShowFoldWidgets = function (show) {\n if (show)\n dom.addCssClass(this.element, \"ace_folding-enabled\");\n else\n dom.removeCssClass(this.element, \"ace_folding-enabled\");\n this.$showFoldWidgets = show;\n this.$padding = null;\n };\n Gutter.prototype.getShowFoldWidgets = function () {\n return this.$showFoldWidgets;\n };\n Gutter.prototype.$computePadding = function () {\n if (!this.element.firstChild)\n return { left: 0, right: 0 };\n var style = dom.computedStyle(this.element.firstChild);\n this.$padding = {};\n this.$padding.left = (parseInt(style.borderLeftWidth) || 0)\n + (parseInt(style.paddingLeft) || 0) + 1;\n this.$padding.right = (parseInt(style.borderRightWidth) || 0)\n + (parseInt(style.paddingRight) || 0);\n return this.$padding;\n };\n Gutter.prototype.getRegion = function (point) {\n var padding = this.$padding || this.$computePadding();\n var rect = this.element.getBoundingClientRect();\n if (point.x < padding.left + rect.left)\n return \"markers\";\n if (this.$showFoldWidgets && point.x > rect.right - padding.right)\n return \"foldWidgets\";\n };\n return Gutter;\n}());\nGutter.prototype.$fixedWidth = false;\nGutter.prototype.$highlightGutterLine = true;\nGutter.prototype.$renderer = \"\";\nGutter.prototype.$showLineNumbers = true;\nGutter.prototype.$showFoldWidgets = true;\noop.implement(Gutter.prototype, EventEmitter);\nfunction onCreateCell(element) {\n var textNode = document.createTextNode('');\n element.appendChild(textNode);\n var foldWidget = dom.createElement(\"span\");\n element.appendChild(foldWidget);\n var annotationNode = dom.createElement(\"span\");\n element.appendChild(annotationNode);\n var annotationIconNode = dom.createElement(\"span\");\n annotationNode.appendChild(annotationIconNode);\n return element;\n}\nexports.Gutter = Gutter;\n\n});\n\nace.define(\"ace/layer/marker\",[\"require\",\"exports\",\"module\",\"ace/range\",\"ace/lib/dom\"], function(require, exports, module){\"use strict\";\nvar Range = require(\"../range\").Range;\nvar dom = require(\"../lib/dom\");\nvar Marker = /** @class */ (function () {\n function Marker(parentEl) {\n this.element = dom.createElement(\"div\");\n this.element.className = \"ace_layer ace_marker-layer\";\n parentEl.appendChild(this.element);\n }\n Marker.prototype.setPadding = function (padding) {\n this.$padding = padding;\n };\n Marker.prototype.setSession = function (session) {\n this.session = session;\n };\n Marker.prototype.setMarkers = function (markers) {\n this.markers = markers;\n };\n Marker.prototype.elt = function (className, css) {\n var x = this.i != -1 && this.element.childNodes[this.i];\n if (!x) {\n x = document.createElement(\"div\");\n this.element.appendChild(x);\n this.i = -1;\n }\n else {\n this.i++;\n }\n x.style.cssText = css;\n x.className = className;\n };\n Marker.prototype.update = function (config) {\n if (!config)\n return;\n this.config = config;\n this.i = 0;\n var html;\n for (var key in this.markers) {\n var marker = this.markers[key];\n if (!marker.range) {\n marker.update(html, this, this.session, config);\n continue;\n }\n var range = marker.range.clipRows(config.firstRow, config.lastRow);\n if (range.isEmpty())\n continue;\n range = range.toScreenRange(this.session);\n if (marker.renderer) {\n var top = this.$getTop(range.start.row, config);\n var left = this.$padding + range.start.column * config.characterWidth;\n marker.renderer(html, range, left, top, config);\n }\n else if (marker.type == \"fullLine\") {\n this.drawFullLineMarker(html, range, marker.clazz, config);\n }\n else if (marker.type == \"screenLine\") {\n this.drawScreenLineMarker(html, range, marker.clazz, config);\n }\n else if (range.isMultiLine()) {\n if (marker.type == \"text\")\n this.drawTextMarker(html, range, marker.clazz, config);\n else\n this.drawMultiLineMarker(html, range, marker.clazz, config);\n }\n else {\n this.drawSingleLineMarker(html, range, marker.clazz + \" ace_start\" + \" ace_br15\", config);\n }\n }\n if (this.i != -1) {\n while (this.i < this.element.childElementCount)\n this.element.removeChild(this.element.lastChild);\n }\n };\n Marker.prototype.$getTop = function (row, layerConfig) {\n return (row - layerConfig.firstRowScreen) * layerConfig.lineHeight;\n };\n Marker.prototype.drawTextMarker = function (stringBuilder, range, clazz, layerConfig, extraStyle) {\n var session = this.session;\n var start = range.start.row;\n var end = range.end.row;\n var row = start;\n var prev = 0;\n var curr = 0;\n var next = session.getScreenLastRowColumn(row);\n var lineRange = new Range(row, range.start.column, row, curr);\n for (; row <= end; row++) {\n lineRange.start.row = lineRange.end.row = row;\n lineRange.start.column = row == start ? range.start.column : session.getRowWrapIndent(row);\n lineRange.end.column = next;\n prev = curr;\n curr = next;\n next = row + 1 < end ? session.getScreenLastRowColumn(row + 1) : row == end ? 0 : range.end.column;\n this.drawSingleLineMarker(stringBuilder, lineRange, clazz + (row == start ? \" ace_start\" : \"\") + \" ace_br\"\n + getBorderClass(row == start || row == start + 1 && range.start.column, prev < curr, curr > next, row == end), layerConfig, row == end ? 0 : 1, extraStyle);\n }\n };\n Marker.prototype.drawMultiLineMarker = function (stringBuilder, range, clazz, config, extraStyle) {\n var padding = this.$padding;\n var height = config.lineHeight;\n var top = this.$getTop(range.start.row, config);\n var left = padding + range.start.column * config.characterWidth;\n extraStyle = extraStyle || \"\";\n if (this.session.$bidiHandler.isBidiRow(range.start.row)) {\n var range1 = range.clone();\n range1.end.row = range1.start.row;\n range1.end.column = this.session.getLine(range1.start.row).length;\n this.drawBidiSingleLineMarker(stringBuilder, range1, clazz + \" ace_br1 ace_start\", config, null, extraStyle);\n }\n else {\n this.elt(clazz + \" ace_br1 ace_start\", \"height:\" + height + \"px;\" + \"right:0;\" + \"top:\" + top + \"px;left:\" + left + \"px;\" + (extraStyle || \"\"));\n }\n if (this.session.$bidiHandler.isBidiRow(range.end.row)) {\n var range1 = range.clone();\n range1.start.row = range1.end.row;\n range1.start.column = 0;\n this.drawBidiSingleLineMarker(stringBuilder, range1, clazz + \" ace_br12\", config, null, extraStyle);\n }\n else {\n top = this.$getTop(range.end.row, config);\n var width = range.end.column * config.characterWidth;\n this.elt(clazz + \" ace_br12\", \"height:\" + height + \"px;\" +\n \"width:\" + width + \"px;\" +\n \"top:\" + top + \"px;\" +\n \"left:\" + padding + \"px;\" + (extraStyle || \"\"));\n }\n height = (range.end.row - range.start.row - 1) * config.lineHeight;\n if (height <= 0)\n return;\n top = this.$getTop(range.start.row + 1, config);\n var radiusClass = (range.start.column ? 1 : 0) | (range.end.column ? 0 : 8);\n this.elt(clazz + (radiusClass ? \" ace_br\" + radiusClass : \"\"), \"height:\" + height + \"px;\" +\n \"right:0;\" +\n \"top:\" + top + \"px;\" +\n \"left:\" + padding + \"px;\" + (extraStyle || \"\"));\n };\n Marker.prototype.drawSingleLineMarker = function (stringBuilder, range, clazz, config, extraLength, extraStyle) {\n if (this.session.$bidiHandler.isBidiRow(range.start.row))\n return this.drawBidiSingleLineMarker(stringBuilder, range, clazz, config, extraLength, extraStyle);\n var height = config.lineHeight;\n var width = (range.end.column + (extraLength || 0) - range.start.column) * config.characterWidth;\n var top = this.$getTop(range.start.row, config);\n var left = this.$padding + range.start.column * config.characterWidth;\n this.elt(clazz, \"height:\" + height + \"px;\" +\n \"width:\" + width + \"px;\" +\n \"top:\" + top + \"px;\" +\n \"left:\" + left + \"px;\" + (extraStyle || \"\"));\n };\n Marker.prototype.drawBidiSingleLineMarker = function (stringBuilder, range, clazz, config, extraLength, extraStyle) {\n var height = config.lineHeight, top = this.$getTop(range.start.row, config), padding = this.$padding;\n var selections = this.session.$bidiHandler.getSelections(range.start.column, range.end.column);\n selections.forEach(function (selection) {\n this.elt(clazz, \"height:\" + height + \"px;\" +\n \"width:\" + (selection.width + (extraLength || 0)) + \"px;\" +\n \"top:\" + top + \"px;\" +\n \"left:\" + (padding + selection.left) + \"px;\" + (extraStyle || \"\"));\n }, this);\n };\n Marker.prototype.drawFullLineMarker = function (stringBuilder, range, clazz, config, extraStyle) {\n var top = this.$getTop(range.start.row, config);\n var height = config.lineHeight;\n if (range.start.row != range.end.row)\n height += this.$getTop(range.end.row, config) - top;\n this.elt(clazz, \"height:\" + height + \"px;\" +\n \"top:\" + top + \"px;\" +\n \"left:0;right:0;\" + (extraStyle || \"\"));\n };\n Marker.prototype.drawScreenLineMarker = function (stringBuilder, range, clazz, config, extraStyle) {\n var top = this.$getTop(range.start.row, config);\n var height = config.lineHeight;\n this.elt(clazz, \"height:\" + height + \"px;\" +\n \"top:\" + top + \"px;\" +\n \"left:0;right:0;\" + (extraStyle || \"\"));\n };\n return Marker;\n}());\nMarker.prototype.$padding = 0;\nfunction getBorderClass(tl, tr, br, bl) {\n return (tl ? 1 : 0) | (tr ? 2 : 0) | (br ? 4 : 0) | (bl ? 8 : 0);\n}\nexports.Marker = Marker;\n\n});\n\nace.define(\"ace/layer/text_util\",[\"require\",\"exports\",\"module\"], function(require, exports, module){// Tokens for which Ace just uses a simple TextNode and does not add any special className.\nvar textTokens = new Set([\"text\", \"rparen\", \"lparen\"]);\nexports.isTextToken = function (tokenType) {\n return textTokens.has(tokenType);\n};\n\n});\n\nace.define(\"ace/layer/text\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/dom\",\"ace/lib/lang\",\"ace/layer/lines\",\"ace/lib/event_emitter\",\"ace/config\",\"ace/layer/text_util\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar dom = require(\"../lib/dom\");\nvar lang = require(\"../lib/lang\");\nvar Lines = require(\"./lines\").Lines;\nvar EventEmitter = require(\"../lib/event_emitter\").EventEmitter;\nvar nls = require(\"../config\").nls;\nvar isTextToken = require(\"./text_util\").isTextToken;\nvar Text = /** @class */ (function () {\n function Text(parentEl) {\n this.dom = dom;\n this.element = this.dom.createElement(\"div\");\n this.element.className = \"ace_layer ace_text-layer\";\n parentEl.appendChild(this.element);\n this.$updateEolChar = this.$updateEolChar.bind(this);\n this.$lines = new Lines(this.element);\n }\n Text.prototype.$updateEolChar = function () {\n var doc = this.session.doc;\n var unixMode = doc.getNewLineCharacter() == \"\\n\" && doc.getNewLineMode() != \"windows\";\n var EOL_CHAR = unixMode ? this.EOL_CHAR_LF : this.EOL_CHAR_CRLF;\n if (this.EOL_CHAR != EOL_CHAR) {\n this.EOL_CHAR = EOL_CHAR;\n return true;\n }\n };\n Text.prototype.setPadding = function (padding) {\n this.$padding = padding;\n this.element.style.margin = \"0 \" + padding + \"px\";\n };\n Text.prototype.getLineHeight = function () {\n return this.$fontMetrics.$characterSize.height || 0;\n };\n Text.prototype.getCharacterWidth = function () {\n return this.$fontMetrics.$characterSize.width || 0;\n };\n Text.prototype.$setFontMetrics = function (measure) {\n this.$fontMetrics = measure;\n this.$fontMetrics.on(\"changeCharacterSize\", function (e) {\n this._signal(\"changeCharacterSize\", e);\n }.bind(this));\n this.$pollSizeChanges();\n };\n Text.prototype.checkForSizeChanges = function () {\n this.$fontMetrics.checkForSizeChanges();\n };\n Text.prototype.$pollSizeChanges = function () {\n return this.$pollSizeChangesTimer = this.$fontMetrics.$pollSizeChanges();\n };\n Text.prototype.setSession = function (session) {\n this.session = session;\n if (session)\n this.$computeTabString();\n };\n Text.prototype.setShowInvisibles = function (showInvisibles) {\n if (this.showInvisibles == showInvisibles)\n return false;\n this.showInvisibles = showInvisibles;\n if (typeof showInvisibles == \"string\") {\n this.showSpaces = /tab/i.test(showInvisibles);\n this.showTabs = /space/i.test(showInvisibles);\n this.showEOL = /eol/i.test(showInvisibles);\n }\n else {\n this.showSpaces = this.showTabs = this.showEOL = showInvisibles;\n }\n this.$computeTabString();\n return true;\n };\n Text.prototype.setDisplayIndentGuides = function (display) {\n if (this.displayIndentGuides == display)\n return false;\n this.displayIndentGuides = display;\n this.$computeTabString();\n return true;\n };\n Text.prototype.setHighlightIndentGuides = function (highlight) {\n if (this.$highlightIndentGuides === highlight)\n return false;\n this.$highlightIndentGuides = highlight;\n return highlight;\n };\n Text.prototype.$computeTabString = function () {\n var tabSize = this.session.getTabSize();\n this.tabSize = tabSize;\n var tabStr = this.$tabStrings = [0];\n for (var i = 1; i < tabSize + 1; i++) {\n if (this.showTabs) {\n var span = this.dom.createElement(\"span\");\n span.className = \"ace_invisible ace_invisible_tab\";\n span.textContent = lang.stringRepeat(this.TAB_CHAR, i);\n tabStr.push(span);\n }\n else {\n tabStr.push(this.dom.createTextNode(lang.stringRepeat(\" \", i), this.element));\n }\n }\n if (this.displayIndentGuides) {\n this.$indentGuideRe = /\\s\\S| \\t|\\t |\\s$/;\n var className = \"ace_indent-guide\";\n var spaceClass = this.showSpaces ? \" ace_invisible ace_invisible_space\" : \"\";\n var spaceContent = this.showSpaces\n ? lang.stringRepeat(this.SPACE_CHAR, this.tabSize)\n : lang.stringRepeat(\" \", this.tabSize);\n var tabClass = this.showTabs ? \" ace_invisible ace_invisible_tab\" : \"\";\n var tabContent = this.showTabs\n ? lang.stringRepeat(this.TAB_CHAR, this.tabSize)\n : spaceContent;\n var span = this.dom.createElement(\"span\");\n span.className = className + spaceClass;\n span.textContent = spaceContent;\n this.$tabStrings[\" \"] = span;\n var span = this.dom.createElement(\"span\");\n span.className = className + tabClass;\n span.textContent = tabContent;\n this.$tabStrings[\"\\t\"] = span;\n }\n };\n Text.prototype.updateLines = function (config, firstRow, lastRow) {\n if (this.config.lastRow != config.lastRow ||\n this.config.firstRow != config.firstRow) {\n return this.update(config);\n }\n this.config = config;\n var first = Math.max(firstRow, config.firstRow);\n var last = Math.min(lastRow, config.lastRow);\n var lineElements = this.element.childNodes;\n var lineElementsIdx = 0;\n for (var row = config.firstRow; row < first; row++) {\n var foldLine = this.session.getFoldLine(row);\n if (foldLine) {\n if (foldLine.containsRow(first)) {\n first = foldLine.start.row;\n break;\n }\n else {\n row = foldLine.end.row;\n }\n }\n lineElementsIdx++;\n }\n var heightChanged = false;\n var row = first;\n var foldLine = this.session.getNextFoldLine(row);\n var foldStart = foldLine ? foldLine.start.row : Infinity;\n while (true) {\n if (row > foldStart) {\n row = foldLine.end.row + 1;\n foldLine = this.session.getNextFoldLine(row, foldLine);\n foldStart = foldLine ? foldLine.start.row : Infinity;\n }\n if (row > last)\n break;\n var lineElement = lineElements[lineElementsIdx++];\n if (lineElement) {\n this.dom.removeChildren(lineElement);\n this.$renderLine(lineElement, row, row == foldStart ? foldLine : false);\n if (heightChanged)\n lineElement.style.top = this.$lines.computeLineTop(row, config, this.session) + \"px\";\n var height = (config.lineHeight * this.session.getRowLength(row)) + \"px\";\n if (lineElement.style.height != height) {\n heightChanged = true;\n lineElement.style.height = height;\n }\n }\n row++;\n }\n if (heightChanged) {\n while (lineElementsIdx < this.$lines.cells.length) {\n var cell = this.$lines.cells[lineElementsIdx++];\n cell.element.style.top = this.$lines.computeLineTop(cell.row, config, this.session) + \"px\";\n }\n }\n };\n Text.prototype.scrollLines = function (config) {\n var oldConfig = this.config;\n this.config = config;\n if (this.$lines.pageChanged(oldConfig, config))\n return this.update(config);\n this.$lines.moveContainer(config);\n var lastRow = config.lastRow;\n var oldLastRow = oldConfig ? oldConfig.lastRow : -1;\n if (!oldConfig || oldLastRow < config.firstRow)\n return this.update(config);\n if (lastRow < oldConfig.firstRow)\n return this.update(config);\n if (!oldConfig || oldConfig.lastRow < config.firstRow)\n return this.update(config);\n if (config.lastRow < oldConfig.firstRow)\n return this.update(config);\n if (oldConfig.firstRow < config.firstRow)\n for (var row = this.session.getFoldedRowCount(oldConfig.firstRow, config.firstRow - 1); row > 0; row--)\n this.$lines.shift();\n if (oldConfig.lastRow > config.lastRow)\n for (var row = this.session.getFoldedRowCount(config.lastRow + 1, oldConfig.lastRow); row > 0; row--)\n this.$lines.pop();\n if (config.firstRow < oldConfig.firstRow) {\n this.$lines.unshift(this.$renderLinesFragment(config, config.firstRow, oldConfig.firstRow - 1));\n }\n if (config.lastRow > oldConfig.lastRow) {\n this.$lines.push(this.$renderLinesFragment(config, oldConfig.lastRow + 1, config.lastRow));\n }\n this.$highlightIndentGuide();\n };\n Text.prototype.$renderLinesFragment = function (config, firstRow, lastRow) {\n var fragment = [];\n var row = firstRow;\n var foldLine = this.session.getNextFoldLine(row);\n var foldStart = foldLine ? foldLine.start.row : Infinity;\n while (true) {\n if (row > foldStart) {\n row = foldLine.end.row + 1;\n foldLine = this.session.getNextFoldLine(row, foldLine);\n foldStart = foldLine ? foldLine.start.row : Infinity;\n }\n if (row > lastRow)\n break;\n var line = this.$lines.createCell(row, config, this.session);\n var lineEl = line.element;\n this.dom.removeChildren(lineEl);\n dom.setStyle(lineEl.style, \"height\", this.$lines.computeLineHeight(row, config, this.session) + \"px\");\n dom.setStyle(lineEl.style, \"top\", this.$lines.computeLineTop(row, config, this.session) + \"px\");\n this.$renderLine(lineEl, row, row == foldStart ? foldLine : false);\n if (this.$useLineGroups()) {\n lineEl.className = \"ace_line_group\";\n }\n else {\n lineEl.className = \"ace_line\";\n }\n fragment.push(line);\n row++;\n }\n return fragment;\n };\n Text.prototype.update = function (config) {\n this.$lines.moveContainer(config);\n this.config = config;\n var firstRow = config.firstRow;\n var lastRow = config.lastRow;\n var lines = this.$lines;\n while (lines.getLength())\n lines.pop();\n lines.push(this.$renderLinesFragment(config, firstRow, lastRow));\n };\n Text.prototype.$renderToken = function (parent, screenColumn, token, value) {\n var self = this;\n var re = /(\\t)|( +)|([\\x00-\\x1f\\x80-\\xa0\\xad\\u1680\\u180E\\u2000-\\u200f\\u2028\\u2029\\u202F\\u205F\\uFEFF\\uFFF9-\\uFFFC\\u2066\\u2067\\u2068\\u202A\\u202B\\u202D\\u202E\\u202C\\u2069]+)|(\\u3000)|([\\u1100-\\u115F\\u11A3-\\u11A7\\u11FA-\\u11FF\\u2329-\\u232A\\u2E80-\\u2E99\\u2E9B-\\u2EF3\\u2F00-\\u2FD5\\u2FF0-\\u2FFB\\u3001-\\u303E\\u3041-\\u3096\\u3099-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u3190-\\u31BA\\u31C0-\\u31E3\\u31F0-\\u321E\\u3220-\\u3247\\u3250-\\u32FE\\u3300-\\u4DBF\\u4E00-\\uA48C\\uA490-\\uA4C6\\uA960-\\uA97C\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFAFF\\uFE10-\\uFE19\\uFE30-\\uFE52\\uFE54-\\uFE66\\uFE68-\\uFE6B\\uFF01-\\uFF60\\uFFE0-\\uFFE6]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF])/g;\n var valueFragment = this.dom.createFragment(this.element);\n var m;\n var i = 0;\n while (m = re.exec(value)) {\n var tab = m[1];\n var simpleSpace = m[2];\n var controlCharacter = m[3];\n var cjkSpace = m[4];\n var cjk = m[5];\n if (!self.showSpaces && simpleSpace)\n continue;\n var before = i != m.index ? value.slice(i, m.index) : \"\";\n i = m.index + m[0].length;\n if (before) {\n valueFragment.appendChild(this.dom.createTextNode(before, this.element));\n }\n if (tab) {\n var tabSize = self.session.getScreenTabSize(screenColumn + m.index);\n valueFragment.appendChild(self.$tabStrings[tabSize].cloneNode(true));\n screenColumn += tabSize - 1;\n }\n else if (simpleSpace) {\n if (self.showSpaces) {\n var span = this.dom.createElement(\"span\");\n span.className = \"ace_invisible ace_invisible_space\";\n span.textContent = lang.stringRepeat(self.SPACE_CHAR, simpleSpace.length);\n valueFragment.appendChild(span);\n }\n else {\n valueFragment.appendChild(this.dom.createTextNode(simpleSpace, this.element));\n }\n }\n else if (controlCharacter) {\n var span = this.dom.createElement(\"span\");\n span.className = \"ace_invisible ace_invisible_space ace_invalid\";\n span.textContent = lang.stringRepeat(self.SPACE_CHAR, controlCharacter.length);\n valueFragment.appendChild(span);\n }\n else if (cjkSpace) {\n screenColumn += 1;\n var span = this.dom.createElement(\"span\");\n span.style.width = (self.config.characterWidth * 2) + \"px\";\n span.className = self.showSpaces ? \"ace_cjk ace_invisible ace_invisible_space\" : \"ace_cjk\";\n span.textContent = self.showSpaces ? self.SPACE_CHAR : cjkSpace;\n valueFragment.appendChild(span);\n }\n else if (cjk) {\n screenColumn += 1;\n var span = this.dom.createElement(\"span\");\n span.style.width = (self.config.characterWidth * 2) + \"px\";\n span.className = \"ace_cjk\";\n span.textContent = cjk;\n valueFragment.appendChild(span);\n }\n }\n valueFragment.appendChild(this.dom.createTextNode(i ? value.slice(i) : value, this.element));\n if (!isTextToken(token.type)) {\n var classes = \"ace_\" + token.type.replace(/\\./g, \" ace_\");\n var span = this.dom.createElement(\"span\");\n if (token.type == \"fold\") {\n span.style.width = (token.value.length * this.config.characterWidth) + \"px\";\n span.setAttribute(\"title\", nls(\"Unfold code\"));\n }\n span.className = classes;\n span.appendChild(valueFragment);\n parent.appendChild(span);\n }\n else {\n parent.appendChild(valueFragment);\n }\n return screenColumn + value.length;\n };\n Text.prototype.renderIndentGuide = function (parent, value, max) {\n var cols = value.search(this.$indentGuideRe);\n if (cols <= 0 || cols >= max)\n return value;\n if (value[0] == \" \") {\n cols -= cols % this.tabSize;\n var count = cols / this.tabSize;\n for (var i = 0; i < count; i++) {\n parent.appendChild(this.$tabStrings[\" \"].cloneNode(true));\n }\n this.$highlightIndentGuide();\n return value.substr(cols);\n }\n else if (value[0] == \"\\t\") {\n for (var i = 0; i < cols; i++) {\n parent.appendChild(this.$tabStrings[\"\\t\"].cloneNode(true));\n }\n this.$highlightIndentGuide();\n return value.substr(cols);\n }\n this.$highlightIndentGuide();\n return value;\n };\n Text.prototype.$highlightIndentGuide = function () {\n if (!this.$highlightIndentGuides || !this.displayIndentGuides)\n return;\n this.$highlightIndentGuideMarker = {\n indentLevel: undefined,\n start: undefined,\n end: undefined,\n dir: undefined\n };\n var lines = this.session.doc.$lines;\n if (!lines)\n return;\n var cursor = this.session.selection.getCursor();\n var initialIndent = /^\\s*/.exec(this.session.doc.getLine(cursor.row))[0].length;\n var elementIndentLevel = Math.floor(initialIndent / this.tabSize);\n this.$highlightIndentGuideMarker = {\n indentLevel: elementIndentLevel,\n start: cursor.row\n };\n var bracketHighlight = this.session.$bracketHighlight;\n if (bracketHighlight) {\n var ranges = this.session.$bracketHighlight.ranges;\n for (var i = 0; i < ranges.length; i++) {\n if (cursor.row !== ranges[i].start.row) {\n this.$highlightIndentGuideMarker.end = ranges[i].start.row;\n if (cursor.row > ranges[i].start.row) {\n this.$highlightIndentGuideMarker.dir = -1;\n }\n else {\n this.$highlightIndentGuideMarker.dir = 1;\n }\n break;\n }\n }\n }\n if (!this.$highlightIndentGuideMarker.end) {\n if (lines[cursor.row] !== '' && cursor.column === lines[cursor.row].length) {\n this.$highlightIndentGuideMarker.dir = 1;\n for (var i = cursor.row + 1; i < lines.length; i++) {\n var line = lines[i];\n var currentIndent = /^\\s*/.exec(line)[0].length;\n if (line !== '') {\n this.$highlightIndentGuideMarker.end = i;\n if (currentIndent <= initialIndent)\n break;\n }\n }\n }\n }\n this.$renderHighlightIndentGuide();\n };\n Text.prototype.$clearActiveIndentGuide = function () {\n var cells = this.$lines.cells;\n for (var i = 0; i < cells.length; i++) {\n var cell = cells[i];\n var childNodes = cell.element.childNodes;\n if (childNodes.length > 0) {\n for (var j = 0; j < childNodes.length; j++) {\n if (childNodes[j].classList && childNodes[j].classList.contains(\"ace_indent-guide-active\")) {\n childNodes[j].classList.remove(\"ace_indent-guide-active\");\n break;\n }\n }\n }\n }\n };\n Text.prototype.$setIndentGuideActive = function (cell, indentLevel) {\n var line = this.session.doc.getLine(cell.row);\n if (line !== \"\") {\n var childNodes = cell.element.childNodes;\n if (childNodes) {\n var node = childNodes[indentLevel - 1];\n if (node && node.classList && node.classList.contains(\"ace_indent-guide\"))\n node.classList.add(\"ace_indent-guide-active\");\n }\n }\n };\n Text.prototype.$renderHighlightIndentGuide = function () {\n if (!this.$lines)\n return;\n var cells = this.$lines.cells;\n this.$clearActiveIndentGuide();\n var indentLevel = this.$highlightIndentGuideMarker.indentLevel;\n if (indentLevel !== 0) {\n if (this.$highlightIndentGuideMarker.dir === 1) {\n for (var i = 0; i < cells.length; i++) {\n var cell = cells[i];\n if (this.$highlightIndentGuideMarker.end && cell.row >= this.$highlightIndentGuideMarker.start\n + 1) {\n if (cell.row >= this.$highlightIndentGuideMarker.end)\n break;\n this.$setIndentGuideActive(cell, indentLevel);\n }\n }\n }\n else {\n for (var i = cells.length - 1; i >= 0; i--) {\n var cell = cells[i];\n if (this.$highlightIndentGuideMarker.end && cell.row < this.$highlightIndentGuideMarker.start) {\n if (cell.row <= this.$highlightIndentGuideMarker.end)\n break;\n this.$setIndentGuideActive(cell, indentLevel);\n }\n }\n }\n }\n };\n Text.prototype.$createLineElement = function (parent) {\n var lineEl = this.dom.createElement(\"div\");\n lineEl.className = \"ace_line\";\n lineEl.style.height = this.config.lineHeight + \"px\";\n return lineEl;\n };\n Text.prototype.$renderWrappedLine = function (parent, tokens, splits) {\n var chars = 0;\n var split = 0;\n var splitChars = splits[0];\n var screenColumn = 0;\n var lineEl = this.$createLineElement();\n parent.appendChild(lineEl);\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n var value = token.value;\n if (i == 0 && this.displayIndentGuides) {\n chars = value.length;\n value = this.renderIndentGuide(lineEl, value, splitChars);\n if (!value)\n continue;\n chars -= value.length;\n }\n if (chars + value.length < splitChars) {\n screenColumn = this.$renderToken(lineEl, screenColumn, token, value);\n chars += value.length;\n }\n else {\n while (chars + value.length >= splitChars) {\n screenColumn = this.$renderToken(lineEl, screenColumn, token, value.substring(0, splitChars - chars));\n value = value.substring(splitChars - chars);\n chars = splitChars;\n lineEl = this.$createLineElement();\n parent.appendChild(lineEl);\n lineEl.appendChild(this.dom.createTextNode(lang.stringRepeat(\"\\xa0\", splits.indent), this.element));\n split++;\n screenColumn = 0;\n splitChars = splits[split] || Number.MAX_VALUE;\n }\n if (value.length != 0) {\n chars += value.length;\n screenColumn = this.$renderToken(lineEl, screenColumn, token, value);\n }\n }\n }\n if (splits[splits.length - 1] > this.MAX_LINE_LENGTH)\n this.$renderOverflowMessage(lineEl, screenColumn, null, \"\", true);\n };\n Text.prototype.$renderSimpleLine = function (parent, tokens) {\n var screenColumn = 0;\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n var value = token.value;\n if (i == 0 && this.displayIndentGuides) {\n value = this.renderIndentGuide(parent, value);\n if (!value)\n continue;\n }\n if (screenColumn + value.length > this.MAX_LINE_LENGTH)\n return this.$renderOverflowMessage(parent, screenColumn, token, value);\n screenColumn = this.$renderToken(parent, screenColumn, token, value);\n }\n };\n Text.prototype.$renderOverflowMessage = function (parent, screenColumn, token, value, hide) {\n token && this.$renderToken(parent, screenColumn, token, value.slice(0, this.MAX_LINE_LENGTH - screenColumn));\n var overflowEl = this.dom.createElement(\"span\");\n overflowEl.className = \"ace_inline_button ace_keyword ace_toggle_wrap\";\n overflowEl.textContent = hide ? \"\" : \"\";\n parent.appendChild(overflowEl);\n };\n Text.prototype.$renderLine = function (parent, row, foldLine) {\n if (!foldLine && foldLine != false)\n foldLine = this.session.getFoldLine(row);\n if (foldLine)\n var tokens = this.$getFoldLineTokens(row, foldLine);\n else\n var tokens = this.session.getTokens(row);\n var lastLineEl = parent;\n if (tokens.length) {\n var splits = this.session.getRowSplitData(row);\n if (splits && splits.length) {\n this.$renderWrappedLine(parent, tokens, splits);\n var lastLineEl = parent.lastChild;\n }\n else {\n var lastLineEl = parent;\n if (this.$useLineGroups()) {\n lastLineEl = this.$createLineElement();\n parent.appendChild(lastLineEl);\n }\n this.$renderSimpleLine(lastLineEl, tokens);\n }\n }\n else if (this.$useLineGroups()) {\n lastLineEl = this.$createLineElement();\n parent.appendChild(lastLineEl);\n }\n if (this.showEOL && lastLineEl) {\n if (foldLine)\n row = foldLine.end.row;\n var invisibleEl = this.dom.createElement(\"span\");\n invisibleEl.className = \"ace_invisible ace_invisible_eol\";\n invisibleEl.textContent = row == this.session.getLength() - 1 ? this.EOF_CHAR : this.EOL_CHAR;\n lastLineEl.appendChild(invisibleEl);\n }\n };\n Text.prototype.$getFoldLineTokens = function (row, foldLine) {\n var session = this.session;\n var renderTokens = [];\n function addTokens(tokens, from, to) {\n var idx = 0, col = 0;\n while ((col + tokens[idx].value.length) < from) {\n col += tokens[idx].value.length;\n idx++;\n if (idx == tokens.length)\n return;\n }\n if (col != from) {\n var value = tokens[idx].value.substring(from - col);\n if (value.length > (to - from))\n value = value.substring(0, to - from);\n renderTokens.push({\n type: tokens[idx].type,\n value: value\n });\n col = from + value.length;\n idx += 1;\n }\n while (col < to && idx < tokens.length) {\n var value = tokens[idx].value;\n if (value.length + col > to) {\n renderTokens.push({\n type: tokens[idx].type,\n value: value.substring(0, to - col)\n });\n }\n else\n renderTokens.push(tokens[idx]);\n col += value.length;\n idx += 1;\n }\n }\n var tokens = session.getTokens(row);\n foldLine.walk(function (placeholder, row, column, lastColumn, isNewRow) {\n if (placeholder != null) {\n renderTokens.push({\n type: \"fold\",\n value: placeholder\n });\n }\n else {\n if (isNewRow)\n tokens = session.getTokens(row);\n if (tokens.length)\n addTokens(tokens, lastColumn, column);\n }\n }, foldLine.end.row, this.session.getLine(foldLine.end.row).length);\n return renderTokens;\n };\n Text.prototype.$useLineGroups = function () {\n return this.session.getUseWrapMode();\n };\n return Text;\n}());\nText.prototype.EOF_CHAR = \"\\xB6\";\nText.prototype.EOL_CHAR_LF = \"\\xAC\";\nText.prototype.EOL_CHAR_CRLF = \"\\xa4\";\nText.prototype.EOL_CHAR = Text.prototype.EOL_CHAR_LF;\nText.prototype.TAB_CHAR = \"\\u2014\"; //\"\\u21E5\";\nText.prototype.SPACE_CHAR = \"\\xB7\";\nText.prototype.$padding = 0;\nText.prototype.MAX_LINE_LENGTH = 10000;\nText.prototype.showInvisibles = false;\nText.prototype.showSpaces = false;\nText.prototype.showTabs = false;\nText.prototype.showEOL = false;\nText.prototype.displayIndentGuides = true;\nText.prototype.$highlightIndentGuides = true;\nText.prototype.$tabStrings = [];\nText.prototype.destroy = {};\nText.prototype.onChangeTabSize = Text.prototype.$computeTabString;\noop.implement(Text.prototype, EventEmitter);\nexports.Text = Text;\n\n});\n\nace.define(\"ace/layer/cursor\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"], function(require, exports, module){\"use strict\";\nvar dom = require(\"../lib/dom\");\nvar Cursor = /** @class */ (function () {\n function Cursor(parentEl) {\n this.element = dom.createElement(\"div\");\n this.element.className = \"ace_layer ace_cursor-layer\";\n parentEl.appendChild(this.element);\n this.isVisible = false;\n this.isBlinking = true;\n this.blinkInterval = 1000;\n this.smoothBlinking = false;\n this.cursors = [];\n this.cursor = this.addCursor();\n dom.addCssClass(this.element, \"ace_hidden-cursors\");\n this.$updateCursors = this.$updateOpacity.bind(this);\n }\n Cursor.prototype.$updateOpacity = function (val) {\n var cursors = this.cursors;\n for (var i = cursors.length; i--;)\n dom.setStyle(cursors[i].style, \"opacity\", val ? \"\" : \"0\");\n };\n Cursor.prototype.$startCssAnimation = function () {\n var cursors = this.cursors;\n for (var i = cursors.length; i--;)\n cursors[i].style.animationDuration = this.blinkInterval + \"ms\";\n this.$isAnimating = true;\n setTimeout(function () {\n if (this.$isAnimating) {\n dom.addCssClass(this.element, \"ace_animate-blinking\");\n }\n }.bind(this));\n };\n Cursor.prototype.$stopCssAnimation = function () {\n this.$isAnimating = false;\n dom.removeCssClass(this.element, \"ace_animate-blinking\");\n };\n Cursor.prototype.setPadding = function (padding) {\n this.$padding = padding;\n };\n Cursor.prototype.setSession = function (session) {\n this.session = session;\n };\n Cursor.prototype.setBlinking = function (blinking) {\n if (blinking != this.isBlinking) {\n this.isBlinking = blinking;\n this.restartTimer();\n }\n };\n Cursor.prototype.setBlinkInterval = function (blinkInterval) {\n if (blinkInterval != this.blinkInterval) {\n this.blinkInterval = blinkInterval;\n this.restartTimer();\n }\n };\n Cursor.prototype.setSmoothBlinking = function (smoothBlinking) {\n if (smoothBlinking != this.smoothBlinking) {\n this.smoothBlinking = smoothBlinking;\n dom.setCssClass(this.element, \"ace_smooth-blinking\", smoothBlinking);\n this.$updateCursors(true);\n this.restartTimer();\n }\n };\n Cursor.prototype.addCursor = function () {\n var el = dom.createElement(\"div\");\n el.className = \"ace_cursor\";\n this.element.appendChild(el);\n this.cursors.push(el);\n return el;\n };\n Cursor.prototype.removeCursor = function () {\n if (this.cursors.length > 1) {\n var el = this.cursors.pop();\n el.parentNode.removeChild(el);\n return el;\n }\n };\n Cursor.prototype.hideCursor = function () {\n this.isVisible = false;\n dom.addCssClass(this.element, \"ace_hidden-cursors\");\n this.restartTimer();\n };\n Cursor.prototype.showCursor = function () {\n this.isVisible = true;\n dom.removeCssClass(this.element, \"ace_hidden-cursors\");\n this.restartTimer();\n };\n Cursor.prototype.restartTimer = function () {\n var update = this.$updateCursors;\n clearInterval(this.intervalId);\n clearTimeout(this.timeoutId);\n this.$stopCssAnimation();\n if (this.smoothBlinking) {\n this.$isSmoothBlinking = false;\n dom.removeCssClass(this.element, \"ace_smooth-blinking\");\n }\n update(true);\n if (!this.isBlinking || !this.blinkInterval || !this.isVisible) {\n this.$stopCssAnimation();\n return;\n }\n if (this.smoothBlinking) {\n this.$isSmoothBlinking = true;\n setTimeout(function () {\n if (this.$isSmoothBlinking) {\n dom.addCssClass(this.element, \"ace_smooth-blinking\");\n }\n }.bind(this));\n }\n if (dom.HAS_CSS_ANIMATION) {\n this.$startCssAnimation();\n }\n else {\n var blink = function () {\n this.timeoutId = setTimeout(function () {\n update(false);\n }, 0.6 * this.blinkInterval);\n }.bind(this);\n this.intervalId = setInterval(function () {\n update(true);\n blink();\n }, this.blinkInterval);\n blink();\n }\n };\n Cursor.prototype.getPixelPosition = function (position, onScreen) {\n if (!this.config || !this.session)\n return { left: 0, top: 0 };\n if (!position)\n position = this.session.selection.getCursor();\n var pos = this.session.documentToScreenPosition(position);\n var cursorLeft = this.$padding + (this.session.$bidiHandler.isBidiRow(pos.row, position.row)\n ? this.session.$bidiHandler.getPosLeft(pos.column)\n : pos.column * this.config.characterWidth);\n var cursorTop = (pos.row - (onScreen ? this.config.firstRowScreen : 0)) *\n this.config.lineHeight;\n return { left: cursorLeft, top: cursorTop };\n };\n Cursor.prototype.isCursorInView = function (pixelPos, config) {\n return pixelPos.top >= 0 && pixelPos.top < config.maxHeight;\n };\n Cursor.prototype.update = function (config) {\n this.config = config;\n var selections = this.session.$selectionMarkers;\n var i = 0, cursorIndex = 0;\n if (selections === undefined || selections.length === 0) {\n selections = [{ cursor: null }];\n }\n for (var i = 0, n = selections.length; i < n; i++) {\n var pixelPos = this.getPixelPosition(selections[i].cursor, true);\n if ((pixelPos.top > config.height + config.offset ||\n pixelPos.top < 0) && i > 1) {\n continue;\n }\n var element = this.cursors[cursorIndex++] || this.addCursor();\n var style = element.style;\n if (!this.drawCursor) {\n if (!this.isCursorInView(pixelPos, config)) {\n dom.setStyle(style, \"display\", \"none\");\n }\n else {\n dom.setStyle(style, \"display\", \"block\");\n dom.translate(element, pixelPos.left, pixelPos.top);\n dom.setStyle(style, \"width\", Math.round(config.characterWidth) + \"px\");\n dom.setStyle(style, \"height\", config.lineHeight + \"px\");\n }\n }\n else {\n this.drawCursor(element, pixelPos, config, selections[i], this.session);\n }\n }\n while (this.cursors.length > cursorIndex)\n this.removeCursor();\n var overwrite = this.session.getOverwrite();\n this.$setOverwrite(overwrite);\n this.$pixelPos = pixelPos;\n this.restartTimer();\n };\n Cursor.prototype.$setOverwrite = function (overwrite) {\n if (overwrite != this.overwrite) {\n this.overwrite = overwrite;\n if (overwrite)\n dom.addCssClass(this.element, \"ace_overwrite-cursors\");\n else\n dom.removeCssClass(this.element, \"ace_overwrite-cursors\");\n }\n };\n Cursor.prototype.destroy = function () {\n clearInterval(this.intervalId);\n clearTimeout(this.timeoutId);\n };\n return Cursor;\n}());\nCursor.prototype.$padding = 0;\nCursor.prototype.drawCursor = null;\nexports.Cursor = Cursor;\n\n});\n\nace.define(\"ace/scrollbar\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/dom\",\"ace/lib/event\",\"ace/lib/event_emitter\"], function(require, exports, module){\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar oop = require(\"./lib/oop\");\nvar dom = require(\"./lib/dom\");\nvar event = require(\"./lib/event\");\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar MAX_SCROLL_H = 0x8000;\nvar Scrollbar = /** @class */ (function () {\n function Scrollbar(parent, classSuffix) {\n this.element = dom.createElement(\"div\");\n this.element.className = \"ace_scrollbar ace_scrollbar\" + classSuffix;\n this.inner = dom.createElement(\"div\");\n this.inner.className = \"ace_scrollbar-inner\";\n this.inner.textContent = \"\\xa0\";\n this.element.appendChild(this.inner);\n parent.appendChild(this.element);\n this.setVisible(false);\n this.skipEvent = false;\n event.addListener(this.element, \"scroll\", this.onScroll.bind(this));\n event.addListener(this.element, \"mousedown\", event.preventDefault);\n }\n Scrollbar.prototype.setVisible = function (isVisible) {\n this.element.style.display = isVisible ? \"\" : \"none\";\n this.isVisible = isVisible;\n this.coeff = 1;\n };\n return Scrollbar;\n}());\noop.implement(Scrollbar.prototype, EventEmitter);\nvar VScrollBar = /** @class */ (function (_super) {\n __extends(VScrollBar, _super);\n function VScrollBar(parent, renderer) {\n var _this = _super.call(this, parent, '-v') || this;\n _this.scrollTop = 0;\n _this.scrollHeight = 0;\n renderer.$scrollbarWidth =\n _this.width = dom.scrollbarWidth(parent.ownerDocument);\n _this.inner.style.width =\n _this.element.style.width = (_this.width || 15) + 5 + \"px\";\n _this.$minWidth = 0;\n return _this;\n }\n VScrollBar.prototype.onScroll = function () {\n if (!this.skipEvent) {\n this.scrollTop = this.element.scrollTop;\n if (this.coeff != 1) {\n var h = this.element.clientHeight / this.scrollHeight;\n this.scrollTop = this.scrollTop * (1 - h) / (this.coeff - h);\n }\n this._emit(\"scroll\", { data: this.scrollTop });\n }\n this.skipEvent = false;\n };\n VScrollBar.prototype.getWidth = function () {\n return Math.max(this.isVisible ? this.width : 0, this.$minWidth || 0);\n };\n VScrollBar.prototype.setHeight = function (height) {\n this.element.style.height = height + \"px\";\n };\n VScrollBar.prototype.setScrollHeight = function (height) {\n this.scrollHeight = height;\n if (height > MAX_SCROLL_H) {\n this.coeff = MAX_SCROLL_H / height;\n height = MAX_SCROLL_H;\n }\n else if (this.coeff != 1) {\n this.coeff = 1;\n }\n this.inner.style.height = height + \"px\";\n };\n VScrollBar.prototype.setScrollTop = function (scrollTop) {\n if (this.scrollTop != scrollTop) {\n this.skipEvent = true;\n this.scrollTop = scrollTop;\n this.element.scrollTop = scrollTop * this.coeff;\n }\n };\n return VScrollBar;\n}(Scrollbar));\nVScrollBar.prototype.setInnerHeight = VScrollBar.prototype.setScrollHeight;\nvar HScrollBar = /** @class */ (function (_super) {\n __extends(HScrollBar, _super);\n function HScrollBar(parent, renderer) {\n var _this = _super.call(this, parent, '-h') || this;\n _this.scrollLeft = 0;\n _this.height = renderer.$scrollbarWidth;\n _this.inner.style.height =\n _this.element.style.height = (_this.height || 15) + 5 + \"px\";\n return _this;\n }\n HScrollBar.prototype.onScroll = function () {\n if (!this.skipEvent) {\n this.scrollLeft = this.element.scrollLeft;\n this._emit(\"scroll\", { data: this.scrollLeft });\n }\n this.skipEvent = false;\n };\n HScrollBar.prototype.getHeight = function () {\n return this.isVisible ? this.height : 0;\n };\n HScrollBar.prototype.setWidth = function (width) {\n this.element.style.width = width + \"px\";\n };\n HScrollBar.prototype.setInnerWidth = function (width) {\n this.inner.style.width = width + \"px\";\n };\n HScrollBar.prototype.setScrollWidth = function (width) {\n this.inner.style.width = width + \"px\";\n };\n HScrollBar.prototype.setScrollLeft = function (scrollLeft) {\n if (this.scrollLeft != scrollLeft) {\n this.skipEvent = true;\n this.scrollLeft = this.element.scrollLeft = scrollLeft;\n }\n };\n return HScrollBar;\n}(Scrollbar));\nexports.ScrollBar = VScrollBar; // backward compatibility\nexports.ScrollBarV = VScrollBar; // backward compatibility\nexports.ScrollBarH = HScrollBar; // backward compatibility\nexports.VScrollBar = VScrollBar;\nexports.HScrollBar = HScrollBar;\n\n});\n\nace.define(\"ace/scrollbar_custom\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/dom\",\"ace/lib/event\",\"ace/lib/event_emitter\"], function(require, exports, module){\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar oop = require(\"./lib/oop\");\nvar dom = require(\"./lib/dom\");\nvar event = require(\"./lib/event\");\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\ndom.importCssString(\".ace_editor>.ace_sb-v div, .ace_editor>.ace_sb-h div{\\n position: absolute;\\n background: rgba(128, 128, 128, 0.6);\\n -moz-box-sizing: border-box;\\n box-sizing: border-box;\\n border: 1px solid #bbb;\\n border-radius: 2px;\\n z-index: 8;\\n}\\n.ace_editor>.ace_sb-v, .ace_editor>.ace_sb-h {\\n position: absolute;\\n z-index: 6;\\n background: none;\\n overflow: hidden!important;\\n}\\n.ace_editor>.ace_sb-v {\\n z-index: 6;\\n right: 0;\\n top: 0;\\n width: 12px;\\n}\\n.ace_editor>.ace_sb-v div {\\n z-index: 8;\\n right: 0;\\n width: 100%;\\n}\\n.ace_editor>.ace_sb-h {\\n bottom: 0;\\n left: 0;\\n height: 12px;\\n}\\n.ace_editor>.ace_sb-h div {\\n bottom: 0;\\n height: 100%;\\n}\\n.ace_editor>.ace_sb_grabbed {\\n z-index: 8;\\n background: #000;\\n}\", \"ace_scrollbar.css\", false);\nvar ScrollBar = /** @class */ (function () {\n function ScrollBar(parent, classSuffix) {\n this.element = dom.createElement(\"div\");\n this.element.className = \"ace_sb\" + classSuffix;\n this.inner = dom.createElement(\"div\");\n this.inner.className = \"\";\n this.element.appendChild(this.inner);\n this.VScrollWidth = 12;\n this.HScrollHeight = 12;\n parent.appendChild(this.element);\n this.setVisible(false);\n this.skipEvent = false;\n event.addMultiMouseDownListener(this.element, [500, 300, 300], this, \"onMouseDown\");\n }\n ScrollBar.prototype.setVisible = function (isVisible) {\n this.element.style.display = isVisible ? \"\" : \"none\";\n this.isVisible = isVisible;\n this.coeff = 1;\n };\n return ScrollBar;\n}());\noop.implement(ScrollBar.prototype, EventEmitter);\nvar VScrollBar = /** @class */ (function (_super) {\n __extends(VScrollBar, _super);\n function VScrollBar(parent, renderer) {\n var _this = _super.call(this, parent, '-v') || this;\n _this.scrollTop = 0;\n _this.scrollHeight = 0;\n _this.parent = parent;\n _this.width = _this.VScrollWidth;\n _this.renderer = renderer;\n _this.inner.style.width = _this.element.style.width = (_this.width || 15) + \"px\";\n _this.$minWidth = 0;\n return _this;\n }\n VScrollBar.prototype.onMouseDown = function (eType, e) {\n if (eType !== \"mousedown\")\n return;\n if (event.getButton(e) !== 0 || e.detail === 2) {\n return;\n }\n if (e.target === this.inner) {\n var self = this;\n var mousePageY = e.clientY;\n var onMouseMove = function (e) {\n mousePageY = e.clientY;\n };\n var onMouseUp = function () {\n clearInterval(timerId);\n };\n var startY = e.clientY;\n var startTop = this.thumbTop;\n var onScrollInterval = function () {\n if (mousePageY === undefined)\n return;\n var scrollTop = self.scrollTopFromThumbTop(startTop + mousePageY - startY);\n if (scrollTop === self.scrollTop)\n return;\n self._emit(\"scroll\", { data: scrollTop });\n };\n event.capture(this.inner, onMouseMove, onMouseUp);\n var timerId = setInterval(onScrollInterval, 20);\n return event.preventDefault(e);\n }\n var top = e.clientY - this.element.getBoundingClientRect().top - this.thumbHeight / 2;\n this._emit(\"scroll\", { data: this.scrollTopFromThumbTop(top) });\n return event.preventDefault(e);\n };\n VScrollBar.prototype.getHeight = function () {\n return this.height;\n };\n VScrollBar.prototype.scrollTopFromThumbTop = function (thumbTop) {\n var scrollTop = thumbTop * (this.pageHeight - this.viewHeight) / (this.slideHeight - this.thumbHeight);\n scrollTop = scrollTop >> 0;\n if (scrollTop < 0) {\n scrollTop = 0;\n }\n else if (scrollTop > this.pageHeight - this.viewHeight) {\n scrollTop = this.pageHeight - this.viewHeight;\n }\n return scrollTop;\n };\n VScrollBar.prototype.getWidth = function () {\n return Math.max(this.isVisible ? this.width : 0, this.$minWidth || 0);\n };\n VScrollBar.prototype.setHeight = function (height) {\n this.height = Math.max(0, height);\n this.slideHeight = this.height;\n this.viewHeight = this.height;\n this.setScrollHeight(this.pageHeight, true);\n };\n VScrollBar.prototype.setScrollHeight = function (height, force) {\n if (this.pageHeight === height && !force)\n return;\n this.pageHeight = height;\n this.thumbHeight = this.slideHeight * this.viewHeight / this.pageHeight;\n if (this.thumbHeight > this.slideHeight)\n this.thumbHeight = this.slideHeight;\n if (this.thumbHeight < 15)\n this.thumbHeight = 15;\n this.inner.style.height = this.thumbHeight + \"px\";\n if (this.scrollTop > (this.pageHeight - this.viewHeight)) {\n this.scrollTop = (this.pageHeight - this.viewHeight);\n if (this.scrollTop < 0)\n this.scrollTop = 0;\n this._emit(\"scroll\", { data: this.scrollTop });\n }\n };\n VScrollBar.prototype.setScrollTop = function (scrollTop) {\n this.scrollTop = scrollTop;\n if (scrollTop < 0)\n scrollTop = 0;\n this.thumbTop = scrollTop * (this.slideHeight - this.thumbHeight) / (this.pageHeight - this.viewHeight);\n this.inner.style.top = this.thumbTop + \"px\";\n };\n return VScrollBar;\n}(ScrollBar));\nVScrollBar.prototype.setInnerHeight = VScrollBar.prototype.setScrollHeight;\nvar HScrollBar = /** @class */ (function (_super) {\n __extends(HScrollBar, _super);\n function HScrollBar(parent, renderer) {\n var _this = _super.call(this, parent, '-h') || this;\n _this.scrollLeft = 0;\n _this.scrollWidth = 0;\n _this.height = _this.HScrollHeight;\n _this.inner.style.height = _this.element.style.height = (_this.height || 12) + \"px\";\n _this.renderer = renderer;\n return _this;\n }\n HScrollBar.prototype.onMouseDown = function (eType, e) {\n if (eType !== \"mousedown\")\n return;\n if (event.getButton(e) !== 0 || e.detail === 2) {\n return;\n }\n if (e.target === this.inner) {\n var self = this;\n var mousePageX = e.clientX;\n var onMouseMove = function (e) {\n mousePageX = e.clientX;\n };\n var onMouseUp = function () {\n clearInterval(timerId);\n };\n var startX = e.clientX;\n var startLeft = this.thumbLeft;\n var onScrollInterval = function () {\n if (mousePageX === undefined)\n return;\n var scrollLeft = self.scrollLeftFromThumbLeft(startLeft + mousePageX - startX);\n if (scrollLeft === self.scrollLeft)\n return;\n self._emit(\"scroll\", { data: scrollLeft });\n };\n event.capture(this.inner, onMouseMove, onMouseUp);\n var timerId = setInterval(onScrollInterval, 20);\n return event.preventDefault(e);\n }\n var left = e.clientX - this.element.getBoundingClientRect().left - this.thumbWidth / 2;\n this._emit(\"scroll\", { data: this.scrollLeftFromThumbLeft(left) });\n return event.preventDefault(e);\n };\n HScrollBar.prototype.getHeight = function () {\n return this.isVisible ? this.height : 0;\n };\n HScrollBar.prototype.scrollLeftFromThumbLeft = function (thumbLeft) {\n var scrollLeft = thumbLeft * (this.pageWidth - this.viewWidth) / (this.slideWidth - this.thumbWidth);\n scrollLeft = scrollLeft >> 0;\n if (scrollLeft < 0) {\n scrollLeft = 0;\n }\n else if (scrollLeft > this.pageWidth - this.viewWidth) {\n scrollLeft = this.pageWidth - this.viewWidth;\n }\n return scrollLeft;\n };\n HScrollBar.prototype.setWidth = function (width) {\n this.width = Math.max(0, width);\n this.element.style.width = this.width + \"px\";\n this.slideWidth = this.width;\n this.viewWidth = this.width;\n this.setScrollWidth(this.pageWidth, true);\n };\n HScrollBar.prototype.setScrollWidth = function (width, force) {\n if (this.pageWidth === width && !force)\n return;\n this.pageWidth = width;\n this.thumbWidth = this.slideWidth * this.viewWidth / this.pageWidth;\n if (this.thumbWidth > this.slideWidth)\n this.thumbWidth = this.slideWidth;\n if (this.thumbWidth < 15)\n this.thumbWidth = 15;\n this.inner.style.width = this.thumbWidth + \"px\";\n if (this.scrollLeft > (this.pageWidth - this.viewWidth)) {\n this.scrollLeft = (this.pageWidth - this.viewWidth);\n if (this.scrollLeft < 0)\n this.scrollLeft = 0;\n this._emit(\"scroll\", { data: this.scrollLeft });\n }\n };\n HScrollBar.prototype.setScrollLeft = function (scrollLeft) {\n this.scrollLeft = scrollLeft;\n if (scrollLeft < 0)\n scrollLeft = 0;\n this.thumbLeft = scrollLeft * (this.slideWidth - this.thumbWidth) / (this.pageWidth - this.viewWidth);\n this.inner.style.left = (this.thumbLeft) + \"px\";\n };\n return HScrollBar;\n}(ScrollBar));\nHScrollBar.prototype.setInnerWidth = HScrollBar.prototype.setScrollWidth;\nexports.ScrollBar = VScrollBar; // backward compatibility\nexports.ScrollBarV = VScrollBar; // backward compatibility\nexports.ScrollBarH = HScrollBar; // backward compatibility\nexports.VScrollBar = VScrollBar;\nexports.HScrollBar = HScrollBar;\n\n});\n\nace.define(\"ace/renderloop\",[\"require\",\"exports\",\"module\",\"ace/lib/event\"], function(require, exports, module){\"use strict\";\nvar event = require(\"./lib/event\");\nvar RenderLoop = /** @class */ (function () {\n function RenderLoop(onRender, win) {\n this.onRender = onRender;\n this.pending = false;\n this.changes = 0;\n this.$recursionLimit = 2;\n this.window = win || window;\n var _self = this;\n this._flush = function (ts) {\n _self.pending = false;\n var changes = _self.changes;\n if (changes) {\n event.blockIdle(100);\n _self.changes = 0;\n _self.onRender(changes);\n }\n if (_self.changes) {\n if (_self.$recursionLimit-- < 0)\n return;\n _self.schedule();\n }\n else {\n _self.$recursionLimit = 2;\n }\n };\n }\n RenderLoop.prototype.schedule = function (change) {\n this.changes = this.changes | change;\n if (this.changes && !this.pending) {\n event.nextFrame(this._flush);\n this.pending = true;\n }\n };\n RenderLoop.prototype.clear = function (change) {\n var changes = this.changes;\n this.changes = 0;\n return changes;\n };\n return RenderLoop;\n}());\nexports.RenderLoop = RenderLoop;\n\n});\n\nace.define(\"ace/layer/font_metrics\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/dom\",\"ace/lib/lang\",\"ace/lib/event\",\"ace/lib/useragent\",\"ace/lib/event_emitter\"], function(require, exports, module){var oop = require(\"../lib/oop\");\nvar dom = require(\"../lib/dom\");\nvar lang = require(\"../lib/lang\");\nvar event = require(\"../lib/event\");\nvar useragent = require(\"../lib/useragent\");\nvar EventEmitter = require(\"../lib/event_emitter\").EventEmitter;\nvar CHAR_COUNT = 512;\nvar USE_OBSERVER = typeof ResizeObserver == \"function\";\nvar L = 200;\nvar FontMetrics = /** @class */ (function () {\n function FontMetrics(parentEl) {\n this.el = dom.createElement(\"div\");\n this.$setMeasureNodeStyles(this.el.style, true);\n this.$main = dom.createElement(\"div\");\n this.$setMeasureNodeStyles(this.$main.style);\n this.$measureNode = dom.createElement(\"div\");\n this.$setMeasureNodeStyles(this.$measureNode.style);\n this.el.appendChild(this.$main);\n this.el.appendChild(this.$measureNode);\n parentEl.appendChild(this.el);\n this.$measureNode.textContent = lang.stringRepeat(\"X\", CHAR_COUNT);\n this.$characterSize = { width: 0, height: 0 };\n if (USE_OBSERVER)\n this.$addObserver();\n else\n this.checkForSizeChanges();\n }\n FontMetrics.prototype.$setMeasureNodeStyles = function (style, isRoot) {\n style.width = style.height = \"auto\";\n style.left = style.top = \"0px\";\n style.visibility = \"hidden\";\n style.position = \"absolute\";\n style.whiteSpace = \"pre\";\n if (useragent.isIE < 8) {\n style[\"font-family\"] = \"inherit\";\n }\n else {\n style.font = \"inherit\";\n }\n style.overflow = isRoot ? \"hidden\" : \"visible\";\n };\n FontMetrics.prototype.checkForSizeChanges = function (size) {\n if (size === undefined)\n size = this.$measureSizes();\n if (size && (this.$characterSize.width !== size.width || this.$characterSize.height !== size.height)) {\n this.$measureNode.style.fontWeight = \"bold\";\n var boldSize = this.$measureSizes();\n this.$measureNode.style.fontWeight = \"\";\n this.$characterSize = size;\n this.charSizes = Object.create(null);\n this.allowBoldFonts = boldSize && boldSize.width === size.width && boldSize.height === size.height;\n this._emit(\"changeCharacterSize\", { data: size });\n }\n };\n FontMetrics.prototype.$addObserver = function () {\n var self = this;\n this.$observer = new window.ResizeObserver(function (e) {\n self.checkForSizeChanges();\n });\n this.$observer.observe(this.$measureNode);\n };\n FontMetrics.prototype.$pollSizeChanges = function () {\n if (this.$pollSizeChangesTimer || this.$observer)\n return this.$pollSizeChangesTimer;\n var self = this;\n return this.$pollSizeChangesTimer = event.onIdle(function cb() {\n self.checkForSizeChanges();\n event.onIdle(cb, 500);\n }, 500);\n };\n FontMetrics.prototype.setPolling = function (val) {\n if (val) {\n this.$pollSizeChanges();\n }\n else if (this.$pollSizeChangesTimer) {\n clearInterval(this.$pollSizeChangesTimer);\n this.$pollSizeChangesTimer = 0;\n }\n };\n FontMetrics.prototype.$measureSizes = function (node) {\n var size = {\n height: (node || this.$measureNode).clientHeight,\n width: (node || this.$measureNode).clientWidth / CHAR_COUNT\n };\n if (size.width === 0 || size.height === 0)\n return null;\n return size;\n };\n FontMetrics.prototype.$measureCharWidth = function (ch) {\n this.$main.textContent = lang.stringRepeat(ch, CHAR_COUNT);\n var rect = this.$main.getBoundingClientRect();\n return rect.width / CHAR_COUNT;\n };\n FontMetrics.prototype.getCharacterWidth = function (ch) {\n var w = this.charSizes[ch];\n if (w === undefined) {\n w = this.charSizes[ch] = this.$measureCharWidth(ch) / this.$characterSize.width;\n }\n return w;\n };\n FontMetrics.prototype.destroy = function () {\n clearInterval(this.$pollSizeChangesTimer);\n if (this.$observer)\n this.$observer.disconnect();\n if (this.el && this.el.parentNode)\n this.el.parentNode.removeChild(this.el);\n };\n FontMetrics.prototype.$getZoom = function (element) {\n if (!element || !element.parentElement)\n return 1;\n return (window.getComputedStyle(element).zoom || 1) * this.$getZoom(element.parentElement);\n };\n FontMetrics.prototype.$initTransformMeasureNodes = function () {\n var t = function (t, l) {\n return [\"div\", {\n style: \"position: absolute;top:\" + t + \"px;left:\" + l + \"px;\"\n }];\n };\n this.els = dom.buildDom([t(0, 0), t(L, 0), t(0, L), t(L, L)], this.el);\n };\n FontMetrics.prototype.transformCoordinates = function (clientPos, elPos) {\n if (clientPos) {\n var zoom = this.$getZoom(this.el);\n clientPos = mul(1 / zoom, clientPos);\n }\n function solve(l1, l2, r) {\n var det = l1[1] * l2[0] - l1[0] * l2[1];\n return [\n (-l2[1] * r[0] + l2[0] * r[1]) / det,\n (+l1[1] * r[0] - l1[0] * r[1]) / det\n ];\n }\n function sub(a, b) { return [a[0] - b[0], a[1] - b[1]]; }\n function add(a, b) { return [a[0] + b[0], a[1] + b[1]]; }\n function mul(a, b) { return [a * b[0], a * b[1]]; }\n if (!this.els)\n this.$initTransformMeasureNodes();\n function p(el) {\n var r = el.getBoundingClientRect();\n return [r.left, r.top];\n }\n var a = p(this.els[0]);\n var b = p(this.els[1]);\n var c = p(this.els[2]);\n var d = p(this.els[3]);\n var h = solve(sub(d, b), sub(d, c), sub(add(b, c), add(d, a)));\n var m1 = mul(1 + h[0], sub(b, a));\n var m2 = mul(1 + h[1], sub(c, a));\n if (elPos) {\n var x = elPos;\n var k = h[0] * x[0] / L + h[1] * x[1] / L + 1;\n var ut = add(mul(x[0], m1), mul(x[1], m2));\n return add(mul(1 / k / L, ut), a);\n }\n var u = sub(clientPos, a);\n var f = solve(sub(m1, mul(h[0], u)), sub(m2, mul(h[1], u)), u);\n return mul(L, f);\n };\n return FontMetrics;\n}());\nFontMetrics.prototype.$characterSize = { width: 0, height: 0 };\noop.implement(FontMetrics.prototype, EventEmitter);\nexports.FontMetrics = FontMetrics;\n\n});\n\nace.define(\"ace/css/editor-css\",[\"require\",\"exports\",\"module\"], function(require, exports, module){/*\nstyles = []\nfor (var i = 1; i < 16; i++) {\n styles.push(\".ace_br\" + i + \"{\" + (\n [\"top-left\", \"top-right\", \"bottom-right\", \"bottom-left\"]\n ).map(function(x, j) {\n return i & (1< .ace_line, .ace_text-layer > .ace_line_group {\\n contain: style size layout;\\n position: absolute;\\n top: 0;\\n left: 0;\\n right: 0;\\n}\\n\\n.ace_hidpi .ace_text-layer,\\n.ace_hidpi .ace_gutter-layer,\\n.ace_hidpi .ace_content,\\n.ace_hidpi .ace_gutter {\\n contain: strict;\\n}\\n.ace_hidpi .ace_text-layer > .ace_line, \\n.ace_hidpi .ace_text-layer > .ace_line_group {\\n contain: strict;\\n}\\n\\n.ace_cjk {\\n display: inline-block;\\n text-align: center;\\n}\\n\\n.ace_cursor-layer {\\n z-index: 4;\\n}\\n\\n.ace_cursor {\\n z-index: 4;\\n position: absolute;\\n box-sizing: border-box;\\n border-left: 2px solid;\\n /* workaround for smooth cursor repaintng whole screen in chrome */\\n transform: translatez(0);\\n}\\n\\n.ace_multiselect .ace_cursor {\\n border-left-width: 1px;\\n}\\n\\n.ace_slim-cursors .ace_cursor {\\n border-left-width: 1px;\\n}\\n\\n.ace_overwrite-cursors .ace_cursor {\\n border-left-width: 0;\\n border-bottom: 1px solid;\\n}\\n\\n.ace_hidden-cursors .ace_cursor {\\n opacity: 0.2;\\n}\\n\\n.ace_hasPlaceholder .ace_hidden-cursors .ace_cursor {\\n opacity: 0;\\n}\\n\\n.ace_smooth-blinking .ace_cursor {\\n transition: opacity 0.18s;\\n}\\n\\n.ace_animate-blinking .ace_cursor {\\n animation-duration: 1000ms;\\n animation-timing-function: step-end;\\n animation-name: blink-ace-animate;\\n animation-iteration-count: infinite;\\n}\\n\\n.ace_animate-blinking.ace_smooth-blinking .ace_cursor {\\n animation-duration: 1000ms;\\n animation-timing-function: ease-in-out;\\n animation-name: blink-ace-animate-smooth;\\n}\\n \\n@keyframes blink-ace-animate {\\n from, to { opacity: 1; }\\n 60% { opacity: 0; }\\n}\\n\\n@keyframes blink-ace-animate-smooth {\\n from, to { opacity: 1; }\\n 45% { opacity: 1; }\\n 60% { opacity: 0; }\\n 85% { opacity: 0; }\\n}\\n\\n.ace_marker-layer .ace_step, .ace_marker-layer .ace_stack {\\n position: absolute;\\n z-index: 3;\\n}\\n\\n.ace_marker-layer .ace_selection {\\n position: absolute;\\n z-index: 5;\\n}\\n\\n.ace_marker-layer .ace_bracket {\\n position: absolute;\\n z-index: 6;\\n}\\n\\n.ace_marker-layer .ace_error_bracket {\\n position: absolute;\\n border-bottom: 1px solid #DE5555;\\n border-radius: 0;\\n}\\n\\n.ace_marker-layer .ace_active-line {\\n position: absolute;\\n z-index: 2;\\n}\\n\\n.ace_marker-layer .ace_selected-word {\\n position: absolute;\\n z-index: 4;\\n box-sizing: border-box;\\n}\\n\\n.ace_line .ace_fold {\\n box-sizing: border-box;\\n\\n display: inline-block;\\n height: 11px;\\n margin-top: -2px;\\n vertical-align: middle;\\n\\n background-image:\\n url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII=\\\"),\\n url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACJJREFUeNpi+P//fxgTAwPDBxDxD078RSX+YeEyDFMCIMAAI3INmXiwf2YAAAAASUVORK5CYII=\\\");\\n background-repeat: no-repeat, repeat-x;\\n background-position: center center, top left;\\n color: transparent;\\n\\n border: 1px solid black;\\n border-radius: 2px;\\n\\n cursor: pointer;\\n pointer-events: auto;\\n}\\n\\n.ace_dark .ace_fold {\\n}\\n\\n.ace_fold:hover{\\n background-image:\\n url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII=\\\"),\\n url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACBJREFUeNpi+P//fz4TAwPDZxDxD5X4i5fLMEwJgAADAEPVDbjNw87ZAAAAAElFTkSuQmCC\\\");\\n}\\n\\n.ace_tooltip {\\n background-color: #f5f5f5;\\n border: 1px solid gray;\\n border-radius: 1px;\\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);\\n color: black;\\n max-width: 100%;\\n padding: 3px 4px;\\n position: fixed;\\n z-index: 999999;\\n box-sizing: border-box;\\n cursor: default;\\n white-space: pre-wrap;\\n word-wrap: break-word;\\n line-height: normal;\\n font-style: normal;\\n font-weight: normal;\\n letter-spacing: normal;\\n pointer-events: none;\\n overflow: auto;\\n max-width: min(60em, 66vw);\\n}\\n.ace_tooltip pre {\\n white-space: pre-wrap;\\n}\\n\\n.ace_tooltip.ace_dark {\\n background-color: #636363;\\n color: #fff;\\n}\\n\\n.ace_tooltip:focus {\\n outline: 1px solid #5E9ED6;\\n}\\n\\n.ace_icon {\\n display: inline-block;\\n width: 18px;\\n vertical-align: top;\\n}\\n\\n.ace_icon_svg {\\n display: inline-block;\\n width: 12px;\\n vertical-align: top;\\n -webkit-mask-repeat: no-repeat;\\n -webkit-mask-size: 12px;\\n -webkit-mask-position: center;\\n}\\n\\n.ace_folding-enabled > .ace_gutter-cell, .ace_folding-enabled > .ace_gutter-cell_svg-icons {\\n padding-right: 13px;\\n}\\n\\n.ace_fold-widget {\\n box-sizing: border-box;\\n\\n margin: 0 -12px 0 1px;\\n display: none;\\n width: 11px;\\n vertical-align: top;\\n\\n background-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42mWKsQ0AMAzC8ixLlrzQjzmBiEjp0A6WwBCSPgKAXoLkqSot7nN3yMwR7pZ32NzpKkVoDBUxKAAAAABJRU5ErkJggg==\\\");\\n background-repeat: no-repeat;\\n background-position: center;\\n\\n border-radius: 3px;\\n \\n border: 1px solid transparent;\\n cursor: pointer;\\n}\\n\\n.ace_folding-enabled .ace_fold-widget {\\n display: inline-block; \\n}\\n\\n.ace_fold-widget.ace_end {\\n background-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42m3HwQkAMAhD0YzsRchFKI7sAikeWkrxwScEB0nh5e7KTPWimZki4tYfVbX+MNl4pyZXejUO1QAAAABJRU5ErkJggg==\\\");\\n}\\n\\n.ace_fold-widget.ace_closed {\\n background-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAGCAYAAAAG5SQMAAAAOUlEQVR42jXKwQkAMAgDwKwqKD4EwQ26sSOkVWjgIIHAzPiCgaqiqnJHZnKICBERHN194O5b9vbLuAVRL+l0YWnZAAAAAElFTkSuQmCCXA==\\\");\\n}\\n\\n.ace_fold-widget:hover {\\n border: 1px solid rgba(0, 0, 0, 0.3);\\n background-color: rgba(255, 255, 255, 0.2);\\n box-shadow: 0 1px 1px rgba(255, 255, 255, 0.7);\\n}\\n\\n.ace_fold-widget:active {\\n border: 1px solid rgba(0, 0, 0, 0.4);\\n background-color: rgba(0, 0, 0, 0.05);\\n box-shadow: 0 1px 1px rgba(255, 255, 255, 0.8);\\n}\\n/**\\n * Dark version for fold widgets\\n */\\n.ace_dark .ace_fold-widget {\\n background-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHklEQVQIW2P4//8/AzoGEQ7oGCaLLAhWiSwB146BAQCSTPYocqT0AAAAAElFTkSuQmCC\\\");\\n}\\n.ace_dark .ace_fold-widget.ace_end {\\n background-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAH0lEQVQIW2P4//8/AxQ7wNjIAjDMgC4AxjCVKBirIAAF0kz2rlhxpAAAAABJRU5ErkJggg==\\\");\\n}\\n.ace_dark .ace_fold-widget.ace_closed {\\n background-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAFCAYAAACAcVaiAAAAHElEQVQIW2P4//+/AxAzgDADlOOAznHAKgPWAwARji8UIDTfQQAAAABJRU5ErkJggg==\\\");\\n}\\n.ace_dark .ace_fold-widget:hover {\\n box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);\\n background-color: rgba(255, 255, 255, 0.1);\\n}\\n.ace_dark .ace_fold-widget:active {\\n box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);\\n}\\n\\n.ace_inline_button {\\n border: 1px solid lightgray;\\n display: inline-block;\\n margin: -1px 8px;\\n padding: 0 5px;\\n pointer-events: auto;\\n cursor: pointer;\\n}\\n.ace_inline_button:hover {\\n border-color: gray;\\n background: rgba(200,200,200,0.2);\\n display: inline-block;\\n pointer-events: auto;\\n}\\n\\n.ace_fold-widget.ace_invalid {\\n background-color: #FFB4B4;\\n border-color: #DE5555;\\n}\\n\\n.ace_fade-fold-widgets .ace_fold-widget {\\n transition: opacity 0.4s ease 0.05s;\\n opacity: 0;\\n}\\n\\n.ace_fade-fold-widgets:hover .ace_fold-widget {\\n transition: opacity 0.05s ease 0.05s;\\n opacity:1;\\n}\\n\\n.ace_underline {\\n text-decoration: underline;\\n}\\n\\n.ace_bold {\\n font-weight: bold;\\n}\\n\\n.ace_nobold .ace_bold {\\n font-weight: normal;\\n}\\n\\n.ace_italic {\\n font-style: italic;\\n}\\n\\n\\n.ace_error-marker {\\n background-color: rgba(255, 0, 0,0.2);\\n position: absolute;\\n z-index: 9;\\n}\\n\\n.ace_highlight-marker {\\n background-color: rgba(255, 255, 0,0.2);\\n position: absolute;\\n z-index: 8;\\n}\\n\\n.ace_mobile-menu {\\n position: absolute;\\n line-height: 1.5;\\n border-radius: 4px;\\n -ms-user-select: none;\\n -moz-user-select: none;\\n -webkit-user-select: none;\\n user-select: none;\\n background: white;\\n box-shadow: 1px 3px 2px grey;\\n border: 1px solid #dcdcdc;\\n color: black;\\n}\\n.ace_dark > .ace_mobile-menu {\\n background: #333;\\n color: #ccc;\\n box-shadow: 1px 3px 2px grey;\\n border: 1px solid #444;\\n\\n}\\n.ace_mobile-button {\\n padding: 2px;\\n cursor: pointer;\\n overflow: hidden;\\n}\\n.ace_mobile-button:hover {\\n background-color: #eee;\\n opacity:1;\\n}\\n.ace_mobile-button:active {\\n background-color: #ddd;\\n}\\n\\n.ace_placeholder {\\n font-family: arial;\\n transform: scale(0.9);\\n transform-origin: left;\\n white-space: pre;\\n opacity: 0.7;\\n margin: 0 10px;\\n}\\n\\n.ace_ghost_text {\\n opacity: 0.5;\\n font-style: italic;\\n white-space: pre;\\n}\\n\\n.ace_screenreader-only {\\n position:absolute;\\n left:-10000px;\\n top:auto;\\n width:1px;\\n height:1px;\\n overflow:hidden;\\n}\";\n\n});\n\nace.define(\"ace/layer/decorators\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\",\"ace/lib/oop\",\"ace/lib/event_emitter\"], function(require, exports, module){\"use strict\";\nvar dom = require(\"../lib/dom\");\nvar oop = require(\"../lib/oop\");\nvar EventEmitter = require(\"../lib/event_emitter\").EventEmitter;\nvar Decorator = /** @class */ (function () {\n function Decorator(parent, renderer) {\n this.canvas = dom.createElement(\"canvas\");\n this.renderer = renderer;\n this.pixelRatio = 1;\n this.maxHeight = renderer.layerConfig.maxHeight;\n this.lineHeight = renderer.layerConfig.lineHeight;\n this.canvasHeight = parent.parent.scrollHeight;\n this.heightRatio = this.canvasHeight / this.maxHeight;\n this.canvasWidth = parent.width;\n this.minDecorationHeight = (2 * this.pixelRatio) | 0;\n this.halfMinDecorationHeight = (this.minDecorationHeight / 2) | 0;\n this.canvas.width = this.canvasWidth;\n this.canvas.height = this.canvasHeight;\n this.canvas.style.top = 0 + \"px\";\n this.canvas.style.right = 0 + \"px\";\n this.canvas.style.zIndex = 7 + \"px\";\n this.canvas.style.position = \"absolute\";\n this.colors = {};\n this.colors.dark = {\n \"error\": \"rgba(255, 18, 18, 1)\",\n \"warning\": \"rgba(18, 136, 18, 1)\",\n \"info\": \"rgba(18, 18, 136, 1)\"\n };\n this.colors.light = {\n \"error\": \"rgb(255,51,51)\",\n \"warning\": \"rgb(32,133,72)\",\n \"info\": \"rgb(35,68,138)\"\n };\n parent.element.appendChild(this.canvas);\n }\n Decorator.prototype.$updateDecorators = function (config) {\n var colors = (this.renderer.theme.isDark === true) ? this.colors.dark : this.colors.light;\n if (config) {\n this.maxHeight = config.maxHeight;\n this.lineHeight = config.lineHeight;\n this.canvasHeight = config.height;\n var allLineHeight = (config.lastRow + 1) * this.lineHeight;\n if (allLineHeight < this.canvasHeight) {\n this.heightRatio = 1;\n }\n else {\n this.heightRatio = this.canvasHeight / this.maxHeight;\n }\n }\n var ctx = this.canvas.getContext(\"2d\");\n function compare(a, b) {\n if (a.priority < b.priority)\n return -1;\n if (a.priority > b.priority)\n return 1;\n return 0;\n }\n var annotations = this.renderer.session.$annotations;\n ctx.clearRect(0, 0, this.canvas.width, this.canvas.height);\n if (annotations) {\n var priorities = {\n \"info\": 1,\n \"warning\": 2,\n \"error\": 3\n };\n annotations.forEach(function (item) {\n item.priority = priorities[item.type] || null;\n });\n annotations = annotations.sort(compare);\n var foldData = this.renderer.session.$foldData;\n for (var i = 0; i < annotations.length; i++) {\n var row = annotations[i].row;\n var compensateFold = this.compensateFoldRows(row, foldData);\n var currentY = Math.round((row - compensateFold) * this.lineHeight * this.heightRatio);\n var y1 = Math.round(((row - compensateFold) * this.lineHeight * this.heightRatio));\n var y2 = Math.round((((row - compensateFold) * this.lineHeight + this.lineHeight) * this.heightRatio));\n var height = y2 - y1;\n if (height < this.minDecorationHeight) {\n var yCenter = ((y1 + y2) / 2) | 0;\n if (yCenter < this.halfMinDecorationHeight) {\n yCenter = this.halfMinDecorationHeight;\n }\n else if (yCenter + this.halfMinDecorationHeight > this.canvasHeight) {\n yCenter = this.canvasHeight - this.halfMinDecorationHeight;\n }\n y1 = Math.round(yCenter - this.halfMinDecorationHeight);\n y2 = Math.round(yCenter + this.halfMinDecorationHeight);\n }\n ctx.fillStyle = colors[annotations[i].type] || null;\n ctx.fillRect(0, currentY, this.canvasWidth, y2 - y1);\n }\n }\n var cursor = this.renderer.session.selection.getCursor();\n if (cursor) {\n var compensateFold = this.compensateFoldRows(cursor.row, foldData);\n var currentY = Math.round((cursor.row - compensateFold) * this.lineHeight * this.heightRatio);\n ctx.fillStyle = \"rgba(0, 0, 0, 0.5)\";\n ctx.fillRect(0, currentY, this.canvasWidth, 2);\n }\n };\n Decorator.prototype.compensateFoldRows = function (row, foldData) {\n var compensateFold = 0;\n if (foldData && foldData.length > 0) {\n for (var j = 0; j < foldData.length; j++) {\n if (row > foldData[j].start.row && row < foldData[j].end.row) {\n compensateFold += row - foldData[j].start.row;\n }\n else if (row >= foldData[j].end.row) {\n compensateFold += foldData[j].end.row - foldData[j].start.row;\n }\n }\n }\n return compensateFold;\n };\n return Decorator;\n}());\noop.implement(Decorator.prototype, EventEmitter);\nexports.Decorator = Decorator;\n\n});\n\nace.define(\"ace/virtual_renderer\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/dom\",\"ace/lib/lang\",\"ace/config\",\"ace/layer/gutter\",\"ace/layer/marker\",\"ace/layer/text\",\"ace/layer/cursor\",\"ace/scrollbar\",\"ace/scrollbar\",\"ace/scrollbar_custom\",\"ace/scrollbar_custom\",\"ace/renderloop\",\"ace/layer/font_metrics\",\"ace/lib/event_emitter\",\"ace/css/editor-css\",\"ace/layer/decorators\",\"ace/lib/useragent\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"./lib/oop\");\nvar dom = require(\"./lib/dom\");\nvar lang = require(\"./lib/lang\");\nvar config = require(\"./config\");\nvar GutterLayer = require(\"./layer/gutter\").Gutter;\nvar MarkerLayer = require(\"./layer/marker\").Marker;\nvar TextLayer = require(\"./layer/text\").Text;\nvar CursorLayer = require(\"./layer/cursor\").Cursor;\nvar HScrollBar = require(\"./scrollbar\").HScrollBar;\nvar VScrollBar = require(\"./scrollbar\").VScrollBar;\nvar HScrollBarCustom = require(\"./scrollbar_custom\").HScrollBar;\nvar VScrollBarCustom = require(\"./scrollbar_custom\").VScrollBar;\nvar RenderLoop = require(\"./renderloop\").RenderLoop;\nvar FontMetrics = require(\"./layer/font_metrics\").FontMetrics;\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar editorCss = require(\"./css/editor-css\");\nvar Decorator = require(\"./layer/decorators\").Decorator;\nvar useragent = require(\"./lib/useragent\");\ndom.importCssString(editorCss, \"ace_editor.css\", false);\nvar VirtualRenderer = /** @class */ (function () {\n function VirtualRenderer(container, theme) {\n var _self = this;\n this.container = container || dom.createElement(\"div\");\n dom.addCssClass(this.container, \"ace_editor\");\n if (dom.HI_DPI)\n dom.addCssClass(this.container, \"ace_hidpi\");\n this.setTheme(theme);\n if (config.get(\"useStrictCSP\") == null)\n config.set(\"useStrictCSP\", false);\n this.$gutter = dom.createElement(\"div\");\n this.$gutter.className = \"ace_gutter\";\n this.container.appendChild(this.$gutter);\n this.$gutter.setAttribute(\"aria-hidden\", true);\n this.scroller = dom.createElement(\"div\");\n this.scroller.className = \"ace_scroller\";\n this.container.appendChild(this.scroller);\n this.content = dom.createElement(\"div\");\n this.content.className = \"ace_content\";\n this.scroller.appendChild(this.content);\n this.$gutterLayer = new GutterLayer(this.$gutter);\n this.$gutterLayer.on(\"changeGutterWidth\", this.onGutterResize.bind(this));\n this.$markerBack = new MarkerLayer(this.content);\n var textLayer = this.$textLayer = new TextLayer(this.content);\n this.canvas = textLayer.element;\n this.$markerFront = new MarkerLayer(this.content);\n this.$cursorLayer = new CursorLayer(this.content);\n this.$horizScroll = false;\n this.$vScroll = false;\n this.scrollBar =\n this.scrollBarV = new VScrollBar(this.container, this);\n this.scrollBarH = new HScrollBar(this.container, this);\n this.scrollBarV.on(\"scroll\", function (e) {\n if (!_self.$scrollAnimation)\n _self.session.setScrollTop(e.data - _self.scrollMargin.top);\n });\n this.scrollBarH.on(\"scroll\", function (e) {\n if (!_self.$scrollAnimation)\n _self.session.setScrollLeft(e.data - _self.scrollMargin.left);\n });\n this.scrollTop = 0;\n this.scrollLeft = 0;\n this.cursorPos = {\n row: 0,\n column: 0\n };\n this.$fontMetrics = new FontMetrics(this.container);\n this.$textLayer.$setFontMetrics(this.$fontMetrics);\n this.$textLayer.on(\"changeCharacterSize\", function (e) {\n _self.updateCharacterSize();\n _self.onResize(true, _self.gutterWidth, _self.$size.width, _self.$size.height);\n _self._signal(\"changeCharacterSize\", e);\n });\n this.$size = {\n width: 0,\n height: 0,\n scrollerHeight: 0,\n scrollerWidth: 0,\n $dirty: true\n };\n this.layerConfig = {\n width: 1,\n padding: 0,\n firstRow: 0,\n firstRowScreen: 0,\n lastRow: 0,\n lineHeight: 0,\n characterWidth: 0,\n minHeight: 1,\n maxHeight: 1,\n offset: 0,\n height: 1,\n gutterOffset: 1\n };\n this.scrollMargin = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0,\n v: 0,\n h: 0\n };\n this.margin = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0,\n v: 0,\n h: 0\n };\n this.$keepTextAreaAtCursor = !useragent.isIOS;\n this.$loop = new RenderLoop(this.$renderChanges.bind(this), this.container.ownerDocument.defaultView);\n this.$loop.schedule(this.CHANGE_FULL);\n this.updateCharacterSize();\n this.setPadding(4);\n this.$addResizeObserver();\n config.resetOptions(this);\n config._signal(\"renderer\", this);\n }\n VirtualRenderer.prototype.updateCharacterSize = function () {\n if (this.$textLayer.allowBoldFonts != this.$allowBoldFonts) {\n this.$allowBoldFonts = this.$textLayer.allowBoldFonts;\n this.setStyle(\"ace_nobold\", !this.$allowBoldFonts);\n }\n this.layerConfig.characterWidth =\n this.characterWidth = this.$textLayer.getCharacterWidth();\n this.layerConfig.lineHeight =\n this.lineHeight = this.$textLayer.getLineHeight();\n this.$updatePrintMargin();\n dom.setStyle(this.scroller.style, \"line-height\", this.lineHeight + \"px\");\n };\n VirtualRenderer.prototype.setSession = function (session) {\n if (this.session)\n this.session.doc.off(\"changeNewLineMode\", this.onChangeNewLineMode);\n this.session = session;\n if (session && this.scrollMargin.top && session.getScrollTop() <= 0)\n session.setScrollTop(-this.scrollMargin.top);\n this.$cursorLayer.setSession(session);\n this.$markerBack.setSession(session);\n this.$markerFront.setSession(session);\n this.$gutterLayer.setSession(session);\n this.$textLayer.setSession(session);\n if (!session)\n return;\n this.$loop.schedule(this.CHANGE_FULL);\n this.session.$setFontMetrics(this.$fontMetrics);\n this.scrollBarH.scrollLeft = this.scrollBarV.scrollTop = null;\n this.onChangeNewLineMode = this.onChangeNewLineMode.bind(this);\n this.onChangeNewLineMode();\n this.session.doc.on(\"changeNewLineMode\", this.onChangeNewLineMode);\n };\n VirtualRenderer.prototype.updateLines = function (firstRow, lastRow, force) {\n if (lastRow === undefined)\n lastRow = Infinity;\n if (!this.$changedLines) {\n this.$changedLines = {\n firstRow: firstRow,\n lastRow: lastRow\n };\n }\n else {\n if (this.$changedLines.firstRow > firstRow)\n this.$changedLines.firstRow = firstRow;\n if (this.$changedLines.lastRow < lastRow)\n this.$changedLines.lastRow = lastRow;\n }\n if (this.$changedLines.lastRow < this.layerConfig.firstRow) {\n if (force)\n this.$changedLines.lastRow = this.layerConfig.lastRow;\n else\n return;\n }\n if (this.$changedLines.firstRow > this.layerConfig.lastRow)\n return;\n this.$loop.schedule(this.CHANGE_LINES);\n };\n VirtualRenderer.prototype.onChangeNewLineMode = function () {\n this.$loop.schedule(this.CHANGE_TEXT);\n this.$textLayer.$updateEolChar();\n this.session.$bidiHandler.setEolChar(this.$textLayer.EOL_CHAR);\n };\n VirtualRenderer.prototype.onChangeTabSize = function () {\n this.$loop.schedule(this.CHANGE_TEXT | this.CHANGE_MARKER);\n this.$textLayer.onChangeTabSize();\n };\n VirtualRenderer.prototype.updateText = function () {\n this.$loop.schedule(this.CHANGE_TEXT);\n };\n VirtualRenderer.prototype.updateFull = function (force) {\n if (force)\n this.$renderChanges(this.CHANGE_FULL, true);\n else\n this.$loop.schedule(this.CHANGE_FULL);\n };\n VirtualRenderer.prototype.updateFontSize = function () {\n this.$textLayer.checkForSizeChanges();\n };\n VirtualRenderer.prototype.$updateSizeAsync = function () {\n if (this.$loop.pending)\n this.$size.$dirty = true;\n else\n this.onResize();\n };\n VirtualRenderer.prototype.onResize = function (force, gutterWidth, width, height) {\n if (this.resizing > 2)\n return;\n else if (this.resizing > 0)\n this.resizing++;\n else\n this.resizing = force ? 1 : 0;\n var el = this.container;\n if (!height)\n height = el.clientHeight || el.scrollHeight;\n if (!width)\n width = el.clientWidth || el.scrollWidth;\n var changes = this.$updateCachedSize(force, gutterWidth, width, height);\n if (this.$resizeTimer)\n this.$resizeTimer.cancel();\n if (!this.$size.scrollerHeight || (!width && !height))\n return this.resizing = 0;\n if (force)\n this.$gutterLayer.$padding = null;\n if (force)\n this.$renderChanges(changes | this.$changes, true);\n else\n this.$loop.schedule(changes | this.$changes);\n if (this.resizing)\n this.resizing = 0;\n this.scrollBarH.scrollLeft = this.scrollBarV.scrollTop = null;\n if (this.$customScrollbar) {\n this.$updateCustomScrollbar(true);\n }\n };\n VirtualRenderer.prototype.$updateCachedSize = function (force, gutterWidth, width, height) {\n height -= (this.$extraHeight || 0);\n var changes = 0;\n var size = this.$size;\n var oldSize = {\n width: size.width,\n height: size.height,\n scrollerHeight: size.scrollerHeight,\n scrollerWidth: size.scrollerWidth\n };\n if (height && (force || size.height != height)) {\n size.height = height;\n changes |= this.CHANGE_SIZE;\n size.scrollerHeight = size.height;\n if (this.$horizScroll)\n size.scrollerHeight -= this.scrollBarH.getHeight();\n this.scrollBarV.setHeight(size.scrollerHeight);\n this.scrollBarV.element.style.bottom = this.scrollBarH.getHeight() + \"px\";\n changes = changes | this.CHANGE_SCROLL;\n }\n if (width && (force || size.width != width)) {\n changes |= this.CHANGE_SIZE;\n size.width = width;\n if (gutterWidth == null)\n gutterWidth = this.$showGutter ? this.$gutter.offsetWidth : 0;\n this.gutterWidth = gutterWidth;\n dom.setStyle(this.scrollBarH.element.style, \"left\", gutterWidth + \"px\");\n dom.setStyle(this.scroller.style, \"left\", gutterWidth + this.margin.left + \"px\");\n size.scrollerWidth = Math.max(0, width - gutterWidth - this.scrollBarV.getWidth() - this.margin.h);\n dom.setStyle(this.$gutter.style, \"left\", this.margin.left + \"px\");\n var right = this.scrollBarV.getWidth() + \"px\";\n dom.setStyle(this.scrollBarH.element.style, \"right\", right);\n dom.setStyle(this.scroller.style, \"right\", right);\n dom.setStyle(this.scroller.style, \"bottom\", this.scrollBarH.getHeight());\n this.scrollBarH.setWidth(size.scrollerWidth);\n if (this.session && this.session.getUseWrapMode() && this.adjustWrapLimit() || force) {\n changes |= this.CHANGE_FULL;\n }\n }\n size.$dirty = !width || !height;\n if (changes)\n this._signal(\"resize\", oldSize);\n return changes;\n };\n VirtualRenderer.prototype.onGutterResize = function (width) {\n var gutterWidth = this.$showGutter ? width : 0;\n if (gutterWidth != this.gutterWidth)\n this.$changes |= this.$updateCachedSize(true, gutterWidth, this.$size.width, this.$size.height);\n if (this.session.getUseWrapMode() && this.adjustWrapLimit()) {\n this.$loop.schedule(this.CHANGE_FULL);\n }\n else if (this.$size.$dirty) {\n this.$loop.schedule(this.CHANGE_FULL);\n }\n else {\n this.$computeLayerConfig();\n }\n };\n VirtualRenderer.prototype.adjustWrapLimit = function () {\n var availableWidth = this.$size.scrollerWidth - this.$padding * 2;\n var limit = Math.floor(availableWidth / this.characterWidth);\n return this.session.adjustWrapLimit(limit, this.$showPrintMargin && this.$printMarginColumn);\n };\n VirtualRenderer.prototype.setAnimatedScroll = function (shouldAnimate) {\n this.setOption(\"animatedScroll\", shouldAnimate);\n };\n VirtualRenderer.prototype.getAnimatedScroll = function () {\n return this.$animatedScroll;\n };\n VirtualRenderer.prototype.setShowInvisibles = function (showInvisibles) {\n this.setOption(\"showInvisibles\", showInvisibles);\n this.session.$bidiHandler.setShowInvisibles(showInvisibles);\n };\n VirtualRenderer.prototype.getShowInvisibles = function () {\n return this.getOption(\"showInvisibles\");\n };\n VirtualRenderer.prototype.getDisplayIndentGuides = function () {\n return this.getOption(\"displayIndentGuides\");\n };\n VirtualRenderer.prototype.setDisplayIndentGuides = function (display) {\n this.setOption(\"displayIndentGuides\", display);\n };\n VirtualRenderer.prototype.getHighlightIndentGuides = function () {\n return this.getOption(\"highlightIndentGuides\");\n };\n VirtualRenderer.prototype.setHighlightIndentGuides = function (highlight) {\n this.setOption(\"highlightIndentGuides\", highlight);\n };\n VirtualRenderer.prototype.setShowPrintMargin = function (showPrintMargin) {\n this.setOption(\"showPrintMargin\", showPrintMargin);\n };\n VirtualRenderer.prototype.getShowPrintMargin = function () {\n return this.getOption(\"showPrintMargin\");\n };\n VirtualRenderer.prototype.setPrintMarginColumn = function (showPrintMargin) {\n this.setOption(\"printMarginColumn\", showPrintMargin);\n };\n VirtualRenderer.prototype.getPrintMarginColumn = function () {\n return this.getOption(\"printMarginColumn\");\n };\n VirtualRenderer.prototype.getShowGutter = function () {\n return this.getOption(\"showGutter\");\n };\n VirtualRenderer.prototype.setShowGutter = function (show) {\n return this.setOption(\"showGutter\", show);\n };\n VirtualRenderer.prototype.getFadeFoldWidgets = function () {\n return this.getOption(\"fadeFoldWidgets\");\n };\n VirtualRenderer.prototype.setFadeFoldWidgets = function (show) {\n this.setOption(\"fadeFoldWidgets\", show);\n };\n VirtualRenderer.prototype.setHighlightGutterLine = function (shouldHighlight) {\n this.setOption(\"highlightGutterLine\", shouldHighlight);\n };\n VirtualRenderer.prototype.getHighlightGutterLine = function () {\n return this.getOption(\"highlightGutterLine\");\n };\n VirtualRenderer.prototype.$updatePrintMargin = function () {\n if (!this.$showPrintMargin && !this.$printMarginEl)\n return;\n if (!this.$printMarginEl) {\n var containerEl = dom.createElement(\"div\");\n containerEl.className = \"ace_layer ace_print-margin-layer\";\n this.$printMarginEl = dom.createElement(\"div\");\n this.$printMarginEl.className = \"ace_print-margin\";\n containerEl.appendChild(this.$printMarginEl);\n this.content.insertBefore(containerEl, this.content.firstChild);\n }\n var style = this.$printMarginEl.style;\n style.left = Math.round(this.characterWidth * this.$printMarginColumn + this.$padding) + \"px\";\n style.visibility = this.$showPrintMargin ? \"visible\" : \"hidden\";\n if (this.session && this.session.$wrap == -1)\n this.adjustWrapLimit();\n };\n VirtualRenderer.prototype.getContainerElement = function () {\n return this.container;\n };\n VirtualRenderer.prototype.getMouseEventTarget = function () {\n return this.scroller;\n };\n VirtualRenderer.prototype.getTextAreaContainer = function () {\n return this.container;\n };\n VirtualRenderer.prototype.$moveTextAreaToCursor = function () {\n if (this.$isMousePressed)\n return;\n var style = this.textarea.style;\n var composition = this.$composition;\n if (!this.$keepTextAreaAtCursor && !composition) {\n dom.translate(this.textarea, -100, 0);\n return;\n }\n var pixelPos = this.$cursorLayer.$pixelPos;\n if (!pixelPos)\n return;\n if (composition && composition.markerRange)\n pixelPos = this.$cursorLayer.getPixelPosition(composition.markerRange.start, true);\n var config = this.layerConfig;\n var posTop = pixelPos.top;\n var posLeft = pixelPos.left;\n posTop -= config.offset;\n var h = composition && composition.useTextareaForIME || useragent.isMobile ? this.lineHeight : 1;\n if (posTop < 0 || posTop > config.height - h) {\n dom.translate(this.textarea, 0, 0);\n return;\n }\n var w = 1;\n var maxTop = this.$size.height - h;\n if (!composition) {\n posTop += this.lineHeight;\n }\n else {\n if (composition.useTextareaForIME) {\n var val = this.textarea.value;\n w = this.characterWidth * (this.session.$getStringScreenWidth(val)[0]);\n }\n else {\n posTop += this.lineHeight + 2;\n }\n }\n posLeft -= this.scrollLeft;\n if (posLeft > this.$size.scrollerWidth - w)\n posLeft = this.$size.scrollerWidth - w;\n posLeft += this.gutterWidth + this.margin.left;\n dom.setStyle(style, \"height\", h + \"px\");\n dom.setStyle(style, \"width\", w + \"px\");\n dom.translate(this.textarea, Math.min(posLeft, this.$size.scrollerWidth - w), Math.min(posTop, maxTop));\n };\n VirtualRenderer.prototype.getFirstVisibleRow = function () {\n return this.layerConfig.firstRow;\n };\n VirtualRenderer.prototype.getFirstFullyVisibleRow = function () {\n return this.layerConfig.firstRow + (this.layerConfig.offset === 0 ? 0 : 1);\n };\n VirtualRenderer.prototype.getLastFullyVisibleRow = function () {\n var config = this.layerConfig;\n var lastRow = config.lastRow;\n var top = this.session.documentToScreenRow(lastRow, 0) * config.lineHeight;\n if (top - this.session.getScrollTop() > config.height - config.lineHeight)\n return lastRow - 1;\n return lastRow;\n };\n VirtualRenderer.prototype.getLastVisibleRow = function () {\n return this.layerConfig.lastRow;\n };\n VirtualRenderer.prototype.setPadding = function (padding) {\n this.$padding = padding;\n this.$textLayer.setPadding(padding);\n this.$cursorLayer.setPadding(padding);\n this.$markerFront.setPadding(padding);\n this.$markerBack.setPadding(padding);\n this.$loop.schedule(this.CHANGE_FULL);\n this.$updatePrintMargin();\n };\n VirtualRenderer.prototype.setScrollMargin = function (top, bottom, left, right) {\n var sm = this.scrollMargin;\n sm.top = top | 0;\n sm.bottom = bottom | 0;\n sm.right = right | 0;\n sm.left = left | 0;\n sm.v = sm.top + sm.bottom;\n sm.h = sm.left + sm.right;\n if (sm.top && this.scrollTop <= 0 && this.session)\n this.session.setScrollTop(-sm.top);\n this.updateFull();\n };\n VirtualRenderer.prototype.setMargin = function (top, bottom, left, right) {\n var sm = this.margin;\n sm.top = top | 0;\n sm.bottom = bottom | 0;\n sm.right = right | 0;\n sm.left = left | 0;\n sm.v = sm.top + sm.bottom;\n sm.h = sm.left + sm.right;\n this.$updateCachedSize(true, this.gutterWidth, this.$size.width, this.$size.height);\n this.updateFull();\n };\n VirtualRenderer.prototype.getHScrollBarAlwaysVisible = function () {\n return this.$hScrollBarAlwaysVisible;\n };\n VirtualRenderer.prototype.setHScrollBarAlwaysVisible = function (alwaysVisible) {\n this.setOption(\"hScrollBarAlwaysVisible\", alwaysVisible);\n };\n VirtualRenderer.prototype.getVScrollBarAlwaysVisible = function () {\n return this.$vScrollBarAlwaysVisible;\n };\n VirtualRenderer.prototype.setVScrollBarAlwaysVisible = function (alwaysVisible) {\n this.setOption(\"vScrollBarAlwaysVisible\", alwaysVisible);\n };\n VirtualRenderer.prototype.$updateScrollBarV = function () {\n var scrollHeight = this.layerConfig.maxHeight;\n var scrollerHeight = this.$size.scrollerHeight;\n if (!this.$maxLines && this.$scrollPastEnd) {\n scrollHeight -= (scrollerHeight - this.lineHeight) * this.$scrollPastEnd;\n if (this.scrollTop > scrollHeight - scrollerHeight) {\n scrollHeight = this.scrollTop + scrollerHeight;\n this.scrollBarV.scrollTop = null;\n }\n }\n this.scrollBarV.setScrollHeight(scrollHeight + this.scrollMargin.v);\n this.scrollBarV.setScrollTop(this.scrollTop + this.scrollMargin.top);\n };\n VirtualRenderer.prototype.$updateScrollBarH = function () {\n this.scrollBarH.setScrollWidth(this.layerConfig.width + 2 * this.$padding + this.scrollMargin.h);\n this.scrollBarH.setScrollLeft(this.scrollLeft + this.scrollMargin.left);\n };\n VirtualRenderer.prototype.freeze = function () {\n this.$frozen = true;\n };\n VirtualRenderer.prototype.unfreeze = function () {\n this.$frozen = false;\n };\n VirtualRenderer.prototype.$renderChanges = function (changes, force) {\n if (this.$changes) {\n changes |= this.$changes;\n this.$changes = 0;\n }\n if ((!this.session || !this.container.offsetWidth || this.$frozen) || (!changes && !force)) {\n this.$changes |= changes;\n return;\n }\n if (this.$size.$dirty) {\n this.$changes |= changes;\n return this.onResize(true);\n }\n if (!this.lineHeight) {\n this.$textLayer.checkForSizeChanges();\n }\n this._signal(\"beforeRender\", changes);\n if (this.session && this.session.$bidiHandler)\n this.session.$bidiHandler.updateCharacterWidths(this.$fontMetrics);\n var config = this.layerConfig;\n if (changes & this.CHANGE_FULL ||\n changes & this.CHANGE_SIZE ||\n changes & this.CHANGE_TEXT ||\n changes & this.CHANGE_LINES ||\n changes & this.CHANGE_SCROLL ||\n changes & this.CHANGE_H_SCROLL) {\n changes |= this.$computeLayerConfig() | this.$loop.clear();\n if (config.firstRow != this.layerConfig.firstRow && config.firstRowScreen == this.layerConfig.firstRowScreen) {\n var st = this.scrollTop + (config.firstRow - Math.max(this.layerConfig.firstRow, 0)) * this.lineHeight;\n if (st > 0) {\n this.scrollTop = st;\n changes = changes | this.CHANGE_SCROLL;\n changes |= this.$computeLayerConfig() | this.$loop.clear();\n }\n }\n config = this.layerConfig;\n this.$updateScrollBarV();\n if (changes & this.CHANGE_H_SCROLL)\n this.$updateScrollBarH();\n dom.translate(this.content, -this.scrollLeft, -config.offset);\n var width = config.width + 2 * this.$padding + \"px\";\n var height = config.minHeight + \"px\";\n dom.setStyle(this.content.style, \"width\", width);\n dom.setStyle(this.content.style, \"height\", height);\n }\n if (changes & this.CHANGE_H_SCROLL) {\n dom.translate(this.content, -this.scrollLeft, -config.offset);\n this.scroller.className = this.scrollLeft <= 0 ? \"ace_scroller \" : \"ace_scroller ace_scroll-left \";\n if (this.enableKeyboardAccessibility)\n this.scroller.className += this.keyboardFocusClassName;\n }\n if (changes & this.CHANGE_FULL) {\n this.$changedLines = null;\n this.$textLayer.update(config);\n if (this.$showGutter)\n this.$gutterLayer.update(config);\n if (this.$customScrollbar) {\n this.$scrollDecorator.$updateDecorators(config);\n }\n this.$markerBack.update(config);\n this.$markerFront.update(config);\n this.$cursorLayer.update(config);\n this.$moveTextAreaToCursor();\n this._signal(\"afterRender\", changes);\n return;\n }\n if (changes & this.CHANGE_SCROLL) {\n this.$changedLines = null;\n if (changes & this.CHANGE_TEXT || changes & this.CHANGE_LINES)\n this.$textLayer.update(config);\n else\n this.$textLayer.scrollLines(config);\n if (this.$showGutter) {\n if (changes & this.CHANGE_GUTTER || changes & this.CHANGE_LINES)\n this.$gutterLayer.update(config);\n else\n this.$gutterLayer.scrollLines(config);\n }\n if (this.$customScrollbar) {\n this.$scrollDecorator.$updateDecorators(config);\n }\n this.$markerBack.update(config);\n this.$markerFront.update(config);\n this.$cursorLayer.update(config);\n this.$moveTextAreaToCursor();\n this._signal(\"afterRender\", changes);\n return;\n }\n if (changes & this.CHANGE_TEXT) {\n this.$changedLines = null;\n this.$textLayer.update(config);\n if (this.$showGutter)\n this.$gutterLayer.update(config);\n if (this.$customScrollbar) {\n this.$scrollDecorator.$updateDecorators(config);\n }\n }\n else if (changes & this.CHANGE_LINES) {\n if (this.$updateLines() || (changes & this.CHANGE_GUTTER) && this.$showGutter)\n this.$gutterLayer.update(config);\n if (this.$customScrollbar) {\n this.$scrollDecorator.$updateDecorators(config);\n }\n }\n else if (changes & this.CHANGE_TEXT || changes & this.CHANGE_GUTTER) {\n if (this.$showGutter)\n this.$gutterLayer.update(config);\n if (this.$customScrollbar) {\n this.$scrollDecorator.$updateDecorators(config);\n }\n }\n else if (changes & this.CHANGE_CURSOR) {\n if (this.$highlightGutterLine)\n this.$gutterLayer.updateLineHighlight(config);\n if (this.$customScrollbar) {\n this.$scrollDecorator.$updateDecorators(config);\n }\n }\n if (changes & this.CHANGE_CURSOR) {\n this.$cursorLayer.update(config);\n this.$moveTextAreaToCursor();\n }\n if (changes & (this.CHANGE_MARKER | this.CHANGE_MARKER_FRONT)) {\n this.$markerFront.update(config);\n }\n if (changes & (this.CHANGE_MARKER | this.CHANGE_MARKER_BACK)) {\n this.$markerBack.update(config);\n }\n this._signal(\"afterRender\", changes);\n };\n VirtualRenderer.prototype.$autosize = function () {\n var height = this.session.getScreenLength() * this.lineHeight;\n var maxHeight = this.$maxLines * this.lineHeight;\n var desiredHeight = Math.min(maxHeight, Math.max((this.$minLines || 1) * this.lineHeight, height)) + this.scrollMargin.v + (this.$extraHeight || 0);\n if (this.$horizScroll)\n desiredHeight += this.scrollBarH.getHeight();\n if (this.$maxPixelHeight && desiredHeight > this.$maxPixelHeight)\n desiredHeight = this.$maxPixelHeight;\n var hideScrollbars = desiredHeight <= 2 * this.lineHeight;\n var vScroll = !hideScrollbars && height > maxHeight;\n if (desiredHeight != this.desiredHeight ||\n this.$size.height != this.desiredHeight || vScroll != this.$vScroll) {\n if (vScroll != this.$vScroll) {\n this.$vScroll = vScroll;\n this.scrollBarV.setVisible(vScroll);\n }\n var w = this.container.clientWidth;\n this.container.style.height = desiredHeight + \"px\";\n this.$updateCachedSize(true, this.$gutterWidth, w, desiredHeight);\n this.desiredHeight = desiredHeight;\n this._signal(\"autosize\");\n }\n };\n VirtualRenderer.prototype.$computeLayerConfig = function () {\n var session = this.session;\n var size = this.$size;\n var hideScrollbars = size.height <= 2 * this.lineHeight;\n var screenLines = this.session.getScreenLength();\n var maxHeight = screenLines * this.lineHeight;\n var longestLine = this.$getLongestLine();\n var horizScroll = !hideScrollbars && (this.$hScrollBarAlwaysVisible ||\n size.scrollerWidth - longestLine - 2 * this.$padding < 0);\n var hScrollChanged = this.$horizScroll !== horizScroll;\n if (hScrollChanged) {\n this.$horizScroll = horizScroll;\n this.scrollBarH.setVisible(horizScroll);\n }\n var vScrollBefore = this.$vScroll; // autosize can change vscroll value in which case we need to update longestLine\n if (this.$maxLines && this.lineHeight > 1)\n this.$autosize();\n var minHeight = size.scrollerHeight + this.lineHeight;\n var scrollPastEnd = !this.$maxLines && this.$scrollPastEnd\n ? (size.scrollerHeight - this.lineHeight) * this.$scrollPastEnd\n : 0;\n maxHeight += scrollPastEnd;\n var sm = this.scrollMargin;\n this.session.setScrollTop(Math.max(-sm.top, Math.min(this.scrollTop, maxHeight - size.scrollerHeight + sm.bottom)));\n this.session.setScrollLeft(Math.max(-sm.left, Math.min(this.scrollLeft, longestLine + 2 * this.$padding - size.scrollerWidth + sm.right)));\n var vScroll = !hideScrollbars && (this.$vScrollBarAlwaysVisible ||\n size.scrollerHeight - maxHeight + scrollPastEnd < 0 || this.scrollTop > sm.top);\n var vScrollChanged = vScrollBefore !== vScroll;\n if (vScrollChanged) {\n this.$vScroll = vScroll;\n this.scrollBarV.setVisible(vScroll);\n }\n var offset = this.scrollTop % this.lineHeight;\n var lineCount = Math.ceil(minHeight / this.lineHeight) - 1;\n var firstRow = Math.max(0, Math.round((this.scrollTop - offset) / this.lineHeight));\n var lastRow = firstRow + lineCount;\n var firstRowScreen, firstRowHeight;\n var lineHeight = this.lineHeight;\n firstRow = session.screenToDocumentRow(firstRow, 0);\n var foldLine = session.getFoldLine(firstRow);\n if (foldLine) {\n firstRow = foldLine.start.row;\n }\n firstRowScreen = session.documentToScreenRow(firstRow, 0);\n firstRowHeight = session.getRowLength(firstRow) * lineHeight;\n lastRow = Math.min(session.screenToDocumentRow(lastRow, 0), session.getLength() - 1);\n minHeight = size.scrollerHeight + session.getRowLength(lastRow) * lineHeight +\n firstRowHeight;\n offset = this.scrollTop - firstRowScreen * lineHeight;\n var changes = 0;\n if (this.layerConfig.width != longestLine || hScrollChanged)\n changes = this.CHANGE_H_SCROLL;\n if (hScrollChanged || vScrollChanged) {\n changes |= this.$updateCachedSize(true, this.gutterWidth, size.width, size.height);\n this._signal(\"scrollbarVisibilityChanged\");\n if (vScrollChanged)\n longestLine = this.$getLongestLine();\n }\n this.layerConfig = {\n width: longestLine,\n padding: this.$padding,\n firstRow: firstRow,\n firstRowScreen: firstRowScreen,\n lastRow: lastRow,\n lineHeight: lineHeight,\n characterWidth: this.characterWidth,\n minHeight: minHeight,\n maxHeight: maxHeight,\n offset: offset,\n gutterOffset: lineHeight ? Math.max(0, Math.ceil((offset + size.height - size.scrollerHeight) / lineHeight)) : 0,\n height: this.$size.scrollerHeight\n };\n if (this.session.$bidiHandler)\n this.session.$bidiHandler.setContentWidth(longestLine - this.$padding);\n return changes;\n };\n VirtualRenderer.prototype.$updateLines = function () {\n if (!this.$changedLines)\n return;\n var firstRow = this.$changedLines.firstRow;\n var lastRow = this.$changedLines.lastRow;\n this.$changedLines = null;\n var layerConfig = this.layerConfig;\n if (firstRow > layerConfig.lastRow + 1) {\n return;\n }\n if (lastRow < layerConfig.firstRow) {\n return;\n }\n if (lastRow === Infinity) {\n if (this.$showGutter)\n this.$gutterLayer.update(layerConfig);\n this.$textLayer.update(layerConfig);\n return;\n }\n this.$textLayer.updateLines(layerConfig, firstRow, lastRow);\n return true;\n };\n VirtualRenderer.prototype.$getLongestLine = function () {\n var charCount = this.session.getScreenWidth();\n if (this.showInvisibles && !this.session.$useWrapMode)\n charCount += 1;\n if (this.$textLayer && charCount > this.$textLayer.MAX_LINE_LENGTH)\n charCount = this.$textLayer.MAX_LINE_LENGTH + 30;\n return Math.max(this.$size.scrollerWidth - 2 * this.$padding, Math.round(charCount * this.characterWidth));\n };\n VirtualRenderer.prototype.updateFrontMarkers = function () {\n this.$markerFront.setMarkers(this.session.getMarkers(true));\n this.$loop.schedule(this.CHANGE_MARKER_FRONT);\n };\n VirtualRenderer.prototype.updateBackMarkers = function () {\n this.$markerBack.setMarkers(this.session.getMarkers());\n this.$loop.schedule(this.CHANGE_MARKER_BACK);\n };\n VirtualRenderer.prototype.addGutterDecoration = function (row, className) {\n this.$gutterLayer.addGutterDecoration(row, className);\n };\n VirtualRenderer.prototype.removeGutterDecoration = function (row, className) {\n this.$gutterLayer.removeGutterDecoration(row, className);\n };\n VirtualRenderer.prototype.updateBreakpoints = function (rows) {\n this.$loop.schedule(this.CHANGE_GUTTER);\n };\n VirtualRenderer.prototype.setAnnotations = function (annotations) {\n this.$gutterLayer.setAnnotations(annotations);\n this.$loop.schedule(this.CHANGE_GUTTER);\n };\n VirtualRenderer.prototype.updateCursor = function () {\n this.$loop.schedule(this.CHANGE_CURSOR);\n };\n VirtualRenderer.prototype.hideCursor = function () {\n this.$cursorLayer.hideCursor();\n };\n VirtualRenderer.prototype.showCursor = function () {\n this.$cursorLayer.showCursor();\n };\n VirtualRenderer.prototype.scrollSelectionIntoView = function (anchor, lead, offset) {\n this.scrollCursorIntoView(anchor, offset);\n this.scrollCursorIntoView(lead, offset);\n };\n VirtualRenderer.prototype.scrollCursorIntoView = function (cursor, offset, $viewMargin) {\n if (this.$size.scrollerHeight === 0)\n return;\n var pos = this.$cursorLayer.getPixelPosition(cursor);\n var newLeft = pos.left;\n var newTop = pos.top;\n var topMargin = $viewMargin && $viewMargin.top || 0;\n var bottomMargin = $viewMargin && $viewMargin.bottom || 0;\n if (this.$scrollAnimation) {\n this.$stopAnimation = true;\n }\n var currentTop = this.$scrollAnimation ? this.session.getScrollTop() : this.scrollTop;\n if (currentTop + topMargin > newTop) {\n if (offset && currentTop + topMargin > newTop + this.lineHeight)\n newTop -= offset * this.$size.scrollerHeight;\n if (newTop === 0)\n newTop = -this.scrollMargin.top;\n this.session.setScrollTop(newTop);\n }\n else if (currentTop + this.$size.scrollerHeight - bottomMargin < newTop + this.lineHeight) {\n if (offset && currentTop + this.$size.scrollerHeight - bottomMargin < newTop - this.lineHeight)\n newTop += offset * this.$size.scrollerHeight;\n this.session.setScrollTop(newTop + this.lineHeight + bottomMargin - this.$size.scrollerHeight);\n }\n var currentLeft = this.scrollLeft;\n var twoCharsWidth = 2 * this.layerConfig.characterWidth;\n if (newLeft - twoCharsWidth < currentLeft) {\n newLeft -= twoCharsWidth;\n if (newLeft < this.$padding + twoCharsWidth) {\n newLeft = -this.scrollMargin.left;\n }\n this.session.setScrollLeft(newLeft);\n }\n else {\n newLeft += twoCharsWidth;\n if (currentLeft + this.$size.scrollerWidth < newLeft + this.characterWidth) {\n this.session.setScrollLeft(Math.round(newLeft + this.characterWidth - this.$size.scrollerWidth));\n }\n else if (currentLeft <= this.$padding && newLeft - currentLeft < this.characterWidth) {\n this.session.setScrollLeft(0);\n }\n }\n };\n VirtualRenderer.prototype.getScrollTop = function () {\n return this.session.getScrollTop();\n };\n VirtualRenderer.prototype.getScrollLeft = function () {\n return this.session.getScrollLeft();\n };\n VirtualRenderer.prototype.getScrollTopRow = function () {\n return this.scrollTop / this.lineHeight;\n };\n VirtualRenderer.prototype.getScrollBottomRow = function () {\n return Math.max(0, Math.floor((this.scrollTop + this.$size.scrollerHeight) / this.lineHeight) - 1);\n };\n VirtualRenderer.prototype.scrollToRow = function (row) {\n this.session.setScrollTop(row * this.lineHeight);\n };\n VirtualRenderer.prototype.alignCursor = function (cursor, alignment) {\n if (typeof cursor == \"number\")\n cursor = { row: cursor, column: 0 };\n var pos = this.$cursorLayer.getPixelPosition(cursor);\n var h = this.$size.scrollerHeight - this.lineHeight;\n var offset = pos.top - h * (alignment || 0);\n this.session.setScrollTop(offset);\n return offset;\n };\n VirtualRenderer.prototype.$calcSteps = function (fromValue, toValue) {\n var i = 0;\n var l = this.STEPS;\n var steps = [];\n var func = function (t, x_min, dx) {\n return dx * (Math.pow(t - 1, 3) + 1) + x_min;\n };\n for (i = 0; i < l; ++i)\n steps.push(func(i / this.STEPS, fromValue, toValue - fromValue));\n return steps;\n };\n VirtualRenderer.prototype.scrollToLine = function (line, center, animate, callback) {\n var pos = this.$cursorLayer.getPixelPosition({ row: line, column: 0 });\n var offset = pos.top;\n if (center)\n offset -= this.$size.scrollerHeight / 2;\n var initialScroll = this.scrollTop;\n this.session.setScrollTop(offset);\n if (animate !== false)\n this.animateScrolling(initialScroll, callback);\n };\n VirtualRenderer.prototype.animateScrolling = function (fromValue, callback) {\n var toValue = this.scrollTop;\n if (!this.$animatedScroll)\n return;\n var _self = this;\n if (fromValue == toValue)\n return;\n if (this.$scrollAnimation) {\n var oldSteps = this.$scrollAnimation.steps;\n if (oldSteps.length) {\n fromValue = oldSteps[0];\n if (fromValue == toValue)\n return;\n }\n }\n var steps = _self.$calcSteps(fromValue, toValue);\n this.$scrollAnimation = { from: fromValue, to: toValue, steps: steps };\n clearInterval(this.$timer);\n _self.session.setScrollTop(steps.shift());\n _self.session.$scrollTop = toValue;\n function endAnimation() {\n _self.$timer = clearInterval(_self.$timer);\n _self.$scrollAnimation = null;\n _self.$stopAnimation = false;\n callback && callback();\n }\n this.$timer = setInterval(function () {\n if (_self.$stopAnimation) {\n endAnimation();\n return;\n }\n if (!_self.session)\n return clearInterval(_self.$timer);\n if (steps.length) {\n _self.session.setScrollTop(steps.shift());\n _self.session.$scrollTop = toValue;\n }\n else if (toValue != null) {\n _self.session.$scrollTop = -1;\n _self.session.setScrollTop(toValue);\n toValue = null;\n }\n else {\n endAnimation();\n }\n }, 10);\n };\n VirtualRenderer.prototype.scrollToY = function (scrollTop) {\n if (this.scrollTop !== scrollTop) {\n this.$loop.schedule(this.CHANGE_SCROLL);\n this.scrollTop = scrollTop;\n }\n };\n VirtualRenderer.prototype.scrollToX = function (scrollLeft) {\n if (this.scrollLeft !== scrollLeft)\n this.scrollLeft = scrollLeft;\n this.$loop.schedule(this.CHANGE_H_SCROLL);\n };\n VirtualRenderer.prototype.scrollTo = function (x, y) {\n this.session.setScrollTop(y);\n this.session.setScrollLeft(x);\n };\n VirtualRenderer.prototype.scrollBy = function (deltaX, deltaY) {\n deltaY && this.session.setScrollTop(this.session.getScrollTop() + deltaY);\n deltaX && this.session.setScrollLeft(this.session.getScrollLeft() + deltaX);\n };\n VirtualRenderer.prototype.isScrollableBy = function (deltaX, deltaY) {\n if (deltaY < 0 && this.session.getScrollTop() >= 1 - this.scrollMargin.top)\n return true;\n if (deltaY > 0 && this.session.getScrollTop() + this.$size.scrollerHeight\n - this.layerConfig.maxHeight < -1 + this.scrollMargin.bottom)\n return true;\n if (deltaX < 0 && this.session.getScrollLeft() >= 1 - this.scrollMargin.left)\n return true;\n if (deltaX > 0 && this.session.getScrollLeft() + this.$size.scrollerWidth\n - this.layerConfig.width < -1 + this.scrollMargin.right)\n return true;\n };\n VirtualRenderer.prototype.pixelToScreenCoordinates = function (x, y) {\n var canvasPos;\n if (this.$hasCssTransforms) {\n canvasPos = { top: 0, left: 0 };\n var p = this.$fontMetrics.transformCoordinates([x, y]);\n x = p[1] - this.gutterWidth - this.margin.left;\n y = p[0];\n }\n else {\n canvasPos = this.scroller.getBoundingClientRect();\n }\n var offsetX = x + this.scrollLeft - canvasPos.left - this.$padding;\n var offset = offsetX / this.characterWidth;\n var row = Math.floor((y + this.scrollTop - canvasPos.top) / this.lineHeight);\n var col = this.$blockCursor ? Math.floor(offset) : Math.round(offset);\n return { row: row, column: col, side: offset - col > 0 ? 1 : -1, offsetX: offsetX };\n };\n VirtualRenderer.prototype.screenToTextCoordinates = function (x, y) {\n var canvasPos;\n if (this.$hasCssTransforms) {\n canvasPos = { top: 0, left: 0 };\n var p = this.$fontMetrics.transformCoordinates([x, y]);\n x = p[1] - this.gutterWidth - this.margin.left;\n y = p[0];\n }\n else {\n canvasPos = this.scroller.getBoundingClientRect();\n }\n var offsetX = x + this.scrollLeft - canvasPos.left - this.$padding;\n var offset = offsetX / this.characterWidth;\n var col = this.$blockCursor ? Math.floor(offset) : Math.round(offset);\n var row = Math.floor((y + this.scrollTop - canvasPos.top) / this.lineHeight);\n return this.session.screenToDocumentPosition(row, Math.max(col, 0), offsetX);\n };\n VirtualRenderer.prototype.textToScreenCoordinates = function (row, column) {\n var canvasPos = this.scroller.getBoundingClientRect();\n var pos = this.session.documentToScreenPosition(row, column);\n var x = this.$padding + (this.session.$bidiHandler.isBidiRow(pos.row, row)\n ? this.session.$bidiHandler.getPosLeft(pos.column)\n : Math.round(pos.column * this.characterWidth));\n var y = pos.row * this.lineHeight;\n return {\n pageX: canvasPos.left + x - this.scrollLeft,\n pageY: canvasPos.top + y - this.scrollTop\n };\n };\n VirtualRenderer.prototype.visualizeFocus = function () {\n dom.addCssClass(this.container, \"ace_focus\");\n };\n VirtualRenderer.prototype.visualizeBlur = function () {\n dom.removeCssClass(this.container, \"ace_focus\");\n };\n VirtualRenderer.prototype.showComposition = function (composition) {\n this.$composition = composition;\n if (!composition.cssText) {\n composition.cssText = this.textarea.style.cssText;\n }\n if (composition.useTextareaForIME == undefined)\n composition.useTextareaForIME = this.$useTextareaForIME;\n if (this.$useTextareaForIME) {\n dom.addCssClass(this.textarea, \"ace_composition\");\n this.textarea.style.cssText = \"\";\n this.$moveTextAreaToCursor();\n this.$cursorLayer.element.style.display = \"none\";\n }\n else {\n composition.markerId = this.session.addMarker(composition.markerRange, \"ace_composition_marker\", \"text\");\n }\n };\n VirtualRenderer.prototype.setCompositionText = function (text) {\n var cursor = this.session.selection.cursor;\n this.addToken(text, \"composition_placeholder\", cursor.row, cursor.column);\n this.$moveTextAreaToCursor();\n };\n VirtualRenderer.prototype.hideComposition = function () {\n if (!this.$composition)\n return;\n if (this.$composition.markerId)\n this.session.removeMarker(this.$composition.markerId);\n dom.removeCssClass(this.textarea, \"ace_composition\");\n this.textarea.style.cssText = this.$composition.cssText;\n var cursor = this.session.selection.cursor;\n this.removeExtraToken(cursor.row, cursor.column);\n this.$composition = null;\n this.$cursorLayer.element.style.display = \"\";\n };\n VirtualRenderer.prototype.setGhostText = function (text, position) {\n var cursor = this.session.selection.cursor;\n var insertPosition = position || { row: cursor.row, column: cursor.column };\n this.removeGhostText();\n var textLines = text.split(\"\\n\");\n this.addToken(textLines[0], \"ghost_text\", insertPosition.row, insertPosition.column);\n this.$ghostText = {\n text: text,\n position: {\n row: insertPosition.row,\n column: insertPosition.column\n }\n };\n if (textLines.length > 1) {\n this.$ghostTextWidget = {\n text: textLines.slice(1).join(\"\\n\"),\n row: insertPosition.row,\n column: insertPosition.column,\n className: \"ace_ghost_text\"\n };\n this.session.widgetManager.addLineWidget(this.$ghostTextWidget);\n var pixelPosition = this.$cursorLayer.getPixelPosition(insertPosition, true);\n var el = this.container;\n var height = el.getBoundingClientRect().height;\n var ghostTextHeight = textLines.length * this.lineHeight;\n var fitsY = ghostTextHeight < height - pixelPosition.top;\n if (fitsY)\n return;\n if (ghostTextHeight < height) {\n this.scrollBy(0, (textLines.length - 1) * this.lineHeight);\n }\n else {\n this.scrollBy(0, pixelPosition.top);\n }\n }\n };\n VirtualRenderer.prototype.removeGhostText = function () {\n if (!this.$ghostText)\n return;\n var position = this.$ghostText.position;\n this.removeExtraToken(position.row, position.column);\n if (this.$ghostTextWidget) {\n this.session.widgetManager.removeLineWidget(this.$ghostTextWidget);\n this.$ghostTextWidget = null;\n }\n this.$ghostText = null;\n };\n VirtualRenderer.prototype.addToken = function (text, type, row, column) {\n var session = this.session;\n session.bgTokenizer.lines[row] = null;\n var newToken = { type: type, value: text };\n var tokens = session.getTokens(row);\n if (column == null || !tokens.length) {\n tokens.push(newToken);\n }\n else {\n var l = 0;\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n l += token.value.length;\n if (column <= l) {\n var diff = token.value.length - (l - column);\n var before = token.value.slice(0, diff);\n var after = token.value.slice(diff);\n tokens.splice(i, 1, { type: token.type, value: before }, newToken, { type: token.type, value: after });\n break;\n }\n }\n }\n this.updateLines(row, row);\n };\n VirtualRenderer.prototype.removeExtraToken = function (row, column) {\n this.session.bgTokenizer.lines[row] = null;\n this.updateLines(row, row);\n };\n VirtualRenderer.prototype.setTheme = function (theme, cb) {\n var _self = this;\n this.$themeId = theme;\n _self._dispatchEvent('themeChange', { theme: theme });\n if (!theme || typeof theme == \"string\") {\n var moduleName = theme || this.$options.theme.initialValue;\n config.loadModule([\"theme\", moduleName], afterLoad);\n }\n else {\n afterLoad(theme);\n }\n function afterLoad(module) {\n if (_self.$themeId != theme)\n return cb && cb();\n if (!module || !module.cssClass)\n throw new Error(\"couldn't load module \" + theme + \" or it didn't call define\");\n if (module.$id)\n _self.$themeId = module.$id;\n dom.importCssString(module.cssText, module.cssClass, _self.container);\n if (_self.theme)\n dom.removeCssClass(_self.container, _self.theme.cssClass);\n var padding = \"padding\" in module ? module.padding\n : \"padding\" in (_self.theme || {}) ? 4 : _self.$padding;\n if (_self.$padding && padding != _self.$padding)\n _self.setPadding(padding);\n _self.$theme = module.cssClass;\n _self.theme = module;\n dom.addCssClass(_self.container, module.cssClass);\n dom.setCssClass(_self.container, \"ace_dark\", module.isDark);\n if (_self.$size) {\n _self.$size.width = 0;\n _self.$updateSizeAsync();\n }\n _self._dispatchEvent('themeLoaded', { theme: module });\n cb && cb();\n }\n };\n VirtualRenderer.prototype.getTheme = function () {\n return this.$themeId;\n };\n VirtualRenderer.prototype.setStyle = function (style, include) {\n dom.setCssClass(this.container, style, include !== false);\n };\n VirtualRenderer.prototype.unsetStyle = function (style) {\n dom.removeCssClass(this.container, style);\n };\n VirtualRenderer.prototype.setCursorStyle = function (style) {\n dom.setStyle(this.scroller.style, \"cursor\", style);\n };\n VirtualRenderer.prototype.setMouseCursor = function (cursorStyle) {\n dom.setStyle(this.scroller.style, \"cursor\", cursorStyle);\n };\n VirtualRenderer.prototype.attachToShadowRoot = function () {\n dom.importCssString(editorCss, \"ace_editor.css\", this.container);\n };\n VirtualRenderer.prototype.destroy = function () {\n this.freeze();\n this.$fontMetrics.destroy();\n this.$cursorLayer.destroy();\n this.removeAllListeners();\n this.container.textContent = \"\";\n this.setOption(\"useResizeObserver\", false);\n };\n VirtualRenderer.prototype.$updateCustomScrollbar = function (val) {\n var _self = this;\n this.$horizScroll = this.$vScroll = null;\n this.scrollBarV.element.remove();\n this.scrollBarH.element.remove();\n if (this.$scrollDecorator) {\n delete this.$scrollDecorator;\n }\n if (val === true) {\n this.scrollBarV = new VScrollBarCustom(this.container, this);\n this.scrollBarH = new HScrollBarCustom(this.container, this);\n this.scrollBarV.setHeight(this.$size.scrollerHeight);\n this.scrollBarH.setWidth(this.$size.scrollerWidth);\n this.scrollBarV.addEventListener(\"scroll\", function (e) {\n if (!_self.$scrollAnimation)\n _self.session.setScrollTop(e.data - _self.scrollMargin.top);\n });\n this.scrollBarH.addEventListener(\"scroll\", function (e) {\n if (!_self.$scrollAnimation)\n _self.session.setScrollLeft(e.data - _self.scrollMargin.left);\n });\n this.$scrollDecorator = new Decorator(this.scrollBarV, this);\n this.$scrollDecorator.$updateDecorators();\n }\n else {\n this.scrollBarV = new VScrollBar(this.container, this);\n this.scrollBarH = new HScrollBar(this.container, this);\n this.scrollBarV.addEventListener(\"scroll\", function (e) {\n if (!_self.$scrollAnimation)\n _self.session.setScrollTop(e.data - _self.scrollMargin.top);\n });\n this.scrollBarH.addEventListener(\"scroll\", function (e) {\n if (!_self.$scrollAnimation)\n _self.session.setScrollLeft(e.data - _self.scrollMargin.left);\n });\n }\n };\n VirtualRenderer.prototype.$addResizeObserver = function () {\n if (!window.ResizeObserver || this.$resizeObserver)\n return;\n var self = this;\n this.$resizeTimer = lang.delayedCall(function () {\n if (!self.destroyed)\n self.onResize();\n }, 50);\n this.$resizeObserver = new window.ResizeObserver(function (e) {\n var w = e[0].contentRect.width;\n var h = e[0].contentRect.height;\n if (Math.abs(self.$size.width - w) > 1\n || Math.abs(self.$size.height - h) > 1) {\n self.$resizeTimer.delay();\n }\n else {\n self.$resizeTimer.cancel();\n }\n });\n this.$resizeObserver.observe(this.container);\n };\n return VirtualRenderer;\n}());\nVirtualRenderer.prototype.CHANGE_CURSOR = 1;\nVirtualRenderer.prototype.CHANGE_MARKER = 2;\nVirtualRenderer.prototype.CHANGE_GUTTER = 4;\nVirtualRenderer.prototype.CHANGE_SCROLL = 8;\nVirtualRenderer.prototype.CHANGE_LINES = 16;\nVirtualRenderer.prototype.CHANGE_TEXT = 32;\nVirtualRenderer.prototype.CHANGE_SIZE = 64;\nVirtualRenderer.prototype.CHANGE_MARKER_BACK = 128;\nVirtualRenderer.prototype.CHANGE_MARKER_FRONT = 256;\nVirtualRenderer.prototype.CHANGE_FULL = 512;\nVirtualRenderer.prototype.CHANGE_H_SCROLL = 1024;\nVirtualRenderer.prototype.$changes = 0;\nVirtualRenderer.prototype.$padding = null;\nVirtualRenderer.prototype.$frozen = false;\nVirtualRenderer.prototype.STEPS = 8;\noop.implement(VirtualRenderer.prototype, EventEmitter);\nconfig.defineOptions(VirtualRenderer.prototype, \"renderer\", {\n useResizeObserver: {\n set: function (value) {\n if (!value && this.$resizeObserver) {\n this.$resizeObserver.disconnect();\n this.$resizeTimer.cancel();\n this.$resizeTimer = this.$resizeObserver = null;\n }\n else if (value && !this.$resizeObserver) {\n this.$addResizeObserver();\n }\n }\n },\n animatedScroll: { initialValue: false },\n showInvisibles: {\n set: function (value) {\n if (this.$textLayer.setShowInvisibles(value))\n this.$loop.schedule(this.CHANGE_TEXT);\n },\n initialValue: false\n },\n showPrintMargin: {\n set: function () { this.$updatePrintMargin(); },\n initialValue: true\n },\n printMarginColumn: {\n set: function () { this.$updatePrintMargin(); },\n initialValue: 80\n },\n printMargin: {\n set: function (val) {\n if (typeof val == \"number\")\n this.$printMarginColumn = val;\n this.$showPrintMargin = !!val;\n this.$updatePrintMargin();\n },\n get: function () {\n return this.$showPrintMargin && this.$printMarginColumn;\n }\n },\n showGutter: {\n set: function (show) {\n this.$gutter.style.display = show ? \"block\" : \"none\";\n this.$loop.schedule(this.CHANGE_FULL);\n this.onGutterResize();\n },\n initialValue: true\n },\n useSvgGutterIcons: {\n set: function (value) {\n this.$gutterLayer.$useSvgGutterIcons = value;\n },\n initialValue: false\n },\n showFoldedAnnotations: {\n set: function (value) {\n this.$gutterLayer.$showFoldedAnnotations = value;\n },\n initialValue: false\n },\n fadeFoldWidgets: {\n set: function (show) {\n dom.setCssClass(this.$gutter, \"ace_fade-fold-widgets\", show);\n },\n initialValue: false\n },\n showFoldWidgets: {\n set: function (show) {\n this.$gutterLayer.setShowFoldWidgets(show);\n this.$loop.schedule(this.CHANGE_GUTTER);\n },\n initialValue: true\n },\n displayIndentGuides: {\n set: function (show) {\n if (this.$textLayer.setDisplayIndentGuides(show))\n this.$loop.schedule(this.CHANGE_TEXT);\n },\n initialValue: true\n },\n highlightIndentGuides: {\n set: function (show) {\n if (this.$textLayer.setHighlightIndentGuides(show) == true) {\n this.$textLayer.$highlightIndentGuide();\n }\n else {\n this.$textLayer.$clearActiveIndentGuide(this.$textLayer.$lines.cells);\n }\n },\n initialValue: true\n },\n highlightGutterLine: {\n set: function (shouldHighlight) {\n this.$gutterLayer.setHighlightGutterLine(shouldHighlight);\n this.$loop.schedule(this.CHANGE_GUTTER);\n },\n initialValue: true\n },\n hScrollBarAlwaysVisible: {\n set: function (val) {\n if (!this.$hScrollBarAlwaysVisible || !this.$horizScroll)\n this.$loop.schedule(this.CHANGE_SCROLL);\n },\n initialValue: false\n },\n vScrollBarAlwaysVisible: {\n set: function (val) {\n if (!this.$vScrollBarAlwaysVisible || !this.$vScroll)\n this.$loop.schedule(this.CHANGE_SCROLL);\n },\n initialValue: false\n },\n fontSize: {\n set: function (size) {\n if (typeof size == \"number\")\n size = size + \"px\";\n this.container.style.fontSize = size;\n this.updateFontSize();\n },\n initialValue: 12\n },\n fontFamily: {\n set: function (name) {\n this.container.style.fontFamily = name;\n this.updateFontSize();\n }\n },\n maxLines: {\n set: function (val) {\n this.updateFull();\n }\n },\n minLines: {\n set: function (val) {\n if (!(this.$minLines < 0x1ffffffffffff))\n this.$minLines = 0;\n this.updateFull();\n }\n },\n maxPixelHeight: {\n set: function (val) {\n this.updateFull();\n },\n initialValue: 0\n },\n scrollPastEnd: {\n set: function (val) {\n val = +val || 0;\n if (this.$scrollPastEnd == val)\n return;\n this.$scrollPastEnd = val;\n this.$loop.schedule(this.CHANGE_SCROLL);\n },\n initialValue: 0,\n handlesSet: true\n },\n fixedWidthGutter: {\n set: function (val) {\n this.$gutterLayer.$fixedWidth = !!val;\n this.$loop.schedule(this.CHANGE_GUTTER);\n }\n },\n customScrollbar: {\n set: function (val) {\n this.$updateCustomScrollbar(val);\n },\n initialValue: false\n },\n theme: {\n set: function (val) { this.setTheme(val); },\n get: function () { return this.$themeId || this.theme; },\n initialValue: \"./theme/textmate\",\n handlesSet: true\n },\n hasCssTransforms: {},\n useTextareaForIME: {\n initialValue: !useragent.isMobile && !useragent.isIE\n }\n});\nexports.VirtualRenderer = VirtualRenderer;\n\n});\n\nace.define(\"ace/worker/worker_client\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/net\",\"ace/lib/event_emitter\",\"ace/config\"], function(require, exports, module) {\n\"use strict\";\n\nvar oop = require(\"../lib/oop\");\nvar net = require(\"../lib/net\");\nvar EventEmitter = require(\"../lib/event_emitter\").EventEmitter;\nvar config = require(\"../config\");\n\nfunction $workerBlob(workerUrl) {\n var script = \"importScripts('\" + net.qualifyURL(workerUrl) + \"');\";\n try {\n return new Blob([script], {\"type\": \"application/javascript\"});\n } catch (e) { // Backwards-compatibility\n var BlobBuilder = window.BlobBuilder || window.WebKitBlobBuilder || window.MozBlobBuilder;\n var blobBuilder = new BlobBuilder();\n blobBuilder.append(script);\n return blobBuilder.getBlob(\"application/javascript\");\n }\n}\n\nfunction createWorker(workerUrl) {\n if (typeof Worker == \"undefined\")\n return { postMessage: function() {}, terminate: function() {} };\n if (config.get(\"loadWorkerFromBlob\")) {\n var blob = $workerBlob(workerUrl);\n var URL = window.URL || window.webkitURL;\n var blobURL = URL.createObjectURL(blob);\n return new Worker(blobURL);\n }\n return new Worker(workerUrl);\n}\n\nvar WorkerClient = function(worker) {\n if (!worker.postMessage)\n worker = this.$createWorkerFromOldConfig.apply(this, arguments);\n\n this.$worker = worker;\n this.$sendDeltaQueue = this.$sendDeltaQueue.bind(this);\n this.changeListener = this.changeListener.bind(this);\n this.onMessage = this.onMessage.bind(this);\n\n this.callbackId = 1;\n this.callbacks = {};\n\n this.$worker.onmessage = this.onMessage;\n};\n\n(function(){\n\n oop.implement(this, EventEmitter);\n\n this.$createWorkerFromOldConfig = function(topLevelNamespaces, mod, classname, workerUrl, importScripts) {\n if (require.nameToUrl && !require.toUrl)\n require.toUrl = require.nameToUrl;\n\n if (config.get(\"packaged\") || !require.toUrl) {\n workerUrl = workerUrl || config.moduleUrl(mod, \"worker\");\n } else {\n var normalizePath = this.$normalizePath;\n workerUrl = workerUrl || normalizePath(require.toUrl(\"ace/worker/worker.js\", null, \"_\"));\n\n var tlns = {};\n topLevelNamespaces.forEach(function(ns) {\n tlns[ns] = normalizePath(require.toUrl(ns, null, \"_\").replace(/(\\.js)?(\\?.*)?$/, \"\"));\n });\n }\n\n this.$worker = createWorker(workerUrl);\n if (importScripts) {\n this.send(\"importScripts\", importScripts);\n }\n this.$worker.postMessage({\n init : true,\n tlns : tlns,\n module : mod,\n classname : classname\n });\n return this.$worker;\n };\n\n this.onMessage = function(e) {\n var msg = e.data;\n switch (msg.type) {\n case \"event\":\n this._signal(msg.name, {data: msg.data});\n break;\n case \"call\":\n var callback = this.callbacks[msg.id];\n if (callback) {\n callback(msg.data);\n delete this.callbacks[msg.id];\n }\n break;\n case \"error\":\n this.reportError(msg.data);\n break;\n case \"log\":\n window.console && console.log && console.log.apply(console, msg.data);\n break;\n }\n };\n \n this.reportError = function(err) {\n window.console && console.error && console.error(err);\n };\n\n this.$normalizePath = function(path) {\n return net.qualifyURL(path);\n };\n\n this.terminate = function() {\n this._signal(\"terminate\", {});\n this.deltaQueue = null;\n this.$worker.terminate();\n this.$worker.onerror = function(e) {\n e.preventDefault();\n };\n this.$worker = null;\n if (this.$doc)\n this.$doc.off(\"change\", this.changeListener);\n this.$doc = null;\n };\n\n this.send = function(cmd, args) {\n this.$worker.postMessage({command: cmd, args: args});\n };\n\n this.call = function(cmd, args, callback) {\n if (callback) {\n var id = this.callbackId++;\n this.callbacks[id] = callback;\n args.push(id);\n }\n this.send(cmd, args);\n };\n\n this.emit = function(event, data) {\n try {\n if (data.data && data.data.err)\n data.data.err = {message: data.data.err.message, stack: data.data.err.stack, code: data.data.err.code};\n this.$worker && this.$worker.postMessage({event: event, data: {data: data.data}});\n }\n catch(ex) {\n console.error(ex.stack);\n }\n };\n\n this.attachToDocument = function(doc) {\n if (this.$doc)\n this.terminate();\n\n this.$doc = doc;\n this.call(\"setValue\", [doc.getValue()]);\n doc.on(\"change\", this.changeListener, true);\n };\n\n this.changeListener = function(delta) {\n if (!this.deltaQueue) {\n this.deltaQueue = [];\n setTimeout(this.$sendDeltaQueue, 0);\n }\n if (delta.action == \"insert\")\n this.deltaQueue.push(delta.start, delta.lines);\n else\n this.deltaQueue.push(delta.start, delta.end);\n };\n\n this.$sendDeltaQueue = function() {\n var q = this.deltaQueue;\n if (!q) return;\n this.deltaQueue = null;\n if (q.length > 50 && q.length > this.$doc.getLength() >> 1) {\n this.call(\"setValue\", [this.$doc.getValue()]);\n } else\n this.emit(\"change\", {data: q});\n };\n\n}).call(WorkerClient.prototype);\n\n\nvar UIWorkerClient = function(topLevelNamespaces, mod, classname) {\n var main = null;\n var emitSync = false;\n var sender = Object.create(EventEmitter);\n\n var messageBuffer = [];\n var workerClient = new WorkerClient({\n messageBuffer: messageBuffer,\n terminate: function() {},\n postMessage: function(e) {\n messageBuffer.push(e);\n if (!main) return;\n if (emitSync)\n setTimeout(processNext);\n else\n processNext();\n }\n });\n\n workerClient.setEmitSync = function(val) { emitSync = val; };\n\n var processNext = function() {\n var msg = messageBuffer.shift();\n if (msg.command)\n main[msg.command].apply(main, msg.args);\n else if (msg.event)\n sender._signal(msg.event, msg.data);\n };\n\n sender.postMessage = function(msg) {\n workerClient.onMessage({data: msg});\n };\n sender.callback = function(data, callbackId) {\n this.postMessage({type: \"call\", id: callbackId, data: data});\n };\n sender.emit = function(name, data) {\n this.postMessage({type: \"event\", name: name, data: data});\n };\n\n config.loadModule([\"worker\", mod], function(Main) {\n main = new Main[classname](sender);\n while (messageBuffer.length)\n processNext();\n });\n\n return workerClient;\n};\n\nexports.UIWorkerClient = UIWorkerClient;\nexports.WorkerClient = WorkerClient;\nexports.createWorker = createWorker;\n\n\n});\n\nace.define(\"ace/placeholder\",[\"require\",\"exports\",\"module\",\"ace/range\",\"ace/lib/event_emitter\",\"ace/lib/oop\"], function(require, exports, module){\"use strict\";\nvar Range = require(\"./range\").Range;\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar oop = require(\"./lib/oop\");\nvar PlaceHolder = /** @class */ (function () {\n function PlaceHolder(session, length, pos, others, mainClass, othersClass) {\n var _self = this;\n this.length = length;\n this.session = session;\n this.doc = session.getDocument();\n this.mainClass = mainClass;\n this.othersClass = othersClass;\n this.$onUpdate = this.onUpdate.bind(this);\n this.doc.on(\"change\", this.$onUpdate, true);\n this.$others = others;\n this.$onCursorChange = function () {\n setTimeout(function () {\n _self.onCursorChange();\n });\n };\n this.$pos = pos;\n var undoStack = session.getUndoManager().$undoStack || session.getUndoManager().$undostack || { length: -1 };\n this.$undoStackDepth = undoStack.length;\n this.setup();\n session.selection.on(\"changeCursor\", this.$onCursorChange);\n }\n PlaceHolder.prototype.setup = function () {\n var _self = this;\n var doc = this.doc;\n var session = this.session;\n this.selectionBefore = session.selection.toJSON();\n if (session.selection.inMultiSelectMode)\n session.selection.toSingleRange();\n this.pos = doc.createAnchor(this.$pos.row, this.$pos.column);\n var pos = this.pos;\n pos.$insertRight = true;\n pos.detach();\n pos.markerId = session.addMarker(new Range(pos.row, pos.column, pos.row, pos.column + this.length), this.mainClass, null, false);\n this.others = [];\n this.$others.forEach(function (other) {\n var anchor = doc.createAnchor(other.row, other.column);\n anchor.$insertRight = true;\n anchor.detach();\n _self.others.push(anchor);\n });\n session.setUndoSelect(false);\n };\n PlaceHolder.prototype.showOtherMarkers = function () {\n if (this.othersActive)\n return;\n var session = this.session;\n var _self = this;\n this.othersActive = true;\n this.others.forEach(function (anchor) {\n anchor.markerId = session.addMarker(new Range(anchor.row, anchor.column, anchor.row, anchor.column + _self.length), _self.othersClass, null, false);\n });\n };\n PlaceHolder.prototype.hideOtherMarkers = function () {\n if (!this.othersActive)\n return;\n this.othersActive = false;\n for (var i = 0; i < this.others.length; i++) {\n this.session.removeMarker(this.others[i].markerId);\n }\n };\n PlaceHolder.prototype.onUpdate = function (delta) {\n if (this.$updating)\n return this.updateAnchors(delta);\n var range = delta;\n if (range.start.row !== range.end.row)\n return;\n if (range.start.row !== this.pos.row)\n return;\n this.$updating = true;\n var lengthDiff = delta.action === \"insert\" ? range.end.column - range.start.column : range.start.column - range.end.column;\n var inMainRange = range.start.column >= this.pos.column && range.start.column <= this.pos.column + this.length + 1;\n var distanceFromStart = range.start.column - this.pos.column;\n this.updateAnchors(delta);\n if (inMainRange)\n this.length += lengthDiff;\n if (inMainRange && !this.session.$fromUndo) {\n if (delta.action === 'insert') {\n for (var i = this.others.length - 1; i >= 0; i--) {\n var otherPos = this.others[i];\n var newPos = { row: otherPos.row, column: otherPos.column + distanceFromStart };\n this.doc.insertMergedLines(newPos, delta.lines);\n }\n }\n else if (delta.action === 'remove') {\n for (var i = this.others.length - 1; i >= 0; i--) {\n var otherPos = this.others[i];\n var newPos = { row: otherPos.row, column: otherPos.column + distanceFromStart };\n this.doc.remove(new Range(newPos.row, newPos.column, newPos.row, newPos.column - lengthDiff));\n }\n }\n }\n this.$updating = false;\n this.updateMarkers();\n };\n PlaceHolder.prototype.updateAnchors = function (delta) {\n this.pos.onChange(delta);\n for (var i = this.others.length; i--;)\n this.others[i].onChange(delta);\n this.updateMarkers();\n };\n PlaceHolder.prototype.updateMarkers = function () {\n if (this.$updating)\n return;\n var _self = this;\n var session = this.session;\n var updateMarker = function (pos, className) {\n session.removeMarker(pos.markerId);\n pos.markerId = session.addMarker(new Range(pos.row, pos.column, pos.row, pos.column + _self.length), className, null, false);\n };\n updateMarker(this.pos, this.mainClass);\n for (var i = this.others.length; i--;)\n updateMarker(this.others[i], this.othersClass);\n };\n PlaceHolder.prototype.onCursorChange = function (event) {\n if (this.$updating || !this.session)\n return;\n var pos = this.session.selection.getCursor();\n if (pos.row === this.pos.row && pos.column >= this.pos.column && pos.column <= this.pos.column + this.length) {\n this.showOtherMarkers();\n this._emit(\"cursorEnter\", event);\n }\n else {\n this.hideOtherMarkers();\n this._emit(\"cursorLeave\", event);\n }\n };\n PlaceHolder.prototype.detach = function () {\n this.session.removeMarker(this.pos && this.pos.markerId);\n this.hideOtherMarkers();\n this.doc.off(\"change\", this.$onUpdate);\n this.session.selection.off(\"changeCursor\", this.$onCursorChange);\n this.session.setUndoSelect(true);\n this.session = null;\n };\n PlaceHolder.prototype.cancel = function () {\n if (this.$undoStackDepth === -1)\n return;\n var undoManager = this.session.getUndoManager();\n var undosRequired = (undoManager.$undoStack || undoManager.$undostack).length - this.$undoStackDepth;\n for (var i = 0; i < undosRequired; i++) {\n undoManager.undo(this.session, true);\n }\n if (this.selectionBefore)\n this.session.selection.fromJSON(this.selectionBefore);\n };\n return PlaceHolder;\n}());\noop.implement(PlaceHolder.prototype, EventEmitter);\nexports.PlaceHolder = PlaceHolder;\n\n});\n\nace.define(\"ace/mouse/multi_select_handler\",[\"require\",\"exports\",\"module\",\"ace/lib/event\",\"ace/lib/useragent\"], function(require, exports, module){var event = require(\"../lib/event\");\nvar useragent = require(\"../lib/useragent\");\nfunction isSamePoint(p1, p2) {\n return p1.row == p2.row && p1.column == p2.column;\n}\nfunction onMouseDown(e) {\n var ev = e.domEvent;\n var alt = ev.altKey;\n var shift = ev.shiftKey;\n var ctrl = ev.ctrlKey;\n var accel = e.getAccelKey();\n var button = e.getButton();\n if (ctrl && useragent.isMac)\n button = ev.button;\n if (e.editor.inMultiSelectMode && button == 2) {\n e.editor.textInput.onContextMenu(e.domEvent);\n return;\n }\n if (!ctrl && !alt && !accel) {\n if (button === 0 && e.editor.inMultiSelectMode)\n e.editor.exitMultiSelectMode();\n return;\n }\n if (button !== 0)\n return;\n var editor = e.editor;\n var selection = editor.selection;\n var isMultiSelect = editor.inMultiSelectMode;\n var pos = e.getDocumentPosition();\n var cursor = selection.getCursor();\n var inSelection = e.inSelection() || (selection.isEmpty() && isSamePoint(pos, cursor));\n var mouseX = e.x, mouseY = e.y;\n var onMouseSelection = function (e) {\n mouseX = e.clientX;\n mouseY = e.clientY;\n };\n var session = editor.session;\n var screenAnchor = editor.renderer.pixelToScreenCoordinates(mouseX, mouseY);\n var screenCursor = screenAnchor;\n var selectionMode;\n if (editor.$mouseHandler.$enableJumpToDef) {\n if (ctrl && alt || accel && alt)\n selectionMode = shift ? \"block\" : \"add\";\n else if (alt && editor.$blockSelectEnabled)\n selectionMode = \"block\";\n }\n else {\n if (accel && !alt) {\n selectionMode = \"add\";\n if (!isMultiSelect && shift)\n return;\n }\n else if (alt && editor.$blockSelectEnabled) {\n selectionMode = \"block\";\n }\n }\n if (selectionMode && useragent.isMac && ev.ctrlKey) {\n editor.$mouseHandler.cancelContextMenu();\n }\n if (selectionMode == \"add\") {\n if (!isMultiSelect && inSelection)\n return; // dragging\n if (!isMultiSelect) {\n var range = selection.toOrientedRange();\n editor.addSelectionMarker(range);\n }\n var oldRange = selection.rangeList.rangeAtPoint(pos);\n editor.inVirtualSelectionMode = true;\n if (shift) {\n oldRange = null;\n range = selection.ranges[0] || range;\n editor.removeSelectionMarker(range);\n }\n editor.once(\"mouseup\", function () {\n var tmpSel = selection.toOrientedRange();\n if (oldRange && tmpSel.isEmpty() && isSamePoint(oldRange.cursor, tmpSel.cursor))\n selection.substractPoint(tmpSel.cursor);\n else {\n if (shift) {\n selection.substractPoint(range.cursor);\n }\n else if (range) {\n editor.removeSelectionMarker(range);\n selection.addRange(range);\n }\n selection.addRange(tmpSel);\n }\n editor.inVirtualSelectionMode = false;\n });\n }\n else if (selectionMode == \"block\") {\n e.stop();\n editor.inVirtualSelectionMode = true;\n var initialRange;\n var rectSel = [];\n var blockSelect = function () {\n var newCursor = editor.renderer.pixelToScreenCoordinates(mouseX, mouseY);\n var cursor = session.screenToDocumentPosition(newCursor.row, newCursor.column, newCursor.offsetX);\n if (isSamePoint(screenCursor, newCursor) && isSamePoint(cursor, selection.lead))\n return;\n screenCursor = newCursor;\n editor.selection.moveToPosition(cursor);\n editor.renderer.scrollCursorIntoView();\n editor.removeSelectionMarkers(rectSel);\n rectSel = selection.rectangularRangeBlock(screenCursor, screenAnchor);\n if (editor.$mouseHandler.$clickSelection && rectSel.length == 1 && rectSel[0].isEmpty())\n rectSel[0] = editor.$mouseHandler.$clickSelection.clone();\n rectSel.forEach(editor.addSelectionMarker, editor);\n editor.updateSelectionMarkers();\n };\n if (isMultiSelect && !accel) {\n selection.toSingleRange();\n }\n else if (!isMultiSelect && accel) {\n initialRange = selection.toOrientedRange();\n editor.addSelectionMarker(initialRange);\n }\n if (shift)\n screenAnchor = session.documentToScreenPosition(selection.lead);\n else\n selection.moveToPosition(pos);\n screenCursor = { row: -1, column: -1 };\n var onMouseSelectionEnd = function (e) {\n blockSelect();\n clearInterval(timerId);\n editor.removeSelectionMarkers(rectSel);\n if (!rectSel.length)\n rectSel = [selection.toOrientedRange()];\n if (initialRange) {\n editor.removeSelectionMarker(initialRange);\n selection.toSingleRange(initialRange);\n }\n for (var i = 0; i < rectSel.length; i++)\n selection.addRange(rectSel[i]);\n editor.inVirtualSelectionMode = false;\n editor.$mouseHandler.$clickSelection = null;\n };\n var onSelectionInterval = blockSelect;\n event.capture(editor.container, onMouseSelection, onMouseSelectionEnd);\n var timerId = setInterval(function () { onSelectionInterval(); }, 20);\n return e.preventDefault();\n }\n}\nexports.onMouseDown = onMouseDown;\n\n});\n\nace.define(\"ace/commands/multi_select_commands\",[\"require\",\"exports\",\"module\",\"ace/keyboard/hash_handler\"], function(require, exports, module){// commands to enter multiselect mode\nexports.defaultCommands = [{\n name: \"addCursorAbove\",\n description: \"Add cursor above\",\n exec: function (editor) { editor.selectMoreLines(-1); },\n bindKey: { win: \"Ctrl-Alt-Up\", mac: \"Ctrl-Alt-Up\" },\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"addCursorBelow\",\n description: \"Add cursor below\",\n exec: function (editor) { editor.selectMoreLines(1); },\n bindKey: { win: \"Ctrl-Alt-Down\", mac: \"Ctrl-Alt-Down\" },\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"addCursorAboveSkipCurrent\",\n description: \"Add cursor above (skip current)\",\n exec: function (editor) { editor.selectMoreLines(-1, true); },\n bindKey: { win: \"Ctrl-Alt-Shift-Up\", mac: \"Ctrl-Alt-Shift-Up\" },\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"addCursorBelowSkipCurrent\",\n description: \"Add cursor below (skip current)\",\n exec: function (editor) { editor.selectMoreLines(1, true); },\n bindKey: { win: \"Ctrl-Alt-Shift-Down\", mac: \"Ctrl-Alt-Shift-Down\" },\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"selectMoreBefore\",\n description: \"Select more before\",\n exec: function (editor) { editor.selectMore(-1); },\n bindKey: { win: \"Ctrl-Alt-Left\", mac: \"Ctrl-Alt-Left\" },\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"selectMoreAfter\",\n description: \"Select more after\",\n exec: function (editor) { editor.selectMore(1); },\n bindKey: { win: \"Ctrl-Alt-Right\", mac: \"Ctrl-Alt-Right\" },\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"selectNextBefore\",\n description: \"Select next before\",\n exec: function (editor) { editor.selectMore(-1, true); },\n bindKey: { win: \"Ctrl-Alt-Shift-Left\", mac: \"Ctrl-Alt-Shift-Left\" },\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"selectNextAfter\",\n description: \"Select next after\",\n exec: function (editor) { editor.selectMore(1, true); },\n bindKey: { win: \"Ctrl-Alt-Shift-Right\", mac: \"Ctrl-Alt-Shift-Right\" },\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"toggleSplitSelectionIntoLines\",\n description: \"Split selection into lines\",\n exec: function (editor) {\n if (editor.multiSelect.rangeCount > 1)\n editor.multiSelect.joinSelections();\n else\n editor.multiSelect.splitIntoLines();\n },\n bindKey: { win: \"Ctrl-Alt-L\", mac: \"Ctrl-Alt-L\" },\n readOnly: true\n }, {\n name: \"splitSelectionIntoLines\",\n description: \"Split into lines\",\n exec: function (editor) { editor.multiSelect.splitIntoLines(); },\n readOnly: true\n }, {\n name: \"alignCursors\",\n description: \"Align cursors\",\n exec: function (editor) { editor.alignCursors(); },\n bindKey: { win: \"Ctrl-Alt-A\", mac: \"Ctrl-Alt-A\" },\n scrollIntoView: \"cursor\"\n }, {\n name: \"findAll\",\n description: \"Find all\",\n exec: function (editor) { editor.findAll(); },\n bindKey: { win: \"Ctrl-Alt-K\", mac: \"Ctrl-Alt-G\" },\n scrollIntoView: \"cursor\",\n readOnly: true\n }];\nexports.multiSelectCommands = [{\n name: \"singleSelection\",\n description: \"Single selection\",\n bindKey: \"esc\",\n exec: function (editor) { editor.exitMultiSelectMode(); },\n scrollIntoView: \"cursor\",\n readOnly: true,\n isAvailable: function (editor) { return editor && editor.inMultiSelectMode; }\n }];\nvar HashHandler = require(\"../keyboard/hash_handler\").HashHandler;\nexports.keyboardHandler = new HashHandler(exports.multiSelectCommands);\n\n});\n\nace.define(\"ace/multi_select\",[\"require\",\"exports\",\"module\",\"ace/range_list\",\"ace/range\",\"ace/selection\",\"ace/mouse/multi_select_handler\",\"ace/lib/event\",\"ace/lib/lang\",\"ace/commands/multi_select_commands\",\"ace/search\",\"ace/edit_session\",\"ace/editor\",\"ace/config\"], function(require, exports, module){var RangeList = require(\"./range_list\").RangeList;\nvar Range = require(\"./range\").Range;\nvar Selection = require(\"./selection\").Selection;\nvar onMouseDown = require(\"./mouse/multi_select_handler\").onMouseDown;\nvar event = require(\"./lib/event\");\nvar lang = require(\"./lib/lang\");\nvar commands = require(\"./commands/multi_select_commands\");\nexports.commands = commands.defaultCommands.concat(commands.multiSelectCommands);\nvar Search = require(\"./search\").Search;\nvar search = new Search();\nfunction find(session, needle, dir) {\n search.$options.wrap = true;\n search.$options.needle = needle;\n search.$options.backwards = dir == -1;\n return search.find(session);\n}\nvar EditSession = require(\"./edit_session\").EditSession;\n(function () {\n this.getSelectionMarkers = function () {\n return this.$selectionMarkers;\n };\n}).call(EditSession.prototype);\n(function () {\n this.ranges = null;\n this.rangeList = null;\n this.addRange = function (range, $blockChangeEvents) {\n if (!range)\n return;\n if (!this.inMultiSelectMode && this.rangeCount === 0) {\n var oldRange = this.toOrientedRange();\n this.rangeList.add(oldRange);\n this.rangeList.add(range);\n if (this.rangeList.ranges.length != 2) {\n this.rangeList.removeAll();\n return $blockChangeEvents || this.fromOrientedRange(range);\n }\n this.rangeList.removeAll();\n this.rangeList.add(oldRange);\n this.$onAddRange(oldRange);\n }\n if (!range.cursor)\n range.cursor = range.end;\n var removed = this.rangeList.add(range);\n this.$onAddRange(range);\n if (removed.length)\n this.$onRemoveRange(removed);\n if (this.rangeCount > 1 && !this.inMultiSelectMode) {\n this._signal(\"multiSelect\");\n this.inMultiSelectMode = true;\n this.session.$undoSelect = false;\n this.rangeList.attach(this.session);\n }\n return $blockChangeEvents || this.fromOrientedRange(range);\n };\n this.toSingleRange = function (range) {\n range = range || this.ranges[0];\n var removed = this.rangeList.removeAll();\n if (removed.length)\n this.$onRemoveRange(removed);\n range && this.fromOrientedRange(range);\n };\n this.substractPoint = function (pos) {\n var removed = this.rangeList.substractPoint(pos);\n if (removed) {\n this.$onRemoveRange(removed);\n return removed[0];\n }\n };\n this.mergeOverlappingRanges = function () {\n var removed = this.rangeList.merge();\n if (removed.length)\n this.$onRemoveRange(removed);\n };\n this.$onAddRange = function (range) {\n this.rangeCount = this.rangeList.ranges.length;\n this.ranges.unshift(range);\n this._signal(\"addRange\", { range: range });\n };\n this.$onRemoveRange = function (removed) {\n this.rangeCount = this.rangeList.ranges.length;\n if (this.rangeCount == 1 && this.inMultiSelectMode) {\n var lastRange = this.rangeList.ranges.pop();\n removed.push(lastRange);\n this.rangeCount = 0;\n }\n for (var i = removed.length; i--;) {\n var index = this.ranges.indexOf(removed[i]);\n this.ranges.splice(index, 1);\n }\n this._signal(\"removeRange\", { ranges: removed });\n if (this.rangeCount === 0 && this.inMultiSelectMode) {\n this.inMultiSelectMode = false;\n this._signal(\"singleSelect\");\n this.session.$undoSelect = true;\n this.rangeList.detach(this.session);\n }\n lastRange = lastRange || this.ranges[0];\n if (lastRange && !lastRange.isEqual(this.getRange()))\n this.fromOrientedRange(lastRange);\n };\n this.$initRangeList = function () {\n if (this.rangeList)\n return;\n this.rangeList = new RangeList();\n this.ranges = [];\n this.rangeCount = 0;\n };\n this.getAllRanges = function () {\n return this.rangeCount ? this.rangeList.ranges.concat() : [this.getRange()];\n };\n this.splitIntoLines = function () {\n var ranges = this.ranges.length ? this.ranges : [this.getRange()];\n var newRanges = [];\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i];\n var row = range.start.row;\n var endRow = range.end.row;\n if (row === endRow) {\n newRanges.push(range.clone());\n }\n else {\n newRanges.push(new Range(row, range.start.column, row, this.session.getLine(row).length));\n while (++row < endRow)\n newRanges.push(this.getLineRange(row, true));\n newRanges.push(new Range(endRow, 0, endRow, range.end.column));\n }\n if (i == 0 && !this.isBackwards())\n newRanges = newRanges.reverse();\n }\n this.toSingleRange();\n for (var i = newRanges.length; i--;)\n this.addRange(newRanges[i]);\n };\n this.joinSelections = function () {\n var ranges = this.rangeList.ranges;\n var lastRange = ranges[ranges.length - 1];\n var range = Range.fromPoints(ranges[0].start, lastRange.end);\n this.toSingleRange();\n this.setSelectionRange(range, lastRange.cursor == lastRange.start);\n };\n this.toggleBlockSelection = function () {\n if (this.rangeCount > 1) {\n var ranges = this.rangeList.ranges;\n var lastRange = ranges[ranges.length - 1];\n var range = Range.fromPoints(ranges[0].start, lastRange.end);\n this.toSingleRange();\n this.setSelectionRange(range, lastRange.cursor == lastRange.start);\n }\n else {\n var cursor = this.session.documentToScreenPosition(this.cursor);\n var anchor = this.session.documentToScreenPosition(this.anchor);\n var rectSel = this.rectangularRangeBlock(cursor, anchor);\n rectSel.forEach(this.addRange, this);\n }\n };\n this.rectangularRangeBlock = function (screenCursor, screenAnchor, includeEmptyLines) {\n var rectSel = [];\n var xBackwards = screenCursor.column < screenAnchor.column;\n if (xBackwards) {\n var startColumn = screenCursor.column;\n var endColumn = screenAnchor.column;\n var startOffsetX = screenCursor.offsetX;\n var endOffsetX = screenAnchor.offsetX;\n }\n else {\n var startColumn = screenAnchor.column;\n var endColumn = screenCursor.column;\n var startOffsetX = screenAnchor.offsetX;\n var endOffsetX = screenCursor.offsetX;\n }\n var yBackwards = screenCursor.row < screenAnchor.row;\n if (yBackwards) {\n var startRow = screenCursor.row;\n var endRow = screenAnchor.row;\n }\n else {\n var startRow = screenAnchor.row;\n var endRow = screenCursor.row;\n }\n if (startColumn < 0)\n startColumn = 0;\n if (startRow < 0)\n startRow = 0;\n if (startRow == endRow)\n includeEmptyLines = true;\n var docEnd;\n for (var row = startRow; row <= endRow; row++) {\n var range = Range.fromPoints(this.session.screenToDocumentPosition(row, startColumn, startOffsetX), this.session.screenToDocumentPosition(row, endColumn, endOffsetX));\n if (range.isEmpty()) {\n if (docEnd && isSamePoint(range.end, docEnd))\n break;\n docEnd = range.end;\n }\n range.cursor = xBackwards ? range.start : range.end;\n rectSel.push(range);\n }\n if (yBackwards)\n rectSel.reverse();\n if (!includeEmptyLines) {\n var end = rectSel.length - 1;\n while (rectSel[end].isEmpty() && end > 0)\n end--;\n if (end > 0) {\n var start = 0;\n while (rectSel[start].isEmpty())\n start++;\n }\n for (var i = end; i >= start; i--) {\n if (rectSel[i].isEmpty())\n rectSel.splice(i, 1);\n }\n }\n return rectSel;\n };\n}).call(Selection.prototype);\nvar Editor = require(\"./editor\").Editor;\n(function () {\n this.updateSelectionMarkers = function () {\n this.renderer.updateCursor();\n this.renderer.updateBackMarkers();\n };\n this.addSelectionMarker = function (orientedRange) {\n if (!orientedRange.cursor)\n orientedRange.cursor = orientedRange.end;\n var style = this.getSelectionStyle();\n orientedRange.marker = this.session.addMarker(orientedRange, \"ace_selection\", style);\n this.session.$selectionMarkers.push(orientedRange);\n this.session.selectionMarkerCount = this.session.$selectionMarkers.length;\n return orientedRange;\n };\n this.removeSelectionMarker = function (range) {\n if (!range.marker)\n return;\n this.session.removeMarker(range.marker);\n var index = this.session.$selectionMarkers.indexOf(range);\n if (index != -1)\n this.session.$selectionMarkers.splice(index, 1);\n this.session.selectionMarkerCount = this.session.$selectionMarkers.length;\n };\n this.removeSelectionMarkers = function (ranges) {\n var markerList = this.session.$selectionMarkers;\n for (var i = ranges.length; i--;) {\n var range = ranges[i];\n if (!range.marker)\n continue;\n this.session.removeMarker(range.marker);\n var index = markerList.indexOf(range);\n if (index != -1)\n markerList.splice(index, 1);\n }\n this.session.selectionMarkerCount = markerList.length;\n };\n this.$onAddRange = function (e) {\n this.addSelectionMarker(e.range);\n this.renderer.updateCursor();\n this.renderer.updateBackMarkers();\n };\n this.$onRemoveRange = function (e) {\n this.removeSelectionMarkers(e.ranges);\n this.renderer.updateCursor();\n this.renderer.updateBackMarkers();\n };\n this.$onMultiSelect = function (e) {\n if (this.inMultiSelectMode)\n return;\n this.inMultiSelectMode = true;\n this.setStyle(\"ace_multiselect\");\n this.keyBinding.addKeyboardHandler(commands.keyboardHandler);\n this.commands.setDefaultHandler(\"exec\", this.$onMultiSelectExec);\n this.renderer.updateCursor();\n this.renderer.updateBackMarkers();\n };\n this.$onSingleSelect = function (e) {\n if (this.session.multiSelect.inVirtualMode)\n return;\n this.inMultiSelectMode = false;\n this.unsetStyle(\"ace_multiselect\");\n this.keyBinding.removeKeyboardHandler(commands.keyboardHandler);\n this.commands.removeDefaultHandler(\"exec\", this.$onMultiSelectExec);\n this.renderer.updateCursor();\n this.renderer.updateBackMarkers();\n this._emit(\"changeSelection\");\n };\n this.$onMultiSelectExec = function (e) {\n var command = e.command;\n var editor = e.editor;\n if (!editor.multiSelect)\n return;\n if (!command.multiSelectAction) {\n var result = command.exec(editor, e.args || {});\n editor.multiSelect.addRange(editor.multiSelect.toOrientedRange());\n editor.multiSelect.mergeOverlappingRanges();\n }\n else if (command.multiSelectAction == \"forEach\") {\n result = editor.forEachSelection(command, e.args);\n }\n else if (command.multiSelectAction == \"forEachLine\") {\n result = editor.forEachSelection(command, e.args, true);\n }\n else if (command.multiSelectAction == \"single\") {\n editor.exitMultiSelectMode();\n result = command.exec(editor, e.args || {});\n }\n else {\n result = command.multiSelectAction(editor, e.args || {});\n }\n return result;\n };\n this.forEachSelection = function (cmd, args, options) {\n if (this.inVirtualSelectionMode)\n return;\n var keepOrder = options && options.keepOrder;\n var $byLines = options == true || options && options.$byLines;\n var session = this.session;\n var selection = this.selection;\n var rangeList = selection.rangeList;\n var ranges = (keepOrder ? selection : rangeList).ranges;\n var result;\n if (!ranges.length)\n return cmd.exec ? cmd.exec(this, args || {}) : cmd(this, args || {});\n var reg = selection._eventRegistry;\n selection._eventRegistry = {};\n var tmpSel = new Selection(session);\n this.inVirtualSelectionMode = true;\n for (var i = ranges.length; i--;) {\n if ($byLines) {\n while (i > 0 && ranges[i].start.row == ranges[i - 1].end.row)\n i--;\n }\n tmpSel.fromOrientedRange(ranges[i]);\n tmpSel.index = i;\n this.selection = session.selection = tmpSel;\n var cmdResult = cmd.exec ? cmd.exec(this, args || {}) : cmd(this, args || {});\n if (!result && cmdResult !== undefined)\n result = cmdResult;\n tmpSel.toOrientedRange(ranges[i]);\n }\n tmpSel.detach();\n this.selection = session.selection = selection;\n this.inVirtualSelectionMode = false;\n selection._eventRegistry = reg;\n selection.mergeOverlappingRanges();\n if (selection.ranges[0])\n selection.fromOrientedRange(selection.ranges[0]);\n var anim = this.renderer.$scrollAnimation;\n this.onCursorChange();\n this.onSelectionChange();\n if (anim && anim.from == anim.to)\n this.renderer.animateScrolling(anim.from);\n return result;\n };\n this.exitMultiSelectMode = function () {\n if (!this.inMultiSelectMode || this.inVirtualSelectionMode)\n return;\n this.multiSelect.toSingleRange();\n };\n this.getSelectedText = function () {\n var text = \"\";\n if (this.inMultiSelectMode && !this.inVirtualSelectionMode) {\n var ranges = this.multiSelect.rangeList.ranges;\n var buf = [];\n for (var i = 0; i < ranges.length; i++) {\n buf.push(this.session.getTextRange(ranges[i]));\n }\n var nl = this.session.getDocument().getNewLineCharacter();\n text = buf.join(nl);\n if (text.length == (buf.length - 1) * nl.length)\n text = \"\";\n }\n else if (!this.selection.isEmpty()) {\n text = this.session.getTextRange(this.getSelectionRange());\n }\n return text;\n };\n this.$checkMultiselectChange = function (e, anchor) {\n if (this.inMultiSelectMode && !this.inVirtualSelectionMode) {\n var range = this.multiSelect.ranges[0];\n if (this.multiSelect.isEmpty() && anchor == this.multiSelect.anchor)\n return;\n var pos = anchor == this.multiSelect.anchor\n ? range.cursor == range.start ? range.end : range.start\n : range.cursor;\n if (pos.row != anchor.row\n || this.session.$clipPositionToDocument(pos.row, pos.column).column != anchor.column)\n this.multiSelect.toSingleRange(this.multiSelect.toOrientedRange());\n else\n this.multiSelect.mergeOverlappingRanges();\n }\n };\n this.findAll = function (needle, options, additive) {\n options = options || {};\n options.needle = needle || options.needle;\n if (options.needle == undefined) {\n var range = this.selection.isEmpty()\n ? this.selection.getWordRange()\n : this.selection.getRange();\n options.needle = this.session.getTextRange(range);\n }\n this.$search.set(options);\n var ranges = this.$search.findAll(this.session);\n if (!ranges.length)\n return 0;\n var selection = this.multiSelect;\n if (!additive)\n selection.toSingleRange(ranges[0]);\n for (var i = ranges.length; i--;)\n selection.addRange(ranges[i], true);\n if (range && selection.rangeList.rangeAtPoint(range.start))\n selection.addRange(range, true);\n return ranges.length;\n };\n this.selectMoreLines = function (dir, skip) {\n var range = this.selection.toOrientedRange();\n var isBackwards = range.cursor == range.end;\n var screenLead = this.session.documentToScreenPosition(range.cursor);\n if (this.selection.$desiredColumn)\n screenLead.column = this.selection.$desiredColumn;\n var lead = this.session.screenToDocumentPosition(screenLead.row + dir, screenLead.column);\n if (!range.isEmpty()) {\n var screenAnchor = this.session.documentToScreenPosition(isBackwards ? range.end : range.start);\n var anchor = this.session.screenToDocumentPosition(screenAnchor.row + dir, screenAnchor.column);\n }\n else {\n var anchor = lead;\n }\n if (isBackwards) {\n var newRange = Range.fromPoints(lead, anchor);\n newRange.cursor = newRange.start;\n }\n else {\n var newRange = Range.fromPoints(anchor, lead);\n newRange.cursor = newRange.end;\n }\n newRange.desiredColumn = screenLead.column;\n if (!this.selection.inMultiSelectMode) {\n this.selection.addRange(range);\n }\n else {\n if (skip)\n var toRemove = range.cursor;\n }\n this.selection.addRange(newRange);\n if (toRemove)\n this.selection.substractPoint(toRemove);\n };\n this.transposeSelections = function (dir) {\n var session = this.session;\n var sel = session.multiSelect;\n var all = sel.ranges;\n for (var i = all.length; i--;) {\n var range = all[i];\n if (range.isEmpty()) {\n var tmp = session.getWordRange(range.start.row, range.start.column);\n range.start.row = tmp.start.row;\n range.start.column = tmp.start.column;\n range.end.row = tmp.end.row;\n range.end.column = tmp.end.column;\n }\n }\n sel.mergeOverlappingRanges();\n var words = [];\n for (var i = all.length; i--;) {\n var range = all[i];\n words.unshift(session.getTextRange(range));\n }\n if (dir < 0)\n words.unshift(words.pop());\n else\n words.push(words.shift());\n for (var i = all.length; i--;) {\n var range = all[i];\n var tmp = range.clone();\n session.replace(range, words[i]);\n range.start.row = tmp.start.row;\n range.start.column = tmp.start.column;\n }\n sel.fromOrientedRange(sel.ranges[0]);\n };\n this.selectMore = function (dir, skip, stopAtFirst) {\n var session = this.session;\n var sel = session.multiSelect;\n var range = sel.toOrientedRange();\n if (range.isEmpty()) {\n range = session.getWordRange(range.start.row, range.start.column);\n range.cursor = dir == -1 ? range.start : range.end;\n this.multiSelect.addRange(range);\n if (stopAtFirst)\n return;\n }\n var needle = session.getTextRange(range);\n var newRange = find(session, needle, dir);\n if (newRange) {\n newRange.cursor = dir == -1 ? newRange.start : newRange.end;\n this.session.unfold(newRange);\n this.multiSelect.addRange(newRange);\n this.renderer.scrollCursorIntoView(null, 0.5);\n }\n if (skip)\n this.multiSelect.substractPoint(range.cursor);\n };\n this.alignCursors = function () {\n var session = this.session;\n var sel = session.multiSelect;\n var ranges = sel.ranges;\n var row = -1;\n var sameRowRanges = ranges.filter(function (r) {\n if (r.cursor.row == row)\n return true;\n row = r.cursor.row;\n });\n if (!ranges.length || sameRowRanges.length == ranges.length - 1) {\n var range = this.selection.getRange();\n var fr = range.start.row, lr = range.end.row;\n var guessRange = fr == lr;\n if (guessRange) {\n var max = this.session.getLength();\n var line;\n do {\n line = this.session.getLine(lr);\n } while (/[=:]/.test(line) && ++lr < max);\n do {\n line = this.session.getLine(fr);\n } while (/[=:]/.test(line) && --fr > 0);\n if (fr < 0)\n fr = 0;\n if (lr >= max)\n lr = max - 1;\n }\n var lines = this.session.removeFullLines(fr, lr);\n lines = this.$reAlignText(lines, guessRange);\n this.session.insert({ row: fr, column: 0 }, lines.join(\"\\n\") + \"\\n\");\n if (!guessRange) {\n range.start.column = 0;\n range.end.column = lines[lines.length - 1].length;\n }\n this.selection.setRange(range);\n }\n else {\n sameRowRanges.forEach(function (r) {\n sel.substractPoint(r.cursor);\n });\n var maxCol = 0;\n var minSpace = Infinity;\n var spaceOffsets = ranges.map(function (r) {\n var p = r.cursor;\n var line = session.getLine(p.row);\n var spaceOffset = line.substr(p.column).search(/\\S/g);\n if (spaceOffset == -1)\n spaceOffset = 0;\n if (p.column > maxCol)\n maxCol = p.column;\n if (spaceOffset < minSpace)\n minSpace = spaceOffset;\n return spaceOffset;\n });\n ranges.forEach(function (r, i) {\n var p = r.cursor;\n var l = maxCol - p.column;\n var d = spaceOffsets[i] - minSpace;\n if (l > d)\n session.insert(p, lang.stringRepeat(\" \", l - d));\n else\n session.remove(new Range(p.row, p.column, p.row, p.column - l + d));\n r.start.column = r.end.column = maxCol;\n r.start.row = r.end.row = p.row;\n r.cursor = r.end;\n });\n sel.fromOrientedRange(ranges[0]);\n this.renderer.updateCursor();\n this.renderer.updateBackMarkers();\n }\n };\n this.$reAlignText = function (lines, forceLeft) {\n var isLeftAligned = true, isRightAligned = true;\n var startW, textW, endW;\n return lines.map(function (line) {\n var m = line.match(/(\\s*)(.*?)(\\s*)([=:].*)/);\n if (!m)\n return [line];\n if (startW == null) {\n startW = m[1].length;\n textW = m[2].length;\n endW = m[3].length;\n return m;\n }\n if (startW + textW + endW != m[1].length + m[2].length + m[3].length)\n isRightAligned = false;\n if (startW != m[1].length)\n isLeftAligned = false;\n if (startW > m[1].length)\n startW = m[1].length;\n if (textW < m[2].length)\n textW = m[2].length;\n if (endW > m[3].length)\n endW = m[3].length;\n return m;\n }).map(forceLeft ? alignLeft :\n isLeftAligned ? isRightAligned ? alignRight : alignLeft : unAlign);\n function spaces(n) {\n return lang.stringRepeat(\" \", n);\n }\n function alignLeft(m) {\n return !m[2] ? m[0] : spaces(startW) + m[2]\n + spaces(textW - m[2].length + endW)\n + m[4].replace(/^([=:])\\s+/, \"$1 \");\n }\n function alignRight(m) {\n return !m[2] ? m[0] : spaces(startW + textW - m[2].length) + m[2]\n + spaces(endW)\n + m[4].replace(/^([=:])\\s+/, \"$1 \");\n }\n function unAlign(m) {\n return !m[2] ? m[0] : spaces(startW) + m[2]\n + spaces(endW)\n + m[4].replace(/^([=:])\\s+/, \"$1 \");\n }\n };\n}).call(Editor.prototype);\nfunction isSamePoint(p1, p2) {\n return p1.row == p2.row && p1.column == p2.column;\n}\nexports.onSessionChange = function (e) {\n var session = e.session;\n if (session && !session.multiSelect) {\n session.$selectionMarkers = [];\n session.selection.$initRangeList();\n session.multiSelect = session.selection;\n }\n this.multiSelect = session && session.multiSelect;\n var oldSession = e.oldSession;\n if (oldSession) {\n oldSession.multiSelect.off(\"addRange\", this.$onAddRange);\n oldSession.multiSelect.off(\"removeRange\", this.$onRemoveRange);\n oldSession.multiSelect.off(\"multiSelect\", this.$onMultiSelect);\n oldSession.multiSelect.off(\"singleSelect\", this.$onSingleSelect);\n oldSession.multiSelect.lead.off(\"change\", this.$checkMultiselectChange);\n oldSession.multiSelect.anchor.off(\"change\", this.$checkMultiselectChange);\n }\n if (session) {\n session.multiSelect.on(\"addRange\", this.$onAddRange);\n session.multiSelect.on(\"removeRange\", this.$onRemoveRange);\n session.multiSelect.on(\"multiSelect\", this.$onMultiSelect);\n session.multiSelect.on(\"singleSelect\", this.$onSingleSelect);\n session.multiSelect.lead.on(\"change\", this.$checkMultiselectChange);\n session.multiSelect.anchor.on(\"change\", this.$checkMultiselectChange);\n }\n if (session && this.inMultiSelectMode != session.selection.inMultiSelectMode) {\n if (session.selection.inMultiSelectMode)\n this.$onMultiSelect();\n else\n this.$onSingleSelect();\n }\n};\nfunction MultiSelect(editor) {\n if (editor.$multiselectOnSessionChange)\n return;\n editor.$onAddRange = editor.$onAddRange.bind(editor);\n editor.$onRemoveRange = editor.$onRemoveRange.bind(editor);\n editor.$onMultiSelect = editor.$onMultiSelect.bind(editor);\n editor.$onSingleSelect = editor.$onSingleSelect.bind(editor);\n editor.$multiselectOnSessionChange = exports.onSessionChange.bind(editor);\n editor.$checkMultiselectChange = editor.$checkMultiselectChange.bind(editor);\n editor.$multiselectOnSessionChange(editor);\n editor.on(\"changeSession\", editor.$multiselectOnSessionChange);\n editor.on(\"mousedown\", onMouseDown);\n editor.commands.addCommands(commands.defaultCommands);\n addAltCursorListeners(editor);\n}\nfunction addAltCursorListeners(editor) {\n if (!editor.textInput)\n return;\n var el = editor.textInput.getElement();\n var altCursor = false;\n event.addListener(el, \"keydown\", function (e) {\n var altDown = e.keyCode == 18 && !(e.ctrlKey || e.shiftKey || e.metaKey);\n if (editor.$blockSelectEnabled && altDown) {\n if (!altCursor) {\n editor.renderer.setMouseCursor(\"crosshair\");\n altCursor = true;\n }\n }\n else if (altCursor) {\n reset();\n }\n }, editor);\n event.addListener(el, \"keyup\", reset, editor);\n event.addListener(el, \"blur\", reset, editor);\n function reset(e) {\n if (altCursor) {\n editor.renderer.setMouseCursor(\"\");\n altCursor = false;\n }\n }\n}\nexports.MultiSelect = MultiSelect;\nrequire(\"./config\").defineOptions(Editor.prototype, \"editor\", {\n enableMultiselect: {\n set: function (val) {\n MultiSelect(this);\n if (val) {\n this.on(\"mousedown\", onMouseDown);\n }\n else {\n this.off(\"mousedown\", onMouseDown);\n }\n },\n value: true\n },\n enableBlockSelect: {\n set: function (val) {\n this.$blockSelectEnabled = val;\n },\n value: true\n }\n});\n\n});\n\nace.define(\"ace/mode/folding/fold_mode\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar Range = require(\"../../range\").Range;\nvar FoldMode = exports.FoldMode = function () { };\n(function () {\n this.foldingStartMarker = null;\n this.foldingStopMarker = null;\n this.getFoldWidget = function (session, foldStyle, row) {\n var line = session.getLine(row);\n if (this.foldingStartMarker.test(line))\n return \"start\";\n if (foldStyle == \"markbeginend\"\n && this.foldingStopMarker\n && this.foldingStopMarker.test(line))\n return \"end\";\n return \"\";\n };\n this.getFoldWidgetRange = function (session, foldStyle, row) {\n return null;\n };\n this.indentationBlock = function (session, row, column) {\n var re = /\\S/;\n var line = session.getLine(row);\n var startLevel = line.search(re);\n if (startLevel == -1)\n return;\n var startColumn = column || line.length;\n var maxRow = session.getLength();\n var startRow = row;\n var endRow = row;\n while (++row < maxRow) {\n var level = session.getLine(row).search(re);\n if (level == -1)\n continue;\n if (level <= startLevel) {\n var token = session.getTokenAt(row, 0);\n if (!token || token.type !== \"string\")\n break;\n }\n endRow = row;\n }\n if (endRow > startRow) {\n var endColumn = session.getLine(endRow).length;\n return new Range(startRow, startColumn, endRow, endColumn);\n }\n };\n this.openingBracketBlock = function (session, bracket, row, column, typeRe) {\n var start = { row: row, column: column + 1 };\n var end = session.$findClosingBracket(bracket, start, typeRe);\n if (!end)\n return;\n var fw = session.foldWidgets[end.row];\n if (fw == null)\n fw = session.getFoldWidget(end.row);\n if (fw == \"start\" && end.row > start.row) {\n end.row--;\n end.column = session.getLine(end.row).length;\n }\n return Range.fromPoints(start, end);\n };\n this.closingBracketBlock = function (session, bracket, row, column, typeRe) {\n var end = { row: row, column: column };\n var start = session.$findOpeningBracket(bracket, end);\n if (!start)\n return;\n start.column++;\n end.column--;\n return Range.fromPoints(start, end);\n };\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/ext/error_marker\",[\"require\",\"exports\",\"module\",\"ace/line_widgets\",\"ace/lib/dom\",\"ace/range\",\"ace/config\"], function(require, exports, module){\"use strict\";\nvar LineWidgets = require(\"../line_widgets\").LineWidgets;\nvar dom = require(\"../lib/dom\");\nvar Range = require(\"../range\").Range;\nvar nls = require(\"../config\").nls;\nfunction binarySearch(array, needle, comparator) {\n var first = 0;\n var last = array.length - 1;\n while (first <= last) {\n var mid = (first + last) >> 1;\n var c = comparator(needle, array[mid]);\n if (c > 0)\n first = mid + 1;\n else if (c < 0)\n last = mid - 1;\n else\n return mid;\n }\n return -(first + 1);\n}\nfunction findAnnotations(session, row, dir) {\n var annotations = session.getAnnotations().sort(Range.comparePoints);\n if (!annotations.length)\n return;\n var i = binarySearch(annotations, { row: row, column: -1 }, Range.comparePoints);\n if (i < 0)\n i = -i - 1;\n if (i >= annotations.length)\n i = dir > 0 ? 0 : annotations.length - 1;\n else if (i === 0 && dir < 0)\n i = annotations.length - 1;\n var annotation = annotations[i];\n if (!annotation || !dir)\n return;\n if (annotation.row === row) {\n do {\n annotation = annotations[i += dir];\n } while (annotation && annotation.row === row);\n if (!annotation)\n return annotations.slice();\n }\n var matched = [];\n row = annotation.row;\n do {\n matched[dir < 0 ? \"unshift\" : \"push\"](annotation);\n annotation = annotations[i += dir];\n } while (annotation && annotation.row == row);\n return matched.length && matched;\n}\nexports.showErrorMarker = function (editor, dir) {\n var session = editor.session;\n if (!session.widgetManager) {\n session.widgetManager = new LineWidgets(session);\n session.widgetManager.attach(editor);\n }\n var pos = editor.getCursorPosition();\n var row = pos.row;\n var oldWidget = session.widgetManager.getWidgetsAtRow(row).filter(function (w) {\n return w.type == \"errorMarker\";\n })[0];\n if (oldWidget) {\n oldWidget.destroy();\n }\n else {\n row -= dir;\n }\n var annotations = findAnnotations(session, row, dir);\n var gutterAnno;\n if (annotations) {\n var annotation = annotations[0];\n pos.column = (annotation.pos && typeof annotation.column != \"number\"\n ? annotation.pos.sc\n : annotation.column) || 0;\n pos.row = annotation.row;\n gutterAnno = editor.renderer.$gutterLayer.$annotations[pos.row];\n }\n else if (oldWidget) {\n return;\n }\n else {\n gutterAnno = {\n text: [nls(\"Looks good!\")],\n className: \"ace_ok\"\n };\n }\n editor.session.unfold(pos.row);\n editor.selection.moveToPosition(pos);\n var w = {\n row: pos.row,\n fixedWidth: true,\n coverGutter: true,\n el: dom.createElement(\"div\"),\n type: \"errorMarker\"\n };\n var el = w.el.appendChild(dom.createElement(\"div\"));\n var arrow = w.el.appendChild(dom.createElement(\"div\"));\n arrow.className = \"error_widget_arrow \" + gutterAnno.className;\n var left = editor.renderer.$cursorLayer\n .getPixelPosition(pos).left;\n arrow.style.left = left + editor.renderer.gutterWidth - 5 + \"px\";\n w.el.className = \"error_widget_wrapper\";\n el.className = \"error_widget \" + gutterAnno.className;\n el.innerHTML = gutterAnno.text.join(\"
    \");\n el.appendChild(dom.createElement(\"div\"));\n var kb = function (_, hashId, keyString) {\n if (hashId === 0 && (keyString === \"esc\" || keyString === \"return\")) {\n w.destroy();\n return { command: \"null\" };\n }\n };\n w.destroy = function () {\n if (editor.$mouseHandler.isMousePressed)\n return;\n editor.keyBinding.removeKeyboardHandler(kb);\n session.widgetManager.removeLineWidget(w);\n editor.off(\"changeSelection\", w.destroy);\n editor.off(\"changeSession\", w.destroy);\n editor.off(\"mouseup\", w.destroy);\n editor.off(\"change\", w.destroy);\n };\n editor.keyBinding.addKeyboardHandler(kb);\n editor.on(\"changeSelection\", w.destroy);\n editor.on(\"changeSession\", w.destroy);\n editor.on(\"mouseup\", w.destroy);\n editor.on(\"change\", w.destroy);\n editor.session.widgetManager.addLineWidget(w);\n w.el.onmousedown = editor.focus.bind(editor);\n editor.renderer.scrollCursorIntoView(null, 0.5, { bottom: w.el.offsetHeight });\n};\ndom.importCssString(\"\\n .error_widget_wrapper {\\n background: inherit;\\n color: inherit;\\n border:none\\n }\\n .error_widget {\\n border-top: solid 2px;\\n border-bottom: solid 2px;\\n margin: 5px 0;\\n padding: 10px 40px;\\n white-space: pre-wrap;\\n }\\n .error_widget.ace_error, .error_widget_arrow.ace_error{\\n border-color: #ff5a5a\\n }\\n .error_widget.ace_warning, .error_widget_arrow.ace_warning{\\n border-color: #F1D817\\n }\\n .error_widget.ace_info, .error_widget_arrow.ace_info{\\n border-color: #5a5a5a\\n }\\n .error_widget.ace_ok, .error_widget_arrow.ace_ok{\\n border-color: #5aaa5a\\n }\\n .error_widget_arrow {\\n position: absolute;\\n border: solid 5px;\\n border-top-color: transparent!important;\\n border-right-color: transparent!important;\\n border-left-color: transparent!important;\\n top: -5px;\\n }\\n\", \"error_marker.css\", false);\n\n});\n\nace.define(\"ace/ace\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\",\"ace/range\",\"ace/editor\",\"ace/edit_session\",\"ace/undomanager\",\"ace/virtual_renderer\",\"ace/worker/worker_client\",\"ace/keyboard/hash_handler\",\"ace/placeholder\",\"ace/multi_select\",\"ace/mode/folding/fold_mode\",\"ace/theme/textmate\",\"ace/ext/error_marker\",\"ace/config\",\"ace/loader_build\"], function(require, exports, module){/**\n * The main class required to set up an Ace instance in the browser.\n *\n * @class Ace\n **/\n\"use strict\";\nrequire(\"./loader_build\")(exports)\nvar dom = require(\"./lib/dom\");\nvar Range = require(\"./range\").Range;\nvar Editor = require(\"./editor\").Editor;\nvar EditSession = require(\"./edit_session\").EditSession;\nvar UndoManager = require(\"./undomanager\").UndoManager;\nvar Renderer = require(\"./virtual_renderer\").VirtualRenderer;\nrequire(\"./worker/worker_client\");\nrequire(\"./keyboard/hash_handler\");\nrequire(\"./placeholder\");\nrequire(\"./multi_select\");\nrequire(\"./mode/folding/fold_mode\");\nrequire(\"./theme/textmate\");\nrequire(\"./ext/error_marker\");\nexports.config = require(\"./config\");\nexports.edit = function (el, options) {\n if (typeof el == \"string\") {\n var _id = el;\n el = document.getElementById(_id);\n if (!el)\n throw new Error(\"ace.edit can't find div #\" + _id);\n }\n if (el && el.env && el.env.editor instanceof Editor)\n return el.env.editor;\n var value = \"\";\n if (el && /input|textarea/i.test(el.tagName)) {\n var oldNode = el;\n value = oldNode.value;\n el = dom.createElement(\"pre\");\n oldNode.parentNode.replaceChild(el, oldNode);\n }\n else if (el) {\n value = el.textContent;\n el.innerHTML = \"\";\n }\n var doc = exports.createEditSession(value);\n var editor = new Editor(new Renderer(el), doc, options);\n var env = {\n document: doc,\n editor: editor,\n onResize: editor.resize.bind(editor, null)\n };\n if (oldNode)\n env.textarea = oldNode;\n editor.on(\"destroy\", function () {\n env.editor.container.env = null; // prevent memory leak on old ie\n });\n editor.container.env = editor.env = env;\n return editor;\n};\nexports.createEditSession = function (text, mode) {\n var doc = new EditSession(text, mode);\n doc.setUndoManager(new UndoManager());\n return doc;\n};\nexports.Range = Range;\nexports.Editor = Editor;\nexports.EditSession = EditSession;\nexports.UndoManager = UndoManager;\nexports.VirtualRenderer = Renderer;\nexports.version = exports.config.version;\n\n}); (function() {\n ace.require([\"ace/ace\"], function(a) {\n if (a) {\n a.config.init(true);\n a.define = ace.define;\n }\n var global = (function () {\n return this;\n })();\n if (!global && typeof window != \"undefined\") global = window; // can happen in strict mode\n if (!global && typeof self != \"undefined\") global = self; // can happen in webworker\n \n if (!global.ace)\n global.ace = a;\n for (var key in a) if (a.hasOwnProperty(key))\n global.ace[key] = a[key];\n global.ace[\"default\"] = global.ace;\n if (typeof module == \"object\" && typeof exports == \"object\" && module) {\n module.exports = global.ace;\n }\n });\n })();\n ","ace.define(\"ace/ext/beautify\",[\"require\",\"exports\",\"module\",\"ace/token_iterator\"], function(require, exports, module){// [WIP]\n\"use strict\";\nvar TokenIterator = require(\"../token_iterator\").TokenIterator;\nfunction is(token, type) {\n return token.type.lastIndexOf(type + \".xml\") > -1;\n}\nexports.singletonTags = [\"area\", \"base\", \"br\", \"col\", \"command\", \"embed\", \"hr\", \"html\", \"img\", \"input\", \"keygen\", \"link\", \"meta\", \"param\", \"source\", \"track\", \"wbr\"];\nexports.blockTags = [\"article\", \"aside\", \"blockquote\", \"body\", \"div\", \"dl\", \"fieldset\", \"footer\", \"form\", \"head\", \"header\", \"html\", \"nav\", \"ol\", \"p\", \"script\", \"section\", \"style\", \"table\", \"tbody\", \"tfoot\", \"thead\", \"ul\"];\nexports.formatOptions = {\n lineBreaksAfterCommasInCurlyBlock: true\n};\nexports.beautify = function (session) {\n var iterator = new TokenIterator(session, 0, 0);\n var token = iterator.getCurrentToken();\n var tabString = session.getTabString();\n var singletonTags = exports.singletonTags;\n var blockTags = exports.blockTags;\n var formatOptions = exports.formatOptions || {};\n var nextToken;\n var breakBefore = false;\n var spaceBefore = false;\n var spaceAfter = false;\n var code = \"\";\n var value = \"\";\n var tagName = \"\";\n var depth = 0;\n var lastDepth = 0;\n var lastIndent = 0;\n var indent = 0;\n var unindent = 0;\n var roundDepth = 0;\n var curlyDepth = 0;\n var row;\n var curRow = 0;\n var rowsToAdd = 0;\n var rowTokens = [];\n var abort = false;\n var i;\n var indentNextLine = false;\n var inTag = false;\n var inCSS = false;\n var inBlock = false;\n var levels = { 0: 0 };\n var parents = [];\n var caseBody = false;\n var trimNext = function () {\n if (nextToken && nextToken.value && nextToken.type !== 'string.regexp')\n nextToken.value = nextToken.value.replace(/^\\s*/, \"\");\n };\n var trimLine = function () {\n var end = code.length - 1;\n while (true) {\n if (end == 0)\n break;\n if (code[end] !== \" \")\n break;\n end = end - 1;\n }\n code = code.slice(0, end + 1);\n };\n var trimCode = function () {\n code = code.trimRight();\n breakBefore = false;\n };\n while (token !== null) {\n curRow = iterator.getCurrentTokenRow();\n rowTokens = iterator.$rowTokens;\n nextToken = iterator.stepForward();\n if (typeof token !== \"undefined\") {\n value = token.value;\n unindent = 0;\n inCSS = (tagName === \"style\" || session.$modeId === \"ace/mode/css\");\n if (is(token, \"tag-open\")) {\n inTag = true;\n if (nextToken)\n inBlock = (blockTags.indexOf(nextToken.value) !== -1);\n if (value === \" 0; rowsToAdd--)\n code += \"\\n\";\n breakBefore = true;\n if (!is(token, \"comment\") && !token.type.match(/^(comment|string)$/))\n value = value.trimLeft();\n }\n if (value) {\n if (token.type === \"keyword\" && value.match(/^(if|else|elseif|for|foreach|while|switch)$/)) {\n parents[depth] = value;\n trimNext();\n spaceAfter = true;\n if (value.match(/^(else|elseif)$/)) {\n if (code.match(/\\}[\\s]*$/)) {\n trimCode();\n spaceBefore = true;\n }\n }\n }\n else if (token.type === \"paren.lparen\") {\n trimNext();\n if (value.substr(-1) === \"{\") {\n spaceAfter = true;\n indentNextLine = false;\n if (!inTag)\n rowsToAdd = 1;\n }\n if (value.substr(0, 1) === \"{\") {\n spaceBefore = true;\n if (code.substr(-1) !== '[' && code.trimRight().substr(-1) === '[') {\n trimCode();\n spaceBefore = false;\n }\n else if (code.trimRight().substr(-1) === ')') {\n trimCode();\n }\n else {\n trimLine();\n }\n }\n }\n else if (token.type === \"paren.rparen\") {\n unindent = 1;\n if (value.substr(0, 1) === \"}\") {\n if (parents[depth - 1] === 'case')\n unindent++;\n if (code.trimRight().substr(-1) === '{') {\n trimCode();\n }\n else {\n spaceBefore = true;\n if (inCSS)\n rowsToAdd += 2;\n }\n }\n if (value.substr(0, 1) === \"]\") {\n if (code.substr(-1) !== '}' && code.trimRight().substr(-1) === '}') {\n spaceBefore = false;\n indent++;\n trimCode();\n }\n }\n if (value.substr(0, 1) === \")\") {\n if (code.substr(-1) !== '(' && code.trimRight().substr(-1) === '(') {\n spaceBefore = false;\n indent++;\n trimCode();\n }\n }\n trimLine();\n }\n else if ((token.type === \"keyword.operator\" || token.type === \"keyword\") && value.match(/^(=|==|===|!=|!==|&&|\\|\\||and|or|xor|\\+=|.=|>|>=|<|<=|=>)$/)) {\n trimCode();\n trimNext();\n spaceBefore = true;\n spaceAfter = true;\n }\n else if (token.type === \"punctuation.operator\" && value === ';') {\n trimCode();\n trimNext();\n spaceAfter = true;\n if (inCSS)\n rowsToAdd++;\n }\n else if (token.type === \"punctuation.operator\" && value.match(/^(:|,)$/)) {\n trimCode();\n trimNext();\n if (value.match(/^(,)$/) && curlyDepth > 0 && roundDepth === 0 && formatOptions.lineBreaksAfterCommasInCurlyBlock) {\n rowsToAdd++;\n }\n else {\n spaceAfter = true;\n breakBefore = false;\n }\n }\n else if (token.type === \"support.php_tag\" && value === \"?>\" && !breakBefore) {\n trimCode();\n spaceBefore = true;\n }\n else if (is(token, \"attribute-name\") && code.substr(-1).match(/^\\s$/)) {\n spaceBefore = true;\n }\n else if (is(token, \"attribute-equals\")) {\n trimLine();\n trimNext();\n }\n else if (is(token, \"tag-close\")) {\n trimLine();\n if (value === \"/>\")\n spaceBefore = true;\n }\n else if (token.type === \"keyword\" && value.match(/^(case|default)$/)) {\n if (caseBody)\n unindent = 1;\n }\n if (breakBefore && !(token.type.match(/^(comment)$/) && !value.substr(0, 1).match(/^[/#]$/)) && !(token.type.match(/^(string)$/) && !value.substr(0, 1).match(/^['\"@]$/))) {\n indent = lastIndent;\n if (depth > lastDepth) {\n indent++;\n for (i = depth; i > lastDepth; i--)\n levels[i] = indent;\n }\n else if (depth < lastDepth)\n indent = levels[depth];\n lastDepth = depth;\n lastIndent = indent;\n if (unindent)\n indent -= unindent;\n if (indentNextLine && !roundDepth) {\n indent++;\n indentNextLine = false;\n }\n for (i = 0; i < indent; i++)\n code += tabString;\n }\n if (token.type === \"keyword\" && value.match(/^(case|default)$/)) {\n if (caseBody === false) {\n parents[depth] = value;\n depth++;\n caseBody = true;\n }\n }\n else if (token.type === \"keyword\" && value.match(/^(break)$/)) {\n if (parents[depth - 1] && parents[depth - 1].match(/^(case|default)$/)) {\n depth--;\n caseBody = false;\n }\n }\n if (token.type === \"paren.lparen\") {\n roundDepth += (value.match(/\\(/g) || []).length;\n curlyDepth += (value.match(/\\{/g) || []).length;\n depth += value.length;\n }\n if (token.type === \"keyword\" && value.match(/^(if|else|elseif|for|while)$/)) {\n indentNextLine = true;\n roundDepth = 0;\n }\n else if (!roundDepth && value.trim() && token.type !== \"comment\")\n indentNextLine = false;\n if (token.type === \"paren.rparen\") {\n roundDepth -= (value.match(/\\)/g) || []).length;\n curlyDepth -= (value.match(/\\}/g) || []).length;\n for (i = 0; i < value.length; i++) {\n depth--;\n if (value.substr(i, 1) === '}' && parents[depth] === 'case') {\n depth--;\n }\n }\n }\n if (token.type == \"text\")\n value = value.replace(/\\s+$/, \" \");\n if (spaceBefore && !breakBefore) {\n trimLine();\n if (code.substr(-1) !== \"\\n\")\n code += \" \";\n }\n code += value;\n if (spaceAfter)\n code += \" \";\n breakBefore = false;\n spaceBefore = false;\n spaceAfter = false;\n if ((is(token, \"tag-close\") && (inBlock || blockTags.indexOf(tagName) !== -1)) || (is(token, \"doctype\") && value === \">\")) {\n if (inBlock && nextToken && nextToken.value === \"\") {\n depth--;\n }\n }\n if (is(token, \"tag-name\")) {\n tagName = value;\n }\n row = curRow;\n }\n }\n token = nextToken;\n }\n code = code.trim();\n session.doc.setValue(code);\n};\nexports.commands = [{\n name: \"beautify\",\n description: \"Format selection (Beautify)\",\n exec: function (editor) {\n exports.beautify(editor.session);\n },\n bindKey: \"Ctrl-Shift-B\"\n }];\n\n}); (function() {\n ace.require([\"ace/ext/beautify\"], function(m) {\n if (typeof module == \"object\" && typeof exports == \"object\" && module) {\n module.exports = m;\n }\n });\n })();\n ","ace.define(\"ace/ext/searchbox-css\",[\"require\",\"exports\",\"module\"], function(require, exports, module){module.exports = \"\\n\\n/* ------------------------------------------------------------------------------------------\\n * Editor Search Form\\n * --------------------------------------------------------------------------------------- */\\n.ace_search {\\n background-color: #ddd;\\n color: #666;\\n border: 1px solid #cbcbcb;\\n border-top: 0 none;\\n overflow: hidden;\\n margin: 0;\\n padding: 4px 6px 0 4px;\\n position: absolute;\\n top: 0;\\n z-index: 99;\\n white-space: normal;\\n}\\n.ace_search.left {\\n border-left: 0 none;\\n border-radius: 0px 0px 5px 0px;\\n left: 0;\\n}\\n.ace_search.right {\\n border-radius: 0px 0px 0px 5px;\\n border-right: 0 none;\\n right: 0;\\n}\\n\\n.ace_search_form, .ace_replace_form {\\n margin: 0 20px 4px 0;\\n overflow: hidden;\\n line-height: 1.9;\\n}\\n.ace_replace_form {\\n margin-right: 0;\\n}\\n.ace_search_form.ace_nomatch {\\n outline: 1px solid red;\\n}\\n\\n.ace_search_field {\\n border-radius: 3px 0 0 3px;\\n background-color: white;\\n color: black;\\n border: 1px solid #cbcbcb;\\n border-right: 0 none;\\n outline: 0;\\n padding: 0;\\n font-size: inherit;\\n margin: 0;\\n line-height: inherit;\\n padding: 0 6px;\\n min-width: 17em;\\n vertical-align: top;\\n min-height: 1.8em;\\n box-sizing: content-box;\\n}\\n.ace_searchbtn {\\n border: 1px solid #cbcbcb;\\n line-height: inherit;\\n display: inline-block;\\n padding: 0 6px;\\n background: #fff;\\n border-right: 0 none;\\n border-left: 1px solid #dcdcdc;\\n cursor: pointer;\\n margin: 0;\\n position: relative;\\n color: #666;\\n}\\n.ace_searchbtn:last-child {\\n border-radius: 0 3px 3px 0;\\n border-right: 1px solid #cbcbcb;\\n}\\n.ace_searchbtn:disabled {\\n background: none;\\n cursor: default;\\n}\\n.ace_searchbtn:hover {\\n background-color: #eef1f6;\\n}\\n.ace_searchbtn.prev, .ace_searchbtn.next {\\n padding: 0px 0.7em\\n}\\n.ace_searchbtn.prev:after, .ace_searchbtn.next:after {\\n content: \\\"\\\";\\n border: solid 2px #888;\\n width: 0.5em;\\n height: 0.5em;\\n border-width: 2px 0 0 2px;\\n display:inline-block;\\n transform: rotate(-45deg);\\n}\\n.ace_searchbtn.next:after {\\n border-width: 0 2px 2px 0 ;\\n}\\n.ace_searchbtn_close {\\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAcCAYAAABRVo5BAAAAZ0lEQVR42u2SUQrAMAhDvazn8OjZBilCkYVVxiis8H4CT0VrAJb4WHT3C5xU2a2IQZXJjiQIRMdkEoJ5Q2yMqpfDIo+XY4k6h+YXOyKqTIj5REaxloNAd0xiKmAtsTHqW8sR2W5f7gCu5nWFUpVjZwAAAABJRU5ErkJggg==) no-repeat 50% 0;\\n border-radius: 50%;\\n border: 0 none;\\n color: #656565;\\n cursor: pointer;\\n font: 16px/16px Arial;\\n padding: 0;\\n height: 14px;\\n width: 14px;\\n top: 9px;\\n right: 7px;\\n position: absolute;\\n}\\n.ace_searchbtn_close:hover {\\n background-color: #656565;\\n background-position: 50% 100%;\\n color: white;\\n}\\n\\n.ace_button {\\n margin-left: 2px;\\n cursor: pointer;\\n -webkit-user-select: none;\\n -moz-user-select: none;\\n -o-user-select: none;\\n -ms-user-select: none;\\n user-select: none;\\n overflow: hidden;\\n opacity: 0.7;\\n border: 1px solid rgba(100,100,100,0.23);\\n padding: 1px;\\n box-sizing: border-box!important;\\n color: black;\\n}\\n\\n.ace_button:hover {\\n background-color: #eee;\\n opacity:1;\\n}\\n.ace_button:active {\\n background-color: #ddd;\\n}\\n\\n.ace_button.checked {\\n border-color: #3399ff;\\n opacity:1;\\n}\\n\\n.ace_search_options{\\n margin-bottom: 3px;\\n text-align: right;\\n -webkit-user-select: none;\\n -moz-user-select: none;\\n -o-user-select: none;\\n -ms-user-select: none;\\n user-select: none;\\n clear: both;\\n}\\n\\n.ace_search_counter {\\n float: left;\\n font-family: arial;\\n padding: 0 8px;\\n}\";\n\n});\n\nace.define(\"ace/ext/searchbox\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\",\"ace/lib/lang\",\"ace/lib/event\",\"ace/ext/searchbox-css\",\"ace/keyboard/hash_handler\",\"ace/lib/keys\",\"ace/config\"], function(require, exports, module){\"use strict\";\nvar dom = require(\"../lib/dom\");\nvar lang = require(\"../lib/lang\");\nvar event = require(\"../lib/event\");\nvar searchboxCss = require(\"./searchbox-css\");\nvar HashHandler = require(\"../keyboard/hash_handler\").HashHandler;\nvar keyUtil = require(\"../lib/keys\");\nvar nls = require(\"../config\").nls;\nvar MAX_COUNT = 999;\ndom.importCssString(searchboxCss, \"ace_searchbox\", false);\nvar SearchBox = /** @class */ (function () {\n function SearchBox(editor, range, showReplaceForm) {\n var div = dom.createElement(\"div\");\n dom.buildDom([\"div\", { class: \"ace_search right\" },\n [\"span\", { action: \"hide\", class: \"ace_searchbtn_close\" }],\n [\"div\", { class: \"ace_search_form\" },\n [\"input\", { class: \"ace_search_field\", placeholder: nls(\"Search for\"), spellcheck: \"false\" }],\n [\"span\", { action: \"findPrev\", class: \"ace_searchbtn prev\" }, \"\\u200b\"],\n [\"span\", { action: \"findNext\", class: \"ace_searchbtn next\" }, \"\\u200b\"],\n [\"span\", { action: \"findAll\", class: \"ace_searchbtn\", title: \"Alt-Enter\" }, nls(\"All\")]\n ],\n [\"div\", { class: \"ace_replace_form\" },\n [\"input\", { class: \"ace_search_field\", placeholder: nls(\"Replace with\"), spellcheck: \"false\" }],\n [\"span\", { action: \"replaceAndFindNext\", class: \"ace_searchbtn\" }, nls(\"Replace\")],\n [\"span\", { action: \"replaceAll\", class: \"ace_searchbtn\" }, nls(\"All\")]\n ],\n [\"div\", { class: \"ace_search_options\" },\n [\"span\", { action: \"toggleReplace\", class: \"ace_button\", title: nls(\"Toggle Replace mode\"),\n style: \"float:left;margin-top:-2px;padding:0 5px;\" }, \"+\"],\n [\"span\", { class: \"ace_search_counter\" }],\n [\"span\", { action: \"toggleRegexpMode\", class: \"ace_button\", title: nls(\"RegExp Search\") }, \".*\"],\n [\"span\", { action: \"toggleCaseSensitive\", class: \"ace_button\", title: nls(\"CaseSensitive Search\") }, \"Aa\"],\n [\"span\", { action: \"toggleWholeWords\", class: \"ace_button\", title: nls(\"Whole Word Search\") }, \"\\\\b\"],\n [\"span\", { action: \"searchInSelection\", class: \"ace_button\", title: nls(\"Search In Selection\") }, \"S\"]\n ]\n ], div);\n this.element = div.firstChild;\n this.setSession = this.setSession.bind(this);\n this.$init();\n this.setEditor(editor);\n dom.importCssString(searchboxCss, \"ace_searchbox\", editor.container);\n }\n SearchBox.prototype.setEditor = function (editor) {\n editor.searchBox = this;\n editor.renderer.scroller.appendChild(this.element);\n this.editor = editor;\n };\n SearchBox.prototype.setSession = function (e) {\n this.searchRange = null;\n this.$syncOptions(true);\n };\n SearchBox.prototype.$initElements = function (sb) {\n this.searchBox = sb.querySelector(\".ace_search_form\");\n this.replaceBox = sb.querySelector(\".ace_replace_form\");\n this.searchOption = sb.querySelector(\"[action=searchInSelection]\");\n this.replaceOption = sb.querySelector(\"[action=toggleReplace]\");\n this.regExpOption = sb.querySelector(\"[action=toggleRegexpMode]\");\n this.caseSensitiveOption = sb.querySelector(\"[action=toggleCaseSensitive]\");\n this.wholeWordOption = sb.querySelector(\"[action=toggleWholeWords]\");\n this.searchInput = this.searchBox.querySelector(\".ace_search_field\");\n this.replaceInput = this.replaceBox.querySelector(\".ace_search_field\");\n this.searchCounter = sb.querySelector(\".ace_search_counter\");\n };\n SearchBox.prototype.$init = function () {\n var sb = this.element;\n this.$initElements(sb);\n var _this = this;\n event.addListener(sb, \"mousedown\", function (e) {\n setTimeout(function () {\n _this.activeInput.focus();\n }, 0);\n event.stopPropagation(e);\n });\n event.addListener(sb, \"click\", function (e) {\n var t = e.target || e.srcElement;\n var action = t.getAttribute(\"action\");\n if (action && _this[action])\n _this[action]();\n else if (_this.$searchBarKb.commands[action])\n _this.$searchBarKb.commands[action].exec(_this);\n event.stopPropagation(e);\n });\n event.addCommandKeyListener(sb, function (e, hashId, keyCode) {\n var keyString = keyUtil.keyCodeToString(keyCode);\n var command = _this.$searchBarKb.findKeyCommand(hashId, keyString);\n if (command && command.exec) {\n command.exec(_this);\n event.stopEvent(e);\n }\n });\n this.$onChange = lang.delayedCall(function () {\n _this.find(false, false);\n });\n event.addListener(this.searchInput, \"input\", function () {\n _this.$onChange.schedule(20);\n });\n event.addListener(this.searchInput, \"focus\", function () {\n _this.activeInput = _this.searchInput;\n _this.searchInput.value && _this.highlight();\n });\n event.addListener(this.replaceInput, \"focus\", function () {\n _this.activeInput = _this.replaceInput;\n _this.searchInput.value && _this.highlight();\n });\n };\n SearchBox.prototype.setSearchRange = function (range) {\n this.searchRange = range;\n if (range) {\n this.searchRangeMarker = this.editor.session.addMarker(range, \"ace_active-line\");\n }\n else if (this.searchRangeMarker) {\n this.editor.session.removeMarker(this.searchRangeMarker);\n this.searchRangeMarker = null;\n }\n };\n SearchBox.prototype.$syncOptions = function (preventScroll) {\n dom.setCssClass(this.replaceOption, \"checked\", this.searchRange);\n dom.setCssClass(this.searchOption, \"checked\", this.searchOption.checked);\n this.replaceOption.textContent = this.replaceOption.checked ? \"-\" : \"+\";\n dom.setCssClass(this.regExpOption, \"checked\", this.regExpOption.checked);\n dom.setCssClass(this.wholeWordOption, \"checked\", this.wholeWordOption.checked);\n dom.setCssClass(this.caseSensitiveOption, \"checked\", this.caseSensitiveOption.checked);\n var readOnly = this.editor.getReadOnly();\n this.replaceOption.style.display = readOnly ? \"none\" : \"\";\n this.replaceBox.style.display = this.replaceOption.checked && !readOnly ? \"\" : \"none\";\n this.find(false, false, preventScroll);\n };\n SearchBox.prototype.highlight = function (re) {\n this.editor.session.highlight(re || this.editor.$search.$options.re);\n this.editor.renderer.updateBackMarkers();\n };\n SearchBox.prototype.find = function (skipCurrent, backwards, preventScroll) {\n var range = this.editor.find(this.searchInput.value, {\n skipCurrent: skipCurrent,\n backwards: backwards,\n wrap: true,\n regExp: this.regExpOption.checked,\n caseSensitive: this.caseSensitiveOption.checked,\n wholeWord: this.wholeWordOption.checked,\n preventScroll: preventScroll,\n range: this.searchRange\n });\n var noMatch = !range && this.searchInput.value;\n dom.setCssClass(this.searchBox, \"ace_nomatch\", noMatch);\n this.editor._emit(\"findSearchBox\", { match: !noMatch });\n this.highlight();\n this.updateCounter();\n };\n SearchBox.prototype.updateCounter = function () {\n var editor = this.editor;\n var regex = editor.$search.$options.re;\n var supportsUnicodeFlag = regex.unicode;\n var all = 0;\n var before = 0;\n if (regex) {\n var value = this.searchRange\n ? editor.session.getTextRange(this.searchRange)\n : editor.getValue();\n var offset = editor.session.doc.positionToIndex(editor.selection.anchor);\n if (this.searchRange)\n offset -= editor.session.doc.positionToIndex(this.searchRange.start);\n var last = regex.lastIndex = 0;\n var m;\n while ((m = regex.exec(value))) {\n all++;\n last = m.index;\n if (last <= offset)\n before++;\n if (all > MAX_COUNT)\n break;\n if (!m[0]) {\n regex.lastIndex = last += lang.skipEmptyMatch(value, last, supportsUnicodeFlag);\n if (last >= value.length)\n break;\n }\n }\n }\n this.searchCounter.textContent = nls(\"$0 of $1\", [before, (all > MAX_COUNT ? MAX_COUNT + \"+\" : all)]);\n };\n SearchBox.prototype.findNext = function () {\n this.find(true, false);\n };\n SearchBox.prototype.findPrev = function () {\n this.find(true, true);\n };\n SearchBox.prototype.findAll = function () {\n var range = this.editor.findAll(this.searchInput.value, {\n regExp: this.regExpOption.checked,\n caseSensitive: this.caseSensitiveOption.checked,\n wholeWord: this.wholeWordOption.checked\n });\n var noMatch = !range && this.searchInput.value;\n dom.setCssClass(this.searchBox, \"ace_nomatch\", noMatch);\n this.editor._emit(\"findSearchBox\", { match: !noMatch });\n this.highlight();\n this.hide();\n };\n SearchBox.prototype.replace = function () {\n if (!this.editor.getReadOnly())\n this.editor.replace(this.replaceInput.value);\n };\n SearchBox.prototype.replaceAndFindNext = function () {\n if (!this.editor.getReadOnly()) {\n this.editor.replace(this.replaceInput.value);\n this.findNext();\n }\n };\n SearchBox.prototype.replaceAll = function () {\n if (!this.editor.getReadOnly())\n this.editor.replaceAll(this.replaceInput.value);\n };\n SearchBox.prototype.hide = function () {\n this.active = false;\n this.setSearchRange(null);\n this.editor.off(\"changeSession\", this.setSession);\n this.element.style.display = \"none\";\n this.editor.keyBinding.removeKeyboardHandler(this.$closeSearchBarKb);\n this.editor.focus();\n };\n SearchBox.prototype.show = function (value, isReplace) {\n this.active = true;\n this.editor.on(\"changeSession\", this.setSession);\n this.element.style.display = \"\";\n this.replaceOption.checked = isReplace;\n if (value)\n this.searchInput.value = value;\n this.searchInput.focus();\n this.searchInput.select();\n this.editor.keyBinding.addKeyboardHandler(this.$closeSearchBarKb);\n this.$syncOptions(true);\n };\n SearchBox.prototype.isFocused = function () {\n var el = document.activeElement;\n return el == this.searchInput || el == this.replaceInput;\n };\n return SearchBox;\n}());\nvar $searchBarKb = new HashHandler();\n$searchBarKb.bindKeys({\n \"Ctrl-f|Command-f\": function (sb) {\n var isReplace = sb.isReplace = !sb.isReplace;\n sb.replaceBox.style.display = isReplace ? \"\" : \"none\";\n sb.replaceOption.checked = false;\n sb.$syncOptions();\n sb.searchInput.focus();\n },\n \"Ctrl-H|Command-Option-F\": function (sb) {\n if (sb.editor.getReadOnly())\n return;\n sb.replaceOption.checked = true;\n sb.$syncOptions();\n sb.replaceInput.focus();\n },\n \"Ctrl-G|Command-G\": function (sb) {\n sb.findNext();\n },\n \"Ctrl-Shift-G|Command-Shift-G\": function (sb) {\n sb.findPrev();\n },\n \"esc\": function (sb) {\n setTimeout(function () { sb.hide(); });\n },\n \"Return\": function (sb) {\n if (sb.activeInput == sb.replaceInput)\n sb.replace();\n sb.findNext();\n },\n \"Shift-Return\": function (sb) {\n if (sb.activeInput == sb.replaceInput)\n sb.replace();\n sb.findPrev();\n },\n \"Alt-Return\": function (sb) {\n if (sb.activeInput == sb.replaceInput)\n sb.replaceAll();\n sb.findAll();\n },\n \"Tab\": function (sb) {\n (sb.activeInput == sb.replaceInput ? sb.searchInput : sb.replaceInput).focus();\n }\n});\n$searchBarKb.addCommands([{\n name: \"toggleRegexpMode\",\n bindKey: { win: \"Alt-R|Alt-/\", mac: \"Ctrl-Alt-R|Ctrl-Alt-/\" },\n exec: function (sb) {\n sb.regExpOption.checked = !sb.regExpOption.checked;\n sb.$syncOptions();\n }\n }, {\n name: \"toggleCaseSensitive\",\n bindKey: { win: \"Alt-C|Alt-I\", mac: \"Ctrl-Alt-R|Ctrl-Alt-I\" },\n exec: function (sb) {\n sb.caseSensitiveOption.checked = !sb.caseSensitiveOption.checked;\n sb.$syncOptions();\n }\n }, {\n name: \"toggleWholeWords\",\n bindKey: { win: \"Alt-B|Alt-W\", mac: \"Ctrl-Alt-B|Ctrl-Alt-W\" },\n exec: function (sb) {\n sb.wholeWordOption.checked = !sb.wholeWordOption.checked;\n sb.$syncOptions();\n }\n }, {\n name: \"toggleReplace\",\n exec: function (sb) {\n sb.replaceOption.checked = !sb.replaceOption.checked;\n sb.$syncOptions();\n }\n }, {\n name: \"searchInSelection\",\n exec: function (sb) {\n sb.searchOption.checked = !sb.searchRange;\n sb.setSearchRange(sb.searchOption.checked && sb.editor.getSelectionRange());\n sb.$syncOptions();\n }\n }]);\nvar $closeSearchBarKb = new HashHandler([{\n bindKey: \"Esc\",\n name: \"closeSearchBar\",\n exec: function (editor) {\n editor.searchBox.hide();\n }\n }]);\nSearchBox.prototype.$searchBarKb = $searchBarKb;\nSearchBox.prototype.$closeSearchBarKb = $closeSearchBarKb;\nexports.SearchBox = SearchBox;\nexports.Search = function (editor, isReplace) {\n var sb = editor.searchBox || new SearchBox(editor);\n sb.show(editor.session.getTextRange(), isReplace);\n};\n\n}); (function() {\n ace.require([\"ace/ext/searchbox\"], function(m) {\n if (typeof module == \"object\" && typeof exports == \"object\" && module) {\n module.exports = m;\n }\n });\n })();\n ","ace.define(\"ace/mode/css_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/mode/text_highlight_rules\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar lang = require(\"../lib/lang\");\nvar TextHighlightRules = require(\"./text_highlight_rules\").TextHighlightRules;\nvar supportType = exports.supportType = \"align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index\";\nvar supportFunction = exports.supportFunction = \"rgb|rgba|url|attr|counter|counters\";\nvar supportConstant = exports.supportConstant = \"absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|flex-end|flex-start|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom\";\nvar supportConstantColor = exports.supportConstantColor = \"aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|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|green|greenyellow|grey|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|magenta|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|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen\";\nvar supportConstantFonts = exports.supportConstantFonts = \"arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace\";\nvar numRe = exports.numRe = \"\\\\-?(?:(?:[0-9]+(?:\\\\.[0-9]+)?)|(?:\\\\.[0-9]+))\";\nvar pseudoElements = exports.pseudoElements = \"(\\\\:+)\\\\b(after|before|first-letter|first-line|moz-selection|selection)\\\\b\";\nvar pseudoClasses = exports.pseudoClasses = \"(:)\\\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\\\b\";\nvar CssHighlightRules = function () {\n var keywordMapper = this.createKeywordMapper({\n \"support.function\": supportFunction,\n \"support.constant\": supportConstant,\n \"support.type\": supportType,\n \"support.constant.color\": supportConstantColor,\n \"support.constant.fonts\": supportConstantFonts\n }, \"text\", true);\n this.$rules = {\n \"start\": [{\n include: [\"strings\", \"url\", \"comments\"]\n }, {\n token: \"paren.lparen\",\n regex: \"\\\\{\",\n next: \"ruleset\"\n }, {\n token: \"paren.rparen\",\n regex: \"\\\\}\"\n }, {\n token: \"string\",\n regex: \"@(?!viewport)\",\n next: \"media\"\n }, {\n token: \"keyword\",\n regex: \"#[a-z0-9-_]+\"\n }, {\n token: \"keyword\",\n regex: \"%\"\n }, {\n token: \"variable\",\n regex: \"\\\\.[a-z0-9-_]+\"\n }, {\n token: \"string\",\n regex: \":[a-z0-9-_]+\"\n }, {\n token: \"constant.numeric\",\n regex: numRe\n }, {\n token: \"constant\",\n regex: \"[a-z0-9-_]+\"\n }, {\n caseInsensitive: true\n }],\n \"media\": [{\n include: [\"strings\", \"url\", \"comments\"]\n }, {\n token: \"paren.lparen\",\n regex: \"\\\\{\",\n next: \"start\"\n }, {\n token: \"paren.rparen\",\n regex: \"\\\\}\",\n next: \"start\"\n }, {\n token: \"string\",\n regex: \";\",\n next: \"start\"\n }, {\n token: \"keyword\",\n regex: \"(?:media|supports|document|charset|import|namespace|media|supports|document\"\n + \"|page|font|keyframes|viewport|counter-style|font-feature-values\"\n + \"|swash|ornaments|annotation|stylistic|styleset|character-variant)\"\n }],\n \"comments\": [{\n token: \"comment\",\n regex: \"\\\\/\\\\*\",\n push: [{\n token: \"comment\",\n regex: \"\\\\*\\\\/\",\n next: \"pop\"\n }, {\n defaultToken: \"comment\"\n }]\n }],\n \"ruleset\": [{\n regex: \"-(webkit|ms|moz|o)-\",\n token: \"text\"\n }, {\n token: \"punctuation.operator\",\n regex: \"[:;]\"\n }, {\n token: \"paren.rparen\",\n regex: \"\\\\}\",\n next: \"start\"\n }, {\n include: [\"strings\", \"url\", \"comments\"]\n }, {\n token: [\"constant.numeric\", \"keyword\"],\n regex: \"(\" + numRe + \")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)\"\n }, {\n token: \"constant.numeric\",\n regex: numRe\n }, {\n token: \"constant.numeric\",\n regex: \"#[a-f0-9]{6}\"\n }, {\n token: \"constant.numeric\",\n regex: \"#[a-f0-9]{3}\"\n }, {\n token: [\"punctuation\", \"entity.other.attribute-name.pseudo-element.css\"],\n regex: pseudoElements\n }, {\n token: [\"punctuation\", \"entity.other.attribute-name.pseudo-class.css\"],\n regex: pseudoClasses\n }, {\n include: \"url\"\n }, {\n token: keywordMapper,\n regex: \"\\\\-?[a-zA-Z_][a-zA-Z0-9_\\\\-]*\"\n }, {\n caseInsensitive: true\n }],\n url: [{\n token: \"support.function\",\n regex: \"(?:url(:?-prefix)?|domain|regexp)\\\\(\",\n push: [{\n token: \"support.function\",\n regex: \"\\\\)\",\n next: \"pop\"\n }, {\n defaultToken: \"string\"\n }]\n }],\n strings: [{\n token: \"string.start\",\n regex: \"'\",\n push: [{\n token: \"string.end\",\n regex: \"'|$\",\n next: \"pop\"\n }, {\n include: \"escapes\"\n }, {\n token: \"constant.language.escape\",\n regex: /\\\\$/,\n consumeLineEnd: true\n }, {\n defaultToken: \"string\"\n }]\n }, {\n token: \"string.start\",\n regex: '\"',\n push: [{\n token: \"string.end\",\n regex: '\"|$',\n next: \"pop\"\n }, {\n include: \"escapes\"\n }, {\n token: \"constant.language.escape\",\n regex: /\\\\$/,\n consumeLineEnd: true\n }, {\n defaultToken: \"string\"\n }]\n }],\n escapes: [{\n token: \"constant.language.escape\",\n regex: /\\\\([a-fA-F\\d]{1,6}|[^a-fA-F\\d])/\n }]\n };\n this.normalizeRules();\n};\noop.inherits(CssHighlightRules, TextHighlightRules);\nexports.CssHighlightRules = CssHighlightRules;\n\n});\n\nace.define(\"ace/mode/matching_brace_outdent\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar Range = require(\"../range\").Range;\nvar MatchingBraceOutdent = function () { };\n(function () {\n this.checkOutdent = function (line, input) {\n if (!/^\\s+$/.test(line))\n return false;\n return /^\\s*\\}/.test(input);\n };\n this.autoOutdent = function (doc, row) {\n var line = doc.getLine(row);\n var match = line.match(/^(\\s*\\})/);\n if (!match)\n return 0;\n var column = match[1].length;\n var openBracePos = doc.findMatchingBracket({ row: row, column: column });\n if (!openBracePos || openBracePos.row == row)\n return 0;\n var indent = this.$getIndent(doc.getLine(openBracePos.row));\n doc.replace(new Range(row, 0, row, column - 1), indent);\n };\n this.$getIndent = function (line) {\n return line.match(/^\\s*/)[0];\n };\n}).call(MatchingBraceOutdent.prototype);\nexports.MatchingBraceOutdent = MatchingBraceOutdent;\n\n});\n\nace.define(\"ace/mode/css_completions\",[\"require\",\"exports\",\"module\"], function(require, exports, module){\"use strict\";\nvar propertyMap = {\n \"background\": { \"#$0\": 1 },\n \"background-color\": { \"#$0\": 1, \"transparent\": 1, \"fixed\": 1 },\n \"background-image\": { \"url('/$0')\": 1 },\n \"background-repeat\": { \"repeat\": 1, \"repeat-x\": 1, \"repeat-y\": 1, \"no-repeat\": 1, \"inherit\": 1 },\n \"background-position\": { \"bottom\": 2, \"center\": 2, \"left\": 2, \"right\": 2, \"top\": 2, \"inherit\": 2 },\n \"background-attachment\": { \"scroll\": 1, \"fixed\": 1 },\n \"background-size\": { \"cover\": 1, \"contain\": 1 },\n \"background-clip\": { \"border-box\": 1, \"padding-box\": 1, \"content-box\": 1 },\n \"background-origin\": { \"border-box\": 1, \"padding-box\": 1, \"content-box\": 1 },\n \"border\": { \"solid $0\": 1, \"dashed $0\": 1, \"dotted $0\": 1, \"#$0\": 1 },\n \"border-color\": { \"#$0\": 1 },\n \"border-style\": { \"solid\": 2, \"dashed\": 2, \"dotted\": 2, \"double\": 2, \"groove\": 2, \"hidden\": 2, \"inherit\": 2, \"inset\": 2, \"none\": 2, \"outset\": 2, \"ridged\": 2 },\n \"border-collapse\": { \"collapse\": 1, \"separate\": 1 },\n \"bottom\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"clear\": { \"left\": 1, \"right\": 1, \"both\": 1, \"none\": 1 },\n \"color\": { \"#$0\": 1, \"rgb(#$00,0,0)\": 1 },\n \"cursor\": { \"default\": 1, \"pointer\": 1, \"move\": 1, \"text\": 1, \"wait\": 1, \"help\": 1, \"progress\": 1, \"n-resize\": 1, \"ne-resize\": 1, \"e-resize\": 1, \"se-resize\": 1, \"s-resize\": 1, \"sw-resize\": 1, \"w-resize\": 1, \"nw-resize\": 1 },\n \"display\": { \"none\": 1, \"block\": 1, \"inline\": 1, \"inline-block\": 1, \"table-cell\": 1 },\n \"empty-cells\": { \"show\": 1, \"hide\": 1 },\n \"float\": { \"left\": 1, \"right\": 1, \"none\": 1 },\n \"font-family\": { \"Arial\": 2, \"Comic Sans MS\": 2, \"Consolas\": 2, \"Courier New\": 2, \"Courier\": 2, \"Georgia\": 2, \"Monospace\": 2, \"Sans-Serif\": 2, \"Segoe UI\": 2, \"Tahoma\": 2, \"Times New Roman\": 2, \"Trebuchet MS\": 2, \"Verdana\": 1 },\n \"font-size\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"font-weight\": { \"bold\": 1, \"normal\": 1 },\n \"font-style\": { \"italic\": 1, \"normal\": 1 },\n \"font-variant\": { \"normal\": 1, \"small-caps\": 1 },\n \"height\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"left\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"letter-spacing\": { \"normal\": 1 },\n \"line-height\": { \"normal\": 1 },\n \"list-style-type\": { \"none\": 1, \"disc\": 1, \"circle\": 1, \"square\": 1, \"decimal\": 1, \"decimal-leading-zero\": 1, \"lower-roman\": 1, \"upper-roman\": 1, \"lower-greek\": 1, \"lower-latin\": 1, \"upper-latin\": 1, \"georgian\": 1, \"lower-alpha\": 1, \"upper-alpha\": 1 },\n \"margin\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"margin-right\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"margin-left\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"margin-top\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"margin-bottom\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"max-height\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"max-width\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"min-height\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"min-width\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"overflow\": { \"hidden\": 1, \"visible\": 1, \"auto\": 1, \"scroll\": 1 },\n \"overflow-x\": { \"hidden\": 1, \"visible\": 1, \"auto\": 1, \"scroll\": 1 },\n \"overflow-y\": { \"hidden\": 1, \"visible\": 1, \"auto\": 1, \"scroll\": 1 },\n \"padding\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"padding-top\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"padding-right\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"padding-bottom\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"padding-left\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"page-break-after\": { \"auto\": 1, \"always\": 1, \"avoid\": 1, \"left\": 1, \"right\": 1 },\n \"page-break-before\": { \"auto\": 1, \"always\": 1, \"avoid\": 1, \"left\": 1, \"right\": 1 },\n \"position\": { \"absolute\": 1, \"relative\": 1, \"fixed\": 1, \"static\": 1 },\n \"right\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"table-layout\": { \"fixed\": 1, \"auto\": 1 },\n \"text-decoration\": { \"none\": 1, \"underline\": 1, \"line-through\": 1, \"blink\": 1 },\n \"text-align\": { \"left\": 1, \"right\": 1, \"center\": 1, \"justify\": 1 },\n \"text-transform\": { \"capitalize\": 1, \"uppercase\": 1, \"lowercase\": 1, \"none\": 1 },\n \"top\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"vertical-align\": { \"top\": 1, \"bottom\": 1 },\n \"visibility\": { \"hidden\": 1, \"visible\": 1 },\n \"white-space\": { \"nowrap\": 1, \"normal\": 1, \"pre\": 1, \"pre-line\": 1, \"pre-wrap\": 1 },\n \"width\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"word-spacing\": { \"normal\": 1 },\n \"filter\": { \"alpha(opacity=$0100)\": 1 },\n \"text-shadow\": { \"$02px 2px 2px #777\": 1 },\n \"text-overflow\": { \"ellipsis-word\": 1, \"clip\": 1, \"ellipsis\": 1 },\n \"-moz-border-radius\": 1,\n \"-moz-border-radius-topright\": 1,\n \"-moz-border-radius-bottomright\": 1,\n \"-moz-border-radius-topleft\": 1,\n \"-moz-border-radius-bottomleft\": 1,\n \"-webkit-border-radius\": 1,\n \"-webkit-border-top-right-radius\": 1,\n \"-webkit-border-top-left-radius\": 1,\n \"-webkit-border-bottom-right-radius\": 1,\n \"-webkit-border-bottom-left-radius\": 1,\n \"-moz-box-shadow\": 1,\n \"-webkit-box-shadow\": 1,\n \"transform\": { \"rotate($00deg)\": 1, \"skew($00deg)\": 1 },\n \"-moz-transform\": { \"rotate($00deg)\": 1, \"skew($00deg)\": 1 },\n \"-webkit-transform\": { \"rotate($00deg)\": 1, \"skew($00deg)\": 1 }\n};\nvar CssCompletions = function () {\n};\n(function () {\n this.completionsDefined = false;\n this.defineCompletions = function () {\n if (document) {\n var style = document.createElement('c').style;\n for (var i in style) {\n if (typeof style[i] !== 'string')\n continue;\n var name = i.replace(/[A-Z]/g, function (x) {\n return '-' + x.toLowerCase();\n });\n if (!propertyMap.hasOwnProperty(name))\n propertyMap[name] = 1;\n }\n }\n this.completionsDefined = true;\n };\n this.getCompletions = function (state, session, pos, prefix) {\n if (!this.completionsDefined) {\n this.defineCompletions();\n }\n if (state === 'ruleset' || session.$mode.$id == \"ace/mode/scss\") {\n var line = session.getLine(pos.row).substr(0, pos.column);\n var inParens = /\\([^)]*$/.test(line);\n if (inParens) {\n line = line.substr(line.lastIndexOf('(') + 1);\n }\n if (/:[^;]+$/.test(line)) {\n /([\\w\\-]+):[^:]*$/.test(line);\n return this.getPropertyValueCompletions(state, session, pos, prefix);\n }\n else {\n return this.getPropertyCompletions(state, session, pos, prefix, inParens);\n }\n }\n return [];\n };\n this.getPropertyCompletions = function (state, session, pos, prefix, skipSemicolon) {\n skipSemicolon = skipSemicolon || false;\n var properties = Object.keys(propertyMap);\n return properties.map(function (property) {\n return {\n caption: property,\n snippet: property + ': $0' + (skipSemicolon ? '' : ';'),\n meta: \"property\",\n score: 1000000\n };\n });\n };\n this.getPropertyValueCompletions = function (state, session, pos, prefix) {\n var line = session.getLine(pos.row).substr(0, pos.column);\n var property = (/([\\w\\-]+):[^:]*$/.exec(line) || {})[1];\n if (!property)\n return [];\n var values = [];\n if (property in propertyMap && typeof propertyMap[property] === \"object\") {\n values = Object.keys(propertyMap[property]);\n }\n return values.map(function (value) {\n return {\n caption: value,\n snippet: value,\n meta: \"property value\",\n score: 1000000\n };\n });\n };\n}).call(CssCompletions.prototype);\nexports.CssCompletions = CssCompletions;\n\n});\n\nace.define(\"ace/mode/behaviour/css\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/behaviour\",\"ace/mode/behaviour/cstyle\",\"ace/token_iterator\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../../lib/oop\");\nvar Behaviour = require(\"../behaviour\").Behaviour;\nvar CstyleBehaviour = require(\"./cstyle\").CstyleBehaviour;\nvar TokenIterator = require(\"../../token_iterator\").TokenIterator;\nvar CssBehaviour = function () {\n this.inherit(CstyleBehaviour);\n this.add(\"colon\", \"insertion\", function (state, action, editor, session, text) {\n if (text === ':' && editor.selection.isEmpty()) {\n var cursor = editor.getCursorPosition();\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n var token = iterator.getCurrentToken();\n if (token && token.value.match(/\\s+/)) {\n token = iterator.stepBackward();\n }\n if (token && token.type === 'support.type') {\n var line = session.doc.getLine(cursor.row);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n if (rightChar === ':') {\n return {\n text: '',\n selection: [1, 1]\n };\n }\n if (/^(\\s+[^;]|\\s*$)/.test(line.substring(cursor.column))) {\n return {\n text: ':;',\n selection: [1, 1]\n };\n }\n }\n }\n });\n this.add(\"colon\", \"deletion\", function (state, action, editor, session, range) {\n var selected = session.doc.getTextRange(range);\n if (!range.isMultiLine() && selected === ':') {\n var cursor = editor.getCursorPosition();\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n var token = iterator.getCurrentToken();\n if (token && token.value.match(/\\s+/)) {\n token = iterator.stepBackward();\n }\n if (token && token.type === 'support.type') {\n var line = session.doc.getLine(range.start.row);\n var rightChar = line.substring(range.end.column, range.end.column + 1);\n if (rightChar === ';') {\n range.end.column++;\n return range;\n }\n }\n }\n });\n this.add(\"semicolon\", \"insertion\", function (state, action, editor, session, text) {\n if (text === ';' && editor.selection.isEmpty()) {\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n if (rightChar === ';') {\n return {\n text: '',\n selection: [1, 1]\n };\n }\n }\n });\n this.add(\"!important\", \"insertion\", function (state, action, editor, session, text) {\n if (text === '!' && editor.selection.isEmpty()) {\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n if (/^\\s*(;|}|$)/.test(line.substring(cursor.column))) {\n return {\n text: '!important',\n selection: [10, 10]\n };\n }\n }\n });\n};\noop.inherits(CssBehaviour, CstyleBehaviour);\nexports.CssBehaviour = CssBehaviour;\n\n});\n\nace.define(\"ace/mode/folding/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/range\",\"ace/mode/folding/fold_mode\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../../lib/oop\");\nvar Range = require(\"../../range\").Range;\nvar BaseFoldMode = require(\"./fold_mode\").FoldMode;\nvar FoldMode = exports.FoldMode = function (commentRegex) {\n if (commentRegex) {\n this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.start));\n this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.end));\n }\n};\noop.inherits(FoldMode, BaseFoldMode);\n(function () {\n this.foldingStartMarker = /([\\{\\[\\(])[^\\}\\]\\)]*$|^\\s*(\\/\\*)/;\n this.foldingStopMarker = /^[^\\[\\{\\(]*([\\}\\]\\)])|^[\\s\\*]*(\\*\\/)/;\n this.singleLineBlockCommentRe = /^\\s*(\\/\\*).*\\*\\/\\s*$/;\n this.tripleStarBlockCommentRe = /^\\s*(\\/\\*\\*\\*).*\\*\\/\\s*$/;\n this.startRegionRe = /^\\s*(\\/\\*|\\/\\/)#?region\\b/;\n this._getFoldWidgetBase = this.getFoldWidget;\n this.getFoldWidget = function (session, foldStyle, row) {\n var line = session.getLine(row);\n if (this.singleLineBlockCommentRe.test(line)) {\n if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line))\n return \"\";\n }\n var fw = this._getFoldWidgetBase(session, foldStyle, row);\n if (!fw && this.startRegionRe.test(line))\n return \"start\"; // lineCommentRegionStart\n return fw;\n };\n this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) {\n var line = session.getLine(row);\n if (this.startRegionRe.test(line))\n return this.getCommentRegionBlock(session, line, row);\n var match = line.match(this.foldingStartMarker);\n if (match) {\n var i = match.index;\n if (match[1])\n return this.openingBracketBlock(session, match[1], row, i);\n var range = session.getCommentFoldRange(row, i + match[0].length, 1);\n if (range && !range.isMultiLine()) {\n if (forceMultiline) {\n range = this.getSectionRange(session, row);\n }\n else if (foldStyle != \"all\")\n range = null;\n }\n return range;\n }\n if (foldStyle === \"markbegin\")\n return;\n var match = line.match(this.foldingStopMarker);\n if (match) {\n var i = match.index + match[0].length;\n if (match[1])\n return this.closingBracketBlock(session, match[1], row, i);\n return session.getCommentFoldRange(row, i, -1);\n }\n };\n this.getSectionRange = function (session, row) {\n var line = session.getLine(row);\n var startIndent = line.search(/\\S/);\n var startRow = row;\n var startColumn = line.length;\n row = row + 1;\n var endRow = row;\n var maxRow = session.getLength();\n while (++row < maxRow) {\n line = session.getLine(row);\n var indent = line.search(/\\S/);\n if (indent === -1)\n continue;\n if (startIndent > indent)\n break;\n var subRange = this.getFoldWidgetRange(session, \"all\", row);\n if (subRange) {\n if (subRange.start.row <= startRow) {\n break;\n }\n else if (subRange.isMultiLine()) {\n row = subRange.end.row;\n }\n else if (startIndent == indent) {\n break;\n }\n }\n endRow = row;\n }\n return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);\n };\n this.getCommentRegionBlock = function (session, line, row) {\n var startColumn = line.search(/\\s*$/);\n var maxRow = session.getLength();\n var startRow = row;\n var re = /^\\s*(?:\\/\\*|\\/\\/|--)#?(end)?region\\b/;\n var depth = 1;\n while (++row < maxRow) {\n line = session.getLine(row);\n var m = re.exec(line);\n if (!m)\n continue;\n if (m[1])\n depth--;\n else\n depth++;\n if (!depth)\n break;\n }\n var endRow = row;\n if (endRow > startRow) {\n return new Range(startRow, startColumn, endRow, line.length);\n }\n };\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/css\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/css_highlight_rules\",\"ace/mode/matching_brace_outdent\",\"ace/worker/worker_client\",\"ace/mode/css_completions\",\"ace/mode/behaviour/css\",\"ace/mode/folding/cstyle\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar TextMode = require(\"./text\").Mode;\nvar CssHighlightRules = require(\"./css_highlight_rules\").CssHighlightRules;\nvar MatchingBraceOutdent = require(\"./matching_brace_outdent\").MatchingBraceOutdent;\nvar WorkerClient = require(\"../worker/worker_client\").WorkerClient;\nvar CssCompletions = require(\"./css_completions\").CssCompletions;\nvar CssBehaviour = require(\"./behaviour/css\").CssBehaviour;\nvar CStyleFoldMode = require(\"./folding/cstyle\").FoldMode;\nvar Mode = function () {\n this.HighlightRules = CssHighlightRules;\n this.$outdent = new MatchingBraceOutdent();\n this.$behaviour = new CssBehaviour();\n this.$completer = new CssCompletions();\n this.foldingRules = new CStyleFoldMode();\n};\noop.inherits(Mode, TextMode);\n(function () {\n this.foldingRules = \"cStyle\";\n this.blockComment = { start: \"/*\", end: \"*/\" };\n this.getNextLineIndent = function (state, line, tab) {\n var indent = this.$getIndent(line);\n var tokens = this.getTokenizer().getLineTokens(line, state).tokens;\n if (tokens.length && tokens[tokens.length - 1].type == \"comment\") {\n return indent;\n }\n var match = line.match(/^.*\\{\\s*$/);\n if (match) {\n indent += tab;\n }\n return indent;\n };\n this.checkOutdent = function (state, line, input) {\n return this.$outdent.checkOutdent(line, input);\n };\n this.autoOutdent = function (state, doc, row) {\n this.$outdent.autoOutdent(doc, row);\n };\n this.getCompletions = function (state, session, pos, prefix) {\n return this.$completer.getCompletions(state, session, pos, prefix);\n };\n this.createWorker = function (session) {\n var worker = new WorkerClient([\"ace\"], \"ace/mode/css_worker\", \"Worker\");\n worker.attachToDocument(session.getDocument());\n worker.on(\"annotate\", function (e) {\n session.setAnnotations(e.data);\n });\n worker.on(\"terminate\", function () {\n session.clearAnnotations();\n });\n return worker;\n };\n this.$id = \"ace/mode/css\";\n this.snippetFileId = \"ace/snippets/css\";\n}).call(Mode.prototype);\nexports.Mode = Mode;\n\n}); (function() {\n ace.require([\"ace/mode/css\"], function(m) {\n if (typeof module == \"object\" && typeof exports == \"object\" && module) {\n module.exports = m;\n }\n });\n })();\n ","ace.define(\"ace/mode/doc_comment_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar TextHighlightRules = require(\"./text_highlight_rules\").TextHighlightRules;\nvar DocCommentHighlightRules = function () {\n this.$rules = {\n \"start\": [\n {\n token: \"comment.doc.tag\",\n regex: \"@\\\\w+(?=\\\\s|$)\"\n }, DocCommentHighlightRules.getTagRule(), {\n defaultToken: \"comment.doc\",\n caseInsensitive: true\n }\n ]\n };\n};\noop.inherits(DocCommentHighlightRules, TextHighlightRules);\nDocCommentHighlightRules.getTagRule = function (start) {\n return {\n token: \"comment.doc.tag.storage.type\",\n regex: \"\\\\b(?:TODO|FIXME|XXX|HACK)\\\\b\"\n };\n};\nDocCommentHighlightRules.getStartRule = function (start) {\n return {\n token: \"comment.doc\",\n regex: \"\\\\/\\\\*(?=\\\\*)\",\n next: start\n };\n};\nDocCommentHighlightRules.getEndRule = function (start) {\n return {\n token: \"comment.doc\",\n regex: \"\\\\*\\\\/\",\n next: start\n };\n};\nexports.DocCommentHighlightRules = DocCommentHighlightRules;\n\n});\n\nace.define(\"ace/mode/golang_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/doc_comment_highlight_rules\",\"ace/mode/text_highlight_rules\"], function(require, exports, module){var oop = require(\"../lib/oop\");\nvar DocCommentHighlightRules = require(\"./doc_comment_highlight_rules\").DocCommentHighlightRules;\nvar TextHighlightRules = require(\"./text_highlight_rules\").TextHighlightRules;\nvar GolangHighlightRules = function () {\n var keywords = (\"else|break|case|return|goto|if|const|select|\" +\n \"continue|struct|default|switch|for|range|\" +\n \"func|import|package|chan|defer|fallthrough|go|interface|map|range|\" +\n \"select|type|var\");\n var builtinTypes = (\"string|uint8|uint16|uint32|uint64|int8|int16|int32|int64|float32|\" +\n \"float64|complex64|complex128|byte|rune|uint|int|uintptr|bool|error\");\n var builtinFunctions = (\"new|close|cap|copy|panic|panicln|print|println|len|make|delete|real|recover|imag|append\");\n var builtinConstants = (\"nil|true|false|iota\");\n var keywordMapper = this.createKeywordMapper({\n \"keyword\": keywords,\n \"constant.language\": builtinConstants,\n \"support.function\": builtinFunctions,\n \"support.type\": builtinTypes\n }, \"\");\n var stringEscapeRe = \"\\\\\\\\(?:[0-7]{3}|x\\\\h{2}|u{4}|U\\\\h{6}|[abfnrtv'\\\"\\\\\\\\])\".replace(/\\\\h/g, \"[a-fA-F\\\\d]\");\n this.$rules = {\n \"start\": [\n {\n token: \"comment\",\n regex: \"\\\\/\\\\/.*$\"\n },\n DocCommentHighlightRules.getStartRule(\"doc-start\"),\n {\n token: \"comment.start\",\n regex: \"\\\\/\\\\*\",\n next: \"comment\"\n }, {\n token: \"string\",\n regex: /\"(?:[^\"\\\\]|\\\\.)*?\"/\n }, {\n token: \"string\",\n regex: '`',\n next: \"bqstring\"\n }, {\n token: \"constant.numeric\",\n regex: \"'(?:[^\\\\'\\uD800-\\uDBFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|\" + stringEscapeRe.replace('\"', '') + \")'\"\n }, {\n token: \"constant.numeric\",\n regex: \"0[xX][0-9a-fA-F]+\\\\b\"\n }, {\n token: \"constant.numeric\",\n regex: \"[+-]?\\\\d+(?:(?:\\\\.\\\\d*)?(?:[eE][+-]?\\\\d+)?)?\\\\b\"\n }, {\n token: [\"keyword\", \"text\", \"entity.name.function\"],\n regex: \"(func)(\\\\s+)([a-zA-Z_$][a-zA-Z0-9_$]*)\\\\b\"\n }, {\n token: function (val) {\n if (val[val.length - 1] == \"(\") {\n return [{\n type: keywordMapper(val.slice(0, -1)) || \"support.function\",\n value: val.slice(0, -1)\n }, {\n type: \"paren.lparen\",\n value: val.slice(-1)\n }];\n }\n return keywordMapper(val) || \"identifier\";\n },\n regex: \"[a-zA-Z_$][a-zA-Z0-9_$]*\\\\b\\\\(?\"\n }, {\n token: \"keyword.operator\",\n regex: \"!|\\\\$|%|&|\\\\*|\\\\-\\\\-|\\\\-|\\\\+\\\\+|\\\\+|~|==|=|!=|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\\\|\\\\||\\\\?\\\\:|\\\\*=|%=|\\\\+=|\\\\-=|&=|\\\\^=\"\n }, {\n token: \"punctuation.operator\",\n regex: \"\\\\?|\\\\:|\\\\,|\\\\;|\\\\.\"\n }, {\n token: \"paren.lparen\",\n regex: \"[[({]\"\n }, {\n token: \"paren.rparen\",\n regex: \"[\\\\])}]\"\n }, {\n token: \"text\",\n regex: \"\\\\s+\"\n }\n ],\n \"comment\": [\n {\n token: \"comment.end\",\n regex: \"\\\\*\\\\/\",\n next: \"start\"\n }, {\n defaultToken: \"comment\"\n }\n ],\n \"bqstring\": [\n {\n token: \"string\",\n regex: '`',\n next: \"start\"\n }, {\n defaultToken: \"string\"\n }\n ]\n };\n this.embedRules(DocCommentHighlightRules, \"doc-\", [DocCommentHighlightRules.getEndRule(\"start\")]);\n};\noop.inherits(GolangHighlightRules, TextHighlightRules);\nexports.GolangHighlightRules = GolangHighlightRules;\n\n});\n\nace.define(\"ace/mode/matching_brace_outdent\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar Range = require(\"../range\").Range;\nvar MatchingBraceOutdent = function () { };\n(function () {\n this.checkOutdent = function (line, input) {\n if (!/^\\s+$/.test(line))\n return false;\n return /^\\s*\\}/.test(input);\n };\n this.autoOutdent = function (doc, row) {\n var line = doc.getLine(row);\n var match = line.match(/^(\\s*\\})/);\n if (!match)\n return 0;\n var column = match[1].length;\n var openBracePos = doc.findMatchingBracket({ row: row, column: column });\n if (!openBracePos || openBracePos.row == row)\n return 0;\n var indent = this.$getIndent(doc.getLine(openBracePos.row));\n doc.replace(new Range(row, 0, row, column - 1), indent);\n };\n this.$getIndent = function (line) {\n return line.match(/^\\s*/)[0];\n };\n}).call(MatchingBraceOutdent.prototype);\nexports.MatchingBraceOutdent = MatchingBraceOutdent;\n\n});\n\nace.define(\"ace/mode/folding/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/range\",\"ace/mode/folding/fold_mode\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../../lib/oop\");\nvar Range = require(\"../../range\").Range;\nvar BaseFoldMode = require(\"./fold_mode\").FoldMode;\nvar FoldMode = exports.FoldMode = function (commentRegex) {\n if (commentRegex) {\n this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.start));\n this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.end));\n }\n};\noop.inherits(FoldMode, BaseFoldMode);\n(function () {\n this.foldingStartMarker = /([\\{\\[\\(])[^\\}\\]\\)]*$|^\\s*(\\/\\*)/;\n this.foldingStopMarker = /^[^\\[\\{\\(]*([\\}\\]\\)])|^[\\s\\*]*(\\*\\/)/;\n this.singleLineBlockCommentRe = /^\\s*(\\/\\*).*\\*\\/\\s*$/;\n this.tripleStarBlockCommentRe = /^\\s*(\\/\\*\\*\\*).*\\*\\/\\s*$/;\n this.startRegionRe = /^\\s*(\\/\\*|\\/\\/)#?region\\b/;\n this._getFoldWidgetBase = this.getFoldWidget;\n this.getFoldWidget = function (session, foldStyle, row) {\n var line = session.getLine(row);\n if (this.singleLineBlockCommentRe.test(line)) {\n if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line))\n return \"\";\n }\n var fw = this._getFoldWidgetBase(session, foldStyle, row);\n if (!fw && this.startRegionRe.test(line))\n return \"start\"; // lineCommentRegionStart\n return fw;\n };\n this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) {\n var line = session.getLine(row);\n if (this.startRegionRe.test(line))\n return this.getCommentRegionBlock(session, line, row);\n var match = line.match(this.foldingStartMarker);\n if (match) {\n var i = match.index;\n if (match[1])\n return this.openingBracketBlock(session, match[1], row, i);\n var range = session.getCommentFoldRange(row, i + match[0].length, 1);\n if (range && !range.isMultiLine()) {\n if (forceMultiline) {\n range = this.getSectionRange(session, row);\n }\n else if (foldStyle != \"all\")\n range = null;\n }\n return range;\n }\n if (foldStyle === \"markbegin\")\n return;\n var match = line.match(this.foldingStopMarker);\n if (match) {\n var i = match.index + match[0].length;\n if (match[1])\n return this.closingBracketBlock(session, match[1], row, i);\n return session.getCommentFoldRange(row, i, -1);\n }\n };\n this.getSectionRange = function (session, row) {\n var line = session.getLine(row);\n var startIndent = line.search(/\\S/);\n var startRow = row;\n var startColumn = line.length;\n row = row + 1;\n var endRow = row;\n var maxRow = session.getLength();\n while (++row < maxRow) {\n line = session.getLine(row);\n var indent = line.search(/\\S/);\n if (indent === -1)\n continue;\n if (startIndent > indent)\n break;\n var subRange = this.getFoldWidgetRange(session, \"all\", row);\n if (subRange) {\n if (subRange.start.row <= startRow) {\n break;\n }\n else if (subRange.isMultiLine()) {\n row = subRange.end.row;\n }\n else if (startIndent == indent) {\n break;\n }\n }\n endRow = row;\n }\n return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);\n };\n this.getCommentRegionBlock = function (session, line, row) {\n var startColumn = line.search(/\\s*$/);\n var maxRow = session.getLength();\n var startRow = row;\n var re = /^\\s*(?:\\/\\*|\\/\\/|--)#?(end)?region\\b/;\n var depth = 1;\n while (++row < maxRow) {\n line = session.getLine(row);\n var m = re.exec(line);\n if (!m)\n continue;\n if (m[1])\n depth--;\n else\n depth++;\n if (!depth)\n break;\n }\n var endRow = row;\n if (endRow > startRow) {\n return new Range(startRow, startColumn, endRow, line.length);\n }\n };\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/golang\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/golang_highlight_rules\",\"ace/mode/matching_brace_outdent\",\"ace/mode/folding/cstyle\"], function(require, exports, module){var oop = require(\"../lib/oop\");\nvar TextMode = require(\"./text\").Mode;\nvar GolangHighlightRules = require(\"./golang_highlight_rules\").GolangHighlightRules;\nvar MatchingBraceOutdent = require(\"./matching_brace_outdent\").MatchingBraceOutdent;\nvar CStyleFoldMode = require(\"./folding/cstyle\").FoldMode;\nvar Mode = function () {\n this.HighlightRules = GolangHighlightRules;\n this.$outdent = new MatchingBraceOutdent();\n this.foldingRules = new CStyleFoldMode();\n this.$behaviour = this.$defaultBehaviour;\n};\noop.inherits(Mode, TextMode);\n(function () {\n this.lineCommentStart = \"//\";\n this.blockComment = { start: \"/*\", end: \"*/\" };\n this.getNextLineIndent = function (state, line, tab) {\n var indent = this.$getIndent(line);\n var tokenizedLine = this.getTokenizer().getLineTokens(line, state);\n var tokens = tokenizedLine.tokens;\n var endState = tokenizedLine.state;\n if (tokens.length && tokens[tokens.length - 1].type == \"comment\") {\n return indent;\n }\n if (state == \"start\") {\n var match = line.match(/^.*[\\{\\(\\[]\\s*$/);\n if (match) {\n indent += tab;\n }\n }\n return indent;\n }; //end getNextLineIndent\n this.checkOutdent = function (state, line, input) {\n return this.$outdent.checkOutdent(line, input);\n };\n this.autoOutdent = function (state, doc, row) {\n this.$outdent.autoOutdent(doc, row);\n };\n this.$id = \"ace/mode/golang\";\n}).call(Mode.prototype);\nexports.Mode = Mode;\n\n}); (function() {\n ace.require([\"ace/mode/golang\"], function(m) {\n if (typeof module == \"object\" && typeof exports == \"object\" && module) {\n module.exports = m;\n }\n });\n })();\n ","ace.define(\"ace/mode/jsdoc_comment_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar TextHighlightRules = require(\"./text_highlight_rules\").TextHighlightRules;\nvar JsDocCommentHighlightRules = function () {\n this.$rules = {\n \"start\": [\n {\n token: [\"comment.doc.tag\", \"comment.doc.text\", \"lparen.doc\"],\n regex: \"(@(?:param|member|typedef|property|namespace|var|const|callback))(\\\\s*)({)\",\n push: [\n {\n token: \"lparen.doc\",\n regex: \"{\",\n push: [\n {\n include: \"doc-syntax\"\n }, {\n token: \"rparen.doc\",\n regex: \"}|(?=$)\",\n next: \"pop\"\n }\n ]\n }, {\n token: [\"rparen.doc\", \"text.doc\", \"variable.parameter.doc\", \"lparen.doc\", \"variable.parameter.doc\", \"rparen.doc\"],\n regex: /(})(\\s*)(?:([\\w=:\\/\\.]+)|(?:(\\[)([\\w=:\\/\\.]+)(\\])))/,\n next: \"pop\"\n }, {\n token: \"rparen.doc\",\n regex: \"}|(?=$)\",\n next: \"pop\"\n }, {\n include: \"doc-syntax\"\n }, {\n defaultToken: \"text.doc\"\n }\n ]\n }, {\n token: [\"comment.doc.tag\", \"text.doc\", \"lparen.doc\"],\n regex: \"(@(?:returns?|yields|type|this|suppress|public|protected|private|package|modifies|\"\n + \"implements|external|exception|throws|enum|define|extends))(\\\\s*)({)\",\n push: [\n {\n token: \"lparen.doc\",\n regex: \"{\",\n push: [\n {\n include: \"doc-syntax\"\n }, {\n token: \"rparen.doc\",\n regex: \"}|(?=$)\",\n next: \"pop\"\n }\n ]\n }, {\n token: \"rparen.doc\",\n regex: \"}|(?=$)\",\n next: \"pop\"\n }, {\n include: \"doc-syntax\"\n }, {\n defaultToken: \"text.doc\"\n }\n ]\n }, {\n token: [\"comment.doc.tag\", \"text.doc\", \"variable.parameter.doc\"],\n regex: \"(@(?:alias|memberof|instance|module|name|lends|namespace|external|this|template|\"\n + \"requires|param|implements|function|extends|typedef|mixes|constructor|var|\"\n + \"memberof\\\\!|event|listens|exports|class|constructs|interface|emits|fires|\"\n + \"throws|const|callback|borrows|augments))(\\\\s+)(\\\\w[\\\\w#\\.:\\/~\\\"\\\\-]*)?\"\n }, {\n token: [\"comment.doc.tag\", \"text.doc\", \"variable.parameter.doc\"],\n regex: \"(@method)(\\\\s+)(\\\\w[\\\\w\\.\\\\(\\\\)]*)\"\n }, {\n token: \"comment.doc.tag\",\n regex: \"@access\\\\s+(?:private|public|protected)\"\n }, {\n token: \"comment.doc.tag\",\n regex: \"@kind\\\\s+(?:class|constant|event|external|file|function|member|mixin|module|namespace|typedef)\"\n }, {\n token: \"comment.doc.tag\",\n regex: \"@\\\\w+(?=\\\\s|$)\"\n },\n JsDocCommentHighlightRules.getTagRule(),\n {\n defaultToken: \"comment.doc\",\n caseInsensitive: true\n }\n ],\n \"doc-syntax\": [{\n token: \"operator.doc\",\n regex: /[|:]/\n }, {\n token: \"paren.doc\",\n regex: /[\\[\\]]/\n }]\n };\n this.normalizeRules();\n};\noop.inherits(JsDocCommentHighlightRules, TextHighlightRules);\nJsDocCommentHighlightRules.getTagRule = function (start) {\n return {\n token: \"comment.doc.tag.storage.type\",\n regex: \"\\\\b(?:TODO|FIXME|XXX|HACK)\\\\b\"\n };\n};\nJsDocCommentHighlightRules.getStartRule = function (start) {\n return {\n token: \"comment.doc\",\n regex: \"\\\\/\\\\*(?=\\\\*)\",\n next: start\n };\n};\nJsDocCommentHighlightRules.getEndRule = function (start) {\n return {\n token: \"comment.doc\",\n regex: \"\\\\*\\\\/\",\n next: start\n };\n};\nexports.JsDocCommentHighlightRules = JsDocCommentHighlightRules;\n\n});\n\nace.define(\"ace/mode/javascript_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/jsdoc_comment_highlight_rules\",\"ace/mode/text_highlight_rules\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar DocCommentHighlightRules = require(\"./jsdoc_comment_highlight_rules\").JsDocCommentHighlightRules;\nvar TextHighlightRules = require(\"./text_highlight_rules\").TextHighlightRules;\nvar identifierRe = \"[a-zA-Z\\\\$_\\u00a1-\\uffff][a-zA-Z\\\\d\\\\$_\\u00a1-\\uffff]*\";\nvar JavaScriptHighlightRules = function (options) {\n var keywordMapper = this.createKeywordMapper({\n \"variable.language\": \"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Symbol|\" + // Constructors\n \"Namespace|QName|XML|XMLList|\" + // E4X\n \"ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|\" +\n \"Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|\" +\n \"Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|\" + // Errors\n \"SyntaxError|TypeError|URIError|\" +\n \"decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|\" + // Non-constructor functions\n \"isNaN|parseFloat|parseInt|\" +\n \"JSON|Math|\" + // Other\n \"this|arguments|prototype|window|document\",\n \"keyword\": \"const|yield|import|get|set|async|await|\" +\n \"break|case|catch|continue|default|delete|do|else|finally|for|function|\" +\n \"if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|\" +\n \"__parent__|__count__|escape|unescape|with|__proto__|\" +\n \"class|enum|extends|super|export|implements|private|public|interface|package|protected|static|constructor\",\n \"storage.type\": \"const|let|var|function\",\n \"constant.language\": \"null|Infinity|NaN|undefined\",\n \"support.function\": \"alert\",\n \"constant.language.boolean\": \"true|false\"\n }, \"identifier\");\n var kwBeforeRe = \"case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void\";\n var escapedRe = \"\\\\\\\\(?:x[0-9a-fA-F]{2}|\" + // hex\n \"u[0-9a-fA-F]{4}|\" + // unicode\n \"u{[0-9a-fA-F]{1,6}}|\" + // es6 unicode\n \"[0-2][0-7]{0,2}|\" + // oct\n \"3[0-7][0-7]?|\" + // oct\n \"[4-7][0-7]?|\" + //oct\n \".)\";\n this.$rules = {\n \"no_regex\": [\n DocCommentHighlightRules.getStartRule(\"doc-start\"),\n comments(\"no_regex\"),\n {\n token: \"string\",\n regex: \"'(?=.)\",\n next: \"qstring\"\n }, {\n token: \"string\",\n regex: '\"(?=.)',\n next: \"qqstring\"\n }, {\n token: \"constant.numeric\",\n regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\\b/\n }, {\n token: \"constant.numeric\",\n regex: /(?:\\d\\d*(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+\\b)?/\n }, {\n token: [\n \"storage.type\", \"punctuation.operator\", \"support.function\",\n \"punctuation.operator\", \"entity.name.function\", \"text\", \"keyword.operator\"\n ],\n regex: \"(\" + identifierRe + \")(\\\\.)(prototype)(\\\\.)(\" + identifierRe + \")(\\\\s*)(=)\",\n next: \"function_arguments\"\n }, {\n token: [\n \"storage.type\", \"punctuation.operator\", \"entity.name.function\", \"text\",\n \"keyword.operator\", \"text\", \"storage.type\", \"text\", \"paren.lparen\"\n ],\n regex: \"(\" + identifierRe + \")(\\\\.)(\" + identifierRe + \")(\\\\s*)(=)(\\\\s*)(function\\\\*?)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token: [\n \"entity.name.function\", \"text\", \"keyword.operator\", \"text\", \"storage.type\",\n \"text\", \"paren.lparen\"\n ],\n regex: \"(\" + identifierRe + \")(\\\\s*)(=)(\\\\s*)(function\\\\*?)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token: [\n \"storage.type\", \"punctuation.operator\", \"entity.name.function\", \"text\",\n \"keyword.operator\", \"text\",\n \"storage.type\", \"text\", \"entity.name.function\", \"text\", \"paren.lparen\"\n ],\n regex: \"(\" + identifierRe + \")(\\\\.)(\" + identifierRe + \")(\\\\s*)(=)(\\\\s*)(function\\\\*?)(\\\\s+)(\\\\w+)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token: [\n \"storage.type\", \"text\", \"entity.name.function\", \"text\", \"paren.lparen\"\n ],\n regex: \"(function\\\\*?)(\\\\s+)(\" + identifierRe + \")(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token: [\n \"entity.name.function\", \"text\", \"punctuation.operator\",\n \"text\", \"storage.type\", \"text\", \"paren.lparen\"\n ],\n regex: \"(\" + identifierRe + \")(\\\\s*)(:)(\\\\s*)(function\\\\*?)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token: [\n \"text\", \"text\", \"storage.type\", \"text\", \"paren.lparen\"\n ],\n regex: \"(:)(\\\\s*)(function\\\\*?)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token: \"keyword\",\n regex: \"from(?=\\\\s*('|\\\"))\"\n }, {\n token: \"keyword\",\n regex: \"(?:\" + kwBeforeRe + \")\\\\b\",\n next: \"start\"\n }, {\n token: \"support.constant\",\n regex: /that\\b/\n }, {\n token: [\"storage.type\", \"punctuation.operator\", \"support.function.firebug\"],\n regex: /(console)(\\.)(warn|info|log|error|time|trace|timeEnd|assert)\\b/\n }, {\n token: keywordMapper,\n regex: identifierRe\n }, {\n token: \"punctuation.operator\",\n regex: /[.](?![.])/,\n next: \"property\"\n }, {\n token: \"storage.type\",\n regex: /=>/,\n next: \"start\"\n }, {\n token: \"keyword.operator\",\n regex: /--|\\+\\+|\\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\\|\\||\\?:|[!$%&*+\\-~\\/^]=?/,\n next: \"start\"\n }, {\n token: \"punctuation.operator\",\n regex: /[?:,;.]/,\n next: \"start\"\n }, {\n token: \"paren.lparen\",\n regex: /[\\[({]/,\n next: \"start\"\n }, {\n token: \"paren.rparen\",\n regex: /[\\])}]/\n }, {\n token: \"comment\",\n regex: /^#!.*$/\n }\n ],\n property: [{\n token: \"text\",\n regex: \"\\\\s+\"\n }, {\n token: [\n \"storage.type\", \"punctuation.operator\", \"entity.name.function\", \"text\",\n \"keyword.operator\", \"text\",\n \"storage.type\", \"text\", \"entity.name.function\", \"text\", \"paren.lparen\"\n ],\n regex: \"(\" + identifierRe + \")(\\\\.)(\" + identifierRe + \")(\\\\s*)(=)(\\\\s*)(function\\\\*?)(?:(\\\\s+)(\\\\w+))?(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token: \"punctuation.operator\",\n regex: /[.](?![.])/\n }, {\n token: \"support.function\",\n regex: /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|lter|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward|rEach)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\\b(?=\\()/\n }, {\n token: \"support.function.dom\",\n regex: /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\\b(?=\\()/\n }, {\n token: \"support.constant\",\n regex: /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\\b/\n }, {\n token: \"identifier\",\n regex: identifierRe\n }, {\n regex: \"\",\n token: \"empty\",\n next: \"no_regex\"\n }\n ],\n \"start\": [\n DocCommentHighlightRules.getStartRule(\"doc-start\"),\n comments(\"start\"),\n {\n token: \"string.regexp\",\n regex: \"\\\\/\",\n next: \"regex\"\n }, {\n token: \"text\",\n regex: \"\\\\s+|^$\",\n next: \"start\"\n }, {\n token: \"empty\",\n regex: \"\",\n next: \"no_regex\"\n }\n ],\n \"regex\": [\n {\n token: \"regexp.keyword.operator\",\n regex: \"\\\\\\\\(?:u[\\\\da-fA-F]{4}|x[\\\\da-fA-F]{2}|.)\"\n }, {\n token: \"string.regexp\",\n regex: \"/[sxngimy]*\",\n next: \"no_regex\"\n }, {\n token: \"invalid\",\n regex: /\\{\\d+\\b,?\\d*\\}[+*]|[+*$^?][+*]|[$^][?]|\\?{3,}/\n }, {\n token: \"constant.language.escape\",\n regex: /\\(\\?[:=!]|\\)|\\{\\d+\\b,?\\d*\\}|[+*]\\?|[()$^+*?.]/\n }, {\n token: \"constant.language.delimiter\",\n regex: /\\|/\n }, {\n token: \"constant.language.escape\",\n regex: /\\[\\^?/,\n next: \"regex_character_class\"\n }, {\n token: \"empty\",\n regex: \"$\",\n next: \"no_regex\"\n }, {\n defaultToken: \"string.regexp\"\n }\n ],\n \"regex_character_class\": [\n {\n token: \"regexp.charclass.keyword.operator\",\n regex: \"\\\\\\\\(?:u[\\\\da-fA-F]{4}|x[\\\\da-fA-F]{2}|.)\"\n }, {\n token: \"constant.language.escape\",\n regex: \"]\",\n next: \"regex\"\n }, {\n token: \"constant.language.escape\",\n regex: \"-\"\n }, {\n token: \"empty\",\n regex: \"$\",\n next: \"no_regex\"\n }, {\n defaultToken: \"string.regexp.charachterclass\"\n }\n ],\n \"default_parameter\": [\n {\n token: \"string\",\n regex: \"'(?=.)\",\n push: [\n {\n token: \"string\",\n regex: \"'|$\",\n next: \"pop\"\n }, {\n include: \"qstring\"\n }\n ]\n }, {\n token: \"string\",\n regex: '\"(?=.)',\n push: [\n {\n token: \"string\",\n regex: '\"|$',\n next: \"pop\"\n }, {\n include: \"qqstring\"\n }\n ]\n }, {\n token: \"constant.language\",\n regex: \"null|Infinity|NaN|undefined\"\n }, {\n token: \"constant.numeric\",\n regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\\b/\n }, {\n token: \"constant.numeric\",\n regex: /(?:\\d\\d*(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+\\b)?/\n }, {\n token: \"punctuation.operator\",\n regex: \",\",\n next: \"function_arguments\"\n }, {\n token: \"text\",\n regex: \"\\\\s+\"\n }, {\n token: \"punctuation.operator\",\n regex: \"$\"\n }, {\n token: \"empty\",\n regex: \"\",\n next: \"no_regex\"\n }\n ],\n \"function_arguments\": [\n comments(\"function_arguments\"),\n {\n token: \"variable.parameter\",\n regex: identifierRe\n }, {\n token: \"punctuation.operator\",\n regex: \",\"\n }, {\n token: \"text\",\n regex: \"\\\\s+\"\n }, {\n token: \"punctuation.operator\",\n regex: \"$\"\n }, {\n token: \"empty\",\n regex: \"\",\n next: \"no_regex\"\n }\n ],\n \"qqstring\": [\n {\n token: \"constant.language.escape\",\n regex: escapedRe\n }, {\n token: \"string\",\n regex: \"\\\\\\\\$\",\n consumeLineEnd: true\n }, {\n token: \"string\",\n regex: '\"|$',\n next: \"no_regex\"\n }, {\n defaultToken: \"string\"\n }\n ],\n \"qstring\": [\n {\n token: \"constant.language.escape\",\n regex: escapedRe\n }, {\n token: \"string\",\n regex: \"\\\\\\\\$\",\n consumeLineEnd: true\n }, {\n token: \"string\",\n regex: \"'|$\",\n next: \"no_regex\"\n }, {\n defaultToken: \"string\"\n }\n ]\n };\n if (!options || !options.noES6) {\n this.$rules.no_regex.unshift({\n regex: \"[{}]\", onMatch: function (val, state, stack) {\n this.next = val == \"{\" ? this.nextState : \"\";\n if (val == \"{\" && stack.length) {\n stack.unshift(\"start\", state);\n }\n else if (val == \"}\" && stack.length) {\n stack.shift();\n this.next = stack.shift();\n if (this.next.indexOf(\"string\") != -1 || this.next.indexOf(\"jsx\") != -1)\n return \"paren.quasi.end\";\n }\n return val == \"{\" ? \"paren.lparen\" : \"paren.rparen\";\n },\n nextState: \"start\"\n }, {\n token: \"string.quasi.start\",\n regex: /`/,\n push: [{\n token: \"constant.language.escape\",\n regex: escapedRe\n }, {\n token: \"paren.quasi.start\",\n regex: /\\${/,\n push: \"start\"\n }, {\n token: \"string.quasi.end\",\n regex: /`/,\n next: \"pop\"\n }, {\n defaultToken: \"string.quasi\"\n }]\n }, {\n token: [\"variable.parameter\", \"text\"],\n regex: \"(\" + identifierRe + \")(\\\\s*)(?=\\\\=>)\"\n }, {\n token: \"paren.lparen\",\n regex: \"(\\\\()(?=.+\\\\s*=>)\",\n next: \"function_arguments\"\n }, {\n token: \"variable.language\",\n regex: \"(?:(?:(?:Weak)?(?:Set|Map))|Promise)\\\\b\"\n });\n this.$rules[\"function_arguments\"].unshift({\n token: \"keyword.operator\",\n regex: \"=\",\n next: \"default_parameter\"\n }, {\n token: \"keyword.operator\",\n regex: \"\\\\.{3}\"\n });\n this.$rules[\"property\"].unshift({\n token: \"support.function\",\n regex: \"(findIndex|repeat|startsWith|endsWith|includes|isSafeInteger|trunc|cbrt|log2|log10|sign|then|catch|\"\n + \"finally|resolve|reject|race|any|all|allSettled|keys|entries|isInteger)\\\\b(?=\\\\()\"\n }, {\n token: \"constant.language\",\n regex: \"(?:MAX_SAFE_INTEGER|MIN_SAFE_INTEGER|EPSILON)\\\\b\"\n });\n if (!options || options.jsx != false)\n JSX.call(this);\n }\n this.embedRules(DocCommentHighlightRules, \"doc-\", [DocCommentHighlightRules.getEndRule(\"no_regex\")]);\n this.normalizeRules();\n};\noop.inherits(JavaScriptHighlightRules, TextHighlightRules);\nfunction JSX() {\n var tagRegex = identifierRe.replace(\"\\\\d\", \"\\\\d\\\\-\");\n var jsxTag = {\n onMatch: function (val, state, stack) {\n var offset = val.charAt(1) == \"/\" ? 2 : 1;\n if (offset == 1) {\n if (state != this.nextState)\n stack.unshift(this.next, this.nextState, 0);\n else\n stack.unshift(this.next);\n stack[2]++;\n }\n else if (offset == 2) {\n if (state == this.nextState) {\n stack[1]--;\n if (!stack[1] || stack[1] < 0) {\n stack.shift();\n stack.shift();\n }\n }\n }\n return [{\n type: \"meta.tag.punctuation.\" + (offset == 1 ? \"\" : \"end-\") + \"tag-open.xml\",\n value: val.slice(0, offset)\n }, {\n type: \"meta.tag.tag-name.xml\",\n value: val.substr(offset)\n }];\n },\n regex: \"\",\n onMatch: function (value, currentState, stack) {\n if (currentState == stack[0])\n stack.shift();\n if (value.length == 2) {\n if (stack[0] == this.nextState)\n stack[1]--;\n if (!stack[1] || stack[1] < 0) {\n stack.splice(0, 2);\n }\n }\n this.next = stack[0] || \"start\";\n return [{ type: this.token, value: value }];\n },\n nextState: \"jsx\"\n },\n jsxJsRule,\n comments(\"jsxAttributes\"),\n {\n token: \"entity.other.attribute-name.xml\",\n regex: tagRegex\n }, {\n token: \"keyword.operator.attribute-equals.xml\",\n regex: \"=\"\n }, {\n token: \"text.tag-whitespace.xml\",\n regex: \"\\\\s+\"\n }, {\n token: \"string.attribute-value.xml\",\n regex: \"'\",\n stateName: \"jsx_attr_q\",\n push: [\n { token: \"string.attribute-value.xml\", regex: \"'\", next: \"pop\" },\n { include: \"reference\" },\n { defaultToken: \"string.attribute-value.xml\" }\n ]\n }, {\n token: \"string.attribute-value.xml\",\n regex: '\"',\n stateName: \"jsx_attr_qq\",\n push: [\n { token: \"string.attribute-value.xml\", regex: '\"', next: \"pop\" },\n { include: \"reference\" },\n { defaultToken: \"string.attribute-value.xml\" }\n ]\n },\n jsxTag\n ];\n this.$rules.reference = [{\n token: \"constant.language.escape.reference.xml\",\n regex: \"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\\\.-]+;)\"\n }];\n}\nfunction comments(next) {\n return [\n {\n token: \"comment\",\n regex: /\\/\\*/,\n next: [\n DocCommentHighlightRules.getTagRule(),\n { token: \"comment\", regex: \"\\\\*\\\\/\", next: next || \"pop\" },\n { defaultToken: \"comment\", caseInsensitive: true }\n ]\n }, {\n token: \"comment\",\n regex: \"\\\\/\\\\/\",\n next: [\n DocCommentHighlightRules.getTagRule(),\n { token: \"comment\", regex: \"$|^\", next: next || \"pop\" },\n { defaultToken: \"comment\", caseInsensitive: true }\n ]\n }\n ];\n}\nexports.JavaScriptHighlightRules = JavaScriptHighlightRules;\n\n});\n\nace.define(\"ace/mode/matching_brace_outdent\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar Range = require(\"../range\").Range;\nvar MatchingBraceOutdent = function () { };\n(function () {\n this.checkOutdent = function (line, input) {\n if (!/^\\s+$/.test(line))\n return false;\n return /^\\s*\\}/.test(input);\n };\n this.autoOutdent = function (doc, row) {\n var line = doc.getLine(row);\n var match = line.match(/^(\\s*\\})/);\n if (!match)\n return 0;\n var column = match[1].length;\n var openBracePos = doc.findMatchingBracket({ row: row, column: column });\n if (!openBracePos || openBracePos.row == row)\n return 0;\n var indent = this.$getIndent(doc.getLine(openBracePos.row));\n doc.replace(new Range(row, 0, row, column - 1), indent);\n };\n this.$getIndent = function (line) {\n return line.match(/^\\s*/)[0];\n };\n}).call(MatchingBraceOutdent.prototype);\nexports.MatchingBraceOutdent = MatchingBraceOutdent;\n\n});\n\nace.define(\"ace/mode/folding/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/range\",\"ace/mode/folding/fold_mode\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../../lib/oop\");\nvar Range = require(\"../../range\").Range;\nvar BaseFoldMode = require(\"./fold_mode\").FoldMode;\nvar FoldMode = exports.FoldMode = function (commentRegex) {\n if (commentRegex) {\n this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.start));\n this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.end));\n }\n};\noop.inherits(FoldMode, BaseFoldMode);\n(function () {\n this.foldingStartMarker = /([\\{\\[\\(])[^\\}\\]\\)]*$|^\\s*(\\/\\*)/;\n this.foldingStopMarker = /^[^\\[\\{\\(]*([\\}\\]\\)])|^[\\s\\*]*(\\*\\/)/;\n this.singleLineBlockCommentRe = /^\\s*(\\/\\*).*\\*\\/\\s*$/;\n this.tripleStarBlockCommentRe = /^\\s*(\\/\\*\\*\\*).*\\*\\/\\s*$/;\n this.startRegionRe = /^\\s*(\\/\\*|\\/\\/)#?region\\b/;\n this._getFoldWidgetBase = this.getFoldWidget;\n this.getFoldWidget = function (session, foldStyle, row) {\n var line = session.getLine(row);\n if (this.singleLineBlockCommentRe.test(line)) {\n if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line))\n return \"\";\n }\n var fw = this._getFoldWidgetBase(session, foldStyle, row);\n if (!fw && this.startRegionRe.test(line))\n return \"start\"; // lineCommentRegionStart\n return fw;\n };\n this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) {\n var line = session.getLine(row);\n if (this.startRegionRe.test(line))\n return this.getCommentRegionBlock(session, line, row);\n var match = line.match(this.foldingStartMarker);\n if (match) {\n var i = match.index;\n if (match[1])\n return this.openingBracketBlock(session, match[1], row, i);\n var range = session.getCommentFoldRange(row, i + match[0].length, 1);\n if (range && !range.isMultiLine()) {\n if (forceMultiline) {\n range = this.getSectionRange(session, row);\n }\n else if (foldStyle != \"all\")\n range = null;\n }\n return range;\n }\n if (foldStyle === \"markbegin\")\n return;\n var match = line.match(this.foldingStopMarker);\n if (match) {\n var i = match.index + match[0].length;\n if (match[1])\n return this.closingBracketBlock(session, match[1], row, i);\n return session.getCommentFoldRange(row, i, -1);\n }\n };\n this.getSectionRange = function (session, row) {\n var line = session.getLine(row);\n var startIndent = line.search(/\\S/);\n var startRow = row;\n var startColumn = line.length;\n row = row + 1;\n var endRow = row;\n var maxRow = session.getLength();\n while (++row < maxRow) {\n line = session.getLine(row);\n var indent = line.search(/\\S/);\n if (indent === -1)\n continue;\n if (startIndent > indent)\n break;\n var subRange = this.getFoldWidgetRange(session, \"all\", row);\n if (subRange) {\n if (subRange.start.row <= startRow) {\n break;\n }\n else if (subRange.isMultiLine()) {\n row = subRange.end.row;\n }\n else if (startIndent == indent) {\n break;\n }\n }\n endRow = row;\n }\n return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);\n };\n this.getCommentRegionBlock = function (session, line, row) {\n var startColumn = line.search(/\\s*$/);\n var maxRow = session.getLength();\n var startRow = row;\n var re = /^\\s*(?:\\/\\*|\\/\\/|--)#?(end)?region\\b/;\n var depth = 1;\n while (++row < maxRow) {\n line = session.getLine(row);\n var m = re.exec(line);\n if (!m)\n continue;\n if (m[1])\n depth--;\n else\n depth++;\n if (!depth)\n break;\n }\n var endRow = row;\n if (endRow > startRow) {\n return new Range(startRow, startColumn, endRow, line.length);\n }\n };\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/javascript\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/javascript_highlight_rules\",\"ace/mode/matching_brace_outdent\",\"ace/worker/worker_client\",\"ace/mode/behaviour/cstyle\",\"ace/mode/folding/cstyle\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar TextMode = require(\"./text\").Mode;\nvar JavaScriptHighlightRules = require(\"./javascript_highlight_rules\").JavaScriptHighlightRules;\nvar MatchingBraceOutdent = require(\"./matching_brace_outdent\").MatchingBraceOutdent;\nvar WorkerClient = require(\"../worker/worker_client\").WorkerClient;\nvar CstyleBehaviour = require(\"./behaviour/cstyle\").CstyleBehaviour;\nvar CStyleFoldMode = require(\"./folding/cstyle\").FoldMode;\nvar Mode = function () {\n this.HighlightRules = JavaScriptHighlightRules;\n this.$outdent = new MatchingBraceOutdent();\n this.$behaviour = new CstyleBehaviour();\n this.foldingRules = new CStyleFoldMode();\n};\noop.inherits(Mode, TextMode);\n(function () {\n this.lineCommentStart = \"//\";\n this.blockComment = { start: \"/*\", end: \"*/\" };\n this.$quotes = { '\"': '\"', \"'\": \"'\", \"`\": \"`\" };\n this.$pairQuotesAfter = {\n \"`\": /\\w/\n };\n this.getNextLineIndent = function (state, line, tab) {\n var indent = this.$getIndent(line);\n var tokenizedLine = this.getTokenizer().getLineTokens(line, state);\n var tokens = tokenizedLine.tokens;\n var endState = tokenizedLine.state;\n if (tokens.length && tokens[tokens.length - 1].type == \"comment\") {\n return indent;\n }\n if (state == \"start\" || state == \"no_regex\") {\n var match = line.match(/^.*(?:\\bcase\\b.*:|[\\{\\(\\[])\\s*$/);\n if (match) {\n indent += tab;\n }\n }\n else if (state == \"doc-start\") {\n if (endState == \"start\" || endState == \"no_regex\") {\n return \"\";\n }\n var match = line.match(/^\\s*(\\/?)\\*/);\n if (match) {\n if (match[1]) {\n indent += \" \";\n }\n indent += \"* \";\n }\n }\n return indent;\n };\n this.checkOutdent = function (state, line, input) {\n return this.$outdent.checkOutdent(line, input);\n };\n this.autoOutdent = function (state, doc, row) {\n this.$outdent.autoOutdent(doc, row);\n };\n this.createWorker = function (session) {\n var worker = new WorkerClient([\"ace\"], \"ace/mode/javascript_worker\", \"JavaScriptWorker\");\n worker.attachToDocument(session.getDocument());\n worker.on(\"annotate\", function (results) {\n session.setAnnotations(results.data);\n });\n worker.on(\"terminate\", function () {\n session.clearAnnotations();\n });\n return worker;\n };\n this.$id = \"ace/mode/javascript\";\n this.snippetFileId = \"ace/snippets/javascript\";\n}).call(Mode.prototype);\nexports.Mode = Mode;\n\n}); (function() {\n ace.require([\"ace/mode/javascript\"], function(m) {\n if (typeof module == \"object\" && typeof exports == \"object\" && module) {\n module.exports = m;\n }\n });\n })();\n ","ace.define(\"ace/mode/json_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar TextHighlightRules = require(\"./text_highlight_rules\").TextHighlightRules;\nvar JsonHighlightRules = function () {\n this.$rules = {\n \"start\": [\n {\n token: \"variable\",\n regex: '[\"](?:(?:\\\\\\\\.)|(?:[^\"\\\\\\\\]))*?[\"]\\\\s*(?=:)'\n }, {\n token: \"string\",\n regex: '\"',\n next: \"string\"\n }, {\n token: \"constant.numeric\",\n regex: \"0[xX][0-9a-fA-F]+\\\\b\"\n }, {\n token: \"constant.numeric\",\n regex: \"[+-]?\\\\d+(?:(?:\\\\.\\\\d*)?(?:[eE][+-]?\\\\d+)?)?\\\\b\"\n }, {\n token: \"constant.language.boolean\",\n regex: \"(?:true|false)\\\\b\"\n }, {\n token: \"text\",\n regex: \"['](?:(?:\\\\\\\\.)|(?:[^'\\\\\\\\]))*?[']\"\n }, {\n token: \"comment\",\n regex: \"\\\\/\\\\/.*$\"\n }, {\n token: \"comment.start\",\n regex: \"\\\\/\\\\*\",\n next: \"comment\"\n }, {\n token: \"paren.lparen\",\n regex: \"[[({]\"\n }, {\n token: \"paren.rparen\",\n regex: \"[\\\\])}]\"\n }, {\n token: \"punctuation.operator\",\n regex: /[,]/\n }, {\n token: \"text\",\n regex: \"\\\\s+\"\n }\n ],\n \"string\": [\n {\n token: \"constant.language.escape\",\n regex: /\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|[\"\\\\\\/bfnrt])/\n }, {\n token: \"string\",\n regex: '\"|$',\n next: \"start\"\n }, {\n defaultToken: \"string\"\n }\n ],\n \"comment\": [\n {\n token: \"comment.end\",\n regex: \"\\\\*\\\\/\",\n next: \"start\"\n }, {\n defaultToken: \"comment\"\n }\n ]\n };\n};\noop.inherits(JsonHighlightRules, TextHighlightRules);\nexports.JsonHighlightRules = JsonHighlightRules;\n\n});\n\nace.define(\"ace/mode/matching_brace_outdent\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar Range = require(\"../range\").Range;\nvar MatchingBraceOutdent = function () { };\n(function () {\n this.checkOutdent = function (line, input) {\n if (!/^\\s+$/.test(line))\n return false;\n return /^\\s*\\}/.test(input);\n };\n this.autoOutdent = function (doc, row) {\n var line = doc.getLine(row);\n var match = line.match(/^(\\s*\\})/);\n if (!match)\n return 0;\n var column = match[1].length;\n var openBracePos = doc.findMatchingBracket({ row: row, column: column });\n if (!openBracePos || openBracePos.row == row)\n return 0;\n var indent = this.$getIndent(doc.getLine(openBracePos.row));\n doc.replace(new Range(row, 0, row, column - 1), indent);\n };\n this.$getIndent = function (line) {\n return line.match(/^\\s*/)[0];\n };\n}).call(MatchingBraceOutdent.prototype);\nexports.MatchingBraceOutdent = MatchingBraceOutdent;\n\n});\n\nace.define(\"ace/mode/folding/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/range\",\"ace/mode/folding/fold_mode\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../../lib/oop\");\nvar Range = require(\"../../range\").Range;\nvar BaseFoldMode = require(\"./fold_mode\").FoldMode;\nvar FoldMode = exports.FoldMode = function (commentRegex) {\n if (commentRegex) {\n this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.start));\n this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.end));\n }\n};\noop.inherits(FoldMode, BaseFoldMode);\n(function () {\n this.foldingStartMarker = /([\\{\\[\\(])[^\\}\\]\\)]*$|^\\s*(\\/\\*)/;\n this.foldingStopMarker = /^[^\\[\\{\\(]*([\\}\\]\\)])|^[\\s\\*]*(\\*\\/)/;\n this.singleLineBlockCommentRe = /^\\s*(\\/\\*).*\\*\\/\\s*$/;\n this.tripleStarBlockCommentRe = /^\\s*(\\/\\*\\*\\*).*\\*\\/\\s*$/;\n this.startRegionRe = /^\\s*(\\/\\*|\\/\\/)#?region\\b/;\n this._getFoldWidgetBase = this.getFoldWidget;\n this.getFoldWidget = function (session, foldStyle, row) {\n var line = session.getLine(row);\n if (this.singleLineBlockCommentRe.test(line)) {\n if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line))\n return \"\";\n }\n var fw = this._getFoldWidgetBase(session, foldStyle, row);\n if (!fw && this.startRegionRe.test(line))\n return \"start\"; // lineCommentRegionStart\n return fw;\n };\n this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) {\n var line = session.getLine(row);\n if (this.startRegionRe.test(line))\n return this.getCommentRegionBlock(session, line, row);\n var match = line.match(this.foldingStartMarker);\n if (match) {\n var i = match.index;\n if (match[1])\n return this.openingBracketBlock(session, match[1], row, i);\n var range = session.getCommentFoldRange(row, i + match[0].length, 1);\n if (range && !range.isMultiLine()) {\n if (forceMultiline) {\n range = this.getSectionRange(session, row);\n }\n else if (foldStyle != \"all\")\n range = null;\n }\n return range;\n }\n if (foldStyle === \"markbegin\")\n return;\n var match = line.match(this.foldingStopMarker);\n if (match) {\n var i = match.index + match[0].length;\n if (match[1])\n return this.closingBracketBlock(session, match[1], row, i);\n return session.getCommentFoldRange(row, i, -1);\n }\n };\n this.getSectionRange = function (session, row) {\n var line = session.getLine(row);\n var startIndent = line.search(/\\S/);\n var startRow = row;\n var startColumn = line.length;\n row = row + 1;\n var endRow = row;\n var maxRow = session.getLength();\n while (++row < maxRow) {\n line = session.getLine(row);\n var indent = line.search(/\\S/);\n if (indent === -1)\n continue;\n if (startIndent > indent)\n break;\n var subRange = this.getFoldWidgetRange(session, \"all\", row);\n if (subRange) {\n if (subRange.start.row <= startRow) {\n break;\n }\n else if (subRange.isMultiLine()) {\n row = subRange.end.row;\n }\n else if (startIndent == indent) {\n break;\n }\n }\n endRow = row;\n }\n return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);\n };\n this.getCommentRegionBlock = function (session, line, row) {\n var startColumn = line.search(/\\s*$/);\n var maxRow = session.getLength();\n var startRow = row;\n var re = /^\\s*(?:\\/\\*|\\/\\/|--)#?(end)?region\\b/;\n var depth = 1;\n while (++row < maxRow) {\n line = session.getLine(row);\n var m = re.exec(line);\n if (!m)\n continue;\n if (m[1])\n depth--;\n else\n depth++;\n if (!depth)\n break;\n }\n var endRow = row;\n if (endRow > startRow) {\n return new Range(startRow, startColumn, endRow, line.length);\n }\n };\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/json\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/json_highlight_rules\",\"ace/mode/matching_brace_outdent\",\"ace/mode/folding/cstyle\",\"ace/worker/worker_client\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar TextMode = require(\"./text\").Mode;\nvar HighlightRules = require(\"./json_highlight_rules\").JsonHighlightRules;\nvar MatchingBraceOutdent = require(\"./matching_brace_outdent\").MatchingBraceOutdent;\nvar CStyleFoldMode = require(\"./folding/cstyle\").FoldMode;\nvar WorkerClient = require(\"../worker/worker_client\").WorkerClient;\nvar Mode = function () {\n this.HighlightRules = HighlightRules;\n this.$outdent = new MatchingBraceOutdent();\n this.$behaviour = this.$defaultBehaviour;\n this.foldingRules = new CStyleFoldMode();\n};\noop.inherits(Mode, TextMode);\n(function () {\n this.lineCommentStart = \"//\";\n this.blockComment = { start: \"/*\", end: \"*/\" };\n this.getNextLineIndent = function (state, line, tab) {\n var indent = this.$getIndent(line);\n if (state == \"start\") {\n var match = line.match(/^.*[\\{\\(\\[]\\s*$/);\n if (match) {\n indent += tab;\n }\n }\n return indent;\n };\n this.checkOutdent = function (state, line, input) {\n return this.$outdent.checkOutdent(line, input);\n };\n this.autoOutdent = function (state, doc, row) {\n this.$outdent.autoOutdent(doc, row);\n };\n this.createWorker = function (session) {\n var worker = new WorkerClient([\"ace\"], \"ace/mode/json_worker\", \"JsonWorker\");\n worker.attachToDocument(session.getDocument());\n worker.on(\"annotate\", function (e) {\n session.setAnnotations(e.data);\n });\n worker.on(\"terminate\", function () {\n session.clearAnnotations();\n });\n return worker;\n };\n this.$id = \"ace/mode/json\";\n}).call(Mode.prototype);\nexports.Mode = Mode;\n\n}); (function() {\n ace.require([\"ace/mode/json\"], function(m) {\n if (typeof module == \"object\" && typeof exports == \"object\" && module) {\n module.exports = m;\n }\n });\n })();\n ","ace.define(\"ace/mode/doc_comment_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar TextHighlightRules = require(\"./text_highlight_rules\").TextHighlightRules;\nvar DocCommentHighlightRules = function () {\n this.$rules = {\n \"start\": [\n {\n token: \"comment.doc.tag\",\n regex: \"@\\\\w+(?=\\\\s|$)\"\n }, DocCommentHighlightRules.getTagRule(), {\n defaultToken: \"comment.doc\",\n caseInsensitive: true\n }\n ]\n };\n};\noop.inherits(DocCommentHighlightRules, TextHighlightRules);\nDocCommentHighlightRules.getTagRule = function (start) {\n return {\n token: \"comment.doc.tag.storage.type\",\n regex: \"\\\\b(?:TODO|FIXME|XXX|HACK)\\\\b\"\n };\n};\nDocCommentHighlightRules.getStartRule = function (start) {\n return {\n token: \"comment.doc\",\n regex: \"\\\\/\\\\*(?=\\\\*)\",\n next: start\n };\n};\nDocCommentHighlightRules.getEndRule = function (start) {\n return {\n token: \"comment.doc\",\n regex: \"\\\\*\\\\/\",\n next: start\n };\n};\nexports.DocCommentHighlightRules = DocCommentHighlightRules;\n\n});\n\nace.define(\"ace/mode/jsx_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/mode/doc_comment_highlight_rules\",\"ace/mode/text_highlight_rules\"], function(require, exports, module){var oop = require(\"../lib/oop\");\nvar lang = require(\"../lib/lang\");\nvar DocCommentHighlightRules = require(\"./doc_comment_highlight_rules\").DocCommentHighlightRules;\nvar TextHighlightRules = require(\"./text_highlight_rules\").TextHighlightRules;\nvar JsxHighlightRules = function () {\n var keywords = lang.arrayToMap((\"break|do|instanceof|typeof|case|else|new|var|catch|finally|return|void|continue|for|switch|default|while|function|this|\" +\n \"if|throw|\" +\n \"delete|in|try|\" +\n \"class|extends|super|import|from|into|implements|interface|static|mixin|override|abstract|final|\" +\n \"number|int|string|boolean|variant|\" +\n \"log|assert\").split(\"|\"));\n var buildinConstants = lang.arrayToMap((\"null|true|false|NaN|Infinity|__FILE__|__LINE__|undefined\").split(\"|\"));\n var reserved = lang.arrayToMap((\"debugger|with|\" +\n \"const|export|\" +\n \"let|private|public|yield|protected|\" +\n \"extern|native|as|operator|__fake__|__readonly__\").split(\"|\"));\n var identifierRe = \"[a-zA-Z_][a-zA-Z0-9_]*\\\\b\";\n this.$rules = {\n \"start\": [\n {\n token: \"comment\",\n regex: \"\\\\/\\\\/.*$\"\n },\n DocCommentHighlightRules.getStartRule(\"doc-start\"),\n {\n token: \"comment\",\n regex: \"\\\\/\\\\*\",\n next: \"comment\"\n }, {\n token: \"string.regexp\",\n regex: \"[/](?:(?:\\\\[(?:\\\\\\\\]|[^\\\\]])+\\\\])|(?:\\\\\\\\/|[^\\\\]/]))*[/]\\\\w*\\\\s*(?=[).,;]|$)\"\n }, {\n token: \"string\",\n regex: '[\"](?:(?:\\\\\\\\.)|(?:[^\"\\\\\\\\]))*?[\"]'\n }, {\n token: \"string\",\n regex: \"['](?:(?:\\\\\\\\.)|(?:[^'\\\\\\\\]))*?[']\"\n }, {\n token: \"constant.numeric\",\n regex: \"0[xX][0-9a-fA-F]+\\\\b\"\n }, {\n token: \"constant.numeric\",\n regex: \"[+-]?\\\\d+(?:(?:\\\\.\\\\d*)?(?:[eE][+-]?\\\\d+)?)?\\\\b\"\n }, {\n token: \"constant.language.boolean\",\n regex: \"(?:true|false)\\\\b\"\n }, {\n token: [\n \"storage.type\",\n \"text\",\n \"entity.name.function\"\n ],\n regex: \"(function)(\\\\s+)(\" + identifierRe + \")\"\n }, {\n token: function (value) {\n if (value == \"this\")\n return \"variable.language\";\n else if (value == \"function\")\n return \"storage.type\";\n else if (keywords.hasOwnProperty(value) || reserved.hasOwnProperty(value))\n return \"keyword\";\n else if (buildinConstants.hasOwnProperty(value))\n return \"constant.language\";\n else if (/^_?[A-Z][a-zA-Z0-9_]*$/.test(value))\n return \"language.support.class\";\n else\n return \"identifier\";\n },\n regex: identifierRe\n }, {\n token: \"keyword.operator\",\n regex: \"!|%|&|\\\\*|\\\\-\\\\-|\\\\-|\\\\+\\\\+|\\\\+|~|==|=|!=|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\\\|\\\\||\\\\?\\\\:|\\\\*=|%=|\\\\+=|\\\\-=|&=|\\\\^=|\\\\b(?:in|instanceof|new|delete|typeof|void)\"\n }, {\n token: \"punctuation.operator\",\n regex: \"\\\\?|\\\\:|\\\\,|\\\\;|\\\\.\"\n }, {\n token: \"paren.lparen\",\n regex: \"[[({<]\"\n }, {\n token: \"paren.rparen\",\n regex: \"[\\\\])}>]\"\n }, {\n token: \"text\",\n regex: \"\\\\s+\"\n }\n ],\n \"comment\": [\n {\n token: \"comment\",\n regex: \"\\\\*\\\\/\",\n next: \"start\"\n }, {\n defaultToken: \"comment\"\n }\n ]\n };\n this.embedRules(DocCommentHighlightRules, \"doc-\", [DocCommentHighlightRules.getEndRule(\"start\")]);\n};\noop.inherits(JsxHighlightRules, TextHighlightRules);\nexports.JsxHighlightRules = JsxHighlightRules;\n\n});\n\nace.define(\"ace/mode/matching_brace_outdent\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar Range = require(\"../range\").Range;\nvar MatchingBraceOutdent = function () { };\n(function () {\n this.checkOutdent = function (line, input) {\n if (!/^\\s+$/.test(line))\n return false;\n return /^\\s*\\}/.test(input);\n };\n this.autoOutdent = function (doc, row) {\n var line = doc.getLine(row);\n var match = line.match(/^(\\s*\\})/);\n if (!match)\n return 0;\n var column = match[1].length;\n var openBracePos = doc.findMatchingBracket({ row: row, column: column });\n if (!openBracePos || openBracePos.row == row)\n return 0;\n var indent = this.$getIndent(doc.getLine(openBracePos.row));\n doc.replace(new Range(row, 0, row, column - 1), indent);\n };\n this.$getIndent = function (line) {\n return line.match(/^\\s*/)[0];\n };\n}).call(MatchingBraceOutdent.prototype);\nexports.MatchingBraceOutdent = MatchingBraceOutdent;\n\n});\n\nace.define(\"ace/mode/folding/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/range\",\"ace/mode/folding/fold_mode\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../../lib/oop\");\nvar Range = require(\"../../range\").Range;\nvar BaseFoldMode = require(\"./fold_mode\").FoldMode;\nvar FoldMode = exports.FoldMode = function (commentRegex) {\n if (commentRegex) {\n this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.start));\n this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.end));\n }\n};\noop.inherits(FoldMode, BaseFoldMode);\n(function () {\n this.foldingStartMarker = /([\\{\\[\\(])[^\\}\\]\\)]*$|^\\s*(\\/\\*)/;\n this.foldingStopMarker = /^[^\\[\\{\\(]*([\\}\\]\\)])|^[\\s\\*]*(\\*\\/)/;\n this.singleLineBlockCommentRe = /^\\s*(\\/\\*).*\\*\\/\\s*$/;\n this.tripleStarBlockCommentRe = /^\\s*(\\/\\*\\*\\*).*\\*\\/\\s*$/;\n this.startRegionRe = /^\\s*(\\/\\*|\\/\\/)#?region\\b/;\n this._getFoldWidgetBase = this.getFoldWidget;\n this.getFoldWidget = function (session, foldStyle, row) {\n var line = session.getLine(row);\n if (this.singleLineBlockCommentRe.test(line)) {\n if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line))\n return \"\";\n }\n var fw = this._getFoldWidgetBase(session, foldStyle, row);\n if (!fw && this.startRegionRe.test(line))\n return \"start\"; // lineCommentRegionStart\n return fw;\n };\n this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) {\n var line = session.getLine(row);\n if (this.startRegionRe.test(line))\n return this.getCommentRegionBlock(session, line, row);\n var match = line.match(this.foldingStartMarker);\n if (match) {\n var i = match.index;\n if (match[1])\n return this.openingBracketBlock(session, match[1], row, i);\n var range = session.getCommentFoldRange(row, i + match[0].length, 1);\n if (range && !range.isMultiLine()) {\n if (forceMultiline) {\n range = this.getSectionRange(session, row);\n }\n else if (foldStyle != \"all\")\n range = null;\n }\n return range;\n }\n if (foldStyle === \"markbegin\")\n return;\n var match = line.match(this.foldingStopMarker);\n if (match) {\n var i = match.index + match[0].length;\n if (match[1])\n return this.closingBracketBlock(session, match[1], row, i);\n return session.getCommentFoldRange(row, i, -1);\n }\n };\n this.getSectionRange = function (session, row) {\n var line = session.getLine(row);\n var startIndent = line.search(/\\S/);\n var startRow = row;\n var startColumn = line.length;\n row = row + 1;\n var endRow = row;\n var maxRow = session.getLength();\n while (++row < maxRow) {\n line = session.getLine(row);\n var indent = line.search(/\\S/);\n if (indent === -1)\n continue;\n if (startIndent > indent)\n break;\n var subRange = this.getFoldWidgetRange(session, \"all\", row);\n if (subRange) {\n if (subRange.start.row <= startRow) {\n break;\n }\n else if (subRange.isMultiLine()) {\n row = subRange.end.row;\n }\n else if (startIndent == indent) {\n break;\n }\n }\n endRow = row;\n }\n return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);\n };\n this.getCommentRegionBlock = function (session, line, row) {\n var startColumn = line.search(/\\s*$/);\n var maxRow = session.getLength();\n var startRow = row;\n var re = /^\\s*(?:\\/\\*|\\/\\/|--)#?(end)?region\\b/;\n var depth = 1;\n while (++row < maxRow) {\n line = session.getLine(row);\n var m = re.exec(line);\n if (!m)\n continue;\n if (m[1])\n depth--;\n else\n depth++;\n if (!depth)\n break;\n }\n var endRow = row;\n if (endRow > startRow) {\n return new Range(startRow, startColumn, endRow, line.length);\n }\n };\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/jsx\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/jsx_highlight_rules\",\"ace/mode/matching_brace_outdent\",\"ace/mode/folding/cstyle\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar TextMode = require(\"./text\").Mode;\nvar JsxHighlightRules = require(\"./jsx_highlight_rules\").JsxHighlightRules;\nvar MatchingBraceOutdent = require(\"./matching_brace_outdent\").MatchingBraceOutdent;\nvar CStyleFoldMode = require(\"./folding/cstyle\").FoldMode;\nfunction Mode() {\n this.HighlightRules = JsxHighlightRules;\n this.$outdent = new MatchingBraceOutdent();\n this.$behaviour = this.$defaultBehaviour;\n this.foldingRules = new CStyleFoldMode();\n}\noop.inherits(Mode, TextMode);\n(function () {\n this.lineCommentStart = \"//\";\n this.blockComment = { start: \"/*\", end: \"*/\" };\n this.getNextLineIndent = function (state, line, tab) {\n var indent = this.$getIndent(line);\n var tokenizedLine = this.getTokenizer().getLineTokens(line, state);\n var tokens = tokenizedLine.tokens;\n if (tokens.length && tokens[tokens.length - 1].type == \"comment\") {\n return indent;\n }\n if (state == \"start\") {\n var match = line.match(/^.*[\\{\\(\\[]\\s*$/);\n if (match) {\n indent += tab;\n }\n }\n return indent;\n };\n this.checkOutdent = function (state, line, input) {\n return this.$outdent.checkOutdent(line, input);\n };\n this.autoOutdent = function (state, doc, row) {\n this.$outdent.autoOutdent(doc, row);\n };\n this.$id = \"ace/mode/jsx\";\n}).call(Mode.prototype);\nexports.Mode = Mode;\n\n}); (function() {\n ace.require([\"ace/mode/jsx\"], function(m) {\n if (typeof module == \"object\" && typeof exports == \"object\" && module) {\n module.exports = m;\n }\n });\n })();\n ","ace.define(\"ace/mode/python_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(require, exports, module){/*\n * TODO: python delimiters\n */\n\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar TextHighlightRules = require(\"./text_highlight_rules\").TextHighlightRules;\nvar PythonHighlightRules = function () {\n var keywords = (\"and|as|assert|break|class|continue|def|del|elif|else|except|exec|\" +\n \"finally|for|from|global|if|import|in|is|lambda|not|or|pass|print|\" +\n \"raise|return|try|while|with|yield|async|await|nonlocal\");\n var builtinConstants = (\"True|False|None|NotImplemented|Ellipsis|__debug__\");\n var builtinFunctions = (\"abs|divmod|input|open|staticmethod|all|enumerate|int|ord|str|any|\" +\n \"eval|isinstance|pow|sum|basestring|execfile|issubclass|print|super|\" +\n \"binfile|bin|iter|property|tuple|bool|filter|len|range|type|bytearray|\" +\n \"float|list|raw_input|unichr|callable|format|locals|reduce|unicode|\" +\n \"chr|frozenset|long|reload|vars|classmethod|getattr|map|repr|xrange|\" +\n \"cmp|globals|max|reversed|zip|compile|hasattr|memoryview|round|\" +\n \"__import__|complex|hash|min|apply|delattr|help|next|setattr|set|\" +\n \"buffer|dict|hex|object|slice|coerce|dir|id|oct|sorted|intern|\" +\n \"ascii|breakpoint|bytes\");\n var keywordMapper = this.createKeywordMapper({\n \"invalid.deprecated\": \"debugger\",\n \"support.function\": builtinFunctions,\n \"variable.language\": \"self|cls\",\n \"constant.language\": builtinConstants,\n \"keyword\": keywords\n }, \"identifier\");\n var strPre = \"[uU]?\";\n var strRawPre = \"[rR]\";\n var strFormatPre = \"[fF]\";\n var strRawFormatPre = \"(?:[rR][fF]|[fF][rR])\";\n var decimalInteger = \"(?:(?:[1-9]\\\\d*)|(?:0))\";\n var octInteger = \"(?:0[oO]?[0-7]+)\";\n var hexInteger = \"(?:0[xX][\\\\dA-Fa-f]+)\";\n var binInteger = \"(?:0[bB][01]+)\";\n var integer = \"(?:\" + decimalInteger + \"|\" + octInteger + \"|\" + hexInteger + \"|\" + binInteger + \")\";\n var exponent = \"(?:[eE][+-]?\\\\d+)\";\n var fraction = \"(?:\\\\.\\\\d+)\";\n var intPart = \"(?:\\\\d+)\";\n var pointFloat = \"(?:(?:\" + intPart + \"?\" + fraction + \")|(?:\" + intPart + \"\\\\.))\";\n var exponentFloat = \"(?:(?:\" + pointFloat + \"|\" + intPart + \")\" + exponent + \")\";\n var floatNumber = \"(?:\" + exponentFloat + \"|\" + pointFloat + \")\";\n var stringEscape = \"\\\\\\\\(x[0-9A-Fa-f]{2}|[0-7]{3}|[\\\\\\\\abfnrtv'\\\"]|U[0-9A-Fa-f]{8}|u[0-9A-Fa-f]{4})\";\n this.$rules = {\n \"start\": [{\n token: \"comment\",\n regex: \"#.*$\"\n }, {\n token: \"string\",\n regex: strPre + '\"{3}',\n next: \"qqstring3\"\n }, {\n token: \"string\",\n regex: strPre + '\"(?=.)',\n next: \"qqstring\"\n }, {\n token: \"string\",\n regex: strPre + \"'{3}\",\n next: \"qstring3\"\n }, {\n token: \"string\",\n regex: strPre + \"'(?=.)\",\n next: \"qstring\"\n }, {\n token: \"string\",\n regex: strRawPre + '\"{3}',\n next: \"rawqqstring3\"\n }, {\n token: \"string\",\n regex: strRawPre + '\"(?=.)',\n next: \"rawqqstring\"\n }, {\n token: \"string\",\n regex: strRawPre + \"'{3}\",\n next: \"rawqstring3\"\n }, {\n token: \"string\",\n regex: strRawPre + \"'(?=.)\",\n next: \"rawqstring\"\n }, {\n token: \"string\",\n regex: strFormatPre + '\"{3}',\n next: \"fqqstring3\"\n }, {\n token: \"string\",\n regex: strFormatPre + '\"(?=.)',\n next: \"fqqstring\"\n }, {\n token: \"string\",\n regex: strFormatPre + \"'{3}\",\n next: \"fqstring3\"\n }, {\n token: \"string\",\n regex: strFormatPre + \"'(?=.)\",\n next: \"fqstring\"\n }, {\n token: \"string\",\n regex: strRawFormatPre + '\"{3}',\n next: \"rfqqstring3\"\n }, {\n token: \"string\",\n regex: strRawFormatPre + '\"(?=.)',\n next: \"rfqqstring\"\n }, {\n token: \"string\",\n regex: strRawFormatPre + \"'{3}\",\n next: \"rfqstring3\"\n }, {\n token: \"string\",\n regex: strRawFormatPre + \"'(?=.)\",\n next: \"rfqstring\"\n }, {\n token: \"keyword.operator\",\n regex: \"\\\\+|\\\\-|\\\\*|\\\\*\\\\*|\\\\/|\\\\/\\\\/|%|@|<<|>>|&|\\\\||\\\\^|~|<|>|<=|=>|==|!=|<>|=\"\n }, {\n token: \"punctuation\",\n regex: \",|:|;|\\\\->|\\\\+=|\\\\-=|\\\\*=|\\\\/=|\\\\/\\\\/=|%=|@=|&=|\\\\|=|^=|>>=|<<=|\\\\*\\\\*=\"\n }, {\n token: \"paren.lparen\",\n regex: \"[\\\\[\\\\(\\\\{]\"\n }, {\n token: \"paren.rparen\",\n regex: \"[\\\\]\\\\)\\\\}]\"\n }, {\n token: [\"keyword\", \"text\", \"entity.name.function\"],\n regex: \"(def|class)(\\\\s+)([\\\\u00BF-\\\\u1FFF\\\\u2C00-\\\\uD7FF\\\\w]+)\"\n }, {\n token: \"text\",\n regex: \"\\\\s+\"\n }, {\n include: \"constants\"\n }],\n \"qqstring3\": [{\n token: \"constant.language.escape\",\n regex: stringEscape\n }, {\n token: \"string\",\n regex: '\"{3}',\n next: \"start\"\n }, {\n defaultToken: \"string\"\n }],\n \"qstring3\": [{\n token: \"constant.language.escape\",\n regex: stringEscape\n }, {\n token: \"string\",\n regex: \"'{3}\",\n next: \"start\"\n }, {\n defaultToken: \"string\"\n }],\n \"qqstring\": [{\n token: \"constant.language.escape\",\n regex: stringEscape\n }, {\n token: \"string\",\n regex: \"\\\\\\\\$\",\n next: \"qqstring\"\n }, {\n token: \"string\",\n regex: '\"|$',\n next: \"start\"\n }, {\n defaultToken: \"string\"\n }],\n \"qstring\": [{\n token: \"constant.language.escape\",\n regex: stringEscape\n }, {\n token: \"string\",\n regex: \"\\\\\\\\$\",\n next: \"qstring\"\n }, {\n token: \"string\",\n regex: \"'|$\",\n next: \"start\"\n }, {\n defaultToken: \"string\"\n }],\n \"rawqqstring3\": [{\n token: \"string\",\n regex: '\"{3}',\n next: \"start\"\n }, {\n defaultToken: \"string\"\n }],\n \"rawqstring3\": [{\n token: \"string\",\n regex: \"'{3}\",\n next: \"start\"\n }, {\n defaultToken: \"string\"\n }],\n \"rawqqstring\": [{\n token: \"string\",\n regex: \"\\\\\\\\$\",\n next: \"rawqqstring\"\n }, {\n token: \"string\",\n regex: '\"|$',\n next: \"start\"\n }, {\n defaultToken: \"string\"\n }],\n \"rawqstring\": [{\n token: \"string\",\n regex: \"\\\\\\\\$\",\n next: \"rawqstring\"\n }, {\n token: \"string\",\n regex: \"'|$\",\n next: \"start\"\n }, {\n defaultToken: \"string\"\n }],\n \"fqqstring3\": [{\n token: \"constant.language.escape\",\n regex: stringEscape\n }, {\n token: \"string\",\n regex: '\"{3}',\n next: \"start\"\n }, {\n token: \"paren.lparen\",\n regex: \"{\",\n push: \"fqstringParRules\"\n }, {\n defaultToken: \"string\"\n }],\n \"fqstring3\": [{\n token: \"constant.language.escape\",\n regex: stringEscape\n }, {\n token: \"string\",\n regex: \"'{3}\",\n next: \"start\"\n }, {\n token: \"paren.lparen\",\n regex: \"{\",\n push: \"fqstringParRules\"\n }, {\n defaultToken: \"string\"\n }],\n \"fqqstring\": [{\n token: \"constant.language.escape\",\n regex: stringEscape\n }, {\n token: \"string\",\n regex: \"\\\\\\\\$\",\n next: \"fqqstring\"\n }, {\n token: \"string\",\n regex: '\"|$',\n next: \"start\"\n }, {\n token: \"paren.lparen\",\n regex: \"{\",\n push: \"fqstringParRules\"\n }, {\n defaultToken: \"string\"\n }],\n \"fqstring\": [{\n token: \"constant.language.escape\",\n regex: stringEscape\n }, {\n token: \"string\",\n regex: \"'|$\",\n next: \"start\"\n }, {\n token: \"paren.lparen\",\n regex: \"{\",\n push: \"fqstringParRules\"\n }, {\n defaultToken: \"string\"\n }],\n \"rfqqstring3\": [{\n token: \"string\",\n regex: '\"{3}',\n next: \"start\"\n }, {\n token: \"paren.lparen\",\n regex: \"{\",\n push: \"fqstringParRules\"\n }, {\n defaultToken: \"string\"\n }],\n \"rfqstring3\": [{\n token: \"string\",\n regex: \"'{3}\",\n next: \"start\"\n }, {\n token: \"paren.lparen\",\n regex: \"{\",\n push: \"fqstringParRules\"\n }, {\n defaultToken: \"string\"\n }],\n \"rfqqstring\": [{\n token: \"string\",\n regex: \"\\\\\\\\$\",\n next: \"rfqqstring\"\n }, {\n token: \"string\",\n regex: '\"|$',\n next: \"start\"\n }, {\n token: \"paren.lparen\",\n regex: \"{\",\n push: \"fqstringParRules\"\n }, {\n defaultToken: \"string\"\n }],\n \"rfqstring\": [{\n token: \"string\",\n regex: \"'|$\",\n next: \"start\"\n }, {\n token: \"paren.lparen\",\n regex: \"{\",\n push: \"fqstringParRules\"\n }, {\n defaultToken: \"string\"\n }],\n \"fqstringParRules\": [{\n token: \"paren.lparen\",\n regex: \"[\\\\[\\\\(]\"\n }, {\n token: \"paren.rparen\",\n regex: \"[\\\\]\\\\)]\"\n }, {\n token: \"string\",\n regex: \"\\\\s+\"\n }, {\n token: \"string\",\n regex: \"'[^']*'\"\n }, {\n token: \"string\",\n regex: '\"[^\"]*\"'\n }, {\n token: \"function.support\",\n regex: \"(!s|!r|!a)\"\n }, {\n include: \"constants\"\n }, {\n token: 'paren.rparen',\n regex: \"}\",\n next: 'pop'\n }, {\n token: 'paren.lparen',\n regex: \"{\",\n push: \"fqstringParRules\"\n }],\n \"constants\": [{\n token: \"constant.numeric\",\n regex: \"(?:\" + floatNumber + \"|\\\\d+)[jJ]\\\\b\"\n }, {\n token: \"constant.numeric\",\n regex: floatNumber\n }, {\n token: \"constant.numeric\",\n regex: integer + \"[lL]\\\\b\"\n }, {\n token: \"constant.numeric\",\n regex: integer + \"\\\\b\"\n }, {\n token: [\"punctuation\", \"function.support\"],\n regex: \"(\\\\.)([a-zA-Z_]+)\\\\b\"\n }, {\n token: keywordMapper,\n regex: \"[a-zA-Z_$][a-zA-Z0-9_$]*\\\\b\"\n }]\n };\n this.normalizeRules();\n};\noop.inherits(PythonHighlightRules, TextHighlightRules);\nexports.PythonHighlightRules = PythonHighlightRules;\n\n});\n\nace.define(\"ace/mode/folding/pythonic\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/folding/fold_mode\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../../lib/oop\");\nvar BaseFoldMode = require(\"./fold_mode\").FoldMode;\nvar FoldMode = exports.FoldMode = function (markers) {\n this.foldingStartMarker = new RegExp(\"([\\\\[{])(?:\\\\s*)$|(\" + markers + \")(?:\\\\s*)(?:#.*)?$\");\n};\noop.inherits(FoldMode, BaseFoldMode);\n(function () {\n this.getFoldWidgetRange = function (session, foldStyle, row) {\n var line = session.getLine(row);\n var match = line.match(this.foldingStartMarker);\n if (match) {\n if (match[1])\n return this.openingBracketBlock(session, match[1], row, match.index);\n if (match[2])\n return this.indentationBlock(session, row, match.index + match[2].length);\n return this.indentationBlock(session, row);\n }\n };\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/python\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/python_highlight_rules\",\"ace/mode/folding/pythonic\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar TextMode = require(\"./text\").Mode;\nvar PythonHighlightRules = require(\"./python_highlight_rules\").PythonHighlightRules;\nvar PythonFoldMode = require(\"./folding/pythonic\").FoldMode;\nvar Range = require(\"../range\").Range;\nvar Mode = function () {\n this.HighlightRules = PythonHighlightRules;\n this.foldingRules = new PythonFoldMode(\"\\\\:\");\n this.$behaviour = this.$defaultBehaviour;\n};\noop.inherits(Mode, TextMode);\n(function () {\n this.lineCommentStart = \"#\";\n this.$pairQuotesAfter = {\n \"'\": /[ruf]/i,\n '\"': /[ruf]/i\n };\n this.getNextLineIndent = function (state, line, tab) {\n var indent = this.$getIndent(line);\n var tokenizedLine = this.getTokenizer().getLineTokens(line, state);\n var tokens = tokenizedLine.tokens;\n if (tokens.length && tokens[tokens.length - 1].type == \"comment\") {\n return indent;\n }\n if (state == \"start\") {\n var match = line.match(/^.*[\\{\\(\\[:]\\s*$/);\n if (match) {\n indent += tab;\n }\n }\n return indent;\n };\n var outdents = {\n \"pass\": 1,\n \"return\": 1,\n \"raise\": 1,\n \"break\": 1,\n \"continue\": 1\n };\n this.checkOutdent = function (state, line, input) {\n if (input !== \"\\r\\n\" && input !== \"\\r\" && input !== \"\\n\")\n return false;\n var tokens = this.getTokenizer().getLineTokens(line.trim(), state).tokens;\n if (!tokens)\n return false;\n do {\n var last = tokens.pop();\n } while (last && (last.type == \"comment\" || (last.type == \"text\" && last.value.match(/^\\s+$/))));\n if (!last)\n return false;\n return (last.type == \"keyword\" && outdents[last.value]);\n };\n this.autoOutdent = function (state, doc, row) {\n row += 1;\n var indent = this.$getIndent(doc.getLine(row));\n var tab = doc.getTabString();\n if (indent.slice(-tab.length) == tab)\n doc.remove(new Range(row, indent.length - tab.length, row, indent.length));\n };\n this.$id = \"ace/mode/python\";\n this.snippetFileId = \"ace/snippets/python\";\n}).call(Mode.prototype);\nexports.Mode = Mode;\n\n}); (function() {\n ace.require([\"ace/mode/python\"], function(m) {\n if (typeof module == \"object\" && typeof exports == \"object\" && module) {\n module.exports = m;\n }\n });\n })();\n ","ace.define(\"ace/mode/xml_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar TextHighlightRules = require(\"./text_highlight_rules\").TextHighlightRules;\nvar XmlHighlightRules = function (normalize) {\n var tagRegex = \"[_:a-zA-Z\\xc0-\\uffff][-_:.a-zA-Z0-9\\xc0-\\uffff]*\";\n this.$rules = {\n start: [\n { token: \"string.cdata.xml\", regex: \"<\\\\!\\\\[CDATA\\\\[\", next: \"cdata\" },\n {\n token: [\"punctuation.instruction.xml\", \"keyword.instruction.xml\"],\n regex: \"(<\\\\?)(\" + tagRegex + \")\", next: \"processing_instruction\"\n },\n { token: \"comment.start.xml\", regex: \"<\\\\!--\", next: \"comment\" },\n {\n token: [\"xml-pe.doctype.xml\", \"xml-pe.doctype.xml\"],\n regex: \"(<\\\\!)(DOCTYPE)(?=[\\\\s])\", next: \"doctype\", caseInsensitive: true\n },\n { include: \"tag\" },\n { token: \"text.end-tag-open.xml\", regex: \"\",\n next: \"start\"\n }],\n doctype: [\n { include: \"whitespace\" },\n { include: \"string\" },\n { token: \"xml-pe.doctype.xml\", regex: \">\", next: \"start\" },\n { token: \"xml-pe.xml\", regex: \"[-_a-zA-Z0-9:]+\" },\n { token: \"punctuation.int-subset\", regex: \"\\\\[\", push: \"int_subset\" }\n ],\n int_subset: [{\n token: \"text.xml\",\n regex: \"\\\\s+\"\n }, {\n token: \"punctuation.int-subset.xml\",\n regex: \"]\",\n next: \"pop\"\n }, {\n token: [\"punctuation.markup-decl.xml\", \"keyword.markup-decl.xml\"],\n regex: \"(<\\\\!)(\" + tagRegex + \")\",\n push: [{\n token: \"text\",\n regex: \"\\\\s+\"\n },\n {\n token: \"punctuation.markup-decl.xml\",\n regex: \">\",\n next: \"pop\"\n },\n { include: \"string\" }]\n }],\n cdata: [\n { token: \"string.cdata.xml\", regex: \"\\\\]\\\\]>\", next: \"start\" },\n { token: \"text.xml\", regex: \"\\\\s+\" },\n { token: \"text.xml\", regex: \"(?:[^\\\\]]|\\\\](?!\\\\]>))+\" }\n ],\n comment: [\n { token: \"comment.end.xml\", regex: \"-->\", next: \"start\" },\n { defaultToken: \"comment.xml\" }\n ],\n reference: [{\n token: \"constant.language.escape.reference.xml\",\n regex: \"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\\\.-]+;)\"\n }],\n attr_reference: [{\n token: \"constant.language.escape.reference.attribute-value.xml\",\n regex: \"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\\\.-]+;)\"\n }],\n tag: [{\n token: [\"meta.tag.punctuation.tag-open.xml\", \"meta.tag.punctuation.end-tag-open.xml\", \"meta.tag.tag-name.xml\"],\n regex: \"(?:(<)|(\", next: \"start\" }\n ]\n }],\n tag_whitespace: [\n { token: \"text.tag-whitespace.xml\", regex: \"\\\\s+\" }\n ],\n whitespace: [\n { token: \"text.whitespace.xml\", regex: \"\\\\s+\" }\n ],\n string: [{\n token: \"string.xml\",\n regex: \"'\",\n push: [\n { token: \"string.xml\", regex: \"'\", next: \"pop\" },\n { defaultToken: \"string.xml\" }\n ]\n }, {\n token: \"string.xml\",\n regex: '\"',\n push: [\n { token: \"string.xml\", regex: '\"', next: \"pop\" },\n { defaultToken: \"string.xml\" }\n ]\n }],\n attributes: [{\n token: \"entity.other.attribute-name.xml\",\n regex: tagRegex\n }, {\n token: \"keyword.operator.attribute-equals.xml\",\n regex: \"=\"\n }, {\n include: \"tag_whitespace\"\n }, {\n include: \"attribute_value\"\n }],\n attribute_value: [{\n token: \"string.attribute-value.xml\",\n regex: \"'\",\n push: [\n { token: \"string.attribute-value.xml\", regex: \"'\", next: \"pop\" },\n { include: \"attr_reference\" },\n { defaultToken: \"string.attribute-value.xml\" }\n ]\n }, {\n token: \"string.attribute-value.xml\",\n regex: '\"',\n push: [\n { token: \"string.attribute-value.xml\", regex: '\"', next: \"pop\" },\n { include: \"attr_reference\" },\n { defaultToken: \"string.attribute-value.xml\" }\n ]\n }]\n };\n if (this.constructor === XmlHighlightRules)\n this.normalizeRules();\n};\n(function () {\n this.embedTagRules = function (HighlightRules, prefix, tag) {\n this.$rules.tag.unshift({\n token: [\"meta.tag.punctuation.tag-open.xml\", \"meta.tag.\" + tag + \".tag-name.xml\"],\n regex: \"(<)(\" + tag + \"(?=\\\\s|>|$))\",\n next: [\n { include: \"attributes\" },\n { token: \"meta.tag.punctuation.tag-close.xml\", regex: \"/?>\", next: prefix + \"start\" }\n ]\n });\n this.$rules[tag + \"-end\"] = [\n { include: \"attributes\" },\n { token: \"meta.tag.punctuation.tag-close.xml\", regex: \"/?>\", next: \"start\",\n onMatch: function (value, currentState, stack) {\n stack.splice(0);\n return this.token;\n } }\n ];\n this.embedRules(HighlightRules, prefix, [{\n token: [\"meta.tag.punctuation.end-tag-open.xml\", \"meta.tag.\" + tag + \".tag-name.xml\"],\n regex: \"(|$))\",\n next: tag + \"-end\"\n }, {\n token: \"string.cdata.xml\",\n regex: \"<\\\\!\\\\[CDATA\\\\[\"\n }, {\n token: \"string.cdata.xml\",\n regex: \"\\\\]\\\\]>\"\n }]);\n };\n}).call(TextHighlightRules.prototype);\noop.inherits(XmlHighlightRules, TextHighlightRules);\nexports.XmlHighlightRules = XmlHighlightRules;\n\n});\n\nace.define(\"ace/mode/behaviour/xml\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/behaviour\",\"ace/token_iterator\",\"ace/lib/lang\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../../lib/oop\");\nvar Behaviour = require(\"../behaviour\").Behaviour;\nvar TokenIterator = require(\"../../token_iterator\").TokenIterator;\nvar lang = require(\"../../lib/lang\");\nfunction is(token, type) {\n return token && token.type.lastIndexOf(type + \".xml\") > -1;\n}\nvar XmlBehaviour = function () {\n this.add(\"string_dquotes\", \"insertion\", function (state, action, editor, session, text) {\n if (text == '\"' || text == \"'\") {\n var quote = text;\n var selected = session.doc.getTextRange(editor.getSelectionRange());\n if (selected !== \"\" && selected !== \"'\" && selected != '\"' && editor.getWrapBehavioursEnabled()) {\n return {\n text: quote + selected + quote,\n selection: false\n };\n }\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n var token = iterator.getCurrentToken();\n if (rightChar == quote && (is(token, \"attribute-value\") || is(token, \"string\"))) {\n return {\n text: \"\",\n selection: [1, 1]\n };\n }\n if (!token)\n token = iterator.stepBackward();\n if (!token)\n return;\n while (is(token, \"tag-whitespace\") || is(token, \"whitespace\")) {\n token = iterator.stepBackward();\n }\n var rightSpace = !rightChar || rightChar.match(/\\s/);\n if (is(token, \"attribute-equals\") && (rightSpace || rightChar == '>') || (is(token, \"decl-attribute-equals\") && (rightSpace || rightChar == '?'))) {\n return {\n text: quote + quote,\n selection: [1, 1]\n };\n }\n }\n });\n this.add(\"string_dquotes\", \"deletion\", function (state, action, editor, session, range) {\n var selected = session.doc.getTextRange(range);\n if (!range.isMultiLine() && (selected == '\"' || selected == \"'\")) {\n var line = session.doc.getLine(range.start.row);\n var rightChar = line.substring(range.start.column + 1, range.start.column + 2);\n if (rightChar == selected) {\n range.end.column++;\n return range;\n }\n }\n });\n this.add(\"autoclosing\", \"insertion\", function (state, action, editor, session, text) {\n if (text == '>') {\n var position = editor.getSelectionRange().start;\n var iterator = new TokenIterator(session, position.row, position.column);\n var token = iterator.getCurrentToken() || iterator.stepBackward();\n if (!token || !(is(token, \"tag-name\") || is(token, \"tag-whitespace\") || is(token, \"attribute-name\") || is(token, \"attribute-equals\") || is(token, \"attribute-value\")))\n return;\n if (is(token, \"reference.attribute-value\"))\n return;\n if (is(token, \"attribute-value\")) {\n var tokenEndColumn = iterator.getCurrentTokenColumn() + token.value.length;\n if (position.column < tokenEndColumn)\n return;\n if (position.column == tokenEndColumn) {\n var nextToken = iterator.stepForward();\n if (nextToken && is(nextToken, \"attribute-value\"))\n return;\n iterator.stepBackward();\n }\n }\n if (/^\\s*>/.test(session.getLine(position.row).slice(position.column)))\n return;\n while (!is(token, \"tag-name\")) {\n token = iterator.stepBackward();\n if (token.value == \"<\") {\n token = iterator.stepForward();\n break;\n }\n }\n var tokenRow = iterator.getCurrentTokenRow();\n var tokenColumn = iterator.getCurrentTokenColumn();\n if (is(iterator.stepBackward(), \"end-tag-open\"))\n return;\n var element = token.value;\n if (tokenRow == position.row)\n element = element.substring(0, position.column - tokenColumn);\n if (this.voidElements.hasOwnProperty(element.toLowerCase()))\n return;\n return {\n text: \">\" + \"\",\n selection: [1, 1]\n };\n }\n });\n this.add(\"autoindent\", \"insertion\", function (state, action, editor, session, text) {\n if (text == \"\\n\") {\n var cursor = editor.getCursorPosition();\n var line = session.getLine(cursor.row);\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n var token = iterator.getCurrentToken();\n if (token && token.type.indexOf(\"tag-close\") !== -1) {\n if (token.value == \"/>\")\n return;\n while (token && token.type.indexOf(\"tag-name\") === -1) {\n token = iterator.stepBackward();\n }\n if (!token) {\n return;\n }\n var tag = token.value;\n var row = iterator.getCurrentTokenRow();\n token = iterator.stepBackward();\n if (!token || token.type.indexOf(\"end-tag\") !== -1) {\n return;\n }\n if (this.voidElements && !this.voidElements[tag]) {\n var nextToken = session.getTokenAt(cursor.row, cursor.column + 1);\n var line = session.getLine(row);\n var nextIndent = this.$getIndent(line);\n var indent = nextIndent + session.getTabString();\n if (nextToken && nextToken.value === \" -1;\n}\n(function () {\n this.getFoldWidget = function (session, foldStyle, row) {\n var tag = this._getFirstTagInLine(session, row);\n if (!tag)\n return this.getCommentFoldWidget(session, row);\n if (tag.closing || (!tag.tagName && tag.selfClosing))\n return foldStyle === \"markbeginend\" ? \"end\" : \"\";\n if (!tag.tagName || tag.selfClosing || this.voidElements.hasOwnProperty(tag.tagName.toLowerCase()))\n return \"\";\n if (this._findEndTagInLine(session, row, tag.tagName, tag.end.column))\n return \"\";\n return \"start\";\n };\n this.getCommentFoldWidget = function (session, row) {\n if (/comment/.test(session.getState(row)) && /';\n break;\n }\n }\n return tag;\n }\n else if (is(token, \"tag-close\")) {\n tag.selfClosing = token.value == '/>';\n return tag;\n }\n tag.start.column += token.value.length;\n }\n return null;\n };\n this._findEndTagInLine = function (session, row, tagName, startColumn) {\n var tokens = session.getTokens(row);\n var column = 0;\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n column += token.value.length;\n if (column < startColumn)\n continue;\n if (is(token, \"end-tag-open\")) {\n token = tokens[i + 1];\n if (token && token.value == tagName)\n return true;\n }\n }\n return false;\n };\n this.getFoldWidgetRange = function (session, foldStyle, row) {\n var tags = session.getMatchingTags({ row: row, column: 0 });\n if (tags) {\n return new Range(tags.openTag.end.row, tags.openTag.end.column, tags.closeTag.start.row, tags.closeTag.start.column);\n }\n else {\n return this.getCommentFoldWidget(session, row)\n && session.getCommentFoldRange(row, session.getLine(row).length);\n }\n };\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/xml\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/mode/text\",\"ace/mode/xml_highlight_rules\",\"ace/mode/behaviour/xml\",\"ace/mode/folding/xml\",\"ace/worker/worker_client\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar lang = require(\"../lib/lang\");\nvar TextMode = require(\"./text\").Mode;\nvar XmlHighlightRules = require(\"./xml_highlight_rules\").XmlHighlightRules;\nvar XmlBehaviour = require(\"./behaviour/xml\").XmlBehaviour;\nvar XmlFoldMode = require(\"./folding/xml\").FoldMode;\nvar WorkerClient = require(\"../worker/worker_client\").WorkerClient;\nvar Mode = function () {\n this.HighlightRules = XmlHighlightRules;\n this.$behaviour = new XmlBehaviour();\n this.foldingRules = new XmlFoldMode();\n};\noop.inherits(Mode, TextMode);\n(function () {\n this.voidElements = lang.arrayToMap([]);\n this.blockComment = { start: \"\" };\n this.createWorker = function (session) {\n var worker = new WorkerClient([\"ace\"], \"ace/mode/xml_worker\", \"Worker\");\n worker.attachToDocument(session.getDocument());\n worker.on(\"error\", function (e) {\n session.setAnnotations(e.data);\n });\n worker.on(\"terminate\", function () {\n session.clearAnnotations();\n });\n return worker;\n };\n this.$id = \"ace/mode/xml\";\n}).call(Mode.prototype);\nexports.Mode = Mode;\n\n}); (function() {\n ace.require([\"ace/mode/xml\"], function(m) {\n if (typeof module == \"object\" && typeof exports == \"object\" && module) {\n module.exports = m;\n }\n });\n })();\n ","ace.define(\"ace/theme/github-css\",[\"require\",\"exports\",\"module\"], function(require, exports, module){module.exports = \"/* CSS style content from github's default pygments highlighter template.\\n Cursor and selection styles from textmate.css. */\\n.ace-github .ace_gutter {\\n background: #e8e8e8;\\n color: #AAA;\\n}\\n\\n.ace-github {\\n background: #fff;\\n color: #000;\\n}\\n\\n.ace-github .ace_keyword {\\n font-weight: bold;\\n}\\n\\n.ace-github .ace_string {\\n color: #D14;\\n}\\n\\n.ace-github .ace_variable.ace_class {\\n color: teal;\\n}\\n\\n.ace-github .ace_constant.ace_numeric {\\n color: #099;\\n}\\n\\n.ace-github .ace_constant.ace_buildin {\\n color: #0086B3;\\n}\\n\\n.ace-github .ace_support.ace_function {\\n color: #0086B3;\\n}\\n\\n.ace-github .ace_comment {\\n color: #998;\\n font-style: italic;\\n}\\n\\n.ace-github .ace_variable.ace_language {\\n color: #0086B3;\\n}\\n\\n.ace-github .ace_paren {\\n font-weight: bold;\\n}\\n\\n.ace-github .ace_boolean {\\n font-weight: bold;\\n}\\n\\n.ace-github .ace_string.ace_regexp {\\n color: #009926;\\n font-weight: normal;\\n}\\n\\n.ace-github .ace_variable.ace_instance {\\n color: teal;\\n}\\n\\n.ace-github .ace_constant.ace_language {\\n font-weight: bold;\\n}\\n\\n.ace-github .ace_cursor {\\n color: black;\\n}\\n\\n.ace-github.ace_focus .ace_marker-layer .ace_active-line {\\n background: rgb(255, 255, 204);\\n}\\n.ace-github .ace_marker-layer .ace_active-line {\\n background: rgb(245, 245, 245);\\n}\\n\\n.ace-github .ace_marker-layer .ace_selection {\\n background: rgb(181, 213, 255);\\n}\\n\\n.ace-github.ace_multiselect .ace_selection.ace_start {\\n box-shadow: 0 0 3px 0px white;\\n}\\n/* bold keywords cause cursor issues for some fonts */\\n/* this disables bold style for editor and keeps for static highlighter */\\n.ace-github.ace_nobold .ace_line > span {\\n font-weight: normal !important;\\n}\\n\\n.ace-github .ace_marker-layer .ace_step {\\n background: rgb(252, 255, 0);\\n}\\n\\n.ace-github .ace_marker-layer .ace_stack {\\n background: rgb(164, 229, 101);\\n}\\n\\n.ace-github .ace_marker-layer .ace_bracket {\\n margin: -1px 0 0 -1px;\\n border: 1px solid rgb(192, 192, 192);\\n}\\n\\n.ace-github .ace_gutter-active-line {\\n background-color : rgba(0, 0, 0, 0.07);\\n}\\n\\n.ace-github .ace_marker-layer .ace_selected-word {\\n background: rgb(250, 250, 255);\\n border: 1px solid rgb(200, 200, 250);\\n}\\n\\n.ace-github .ace_invisible {\\n color: #BFBFBF\\n}\\n\\n.ace-github .ace_print-margin {\\n width: 1px;\\n background: #e8e8e8;\\n}\\n\\n.ace-github .ace_indent-guide {\\n background: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==\\\") right repeat-y;\\n}\\n\\n.ace-github .ace_indent-guide-active {\\n background: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAAZSURBVHjaYvj///9/hivKyv8BAAAA//8DACLqBhbvk+/eAAAAAElFTkSuQmCC\\\") right repeat-y;\\n}\\n\";\n\n});\n\nace.define(\"ace/theme/github\",[\"require\",\"exports\",\"module\",\"ace/theme/github-css\",\"ace/lib/dom\"], function(require, exports, module){exports.isDark = false;\nexports.cssClass = \"ace-github\";\nexports.cssText = require(\"./github-css\");\nvar dom = require(\"../lib/dom\");\ndom.importCssString(exports.cssText, exports.cssClass, false);\n\n}); (function() {\n ace.require([\"ace/theme/github\"], function(m) {\n if (typeof module == \"object\" && typeof exports == \"object\" && module) {\n module.exports = m;\n }\n });\n })();\n ","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.flatpickr-calendar{background:transparent;opacity:0;display:none;text-align:center;visibility:hidden;padding:0;-webkit-animation:none;animation:none;direction:ltr;border:0;font-size:14px;line-height:24px;border-radius:5px;position:absolute;width:307.875px;-webkit-box-sizing:border-box;box-sizing:border-box;-ms-touch-action:manipulation;touch-action:manipulation;background:#fff;-webkit-box-shadow:1px 0 0 #e6e6e6,-1px 0 0 #e6e6e6,0 1px 0 #e6e6e6,0 -1px 0 #e6e6e6,0 3px 13px rgba(0,0,0,0.08);box-shadow:1px 0 0 #e6e6e6,-1px 0 0 #e6e6e6,0 1px 0 #e6e6e6,0 -1px 0 #e6e6e6,0 3px 13px rgba(0,0,0,0.08)}.flatpickr-calendar.open,.flatpickr-calendar.inline{opacity:1;max-height:640px;visibility:visible}.flatpickr-calendar.open{display:inline-block;z-index:99999}.flatpickr-calendar.animate.open{-webkit-animation:fpFadeInDown 300ms cubic-bezier(.23,1,.32,1);animation:fpFadeInDown 300ms cubic-bezier(.23,1,.32,1)}.flatpickr-calendar.inline{display:block;position:relative;top:2px}.flatpickr-calendar.static{position:absolute;top:calc(100% + 2px)}.flatpickr-calendar.static.open{z-index:999;display:block}.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+1) .flatpickr-day.inRange:nth-child(7n+7){-webkit-box-shadow:none !important;box-shadow:none !important}.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+2) .flatpickr-day.inRange:nth-child(7n+1){-webkit-box-shadow:-2px 0 0 #e6e6e6,5px 0 0 #e6e6e6;box-shadow:-2px 0 0 #e6e6e6,5px 0 0 #e6e6e6}.flatpickr-calendar .hasWeeks .dayContainer,.flatpickr-calendar .hasTime .dayContainer{border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.flatpickr-calendar .hasWeeks .dayContainer{border-left:0}.flatpickr-calendar.hasTime .flatpickr-time{height:40px;border-top:1px solid #e6e6e6}.flatpickr-calendar.noCalendar.hasTime .flatpickr-time{height:auto}.flatpickr-calendar:before,.flatpickr-calendar:after{position:absolute;display:block;pointer-events:none;border:solid transparent;content:'';height:0;width:0;left:22px}.flatpickr-calendar.rightMost:before,.flatpickr-calendar.arrowRight:before,.flatpickr-calendar.rightMost:after,.flatpickr-calendar.arrowRight:after{left:auto;right:22px}.flatpickr-calendar.arrowCenter:before,.flatpickr-calendar.arrowCenter:after{left:50%;right:50%}.flatpickr-calendar:before{border-width:5px;margin:0 -5px}.flatpickr-calendar:after{border-width:4px;margin:0 -4px}.flatpickr-calendar.arrowTop:before,.flatpickr-calendar.arrowTop:after{bottom:100%}.flatpickr-calendar.arrowTop:before{border-bottom-color:#e6e6e6}.flatpickr-calendar.arrowTop:after{border-bottom-color:#fff}.flatpickr-calendar.arrowBottom:before,.flatpickr-calendar.arrowBottom:after{top:100%}.flatpickr-calendar.arrowBottom:before{border-top-color:#e6e6e6}.flatpickr-calendar.arrowBottom:after{border-top-color:#fff}.flatpickr-calendar:focus{outline:0}.flatpickr-wrapper{position:relative;display:inline-block}.flatpickr-months{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.flatpickr-months .flatpickr-month{background:transparent;color:rgba(0,0,0,0.9);fill:rgba(0,0,0,0.9);height:34px;line-height:1;text-align:center;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:hidden;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}.flatpickr-months .flatpickr-prev-month,.flatpickr-months .flatpickr-next-month{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;text-decoration:none;cursor:pointer;position:absolute;top:0;height:34px;padding:10px;z-index:3;color:rgba(0,0,0,0.9);fill:rgba(0,0,0,0.9)}.flatpickr-months .flatpickr-prev-month.flatpickr-disabled,.flatpickr-months .flatpickr-next-month.flatpickr-disabled{display:none}.flatpickr-months .flatpickr-prev-month i,.flatpickr-months .flatpickr-next-month i{position:relative}.flatpickr-months .flatpickr-prev-month.flatpickr-prev-month,.flatpickr-months .flatpickr-next-month.flatpickr-prev-month{/*\n /*rtl:begin:ignore*/left:0/*\n /*rtl:end:ignore*/}/*\n /*rtl:begin:ignore*/\n/*\n /*rtl:end:ignore*/\n.flatpickr-months .flatpickr-prev-month.flatpickr-next-month,.flatpickr-months .flatpickr-next-month.flatpickr-next-month{/*\n /*rtl:begin:ignore*/right:0/*\n /*rtl:end:ignore*/}/*\n /*rtl:begin:ignore*/\n/*\n /*rtl:end:ignore*/\n.flatpickr-months .flatpickr-prev-month:hover,.flatpickr-months .flatpickr-next-month:hover{color:#959ea9}.flatpickr-months .flatpickr-prev-month:hover svg,.flatpickr-months .flatpickr-next-month:hover svg{fill:#f64747}.flatpickr-months .flatpickr-prev-month svg,.flatpickr-months .flatpickr-next-month svg{width:14px;height:14px}.flatpickr-months .flatpickr-prev-month svg path,.flatpickr-months .flatpickr-next-month svg path{-webkit-transition:fill .1s;transition:fill .1s;fill:inherit}.numInputWrapper{position:relative;height:auto}.numInputWrapper input,.numInputWrapper span{display:inline-block}.numInputWrapper input{width:100%}.numInputWrapper input::-ms-clear{display:none}.numInputWrapper input::-webkit-outer-spin-button,.numInputWrapper input::-webkit-inner-spin-button{margin:0;-webkit-appearance:none}.numInputWrapper span{position:absolute;right:0;width:14px;padding:0 4px 0 2px;height:50%;line-height:50%;opacity:0;cursor:pointer;border:1px solid rgba(57,57,57,0.15);-webkit-box-sizing:border-box;box-sizing:border-box}.numInputWrapper span:hover{background:rgba(0,0,0,0.1)}.numInputWrapper span:active{background:rgba(0,0,0,0.2)}.numInputWrapper span:after{display:block;content:\"\";position:absolute}.numInputWrapper span.arrowUp{top:0;border-bottom:0}.numInputWrapper span.arrowUp:after{border-left:4px solid transparent;border-right:4px solid transparent;border-bottom:4px solid rgba(57,57,57,0.6);top:26%}.numInputWrapper span.arrowDown{top:50%}.numInputWrapper span.arrowDown:after{border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px solid rgba(57,57,57,0.6);top:40%}.numInputWrapper span svg{width:inherit;height:auto}.numInputWrapper span svg path{fill:rgba(0,0,0,0.5)}.numInputWrapper:hover{background:rgba(0,0,0,0.05)}.numInputWrapper:hover span{opacity:1}.flatpickr-current-month{font-size:135%;line-height:inherit;font-weight:300;color:inherit;position:absolute;width:75%;left:12.5%;padding:7.48px 0 0 0;line-height:1;height:34px;display:inline-block;text-align:center;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.flatpickr-current-month span.cur-month{font-family:inherit;font-weight:700;color:inherit;display:inline-block;margin-left:.5ch;padding:0}.flatpickr-current-month span.cur-month:hover{background:rgba(0,0,0,0.05)}.flatpickr-current-month .numInputWrapper{width:6ch;width:7ch\\\\0;display:inline-block}.flatpickr-current-month .numInputWrapper span.arrowUp:after{border-bottom-color:rgba(0,0,0,0.9)}.flatpickr-current-month .numInputWrapper span.arrowDown:after{border-top-color:rgba(0,0,0,0.9)}.flatpickr-current-month input.cur-year{background:transparent;-webkit-box-sizing:border-box;box-sizing:border-box;color:inherit;cursor:text;padding:0 0 0 .5ch;margin:0;display:inline-block;font-size:inherit;font-family:inherit;font-weight:300;line-height:inherit;height:auto;border:0;border-radius:0;vertical-align:initial;-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.flatpickr-current-month input.cur-year:focus{outline:0}.flatpickr-current-month input.cur-year[disabled],.flatpickr-current-month input.cur-year[disabled]:hover{font-size:100%;color:rgba(0,0,0,0.5);background:transparent;pointer-events:none}.flatpickr-current-month .flatpickr-monthDropdown-months{appearance:menulist;background:transparent;border:none;border-radius:0;box-sizing:border-box;color:inherit;cursor:pointer;font-size:inherit;font-family:inherit;font-weight:300;height:auto;line-height:inherit;margin:-1px 0 0 0;outline:none;padding:0 0 0 .5ch;position:relative;vertical-align:initial;-webkit-box-sizing:border-box;-webkit-appearance:menulist;-moz-appearance:menulist;width:auto}.flatpickr-current-month .flatpickr-monthDropdown-months:focus,.flatpickr-current-month .flatpickr-monthDropdown-months:active{outline:none}.flatpickr-current-month .flatpickr-monthDropdown-months:hover{background:rgba(0,0,0,0.05)}.flatpickr-current-month .flatpickr-monthDropdown-months .flatpickr-monthDropdown-month{background-color:transparent;outline:none;padding:0}.flatpickr-weekdays{background:transparent;text-align:center;overflow:hidden;width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;height:28px}.flatpickr-weekdays .flatpickr-weekdaycontainer{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}span.flatpickr-weekday{cursor:default;font-size:90%;background:transparent;color:rgba(0,0,0,0.54);line-height:1;margin:0;text-align:center;display:block;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;font-weight:bolder}.dayContainer,.flatpickr-weeks{padding:1px 0 0 0}.flatpickr-days{position:relative;overflow:hidden;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:flex-start;width:307.875px}.flatpickr-days:focus{outline:0}.dayContainer{padding:0;outline:0;text-align:left;width:307.875px;min-width:307.875px;max-width:307.875px;-webkit-box-sizing:border-box;box-sizing:border-box;display:inline-block;display:-ms-flexbox;display:-webkit-box;display:-webkit-flex;display:flex;-webkit-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-wrap:wrap;-ms-flex-pack:justify;-webkit-justify-content:space-around;justify-content:space-around;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}.dayContainer + .dayContainer{-webkit-box-shadow:-1px 0 0 #e6e6e6;box-shadow:-1px 0 0 #e6e6e6}.flatpickr-day{background:none;border:1px solid transparent;border-radius:150px;-webkit-box-sizing:border-box;box-sizing:border-box;color:#393939;cursor:pointer;font-weight:400;width:14.2857143%;-webkit-flex-basis:14.2857143%;-ms-flex-preferred-size:14.2857143%;flex-basis:14.2857143%;max-width:39px;height:39px;line-height:39px;margin:0;display:inline-block;position:relative;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;text-align:center}.flatpickr-day.inRange,.flatpickr-day.prevMonthDay.inRange,.flatpickr-day.nextMonthDay.inRange,.flatpickr-day.today.inRange,.flatpickr-day.prevMonthDay.today.inRange,.flatpickr-day.nextMonthDay.today.inRange,.flatpickr-day:hover,.flatpickr-day.prevMonthDay:hover,.flatpickr-day.nextMonthDay:hover,.flatpickr-day:focus,.flatpickr-day.prevMonthDay:focus,.flatpickr-day.nextMonthDay:focus{cursor:pointer;outline:0;background:#e6e6e6;border-color:#e6e6e6}.flatpickr-day.today{border-color:#959ea9}.flatpickr-day.today:hover,.flatpickr-day.today:focus{border-color:#959ea9;background:#959ea9;color:#fff}.flatpickr-day.selected,.flatpickr-day.startRange,.flatpickr-day.endRange,.flatpickr-day.selected.inRange,.flatpickr-day.startRange.inRange,.flatpickr-day.endRange.inRange,.flatpickr-day.selected:focus,.flatpickr-day.startRange:focus,.flatpickr-day.endRange:focus,.flatpickr-day.selected:hover,.flatpickr-day.startRange:hover,.flatpickr-day.endRange:hover,.flatpickr-day.selected.prevMonthDay,.flatpickr-day.startRange.prevMonthDay,.flatpickr-day.endRange.prevMonthDay,.flatpickr-day.selected.nextMonthDay,.flatpickr-day.startRange.nextMonthDay,.flatpickr-day.endRange.nextMonthDay{background:#569ff7;-webkit-box-shadow:none;box-shadow:none;color:#fff;border-color:#569ff7}.flatpickr-day.selected.startRange,.flatpickr-day.startRange.startRange,.flatpickr-day.endRange.startRange{border-radius:50px 0 0 50px}.flatpickr-day.selected.endRange,.flatpickr-day.startRange.endRange,.flatpickr-day.endRange.endRange{border-radius:0 50px 50px 0}.flatpickr-day.selected.startRange + .endRange:not(:nth-child(7n+1)),.flatpickr-day.startRange.startRange + .endRange:not(:nth-child(7n+1)),.flatpickr-day.endRange.startRange + .endRange:not(:nth-child(7n+1)){-webkit-box-shadow:-10px 0 0 #569ff7;box-shadow:-10px 0 0 #569ff7}.flatpickr-day.selected.startRange.endRange,.flatpickr-day.startRange.startRange.endRange,.flatpickr-day.endRange.startRange.endRange{border-radius:50px}.flatpickr-day.inRange{border-radius:0;-webkit-box-shadow:-5px 0 0 #e6e6e6,5px 0 0 #e6e6e6;box-shadow:-5px 0 0 #e6e6e6,5px 0 0 #e6e6e6}.flatpickr-day.flatpickr-disabled,.flatpickr-day.flatpickr-disabled:hover,.flatpickr-day.prevMonthDay,.flatpickr-day.nextMonthDay,.flatpickr-day.notAllowed,.flatpickr-day.notAllowed.prevMonthDay,.flatpickr-day.notAllowed.nextMonthDay{color:rgba(57,57,57,0.3);background:transparent;border-color:transparent;cursor:default}.flatpickr-day.flatpickr-disabled,.flatpickr-day.flatpickr-disabled:hover{cursor:not-allowed;color:rgba(57,57,57,0.1)}.flatpickr-day.week.selected{border-radius:0;-webkit-box-shadow:-5px 0 0 #569ff7,5px 0 0 #569ff7;box-shadow:-5px 0 0 #569ff7,5px 0 0 #569ff7}.flatpickr-day.hidden{visibility:hidden}.rangeMode .flatpickr-day{margin-top:1px}.flatpickr-weekwrapper{float:left}.flatpickr-weekwrapper .flatpickr-weeks{padding:0 12px;-webkit-box-shadow:1px 0 0 #e6e6e6;box-shadow:1px 0 0 #e6e6e6}.flatpickr-weekwrapper .flatpickr-weekday{float:none;width:100%;line-height:28px}.flatpickr-weekwrapper span.flatpickr-day,.flatpickr-weekwrapper span.flatpickr-day:hover{display:block;width:100%;max-width:none;color:rgba(57,57,57,0.3);background:transparent;cursor:default;border:none}.flatpickr-innerContainer{display:block;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden}.flatpickr-rContainer{display:inline-block;padding:0;-webkit-box-sizing:border-box;box-sizing:border-box}.flatpickr-time{text-align:center;outline:0;display:block;height:0;line-height:40px;max-height:40px;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.flatpickr-time:after{content:\"\";display:table;clear:both}.flatpickr-time .numInputWrapper{-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;width:40%;height:40px;float:left}.flatpickr-time .numInputWrapper span.arrowUp:after{border-bottom-color:#393939}.flatpickr-time .numInputWrapper span.arrowDown:after{border-top-color:#393939}.flatpickr-time.hasSeconds .numInputWrapper{width:26%}.flatpickr-time.time24hr .numInputWrapper{width:49%}.flatpickr-time input{background:transparent;-webkit-box-shadow:none;box-shadow:none;border:0;border-radius:0;text-align:center;margin:0;padding:0;height:inherit;line-height:inherit;color:#393939;font-size:14px;position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.flatpickr-time input.flatpickr-hour{font-weight:bold}.flatpickr-time input.flatpickr-minute,.flatpickr-time input.flatpickr-second{font-weight:400}.flatpickr-time input:focus{outline:0;border:0}.flatpickr-time .flatpickr-time-separator,.flatpickr-time .flatpickr-am-pm{height:inherit;float:left;line-height:inherit;color:#393939;font-weight:bold;width:2%;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-align-self:center;-ms-flex-item-align:center;align-self:center}.flatpickr-time .flatpickr-am-pm{outline:0;width:18%;cursor:pointer;text-align:center;font-weight:400}.flatpickr-time input:hover,.flatpickr-time .flatpickr-am-pm:hover,.flatpickr-time input:focus,.flatpickr-time .flatpickr-am-pm:focus{background:#eee}.flatpickr-input[readonly]{cursor:pointer}@-webkit-keyframes fpFadeInDown{from{opacity:0;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@keyframes fpFadeInDown{from{opacity:0;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/flatpickr/dist/flatpickr.min.css\"],\"names\":[],\"mappings\":\"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\",\"sourcesContent\":[\".flatpickr-calendar{background:transparent;opacity:0;display:none;text-align:center;visibility:hidden;padding:0;-webkit-animation:none;animation:none;direction:ltr;border:0;font-size:14px;line-height:24px;border-radius:5px;position:absolute;width:307.875px;-webkit-box-sizing:border-box;box-sizing:border-box;-ms-touch-action:manipulation;touch-action:manipulation;background:#fff;-webkit-box-shadow:1px 0 0 #e6e6e6,-1px 0 0 #e6e6e6,0 1px 0 #e6e6e6,0 -1px 0 #e6e6e6,0 3px 13px rgba(0,0,0,0.08);box-shadow:1px 0 0 #e6e6e6,-1px 0 0 #e6e6e6,0 1px 0 #e6e6e6,0 -1px 0 #e6e6e6,0 3px 13px rgba(0,0,0,0.08)}.flatpickr-calendar.open,.flatpickr-calendar.inline{opacity:1;max-height:640px;visibility:visible}.flatpickr-calendar.open{display:inline-block;z-index:99999}.flatpickr-calendar.animate.open{-webkit-animation:fpFadeInDown 300ms cubic-bezier(.23,1,.32,1);animation:fpFadeInDown 300ms cubic-bezier(.23,1,.32,1)}.flatpickr-calendar.inline{display:block;position:relative;top:2px}.flatpickr-calendar.static{position:absolute;top:calc(100% + 2px)}.flatpickr-calendar.static.open{z-index:999;display:block}.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+1) .flatpickr-day.inRange:nth-child(7n+7){-webkit-box-shadow:none !important;box-shadow:none !important}.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+2) .flatpickr-day.inRange:nth-child(7n+1){-webkit-box-shadow:-2px 0 0 #e6e6e6,5px 0 0 #e6e6e6;box-shadow:-2px 0 0 #e6e6e6,5px 0 0 #e6e6e6}.flatpickr-calendar .hasWeeks .dayContainer,.flatpickr-calendar .hasTime .dayContainer{border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.flatpickr-calendar .hasWeeks .dayContainer{border-left:0}.flatpickr-calendar.hasTime .flatpickr-time{height:40px;border-top:1px solid #e6e6e6}.flatpickr-calendar.noCalendar.hasTime .flatpickr-time{height:auto}.flatpickr-calendar:before,.flatpickr-calendar:after{position:absolute;display:block;pointer-events:none;border:solid transparent;content:'';height:0;width:0;left:22px}.flatpickr-calendar.rightMost:before,.flatpickr-calendar.arrowRight:before,.flatpickr-calendar.rightMost:after,.flatpickr-calendar.arrowRight:after{left:auto;right:22px}.flatpickr-calendar.arrowCenter:before,.flatpickr-calendar.arrowCenter:after{left:50%;right:50%}.flatpickr-calendar:before{border-width:5px;margin:0 -5px}.flatpickr-calendar:after{border-width:4px;margin:0 -4px}.flatpickr-calendar.arrowTop:before,.flatpickr-calendar.arrowTop:after{bottom:100%}.flatpickr-calendar.arrowTop:before{border-bottom-color:#e6e6e6}.flatpickr-calendar.arrowTop:after{border-bottom-color:#fff}.flatpickr-calendar.arrowBottom:before,.flatpickr-calendar.arrowBottom:after{top:100%}.flatpickr-calendar.arrowBottom:before{border-top-color:#e6e6e6}.flatpickr-calendar.arrowBottom:after{border-top-color:#fff}.flatpickr-calendar:focus{outline:0}.flatpickr-wrapper{position:relative;display:inline-block}.flatpickr-months{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.flatpickr-months .flatpickr-month{background:transparent;color:rgba(0,0,0,0.9);fill:rgba(0,0,0,0.9);height:34px;line-height:1;text-align:center;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:hidden;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}.flatpickr-months .flatpickr-prev-month,.flatpickr-months .flatpickr-next-month{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;text-decoration:none;cursor:pointer;position:absolute;top:0;height:34px;padding:10px;z-index:3;color:rgba(0,0,0,0.9);fill:rgba(0,0,0,0.9)}.flatpickr-months .flatpickr-prev-month.flatpickr-disabled,.flatpickr-months .flatpickr-next-month.flatpickr-disabled{display:none}.flatpickr-months .flatpickr-prev-month i,.flatpickr-months .flatpickr-next-month i{position:relative}.flatpickr-months .flatpickr-prev-month.flatpickr-prev-month,.flatpickr-months .flatpickr-next-month.flatpickr-prev-month{/*\\n /*rtl:begin:ignore*/left:0/*\\n /*rtl:end:ignore*/}/*\\n /*rtl:begin:ignore*/\\n/*\\n /*rtl:end:ignore*/\\n.flatpickr-months .flatpickr-prev-month.flatpickr-next-month,.flatpickr-months .flatpickr-next-month.flatpickr-next-month{/*\\n /*rtl:begin:ignore*/right:0/*\\n /*rtl:end:ignore*/}/*\\n /*rtl:begin:ignore*/\\n/*\\n /*rtl:end:ignore*/\\n.flatpickr-months .flatpickr-prev-month:hover,.flatpickr-months .flatpickr-next-month:hover{color:#959ea9}.flatpickr-months .flatpickr-prev-month:hover svg,.flatpickr-months .flatpickr-next-month:hover svg{fill:#f64747}.flatpickr-months .flatpickr-prev-month svg,.flatpickr-months .flatpickr-next-month svg{width:14px;height:14px}.flatpickr-months .flatpickr-prev-month svg path,.flatpickr-months .flatpickr-next-month svg path{-webkit-transition:fill .1s;transition:fill .1s;fill:inherit}.numInputWrapper{position:relative;height:auto}.numInputWrapper input,.numInputWrapper span{display:inline-block}.numInputWrapper input{width:100%}.numInputWrapper input::-ms-clear{display:none}.numInputWrapper input::-webkit-outer-spin-button,.numInputWrapper input::-webkit-inner-spin-button{margin:0;-webkit-appearance:none}.numInputWrapper span{position:absolute;right:0;width:14px;padding:0 4px 0 2px;height:50%;line-height:50%;opacity:0;cursor:pointer;border:1px solid rgba(57,57,57,0.15);-webkit-box-sizing:border-box;box-sizing:border-box}.numInputWrapper span:hover{background:rgba(0,0,0,0.1)}.numInputWrapper span:active{background:rgba(0,0,0,0.2)}.numInputWrapper span:after{display:block;content:\\\"\\\";position:absolute}.numInputWrapper span.arrowUp{top:0;border-bottom:0}.numInputWrapper span.arrowUp:after{border-left:4px solid transparent;border-right:4px solid transparent;border-bottom:4px solid rgba(57,57,57,0.6);top:26%}.numInputWrapper span.arrowDown{top:50%}.numInputWrapper span.arrowDown:after{border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px solid rgba(57,57,57,0.6);top:40%}.numInputWrapper span svg{width:inherit;height:auto}.numInputWrapper span svg path{fill:rgba(0,0,0,0.5)}.numInputWrapper:hover{background:rgba(0,0,0,0.05)}.numInputWrapper:hover span{opacity:1}.flatpickr-current-month{font-size:135%;line-height:inherit;font-weight:300;color:inherit;position:absolute;width:75%;left:12.5%;padding:7.48px 0 0 0;line-height:1;height:34px;display:inline-block;text-align:center;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.flatpickr-current-month span.cur-month{font-family:inherit;font-weight:700;color:inherit;display:inline-block;margin-left:.5ch;padding:0}.flatpickr-current-month span.cur-month:hover{background:rgba(0,0,0,0.05)}.flatpickr-current-month .numInputWrapper{width:6ch;width:7ch\\\\0;display:inline-block}.flatpickr-current-month .numInputWrapper span.arrowUp:after{border-bottom-color:rgba(0,0,0,0.9)}.flatpickr-current-month .numInputWrapper span.arrowDown:after{border-top-color:rgba(0,0,0,0.9)}.flatpickr-current-month input.cur-year{background:transparent;-webkit-box-sizing:border-box;box-sizing:border-box;color:inherit;cursor:text;padding:0 0 0 .5ch;margin:0;display:inline-block;font-size:inherit;font-family:inherit;font-weight:300;line-height:inherit;height:auto;border:0;border-radius:0;vertical-align:initial;-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.flatpickr-current-month input.cur-year:focus{outline:0}.flatpickr-current-month input.cur-year[disabled],.flatpickr-current-month input.cur-year[disabled]:hover{font-size:100%;color:rgba(0,0,0,0.5);background:transparent;pointer-events:none}.flatpickr-current-month .flatpickr-monthDropdown-months{appearance:menulist;background:transparent;border:none;border-radius:0;box-sizing:border-box;color:inherit;cursor:pointer;font-size:inherit;font-family:inherit;font-weight:300;height:auto;line-height:inherit;margin:-1px 0 0 0;outline:none;padding:0 0 0 .5ch;position:relative;vertical-align:initial;-webkit-box-sizing:border-box;-webkit-appearance:menulist;-moz-appearance:menulist;width:auto}.flatpickr-current-month .flatpickr-monthDropdown-months:focus,.flatpickr-current-month .flatpickr-monthDropdown-months:active{outline:none}.flatpickr-current-month .flatpickr-monthDropdown-months:hover{background:rgba(0,0,0,0.05)}.flatpickr-current-month .flatpickr-monthDropdown-months .flatpickr-monthDropdown-month{background-color:transparent;outline:none;padding:0}.flatpickr-weekdays{background:transparent;text-align:center;overflow:hidden;width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;height:28px}.flatpickr-weekdays .flatpickr-weekdaycontainer{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}span.flatpickr-weekday{cursor:default;font-size:90%;background:transparent;color:rgba(0,0,0,0.54);line-height:1;margin:0;text-align:center;display:block;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;font-weight:bolder}.dayContainer,.flatpickr-weeks{padding:1px 0 0 0}.flatpickr-days{position:relative;overflow:hidden;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:flex-start;width:307.875px}.flatpickr-days:focus{outline:0}.dayContainer{padding:0;outline:0;text-align:left;width:307.875px;min-width:307.875px;max-width:307.875px;-webkit-box-sizing:border-box;box-sizing:border-box;display:inline-block;display:-ms-flexbox;display:-webkit-box;display:-webkit-flex;display:flex;-webkit-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-wrap:wrap;-ms-flex-pack:justify;-webkit-justify-content:space-around;justify-content:space-around;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}.dayContainer + .dayContainer{-webkit-box-shadow:-1px 0 0 #e6e6e6;box-shadow:-1px 0 0 #e6e6e6}.flatpickr-day{background:none;border:1px solid transparent;border-radius:150px;-webkit-box-sizing:border-box;box-sizing:border-box;color:#393939;cursor:pointer;font-weight:400;width:14.2857143%;-webkit-flex-basis:14.2857143%;-ms-flex-preferred-size:14.2857143%;flex-basis:14.2857143%;max-width:39px;height:39px;line-height:39px;margin:0;display:inline-block;position:relative;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;text-align:center}.flatpickr-day.inRange,.flatpickr-day.prevMonthDay.inRange,.flatpickr-day.nextMonthDay.inRange,.flatpickr-day.today.inRange,.flatpickr-day.prevMonthDay.today.inRange,.flatpickr-day.nextMonthDay.today.inRange,.flatpickr-day:hover,.flatpickr-day.prevMonthDay:hover,.flatpickr-day.nextMonthDay:hover,.flatpickr-day:focus,.flatpickr-day.prevMonthDay:focus,.flatpickr-day.nextMonthDay:focus{cursor:pointer;outline:0;background:#e6e6e6;border-color:#e6e6e6}.flatpickr-day.today{border-color:#959ea9}.flatpickr-day.today:hover,.flatpickr-day.today:focus{border-color:#959ea9;background:#959ea9;color:#fff}.flatpickr-day.selected,.flatpickr-day.startRange,.flatpickr-day.endRange,.flatpickr-day.selected.inRange,.flatpickr-day.startRange.inRange,.flatpickr-day.endRange.inRange,.flatpickr-day.selected:focus,.flatpickr-day.startRange:focus,.flatpickr-day.endRange:focus,.flatpickr-day.selected:hover,.flatpickr-day.startRange:hover,.flatpickr-day.endRange:hover,.flatpickr-day.selected.prevMonthDay,.flatpickr-day.startRange.prevMonthDay,.flatpickr-day.endRange.prevMonthDay,.flatpickr-day.selected.nextMonthDay,.flatpickr-day.startRange.nextMonthDay,.flatpickr-day.endRange.nextMonthDay{background:#569ff7;-webkit-box-shadow:none;box-shadow:none;color:#fff;border-color:#569ff7}.flatpickr-day.selected.startRange,.flatpickr-day.startRange.startRange,.flatpickr-day.endRange.startRange{border-radius:50px 0 0 50px}.flatpickr-day.selected.endRange,.flatpickr-day.startRange.endRange,.flatpickr-day.endRange.endRange{border-radius:0 50px 50px 0}.flatpickr-day.selected.startRange + .endRange:not(:nth-child(7n+1)),.flatpickr-day.startRange.startRange + .endRange:not(:nth-child(7n+1)),.flatpickr-day.endRange.startRange + .endRange:not(:nth-child(7n+1)){-webkit-box-shadow:-10px 0 0 #569ff7;box-shadow:-10px 0 0 #569ff7}.flatpickr-day.selected.startRange.endRange,.flatpickr-day.startRange.startRange.endRange,.flatpickr-day.endRange.startRange.endRange{border-radius:50px}.flatpickr-day.inRange{border-radius:0;-webkit-box-shadow:-5px 0 0 #e6e6e6,5px 0 0 #e6e6e6;box-shadow:-5px 0 0 #e6e6e6,5px 0 0 #e6e6e6}.flatpickr-day.flatpickr-disabled,.flatpickr-day.flatpickr-disabled:hover,.flatpickr-day.prevMonthDay,.flatpickr-day.nextMonthDay,.flatpickr-day.notAllowed,.flatpickr-day.notAllowed.prevMonthDay,.flatpickr-day.notAllowed.nextMonthDay{color:rgba(57,57,57,0.3);background:transparent;border-color:transparent;cursor:default}.flatpickr-day.flatpickr-disabled,.flatpickr-day.flatpickr-disabled:hover{cursor:not-allowed;color:rgba(57,57,57,0.1)}.flatpickr-day.week.selected{border-radius:0;-webkit-box-shadow:-5px 0 0 #569ff7,5px 0 0 #569ff7;box-shadow:-5px 0 0 #569ff7,5px 0 0 #569ff7}.flatpickr-day.hidden{visibility:hidden}.rangeMode .flatpickr-day{margin-top:1px}.flatpickr-weekwrapper{float:left}.flatpickr-weekwrapper .flatpickr-weeks{padding:0 12px;-webkit-box-shadow:1px 0 0 #e6e6e6;box-shadow:1px 0 0 #e6e6e6}.flatpickr-weekwrapper .flatpickr-weekday{float:none;width:100%;line-height:28px}.flatpickr-weekwrapper span.flatpickr-day,.flatpickr-weekwrapper span.flatpickr-day:hover{display:block;width:100%;max-width:none;color:rgba(57,57,57,0.3);background:transparent;cursor:default;border:none}.flatpickr-innerContainer{display:block;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden}.flatpickr-rContainer{display:inline-block;padding:0;-webkit-box-sizing:border-box;box-sizing:border-box}.flatpickr-time{text-align:center;outline:0;display:block;height:0;line-height:40px;max-height:40px;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.flatpickr-time:after{content:\\\"\\\";display:table;clear:both}.flatpickr-time .numInputWrapper{-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;width:40%;height:40px;float:left}.flatpickr-time .numInputWrapper span.arrowUp:after{border-bottom-color:#393939}.flatpickr-time .numInputWrapper span.arrowDown:after{border-top-color:#393939}.flatpickr-time.hasSeconds .numInputWrapper{width:26%}.flatpickr-time.time24hr .numInputWrapper{width:49%}.flatpickr-time input{background:transparent;-webkit-box-shadow:none;box-shadow:none;border:0;border-radius:0;text-align:center;margin:0;padding:0;height:inherit;line-height:inherit;color:#393939;font-size:14px;position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.flatpickr-time input.flatpickr-hour{font-weight:bold}.flatpickr-time input.flatpickr-minute,.flatpickr-time input.flatpickr-second{font-weight:400}.flatpickr-time input:focus{outline:0;border:0}.flatpickr-time .flatpickr-time-separator,.flatpickr-time .flatpickr-am-pm{height:inherit;float:left;line-height:inherit;color:#393939;font-weight:bold;width:2%;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-align-self:center;-ms-flex-item-align:center;align-self:center}.flatpickr-time .flatpickr-am-pm{outline:0;width:18%;cursor:pointer;text-align:center;font-weight:400}.flatpickr-time input:hover,.flatpickr-time .flatpickr-am-pm:hover,.flatpickr-time input:focus,.flatpickr-time .flatpickr-am-pm:focus{background:#eee}.flatpickr-input[readonly]{cursor:pointer}@-webkit-keyframes fpFadeInDown{from{opacity:0;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@keyframes fpFadeInDown{from{opacity:0;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","\"use strict\";\n\n/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n*/\nmodule.exports = function (cssWithMappingToString) {\n var list = [];\n\n // return the list of modules as css string\n list.toString = function toString() {\n return this.map(function (item) {\n var content = \"\";\n var needLayer = typeof item[5] !== \"undefined\";\n if (item[4]) {\n content += \"@supports (\".concat(item[4], \") {\");\n }\n if (item[2]) {\n content += \"@media \".concat(item[2], \" {\");\n }\n if (needLayer) {\n content += \"@layer\".concat(item[5].length > 0 ? \" \".concat(item[5]) : \"\", \" {\");\n }\n content += cssWithMappingToString(item);\n if (needLayer) {\n content += \"}\";\n }\n if (item[2]) {\n content += \"}\";\n }\n if (item[4]) {\n content += \"}\";\n }\n return content;\n }).join(\"\");\n };\n\n // import a list of modules into the list\n list.i = function i(modules, media, dedupe, supports, layer) {\n if (typeof modules === \"string\") {\n modules = [[null, modules, undefined]];\n }\n var alreadyImportedModules = {};\n if (dedupe) {\n for (var k = 0; k < this.length; k++) {\n var id = this[k][0];\n if (id != null) {\n alreadyImportedModules[id] = true;\n }\n }\n }\n for (var _k = 0; _k < modules.length; _k++) {\n var item = [].concat(modules[_k]);\n if (dedupe && alreadyImportedModules[item[0]]) {\n continue;\n }\n if (typeof layer !== \"undefined\") {\n if (typeof item[5] === \"undefined\") {\n item[5] = layer;\n } else {\n item[1] = \"@layer\".concat(item[5].length > 0 ? \" \".concat(item[5]) : \"\", \" {\").concat(item[1], \"}\");\n item[5] = layer;\n }\n }\n if (media) {\n if (!item[2]) {\n item[2] = media;\n } else {\n item[1] = \"@media \".concat(item[2], \" {\").concat(item[1], \"}\");\n item[2] = media;\n }\n }\n if (supports) {\n if (!item[4]) {\n item[4] = \"\".concat(supports);\n } else {\n item[1] = \"@supports (\".concat(item[4], \") {\").concat(item[1], \"}\");\n item[4] = supports;\n }\n }\n list.push(item);\n }\n };\n return list;\n};","\"use strict\";\n\nmodule.exports = function (item) {\n var content = item[1];\n var cssMapping = item[3];\n if (!cssMapping) {\n return content;\n }\n if (typeof btoa === \"function\") {\n var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(cssMapping))));\n var data = \"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(base64);\n var sourceMapping = \"/*# \".concat(data, \" */\");\n return [content].concat([sourceMapping]).join(\"\\n\");\n }\n return [content].join(\"\\n\");\n};","'use strict';\n\nvar m = require('react-dom');\nif (process.env.NODE_ENV === 'production') {\n exports.createRoot = m.createRoot;\n exports.hydrateRoot = m.hydrateRoot;\n} else {\n var i = m.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\n exports.createRoot = function(c, o) {\n i.usingClientEntryPoint = true;\n try {\n return m.createRoot(c, o);\n } finally {\n i.usingClientEntryPoint = false;\n }\n };\n exports.hydrateRoot = function(c, h, o) {\n i.usingClientEntryPoint = true;\n try {\n return m.hydrateRoot(c, h, o);\n } finally {\n i.usingClientEntryPoint = false;\n }\n };\n}\n","/* global Map:readonly, Set:readonly, ArrayBuffer:readonly */\n\nvar hasElementType = typeof Element !== 'undefined';\nvar hasMap = typeof Map === 'function';\nvar hasSet = typeof Set === 'function';\nvar hasArrayBuffer = typeof ArrayBuffer === 'function' && !!ArrayBuffer.isView;\n\n// Note: We **don't** need `envHasBigInt64Array` in fde es6/index.js\n\nfunction equal(a, b) {\n // START: fast-deep-equal es6/index.js 3.1.3\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n // START: Modifications:\n // 1. Extra `has &&` helpers in initial condition allow es6 code\n // to co-exist with es5.\n // 2. Replace `for of` with es5 compliant iteration using `for`.\n // Basically, take:\n //\n // ```js\n // for (i of a.entries())\n // if (!b.has(i[0])) return false;\n // ```\n //\n // ... and convert to:\n //\n // ```js\n // it = a.entries();\n // while (!(i = it.next()).done)\n // if (!b.has(i.value[0])) return false;\n // ```\n //\n // **Note**: `i` access switches to `i.value`.\n var it;\n if (hasMap && (a instanceof Map) && (b instanceof Map)) {\n if (a.size !== b.size) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!b.has(i.value[0])) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!equal(i.value[1], b.get(i.value[0]))) return false;\n return true;\n }\n\n if (hasSet && (a instanceof Set) && (b instanceof Set)) {\n if (a.size !== b.size) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!b.has(i.value[0])) return false;\n return true;\n }\n // END: Modifications\n\n if (hasArrayBuffer && ArrayBuffer.isView(a) && ArrayBuffer.isView(b)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (a[i] !== b[i]) return false;\n return true;\n }\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n // START: Modifications:\n // Apply guards for `Object.create(null)` handling. See:\n // - https://github.com/FormidableLabs/react-fast-compare/issues/64\n // - https://github.com/epoberezkin/fast-deep-equal/issues/49\n if (a.valueOf !== Object.prototype.valueOf && typeof a.valueOf === 'function' && typeof b.valueOf === 'function') return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString && typeof a.toString === 'function' && typeof b.toString === 'function') return a.toString() === b.toString();\n // END: Modifications\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n // END: fast-deep-equal\n\n // START: react-fast-compare\n // custom handling for DOM elements\n if (hasElementType && a instanceof Element) return false;\n\n // custom handling for React/Preact\n for (i = length; i-- !== 0;) {\n if ((keys[i] === '_owner' || keys[i] === '__v' || keys[i] === '__o') && a.$$typeof) {\n // React-specific: avoid traversing React elements' _owner\n // Preact-specific: avoid traversing Preact elements' __v and __o\n // __v = $_original / $_vnode\n // __o = $_owner\n // These properties contain circular references and are not needed when\n // comparing the actual elements (and not their owners)\n // .$$typeof and ._store on just reasonable markers of elements\n\n continue;\n }\n\n // all other properties should be traversed as usual\n if (!equal(a[keys[i]], b[keys[i]])) return false;\n }\n // END: react-fast-compare\n\n // START: fast-deep-equal\n return true;\n }\n\n return a !== a && b !== b;\n}\n// end fast-deep-equal\n\nmodule.exports = function isEqual(a, b) {\n try {\n return equal(a, b);\n } catch (error) {\n if (((error.message || '').match(/stack|recursion/i))) {\n // warn on circular references, don't crash\n // browsers give this different errors name and messages:\n // chrome/safari: \"RangeError\", \"Maximum call stack size exceeded\"\n // firefox: \"InternalError\", too much recursion\"\n // edge: \"Error\", \"Out of stack space\"\n console.warn('react-fast-compare cannot handle circular refs');\n return false;\n }\n // some other error. we should definitely know about these\n throw error;\n }\n};\n","\"use strict\";\n\nvar stylesInDOM = [];\nfunction getIndexByIdentifier(identifier) {\n var result = -1;\n for (var i = 0; i < stylesInDOM.length; i++) {\n if (stylesInDOM[i].identifier === identifier) {\n result = i;\n break;\n }\n }\n return result;\n}\nfunction modulesToDom(list, options) {\n var idCountMap = {};\n var identifiers = [];\n for (var i = 0; i < list.length; i++) {\n var item = list[i];\n var id = options.base ? item[0] + options.base : item[0];\n var count = idCountMap[id] || 0;\n var identifier = \"\".concat(id, \" \").concat(count);\n idCountMap[id] = count + 1;\n var indexByIdentifier = getIndexByIdentifier(identifier);\n var obj = {\n css: item[1],\n media: item[2],\n sourceMap: item[3],\n supports: item[4],\n layer: item[5]\n };\n if (indexByIdentifier !== -1) {\n stylesInDOM[indexByIdentifier].references++;\n stylesInDOM[indexByIdentifier].updater(obj);\n } else {\n var updater = addElementStyle(obj, options);\n options.byIndex = i;\n stylesInDOM.splice(i, 0, {\n identifier: identifier,\n updater: updater,\n references: 1\n });\n }\n identifiers.push(identifier);\n }\n return identifiers;\n}\nfunction addElementStyle(obj, options) {\n var api = options.domAPI(options);\n api.update(obj);\n var updater = function updater(newObj) {\n if (newObj) {\n if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap && newObj.supports === obj.supports && newObj.layer === obj.layer) {\n return;\n }\n api.update(obj = newObj);\n } else {\n api.remove();\n }\n };\n return updater;\n}\nmodule.exports = function (list, options) {\n options = options || {};\n list = list || [];\n var lastIdentifiers = modulesToDom(list, options);\n return function update(newList) {\n newList = newList || [];\n for (var i = 0; i < lastIdentifiers.length; i++) {\n var identifier = lastIdentifiers[i];\n var index = getIndexByIdentifier(identifier);\n stylesInDOM[index].references--;\n }\n var newLastIdentifiers = modulesToDom(newList, options);\n for (var _i = 0; _i < lastIdentifiers.length; _i++) {\n var _identifier = lastIdentifiers[_i];\n var _index = getIndexByIdentifier(_identifier);\n if (stylesInDOM[_index].references === 0) {\n stylesInDOM[_index].updater();\n stylesInDOM.splice(_index, 1);\n }\n }\n lastIdentifiers = newLastIdentifiers;\n };\n};","\"use strict\";\n\nvar memo = {};\n\n/* istanbul ignore next */\nfunction getTarget(target) {\n if (typeof memo[target] === \"undefined\") {\n var styleTarget = document.querySelector(target);\n\n // Special case to return head of iframe instead of iframe itself\n if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {\n try {\n // This will throw an exception if access to iframe is blocked\n // due to cross-origin restrictions\n styleTarget = styleTarget.contentDocument.head;\n } catch (e) {\n // istanbul ignore next\n styleTarget = null;\n }\n }\n memo[target] = styleTarget;\n }\n return memo[target];\n}\n\n/* istanbul ignore next */\nfunction insertBySelector(insert, style) {\n var target = getTarget(insert);\n if (!target) {\n throw new Error(\"Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.\");\n }\n target.appendChild(style);\n}\nmodule.exports = insertBySelector;","\"use strict\";\n\n/* istanbul ignore next */\nfunction insertStyleElement(options) {\n var element = document.createElement(\"style\");\n options.setAttributes(element, options.attributes);\n options.insert(element, options.options);\n return element;\n}\nmodule.exports = insertStyleElement;","\"use strict\";\n\n/* istanbul ignore next */\nfunction setAttributesWithoutAttributes(styleElement) {\n var nonce = typeof __webpack_nonce__ !== \"undefined\" ? __webpack_nonce__ : null;\n if (nonce) {\n styleElement.setAttribute(\"nonce\", nonce);\n }\n}\nmodule.exports = setAttributesWithoutAttributes;","\"use strict\";\n\n/* istanbul ignore next */\nfunction apply(styleElement, options, obj) {\n var css = \"\";\n if (obj.supports) {\n css += \"@supports (\".concat(obj.supports, \") {\");\n }\n if (obj.media) {\n css += \"@media \".concat(obj.media, \" {\");\n }\n var needLayer = typeof obj.layer !== \"undefined\";\n if (needLayer) {\n css += \"@layer\".concat(obj.layer.length > 0 ? \" \".concat(obj.layer) : \"\", \" {\");\n }\n css += obj.css;\n if (needLayer) {\n css += \"}\";\n }\n if (obj.media) {\n css += \"}\";\n }\n if (obj.supports) {\n css += \"}\";\n }\n var sourceMap = obj.sourceMap;\n if (sourceMap && typeof btoa !== \"undefined\") {\n css += \"\\n/*# sourceMappingURL=data:application/json;base64,\".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), \" */\");\n }\n\n // For old IE\n /* istanbul ignore if */\n options.styleTagTransform(css, styleElement, options.options);\n}\nfunction removeStyleElement(styleElement) {\n // istanbul ignore if\n if (styleElement.parentNode === null) {\n return false;\n }\n styleElement.parentNode.removeChild(styleElement);\n}\n\n/* istanbul ignore next */\nfunction domAPI(options) {\n if (typeof document === \"undefined\") {\n return {\n update: function update() {},\n remove: function remove() {}\n };\n }\n var styleElement = options.insertStyleElement(options);\n return {\n update: function update(obj) {\n apply(styleElement, options, obj);\n },\n remove: function remove() {\n removeStyleElement(styleElement);\n }\n };\n}\nmodule.exports = domAPI;","\"use strict\";\n\n/* istanbul ignore next */\nfunction styleTagTransform(css, styleElement) {\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}\nmodule.exports = styleTagTransform;","module.exports = require(\"react-dom\");","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","__webpack_require__.amdD = function () {\n\tthrow new Error('define cannot be used indirect');\n};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.p = \"\";","__webpack_require__.nc = undefined;","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"react\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"prop-types\");","import { createContext } from 'react';\n\nconst AccordionContext = createContext();\n\nexport default AccordionContext;\n","import { createContext } from 'react';\n\nconst AccordionItemContext = createContext();\n\nexport default AccordionItemContext;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nfunction Icon({\n className,\n family,\n type,\n ...rest\n}) {\n function getCSSClasses() {\n const fontFamily = family || 'fa';\n\n return [\n 'tyk-icon',\n fontFamily,\n `${fontFamily}-${type}`,\n className,\n ].filter(Boolean).join(' ');\n }\n\n return ;\n}\n\nIcon.propTypes = {\n className: PropTypes.string,\n family: PropTypes.string,\n type: PropTypes.string.isRequired,\n};\n\nexport default Icon;\n","import React, { useContext } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Icon from '../../Icon';\nimport AccordionItemContext from './AccordionItemContext';\n\nfunction ItemTrigger({ wrap }) {\n const { collapsed, disabled, toggleChange } = useContext(AccordionItemContext);\n\n const iconType = collapsed ? 'chevron-down' : 'chevron-up';\n const classes = [\n 'tyk-accordion__trigger',\n disabled && 'tyk-accordion__trigger--disabled',\n ].filter(Boolean).join(' ');\n const trigger = (\n \n \n \n );\n\n return wrap\n ?
    {trigger}
    \n : trigger;\n}\n\nItemTrigger.propTypes = {\n wrap: PropTypes.bool,\n};\n\nexport default ItemTrigger;\n","import React, {\n useMemo, useState, useContext, forwardRef,\n} from 'react';\nimport PropTypes from 'prop-types';\n\nimport AccordionContext from './AccordionContext';\nimport AccordionItemContext from './AccordionItemContext';\nimport ItemTrigger from './AccordionItemTrigger';\n\nfunction AccordionItem({\n collapsed: collapsedProp,\n children,\n className,\n disabled,\n}, ref) {\n const { arrow } = useContext(AccordionContext);\n const [collapsed, setCollapsed] = useState(collapsedProp);\n\n const toggleChange = () => {\n if (disabled) {\n return;\n }\n\n setCollapsed(!collapsed);\n };\n\n const classes = useMemo(() => [\n 'tyk-accordion__item',\n arrow.expandToContent\n ? `tyk-accordion__item--trigger-position-${arrow.position}`\n : 'tyk-accordion__item--trigger-in-header',\n className,\n collapsed === false && 'tyk-accordion__item--active',\n ].filter(Boolean).join(' '), [arrow, className, collapsed]);\n\n const contextValue = useMemo(() => ({\n collapsed,\n disabled,\n toggleChange,\n }), [collapsed, disabled, toggleChange]);\n\n return (\n
    \n \n {arrow.expandToContent && (\n \n )}\n {children}\n \n
    \n );\n}\n\nAccordionItem.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n collapsed: PropTypes.bool,\n className: PropTypes.string,\n disabled: PropTypes.bool,\n};\n\nAccordionItem.defaultProps = {\n collapsed: false,\n};\n\nexport default forwardRef(AccordionItem);\n","import React, { useContext } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Icon from '../../Icon';\nimport AccordionContext from './AccordionContext';\nimport AccordionItemContext from './AccordionItemContext';\nimport ItemTrigger from './AccordionItemTrigger';\n\nfunction AccordionItemHeader({ className, children }) {\n const { collapsed, disabled, toggleChange } = useContext(AccordionItemContext);\n const { usearrowastrigger, arrow } = useContext(AccordionContext);\n const iconType = collapsed ? 'chevron-down' : 'chevron-up';\n const classes = [\n 'tyk-accordion__item-header',\n usearrowastrigger && 'tyk-accordion__arrow-trigger',\n className,\n ].filter(Boolean).join(' ');\n\n return (\n
    \n {\n !usearrowastrigger\n ? (\n \n {children}\n \n \n )\n : (\n <>\n {!arrow.expandToContent && arrow.position === 'left' && (\n \n )}\n
    {children}
    \n {!arrow.expandToContent && arrow.position === 'right' && (\n \n )}\n \n )\n }\n
    \n );\n}\n\nAccordionItemHeader.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n className: PropTypes.string,\n};\n\nexport default AccordionItemHeader;\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"react-transition-group\");","import { useEffect, useRef } from 'react';\n\nconst usePrevious = (value) => {\n const ref = useRef();\n useEffect(() => {\n ref.current = value;\n }, [value]);\n return ref.current;\n};\n\n/** @component */\nexport default usePrevious;\n","import { useEffect, useRef } from 'react';\n\nconst useTimeout = (callback, delay) => {\n const savedCallback = useRef();\n\n useEffect(() => {\n savedCallback.current = callback;\n },\n [callback]);\n\n useEffect(() => {\n function tick() {\n savedCallback.current();\n }\n if (delay !== null) {\n const id = setTimeout(tick, delay);\n return () => clearTimeout(id);\n }\n\n return () => {};\n },\n [delay]);\n};\n\n/** @component */\nexport default useTimeout;\n","import { useEffect, useRef } from 'react';\n\n/** @component */\nexport default function useInterval(callback, delay, ...args) {\n const savedCallback = useRef();\n\n useEffect(() => {\n savedCallback.current = callback;\n }, [callback]);\n\n /* eslint-disable consistent-return */\n useEffect(() => {\n function tick() {\n savedCallback.current(...args);\n }\n if (delay !== null && delay !== undefined) {\n const id = setInterval(tick, delay);\n return () => clearInterval(id);\n }\n }, [delay]);\n /* eslint-disable consistent-return */\n}\n","import { useEffect, useRef } from 'react';\n\nconst useEventListener = (eventName, handler, element) => {\n const savedHandler = useRef();\n useEffect(() => {\n savedHandler.current = handler;\n }, [handler]);\n\n useEffect(() => {\n const isSupported = element?.addEventListener;\n if (!isSupported) {\n // eslint-disable-next-line consistent-return\n return;\n }\n\n const eventListener = (event) => savedHandler.current(event);\n element.addEventListener(eventName, eventListener);\n\n // eslint-disable-next-line consistent-return\n return () => {\n element.removeEventListener(eventName, eventListener);\n };\n }, [eventName, element]);\n};\n\n/** @component */\nexport default useEventListener;\n","import { useCallback, useState, useLayoutEffect } from 'react';\n\nconst getSize = (el) => {\n if (!el) {\n return {\n width: 0,\n height: 0,\n };\n }\n\n return {\n width: el.offsetWidth,\n height: el.offsetHeight,\n };\n};\n\nconst useComponentSize = (ref) => {\n const [ComponentSize, setComponentSize] = useState(getSize(ref ? ref.current : {}));\n const handleResize = useCallback(() => {\n if (ref.current) {\n setComponentSize(getSize(ref.current));\n }\n }, [ref]);\n\n useLayoutEffect(() => {\n handleResize();\n\n let resizeObserver = new ResizeObserver(() => {\n handleResize();\n });\n resizeObserver.observe(ref.current);\n\n return () => {\n resizeObserver.disconnect(ref.current);\n resizeObserver = null;\n };\n }, [ref.current]);\n\n return ComponentSize;\n};\n\n/** @component */\nexport default useComponentSize;\n","import React, {\n useRef, useState, useCallback, useEffect,\n} from 'react';\nimport PropTypes from 'prop-types';\nimport { CSSTransition } from 'react-transition-group';\nimport { useEventListener, useComponentSize } from '../../hooks';\n\n/**\n * Collapsible is a component that helps you to collapse/expand any type of content\n */\nfunction Collapsible({\n className,\n collapsed,\n children,\n ...rest\n}) {\n const contentContainer = useRef(null);\n const collapseWrapper = useRef(null);\n const refContainerSize = useComponentSize(contentContainer);\n const [contentContainerStyle, setContentContainerStyle] = useState({\n // eslint-disable-next-line\n height: (collapsed) ? 0 : 'auto',\n });\n\n const setHeight = (height) => {\n setContentContainerStyle({\n height: `${height}px`,\n });\n };\n\n const getHeight = () => (contentContainer.current ? contentContainer.current.clientHeight : 0);\n\n const onEnter = () => {\n setHeight(getHeight());\n };\n\n const onExit = () => {\n setHeight(0);\n };\n\n useEffect(() => {\n if (!collapsed\n && refContainerSize?.height\n && contentContainerStyle.height !== refContainerSize?.height\n ) {\n setHeight(refContainerSize.height);\n }\n }, [refContainerSize.height]);\n\n const onWindowResize = useCallback(() => {\n if (!collapsed && contentContainer.current) {\n setHeight(getHeight());\n collapseWrapper.current.style.height = `${getHeight()}px`;\n }\n }, [collapsed, contentContainer.current]);\n\n useEventListener('resize', onWindowResize, window);\n\n return (\n \n \n \n { children }\n \n \n \n );\n}\n\nCollapsible.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]),\n /** Describes if the content of Collapsible should be hidden or not */\n collapsed: PropTypes.bool,\n /** CSS classes that can be passed to the Collapsible element */\n className: PropTypes.string,\n};\n\nexport default Collapsible;\n","import React, { useContext } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Collapsible from '../../Collapsible';\nimport AccordionItemContext from './AccordionItemContext';\n\nfunction AccordionItemContent({ children, className }) {\n const { collapsed } = useContext(AccordionItemContext);\n\n const classes = [\n 'tyk-accordion__item-content',\n className,\n ].filter(Boolean).join(' ');\n\n return (\n
    \n \n { children }\n \n
    \n );\n}\n\nAccordionItemContent.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n className: PropTypes.string,\n};\n\nexport default AccordionItemContent;\n","import React, { useMemo } from 'react';\nimport PropTypes from 'prop-types';\nimport AccordionItem from './js/AccordionItem';\nimport AccordionItemHeader from './js/AccordionItemHeader';\nimport AccordionItemContent from './js/AccordionItemContent';\nimport AccordionContext from './js/AccordionContext';\n\nfunction Accordion({\n className,\n children,\n usearrowastrigger,\n arrow = { position: 'right', expandToContent: false },\n}) {\n const classes = [\n 'tyk-accordion',\n className,\n ].filter(Boolean).join(' ');\n\n const contextValue = useMemo(() => ({\n usearrowastrigger,\n arrow,\n }), [usearrowastrigger, arrow]);\n\n return (\n
    \n \n {children}\n \n
    \n );\n}\n\nAccordion.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n className: PropTypes.string,\n usearrowastrigger: PropTypes.bool,\n arrow: PropTypes.shape({\n position: PropTypes.oneOf(['left', 'right']),\n expandToContent: PropTypes.bool,\n }),\n};\n\nAccordion.defaultProps = {\n usearrowastrigger: false,\n};\n\n// For Readme.md : Start\nAccordion.Item = AccordionItem;\nAccordion.Item.Header = AccordionItemHeader;\nAccordion.Item.Content = AccordionItemContent;\n// For Readme.md : End\n\nexport default Accordion;\n","import React, { Fragment, cloneElement } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Icon from '../Icon';\n\n/**\n * Button component.\n */\nconst Button = React.forwardRef((props, ref) => {\n const {\n customButton,\n children,\n iconType,\n iconFamily,\n iconPosition,\n iconOnly,\n id,\n className,\n disabled,\n display,\n href,\n onClick,\n noStyle,\n size,\n theme,\n type,\n ...rest\n } = props;\n\n const getCssClasses = () => {\n const cssClasses = ['tyk-button'].concat(className ? className.split(' ') : []);\n const sizeClass = (size) ? `tyk-button--${size}` : 'tyk-button--md';\n const disabledClass = (disabled) ? 'disabled' : '';\n const displayClass = display || '';\n const themeClass = theme ? `tyk-button--${theme}` : '';\n const iconOnlyClass = iconOnly ? 'tyk-button--icon-only' : '';\n const noStyleClass = noStyle ? 'tyk-button--no-style' : '';\n\n cssClasses.push(iconOnlyClass);\n cssClasses.push(themeClass);\n cssClasses.push(sizeClass);\n cssClasses.push(disabledClass);\n cssClasses.push(displayClass);\n cssClasses.push(noStyleClass);\n\n if (iconType) {\n cssClasses.push(`icon-${iconPosition || 'left'}`);\n }\n\n return cssClasses.join(' ');\n };\n\n const getButtonIcon = (position) => {\n const iPos = iconPosition || 'left';\n\n return (\n (iconType && iPos === position)\n ? \n : null\n );\n };\n\n const getButtonType = () => {\n let buttonType;\n\n if (customButton) {\n return (\n \n { cloneElement(customButton, {\n className: getCssClasses(),\n disabled,\n })\n }\n \n );\n }\n\n if (href) {\n buttonType = (\n \n { getButtonIcon('left') }\n { children }\n { getButtonIcon('right') }\n \n );\n } else {\n buttonType = (\n // eslint-disable-next-line react/button-has-type\n \n { getButtonIcon('left') }\n { children && {children} }\n { getButtonIcon('right') }\n \n );\n }\n\n return buttonType;\n };\n\n\n return (\n getButtonType()\n );\n});\n\nButton.propTypes = {\n /**\n * Content of a button. Can be a DOM element or a React component\n */\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n customButton: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n ]),\n className: PropTypes.string,\n /**\n * Display type: inline/block. Default is inline\n */\n display: PropTypes.string,\n /**\n * Sets the button disabled state\n */\n disabled: PropTypes.bool,\n /**\n * Having this property set the button will become a link\n */\n id: PropTypes.string,\n href: PropTypes.string,\n iconPosition: PropTypes.string, // left or right\n iconFamily: PropTypes.string,\n iconOnly: PropTypes.bool,\n iconType: PropTypes.string,\n noStyle: PropTypes.bool,\n /**\n * Callback function, called when the button si clicked\n */\n onClick: PropTypes.func,\n /**\n * Describes the appearence of the button (ex: primary, danger, primary-outline etc.)\n */\n theme: PropTypes.string,\n /**\n * Type of the button (ex: button, submit etc.)\n */\n type: PropTypes.string,\n /**\n * Describes the size of the button (sm, md, lg). Default one is md\n */\n size: PropTypes.string,\n};\n\nButton.defaultProps = {\n theme: '',\n type: 'button',\n};\n\nexport default Button;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\n/**\n * Tyk button component.\n */\nfunction ButtonGroup({\n className,\n children,\n label,\n}) {\n return (\n
    \n {Boolean(label) && (\n \n )}\n
    \n {children}\n
    \n
    \n );\n}\n\nButtonGroup.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n className: PropTypes.string,\n /**\n * Label that will sit above the button group\n */\n label: PropTypes.string,\n};\n\nexport default ButtonGroup;\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"echarts\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"immutable\");","export default (func, wait, immediate) => {\n let timeout;\n return function debouncer(...args) {\n const context = this;\n const later = () => {\n timeout = null;\n if (!immediate) {\n func.apply(context, args);\n }\n };\n const callNow = immediate && !timeout;\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n if (callNow) {\n func.apply(context, args);\n }\n };\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nfunction Loader({ className, position = 'relative', withbackground = false }) {\n const classes = [\n 'loading',\n position,\n className,\n ].filter(Boolean).join(' ');\n\n const loader = (\n
    \n
    \n
    \n
    \n
    \n
    \n );\n\n return withbackground\n ?
    {loader}
    \n : loader;\n}\n\nLoader.propTypes = {\n /** add a class to loader */\n className: PropTypes.string,\n /** position of loader (absolute / relative) */\n position: PropTypes.string,\n /** defines weather loader should be renders with or without background */\n withbackground: PropTypes.bool,\n};\n\nexport default Loader;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport Icon from '../Icon';\n\n/**\n * The Message component is used to highlight important content to the users.\n *\n * If the content you are displaying needs immediate attention or is a feedback,\n * consider using `toast` instead\n */\nfunction Message({\n children, theme, onClose, noMargin, className,\n}) {\n function getCssClasses() {\n return [\n 'tyk-message',\n `tyk-message--${theme || 'info'}`,\n noMargin && 'no-margin',\n className,\n ].filter(Boolean).join(' ');\n }\n\n const iconType = theme === 'success' ? 'check' : 'warning';\n\n return (\n
    \n \n
    \n { children }\n
    \n {onClose && (\n \n )}\n
    \n );\n}\n\nMessage.propTypes = {\n /** Set theme for message (eg. default, success, danger, etc) */\n theme: PropTypes.string,\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]),\n /** add a class to loader */\n className: PropTypes.string,\n /** Removes margins by adding `no-margin` class */\n noMargin: PropTypes.bool,\n /** Callback for clicking on the \"x\" */\n onClose: PropTypes.func,\n};\n\nexport default Message;\n","import React, {\n useState, useEffect, useRef, memo,\n} from 'react';\nimport PropTypes from 'prop-types';\nimport * as echarts from 'echarts';\nimport { fromJS } from 'immutable';\n\nimport debounce from '../../utils/debounce';\nimport { usePrevious } from '../../hooks';\nimport Loader from '../Loader';\nimport Message from '../Message';\nimport worldMap from './maps/world.json';\n\necharts.registerMap('world', worldMap);\n\nconst Chart = (props) => {\n const {\n areaStyleColors,\n dataLoaded,\n hasData,\n highlight,\n type,\n option,\n series,\n onChange,\n zoomStart,\n zoomEnd,\n title,\n seriesConfig = [],\n noDataComponent = null,\n zoomColors,\n } = props;\n const [tykChartInstance, setTykChartInstance] = useState(null);\n const chartWrapperRef = useRef(null);\n const onResize = () => {\n if (tykChartInstance) {\n tykChartInstance.resize();\n }\n };\n\n const lineBarChart = {\n defaultOpts: fromJS({\n title: {\n show: true,\n text: title,\n left: 0,\n },\n color: [],\n toolbox: {\n right: '0',\n orient: 'horizontal',\n itemSize: 15,\n showTitle: true,\n feature: null,\n },\n dataZoom: [{\n show: true,\n start: 0,\n end: 100,\n orient: 'horizontal',\n dataBackground: {\n lineStyle: {\n color: zoomColors?.lineStyle || '#368493',\n },\n areaStyle: {\n color: zoomColors?.areaStyle || '#368493',\n },\n },\n handleStyle: {\n color: zoomColors?.handleStyle || '#368493',\n },\n textStyle: {\n color: zoomColors?.textStyle || '#368493',\n },\n borderColor: 'transparent',\n fillerColor: zoomColors?.fillerColor || 'rgba(54, 132, 147, 0.1)',\n }],\n legend: {\n show: false,\n // data: [],\n // right: '1%',\n },\n tooltip: {\n trigger: 'axis',\n axisPointer: {\n type: 'cross',\n },\n },\n grid: {\n left: '1%',\n right: '1%',\n bottom: '50px',\n top: '40px',\n containLabel: true,\n },\n xAxis: {\n boundaryGap: false,\n type: 'category',\n splitLine: {\n show: true,\n lineStyle: {\n type: 'dotted',\n color: '#F0F0F0',\n },\n },\n axisLine: {\n show: false,\n },\n axisTick: {\n show: false,\n },\n data: [],\n },\n yAxis: {\n min: 'dataMin',\n boundaryGap: true,\n axisPointer: {\n show: true,\n },\n splitLine: {\n lineStyle: {\n type: 'dotted',\n color: '#F0F0F0',\n },\n show: true,\n },\n axisLabel: {\n show: true,\n },\n axisLine: {\n show: true,\n },\n axisTick: {\n show: false,\n },\n type: 'value',\n },\n textStyle: {\n color: '#5a5a68',\n },\n series: [],\n animationEasing: 'elasticOut',\n }),\n seriesDefault: fromJS({\n data: [],\n type: 'line',\n areaStyle: {\n opacity: 1,\n color: areaStyleColors ? new echarts.graphic.LinearGradient(0, 0, 1, 1,\n areaStyleColors.map((color, index) => ({\n offset: index,\n color,\n }))) : [],\n },\n smooth: false,\n symbolSize: 7,\n name: '',\n }),\n };\n\n const pieChart = {\n defaultOpts: fromJS({\n tooltip: {\n trigger: 'axis',\n formatter: '{b}: {c} ({d}%)',\n },\n legend: {\n orient: 'horizontal',\n x: 'left',\n y: 'top',\n data: [],\n },\n color: [],\n series: [],\n }),\n seriesDefault: fromJS({\n type: 'pie',\n center: [\n '50%',\n '55%',\n ],\n radius: [\n '50%',\n '75%',\n ],\n avoidLabelOverlap: false,\n animationType: 'scale',\n animationEasing: 'elasticOut',\n labelLine: {\n normal: {\n show: true,\n smooth: 0.2,\n length: 6,\n length2: 6,\n },\n },\n data: [],\n }),\n };\n\n const geoChart = {\n defaultOpts: fromJS({\n series: [],\n }),\n seriesDefault: fromJS({\n type: 'map',\n data: [],\n }),\n };\n\n const buildChartOptions = (selectedType, selectedOptions, selectedSeries) => {\n let finalOpts = {};\n switch (selectedType) {\n case 'pie': {\n finalOpts = pieChart.defaultOpts.mergeDeep(fromJS(selectedOptions)).toJS();\n\n selectedSeries.forEach((entry) => {\n finalOpts.series.push(pieChart.seriesDefault.mergeDeep(fromJS(entry)).toJS());\n });\n\n break;\n }\n\n case 'geo': {\n finalOpts = geoChart.defaultOpts.mergeDeep(fromJS(selectedOptions)).toJS();\n\n selectedSeries.forEach((entry) => {\n finalOpts.series.push(geoChart.seriesDefault.mergeDeep(fromJS(entry)).toJS());\n });\n\n break;\n }\n\n default: {\n finalOpts = lineBarChart.defaultOpts.mergeDeep(fromJS(selectedOptions)).toJS();\n if (Array.isArray(selectedOptions.yAxis)) {\n finalOpts.yAxis = selectedOptions.yAxis;\n }\n\n selectedSeries.forEach((entry, index) => {\n const seriesData = Object.assign(\n {},\n lineBarChart.seriesDefault.toJS(),\n seriesConfig[index], entry,\n );\n finalOpts.series.push(seriesData);\n });\n break;\n }\n }\n return finalOpts;\n };\n\n useEffect(() => {\n window.addEventListener('resize', onResize);\n\n return () => {\n window.removeEventListener('resize', onResize);\n };\n }, [tykChartInstance]);\n\n useEffect(() => {\n\n if (!chartWrapperRef?.current) {\n return;\n }\n\n setTykChartInstance(echarts.init(chartWrapperRef.current));\n return () => {\n if (tykChartInstance) {\n tykChartInstance.dispose();\n }\n };\n }, [chartWrapperRef.current]);\n\n const eventCallBack = (e) => {\n if (onChange) {\n onChange(e);\n }\n };\n\n useEffect(() => {\n let debouncedMethod;\n if (tykChartInstance) {\n debouncedMethod = debounce(eventCallBack, 500);\n tykChartInstance.on('dataZoom', debouncedMethod);\n tykChartInstance.on('restore', debouncedMethod);\n tykChartInstance.on('click', debouncedMethod);\n\n tykChartInstance.on('mousemove', (params) => {\n if (params.data) {\n tykChartInstance.getZr().setCursorStyle('pointer');\n }\n });\n }\n\n return () => {\n if (tykChartInstance) {\n tykChartInstance.off('dataZoom', debouncedMethod);\n tykChartInstance.off('restore', debouncedMethod);\n tykChartInstance.off('click', debouncedMethod);\n }\n };\n }, [tykChartInstance, onChange]);\n\n const prevInstance = usePrevious(tykChartInstance);\n const prevOption = usePrevious(option);\n const prevType = usePrevious(type);\n const prevSeries = usePrevious(series);\n useEffect(() => {\n if (\n tykChartInstance\n && (\n !fromJS(prevInstance)?.equals?.(fromJS(tykChartInstance))\n || !fromJS(prevOption)?.equals?.(fromJS(option))\n || (prevType !== type)\n || !fromJS(prevSeries).equals?.(fromJS(series))\n )\n ) {\n tykChartInstance.clear();\n tykChartInstance.setOption(buildChartOptions(type, option, series));\n tykChartInstance.dispatchAction({\n type: 'takeGlobalCursor',\n key: 'dataZoomSelect',\n dataZoomSelectActive: true,\n });\n }\n }, [tykChartInstance, option, series, type]);\n\n useEffect(() => {\n if (tykChartInstance && highlight) {\n tykChartInstance.dispatchAction({\n type: 'highlight',\n seriesIndex: highlight.seriesIndex,\n dataIndex: highlight.dataIndex,\n });\n tykChartInstance.dispatchAction({\n type: 'showTip',\n seriesIndex: highlight.seriesIndex,\n dataIndex: highlight.dataIndex,\n });\n }\n }, [highlight]);\n\n\n const prevZoomStart = usePrevious(zoomStart);\n const prevZoomEnd = usePrevious(zoomEnd);\n useEffect(() => {\n if (\n tykChartInstance\n && zoomStart !== -1\n && zoomEnd !== -1\n && (\n prevZoomStart !== zoomStart\n || prevZoomEnd !== zoomEnd\n )\n ) {\n tykChartInstance.dispatchAction({\n type: 'dataZoom',\n startValue: zoomStart,\n endValue: zoomEnd,\n });\n }\n }, [zoomStart, zoomEnd]);\n\n const getStyle = () => {\n const { style } = props;\n const tempStyle = style || {};\n\n if (!tempStyle.height) {\n tempStyle.height = '300px';\n }\n if (!tempStyle.width) {\n tempStyle.width = '100%';\n }\n return tempStyle;\n };\n\n const chartHasData = () => (\n (dataLoaded && (hasData === false || hasData === true)) ? hasData : true\n );\n\n const getCssClasses = () => {\n const cssClasses = ['tyk-chart'];\n\n if (!dataLoaded) {\n cssClasses.push('tyk-chart--loading-chart');\n }\n\n if (!chartHasData()) {\n cssClasses.push('tyk-chart--no-data');\n }\n\n return cssClasses.join(' ');\n };\n\n return (\n
    \n {\n !dataLoaded\n ? \n : null\n }\n \n {\n /* eslint-disable-next-line no-nested-ternary */\n chartHasData()\n ? null\n : noDataComponent\n ? noDataComponent()\n : (\n \n No data to display\n \n )\n }\n
    \n );\n};\n\nChart.propTypes = {\n areaStyleColors: PropTypes.instanceOf(Array),\n dataLoaded: PropTypes.bool,\n hasData: PropTypes.bool,\n highlight: PropTypes.oneOfType([\n PropTypes.number,\n PropTypes.string,\n PropTypes.instanceOf(Array),\n ]),\n noDataComponent: PropTypes.func,\n zoomStart: PropTypes.number,\n zoomEnd: PropTypes.number,\n zoomColors: PropTypes.instanceOf(Object),\n option: PropTypes.instanceOf(Object),\n onChange: PropTypes.func,\n style: PropTypes.instanceOf(Object),\n type: PropTypes.string,\n title: PropTypes.string,\n series: PropTypes.instanceOf(Array),\n seriesConfig: PropTypes.instanceOf(Object),\n};\n\nexport default memo(Chart);\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport Message from '../../Message';\nimport { useTimeout } from '../../../hooks';\n\nconst ToastMessage = (props) => {\n const {\n children,\n options,\n onClose,\n index,\n } = props;\n const opts = Object.assign({\n theme: 'success',\n delay: 3000,\n }, options);\n let timer;\n\n const handleClose = (itemIndex) => {\n onClose(itemIndex);\n clearTimeout(timer);\n };\n\n useTimeout(() => handleClose(index), opts.delay);\n\n return (\n handleClose(index)}\n >\n {children}\n \n );\n};\n\nToastMessage.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]),\n options: PropTypes.instanceOf(Object),\n onClose: PropTypes.func,\n index: PropTypes.number,\n};\n\nexport default ToastMessage;\n","import React, {\n useEffect, useState,\n} from 'react';\nimport PropTypes from 'prop-types';\n\nimport ToastMessage from './ToastMessage';\n\nconst ToastContainer = (props) => {\n const [messages, setMessages] = useState({});\n const {\n notify,\n } = props;\n\n const updateNotifications = (message, options) => {\n const msgID = Math.floor(Math.random() * 1000000);\n \n setMessages((prevMessages) => ({\n ...prevMessages,\n [msgID]: {\n message,\n options,\n }\n }));\n };\n\n useEffect(() => {\n notify(updateNotifications);\n }, [messages]);\n\n const onMessageClosed = (index) => {\n const tempMessages = {...messages};\n delete tempMessages[index];\n setMessages((prevMessages) => {\n const { [index]: messageToBeRemoved, ...restMessages } = prevMessages;\n return restMessages;\n });\n };\n\n return (\n
    \n {\n Object.keys(messages).map((msgID) => (\n messages[msgID]\n ? (\n \n {messages[msgID].message}\n \n )\n : null\n ))\n }\n
    \n );\n};\n\nToastContainer.propTypes = {\n notify: PropTypes.func,\n};\n\nexport default ToastContainer;\n","import React from 'react';\nimport { createRoot } from 'react-dom/client';\nimport ToastContainer from './js/ToastContainer';\n/**\n * Toast is a service that displays dialogs\n * on the bottom right part of the screen.\n *\n * The dialogs can have one of the Tyk UI themes, so that\n * it would match it's purpose (i.e success message, error message)\n *\n */\nclass ToastCreator {\n constructor() {\n const el = document.createElement('div');\n el.className = 'tyk-toast';\n document.body.appendChild(el);\n const root = createRoot(el);\n root.render();\n }\n\n bindNotify = (fn) => {\n this.createNotification = fn;\n };\n\n notify(message, options) {\n if (this.createNotification) {\n this.createNotification(message, options);\n }\n }\n\n danger(message, options) {\n this.notify(message, { ...options, theme: 'danger' });\n }\n\n success(message, options) {\n this.notify(message, { ...options, theme: 'success' });\n }\n\n warning(message, options) {\n this.notify(message, { ...options, theme: 'warning' });\n }\n\n info(message, options) {\n this.notify(message, { ...options, theme: 'info' });\n }\n}\n\nconst toast = new ToastCreator();\n\nexport default toast;\n","import React, { Fragment, createRef, useCallback } from 'react';\nimport PropTypes from 'prop-types';\n\nimport toast from '../Toast';\n\n/**\n * - CopyToClipboard is used to copy string for a user.\n * - Can be used normally with a text or a custom components (Eg. Button, Icon, etc)\n */\n\nconst CopyToClipboard = (props) => {\n const {\n display, copy, children, onCopy,\n } = props;\n const txtRef = createRef();\n const handleClick = useCallback(() => {\n if (onCopy) {\n onCopy();\n }\n\n if (!window.navigator.clipboard) {\n txtRef.current.select();\n document.execCommand('copy');\n toast.notify('copied', { theme: 'success' });\n return;\n }\n window.navigator.clipboard.writeText(copy);\n toast.notify('copied', { theme: 'success' });\n }, [onCopy, txtRef]);\n\n return (\n \n \n {children || display}\n \n {!window.navigator.clipboard ? (\n \n ) : null}\n \n );\n};\n\nCopyToClipboard.propTypes = {\n /** Callback function executed after text is copied */\n onCopy: PropTypes.func,\n /** Text to be copied */\n copy: PropTypes.string.isRequired,\n /** Text to be displayed */\n display: PropTypes.string,\n /** Children of custom element if you are using any custom element */\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.string,\n PropTypes.object,\n PropTypes.node,\n ]),\n};\n\nexport default CopyToClipboard;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nfunction ModalFooter({ children }) {\n return (\n
    \n { children }\n
    \n );\n}\n\nModalFooter.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]),\n};\n\nexport default ModalFooter;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nfunction ModalBody({ children }) {\n return (\n
    \n { children }\n
    \n );\n}\n\nModalBody.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]),\n};\n\nexport default ModalBody;\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport { CSSTransition } from 'react-transition-group';\n\nimport Icon from '../Icon';\nimport ModalFooter from './js/ModalFooter';\nimport ModalBody from './js/ModalBody';\n\n/**\n * Modals add dialogs confirmation boxes, notifications, or completely custom content\n * - only one Modal can be opened at a time\n * - are unmounted when Modal is closed\n */\nfunction Modal({\n children,\n theme = 'none',\n disableCloseCommands = false,\n opened = false,\n onClose = () => {},\n size = 'md',\n className = '',\n showBackdrop = true,\n ...restProps\n}) {\n const modalClasses = [\n 'tyk-modal',\n `tyk-modal--theme-${theme}`,\n opened && 'opened',\n ].concat(className.split(' ')).filter(Boolean).join(' ');\n\n const backdropClasses = [\n 'tyk-modal__backdrop',\n opened && 'opened',\n ].filter(Boolean).join(' ');\n\n const themeIcon = {\n success: 'check',\n warning: 'warning',\n danger: 'delete',\n }[theme];\n\n return (\n <>\n {\n ReactDOM.createPortal(\n \n
    \n
    \n
    \n {theme !== 'none' && (\n
    \n \n
    \n )}\n { children }\n
    \n
    \n
    \n ,\n document.querySelector('body'),\n )\n }\n {showBackdrop && ReactDOM.createPortal(\n \n !disableCloseCommands && onClose()}\n onKeyDown={() => {}}\n type=\"button\"\n aria-label=\"Close\"\n />\n ,\n document.querySelector('body'),\n )}\n \n );\n}\n\nModal.Body = ModalBody;\nModal.Footer = ModalFooter;\n/* eslint-disable-next-line */\nModal.Header = ({ children }) => {\n console.warn('%cModal.Header%c is deprecated.', 'font-weight: bold', '');\n return (\n
    \n { children }\n
    \n );\n};\n/* eslint-disable-next-line */\nModal.Title = ({ children }) => {\n console.warn('%cModal.Title%c is deprecated.', 'font-weight: bold', '');\n return (\n

    \n { children }\n

    \n );\n};\n\nModal.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]),\n className: PropTypes.string,\n /** one of \"success\", \"warning\", \"danger\", \"none\"; default is \"none\" */\n theme: PropTypes.string,\n /** If set on true, the Modal won't close when clicking on the overlay or by pressing ESC key */\n disableCloseCommands: PropTypes.bool,\n /** If true the Modal will be by default opened */\n opened: PropTypes.bool,\n /** Callback method when the Modal is closed */\n onClose: PropTypes.func,\n /** Width of the Moda: md or lg */\n size: PropTypes.string,\n showBackdrop: PropTypes.bool,\n};\n\nexport default Modal;\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Button from '../Button';\nimport Modal from '../Modal';\n\n/**\n * Confirm component can be used to open a dialog () before a specific action\n */\nfunction Confirm(props) {\n const {\n children,\n title,\n description,\n confirmBtnText = 'Confirm',\n cancelBtnText = 'Cancel',\n } = props;\n const [open, setOpen] = useState(false);\n const [callback, setCallback] = useState(null);\n const [cancelCallback, setCancelCallback] = useState(null);\n\n const show = (callbackFunc, cancelCallbackFunc, beforeCallback) => (...args) => {\n if (beforeCallback) {\n beforeCallback(...args);\n }\n setOpen(true);\n setCallback(() => () => callbackFunc(...args));\n if (cancelCallbackFunc) {\n setCancelCallback(() => () => cancelCallbackFunc(...args));\n }\n };\n\n const hide = () => {\n setOpen(false);\n setCallback(null);\n setCancelCallback(null);\n };\n\n const cancel = () => {\n if (cancelCallback) {\n cancelCallback();\n }\n hide();\n };\n\n const confirm = () => {\n callback();\n hide();\n };\n\n return (\n <>\n {children(show)}\n \n \n

    {title}

    \n {description}\n
    \n \n \n {cancelBtnText}\n \n \n {confirmBtnText}\n \n \n
    \n \n );\n}\n\nConfirm.propTypes = {\n /** Sets the text for primary / confirmation button on opened modal */\n confirmBtnText: PropTypes.string,\n /** Sets the text for danger / abort button on opened modal */\n cancelBtnText: PropTypes.string,\n /** Sets the title for the opened modal */\n title: PropTypes.string,\n /** Sets the description for the opened modal */\n description: PropTypes.string,\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.string,\n PropTypes.object,\n PropTypes.node,\n PropTypes.func,\n ]),\n};\n\nexport default Confirm;\n","import React, { useCallback, useEffect, useRef } from 'react';\nimport PropTypes from 'prop-types';\n\nimport debounce from '../../utils/debounce';\n/**\n * FixedWrapper component, keeps all its children in a fix position on the page,\n * even if the scroll position changes\n * i.e: The top navigation bar of a page sits within FixedWrapper component\n */\nfunction FixedWrapper({ children, className, showShadow }) {\n const fixedWrapperRef = useRef(null);\n\n const attachShadow = useCallback(() => {\n const element = fixedWrapperRef.current;\n\n if (!element) {\n return;\n }\n\n if (window.scrollY) {\n element.classList.add('tyk-fixed-wrapper--scrolled');\n } else {\n element.classList.remove('tyk-fixed-wrapper--scrolled');\n }\n }, [fixedWrapperRef.current]);\n\n const debouncedAttachShadow = useCallback(debounce(attachShadow, 100), [attachShadow]);\n\n useEffect(() => {\n if (showShadow) {\n window.addEventListener('scroll', debouncedAttachShadow);\n }\n\n return () => {\n window.removeEventListener('scroll', debouncedAttachShadow);\n };\n }, [debouncedAttachShadow, showShadow]);\n\n return (\n
    \n { children }\n
    \n );\n}\n\nFixedWrapper.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]),\n /** Css classes that can be passed to the FixedWraper element */\n className: PropTypes.string,\n /** If true, bottom shadow on the FixedWrapper component\n * is being displayed when scroll happens\n */\n showShadow: PropTypes.bool,\n};\n\nFixedWrapper.defaultProps = {\n className: '',\n};\n\nexport default FixedWrapper;\n","import React, {\n useEffect, useState, useRef, useCallback,\n} from 'react';\nimport { PropTypes } from 'prop-types';\n\nimport debounce from '../../utils/debounce';\nimport { usePrevious, useComponentSize } from '../../hooks';\nimport Loader from '../Loader';\n\nfunction InfiniteScroller({\n children,\n hasMore,\n initialLoad,\n loadMore,\n pageNumber,\n refChild,\n}) {\n const [showLoader, setShowLoader] = useState(false);\n const containerRef = useRef(null);\n const refChildSize = useComponentSize(refChild);\n\n useEffect(() => {\n if (initialLoad && typeof loadMore === 'function') {\n setShowLoader(false);\n loadMore(pageNumber);\n }\n }, [initialLoad]);\n\n const shouldLoad = useCallback(() => {\n if (!containerRef.current) return false;\n const { clientHeight, scrollTop } = containerRef.current;\n\n return (\n hasMore\n && (\n (clientHeight + Math.round(scrollTop) === refChildSize.height)\n || (clientHeight >= refChildSize.height)\n )\n );\n }, [containerRef, refChildSize.height]);\n\n const loadMoreData = useCallback(() => {\n if (hasMore && typeof loadMore === 'function') {\n loadMore(pageNumber + 1);\n setShowLoader(true);\n } else {\n setShowLoader(false);\n }\n }, [hasMore, pageNumber]);\n\n const prevPageNumber = usePrevious(pageNumber);\n const scrollHandler = useCallback(debounce(() => {\n if (shouldLoad() && prevPageNumber <= pageNumber) {\n loadMoreData();\n }\n }, 200), [loadMoreData, shouldLoad]);\n\n useEffect(() => {\n containerRef.current?.addEventListener('scroll', scrollHandler);\n return () => containerRef.current?.removeEventListener('scroll', scrollHandler);\n }, [containerRef, scrollHandler]);\n\n // if content resets (page number resets) scroll to top\n useEffect(() => {\n if (prevPageNumber > 0 && pageNumber === 0) {\n containerRef.current.scrollTop = 0;\n }\n }, [containerRef, pageNumber]);\n\n const prevRefChildSize = usePrevious(refChildSize);\n useEffect(() => {\n if (\n refChildSize && prevRefChildSize\n && refChildSize.height !== prevRefChildSize.height\n && showLoader === true\n ) {\n setShowLoader(false);\n }\n }, [showLoader, refChildSize.height]);\n\n useEffect(() => {\n if (\n refChild && refChildSize.height < containerRef.current.clientHeight\n && refChildSize.height\n && hasMore\n ) {\n loadMoreData();\n }\n }, [containerRef, refChildSize, refChild, hasMore]);\n\n return (\n
    \n \n { children }\n
    \n {showLoader && (\n \n )}\n
    \n );\n}\n\nInfiniteScroller.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n hasMore: PropTypes.bool,\n initialLoad: PropTypes.bool,\n pageNumber: PropTypes.number,\n loadMore: PropTypes.func,\n refChild: PropTypes.instanceOf(Object),\n};\n\nInfiniteScroller.defaultProps = {\n hasMore: true,\n};\n\nexport default InfiniteScroller;\n","import React, {\n useEffect, useRef, forwardRef,\n} from 'react';\nimport { createPortal } from 'react-dom';\nimport PropTypes from 'prop-types';\nimport InfiniteScroller from '../InfiniteScroller';\n\n/**\n * It displays a container relative to another element.\n * Meant to be used for dropdowns, tooltips, and other similar components.\n */\nfunction FloatingContainer({\n element,\n size = 'auto',\n forceDisplay = 'auto',\n displayAxis = 'auto',\n preferredPosition,\n offset = 0,\n className,\n children,\n infiniteScrollerConfig,\n}, ref) {\n const localRef = useRef(null);\n const floatingContainerRef = ref || localRef;\n const contentWrapperRef = useRef(null);\n\n function determineDisplay() {\n const target = element.current;\n const container = floatingContainerRef.current;\n if (!container) return preferredPosition ?? displayAxis === 'vertical' ? 'bottom' : 'right';\n\n const { left, top } = target.getBoundingClientRect();\n const topSpace = top;\n const bottomSpace = window.innerHeight - top - target.offsetHeight;\n const leftSpace = left;\n const rightSpace = window.innerWidth - left - target.offsetWidth;\n const hasTopSpace = topSpace > container.scrollHeight;\n const hasBottomSpace = bottomSpace > container.scrollHeight;\n const hasLeftSpace = leftSpace > container.offsetWidth;\n const hasRightSpace = rightSpace > container.offsetWidth;\n const positionedVerticallyFitsInViewport = left + target.offsetWidth / 2 - container.offsetWidth / 2 > 0; // eslint-disable-line max-len\n const positionedHorizontallyFitsInViewport = top + target.offsetHeight / 2 - container.scrollHeight / 2 > 0; // eslint-disable-line max-len\n\n if (\n displayAxis === 'vertical'\n || (\n displayAxis === 'auto'\n && (hasTopSpace || hasBottomSpace)\n && positionedVerticallyFitsInViewport\n )\n ) {\n if (preferredPosition === 'top' && hasTopSpace) return 'top';\n if (preferredPosition === 'bottom' && hasBottomSpace) return 'bottom';\n return hasBottomSpace || bottomSpace > topSpace ? 'bottom' : 'top';\n }\n\n if (displayAxis === 'horizontal') {\n if (preferredPosition === 'left' && hasLeftSpace) return 'left';\n if (preferredPosition === 'right' && hasLeftSpace) return 'right';\n return hasRightSpace || rightSpace > leftSpace ? 'right' : 'left';\n }\n\n if (hasTopSpace && positionedVerticallyFitsInViewport) return 'top';\n if (hasBottomSpace && positionedVerticallyFitsInViewport) return 'bottom';\n if (hasRightSpace && positionedHorizontallyFitsInViewport) return 'right';\n if (hasLeftSpace && positionedHorizontallyFitsInViewport) return 'left';\n return preferredPosition ?? 'bottom';\n }\n\n function adjustPosition() {\n const display = forceDisplay !== 'auto' ? forceDisplay : determineDisplay();\n const target = element.current;\n const container = floatingContainerRef.current;\n\n if (!target || !container) return;\n\n const targetPosition = target.getBoundingClientRect();\n\n if (display === 'top') {\n const topPos = targetPosition.top - container.offsetHeight - offset;\n container.style.top = `${topPos}px`;\n container.style.left = (size === 'auto'\n ? `${targetPosition.left + target.offsetWidth / 2 - container.offsetWidth / 2}px`\n : `${targetPosition.left}px`);\n\n if (size === 'matchElement') {\n container.style.width = `${target.offsetWidth}px`;\n } else if (typeof size === 'function') {\n container.style.width = `${size(target.offsetWidth)}px`;\n }\n container.style.maxHeight = `${targetPosition.top - offset}px`;\n }\n\n if (display === 'bottom') {\n container.style.top = `${targetPosition.bottom + offset}px`;\n container.style.left = size === 'auto'\n ? `${targetPosition.left + target.offsetWidth / 2 - container.offsetWidth / 2}px`\n : `${targetPosition.left}px`;\n if (size === 'matchElement') {\n container.style.width = `${target.offsetWidth}px`;\n } else if (typeof size === 'function') {\n container.style.width = `${size(target.offsetWidth)}px`;\n }\n container.style.maxHeight = `${window.innerHeight - targetPosition.bottom - offset}px`;\n }\n\n if (display === 'left') {\n const topPos = targetPosition.top + target.offsetHeight / 2 - container.offsetHeight / 2;\n container.style.top = size === 'auto'\n ? `${topPos}px`\n : `${targetPosition.top}px`;\n container.style.left = `${targetPosition.left - container.offsetWidth - offset}px`;\n if (size === 'matchElement') {\n container.style.height = `${target.offsetHeight}px`;\n } else if (typeof size === 'function') {\n container.style.height = `${size(target.offsetHeight)}px`;\n }\n container.style.maxWidth = `${targetPosition.left - offset}px`;\n }\n\n if (display === 'right') {\n const topPos = targetPosition.top + target.offsetHeight / 2 - container.offsetHeight / 2;\n container.style.top = size === 'auto'\n ? `${topPos}px`\n : `${targetPosition.top}px`;\n container.style.left = `${targetPosition.left + target.offsetWidth + offset}px`;\n if (size === 'matchElement') {\n container.style.height = `${target.offsetHeight}px`;\n } else if (typeof size === 'function') {\n container.style.height = `${size(target.offsetHeight)}px`;\n }\n container.style.maxWidth = `${window.innerWidth - targetPosition.left - target.offsetWidth - offset}px`;\n }\n }\n\n useEffect(() => {\n window.requestAnimationFrame(function schedulePositionUpdate() {\n adjustPosition();\n window.requestAnimationFrame(schedulePositionUpdate);\n });\n }, []);\n\n return createPortal(\n \n \n \n {children}\n
    \n \n
    ,\n document.querySelector('body'),\n );\n}\n\nFloatingContainer.propTypes = {\n /** A DOM element that the floating container will be displayed relative to. */\n element: PropTypes.instanceOf(Object),\n className: PropTypes.string,\n /** The size of the container.\n * If `auto` the size will be determined by its contents.\n * If `matchElement` it will take the width or the height of the element depending\n * on the `displayAxis` prop.\n * It can also be a function that returns a number representing the width\n * or the height in pixels.\n */\n size: PropTypes.oneOfType([\n PropTypes.oneOf(['auto', 'matchElement']),\n PropTypes.func,\n ]),\n /**\n * The distance between the element and the floating container.\n * It can be positive or negative.\n */\n offset: PropTypes.number,\n /**\n * If `auto` the component will try to determine where to display the container relative to the\n * element (top, bottom, left, right).\n * It can also be one of top, bottom, left, right, to force the floating container to always be\n * displayed in that position.\n */\n forceDisplay: PropTypes.oneOf(['auto', 'top', 'bottom', 'left', 'right']),\n /**\n * It can be `auto`, `vertical` or `horizontal`. It specifies the axis where\n * it will be displayed when `forceDisplay` is `auto`.\n */\n displayAxis: PropTypes.oneOf(['auto', 'vertical', 'horizontal']),\n /**\n * If there is space on both sides of the axis preffer this side.\n */\n preferredPosition: PropTypes.oneOf(['top', 'bottom', 'left', 'right']),\n /**\n * Configuration object that will be passed to the infinite scroller component.\n */\n infiniteScrollerConfig: PropTypes.instanceOf(Object),\n};\n\nexport default forwardRef(FloatingContainer);\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport Message from '../Message';\n\nfunction InfoNote({ children }) {\n return (\n
    \n \n { children }\n \n
    \n );\n}\n\nInfoNote.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]),\n};\n\nexport default InfoNote;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nconst ListItem = (props) => {\n const {\n className,\n children,\n } = props;\n\n return (\n
  • \n {children}\n
  • \n );\n};\n\nListItem.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n className: PropTypes.string,\n};\n\nListItem.defaultProps = {\n className: '',\n};\n\nexport default ListItem;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { fromJS } from 'immutable';\nimport ListItem from './js/ListItem';\n\nconst List = (props) => {\n const {\n className,\n children,\n label,\n labelwidth,\n theme,\n style,\n } = props;\n\n const getCssClasses = () => {\n let cssClasses = ['tyk-list'];\n\n if (theme) {\n cssClasses.push(`tyk-list--${theme}`);\n }\n\n if (className) {\n cssClasses = cssClasses.concat(className.split(' '));\n }\n\n return cssClasses.join(' ');\n };\n\n const getListStyle = () => {\n const styleCopy = fromJS(style).toJS();\n if (labelwidth) {\n styleCopy.flexBasis = `calc(100% - ${labelwidth} - 20px)`;\n }\n\n return styleCopy;\n };\n\n return (\n
    \n {\n label !== undefined\n ? (\n \n )\n : null\n }\n
      \n {children}\n
    \n
    \n );\n};\n\nList.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n className: PropTypes.string,\n label: PropTypes.string,\n labelwidth: PropTypes.string,\n theme: PropTypes.string,\n style: PropTypes.instanceOf(Object),\n};\n\nList.defaultProps = {\n theme: 'default',\n style: {},\n};\n\n\nList.Item = ListItem;\n\n\nexport default List;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nfunction NavBar({\n align = 'center',\n children,\n left,\n right,\n title,\n pre,\n subtitle,\n withTabs,\n}) {\n const subtitleContent = subtitle ?

    { subtitle }

    : null;\n return (\n
    \n
    \n {pre && (\n
    {pre}
    \n )}\n {\n title\n ? (\n
    \n

    { title }

    \n { subtitleContent }\n
    \n )\n : subtitleContent\n }\n
    \n {left && (\n
    { left }
    \n )}\n {right && (\n
    { right }
    \n )}\n
    \n
    \n { children }\n
    \n );\n}\n\nNavBar.propTypes = {\n align: PropTypes.string,\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n title: PropTypes.string,\n subtitle: PropTypes.string,\n pre: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n ]),\n left: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n ]),\n right: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n ]),\n withTabs: PropTypes.bool,\n};\n\nexport default NavBar;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nfunction NavigationItem({ children }) {\n return (\n
  • \n {children}\n
  • \n );\n}\n\nNavigationItem.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n};\n\nexport default NavigationItem;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport NavigationItem from './js/NavigationItem';\n\nfunction Navigation({ children }) {\n return (\n
      \n {children}\n
    \n );\n}\n\nNavigation.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n};\n\nNavigation.Item = NavigationItem;\n\nexport default Navigation;\n","import { createContext } from 'react';\n\nexport const PortalContext = createContext();\n","import React, { useCallback } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Collapsible from '../../Collapsible';\nimport { PortalContext } from '../panel-context';\n\nfunction PanelBody({\n children,\n noPadding,\n className,\n ...rest\n}) {\n const getCssClasses = useCallback(\n () => [\n 'tyk-panel__body',\n className,\n noPadding && 'no-padding',\n ].filter(Boolean).join(' '),\n [className, noPadding],\n );\n\n return (\n \n {\n (portalContext) => (\n portalContext.collapsable\n ? (\n \n { children }\n \n )\n : (\n \n { children }\n
    \n )\n )\n }\n \n );\n}\n\nPanelBody.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]),\n noPadding: PropTypes.bool,\n className: PropTypes.string,\n};\n\nexport default PanelBody;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nconst PanelFooter = (props) => {\n const { children } = props;\n return (\n
    \n { children }\n
    \n );\n};\n\nPanelFooter.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]),\n};\n\nexport default PanelFooter;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Icon from '../../Icon';\nimport { PortalContext } from '../panel-context';\n\nexport default class PanelHeader extends Component {\n static propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]).isRequired,\n className: PropTypes.string,\n }\n\n getCssClasses(props) {\n const { className } = this.props;\n let cssClasses = ['tyk-panel__header'];\n\n if (props.collapsable) {\n cssClasses.push('collapsable');\n }\n\n if (className) {\n cssClasses = cssClasses.concat(className.split(' '));\n }\n\n return cssClasses.join(' ');\n }\n\n render() {\n const {\n children,\n } = this.props;\n\n return (\n \n {\n (portalContext) => {\n const HeaderTag = portalContext.theme === 'blank' ? 'h3' : 'div';\n const iconType = portalContext.collapsed ? 'chevron-down' : 'chevron-up';\n\n return (\n \n { children }\n {\n portalContext.collapsable\n ?
    \n : null\n }\n \n );\n }\n }\n
    \n );\n }\n}\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport PanelBody from './js/PanelBody';\nimport PanelFooter from './js/PanelFooter';\nimport PanelHeader from './js/PanelHeader';\n\n\nimport { PortalContext } from './panel-context';\n\n\nconst Panel = (props) => {\n const {\n children,\n className,\n collapsed,\n collapsable,\n theme,\n onToggleCollapse,\n collapsibleIconPosition = 'right',\n } = props;\n const [collapsedState, setCollapsedState] = useState(collapsed || false);\n\n useEffect(() => {\n if (collapsed !== collapsedState) {\n setCollapsedState(collapsed);\n }\n }, [collapsed]);\n\n const getCssClasses = () => {\n let cssClasses = ['tyk-panel'];\n const panelTheme = `tyk-panel--${theme || 'default'}`;\n const collapsbleIconPosition = `tyk-panel__icon-collapse--${collapsibleIconPosition}`;\n\n cssClasses.push(panelTheme);\n cssClasses.push(collapsbleIconPosition);\n\n if (className) {\n cssClasses = cssClasses.concat(className.split(' '));\n }\n\n if (collapsedState) {\n cssClasses.push('tyk-panel--collapsed');\n }\n\n return cssClasses.join(' ');\n };\n\n const handleToggle = () => {\n setCollapsedState(!collapsedState);\n\n if (onToggleCollapse) {\n onToggleCollapse(!collapsedState);\n }\n };\n\n return (\n
    \n \n {\n (typeof children === 'function')\n ? children({\n toggleCollapse: handleToggle,\n })\n : children\n }\n \n
    \n );\n};\n\nPanel.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.func,\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]),\n className: PropTypes.string,\n collapsable: PropTypes.bool,\n collapsibleIconPosition: PropTypes.string,\n collapsed: PropTypes.bool,\n theme: PropTypes.string,\n onToggleCollapse: PropTypes.func,\n};\n\n\nPanel.Body = PanelBody;\nPanel.Footer = PanelFooter;\nPanel.Header = PanelHeader;\n\nexport default Panel;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n/**\n * Pill\n *\n */\nconst Pill = (props) => {\n const {\n children,\n className,\n theme,\n } = props;\n\n const getCssClasses = () => {\n let cssClasses = ['tyk-pill', ...theme.split(' ').map(t => `tyk-pill--${t}`)];\n\n if (className) {\n cssClasses = cssClasses.concat(className);\n }\n\n return cssClasses.join(' ');\n };\n\n return (\n
    \n {children}\n
    \n );\n};\n\nPill.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n /** Css classes that can be passed to the Pill element */\n className: PropTypes.string,\n /** Theme that can be applied to a Pill */\n theme: PropTypes.string,\n};\n\nPill.defaultProps = {\n theme: 'default',\n};\n\nexport default Pill;\n","import { useRef } from 'react';\n\n/**\n * RevealPanelService is a class that manages the resizing of a panel element.\n * It provides methods to set the panel's height, hide and show it, and attach\n * event listeners for resizing.\n */\nclass RevealPanelService {\n #state = null; // Private state for mouse interactions.\n\n #panel = null; // The panel element to be resized.\n\n #gutter = null; // The gutter element used for resizing.\n\n #wrapper = null; // The wrapper element that contains the panel and gutter.\n\n #onHeightChangeCallbacks = []; // Callback function to be executed when the panel is resized.\n\n #onDragStartCallbacks = []; // Callback function to be executed when the panel is resized.\n\n #onDragEndCallbacks = []; // Callback function to be executed when the panel is resized.\n\n #dragStarted = false;\n /**\n * Sets a callback function to be executed when the panel is resized.\n * @param {function} callback - The callback function to be called on panel resize.\n */\n\n on(eventName, listener) {\n let list = null;\n if (eventName === 'onHeightChange') {\n list = this.#onHeightChangeCallbacks;\n } else if (eventName === 'onDragStart') {\n list = this.#onDragStartCallbacks;\n } else if (eventName === 'onDragEnd') {\n list = this.#onDragEndCallbacks;\n }\n\n if (list) {\n this.addListener(list, listener);\n }\n }\n\n off(eventName, listener) {\n let list = null;\n if (eventName === 'onHeightChange') {\n list = this.#onHeightChangeCallbacks;\n } else if (eventName === 'onDragStart') {\n list = this.#onDragStartCallbacks;\n } else if (eventName === 'onDragEnd') {\n list = this.#onDragEndCallbacks;\n }\n\n if (list) {\n this.removeListener(list, listener);\n }\n }\n\n /**\n * Sets the panel, gutter, and wrapper elements to be controlled by this class.\n * @param {HTMLElement} wrapper - The wrapper element containing the panel and gutter.\n * @param {HTMLElement} panel - The panel element to be resized.\n * @param {HTMLElement} gutter - The gutter element used for resizing.\n */\n setRefs(wrapper, panel, gutter) {\n if (this.#panel || this.#gutter || this.#wrapper) {\n this.unbindEvents();\n }\n this.#wrapper = wrapper;\n this.#panel = panel;\n this.#gutter = gutter;\n this.#state = null;\n this.bindEvents();\n }\n\n /**\n * Attaches event listeners for panel resizing.\n */\n bindEvents() {\n this.ensureRefs('bindEvents');\n this.#gutter.addEventListener('mousedown', this.onMouseDown.bind(this));\n document.addEventListener('mousemove', this.onMouseMove.bind(this));\n document.addEventListener('mouseup', this.onMouseUp.bind(this));\n }\n\n /**\n * Gets the current height of the panel.\n * @returns {number} - The height of the panel in pixels.\n */\n getHeight() {\n this.ensureRefs('getHeight');\n const size = this.#panel.getBoundingClientRect();\n return size.height;\n }\n\n /**\n * Handles the mouse down event, initiating the resizing process.\n * @param {MouseEvent} e - The mouse event object.\n */\n onMouseDown(e) {\n this.ensureRefs('onMouseDown');\n this.#state = {\n mouseDown: true,\n initialRect: this.#panel.getBoundingClientRect(),\n initialEvent: e,\n };\n }\n\n /**\n * Handles the mouse move event, adjusting the panel's height during resizing.\n * @param {MouseEvent} e - The mouse event object.\n */\n onMouseMove(e) {\n this.ensureRefs('onMouseMove');\n\n if (!this.#state) {\n return;\n }\n\n const isButtonDown = this.isPrimaryMouseButtonDown(e);\n if (!isButtonDown) {\n this.onMouseUp();\n return;\n }\n\n if (!this.#dragStarted) {\n this.#dragStarted = true;\n this.onDragStart.bind(this)();\n }\n\n const newY = this.#state.initialEvent.y - e.y;\n const finalHeight = Math.ceil(this.#state.initialRect.height + newY);\n this.setHeight(`${finalHeight}px`, 'mousemove');\n }\n\n // eslint-disable-next-line class-methods-use-this\n notifyListeners(list, value) {\n if (list && Array.isArray(list) && list.length) {\n list.forEach((fn) => {\n if (typeof fn === 'function') {\n fn(value);\n }\n });\n }\n }\n\n // eslint-disable-next-line class-methods-use-this\n addListener(list, listener) {\n if (list && Array.isArray(list) && typeof listener === 'function') {\n list.push(listener);\n }\n }\n\n // eslint-disable-next-line class-methods-use-this\n removeListener(list, listener) {\n if (list && Array.isArray(list) && typeof listener === 'function' && list.length) {\n const index = list.indexOf(listener);\n\n if (index > -1) {\n list.splice(index, 1);\n }\n }\n }\n\n onDragEnd() {\n if (this.#dragStarted) {\n this.notifyListeners(this.#onDragEndCallbacks, this.getHeight());\n }\n }\n\n onDragStart() {\n this.notifyListeners(this.#onDragStartCallbacks, this.getHeight());\n }\n\n // eslint-disable-next-line class-methods-use-this\n isPrimaryMouseButtonDown(e) {\n const flags = e.buttons !== undefined ? e.buttons : e.which;\n // eslint-disable-next-line no-bitwise\n const isDown = flags === 1;\n return isDown;\n }\n\n /**\n * Resets the state after the mouse up event, ending the resizing process.\n */\n onMouseUp() {\n this.#state = null;\n this.onDragEnd.bind(this)();\n this.#dragStarted = false;\n }\n\n /**\n * Sets the height of the panel.\n * @param {string} height - The new height value as a CSS string (e.g., \"100px\").\n */\n setHeight(height) {\n let heightVal = height;\n this.ensureRefs('setHeight');\n\n if (typeof heightVal === 'number') {\n heightVal += 'px';\n }\n\n this.#panel.style.height = heightVal;\n\n this.notifyListeners(this.#onHeightChangeCallbacks, this.getHeight());\n }\n\n /**\n * Ensures that the required elements (wrapper, panel, and gutter) are set.\n * Throws an error if they are missing.\n */\n ensureRefs(reason) {\n if (!this.#panel || !this.#gutter || !this.#wrapper) {\n throw new Error(\n `${reason}: Wrapper, panel, and gutter elements are required. Use setRefs method first.`,\n );\n }\n }\n\n /**\n * Checks if the panel is hidden.\n * @returns {boolean} - True if the panel is hidden; false otherwise.\n */\n isHidden() {\n this.ensureRefs('isHidden');\n return this.#wrapper.style.visibility === 'hidden';\n }\n\n /**\n * Hides the panel by setting its visibility to \"hidden\".\n */\n hide() {\n this.ensureRefs('hide');\n this.#wrapper.style.visibility = 'hidden';\n }\n\n /**\n * Shows the panel by setting its visibility to \"visible\".\n */\n show() {\n this.ensureRefs('show');\n this.#wrapper.style.visibility = 'visible';\n }\n\n /**\n * Unbinds the event listeners added for resizing.\n */\n unbindEvents() {\n this.#onHeightChangeCallbacks = [];\n this.#onDragStartCallbacks = [];\n this.#onDragEndCallbacks = [];\n this.#gutter.removeEventListener('mousedown', this.onMouseDown.bind(this));\n document.removeEventListener('mousemove', this.onMouseMove.bind(this));\n document.removeEventListener('mouseup', this.onMouseUp.bind(this));\n }\n\n deinit() {\n this.unbindEvents();\n }\n}\n\nexport const useRevealPanelService = () => {\n const revealPanelServiceRef = useRef(new RevealPanelService());\n return revealPanelServiceRef.current;\n};\n","import React, {\n useEffect,\n useRef,\n useImperativeHandle,\n forwardRef,\n} from 'react';\nimport PropTypes from 'prop-types';\nimport { createPortal } from 'react-dom';\nimport { useRevealPanelService } from './js/RevealPanelService';\n\nfunction RevealPanelHeaderLeft({ children }) {\n // eslint-disable-next-line react/jsx-no-useless-fragment\n return <>{children};\n}\n\nRevealPanelHeaderLeft.propTypes = {\n children: PropTypes.instanceOf({}),\n};\n\nfunction RevealPanelHeaderRight({ children }) {\n // eslint-disable-next-line react/jsx-no-useless-fragment\n return <>{children};\n}\n\nRevealPanelHeaderRight.propTypes = {\n children: PropTypes.instanceOf({}),\n};\n\nconst mergeClasses = (...classNames) => classNames.map((it) => (it || '').trim()).filter(Boolean).join(' ');\n\nconst RevealPanel = forwardRef(({\n children,\n height,\n onHeightChange = null,\n onDragStart = null,\n onDragEnd = null,\n style = null,\n parentSelector = null,\n contentStyle,\n contentClassName,\n gutterClassName,\n wrapperClassName,\n// eslint-disable-next-line consistent-return\n}, ref) => {\n const panelRef = useRef(null);\n const gutterRef = useRef(null);\n const wrapperRef = useRef(null);\n\n const panelService = useRevealPanelService();\n\n useEffect(() => {\n if (!panelRef.current || !gutterRef.current || !wrapperRef.current) {\n return;\n }\n\n if (!panelService) {\n return;\n }\n\n panelService.setRefs(wrapperRef.current, panelRef.current, gutterRef.current);\n panelService.on('onHeightChange', onHeightChange);\n panelService.on('onDragStart', onDragStart);\n panelService.on('onDragEnd', onDragEnd);\n panelService.setHeight(height, 'initialize');\n\n // eslint-disable-next-line consistent-return\n return () => {\n panelService.unbindEvents();\n };\n }, []);\n\n useImperativeHandle(\n ref,\n () => {\n // bind this context\n const bind = (func) => func.bind(panelService);\n\n return {\n getHeight: bind(panelService.getHeight),\n setHeight: bind(panelService.setHeight),\n hide: bind(panelService.hide),\n show: bind(panelService.show),\n isHidden: bind(panelService.isHidden),\n deinit: bind(panelService.deinit),\n on: bind(panelService.on),\n off: bind(panelService.off),\n };\n },\n [],\n );\n\n let headerLeft = null;\n let headerRight = null;\n const contents = [];\n\n React.Children.forEach(children, (child) => {\n if (child && React.isValidElement(child)) {\n if (child.type === RevealPanelHeaderLeft) {\n headerLeft = child;\n } else if (child.type === RevealPanelHeaderRight) {\n headerRight = child;\n } else {\n contents.push(child);\n }\n }\n });\n\n const element = (\n
    \n
    \n
    \n\n
    {headerLeft}
    \n
    \n
    {headerRight}
    \n\n
    \n
    \n {contents}\n
    \n
    \n );\n\n if (parentSelector) {\n return createPortal(element, document.querySelector(parentSelector));\n }\n});\n\nRevealPanel.propTypes = {\n children: PropTypes.instanceOf({}),\n height: PropTypes.string,\n onHeightChange: PropTypes.func,\n onDragStart: PropTypes.func,\n onDragEnd: PropTypes.func,\n parentSelector: PropTypes.string,\n style: PropTypes.instanceOf({}),\n contentStyle: PropTypes.instanceOf({}),\n contentClassName: PropTypes.string,\n gutterClassName: PropTypes.string,\n wrapperClassName: PropTypes.string,\n};\n\nRevealPanel.HeaderLeft = RevealPanelHeaderLeft;\nRevealPanel.HeaderRight = RevealPanelHeaderRight;\n\nexport default RevealPanel;\n","import { createContext } from 'react';\n\nexport const TabsContext = createContext();\n","import { createContext } from 'react';\n\nexport default createContext();\n","import React, { useEffect, useMemo } from 'react';\nimport PropTypes from 'prop-types';\n\nimport TabContext from './TabContext';\nimport { usePrevious } from '../../../hooks';\n\nconst TabContent = (props) => {\n const {\n addTab,\n hideTab,\n updateTab,\n showTab,\n children,\n selectedPath,\n tabData,\n tabsId,\n tabExists,\n path,\n rendered,\n hideTabContent,\n tabs,\n } = props;\n\n useEffect(() => {\n const tempTabData = { ...tabData };\n\n if (!tabExists(path)) {\n addTab(tempTabData, path);\n }\n }, [tabData, path]);\n\n const prevTabData = usePrevious(tabData);\n useEffect(() => {\n if (\n tabExists(path) && tabData?.title\n && (prevTabData?.title !== tabData?.title || prevTabData.selected !== tabData.selected)\n ) {\n const tempTabData = { ...tabData };\n updateTab(tempTabData, path);\n }\n }, [tabData, path, prevTabData, tabs]);\n\n useEffect(() => {\n showTab(path);\n return () => hideTab(path);\n }, []);\n\n const shouldRender = useMemo(() => {\n if (!Object.keys(tabs).length) {\n return false;\n }\n\n if (hideTabContent || tabs[tabData.id].show === false) {\n return false;\n }\n\n if (!rendered) {\n return tabExists(path);\n }\n return selectedPath && selectedPath.indexOf(tabData.id) > -1;\n }, [hideTabContent, rendered, selectedPath, tabData, tabs]);\n\n return (\n (\n shouldRender\n ? (\n
    -1 ? 'block' : 'none' }}>\n \n {children}\n \n
    \n )\n : null\n )\n );\n};\n\nTabContent.propTypes = {\n addTab: PropTypes.func,\n updateTab: PropTypes.func,\n hideTab: PropTypes.func,\n showTab: PropTypes.func,\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n path: PropTypes.instanceOf(Array),\n hideTabContent: PropTypes.bool,\n rendered: PropTypes.bool,\n selectedPath: PropTypes.instanceOf(Array),\n tabExists: PropTypes.func,\n tabsId: PropTypes.string,\n tabData: PropTypes.instanceOf(Object),\n tabs: PropTypes.instanceOf(Object),\n};\n\nexport default TabContent;\n","import React, {\n Fragment, useContext, useEffect, useState,\n} from 'react';\nimport PropTypes from 'prop-types';\nimport { TabsContext } from '../tabs-context';\nimport TabContext from './TabContext';\nimport TabContent from './TabContent';\n\nconst Tab = (props) => {\n const { id } = props;\n const tabsContext = useContext(TabsContext);\n const tabContext = useContext(TabContext);\n const {\n tabExists,\n selectedPath,\n addTab,\n updateTab,\n hideTab,\n showTab,\n rendered,\n hideTabContent,\n tabs,\n } = tabsContext;\n const {\n children,\n } = props;\n const [path, setPath] = useState('');\n\n useEffect(() => {\n let tempPath;\n if (tabContext && path) {\n if (tabContext.tabsId === tabsContext.id) {\n tempPath = tabContext.path.concat([id]);\n } else {\n tempPath = [id];\n }\n } else {\n tempPath = [id];\n }\n setPath(tempPath);\n }, [tabContext]);\n\n if (!path) {\n return null;\n }\n\n return (\n \n \n {children}\n \n \n );\n};\n\nTab.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n id: PropTypes.string,\n};\n\nTab.defaultProps = {};\n\nexport default Tab;\n","\nimport React, {\n useEffect, useState,\n} from 'react';\nimport PropTypes from 'prop-types';\nimport Tab from './js/Tab';\n\nimport Collapsible from '../Collapsible';\nimport Icon from '../Icon';\nimport { TabsContext } from './tabs-context';\n\nconst Tabs = (props) => {\n const {\n children,\n className,\n id,\n onTabChange,\n type,\n hideTabContent,\n } = props;\n const [tabs, setTabs] = useState({});\n const [selectedPath, setSelectedPath] = useState([]);\n const [rendered, setRendered] = useState(false);\n const [initialPath, setInitialPath] = useState(null);\n\n useEffect(() => {\n setSelectedPath(initialPath);\n }, [initialPath]);\n\n const updateTabsList = (tabsState, path, tabData) => {\n let tempTabsState = Object.assign({}, tabsState);\n const tempTabData = Object.assign({}, tabData);\n const tempPath = path.slice(0);\n\n while (tempPath.length > 1) {\n tempTabsState = tempTabsState[tempPath.shift()];\n\n if (!tempTabsState) {\n tempTabsState = {};\n }\n }\n\n tempTabData.tempPath = tempPath;\n tempTabsState[tempPath.shift()] = tempTabData;\n\n return tempTabsState;\n };\n\n const toggleTab = (tabsState, path) => {\n let tempTabsState = Object.assign({}, tabsState);\n const tempPath = path.slice(0);\n\n while (tempPath.length > 1) {\n tempTabsState = tempTabsState[tempPath.shift()];\n }\n\n const key = tempPath.shift();\n if (tempTabsState[key].collapsed === undefined) {\n tempTabsState[key].collapsed = true;\n } else {\n tempTabsState[key].collapsed = !tempTabsState[key].collapsed;\n }\n\n return tempTabsState;\n };\n\n const getCssClasses = () => {\n let cssClasses = ['tyk-tabs'];\n\n cssClasses.push(`tyk-tabs--${type || 'default'}`);\n\n if (className) {\n cssClasses = cssClasses.concat(className.split(' '));\n }\n\n return cssClasses.join(' ');\n };\n\n const setCurrentSelectedPath = (path, tabData) => {\n const tempPath = path.slice(0);\n let tempRendered = true;\n\n if (tabData.collapsible) {\n tempPath.push(Object.keys(tabData.tabs)[0]);\n tempRendered = false;\n }\n\n setTabs((prevTabs) => {\n let tempTabs = Object.assign({}, prevTabs);\n\n tempTabs = toggleTab(tempTabs, path);\n\n return tempTabs;\n });\n setSelectedPath(tempPath);\n setRendered(tempRendered);\n\n if (onTabChange) {\n onTabChange(tabData);\n }\n };\n\n const getTabCssClass = (tabId) => {\n const cssClasses = [];\n\n if (selectedPath && selectedPath.indexOf(tabId) > -1) {\n cssClasses.push('active');\n }\n\n return cssClasses.join(' ');\n };\n\n const genTabs = (currentTabs, path) => {\n if (!currentTabs) {\n return null;\n }\n\n return (\n
      \n {\n Object.keys(currentTabs).map((tabId, index) => {\n const tempPath = path ? path.concat([currentTabs[tabId].id]) : [currentTabs[tabId].id];\n const iconType = currentTabs[tabId].collapsed ? 'chevron-up' : 'chevron-down';\n\n if (currentTabs[tabId].show === false) {\n return null;\n }\n\n return (\n
    • \n \n { currentTabs[tabId].title }\n {\n currentTabs[tabId].collapsible\n ? \n : null\n }\n \n {\n currentTabs[tabId].collapsible\n ? (\n \n {genTabs(currentTabs[tabId].tabs, tempPath)}\n \n )\n : genTabs(currentTabs[tabId].tabs, tempPath)\n }\n
    • \n );\n })\n }\n
    \n );\n };\n\n const addTab = (tabData, path) => {\n setTabs(prevTabs => updateTabsList({ ...prevTabs }, path, tabData));\n\n if (tabData.selected) {\n setInitialPath(path);\n }\n };\n\n const updateTab = (tabData, path) => {\n setTabs((prevTabs) => {\n const tempTabs = { ...prevTabs };\n tempTabs[tabData.id] = tabData;\n return tempTabs;\n });\n\n if (tabData.selected) {\n setCurrentSelectedPath(path, tabData);\n }\n };\n\n const hideTab = (path) => {\n setTabs((prevTabs) => {\n const tempTabs = { ...prevTabs };\n tempTabs[path].show = false;\n\n return tempTabs;\n });\n };\n\n const showTab = (path) => {\n setTabs((prevTabs) => {\n const tempTabs = { ...prevTabs };\n\n tempTabs[path].show = true;\n\n return tempTabs;\n });\n };\n\n const tabExists = (path) => {\n let tempTabs = { ...tabs };\n const tempPath = path.slice(0);\n while (tempPath.length > 1) {\n tempTabs = tempTabs[tempPath.shift()];\n }\n\n const key = tempPath.shift();\n\n return !!(tempTabs && tempTabs[key]);\n };\n\n return (\n
    \n {genTabs(tabs)}\n \n {\n (typeof children === 'function')\n ? children({\n hideTab,\n showTab,\n })\n : children\n }\n \n
    \n );\n};\n\nTabs.propTypes = {\n className: PropTypes.string,\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n hideTabContent: PropTypes.bool,\n id: PropTypes.string,\n onTabChange: PropTypes.func,\n type: PropTypes.string,\n};\n\n\nTabs.Tab = Tab;\n\nexport default Tabs;\n","import React, {\n useCallback, useEffect, useRef, useState,\n} from 'react';\nimport PropTypes from 'prop-types';\n\nimport FloatingContainer from '../FloatingContainer';\nimport Icon from '../Icon';\n\nfunction Tooltip({\n render,\n className,\n children,\n position = 'auto',\n style,\n icon = false,\n closable,\n isOpened = false,\n additionalClickParents = [],\n ...props\n}) {\n const [isActive, setIsActive] = useState(false);\n const wrapperRef = useRef(null);\n const tooltipRef = useRef(null);\n const activeEvents = closable\n ? {\n onClick: () => setIsActive(true),\n }\n : {\n onMouseEnter: () => setIsActive(true),\n onMouseLeave: () => setIsActive(false),\n onFocus: () => setIsActive(true),\n onBlur: () => setIsActive(false),\n };\n\n const handleDocumentClick = useCallback((e) => {\n if ([...additionalClickParents, tooltipRef.current].some((p) => p?.contains?.(e.target))) {\n return;\n }\n setIsActive(false);\n }, [additionalClickParents]);\n\n useEffect(() => {\n document.addEventListener('click', handleDocumentClick, true);\n return () => document.removeEventListener('click', handleDocumentClick, true);\n }, [handleDocumentClick]);\n\n useEffect(() => {\n setIsActive(isOpened);\n }, [isOpened]);\n\n const classes = ['tyk-tooltip', className].filter(Boolean).join(' ');\n return (\n \n {children}\n {isActive && (\n \n
    \n {icon && (\n icon === true ? (\n \n ) : (\n icon\n )\n )}\n
    \n {render}\n
    \n {closable && (\n {\n e.stopPropagation();\n setIsActive(false);\n }}\n />\n )}\n
    \n \n )}\n
    \n );\n}\n\nTooltip.propTypes = {\n children: PropTypes.node.isRequired,\n /** custom styles to apply on hovered element */\n style: PropTypes.instanceOf(Object),\n /** describes where the tooltip should be displayed in relation\n * whith the hovered element: top, bottom, left, right\n */\n position: PropTypes.string,\n /** content of the tooltip, can be a string or a React node element */\n render: PropTypes.oneOfType([\n PropTypes.node,\n PropTypes.string,\n ]),\n /** additional tooltip classes */\n className: PropTypes.string,\n /** if `true` displays the \"question mark\" icon;\n * optionally you can pass a different icon\n */\n icon: PropTypes.oneOfType([\n PropTypes.bool,\n PropTypes.node,\n ]),\n /** if `true` the tooltip is activated on click and an \"x\" is displayed to close it;\n * if `false` the tooltip is activated on hover and it closes when no longer hovering\n */\n closable: PropTypes.bool,\n /** handles the `isActive` state of the tooltip from outside */\n isOpened: PropTypes.bool,\n /** Additional dom elements to check if the document click was inside of them.\n * Useful when you want to open the tooltip after an interaction\n * with an element not inside the tooltip root.\n */\n additionalClickParents: PropTypes.instanceOf(Array),\n};\n\nexport default Tooltip;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Tooltip from '../Tooltip';\n/**\n * TextEllipsis component helps you to hide a part of a text,\n * but displaying it when it's being hovered.\n * The entire text is displayed with the help of Tooltip component\n */\n\nfunction TextEllipsis({ text, limit, position }) {\n return (\n text.length > limit\n ? (\n \n {text.substring(0, limit)}\n ...\n \n )\n : text\n );\n}\n\nTextEllipsis.propTypes = {\n /** Text to be shrinked by TextEllipsis */\n text: PropTypes.string,\n /** Number of characters that TextEllipsis would leave visible */\n limit: PropTypes.number,\n /** tooltip position */\n position: PropTypes.string,\n};\n\nexport default TextEllipsis;\n","import React, { Component, Fragment } from 'react';\nimport PropTypes from 'prop-types';\n\nconst shouldShowPage = (currentNr, pageNr, totalNrOfPages) => {\n const basePageNr = 5;\n const minimumNrOfPages = 10;\n\n if (totalNrOfPages < minimumNrOfPages) {\n return true;\n }\n\n if (\n pageNr < basePageNr\n && currentNr < basePageNr\n ) {\n return true;\n }\n\n if (\n pageNr > totalNrOfPages - basePageNr\n && currentNr > totalNrOfPages - basePageNr\n ) {\n return true;\n }\n\n if (\n currentNr >= pageNr - 2\n && currentNr <= pageNr + 2\n ) {\n return true;\n }\n\n if ([0, 1, totalNrOfPages - 1, totalNrOfPages].indexOf(currentNr) > -1) {\n return true;\n }\n\n return false;\n};\n\nconst getPagesArr = (nrOfPages, selectedPage) => {\n let i; const\n pagesArr = [];\n\n for (i = 0; i <= nrOfPages; i += 1) {\n if (shouldShowPage(i, selectedPage, nrOfPages)) {\n if (i > pagesArr[pagesArr.length - 1]) {\n pagesArr.push('...');\n }\n pagesArr.push(i + 1);\n }\n }\n\n return pagesArr;\n};\n\nexport default class Pagination extends Component {\n static propTypes = {\n value: PropTypes.number,\n totalNrOfPages: PropTypes.number,\n onChange: PropTypes.func,\n };\n\n constructor(props) {\n super(props);\n const {\n value,\n totalNrOfPages,\n } = this.props;\n\n this.state = {\n prevProps: this.props,\n selectedPage: value || 0,\n pagesArray: getPagesArr(totalNrOfPages, value),\n };\n\n this.pageKey = 0;\n }\n\n static getDerivedStateFromProps(nextProps, prevState) {\n if (\n nextProps.value !== prevState.prevProps.value\n || nextProps.totalNrOfPages !== prevState.prevProps.totalNrOfPages\n ) {\n return {\n selectedPage: nextProps.value,\n pagesArray: getPagesArr(nextProps.totalNrOfPages, nextProps.value),\n };\n }\n\n return null;\n }\n\n getPageCssClass(pageNr) {\n const { selectedPage } = this.state;\n const cssClasses = [];\n\n if (selectedPage === pageNr) {\n cssClasses.push('active');\n }\n\n return cssClasses.join(' ');\n }\n\n getPageKey() {\n this.pageKey += 1;\n\n return this.pageKey;\n }\n\n goToPage(pageNr) {\n const { onChange, totalNrOfPages } = this.props;\n this.setState({\n selectedPage: pageNr,\n pagesArray: getPagesArr(totalNrOfPages, pageNr),\n }, () => {\n if (onChange) {\n onChange(pageNr);\n }\n });\n }\n\n render() {\n const { totalNrOfPages } = this.props;\n const { pagesArray, selectedPage } = this.state;\n\n return (\n \n {\n totalNrOfPages\n ? (\n
      \n {\n selectedPage > 0 && totalNrOfPages > 5\n ? (\n
    • \n \n
    • \n )\n : null\n }\n {\n pagesArray.map(pageNr => (\n
    • \n {\n pageNr !== '...'\n ? \n : { pageNr }\n }\n
    • \n ))\n }\n {\n selectedPage < totalNrOfPages && totalNrOfPages > 5\n ? (\n
    • \n \n
    • \n )\n : null\n }\n
    \n )\n : null\n }\n
    \n );\n }\n}\n","import { createContext } from 'react';\n\nexport const tableContext = createContext();\n","import React, { useState, useContext } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { tableContext } from '../tableContext';\nimport Icon from '../../Icon';\n\nexport const HeaderCell = ({ column }) => {\n const { sortable } = column;\n const [sortOrder, setSortOrder] = useState(sortable?.default || 'ASC');\n const { state, sendMessage } = useContext(tableContext);\n return (\n {\n sendMessage('sort', { column, sortOrder });\n setSortOrder(sortOrder === 'ASC' ? 'DESC' : 'ASC');\n } : null}\n className={state.maxHeight ? 'fixed-header' : ''}\n >\n {column.name}\n {column.sortable && (\n \n \n \n )}\n \n );\n};\n\nHeaderCell.propTypes = {\n column: PropTypes.instanceOf(Object),\n};\n","import React, { useContext, useState } from 'react';\nimport { HeaderCell } from './header-cell';\nimport { tableContext } from '../tableContext';\n\nexport const Header = () => {\n const [selectAll, setSelectAll] = useState(false);\n const { state, sendMessage } = useContext(tableContext);\n const { columns, selectable } = state;\n\n const generateHeaders = () => columns.map(column => (\n \n ));\n\n const generateSelectable = () => {\n if (!selectable) {\n return;\n }\n const Component = selectable.type;\n // eslint-disable-next-line consistent-return\n return (\n \n {selectable?.allowSelectAll ? (\n
    \n {\n setSelectAll(!selectAll);\n sendMessage('header.selectAll.click', selectAll);\n }}\n onChange={(v) => {\n sendMessage('header.selectAll.change', v);\n }}\n >\n {selectable.values?.value}\n \n
    \n ) : (\n selectable.name || 'Select'\n )}\n \n );\n };\n\n return (\n \n \n {selectable && selectable.position === 'LEFT' && generateSelectable()}\n {generateHeaders()}\n {selectable && selectable.position === 'RIGHT' && generateSelectable()}\n \n \n );\n};\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\n\n/**\n * - Checkboxes are used when a user needs to select one or more values from a series of options.\n * - They can be also be used as a binary toggle but consider radio instead.\n * - Can be used with Formik respectively (FormikCheckbox)\n */\nexport default class Checkbox extends Component {\n static propTypes = {\n /** Disable a checkbox */\n disabled: PropTypes.bool,\n /** Readonly prop behaves the same as disable on checkboxes */\n readOnly: PropTypes.bool,\n /** Align checkbox with in same line with other elements */\n inline: PropTypes.bool,\n /** Set a theme for checkbox */\n theme: PropTypes.string,\n /** Set an error state for checkbox if boolean will show just icon without message */\n error: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.bool,\n ]),\n /** Adds additional information under the checkbox element */\n note: PropTypes.string,\n input: PropTypes.instanceOf(Object),\n /** Adds a label to checkbox */\n label: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.func,\n PropTypes.string,\n ]),\n /** Set a name for checkbox */\n name: PropTypes.string,\n /** Set initial value for checkbox */\n value: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.bool,\n ]),\n /** Make checkbox checked by default */\n checked: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.bool,\n ]),\n /** Callback function executed on change of checkbox */\n onChange: PropTypes.func,\n /** CSS classes added to the wrapper of the component */\n wrapperClassName: PropTypes.string,\n };\n\n getCssClasses() {\n const {\n inline, disabled, readOnly, theme = '', wrapperClassName = '',\n } = this.props;\n\n const cssClasses = [wrapperClassName];\n\n cssClasses.push('tyk-checkbox');\n\n if (inline) {\n cssClasses.push('tyk-checkbox--inline');\n }\n\n if (theme.trim()) {\n cssClasses.push(...theme.split(' ').map(t => `tyk-checkbox--theme-${t}`));\n }\n\n if (disabled || readOnly) {\n cssClasses.push('tyk-checkbox--is-disabled');\n }\n\n return cssClasses.join(' ');\n }\n\n displayError() {\n const { error } = this.props;\n if (!error) return null;\n\n return (\n

    \n {error}\n

    \n );\n }\n\n displayNote() {\n const { note } = this.props;\n if (!note) return null;\n\n return (\n

    \n {note}\n

    \n );\n }\n\n render() {\n const {\n input, value, label, ...rest\n } = this.props;\n return (\n \n
    \n \n {this.displayNote()}\n {this.displayError()}\n
    \n \n );\n }\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nexport const Cell = ({ col, row }) => {\n if (!row.values[col.id]) {\n return ;\n }\n\n if (col.type === 'string') {\n return (\n // eslint-disable-next-line jsx-a11y/click-events-have-key-events\n \n {row.values[col.id]?.value}\n \n );\n }\n const Component = col.type;\n return (\n \n \n {row.values[col.id].children ? row.values[col.id].children : null}\n
    \n \n );\n};\n\nCell.propTypes = {\n col: PropTypes.instanceOf(Object),\n row: PropTypes.instanceOf(Object),\n index: PropTypes.number,\n};\n","import React, { useContext } from 'react';\nimport PropTypes from 'prop-types';\nimport Checkbox from '../../../form/components/Checkbox';\nimport { Cell } from './cell';\nimport { tableContext } from '../tableContext';\n\nexport const Row = ({ row, index }) => {\n const { state, sendMessage } = useContext(tableContext);\n const { columns, selectable } = state;\n\n const SelectableCheckbox = () => (\n \n sendMessage('row.selected', { index, selected: v })}\n />\n \n );\n\n return (\n \n {selectable && selectable.position === 'LEFT' && SelectableCheckbox()}\n {columns.map(col => (\n \n ))}\n {selectable && selectable.position === 'RIGHT' && SelectableCheckbox()}\n \n );\n};\n\nRow.propTypes = {\n row: PropTypes.instanceOf(Object),\n index: PropTypes.number,\n};\n","import React, { useContext } from 'react';\nimport { tableContext } from '../tableContext';\nimport { Row } from './row';\n\n\nexport const Body = () => {\n const { state } = useContext(tableContext);\n const { rows } = state;\n\n return (\n \n {\n // eslint-disable-next-line react/no-array-index-key\n rows.map((row, i) => )\n }\n \n );\n};\n","import React, { useState, useEffect, useRef } from 'react';\nimport PropTypes from 'prop-types';\nimport Message from '../Message';\nimport Pagination from '../../form/components/Pagination';\nimport Loader from '../Loader';\nimport InfiniteScroller from '../InfiniteScroller';\nimport { Header } from './js/header';\nimport { Body } from './js/body';\nimport { tableContext } from './tableContext';\n\n/**\n * This is tyk's table component used to render a data in a tabular view.\n * See the example configuration object below to understand how to hydrate the table component\n */\n\nfunction Table({\n value, onChange, noDataMessage, loading, infiniteScrolling,\n}) {\n const [state, setState] = useState(null);\n const [onChangeMsg, setOnChangeMsg] = useState('api');\n const itemsListRef = useRef(null);\n const sortRows = (col, sortOrder) => {\n setState({\n ...state,\n sort: {\n order: sortOrder,\n col,\n },\n });\n };\n\n const selectAllRows = (data) => {\n setState({\n ...state,\n rows: state.rows.map((row) => ({ ...row, selected: data })),\n });\n };\n\n const selectRow = (data) => {\n const { index, selected } = data;\n const selectedRow = state.rows[index];\n \n setState({\n ...state,\n rows: [\n ...state.rows.slice(0, index),\n { ...selectedRow, selected },\n ...state.rows.slice(index + 1),\n ],\n });\n };\n\n const setPagination = (data) => {\n setState({\n ...state,\n pagination: {\n ...state.pagination,\n current: data + 1,\n },\n });\n };\n\n const api = {\n getState: () => state,\n setState: (newState) => setState(newState),\n };\n\n const sendMessage = (message, data) => {\n setOnChangeMsg(message);\n if (message === 'sort') {\n sortRows(data.column.id, data.sortOrder);\n }\n\n if (message === 'header.selectAll.click') {\n selectAllRows(data);\n }\n\n if (message === 'header.selectAll.change') {\n selectAllRows(data);\n }\n\n if (message === 'row.selected') {\n selectRow(data);\n }\n\n if (message === 'pagination.change') {\n setPagination(data);\n }\n };\n\n useEffect(() => setState(value), [value]);\n useEffect(() => {\n if (onChange) {\n onChange(onChangeMsg, state, api);\n }\n setOnChangeMsg('api');\n }, [state]);\n\n if (!state) {\n return ;\n }\n\n if (state.rows <= 0) {\n return {noDataMessage || 'No Data Available'};\n }\n\n const getTable = () => (\n \n
    \n \n
    \n );\n\n\n return (\n \n
    \n {\n loading && \n }\n {\n infiniteScrolling && state.pagination\n ? (\n state.pagination.current}\n loadMore={(num) => sendMessage('pagination.change', num)}\n pageNumber={state.pagination.current - 1}\n initialLoad={false}\n >\n { getTable() }\n \n )\n : getTable()\n }\n
    \n {state.pagination && !infiniteScrolling && (\n
    \n sendMessage('pagination.change', num)}\n />\n
    \n )}\n
    \n );\n}\n\nTable.propTypes = {\n /** Configuration object used to render the component */\n value: PropTypes.shape({\n /** Configuration for table columns */\n columns: PropTypes.arrayOf(PropTypes.shape({\n /** Unique id of the column */\n id: PropTypes.string.isRequired,\n /** Name of the column */\n name: PropTypes.string,\n /** Type of column, String by default */\n type: PropTypes.oneOfType([\n /** Just renders cell data of type strings */\n PropTypes.string,\n /** Render cell of elements (eg. Input / Button) */\n PropTypes.element,\n /** Render a custom function/component */\n PropTypes.func,\n ]),\n sortable: PropTypes.oneOfType([\n /** Make Column sortable */\n PropTypes.bool,\n /** Configure sorting behaviour */\n PropTypes.shape({\n /** Set default sorting direction ASC / DESC */\n default: PropTypes.string,\n }),\n ]),\n })),\n /** Configuration for table rows */\n rows: PropTypes.arrayOf(PropTypes.shape({})),\n /** Configuration to make table rows selectable */\n selectable: PropTypes.shape({}),\n /** Renders pagination for table if the object is missing / empty no pagination is rendered. */\n pagination: PropTypes.shape({}),\n /** Sets maximum height for table container. */\n maxHeight: PropTypes.string,\n /** Styling for the table container. */\n styling: PropTypes.shape({\n /** It's recommended to add styles to a class and pass the class in this object */\n className: PropTypes.string,\n }),\n }).isRequired,\n /** Callback executed with message and value when there are changes on table */\n onChange: PropTypes.func,\n /** Renders a component with the given message when `config.rows` is empty */\n noDataMessage: PropTypes.string,\n /** Show placeholder loader */\n loading: PropTypes.bool,\n /** Adds infinite scroller on page and calls `onChange` with `pagination.change` message */\n infiniteScrolling: PropTypes.bool,\n};\n\nTable.defaultProps = {\n loading: false,\n infiniteScrolling: false,\n noDataMessage: 'No Data Available',\n onChange: null,\n};\n\nexport default Table;\n","import React, { PureComponent } from 'react';\nimport PropTypes from 'prop-types';\n\n/**\n * Column component.\n */\nclass Column extends PureComponent {\n static propTypes = {\n /**\n * This property describes how the column element will be aligned vertically\n * within a Row: bottom, center, top\n */\n align: PropTypes.string,\n /** Css classes that can be passed to the column element */\n className: PropTypes.string,\n /**\n * ID that can be passed to the column element\n */\n id: PropTypes.string,\n /**\n * Specifies the size of the column within a Row (values must be between 1 - 12)\n */\n size: PropTypes.string.isRequired,\n /**\n * Specifies the left gap a column can have within a Row (values must be between 1 - 12)\n */\n offset: PropTypes.string,\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.string,\n PropTypes.object,\n PropTypes.node,\n ]),\n };\n\n getCssClasses() {\n const {\n align, className, offset, size,\n } = this.props;\n const colSize = size.split(' ');\n const colOffsets = offset ? offset.split(' ') : [];\n\n let cssClasses = colSize.map(cSize => `tyk-col--${cSize}`);\n const offsets = colOffsets.map(cOffset => `tyk-col--offset-${cOffset}`);\n\n if (align) {\n cssClasses.push(`tyk-col--align-${align}`);\n }\n\n if (className) {\n cssClasses = cssClasses.concat(className.split(' '));\n }\n\n cssClasses.push('tyk-col');\n cssClasses = cssClasses.concat(offsets || []);\n\n return cssClasses.join(' ');\n }\n\n render() {\n const { children, id, ...props } = this.props;\n\n return (\n
    \n { children }\n
    \n );\n }\n}\n\nexport default Column;\n","import React, { PureComponent } from 'react';\nimport PropTypes from 'prop-types';\n\n\n/** Row component which must be always present as a wrapper for Columns */\nexport default class Row extends PureComponent {\n static propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n ]),\n /** Css classes that can be passed to the Row element */\n className: PropTypes.string,\n /** Removes all the spaces between column */\n nogutters: PropTypes.bool,\n }\n\n getCssClasses() {\n const { className, nogutters } = this.props;\n let cssClass = ['tyk-row'];\n\n if (nogutters) {\n cssClass.push('no-gutters');\n cssClass.push('tyk-row--gutterless');\n }\n\n if (className) {\n cssClass = cssClass.concat(className.split(' '));\n }\n\n return cssClass.join(' ');\n }\n\n render() {\n const {\n children,\n nogutters,\n ...rest\n } = this.props;\n\n return (\n
    \n { children }\n
    \n );\n }\n}\n","import { createContext } from 'react';\n\nexport const DropdownContext = createContext();\n","import React, { cloneElement, useCallback } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { DropdownContext } from '../dropdown-context';\nimport Icon from '../../../../components/Icon';\n\nfunction DropdownItem(props) {\n const {\n customdropdownitem,\n children,\n eventKey,\n href,\n target,\n title,\n onClick,\n } = props;\n const dropdownItemCLick = useCallback((dropdownContext, itemProps) => {\n dropdownContext.onSelectItem(eventKey, itemProps);\n\n if (onClick) onClick(eventKey);\n }, []);\n\n return (\n \n {\n (dropdownContext) => (\n dropdownItemCLick(dropdownContext, props)}\n onKeyUp={() => {}}\n >\n {\n customdropdownitem\n ? cloneElement(customdropdownitem, {})\n : (\n \n {\n eventKey\n && dropdownContext.selectedItem === eventKey\n && dropdownContext.showCheckmark\n ? \n : null\n }\n \n {title || children}\n \n \n )\n }\n \n )\n }\n \n );\n}\n\nDropdownItem.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]),\n customdropdownitem: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n ]),\n eventKey: PropTypes.string,\n href: PropTypes.string,\n target: PropTypes.string,\n onClick: PropTypes.func,\n title: PropTypes.string,\n};\n\nexport default DropdownItem;\n","import React, {\n Component, createRef,\n} from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport DropdownItem from './js/DropdownItem';\nimport Button from '../../../components/Button';\nimport { DropdownContext } from './dropdown-context';\n\nclass Dropdown extends Component {\n static isElemInRightView(el, dropdownWidth) {\n const windowWidth = window.innerWidth;\n const offset = el.getBoundingClientRect();\n const elemRight = offset.left + dropdownWidth;\n\n return elemRight <= windowWidth;\n }\n\n static isElemInBottomView(el, dropdownHeight) {\n const windowHeight = window.innerHeight;\n const offset = el.getBoundingClientRect();\n const elHeight = el.clientHeight;\n const elemBottom = offset.top + elHeight + dropdownHeight;\n\n return elemBottom <= windowHeight;\n }\n\n constructor(props) {\n super(props);\n\n const {\n selectedItem,\n open,\n } = this.props;\n\n this.state = {\n opened: open,\n selectedItem: selectedItem || null,\n };\n\n this.dropdownRef = createRef();\n this.dropdownListRef = createRef();\n this.dropdownButtonRef = createRef();\n this.onSelectItem = this.onSelectItem.bind(this);\n this.toggleDropdown = this.toggleDropdown.bind(this);\n this.handleClickOutside = this.handleClickOutside.bind(this);\n }\n\n componentDidMount() {\n document.addEventListener('mousedown', this.handleClickOutside);\n\n if (this.dropdownListRef.current) {\n this.getStyles();\n }\n }\n\n componentDidUpdate(prevProps) {\n const {\n open,\n } = this.props;\n const {\n opened,\n } = this.state;\n\n if (this.dropdownListRef.current) {\n this.getStyles();\n }\n\n if (\n !prevProps.open\n && open === true\n && !opened\n ) {\n this.toggleDropdown();\n }\n\n if (\n prevProps.open\n && open === false\n && opened\n ) {\n this.closeDropdown();\n }\n }\n\n componentWillUnmount() {\n document.removeEventListener('mousedown', this.handleClickOutside);\n }\n\n handleClickOutside(event) {\n if (\n this.dropdownListRef.current && !this.dropdownListRef.current.contains(event.target)\n && this.dropdownRef.current && !this.dropdownRef.current.contains(event.target)\n ) {\n this.closeDropdown();\n }\n }\n\n onSelectItem(itemId, itemProps) {\n const { closeOnSelect, onSelect } = this.props;\n const changes = {\n selectedItem: itemId,\n selectedItemProps: itemProps,\n };\n\n if (closeOnSelect) {\n changes.opened = false;\n }\n\n this.setState(changes);\n\n if (onSelect && typeof onSelect === 'function') {\n onSelect(itemId);\n }\n }\n\n getStyles() {\n const {\n display,\n position,\n offset,\n } = this.props;\n\n const dropdownEl = this.dropdownListRef.current;\n\n if (offset) {\n dropdownEl.style.top = `${offset.top}`;\n dropdownEl.style.left = `${offset.left}`;\n return;\n }\n\n const scrollTop = Math.max(\n document.documentElement.scrollTop,\n document.body.scrollTop,\n window.scrollY,\n );\n const el = this.dropdownRef.current;\n const elHeight = el.clientHeight;\n const dropdownHeight = dropdownEl ? dropdownEl.clientHeight : 0;\n const dropdownWidth = dropdownEl ? dropdownEl.clientWidth : 0;\n const offsetPosition = el.getBoundingClientRect();\n const { left, top } = offsetPosition;\n let customTop = 0;\n let customLeft = left;\n\n // calculate top position, depending on the element position on the page\n if (Dropdown.isElemInBottomView(el, dropdownHeight)) {\n customTop = top + scrollTop + elHeight;\n } else {\n customTop = top + scrollTop - dropdownHeight - 5;\n }\n\n if (Dropdown.isElemInRightView(el, dropdownWidth)) {\n customLeft = left;\n } else {\n customLeft = left + el.clientWidth - dropdownWidth;\n }\n\n if (position !== 'relative') {\n dropdownEl.style.top = `${customTop}px`;\n if (display !== 'block') {\n dropdownEl.style.left = `${customLeft}px`;\n }\n }\n if (display !== 'block') {\n dropdownEl.style.minWidth = `${this.dropdownButtonRef.current.clientWidth}px`;\n }\n }\n\n getWrapperCssClasses() {\n const {\n btnGroup,\n btnGroupSize,\n className,\n btnTheme,\n wrapperClassName = '',\n } = this.props;\n let cssClasses = [wrapperClassName, 'tyk-dropdown'];\n\n cssClasses.push(`theme-${btnTheme || 'default'}`);\n\n if (className) {\n cssClasses = cssClasses.concat(className.split(' '));\n }\n\n if (btnGroup) {\n cssClasses.push('tyk-button-group');\n cssClasses.push(btnGroupSize ? `tyk-button-group--${btnGroupSize}` : 'tyk-button-group--md');\n }\n\n return cssClasses.join(' ');\n }\n\n getCssClasses() {\n const {\n opened,\n } = this.state;\n const {\n hasCustomContent,\n display,\n listclassnames,\n position,\n maxHeight,\n } = this.props;\n let cssClasses = ['tyk-dropdown-menu', 'tyk-dropdown'];\n\n if (maxHeight) {\n cssClasses.push('tyk-dropdown--scrollable');\n }\n\n if (opened) {\n cssClasses.push('opened');\n }\n\n if (listclassnames) {\n cssClasses = cssClasses.concat(listclassnames.split(' '));\n }\n\n if (display) {\n cssClasses.push('tyk-dropdown--block');\n }\n\n if (hasCustomContent) {\n cssClasses.push('tyk-dropdown--custom');\n }\n\n if (position === 'relative') {\n cssClasses.push('tyk-dropdown--relative');\n }\n\n return cssClasses.join(' ');\n }\n\n getBtnTitle() {\n const { btnTitle, stopButtonTextChange } = this.props;\n const { selectedItemProps } = this.state;\n\n if (!stopButtonTextChange && selectedItemProps && selectedItemProps.title) {\n return selectedItemProps.title;\n }\n\n return btnTitle;\n }\n\n closeDropdown() {\n const { onClose } = this.props;\n\n this.setState({\n opened: false,\n }, () => {\n if (onClose) {\n onClose();\n }\n });\n }\n\n toggleDropdown() {\n const {\n opened,\n } = this.state;\n if (opened) {\n this.closeDropdown();\n\n return;\n }\n\n this.setState({\n opened: true,\n });\n }\n\n render() {\n const {\n appendTo,\n btnClassName,\n btnSize,\n customBtnTitle,\n hasCustomContent,\n btnTheme,\n children,\n label,\n showDropdownIcon,\n showTriggerButton,\n showCheckmark,\n disabled = false,\n maxHeight,\n } = this.props;\n const {\n selectedItem,\n opened,\n } = this.state;\n const DropdownWrapperTag = hasCustomContent ? 'div' : 'ul';\n return (\n \n {\n label\n ? (\n \n )\n : null\n }\n {\n showTriggerButton\n ? (\n \n { customBtnTitle || this.getBtnTitle() }\n \n )\n : null\n }\n {\n opened\n ? ReactDOM.createPortal(\n \n {\n opened\n ? (\n \n {\n (typeof children === 'function')\n ? children({\n closeDropdown: this.closeDropdown.bind(this),\n })\n : children\n }\n \n )\n : null\n }\n ,\n document.querySelector(appendTo || 'body'),\n )\n : null\n }\n \n );\n }\n}\n\nDropdown.propTypes = {\n appendTo: PropTypes.string,\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n PropTypes.func,\n ]),\n closeOnSelect: PropTypes.bool,\n btnClassName: PropTypes.string,\n btnSize: PropTypes.string,\n btnGroupSize: PropTypes.string,\n btnTheme: PropTypes.string,\n btnTitle: PropTypes.oneOfType([\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n customBtnTitle: PropTypes.oneOfType([\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n btnGroup: PropTypes.bool,\n className: PropTypes.string,\n display: PropTypes.string,\n disabled: PropTypes.bool,\n hasCustomContent: PropTypes.bool,\n label: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.func,\n PropTypes.string,\n ]),\n listclassnames: PropTypes.string,\n onClose: PropTypes.func,\n onSelect: PropTypes.func,\n open: PropTypes.bool,\n offset: PropTypes.instanceOf(Object),\n position: PropTypes.string,\n selectedItem: PropTypes.string,\n showDropdownIcon: PropTypes.bool,\n stopButtonTextChange: PropTypes.bool,\n showTriggerButton: PropTypes.bool,\n showCheckmark: PropTypes.bool,\n maxHeight: PropTypes.string,\n wrapperClassName: PropTypes.string,\n};\n\nDropdown.defaultProps = {\n closeOnSelect: false,\n showDropdownIcon: true,\n showTriggerButton: true,\n showCheckmark: true,\n open: false,\n};\n\nDropdown.Item = DropdownItem;\n\nexport default Dropdown;\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"react-ace\");","import React, { useCallback } from 'react';\nimport PropTypes from 'prop-types';\n\nimport ace from 'ace-builds/src-noconflict/ace';\nimport AceEditor from 'react-ace';\nimport 'ace-builds/src-noconflict/mode-javascript';\nimport 'ace-builds/src-noconflict/mode-golang';\nimport 'ace-builds/src-noconflict/mode-python';\nimport 'ace-builds/src-noconflict/mode-css';\nimport 'ace-builds/src-noconflict/mode-json';\nimport 'ace-builds/src-noconflict/mode-xml';\nimport 'ace-builds/src-noconflict/mode-jsx';\nimport 'ace-builds/src-noconflict/ext-searchbox';\nimport 'ace-builds/src-noconflict/ext-beautify';\nimport 'ace-builds/src-noconflict/theme-github';\nimport jsonWorker from 'ace-builds/src-noconflict/worker-json';\n\nace.config.setModuleUrl('ace/mode/json_worker', jsonWorker);\n\nfunction CodeEditor(props) {\n const {\n disabled,\n readOnly,\n disableValidation,\n id,\n error,\n label,\n labelwidth,\n note,\n onBlur,\n onChange,\n theme,\n value,\n setOptions,\n wrapperClassName,\n } = props;\n const classes = [\n 'tyk-form-group',\n wrapperClassName,\n ...(theme ? theme.split(' ').map((t) => `tyk-form-group--${t}`) : []),\n labelwidth && 'tyk-form-group--label-has-width',\n error && 'has-error',\n ].filter(Boolean).join(' ');\n\n const finalSetOptions = {\n ...setOptions,\n ...disableValidation && { useWorker: false },\n };\n\n const getCodeEditorError = useCallback(() => (\n error && error !== 'true' && error !== 'false'\n ? (\n

    \n {error}\n

    \n )\n : null\n ), [error]);\n\n const getLabelStyles = useCallback(() => {\n if (labelwidth) return { flexBasis: labelwidth };\n return {};\n }, [labelwidth]);\n\n const getNonLabelWidth = useCallback(() => {\n if (labelwidth) return { flexBasis: `calc(100% - ${labelwidth} - 20px)` };\n return {};\n }, [labelwidth]);\n\n const handleOnChange = useCallback((newValue) => {\n if (onChange) onChange(newValue);\n }, [onChange]);\n\n const handleOnBlur = useCallback(() => {\n if (onBlur) onBlur(value);\n }, [onBlur, value]);\n\n return (\n
    \n {\n label\n ? \n : null\n }\n
    \n {\n // eslint-disable-next-line\n editorInstance.container.style.resize = 'both';\n // mouseup = css resize end\n document.addEventListener('mouseup', () => (\n editorInstance.resize()\n ));\n }}\n setOptions={finalSetOptions}\n />\n {\n note\n ?

    { note }

    \n : null\n }\n { getCodeEditorError() }\n
    \n
    \n );\n}\n\nCodeEditor.propTypes = {\n disabled: PropTypes.bool,\n readOnly: PropTypes.bool,\n disableValidation: PropTypes.bool,\n id: PropTypes.string,\n error: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.bool,\n ]),\n label: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.func,\n PropTypes.string,\n ]),\n labelwidth: PropTypes.string,\n mode: PropTypes.string,\n name: PropTypes.string,\n note: PropTypes.string,\n onBlur: PropTypes.func,\n onChange: PropTypes.func,\n theme: PropTypes.string,\n value: PropTypes.string,\n setOptions: PropTypes.instanceOf(Object),\n wrapperClassName: PropTypes.string,\n};\n\nexport default CodeEditor;\n","import React, { Component, Fragment, createRef } from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\n\nimport Icon from '../../../components/Icon';\nimport Button from '../../../components/Button';\n\nconst getStateSelectedValues = (multiple, tags, value) => {\n if (!value) {\n return (multiple || tags) ? [] : null;\n }\n\n return value;\n};\n\nexport default class Combobox extends Component {\n static closeList() {\n return {\n cursor: -1,\n opened: false,\n };\n }\n\n static openList() {\n return {\n opened: true,\n };\n }\n\n static filterByName(itemValue, inputValue) {\n return itemValue.name.toLowerCase().indexOf(inputValue) > -1;\n }\n\n static propTypes = {\n allowCustomValues: PropTypes.bool,\n CustomListComponent: PropTypes.elementType,\n searchItem: PropTypes.func,\n disabled: PropTypes.bool,\n error: PropTypes.string,\n id: PropTypes.string,\n label: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.func,\n PropTypes.string,\n ]),\n labelwidth: PropTypes.string,\n multiple: PropTypes.bool,\n max: PropTypes.number,\n note: PropTypes.oneOfType([\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n onChange: PropTypes.func,\n placeholder: PropTypes.string,\n tags: PropTypes.bool,\n theme: PropTypes.string,\n value: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.instanceOf(Object),\n PropTypes.instanceOf(Array),\n ]),\n values: PropTypes.instanceOf(Array),\n };\n\n static defaultProps = {\n allowCustomValues: true,\n };\n\n constructor(props) {\n super(props);\n const {\n multiple,\n tags,\n value,\n } = props;\n\n this.state = {\n cursor: -1,\n opened: false,\n width: 50,\n initialValue: value,\n stateSelectedValues: getStateSelectedValues(multiple, tags, value),\n searchText: '',\n tags,\n };\n\n this.comboboxRef = createRef();\n this.valuesListRef = createRef();\n this.inputRef = createRef();\n this.textRef = createRef();\n\n this.focusInput = this.focusInput.bind(this);\n this.onKeyUp = this.onKeyUp.bind(this);\n Combobox.openList = Combobox.openList.bind(this);\n this.handleClickOutside = this.handleClickOutside.bind(this);\n this.handleItemsNavigation = this.handleItemsNavigation.bind(this);\n this.handleComboboxDropdownClick = this.handleComboboxDropdownClick.bind(this);\n this.handleListItemClick = this.handleListItemClick.bind(this);\n this.handlePillRemoveClick = this.handlePillRemoveClick.bind(this);\n this.manageSelectedTags = this.manageSelectedTags.bind(this);\n }\n\n componentDidMount() {\n const { tags } = this.props;\n\n if (tags) {\n this.setInputWidth();\n }\n\n this.bindEvents();\n }\n\n componentWillUnmount() {\n this.unBindEvents();\n }\n\n static getDerivedStateFromProps(nextProps, prevState) {\n if (\n JSON.stringify(nextProps.value) !== JSON.stringify(prevState.initialValue)\n || nextProps.tags !== prevState.tags\n ) {\n return {\n initialValue: nextProps.value,\n stateSelectedValues: getStateSelectedValues(\n nextProps.multiple,\n nextProps.tags,\n nextProps.value,\n ),\n tags: nextProps.tags,\n };\n }\n\n return null;\n }\n\n onKeyUp(e) {\n const { tags, allowCustomValues } = this.props;\n const { cursor, opened } = this.state;\n const filteredValues = this.filterValues();\n let tempState = Object.assign({}, this.getSearchText());\n\n if (tags && e.key !== 'Escape') {\n tempState = Object.assign({}, tempState, this.setInputWidth());\n }\n\n if (e.key === 'Enter') {\n const methodName = (tags) ? 'manageSelectedTags' : 'manageSelectedValues';\n tempState = Object.assign({}, tempState, this[methodName](cursor));\n }\n\n if (allowCustomValues && !e.key === ' ' && tags) {\n tempState = Object.assign({}, tempState, this.manageSelectedTags());\n }\n\n if (\n !opened\n && this.inputRef.current.value\n && filteredValues\n && filteredValues.length\n && e.key !== 'Escape'\n ) {\n tempState = Object.assign({}, tempState, Combobox.openList());\n }\n\n if (e.key === 'Escape' && opened) {\n tempState = Object.assign({}, tempState, Combobox.closeList());\n }\n\n if (opened && filteredValues && !filteredValues.length) {\n tempState = Object.assign({}, tempState, Combobox.closeList());\n }\n\n this.setState(previousState => Object.assign({}, previousState, tempState));\n }\n\n getLabelStyles() {\n const { labelwidth } = this.props;\n const styles = {};\n\n if (labelwidth) {\n styles.flexBasis = labelwidth;\n }\n\n return styles;\n }\n\n getNonLabelWidth() {\n const { labelwidth } = this.props;\n const styles = {};\n\n if (labelwidth) {\n styles.flexBasis = `calc(100% - ${labelwidth} - 20px)`;\n }\n\n return styles;\n }\n\n setInputWidth() {\n return {\n width: 50 + this.textRef.current.offsetWidth,\n };\n }\n\n getSelectedIndex(value) {\n const { stateSelectedValues } = this.state;\n let position = -1;\n\n if (Array.isArray(stateSelectedValues)) {\n stateSelectedValues.forEach((item, index) => {\n if (item.id === value.id) {\n position = index;\n }\n });\n } else if (stateSelectedValues) {\n if (stateSelectedValues.id === value.id) {\n position = 0;\n }\n }\n\n return position;\n }\n\n getSearchText() {\n return {\n searchText: this.inputRef.current.value,\n };\n }\n\n getListItemCssClasses(value, index) {\n const cssClasses = [];\n const {\n cursor,\n } = this.state;\n\n if (cursor === index) {\n cssClasses.push('active');\n }\n\n if (value.disabled) {\n cssClasses.push('disabled');\n }\n\n return cssClasses.join(' ');\n }\n\n getComboboxListCssClass() {\n const { opened } = this.state;\n const { tags, theme } = this.props;\n const themes = theme ? theme.split(' ') : [];\n\n const cssClasses = ['tyk-combobox__list'];\n\n if (opened) {\n cssClasses.push('tyk-combobox__list--opened');\n }\n\n if (tags) {\n cssClasses.push('tyk-combobox__list--has-tags');\n }\n\n if (themes.length) {\n themes.forEach((iTheme) => {\n cssClasses.push(`tyk-form-group--${iTheme}`);\n });\n }\n\n return cssClasses.join(' ');\n }\n\n getCssClasses() {\n const {\n error, disabled, theme, labelwidth,\n } = this.props;\n const cssClasses = ['tyk-form-group', 'tyk-combobox'];\n const themes = theme ? theme.split(' ') : [];\n\n if (error) {\n cssClasses.push('has-error');\n }\n\n if (labelwidth) {\n cssClasses.push('tyk-form-group--label-has-width');\n }\n\n if (themes.length) {\n themes.forEach((iTheme) => {\n cssClasses.push(`tyk-form-group--${iTheme}`);\n });\n }\n\n if (disabled) {\n cssClasses.push('disabled');\n }\n\n return cssClasses.join(' ');\n }\n\n getInputError() {\n const { error } = this.props;\n\n return (error && error !== 'true' && error !== 'false')\n ? (\n \n { error }\n

    \n )\n : null;\n }\n\n getStyles() {\n const { scrollTop } = document.documentElement;\n const el = this.comboboxRef.current;\n const elHeight = el.offsetHeight;\n const elWidth = el.offsetWidth;\n\n const offset = el.getBoundingClientRect();\n const { left } = offset;\n let top = 0;\n\n top = offset.top + scrollTop + elHeight;\n\n return {\n top: `${top - 1}px`,\n left: `${left}px`,\n width: `${elWidth}px`,\n };\n }\n\n getComboboxDisplayData() {\n const { stateSelectedValues } = this.state;\n const { multiple, placeholder, values } = this.props;\n\n if (!stateSelectedValues) {\n return placeholder;\n }\n\n if (stateSelectedValues && Array.isArray(stateSelectedValues) && !stateSelectedValues.length) {\n return placeholder;\n }\n\n if (stateSelectedValues && !Array.isArray(stateSelectedValues) && !stateSelectedValues.id) {\n return placeholder;\n }\n\n if (Array.isArray(stateSelectedValues) && multiple) {\n return stateSelectedValues.reduce((prevValue, value, index) => prevValue + value.name + ((index !== stateSelectedValues.length - 1) ? ', ' : ''), '');\n }\n\n if (\n values\n && values.length\n && !Array.isArray(stateSelectedValues) && !stateSelectedValues.name\n ) {\n return values.filter(value => value.id === stateSelectedValues.id)[0].name;\n }\n\n return stateSelectedValues.name;\n }\n\n manageSelectedTags(index) {\n const { max, allowCustomValues } = this.props;\n const { stateSelectedValues } = this.state;\n const filteredValues = this.filterValues();\n const value = { id: this.inputRef.current.value, name: this.inputRef.current.value };\n\n if (allowCustomValues === false && index === -1) {\n return null;\n }\n\n const tempValue = filteredValues[index] || value;\n const selectedIndex = this.getSelectedIndex(tempValue);\n let selectedValues = {};\n\n this.inputRef.current.value = '';\n\n if (selectedIndex > -1 && this.isInInitialValues(tempValue)) {\n selectedValues = this.removeSelectedValue(selectedIndex);\n } else if (selectedIndex === -1) {\n if (max && stateSelectedValues.length >= max) {\n return selectedValues;\n }\n selectedValues = this.addSelectedValue(tempValue);\n }\n\n return selectedValues;\n }\n\n manageSelectedValues(index) {\n const { stateSelectedValues } = this.state;\n const {\n multiple, onChange, max,\n } = this.props;\n const filteredValues = this.filterValues();\n const tempSelectedValues = filteredValues[index];\n let selectedValues;\n const selectedIndex = this.getSelectedIndex(tempSelectedValues);\n\n if (tempSelectedValues && multiple) {\n if (selectedIndex > -1) {\n selectedValues = this.removeSelectedValue(selectedIndex);\n } else {\n if (max && stateSelectedValues.length >= max) {\n return selectedValues;\n }\n selectedValues = this.addSelectedValue(filteredValues[index]);\n }\n\n // tempSelectedValues = stateSelectedValues;\n } else {\n selectedValues = {\n stateSelectedValues: (selectedIndex === -1) ? tempSelectedValues : { id: null },\n };\n\n if (onChange && typeof onChange === 'function') {\n onChange((selectedIndex === -1) ? tempSelectedValues : null);\n }\n }\n\n return selectedValues;\n }\n\n removeSelectedValue(index) {\n const { stateSelectedValues } = this.state;\n const { onChange } = this.props;\n const tempStateSelectedValues = JSON.parse(JSON.stringify(stateSelectedValues));\n\n tempStateSelectedValues.splice(index, 1);\n\n if (onChange && typeof onChange === 'function') {\n onChange(tempStateSelectedValues.length ? tempStateSelectedValues : null);\n }\n\n return {\n stateSelectedValues: tempStateSelectedValues,\n searchText: '',\n };\n }\n\n addSelectedValue(value) {\n const { stateSelectedValues } = this.state;\n const { onChange } = this.props;\n const tempStateSelectedValues = JSON.parse(JSON.stringify(stateSelectedValues));\n\n tempStateSelectedValues.push(value);\n\n if (onChange && typeof onChange === 'function') {\n onChange(tempStateSelectedValues.length ? tempStateSelectedValues : null);\n }\n\n return {\n stateSelectedValues: tempStateSelectedValues,\n searchText: '',\n };\n }\n\n isInInitialValues(value) {\n const { values } = this.props;\n let ok = false;\n\n values.forEach((item) => {\n if (value.id === item.id) {\n ok = true;\n }\n });\n\n return ok;\n }\n\n filterValues() {\n const { values, searchItem } = this.props;\n\n if (!this.inputRef.current) {\n return values;\n }\n\n const arr = values\n .filter(\n value => (searchItem\n ? searchItem(value, this.inputRef.current.value.toLowerCase())\n : Combobox.filterByName(value, this.inputRef.current.value.toLowerCase())),\n );\n\n return arr;\n }\n\n bindEvents() {\n document.addEventListener('mousedown', this.handleClickOutside);\n }\n\n unBindEvents() {\n document.removeEventListener('mousedown', this.handleClickOutside);\n }\n\n handleItemsNavigation(e) {\n const { tags } = this.props;\n if (['ArrowDown', 'ArrowUp'].indexOf(e.key) === -1) {\n return;\n }\n\n const { cursor } = this.state;\n const filteredValues = this.filterValues();\n let cursorNext;\n\n e.preventDefault();\n\n if (e.key === 'ArrowDown') {\n if (cursor === -1 || cursor === filteredValues.length - 1) {\n cursorNext = 0;\n } else if (cursor < filteredValues.length - 1) {\n cursorNext = cursor + 1;\n }\n }\n\n if (e.key === 'ArrowUp') {\n if (cursor > 0) {\n cursorNext = cursor - 1;\n } else {\n cursorNext = filteredValues.length - 1;\n }\n }\n\n if (this.valuesListRef.current && cursorNext > 4) {\n const scrollTop = (cursorNext - 4) * 38;\n\n this.valuesListRef.current.scrollTop = (!tags) ? 60 + scrollTop : scrollTop;\n } else if (this.valuesListRef.current) {\n this.valuesListRef.current.scrollTop = 0;\n }\n\n this.setState(previousState => ({\n ...previousState,\n opened: true,\n cursor: cursorNext,\n }));\n }\n\n handleListItemClick(index) {\n // eslint-disable-next-line react/destructuring-assignment\n const clickedValue = this.props.values[index];\n if (clickedValue.disabled) return;\n\n const { multiple, tags } = this.props;\n\n const methodName = (tags) ? 'manageSelectedTags' : 'manageSelectedValues';\n const tempState = Object.assign({}, this.state, this[methodName](index));\n\n this.setState((previousState) => {\n if (!multiple && !tags) {\n tempState.opened = false;\n }\n\n return Object.assign({}, previousState, tempState);\n });\n }\n\n handlePillRemoveClick(index) {\n const { disabled } = this.props;\n\n if (disabled) {\n return;\n }\n\n const tempState = this.removeSelectedValue(index);\n\n this.setState(previousState => Object.assign({}, previousState, tempState));\n }\n\n handleClickOutside(event) {\n if (\n this.valuesListRef.current && !this.valuesListRef.current.contains(event.target)\n && this.comboboxRef.current && !this.comboboxRef.current.contains(event.target)\n ) {\n this.setState(previousState => Object.assign({}, previousState, Combobox.closeList()));\n }\n }\n\n handleComboboxDropdownClick() {\n const { disabled } = this.props;\n\n if (disabled) {\n return;\n }\n\n this.setState(previousState => Object.assign({}, previousState, Combobox.openList()));\n }\n\n reset() {\n const { multiple, tags, value } = this.props;\n\n this.setState({\n stateSelectedValues: getStateSelectedValues(multiple, tags, value),\n });\n }\n\n focusInput() {\n if (this.inputRef.current) {\n this.inputRef.current.focus();\n }\n }\n\n render() {\n const {\n CustomListComponent,\n disabled,\n id,\n label,\n note,\n tags,\n max,\n placeholder,\n } = this.props;\n const {\n width, opened, searchText, stateSelectedValues,\n } = this.state;\n\n const filteredValues = this.filterValues();\n\n return (\n \n
    \n {\n label\n ? \n : null\n }\n \n {}}\n ref={this.comboboxRef}\n >\n {\n tags\n ? (\n \n {\n (stateSelectedValues || []).map((value, index) => (\n
  • \n \n { value.name }\n
  • \n ))\n }\n \n {(max === undefined || stateSelectedValues?.length < max) && (\n <>\n {\n if (e.key === 'Enter') {\n e.preventDefault();\n }\n }}\n onKeyUp={this.onKeyUp}\n onKeyDown={this.handleItemsNavigation}\n placeholder={(!stateSelectedValues || !stateSelectedValues.length) ? placeholder : ''}\n ref={this.inputRef}\n style={{\n width: (!stateSelectedValues || !stateSelectedValues.length) ? '100%' : `${width}px`,\n }}\n />\n \n { searchText }\n \n \n )}\n {\n filteredValues.length\n ? (\n \n )\n : null\n }\n \n
    \n )\n : (\n {}}\n >\n { this.getComboboxDisplayData() }\n \n \n )\n }\n \n {\n note\n ?

    { note }

    \n : null\n }\n { this.getInputError() }\n
    \n \n {\n // eslint-disable-next-line no-nested-ternary\n !CustomListComponent\n ? opened && filteredValues.length\n ? ReactDOM.createPortal(\n \n {\n !tags\n ? (\n
  • \n \n
  • \n )\n : null\n }\n {\n filteredValues\n .map((value, index) => (\n {}}\n key={value.id}\n >\n {\n (this.getSelectedIndex(value) > -1)\n ? \n : null\n }\n \n {' '}\n { value.name }\n \n \n ))\n }\n ,\n document.querySelector('body'),\n )\n : null\n : (\n \n )\n }\n
    \n );\n }\n}\n","import React, { useState, useRef, useEffect } from 'react';\nimport Icon from '../../../../components/Icon';\nimport Pill from '../../../../components/Pill';\n\nfunction Value(props) {\n const {\n value,\n max,\n tags,\n tagSeparators,\n addTagOnBlur,\n placeholder,\n disabled,\n renderValue,\n valueOverflow,\n focus,\n onMessage: sendMessage,\n readOnly,\n } = props;\n const INPUT_MIN_WIDTH = 60;\n const inputRef = useRef(null);\n const dummyElementRef = useRef(null);\n const [inputValue, setInputValue] = useState('');\n const [inputWidth, setInputWidth] = useState(`${INPUT_MIN_WIDTH + 10}px`);\n\n function entryFieldOnChange(val) {\n if (tagSeparators.some(ts => val.slice(-1) === ts)) return;\n const dummy = dummyElementRef.current;\n dummy.innerHTML = val;\n setInputWidth(`${Math.max(dummy.clientWidth, INPUT_MIN_WIDTH) + 10}px`);\n setInputValue(val);\n sendMessage('tag.input.change', val);\n }\n\n function entryFieldOnKeyDown(key, val) {\n if (!tags) return;\n if (val === '' && key === 'Backspace' && value.length) {\n sendMessage('tag.remove', value[value.length - 1].id);\n return;\n }\n if (key === 'Enter') {\n sendMessage('tag.input.enter', val);\n entryFieldOnChange('');\n return;\n }\n if (key === 'ArrowUp') {\n sendMessage('tag.input.arrowUp');\n return;\n }\n if (key === 'ArrowDown') {\n sendMessage('tag.input.arrowDown');\n return;\n }\n if (key === 'Escape') {\n sendMessage('tag.input.escape');\n return;\n }\n if (tagSeparators.includes(key)) {\n sendMessage('tag.add', val);\n entryFieldOnChange('');\n }\n }\n\n function triggerAction() {\n sendMessage('text-value.click');\n }\n\n function textValue(val, isPlaceholder = false) {\n if (readOnly) return val || '-';\n\n const classes = [\n 'tyk-combobox2__text-value',\n `overflow-${valueOverflow}`,\n isPlaceholder && 'is-placeholder',\n ].filter(Boolean).join(' ');\n return (\n \n {val}\n \n );\n }\n\n function renderCustomValue(v) {\n const config = {\n tags,\n tagSeparators,\n placeholder,\n disabled,\n renderValue,\n sendMessage,\n };\n return renderValue(v, config);\n }\n\n function renderTag(v) {\n if (renderValue) return renderCustomValue(v);\n\n return (\n \n {\n e.stopPropagation();\n sendMessage('tag.remove', v.id);\n }}\n >\n \n \n { v.name }\n \n );\n }\n\n function getTags() {\n return (\n <>\n {value.map(renderTag)}\n {value.length < max && (\n <>\n entryFieldOnChange(e.target.value)}\n onKeyDown={(e) => {\n if (e.key === 'Enter') e.preventDefault();\n entryFieldOnKeyDown(e.key, e.target.value);\n }}\n onFocus={() => sendMessage('tag.input.focus')}\n onBlur={(e) => {\n sendMessage('tag.input.blur', e.target.value);\n if (addTagOnBlur) entryFieldOnChange('');\n }}\n />\n \n \n )}\n \n );\n }\n\n useEffect(() => {\n if (focus && inputRef.current) inputRef.current.focus();\n }, [focus]);\n\n if (readOnly) {\n return
    {textValue(value.map(v => v.name).join(', '))}
    ;\n }\n\n if (tags) return getTags();\n if (renderValue) {\n return value.length === 0 ? textValue(placeholder, true) : value.map(renderCustomValue);\n }\n return value.length === 0\n ? textValue(placeholder, true)\n : textValue(value.map(v => v.name).join(', '));\n}\n\nexport default Value;\n","import React, { useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport Icon from '../../../../components/Icon';\n\nfunction List(props) {\n const {\n listRef,\n tags,\n values,\n searchValue,\n activeItem,\n onMessage: sendMessage,\n renderListItem,\n selectAll,\n showSearch,\n } = props;\n\n useEffect(() => {\n if (!listRef.current) return;\n const activeElement = listRef.current.querySelector('.active');\n if (activeElement) activeElement.scrollIntoView({ block: 'end' });\n }, [activeItem]);\n\n function renderItem(item) {\n if (renderListItem) {\n return renderListItem(item, {\n tags, searchValue, sendMessage, activeItem,\n });\n }\n\n return (\n !item.disabled && sendMessage('value.select', { item })}\n onKeyPress={() => {}}\n >\n {item.selected && }\n {item.name}\n \n );\n }\n\n function renderSelectAllOption() {\n const isAllSelected = values.every(v => v.selected);\n const isNoneSelected = values.every(v => !v.selected);\n const label = selectAll?.label ?? 'Select All';\n const mode = selectAll?.mode ?? 'select';\n const show = selectAll?.show ?? 'always';\n const render = selectAll?.render;\n\n const shouldRenderOption = show === 'always' || (mode === 'select' ? !isAllSelected : !isNoneSelected);\n if (!shouldRenderOption) return null;\n\n if (render) {\n return render({\n label,\n mode,\n show,\n isAllSelected,\n isNoneSelected,\n }, sendMessage);\n }\n return (\n sendMessage('value.select-all', mode === 'select' ? !isAllSelected : isNoneSelected)}\n onKeyDown={() => {}}\n >\n {(mode === 'select' ? isAllSelected : isNoneSelected) && }\n {label}\n \n );\n }\n\n return (\n <>\n {!tags && showSearch && (\n
    \n sendMessage('search.change', e.target.value)}\n onKeyDown={(e) => {\n if (e.key === 'Escape') sendMessage('search.escape');\n if (e.key === 'ArrowUp') sendMessage('search.arrowUp');\n if (e.key === 'ArrowDown') sendMessage('search.arrowDown');\n if (e.key === 'Enter') sendMessage('search.enter');\n }}\n />\n
    \n )}\n {values.length > 0 && (\n
      \n {Boolean(selectAll) && (\n renderSelectAllOption()\n )}\n {values.map(renderItem)}\n
    \n )}\n \n );\n}\n\nList.propTypes = {\n listRef: PropTypes.instanceOf(Object),\n tags: PropTypes.bool,\n values: PropTypes.instanceOf(Array),\n searchValue: PropTypes.string,\n activeItem: PropTypes.instanceOf(Object),\n onMessage: PropTypes.func,\n renderListItem: PropTypes.func,\n selectAll: PropTypes.oneOfType([\n PropTypes.bool,\n PropTypes.shape({\n label: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.func,\n PropTypes.string,\n ]),\n mode: PropTypes.oneOf(['select', 'unselect']),\n show: PropTypes.oneOf(['always', 'notSameState']),\n render: PropTypes.func,\n }),\n ]),\n showSearch: PropTypes.bool,\n};\n\nexport default List;\n","import React, { useState, useRef, useEffect } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Icon from '../../../components/Icon';\nimport FloatingContainer from '../../../components/FloatingContainer';\n\nimport Value from './js/Value';\nimport List from './js/List';\n\nfunction normalizeValue(value, values) {\n let v = value;\n if (typeof value === 'string') v = { id: value, name: value };\n else if (!value.hasOwnProperty('name')) v = { ...value, name: value.id }; // eslint-disable-line no-prototype-builtins\n if (!values) return v;\n const existingVal = values.find((ev) => ev.id === v.id);\n return existingVal ? { ...v, ...existingVal } : v;\n}\n\nfunction getValueFromProp(value, values) {\n if (!value) return [];\n if (Array.isArray(value)) return value.map((v) => normalizeValue(v, values));\n return [normalizeValue(value, values)];\n}\n\n/**\n * Dropdown-like component that can display selected values as regular text,\n * tags, or in a custom way.\n * You can select values from a list or type in new ones.\n */\nfunction Combobox2({\n value: propValue,\n values: propValues = [],\n valueOverflow = 'single',\n label = '',\n labelwidth,\n tags = false,\n tagSeparators = [' ', 'Enter'],\n addTagOnBlur = false,\n max: maxProp,\n multiple = false,\n placeholder = '',\n theme,\n note = '',\n error = '',\n disabled = false,\n readOnly = false,\n allowCustomValues = true,\n searchItem: matchItemFn,\n renderValue,\n renderListItem,\n renderList: renderListProp,\n CustomListComponent,\n onBeforeChange = () => true,\n onChange = () => {},\n floatingContainerConfig,\n expandMode,\n infiniteScrollerConfig,\n displayDropdownTrigger = true,\n selectAll,\n closeOnSelect,\n showSearch = false,\n required = false,\n validateOnChange = () => {},\n wrapperClassName = '',\n ...restProps\n}) {\n const max = multiple ? Infinity : maxProp || (tags ? Infinity : 1);\n const renderList = CustomListComponent\n ? (values, { sendMessage }) => (\n sendMessage('value.select', { item: values[index] })}\n getListItemCssClasses={() => {}}\n />\n )\n : renderListProp;\n\n const rootRef = useRef(null);\n const comboboxControlRef = useRef(null);\n const dropdownRef = useRef(null);\n const listRef = useRef(null);\n\n const [value, setValue] = useState(getValueFromProp(propValue, propValues));\n const [values, setValues] = useState(propValues.map((v) => normalizeValue(v)));\n const [searchValue, setSearchValue] = useState('');\n const [activeItem, setActiveItem] = useState(null);\n const [isOpened, setIsOpened] = useState(false);\n const [valuesExpanded, setValuesExpanded] = useState(false);\n const [localValidationError, setLocalValidationError] = useState('');\n\n function getThemeClasses() {\n const themes = theme ? theme.split(' ') : [];\n return themes.map((iTheme) => `tyk-form-group--${iTheme}`);\n }\n\n function getCssClasses() {\n return [\n wrapperClassName,\n 'tyk-form-group',\n 'tyk-combobox2',\n ...getThemeClasses(),\n (error || localValidationError) && 'has-error',\n labelwidth && 'tyk-form-group--label-has-width',\n disabled && 'disabled',\n expandMode && 'is-expand-mode',\n ].filter(Boolean).join(' ');\n }\n\n function getFilteredValues() {\n const defaultFn = (v, s) => v?.name?.toLowerCase()?.includes(s);\n const fn = matchItemFn || defaultFn;\n const filteredValues = values.filter((v) => fn(v, searchValue.toLowerCase()));\n return filteredValues;\n }\n\n function openDropdown() {\n setIsOpened(true);\n }\n\n function closeDropdown() {\n setIsOpened(false);\n if (!tags) updateSearchValue('');\n setActiveItem(null);\n }\n\n function updateSearchValue(newSearchValue) {\n setSearchValue(newSearchValue);\n if (activeItem && getFilteredValues().every((fv) => fv.id !== activeItem.id)) {\n setActiveItem(null);\n }\n if (newSearchValue && !isOpened) openDropdown();\n }\n\n function isValidValue(newValues, lastValue) {\n const localError = validateOnChange(newValues, lastValue);\n setLocalValidationError(localError);\n return localError === undefined;\n }\n\n function updateValue(newValues) {\n setValue(newValues);\n onChange(max === 1 && !tags ? (newValues[0] || null) : newValues);\n }\n\n function addTag(val) {\n if (!val) return;\n if (value.length >= max) return;\n if (value.some(({ name }) => name === val)) return;\n\n const listValueIndex = values.findIndex((lv) => lv.name === val);\n let newValue;\n let finalValue = [...value];\n let selectedValues;\n\n if (listValueIndex === -1) {\n if (allowCustomValues) {\n newValue = { id: val, name: val };\n finalValue = [...value, newValue];\n }\n } else {\n selectedValues = [\n ...values.slice(0, listValueIndex),\n { ...values[listValueIndex], selected: true },\n ...values.slice(listValueIndex + 1),\n ];\n newValue = values[listValueIndex];\n finalValue = [...value, values[listValueIndex]];\n }\n\n if (isValidValue(finalValue, newValue) && onBeforeChange(value, finalValue)) {\n if (selectedValues) {\n setValues(selectedValues);\n }\n updateValue(finalValue);\n }\n }\n\n function removeTag(id) {\n if (required && max === 1) return;\n\n const listValueIndex = values.findIndex((lv) => lv.id === id);\n const newValue = value.filter((v) => v.id !== id);\n\n if (!onBeforeChange(value, newValue)) return;\n\n if (listValueIndex !== -1) {\n setValues([\n ...values.slice(0, listValueIndex),\n { ...values[listValueIndex], selected: false },\n ...values.slice(listValueIndex + 1),\n ]);\n }\n updateValue(newValue);\n }\n\n function selectValue({ id }) {\n const val = values.find((v) => v.id === id);\n let finalValue = value;\n let selectedValues = values;\n\n if (val.selected) {\n if (!required || max !== 1) {\n finalValue = value.filter((v) => v.id !== val.id);\n selectedValues = values.map((v) => (v.id === val.id ? { ...v, selected: false } : v));\n }\n } else if (value.length < max) {\n finalValue = [...value, val];\n selectedValues = values.map((v) => (v.id === val.id ? { ...v, selected: true } : v));\n } else if (max === 1) {\n finalValue = [val];\n selectedValues = values.map((v) => ({ ...v, selected: v.id === val.id }));\n }\n\n if (isValidValue(finalValue, val) && onBeforeChange(value, finalValue)) {\n updateValue(finalValue);\n setValues(selectedValues);\n }\n\n if (max === 1 || closeOnSelect) {\n closeDropdown();\n }\n }\n\n function selectAllValues(selected) {\n if (values.length > max) return;\n const newValue = selected ? [...values] : [];\n\n if (!onBeforeChange(value, newValue)) return;\n\n updateValue(newValue);\n setValues(values.map((v) => ({ ...v, selected })));\n if (closeOnSelect) closeDropdown();\n }\n\n function moveUpActiveItem() {\n const visibleItems = getFilteredValues().filter((v) => !v.disabled);\n if (visibleItems.length === 0) return;\n if (activeItem === null || visibleItems.length === 1) {\n setActiveItem(visibleItems[visibleItems.length - 1]);\n return;\n }\n const activeIndex = visibleItems.findIndex((v) => v.id === activeItem.id);\n setActiveItem(visibleItems[activeIndex > 0 ? activeIndex - 1 : visibleItems.length - 1]);\n }\n\n function moveDownActiveItem() {\n const visibleItems = getFilteredValues().filter((v) => !v.disabled);\n if (visibleItems.length === 0) return;\n if (activeItem === null || visibleItems.length === 1) {\n setActiveItem(visibleItems[0]);\n return;\n }\n const activeIndex = visibleItems.findIndex((v) => v.id === activeItem.id);\n setActiveItem(visibleItems[activeIndex < visibleItems.length - 1 ? activeIndex + 1 : 0]);\n }\n\n function executeTriggerAction() {\n if (expandMode) {\n setValuesExpanded(!valuesExpanded);\n } else {\n openDropdown();\n }\n }\n\n function handleDocumentClick(e) {\n const isClickInside = (rootRef.current && rootRef.current.contains(e.target))\n || (dropdownRef.current && dropdownRef.current.contains(e.target));\n if (!isClickInside) {\n closeDropdown();\n }\n }\n\n function onClickCapture(e) {\n if (!disabled) return;\n if (!expandMode) {\n e.stopPropagation();\n return;\n }\n\n const triggerElement = rootRef.current.querySelector('.tyk-combobox2__values-container-trigger');\n if (!triggerElement) return;\n\n const isClickOnTrigger = triggerElement === e.target || triggerElement.contains(e.target);\n if (!isClickOnTrigger) e.stopPropagation();\n }\n\n function onTagMessage(message, data) {\n if (message === 'add') {\n addTag(data);\n updateSearchValue('');\n }\n\n if (message === 'remove') removeTag(data);\n\n if (message === 'input.change') updateSearchValue(data);\n\n if (message === 'input.enter') {\n if (activeItem) {\n selectValue(activeItem);\n } else if (tagSeparators.includes('Enter')) {\n addTag(data);\n updateSearchValue('');\n }\n }\n\n if (message === 'input.arrowUp') {\n openDropdown();\n moveUpActiveItem();\n }\n\n if (message === 'input.arrowDown') {\n openDropdown();\n moveDownActiveItem();\n }\n\n if (message === 'input.escape') closeDropdown();\n\n if (message === 'input.blur' && addTagOnBlur) {\n addTag(data);\n updateSearchValue('');\n }\n\n if (message === 'input.focus') {\n openDropdown();\n }\n }\n\n function onMessage(message, data) {\n if (message.startsWith('tag.')) onTagMessage(message.slice(4), data);\n\n if (message === 'value.select') selectValue(data.item);\n\n if (message === 'value.select-all') selectAllValues(data);\n\n if (message === 'text-value.click') openDropdown();\n\n if (message === 'search.change') updateSearchValue(data);\n\n if (message === 'search.escape') closeDropdown();\n\n if (message === 'search.arrowUp') moveUpActiveItem();\n\n if (message === 'search.arrowDown') moveDownActiveItem();\n\n if (message === 'search.enter') {\n if (activeItem) selectValue(activeItem);\n }\n }\n\n useEffect(() => {\n window.addEventListener('click', handleDocumentClick, true);\n return () => window.removeEventListener('click', handleDocumentClick, true);\n }, []);\n\n useEffect(() => {\n if (propValues.length) {\n const newValues = propValues.map((v) => ({\n ...normalizeValue(v),\n selected: value.some((sv) => sv.id === v.id),\n }));\n setValues(newValues);\n setValue((val) => val.map((v) => newValues.find((nv) => nv.id === v.id) || v));\n } else if (values.length) {\n setValues([]);\n }\n }, [propValues]);\n\n useEffect(() => {\n const newValue = getValueFromProp(propValue, values);\n setValue(newValue);\n setValues((vals) => vals.map((v) => ({\n ...normalizeValue(v),\n selected: newValue.some((nv) => nv.id === v.id),\n })));\n }, [propValue]);\n\n useEffect(() => {\n if (!expandMode) return () => {};\n\n const valuesElement = comboboxControlRef.current.querySelector('.tyk-combobox2__current-values');\n const updateScroll = () => {\n valuesElement.scrollTop = valuesElement.scrollHeight;\n };\n /* eslint-disable-next-line no-undef */\n const mobserver = new MutationObserver(updateScroll);\n const robserver = new ResizeObserver(updateScroll);\n\n mobserver.observe(valuesElement, { attributes: true, childList: true, subtree: true });\n robserver.observe(valuesElement);\n\n return () => {\n mobserver.disconnect();\n robserver.disconnect();\n };\n });\n\n const filteredValues = getFilteredValues();\n const currentValuesClasses = [\n 'tyk-combobox2__current-values',\n expandMode && 'expand-mode',\n `tyk-combobox2__current-values--${valuesExpanded ? 'expanded' : 'collapsed'}`,\n ].join(' ');\n return (\n \n {label && (\n \n )}\n {!readOnly && (\n \n
    \n \n \n
    \n {displayDropdownTrigger && (\n \n {expandMode\n ? (\n \n )\n : (\n \n )}\n \n )}\n \n {isOpened && (!tags || filteredValues.length > 0) && (\n \n {renderList ? (\n renderList(filteredValues, {\n tags,\n searchValue,\n activeItem,\n listRef,\n sendMessage: onMessage,\n })\n ) : (\n \n )}\n \n )}\n {note && (\n

    {note}

    \n )}\n {((error && error !== 'true' && error !== 'false') || Boolean(localValidationError)) && (\n

    {error || localValidationError}

    \n )}\n \n )}\n {readOnly && (\n
    \n \n
    \n )}\n \n );\n}\n\nCombobox2.propTypes = {\n /** If `true` it allows entering values that are not in the list. */\n allowCustomValues: PropTypes.bool,\n /** Alias for `renderList`\n * used for backwards compatibility with the old Combobox component. */\n CustomListComponent: PropTypes.elementType,\n /** A function used for filtering elements displayed in the list when typing in. */\n searchItem: PropTypes.func,\n /** A custom component that will be used to display a value. */\n renderValue: PropTypes.func,\n /** A custom component that will be used to display an item in the dropdown list. */\n renderListItem: PropTypes.func,\n /** A custom component that will be used to display the entire content of the dropdown. */\n renderList: PropTypes.func,\n disabled: PropTypes.bool,\n /** hides the UI form element and displayes just the value as text */\n readOnly: PropTypes.bool,\n error: PropTypes.string,\n label: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.func,\n PropTypes.string,\n ]),\n labelwidth: PropTypes.string,\n /** The maximum number of values that can be selected/added. */\n max: PropTypes.number,\n /** Shorthand for max=Infinity */\n multiple: PropTypes.bool,\n note: PropTypes.oneOfType([\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n /**\n * Callback called before changing the value of the component.\n * The value change will succeed only if the callback's return value is truthy.\n * The callback is called with two arguments: 1) the previous value, 2) the next value */\n onBeforeChange: PropTypes.func,\n onChange: PropTypes.func,\n placeholder: PropTypes.string,\n /** Enables the display of values as `Pill` components that can be\n * removed without opening the dropdown. */\n tags: PropTypes.bool,\n /** A list of characters that will trigger the creation of a tag when typed. */\n tagSeparators: PropTypes.arrayOf(PropTypes.string),\n /** If set to true a tag will be created whenever the component loses focus\n * and there is something typed in. */\n addTagOnBlur: PropTypes.bool,\n theme: PropTypes.string,\n /** The value of the component. It can be a string, an array,\n * or an object with an `id` property. */\n value: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.instanceOf(Array),\n PropTypes.instanceOf(Object),\n ]),\n /** An array of selectable values. */\n values: PropTypes.instanceOf(Array),\n /** Config object passed to the internal floating container component. */\n floatingContainerConfig: PropTypes.instanceOf(Object),\n /** If set to `single` it will display the values on a single line\n * with an ellipsis at the end. */\n valueOverflow: PropTypes.oneOf(['single', 'multiple']),\n /**\n * If set to `true` whenever the user clicks on the dropdown trigger\n * the selected values container\n * will expand to show all selected values instead of opening the dropdown.\n */\n expandMode: PropTypes.bool,\n /** Config object passed to the internal infinite scroller component. */\n infiniteScrollerConfig: PropTypes.instanceOf(Object),\n /** Toggles the display of the dropdown trigger. */\n displayDropdownTrigger: PropTypes.bool,\n /**\n * If a boolean it will toggle the select all functionality from the dropdown.\n * It can also be an object with the shape `{ label, show, mode, render }`.\n * label - A string displayed as the select all option\n * show - It can be one of `['always', 'notSameState']`.\n * `always` means the option will always be displayed.\n * `notSameState` means it will be displayed only if the list items are\n * not all with the same state (depending on the `mode` value)\n * mode - It can be one of `['select', 'unselect']` and makes sense only\n * when the `show` property is `notSameState`\n * `select` means the select all option will only be displayed if not all\n * items are selected\n * `unselect` means the option will be displayed if no items are selected\n */\n selectAll: PropTypes.oneOfType([\n PropTypes.bool,\n PropTypes.shape({\n label: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.func,\n PropTypes.string,\n ]),\n mode: PropTypes.oneOf(['select', 'unselect']),\n show: PropTypes.oneOf(['always', 'notSameState']),\n render: PropTypes.func,\n }),\n ]),\n /** It `true` the dropdown will close after selecting a value. */\n closeOnSelect: PropTypes.bool,\n /** Toggles the display of the search input from the dropdown. */\n showSearch: PropTypes.bool,\n /** If it is required and can only select one value once you have something\n * selected you will not be able to deselect */\n required: PropTypes.bool,\n /** Validates newly added value before adding it to the selected values.\n * Returns an error string in case of error otherwise it returns undefined\n */\n validateOnChange: PropTypes.func,\n wrapperClassName: PropTypes.string,\n};\n\nexport default Combobox2;\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"flatpickr\");","\n import API from \"!../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../css-loader/dist/cjs.js!./flatpickr.min.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../css-loader/dist/cjs.js!./flatpickr.min.css\";\n export default content && content.locals ? content.locals : undefined;\n","import React, {\n useEffect, useState, useRef, useCallback,\n} from 'react';\nimport PropTypes from 'prop-types';\nimport flatpickr from 'flatpickr';\nimport 'flatpickr/dist/flatpickr.min.css';\n\nimport Icon from '../../../components/Icon';\nimport { usePrevious } from '../../../hooks';\n\nfunction DatePicker({\n children,\n disabled,\n readOnly = false,\n error,\n id,\n label,\n labelwidth,\n note,\n onClose,\n onChange,\n onOpen,\n theme,\n config = {},\n value,\n wrapperClassName = '',\n}) {\n const [pickerInstance, setPickerInstance] = useState(null);\n const dateRef = useRef(null);\n\n const prevValue = usePrevious(value);\n\n const hasValueChanged = useCallback((prevDate, currentDate) => {\n if (!prevDate) return true;\n if (!Array.isArray(currentDate)) return prevDate.getTime() !== currentDate.getTime();\n\n let diffDates = currentDate;\n\n if (prevDate && currentDate.length && prevDate.length) {\n diffDates = currentDate.filter((date, index) => date.getTime() !== prevDate[index].getTime());\n\n return diffDates.length > 0;\n }\n\n return currentDate.length > 0;\n }, []);\n\n const onDateChange = useCallback((dateValue) => {\n const finalValue = config.mode === 'range' ? dateValue : dateValue[0] || null;\n\n if (!onChange) return;\n\n if (config.mode === 'range') {\n if (finalValue.length === 2 && hasValueChanged(prevValue, finalValue)) {\n onChange(finalValue);\n }\n } else {\n onChange(finalValue);\n }\n }, [prevValue, onChange, hasValueChanged]);\n\n useEffect(() => {\n if (dateRef && dateRef.current && !pickerInstance) {\n const instance = flatpickr(dateRef.current, {\n ...config, defaultDate: value, onChange: onDateChange, onClose, onOpen,\n });\n setPickerInstance(instance);\n }\n\n return () => {\n if (pickerInstance) {\n pickerInstance.destroy();\n }\n };\n }, [dateRef.current, pickerInstance]);\n\n useEffect(() => {\n if (pickerInstance) {\n let tempValue = value;\n\n if (typeof value === 'string') {\n tempValue = new Date(value);\n } else if (Array.isArray(value)) {\n tempValue = value.map((date) => (typeof date === 'string' ? new Date(date) : date));\n }\n\n if (hasValueChanged(prevValue, tempValue)) {\n pickerInstance.set('onChange', onDateChange);\n if (config.mode === 'range') {\n if (tempValue && tempValue.length === 2) {\n pickerInstance.setDate(tempValue, true);\n }\n } else {\n pickerInstance.setDate(tempValue, true);\n }\n }\n }\n }, [prevValue, value, pickerInstance]);\n\n const classes = [\n 'tyk-form-group',\n 'tyk-form-group--addon-right',\n wrapperClassName,\n ...(theme ? theme.split(' ').map((t) => `tyk-form-group--${t}`) : []),\n labelwidth && 'tyk-form-group--label-has-width',\n error && 'has-error',\n ].filter(Boolean).join(' ');\n\n const getLabelStyles = () => {\n if (labelwidth) return { flexBasis: labelwidth };\n return {};\n };\n\n const getNonLabelWidth = () => {\n if (labelwidth) return { flexBasis: `calc(100% - ${labelwidth} - 20px)` };\n return {};\n };\n\n const openCalendar = useCallback(() => {\n if (!pickerInstance) return;\n\n pickerInstance.open();\n }, [pickerInstance]);\n\n const getInputError = () => (\n (error && error !== 'true' && error !== 'false')\n ? (\n

    \n { error }\n

    \n )\n : null\n );\n\n const getInputField = () => {\n let inputStyle = {};\n let addonStyle = {};\n\n if (config && config.inline) {\n inputStyle = {\n height: 0,\n padding: 0,\n width: 0,\n visibility: 'hidden',\n };\n\n addonStyle = {\n display: 'none',\n };\n }\n return (\n <>\n \n {}}\n tabIndex={0}\n style={addonStyle}\n >\n \n \n \n );\n };\n\n return (\n <>\n {\n children && children.length\n ? children({ openCalendar, ref: dateRef })\n : (\n
    \n {\n label\n ? \n : null\n }\n {!readOnly && (\n \n
    \n {getInputField()}\n
    \n {\n note\n ?

    { note }

    \n : null\n }\n { getInputError() }\n
    \n )}\n \n )\n }\n
    \n {readOnly && !value && '-'}\n {readOnly && value && flatpickr.formatDate(value, config.dateFormat || 'd/m/Y')}\n
    \n \n );\n}\n\nDatePicker.propTypes = {\n config: PropTypes.instanceOf(Object),\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n PropTypes.func,\n ]),\n disabled: PropTypes.bool,\n readOnly: PropTypes.bool,\n id: PropTypes.string,\n label: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.func,\n PropTypes.string,\n ]),\n labelwidth: PropTypes.string,\n note: PropTypes.string,\n onChange: PropTypes.oneOfType([\n PropTypes.func,\n PropTypes.instanceOf(Array),\n ]),\n onClose: PropTypes.oneOfType([\n PropTypes.func,\n PropTypes.instanceOf(Array),\n ]),\n onOpen: PropTypes.oneOfType([\n PropTypes.func,\n PropTypes.instanceOf(Array),\n ]),\n theme: PropTypes.string,\n error: PropTypes.string,\n value: PropTypes.oneOfType([\n PropTypes.instanceOf(Array),\n PropTypes.instanceOf(Object),\n PropTypes.string,\n ]),\n wrapperClassName: PropTypes.string,\n};\n\nexport default DatePicker;\n","export default function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}","export default function requiredArgs(required, args) {\n if (args.length < required) {\n throw new TypeError(required + ' argument' + (required > 1 ? 's' : '') + ' required, but only ' + args.length + ' present');\n }\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isDate\n * @category Common Helpers\n * @summary Is the given value a date?\n *\n * @description\n * Returns true if the given value is an instance of Date. The function works for dates transferred across iframes.\n *\n * @param {*} value - the value to check\n * @returns {boolean} true if the given value is a date\n * @throws {TypeError} 1 arguments required\n *\n * @example\n * // For a valid date:\n * const result = isDate(new Date())\n * //=> true\n *\n * @example\n * // For an invalid date:\n * const result = isDate(new Date(NaN))\n * //=> true\n *\n * @example\n * // For some value:\n * const result = isDate('2014-02-31')\n * //=> false\n *\n * @example\n * // For an object:\n * const result = isDate({})\n * //=> false\n */\nexport default function isDate(value) {\n requiredArgs(1, arguments);\n return value instanceof Date || _typeof(value) === 'object' && Object.prototype.toString.call(value) === '[object Date]';\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n *\n * @param {Date|Number} argument - the value to convert\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Clone the date:\n * const result = toDate(new Date(2014, 1, 11, 11, 30, 30))\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert the timestamp to date:\n * const result = toDate(1392098430000)\n * //=> Tue Feb 11 2014 11:30:30\n */\nexport default function toDate(argument) {\n requiredArgs(1, arguments);\n var argStr = Object.prototype.toString.call(argument);\n\n // Clone the date\n if (argument instanceof Date || _typeof(argument) === 'object' && argStr === '[object Date]') {\n // Prevent the date to lose the milliseconds when passed to new Date() in IE10\n return new Date(argument.getTime());\n } else if (typeof argument === 'number' || argStr === '[object Number]') {\n return new Date(argument);\n } else {\n if ((typeof argument === 'string' || argStr === '[object String]') && typeof console !== 'undefined') {\n // eslint-disable-next-line no-console\n console.warn(\"Starting with v2.0.0-beta.1 date-fns doesn't accept strings as date arguments. Please use `parseISO` to parse strings. See: https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#string-arguments\");\n // eslint-disable-next-line no-console\n console.warn(new Error().stack);\n }\n return new Date(NaN);\n }\n}","export default function toInteger(dirtyNumber) {\n if (dirtyNumber === null || dirtyNumber === true || dirtyNumber === false) {\n return NaN;\n }\n var number = Number(dirtyNumber);\n if (isNaN(number)) {\n return number;\n }\n return number < 0 ? Math.ceil(number) : Math.floor(number);\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nexport default function startOfUTCISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n var weekStartsOn = 1;\n var date = toDate(dirtyDate);\n var day = date.getUTCDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setUTCDate(date.getUTCDate() - diff);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nexport default function getUTCISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getUTCFullYear();\n var fourthOfJanuaryOfNextYear = new Date(0);\n fourthOfJanuaryOfNextYear.setUTCFullYear(year + 1, 0, 4);\n fourthOfJanuaryOfNextYear.setUTCHours(0, 0, 0, 0);\n var startOfNextYear = startOfUTCISOWeek(fourthOfJanuaryOfNextYear);\n var fourthOfJanuaryOfThisYear = new Date(0);\n fourthOfJanuaryOfThisYear.setUTCFullYear(year, 0, 4);\n fourthOfJanuaryOfThisYear.setUTCHours(0, 0, 0, 0);\n var startOfThisYear = startOfUTCISOWeek(fourthOfJanuaryOfThisYear);\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}","var defaultOptions = {};\nexport function getDefaultOptions() {\n return defaultOptions;\n}\nexport function setDefaultOptions(newOptions) {\n defaultOptions = newOptions;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nimport { getDefaultOptions } from \"../defaultOptions/index.js\";\nexport default function startOfUTCWeek(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$weekStartsOn, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(1, arguments);\n var defaultOptions = getDefaultOptions();\n var weekStartsOn = toInteger((_ref = (_ref2 = (_ref3 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.weekStartsOn) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.weekStartsOn) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.weekStartsOn) !== null && _ref !== void 0 ? _ref : 0);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n var date = toDate(dirtyDate);\n var day = date.getUTCDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setUTCDate(date.getUTCDate() - diff);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nimport { getDefaultOptions } from \"../defaultOptions/index.js\";\nexport default function getUTCWeekYear(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$firstWeekCon, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getUTCFullYear();\n var defaultOptions = getDefaultOptions();\n var firstWeekContainsDate = toInteger((_ref = (_ref2 = (_ref3 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref !== void 0 ? _ref : 1);\n\n // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n var firstWeekOfNextYear = new Date(0);\n firstWeekOfNextYear.setUTCFullYear(year + 1, 0, firstWeekContainsDate);\n firstWeekOfNextYear.setUTCHours(0, 0, 0, 0);\n var startOfNextYear = startOfUTCWeek(firstWeekOfNextYear, options);\n var firstWeekOfThisYear = new Date(0);\n firstWeekOfThisYear.setUTCFullYear(year, 0, firstWeekContainsDate);\n firstWeekOfThisYear.setUTCHours(0, 0, 0, 0);\n var startOfThisYear = startOfUTCWeek(firstWeekOfThisYear, options);\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}","export default function addLeadingZeros(number, targetLength) {\n var sign = number < 0 ? '-' : '';\n var output = Math.abs(number).toString();\n while (output.length < targetLength) {\n output = '0' + output;\n }\n return sign + output;\n}","import addLeadingZeros from \"../../addLeadingZeros/index.js\";\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | |\n * | d | Day of month | D | |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | m | Minute | M | Month |\n * | s | Second | S | Fraction of second |\n * | y | Year (abs) | Y | |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n */\nvar formatters = {\n // Year\n y: function y(date, token) {\n // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_tokens\n // | Year | y | yy | yyy | yyyy | yyyyy |\n // |----------|-------|----|-------|-------|-------|\n // | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n // | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n // | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n // | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n\n var signedYear = date.getUTCFullYear();\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n var year = signedYear > 0 ? signedYear : 1 - signedYear;\n return addLeadingZeros(token === 'yy' ? year % 100 : year, token.length);\n },\n // Month\n M: function M(date, token) {\n var month = date.getUTCMonth();\n return token === 'M' ? String(month + 1) : addLeadingZeros(month + 1, 2);\n },\n // Day of the month\n d: function d(date, token) {\n return addLeadingZeros(date.getUTCDate(), token.length);\n },\n // AM or PM\n a: function a(date, token) {\n var dayPeriodEnumValue = date.getUTCHours() / 12 >= 1 ? 'pm' : 'am';\n switch (token) {\n case 'a':\n case 'aa':\n return dayPeriodEnumValue.toUpperCase();\n case 'aaa':\n return dayPeriodEnumValue;\n case 'aaaaa':\n return dayPeriodEnumValue[0];\n case 'aaaa':\n default:\n return dayPeriodEnumValue === 'am' ? 'a.m.' : 'p.m.';\n }\n },\n // Hour [1-12]\n h: function h(date, token) {\n return addLeadingZeros(date.getUTCHours() % 12 || 12, token.length);\n },\n // Hour [0-23]\n H: function H(date, token) {\n return addLeadingZeros(date.getUTCHours(), token.length);\n },\n // Minute\n m: function m(date, token) {\n return addLeadingZeros(date.getUTCMinutes(), token.length);\n },\n // Second\n s: function s(date, token) {\n return addLeadingZeros(date.getUTCSeconds(), token.length);\n },\n // Fraction of second\n S: function S(date, token) {\n var numberOfDigits = token.length;\n var milliseconds = date.getUTCMilliseconds();\n var fractionalSeconds = Math.floor(milliseconds * Math.pow(10, numberOfDigits - 3));\n return addLeadingZeros(fractionalSeconds, token.length);\n }\n};\nexport default formatters;","import getUTCDayOfYear from \"../../../_lib/getUTCDayOfYear/index.js\";\nimport getUTCISOWeek from \"../../../_lib/getUTCISOWeek/index.js\";\nimport getUTCISOWeekYear from \"../../../_lib/getUTCISOWeekYear/index.js\";\nimport getUTCWeek from \"../../../_lib/getUTCWeek/index.js\";\nimport getUTCWeekYear from \"../../../_lib/getUTCWeekYear/index.js\";\nimport addLeadingZeros from \"../../addLeadingZeros/index.js\";\nimport lightFormatters from \"../lightFormatters/index.js\";\nvar dayPeriodEnum = {\n am: 'am',\n pm: 'pm',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n};\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O | Timezone (GMT) |\n * | p! | Long localized time | P! | Long localized date |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `format` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n * - `P` is long localized date format\n * - `p` is long localized time format\n */\n\nvar formatters = {\n // Era\n G: function G(date, token, localize) {\n var era = date.getUTCFullYear() > 0 ? 1 : 0;\n switch (token) {\n // AD, BC\n case 'G':\n case 'GG':\n case 'GGG':\n return localize.era(era, {\n width: 'abbreviated'\n });\n // A, B\n case 'GGGGG':\n return localize.era(era, {\n width: 'narrow'\n });\n // Anno Domini, Before Christ\n case 'GGGG':\n default:\n return localize.era(era, {\n width: 'wide'\n });\n }\n },\n // Year\n y: function y(date, token, localize) {\n // Ordinal number\n if (token === 'yo') {\n var signedYear = date.getUTCFullYear();\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n var year = signedYear > 0 ? signedYear : 1 - signedYear;\n return localize.ordinalNumber(year, {\n unit: 'year'\n });\n }\n return lightFormatters.y(date, token);\n },\n // Local week-numbering year\n Y: function Y(date, token, localize, options) {\n var signedWeekYear = getUTCWeekYear(date, options);\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n var weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear;\n\n // Two digit year\n if (token === 'YY') {\n var twoDigitYear = weekYear % 100;\n return addLeadingZeros(twoDigitYear, 2);\n }\n\n // Ordinal number\n if (token === 'Yo') {\n return localize.ordinalNumber(weekYear, {\n unit: 'year'\n });\n }\n\n // Padding\n return addLeadingZeros(weekYear, token.length);\n },\n // ISO week-numbering year\n R: function R(date, token) {\n var isoWeekYear = getUTCISOWeekYear(date);\n\n // Padding\n return addLeadingZeros(isoWeekYear, token.length);\n },\n // Extended year. This is a single number designating the year of this calendar system.\n // The main difference between `y` and `u` localizers are B.C. years:\n // | Year | `y` | `u` |\n // |------|-----|-----|\n // | AC 1 | 1 | 1 |\n // | BC 1 | 1 | 0 |\n // | BC 2 | 2 | -1 |\n // Also `yy` always returns the last two digits of a year,\n // while `uu` pads single digit years to 2 characters and returns other years unchanged.\n u: function u(date, token) {\n var year = date.getUTCFullYear();\n return addLeadingZeros(year, token.length);\n },\n // Quarter\n Q: function Q(date, token, localize) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case 'Q':\n return String(quarter);\n // 01, 02, 03, 04\n case 'QQ':\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n case 'Qo':\n return localize.ordinalNumber(quarter, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n case 'QQQ':\n return localize.quarter(quarter, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case 'QQQQQ':\n return localize.quarter(quarter, {\n width: 'narrow',\n context: 'formatting'\n });\n // 1st quarter, 2nd quarter, ...\n case 'QQQQ':\n default:\n return localize.quarter(quarter, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone quarter\n q: function q(date, token, localize) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case 'q':\n return String(quarter);\n // 01, 02, 03, 04\n case 'qq':\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n case 'qo':\n return localize.ordinalNumber(quarter, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n case 'qqq':\n return localize.quarter(quarter, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case 'qqqqq':\n return localize.quarter(quarter, {\n width: 'narrow',\n context: 'standalone'\n });\n // 1st quarter, 2nd quarter, ...\n case 'qqqq':\n default:\n return localize.quarter(quarter, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // Month\n M: function M(date, token, localize) {\n var month = date.getUTCMonth();\n switch (token) {\n case 'M':\n case 'MM':\n return lightFormatters.M(date, token);\n // 1st, 2nd, ..., 12th\n case 'Mo':\n return localize.ordinalNumber(month + 1, {\n unit: 'month'\n });\n // Jan, Feb, ..., Dec\n case 'MMM':\n return localize.month(month, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // J, F, ..., D\n case 'MMMMM':\n return localize.month(month, {\n width: 'narrow',\n context: 'formatting'\n });\n // January, February, ..., December\n case 'MMMM':\n default:\n return localize.month(month, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone month\n L: function L(date, token, localize) {\n var month = date.getUTCMonth();\n switch (token) {\n // 1, 2, ..., 12\n case 'L':\n return String(month + 1);\n // 01, 02, ..., 12\n case 'LL':\n return addLeadingZeros(month + 1, 2);\n // 1st, 2nd, ..., 12th\n case 'Lo':\n return localize.ordinalNumber(month + 1, {\n unit: 'month'\n });\n // Jan, Feb, ..., Dec\n case 'LLL':\n return localize.month(month, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // J, F, ..., D\n case 'LLLLL':\n return localize.month(month, {\n width: 'narrow',\n context: 'standalone'\n });\n // January, February, ..., December\n case 'LLLL':\n default:\n return localize.month(month, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // Local week of year\n w: function w(date, token, localize, options) {\n var week = getUTCWeek(date, options);\n if (token === 'wo') {\n return localize.ordinalNumber(week, {\n unit: 'week'\n });\n }\n return addLeadingZeros(week, token.length);\n },\n // ISO week of year\n I: function I(date, token, localize) {\n var isoWeek = getUTCISOWeek(date);\n if (token === 'Io') {\n return localize.ordinalNumber(isoWeek, {\n unit: 'week'\n });\n }\n return addLeadingZeros(isoWeek, token.length);\n },\n // Day of the month\n d: function d(date, token, localize) {\n if (token === 'do') {\n return localize.ordinalNumber(date.getUTCDate(), {\n unit: 'date'\n });\n }\n return lightFormatters.d(date, token);\n },\n // Day of year\n D: function D(date, token, localize) {\n var dayOfYear = getUTCDayOfYear(date);\n if (token === 'Do') {\n return localize.ordinalNumber(dayOfYear, {\n unit: 'dayOfYear'\n });\n }\n return addLeadingZeros(dayOfYear, token.length);\n },\n // Day of week\n E: function E(date, token, localize) {\n var dayOfWeek = date.getUTCDay();\n switch (token) {\n // Tue\n case 'E':\n case 'EE':\n case 'EEE':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n case 'EEEEE':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n case 'EEEEEE':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n case 'EEEE':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Local day of week\n e: function e(date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n switch (token) {\n // Numerical value (Nth day of week with current locale or weekStartsOn)\n case 'e':\n return String(localDayOfWeek);\n // Padded numerical value\n case 'ee':\n return addLeadingZeros(localDayOfWeek, 2);\n // 1st, 2nd, ..., 7th\n case 'eo':\n return localize.ordinalNumber(localDayOfWeek, {\n unit: 'day'\n });\n case 'eee':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n case 'eeeee':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n case 'eeeeee':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n case 'eeee':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone local day of week\n c: function c(date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n switch (token) {\n // Numerical value (same as in `e`)\n case 'c':\n return String(localDayOfWeek);\n // Padded numerical value\n case 'cc':\n return addLeadingZeros(localDayOfWeek, token.length);\n // 1st, 2nd, ..., 7th\n case 'co':\n return localize.ordinalNumber(localDayOfWeek, {\n unit: 'day'\n });\n case 'ccc':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // T\n case 'ccccc':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'standalone'\n });\n // Tu\n case 'cccccc':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'standalone'\n });\n // Tuesday\n case 'cccc':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // ISO day of week\n i: function i(date, token, localize) {\n var dayOfWeek = date.getUTCDay();\n var isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek;\n switch (token) {\n // 2\n case 'i':\n return String(isoDayOfWeek);\n // 02\n case 'ii':\n return addLeadingZeros(isoDayOfWeek, token.length);\n // 2nd\n case 'io':\n return localize.ordinalNumber(isoDayOfWeek, {\n unit: 'day'\n });\n // Tue\n case 'iii':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n case 'iiiii':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n case 'iiiiii':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n case 'iiii':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // AM or PM\n a: function a(date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n switch (token) {\n case 'a':\n case 'aa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n case 'aaa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n }).toLowerCase();\n case 'aaaaa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'aaaa':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // AM, PM, midnight, noon\n b: function b(date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue;\n if (hours === 12) {\n dayPeriodEnumValue = dayPeriodEnum.noon;\n } else if (hours === 0) {\n dayPeriodEnumValue = dayPeriodEnum.midnight;\n } else {\n dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n }\n switch (token) {\n case 'b':\n case 'bb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n case 'bbb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n }).toLowerCase();\n case 'bbbbb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'bbbb':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // in the morning, in the afternoon, in the evening, at night\n B: function B(date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue;\n if (hours >= 17) {\n dayPeriodEnumValue = dayPeriodEnum.evening;\n } else if (hours >= 12) {\n dayPeriodEnumValue = dayPeriodEnum.afternoon;\n } else if (hours >= 4) {\n dayPeriodEnumValue = dayPeriodEnum.morning;\n } else {\n dayPeriodEnumValue = dayPeriodEnum.night;\n }\n switch (token) {\n case 'B':\n case 'BB':\n case 'BBB':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n case 'BBBBB':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'BBBB':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Hour [1-12]\n h: function h(date, token, localize) {\n if (token === 'ho') {\n var hours = date.getUTCHours() % 12;\n if (hours === 0) hours = 12;\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n return lightFormatters.h(date, token);\n },\n // Hour [0-23]\n H: function H(date, token, localize) {\n if (token === 'Ho') {\n return localize.ordinalNumber(date.getUTCHours(), {\n unit: 'hour'\n });\n }\n return lightFormatters.H(date, token);\n },\n // Hour [0-11]\n K: function K(date, token, localize) {\n var hours = date.getUTCHours() % 12;\n if (token === 'Ko') {\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n return addLeadingZeros(hours, token.length);\n },\n // Hour [1-24]\n k: function k(date, token, localize) {\n var hours = date.getUTCHours();\n if (hours === 0) hours = 24;\n if (token === 'ko') {\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n return addLeadingZeros(hours, token.length);\n },\n // Minute\n m: function m(date, token, localize) {\n if (token === 'mo') {\n return localize.ordinalNumber(date.getUTCMinutes(), {\n unit: 'minute'\n });\n }\n return lightFormatters.m(date, token);\n },\n // Second\n s: function s(date, token, localize) {\n if (token === 'so') {\n return localize.ordinalNumber(date.getUTCSeconds(), {\n unit: 'second'\n });\n }\n return lightFormatters.s(date, token);\n },\n // Fraction of second\n S: function S(date, token) {\n return lightFormatters.S(date, token);\n },\n // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)\n X: function X(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n if (timezoneOffset === 0) {\n return 'Z';\n }\n switch (token) {\n // Hours and optional minutes\n case 'X':\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XX`\n case 'XXXX':\n case 'XX':\n // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XXX`\n case 'XXXXX':\n case 'XXX': // Hours and minutes with `:` delimiter\n default:\n return formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)\n x: function x(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n switch (token) {\n // Hours and optional minutes\n case 'x':\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xx`\n case 'xxxx':\n case 'xx':\n // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xxx`\n case 'xxxxx':\n case 'xxx': // Hours and minutes with `:` delimiter\n default:\n return formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (GMT)\n O: function O(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n switch (token) {\n // Short\n case 'O':\n case 'OO':\n case 'OOO':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n // Long\n case 'OOOO':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (specific non-location)\n z: function z(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n switch (token) {\n // Short\n case 'z':\n case 'zz':\n case 'zzz':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n // Long\n case 'zzzz':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':');\n }\n },\n // Seconds timestamp\n t: function t(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timestamp = Math.floor(originalDate.getTime() / 1000);\n return addLeadingZeros(timestamp, token.length);\n },\n // Milliseconds timestamp\n T: function T(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timestamp = originalDate.getTime();\n return addLeadingZeros(timestamp, token.length);\n }\n};\nfunction formatTimezoneShort(offset, dirtyDelimiter) {\n var sign = offset > 0 ? '-' : '+';\n var absOffset = Math.abs(offset);\n var hours = Math.floor(absOffset / 60);\n var minutes = absOffset % 60;\n if (minutes === 0) {\n return sign + String(hours);\n }\n var delimiter = dirtyDelimiter || '';\n return sign + String(hours) + delimiter + addLeadingZeros(minutes, 2);\n}\nfunction formatTimezoneWithOptionalMinutes(offset, dirtyDelimiter) {\n if (offset % 60 === 0) {\n var sign = offset > 0 ? '-' : '+';\n return sign + addLeadingZeros(Math.abs(offset) / 60, 2);\n }\n return formatTimezone(offset, dirtyDelimiter);\n}\nfunction formatTimezone(offset, dirtyDelimiter) {\n var delimiter = dirtyDelimiter || '';\n var sign = offset > 0 ? '-' : '+';\n var absOffset = Math.abs(offset);\n var hours = addLeadingZeros(Math.floor(absOffset / 60), 2);\n var minutes = addLeadingZeros(absOffset % 60, 2);\n return sign + hours + delimiter + minutes;\n}\nexport default formatters;","import toDate from \"../../toDate/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport startOfUTCWeekYear from \"../startOfUTCWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000;\nexport default function getUTCWeek(dirtyDate, options) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var diff = startOfUTCWeek(date, options).getTime() - startOfUTCWeekYear(date, options).getTime();\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","import getUTCWeekYear from \"../getUTCWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nimport { getDefaultOptions } from \"../defaultOptions/index.js\";\nexport default function startOfUTCWeekYear(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$firstWeekCon, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(1, arguments);\n var defaultOptions = getDefaultOptions();\n var firstWeekContainsDate = toInteger((_ref = (_ref2 = (_ref3 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref !== void 0 ? _ref : 1);\n var year = getUTCWeekYear(dirtyDate, options);\n var firstWeek = new Date(0);\n firstWeek.setUTCFullYear(year, 0, firstWeekContainsDate);\n firstWeek.setUTCHours(0, 0, 0, 0);\n var date = startOfUTCWeek(firstWeek, options);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nimport startOfUTCISOWeekYear from \"../startOfUTCISOWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000;\nexport default function getUTCISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var diff = startOfUTCISOWeek(date).getTime() - startOfUTCISOWeekYear(date).getTime();\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","import getUTCISOWeekYear from \"../getUTCISOWeekYear/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nexport default function startOfUTCISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var year = getUTCISOWeekYear(dirtyDate);\n var fourthOfJanuary = new Date(0);\n fourthOfJanuary.setUTCFullYear(year, 0, 4);\n fourthOfJanuary.setUTCHours(0, 0, 0, 0);\n var date = startOfUTCISOWeek(fourthOfJanuary);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_DAY = 86400000;\nexport default function getUTCDayOfYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var timestamp = date.getTime();\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n var startOfYearTimestamp = date.getTime();\n var difference = timestamp - startOfYearTimestamp;\n return Math.floor(difference / MILLISECONDS_IN_DAY) + 1;\n}","var dateLongFormatter = function dateLongFormatter(pattern, formatLong) {\n switch (pattern) {\n case 'P':\n return formatLong.date({\n width: 'short'\n });\n case 'PP':\n return formatLong.date({\n width: 'medium'\n });\n case 'PPP':\n return formatLong.date({\n width: 'long'\n });\n case 'PPPP':\n default:\n return formatLong.date({\n width: 'full'\n });\n }\n};\nvar timeLongFormatter = function timeLongFormatter(pattern, formatLong) {\n switch (pattern) {\n case 'p':\n return formatLong.time({\n width: 'short'\n });\n case 'pp':\n return formatLong.time({\n width: 'medium'\n });\n case 'ppp':\n return formatLong.time({\n width: 'long'\n });\n case 'pppp':\n default:\n return formatLong.time({\n width: 'full'\n });\n }\n};\nvar dateTimeLongFormatter = function dateTimeLongFormatter(pattern, formatLong) {\n var matchResult = pattern.match(/(P+)(p+)?/) || [];\n var datePattern = matchResult[1];\n var timePattern = matchResult[2];\n if (!timePattern) {\n return dateLongFormatter(pattern, formatLong);\n }\n var dateTimeFormat;\n switch (datePattern) {\n case 'P':\n dateTimeFormat = formatLong.dateTime({\n width: 'short'\n });\n break;\n case 'PP':\n dateTimeFormat = formatLong.dateTime({\n width: 'medium'\n });\n break;\n case 'PPP':\n dateTimeFormat = formatLong.dateTime({\n width: 'long'\n });\n break;\n case 'PPPP':\n default:\n dateTimeFormat = formatLong.dateTime({\n width: 'full'\n });\n break;\n }\n return dateTimeFormat.replace('{{date}}', dateLongFormatter(datePattern, formatLong)).replace('{{time}}', timeLongFormatter(timePattern, formatLong));\n};\nvar longFormatters = {\n p: timeLongFormatter,\n P: dateTimeLongFormatter\n};\nexport default longFormatters;","var protectedDayOfYearTokens = ['D', 'DD'];\nvar protectedWeekYearTokens = ['YY', 'YYYY'];\nexport function isProtectedDayOfYearToken(token) {\n return protectedDayOfYearTokens.indexOf(token) !== -1;\n}\nexport function isProtectedWeekYearToken(token) {\n return protectedWeekYearTokens.indexOf(token) !== -1;\n}\nexport function throwProtectedError(token, format, input) {\n if (token === 'YYYY') {\n throw new RangeError(\"Use `yyyy` instead of `YYYY` (in `\".concat(format, \"`) for formatting years to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n } else if (token === 'YY') {\n throw new RangeError(\"Use `yy` instead of `YY` (in `\".concat(format, \"`) for formatting years to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n } else if (token === 'D') {\n throw new RangeError(\"Use `d` instead of `D` (in `\".concat(format, \"`) for formatting days of the month to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n } else if (token === 'DD') {\n throw new RangeError(\"Use `dd` instead of `DD` (in `\".concat(format, \"`) for formatting days of the month to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n }\n}","var formatDistanceLocale = {\n lessThanXSeconds: {\n one: 'less than a second',\n other: 'less than {{count}} seconds'\n },\n xSeconds: {\n one: '1 second',\n other: '{{count}} seconds'\n },\n halfAMinute: 'half a minute',\n lessThanXMinutes: {\n one: 'less than a minute',\n other: 'less than {{count}} minutes'\n },\n xMinutes: {\n one: '1 minute',\n other: '{{count}} minutes'\n },\n aboutXHours: {\n one: 'about 1 hour',\n other: 'about {{count}} hours'\n },\n xHours: {\n one: '1 hour',\n other: '{{count}} hours'\n },\n xDays: {\n one: '1 day',\n other: '{{count}} days'\n },\n aboutXWeeks: {\n one: 'about 1 week',\n other: 'about {{count}} weeks'\n },\n xWeeks: {\n one: '1 week',\n other: '{{count}} weeks'\n },\n aboutXMonths: {\n one: 'about 1 month',\n other: 'about {{count}} months'\n },\n xMonths: {\n one: '1 month',\n other: '{{count}} months'\n },\n aboutXYears: {\n one: 'about 1 year',\n other: 'about {{count}} years'\n },\n xYears: {\n one: '1 year',\n other: '{{count}} years'\n },\n overXYears: {\n one: 'over 1 year',\n other: 'over {{count}} years'\n },\n almostXYears: {\n one: 'almost 1 year',\n other: 'almost {{count}} years'\n }\n};\nvar formatDistance = function formatDistance(token, count, options) {\n var result;\n var tokenValue = formatDistanceLocale[token];\n if (typeof tokenValue === 'string') {\n result = tokenValue;\n } else if (count === 1) {\n result = tokenValue.one;\n } else {\n result = tokenValue.other.replace('{{count}}', count.toString());\n }\n if (options !== null && options !== void 0 && options.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return 'in ' + result;\n } else {\n return result + ' ago';\n }\n }\n return result;\n};\nexport default formatDistance;","export default function buildFormatLongFn(args) {\n return function () {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n // TODO: Remove String()\n var width = options.width ? String(options.width) : args.defaultWidth;\n var format = args.formats[width] || args.formats[args.defaultWidth];\n return format;\n };\n}","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\nvar dateFormats = {\n full: 'EEEE, MMMM do, y',\n long: 'MMMM do, y',\n medium: 'MMM d, y',\n short: 'MM/dd/yyyy'\n};\nvar timeFormats = {\n full: 'h:mm:ss a zzzz',\n long: 'h:mm:ss a z',\n medium: 'h:mm:ss a',\n short: 'h:mm a'\n};\nvar dateTimeFormats = {\n full: \"{{date}} 'at' {{time}}\",\n long: \"{{date}} 'at' {{time}}\",\n medium: '{{date}}, {{time}}',\n short: '{{date}}, {{time}}'\n};\nvar formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: 'full'\n }),\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: 'full'\n }),\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: 'full'\n })\n};\nexport default formatLong;","var formatRelativeLocale = {\n lastWeek: \"'last' eeee 'at' p\",\n yesterday: \"'yesterday at' p\",\n today: \"'today at' p\",\n tomorrow: \"'tomorrow at' p\",\n nextWeek: \"eeee 'at' p\",\n other: 'P'\n};\nvar formatRelative = function formatRelative(token, _date, _baseDate, _options) {\n return formatRelativeLocale[token];\n};\nexport default formatRelative;","export default function buildLocalizeFn(args) {\n return function (dirtyIndex, options) {\n var context = options !== null && options !== void 0 && options.context ? String(options.context) : 'standalone';\n var valuesArray;\n if (context === 'formatting' && args.formattingValues) {\n var defaultWidth = args.defaultFormattingWidth || args.defaultWidth;\n var width = options !== null && options !== void 0 && options.width ? String(options.width) : defaultWidth;\n valuesArray = args.formattingValues[width] || args.formattingValues[defaultWidth];\n } else {\n var _defaultWidth = args.defaultWidth;\n var _width = options !== null && options !== void 0 && options.width ? String(options.width) : args.defaultWidth;\n valuesArray = args.values[_width] || args.values[_defaultWidth];\n }\n var index = args.argumentCallback ? args.argumentCallback(dirtyIndex) : dirtyIndex;\n // @ts-ignore: For some reason TypeScript just don't want to match it, no matter how hard we try. I challenge you to try to remove it!\n return valuesArray[index];\n };\n}","import buildLocalizeFn from \"../../../_lib/buildLocalizeFn/index.js\";\nvar eraValues = {\n narrow: ['B', 'A'],\n abbreviated: ['BC', 'AD'],\n wide: ['Before Christ', 'Anno Domini']\n};\nvar quarterValues = {\n narrow: ['1', '2', '3', '4'],\n abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'],\n wide: ['1st quarter', '2nd quarter', '3rd quarter', '4th quarter']\n};\n\n// Note: in English, the names of days of the week and months are capitalized.\n// If you are making a new locale based on this one, check if the same is true for the language you're working on.\n// Generally, formatted dates should look like they are in the middle of a sentence,\n// e.g. in Spanish language the weekdays and months should be in the lowercase.\nvar monthValues = {\n narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],\n abbreviated: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n wide: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']\n};\nvar dayValues = {\n narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],\n short: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n abbreviated: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n wide: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']\n};\nvar dayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n }\n};\nvar formattingDayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n }\n};\nvar ordinalNumber = function ordinalNumber(dirtyNumber, _options) {\n var number = Number(dirtyNumber);\n\n // If ordinal numbers depend on context, for example,\n // if they are different for different grammatical genders,\n // use `options.unit`.\n //\n // `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',\n // 'day', 'hour', 'minute', 'second'.\n\n var rem100 = number % 100;\n if (rem100 > 20 || rem100 < 10) {\n switch (rem100 % 10) {\n case 1:\n return number + 'st';\n case 2:\n return number + 'nd';\n case 3:\n return number + 'rd';\n }\n }\n return number + 'th';\n};\nvar localize = {\n ordinalNumber: ordinalNumber,\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: 'wide'\n }),\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: 'wide',\n argumentCallback: function argumentCallback(quarter) {\n return quarter - 1;\n }\n }),\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: 'wide'\n }),\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: 'wide'\n }),\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: 'wide',\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: 'wide'\n })\n};\nexport default localize;","export default function buildMatchFn(args) {\n return function (string) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var width = options.width;\n var matchPattern = width && args.matchPatterns[width] || args.matchPatterns[args.defaultMatchWidth];\n var matchResult = string.match(matchPattern);\n if (!matchResult) {\n return null;\n }\n var matchedString = matchResult[0];\n var parsePatterns = width && args.parsePatterns[width] || args.parsePatterns[args.defaultParseWidth];\n var key = Array.isArray(parsePatterns) ? findIndex(parsePatterns, function (pattern) {\n return pattern.test(matchedString);\n }) : findKey(parsePatterns, function (pattern) {\n return pattern.test(matchedString);\n });\n var value;\n value = args.valueCallback ? args.valueCallback(key) : key;\n value = options.valueCallback ? options.valueCallback(value) : value;\n var rest = string.slice(matchedString.length);\n return {\n value: value,\n rest: rest\n };\n };\n}\nfunction findKey(object, predicate) {\n for (var key in object) {\n if (object.hasOwnProperty(key) && predicate(object[key])) {\n return key;\n }\n }\n return undefined;\n}\nfunction findIndex(array, predicate) {\n for (var key = 0; key < array.length; key++) {\n if (predicate(array[key])) {\n return key;\n }\n }\n return undefined;\n}","import buildMatchFn from \"../../../_lib/buildMatchFn/index.js\";\nimport buildMatchPatternFn from \"../../../_lib/buildMatchPatternFn/index.js\";\nvar matchOrdinalNumberPattern = /^(\\d+)(th|st|nd|rd)?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n narrow: /^(b|a)/i,\n abbreviated: /^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)/i,\n wide: /^(before christ|before common era|anno domini|common era)/i\n};\nvar parseEraPatterns = {\n any: [/^b/i, /^(a|c)/i]\n};\nvar matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^q[1234]/i,\n wide: /^[1234](th|st|nd|rd)? quarter/i\n};\nvar parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i]\n};\nvar matchMonthPatterns = {\n narrow: /^[jfmasond]/i,\n abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,\n wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i\n};\nvar parseMonthPatterns = {\n narrow: [/^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],\n any: [/^ja/i, /^f/i, /^mar/i, /^ap/i, /^may/i, /^jun/i, /^jul/i, /^au/i, /^s/i, /^o/i, /^n/i, /^d/i]\n};\nvar matchDayPatterns = {\n narrow: /^[smtwf]/i,\n short: /^(su|mo|tu|we|th|fr|sa)/i,\n abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,\n wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i\n};\nvar parseDayPatterns = {\n narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],\n any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i]\n};\nvar matchDayPeriodPatterns = {\n narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,\n any: /^([ap]\\.?\\s?m\\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i\n};\nvar parseDayPeriodPatterns = {\n any: {\n am: /^a/i,\n pm: /^p/i,\n midnight: /^mi/i,\n noon: /^no/i,\n morning: /morning/i,\n afternoon: /afternoon/i,\n evening: /evening/i,\n night: /night/i\n }\n};\nvar match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: function valueCallback(value) {\n return parseInt(value, 10);\n }\n }),\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseEraPatterns,\n defaultParseWidth: 'any'\n }),\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: 'any',\n valueCallback: function valueCallback(index) {\n return index + 1;\n }\n }),\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: 'any'\n }),\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseDayPatterns,\n defaultParseWidth: 'any'\n }),\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: 'any',\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: 'any'\n })\n};\nexport default match;","export default function buildMatchPatternFn(args) {\n return function (string) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var matchResult = string.match(args.matchPattern);\n if (!matchResult) return null;\n var matchedString = matchResult[0];\n var parseResult = string.match(args.parsePattern);\n if (!parseResult) return null;\n var value = args.valueCallback ? args.valueCallback(parseResult[0]) : parseResult[0];\n value = options.valueCallback ? options.valueCallback(value) : value;\n var rest = string.slice(matchedString.length);\n return {\n value: value,\n rest: rest\n };\n };\n}","import formatDistance from \"./_lib/formatDistance/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\nimport formatRelative from \"./_lib/formatRelative/index.js\";\nimport localize from \"./_lib/localize/index.js\";\nimport match from \"./_lib/match/index.js\";\n/**\n * @type {Locale}\n * @category Locales\n * @summary English locale (United States).\n * @language English\n * @iso-639-2 eng\n * @author Sasha Koss [@kossnocorp]{@link https://github.com/kossnocorp}\n * @author Lesha Koss [@leshakoss]{@link https://github.com/leshakoss}\n */\nvar locale = {\n code: 'en-US',\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 0 /* Sunday */,\n firstWeekContainsDate: 1\n }\n};\nexport default locale;","import defaultLocale from \"../../locale/en-US/index.js\";\nexport default defaultLocale;","import isValid from \"../isValid/index.js\";\nimport subMilliseconds from \"../subMilliseconds/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport formatters from \"../_lib/format/formatters/index.js\";\nimport longFormatters from \"../_lib/format/longFormatters/index.js\";\nimport getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport { isProtectedDayOfYearToken, isProtectedWeekYearToken, throwProtectedError } from \"../_lib/protectedTokens/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getDefaultOptions } from \"../_lib/defaultOptions/index.js\";\nimport defaultLocale from \"../_lib/defaultLocale/index.js\"; // This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\nvar formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g;\n\n// This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\nvar longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\nvar escapedStringRegExp = /^'([^]*?)'?$/;\nvar doubleQuoteRegExp = /''/g;\nvar unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n\n/**\n * @name format\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format. The result may vary by locale.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * The characters wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n * (see the last example)\n *\n * Format of the string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 7 below the table).\n *\n * Accepted patterns:\n * | Unit | Pattern | Result examples | Notes |\n * |---------------------------------|---------|-----------------------------------|-------|\n * | Era | G..GGG | AD, BC | |\n * | | GGGG | Anno Domini, Before Christ | 2 |\n * | | GGGGG | A, B | |\n * | Calendar year | y | 44, 1, 1900, 2017 | 5 |\n * | | yo | 44th, 1st, 0th, 17th | 5,7 |\n * | | yy | 44, 01, 00, 17 | 5 |\n * | | yyy | 044, 001, 1900, 2017 | 5 |\n * | | yyyy | 0044, 0001, 1900, 2017 | 5 |\n * | | yyyyy | ... | 3,5 |\n * | Local week-numbering year | Y | 44, 1, 1900, 2017 | 5 |\n * | | Yo | 44th, 1st, 1900th, 2017th | 5,7 |\n * | | YY | 44, 01, 00, 17 | 5,8 |\n * | | YYY | 044, 001, 1900, 2017 | 5 |\n * | | YYYY | 0044, 0001, 1900, 2017 | 5,8 |\n * | | YYYYY | ... | 3,5 |\n * | ISO week-numbering year | R | -43, 0, 1, 1900, 2017 | 5,7 |\n * | | RR | -43, 00, 01, 1900, 2017 | 5,7 |\n * | | RRR | -043, 000, 001, 1900, 2017 | 5,7 |\n * | | RRRR | -0043, 0000, 0001, 1900, 2017 | 5,7 |\n * | | RRRRR | ... | 3,5,7 |\n * | Extended year | u | -43, 0, 1, 1900, 2017 | 5 |\n * | | uu | -43, 01, 1900, 2017 | 5 |\n * | | uuu | -043, 001, 1900, 2017 | 5 |\n * | | uuuu | -0043, 0001, 1900, 2017 | 5 |\n * | | uuuuu | ... | 3,5 |\n * | Quarter (formatting) | Q | 1, 2, 3, 4 | |\n * | | Qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | QQ | 01, 02, 03, 04 | |\n * | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | q | 1, 2, 3, 4 | |\n * | | qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | qq | 01, 02, 03, 04 | |\n * | | qqq | Q1, Q2, Q3, Q4 | |\n * | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | qqqqq | 1, 2, 3, 4 | 4 |\n * | Month (formatting) | M | 1, 2, ..., 12 | |\n * | | Mo | 1st, 2nd, ..., 12th | 7 |\n * | | MM | 01, 02, ..., 12 | |\n * | | MMM | Jan, Feb, ..., Dec | |\n * | | MMMM | January, February, ..., December | 2 |\n * | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | L | 1, 2, ..., 12 | |\n * | | Lo | 1st, 2nd, ..., 12th | 7 |\n * | | LL | 01, 02, ..., 12 | |\n * | | LLL | Jan, Feb, ..., Dec | |\n * | | LLLL | January, February, ..., December | 2 |\n * | | LLLLL | J, F, ..., D | |\n * | Local week of year | w | 1, 2, ..., 53 | |\n * | | wo | 1st, 2nd, ..., 53th | 7 |\n * | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | I | 1, 2, ..., 53 | 7 |\n * | | Io | 1st, 2nd, ..., 53th | 7 |\n * | | II | 01, 02, ..., 53 | 7 |\n * | Day of month | d | 1, 2, ..., 31 | |\n * | | do | 1st, 2nd, ..., 31st | 7 |\n * | | dd | 01, 02, ..., 31 | |\n * | Day of year | D | 1, 2, ..., 365, 366 | 9 |\n * | | Do | 1st, 2nd, ..., 365th, 366th | 7 |\n * | | DD | 01, 02, ..., 365, 366 | 9 |\n * | | DDD | 001, 002, ..., 365, 366 | |\n * | | DDDD | ... | 3 |\n * | Day of week (formatting) | E..EEE | Mon, Tue, Wed, ..., Sun | |\n * | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | EEEEE | M, T, W, T, F, S, S | |\n * | | EEEEEE | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | ISO day of week (formatting) | i | 1, 2, 3, ..., 7 | 7 |\n * | | io | 1st, 2nd, ..., 7th | 7 |\n * | | ii | 01, 02, ..., 07 | 7 |\n * | | iii | Mon, Tue, Wed, ..., Sun | 7 |\n * | | iiii | Monday, Tuesday, ..., Sunday | 2,7 |\n * | | iiiii | M, T, W, T, F, S, S | 7 |\n * | | iiiiii | Mo, Tu, We, Th, Fr, Sa, Su | 7 |\n * | Local day of week (formatting) | e | 2, 3, 4, ..., 1 | |\n * | | eo | 2nd, 3rd, ..., 1st | 7 |\n * | | ee | 02, 03, ..., 01 | |\n * | | eee | Mon, Tue, Wed, ..., Sun | |\n * | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | eeeee | M, T, W, T, F, S, S | |\n * | | eeeeee | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | Local day of week (stand-alone) | c | 2, 3, 4, ..., 1 | |\n * | | co | 2nd, 3rd, ..., 1st | 7 |\n * | | cc | 02, 03, ..., 01 | |\n * | | ccc | Mon, Tue, Wed, ..., Sun | |\n * | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | ccccc | M, T, W, T, F, S, S | |\n * | | cccccc | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | AM, PM | a..aa | AM, PM | |\n * | | aaa | am, pm | |\n * | | aaaa | a.m., p.m. | 2 |\n * | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | b..bb | AM, PM, noon, midnight | |\n * | | bbb | am, pm, noon, midnight | |\n * | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | bbbbb | a, p, n, mi | |\n * | Flexible day period | B..BBB | at night, in the morning, ... | |\n * | | BBBB | at night, in the morning, ... | 2 |\n * | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | h | 1, 2, ..., 11, 12 | |\n * | | ho | 1st, 2nd, ..., 11th, 12th | 7 |\n * | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | H | 0, 1, 2, ..., 23 | |\n * | | Ho | 0th, 1st, 2nd, ..., 23rd | 7 |\n * | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | K | 1, 2, ..., 11, 0 | |\n * | | Ko | 1st, 2nd, ..., 11th, 0th | 7 |\n * | | KK | 01, 02, ..., 11, 00 | |\n * | Hour [1-24] | k | 24, 1, 2, ..., 23 | |\n * | | ko | 24th, 1st, 2nd, ..., 23rd | 7 |\n * | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | m | 0, 1, ..., 59 | |\n * | | mo | 0th, 1st, ..., 59th | 7 |\n * | | mm | 00, 01, ..., 59 | |\n * | Second | s | 0, 1, ..., 59 | |\n * | | so | 0th, 1st, ..., 59th | 7 |\n * | | ss | 00, 01, ..., 59 | |\n * | Fraction of second | S | 0, 1, ..., 9 | |\n * | | SS | 00, 01, ..., 99 | |\n * | | SSS | 000, 001, ..., 999 | |\n * | | SSSS | ... | 3 |\n * | Timezone (ISO-8601 w/ Z) | X | -08, +0530, Z | |\n * | | XX | -0800, +0530, Z | |\n * | | XXX | -08:00, +05:30, Z | |\n * | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | x | -08, +0530, +00 | |\n * | | xx | -0800, +0530, +0000 | |\n * | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Timezone (GMT) | O...OOO | GMT-8, GMT+5:30, GMT+0 | |\n * | | OOOO | GMT-08:00, GMT+05:30, GMT+00:00 | 2 |\n * | Timezone (specific non-locat.) | z...zzz | GMT-8, GMT+5:30, GMT+0 | 6 |\n * | | zzzz | GMT-08:00, GMT+05:30, GMT+00:00 | 2,6 |\n * | Seconds timestamp | t | 512969520 | 7 |\n * | | tt | ... | 3,7 |\n * | Milliseconds timestamp | T | 512969520900 | 7 |\n * | | TT | ... | 3,7 |\n * | Long localized date | P | 04/29/1453 | 7 |\n * | | PP | Apr 29, 1453 | 7 |\n * | | PPP | April 29th, 1453 | 7 |\n * | | PPPP | Friday, April 29th, 1453 | 2,7 |\n * | Long localized time | p | 12:00 AM | 7 |\n * | | pp | 12:00:00 AM | 7 |\n * | | ppp | 12:00:00 AM GMT+2 | 7 |\n * | | pppp | 12:00:00 AM GMT+02:00 | 2,7 |\n * | Combination of date and time | Pp | 04/29/1453, 12:00 AM | 7 |\n * | | PPpp | Apr 29, 1453, 12:00:00 AM | 7 |\n * | | PPPppp | April 29th, 1453 at ... | 7 |\n * | | PPPPpppp| Friday, April 29th, 1453 at ... | 2,7 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table (e.g. `EEEEEEEEEEE`)\n * the output will be the same as default pattern for this unit, usually\n * the longest one (in case of ISO weekdays, `EEEE`). Default patterns for units\n * are marked with \"2\" in the last column of the table.\n *\n * `format(new Date(2017, 10, 6), 'MMM') //=> 'Nov'`\n *\n * `format(new Date(2017, 10, 6), 'MMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMM') //=> 'N'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMMM') //=> 'November'`\n *\n * 3. Some patterns could be unlimited length (such as `yyyyyyyy`).\n * The output will be padded with zeros to match the length of the pattern.\n *\n * `format(new Date(2017, 10, 6), 'yyyyyyyy') //=> '00002017'`\n *\n * 4. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 5. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` always returns the last two digits of a year,\n * while `uu` pads single digit years to 2 characters and returns other years unchanged:\n *\n * | Year | `yy` | `uu` |\n * |------|------|------|\n * | 1 | 01 | 01 |\n * | 14 | 14 | 14 |\n * | 376 | 76 | 376 |\n * | 1453 | 53 | 1453 |\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [getISOWeekYear]{@link https://date-fns.org/docs/getISOWeekYear}\n * and [getWeekYear]{@link https://date-fns.org/docs/getWeekYear}).\n *\n * 6. Specific non-location timezones are currently unavailable in `date-fns`,\n * so right now these tokens fall back to GMT timezones.\n *\n * 7. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `t`: seconds timestamp\n * - `T`: milliseconds timestamp\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 8. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n * You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 9. `D` and `DD` tokens represent days of the year but they are often confused with days of the month.\n * You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * @param {Date|Number} date - the original date\n * @param {String} format - the string of tokens\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {Number} [options.firstWeekContainsDate=1] - the day of January, which is\n * @param {Boolean} [options.useAdditionalWeekYearTokens=false] - if true, allows usage of the week-numbering year tokens `YY` and `YYYY`;\n * see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @param {Boolean} [options.useAdditionalDayOfYearTokens=false] - if true, allows usage of the day of year tokens `D` and `DD`;\n * see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @returns {String} the formatted date string\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `options.locale` must contain `localize` property\n * @throws {RangeError} `options.locale` must contain `formatLong` property\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} format string contains an unescaped latin alphabet character\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * const result = format(new Date(2014, 1, 11), 'MM/dd/yyyy')\n * //=> '02/11/2014'\n *\n * @example\n * // Represent 2 July 2014 in Esperanto:\n * import { eoLocale } from 'date-fns/locale/eo'\n * const result = format(new Date(2014, 6, 2), \"do 'de' MMMM yyyy\", {\n * locale: eoLocale\n * })\n * //=> '2-a de julio 2014'\n *\n * @example\n * // Escape string by single quote characters:\n * const result = format(new Date(2014, 6, 2, 15), \"h 'o''clock'\")\n * //=> \"3 o'clock\"\n */\n\nexport default function format(dirtyDate, dirtyFormatStr, options) {\n var _ref, _options$locale, _ref2, _ref3, _ref4, _options$firstWeekCon, _options$locale2, _options$locale2$opti, _defaultOptions$local, _defaultOptions$local2, _ref5, _ref6, _ref7, _options$weekStartsOn, _options$locale3, _options$locale3$opti, _defaultOptions$local3, _defaultOptions$local4;\n requiredArgs(2, arguments);\n var formatStr = String(dirtyFormatStr);\n var defaultOptions = getDefaultOptions();\n var locale = (_ref = (_options$locale = options === null || options === void 0 ? void 0 : options.locale) !== null && _options$locale !== void 0 ? _options$locale : defaultOptions.locale) !== null && _ref !== void 0 ? _ref : defaultLocale;\n var firstWeekContainsDate = toInteger((_ref2 = (_ref3 = (_ref4 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale2 = options.locale) === null || _options$locale2 === void 0 ? void 0 : (_options$locale2$opti = _options$locale2.options) === null || _options$locale2$opti === void 0 ? void 0 : _options$locale2$opti.firstWeekContainsDate) !== null && _ref4 !== void 0 ? _ref4 : defaultOptions.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : 1);\n\n // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n var weekStartsOn = toInteger((_ref5 = (_ref6 = (_ref7 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale3 = options.locale) === null || _options$locale3 === void 0 ? void 0 : (_options$locale3$opti = _options$locale3.options) === null || _options$locale3$opti === void 0 ? void 0 : _options$locale3$opti.weekStartsOn) !== null && _ref7 !== void 0 ? _ref7 : defaultOptions.weekStartsOn) !== null && _ref6 !== void 0 ? _ref6 : (_defaultOptions$local3 = defaultOptions.locale) === null || _defaultOptions$local3 === void 0 ? void 0 : (_defaultOptions$local4 = _defaultOptions$local3.options) === null || _defaultOptions$local4 === void 0 ? void 0 : _defaultOptions$local4.weekStartsOn) !== null && _ref5 !== void 0 ? _ref5 : 0);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n if (!locale.localize) {\n throw new RangeError('locale must contain localize property');\n }\n if (!locale.formatLong) {\n throw new RangeError('locale must contain formatLong property');\n }\n var originalDate = toDate(dirtyDate);\n if (!isValid(originalDate)) {\n throw new RangeError('Invalid time value');\n }\n\n // Convert the date in system timezone to the same date in UTC+00:00 timezone.\n // This ensures that when UTC functions will be implemented, locales will be compatible with them.\n // See an issue about UTC functions: https://github.com/date-fns/date-fns/issues/376\n var timezoneOffset = getTimezoneOffsetInMilliseconds(originalDate);\n var utcDate = subMilliseconds(originalDate, timezoneOffset);\n var formatterOptions = {\n firstWeekContainsDate: firstWeekContainsDate,\n weekStartsOn: weekStartsOn,\n locale: locale,\n _originalDate: originalDate\n };\n var result = formatStr.match(longFormattingTokensRegExp).map(function (substring) {\n var firstCharacter = substring[0];\n if (firstCharacter === 'p' || firstCharacter === 'P') {\n var longFormatter = longFormatters[firstCharacter];\n return longFormatter(substring, locale.formatLong);\n }\n return substring;\n }).join('').match(formattingTokensRegExp).map(function (substring) {\n // Replace two single quote characters with one single quote character\n if (substring === \"''\") {\n return \"'\";\n }\n var firstCharacter = substring[0];\n if (firstCharacter === \"'\") {\n return cleanEscapedString(substring);\n }\n var formatter = formatters[firstCharacter];\n if (formatter) {\n if (!(options !== null && options !== void 0 && options.useAdditionalWeekYearTokens) && isProtectedWeekYearToken(substring)) {\n throwProtectedError(substring, dirtyFormatStr, String(dirtyDate));\n }\n if (!(options !== null && options !== void 0 && options.useAdditionalDayOfYearTokens) && isProtectedDayOfYearToken(substring)) {\n throwProtectedError(substring, dirtyFormatStr, String(dirtyDate));\n }\n return formatter(utcDate, substring, locale.localize, formatterOptions);\n }\n if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n throw new RangeError('Format string contains an unescaped latin alphabet character `' + firstCharacter + '`');\n }\n return substring;\n }).join('');\n return result;\n}\nfunction cleanEscapedString(input) {\n var matched = input.match(escapedStringRegExp);\n if (!matched) {\n return input;\n }\n return matched[1].replace(doubleQuoteRegExp, \"'\");\n}","import isDate from \"../isDate/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isValid\n * @category Common Helpers\n * @summary Is the given date valid?\n *\n * @description\n * Returns false if argument is Invalid Date and true otherwise.\n * Argument is converted to Date using `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * Invalid Date is a Date, whose time value is NaN.\n *\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @param {*} date - the date to check\n * @returns {Boolean} the date is valid\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // For the valid date:\n * const result = isValid(new Date(2014, 1, 31))\n * //=> true\n *\n * @example\n * // For the value, convertable into a date:\n * const result = isValid(1393804800000)\n * //=> true\n *\n * @example\n * // For the invalid date:\n * const result = isValid(new Date(''))\n * //=> false\n */\nexport default function isValid(dirtyDate) {\n requiredArgs(1, arguments);\n if (!isDate(dirtyDate) && typeof dirtyDate !== 'number') {\n return false;\n }\n var date = toDate(dirtyDate);\n return !isNaN(Number(date));\n}","/**\n * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds.\n * They usually appear for dates that denote time before the timezones were introduced\n * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891\n * and GMT+01:00:00 after that date)\n *\n * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above,\n * which would lead to incorrect calculations.\n *\n * This function returns the timezone offset in milliseconds that takes seconds in account.\n */\nexport default function getTimezoneOffsetInMilliseconds(date) {\n var utcDate = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds()));\n utcDate.setUTCFullYear(date.getFullYear());\n return date.getTime() - utcDate.getTime();\n}","import addMilliseconds from \"../addMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\n/**\n * @name subMilliseconds\n * @category Millisecond Helpers\n * @summary Subtract the specified number of milliseconds from the given date.\n *\n * @description\n * Subtract the specified number of milliseconds from the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the milliseconds subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 750 milliseconds from 10 July 2014 12:45:30.000:\n * const result = subMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:29.250\n */\nexport default function subMilliseconds(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMilliseconds(dirtyDate, -amount);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addMilliseconds\n * @category Millisecond Helpers\n * @summary Add the specified number of milliseconds to the given date.\n *\n * @description\n * Add the specified number of milliseconds to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the milliseconds added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 750 milliseconds to 10 July 2014 12:45:30.000:\n * const result = addMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:30.750\n */\nexport default function addMilliseconds(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var timestamp = toDate(dirtyDate).getTime();\n var amount = toInteger(dirtyAmount);\n return new Date(timestamp + amount);\n}","import React, { Component, createRef } from 'react';\nimport isEqual from 'react-fast-compare';\nimport PropTypes from 'prop-types';\n\nimport Column from '../../../../layout/Column';\nimport Row from '../../../../layout/Row';\nimport Button from '../../../../components/Button';\n\nexport default class EditableListForm extends Component {\n static propTypes = {\n addValueOnFieldChange: PropTypes.bool,\n noLabels: PropTypes.bool,\n buttonName: PropTypes.string,\n buttonStyle: PropTypes.string,\n components: PropTypes.instanceOf(Array),\n displayType: PropTypes.string,\n disabled: PropTypes.bool,\n getMainFormButtonWidth: PropTypes.func,\n error: PropTypes.string,\n errorPersist: PropTypes.bool,\n onSubmit: PropTypes.func,\n validate: PropTypes.func,\n validationmessage: PropTypes.string,\n };\n\n static getMainFormValue(components) {\n const mainFormValue = new Array(components.length);\n\n components.forEach((component, index) => {\n mainFormValue[index] = component.props.value || undefined;\n });\n\n return mainFormValue;\n }\n\n constructor(props) {\n super(props);\n const {\n components,\n } = props;\n\n this.submitButtonRef = createRef();\n this.handleOnChange = this.handleOnChange.bind(this);\n this.submitForm = this.submitForm.bind(this);\n\n this.state = {\n components,\n errors: {},\n mainError: null,\n mainFormValue: EditableListForm.getMainFormValue(components),\n refs: [],\n };\n }\n\n componentDidMount() {\n const {\n addValueOnFieldChange,\n getMainFormButtonWidth,\n } = this.props;\n this.createRefs();\n\n if (getMainFormButtonWidth) {\n getMainFormButtonWidth(\n !addValueOnFieldChange\n ? this.submitButtonRef.current.clientWidth\n : 0,\n );\n }\n }\n\n static getDerivedStateFromProps(nextProps, prevState) {\n const state = {};\n const {\n components: propsComponents,\n } = nextProps;\n\n const {\n components: stateComponents,\n } = prevState;\n if (\n !isEqual(propsComponents, stateComponents)\n && !isEqual(\n EditableListForm.getMainFormValue(propsComponents),\n EditableListForm.getMainFormValue(stateComponents),\n )\n ) {\n state.mainFormValue = EditableListForm.getMainFormValue(propsComponents);\n state.components = propsComponents;\n }\n\n return state;\n }\n\n getFormCssClasses() {\n const { noLabels } = this.props;\n const cssClasses = ['tyk-editable-list__form'];\n\n if (noLabels) {\n cssClasses.push('no-labels');\n }\n\n return cssClasses.join(' ');\n }\n\n getButtonClassName() {\n const { buttonStyle, displayType } = this.props;\n const cssClasses = [];\n\n if (buttonStyle) {\n cssClasses.push(buttonStyle);\n }\n\n if (displayType) {\n cssClasses.push(displayType);\n }\n\n return cssClasses.join(' ');\n }\n\n getComponentsError(component) {\n const {\n error,\n errors,\n mainError,\n } = this.state;\n\n if (error || mainError) {\n errors[component.props.name] = 'true';\n } else if (!(error || mainError) && errors[component.props.name] === 'true') {\n delete errors[component.props.name];\n }\n\n return errors[component.props.name] ? errors[component.props.name].toString() : undefined;\n }\n\n createRefs() {\n const { components } = this.props;\n const refs = [];\n\n components.forEach(() => {\n refs.push(createRef());\n });\n\n this.setState({\n refs,\n });\n }\n\n validateValue(value, props) {\n const { mainError, errors } = this.state;\n const { error, errorPersist } = this.props;\n\n const validatorsNames = props.validate ? Object.keys(props.validate) : [];\n // if there is a general form error don't take field errors into consideration\n const tempState = {\n errors: (error || mainError) ? {} : Object.assign({}, errors),\n };\n let ok = true;\n\n // if the error should stay after changing fields values don't take actions\n if (errorPersist) {\n return tempState;\n }\n\n // validate each field from the form\n for (let i = 0; i < validatorsNames.length; i += 1) {\n const validator = props.validate[validatorsNames[i]];\n if (validator(value)) {\n tempState.errors[props.name] = props.validationmessages[validatorsNames[i]];\n ok = false;\n break;\n }\n }\n\n // if the field is ok delete its error\n if (ok) {\n delete tempState.errors[props.name];\n }\n\n tempState.mainError = null;\n\n return tempState;\n }\n\n hasMainFormErrors(errors) {\n const { components, errorPersist } = this.props;\n const { mainFormValue } = this.state;\n const tempState = {\n errors: Object.assign({}, errors),\n };\n\n if (errorPersist && mainFormValue.indexOf(undefined) === -1) {\n return false;\n }\n\n if (Object.keys(tempState.errors).length > 0) {\n return true;\n }\n\n components.forEach((component, index) => {\n tempState.errors = Object.assign(\n {},\n tempState.errors,\n this.validateValue(mainFormValue[index], component.props).errors,\n );\n });\n\n return Object.keys(tempState.errors).length > 0;\n }\n\n handleOnChange(component, index, value) {\n const { addValueOnFieldChange } = this.props;\n let tempState = this.state;\n\n tempState = Object.assign({}, tempState, this.validateValue(value, component.props));\n\n if (!tempState.errors[component.props.name]) {\n tempState.mainFormValue[index] = value;\n\n if (component.props.onChange) {\n component.props.onChange(value);\n }\n }\n\n this.setState(previousState => Object.assign({}, previousState, tempState), () => {\n if (addValueOnFieldChange) {\n this.submitForm();\n }\n });\n }\n\n resetForm() {\n const { refs } = this.state;\n const {\n components,\n } = this.props;\n\n refs.forEach((ref) => {\n if (ref.current?.reset) {\n ref.current.reset();\n }\n });\n\n this.setState({\n errors: {},\n mainError: null,\n mainFormValue: EditableListForm.getMainFormValue(components),\n });\n }\n\n showMainError(error) {\n this.setState({\n mainError: error,\n });\n }\n\n submitForm() {\n const { errors, mainFormValue } = this.state;\n const {\n errorPersist, onSubmit, validate, validationmessage,\n } = this.props;\n\n if (errorPersist) {\n onSubmit(mainFormValue);\n this.resetForm();\n }\n\n if (\n Object.keys(errors).length === 0\n && (onSubmit && typeof onSubmit === 'function')\n ) {\n if (validate) {\n if (validate(mainFormValue)) {\n this.showMainError(validationmessage);\n } else {\n onSubmit(mainFormValue);\n this.resetForm();\n }\n } else {\n onSubmit(mainFormValue);\n this.resetForm();\n }\n }\n }\n\n render() {\n const {\n addValueOnFieldChange, components, buttonName, disabled, displayType, error,\n } = this.props;\n const {\n mainError, refs, errors,\n } = this.state;\n\n return (\n
    \n
    \n \n {\n components.map((component, index) => {\n const ComponentName = component.name;\n const {\n onChange, value, ...rest\n } = component.props;\n\n return (\n \n \n \n );\n })\n }\n \n {\n !addValueOnFieldChange\n ? (\n \n \n { buttonName || 'ADD' }\n \n \n )\n : null\n }\n
    \n {\n error || mainError\n ? (\n
    \n

    \n { error || mainError }\n

    \n
    \n )\n : null\n }\n
    \n );\n }\n}\n","import React, { Component, Fragment, createRef } from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport { fromJS } from 'immutable';\n\nimport format from 'date-fns/format';\nimport isDate from 'date-fns/isDate';\n\nimport EditableListForm from './js/EditableListForm';\nimport Column from '../../../layout/Column';\nimport Icon from '../../../components/Icon';\nimport Row from '../../../layout/Row';\n\nexport default class EditableList extends Component {\n static propTypes = {\n addValueOnFieldChange: PropTypes.bool,\n disabled: PropTypes.bool,\n error: PropTypes.string,\n config: PropTypes.instanceOf(Object),\n onChange: PropTypes.func,\n label: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.func,\n PropTypes.string,\n ]),\n value: PropTypes.oneOfType([\n PropTypes.instanceOf(Array),\n PropTypes.instanceOf(Object),\n ]),\n };\n\n static getItemListValue(itemValue) {\n let tempValue = null;\n\n if (typeof itemValue === 'string') {\n tempValue = itemValue;\n }\n\n if (Object.prototype.toString.call(itemValue) === '[object Object]') {\n tempValue = itemValue.name;\n }\n\n if (isDate(itemValue)) {\n tempValue = format(itemValue, 'dd/MM/yyyy');\n }\n\n return tempValue;\n }\n\n static getListItemCssClass(displayType) {\n const cssClasses = [];\n\n if (displayType === 'inline') {\n cssClasses.push('tyk-editable-list-item--inline');\n }\n\n return cssClasses.join(' ');\n }\n\n constructor(props) {\n super(props);\n const {\n value,\n } = this.props;\n\n this.state = {\n initialValue: value || '',\n value: value || [],\n buttonWidth: 0,\n };\n\n this.startIndex = 1;\n\n this.handleFormSubmit = this.handleFormSubmit.bind(this);\n this.getMainFormButtonWidth = this.getMainFormButtonWidth.bind(this);\n this.dropdownListItemRef = createRef();\n }\n\n static getDerivedStateFromProps(nextProps, prevState) {\n const state = {};\n\n if (\n nextProps.value && JSON.stringify(nextProps.value)\n !== JSON.stringify(prevState.initialValue)\n ) {\n state.value = nextProps.value || [];\n state.initialValue = nextProps.value || '';\n }\n\n return state.value ? state : null;\n }\n\n getListItemsCssClass(displayType) {\n const { config } = this.props;\n const cssClasses = ['tyk-editable-list-items'];\n\n cssClasses.push(config.displayType || 'table');\n\n if (displayType === 'inline') {\n cssClasses.push('tyk-editable-list-items--inline');\n }\n\n return cssClasses.join(' ');\n }\n\n getFormInputKey() {\n this.startIndex += 1;\n return this.startIndex;\n }\n\n // generate list item value's based on the display types\n // table, inline, list\n getListItemText(itemData) {\n const { config } = this.props;\n let value = null;\n\n switch (config.displayType) {\n case 'list':\n case 'inline': {\n const itemText = itemData.value.reduce((prevValue, itemValue, index) => {\n const tempValue = EditableList.getItemListValue(itemValue);\n let separator = ', ';\n\n if (index === itemData.value.length - 1) {\n separator = '';\n }\n\n return prevValue + tempValue + separator;\n }, '');\n\n value = itemText;\n\n break;\n }\n default:\n value = (\n \n {\n config.components.map((component, index) => (\n \n { EditableList.getItemListValue(itemData.value[index]) }\n \n ))\n }\n \n );\n\n break;\n }\n\n return value;\n }\n\n getMainFormButtonWidth(value) {\n this.setState({\n buttonWidth: value,\n });\n }\n\n setItemEditMode(index) {\n const newValues = this.closeListItems();\n\n this.setState((previousState) => {\n const tempState = Object.assign({}, previousState);\n tempState.value = newValues;\n tempState.value[index].editMode = !tempState.value[index].editMode;\n\n return tempState;\n });\n }\n\n isInList(index, itemValue) {\n const { value } = this.state;\n let ok = false;\n\n value.forEach((item, itemIndex) => {\n if (JSON.stringify(item.value) === JSON.stringify(itemValue)) {\n if (index >= 0 && itemIndex === index) {\n ok = false;\n } else {\n ok = true;\n }\n }\n });\n\n return ok;\n }\n\n addValues(newValue) {\n const { value } = this.state;\n const { config } = this.props;\n const itemValue = {\n editMode: false,\n value: newValue,\n };\n const tempState = {\n value: value.slice(0),\n };\n\n if (config.children) {\n itemValue.children = [];\n }\n\n tempState.value.push(itemValue);\n\n return tempState;\n }\n\n removeListItem(index) {\n let removedItem;\n this.setState((previousState) => {\n const valueArr = previousState.value.slice(0);\n removedItem = valueArr.splice(index, 1);\n\n return {\n value: valueArr,\n };\n }, () => {\n this.triggerOnChange(index, removedItem, null);\n });\n }\n\n handleFormSubmit(value) {\n const tempState = this.addValues(value);\n this.setState(previousState => Object.assign({}, previousState, tempState), () => {\n this.triggerOnChange(tempState.value.length - 1, null, value);\n });\n }\n\n handleItemUpdate(index, value) {\n let prevValue;\n this.setState((previousState) => {\n const tempState = Object.assign({}, previousState);\n prevValue = fromJS(tempState.value[index].value).toJS();\n tempState.value[index].value = value;\n tempState.value[index].editMode = false;\n\n return tempState;\n }, () => {\n this.triggerOnChange(index, prevValue, value);\n });\n }\n\n handleChildrenOnChange(index, value) {\n let prevValue;\n this.setState((previousState) => {\n const tempState = Object.assign({}, previousState);\n prevValue = fromJS(tempState.value[index].children).toJS();\n tempState.value[index].children = value;\n\n return tempState;\n }, () => {\n this.triggerOnChange(index, prevValue, value);\n });\n }\n\n closeListItems() {\n const { value } = this.state;\n\n const newValues = value.map((itemValue) => {\n const tempItemValue = Object.assign({}, itemValue);\n\n if (tempItemValue.editMode) {\n tempItemValue.editMode = false;\n return tempItemValue;\n }\n\n return tempItemValue;\n });\n\n return newValues;\n }\n\n triggerOnChange(index, prevValue, nextValue) {\n const { onChange } = this.props;\n const { value } = this.state;\n\n if (onChange && typeof onChange === 'function') {\n onChange(((value.length) ? value : null), index, prevValue, nextValue);\n }\n }\n\n genListItem(itemData, index) {\n const { config, disabled } = this.props;\n const { buttonWidth, value } = this.state;\n\n const clonedComponents = fromJS(config.components).toJS();\n\n itemData.value.forEach((itemValue, itemIndex) => {\n clonedComponents[itemIndex].props.value = itemValue;\n });\n\n return (\n \n \n {\n !itemData.editMode\n ? (\n \n { this.getListItemText(itemData, index) }\n \n \n \n \n \n )\n : (\n \n \n \n \n )\n }\n \n {\n config.children\n ? (\n \n )\n : null\n }\n \n );\n }\n\n genList() {\n const { config } = this.props;\n const { buttonWidth, value } = this.state;\n\n if (!value || value.length === 0) {\n return null;\n }\n\n return (\n \n {\n config.displayType === 'table' || !config.displayType\n ? (\n \n \n {\n config.components.map((component, index) => (\n \n { component.props.label }\n \n ))\n }\n \n \n )\n : null\n }\n
      \n {\n value.map((itemData, index) => this.genListItem(itemData, index))\n }\n
    \n
    \n );\n }\n\n render() {\n const {\n addValueOnFieldChange, config, error, disabled, label,\n } = this.props;\n const appendToElement = document.querySelector(config.appendTo) || document.querySelector('body');\n\n return (\n
    \n {\n label\n ? \n : null\n }\n \n {\n config.appendTo\n ? ReactDOM.createPortal(\n this.genList(),\n appendToElement,\n )\n : this.genList()\n }\n
    \n );\n }\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport Button from '../../../components/Button';\n\nconst Header = ({\n label, addButtonName, onAddRow, disabled, readOnly,\n}) => (\n
    \n {\n label\n ? \n : null\n }\n {!disabled && !readOnly && (\n \n {addButtonName || 'Add'}\n \n )}\n
    \n);\n\nHeader.propTypes = {\n disabled: PropTypes.bool,\n readOnly: PropTypes.bool,\n onAddRow: PropTypes.func,\n addButtonName: PropTypes.string,\n label: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.element,\n PropTypes.node,\n ]),\n};\n\nexport default Header;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nconst ListHeader = ({\n fields,\n readOnly,\n}) => (\n
  • \n {\n fields.map(field => (\n
    {field?.props?.label}
    \n ))\n }\n
    Delete
    \n
  • \n);\n\nListHeader.propTypes = {\n fields: PropTypes.instanceOf(Array),\n readOnly: PropTypes.bool,\n};\n\nexport default ListHeader;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Button from '../../../components/Button';\n\nconst FieldsList = ({\n fields,\n disabled,\n readOnly,\n errors,\n components,\n onChange,\n onDelete,\n value,\n rowIndex,\n}) => (\n
  • \n {\n components.map((Component, index) => {\n let field = fields[index];\n let tempField = typeof field === 'function' ? field(rowIndex, index) : field;\n return (\n /* eslint-disable-next-line */\n
    \n \n
    \n );\n })\n }\n
    \n \n
    \n
  • \n);\n\nFieldsList.propTypes = {\n disabled: PropTypes.bool,\n readOnly: PropTypes.bool,\n rowIndex: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number,\n ]),\n fields: PropTypes.instanceOf(Array),\n errors: PropTypes.instanceOf(Array),\n components: PropTypes.instanceOf(Array),\n value: PropTypes.instanceOf(Array),\n onChange: PropTypes.func,\n onDelete: PropTypes.func,\n};\n\nexport default FieldsList;\n","import React, { useMemo, useState } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Header from './Header';\nimport ListHeader from './ListHeader';\nimport FieldsList from './FieldsList';\nimport validateValues from './validate-values';\nimport withValidation from './with-validation';\n\nlet id = 1;\n/* eslint-disable-next-line */\nconst getUID = prefix => `${prefix}-${id++}`;\n\n/**\n * Editable list is a component, that lists rows of form elements (can have n elements on a row),\n * and stores the values of all the rows in an Array list\n */\nconst EditableList2 = ({\n addButtonName,\n disabled,\n readOnly,\n fields,\n label,\n error,\n value = [],\n onChange = () => {},\n hideOnEmpty = true,\n wrapperClassName = '',\n}) => {\n const [internalErrors, setInteranlErrors] = useState(null);\n\n const updateRowValue = (rowIndex, fieldIndex, componentValue, isValid) => {\n const tempValueArr = !value ? [] : [...value];\n\n if (!value) {\n tempValueArr[rowIndex] = [...new Array(fields.length)];\n tempValueArr[rowIndex][fieldIndex] = componentValue;\n } else {\n const tempValue = [...tempValueArr[rowIndex]];\n tempValue[fieldIndex] = componentValue;\n tempValueArr[rowIndex] = tempValue;\n tempValueArr[rowIndex].id = value[rowIndex].id;\n }\n\n if (internalErrors?.[rowIndex]?.[fieldIndex] && isValid) {\n const tempErrors = [...internalErrors];\n const tempFieldError = [...tempErrors[rowIndex]];\n tempFieldError[fieldIndex] = null;\n tempErrors[rowIndex] = tempFieldError;\n setInteranlErrors(tempErrors);\n }\n onChange(tempValueArr);\n };\n\n const hasErrors = errors => Boolean(errors?.flat()?.filter(Boolean).length);\n\n const Components = useMemo(\n () => fields.map(field => {\n let tempField = typeof field === 'function' ? field() : field;\n\n return withValidation(tempField?.component || <>)\n }),\n [],\n );\n\n const onAddRow = () => {\n const errors = validateValues(fields, value);\n\n if (hasErrors(errors)) {\n setInteranlErrors(errors);\n return;\n }\n\n const newValue = [...new Array(fields.length)];\n newValue.id = getUID('row');\n\n onChange([\n ...value && value,\n newValue,\n ]);\n };\n\n const deleteRow = (index) => {\n if (!value) {\n return;\n }\n const tempValue = [...value];\n tempValue.splice(index, 1);\n onChange(tempValue);\n };\n\n return (\n
    \n \n {value?.length || !hideOnEmpty ? (\n
      \n {(value || [[]]).map((v, i) => (\n <>\n \n \n ))}\n \n
    \n ) : null}\n {error && error !== 'true' && error !== 'false' ? (\n

    {error}

    \n ) : null}\n
    \n );\n};\n\nEditableList2.propTypes = {\n /** Sets Editable list in edit mode.\n * If enabled all fields are disabled, the add button is hidden and delete button is disabled\n * */\n disabled: PropTypes.bool,\n /** Sets Editable list in read only mode.\n * If enabled all fields are displaying just the value,\n * the add button is hidden and delete button is disabled\n */\n readOnly: PropTypes.bool,\n /** Name of the Add button. By default has 'Add value' */\n addButtonName: PropTypes.string,\n /** Label of Editable list, is displayed above the list and inline with the Add button */\n label: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.element,\n PropTypes.node,\n ]),\n /** Array of form elements that you want the list to have\n * Each field is an object points to the Form element component that you want to use,\n * the props you want to apply on it,\n * and the size (as in width, it's like columns system, between 1 and 12)\n * Example:\n * ...\n * fields={[\n {\n component: Input2,\n styles: {\n width: \"200px\",\n },\n size: 4,\n props: {\n name: 'input',\n label: 'Claim name',\n theme: 'default rounded-corners',\n placeholder: 'Enter claim name',\n validate: formikRequired('This field is required')\n }\n },\n {\n component: Combobox2,\n size: 8,\n props: comboboxProps\n }\n ]}\n */\n fields: PropTypes.instanceOf(Array),\n /** onChange function is called everytime the value of editable list changes */\n onChange: PropTypes.func,\n /** value of editable list, wich is an Array (List of row values)\n * of Arrays (List of column values,\n * each column will have the value format depending on the component type)\n */\n value: PropTypes.oneOfType([\n PropTypes.instanceOf(Object),\n PropTypes.instanceOf(Array),\n ]),\n error: PropTypes.string,\n hideOnEmpty: PropTypes.bool,\n wrapperClassName: PropTypes.string,\n};\n\nexport default EditableList2;\n","import React, { useCallback, useState } from 'react';\n\nconst withValidation = Component => ({\n onChange,\n validate,\n error,\n ...rest\n}) => {\n const [internalError, setInternalError] = useState(null);\n const onFieldChange = useCallback((event) => {\n /* eslint-disable-next-line */\n const value = event?.target\n ? ['radio', 'checkbox'].includes(event.target.type)\n ? event.target.checked\n : event?.target.value\n : event;\n\n let isValid = true;\n if (validate && typeof validate === 'function') {\n const errorMsg = validate(value);\n isValid = !errorMsg;\n setInternalError(errorMsg);\n }\n\n onChange(value, isValid);\n }, [validate, onChange]);\n\n return ;\n};\n\nexport default withValidation;\n","const validateValues = (fields, rowValues) => (rowValues || [[undefined, undefined]])?.map(\n colValue => colValue?.map(\n (value, index) => fields?.[index]?.props?.validate\n && fields[index].props.validate(value),\n ),\n);\n\nexport default validateValues;\n","import React, { Component, Fragment, createRef } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Icon from '../../../components/Icon';\n\nexport default class FileInput extends Component {\n static propTypes = {\n accept: PropTypes.string,\n disabled: PropTypes.bool,\n id: PropTypes.string,\n error: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.bool,\n ]),\n label: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.func,\n PropTypes.string,\n ]),\n labelwidth: PropTypes.string,\n name: PropTypes.string,\n note: PropTypes.string,\n onChange: PropTypes.func,\n placeholder: PropTypes.string,\n theme: PropTypes.string,\n value: PropTypes.instanceOf(Object),\n wrapperClassName: PropTypes.string,\n }\n\n constructor(props) {\n super(props);\n\n this.handleOnChange = this.handleOnChange.bind(this);\n this.clearValue = this.clearValue.bind(this);\n this.fileInputRef = createRef();\n }\n\n getCssClasses() {\n const {\n error, theme, labelwidth, wrapperClassName = '',\n } = this.props;\n const cssClasses = [wrapperClassName, 'tyk-form-group'];\n const themes = theme ? theme.split(' ') : [];\n\n if (themes.length) {\n themes.forEach((iTheme) => {\n cssClasses.push(`tyk-form-group--${iTheme}`);\n });\n }\n\n if (labelwidth) {\n cssClasses.push('tyk-form-group--label-has-width');\n }\n\n if (error) {\n cssClasses.push('has-error');\n }\n\n return cssClasses.join(' ');\n }\n\n getLabelStyles() {\n const { labelwidth } = this.props;\n const styles = {};\n\n if (labelwidth) {\n styles.flexBasis = labelwidth;\n }\n\n return styles;\n }\n\n getNonLabelWidth() {\n const { labelwidth } = this.props;\n const styles = {};\n\n if (labelwidth) {\n styles.flexBasis = `calc(100% - ${labelwidth} - 20px)`;\n }\n\n return styles;\n }\n\n getFileInputError() {\n const { error } = this.props;\n\n return (error && error !== 'true' && error !== 'false')\n ? (\n \n { error }\n

    \n )\n : null;\n }\n\n getFileInputComponent() {\n const {\n accept, value: omitValue, onChange, ...rest\n } = this.props;\n\n return (\n \n \n {\n this.fileInputRef.current && this.fileInputRef.current.files.length > 0\n ? (\n \n \n \n )\n : null\n }\n \n );\n }\n\n clearValue() {\n const { onChange } = this.props;\n this.fileInputRef.current.value = '';\n onChange('');\n }\n\n handleOnChange(e) {\n const { onChange } = this.props;\n\n onChange(e.target.files);\n }\n\n // eslint-disable-next-line class-methods-use-this\n reset() {}\n\n render() {\n const {\n id,\n label,\n note,\n } = this.props;\n\n return (\n \n
    \n {\n label\n ? \n : null\n }\n
    \n { this.getFileInputComponent() }\n {\n note\n ?

    { note }

    \n : null\n }\n
    \n { this.getFileInputError() }\n
    \n
    \n );\n }\n}\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\nexport default class Input extends Component {\n static propTypes = {\n disabled: PropTypes.bool,\n readOnly: PropTypes.bool,\n id: PropTypes.string,\n isfield: PropTypes.bool,\n error: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.bool,\n ]),\n inputgroupaddonleft: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]),\n inputgroupaddonright: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]),\n label: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.element,\n PropTypes.node,\n ]),\n labelwidth: PropTypes.string,\n name: PropTypes.string,\n note: PropTypes.string,\n onChange: PropTypes.func,\n placeholder: PropTypes.string,\n theme: PropTypes.string,\n value: PropTypes.oneOfType([\n PropTypes.number,\n PropTypes.string,\n ]),\n }\n\n static getAddon(content) {\n return (\n
    \n { content }\n
    \n );\n }\n\n constructor(props) {\n super(props);\n const {\n value,\n } = this.props;\n\n this.state = {\n initValue: value,\n stateValue: value,\n };\n\n this.handleOnChange = this.handleOnChange.bind(this);\n }\n\n componentDidUpdate(prevProps) {\n const {\n isfield,\n value,\n onChange,\n } = this.props;\n\n if (!isfield && prevProps.value !== value) {\n /* eslint-disable react/no-did-update-set-state */\n this.setState({\n stateValue: value,\n }, () => {\n if (onChange) {\n onChange(value);\n }\n });\n }\n }\n\n getLabelStyles() {\n const { labelwidth } = this.props;\n const styles = {};\n\n if (labelwidth) {\n styles.flexBasis = labelwidth;\n }\n\n return styles;\n }\n\n getNonLabelWidth() {\n const { labelwidth } = this.props;\n const styles = {};\n\n if (labelwidth) {\n styles.flexBasis = `calc(100% - ${labelwidth} - 20px)`;\n }\n\n return styles;\n }\n\n getInputError() {\n const { error } = this.props;\n\n return (error && error !== 'true' && error !== 'false')\n ? (\n \n { error }\n

    \n )\n : null;\n }\n\n getCssClasses() {\n const {\n error,\n theme,\n labelwidth,\n inputgroupaddonleft,\n inputgroupaddonright,\n } = this.props;\n const cssClasses = ['tyk-form-group'];\n const themes = theme ? theme.split(' ') : [];\n\n if (themes.length) {\n themes.forEach((iTheme) => {\n cssClasses.push(`tyk-form-group--${iTheme}`);\n });\n }\n\n if (inputgroupaddonleft) {\n cssClasses.push('tyk-form-group--addon-left');\n }\n\n if (inputgroupaddonright) {\n cssClasses.push('tyk-form-group--addon-right');\n }\n\n if (labelwidth) {\n cssClasses.push('tyk-form-group--label-has-width');\n }\n\n if (error) {\n cssClasses.push('has-error');\n }\n\n return cssClasses.join(' ');\n }\n\n getInputGroupAddon() {\n const {\n inputgroupaddonleft,\n inputgroupaddonright,\n } = this.props;\n\n return (\n
    \n {\n inputgroupaddonleft\n ? Input.getAddon(inputgroupaddonleft)\n : null\n }\n { this.getInputComponent() }\n {\n inputgroupaddonright\n ? Input.getAddon(inputgroupaddonright)\n : null\n }\n
    \n );\n }\n\n getInputComponent() {\n const {\n isfield, onChange, value, ...rest\n } = this.props;\n const { stateValue } = this.state;\n return (\n \n );\n }\n\n reset() {\n const { initValue } = this.state;\n\n this.setState({\n stateValue: initValue,\n });\n }\n\n handleOnChange(e) {\n const { onChange, isfield } = this.props;\n const inputValue = e.target.value;\n\n if (!isfield) {\n this.setState({\n stateValue: inputValue,\n }, () => {\n if (onChange) {\n onChange(inputValue);\n }\n });\n } else {\n onChange(inputValue);\n }\n }\n\n render() {\n const {\n label,\n id,\n inputgroupaddonleft,\n inputgroupaddonright,\n note,\n readOnly,\n value,\n } = this.props;\n\n return (\n
    \n {\n label\n ? \n : null\n }\n {!readOnly && (\n \n {\n inputgroupaddonleft || inputgroupaddonright\n ? this.getInputGroupAddon()\n : this.getInputComponent()\n }\n {\n note\n ?

    { note }

    \n : null\n }\n { this.getInputError() }\n
    \n )}\n {\n readOnly &&
    {value || '-'}
    \n }\n \n );\n }\n}\n","import React, { useImperativeHandle, useRef, forwardRef } from 'react';\nimport PropTypes from 'prop-types';\n\nconst Input2 = forwardRef(({\n error,\n onChange,\n readOnly,\n id,\n inputgroupaddonleft,\n inputgroupaddonright,\n label,\n labelwidth,\n note,\n theme,\n value,\n wrapperClassName = '',\n ...rest\n}, ref) => {\n const inputRef = useRef();\n\n useImperativeHandle(ref, () => ({\n focus: () => {\n inputRef.current.focus();\n },\n }));\n\n const getAddon = content => (\n
    \n { content }\n
    \n );\n\n const getLabelStyles = () => ({\n ...labelwidth && {\n flexBasis: labelwidth,\n },\n });\n\n const getNonLabelWidth = () => ({\n ...labelwidth && {\n flexBasis: `calc(100% - ${labelwidth} - 20px)`,\n },\n });\n\n const getInputError = () => (\n (error && error !== 'true' && error !== 'false')\n ? (\n \n { error }\n

    \n )\n : null\n );\n\n const getCssClasses = () => {\n const cssClasses = [wrapperClassName, 'tyk-form-group'];\n const themes = theme ? theme.split(' ') : [];\n\n if (themes.length) {\n themes.forEach((iTheme) => {\n cssClasses.push(`tyk-form-group--${iTheme}`);\n });\n }\n\n if (inputgroupaddonleft) {\n cssClasses.push('tyk-form-group--addon-left');\n }\n\n if (inputgroupaddonright) {\n cssClasses.push('tyk-form-group--addon-right');\n }\n\n if (labelwidth) {\n cssClasses.push('tyk-form-group--label-has-width');\n }\n\n if (error) {\n cssClasses.push('has-error');\n }\n\n return cssClasses.join(' ');\n };\n\n const handleOnChange = (e) => {\n onChange(e, e.target.value);\n };\n\n const getInputElement = () => (\n \n );\n\n const getInputGroupAddon = () => (\n
    \n {\n inputgroupaddonleft\n ? getAddon(inputgroupaddonleft)\n : null\n }\n { getInputElement() }\n {\n inputgroupaddonright\n ? getAddon(inputgroupaddonright)\n : null\n }\n
    \n );\n\n return (\n
    \n {\n label\n ? \n : null\n }\n {!readOnly && (\n \n {\n inputgroupaddonleft || inputgroupaddonright\n ? getInputGroupAddon()\n : getInputElement()\n }\n {\n note\n ?

    { note }

    \n : null\n }\n { getInputError() }\n
    \n )}\n {\n readOnly && (\n
    \n {value || '-'}\n
    \n )\n }\n \n );\n});\n\nInput2.propTypes = {\n disabled: PropTypes.bool,\n readOnly: PropTypes.bool,\n id: PropTypes.string,\n error: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.bool,\n ]),\n inputgroupaddonleft: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]),\n inputgroupaddonright: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]),\n label: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.element,\n PropTypes.node,\n ]),\n labelwidth: PropTypes.string,\n name: PropTypes.string,\n note: PropTypes.string,\n onChange: PropTypes.func,\n placeholder: PropTypes.string,\n theme: PropTypes.string,\n value: PropTypes.oneOfType([\n PropTypes.number,\n PropTypes.string,\n ]),\n wrapperClassName: PropTypes.string,\n};\n\nexport default Input2;\n","import { createContext } from 'react';\n\nconst MultiselectContext = createContext();\n\nexport default MultiselectContext;\n","import React, { Component, Fragment } from 'react';\nimport PropTypes from 'prop-types';\n\nimport MultiselectContext from './MultiselectContext';\nimport Button from '../../../../components/Button';\nimport Collapsible from '../../../../components/Collapsible';\nimport Loader from '../../../../components/Loader';\n\nconst getItemContent = (context, item) => (\n context.detailsDisplayTemplate\n ? context.detailsDisplayTemplate(item)\n : JSON.stringify(item.details)\n);\n\nconst getItemLoader = (context, item) => {\n const { opened } = context;\n\n return opened[item.id]\n ? \n : null;\n};\n\nclass MultiselectItem extends Component {\n static propTypes = {\n item: PropTypes.instanceOf(Object),\n itemType: PropTypes.string,\n searchValue: PropTypes.string,\n onChange: PropTypes.func,\n };\n\n isInSearchValue(fieldsToSearchOn) {\n const { searchValue, item } = this.props;\n\n if (fieldsToSearchOn && fieldsToSearchOn.length > 0) {\n let fields = fieldsToSearchOn.slice(0);\n\n fields = fields.filter(key => item[key] && item[key].search(searchValue) > -1);\n\n return fields.length > 0;\n }\n\n return JSON.stringify(item).search(searchValue) > -1;\n }\n\n render() {\n const {\n item,\n itemType,\n onChange,\n } = this.props;\n\n return (\n \n \n {\n context => (\n this.isInSearchValue(context.fieldsToSearchOn)\n ? (\n
  • \n
    \n \n {\n context.itemDisplayTemplate\n ? context.itemDisplayTemplate(item)\n : JSON.stringify(item)\n }\n \n \n \n \n \n
    \n {\n item.details\n ? (\n \n {getItemContent(context, item)}\n \n )\n : getItemLoader(context, item)\n }\n
  • \n )\n : null\n )\n }\n
    \n
    \n );\n }\n}\n\nexport default MultiselectItem;\n","import React, { Component, createRef } from 'react';\nimport PropTypes from 'prop-types';\nimport { fromJS } from 'immutable';\n\nimport Input from '../../Input';\nimport Icon from '../../../../components/Icon';\nimport Message from '../../../../components/Message';\nimport InfiniteScroller from '../../../../components/InfiniteScroller';\nimport MultiselectItem from './MultiselectItem';\n\nclass MultiselectPanel extends Component {\n static propTypes = {\n customSearch: PropTypes.bool,\n onCustomSearch: PropTypes.func,\n panelType: PropTypes.string,\n onChange: PropTypes.func,\n items: PropTypes.instanceOf(Array),\n itemsPageNumber: PropTypes.number,\n itemsNrPages: PropTypes.number,\n inputPlaceholder: PropTypes.string,\n loadMoreItems: PropTypes.func,\n noItemsMessage: PropTypes.string,\n serverLoad: PropTypes.bool,\n };\n\n state = {\n searchValue: '',\n };\n\n constructor(props) {\n super(props);\n\n this.searchOnChange = this.searchOnChange.bind(this);\n this.itemChanged = this.itemChanged.bind(this);\n this.itemIndex = 0;\n this.itemsListRef = createRef();\n }\n\n getItemIndex() {\n this.itemIndex += 1;\n\n return this.itemIndex;\n }\n\n getItemsList() {\n const {\n itemsPageNumber,\n itemsNrPages,\n loadMoreItems,\n serverLoad,\n } = this.props;\n\n return (\n serverLoad\n ? (\n itemsPageNumber}\n loadMore={loadMoreItems}\n pageNumber={itemsPageNumber}\n >\n { this.renderListItems() }\n \n )\n : this.renderListItems()\n );\n }\n\n searchOnChange(value) {\n const { onCustomSearch } = this.props;\n\n if (!onCustomSearch) {\n this.setState({\n searchValue: value,\n });\n } else {\n onCustomSearch(value);\n }\n }\n\n itemChanged(item) {\n const { items, onChange } = this.props;\n\n let cloneItems = fromJS(items).toJS();\n cloneItems = cloneItems.filter(clonedItem => item.id !== clonedItem.id);\n\n onChange(cloneItems, item);\n }\n\n renderListItems() {\n const {\n customSearch, items, panelType, serverLoad,\n } = this.props;\n const { searchValue } = this.state;\n return (\n \n {\n items.map(item => (\n \n ))\n }\n \n );\n }\n\n render() {\n const {\n inputPlaceholder,\n noItemsMessage,\n items,\n } = this.props;\n const { searchValue } = this.state;\n\n return (\n
    \n \n }\n name=\"search\"\n onChange={this.searchOnChange}\n placeholder={inputPlaceholder}\n value={searchValue}\n />\n {\n items.length\n ? this.getItemsList()\n : (\n \n { noItemsMessage }\n \n )\n }\n
    \n );\n }\n}\n\nexport default MultiselectPanel;\n","import React, { Component, Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport { fromJS } from 'immutable';\n\nimport MultiselectPanel from './js/MultiselectPanel';\nimport MultiselectContext from './js/MultiselectContext';\n\nconst diffObjects = (value, items) => {\n const newItems = items.filter((item) => {\n const isCommon = value.filter(selectedItem => selectedItem.id === item.id).length > 0;\n\n return !isCommon;\n });\n\n return newItems;\n};\n\nclass Multiselect extends Component {\n static propTypes = {\n customSearch: PropTypes.func,\n disabled: PropTypes.bool,\n error: PropTypes.string,\n entityNamePlural: PropTypes.string,\n items: PropTypes.instanceOf(Array),\n itemDisplayTemplate: PropTypes.func,\n detailsDisplayTemplate: PropTypes.func,\n fieldsToSearchOn: PropTypes.instanceOf(Array),\n onChange: PropTypes.func,\n getItemDetails: PropTypes.func,\n itemsPageNumber: PropTypes.number,\n itemsNrPages: PropTypes.number,\n loadMoreItems: PropTypes.func,\n note: PropTypes.string,\n maxSelections: PropTypes.number,\n value: PropTypes.instanceOf(Array),\n wrapperClassName: PropTypes.string,\n };\n\n state = {\n opened: {},\n };\n\n constructor(props) {\n super(props);\n\n this.valueChange = this.valueChange.bind(this);\n this.itemsChange = this.itemsChange.bind(this);\n }\n\n onGetItemDetails(item) {\n const { getItemDetails } = this.props;\n\n this.setState((prevState) => {\n const tempState = Object.assign({}, prevState);\n tempState.opened[item.id] = !tempState.opened[item.id];\n\n return tempState;\n }, () => {\n if (getItemDetails) {\n getItemDetails(item);\n }\n });\n }\n\n getMultiselectError() {\n const { error } = this.props;\n\n return (error && error !== 'true' && error !== 'false')\n ? (\n \n { error }\n

    \n )\n : null;\n }\n\n getCssClasses() {\n const { error, wrapperClassName = '' } = this.props;\n const cssClasses = [wrapperClassName, 'tyk-multiselect'];\n\n if (error) {\n cssClasses.push('has-error');\n }\n\n return cssClasses.join(' ');\n }\n\n itemsChange(allItems, item) {\n const { value, onChange } = this.props;\n const valueClone = fromJS(value).toJS();\n\n valueClone.unshift(item);\n\n onChange(valueClone, item, 'added');\n }\n\n valueChange(value, item) {\n const { items, onChange } = this.props;\n const allItemsClone = fromJS(items).toJS();\n\n allItemsClone.unshift(item);\n\n onChange(value, item, 'removed');\n }\n\n render() {\n const {\n customSearch,\n entityNamePlural,\n disabled,\n itemDisplayTemplate,\n detailsDisplayTemplate,\n fieldsToSearchOn,\n items,\n itemsPageNumber,\n itemsNrPages,\n loadMoreItems,\n maxSelections,\n note,\n value,\n } = this.props;\n const { opened } = this.state;\n\n return (\n \n
    \n \n
    \n
    \n { value.length }\n {' '}\n Selected\n {' '}\n { entityNamePlural }\n
    \n
    \n Select from existing\n { entityNamePlural }\n
    \n
    \n
    \n \n \n
    \n \n
    \n
    \n {\n note\n ?

    { note }

    \n : null\n }\n
    \n { this.getMultiselectError() }\n
    \n );\n }\n}\n\nexport default Multiselect;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\n\n/**\n * Radio can be used when a user needs to select at most one value from a multiple options.\n */\nexport default class Radio extends Component {\n static propTypes = {\n /** Used to disable the element */\n disabled: PropTypes.bool,\n /** Readonly prop behaves the same as disabled on radio elements */\n readOnly: PropTypes.bool,\n /** Align radio with in same line with other elements */\n inline: PropTypes.bool,\n /** Set a theme for radio */\n theme: PropTypes.string,\n input: PropTypes.instanceOf(Object),\n /** Adds label to the radio input */\n label: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.func,\n PropTypes.string,\n ]),\n /** Set name for the radio input */\n name: PropTypes.string,\n /** If set to true removes margin by adding `no-margin` class */\n nospace: PropTypes.bool,\n /** Set initial value for the radio input */\n value: PropTypes.string,\n /** Add note at the bottom of the radio input */\n note: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.element,\n PropTypes.node,\n ]),\n wrapperClassName: PropTypes.string,\n };\n\n getCssClasses() {\n const {\n inline, nospace, theme = '', disabled, readOnly, wrapperClassName = '',\n } = this.props;\n const cssClasses = [wrapperClassName];\n\n if (inline) {\n cssClasses.push('tyk-radio--inline');\n } else {\n cssClasses.push('tyk-radio');\n }\n\n if (nospace) {\n cssClasses.push('no-margin');\n }\n\n if (theme.trim()) {\n cssClasses.push(...theme.split(' ').map(t => `tyk-radio--theme-${t}`));\n }\n\n if (readOnly || disabled) {\n cssClasses.push('tyk-radio--is-disabled');\n }\n\n return cssClasses.join(' ');\n }\n\n render() {\n const {\n input, label, note, disabled, readOnly, ...rest\n } = this.props;\n return (\n \n \n

    {note}

    \n \n );\n }\n}\n","import React, { Component, Fragment } from 'react';\nimport PropTypes from 'prop-types';\n\nexport default class Select extends Component {\n static propTypes = {\n disabled: PropTypes.bool,\n readOnly: PropTypes.bool,\n id: PropTypes.string,\n isfield: PropTypes.bool,\n error: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.bool,\n ]),\n options: PropTypes.instanceOf(Array),\n label: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.func,\n PropTypes.string,\n ]),\n labelwidth: PropTypes.string,\n name: PropTypes.string,\n note: PropTypes.string,\n onBlur: PropTypes.func,\n onChange: PropTypes.func,\n placeholder: PropTypes.string,\n theme: PropTypes.string,\n value: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.object,\n ]),\n wrapperClassName: PropTypes.string,\n }\n\n constructor(props) {\n super(props);\n const {\n value,\n } = this.props;\n\n this.state = {\n initValue: value,\n stateValue: value,\n };\n\n this.handleOnChange = this.handleOnChange.bind(this);\n this.handleOnBlur = this.handleOnBlur.bind(this);\n }\n\n componentDidUpdate(prevProps) {\n const {\n isfield,\n value,\n onChange,\n } = this.props;\n\n if (!isfield && prevProps.value !== value) {\n /* eslint-disable react/no-did-update-set-state */\n this.setState({\n stateValue: value,\n }, () => {\n if (onChange) {\n onChange(value);\n }\n });\n }\n }\n\n getSelectComponent() {\n const {\n isfield, options, onChange, onBlur, value, ...rest\n } = this.props;\n const {\n stateValue,\n } = this.state;\n\n let selectValue = '';\n\n if (isfield && value) {\n selectValue = value;\n } else if (stateValue) {\n selectValue = stateValue;\n }\n\n return (\n \n {\n options.map(option => )\n }\n \n );\n }\n\n getSelectError() {\n const { error } = this.props;\n\n return (error && error !== 'true' && error !== 'false')\n ? (\n \n { error }\n

    \n )\n : null;\n }\n\n getCssClasses() {\n const {\n error, labelwidth, theme, wrapperClassName = '',\n } = this.props;\n const cssClasses = [wrapperClassName, 'tyk-form-group'];\n const themes = theme ? theme.split(' ') : [];\n\n if (themes.length) {\n themes.forEach((iTheme) => {\n cssClasses.push(`tyk-form-group--${iTheme}`);\n });\n }\n\n if (labelwidth) {\n cssClasses.push('tyk-form-group--label-has-width');\n }\n\n if (error) {\n cssClasses.push('has-error');\n }\n\n return cssClasses.join(' ');\n }\n\n getLabelStyles() {\n const { labelwidth } = this.props;\n const styles = {};\n\n if (labelwidth) {\n styles.flexBasis = labelwidth;\n }\n\n return styles;\n }\n\n getNonLabelWidth() {\n const { labelwidth } = this.props;\n const styles = {};\n\n if (labelwidth) {\n styles.flexBasis = `calc(100% - ${labelwidth} - 20px)`;\n }\n\n return styles;\n }\n\n handleOnBlur() {\n const { value, onBlur } = this.props;\n\n if (onBlur) {\n onBlur(value);\n }\n }\n\n handleOnChange(e) {\n const {\n onChange,\n isfield,\n options,\n } = this.props;\n let selectedValue = null;\n\n selectedValue = options.filter(option => option.id === e.target.value);\n [selectedValue] = selectedValue;\n\n if (!isfield) {\n this.setState({\n stateValue: selectedValue,\n }, () => {\n onChange(selectedValue.id ? selectedValue : null);\n });\n } else {\n onChange(selectedValue.id ? selectedValue : null);\n }\n }\n\n reset() {\n const { initValue } = this.state;\n\n this.setState({\n stateValue: initValue,\n });\n }\n\n render() {\n const {\n label,\n id,\n note,\n readOnly,\n value,\n } = this.props;\n\n return (\n \n
    \n {\n label\n ? \n : null\n }\n {!readOnly && (\n \n {\n this.getSelectComponent()\n }\n {\n note\n ?

    { note }

    \n : null\n }\n { this.getSelectError() }\n
    \n )}\n {readOnly &&
    {value || '-'}
    }\n \n
    \n );\n }\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport Message from '../../../components/Message';\nimport List from '../../../components/List';\nimport Icon from '../../../components/Icon';\n\nfunction SelectableList(props) {\n const {\n checkboxalticon,\n items,\n itemTemplate,\n value,\n noItemsMessage = 'No items in the list',\n onChange,\n theme,\n primaryKey,\n wrapperClassName = '',\n } = props;\n\n const handleOnSelect = (event) => {\n const newSelectedItems = structuredClone(value);\n const elemPosition = newSelectedItems.findIndex(\n (id) => JSON.stringify(id) === JSON.stringify(\n Array.isArray(id)\n ? event.target.value.split(',')\n : event.target.value,\n ),\n );\n\n if (event.target.checked && elemPosition === -1) {\n const tempValue = event.target.value.split(',');\n const finalValue = tempValue.length > 1 ? tempValue : event.target.value;\n\n newSelectedItems.push(finalValue);\n } else if (!event.target.checked && elemPosition > -1) {\n newSelectedItems.splice(elemPosition, 1);\n }\n\n if (onChange) {\n onChange(newSelectedItems);\n }\n };\n\n const getListItemCssClassName = (isActive) => {\n const cssClasses = [];\n\n if (checkboxalticon) {\n cssClasses.push('tyk-selectable-list__item--with-icon');\n }\n\n if (isActive) {\n cssClasses.push('tyk-selectable-list__item--active');\n }\n\n return cssClasses.join(' ');\n };\n\n const isChecked = (inputValue, itemValue) => Boolean(\n inputValue.find((tvalue) => JSON.stringify(itemValue) === JSON.stringify(tvalue)),\n );\n\n return (\n \n {\n !items.length\n ? (\n
  • \n \n {noItemsMessage}\n \n
  • \n )\n : items.map((item, index) => (\n \n \n \n ))\n }\n
    \n );\n}\n\nSelectableList.propTypes = {\n items: PropTypes.instanceOf(Array),\n itemTemplate: PropTypes.oneOfType([\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n PropTypes.func,\n ]),\n value: PropTypes.instanceOf(Array),\n onChange: PropTypes.func,\n primaryKey: PropTypes.string,\n noItemsMessage: PropTypes.string,\n checkboxalticon: PropTypes.oneOfType([\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n theme: PropTypes.string,\n wrapperClassName: PropTypes.string,\n};\n\nSelectableList.defaultProps = {\n items: [],\n primaryKey: 'id',\n value: [],\n};\n\nexport default SelectableList;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nfunction Textarea({\n id,\n input,\n label,\n note,\n error,\n theme,\n labelwidth,\n value,\n readOnly,\n wrapperClassName,\n ...rest\n}) {\n const classes = [\n 'tyk-form-group',\n wrapperClassName,\n ...(theme ? theme.split(' ').map((t) => `tyk-form-group--${t}`) : []),\n labelwidth && 'tyk-form-group--label-has-width',\n error && 'has-error',\n ].filter(Boolean).join(' ');\n\n const getLabelStyles = () => {\n if (labelwidth) return { flexBasis: labelwidth };\n return {};\n };\n\n const getNonLabelWidth = () => {\n if (labelwidth) return { flexBasis: `calc(100% - ${labelwidth} - 20px)` };\n return {};\n };\n\n function getTextareaError() {\n return (error && error !== 'true' && error !== 'false')\n ? (\n

    \n { error }\n

    \n )\n : null;\n }\n\n return (\n
    \n {\n label\n ? \n : null\n }\n {!readOnly && (\n \n \n { value }\n \n {\n note\n ?

    { note }

    \n : null\n }\n {getTextareaError()}\n
    \n )}\n {readOnly &&
    {value || '-'}
    }\n \n );\n}\n\nTextarea.propTypes = {\n /** Disable the component */\n disabled: PropTypes.bool,\n /** Displays only the text value of the component, or \"-\" if no value is set */\n readOnly: PropTypes.bool,\n input: PropTypes.instanceOf(Object),\n /** Set an error message for the component and the component is rendered in the error state */\n error: PropTypes.string,\n /** Adds a label to the component */\n label: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.func,\n PropTypes.string,\n ]),\n /** Sets the width of the label */\n labelwidth: PropTypes.string,\n /** Set a name for the component */\n name: PropTypes.string,\n /** Adds additional information under the component */\n note: PropTypes.string,\n /** Callback function executed on value change */\n onChange: PropTypes.func,\n id: PropTypes.string,\n /** Set a theme for the component */\n theme: PropTypes.string,\n /** Set the value of the component */\n value: PropTypes.string,\n /** CSS classes added to the wrapper of the component */\n wrapperClassName: PropTypes.string,\n};\n\nexport default Textarea;\n","import { createContext } from 'react';\n\nconst ToggleContext = createContext();\n\nexport default ToggleContext;\n","import React, { Component, createRef } from 'react';\nimport PropTypes from 'prop-types';\n\nclass ToggleItem extends Component {\n static getNotchCssClasses(context) {\n return ['tyk-toggle__item-notch', `tyk-toggle__item-notch--${context.type}`].join(' ');\n }\n\n constructor(props) {\n super(props);\n\n this.itemRef = createRef();\n }\n\n componentDidMount() {\n const { context, value } = this.props;\n\n if (context.value === value) {\n context.saveSelectedRef(this.itemRef);\n }\n }\n\n componentDidUpdate(prevProps) {\n const { context, value } = this.props;\n\n if (prevProps.context.value !== context.value && context.value === value) {\n context.saveSelectedRef(this.itemRef);\n }\n }\n\n onChange(event) {\n const { context, value } = this.props;\n const { disabled, readOnly } = context;\n\n if (disabled || readOnly) {\n return;\n }\n\n context.onItemSelected(context.type === 'single' ? !context.value : value, event);\n }\n\n render() {\n const {\n context, label, name, value,\n } = this.props;\n return (\n
  • \n \n
  • \n );\n }\n}\n\nToggleItem.propTypes = {\n context: PropTypes.instanceOf(Object),\n label: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.func,\n PropTypes.string,\n ]),\n name: PropTypes.string,\n value: PropTypes.string,\n};\n\nexport default ToggleItem;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport ToggleContext from './ToggleContext';\nimport ToggleItem from './ToggleItem';\n\nconst ToggleItemWrapper = React.forwardRef((props, ref) => (\n \n {(context) => (\n \n {props.children}\n \n )}\n \n));\n\nToggleItemWrapper.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n};\n\nexport default ToggleItemWrapper;\n","import React, {\n useCallback, useMemo, useRef, useState,\n} from 'react';\nimport PropTypes from 'prop-types';\n\nimport ToggleContext from './js/ToggleContext';\nimport ToggleItemWrapper from './js/ToggleItemWrapper';\n\nfunction Toggle({\n className,\n disabled,\n readOnly,\n size,\n theme,\n direction,\n onDark,\n wrapperClassName = '',\n onChange,\n labelwidth,\n label,\n separated,\n children,\n type,\n value,\n error,\n}) {\n const [selectedRef, setSelectedRef] = useState(null);\n const notchRef = useRef();\n const toggleRef = useRef();\n\n const classes = [\n wrapperClassName,\n className,\n 'tyk-toggle',\n `tyk-toggle--disabled-${readOnly || disabled}`,\n `tyk-toggle--${size || 'md'}`,\n `tyk-toggle--${theme}`,\n `tyk-toggle--${direction}`,\n onDark && 'tyk-toggle--on-dark',\n ].filter(Boolean).join(' ');\n\n const onItemSelected = useCallback((itemValue, event) => {\n if (!onChange) return;\n onChange(itemValue, event);\n }, [onChange]);\n\n const getLabelStyles = useCallback(() => {\n if (labelwidth) return { flexBasis: labelwidth };\n return {};\n }, [labelwidth]);\n\n const positionNotch = useCallback(() => {\n if (!selectedRef || separated) {\n return {};\n }\n\n const selectedWidth = selectedRef.current.offsetWidth;\n const selectedOffset = selectedRef.current.getBoundingClientRect().left;\n const toggleOffset = toggleRef.current.getBoundingClientRect().left;\n const left = selectedOffset - toggleOffset;\n\n return {\n left: `${left + 4}px`,\n width: `${selectedWidth - 8}px`,\n };\n }, [selectedRef, separated]);\n\n const contextValue = useMemo(() => ({\n disabled,\n readOnly,\n onItemSelected,\n saveSelectedRef: setSelectedRef,\n separated,\n type,\n value,\n }), [disabled, readOnly, onItemSelected, separated, type, value]);\n\n return (\n <>\n
    \n \n {\n label\n ? \n : null\n }\n
      \n { children }\n {\n type === 'multiple' && !separated\n ?
    • \n : null\n }\n
    \n \n
    \n {\n error && (\n

    \n { error }\n

    \n )\n }\n \n );\n}\n\nToggle.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n className: PropTypes.string,\n disabled: PropTypes.bool,\n readOnly: PropTypes.bool,\n error: PropTypes.string,\n onChange: PropTypes.func,\n label: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.func,\n PropTypes.string,\n ]),\n labelwidth: PropTypes.string,\n theme: PropTypes.string,\n type: PropTypes.string, // single || multiple\n size: PropTypes.string,\n separated: PropTypes.bool,\n direction: PropTypes.string,\n value: PropTypes.oneOfType([\n PropTypes.bool,\n PropTypes.string,\n ]),\n onDark: PropTypes.bool,\n wrapperClassName: PropTypes.string,\n};\n\nToggle.defaultProps = {\n separated: false,\n theme: 'primary',\n type: 'single',\n direction: 'row',\n};\n\nToggle.Item = ToggleItemWrapper;\n\nexport default Toggle;\n","export const stringToTokenString = (value, options) => {\n let tempStr = value;\n options.forEach((option) => {\n tempStr = tempStr.replaceAll(option.id, `__TOKEN__${option.id}__TOKEN__`);\n });\n return tempStr;\n};\n\n\nexport const setCursorPos = (ref, pos) => {\n setTimeout(() => {\n ref.current.setSelectionRange(pos, pos);\n }, 20);\n};\n","import React, { useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { stringToTokenString, setCursorPos } from './service';\n\nfunction StringInput({\n setShowOptions,\n tokenValue,\n disabled,\n placeholder,\n tokens,\n dropdownTriggerKey,\n setStringBuilderHeight,\n stringBuilderHeight,\n setTokenString,\n tokenString,\n showOptions,\n options,\n setTokenValue,\n inputRef,\n setInputInFocus,\n invalidTokenRegex,\n name,\n contextMaxLength,\n}) {\n const [isPasteEvent, setIsPasteEvent] = useState(false);\n\n useEffect(() => {\n // Set height if initial value exists\n if (tokenValue) {\n const tokenLen = tokenValue.length > 50 ? tokenValue.length / 5 : 0;\n setStringBuilderHeight(inputRef.current.scrollHeight + tokenLen);\n }\n }, []);\n\n /**\n *\n * @param {*} e : Event\n * Handle delete event (fn + delete on mac)\n */\n\n const handleDelete = (e) => {\n const { selectionEnd } = e.target;\n if (selectionEnd === tokenValue.length) {\n // - Cursor is at the end of input\n return;\n }\n\n const stringBeforeCursor = tokenValue.substring(0, selectionEnd);\n const stringAfterCursor = tokenValue.slice(selectionEnd);\n\n const tokenStringForStringAfterCursor = stringToTokenString(\n stringAfterCursor,\n options,\n );\n if (tokenStringForStringAfterCursor.startsWith('__TOKEN__')) {\n // If string before delete is a token\n const splitTokens = tokenStringForStringAfterCursor.split(/__TOKEN__(.*?)__TOKEN__/g).filter((t) => t !== '');\n const firstToken = splitTokens[0];\n const newTokenValue = `${stringBeforeCursor}${stringAfterCursor.substr(firstToken.length)}`;\n const newTokenizedString = stringToTokenString(newTokenValue, options);\n setTokenString(newTokenizedString);\n setCursorPos(inputRef, selectionEnd);\n return;\n }\n const newTokenValue = `${stringBeforeCursor}${stringAfterCursor.substr(1)}`;\n const newTokenizedString = stringToTokenString(newTokenValue, options);\n setTokenString(newTokenizedString);\n setCursorPos(inputRef, selectionEnd);\n };\n\n /**\n *\n * @param {*} e : Event\n * Handle backspace event\n * - If the last thing added by user was a token prevent default and\n * remove the entire token instead of single character, else continue with default behaviour\n * - Also handles if the string is manipulated from middle\n */\n const handleBackSpace = (e) => {\n const { selectionEnd } = e.target;\n\n // -- START :: Handle backspacing when cursor is at the end of the string\n if (selectionEnd === tokenValue.length) {\n const lastToken = tokens[tokens?.length - 2];\n const lastCharsInString = tokenValue.slice(-lastToken?.length);\n if (lastToken === lastCharsInString) {\n e.preventDefault();\n setTokenString(\n tokenString.slice(0, -`__TOKEN__${lastCharsInString}__TOKEN__`.length),\n );\n return;\n }\n if (tokenValue.endsWith(' ')) {\n const invalidToken = tokenValue.match(invalidTokenRegex);\n const newTokenValue = tokenValue.slice(0, -` ${invalidToken[invalidToken.length - 1]} `.length);\n const newTokenStr = stringToTokenString(newTokenValue, options);\n setTokenString(newTokenStr);\n return;\n }\n setTokenString(tokenString.slice(0, -1));\n return;\n }\n // -- END :: Handle backspacing when cursor is at the end of the string\n\n // -- START :: Handle backspacing when cursor is in between\n const stringBeforeCursor = tokenValue.substring(0, selectionEnd);\n const stringAfterCursor = tokenValue.slice(selectionEnd);\n\n const tokenStringForStringBeforeCursor = stringToTokenString(stringBeforeCursor, options);\n\n // -- IF the string before cursor is a token\n if (tokenStringForStringBeforeCursor.endsWith('__TOKEN__')) {\n e.preventDefault();\n const splitTokens = tokenStringForStringBeforeCursor.split(/__TOKEN__(.*?)__TOKEN__/g);\n const lastToken = splitTokens[splitTokens.length - 2];\n const newTokenValue = `${stringBeforeCursor.slice(0, -(lastToken.length))}${stringAfterCursor}`;\n const newTokenizedString = stringToTokenString(newTokenValue, options);\n setTokenString(newTokenizedString);\n setCursorPos(inputRef, selectionEnd - lastToken.length);\n return;\n }\n\n const invalidToken = stringBeforeCursor.match(invalidTokenRegex);\n // If Token is Invalid Token\n if (invalidToken?.[0] && invalidToken.length === 1) {\n e.preventDefault();\n const newTokenValue = `${stringBeforeCursor.replaceAll(invalidTokenRegex, '').trim()}${stringAfterCursor}`;\n const newTokenizedString = stringToTokenString(newTokenValue, options);\n setTokenString(newTokenizedString);\n setCursorPos(inputRef, selectionEnd - ` ${invalidToken[0]} `.length);\n return;\n }\n\n const newTokenValue = `${stringBeforeCursor.slice(\n 0,\n -1,\n )}${stringAfterCursor}`;\n const newTokenizedString = stringToTokenString(newTokenValue, options);\n setTokenString(newTokenizedString);\n setCursorPos(inputRef, selectionEnd - 1);\n // -- END :: Handle backspacing when cursor is in between\n };\n\n const addCharacterToTokenString = (text, selectionStart) => {\n // Cursor is at end\n if (selectionStart - 1 === tokenValue.length) {\n setTokenString(`${tokenString}${text}`);\n return;\n }\n\n // Cursor is in middle of string\n const newTokenValue = tokenValue.slice(0, selectionStart - 1)\n + text\n + tokenValue.slice(selectionStart - 1);\n\n const newTokenizedString = stringToTokenString(newTokenValue, options);\n setTokenString(newTokenizedString);\n };\n\n // -- START :: Handle highlighted text deletion / replacement\n const handleTextSelection = (e, selectedText, key) => {\n const allowedKeys = ['Delete', 'Backspace'];\n if (key.length > 1 && allowedKeys.indexOf(key) === -1) {\n return;\n }\n const { selectionEnd, selectionStart } = e.target;\n const substitute = key.length > 1 ? '' : key;\n if (selectedText.length > 1) {\n const newStr = tokenValue.substring(0, selectionStart)\n + substitute\n + tokenValue.substring(selectionEnd);\n const newTokenStr = stringToTokenString(newStr, options);\n setTokenString(newTokenStr);\n setCursorPos(inputRef, substitute.length ? selectionStart + 1 : selectionStart);\n }\n };\n // -- END :: Handle highlighted text deletion / replacement\n\n const handleKeyDown = (e) => {\n const { key } = e;\n const { selectionEnd, selectionStart, value } = e.target;\n const selectedText = value.substring(selectionStart, selectionEnd);\n\n if (key === dropdownTriggerKey && !showOptions) {\n e.preventDefault();\n setShowOptions(true);\n return;\n }\n if (key === 'Enter') {\n e.preventDefault();\n return;\n }\n if (key === 'Backspace') {\n e.preventDefault();\n handleBackSpace(e);\n }\n if (key === 'Delete') {\n e.preventDefault();\n handleDelete(e);\n }\n if (e.metaKey && key === 'x') {\n setTokenString('');\n }\n if (selectedText) {\n e.preventDefault();\n handleTextSelection(e, selectedText, key);\n }\n };\n\n const handleOnChange = (e) => {\n const { target } = e;\n const { selectionStart, value } = target;\n\n if (showOptions) {\n setShowOptions(false);\n }\n setTokenValue(value);\n if (value && !isPasteEvent) {\n const text = value.charAt(selectionStart - 1);\n addCharacterToTokenString(text, selectionStart);\n }\n setIsPasteEvent(false);\n };\n\n const handlePasteEvent = (e) => {\n e.preventDefault();\n const { clipboardData } = e;\n const { selectionStart, selectionEnd } = e.target;\n setIsPasteEvent(true);\n let pasteString = clipboardData.getData('text/plain');\n if (selectionStart !== selectionEnd) {\n pasteString = tokenValue.slice(0, selectionStart)\n + pasteString\n + tokenValue.slice(selectionEnd, tokenValue.length);\n const newTokenString = stringToTokenString(pasteString, options);\n setTokenString(newTokenString);\n return;\n }\n const newTokenString = stringToTokenString(pasteString, options);\n addCharacterToTokenString(newTokenString, selectionStart);\n };\n\n const handleOnFocus = () => {\n setInputInFocus(true);\n };\n\n return (\n handleOnChange(e)}\n onKeyDown={(e) => handleKeyDown(e)}\n placeholder={placeholder}\n name={name}\n ref={inputRef}\n style={{ height: `${stringBuilderHeight}px` }}\n maxLength={contextMaxLength}\n onPaste={handlePasteEvent}\n onFocus={handleOnFocus}\n onBlur={() => setInputInFocus(false)}\n />\n );\n}\n\nStringInput.propTypes = {\n setShowOptions: PropTypes.func,\n tokenValue: PropTypes.string,\n disabled: PropTypes.bool,\n placeholder: PropTypes.string,\n tokenString: PropTypes.string,\n stringBuilderHeight: PropTypes.number,\n dropdownTriggerKey: PropTypes.string,\n setStringBuilderHeight: PropTypes.func,\n setTokenString: PropTypes.func,\n setTokenValue: PropTypes.func,\n setInputInFocus: PropTypes.func,\n showOptions: PropTypes.bool,\n tokens: PropTypes.arrayOf(PropTypes.string),\n options: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.string.isRequired,\n name: PropTypes.string.isRequired,\n className: PropTypes.string,\n desc: PropTypes.string,\n }),\n ),\n inputRef: PropTypes.instanceOf(Object),\n invalidTokenRegex: PropTypes.instanceOf(RegExp),\n name: PropTypes.string,\n contextMaxLength: PropTypes.number,\n};\n\nexport { StringInput };\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Tooltip from '../../../../components/Tooltip';\nimport Icon from '../../../../components/Icon';\n\n\nconst InvalidToken = (props) => {\n const { token, findInvalidTokenSubstitute } = props;\n return (\n findInvalidTokenSubstitute(token)}\n onKeyDown={() => {}}\n >\n \n \n {`${token}`}\n \n \n \n \n );\n};\n\nInvalidToken.propTypes = {\n token: PropTypes.string,\n findInvalidTokenSubstitute: PropTypes.func,\n};\n\nexport default InvalidToken;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport InvalidToken from './invalid-token';\n\nexport const TokenizedString = (props) => {\n const {\n tokens,\n options,\n disabled,\n invalidTokenRegex,\n findInvalidTokenSubstitute,\n } = props;\n\n /**\n * hasDuplicates : used to avoid duplicate keys in map :\n * having duplicate tokens causes invalid unpredictable react renders.\n * eg: http://alpaha.com/{{.agruments.id}}/id={{.arguments.id}}\n * `{{.arguments.id}}` is repeated twice : maybe edge case but quite possible\n */\n\n const hasDuplicates = new Set(tokens).size !== tokens.length;\n\n const allTokens = tokens\n && tokens.map((token) => {\n if (options) {\n const matchedOption = options.find(option => option.id === token);\n // if invalid token\n if (invalidTokenRegex && !matchedOption) {\n const matchedTokens = token.replaceAll(' ', '').split(invalidTokenRegex);\n if (matchedTokens?.length > 1) {\n return (\n \n {matchedTokens.map((tkn) => {\n if (tkn.match(invalidTokenRegex)) {\n return (\n \n );\n }\n return ({`${tkn} `});\n })}\n \n );\n }\n }\n // if token matches option\n\n if (matchedOption) {\n return (\n \n {matchedOption.id}\n \n );\n }\n }\n return (\n {token}\n );\n });\n return (\n \n {allTokens}\n \n );\n};\n\nTokenizedString.propTypes = {\n tokens: PropTypes.arrayOf(PropTypes.string),\n options: PropTypes.arrayOf(PropTypes.instanceOf(Object)),\n disabled: PropTypes.bool,\n invalidTokenRegex: PropTypes.instanceOf(RegExp),\n findInvalidTokenSubstitute: PropTypes.func,\n};\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\n\nimport FloatingContainer from '../../../../components/FloatingContainer';\n\nexport const OptionsList = ({\n options,\n showOptions,\n handleOptionSelection,\n containerRef,\n getThemeClasses,\n setShowOptions,\n allowSearch,\n initialSearchValue,\n}) => {\n const [filterValue, setFilterValue] = useState(initialSearchValue);\n const [filteredOptions, setFilteredOptions] = useState(options);\n\n useEffect(() => {\n setFilterValue(initialSearchValue);\n }, [initialSearchValue]);\n\n useEffect(() => {\n if (filterValue === '') {\n setFilteredOptions(options);\n return;\n }\n const newFilteredOptions = options.filter(\n option => option.name.toLowerCase().includes(filterValue.toLowerCase()),\n );\n setFilteredOptions(newFilteredOptions);\n }, [filterValue]);\n\n useEffect(() => {\n setFilteredOptions(options);\n }, [options]);\n\n if (!showOptions) {\n return null;\n }\n\n return (\n <>\n \n {allowSearch && (\n
    \n {\n setFilterValue(e.target.value);\n }}\n onKeyDown={(e) => {\n if (\n e.key === 'Escape'\n || e.key === 'ArrowUp'\n // || e.key === 'ArrowDown'\n || e.key === 'Enter'\n ) {\n setShowOptions(false);\n }\n }}\n />\n
    \n )}\n
      \n {filteredOptions.map(option => (\n handleOptionSelection(option)}\n >\n \n {option.name}\n \n {option.desc && (\n \n   :  \n {option.desc}\n \n )}\n \n ))}\n
    \n \n \n );\n};\n\nOptionsList.propTypes = {\n options: PropTypes.arrayOf(Object),\n showOptions: PropTypes.bool,\n handleOptionSelection: PropTypes.func,\n getThemeClasses: PropTypes.func,\n setShowOptions: PropTypes.func,\n containerRef: PropTypes.instanceOf(Object),\n allowSearch: PropTypes.bool,\n initialSearchValue: PropTypes.string,\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nexport const StringBuilderFooter = (props) => {\n const {\n note, error, inputInFocus, stringBuilderHeight, dropdownTriggerKey,\n } = props;\n return (\n \n {inputInFocus && !error && (\n

    \n \n Enter\n {dropdownTriggerKey}\n to add any parameter\n \n

    \n )}\n {note &&

    {note}

    }\n {error && error !== 'true' && error !== 'false' && (\n

    {error}

    \n )}\n \n );\n};\n\nStringBuilderFooter.propTypes = {\n note: PropTypes.string,\n error: PropTypes.string,\n dropdownTriggerKey: PropTypes.string,\n inputInFocus: PropTypes.bool,\n stringBuilderHeight: PropTypes.number,\n};\n","import React, { useEffect, useState, useRef } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { usePrevious } from '../../../hooks';\n\nimport { StringInput } from './js/string-input';\nimport { TokenizedString } from './js/tokenized-string';\nimport { OptionsList } from './js/options-list';\nimport { StringBuilderFooter } from './js/string-builder-footer';\nimport { stringToTokenString, setCursorPos } from './js/service';\n\n/**\n * - String builder component used to build one single string using the given options.\n * - This component can be useful from UX perspective,\n * when user needs to build any string which might contain complex values which are error prone.\n * - `` abstracts the complex values by supplying them\n * as selectable options in more user friendly format with description for user.\n * - Wire-frames : https://miro.com/app/board/o9J_kipLWwA=/\n */\n\nfunction StringBuilder(props) {\n const {\n options,\n onChange,\n value,\n theme,\n error,\n disabled,\n readOnly,\n note,\n label,\n labelwidth,\n placeholder,\n allowSearch,\n dropdownTriggerKey,\n invalidTokenRegex,\n name,\n wrapperClassName = '',\n } = props;\n const [tokenValue, setTokenValue] = useState(value);\n const [stringBuilderHeight, setStringBuilderHeight] = useState();\n const [showOptions, setShowOptions] = useState(false);\n const [tokenString, setTokenString] = useState(stringToTokenString(value, options));\n const [contextMaxLength, setContentMaxLength] = useState(\n tokenValue.length + 5,\n );\n const [tokens, setTokens] = useState([]);\n const [prevTokenValue, setPrevTokenValue] = useState();\n const [inputInFocus, setInputInFocus] = useState(false);\n const [initialSearchValue, setInitialSearchValue] = useState('');\n const [selectedInvalidToken, setSelectedInvalidToken] = useState(null);\n\n const prevTokenString = usePrevious(tokenString);\n\n const containerRef = useRef();\n const inputRef = useRef();\n\n // Execute callback on value change\n useEffect(() => {\n if (onChange) {\n onChange(tokenValue.replaceAll(' ', ''));\n }\n }, [tokenValue]);\n\n useEffect(() => {\n const tempVal = invalidTokenRegex ? value.replaceAll(invalidTokenRegex, ' $& ') : value;\n setTokenValue(() => tempVal);\n setTokenString(() => stringToTokenString(tempVal, options));\n }, [value]);\n\n /**\n * Split string into tokens and set string value w/o __TOKEN__\n * Tokens are used to render a styled tokens using ``\n */\n useEffect(() => {\n const splitTokens = tokenString.split(/__TOKEN__(.*?)__TOKEN__/g);\n const splitTokensStr = splitTokens.join('');\n setTokens(() => splitTokens);\n setTokenValue(() => splitTokensStr);\n setPrevTokenValue(() => splitTokensStr);\n }, [tokenString]);\n\n useEffect(() => {\n // Auto Grow Input\n if (contextMaxLength - 3 < tokenValue.length) {\n const newHeight = inputRef.current.scrollHeight + 3;\n setStringBuilderHeight(() => newHeight);\n setContentMaxLength(() => contextMaxLength + 25);\n }\n }, [tokenString, tokenValue]);\n\n /**\n *\n * @param {*} option : Option object for selected option from dropdown\n * When user selects an option append and prepend `__TOKEN__` to detect the token,\n * so they can be styled or manipulated later\n */\n const handleOptionSelection = (option) => {\n let newInput = '';\n const { selectionStart } = inputRef.current;\n if (prevTokenString && prevTokenString !== value && !selectedInvalidToken) {\n /* eslint prefer-destructuring: [\"error\", {VariableDeclarator: {object: true}}] */\n newInput = prevTokenString + tokenValue.split(prevTokenValue)[1];\n }\n let tokenizedString = '';\n // Adding token in Middle\n if (selectionStart !== tokenValue.length && !selectedInvalidToken) {\n const newTokenValue = tokenValue.slice(0, selectionStart)\n + option.id\n + tokenValue.slice(selectionStart);\n tokenizedString = stringToTokenString(newTokenValue, options);\n setCursorPos(inputRef, selectionStart + option.id.length);\n } else {\n tokenizedString = `${newInput || tokenValue}__TOKEN__${\n option.id\n }__TOKEN__`;\n }\n if (selectedInvalidToken) {\n tokenizedString = tokenString.replace(\n ` ${selectedInvalidToken} `,\n `__TOKEN__${option.id}__TOKEN__`,\n );\n setSelectedInvalidToken(() => null);\n setInitialSearchValue(() => '');\n }\n setTokenString(() => tokenizedString);\n setShowOptions(() => false);\n setTimeout(() => {\n inputRef.current.focus();\n }, 20);\n };\n\n const getThemeClasses = () => {\n const themes = theme ? theme.split(' ') : [];\n return themes.map((iTheme) => `tyk-form-group--${iTheme}`);\n };\n\n const getCssClasses = () => [\n 'tyk-form-group',\n ...getThemeClasses(),\n error && 'has-error',\n disabled && 'disabled',\n ]\n .filter(Boolean)\n .join(' ');\n\n const findInvalidTokenSubstitute = (invalidToken) => {\n setSelectedInvalidToken(() => invalidToken);\n setInitialSearchValue(() => invalidToken.replace(/[^a-zA-Z ]/g, ''));\n setShowOptions(() => true);\n };\n\n return (\n
    \n
    \n {label && (\n \n )}\n {!readOnly && (\n
    \n \n \n \n \n \n
    \n
    \n )}\n {\n readOnly &&
    {value || '-'}
    \n }\n
    \n \n );\n}\n\nStringBuilder.propTypes = {\n /** Options to render in the list */\n options: PropTypes.arrayOf(\n PropTypes.shape({\n /** id is the value that will be appended to the string on selection */\n id: PropTypes.string.isRequired,\n /** name of option (view) */\n name: PropTypes.string.isRequired,\n /** to style / highlight the token */\n className: PropTypes.string,\n /** description of option */\n desc: PropTypes.string,\n }),\n ),\n /** Callback executed on change of string value */\n onChange: PropTypes.func,\n /** Initial value */\n value: PropTypes.string,\n /** Disable input */\n disabled: PropTypes.bool,\n /** Read Only prop removes the form element and displays just the value */\n readOnly: PropTypes.bool,\n /** Show error state (w/ or w/o message) */\n error: PropTypes.string,\n /** Component theme */\n theme: PropTypes.string,\n /** Footnote for component */\n note: PropTypes.string,\n /** Label for component */\n label: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.func,\n PropTypes.string,\n ]),\n /** Label Width for component */\n labelwidth: PropTypes.string,\n /** Placeholder for component */\n placeholder: PropTypes.string,\n /** Key To trigger dropdown */\n dropdownTriggerKey: PropTypes.string,\n /** Regex to detect invalid tokens in the value */\n invalidTokenRegex: PropTypes.instanceOf(RegExp),\n /** Allow users to search from options */\n allowSearch: PropTypes.bool,\n name: PropTypes.string,\n wrapperClassName: PropTypes.string,\n};\n\nStringBuilder.defaultProps = {\n onChange: null,\n value: '',\n options: [],\n theme: 'default',\n};\n\nexport default StringBuilder;\n","const config = {\n FORM_DEBOUNCE: 200,\n};\n\nexport function setConfig(key, val) {\n config[key] = val;\n}\n\nexport default config;\n","import React, { useCallback, useEffect, useState } from 'react';\n\nimport config from '../config/config';\n\nfunction getValueFromPath(obj, path) {\n // turn 'aaa.qqq[2].bbb[5][3].mmm' into ['aaa', 'qqq', '2', 'bbb', '5', '3', 'mmm']\n const indexes = path.split(/[\\][.]/).filter(Boolean);\n return indexes.reduce((acc, v) => (acc ? acc[v] : acc), obj);\n}\n\nfunction debounce(f, limit) {\n let timeoutId;\n return (...args) => {\n clearTimeout(timeoutId);\n timeoutId = setTimeout(f, limit, ...args);\n };\n}\n\n/* eslint-disable react/prop-types, react/function-component-definition */\n/**\n * A wrapper function that \"prepares\" a tyk-ui form component to be used with the formik library.\n * It handles things like setting the value of the component, change events, error state,\n * and also has a default debounce time for when the change event is triggered.\n */\nconst wrapper = (Component, options) => ({ field, form, ...properties }) => {\n const DEFAULT_DEBOUNCE_TIME_MS = typeof config.FORM_DEBOUNCE === 'number' ? config.FORM_DEBOUNCE : 200;\n const [myValue, setMyValue] = useState(field.value);\n const opts = {\n getOnChangeProps: () => ({}),\n hasIsFieldProp: false,\n ...options,\n };\n\n const executeDebounced = useCallback((() => {\n const fn = (f) => f();\n if (\n properties.debounce === false\n || (config.FORM_DEBOUNCE === false && !properties.debounce)\n ) {\n return fn;\n }\n const timeout = typeof properties.debounce === 'number'\n ? properties.debounce\n : DEFAULT_DEBOUNCE_TIME_MS;\n return debounce(fn, timeout);\n })(), []);\n\n const getValue = (v) => {\n if (v && v.target) {\n if (v.target.nodeName === 'INPUT' && (v.target.type === 'checkbox' || v.target.type === 'radio')) {\n return v.target.checked;\n }\n return v.target.value;\n }\n return v;\n };\n\n const onChange = (valueOrEvent) => {\n const value = getValue(valueOrEvent);\n const onChangeProps = opts.getOnChangeProps(value, field, form, properties);\n\n const newValue = onChangeProps.value || properties.value || value;\n executeDebounced(() => {\n if (typeof properties.onChange === 'function') {\n properties.onChange(newValue);\n }\n field.onChange({ target: { name: field.name, value: newValue, ...onChangeProps } });\n });\n setMyValue(newValue);\n };\n\n const formError = (getValueFromPath(form.touched, field.name) || Boolean(form.submitCount))\n && getValueFromPath(form.errors, field.name);\n const error = typeof formError === 'string' ? formError : '';\n\n useEffect(() => {\n setMyValue(field.value);\n }, [field.value]);\n\n // eslint-disable-next-line no-param-reassign\n if (form.status?.disabled) properties.disabled = true;\n\n const componentProps = { ...properties };\n delete componentProps.debounce;\n\n return (\n \n );\n};\n\nexport default wrapper;\n","import wrapper from '../../../utils/formik';\nimport Checkbox from '../../components/Checkbox';\n\nexport default wrapper(Checkbox, {\n getOnChangeProps: (value) => ({\n checked: value,\n }),\n});\n","import wrapper from '../../../utils/formik';\nimport CodeEditor from '../../components/CodeEditor';\n\nexport default wrapper(CodeEditor);\n","import wrapper from '../../../utils/formik';\nimport Combobox from '../../components/Combobox';\n\nexport default wrapper(Combobox);\n","import wrapper from '../../../utils/formik';\nimport Combobox2 from '../../components/Combobox2';\n\nexport default wrapper(Combobox2);\n","import wrapper from '../../../utils/formik';\nimport DatePicker from '../../components/DatePicker';\n\nexport default wrapper(DatePicker);\n","import wrapper from '../../../utils/formik';\nimport EditableList from '../../components/EditableList';\n\nexport default wrapper(EditableList, {\n getOnChangeProps: value => ({ value: value || [] }),\n});\n","import wrapper from '../../../utils/formik';\nimport EditableList2 from '../../components/EditableList2';\n\nexport default wrapper(EditableList2);\n","import wrapper from '../../../utils/formik';\nimport FileInput from '../../components/FileInput';\n\nexport default wrapper(FileInput);\n","import wrapper from '../../../utils/formik';\nimport Input from '../../components/Input';\n\nexport default wrapper(Input, { hasIsFieldProp: true });\n","import wrapper from '../../../utils/formik';\nimport Input2 from '../../components/Input2';\n\nexport default wrapper(Input2);\n","import wrapper from '../../../utils/formik';\nimport MultiSelect from '../../components/Multiselect';\n\nexport default wrapper(MultiSelect);\n","import wrapper from '../../../utils/formik';\nimport Radio from '../../components/Radio';\n\nexport default wrapper(Radio, {\n getOnChangeProps: (value, field, form, properties) => ({\n checked: value === properties.value,\n value: properties.value,\n }),\n});\n","import wrapper from '../../../utils/formik';\nimport Select from '../../components/Select';\n\nexport default wrapper(Select, { hasIsFieldProp: true });\n","import wrapper from '../../../utils/formik';\nimport SelectableList from '../../components/SelectableList';\n\nexport default wrapper(SelectableList);\n","import wrapper from '../../../utils/formik';\nimport Textarea from '../../components/Textarea';\n\nexport default wrapper(Textarea);\n","import wrapper from '../../../utils/formik';\nimport Toggle from '../../components/Toggle';\n\nexport default wrapper(Toggle);\n","import wrapper from '../../../utils/formik';\nimport StringBuilder from '../../components/StringBuilder';\n\nexport default wrapper(StringBuilder);\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { fromJS } from 'immutable';\n\nimport CodeEditor from '../../components/CodeEditor';\n\nexport default class FieldCodeEditor extends Component {\n static propTypes = {\n input: PropTypes.instanceOf(Object),\n meta: PropTypes.instanceOf(Object),\n validationmessages: PropTypes.instanceOf(Object),\n };\n\n constructor(props) {\n super(props);\n\n this.handleOnChange = this.handleOnChange.bind(this);\n }\n\n getInputError() {\n const { meta, validationmessages } = this.props;\n const { touched, error, warning } = meta;\n let message = null;\n\n if (touched && error && validationmessages[error]) {\n message = validationmessages[error];\n } else if (touched && warning) {\n message = 'warning';\n }\n\n return message;\n }\n\n handleOnChange(value) {\n const { input } = this.prop;\n const { onChange } = input;\n\n onChange(fromJS(value));\n }\n\n render() {\n const { input, ...rest } = this.props;\n\n return (\n \n );\n }\n}\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { fromJS } from 'immutable';\n\nimport Combobox from '../../components/Combobox';\n\nexport default class FieldCombobox extends Component {\n static propTypes = {\n meta: PropTypes.instanceOf(Object),\n input: PropTypes.instanceOf(Object),\n validationmessages: PropTypes.instanceOf(Object),\n }\n\n constructor(props) {\n super(props);\n\n this.handleOnChange = this.handleOnChange.bind(this);\n }\n\n getComboboxError() {\n const { meta, validationmessages } = this.props;\n const { touched, error, warning } = meta;\n let message = null;\n\n if (touched && error && validationmessages[error]) {\n message = validationmessages[error];\n } else if (touched && warning) {\n message = 'warning';\n }\n\n return message;\n }\n\n handleOnChange(value) {\n const { input } = this.props;\n const { onChange } = input;\n\n onChange(fromJS(value));\n }\n\n render() {\n const { ...props } = this.props;\n\n return (\n \n );\n }\n}\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { fromJS } from 'immutable';\n\nimport Dropdown from '../../components/Dropdown';\n\nexport default class FieldDropdown extends Component {\n static propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n input: PropTypes.instanceOf(Object),\n };\n\n constructor(props) {\n super(props);\n\n this.handleOnChange = this.handleOnChange.bind(this);\n }\n\n handleOnChange(value) {\n const { input } = this.props;\n const { onChange } = input;\n\n onChange(fromJS(value));\n }\n\n render() {\n const {\n children,\n input,\n ...rest\n } = this.props;\n\n return (\n \n {children}\n \n );\n }\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport Pagination from '../../components/Pagination';\n\nconst FieldPagination = (props) => {\n const { input, ...rest } = props;\n\n return (\n \n );\n};\n\nFieldPagination.propTypes = {\n input: PropTypes.instanceOf(Object),\n};\n\nexport default FieldPagination;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { fromJS } from 'immutable';\n\nimport Combobox2 from '../../components/Combobox2';\n\nconst FieldCombobox2 = (props) => {\n const { input, meta, validationmessages } = props;\n\n const getComboboxError = () => {\n const { touched, error, warning } = meta;\n let message = null;\n\n if (touched && error && validationmessages[error]) {\n message = validationmessages[error];\n } else if (touched && warning) {\n message = 'warning';\n }\n return message;\n };\n\n const handleOnChange = (value) => {\n const { onChange } = input;\n onChange(fromJS(value));\n };\n\n return (\n \n );\n};\n\nFieldCombobox2.propTypes = {\n meta: PropTypes.instanceOf(Object),\n input: PropTypes.instanceOf(Object),\n validationmessages: PropTypes.instanceOf(Object),\n};\n\nexport default FieldCombobox2;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { fromJS } from 'immutable';\n\nimport DatePicker from '../../components/DatePicker';\n\nconst FormDatePicker = (props) => {\n const {\n input,\n meta,\n validationmessages,\n ...rest\n } = props;\n\n const getDatePickerError = () => {\n const { touched, error } = meta;\n let message = null;\n\n if (touched && error && validationmessages[error]) {\n message = validationmessages[error];\n }\n\n return message;\n };\n\n const handleOnChange = (value) => {\n const { onChange } = input;\n\n onChange(fromJS(value));\n };\n\n return (\n \n );\n};\n\nFormDatePicker.propTypes = {\n meta: PropTypes.instanceOf(Object),\n input: PropTypes.instanceOf(Object),\n validationmessages: PropTypes.instanceOf(Object),\n};\n\nexport default FormDatePicker;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { fromJS } from 'immutable';\n\nimport EditableList from '../../components/EditableList';\n\nexport default class FieldEditableList extends Component {\n static propTypes = {\n input: PropTypes.instanceOf(Object),\n meta: PropTypes.instanceOf(Object),\n validationmessages: PropTypes.instanceOf(Object),\n };\n\n constructor(props) {\n super(props);\n\n this.handleOnChange = this.handleOnChange.bind(this);\n }\n\n getEditableListError() {\n const { meta, validationmessages } = this.props;\n const { touched, error } = meta;\n let message = null;\n\n if (touched && error && validationmessages[error]) {\n message = validationmessages[error];\n }\n\n return message;\n }\n\n handleOnChange(value) {\n const { input } = this.props;\n const { onChange } = input;\n\n onChange(fromJS(value));\n }\n\n render() {\n const { ...props } = this.props;\n\n return (\n \n );\n }\n}\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\nimport FileInput from '../../components/FileInput';\n\nexport default class FieldFileInput extends Component {\n static propTypes = {\n input: PropTypes.instanceOf(Object),\n meta: PropTypes.instanceOf(Object),\n validationmessages: PropTypes.instanceOf(Object),\n };\n\n getInputError() {\n const { meta, validationmessages } = this.props;\n const { touched, error, warning } = meta;\n let message = null;\n\n if (touched && error && validationmessages[error]) {\n message = validationmessages[error];\n } else if (touched && warning) {\n message = 'warning';\n }\n\n return message;\n }\n\n render() {\n const { input, ...rest } = this.props;\n\n return (\n \n );\n }\n}\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Input from '../../components/Input';\n\nexport default class FieldInput extends Component {\n static propTypes = {\n meta: PropTypes.instanceOf(Object),\n input: PropTypes.instanceOf(Object),\n validationmessages: PropTypes.instanceOf(Object),\n }\n\n getInputError() {\n const { meta, validationmessages } = this.props;\n const { touched, error, warning } = meta;\n let message = null;\n\n if (touched && error && validationmessages[error]) {\n message = validationmessages[error];\n } else if (touched && warning) {\n message = 'warning';\n }\n\n return message;\n }\n\n render() {\n const { input, ...rest } = this.props;\n\n return (\n \n );\n }\n}\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { fromJS } from 'immutable';\n\nimport Multiselect from '../../components/Multiselect';\n\nexport default class FieldMultiselect extends Component {\n static propTypes = {\n input: PropTypes.instanceOf(Object),\n meta: PropTypes.instanceOf(Object),\n validationmessages: PropTypes.instanceOf(Object),\n }\n\n constructor(props) {\n super(props);\n\n this.handleOnChange = this.handleOnChange.bind(this);\n }\n\n getMultiselectError() {\n const { meta, validationmessages } = this.props;\n const { touched, error, warning } = meta;\n let message = null;\n\n if (touched && error && validationmessages[error]) {\n message = validationmessages[error];\n } else if (touched && warning) {\n message = 'warning';\n }\n\n return message;\n }\n\n handleOnChange(value) {\n const { input } = this.props;\n const { onChange } = input;\n\n onChange(fromJS(value));\n }\n\n render() {\n const { ...props } = this.props;\n\n return (\n \n );\n }\n}\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { fromJS } from 'immutable';\n\nimport Select from '../../components/Select';\n\nexport default class FieldSelect extends Component {\n static propTypes = {\n input: PropTypes.instanceOf(Object),\n meta: PropTypes.instanceOf(Object),\n validationmessages: PropTypes.instanceOf(Object),\n };\n\n constructor(props) {\n super(props);\n\n this.handleEvent = this.handleEvent.bind(this);\n }\n\n getSelectError() {\n const { meta, validationmessages } = this.props;\n const { touched, error, warning } = meta;\n let message = null;\n\n if (touched && error && validationmessages[error]) {\n message = validationmessages[error];\n } else if (touched && warning) {\n message = 'warning';\n }\n\n return message;\n }\n\n handleEvent(selectValue) {\n const { input } = this.props;\n const { onChange, value } = input;\n\n onChange(fromJS(selectValue !== undefined ? selectValue : value));\n }\n\n render() {\n const { input, ...rest } = this.props;\n\n return (\n \n );\n }\n}\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { fromJS } from 'immutable';\n\nimport SelectableList from '../../components/SelectableList';\n\nexport default class FieldSelectableList extends Component {\n static propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.node,\n ]),\n onChange: PropTypes.func,\n input: PropTypes.instanceOf(Object),\n };\n\n constructor(props) {\n super(props);\n\n this.handleOnChange = this.handleOnChange.bind(this);\n }\n\n handleOnChange(value) {\n const { input } = this.props;\n\n input.onChange(fromJS(value));\n }\n\n render() {\n const { children, ...props } = this.props;\n\n return (\n \n );\n }\n}\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { fromJS } from 'immutable';\n\nimport Toggle from '../../components/Toggle';\n\nexport default class FieldToggle extends Component {\n static propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.node,\n ]),\n onChange: PropTypes.func,\n input: PropTypes.instanceOf(Object),\n };\n\n constructor(props) {\n super(props);\n\n this.handleOnChange = this.handleOnChange.bind(this);\n }\n\n handleOnChange(value) {\n const { input } = this.props;\n\n input.onChange(fromJS(value));\n }\n\n render() {\n const { children, ...props } = this.props;\n\n return (\n \n {children}\n \n );\n }\n}\n"],"names":["global","this","window","define","module","deps","payload","arguments","length","modules","payloads","original","apply","console","error","trace","ns","root","_require","parentId","callback","lookup","undefined","Object","prototype","toString","call","params","i","l","dep","require","push","packagedModule","normalizeModule","moduleName","indexOf","chunks","split","charAt","slice","join","previous","replace","exports","mod","id","uri","packaged","ace","defineProp","obj","name","val","defineProperty","value","enumerable","writable","configurable","String","startsWith","searchString","position","lastIndexOf","endsWith","subjectString","lastIndex","repeat","count","result","string","includes","str","assign","target","TypeError","output","index","source","keys","forEach","key","values","o","map","k","Array","find","predicate","len","thisArg","kValue","findIndex","item","fill","O","relativeStart","Math","max","min","end","relativeEnd","final","of","deepCopy","copy","isArray","last","a","stringReverse","reverse","stringRepeat","trimBeginRegexp","trimEndRegexp","stringTrimLeft","stringTrimRight","copyObject","copyArray","array","arrayToMap","arr","createMap","props","create","arrayRemove","splice","escapeRegExp","escapeHTML","getMatchOffsets","regExp","matches","offset","deferredCall","fcn","timer","deferred","timeout","cancel","setTimeout","schedule","clearTimeout","isPending","delayedCall","defaultTimeout","_self","delay","supportsLookbehind","RegExp","e","skipEmptyMatch","line","supportsUnicodeFlag","codePointAt","OS","LINUX","MAC","WINDOWS","getOS","isMac","isLinux","_navigator","navigator","os","exec","platform","toLowerCase","ua","userAgent","appName","isWin","isIE","parseFloat","match","isOldIE","isGecko","isMozilla","isOpera","opera","isWebKit","isChrome","isSafari","isEdge","isAIR","isAndroid","isChromeOS","isIOS","test","MSStream","isMobile","strictCSP","useragent","buildDom","parent","refs","txt","document","createTextNode","appendChild","els","ch","el","createElement","options","childIndex","n","className","style","cssText","setAttribute","getDocumentHead","doc","head","getElementsByTagName","documentElement","tag","createElementNS","removeChildren","element","innerHTML","textContent","ownerDocument","createFragment","createDocumentFragment","hasCssClass","addCssClass","removeCssClass","classes","toggleCssClass","add","setCssClass","node","include","hasCssString","sheets","querySelectorAll","removeElementById","getElementById","remove","cssCache","insertPendingStyles","cache","importCssString","container","getRootNode","insertBefore","firstChild","useStrictCSP","importCssStylsheet","rel","href","scrollbarWidth","inner","width","minWidth","height","display","outer","left","overflow","body","noScrollbar","offsetWidth","withScrollbar","clientWidth","removeChild","computedStyle","getComputedStyle","setStyle","styles","property","HAS_CSS_ANIMATION","HAS_CSS_TRANSFORMS","HI_DPI","devicePixelRatio","div","transform","animationName","translate","tx","ty","round","top","dom","get","url","xhr","XMLHttpRequest","open","onreadystatechange","readyState","responseText","send","loadScript","path","s","src","onload","_","isAbort","qualifyURL","inherits","ctor","superCtor","super_","constructor","mixin","implement","proto","EventEmitter","stopPropagation","propagationStopped","preventDefault","defaultPrevented","_emit","_dispatchEvent","eventName","_eventRegistry","_defaultHandlers","listeners","defaultHandler","type","_signal","once","on","newCallback","off","Promise","resolve","setDefaultHandler","handlers","_disabled_","old","disabled","removeDefaultHandler","pop","addEventListener","capturing","removeListener","removeEventListener","removeAllListeners","reportError","msg","data","Error","messages","oop","optionsProvider","setOptions","optList","setOption","getOptions","optionNames","$options","filter","hidden","getOption","opt","warn","forwardTo","handlesSet","set","message","AppConfig","$defaultOptions","defineOptions","initialValue","resetOptions","setDefaultValue","opts","setDefaultValues","optionHash","setMessages","nls","translated","isDark","cssClass","$id","lang","net","customLoader","workerPath","modePath","themePath","basePath","suffix","$moduleUrls","loadWorkerFromBlob","sharedPopups","hasOwnProperty","all","$modes","moduleUrl","component","parts","sep","base","re","setModuleUrl","subst","setLoader","cb","dynamicModules","$loading","$loaded","loadModule","onLoad","loadedModule","moduleType","load","afterLoad","loader","err","reportErrorIfPathIsNotConfigured","then","default","$require","setModuleLoader","version","config","init","scriptOptions","scriptUrl","currentScript","_currentScript","currentDocument","scripts","script","getAttribute","attributes","j","attr","m","m1","toUpperCase","Range","startRow","startColumn","endRow","endColumn","start","row","column","isEqual","range","contains","compare","compareRange","cmp","comparePoint","p","containsRange","intersects","isEnd","isStart","setStart","setEnd","inside","insideStart","insideEnd","isMultiLine","compareStart","compareEnd","compareInside","clipRows","firstRow","lastRow","fromPoints","extend","isEmpty","clone","collapseRows","toScreenRange","session","screenPosStart","documentToScreenPosition","screenPosEnd","moveBy","comparePoints","p1","p2","Keys","ret","MODIFIER_KEYS","KEY_MODS","FUNCTION_KEYS","PRINTABLE_KEYS","parseInt","enter","escape","esc","del","mods","pow","x","keyCodeToString","keyCode","keyString","fromCharCode","activeListenerOptions","pressedKeys","ts","getListenerOptions","createComment","passive","detectListenerOptionsSupport","EventListener","elem","destroy","addListener","destroyer","$toDestroy","stopEvent","getButton","ctrlKey","altKey","shiftKey","button","capture","eventHandler","releaseCaptureHandler","onMouseUp","addMouseWheelListener","deltaX","deltaY","deltaMode","DOM_DELTA_PIXEL","wheelX","wheelY","DOM_DELTA_LINE","DOM_DELTA_PAGE","addMultiMouseDownListener","elements","timeouts","callbackName","startX","startY","clicks","eventNames","onMousedown","detail","isNewClick","abs","clientX","clientY","_clicks","getModifierHash","metaKey","normalizeCommandKeys","hashId","getModifierState","altGr","location","keyLocation","timeStamp","resetPressedKeys","getModifierString","addCommandKeyListener","isOldGecko","lastKeyDownKeyCode","lastDefaultPrevented","postMessage","postMessageId","nextTick","win","messageName","listener","$idleBlocked","onIdle","handler","$idleBlockId","blockIdle","nextFrame","requestAnimationFrame","mozRequestAnimationFrame","webkitRequestAnimationFrame","msRequestAnimationFrame","oRequestAnimationFrame","bind","$cancelT","lineMode","pasteCancelled","Date","now","event","clipboard","BROKEN_SETDATA","USE_IE_MIME_TYPE","HAS_FOCUS_ARGS","MAX_LINE_LENGTH","KEYS","MODS","valueResetRegex","TextInput","parentNode","host","text","opacity","copied","pasted","inComposition","sendingText","tempStyle","fontSize","commandMode","ignoreFocusEvents","lastValue","lastSelectionStart","lastSelectionEnd","lastRestoreEnd","rowStart","Number","MAX_SAFE_INTEGER","rowEnd","MIN_SAFE_INTEGER","numberOfExtraLines","isFocused","activeElement","setNumberOfExtraLines","number","setAriaOptions","activeDescendant","inline","removeAttribute","role","setLabel","selection","cursor","onBlur","hasFocus","onFocus","resetSelection","$focusScroll","focus","renderer","enableKeyboardAccessibility","preventScroll","isTransformed","getBoundingClientRect","ancestors","t","parentElement","nodeType","blur","curOp","commandName","command","isUserAction","docChanged","selectionChanged","onCompositionEnd","positionToSelection","getLine","newValue","selectionEnd","setSelectionRange","afterContextMenu","selectionStart","getRange","lines","prevLine","nextLine","inputHandler","setInputHandler","getInputHandler","sendText","fromInput","onPaste","extendLeft","extendRight","inserted","restoreStart","restoreEnd","endIndex","shouldReset","onTextInput","onInput","onCompositionUpdate","inputType","execCommand","handleClipboardData","forceIEMime","clipboardData","mime","setData","getData","doCopy","isCut","getCopyText","onCut","onCopy","select","onCommandKey","isAllSelected","selectAll","$readOnly","cancelComposition","useTextareaForIME","markerRange","context","compositionStartOffset","closeTimeout","syncComposition","onContextMenuClose","$isMousePressed","$keepTextAreaAtCursor","$moveTextAreaToCursor","onCompositionStart","getSelectionRange","msGetInputContext","getInputContext","getElement","setCommandMode","readOnly","setReadOnly","setCopyWithEmptySelection","onContextMenu","domEvent","moveToMouse","bringToFront","characterWidth","rect","borderTopWidth","borderLeftWidth","maxTop","bottom","clientHeight","move","textInput","scroller","typingResetTimeout","typing","detectArrowKeys","$mouseHandler","isMousePressed","modifier","up","home","option","down","right","shift","commands","findKeyCommand","addIosSelectionHandler","$setUserAgentForTests","_isMobile","_isIOS","DefaultHandlers","mouseHandler","$clickSelection","editor","onMouseDown","onDoubleClick","onTripleClick","onQuadClick","onMouseWheel","selectByLines","extendSelectionBy","selectByWords","ev","inSelection","pos","getDocumentPosition","mousedownEvent","moveToPosition","time","$focusTimeout","inMultiSelectMode","captureMouse","startSelect","setState","waitForClickSelection","screenToTextCoordinates","y","getShiftKey","selectToPosition","anchor","orientedRange","calcRangeOrientation","setSelectionAnchor","scrollCursorIntoView","unitName","cmpStart","cmpEnd","selectByLinesEnd","unsetStyle","focusWait","ax","ay","bx","by","distance","sqrt","getBracketRange","getWordRange","getLineRange","getAccelKey","$lastScroll","vx","vy","allowed","prevScroll","dt","direction","canScroll","isScrollableBy","speed","scrollBy","stop","selectEnd","selectAllEnd","selectByWordsEnd","extendStatics","__extends","d","b","setPrototypeOf","__proto__","__","__values","Symbol","iterator","next","done","CLASSNAME","Tooltip","isOpen","$element","$parentNode","$init","setText","setHtml","html","setPosition","setClassName","setTheme","theme","show","hide","getHeight","offsetHeight","getWidth","popupManager","PopupManager","popups","addPopup","popup","updatePopups","removePopup","e_1","_a","e_2","_b","sort","priority","visiblepopups","_c","_d","shouldDisplay","visiblepopups_1","visiblepopups_1_1","visiblePopup","doPopupsOverlap","e_2_1","return","e_1_1","popupA","popupB","rectA","rectB","HoverTooltip","_super","_this","lastT","idleTime","lastEvent","onMouseOut","onMouseMove","waitForHover","whiteSpace","pointerEvents","tabIndex","addToEditor","getMouseEventTarget","removeFromEditor","isOutsideOfText","$gatherData","docPos","screenPos","pixelToScreenCoordinates","clippedPos","setDataProvider","showForRange","domNode","startingEvent","$registerCloseEvents","addMarker","textToScreenCoordinates","pageX","maxHeight","labelHeight","labelWidth","spaceBelow","innerHeight","pageY","lineHeight","isAbove","innerWidth","marker","$markerSession","removeMarker","$removeCloseEvents","relatedTarget","currentTarget","classList","GutterHandler","tooltipTimeout","mouseEvent","gutter","$gutterLayer","tooltip","GutterTooltip","hideTooltip","moveTooltip","getRegion","selectTo","srcElement","$tooltipFollowsMouse","getLength","screenRow","$pos","documentToScreenRow","showTooltip","gutterRow","getGutterRow","gutterCell","$lines","querySelector","$gutter","windowWidth","windowHeight","singular","plural","warning","info","annotation","annotationsInRow","$annotations","from","fold","getFoldLine","$showFoldedAnnotations","mostSevereAnnotationInFoldType","annotationsInFold","annotationType","summaryFoldedAnnotations","concat","annotationsToSummaryString","annotationMessages","iconClassName","$useSvgGutterIcons","annotationLabels","tooltipContent","annotations","summary","annotationTypes_1","annotationTypes_1_1","label","MouseEvent","$inSelection","documentRow","selectionRange","DragdropHandler","dragImage","dragSelectionMarker","timerId","dragCursor","dragOperation","isInternal","autoScrollStartTime","cursorMovedTime","cursorPointOnCaretMoved","mouseTarget","counter","onDragInterval","prevCursor","vMovement","hMovement","moveCursorToPosition","calcDistance","layerConfig","editorRect","offsets","nearestXOffset","nearestYOffset","scrollCursor","vScroll","hScroll","autoScroll","addDragMarker","toOrientedRange","getSelectionStyle","clearSelection","$cursorLayer","setBlinking","clearInterval","setInterval","clearDragMarker","fromOrientedRange","$resetCursorStyle","onDragStart","cancelDrag","draggable","self","dataTransfer","effectAllowed","getReadOnly","setDragImage","clearData","getTextRange","onDragEnd","dropEffect","setCursorStyle","onDragEnter","canAccept","getDropEffect","onDragOver","onMouseMoveTimer","onDragLeave","onDrop","moveText","dropData","insert","types","some","copyAllowed","copyModifierState","dragWait","getDragDelay","startDrag","dragWaitEnd","dragReadyEnd","cursorStyle","onMouseDrag","state","dragDrop","$dragEnabled","eventTarget","unselectable","addTouchListeners","touchStartT","longTouchTimer","animationTimer","pressed","contextMenu","mode","animationSteps","clickCount","vX","vY","showContextMenu","handleClick","selected","hasUndo","action","getUndoManager","replaceChild","class","readText","writeText","ontouchstart","ontouchend","onclick","pagePos","leftOffset","scrollLeft","hideContextMenu","handleLongTap","selectWord","touches","h","w","touchObj","setRange","switchToSelectionMode","cursorPos","getPixelPosition","anchorPos","offsetTop","offsetLeft","weightedDistance","diff1","diff2","oldScrollTop","getScrollTop","DefaultGutterHandler","MouseHandler","focusEditor","onMouseEvent","scrollBarV","scrollBarH","Boolean","gutterEl","$dragDelay","character","mousemove","$scrollSpeed","mouseMoveHandler","which","releaseMouse","$mouseMoved","onCaptureEnd","onOperationEnd","onCaptureInterval","$onCaptureMouseMove","endOperation","startOperation","cancelContextMenu","scrollSpeed","dragDelay","dragEnabled","focusTimeout","tooltipFollowsMouse","FoldHandler","getFoldAt","removeFold","expandFold","getUseWrapMode","foldWidgets","onFoldWidgetClick","getParentFoldRangeData","firstRange","addFold","keyUtil","KeyBinding","$editor","$data","$handlers","kb","removeKeyboardHandler","$defaultHandler","addKeyboardHandler","setKeyboardHandler","handleKeyboard","attach","detach","getKeyboardHandler","getStatusText","$callKeyboardHandlers","toExecute","success","args","passEvent","dir","hiLevel","lastArabic","hasUBAT_B","hasUBAT_S","impTab_LTR","impTab_RTL","ET","BN","UnicodeTBL00","UnicodeTBL20","_invertLevel","lev","levels","_array","lo","hi","tmp","_getCharClass","chars","ix","wType","nType","cType","c","rtlCandidate","_getCharacterType","uc","charCodeAt","L","R","EN","ON_R","AN","R_H","B","RLE","DOT","doBidiReorder","textCharTypes","isRtl","logicalFromVisual","bidiLevels","charTypes","impTab","prevState","newClass","newLevel","newState","condPos","_computeLevels","hasBidiCharacters","getVisualFromLogicalIdx","logIdx","rowMap","bidiUtil","bidiRE","BidiHandler","bidiMap","currentRow","charWidths","EOL","showInvisibles","isRtlDir","$isRtl","wrapIndent","EOF","contentWidth","fontMetrics","rtlLineOffset","wrapOffset","isMoveLeftOperation","seenBidi","getValue","isBidiRow","docRow","splitIndex","updateRowLine","updateBidiMap","onChange","delta","getDocumentRow","rowCache","$screenRowCache","$getRowCacheIndex","$docRowCache","getSplitIndex","currentIndex","prevIndex","endOfLine","$useWrapMode","splits","$wrapData","indent","substring","size","isFullWidth","getScreenTabSize","$main","substr","markAsDirty","updateCharacterWidths","$characterSize","bidiCharWidth","$measureCharWidth","setShowInvisibles","setEolChar","eolChar","setContentWidth","isRtlLine","setRtlDirection","getCursorPosition","getSelectionAnchor","$bidiHandler","removeInLine","getPosLeft","col","leftBoundary","logicalIdx","getOverwrite","visualIdx","getSelections","startCol","endCol","level","selections","selColMin","selColMax","isSelected","isSelectedPrev","visIdx","offsetToCol","posX","charWidth","Selection","getDocument","lead","createAnchor","$silent","$cursorChanged","$isEmpty","$keepDesiredColumnOnChange","$desiredColumn","$anchorChanged","getCursor","getPosition","setAnchor","getAnchor","getSelectionLead","isBackwards","$setSelection","MAX_VALUE","anchorRow","anchorColumn","cursorRow","cursorColumn","wasEmpty","wasMultiselect","$moveSelection","mover","moveCursorTo","moveTo","selectUp","moveCursorUp","selectDown","moveCursorDown","selectRight","moveCursorRight","selectLeft","moveCursorLeft","selectLineStart","moveCursorLineStart","selectLineEnd","moveCursorLineEnd","selectFileEnd","moveCursorFileEnd","selectFileStart","moveCursorFileStart","selectWordRight","moveCursorWordRight","selectWordLeft","moveCursorWordLeft","selectAWord","getAWordRange","excludeLastChar","foldLine","selectLine","moveCursorBy","wouldMoveIntoSoftTab","tabSize","isTabStop","getTabSize","getNavigateWithinSoftTabs","firstColumnPosition","screenToDocumentPosition","leadingSpace","getDisplayLine","$useEmacsStyleLineStart","lineEnd","getDocumentLastRowColumnPosition","textEnd","search","moveCursorLongWordRight","rightOfCursor","nonTokenRe","tokenRe","moveCursorLongWordLeft","getFoldStringAt","leftOfCursor","$shortWordEndIndex","whitespaceRe","moveCursorShortWordRight","moveCursorShortWordLeft","$selectLongWords","rows","offsetX","lineWidgets","widget","rowsAbove","rowCount","keepDesiredColumn","moveCursorToScreen","desiredColumn","r","getRangeOfMovements","func","toJSON","rangeCount","ranges","r1","fromJSON","rangeList","toSingleRange","addRange","MAX_TOKEN_COUNT","Tokenizer","rules","states","regExps","matchMappings","ruleRegExps","matchTotal","mapping","defaultToken","flag","splitterRurles","rule","caseInsensitive","unicode","regex","adjustedregex","matchcount","token","groupCount","tokenArray","onMatch","$arrayTokens","$applyToken","digit","removeCapturingGroups","splitRegex","createSplitterRegexp","$setMaxTokenCount","tokens","stack","inChClass","lastCapture","parenOpen","parenClose","square","getLineTokens","startState","currentState","matchAttempts","skipped","consumeLineEnd","merge","unshift","TextHighlightRules","$rules","addRules","prefix","nextState","getRules","embedRules","HighlightRules","escapeRules","append","$embeds","getEmbeds","pushState","popState","normalizeRules","processState","processed","toInsert","stateName","includeName","noEscape","keywordMap","createKeywordMapper","ignoreCase","splitChar","keywords","$keywordList","list","word","getKeywords","$keywords","Behaviour","$behaviours","addBehaviours","behaviours","inherit","getBehaviours","TokenIterator","initialRow","initialColumn","$session","$row","$rowTokens","getTokens","getTokenAt","$tokenIndex","stepBackward","stepForward","getCurrentToken","getCurrentTokenRow","getCurrentTokenColumn","rowTokens","tokenIndex","getCurrentTokenPosition","getCurrentTokenRange","SAFE_INSERT_IN_TOKENS","SAFE_INSERT_BEFORE_TOKENS","contextCache","defaultQuotes","initContext","multiSelect","autoInsertedBrackets","autoInsertedRow","autoInsertedLineEnd","maybeInsertedBrackets","maybeInsertedRow","maybeInsertedLineStart","maybeInsertedLineEnd","getWrapped","opening","closing","rowDiff","CstyleBehaviour","getWrapBehavioursEnabled","isSaneInsertion","braces","recordAutoInsert","recordMaybeInsert","$findOpeningBracket","isAutoInsertedClosing","popAutoInsertedClosing","isMaybeInsertedClosing","clearMaybeInsertedClosing","openBracePos","findMatchingBracket","next_indent","$getIndent","getTabString","quotes","$mode","$quotes","lineCommentStart","quote","leftChar","rightChar","rightToken","pair","stringBefore","stringAfter","wordRe","isWordBefore","isWordAfter","pairQuotesAfter","$pairQuotesAfter","charBefore","closeDocComment","$matchTokenType","iterator2","bracket","wordChars","code","Mode","$defaultBehaviour","getTokenizer","$tokenizer","$highlightRules","$highlightRuleConfig","blockComment","toggleCommentLines","ignoreBlankLines","shouldRemove","minIndent","Infinity","insertAtTabStop","regexpStart","getUseSoftTabs","uncomment","shouldInsertSpace","commentWithSpace","comment","insertInLine","testRemove","before","after","spaces","lineCommentEnd","regexpEnd","iter","fun","minEmptyLength","floor","toggleBlockComment","colDiff","initialRange","startRange","endRange","getNextLineIndent","tab","checkOutdent","input","autoOutdent","createWorker","createModeDelegates","delegations","scope","functionName","$delegator","method","language","transformAction","param","$behaviour","completionKeywords","ruleItr","aLength","$createKeywordList","getCompletions","score","meta","applyDelta","docLines","doNotValidate","Anchor","$onChange","$clipPositionToDocument","point","moveIfEqual","deltaIsInsert","deltaRowShift","deltaColShift","deltaStart","deltaEnd","$pointsInOrder","$getTransformedPoint","$insertRight","noClip","point1","point2","equalPointsInOrder","bColIsAfter","Document","textOrLines","insertMergedLines","setValue","getAllLines","getNewLineCharacter","$detectNewLine","$autoNewLine","$newLineMode","setNewLineMode","newLineMode","getNewLineMode","isNewLine","getLines","getLinesForRange","insertLines","insertFullLines","removeLines","removeFullLines","insertNewLine","$split","clonePos","$clipPosition","deleteFirstNewLine","deleteLastNewLine","deletedLines","removeNewLine","applyDeltas","deltas","revertDeltas","revertDelta","isInsert","$splitAndapplyLargeDelta","$safeApplyDelta","docLength","MAX","to","chunk","indexToPosition","newlineLength","positionToIndex","BackgroundTokenizer","tokenizer","running","currentLine","$worker","workerStart","endLine","startLine","processedLines","$tokenizeRow","fireUpdateEvent","setTokenizer","setDocument","first","scheduleStart","$updateOnChange","getState","cleanup","SearchHighlight","clazz","setRegexp","update","markerLayer","renderedMarkerRanges","MAX_RANGES","rangeToAddMarkerTo","rangeAsString","drawSingleLineMarker","UndoManager","$maxRev","$fromUndo","$undoDepth","reset","addSession","allowMerge","$lastDelta","$keepRedoStack","$redoStack","lastDeltas","undoStackLength","$undoStack","$rev","addSelection","rev","startNewGroup","markIgnored","ignore","getSelection","getRevision","getDeltas","getChangedRanges","getChangedLines","undo","dontSelect","deltaSet","swapped","swapGroups","rearrangeUndoStack","$redoStackBaseRev","undoSelectionRange","undoChanges","$syncRev","redo","diff","redoStack","deltaSets","moveDeltasByOne","rebaseRedoStack","redoSelectionRange","redoChanges","nextDelta","mark","canUndo","canRedo","bookmark","isAtBookmark","json","$prettyPrint","stringifyDelta","hasRedo","isClean","markClean","stringifyRange","swap","d1","d2","i1","i2","ds1","ds2","selectionBefore","selectionAfter","xform","c1","splitDelta","shiftPos","rowsBefore","otherLines","cloneDelta","xformed","FoldLine","foldData","folds","setFoldLine","shiftRow","sameRow","containsRow","walk","lastEnd","isNewRow","placeholder","getNextFoldTo","kind","addRemoveChars","log","foldBefore","newFoldLine","foldLineNext","idxToPosition","idx","lastFoldEndColumn","RangeList","$bias","pointIndex","excludeEdges","startIndex","addList","removed","substractPoint","containsPoint","rangeAtPoint","clipped","removeAll","lineDif","Fold","subFolds","subFold","collapseChildren","addSubFold","consumePoint","afterStart","firstConsumed","consumedFolds","restoreRange","restorePoint","Folding","side","getFoldsInRange","foldLines","$foldData","foundFolds","getFoldsInRangeList","getAllFolds","trim","lastFold","startFoldLine","getNextFoldLine","getFoldedRowCount","$addFoldLine","added","$clipRangeToDocument","startFold","endFold","removeFolds","$updateWrapData","$updateRowLengthCache","$modified","addFolds","$updating","cloneFolds","foldAll","expandFolds","unfold","expandInner","outermostFolds","isRowFolded","startFoldRow","getRowFoldEnd","getRowFoldStart","getFoldDisplayLine","textLine","lastColumn","$cloneFoldData","fd","toggleFold","tryToUnfold","bracketPos","getCommentFoldRange","depth","getFoldWidget","getFoldWidgetRange","foldToLevel","foldAllComments","$foldStyles","$foldStyle","setFoldStyle","$foldMode","$setFolding","foldMode","$updateFoldWidgets","$tokenizerUpdateFoldWidgets","updateFoldWidgets","tokenizerUpdateFoldWidgets","ignoreCurrent","fw","children","siblings","$toggleFoldWidget","toggleFoldWidget","toggleParent","BracketMatch","chr","charBeforeCursor","$findClosingBracket","getMatchingBracketRanges","bracketsRegExp","$brackets","typeRe","openBracket","valueIndex","closingBracket","valueLength","getMatchingTags","$findTagName","$findClosingTag","$findOpeningTag","found","backward","prevToken","currentTag","openTagStart","openTagName","foundOpenTagEnd","openTagEnd","closeTagStart","closeTagName","closeTagEnd","openTag","closeTag","stepCount","tmpToken","TextMode","EditSession","$breakpoints","$decorations","$frontMarkers","$backMarkers","$markerId","$undoSelect","$uid","bgTokenizer","onChangeFold","setMode","destroyed","resetCaches","$resetRowCache","cacheArray","low","mid","$rowLengthCache","removedFolds","$updateInternalDataOnChange","$undoManager","mergeUndoDeltas","$informUndoManager","setUndoManager","JSON","parse","undoManager","history","editSession","setAnnotations","setBreakpoints","breakpoints","setScrollLeft","setScrollTop","scrollTop","$scrollLeft","$scrollTop","$syncInformUndoManager","markUndoGroup","$defaultUndoManager","setUseSoftTabs","$useSoftTabs","$indentWithTabs","setTabSize","$tabSize","setNavigateWithinSoftTabs","navigateWithinSoftTabs","$navigateWithinSoftTabs","setOverwrite","overwrite","$overwrite","toggleOverwrite","addGutterDecoration","removeGutterDecoration","getBreakpoints","clearBreakpoints","setBreakpoint","clearBreakpoint","inFront","addDynamicMarker","markerId","getMarkers","highlight","$searchHighlight","highlightLines","getAnnotations","clearAnnotations","inToken","wordRange","setUseWorker","useWorker","getUseWorker","$useWorker","onReloadTokenizer","$onChangeMode","$modeId","$isPlaceholder","oldMode","$stopWorker","$startWorker","attachToSession","wrapMethod","$wrapMethod","foldingRules","terminate","getMode","isNaN","getScrollLeft","getScreenWidth","$computeWidth","getLineWidgetMaxWidth","screenWidth","lineWidgetsWidth","lineWidgetWidth","force","$wrapLimit","longestScreenLine","foldIndex","foldStart","$getStringScreenWidth","$getUndoSelection","setUndoSelect","enable","isUndo","fromRange","toPosition","toRange","collDiff","oldStart","newStart","indentRows","indentString","outdentRows","rowRange","deleteRange","$moveLines","$clipRowToDocument","moveLinesUp","moveLinesDown","duplicateLines","$clipColumnToRow","setUseWrapMode","useWrapMode","setWrapLimitRange","$wrapLimitRange","adjustWrapLimit","desiredLimit","$printMargin","limits","wrapLimit","$constrainWrapLimit","getWrapLimit","setWrapLimit","limit","getWrapLimitRange","foldLineBefore","wrapData","walkTokens","$getDisplayTokens","PLACEHOLDER_START","PLACEHOLDER_BODY","$computeWrapSplits","displayLength","lastSplit","lastDocSplit","isCode","$wrapAsCode","indentedSoftWrap","$indentedSoftWrap","maxIndent","addSplit","indentation","SPACE","TAB","TAB_SPACE","getWrapIndent","minSplit","PUNCTUATION","CHAR_EXT","CHAR","maxScreenColumn","screenColumn","getRowLength","getRowLineCount","getRowWrapIndent","getScreenLastRowColumn","documentToScreenColumn","getDocumentLastRowColumn","docColumn","getRowSplitData","screenToDocumentRow","screenToDocumentColumn","rowLength","doCache","maxRow","foldStartRow","wrapRow","screenRowOffset","getScreenLength","screenRows","$getWidgetScreenLength","$setFontMetrics","fm","$enableVarChar","getCharacterWidth","wrap","$wrap","firstLineNumber","useSoftTabs","foldStyle","Search","$matchIterator","sr","sc","er","ec","skipCurrent","findAll","needle","$assembleRegExp","$isMultiLine","prevRange","replacement","preserveCase","$disableFakeMultiline","caseSensitive","$supportsUnicodeFlag","wholeWord","wordBoundary","firstChar","needleArray","lastChar","addWordBoundary","$assembleMultilineRegExp","backwards","forEachInLine","MultiHashHandler","$singleCommand","commandKeyBinding","addCommands","addCommand","removeCommand","bindKey","_buildKeyHash","keepCommand","ckb","keyId","cmdGroup","keyPart","chain","binding","parseKeys","_addCommandToBinding","removeCommands","bindKeys","keyList","$keyChain","isDefault","HashHandler","CommandManager","byName","$checkCommandState","isAvailable","returnValue","toggleRecording","$inReplay","recording","macro","$addCommandToMacro","oldMacro","replay","trimMacro","mac","description","showSettingsMenu","showErrorMarker","scrollIntoView","centerSelection","gotoLine","prompt","$type","multiSelectAction","getAllRanges","findNext","findPrevious","aceCommandGroup","navigateFileStart","navigateUp","times","navigateFileEnd","navigateDown","navigateWordLeft","navigateLineStart","navigateLeft","navigateWordRight","navigateLineEnd","navigateRight","selectPageDown","scrollPageDown","gotoPageDown","selectPageUp","scrollPageUp","gotoPageUp","jumpToMatching","$copyWithEmptySelection","$handlePaste","duplicateSelection","sortLines","modifyNumber","copyLinesUp","copyLinesDown","removeToLineStart","removeToLineEnd","removeWordLeft","removeWordRight","blockOutdent","blockIndent","splitLine","transposeLetters","transposeSelections","autoIndent","openLink","firstLineEndCol","selectedCount","insertLine","curLine","newRanges","exitMultiSelectMode","LineWidgets","widgetManager","updateOnChange","renderWidgets","measureWidgets","_changedWidgets","$onChangeEditor","updateOnFold","_inDocument","removeLineWidget","$updateRows","noWidgets","$oldWidget","$registerLineWidget","addLineWidget","zIndex","coverGutter","pixelHeight","$fold","onWidgetChanged","w1","getWidgetsAtRow","updateFull","changedWidgets","fixedWidth","ceil","coverLine","gutterWidth","fullWidth","padding","scrollBar","GutterKeyboardHandler","gutterLayer","activeRowIndex","activeLane","annotationTooltip","$onGutterKeyDown","$blurGutter","isRowVisible","scrollToLine","$rowToRowIndex","$cursorCell","nearestFoldIndex","$findNearestFoldWidget","nearestAnnotationIndex","$findNearestAnnotation","$focusAnnotation","$focusFoldWidget","$handleGutterKeyboardInteraction","GutterKeyboardEvent","lane","$switchLane","$rowIndexToRow","rowFoldingWidget","$blurFoldWidget","cells","childNodes","$moveFoldWidgetDown","$moveAnnotationDown","$moveFoldWidgetUp","$moveAnnotationUp","$blurAnnotation","$isFoldWidgetVisible","isRowFullyVisible","isIconVisible","$getFoldWidget","$isAnnotationVisible","$getAnnotation","foldWidget","keyboardFocusClassName","desinationLane","annotationIndex","foldWidgetIndex","cell","gutterKeyboardHandler","getKey","getRow","isInAnnotationLane","isInFoldLane","defaultCommands","Editor","getContainerElement","getTextAreaContainer","textarea","keyBinding","$search","$historyTracker","$initOperationListeners","_$emitInputEvent","setSession","$opResetTimer","$lastSel","commandEvent","prevOp","previousCommand","scrollSelectionIntoView","animateScrolling","sel","$mergeUndoDeltas","prev","mergeableCommands","$mergeableCommands","shouldMerge","mergeNextCommand","sequenceStartTime","keyboardHandler","$keybindingId","oldSession","$onDocumentChange","$onTokenizerUpdate","$onChangeTabSize","$onChangeWrapLimit","$onChangeWrapMode","$onChangeFold","$onChangeFrontMarker","$onChangeBackMarker","$onChangeBreakpoint","$onChangeAnnotation","$onCursorChange","$onScrollTopChange","$onScrollLeftChange","$onSelectionChange","onDocumentChange","onChangeMode","onTokenizerUpdate","onChangeTabSize","onChangeWrapLimit","onChangeWrapMode","onChangeFrontMarker","onChangeBackMarker","onChangeBreakpoint","onChangeAnnotation","onCursorChange","onScrollTopChange","onScrollLeftChange","onSelectionChange","oldEditor","getSession","resize","onResize","getTheme","getFontSize","setFontSize","$highlightBrackets","$highlightPending","$bracketHighlight","markerIds","$getDirectionForHighlight","tagNamesRanges","getMatching","markerType","getHighlightIndentGuides","$textLayer","$highlightIndentGuide","$isFocused","showCursor","visualizeFocus","hideCursor","visualizeBlur","$cursorChange","updateCursor","$updateHighlightActiveLine","updateLines","scrollToY","scrollToX","$highlightActiveLine","$selectionStyle","$selectionColorConflict","$maxLines","$minLines","$highlightLineMarker","$selectionMarker","$highlightSelectedWord","$getSelectionHighLightRegexp","wordWithBoundary","updateFrontMarkers","updateBackMarkers","updateBreakpoints","updateText","getSelectedText","nl","copyLine","inVirtualSelectionMode","isFullLine","getBehavioursEnabled","lineState","shouldOutdent","$enableAutoIndent","lineIndent","selectedRange","currIndent","prevLineState","composition","applyComposition","forEachSelection","setScrollSpeed","getScrollSpeed","setDragDelay","setSelectionStyle","setHighlightActiveLine","shouldHighlight","getHighlightActiveLine","setHighlightGutterLine","getHighlightGutterLine","setHighlightSelectedWord","getHighlightSelectedWord","setAnimatedScroll","shouldAnimate","getAnimatedScroll","getShowInvisibles","setDisplayIndentGuides","getDisplayIndentGuides","setHighlightIndentGuides","setShowPrintMargin","showPrintMargin","getShowPrintMargin","setPrintMarginColumn","getPrintMarginColumn","setBehavioursEnabled","enabled","setWrapBehavioursEnabled","setShowFoldWidgets","getShowFoldWidgets","setFadeFoldWidgets","fade","getFadeFoldWidgets","new_range","setGhostText","removeGhostText","originalRange","$getSelectedRows","getNumberAt","_numberRx","amount","charRange","isFinite","nr","fp","decimals","nnr","toFixed","replaceRange","toggleWord","currWordStart","wordParts","curLength","itLength","that","reg","wordPairs","$toggleWordPairs","negate","firstCondition","res","findLinkAt","columnPosition","previousPosition","currentPosition","wordParts_1","wordParts_1_1","endPoint","moved","totalDiff","rangeIndex","subRows","compositionState","showComposition","setCompositionText","hideComposition","getFirstVisibleRow","getLastVisibleRow","getFirstFullyVisibleRow","getLastFullyVisibleRow","$getVisibleRowCount","getScrollBottomRow","getScrollTopRow","$moveByPage","scrollToRow","center","animate","alignCursor","getCursorPositionScreen","expand","tokenCount","matchType","bracketType","brackets","tagsRanges","lineNumber","navigateTo","replaced","$tryReplace","replaceAll","getLastSearchOptions","newRange","revealRange","setAutoScrollEditorIntoView","shouldScroll","$scrollAnchor","scrollAnchor","onChangeSelection","onBeforeRender","onAfterRender","searchBox","$pixelPos","$cursorStyle","cursorLayer","setSmoothBlinking","isBlinking","selectionStyle","highlightActiveLine","highlightSelectedWord","copyWithEmptySelection","behavioursEnabled","wrapBehavioursEnabled","enableAutoIndent","autoScrollEditorIntoView","showLineNumbers","setShowLineNumbers","$loop","CHANGE_GUTTER","$relativeLineNumbers","relativeNumberRenderer","relativeLineNumbers","$showLineNumbers","$updatePlaceholder","hasValue","$composition","placeholderNode","$placeholder","content","blurCommand","focusOnEnterKeyup","customScrollbar","hScrollBarAlwaysVisible","vScrollBarAlwaysVisible","highlightGutterLine","animatedScroll","printMarginColumn","printMargin","fadeFoldWidgets","showFoldWidgets","displayIndentGuides","highlightIndentGuides","showGutter","fontFamily","maxLines","minLines","scrollPastEnd","fixedWidthGutter","hasCssTransforms","maxPixelHeight","useResizeObserver","useSvgGutterIcons","showFoldedAnnotations","getText","lastLineNumber","$renderer","Lines","canvasHeight","cellCache","$offsetCoefficient","moveContainer","firstRowScreen","pageChanged","oldConfig","newConfig","computeLineTop","screenTop","screenPage","computeLineHeight","$cacheCell","fragment","insertAdjacentElement","createCell","initElement","Gutter","parentEl","$showFoldWidgets","$updateAnnotations","rowInfo","annoText","annoType","gutterOffset","oldLastRow","$updateCursorRow","onCreateCell","$renderCell","$updateGutterWidth","gutterRenderer","$firstLineNumber","lastLineText","$fixedWidth","$padding","$computePadding","$highlightGutterLine","$cursorRow","updateLineHighlight","scrollLines","$renderLines","textNode","annotationNode","annotationIconNode","decorations","rowText","foldClass","isClosedFold","foldAnnotationClass","annotationInFold","foldRange","getShowLineNumbers","paddingLeft","borderRightWidth","paddingRight","Marker","setPadding","setMarkers","markers","elt","css","$getTop","drawFullLineMarker","drawScreenLineMarker","drawTextMarker","drawMultiLineMarker","childElementCount","lastChild","stringBuilder","extraStyle","curr","lineRange","range1","drawBidiSingleLineMarker","radiusClass","extraLength","textTokens","Set","isTextToken","tokenType","has","Text","$updateEolChar","EOL_CHAR","EOL_CHAR_LF","EOL_CHAR_CRLF","margin","getLineHeight","$fontMetrics","measure","$pollSizeChanges","checkForSizeChanges","$pollSizeChangesTimer","$computeTabString","showSpaces","showTabs","showEOL","$highlightIndentGuides","tabStr","$tabStrings","span","TAB_CHAR","$indentGuideRe","spaceClass","spaceContent","SPACE_CHAR","tabClass","tabContent","lineElements","lineElementsIdx","heightChanged","lineElement","$renderLine","$renderLinesFragment","lineEl","$useLineGroups","$renderToken","valueFragment","simpleSpace","controlCharacter","cjkSpace","cjk","cloneNode","renderIndentGuide","cols","$highlightIndentGuideMarker","indentLevel","initialIndent","elementIndentLevel","currentIndent","$renderHighlightIndentGuide","$clearActiveIndentGuide","$setIndentGuideActive","$createLineElement","$renderWrappedLine","splitChars","$renderOverflowMessage","$renderSimpleLine","overflowEl","$getFoldLineTokens","lastLineEl","invisibleEl","EOF_CHAR","renderTokens","addTokens","Cursor","isVisible","blinkInterval","smoothBlinking","cursors","addCursor","$updateCursors","$updateOpacity","$startCssAnimation","animationDuration","$isAnimating","$stopCssAnimation","blinking","restartTimer","setBlinkInterval","removeCursor","intervalId","timeoutId","$isSmoothBlinking","blink","onScreen","isCursorInView","pixelPos","$selectionMarkers","cursorIndex","drawCursor","$setOverwrite","MAX_SCROLL_H","Scrollbar","classSuffix","setVisible","skipEvent","onScroll","coeff","VScrollBar","scrollHeight","$scrollbarWidth","$minWidth","setHeight","setScrollHeight","setInnerHeight","HScrollBar","setWidth","setInnerWidth","setScrollWidth","ScrollBar","ScrollBarV","ScrollBarH","VScrollWidth","HScrollHeight","eType","mousePageY","startTop","thumbTop","scrollTopFromThumbTop","thumbHeight","pageHeight","viewHeight","slideHeight","scrollWidth","mousePageX","startLeft","thumbLeft","scrollLeftFromThumbLeft","thumbWidth","pageWidth","viewWidth","slideWidth","RenderLoop","onRender","pending","changes","$recursionLimit","_flush","change","clear","CHAR_COUNT","USE_OBSERVER","ResizeObserver","FontMetrics","$setMeasureNodeStyles","$measureNode","$addObserver","isRoot","visibility","font","$measureSizes","fontWeight","boldSize","charSizes","allowBoldFonts","$observer","observe","setPolling","disconnect","$getZoom","zoom","$initTransformMeasureNodes","transformCoordinates","clientPos","elPos","solve","l1","l2","det","sub","mul","m2","ut","u","f","Decorator","canvas","pixelRatio","heightRatio","canvasWidth","minDecorationHeight","halfMinDecorationHeight","colors","dark","light","$updateDecorators","ctx","getContext","clearRect","priorities","compensateFold","compensateFoldRows","currentY","y1","y2","yCenter","fillStyle","fillRect","GutterLayer","MarkerLayer","TextLayer","CursorLayer","HScrollBarCustom","VScrollBarCustom","editorCss","VirtualRenderer","onGutterResize","$markerBack","textLayer","$markerFront","$horizScroll","$vScroll","$scrollAnimation","scrollMargin","updateCharacterSize","$size","scrollerHeight","scrollerWidth","$dirty","minHeight","v","$renderChanges","defaultView","CHANGE_FULL","$addResizeObserver","$allowBoldFonts","$updatePrintMargin","onChangeNewLineMode","$changedLines","CHANGE_LINES","CHANGE_TEXT","CHANGE_MARKER","updateFontSize","$updateSizeAsync","resizing","$updateCachedSize","$resizeTimer","$changes","$customScrollbar","$updateCustomScrollbar","$extraHeight","oldSize","CHANGE_SIZE","CHANGE_SCROLL","$showGutter","$computeLayerConfig","availableWidth","$showPrintMargin","$printMarginColumn","$animatedScroll","getShowGutter","setShowGutter","$printMarginEl","containerEl","posTop","posLeft","setScrollMargin","sm","setMargin","getHScrollBarAlwaysVisible","$hScrollBarAlwaysVisible","setHScrollBarAlwaysVisible","alwaysVisible","getVScrollBarAlwaysVisible","$vScrollBarAlwaysVisible","setVScrollBarAlwaysVisible","$updateScrollBarV","$scrollPastEnd","$updateScrollBarH","freeze","$frozen","unfreeze","CHANGE_H_SCROLL","st","$scrollDecorator","$updateLines","CHANGE_CURSOR","CHANGE_MARKER_FRONT","CHANGE_MARKER_BACK","$autosize","desiredHeight","$maxPixelHeight","$gutterWidth","hideScrollbars","longestLine","$getLongestLine","horizScroll","hScrollChanged","vScrollBefore","vScrollChanged","firstRowHeight","lineCount","charCount","$viewMargin","newLeft","newTop","topMargin","bottomMargin","$stopAnimation","currentTop","currentLeft","twoCharsWidth","alignment","$calcSteps","fromValue","toValue","x_min","STEPS","steps","initialScroll","oldSteps","$timer","endAnimation","scrollTo","canvasPos","$hasCssTransforms","$blockCursor","$useTextareaForIME","addToken","removeExtraToken","insertPosition","textLines","$ghostText","$ghostTextWidget","pixelPosition","ghostTextHeight","newToken","$themeId","$theme","setMouseCursor","attachToShadowRoot","$resizeObserver","contentRect","workerUrl","Worker","blob","Blob","blobBuilder","BlobBuilder","WebKitBlobBuilder","MozBlobBuilder","getBlob","$workerBlob","blobURL","URL","webkitURL","createObjectURL","WorkerClient","worker","$createWorkerFromOldConfig","$sendDeltaQueue","changeListener","onMessage","callbackId","callbacks","onmessage","topLevelNamespaces","classname","importScripts","nameToUrl","toUrl","normalizePath","$normalizePath","tlns","deltaQueue","onerror","$doc","cmd","emit","ex","attachToDocument","q","UIWorkerClient","main","emitSync","sender","messageBuffer","workerClient","processNext","setEmitSync","Main","PlaceHolder","others","mainClass","othersClass","$onUpdate","onUpdate","$others","undoStack","$undostack","$undoStackDepth","setup","other","showOtherMarkers","othersActive","hideOtherMarkers","updateAnchors","lengthDiff","inMainRange","distanceFromStart","newPos","otherPos","updateMarkers","updateMarker","undosRequired","isSamePoint","alt","ctrl","accel","selectionMode","isMultiSelect","mouseX","mouseY","screenAnchor","screenCursor","$enableJumpToDef","$blockSelectEnabled","addSelectionMarker","oldRange","removeSelectionMarker","tmpSel","rectSel","blockSelect","newCursor","removeSelectionMarkers","rectangularRangeBlock","updateSelectionMarkers","onSelectionInterval","selectMoreLines","selectMore","joinSelections","splitIntoLines","alignCursors","multiSelectCommands","getSelectionMarkers","$blockChangeEvents","$onAddRange","$onRemoveRange","mergeOverlappingRanges","lastRange","$initRangeList","toggleBlockSelection","includeEmptyLines","xBackwards","startOffsetX","endOffsetX","docEnd","yBackwards","MultiSelect","$multiselectOnSessionChange","$onMultiSelect","$onSingleSelect","onSessionChange","$checkMultiselectChange","altCursor","altDown","addAltCursorListeners","selectionMarkerCount","markerList","$onMultiSelectExec","inVirtualMode","keepOrder","$byLines","cmdResult","anim","buf","additive","skip","screenLead","toRemove","words","stopAtFirst","sameRowRanges","maxCol","minSpace","spaceOffsets","spaceOffset","fr","lr","guessRange","$reAlignText","forceLeft","startW","textW","endW","isLeftAligned","isRightAligned","alignLeft","enableMultiselect","enableBlockSelect","FoldMode","foldingStartMarker","foldingStopMarker","indentationBlock","startLevel","openingBracketBlock","closingBracketBlock","oldWidget","gutterAnno","comparator","binarySearch","matched","findAnnotations","arrow","onmousedown","Renderer","edit","_id","env","tagName","oldNode","createEditSession","is","singletonTags","blockTags","formatOptions","lineBreaksAfterCommasInCurlyBlock","beautify","nextToken","tabString","breakBefore","spaceBefore","spaceAfter","lastDepth","lastIndent","unindent","roundDepth","curlyDepth","curRow","rowsToAdd","indentNextLine","inTag","inCSS","inBlock","parents","caseBody","trimNext","trimLine","trimCode","trimRight","trimLeft","searchboxCss","SearchBox","showReplaceForm","spellcheck","title","setEditor","searchRange","$syncOptions","$initElements","sb","replaceBox","searchOption","replaceOption","regExpOption","caseSensitiveOption","wholeWordOption","searchInput","replaceInput","searchCounter","activeInput","$searchBarKb","setSearchRange","searchRangeMarker","checked","noMatch","updateCounter","MAX_COUNT","findPrev","replaceAndFindNext","active","$closeSearchBarKb","isReplace","supportType","supportFunction","supportConstant","supportConstantColor","supportConstantFonts","numRe","pseudoElements","pseudoClasses","CssHighlightRules","keywordMapper","strings","escapes","MatchingBraceOutdent","propertyMap","CssCompletions","completionsDefined","defineCompletions","inParens","getPropertyValueCompletions","getPropertyCompletions","skipSemicolon","caption","snippet","CssBehaviour","BaseFoldMode","commentRegex","singleLineBlockCommentRe","tripleStarBlockCommentRe","startRegionRe","_getFoldWidgetBase","forceMultiline","getCommentRegionBlock","getSectionRange","startIndent","subRange","CStyleFoldMode","$outdent","$completer","snippetFileId","DocCommentHighlightRules","getTagRule","getStartRule","getEndRule","GolangHighlightRules","stringEscapeRe","tokenizedLine","JsDocCommentHighlightRules","identifierRe","JavaScriptHighlightRules","escapedRe","comments","noES6","no_regex","jsx","JSX","tagRegex","jsxTag","jsxJsRule","jsxAttributes","reference","endState","results","JsonHighlightRules","JsxHighlightRules","buildinConstants","reserved","PythonHighlightRules","strPre","strRawPre","strFormatPre","strRawFormatPre","integer","intPart","pointFloat","floatNumber","stringEscape","PythonFoldMode","outdents","XmlHighlightRules","normalize","processing_instruction","doctype","int_subset","cdata","attr_reference","tag_whitespace","whitespace","attribute_value","embedTagRules","XmlBehaviour","rightSpace","tokenEndColumn","tokenRow","tokenColumn","voidElements","nextIndent","optionalEndTags","Tag","selfClosing","_getFirstTagInLine","_findEndTagInLine","getCommentFoldWidget","tags","XmlFoldMode","___CSS_LOADER_EXPORT___","cssWithMappingToString","needLayer","media","dedupe","supports","layer","alreadyImportedModules","_k","cssMapping","btoa","base64","unescape","encodeURIComponent","stringify","sourceMapping","createRoot","hydrateRoot","hasElementType","Element","hasMap","Map","hasSet","hasArrayBuffer","ArrayBuffer","isView","equal","it","entries","flags","valueOf","$$typeof","stylesInDOM","getIndexByIdentifier","identifier","modulesToDom","idCountMap","identifiers","indexByIdentifier","sourceMap","references","updater","addElementStyle","byIndex","api","domAPI","newObj","lastIdentifiers","newList","newLastIdentifiers","_i","_index","memo","styleTarget","HTMLIFrameElement","contentDocument","getTarget","setAttributes","styleElement","nonce","insertStyleElement","styleTagTransform","removeStyleElement","styleSheet","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","loaded","__webpack_modules__","amdD","getter","__esModule","definition","prop","toStringTag","nmd","paths","nc","createContext","Icon","family","rest","getCSSClasses","propTypes","isRequired","ItemTrigger","collapsed","toggleChange","useContext","iconType","trigger","onClick","AccordionItem","collapsedProp","ref","setCollapsed","useState","useMemo","expandToContent","contextValue","Provider","defaultProps","forwardRef","AccordionItemHeader","usearrowastrigger","useRef","useEffect","current","savedCallback","useInterval","savedHandler","eventListener","getSize","ComponentSize","setComponentSize","handleResize","useCallback","useLayoutEffect","resizeObserver","Collapsible","contentContainer","collapseWrapper","refContainerSize","contentContainerStyle","setContentContainerStyle","onWindowResize","CSSTransition","onEnter","onExit","in","classNames","AccordionItemContent","Accordion","Item","Header","Content","Button","customButton","iconFamily","iconPosition","iconOnly","noStyle","getCssClasses","cssClasses","sizeClass","disabledClass","displayClass","themeClass","iconOnlyClass","noStyleClass","getButtonIcon","buttonType","Fragment","cloneElement","getButtonType","ButtonGroup","wait","immediate","callNow","Loader","withbackground","Message","onClose","noMargin","Chart","areaStyleColors","dataLoaded","hasData","series","zoomStart","zoomEnd","seriesConfig","noDataComponent","zoomColors","tykChartInstance","setTykChartInstance","chartWrapperRef","lineBarChart","defaultOpts","fromJS","color","toolbox","orient","itemSize","showTitle","feature","dataZoom","dataBackground","lineStyle","areaStyle","handleStyle","textStyle","borderColor","fillerColor","legend","axisPointer","grid","containLabel","xAxis","boundaryGap","axisLine","axisTick","yAxis","axisLabel","animationEasing","seriesDefault","LinearGradient","smooth","symbolSize","pieChart","formatter","radius","avoidLabelOverlap","animationType","labelLine","normal","length2","geoChart","dispose","eventCallBack","debouncedMethod","debounce","getZr","prevInstance","prevOption","prevType","prevSeries","equals","selectedType","selectedOptions","selectedSeries","finalOpts","mergeDeep","toJS","entry","seriesData","buildChartOptions","dispatchAction","dataZoomSelectActive","seriesIndex","dataIndex","prevZoomStart","prevZoomEnd","startValue","endValue","chartHasData","getStyle","ToastMessage","handleClose","itemIndex","ToastContainer","notify","updateNotifications","msgID","random","prevMessages","onMessageClosed","messageToBeRemoved","toast","fn","createNotification","render","bindNotify","danger","CopyToClipboard","txtRef","createRef","onKeyUp","ModalFooter","ModalBody","Modal","disableCloseCommands","opened","showBackdrop","restProps","modalClasses","backdropClasses","themeIcon","onKeyDown","Body","Footer","Title","Confirm","confirmBtnText","cancelBtnText","setOpen","setCallback","cancelCallback","setCancelCallback","callbackFunc","cancelCallbackFunc","beforeCallback","FixedWrapper","showShadow","fixedWrapperRef","attachShadow","scrollY","debouncedAttachShadow","InfiniteScroller","hasMore","initialLoad","loadMore","pageNumber","refChild","showLoader","setShowLoader","containerRef","refChildSize","shouldLoad","loadMoreData","prevPageNumber","scrollHandler","prevRefChildSize","PropTypes","oneOfType","arrayOf","bool","instanceOf","FloatingContainer","forceDisplay","displayAxis","preferredPosition","infiniteScrollerConfig","localRef","floatingContainerRef","contentWrapperRef","schedulePositionUpdate","topSpace","bottomSpace","leftSpace","hasTopSpace","hasBottomSpace","hasLeftSpace","hasRightSpace","positionedVerticallyFitsInViewport","positionedHorizontallyFitsInViewport","determineDisplay","targetPosition","topPos","maxWidth","adjustPosition","createPortal","InfoNote","ListItem","List","labelwidth","flexBasis","styleCopy","getListStyle","NavBar","align","pre","subtitle","withTabs","subtitleContent","NavigationItem","Navigation","PortalContext","PanelBody","noPadding","Consumer","portalContext","collapsable","PanelFooter","PanelHeader","Component","HeaderTag","onToggle","collapsibleIconPosition","Panel","onToggleCollapse","collapsedState","setCollapsedState","handleToggle","panelTheme","collapsbleIconPosition","toggleCollapse","Pill","RevealPanelService","setRefs","wrapper","panel","unbindEvents","bindEvents","ensureRefs","mouseDown","initialRect","initialEvent","isPrimaryMouseButtonDown","newY","finalHeight","notifyListeners","buttons","heightVal","reason","isHidden","deinit","RevealPanelHeaderLeft","RevealPanelHeaderRight","mergeClasses","RevealPanel","onHeightChange","parentSelector","contentStyle","contentClassName","gutterClassName","wrapperClassName","panelRef","gutterRef","wrapperRef","panelService","useImperativeHandle","headerLeft","headerRight","contents","child","HeaderLeft","HeaderRight","TabsContext","TabContent","addTab","hideTab","updateTab","showTab","selectedPath","tabData","tabsId","tabExists","rendered","hideTabContent","tabs","tempTabData","prevTabData","TabContext","Tab","tabsContext","tabContext","setPath","tempPath","Tabs","onTabChange","setTabs","setSelectedPath","setRendered","initialPath","setInitialPath","setCurrentSelectedPath","tempRendered","collapsible","prevTabs","tempTabs","tabsState","tempTabsState","toggleTab","getTabCssClass","tabId","genTabs","currentTabs","updateTabsList","icon","closable","isOpened","additionalClickParents","isActive","setIsActive","tooltipRef","activeEvents","onMouseEnter","onMouseLeave","handleDocumentClick","TextEllipsis","getPagesArr","nrOfPages","selectedPage","pagesArr","currentNr","pageNr","totalNrOfPages","Pagination","super","prevProps","pagesArray","pageKey","getDerivedStateFromProps","nextProps","getPageCssClass","getPageKey","goToPage","tableContext","HeaderCell","sortable","sortOrder","setSortOrder","sendMessage","setSelectAll","columns","selectable","generateSelectable","allowSelectAll","Checkbox","displayError","displayNote","note","Cell","styling","events","Row","SelectableCheckbox","defaultChecked","Table","noDataMessage","loading","infiniteScrolling","onChangeMsg","setOnChangeMsg","itemsListRef","selectAllRows","order","selectedRow","selectRow","pagination","setPagination","getTable","totalPages","num","nrItemsOnPage","perPage","Column","PureComponent","colSize","colOffsets","cSize","cOffset","nogutters","DropdownContext","DropdownItem","customdropdownitem","eventKey","dropdownItemCLick","dropdownContext","itemProps","onSelectItem","selectedItem","showCheckmark","Dropdown","isElemInRightView","dropdownWidth","isElemInBottomView","dropdownHeight","elHeight","dropdownRef","dropdownListRef","dropdownButtonRef","toggleDropdown","handleClickOutside","componentDidMount","getStyles","componentDidUpdate","closeDropdown","componentWillUnmount","itemId","closeOnSelect","onSelect","selectedItemProps","dropdownEl","offsetPosition","customTop","customLeft","getWrapperCssClasses","btnGroup","btnGroupSize","btnTheme","hasCustomContent","listclassnames","getBtnTitle","btnTitle","stopButtonTextChange","appendTo","btnClassName","btnSize","customBtnTitle","showDropdownIcon","showTriggerButton","DropdownWrapperTag","CodeEditor","disableValidation","finalSetOptions","getCodeEditorError","getLabelStyles","getNonLabelWidth","handleOnChange","handleOnBlur","htmlFor","editorProps","$blockScrolling","editorInstance","getStateSelectedValues","multiple","closeList","openList","filterByName","itemValue","inputValue","stateSelectedValues","searchText","comboboxRef","valuesListRef","inputRef","textRef","focusInput","handleItemsNavigation","handleComboboxDropdownClick","handleListItemClick","handlePillRemoveClick","manageSelectedTags","setInputWidth","unBindEvents","allowCustomValues","filteredValues","filterValues","tempState","getSearchText","methodName","previousState","getSelectedIndex","getListItemCssClasses","getComboboxListCssClass","themes","iTheme","getInputError","elWidth","getComboboxDisplayData","reduce","prevValue","tempValue","selectedIndex","selectedValues","isInInitialValues","removeSelectedValue","addSelectedValue","manageSelectedValues","tempSelectedValues","tempStateSelectedValues","ok","searchItem","cursorNext","CustomListComponent","onKeyPress","visbility","autoFocus","Combobox","tagSeparators","addTagOnBlur","renderValue","valueOverflow","dummyElementRef","setInputValue","inputWidth","entryFieldOnChange","dummy","triggerAction","textValue","isPlaceholder","renderCustomValue","entryFieldOnKeyDown","listRef","searchValue","activeItem","renderListItem","showSearch","block","every","isNoneSelected","renderSelectAllOption","normalizeValue","existingVal","getValueFromProp","Combobox2","propValue","propValues","maxProp","matchItemFn","renderList","renderListProp","onBeforeChange","floatingContainerConfig","expandMode","displayDropdownTrigger","required","validateOnChange","rootRef","comboboxControlRef","setValues","setSearchValue","setActiveItem","setIsOpened","valuesExpanded","setValuesExpanded","localValidationError","setLocalValidationError","getThemeClasses","getFilteredValues","openDropdown","updateSearchValue","newSearchValue","fv","isValidValue","newValues","localError","updateValue","addTag","listValueIndex","lv","finalValue","selectValue","moveUpActiveItem","visibleItems","activeIndex","moveDownActiveItem","executeTriggerAction","removeTag","onTagMessage","selectAllValues","sv","nv","vals","valuesElement","updateScroll","mobserver","MutationObserver","robserver","childList","subtree","currentValuesClasses","onClickCapture","triggerElement","locals","DatePicker","onOpen","pickerInstance","setPickerInstance","dateRef","hasValueChanged","prevDate","currentDate","getTime","diffDates","date","onDateChange","dateValue","instance","defaultDate","setDate","openCalendar","inputStyle","addonStyle","getInputField","dateFormat","_typeof","requiredArgs","isDate","toDate","argument","argStr","NaN","toInteger","dirtyNumber","startOfUTCISOWeek","dirtyDate","day","getUTCDay","setUTCDate","getUTCDate","setUTCHours","getUTCISOWeekYear","year","getUTCFullYear","fourthOfJanuaryOfNextYear","setUTCFullYear","startOfNextYear","fourthOfJanuaryOfThisYear","startOfThisYear","defaultOptions","getDefaultOptions","startOfUTCWeek","_ref","_ref2","_ref3","_options$weekStartsOn","_options$locale","_options$locale$optio","_defaultOptions$local","_defaultOptions$local2","weekStartsOn","locale","RangeError","getUTCWeekYear","_options$firstWeekCon","firstWeekContainsDate","firstWeekOfNextYear","firstWeekOfThisYear","addLeadingZeros","targetLength","sign","signedYear","month","getUTCMonth","getUTCHours","getUTCMinutes","getUTCSeconds","numberOfDigits","milliseconds","getUTCMilliseconds","G","localize","era","ordinalNumber","unit","lightFormatters","Y","signedWeekYear","weekYear","Q","quarter","M","week","firstWeek","startOfUTCWeekYear","getUTCWeek","I","isoWeek","fourthOfJanuary","startOfUTCISOWeekYear","getUTCISOWeek","D","dayOfYear","timestamp","setUTCMonth","difference","getUTCDayOfYear","E","dayOfWeek","localDayOfWeek","isoDayOfWeek","dayPeriodEnumValue","dayPeriod","hours","H","K","S","X","_localize","timezoneOffset","_originalDate","getTimezoneOffset","formatTimezoneWithOptionalMinutes","formatTimezone","formatTimezoneShort","z","originalDate","T","dirtyDelimiter","absOffset","minutes","delimiter","dateLongFormatter","pattern","formatLong","timeLongFormatter","P","dateTimeFormat","matchResult","datePattern","timePattern","dateTime","protectedDayOfYearTokens","protectedWeekYearTokens","throwProtectedError","format","formatDistanceLocale","lessThanXSeconds","one","xSeconds","halfAMinute","lessThanXMinutes","xMinutes","aboutXHours","xHours","xDays","aboutXWeeks","xWeeks","aboutXMonths","xMonths","aboutXYears","xYears","overXYears","almostXYears","buildFormatLongFn","defaultWidth","formats","full","long","medium","short","formatRelativeLocale","lastWeek","yesterday","today","tomorrow","nextWeek","buildLocalizeFn","dirtyIndex","valuesArray","formattingValues","defaultFormattingWidth","_defaultWidth","_width","argumentCallback","_options","rem100","narrow","abbreviated","wide","am","pm","midnight","noon","morning","afternoon","evening","night","buildMatchFn","matchPattern","matchPatterns","defaultMatchWidth","matchedString","parsePatterns","defaultParseWidth","object","findKey","valueCallback","parsePattern","parseResult","any","formatDistance","tokenValue","addSuffix","comparison","formatRelative","_date","_baseDate","formattingTokensRegExp","longFormattingTokensRegExp","escapedStringRegExp","doubleQuoteRegExp","unescapedLatinCharacterRegExp","dirtyFormatStr","_ref4","_options$locale2","_options$locale2$opti","_ref5","_ref6","_ref7","_options$locale3","_options$locale3$opti","_defaultOptions$local3","_defaultOptions$local4","formatStr","defaultLocale","isValid","utcDate","UTC","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","getMilliseconds","getTimezoneOffsetInMilliseconds","dirtyAmount","addMilliseconds","subMilliseconds","formatterOptions","firstCharacter","longFormatter","useAdditionalWeekYearTokens","useAdditionalDayOfYearTokens","isProtectedDayOfYearToken","getMainFormValue","components","mainFormValue","submitButtonRef","submitForm","errors","mainError","addValueOnFieldChange","getMainFormButtonWidth","createRefs","propsComponents","stateComponents","getFormCssClasses","noLabels","getButtonClassName","buttonStyle","displayType","getComponentsError","validateValue","errorPersist","validatorsNames","validate","validator","validationmessages","hasMainFormErrors","resetForm","showMainError","onSubmit","validationmessage","buttonName","ComponentName","EditableListForm","getItemListValue","getListItemCssClass","buttonWidth","handleFormSubmit","dropdownListItemRef","getListItemsCssClass","getFormInputKey","getListItemText","itemData","separator","setItemEditMode","closeListItems","editMode","isInList","addValues","removeListItem","removedItem","valueArr","triggerOnChange","handleItemUpdate","handleChildrenOnChange","tempItemValue","nextValue","genListItem","clonedComponents","genList","appendToElement","formButtonTitle","formButtonStyle","EditableList","addButtonName","onAddRow","ListHeader","fields","field","FieldsList","onDelete","rowIndex","tempField","EditableList2","hideOnEmpty","internalErrors","setInteranlErrors","updateRowValue","fieldIndex","componentValue","tempValueArr","tempErrors","tempFieldError","Components","internalError","setInternalError","onFieldChange","errorMsg","deleteRow","rowValues","colValue","flat","hasErrors","FileInput","clearValue","fileInputRef","getFileInputError","getFileInputComponent","accept","omitValue","files","getAddon","initValue","stateValue","isfield","inputgroupaddonleft","inputgroupaddonright","getInputGroupAddon","getInputComponent","autoComplete","Input","Input2","getInputElement","MultiselectItem","isInSearchValue","fieldsToSearchOn","itemType","itemDisplayTemplate","maxSelections","nrSelectedItems","onGetItemDetails","parentContext","details","detailsDisplayTemplate","getItemContent","getItemLoader","MultiselectPanel","searchOnChange","itemChanged","getItemIndex","getItemsList","itemsPageNumber","itemsNrPages","loadMoreItems","serverLoad","renderListItems","onCustomSearch","items","cloneItems","clonedItem","customSearch","panelType","inputPlaceholder","noItemsMessage","diffObjects","Multiselect","valueChange","itemsChange","getItemDetails","getMultiselectError","allItems","valueClone","entityNamePlural","Radio","nospace","Select","getSelectComponent","getSelectError","selectedValue","SelectableList","checkboxalticon","itemTemplate","primaryKey","handleOnSelect","newSelectedItems","structuredClone","elemPosition","getListItemCssClassName","tvalue","Textarea","ToggleItem","getNotchCssClasses","itemRef","saveSelectedRef","onItemSelected","ToggleItemWrapper","Toggle","onDark","separated","selectedRef","setSelectedRef","notchRef","toggleRef","positionNotch","selectedWidth","stringToTokenString","tempStr","setCursorPos","StringInput","setShowOptions","dropdownTriggerKey","setStringBuilderHeight","stringBuilderHeight","setTokenString","tokenString","showOptions","setTokenValue","setInputInFocus","invalidTokenRegex","contextMaxLength","isPasteEvent","setIsPasteEvent","tokenLen","addCharacterToTokenString","newTokenValue","newTokenizedString","spellCheck","selectedText","lastToken","lastCharsInString","invalidToken","newTokenStr","stringBeforeCursor","stringAfterCursor","tokenStringForStringBeforeCursor","splitTokens","handleBackSpace","tokenStringForStringAfterCursor","firstToken","handleDelete","substitute","newStr","handleTextSelection","handleKeyDown","maxLength","pasteString","newTokenString","desc","InvalidToken","findInvalidTokenSubstitute","TokenizedString","hasDuplicates","allTokens","matchedOption","matchedTokens","tkn","OptionsList","handleOptionSelection","allowSearch","initialSearchValue","filterValue","setFilterValue","filteredOptions","setFilteredOptions","newFilteredOptions","StringBuilderFooter","inputInFocus","marginTop","StringBuilder","setContentMaxLength","setTokens","prevTokenValue","setPrevTokenValue","setInitialSearchValue","selectedInvalidToken","setSelectedInvalidToken","prevTokenString","tempVal","splitTokensStr","newHeight","newInput","tokenizedString","FORM_DEBOUNCE","setConfig","getValueFromPath","acc","form","properties","DEFAULT_DEBOUNCE_TIME_MS","myValue","setMyValue","getOnChangeProps","hasIsFieldProp","executeDebounced","valueOrEvent","nodeName","onChangeProps","formError","touched","submitCount","status","componentProps","FieldCodeEditor","FieldCombobox","getComboboxError","FieldDropdown","FieldPagination","FieldCombobox2","FormDatePicker","getDatePickerError","FieldEditableList","getEditableListError","FieldFileInput","FieldInput","FieldMultiselect","FieldSelect","handleEvent","FieldSelectableList","FieldToggle"],"sourceRoot":""} \ No newline at end of file diff --git a/lib/tyk-ui.js b/lib/tyk-ui.js index 2271dc2b..9af8277f 100644 --- a/lib/tyk-ui.js +++ b/lib/tyk-ui.js @@ -1,39542 +1,3 @@ -/******/ (() => { // webpackBootstrap -/******/ var __webpack_modules__ = ({ - -/***/ 239: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -/* module decorator */ module = __webpack_require__.nmd(module); -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2010, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * ***** END LICENSE BLOCK ***** */ - -/** - * Define a module along with a payload - * @param module a name for the payload - * @param payload a function to call with (require, exports, module) params - */ - -(function() { - -var ACE_NAMESPACE = "ace"; - -var global = (function() { return this; })(); -if (!global && typeof window != "undefined") global = window; // strict mode - - -if (!ACE_NAMESPACE && typeof requirejs !== "undefined") - return; - - -var define = function(module, deps, payload) { - if (typeof module !== "string") { - if (define.original) - define.original.apply(this, arguments); - else { - console.error("dropping module because define wasn\'t a string."); - console.trace(); - } - return; - } - if (arguments.length == 2) - payload = deps; - if (!define.modules[module]) { - define.payloads[module] = payload; - define.modules[module] = null; - } -}; - -define.modules = {}; -define.payloads = {}; - -/** - * Get at functionality define()ed using the function above - */ -var _require = function(parentId, module, callback) { - if (typeof module === "string") { - var payload = lookup(parentId, module); - if (payload != undefined) { - callback && callback(); - return payload; - } - } else if (Object.prototype.toString.call(module) === "[object Array]") { - var params = []; - for (var i = 0, l = module.length; i < l; ++i) { - var dep = lookup(parentId, module[i]); - if (dep == undefined && require.original) - return; - params.push(dep); - } - return callback && callback.apply(null, params) || true; - } -}; - -var require = function(module, callback) { - var packagedModule = _require("", module, callback); - if (packagedModule == undefined && require.original) - return require.original.apply(this, arguments); - return packagedModule; -}; - -var normalizeModule = function(parentId, moduleName) { - // normalize plugin requires - if (moduleName.indexOf("!") !== -1) { - var chunks = moduleName.split("!"); - return normalizeModule(parentId, chunks[0]) + "!" + normalizeModule(parentId, chunks[1]); - } - // normalize relative requires - if (moduleName.charAt(0) == ".") { - var base = parentId.split("/").slice(0, -1).join("/"); - moduleName = base + "/" + moduleName; - - while(moduleName.indexOf(".") !== -1 && previous != moduleName) { - var previous = moduleName; - moduleName = moduleName.replace(/\/\.\//, "/").replace(/[^\/]+\/\.\.\//, ""); - } - } - return moduleName; -}; - -/** - * Internal function to lookup moduleNames and resolve them by calling the - * definition function if needed. - */ -var lookup = function(parentId, moduleName) { - moduleName = normalizeModule(parentId, moduleName); - - var module = define.modules[moduleName]; - if (!module) { - module = define.payloads[moduleName]; - if (typeof module === 'function') { - var exports = {}; - var mod = { - id: moduleName, - uri: '', - exports: exports, - packaged: true - }; - - var req = function(module, callback) { - return _require(moduleName, module, callback); - }; - - var returnValue = module(req, exports, mod); - exports = returnValue || mod.exports; - define.modules[moduleName] = exports; - delete define.payloads[moduleName]; - } - module = define.modules[moduleName] = exports || module; - } - return module; -}; - -function exportAce(ns) { - var root = global; - if (ns) { - if (!global[ns]) - global[ns] = {}; - root = global[ns]; - } - - if (!root.define || !root.define.packaged) { - define.original = root.define; - root.define = define; - root.define.packaged = true; - } - - if (!root.require || !root.require.packaged) { - require.original = root.require; - root.require = require; - root.require.packaged = true; - } -} - -exportAce(ACE_NAMESPACE); - -})(); - -ace.define("ace/lib/es6-shim",["require","exports","module"], function(require, exports, module){function defineProp(obj, name, val) { - Object.defineProperty(obj, name, { - value: val, - enumerable: false, - writable: true, - configurable: true - }); -} -if (!String.prototype.startsWith) { - defineProp(String.prototype, "startsWith", function (searchString, position) { - position = position || 0; - return this.lastIndexOf(searchString, position) === position; - }); -} -if (!String.prototype.endsWith) { - defineProp(String.prototype, "endsWith", function (searchString, position) { - var subjectString = this; - if (position === undefined || position > subjectString.length) { - position = subjectString.length; - } - position -= searchString.length; - var lastIndex = subjectString.indexOf(searchString, position); - return lastIndex !== -1 && lastIndex === position; - }); -} -if (!String.prototype.repeat) { - defineProp(String.prototype, "repeat", function (count) { - var result = ""; - var string = this; - while (count > 0) { - if (count & 1) - result += string; - if ((count >>= 1)) - string += string; - } - return result; - }); -} -if (!String.prototype.includes) { - defineProp(String.prototype, "includes", function (str, position) { - return this.indexOf(str, position) != -1; - }); -} -if (!Object.assign) { - Object.assign = function (target) { - if (target === undefined || target === null) { - throw new TypeError("Cannot convert undefined or null to object"); - } - var output = Object(target); - for (var index = 1; index < arguments.length; index++) { - var source = arguments[index]; - if (source !== undefined && source !== null) { - Object.keys(source).forEach(function (key) { - output[key] = source[key]; - }); - } - } - return output; - }; -} -if (!Object.values) { - Object.values = function (o) { - return Object.keys(o).map(function (k) { - return o[k]; - }); - }; -} -if (!Array.prototype.find) { - defineProp(Array.prototype, "find", function (predicate) { - var len = this.length; - var thisArg = arguments[1]; - for (var k = 0; k < len; k++) { - var kValue = this[k]; - if (predicate.call(thisArg, kValue, k, this)) { - return kValue; - } - } - }); -} -if (!Array.prototype.findIndex) { - defineProp(Array.prototype, "findIndex", function (predicate) { - var len = this.length; - var thisArg = arguments[1]; - for (var k = 0; k < len; k++) { - var kValue = this[k]; - if (predicate.call(thisArg, kValue, k, this)) { - return k; - } - } - }); -} -if (!Array.prototype.includes) { - defineProp(Array.prototype, "includes", function (item, position) { - return this.indexOf(item, position) != -1; - }); -} -if (!Array.prototype.fill) { - defineProp(Array.prototype, "fill", function (value) { - var O = this; - var len = O.length >>> 0; - var start = arguments[1]; - var relativeStart = start >> 0; - var k = relativeStart < 0 - ? Math.max(len + relativeStart, 0) - : Math.min(relativeStart, len); - var end = arguments[2]; - var relativeEnd = end === undefined ? len : end >> 0; - var final = relativeEnd < 0 - ? Math.max(len + relativeEnd, 0) - : Math.min(relativeEnd, len); - while (k < final) { - O[k] = value; - k++; - } - return O; - }); -} -if (!Array.of) { - defineProp(Array, "of", function () { - return Array.prototype.slice.call(arguments); - }); -} - -}); - -ace.define("ace/lib/fixoldbrowsers",["require","exports","module","ace/lib/es6-shim"], function(require, exports, module){// vim:set ts=4 sts=4 sw=4 st: -"use strict"; -require("./es6-shim"); - -}); - -ace.define("ace/lib/deep_copy",["require","exports","module"], function(require, exports, module){exports.deepCopy = function deepCopy(obj) { - if (typeof obj !== "object" || !obj) - return obj; - var copy; - if (Array.isArray(obj)) { - copy = []; - for (var key = 0; key < obj.length; key++) { - copy[key] = deepCopy(obj[key]); - } - return copy; - } - if (Object.prototype.toString.call(obj) !== "[object Object]") - return obj; - copy = {}; - for (var key in obj) - copy[key] = deepCopy(obj[key]); - return copy; -}; - -}); - -ace.define("ace/lib/lang",["require","exports","module","ace/lib/deep_copy"], function(require, exports, module){"use strict"; -exports.last = function (a) { - return a[a.length - 1]; -}; -exports.stringReverse = function (string) { - return string.split("").reverse().join(""); -}; -exports.stringRepeat = function (string, count) { - var result = ''; - while (count > 0) { - if (count & 1) - result += string; - if (count >>= 1) - string += string; - } - return result; -}; -var trimBeginRegexp = /^\s\s*/; -var trimEndRegexp = /\s\s*$/; -exports.stringTrimLeft = function (string) { - return string.replace(trimBeginRegexp, ''); -}; -exports.stringTrimRight = function (string) { - return string.replace(trimEndRegexp, ''); -}; -exports.copyObject = function (obj) { - var copy = {}; - for (var key in obj) { - copy[key] = obj[key]; - } - return copy; -}; -exports.copyArray = function (array) { - var copy = []; - for (var i = 0, l = array.length; i < l; i++) { - if (array[i] && typeof array[i] == "object") - copy[i] = this.copyObject(array[i]); - else - copy[i] = array[i]; - } - return copy; -}; -exports.deepCopy = require("./deep_copy").deepCopy; -exports.arrayToMap = function (arr) { - var map = {}; - for (var i = 0; i < arr.length; i++) { - map[arr[i]] = 1; - } - return map; -}; -exports.createMap = function (props) { - var map = Object.create(null); - for (var i in props) { - map[i] = props[i]; - } - return map; -}; -exports.arrayRemove = function (array, value) { - for (var i = 0; i <= array.length; i++) { - if (value === array[i]) { - array.splice(i, 1); - } - } -}; -exports.escapeRegExp = function (str) { - return str.replace(/([.*+?^${}()|[\]\/\\])/g, '\\$1'); -}; -exports.escapeHTML = function (str) { - return ("" + str).replace(/&/g, "&").replace(/"/g, """).replace(/'/g, "'").replace(/ 0xffff ? 2 : 1; -}; - -}); - -ace.define("ace/lib/useragent",["require","exports","module"], function(require, exports, module){"use strict"; -exports.OS = { - LINUX: "LINUX", - MAC: "MAC", - WINDOWS: "WINDOWS" -}; -exports.getOS = function () { - if (exports.isMac) { - return exports.OS.MAC; - } - else if (exports.isLinux) { - return exports.OS.LINUX; - } - else { - return exports.OS.WINDOWS; - } -}; -var _navigator = typeof navigator == "object" ? navigator : {}; -var os = (/mac|win|linux/i.exec(_navigator.platform) || ["other"])[0].toLowerCase(); -var ua = _navigator.userAgent || ""; -var appName = _navigator.appName || ""; -exports.isWin = (os == "win"); -exports.isMac = (os == "mac"); -exports.isLinux = (os == "linux"); -exports.isIE = - (appName == "Microsoft Internet Explorer" || appName.indexOf("MSAppHost") >= 0) - ? parseFloat((ua.match(/(?:MSIE |Trident\/[0-9]+[\.0-9]+;.*rv:)([0-9]+[\.0-9]+)/) || [])[1]) - : parseFloat((ua.match(/(?:Trident\/[0-9]+[\.0-9]+;.*rv:)([0-9]+[\.0-9]+)/) || [])[1]); // for ie -exports.isOldIE = exports.isIE && exports.isIE < 9; -exports.isGecko = exports.isMozilla = ua.match(/ Gecko\/\d+/); -exports.isOpera = typeof opera == "object" && Object.prototype.toString.call(window.opera) == "[object Opera]"; -exports.isWebKit = parseFloat(ua.split("WebKit/")[1]) || undefined; -exports.isChrome = parseFloat(ua.split(" Chrome/")[1]) || undefined; -exports.isSafari = parseFloat(ua.split(" Safari/")[1]) && !exports.isChrome || undefined; -exports.isEdge = parseFloat(ua.split(" Edge/")[1]) || undefined; -exports.isAIR = ua.indexOf("AdobeAIR") >= 0; -exports.isAndroid = ua.indexOf("Android") >= 0; -exports.isChromeOS = ua.indexOf(" CrOS ") >= 0; -exports.isIOS = /iPad|iPhone|iPod/.test(ua) && !window.MSStream; -if (exports.isIOS) - exports.isMac = true; -exports.isMobile = exports.isIOS || exports.isAndroid; - -}); - -ace.define("ace/lib/dom",["require","exports","module","ace/lib/useragent"], function(require, exports, module){"use strict"; -var useragent = require("./useragent"); -var XHTML_NS = "http://www.w3.org/1999/xhtml"; -exports.buildDom = function buildDom(arr, parent, refs) { - if (typeof arr == "string" && arr) { - var txt = document.createTextNode(arr); - if (parent) - parent.appendChild(txt); - return txt; - } - if (!Array.isArray(arr)) { - if (arr && arr.appendChild && parent) - parent.appendChild(arr); - return arr; - } - if (typeof arr[0] != "string" || !arr[0]) { - var els = []; - for (var i = 0; i < arr.length; i++) { - var ch = buildDom(arr[i], parent, refs); - ch && els.push(ch); - } - return els; - } - var el = document.createElement(arr[0]); - var options = arr[1]; - var childIndex = 1; - if (options && typeof options == "object" && !Array.isArray(options)) - childIndex = 2; - for (var i = childIndex; i < arr.length; i++) - buildDom(arr[i], el, refs); - if (childIndex == 2) { - Object.keys(options).forEach(function (n) { - var val = options[n]; - if (n === "class") { - el.className = Array.isArray(val) ? val.join(" ") : val; - } - else if (typeof val == "function" || n == "value" || n[0] == "$") { - el[n] = val; - } - else if (n === "ref") { - if (refs) - refs[val] = el; - } - else if (n === "style") { - if (typeof val == "string") - el.style.cssText = val; - } - else if (val != null) { - el.setAttribute(n, val); - } - }); - } - if (parent) - parent.appendChild(el); - return el; -}; -exports.getDocumentHead = function (doc) { - if (!doc) - doc = document; - return doc.head || doc.getElementsByTagName("head")[0] || doc.documentElement; -}; -exports.createElement = function (tag, ns) { - return document.createElementNS ? - document.createElementNS(ns || XHTML_NS, tag) : - document.createElement(tag); -}; -exports.removeChildren = function (element) { - element.innerHTML = ""; -}; -exports.createTextNode = function (textContent, element) { - var doc = element ? element.ownerDocument : document; - return doc.createTextNode(textContent); -}; -exports.createFragment = function (element) { - var doc = element ? element.ownerDocument : document; - return doc.createDocumentFragment(); -}; -exports.hasCssClass = function (el, name) { - var classes = (el.className + "").split(/\s+/g); - return classes.indexOf(name) !== -1; -}; -exports.addCssClass = function (el, name) { - if (!exports.hasCssClass(el, name)) { - el.className += " " + name; - } -}; -exports.removeCssClass = function (el, name) { - var classes = el.className.split(/\s+/g); - while (true) { - var index = classes.indexOf(name); - if (index == -1) { - break; - } - classes.splice(index, 1); - } - el.className = classes.join(" "); -}; -exports.toggleCssClass = function (el, name) { - var classes = el.className.split(/\s+/g), add = true; - while (true) { - var index = classes.indexOf(name); - if (index == -1) { - break; - } - add = false; - classes.splice(index, 1); - } - if (add) - classes.push(name); - el.className = classes.join(" "); - return add; -}; -exports.setCssClass = function (node, className, include) { - if (include) { - exports.addCssClass(node, className); - } - else { - exports.removeCssClass(node, className); - } -}; -exports.hasCssString = function (id, doc) { - var index = 0, sheets; - doc = doc || document; - if ((sheets = doc.querySelectorAll("style"))) { - while (index < sheets.length) { - if (sheets[index++].id === id) { - return true; - } - } - } -}; -exports.removeElementById = function (id, doc) { - doc = doc || document; - if (doc.getElementById(id)) { - doc.getElementById(id).remove(); - } -}; -var strictCSP; -var cssCache = []; -exports.useStrictCSP = function (value) { - strictCSP = value; - if (value == false) - insertPendingStyles(); - else if (!cssCache) - cssCache = []; -}; -function insertPendingStyles() { - var cache = cssCache; - cssCache = null; - cache && cache.forEach(function (item) { - importCssString(item[0], item[1]); - }); -} -function importCssString(cssText, id, target) { - if (typeof document == "undefined") - return; - if (cssCache) { - if (target) { - insertPendingStyles(); - } - else if (target === false) { - return cssCache.push([cssText, id]); - } - } - if (strictCSP) - return; - var container = target; - if (!target || !target.getRootNode) { - container = document; - } - else { - container = target.getRootNode(); - if (!container || container == target) - container = document; - } - var doc = container.ownerDocument || container; - if (id && exports.hasCssString(id, container)) - return null; - if (id) - cssText += "\n/*# sourceURL=ace/css/" + id + " */"; - var style = exports.createElement("style"); - style.appendChild(doc.createTextNode(cssText)); - if (id) - style.id = id; - if (container == doc) - container = exports.getDocumentHead(doc); - container.insertBefore(style, container.firstChild); -} -exports.importCssString = importCssString; -exports.importCssStylsheet = function (uri, doc) { - exports.buildDom(["link", { rel: "stylesheet", href: uri }], exports.getDocumentHead(doc)); -}; -exports.scrollbarWidth = function (doc) { - var inner = exports.createElement("ace_inner"); - inner.style.width = "100%"; - inner.style.minWidth = "0px"; - inner.style.height = "200px"; - inner.style.display = "block"; - var outer = exports.createElement("ace_outer"); - var style = outer.style; - style.position = "absolute"; - style.left = "-10000px"; - style.overflow = "hidden"; - style.width = "200px"; - style.minWidth = "0px"; - style.height = "150px"; - style.display = "block"; - outer.appendChild(inner); - var body = (doc && doc.documentElement) || (document && document.documentElement); - if (!body) - return 0; - body.appendChild(outer); - var noScrollbar = inner.offsetWidth; - style.overflow = "scroll"; - var withScrollbar = inner.offsetWidth; - if (noScrollbar === withScrollbar) { - withScrollbar = outer.clientWidth; - } - body.removeChild(outer); - return noScrollbar - withScrollbar; -}; -exports.computedStyle = function (element, style) { - return window.getComputedStyle(element, "") || {}; -}; -exports.setStyle = function (styles, property, value) { - if (styles[property] !== value) { - styles[property] = value; - } -}; -exports.HAS_CSS_ANIMATION = false; -exports.HAS_CSS_TRANSFORMS = false; -exports.HI_DPI = useragent.isWin - ? typeof window !== "undefined" && window.devicePixelRatio >= 1.5 - : true; -if (useragent.isChromeOS) - exports.HI_DPI = false; -if (typeof document !== "undefined") { - var div = document.createElement("div"); - if (exports.HI_DPI && div.style.transform !== undefined) - exports.HAS_CSS_TRANSFORMS = true; - if (!useragent.isEdge && typeof div.style.animationName !== "undefined") - exports.HAS_CSS_ANIMATION = true; - div = null; -} -if (exports.HAS_CSS_TRANSFORMS) { - exports.translate = function (element, tx, ty) { - element.style.transform = "translate(" + Math.round(tx) + "px, " + Math.round(ty) + "px)"; - }; -} -else { - exports.translate = function (element, tx, ty) { - element.style.top = Math.round(ty) + "px"; - element.style.left = Math.round(tx) + "px"; - }; -} - -}); - -ace.define("ace/lib/net",["require","exports","module","ace/lib/dom"], function(require, exports, module){/* - * based on code from: - * - * @license RequireJS text 0.25.0 Copyright (c) 2010-2011, The Dojo Foundation All Rights Reserved. - * Available via the MIT or new BSD license. - * see: http://github.com/jrburke/requirejs for details - */ -"use strict"; -var dom = require("./dom"); -exports.get = function (url, callback) { - var xhr = new XMLHttpRequest(); - xhr.open('GET', url, true); - xhr.onreadystatechange = function () { - if (xhr.readyState === 4) { - callback(xhr.responseText); - } - }; - xhr.send(null); -}; -exports.loadScript = function (path, callback) { - var head = dom.getDocumentHead(); - var s = document.createElement('script'); - s.src = path; - head.appendChild(s); - s.onload = s.onreadystatechange = function (_, isAbort) { - if (isAbort || !s.readyState || s.readyState == "loaded" || s.readyState == "complete") { - s = s.onload = s.onreadystatechange = null; - if (!isAbort) - callback(); - } - }; -}; -exports.qualifyURL = function (url) { - var a = document.createElement('a'); - a.href = url; - return a.href; -}; - -}); - -ace.define("ace/lib/oop",["require","exports","module"], function(require, exports, module){"use strict"; -exports.inherits = function (ctor, superCtor) { - ctor.super_ = superCtor; - ctor.prototype = Object.create(superCtor.prototype, { - constructor: { - value: ctor, - enumerable: false, - writable: true, - configurable: true - } - }); -}; -exports.mixin = function (obj, mixin) { - for (var key in mixin) { - obj[key] = mixin[key]; - } - return obj; -}; -exports.implement = function (proto, mixin) { - exports.mixin(proto, mixin); -}; - -}); - -ace.define("ace/lib/event_emitter",["require","exports","module"], function(require, exports, module){"use strict"; -var EventEmitter = {}; -var stopPropagation = function () { this.propagationStopped = true; }; -var preventDefault = function () { this.defaultPrevented = true; }; -EventEmitter._emit = - EventEmitter._dispatchEvent = function (eventName, e) { - this._eventRegistry || (this._eventRegistry = {}); - this._defaultHandlers || (this._defaultHandlers = {}); - var listeners = this._eventRegistry[eventName] || []; - var defaultHandler = this._defaultHandlers[eventName]; - if (!listeners.length && !defaultHandler) - return; - if (typeof e != "object" || !e) - e = {}; - if (!e.type) - e.type = eventName; - if (!e.stopPropagation) - e.stopPropagation = stopPropagation; - if (!e.preventDefault) - e.preventDefault = preventDefault; - listeners = listeners.slice(); - for (var i = 0; i < listeners.length; i++) { - listeners[i](e, this); - if (e.propagationStopped) - break; - } - if (defaultHandler && !e.defaultPrevented) - return defaultHandler(e, this); - }; -EventEmitter._signal = function (eventName, e) { - var listeners = (this._eventRegistry || {})[eventName]; - if (!listeners) - return; - listeners = listeners.slice(); - for (var i = 0; i < listeners.length; i++) - listeners[i](e, this); -}; -EventEmitter.once = function (eventName, callback) { - var _self = this; - this.on(eventName, function newCallback() { - _self.off(eventName, newCallback); - callback.apply(null, arguments); - }); - if (!callback) { - return new Promise(function (resolve) { - callback = resolve; - }); - } -}; -EventEmitter.setDefaultHandler = function (eventName, callback) { - var handlers = this._defaultHandlers; - if (!handlers) - handlers = this._defaultHandlers = { _disabled_: {} }; - if (handlers[eventName]) { - var old = handlers[eventName]; - var disabled = handlers._disabled_[eventName]; - if (!disabled) - handlers._disabled_[eventName] = disabled = []; - disabled.push(old); - var i = disabled.indexOf(callback); - if (i != -1) - disabled.splice(i, 1); - } - handlers[eventName] = callback; -}; -EventEmitter.removeDefaultHandler = function (eventName, callback) { - var handlers = this._defaultHandlers; - if (!handlers) - return; - var disabled = handlers._disabled_[eventName]; - if (handlers[eventName] == callback) { - if (disabled) - this.setDefaultHandler(eventName, disabled.pop()); - } - else if (disabled) { - var i = disabled.indexOf(callback); - if (i != -1) - disabled.splice(i, 1); - } -}; -EventEmitter.on = - EventEmitter.addEventListener = function (eventName, callback, capturing) { - this._eventRegistry = this._eventRegistry || {}; - var listeners = this._eventRegistry[eventName]; - if (!listeners) - listeners = this._eventRegistry[eventName] = []; - if (listeners.indexOf(callback) == -1) - listeners[capturing ? "unshift" : "push"](callback); - return callback; - }; -EventEmitter.off = - EventEmitter.removeListener = - EventEmitter.removeEventListener = function (eventName, callback) { - this._eventRegistry = this._eventRegistry || {}; - var listeners = this._eventRegistry[eventName]; - if (!listeners) - return; - var index = listeners.indexOf(callback); - if (index !== -1) - listeners.splice(index, 1); - }; -EventEmitter.removeAllListeners = function (eventName) { - if (!eventName) - this._eventRegistry = this._defaultHandlers = undefined; - if (this._eventRegistry) - this._eventRegistry[eventName] = undefined; - if (this._defaultHandlers) - this._defaultHandlers[eventName] = undefined; -}; -exports.EventEmitter = EventEmitter; - -}); - -ace.define("ace/lib/report_error",["require","exports","module"], function(require, exports, module){exports.reportError = function reportError(msg, data) { - var e = new Error(msg); - e.data = data; - if (typeof console == "object" && console.error) - console.error(e); - setTimeout(function () { throw e; }); -}; - -}); - -ace.define("ace/lib/app_config",["require","exports","module","ace/lib/oop","ace/lib/event_emitter","ace/lib/report_error"], function(require, exports, module){"no use strict"; -var oop = require("./oop"); -var EventEmitter = require("./event_emitter").EventEmitter; -var reportError = require("./report_error").reportError; -var optionsProvider = { - setOptions: function (optList) { - Object.keys(optList).forEach(function (key) { - this.setOption(key, optList[key]); - }, this); - }, - getOptions: function (optionNames) { - var result = {}; - if (!optionNames) { - var options = this.$options; - optionNames = Object.keys(options).filter(function (key) { - return !options[key].hidden; - }); - } - else if (!Array.isArray(optionNames)) { - result = optionNames; - optionNames = Object.keys(result); - } - optionNames.forEach(function (key) { - result[key] = this.getOption(key); - }, this); - return result; - }, - setOption: function (name, value) { - if (this["$" + name] === value) - return; - var opt = this.$options[name]; - if (!opt) { - return warn('misspelled option "' + name + '"'); - } - if (opt.forwardTo) - return this[opt.forwardTo] && this[opt.forwardTo].setOption(name, value); - if (!opt.handlesSet) - this["$" + name] = value; - if (opt && opt.set) - opt.set.call(this, value); - }, - getOption: function (name) { - var opt = this.$options[name]; - if (!opt) { - return warn('misspelled option "' + name + '"'); - } - if (opt.forwardTo) - return this[opt.forwardTo] && this[opt.forwardTo].getOption(name); - return opt && opt.get ? opt.get.call(this) : this["$" + name]; - } -}; -function warn(message) { - if (typeof console != "undefined" && console.warn) - console.warn.apply(console, arguments); -} -var messages; -var AppConfig = /** @class */ (function () { - function AppConfig() { - this.$defaultOptions = {}; - } - AppConfig.prototype.defineOptions = function (obj, path, options) { - if (!obj.$options) - this.$defaultOptions[path] = obj.$options = {}; - Object.keys(options).forEach(function (key) { - var opt = options[key]; - if (typeof opt == "string") - opt = { forwardTo: opt }; - opt.name || (opt.name = key); - obj.$options[opt.name] = opt; - if ("initialValue" in opt) - obj["$" + opt.name] = opt.initialValue; - }); - oop.implement(obj, optionsProvider); - return this; - }; - AppConfig.prototype.resetOptions = function (obj) { - Object.keys(obj.$options).forEach(function (key) { - var opt = obj.$options[key]; - if ("value" in opt) - obj.setOption(key, opt.value); - }); - }; - AppConfig.prototype.setDefaultValue = function (path, name, value) { - if (!path) { - for (path in this.$defaultOptions) - if (this.$defaultOptions[path][name]) - break; - if (!this.$defaultOptions[path][name]) - return false; - } - var opts = this.$defaultOptions[path] || (this.$defaultOptions[path] = {}); - if (opts[name]) { - if (opts.forwardTo) - this.setDefaultValue(opts.forwardTo, name, value); - else - opts[name].value = value; - } - }; - AppConfig.prototype.setDefaultValues = function (path, optionHash) { - Object.keys(optionHash).forEach(function (key) { - this.setDefaultValue(path, key, optionHash[key]); - }, this); - }; - AppConfig.prototype.setMessages = function (value) { - messages = value; - }; - AppConfig.prototype.nls = function (string, params) { - if (messages && !messages[string]) { - warn("No message found for '" + string + "' in the provided messages, falling back to default English message."); - } - var translated = messages && messages[string] || string; - if (params) { - translated = translated.replace(/\$(\$|[\d]+)/g, function (_, name) { - if (name == "$") - return "$"; - return params[name]; - }); - } - return translated; - }; - return AppConfig; -}()); -AppConfig.prototype.warn = warn; -AppConfig.prototype.reportError = reportError; -oop.implement(AppConfig.prototype, EventEmitter); -exports.AppConfig = AppConfig; - -}); - -ace.define("ace/theme/textmate-css",["require","exports","module"], function(require, exports, module){module.exports = ".ace-tm .ace_gutter {\n background: #f0f0f0;\n color: #333;\n}\n\n.ace-tm .ace_print-margin {\n width: 1px;\n background: #e8e8e8;\n}\n\n.ace-tm .ace_fold {\n background-color: #6B72E6;\n}\n\n.ace-tm {\n background-color: #FFFFFF;\n color: black;\n}\n\n.ace-tm .ace_cursor {\n color: black;\n}\n \n.ace-tm .ace_invisible {\n color: rgb(191, 191, 191);\n}\n\n.ace-tm .ace_storage,\n.ace-tm .ace_keyword {\n color: blue;\n}\n\n.ace-tm .ace_constant {\n color: rgb(197, 6, 11);\n}\n\n.ace-tm .ace_constant.ace_buildin {\n color: rgb(88, 72, 246);\n}\n\n.ace-tm .ace_constant.ace_language {\n color: rgb(88, 92, 246);\n}\n\n.ace-tm .ace_constant.ace_library {\n color: rgb(6, 150, 14);\n}\n\n.ace-tm .ace_invalid {\n background-color: rgba(255, 0, 0, 0.1);\n color: red;\n}\n\n.ace-tm .ace_support.ace_function {\n color: rgb(60, 76, 114);\n}\n\n.ace-tm .ace_support.ace_constant {\n color: rgb(6, 150, 14);\n}\n\n.ace-tm .ace_support.ace_type,\n.ace-tm .ace_support.ace_class {\n color: rgb(109, 121, 222);\n}\n\n.ace-tm .ace_keyword.ace_operator {\n color: rgb(104, 118, 135);\n}\n\n.ace-tm .ace_string {\n color: rgb(3, 106, 7);\n}\n\n.ace-tm .ace_comment {\n color: rgb(76, 136, 107);\n}\n\n.ace-tm .ace_comment.ace_doc {\n color: rgb(0, 102, 255);\n}\n\n.ace-tm .ace_comment.ace_doc.ace_tag {\n color: rgb(128, 159, 191);\n}\n\n.ace-tm .ace_constant.ace_numeric {\n color: rgb(0, 0, 205);\n}\n\n.ace-tm .ace_variable {\n color: rgb(49, 132, 149);\n}\n\n.ace-tm .ace_xml-pe {\n color: rgb(104, 104, 91);\n}\n\n.ace-tm .ace_entity.ace_name.ace_function {\n color: #0000A2;\n}\n\n\n.ace-tm .ace_heading {\n color: rgb(12, 7, 255);\n}\n\n.ace-tm .ace_list {\n color:rgb(185, 6, 144);\n}\n\n.ace-tm .ace_meta.ace_tag {\n color:rgb(0, 22, 142);\n}\n\n.ace-tm .ace_string.ace_regex {\n color: rgb(255, 0, 0)\n}\n\n.ace-tm .ace_marker-layer .ace_selection {\n background: rgb(181, 213, 255);\n}\n.ace-tm.ace_multiselect .ace_selection.ace_start {\n box-shadow: 0 0 3px 0px white;\n}\n.ace-tm .ace_marker-layer .ace_step {\n background: rgb(252, 255, 0);\n}\n\n.ace-tm .ace_marker-layer .ace_stack {\n background: rgb(164, 229, 101);\n}\n\n.ace-tm .ace_marker-layer .ace_bracket {\n margin: -1px 0 0 -1px;\n border: 1px solid rgb(192, 192, 192);\n}\n\n.ace-tm .ace_marker-layer .ace_active-line {\n background: rgba(0, 0, 0, 0.07);\n}\n\n.ace-tm .ace_gutter-active-line {\n background-color : #dcdcdc;\n}\n\n.ace-tm .ace_marker-layer .ace_selected-word {\n background: rgb(250, 250, 255);\n border: 1px solid rgb(200, 200, 250);\n}\n\n.ace-tm .ace_indent-guide {\n background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==\") right repeat-y;\n}\n\n.ace-tm .ace_indent-guide-active {\n background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAAZSURBVHjaYvj///9/hivKyv8BAAAA//8DACLqBhbvk+/eAAAAAElFTkSuQmCC\") right repeat-y;\n}\n"; - -}); - -ace.define("ace/theme/textmate",["require","exports","module","ace/theme/textmate-css","ace/lib/dom"], function(require, exports, module){"use strict"; -exports.isDark = false; -exports.cssClass = "ace-tm"; -exports.cssText = require("./textmate-css"); -exports.$id = "ace/theme/textmate"; -var dom = require("../lib/dom"); -dom.importCssString(exports.cssText, exports.cssClass, false); - -}); - -ace.define("ace/config",["require","exports","module","ace/lib/lang","ace/lib/net","ace/lib/dom","ace/lib/app_config","ace/theme/textmate"], function(require, exports, module){"no use strict"; -var lang = require("./lib/lang"); -var net = require("./lib/net"); -var dom = require("./lib/dom"); -var AppConfig = require("./lib/app_config").AppConfig; -module.exports = exports = new AppConfig(); -var options = { - packaged: false, - workerPath: null, - modePath: null, - themePath: null, - basePath: "", - suffix: ".js", - $moduleUrls: {}, - loadWorkerFromBlob: true, - sharedPopups: false, - useStrictCSP: null -}; -exports.get = function (key) { - if (!options.hasOwnProperty(key)) - throw new Error("Unknown config key: " + key); - return options[key]; -}; -exports.set = function (key, value) { - if (options.hasOwnProperty(key)) - options[key] = value; - else if (this.setDefaultValue("", key, value) == false) - throw new Error("Unknown config key: " + key); - if (key == "useStrictCSP") - dom.useStrictCSP(value); -}; -exports.all = function () { - return lang.copyObject(options); -}; -exports.$modes = {}; -exports.moduleUrl = function (name, component) { - if (options.$moduleUrls[name]) - return options.$moduleUrls[name]; - var parts = name.split("/"); - component = component || parts[parts.length - 2] || ""; - var sep = component == "snippets" ? "/" : "-"; - var base = parts[parts.length - 1]; - if (component == "worker" && sep == "-") { - var re = new RegExp("^" + component + "[\\-_]|[\\-_]" + component + "$", "g"); - base = base.replace(re, ""); - } - if ((!base || base == component) && parts.length > 1) - base = parts[parts.length - 2]; - var path = options[component + "Path"]; - if (path == null) { - path = options.basePath; - } - else if (sep == "/") { - component = sep = ""; - } - if (path && path.slice(-1) != "/") - path += "/"; - return path + component + sep + base + this.get("suffix"); -}; -exports.setModuleUrl = function (name, subst) { - return options.$moduleUrls[name] = subst; -}; -var loader = function (moduleName, cb) { - if (moduleName === "ace/theme/textmate" || moduleName === "./theme/textmate") - return cb(null, require("./theme/textmate")); - if (customLoader) - return customLoader(moduleName, cb); - console.error("loader is not configured"); -}; -var customLoader; -exports.setLoader = function (cb) { - customLoader = cb; -}; -exports.dynamicModules = Object.create(null); -exports.$loading = {}; -exports.$loaded = {}; -exports.loadModule = function (moduleName, onLoad) { - var loadedModule, moduleType; - if (Array.isArray(moduleName)) { - moduleType = moduleName[0]; - moduleName = moduleName[1]; - } - var load = function (module) { - if (module && !exports.$loading[moduleName]) - return onLoad && onLoad(module); - if (!exports.$loading[moduleName]) - exports.$loading[moduleName] = []; - exports.$loading[moduleName].push(onLoad); - if (exports.$loading[moduleName].length > 1) - return; - var afterLoad = function () { - loader(moduleName, function (err, module) { - if (module) - exports.$loaded[moduleName] = module; - exports._emit("load.module", { name: moduleName, module: module }); - var listeners = exports.$loading[moduleName]; - exports.$loading[moduleName] = null; - listeners.forEach(function (onLoad) { - onLoad && onLoad(module); - }); - }); - }; - if (!exports.get("packaged")) - return afterLoad(); - net.loadScript(exports.moduleUrl(moduleName, moduleType), afterLoad); - reportErrorIfPathIsNotConfigured(); - }; - if (exports.dynamicModules[moduleName]) { - exports.dynamicModules[moduleName]().then(function (module) { - if (module.default) { - load(module.default); - } - else { - load(module); - } - }); - } - else { - try { - loadedModule = this.$require(moduleName); - } - catch (e) { } - load(loadedModule || exports.$loaded[moduleName]); - } -}; -exports.$require = function (moduleName) { - if (typeof module.require == "function") { - var req = "require"; - return module[req](moduleName); - } -}; -exports.setModuleLoader = function (moduleName, onLoad) { - exports.dynamicModules[moduleName] = onLoad; -}; -var reportErrorIfPathIsNotConfigured = function () { - if (!options.basePath && !options.workerPath - && !options.modePath && !options.themePath - && !Object.keys(options.$moduleUrls).length) { - console.error("Unable to infer path to ace from script src,", "use ace.config.set('basePath', 'path') to enable dynamic loading of modes and themes", "or with webpack use ace/webpack-resolver"); - reportErrorIfPathIsNotConfigured = function () { }; - } -}; -exports.version = "1.32.0"; - -}); - -ace.define("ace/loader_build",["require","exports","module","ace/lib/fixoldbrowsers","ace/config"], function(require, exports, module) { -"use strict"; - -require("./lib/fixoldbrowsers"); -var config = require("./config"); -config.setLoader(function(moduleName, cb) { - require([moduleName], function(module) { - cb(null, module); - }); -}); - -var global = (function() { - return this || typeof window != "undefined" && window; -})(); - -module.exports = function(ace) { - config.init = init; - config.$require = require; - ace.require = require; - - if (true) - ace.define = __webpack_require__.amdD; -}; -init(true);function init(packaged) { - - if (!global || !global.document) - return; - - config.set("packaged", packaged || require.packaged || module.packaged || (global.define && __webpack_require__.amdD.packaged)); - - var scriptOptions = {}; - var scriptUrl = ""; - var currentScript = (document.currentScript || document._currentScript ); // native or polyfill - var currentDocument = currentScript && currentScript.ownerDocument || document; - - if (currentScript && currentScript.src) { - scriptUrl = currentScript.src.split(/[?#]/)[0].split("/").slice(0, -1).join("/") || ""; - } - - var scripts = currentDocument.getElementsByTagName("script"); - for (var i=0; i [" + this.end.row + "/" + this.end.column + "]"); - }; - Range.prototype.contains = function (row, column) { - return this.compare(row, column) == 0; - }; - Range.prototype.compareRange = function (range) { - var cmp, end = range.end, start = range.start; - cmp = this.compare(end.row, end.column); - if (cmp == 1) { - cmp = this.compare(start.row, start.column); - if (cmp == 1) { - return 2; - } - else if (cmp == 0) { - return 1; - } - else { - return 0; - } - } - else if (cmp == -1) { - return -2; - } - else { - cmp = this.compare(start.row, start.column); - if (cmp == -1) { - return -1; - } - else if (cmp == 1) { - return 42; - } - else { - return 0; - } - } - }; - Range.prototype.comparePoint = function (p) { - return this.compare(p.row, p.column); - }; - Range.prototype.containsRange = function (range) { - return this.comparePoint(range.start) == 0 && this.comparePoint(range.end) == 0; - }; - Range.prototype.intersects = function (range) { - var cmp = this.compareRange(range); - return (cmp == -1 || cmp == 0 || cmp == 1); - }; - Range.prototype.isEnd = function (row, column) { - return this.end.row == row && this.end.column == column; - }; - Range.prototype.isStart = function (row, column) { - return this.start.row == row && this.start.column == column; - }; - Range.prototype.setStart = function (row, column) { - if (typeof row == "object") { - this.start.column = row.column; - this.start.row = row.row; - } - else { - this.start.row = row; - this.start.column = column; - } - }; - Range.prototype.setEnd = function (row, column) { - if (typeof row == "object") { - this.end.column = row.column; - this.end.row = row.row; - } - else { - this.end.row = row; - this.end.column = column; - } - }; - Range.prototype.inside = function (row, column) { - if (this.compare(row, column) == 0) { - if (this.isEnd(row, column) || this.isStart(row, column)) { - return false; - } - else { - return true; - } - } - return false; - }; - Range.prototype.insideStart = function (row, column) { - if (this.compare(row, column) == 0) { - if (this.isEnd(row, column)) { - return false; - } - else { - return true; - } - } - return false; - }; - Range.prototype.insideEnd = function (row, column) { - if (this.compare(row, column) == 0) { - if (this.isStart(row, column)) { - return false; - } - else { - return true; - } - } - return false; - }; - Range.prototype.compare = function (row, column) { - if (!this.isMultiLine()) { - if (row === this.start.row) { - return column < this.start.column ? -1 : (column > this.end.column ? 1 : 0); - } - } - if (row < this.start.row) - return -1; - if (row > this.end.row) - return 1; - if (this.start.row === row) - return column >= this.start.column ? 0 : -1; - if (this.end.row === row) - return column <= this.end.column ? 0 : 1; - return 0; - }; - Range.prototype.compareStart = function (row, column) { - if (this.start.row == row && this.start.column == column) { - return -1; - } - else { - return this.compare(row, column); - } - }; - Range.prototype.compareEnd = function (row, column) { - if (this.end.row == row && this.end.column == column) { - return 1; - } - else { - return this.compare(row, column); - } - }; - Range.prototype.compareInside = function (row, column) { - if (this.end.row == row && this.end.column == column) { - return 1; - } - else if (this.start.row == row && this.start.column == column) { - return -1; - } - else { - return this.compare(row, column); - } - }; - Range.prototype.clipRows = function (firstRow, lastRow) { - if (this.end.row > lastRow) - var end = { row: lastRow + 1, column: 0 }; - else if (this.end.row < firstRow) - var end = { row: firstRow, column: 0 }; - if (this.start.row > lastRow) - var start = { row: lastRow + 1, column: 0 }; - else if (this.start.row < firstRow) - var start = { row: firstRow, column: 0 }; - return Range.fromPoints(start || this.start, end || this.end); - }; - Range.prototype.extend = function (row, column) { - var cmp = this.compare(row, column); - if (cmp == 0) - return this; - else if (cmp == -1) - var start = { row: row, column: column }; - else - var end = { row: row, column: column }; - return Range.fromPoints(start || this.start, end || this.end); - }; - Range.prototype.isEmpty = function () { - return (this.start.row === this.end.row && this.start.column === this.end.column); - }; - Range.prototype.isMultiLine = function () { - return (this.start.row !== this.end.row); - }; - Range.prototype.clone = function () { - return Range.fromPoints(this.start, this.end); - }; - Range.prototype.collapseRows = function () { - if (this.end.column == 0) - return new Range(this.start.row, 0, Math.max(this.start.row, this.end.row - 1), 0); - else - return new Range(this.start.row, 0, this.end.row, 0); - }; - Range.prototype.toScreenRange = function (session) { - var screenPosStart = session.documentToScreenPosition(this.start); - var screenPosEnd = session.documentToScreenPosition(this.end); - return new Range(screenPosStart.row, screenPosStart.column, screenPosEnd.row, screenPosEnd.column); - }; - Range.prototype.moveBy = function (row, column) { - this.start.row += row; - this.start.column += column; - this.end.row += row; - this.end.column += column; - }; - return Range; -}()); -Range.fromPoints = function (start, end) { - return new Range(start.row, start.column, end.row, end.column); -}; -Range.comparePoints = comparePoints; -Range.comparePoints = function (p1, p2) { - return p1.row - p2.row || p1.column - p2.column; -}; -exports.Range = Range; - -}); - -ace.define("ace/lib/keys",["require","exports","module","ace/lib/oop"], function(require, exports, module){/*! @license -========================================================================== -SproutCore -- JavaScript Application Framework -copyright 2006-2009, Sprout Systems Inc., Apple Inc. and contributors. - -Permission is hereby granted, free of charge, to any person obtaining a -copy of this software and associated documentation files (the "Software"), -to deal in the Software without restriction, including without limitation -the rights to use, copy, modify, merge, publish, distribute, sublicense, -and/or sell copies of the Software, and to permit persons to whom the -Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. - -SproutCore and the SproutCore logo are trademarks of Sprout Systems, Inc. - -For more information about SproutCore, visit http://www.sproutcore.com - - -========================================================================== -@license */ -"use strict"; -var oop = require("./oop"); -var Keys = (function () { - var ret = { - MODIFIER_KEYS: { - 16: 'Shift', 17: 'Ctrl', 18: 'Alt', 224: 'Meta', - 91: 'MetaLeft', 92: 'MetaRight', 93: 'ContextMenu' - }, - KEY_MODS: { - "ctrl": 1, "alt": 2, "option": 2, "shift": 4, - "super": 8, "meta": 8, "command": 8, "cmd": 8, - "control": 1 - }, - FUNCTION_KEYS: { - 8: "Backspace", - 9: "Tab", - 13: "Return", - 19: "Pause", - 27: "Esc", - 32: "Space", - 33: "PageUp", - 34: "PageDown", - 35: "End", - 36: "Home", - 37: "Left", - 38: "Up", - 39: "Right", - 40: "Down", - 44: "Print", - 45: "Insert", - 46: "Delete", - 96: "Numpad0", - 97: "Numpad1", - 98: "Numpad2", - 99: "Numpad3", - 100: "Numpad4", - 101: "Numpad5", - 102: "Numpad6", - 103: "Numpad7", - 104: "Numpad8", - 105: "Numpad9", - '-13': "NumpadEnter", - 112: "F1", - 113: "F2", - 114: "F3", - 115: "F4", - 116: "F5", - 117: "F6", - 118: "F7", - 119: "F8", - 120: "F9", - 121: "F10", - 122: "F11", - 123: "F12", - 144: "Numlock", - 145: "Scrolllock" - }, - PRINTABLE_KEYS: { - 32: ' ', 48: '0', 49: '1', 50: '2', 51: '3', 52: '4', 53: '5', - 54: '6', 55: '7', 56: '8', 57: '9', 59: ';', 61: '=', 65: 'a', - 66: 'b', 67: 'c', 68: 'd', 69: 'e', 70: 'f', 71: 'g', 72: 'h', - 73: 'i', 74: 'j', 75: 'k', 76: 'l', 77: 'm', 78: 'n', 79: 'o', - 80: 'p', 81: 'q', 82: 'r', 83: 's', 84: 't', 85: 'u', 86: 'v', - 87: 'w', 88: 'x', 89: 'y', 90: 'z', 107: '+', 109: '-', 110: '.', - 186: ';', 187: '=', 188: ',', 189: '-', 190: '.', 191: '/', 192: '`', - 219: '[', 220: '\\', 221: ']', 222: "'", 111: '/', 106: '*' - } - }; - ret.PRINTABLE_KEYS[173] = '-'; - var name, i; - for (i in ret.FUNCTION_KEYS) { - name = ret.FUNCTION_KEYS[i].toLowerCase(); - ret[name] = parseInt(i, 10); - } - for (i in ret.PRINTABLE_KEYS) { - name = ret.PRINTABLE_KEYS[i].toLowerCase(); - ret[name] = parseInt(i, 10); - } - oop.mixin(ret, ret.MODIFIER_KEYS); - oop.mixin(ret, ret.PRINTABLE_KEYS); - oop.mixin(ret, ret.FUNCTION_KEYS); - ret.enter = ret["return"]; - ret.escape = ret.esc; - ret.del = ret["delete"]; - (function () { - var mods = ["cmd", "ctrl", "alt", "shift"]; - for (var i = Math.pow(2, mods.length); i--;) { - ret.KEY_MODS[i] = mods.filter(function (x) { - return i & ret.KEY_MODS[x]; - }).join("-") + "-"; - } - })(); - ret.KEY_MODS[0] = ""; - ret.KEY_MODS[-1] = "input-"; - return ret; -})(); -oop.mixin(exports, Keys); -exports.default = exports; -exports.keyCodeToString = function (keyCode) { - var keyString = Keys[keyCode]; - if (typeof keyString != "string") - keyString = String.fromCharCode(keyCode); - return keyString.toLowerCase(); -}; - -}); - -ace.define("ace/lib/event",["require","exports","module","ace/lib/keys","ace/lib/useragent"], function(require, exports, module){"use strict"; -var keys = require("./keys"); -var useragent = require("./useragent"); -var pressedKeys = null; -var ts = 0; -var activeListenerOptions; -function detectListenerOptionsSupport() { - activeListenerOptions = false; - try { - document.createComment("").addEventListener("test", function () { }, { - get passive() { - activeListenerOptions = { passive: false }; - } - }); - } - catch (e) { } -} -function getListenerOptions() { - if (activeListenerOptions == undefined) - detectListenerOptionsSupport(); - return activeListenerOptions; -} -function EventListener(elem, type, callback) { - this.elem = elem; - this.type = type; - this.callback = callback; -} -EventListener.prototype.destroy = function () { - removeListener(this.elem, this.type, this.callback); - this.elem = this.type = this.callback = undefined; -}; -var addListener = exports.addListener = function (elem, type, callback, destroyer) { - elem.addEventListener(type, callback, getListenerOptions()); - if (destroyer) - destroyer.$toDestroy.push(new EventListener(elem, type, callback)); -}; -var removeListener = exports.removeListener = function (elem, type, callback) { - elem.removeEventListener(type, callback, getListenerOptions()); -}; -exports.stopEvent = function (e) { - exports.stopPropagation(e); - exports.preventDefault(e); - return false; -}; -exports.stopPropagation = function (e) { - if (e.stopPropagation) - e.stopPropagation(); -}; -exports.preventDefault = function (e) { - if (e.preventDefault) - e.preventDefault(); -}; -exports.getButton = function (e) { - if (e.type == "dblclick") - return 0; - if (e.type == "contextmenu" || (useragent.isMac && (e.ctrlKey && !e.altKey && !e.shiftKey))) - return 2; - return e.button; -}; -exports.capture = function (el, eventHandler, releaseCaptureHandler) { - var ownerDocument = el && el.ownerDocument || document; - function onMouseUp(e) { - eventHandler && eventHandler(e); - releaseCaptureHandler && releaseCaptureHandler(e); - removeListener(ownerDocument, "mousemove", eventHandler); - removeListener(ownerDocument, "mouseup", onMouseUp); - removeListener(ownerDocument, "dragstart", onMouseUp); - } - addListener(ownerDocument, "mousemove", eventHandler); - addListener(ownerDocument, "mouseup", onMouseUp); - addListener(ownerDocument, "dragstart", onMouseUp); - return onMouseUp; -}; -exports.addMouseWheelListener = function (el, callback, destroyer) { - addListener(el, "wheel", function (e) { - var factor = 0.15; - var deltaX = e.deltaX || 0; - var deltaY = e.deltaY || 0; - switch (e.deltaMode) { - case e.DOM_DELTA_PIXEL: - e.wheelX = deltaX * factor; - e.wheelY = deltaY * factor; - break; - case e.DOM_DELTA_LINE: - var linePixels = 15; - e.wheelX = deltaX * linePixels; - e.wheelY = deltaY * linePixels; - break; - case e.DOM_DELTA_PAGE: - var pagePixels = 150; - e.wheelX = deltaX * pagePixels; - e.wheelY = deltaY * pagePixels; - break; - } - callback(e); - }, destroyer); -}; -exports.addMultiMouseDownListener = function (elements, timeouts, eventHandler, callbackName, destroyer) { - var clicks = 0; - var startX, startY, timer; - var eventNames = { - 2: "dblclick", - 3: "tripleclick", - 4: "quadclick" - }; - function onMousedown(e) { - if (exports.getButton(e) !== 0) { - clicks = 0; - } - else if (e.detail > 1) { - clicks++; - if (clicks > 4) - clicks = 1; - } - else { - clicks = 1; - } - if (useragent.isIE) { - var isNewClick = Math.abs(e.clientX - startX) > 5 || Math.abs(e.clientY - startY) > 5; - if (!timer || isNewClick) - clicks = 1; - if (timer) - clearTimeout(timer); - timer = setTimeout(function () { timer = null; }, timeouts[clicks - 1] || 600); - if (clicks == 1) { - startX = e.clientX; - startY = e.clientY; - } - } - e._clicks = clicks; - eventHandler[callbackName]("mousedown", e); - if (clicks > 4) - clicks = 0; - else if (clicks > 1) - return eventHandler[callbackName](eventNames[clicks], e); - } - if (!Array.isArray(elements)) - elements = [elements]; - elements.forEach(function (el) { - addListener(el, "mousedown", onMousedown, destroyer); - }); -}; -var getModifierHash = function (e) { - return 0 | (e.ctrlKey ? 1 : 0) | (e.altKey ? 2 : 0) | (e.shiftKey ? 4 : 0) | (e.metaKey ? 8 : 0); -}; -exports.getModifierString = function (e) { - return keys.KEY_MODS[getModifierHash(e)]; -}; -function normalizeCommandKeys(callback, e, keyCode) { - var hashId = getModifierHash(e); - if (!useragent.isMac && pressedKeys) { - if (e.getModifierState && (e.getModifierState("OS") || e.getModifierState("Win"))) - hashId |= 8; - if (pressedKeys.altGr) { - if ((3 & hashId) != 3) - pressedKeys.altGr = 0; - else - return; - } - if (keyCode === 18 || keyCode === 17) { - var location = "location" in e ? e.location : e.keyLocation; - if (keyCode === 17 && location === 1) { - if (pressedKeys[keyCode] == 1) - ts = e.timeStamp; - } - else if (keyCode === 18 && hashId === 3 && location === 2) { - var dt = e.timeStamp - ts; - if (dt < 50) - pressedKeys.altGr = true; - } - } - } - if (keyCode in keys.MODIFIER_KEYS) { - keyCode = -1; - } - if (!hashId && keyCode === 13) { - var location = "location" in e ? e.location : e.keyLocation; - if (location === 3) { - callback(e, hashId, -keyCode); - if (e.defaultPrevented) - return; - } - } - if (useragent.isChromeOS && hashId & 8) { - callback(e, hashId, keyCode); - if (e.defaultPrevented) - return; - else - hashId &= ~8; - } - if (!hashId && !(keyCode in keys.FUNCTION_KEYS) && !(keyCode in keys.PRINTABLE_KEYS)) { - return false; - } - return callback(e, hashId, keyCode); -} -exports.addCommandKeyListener = function (el, callback, destroyer) { - if (useragent.isOldGecko || (useragent.isOpera && !("KeyboardEvent" in window))) { - var lastKeyDownKeyCode = null; - addListener(el, "keydown", function (e) { - lastKeyDownKeyCode = e.keyCode; - }, destroyer); - addListener(el, "keypress", function (e) { - return normalizeCommandKeys(callback, e, lastKeyDownKeyCode); - }, destroyer); - } - else { - var lastDefaultPrevented = null; - addListener(el, "keydown", function (e) { - pressedKeys[e.keyCode] = (pressedKeys[e.keyCode] || 0) + 1; - var result = normalizeCommandKeys(callback, e, e.keyCode); - lastDefaultPrevented = e.defaultPrevented; - return result; - }, destroyer); - addListener(el, "keypress", function (e) { - if (lastDefaultPrevented && (e.ctrlKey || e.altKey || e.shiftKey || e.metaKey)) { - exports.stopEvent(e); - lastDefaultPrevented = null; - } - }, destroyer); - addListener(el, "keyup", function (e) { - pressedKeys[e.keyCode] = null; - }, destroyer); - if (!pressedKeys) { - resetPressedKeys(); - addListener(window, "focus", resetPressedKeys); - } - } -}; -function resetPressedKeys() { - pressedKeys = Object.create(null); -} -if (typeof window == "object" && window.postMessage && !useragent.isOldIE) { - var postMessageId = 1; - exports.nextTick = function (callback, win) { - win = win || window; - var messageName = "zero-timeout-message-" + (postMessageId++); - var listener = function (e) { - if (e.data == messageName) { - exports.stopPropagation(e); - removeListener(win, "message", listener); - callback(); - } - }; - addListener(win, "message", listener); - win.postMessage(messageName, "*"); - }; -} -exports.$idleBlocked = false; -exports.onIdle = function (cb, timeout) { - return setTimeout(function handler() { - if (!exports.$idleBlocked) { - cb(); - } - else { - setTimeout(handler, 100); - } - }, timeout); -}; -exports.$idleBlockId = null; -exports.blockIdle = function (delay) { - if (exports.$idleBlockId) - clearTimeout(exports.$idleBlockId); - exports.$idleBlocked = true; - exports.$idleBlockId = setTimeout(function () { - exports.$idleBlocked = false; - }, delay || 100); -}; -exports.nextFrame = typeof window == "object" && (window.requestAnimationFrame - || window.mozRequestAnimationFrame - || window.webkitRequestAnimationFrame - || window.msRequestAnimationFrame - || window.oRequestAnimationFrame); -if (exports.nextFrame) - exports.nextFrame = exports.nextFrame.bind(window); -else - exports.nextFrame = function (callback) { - setTimeout(callback, 17); - }; - -}); - -ace.define("ace/clipboard",["require","exports","module"], function(require, exports, module){"use strict"; -var $cancelT; -module.exports = { - lineMode: false, - pasteCancelled: function () { - if ($cancelT && $cancelT > Date.now() - 50) - return true; - return $cancelT = false; - }, - cancel: function () { - $cancelT = Date.now(); - } -}; - -}); - -ace.define("ace/keyboard/textinput",["require","exports","module","ace/lib/event","ace/config","ace/lib/useragent","ace/lib/dom","ace/lib/lang","ace/clipboard","ace/lib/keys"], function(require, exports, module){"use strict"; -var event = require("../lib/event"); -var nls = require("../config").nls; -var useragent = require("../lib/useragent"); -var dom = require("../lib/dom"); -var lang = require("../lib/lang"); -var clipboard = require("../clipboard"); -var BROKEN_SETDATA = useragent.isChrome < 18; -var USE_IE_MIME_TYPE = useragent.isIE; -var HAS_FOCUS_ARGS = useragent.isChrome > 63; -var MAX_LINE_LENGTH = 400; -var KEYS = require("../lib/keys"); -var MODS = KEYS.KEY_MODS; -var isIOS = useragent.isIOS; -var valueResetRegex = isIOS ? /\s/ : /\n/; -var isMobile = useragent.isMobile; -var TextInput = function (parentNode, host) { - var text = dom.createElement("textarea"); - text.className = "ace_text-input"; - text.setAttribute("wrap", "off"); - text.setAttribute("autocorrect", "off"); - text.setAttribute("autocapitalize", "off"); - text.setAttribute("spellcheck", false); - text.style.opacity = "0"; - parentNode.insertBefore(text, parentNode.firstChild); - var copied = false; - var pasted = false; - var inComposition = false; - var sendingText = false; - var tempStyle = ''; - if (!isMobile) - text.style.fontSize = "1px"; - var commandMode = false; - var ignoreFocusEvents = false; - var lastValue = ""; - var lastSelectionStart = 0; - var lastSelectionEnd = 0; - var lastRestoreEnd = 0; - var rowStart = Number.MAX_SAFE_INTEGER; - var rowEnd = Number.MIN_SAFE_INTEGER; - var numberOfExtraLines = 0; - try { - var isFocused = document.activeElement === text; - } - catch (e) { } - this.setNumberOfExtraLines = function (number) { - rowStart = Number.MAX_SAFE_INTEGER; - rowEnd = Number.MIN_SAFE_INTEGER; - if (number < 0) { - numberOfExtraLines = 0; - return; - } - numberOfExtraLines = number; - }; - this.setAriaOptions = function (options) { - if (options.activeDescendant) { - text.setAttribute("aria-haspopup", "true"); - text.setAttribute("aria-autocomplete", options.inline ? "both" : "list"); - text.setAttribute("aria-activedescendant", options.activeDescendant); - } - else { - text.setAttribute("aria-haspopup", "false"); - text.setAttribute("aria-autocomplete", "both"); - text.removeAttribute("aria-activedescendant"); - } - if (options.role) { - text.setAttribute("role", options.role); - } - if (options.setLabel) { - text.setAttribute("aria-roledescription", nls("editor")); - if (host.session) { - var row = host.session.selection.cursor.row; - text.setAttribute("aria-label", nls("Cursor at row $0", [row + 1])); - } - } - }; - this.setAriaOptions({ role: "textbox" }); - event.addListener(text, "blur", function (e) { - if (ignoreFocusEvents) - return; - host.onBlur(e); - isFocused = false; - }, host); - event.addListener(text, "focus", function (e) { - if (ignoreFocusEvents) - return; - isFocused = true; - if (useragent.isEdge) { - try { - if (!document.hasFocus()) - return; - } - catch (e) { } - } - host.onFocus(e); - if (useragent.isEdge) - setTimeout(resetSelection); - else - resetSelection(); - }, host); - this.$focusScroll = false; - this.focus = function () { - this.setAriaOptions({ - setLabel: host.renderer.enableKeyboardAccessibility - }); - if (tempStyle || HAS_FOCUS_ARGS || this.$focusScroll == "browser") - return text.focus({ preventScroll: true }); - var top = text.style.top; - text.style.position = "fixed"; - text.style.top = "0px"; - try { - var isTransformed = text.getBoundingClientRect().top != 0; - } - catch (e) { - return; - } - var ancestors = []; - if (isTransformed) { - var t = text.parentElement; - while (t && t.nodeType == 1) { - ancestors.push(t); - t.setAttribute("ace_nocontext", true); - if (!t.parentElement && t.getRootNode) - t = t.getRootNode().host; - else - t = t.parentElement; - } - } - text.focus({ preventScroll: true }); - if (isTransformed) { - ancestors.forEach(function (p) { - p.removeAttribute("ace_nocontext"); - }); - } - setTimeout(function () { - text.style.position = ""; - if (text.style.top == "0px") - text.style.top = top; - }, 0); - }; - this.blur = function () { - text.blur(); - }; - this.isFocused = function () { - return isFocused; - }; - host.on("beforeEndOperation", function () { - var curOp = host.curOp; - var commandName = curOp && curOp.command && curOp.command.name; - if (commandName == "insertstring") - return; - var isUserAction = commandName && (curOp.docChanged || curOp.selectionChanged); - if (inComposition && isUserAction) { - lastValue = text.value = ""; - onCompositionEnd(); - } - resetSelection(); - }); - var positionToSelection = function (row, column) { - var selection = column; - for (var i = 1; i <= row - rowStart && i < 2 * numberOfExtraLines + 1; i++) { - selection += host.session.getLine(row - i).length + 1; - } - return selection; - }; - var resetSelection = isIOS - ? function (value) { - if (!isFocused || (copied && !value) || sendingText) - return; - if (!value) - value = ""; - var newValue = "\n ab" + value + "cde fg\n"; - if (newValue != text.value) - text.value = lastValue = newValue; - var selectionStart = 4; - var selectionEnd = 4 + (value.length || (host.selection.isEmpty() ? 0 : 1)); - if (lastSelectionStart != selectionStart || lastSelectionEnd != selectionEnd) { - text.setSelectionRange(selectionStart, selectionEnd); - } - lastSelectionStart = selectionStart; - lastSelectionEnd = selectionEnd; - } - : function () { - if (inComposition || sendingText) - return; - if (!isFocused && !afterContextMenu) - return; - inComposition = true; - var selectionStart = 0; - var selectionEnd = 0; - var line = ""; - if (host.session) { - var selection = host.selection; - var range = selection.getRange(); - var row = selection.cursor.row; - if (row === rowEnd + 1) { - rowStart = rowEnd + 1; - rowEnd = rowStart + 2 * numberOfExtraLines; - } - else if (row === rowStart - 1) { - rowEnd = rowStart - 1; - rowStart = rowEnd - 2 * numberOfExtraLines; - } - else if (row < rowStart - 1 || row > rowEnd + 1) { - rowStart = row > numberOfExtraLines ? row - numberOfExtraLines : 0; - rowEnd = row > numberOfExtraLines ? row + numberOfExtraLines : 2 * numberOfExtraLines; - } - var lines = []; - for (var i = rowStart; i <= rowEnd; i++) { - lines.push(host.session.getLine(i)); - } - line = lines.join('\n'); - selectionStart = positionToSelection(range.start.row, range.start.column); - selectionEnd = positionToSelection(range.end.row, range.end.column); - if (range.start.row < rowStart) { - var prevLine = host.session.getLine(rowStart - 1); - selectionStart = range.start.row < rowStart - 1 ? 0 : selectionStart; - selectionEnd += prevLine.length + 1; - line = prevLine + "\n" + line; - } - else if (range.end.row > rowEnd) { - var nextLine = host.session.getLine(rowEnd + 1); - selectionEnd = range.end.row > rowEnd + 1 ? nextLine.length : range.end.column; - selectionEnd += line.length + 1; - line = line + "\n" + nextLine; - } - else if (isMobile && row > 0) { - line = "\n" + line; - selectionEnd += 1; - selectionStart += 1; - } - if (line.length > MAX_LINE_LENGTH) { - if (selectionStart < MAX_LINE_LENGTH && selectionEnd < MAX_LINE_LENGTH) { - line = line.slice(0, MAX_LINE_LENGTH); - } - else { - line = "\n"; - if (selectionStart == selectionEnd) { - selectionStart = selectionEnd = 0; - } - else { - selectionStart = 0; - selectionEnd = 1; - } - } - } - var newValue = line + "\n\n"; - if (newValue != lastValue) { - text.value = lastValue = newValue; - lastSelectionStart = lastSelectionEnd = newValue.length; - } - } - if (afterContextMenu) { - lastSelectionStart = text.selectionStart; - lastSelectionEnd = text.selectionEnd; - } - if (lastSelectionEnd != selectionEnd - || lastSelectionStart != selectionStart - || text.selectionEnd != lastSelectionEnd // on ie edge selectionEnd changes silently after the initialization - ) { - try { - text.setSelectionRange(selectionStart, selectionEnd); - lastSelectionStart = selectionStart; - lastSelectionEnd = selectionEnd; - } - catch (e) { } - } - inComposition = false; - }; - this.resetSelection = resetSelection; - if (isFocused) - host.onFocus(); - var isAllSelected = function (text) { - return text.selectionStart === 0 && text.selectionEnd >= lastValue.length - && text.value === lastValue && lastValue - && text.selectionEnd !== lastSelectionEnd; - }; - var onSelect = function (e) { - if (inComposition) - return; - if (copied) { - copied = false; - } - else if (isAllSelected(text)) { - host.selectAll(); - resetSelection(); - } - else if (isMobile && text.selectionStart != lastSelectionStart) { - resetSelection(); - } - }; - var inputHandler = null; - this.setInputHandler = function (cb) { inputHandler = cb; }; - this.getInputHandler = function () { return inputHandler; }; - var afterContextMenu = false; - var sendText = function (value, fromInput) { - if (afterContextMenu) - afterContextMenu = false; - if (pasted) { - resetSelection(); - if (value) - host.onPaste(value); - pasted = false; - return ""; - } - else { - var selectionStart = text.selectionStart; - var selectionEnd = text.selectionEnd; - var extendLeft = lastSelectionStart; - var extendRight = lastValue.length - lastSelectionEnd; - var inserted = value; - var restoreStart = value.length - selectionStart; - var restoreEnd = value.length - selectionEnd; - var i = 0; - while (extendLeft > 0 && lastValue[i] == value[i]) { - i++; - extendLeft--; - } - inserted = inserted.slice(i); - i = 1; - while (extendRight > 0 && lastValue.length - i > lastSelectionStart - 1 && lastValue[lastValue.length - i] == value[value.length - i]) { - i++; - extendRight--; - } - restoreStart -= i - 1; - restoreEnd -= i - 1; - var endIndex = inserted.length - i + 1; - if (endIndex < 0) { - extendLeft = -endIndex; - endIndex = 0; - } - inserted = inserted.slice(0, endIndex); - if (!fromInput && !inserted && !restoreStart && !extendLeft && !extendRight && !restoreEnd) - return ""; - sendingText = true; - var shouldReset = false; - if (useragent.isAndroid && inserted == ". ") { - inserted = " "; - shouldReset = true; - } - if (inserted && !extendLeft && !extendRight && !restoreStart && !restoreEnd || commandMode) { - host.onTextInput(inserted); - } - else { - host.onTextInput(inserted, { - extendLeft: extendLeft, - extendRight: extendRight, - restoreStart: restoreStart, - restoreEnd: restoreEnd - }); - } - sendingText = false; - lastValue = value; - lastSelectionStart = selectionStart; - lastSelectionEnd = selectionEnd; - lastRestoreEnd = restoreEnd; - return shouldReset ? "\n" : inserted; - } - }; - var onInput = function (e) { - if (inComposition) - return onCompositionUpdate(); - if (e && e.inputType) { - if (e.inputType == "historyUndo") - return host.execCommand("undo"); - if (e.inputType == "historyRedo") - return host.execCommand("redo"); - } - var data = text.value; - var inserted = sendText(data, true); - if (data.length > MAX_LINE_LENGTH + 100 - || valueResetRegex.test(inserted) - || isMobile && lastSelectionStart < 1 && lastSelectionStart == lastSelectionEnd) { - resetSelection(); - } - }; - var handleClipboardData = function (e, data, forceIEMime) { - var clipboardData = e.clipboardData || window.clipboardData; - if (!clipboardData || BROKEN_SETDATA) - return; - var mime = USE_IE_MIME_TYPE || forceIEMime ? "Text" : "text/plain"; - try { - if (data) { - return clipboardData.setData(mime, data) !== false; - } - else { - return clipboardData.getData(mime); - } - } - catch (e) { - if (!forceIEMime) - return handleClipboardData(e, data, true); - } - }; - var doCopy = function (e, isCut) { - var data = host.getCopyText(); - if (!data) - return event.preventDefault(e); - if (handleClipboardData(e, data)) { - if (isIOS) { - resetSelection(data); - copied = data; - setTimeout(function () { - copied = false; - }, 10); - } - isCut ? host.onCut() : host.onCopy(); - event.preventDefault(e); - } - else { - copied = true; - text.value = data; - text.select(); - setTimeout(function () { - copied = false; - resetSelection(); - isCut ? host.onCut() : host.onCopy(); - }); - } - }; - var onCut = function (e) { - doCopy(e, true); - }; - var onCopy = function (e) { - doCopy(e, false); - }; - var onPaste = function (e) { - var data = handleClipboardData(e); - if (clipboard.pasteCancelled()) - return; - if (typeof data == "string") { - if (data) - host.onPaste(data, e); - if (useragent.isIE) - setTimeout(resetSelection); - event.preventDefault(e); - } - else { - text.value = ""; - pasted = true; - } - }; - event.addCommandKeyListener(text, host.onCommandKey.bind(host), host); - event.addListener(text, "select", onSelect, host); - event.addListener(text, "input", onInput, host); - event.addListener(text, "cut", onCut, host); - event.addListener(text, "copy", onCopy, host); - event.addListener(text, "paste", onPaste, host); - if (!('oncut' in text) || !('oncopy' in text) || !('onpaste' in text)) { - event.addListener(parentNode, "keydown", function (e) { - if ((useragent.isMac && !e.metaKey) || !e.ctrlKey) - return; - switch (e.keyCode) { - case 67: - onCopy(e); - break; - case 86: - onPaste(e); - break; - case 88: - onCut(e); - break; - } - }, host); - } - var onCompositionStart = function (e) { - if (inComposition || !host.onCompositionStart || host.$readOnly) - return; - inComposition = {}; - if (commandMode) - return; - if (e.data) - inComposition.useTextareaForIME = false; - setTimeout(onCompositionUpdate, 0); - host._signal("compositionStart"); - host.on("mousedown", cancelComposition); - var range = host.getSelectionRange(); - range.end.row = range.start.row; - range.end.column = range.start.column; - inComposition.markerRange = range; - inComposition.selectionStart = lastSelectionStart; - host.onCompositionStart(inComposition); - if (inComposition.useTextareaForIME) { - lastValue = text.value = ""; - lastSelectionStart = 0; - lastSelectionEnd = 0; - } - else { - if (text.msGetInputContext) - inComposition.context = text.msGetInputContext(); - if (text.getInputContext) - inComposition.context = text.getInputContext(); - } - }; - var onCompositionUpdate = function () { - if (!inComposition || !host.onCompositionUpdate || host.$readOnly) - return; - if (commandMode) - return cancelComposition(); - if (inComposition.useTextareaForIME) { - host.onCompositionUpdate(text.value); - } - else { - var data = text.value; - sendText(data); - if (inComposition.markerRange) { - if (inComposition.context) { - inComposition.markerRange.start.column = inComposition.selectionStart - = inComposition.context.compositionStartOffset; - } - inComposition.markerRange.end.column = inComposition.markerRange.start.column - + lastSelectionEnd - inComposition.selectionStart + lastRestoreEnd; - } - } - }; - var onCompositionEnd = function (e) { - if (!host.onCompositionEnd || host.$readOnly) - return; - inComposition = false; - host.onCompositionEnd(); - host.off("mousedown", cancelComposition); - if (e) - onInput(); - }; - function cancelComposition() { - ignoreFocusEvents = true; - text.blur(); - text.focus(); - ignoreFocusEvents = false; - } - var syncComposition = lang.delayedCall(onCompositionUpdate, 50).schedule.bind(null, null); - function onKeyup(e) { - if (e.keyCode == 27 && text.value.length < text.selectionStart) { - if (!inComposition) - lastValue = text.value; - lastSelectionStart = lastSelectionEnd = -1; - resetSelection(); - } - syncComposition(); - } - event.addListener(text, "compositionstart", onCompositionStart, host); - event.addListener(text, "compositionupdate", onCompositionUpdate, host); - event.addListener(text, "keyup", onKeyup, host); - event.addListener(text, "keydown", syncComposition, host); - event.addListener(text, "compositionend", onCompositionEnd, host); - this.getElement = function () { - return text; - }; - this.setCommandMode = function (value) { - commandMode = value; - text.readOnly = false; - }; - this.setReadOnly = function (readOnly) { - if (!commandMode) - text.readOnly = readOnly; - }; - this.setCopyWithEmptySelection = function (value) { - }; - this.onContextMenu = function (e) { - afterContextMenu = true; - resetSelection(); - host._emit("nativecontextmenu", { target: host, domEvent: e }); - this.moveToMouse(e, true); - }; - this.moveToMouse = function (e, bringToFront) { - if (!tempStyle) - tempStyle = text.style.cssText; - text.style.cssText = (bringToFront ? "z-index:100000;" : "") - + (useragent.isIE ? "opacity:0.1;" : "") - + "text-indent: -" + (lastSelectionStart + lastSelectionEnd) * host.renderer.characterWidth * 0.5 + "px;"; - var rect = host.container.getBoundingClientRect(); - var style = dom.computedStyle(host.container); - var top = rect.top + (parseInt(style.borderTopWidth) || 0); - var left = rect.left + (parseInt(rect.borderLeftWidth) || 0); - var maxTop = rect.bottom - top - text.clientHeight - 2; - var move = function (e) { - dom.translate(text, e.clientX - left - 2, Math.min(e.clientY - top - 2, maxTop)); - }; - move(e); - if (e.type != "mousedown") - return; - host.renderer.$isMousePressed = true; - clearTimeout(closeTimeout); - if (useragent.isWin) - event.capture(host.container, move, onContextMenuClose); - }; - this.onContextMenuClose = onContextMenuClose; - var closeTimeout; - function onContextMenuClose() { - clearTimeout(closeTimeout); - closeTimeout = setTimeout(function () { - if (tempStyle) { - text.style.cssText = tempStyle; - tempStyle = ''; - } - host.renderer.$isMousePressed = false; - if (host.renderer.$keepTextAreaAtCursor) - host.renderer.$moveTextAreaToCursor(); - }, 0); - } - var onContextMenu = function (e) { - host.textInput.onContextMenu(e); - onContextMenuClose(); - }; - event.addListener(text, "mouseup", onContextMenu, host); - event.addListener(text, "mousedown", function (e) { - e.preventDefault(); - onContextMenuClose(); - }, host); - event.addListener(host.renderer.scroller, "contextmenu", onContextMenu, host); - event.addListener(text, "contextmenu", onContextMenu, host); - if (isIOS) - addIosSelectionHandler(parentNode, host, text); - function addIosSelectionHandler(parentNode, host, text) { - var typingResetTimeout = null; - var typing = false; - text.addEventListener("keydown", function (e) { - if (typingResetTimeout) - clearTimeout(typingResetTimeout); - typing = true; - }, true); - text.addEventListener("keyup", function (e) { - typingResetTimeout = setTimeout(function () { - typing = false; - }, 100); - }, true); - var detectArrowKeys = function (e) { - if (document.activeElement !== text) - return; - if (typing || inComposition || host.$mouseHandler.isMousePressed) - return; - if (copied) { - return; - } - var selectionStart = text.selectionStart; - var selectionEnd = text.selectionEnd; - var key = null; - var modifier = 0; - if (selectionStart == 0) { - key = KEYS.up; - } - else if (selectionStart == 1) { - key = KEYS.home; - } - else if (selectionEnd > lastSelectionEnd && lastValue[selectionEnd] == "\n") { - key = KEYS.end; - } - else if (selectionStart < lastSelectionStart && lastValue[selectionStart - 1] == " ") { - key = KEYS.left; - modifier = MODS.option; - } - else if (selectionStart < lastSelectionStart - || (selectionStart == lastSelectionStart - && lastSelectionEnd != lastSelectionStart - && selectionStart == selectionEnd)) { - key = KEYS.left; - } - else if (selectionEnd > lastSelectionEnd && lastValue.slice(0, selectionEnd).split("\n").length > 2) { - key = KEYS.down; - } - else if (selectionEnd > lastSelectionEnd && lastValue[selectionEnd - 1] == " ") { - key = KEYS.right; - modifier = MODS.option; - } - else if (selectionEnd > lastSelectionEnd - || (selectionEnd == lastSelectionEnd - && lastSelectionEnd != lastSelectionStart - && selectionStart == selectionEnd)) { - key = KEYS.right; - } - if (selectionStart !== selectionEnd) - modifier |= MODS.shift; - if (key) { - var result = host.onCommandKey({}, modifier, key); - if (!result && host.commands) { - key = KEYS.keyCodeToString(key); - var command = host.commands.findKeyCommand(modifier, key); - if (command) - host.execCommand(command); - } - lastSelectionStart = selectionStart; - lastSelectionEnd = selectionEnd; - resetSelection(""); - } - }; - document.addEventListener("selectionchange", detectArrowKeys); - host.on("destroy", function () { - document.removeEventListener("selectionchange", detectArrowKeys); - }); - } - this.destroy = function () { - if (text.parentElement) - text.parentElement.removeChild(text); - }; -}; -exports.TextInput = TextInput; -exports.$setUserAgentForTests = function (_isMobile, _isIOS) { - isMobile = _isMobile; - isIOS = _isIOS; -}; - -}); - -ace.define("ace/mouse/default_handlers",["require","exports","module","ace/lib/useragent"], function(require, exports, module){"use strict"; -var useragent = require("../lib/useragent"); -var DRAG_OFFSET = 0; // pixels -var SCROLL_COOLDOWN_T = 550; // milliseconds -var DefaultHandlers = /** @class */ (function () { - function DefaultHandlers(mouseHandler) { - mouseHandler.$clickSelection = null; - var editor = mouseHandler.editor; - editor.setDefaultHandler("mousedown", this.onMouseDown.bind(mouseHandler)); - editor.setDefaultHandler("dblclick", this.onDoubleClick.bind(mouseHandler)); - editor.setDefaultHandler("tripleclick", this.onTripleClick.bind(mouseHandler)); - editor.setDefaultHandler("quadclick", this.onQuadClick.bind(mouseHandler)); - editor.setDefaultHandler("mousewheel", this.onMouseWheel.bind(mouseHandler)); - var exports = ["select", "startSelect", "selectEnd", "selectAllEnd", "selectByWordsEnd", - "selectByLinesEnd", "dragWait", "dragWaitEnd", "focusWait"]; - exports.forEach(function (x) { - mouseHandler[x] = this[x]; - }, this); - mouseHandler.selectByLines = this.extendSelectionBy.bind(mouseHandler, "getLineRange"); - mouseHandler.selectByWords = this.extendSelectionBy.bind(mouseHandler, "getWordRange"); - } - DefaultHandlers.prototype.onMouseDown = function (ev) { - var inSelection = ev.inSelection(); - var pos = ev.getDocumentPosition(); - this.mousedownEvent = ev; - var editor = this.editor; - var button = ev.getButton(); - if (button !== 0) { - var selectionRange = editor.getSelectionRange(); - var selectionEmpty = selectionRange.isEmpty(); - if (selectionEmpty || button == 1) - editor.selection.moveToPosition(pos); - if (button == 2) { - editor.textInput.onContextMenu(ev.domEvent); - if (!useragent.isMozilla) - ev.preventDefault(); - } - return; - } - this.mousedownEvent.time = Date.now(); - if (inSelection && !editor.isFocused()) { - editor.focus(); - if (this.$focusTimeout && !this.$clickSelection && !editor.inMultiSelectMode) { - this.setState("focusWait"); - this.captureMouse(ev); - return; - } - } - this.captureMouse(ev); - this.startSelect(pos, ev.domEvent._clicks > 1); - return ev.preventDefault(); - }; - DefaultHandlers.prototype.startSelect = function (pos, waitForClickSelection) { - pos = pos || this.editor.renderer.screenToTextCoordinates(this.x, this.y); - var editor = this.editor; - if (!this.mousedownEvent) - return; - if (this.mousedownEvent.getShiftKey()) - editor.selection.selectToPosition(pos); - else if (!waitForClickSelection) - editor.selection.moveToPosition(pos); - if (!waitForClickSelection) - this.select(); - editor.setStyle("ace_selecting"); - this.setState("select"); - }; - DefaultHandlers.prototype.select = function () { - var anchor, editor = this.editor; - var cursor = editor.renderer.screenToTextCoordinates(this.x, this.y); - if (this.$clickSelection) { - var cmp = this.$clickSelection.comparePoint(cursor); - if (cmp == -1) { - anchor = this.$clickSelection.end; - } - else if (cmp == 1) { - anchor = this.$clickSelection.start; - } - else { - var orientedRange = calcRangeOrientation(this.$clickSelection, cursor); - cursor = orientedRange.cursor; - anchor = orientedRange.anchor; - } - editor.selection.setSelectionAnchor(anchor.row, anchor.column); - } - editor.selection.selectToPosition(cursor); - editor.renderer.scrollCursorIntoView(); - }; - DefaultHandlers.prototype.extendSelectionBy = function (unitName) { - var anchor, editor = this.editor; - var cursor = editor.renderer.screenToTextCoordinates(this.x, this.y); - var range = editor.selection[unitName](cursor.row, cursor.column); - if (this.$clickSelection) { - var cmpStart = this.$clickSelection.comparePoint(range.start); - var cmpEnd = this.$clickSelection.comparePoint(range.end); - if (cmpStart == -1 && cmpEnd <= 0) { - anchor = this.$clickSelection.end; - if (range.end.row != cursor.row || range.end.column != cursor.column) - cursor = range.start; - } - else if (cmpEnd == 1 && cmpStart >= 0) { - anchor = this.$clickSelection.start; - if (range.start.row != cursor.row || range.start.column != cursor.column) - cursor = range.end; - } - else if (cmpStart == -1 && cmpEnd == 1) { - cursor = range.end; - anchor = range.start; - } - else { - var orientedRange = calcRangeOrientation(this.$clickSelection, cursor); - cursor = orientedRange.cursor; - anchor = orientedRange.anchor; - } - editor.selection.setSelectionAnchor(anchor.row, anchor.column); - } - editor.selection.selectToPosition(cursor); - editor.renderer.scrollCursorIntoView(); - }; - DefaultHandlers.prototype.selectByLinesEnd = function () { - this.$clickSelection = null; - this.editor.unsetStyle("ace_selecting"); - }; - DefaultHandlers.prototype.focusWait = function () { - var distance = calcDistance(this.mousedownEvent.x, this.mousedownEvent.y, this.x, this.y); - var time = Date.now(); - if (distance > DRAG_OFFSET || time - this.mousedownEvent.time > this.$focusTimeout) - this.startSelect(this.mousedownEvent.getDocumentPosition()); - }; - DefaultHandlers.prototype.onDoubleClick = function (ev) { - var pos = ev.getDocumentPosition(); - var editor = this.editor; - var session = editor.session; - var range = session.getBracketRange(pos); - if (range) { - if (range.isEmpty()) { - range.start.column--; - range.end.column++; - } - this.setState("select"); - } - else { - range = editor.selection.getWordRange(pos.row, pos.column); - this.setState("selectByWords"); - } - this.$clickSelection = range; - this.select(); - }; - DefaultHandlers.prototype.onTripleClick = function (ev) { - var pos = ev.getDocumentPosition(); - var editor = this.editor; - this.setState("selectByLines"); - var range = editor.getSelectionRange(); - if (range.isMultiLine() && range.contains(pos.row, pos.column)) { - this.$clickSelection = editor.selection.getLineRange(range.start.row); - this.$clickSelection.end = editor.selection.getLineRange(range.end.row).end; - } - else { - this.$clickSelection = editor.selection.getLineRange(pos.row); - } - this.select(); - }; - DefaultHandlers.prototype.onQuadClick = function (ev) { - var editor = this.editor; - editor.selectAll(); - this.$clickSelection = editor.getSelectionRange(); - this.setState("selectAll"); - }; - DefaultHandlers.prototype.onMouseWheel = function (ev) { - if (ev.getAccelKey()) - return; - if (ev.getShiftKey() && ev.wheelY && !ev.wheelX) { - ev.wheelX = ev.wheelY; - ev.wheelY = 0; - } - var editor = this.editor; - if (!this.$lastScroll) - this.$lastScroll = { t: 0, vx: 0, vy: 0, allowed: 0 }; - var prevScroll = this.$lastScroll; - var t = ev.domEvent.timeStamp; - var dt = t - prevScroll.t; - var vx = dt ? ev.wheelX / dt : prevScroll.vx; - var vy = dt ? ev.wheelY / dt : prevScroll.vy; - if (dt < SCROLL_COOLDOWN_T) { - vx = (vx + prevScroll.vx) / 2; - vy = (vy + prevScroll.vy) / 2; - } - var direction = Math.abs(vx / vy); - var canScroll = false; - if (direction >= 1 && editor.renderer.isScrollableBy(ev.wheelX * ev.speed, 0)) - canScroll = true; - if (direction <= 1 && editor.renderer.isScrollableBy(0, ev.wheelY * ev.speed)) - canScroll = true; - if (canScroll) { - prevScroll.allowed = t; - } - else if (t - prevScroll.allowed < SCROLL_COOLDOWN_T) { - var isSlower = Math.abs(vx) <= 1.5 * Math.abs(prevScroll.vx) - && Math.abs(vy) <= 1.5 * Math.abs(prevScroll.vy); - if (isSlower) { - canScroll = true; - prevScroll.allowed = t; - } - else { - prevScroll.allowed = 0; - } - } - prevScroll.t = t; - prevScroll.vx = vx; - prevScroll.vy = vy; - if (canScroll) { - editor.renderer.scrollBy(ev.wheelX * ev.speed, ev.wheelY * ev.speed); - return ev.stop(); - } - }; - return DefaultHandlers; -}()); -DefaultHandlers.prototype.selectEnd = DefaultHandlers.prototype.selectByLinesEnd; -DefaultHandlers.prototype.selectAllEnd = DefaultHandlers.prototype.selectByLinesEnd; -DefaultHandlers.prototype.selectByWordsEnd = DefaultHandlers.prototype.selectByLinesEnd; -exports.DefaultHandlers = DefaultHandlers; -function calcDistance(ax, ay, bx, by) { - return Math.sqrt(Math.pow(bx - ax, 2) + Math.pow(by - ay, 2)); -} -function calcRangeOrientation(range, cursor) { - if (range.start.row == range.end.row) - var cmp = 2 * cursor.column - range.start.column - range.end.column; - else if (range.start.row == range.end.row - 1 && !range.start.column && !range.end.column) - var cmp = cursor.column - 4; - else - var cmp = 2 * cursor.row - range.start.row - range.end.row; - if (cmp < 0) - return { cursor: range.start, anchor: range.end }; - else - return { cursor: range.end, anchor: range.start }; -} - -}); - -ace.define("ace/tooltip",["require","exports","module","ace/lib/dom","ace/lib/event","ace/range"], function(require, exports, module){"use strict"; -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - if (typeof b !== "function" && b !== null) - throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var __values = (this && this.__values) || function(o) { - var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0; - if (m) return m.call(o); - if (o && typeof o.length === "number") return { - next: function () { - if (o && i >= o.length) o = void 0; - return { value: o && o[i++], done: !o }; - } - }; - throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined."); -}; -var dom = require("./lib/dom"); -var event = require("./lib/event"); -var Range = require("./range").Range; -var CLASSNAME = "ace_tooltip"; -var Tooltip = /** @class */ (function () { - function Tooltip(parentNode) { - this.isOpen = false; - this.$element = null; - this.$parentNode = parentNode; - } - Tooltip.prototype.$init = function () { - this.$element = dom.createElement("div"); - this.$element.className = CLASSNAME; - this.$element.style.display = "none"; - this.$parentNode.appendChild(this.$element); - return this.$element; - }; - Tooltip.prototype.getElement = function () { - return this.$element || this.$init(); - }; - Tooltip.prototype.setText = function (text) { - this.getElement().textContent = text; - }; - Tooltip.prototype.setHtml = function (html) { - this.getElement().innerHTML = html; - }; - Tooltip.prototype.setPosition = function (x, y) { - this.getElement().style.left = x + "px"; - this.getElement().style.top = y + "px"; - }; - Tooltip.prototype.setClassName = function (className) { - dom.addCssClass(this.getElement(), className); - }; - Tooltip.prototype.setTheme = function (theme) { - this.$element.className = CLASSNAME + " " + - (theme.isDark ? "ace_dark " : "") + (theme.cssClass || ""); - }; - Tooltip.prototype.show = function (text, x, y) { - if (text != null) - this.setText(text); - if (x != null && y != null) - this.setPosition(x, y); - if (!this.isOpen) { - this.getElement().style.display = "block"; - this.isOpen = true; - } - }; - Tooltip.prototype.hide = function () { - if (this.isOpen) { - this.getElement().style.display = "none"; - this.getElement().className = CLASSNAME; - this.isOpen = false; - } - }; - Tooltip.prototype.getHeight = function () { - return this.getElement().offsetHeight; - }; - Tooltip.prototype.getWidth = function () { - return this.getElement().offsetWidth; - }; - Tooltip.prototype.destroy = function () { - this.isOpen = false; - if (this.$element && this.$element.parentNode) { - this.$element.parentNode.removeChild(this.$element); - } - }; - return Tooltip; -}()); -var PopupManager = /** @class */ (function () { - function PopupManager() { - this.popups = []; - } - PopupManager.prototype.addPopup = function (popup) { - this.popups.push(popup); - this.updatePopups(); - }; - PopupManager.prototype.removePopup = function (popup) { - var index = this.popups.indexOf(popup); - if (index !== -1) { - this.popups.splice(index, 1); - this.updatePopups(); - } - }; - PopupManager.prototype.updatePopups = function () { - var e_1, _a, e_2, _b; - this.popups.sort(function (a, b) { return b.priority - a.priority; }); - var visiblepopups = []; - try { - for (var _c = __values(this.popups), _d = _c.next(); !_d.done; _d = _c.next()) { - var popup = _d.value; - var shouldDisplay = true; - try { - for (var visiblepopups_1 = (e_2 = void 0, __values(visiblepopups)), visiblepopups_1_1 = visiblepopups_1.next(); !visiblepopups_1_1.done; visiblepopups_1_1 = visiblepopups_1.next()) { - var visiblePopup = visiblepopups_1_1.value; - if (this.doPopupsOverlap(visiblePopup, popup)) { - shouldDisplay = false; - break; - } - } - } - catch (e_2_1) { e_2 = { error: e_2_1 }; } - finally { - try { - if (visiblepopups_1_1 && !visiblepopups_1_1.done && (_b = visiblepopups_1.return)) _b.call(visiblepopups_1); - } - finally { if (e_2) throw e_2.error; } - } - if (shouldDisplay) { - visiblepopups.push(popup); - } - else { - popup.hide(); - } - } - } - catch (e_1_1) { e_1 = { error: e_1_1 }; } - finally { - try { - if (_d && !_d.done && (_a = _c.return)) _a.call(_c); - } - finally { if (e_1) throw e_1.error; } - } - }; - PopupManager.prototype.doPopupsOverlap = function (popupA, popupB) { - var rectA = popupA.getElement().getBoundingClientRect(); - var rectB = popupB.getElement().getBoundingClientRect(); - return (rectA.left < rectB.right && rectA.right > rectB.left && rectA.top < rectB.bottom && rectA.bottom - > rectB.top); - }; - return PopupManager; -}()); -var popupManager = new PopupManager(); -exports.popupManager = popupManager; -exports.Tooltip = Tooltip; -var HoverTooltip = /** @class */ (function (_super) { - __extends(HoverTooltip, _super); - function HoverTooltip(parentNode) { - if (parentNode === void 0) { parentNode = document.body; } - var _this = _super.call(this, parentNode) || this; - _this.timeout = undefined; - _this.lastT = 0; - _this.idleTime = 350; - _this.lastEvent = undefined; - _this.onMouseOut = _this.onMouseOut.bind(_this); - _this.onMouseMove = _this.onMouseMove.bind(_this); - _this.waitForHover = _this.waitForHover.bind(_this); - _this.hide = _this.hide.bind(_this); - var el = _this.getElement(); - el.style.whiteSpace = "pre-wrap"; - el.style.pointerEvents = "auto"; - el.addEventListener("mouseout", _this.onMouseOut); - el.tabIndex = -1; - el.addEventListener("blur", function () { - if (!el.contains(document.activeElement)) - this.hide(); - }.bind(_this)); - el.addEventListener("wheel", event.stopPropagation); - return _this; - } - HoverTooltip.prototype.addToEditor = function (editor) { - editor.on("mousemove", this.onMouseMove); - editor.on("mousedown", this.hide); - editor.renderer.getMouseEventTarget().addEventListener("mouseout", this.onMouseOut, true); - }; - HoverTooltip.prototype.removeFromEditor = function (editor) { - editor.off("mousemove", this.onMouseMove); - editor.off("mousedown", this.hide); - editor.renderer.getMouseEventTarget().removeEventListener("mouseout", this.onMouseOut, true); - if (this.timeout) { - clearTimeout(this.timeout); - this.timeout = null; - } - }; - HoverTooltip.prototype.onMouseMove = function (e, editor) { - this.lastEvent = e; - this.lastT = Date.now(); - var isMousePressed = editor.$mouseHandler.isMousePressed; - if (this.isOpen) { - var pos = this.lastEvent && this.lastEvent.getDocumentPosition(); - if (!this.range - || !this.range.contains(pos.row, pos.column) - || isMousePressed - || this.isOutsideOfText(this.lastEvent)) { - this.hide(); - } - } - if (this.timeout || isMousePressed) - return; - this.lastEvent = e; - this.timeout = setTimeout(this.waitForHover, this.idleTime); - }; - HoverTooltip.prototype.waitForHover = function () { - if (this.timeout) - clearTimeout(this.timeout); - var dt = Date.now() - this.lastT; - if (this.idleTime - dt > 10) { - this.timeout = setTimeout(this.waitForHover, this.idleTime - dt); - return; - } - this.timeout = null; - if (this.lastEvent && !this.isOutsideOfText(this.lastEvent)) { - this.$gatherData(this.lastEvent, this.lastEvent.editor); - } - }; - HoverTooltip.prototype.isOutsideOfText = function (e) { - var editor = e.editor; - var docPos = e.getDocumentPosition(); - var line = editor.session.getLine(docPos.row); - if (docPos.column == line.length) { - var screenPos = editor.renderer.pixelToScreenCoordinates(e.clientX, e.clientY); - var clippedPos = editor.session.documentToScreenPosition(docPos.row, docPos.column); - if (clippedPos.column != screenPos.column - || clippedPos.row != screenPos.row) { - return true; - } - } - return false; - }; - HoverTooltip.prototype.setDataProvider = function (value) { - this.$gatherData = value; - }; - HoverTooltip.prototype.showForRange = function (editor, range, domNode, startingEvent) { - var MARGIN = 10; - if (startingEvent && startingEvent != this.lastEvent) - return; - if (this.isOpen && document.activeElement == this.getElement()) - return; - var renderer = editor.renderer; - if (!this.isOpen) { - popupManager.addPopup(this); - this.$registerCloseEvents(); - this.setTheme(renderer.theme); - } - this.isOpen = true; - this.addMarker(range, editor.session); - this.range = Range.fromPoints(range.start, range.end); - var position = renderer.textToScreenCoordinates(range.start.row, range.start.column); - var rect = renderer.scroller.getBoundingClientRect(); - if (position.pageX < rect.left) - position.pageX = rect.left; - var element = this.getElement(); - element.innerHTML = ""; - element.appendChild(domNode); - element.style.maxHeight = ""; - element.style.display = "block"; - var labelHeight = element.clientHeight; - var labelWidth = element.clientWidth; - var spaceBelow = window.innerHeight - position.pageY - renderer.lineHeight; - var isAbove = true; - if (position.pageY - labelHeight < 0 && position.pageY < spaceBelow) { - isAbove = false; - } - element.style.maxHeight = (isAbove ? position.pageY : spaceBelow) - MARGIN + "px"; - element.style.top = isAbove ? "" : position.pageY + renderer.lineHeight + "px"; - element.style.bottom = isAbove ? window.innerHeight - position.pageY + "px" : ""; - element.style.left = Math.min(position.pageX, window.innerWidth - labelWidth - MARGIN) + "px"; - }; - HoverTooltip.prototype.addMarker = function (range, session) { - if (this.marker) { - this.$markerSession.removeMarker(this.marker); - } - this.$markerSession = session; - this.marker = session && session.addMarker(range, "ace_highlight-marker", "text"); - }; - HoverTooltip.prototype.hide = function (e) { - if (!e && document.activeElement == this.getElement()) - return; - if (e && e.target && (e.type != "keydown" || e.ctrlKey || e.metaKey) && this.$element.contains(e.target)) - return; - this.lastEvent = null; - if (this.timeout) - clearTimeout(this.timeout); - this.timeout = null; - this.addMarker(null); - if (this.isOpen) { - this.$removeCloseEvents(); - this.getElement().style.display = "none"; - this.isOpen = false; - popupManager.removePopup(this); - } - }; - HoverTooltip.prototype.$registerCloseEvents = function () { - window.addEventListener("keydown", this.hide, true); - window.addEventListener("wheel", this.hide, true); - window.addEventListener("mousedown", this.hide, true); - }; - HoverTooltip.prototype.$removeCloseEvents = function () { - window.removeEventListener("keydown", this.hide, true); - window.removeEventListener("wheel", this.hide, true); - window.removeEventListener("mousedown", this.hide, true); - }; - HoverTooltip.prototype.onMouseOut = function (e) { - if (this.timeout) { - clearTimeout(this.timeout); - this.timeout = null; - } - this.lastEvent = null; - if (!this.isOpen) - return; - if (!e.relatedTarget || this.getElement().contains(e.relatedTarget)) - return; - if (e && e.currentTarget.contains(e.relatedTarget)) - return; - if (!e.relatedTarget.classList.contains("ace_content")) - this.hide(); - }; - return HoverTooltip; -}(Tooltip)); -exports.HoverTooltip = HoverTooltip; - -}); - -ace.define("ace/mouse/default_gutter_handler",["require","exports","module","ace/lib/dom","ace/lib/event","ace/tooltip","ace/config"], function(require, exports, module){"use strict"; -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - if (typeof b !== "function" && b !== null) - throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var __values = (this && this.__values) || function(o) { - var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0; - if (m) return m.call(o); - if (o && typeof o.length === "number") return { - next: function () { - if (o && i >= o.length) o = void 0; - return { value: o && o[i++], done: !o }; - } - }; - throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined."); -}; -var dom = require("../lib/dom"); -var event = require("../lib/event"); -var Tooltip = require("../tooltip").Tooltip; -var nls = require("../config").nls; -function GutterHandler(mouseHandler) { - var editor = mouseHandler.editor; - var gutter = editor.renderer.$gutterLayer; - var tooltip = new GutterTooltip(editor); - mouseHandler.editor.setDefaultHandler("guttermousedown", function (e) { - if (!editor.isFocused() || e.getButton() != 0) - return; - var gutterRegion = gutter.getRegion(e); - if (gutterRegion == "foldWidgets") - return; - var row = e.getDocumentPosition().row; - var selection = editor.session.selection; - if (e.getShiftKey()) - selection.selectTo(row, 0); - else { - if (e.domEvent.detail == 2) { - editor.selectAll(); - return e.preventDefault(); - } - mouseHandler.$clickSelection = editor.selection.getLineRange(row); - } - mouseHandler.setState("selectByLines"); - mouseHandler.captureMouse(e); - return e.preventDefault(); - }); - var tooltipTimeout, mouseEvent; - function showTooltip() { - var row = mouseEvent.getDocumentPosition().row; - var maxRow = editor.session.getLength(); - if (row == maxRow) { - var screenRow = editor.renderer.pixelToScreenCoordinates(0, mouseEvent.y).row; - var pos = mouseEvent.$pos; - if (screenRow > editor.session.documentToScreenRow(pos.row, pos.column)) - return hideTooltip(); - } - tooltip.showTooltip(row); - if (!tooltip.isOpen) - return; - editor.on("mousewheel", hideTooltip); - if (mouseHandler.$tooltipFollowsMouse) { - moveTooltip(mouseEvent); - } - else { - var gutterRow = mouseEvent.getGutterRow(); - var gutterCell = gutter.$lines.get(gutterRow); - if (gutterCell) { - var gutterElement = gutterCell.element.querySelector(".ace_gutter_annotation"); - var rect = gutterElement.getBoundingClientRect(); - var style = tooltip.getElement().style; - style.left = rect.right + "px"; - style.top = rect.bottom + "px"; - } - else { - moveTooltip(mouseEvent); - } - } - } - function hideTooltip() { - if (tooltipTimeout) - tooltipTimeout = clearTimeout(tooltipTimeout); - if (tooltip.isOpen) { - tooltip.hideTooltip(); - editor.off("mousewheel", hideTooltip); - } - } - function moveTooltip(e) { - tooltip.setPosition(e.x, e.y); - } - mouseHandler.editor.setDefaultHandler("guttermousemove", function (e) { - var target = e.domEvent.target || e.domEvent.srcElement; - if (dom.hasCssClass(target, "ace_fold-widget")) - return hideTooltip(); - if (tooltip.isOpen && mouseHandler.$tooltipFollowsMouse) - moveTooltip(e); - mouseEvent = e; - if (tooltipTimeout) - return; - tooltipTimeout = setTimeout(function () { - tooltipTimeout = null; - if (mouseEvent && !mouseHandler.isMousePressed) - showTooltip(); - else - hideTooltip(); - }, 50); - }); - event.addListener(editor.renderer.$gutter, "mouseout", function (e) { - mouseEvent = null; - if (!tooltip.isOpen || tooltipTimeout) - return; - tooltipTimeout = setTimeout(function () { - tooltipTimeout = null; - hideTooltip(); - }, 50); - }, editor); - editor.on("changeSession", hideTooltip); - editor.on("input", hideTooltip); -} -exports.GutterHandler = GutterHandler; -var GutterTooltip = /** @class */ (function (_super) { - __extends(GutterTooltip, _super); - function GutterTooltip(editor) { - var _this = _super.call(this, editor.container) || this; - _this.editor = editor; - return _this; - } - GutterTooltip.prototype.setPosition = function (x, y) { - var windowWidth = window.innerWidth || document.documentElement.clientWidth; - var windowHeight = window.innerHeight || document.documentElement.clientHeight; - var width = this.getWidth(); - var height = this.getHeight(); - x += 15; - y += 15; - if (x + width > windowWidth) { - x -= (x + width) - windowWidth; - } - if (y + height > windowHeight) { - y -= 20 + height; - } - Tooltip.prototype.setPosition.call(this, x, y); - }; - Object.defineProperty(GutterTooltip, "annotationLabels", { - get: function () { - return { - error: { singular: nls("error"), plural: nls("errors") }, - warning: { singular: nls("warning"), plural: nls("warnings") }, - info: { singular: nls("information message"), plural: nls("information messages") } - }; - }, - enumerable: false, - configurable: true - }); - GutterTooltip.prototype.showTooltip = function (row) { - var gutter = this.editor.renderer.$gutterLayer; - var annotationsInRow = gutter.$annotations[row]; - var annotation; - if (annotationsInRow) - annotation = { text: Array.from(annotationsInRow.text), type: Array.from(annotationsInRow.type) }; - else - annotation = { text: [], type: [] }; - var fold = gutter.session.getFoldLine(row); - if (fold && gutter.$showFoldedAnnotations) { - var annotationsInFold = { error: [], warning: [], info: [] }; - var mostSevereAnnotationInFoldType; - for (var i = row + 1; i <= fold.end.row; i++) { - if (!gutter.$annotations[i]) - continue; - for (var j = 0; j < gutter.$annotations[i].text.length; j++) { - var annotationType = gutter.$annotations[i].type[j]; - annotationsInFold[annotationType].push(gutter.$annotations[i].text[j]); - if (annotationType === "error") { - mostSevereAnnotationInFoldType = "error_fold"; - continue; - } - if (annotationType === "warning") { - mostSevereAnnotationInFoldType = "warning_fold"; - continue; - } - } - } - if (mostSevereAnnotationInFoldType === "error_fold" || mostSevereAnnotationInFoldType === "warning_fold") { - var summaryFoldedAnnotations = "".concat(GutterTooltip.annotationsToSummaryString(annotationsInFold), " in folded code."); - annotation.text.push(summaryFoldedAnnotations); - annotation.type.push(mostSevereAnnotationInFoldType); - } - } - if (annotation.text.length === 0) - return this.hide(); - var annotationMessages = { error: [], warning: [], info: [] }; - var iconClassName = gutter.$useSvgGutterIcons ? "ace_icon_svg" : "ace_icon"; - for (var i = 0; i < annotation.text.length; i++) { - var line = " ").concat(annotation.text[i]); - annotationMessages[annotation.type[i].replace("_fold", "")].push(line); - } - var tooltipContent = [].concat(annotationMessages.error, annotationMessages.warning, annotationMessages.info).join("
    "); - this.setHtml(tooltipContent); - this.$element.setAttribute("aria-live", "polite"); - if (!this.isOpen) { - this.setTheme(this.editor.renderer.theme); - this.setClassName("ace_gutter-tooltip"); - } - this.show(); - this.editor._signal("showGutterTooltip", this); - }; - GutterTooltip.prototype.hideTooltip = function () { - this.$element.removeAttribute("aria-live"); - this.hide(); - this.editor._signal("hideGutterTooltip", this); - }; - GutterTooltip.annotationsToSummaryString = function (annotations) { - var e_1, _a; - var summary = []; - var annotationTypes = ['error', 'warning', 'info']; - try { - for (var annotationTypes_1 = __values(annotationTypes), annotationTypes_1_1 = annotationTypes_1.next(); !annotationTypes_1_1.done; annotationTypes_1_1 = annotationTypes_1.next()) { - var annotationType = annotationTypes_1_1.value; - if (!annotations[annotationType].length) - continue; - var label = annotations[annotationType].length === 1 ? GutterTooltip.annotationLabels[annotationType].singular : GutterTooltip.annotationLabels[annotationType].plural; - summary.push("".concat(annotations[annotationType].length, " ").concat(label)); - } - } - catch (e_1_1) { e_1 = { error: e_1_1 }; } - finally { - try { - if (annotationTypes_1_1 && !annotationTypes_1_1.done && (_a = annotationTypes_1.return)) _a.call(annotationTypes_1); - } - finally { if (e_1) throw e_1.error; } - } - return summary.join(", "); - }; - return GutterTooltip; -}(Tooltip)); -exports.GutterTooltip = GutterTooltip; - -}); - -ace.define("ace/mouse/mouse_event",["require","exports","module","ace/lib/event","ace/lib/useragent"], function(require, exports, module){"use strict"; -var event = require("../lib/event"); -var useragent = require("../lib/useragent"); -var MouseEvent = /** @class */ (function () { - function MouseEvent(domEvent, editor) { - this.domEvent = domEvent; - this.editor = editor; - this.x = this.clientX = domEvent.clientX; - this.y = this.clientY = domEvent.clientY; - this.$pos = null; - this.$inSelection = null; - this.propagationStopped = false; - this.defaultPrevented = false; - } - MouseEvent.prototype.stopPropagation = function () { - event.stopPropagation(this.domEvent); - this.propagationStopped = true; - }; - MouseEvent.prototype.preventDefault = function () { - event.preventDefault(this.domEvent); - this.defaultPrevented = true; - }; - MouseEvent.prototype.stop = function () { - this.stopPropagation(); - this.preventDefault(); - }; - MouseEvent.prototype.getDocumentPosition = function () { - if (this.$pos) - return this.$pos; - this.$pos = this.editor.renderer.screenToTextCoordinates(this.clientX, this.clientY); - return this.$pos; - }; - MouseEvent.prototype.getGutterRow = function () { - var documentRow = this.getDocumentPosition().row; - var screenRow = this.editor.session.documentToScreenRow(documentRow, 0); - var screenTopRow = this.editor.session.documentToScreenRow(this.editor.renderer.$gutterLayer.$lines.get(0).row, 0); - return screenRow - screenTopRow; - }; - MouseEvent.prototype.inSelection = function () { - if (this.$inSelection !== null) - return this.$inSelection; - var editor = this.editor; - var selectionRange = editor.getSelectionRange(); - if (selectionRange.isEmpty()) - this.$inSelection = false; - else { - var pos = this.getDocumentPosition(); - this.$inSelection = selectionRange.contains(pos.row, pos.column); - } - return this.$inSelection; - }; - MouseEvent.prototype.getButton = function () { - return event.getButton(this.domEvent); - }; - MouseEvent.prototype.getShiftKey = function () { - return this.domEvent.shiftKey; - }; - MouseEvent.prototype.getAccelKey = function () { - return useragent.isMac ? this.domEvent.metaKey : this.domEvent.ctrlKey; - }; - return MouseEvent; -}()); -exports.MouseEvent = MouseEvent; - -}); - -ace.define("ace/mouse/dragdrop_handler",["require","exports","module","ace/lib/dom","ace/lib/event","ace/lib/useragent"], function(require, exports, module){"use strict"; -var dom = require("../lib/dom"); -var event = require("../lib/event"); -var useragent = require("../lib/useragent"); -var AUTOSCROLL_DELAY = 200; -var SCROLL_CURSOR_DELAY = 200; -var SCROLL_CURSOR_HYSTERESIS = 5; -function DragdropHandler(mouseHandler) { - var editor = mouseHandler.editor; - var dragImage = dom.createElement("div"); - dragImage.style.cssText = "top:-100px;position:absolute;z-index:2147483647;opacity:0.5"; - dragImage.textContent = "\xa0"; - var exports = ["dragWait", "dragWaitEnd", "startDrag", "dragReadyEnd", "onMouseDrag"]; - exports.forEach(function (x) { - mouseHandler[x] = this[x]; - }, this); - editor.on("mousedown", this.onMouseDown.bind(mouseHandler)); - var mouseTarget = editor.container; - var dragSelectionMarker, x, y; - var timerId, range; - var dragCursor, counter = 0; - var dragOperation; - var isInternal; - var autoScrollStartTime; - var cursorMovedTime; - var cursorPointOnCaretMoved; - this.onDragStart = function (e) { - if (this.cancelDrag || !mouseTarget.draggable) { - var self = this; - setTimeout(function () { - self.startSelect(); - self.captureMouse(e); - }, 0); - return e.preventDefault(); - } - range = editor.getSelectionRange(); - var dataTransfer = e.dataTransfer; - dataTransfer.effectAllowed = editor.getReadOnly() ? "copy" : "copyMove"; - editor.container.appendChild(dragImage); - dataTransfer.setDragImage && dataTransfer.setDragImage(dragImage, 0, 0); - setTimeout(function () { - editor.container.removeChild(dragImage); - }); - dataTransfer.clearData(); - dataTransfer.setData("Text", editor.session.getTextRange()); - isInternal = true; - this.setState("drag"); - }; - this.onDragEnd = function (e) { - mouseTarget.draggable = false; - isInternal = false; - this.setState(null); - if (!editor.getReadOnly()) { - var dropEffect = e.dataTransfer.dropEffect; - if (!dragOperation && dropEffect == "move") - editor.session.remove(editor.getSelectionRange()); - editor.$resetCursorStyle(); - } - this.editor.unsetStyle("ace_dragging"); - this.editor.renderer.setCursorStyle(""); - }; - this.onDragEnter = function (e) { - if (editor.getReadOnly() || !canAccept(e.dataTransfer)) - return; - x = e.clientX; - y = e.clientY; - if (!dragSelectionMarker) - addDragMarker(); - counter++; - e.dataTransfer.dropEffect = dragOperation = getDropEffect(e); - return event.preventDefault(e); - }; - this.onDragOver = function (e) { - if (editor.getReadOnly() || !canAccept(e.dataTransfer)) - return; - x = e.clientX; - y = e.clientY; - if (!dragSelectionMarker) { - addDragMarker(); - counter++; - } - if (onMouseMoveTimer !== null) - onMouseMoveTimer = null; - e.dataTransfer.dropEffect = dragOperation = getDropEffect(e); - return event.preventDefault(e); - }; - this.onDragLeave = function (e) { - counter--; - if (counter <= 0 && dragSelectionMarker) { - clearDragMarker(); - dragOperation = null; - return event.preventDefault(e); - } - }; - this.onDrop = function (e) { - if (!dragCursor) - return; - var dataTransfer = e.dataTransfer; - if (isInternal) { - switch (dragOperation) { - case "move": - if (range.contains(dragCursor.row, dragCursor.column)) { - range = { - start: dragCursor, - end: dragCursor - }; - } - else { - range = editor.moveText(range, dragCursor); - } - break; - case "copy": - range = editor.moveText(range, dragCursor, true); - break; - } - } - else { - var dropData = dataTransfer.getData('Text'); - range = { - start: dragCursor, - end: editor.session.insert(dragCursor, dropData) - }; - editor.focus(); - dragOperation = null; - } - clearDragMarker(); - return event.preventDefault(e); - }; - event.addListener(mouseTarget, "dragstart", this.onDragStart.bind(mouseHandler), editor); - event.addListener(mouseTarget, "dragend", this.onDragEnd.bind(mouseHandler), editor); - event.addListener(mouseTarget, "dragenter", this.onDragEnter.bind(mouseHandler), editor); - event.addListener(mouseTarget, "dragover", this.onDragOver.bind(mouseHandler), editor); - event.addListener(mouseTarget, "dragleave", this.onDragLeave.bind(mouseHandler), editor); - event.addListener(mouseTarget, "drop", this.onDrop.bind(mouseHandler), editor); - function scrollCursorIntoView(cursor, prevCursor) { - var now = Date.now(); - var vMovement = !prevCursor || cursor.row != prevCursor.row; - var hMovement = !prevCursor || cursor.column != prevCursor.column; - if (!cursorMovedTime || vMovement || hMovement) { - editor.moveCursorToPosition(cursor); - cursorMovedTime = now; - cursorPointOnCaretMoved = { x: x, y: y }; - } - else { - var distance = calcDistance(cursorPointOnCaretMoved.x, cursorPointOnCaretMoved.y, x, y); - if (distance > SCROLL_CURSOR_HYSTERESIS) { - cursorMovedTime = null; - } - else if (now - cursorMovedTime >= SCROLL_CURSOR_DELAY) { - editor.renderer.scrollCursorIntoView(); - cursorMovedTime = null; - } - } - } - function autoScroll(cursor, prevCursor) { - var now = Date.now(); - var lineHeight = editor.renderer.layerConfig.lineHeight; - var characterWidth = editor.renderer.layerConfig.characterWidth; - var editorRect = editor.renderer.scroller.getBoundingClientRect(); - var offsets = { - x: { - left: x - editorRect.left, - right: editorRect.right - x - }, - y: { - top: y - editorRect.top, - bottom: editorRect.bottom - y - } - }; - var nearestXOffset = Math.min(offsets.x.left, offsets.x.right); - var nearestYOffset = Math.min(offsets.y.top, offsets.y.bottom); - var scrollCursor = { row: cursor.row, column: cursor.column }; - if (nearestXOffset / characterWidth <= 2) { - scrollCursor.column += (offsets.x.left < offsets.x.right ? -3 : +2); - } - if (nearestYOffset / lineHeight <= 1) { - scrollCursor.row += (offsets.y.top < offsets.y.bottom ? -1 : +1); - } - var vScroll = cursor.row != scrollCursor.row; - var hScroll = cursor.column != scrollCursor.column; - var vMovement = !prevCursor || cursor.row != prevCursor.row; - if (vScroll || (hScroll && !vMovement)) { - if (!autoScrollStartTime) - autoScrollStartTime = now; - else if (now - autoScrollStartTime >= AUTOSCROLL_DELAY) - editor.renderer.scrollCursorIntoView(scrollCursor); - } - else { - autoScrollStartTime = null; - } - } - function onDragInterval() { - var prevCursor = dragCursor; - dragCursor = editor.renderer.screenToTextCoordinates(x, y); - scrollCursorIntoView(dragCursor, prevCursor); - autoScroll(dragCursor, prevCursor); - } - function addDragMarker() { - range = editor.selection.toOrientedRange(); - dragSelectionMarker = editor.session.addMarker(range, "ace_selection", editor.getSelectionStyle()); - editor.clearSelection(); - if (editor.isFocused()) - editor.renderer.$cursorLayer.setBlinking(false); - clearInterval(timerId); - onDragInterval(); - timerId = setInterval(onDragInterval, 20); - counter = 0; - event.addListener(document, "mousemove", onMouseMove); - } - function clearDragMarker() { - clearInterval(timerId); - editor.session.removeMarker(dragSelectionMarker); - dragSelectionMarker = null; - editor.selection.fromOrientedRange(range); - if (editor.isFocused() && !isInternal) - editor.$resetCursorStyle(); - range = null; - dragCursor = null; - counter = 0; - autoScrollStartTime = null; - cursorMovedTime = null; - event.removeListener(document, "mousemove", onMouseMove); - } - var onMouseMoveTimer = null; - function onMouseMove() { - if (onMouseMoveTimer == null) { - onMouseMoveTimer = setTimeout(function () { - if (onMouseMoveTimer != null && dragSelectionMarker) - clearDragMarker(); - }, 20); - } - } - function canAccept(dataTransfer) { - var types = dataTransfer.types; - return !types || Array.prototype.some.call(types, function (type) { - return type == 'text/plain' || type == 'Text'; - }); - } - function getDropEffect(e) { - var copyAllowed = ['copy', 'copymove', 'all', 'uninitialized']; - var moveAllowed = ['move', 'copymove', 'linkmove', 'all', 'uninitialized']; - var copyModifierState = useragent.isMac ? e.altKey : e.ctrlKey; - var effectAllowed = "uninitialized"; - try { - effectAllowed = e.dataTransfer.effectAllowed.toLowerCase(); - } - catch (e) { } - var dropEffect = "none"; - if (copyModifierState && copyAllowed.indexOf(effectAllowed) >= 0) - dropEffect = "copy"; - else if (moveAllowed.indexOf(effectAllowed) >= 0) - dropEffect = "move"; - else if (copyAllowed.indexOf(effectAllowed) >= 0) - dropEffect = "copy"; - return dropEffect; - } -} -(function () { - this.dragWait = function () { - var interval = Date.now() - this.mousedownEvent.time; - if (interval > this.editor.getDragDelay()) - this.startDrag(); - }; - this.dragWaitEnd = function () { - var target = this.editor.container; - target.draggable = false; - this.startSelect(this.mousedownEvent.getDocumentPosition()); - this.selectEnd(); - }; - this.dragReadyEnd = function (e) { - this.editor.$resetCursorStyle(); - this.editor.unsetStyle("ace_dragging"); - this.editor.renderer.setCursorStyle(""); - this.dragWaitEnd(); - }; - this.startDrag = function () { - this.cancelDrag = false; - var editor = this.editor; - var target = editor.container; - target.draggable = true; - editor.renderer.$cursorLayer.setBlinking(false); - editor.setStyle("ace_dragging"); - var cursorStyle = useragent.isWin ? "default" : "move"; - editor.renderer.setCursorStyle(cursorStyle); - this.setState("dragReady"); - }; - this.onMouseDrag = function (e) { - var target = this.editor.container; - if (useragent.isIE && this.state == "dragReady") { - var distance = calcDistance(this.mousedownEvent.x, this.mousedownEvent.y, this.x, this.y); - if (distance > 3) - target.dragDrop(); - } - if (this.state === "dragWait") { - var distance = calcDistance(this.mousedownEvent.x, this.mousedownEvent.y, this.x, this.y); - if (distance > 0) { - target.draggable = false; - this.startSelect(this.mousedownEvent.getDocumentPosition()); - } - } - }; - this.onMouseDown = function (e) { - if (!this.$dragEnabled) - return; - this.mousedownEvent = e; - var editor = this.editor; - var inSelection = e.inSelection(); - var button = e.getButton(); - var clickCount = e.domEvent.detail || 1; - if (clickCount === 1 && button === 0 && inSelection) { - if (e.editor.inMultiSelectMode && (e.getAccelKey() || e.getShiftKey())) - return; - this.mousedownEvent.time = Date.now(); - var eventTarget = e.domEvent.target || e.domEvent.srcElement; - if ("unselectable" in eventTarget) - eventTarget.unselectable = "on"; - if (editor.getDragDelay()) { - if (useragent.isWebKit) { - this.cancelDrag = true; - var mouseTarget = editor.container; - mouseTarget.draggable = true; - } - this.setState("dragWait"); - } - else { - this.startDrag(); - } - this.captureMouse(e, this.onMouseDrag.bind(this)); - e.defaultPrevented = true; - } - }; -}).call(DragdropHandler.prototype); -function calcDistance(ax, ay, bx, by) { - return Math.sqrt(Math.pow(bx - ax, 2) + Math.pow(by - ay, 2)); -} -exports.DragdropHandler = DragdropHandler; - -}); - -ace.define("ace/mouse/touch_handler",["require","exports","module","ace/mouse/mouse_event","ace/lib/event","ace/lib/dom"], function(require, exports, module){"use strict"; -var MouseEvent = require("./mouse_event").MouseEvent; -var event = require("../lib/event"); -var dom = require("../lib/dom"); -exports.addTouchListeners = function (el, editor) { - var mode = "scroll"; - var startX; - var startY; - var touchStartT; - var lastT; - var longTouchTimer; - var animationTimer; - var animationSteps = 0; - var pos; - var clickCount = 0; - var vX = 0; - var vY = 0; - var pressed; - var contextMenu; - function createContextMenu() { - var clipboard = window.navigator && window.navigator.clipboard; - var isOpen = false; - var updateMenu = function () { - var selected = editor.getCopyText(); - var hasUndo = editor.session.getUndoManager().hasUndo(); - contextMenu.replaceChild(dom.buildDom(isOpen ? ["span", - !selected && ["span", { class: "ace_mobile-button", action: "selectall" }, "Select All"], - selected && ["span", { class: "ace_mobile-button", action: "copy" }, "Copy"], - selected && ["span", { class: "ace_mobile-button", action: "cut" }, "Cut"], - clipboard && ["span", { class: "ace_mobile-button", action: "paste" }, "Paste"], - hasUndo && ["span", { class: "ace_mobile-button", action: "undo" }, "Undo"], - ["span", { class: "ace_mobile-button", action: "find" }, "Find"], - ["span", { class: "ace_mobile-button", action: "openCommandPalette" }, "Palette"] - ] : ["span"]), contextMenu.firstChild); - }; - var handleClick = function (e) { - var action = e.target.getAttribute("action"); - if (action == "more" || !isOpen) { - isOpen = !isOpen; - return updateMenu(); - } - if (action == "paste") { - clipboard.readText().then(function (text) { - editor.execCommand(action, text); - }); - } - else if (action) { - if (action == "cut" || action == "copy") { - if (clipboard) - clipboard.writeText(editor.getCopyText()); - else - document.execCommand("copy"); - } - editor.execCommand(action); - } - contextMenu.firstChild.style.display = "none"; - isOpen = false; - if (action != "openCommandPalette") - editor.focus(); - }; - contextMenu = dom.buildDom(["div", - { - class: "ace_mobile-menu", - ontouchstart: function (e) { - mode = "menu"; - e.stopPropagation(); - e.preventDefault(); - editor.textInput.focus(); - }, - ontouchend: function (e) { - e.stopPropagation(); - e.preventDefault(); - handleClick(e); - }, - onclick: handleClick - }, - ["span"], - ["span", { class: "ace_mobile-button", action: "more" }, "..."] - ], editor.container); - } - function showContextMenu() { - if (!contextMenu) - createContextMenu(); - var cursor = editor.selection.cursor; - var pagePos = editor.renderer.textToScreenCoordinates(cursor.row, cursor.column); - var leftOffset = editor.renderer.textToScreenCoordinates(0, 0).pageX; - var scrollLeft = editor.renderer.scrollLeft; - var rect = editor.container.getBoundingClientRect(); - contextMenu.style.top = pagePos.pageY - rect.top - 3 + "px"; - if (pagePos.pageX - rect.left < rect.width - 70) { - contextMenu.style.left = ""; - contextMenu.style.right = "10px"; - } - else { - contextMenu.style.right = ""; - contextMenu.style.left = leftOffset + scrollLeft - rect.left + "px"; - } - contextMenu.style.display = ""; - contextMenu.firstChild.style.display = "none"; - editor.on("input", hideContextMenu); - } - function hideContextMenu(e) { - if (contextMenu) - contextMenu.style.display = "none"; - editor.off("input", hideContextMenu); - } - function handleLongTap() { - longTouchTimer = null; - clearTimeout(longTouchTimer); - var range = editor.selection.getRange(); - var inSelection = range.contains(pos.row, pos.column); - if (range.isEmpty() || !inSelection) { - editor.selection.moveToPosition(pos); - editor.selection.selectWord(); - } - mode = "wait"; - showContextMenu(); - } - function switchToSelectionMode() { - longTouchTimer = null; - clearTimeout(longTouchTimer); - editor.selection.moveToPosition(pos); - var range = clickCount >= 2 - ? editor.selection.getLineRange(pos.row) - : editor.session.getBracketRange(pos); - if (range && !range.isEmpty()) { - editor.selection.setRange(range); - } - else { - editor.selection.selectWord(); - } - mode = "wait"; - } - event.addListener(el, "contextmenu", function (e) { - if (!pressed) - return; - var textarea = editor.textInput.getElement(); - textarea.focus(); - }, editor); - event.addListener(el, "touchstart", function (e) { - var touches = e.touches; - if (longTouchTimer || touches.length > 1) { - clearTimeout(longTouchTimer); - longTouchTimer = null; - touchStartT = -1; - mode = "zoom"; - return; - } - pressed = editor.$mouseHandler.isMousePressed = true; - var h = editor.renderer.layerConfig.lineHeight; - var w = editor.renderer.layerConfig.lineHeight; - var t = e.timeStamp; - lastT = t; - var touchObj = touches[0]; - var x = touchObj.clientX; - var y = touchObj.clientY; - if (Math.abs(startX - x) + Math.abs(startY - y) > h) - touchStartT = -1; - startX = e.clientX = x; - startY = e.clientY = y; - vX = vY = 0; - var ev = new MouseEvent(e, editor); - pos = ev.getDocumentPosition(); - if (t - touchStartT < 500 && touches.length == 1 && !animationSteps) { - clickCount++; - e.preventDefault(); - e.button = 0; - switchToSelectionMode(); - } - else { - clickCount = 0; - var cursor = editor.selection.cursor; - var anchor = editor.selection.isEmpty() ? cursor : editor.selection.anchor; - var cursorPos = editor.renderer.$cursorLayer.getPixelPosition(cursor, true); - var anchorPos = editor.renderer.$cursorLayer.getPixelPosition(anchor, true); - var rect = editor.renderer.scroller.getBoundingClientRect(); - var offsetTop = editor.renderer.layerConfig.offset; - var offsetLeft = editor.renderer.scrollLeft; - var weightedDistance = function (x, y) { - x = x / w; - y = y / h - 0.75; - return x * x + y * y; - }; - if (e.clientX < rect.left) { - mode = "zoom"; - return; - } - var diff1 = weightedDistance(e.clientX - rect.left - cursorPos.left + offsetLeft, e.clientY - rect.top - cursorPos.top + offsetTop); - var diff2 = weightedDistance(e.clientX - rect.left - anchorPos.left + offsetLeft, e.clientY - rect.top - anchorPos.top + offsetTop); - if (diff1 < 3.5 && diff2 < 3.5) - mode = diff1 > diff2 ? "cursor" : "anchor"; - if (diff2 < 3.5) - mode = "anchor"; - else if (diff1 < 3.5) - mode = "cursor"; - else - mode = "scroll"; - longTouchTimer = setTimeout(handleLongTap, 450); - } - touchStartT = t; - }, editor); - event.addListener(el, "touchend", function (e) { - pressed = editor.$mouseHandler.isMousePressed = false; - if (animationTimer) - clearInterval(animationTimer); - if (mode == "zoom") { - mode = ""; - animationSteps = 0; - } - else if (longTouchTimer) { - editor.selection.moveToPosition(pos); - animationSteps = 0; - showContextMenu(); - } - else if (mode == "scroll") { - animate(); - hideContextMenu(); - } - else { - showContextMenu(); - } - clearTimeout(longTouchTimer); - longTouchTimer = null; - }, editor); - event.addListener(el, "touchmove", function (e) { - if (longTouchTimer) { - clearTimeout(longTouchTimer); - longTouchTimer = null; - } - var touches = e.touches; - if (touches.length > 1 || mode == "zoom") - return; - var touchObj = touches[0]; - var wheelX = startX - touchObj.clientX; - var wheelY = startY - touchObj.clientY; - if (mode == "wait") { - if (wheelX * wheelX + wheelY * wheelY > 4) - mode = "cursor"; - else - return e.preventDefault(); - } - startX = touchObj.clientX; - startY = touchObj.clientY; - e.clientX = touchObj.clientX; - e.clientY = touchObj.clientY; - var t = e.timeStamp; - var dt = t - lastT; - lastT = t; - if (mode == "scroll") { - var mouseEvent = new MouseEvent(e, editor); - mouseEvent.speed = 1; - mouseEvent.wheelX = wheelX; - mouseEvent.wheelY = wheelY; - if (10 * Math.abs(wheelX) < Math.abs(wheelY)) - wheelX = 0; - if (10 * Math.abs(wheelY) < Math.abs(wheelX)) - wheelY = 0; - if (dt != 0) { - vX = wheelX / dt; - vY = wheelY / dt; - } - editor._emit("mousewheel", mouseEvent); - if (!mouseEvent.propagationStopped) { - vX = vY = 0; - } - } - else { - var ev = new MouseEvent(e, editor); - var pos = ev.getDocumentPosition(); - if (mode == "cursor") - editor.selection.moveCursorToPosition(pos); - else if (mode == "anchor") - editor.selection.setSelectionAnchor(pos.row, pos.column); - editor.renderer.scrollCursorIntoView(pos); - e.preventDefault(); - } - }, editor); - function animate() { - animationSteps += 60; - animationTimer = setInterval(function () { - if (animationSteps-- <= 0) { - clearInterval(animationTimer); - animationTimer = null; - } - if (Math.abs(vX) < 0.01) - vX = 0; - if (Math.abs(vY) < 0.01) - vY = 0; - if (animationSteps < 20) - vX = 0.9 * vX; - if (animationSteps < 20) - vY = 0.9 * vY; - var oldScrollTop = editor.session.getScrollTop(); - editor.renderer.scrollBy(10 * vX, 10 * vY); - if (oldScrollTop == editor.session.getScrollTop()) - animationSteps = 0; - }, 10); - } -}; - -}); - -ace.define("ace/mouse/mouse_handler",["require","exports","module","ace/lib/event","ace/lib/useragent","ace/mouse/default_handlers","ace/mouse/default_gutter_handler","ace/mouse/mouse_event","ace/mouse/dragdrop_handler","ace/mouse/touch_handler","ace/config"], function(require, exports, module){"use strict"; -var event = require("../lib/event"); -var useragent = require("../lib/useragent"); -var DefaultHandlers = require("./default_handlers").DefaultHandlers; -var DefaultGutterHandler = require("./default_gutter_handler").GutterHandler; -var MouseEvent = require("./mouse_event").MouseEvent; -var DragdropHandler = require("./dragdrop_handler").DragdropHandler; -var addTouchListeners = require("./touch_handler").addTouchListeners; -var config = require("../config"); -var MouseHandler = /** @class */ (function () { - function MouseHandler(editor) { - var _self = this; - this.editor = editor; - new DefaultHandlers(this); - new DefaultGutterHandler(this); - new DragdropHandler(this); - var focusEditor = function (e) { - var windowBlurred = !document.hasFocus || !document.hasFocus() - || !editor.isFocused() && document.activeElement == (editor.textInput && editor.textInput.getElement()); - if (windowBlurred) - window.focus(); - editor.focus(); - setTimeout(function () { - if (!editor.isFocused()) - editor.focus(); - }); - }; - var mouseTarget = editor.renderer.getMouseEventTarget(); - event.addListener(mouseTarget, "click", this.onMouseEvent.bind(this, "click"), editor); - event.addListener(mouseTarget, "mousemove", this.onMouseMove.bind(this, "mousemove"), editor); - event.addMultiMouseDownListener([ - mouseTarget, - editor.renderer.scrollBarV && editor.renderer.scrollBarV.inner, - editor.renderer.scrollBarH && editor.renderer.scrollBarH.inner, - editor.textInput && editor.textInput.getElement() - ].filter(Boolean), [400, 300, 250], this, "onMouseEvent", editor); - event.addMouseWheelListener(editor.container, this.onMouseWheel.bind(this, "mousewheel"), editor); - addTouchListeners(editor.container, editor); - var gutterEl = editor.renderer.$gutter; - event.addListener(gutterEl, "mousedown", this.onMouseEvent.bind(this, "guttermousedown"), editor); - event.addListener(gutterEl, "click", this.onMouseEvent.bind(this, "gutterclick"), editor); - event.addListener(gutterEl, "dblclick", this.onMouseEvent.bind(this, "gutterdblclick"), editor); - event.addListener(gutterEl, "mousemove", this.onMouseEvent.bind(this, "guttermousemove"), editor); - event.addListener(mouseTarget, "mousedown", focusEditor, editor); - event.addListener(gutterEl, "mousedown", focusEditor, editor); - if (useragent.isIE && editor.renderer.scrollBarV) { - event.addListener(editor.renderer.scrollBarV.element, "mousedown", focusEditor, editor); - event.addListener(editor.renderer.scrollBarH.element, "mousedown", focusEditor, editor); - } - editor.on("mousemove", function (e) { - if (_self.state || _self.$dragDelay || !_self.$dragEnabled) - return; - var character = editor.renderer.screenToTextCoordinates(e.x, e.y); - var range = editor.session.selection.getRange(); - var renderer = editor.renderer; - if (!range.isEmpty() && range.insideStart(character.row, character.column)) { - renderer.setCursorStyle("default"); - } - else { - renderer.setCursorStyle(""); - } - }, editor); - } - MouseHandler.prototype.onMouseEvent = function (name, e) { - if (!this.editor.session) - return; - this.editor._emit(name, new MouseEvent(e, this.editor)); - }; - MouseHandler.prototype.onMouseMove = function (name, e) { - var listeners = this.editor._eventRegistry && this.editor._eventRegistry.mousemove; - if (!listeners || !listeners.length) - return; - this.editor._emit(name, new MouseEvent(e, this.editor)); - }; - MouseHandler.prototype.onMouseWheel = function (name, e) { - var mouseEvent = new MouseEvent(e, this.editor); - mouseEvent.speed = this.$scrollSpeed * 2; - mouseEvent.wheelX = e.wheelX; - mouseEvent.wheelY = e.wheelY; - this.editor._emit(name, mouseEvent); - }; - MouseHandler.prototype.setState = function (state) { - this.state = state; - }; - MouseHandler.prototype.captureMouse = function (ev, mouseMoveHandler) { - this.x = ev.x; - this.y = ev.y; - this.isMousePressed = true; - var editor = this.editor; - var renderer = this.editor.renderer; - renderer.$isMousePressed = true; - var self = this; - var onMouseMove = function (e) { - if (!e) - return; - if (useragent.isWebKit && !e.which && self.releaseMouse) - return self.releaseMouse(); - self.x = e.clientX; - self.y = e.clientY; - mouseMoveHandler && mouseMoveHandler(e); - self.mouseEvent = new MouseEvent(e, self.editor); - self.$mouseMoved = true; - }; - var onCaptureEnd = function (e) { - editor.off("beforeEndOperation", onOperationEnd); - clearInterval(timerId); - if (editor.session) - onCaptureInterval(); - self[self.state + "End"] && self[self.state + "End"](e); - self.state = ""; - self.isMousePressed = renderer.$isMousePressed = false; - if (renderer.$keepTextAreaAtCursor) - renderer.$moveTextAreaToCursor(); - self.$onCaptureMouseMove = self.releaseMouse = null; - e && self.onMouseEvent("mouseup", e); - editor.endOperation(); - }; - var onCaptureInterval = function () { - self[self.state] && self[self.state](); - self.$mouseMoved = false; - }; - if (useragent.isOldIE && ev.domEvent.type == "dblclick") { - return setTimeout(function () { onCaptureEnd(ev); }); - } - var onOperationEnd = function (e) { - if (!self.releaseMouse) - return; - if (editor.curOp.command.name && editor.curOp.selectionChanged) { - self[self.state + "End"] && self[self.state + "End"](); - self.state = ""; - self.releaseMouse(); - } - }; - editor.on("beforeEndOperation", onOperationEnd); - editor.startOperation({ command: { name: "mouse" } }); - self.$onCaptureMouseMove = onMouseMove; - self.releaseMouse = event.capture(this.editor.container, onMouseMove, onCaptureEnd); - var timerId = setInterval(onCaptureInterval, 20); - }; - MouseHandler.prototype.cancelContextMenu = function () { - var stop = function (e) { - if (e && e.domEvent && e.domEvent.type != "contextmenu") - return; - this.editor.off("nativecontextmenu", stop); - if (e && e.domEvent) - event.stopEvent(e.domEvent); - }.bind(this); - setTimeout(stop, 10); - this.editor.on("nativecontextmenu", stop); - }; - MouseHandler.prototype.destroy = function () { - if (this.releaseMouse) - this.releaseMouse(); - }; - return MouseHandler; -}()); -MouseHandler.prototype.releaseMouse = null; -config.defineOptions(MouseHandler.prototype, "mouseHandler", { - scrollSpeed: { initialValue: 2 }, - dragDelay: { initialValue: (useragent.isMac ? 150 : 0) }, - dragEnabled: { initialValue: true }, - focusTimeout: { initialValue: 0 }, - tooltipFollowsMouse: { initialValue: true } -}); -exports.MouseHandler = MouseHandler; - -}); - -ace.define("ace/mouse/fold_handler",["require","exports","module","ace/lib/dom"], function(require, exports, module){"use strict"; -var dom = require("../lib/dom"); -var FoldHandler = /** @class */ (function () { - function FoldHandler(editor) { - editor.on("click", function (e) { - var position = e.getDocumentPosition(); - var session = editor.session; - var fold = session.getFoldAt(position.row, position.column, 1); - if (fold) { - if (e.getAccelKey()) - session.removeFold(fold); - else - session.expandFold(fold); - e.stop(); - } - var target = e.domEvent && e.domEvent.target; - if (target && dom.hasCssClass(target, "ace_inline_button")) { - if (dom.hasCssClass(target, "ace_toggle_wrap")) { - session.setOption("wrap", !session.getUseWrapMode()); - editor.renderer.scrollCursorIntoView(); - } - } - }); - editor.on("gutterclick", function (e) { - var gutterRegion = editor.renderer.$gutterLayer.getRegion(e); - if (gutterRegion == "foldWidgets") { - var row = e.getDocumentPosition().row; - var session = editor.session; - if (session.foldWidgets && session.foldWidgets[row]) - editor.session.onFoldWidgetClick(row, e); - if (!editor.isFocused()) - editor.focus(); - e.stop(); - } - }); - editor.on("gutterdblclick", function (e) { - var gutterRegion = editor.renderer.$gutterLayer.getRegion(e); - if (gutterRegion == "foldWidgets") { - var row = e.getDocumentPosition().row; - var session = editor.session; - var data = session.getParentFoldRangeData(row, true); - var range = data.range || data.firstRange; - if (range) { - row = range.start.row; - var fold = session.getFoldAt(row, session.getLine(row).length, 1); - if (fold) { - session.removeFold(fold); - } - else { - session.addFold("...", range); - editor.renderer.scrollCursorIntoView({ row: range.start.row, column: 0 }); - } - } - e.stop(); - } - }); - } - return FoldHandler; -}()); -exports.FoldHandler = FoldHandler; - -}); - -ace.define("ace/keyboard/keybinding",["require","exports","module","ace/lib/keys","ace/lib/event"], function(require, exports, module){"use strict"; -var keyUtil = require("../lib/keys"); -var event = require("../lib/event"); -var KeyBinding = /** @class */ (function () { - function KeyBinding(editor) { - this.$editor = editor; - this.$data = { editor: editor }; - this.$handlers = []; - this.setDefaultHandler(editor.commands); - } - KeyBinding.prototype.setDefaultHandler = function (kb) { - this.removeKeyboardHandler(this.$defaultHandler); - this.$defaultHandler = kb; - this.addKeyboardHandler(kb, 0); - }; - KeyBinding.prototype.setKeyboardHandler = function (kb) { - var h = this.$handlers; - if (h[h.length - 1] == kb) - return; - while (h[h.length - 1] && h[h.length - 1] != this.$defaultHandler) - this.removeKeyboardHandler(h[h.length - 1]); - this.addKeyboardHandler(kb, 1); - }; - KeyBinding.prototype.addKeyboardHandler = function (kb, pos) { - if (!kb) - return; - if (typeof kb == "function" && !kb.handleKeyboard) - kb.handleKeyboard = kb; - var i = this.$handlers.indexOf(kb); - if (i != -1) - this.$handlers.splice(i, 1); - if (pos == undefined) - this.$handlers.push(kb); - else - this.$handlers.splice(pos, 0, kb); - if (i == -1 && kb.attach) - kb.attach(this.$editor); - }; - KeyBinding.prototype.removeKeyboardHandler = function (kb) { - var i = this.$handlers.indexOf(kb); - if (i == -1) - return false; - this.$handlers.splice(i, 1); - kb.detach && kb.detach(this.$editor); - return true; - }; - KeyBinding.prototype.getKeyboardHandler = function () { - return this.$handlers[this.$handlers.length - 1]; - }; - KeyBinding.prototype.getStatusText = function () { - var data = this.$data; - var editor = data.editor; - return this.$handlers.map(function (h) { - return h.getStatusText && h.getStatusText(editor, data) || ""; - }).filter(Boolean).join(" "); - }; - KeyBinding.prototype.$callKeyboardHandlers = function (hashId, keyString, keyCode, e) { - var toExecute; - var success = false; - var commands = this.$editor.commands; - for (var i = this.$handlers.length; i--;) { - toExecute = this.$handlers[i].handleKeyboard(this.$data, hashId, keyString, keyCode, e); - if (!toExecute || !toExecute.command) - continue; - if (toExecute.command == "null") { - success = true; - } - else { - success = commands.exec(toExecute.command, this.$editor, toExecute.args, e); - } - if (success && e && hashId != -1 && - toExecute.passEvent != true && toExecute.command.passEvent != true) { - event.stopEvent(e); - } - if (success) - break; - } - if (!success && hashId == -1) { - toExecute = { command: "insertstring" }; - success = commands.exec("insertstring", this.$editor, keyString); - } - if (success && this.$editor._signal) - this.$editor._signal("keyboardActivity", toExecute); - return success; - }; - KeyBinding.prototype.onCommandKey = function (e, hashId, keyCode) { - var keyString = keyUtil.keyCodeToString(keyCode); - return this.$callKeyboardHandlers(hashId, keyString, keyCode, e); - }; - KeyBinding.prototype.onTextInput = function (text) { - return this.$callKeyboardHandlers(-1, text); - }; - return KeyBinding; -}()); -exports.KeyBinding = KeyBinding; - -}); - -ace.define("ace/lib/bidiutil",["require","exports","module"], function(require, exports, module){"use strict"; -var ArabicAlefBetIntervalsBegine = ['\u0621', '\u0641']; -var ArabicAlefBetIntervalsEnd = ['\u063A', '\u064a']; -var dir = 0, hiLevel = 0; -var lastArabic = false, hasUBAT_AL = false, hasUBAT_B = false, hasUBAT_S = false, hasBlockSep = false, hasSegSep = false; -var impTab_LTR = [ [0, 3, 0, 1, 0, 0, 0], [0, 3, 0, 1, 2, 2, 0], [0, 3, 0, 0x11, 2, 0, 1], [0, 3, 5, 5, 4, 1, 0], [0, 3, 0x15, 0x15, 4, 0, 1], [0, 3, 5, 5, 4, 2, 0] -]; -var impTab_RTL = [ [2, 0, 1, 1, 0, 1, 0], [2, 0, 1, 1, 0, 2, 0], [2, 0, 2, 1, 3, 2, 0], [2, 0, 2, 0x21, 3, 1, 1] -]; -var LTR = 0, RTL = 1; -var L = 0; -var R = 1; -var EN = 2; -var AN = 3; -var ON = 4; -var B = 5; -var S = 6; -var AL = 7; -var WS = 8; -var CS = 9; -var ES = 10; -var ET = 11; -var NSM = 12; -var LRE = 13; -var RLE = 14; -var PDF = 15; -var LRO = 16; -var RLO = 17; -var BN = 18; -var UnicodeTBL00 = [ - BN, BN, BN, BN, BN, BN, BN, BN, BN, S, B, S, WS, B, BN, BN, - BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, B, B, B, S, - WS, ON, ON, ET, ET, ET, ON, ON, ON, ON, ON, ES, CS, ES, CS, CS, - EN, EN, EN, EN, EN, EN, EN, EN, EN, EN, CS, ON, ON, ON, ON, ON, - ON, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, - L, L, L, L, L, L, L, L, L, L, L, ON, ON, ON, ON, ON, - ON, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, - L, L, L, L, L, L, L, L, L, L, L, ON, ON, ON, ON, BN, - BN, BN, BN, BN, BN, B, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, - BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, - CS, ON, ET, ET, ET, ET, ON, ON, ON, ON, L, ON, ON, BN, ON, ON, - ET, ET, EN, EN, ON, L, ON, ON, ON, EN, L, ON, ON, ON, ON, ON -]; -var UnicodeTBL20 = [ - WS, WS, WS, WS, WS, WS, WS, WS, WS, WS, WS, BN, BN, BN, L, R, - ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, - ON, ON, ON, ON, ON, ON, ON, ON, WS, B, LRE, RLE, PDF, LRO, RLO, CS, - ET, ET, ET, ET, ET, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, - ON, ON, ON, ON, CS, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, - ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, WS -]; -function _computeLevels(chars, levels, len, charTypes) { - var impTab = dir ? impTab_RTL : impTab_LTR, prevState = null, newClass = null, newLevel = null, newState = 0, action = null, cond = null, condPos = -1, i = null, ix = null, classes = []; - if (!charTypes) { - for (i = 0, charTypes = []; i < len; i++) { - charTypes[i] = _getCharacterType(chars[i]); - } - } - hiLevel = dir; - lastArabic = false; - hasUBAT_AL = false; - hasUBAT_B = false; - hasUBAT_S = false; - for (ix = 0; ix < len; ix++) { - prevState = newState; - classes[ix] = newClass = _getCharClass(chars, charTypes, classes, ix); - newState = impTab[prevState][newClass]; - action = newState & 0xF0; - newState &= 0x0F; - levels[ix] = newLevel = impTab[newState][5]; - if (action > 0) { - if (action == 0x10) { - for (i = condPos; i < ix; i++) { - levels[i] = 1; - } - condPos = -1; - } - else { - condPos = -1; - } - } - cond = impTab[newState][6]; - if (cond) { - if (condPos == -1) { - condPos = ix; - } - } - else { - if (condPos > -1) { - for (i = condPos; i < ix; i++) { - levels[i] = newLevel; - } - condPos = -1; - } - } - if (charTypes[ix] == B) { - levels[ix] = 0; - } - hiLevel |= newLevel; - } - if (hasUBAT_S) { - for (i = 0; i < len; i++) { - if (charTypes[i] == S) { - levels[i] = dir; - for (var j = i - 1; j >= 0; j--) { - if (charTypes[j] == WS) { - levels[j] = dir; - } - else { - break; - } - } - } - } - } -} -function _invertLevel(lev, levels, _array) { - if (hiLevel < lev) { - return; - } - if (lev == 1 && dir == RTL && !hasUBAT_B) { - _array.reverse(); - return; - } - var len = _array.length, start = 0, end, lo, hi, tmp; - while (start < len) { - if (levels[start] >= lev) { - end = start + 1; - while (end < len && levels[end] >= lev) { - end++; - } - for (lo = start, hi = end - 1; lo < hi; lo++, hi--) { - tmp = _array[lo]; - _array[lo] = _array[hi]; - _array[hi] = tmp; - } - start = end; - } - start++; - } -} -function _getCharClass(chars, types, classes, ix) { - var cType = types[ix], wType, nType, len, i; - switch (cType) { - case L: - case R: - lastArabic = false; - case ON: - case AN: - return cType; - case EN: - return lastArabic ? AN : EN; - case AL: - lastArabic = true; - hasUBAT_AL = true; - return R; - case WS: - return ON; - case CS: - if (ix < 1 || (ix + 1) >= types.length || - ((wType = classes[ix - 1]) != EN && wType != AN) || - ((nType = types[ix + 1]) != EN && nType != AN)) { - return ON; - } - if (lastArabic) { - nType = AN; - } - return nType == wType ? nType : ON; - case ES: - wType = ix > 0 ? classes[ix - 1] : B; - if (wType == EN && (ix + 1) < types.length && types[ix + 1] == EN) { - return EN; - } - return ON; - case ET: - if (ix > 0 && classes[ix - 1] == EN) { - return EN; - } - if (lastArabic) { - return ON; - } - i = ix + 1; - len = types.length; - while (i < len && types[i] == ET) { - i++; - } - if (i < len && types[i] == EN) { - return EN; - } - return ON; - case NSM: - len = types.length; - i = ix + 1; - while (i < len && types[i] == NSM) { - i++; - } - if (i < len) { - var c = chars[ix], rtlCandidate = (c >= 0x0591 && c <= 0x08FF) || c == 0xFB1E; - wType = types[i]; - if (rtlCandidate && (wType == R || wType == AL)) { - return R; - } - } - if (ix < 1 || (wType = types[ix - 1]) == B) { - return ON; - } - return classes[ix - 1]; - case B: - lastArabic = false; - hasUBAT_B = true; - return dir; - case S: - hasUBAT_S = true; - return ON; - case LRE: - case RLE: - case LRO: - case RLO: - case PDF: - lastArabic = false; - case BN: - return ON; - } -} -function _getCharacterType(ch) { - var uc = ch.charCodeAt(0), hi = uc >> 8; - if (hi == 0) { - return ((uc > 0x00BF) ? L : UnicodeTBL00[uc]); - } - else if (hi == 5) { - return (/[\u0591-\u05f4]/.test(ch) ? R : L); - } - else if (hi == 6) { - if (/[\u0610-\u061a\u064b-\u065f\u06d6-\u06e4\u06e7-\u06ed]/.test(ch)) - return NSM; - else if (/[\u0660-\u0669\u066b-\u066c]/.test(ch)) - return AN; - else if (uc == 0x066A) - return ET; - else if (/[\u06f0-\u06f9]/.test(ch)) - return EN; - else - return AL; - } - else if (hi == 0x20 && uc <= 0x205F) { - return UnicodeTBL20[uc & 0xFF]; - } - else if (hi == 0xFE) { - return (uc >= 0xFE70 ? AL : ON); - } - return ON; -} -function _isArabicDiacritics(ch) { - return (ch >= '\u064b' && ch <= '\u0655'); -} -exports.L = L; -exports.R = R; -exports.EN = EN; -exports.ON_R = 3; -exports.AN = 4; -exports.R_H = 5; -exports.B = 6; -exports.RLE = 7; -exports.DOT = "\xB7"; -exports.doBidiReorder = function (text, textCharTypes, isRtl) { - if (text.length < 2) - return {}; - var chars = text.split(""), logicalFromVisual = new Array(chars.length), bidiLevels = new Array(chars.length), levels = []; - dir = isRtl ? RTL : LTR; - _computeLevels(chars, levels, chars.length, textCharTypes); - for (var i = 0; i < logicalFromVisual.length; logicalFromVisual[i] = i, i++) - ; - _invertLevel(2, levels, logicalFromVisual); - _invertLevel(1, levels, logicalFromVisual); - for (var i = 0; i < logicalFromVisual.length - 1; i++) { //fix levels to reflect character width - if (textCharTypes[i] === AN) { - levels[i] = exports.AN; - } - else if (levels[i] === R && ((textCharTypes[i] > AL && textCharTypes[i] < LRE) - || textCharTypes[i] === ON || textCharTypes[i] === BN)) { - levels[i] = exports.ON_R; - } - else if ((i > 0 && chars[i - 1] === '\u0644') && /\u0622|\u0623|\u0625|\u0627/.test(chars[i])) { - levels[i - 1] = levels[i] = exports.R_H; - i++; - } - } - if (chars[chars.length - 1] === exports.DOT) - levels[chars.length - 1] = exports.B; - if (chars[0] === '\u202B') - levels[0] = exports.RLE; - for (var i = 0; i < logicalFromVisual.length; i++) { - bidiLevels[i] = levels[logicalFromVisual[i]]; - } - return { 'logicalFromVisual': logicalFromVisual, 'bidiLevels': bidiLevels }; -}; -exports.hasBidiCharacters = function (text, textCharTypes) { - var ret = false; - for (var i = 0; i < text.length; i++) { - textCharTypes[i] = _getCharacterType(text.charAt(i)); - if (!ret && (textCharTypes[i] == R || textCharTypes[i] == AL || textCharTypes[i] == AN)) - ret = true; - } - return ret; -}; -exports.getVisualFromLogicalIdx = function (logIdx, rowMap) { - for (var i = 0; i < rowMap.logicalFromVisual.length; i++) { - if (rowMap.logicalFromVisual[i] == logIdx) - return i; - } - return 0; -}; - -}); - -ace.define("ace/bidihandler",["require","exports","module","ace/lib/bidiutil","ace/lib/lang"], function(require, exports, module){"use strict"; -var bidiUtil = require("./lib/bidiutil"); -var lang = require("./lib/lang"); -var bidiRE = /[\u0590-\u05f4\u0600-\u06ff\u0700-\u08ac\u202B]/; -var BidiHandler = /** @class */ (function () { - function BidiHandler(session) { - this.session = session; - this.bidiMap = {}; - this.currentRow = null; - this.bidiUtil = bidiUtil; - this.charWidths = []; - this.EOL = "\xAC"; - this.showInvisibles = true; - this.isRtlDir = false; - this.$isRtl = false; - this.line = ""; - this.wrapIndent = 0; - this.EOF = "\xB6"; - this.RLE = "\u202B"; - this.contentWidth = 0; - this.fontMetrics = null; - this.rtlLineOffset = 0; - this.wrapOffset = 0; - this.isMoveLeftOperation = false; - this.seenBidi = bidiRE.test(session.getValue()); - } - BidiHandler.prototype.isBidiRow = function (screenRow, docRow, splitIndex) { - if (!this.seenBidi) - return false; - if (screenRow !== this.currentRow) { - this.currentRow = screenRow; - this.updateRowLine(docRow, splitIndex); - this.updateBidiMap(); - } - return this.bidiMap.bidiLevels; - }; - BidiHandler.prototype.onChange = function (delta) { - if (!this.seenBidi) { - if (delta.action == "insert" && bidiRE.test(delta.lines.join("\n"))) { - this.seenBidi = true; - this.currentRow = null; - } - } - else { - this.currentRow = null; - } - }; - BidiHandler.prototype.getDocumentRow = function () { - var docRow = 0; - var rowCache = this.session.$screenRowCache; - if (rowCache.length) { - var index = this.session.$getRowCacheIndex(rowCache, this.currentRow); - if (index >= 0) - docRow = this.session.$docRowCache[index]; - } - return docRow; - }; - BidiHandler.prototype.getSplitIndex = function () { - var splitIndex = 0; - var rowCache = this.session.$screenRowCache; - if (rowCache.length) { - var currentIndex, prevIndex = this.session.$getRowCacheIndex(rowCache, this.currentRow); - while (this.currentRow - splitIndex > 0) { - currentIndex = this.session.$getRowCacheIndex(rowCache, this.currentRow - splitIndex - 1); - if (currentIndex !== prevIndex) - break; - prevIndex = currentIndex; - splitIndex++; - } - } - else { - splitIndex = this.currentRow; - } - return splitIndex; - }; - BidiHandler.prototype.updateRowLine = function (docRow, splitIndex) { - if (docRow === undefined) - docRow = this.getDocumentRow(); - var isLastRow = (docRow === this.session.getLength() - 1), endOfLine = isLastRow ? this.EOF : this.EOL; - this.wrapIndent = 0; - this.line = this.session.getLine(docRow); - this.isRtlDir = this.$isRtl || this.line.charAt(0) === this.RLE; - if (this.session.$useWrapMode) { - var splits = this.session.$wrapData[docRow]; - if (splits) { - if (splitIndex === undefined) - splitIndex = this.getSplitIndex(); - if (splitIndex > 0 && splits.length) { - this.wrapIndent = splits.indent; - this.wrapOffset = this.wrapIndent * this.charWidths[bidiUtil.L]; - this.line = (splitIndex < splits.length) ? - this.line.substring(splits[splitIndex - 1], splits[splitIndex]) : - this.line.substring(splits[splits.length - 1]); - } - else { - this.line = this.line.substring(0, splits[splitIndex]); - } - if (splitIndex == splits.length) { - this.line += (this.showInvisibles) ? endOfLine : bidiUtil.DOT; - } - } - } - else { - this.line += this.showInvisibles ? endOfLine : bidiUtil.DOT; - } - var session = this.session, shift = 0, size; - this.line = this.line.replace(/\t|[\u1100-\u2029, \u202F-\uFFE6]/g, function (ch, i) { - if (ch === '\t' || session.isFullWidth(ch.charCodeAt(0))) { - size = (ch === '\t') ? session.getScreenTabSize(i + shift) : 2; - shift += size - 1; - return lang.stringRepeat(bidiUtil.DOT, size); - } - return ch; - }); - if (this.isRtlDir) { - this.fontMetrics.$main.textContent = (this.line.charAt(this.line.length - 1) == bidiUtil.DOT) ? this.line.substr(0, this.line.length - 1) : this.line; - this.rtlLineOffset = this.contentWidth - this.fontMetrics.$main.getBoundingClientRect().width; - } - }; - BidiHandler.prototype.updateBidiMap = function () { - var textCharTypes = []; - if (bidiUtil.hasBidiCharacters(this.line, textCharTypes) || this.isRtlDir) { - this.bidiMap = bidiUtil.doBidiReorder(this.line, textCharTypes, this.isRtlDir); - } - else { - this.bidiMap = {}; - } - }; - BidiHandler.prototype.markAsDirty = function () { - this.currentRow = null; - }; - BidiHandler.prototype.updateCharacterWidths = function (fontMetrics) { - if (this.characterWidth === fontMetrics.$characterSize.width) - return; - this.fontMetrics = fontMetrics; - var characterWidth = this.characterWidth = fontMetrics.$characterSize.width; - var bidiCharWidth = fontMetrics.$measureCharWidth("\u05d4"); - this.charWidths[bidiUtil.L] = this.charWidths[bidiUtil.EN] = this.charWidths[bidiUtil.ON_R] = characterWidth; - this.charWidths[bidiUtil.R] = this.charWidths[bidiUtil.AN] = bidiCharWidth; - this.charWidths[bidiUtil.R_H] = bidiCharWidth * 0.45; - this.charWidths[bidiUtil.B] = this.charWidths[bidiUtil.RLE] = 0; - this.currentRow = null; - }; - BidiHandler.prototype.setShowInvisibles = function (showInvisibles) { - this.showInvisibles = showInvisibles; - this.currentRow = null; - }; - BidiHandler.prototype.setEolChar = function (eolChar) { - this.EOL = eolChar; - }; - BidiHandler.prototype.setContentWidth = function (width) { - this.contentWidth = width; - }; - BidiHandler.prototype.isRtlLine = function (row) { - if (this.$isRtl) - return true; - if (row != undefined) - return (this.session.getLine(row).charAt(0) == this.RLE); - else - return this.isRtlDir; - }; - BidiHandler.prototype.setRtlDirection = function (editor, isRtlDir) { - var cursor = editor.getCursorPosition(); - for (var row = editor.selection.getSelectionAnchor().row; row <= cursor.row; row++) { - if (!isRtlDir && editor.session.getLine(row).charAt(0) === editor.session.$bidiHandler.RLE) - editor.session.doc.removeInLine(row, 0, 1); - else if (isRtlDir && editor.session.getLine(row).charAt(0) !== editor.session.$bidiHandler.RLE) - editor.session.doc.insert({ column: 0, row: row }, editor.session.$bidiHandler.RLE); - } - }; - BidiHandler.prototype.getPosLeft = function (col) { - col -= this.wrapIndent; - var leftBoundary = (this.line.charAt(0) === this.RLE) ? 1 : 0; - var logicalIdx = (col > leftBoundary) ? (this.session.getOverwrite() ? col : col - 1) : leftBoundary; - var visualIdx = bidiUtil.getVisualFromLogicalIdx(logicalIdx, this.bidiMap), levels = this.bidiMap.bidiLevels, left = 0; - if (!this.session.getOverwrite() && col <= leftBoundary && levels[visualIdx] % 2 !== 0) - visualIdx++; - for (var i = 0; i < visualIdx; i++) { - left += this.charWidths[levels[i]]; - } - if (!this.session.getOverwrite() && (col > leftBoundary) && (levels[visualIdx] % 2 === 0)) - left += this.charWidths[levels[visualIdx]]; - if (this.wrapIndent) - left += this.isRtlDir ? (-1 * this.wrapOffset) : this.wrapOffset; - if (this.isRtlDir) - left += this.rtlLineOffset; - return left; - }; - BidiHandler.prototype.getSelections = function (startCol, endCol) { - var map = this.bidiMap, levels = map.bidiLevels, level, selections = [], offset = 0, selColMin = Math.min(startCol, endCol) - this.wrapIndent, selColMax = Math.max(startCol, endCol) - this.wrapIndent, isSelected = false, isSelectedPrev = false, selectionStart = 0; - if (this.wrapIndent) - offset += this.isRtlDir ? (-1 * this.wrapOffset) : this.wrapOffset; - for (var logIdx, visIdx = 0; visIdx < levels.length; visIdx++) { - logIdx = map.logicalFromVisual[visIdx]; - level = levels[visIdx]; - isSelected = (logIdx >= selColMin) && (logIdx < selColMax); - if (isSelected && !isSelectedPrev) { - selectionStart = offset; - } - else if (!isSelected && isSelectedPrev) { - selections.push({ left: selectionStart, width: offset - selectionStart }); - } - offset += this.charWidths[level]; - isSelectedPrev = isSelected; - } - if (isSelected && (visIdx === levels.length)) { - selections.push({ left: selectionStart, width: offset - selectionStart }); - } - if (this.isRtlDir) { - for (var i = 0; i < selections.length; i++) { - selections[i].left += this.rtlLineOffset; - } - } - return selections; - }; - BidiHandler.prototype.offsetToCol = function (posX) { - if (this.isRtlDir) - posX -= this.rtlLineOffset; - var logicalIdx = 0, posX = Math.max(posX, 0), offset = 0, visualIdx = 0, levels = this.bidiMap.bidiLevels, charWidth = this.charWidths[levels[visualIdx]]; - if (this.wrapIndent) - posX -= this.isRtlDir ? (-1 * this.wrapOffset) : this.wrapOffset; - while (posX > offset + charWidth / 2) { - offset += charWidth; - if (visualIdx === levels.length - 1) { - charWidth = 0; - break; - } - charWidth = this.charWidths[levels[++visualIdx]]; - } - if (visualIdx > 0 && (levels[visualIdx - 1] % 2 !== 0) && (levels[visualIdx] % 2 === 0)) { - if (posX < offset) - visualIdx--; - logicalIdx = this.bidiMap.logicalFromVisual[visualIdx]; - } - else if (visualIdx > 0 && (levels[visualIdx - 1] % 2 === 0) && (levels[visualIdx] % 2 !== 0)) { - logicalIdx = 1 + ((posX > offset) ? this.bidiMap.logicalFromVisual[visualIdx] - : this.bidiMap.logicalFromVisual[visualIdx - 1]); - } - else if ((this.isRtlDir && visualIdx === levels.length - 1 && charWidth === 0 && (levels[visualIdx - 1] % 2 === 0)) - || (!this.isRtlDir && visualIdx === 0 && (levels[visualIdx] % 2 !== 0))) { - logicalIdx = 1 + this.bidiMap.logicalFromVisual[visualIdx]; - } - else { - if (visualIdx > 0 && (levels[visualIdx - 1] % 2 !== 0) && charWidth !== 0) - visualIdx--; - logicalIdx = this.bidiMap.logicalFromVisual[visualIdx]; - } - if (logicalIdx === 0 && this.isRtlDir) - logicalIdx++; - return (logicalIdx + this.wrapIndent); - }; - return BidiHandler; -}()); -exports.BidiHandler = BidiHandler; - -}); - -ace.define("ace/selection",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/lib/event_emitter","ace/range"], function(require, exports, module){"use strict"; -var oop = require("./lib/oop"); -var lang = require("./lib/lang"); -var EventEmitter = require("./lib/event_emitter").EventEmitter; -var Range = require("./range").Range; -var Selection = /** @class */ (function () { - function Selection(session) { - this.session = session; - this.doc = session.getDocument(); - this.clearSelection(); - this.cursor = this.lead = this.doc.createAnchor(0, 0); - this.anchor = this.doc.createAnchor(0, 0); - this.$silent = false; - var self = this; - this.cursor.on("change", function (e) { - self.$cursorChanged = true; - if (!self.$silent) - self._emit("changeCursor"); - if (!self.$isEmpty && !self.$silent) - self._emit("changeSelection"); - if (!self.$keepDesiredColumnOnChange && e.old.column != e.value.column) - self.$desiredColumn = null; - }); - this.anchor.on("change", function () { - self.$anchorChanged = true; - if (!self.$isEmpty && !self.$silent) - self._emit("changeSelection"); - }); - } - Selection.prototype.isEmpty = function () { - return this.$isEmpty || (this.anchor.row == this.lead.row && - this.anchor.column == this.lead.column); - }; - Selection.prototype.isMultiLine = function () { - return !this.$isEmpty && this.anchor.row != this.cursor.row; - }; - Selection.prototype.getCursor = function () { - return this.lead.getPosition(); - }; - Selection.prototype.setAnchor = function (row, column) { - this.$isEmpty = false; - this.anchor.setPosition(row, column); - }; - Selection.prototype.getAnchor = function () { - if (this.$isEmpty) - return this.getSelectionLead(); - return this.anchor.getPosition(); - }; - Selection.prototype.getSelectionLead = function () { - return this.lead.getPosition(); - }; - Selection.prototype.isBackwards = function () { - var anchor = this.anchor; - var lead = this.lead; - return (anchor.row > lead.row || (anchor.row == lead.row && anchor.column > lead.column)); - }; - Selection.prototype.getRange = function () { - var anchor = this.anchor; - var lead = this.lead; - if (this.$isEmpty) - return Range.fromPoints(lead, lead); - return this.isBackwards() - ? Range.fromPoints(lead, anchor) - : Range.fromPoints(anchor, lead); - }; - Selection.prototype.clearSelection = function () { - if (!this.$isEmpty) { - this.$isEmpty = true; - this._emit("changeSelection"); - } - }; - Selection.prototype.selectAll = function () { - this.$setSelection(0, 0, Number.MAX_VALUE, Number.MAX_VALUE); - }; - Selection.prototype.setRange = function (range, reverse) { - var start = reverse ? range.end : range.start; - var end = reverse ? range.start : range.end; - this.$setSelection(start.row, start.column, end.row, end.column); - }; - Selection.prototype.$setSelection = function (anchorRow, anchorColumn, cursorRow, cursorColumn) { - if (this.$silent) - return; - var wasEmpty = this.$isEmpty; - var wasMultiselect = this.inMultiSelectMode; - this.$silent = true; - this.$cursorChanged = this.$anchorChanged = false; - this.anchor.setPosition(anchorRow, anchorColumn); - this.cursor.setPosition(cursorRow, cursorColumn); - this.$isEmpty = !Range.comparePoints(this.anchor, this.cursor); - this.$silent = false; - if (this.$cursorChanged) - this._emit("changeCursor"); - if (this.$cursorChanged || this.$anchorChanged || wasEmpty != this.$isEmpty || wasMultiselect) - this._emit("changeSelection"); - }; - Selection.prototype.$moveSelection = function (mover) { - var lead = this.lead; - if (this.$isEmpty) - this.setSelectionAnchor(lead.row, lead.column); - mover.call(this); - }; - Selection.prototype.selectTo = function (row, column) { - this.$moveSelection(function () { - this.moveCursorTo(row, column); - }); - }; - Selection.prototype.selectToPosition = function (pos) { - this.$moveSelection(function () { - this.moveCursorToPosition(pos); - }); - }; - Selection.prototype.moveTo = function (row, column) { - this.clearSelection(); - this.moveCursorTo(row, column); - }; - Selection.prototype.moveToPosition = function (pos) { - this.clearSelection(); - this.moveCursorToPosition(pos); - }; - Selection.prototype.selectUp = function () { - this.$moveSelection(this.moveCursorUp); - }; - Selection.prototype.selectDown = function () { - this.$moveSelection(this.moveCursorDown); - }; - Selection.prototype.selectRight = function () { - this.$moveSelection(this.moveCursorRight); - }; - Selection.prototype.selectLeft = function () { - this.$moveSelection(this.moveCursorLeft); - }; - Selection.prototype.selectLineStart = function () { - this.$moveSelection(this.moveCursorLineStart); - }; - Selection.prototype.selectLineEnd = function () { - this.$moveSelection(this.moveCursorLineEnd); - }; - Selection.prototype.selectFileEnd = function () { - this.$moveSelection(this.moveCursorFileEnd); - }; - Selection.prototype.selectFileStart = function () { - this.$moveSelection(this.moveCursorFileStart); - }; - Selection.prototype.selectWordRight = function () { - this.$moveSelection(this.moveCursorWordRight); - }; - Selection.prototype.selectWordLeft = function () { - this.$moveSelection(this.moveCursorWordLeft); - }; - Selection.prototype.getWordRange = function (row, column) { - if (typeof column == "undefined") { - var cursor = row || this.lead; - row = cursor.row; - column = cursor.column; - } - return this.session.getWordRange(row, column); - }; - Selection.prototype.selectWord = function () { - this.setSelectionRange(this.getWordRange()); - }; - Selection.prototype.selectAWord = function () { - var cursor = this.getCursor(); - var range = this.session.getAWordRange(cursor.row, cursor.column); - this.setSelectionRange(range); - }; - Selection.prototype.getLineRange = function (row, excludeLastChar) { - var rowStart = typeof row == "number" ? row : this.lead.row; - var rowEnd; - var foldLine = this.session.getFoldLine(rowStart); - if (foldLine) { - rowStart = foldLine.start.row; - rowEnd = foldLine.end.row; - } - else { - rowEnd = rowStart; - } - if (excludeLastChar === true) - return new Range(rowStart, 0, rowEnd, this.session.getLine(rowEnd).length); - else - return new Range(rowStart, 0, rowEnd + 1, 0); - }; - Selection.prototype.selectLine = function () { - this.setSelectionRange(this.getLineRange()); - }; - Selection.prototype.moveCursorUp = function () { - this.moveCursorBy(-1, 0); - }; - Selection.prototype.moveCursorDown = function () { - this.moveCursorBy(1, 0); - }; - Selection.prototype.wouldMoveIntoSoftTab = function (cursor, tabSize, direction) { - var start = cursor.column; - var end = cursor.column + tabSize; - if (direction < 0) { - start = cursor.column - tabSize; - end = cursor.column; - } - return this.session.isTabStop(cursor) && this.doc.getLine(cursor.row).slice(start, end).split(" ").length - 1 == tabSize; - }; - Selection.prototype.moveCursorLeft = function () { - var cursor = this.lead.getPosition(), fold; - if (fold = this.session.getFoldAt(cursor.row, cursor.column, -1)) { - this.moveCursorTo(fold.start.row, fold.start.column); - } - else if (cursor.column === 0) { - if (cursor.row > 0) { - this.moveCursorTo(cursor.row - 1, this.doc.getLine(cursor.row - 1).length); - } - } - else { - var tabSize = this.session.getTabSize(); - if (this.wouldMoveIntoSoftTab(cursor, tabSize, -1) && !this.session.getNavigateWithinSoftTabs()) { - this.moveCursorBy(0, -tabSize); - } - else { - this.moveCursorBy(0, -1); - } - } - }; - Selection.prototype.moveCursorRight = function () { - var cursor = this.lead.getPosition(), fold; - if (fold = this.session.getFoldAt(cursor.row, cursor.column, 1)) { - this.moveCursorTo(fold.end.row, fold.end.column); - } - else if (this.lead.column == this.doc.getLine(this.lead.row).length) { - if (this.lead.row < this.doc.getLength() - 1) { - this.moveCursorTo(this.lead.row + 1, 0); - } - } - else { - var tabSize = this.session.getTabSize(); - var cursor = this.lead; - if (this.wouldMoveIntoSoftTab(cursor, tabSize, 1) && !this.session.getNavigateWithinSoftTabs()) { - this.moveCursorBy(0, tabSize); - } - else { - this.moveCursorBy(0, 1); - } - } - }; - Selection.prototype.moveCursorLineStart = function () { - var row = this.lead.row; - var column = this.lead.column; - var screenRow = this.session.documentToScreenRow(row, column); - var firstColumnPosition = this.session.screenToDocumentPosition(screenRow, 0); - var beforeCursor = this.session.getDisplayLine(row, null, firstColumnPosition.row, firstColumnPosition.column); - var leadingSpace = beforeCursor.match(/^\s*/); - if (leadingSpace[0].length != column && !this.session.$useEmacsStyleLineStart) - firstColumnPosition.column += leadingSpace[0].length; - this.moveCursorToPosition(firstColumnPosition); - }; - Selection.prototype.moveCursorLineEnd = function () { - var lead = this.lead; - var lineEnd = this.session.getDocumentLastRowColumnPosition(lead.row, lead.column); - if (this.lead.column == lineEnd.column) { - var line = this.session.getLine(lineEnd.row); - if (lineEnd.column == line.length) { - var textEnd = line.search(/\s+$/); - if (textEnd > 0) - lineEnd.column = textEnd; - } - } - this.moveCursorTo(lineEnd.row, lineEnd.column); - }; - Selection.prototype.moveCursorFileEnd = function () { - var row = this.doc.getLength() - 1; - var column = this.doc.getLine(row).length; - this.moveCursorTo(row, column); - }; - Selection.prototype.moveCursorFileStart = function () { - this.moveCursorTo(0, 0); - }; - Selection.prototype.moveCursorLongWordRight = function () { - var row = this.lead.row; - var column = this.lead.column; - var line = this.doc.getLine(row); - var rightOfCursor = line.substring(column); - this.session.nonTokenRe.lastIndex = 0; - this.session.tokenRe.lastIndex = 0; - var fold = this.session.getFoldAt(row, column, 1); - if (fold) { - this.moveCursorTo(fold.end.row, fold.end.column); - return; - } - if (this.session.nonTokenRe.exec(rightOfCursor)) { - column += this.session.nonTokenRe.lastIndex; - this.session.nonTokenRe.lastIndex = 0; - rightOfCursor = line.substring(column); - } - if (column >= line.length) { - this.moveCursorTo(row, line.length); - this.moveCursorRight(); - if (row < this.doc.getLength() - 1) - this.moveCursorWordRight(); - return; - } - if (this.session.tokenRe.exec(rightOfCursor)) { - column += this.session.tokenRe.lastIndex; - this.session.tokenRe.lastIndex = 0; - } - this.moveCursorTo(row, column); - }; - Selection.prototype.moveCursorLongWordLeft = function () { - var row = this.lead.row; - var column = this.lead.column; - var fold; - if (fold = this.session.getFoldAt(row, column, -1)) { - this.moveCursorTo(fold.start.row, fold.start.column); - return; - } - var str = this.session.getFoldStringAt(row, column, -1); - if (str == null) { - str = this.doc.getLine(row).substring(0, column); - } - var leftOfCursor = lang.stringReverse(str); - this.session.nonTokenRe.lastIndex = 0; - this.session.tokenRe.lastIndex = 0; - if (this.session.nonTokenRe.exec(leftOfCursor)) { - column -= this.session.nonTokenRe.lastIndex; - leftOfCursor = leftOfCursor.slice(this.session.nonTokenRe.lastIndex); - this.session.nonTokenRe.lastIndex = 0; - } - if (column <= 0) { - this.moveCursorTo(row, 0); - this.moveCursorLeft(); - if (row > 0) - this.moveCursorWordLeft(); - return; - } - if (this.session.tokenRe.exec(leftOfCursor)) { - column -= this.session.tokenRe.lastIndex; - this.session.tokenRe.lastIndex = 0; - } - this.moveCursorTo(row, column); - }; - Selection.prototype.$shortWordEndIndex = function (rightOfCursor) { - var index = 0, ch; - var whitespaceRe = /\s/; - var tokenRe = this.session.tokenRe; - tokenRe.lastIndex = 0; - if (this.session.tokenRe.exec(rightOfCursor)) { - index = this.session.tokenRe.lastIndex; - } - else { - while ((ch = rightOfCursor[index]) && whitespaceRe.test(ch)) - index++; - if (index < 1) { - tokenRe.lastIndex = 0; - while ((ch = rightOfCursor[index]) && !tokenRe.test(ch)) { - tokenRe.lastIndex = 0; - index++; - if (whitespaceRe.test(ch)) { - if (index > 2) { - index--; - break; - } - else { - while ((ch = rightOfCursor[index]) && whitespaceRe.test(ch)) - index++; - if (index > 2) - break; - } - } - } - } - } - tokenRe.lastIndex = 0; - return index; - }; - Selection.prototype.moveCursorShortWordRight = function () { - var row = this.lead.row; - var column = this.lead.column; - var line = this.doc.getLine(row); - var rightOfCursor = line.substring(column); - var fold = this.session.getFoldAt(row, column, 1); - if (fold) - return this.moveCursorTo(fold.end.row, fold.end.column); - if (column == line.length) { - var l = this.doc.getLength(); - do { - row++; - rightOfCursor = this.doc.getLine(row); - } while (row < l && /^\s*$/.test(rightOfCursor)); - if (!/^\s+/.test(rightOfCursor)) - rightOfCursor = ""; - column = 0; - } - var index = this.$shortWordEndIndex(rightOfCursor); - this.moveCursorTo(row, column + index); - }; - Selection.prototype.moveCursorShortWordLeft = function () { - var row = this.lead.row; - var column = this.lead.column; - var fold; - if (fold = this.session.getFoldAt(row, column, -1)) - return this.moveCursorTo(fold.start.row, fold.start.column); - var line = this.session.getLine(row).substring(0, column); - if (column === 0) { - do { - row--; - line = this.doc.getLine(row); - } while (row > 0 && /^\s*$/.test(line)); - column = line.length; - if (!/\s+$/.test(line)) - line = ""; - } - var leftOfCursor = lang.stringReverse(line); - var index = this.$shortWordEndIndex(leftOfCursor); - return this.moveCursorTo(row, column - index); - }; - Selection.prototype.moveCursorWordRight = function () { - if (this.session.$selectLongWords) - this.moveCursorLongWordRight(); - else - this.moveCursorShortWordRight(); - }; - Selection.prototype.moveCursorWordLeft = function () { - if (this.session.$selectLongWords) - this.moveCursorLongWordLeft(); - else - this.moveCursorShortWordLeft(); - }; - Selection.prototype.moveCursorBy = function (rows, chars) { - var screenPos = this.session.documentToScreenPosition(this.lead.row, this.lead.column); - var offsetX; - if (chars === 0) { - if (rows !== 0) { - if (this.session.$bidiHandler.isBidiRow(screenPos.row, this.lead.row)) { - offsetX = this.session.$bidiHandler.getPosLeft(screenPos.column); - screenPos.column = Math.round(offsetX / this.session.$bidiHandler.charWidths[0]); - } - else { - offsetX = screenPos.column * this.session.$bidiHandler.charWidths[0]; - } - } - if (this.$desiredColumn) - screenPos.column = this.$desiredColumn; - else - this.$desiredColumn = screenPos.column; - } - if (rows != 0 && this.session.lineWidgets && this.session.lineWidgets[this.lead.row]) { - var widget = this.session.lineWidgets[this.lead.row]; - if (rows < 0) - rows -= widget.rowsAbove || 0; - else if (rows > 0) - rows += widget.rowCount - (widget.rowsAbove || 0); - } - var docPos = this.session.screenToDocumentPosition(screenPos.row + rows, screenPos.column, offsetX); - if (rows !== 0 && chars === 0 && docPos.row === this.lead.row && docPos.column === this.lead.column) { - } - this.moveCursorTo(docPos.row, docPos.column + chars, chars === 0); - }; - Selection.prototype.moveCursorToPosition = function (position) { - this.moveCursorTo(position.row, position.column); - }; - Selection.prototype.moveCursorTo = function (row, column, keepDesiredColumn) { - var fold = this.session.getFoldAt(row, column, 1); - if (fold) { - row = fold.start.row; - column = fold.start.column; - } - this.$keepDesiredColumnOnChange = true; - var line = this.session.getLine(row); - if (/[\uDC00-\uDFFF]/.test(line.charAt(column)) && line.charAt(column - 1)) { - if (this.lead.row == row && this.lead.column == column + 1) - column = column - 1; - else - column = column + 1; - } - this.lead.setPosition(row, column); - this.$keepDesiredColumnOnChange = false; - if (!keepDesiredColumn) - this.$desiredColumn = null; - }; - Selection.prototype.moveCursorToScreen = function (row, column, keepDesiredColumn) { - var pos = this.session.screenToDocumentPosition(row, column); - this.moveCursorTo(pos.row, pos.column, keepDesiredColumn); - }; - Selection.prototype.detach = function () { - this.lead.detach(); - this.anchor.detach(); - }; - Selection.prototype.fromOrientedRange = function (range) { - this.setSelectionRange(range, range.cursor == range.start); - this.$desiredColumn = range.desiredColumn || this.$desiredColumn; - }; - Selection.prototype.toOrientedRange = function (range) { - var r = this.getRange(); - if (range) { - range.start.column = r.start.column; - range.start.row = r.start.row; - range.end.column = r.end.column; - range.end.row = r.end.row; - } - else { - range = r; - } - range.cursor = this.isBackwards() ? range.start : range.end; - range.desiredColumn = this.$desiredColumn; - return range; - }; - Selection.prototype.getRangeOfMovements = function (func) { - var start = this.getCursor(); - try { - func(this); - var end = this.getCursor(); - return Range.fromPoints(start, end); - } - catch (e) { - return Range.fromPoints(start, start); - } - finally { - this.moveCursorToPosition(start); - } - }; - Selection.prototype.toJSON = function () { - if (this.rangeCount) { - var data = this.ranges.map(function (r) { - var r1 = r.clone(); - r1.isBackwards = r.cursor == r.start; - return r1; - }); - } - else { - var data = this.getRange(); - data.isBackwards = this.isBackwards(); - } - return data; - }; - Selection.prototype.fromJSON = function (data) { - if (data.start == undefined) { - if (this.rangeList && data.length > 1) { - this.toSingleRange(data[0]); - for (var i = data.length; i--;) { - var r = Range.fromPoints(data[i].start, data[i].end); - if (data[i].isBackwards) - r.cursor = r.start; - this.addRange(r, true); - } - return; - } - else { - data = data[0]; - } - } - if (this.rangeList) - this.toSingleRange(data); - this.setSelectionRange(data, data.isBackwards); - }; - Selection.prototype.isEqual = function (data) { - if ((data.length || this.rangeCount) && data.length != this.rangeCount) - return false; - if (!data.length || !this.ranges) - return this.getRange().isEqual(data); - for (var i = this.ranges.length; i--;) { - if (!this.ranges[i].isEqual(data[i])) - return false; - } - return true; - }; - return Selection; -}()); -Selection.prototype.setSelectionAnchor = Selection.prototype.setAnchor; -Selection.prototype.getSelectionAnchor = Selection.prototype.getAnchor; -Selection.prototype.setSelectionRange = Selection.prototype.setRange; -oop.implement(Selection.prototype, EventEmitter); -exports.Selection = Selection; - -}); - -ace.define("ace/tokenizer",["require","exports","module","ace/lib/report_error"], function(require, exports, module){"use strict"; -var reportError = require("./lib/report_error").reportError; -var MAX_TOKEN_COUNT = 2000; -var Tokenizer = /** @class */ (function () { - function Tokenizer(rules) { - this.states = rules; - this.regExps = {}; - this.matchMappings = {}; - for (var key in this.states) { - var state = this.states[key]; - var ruleRegExps = []; - var matchTotal = 0; - var mapping = this.matchMappings[key] = { defaultToken: "text" }; - var flag = "g"; - var splitterRurles = []; - for (var i = 0; i < state.length; i++) { - var rule = state[i]; - if (rule.defaultToken) - mapping.defaultToken = rule.defaultToken; - if (rule.caseInsensitive && flag.indexOf("i") === -1) - flag += "i"; - if (rule.unicode && flag.indexOf("u") === -1) - flag += "u"; - if (rule.regex == null) - continue; - if (rule.regex instanceof RegExp) - rule.regex = rule.regex.toString().slice(1, -1); - var adjustedregex = rule.regex; - var matchcount = new RegExp("(?:(" + adjustedregex + ")|(.))").exec("a").length - 2; - if (Array.isArray(rule.token)) { - if (rule.token.length == 1 || matchcount == 1) { - rule.token = rule.token[0]; - } - else if (matchcount - 1 != rule.token.length) { - this.reportError("number of classes and regexp groups doesn't match", { - rule: rule, - groupCount: matchcount - 1 - }); - rule.token = rule.token[0]; - } - else { - rule.tokenArray = rule.token; - rule.token = null; - rule.onMatch = this.$arrayTokens; - } - } - else if (typeof rule.token == "function" && !rule.onMatch) { - if (matchcount > 1) - rule.onMatch = this.$applyToken; - else - rule.onMatch = rule.token; - } - if (matchcount > 1) { - if (/\\\d/.test(rule.regex)) { - adjustedregex = rule.regex.replace(/\\([0-9]+)/g, function (match, digit) { - return "\\" + (parseInt(digit, 10) + matchTotal + 1); - }); - } - else { - matchcount = 1; - adjustedregex = this.removeCapturingGroups(rule.regex); - } - if (!rule.splitRegex && typeof rule.token != "string") - splitterRurles.push(rule); // flag will be known only at the very end - } - mapping[matchTotal] = i; - matchTotal += matchcount; - ruleRegExps.push(adjustedregex); - if (!rule.onMatch) - rule.onMatch = null; - } - if (!ruleRegExps.length) { - mapping[0] = 0; - ruleRegExps.push("$"); - } - splitterRurles.forEach(function (rule) { - rule.splitRegex = this.createSplitterRegexp(rule.regex, flag); - }, this); - this.regExps[key] = new RegExp("(" + ruleRegExps.join(")|(") + ")|($)", flag); - } - } - Tokenizer.prototype.$setMaxTokenCount = function (m) { - MAX_TOKEN_COUNT = m | 0; - }; - Tokenizer.prototype.$applyToken = function (str) { - var values = this.splitRegex.exec(str).slice(1); - var types = this.token.apply(this, values); - if (typeof types === "string") - return [{ type: types, value: str }]; - var tokens = []; - for (var i = 0, l = types.length; i < l; i++) { - if (values[i]) - tokens[tokens.length] = { - type: types[i], - value: values[i] - }; - } - return tokens; - }; - Tokenizer.prototype.$arrayTokens = function (str) { - if (!str) - return []; - var values = this.splitRegex.exec(str); - if (!values) - return "text"; - var tokens = []; - var types = this.tokenArray; - for (var i = 0, l = types.length; i < l; i++) { - if (values[i + 1]) - tokens[tokens.length] = { - type: types[i], - value: values[i + 1] - }; - } - return tokens; - }; - Tokenizer.prototype.removeCapturingGroups = function (src) { - var r = src.replace(/\\.|\[(?:\\.|[^\\\]])*|\(\?[:=!<]|(\()/g, function (x, y) { return y ? "(?:" : x; }); - return r; - }; - Tokenizer.prototype.createSplitterRegexp = function (src, flag) { - if (src.indexOf("(?=") != -1) { - var stack = 0; - var inChClass = false; - var lastCapture = {}; - src.replace(/(\\.)|(\((?:\?[=!])?)|(\))|([\[\]])/g, function (m, esc, parenOpen, parenClose, square, index) { - if (inChClass) { - inChClass = square != "]"; - } - else if (square) { - inChClass = true; - } - else if (parenClose) { - if (stack == lastCapture.stack) { - lastCapture.end = index + 1; - lastCapture.stack = -1; - } - stack--; - } - else if (parenOpen) { - stack++; - if (parenOpen.length != 1) { - lastCapture.stack = stack; - lastCapture.start = index; - } - } - return m; - }); - if (lastCapture.end != null && /^\)*$/.test(src.substr(lastCapture.end))) - src = src.substring(0, lastCapture.start) + src.substr(lastCapture.end); - } - if (src.charAt(0) != "^") - src = "^" + src; - if (src.charAt(src.length - 1) != "$") - src += "$"; - return new RegExp(src, (flag || "").replace("g", "")); - }; - Tokenizer.prototype.getLineTokens = function (line, startState) { - if (startState && typeof startState != "string") { - var stack = startState.slice(0); - startState = stack[0]; - if (startState === "#tmp") { - stack.shift(); - startState = stack.shift(); - } - } - else - var stack = []; - var currentState = startState || "start"; - var state = this.states[currentState]; - if (!state) { - currentState = "start"; - state = this.states[currentState]; - } - var mapping = this.matchMappings[currentState]; - var re = this.regExps[currentState]; - re.lastIndex = 0; - var match, tokens = []; - var lastIndex = 0; - var matchAttempts = 0; - var token = { type: null, value: "" }; - while (match = re.exec(line)) { - var type = mapping.defaultToken; - var rule = null; - var value = match[0]; - var index = re.lastIndex; - if (index - value.length > lastIndex) { - var skipped = line.substring(lastIndex, index - value.length); - if (token.type == type) { - token.value += skipped; - } - else { - if (token.type) - tokens.push(token); - token = { type: type, value: skipped }; - } - } - for (var i = 0; i < match.length - 2; i++) { - if (match[i + 1] === undefined) - continue; - rule = state[mapping[i]]; - if (rule.onMatch) - type = rule.onMatch(value, currentState, stack, line); - else - type = rule.token; - if (rule.next) { - if (typeof rule.next == "string") { - currentState = rule.next; - } - else { - currentState = rule.next(currentState, stack); - } - state = this.states[currentState]; - if (!state) { - this.reportError("state doesn't exist", currentState); - currentState = "start"; - state = this.states[currentState]; - } - mapping = this.matchMappings[currentState]; - lastIndex = index; - re = this.regExps[currentState]; - re.lastIndex = index; - } - if (rule.consumeLineEnd) - lastIndex = index; - break; - } - if (value) { - if (typeof type === "string") { - if ((!rule || rule.merge !== false) && token.type === type) { - token.value += value; - } - else { - if (token.type) - tokens.push(token); - token = { type: type, value: value }; - } - } - else if (type) { - if (token.type) - tokens.push(token); - token = { type: null, value: "" }; - for (var i = 0; i < type.length; i++) - tokens.push(type[i]); - } - } - if (lastIndex == line.length) - break; - lastIndex = index; - if (matchAttempts++ > MAX_TOKEN_COUNT) { - if (matchAttempts > 2 * line.length) { - this.reportError("infinite loop with in ace tokenizer", { - startState: startState, - line: line - }); - } - while (lastIndex < line.length) { - if (token.type) - tokens.push(token); - token = { - value: line.substring(lastIndex, lastIndex += 500), - type: "overflow" - }; - } - currentState = "start"; - stack = []; - break; - } - } - if (token.type) - tokens.push(token); - if (stack.length > 1) { - if (stack[0] !== currentState) - stack.unshift("#tmp", currentState); - } - return { - tokens: tokens, - state: stack.length ? stack : currentState - }; - }; - return Tokenizer; -}()); -Tokenizer.prototype.reportError = reportError; -exports.Tokenizer = Tokenizer; - -}); - -ace.define("ace/mode/text_highlight_rules",["require","exports","module","ace/lib/deep_copy"], function(require, exports, module){"use strict"; -var deepCopy = require("../lib/deep_copy").deepCopy; -var TextHighlightRules = function () { - this.$rules = { - "start": [{ - token: "empty_line", - regex: '^$' - }, { - defaultToken: "text" - }] - }; -}; -(function () { - this.addRules = function (rules, prefix) { - if (!prefix) { - for (var key in rules) - this.$rules[key] = rules[key]; - return; - } - for (var key in rules) { - var state = rules[key]; - for (var i = 0; i < state.length; i++) { - var rule = state[i]; - if (rule.next || rule.onMatch) { - if (typeof rule.next == "string") { - if (rule.next.indexOf(prefix) !== 0) - rule.next = prefix + rule.next; - } - if (rule.nextState && rule.nextState.indexOf(prefix) !== 0) - rule.nextState = prefix + rule.nextState; - } - } - this.$rules[prefix + key] = state; - } - }; - this.getRules = function () { - return this.$rules; - }; - this.embedRules = function (HighlightRules, prefix, escapeRules, states, append) { - var embedRules = typeof HighlightRules == "function" - ? new HighlightRules().getRules() - : HighlightRules; - if (states) { - for (var i = 0; i < states.length; i++) - states[i] = prefix + states[i]; - } - else { - states = []; - for (var key in embedRules) - states.push(prefix + key); - } - this.addRules(embedRules, prefix); - if (escapeRules) { - var addRules = Array.prototype[append ? "push" : "unshift"]; - for (var i = 0; i < states.length; i++) - addRules.apply(this.$rules[states[i]], deepCopy(escapeRules)); - } - if (!this.$embeds) - this.$embeds = []; - this.$embeds.push(prefix); - }; - this.getEmbeds = function () { - return this.$embeds; - }; - var pushState = function (currentState, stack) { - if (currentState != "start" || stack.length) - stack.unshift(this.nextState, currentState); - return this.nextState; - }; - var popState = function (currentState, stack) { - stack.shift(); - return stack.shift() || "start"; - }; - this.normalizeRules = function () { - var id = 0; - var rules = this.$rules; - function processState(key) { - var state = rules[key]; - state.processed = true; - for (var i = 0; i < state.length; i++) { - var rule = state[i]; - var toInsert = null; - if (Array.isArray(rule)) { - toInsert = rule; - rule = {}; - } - if (!rule.regex && rule.start) { - rule.regex = rule.start; - if (!rule.next) - rule.next = []; - rule.next.push({ - defaultToken: rule.token - }, { - token: rule.token + ".end", - regex: rule.end || rule.start, - next: "pop" - }); - rule.token = rule.token + ".start"; - rule.push = true; - } - var next = rule.next || rule.push; - if (next && Array.isArray(next)) { - var stateName = rule.stateName; - if (!stateName) { - stateName = rule.token; - if (typeof stateName != "string") - stateName = stateName[0] || ""; - if (rules[stateName]) - stateName += id++; - } - rules[stateName] = next; - rule.next = stateName; - processState(stateName); - } - else if (next == "pop") { - rule.next = popState; - } - if (rule.push) { - rule.nextState = rule.next || rule.push; - rule.next = pushState; - delete rule.push; - } - if (rule.rules) { - for (var r in rule.rules) { - if (rules[r]) { - if (rules[r].push) - rules[r].push.apply(rules[r], rule.rules[r]); - } - else { - rules[r] = rule.rules[r]; - } - } - } - var includeName = typeof rule == "string" ? rule : rule.include; - if (includeName) { - if (includeName === "$self") - includeName = "start"; - if (Array.isArray(includeName)) - toInsert = includeName.map(function (x) { return rules[x]; }); - else - toInsert = rules[includeName]; - } - if (toInsert) { - var args = [i, 1].concat(toInsert); - if (rule.noEscape) - args = args.filter(function (x) { return !x.next; }); - state.splice.apply(state, args); - i--; - } - if (rule.keywordMap) { - rule.token = this.createKeywordMapper(rule.keywordMap, rule.defaultToken || "text", rule.caseInsensitive); - delete rule.defaultToken; - } - } - } - Object.keys(rules).forEach(processState, this); - }; - this.createKeywordMapper = function (map, defaultToken, ignoreCase, splitChar) { - var keywords = Object.create(null); - this.$keywordList = []; - Object.keys(map).forEach(function (className) { - var a = map[className]; - var list = a.split(splitChar || "|"); - for (var i = list.length; i--;) { - var word = list[i]; - this.$keywordList.push(word); - if (ignoreCase) - word = word.toLowerCase(); - keywords[word] = className; - } - }, this); - map = null; - return ignoreCase - ? function (value) { return keywords[value.toLowerCase()] || defaultToken; } - : function (value) { return keywords[value] || defaultToken; }; - }; - this.getKeywords = function () { - return this.$keywords; - }; -}).call(TextHighlightRules.prototype); -exports.TextHighlightRules = TextHighlightRules; - -}); - -ace.define("ace/mode/behaviour",["require","exports","module"], function(require, exports, module){"use strict"; -var Behaviour = function () { - this.$behaviours = {}; -}; -(function () { - this.add = function (name, action, callback) { - switch (undefined) { - case this.$behaviours: - this.$behaviours = {}; - case this.$behaviours[name]: - this.$behaviours[name] = {}; - } - this.$behaviours[name][action] = callback; - }; - this.addBehaviours = function (behaviours) { - for (var key in behaviours) { - for (var action in behaviours[key]) { - this.add(key, action, behaviours[key][action]); - } - } - }; - this.remove = function (name) { - if (this.$behaviours && this.$behaviours[name]) { - delete this.$behaviours[name]; - } - }; - this.inherit = function (mode, filter) { - if (typeof mode === "function") { - var behaviours = new mode().getBehaviours(filter); - } - else { - var behaviours = mode.getBehaviours(filter); - } - this.addBehaviours(behaviours); - }; - this.getBehaviours = function (filter) { - if (!filter) { - return this.$behaviours; - } - else { - var ret = {}; - for (var i = 0; i < filter.length; i++) { - if (this.$behaviours[filter[i]]) { - ret[filter[i]] = this.$behaviours[filter[i]]; - } - } - return ret; - } - }; -}).call(Behaviour.prototype); -exports.Behaviour = Behaviour; - -}); - -ace.define("ace/token_iterator",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; -var Range = require("./range").Range; -var TokenIterator = /** @class */ (function () { - function TokenIterator(session, initialRow, initialColumn) { - this.$session = session; - this.$row = initialRow; - this.$rowTokens = session.getTokens(initialRow); - var token = session.getTokenAt(initialRow, initialColumn); - this.$tokenIndex = token ? token.index : -1; - } - TokenIterator.prototype.stepBackward = function () { - this.$tokenIndex -= 1; - while (this.$tokenIndex < 0) { - this.$row -= 1; - if (this.$row < 0) { - this.$row = 0; - return null; - } - this.$rowTokens = this.$session.getTokens(this.$row); - this.$tokenIndex = this.$rowTokens.length - 1; - } - return this.$rowTokens[this.$tokenIndex]; - }; - TokenIterator.prototype.stepForward = function () { - this.$tokenIndex += 1; - var rowCount; - while (this.$tokenIndex >= this.$rowTokens.length) { - this.$row += 1; - if (!rowCount) - rowCount = this.$session.getLength(); - if (this.$row >= rowCount) { - this.$row = rowCount - 1; - return null; - } - this.$rowTokens = this.$session.getTokens(this.$row); - this.$tokenIndex = 0; - } - return this.$rowTokens[this.$tokenIndex]; - }; - TokenIterator.prototype.getCurrentToken = function () { - return this.$rowTokens[this.$tokenIndex]; - }; - TokenIterator.prototype.getCurrentTokenRow = function () { - return this.$row; - }; - TokenIterator.prototype.getCurrentTokenColumn = function () { - var rowTokens = this.$rowTokens; - var tokenIndex = this.$tokenIndex; - var column = rowTokens[tokenIndex].start; - if (column !== undefined) - return column; - column = 0; - while (tokenIndex > 0) { - tokenIndex -= 1; - column += rowTokens[tokenIndex].value.length; - } - return column; - }; - TokenIterator.prototype.getCurrentTokenPosition = function () { - return { row: this.$row, column: this.getCurrentTokenColumn() }; - }; - TokenIterator.prototype.getCurrentTokenRange = function () { - var token = this.$rowTokens[this.$tokenIndex]; - var column = this.getCurrentTokenColumn(); - return new Range(this.$row, column, this.$row, column + token.value.length); - }; - return TokenIterator; -}()); -exports.TokenIterator = TokenIterator; - -}); - -ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"], function(require, exports, module){"use strict"; -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; -var lang = require("../../lib/lang"); -var SAFE_INSERT_IN_TOKENS = ["text", "paren.rparen", "rparen", "paren", "punctuation.operator"]; -var SAFE_INSERT_BEFORE_TOKENS = ["text", "paren.rparen", "rparen", "paren", "punctuation.operator", "comment"]; -var context; -var contextCache = {}; -var defaultQuotes = { '"': '"', "'": "'" }; -var initContext = function (editor) { - var id = -1; - if (editor.multiSelect) { - id = editor.selection.index; - if (contextCache.rangeCount != editor.multiSelect.rangeCount) - contextCache = { rangeCount: editor.multiSelect.rangeCount }; - } - if (contextCache[id]) - return context = contextCache[id]; - context = contextCache[id] = { - autoInsertedBrackets: 0, - autoInsertedRow: -1, - autoInsertedLineEnd: "", - maybeInsertedBrackets: 0, - maybeInsertedRow: -1, - maybeInsertedLineStart: "", - maybeInsertedLineEnd: "" - }; -}; -var getWrapped = function (selection, selected, opening, closing) { - var rowDiff = selection.end.row - selection.start.row; - return { - text: opening + selected + closing, - selection: [ - 0, - selection.start.column + 1, - rowDiff, - selection.end.column + (rowDiff ? 0 : 1) - ] - }; -}; -var CstyleBehaviour = function (options) { - options = options || {}; - this.add("braces", "insertion", function (state, action, editor, session, text) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (text == '{') { - initContext(editor); - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && selected !== "{" && editor.getWrapBehavioursEnabled()) { - return getWrapped(selection, selected, '{', '}'); - } - else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - if (/[\]\}\)]/.test(line[cursor.column]) || editor.inMultiSelectMode || options.braces) { - CstyleBehaviour.recordAutoInsert(editor, session, "}"); - return { - text: '{}', - selection: [1, 1] - }; - } - else { - CstyleBehaviour.recordMaybeInsert(editor, session, "{"); - return { - text: '{', - selection: [1, 1] - }; - } - } - } - else if (text == '}') { - initContext(editor); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == '}') { - var matching = session.$findOpeningBracket('}', { column: cursor.column + 1, row: cursor.row }); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } - else if (text == "\n" || text == "\r\n") { - initContext(editor); - var closing = ""; - if (CstyleBehaviour.isMaybeInsertedClosing(cursor, line)) { - closing = lang.stringRepeat("}", context.maybeInsertedBrackets); - CstyleBehaviour.clearMaybeInsertedClosing(); - } - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === '}') { - var openBracePos = session.findMatchingBracket({ row: cursor.row, column: cursor.column + 1 }, '}'); - if (!openBracePos) - return null; - var next_indent = this.$getIndent(session.getLine(openBracePos.row)); - } - else if (closing) { - var next_indent = this.$getIndent(line); - } - else { - CstyleBehaviour.clearMaybeInsertedClosing(); - return; - } - var indent = next_indent + session.getTabString(); - return { - text: '\n' + indent + '\n' + next_indent + closing, - selection: [1, indent.length, 1, indent.length] - }; - } - else { - CstyleBehaviour.clearMaybeInsertedClosing(); - } - }); - this.add("braces", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '{') { - initContext(editor); - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.end.column, range.end.column + 1); - if (rightChar == '}') { - range.end.column++; - return range; - } - else { - context.maybeInsertedBrackets--; - } - } - }); - this.add("parens", "insertion", function (state, action, editor, session, text) { - if (text == '(') { - initContext(editor); - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && editor.getWrapBehavioursEnabled()) { - return getWrapped(selection, selected, '(', ')'); - } - else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - CstyleBehaviour.recordAutoInsert(editor, session, ")"); - return { - text: '()', - selection: [1, 1] - }; - } - } - else if (text == ')') { - initContext(editor); - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == ')') { - var matching = session.$findOpeningBracket(')', { column: cursor.column + 1, row: cursor.row }); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } - }); - this.add("parens", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '(') { - initContext(editor); - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == ')') { - range.end.column++; - return range; - } - } - }); - this.add("brackets", "insertion", function (state, action, editor, session, text) { - if (text == '[') { - initContext(editor); - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && editor.getWrapBehavioursEnabled()) { - return getWrapped(selection, selected, '[', ']'); - } - else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - CstyleBehaviour.recordAutoInsert(editor, session, "]"); - return { - text: '[]', - selection: [1, 1] - }; - } - } - else if (text == ']') { - initContext(editor); - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == ']') { - var matching = session.$findOpeningBracket(']', { column: cursor.column + 1, row: cursor.row }); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } - }); - this.add("brackets", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '[') { - initContext(editor); - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == ']') { - range.end.column++; - return range; - } - } - }); - this.add("string_dquotes", "insertion", function (state, action, editor, session, text) { - var quotes = session.$mode.$quotes || defaultQuotes; - if (text.length == 1 && quotes[text]) { - if (this.lineCommentStart && this.lineCommentStart.indexOf(text) != -1) - return; - initContext(editor); - var quote = text; - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && (selected.length != 1 || !quotes[selected]) && editor.getWrapBehavioursEnabled()) { - return getWrapped(selection, selected, quote, quote); - } - else if (!selected) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var leftChar = line.substring(cursor.column - 1, cursor.column); - var rightChar = line.substring(cursor.column, cursor.column + 1); - var token = session.getTokenAt(cursor.row, cursor.column); - var rightToken = session.getTokenAt(cursor.row, cursor.column + 1); - if (leftChar == "\\" && token && /escape/.test(token.type)) - return null; - var stringBefore = token && /string|escape/.test(token.type); - var stringAfter = !rightToken || /string|escape/.test(rightToken.type); - var pair; - if (rightChar == quote) { - pair = stringBefore !== stringAfter; - if (pair && /string\.end/.test(rightToken.type)) - pair = false; - } - else { - if (stringBefore && !stringAfter) - return null; // wrap string with different quote - if (stringBefore && stringAfter) - return null; // do not pair quotes inside strings - var wordRe = session.$mode.tokenRe; - wordRe.lastIndex = 0; - var isWordBefore = wordRe.test(leftChar); - wordRe.lastIndex = 0; - var isWordAfter = wordRe.test(rightChar); - var pairQuotesAfter = session.$mode.$pairQuotesAfter; - var shouldPairQuotes = pairQuotesAfter && pairQuotesAfter[quote] && pairQuotesAfter[quote].test(leftChar); - if ((!shouldPairQuotes && isWordBefore) || isWordAfter) - return null; // before or after alphanumeric - if (rightChar && !/[\s;,.})\]\\]/.test(rightChar)) - return null; // there is rightChar and it isn't closing - var charBefore = line[cursor.column - 2]; - if (leftChar == quote && (charBefore == quote || wordRe.test(charBefore))) - return null; - pair = true; - } - return { - text: pair ? quote + quote : "", - selection: [1, 1] - }; - } - } - }); - this.add("string_dquotes", "deletion", function (state, action, editor, session, range) { - var quotes = session.$mode.$quotes || defaultQuotes; - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && quotes.hasOwnProperty(selected)) { - initContext(editor); - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == selected) { - range.end.column++; - return range; - } - } - }); - if (options.closeDocComment !== false) { - this.add("doc comment end", "insertion", function (state, action, editor, session, text) { - if (state === "doc-start" && (text === "\n" || text === "\r\n") && editor.selection.isEmpty()) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var nextLine = session.doc.getLine(cursor.row + 1); - var indent = this.$getIndent(line); - if (/\s*\*/.test(nextLine)) { - if (/^\s*\*/.test(line)) { - return { - text: text + indent + "* ", - selection: [1, 3 + indent.length, 1, 3 + indent.length] - }; - } - else { - return { - text: text + indent + " * ", - selection: [1, 3 + indent.length, 1, 3 + indent.length] - }; - } - } - if (/\/\*\*/.test(line.substring(0, cursor.column))) { - return { - text: text + indent + " * " + text + " " + indent + "*/", - selection: [1, 4 + indent.length, 1, 4 + indent.length] - }; - } - } - }); - } -}; -CstyleBehaviour.isSaneInsertion = function (editor, session) { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - if (!this.$matchTokenType(iterator.getCurrentToken() || "text", SAFE_INSERT_IN_TOKENS)) { - if (/[)}\]]/.test(editor.session.getLine(cursor.row)[cursor.column])) - return true; - var iterator2 = new TokenIterator(session, cursor.row, cursor.column + 1); - if (!this.$matchTokenType(iterator2.getCurrentToken() || "text", SAFE_INSERT_IN_TOKENS)) - return false; - } - iterator.stepForward(); - return iterator.getCurrentTokenRow() !== cursor.row || - this.$matchTokenType(iterator.getCurrentToken() || "text", SAFE_INSERT_BEFORE_TOKENS); -}; -CstyleBehaviour.$matchTokenType = function (token, types) { - return types.indexOf(token.type || token) > -1; -}; -CstyleBehaviour.recordAutoInsert = function (editor, session, bracket) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (!this.isAutoInsertedClosing(cursor, line, context.autoInsertedLineEnd[0])) - context.autoInsertedBrackets = 0; - context.autoInsertedRow = cursor.row; - context.autoInsertedLineEnd = bracket + line.substr(cursor.column); - context.autoInsertedBrackets++; -}; -CstyleBehaviour.recordMaybeInsert = function (editor, session, bracket) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (!this.isMaybeInsertedClosing(cursor, line)) - context.maybeInsertedBrackets = 0; - context.maybeInsertedRow = cursor.row; - context.maybeInsertedLineStart = line.substr(0, cursor.column) + bracket; - context.maybeInsertedLineEnd = line.substr(cursor.column); - context.maybeInsertedBrackets++; -}; -CstyleBehaviour.isAutoInsertedClosing = function (cursor, line, bracket) { - return context.autoInsertedBrackets > 0 && - cursor.row === context.autoInsertedRow && - bracket === context.autoInsertedLineEnd[0] && - line.substr(cursor.column) === context.autoInsertedLineEnd; -}; -CstyleBehaviour.isMaybeInsertedClosing = function (cursor, line) { - return context.maybeInsertedBrackets > 0 && - cursor.row === context.maybeInsertedRow && - line.substr(cursor.column) === context.maybeInsertedLineEnd && - line.substr(0, cursor.column) == context.maybeInsertedLineStart; -}; -CstyleBehaviour.popAutoInsertedClosing = function () { - context.autoInsertedLineEnd = context.autoInsertedLineEnd.substr(1); - context.autoInsertedBrackets--; -}; -CstyleBehaviour.clearMaybeInsertedClosing = function () { - if (context) { - context.maybeInsertedBrackets = 0; - context.maybeInsertedRow = -1; - } -}; -oop.inherits(CstyleBehaviour, Behaviour); -exports.CstyleBehaviour = CstyleBehaviour; - -}); - -ace.define("ace/unicode",["require","exports","module"], function(require, exports, module){"use strict"; -var wordChars = [48, 9, 8, 25, 5, 0, 2, 25, 48, 0, 11, 0, 5, 0, 6, 22, 2, 30, 2, 457, 5, 11, 15, 4, 8, 0, 2, 0, 18, 116, 2, 1, 3, 3, 9, 0, 2, 2, 2, 0, 2, 19, 2, 82, 2, 138, 2, 4, 3, 155, 12, 37, 3, 0, 8, 38, 10, 44, 2, 0, 2, 1, 2, 1, 2, 0, 9, 26, 6, 2, 30, 10, 7, 61, 2, 9, 5, 101, 2, 7, 3, 9, 2, 18, 3, 0, 17, 58, 3, 100, 15, 53, 5, 0, 6, 45, 211, 57, 3, 18, 2, 5, 3, 11, 3, 9, 2, 1, 7, 6, 2, 2, 2, 7, 3, 1, 3, 21, 2, 6, 2, 0, 4, 3, 3, 8, 3, 1, 3, 3, 9, 0, 5, 1, 2, 4, 3, 11, 16, 2, 2, 5, 5, 1, 3, 21, 2, 6, 2, 1, 2, 1, 2, 1, 3, 0, 2, 4, 5, 1, 3, 2, 4, 0, 8, 3, 2, 0, 8, 15, 12, 2, 2, 8, 2, 2, 2, 21, 2, 6, 2, 1, 2, 4, 3, 9, 2, 2, 2, 2, 3, 0, 16, 3, 3, 9, 18, 2, 2, 7, 3, 1, 3, 21, 2, 6, 2, 1, 2, 4, 3, 8, 3, 1, 3, 2, 9, 1, 5, 1, 2, 4, 3, 9, 2, 0, 17, 1, 2, 5, 4, 2, 2, 3, 4, 1, 2, 0, 2, 1, 4, 1, 4, 2, 4, 11, 5, 4, 4, 2, 2, 3, 3, 0, 7, 0, 15, 9, 18, 2, 2, 7, 2, 2, 2, 22, 2, 9, 2, 4, 4, 7, 2, 2, 2, 3, 8, 1, 2, 1, 7, 3, 3, 9, 19, 1, 2, 7, 2, 2, 2, 22, 2, 9, 2, 4, 3, 8, 2, 2, 2, 3, 8, 1, 8, 0, 2, 3, 3, 9, 19, 1, 2, 7, 2, 2, 2, 22, 2, 15, 4, 7, 2, 2, 2, 3, 10, 0, 9, 3, 3, 9, 11, 5, 3, 1, 2, 17, 4, 23, 2, 8, 2, 0, 3, 6, 4, 0, 5, 5, 2, 0, 2, 7, 19, 1, 14, 57, 6, 14, 2, 9, 40, 1, 2, 0, 3, 1, 2, 0, 3, 0, 7, 3, 2, 6, 2, 2, 2, 0, 2, 0, 3, 1, 2, 12, 2, 2, 3, 4, 2, 0, 2, 5, 3, 9, 3, 1, 35, 0, 24, 1, 7, 9, 12, 0, 2, 0, 2, 0, 5, 9, 2, 35, 5, 19, 2, 5, 5, 7, 2, 35, 10, 0, 58, 73, 7, 77, 3, 37, 11, 42, 2, 0, 4, 328, 2, 3, 3, 6, 2, 0, 2, 3, 3, 40, 2, 3, 3, 32, 2, 3, 3, 6, 2, 0, 2, 3, 3, 14, 2, 56, 2, 3, 3, 66, 5, 0, 33, 15, 17, 84, 13, 619, 3, 16, 2, 25, 6, 74, 22, 12, 2, 6, 12, 20, 12, 19, 13, 12, 2, 2, 2, 1, 13, 51, 3, 29, 4, 0, 5, 1, 3, 9, 34, 2, 3, 9, 7, 87, 9, 42, 6, 69, 11, 28, 4, 11, 5, 11, 11, 39, 3, 4, 12, 43, 5, 25, 7, 10, 38, 27, 5, 62, 2, 28, 3, 10, 7, 9, 14, 0, 89, 75, 5, 9, 18, 8, 13, 42, 4, 11, 71, 55, 9, 9, 4, 48, 83, 2, 2, 30, 14, 230, 23, 280, 3, 5, 3, 37, 3, 5, 3, 7, 2, 0, 2, 0, 2, 0, 2, 30, 3, 52, 2, 6, 2, 0, 4, 2, 2, 6, 4, 3, 3, 5, 5, 12, 6, 2, 2, 6, 67, 1, 20, 0, 29, 0, 14, 0, 17, 4, 60, 12, 5, 0, 4, 11, 18, 0, 5, 0, 3, 9, 2, 0, 4, 4, 7, 0, 2, 0, 2, 0, 2, 3, 2, 10, 3, 3, 6, 4, 5, 0, 53, 1, 2684, 46, 2, 46, 2, 132, 7, 6, 15, 37, 11, 53, 10, 0, 17, 22, 10, 6, 2, 6, 2, 6, 2, 6, 2, 6, 2, 6, 2, 6, 2, 6, 2, 31, 48, 0, 470, 1, 36, 5, 2, 4, 6, 1, 5, 85, 3, 1, 3, 2, 2, 89, 2, 3, 6, 40, 4, 93, 18, 23, 57, 15, 513, 6581, 75, 20939, 53, 1164, 68, 45, 3, 268, 4, 27, 21, 31, 3, 13, 13, 1, 2, 24, 9, 69, 11, 1, 38, 8, 3, 102, 3, 1, 111, 44, 25, 51, 13, 68, 12, 9, 7, 23, 4, 0, 5, 45, 3, 35, 13, 28, 4, 64, 15, 10, 39, 54, 10, 13, 3, 9, 7, 22, 4, 1, 5, 66, 25, 2, 227, 42, 2, 1, 3, 9, 7, 11171, 13, 22, 5, 48, 8453, 301, 3, 61, 3, 105, 39, 6, 13, 4, 6, 11, 2, 12, 2, 4, 2, 0, 2, 1, 2, 1, 2, 107, 34, 362, 19, 63, 3, 53, 41, 11, 5, 15, 17, 6, 13, 1, 25, 2, 33, 4, 2, 134, 20, 9, 8, 25, 5, 0, 2, 25, 12, 88, 4, 5, 3, 5, 3, 5, 3, 2]; -var code = 0; -var str = []; -for (var i = 0; i < wordChars.length; i += 2) { - str.push(code += wordChars[i]); - if (wordChars[i + 1]) - str.push(45, code += wordChars[i + 1]); -} -exports.wordChars = String.fromCharCode.apply(null, str); - -}); - -ace.define("ace/mode/text",["require","exports","module","ace/config","ace/tokenizer","ace/mode/text_highlight_rules","ace/mode/behaviour/cstyle","ace/unicode","ace/lib/lang","ace/token_iterator","ace/range"], function(require, exports, module){"use strict"; -var config = require("../config"); -var Tokenizer = require("../tokenizer").Tokenizer; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; -var unicode = require("../unicode"); -var lang = require("../lib/lang"); -var TokenIterator = require("../token_iterator").TokenIterator; -var Range = require("../range").Range; -var Mode = function () { - this.HighlightRules = TextHighlightRules; -}; -(function () { - this.$defaultBehaviour = new CstyleBehaviour(); - this.tokenRe = new RegExp("^[" + unicode.wordChars + "\\$_]+", "g"); - this.nonTokenRe = new RegExp("^(?:[^" + unicode.wordChars + "\\$_]|\\s])+", "g"); - this.getTokenizer = function () { - if (!this.$tokenizer) { - this.$highlightRules = this.$highlightRules || new this.HighlightRules(this.$highlightRuleConfig); - this.$tokenizer = new Tokenizer(this.$highlightRules.getRules()); - } - return this.$tokenizer; - }; - this.lineCommentStart = ""; - this.blockComment = ""; - this.toggleCommentLines = function (state, session, startRow, endRow) { - var doc = session.doc; - var ignoreBlankLines = true; - var shouldRemove = true; - var minIndent = Infinity; - var tabSize = session.getTabSize(); - var insertAtTabStop = false; - if (!this.lineCommentStart) { - if (!this.blockComment) - return false; - var lineCommentStart = this.blockComment.start; - var lineCommentEnd = this.blockComment.end; - var regexpStart = new RegExp("^(\\s*)(?:" + lang.escapeRegExp(lineCommentStart) + ")"); - var regexpEnd = new RegExp("(?:" + lang.escapeRegExp(lineCommentEnd) + ")\\s*$"); - var comment = function (line, i) { - if (testRemove(line, i)) - return; - if (!ignoreBlankLines || /\S/.test(line)) { - doc.insertInLine({ row: i, column: line.length }, lineCommentEnd); - doc.insertInLine({ row: i, column: minIndent }, lineCommentStart); - } - }; - var uncomment = function (line, i) { - var m; - if (m = line.match(regexpEnd)) - doc.removeInLine(i, line.length - m[0].length, line.length); - if (m = line.match(regexpStart)) - doc.removeInLine(i, m[1].length, m[0].length); - }; - var testRemove = function (line, row) { - if (regexpStart.test(line)) - return true; - var tokens = session.getTokens(row); - for (var i = 0; i < tokens.length; i++) { - if (tokens[i].type === "comment") - return true; - } - }; - } - else { - if (Array.isArray(this.lineCommentStart)) { - var regexpStart = this.lineCommentStart.map(lang.escapeRegExp).join("|"); - var lineCommentStart = this.lineCommentStart[0]; - } - else { - var regexpStart = lang.escapeRegExp(this.lineCommentStart); - var lineCommentStart = this.lineCommentStart; - } - regexpStart = new RegExp("^(\\s*)(?:" + regexpStart + ") ?"); - insertAtTabStop = session.getUseSoftTabs(); - var uncomment = function (line, i) { - var m = line.match(regexpStart); - if (!m) - return; - var start = m[1].length, end = m[0].length; - if (!shouldInsertSpace(line, start, end) && m[0][end - 1] == " ") - end--; - doc.removeInLine(i, start, end); - }; - var commentWithSpace = lineCommentStart + " "; - var comment = function (line, i) { - if (!ignoreBlankLines || /\S/.test(line)) { - if (shouldInsertSpace(line, minIndent, minIndent)) - doc.insertInLine({ row: i, column: minIndent }, commentWithSpace); - else - doc.insertInLine({ row: i, column: minIndent }, lineCommentStart); - } - }; - var testRemove = function (line, i) { - return regexpStart.test(line); - }; - var shouldInsertSpace = function (line, before, after) { - var spaces = 0; - while (before-- && line.charAt(before) == " ") - spaces++; - if (spaces % tabSize != 0) - return false; - var spaces = 0; - while (line.charAt(after++) == " ") - spaces++; - if (tabSize > 2) - return spaces % tabSize != tabSize - 1; - else - return spaces % tabSize == 0; - }; - } - function iter(fun) { - for (var i = startRow; i <= endRow; i++) - fun(doc.getLine(i), i); - } - var minEmptyLength = Infinity; - iter(function (line, i) { - var indent = line.search(/\S/); - if (indent !== -1) { - if (indent < minIndent) - minIndent = indent; - if (shouldRemove && !testRemove(line, i)) - shouldRemove = false; - } - else if (minEmptyLength > line.length) { - minEmptyLength = line.length; - } - }); - if (minIndent == Infinity) { - minIndent = minEmptyLength; - ignoreBlankLines = false; - shouldRemove = false; - } - if (insertAtTabStop && minIndent % tabSize != 0) - minIndent = Math.floor(minIndent / tabSize) * tabSize; - iter(shouldRemove ? uncomment : comment); - }; - this.toggleBlockComment = function (state, session, range, cursor) { - var comment = this.blockComment; - if (!comment) - return; - if (!comment.start && comment[0]) - comment = comment[0]; - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - var sel = session.selection; - var initialRange = session.selection.toOrientedRange(); - var startRow, colDiff; - if (token && /comment/.test(token.type)) { - var startRange, endRange; - while (token && /comment/.test(token.type)) { - var i = token.value.indexOf(comment.start); - if (i != -1) { - var row = iterator.getCurrentTokenRow(); - var column = iterator.getCurrentTokenColumn() + i; - startRange = new Range(row, column, row, column + comment.start.length); - break; - } - token = iterator.stepBackward(); - } - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - while (token && /comment/.test(token.type)) { - var i = token.value.indexOf(comment.end); - if (i != -1) { - var row = iterator.getCurrentTokenRow(); - var column = iterator.getCurrentTokenColumn() + i; - endRange = new Range(row, column, row, column + comment.end.length); - break; - } - token = iterator.stepForward(); - } - if (endRange) - session.remove(endRange); - if (startRange) { - session.remove(startRange); - startRow = startRange.start.row; - colDiff = -comment.start.length; - } - } - else { - colDiff = comment.start.length; - startRow = range.start.row; - session.insert(range.end, comment.end); - session.insert(range.start, comment.start); - } - if (initialRange.start.row == startRow) - initialRange.start.column += colDiff; - if (initialRange.end.row == startRow) - initialRange.end.column += colDiff; - session.selection.fromOrientedRange(initialRange); - }; - this.getNextLineIndent = function (state, line, tab) { - return this.$getIndent(line); - }; - this.checkOutdent = function (state, line, input) { - return false; - }; - this.autoOutdent = function (state, doc, row) { - }; - this.$getIndent = function (line) { - return line.match(/^\s*/)[0]; - }; - this.createWorker = function (session) { - return null; - }; - this.createModeDelegates = function (mapping) { - this.$embeds = []; - this.$modes = {}; - for (var i in mapping) { - if (mapping[i]) { - var Mode = mapping[i]; - var id = Mode.prototype.$id; - var mode = config.$modes[id]; - if (!mode) - config.$modes[id] = mode = new Mode(); - if (!config.$modes[i]) - config.$modes[i] = mode; - this.$embeds.push(i); - this.$modes[i] = mode; - } - } - var delegations = ["toggleBlockComment", "toggleCommentLines", "getNextLineIndent", - "checkOutdent", "autoOutdent", "transformAction", "getCompletions"]; - for (var i = 0; i < delegations.length; i++) { - (function (scope) { - var functionName = delegations[i]; - var defaultHandler = scope[functionName]; - scope[delegations[i]] = function () { - return this.$delegator(functionName, arguments, defaultHandler); - }; - }(this)); - } - }; - this.$delegator = function (method, args, defaultHandler) { - var state = args[0] || "start"; - if (typeof state != "string") { - if (Array.isArray(state[2])) { - var language = state[2][state[2].length - 1]; - var mode = this.$modes[language]; - if (mode) - return mode[method].apply(mode, [state[1]].concat([].slice.call(args, 1))); - } - state = state[0] || "start"; - } - for (var i = 0; i < this.$embeds.length; i++) { - if (!this.$modes[this.$embeds[i]]) - continue; - var split = state.split(this.$embeds[i]); - if (!split[0] && split[1]) { - args[0] = split[1]; - var mode = this.$modes[this.$embeds[i]]; - return mode[method].apply(mode, args); - } - } - var ret = defaultHandler.apply(this, args); - return defaultHandler ? ret : undefined; - }; - this.transformAction = function (state, action, editor, session, param) { - if (this.$behaviour) { - var behaviours = this.$behaviour.getBehaviours(); - for (var key in behaviours) { - if (behaviours[key][action]) { - var ret = behaviours[key][action].apply(this, arguments); - if (ret) { - return ret; - } - } - } - } - }; - this.getKeywords = function (append) { - if (!this.completionKeywords) { - var rules = this.$tokenizer.rules; - var completionKeywords = []; - for (var rule in rules) { - var ruleItr = rules[rule]; - for (var r = 0, l = ruleItr.length; r < l; r++) { - if (typeof ruleItr[r].token === "string") { - if (/keyword|support|storage/.test(ruleItr[r].token)) - completionKeywords.push(ruleItr[r].regex); - } - else if (typeof ruleItr[r].token === "object") { - for (var a = 0, aLength = ruleItr[r].token.length; a < aLength; a++) { - if (/keyword|support|storage/.test(ruleItr[r].token[a])) { - var rule = ruleItr[r].regex.match(/\(.+?\)/g)[a]; - completionKeywords.push(rule.substr(1, rule.length - 2)); - } - } - } - } - } - this.completionKeywords = completionKeywords; - } - if (!append) - return this.$keywordList; - return completionKeywords.concat(this.$keywordList || []); - }; - this.$createKeywordList = function () { - if (!this.$highlightRules) - this.getTokenizer(); - return this.$keywordList = this.$highlightRules.$keywordList || []; - }; - this.getCompletions = function (state, session, pos, prefix) { - var keywords = this.$keywordList || this.$createKeywordList(); - return keywords.map(function (word) { - return { - name: word, - value: word, - score: 0, - meta: "keyword" - }; - }); - }; - this.$id = "ace/mode/text"; -}).call(Mode.prototype); -exports.Mode = Mode; - -}); - -ace.define("ace/apply_delta",["require","exports","module"], function(require, exports, module){"use strict"; -function throwDeltaError(delta, errorText) { - console.log("Invalid Delta:", delta); - throw "Invalid Delta: " + errorText; -} -function positionInDocument(docLines, position) { - return position.row >= 0 && position.row < docLines.length && - position.column >= 0 && position.column <= docLines[position.row].length; -} -function validateDelta(docLines, delta) { - if (delta.action != "insert" && delta.action != "remove") - throwDeltaError(delta, "delta.action must be 'insert' or 'remove'"); - if (!(delta.lines instanceof Array)) - throwDeltaError(delta, "delta.lines must be an Array"); - if (!delta.start || !delta.end) - throwDeltaError(delta, "delta.start/end must be an present"); - var start = delta.start; - if (!positionInDocument(docLines, delta.start)) - throwDeltaError(delta, "delta.start must be contained in document"); - var end = delta.end; - if (delta.action == "remove" && !positionInDocument(docLines, end)) - throwDeltaError(delta, "delta.end must contained in document for 'remove' actions"); - var numRangeRows = end.row - start.row; - var numRangeLastLineChars = (end.column - (numRangeRows == 0 ? start.column : 0)); - if (numRangeRows != delta.lines.length - 1 || delta.lines[numRangeRows].length != numRangeLastLineChars) - throwDeltaError(delta, "delta.range must match delta lines"); -} -exports.applyDelta = function (docLines, delta, doNotValidate) { - var row = delta.start.row; - var startColumn = delta.start.column; - var line = docLines[row] || ""; - switch (delta.action) { - case "insert": - var lines = delta.lines; - if (lines.length === 1) { - docLines[row] = line.substring(0, startColumn) + delta.lines[0] + line.substring(startColumn); - } - else { - var args = [row, 1].concat(delta.lines); - docLines.splice.apply(docLines, args); - docLines[row] = line.substring(0, startColumn) + docLines[row]; - docLines[row + delta.lines.length - 1] += line.substring(startColumn); - } - break; - case "remove": - var endColumn = delta.end.column; - var endRow = delta.end.row; - if (row === endRow) { - docLines[row] = line.substring(0, startColumn) + line.substring(endColumn); - } - else { - docLines.splice(row, endRow - row + 1, line.substring(0, startColumn) + docLines[endRow].substring(endColumn)); - } - break; - } -}; - -}); - -ace.define("ace/anchor",["require","exports","module","ace/lib/oop","ace/lib/event_emitter"], function(require, exports, module){"use strict"; -var oop = require("./lib/oop"); -var EventEmitter = require("./lib/event_emitter").EventEmitter; -var Anchor = /** @class */ (function () { - function Anchor(doc, row, column) { - this.$onChange = this.onChange.bind(this); - this.attach(doc); - if (typeof column == "undefined") - this.setPosition(row.row, row.column); - else - this.setPosition(row, column); - } - Anchor.prototype.getPosition = function () { - return this.$clipPositionToDocument(this.row, this.column); - }; - Anchor.prototype.getDocument = function () { - return this.document; - }; - Anchor.prototype.onChange = function (delta) { - if (delta.start.row == delta.end.row && delta.start.row != this.row) - return; - if (delta.start.row > this.row) - return; - var point = $getTransformedPoint(delta, { row: this.row, column: this.column }, this.$insertRight); - this.setPosition(point.row, point.column, true); - }; - Anchor.prototype.setPosition = function (row, column, noClip) { - var pos; - if (noClip) { - pos = { - row: row, - column: column - }; - } - else { - pos = this.$clipPositionToDocument(row, column); - } - if (this.row == pos.row && this.column == pos.column) - return; - var old = { - row: this.row, - column: this.column - }; - this.row = pos.row; - this.column = pos.column; - this._signal("change", { - old: old, - value: pos - }); - }; - Anchor.prototype.detach = function () { - this.document.off("change", this.$onChange); - }; - Anchor.prototype.attach = function (doc) { - this.document = doc || this.document; - this.document.on("change", this.$onChange); - }; - Anchor.prototype.$clipPositionToDocument = function (row, column) { - var pos = {}; - if (row >= this.document.getLength()) { - pos.row = Math.max(0, this.document.getLength() - 1); - pos.column = this.document.getLine(pos.row).length; - } - else if (row < 0) { - pos.row = 0; - pos.column = 0; - } - else { - pos.row = row; - pos.column = Math.min(this.document.getLine(pos.row).length, Math.max(0, column)); - } - if (column < 0) - pos.column = 0; - return pos; - }; - return Anchor; -}()); -Anchor.prototype.$insertRight = false; -oop.implement(Anchor.prototype, EventEmitter); -function $pointsInOrder(point1, point2, equalPointsInOrder) { - var bColIsAfter = equalPointsInOrder ? point1.column <= point2.column : point1.column < point2.column; - return (point1.row < point2.row) || (point1.row == point2.row && bColIsAfter); -} -function $getTransformedPoint(delta, point, moveIfEqual) { - var deltaIsInsert = delta.action == "insert"; - var deltaRowShift = (deltaIsInsert ? 1 : -1) * (delta.end.row - delta.start.row); - var deltaColShift = (deltaIsInsert ? 1 : -1) * (delta.end.column - delta.start.column); - var deltaStart = delta.start; - var deltaEnd = deltaIsInsert ? deltaStart : delta.end; // Collapse insert range. - if ($pointsInOrder(point, deltaStart, moveIfEqual)) { - return { - row: point.row, - column: point.column - }; - } - if ($pointsInOrder(deltaEnd, point, !moveIfEqual)) { - return { - row: point.row + deltaRowShift, - column: point.column + (point.row == deltaEnd.row ? deltaColShift : 0) - }; - } - return { - row: deltaStart.row, - column: deltaStart.column - }; -} -exports.Anchor = Anchor; - -}); - -ace.define("ace/document",["require","exports","module","ace/lib/oop","ace/apply_delta","ace/lib/event_emitter","ace/range","ace/anchor"], function(require, exports, module){"use strict"; -var oop = require("./lib/oop"); -var applyDelta = require("./apply_delta").applyDelta; -var EventEmitter = require("./lib/event_emitter").EventEmitter; -var Range = require("./range").Range; -var Anchor = require("./anchor").Anchor; -var Document = /** @class */ (function () { - function Document(textOrLines) { - this.$lines = [""]; - if (textOrLines.length === 0) { - this.$lines = [""]; - } - else if (Array.isArray(textOrLines)) { - this.insertMergedLines({ row: 0, column: 0 }, textOrLines); - } - else { - this.insert({ row: 0, column: 0 }, textOrLines); - } - } - Document.prototype.setValue = function (text) { - var len = this.getLength() - 1; - this.remove(new Range(0, 0, len, this.getLine(len).length)); - this.insert({ row: 0, column: 0 }, text || ""); - }; - Document.prototype.getValue = function () { - return this.getAllLines().join(this.getNewLineCharacter()); - }; - Document.prototype.createAnchor = function (row, column) { - return new Anchor(this, row, column); - }; - Document.prototype.$detectNewLine = function (text) { - var match = text.match(/^.*?(\r\n|\r|\n)/m); - this.$autoNewLine = match ? match[1] : "\n"; - this._signal("changeNewLineMode"); - }; - Document.prototype.getNewLineCharacter = function () { - switch (this.$newLineMode) { - case "windows": - return "\r\n"; - case "unix": - return "\n"; - default: - return this.$autoNewLine || "\n"; - } - }; - Document.prototype.setNewLineMode = function (newLineMode) { - if (this.$newLineMode === newLineMode) - return; - this.$newLineMode = newLineMode; - this._signal("changeNewLineMode"); - }; - Document.prototype.getNewLineMode = function () { - return this.$newLineMode; - }; - Document.prototype.isNewLine = function (text) { - return (text == "\r\n" || text == "\r" || text == "\n"); - }; - Document.prototype.getLine = function (row) { - return this.$lines[row] || ""; - }; - Document.prototype.getLines = function (firstRow, lastRow) { - return this.$lines.slice(firstRow, lastRow + 1); - }; - Document.prototype.getAllLines = function () { - return this.getLines(0, this.getLength()); - }; - Document.prototype.getLength = function () { - return this.$lines.length; - }; - Document.prototype.getTextRange = function (range) { - return this.getLinesForRange(range).join(this.getNewLineCharacter()); - }; - Document.prototype.getLinesForRange = function (range) { - var lines; - if (range.start.row === range.end.row) { - lines = [this.getLine(range.start.row).substring(range.start.column, range.end.column)]; - } - else { - lines = this.getLines(range.start.row, range.end.row); - lines[0] = (lines[0] || "").substring(range.start.column); - var l = lines.length - 1; - if (range.end.row - range.start.row == l) - lines[l] = lines[l].substring(0, range.end.column); - } - return lines; - }; - Document.prototype.insertLines = function (row, lines) { - console.warn("Use of document.insertLines is deprecated. Use the insertFullLines method instead."); - return this.insertFullLines(row, lines); - }; - Document.prototype.removeLines = function (firstRow, lastRow) { - console.warn("Use of document.removeLines is deprecated. Use the removeFullLines method instead."); - return this.removeFullLines(firstRow, lastRow); - }; - Document.prototype.insertNewLine = function (position) { - console.warn("Use of document.insertNewLine is deprecated. Use insertMergedLines(position, ['', '']) instead."); - return this.insertMergedLines(position, ["", ""]); - }; - Document.prototype.insert = function (position, text) { - if (this.getLength() <= 1) - this.$detectNewLine(text); - return this.insertMergedLines(position, this.$split(text)); - }; - Document.prototype.insertInLine = function (position, text) { - var start = this.clippedPos(position.row, position.column); - var end = this.pos(position.row, position.column + text.length); - this.applyDelta({ - start: start, - end: end, - action: "insert", - lines: [text] - }, true); - return this.clonePos(end); - }; - Document.prototype.clippedPos = function (row, column) { - var length = this.getLength(); - if (row === undefined) { - row = length; - } - else if (row < 0) { - row = 0; - } - else if (row >= length) { - row = length - 1; - column = undefined; - } - var line = this.getLine(row); - if (column == undefined) - column = line.length; - column = Math.min(Math.max(column, 0), line.length); - return { row: row, column: column }; - }; - Document.prototype.clonePos = function (pos) { - return { row: pos.row, column: pos.column }; - }; - Document.prototype.pos = function (row, column) { - return { row: row, column: column }; - }; - Document.prototype.$clipPosition = function (position) { - var length = this.getLength(); - if (position.row >= length) { - position.row = Math.max(0, length - 1); - position.column = this.getLine(length - 1).length; - } - else { - position.row = Math.max(0, position.row); - position.column = Math.min(Math.max(position.column, 0), this.getLine(position.row).length); - } - return position; - }; - Document.prototype.insertFullLines = function (row, lines) { - row = Math.min(Math.max(row, 0), this.getLength()); - var column = 0; - if (row < this.getLength()) { - lines = lines.concat([""]); - column = 0; - } - else { - lines = [""].concat(lines); - row--; - column = this.$lines[row].length; - } - this.insertMergedLines({ row: row, column: column }, lines); - }; - Document.prototype.insertMergedLines = function (position, lines) { - var start = this.clippedPos(position.row, position.column); - var end = { - row: start.row + lines.length - 1, - column: (lines.length == 1 ? start.column : 0) + lines[lines.length - 1].length - }; - this.applyDelta({ - start: start, - end: end, - action: "insert", - lines: lines - }); - return this.clonePos(end); - }; - Document.prototype.remove = function (range) { - var start = this.clippedPos(range.start.row, range.start.column); - var end = this.clippedPos(range.end.row, range.end.column); - this.applyDelta({ - start: start, - end: end, - action: "remove", - lines: this.getLinesForRange({ start: start, end: end }) - }); - return this.clonePos(start); - }; - Document.prototype.removeInLine = function (row, startColumn, endColumn) { - var start = this.clippedPos(row, startColumn); - var end = this.clippedPos(row, endColumn); - this.applyDelta({ - start: start, - end: end, - action: "remove", - lines: this.getLinesForRange({ start: start, end: end }) - }, true); - return this.clonePos(start); - }; - Document.prototype.removeFullLines = function (firstRow, lastRow) { - firstRow = Math.min(Math.max(0, firstRow), this.getLength() - 1); - lastRow = Math.min(Math.max(0, lastRow), this.getLength() - 1); - var deleteFirstNewLine = lastRow == this.getLength() - 1 && firstRow > 0; - var deleteLastNewLine = lastRow < this.getLength() - 1; - var startRow = (deleteFirstNewLine ? firstRow - 1 : firstRow); - var startCol = (deleteFirstNewLine ? this.getLine(startRow).length : 0); - var endRow = (deleteLastNewLine ? lastRow + 1 : lastRow); - var endCol = (deleteLastNewLine ? 0 : this.getLine(endRow).length); - var range = new Range(startRow, startCol, endRow, endCol); - var deletedLines = this.$lines.slice(firstRow, lastRow + 1); - this.applyDelta({ - start: range.start, - end: range.end, - action: "remove", - lines: this.getLinesForRange(range) - }); - return deletedLines; - }; - Document.prototype.removeNewLine = function (row) { - if (row < this.getLength() - 1 && row >= 0) { - this.applyDelta({ - start: this.pos(row, this.getLine(row).length), - end: this.pos(row + 1, 0), - action: "remove", - lines: ["", ""] - }); - } - }; - Document.prototype.replace = function (range, text) { - if (!(range instanceof Range)) - range = Range.fromPoints(range.start, range.end); - if (text.length === 0 && range.isEmpty()) - return range.start; - if (text == this.getTextRange(range)) - return range.end; - this.remove(range); - var end; - if (text) { - end = this.insert(range.start, text); - } - else { - end = range.start; - } - return end; - }; - Document.prototype.applyDeltas = function (deltas) { - for (var i = 0; i < deltas.length; i++) { - this.applyDelta(deltas[i]); - } - }; - Document.prototype.revertDeltas = function (deltas) { - for (var i = deltas.length - 1; i >= 0; i--) { - this.revertDelta(deltas[i]); - } - }; - Document.prototype.applyDelta = function (delta, doNotValidate) { - var isInsert = delta.action == "insert"; - if (isInsert ? delta.lines.length <= 1 && !delta.lines[0] - : !Range.comparePoints(delta.start, delta.end)) { - return; - } - if (isInsert && delta.lines.length > 20000) { - this.$splitAndapplyLargeDelta(delta, 20000); - } - else { - applyDelta(this.$lines, delta, doNotValidate); - this._signal("change", delta); - } - }; - Document.prototype.$safeApplyDelta = function (delta) { - var docLength = this.$lines.length; - if (delta.action == "remove" && delta.start.row < docLength && delta.end.row < docLength - || delta.action == "insert" && delta.start.row <= docLength) { - this.applyDelta(delta); - } - }; - Document.prototype.$splitAndapplyLargeDelta = function (delta, MAX) { - var lines = delta.lines; - var l = lines.length - MAX + 1; - var row = delta.start.row; - var column = delta.start.column; - for (var from = 0, to = 0; from < l; from = to) { - to += MAX - 1; - var chunk = lines.slice(from, to); - chunk.push(""); - this.applyDelta({ - start: this.pos(row + from, column), - end: this.pos(row + to, column = 0), - action: delta.action, - lines: chunk - }, true); - } - delta.lines = lines.slice(from); - delta.start.row = row + from; - delta.start.column = column; - this.applyDelta(delta, true); - }; - Document.prototype.revertDelta = function (delta) { - this.$safeApplyDelta({ - start: this.clonePos(delta.start), - end: this.clonePos(delta.end), - action: (delta.action == "insert" ? "remove" : "insert"), - lines: delta.lines.slice() - }); - }; - Document.prototype.indexToPosition = function (index, startRow) { - var lines = this.$lines || this.getAllLines(); - var newlineLength = this.getNewLineCharacter().length; - for (var i = startRow || 0, l = lines.length; i < l; i++) { - index -= lines[i].length + newlineLength; - if (index < 0) - return { row: i, column: index + lines[i].length + newlineLength }; - } - return { row: l - 1, column: index + lines[l - 1].length + newlineLength }; - }; - Document.prototype.positionToIndex = function (pos, startRow) { - var lines = this.$lines || this.getAllLines(); - var newlineLength = this.getNewLineCharacter().length; - var index = 0; - var row = Math.min(pos.row, lines.length); - for (var i = startRow || 0; i < row; ++i) - index += lines[i].length + newlineLength; - return index + pos.column; - }; - Document.prototype.$split = function (text) { - return text.split(/\r\n|\r|\n/); - }; - return Document; -}()); -Document.prototype.$autoNewLine = ""; -Document.prototype.$newLineMode = "auto"; -oop.implement(Document.prototype, EventEmitter); -exports.Document = Document; - -}); - -ace.define("ace/background_tokenizer",["require","exports","module","ace/lib/oop","ace/lib/event_emitter"], function(require, exports, module){"use strict"; -var oop = require("./lib/oop"); -var EventEmitter = require("./lib/event_emitter").EventEmitter; -var BackgroundTokenizer = /** @class */ (function () { - function BackgroundTokenizer(tokenizer, editor) { - this.running = false; - this.lines = []; - this.states = []; - this.currentLine = 0; - this.tokenizer = tokenizer; - var self = this; - this.$worker = function () { - if (!self.running) { - return; - } - var workerStart = new Date(); - var currentLine = self.currentLine; - var endLine = -1; - var doc = self.doc; - var startLine = currentLine; - while (self.lines[currentLine]) - currentLine++; - var len = doc.getLength(); - var processedLines = 0; - self.running = false; - while (currentLine < len) { - self.$tokenizeRow(currentLine); - endLine = currentLine; - do { - currentLine++; - } while (self.lines[currentLine]); - processedLines++; - if ((processedLines % 5 === 0) && (new Date() - workerStart) > 20) { - self.running = setTimeout(self.$worker, 20); - break; - } - } - self.currentLine = currentLine; - if (endLine == -1) - endLine = currentLine; - if (startLine <= endLine) - self.fireUpdateEvent(startLine, endLine); - }; - } - BackgroundTokenizer.prototype.setTokenizer = function (tokenizer) { - this.tokenizer = tokenizer; - this.lines = []; - this.states = []; - this.start(0); - }; - BackgroundTokenizer.prototype.setDocument = function (doc) { - this.doc = doc; - this.lines = []; - this.states = []; - this.stop(); - }; - BackgroundTokenizer.prototype.fireUpdateEvent = function (firstRow, lastRow) { - var data = { - first: firstRow, - last: lastRow - }; - this._signal("update", { data: data }); - }; - BackgroundTokenizer.prototype.start = function (startRow) { - this.currentLine = Math.min(startRow || 0, this.currentLine, this.doc.getLength()); - this.lines.splice(this.currentLine, this.lines.length); - this.states.splice(this.currentLine, this.states.length); - this.stop(); - this.running = setTimeout(this.$worker, 700); - }; - BackgroundTokenizer.prototype.scheduleStart = function () { - if (!this.running) - this.running = setTimeout(this.$worker, 700); - }; - BackgroundTokenizer.prototype.$updateOnChange = function (delta) { - var startRow = delta.start.row; - var len = delta.end.row - startRow; - if (len === 0) { - this.lines[startRow] = null; - } - else if (delta.action == "remove") { - this.lines.splice(startRow, len + 1, null); - this.states.splice(startRow, len + 1, null); - } - else { - var args = Array(len + 1); - args.unshift(startRow, 1); - this.lines.splice.apply(this.lines, args); - this.states.splice.apply(this.states, args); - } - this.currentLine = Math.min(startRow, this.currentLine, this.doc.getLength()); - this.stop(); - }; - BackgroundTokenizer.prototype.stop = function () { - if (this.running) - clearTimeout(this.running); - this.running = false; - }; - BackgroundTokenizer.prototype.getTokens = function (row) { - return this.lines[row] || this.$tokenizeRow(row); - }; - BackgroundTokenizer.prototype.getState = function (row) { - if (this.currentLine == row) - this.$tokenizeRow(row); - return this.states[row] || "start"; - }; - BackgroundTokenizer.prototype.$tokenizeRow = function (row) { - var line = this.doc.getLine(row); - var state = this.states[row - 1]; - var data = this.tokenizer.getLineTokens(line, state, row); - if (this.states[row] + "" !== data.state + "") { - this.states[row] = data.state; - this.lines[row + 1] = null; - if (this.currentLine > row + 1) - this.currentLine = row + 1; - } - else if (this.currentLine == row) { - this.currentLine = row + 1; - } - return this.lines[row] = data.tokens; - }; - BackgroundTokenizer.prototype.cleanup = function () { - this.running = false; - this.lines = []; - this.states = []; - this.currentLine = 0; - this.removeAllListeners(); - }; - return BackgroundTokenizer; -}()); -oop.implement(BackgroundTokenizer.prototype, EventEmitter); -exports.BackgroundTokenizer = BackgroundTokenizer; - -}); - -ace.define("ace/search_highlight",["require","exports","module","ace/lib/lang","ace/range"], function(require, exports, module){"use strict"; -var lang = require("./lib/lang"); -var Range = require("./range").Range; -var SearchHighlight = /** @class */ (function () { - function SearchHighlight(regExp, clazz, type) { - if (type === void 0) { type = "text"; } - this.setRegexp(regExp); - this.clazz = clazz; - this.type = type; - } - SearchHighlight.prototype.setRegexp = function (regExp) { - if (this.regExp + "" == regExp + "") - return; - this.regExp = regExp; - this.cache = []; - }; - SearchHighlight.prototype.update = function (html, markerLayer, session, config) { - if (!this.regExp) - return; - var start = config.firstRow, end = config.lastRow; - var renderedMarkerRanges = {}; - for (var i = start; i <= end; i++) { - var ranges = this.cache[i]; - if (ranges == null) { - ranges = lang.getMatchOffsets(session.getLine(i), this.regExp); - if (ranges.length > this.MAX_RANGES) - ranges = ranges.slice(0, this.MAX_RANGES); - ranges = ranges.map(function (match) { - return new Range(i, match.offset, i, match.offset + match.length); - }); - this.cache[i] = ranges.length ? ranges : ""; - } - for (var j = ranges.length; j--;) { - var rangeToAddMarkerTo = ranges[j].toScreenRange(session); - var rangeAsString = rangeToAddMarkerTo.toString(); - if (renderedMarkerRanges[rangeAsString]) - continue; - renderedMarkerRanges[rangeAsString] = true; - markerLayer.drawSingleLineMarker(html, rangeToAddMarkerTo, this.clazz, config); - } - } - }; - return SearchHighlight; -}()); -SearchHighlight.prototype.MAX_RANGES = 500; -exports.SearchHighlight = SearchHighlight; - -}); - -ace.define("ace/undomanager",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; -var UndoManager = /** @class */ (function () { - function UndoManager() { - this.$maxRev = 0; - this.$fromUndo = false; - this.$undoDepth = Infinity; - this.reset(); - } - UndoManager.prototype.addSession = function (session) { - this.$session = session; - }; - UndoManager.prototype.add = function (delta, allowMerge, session) { - if (this.$fromUndo) - return; - if (delta == this.$lastDelta) - return; - if (!this.$keepRedoStack) - this.$redoStack.length = 0; - if (allowMerge === false || !this.lastDeltas) { - this.lastDeltas = []; - var undoStackLength = this.$undoStack.length; - if (undoStackLength > this.$undoDepth - 1) { - this.$undoStack.splice(0, undoStackLength - this.$undoDepth + 1); - } - this.$undoStack.push(this.lastDeltas); - delta.id = this.$rev = ++this.$maxRev; - } - if (delta.action == "remove" || delta.action == "insert") - this.$lastDelta = delta; - this.lastDeltas.push(delta); - }; - UndoManager.prototype.addSelection = function (selection, rev) { - this.selections.push({ - value: selection, - rev: rev || this.$rev - }); - }; - UndoManager.prototype.startNewGroup = function () { - this.lastDeltas = null; - return this.$rev; - }; - UndoManager.prototype.markIgnored = function (from, to) { - if (to == null) - to = this.$rev + 1; - var stack = this.$undoStack; - for (var i = stack.length; i--;) { - var delta = stack[i][0]; - if (delta.id <= from) - break; - if (delta.id < to) - delta.ignore = true; - } - this.lastDeltas = null; - }; - UndoManager.prototype.getSelection = function (rev, after) { - var stack = this.selections; - for (var i = stack.length; i--;) { - var selection = stack[i]; - if (selection.rev < rev) { - if (after) - selection = stack[i + 1]; - return selection; - } - } - }; - UndoManager.prototype.getRevision = function () { - return this.$rev; - }; - UndoManager.prototype.getDeltas = function (from, to) { - if (to == null) - to = this.$rev + 1; - var stack = this.$undoStack; - var end = null, start = 0; - for (var i = stack.length; i--;) { - var delta = stack[i][0]; - if (delta.id < to && !end) - end = i + 1; - if (delta.id <= from) { - start = i + 1; - break; - } - } - return stack.slice(start, end); - }; - UndoManager.prototype.getChangedRanges = function (from, to) { - if (to == null) - to = this.$rev + 1; - }; - UndoManager.prototype.getChangedLines = function (from, to) { - if (to == null) - to = this.$rev + 1; - }; - UndoManager.prototype.undo = function (session, dontSelect) { - this.lastDeltas = null; - var stack = this.$undoStack; - if (!rearrangeUndoStack(stack, stack.length)) - return; - if (!session) - session = this.$session; - if (this.$redoStackBaseRev !== this.$rev && this.$redoStack.length) - this.$redoStack = []; - this.$fromUndo = true; - var deltaSet = stack.pop(); - var undoSelectionRange = null; - if (deltaSet) { - undoSelectionRange = session.undoChanges(deltaSet, dontSelect); - this.$redoStack.push(deltaSet); - this.$syncRev(); - } - this.$fromUndo = false; - return undoSelectionRange; - }; - UndoManager.prototype.redo = function (session, dontSelect) { - this.lastDeltas = null; - if (!session) - session = this.$session; - this.$fromUndo = true; - if (this.$redoStackBaseRev != this.$rev) { - var diff = this.getDeltas(this.$redoStackBaseRev, this.$rev + 1); - rebaseRedoStack(this.$redoStack, diff); - this.$redoStackBaseRev = this.$rev; - this.$redoStack.forEach(function (x) { - x[0].id = ++this.$maxRev; - }, this); - } - var deltaSet = this.$redoStack.pop(); - var redoSelectionRange = null; - if (deltaSet) { - redoSelectionRange = session.redoChanges(deltaSet, dontSelect); - this.$undoStack.push(deltaSet); - this.$syncRev(); - } - this.$fromUndo = false; - return redoSelectionRange; - }; - UndoManager.prototype.$syncRev = function () { - var stack = this.$undoStack; - var nextDelta = stack[stack.length - 1]; - var id = nextDelta && nextDelta[0].id || 0; - this.$redoStackBaseRev = id; - this.$rev = id; - }; - UndoManager.prototype.reset = function () { - this.lastDeltas = null; - this.$lastDelta = null; - this.$undoStack = []; - this.$redoStack = []; - this.$rev = 0; - this.mark = 0; - this.$redoStackBaseRev = this.$rev; - this.selections = []; - }; - UndoManager.prototype.canUndo = function () { - return this.$undoStack.length > 0; - }; - UndoManager.prototype.canRedo = function () { - return this.$redoStack.length > 0; - }; - UndoManager.prototype.bookmark = function (rev) { - if (rev == undefined) - rev = this.$rev; - this.mark = rev; - }; - UndoManager.prototype.isAtBookmark = function () { - return this.$rev === this.mark; - }; - UndoManager.prototype.toJSON = function () { - return { - $redoStack: this.$redoStack, - $undoStack: this.$undoStack - }; - }; - UndoManager.prototype.fromJSON = function (json) { - this.reset(); - this.$undoStack = json.$undoStack; - this.$redoStack = json.$redoStack; - }; - UndoManager.prototype.$prettyPrint = function (delta) { - if (delta) - return stringifyDelta(delta); - return stringifyDelta(this.$undoStack) + "\n---\n" + stringifyDelta(this.$redoStack); - }; - return UndoManager; -}()); -UndoManager.prototype.hasUndo = UndoManager.prototype.canUndo; -UndoManager.prototype.hasRedo = UndoManager.prototype.canRedo; -UndoManager.prototype.isClean = UndoManager.prototype.isAtBookmark; -UndoManager.prototype.markClean = UndoManager.prototype.bookmark; -function rearrangeUndoStack(stack, pos) { - for (var i = pos; i--;) { - var deltaSet = stack[i]; - if (deltaSet && !deltaSet[0].ignore) { - while (i < pos - 1) { - var swapped = swapGroups(stack[i], stack[i + 1]); - stack[i] = swapped[0]; - stack[i + 1] = swapped[1]; - i++; - } - return true; - } - } -} -var Range = require("./range").Range; -var cmp = Range.comparePoints; -var comparePoints = Range.comparePoints; -function $updateMarkers(delta) { - var isInsert = delta.action == "insert"; - var start = delta.start; - var end = delta.end; - var rowShift = (end.row - start.row) * (isInsert ? 1 : -1); - var colShift = (end.column - start.column) * (isInsert ? 1 : -1); - if (isInsert) - end = start; - for (var i in this.marks) { - var point = this.marks[i]; - var cmp = comparePoints(point, start); - if (cmp < 0) { - continue; // delta starts after the range - } - if (cmp === 0) { - if (isInsert) { - if (point.bias == 1) { - cmp = 1; - } - else { - point.bias == -1; - continue; - } - } - } - var cmp2 = isInsert ? cmp : comparePoints(point, end); - if (cmp2 > 0) { - point.row += rowShift; - point.column += point.row == end.row ? colShift : 0; - continue; - } - if (!isInsert && cmp2 <= 0) { - point.row = start.row; - point.column = start.column; - if (cmp2 === 0) - point.bias = 1; - } - } -} -function clonePos(pos) { - return { row: pos.row, column: pos.column }; -} -function cloneDelta(d) { - return { - start: clonePos(d.start), - end: clonePos(d.end), - action: d.action, - lines: d.lines.slice() - }; -} -function stringifyDelta(d) { - d = d || this; - if (Array.isArray(d)) { - return d.map(stringifyDelta).join("\n"); - } - var type = ""; - if (d.action) { - type = d.action == "insert" ? "+" : "-"; - type += "[" + d.lines + "]"; - } - else if (d.value) { - if (Array.isArray(d.value)) { - type = d.value.map(stringifyRange).join("\n"); - } - else { - type = stringifyRange(d.value); - } - } - if (d.start) { - type += stringifyRange(d); - } - if (d.id || d.rev) { - type += "\t(" + (d.id || d.rev) + ")"; - } - return type; -} -function stringifyRange(r) { - return r.start.row + ":" + r.start.column - + "=>" + r.end.row + ":" + r.end.column; -} -function swap(d1, d2) { - var i1 = d1.action == "insert"; - var i2 = d2.action == "insert"; - if (i1 && i2) { - if (cmp(d2.start, d1.end) >= 0) { - shift(d2, d1, -1); - } - else if (cmp(d2.start, d1.start) <= 0) { - shift(d1, d2, +1); - } - else { - return null; - } - } - else if (i1 && !i2) { - if (cmp(d2.start, d1.end) >= 0) { - shift(d2, d1, -1); - } - else if (cmp(d2.end, d1.start) <= 0) { - shift(d1, d2, -1); - } - else { - return null; - } - } - else if (!i1 && i2) { - if (cmp(d2.start, d1.start) >= 0) { - shift(d2, d1, +1); - } - else if (cmp(d2.start, d1.start) <= 0) { - shift(d1, d2, +1); - } - else { - return null; - } - } - else if (!i1 && !i2) { - if (cmp(d2.start, d1.start) >= 0) { - shift(d2, d1, +1); - } - else if (cmp(d2.end, d1.start) <= 0) { - shift(d1, d2, -1); - } - else { - return null; - } - } - return [d2, d1]; -} -function swapGroups(ds1, ds2) { - for (var i = ds1.length; i--;) { - for (var j = 0; j < ds2.length; j++) { - if (!swap(ds1[i], ds2[j])) { - while (i < ds1.length) { - while (j--) { - swap(ds2[j], ds1[i]); - } - j = ds2.length; - i++; - } - return [ds1, ds2]; - } - } - } - ds1.selectionBefore = ds2.selectionBefore = - ds1.selectionAfter = ds2.selectionAfter = null; - return [ds2, ds1]; -} -function xform(d1, c1) { - var i1 = d1.action == "insert"; - var i2 = c1.action == "insert"; - if (i1 && i2) { - if (cmp(d1.start, c1.start) < 0) { - shift(c1, d1, 1); - } - else { - shift(d1, c1, 1); - } - } - else if (i1 && !i2) { - if (cmp(d1.start, c1.end) >= 0) { - shift(d1, c1, -1); - } - else if (cmp(d1.start, c1.start) <= 0) { - shift(c1, d1, +1); - } - else { - shift(d1, Range.fromPoints(c1.start, d1.start), -1); - shift(c1, d1, +1); - } - } - else if (!i1 && i2) { - if (cmp(c1.start, d1.end) >= 0) { - shift(c1, d1, -1); - } - else if (cmp(c1.start, d1.start) <= 0) { - shift(d1, c1, +1); - } - else { - shift(c1, Range.fromPoints(d1.start, c1.start), -1); - shift(d1, c1, +1); - } - } - else if (!i1 && !i2) { - if (cmp(c1.start, d1.end) >= 0) { - shift(c1, d1, -1); - } - else if (cmp(c1.end, d1.start) <= 0) { - shift(d1, c1, -1); - } - else { - var before, after; - if (cmp(d1.start, c1.start) < 0) { - before = d1; - d1 = splitDelta(d1, c1.start); - } - if (cmp(d1.end, c1.end) > 0) { - after = splitDelta(d1, c1.end); - } - shiftPos(c1.end, d1.start, d1.end, -1); - if (after && !before) { - d1.lines = after.lines; - d1.start = after.start; - d1.end = after.end; - after = d1; - } - return [c1, before, after].filter(Boolean); - } - } - return [c1, d1]; -} -function shift(d1, d2, dir) { - shiftPos(d1.start, d2.start, d2.end, dir); - shiftPos(d1.end, d2.start, d2.end, dir); -} -function shiftPos(pos, start, end, dir) { - if (pos.row == (dir == 1 ? start : end).row) { - pos.column += dir * (end.column - start.column); - } - pos.row += dir * (end.row - start.row); -} -function splitDelta(c, pos) { - var lines = c.lines; - var end = c.end; - c.end = clonePos(pos); - var rowsBefore = c.end.row - c.start.row; - var otherLines = lines.splice(rowsBefore, lines.length); - var col = rowsBefore ? pos.column : pos.column - c.start.column; - lines.push(otherLines[0].substring(0, col)); - otherLines[0] = otherLines[0].substr(col); - var rest = { - start: clonePos(pos), - end: end, - lines: otherLines, - action: c.action - }; - return rest; -} -function moveDeltasByOne(redoStack, d) { - d = cloneDelta(d); - for (var j = redoStack.length; j--;) { - var deltaSet = redoStack[j]; - for (var i = 0; i < deltaSet.length; i++) { - var x = deltaSet[i]; - var xformed = xform(x, d); - d = xformed[0]; - if (xformed.length != 2) { - if (xformed[2]) { - deltaSet.splice(i + 1, 1, xformed[1], xformed[2]); - i++; - } - else if (!xformed[1]) { - deltaSet.splice(i, 1); - i--; - } - } - } - if (!deltaSet.length) { - redoStack.splice(j, 1); - } - } - return redoStack; -} -function rebaseRedoStack(redoStack, deltaSets) { - for (var i = 0; i < deltaSets.length; i++) { - var deltas = deltaSets[i]; - for (var j = 0; j < deltas.length; j++) { - moveDeltasByOne(redoStack, deltas[j]); - } - } -} -exports.UndoManager = UndoManager; - -}); - -ace.define("ace/edit_session/fold_line",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; -var Range = require("../range").Range; -var FoldLine = /** @class */ (function () { - function FoldLine(foldData, folds) { - this.foldData = foldData; - if (Array.isArray(folds)) { - this.folds = folds; - } - else { - folds = this.folds = [folds]; - } - var last = folds[folds.length - 1]; - this.range = new Range(folds[0].start.row, folds[0].start.column, last.end.row, last.end.column); - this.start = this.range.start; - this.end = this.range.end; - this.folds.forEach(function (fold) { - fold.setFoldLine(this); - }, this); - } - FoldLine.prototype.shiftRow = function (shift) { - this.start.row += shift; - this.end.row += shift; - this.folds.forEach(function (fold) { - fold.start.row += shift; - fold.end.row += shift; - }); - }; - FoldLine.prototype.addFold = function (fold) { - if (fold.sameRow) { - if (fold.start.row < this.startRow || fold.endRow > this.endRow) { - throw new Error("Can't add a fold to this FoldLine as it has no connection"); - } - this.folds.push(fold); - this.folds.sort(function (a, b) { - return -a.range.compareEnd(b.start.row, b.start.column); - }); - if (this.range.compareEnd(fold.start.row, fold.start.column) > 0) { - this.end.row = fold.end.row; - this.end.column = fold.end.column; - } - else if (this.range.compareStart(fold.end.row, fold.end.column) < 0) { - this.start.row = fold.start.row; - this.start.column = fold.start.column; - } - } - else if (fold.start.row == this.end.row) { - this.folds.push(fold); - this.end.row = fold.end.row; - this.end.column = fold.end.column; - } - else if (fold.end.row == this.start.row) { - this.folds.unshift(fold); - this.start.row = fold.start.row; - this.start.column = fold.start.column; - } - else { - throw new Error("Trying to add fold to FoldRow that doesn't have a matching row"); - } - fold.foldLine = this; - }; - FoldLine.prototype.containsRow = function (row) { - return row >= this.start.row && row <= this.end.row; - }; - FoldLine.prototype.walk = function (callback, endRow, endColumn) { - var lastEnd = 0, folds = this.folds, fold, cmp, stop, isNewRow = true; - if (endRow == null) { - endRow = this.end.row; - endColumn = this.end.column; - } - for (var i = 0; i < folds.length; i++) { - fold = folds[i]; - cmp = fold.range.compareStart(endRow, endColumn); - if (cmp == -1) { - callback(null, endRow, endColumn, lastEnd, isNewRow); - return; - } - stop = callback(null, fold.start.row, fold.start.column, lastEnd, isNewRow); - stop = !stop && callback(fold.placeholder, fold.start.row, fold.start.column, lastEnd); - if (stop || cmp === 0) { - return; - } - isNewRow = !fold.sameRow; - lastEnd = fold.end.column; - } - callback(null, endRow, endColumn, lastEnd, isNewRow); - }; - FoldLine.prototype.getNextFoldTo = function (row, column) { - var fold, cmp; - for (var i = 0; i < this.folds.length; i++) { - fold = this.folds[i]; - cmp = fold.range.compareEnd(row, column); - if (cmp == -1) { - return { - fold: fold, - kind: "after" - }; - } - else if (cmp === 0) { - return { - fold: fold, - kind: "inside" - }; - } - } - return null; - }; - FoldLine.prototype.addRemoveChars = function (row, column, len) { - var ret = this.getNextFoldTo(row, column), fold, folds; - if (ret) { - fold = ret.fold; - if (ret.kind == "inside" - && fold.start.column != column - && fold.start.row != row) { - window.console && window.console.log(row, column, fold); - } - else if (fold.start.row == row) { - folds = this.folds; - var i = folds.indexOf(fold); - if (i === 0) { - this.start.column += len; - } - for (i; i < folds.length; i++) { - fold = folds[i]; - fold.start.column += len; - if (!fold.sameRow) { - return; - } - fold.end.column += len; - } - this.end.column += len; - } - } - }; - FoldLine.prototype.split = function (row, column) { - var pos = this.getNextFoldTo(row, column); - if (!pos || pos.kind == "inside") - return null; - var fold = pos.fold; - var folds = this.folds; - var foldData = this.foldData; - var i = folds.indexOf(fold); - var foldBefore = folds[i - 1]; - this.end.row = foldBefore.end.row; - this.end.column = foldBefore.end.column; - folds = folds.splice(i, folds.length - i); - var newFoldLine = new FoldLine(foldData, folds); - foldData.splice(foldData.indexOf(this) + 1, 0, newFoldLine); - return newFoldLine; - }; - FoldLine.prototype.merge = function (foldLineNext) { - var folds = foldLineNext.folds; - for (var i = 0; i < folds.length; i++) { - this.addFold(folds[i]); - } - var foldData = this.foldData; - foldData.splice(foldData.indexOf(foldLineNext), 1); - }; - FoldLine.prototype.toString = function () { - var ret = [this.range.toString() + ": ["]; - this.folds.forEach(function (fold) { - ret.push(" " + fold.toString()); - }); - ret.push("]"); - return ret.join("\n"); - }; - FoldLine.prototype.idxToPosition = function (idx) { - var lastFoldEndColumn = 0; - for (var i = 0; i < this.folds.length; i++) { - var fold = this.folds[i]; - idx -= fold.start.column - lastFoldEndColumn; - if (idx < 0) { - return { - row: fold.start.row, - column: fold.start.column + idx - }; - } - idx -= fold.placeholder.length; - if (idx < 0) { - return fold.start; - } - lastFoldEndColumn = fold.end.column; - } - return { - row: this.end.row, - column: this.end.column + idx - }; - }; - return FoldLine; -}()); -exports.FoldLine = FoldLine; - -}); - -ace.define("ace/range_list",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; -var Range = require("./range").Range; -var comparePoints = Range.comparePoints; -var RangeList = /** @class */ (function () { - function RangeList() { - this.ranges = []; - this.$bias = 1; - } - RangeList.prototype.pointIndex = function (pos, excludeEdges, startIndex) { - var list = this.ranges; - for (var i = startIndex || 0; i < list.length; i++) { - var range = list[i]; - var cmpEnd = comparePoints(pos, range.end); - if (cmpEnd > 0) - continue; - var cmpStart = comparePoints(pos, range.start); - if (cmpEnd === 0) - return excludeEdges && cmpStart !== 0 ? -i - 2 : i; - if (cmpStart > 0 || (cmpStart === 0 && !excludeEdges)) - return i; - return -i - 1; - } - return -i - 1; - }; - RangeList.prototype.add = function (range) { - var excludeEdges = !range.isEmpty(); - var startIndex = this.pointIndex(range.start, excludeEdges); - if (startIndex < 0) - startIndex = -startIndex - 1; - var endIndex = this.pointIndex(range.end, excludeEdges, startIndex); - if (endIndex < 0) - endIndex = -endIndex - 1; - else - endIndex++; - return this.ranges.splice(startIndex, endIndex - startIndex, range); - }; - RangeList.prototype.addList = function (list) { - var removed = []; - for (var i = list.length; i--;) { - removed.push.apply(removed, this.add(list[i])); - } - return removed; - }; - RangeList.prototype.substractPoint = function (pos) { - var i = this.pointIndex(pos); - if (i >= 0) - return this.ranges.splice(i, 1); - }; - RangeList.prototype.merge = function () { - var removed = []; - var list = this.ranges; - list = list.sort(function (a, b) { - return comparePoints(a.start, b.start); - }); - var next = list[0], range; - for (var i = 1; i < list.length; i++) { - range = next; - next = list[i]; - var cmp = comparePoints(range.end, next.start); - if (cmp < 0) - continue; - if (cmp == 0 && !range.isEmpty() && !next.isEmpty()) - continue; - if (comparePoints(range.end, next.end) < 0) { - range.end.row = next.end.row; - range.end.column = next.end.column; - } - list.splice(i, 1); - removed.push(next); - next = range; - i--; - } - this.ranges = list; - return removed; - }; - RangeList.prototype.contains = function (row, column) { - return this.pointIndex({ row: row, column: column }) >= 0; - }; - RangeList.prototype.containsPoint = function (pos) { - return this.pointIndex(pos) >= 0; - }; - RangeList.prototype.rangeAtPoint = function (pos) { - var i = this.pointIndex(pos); - if (i >= 0) - return this.ranges[i]; - }; - RangeList.prototype.clipRows = function (startRow, endRow) { - var list = this.ranges; - if (list[0].start.row > endRow || list[list.length - 1].start.row < startRow) - return []; - var startIndex = this.pointIndex({ row: startRow, column: 0 }); - if (startIndex < 0) - startIndex = -startIndex - 1; - var endIndex = this.pointIndex({ row: endRow, column: 0 }, startIndex); - if (endIndex < 0) - endIndex = -endIndex - 1; - var clipped = []; - for (var i = startIndex; i < endIndex; i++) { - clipped.push(list[i]); - } - return clipped; - }; - RangeList.prototype.removeAll = function () { - return this.ranges.splice(0, this.ranges.length); - }; - RangeList.prototype.attach = function (session) { - if (this.session) - this.detach(); - this.session = session; - this.onChange = this.$onChange.bind(this); - this.session.on('change', this.onChange); - }; - RangeList.prototype.detach = function () { - if (!this.session) - return; - this.session.removeListener('change', this.onChange); - this.session = null; - }; - RangeList.prototype.$onChange = function (delta) { - var start = delta.start; - var end = delta.end; - var startRow = start.row; - var endRow = end.row; - var ranges = this.ranges; - for (var i = 0, n = ranges.length; i < n; i++) { - var r = ranges[i]; - if (r.end.row >= startRow) - break; - } - if (delta.action == "insert") { - var lineDif = endRow - startRow; - var colDiff = -start.column + end.column; - for (; i < n; i++) { - var r = ranges[i]; - if (r.start.row > startRow) - break; - if (r.start.row == startRow && r.start.column >= start.column) { - if (r.start.column == start.column && this.$bias <= 0) { - } - else { - r.start.column += colDiff; - r.start.row += lineDif; - } - } - if (r.end.row == startRow && r.end.column >= start.column) { - if (r.end.column == start.column && this.$bias < 0) { - continue; - } - if (r.end.column == start.column && colDiff > 0 && i < n - 1) { - if (r.end.column > r.start.column && r.end.column == ranges[i + 1].start.column) - r.end.column -= colDiff; - } - r.end.column += colDiff; - r.end.row += lineDif; - } - } - } - else { - var lineDif = startRow - endRow; - var colDiff = start.column - end.column; - for (; i < n; i++) { - var r = ranges[i]; - if (r.start.row > endRow) - break; - if (r.end.row < endRow - && (startRow < r.end.row - || startRow == r.end.row && start.column < r.end.column)) { - r.end.row = startRow; - r.end.column = start.column; - } - else if (r.end.row == endRow) { - if (r.end.column <= end.column) { - if (lineDif || r.end.column > start.column) { - r.end.column = start.column; - r.end.row = start.row; - } - } - else { - r.end.column += colDiff; - r.end.row += lineDif; - } - } - else if (r.end.row > endRow) { - r.end.row += lineDif; - } - if (r.start.row < endRow - && (startRow < r.start.row - || startRow == r.start.row && start.column < r.start.column)) { - r.start.row = startRow; - r.start.column = start.column; - } - else if (r.start.row == endRow) { - if (r.start.column <= end.column) { - if (lineDif || r.start.column > start.column) { - r.start.column = start.column; - r.start.row = start.row; - } - } - else { - r.start.column += colDiff; - r.start.row += lineDif; - } - } - else if (r.start.row > endRow) { - r.start.row += lineDif; - } - } - } - if (lineDif != 0 && i < n) { - for (; i < n; i++) { - var r = ranges[i]; - r.start.row += lineDif; - r.end.row += lineDif; - } - } - }; - return RangeList; -}()); -RangeList.prototype.comparePoints = comparePoints; -exports.RangeList = RangeList; - -}); - -ace.define("ace/edit_session/fold",["require","exports","module","ace/range_list"], function(require, exports, module){"use strict"; -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - if (typeof b !== "function" && b !== null) - throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var RangeList = require("../range_list").RangeList; -var Fold = /** @class */ (function (_super) { - __extends(Fold, _super); - function Fold(range, placeholder) { - var _this = _super.call(this) || this; - _this.foldLine = null; - _this.placeholder = placeholder; - _this.range = range; - _this.start = range.start; - _this.end = range.end; - _this.sameRow = range.start.row == range.end.row; - _this.subFolds = _this.ranges = []; - return _this; - } - Fold.prototype.toString = function () { - return '"' + this.placeholder + '" ' + this.range.toString(); - }; - Fold.prototype.setFoldLine = function (foldLine) { - this.foldLine = foldLine; - this.subFolds.forEach(function (fold) { - fold.setFoldLine(foldLine); - }); - }; - Fold.prototype.clone = function () { - var range = this.range.clone(); - var fold = new Fold(range, this.placeholder); - this.subFolds.forEach(function (subFold) { - fold.subFolds.push(subFold.clone()); - }); - fold.collapseChildren = this.collapseChildren; - return fold; - }; - Fold.prototype.addSubFold = function (fold) { - if (this.range.isEqual(fold)) - return; - consumeRange(fold, this.start); - var row = fold.start.row, column = fold.start.column; - for (var i = 0, cmp = -1; i < this.subFolds.length; i++) { - cmp = this.subFolds[i].range.compare(row, column); - if (cmp != 1) - break; - } - var afterStart = this.subFolds[i]; - var firstConsumed = 0; - if (cmp == 0) { - if (afterStart.range.containsRange(fold)) - return afterStart.addSubFold(fold); - else - firstConsumed = 1; - } - var row = fold.range.end.row, column = fold.range.end.column; - for (var j = i, cmp = -1; j < this.subFolds.length; j++) { - cmp = this.subFolds[j].range.compare(row, column); - if (cmp != 1) - break; - } - if (cmp == 0) - j++; - var consumedFolds = this.subFolds.splice(i, j - i, fold); - var last = cmp == 0 ? consumedFolds.length - 1 : consumedFolds.length; - for (var k = firstConsumed; k < last; k++) { - fold.addSubFold(consumedFolds[k]); - } - fold.setFoldLine(this.foldLine); - return fold; - }; - Fold.prototype.restoreRange = function (range) { - return restoreRange(range, this.start); - }; - return Fold; -}(RangeList)); -function consumePoint(point, anchor) { - point.row -= anchor.row; - if (point.row == 0) - point.column -= anchor.column; -} -function consumeRange(range, anchor) { - consumePoint(range.start, anchor); - consumePoint(range.end, anchor); -} -function restorePoint(point, anchor) { - if (point.row == 0) - point.column += anchor.column; - point.row += anchor.row; -} -function restoreRange(range, anchor) { - restorePoint(range.start, anchor); - restorePoint(range.end, anchor); -} -exports.Fold = Fold; - -}); - -ace.define("ace/edit_session/folding",["require","exports","module","ace/range","ace/edit_session/fold_line","ace/edit_session/fold","ace/token_iterator","ace/mouse/mouse_event"], function(require, exports, module){"use strict"; -var Range = require("../range").Range; -var FoldLine = require("./fold_line").FoldLine; -var Fold = require("./fold").Fold; -var TokenIterator = require("../token_iterator").TokenIterator; -var MouseEvent = require("../mouse/mouse_event").MouseEvent; -function Folding() { - this.getFoldAt = function (row, column, side) { - var foldLine = this.getFoldLine(row); - if (!foldLine) - return null; - var folds = foldLine.folds; - for (var i = 0; i < folds.length; i++) { - var range = folds[i].range; - if (range.contains(row, column)) { - if (side == 1 && range.isEnd(row, column) && !range.isEmpty()) { - continue; - } - else if (side == -1 && range.isStart(row, column) && !range.isEmpty()) { - continue; - } - return folds[i]; - } - } - }; - this.getFoldsInRange = function (range) { - var start = range.start; - var end = range.end; - var foldLines = this.$foldData; - var foundFolds = []; - start.column += 1; - end.column -= 1; - for (var i = 0; i < foldLines.length; i++) { - var cmp = foldLines[i].range.compareRange(range); - if (cmp == 2) { - continue; - } - else if (cmp == -2) { - break; - } - var folds = foldLines[i].folds; - for (var j = 0; j < folds.length; j++) { - var fold = folds[j]; - cmp = fold.range.compareRange(range); - if (cmp == -2) { - break; - } - else if (cmp == 2) { - continue; - } - else - if (cmp == 42) { - break; - } - foundFolds.push(fold); - } - } - start.column -= 1; - end.column += 1; - return foundFolds; - }; - this.getFoldsInRangeList = function (ranges) { - if (Array.isArray(ranges)) { - var folds = []; - ranges.forEach(function (range) { - folds = folds.concat(this.getFoldsInRange(range)); - }, this); - } - else { - var folds = this.getFoldsInRange(ranges); - } - return folds; - }; - this.getAllFolds = function () { - var folds = []; - var foldLines = this.$foldData; - for (var i = 0; i < foldLines.length; i++) - for (var j = 0; j < foldLines[i].folds.length; j++) - folds.push(foldLines[i].folds[j]); - return folds; - }; - this.getFoldStringAt = function (row, column, trim, foldLine) { - foldLine = foldLine || this.getFoldLine(row); - if (!foldLine) - return null; - var lastFold = { - end: { column: 0 } - }; - var str, fold; - for (var i = 0; i < foldLine.folds.length; i++) { - fold = foldLine.folds[i]; - var cmp = fold.range.compareEnd(row, column); - if (cmp == -1) { - str = this - .getLine(fold.start.row) - .substring(lastFold.end.column, fold.start.column); - break; - } - else if (cmp === 0) { - return null; - } - lastFold = fold; - } - if (!str) - str = this.getLine(fold.start.row).substring(lastFold.end.column); - if (trim == -1) - return str.substring(0, column - lastFold.end.column); - else if (trim == 1) - return str.substring(column - lastFold.end.column); - else - return str; - }; - this.getFoldLine = function (docRow, startFoldLine) { - var foldData = this.$foldData; - var i = 0; - if (startFoldLine) - i = foldData.indexOf(startFoldLine); - if (i == -1) - i = 0; - for (i; i < foldData.length; i++) { - var foldLine = foldData[i]; - if (foldLine.start.row <= docRow && foldLine.end.row >= docRow) { - return foldLine; - } - else if (foldLine.end.row > docRow) { - return null; - } - } - return null; - }; - this.getNextFoldLine = function (docRow, startFoldLine) { - var foldData = this.$foldData; - var i = 0; - if (startFoldLine) - i = foldData.indexOf(startFoldLine); - if (i == -1) - i = 0; - for (i; i < foldData.length; i++) { - var foldLine = foldData[i]; - if (foldLine.end.row >= docRow) { - return foldLine; - } - } - return null; - }; - this.getFoldedRowCount = function (first, last) { - var foldData = this.$foldData, rowCount = last - first + 1; - for (var i = 0; i < foldData.length; i++) { - var foldLine = foldData[i], end = foldLine.end.row, start = foldLine.start.row; - if (end >= last) { - if (start < last) { - if (start >= first) - rowCount -= last - start; - else - rowCount = 0; // in one fold - } - break; - } - else if (end >= first) { - if (start >= first) // fold inside range - rowCount -= end - start; - else - rowCount -= end - first + 1; - } - } - return rowCount; - }; - this.$addFoldLine = function (foldLine) { - this.$foldData.push(foldLine); - this.$foldData.sort(function (a, b) { - return a.start.row - b.start.row; - }); - return foldLine; - }; - this.addFold = function (placeholder, range) { - var foldData = this.$foldData; - var added = false; - var fold; - if (placeholder instanceof Fold) - fold = placeholder; - else { - fold = new Fold(range, placeholder); - fold.collapseChildren = range.collapseChildren; - } - this.$clipRangeToDocument(fold.range); - var startRow = fold.start.row; - var startColumn = fold.start.column; - var endRow = fold.end.row; - var endColumn = fold.end.column; - var startFold = this.getFoldAt(startRow, startColumn, 1); - var endFold = this.getFoldAt(endRow, endColumn, -1); - if (startFold && endFold == startFold) - return startFold.addSubFold(fold); - if (startFold && !startFold.range.isStart(startRow, startColumn)) - this.removeFold(startFold); - if (endFold && !endFold.range.isEnd(endRow, endColumn)) - this.removeFold(endFold); - var folds = this.getFoldsInRange(fold.range); - if (folds.length > 0) { - this.removeFolds(folds); - if (!fold.collapseChildren) { - folds.forEach(function (subFold) { - fold.addSubFold(subFold); - }); - } - } - for (var i = 0; i < foldData.length; i++) { - var foldLine = foldData[i]; - if (endRow == foldLine.start.row) { - foldLine.addFold(fold); - added = true; - break; - } - else if (startRow == foldLine.end.row) { - foldLine.addFold(fold); - added = true; - if (!fold.sameRow) { - var foldLineNext = foldData[i + 1]; - if (foldLineNext && foldLineNext.start.row == endRow) { - foldLine.merge(foldLineNext); - break; - } - } - break; - } - else if (endRow <= foldLine.start.row) { - break; - } - } - if (!added) - foldLine = this.$addFoldLine(new FoldLine(this.$foldData, fold)); - if (this.$useWrapMode) - this.$updateWrapData(foldLine.start.row, foldLine.start.row); - else - this.$updateRowLengthCache(foldLine.start.row, foldLine.start.row); - this.$modified = true; - this._signal("changeFold", { data: fold, action: "add" }); - return fold; - }; - this.addFolds = function (folds) { - folds.forEach(function (fold) { - this.addFold(fold); - }, this); - }; - this.removeFold = function (fold) { - var foldLine = fold.foldLine; - var startRow = foldLine.start.row; - var endRow = foldLine.end.row; - var foldLines = this.$foldData; - var folds = foldLine.folds; - if (folds.length == 1) { - foldLines.splice(foldLines.indexOf(foldLine), 1); - } - else - if (foldLine.range.isEnd(fold.end.row, fold.end.column)) { - folds.pop(); - foldLine.end.row = folds[folds.length - 1].end.row; - foldLine.end.column = folds[folds.length - 1].end.column; - } - else - if (foldLine.range.isStart(fold.start.row, fold.start.column)) { - folds.shift(); - foldLine.start.row = folds[0].start.row; - foldLine.start.column = folds[0].start.column; - } - else - if (fold.sameRow) { - folds.splice(folds.indexOf(fold), 1); - } - else - { - var newFoldLine = foldLine.split(fold.start.row, fold.start.column); - folds = newFoldLine.folds; - folds.shift(); - newFoldLine.start.row = folds[0].start.row; - newFoldLine.start.column = folds[0].start.column; - } - if (!this.$updating) { - if (this.$useWrapMode) - this.$updateWrapData(startRow, endRow); - else - this.$updateRowLengthCache(startRow, endRow); - } - this.$modified = true; - this._signal("changeFold", { data: fold, action: "remove" }); - }; - this.removeFolds = function (folds) { - var cloneFolds = []; - for (var i = 0; i < folds.length; i++) { - cloneFolds.push(folds[i]); - } - cloneFolds.forEach(function (fold) { - this.removeFold(fold); - }, this); - this.$modified = true; - }; - this.expandFold = function (fold) { - this.removeFold(fold); - fold.subFolds.forEach(function (subFold) { - fold.restoreRange(subFold); - this.addFold(subFold); - }, this); - if (fold.collapseChildren > 0) { - this.foldAll(fold.start.row + 1, fold.end.row, fold.collapseChildren - 1); - } - fold.subFolds = []; - }; - this.expandFolds = function (folds) { - folds.forEach(function (fold) { - this.expandFold(fold); - }, this); - }; - this.unfold = function (location, expandInner) { - var range, folds; - if (location == null) { - range = new Range(0, 0, this.getLength(), 0); - if (expandInner == null) - expandInner = true; - } - else if (typeof location == "number") { - range = new Range(location, 0, location, this.getLine(location).length); - } - else if ("row" in location) { - range = Range.fromPoints(location, location); - } - else if (Array.isArray(location)) { - folds = []; - location.forEach(function (range) { - folds = folds.concat(this.unfold(range)); - }, this); - return folds; - } - else { - range = location; - } - folds = this.getFoldsInRangeList(range); - var outermostFolds = folds; - while (folds.length == 1 - && Range.comparePoints(folds[0].start, range.start) < 0 - && Range.comparePoints(folds[0].end, range.end) > 0) { - this.expandFolds(folds); - folds = this.getFoldsInRangeList(range); - } - if (expandInner != false) { - this.removeFolds(folds); - } - else { - this.expandFolds(folds); - } - if (outermostFolds.length) - return outermostFolds; - }; - this.isRowFolded = function (docRow, startFoldRow) { - return !!this.getFoldLine(docRow, startFoldRow); - }; - this.getRowFoldEnd = function (docRow, startFoldRow) { - var foldLine = this.getFoldLine(docRow, startFoldRow); - return foldLine ? foldLine.end.row : docRow; - }; - this.getRowFoldStart = function (docRow, startFoldRow) { - var foldLine = this.getFoldLine(docRow, startFoldRow); - return foldLine ? foldLine.start.row : docRow; - }; - this.getFoldDisplayLine = function (foldLine, endRow, endColumn, startRow, startColumn) { - if (startRow == null) - startRow = foldLine.start.row; - if (startColumn == null) - startColumn = 0; - if (endRow == null) - endRow = foldLine.end.row; - if (endColumn == null) - endColumn = this.getLine(endRow).length; - var doc = this.doc; - var textLine = ""; - foldLine.walk(function (placeholder, row, column, lastColumn) { - if (row < startRow) - return; - if (row == startRow) { - if (column < startColumn) - return; - lastColumn = Math.max(startColumn, lastColumn); - } - if (placeholder != null) { - textLine += placeholder; - } - else { - textLine += doc.getLine(row).substring(lastColumn, column); - } - }, endRow, endColumn); - return textLine; - }; - this.getDisplayLine = function (row, endColumn, startRow, startColumn) { - var foldLine = this.getFoldLine(row); - if (!foldLine) { - var line; - line = this.doc.getLine(row); - return line.substring(startColumn || 0, endColumn || line.length); - } - else { - return this.getFoldDisplayLine(foldLine, row, endColumn, startRow, startColumn); - } - }; - this.$cloneFoldData = function () { - var fd = []; - fd = this.$foldData.map(function (foldLine) { - var folds = foldLine.folds.map(function (fold) { - return fold.clone(); - }); - return new FoldLine(fd, folds); - }); - return fd; - }; - this.toggleFold = function (tryToUnfold) { - var selection = this.selection; - var range = selection.getRange(); - var fold; - var bracketPos; - if (range.isEmpty()) { - var cursor = range.start; - fold = this.getFoldAt(cursor.row, cursor.column); - if (fold) { - this.expandFold(fold); - return; - } - else if (bracketPos = this.findMatchingBracket(cursor)) { - if (range.comparePoint(bracketPos) == 1) { - range.end = bracketPos; - } - else { - range.start = bracketPos; - range.start.column++; - range.end.column--; - } - } - else if (bracketPos = this.findMatchingBracket({ row: cursor.row, column: cursor.column + 1 })) { - if (range.comparePoint(bracketPos) == 1) - range.end = bracketPos; - else - range.start = bracketPos; - range.start.column++; - } - else { - range = this.getCommentFoldRange(cursor.row, cursor.column) || range; - } - } - else { - var folds = this.getFoldsInRange(range); - if (tryToUnfold && folds.length) { - this.expandFolds(folds); - return; - } - else if (folds.length == 1) { - fold = folds[0]; - } - } - if (!fold) - fold = this.getFoldAt(range.start.row, range.start.column); - if (fold && fold.range.toString() == range.toString()) { - this.expandFold(fold); - return; - } - var placeholder = "..."; - if (!range.isMultiLine()) { - placeholder = this.getTextRange(range); - if (placeholder.length < 4) - return; - placeholder = placeholder.trim().substring(0, 2) + ".."; - } - this.addFold(placeholder, range); - }; - this.getCommentFoldRange = function (row, column, dir) { - var iterator = new TokenIterator(this, row, column); - var token = iterator.getCurrentToken(); - var type = token && token.type; - if (token && /^comment|string/.test(type)) { - type = type.match(/comment|string/)[0]; - if (type == "comment") - type += "|doc-start|\\.doc"; - var re = new RegExp(type); - var range = new Range(); - if (dir != 1) { - do { - token = iterator.stepBackward(); - } while (token && re.test(token.type) && !/^comment.end/.test(token.type)); - token = iterator.stepForward(); - } - range.start.row = iterator.getCurrentTokenRow(); - range.start.column = iterator.getCurrentTokenColumn() + (/^comment.start/.test(token.type) ? token.value.length : 2); - iterator = new TokenIterator(this, row, column); - if (dir != -1) { - var lastRow = -1; - do { - token = iterator.stepForward(); - if (lastRow == -1) { - var state = this.getState(iterator.$row); - if (!re.test(state)) - lastRow = iterator.$row; - } - else if (iterator.$row > lastRow) { - break; - } - } while (token && re.test(token.type) && !/^comment.start/.test(token.type)); - token = iterator.stepBackward(); - } - else - token = iterator.getCurrentToken(); - range.end.row = iterator.getCurrentTokenRow(); - range.end.column = iterator.getCurrentTokenColumn(); - if (!/^comment.end/.test(token.type)) { - range.end.column += token.value.length - 2; - } - return range; - } - }; - this.foldAll = function (startRow, endRow, depth, test) { - if (depth == undefined) - depth = 100000; // JSON.stringify doesn't hanle Infinity - var foldWidgets = this.foldWidgets; - if (!foldWidgets) - return; // mode doesn't support folding - endRow = endRow || this.getLength(); - startRow = startRow || 0; - for (var row = startRow; row < endRow; row++) { - if (foldWidgets[row] == null) - foldWidgets[row] = this.getFoldWidget(row); - if (foldWidgets[row] != "start") - continue; - if (test && !test(row)) - continue; - var range = this.getFoldWidgetRange(row); - if (range && range.isMultiLine() - && range.end.row <= endRow - && range.start.row >= startRow) { - row = range.end.row; - range.collapseChildren = depth; - this.addFold("...", range); - } - } - }; - this.foldToLevel = function (level) { - this.foldAll(); - while (level-- > 0) - this.unfold(null, false); - }; - this.foldAllComments = function () { - var session = this; - this.foldAll(null, null, null, function (row) { - var tokens = session.getTokens(row); - for (var i = 0; i < tokens.length; i++) { - var token = tokens[i]; - if (token.type == "text" && /^\s+$/.test(token.value)) - continue; - if (/comment/.test(token.type)) - return true; - return false; - } - }); - }; - this.$foldStyles = { - "manual": 1, - "markbegin": 1, - "markbeginend": 1 - }; - this.$foldStyle = "markbegin"; - this.setFoldStyle = function (style) { - if (!this.$foldStyles[style]) - throw new Error("invalid fold style: " + style + "[" + Object.keys(this.$foldStyles).join(", ") + "]"); - if (this.$foldStyle == style) - return; - this.$foldStyle = style; - if (style == "manual") - this.unfold(); - var mode = this.$foldMode; - this.$setFolding(null); - this.$setFolding(mode); - }; - this.$setFolding = function (foldMode) { - if (this.$foldMode == foldMode) - return; - this.$foldMode = foldMode; - this.off('change', this.$updateFoldWidgets); - this.off('tokenizerUpdate', this.$tokenizerUpdateFoldWidgets); - this._signal("changeAnnotation"); - if (!foldMode || this.$foldStyle == "manual") { - this.foldWidgets = null; - return; - } - this.foldWidgets = []; - this.getFoldWidget = foldMode.getFoldWidget.bind(foldMode, this, this.$foldStyle); - this.getFoldWidgetRange = foldMode.getFoldWidgetRange.bind(foldMode, this, this.$foldStyle); - this.$updateFoldWidgets = this.updateFoldWidgets.bind(this); - this.$tokenizerUpdateFoldWidgets = this.tokenizerUpdateFoldWidgets.bind(this); - this.on('change', this.$updateFoldWidgets); - this.on('tokenizerUpdate', this.$tokenizerUpdateFoldWidgets); - }; - this.getParentFoldRangeData = function (row, ignoreCurrent) { - var fw = this.foldWidgets; - if (!fw || (ignoreCurrent && fw[row])) - return {}; - var i = row - 1, firstRange; - while (i >= 0) { - var c = fw[i]; - if (c == null) - c = fw[i] = this.getFoldWidget(i); - if (c == "start") { - var range = this.getFoldWidgetRange(i); - if (!firstRange) - firstRange = range; - if (range && range.end.row >= row) - break; - } - i--; - } - return { - range: i !== -1 && range, - firstRange: firstRange - }; - }; - this.onFoldWidgetClick = function (row, e) { - if (e instanceof MouseEvent) - e = e.domEvent; - var options = { - children: e.shiftKey, - all: e.ctrlKey || e.metaKey, - siblings: e.altKey - }; - var range = this.$toggleFoldWidget(row, options); - if (!range) { - var el = (e.target || e.srcElement); - if (el && /ace_fold-widget/.test(el.className)) - el.className += " ace_invalid"; - } - }; - this.$toggleFoldWidget = function (row, options) { - if (!this.getFoldWidget) - return; - var type = this.getFoldWidget(row); - var line = this.getLine(row); - var dir = type === "end" ? -1 : 1; - var fold = this.getFoldAt(row, dir === -1 ? 0 : line.length, dir); - if (fold) { - if (options.children || options.all) - this.removeFold(fold); - else - this.expandFold(fold); - return fold; - } - var range = this.getFoldWidgetRange(row, true); - if (range && !range.isMultiLine()) { - fold = this.getFoldAt(range.start.row, range.start.column, 1); - if (fold && range.isEqual(fold.range)) { - this.removeFold(fold); - return fold; - } - } - if (options.siblings) { - var data = this.getParentFoldRangeData(row); - if (data.range) { - var startRow = data.range.start.row + 1; - var endRow = data.range.end.row; - } - this.foldAll(startRow, endRow, options.all ? 10000 : 0); - } - else if (options.children) { - endRow = range ? range.end.row : this.getLength(); - this.foldAll(row + 1, endRow, options.all ? 10000 : 0); - } - else if (range) { - if (options.all) - range.collapseChildren = 10000; - this.addFold("...", range); - } - return range; - }; - this.toggleFoldWidget = function (toggleParent) { - var row = this.selection.getCursor().row; - row = this.getRowFoldStart(row); - var range = this.$toggleFoldWidget(row, {}); - if (range) - return; - var data = this.getParentFoldRangeData(row, true); - range = data.range || data.firstRange; - if (range) { - row = range.start.row; - var fold = this.getFoldAt(row, this.getLine(row).length, 1); - if (fold) { - this.removeFold(fold); - } - else { - this.addFold("...", range); - } - } - }; - this.updateFoldWidgets = function (delta) { - var firstRow = delta.start.row; - var len = delta.end.row - firstRow; - if (len === 0) { - this.foldWidgets[firstRow] = null; - } - else if (delta.action == 'remove') { - this.foldWidgets.splice(firstRow, len + 1, null); - } - else { - var args = Array(len + 1); - args.unshift(firstRow, 1); - this.foldWidgets.splice.apply(this.foldWidgets, args); - } - }; - this.tokenizerUpdateFoldWidgets = function (e) { - var rows = e.data; - if (rows.first != rows.last) { - if (this.foldWidgets.length > rows.first) - this.foldWidgets.splice(rows.first, this.foldWidgets.length); - } - }; -} -exports.Folding = Folding; - -}); - -ace.define("ace/edit_session/bracket_match",["require","exports","module","ace/token_iterator","ace/range"], function(require, exports, module){"use strict"; -var TokenIterator = require("../token_iterator").TokenIterator; -var Range = require("../range").Range; -function BracketMatch() { - this.findMatchingBracket = function (position, chr) { - if (position.column == 0) - return null; - var charBeforeCursor = chr || this.getLine(position.row).charAt(position.column - 1); - if (charBeforeCursor == "") - return null; - var match = charBeforeCursor.match(/([\(\[\{])|([\)\]\}])/); - if (!match) - return null; - if (match[1]) - return this.$findClosingBracket(match[1], position); - else - return this.$findOpeningBracket(match[2], position); - }; - this.getBracketRange = function (pos) { - var line = this.getLine(pos.row); - var before = true, range; - var chr = line.charAt(pos.column - 1); - var match = chr && chr.match(/([\(\[\{])|([\)\]\}])/); - if (!match) { - chr = line.charAt(pos.column); - pos = { row: pos.row, column: pos.column + 1 }; - match = chr && chr.match(/([\(\[\{])|([\)\]\}])/); - before = false; - } - if (!match) - return null; - if (match[1]) { - var bracketPos = this.$findClosingBracket(match[1], pos); - if (!bracketPos) - return null; - range = Range.fromPoints(pos, bracketPos); - if (!before) { - range.end.column++; - range.start.column--; - } - range.cursor = range.end; - } - else { - var bracketPos = this.$findOpeningBracket(match[2], pos); - if (!bracketPos) - return null; - range = Range.fromPoints(bracketPos, pos); - if (!before) { - range.start.column++; - range.end.column--; - } - range.cursor = range.start; - } - return range; - }; - this.getMatchingBracketRanges = function (pos, isBackwards) { - var line = this.getLine(pos.row); - var bracketsRegExp = /([\(\[\{])|([\)\]\}])/; - var chr = !isBackwards && line.charAt(pos.column - 1); - var match = chr && chr.match(bracketsRegExp); - if (!match) { - chr = (isBackwards === undefined || isBackwards) && line.charAt(pos.column); - pos = { - row: pos.row, - column: pos.column + 1 - }; - match = chr && chr.match(bracketsRegExp); - } - if (!match) - return null; - var startRange = new Range(pos.row, pos.column - 1, pos.row, pos.column); - var bracketPos = match[1] ? this.$findClosingBracket(match[1], pos) - : this.$findOpeningBracket(match[2], pos); - if (!bracketPos) - return [startRange]; - var endRange = new Range(bracketPos.row, bracketPos.column, bracketPos.row, bracketPos.column + 1); - return [startRange, endRange]; - }; - this.$brackets = { - ")": "(", - "(": ")", - "]": "[", - "[": "]", - "{": "}", - "}": "{", - "<": ">", - ">": "<" - }; - this.$findOpeningBracket = function (bracket, position, typeRe) { - var openBracket = this.$brackets[bracket]; - var depth = 1; - var iterator = new TokenIterator(this, position.row, position.column); - var token = iterator.getCurrentToken(); - if (!token) - token = iterator.stepForward(); - if (!token) - return; - if (!typeRe) { - typeRe = new RegExp("(\\.?" + - token.type.replace(".", "\\.").replace("rparen", ".paren") - .replace(/\b(?:end)\b/, "(?:start|begin|end)") - .replace(/-close\b/, "-(close|open)") - + ")+"); - } - var valueIndex = position.column - iterator.getCurrentTokenColumn() - 2; - var value = token.value; - while (true) { - while (valueIndex >= 0) { - var chr = value.charAt(valueIndex); - if (chr == openBracket) { - depth -= 1; - if (depth == 0) { - return { row: iterator.getCurrentTokenRow(), - column: valueIndex + iterator.getCurrentTokenColumn() }; - } - } - else if (chr == bracket) { - depth += 1; - } - valueIndex -= 1; - } - do { - token = iterator.stepBackward(); - } while (token && !typeRe.test(token.type)); - if (token == null) - break; - value = token.value; - valueIndex = value.length - 1; - } - return null; - }; - this.$findClosingBracket = function (bracket, position, typeRe) { - var closingBracket = this.$brackets[bracket]; - var depth = 1; - var iterator = new TokenIterator(this, position.row, position.column); - var token = iterator.getCurrentToken(); - if (!token) - token = iterator.stepForward(); - if (!token) - return; - if (!typeRe) { - typeRe = new RegExp("(\\.?" + - token.type.replace(".", "\\.").replace("lparen", ".paren") - .replace(/\b(?:start|begin)\b/, "(?:start|begin|end)") - .replace(/-open\b/, "-(close|open)") - + ")+"); - } - var valueIndex = position.column - iterator.getCurrentTokenColumn(); - while (true) { - var value = token.value; - var valueLength = value.length; - while (valueIndex < valueLength) { - var chr = value.charAt(valueIndex); - if (chr == closingBracket) { - depth -= 1; - if (depth == 0) { - return { row: iterator.getCurrentTokenRow(), - column: valueIndex + iterator.getCurrentTokenColumn() }; - } - } - else if (chr == bracket) { - depth += 1; - } - valueIndex += 1; - } - do { - token = iterator.stepForward(); - } while (token && !typeRe.test(token.type)); - if (token == null) - break; - valueIndex = 0; - } - return null; - }; - this.getMatchingTags = function (pos) { - var iterator = new TokenIterator(this, pos.row, pos.column); - var token = this.$findTagName(iterator); - if (!token) - return; - var prevToken = iterator.stepBackward(); - if (prevToken.value === '<') { - return this.$findClosingTag(iterator, token); - } - else { - return this.$findOpeningTag(iterator, token); - } - }; - this.$findTagName = function (iterator) { - var token = iterator.getCurrentToken(); - var found = false; - var backward = false; - if (token && token.type.indexOf('tag-name') === -1) { - do { - if (backward) - token = iterator.stepBackward(); - else - token = iterator.stepForward(); - if (token) { - if (token.value === "/>") { - backward = true; - } - else if (token.type.indexOf('tag-name') !== -1) { - found = true; - } - } - } while (token && !found); - } - return token; - }; - this.$findClosingTag = function (iterator, token) { - var prevToken; - var currentTag = token.value; - var tag = token.value; - var depth = 0; - var openTagStart = new Range(iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn(), iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() + 1); - token = iterator.stepForward(); - var openTagName = new Range(iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn(), iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() + token.value.length); - var foundOpenTagEnd = false; - do { - prevToken = token; - token = iterator.stepForward(); - if (token) { - if (token.value === '>' && !foundOpenTagEnd) { - var openTagEnd = new Range(iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn(), iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() + 1); //Range for `>` - foundOpenTagEnd = true; - } - if (token.type.indexOf('tag-name') !== -1) { - currentTag = token.value; - if (tag === currentTag) { - if (prevToken.value === '<') { - depth++; - } - else if (prevToken.value === '') { - var closeTagEnd = new Range(iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn(), iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() + 1); //Range for > - } - else { - return; - } - } - } - } - } - else if (tag === currentTag && token.value === '/>') { // self-closing tag - depth--; - if (depth < 0) { //found self-closing tag end - var closeTagStart = new Range(iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn(), iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() + 2); - var closeTagName = closeTagStart; - var closeTagEnd = closeTagName; - var openTagEnd = new Range(openTagName.end.row, openTagName.end.column, openTagName.end.row, openTagName.end.column + 1); - } - } - } - } while (token && depth >= 0); - if (openTagStart && openTagEnd && closeTagStart && closeTagEnd && openTagName && closeTagName) { - return { - openTag: new Range(openTagStart.start.row, openTagStart.start.column, openTagEnd.end.row, openTagEnd.end.column), - closeTag: new Range(closeTagStart.start.row, closeTagStart.start.column, closeTagEnd.end.row, closeTagEnd.end.column), - openTagName: openTagName, - closeTagName: closeTagName - }; - } - }; - this.$findOpeningTag = function (iterator, token) { - var prevToken = iterator.getCurrentToken(); - var tag = token.value; - var depth = 0; - var startRow = iterator.getCurrentTokenRow(); - var startColumn = iterator.getCurrentTokenColumn(); - var endColumn = startColumn + 2; - var closeTagStart = new Range(startRow, startColumn, startRow, endColumn); //Range for ") - return; - var closeTagEnd = new Range(iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn(), iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() + 1); //Range for > - iterator.stepBackward(); - iterator.stepBackward(); - do { - token = prevToken; - startRow = iterator.getCurrentTokenRow(); - startColumn = iterator.getCurrentTokenColumn(); - endColumn = startColumn + token.value.length; - prevToken = iterator.stepBackward(); - if (token) { - if (token.type.indexOf('tag-name') !== -1) { - if (tag === token.value) { - if (prevToken.value === '<') { - depth++; - if (depth > 0) { //found opening tag - var openTagName = new Range(startRow, startColumn, startRow, endColumn); - var openTagStart = new Range(iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn(), iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() + 1); //Range for < - do { - token = iterator.stepForward(); - } while (token && token.value !== '>'); - var openTagEnd = new Range(iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn(), iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() + 1); //Range for > - } - } - else if (prevToken.value === '') { // self-closing tag - var stepCount = 0; - var tmpToken = prevToken; - while (tmpToken) { - if (tmpToken.type.indexOf('tag-name') !== -1 && tmpToken.value === tag) { - depth--; - break; - } - else if (tmpToken.value === '<') { - break; - } - tmpToken = iterator.stepBackward(); - stepCount++; - } - for (var i = 0; i < stepCount; i++) { - iterator.stepForward(); - } - } - } - } while (prevToken && depth <= 0); - if (openTagStart && openTagEnd && closeTagStart && closeTagEnd && openTagName && closeTagName) { - return { - openTag: new Range(openTagStart.start.row, openTagStart.start.column, openTagEnd.end.row, openTagEnd.end.column), - closeTag: new Range(closeTagStart.start.row, closeTagStart.start.column, closeTagEnd.end.row, closeTagEnd.end.column), - openTagName: openTagName, - closeTagName: closeTagName - }; - } - }; -} -exports.BracketMatch = BracketMatch; - -}); - -ace.define("ace/edit_session",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/bidihandler","ace/config","ace/lib/event_emitter","ace/selection","ace/mode/text","ace/range","ace/document","ace/background_tokenizer","ace/search_highlight","ace/undomanager","ace/edit_session/folding","ace/edit_session/bracket_match"], function(require, exports, module){"use strict"; -var oop = require("./lib/oop"); -var lang = require("./lib/lang"); -var BidiHandler = require("./bidihandler").BidiHandler; -var config = require("./config"); -var EventEmitter = require("./lib/event_emitter").EventEmitter; -var Selection = require("./selection").Selection; -var TextMode = require("./mode/text").Mode; -var Range = require("./range").Range; -var Document = require("./document").Document; -var BackgroundTokenizer = require("./background_tokenizer").BackgroundTokenizer; -var SearchHighlight = require("./search_highlight").SearchHighlight; -var UndoManager = require("./undomanager").UndoManager; -var EditSession = /** @class */ (function () { - function EditSession(text, mode) { - this.$breakpoints = []; - this.$decorations = []; - this.$frontMarkers = {}; - this.$backMarkers = {}; - this.$markerId = 1; - this.$undoSelect = true; - this.$foldData = []; - this.id = "session" + (++EditSession.$uid); - this.$foldData.toString = function () { - return this.join("\n"); - }; - this.bgTokenizer = new BackgroundTokenizer((new TextMode()).getTokenizer(), this); - var _self = this; - this.bgTokenizer.on("update", function (e) { - _self._signal("tokenizerUpdate", e); - }); - this.on("changeFold", this.onChangeFold.bind(this)); - this.$onChange = this.onChange.bind(this); - if (typeof text != "object" || !text.getLine) - text = new Document(text); - this.setDocument(text); - this.selection = new Selection(this); - this.$bidiHandler = new BidiHandler(this); - config.resetOptions(this); - this.setMode(mode); - config._signal("session", this); - this.destroyed = false; - } - EditSession.prototype.setDocument = function (doc) { - if (this.doc) - this.doc.off("change", this.$onChange); - this.doc = doc; - doc.on("change", this.$onChange, true); - this.bgTokenizer.setDocument(this.getDocument()); - this.resetCaches(); - }; - EditSession.prototype.getDocument = function () { - return this.doc; - }; - EditSession.prototype.$resetRowCache = function (docRow) { - if (!docRow) { - this.$docRowCache = []; - this.$screenRowCache = []; - return; - } - var l = this.$docRowCache.length; - var i = this.$getRowCacheIndex(this.$docRowCache, docRow) + 1; - if (l > i) { - this.$docRowCache.splice(i, l); - this.$screenRowCache.splice(i, l); - } - }; - EditSession.prototype.$getRowCacheIndex = function (cacheArray, val) { - var low = 0; - var hi = cacheArray.length - 1; - while (low <= hi) { - var mid = (low + hi) >> 1; - var c = cacheArray[mid]; - if (val > c) - low = mid + 1; - else if (val < c) - hi = mid - 1; - else - return mid; - } - return low - 1; - }; - EditSession.prototype.resetCaches = function () { - this.$modified = true; - this.$wrapData = []; - this.$rowLengthCache = []; - this.$resetRowCache(0); - if (!this.destroyed) - this.bgTokenizer.start(0); - }; - EditSession.prototype.onChangeFold = function (e) { - var fold = e.data; - this.$resetRowCache(fold.start.row); - }; - EditSession.prototype.onChange = function (delta) { - this.$modified = true; - this.$bidiHandler.onChange(delta); - this.$resetRowCache(delta.start.row); - var removedFolds = this.$updateInternalDataOnChange(delta); - if (!this.$fromUndo && this.$undoManager) { - if (removedFolds && removedFolds.length) { - this.$undoManager.add({ - action: "removeFolds", - folds: removedFolds - }, this.mergeUndoDeltas); - this.mergeUndoDeltas = true; - } - this.$undoManager.add(delta, this.mergeUndoDeltas); - this.mergeUndoDeltas = true; - this.$informUndoManager.schedule(); - } - this.bgTokenizer.$updateOnChange(delta); - this._signal("change", delta); - }; - EditSession.prototype.setValue = function (text) { - this.doc.setValue(text); - this.selection.moveTo(0, 0); - this.$resetRowCache(0); - this.setUndoManager(this.$undoManager); - this.getUndoManager().reset(); - }; - EditSession.fromJSON = function (session) { - session = JSON.parse(session); - var undoManager = new UndoManager(); - undoManager.$undoStack = session.history.undo; - undoManager.$redoStack = session.history.redo; - undoManager.mark = session.history.mark; - undoManager.$rev = session.history.rev; - var editSession = new EditSession(session.value); - session.folds.forEach(function (fold) { - editSession.addFold("...", Range.fromPoints(fold.start, fold.end)); - }); - editSession.setAnnotations(session.annotations); - editSession.setBreakpoints(session.breakpoints); - editSession.setMode(session.mode); - editSession.setScrollLeft(session.scrollLeft); - editSession.setScrollTop(session.scrollTop); - editSession.setUndoManager(undoManager); - editSession.selection.fromJSON(session.selection); - return editSession; - }; - EditSession.prototype.toJSON = function () { - return { - annotations: this.$annotations, - breakpoints: this.$breakpoints, - folds: this.getAllFolds().map(function (fold) { - return fold.range; - }), - history: this.getUndoManager(), - mode: this.$mode.$id, - scrollLeft: this.$scrollLeft, - scrollTop: this.$scrollTop, - selection: this.selection.toJSON(), - value: this.doc.getValue() - }; - }; - EditSession.prototype.toString = function () { - return this.doc.getValue(); - }; - EditSession.prototype.getSelection = function () { - return this.selection; - }; - EditSession.prototype.getState = function (row) { - return this.bgTokenizer.getState(row); - }; - EditSession.prototype.getTokens = function (row) { - return this.bgTokenizer.getTokens(row); - }; - EditSession.prototype.getTokenAt = function (row, column) { - var tokens = this.bgTokenizer.getTokens(row); - var token, c = 0; - if (column == null) { - var i = tokens.length - 1; - c = this.getLine(row).length; - } - else { - for (var i = 0; i < tokens.length; i++) { - c += tokens[i].value.length; - if (c >= column) - break; - } - } - token = tokens[i]; - if (!token) - return null; - token.index = i; - token.start = c - token.value.length; - return token; - }; - EditSession.prototype.setUndoManager = function (undoManager) { - this.$undoManager = undoManager; - if (this.$informUndoManager) - this.$informUndoManager.cancel(); - if (undoManager) { - var self = this; - undoManager.addSession(this); - this.$syncInformUndoManager = function () { - self.$informUndoManager.cancel(); - self.mergeUndoDeltas = false; - }; - this.$informUndoManager = lang.delayedCall(this.$syncInformUndoManager); - } - else { - this.$syncInformUndoManager = function () { }; - } - }; - EditSession.prototype.markUndoGroup = function () { - if (this.$syncInformUndoManager) - this.$syncInformUndoManager(); - }; - EditSession.prototype.getUndoManager = function () { - return this.$undoManager || this.$defaultUndoManager; - }; - EditSession.prototype.getTabString = function () { - if (this.getUseSoftTabs()) { - return lang.stringRepeat(" ", this.getTabSize()); - } - else { - return "\t"; - } - }; - EditSession.prototype.setUseSoftTabs = function (val) { - this.setOption("useSoftTabs", val); - }; - EditSession.prototype.getUseSoftTabs = function () { - return this.$useSoftTabs && !this.$mode.$indentWithTabs; - }; - EditSession.prototype.setTabSize = function (tabSize) { - this.setOption("tabSize", tabSize); - }; - EditSession.prototype.getTabSize = function () { - return this.$tabSize; - }; - EditSession.prototype.isTabStop = function (position) { - return this.$useSoftTabs && (position.column % this.$tabSize === 0); - }; - EditSession.prototype.setNavigateWithinSoftTabs = function (navigateWithinSoftTabs) { - this.setOption("navigateWithinSoftTabs", navigateWithinSoftTabs); - }; - EditSession.prototype.getNavigateWithinSoftTabs = function () { - return this.$navigateWithinSoftTabs; - }; - EditSession.prototype.setOverwrite = function (overwrite) { - this.setOption("overwrite", overwrite); - }; - EditSession.prototype.getOverwrite = function () { - return this.$overwrite; - }; - EditSession.prototype.toggleOverwrite = function () { - this.setOverwrite(!this.$overwrite); - }; - EditSession.prototype.addGutterDecoration = function (row, className) { - if (!this.$decorations[row]) - this.$decorations[row] = ""; - this.$decorations[row] += " " + className; - this._signal("changeBreakpoint", {}); - }; - EditSession.prototype.removeGutterDecoration = function (row, className) { - this.$decorations[row] = (this.$decorations[row] || "").replace(" " + className, ""); - this._signal("changeBreakpoint", {}); - }; - EditSession.prototype.getBreakpoints = function () { - return this.$breakpoints; - }; - EditSession.prototype.setBreakpoints = function (rows) { - this.$breakpoints = []; - for (var i = 0; i < rows.length; i++) { - this.$breakpoints[rows[i]] = "ace_breakpoint"; - } - this._signal("changeBreakpoint", {}); - }; - EditSession.prototype.clearBreakpoints = function () { - this.$breakpoints = []; - this._signal("changeBreakpoint", {}); - }; - EditSession.prototype.setBreakpoint = function (row, className) { - if (className === undefined) - className = "ace_breakpoint"; - if (className) - this.$breakpoints[row] = className; - else - delete this.$breakpoints[row]; - this._signal("changeBreakpoint", {}); - }; - EditSession.prototype.clearBreakpoint = function (row) { - delete this.$breakpoints[row]; - this._signal("changeBreakpoint", {}); - }; - EditSession.prototype.addMarker = function (range, clazz, type, inFront) { - var id = this.$markerId++; - var marker = { - range: range, - type: type || "line", - renderer: typeof type == "function" ? type : null, - clazz: clazz, - inFront: !!inFront, - id: id - }; - if (inFront) { - this.$frontMarkers[id] = marker; - this._signal("changeFrontMarker"); - } - else { - this.$backMarkers[id] = marker; - this._signal("changeBackMarker"); - } - return id; - }; - EditSession.prototype.addDynamicMarker = function (marker, inFront) { - if (!marker.update) - return; - var id = this.$markerId++; - marker.id = id; - marker.inFront = !!inFront; - if (inFront) { - this.$frontMarkers[id] = marker; - this._signal("changeFrontMarker"); - } - else { - this.$backMarkers[id] = marker; - this._signal("changeBackMarker"); - } - return marker; - }; - EditSession.prototype.removeMarker = function (markerId) { - var marker = this.$frontMarkers[markerId] || this.$backMarkers[markerId]; - if (!marker) - return; - var markers = marker.inFront ? this.$frontMarkers : this.$backMarkers; - delete (markers[markerId]); - this._signal(marker.inFront ? "changeFrontMarker" : "changeBackMarker"); - }; - EditSession.prototype.getMarkers = function (inFront) { - return inFront ? this.$frontMarkers : this.$backMarkers; - }; - EditSession.prototype.highlight = function (re) { - if (!this.$searchHighlight) { - var highlight = new SearchHighlight(null, "ace_selected-word", "text"); - this.$searchHighlight = this.addDynamicMarker(highlight); - } - this.$searchHighlight.setRegexp(re); - }; - EditSession.prototype.highlightLines = function (startRow, endRow, clazz, inFront) { - if (typeof endRow != "number") { - clazz = endRow; - endRow = startRow; - } - if (!clazz) - clazz = "ace_step"; - var range = new Range(startRow, 0, endRow, Infinity); - range.id = this.addMarker(range, clazz, "fullLine", inFront); - return range; - }; - EditSession.prototype.setAnnotations = function (annotations) { - this.$annotations = annotations; - this._signal("changeAnnotation", {}); - }; - EditSession.prototype.getAnnotations = function () { - return this.$annotations || []; - }; - EditSession.prototype.clearAnnotations = function () { - this.setAnnotations([]); - }; - EditSession.prototype.$detectNewLine = function (text) { - var match = text.match(/^.*?(\r?\n)/m); - if (match) { - this.$autoNewLine = match[1]; - } - else { - this.$autoNewLine = "\n"; - } - }; - EditSession.prototype.getWordRange = function (row, column) { - var line = this.getLine(row); - var inToken = false; - if (column > 0) - inToken = !!line.charAt(column - 1).match(this.tokenRe); - if (!inToken) - inToken = !!line.charAt(column).match(this.tokenRe); - if (inToken) - var re = this.tokenRe; - else if (/^\s+$/.test(line.slice(column - 1, column + 1))) - var re = /\s/; - else - var re = this.nonTokenRe; - var start = column; - if (start > 0) { - do { - start--; - } while (start >= 0 && line.charAt(start).match(re)); - start++; - } - var end = column; - while (end < line.length && line.charAt(end).match(re)) { - end++; - } - return new Range(row, start, row, end); - }; - EditSession.prototype.getAWordRange = function (row, column) { - var wordRange = this.getWordRange(row, column); - var line = this.getLine(wordRange.end.row); - while (line.charAt(wordRange.end.column).match(/[ \t]/)) { - wordRange.end.column += 1; - } - return wordRange; - }; - EditSession.prototype.setNewLineMode = function (newLineMode) { - this.doc.setNewLineMode(newLineMode); - }; - EditSession.prototype.getNewLineMode = function () { - return this.doc.getNewLineMode(); - }; - EditSession.prototype.setUseWorker = function (useWorker) { this.setOption("useWorker", useWorker); }; - EditSession.prototype.getUseWorker = function () { return this.$useWorker; }; - EditSession.prototype.onReloadTokenizer = function (e) { - var rows = e.data; - this.bgTokenizer.start(rows.first); - this._signal("tokenizerUpdate", e); - }; - EditSession.prototype.setMode = function (mode, cb) { - if (mode && typeof mode === "object") { - if (mode.getTokenizer) - return this.$onChangeMode(mode); - var options = mode; - var path = options.path; - } - else { - path = mode || "ace/mode/text"; - } - if (!this.$modes["ace/mode/text"]) - this.$modes["ace/mode/text"] = new TextMode(); - if (this.$modes[path] && !options) { - this.$onChangeMode(this.$modes[path]); - cb && cb(); - return; - } - this.$modeId = path; - config.loadModule(["mode", path], function (m) { - if (this.$modeId !== path) - return cb && cb(); - if (this.$modes[path] && !options) { - this.$onChangeMode(this.$modes[path]); - } - else if (m && m.Mode) { - m = new m.Mode(options); - if (!options) { - this.$modes[path] = m; - m.$id = path; - } - this.$onChangeMode(m); - } - cb && cb(); - }.bind(this)); - if (!this.$mode) - this.$onChangeMode(this.$modes["ace/mode/text"], true); - }; - EditSession.prototype.$onChangeMode = function (mode, $isPlaceholder) { - if (!$isPlaceholder) - this.$modeId = mode.$id; - if (this.$mode === mode) - return; - var oldMode = this.$mode; - this.$mode = mode; - this.$stopWorker(); - if (this.$useWorker) - this.$startWorker(); - var tokenizer = mode.getTokenizer(); - if (tokenizer.on !== undefined) { - var onReloadTokenizer = this.onReloadTokenizer.bind(this); - tokenizer.on("update", onReloadTokenizer); - } - this.bgTokenizer.setTokenizer(tokenizer); - this.bgTokenizer.setDocument(this.getDocument()); - this.tokenRe = mode.tokenRe; - this.nonTokenRe = mode.nonTokenRe; - if (!$isPlaceholder) { - if (mode.attachToSession) - mode.attachToSession(this); - this.$options.wrapMethod.set.call(this, this.$wrapMethod); - this.$setFolding(mode.foldingRules); - this.bgTokenizer.start(0); - this._emit("changeMode", { oldMode: oldMode, mode: mode }); - } - }; - EditSession.prototype.$stopWorker = function () { - if (this.$worker) { - this.$worker.terminate(); - this.$worker = null; - } - }; - EditSession.prototype.$startWorker = function () { - try { - this.$worker = this.$mode.createWorker(this); - } - catch (e) { - config.warn("Could not load worker", e); - this.$worker = null; - } - }; - EditSession.prototype.getMode = function () { - return this.$mode; - }; - EditSession.prototype.setScrollTop = function (scrollTop) { - if (this.$scrollTop === scrollTop || isNaN(scrollTop)) - return; - this.$scrollTop = scrollTop; - this._signal("changeScrollTop", scrollTop); - }; - EditSession.prototype.getScrollTop = function () { - return this.$scrollTop; - }; - EditSession.prototype.setScrollLeft = function (scrollLeft) { - if (this.$scrollLeft === scrollLeft || isNaN(scrollLeft)) - return; - this.$scrollLeft = scrollLeft; - this._signal("changeScrollLeft", scrollLeft); - }; - EditSession.prototype.getScrollLeft = function () { - return this.$scrollLeft; - }; - EditSession.prototype.getScreenWidth = function () { - this.$computeWidth(); - if (this.lineWidgets) - return Math.max(this.getLineWidgetMaxWidth(), this.screenWidth); - return this.screenWidth; - }; - EditSession.prototype.getLineWidgetMaxWidth = function () { - if (this.lineWidgetsWidth != null) - return this.lineWidgetsWidth; - var width = 0; - this.lineWidgets.forEach(function (w) { - if (w && w.screenWidth > width) - width = w.screenWidth; - }); - return this.lineWidgetWidth = width; - }; - EditSession.prototype.$computeWidth = function (force) { - if (this.$modified || force) { - this.$modified = false; - if (this.$useWrapMode) - return this.screenWidth = this.$wrapLimit; - var lines = this.doc.getAllLines(); - var cache = this.$rowLengthCache; - var longestScreenLine = 0; - var foldIndex = 0; - var foldLine = this.$foldData[foldIndex]; - var foldStart = foldLine ? foldLine.start.row : Infinity; - var len = lines.length; - for (var i = 0; i < len; i++) { - if (i > foldStart) { - i = foldLine.end.row + 1; - if (i >= len) - break; - foldLine = this.$foldData[foldIndex++]; - foldStart = foldLine ? foldLine.start.row : Infinity; - } - if (cache[i] == null) - cache[i] = this.$getStringScreenWidth(lines[i])[0]; - if (cache[i] > longestScreenLine) - longestScreenLine = cache[i]; - } - this.screenWidth = longestScreenLine; - } - }; - EditSession.prototype.getLine = function (row) { - return this.doc.getLine(row); - }; - EditSession.prototype.getLines = function (firstRow, lastRow) { - return this.doc.getLines(firstRow, lastRow); - }; - EditSession.prototype.getLength = function () { - return this.doc.getLength(); - }; - EditSession.prototype.getTextRange = function (range) { - return this.doc.getTextRange(range || this.selection.getRange()); - }; - EditSession.prototype.insert = function (position, text) { - return this.doc.insert(position, text); - }; - EditSession.prototype.remove = function (range) { - return this.doc.remove(range); - }; - EditSession.prototype.removeFullLines = function (firstRow, lastRow) { - return this.doc.removeFullLines(firstRow, lastRow); - }; - EditSession.prototype.undoChanges = function (deltas, dontSelect) { - if (!deltas.length) - return; - this.$fromUndo = true; - for (var i = deltas.length - 1; i != -1; i--) { - var delta = deltas[i]; - if (delta.action == "insert" || delta.action == "remove") { - this.doc.revertDelta(delta); - } - else if (delta.folds) { - this.addFolds(delta.folds); - } - } - if (!dontSelect && this.$undoSelect) { - if (deltas.selectionBefore) - this.selection.fromJSON(deltas.selectionBefore); - else - this.selection.setRange(this.$getUndoSelection(deltas, true)); - } - this.$fromUndo = false; - }; - EditSession.prototype.redoChanges = function (deltas, dontSelect) { - if (!deltas.length) - return; - this.$fromUndo = true; - for (var i = 0; i < deltas.length; i++) { - var delta = deltas[i]; - if (delta.action == "insert" || delta.action == "remove") { - this.doc.$safeApplyDelta(delta); - } - } - if (!dontSelect && this.$undoSelect) { - if (deltas.selectionAfter) - this.selection.fromJSON(deltas.selectionAfter); - else - this.selection.setRange(this.$getUndoSelection(deltas, false)); - } - this.$fromUndo = false; - }; - EditSession.prototype.setUndoSelect = function (enable) { - this.$undoSelect = enable; - }; - EditSession.prototype.$getUndoSelection = function (deltas, isUndo) { - function isInsert(delta) { - return isUndo ? delta.action !== "insert" : delta.action === "insert"; - } - var range, point; - for (var i = 0; i < deltas.length; i++) { - var delta = deltas[i]; - if (!delta.start) - continue; // skip folds - if (!range) { - if (isInsert(delta)) { - range = Range.fromPoints(delta.start, delta.end); - } - else { - range = Range.fromPoints(delta.start, delta.start); - } - continue; - } - if (isInsert(delta)) { - point = delta.start; - if (range.compare(point.row, point.column) == -1) { - range.setStart(point); - } - point = delta.end; - if (range.compare(point.row, point.column) == 1) { - range.setEnd(point); - } - } - else { - point = delta.start; - if (range.compare(point.row, point.column) == -1) { - range = Range.fromPoints(delta.start, delta.start); - } - } - } - return range; - }; - EditSession.prototype.replace = function (range, text) { - return this.doc.replace(range, text); - }; - EditSession.prototype.moveText = function (fromRange, toPosition, copy) { - var text = this.getTextRange(fromRange); - var folds = this.getFoldsInRange(fromRange); - var toRange = Range.fromPoints(toPosition, toPosition); - if (!copy) { - this.remove(fromRange); - var rowDiff = fromRange.start.row - fromRange.end.row; - var collDiff = rowDiff ? -fromRange.end.column : fromRange.start.column - fromRange.end.column; - if (collDiff) { - if (toRange.start.row == fromRange.end.row && toRange.start.column > fromRange.end.column) - toRange.start.column += collDiff; - if (toRange.end.row == fromRange.end.row && toRange.end.column > fromRange.end.column) - toRange.end.column += collDiff; - } - if (rowDiff && toRange.start.row >= fromRange.end.row) { - toRange.start.row += rowDiff; - toRange.end.row += rowDiff; - } - } - toRange.end = this.insert(toRange.start, text); - if (folds.length) { - var oldStart = fromRange.start; - var newStart = toRange.start; - var rowDiff = newStart.row - oldStart.row; - var collDiff = newStart.column - oldStart.column; - this.addFolds(folds.map(function (x) { - x = x.clone(); - if (x.start.row == oldStart.row) - x.start.column += collDiff; - if (x.end.row == oldStart.row) - x.end.column += collDiff; - x.start.row += rowDiff; - x.end.row += rowDiff; - return x; - })); - } - return toRange; - }; - EditSession.prototype.indentRows = function (startRow, endRow, indentString) { - indentString = indentString.replace(/\t/g, this.getTabString()); - for (var row = startRow; row <= endRow; row++) - this.doc.insertInLine({ row: row, column: 0 }, indentString); - }; - EditSession.prototype.outdentRows = function (range) { - var rowRange = range.collapseRows(); - var deleteRange = new Range(0, 0, 0, 0); - var size = this.getTabSize(); - for (var i = rowRange.start.row; i <= rowRange.end.row; ++i) { - var line = this.getLine(i); - deleteRange.start.row = i; - deleteRange.end.row = i; - for (var j = 0; j < size; ++j) - if (line.charAt(j) != ' ') - break; - if (j < size && line.charAt(j) == '\t') { - deleteRange.start.column = j; - deleteRange.end.column = j + 1; - } - else { - deleteRange.start.column = 0; - deleteRange.end.column = j; - } - this.remove(deleteRange); - } - }; - EditSession.prototype.$moveLines = function (firstRow, lastRow, dir) { - firstRow = this.getRowFoldStart(firstRow); - lastRow = this.getRowFoldEnd(lastRow); - if (dir < 0) { - var row = this.getRowFoldStart(firstRow + dir); - if (row < 0) - return 0; - var diff = row - firstRow; - } - else if (dir > 0) { - var row = this.getRowFoldEnd(lastRow + dir); - if (row > this.doc.getLength() - 1) - return 0; - var diff = row - lastRow; - } - else { - firstRow = this.$clipRowToDocument(firstRow); - lastRow = this.$clipRowToDocument(lastRow); - var diff = lastRow - firstRow + 1; - } - var range = new Range(firstRow, 0, lastRow, Number.MAX_VALUE); - var folds = this.getFoldsInRange(range).map(function (x) { - x = x.clone(); - x.start.row += diff; - x.end.row += diff; - return x; - }); - var lines = dir == 0 - ? this.doc.getLines(firstRow, lastRow) - : this.doc.removeFullLines(firstRow, lastRow); - this.doc.insertFullLines(firstRow + diff, lines); - folds.length && this.addFolds(folds); - return diff; - }; - EditSession.prototype.moveLinesUp = function (firstRow, lastRow) { - return this.$moveLines(firstRow, lastRow, -1); - }; - EditSession.prototype.moveLinesDown = function (firstRow, lastRow) { - return this.$moveLines(firstRow, lastRow, 1); - }; - EditSession.prototype.duplicateLines = function (firstRow, lastRow) { - return this.$moveLines(firstRow, lastRow, 0); - }; - EditSession.prototype.$clipRowToDocument = function (row) { - return Math.max(0, Math.min(row, this.doc.getLength() - 1)); - }; - EditSession.prototype.$clipColumnToRow = function (row, column) { - if (column < 0) - return 0; - return Math.min(this.doc.getLine(row).length, column); - }; - EditSession.prototype.$clipPositionToDocument = function (row, column) { - column = Math.max(0, column); - if (row < 0) { - row = 0; - column = 0; - } - else { - var len = this.doc.getLength(); - if (row >= len) { - row = len - 1; - column = this.doc.getLine(len - 1).length; - } - else { - column = Math.min(this.doc.getLine(row).length, column); - } - } - return { - row: row, - column: column - }; - }; - EditSession.prototype.$clipRangeToDocument = function (range) { - if (range.start.row < 0) { - range.start.row = 0; - range.start.column = 0; - } - else { - range.start.column = this.$clipColumnToRow(range.start.row, range.start.column); - } - var len = this.doc.getLength() - 1; - if (range.end.row > len) { - range.end.row = len; - range.end.column = this.doc.getLine(len).length; - } - else { - range.end.column = this.$clipColumnToRow(range.end.row, range.end.column); - } - return range; - }; - EditSession.prototype.setUseWrapMode = function (useWrapMode) { - if (useWrapMode != this.$useWrapMode) { - this.$useWrapMode = useWrapMode; - this.$modified = true; - this.$resetRowCache(0); - if (useWrapMode) { - var len = this.getLength(); - this.$wrapData = Array(len); - this.$updateWrapData(0, len - 1); - } - this._signal("changeWrapMode"); - } - }; - EditSession.prototype.getUseWrapMode = function () { - return this.$useWrapMode; - }; - EditSession.prototype.setWrapLimitRange = function (min, max) { - if (this.$wrapLimitRange.min !== min || this.$wrapLimitRange.max !== max) { - this.$wrapLimitRange = { min: min, max: max }; - this.$modified = true; - this.$bidiHandler.markAsDirty(); - if (this.$useWrapMode) - this._signal("changeWrapMode"); - } - }; - EditSession.prototype.adjustWrapLimit = function (desiredLimit, $printMargin) { - var limits = this.$wrapLimitRange; - if (limits.max < 0) - limits = { min: $printMargin, max: $printMargin }; - var wrapLimit = this.$constrainWrapLimit(desiredLimit, limits.min, limits.max); - if (wrapLimit != this.$wrapLimit && wrapLimit > 1) { - this.$wrapLimit = wrapLimit; - this.$modified = true; - if (this.$useWrapMode) { - this.$updateWrapData(0, this.getLength() - 1); - this.$resetRowCache(0); - this._signal("changeWrapLimit"); - } - return true; - } - return false; - }; - EditSession.prototype.$constrainWrapLimit = function (wrapLimit, min, max) { - if (min) - wrapLimit = Math.max(min, wrapLimit); - if (max) - wrapLimit = Math.min(max, wrapLimit); - return wrapLimit; - }; - EditSession.prototype.getWrapLimit = function () { - return this.$wrapLimit; - }; - EditSession.prototype.setWrapLimit = function (limit) { - this.setWrapLimitRange(limit, limit); - }; - EditSession.prototype.getWrapLimitRange = function () { - return { - min: this.$wrapLimitRange.min, - max: this.$wrapLimitRange.max - }; - }; - EditSession.prototype.$updateInternalDataOnChange = function (delta) { - var useWrapMode = this.$useWrapMode; - var action = delta.action; - var start = delta.start; - var end = delta.end; - var firstRow = start.row; - var lastRow = end.row; - var len = lastRow - firstRow; - var removedFolds = null; - this.$updating = true; - if (len != 0) { - if (action === "remove") { - this[useWrapMode ? "$wrapData" : "$rowLengthCache"].splice(firstRow, len); - var foldLines = this.$foldData; - removedFolds = this.getFoldsInRange(delta); - this.removeFolds(removedFolds); - var foldLine = this.getFoldLine(end.row); - var idx = 0; - if (foldLine) { - foldLine.addRemoveChars(end.row, end.column, start.column - end.column); - foldLine.shiftRow(-len); - var foldLineBefore = this.getFoldLine(firstRow); - if (foldLineBefore && foldLineBefore !== foldLine) { - foldLineBefore.merge(foldLine); - foldLine = foldLineBefore; - } - idx = foldLines.indexOf(foldLine) + 1; - } - for (idx; idx < foldLines.length; idx++) { - var foldLine = foldLines[idx]; - if (foldLine.start.row >= end.row) { - foldLine.shiftRow(-len); - } - } - lastRow = firstRow; - } - else { - var args = Array(len); - args.unshift(firstRow, 0); - var arr = useWrapMode ? this.$wrapData : this.$rowLengthCache; - arr.splice.apply(arr, args); - var foldLines = this.$foldData; - var foldLine = this.getFoldLine(firstRow); - var idx = 0; - if (foldLine) { - var cmp = foldLine.range.compareInside(start.row, start.column); - if (cmp == 0) { - foldLine = foldLine.split(start.row, start.column); - if (foldLine) { - foldLine.shiftRow(len); - foldLine.addRemoveChars(lastRow, 0, end.column - start.column); - } - } - else - if (cmp == -1) { - foldLine.addRemoveChars(firstRow, 0, end.column - start.column); - foldLine.shiftRow(len); - } - idx = foldLines.indexOf(foldLine) + 1; - } - for (idx; idx < foldLines.length; idx++) { - var foldLine = foldLines[idx]; - if (foldLine.start.row >= firstRow) { - foldLine.shiftRow(len); - } - } - } - } - else { - len = Math.abs(delta.start.column - delta.end.column); - if (action === "remove") { - removedFolds = this.getFoldsInRange(delta); - this.removeFolds(removedFolds); - len = -len; - } - var foldLine = this.getFoldLine(firstRow); - if (foldLine) { - foldLine.addRemoveChars(firstRow, start.column, len); - } - } - if (useWrapMode && this.$wrapData.length != this.doc.getLength()) { - console.error("doc.getLength() and $wrapData.length have to be the same!"); - } - this.$updating = false; - if (useWrapMode) - this.$updateWrapData(firstRow, lastRow); - else - this.$updateRowLengthCache(firstRow, lastRow); - return removedFolds; - }; - EditSession.prototype.$updateRowLengthCache = function (firstRow, lastRow, b) { - this.$rowLengthCache[firstRow] = null; - this.$rowLengthCache[lastRow] = null; - }; - EditSession.prototype.$updateWrapData = function (firstRow, lastRow) { - var lines = this.doc.getAllLines(); - var tabSize = this.getTabSize(); - var wrapData = this.$wrapData; - var wrapLimit = this.$wrapLimit; - var tokens; - var foldLine; - var row = firstRow; - lastRow = Math.min(lastRow, lines.length - 1); - while (row <= lastRow) { - foldLine = this.getFoldLine(row, foldLine); - if (!foldLine) { - tokens = this.$getDisplayTokens(lines[row]); - wrapData[row] = this.$computeWrapSplits(tokens, wrapLimit, tabSize); - row++; - } - else { - tokens = []; - foldLine.walk(function (placeholder, row, column, lastColumn) { - var walkTokens; - if (placeholder != null) { - walkTokens = this.$getDisplayTokens(placeholder, tokens.length); - walkTokens[0] = PLACEHOLDER_START; - for (var i = 1; i < walkTokens.length; i++) { - walkTokens[i] = PLACEHOLDER_BODY; - } - } - else { - walkTokens = this.$getDisplayTokens(lines[row].substring(lastColumn, column), tokens.length); - } - tokens = tokens.concat(walkTokens); - }.bind(this), foldLine.end.row, lines[foldLine.end.row].length + 1); - wrapData[foldLine.start.row] = this.$computeWrapSplits(tokens, wrapLimit, tabSize); - row = foldLine.end.row + 1; - } - } - }; - EditSession.prototype.$computeWrapSplits = function (tokens, wrapLimit, tabSize) { - if (tokens.length == 0) { - return []; - } - var splits = []; - var displayLength = tokens.length; - var lastSplit = 0, lastDocSplit = 0; - var isCode = this.$wrapAsCode; - var indentedSoftWrap = this.$indentedSoftWrap; - var maxIndent = wrapLimit <= Math.max(2 * tabSize, 8) - || indentedSoftWrap === false ? 0 : Math.floor(wrapLimit / 2); - function getWrapIndent() { - var indentation = 0; - if (maxIndent === 0) - return indentation; - if (indentedSoftWrap) { - for (var i = 0; i < tokens.length; i++) { - var token = tokens[i]; - if (token == SPACE) - indentation += 1; - else if (token == TAB) - indentation += tabSize; - else if (token == TAB_SPACE) - continue; - else - break; - } - } - if (isCode && indentedSoftWrap !== false) - indentation += tabSize; - return Math.min(indentation, maxIndent); - } - function addSplit(screenPos) { - var len = screenPos - lastSplit; - for (var i = lastSplit; i < screenPos; i++) { - var ch = tokens[i]; - if (ch === 12 || ch === 2) - len -= 1; - } - if (!splits.length) { - indent = getWrapIndent(); - splits.indent = indent; - } - lastDocSplit += len; - splits.push(lastDocSplit); - lastSplit = screenPos; - } - var indent = 0; - while (displayLength - lastSplit > wrapLimit - indent) { - var split = lastSplit + wrapLimit - indent; - if (tokens[split - 1] >= SPACE && tokens[split] >= SPACE) { - addSplit(split); - continue; - } - if (tokens[split] == PLACEHOLDER_START || tokens[split] == PLACEHOLDER_BODY) { - for (split; split != lastSplit - 1; split--) { - if (tokens[split] == PLACEHOLDER_START) { - break; - } - } - if (split > lastSplit) { - addSplit(split); - continue; - } - split = lastSplit + wrapLimit; - for (split; split < tokens.length; split++) { - if (tokens[split] != PLACEHOLDER_BODY) { - break; - } - } - if (split == tokens.length) { - break; // Breaks the while-loop. - } - addSplit(split); - continue; - } - var minSplit = Math.max(split - (wrapLimit - (wrapLimit >> 2)), lastSplit - 1); - while (split > minSplit && tokens[split] < PLACEHOLDER_START) { - split--; - } - if (isCode) { - while (split > minSplit && tokens[split] < PLACEHOLDER_START) { - split--; - } - while (split > minSplit && tokens[split] == PUNCTUATION) { - split--; - } - } - else { - while (split > minSplit && tokens[split] < SPACE) { - split--; - } - } - if (split > minSplit) { - addSplit(++split); - continue; - } - split = lastSplit + wrapLimit; - if (tokens[split] == CHAR_EXT) - split--; - addSplit(split - indent); - } - return splits; - }; - EditSession.prototype.$getDisplayTokens = function (str, offset) { - var arr = []; - var tabSize; - offset = offset || 0; - for (var i = 0; i < str.length; i++) { - var c = str.charCodeAt(i); - if (c == 9) { - tabSize = this.getScreenTabSize(arr.length + offset); - arr.push(TAB); - for (var n = 1; n < tabSize; n++) { - arr.push(TAB_SPACE); - } - } - else if (c == 32) { - arr.push(SPACE); - } - else if ((c > 39 && c < 48) || (c > 57 && c < 64)) { - arr.push(PUNCTUATION); - } - else if (c >= 0x1100 && isFullWidth(c)) { - arr.push(CHAR, CHAR_EXT); - } - else { - arr.push(CHAR); - } - } - return arr; - }; - EditSession.prototype.$getStringScreenWidth = function (str, maxScreenColumn, screenColumn) { - if (maxScreenColumn == 0) - return [0, 0]; - if (maxScreenColumn == null) - maxScreenColumn = Infinity; - screenColumn = screenColumn || 0; - var c, column; - for (column = 0; column < str.length; column++) { - c = str.charCodeAt(column); - if (c == 9) { - screenColumn += this.getScreenTabSize(screenColumn); - } - else if (c >= 0x1100 && isFullWidth(c)) { - screenColumn += 2; - } - else { - screenColumn += 1; - } - if (screenColumn > maxScreenColumn) { - break; - } - } - return [screenColumn, column]; - }; - EditSession.prototype.getRowLength = function (row) { - var h = 1; - if (this.lineWidgets) - h += this.lineWidgets[row] && this.lineWidgets[row].rowCount || 0; - if (!this.$useWrapMode || !this.$wrapData[row]) - return h; - else - return this.$wrapData[row].length + h; - }; - EditSession.prototype.getRowLineCount = function (row) { - if (!this.$useWrapMode || !this.$wrapData[row]) { - return 1; - } - else { - return this.$wrapData[row].length + 1; - } - }; - EditSession.prototype.getRowWrapIndent = function (screenRow) { - if (this.$useWrapMode) { - var pos = this.screenToDocumentPosition(screenRow, Number.MAX_VALUE); - var splits = this.$wrapData[pos.row]; - return splits.length && splits[0] < pos.column ? splits.indent : 0; - } - else { - return 0; - } - }; - EditSession.prototype.getScreenLastRowColumn = function (screenRow) { - var pos = this.screenToDocumentPosition(screenRow, Number.MAX_VALUE); - return this.documentToScreenColumn(pos.row, pos.column); - }; - EditSession.prototype.getDocumentLastRowColumn = function (docRow, docColumn) { - var screenRow = this.documentToScreenRow(docRow, docColumn); - return this.getScreenLastRowColumn(screenRow); - }; - EditSession.prototype.getDocumentLastRowColumnPosition = function (docRow, docColumn) { - var screenRow = this.documentToScreenRow(docRow, docColumn); - return this.screenToDocumentPosition(screenRow, Number.MAX_VALUE / 10); - }; - EditSession.prototype.getRowSplitData = function (row) { - if (!this.$useWrapMode) { - return undefined; - } - else { - return this.$wrapData[row]; - } - }; - EditSession.prototype.getScreenTabSize = function (screenColumn) { - return this.$tabSize - (screenColumn % this.$tabSize | 0); - }; - EditSession.prototype.screenToDocumentRow = function (screenRow, screenColumn) { - return this.screenToDocumentPosition(screenRow, screenColumn).row; - }; - EditSession.prototype.screenToDocumentColumn = function (screenRow, screenColumn) { - return this.screenToDocumentPosition(screenRow, screenColumn).column; - }; - EditSession.prototype.screenToDocumentPosition = function (screenRow, screenColumn, offsetX) { - if (screenRow < 0) - return { row: 0, column: 0 }; - var line; - var docRow = 0; - var docColumn = 0; - var column; - var row = 0; - var rowLength = 0; - var rowCache = this.$screenRowCache; - var i = this.$getRowCacheIndex(rowCache, screenRow); - var l = rowCache.length; - if (l && i >= 0) { - var row = rowCache[i]; - var docRow = this.$docRowCache[i]; - var doCache = screenRow > rowCache[l - 1]; - } - else { - var doCache = !l; - } - var maxRow = this.getLength() - 1; - var foldLine = this.getNextFoldLine(docRow); - var foldStart = foldLine ? foldLine.start.row : Infinity; - while (row <= screenRow) { - rowLength = this.getRowLength(docRow); - if (row + rowLength > screenRow || docRow >= maxRow) { - break; - } - else { - row += rowLength; - docRow++; - if (docRow > foldStart) { - docRow = foldLine.end.row + 1; - foldLine = this.getNextFoldLine(docRow, foldLine); - foldStart = foldLine ? foldLine.start.row : Infinity; - } - } - if (doCache) { - this.$docRowCache.push(docRow); - this.$screenRowCache.push(row); - } - } - if (foldLine && foldLine.start.row <= docRow) { - line = this.getFoldDisplayLine(foldLine); - docRow = foldLine.start.row; - } - else if (row + rowLength <= screenRow || docRow > maxRow) { - return { - row: maxRow, - column: this.getLine(maxRow).length - }; - } - else { - line = this.getLine(docRow); - foldLine = null; - } - var wrapIndent = 0, splitIndex = Math.floor(screenRow - row); - if (this.$useWrapMode) { - var splits = this.$wrapData[docRow]; - if (splits) { - column = splits[splitIndex]; - if (splitIndex > 0 && splits.length) { - wrapIndent = splits.indent; - docColumn = splits[splitIndex - 1] || splits[splits.length - 1]; - line = line.substring(docColumn); - } - } - } - if (offsetX !== undefined && this.$bidiHandler.isBidiRow(row + splitIndex, docRow, splitIndex)) - screenColumn = this.$bidiHandler.offsetToCol(offsetX); - docColumn += this.$getStringScreenWidth(line, screenColumn - wrapIndent)[1]; - if (this.$useWrapMode && docColumn >= column) - docColumn = column - 1; - if (foldLine) - return foldLine.idxToPosition(docColumn); - return { row: docRow, column: docColumn }; - }; - EditSession.prototype.documentToScreenPosition = function (docRow, docColumn) { - if (typeof docColumn === "undefined") - var pos = this.$clipPositionToDocument(docRow.row, docRow.column); - else - pos = this.$clipPositionToDocument(docRow, docColumn); - docRow = pos.row; - docColumn = pos.column; - var screenRow = 0; - var foldStartRow = null; - var fold = null; - fold = this.getFoldAt(docRow, docColumn, 1); - if (fold) { - docRow = fold.start.row; - docColumn = fold.start.column; - } - var rowEnd, row = 0; - var rowCache = this.$docRowCache; - var i = this.$getRowCacheIndex(rowCache, docRow); - var l = rowCache.length; - if (l && i >= 0) { - var row = rowCache[i]; - var screenRow = this.$screenRowCache[i]; - var doCache = docRow > rowCache[l - 1]; - } - else { - var doCache = !l; - } - var foldLine = this.getNextFoldLine(row); - var foldStart = foldLine ? foldLine.start.row : Infinity; - while (row < docRow) { - if (row >= foldStart) { - rowEnd = foldLine.end.row + 1; - if (rowEnd > docRow) - break; - foldLine = this.getNextFoldLine(rowEnd, foldLine); - foldStart = foldLine ? foldLine.start.row : Infinity; - } - else { - rowEnd = row + 1; - } - screenRow += this.getRowLength(row); - row = rowEnd; - if (doCache) { - this.$docRowCache.push(row); - this.$screenRowCache.push(screenRow); - } - } - var textLine = ""; - if (foldLine && row >= foldStart) { - textLine = this.getFoldDisplayLine(foldLine, docRow, docColumn); - foldStartRow = foldLine.start.row; - } - else { - textLine = this.getLine(docRow).substring(0, docColumn); - foldStartRow = docRow; - } - var wrapIndent = 0; - if (this.$useWrapMode) { - var wrapRow = this.$wrapData[foldStartRow]; - if (wrapRow) { - var screenRowOffset = 0; - while (textLine.length >= wrapRow[screenRowOffset]) { - screenRow++; - screenRowOffset++; - } - textLine = textLine.substring(wrapRow[screenRowOffset - 1] || 0, textLine.length); - wrapIndent = screenRowOffset > 0 ? wrapRow.indent : 0; - } - } - if (this.lineWidgets && this.lineWidgets[row] && this.lineWidgets[row].rowsAbove) - screenRow += this.lineWidgets[row].rowsAbove; - return { - row: screenRow, - column: wrapIndent + this.$getStringScreenWidth(textLine)[0] - }; - }; - EditSession.prototype.documentToScreenColumn = function (row, docColumn) { - return this.documentToScreenPosition(row, docColumn).column; - }; - EditSession.prototype.documentToScreenRow = function (docRow, docColumn) { - return this.documentToScreenPosition(docRow, docColumn).row; - }; - EditSession.prototype.getScreenLength = function () { - var screenRows = 0; - var fold = null; - if (!this.$useWrapMode) { - screenRows = this.getLength(); - var foldData = this.$foldData; - for (var i = 0; i < foldData.length; i++) { - fold = foldData[i]; - screenRows -= fold.end.row - fold.start.row; - } - } - else { - var lastRow = this.$wrapData.length; - var row = 0, i = 0; - var fold = this.$foldData[i++]; - var foldStart = fold ? fold.start.row : Infinity; - while (row < lastRow) { - var splits = this.$wrapData[row]; - screenRows += splits ? splits.length + 1 : 1; - row++; - if (row > foldStart) { - row = fold.end.row + 1; - fold = this.$foldData[i++]; - foldStart = fold ? fold.start.row : Infinity; - } - } - } - if (this.lineWidgets) - screenRows += this.$getWidgetScreenLength(); - return screenRows; - }; - EditSession.prototype.$setFontMetrics = function (fm) { - if (!this.$enableVarChar) - return; - this.$getStringScreenWidth = function (str, maxScreenColumn, screenColumn) { - if (maxScreenColumn === 0) - return [0, 0]; - if (!maxScreenColumn) - maxScreenColumn = Infinity; - screenColumn = screenColumn || 0; - var c, column; - for (column = 0; column < str.length; column++) { - c = str.charAt(column); - if (c === "\t") { - screenColumn += this.getScreenTabSize(screenColumn); - } - else { - screenColumn += fm.getCharacterWidth(c); - } - if (screenColumn > maxScreenColumn) { - break; - } - } - return [screenColumn, column]; - }; - }; - EditSession.prototype.destroy = function () { - if (!this.destroyed) { - this.bgTokenizer.setDocument(null); - this.bgTokenizer.cleanup(); - this.destroyed = true; - } - this.$stopWorker(); - this.removeAllListeners(); - if (this.doc) { - this.doc.off("change", this.$onChange); - } - this.selection.detach(); - }; - return EditSession; -}()); -EditSession.$uid = 0; -EditSession.prototype.$modes = config.$modes; -EditSession.prototype.getValue = EditSession.prototype.toString; -EditSession.prototype.$defaultUndoManager = { - undo: function () { }, - redo: function () { }, - hasUndo: function () { }, - hasRedo: function () { }, - reset: function () { }, - add: function () { }, - addSelection: function () { }, - startNewGroup: function () { }, - addSession: function () { } -}; -EditSession.prototype.$overwrite = false; -EditSession.prototype.$mode = null; -EditSession.prototype.$modeId = null; -EditSession.prototype.$scrollTop = 0; -EditSession.prototype.$scrollLeft = 0; -EditSession.prototype.$wrapLimit = 80; -EditSession.prototype.$useWrapMode = false; -EditSession.prototype.$wrapLimitRange = { - min: null, - max: null -}; -EditSession.prototype.lineWidgets = null; -EditSession.prototype.isFullWidth = isFullWidth; -oop.implement(EditSession.prototype, EventEmitter); -var CHAR = 1, CHAR_EXT = 2, PLACEHOLDER_START = 3, PLACEHOLDER_BODY = 4, PUNCTUATION = 9, SPACE = 10, TAB = 11, TAB_SPACE = 12; -function isFullWidth(c) { - if (c < 0x1100) - return false; - return c >= 0x1100 && c <= 0x115F || - c >= 0x11A3 && c <= 0x11A7 || - c >= 0x11FA && c <= 0x11FF || - c >= 0x2329 && c <= 0x232A || - c >= 0x2E80 && c <= 0x2E99 || - c >= 0x2E9B && c <= 0x2EF3 || - c >= 0x2F00 && c <= 0x2FD5 || - c >= 0x2FF0 && c <= 0x2FFB || - c >= 0x3000 && c <= 0x303E || - c >= 0x3041 && c <= 0x3096 || - c >= 0x3099 && c <= 0x30FF || - c >= 0x3105 && c <= 0x312D || - c >= 0x3131 && c <= 0x318E || - c >= 0x3190 && c <= 0x31BA || - c >= 0x31C0 && c <= 0x31E3 || - c >= 0x31F0 && c <= 0x321E || - c >= 0x3220 && c <= 0x3247 || - c >= 0x3250 && c <= 0x32FE || - c >= 0x3300 && c <= 0x4DBF || - c >= 0x4E00 && c <= 0xA48C || - c >= 0xA490 && c <= 0xA4C6 || - c >= 0xA960 && c <= 0xA97C || - c >= 0xAC00 && c <= 0xD7A3 || - c >= 0xD7B0 && c <= 0xD7C6 || - c >= 0xD7CB && c <= 0xD7FB || - c >= 0xF900 && c <= 0xFAFF || - c >= 0xFE10 && c <= 0xFE19 || - c >= 0xFE30 && c <= 0xFE52 || - c >= 0xFE54 && c <= 0xFE66 || - c >= 0xFE68 && c <= 0xFE6B || - c >= 0xFF01 && c <= 0xFF60 || - c >= 0xFFE0 && c <= 0xFFE6; -} -require("./edit_session/folding").Folding.call(EditSession.prototype); -require("./edit_session/bracket_match").BracketMatch.call(EditSession.prototype); -config.defineOptions(EditSession.prototype, "session", { - wrap: { - set: function (value) { - if (!value || value == "off") - value = false; - else if (value == "free") - value = true; - else if (value == "printMargin") - value = -1; - else if (typeof value == "string") - value = parseInt(value, 10) || false; - if (this.$wrap == value) - return; - this.$wrap = value; - if (!value) { - this.setUseWrapMode(false); - } - else { - var col = typeof value == "number" ? value : null; - this.setWrapLimitRange(col, col); - this.setUseWrapMode(true); - } - }, - get: function () { - if (this.getUseWrapMode()) { - if (this.$wrap == -1) - return "printMargin"; - if (!this.getWrapLimitRange().min) - return "free"; - return this.$wrap; - } - return "off"; - }, - handlesSet: true - }, - wrapMethod: { - set: function (val) { - val = val == "auto" - ? this.$mode.type != "text" - : val != "text"; - if (val != this.$wrapAsCode) { - this.$wrapAsCode = val; - if (this.$useWrapMode) { - this.$useWrapMode = false; - this.setUseWrapMode(true); - } - } - }, - initialValue: "auto" - }, - indentedSoftWrap: { - set: function () { - if (this.$useWrapMode) { - this.$useWrapMode = false; - this.setUseWrapMode(true); - } - }, - initialValue: true - }, - firstLineNumber: { - set: function () { this._signal("changeBreakpoint"); }, - initialValue: 1 - }, - useWorker: { - set: function (useWorker) { - this.$useWorker = useWorker; - this.$stopWorker(); - if (useWorker) - this.$startWorker(); - }, - initialValue: true - }, - useSoftTabs: { initialValue: true }, - tabSize: { - set: function (tabSize) { - tabSize = parseInt(tabSize); - if (tabSize > 0 && this.$tabSize !== tabSize) { - this.$modified = true; - this.$rowLengthCache = []; - this.$tabSize = tabSize; - this._signal("changeTabSize"); - } - }, - initialValue: 4, - handlesSet: true - }, - navigateWithinSoftTabs: { initialValue: false }, - foldStyle: { - set: function (val) { this.setFoldStyle(val); }, - handlesSet: true - }, - overwrite: { - set: function (val) { this._signal("changeOverwrite"); }, - initialValue: false - }, - newLineMode: { - set: function (val) { this.doc.setNewLineMode(val); }, - get: function () { return this.doc.getNewLineMode(); }, - handlesSet: true - }, - mode: { - set: function (val) { this.setMode(val); }, - get: function () { return this.$modeId; }, - handlesSet: true - } -}); -exports.EditSession = EditSession; - -}); - -ace.define("ace/search",["require","exports","module","ace/lib/lang","ace/lib/oop","ace/range"], function(require, exports, module){"use strict"; -var lang = require("./lib/lang"); -var oop = require("./lib/oop"); -var Range = require("./range").Range; -var Search = /** @class */ (function () { - function Search() { - this.$options = {}; - } - Search.prototype.set = function (options) { - oop.mixin(this.$options, options); - return this; - }; - Search.prototype.getOptions = function () { - return lang.copyObject(this.$options); - }; - Search.prototype.setOptions = function (options) { - this.$options = options; - }; - Search.prototype.find = function (session) { - var options = this.$options; - var iterator = this.$matchIterator(session, options); - if (!iterator) - return false; - var firstRange = null; - iterator.forEach(function (sr, sc, er, ec) { - firstRange = new Range(sr, sc, er, ec); - if (sc == ec && options.start && options.start.start - && options.skipCurrent != false && firstRange.isEqual(options.start)) { - firstRange = null; - return false; - } - return true; - }); - return firstRange; - }; - Search.prototype.findAll = function (session) { - var options = this.$options; - if (!options.needle) - return []; - this.$assembleRegExp(options); - var range = options.range; - var lines = range - ? session.getLines(range.start.row, range.end.row) - : session.doc.getAllLines(); - var ranges = []; - var re = options.re; - if (options.$isMultiLine) { - var len = re.length; - var maxRow = lines.length - len; - var prevRange; - outer: for (var row = re.offset || 0; row <= maxRow; row++) { - for (var j = 0; j < len; j++) - if (lines[row + j].search(re[j]) == -1) - continue outer; - var startLine = lines[row]; - var line = lines[row + len - 1]; - var startIndex = startLine.length - startLine.match(re[0])[0].length; - var endIndex = line.match(re[len - 1])[0].length; - if (prevRange && prevRange.end.row === row && - prevRange.end.column > startIndex) { - continue; - } - ranges.push(prevRange = new Range(row, startIndex, row + len - 1, endIndex)); - if (len > 2) - row = row + len - 2; - } - } - else { - for (var i = 0; i < lines.length; i++) { - var matches = lang.getMatchOffsets(lines[i], re); - for (var j = 0; j < matches.length; j++) { - var match = matches[j]; - ranges.push(new Range(i, match.offset, i, match.offset + match.length)); - } - } - } - if (range) { - var startColumn = range.start.column; - var endColumn = range.end.column; - var i = 0, j = ranges.length - 1; - while (i < j && ranges[i].start.column < startColumn && ranges[i].start.row == 0) - i++; - var endRow = range.end.row - range.start.row; - while (i < j && ranges[j].end.column > endColumn && ranges[j].end.row == endRow) - j--; - ranges = ranges.slice(i, j + 1); - for (i = 0, j = ranges.length; i < j; i++) { - ranges[i].start.row += range.start.row; - ranges[i].end.row += range.start.row; - } - } - return ranges; - }; - Search.prototype.replace = function (input, replacement) { - var options = this.$options; - var re = this.$assembleRegExp(options); - if (options.$isMultiLine) - return replacement; - if (!re) - return; - var match = re.exec(input); - if (!match || match[0].length != input.length) - return null; - replacement = input.replace(re, replacement); - if (options.preserveCase) { - replacement = replacement.split(""); - for (var i = Math.min(input.length, input.length); i--;) { - var ch = input[i]; - if (ch && ch.toLowerCase() != ch) - replacement[i] = replacement[i].toUpperCase(); - else - replacement[i] = replacement[i].toLowerCase(); - } - replacement = replacement.join(""); - } - return replacement; - }; - Search.prototype.$assembleRegExp = function (options, $disableFakeMultiline) { - if (options.needle instanceof RegExp) - return options.re = options.needle; - var needle = options.needle; - if (!options.needle) - return options.re = false; - if (!options.regExp) - needle = lang.escapeRegExp(needle); - var modifier = options.caseSensitive ? "gm" : "gmi"; - try { - new RegExp(needle, "u"); - options.$supportsUnicodeFlag = true; - modifier += "u"; - } - catch (e) { - options.$supportsUnicodeFlag = false; //left for backward compatibility with previous versions for cases like /ab\{2}/gu - } - if (options.wholeWord) - needle = addWordBoundary(needle, options); - options.$isMultiLine = !$disableFakeMultiline && /[\n\r]/.test(needle); - if (options.$isMultiLine) - return options.re = this.$assembleMultilineRegExp(needle, modifier); - try { - var re = new RegExp(needle, modifier); - } - catch (e) { - re = false; - } - return options.re = re; - }; - Search.prototype.$assembleMultilineRegExp = function (needle, modifier) { - var parts = needle.replace(/\r\n|\r|\n/g, "$\n^").split("\n"); - var re = []; - for (var i = 0; i < parts.length; i++) - try { - re.push(new RegExp(parts[i], modifier)); - } - catch (e) { - return false; - } - return re; - }; - Search.prototype.$matchIterator = function (session, options) { - var re = this.$assembleRegExp(options); - if (!re) - return false; - var backwards = options.backwards == true; - var skipCurrent = options.skipCurrent != false; - var supportsUnicodeFlag = re.unicode; - var range = options.range; - var start = options.start; - if (!start) - start = range ? range[backwards ? "end" : "start"] : session.selection.getRange(); - if (start.start) - start = start[skipCurrent != backwards ? "end" : "start"]; - var firstRow = range ? range.start.row : 0; - var lastRow = range ? range.end.row : session.getLength() - 1; - if (backwards) { - var forEach = function (callback) { - var row = start.row; - if (forEachInLine(row, start.column, callback)) - return; - for (row--; row >= firstRow; row--) - if (forEachInLine(row, Number.MAX_VALUE, callback)) - return; - if (options.wrap == false) - return; - for (row = lastRow, firstRow = start.row; row >= firstRow; row--) - if (forEachInLine(row, Number.MAX_VALUE, callback)) - return; - }; - } - else { - var forEach = function (callback) { - var row = start.row; - if (forEachInLine(row, start.column, callback)) - return; - for (row = row + 1; row <= lastRow; row++) - if (forEachInLine(row, 0, callback)) - return; - if (options.wrap == false) - return; - for (row = firstRow, lastRow = start.row; row <= lastRow; row++) - if (forEachInLine(row, 0, callback)) - return; - }; - } - if (options.$isMultiLine) { - var len = re.length; - var forEachInLine = function (row, offset, callback) { - var startRow = backwards ? row - len + 1 : row; - if (startRow < 0 || startRow + len > session.getLength()) - return; - var line = session.getLine(startRow); - var startIndex = line.search(re[0]); - if (!backwards && startIndex < offset || startIndex === -1) - return; - for (var i = 1; i < len; i++) { - line = session.getLine(startRow + i); - if (line.search(re[i]) == -1) - return; - } - var endIndex = line.match(re[len - 1])[0].length; - if (backwards && endIndex > offset) - return; - if (callback(startRow, startIndex, startRow + len - 1, endIndex)) - return true; - }; - } - else if (backwards) { - var forEachInLine = function (row, endIndex, callback) { - var line = session.getLine(row); - var matches = []; - var m, last = 0; - re.lastIndex = 0; - while ((m = re.exec(line))) { - var length = m[0].length; - last = m.index; - if (!length) { - if (last >= line.length) - break; - re.lastIndex = last += lang.skipEmptyMatch(line, last, supportsUnicodeFlag); - } - if (m.index + length > endIndex) - break; - matches.push(m.index, length); - } - for (var i = matches.length - 1; i >= 0; i -= 2) { - var column = matches[i - 1]; - var length = matches[i]; - if (callback(row, column, row, column + length)) - return true; - } - }; - } - else { - var forEachInLine = function (row, startIndex, callback) { - var line = session.getLine(row); - var last; - var m; - re.lastIndex = startIndex; - while ((m = re.exec(line))) { - var length = m[0].length; - last = m.index; - if (callback(row, last, row, last + length)) - return true; - if (!length) { - re.lastIndex = last += lang.skipEmptyMatch(line, last, supportsUnicodeFlag); - if (last >= line.length) - return false; - } - } - }; - } - return { forEach: forEach }; - }; - return Search; -}()); -function addWordBoundary(needle, options) { - var supportsLookbehind = lang.supportsLookbehind(); - function wordBoundary(c, firstChar) { - if (firstChar === void 0) { firstChar = true; } - var wordRegExp = supportsLookbehind && options.$supportsUnicodeFlag ? new RegExp("[\\p{L}\\p{N}_]", "u") : new RegExp("\\w"); - if (wordRegExp.test(c) || options.regExp) { - if (supportsLookbehind && options.$supportsUnicodeFlag) { - if (firstChar) - return "(?<=^|[^\\p{L}\\p{N}_])"; - return "(?=[^\\p{L}\\p{N}_]|$)"; - } - return "\\b"; - } - return ""; - } - var needleArray = Array.from(needle); - var firstChar = needleArray[0]; - var lastChar = needleArray[needleArray.length - 1]; - return wordBoundary(firstChar) + needle + wordBoundary(lastChar, false); -} -exports.Search = Search; - -}); - -ace.define("ace/keyboard/hash_handler",["require","exports","module","ace/lib/keys","ace/lib/useragent"], function(require, exports, module){"use strict"; -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - if (typeof b !== "function" && b !== null) - throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var keyUtil = require("../lib/keys"); -var useragent = require("../lib/useragent"); -var KEY_MODS = keyUtil.KEY_MODS; -var MultiHashHandler = /** @class */ (function () { - function MultiHashHandler(config, platform) { - this.$init(config, platform, false); - } - MultiHashHandler.prototype.$init = function (config, platform, $singleCommand) { - this.platform = platform || (useragent.isMac ? "mac" : "win"); - this.commands = {}; - this.commandKeyBinding = {}; - this.addCommands(config); - this.$singleCommand = $singleCommand; - }; - MultiHashHandler.prototype.addCommand = function (command) { - if (this.commands[command.name]) - this.removeCommand(command); - this.commands[command.name] = command; - if (command.bindKey) - this._buildKeyHash(command); - }; - MultiHashHandler.prototype.removeCommand = function (command, keepCommand) { - var name = command && (typeof command === 'string' ? command : command.name); - command = this.commands[name]; - if (!keepCommand) - delete this.commands[name]; - var ckb = this.commandKeyBinding; - for (var keyId in ckb) { - var cmdGroup = ckb[keyId]; - if (cmdGroup == command) { - delete ckb[keyId]; - } - else if (Array.isArray(cmdGroup)) { - var i = cmdGroup.indexOf(command); - if (i != -1) { - cmdGroup.splice(i, 1); - if (cmdGroup.length == 1) - ckb[keyId] = cmdGroup[0]; - } - } - } - }; - MultiHashHandler.prototype.bindKey = function (key, command, position) { - if (typeof key == "object" && key) { - if (position == undefined) - position = key.position; - key = key[this.platform]; - } - if (!key) - return; - if (typeof command == "function") - return this.addCommand({ exec: command, bindKey: key, name: command.name || key }); - key.split("|").forEach(function (keyPart) { - var chain = ""; - if (keyPart.indexOf(" ") != -1) { - var parts = keyPart.split(/\s+/); - keyPart = parts.pop(); - parts.forEach(function (keyPart) { - var binding = this.parseKeys(keyPart); - var id = KEY_MODS[binding.hashId] + binding.key; - chain += (chain ? " " : "") + id; - this._addCommandToBinding(chain, "chainKeys"); - }, this); - chain += " "; - } - var binding = this.parseKeys(keyPart); - var id = KEY_MODS[binding.hashId] + binding.key; - this._addCommandToBinding(chain + id, command, position); - }, this); - }; - MultiHashHandler.prototype._addCommandToBinding = function (keyId, command, position) { - var ckb = this.commandKeyBinding, i; - if (!command) { - delete ckb[keyId]; - } - else if (!ckb[keyId] || this.$singleCommand) { - ckb[keyId] = command; - } - else { - if (!Array.isArray(ckb[keyId])) { - ckb[keyId] = [ckb[keyId]]; - } - else if ((i = ckb[keyId].indexOf(command)) != -1) { - ckb[keyId].splice(i, 1); - } - if (typeof position != "number") { - position = getPosition(command); - } - var commands = ckb[keyId]; - for (i = 0; i < commands.length; i++) { - var other = commands[i]; - var otherPos = getPosition(other); - if (otherPos > position) - break; - } - commands.splice(i, 0, command); - } - }; - MultiHashHandler.prototype.addCommands = function (commands) { - commands && Object.keys(commands).forEach(function (name) { - var command = commands[name]; - if (!command) - return; - if (typeof command === "string") - return this.bindKey(command, name); - if (typeof command === "function") - command = { exec: command }; - if (typeof command !== "object") - return; - if (!command.name) - command.name = name; - this.addCommand(command); - }, this); - }; - MultiHashHandler.prototype.removeCommands = function (commands) { - Object.keys(commands).forEach(function (name) { - this.removeCommand(commands[name]); - }, this); - }; - MultiHashHandler.prototype.bindKeys = function (keyList) { - Object.keys(keyList).forEach(function (key) { - this.bindKey(key, keyList[key]); - }, this); - }; - MultiHashHandler.prototype._buildKeyHash = function (command) { - this.bindKey(command.bindKey, command); - }; - MultiHashHandler.prototype.parseKeys = function (keys) { - var parts = keys.toLowerCase().split(/[\-\+]([\-\+])?/).filter(function (x) { return x; }); - var key = parts.pop(); - var keyCode = keyUtil[key]; - if (keyUtil.FUNCTION_KEYS[keyCode]) - key = keyUtil.FUNCTION_KEYS[keyCode].toLowerCase(); - else if (!parts.length) - return { key: key, hashId: -1 }; - else if (parts.length == 1 && parts[0] == "shift") - return { key: key.toUpperCase(), hashId: -1 }; - var hashId = 0; - for (var i = parts.length; i--;) { - var modifier = keyUtil.KEY_MODS[parts[i]]; - if (modifier == null) { - if (typeof console != "undefined") - console.error("invalid modifier " + parts[i] + " in " + keys); - return false; - } - hashId |= modifier; - } - return { key: key, hashId: hashId }; - }; - MultiHashHandler.prototype.findKeyCommand = function (hashId, keyString) { - var key = KEY_MODS[hashId] + keyString; - return this.commandKeyBinding[key]; - }; - MultiHashHandler.prototype.handleKeyboard = function (data, hashId, keyString, keyCode) { - if (keyCode < 0) - return; - var key = KEY_MODS[hashId] + keyString; - var command = this.commandKeyBinding[key]; - if (data.$keyChain) { - data.$keyChain += " " + key; - command = this.commandKeyBinding[data.$keyChain] || command; - } - if (command) { - if (command == "chainKeys" || command[command.length - 1] == "chainKeys") { - data.$keyChain = data.$keyChain || key; - return { command: "null" }; - } - } - if (data.$keyChain) { - if ((!hashId || hashId == 4) && keyString.length == 1) - data.$keyChain = data.$keyChain.slice(0, -key.length - 1); // wait for input - else if (hashId == -1 || keyCode > 0) - data.$keyChain = ""; // reset keyChain - } - return { command: command }; - }; - MultiHashHandler.prototype.getStatusText = function (editor, data) { - return data.$keyChain || ""; - }; - return MultiHashHandler; -}()); -function getPosition(command) { - return typeof command == "object" && command.bindKey - && command.bindKey.position - || (command.isDefault ? -100 : 0); -} -var HashHandler = /** @class */ (function (_super) { - __extends(HashHandler, _super); - function HashHandler(config, platform) { - var _this = _super.call(this, config, platform) || this; - _this.$singleCommand = true; - return _this; - } - return HashHandler; -}(MultiHashHandler)); -HashHandler.call = function (thisArg, config, platform) { - MultiHashHandler.prototype.$init.call(thisArg, config, platform, true); -}; -MultiHashHandler.call = function (thisArg, config, platform) { - MultiHashHandler.prototype.$init.call(thisArg, config, platform, false); -}; -exports.HashHandler = HashHandler; -exports.MultiHashHandler = MultiHashHandler; - -}); - -ace.define("ace/commands/command_manager",["require","exports","module","ace/lib/oop","ace/keyboard/hash_handler","ace/lib/event_emitter"], function(require, exports, module){"use strict"; -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - if (typeof b !== "function" && b !== null) - throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var oop = require("../lib/oop"); -var MultiHashHandler = require("../keyboard/hash_handler").MultiHashHandler; -var EventEmitter = require("../lib/event_emitter").EventEmitter; -var CommandManager = /** @class */ (function (_super) { - __extends(CommandManager, _super); - function CommandManager(platform, commands) { - var _this = _super.call(this, commands, platform) || this; - _this.byName = _this.commands; - _this.setDefaultHandler("exec", function (e) { - if (!e.args) { - return e.command.exec(e.editor, {}, e.event, true); - } - return e.command.exec(e.editor, e.args, e.event, false); - }); - return _this; - } - CommandManager.prototype.exec = function (command, editor, args) { - if (Array.isArray(command)) { - for (var i = command.length; i--;) { - if (this.exec(command[i], editor, args)) - return true; - } - return false; - } - if (typeof command === "string") - command = this.commands[command]; - if (!command) - return false; - if (editor && editor.$readOnly && !command.readOnly) - return false; - if (this.$checkCommandState != false && command.isAvailable && !command.isAvailable(editor)) - return false; - var e = { editor: editor, command: command, args: args }; - e.returnValue = this._emit("exec", e); - this._signal("afterExec", e); - return e.returnValue === false ? false : true; - }; - CommandManager.prototype.toggleRecording = function (editor) { - if (this.$inReplay) - return; - editor && editor._emit("changeStatus"); - if (this.recording) { - this.macro.pop(); - this.off("exec", this.$addCommandToMacro); - if (!this.macro.length) - this.macro = this.oldMacro; - return this.recording = false; - } - if (!this.$addCommandToMacro) { - this.$addCommandToMacro = function (e) { - this.macro.push([e.command, e.args]); - }.bind(this); - } - this.oldMacro = this.macro; - this.macro = []; - this.on("exec", this.$addCommandToMacro); - return this.recording = true; - }; - CommandManager.prototype.replay = function (editor) { - if (this.$inReplay || !this.macro) - return; - if (this.recording) - return this.toggleRecording(editor); - try { - this.$inReplay = true; - this.macro.forEach(function (x) { - if (typeof x == "string") - this.exec(x, editor); - else - this.exec(x[0], editor, x[1]); - }, this); - } - finally { - this.$inReplay = false; - } - }; - CommandManager.prototype.trimMacro = function (m) { - return m.map(function (x) { - if (typeof x[0] != "string") - x[0] = x[0].name; - if (!x[1]) - x = x[0]; - return x; - }); - }; - return CommandManager; -}(MultiHashHandler)); -oop.implement(CommandManager.prototype, EventEmitter); -exports.CommandManager = CommandManager; - -}); - -ace.define("ace/commands/default_commands",["require","exports","module","ace/lib/lang","ace/config","ace/range"], function(require, exports, module){"use strict"; -var lang = require("../lib/lang"); -var config = require("../config"); -var Range = require("../range").Range; -function bindKey(win, mac) { - return { win: win, mac: mac }; -} -exports.commands = [{ - name: "showSettingsMenu", - description: "Show settings menu", - bindKey: bindKey("Ctrl-,", "Command-,"), - exec: function (editor) { - config.loadModule("ace/ext/settings_menu", function (module) { - module.init(editor); - editor.showSettingsMenu(); - }); - }, - readOnly: true - }, { - name: "goToNextError", - description: "Go to next error", - bindKey: bindKey("Alt-E", "F4"), - exec: function (editor) { - config.loadModule("ace/ext/error_marker", function (module) { - module.showErrorMarker(editor, 1); - }); - }, - scrollIntoView: "animate", - readOnly: true - }, { - name: "goToPreviousError", - description: "Go to previous error", - bindKey: bindKey("Alt-Shift-E", "Shift-F4"), - exec: function (editor) { - config.loadModule("ace/ext/error_marker", function (module) { - module.showErrorMarker(editor, -1); - }); - }, - scrollIntoView: "animate", - readOnly: true - }, { - name: "selectall", - description: "Select all", - bindKey: bindKey("Ctrl-A", "Command-A"), - exec: function (editor) { editor.selectAll(); }, - readOnly: true - }, { - name: "centerselection", - description: "Center selection", - bindKey: bindKey(null, "Ctrl-L"), - exec: function (editor) { editor.centerSelection(); }, - readOnly: true - }, { - name: "gotoline", - description: "Go to line...", - bindKey: bindKey("Ctrl-L", "Command-L"), - exec: function (editor, line) { - if (typeof line === "number" && !isNaN(line)) - editor.gotoLine(line); - editor.prompt({ $type: "gotoLine" }); - }, - readOnly: true - }, { - name: "fold", - bindKey: bindKey("Alt-L|Ctrl-F1", "Command-Alt-L|Command-F1"), - exec: function (editor) { editor.session.toggleFold(false); }, - multiSelectAction: "forEach", - scrollIntoView: "center", - readOnly: true - }, { - name: "unfold", - bindKey: bindKey("Alt-Shift-L|Ctrl-Shift-F1", "Command-Alt-Shift-L|Command-Shift-F1"), - exec: function (editor) { editor.session.toggleFold(true); }, - multiSelectAction: "forEach", - scrollIntoView: "center", - readOnly: true - }, { - name: "toggleFoldWidget", - description: "Toggle fold widget", - bindKey: bindKey("F2", "F2"), - exec: function (editor) { editor.session.toggleFoldWidget(); }, - multiSelectAction: "forEach", - scrollIntoView: "center", - readOnly: true - }, { - name: "toggleParentFoldWidget", - description: "Toggle parent fold widget", - bindKey: bindKey("Alt-F2", "Alt-F2"), - exec: function (editor) { editor.session.toggleFoldWidget(true); }, - multiSelectAction: "forEach", - scrollIntoView: "center", - readOnly: true - }, { - name: "foldall", - description: "Fold all", - bindKey: bindKey(null, "Ctrl-Command-Option-0"), - exec: function (editor) { editor.session.foldAll(); }, - scrollIntoView: "center", - readOnly: true - }, { - name: "foldAllComments", - description: "Fold all comments", - bindKey: bindKey(null, "Ctrl-Command-Option-0"), - exec: function (editor) { editor.session.foldAllComments(); }, - scrollIntoView: "center", - readOnly: true - }, { - name: "foldOther", - description: "Fold other", - bindKey: bindKey("Alt-0", "Command-Option-0"), - exec: function (editor) { - editor.session.foldAll(); - editor.session.unfold(editor.selection.getAllRanges()); - }, - scrollIntoView: "center", - readOnly: true - }, { - name: "unfoldall", - description: "Unfold all", - bindKey: bindKey("Alt-Shift-0", "Command-Option-Shift-0"), - exec: function (editor) { editor.session.unfold(); }, - scrollIntoView: "center", - readOnly: true - }, { - name: "findnext", - description: "Find next", - bindKey: bindKey("Ctrl-K", "Command-G"), - exec: function (editor) { editor.findNext(); }, - multiSelectAction: "forEach", - scrollIntoView: "center", - readOnly: true - }, { - name: "findprevious", - description: "Find previous", - bindKey: bindKey("Ctrl-Shift-K", "Command-Shift-G"), - exec: function (editor) { editor.findPrevious(); }, - multiSelectAction: "forEach", - scrollIntoView: "center", - readOnly: true - }, { - name: "selectOrFindNext", - description: "Select or find next", - bindKey: bindKey("Alt-K", "Ctrl-G"), - exec: function (editor) { - if (editor.selection.isEmpty()) - editor.selection.selectWord(); - else - editor.findNext(); - }, - readOnly: true - }, { - name: "selectOrFindPrevious", - description: "Select or find previous", - bindKey: bindKey("Alt-Shift-K", "Ctrl-Shift-G"), - exec: function (editor) { - if (editor.selection.isEmpty()) - editor.selection.selectWord(); - else - editor.findPrevious(); - }, - readOnly: true - }, { - name: "find", - description: "Find", - bindKey: bindKey("Ctrl-F", "Command-F"), - exec: function (editor) { - config.loadModule("ace/ext/searchbox", function (e) { e.Search(editor); }); - }, - readOnly: true - }, { - name: "overwrite", - description: "Overwrite", - bindKey: "Insert", - exec: function (editor) { editor.toggleOverwrite(); }, - readOnly: true - }, { - name: "selecttostart", - description: "Select to start", - bindKey: bindKey("Ctrl-Shift-Home", "Command-Shift-Home|Command-Shift-Up"), - exec: function (editor) { editor.getSelection().selectFileStart(); }, - multiSelectAction: "forEach", - readOnly: true, - scrollIntoView: "animate", - aceCommandGroup: "fileJump" - }, { - name: "gotostart", - description: "Go to start", - bindKey: bindKey("Ctrl-Home", "Command-Home|Command-Up"), - exec: function (editor) { editor.navigateFileStart(); }, - multiSelectAction: "forEach", - readOnly: true, - scrollIntoView: "animate", - aceCommandGroup: "fileJump" - }, { - name: "selectup", - description: "Select up", - bindKey: bindKey("Shift-Up", "Shift-Up|Ctrl-Shift-P"), - exec: function (editor) { editor.getSelection().selectUp(); }, - multiSelectAction: "forEach", - scrollIntoView: "cursor", - readOnly: true - }, { - name: "golineup", - description: "Go line up", - bindKey: bindKey("Up", "Up|Ctrl-P"), - exec: function (editor, args) { editor.navigateUp(args.times); }, - multiSelectAction: "forEach", - scrollIntoView: "cursor", - readOnly: true - }, { - name: "selecttoend", - description: "Select to end", - bindKey: bindKey("Ctrl-Shift-End", "Command-Shift-End|Command-Shift-Down"), - exec: function (editor) { editor.getSelection().selectFileEnd(); }, - multiSelectAction: "forEach", - readOnly: true, - scrollIntoView: "animate", - aceCommandGroup: "fileJump" - }, { - name: "gotoend", - description: "Go to end", - bindKey: bindKey("Ctrl-End", "Command-End|Command-Down"), - exec: function (editor) { editor.navigateFileEnd(); }, - multiSelectAction: "forEach", - readOnly: true, - scrollIntoView: "animate", - aceCommandGroup: "fileJump" - }, { - name: "selectdown", - description: "Select down", - bindKey: bindKey("Shift-Down", "Shift-Down|Ctrl-Shift-N"), - exec: function (editor) { editor.getSelection().selectDown(); }, - multiSelectAction: "forEach", - scrollIntoView: "cursor", - readOnly: true - }, { - name: "golinedown", - description: "Go line down", - bindKey: bindKey("Down", "Down|Ctrl-N"), - exec: function (editor, args) { editor.navigateDown(args.times); }, - multiSelectAction: "forEach", - scrollIntoView: "cursor", - readOnly: true - }, { - name: "selectwordleft", - description: "Select word left", - bindKey: bindKey("Ctrl-Shift-Left", "Option-Shift-Left"), - exec: function (editor) { editor.getSelection().selectWordLeft(); }, - multiSelectAction: "forEach", - scrollIntoView: "cursor", - readOnly: true - }, { - name: "gotowordleft", - description: "Go to word left", - bindKey: bindKey("Ctrl-Left", "Option-Left"), - exec: function (editor) { editor.navigateWordLeft(); }, - multiSelectAction: "forEach", - scrollIntoView: "cursor", - readOnly: true - }, { - name: "selecttolinestart", - description: "Select to line start", - bindKey: bindKey("Alt-Shift-Left", "Command-Shift-Left|Ctrl-Shift-A"), - exec: function (editor) { editor.getSelection().selectLineStart(); }, - multiSelectAction: "forEach", - scrollIntoView: "cursor", - readOnly: true - }, { - name: "gotolinestart", - description: "Go to line start", - bindKey: bindKey("Alt-Left|Home", "Command-Left|Home|Ctrl-A"), - exec: function (editor) { editor.navigateLineStart(); }, - multiSelectAction: "forEach", - scrollIntoView: "cursor", - readOnly: true - }, { - name: "selectleft", - description: "Select left", - bindKey: bindKey("Shift-Left", "Shift-Left|Ctrl-Shift-B"), - exec: function (editor) { editor.getSelection().selectLeft(); }, - multiSelectAction: "forEach", - scrollIntoView: "cursor", - readOnly: true - }, { - name: "gotoleft", - description: "Go to left", - bindKey: bindKey("Left", "Left|Ctrl-B"), - exec: function (editor, args) { editor.navigateLeft(args.times); }, - multiSelectAction: "forEach", - scrollIntoView: "cursor", - readOnly: true - }, { - name: "selectwordright", - description: "Select word right", - bindKey: bindKey("Ctrl-Shift-Right", "Option-Shift-Right"), - exec: function (editor) { editor.getSelection().selectWordRight(); }, - multiSelectAction: "forEach", - scrollIntoView: "cursor", - readOnly: true - }, { - name: "gotowordright", - description: "Go to word right", - bindKey: bindKey("Ctrl-Right", "Option-Right"), - exec: function (editor) { editor.navigateWordRight(); }, - multiSelectAction: "forEach", - scrollIntoView: "cursor", - readOnly: true - }, { - name: "selecttolineend", - description: "Select to line end", - bindKey: bindKey("Alt-Shift-Right", "Command-Shift-Right|Shift-End|Ctrl-Shift-E"), - exec: function (editor) { editor.getSelection().selectLineEnd(); }, - multiSelectAction: "forEach", - scrollIntoView: "cursor", - readOnly: true - }, { - name: "gotolineend", - description: "Go to line end", - bindKey: bindKey("Alt-Right|End", "Command-Right|End|Ctrl-E"), - exec: function (editor) { editor.navigateLineEnd(); }, - multiSelectAction: "forEach", - scrollIntoView: "cursor", - readOnly: true - }, { - name: "selectright", - description: "Select right", - bindKey: bindKey("Shift-Right", "Shift-Right"), - exec: function (editor) { editor.getSelection().selectRight(); }, - multiSelectAction: "forEach", - scrollIntoView: "cursor", - readOnly: true - }, { - name: "gotoright", - description: "Go to right", - bindKey: bindKey("Right", "Right|Ctrl-F"), - exec: function (editor, args) { editor.navigateRight(args.times); }, - multiSelectAction: "forEach", - scrollIntoView: "cursor", - readOnly: true - }, { - name: "selectpagedown", - description: "Select page down", - bindKey: "Shift-PageDown", - exec: function (editor) { editor.selectPageDown(); }, - readOnly: true - }, { - name: "pagedown", - description: "Page down", - bindKey: bindKey(null, "Option-PageDown"), - exec: function (editor) { editor.scrollPageDown(); }, - readOnly: true - }, { - name: "gotopagedown", - description: "Go to page down", - bindKey: bindKey("PageDown", "PageDown|Ctrl-V"), - exec: function (editor) { editor.gotoPageDown(); }, - readOnly: true - }, { - name: "selectpageup", - description: "Select page up", - bindKey: "Shift-PageUp", - exec: function (editor) { editor.selectPageUp(); }, - readOnly: true - }, { - name: "pageup", - description: "Page up", - bindKey: bindKey(null, "Option-PageUp"), - exec: function (editor) { editor.scrollPageUp(); }, - readOnly: true - }, { - name: "gotopageup", - description: "Go to page up", - bindKey: "PageUp", - exec: function (editor) { editor.gotoPageUp(); }, - readOnly: true - }, { - name: "scrollup", - description: "Scroll up", - bindKey: bindKey("Ctrl-Up", null), - exec: function (e) { e.renderer.scrollBy(0, -2 * e.renderer.layerConfig.lineHeight); }, - readOnly: true - }, { - name: "scrolldown", - description: "Scroll down", - bindKey: bindKey("Ctrl-Down", null), - exec: function (e) { e.renderer.scrollBy(0, 2 * e.renderer.layerConfig.lineHeight); }, - readOnly: true - }, { - name: "selectlinestart", - description: "Select line start", - bindKey: "Shift-Home", - exec: function (editor) { editor.getSelection().selectLineStart(); }, - multiSelectAction: "forEach", - scrollIntoView: "cursor", - readOnly: true - }, { - name: "selectlineend", - description: "Select line end", - bindKey: "Shift-End", - exec: function (editor) { editor.getSelection().selectLineEnd(); }, - multiSelectAction: "forEach", - scrollIntoView: "cursor", - readOnly: true - }, { - name: "togglerecording", - description: "Toggle recording", - bindKey: bindKey("Ctrl-Alt-E", "Command-Option-E"), - exec: function (editor) { editor.commands.toggleRecording(editor); }, - readOnly: true - }, { - name: "replaymacro", - description: "Replay macro", - bindKey: bindKey("Ctrl-Shift-E", "Command-Shift-E"), - exec: function (editor) { editor.commands.replay(editor); }, - readOnly: true - }, { - name: "jumptomatching", - description: "Jump to matching", - bindKey: bindKey("Ctrl-\\|Ctrl-P", "Command-\\"), - exec: function (editor) { editor.jumpToMatching(); }, - multiSelectAction: "forEach", - scrollIntoView: "animate", - readOnly: true - }, { - name: "selecttomatching", - description: "Select to matching", - bindKey: bindKey("Ctrl-Shift-\\|Ctrl-Shift-P", "Command-Shift-\\"), - exec: function (editor) { editor.jumpToMatching(true); }, - multiSelectAction: "forEach", - scrollIntoView: "animate", - readOnly: true - }, { - name: "expandToMatching", - description: "Expand to matching", - bindKey: bindKey("Ctrl-Shift-M", "Ctrl-Shift-M"), - exec: function (editor) { editor.jumpToMatching(true, true); }, - multiSelectAction: "forEach", - scrollIntoView: "animate", - readOnly: true - }, { - name: "passKeysToBrowser", - description: "Pass keys to browser", - bindKey: bindKey(null, null), - exec: function () { }, - passEvent: true, - readOnly: true - }, { - name: "copy", - description: "Copy", - exec: function (editor) { - }, - readOnly: true - }, - { - name: "cut", - description: "Cut", - exec: function (editor) { - var cutLine = editor.$copyWithEmptySelection && editor.selection.isEmpty(); - var range = cutLine ? editor.selection.getLineRange() : editor.selection.getRange(); - editor._emit("cut", range); - if (!range.isEmpty()) - editor.session.remove(range); - editor.clearSelection(); - }, - scrollIntoView: "cursor", - multiSelectAction: "forEach" - }, { - name: "paste", - description: "Paste", - exec: function (editor, args) { - editor.$handlePaste(args); - }, - scrollIntoView: "cursor" - }, { - name: "removeline", - description: "Remove line", - bindKey: bindKey("Ctrl-D", "Command-D"), - exec: function (editor) { editor.removeLines(); }, - scrollIntoView: "cursor", - multiSelectAction: "forEachLine" - }, { - name: "duplicateSelection", - description: "Duplicate selection", - bindKey: bindKey("Ctrl-Shift-D", "Command-Shift-D"), - exec: function (editor) { editor.duplicateSelection(); }, - scrollIntoView: "cursor", - multiSelectAction: "forEach" - }, { - name: "sortlines", - description: "Sort lines", - bindKey: bindKey("Ctrl-Alt-S", "Command-Alt-S"), - exec: function (editor) { editor.sortLines(); }, - scrollIntoView: "selection", - multiSelectAction: "forEachLine" - }, { - name: "togglecomment", - description: "Toggle comment", - bindKey: bindKey("Ctrl-/", "Command-/"), - exec: function (editor) { editor.toggleCommentLines(); }, - multiSelectAction: "forEachLine", - scrollIntoView: "selectionPart" - }, { - name: "toggleBlockComment", - description: "Toggle block comment", - bindKey: bindKey("Ctrl-Shift-/", "Command-Shift-/"), - exec: function (editor) { editor.toggleBlockComment(); }, - multiSelectAction: "forEach", - scrollIntoView: "selectionPart" - }, { - name: "modifyNumberUp", - description: "Modify number up", - bindKey: bindKey("Ctrl-Shift-Up", "Alt-Shift-Up"), - exec: function (editor) { editor.modifyNumber(1); }, - scrollIntoView: "cursor", - multiSelectAction: "forEach" - }, { - name: "modifyNumberDown", - description: "Modify number down", - bindKey: bindKey("Ctrl-Shift-Down", "Alt-Shift-Down"), - exec: function (editor) { editor.modifyNumber(-1); }, - scrollIntoView: "cursor", - multiSelectAction: "forEach" - }, { - name: "replace", - description: "Replace", - bindKey: bindKey("Ctrl-H", "Command-Option-F"), - exec: function (editor) { - config.loadModule("ace/ext/searchbox", function (e) { e.Search(editor, true); }); - } - }, { - name: "undo", - description: "Undo", - bindKey: bindKey("Ctrl-Z", "Command-Z"), - exec: function (editor) { editor.undo(); } - }, { - name: "redo", - description: "Redo", - bindKey: bindKey("Ctrl-Shift-Z|Ctrl-Y", "Command-Shift-Z|Command-Y"), - exec: function (editor) { editor.redo(); } - }, { - name: "copylinesup", - description: "Copy lines up", - bindKey: bindKey("Alt-Shift-Up", "Command-Option-Up"), - exec: function (editor) { editor.copyLinesUp(); }, - scrollIntoView: "cursor" - }, { - name: "movelinesup", - description: "Move lines up", - bindKey: bindKey("Alt-Up", "Option-Up"), - exec: function (editor) { editor.moveLinesUp(); }, - scrollIntoView: "cursor" - }, { - name: "copylinesdown", - description: "Copy lines down", - bindKey: bindKey("Alt-Shift-Down", "Command-Option-Down"), - exec: function (editor) { editor.copyLinesDown(); }, - scrollIntoView: "cursor" - }, { - name: "movelinesdown", - description: "Move lines down", - bindKey: bindKey("Alt-Down", "Option-Down"), - exec: function (editor) { editor.moveLinesDown(); }, - scrollIntoView: "cursor" - }, { - name: "del", - description: "Delete", - bindKey: bindKey("Delete", "Delete|Ctrl-D|Shift-Delete"), - exec: function (editor) { editor.remove("right"); }, - multiSelectAction: "forEach", - scrollIntoView: "cursor" - }, { - name: "backspace", - description: "Backspace", - bindKey: bindKey("Shift-Backspace|Backspace", "Ctrl-Backspace|Shift-Backspace|Backspace|Ctrl-H"), - exec: function (editor) { editor.remove("left"); }, - multiSelectAction: "forEach", - scrollIntoView: "cursor" - }, { - name: "cut_or_delete", - description: "Cut or delete", - bindKey: bindKey("Shift-Delete", null), - exec: function (editor) { - if (editor.selection.isEmpty()) { - editor.remove("left"); - } - else { - return false; - } - }, - multiSelectAction: "forEach", - scrollIntoView: "cursor" - }, { - name: "removetolinestart", - description: "Remove to line start", - bindKey: bindKey("Alt-Backspace", "Command-Backspace"), - exec: function (editor) { editor.removeToLineStart(); }, - multiSelectAction: "forEach", - scrollIntoView: "cursor" - }, { - name: "removetolineend", - description: "Remove to line end", - bindKey: bindKey("Alt-Delete", "Ctrl-K|Command-Delete"), - exec: function (editor) { editor.removeToLineEnd(); }, - multiSelectAction: "forEach", - scrollIntoView: "cursor" - }, { - name: "removetolinestarthard", - description: "Remove to line start hard", - bindKey: bindKey("Ctrl-Shift-Backspace", null), - exec: function (editor) { - var range = editor.selection.getRange(); - range.start.column = 0; - editor.session.remove(range); - }, - multiSelectAction: "forEach", - scrollIntoView: "cursor" - }, { - name: "removetolineendhard", - description: "Remove to line end hard", - bindKey: bindKey("Ctrl-Shift-Delete", null), - exec: function (editor) { - var range = editor.selection.getRange(); - range.end.column = Number.MAX_VALUE; - editor.session.remove(range); - }, - multiSelectAction: "forEach", - scrollIntoView: "cursor" - }, { - name: "removewordleft", - description: "Remove word left", - bindKey: bindKey("Ctrl-Backspace", "Alt-Backspace|Ctrl-Alt-Backspace"), - exec: function (editor) { editor.removeWordLeft(); }, - multiSelectAction: "forEach", - scrollIntoView: "cursor" - }, { - name: "removewordright", - description: "Remove word right", - bindKey: bindKey("Ctrl-Delete", "Alt-Delete"), - exec: function (editor) { editor.removeWordRight(); }, - multiSelectAction: "forEach", - scrollIntoView: "cursor" - }, { - name: "outdent", - description: "Outdent", - bindKey: bindKey("Shift-Tab", "Shift-Tab"), - exec: function (editor) { editor.blockOutdent(); }, - multiSelectAction: "forEach", - scrollIntoView: "selectionPart" - }, { - name: "indent", - description: "Indent", - bindKey: bindKey("Tab", "Tab"), - exec: function (editor) { editor.indent(); }, - multiSelectAction: "forEach", - scrollIntoView: "selectionPart" - }, { - name: "blockoutdent", - description: "Block outdent", - bindKey: bindKey("Ctrl-[", "Ctrl-["), - exec: function (editor) { editor.blockOutdent(); }, - multiSelectAction: "forEachLine", - scrollIntoView: "selectionPart" - }, { - name: "blockindent", - description: "Block indent", - bindKey: bindKey("Ctrl-]", "Ctrl-]"), - exec: function (editor) { editor.blockIndent(); }, - multiSelectAction: "forEachLine", - scrollIntoView: "selectionPart" - }, { - name: "insertstring", - description: "Insert string", - exec: function (editor, str) { editor.insert(str); }, - multiSelectAction: "forEach", - scrollIntoView: "cursor" - }, { - name: "inserttext", - description: "Insert text", - exec: function (editor, args) { - editor.insert(lang.stringRepeat(args.text || "", args.times || 1)); - }, - multiSelectAction: "forEach", - scrollIntoView: "cursor" - }, { - name: "splitline", - description: "Split line", - bindKey: bindKey(null, "Ctrl-O"), - exec: function (editor) { editor.splitLine(); }, - multiSelectAction: "forEach", - scrollIntoView: "cursor" - }, { - name: "transposeletters", - description: "Transpose letters", - bindKey: bindKey("Alt-Shift-X", "Ctrl-T"), - exec: function (editor) { editor.transposeLetters(); }, - multiSelectAction: function (editor) { editor.transposeSelections(1); }, - scrollIntoView: "cursor" - }, { - name: "touppercase", - description: "To uppercase", - bindKey: bindKey("Ctrl-U", "Ctrl-U"), - exec: function (editor) { editor.toUpperCase(); }, - multiSelectAction: "forEach", - scrollIntoView: "cursor" - }, { - name: "tolowercase", - description: "To lowercase", - bindKey: bindKey("Ctrl-Shift-U", "Ctrl-Shift-U"), - exec: function (editor) { editor.toLowerCase(); }, - multiSelectAction: "forEach", - scrollIntoView: "cursor" - }, { - name: "autoindent", - description: "Auto Indent", - bindKey: bindKey(null, null), - exec: function (editor) { editor.autoIndent(); }, - multiSelectAction: "forEachLine", - scrollIntoView: "animate" - }, { - name: "expandtoline", - description: "Expand to line", - bindKey: bindKey("Ctrl-Shift-L", "Command-Shift-L"), - exec: function (editor) { - var range = editor.selection.getRange(); - range.start.column = range.end.column = 0; - range.end.row++; - editor.selection.setRange(range, false); - }, - multiSelectAction: "forEach", - scrollIntoView: "cursor", - readOnly: true - }, { - name: "openlink", - bindKey: bindKey("Ctrl+F3", "F3"), - exec: function (editor) { editor.openLink(); } - }, { - name: "joinlines", - description: "Join lines", - bindKey: bindKey(null, null), - exec: function (editor) { - var isBackwards = editor.selection.isBackwards(); - var selectionStart = isBackwards ? editor.selection.getSelectionLead() : editor.selection.getSelectionAnchor(); - var selectionEnd = isBackwards ? editor.selection.getSelectionAnchor() : editor.selection.getSelectionLead(); - var firstLineEndCol = editor.session.doc.getLine(selectionStart.row).length; - var selectedText = editor.session.doc.getTextRange(editor.selection.getRange()); - var selectedCount = selectedText.replace(/\n\s*/, " ").length; - var insertLine = editor.session.doc.getLine(selectionStart.row); - for (var i = selectionStart.row + 1; i <= selectionEnd.row + 1; i++) { - var curLine = lang.stringTrimLeft(lang.stringTrimRight(editor.session.doc.getLine(i))); - if (curLine.length !== 0) { - curLine = " " + curLine; - } - insertLine += curLine; - } - if (selectionEnd.row + 1 < (editor.session.doc.getLength() - 1)) { - insertLine += editor.session.doc.getNewLineCharacter(); - } - editor.clearSelection(); - editor.session.doc.replace(new Range(selectionStart.row, 0, selectionEnd.row + 2, 0), insertLine); - if (selectedCount > 0) { - editor.selection.moveCursorTo(selectionStart.row, selectionStart.column); - editor.selection.selectTo(selectionStart.row, selectionStart.column + selectedCount); - } - else { - firstLineEndCol = editor.session.doc.getLine(selectionStart.row).length > firstLineEndCol ? (firstLineEndCol + 1) : firstLineEndCol; - editor.selection.moveCursorTo(selectionStart.row, firstLineEndCol); - } - }, - multiSelectAction: "forEach", - readOnly: true - }, { - name: "invertSelection", - description: "Invert selection", - bindKey: bindKey(null, null), - exec: function (editor) { - var endRow = editor.session.doc.getLength() - 1; - var endCol = editor.session.doc.getLine(endRow).length; - var ranges = editor.selection.rangeList.ranges; - var newRanges = []; - if (ranges.length < 1) { - ranges = [editor.selection.getRange()]; - } - for (var i = 0; i < ranges.length; i++) { - if (i == (ranges.length - 1)) { - if (!(ranges[i].end.row === endRow && ranges[i].end.column === endCol)) { - newRanges.push(new Range(ranges[i].end.row, ranges[i].end.column, endRow, endCol)); - } - } - if (i === 0) { - if (!(ranges[i].start.row === 0 && ranges[i].start.column === 0)) { - newRanges.push(new Range(0, 0, ranges[i].start.row, ranges[i].start.column)); - } - } - else { - newRanges.push(new Range(ranges[i - 1].end.row, ranges[i - 1].end.column, ranges[i].start.row, ranges[i].start.column)); - } - } - editor.exitMultiSelectMode(); - editor.clearSelection(); - for (var i = 0; i < newRanges.length; i++) { - editor.selection.addRange(newRanges[i], false); - } - }, - readOnly: true, - scrollIntoView: "none" - }, { - name: "addLineAfter", - description: "Add new line after the current line", - exec: function (editor) { - editor.selection.clearSelection(); - editor.navigateLineEnd(); - editor.insert("\n"); - }, - multiSelectAction: "forEach", - scrollIntoView: "cursor" - }, { - name: "addLineBefore", - description: "Add new line before the current line", - exec: function (editor) { - editor.selection.clearSelection(); - var cursor = editor.getCursorPosition(); - editor.selection.moveTo(cursor.row - 1, Number.MAX_VALUE); - editor.insert("\n"); - if (cursor.row === 0) - editor.navigateUp(); - }, - multiSelectAction: "forEach", - scrollIntoView: "cursor" - }, { - name: "openCommandPallete", - exec: function (editor) { - console.warn("This is an obsolete command. Please use `openCommandPalette` instead."); - editor.prompt({ $type: "commands" }); - }, - readOnly: true - }, { - name: "openCommandPalette", - description: "Open command palette", - bindKey: bindKey("F1", "F1"), - exec: function (editor) { - editor.prompt({ $type: "commands" }); - }, - readOnly: true - }, { - name: "modeSelect", - description: "Change language mode...", - bindKey: bindKey(null, null), - exec: function (editor) { - editor.prompt({ $type: "modes" }); - }, - readOnly: true - }]; -for (var i = 1; i < 9; i++) { - exports.commands.push({ - name: "foldToLevel" + i, - description: "Fold To Level " + i, - level: i, - exec: function (editor) { editor.session.foldToLevel(this.level); }, - scrollIntoView: "center", - readOnly: true - }); -} - -}); - -ace.define("ace/line_widgets",["require","exports","module","ace/lib/dom"], function(require, exports, module){"use strict"; -var dom = require("./lib/dom"); -var LineWidgets = /** @class */ (function () { - function LineWidgets(session) { - this.session = session; - this.session.widgetManager = this; - this.session.getRowLength = this.getRowLength; - this.session.$getWidgetScreenLength = this.$getWidgetScreenLength; - this.updateOnChange = this.updateOnChange.bind(this); - this.renderWidgets = this.renderWidgets.bind(this); - this.measureWidgets = this.measureWidgets.bind(this); - this.session._changedWidgets = []; - this.$onChangeEditor = this.$onChangeEditor.bind(this); - this.session.on("change", this.updateOnChange); - this.session.on("changeFold", this.updateOnFold); - this.session.on("changeEditor", this.$onChangeEditor); - } - LineWidgets.prototype.getRowLength = function (row) { - var h; - if (this.lineWidgets) - h = this.lineWidgets[row] && this.lineWidgets[row].rowCount || 0; - else - h = 0; - if (!this.$useWrapMode || !this.$wrapData[row]) { - return 1 + h; - } - else { - return this.$wrapData[row].length + 1 + h; - } - }; - LineWidgets.prototype.$getWidgetScreenLength = function () { - var screenRows = 0; - this.lineWidgets.forEach(function (w) { - if (w && w.rowCount && !w.hidden) - screenRows += w.rowCount; - }); - return screenRows; - }; - LineWidgets.prototype.$onChangeEditor = function (e) { - this.attach(e.editor); - }; - LineWidgets.prototype.attach = function (editor) { - if (editor && editor.widgetManager && editor.widgetManager != this) - editor.widgetManager.detach(); - if (this.editor == editor) - return; - this.detach(); - this.editor = editor; - if (editor) { - editor.widgetManager = this; - editor.renderer.on("beforeRender", this.measureWidgets); - editor.renderer.on("afterRender", this.renderWidgets); - } - }; - LineWidgets.prototype.detach = function (e) { - var editor = this.editor; - if (!editor) - return; - this.editor = null; - editor.widgetManager = null; - editor.renderer.off("beforeRender", this.measureWidgets); - editor.renderer.off("afterRender", this.renderWidgets); - var lineWidgets = this.session.lineWidgets; - lineWidgets && lineWidgets.forEach(function (w) { - if (w && w.el && w.el.parentNode) { - w._inDocument = false; - w.el.parentNode.removeChild(w.el); - } - }); - }; - LineWidgets.prototype.updateOnFold = function (e, session) { - var lineWidgets = session.lineWidgets; - if (!lineWidgets || !e.action) - return; - var fold = e.data; - var start = fold.start.row; - var end = fold.end.row; - var hide = e.action == "add"; - for (var i = start + 1; i < end; i++) { - if (lineWidgets[i]) - lineWidgets[i].hidden = hide; - } - if (lineWidgets[end]) { - if (hide) { - if (!lineWidgets[start]) - lineWidgets[start] = lineWidgets[end]; - else - lineWidgets[end].hidden = hide; - } - else { - if (lineWidgets[start] == lineWidgets[end]) - lineWidgets[start] = undefined; - lineWidgets[end].hidden = hide; - } - } - }; - LineWidgets.prototype.updateOnChange = function (delta) { - var lineWidgets = this.session.lineWidgets; - if (!lineWidgets) - return; - var startRow = delta.start.row; - var len = delta.end.row - startRow; - if (len === 0) { - } - else if (delta.action == "remove") { - var removed = lineWidgets.splice(startRow + 1, len); - if (!lineWidgets[startRow] && removed[removed.length - 1]) { - lineWidgets[startRow] = removed.pop(); - } - removed.forEach(function (w) { - w && this.removeLineWidget(w); - }, this); - this.$updateRows(); - } - else { - var args = new Array(len); - if (lineWidgets[startRow] && lineWidgets[startRow].column != null) { - if (delta.start.column > lineWidgets[startRow].column) - startRow++; - } - args.unshift(startRow, 0); - lineWidgets.splice.apply(lineWidgets, args); - this.$updateRows(); - } - }; - LineWidgets.prototype.$updateRows = function () { - var lineWidgets = this.session.lineWidgets; - if (!lineWidgets) - return; - var noWidgets = true; - lineWidgets.forEach(function (w, i) { - if (w) { - noWidgets = false; - w.row = i; - while (w.$oldWidget) { - w.$oldWidget.row = i; - w = w.$oldWidget; - } - } - }); - if (noWidgets) - this.session.lineWidgets = null; - }; - LineWidgets.prototype.$registerLineWidget = function (w) { - if (!this.session.lineWidgets) - this.session.lineWidgets = new Array(this.session.getLength()); - var old = this.session.lineWidgets[w.row]; - if (old) { - w.$oldWidget = old; - if (old.el && old.el.parentNode) { - old.el.parentNode.removeChild(old.el); - old._inDocument = false; - } - } - this.session.lineWidgets[w.row] = w; - return w; - }; - LineWidgets.prototype.addLineWidget = function (w) { - this.$registerLineWidget(w); - w.session = this.session; - if (!this.editor) - return w; - var renderer = this.editor.renderer; - if (w.html && !w.el) { - w.el = dom.createElement("div"); - w.el.innerHTML = w.html; - } - if (w.text && !w.el) { - w.el = dom.createElement("div"); - w.el.textContent = w.text; - } - if (w.el) { - dom.addCssClass(w.el, "ace_lineWidgetContainer"); - if (w.className) { - dom.addCssClass(w.el, w.className); - } - w.el.style.position = "absolute"; - w.el.style.zIndex = 5; - renderer.container.appendChild(w.el); - w._inDocument = true; - if (!w.coverGutter) { - w.el.style.zIndex = 3; - } - if (w.pixelHeight == null) { - w.pixelHeight = w.el.offsetHeight; - } - } - if (w.rowCount == null) { - w.rowCount = w.pixelHeight / renderer.layerConfig.lineHeight; - } - var fold = this.session.getFoldAt(w.row, 0); - w.$fold = fold; - if (fold) { - var lineWidgets = this.session.lineWidgets; - if (w.row == fold.end.row && !lineWidgets[fold.start.row]) - lineWidgets[fold.start.row] = w; - else - w.hidden = true; - } - this.session._emit("changeFold", { data: { start: { row: w.row } } }); - this.$updateRows(); - this.renderWidgets(null, renderer); - this.onWidgetChanged(w); - return w; - }; - LineWidgets.prototype.removeLineWidget = function (w) { - w._inDocument = false; - w.session = null; - if (w.el && w.el.parentNode) - w.el.parentNode.removeChild(w.el); - if (w.editor && w.editor.destroy) - try { - w.editor.destroy(); - } - catch (e) { } - if (this.session.lineWidgets) { - var w1 = this.session.lineWidgets[w.row]; - if (w1 == w) { - this.session.lineWidgets[w.row] = w.$oldWidget; - if (w.$oldWidget) - this.onWidgetChanged(w.$oldWidget); - } - else { - while (w1) { - if (w1.$oldWidget == w) { - w1.$oldWidget = w.$oldWidget; - break; - } - w1 = w1.$oldWidget; - } - } - } - this.session._emit("changeFold", { data: { start: { row: w.row } } }); - this.$updateRows(); - }; - LineWidgets.prototype.getWidgetsAtRow = function (row) { - var lineWidgets = this.session.lineWidgets; - var w = lineWidgets && lineWidgets[row]; - var list = []; - while (w) { - list.push(w); - w = w.$oldWidget; - } - return list; - }; - LineWidgets.prototype.onWidgetChanged = function (w) { - this.session._changedWidgets.push(w); - this.editor && this.editor.renderer.updateFull(); - }; - LineWidgets.prototype.measureWidgets = function (e, renderer) { - var changedWidgets = this.session._changedWidgets; - var config = renderer.layerConfig; - if (!changedWidgets || !changedWidgets.length) - return; - var min = Infinity; - for (var i = 0; i < changedWidgets.length; i++) { - var w = changedWidgets[i]; - if (!w || !w.el) - continue; - if (w.session != this.session) - continue; - if (!w._inDocument) { - if (this.session.lineWidgets[w.row] != w) - continue; - w._inDocument = true; - renderer.container.appendChild(w.el); - } - w.h = w.el.offsetHeight; - if (!w.fixedWidth) { - w.w = w.el.offsetWidth; - w.screenWidth = Math.ceil(w.w / config.characterWidth); - } - var rowCount = w.h / config.lineHeight; - if (w.coverLine) { - rowCount -= this.session.getRowLineCount(w.row); - if (rowCount < 0) - rowCount = 0; - } - if (w.rowCount != rowCount) { - w.rowCount = rowCount; - if (w.row < min) - min = w.row; - } - } - if (min != Infinity) { - this.session._emit("changeFold", { data: { start: { row: min } } }); - this.session.lineWidgetWidth = null; - } - this.session._changedWidgets = []; - }; - LineWidgets.prototype.renderWidgets = function (e, renderer) { - var config = renderer.layerConfig; - var lineWidgets = this.session.lineWidgets; - if (!lineWidgets) - return; - var first = Math.min(this.firstRow, config.firstRow); - var last = Math.max(this.lastRow, config.lastRow, lineWidgets.length); - while (first > 0 && !lineWidgets[first]) - first--; - this.firstRow = config.firstRow; - this.lastRow = config.lastRow; - renderer.$cursorLayer.config = config; - for (var i = first; i <= last; i++) { - var w = lineWidgets[i]; - if (!w || !w.el) - continue; - if (w.hidden) { - w.el.style.top = -100 - (w.pixelHeight || 0) + "px"; - continue; - } - if (!w._inDocument) { - w._inDocument = true; - renderer.container.appendChild(w.el); - } - var top = renderer.$cursorLayer.getPixelPosition({ row: i, column: 0 }, true).top; - if (!w.coverLine) - top += config.lineHeight * this.session.getRowLineCount(w.row); - w.el.style.top = top - config.offset + "px"; - var left = w.coverGutter ? 0 : renderer.gutterWidth; - if (!w.fixedWidth) - left -= renderer.scrollLeft; - w.el.style.left = left + "px"; - if (w.fullWidth && w.screenWidth) { - w.el.style.minWidth = config.width + 2 * config.padding + "px"; - } - if (w.fixedWidth) { - w.el.style.right = renderer.scrollBar.getWidth() + "px"; - } - else { - w.el.style.right = ""; - } - } - }; - return LineWidgets; -}()); -exports.LineWidgets = LineWidgets; - -}); - -ace.define("ace/keyboard/gutter_handler",["require","exports","module","ace/lib/keys","ace/mouse/default_gutter_handler"], function(require, exports, module){"use strict"; -var keys = require('../lib/keys'); -var GutterTooltip = require("../mouse/default_gutter_handler").GutterTooltip; -var GutterKeyboardHandler = /** @class */ (function () { - function GutterKeyboardHandler(editor) { - this.editor = editor; - this.gutterLayer = editor.renderer.$gutterLayer; - this.element = editor.renderer.$gutter; - this.lines = editor.renderer.$gutterLayer.$lines; - this.activeRowIndex = null; - this.activeLane = null; - this.annotationTooltip = new GutterTooltip(this.editor); - } - GutterKeyboardHandler.prototype.addListener = function () { - this.element.addEventListener("keydown", this.$onGutterKeyDown.bind(this)); - this.element.addEventListener("focusout", this.$blurGutter.bind(this)); - this.editor.on("mousewheel", this.$blurGutter.bind(this)); - }; - GutterKeyboardHandler.prototype.removeListener = function () { - this.element.removeEventListener("keydown", this.$onGutterKeyDown.bind(this)); - this.element.removeEventListener("focusout", this.$blurGutter.bind(this)); - this.editor.off("mousewheel", this.$blurGutter.bind(this)); - }; - GutterKeyboardHandler.prototype.$onGutterKeyDown = function (e) { - if (this.annotationTooltip.isOpen) { - e.preventDefault(); - if (e.keyCode === keys["escape"]) - this.annotationTooltip.hideTooltip(); - return; - } - if (e.target === this.element) { - if (e.keyCode != keys["enter"]) { - return; - } - e.preventDefault(); - var row = this.editor.getCursorPosition().row; - if (!this.editor.isRowVisible(row)) - this.editor.scrollToLine(row, true, true); - setTimeout(function () { - var index = this.$rowToRowIndex(this.gutterLayer.$cursorCell.row); - var nearestFoldIndex = this.$findNearestFoldWidget(index); - var nearestAnnotationIndex = this.$findNearestAnnotation(index); - if (nearestFoldIndex === null && nearestAnnotationIndex === null) - return; - if (nearestFoldIndex === null && nearestAnnotationIndex !== null) { - this.activeRowIndex = nearestAnnotationIndex; - this.activeLane = "annotation"; - this.$focusAnnotation(this.activeRowIndex); - return; - } - if (nearestFoldIndex !== null && nearestAnnotationIndex === null) { - this.activeRowIndex = nearestFoldIndex; - this.activeLane = "fold"; - this.$focusFoldWidget(this.activeRowIndex); - return; - } - if (Math.abs(nearestAnnotationIndex - index) < Math.abs(nearestFoldIndex - index)) { - this.activeRowIndex = nearestAnnotationIndex; - this.activeLane = "annotation"; - this.$focusAnnotation(this.activeRowIndex); - return; - } - else { - this.activeRowIndex = nearestFoldIndex; - this.activeLane = "fold"; - this.$focusFoldWidget(this.activeRowIndex); - return; - } - }.bind(this), 10); - return; - } - this.$handleGutterKeyboardInteraction(e); - setTimeout(function () { - this.editor._signal("gutterkeydown", new GutterKeyboardEvent(e, this)); - }.bind(this), 10); - }; - GutterKeyboardHandler.prototype.$handleGutterKeyboardInteraction = function (e) { - if (e.keyCode === keys["tab"]) { - e.preventDefault(); - return; - } - if (e.keyCode === keys["escape"]) { - e.preventDefault(); - this.$blurGutter(); - this.element.focus(); - this.lane = null; - return; - } - if (e.keyCode === keys["up"]) { - e.preventDefault(); - switch (this.activeLane) { - case "fold": - this.$moveFoldWidgetUp(); - break; - case "annotation": - this.$moveAnnotationUp(); - break; - } - return; - } - if (e.keyCode === keys["down"]) { - e.preventDefault(); - switch (this.activeLane) { - case "fold": - this.$moveFoldWidgetDown(); - break; - case "annotation": - this.$moveAnnotationDown(); - break; - } - return; - } - if (e.keyCode === keys["left"]) { - e.preventDefault(); - this.$switchLane("annotation"); - return; - } - if (e.keyCode === keys["right"]) { - e.preventDefault(); - this.$switchLane("fold"); - return; - } - if (e.keyCode === keys["enter"] || e.keyCode === keys["space"]) { - e.preventDefault(); - switch (this.activeLane) { - case "fold": - if (this.gutterLayer.session.foldWidgets[this.$rowIndexToRow(this.activeRowIndex)] === 'start') { - var rowFoldingWidget = this.$rowIndexToRow(this.activeRowIndex); - this.editor.session.onFoldWidgetClick(this.$rowIndexToRow(this.activeRowIndex), e); - setTimeout(function () { - if (this.$rowIndexToRow(this.activeRowIndex) !== rowFoldingWidget) { - this.$blurFoldWidget(this.activeRowIndex); - this.activeRowIndex = this.$rowToRowIndex(rowFoldingWidget); - this.$focusFoldWidget(this.activeRowIndex); - } - }.bind(this), 10); - break; - } - else if (this.gutterLayer.session.foldWidgets[this.$rowIndexToRow(this.activeRowIndex)] === 'end') { - break; - } - return; - case "annotation": - var gutterElement = this.lines.cells[this.activeRowIndex].element.childNodes[2]; - var rect = gutterElement.getBoundingClientRect(); - var style = this.annotationTooltip.getElement().style; - style.left = rect.right + "px"; - style.top = rect.bottom + "px"; - this.annotationTooltip.showTooltip(this.$rowIndexToRow(this.activeRowIndex)); - break; - } - return; - } - }; - GutterKeyboardHandler.prototype.$blurGutter = function () { - if (this.activeRowIndex !== null) { - switch (this.activeLane) { - case "fold": - this.$blurFoldWidget(this.activeRowIndex); - break; - case "annotation": - this.$blurAnnotation(this.activeRowIndex); - break; - } - } - if (this.annotationTooltip.isOpen) - this.annotationTooltip.hideTooltip(); - return; - }; - GutterKeyboardHandler.prototype.$isFoldWidgetVisible = function (index) { - var isRowFullyVisible = this.editor.isRowFullyVisible(this.$rowIndexToRow(index)); - var isIconVisible = this.$getFoldWidget(index).style.display !== "none"; - return isRowFullyVisible && isIconVisible; - }; - GutterKeyboardHandler.prototype.$isAnnotationVisible = function (index) { - var isRowFullyVisible = this.editor.isRowFullyVisible(this.$rowIndexToRow(index)); - var isIconVisible = this.$getAnnotation(index).style.display !== "none"; - return isRowFullyVisible && isIconVisible; - }; - GutterKeyboardHandler.prototype.$getFoldWidget = function (index) { - var cell = this.lines.get(index); - var element = cell.element; - return element.childNodes[1]; - }; - GutterKeyboardHandler.prototype.$getAnnotation = function (index) { - var cell = this.lines.get(index); - var element = cell.element; - return element.childNodes[2]; - }; - GutterKeyboardHandler.prototype.$findNearestFoldWidget = function (index) { - if (this.$isFoldWidgetVisible(index)) - return index; - var i = 0; - while (index - i > 0 || index + i < this.lines.getLength() - 1) { - i++; - if (index - i >= 0 && this.$isFoldWidgetVisible(index - i)) - return index - i; - if (index + i <= this.lines.getLength() - 1 && this.$isFoldWidgetVisible(index + i)) - return index + i; - } - return null; - }; - GutterKeyboardHandler.prototype.$findNearestAnnotation = function (index) { - if (this.$isAnnotationVisible(index)) - return index; - var i = 0; - while (index - i > 0 || index + i < this.lines.getLength() - 1) { - i++; - if (index - i >= 0 && this.$isAnnotationVisible(index - i)) - return index - i; - if (index + i <= this.lines.getLength() - 1 && this.$isAnnotationVisible(index + i)) - return index + i; - } - return null; - }; - GutterKeyboardHandler.prototype.$focusFoldWidget = function (index) { - if (index == null) - return; - var foldWidget = this.$getFoldWidget(index); - foldWidget.classList.add(this.editor.renderer.keyboardFocusClassName); - foldWidget.focus(); - }; - GutterKeyboardHandler.prototype.$focusAnnotation = function (index) { - if (index == null) - return; - var annotation = this.$getAnnotation(index); - annotation.classList.add(this.editor.renderer.keyboardFocusClassName); - annotation.focus(); - }; - GutterKeyboardHandler.prototype.$blurFoldWidget = function (index) { - var foldWidget = this.$getFoldWidget(index); - foldWidget.classList.remove(this.editor.renderer.keyboardFocusClassName); - foldWidget.blur(); - }; - GutterKeyboardHandler.prototype.$blurAnnotation = function (index) { - var annotation = this.$getAnnotation(index); - annotation.classList.remove(this.editor.renderer.keyboardFocusClassName); - annotation.blur(); - }; - GutterKeyboardHandler.prototype.$moveFoldWidgetUp = function () { - var index = this.activeRowIndex; - while (index > 0) { - index--; - if (this.$isFoldWidgetVisible(index)) { - this.$blurFoldWidget(this.activeRowIndex); - this.activeRowIndex = index; - this.$focusFoldWidget(this.activeRowIndex); - return; - } - } - return; - }; - GutterKeyboardHandler.prototype.$moveFoldWidgetDown = function () { - var index = this.activeRowIndex; - while (index < this.lines.getLength() - 1) { - index++; - if (this.$isFoldWidgetVisible(index)) { - this.$blurFoldWidget(this.activeRowIndex); - this.activeRowIndex = index; - this.$focusFoldWidget(this.activeRowIndex); - return; - } - } - return; - }; - GutterKeyboardHandler.prototype.$moveAnnotationUp = function () { - var index = this.activeRowIndex; - while (index > 0) { - index--; - if (this.$isAnnotationVisible(index)) { - this.$blurAnnotation(this.activeRowIndex); - this.activeRowIndex = index; - this.$focusAnnotation(this.activeRowIndex); - return; - } - } - return; - }; - GutterKeyboardHandler.prototype.$moveAnnotationDown = function () { - var index = this.activeRowIndex; - while (index < this.lines.getLength() - 1) { - index++; - if (this.$isAnnotationVisible(index)) { - this.$blurAnnotation(this.activeRowIndex); - this.activeRowIndex = index; - this.$focusAnnotation(this.activeRowIndex); - return; - } - } - return; - }; - GutterKeyboardHandler.prototype.$switchLane = function (desinationLane) { - switch (desinationLane) { - case "annotation": - if (this.activeLane === "annotation") { - break; - } - var annotationIndex = this.$findNearestAnnotation(this.activeRowIndex); - if (annotationIndex == null) { - break; - } - this.activeLane = "annotation"; - this.$blurFoldWidget(this.activeRowIndex); - this.activeRowIndex = annotationIndex; - this.$focusAnnotation(this.activeRowIndex); - break; - case "fold": - if (this.activeLane === "fold") { - break; - } - var foldWidgetIndex = this.$findNearestFoldWidget(this.activeRowIndex); - if (foldWidgetIndex == null) { - break; - } - this.activeLane = "fold"; - this.$blurAnnotation(this.activeRowIndex); - this.activeRowIndex = foldWidgetIndex; - this.$focusFoldWidget(this.activeRowIndex); - break; - } - return; - }; - GutterKeyboardHandler.prototype.$rowIndexToRow = function (index) { - var cell = this.lines.get(index); - if (cell) - return cell.row; - return null; - }; - GutterKeyboardHandler.prototype.$rowToRowIndex = function (row) { - for (var i = 0; i < this.lines.getLength(); i++) { - var cell = this.lines.get(i); - if (cell.row == row) - return i; - } - return null; - }; - return GutterKeyboardHandler; -}()); -exports.GutterKeyboardHandler = GutterKeyboardHandler; -var GutterKeyboardEvent = /** @class */ (function () { - function GutterKeyboardEvent(domEvent, gutterKeyboardHandler) { - this.gutterKeyboardHandler = gutterKeyboardHandler; - this.domEvent = domEvent; - } - GutterKeyboardEvent.prototype.getKey = function () { - return keys.keyCodeToString(this.domEvent.keyCode); - }; - GutterKeyboardEvent.prototype.getRow = function () { - return this.gutterKeyboardHandler.$rowIndexToRow(this.gutterKeyboardHandler.activeRowIndex); - }; - GutterKeyboardEvent.prototype.isInAnnotationLane = function () { - return this.gutterKeyboardHandler.activeLane === "annotation"; - }; - GutterKeyboardEvent.prototype.isInFoldLane = function () { - return this.gutterKeyboardHandler.activeLane === "fold"; - }; - return GutterKeyboardEvent; -}()); -exports.GutterKeyboardEvent = GutterKeyboardEvent; - -}); - -ace.define("ace/editor",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/lib/useragent","ace/keyboard/textinput","ace/mouse/mouse_handler","ace/mouse/fold_handler","ace/keyboard/keybinding","ace/edit_session","ace/search","ace/range","ace/lib/event_emitter","ace/commands/command_manager","ace/commands/default_commands","ace/config","ace/token_iterator","ace/line_widgets","ace/keyboard/gutter_handler","ace/config","ace/clipboard","ace/lib/keys"], function(require, exports, module){"use strict"; -var __values = (this && this.__values) || function(o) { - var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0; - if (m) return m.call(o); - if (o && typeof o.length === "number") return { - next: function () { - if (o && i >= o.length) o = void 0; - return { value: o && o[i++], done: !o }; - } - }; - throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined."); -}; -var oop = require("./lib/oop"); -var dom = require("./lib/dom"); -var lang = require("./lib/lang"); -var useragent = require("./lib/useragent"); -var TextInput = require("./keyboard/textinput").TextInput; -var MouseHandler = require("./mouse/mouse_handler").MouseHandler; -var FoldHandler = require("./mouse/fold_handler").FoldHandler; -var KeyBinding = require("./keyboard/keybinding").KeyBinding; -var EditSession = require("./edit_session").EditSession; -var Search = require("./search").Search; -var Range = require("./range").Range; -var EventEmitter = require("./lib/event_emitter").EventEmitter; -var CommandManager = require("./commands/command_manager").CommandManager; -var defaultCommands = require("./commands/default_commands").commands; -var config = require("./config"); -var TokenIterator = require("./token_iterator").TokenIterator; -var LineWidgets = require("./line_widgets").LineWidgets; -var GutterKeyboardHandler = require("./keyboard/gutter_handler").GutterKeyboardHandler; -var nls = require("./config").nls; -var clipboard = require("./clipboard"); -var keys = require('./lib/keys'); -var Editor = /** @class */ (function () { - function Editor(renderer, session, options) { - this.$toDestroy = []; - var container = renderer.getContainerElement(); - this.container = container; - this.renderer = renderer; - this.id = "editor" + (++Editor.$uid); - this.commands = new CommandManager(useragent.isMac ? "mac" : "win", defaultCommands); - if (typeof document == "object") { - this.textInput = new TextInput(renderer.getTextAreaContainer(), this); - this.renderer.textarea = this.textInput.getElement(); - this.$mouseHandler = new MouseHandler(this); - new FoldHandler(this); - } - this.keyBinding = new KeyBinding(this); - this.$search = new Search().set({ - wrap: true - }); - this.$historyTracker = this.$historyTracker.bind(this); - this.commands.on("exec", this.$historyTracker); - this.$initOperationListeners(); - this._$emitInputEvent = lang.delayedCall(function () { - this._signal("input", {}); - if (this.session && !this.session.destroyed) - this.session.bgTokenizer.scheduleStart(); - }.bind(this)); - this.on("change", function (_, _self) { - _self._$emitInputEvent.schedule(31); - }); - this.setSession(session || options && options.session || new EditSession("")); - config.resetOptions(this); - if (options) - this.setOptions(options); - config._signal("editor", this); - } - Editor.prototype.$initOperationListeners = function () { - this.commands.on("exec", this.startOperation.bind(this), true); - this.commands.on("afterExec", this.endOperation.bind(this), true); - this.$opResetTimer = lang.delayedCall(this.endOperation.bind(this, true)); - this.on("change", function () { - if (!this.curOp) { - this.startOperation(); - this.curOp.selectionBefore = this.$lastSel; - } - this.curOp.docChanged = true; - }.bind(this), true); - this.on("changeSelection", function () { - if (!this.curOp) { - this.startOperation(); - this.curOp.selectionBefore = this.$lastSel; - } - this.curOp.selectionChanged = true; - }.bind(this), true); - }; - Editor.prototype.startOperation = function (commandEvent) { - if (this.curOp) { - if (!commandEvent || this.curOp.command) - return; - this.prevOp = this.curOp; - } - if (!commandEvent) { - this.previousCommand = null; - commandEvent = {}; - } - this.$opResetTimer.schedule(); - this.curOp = this.session.curOp = { - command: commandEvent.command || {}, - args: commandEvent.args, - scrollTop: this.renderer.scrollTop - }; - this.curOp.selectionBefore = this.selection.toJSON(); - }; - Editor.prototype.endOperation = function (e) { - if (this.curOp && this.session) { - if (e && e.returnValue === false || !this.session) - return (this.curOp = null); - if (e == true && this.curOp.command && this.curOp.command.name == "mouse") - return; - this._signal("beforeEndOperation"); - if (!this.curOp) - return; - var command = this.curOp.command; - var scrollIntoView = command && command.scrollIntoView; - if (scrollIntoView) { - switch (scrollIntoView) { - case "center-animate": - scrollIntoView = "animate"; - case "center": - this.renderer.scrollCursorIntoView(null, 0.5); - break; - case "animate": - case "cursor": - this.renderer.scrollCursorIntoView(); - break; - case "selectionPart": - var range = this.selection.getRange(); - var config = this.renderer.layerConfig; - if (range.start.row >= config.lastRow || range.end.row <= config.firstRow) { - this.renderer.scrollSelectionIntoView(this.selection.anchor, this.selection.lead); - } - break; - default: - break; - } - if (scrollIntoView == "animate") - this.renderer.animateScrolling(this.curOp.scrollTop); - } - var sel = this.selection.toJSON(); - this.curOp.selectionAfter = sel; - this.$lastSel = this.selection.toJSON(); - this.session.getUndoManager().addSelection(sel); - this.prevOp = this.curOp; - this.curOp = null; - } - }; - Editor.prototype.$historyTracker = function (e) { - if (!this.$mergeUndoDeltas) - return; - var prev = this.prevOp; - var mergeableCommands = this.$mergeableCommands; - var shouldMerge = prev.command && (e.command.name == prev.command.name); - if (e.command.name == "insertstring") { - var text = e.args; - if (this.mergeNextCommand === undefined) - this.mergeNextCommand = true; - shouldMerge = shouldMerge - && this.mergeNextCommand // previous command allows to coalesce with - && (!/\s/.test(text) || /\s/.test(prev.args)); // previous insertion was of same type - this.mergeNextCommand = true; - } - else { - shouldMerge = shouldMerge - && mergeableCommands.indexOf(e.command.name) !== -1; // the command is mergeable - } - if (this.$mergeUndoDeltas != "always" - && Date.now() - this.sequenceStartTime > 2000) { - shouldMerge = false; // the sequence is too long - } - if (shouldMerge) - this.session.mergeUndoDeltas = true; - else if (mergeableCommands.indexOf(e.command.name) !== -1) - this.sequenceStartTime = Date.now(); - }; - Editor.prototype.setKeyboardHandler = function (keyboardHandler, cb) { - if (keyboardHandler && typeof keyboardHandler === "string" && keyboardHandler != "ace") { - this.$keybindingId = keyboardHandler; - var _self = this; - config.loadModule(["keybinding", keyboardHandler], function (module) { - if (_self.$keybindingId == keyboardHandler) - _self.keyBinding.setKeyboardHandler(module && module.handler); - cb && cb(); - }); - } - else { - this.$keybindingId = null; - this.keyBinding.setKeyboardHandler(keyboardHandler); - cb && cb(); - } - }; - Editor.prototype.getKeyboardHandler = function () { - return this.keyBinding.getKeyboardHandler(); - }; - Editor.prototype.setSession = function (session) { - if (this.session == session) - return; - if (this.curOp) - this.endOperation(); - this.curOp = {}; - var oldSession = this.session; - if (oldSession) { - this.session.off("change", this.$onDocumentChange); - this.session.off("changeMode", this.$onChangeMode); - this.session.off("tokenizerUpdate", this.$onTokenizerUpdate); - this.session.off("changeTabSize", this.$onChangeTabSize); - this.session.off("changeWrapLimit", this.$onChangeWrapLimit); - this.session.off("changeWrapMode", this.$onChangeWrapMode); - this.session.off("changeFold", this.$onChangeFold); - this.session.off("changeFrontMarker", this.$onChangeFrontMarker); - this.session.off("changeBackMarker", this.$onChangeBackMarker); - this.session.off("changeBreakpoint", this.$onChangeBreakpoint); - this.session.off("changeAnnotation", this.$onChangeAnnotation); - this.session.off("changeOverwrite", this.$onCursorChange); - this.session.off("changeScrollTop", this.$onScrollTopChange); - this.session.off("changeScrollLeft", this.$onScrollLeftChange); - var selection = this.session.getSelection(); - selection.off("changeCursor", this.$onCursorChange); - selection.off("changeSelection", this.$onSelectionChange); - } - this.session = session; - if (session) { - this.$onDocumentChange = this.onDocumentChange.bind(this); - session.on("change", this.$onDocumentChange); - this.renderer.setSession(session); - this.$onChangeMode = this.onChangeMode.bind(this); - session.on("changeMode", this.$onChangeMode); - this.$onTokenizerUpdate = this.onTokenizerUpdate.bind(this); - session.on("tokenizerUpdate", this.$onTokenizerUpdate); - this.$onChangeTabSize = this.renderer.onChangeTabSize.bind(this.renderer); - session.on("changeTabSize", this.$onChangeTabSize); - this.$onChangeWrapLimit = this.onChangeWrapLimit.bind(this); - session.on("changeWrapLimit", this.$onChangeWrapLimit); - this.$onChangeWrapMode = this.onChangeWrapMode.bind(this); - session.on("changeWrapMode", this.$onChangeWrapMode); - this.$onChangeFold = this.onChangeFold.bind(this); - session.on("changeFold", this.$onChangeFold); - this.$onChangeFrontMarker = this.onChangeFrontMarker.bind(this); - this.session.on("changeFrontMarker", this.$onChangeFrontMarker); - this.$onChangeBackMarker = this.onChangeBackMarker.bind(this); - this.session.on("changeBackMarker", this.$onChangeBackMarker); - this.$onChangeBreakpoint = this.onChangeBreakpoint.bind(this); - this.session.on("changeBreakpoint", this.$onChangeBreakpoint); - this.$onChangeAnnotation = this.onChangeAnnotation.bind(this); - this.session.on("changeAnnotation", this.$onChangeAnnotation); - this.$onCursorChange = this.onCursorChange.bind(this); - this.session.on("changeOverwrite", this.$onCursorChange); - this.$onScrollTopChange = this.onScrollTopChange.bind(this); - this.session.on("changeScrollTop", this.$onScrollTopChange); - this.$onScrollLeftChange = this.onScrollLeftChange.bind(this); - this.session.on("changeScrollLeft", this.$onScrollLeftChange); - this.selection = session.getSelection(); - this.selection.on("changeCursor", this.$onCursorChange); - this.$onSelectionChange = this.onSelectionChange.bind(this); - this.selection.on("changeSelection", this.$onSelectionChange); - this.onChangeMode(); - this.onCursorChange(); - this.onScrollTopChange(); - this.onScrollLeftChange(); - this.onSelectionChange(); - this.onChangeFrontMarker(); - this.onChangeBackMarker(); - this.onChangeBreakpoint(); - this.onChangeAnnotation(); - this.session.getUseWrapMode() && this.renderer.adjustWrapLimit(); - this.renderer.updateFull(); - } - else { - this.selection = null; - this.renderer.setSession(session); - } - this._signal("changeSession", { - session: session, - oldSession: oldSession - }); - this.curOp = null; - oldSession && oldSession._signal("changeEditor", { oldEditor: this }); - session && session._signal("changeEditor", { editor: this }); - if (session && !session.destroyed) - session.bgTokenizer.scheduleStart(); - }; - Editor.prototype.getSession = function () { - return this.session; - }; - Editor.prototype.setValue = function (val, cursorPos) { - this.session.doc.setValue(val); - if (!cursorPos) - this.selectAll(); - else if (cursorPos == 1) - this.navigateFileEnd(); - else if (cursorPos == -1) - this.navigateFileStart(); - return val; - }; - Editor.prototype.getValue = function () { - return this.session.getValue(); - }; - Editor.prototype.getSelection = function () { - return this.selection; - }; - Editor.prototype.resize = function (force) { - this.renderer.onResize(force); - }; - Editor.prototype.setTheme = function (theme, cb) { - this.renderer.setTheme(theme, cb); - }; - Editor.prototype.getTheme = function () { - return this.renderer.getTheme(); - }; - Editor.prototype.setStyle = function (style) { - this.renderer.setStyle(style); - }; - Editor.prototype.unsetStyle = function (style) { - this.renderer.unsetStyle(style); - }; - Editor.prototype.getFontSize = function () { - return this.getOption("fontSize") || - dom.computedStyle(this.container).fontSize; - }; - Editor.prototype.setFontSize = function (size) { - this.setOption("fontSize", size); - }; - Editor.prototype.$highlightBrackets = function () { - if (this.$highlightPending) { - return; - } - var self = this; - this.$highlightPending = true; - setTimeout(function () { - self.$highlightPending = false; - var session = self.session; - if (!session || session.destroyed) - return; - if (session.$bracketHighlight) { - session.$bracketHighlight.markerIds.forEach(function (id) { - session.removeMarker(id); - }); - session.$bracketHighlight = null; - } - var pos = self.getCursorPosition(); - var handler = self.getKeyboardHandler(); - var isBackwards = handler && handler.$getDirectionForHighlight && handler.$getDirectionForHighlight(self); - var ranges = session.getMatchingBracketRanges(pos, isBackwards); - if (!ranges) { - var iterator = new TokenIterator(session, pos.row, pos.column); - var token = iterator.getCurrentToken(); - if (token && /\b(?:tag-open|tag-name)/.test(token.type)) { - var tagNamesRanges = session.getMatchingTags(pos); - if (tagNamesRanges) - ranges = [tagNamesRanges.openTagName, tagNamesRanges.closeTagName]; - } - } - if (!ranges && session.$mode.getMatching) - ranges = session.$mode.getMatching(self.session); - if (!ranges) { - if (self.getHighlightIndentGuides()) - self.renderer.$textLayer.$highlightIndentGuide(); - return; - } - var markerType = "ace_bracket"; - if (!Array.isArray(ranges)) { - ranges = [ranges]; - } - else if (ranges.length == 1) { - markerType = "ace_error_bracket"; - } - if (ranges.length == 2) { - if (Range.comparePoints(ranges[0].end, ranges[1].start) == 0) - ranges = [Range.fromPoints(ranges[0].start, ranges[1].end)]; - else if (Range.comparePoints(ranges[0].start, ranges[1].end) == 0) - ranges = [Range.fromPoints(ranges[1].start, ranges[0].end)]; - } - session.$bracketHighlight = { - ranges: ranges, - markerIds: ranges.map(function (range) { - return session.addMarker(range, markerType, "text"); - }) - }; - if (self.getHighlightIndentGuides()) - self.renderer.$textLayer.$highlightIndentGuide(); - }, 50); - }; - Editor.prototype.focus = function () { - this.textInput.focus(); - }; - Editor.prototype.isFocused = function () { - return this.textInput.isFocused(); - }; - Editor.prototype.blur = function () { - this.textInput.blur(); - }; - Editor.prototype.onFocus = function (e) { - if (this.$isFocused) - return; - this.$isFocused = true; - this.renderer.showCursor(); - this.renderer.visualizeFocus(); - this._emit("focus", e); - }; - Editor.prototype.onBlur = function (e) { - if (!this.$isFocused) - return; - this.$isFocused = false; - this.renderer.hideCursor(); - this.renderer.visualizeBlur(); - this._emit("blur", e); - }; - Editor.prototype.$cursorChange = function () { - this.renderer.updateCursor(); - this.$highlightBrackets(); - this.$updateHighlightActiveLine(); - }; - Editor.prototype.onDocumentChange = function (delta) { - var wrap = this.session.$useWrapMode; - var lastRow = (delta.start.row == delta.end.row ? delta.end.row : Infinity); - this.renderer.updateLines(delta.start.row, lastRow, wrap); - this._signal("change", delta); - this.$cursorChange(); - }; - Editor.prototype.onTokenizerUpdate = function (e) { - var rows = e.data; - this.renderer.updateLines(rows.first, rows.last); - }; - Editor.prototype.onScrollTopChange = function () { - this.renderer.scrollToY(this.session.getScrollTop()); - }; - Editor.prototype.onScrollLeftChange = function () { - this.renderer.scrollToX(this.session.getScrollLeft()); - }; - Editor.prototype.onCursorChange = function () { - this.$cursorChange(); - this._signal("changeSelection"); - }; - Editor.prototype.$updateHighlightActiveLine = function () { - var session = this.getSession(); - var highlight; - if (this.$highlightActiveLine) { - if (this.$selectionStyle != "line" || !this.selection.isMultiLine()) - highlight = this.getCursorPosition(); - if (this.renderer.theme && this.renderer.theme.$selectionColorConflict && !this.selection.isEmpty()) - highlight = false; - if (this.renderer.$maxLines && this.session.getLength() === 1 && !(this.renderer.$minLines > 1)) - highlight = false; - } - if (session.$highlightLineMarker && !highlight) { - session.removeMarker(session.$highlightLineMarker.id); - session.$highlightLineMarker = null; - } - else if (!session.$highlightLineMarker && highlight) { - var range = new Range(highlight.row, highlight.column, highlight.row, Infinity); - range.id = session.addMarker(range, "ace_active-line", "screenLine"); - session.$highlightLineMarker = range; - } - else if (highlight) { - session.$highlightLineMarker.start.row = highlight.row; - session.$highlightLineMarker.end.row = highlight.row; - session.$highlightLineMarker.start.column = highlight.column; - session._signal("changeBackMarker"); - } - }; - Editor.prototype.onSelectionChange = function (e) { - var session = this.session; - if (session.$selectionMarker) { - session.removeMarker(session.$selectionMarker); - } - session.$selectionMarker = null; - if (!this.selection.isEmpty()) { - var range = this.selection.getRange(); - var style = this.getSelectionStyle(); - session.$selectionMarker = session.addMarker(range, "ace_selection", style); - } - else { - this.$updateHighlightActiveLine(); - } - var re = this.$highlightSelectedWord && this.$getSelectionHighLightRegexp(); - this.session.highlight(re); - this._signal("changeSelection"); - }; - Editor.prototype.$getSelectionHighLightRegexp = function () { - var session = this.session; - var selection = this.getSelectionRange(); - if (selection.isEmpty() || selection.isMultiLine()) - return; - var startColumn = selection.start.column; - var endColumn = selection.end.column; - var line = session.getLine(selection.start.row); - var needle = line.substring(startColumn, endColumn); - if (needle.length > 5000 || !/[\w\d]/.test(needle)) - return; - var re = this.$search.$assembleRegExp({ - wholeWord: true, - caseSensitive: true, - needle: needle - }); - var wordWithBoundary = line.substring(startColumn - 1, endColumn + 1); - if (!re.test(wordWithBoundary)) - return; - return re; - }; - Editor.prototype.onChangeFrontMarker = function () { - this.renderer.updateFrontMarkers(); - }; - Editor.prototype.onChangeBackMarker = function () { - this.renderer.updateBackMarkers(); - }; - Editor.prototype.onChangeBreakpoint = function () { - this.renderer.updateBreakpoints(); - }; - Editor.prototype.onChangeAnnotation = function () { - this.renderer.setAnnotations(this.session.getAnnotations()); - }; - Editor.prototype.onChangeMode = function (e) { - this.renderer.updateText(); - this._emit("changeMode", e); - }; - Editor.prototype.onChangeWrapLimit = function () { - this.renderer.updateFull(); - }; - Editor.prototype.onChangeWrapMode = function () { - this.renderer.onResize(true); - }; - Editor.prototype.onChangeFold = function () { - this.$updateHighlightActiveLine(); - this.renderer.updateFull(); - }; - Editor.prototype.getSelectedText = function () { - return this.session.getTextRange(this.getSelectionRange()); - }; - Editor.prototype.getCopyText = function () { - var text = this.getSelectedText(); - var nl = this.session.doc.getNewLineCharacter(); - var copyLine = false; - if (!text && this.$copyWithEmptySelection) { - copyLine = true; - var ranges = this.selection.getAllRanges(); - for (var i = 0; i < ranges.length; i++) { - var range = ranges[i]; - if (i && ranges[i - 1].start.row == range.start.row) - continue; - text += this.session.getLine(range.start.row) + nl; - } - } - var e = { text: text }; - this._signal("copy", e); - clipboard.lineMode = copyLine ? e.text : false; - return e.text; - }; - Editor.prototype.onCopy = function () { - this.commands.exec("copy", this); - }; - Editor.prototype.onCut = function () { - this.commands.exec("cut", this); - }; - Editor.prototype.onPaste = function (text, event) { - var e = { text: text, event: event }; - this.commands.exec("paste", this, e); - }; - Editor.prototype.$handlePaste = function (e) { - if (typeof e == "string") - e = { text: e }; - this._signal("paste", e); - var text = e.text; - var lineMode = text === clipboard.lineMode; - var session = this.session; - if (!this.inMultiSelectMode || this.inVirtualSelectionMode) { - if (lineMode) - session.insert({ row: this.selection.lead.row, column: 0 }, text); - else - this.insert(text); - } - else if (lineMode) { - this.selection.rangeList.ranges.forEach(function (range) { - session.insert({ row: range.start.row, column: 0 }, text); - }); - } - else { - var lines = text.split(/\r\n|\r|\n/); - var ranges = this.selection.rangeList.ranges; - var isFullLine = lines.length == 2 && (!lines[0] || !lines[1]); - if (lines.length != ranges.length || isFullLine) - return this.commands.exec("insertstring", this, text); - for (var i = ranges.length; i--;) { - var range = ranges[i]; - if (!range.isEmpty()) - session.remove(range); - session.insert(range.start, lines[i]); - } - } - }; - Editor.prototype.execCommand = function (command, args) { - return this.commands.exec(command, this, args); - }; - Editor.prototype.insert = function (text, pasted) { - var session = this.session; - var mode = session.getMode(); - var cursor = this.getCursorPosition(); - if (this.getBehavioursEnabled() && !pasted) { - var transform = mode.transformAction(session.getState(cursor.row), 'insertion', this, session, text); - if (transform) { - if (text !== transform.text) { - if (!this.inVirtualSelectionMode) { - this.session.mergeUndoDeltas = false; - this.mergeNextCommand = false; - } - } - text = transform.text; - } - } - if (text == "\t") - text = this.session.getTabString(); - if (!this.selection.isEmpty()) { - var range = this.getSelectionRange(); - cursor = this.session.remove(range); - this.clearSelection(); - } - else if (this.session.getOverwrite() && text.indexOf("\n") == -1) { - var range = new Range.fromPoints(cursor, cursor); - range.end.column += text.length; - this.session.remove(range); - } - if (text == "\n" || text == "\r\n") { - var line = session.getLine(cursor.row); - if (cursor.column > line.search(/\S|$/)) { - var d = line.substr(cursor.column).search(/\S|$/); - session.doc.removeInLine(cursor.row, cursor.column, cursor.column + d); - } - } - this.clearSelection(); - var start = cursor.column; - var lineState = session.getState(cursor.row); - var line = session.getLine(cursor.row); - var shouldOutdent = mode.checkOutdent(lineState, line, text); - session.insert(cursor, text); - if (transform && transform.selection) { - if (transform.selection.length == 2) { // Transform relative to the current column - this.selection.setSelectionRange(new Range(cursor.row, start + transform.selection[0], cursor.row, start + transform.selection[1])); - } - else { // Transform relative to the current row. - this.selection.setSelectionRange(new Range(cursor.row + transform.selection[0], transform.selection[1], cursor.row + transform.selection[2], transform.selection[3])); - } - } - if (this.$enableAutoIndent) { - if (session.getDocument().isNewLine(text)) { - var lineIndent = mode.getNextLineIndent(lineState, line.slice(0, cursor.column), session.getTabString()); - session.insert({ row: cursor.row + 1, column: 0 }, lineIndent); - } - if (shouldOutdent) - mode.autoOutdent(lineState, session, cursor.row); - } - }; - Editor.prototype.autoIndent = function () { - var session = this.session; - var mode = session.getMode(); - var startRow, endRow; - if (this.selection.isEmpty()) { - startRow = 0; - endRow = session.doc.getLength() - 1; - } - else { - var selectedRange = this.getSelectionRange(); - startRow = selectedRange.start.row; - endRow = selectedRange.end.row; - } - var prevLineState = ""; - var prevLine = ""; - var lineIndent = ""; - var line, currIndent, range; - var tab = session.getTabString(); - for (var row = startRow; row <= endRow; row++) { - if (row > 0) { - prevLineState = session.getState(row - 1); - prevLine = session.getLine(row - 1); - lineIndent = mode.getNextLineIndent(prevLineState, prevLine, tab); - } - line = session.getLine(row); - currIndent = mode.$getIndent(line); - if (lineIndent !== currIndent) { - if (currIndent.length > 0) { - range = new Range(row, 0, row, currIndent.length); - session.remove(range); - } - if (lineIndent.length > 0) { - session.insert({ row: row, column: 0 }, lineIndent); - } - } - mode.autoOutdent(prevLineState, session, row); - } - }; - Editor.prototype.onTextInput = function (text, composition) { - if (!composition) - return this.keyBinding.onTextInput(text); - this.startOperation({ command: { name: "insertstring" } }); - var applyComposition = this.applyComposition.bind(this, text, composition); - if (this.selection.rangeCount) - this.forEachSelection(applyComposition); - else - applyComposition(); - this.endOperation(); - }; - Editor.prototype.applyComposition = function (text, composition) { - if (composition.extendLeft || composition.extendRight) { - var r = this.selection.getRange(); - r.start.column -= composition.extendLeft; - r.end.column += composition.extendRight; - if (r.start.column < 0) { - r.start.row--; - r.start.column += this.session.getLine(r.start.row).length + 1; - } - this.selection.setRange(r); - if (!text && !r.isEmpty()) - this.remove(); - } - if (text || !this.selection.isEmpty()) - this.insert(text, true); - if (composition.restoreStart || composition.restoreEnd) { - var r = this.selection.getRange(); - r.start.column -= composition.restoreStart; - r.end.column -= composition.restoreEnd; - this.selection.setRange(r); - } - }; - Editor.prototype.onCommandKey = function (e, hashId, keyCode) { - return this.keyBinding.onCommandKey(e, hashId, keyCode); - }; - Editor.prototype.setOverwrite = function (overwrite) { - this.session.setOverwrite(overwrite); - }; - Editor.prototype.getOverwrite = function () { - return this.session.getOverwrite(); - }; - Editor.prototype.toggleOverwrite = function () { - this.session.toggleOverwrite(); - }; - Editor.prototype.setScrollSpeed = function (speed) { - this.setOption("scrollSpeed", speed); - }; - Editor.prototype.getScrollSpeed = function () { - return this.getOption("scrollSpeed"); - }; - Editor.prototype.setDragDelay = function (dragDelay) { - this.setOption("dragDelay", dragDelay); - }; - Editor.prototype.getDragDelay = function () { - return this.getOption("dragDelay"); - }; - Editor.prototype.setSelectionStyle = function (val) { - this.setOption("selectionStyle", val); - }; - Editor.prototype.getSelectionStyle = function () { - return this.getOption("selectionStyle"); - }; - Editor.prototype.setHighlightActiveLine = function (shouldHighlight) { - this.setOption("highlightActiveLine", shouldHighlight); - }; - Editor.prototype.getHighlightActiveLine = function () { - return this.getOption("highlightActiveLine"); - }; - Editor.prototype.setHighlightGutterLine = function (shouldHighlight) { - this.setOption("highlightGutterLine", shouldHighlight); - }; - Editor.prototype.getHighlightGutterLine = function () { - return this.getOption("highlightGutterLine"); - }; - Editor.prototype.setHighlightSelectedWord = function (shouldHighlight) { - this.setOption("highlightSelectedWord", shouldHighlight); - }; - Editor.prototype.getHighlightSelectedWord = function () { - return this.$highlightSelectedWord; - }; - Editor.prototype.setAnimatedScroll = function (shouldAnimate) { - this.renderer.setAnimatedScroll(shouldAnimate); - }; - Editor.prototype.getAnimatedScroll = function () { - return this.renderer.getAnimatedScroll(); - }; - Editor.prototype.setShowInvisibles = function (showInvisibles) { - this.renderer.setShowInvisibles(showInvisibles); - }; - Editor.prototype.getShowInvisibles = function () { - return this.renderer.getShowInvisibles(); - }; - Editor.prototype.setDisplayIndentGuides = function (display) { - this.renderer.setDisplayIndentGuides(display); - }; - Editor.prototype.getDisplayIndentGuides = function () { - return this.renderer.getDisplayIndentGuides(); - }; - Editor.prototype.setHighlightIndentGuides = function (highlight) { - this.renderer.setHighlightIndentGuides(highlight); - }; - Editor.prototype.getHighlightIndentGuides = function () { - return this.renderer.getHighlightIndentGuides(); - }; - Editor.prototype.setShowPrintMargin = function (showPrintMargin) { - this.renderer.setShowPrintMargin(showPrintMargin); - }; - Editor.prototype.getShowPrintMargin = function () { - return this.renderer.getShowPrintMargin(); - }; - Editor.prototype.setPrintMarginColumn = function (showPrintMargin) { - this.renderer.setPrintMarginColumn(showPrintMargin); - }; - Editor.prototype.getPrintMarginColumn = function () { - return this.renderer.getPrintMarginColumn(); - }; - Editor.prototype.setReadOnly = function (readOnly) { - this.setOption("readOnly", readOnly); - }; - Editor.prototype.getReadOnly = function () { - return this.getOption("readOnly"); - }; - Editor.prototype.setBehavioursEnabled = function (enabled) { - this.setOption("behavioursEnabled", enabled); - }; - Editor.prototype.getBehavioursEnabled = function () { - return this.getOption("behavioursEnabled"); - }; - Editor.prototype.setWrapBehavioursEnabled = function (enabled) { - this.setOption("wrapBehavioursEnabled", enabled); - }; - Editor.prototype.getWrapBehavioursEnabled = function () { - return this.getOption("wrapBehavioursEnabled"); - }; - Editor.prototype.setShowFoldWidgets = function (show) { - this.setOption("showFoldWidgets", show); - }; - Editor.prototype.getShowFoldWidgets = function () { - return this.getOption("showFoldWidgets"); - }; - Editor.prototype.setFadeFoldWidgets = function (fade) { - this.setOption("fadeFoldWidgets", fade); - }; - Editor.prototype.getFadeFoldWidgets = function () { - return this.getOption("fadeFoldWidgets"); - }; - Editor.prototype.remove = function (dir) { - if (this.selection.isEmpty()) { - if (dir == "left") - this.selection.selectLeft(); - else - this.selection.selectRight(); - } - var range = this.getSelectionRange(); - if (this.getBehavioursEnabled()) { - var session = this.session; - var state = session.getState(range.start.row); - var new_range = session.getMode().transformAction(state, 'deletion', this, session, range); - if (range.end.column === 0) { - var text = session.getTextRange(range); - if (text[text.length - 1] == "\n") { - var line = session.getLine(range.end.row); - if (/^\s+$/.test(line)) { - range.end.column = line.length; - } - } - } - if (new_range) - range = new_range; - } - this.session.remove(range); - this.clearSelection(); - }; - Editor.prototype.removeWordRight = function () { - if (this.selection.isEmpty()) - this.selection.selectWordRight(); - this.session.remove(this.getSelectionRange()); - this.clearSelection(); - }; - Editor.prototype.removeWordLeft = function () { - if (this.selection.isEmpty()) - this.selection.selectWordLeft(); - this.session.remove(this.getSelectionRange()); - this.clearSelection(); - }; - Editor.prototype.removeToLineStart = function () { - if (this.selection.isEmpty()) - this.selection.selectLineStart(); - if (this.selection.isEmpty()) - this.selection.selectLeft(); - this.session.remove(this.getSelectionRange()); - this.clearSelection(); - }; - Editor.prototype.removeToLineEnd = function () { - if (this.selection.isEmpty()) - this.selection.selectLineEnd(); - var range = this.getSelectionRange(); - if (range.start.column == range.end.column && range.start.row == range.end.row) { - range.end.column = 0; - range.end.row++; - } - this.session.remove(range); - this.clearSelection(); - }; - Editor.prototype.splitLine = function () { - if (!this.selection.isEmpty()) { - this.session.remove(this.getSelectionRange()); - this.clearSelection(); - } - var cursor = this.getCursorPosition(); - this.insert("\n"); - this.moveCursorToPosition(cursor); - }; - Editor.prototype.setGhostText = function (text, position) { - if (!this.session.widgetManager) { - this.session.widgetManager = new LineWidgets(this.session); - this.session.widgetManager.attach(this); - } - this.renderer.setGhostText(text, position); - }; - Editor.prototype.removeGhostText = function () { - if (!this.session.widgetManager) - return; - this.renderer.removeGhostText(); - }; - Editor.prototype.transposeLetters = function () { - if (!this.selection.isEmpty()) { - return; - } - var cursor = this.getCursorPosition(); - var column = cursor.column; - if (column === 0) - return; - var line = this.session.getLine(cursor.row); - var swap, range; - if (column < line.length) { - swap = line.charAt(column) + line.charAt(column - 1); - range = new Range(cursor.row, column - 1, cursor.row, column + 1); - } - else { - swap = line.charAt(column - 1) + line.charAt(column - 2); - range = new Range(cursor.row, column - 2, cursor.row, column); - } - this.session.replace(range, swap); - this.session.selection.moveToPosition(range.end); - }; - Editor.prototype.toLowerCase = function () { - var originalRange = this.getSelectionRange(); - if (this.selection.isEmpty()) { - this.selection.selectWord(); - } - var range = this.getSelectionRange(); - var text = this.session.getTextRange(range); - this.session.replace(range, text.toLowerCase()); - this.selection.setSelectionRange(originalRange); - }; - Editor.prototype.toUpperCase = function () { - var originalRange = this.getSelectionRange(); - if (this.selection.isEmpty()) { - this.selection.selectWord(); - } - var range = this.getSelectionRange(); - var text = this.session.getTextRange(range); - this.session.replace(range, text.toUpperCase()); - this.selection.setSelectionRange(originalRange); - }; - Editor.prototype.indent = function () { - var session = this.session; - var range = this.getSelectionRange(); - if (range.start.row < range.end.row) { - var rows = this.$getSelectedRows(); - session.indentRows(rows.first, rows.last, "\t"); - return; - } - else if (range.start.column < range.end.column) { - var text = session.getTextRange(range); - if (!/^\s+$/.test(text)) { - var rows = this.$getSelectedRows(); - session.indentRows(rows.first, rows.last, "\t"); - return; - } - } - var line = session.getLine(range.start.row); - var position = range.start; - var size = session.getTabSize(); - var column = session.documentToScreenColumn(position.row, position.column); - if (this.session.getUseSoftTabs()) { - var count = (size - column % size); - var indentString = lang.stringRepeat(" ", count); - } - else { - var count = column % size; - while (line[range.start.column - 1] == " " && count) { - range.start.column--; - count--; - } - this.selection.setSelectionRange(range); - indentString = "\t"; - } - return this.insert(indentString); - }; - Editor.prototype.blockIndent = function () { - var rows = this.$getSelectedRows(); - this.session.indentRows(rows.first, rows.last, "\t"); - }; - Editor.prototype.blockOutdent = function () { - var selection = this.session.getSelection(); - this.session.outdentRows(selection.getRange()); - }; - Editor.prototype.sortLines = function () { - var rows = this.$getSelectedRows(); - var session = this.session; - var lines = []; - for (var i = rows.first; i <= rows.last; i++) - lines.push(session.getLine(i)); - lines.sort(function (a, b) { - if (a.toLowerCase() < b.toLowerCase()) - return -1; - if (a.toLowerCase() > b.toLowerCase()) - return 1; - return 0; - }); - var deleteRange = new Range(0, 0, 0, 0); - for (var i = rows.first; i <= rows.last; i++) { - var line = session.getLine(i); - deleteRange.start.row = i; - deleteRange.end.row = i; - deleteRange.end.column = line.length; - session.replace(deleteRange, lines[i - rows.first]); - } - }; - Editor.prototype.toggleCommentLines = function () { - var state = this.session.getState(this.getCursorPosition().row); - var rows = this.$getSelectedRows(); - this.session.getMode().toggleCommentLines(state, this.session, rows.first, rows.last); - }; - Editor.prototype.toggleBlockComment = function () { - var cursor = this.getCursorPosition(); - var state = this.session.getState(cursor.row); - var range = this.getSelectionRange(); - this.session.getMode().toggleBlockComment(state, this.session, range, cursor); - }; - Editor.prototype.getNumberAt = function (row, column) { - var _numberRx = /[\-]?[0-9]+(?:\.[0-9]+)?/g; - _numberRx.lastIndex = 0; - var s = this.session.getLine(row); - while (_numberRx.lastIndex < column) { - var m = _numberRx.exec(s); - if (m.index <= column && m.index + m[0].length >= column) { - var number = { - value: m[0], - start: m.index, - end: m.index + m[0].length - }; - return number; - } - } - return null; - }; - Editor.prototype.modifyNumber = function (amount) { - var row = this.selection.getCursor().row; - var column = this.selection.getCursor().column; - var charRange = new Range(row, column - 1, row, column); - var c = this.session.getTextRange(charRange); - if (!isNaN(parseFloat(c)) && isFinite(c)) { - var nr = this.getNumberAt(row, column); - if (nr) { - var fp = nr.value.indexOf(".") >= 0 ? nr.start + nr.value.indexOf(".") + 1 : nr.end; - var decimals = nr.start + nr.value.length - fp; - var t = parseFloat(nr.value); - t *= Math.pow(10, decimals); - if (fp !== nr.end && column < fp) { - amount *= Math.pow(10, nr.end - column - 1); - } - else { - amount *= Math.pow(10, nr.end - column); - } - t += amount; - t /= Math.pow(10, decimals); - var nnr = t.toFixed(decimals); - var replaceRange = new Range(row, nr.start, row, nr.end); - this.session.replace(replaceRange, nnr); - this.moveCursorTo(row, Math.max(nr.start + 1, column + nnr.length - nr.value.length)); - } - } - else { - this.toggleWord(); - } - }; - Editor.prototype.toggleWord = function () { - var row = this.selection.getCursor().row; - var column = this.selection.getCursor().column; - this.selection.selectWord(); - var currentState = this.getSelectedText(); - var currWordStart = this.selection.getWordRange().start.column; - var wordParts = currentState.replace(/([a-z]+|[A-Z]+)(?=[A-Z_]|$)/g, '$1 ').split(/\s/); - var delta = column - currWordStart - 1; - if (delta < 0) - delta = 0; - var curLength = 0, itLength = 0; - var that = this; - if (currentState.match(/[A-Za-z0-9_]+/)) { - wordParts.forEach(function (item, i) { - itLength = curLength + item.length; - if (delta >= curLength && delta <= itLength) { - currentState = item; - that.selection.clearSelection(); - that.moveCursorTo(row, curLength + currWordStart); - that.selection.selectTo(row, itLength + currWordStart); - } - curLength = itLength; - }); - } - var wordPairs = this.$toggleWordPairs; - var reg; - for (var i = 0; i < wordPairs.length; i++) { - var item = wordPairs[i]; - for (var j = 0; j <= 1; j++) { - var negate = +!j; - var firstCondition = currentState.match(new RegExp('^\\s?_?(' + lang.escapeRegExp(item[j]) + ')\\s?$', 'i')); - if (firstCondition) { - var secondCondition = currentState.match(new RegExp('([_]|^|\\s)(' + lang.escapeRegExp(firstCondition[1]) + ')($|\\s)', 'g')); - if (secondCondition) { - reg = currentState.replace(new RegExp(lang.escapeRegExp(item[j]), 'i'), function (result) { - var res = item[negate]; - if (result.toUpperCase() == result) { - res = res.toUpperCase(); - } - else if (result.charAt(0).toUpperCase() == result.charAt(0)) { - res = res.substr(0, 0) + item[negate].charAt(0).toUpperCase() + res.substr(1); - } - return res; - }); - this.insert(reg); - reg = ""; - } - } - } - } - }; - Editor.prototype.findLinkAt = function (row, column) { - var e_1, _a; - var line = this.session.getLine(row); - var wordParts = line.split(/((?:https?|ftp):\/\/[\S]+)/); - var columnPosition = column; - if (columnPosition < 0) - columnPosition = 0; - var previousPosition = 0, currentPosition = 0, match; - try { - for (var wordParts_1 = __values(wordParts), wordParts_1_1 = wordParts_1.next(); !wordParts_1_1.done; wordParts_1_1 = wordParts_1.next()) { - var item = wordParts_1_1.value; - currentPosition = previousPosition + item.length; - if (columnPosition >= previousPosition && columnPosition <= currentPosition) { - if (item.match(/((?:https?|ftp):\/\/[\S]+)/)) { - match = item.replace(/[\s:.,'";}\]]+$/, ""); - break; - } - } - previousPosition = currentPosition; - } - } - catch (e_1_1) { e_1 = { error: e_1_1 }; } - finally { - try { - if (wordParts_1_1 && !wordParts_1_1.done && (_a = wordParts_1.return)) _a.call(wordParts_1); - } - finally { if (e_1) throw e_1.error; } - } - return match; - }; - Editor.prototype.openLink = function () { - var cursor = this.selection.getCursor(); - var url = this.findLinkAt(cursor.row, cursor.column); - if (url) - window.open(url, '_blank'); - return url != null; - }; - Editor.prototype.removeLines = function () { - var rows = this.$getSelectedRows(); - this.session.removeFullLines(rows.first, rows.last); - this.clearSelection(); - }; - Editor.prototype.duplicateSelection = function () { - var sel = this.selection; - var doc = this.session; - var range = sel.getRange(); - var reverse = sel.isBackwards(); - if (range.isEmpty()) { - var row = range.start.row; - doc.duplicateLines(row, row); - } - else { - var point = reverse ? range.start : range.end; - var endPoint = doc.insert(point, doc.getTextRange(range), false); - range.start = point; - range.end = endPoint; - sel.setSelectionRange(range, reverse); - } - }; - Editor.prototype.moveLinesDown = function () { - this.$moveLines(1, false); - }; - Editor.prototype.moveLinesUp = function () { - this.$moveLines(-1, false); - }; - Editor.prototype.moveText = function (range, toPosition, copy) { - return this.session.moveText(range, toPosition, copy); - }; - Editor.prototype.copyLinesUp = function () { - this.$moveLines(-1, true); - }; - Editor.prototype.copyLinesDown = function () { - this.$moveLines(1, true); - }; - Editor.prototype.$moveLines = function (dir, copy) { - var rows, moved; - var selection = this.selection; - if (!selection.inMultiSelectMode || this.inVirtualSelectionMode) { - var range = selection.toOrientedRange(); - rows = this.$getSelectedRows(range); - moved = this.session.$moveLines(rows.first, rows.last, copy ? 0 : dir); - if (copy && dir == -1) - moved = 0; - range.moveBy(moved, 0); - selection.fromOrientedRange(range); - } - else { - var ranges = selection.rangeList.ranges; - selection.rangeList.detach(this.session); - this.inVirtualSelectionMode = true; - var diff = 0; - var totalDiff = 0; - var l = ranges.length; - for (var i = 0; i < l; i++) { - var rangeIndex = i; - ranges[i].moveBy(diff, 0); - rows = this.$getSelectedRows(ranges[i]); - var first = rows.first; - var last = rows.last; - while (++i < l) { - if (totalDiff) - ranges[i].moveBy(totalDiff, 0); - var subRows = this.$getSelectedRows(ranges[i]); - if (copy && subRows.first != last) - break; - else if (!copy && subRows.first > last + 1) - break; - last = subRows.last; - } - i--; - diff = this.session.$moveLines(first, last, copy ? 0 : dir); - if (copy && dir == -1) - rangeIndex = i + 1; - while (rangeIndex <= i) { - ranges[rangeIndex].moveBy(diff, 0); - rangeIndex++; - } - if (!copy) - diff = 0; - totalDiff += diff; - } - selection.fromOrientedRange(selection.ranges[0]); - selection.rangeList.attach(this.session); - this.inVirtualSelectionMode = false; - } - }; - Editor.prototype.$getSelectedRows = function (range) { - range = (range || this.getSelectionRange()).collapseRows(); - return { - first: this.session.getRowFoldStart(range.start.row), - last: this.session.getRowFoldEnd(range.end.row) - }; - }; - Editor.prototype.onCompositionStart = function (compositionState) { - this.renderer.showComposition(compositionState); - }; - Editor.prototype.onCompositionUpdate = function (text) { - this.renderer.setCompositionText(text); - }; - Editor.prototype.onCompositionEnd = function () { - this.renderer.hideComposition(); - }; - Editor.prototype.getFirstVisibleRow = function () { - return this.renderer.getFirstVisibleRow(); - }; - Editor.prototype.getLastVisibleRow = function () { - return this.renderer.getLastVisibleRow(); - }; - Editor.prototype.isRowVisible = function (row) { - return (row >= this.getFirstVisibleRow() && row <= this.getLastVisibleRow()); - }; - Editor.prototype.isRowFullyVisible = function (row) { - return (row >= this.renderer.getFirstFullyVisibleRow() && row <= this.renderer.getLastFullyVisibleRow()); - }; - Editor.prototype.$getVisibleRowCount = function () { - return this.renderer.getScrollBottomRow() - this.renderer.getScrollTopRow() + 1; - }; - Editor.prototype.$moveByPage = function (dir, select) { - var renderer = this.renderer; - var config = this.renderer.layerConfig; - var rows = dir * Math.floor(config.height / config.lineHeight); - if (select === true) { - this.selection.$moveSelection(function () { - this.moveCursorBy(rows, 0); - }); - } - else if (select === false) { - this.selection.moveCursorBy(rows, 0); - this.selection.clearSelection(); - } - var scrollTop = renderer.scrollTop; - renderer.scrollBy(0, rows * config.lineHeight); - if (select != null) - renderer.scrollCursorIntoView(null, 0.5); - renderer.animateScrolling(scrollTop); - }; - Editor.prototype.selectPageDown = function () { - this.$moveByPage(1, true); - }; - Editor.prototype.selectPageUp = function () { - this.$moveByPage(-1, true); - }; - Editor.prototype.gotoPageDown = function () { - this.$moveByPage(1, false); - }; - Editor.prototype.gotoPageUp = function () { - this.$moveByPage(-1, false); - }; - Editor.prototype.scrollPageDown = function () { - this.$moveByPage(1); - }; - Editor.prototype.scrollPageUp = function () { - this.$moveByPage(-1); - }; - Editor.prototype.scrollToRow = function (row) { - this.renderer.scrollToRow(row); - }; - Editor.prototype.scrollToLine = function (line, center, animate, callback) { - this.renderer.scrollToLine(line, center, animate, callback); - }; - Editor.prototype.centerSelection = function () { - var range = this.getSelectionRange(); - var pos = { - row: Math.floor(range.start.row + (range.end.row - range.start.row) / 2), - column: Math.floor(range.start.column + (range.end.column - range.start.column) / 2) - }; - this.renderer.alignCursor(pos, 0.5); - }; - Editor.prototype.getCursorPosition = function () { - return this.selection.getCursor(); - }; - Editor.prototype.getCursorPositionScreen = function () { - return this.session.documentToScreenPosition(this.getCursorPosition()); - }; - Editor.prototype.getSelectionRange = function () { - return this.selection.getRange(); - }; - Editor.prototype.selectAll = function () { - this.selection.selectAll(); - }; - Editor.prototype.clearSelection = function () { - this.selection.clearSelection(); - }; - Editor.prototype.moveCursorTo = function (row, column) { - this.selection.moveCursorTo(row, column); - }; - Editor.prototype.moveCursorToPosition = function (pos) { - this.selection.moveCursorToPosition(pos); - }; - Editor.prototype.jumpToMatching = function (select, expand) { - var cursor = this.getCursorPosition(); - var iterator = new TokenIterator(this.session, cursor.row, cursor.column); - var prevToken = iterator.getCurrentToken(); - var tokenCount = 0; - if (prevToken && prevToken.type.indexOf('tag-name') !== -1) { - prevToken = iterator.stepBackward(); - } - var token = prevToken || iterator.stepForward(); - if (!token) - return; - var matchType; - var found = false; - var depth = {}; - var i = cursor.column - token.start; - var bracketType; - var brackets = { - ")": "(", - "(": "(", - "]": "[", - "[": "[", - "{": "{", - "}": "{" - }; - do { - if (token.value.match(/[{}()\[\]]/g)) { - for (; i < token.value.length && !found; i++) { - if (!brackets[token.value[i]]) { - continue; - } - bracketType = brackets[token.value[i]] + '.' + token.type.replace("rparen", "lparen"); - if (isNaN(depth[bracketType])) { - depth[bracketType] = 0; - } - switch (token.value[i]) { - case '(': - case '[': - case '{': - depth[bracketType]++; - break; - case ')': - case ']': - case '}': - depth[bracketType]--; - if (depth[bracketType] === -1) { - matchType = 'bracket'; - found = true; - } - break; - } - } - } - else if (token.type.indexOf('tag-name') !== -1) { - if (isNaN(depth[token.value])) { - depth[token.value] = 0; - } - if (prevToken.value === '<' && tokenCount > 1) { - depth[token.value]++; - } - else if (prevToken.value === '= 0; --i) { - if (this.$tryReplace(ranges[i], replacement)) { - replaced++; - } - } - this.selection.setSelectionRange(selection); - return replaced; - }; - Editor.prototype.$tryReplace = function (range, replacement) { - var input = this.session.getTextRange(range); - replacement = this.$search.replace(input, replacement); - if (replacement !== null) { - range.end = this.session.replace(range, replacement); - return range; - } - else { - return null; - } - }; - Editor.prototype.getLastSearchOptions = function () { - return this.$search.getOptions(); - }; - Editor.prototype.find = function (needle, options, animate) { - if (!options) - options = {}; - if (typeof needle == "string" || needle instanceof RegExp) - options.needle = needle; - else if (typeof needle == "object") - oop.mixin(options, needle); - var range = this.selection.getRange(); - if (options.needle == null) { - needle = this.session.getTextRange(range) - || this.$search.$options.needle; - if (!needle) { - range = this.session.getWordRange(range.start.row, range.start.column); - needle = this.session.getTextRange(range); - } - this.$search.set({ needle: needle }); - } - this.$search.set(options); - if (!options.start) - this.$search.set({ start: range }); - var newRange = this.$search.find(this.session); - if (options.preventScroll) - return newRange; - if (newRange) { - this.revealRange(newRange, animate); - return newRange; - } - if (options.backwards) - range.start = range.end; - else - range.end = range.start; - this.selection.setRange(range); - }; - Editor.prototype.findNext = function (options, animate) { - this.find({ skipCurrent: true, backwards: false }, options, animate); - }; - Editor.prototype.findPrevious = function (options, animate) { - this.find(options, { skipCurrent: true, backwards: true }, animate); - }; - Editor.prototype.revealRange = function (range, animate) { - this.session.unfold(range); - this.selection.setSelectionRange(range); - var scrollTop = this.renderer.scrollTop; - this.renderer.scrollSelectionIntoView(range.start, range.end, 0.5); - if (animate !== false) - this.renderer.animateScrolling(scrollTop); - }; - Editor.prototype.undo = function () { - this.session.getUndoManager().undo(this.session); - this.renderer.scrollCursorIntoView(null, 0.5); - }; - Editor.prototype.redo = function () { - this.session.getUndoManager().redo(this.session); - this.renderer.scrollCursorIntoView(null, 0.5); - }; - Editor.prototype.destroy = function () { - if (this.$toDestroy) { - this.$toDestroy.forEach(function (el) { - el.destroy(); - }); - this.$toDestroy = null; - } - if (this.$mouseHandler) - this.$mouseHandler.destroy(); - this.renderer.destroy(); - this._signal("destroy", this); - if (this.session) - this.session.destroy(); - if (this._$emitInputEvent) - this._$emitInputEvent.cancel(); - this.removeAllListeners(); - }; - Editor.prototype.setAutoScrollEditorIntoView = function (enable) { - if (!enable) - return; - var rect; - var self = this; - var shouldScroll = false; - if (!this.$scrollAnchor) - this.$scrollAnchor = document.createElement("div"); - var scrollAnchor = this.$scrollAnchor; - scrollAnchor.style.cssText = "position:absolute"; - this.container.insertBefore(scrollAnchor, this.container.firstChild); - var onChangeSelection = this.on("changeSelection", function () { - shouldScroll = true; - }); - var onBeforeRender = this.renderer.on("beforeRender", function () { - if (shouldScroll) - rect = self.renderer.container.getBoundingClientRect(); - }); - var onAfterRender = this.renderer.on("afterRender", function () { - if (shouldScroll && rect && (self.isFocused() - || self.searchBox && self.searchBox.isFocused())) { - var renderer = self.renderer; - var pos = renderer.$cursorLayer.$pixelPos; - var config = renderer.layerConfig; - var top = pos.top - config.offset; - if (pos.top >= 0 && top + rect.top < 0) { - shouldScroll = true; - } - else if (pos.top < config.height && - pos.top + rect.top + config.lineHeight > window.innerHeight) { - shouldScroll = false; - } - else { - shouldScroll = null; - } - if (shouldScroll != null) { - scrollAnchor.style.top = top + "px"; - scrollAnchor.style.left = pos.left + "px"; - scrollAnchor.style.height = config.lineHeight + "px"; - scrollAnchor.scrollIntoView(shouldScroll); - } - shouldScroll = rect = null; - } - }); - this.setAutoScrollEditorIntoView = function (enable) { - if (enable) - return; - delete this.setAutoScrollEditorIntoView; - this.off("changeSelection", onChangeSelection); - this.renderer.off("afterRender", onAfterRender); - this.renderer.off("beforeRender", onBeforeRender); - }; - }; - Editor.prototype.$resetCursorStyle = function () { - var style = this.$cursorStyle || "ace"; - var cursorLayer = this.renderer.$cursorLayer; - if (!cursorLayer) - return; - cursorLayer.setSmoothBlinking(/smooth/.test(style)); - cursorLayer.isBlinking = !this.$readOnly && style != "wide"; - dom.setCssClass(cursorLayer.element, "ace_slim-cursors", /slim/.test(style)); - }; - Editor.prototype.prompt = function (message, options, callback) { - var editor = this; - config.loadModule("ace/ext/prompt", function (module) { - module.prompt(editor, message, options, callback); - }); - }; - return Editor; -}()); -Editor.$uid = 0; -Editor.prototype.curOp = null; -Editor.prototype.prevOp = {}; -Editor.prototype.$mergeableCommands = ["backspace", "del", "insertstring"]; -Editor.prototype.$toggleWordPairs = [ - ["first", "last"], - ["true", "false"], - ["yes", "no"], - ["width", "height"], - ["top", "bottom"], - ["right", "left"], - ["on", "off"], - ["x", "y"], - ["get", "set"], - ["max", "min"], - ["horizontal", "vertical"], - ["show", "hide"], - ["add", "remove"], - ["up", "down"], - ["before", "after"], - ["even", "odd"], - ["in", "out"], - ["inside", "outside"], - ["next", "previous"], - ["increase", "decrease"], - ["attach", "detach"], - ["&&", "||"], - ["==", "!="] -]; -oop.implement(Editor.prototype, EventEmitter); -config.defineOptions(Editor.prototype, "editor", { - selectionStyle: { - set: function (style) { - this.onSelectionChange(); - this._signal("changeSelectionStyle", { data: style }); - }, - initialValue: "line" - }, - highlightActiveLine: { - set: function () { this.$updateHighlightActiveLine(); }, - initialValue: true - }, - highlightSelectedWord: { - set: function (shouldHighlight) { this.$onSelectionChange(); }, - initialValue: true - }, - readOnly: { - set: function (readOnly) { - this.textInput.setReadOnly(readOnly); - this.$resetCursorStyle(); - }, - initialValue: false - }, - copyWithEmptySelection: { - set: function (value) { - this.textInput.setCopyWithEmptySelection(value); - }, - initialValue: false - }, - cursorStyle: { - set: function (val) { this.$resetCursorStyle(); }, - values: ["ace", "slim", "smooth", "wide"], - initialValue: "ace" - }, - mergeUndoDeltas: { - values: [false, true, "always"], - initialValue: true - }, - behavioursEnabled: { initialValue: true }, - wrapBehavioursEnabled: { initialValue: true }, - enableAutoIndent: { initialValue: true }, - autoScrollEditorIntoView: { - set: function (val) { this.setAutoScrollEditorIntoView(val); } - }, - keyboardHandler: { - set: function (val) { this.setKeyboardHandler(val); }, - get: function () { return this.$keybindingId; }, - handlesSet: true - }, - value: { - set: function (val) { this.session.setValue(val); }, - get: function () { return this.getValue(); }, - handlesSet: true, - hidden: true - }, - session: { - set: function (val) { this.setSession(val); }, - get: function () { return this.session; }, - handlesSet: true, - hidden: true - }, - showLineNumbers: { - set: function (show) { - this.renderer.$gutterLayer.setShowLineNumbers(show); - this.renderer.$loop.schedule(this.renderer.CHANGE_GUTTER); - if (show && this.$relativeLineNumbers) - relativeNumberRenderer.attach(this); - else - relativeNumberRenderer.detach(this); - }, - initialValue: true - }, - relativeLineNumbers: { - set: function (value) { - if (this.$showLineNumbers && value) - relativeNumberRenderer.attach(this); - else - relativeNumberRenderer.detach(this); - } - }, - placeholder: { - set: function (message) { - if (!this.$updatePlaceholder) { - this.$updatePlaceholder = function () { - var hasValue = this.session && (this.renderer.$composition || - this.session.getLength() > 1 || this.session.getLine(0).length > 0); - if (hasValue && this.renderer.placeholderNode) { - this.renderer.off("afterRender", this.$updatePlaceholder); - dom.removeCssClass(this.container, "ace_hasPlaceholder"); - this.renderer.placeholderNode.remove(); - this.renderer.placeholderNode = null; - } - else if (!hasValue && !this.renderer.placeholderNode) { - this.renderer.on("afterRender", this.$updatePlaceholder); - dom.addCssClass(this.container, "ace_hasPlaceholder"); - var el = dom.createElement("div"); - el.className = "ace_placeholder"; - el.textContent = this.$placeholder || ""; - this.renderer.placeholderNode = el; - this.renderer.content.appendChild(this.renderer.placeholderNode); - } - else if (!hasValue && this.renderer.placeholderNode) { - this.renderer.placeholderNode.textContent = this.$placeholder || ""; - } - }.bind(this); - this.on("input", this.$updatePlaceholder); - } - this.$updatePlaceholder(); - } - }, - enableKeyboardAccessibility: { - set: function (value) { - var blurCommand = { - name: "blurTextInput", - description: "Set focus to the editor content div to allow tabbing through the page", - bindKey: "Esc", - exec: function (editor) { - editor.blur(); - editor.renderer.scroller.focus(); - }, - readOnly: true - }; - var focusOnEnterKeyup = function (e) { - if (e.target == this.renderer.scroller && e.keyCode === keys['enter']) { - e.preventDefault(); - var row = this.getCursorPosition().row; - if (!this.isRowVisible(row)) - this.scrollToLine(row, true, true); - this.focus(); - } - }; - var gutterKeyboardHandler; - if (value) { - this.renderer.enableKeyboardAccessibility = true; - this.renderer.keyboardFocusClassName = "ace_keyboard-focus"; - this.textInput.getElement().setAttribute("tabindex", -1); - this.textInput.setNumberOfExtraLines(useragent.isWin ? 3 : 0); - this.renderer.scroller.setAttribute("tabindex", 0); - this.renderer.scroller.setAttribute("role", "group"); - this.renderer.scroller.setAttribute("aria-roledescription", nls("editor")); - this.renderer.scroller.classList.add(this.renderer.keyboardFocusClassName); - this.renderer.scroller.setAttribute("aria-label", nls("Editor content, press Enter to start editing, press Escape to exit")); - this.renderer.scroller.addEventListener("keyup", focusOnEnterKeyup.bind(this)); - this.commands.addCommand(blurCommand); - this.renderer.$gutter.setAttribute("tabindex", 0); - this.renderer.$gutter.setAttribute("aria-hidden", false); - this.renderer.$gutter.setAttribute("role", "group"); - this.renderer.$gutter.setAttribute("aria-roledescription", nls("editor")); - this.renderer.$gutter.setAttribute("aria-label", nls("Editor gutter, press Enter to interact with controls using arrow keys, press Escape to exit")); - this.renderer.$gutter.classList.add(this.renderer.keyboardFocusClassName); - this.renderer.content.setAttribute("aria-hidden", true); - if (!gutterKeyboardHandler) - gutterKeyboardHandler = new GutterKeyboardHandler(this); - gutterKeyboardHandler.addListener(); - } - else { - this.renderer.enableKeyboardAccessibility = false; - this.textInput.getElement().setAttribute("tabindex", 0); - this.textInput.setNumberOfExtraLines(0); - this.renderer.scroller.setAttribute("tabindex", -1); - this.renderer.scroller.removeAttribute("role"); - this.renderer.scroller.removeAttribute("aria-roledescription"); - this.renderer.scroller.classList.remove(this.renderer.keyboardFocusClassName); - this.renderer.scroller.removeAttribute("aria-label"); - this.renderer.scroller.removeEventListener("keyup", focusOnEnterKeyup.bind(this)); - this.commands.removeCommand(blurCommand); - this.renderer.content.removeAttribute("aria-hidden"); - this.renderer.$gutter.setAttribute("tabindex", -1); - this.renderer.$gutter.setAttribute("aria-hidden", true); - this.renderer.$gutter.removeAttribute("role"); - this.renderer.$gutter.removeAttribute("aria-roledescription"); - this.renderer.$gutter.removeAttribute("aria-label"); - this.renderer.$gutter.classList.remove(this.renderer.keyboardFocusClassName); - if (gutterKeyboardHandler) - gutterKeyboardHandler.removeListener(); - } - }, - initialValue: false - }, - customScrollbar: "renderer", - hScrollBarAlwaysVisible: "renderer", - vScrollBarAlwaysVisible: "renderer", - highlightGutterLine: "renderer", - animatedScroll: "renderer", - showInvisibles: "renderer", - showPrintMargin: "renderer", - printMarginColumn: "renderer", - printMargin: "renderer", - fadeFoldWidgets: "renderer", - showFoldWidgets: "renderer", - displayIndentGuides: "renderer", - highlightIndentGuides: "renderer", - showGutter: "renderer", - fontSize: "renderer", - fontFamily: "renderer", - maxLines: "renderer", - minLines: "renderer", - scrollPastEnd: "renderer", - fixedWidthGutter: "renderer", - theme: "renderer", - hasCssTransforms: "renderer", - maxPixelHeight: "renderer", - useTextareaForIME: "renderer", - useResizeObserver: "renderer", - useSvgGutterIcons: "renderer", - showFoldedAnnotations: "renderer", - scrollSpeed: "$mouseHandler", - dragDelay: "$mouseHandler", - dragEnabled: "$mouseHandler", - focusTimeout: "$mouseHandler", - tooltipFollowsMouse: "$mouseHandler", - firstLineNumber: "session", - overwrite: "session", - newLineMode: "session", - useWorker: "session", - useSoftTabs: "session", - navigateWithinSoftTabs: "session", - tabSize: "session", - wrap: "session", - indentedSoftWrap: "session", - foldStyle: "session", - mode: "session" -}); -var relativeNumberRenderer = { - getText: function (session, row) { - return (Math.abs(session.selection.lead.row - row) || (row + 1 + (row < 9 ? "\xb7" : ""))) + ""; - }, - getWidth: function (session, lastLineNumber, config) { - return Math.max(lastLineNumber.toString().length, (config.lastRow + 1).toString().length, 2) * config.characterWidth; - }, - update: function (e, editor) { - editor.renderer.$loop.schedule(editor.renderer.CHANGE_GUTTER); - }, - attach: function (editor) { - editor.renderer.$gutterLayer.$renderer = this; - editor.on("changeSelection", this.update); - this.update(null, editor); - }, - detach: function (editor) { - if (editor.renderer.$gutterLayer.$renderer == this) - editor.renderer.$gutterLayer.$renderer = null; - editor.off("changeSelection", this.update); - this.update(null, editor); - } -}; -exports.Editor = Editor; - -}); - -ace.define("ace/layer/lines",["require","exports","module","ace/lib/dom"], function(require, exports, module){"use strict"; -var dom = require("../lib/dom"); -var Lines = /** @class */ (function () { - function Lines(element, canvasHeight) { - this.element = element; - this.canvasHeight = canvasHeight || 500000; - this.element.style.height = (this.canvasHeight * 2) + "px"; - this.cells = []; - this.cellCache = []; - this.$offsetCoefficient = 0; - } - Lines.prototype.moveContainer = function (config) { - dom.translate(this.element, 0, -((config.firstRowScreen * config.lineHeight) % this.canvasHeight) - config.offset * this.$offsetCoefficient); - }; - Lines.prototype.pageChanged = function (oldConfig, newConfig) { - return (Math.floor((oldConfig.firstRowScreen * oldConfig.lineHeight) / this.canvasHeight) !== - Math.floor((newConfig.firstRowScreen * newConfig.lineHeight) / this.canvasHeight)); - }; - Lines.prototype.computeLineTop = function (row, config, session) { - var screenTop = config.firstRowScreen * config.lineHeight; - var screenPage = Math.floor(screenTop / this.canvasHeight); - var lineTop = session.documentToScreenRow(row, 0) * config.lineHeight; - return lineTop - (screenPage * this.canvasHeight); - }; - Lines.prototype.computeLineHeight = function (row, config, session) { - return config.lineHeight * session.getRowLineCount(row); - }; - Lines.prototype.getLength = function () { - return this.cells.length; - }; - Lines.prototype.get = function (index) { - return this.cells[index]; - }; - Lines.prototype.shift = function () { - this.$cacheCell(this.cells.shift()); - }; - Lines.prototype.pop = function () { - this.$cacheCell(this.cells.pop()); - }; - Lines.prototype.push = function (cell) { - if (Array.isArray(cell)) { - this.cells.push.apply(this.cells, cell); - var fragment = dom.createFragment(this.element); - for (var i = 0; i < cell.length; i++) { - fragment.appendChild(cell[i].element); - } - this.element.appendChild(fragment); - } - else { - this.cells.push(cell); - this.element.appendChild(cell.element); - } - }; - Lines.prototype.unshift = function (cell) { - if (Array.isArray(cell)) { - this.cells.unshift.apply(this.cells, cell); - var fragment = dom.createFragment(this.element); - for (var i = 0; i < cell.length; i++) { - fragment.appendChild(cell[i].element); - } - if (this.element.firstChild) - this.element.insertBefore(fragment, this.element.firstChild); - else - this.element.appendChild(fragment); - } - else { - this.cells.unshift(cell); - this.element.insertAdjacentElement("afterbegin", cell.element); - } - }; - Lines.prototype.last = function () { - if (this.cells.length) - return this.cells[this.cells.length - 1]; - else - return null; - }; - Lines.prototype.$cacheCell = function (cell) { - if (!cell) - return; - cell.element.remove(); - this.cellCache.push(cell); - }; - Lines.prototype.createCell = function (row, config, session, initElement) { - var cell = this.cellCache.pop(); - if (!cell) { - var element = dom.createElement("div"); - if (initElement) - initElement(element); - this.element.appendChild(element); - cell = { - element: element, - text: "", - row: row - }; - } - cell.row = row; - return cell; - }; - return Lines; -}()); -exports.Lines = Lines; - -}); - -ace.define("ace/layer/gutter",["require","exports","module","ace/lib/dom","ace/lib/oop","ace/lib/lang","ace/lib/event_emitter","ace/layer/lines","ace/config"], function(require, exports, module){"use strict"; -var dom = require("../lib/dom"); -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var EventEmitter = require("../lib/event_emitter").EventEmitter; -var Lines = require("./lines").Lines; -var nls = require("../config").nls; -var Gutter = /** @class */ (function () { - function Gutter(parentEl) { - this.element = dom.createElement("div"); - this.element.className = "ace_layer ace_gutter-layer"; - parentEl.appendChild(this.element); - this.setShowFoldWidgets(this.$showFoldWidgets); - this.gutterWidth = 0; - this.$annotations = []; - this.$updateAnnotations = this.$updateAnnotations.bind(this); - this.$lines = new Lines(this.element); - this.$lines.$offsetCoefficient = 1; - } - Gutter.prototype.setSession = function (session) { - if (this.session) - this.session.off("change", this.$updateAnnotations); - this.session = session; - if (session) - session.on("change", this.$updateAnnotations); - }; - Gutter.prototype.addGutterDecoration = function (row, className) { - if (window.console) - console.warn && console.warn("deprecated use session.addGutterDecoration"); - this.session.addGutterDecoration(row, className); - }; - Gutter.prototype.removeGutterDecoration = function (row, className) { - if (window.console) - console.warn && console.warn("deprecated use session.removeGutterDecoration"); - this.session.removeGutterDecoration(row, className); - }; - Gutter.prototype.setAnnotations = function (annotations) { - this.$annotations = []; - for (var i = 0; i < annotations.length; i++) { - var annotation = annotations[i]; - var row = annotation.row; - var rowInfo = this.$annotations[row]; - if (!rowInfo) - rowInfo = this.$annotations[row] = { text: [], type: [] }; - var annoText = annotation.text; - var annoType = annotation.type; - annoText = annoText ? lang.escapeHTML(annoText) : annotation.html || ""; - if (rowInfo.text.indexOf(annoText) === -1) { - rowInfo.text.push(annoText); - rowInfo.type.push(annoType); - } - var className = annotation.className; - if (className) - rowInfo.className = className; - else if (annoType == "error") - rowInfo.className = " ace_error"; - else if (annoType == "warning" && rowInfo.className != " ace_error") - rowInfo.className = " ace_warning"; - else if (annoType == "info" && (!rowInfo.className)) - rowInfo.className = " ace_info"; - } - }; - Gutter.prototype.$updateAnnotations = function (delta) { - if (!this.$annotations.length) - return; - var firstRow = delta.start.row; - var len = delta.end.row - firstRow; - if (len === 0) { - } - else if (delta.action == 'remove') { - this.$annotations.splice(firstRow, len + 1, null); - } - else { - var args = new Array(len + 1); - args.unshift(firstRow, 1); - this.$annotations.splice.apply(this.$annotations, args); - } - }; - Gutter.prototype.update = function (config) { - this.config = config; - var session = this.session; - var firstRow = config.firstRow; - var lastRow = Math.min(config.lastRow + config.gutterOffset, // needed to compensate for hor scollbar - session.getLength() - 1); - this.oldLastRow = lastRow; - this.config = config; - this.$lines.moveContainer(config); - this.$updateCursorRow(); - var fold = session.getNextFoldLine(firstRow); - var foldStart = fold ? fold.start.row : Infinity; - var cell = null; - var index = -1; - var row = firstRow; - while (true) { - if (row > foldStart) { - row = fold.end.row + 1; - fold = session.getNextFoldLine(row, fold); - foldStart = fold ? fold.start.row : Infinity; - } - if (row > lastRow) { - while (this.$lines.getLength() > index + 1) - this.$lines.pop(); - break; - } - cell = this.$lines.get(++index); - if (cell) { - cell.row = row; - } - else { - cell = this.$lines.createCell(row, config, this.session, onCreateCell); - this.$lines.push(cell); - } - this.$renderCell(cell, config, fold, row); - row++; - } - this._signal("afterRender"); - this.$updateGutterWidth(config); - }; - Gutter.prototype.$updateGutterWidth = function (config) { - var session = this.session; - var gutterRenderer = session.gutterRenderer || this.$renderer; - var firstLineNumber = session.$firstLineNumber; - var lastLineText = this.$lines.last() ? this.$lines.last().text : ""; - if (this.$fixedWidth || session.$useWrapMode) - lastLineText = session.getLength() + firstLineNumber - 1; - var gutterWidth = gutterRenderer - ? gutterRenderer.getWidth(session, lastLineText, config) - : lastLineText.toString().length * config.characterWidth; - var padding = this.$padding || this.$computePadding(); - gutterWidth += padding.left + padding.right; - if (gutterWidth !== this.gutterWidth && !isNaN(gutterWidth)) { - this.gutterWidth = gutterWidth; - this.element.parentNode.style.width = - this.element.style.width = Math.ceil(this.gutterWidth) + "px"; - this._signal("changeGutterWidth", gutterWidth); - } - }; - Gutter.prototype.$updateCursorRow = function () { - if (!this.$highlightGutterLine) - return; - var position = this.session.selection.getCursor(); - if (this.$cursorRow === position.row) - return; - this.$cursorRow = position.row; - }; - Gutter.prototype.updateLineHighlight = function () { - if (!this.$highlightGutterLine) - return; - var row = this.session.selection.cursor.row; - this.$cursorRow = row; - if (this.$cursorCell && this.$cursorCell.row == row) - return; - if (this.$cursorCell) - this.$cursorCell.element.className = this.$cursorCell.element.className.replace("ace_gutter-active-line ", ""); - var cells = this.$lines.cells; - this.$cursorCell = null; - for (var i = 0; i < cells.length; i++) { - var cell = cells[i]; - if (cell.row >= this.$cursorRow) { - if (cell.row > this.$cursorRow) { - var fold = this.session.getFoldLine(this.$cursorRow); - if (i > 0 && fold && fold.start.row == cells[i - 1].row) - cell = cells[i - 1]; - else - break; - } - cell.element.className = "ace_gutter-active-line " + cell.element.className; - this.$cursorCell = cell; - break; - } - } - }; - Gutter.prototype.scrollLines = function (config) { - var oldConfig = this.config; - this.config = config; - this.$updateCursorRow(); - if (this.$lines.pageChanged(oldConfig, config)) - return this.update(config); - this.$lines.moveContainer(config); - var lastRow = Math.min(config.lastRow + config.gutterOffset, // needed to compensate for hor scollbar - this.session.getLength() - 1); - var oldLastRow = this.oldLastRow; - this.oldLastRow = lastRow; - if (!oldConfig || oldLastRow < config.firstRow) - return this.update(config); - if (lastRow < oldConfig.firstRow) - return this.update(config); - if (oldConfig.firstRow < config.firstRow) - for (var row = this.session.getFoldedRowCount(oldConfig.firstRow, config.firstRow - 1); row > 0; row--) - this.$lines.shift(); - if (oldLastRow > lastRow) - for (var row = this.session.getFoldedRowCount(lastRow + 1, oldLastRow); row > 0; row--) - this.$lines.pop(); - if (config.firstRow < oldConfig.firstRow) { - this.$lines.unshift(this.$renderLines(config, config.firstRow, oldConfig.firstRow - 1)); - } - if (lastRow > oldLastRow) { - this.$lines.push(this.$renderLines(config, oldLastRow + 1, lastRow)); - } - this.updateLineHighlight(); - this._signal("afterRender"); - this.$updateGutterWidth(config); - }; - Gutter.prototype.$renderLines = function (config, firstRow, lastRow) { - var fragment = []; - var row = firstRow; - var foldLine = this.session.getNextFoldLine(row); - var foldStart = foldLine ? foldLine.start.row : Infinity; - while (true) { - if (row > foldStart) { - row = foldLine.end.row + 1; - foldLine = this.session.getNextFoldLine(row, foldLine); - foldStart = foldLine ? foldLine.start.row : Infinity; - } - if (row > lastRow) - break; - var cell = this.$lines.createCell(row, config, this.session, onCreateCell); - this.$renderCell(cell, config, foldLine, row); - fragment.push(cell); - row++; - } - return fragment; - }; - Gutter.prototype.$renderCell = function (cell, config, fold, row) { - var element = cell.element; - var session = this.session; - var textNode = element.childNodes[0]; - var foldWidget = element.childNodes[1]; - var annotationNode = element.childNodes[2]; - var annotationIconNode = annotationNode.firstChild; - var firstLineNumber = session.$firstLineNumber; - var breakpoints = session.$breakpoints; - var decorations = session.$decorations; - var gutterRenderer = session.gutterRenderer || this.$renderer; - var foldWidgets = this.$showFoldWidgets && session.foldWidgets; - var foldStart = fold ? fold.start.row : Number.MAX_VALUE; - var lineHeight = config.lineHeight + "px"; - var className = this.$useSvgGutterIcons ? "ace_gutter-cell_svg-icons " : "ace_gutter-cell "; - var iconClassName = this.$useSvgGutterIcons ? "ace_icon_svg" : "ace_icon"; - var rowText = (gutterRenderer - ? gutterRenderer.getText(session, row) - : row + firstLineNumber).toString(); - if (this.$highlightGutterLine) { - if (row == this.$cursorRow || (fold && row < this.$cursorRow && row >= foldStart && this.$cursorRow <= fold.end.row)) { - className += "ace_gutter-active-line "; - if (this.$cursorCell != cell) { - if (this.$cursorCell) - this.$cursorCell.element.className = this.$cursorCell.element.className.replace("ace_gutter-active-line ", ""); - this.$cursorCell = cell; - } - } - } - if (breakpoints[row]) - className += breakpoints[row]; - if (decorations[row]) - className += decorations[row]; - if (this.$annotations[row] && row !== foldStart) - className += this.$annotations[row].className; - if (foldWidgets) { - var c = foldWidgets[row]; - if (c == null) - c = foldWidgets[row] = session.getFoldWidget(row); - } - if (c) { - var foldClass = "ace_fold-widget ace_" + c; - var isClosedFold = c == "start" && row == foldStart && row < fold.end.row; - if (isClosedFold) { - foldClass += " ace_closed"; - var foldAnnotationClass = ''; - var annotationInFold = false; - for (var i = row + 1; i <= fold.end.row; i++) { - if (!this.$annotations[i]) - continue; - if (this.$annotations[i].className === " ace_error") { - annotationInFold = true; - foldAnnotationClass = " ace_error_fold"; - break; - } - if (this.$annotations[i].className === " ace_warning") { - annotationInFold = true; - foldAnnotationClass = " ace_warning_fold"; - continue; - } - } - className += foldAnnotationClass; - } - else - foldClass += " ace_open"; - if (foldWidget.className != foldClass) - foldWidget.className = foldClass; - dom.setStyle(foldWidget.style, "height", lineHeight); - dom.setStyle(foldWidget.style, "display", "inline-block"); - foldWidget.setAttribute("role", "button"); - foldWidget.setAttribute("tabindex", "-1"); - var foldRange = session.getFoldWidgetRange(row); - if (foldRange) - foldWidget.setAttribute("aria-label", nls("Toggle code folding, rows $0 through $1", [foldRange.start.row + 1, foldRange.end.row + 1])); - else { - if (fold) - foldWidget.setAttribute("aria-label", nls("Toggle code folding, rows $0 through $1", [fold.start.row + 1, fold.end.row + 1])); - else - foldWidget.setAttribute("aria-label", nls("Toggle code folding, row $0", [row + 1])); - } - if (isClosedFold) { - foldWidget.setAttribute("aria-expanded", "false"); - foldWidget.setAttribute("title", nls("Unfold code")); - } - else { - foldWidget.setAttribute("aria-expanded", "true"); - foldWidget.setAttribute("title", nls("Fold code")); - } - } - else { - if (foldWidget) { - dom.setStyle(foldWidget.style, "display", "none"); - foldWidget.setAttribute("tabindex", "0"); - foldWidget.removeAttribute("role"); - foldWidget.removeAttribute("aria-label"); - } - } - if (annotationInFold && this.$showFoldedAnnotations) { - annotationNode.className = "ace_gutter_annotation"; - annotationIconNode.className = iconClassName; - annotationIconNode.className += foldAnnotationClass; - dom.setStyle(annotationIconNode.style, "height", lineHeight); - dom.setStyle(annotationNode.style, "display", "block"); - dom.setStyle(annotationNode.style, "height", lineHeight); - annotationNode.setAttribute("aria-label", nls("Read annotations row $0", [rowText])); - annotationNode.setAttribute("tabindex", "-1"); - annotationNode.setAttribute("role", "button"); - } - else if (this.$annotations[row]) { - annotationNode.className = "ace_gutter_annotation"; - annotationIconNode.className = iconClassName; - if (this.$useSvgGutterIcons) - annotationIconNode.className += this.$annotations[row].className; - else - element.classList.add(this.$annotations[row].className.replace(" ", "")); - dom.setStyle(annotationIconNode.style, "height", lineHeight); - dom.setStyle(annotationNode.style, "display", "block"); - dom.setStyle(annotationNode.style, "height", lineHeight); - annotationNode.setAttribute("aria-label", nls("Read annotations row $0", [rowText])); - annotationNode.setAttribute("tabindex", "-1"); - annotationNode.setAttribute("role", "button"); - } - else { - dom.setStyle(annotationNode.style, "display", "none"); - annotationNode.removeAttribute("aria-label"); - annotationNode.removeAttribute("role"); - annotationNode.setAttribute("tabindex", "0"); - } - if (rowText !== textNode.data) { - textNode.data = rowText; - } - if (element.className != className) - element.className = className; - dom.setStyle(cell.element.style, "height", this.$lines.computeLineHeight(row, config, session) + "px"); - dom.setStyle(cell.element.style, "top", this.$lines.computeLineTop(row, config, session) + "px"); - cell.text = rowText; - if (annotationNode.style.display === "none" && foldWidget.style.display === "none") - cell.element.setAttribute("aria-hidden", true); - else - cell.element.setAttribute("aria-hidden", false); - return cell; - }; - Gutter.prototype.setHighlightGutterLine = function (highlightGutterLine) { - this.$highlightGutterLine = highlightGutterLine; - }; - Gutter.prototype.setShowLineNumbers = function (show) { - this.$renderer = !show && { - getWidth: function () { return 0; }, - getText: function () { return ""; } - }; - }; - Gutter.prototype.getShowLineNumbers = function () { - return this.$showLineNumbers; - }; - Gutter.prototype.setShowFoldWidgets = function (show) { - if (show) - dom.addCssClass(this.element, "ace_folding-enabled"); - else - dom.removeCssClass(this.element, "ace_folding-enabled"); - this.$showFoldWidgets = show; - this.$padding = null; - }; - Gutter.prototype.getShowFoldWidgets = function () { - return this.$showFoldWidgets; - }; - Gutter.prototype.$computePadding = function () { - if (!this.element.firstChild) - return { left: 0, right: 0 }; - var style = dom.computedStyle(this.element.firstChild); - this.$padding = {}; - this.$padding.left = (parseInt(style.borderLeftWidth) || 0) - + (parseInt(style.paddingLeft) || 0) + 1; - this.$padding.right = (parseInt(style.borderRightWidth) || 0) - + (parseInt(style.paddingRight) || 0); - return this.$padding; - }; - Gutter.prototype.getRegion = function (point) { - var padding = this.$padding || this.$computePadding(); - var rect = this.element.getBoundingClientRect(); - if (point.x < padding.left + rect.left) - return "markers"; - if (this.$showFoldWidgets && point.x > rect.right - padding.right) - return "foldWidgets"; - }; - return Gutter; -}()); -Gutter.prototype.$fixedWidth = false; -Gutter.prototype.$highlightGutterLine = true; -Gutter.prototype.$renderer = ""; -Gutter.prototype.$showLineNumbers = true; -Gutter.prototype.$showFoldWidgets = true; -oop.implement(Gutter.prototype, EventEmitter); -function onCreateCell(element) { - var textNode = document.createTextNode(''); - element.appendChild(textNode); - var foldWidget = dom.createElement("span"); - element.appendChild(foldWidget); - var annotationNode = dom.createElement("span"); - element.appendChild(annotationNode); - var annotationIconNode = dom.createElement("span"); - annotationNode.appendChild(annotationIconNode); - return element; -} -exports.Gutter = Gutter; - -}); - -ace.define("ace/layer/marker",["require","exports","module","ace/range","ace/lib/dom"], function(require, exports, module){"use strict"; -var Range = require("../range").Range; -var dom = require("../lib/dom"); -var Marker = /** @class */ (function () { - function Marker(parentEl) { - this.element = dom.createElement("div"); - this.element.className = "ace_layer ace_marker-layer"; - parentEl.appendChild(this.element); - } - Marker.prototype.setPadding = function (padding) { - this.$padding = padding; - }; - Marker.prototype.setSession = function (session) { - this.session = session; - }; - Marker.prototype.setMarkers = function (markers) { - this.markers = markers; - }; - Marker.prototype.elt = function (className, css) { - var x = this.i != -1 && this.element.childNodes[this.i]; - if (!x) { - x = document.createElement("div"); - this.element.appendChild(x); - this.i = -1; - } - else { - this.i++; - } - x.style.cssText = css; - x.className = className; - }; - Marker.prototype.update = function (config) { - if (!config) - return; - this.config = config; - this.i = 0; - var html; - for (var key in this.markers) { - var marker = this.markers[key]; - if (!marker.range) { - marker.update(html, this, this.session, config); - continue; - } - var range = marker.range.clipRows(config.firstRow, config.lastRow); - if (range.isEmpty()) - continue; - range = range.toScreenRange(this.session); - if (marker.renderer) { - var top = this.$getTop(range.start.row, config); - var left = this.$padding + range.start.column * config.characterWidth; - marker.renderer(html, range, left, top, config); - } - else if (marker.type == "fullLine") { - this.drawFullLineMarker(html, range, marker.clazz, config); - } - else if (marker.type == "screenLine") { - this.drawScreenLineMarker(html, range, marker.clazz, config); - } - else if (range.isMultiLine()) { - if (marker.type == "text") - this.drawTextMarker(html, range, marker.clazz, config); - else - this.drawMultiLineMarker(html, range, marker.clazz, config); - } - else { - this.drawSingleLineMarker(html, range, marker.clazz + " ace_start" + " ace_br15", config); - } - } - if (this.i != -1) { - while (this.i < this.element.childElementCount) - this.element.removeChild(this.element.lastChild); - } - }; - Marker.prototype.$getTop = function (row, layerConfig) { - return (row - layerConfig.firstRowScreen) * layerConfig.lineHeight; - }; - Marker.prototype.drawTextMarker = function (stringBuilder, range, clazz, layerConfig, extraStyle) { - var session = this.session; - var start = range.start.row; - var end = range.end.row; - var row = start; - var prev = 0; - var curr = 0; - var next = session.getScreenLastRowColumn(row); - var lineRange = new Range(row, range.start.column, row, curr); - for (; row <= end; row++) { - lineRange.start.row = lineRange.end.row = row; - lineRange.start.column = row == start ? range.start.column : session.getRowWrapIndent(row); - lineRange.end.column = next; - prev = curr; - curr = next; - next = row + 1 < end ? session.getScreenLastRowColumn(row + 1) : row == end ? 0 : range.end.column; - this.drawSingleLineMarker(stringBuilder, lineRange, clazz + (row == start ? " ace_start" : "") + " ace_br" - + getBorderClass(row == start || row == start + 1 && range.start.column, prev < curr, curr > next, row == end), layerConfig, row == end ? 0 : 1, extraStyle); - } - }; - Marker.prototype.drawMultiLineMarker = function (stringBuilder, range, clazz, config, extraStyle) { - var padding = this.$padding; - var height = config.lineHeight; - var top = this.$getTop(range.start.row, config); - var left = padding + range.start.column * config.characterWidth; - extraStyle = extraStyle || ""; - if (this.session.$bidiHandler.isBidiRow(range.start.row)) { - var range1 = range.clone(); - range1.end.row = range1.start.row; - range1.end.column = this.session.getLine(range1.start.row).length; - this.drawBidiSingleLineMarker(stringBuilder, range1, clazz + " ace_br1 ace_start", config, null, extraStyle); - } - else { - this.elt(clazz + " ace_br1 ace_start", "height:" + height + "px;" + "right:0;" + "top:" + top + "px;left:" + left + "px;" + (extraStyle || "")); - } - if (this.session.$bidiHandler.isBidiRow(range.end.row)) { - var range1 = range.clone(); - range1.start.row = range1.end.row; - range1.start.column = 0; - this.drawBidiSingleLineMarker(stringBuilder, range1, clazz + " ace_br12", config, null, extraStyle); - } - else { - top = this.$getTop(range.end.row, config); - var width = range.end.column * config.characterWidth; - this.elt(clazz + " ace_br12", "height:" + height + "px;" + - "width:" + width + "px;" + - "top:" + top + "px;" + - "left:" + padding + "px;" + (extraStyle || "")); - } - height = (range.end.row - range.start.row - 1) * config.lineHeight; - if (height <= 0) - return; - top = this.$getTop(range.start.row + 1, config); - var radiusClass = (range.start.column ? 1 : 0) | (range.end.column ? 0 : 8); - this.elt(clazz + (radiusClass ? " ace_br" + radiusClass : ""), "height:" + height + "px;" + - "right:0;" + - "top:" + top + "px;" + - "left:" + padding + "px;" + (extraStyle || "")); - }; - Marker.prototype.drawSingleLineMarker = function (stringBuilder, range, clazz, config, extraLength, extraStyle) { - if (this.session.$bidiHandler.isBidiRow(range.start.row)) - return this.drawBidiSingleLineMarker(stringBuilder, range, clazz, config, extraLength, extraStyle); - var height = config.lineHeight; - var width = (range.end.column + (extraLength || 0) - range.start.column) * config.characterWidth; - var top = this.$getTop(range.start.row, config); - var left = this.$padding + range.start.column * config.characterWidth; - this.elt(clazz, "height:" + height + "px;" + - "width:" + width + "px;" + - "top:" + top + "px;" + - "left:" + left + "px;" + (extraStyle || "")); - }; - Marker.prototype.drawBidiSingleLineMarker = function (stringBuilder, range, clazz, config, extraLength, extraStyle) { - var height = config.lineHeight, top = this.$getTop(range.start.row, config), padding = this.$padding; - var selections = this.session.$bidiHandler.getSelections(range.start.column, range.end.column); - selections.forEach(function (selection) { - this.elt(clazz, "height:" + height + "px;" + - "width:" + (selection.width + (extraLength || 0)) + "px;" + - "top:" + top + "px;" + - "left:" + (padding + selection.left) + "px;" + (extraStyle || "")); - }, this); - }; - Marker.prototype.drawFullLineMarker = function (stringBuilder, range, clazz, config, extraStyle) { - var top = this.$getTop(range.start.row, config); - var height = config.lineHeight; - if (range.start.row != range.end.row) - height += this.$getTop(range.end.row, config) - top; - this.elt(clazz, "height:" + height + "px;" + - "top:" + top + "px;" + - "left:0;right:0;" + (extraStyle || "")); - }; - Marker.prototype.drawScreenLineMarker = function (stringBuilder, range, clazz, config, extraStyle) { - var top = this.$getTop(range.start.row, config); - var height = config.lineHeight; - this.elt(clazz, "height:" + height + "px;" + - "top:" + top + "px;" + - "left:0;right:0;" + (extraStyle || "")); - }; - return Marker; -}()); -Marker.prototype.$padding = 0; -function getBorderClass(tl, tr, br, bl) { - return (tl ? 1 : 0) | (tr ? 2 : 0) | (br ? 4 : 0) | (bl ? 8 : 0); -} -exports.Marker = Marker; - -}); - -ace.define("ace/layer/text_util",["require","exports","module"], function(require, exports, module){// Tokens for which Ace just uses a simple TextNode and does not add any special className. -var textTokens = new Set(["text", "rparen", "lparen"]); -exports.isTextToken = function (tokenType) { - return textTokens.has(tokenType); -}; - -}); - -ace.define("ace/layer/text",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/layer/lines","ace/lib/event_emitter","ace/config","ace/layer/text_util"], function(require, exports, module){"use strict"; -var oop = require("../lib/oop"); -var dom = require("../lib/dom"); -var lang = require("../lib/lang"); -var Lines = require("./lines").Lines; -var EventEmitter = require("../lib/event_emitter").EventEmitter; -var nls = require("../config").nls; -var isTextToken = require("./text_util").isTextToken; -var Text = /** @class */ (function () { - function Text(parentEl) { - this.dom = dom; - this.element = this.dom.createElement("div"); - this.element.className = "ace_layer ace_text-layer"; - parentEl.appendChild(this.element); - this.$updateEolChar = this.$updateEolChar.bind(this); - this.$lines = new Lines(this.element); - } - Text.prototype.$updateEolChar = function () { - var doc = this.session.doc; - var unixMode = doc.getNewLineCharacter() == "\n" && doc.getNewLineMode() != "windows"; - var EOL_CHAR = unixMode ? this.EOL_CHAR_LF : this.EOL_CHAR_CRLF; - if (this.EOL_CHAR != EOL_CHAR) { - this.EOL_CHAR = EOL_CHAR; - return true; - } - }; - Text.prototype.setPadding = function (padding) { - this.$padding = padding; - this.element.style.margin = "0 " + padding + "px"; - }; - Text.prototype.getLineHeight = function () { - return this.$fontMetrics.$characterSize.height || 0; - }; - Text.prototype.getCharacterWidth = function () { - return this.$fontMetrics.$characterSize.width || 0; - }; - Text.prototype.$setFontMetrics = function (measure) { - this.$fontMetrics = measure; - this.$fontMetrics.on("changeCharacterSize", function (e) { - this._signal("changeCharacterSize", e); - }.bind(this)); - this.$pollSizeChanges(); - }; - Text.prototype.checkForSizeChanges = function () { - this.$fontMetrics.checkForSizeChanges(); - }; - Text.prototype.$pollSizeChanges = function () { - return this.$pollSizeChangesTimer = this.$fontMetrics.$pollSizeChanges(); - }; - Text.prototype.setSession = function (session) { - this.session = session; - if (session) - this.$computeTabString(); - }; - Text.prototype.setShowInvisibles = function (showInvisibles) { - if (this.showInvisibles == showInvisibles) - return false; - this.showInvisibles = showInvisibles; - if (typeof showInvisibles == "string") { - this.showSpaces = /tab/i.test(showInvisibles); - this.showTabs = /space/i.test(showInvisibles); - this.showEOL = /eol/i.test(showInvisibles); - } - else { - this.showSpaces = this.showTabs = this.showEOL = showInvisibles; - } - this.$computeTabString(); - return true; - }; - Text.prototype.setDisplayIndentGuides = function (display) { - if (this.displayIndentGuides == display) - return false; - this.displayIndentGuides = display; - this.$computeTabString(); - return true; - }; - Text.prototype.setHighlightIndentGuides = function (highlight) { - if (this.$highlightIndentGuides === highlight) - return false; - this.$highlightIndentGuides = highlight; - return highlight; - }; - Text.prototype.$computeTabString = function () { - var tabSize = this.session.getTabSize(); - this.tabSize = tabSize; - var tabStr = this.$tabStrings = [0]; - for (var i = 1; i < tabSize + 1; i++) { - if (this.showTabs) { - var span = this.dom.createElement("span"); - span.className = "ace_invisible ace_invisible_tab"; - span.textContent = lang.stringRepeat(this.TAB_CHAR, i); - tabStr.push(span); - } - else { - tabStr.push(this.dom.createTextNode(lang.stringRepeat(" ", i), this.element)); - } - } - if (this.displayIndentGuides) { - this.$indentGuideRe = /\s\S| \t|\t |\s$/; - var className = "ace_indent-guide"; - var spaceClass = this.showSpaces ? " ace_invisible ace_invisible_space" : ""; - var spaceContent = this.showSpaces - ? lang.stringRepeat(this.SPACE_CHAR, this.tabSize) - : lang.stringRepeat(" ", this.tabSize); - var tabClass = this.showTabs ? " ace_invisible ace_invisible_tab" : ""; - var tabContent = this.showTabs - ? lang.stringRepeat(this.TAB_CHAR, this.tabSize) - : spaceContent; - var span = this.dom.createElement("span"); - span.className = className + spaceClass; - span.textContent = spaceContent; - this.$tabStrings[" "] = span; - var span = this.dom.createElement("span"); - span.className = className + tabClass; - span.textContent = tabContent; - this.$tabStrings["\t"] = span; - } - }; - Text.prototype.updateLines = function (config, firstRow, lastRow) { - if (this.config.lastRow != config.lastRow || - this.config.firstRow != config.firstRow) { - return this.update(config); - } - this.config = config; - var first = Math.max(firstRow, config.firstRow); - var last = Math.min(lastRow, config.lastRow); - var lineElements = this.element.childNodes; - var lineElementsIdx = 0; - for (var row = config.firstRow; row < first; row++) { - var foldLine = this.session.getFoldLine(row); - if (foldLine) { - if (foldLine.containsRow(first)) { - first = foldLine.start.row; - break; - } - else { - row = foldLine.end.row; - } - } - lineElementsIdx++; - } - var heightChanged = false; - var row = first; - var foldLine = this.session.getNextFoldLine(row); - var foldStart = foldLine ? foldLine.start.row : Infinity; - while (true) { - if (row > foldStart) { - row = foldLine.end.row + 1; - foldLine = this.session.getNextFoldLine(row, foldLine); - foldStart = foldLine ? foldLine.start.row : Infinity; - } - if (row > last) - break; - var lineElement = lineElements[lineElementsIdx++]; - if (lineElement) { - this.dom.removeChildren(lineElement); - this.$renderLine(lineElement, row, row == foldStart ? foldLine : false); - if (heightChanged) - lineElement.style.top = this.$lines.computeLineTop(row, config, this.session) + "px"; - var height = (config.lineHeight * this.session.getRowLength(row)) + "px"; - if (lineElement.style.height != height) { - heightChanged = true; - lineElement.style.height = height; - } - } - row++; - } - if (heightChanged) { - while (lineElementsIdx < this.$lines.cells.length) { - var cell = this.$lines.cells[lineElementsIdx++]; - cell.element.style.top = this.$lines.computeLineTop(cell.row, config, this.session) + "px"; - } - } - }; - Text.prototype.scrollLines = function (config) { - var oldConfig = this.config; - this.config = config; - if (this.$lines.pageChanged(oldConfig, config)) - return this.update(config); - this.$lines.moveContainer(config); - var lastRow = config.lastRow; - var oldLastRow = oldConfig ? oldConfig.lastRow : -1; - if (!oldConfig || oldLastRow < config.firstRow) - return this.update(config); - if (lastRow < oldConfig.firstRow) - return this.update(config); - if (!oldConfig || oldConfig.lastRow < config.firstRow) - return this.update(config); - if (config.lastRow < oldConfig.firstRow) - return this.update(config); - if (oldConfig.firstRow < config.firstRow) - for (var row = this.session.getFoldedRowCount(oldConfig.firstRow, config.firstRow - 1); row > 0; row--) - this.$lines.shift(); - if (oldConfig.lastRow > config.lastRow) - for (var row = this.session.getFoldedRowCount(config.lastRow + 1, oldConfig.lastRow); row > 0; row--) - this.$lines.pop(); - if (config.firstRow < oldConfig.firstRow) { - this.$lines.unshift(this.$renderLinesFragment(config, config.firstRow, oldConfig.firstRow - 1)); - } - if (config.lastRow > oldConfig.lastRow) { - this.$lines.push(this.$renderLinesFragment(config, oldConfig.lastRow + 1, config.lastRow)); - } - this.$highlightIndentGuide(); - }; - Text.prototype.$renderLinesFragment = function (config, firstRow, lastRow) { - var fragment = []; - var row = firstRow; - var foldLine = this.session.getNextFoldLine(row); - var foldStart = foldLine ? foldLine.start.row : Infinity; - while (true) { - if (row > foldStart) { - row = foldLine.end.row + 1; - foldLine = this.session.getNextFoldLine(row, foldLine); - foldStart = foldLine ? foldLine.start.row : Infinity; - } - if (row > lastRow) - break; - var line = this.$lines.createCell(row, config, this.session); - var lineEl = line.element; - this.dom.removeChildren(lineEl); - dom.setStyle(lineEl.style, "height", this.$lines.computeLineHeight(row, config, this.session) + "px"); - dom.setStyle(lineEl.style, "top", this.$lines.computeLineTop(row, config, this.session) + "px"); - this.$renderLine(lineEl, row, row == foldStart ? foldLine : false); - if (this.$useLineGroups()) { - lineEl.className = "ace_line_group"; - } - else { - lineEl.className = "ace_line"; - } - fragment.push(line); - row++; - } - return fragment; - }; - Text.prototype.update = function (config) { - this.$lines.moveContainer(config); - this.config = config; - var firstRow = config.firstRow; - var lastRow = config.lastRow; - var lines = this.$lines; - while (lines.getLength()) - lines.pop(); - lines.push(this.$renderLinesFragment(config, firstRow, lastRow)); - }; - Text.prototype.$renderToken = function (parent, screenColumn, token, value) { - var self = this; - var re = /(\t)|( +)|([\x00-\x1f\x80-\xa0\xad\u1680\u180E\u2000-\u200f\u2028\u2029\u202F\u205F\uFEFF\uFFF9-\uFFFC\u2066\u2067\u2068\u202A\u202B\u202D\u202E\u202C\u2069]+)|(\u3000)|([\u1100-\u115F\u11A3-\u11A7\u11FA-\u11FF\u2329-\u232A\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u2FF0-\u2FFB\u3001-\u303E\u3041-\u3096\u3099-\u30FF\u3105-\u312D\u3131-\u318E\u3190-\u31BA\u31C0-\u31E3\u31F0-\u321E\u3220-\u3247\u3250-\u32FE\u3300-\u4DBF\u4E00-\uA48C\uA490-\uA4C6\uA960-\uA97C\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFAFF\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE66\uFE68-\uFE6B\uFF01-\uFF60\uFFE0-\uFFE6]|[\uD800-\uDBFF][\uDC00-\uDFFF])/g; - var valueFragment = this.dom.createFragment(this.element); - var m; - var i = 0; - while (m = re.exec(value)) { - var tab = m[1]; - var simpleSpace = m[2]; - var controlCharacter = m[3]; - var cjkSpace = m[4]; - var cjk = m[5]; - if (!self.showSpaces && simpleSpace) - continue; - var before = i != m.index ? value.slice(i, m.index) : ""; - i = m.index + m[0].length; - if (before) { - valueFragment.appendChild(this.dom.createTextNode(before, this.element)); - } - if (tab) { - var tabSize = self.session.getScreenTabSize(screenColumn + m.index); - valueFragment.appendChild(self.$tabStrings[tabSize].cloneNode(true)); - screenColumn += tabSize - 1; - } - else if (simpleSpace) { - if (self.showSpaces) { - var span = this.dom.createElement("span"); - span.className = "ace_invisible ace_invisible_space"; - span.textContent = lang.stringRepeat(self.SPACE_CHAR, simpleSpace.length); - valueFragment.appendChild(span); - } - else { - valueFragment.appendChild(this.dom.createTextNode(simpleSpace, this.element)); - } - } - else if (controlCharacter) { - var span = this.dom.createElement("span"); - span.className = "ace_invisible ace_invisible_space ace_invalid"; - span.textContent = lang.stringRepeat(self.SPACE_CHAR, controlCharacter.length); - valueFragment.appendChild(span); - } - else if (cjkSpace) { - screenColumn += 1; - var span = this.dom.createElement("span"); - span.style.width = (self.config.characterWidth * 2) + "px"; - span.className = self.showSpaces ? "ace_cjk ace_invisible ace_invisible_space" : "ace_cjk"; - span.textContent = self.showSpaces ? self.SPACE_CHAR : cjkSpace; - valueFragment.appendChild(span); - } - else if (cjk) { - screenColumn += 1; - var span = this.dom.createElement("span"); - span.style.width = (self.config.characterWidth * 2) + "px"; - span.className = "ace_cjk"; - span.textContent = cjk; - valueFragment.appendChild(span); - } - } - valueFragment.appendChild(this.dom.createTextNode(i ? value.slice(i) : value, this.element)); - if (!isTextToken(token.type)) { - var classes = "ace_" + token.type.replace(/\./g, " ace_"); - var span = this.dom.createElement("span"); - if (token.type == "fold") { - span.style.width = (token.value.length * this.config.characterWidth) + "px"; - span.setAttribute("title", nls("Unfold code")); - } - span.className = classes; - span.appendChild(valueFragment); - parent.appendChild(span); - } - else { - parent.appendChild(valueFragment); - } - return screenColumn + value.length; - }; - Text.prototype.renderIndentGuide = function (parent, value, max) { - var cols = value.search(this.$indentGuideRe); - if (cols <= 0 || cols >= max) - return value; - if (value[0] == " ") { - cols -= cols % this.tabSize; - var count = cols / this.tabSize; - for (var i = 0; i < count; i++) { - parent.appendChild(this.$tabStrings[" "].cloneNode(true)); - } - this.$highlightIndentGuide(); - return value.substr(cols); - } - else if (value[0] == "\t") { - for (var i = 0; i < cols; i++) { - parent.appendChild(this.$tabStrings["\t"].cloneNode(true)); - } - this.$highlightIndentGuide(); - return value.substr(cols); - } - this.$highlightIndentGuide(); - return value; - }; - Text.prototype.$highlightIndentGuide = function () { - if (!this.$highlightIndentGuides || !this.displayIndentGuides) - return; - this.$highlightIndentGuideMarker = { - indentLevel: undefined, - start: undefined, - end: undefined, - dir: undefined - }; - var lines = this.session.doc.$lines; - if (!lines) - return; - var cursor = this.session.selection.getCursor(); - var initialIndent = /^\s*/.exec(this.session.doc.getLine(cursor.row))[0].length; - var elementIndentLevel = Math.floor(initialIndent / this.tabSize); - this.$highlightIndentGuideMarker = { - indentLevel: elementIndentLevel, - start: cursor.row - }; - var bracketHighlight = this.session.$bracketHighlight; - if (bracketHighlight) { - var ranges = this.session.$bracketHighlight.ranges; - for (var i = 0; i < ranges.length; i++) { - if (cursor.row !== ranges[i].start.row) { - this.$highlightIndentGuideMarker.end = ranges[i].start.row; - if (cursor.row > ranges[i].start.row) { - this.$highlightIndentGuideMarker.dir = -1; - } - else { - this.$highlightIndentGuideMarker.dir = 1; - } - break; - } - } - } - if (!this.$highlightIndentGuideMarker.end) { - if (lines[cursor.row] !== '' && cursor.column === lines[cursor.row].length) { - this.$highlightIndentGuideMarker.dir = 1; - for (var i = cursor.row + 1; i < lines.length; i++) { - var line = lines[i]; - var currentIndent = /^\s*/.exec(line)[0].length; - if (line !== '') { - this.$highlightIndentGuideMarker.end = i; - if (currentIndent <= initialIndent) - break; - } - } - } - } - this.$renderHighlightIndentGuide(); - }; - Text.prototype.$clearActiveIndentGuide = function () { - var cells = this.$lines.cells; - for (var i = 0; i < cells.length; i++) { - var cell = cells[i]; - var childNodes = cell.element.childNodes; - if (childNodes.length > 0) { - for (var j = 0; j < childNodes.length; j++) { - if (childNodes[j].classList && childNodes[j].classList.contains("ace_indent-guide-active")) { - childNodes[j].classList.remove("ace_indent-guide-active"); - break; - } - } - } - } - }; - Text.prototype.$setIndentGuideActive = function (cell, indentLevel) { - var line = this.session.doc.getLine(cell.row); - if (line !== "") { - var childNodes = cell.element.childNodes; - if (childNodes) { - var node = childNodes[indentLevel - 1]; - if (node && node.classList && node.classList.contains("ace_indent-guide")) - node.classList.add("ace_indent-guide-active"); - } - } - }; - Text.prototype.$renderHighlightIndentGuide = function () { - if (!this.$lines) - return; - var cells = this.$lines.cells; - this.$clearActiveIndentGuide(); - var indentLevel = this.$highlightIndentGuideMarker.indentLevel; - if (indentLevel !== 0) { - if (this.$highlightIndentGuideMarker.dir === 1) { - for (var i = 0; i < cells.length; i++) { - var cell = cells[i]; - if (this.$highlightIndentGuideMarker.end && cell.row >= this.$highlightIndentGuideMarker.start - + 1) { - if (cell.row >= this.$highlightIndentGuideMarker.end) - break; - this.$setIndentGuideActive(cell, indentLevel); - } - } - } - else { - for (var i = cells.length - 1; i >= 0; i--) { - var cell = cells[i]; - if (this.$highlightIndentGuideMarker.end && cell.row < this.$highlightIndentGuideMarker.start) { - if (cell.row <= this.$highlightIndentGuideMarker.end) - break; - this.$setIndentGuideActive(cell, indentLevel); - } - } - } - } - }; - Text.prototype.$createLineElement = function (parent) { - var lineEl = this.dom.createElement("div"); - lineEl.className = "ace_line"; - lineEl.style.height = this.config.lineHeight + "px"; - return lineEl; - }; - Text.prototype.$renderWrappedLine = function (parent, tokens, splits) { - var chars = 0; - var split = 0; - var splitChars = splits[0]; - var screenColumn = 0; - var lineEl = this.$createLineElement(); - parent.appendChild(lineEl); - for (var i = 0; i < tokens.length; i++) { - var token = tokens[i]; - var value = token.value; - if (i == 0 && this.displayIndentGuides) { - chars = value.length; - value = this.renderIndentGuide(lineEl, value, splitChars); - if (!value) - continue; - chars -= value.length; - } - if (chars + value.length < splitChars) { - screenColumn = this.$renderToken(lineEl, screenColumn, token, value); - chars += value.length; - } - else { - while (chars + value.length >= splitChars) { - screenColumn = this.$renderToken(lineEl, screenColumn, token, value.substring(0, splitChars - chars)); - value = value.substring(splitChars - chars); - chars = splitChars; - lineEl = this.$createLineElement(); - parent.appendChild(lineEl); - lineEl.appendChild(this.dom.createTextNode(lang.stringRepeat("\xa0", splits.indent), this.element)); - split++; - screenColumn = 0; - splitChars = splits[split] || Number.MAX_VALUE; - } - if (value.length != 0) { - chars += value.length; - screenColumn = this.$renderToken(lineEl, screenColumn, token, value); - } - } - } - if (splits[splits.length - 1] > this.MAX_LINE_LENGTH) - this.$renderOverflowMessage(lineEl, screenColumn, null, "", true); - }; - Text.prototype.$renderSimpleLine = function (parent, tokens) { - var screenColumn = 0; - for (var i = 0; i < tokens.length; i++) { - var token = tokens[i]; - var value = token.value; - if (i == 0 && this.displayIndentGuides) { - value = this.renderIndentGuide(parent, value); - if (!value) - continue; - } - if (screenColumn + value.length > this.MAX_LINE_LENGTH) - return this.$renderOverflowMessage(parent, screenColumn, token, value); - screenColumn = this.$renderToken(parent, screenColumn, token, value); - } - }; - Text.prototype.$renderOverflowMessage = function (parent, screenColumn, token, value, hide) { - token && this.$renderToken(parent, screenColumn, token, value.slice(0, this.MAX_LINE_LENGTH - screenColumn)); - var overflowEl = this.dom.createElement("span"); - overflowEl.className = "ace_inline_button ace_keyword ace_toggle_wrap"; - overflowEl.textContent = hide ? "" : ""; - parent.appendChild(overflowEl); - }; - Text.prototype.$renderLine = function (parent, row, foldLine) { - if (!foldLine && foldLine != false) - foldLine = this.session.getFoldLine(row); - if (foldLine) - var tokens = this.$getFoldLineTokens(row, foldLine); - else - var tokens = this.session.getTokens(row); - var lastLineEl = parent; - if (tokens.length) { - var splits = this.session.getRowSplitData(row); - if (splits && splits.length) { - this.$renderWrappedLine(parent, tokens, splits); - var lastLineEl = parent.lastChild; - } - else { - var lastLineEl = parent; - if (this.$useLineGroups()) { - lastLineEl = this.$createLineElement(); - parent.appendChild(lastLineEl); - } - this.$renderSimpleLine(lastLineEl, tokens); - } - } - else if (this.$useLineGroups()) { - lastLineEl = this.$createLineElement(); - parent.appendChild(lastLineEl); - } - if (this.showEOL && lastLineEl) { - if (foldLine) - row = foldLine.end.row; - var invisibleEl = this.dom.createElement("span"); - invisibleEl.className = "ace_invisible ace_invisible_eol"; - invisibleEl.textContent = row == this.session.getLength() - 1 ? this.EOF_CHAR : this.EOL_CHAR; - lastLineEl.appendChild(invisibleEl); - } - }; - Text.prototype.$getFoldLineTokens = function (row, foldLine) { - var session = this.session; - var renderTokens = []; - function addTokens(tokens, from, to) { - var idx = 0, col = 0; - while ((col + tokens[idx].value.length) < from) { - col += tokens[idx].value.length; - idx++; - if (idx == tokens.length) - return; - } - if (col != from) { - var value = tokens[idx].value.substring(from - col); - if (value.length > (to - from)) - value = value.substring(0, to - from); - renderTokens.push({ - type: tokens[idx].type, - value: value - }); - col = from + value.length; - idx += 1; - } - while (col < to && idx < tokens.length) { - var value = tokens[idx].value; - if (value.length + col > to) { - renderTokens.push({ - type: tokens[idx].type, - value: value.substring(0, to - col) - }); - } - else - renderTokens.push(tokens[idx]); - col += value.length; - idx += 1; - } - } - var tokens = session.getTokens(row); - foldLine.walk(function (placeholder, row, column, lastColumn, isNewRow) { - if (placeholder != null) { - renderTokens.push({ - type: "fold", - value: placeholder - }); - } - else { - if (isNewRow) - tokens = session.getTokens(row); - if (tokens.length) - addTokens(tokens, lastColumn, column); - } - }, foldLine.end.row, this.session.getLine(foldLine.end.row).length); - return renderTokens; - }; - Text.prototype.$useLineGroups = function () { - return this.session.getUseWrapMode(); - }; - return Text; -}()); -Text.prototype.EOF_CHAR = "\xB6"; -Text.prototype.EOL_CHAR_LF = "\xAC"; -Text.prototype.EOL_CHAR_CRLF = "\xa4"; -Text.prototype.EOL_CHAR = Text.prototype.EOL_CHAR_LF; -Text.prototype.TAB_CHAR = "\u2014"; //"\u21E5"; -Text.prototype.SPACE_CHAR = "\xB7"; -Text.prototype.$padding = 0; -Text.prototype.MAX_LINE_LENGTH = 10000; -Text.prototype.showInvisibles = false; -Text.prototype.showSpaces = false; -Text.prototype.showTabs = false; -Text.prototype.showEOL = false; -Text.prototype.displayIndentGuides = true; -Text.prototype.$highlightIndentGuides = true; -Text.prototype.$tabStrings = []; -Text.prototype.destroy = {}; -Text.prototype.onChangeTabSize = Text.prototype.$computeTabString; -oop.implement(Text.prototype, EventEmitter); -exports.Text = Text; - -}); - -ace.define("ace/layer/cursor",["require","exports","module","ace/lib/dom"], function(require, exports, module){"use strict"; -var dom = require("../lib/dom"); -var Cursor = /** @class */ (function () { - function Cursor(parentEl) { - this.element = dom.createElement("div"); - this.element.className = "ace_layer ace_cursor-layer"; - parentEl.appendChild(this.element); - this.isVisible = false; - this.isBlinking = true; - this.blinkInterval = 1000; - this.smoothBlinking = false; - this.cursors = []; - this.cursor = this.addCursor(); - dom.addCssClass(this.element, "ace_hidden-cursors"); - this.$updateCursors = this.$updateOpacity.bind(this); - } - Cursor.prototype.$updateOpacity = function (val) { - var cursors = this.cursors; - for (var i = cursors.length; i--;) - dom.setStyle(cursors[i].style, "opacity", val ? "" : "0"); - }; - Cursor.prototype.$startCssAnimation = function () { - var cursors = this.cursors; - for (var i = cursors.length; i--;) - cursors[i].style.animationDuration = this.blinkInterval + "ms"; - this.$isAnimating = true; - setTimeout(function () { - if (this.$isAnimating) { - dom.addCssClass(this.element, "ace_animate-blinking"); - } - }.bind(this)); - }; - Cursor.prototype.$stopCssAnimation = function () { - this.$isAnimating = false; - dom.removeCssClass(this.element, "ace_animate-blinking"); - }; - Cursor.prototype.setPadding = function (padding) { - this.$padding = padding; - }; - Cursor.prototype.setSession = function (session) { - this.session = session; - }; - Cursor.prototype.setBlinking = function (blinking) { - if (blinking != this.isBlinking) { - this.isBlinking = blinking; - this.restartTimer(); - } - }; - Cursor.prototype.setBlinkInterval = function (blinkInterval) { - if (blinkInterval != this.blinkInterval) { - this.blinkInterval = blinkInterval; - this.restartTimer(); - } - }; - Cursor.prototype.setSmoothBlinking = function (smoothBlinking) { - if (smoothBlinking != this.smoothBlinking) { - this.smoothBlinking = smoothBlinking; - dom.setCssClass(this.element, "ace_smooth-blinking", smoothBlinking); - this.$updateCursors(true); - this.restartTimer(); - } - }; - Cursor.prototype.addCursor = function () { - var el = dom.createElement("div"); - el.className = "ace_cursor"; - this.element.appendChild(el); - this.cursors.push(el); - return el; - }; - Cursor.prototype.removeCursor = function () { - if (this.cursors.length > 1) { - var el = this.cursors.pop(); - el.parentNode.removeChild(el); - return el; - } - }; - Cursor.prototype.hideCursor = function () { - this.isVisible = false; - dom.addCssClass(this.element, "ace_hidden-cursors"); - this.restartTimer(); - }; - Cursor.prototype.showCursor = function () { - this.isVisible = true; - dom.removeCssClass(this.element, "ace_hidden-cursors"); - this.restartTimer(); - }; - Cursor.prototype.restartTimer = function () { - var update = this.$updateCursors; - clearInterval(this.intervalId); - clearTimeout(this.timeoutId); - this.$stopCssAnimation(); - if (this.smoothBlinking) { - this.$isSmoothBlinking = false; - dom.removeCssClass(this.element, "ace_smooth-blinking"); - } - update(true); - if (!this.isBlinking || !this.blinkInterval || !this.isVisible) { - this.$stopCssAnimation(); - return; - } - if (this.smoothBlinking) { - this.$isSmoothBlinking = true; - setTimeout(function () { - if (this.$isSmoothBlinking) { - dom.addCssClass(this.element, "ace_smooth-blinking"); - } - }.bind(this)); - } - if (dom.HAS_CSS_ANIMATION) { - this.$startCssAnimation(); - } - else { - var blink = function () { - this.timeoutId = setTimeout(function () { - update(false); - }, 0.6 * this.blinkInterval); - }.bind(this); - this.intervalId = setInterval(function () { - update(true); - blink(); - }, this.blinkInterval); - blink(); - } - }; - Cursor.prototype.getPixelPosition = function (position, onScreen) { - if (!this.config || !this.session) - return { left: 0, top: 0 }; - if (!position) - position = this.session.selection.getCursor(); - var pos = this.session.documentToScreenPosition(position); - var cursorLeft = this.$padding + (this.session.$bidiHandler.isBidiRow(pos.row, position.row) - ? this.session.$bidiHandler.getPosLeft(pos.column) - : pos.column * this.config.characterWidth); - var cursorTop = (pos.row - (onScreen ? this.config.firstRowScreen : 0)) * - this.config.lineHeight; - return { left: cursorLeft, top: cursorTop }; - }; - Cursor.prototype.isCursorInView = function (pixelPos, config) { - return pixelPos.top >= 0 && pixelPos.top < config.maxHeight; - }; - Cursor.prototype.update = function (config) { - this.config = config; - var selections = this.session.$selectionMarkers; - var i = 0, cursorIndex = 0; - if (selections === undefined || selections.length === 0) { - selections = [{ cursor: null }]; - } - for (var i = 0, n = selections.length; i < n; i++) { - var pixelPos = this.getPixelPosition(selections[i].cursor, true); - if ((pixelPos.top > config.height + config.offset || - pixelPos.top < 0) && i > 1) { - continue; - } - var element = this.cursors[cursorIndex++] || this.addCursor(); - var style = element.style; - if (!this.drawCursor) { - if (!this.isCursorInView(pixelPos, config)) { - dom.setStyle(style, "display", "none"); - } - else { - dom.setStyle(style, "display", "block"); - dom.translate(element, pixelPos.left, pixelPos.top); - dom.setStyle(style, "width", Math.round(config.characterWidth) + "px"); - dom.setStyle(style, "height", config.lineHeight + "px"); - } - } - else { - this.drawCursor(element, pixelPos, config, selections[i], this.session); - } - } - while (this.cursors.length > cursorIndex) - this.removeCursor(); - var overwrite = this.session.getOverwrite(); - this.$setOverwrite(overwrite); - this.$pixelPos = pixelPos; - this.restartTimer(); - }; - Cursor.prototype.$setOverwrite = function (overwrite) { - if (overwrite != this.overwrite) { - this.overwrite = overwrite; - if (overwrite) - dom.addCssClass(this.element, "ace_overwrite-cursors"); - else - dom.removeCssClass(this.element, "ace_overwrite-cursors"); - } - }; - Cursor.prototype.destroy = function () { - clearInterval(this.intervalId); - clearTimeout(this.timeoutId); - }; - return Cursor; -}()); -Cursor.prototype.$padding = 0; -Cursor.prototype.drawCursor = null; -exports.Cursor = Cursor; - -}); - -ace.define("ace/scrollbar",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/event","ace/lib/event_emitter"], function(require, exports, module){"use strict"; -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - if (typeof b !== "function" && b !== null) - throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var oop = require("./lib/oop"); -var dom = require("./lib/dom"); -var event = require("./lib/event"); -var EventEmitter = require("./lib/event_emitter").EventEmitter; -var MAX_SCROLL_H = 0x8000; -var Scrollbar = /** @class */ (function () { - function Scrollbar(parent, classSuffix) { - this.element = dom.createElement("div"); - this.element.className = "ace_scrollbar ace_scrollbar" + classSuffix; - this.inner = dom.createElement("div"); - this.inner.className = "ace_scrollbar-inner"; - this.inner.textContent = "\xa0"; - this.element.appendChild(this.inner); - parent.appendChild(this.element); - this.setVisible(false); - this.skipEvent = false; - event.addListener(this.element, "scroll", this.onScroll.bind(this)); - event.addListener(this.element, "mousedown", event.preventDefault); - } - Scrollbar.prototype.setVisible = function (isVisible) { - this.element.style.display = isVisible ? "" : "none"; - this.isVisible = isVisible; - this.coeff = 1; - }; - return Scrollbar; -}()); -oop.implement(Scrollbar.prototype, EventEmitter); -var VScrollBar = /** @class */ (function (_super) { - __extends(VScrollBar, _super); - function VScrollBar(parent, renderer) { - var _this = _super.call(this, parent, '-v') || this; - _this.scrollTop = 0; - _this.scrollHeight = 0; - renderer.$scrollbarWidth = - _this.width = dom.scrollbarWidth(parent.ownerDocument); - _this.inner.style.width = - _this.element.style.width = (_this.width || 15) + 5 + "px"; - _this.$minWidth = 0; - return _this; - } - VScrollBar.prototype.onScroll = function () { - if (!this.skipEvent) { - this.scrollTop = this.element.scrollTop; - if (this.coeff != 1) { - var h = this.element.clientHeight / this.scrollHeight; - this.scrollTop = this.scrollTop * (1 - h) / (this.coeff - h); - } - this._emit("scroll", { data: this.scrollTop }); - } - this.skipEvent = false; - }; - VScrollBar.prototype.getWidth = function () { - return Math.max(this.isVisible ? this.width : 0, this.$minWidth || 0); - }; - VScrollBar.prototype.setHeight = function (height) { - this.element.style.height = height + "px"; - }; - VScrollBar.prototype.setScrollHeight = function (height) { - this.scrollHeight = height; - if (height > MAX_SCROLL_H) { - this.coeff = MAX_SCROLL_H / height; - height = MAX_SCROLL_H; - } - else if (this.coeff != 1) { - this.coeff = 1; - } - this.inner.style.height = height + "px"; - }; - VScrollBar.prototype.setScrollTop = function (scrollTop) { - if (this.scrollTop != scrollTop) { - this.skipEvent = true; - this.scrollTop = scrollTop; - this.element.scrollTop = scrollTop * this.coeff; - } - }; - return VScrollBar; -}(Scrollbar)); -VScrollBar.prototype.setInnerHeight = VScrollBar.prototype.setScrollHeight; -var HScrollBar = /** @class */ (function (_super) { - __extends(HScrollBar, _super); - function HScrollBar(parent, renderer) { - var _this = _super.call(this, parent, '-h') || this; - _this.scrollLeft = 0; - _this.height = renderer.$scrollbarWidth; - _this.inner.style.height = - _this.element.style.height = (_this.height || 15) + 5 + "px"; - return _this; - } - HScrollBar.prototype.onScroll = function () { - if (!this.skipEvent) { - this.scrollLeft = this.element.scrollLeft; - this._emit("scroll", { data: this.scrollLeft }); - } - this.skipEvent = false; - }; - HScrollBar.prototype.getHeight = function () { - return this.isVisible ? this.height : 0; - }; - HScrollBar.prototype.setWidth = function (width) { - this.element.style.width = width + "px"; - }; - HScrollBar.prototype.setInnerWidth = function (width) { - this.inner.style.width = width + "px"; - }; - HScrollBar.prototype.setScrollWidth = function (width) { - this.inner.style.width = width + "px"; - }; - HScrollBar.prototype.setScrollLeft = function (scrollLeft) { - if (this.scrollLeft != scrollLeft) { - this.skipEvent = true; - this.scrollLeft = this.element.scrollLeft = scrollLeft; - } - }; - return HScrollBar; -}(Scrollbar)); -exports.ScrollBar = VScrollBar; // backward compatibility -exports.ScrollBarV = VScrollBar; // backward compatibility -exports.ScrollBarH = HScrollBar; // backward compatibility -exports.VScrollBar = VScrollBar; -exports.HScrollBar = HScrollBar; - -}); - -ace.define("ace/scrollbar_custom",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/event","ace/lib/event_emitter"], function(require, exports, module){"use strict"; -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - if (typeof b !== "function" && b !== null) - throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var oop = require("./lib/oop"); -var dom = require("./lib/dom"); -var event = require("./lib/event"); -var EventEmitter = require("./lib/event_emitter").EventEmitter; -dom.importCssString(".ace_editor>.ace_sb-v div, .ace_editor>.ace_sb-h div{\n position: absolute;\n background: rgba(128, 128, 128, 0.6);\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n border: 1px solid #bbb;\n border-radius: 2px;\n z-index: 8;\n}\n.ace_editor>.ace_sb-v, .ace_editor>.ace_sb-h {\n position: absolute;\n z-index: 6;\n background: none;\n overflow: hidden!important;\n}\n.ace_editor>.ace_sb-v {\n z-index: 6;\n right: 0;\n top: 0;\n width: 12px;\n}\n.ace_editor>.ace_sb-v div {\n z-index: 8;\n right: 0;\n width: 100%;\n}\n.ace_editor>.ace_sb-h {\n bottom: 0;\n left: 0;\n height: 12px;\n}\n.ace_editor>.ace_sb-h div {\n bottom: 0;\n height: 100%;\n}\n.ace_editor>.ace_sb_grabbed {\n z-index: 8;\n background: #000;\n}", "ace_scrollbar.css", false); -var ScrollBar = /** @class */ (function () { - function ScrollBar(parent, classSuffix) { - this.element = dom.createElement("div"); - this.element.className = "ace_sb" + classSuffix; - this.inner = dom.createElement("div"); - this.inner.className = ""; - this.element.appendChild(this.inner); - this.VScrollWidth = 12; - this.HScrollHeight = 12; - parent.appendChild(this.element); - this.setVisible(false); - this.skipEvent = false; - event.addMultiMouseDownListener(this.element, [500, 300, 300], this, "onMouseDown"); - } - ScrollBar.prototype.setVisible = function (isVisible) { - this.element.style.display = isVisible ? "" : "none"; - this.isVisible = isVisible; - this.coeff = 1; - }; - return ScrollBar; -}()); -oop.implement(ScrollBar.prototype, EventEmitter); -var VScrollBar = /** @class */ (function (_super) { - __extends(VScrollBar, _super); - function VScrollBar(parent, renderer) { - var _this = _super.call(this, parent, '-v') || this; - _this.scrollTop = 0; - _this.scrollHeight = 0; - _this.parent = parent; - _this.width = _this.VScrollWidth; - _this.renderer = renderer; - _this.inner.style.width = _this.element.style.width = (_this.width || 15) + "px"; - _this.$minWidth = 0; - return _this; - } - VScrollBar.prototype.onMouseDown = function (eType, e) { - if (eType !== "mousedown") - return; - if (event.getButton(e) !== 0 || e.detail === 2) { - return; - } - if (e.target === this.inner) { - var self = this; - var mousePageY = e.clientY; - var onMouseMove = function (e) { - mousePageY = e.clientY; - }; - var onMouseUp = function () { - clearInterval(timerId); - }; - var startY = e.clientY; - var startTop = this.thumbTop; - var onScrollInterval = function () { - if (mousePageY === undefined) - return; - var scrollTop = self.scrollTopFromThumbTop(startTop + mousePageY - startY); - if (scrollTop === self.scrollTop) - return; - self._emit("scroll", { data: scrollTop }); - }; - event.capture(this.inner, onMouseMove, onMouseUp); - var timerId = setInterval(onScrollInterval, 20); - return event.preventDefault(e); - } - var top = e.clientY - this.element.getBoundingClientRect().top - this.thumbHeight / 2; - this._emit("scroll", { data: this.scrollTopFromThumbTop(top) }); - return event.preventDefault(e); - }; - VScrollBar.prototype.getHeight = function () { - return this.height; - }; - VScrollBar.prototype.scrollTopFromThumbTop = function (thumbTop) { - var scrollTop = thumbTop * (this.pageHeight - this.viewHeight) / (this.slideHeight - this.thumbHeight); - scrollTop = scrollTop >> 0; - if (scrollTop < 0) { - scrollTop = 0; - } - else if (scrollTop > this.pageHeight - this.viewHeight) { - scrollTop = this.pageHeight - this.viewHeight; - } - return scrollTop; - }; - VScrollBar.prototype.getWidth = function () { - return Math.max(this.isVisible ? this.width : 0, this.$minWidth || 0); - }; - VScrollBar.prototype.setHeight = function (height) { - this.height = Math.max(0, height); - this.slideHeight = this.height; - this.viewHeight = this.height; - this.setScrollHeight(this.pageHeight, true); - }; - VScrollBar.prototype.setScrollHeight = function (height, force) { - if (this.pageHeight === height && !force) - return; - this.pageHeight = height; - this.thumbHeight = this.slideHeight * this.viewHeight / this.pageHeight; - if (this.thumbHeight > this.slideHeight) - this.thumbHeight = this.slideHeight; - if (this.thumbHeight < 15) - this.thumbHeight = 15; - this.inner.style.height = this.thumbHeight + "px"; - if (this.scrollTop > (this.pageHeight - this.viewHeight)) { - this.scrollTop = (this.pageHeight - this.viewHeight); - if (this.scrollTop < 0) - this.scrollTop = 0; - this._emit("scroll", { data: this.scrollTop }); - } - }; - VScrollBar.prototype.setScrollTop = function (scrollTop) { - this.scrollTop = scrollTop; - if (scrollTop < 0) - scrollTop = 0; - this.thumbTop = scrollTop * (this.slideHeight - this.thumbHeight) / (this.pageHeight - this.viewHeight); - this.inner.style.top = this.thumbTop + "px"; - }; - return VScrollBar; -}(ScrollBar)); -VScrollBar.prototype.setInnerHeight = VScrollBar.prototype.setScrollHeight; -var HScrollBar = /** @class */ (function (_super) { - __extends(HScrollBar, _super); - function HScrollBar(parent, renderer) { - var _this = _super.call(this, parent, '-h') || this; - _this.scrollLeft = 0; - _this.scrollWidth = 0; - _this.height = _this.HScrollHeight; - _this.inner.style.height = _this.element.style.height = (_this.height || 12) + "px"; - _this.renderer = renderer; - return _this; - } - HScrollBar.prototype.onMouseDown = function (eType, e) { - if (eType !== "mousedown") - return; - if (event.getButton(e) !== 0 || e.detail === 2) { - return; - } - if (e.target === this.inner) { - var self = this; - var mousePageX = e.clientX; - var onMouseMove = function (e) { - mousePageX = e.clientX; - }; - var onMouseUp = function () { - clearInterval(timerId); - }; - var startX = e.clientX; - var startLeft = this.thumbLeft; - var onScrollInterval = function () { - if (mousePageX === undefined) - return; - var scrollLeft = self.scrollLeftFromThumbLeft(startLeft + mousePageX - startX); - if (scrollLeft === self.scrollLeft) - return; - self._emit("scroll", { data: scrollLeft }); - }; - event.capture(this.inner, onMouseMove, onMouseUp); - var timerId = setInterval(onScrollInterval, 20); - return event.preventDefault(e); - } - var left = e.clientX - this.element.getBoundingClientRect().left - this.thumbWidth / 2; - this._emit("scroll", { data: this.scrollLeftFromThumbLeft(left) }); - return event.preventDefault(e); - }; - HScrollBar.prototype.getHeight = function () { - return this.isVisible ? this.height : 0; - }; - HScrollBar.prototype.scrollLeftFromThumbLeft = function (thumbLeft) { - var scrollLeft = thumbLeft * (this.pageWidth - this.viewWidth) / (this.slideWidth - this.thumbWidth); - scrollLeft = scrollLeft >> 0; - if (scrollLeft < 0) { - scrollLeft = 0; - } - else if (scrollLeft > this.pageWidth - this.viewWidth) { - scrollLeft = this.pageWidth - this.viewWidth; - } - return scrollLeft; - }; - HScrollBar.prototype.setWidth = function (width) { - this.width = Math.max(0, width); - this.element.style.width = this.width + "px"; - this.slideWidth = this.width; - this.viewWidth = this.width; - this.setScrollWidth(this.pageWidth, true); - }; - HScrollBar.prototype.setScrollWidth = function (width, force) { - if (this.pageWidth === width && !force) - return; - this.pageWidth = width; - this.thumbWidth = this.slideWidth * this.viewWidth / this.pageWidth; - if (this.thumbWidth > this.slideWidth) - this.thumbWidth = this.slideWidth; - if (this.thumbWidth < 15) - this.thumbWidth = 15; - this.inner.style.width = this.thumbWidth + "px"; - if (this.scrollLeft > (this.pageWidth - this.viewWidth)) { - this.scrollLeft = (this.pageWidth - this.viewWidth); - if (this.scrollLeft < 0) - this.scrollLeft = 0; - this._emit("scroll", { data: this.scrollLeft }); - } - }; - HScrollBar.prototype.setScrollLeft = function (scrollLeft) { - this.scrollLeft = scrollLeft; - if (scrollLeft < 0) - scrollLeft = 0; - this.thumbLeft = scrollLeft * (this.slideWidth - this.thumbWidth) / (this.pageWidth - this.viewWidth); - this.inner.style.left = (this.thumbLeft) + "px"; - }; - return HScrollBar; -}(ScrollBar)); -HScrollBar.prototype.setInnerWidth = HScrollBar.prototype.setScrollWidth; -exports.ScrollBar = VScrollBar; // backward compatibility -exports.ScrollBarV = VScrollBar; // backward compatibility -exports.ScrollBarH = HScrollBar; // backward compatibility -exports.VScrollBar = VScrollBar; -exports.HScrollBar = HScrollBar; - -}); - -ace.define("ace/renderloop",["require","exports","module","ace/lib/event"], function(require, exports, module){"use strict"; -var event = require("./lib/event"); -var RenderLoop = /** @class */ (function () { - function RenderLoop(onRender, win) { - this.onRender = onRender; - this.pending = false; - this.changes = 0; - this.$recursionLimit = 2; - this.window = win || window; - var _self = this; - this._flush = function (ts) { - _self.pending = false; - var changes = _self.changes; - if (changes) { - event.blockIdle(100); - _self.changes = 0; - _self.onRender(changes); - } - if (_self.changes) { - if (_self.$recursionLimit-- < 0) - return; - _self.schedule(); - } - else { - _self.$recursionLimit = 2; - } - }; - } - RenderLoop.prototype.schedule = function (change) { - this.changes = this.changes | change; - if (this.changes && !this.pending) { - event.nextFrame(this._flush); - this.pending = true; - } - }; - RenderLoop.prototype.clear = function (change) { - var changes = this.changes; - this.changes = 0; - return changes; - }; - return RenderLoop; -}()); -exports.RenderLoop = RenderLoop; - -}); - -ace.define("ace/layer/font_metrics",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/lib/event","ace/lib/useragent","ace/lib/event_emitter"], function(require, exports, module){var oop = require("../lib/oop"); -var dom = require("../lib/dom"); -var lang = require("../lib/lang"); -var event = require("../lib/event"); -var useragent = require("../lib/useragent"); -var EventEmitter = require("../lib/event_emitter").EventEmitter; -var CHAR_COUNT = 512; -var USE_OBSERVER = typeof ResizeObserver == "function"; -var L = 200; -var FontMetrics = /** @class */ (function () { - function FontMetrics(parentEl) { - this.el = dom.createElement("div"); - this.$setMeasureNodeStyles(this.el.style, true); - this.$main = dom.createElement("div"); - this.$setMeasureNodeStyles(this.$main.style); - this.$measureNode = dom.createElement("div"); - this.$setMeasureNodeStyles(this.$measureNode.style); - this.el.appendChild(this.$main); - this.el.appendChild(this.$measureNode); - parentEl.appendChild(this.el); - this.$measureNode.textContent = lang.stringRepeat("X", CHAR_COUNT); - this.$characterSize = { width: 0, height: 0 }; - if (USE_OBSERVER) - this.$addObserver(); - else - this.checkForSizeChanges(); - } - FontMetrics.prototype.$setMeasureNodeStyles = function (style, isRoot) { - style.width = style.height = "auto"; - style.left = style.top = "0px"; - style.visibility = "hidden"; - style.position = "absolute"; - style.whiteSpace = "pre"; - if (useragent.isIE < 8) { - style["font-family"] = "inherit"; - } - else { - style.font = "inherit"; - } - style.overflow = isRoot ? "hidden" : "visible"; - }; - FontMetrics.prototype.checkForSizeChanges = function (size) { - if (size === undefined) - size = this.$measureSizes(); - if (size && (this.$characterSize.width !== size.width || this.$characterSize.height !== size.height)) { - this.$measureNode.style.fontWeight = "bold"; - var boldSize = this.$measureSizes(); - this.$measureNode.style.fontWeight = ""; - this.$characterSize = size; - this.charSizes = Object.create(null); - this.allowBoldFonts = boldSize && boldSize.width === size.width && boldSize.height === size.height; - this._emit("changeCharacterSize", { data: size }); - } - }; - FontMetrics.prototype.$addObserver = function () { - var self = this; - this.$observer = new window.ResizeObserver(function (e) { - self.checkForSizeChanges(); - }); - this.$observer.observe(this.$measureNode); - }; - FontMetrics.prototype.$pollSizeChanges = function () { - if (this.$pollSizeChangesTimer || this.$observer) - return this.$pollSizeChangesTimer; - var self = this; - return this.$pollSizeChangesTimer = event.onIdle(function cb() { - self.checkForSizeChanges(); - event.onIdle(cb, 500); - }, 500); - }; - FontMetrics.prototype.setPolling = function (val) { - if (val) { - this.$pollSizeChanges(); - } - else if (this.$pollSizeChangesTimer) { - clearInterval(this.$pollSizeChangesTimer); - this.$pollSizeChangesTimer = 0; - } - }; - FontMetrics.prototype.$measureSizes = function (node) { - var size = { - height: (node || this.$measureNode).clientHeight, - width: (node || this.$measureNode).clientWidth / CHAR_COUNT - }; - if (size.width === 0 || size.height === 0) - return null; - return size; - }; - FontMetrics.prototype.$measureCharWidth = function (ch) { - this.$main.textContent = lang.stringRepeat(ch, CHAR_COUNT); - var rect = this.$main.getBoundingClientRect(); - return rect.width / CHAR_COUNT; - }; - FontMetrics.prototype.getCharacterWidth = function (ch) { - var w = this.charSizes[ch]; - if (w === undefined) { - w = this.charSizes[ch] = this.$measureCharWidth(ch) / this.$characterSize.width; - } - return w; - }; - FontMetrics.prototype.destroy = function () { - clearInterval(this.$pollSizeChangesTimer); - if (this.$observer) - this.$observer.disconnect(); - if (this.el && this.el.parentNode) - this.el.parentNode.removeChild(this.el); - }; - FontMetrics.prototype.$getZoom = function (element) { - if (!element || !element.parentElement) - return 1; - return (window.getComputedStyle(element).zoom || 1) * this.$getZoom(element.parentElement); - }; - FontMetrics.prototype.$initTransformMeasureNodes = function () { - var t = function (t, l) { - return ["div", { - style: "position: absolute;top:" + t + "px;left:" + l + "px;" - }]; - }; - this.els = dom.buildDom([t(0, 0), t(L, 0), t(0, L), t(L, L)], this.el); - }; - FontMetrics.prototype.transformCoordinates = function (clientPos, elPos) { - if (clientPos) { - var zoom = this.$getZoom(this.el); - clientPos = mul(1 / zoom, clientPos); - } - function solve(l1, l2, r) { - var det = l1[1] * l2[0] - l1[0] * l2[1]; - return [ - (-l2[1] * r[0] + l2[0] * r[1]) / det, - (+l1[1] * r[0] - l1[0] * r[1]) / det - ]; - } - function sub(a, b) { return [a[0] - b[0], a[1] - b[1]]; } - function add(a, b) { return [a[0] + b[0], a[1] + b[1]]; } - function mul(a, b) { return [a * b[0], a * b[1]]; } - if (!this.els) - this.$initTransformMeasureNodes(); - function p(el) { - var r = el.getBoundingClientRect(); - return [r.left, r.top]; - } - var a = p(this.els[0]); - var b = p(this.els[1]); - var c = p(this.els[2]); - var d = p(this.els[3]); - var h = solve(sub(d, b), sub(d, c), sub(add(b, c), add(d, a))); - var m1 = mul(1 + h[0], sub(b, a)); - var m2 = mul(1 + h[1], sub(c, a)); - if (elPos) { - var x = elPos; - var k = h[0] * x[0] / L + h[1] * x[1] / L + 1; - var ut = add(mul(x[0], m1), mul(x[1], m2)); - return add(mul(1 / k / L, ut), a); - } - var u = sub(clientPos, a); - var f = solve(sub(m1, mul(h[0], u)), sub(m2, mul(h[1], u)), u); - return mul(L, f); - }; - return FontMetrics; -}()); -FontMetrics.prototype.$characterSize = { width: 0, height: 0 }; -oop.implement(FontMetrics.prototype, EventEmitter); -exports.FontMetrics = FontMetrics; - -}); - -ace.define("ace/css/editor-css",["require","exports","module"], function(require, exports, module){/* -styles = [] -for (var i = 1; i < 16; i++) { - styles.push(".ace_br" + i + "{" + ( - ["top-left", "top-right", "bottom-right", "bottom-left"] - ).map(function(x, j) { - return i & (1< .ace_line, .ace_text-layer > .ace_line_group {\n contain: style size layout;\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n}\n\n.ace_hidpi .ace_text-layer,\n.ace_hidpi .ace_gutter-layer,\n.ace_hidpi .ace_content,\n.ace_hidpi .ace_gutter {\n contain: strict;\n}\n.ace_hidpi .ace_text-layer > .ace_line, \n.ace_hidpi .ace_text-layer > .ace_line_group {\n contain: strict;\n}\n\n.ace_cjk {\n display: inline-block;\n text-align: center;\n}\n\n.ace_cursor-layer {\n z-index: 4;\n}\n\n.ace_cursor {\n z-index: 4;\n position: absolute;\n box-sizing: border-box;\n border-left: 2px solid;\n /* workaround for smooth cursor repaintng whole screen in chrome */\n transform: translatez(0);\n}\n\n.ace_multiselect .ace_cursor {\n border-left-width: 1px;\n}\n\n.ace_slim-cursors .ace_cursor {\n border-left-width: 1px;\n}\n\n.ace_overwrite-cursors .ace_cursor {\n border-left-width: 0;\n border-bottom: 1px solid;\n}\n\n.ace_hidden-cursors .ace_cursor {\n opacity: 0.2;\n}\n\n.ace_hasPlaceholder .ace_hidden-cursors .ace_cursor {\n opacity: 0;\n}\n\n.ace_smooth-blinking .ace_cursor {\n transition: opacity 0.18s;\n}\n\n.ace_animate-blinking .ace_cursor {\n animation-duration: 1000ms;\n animation-timing-function: step-end;\n animation-name: blink-ace-animate;\n animation-iteration-count: infinite;\n}\n\n.ace_animate-blinking.ace_smooth-blinking .ace_cursor {\n animation-duration: 1000ms;\n animation-timing-function: ease-in-out;\n animation-name: blink-ace-animate-smooth;\n}\n \n@keyframes blink-ace-animate {\n from, to { opacity: 1; }\n 60% { opacity: 0; }\n}\n\n@keyframes blink-ace-animate-smooth {\n from, to { opacity: 1; }\n 45% { opacity: 1; }\n 60% { opacity: 0; }\n 85% { opacity: 0; }\n}\n\n.ace_marker-layer .ace_step, .ace_marker-layer .ace_stack {\n position: absolute;\n z-index: 3;\n}\n\n.ace_marker-layer .ace_selection {\n position: absolute;\n z-index: 5;\n}\n\n.ace_marker-layer .ace_bracket {\n position: absolute;\n z-index: 6;\n}\n\n.ace_marker-layer .ace_error_bracket {\n position: absolute;\n border-bottom: 1px solid #DE5555;\n border-radius: 0;\n}\n\n.ace_marker-layer .ace_active-line {\n position: absolute;\n z-index: 2;\n}\n\n.ace_marker-layer .ace_selected-word {\n position: absolute;\n z-index: 4;\n box-sizing: border-box;\n}\n\n.ace_line .ace_fold {\n box-sizing: border-box;\n\n display: inline-block;\n height: 11px;\n margin-top: -2px;\n vertical-align: middle;\n\n background-image:\n url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII=\"),\n url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACJJREFUeNpi+P//fxgTAwPDBxDxD078RSX+YeEyDFMCIMAAI3INmXiwf2YAAAAASUVORK5CYII=\");\n background-repeat: no-repeat, repeat-x;\n background-position: center center, top left;\n color: transparent;\n\n border: 1px solid black;\n border-radius: 2px;\n\n cursor: pointer;\n pointer-events: auto;\n}\n\n.ace_dark .ace_fold {\n}\n\n.ace_fold:hover{\n background-image:\n url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII=\"),\n url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACBJREFUeNpi+P//fz4TAwPDZxDxD5X4i5fLMEwJgAADAEPVDbjNw87ZAAAAAElFTkSuQmCC\");\n}\n\n.ace_tooltip {\n background-color: #f5f5f5;\n border: 1px solid gray;\n border-radius: 1px;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);\n color: black;\n max-width: 100%;\n padding: 3px 4px;\n position: fixed;\n z-index: 999999;\n box-sizing: border-box;\n cursor: default;\n white-space: pre-wrap;\n word-wrap: break-word;\n line-height: normal;\n font-style: normal;\n font-weight: normal;\n letter-spacing: normal;\n pointer-events: none;\n overflow: auto;\n max-width: min(60em, 66vw);\n}\n.ace_tooltip pre {\n white-space: pre-wrap;\n}\n\n.ace_tooltip.ace_dark {\n background-color: #636363;\n color: #fff;\n}\n\n.ace_tooltip:focus {\n outline: 1px solid #5E9ED6;\n}\n\n.ace_icon {\n display: inline-block;\n width: 18px;\n vertical-align: top;\n}\n\n.ace_icon_svg {\n display: inline-block;\n width: 12px;\n vertical-align: top;\n -webkit-mask-repeat: no-repeat;\n -webkit-mask-size: 12px;\n -webkit-mask-position: center;\n}\n\n.ace_folding-enabled > .ace_gutter-cell, .ace_folding-enabled > .ace_gutter-cell_svg-icons {\n padding-right: 13px;\n}\n\n.ace_fold-widget {\n box-sizing: border-box;\n\n margin: 0 -12px 0 1px;\n display: none;\n width: 11px;\n vertical-align: top;\n\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42mWKsQ0AMAzC8ixLlrzQjzmBiEjp0A6WwBCSPgKAXoLkqSot7nN3yMwR7pZ32NzpKkVoDBUxKAAAAABJRU5ErkJggg==\");\n background-repeat: no-repeat;\n background-position: center;\n\n border-radius: 3px;\n \n border: 1px solid transparent;\n cursor: pointer;\n}\n\n.ace_folding-enabled .ace_fold-widget {\n display: inline-block; \n}\n\n.ace_fold-widget.ace_end {\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42m3HwQkAMAhD0YzsRchFKI7sAikeWkrxwScEB0nh5e7KTPWimZki4tYfVbX+MNl4pyZXejUO1QAAAABJRU5ErkJggg==\");\n}\n\n.ace_fold-widget.ace_closed {\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAGCAYAAAAG5SQMAAAAOUlEQVR42jXKwQkAMAgDwKwqKD4EwQ26sSOkVWjgIIHAzPiCgaqiqnJHZnKICBERHN194O5b9vbLuAVRL+l0YWnZAAAAAElFTkSuQmCCXA==\");\n}\n\n.ace_fold-widget:hover {\n border: 1px solid rgba(0, 0, 0, 0.3);\n background-color: rgba(255, 255, 255, 0.2);\n box-shadow: 0 1px 1px rgba(255, 255, 255, 0.7);\n}\n\n.ace_fold-widget:active {\n border: 1px solid rgba(0, 0, 0, 0.4);\n background-color: rgba(0, 0, 0, 0.05);\n box-shadow: 0 1px 1px rgba(255, 255, 255, 0.8);\n}\n/**\n * Dark version for fold widgets\n */\n.ace_dark .ace_fold-widget {\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHklEQVQIW2P4//8/AzoGEQ7oGCaLLAhWiSwB146BAQCSTPYocqT0AAAAAElFTkSuQmCC\");\n}\n.ace_dark .ace_fold-widget.ace_end {\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAH0lEQVQIW2P4//8/AxQ7wNjIAjDMgC4AxjCVKBirIAAF0kz2rlhxpAAAAABJRU5ErkJggg==\");\n}\n.ace_dark .ace_fold-widget.ace_closed {\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAFCAYAAACAcVaiAAAAHElEQVQIW2P4//+/AxAzgDADlOOAznHAKgPWAwARji8UIDTfQQAAAABJRU5ErkJggg==\");\n}\n.ace_dark .ace_fold-widget:hover {\n box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);\n background-color: rgba(255, 255, 255, 0.1);\n}\n.ace_dark .ace_fold-widget:active {\n box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);\n}\n\n.ace_inline_button {\n border: 1px solid lightgray;\n display: inline-block;\n margin: -1px 8px;\n padding: 0 5px;\n pointer-events: auto;\n cursor: pointer;\n}\n.ace_inline_button:hover {\n border-color: gray;\n background: rgba(200,200,200,0.2);\n display: inline-block;\n pointer-events: auto;\n}\n\n.ace_fold-widget.ace_invalid {\n background-color: #FFB4B4;\n border-color: #DE5555;\n}\n\n.ace_fade-fold-widgets .ace_fold-widget {\n transition: opacity 0.4s ease 0.05s;\n opacity: 0;\n}\n\n.ace_fade-fold-widgets:hover .ace_fold-widget {\n transition: opacity 0.05s ease 0.05s;\n opacity:1;\n}\n\n.ace_underline {\n text-decoration: underline;\n}\n\n.ace_bold {\n font-weight: bold;\n}\n\n.ace_nobold .ace_bold {\n font-weight: normal;\n}\n\n.ace_italic {\n font-style: italic;\n}\n\n\n.ace_error-marker {\n background-color: rgba(255, 0, 0,0.2);\n position: absolute;\n z-index: 9;\n}\n\n.ace_highlight-marker {\n background-color: rgba(255, 255, 0,0.2);\n position: absolute;\n z-index: 8;\n}\n\n.ace_mobile-menu {\n position: absolute;\n line-height: 1.5;\n border-radius: 4px;\n -ms-user-select: none;\n -moz-user-select: none;\n -webkit-user-select: none;\n user-select: none;\n background: white;\n box-shadow: 1px 3px 2px grey;\n border: 1px solid #dcdcdc;\n color: black;\n}\n.ace_dark > .ace_mobile-menu {\n background: #333;\n color: #ccc;\n box-shadow: 1px 3px 2px grey;\n border: 1px solid #444;\n\n}\n.ace_mobile-button {\n padding: 2px;\n cursor: pointer;\n overflow: hidden;\n}\n.ace_mobile-button:hover {\n background-color: #eee;\n opacity:1;\n}\n.ace_mobile-button:active {\n background-color: #ddd;\n}\n\n.ace_placeholder {\n font-family: arial;\n transform: scale(0.9);\n transform-origin: left;\n white-space: pre;\n opacity: 0.7;\n margin: 0 10px;\n}\n\n.ace_ghost_text {\n opacity: 0.5;\n font-style: italic;\n white-space: pre;\n}\n\n.ace_screenreader-only {\n position:absolute;\n left:-10000px;\n top:auto;\n width:1px;\n height:1px;\n overflow:hidden;\n}"; - -}); - -ace.define("ace/layer/decorators",["require","exports","module","ace/lib/dom","ace/lib/oop","ace/lib/event_emitter"], function(require, exports, module){"use strict"; -var dom = require("../lib/dom"); -var oop = require("../lib/oop"); -var EventEmitter = require("../lib/event_emitter").EventEmitter; -var Decorator = /** @class */ (function () { - function Decorator(parent, renderer) { - this.canvas = dom.createElement("canvas"); - this.renderer = renderer; - this.pixelRatio = 1; - this.maxHeight = renderer.layerConfig.maxHeight; - this.lineHeight = renderer.layerConfig.lineHeight; - this.canvasHeight = parent.parent.scrollHeight; - this.heightRatio = this.canvasHeight / this.maxHeight; - this.canvasWidth = parent.width; - this.minDecorationHeight = (2 * this.pixelRatio) | 0; - this.halfMinDecorationHeight = (this.minDecorationHeight / 2) | 0; - this.canvas.width = this.canvasWidth; - this.canvas.height = this.canvasHeight; - this.canvas.style.top = 0 + "px"; - this.canvas.style.right = 0 + "px"; - this.canvas.style.zIndex = 7 + "px"; - this.canvas.style.position = "absolute"; - this.colors = {}; - this.colors.dark = { - "error": "rgba(255, 18, 18, 1)", - "warning": "rgba(18, 136, 18, 1)", - "info": "rgba(18, 18, 136, 1)" - }; - this.colors.light = { - "error": "rgb(255,51,51)", - "warning": "rgb(32,133,72)", - "info": "rgb(35,68,138)" - }; - parent.element.appendChild(this.canvas); - } - Decorator.prototype.$updateDecorators = function (config) { - var colors = (this.renderer.theme.isDark === true) ? this.colors.dark : this.colors.light; - if (config) { - this.maxHeight = config.maxHeight; - this.lineHeight = config.lineHeight; - this.canvasHeight = config.height; - var allLineHeight = (config.lastRow + 1) * this.lineHeight; - if (allLineHeight < this.canvasHeight) { - this.heightRatio = 1; - } - else { - this.heightRatio = this.canvasHeight / this.maxHeight; - } - } - var ctx = this.canvas.getContext("2d"); - function compare(a, b) { - if (a.priority < b.priority) - return -1; - if (a.priority > b.priority) - return 1; - return 0; - } - var annotations = this.renderer.session.$annotations; - ctx.clearRect(0, 0, this.canvas.width, this.canvas.height); - if (annotations) { - var priorities = { - "info": 1, - "warning": 2, - "error": 3 - }; - annotations.forEach(function (item) { - item.priority = priorities[item.type] || null; - }); - annotations = annotations.sort(compare); - var foldData = this.renderer.session.$foldData; - for (var i = 0; i < annotations.length; i++) { - var row = annotations[i].row; - var compensateFold = this.compensateFoldRows(row, foldData); - var currentY = Math.round((row - compensateFold) * this.lineHeight * this.heightRatio); - var y1 = Math.round(((row - compensateFold) * this.lineHeight * this.heightRatio)); - var y2 = Math.round((((row - compensateFold) * this.lineHeight + this.lineHeight) * this.heightRatio)); - var height = y2 - y1; - if (height < this.minDecorationHeight) { - var yCenter = ((y1 + y2) / 2) | 0; - if (yCenter < this.halfMinDecorationHeight) { - yCenter = this.halfMinDecorationHeight; - } - else if (yCenter + this.halfMinDecorationHeight > this.canvasHeight) { - yCenter = this.canvasHeight - this.halfMinDecorationHeight; - } - y1 = Math.round(yCenter - this.halfMinDecorationHeight); - y2 = Math.round(yCenter + this.halfMinDecorationHeight); - } - ctx.fillStyle = colors[annotations[i].type] || null; - ctx.fillRect(0, currentY, this.canvasWidth, y2 - y1); - } - } - var cursor = this.renderer.session.selection.getCursor(); - if (cursor) { - var compensateFold = this.compensateFoldRows(cursor.row, foldData); - var currentY = Math.round((cursor.row - compensateFold) * this.lineHeight * this.heightRatio); - ctx.fillStyle = "rgba(0, 0, 0, 0.5)"; - ctx.fillRect(0, currentY, this.canvasWidth, 2); - } - }; - Decorator.prototype.compensateFoldRows = function (row, foldData) { - var compensateFold = 0; - if (foldData && foldData.length > 0) { - for (var j = 0; j < foldData.length; j++) { - if (row > foldData[j].start.row && row < foldData[j].end.row) { - compensateFold += row - foldData[j].start.row; - } - else if (row >= foldData[j].end.row) { - compensateFold += foldData[j].end.row - foldData[j].start.row; - } - } - } - return compensateFold; - }; - return Decorator; -}()); -oop.implement(Decorator.prototype, EventEmitter); -exports.Decorator = Decorator; - -}); - -ace.define("ace/virtual_renderer",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/config","ace/layer/gutter","ace/layer/marker","ace/layer/text","ace/layer/cursor","ace/scrollbar","ace/scrollbar","ace/scrollbar_custom","ace/scrollbar_custom","ace/renderloop","ace/layer/font_metrics","ace/lib/event_emitter","ace/css/editor-css","ace/layer/decorators","ace/lib/useragent"], function(require, exports, module){"use strict"; -var oop = require("./lib/oop"); -var dom = require("./lib/dom"); -var lang = require("./lib/lang"); -var config = require("./config"); -var GutterLayer = require("./layer/gutter").Gutter; -var MarkerLayer = require("./layer/marker").Marker; -var TextLayer = require("./layer/text").Text; -var CursorLayer = require("./layer/cursor").Cursor; -var HScrollBar = require("./scrollbar").HScrollBar; -var VScrollBar = require("./scrollbar").VScrollBar; -var HScrollBarCustom = require("./scrollbar_custom").HScrollBar; -var VScrollBarCustom = require("./scrollbar_custom").VScrollBar; -var RenderLoop = require("./renderloop").RenderLoop; -var FontMetrics = require("./layer/font_metrics").FontMetrics; -var EventEmitter = require("./lib/event_emitter").EventEmitter; -var editorCss = require("./css/editor-css"); -var Decorator = require("./layer/decorators").Decorator; -var useragent = require("./lib/useragent"); -dom.importCssString(editorCss, "ace_editor.css", false); -var VirtualRenderer = /** @class */ (function () { - function VirtualRenderer(container, theme) { - var _self = this; - this.container = container || dom.createElement("div"); - dom.addCssClass(this.container, "ace_editor"); - if (dom.HI_DPI) - dom.addCssClass(this.container, "ace_hidpi"); - this.setTheme(theme); - if (config.get("useStrictCSP") == null) - config.set("useStrictCSP", false); - this.$gutter = dom.createElement("div"); - this.$gutter.className = "ace_gutter"; - this.container.appendChild(this.$gutter); - this.$gutter.setAttribute("aria-hidden", true); - this.scroller = dom.createElement("div"); - this.scroller.className = "ace_scroller"; - this.container.appendChild(this.scroller); - this.content = dom.createElement("div"); - this.content.className = "ace_content"; - this.scroller.appendChild(this.content); - this.$gutterLayer = new GutterLayer(this.$gutter); - this.$gutterLayer.on("changeGutterWidth", this.onGutterResize.bind(this)); - this.$markerBack = new MarkerLayer(this.content); - var textLayer = this.$textLayer = new TextLayer(this.content); - this.canvas = textLayer.element; - this.$markerFront = new MarkerLayer(this.content); - this.$cursorLayer = new CursorLayer(this.content); - this.$horizScroll = false; - this.$vScroll = false; - this.scrollBar = - this.scrollBarV = new VScrollBar(this.container, this); - this.scrollBarH = new HScrollBar(this.container, this); - this.scrollBarV.on("scroll", function (e) { - if (!_self.$scrollAnimation) - _self.session.setScrollTop(e.data - _self.scrollMargin.top); - }); - this.scrollBarH.on("scroll", function (e) { - if (!_self.$scrollAnimation) - _self.session.setScrollLeft(e.data - _self.scrollMargin.left); - }); - this.scrollTop = 0; - this.scrollLeft = 0; - this.cursorPos = { - row: 0, - column: 0 - }; - this.$fontMetrics = new FontMetrics(this.container); - this.$textLayer.$setFontMetrics(this.$fontMetrics); - this.$textLayer.on("changeCharacterSize", function (e) { - _self.updateCharacterSize(); - _self.onResize(true, _self.gutterWidth, _self.$size.width, _self.$size.height); - _self._signal("changeCharacterSize", e); - }); - this.$size = { - width: 0, - height: 0, - scrollerHeight: 0, - scrollerWidth: 0, - $dirty: true - }; - this.layerConfig = { - width: 1, - padding: 0, - firstRow: 0, - firstRowScreen: 0, - lastRow: 0, - lineHeight: 0, - characterWidth: 0, - minHeight: 1, - maxHeight: 1, - offset: 0, - height: 1, - gutterOffset: 1 - }; - this.scrollMargin = { - left: 0, - right: 0, - top: 0, - bottom: 0, - v: 0, - h: 0 - }; - this.margin = { - left: 0, - right: 0, - top: 0, - bottom: 0, - v: 0, - h: 0 - }; - this.$keepTextAreaAtCursor = !useragent.isIOS; - this.$loop = new RenderLoop(this.$renderChanges.bind(this), this.container.ownerDocument.defaultView); - this.$loop.schedule(this.CHANGE_FULL); - this.updateCharacterSize(); - this.setPadding(4); - this.$addResizeObserver(); - config.resetOptions(this); - config._signal("renderer", this); - } - VirtualRenderer.prototype.updateCharacterSize = function () { - if (this.$textLayer.allowBoldFonts != this.$allowBoldFonts) { - this.$allowBoldFonts = this.$textLayer.allowBoldFonts; - this.setStyle("ace_nobold", !this.$allowBoldFonts); - } - this.layerConfig.characterWidth = - this.characterWidth = this.$textLayer.getCharacterWidth(); - this.layerConfig.lineHeight = - this.lineHeight = this.$textLayer.getLineHeight(); - this.$updatePrintMargin(); - dom.setStyle(this.scroller.style, "line-height", this.lineHeight + "px"); - }; - VirtualRenderer.prototype.setSession = function (session) { - if (this.session) - this.session.doc.off("changeNewLineMode", this.onChangeNewLineMode); - this.session = session; - if (session && this.scrollMargin.top && session.getScrollTop() <= 0) - session.setScrollTop(-this.scrollMargin.top); - this.$cursorLayer.setSession(session); - this.$markerBack.setSession(session); - this.$markerFront.setSession(session); - this.$gutterLayer.setSession(session); - this.$textLayer.setSession(session); - if (!session) - return; - this.$loop.schedule(this.CHANGE_FULL); - this.session.$setFontMetrics(this.$fontMetrics); - this.scrollBarH.scrollLeft = this.scrollBarV.scrollTop = null; - this.onChangeNewLineMode = this.onChangeNewLineMode.bind(this); - this.onChangeNewLineMode(); - this.session.doc.on("changeNewLineMode", this.onChangeNewLineMode); - }; - VirtualRenderer.prototype.updateLines = function (firstRow, lastRow, force) { - if (lastRow === undefined) - lastRow = Infinity; - if (!this.$changedLines) { - this.$changedLines = { - firstRow: firstRow, - lastRow: lastRow - }; - } - else { - if (this.$changedLines.firstRow > firstRow) - this.$changedLines.firstRow = firstRow; - if (this.$changedLines.lastRow < lastRow) - this.$changedLines.lastRow = lastRow; - } - if (this.$changedLines.lastRow < this.layerConfig.firstRow) { - if (force) - this.$changedLines.lastRow = this.layerConfig.lastRow; - else - return; - } - if (this.$changedLines.firstRow > this.layerConfig.lastRow) - return; - this.$loop.schedule(this.CHANGE_LINES); - }; - VirtualRenderer.prototype.onChangeNewLineMode = function () { - this.$loop.schedule(this.CHANGE_TEXT); - this.$textLayer.$updateEolChar(); - this.session.$bidiHandler.setEolChar(this.$textLayer.EOL_CHAR); - }; - VirtualRenderer.prototype.onChangeTabSize = function () { - this.$loop.schedule(this.CHANGE_TEXT | this.CHANGE_MARKER); - this.$textLayer.onChangeTabSize(); - }; - VirtualRenderer.prototype.updateText = function () { - this.$loop.schedule(this.CHANGE_TEXT); - }; - VirtualRenderer.prototype.updateFull = function (force) { - if (force) - this.$renderChanges(this.CHANGE_FULL, true); - else - this.$loop.schedule(this.CHANGE_FULL); - }; - VirtualRenderer.prototype.updateFontSize = function () { - this.$textLayer.checkForSizeChanges(); - }; - VirtualRenderer.prototype.$updateSizeAsync = function () { - if (this.$loop.pending) - this.$size.$dirty = true; - else - this.onResize(); - }; - VirtualRenderer.prototype.onResize = function (force, gutterWidth, width, height) { - if (this.resizing > 2) - return; - else if (this.resizing > 0) - this.resizing++; - else - this.resizing = force ? 1 : 0; - var el = this.container; - if (!height) - height = el.clientHeight || el.scrollHeight; - if (!width) - width = el.clientWidth || el.scrollWidth; - var changes = this.$updateCachedSize(force, gutterWidth, width, height); - if (this.$resizeTimer) - this.$resizeTimer.cancel(); - if (!this.$size.scrollerHeight || (!width && !height)) - return this.resizing = 0; - if (force) - this.$gutterLayer.$padding = null; - if (force) - this.$renderChanges(changes | this.$changes, true); - else - this.$loop.schedule(changes | this.$changes); - if (this.resizing) - this.resizing = 0; - this.scrollBarH.scrollLeft = this.scrollBarV.scrollTop = null; - if (this.$customScrollbar) { - this.$updateCustomScrollbar(true); - } - }; - VirtualRenderer.prototype.$updateCachedSize = function (force, gutterWidth, width, height) { - height -= (this.$extraHeight || 0); - var changes = 0; - var size = this.$size; - var oldSize = { - width: size.width, - height: size.height, - scrollerHeight: size.scrollerHeight, - scrollerWidth: size.scrollerWidth - }; - if (height && (force || size.height != height)) { - size.height = height; - changes |= this.CHANGE_SIZE; - size.scrollerHeight = size.height; - if (this.$horizScroll) - size.scrollerHeight -= this.scrollBarH.getHeight(); - this.scrollBarV.setHeight(size.scrollerHeight); - this.scrollBarV.element.style.bottom = this.scrollBarH.getHeight() + "px"; - changes = changes | this.CHANGE_SCROLL; - } - if (width && (force || size.width != width)) { - changes |= this.CHANGE_SIZE; - size.width = width; - if (gutterWidth == null) - gutterWidth = this.$showGutter ? this.$gutter.offsetWidth : 0; - this.gutterWidth = gutterWidth; - dom.setStyle(this.scrollBarH.element.style, "left", gutterWidth + "px"); - dom.setStyle(this.scroller.style, "left", gutterWidth + this.margin.left + "px"); - size.scrollerWidth = Math.max(0, width - gutterWidth - this.scrollBarV.getWidth() - this.margin.h); - dom.setStyle(this.$gutter.style, "left", this.margin.left + "px"); - var right = this.scrollBarV.getWidth() + "px"; - dom.setStyle(this.scrollBarH.element.style, "right", right); - dom.setStyle(this.scroller.style, "right", right); - dom.setStyle(this.scroller.style, "bottom", this.scrollBarH.getHeight()); - this.scrollBarH.setWidth(size.scrollerWidth); - if (this.session && this.session.getUseWrapMode() && this.adjustWrapLimit() || force) { - changes |= this.CHANGE_FULL; - } - } - size.$dirty = !width || !height; - if (changes) - this._signal("resize", oldSize); - return changes; - }; - VirtualRenderer.prototype.onGutterResize = function (width) { - var gutterWidth = this.$showGutter ? width : 0; - if (gutterWidth != this.gutterWidth) - this.$changes |= this.$updateCachedSize(true, gutterWidth, this.$size.width, this.$size.height); - if (this.session.getUseWrapMode() && this.adjustWrapLimit()) { - this.$loop.schedule(this.CHANGE_FULL); - } - else if (this.$size.$dirty) { - this.$loop.schedule(this.CHANGE_FULL); - } - else { - this.$computeLayerConfig(); - } - }; - VirtualRenderer.prototype.adjustWrapLimit = function () { - var availableWidth = this.$size.scrollerWidth - this.$padding * 2; - var limit = Math.floor(availableWidth / this.characterWidth); - return this.session.adjustWrapLimit(limit, this.$showPrintMargin && this.$printMarginColumn); - }; - VirtualRenderer.prototype.setAnimatedScroll = function (shouldAnimate) { - this.setOption("animatedScroll", shouldAnimate); - }; - VirtualRenderer.prototype.getAnimatedScroll = function () { - return this.$animatedScroll; - }; - VirtualRenderer.prototype.setShowInvisibles = function (showInvisibles) { - this.setOption("showInvisibles", showInvisibles); - this.session.$bidiHandler.setShowInvisibles(showInvisibles); - }; - VirtualRenderer.prototype.getShowInvisibles = function () { - return this.getOption("showInvisibles"); - }; - VirtualRenderer.prototype.getDisplayIndentGuides = function () { - return this.getOption("displayIndentGuides"); - }; - VirtualRenderer.prototype.setDisplayIndentGuides = function (display) { - this.setOption("displayIndentGuides", display); - }; - VirtualRenderer.prototype.getHighlightIndentGuides = function () { - return this.getOption("highlightIndentGuides"); - }; - VirtualRenderer.prototype.setHighlightIndentGuides = function (highlight) { - this.setOption("highlightIndentGuides", highlight); - }; - VirtualRenderer.prototype.setShowPrintMargin = function (showPrintMargin) { - this.setOption("showPrintMargin", showPrintMargin); - }; - VirtualRenderer.prototype.getShowPrintMargin = function () { - return this.getOption("showPrintMargin"); - }; - VirtualRenderer.prototype.setPrintMarginColumn = function (showPrintMargin) { - this.setOption("printMarginColumn", showPrintMargin); - }; - VirtualRenderer.prototype.getPrintMarginColumn = function () { - return this.getOption("printMarginColumn"); - }; - VirtualRenderer.prototype.getShowGutter = function () { - return this.getOption("showGutter"); - }; - VirtualRenderer.prototype.setShowGutter = function (show) { - return this.setOption("showGutter", show); - }; - VirtualRenderer.prototype.getFadeFoldWidgets = function () { - return this.getOption("fadeFoldWidgets"); - }; - VirtualRenderer.prototype.setFadeFoldWidgets = function (show) { - this.setOption("fadeFoldWidgets", show); - }; - VirtualRenderer.prototype.setHighlightGutterLine = function (shouldHighlight) { - this.setOption("highlightGutterLine", shouldHighlight); - }; - VirtualRenderer.prototype.getHighlightGutterLine = function () { - return this.getOption("highlightGutterLine"); - }; - VirtualRenderer.prototype.$updatePrintMargin = function () { - if (!this.$showPrintMargin && !this.$printMarginEl) - return; - if (!this.$printMarginEl) { - var containerEl = dom.createElement("div"); - containerEl.className = "ace_layer ace_print-margin-layer"; - this.$printMarginEl = dom.createElement("div"); - this.$printMarginEl.className = "ace_print-margin"; - containerEl.appendChild(this.$printMarginEl); - this.content.insertBefore(containerEl, this.content.firstChild); - } - var style = this.$printMarginEl.style; - style.left = Math.round(this.characterWidth * this.$printMarginColumn + this.$padding) + "px"; - style.visibility = this.$showPrintMargin ? "visible" : "hidden"; - if (this.session && this.session.$wrap == -1) - this.adjustWrapLimit(); - }; - VirtualRenderer.prototype.getContainerElement = function () { - return this.container; - }; - VirtualRenderer.prototype.getMouseEventTarget = function () { - return this.scroller; - }; - VirtualRenderer.prototype.getTextAreaContainer = function () { - return this.container; - }; - VirtualRenderer.prototype.$moveTextAreaToCursor = function () { - if (this.$isMousePressed) - return; - var style = this.textarea.style; - var composition = this.$composition; - if (!this.$keepTextAreaAtCursor && !composition) { - dom.translate(this.textarea, -100, 0); - return; - } - var pixelPos = this.$cursorLayer.$pixelPos; - if (!pixelPos) - return; - if (composition && composition.markerRange) - pixelPos = this.$cursorLayer.getPixelPosition(composition.markerRange.start, true); - var config = this.layerConfig; - var posTop = pixelPos.top; - var posLeft = pixelPos.left; - posTop -= config.offset; - var h = composition && composition.useTextareaForIME || useragent.isMobile ? this.lineHeight : 1; - if (posTop < 0 || posTop > config.height - h) { - dom.translate(this.textarea, 0, 0); - return; - } - var w = 1; - var maxTop = this.$size.height - h; - if (!composition) { - posTop += this.lineHeight; - } - else { - if (composition.useTextareaForIME) { - var val = this.textarea.value; - w = this.characterWidth * (this.session.$getStringScreenWidth(val)[0]); - } - else { - posTop += this.lineHeight + 2; - } - } - posLeft -= this.scrollLeft; - if (posLeft > this.$size.scrollerWidth - w) - posLeft = this.$size.scrollerWidth - w; - posLeft += this.gutterWidth + this.margin.left; - dom.setStyle(style, "height", h + "px"); - dom.setStyle(style, "width", w + "px"); - dom.translate(this.textarea, Math.min(posLeft, this.$size.scrollerWidth - w), Math.min(posTop, maxTop)); - }; - VirtualRenderer.prototype.getFirstVisibleRow = function () { - return this.layerConfig.firstRow; - }; - VirtualRenderer.prototype.getFirstFullyVisibleRow = function () { - return this.layerConfig.firstRow + (this.layerConfig.offset === 0 ? 0 : 1); - }; - VirtualRenderer.prototype.getLastFullyVisibleRow = function () { - var config = this.layerConfig; - var lastRow = config.lastRow; - var top = this.session.documentToScreenRow(lastRow, 0) * config.lineHeight; - if (top - this.session.getScrollTop() > config.height - config.lineHeight) - return lastRow - 1; - return lastRow; - }; - VirtualRenderer.prototype.getLastVisibleRow = function () { - return this.layerConfig.lastRow; - }; - VirtualRenderer.prototype.setPadding = function (padding) { - this.$padding = padding; - this.$textLayer.setPadding(padding); - this.$cursorLayer.setPadding(padding); - this.$markerFront.setPadding(padding); - this.$markerBack.setPadding(padding); - this.$loop.schedule(this.CHANGE_FULL); - this.$updatePrintMargin(); - }; - VirtualRenderer.prototype.setScrollMargin = function (top, bottom, left, right) { - var sm = this.scrollMargin; - sm.top = top | 0; - sm.bottom = bottom | 0; - sm.right = right | 0; - sm.left = left | 0; - sm.v = sm.top + sm.bottom; - sm.h = sm.left + sm.right; - if (sm.top && this.scrollTop <= 0 && this.session) - this.session.setScrollTop(-sm.top); - this.updateFull(); - }; - VirtualRenderer.prototype.setMargin = function (top, bottom, left, right) { - var sm = this.margin; - sm.top = top | 0; - sm.bottom = bottom | 0; - sm.right = right | 0; - sm.left = left | 0; - sm.v = sm.top + sm.bottom; - sm.h = sm.left + sm.right; - this.$updateCachedSize(true, this.gutterWidth, this.$size.width, this.$size.height); - this.updateFull(); - }; - VirtualRenderer.prototype.getHScrollBarAlwaysVisible = function () { - return this.$hScrollBarAlwaysVisible; - }; - VirtualRenderer.prototype.setHScrollBarAlwaysVisible = function (alwaysVisible) { - this.setOption("hScrollBarAlwaysVisible", alwaysVisible); - }; - VirtualRenderer.prototype.getVScrollBarAlwaysVisible = function () { - return this.$vScrollBarAlwaysVisible; - }; - VirtualRenderer.prototype.setVScrollBarAlwaysVisible = function (alwaysVisible) { - this.setOption("vScrollBarAlwaysVisible", alwaysVisible); - }; - VirtualRenderer.prototype.$updateScrollBarV = function () { - var scrollHeight = this.layerConfig.maxHeight; - var scrollerHeight = this.$size.scrollerHeight; - if (!this.$maxLines && this.$scrollPastEnd) { - scrollHeight -= (scrollerHeight - this.lineHeight) * this.$scrollPastEnd; - if (this.scrollTop > scrollHeight - scrollerHeight) { - scrollHeight = this.scrollTop + scrollerHeight; - this.scrollBarV.scrollTop = null; - } - } - this.scrollBarV.setScrollHeight(scrollHeight + this.scrollMargin.v); - this.scrollBarV.setScrollTop(this.scrollTop + this.scrollMargin.top); - }; - VirtualRenderer.prototype.$updateScrollBarH = function () { - this.scrollBarH.setScrollWidth(this.layerConfig.width + 2 * this.$padding + this.scrollMargin.h); - this.scrollBarH.setScrollLeft(this.scrollLeft + this.scrollMargin.left); - }; - VirtualRenderer.prototype.freeze = function () { - this.$frozen = true; - }; - VirtualRenderer.prototype.unfreeze = function () { - this.$frozen = false; - }; - VirtualRenderer.prototype.$renderChanges = function (changes, force) { - if (this.$changes) { - changes |= this.$changes; - this.$changes = 0; - } - if ((!this.session || !this.container.offsetWidth || this.$frozen) || (!changes && !force)) { - this.$changes |= changes; - return; - } - if (this.$size.$dirty) { - this.$changes |= changes; - return this.onResize(true); - } - if (!this.lineHeight) { - this.$textLayer.checkForSizeChanges(); - } - this._signal("beforeRender", changes); - if (this.session && this.session.$bidiHandler) - this.session.$bidiHandler.updateCharacterWidths(this.$fontMetrics); - var config = this.layerConfig; - if (changes & this.CHANGE_FULL || - changes & this.CHANGE_SIZE || - changes & this.CHANGE_TEXT || - changes & this.CHANGE_LINES || - changes & this.CHANGE_SCROLL || - changes & this.CHANGE_H_SCROLL) { - changes |= this.$computeLayerConfig() | this.$loop.clear(); - if (config.firstRow != this.layerConfig.firstRow && config.firstRowScreen == this.layerConfig.firstRowScreen) { - var st = this.scrollTop + (config.firstRow - Math.max(this.layerConfig.firstRow, 0)) * this.lineHeight; - if (st > 0) { - this.scrollTop = st; - changes = changes | this.CHANGE_SCROLL; - changes |= this.$computeLayerConfig() | this.$loop.clear(); - } - } - config = this.layerConfig; - this.$updateScrollBarV(); - if (changes & this.CHANGE_H_SCROLL) - this.$updateScrollBarH(); - dom.translate(this.content, -this.scrollLeft, -config.offset); - var width = config.width + 2 * this.$padding + "px"; - var height = config.minHeight + "px"; - dom.setStyle(this.content.style, "width", width); - dom.setStyle(this.content.style, "height", height); - } - if (changes & this.CHANGE_H_SCROLL) { - dom.translate(this.content, -this.scrollLeft, -config.offset); - this.scroller.className = this.scrollLeft <= 0 ? "ace_scroller " : "ace_scroller ace_scroll-left "; - if (this.enableKeyboardAccessibility) - this.scroller.className += this.keyboardFocusClassName; - } - if (changes & this.CHANGE_FULL) { - this.$changedLines = null; - this.$textLayer.update(config); - if (this.$showGutter) - this.$gutterLayer.update(config); - if (this.$customScrollbar) { - this.$scrollDecorator.$updateDecorators(config); - } - this.$markerBack.update(config); - this.$markerFront.update(config); - this.$cursorLayer.update(config); - this.$moveTextAreaToCursor(); - this._signal("afterRender", changes); - return; - } - if (changes & this.CHANGE_SCROLL) { - this.$changedLines = null; - if (changes & this.CHANGE_TEXT || changes & this.CHANGE_LINES) - this.$textLayer.update(config); - else - this.$textLayer.scrollLines(config); - if (this.$showGutter) { - if (changes & this.CHANGE_GUTTER || changes & this.CHANGE_LINES) - this.$gutterLayer.update(config); - else - this.$gutterLayer.scrollLines(config); - } - if (this.$customScrollbar) { - this.$scrollDecorator.$updateDecorators(config); - } - this.$markerBack.update(config); - this.$markerFront.update(config); - this.$cursorLayer.update(config); - this.$moveTextAreaToCursor(); - this._signal("afterRender", changes); - return; - } - if (changes & this.CHANGE_TEXT) { - this.$changedLines = null; - this.$textLayer.update(config); - if (this.$showGutter) - this.$gutterLayer.update(config); - if (this.$customScrollbar) { - this.$scrollDecorator.$updateDecorators(config); - } - } - else if (changes & this.CHANGE_LINES) { - if (this.$updateLines() || (changes & this.CHANGE_GUTTER) && this.$showGutter) - this.$gutterLayer.update(config); - if (this.$customScrollbar) { - this.$scrollDecorator.$updateDecorators(config); - } - } - else if (changes & this.CHANGE_TEXT || changes & this.CHANGE_GUTTER) { - if (this.$showGutter) - this.$gutterLayer.update(config); - if (this.$customScrollbar) { - this.$scrollDecorator.$updateDecorators(config); - } - } - else if (changes & this.CHANGE_CURSOR) { - if (this.$highlightGutterLine) - this.$gutterLayer.updateLineHighlight(config); - if (this.$customScrollbar) { - this.$scrollDecorator.$updateDecorators(config); - } - } - if (changes & this.CHANGE_CURSOR) { - this.$cursorLayer.update(config); - this.$moveTextAreaToCursor(); - } - if (changes & (this.CHANGE_MARKER | this.CHANGE_MARKER_FRONT)) { - this.$markerFront.update(config); - } - if (changes & (this.CHANGE_MARKER | this.CHANGE_MARKER_BACK)) { - this.$markerBack.update(config); - } - this._signal("afterRender", changes); - }; - VirtualRenderer.prototype.$autosize = function () { - var height = this.session.getScreenLength() * this.lineHeight; - var maxHeight = this.$maxLines * this.lineHeight; - var desiredHeight = Math.min(maxHeight, Math.max((this.$minLines || 1) * this.lineHeight, height)) + this.scrollMargin.v + (this.$extraHeight || 0); - if (this.$horizScroll) - desiredHeight += this.scrollBarH.getHeight(); - if (this.$maxPixelHeight && desiredHeight > this.$maxPixelHeight) - desiredHeight = this.$maxPixelHeight; - var hideScrollbars = desiredHeight <= 2 * this.lineHeight; - var vScroll = !hideScrollbars && height > maxHeight; - if (desiredHeight != this.desiredHeight || - this.$size.height != this.desiredHeight || vScroll != this.$vScroll) { - if (vScroll != this.$vScroll) { - this.$vScroll = vScroll; - this.scrollBarV.setVisible(vScroll); - } - var w = this.container.clientWidth; - this.container.style.height = desiredHeight + "px"; - this.$updateCachedSize(true, this.$gutterWidth, w, desiredHeight); - this.desiredHeight = desiredHeight; - this._signal("autosize"); - } - }; - VirtualRenderer.prototype.$computeLayerConfig = function () { - var session = this.session; - var size = this.$size; - var hideScrollbars = size.height <= 2 * this.lineHeight; - var screenLines = this.session.getScreenLength(); - var maxHeight = screenLines * this.lineHeight; - var longestLine = this.$getLongestLine(); - var horizScroll = !hideScrollbars && (this.$hScrollBarAlwaysVisible || - size.scrollerWidth - longestLine - 2 * this.$padding < 0); - var hScrollChanged = this.$horizScroll !== horizScroll; - if (hScrollChanged) { - this.$horizScroll = horizScroll; - this.scrollBarH.setVisible(horizScroll); - } - var vScrollBefore = this.$vScroll; // autosize can change vscroll value in which case we need to update longestLine - if (this.$maxLines && this.lineHeight > 1) - this.$autosize(); - var minHeight = size.scrollerHeight + this.lineHeight; - var scrollPastEnd = !this.$maxLines && this.$scrollPastEnd - ? (size.scrollerHeight - this.lineHeight) * this.$scrollPastEnd - : 0; - maxHeight += scrollPastEnd; - var sm = this.scrollMargin; - this.session.setScrollTop(Math.max(-sm.top, Math.min(this.scrollTop, maxHeight - size.scrollerHeight + sm.bottom))); - this.session.setScrollLeft(Math.max(-sm.left, Math.min(this.scrollLeft, longestLine + 2 * this.$padding - size.scrollerWidth + sm.right))); - var vScroll = !hideScrollbars && (this.$vScrollBarAlwaysVisible || - size.scrollerHeight - maxHeight + scrollPastEnd < 0 || this.scrollTop > sm.top); - var vScrollChanged = vScrollBefore !== vScroll; - if (vScrollChanged) { - this.$vScroll = vScroll; - this.scrollBarV.setVisible(vScroll); - } - var offset = this.scrollTop % this.lineHeight; - var lineCount = Math.ceil(minHeight / this.lineHeight) - 1; - var firstRow = Math.max(0, Math.round((this.scrollTop - offset) / this.lineHeight)); - var lastRow = firstRow + lineCount; - var firstRowScreen, firstRowHeight; - var lineHeight = this.lineHeight; - firstRow = session.screenToDocumentRow(firstRow, 0); - var foldLine = session.getFoldLine(firstRow); - if (foldLine) { - firstRow = foldLine.start.row; - } - firstRowScreen = session.documentToScreenRow(firstRow, 0); - firstRowHeight = session.getRowLength(firstRow) * lineHeight; - lastRow = Math.min(session.screenToDocumentRow(lastRow, 0), session.getLength() - 1); - minHeight = size.scrollerHeight + session.getRowLength(lastRow) * lineHeight + - firstRowHeight; - offset = this.scrollTop - firstRowScreen * lineHeight; - var changes = 0; - if (this.layerConfig.width != longestLine || hScrollChanged) - changes = this.CHANGE_H_SCROLL; - if (hScrollChanged || vScrollChanged) { - changes |= this.$updateCachedSize(true, this.gutterWidth, size.width, size.height); - this._signal("scrollbarVisibilityChanged"); - if (vScrollChanged) - longestLine = this.$getLongestLine(); - } - this.layerConfig = { - width: longestLine, - padding: this.$padding, - firstRow: firstRow, - firstRowScreen: firstRowScreen, - lastRow: lastRow, - lineHeight: lineHeight, - characterWidth: this.characterWidth, - minHeight: minHeight, - maxHeight: maxHeight, - offset: offset, - gutterOffset: lineHeight ? Math.max(0, Math.ceil((offset + size.height - size.scrollerHeight) / lineHeight)) : 0, - height: this.$size.scrollerHeight - }; - if (this.session.$bidiHandler) - this.session.$bidiHandler.setContentWidth(longestLine - this.$padding); - return changes; - }; - VirtualRenderer.prototype.$updateLines = function () { - if (!this.$changedLines) - return; - var firstRow = this.$changedLines.firstRow; - var lastRow = this.$changedLines.lastRow; - this.$changedLines = null; - var layerConfig = this.layerConfig; - if (firstRow > layerConfig.lastRow + 1) { - return; - } - if (lastRow < layerConfig.firstRow) { - return; - } - if (lastRow === Infinity) { - if (this.$showGutter) - this.$gutterLayer.update(layerConfig); - this.$textLayer.update(layerConfig); - return; - } - this.$textLayer.updateLines(layerConfig, firstRow, lastRow); - return true; - }; - VirtualRenderer.prototype.$getLongestLine = function () { - var charCount = this.session.getScreenWidth(); - if (this.showInvisibles && !this.session.$useWrapMode) - charCount += 1; - if (this.$textLayer && charCount > this.$textLayer.MAX_LINE_LENGTH) - charCount = this.$textLayer.MAX_LINE_LENGTH + 30; - return Math.max(this.$size.scrollerWidth - 2 * this.$padding, Math.round(charCount * this.characterWidth)); - }; - VirtualRenderer.prototype.updateFrontMarkers = function () { - this.$markerFront.setMarkers(this.session.getMarkers(true)); - this.$loop.schedule(this.CHANGE_MARKER_FRONT); - }; - VirtualRenderer.prototype.updateBackMarkers = function () { - this.$markerBack.setMarkers(this.session.getMarkers()); - this.$loop.schedule(this.CHANGE_MARKER_BACK); - }; - VirtualRenderer.prototype.addGutterDecoration = function (row, className) { - this.$gutterLayer.addGutterDecoration(row, className); - }; - VirtualRenderer.prototype.removeGutterDecoration = function (row, className) { - this.$gutterLayer.removeGutterDecoration(row, className); - }; - VirtualRenderer.prototype.updateBreakpoints = function (rows) { - this.$loop.schedule(this.CHANGE_GUTTER); - }; - VirtualRenderer.prototype.setAnnotations = function (annotations) { - this.$gutterLayer.setAnnotations(annotations); - this.$loop.schedule(this.CHANGE_GUTTER); - }; - VirtualRenderer.prototype.updateCursor = function () { - this.$loop.schedule(this.CHANGE_CURSOR); - }; - VirtualRenderer.prototype.hideCursor = function () { - this.$cursorLayer.hideCursor(); - }; - VirtualRenderer.prototype.showCursor = function () { - this.$cursorLayer.showCursor(); - }; - VirtualRenderer.prototype.scrollSelectionIntoView = function (anchor, lead, offset) { - this.scrollCursorIntoView(anchor, offset); - this.scrollCursorIntoView(lead, offset); - }; - VirtualRenderer.prototype.scrollCursorIntoView = function (cursor, offset, $viewMargin) { - if (this.$size.scrollerHeight === 0) - return; - var pos = this.$cursorLayer.getPixelPosition(cursor); - var newLeft = pos.left; - var newTop = pos.top; - var topMargin = $viewMargin && $viewMargin.top || 0; - var bottomMargin = $viewMargin && $viewMargin.bottom || 0; - if (this.$scrollAnimation) { - this.$stopAnimation = true; - } - var currentTop = this.$scrollAnimation ? this.session.getScrollTop() : this.scrollTop; - if (currentTop + topMargin > newTop) { - if (offset && currentTop + topMargin > newTop + this.lineHeight) - newTop -= offset * this.$size.scrollerHeight; - if (newTop === 0) - newTop = -this.scrollMargin.top; - this.session.setScrollTop(newTop); - } - else if (currentTop + this.$size.scrollerHeight - bottomMargin < newTop + this.lineHeight) { - if (offset && currentTop + this.$size.scrollerHeight - bottomMargin < newTop - this.lineHeight) - newTop += offset * this.$size.scrollerHeight; - this.session.setScrollTop(newTop + this.lineHeight + bottomMargin - this.$size.scrollerHeight); - } - var currentLeft = this.scrollLeft; - var twoCharsWidth = 2 * this.layerConfig.characterWidth; - if (newLeft - twoCharsWidth < currentLeft) { - newLeft -= twoCharsWidth; - if (newLeft < this.$padding + twoCharsWidth) { - newLeft = -this.scrollMargin.left; - } - this.session.setScrollLeft(newLeft); - } - else { - newLeft += twoCharsWidth; - if (currentLeft + this.$size.scrollerWidth < newLeft + this.characterWidth) { - this.session.setScrollLeft(Math.round(newLeft + this.characterWidth - this.$size.scrollerWidth)); - } - else if (currentLeft <= this.$padding && newLeft - currentLeft < this.characterWidth) { - this.session.setScrollLeft(0); - } - } - }; - VirtualRenderer.prototype.getScrollTop = function () { - return this.session.getScrollTop(); - }; - VirtualRenderer.prototype.getScrollLeft = function () { - return this.session.getScrollLeft(); - }; - VirtualRenderer.prototype.getScrollTopRow = function () { - return this.scrollTop / this.lineHeight; - }; - VirtualRenderer.prototype.getScrollBottomRow = function () { - return Math.max(0, Math.floor((this.scrollTop + this.$size.scrollerHeight) / this.lineHeight) - 1); - }; - VirtualRenderer.prototype.scrollToRow = function (row) { - this.session.setScrollTop(row * this.lineHeight); - }; - VirtualRenderer.prototype.alignCursor = function (cursor, alignment) { - if (typeof cursor == "number") - cursor = { row: cursor, column: 0 }; - var pos = this.$cursorLayer.getPixelPosition(cursor); - var h = this.$size.scrollerHeight - this.lineHeight; - var offset = pos.top - h * (alignment || 0); - this.session.setScrollTop(offset); - return offset; - }; - VirtualRenderer.prototype.$calcSteps = function (fromValue, toValue) { - var i = 0; - var l = this.STEPS; - var steps = []; - var func = function (t, x_min, dx) { - return dx * (Math.pow(t - 1, 3) + 1) + x_min; - }; - for (i = 0; i < l; ++i) - steps.push(func(i / this.STEPS, fromValue, toValue - fromValue)); - return steps; - }; - VirtualRenderer.prototype.scrollToLine = function (line, center, animate, callback) { - var pos = this.$cursorLayer.getPixelPosition({ row: line, column: 0 }); - var offset = pos.top; - if (center) - offset -= this.$size.scrollerHeight / 2; - var initialScroll = this.scrollTop; - this.session.setScrollTop(offset); - if (animate !== false) - this.animateScrolling(initialScroll, callback); - }; - VirtualRenderer.prototype.animateScrolling = function (fromValue, callback) { - var toValue = this.scrollTop; - if (!this.$animatedScroll) - return; - var _self = this; - if (fromValue == toValue) - return; - if (this.$scrollAnimation) { - var oldSteps = this.$scrollAnimation.steps; - if (oldSteps.length) { - fromValue = oldSteps[0]; - if (fromValue == toValue) - return; - } - } - var steps = _self.$calcSteps(fromValue, toValue); - this.$scrollAnimation = { from: fromValue, to: toValue, steps: steps }; - clearInterval(this.$timer); - _self.session.setScrollTop(steps.shift()); - _self.session.$scrollTop = toValue; - function endAnimation() { - _self.$timer = clearInterval(_self.$timer); - _self.$scrollAnimation = null; - _self.$stopAnimation = false; - callback && callback(); - } - this.$timer = setInterval(function () { - if (_self.$stopAnimation) { - endAnimation(); - return; - } - if (!_self.session) - return clearInterval(_self.$timer); - if (steps.length) { - _self.session.setScrollTop(steps.shift()); - _self.session.$scrollTop = toValue; - } - else if (toValue != null) { - _self.session.$scrollTop = -1; - _self.session.setScrollTop(toValue); - toValue = null; - } - else { - endAnimation(); - } - }, 10); - }; - VirtualRenderer.prototype.scrollToY = function (scrollTop) { - if (this.scrollTop !== scrollTop) { - this.$loop.schedule(this.CHANGE_SCROLL); - this.scrollTop = scrollTop; - } - }; - VirtualRenderer.prototype.scrollToX = function (scrollLeft) { - if (this.scrollLeft !== scrollLeft) - this.scrollLeft = scrollLeft; - this.$loop.schedule(this.CHANGE_H_SCROLL); - }; - VirtualRenderer.prototype.scrollTo = function (x, y) { - this.session.setScrollTop(y); - this.session.setScrollLeft(x); - }; - VirtualRenderer.prototype.scrollBy = function (deltaX, deltaY) { - deltaY && this.session.setScrollTop(this.session.getScrollTop() + deltaY); - deltaX && this.session.setScrollLeft(this.session.getScrollLeft() + deltaX); - }; - VirtualRenderer.prototype.isScrollableBy = function (deltaX, deltaY) { - if (deltaY < 0 && this.session.getScrollTop() >= 1 - this.scrollMargin.top) - return true; - if (deltaY > 0 && this.session.getScrollTop() + this.$size.scrollerHeight - - this.layerConfig.maxHeight < -1 + this.scrollMargin.bottom) - return true; - if (deltaX < 0 && this.session.getScrollLeft() >= 1 - this.scrollMargin.left) - return true; - if (deltaX > 0 && this.session.getScrollLeft() + this.$size.scrollerWidth - - this.layerConfig.width < -1 + this.scrollMargin.right) - return true; - }; - VirtualRenderer.prototype.pixelToScreenCoordinates = function (x, y) { - var canvasPos; - if (this.$hasCssTransforms) { - canvasPos = { top: 0, left: 0 }; - var p = this.$fontMetrics.transformCoordinates([x, y]); - x = p[1] - this.gutterWidth - this.margin.left; - y = p[0]; - } - else { - canvasPos = this.scroller.getBoundingClientRect(); - } - var offsetX = x + this.scrollLeft - canvasPos.left - this.$padding; - var offset = offsetX / this.characterWidth; - var row = Math.floor((y + this.scrollTop - canvasPos.top) / this.lineHeight); - var col = this.$blockCursor ? Math.floor(offset) : Math.round(offset); - return { row: row, column: col, side: offset - col > 0 ? 1 : -1, offsetX: offsetX }; - }; - VirtualRenderer.prototype.screenToTextCoordinates = function (x, y) { - var canvasPos; - if (this.$hasCssTransforms) { - canvasPos = { top: 0, left: 0 }; - var p = this.$fontMetrics.transformCoordinates([x, y]); - x = p[1] - this.gutterWidth - this.margin.left; - y = p[0]; - } - else { - canvasPos = this.scroller.getBoundingClientRect(); - } - var offsetX = x + this.scrollLeft - canvasPos.left - this.$padding; - var offset = offsetX / this.characterWidth; - var col = this.$blockCursor ? Math.floor(offset) : Math.round(offset); - var row = Math.floor((y + this.scrollTop - canvasPos.top) / this.lineHeight); - return this.session.screenToDocumentPosition(row, Math.max(col, 0), offsetX); - }; - VirtualRenderer.prototype.textToScreenCoordinates = function (row, column) { - var canvasPos = this.scroller.getBoundingClientRect(); - var pos = this.session.documentToScreenPosition(row, column); - var x = this.$padding + (this.session.$bidiHandler.isBidiRow(pos.row, row) - ? this.session.$bidiHandler.getPosLeft(pos.column) - : Math.round(pos.column * this.characterWidth)); - var y = pos.row * this.lineHeight; - return { - pageX: canvasPos.left + x - this.scrollLeft, - pageY: canvasPos.top + y - this.scrollTop - }; - }; - VirtualRenderer.prototype.visualizeFocus = function () { - dom.addCssClass(this.container, "ace_focus"); - }; - VirtualRenderer.prototype.visualizeBlur = function () { - dom.removeCssClass(this.container, "ace_focus"); - }; - VirtualRenderer.prototype.showComposition = function (composition) { - this.$composition = composition; - if (!composition.cssText) { - composition.cssText = this.textarea.style.cssText; - } - if (composition.useTextareaForIME == undefined) - composition.useTextareaForIME = this.$useTextareaForIME; - if (this.$useTextareaForIME) { - dom.addCssClass(this.textarea, "ace_composition"); - this.textarea.style.cssText = ""; - this.$moveTextAreaToCursor(); - this.$cursorLayer.element.style.display = "none"; - } - else { - composition.markerId = this.session.addMarker(composition.markerRange, "ace_composition_marker", "text"); - } - }; - VirtualRenderer.prototype.setCompositionText = function (text) { - var cursor = this.session.selection.cursor; - this.addToken(text, "composition_placeholder", cursor.row, cursor.column); - this.$moveTextAreaToCursor(); - }; - VirtualRenderer.prototype.hideComposition = function () { - if (!this.$composition) - return; - if (this.$composition.markerId) - this.session.removeMarker(this.$composition.markerId); - dom.removeCssClass(this.textarea, "ace_composition"); - this.textarea.style.cssText = this.$composition.cssText; - var cursor = this.session.selection.cursor; - this.removeExtraToken(cursor.row, cursor.column); - this.$composition = null; - this.$cursorLayer.element.style.display = ""; - }; - VirtualRenderer.prototype.setGhostText = function (text, position) { - var cursor = this.session.selection.cursor; - var insertPosition = position || { row: cursor.row, column: cursor.column }; - this.removeGhostText(); - var textLines = text.split("\n"); - this.addToken(textLines[0], "ghost_text", insertPosition.row, insertPosition.column); - this.$ghostText = { - text: text, - position: { - row: insertPosition.row, - column: insertPosition.column - } - }; - if (textLines.length > 1) { - this.$ghostTextWidget = { - text: textLines.slice(1).join("\n"), - row: insertPosition.row, - column: insertPosition.column, - className: "ace_ghost_text" - }; - this.session.widgetManager.addLineWidget(this.$ghostTextWidget); - var pixelPosition = this.$cursorLayer.getPixelPosition(insertPosition, true); - var el = this.container; - var height = el.getBoundingClientRect().height; - var ghostTextHeight = textLines.length * this.lineHeight; - var fitsY = ghostTextHeight < height - pixelPosition.top; - if (fitsY) - return; - if (ghostTextHeight < height) { - this.scrollBy(0, (textLines.length - 1) * this.lineHeight); - } - else { - this.scrollBy(0, pixelPosition.top); - } - } - }; - VirtualRenderer.prototype.removeGhostText = function () { - if (!this.$ghostText) - return; - var position = this.$ghostText.position; - this.removeExtraToken(position.row, position.column); - if (this.$ghostTextWidget) { - this.session.widgetManager.removeLineWidget(this.$ghostTextWidget); - this.$ghostTextWidget = null; - } - this.$ghostText = null; - }; - VirtualRenderer.prototype.addToken = function (text, type, row, column) { - var session = this.session; - session.bgTokenizer.lines[row] = null; - var newToken = { type: type, value: text }; - var tokens = session.getTokens(row); - if (column == null || !tokens.length) { - tokens.push(newToken); - } - else { - var l = 0; - for (var i = 0; i < tokens.length; i++) { - var token = tokens[i]; - l += token.value.length; - if (column <= l) { - var diff = token.value.length - (l - column); - var before = token.value.slice(0, diff); - var after = token.value.slice(diff); - tokens.splice(i, 1, { type: token.type, value: before }, newToken, { type: token.type, value: after }); - break; - } - } - } - this.updateLines(row, row); - }; - VirtualRenderer.prototype.removeExtraToken = function (row, column) { - this.session.bgTokenizer.lines[row] = null; - this.updateLines(row, row); - }; - VirtualRenderer.prototype.setTheme = function (theme, cb) { - var _self = this; - this.$themeId = theme; - _self._dispatchEvent('themeChange', { theme: theme }); - if (!theme || typeof theme == "string") { - var moduleName = theme || this.$options.theme.initialValue; - config.loadModule(["theme", moduleName], afterLoad); - } - else { - afterLoad(theme); - } - function afterLoad(module) { - if (_self.$themeId != theme) - return cb && cb(); - if (!module || !module.cssClass) - throw new Error("couldn't load module " + theme + " or it didn't call define"); - if (module.$id) - _self.$themeId = module.$id; - dom.importCssString(module.cssText, module.cssClass, _self.container); - if (_self.theme) - dom.removeCssClass(_self.container, _self.theme.cssClass); - var padding = "padding" in module ? module.padding - : "padding" in (_self.theme || {}) ? 4 : _self.$padding; - if (_self.$padding && padding != _self.$padding) - _self.setPadding(padding); - _self.$theme = module.cssClass; - _self.theme = module; - dom.addCssClass(_self.container, module.cssClass); - dom.setCssClass(_self.container, "ace_dark", module.isDark); - if (_self.$size) { - _self.$size.width = 0; - _self.$updateSizeAsync(); - } - _self._dispatchEvent('themeLoaded', { theme: module }); - cb && cb(); - } - }; - VirtualRenderer.prototype.getTheme = function () { - return this.$themeId; - }; - VirtualRenderer.prototype.setStyle = function (style, include) { - dom.setCssClass(this.container, style, include !== false); - }; - VirtualRenderer.prototype.unsetStyle = function (style) { - dom.removeCssClass(this.container, style); - }; - VirtualRenderer.prototype.setCursorStyle = function (style) { - dom.setStyle(this.scroller.style, "cursor", style); - }; - VirtualRenderer.prototype.setMouseCursor = function (cursorStyle) { - dom.setStyle(this.scroller.style, "cursor", cursorStyle); - }; - VirtualRenderer.prototype.attachToShadowRoot = function () { - dom.importCssString(editorCss, "ace_editor.css", this.container); - }; - VirtualRenderer.prototype.destroy = function () { - this.freeze(); - this.$fontMetrics.destroy(); - this.$cursorLayer.destroy(); - this.removeAllListeners(); - this.container.textContent = ""; - this.setOption("useResizeObserver", false); - }; - VirtualRenderer.prototype.$updateCustomScrollbar = function (val) { - var _self = this; - this.$horizScroll = this.$vScroll = null; - this.scrollBarV.element.remove(); - this.scrollBarH.element.remove(); - if (this.$scrollDecorator) { - delete this.$scrollDecorator; - } - if (val === true) { - this.scrollBarV = new VScrollBarCustom(this.container, this); - this.scrollBarH = new HScrollBarCustom(this.container, this); - this.scrollBarV.setHeight(this.$size.scrollerHeight); - this.scrollBarH.setWidth(this.$size.scrollerWidth); - this.scrollBarV.addEventListener("scroll", function (e) { - if (!_self.$scrollAnimation) - _self.session.setScrollTop(e.data - _self.scrollMargin.top); - }); - this.scrollBarH.addEventListener("scroll", function (e) { - if (!_self.$scrollAnimation) - _self.session.setScrollLeft(e.data - _self.scrollMargin.left); - }); - this.$scrollDecorator = new Decorator(this.scrollBarV, this); - this.$scrollDecorator.$updateDecorators(); - } - else { - this.scrollBarV = new VScrollBar(this.container, this); - this.scrollBarH = new HScrollBar(this.container, this); - this.scrollBarV.addEventListener("scroll", function (e) { - if (!_self.$scrollAnimation) - _self.session.setScrollTop(e.data - _self.scrollMargin.top); - }); - this.scrollBarH.addEventListener("scroll", function (e) { - if (!_self.$scrollAnimation) - _self.session.setScrollLeft(e.data - _self.scrollMargin.left); - }); - } - }; - VirtualRenderer.prototype.$addResizeObserver = function () { - if (!window.ResizeObserver || this.$resizeObserver) - return; - var self = this; - this.$resizeTimer = lang.delayedCall(function () { - if (!self.destroyed) - self.onResize(); - }, 50); - this.$resizeObserver = new window.ResizeObserver(function (e) { - var w = e[0].contentRect.width; - var h = e[0].contentRect.height; - if (Math.abs(self.$size.width - w) > 1 - || Math.abs(self.$size.height - h) > 1) { - self.$resizeTimer.delay(); - } - else { - self.$resizeTimer.cancel(); - } - }); - this.$resizeObserver.observe(this.container); - }; - return VirtualRenderer; -}()); -VirtualRenderer.prototype.CHANGE_CURSOR = 1; -VirtualRenderer.prototype.CHANGE_MARKER = 2; -VirtualRenderer.prototype.CHANGE_GUTTER = 4; -VirtualRenderer.prototype.CHANGE_SCROLL = 8; -VirtualRenderer.prototype.CHANGE_LINES = 16; -VirtualRenderer.prototype.CHANGE_TEXT = 32; -VirtualRenderer.prototype.CHANGE_SIZE = 64; -VirtualRenderer.prototype.CHANGE_MARKER_BACK = 128; -VirtualRenderer.prototype.CHANGE_MARKER_FRONT = 256; -VirtualRenderer.prototype.CHANGE_FULL = 512; -VirtualRenderer.prototype.CHANGE_H_SCROLL = 1024; -VirtualRenderer.prototype.$changes = 0; -VirtualRenderer.prototype.$padding = null; -VirtualRenderer.prototype.$frozen = false; -VirtualRenderer.prototype.STEPS = 8; -oop.implement(VirtualRenderer.prototype, EventEmitter); -config.defineOptions(VirtualRenderer.prototype, "renderer", { - useResizeObserver: { - set: function (value) { - if (!value && this.$resizeObserver) { - this.$resizeObserver.disconnect(); - this.$resizeTimer.cancel(); - this.$resizeTimer = this.$resizeObserver = null; - } - else if (value && !this.$resizeObserver) { - this.$addResizeObserver(); - } - } - }, - animatedScroll: { initialValue: false }, - showInvisibles: { - set: function (value) { - if (this.$textLayer.setShowInvisibles(value)) - this.$loop.schedule(this.CHANGE_TEXT); - }, - initialValue: false - }, - showPrintMargin: { - set: function () { this.$updatePrintMargin(); }, - initialValue: true - }, - printMarginColumn: { - set: function () { this.$updatePrintMargin(); }, - initialValue: 80 - }, - printMargin: { - set: function (val) { - if (typeof val == "number") - this.$printMarginColumn = val; - this.$showPrintMargin = !!val; - this.$updatePrintMargin(); - }, - get: function () { - return this.$showPrintMargin && this.$printMarginColumn; - } - }, - showGutter: { - set: function (show) { - this.$gutter.style.display = show ? "block" : "none"; - this.$loop.schedule(this.CHANGE_FULL); - this.onGutterResize(); - }, - initialValue: true - }, - useSvgGutterIcons: { - set: function (value) { - this.$gutterLayer.$useSvgGutterIcons = value; - }, - initialValue: false - }, - showFoldedAnnotations: { - set: function (value) { - this.$gutterLayer.$showFoldedAnnotations = value; - }, - initialValue: false - }, - fadeFoldWidgets: { - set: function (show) { - dom.setCssClass(this.$gutter, "ace_fade-fold-widgets", show); - }, - initialValue: false - }, - showFoldWidgets: { - set: function (show) { - this.$gutterLayer.setShowFoldWidgets(show); - this.$loop.schedule(this.CHANGE_GUTTER); - }, - initialValue: true - }, - displayIndentGuides: { - set: function (show) { - if (this.$textLayer.setDisplayIndentGuides(show)) - this.$loop.schedule(this.CHANGE_TEXT); - }, - initialValue: true - }, - highlightIndentGuides: { - set: function (show) { - if (this.$textLayer.setHighlightIndentGuides(show) == true) { - this.$textLayer.$highlightIndentGuide(); - } - else { - this.$textLayer.$clearActiveIndentGuide(this.$textLayer.$lines.cells); - } - }, - initialValue: true - }, - highlightGutterLine: { - set: function (shouldHighlight) { - this.$gutterLayer.setHighlightGutterLine(shouldHighlight); - this.$loop.schedule(this.CHANGE_GUTTER); - }, - initialValue: true - }, - hScrollBarAlwaysVisible: { - set: function (val) { - if (!this.$hScrollBarAlwaysVisible || !this.$horizScroll) - this.$loop.schedule(this.CHANGE_SCROLL); - }, - initialValue: false - }, - vScrollBarAlwaysVisible: { - set: function (val) { - if (!this.$vScrollBarAlwaysVisible || !this.$vScroll) - this.$loop.schedule(this.CHANGE_SCROLL); - }, - initialValue: false - }, - fontSize: { - set: function (size) { - if (typeof size == "number") - size = size + "px"; - this.container.style.fontSize = size; - this.updateFontSize(); - }, - initialValue: 12 - }, - fontFamily: { - set: function (name) { - this.container.style.fontFamily = name; - this.updateFontSize(); - } - }, - maxLines: { - set: function (val) { - this.updateFull(); - } - }, - minLines: { - set: function (val) { - if (!(this.$minLines < 0x1ffffffffffff)) - this.$minLines = 0; - this.updateFull(); - } - }, - maxPixelHeight: { - set: function (val) { - this.updateFull(); - }, - initialValue: 0 - }, - scrollPastEnd: { - set: function (val) { - val = +val || 0; - if (this.$scrollPastEnd == val) - return; - this.$scrollPastEnd = val; - this.$loop.schedule(this.CHANGE_SCROLL); - }, - initialValue: 0, - handlesSet: true - }, - fixedWidthGutter: { - set: function (val) { - this.$gutterLayer.$fixedWidth = !!val; - this.$loop.schedule(this.CHANGE_GUTTER); - } - }, - customScrollbar: { - set: function (val) { - this.$updateCustomScrollbar(val); - }, - initialValue: false - }, - theme: { - set: function (val) { this.setTheme(val); }, - get: function () { return this.$themeId || this.theme; }, - initialValue: "./theme/textmate", - handlesSet: true - }, - hasCssTransforms: {}, - useTextareaForIME: { - initialValue: !useragent.isMobile && !useragent.isIE - } -}); -exports.VirtualRenderer = VirtualRenderer; - -}); - -ace.define("ace/worker/worker_client",["require","exports","module","ace/lib/oop","ace/lib/net","ace/lib/event_emitter","ace/config"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var net = require("../lib/net"); -var EventEmitter = require("../lib/event_emitter").EventEmitter; -var config = require("../config"); - -function $workerBlob(workerUrl) { - var script = "importScripts('" + net.qualifyURL(workerUrl) + "');"; - try { - return new Blob([script], {"type": "application/javascript"}); - } catch (e) { // Backwards-compatibility - var BlobBuilder = window.BlobBuilder || window.WebKitBlobBuilder || window.MozBlobBuilder; - var blobBuilder = new BlobBuilder(); - blobBuilder.append(script); - return blobBuilder.getBlob("application/javascript"); - } -} - -function createWorker(workerUrl) { - if (typeof Worker == "undefined") - return { postMessage: function() {}, terminate: function() {} }; - if (config.get("loadWorkerFromBlob")) { - var blob = $workerBlob(workerUrl); - var URL = window.URL || window.webkitURL; - var blobURL = URL.createObjectURL(blob); - return new Worker(blobURL); - } - return new Worker(workerUrl); -} - -var WorkerClient = function(worker) { - if (!worker.postMessage) - worker = this.$createWorkerFromOldConfig.apply(this, arguments); - - this.$worker = worker; - this.$sendDeltaQueue = this.$sendDeltaQueue.bind(this); - this.changeListener = this.changeListener.bind(this); - this.onMessage = this.onMessage.bind(this); - - this.callbackId = 1; - this.callbacks = {}; - - this.$worker.onmessage = this.onMessage; -}; - -(function(){ - - oop.implement(this, EventEmitter); - - this.$createWorkerFromOldConfig = function(topLevelNamespaces, mod, classname, workerUrl, importScripts) { - if (require.nameToUrl && !require.toUrl) - require.toUrl = require.nameToUrl; - - if (config.get("packaged") || !require.toUrl) { - workerUrl = workerUrl || config.moduleUrl(mod, "worker"); - } else { - var normalizePath = this.$normalizePath; - workerUrl = workerUrl || normalizePath(require.toUrl("ace/worker/worker.js", null, "_")); - - var tlns = {}; - topLevelNamespaces.forEach(function(ns) { - tlns[ns] = normalizePath(require.toUrl(ns, null, "_").replace(/(\.js)?(\?.*)?$/, "")); - }); - } - - this.$worker = createWorker(workerUrl); - if (importScripts) { - this.send("importScripts", importScripts); - } - this.$worker.postMessage({ - init : true, - tlns : tlns, - module : mod, - classname : classname - }); - return this.$worker; - }; - - this.onMessage = function(e) { - var msg = e.data; - switch (msg.type) { - case "event": - this._signal(msg.name, {data: msg.data}); - break; - case "call": - var callback = this.callbacks[msg.id]; - if (callback) { - callback(msg.data); - delete this.callbacks[msg.id]; - } - break; - case "error": - this.reportError(msg.data); - break; - case "log": - window.console && console.log && console.log.apply(console, msg.data); - break; - } - }; - - this.reportError = function(err) { - window.console && console.error && console.error(err); - }; - - this.$normalizePath = function(path) { - return net.qualifyURL(path); - }; - - this.terminate = function() { - this._signal("terminate", {}); - this.deltaQueue = null; - this.$worker.terminate(); - this.$worker.onerror = function(e) { - e.preventDefault(); - }; - this.$worker = null; - if (this.$doc) - this.$doc.off("change", this.changeListener); - this.$doc = null; - }; - - this.send = function(cmd, args) { - this.$worker.postMessage({command: cmd, args: args}); - }; - - this.call = function(cmd, args, callback) { - if (callback) { - var id = this.callbackId++; - this.callbacks[id] = callback; - args.push(id); - } - this.send(cmd, args); - }; - - this.emit = function(event, data) { - try { - if (data.data && data.data.err) - data.data.err = {message: data.data.err.message, stack: data.data.err.stack, code: data.data.err.code}; - this.$worker && this.$worker.postMessage({event: event, data: {data: data.data}}); - } - catch(ex) { - console.error(ex.stack); - } - }; - - this.attachToDocument = function(doc) { - if (this.$doc) - this.terminate(); - - this.$doc = doc; - this.call("setValue", [doc.getValue()]); - doc.on("change", this.changeListener, true); - }; - - this.changeListener = function(delta) { - if (!this.deltaQueue) { - this.deltaQueue = []; - setTimeout(this.$sendDeltaQueue, 0); - } - if (delta.action == "insert") - this.deltaQueue.push(delta.start, delta.lines); - else - this.deltaQueue.push(delta.start, delta.end); - }; - - this.$sendDeltaQueue = function() { - var q = this.deltaQueue; - if (!q) return; - this.deltaQueue = null; - if (q.length > 50 && q.length > this.$doc.getLength() >> 1) { - this.call("setValue", [this.$doc.getValue()]); - } else - this.emit("change", {data: q}); - }; - -}).call(WorkerClient.prototype); - - -var UIWorkerClient = function(topLevelNamespaces, mod, classname) { - var main = null; - var emitSync = false; - var sender = Object.create(EventEmitter); - - var messageBuffer = []; - var workerClient = new WorkerClient({ - messageBuffer: messageBuffer, - terminate: function() {}, - postMessage: function(e) { - messageBuffer.push(e); - if (!main) return; - if (emitSync) - setTimeout(processNext); - else - processNext(); - } - }); - - workerClient.setEmitSync = function(val) { emitSync = val; }; - - var processNext = function() { - var msg = messageBuffer.shift(); - if (msg.command) - main[msg.command].apply(main, msg.args); - else if (msg.event) - sender._signal(msg.event, msg.data); - }; - - sender.postMessage = function(msg) { - workerClient.onMessage({data: msg}); - }; - sender.callback = function(data, callbackId) { - this.postMessage({type: "call", id: callbackId, data: data}); - }; - sender.emit = function(name, data) { - this.postMessage({type: "event", name: name, data: data}); - }; - - config.loadModule(["worker", mod], function(Main) { - main = new Main[classname](sender); - while (messageBuffer.length) - processNext(); - }); - - return workerClient; -}; - -exports.UIWorkerClient = UIWorkerClient; -exports.WorkerClient = WorkerClient; -exports.createWorker = createWorker; - - -}); - -ace.define("ace/placeholder",["require","exports","module","ace/range","ace/lib/event_emitter","ace/lib/oop"], function(require, exports, module){"use strict"; -var Range = require("./range").Range; -var EventEmitter = require("./lib/event_emitter").EventEmitter; -var oop = require("./lib/oop"); -var PlaceHolder = /** @class */ (function () { - function PlaceHolder(session, length, pos, others, mainClass, othersClass) { - var _self = this; - this.length = length; - this.session = session; - this.doc = session.getDocument(); - this.mainClass = mainClass; - this.othersClass = othersClass; - this.$onUpdate = this.onUpdate.bind(this); - this.doc.on("change", this.$onUpdate, true); - this.$others = others; - this.$onCursorChange = function () { - setTimeout(function () { - _self.onCursorChange(); - }); - }; - this.$pos = pos; - var undoStack = session.getUndoManager().$undoStack || session.getUndoManager().$undostack || { length: -1 }; - this.$undoStackDepth = undoStack.length; - this.setup(); - session.selection.on("changeCursor", this.$onCursorChange); - } - PlaceHolder.prototype.setup = function () { - var _self = this; - var doc = this.doc; - var session = this.session; - this.selectionBefore = session.selection.toJSON(); - if (session.selection.inMultiSelectMode) - session.selection.toSingleRange(); - this.pos = doc.createAnchor(this.$pos.row, this.$pos.column); - var pos = this.pos; - pos.$insertRight = true; - pos.detach(); - pos.markerId = session.addMarker(new Range(pos.row, pos.column, pos.row, pos.column + this.length), this.mainClass, null, false); - this.others = []; - this.$others.forEach(function (other) { - var anchor = doc.createAnchor(other.row, other.column); - anchor.$insertRight = true; - anchor.detach(); - _self.others.push(anchor); - }); - session.setUndoSelect(false); - }; - PlaceHolder.prototype.showOtherMarkers = function () { - if (this.othersActive) - return; - var session = this.session; - var _self = this; - this.othersActive = true; - this.others.forEach(function (anchor) { - anchor.markerId = session.addMarker(new Range(anchor.row, anchor.column, anchor.row, anchor.column + _self.length), _self.othersClass, null, false); - }); - }; - PlaceHolder.prototype.hideOtherMarkers = function () { - if (!this.othersActive) - return; - this.othersActive = false; - for (var i = 0; i < this.others.length; i++) { - this.session.removeMarker(this.others[i].markerId); - } - }; - PlaceHolder.prototype.onUpdate = function (delta) { - if (this.$updating) - return this.updateAnchors(delta); - var range = delta; - if (range.start.row !== range.end.row) - return; - if (range.start.row !== this.pos.row) - return; - this.$updating = true; - var lengthDiff = delta.action === "insert" ? range.end.column - range.start.column : range.start.column - range.end.column; - var inMainRange = range.start.column >= this.pos.column && range.start.column <= this.pos.column + this.length + 1; - var distanceFromStart = range.start.column - this.pos.column; - this.updateAnchors(delta); - if (inMainRange) - this.length += lengthDiff; - if (inMainRange && !this.session.$fromUndo) { - if (delta.action === 'insert') { - for (var i = this.others.length - 1; i >= 0; i--) { - var otherPos = this.others[i]; - var newPos = { row: otherPos.row, column: otherPos.column + distanceFromStart }; - this.doc.insertMergedLines(newPos, delta.lines); - } - } - else if (delta.action === 'remove') { - for (var i = this.others.length - 1; i >= 0; i--) { - var otherPos = this.others[i]; - var newPos = { row: otherPos.row, column: otherPos.column + distanceFromStart }; - this.doc.remove(new Range(newPos.row, newPos.column, newPos.row, newPos.column - lengthDiff)); - } - } - } - this.$updating = false; - this.updateMarkers(); - }; - PlaceHolder.prototype.updateAnchors = function (delta) { - this.pos.onChange(delta); - for (var i = this.others.length; i--;) - this.others[i].onChange(delta); - this.updateMarkers(); - }; - PlaceHolder.prototype.updateMarkers = function () { - if (this.$updating) - return; - var _self = this; - var session = this.session; - var updateMarker = function (pos, className) { - session.removeMarker(pos.markerId); - pos.markerId = session.addMarker(new Range(pos.row, pos.column, pos.row, pos.column + _self.length), className, null, false); - }; - updateMarker(this.pos, this.mainClass); - for (var i = this.others.length; i--;) - updateMarker(this.others[i], this.othersClass); - }; - PlaceHolder.prototype.onCursorChange = function (event) { - if (this.$updating || !this.session) - return; - var pos = this.session.selection.getCursor(); - if (pos.row === this.pos.row && pos.column >= this.pos.column && pos.column <= this.pos.column + this.length) { - this.showOtherMarkers(); - this._emit("cursorEnter", event); - } - else { - this.hideOtherMarkers(); - this._emit("cursorLeave", event); - } - }; - PlaceHolder.prototype.detach = function () { - this.session.removeMarker(this.pos && this.pos.markerId); - this.hideOtherMarkers(); - this.doc.off("change", this.$onUpdate); - this.session.selection.off("changeCursor", this.$onCursorChange); - this.session.setUndoSelect(true); - this.session = null; - }; - PlaceHolder.prototype.cancel = function () { - if (this.$undoStackDepth === -1) - return; - var undoManager = this.session.getUndoManager(); - var undosRequired = (undoManager.$undoStack || undoManager.$undostack).length - this.$undoStackDepth; - for (var i = 0; i < undosRequired; i++) { - undoManager.undo(this.session, true); - } - if (this.selectionBefore) - this.session.selection.fromJSON(this.selectionBefore); - }; - return PlaceHolder; -}()); -oop.implement(PlaceHolder.prototype, EventEmitter); -exports.PlaceHolder = PlaceHolder; - -}); - -ace.define("ace/mouse/multi_select_handler",["require","exports","module","ace/lib/event","ace/lib/useragent"], function(require, exports, module){var event = require("../lib/event"); -var useragent = require("../lib/useragent"); -function isSamePoint(p1, p2) { - return p1.row == p2.row && p1.column == p2.column; -} -function onMouseDown(e) { - var ev = e.domEvent; - var alt = ev.altKey; - var shift = ev.shiftKey; - var ctrl = ev.ctrlKey; - var accel = e.getAccelKey(); - var button = e.getButton(); - if (ctrl && useragent.isMac) - button = ev.button; - if (e.editor.inMultiSelectMode && button == 2) { - e.editor.textInput.onContextMenu(e.domEvent); - return; - } - if (!ctrl && !alt && !accel) { - if (button === 0 && e.editor.inMultiSelectMode) - e.editor.exitMultiSelectMode(); - return; - } - if (button !== 0) - return; - var editor = e.editor; - var selection = editor.selection; - var isMultiSelect = editor.inMultiSelectMode; - var pos = e.getDocumentPosition(); - var cursor = selection.getCursor(); - var inSelection = e.inSelection() || (selection.isEmpty() && isSamePoint(pos, cursor)); - var mouseX = e.x, mouseY = e.y; - var onMouseSelection = function (e) { - mouseX = e.clientX; - mouseY = e.clientY; - }; - var session = editor.session; - var screenAnchor = editor.renderer.pixelToScreenCoordinates(mouseX, mouseY); - var screenCursor = screenAnchor; - var selectionMode; - if (editor.$mouseHandler.$enableJumpToDef) { - if (ctrl && alt || accel && alt) - selectionMode = shift ? "block" : "add"; - else if (alt && editor.$blockSelectEnabled) - selectionMode = "block"; - } - else { - if (accel && !alt) { - selectionMode = "add"; - if (!isMultiSelect && shift) - return; - } - else if (alt && editor.$blockSelectEnabled) { - selectionMode = "block"; - } - } - if (selectionMode && useragent.isMac && ev.ctrlKey) { - editor.$mouseHandler.cancelContextMenu(); - } - if (selectionMode == "add") { - if (!isMultiSelect && inSelection) - return; // dragging - if (!isMultiSelect) { - var range = selection.toOrientedRange(); - editor.addSelectionMarker(range); - } - var oldRange = selection.rangeList.rangeAtPoint(pos); - editor.inVirtualSelectionMode = true; - if (shift) { - oldRange = null; - range = selection.ranges[0] || range; - editor.removeSelectionMarker(range); - } - editor.once("mouseup", function () { - var tmpSel = selection.toOrientedRange(); - if (oldRange && tmpSel.isEmpty() && isSamePoint(oldRange.cursor, tmpSel.cursor)) - selection.substractPoint(tmpSel.cursor); - else { - if (shift) { - selection.substractPoint(range.cursor); - } - else if (range) { - editor.removeSelectionMarker(range); - selection.addRange(range); - } - selection.addRange(tmpSel); - } - editor.inVirtualSelectionMode = false; - }); - } - else if (selectionMode == "block") { - e.stop(); - editor.inVirtualSelectionMode = true; - var initialRange; - var rectSel = []; - var blockSelect = function () { - var newCursor = editor.renderer.pixelToScreenCoordinates(mouseX, mouseY); - var cursor = session.screenToDocumentPosition(newCursor.row, newCursor.column, newCursor.offsetX); - if (isSamePoint(screenCursor, newCursor) && isSamePoint(cursor, selection.lead)) - return; - screenCursor = newCursor; - editor.selection.moveToPosition(cursor); - editor.renderer.scrollCursorIntoView(); - editor.removeSelectionMarkers(rectSel); - rectSel = selection.rectangularRangeBlock(screenCursor, screenAnchor); - if (editor.$mouseHandler.$clickSelection && rectSel.length == 1 && rectSel[0].isEmpty()) - rectSel[0] = editor.$mouseHandler.$clickSelection.clone(); - rectSel.forEach(editor.addSelectionMarker, editor); - editor.updateSelectionMarkers(); - }; - if (isMultiSelect && !accel) { - selection.toSingleRange(); - } - else if (!isMultiSelect && accel) { - initialRange = selection.toOrientedRange(); - editor.addSelectionMarker(initialRange); - } - if (shift) - screenAnchor = session.documentToScreenPosition(selection.lead); - else - selection.moveToPosition(pos); - screenCursor = { row: -1, column: -1 }; - var onMouseSelectionEnd = function (e) { - blockSelect(); - clearInterval(timerId); - editor.removeSelectionMarkers(rectSel); - if (!rectSel.length) - rectSel = [selection.toOrientedRange()]; - if (initialRange) { - editor.removeSelectionMarker(initialRange); - selection.toSingleRange(initialRange); - } - for (var i = 0; i < rectSel.length; i++) - selection.addRange(rectSel[i]); - editor.inVirtualSelectionMode = false; - editor.$mouseHandler.$clickSelection = null; - }; - var onSelectionInterval = blockSelect; - event.capture(editor.container, onMouseSelection, onMouseSelectionEnd); - var timerId = setInterval(function () { onSelectionInterval(); }, 20); - return e.preventDefault(); - } -} -exports.onMouseDown = onMouseDown; - -}); - -ace.define("ace/commands/multi_select_commands",["require","exports","module","ace/keyboard/hash_handler"], function(require, exports, module){// commands to enter multiselect mode -exports.defaultCommands = [{ - name: "addCursorAbove", - description: "Add cursor above", - exec: function (editor) { editor.selectMoreLines(-1); }, - bindKey: { win: "Ctrl-Alt-Up", mac: "Ctrl-Alt-Up" }, - scrollIntoView: "cursor", - readOnly: true - }, { - name: "addCursorBelow", - description: "Add cursor below", - exec: function (editor) { editor.selectMoreLines(1); }, - bindKey: { win: "Ctrl-Alt-Down", mac: "Ctrl-Alt-Down" }, - scrollIntoView: "cursor", - readOnly: true - }, { - name: "addCursorAboveSkipCurrent", - description: "Add cursor above (skip current)", - exec: function (editor) { editor.selectMoreLines(-1, true); }, - bindKey: { win: "Ctrl-Alt-Shift-Up", mac: "Ctrl-Alt-Shift-Up" }, - scrollIntoView: "cursor", - readOnly: true - }, { - name: "addCursorBelowSkipCurrent", - description: "Add cursor below (skip current)", - exec: function (editor) { editor.selectMoreLines(1, true); }, - bindKey: { win: "Ctrl-Alt-Shift-Down", mac: "Ctrl-Alt-Shift-Down" }, - scrollIntoView: "cursor", - readOnly: true - }, { - name: "selectMoreBefore", - description: "Select more before", - exec: function (editor) { editor.selectMore(-1); }, - bindKey: { win: "Ctrl-Alt-Left", mac: "Ctrl-Alt-Left" }, - scrollIntoView: "cursor", - readOnly: true - }, { - name: "selectMoreAfter", - description: "Select more after", - exec: function (editor) { editor.selectMore(1); }, - bindKey: { win: "Ctrl-Alt-Right", mac: "Ctrl-Alt-Right" }, - scrollIntoView: "cursor", - readOnly: true - }, { - name: "selectNextBefore", - description: "Select next before", - exec: function (editor) { editor.selectMore(-1, true); }, - bindKey: { win: "Ctrl-Alt-Shift-Left", mac: "Ctrl-Alt-Shift-Left" }, - scrollIntoView: "cursor", - readOnly: true - }, { - name: "selectNextAfter", - description: "Select next after", - exec: function (editor) { editor.selectMore(1, true); }, - bindKey: { win: "Ctrl-Alt-Shift-Right", mac: "Ctrl-Alt-Shift-Right" }, - scrollIntoView: "cursor", - readOnly: true - }, { - name: "toggleSplitSelectionIntoLines", - description: "Split selection into lines", - exec: function (editor) { - if (editor.multiSelect.rangeCount > 1) - editor.multiSelect.joinSelections(); - else - editor.multiSelect.splitIntoLines(); - }, - bindKey: { win: "Ctrl-Alt-L", mac: "Ctrl-Alt-L" }, - readOnly: true - }, { - name: "splitSelectionIntoLines", - description: "Split into lines", - exec: function (editor) { editor.multiSelect.splitIntoLines(); }, - readOnly: true - }, { - name: "alignCursors", - description: "Align cursors", - exec: function (editor) { editor.alignCursors(); }, - bindKey: { win: "Ctrl-Alt-A", mac: "Ctrl-Alt-A" }, - scrollIntoView: "cursor" - }, { - name: "findAll", - description: "Find all", - exec: function (editor) { editor.findAll(); }, - bindKey: { win: "Ctrl-Alt-K", mac: "Ctrl-Alt-G" }, - scrollIntoView: "cursor", - readOnly: true - }]; -exports.multiSelectCommands = [{ - name: "singleSelection", - description: "Single selection", - bindKey: "esc", - exec: function (editor) { editor.exitMultiSelectMode(); }, - scrollIntoView: "cursor", - readOnly: true, - isAvailable: function (editor) { return editor && editor.inMultiSelectMode; } - }]; -var HashHandler = require("../keyboard/hash_handler").HashHandler; -exports.keyboardHandler = new HashHandler(exports.multiSelectCommands); - -}); - -ace.define("ace/multi_select",["require","exports","module","ace/range_list","ace/range","ace/selection","ace/mouse/multi_select_handler","ace/lib/event","ace/lib/lang","ace/commands/multi_select_commands","ace/search","ace/edit_session","ace/editor","ace/config"], function(require, exports, module){var RangeList = require("./range_list").RangeList; -var Range = require("./range").Range; -var Selection = require("./selection").Selection; -var onMouseDown = require("./mouse/multi_select_handler").onMouseDown; -var event = require("./lib/event"); -var lang = require("./lib/lang"); -var commands = require("./commands/multi_select_commands"); -exports.commands = commands.defaultCommands.concat(commands.multiSelectCommands); -var Search = require("./search").Search; -var search = new Search(); -function find(session, needle, dir) { - search.$options.wrap = true; - search.$options.needle = needle; - search.$options.backwards = dir == -1; - return search.find(session); -} -var EditSession = require("./edit_session").EditSession; -(function () { - this.getSelectionMarkers = function () { - return this.$selectionMarkers; - }; -}).call(EditSession.prototype); -(function () { - this.ranges = null; - this.rangeList = null; - this.addRange = function (range, $blockChangeEvents) { - if (!range) - return; - if (!this.inMultiSelectMode && this.rangeCount === 0) { - var oldRange = this.toOrientedRange(); - this.rangeList.add(oldRange); - this.rangeList.add(range); - if (this.rangeList.ranges.length != 2) { - this.rangeList.removeAll(); - return $blockChangeEvents || this.fromOrientedRange(range); - } - this.rangeList.removeAll(); - this.rangeList.add(oldRange); - this.$onAddRange(oldRange); - } - if (!range.cursor) - range.cursor = range.end; - var removed = this.rangeList.add(range); - this.$onAddRange(range); - if (removed.length) - this.$onRemoveRange(removed); - if (this.rangeCount > 1 && !this.inMultiSelectMode) { - this._signal("multiSelect"); - this.inMultiSelectMode = true; - this.session.$undoSelect = false; - this.rangeList.attach(this.session); - } - return $blockChangeEvents || this.fromOrientedRange(range); - }; - this.toSingleRange = function (range) { - range = range || this.ranges[0]; - var removed = this.rangeList.removeAll(); - if (removed.length) - this.$onRemoveRange(removed); - range && this.fromOrientedRange(range); - }; - this.substractPoint = function (pos) { - var removed = this.rangeList.substractPoint(pos); - if (removed) { - this.$onRemoveRange(removed); - return removed[0]; - } - }; - this.mergeOverlappingRanges = function () { - var removed = this.rangeList.merge(); - if (removed.length) - this.$onRemoveRange(removed); - }; - this.$onAddRange = function (range) { - this.rangeCount = this.rangeList.ranges.length; - this.ranges.unshift(range); - this._signal("addRange", { range: range }); - }; - this.$onRemoveRange = function (removed) { - this.rangeCount = this.rangeList.ranges.length; - if (this.rangeCount == 1 && this.inMultiSelectMode) { - var lastRange = this.rangeList.ranges.pop(); - removed.push(lastRange); - this.rangeCount = 0; - } - for (var i = removed.length; i--;) { - var index = this.ranges.indexOf(removed[i]); - this.ranges.splice(index, 1); - } - this._signal("removeRange", { ranges: removed }); - if (this.rangeCount === 0 && this.inMultiSelectMode) { - this.inMultiSelectMode = false; - this._signal("singleSelect"); - this.session.$undoSelect = true; - this.rangeList.detach(this.session); - } - lastRange = lastRange || this.ranges[0]; - if (lastRange && !lastRange.isEqual(this.getRange())) - this.fromOrientedRange(lastRange); - }; - this.$initRangeList = function () { - if (this.rangeList) - return; - this.rangeList = new RangeList(); - this.ranges = []; - this.rangeCount = 0; - }; - this.getAllRanges = function () { - return this.rangeCount ? this.rangeList.ranges.concat() : [this.getRange()]; - }; - this.splitIntoLines = function () { - var ranges = this.ranges.length ? this.ranges : [this.getRange()]; - var newRanges = []; - for (var i = 0; i < ranges.length; i++) { - var range = ranges[i]; - var row = range.start.row; - var endRow = range.end.row; - if (row === endRow) { - newRanges.push(range.clone()); - } - else { - newRanges.push(new Range(row, range.start.column, row, this.session.getLine(row).length)); - while (++row < endRow) - newRanges.push(this.getLineRange(row, true)); - newRanges.push(new Range(endRow, 0, endRow, range.end.column)); - } - if (i == 0 && !this.isBackwards()) - newRanges = newRanges.reverse(); - } - this.toSingleRange(); - for (var i = newRanges.length; i--;) - this.addRange(newRanges[i]); - }; - this.joinSelections = function () { - var ranges = this.rangeList.ranges; - var lastRange = ranges[ranges.length - 1]; - var range = Range.fromPoints(ranges[0].start, lastRange.end); - this.toSingleRange(); - this.setSelectionRange(range, lastRange.cursor == lastRange.start); - }; - this.toggleBlockSelection = function () { - if (this.rangeCount > 1) { - var ranges = this.rangeList.ranges; - var lastRange = ranges[ranges.length - 1]; - var range = Range.fromPoints(ranges[0].start, lastRange.end); - this.toSingleRange(); - this.setSelectionRange(range, lastRange.cursor == lastRange.start); - } - else { - var cursor = this.session.documentToScreenPosition(this.cursor); - var anchor = this.session.documentToScreenPosition(this.anchor); - var rectSel = this.rectangularRangeBlock(cursor, anchor); - rectSel.forEach(this.addRange, this); - } - }; - this.rectangularRangeBlock = function (screenCursor, screenAnchor, includeEmptyLines) { - var rectSel = []; - var xBackwards = screenCursor.column < screenAnchor.column; - if (xBackwards) { - var startColumn = screenCursor.column; - var endColumn = screenAnchor.column; - var startOffsetX = screenCursor.offsetX; - var endOffsetX = screenAnchor.offsetX; - } - else { - var startColumn = screenAnchor.column; - var endColumn = screenCursor.column; - var startOffsetX = screenAnchor.offsetX; - var endOffsetX = screenCursor.offsetX; - } - var yBackwards = screenCursor.row < screenAnchor.row; - if (yBackwards) { - var startRow = screenCursor.row; - var endRow = screenAnchor.row; - } - else { - var startRow = screenAnchor.row; - var endRow = screenCursor.row; - } - if (startColumn < 0) - startColumn = 0; - if (startRow < 0) - startRow = 0; - if (startRow == endRow) - includeEmptyLines = true; - var docEnd; - for (var row = startRow; row <= endRow; row++) { - var range = Range.fromPoints(this.session.screenToDocumentPosition(row, startColumn, startOffsetX), this.session.screenToDocumentPosition(row, endColumn, endOffsetX)); - if (range.isEmpty()) { - if (docEnd && isSamePoint(range.end, docEnd)) - break; - docEnd = range.end; - } - range.cursor = xBackwards ? range.start : range.end; - rectSel.push(range); - } - if (yBackwards) - rectSel.reverse(); - if (!includeEmptyLines) { - var end = rectSel.length - 1; - while (rectSel[end].isEmpty() && end > 0) - end--; - if (end > 0) { - var start = 0; - while (rectSel[start].isEmpty()) - start++; - } - for (var i = end; i >= start; i--) { - if (rectSel[i].isEmpty()) - rectSel.splice(i, 1); - } - } - return rectSel; - }; -}).call(Selection.prototype); -var Editor = require("./editor").Editor; -(function () { - this.updateSelectionMarkers = function () { - this.renderer.updateCursor(); - this.renderer.updateBackMarkers(); - }; - this.addSelectionMarker = function (orientedRange) { - if (!orientedRange.cursor) - orientedRange.cursor = orientedRange.end; - var style = this.getSelectionStyle(); - orientedRange.marker = this.session.addMarker(orientedRange, "ace_selection", style); - this.session.$selectionMarkers.push(orientedRange); - this.session.selectionMarkerCount = this.session.$selectionMarkers.length; - return orientedRange; - }; - this.removeSelectionMarker = function (range) { - if (!range.marker) - return; - this.session.removeMarker(range.marker); - var index = this.session.$selectionMarkers.indexOf(range); - if (index != -1) - this.session.$selectionMarkers.splice(index, 1); - this.session.selectionMarkerCount = this.session.$selectionMarkers.length; - }; - this.removeSelectionMarkers = function (ranges) { - var markerList = this.session.$selectionMarkers; - for (var i = ranges.length; i--;) { - var range = ranges[i]; - if (!range.marker) - continue; - this.session.removeMarker(range.marker); - var index = markerList.indexOf(range); - if (index != -1) - markerList.splice(index, 1); - } - this.session.selectionMarkerCount = markerList.length; - }; - this.$onAddRange = function (e) { - this.addSelectionMarker(e.range); - this.renderer.updateCursor(); - this.renderer.updateBackMarkers(); - }; - this.$onRemoveRange = function (e) { - this.removeSelectionMarkers(e.ranges); - this.renderer.updateCursor(); - this.renderer.updateBackMarkers(); - }; - this.$onMultiSelect = function (e) { - if (this.inMultiSelectMode) - return; - this.inMultiSelectMode = true; - this.setStyle("ace_multiselect"); - this.keyBinding.addKeyboardHandler(commands.keyboardHandler); - this.commands.setDefaultHandler("exec", this.$onMultiSelectExec); - this.renderer.updateCursor(); - this.renderer.updateBackMarkers(); - }; - this.$onSingleSelect = function (e) { - if (this.session.multiSelect.inVirtualMode) - return; - this.inMultiSelectMode = false; - this.unsetStyle("ace_multiselect"); - this.keyBinding.removeKeyboardHandler(commands.keyboardHandler); - this.commands.removeDefaultHandler("exec", this.$onMultiSelectExec); - this.renderer.updateCursor(); - this.renderer.updateBackMarkers(); - this._emit("changeSelection"); - }; - this.$onMultiSelectExec = function (e) { - var command = e.command; - var editor = e.editor; - if (!editor.multiSelect) - return; - if (!command.multiSelectAction) { - var result = command.exec(editor, e.args || {}); - editor.multiSelect.addRange(editor.multiSelect.toOrientedRange()); - editor.multiSelect.mergeOverlappingRanges(); - } - else if (command.multiSelectAction == "forEach") { - result = editor.forEachSelection(command, e.args); - } - else if (command.multiSelectAction == "forEachLine") { - result = editor.forEachSelection(command, e.args, true); - } - else if (command.multiSelectAction == "single") { - editor.exitMultiSelectMode(); - result = command.exec(editor, e.args || {}); - } - else { - result = command.multiSelectAction(editor, e.args || {}); - } - return result; - }; - this.forEachSelection = function (cmd, args, options) { - if (this.inVirtualSelectionMode) - return; - var keepOrder = options && options.keepOrder; - var $byLines = options == true || options && options.$byLines; - var session = this.session; - var selection = this.selection; - var rangeList = selection.rangeList; - var ranges = (keepOrder ? selection : rangeList).ranges; - var result; - if (!ranges.length) - return cmd.exec ? cmd.exec(this, args || {}) : cmd(this, args || {}); - var reg = selection._eventRegistry; - selection._eventRegistry = {}; - var tmpSel = new Selection(session); - this.inVirtualSelectionMode = true; - for (var i = ranges.length; i--;) { - if ($byLines) { - while (i > 0 && ranges[i].start.row == ranges[i - 1].end.row) - i--; - } - tmpSel.fromOrientedRange(ranges[i]); - tmpSel.index = i; - this.selection = session.selection = tmpSel; - var cmdResult = cmd.exec ? cmd.exec(this, args || {}) : cmd(this, args || {}); - if (!result && cmdResult !== undefined) - result = cmdResult; - tmpSel.toOrientedRange(ranges[i]); - } - tmpSel.detach(); - this.selection = session.selection = selection; - this.inVirtualSelectionMode = false; - selection._eventRegistry = reg; - selection.mergeOverlappingRanges(); - if (selection.ranges[0]) - selection.fromOrientedRange(selection.ranges[0]); - var anim = this.renderer.$scrollAnimation; - this.onCursorChange(); - this.onSelectionChange(); - if (anim && anim.from == anim.to) - this.renderer.animateScrolling(anim.from); - return result; - }; - this.exitMultiSelectMode = function () { - if (!this.inMultiSelectMode || this.inVirtualSelectionMode) - return; - this.multiSelect.toSingleRange(); - }; - this.getSelectedText = function () { - var text = ""; - if (this.inMultiSelectMode && !this.inVirtualSelectionMode) { - var ranges = this.multiSelect.rangeList.ranges; - var buf = []; - for (var i = 0; i < ranges.length; i++) { - buf.push(this.session.getTextRange(ranges[i])); - } - var nl = this.session.getDocument().getNewLineCharacter(); - text = buf.join(nl); - if (text.length == (buf.length - 1) * nl.length) - text = ""; - } - else if (!this.selection.isEmpty()) { - text = this.session.getTextRange(this.getSelectionRange()); - } - return text; - }; - this.$checkMultiselectChange = function (e, anchor) { - if (this.inMultiSelectMode && !this.inVirtualSelectionMode) { - var range = this.multiSelect.ranges[0]; - if (this.multiSelect.isEmpty() && anchor == this.multiSelect.anchor) - return; - var pos = anchor == this.multiSelect.anchor - ? range.cursor == range.start ? range.end : range.start - : range.cursor; - if (pos.row != anchor.row - || this.session.$clipPositionToDocument(pos.row, pos.column).column != anchor.column) - this.multiSelect.toSingleRange(this.multiSelect.toOrientedRange()); - else - this.multiSelect.mergeOverlappingRanges(); - } - }; - this.findAll = function (needle, options, additive) { - options = options || {}; - options.needle = needle || options.needle; - if (options.needle == undefined) { - var range = this.selection.isEmpty() - ? this.selection.getWordRange() - : this.selection.getRange(); - options.needle = this.session.getTextRange(range); - } - this.$search.set(options); - var ranges = this.$search.findAll(this.session); - if (!ranges.length) - return 0; - var selection = this.multiSelect; - if (!additive) - selection.toSingleRange(ranges[0]); - for (var i = ranges.length; i--;) - selection.addRange(ranges[i], true); - if (range && selection.rangeList.rangeAtPoint(range.start)) - selection.addRange(range, true); - return ranges.length; - }; - this.selectMoreLines = function (dir, skip) { - var range = this.selection.toOrientedRange(); - var isBackwards = range.cursor == range.end; - var screenLead = this.session.documentToScreenPosition(range.cursor); - if (this.selection.$desiredColumn) - screenLead.column = this.selection.$desiredColumn; - var lead = this.session.screenToDocumentPosition(screenLead.row + dir, screenLead.column); - if (!range.isEmpty()) { - var screenAnchor = this.session.documentToScreenPosition(isBackwards ? range.end : range.start); - var anchor = this.session.screenToDocumentPosition(screenAnchor.row + dir, screenAnchor.column); - } - else { - var anchor = lead; - } - if (isBackwards) { - var newRange = Range.fromPoints(lead, anchor); - newRange.cursor = newRange.start; - } - else { - var newRange = Range.fromPoints(anchor, lead); - newRange.cursor = newRange.end; - } - newRange.desiredColumn = screenLead.column; - if (!this.selection.inMultiSelectMode) { - this.selection.addRange(range); - } - else { - if (skip) - var toRemove = range.cursor; - } - this.selection.addRange(newRange); - if (toRemove) - this.selection.substractPoint(toRemove); - }; - this.transposeSelections = function (dir) { - var session = this.session; - var sel = session.multiSelect; - var all = sel.ranges; - for (var i = all.length; i--;) { - var range = all[i]; - if (range.isEmpty()) { - var tmp = session.getWordRange(range.start.row, range.start.column); - range.start.row = tmp.start.row; - range.start.column = tmp.start.column; - range.end.row = tmp.end.row; - range.end.column = tmp.end.column; - } - } - sel.mergeOverlappingRanges(); - var words = []; - for (var i = all.length; i--;) { - var range = all[i]; - words.unshift(session.getTextRange(range)); - } - if (dir < 0) - words.unshift(words.pop()); - else - words.push(words.shift()); - for (var i = all.length; i--;) { - var range = all[i]; - var tmp = range.clone(); - session.replace(range, words[i]); - range.start.row = tmp.start.row; - range.start.column = tmp.start.column; - } - sel.fromOrientedRange(sel.ranges[0]); - }; - this.selectMore = function (dir, skip, stopAtFirst) { - var session = this.session; - var sel = session.multiSelect; - var range = sel.toOrientedRange(); - if (range.isEmpty()) { - range = session.getWordRange(range.start.row, range.start.column); - range.cursor = dir == -1 ? range.start : range.end; - this.multiSelect.addRange(range); - if (stopAtFirst) - return; - } - var needle = session.getTextRange(range); - var newRange = find(session, needle, dir); - if (newRange) { - newRange.cursor = dir == -1 ? newRange.start : newRange.end; - this.session.unfold(newRange); - this.multiSelect.addRange(newRange); - this.renderer.scrollCursorIntoView(null, 0.5); - } - if (skip) - this.multiSelect.substractPoint(range.cursor); - }; - this.alignCursors = function () { - var session = this.session; - var sel = session.multiSelect; - var ranges = sel.ranges; - var row = -1; - var sameRowRanges = ranges.filter(function (r) { - if (r.cursor.row == row) - return true; - row = r.cursor.row; - }); - if (!ranges.length || sameRowRanges.length == ranges.length - 1) { - var range = this.selection.getRange(); - var fr = range.start.row, lr = range.end.row; - var guessRange = fr == lr; - if (guessRange) { - var max = this.session.getLength(); - var line; - do { - line = this.session.getLine(lr); - } while (/[=:]/.test(line) && ++lr < max); - do { - line = this.session.getLine(fr); - } while (/[=:]/.test(line) && --fr > 0); - if (fr < 0) - fr = 0; - if (lr >= max) - lr = max - 1; - } - var lines = this.session.removeFullLines(fr, lr); - lines = this.$reAlignText(lines, guessRange); - this.session.insert({ row: fr, column: 0 }, lines.join("\n") + "\n"); - if (!guessRange) { - range.start.column = 0; - range.end.column = lines[lines.length - 1].length; - } - this.selection.setRange(range); - } - else { - sameRowRanges.forEach(function (r) { - sel.substractPoint(r.cursor); - }); - var maxCol = 0; - var minSpace = Infinity; - var spaceOffsets = ranges.map(function (r) { - var p = r.cursor; - var line = session.getLine(p.row); - var spaceOffset = line.substr(p.column).search(/\S/g); - if (spaceOffset == -1) - spaceOffset = 0; - if (p.column > maxCol) - maxCol = p.column; - if (spaceOffset < minSpace) - minSpace = spaceOffset; - return spaceOffset; - }); - ranges.forEach(function (r, i) { - var p = r.cursor; - var l = maxCol - p.column; - var d = spaceOffsets[i] - minSpace; - if (l > d) - session.insert(p, lang.stringRepeat(" ", l - d)); - else - session.remove(new Range(p.row, p.column, p.row, p.column - l + d)); - r.start.column = r.end.column = maxCol; - r.start.row = r.end.row = p.row; - r.cursor = r.end; - }); - sel.fromOrientedRange(ranges[0]); - this.renderer.updateCursor(); - this.renderer.updateBackMarkers(); - } - }; - this.$reAlignText = function (lines, forceLeft) { - var isLeftAligned = true, isRightAligned = true; - var startW, textW, endW; - return lines.map(function (line) { - var m = line.match(/(\s*)(.*?)(\s*)([=:].*)/); - if (!m) - return [line]; - if (startW == null) { - startW = m[1].length; - textW = m[2].length; - endW = m[3].length; - return m; - } - if (startW + textW + endW != m[1].length + m[2].length + m[3].length) - isRightAligned = false; - if (startW != m[1].length) - isLeftAligned = false; - if (startW > m[1].length) - startW = m[1].length; - if (textW < m[2].length) - textW = m[2].length; - if (endW > m[3].length) - endW = m[3].length; - return m; - }).map(forceLeft ? alignLeft : - isLeftAligned ? isRightAligned ? alignRight : alignLeft : unAlign); - function spaces(n) { - return lang.stringRepeat(" ", n); - } - function alignLeft(m) { - return !m[2] ? m[0] : spaces(startW) + m[2] - + spaces(textW - m[2].length + endW) - + m[4].replace(/^([=:])\s+/, "$1 "); - } - function alignRight(m) { - return !m[2] ? m[0] : spaces(startW + textW - m[2].length) + m[2] - + spaces(endW) - + m[4].replace(/^([=:])\s+/, "$1 "); - } - function unAlign(m) { - return !m[2] ? m[0] : spaces(startW) + m[2] - + spaces(endW) - + m[4].replace(/^([=:])\s+/, "$1 "); - } - }; -}).call(Editor.prototype); -function isSamePoint(p1, p2) { - return p1.row == p2.row && p1.column == p2.column; -} -exports.onSessionChange = function (e) { - var session = e.session; - if (session && !session.multiSelect) { - session.$selectionMarkers = []; - session.selection.$initRangeList(); - session.multiSelect = session.selection; - } - this.multiSelect = session && session.multiSelect; - var oldSession = e.oldSession; - if (oldSession) { - oldSession.multiSelect.off("addRange", this.$onAddRange); - oldSession.multiSelect.off("removeRange", this.$onRemoveRange); - oldSession.multiSelect.off("multiSelect", this.$onMultiSelect); - oldSession.multiSelect.off("singleSelect", this.$onSingleSelect); - oldSession.multiSelect.lead.off("change", this.$checkMultiselectChange); - oldSession.multiSelect.anchor.off("change", this.$checkMultiselectChange); - } - if (session) { - session.multiSelect.on("addRange", this.$onAddRange); - session.multiSelect.on("removeRange", this.$onRemoveRange); - session.multiSelect.on("multiSelect", this.$onMultiSelect); - session.multiSelect.on("singleSelect", this.$onSingleSelect); - session.multiSelect.lead.on("change", this.$checkMultiselectChange); - session.multiSelect.anchor.on("change", this.$checkMultiselectChange); - } - if (session && this.inMultiSelectMode != session.selection.inMultiSelectMode) { - if (session.selection.inMultiSelectMode) - this.$onMultiSelect(); - else - this.$onSingleSelect(); - } -}; -function MultiSelect(editor) { - if (editor.$multiselectOnSessionChange) - return; - editor.$onAddRange = editor.$onAddRange.bind(editor); - editor.$onRemoveRange = editor.$onRemoveRange.bind(editor); - editor.$onMultiSelect = editor.$onMultiSelect.bind(editor); - editor.$onSingleSelect = editor.$onSingleSelect.bind(editor); - editor.$multiselectOnSessionChange = exports.onSessionChange.bind(editor); - editor.$checkMultiselectChange = editor.$checkMultiselectChange.bind(editor); - editor.$multiselectOnSessionChange(editor); - editor.on("changeSession", editor.$multiselectOnSessionChange); - editor.on("mousedown", onMouseDown); - editor.commands.addCommands(commands.defaultCommands); - addAltCursorListeners(editor); -} -function addAltCursorListeners(editor) { - if (!editor.textInput) - return; - var el = editor.textInput.getElement(); - var altCursor = false; - event.addListener(el, "keydown", function (e) { - var altDown = e.keyCode == 18 && !(e.ctrlKey || e.shiftKey || e.metaKey); - if (editor.$blockSelectEnabled && altDown) { - if (!altCursor) { - editor.renderer.setMouseCursor("crosshair"); - altCursor = true; - } - } - else if (altCursor) { - reset(); - } - }, editor); - event.addListener(el, "keyup", reset, editor); - event.addListener(el, "blur", reset, editor); - function reset(e) { - if (altCursor) { - editor.renderer.setMouseCursor(""); - altCursor = false; - } - } -} -exports.MultiSelect = MultiSelect; -require("./config").defineOptions(Editor.prototype, "editor", { - enableMultiselect: { - set: function (val) { - MultiSelect(this); - if (val) { - this.on("mousedown", onMouseDown); - } - else { - this.off("mousedown", onMouseDown); - } - }, - value: true - }, - enableBlockSelect: { - set: function (val) { - this.$blockSelectEnabled = val; - }, - value: true - } -}); - -}); - -ace.define("ace/mode/folding/fold_mode",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; -var Range = require("../../range").Range; -var FoldMode = exports.FoldMode = function () { }; -(function () { - this.foldingStartMarker = null; - this.foldingStopMarker = null; - this.getFoldWidget = function (session, foldStyle, row) { - var line = session.getLine(row); - if (this.foldingStartMarker.test(line)) - return "start"; - if (foldStyle == "markbeginend" - && this.foldingStopMarker - && this.foldingStopMarker.test(line)) - return "end"; - return ""; - }; - this.getFoldWidgetRange = function (session, foldStyle, row) { - return null; - }; - this.indentationBlock = function (session, row, column) { - var re = /\S/; - var line = session.getLine(row); - var startLevel = line.search(re); - if (startLevel == -1) - return; - var startColumn = column || line.length; - var maxRow = session.getLength(); - var startRow = row; - var endRow = row; - while (++row < maxRow) { - var level = session.getLine(row).search(re); - if (level == -1) - continue; - if (level <= startLevel) { - var token = session.getTokenAt(row, 0); - if (!token || token.type !== "string") - break; - } - endRow = row; - } - if (endRow > startRow) { - var endColumn = session.getLine(endRow).length; - return new Range(startRow, startColumn, endRow, endColumn); - } - }; - this.openingBracketBlock = function (session, bracket, row, column, typeRe) { - var start = { row: row, column: column + 1 }; - var end = session.$findClosingBracket(bracket, start, typeRe); - if (!end) - return; - var fw = session.foldWidgets[end.row]; - if (fw == null) - fw = session.getFoldWidget(end.row); - if (fw == "start" && end.row > start.row) { - end.row--; - end.column = session.getLine(end.row).length; - } - return Range.fromPoints(start, end); - }; - this.closingBracketBlock = function (session, bracket, row, column, typeRe) { - var end = { row: row, column: column }; - var start = session.$findOpeningBracket(bracket, end); - if (!start) - return; - start.column++; - end.column--; - return Range.fromPoints(start, end); - }; -}).call(FoldMode.prototype); - -}); - -ace.define("ace/ext/error_marker",["require","exports","module","ace/line_widgets","ace/lib/dom","ace/range","ace/config"], function(require, exports, module){"use strict"; -var LineWidgets = require("../line_widgets").LineWidgets; -var dom = require("../lib/dom"); -var Range = require("../range").Range; -var nls = require("../config").nls; -function binarySearch(array, needle, comparator) { - var first = 0; - var last = array.length - 1; - while (first <= last) { - var mid = (first + last) >> 1; - var c = comparator(needle, array[mid]); - if (c > 0) - first = mid + 1; - else if (c < 0) - last = mid - 1; - else - return mid; - } - return -(first + 1); -} -function findAnnotations(session, row, dir) { - var annotations = session.getAnnotations().sort(Range.comparePoints); - if (!annotations.length) - return; - var i = binarySearch(annotations, { row: row, column: -1 }, Range.comparePoints); - if (i < 0) - i = -i - 1; - if (i >= annotations.length) - i = dir > 0 ? 0 : annotations.length - 1; - else if (i === 0 && dir < 0) - i = annotations.length - 1; - var annotation = annotations[i]; - if (!annotation || !dir) - return; - if (annotation.row === row) { - do { - annotation = annotations[i += dir]; - } while (annotation && annotation.row === row); - if (!annotation) - return annotations.slice(); - } - var matched = []; - row = annotation.row; - do { - matched[dir < 0 ? "unshift" : "push"](annotation); - annotation = annotations[i += dir]; - } while (annotation && annotation.row == row); - return matched.length && matched; -} -exports.showErrorMarker = function (editor, dir) { - var session = editor.session; - if (!session.widgetManager) { - session.widgetManager = new LineWidgets(session); - session.widgetManager.attach(editor); - } - var pos = editor.getCursorPosition(); - var row = pos.row; - var oldWidget = session.widgetManager.getWidgetsAtRow(row).filter(function (w) { - return w.type == "errorMarker"; - })[0]; - if (oldWidget) { - oldWidget.destroy(); - } - else { - row -= dir; - } - var annotations = findAnnotations(session, row, dir); - var gutterAnno; - if (annotations) { - var annotation = annotations[0]; - pos.column = (annotation.pos && typeof annotation.column != "number" - ? annotation.pos.sc - : annotation.column) || 0; - pos.row = annotation.row; - gutterAnno = editor.renderer.$gutterLayer.$annotations[pos.row]; - } - else if (oldWidget) { - return; - } - else { - gutterAnno = { - text: [nls("Looks good!")], - className: "ace_ok" - }; - } - editor.session.unfold(pos.row); - editor.selection.moveToPosition(pos); - var w = { - row: pos.row, - fixedWidth: true, - coverGutter: true, - el: dom.createElement("div"), - type: "errorMarker" - }; - var el = w.el.appendChild(dom.createElement("div")); - var arrow = w.el.appendChild(dom.createElement("div")); - arrow.className = "error_widget_arrow " + gutterAnno.className; - var left = editor.renderer.$cursorLayer - .getPixelPosition(pos).left; - arrow.style.left = left + editor.renderer.gutterWidth - 5 + "px"; - w.el.className = "error_widget_wrapper"; - el.className = "error_widget " + gutterAnno.className; - el.innerHTML = gutterAnno.text.join("
    "); - el.appendChild(dom.createElement("div")); - var kb = function (_, hashId, keyString) { - if (hashId === 0 && (keyString === "esc" || keyString === "return")) { - w.destroy(); - return { command: "null" }; - } - }; - w.destroy = function () { - if (editor.$mouseHandler.isMousePressed) - return; - editor.keyBinding.removeKeyboardHandler(kb); - session.widgetManager.removeLineWidget(w); - editor.off("changeSelection", w.destroy); - editor.off("changeSession", w.destroy); - editor.off("mouseup", w.destroy); - editor.off("change", w.destroy); - }; - editor.keyBinding.addKeyboardHandler(kb); - editor.on("changeSelection", w.destroy); - editor.on("changeSession", w.destroy); - editor.on("mouseup", w.destroy); - editor.on("change", w.destroy); - editor.session.widgetManager.addLineWidget(w); - w.el.onmousedown = editor.focus.bind(editor); - editor.renderer.scrollCursorIntoView(null, 0.5, { bottom: w.el.offsetHeight }); -}; -dom.importCssString("\n .error_widget_wrapper {\n background: inherit;\n color: inherit;\n border:none\n }\n .error_widget {\n border-top: solid 2px;\n border-bottom: solid 2px;\n margin: 5px 0;\n padding: 10px 40px;\n white-space: pre-wrap;\n }\n .error_widget.ace_error, .error_widget_arrow.ace_error{\n border-color: #ff5a5a\n }\n .error_widget.ace_warning, .error_widget_arrow.ace_warning{\n border-color: #F1D817\n }\n .error_widget.ace_info, .error_widget_arrow.ace_info{\n border-color: #5a5a5a\n }\n .error_widget.ace_ok, .error_widget_arrow.ace_ok{\n border-color: #5aaa5a\n }\n .error_widget_arrow {\n position: absolute;\n border: solid 5px;\n border-top-color: transparent!important;\n border-right-color: transparent!important;\n border-left-color: transparent!important;\n top: -5px;\n }\n", "error_marker.css", false); - -}); - -ace.define("ace/ace",["require","exports","module","ace/lib/dom","ace/range","ace/editor","ace/edit_session","ace/undomanager","ace/virtual_renderer","ace/worker/worker_client","ace/keyboard/hash_handler","ace/placeholder","ace/multi_select","ace/mode/folding/fold_mode","ace/theme/textmate","ace/ext/error_marker","ace/config","ace/loader_build"], function(require, exports, module){/** - * The main class required to set up an Ace instance in the browser. - * - * @class Ace - **/ -"use strict"; -require("./loader_build")(exports) -var dom = require("./lib/dom"); -var Range = require("./range").Range; -var Editor = require("./editor").Editor; -var EditSession = require("./edit_session").EditSession; -var UndoManager = require("./undomanager").UndoManager; -var Renderer = require("./virtual_renderer").VirtualRenderer; -require("./worker/worker_client"); -require("./keyboard/hash_handler"); -require("./placeholder"); -require("./multi_select"); -require("./mode/folding/fold_mode"); -require("./theme/textmate"); -require("./ext/error_marker"); -exports.config = require("./config"); -exports.edit = function (el, options) { - if (typeof el == "string") { - var _id = el; - el = document.getElementById(_id); - if (!el) - throw new Error("ace.edit can't find div #" + _id); - } - if (el && el.env && el.env.editor instanceof Editor) - return el.env.editor; - var value = ""; - if (el && /input|textarea/i.test(el.tagName)) { - var oldNode = el; - value = oldNode.value; - el = dom.createElement("pre"); - oldNode.parentNode.replaceChild(el, oldNode); - } - else if (el) { - value = el.textContent; - el.innerHTML = ""; - } - var doc = exports.createEditSession(value); - var editor = new Editor(new Renderer(el), doc, options); - var env = { - document: doc, - editor: editor, - onResize: editor.resize.bind(editor, null) - }; - if (oldNode) - env.textarea = oldNode; - editor.on("destroy", function () { - env.editor.container.env = null; // prevent memory leak on old ie - }); - editor.container.env = editor.env = env; - return editor; -}; -exports.createEditSession = function (text, mode) { - var doc = new EditSession(text, mode); - doc.setUndoManager(new UndoManager()); - return doc; -}; -exports.Range = Range; -exports.Editor = Editor; -exports.EditSession = EditSession; -exports.UndoManager = UndoManager; -exports.VirtualRenderer = Renderer; -exports.version = exports.config.version; - -}); (function() { - ace.require(["ace/ace"], function(a) { - if (a) { - a.config.init(true); - a.define = ace.define; - } - var global = (function () { - return this; - })(); - if (!global && typeof window != "undefined") global = window; // can happen in strict mode - if (!global && typeof self != "undefined") global = self; // can happen in webworker - - if (!global.ace) - global.ace = a; - for (var key in a) if (a.hasOwnProperty(key)) - global.ace[key] = a[key]; - global.ace["default"] = global.ace; - if ( true && module) { - module.exports = global.ace; - } - }); - })(); - - -/***/ }), - -/***/ 134: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -/* module decorator */ module = __webpack_require__.nmd(module); -ace.define("ace/ext/beautify",["require","exports","module","ace/token_iterator"], function(require, exports, module){// [WIP] -"use strict"; -var TokenIterator = require("../token_iterator").TokenIterator; -function is(token, type) { - return token.type.lastIndexOf(type + ".xml") > -1; -} -exports.singletonTags = ["area", "base", "br", "col", "command", "embed", "hr", "html", "img", "input", "keygen", "link", "meta", "param", "source", "track", "wbr"]; -exports.blockTags = ["article", "aside", "blockquote", "body", "div", "dl", "fieldset", "footer", "form", "head", "header", "html", "nav", "ol", "p", "script", "section", "style", "table", "tbody", "tfoot", "thead", "ul"]; -exports.formatOptions = { - lineBreaksAfterCommasInCurlyBlock: true -}; -exports.beautify = function (session) { - var iterator = new TokenIterator(session, 0, 0); - var token = iterator.getCurrentToken(); - var tabString = session.getTabString(); - var singletonTags = exports.singletonTags; - var blockTags = exports.blockTags; - var formatOptions = exports.formatOptions || {}; - var nextToken; - var breakBefore = false; - var spaceBefore = false; - var spaceAfter = false; - var code = ""; - var value = ""; - var tagName = ""; - var depth = 0; - var lastDepth = 0; - var lastIndent = 0; - var indent = 0; - var unindent = 0; - var roundDepth = 0; - var curlyDepth = 0; - var row; - var curRow = 0; - var rowsToAdd = 0; - var rowTokens = []; - var abort = false; - var i; - var indentNextLine = false; - var inTag = false; - var inCSS = false; - var inBlock = false; - var levels = { 0: 0 }; - var parents = []; - var caseBody = false; - var trimNext = function () { - if (nextToken && nextToken.value && nextToken.type !== 'string.regexp') - nextToken.value = nextToken.value.replace(/^\s*/, ""); - }; - var trimLine = function () { - var end = code.length - 1; - while (true) { - if (end == 0) - break; - if (code[end] !== " ") - break; - end = end - 1; - } - code = code.slice(0, end + 1); - }; - var trimCode = function () { - code = code.trimRight(); - breakBefore = false; - }; - while (token !== null) { - curRow = iterator.getCurrentTokenRow(); - rowTokens = iterator.$rowTokens; - nextToken = iterator.stepForward(); - if (typeof token !== "undefined") { - value = token.value; - unindent = 0; - inCSS = (tagName === "style" || session.$modeId === "ace/mode/css"); - if (is(token, "tag-open")) { - inTag = true; - if (nextToken) - inBlock = (blockTags.indexOf(nextToken.value) !== -1); - if (value === " 0; rowsToAdd--) - code += "\n"; - breakBefore = true; - if (!is(token, "comment") && !token.type.match(/^(comment|string)$/)) - value = value.trimLeft(); - } - if (value) { - if (token.type === "keyword" && value.match(/^(if|else|elseif|for|foreach|while|switch)$/)) { - parents[depth] = value; - trimNext(); - spaceAfter = true; - if (value.match(/^(else|elseif)$/)) { - if (code.match(/\}[\s]*$/)) { - trimCode(); - spaceBefore = true; - } - } - } - else if (token.type === "paren.lparen") { - trimNext(); - if (value.substr(-1) === "{") { - spaceAfter = true; - indentNextLine = false; - if (!inTag) - rowsToAdd = 1; - } - if (value.substr(0, 1) === "{") { - spaceBefore = true; - if (code.substr(-1) !== '[' && code.trimRight().substr(-1) === '[') { - trimCode(); - spaceBefore = false; - } - else if (code.trimRight().substr(-1) === ')') { - trimCode(); - } - else { - trimLine(); - } - } - } - else if (token.type === "paren.rparen") { - unindent = 1; - if (value.substr(0, 1) === "}") { - if (parents[depth - 1] === 'case') - unindent++; - if (code.trimRight().substr(-1) === '{') { - trimCode(); - } - else { - spaceBefore = true; - if (inCSS) - rowsToAdd += 2; - } - } - if (value.substr(0, 1) === "]") { - if (code.substr(-1) !== '}' && code.trimRight().substr(-1) === '}') { - spaceBefore = false; - indent++; - trimCode(); - } - } - if (value.substr(0, 1) === ")") { - if (code.substr(-1) !== '(' && code.trimRight().substr(-1) === '(') { - spaceBefore = false; - indent++; - trimCode(); - } - } - trimLine(); - } - else if ((token.type === "keyword.operator" || token.type === "keyword") && value.match(/^(=|==|===|!=|!==|&&|\|\||and|or|xor|\+=|.=|>|>=|<|<=|=>)$/)) { - trimCode(); - trimNext(); - spaceBefore = true; - spaceAfter = true; - } - else if (token.type === "punctuation.operator" && value === ';') { - trimCode(); - trimNext(); - spaceAfter = true; - if (inCSS) - rowsToAdd++; - } - else if (token.type === "punctuation.operator" && value.match(/^(:|,)$/)) { - trimCode(); - trimNext(); - if (value.match(/^(,)$/) && curlyDepth > 0 && roundDepth === 0 && formatOptions.lineBreaksAfterCommasInCurlyBlock) { - rowsToAdd++; - } - else { - spaceAfter = true; - breakBefore = false; - } - } - else if (token.type === "support.php_tag" && value === "?>" && !breakBefore) { - trimCode(); - spaceBefore = true; - } - else if (is(token, "attribute-name") && code.substr(-1).match(/^\s$/)) { - spaceBefore = true; - } - else if (is(token, "attribute-equals")) { - trimLine(); - trimNext(); - } - else if (is(token, "tag-close")) { - trimLine(); - if (value === "/>") - spaceBefore = true; - } - else if (token.type === "keyword" && value.match(/^(case|default)$/)) { - if (caseBody) - unindent = 1; - } - if (breakBefore && !(token.type.match(/^(comment)$/) && !value.substr(0, 1).match(/^[/#]$/)) && !(token.type.match(/^(string)$/) && !value.substr(0, 1).match(/^['"@]$/))) { - indent = lastIndent; - if (depth > lastDepth) { - indent++; - for (i = depth; i > lastDepth; i--) - levels[i] = indent; - } - else if (depth < lastDepth) - indent = levels[depth]; - lastDepth = depth; - lastIndent = indent; - if (unindent) - indent -= unindent; - if (indentNextLine && !roundDepth) { - indent++; - indentNextLine = false; - } - for (i = 0; i < indent; i++) - code += tabString; - } - if (token.type === "keyword" && value.match(/^(case|default)$/)) { - if (caseBody === false) { - parents[depth] = value; - depth++; - caseBody = true; - } - } - else if (token.type === "keyword" && value.match(/^(break)$/)) { - if (parents[depth - 1] && parents[depth - 1].match(/^(case|default)$/)) { - depth--; - caseBody = false; - } - } - if (token.type === "paren.lparen") { - roundDepth += (value.match(/\(/g) || []).length; - curlyDepth += (value.match(/\{/g) || []).length; - depth += value.length; - } - if (token.type === "keyword" && value.match(/^(if|else|elseif|for|while)$/)) { - indentNextLine = true; - roundDepth = 0; - } - else if (!roundDepth && value.trim() && token.type !== "comment") - indentNextLine = false; - if (token.type === "paren.rparen") { - roundDepth -= (value.match(/\)/g) || []).length; - curlyDepth -= (value.match(/\}/g) || []).length; - for (i = 0; i < value.length; i++) { - depth--; - if (value.substr(i, 1) === '}' && parents[depth] === 'case') { - depth--; - } - } - } - if (token.type == "text") - value = value.replace(/\s+$/, " "); - if (spaceBefore && !breakBefore) { - trimLine(); - if (code.substr(-1) !== "\n") - code += " "; - } - code += value; - if (spaceAfter) - code += " "; - breakBefore = false; - spaceBefore = false; - spaceAfter = false; - if ((is(token, "tag-close") && (inBlock || blockTags.indexOf(tagName) !== -1)) || (is(token, "doctype") && value === ">")) { - if (inBlock && nextToken && nextToken.value === "") { - depth--; - } - } - if (is(token, "tag-name")) { - tagName = value; - } - row = curRow; - } - } - token = nextToken; - } - code = code.trim(); - session.doc.setValue(code); -}; -exports.commands = [{ - name: "beautify", - description: "Format selection (Beautify)", - exec: function (editor) { - exports.beautify(editor.session); - }, - bindKey: "Ctrl-Shift-B" - }]; - -}); (function() { - ace.require(["ace/ext/beautify"], function(m) { - if ( true && module) { - module.exports = m; - } - }); - })(); - - -/***/ }), - -/***/ 604: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -/* module decorator */ module = __webpack_require__.nmd(module); -ace.define("ace/ext/searchbox-css",["require","exports","module"], function(require, exports, module){module.exports = "\n\n/* ------------------------------------------------------------------------------------------\n * Editor Search Form\n * --------------------------------------------------------------------------------------- */\n.ace_search {\n background-color: #ddd;\n color: #666;\n border: 1px solid #cbcbcb;\n border-top: 0 none;\n overflow: hidden;\n margin: 0;\n padding: 4px 6px 0 4px;\n position: absolute;\n top: 0;\n z-index: 99;\n white-space: normal;\n}\n.ace_search.left {\n border-left: 0 none;\n border-radius: 0px 0px 5px 0px;\n left: 0;\n}\n.ace_search.right {\n border-radius: 0px 0px 0px 5px;\n border-right: 0 none;\n right: 0;\n}\n\n.ace_search_form, .ace_replace_form {\n margin: 0 20px 4px 0;\n overflow: hidden;\n line-height: 1.9;\n}\n.ace_replace_form {\n margin-right: 0;\n}\n.ace_search_form.ace_nomatch {\n outline: 1px solid red;\n}\n\n.ace_search_field {\n border-radius: 3px 0 0 3px;\n background-color: white;\n color: black;\n border: 1px solid #cbcbcb;\n border-right: 0 none;\n outline: 0;\n padding: 0;\n font-size: inherit;\n margin: 0;\n line-height: inherit;\n padding: 0 6px;\n min-width: 17em;\n vertical-align: top;\n min-height: 1.8em;\n box-sizing: content-box;\n}\n.ace_searchbtn {\n border: 1px solid #cbcbcb;\n line-height: inherit;\n display: inline-block;\n padding: 0 6px;\n background: #fff;\n border-right: 0 none;\n border-left: 1px solid #dcdcdc;\n cursor: pointer;\n margin: 0;\n position: relative;\n color: #666;\n}\n.ace_searchbtn:last-child {\n border-radius: 0 3px 3px 0;\n border-right: 1px solid #cbcbcb;\n}\n.ace_searchbtn:disabled {\n background: none;\n cursor: default;\n}\n.ace_searchbtn:hover {\n background-color: #eef1f6;\n}\n.ace_searchbtn.prev, .ace_searchbtn.next {\n padding: 0px 0.7em\n}\n.ace_searchbtn.prev:after, .ace_searchbtn.next:after {\n content: \"\";\n border: solid 2px #888;\n width: 0.5em;\n height: 0.5em;\n border-width: 2px 0 0 2px;\n display:inline-block;\n transform: rotate(-45deg);\n}\n.ace_searchbtn.next:after {\n border-width: 0 2px 2px 0 ;\n}\n.ace_searchbtn_close {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAcCAYAAABRVo5BAAAAZ0lEQVR42u2SUQrAMAhDvazn8OjZBilCkYVVxiis8H4CT0VrAJb4WHT3C5xU2a2IQZXJjiQIRMdkEoJ5Q2yMqpfDIo+XY4k6h+YXOyKqTIj5REaxloNAd0xiKmAtsTHqW8sR2W5f7gCu5nWFUpVjZwAAAABJRU5ErkJggg==) no-repeat 50% 0;\n border-radius: 50%;\n border: 0 none;\n color: #656565;\n cursor: pointer;\n font: 16px/16px Arial;\n padding: 0;\n height: 14px;\n width: 14px;\n top: 9px;\n right: 7px;\n position: absolute;\n}\n.ace_searchbtn_close:hover {\n background-color: #656565;\n background-position: 50% 100%;\n color: white;\n}\n\n.ace_button {\n margin-left: 2px;\n cursor: pointer;\n -webkit-user-select: none;\n -moz-user-select: none;\n -o-user-select: none;\n -ms-user-select: none;\n user-select: none;\n overflow: hidden;\n opacity: 0.7;\n border: 1px solid rgba(100,100,100,0.23);\n padding: 1px;\n box-sizing: border-box!important;\n color: black;\n}\n\n.ace_button:hover {\n background-color: #eee;\n opacity:1;\n}\n.ace_button:active {\n background-color: #ddd;\n}\n\n.ace_button.checked {\n border-color: #3399ff;\n opacity:1;\n}\n\n.ace_search_options{\n margin-bottom: 3px;\n text-align: right;\n -webkit-user-select: none;\n -moz-user-select: none;\n -o-user-select: none;\n -ms-user-select: none;\n user-select: none;\n clear: both;\n}\n\n.ace_search_counter {\n float: left;\n font-family: arial;\n padding: 0 8px;\n}"; - -}); - -ace.define("ace/ext/searchbox",["require","exports","module","ace/lib/dom","ace/lib/lang","ace/lib/event","ace/ext/searchbox-css","ace/keyboard/hash_handler","ace/lib/keys","ace/config"], function(require, exports, module){"use strict"; -var dom = require("../lib/dom"); -var lang = require("../lib/lang"); -var event = require("../lib/event"); -var searchboxCss = require("./searchbox-css"); -var HashHandler = require("../keyboard/hash_handler").HashHandler; -var keyUtil = require("../lib/keys"); -var nls = require("../config").nls; -var MAX_COUNT = 999; -dom.importCssString(searchboxCss, "ace_searchbox", false); -var SearchBox = /** @class */ (function () { - function SearchBox(editor, range, showReplaceForm) { - var div = dom.createElement("div"); - dom.buildDom(["div", { class: "ace_search right" }, - ["span", { action: "hide", class: "ace_searchbtn_close" }], - ["div", { class: "ace_search_form" }, - ["input", { class: "ace_search_field", placeholder: nls("Search for"), spellcheck: "false" }], - ["span", { action: "findPrev", class: "ace_searchbtn prev" }, "\u200b"], - ["span", { action: "findNext", class: "ace_searchbtn next" }, "\u200b"], - ["span", { action: "findAll", class: "ace_searchbtn", title: "Alt-Enter" }, nls("All")] - ], - ["div", { class: "ace_replace_form" }, - ["input", { class: "ace_search_field", placeholder: nls("Replace with"), spellcheck: "false" }], - ["span", { action: "replaceAndFindNext", class: "ace_searchbtn" }, nls("Replace")], - ["span", { action: "replaceAll", class: "ace_searchbtn" }, nls("All")] - ], - ["div", { class: "ace_search_options" }, - ["span", { action: "toggleReplace", class: "ace_button", title: nls("Toggle Replace mode"), - style: "float:left;margin-top:-2px;padding:0 5px;" }, "+"], - ["span", { class: "ace_search_counter" }], - ["span", { action: "toggleRegexpMode", class: "ace_button", title: nls("RegExp Search") }, ".*"], - ["span", { action: "toggleCaseSensitive", class: "ace_button", title: nls("CaseSensitive Search") }, "Aa"], - ["span", { action: "toggleWholeWords", class: "ace_button", title: nls("Whole Word Search") }, "\\b"], - ["span", { action: "searchInSelection", class: "ace_button", title: nls("Search In Selection") }, "S"] - ] - ], div); - this.element = div.firstChild; - this.setSession = this.setSession.bind(this); - this.$init(); - this.setEditor(editor); - dom.importCssString(searchboxCss, "ace_searchbox", editor.container); - } - SearchBox.prototype.setEditor = function (editor) { - editor.searchBox = this; - editor.renderer.scroller.appendChild(this.element); - this.editor = editor; - }; - SearchBox.prototype.setSession = function (e) { - this.searchRange = null; - this.$syncOptions(true); - }; - SearchBox.prototype.$initElements = function (sb) { - this.searchBox = sb.querySelector(".ace_search_form"); - this.replaceBox = sb.querySelector(".ace_replace_form"); - this.searchOption = sb.querySelector("[action=searchInSelection]"); - this.replaceOption = sb.querySelector("[action=toggleReplace]"); - this.regExpOption = sb.querySelector("[action=toggleRegexpMode]"); - this.caseSensitiveOption = sb.querySelector("[action=toggleCaseSensitive]"); - this.wholeWordOption = sb.querySelector("[action=toggleWholeWords]"); - this.searchInput = this.searchBox.querySelector(".ace_search_field"); - this.replaceInput = this.replaceBox.querySelector(".ace_search_field"); - this.searchCounter = sb.querySelector(".ace_search_counter"); - }; - SearchBox.prototype.$init = function () { - var sb = this.element; - this.$initElements(sb); - var _this = this; - event.addListener(sb, "mousedown", function (e) { - setTimeout(function () { - _this.activeInput.focus(); - }, 0); - event.stopPropagation(e); - }); - event.addListener(sb, "click", function (e) { - var t = e.target || e.srcElement; - var action = t.getAttribute("action"); - if (action && _this[action]) - _this[action](); - else if (_this.$searchBarKb.commands[action]) - _this.$searchBarKb.commands[action].exec(_this); - event.stopPropagation(e); - }); - event.addCommandKeyListener(sb, function (e, hashId, keyCode) { - var keyString = keyUtil.keyCodeToString(keyCode); - var command = _this.$searchBarKb.findKeyCommand(hashId, keyString); - if (command && command.exec) { - command.exec(_this); - event.stopEvent(e); - } - }); - this.$onChange = lang.delayedCall(function () { - _this.find(false, false); - }); - event.addListener(this.searchInput, "input", function () { - _this.$onChange.schedule(20); - }); - event.addListener(this.searchInput, "focus", function () { - _this.activeInput = _this.searchInput; - _this.searchInput.value && _this.highlight(); - }); - event.addListener(this.replaceInput, "focus", function () { - _this.activeInput = _this.replaceInput; - _this.searchInput.value && _this.highlight(); - }); - }; - SearchBox.prototype.setSearchRange = function (range) { - this.searchRange = range; - if (range) { - this.searchRangeMarker = this.editor.session.addMarker(range, "ace_active-line"); - } - else if (this.searchRangeMarker) { - this.editor.session.removeMarker(this.searchRangeMarker); - this.searchRangeMarker = null; - } - }; - SearchBox.prototype.$syncOptions = function (preventScroll) { - dom.setCssClass(this.replaceOption, "checked", this.searchRange); - dom.setCssClass(this.searchOption, "checked", this.searchOption.checked); - this.replaceOption.textContent = this.replaceOption.checked ? "-" : "+"; - dom.setCssClass(this.regExpOption, "checked", this.regExpOption.checked); - dom.setCssClass(this.wholeWordOption, "checked", this.wholeWordOption.checked); - dom.setCssClass(this.caseSensitiveOption, "checked", this.caseSensitiveOption.checked); - var readOnly = this.editor.getReadOnly(); - this.replaceOption.style.display = readOnly ? "none" : ""; - this.replaceBox.style.display = this.replaceOption.checked && !readOnly ? "" : "none"; - this.find(false, false, preventScroll); - }; - SearchBox.prototype.highlight = function (re) { - this.editor.session.highlight(re || this.editor.$search.$options.re); - this.editor.renderer.updateBackMarkers(); - }; - SearchBox.prototype.find = function (skipCurrent, backwards, preventScroll) { - var range = this.editor.find(this.searchInput.value, { - skipCurrent: skipCurrent, - backwards: backwards, - wrap: true, - regExp: this.regExpOption.checked, - caseSensitive: this.caseSensitiveOption.checked, - wholeWord: this.wholeWordOption.checked, - preventScroll: preventScroll, - range: this.searchRange - }); - var noMatch = !range && this.searchInput.value; - dom.setCssClass(this.searchBox, "ace_nomatch", noMatch); - this.editor._emit("findSearchBox", { match: !noMatch }); - this.highlight(); - this.updateCounter(); - }; - SearchBox.prototype.updateCounter = function () { - var editor = this.editor; - var regex = editor.$search.$options.re; - var supportsUnicodeFlag = regex.unicode; - var all = 0; - var before = 0; - if (regex) { - var value = this.searchRange - ? editor.session.getTextRange(this.searchRange) - : editor.getValue(); - var offset = editor.session.doc.positionToIndex(editor.selection.anchor); - if (this.searchRange) - offset -= editor.session.doc.positionToIndex(this.searchRange.start); - var last = regex.lastIndex = 0; - var m; - while ((m = regex.exec(value))) { - all++; - last = m.index; - if (last <= offset) - before++; - if (all > MAX_COUNT) - break; - if (!m[0]) { - regex.lastIndex = last += lang.skipEmptyMatch(value, last, supportsUnicodeFlag); - if (last >= value.length) - break; - } - } - } - this.searchCounter.textContent = nls("$0 of $1", [before, (all > MAX_COUNT ? MAX_COUNT + "+" : all)]); - }; - SearchBox.prototype.findNext = function () { - this.find(true, false); - }; - SearchBox.prototype.findPrev = function () { - this.find(true, true); - }; - SearchBox.prototype.findAll = function () { - var range = this.editor.findAll(this.searchInput.value, { - regExp: this.regExpOption.checked, - caseSensitive: this.caseSensitiveOption.checked, - wholeWord: this.wholeWordOption.checked - }); - var noMatch = !range && this.searchInput.value; - dom.setCssClass(this.searchBox, "ace_nomatch", noMatch); - this.editor._emit("findSearchBox", { match: !noMatch }); - this.highlight(); - this.hide(); - }; - SearchBox.prototype.replace = function () { - if (!this.editor.getReadOnly()) - this.editor.replace(this.replaceInput.value); - }; - SearchBox.prototype.replaceAndFindNext = function () { - if (!this.editor.getReadOnly()) { - this.editor.replace(this.replaceInput.value); - this.findNext(); - } - }; - SearchBox.prototype.replaceAll = function () { - if (!this.editor.getReadOnly()) - this.editor.replaceAll(this.replaceInput.value); - }; - SearchBox.prototype.hide = function () { - this.active = false; - this.setSearchRange(null); - this.editor.off("changeSession", this.setSession); - this.element.style.display = "none"; - this.editor.keyBinding.removeKeyboardHandler(this.$closeSearchBarKb); - this.editor.focus(); - }; - SearchBox.prototype.show = function (value, isReplace) { - this.active = true; - this.editor.on("changeSession", this.setSession); - this.element.style.display = ""; - this.replaceOption.checked = isReplace; - if (value) - this.searchInput.value = value; - this.searchInput.focus(); - this.searchInput.select(); - this.editor.keyBinding.addKeyboardHandler(this.$closeSearchBarKb); - this.$syncOptions(true); - }; - SearchBox.prototype.isFocused = function () { - var el = document.activeElement; - return el == this.searchInput || el == this.replaceInput; - }; - return SearchBox; -}()); -var $searchBarKb = new HashHandler(); -$searchBarKb.bindKeys({ - "Ctrl-f|Command-f": function (sb) { - var isReplace = sb.isReplace = !sb.isReplace; - sb.replaceBox.style.display = isReplace ? "" : "none"; - sb.replaceOption.checked = false; - sb.$syncOptions(); - sb.searchInput.focus(); - }, - "Ctrl-H|Command-Option-F": function (sb) { - if (sb.editor.getReadOnly()) - return; - sb.replaceOption.checked = true; - sb.$syncOptions(); - sb.replaceInput.focus(); - }, - "Ctrl-G|Command-G": function (sb) { - sb.findNext(); - }, - "Ctrl-Shift-G|Command-Shift-G": function (sb) { - sb.findPrev(); - }, - "esc": function (sb) { - setTimeout(function () { sb.hide(); }); - }, - "Return": function (sb) { - if (sb.activeInput == sb.replaceInput) - sb.replace(); - sb.findNext(); - }, - "Shift-Return": function (sb) { - if (sb.activeInput == sb.replaceInput) - sb.replace(); - sb.findPrev(); - }, - "Alt-Return": function (sb) { - if (sb.activeInput == sb.replaceInput) - sb.replaceAll(); - sb.findAll(); - }, - "Tab": function (sb) { - (sb.activeInput == sb.replaceInput ? sb.searchInput : sb.replaceInput).focus(); - } -}); -$searchBarKb.addCommands([{ - name: "toggleRegexpMode", - bindKey: { win: "Alt-R|Alt-/", mac: "Ctrl-Alt-R|Ctrl-Alt-/" }, - exec: function (sb) { - sb.regExpOption.checked = !sb.regExpOption.checked; - sb.$syncOptions(); - } - }, { - name: "toggleCaseSensitive", - bindKey: { win: "Alt-C|Alt-I", mac: "Ctrl-Alt-R|Ctrl-Alt-I" }, - exec: function (sb) { - sb.caseSensitiveOption.checked = !sb.caseSensitiveOption.checked; - sb.$syncOptions(); - } - }, { - name: "toggleWholeWords", - bindKey: { win: "Alt-B|Alt-W", mac: "Ctrl-Alt-B|Ctrl-Alt-W" }, - exec: function (sb) { - sb.wholeWordOption.checked = !sb.wholeWordOption.checked; - sb.$syncOptions(); - } - }, { - name: "toggleReplace", - exec: function (sb) { - sb.replaceOption.checked = !sb.replaceOption.checked; - sb.$syncOptions(); - } - }, { - name: "searchInSelection", - exec: function (sb) { - sb.searchOption.checked = !sb.searchRange; - sb.setSearchRange(sb.searchOption.checked && sb.editor.getSelectionRange()); - sb.$syncOptions(); - } - }]); -var $closeSearchBarKb = new HashHandler([{ - bindKey: "Esc", - name: "closeSearchBar", - exec: function (editor) { - editor.searchBox.hide(); - } - }]); -SearchBox.prototype.$searchBarKb = $searchBarKb; -SearchBox.prototype.$closeSearchBarKb = $closeSearchBarKb; -exports.SearchBox = SearchBox; -exports.Search = function (editor, isReplace) { - var sb = editor.searchBox || new SearchBox(editor); - sb.show(editor.session.getTextRange(), isReplace); -}; - -}); (function() { - ace.require(["ace/ext/searchbox"], function(m) { - if ( true && module) { - module.exports = m; - } - }); - })(); - - -/***/ }), - -/***/ 549: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -/* module decorator */ module = __webpack_require__.nmd(module); -ace.define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; -var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; -var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|flex-end|flex-start|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom"; -var supportConstantColor = exports.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|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|green|greenyellow|grey|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|magenta|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|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen"; -var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; -var numRe = exports.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))"; -var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; -var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; -var CssHighlightRules = function () { - var keywordMapper = this.createKeywordMapper({ - "support.function": supportFunction, - "support.constant": supportConstant, - "support.type": supportType, - "support.constant.color": supportConstantColor, - "support.constant.fonts": supportConstantFonts - }, "text", true); - this.$rules = { - "start": [{ - include: ["strings", "url", "comments"] - }, { - token: "paren.lparen", - regex: "\\{", - next: "ruleset" - }, { - token: "paren.rparen", - regex: "\\}" - }, { - token: "string", - regex: "@(?!viewport)", - next: "media" - }, { - token: "keyword", - regex: "#[a-z0-9-_]+" - }, { - token: "keyword", - regex: "%" - }, { - token: "variable", - regex: "\\.[a-z0-9-_]+" - }, { - token: "string", - regex: ":[a-z0-9-_]+" - }, { - token: "constant.numeric", - regex: numRe - }, { - token: "constant", - regex: "[a-z0-9-_]+" - }, { - caseInsensitive: true - }], - "media": [{ - include: ["strings", "url", "comments"] - }, { - token: "paren.lparen", - regex: "\\{", - next: "start" - }, { - token: "paren.rparen", - regex: "\\}", - next: "start" - }, { - token: "string", - regex: ";", - next: "start" - }, { - token: "keyword", - regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" - + "|page|font|keyframes|viewport|counter-style|font-feature-values" - + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" - }], - "comments": [{ - token: "comment", - regex: "\\/\\*", - push: [{ - token: "comment", - regex: "\\*\\/", - next: "pop" - }, { - defaultToken: "comment" - }] - }], - "ruleset": [{ - regex: "-(webkit|ms|moz|o)-", - token: "text" - }, { - token: "punctuation.operator", - regex: "[:;]" - }, { - token: "paren.rparen", - regex: "\\}", - next: "start" - }, { - include: ["strings", "url", "comments"] - }, { - token: ["constant.numeric", "keyword"], - regex: "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)" - }, { - token: "constant.numeric", - regex: numRe - }, { - token: "constant.numeric", - regex: "#[a-f0-9]{6}" - }, { - token: "constant.numeric", - regex: "#[a-f0-9]{3}" - }, { - token: ["punctuation", "entity.other.attribute-name.pseudo-element.css"], - regex: pseudoElements - }, { - token: ["punctuation", "entity.other.attribute-name.pseudo-class.css"], - regex: pseudoClasses - }, { - include: "url" - }, { - token: keywordMapper, - regex: "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" - }, { - caseInsensitive: true - }], - url: [{ - token: "support.function", - regex: "(?:url(:?-prefix)?|domain|regexp)\\(", - push: [{ - token: "support.function", - regex: "\\)", - next: "pop" - }, { - defaultToken: "string" - }] - }], - strings: [{ - token: "string.start", - regex: "'", - push: [{ - token: "string.end", - regex: "'|$", - next: "pop" - }, { - include: "escapes" - }, { - token: "constant.language.escape", - regex: /\\$/, - consumeLineEnd: true - }, { - defaultToken: "string" - }] - }, { - token: "string.start", - regex: '"', - push: [{ - token: "string.end", - regex: '"|$', - next: "pop" - }, { - include: "escapes" - }, { - token: "constant.language.escape", - regex: /\\$/, - consumeLineEnd: true - }, { - defaultToken: "string" - }] - }], - escapes: [{ - token: "constant.language.escape", - regex: /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ - }] - }; - this.normalizeRules(); -}; -oop.inherits(CssHighlightRules, TextHighlightRules); -exports.CssHighlightRules = CssHighlightRules; - -}); - -ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; -var Range = require("../range").Range; -var MatchingBraceOutdent = function () { }; -(function () { - this.checkOutdent = function (line, input) { - if (!/^\s+$/.test(line)) - return false; - return /^\s*\}/.test(input); - }; - this.autoOutdent = function (doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - if (!match) - return 0; - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({ row: row, column: column }); - if (!openBracePos || openBracePos.row == row) - return 0; - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column - 1), indent); - }; - this.$getIndent = function (line) { - return line.match(/^\s*/)[0]; - }; -}).call(MatchingBraceOutdent.prototype); -exports.MatchingBraceOutdent = MatchingBraceOutdent; - -}); - -ace.define("ace/mode/css_completions",["require","exports","module"], function(require, exports, module){"use strict"; -var propertyMap = { - "background": { "#$0": 1 }, - "background-color": { "#$0": 1, "transparent": 1, "fixed": 1 }, - "background-image": { "url('/$0')": 1 }, - "background-repeat": { "repeat": 1, "repeat-x": 1, "repeat-y": 1, "no-repeat": 1, "inherit": 1 }, - "background-position": { "bottom": 2, "center": 2, "left": 2, "right": 2, "top": 2, "inherit": 2 }, - "background-attachment": { "scroll": 1, "fixed": 1 }, - "background-size": { "cover": 1, "contain": 1 }, - "background-clip": { "border-box": 1, "padding-box": 1, "content-box": 1 }, - "background-origin": { "border-box": 1, "padding-box": 1, "content-box": 1 }, - "border": { "solid $0": 1, "dashed $0": 1, "dotted $0": 1, "#$0": 1 }, - "border-color": { "#$0": 1 }, - "border-style": { "solid": 2, "dashed": 2, "dotted": 2, "double": 2, "groove": 2, "hidden": 2, "inherit": 2, "inset": 2, "none": 2, "outset": 2, "ridged": 2 }, - "border-collapse": { "collapse": 1, "separate": 1 }, - "bottom": { "px": 1, "em": 1, "%": 1 }, - "clear": { "left": 1, "right": 1, "both": 1, "none": 1 }, - "color": { "#$0": 1, "rgb(#$00,0,0)": 1 }, - "cursor": { "default": 1, "pointer": 1, "move": 1, "text": 1, "wait": 1, "help": 1, "progress": 1, "n-resize": 1, "ne-resize": 1, "e-resize": 1, "se-resize": 1, "s-resize": 1, "sw-resize": 1, "w-resize": 1, "nw-resize": 1 }, - "display": { "none": 1, "block": 1, "inline": 1, "inline-block": 1, "table-cell": 1 }, - "empty-cells": { "show": 1, "hide": 1 }, - "float": { "left": 1, "right": 1, "none": 1 }, - "font-family": { "Arial": 2, "Comic Sans MS": 2, "Consolas": 2, "Courier New": 2, "Courier": 2, "Georgia": 2, "Monospace": 2, "Sans-Serif": 2, "Segoe UI": 2, "Tahoma": 2, "Times New Roman": 2, "Trebuchet MS": 2, "Verdana": 1 }, - "font-size": { "px": 1, "em": 1, "%": 1 }, - "font-weight": { "bold": 1, "normal": 1 }, - "font-style": { "italic": 1, "normal": 1 }, - "font-variant": { "normal": 1, "small-caps": 1 }, - "height": { "px": 1, "em": 1, "%": 1 }, - "left": { "px": 1, "em": 1, "%": 1 }, - "letter-spacing": { "normal": 1 }, - "line-height": { "normal": 1 }, - "list-style-type": { "none": 1, "disc": 1, "circle": 1, "square": 1, "decimal": 1, "decimal-leading-zero": 1, "lower-roman": 1, "upper-roman": 1, "lower-greek": 1, "lower-latin": 1, "upper-latin": 1, "georgian": 1, "lower-alpha": 1, "upper-alpha": 1 }, - "margin": { "px": 1, "em": 1, "%": 1 }, - "margin-right": { "px": 1, "em": 1, "%": 1 }, - "margin-left": { "px": 1, "em": 1, "%": 1 }, - "margin-top": { "px": 1, "em": 1, "%": 1 }, - "margin-bottom": { "px": 1, "em": 1, "%": 1 }, - "max-height": { "px": 1, "em": 1, "%": 1 }, - "max-width": { "px": 1, "em": 1, "%": 1 }, - "min-height": { "px": 1, "em": 1, "%": 1 }, - "min-width": { "px": 1, "em": 1, "%": 1 }, - "overflow": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 }, - "overflow-x": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 }, - "overflow-y": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 }, - "padding": { "px": 1, "em": 1, "%": 1 }, - "padding-top": { "px": 1, "em": 1, "%": 1 }, - "padding-right": { "px": 1, "em": 1, "%": 1 }, - "padding-bottom": { "px": 1, "em": 1, "%": 1 }, - "padding-left": { "px": 1, "em": 1, "%": 1 }, - "page-break-after": { "auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1 }, - "page-break-before": { "auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1 }, - "position": { "absolute": 1, "relative": 1, "fixed": 1, "static": 1 }, - "right": { "px": 1, "em": 1, "%": 1 }, - "table-layout": { "fixed": 1, "auto": 1 }, - "text-decoration": { "none": 1, "underline": 1, "line-through": 1, "blink": 1 }, - "text-align": { "left": 1, "right": 1, "center": 1, "justify": 1 }, - "text-transform": { "capitalize": 1, "uppercase": 1, "lowercase": 1, "none": 1 }, - "top": { "px": 1, "em": 1, "%": 1 }, - "vertical-align": { "top": 1, "bottom": 1 }, - "visibility": { "hidden": 1, "visible": 1 }, - "white-space": { "nowrap": 1, "normal": 1, "pre": 1, "pre-line": 1, "pre-wrap": 1 }, - "width": { "px": 1, "em": 1, "%": 1 }, - "word-spacing": { "normal": 1 }, - "filter": { "alpha(opacity=$0100)": 1 }, - "text-shadow": { "$02px 2px 2px #777": 1 }, - "text-overflow": { "ellipsis-word": 1, "clip": 1, "ellipsis": 1 }, - "-moz-border-radius": 1, - "-moz-border-radius-topright": 1, - "-moz-border-radius-bottomright": 1, - "-moz-border-radius-topleft": 1, - "-moz-border-radius-bottomleft": 1, - "-webkit-border-radius": 1, - "-webkit-border-top-right-radius": 1, - "-webkit-border-top-left-radius": 1, - "-webkit-border-bottom-right-radius": 1, - "-webkit-border-bottom-left-radius": 1, - "-moz-box-shadow": 1, - "-webkit-box-shadow": 1, - "transform": { "rotate($00deg)": 1, "skew($00deg)": 1 }, - "-moz-transform": { "rotate($00deg)": 1, "skew($00deg)": 1 }, - "-webkit-transform": { "rotate($00deg)": 1, "skew($00deg)": 1 } -}; -var CssCompletions = function () { -}; -(function () { - this.completionsDefined = false; - this.defineCompletions = function () { - if (document) { - var style = document.createElement('c').style; - for (var i in style) { - if (typeof style[i] !== 'string') - continue; - var name = i.replace(/[A-Z]/g, function (x) { - return '-' + x.toLowerCase(); - }); - if (!propertyMap.hasOwnProperty(name)) - propertyMap[name] = 1; - } - } - this.completionsDefined = true; - }; - this.getCompletions = function (state, session, pos, prefix) { - if (!this.completionsDefined) { - this.defineCompletions(); - } - if (state === 'ruleset' || session.$mode.$id == "ace/mode/scss") { - var line = session.getLine(pos.row).substr(0, pos.column); - var inParens = /\([^)]*$/.test(line); - if (inParens) { - line = line.substr(line.lastIndexOf('(') + 1); - } - if (/:[^;]+$/.test(line)) { - /([\w\-]+):[^:]*$/.test(line); - return this.getPropertyValueCompletions(state, session, pos, prefix); - } - else { - return this.getPropertyCompletions(state, session, pos, prefix, inParens); - } - } - return []; - }; - this.getPropertyCompletions = function (state, session, pos, prefix, skipSemicolon) { - skipSemicolon = skipSemicolon || false; - var properties = Object.keys(propertyMap); - return properties.map(function (property) { - return { - caption: property, - snippet: property + ': $0' + (skipSemicolon ? '' : ';'), - meta: "property", - score: 1000000 - }; - }); - }; - this.getPropertyValueCompletions = function (state, session, pos, prefix) { - var line = session.getLine(pos.row).substr(0, pos.column); - var property = (/([\w\-]+):[^:]*$/.exec(line) || {})[1]; - if (!property) - return []; - var values = []; - if (property in propertyMap && typeof propertyMap[property] === "object") { - values = Object.keys(propertyMap[property]); - } - return values.map(function (value) { - return { - caption: value, - snippet: value, - meta: "property value", - score: 1000000 - }; - }); - }; -}).call(CssCompletions.prototype); -exports.CssCompletions = CssCompletions; - -}); - -ace.define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"], function(require, exports, module){"use strict"; -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var CstyleBehaviour = require("./cstyle").CstyleBehaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; -var CssBehaviour = function () { - this.inherit(CstyleBehaviour); - this.add("colon", "insertion", function (state, action, editor, session, text) { - if (text === ':' && editor.selection.isEmpty()) { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - if (token && token.value.match(/\s+/)) { - token = iterator.stepBackward(); - } - if (token && token.type === 'support.type') { - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === ':') { - return { - text: '', - selection: [1, 1] - }; - } - if (/^(\s+[^;]|\s*$)/.test(line.substring(cursor.column))) { - return { - text: ':;', - selection: [1, 1] - }; - } - } - } - }); - this.add("colon", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected === ':') { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - if (token && token.value.match(/\s+/)) { - token = iterator.stepBackward(); - } - if (token && token.type === 'support.type') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.end.column, range.end.column + 1); - if (rightChar === ';') { - range.end.column++; - return range; - } - } - } - }); - this.add("semicolon", "insertion", function (state, action, editor, session, text) { - if (text === ';' && editor.selection.isEmpty()) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === ';') { - return { - text: '', - selection: [1, 1] - }; - } - } - }); - this.add("!important", "insertion", function (state, action, editor, session, text) { - if (text === '!' && editor.selection.isEmpty()) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (/^\s*(;|}|$)/.test(line.substring(cursor.column))) { - return { - text: '!important', - selection: [10, 10] - }; - } - } - }); -}; -oop.inherits(CssBehaviour, CstyleBehaviour); -exports.CssBehaviour = CssBehaviour; - -}); - -ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; -var FoldMode = exports.FoldMode = function (commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); - this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); - } -}; -oop.inherits(FoldMode, BaseFoldMode); -(function () { - this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; - this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; - this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; - this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function (session, foldStyle, row) { - var line = session.getLine(row); - if (this.singleLineBlockCommentRe.test(line)) { - if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) - return ""; - } - var fw = this._getFoldWidgetBase(session, foldStyle, row); - if (!fw && this.startRegionRe.test(line)) - return "start"; // lineCommentRegionStart - return fw; - }; - this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - if (this.startRegionRe.test(line)) - return this.getCommentRegionBlock(session, line, row); - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } - else if (foldStyle != "all") - range = null; - } - return range; - } - if (foldStyle === "markbegin") - return; - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - return session.getCommentFoldRange(row, i, -1); - } - }; - this.getSectionRange = function (session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } - else if (subRange.isMultiLine()) { - row = subRange.end.row; - } - else if (startIndent == indent) { - break; - } - } - endRow = row; - } - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - this.getCommentRegionBlock = function (session, line, row) { - var startColumn = line.search(/\s*$/); - var maxRow = session.getLength(); - var startRow = row; - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; - var depth = 1; - while (++row < maxRow) { - line = session.getLine(row); - var m = re.exec(line); - if (!m) - continue; - if (m[1]) - depth--; - else - depth++; - if (!depth) - break; - } - var endRow = row; - if (endRow > startRow) { - return new Range(startRow, startColumn, endRow, line.length); - } - }; -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var WorkerClient = require("../worker/worker_client").WorkerClient; -var CssCompletions = require("./css_completions").CssCompletions; -var CssBehaviour = require("./behaviour/css").CssBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; -var Mode = function () { - this.HighlightRules = CssHighlightRules; - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CssBehaviour(); - this.$completer = new CssCompletions(); - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); -(function () { - this.foldingRules = "cStyle"; - this.blockComment = { start: "/*", end: "*/" }; - this.getNextLineIndent = function (state, line, tab) { - var indent = this.$getIndent(line); - var tokens = this.getTokenizer().getLineTokens(line, state).tokens; - if (tokens.length && tokens[tokens.length - 1].type == "comment") { - return indent; - } - var match = line.match(/^.*\{\s*$/); - if (match) { - indent += tab; - } - return indent; - }; - this.checkOutdent = function (state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - this.autoOutdent = function (state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - this.getCompletions = function (state, session, pos, prefix) { - return this.$completer.getCompletions(state, session, pos, prefix); - }; - this.createWorker = function (session) { - var worker = new WorkerClient(["ace"], "ace/mode/css_worker", "Worker"); - worker.attachToDocument(session.getDocument()); - worker.on("annotate", function (e) { - session.setAnnotations(e.data); - }); - worker.on("terminate", function () { - session.clearAnnotations(); - }); - return worker; - }; - this.$id = "ace/mode/css"; - this.snippetFileId = "ace/snippets/css"; -}).call(Mode.prototype); -exports.Mode = Mode; - -}); (function() { - ace.require(["ace/mode/css"], function(m) { - if ( true && module) { - module.exports = m; - } - }); - })(); - - -/***/ }), - -/***/ 576: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -/* module decorator */ module = __webpack_require__.nmd(module); -ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var DocCommentHighlightRules = function () { - this.$rules = { - "start": [ - { - token: "comment.doc.tag", - regex: "@\\w+(?=\\s|$)" - }, DocCommentHighlightRules.getTagRule(), { - defaultToken: "comment.doc", - caseInsensitive: true - } - ] - }; -}; -oop.inherits(DocCommentHighlightRules, TextHighlightRules); -DocCommentHighlightRules.getTagRule = function (start) { - return { - token: "comment.doc.tag.storage.type", - regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b" - }; -}; -DocCommentHighlightRules.getStartRule = function (start) { - return { - token: "comment.doc", - regex: "\\/\\*(?=\\*)", - next: start - }; -}; -DocCommentHighlightRules.getEndRule = function (start) { - return { - token: "comment.doc", - regex: "\\*\\/", - next: start - }; -}; -exports.DocCommentHighlightRules = DocCommentHighlightRules; - -}); - -ace.define("ace/mode/golang_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module){var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var GolangHighlightRules = function () { - var keywords = ("else|break|case|return|goto|if|const|select|" + - "continue|struct|default|switch|for|range|" + - "func|import|package|chan|defer|fallthrough|go|interface|map|range|" + - "select|type|var"); - var builtinTypes = ("string|uint8|uint16|uint32|uint64|int8|int16|int32|int64|float32|" + - "float64|complex64|complex128|byte|rune|uint|int|uintptr|bool|error"); - var builtinFunctions = ("new|close|cap|copy|panic|panicln|print|println|len|make|delete|real|recover|imag|append"); - var builtinConstants = ("nil|true|false|iota"); - var keywordMapper = this.createKeywordMapper({ - "keyword": keywords, - "constant.language": builtinConstants, - "support.function": builtinFunctions, - "support.type": builtinTypes - }, ""); - var stringEscapeRe = "\\\\(?:[0-7]{3}|x\\h{2}|u{4}|U\\h{6}|[abfnrtv'\"\\\\])".replace(/\\h/g, "[a-fA-F\\d]"); - this.$rules = { - "start": [ - { - token: "comment", - regex: "\\/\\/.*$" - }, - DocCommentHighlightRules.getStartRule("doc-start"), - { - token: "comment.start", - regex: "\\/\\*", - next: "comment" - }, { - token: "string", - regex: /"(?:[^"\\]|\\.)*?"/ - }, { - token: "string", - regex: '`', - next: "bqstring" - }, { - token: "constant.numeric", - regex: "'(?:[^\\'\uD800-\uDBFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|" + stringEscapeRe.replace('"', '') + ")'" - }, { - token: "constant.numeric", - regex: "0[xX][0-9a-fA-F]+\\b" - }, { - token: "constant.numeric", - regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" - }, { - token: ["keyword", "text", "entity.name.function"], - regex: "(func)(\\s+)([a-zA-Z_$][a-zA-Z0-9_$]*)\\b" - }, { - token: function (val) { - if (val[val.length - 1] == "(") { - return [{ - type: keywordMapper(val.slice(0, -1)) || "support.function", - value: val.slice(0, -1) - }, { - type: "paren.lparen", - value: val.slice(-1) - }]; - } - return keywordMapper(val) || "identifier"; - }, - regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b\\(?" - }, { - token: "keyword.operator", - regex: "!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|==|=|!=|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=" - }, { - token: "punctuation.operator", - regex: "\\?|\\:|\\,|\\;|\\." - }, { - token: "paren.lparen", - regex: "[[({]" - }, { - token: "paren.rparen", - regex: "[\\])}]" - }, { - token: "text", - regex: "\\s+" - } - ], - "comment": [ - { - token: "comment.end", - regex: "\\*\\/", - next: "start" - }, { - defaultToken: "comment" - } - ], - "bqstring": [ - { - token: "string", - regex: '`', - next: "start" - }, { - defaultToken: "string" - } - ] - }; - this.embedRules(DocCommentHighlightRules, "doc-", [DocCommentHighlightRules.getEndRule("start")]); -}; -oop.inherits(GolangHighlightRules, TextHighlightRules); -exports.GolangHighlightRules = GolangHighlightRules; - -}); - -ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; -var Range = require("../range").Range; -var MatchingBraceOutdent = function () { }; -(function () { - this.checkOutdent = function (line, input) { - if (!/^\s+$/.test(line)) - return false; - return /^\s*\}/.test(input); - }; - this.autoOutdent = function (doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - if (!match) - return 0; - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({ row: row, column: column }); - if (!openBracePos || openBracePos.row == row) - return 0; - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column - 1), indent); - }; - this.$getIndent = function (line) { - return line.match(/^\s*/)[0]; - }; -}).call(MatchingBraceOutdent.prototype); -exports.MatchingBraceOutdent = MatchingBraceOutdent; - -}); - -ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; -var FoldMode = exports.FoldMode = function (commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); - this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); - } -}; -oop.inherits(FoldMode, BaseFoldMode); -(function () { - this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; - this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; - this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; - this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function (session, foldStyle, row) { - var line = session.getLine(row); - if (this.singleLineBlockCommentRe.test(line)) { - if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) - return ""; - } - var fw = this._getFoldWidgetBase(session, foldStyle, row); - if (!fw && this.startRegionRe.test(line)) - return "start"; // lineCommentRegionStart - return fw; - }; - this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - if (this.startRegionRe.test(line)) - return this.getCommentRegionBlock(session, line, row); - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } - else if (foldStyle != "all") - range = null; - } - return range; - } - if (foldStyle === "markbegin") - return; - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - return session.getCommentFoldRange(row, i, -1); - } - }; - this.getSectionRange = function (session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } - else if (subRange.isMultiLine()) { - row = subRange.end.row; - } - else if (startIndent == indent) { - break; - } - } - endRow = row; - } - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - this.getCommentRegionBlock = function (session, line, row) { - var startColumn = line.search(/\s*$/); - var maxRow = session.getLength(); - var startRow = row; - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; - var depth = 1; - while (++row < maxRow) { - line = session.getLine(row); - var m = re.exec(line); - if (!m) - continue; - if (m[1]) - depth--; - else - depth++; - if (!depth) - break; - } - var endRow = row; - if (endRow > startRow) { - return new Range(startRow, startColumn, endRow, line.length); - } - }; -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/golang",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/golang_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/folding/cstyle"], function(require, exports, module){var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var GolangHighlightRules = require("./golang_highlight_rules").GolangHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; -var Mode = function () { - this.HighlightRules = GolangHighlightRules; - this.$outdent = new MatchingBraceOutdent(); - this.foldingRules = new CStyleFoldMode(); - this.$behaviour = this.$defaultBehaviour; -}; -oop.inherits(Mode, TextMode); -(function () { - this.lineCommentStart = "//"; - this.blockComment = { start: "/*", end: "*/" }; - this.getNextLineIndent = function (state, line, tab) { - var indent = this.$getIndent(line); - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); - var tokens = tokenizedLine.tokens; - var endState = tokenizedLine.state; - if (tokens.length && tokens[tokens.length - 1].type == "comment") { - return indent; - } - if (state == "start") { - var match = line.match(/^.*[\{\(\[]\s*$/); - if (match) { - indent += tab; - } - } - return indent; - }; //end getNextLineIndent - this.checkOutdent = function (state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - this.autoOutdent = function (state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - this.$id = "ace/mode/golang"; -}).call(Mode.prototype); -exports.Mode = Mode; - -}); (function() { - ace.require(["ace/mode/golang"], function(m) { - if ( true && module) { - module.exports = m; - } - }); - })(); - - -/***/ }), - -/***/ 395: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -/* module decorator */ module = __webpack_require__.nmd(module); -ace.define("ace/mode/jsdoc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var JsDocCommentHighlightRules = function () { - this.$rules = { - "start": [ - { - token: ["comment.doc.tag", "comment.doc.text", "lparen.doc"], - regex: "(@(?:param|member|typedef|property|namespace|var|const|callback))(\\s*)({)", - push: [ - { - token: "lparen.doc", - regex: "{", - push: [ - { - include: "doc-syntax" - }, { - token: "rparen.doc", - regex: "}|(?=$)", - next: "pop" - } - ] - }, { - token: ["rparen.doc", "text.doc", "variable.parameter.doc", "lparen.doc", "variable.parameter.doc", "rparen.doc"], - regex: /(})(\s*)(?:([\w=:\/\.]+)|(?:(\[)([\w=:\/\.]+)(\])))/, - next: "pop" - }, { - token: "rparen.doc", - regex: "}|(?=$)", - next: "pop" - }, { - include: "doc-syntax" - }, { - defaultToken: "text.doc" - } - ] - }, { - token: ["comment.doc.tag", "text.doc", "lparen.doc"], - regex: "(@(?:returns?|yields|type|this|suppress|public|protected|private|package|modifies|" - + "implements|external|exception|throws|enum|define|extends))(\\s*)({)", - push: [ - { - token: "lparen.doc", - regex: "{", - push: [ - { - include: "doc-syntax" - }, { - token: "rparen.doc", - regex: "}|(?=$)", - next: "pop" - } - ] - }, { - token: "rparen.doc", - regex: "}|(?=$)", - next: "pop" - }, { - include: "doc-syntax" - }, { - defaultToken: "text.doc" - } - ] - }, { - token: ["comment.doc.tag", "text.doc", "variable.parameter.doc"], - regex: "(@(?:alias|memberof|instance|module|name|lends|namespace|external|this|template|" - + "requires|param|implements|function|extends|typedef|mixes|constructor|var|" - + "memberof\\!|event|listens|exports|class|constructs|interface|emits|fires|" - + "throws|const|callback|borrows|augments))(\\s+)(\\w[\\w#\.:\/~\"\\-]*)?" - }, { - token: ["comment.doc.tag", "text.doc", "variable.parameter.doc"], - regex: "(@method)(\\s+)(\\w[\\w\.\\(\\)]*)" - }, { - token: "comment.doc.tag", - regex: "@access\\s+(?:private|public|protected)" - }, { - token: "comment.doc.tag", - regex: "@kind\\s+(?:class|constant|event|external|file|function|member|mixin|module|namespace|typedef)" - }, { - token: "comment.doc.tag", - regex: "@\\w+(?=\\s|$)" - }, - JsDocCommentHighlightRules.getTagRule(), - { - defaultToken: "comment.doc", - caseInsensitive: true - } - ], - "doc-syntax": [{ - token: "operator.doc", - regex: /[|:]/ - }, { - token: "paren.doc", - regex: /[\[\]]/ - }] - }; - this.normalizeRules(); -}; -oop.inherits(JsDocCommentHighlightRules, TextHighlightRules); -JsDocCommentHighlightRules.getTagRule = function (start) { - return { - token: "comment.doc.tag.storage.type", - regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b" - }; -}; -JsDocCommentHighlightRules.getStartRule = function (start) { - return { - token: "comment.doc", - regex: "\\/\\*(?=\\*)", - next: start - }; -}; -JsDocCommentHighlightRules.getEndRule = function (start) { - return { - token: "comment.doc", - regex: "\\*\\/", - next: start - }; -}; -exports.JsDocCommentHighlightRules = JsDocCommentHighlightRules; - -}); - -ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/jsdoc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; -var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./jsdoc_comment_highlight_rules").JsDocCommentHighlightRules; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*"; -var JavaScriptHighlightRules = function (options) { - var keywordMapper = this.createKeywordMapper({ - "variable.language": "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Symbol|" + // Constructors - "Namespace|QName|XML|XMLList|" + // E4X - "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + - "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + - "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors - "SyntaxError|TypeError|URIError|" + - "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions - "isNaN|parseFloat|parseInt|" + - "JSON|Math|" + // Other - "this|arguments|prototype|window|document", - "keyword": "const|yield|import|get|set|async|await|" + - "break|case|catch|continue|default|delete|do|else|finally|for|function|" + - "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + - "__parent__|__count__|escape|unescape|with|__proto__|" + - "class|enum|extends|super|export|implements|private|public|interface|package|protected|static|constructor", - "storage.type": "const|let|var|function", - "constant.language": "null|Infinity|NaN|undefined", - "support.function": "alert", - "constant.language.boolean": "true|false" - }, "identifier"); - var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void"; - var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex - "u[0-9a-fA-F]{4}|" + // unicode - "u{[0-9a-fA-F]{1,6}}|" + // es6 unicode - "[0-2][0-7]{0,2}|" + // oct - "3[0-7][0-7]?|" + // oct - "[4-7][0-7]?|" + //oct - ".)"; - this.$rules = { - "no_regex": [ - DocCommentHighlightRules.getStartRule("doc-start"), - comments("no_regex"), - { - token: "string", - regex: "'(?=.)", - next: "qstring" - }, { - token: "string", - regex: '"(?=.)', - next: "qqstring" - }, { - token: "constant.numeric", - regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ - }, { - token: "constant.numeric", - regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ - }, { - token: [ - "storage.type", "punctuation.operator", "support.function", - "punctuation.operator", "entity.name.function", "text", "keyword.operator" - ], - regex: "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe + ")(\\s*)(=)", - next: "function_arguments" - }, { - token: [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", "storage.type", "text", "paren.lparen" - ], - regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s*)(\\()", - next: "function_arguments" - }, { - token: [ - "entity.name.function", "text", "keyword.operator", "text", "storage.type", - "text", "paren.lparen" - ], - regex: "(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s*)(\\()", - next: "function_arguments" - }, { - token: [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s+)(\\w+)(\\s*)(\\()", - next: "function_arguments" - }, { - token: [ - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex: "(function\\*?)(\\s+)(" + identifierRe + ")(\\s*)(\\()", - next: "function_arguments" - }, { - token: [ - "entity.name.function", "text", "punctuation.operator", - "text", "storage.type", "text", "paren.lparen" - ], - regex: "(" + identifierRe + ")(\\s*)(:)(\\s*)(function\\*?)(\\s*)(\\()", - next: "function_arguments" - }, { - token: [ - "text", "text", "storage.type", "text", "paren.lparen" - ], - regex: "(:)(\\s*)(function\\*?)(\\s*)(\\()", - next: "function_arguments" - }, { - token: "keyword", - regex: "from(?=\\s*('|\"))" - }, { - token: "keyword", - regex: "(?:" + kwBeforeRe + ")\\b", - next: "start" - }, { - token: "support.constant", - regex: /that\b/ - }, { - token: ["storage.type", "punctuation.operator", "support.function.firebug"], - regex: /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/ - }, { - token: keywordMapper, - regex: identifierRe - }, { - token: "punctuation.operator", - regex: /[.](?![.])/, - next: "property" - }, { - token: "storage.type", - regex: /=>/, - next: "start" - }, { - token: "keyword.operator", - regex: /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, - next: "start" - }, { - token: "punctuation.operator", - regex: /[?:,;.]/, - next: "start" - }, { - token: "paren.lparen", - regex: /[\[({]/, - next: "start" - }, { - token: "paren.rparen", - regex: /[\])}]/ - }, { - token: "comment", - regex: /^#!.*$/ - } - ], - property: [{ - token: "text", - regex: "\\s+" - }, { - token: [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(?:(\\s+)(\\w+))?(\\s*)(\\()", - next: "function_arguments" - }, { - token: "punctuation.operator", - regex: /[.](?![.])/ - }, { - token: "support.function", - regex: /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|lter|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward|rEach)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ - }, { - token: "support.function.dom", - regex: /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ - }, { - token: "support.constant", - regex: /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ - }, { - token: "identifier", - regex: identifierRe - }, { - regex: "", - token: "empty", - next: "no_regex" - } - ], - "start": [ - DocCommentHighlightRules.getStartRule("doc-start"), - comments("start"), - { - token: "string.regexp", - regex: "\\/", - next: "regex" - }, { - token: "text", - regex: "\\s+|^$", - next: "start" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "regex": [ - { - token: "regexp.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "string.regexp", - regex: "/[sxngimy]*", - next: "no_regex" - }, { - token: "invalid", - regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ - }, { - token: "constant.language.escape", - regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ - }, { - token: "constant.language.delimiter", - regex: /\|/ - }, { - token: "constant.language.escape", - regex: /\[\^?/, - next: "regex_character_class" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp" - } - ], - "regex_character_class": [ - { - token: "regexp.charclass.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "constant.language.escape", - regex: "]", - next: "regex" - }, { - token: "constant.language.escape", - regex: "-" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp.charachterclass" - } - ], - "default_parameter": [ - { - token: "string", - regex: "'(?=.)", - push: [ - { - token: "string", - regex: "'|$", - next: "pop" - }, { - include: "qstring" - } - ] - }, { - token: "string", - regex: '"(?=.)', - push: [ - { - token: "string", - regex: '"|$', - next: "pop" - }, { - include: "qqstring" - } - ] - }, { - token: "constant.language", - regex: "null|Infinity|NaN|undefined" - }, { - token: "constant.numeric", - regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ - }, { - token: "constant.numeric", - regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ - }, { - token: "punctuation.operator", - regex: ",", - next: "function_arguments" - }, { - token: "text", - regex: "\\s+" - }, { - token: "punctuation.operator", - regex: "$" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "function_arguments": [ - comments("function_arguments"), - { - token: "variable.parameter", - regex: identifierRe - }, { - token: "punctuation.operator", - regex: "," - }, { - token: "text", - regex: "\\s+" - }, { - token: "punctuation.operator", - regex: "$" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "qqstring": [ - { - token: "constant.language.escape", - regex: escapedRe - }, { - token: "string", - regex: "\\\\$", - consumeLineEnd: true - }, { - token: "string", - regex: '"|$', - next: "no_regex" - }, { - defaultToken: "string" - } - ], - "qstring": [ - { - token: "constant.language.escape", - regex: escapedRe - }, { - token: "string", - regex: "\\\\$", - consumeLineEnd: true - }, { - token: "string", - regex: "'|$", - next: "no_regex" - }, { - defaultToken: "string" - } - ] - }; - if (!options || !options.noES6) { - this.$rules.no_regex.unshift({ - regex: "[{}]", onMatch: function (val, state, stack) { - this.next = val == "{" ? this.nextState : ""; - if (val == "{" && stack.length) { - stack.unshift("start", state); - } - else if (val == "}" && stack.length) { - stack.shift(); - this.next = stack.shift(); - if (this.next.indexOf("string") != -1 || this.next.indexOf("jsx") != -1) - return "paren.quasi.end"; - } - return val == "{" ? "paren.lparen" : "paren.rparen"; - }, - nextState: "start" - }, { - token: "string.quasi.start", - regex: /`/, - push: [{ - token: "constant.language.escape", - regex: escapedRe - }, { - token: "paren.quasi.start", - regex: /\${/, - push: "start" - }, { - token: "string.quasi.end", - regex: /`/, - next: "pop" - }, { - defaultToken: "string.quasi" - }] - }, { - token: ["variable.parameter", "text"], - regex: "(" + identifierRe + ")(\\s*)(?=\\=>)" - }, { - token: "paren.lparen", - regex: "(\\()(?=.+\\s*=>)", - next: "function_arguments" - }, { - token: "variable.language", - regex: "(?:(?:(?:Weak)?(?:Set|Map))|Promise)\\b" - }); - this.$rules["function_arguments"].unshift({ - token: "keyword.operator", - regex: "=", - next: "default_parameter" - }, { - token: "keyword.operator", - regex: "\\.{3}" - }); - this.$rules["property"].unshift({ - token: "support.function", - regex: "(findIndex|repeat|startsWith|endsWith|includes|isSafeInteger|trunc|cbrt|log2|log10|sign|then|catch|" - + "finally|resolve|reject|race|any|all|allSettled|keys|entries|isInteger)\\b(?=\\()" - }, { - token: "constant.language", - regex: "(?:MAX_SAFE_INTEGER|MIN_SAFE_INTEGER|EPSILON)\\b" - }); - if (!options || options.jsx != false) - JSX.call(this); - } - this.embedRules(DocCommentHighlightRules, "doc-", [DocCommentHighlightRules.getEndRule("no_regex")]); - this.normalizeRules(); -}; -oop.inherits(JavaScriptHighlightRules, TextHighlightRules); -function JSX() { - var tagRegex = identifierRe.replace("\\d", "\\d\\-"); - var jsxTag = { - onMatch: function (val, state, stack) { - var offset = val.charAt(1) == "/" ? 2 : 1; - if (offset == 1) { - if (state != this.nextState) - stack.unshift(this.next, this.nextState, 0); - else - stack.unshift(this.next); - stack[2]++; - } - else if (offset == 2) { - if (state == this.nextState) { - stack[1]--; - if (!stack[1] || stack[1] < 0) { - stack.shift(); - stack.shift(); - } - } - } - return [{ - type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", - value: val.slice(0, offset) - }, { - type: "meta.tag.tag-name.xml", - value: val.substr(offset) - }]; - }, - regex: "", - onMatch: function (value, currentState, stack) { - if (currentState == stack[0]) - stack.shift(); - if (value.length == 2) { - if (stack[0] == this.nextState) - stack[1]--; - if (!stack[1] || stack[1] < 0) { - stack.splice(0, 2); - } - } - this.next = stack[0] || "start"; - return [{ type: this.token, value: value }]; - }, - nextState: "jsx" - }, - jsxJsRule, - comments("jsxAttributes"), - { - token: "entity.other.attribute-name.xml", - regex: tagRegex - }, { - token: "keyword.operator.attribute-equals.xml", - regex: "=" - }, { - token: "text.tag-whitespace.xml", - regex: "\\s+" - }, { - token: "string.attribute-value.xml", - regex: "'", - stateName: "jsx_attr_q", - push: [ - { token: "string.attribute-value.xml", regex: "'", next: "pop" }, - { include: "reference" }, - { defaultToken: "string.attribute-value.xml" } - ] - }, { - token: "string.attribute-value.xml", - regex: '"', - stateName: "jsx_attr_qq", - push: [ - { token: "string.attribute-value.xml", regex: '"', next: "pop" }, - { include: "reference" }, - { defaultToken: "string.attribute-value.xml" } - ] - }, - jsxTag - ]; - this.$rules.reference = [{ - token: "constant.language.escape.reference.xml", - regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }]; -} -function comments(next) { - return [ - { - token: "comment", - regex: /\/\*/, - next: [ - DocCommentHighlightRules.getTagRule(), - { token: "comment", regex: "\\*\\/", next: next || "pop" }, - { defaultToken: "comment", caseInsensitive: true } - ] - }, { - token: "comment", - regex: "\\/\\/", - next: [ - DocCommentHighlightRules.getTagRule(), - { token: "comment", regex: "$|^", next: next || "pop" }, - { defaultToken: "comment", caseInsensitive: true } - ] - } - ]; -} -exports.JavaScriptHighlightRules = JavaScriptHighlightRules; - -}); - -ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; -var Range = require("../range").Range; -var MatchingBraceOutdent = function () { }; -(function () { - this.checkOutdent = function (line, input) { - if (!/^\s+$/.test(line)) - return false; - return /^\s*\}/.test(input); - }; - this.autoOutdent = function (doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - if (!match) - return 0; - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({ row: row, column: column }); - if (!openBracePos || openBracePos.row == row) - return 0; - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column - 1), indent); - }; - this.$getIndent = function (line) { - return line.match(/^\s*/)[0]; - }; -}).call(MatchingBraceOutdent.prototype); -exports.MatchingBraceOutdent = MatchingBraceOutdent; - -}); - -ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; -var FoldMode = exports.FoldMode = function (commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); - this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); - } -}; -oop.inherits(FoldMode, BaseFoldMode); -(function () { - this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; - this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; - this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; - this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function (session, foldStyle, row) { - var line = session.getLine(row); - if (this.singleLineBlockCommentRe.test(line)) { - if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) - return ""; - } - var fw = this._getFoldWidgetBase(session, foldStyle, row); - if (!fw && this.startRegionRe.test(line)) - return "start"; // lineCommentRegionStart - return fw; - }; - this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - if (this.startRegionRe.test(line)) - return this.getCommentRegionBlock(session, line, row); - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } - else if (foldStyle != "all") - range = null; - } - return range; - } - if (foldStyle === "markbegin") - return; - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - return session.getCommentFoldRange(row, i, -1); - } - }; - this.getSectionRange = function (session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } - else if (subRange.isMultiLine()) { - row = subRange.end.row; - } - else if (startIndent == indent) { - break; - } - } - endRow = row; - } - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - this.getCommentRegionBlock = function (session, line, row) { - var startColumn = line.search(/\s*$/); - var maxRow = session.getLength(); - var startRow = row; - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; - var depth = 1; - while (++row < maxRow) { - line = session.getLine(row); - var m = re.exec(line); - if (!m) - continue; - if (m[1]) - depth--; - else - depth++; - if (!depth) - break; - } - var endRow = row; - if (endRow > startRow) { - return new Range(startRow, startColumn, endRow, line.length); - } - }; -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var WorkerClient = require("../worker/worker_client").WorkerClient; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; -var Mode = function () { - this.HighlightRules = JavaScriptHighlightRules; - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CstyleBehaviour(); - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); -(function () { - this.lineCommentStart = "//"; - this.blockComment = { start: "/*", end: "*/" }; - this.$quotes = { '"': '"', "'": "'", "`": "`" }; - this.$pairQuotesAfter = { - "`": /\w/ - }; - this.getNextLineIndent = function (state, line, tab) { - var indent = this.$getIndent(line); - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); - var tokens = tokenizedLine.tokens; - var endState = tokenizedLine.state; - if (tokens.length && tokens[tokens.length - 1].type == "comment") { - return indent; - } - if (state == "start" || state == "no_regex") { - var match = line.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/); - if (match) { - indent += tab; - } - } - else if (state == "doc-start") { - if (endState == "start" || endState == "no_regex") { - return ""; - } - var match = line.match(/^\s*(\/?)\*/); - if (match) { - if (match[1]) { - indent += " "; - } - indent += "* "; - } - } - return indent; - }; - this.checkOutdent = function (state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - this.autoOutdent = function (state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - this.createWorker = function (session) { - var worker = new WorkerClient(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker"); - worker.attachToDocument(session.getDocument()); - worker.on("annotate", function (results) { - session.setAnnotations(results.data); - }); - worker.on("terminate", function () { - session.clearAnnotations(); - }); - return worker; - }; - this.$id = "ace/mode/javascript"; - this.snippetFileId = "ace/snippets/javascript"; -}).call(Mode.prototype); -exports.Mode = Mode; - -}); (function() { - ace.require(["ace/mode/javascript"], function(m) { - if ( true && module) { - module.exports = m; - } - }); - })(); - - -/***/ }), - -/***/ 252: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -/* module decorator */ module = __webpack_require__.nmd(module); -ace.define("ace/mode/json_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var JsonHighlightRules = function () { - this.$rules = { - "start": [ - { - token: "variable", - regex: '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]\\s*(?=:)' - }, { - token: "string", - regex: '"', - next: "string" - }, { - token: "constant.numeric", - regex: "0[xX][0-9a-fA-F]+\\b" - }, { - token: "constant.numeric", - regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" - }, { - token: "constant.language.boolean", - regex: "(?:true|false)\\b" - }, { - token: "text", - regex: "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" - }, { - token: "comment", - regex: "\\/\\/.*$" - }, { - token: "comment.start", - regex: "\\/\\*", - next: "comment" - }, { - token: "paren.lparen", - regex: "[[({]" - }, { - token: "paren.rparen", - regex: "[\\])}]" - }, { - token: "punctuation.operator", - regex: /[,]/ - }, { - token: "text", - regex: "\\s+" - } - ], - "string": [ - { - token: "constant.language.escape", - regex: /\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|["\\\/bfnrt])/ - }, { - token: "string", - regex: '"|$', - next: "start" - }, { - defaultToken: "string" - } - ], - "comment": [ - { - token: "comment.end", - regex: "\\*\\/", - next: "start" - }, { - defaultToken: "comment" - } - ] - }; -}; -oop.inherits(JsonHighlightRules, TextHighlightRules); -exports.JsonHighlightRules = JsonHighlightRules; - -}); - -ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; -var Range = require("../range").Range; -var MatchingBraceOutdent = function () { }; -(function () { - this.checkOutdent = function (line, input) { - if (!/^\s+$/.test(line)) - return false; - return /^\s*\}/.test(input); - }; - this.autoOutdent = function (doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - if (!match) - return 0; - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({ row: row, column: column }); - if (!openBracePos || openBracePos.row == row) - return 0; - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column - 1), indent); - }; - this.$getIndent = function (line) { - return line.match(/^\s*/)[0]; - }; -}).call(MatchingBraceOutdent.prototype); -exports.MatchingBraceOutdent = MatchingBraceOutdent; - -}); - -ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; -var FoldMode = exports.FoldMode = function (commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); - this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); - } -}; -oop.inherits(FoldMode, BaseFoldMode); -(function () { - this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; - this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; - this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; - this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function (session, foldStyle, row) { - var line = session.getLine(row); - if (this.singleLineBlockCommentRe.test(line)) { - if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) - return ""; - } - var fw = this._getFoldWidgetBase(session, foldStyle, row); - if (!fw && this.startRegionRe.test(line)) - return "start"; // lineCommentRegionStart - return fw; - }; - this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - if (this.startRegionRe.test(line)) - return this.getCommentRegionBlock(session, line, row); - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } - else if (foldStyle != "all") - range = null; - } - return range; - } - if (foldStyle === "markbegin") - return; - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - return session.getCommentFoldRange(row, i, -1); - } - }; - this.getSectionRange = function (session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } - else if (subRange.isMultiLine()) { - row = subRange.end.row; - } - else if (startIndent == indent) { - break; - } - } - endRow = row; - } - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - this.getCommentRegionBlock = function (session, line, row) { - var startColumn = line.search(/\s*$/); - var maxRow = session.getLength(); - var startRow = row; - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; - var depth = 1; - while (++row < maxRow) { - line = session.getLine(row); - var m = re.exec(line); - if (!m) - continue; - if (m[1]) - depth--; - else - depth++; - if (!depth) - break; - } - var endRow = row; - if (endRow > startRow) { - return new Range(startRow, startColumn, endRow, line.length); - } - }; -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/json",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/json_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/folding/cstyle","ace/worker/worker_client"], function(require, exports, module){"use strict"; -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var HighlightRules = require("./json_highlight_rules").JsonHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; -var WorkerClient = require("../worker/worker_client").WorkerClient; -var Mode = function () { - this.HighlightRules = HighlightRules; - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = this.$defaultBehaviour; - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); -(function () { - this.lineCommentStart = "//"; - this.blockComment = { start: "/*", end: "*/" }; - this.getNextLineIndent = function (state, line, tab) { - var indent = this.$getIndent(line); - if (state == "start") { - var match = line.match(/^.*[\{\(\[]\s*$/); - if (match) { - indent += tab; - } - } - return indent; - }; - this.checkOutdent = function (state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - this.autoOutdent = function (state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - this.createWorker = function (session) { - var worker = new WorkerClient(["ace"], "ace/mode/json_worker", "JsonWorker"); - worker.attachToDocument(session.getDocument()); - worker.on("annotate", function (e) { - session.setAnnotations(e.data); - }); - worker.on("terminate", function () { - session.clearAnnotations(); - }); - return worker; - }; - this.$id = "ace/mode/json"; -}).call(Mode.prototype); -exports.Mode = Mode; - -}); (function() { - ace.require(["ace/mode/json"], function(m) { - if ( true && module) { - module.exports = m; - } - }); - })(); - - -/***/ }), - -/***/ 711: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -/* module decorator */ module = __webpack_require__.nmd(module); -ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var DocCommentHighlightRules = function () { - this.$rules = { - "start": [ - { - token: "comment.doc.tag", - regex: "@\\w+(?=\\s|$)" - }, DocCommentHighlightRules.getTagRule(), { - defaultToken: "comment.doc", - caseInsensitive: true - } - ] - }; -}; -oop.inherits(DocCommentHighlightRules, TextHighlightRules); -DocCommentHighlightRules.getTagRule = function (start) { - return { - token: "comment.doc.tag.storage.type", - regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b" - }; -}; -DocCommentHighlightRules.getStartRule = function (start) { - return { - token: "comment.doc", - regex: "\\/\\*(?=\\*)", - next: start - }; -}; -DocCommentHighlightRules.getEndRule = function (start) { - return { - token: "comment.doc", - regex: "\\*\\/", - next: start - }; -}; -exports.DocCommentHighlightRules = DocCommentHighlightRules; - -}); - -ace.define("ace/mode/jsx_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module){var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var JsxHighlightRules = function () { - var keywords = lang.arrayToMap(("break|do|instanceof|typeof|case|else|new|var|catch|finally|return|void|continue|for|switch|default|while|function|this|" + - "if|throw|" + - "delete|in|try|" + - "class|extends|super|import|from|into|implements|interface|static|mixin|override|abstract|final|" + - "number|int|string|boolean|variant|" + - "log|assert").split("|")); - var buildinConstants = lang.arrayToMap(("null|true|false|NaN|Infinity|__FILE__|__LINE__|undefined").split("|")); - var reserved = lang.arrayToMap(("debugger|with|" + - "const|export|" + - "let|private|public|yield|protected|" + - "extern|native|as|operator|__fake__|__readonly__").split("|")); - var identifierRe = "[a-zA-Z_][a-zA-Z0-9_]*\\b"; - this.$rules = { - "start": [ - { - token: "comment", - regex: "\\/\\/.*$" - }, - DocCommentHighlightRules.getStartRule("doc-start"), - { - token: "comment", - regex: "\\/\\*", - next: "comment" - }, { - token: "string.regexp", - regex: "[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/]\\w*\\s*(?=[).,;]|$)" - }, { - token: "string", - regex: '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' - }, { - token: "string", - regex: "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" - }, { - token: "constant.numeric", - regex: "0[xX][0-9a-fA-F]+\\b" - }, { - token: "constant.numeric", - regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" - }, { - token: "constant.language.boolean", - regex: "(?:true|false)\\b" - }, { - token: [ - "storage.type", - "text", - "entity.name.function" - ], - regex: "(function)(\\s+)(" + identifierRe + ")" - }, { - token: function (value) { - if (value == "this") - return "variable.language"; - else if (value == "function") - return "storage.type"; - else if (keywords.hasOwnProperty(value) || reserved.hasOwnProperty(value)) - return "keyword"; - else if (buildinConstants.hasOwnProperty(value)) - return "constant.language"; - else if (/^_?[A-Z][a-zA-Z0-9_]*$/.test(value)) - return "language.support.class"; - else - return "identifier"; - }, - regex: identifierRe - }, { - token: "keyword.operator", - regex: "!|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|==|=|!=|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)" - }, { - token: "punctuation.operator", - regex: "\\?|\\:|\\,|\\;|\\." - }, { - token: "paren.lparen", - regex: "[[({<]" - }, { - token: "paren.rparen", - regex: "[\\])}>]" - }, { - token: "text", - regex: "\\s+" - } - ], - "comment": [ - { - token: "comment", - regex: "\\*\\/", - next: "start" - }, { - defaultToken: "comment" - } - ] - }; - this.embedRules(DocCommentHighlightRules, "doc-", [DocCommentHighlightRules.getEndRule("start")]); -}; -oop.inherits(JsxHighlightRules, TextHighlightRules); -exports.JsxHighlightRules = JsxHighlightRules; - -}); - -ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; -var Range = require("../range").Range; -var MatchingBraceOutdent = function () { }; -(function () { - this.checkOutdent = function (line, input) { - if (!/^\s+$/.test(line)) - return false; - return /^\s*\}/.test(input); - }; - this.autoOutdent = function (doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - if (!match) - return 0; - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({ row: row, column: column }); - if (!openBracePos || openBracePos.row == row) - return 0; - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column - 1), indent); - }; - this.$getIndent = function (line) { - return line.match(/^\s*/)[0]; - }; -}).call(MatchingBraceOutdent.prototype); -exports.MatchingBraceOutdent = MatchingBraceOutdent; - -}); - -ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; -var FoldMode = exports.FoldMode = function (commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); - this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); - } -}; -oop.inherits(FoldMode, BaseFoldMode); -(function () { - this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; - this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; - this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; - this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function (session, foldStyle, row) { - var line = session.getLine(row); - if (this.singleLineBlockCommentRe.test(line)) { - if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) - return ""; - } - var fw = this._getFoldWidgetBase(session, foldStyle, row); - if (!fw && this.startRegionRe.test(line)) - return "start"; // lineCommentRegionStart - return fw; - }; - this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - if (this.startRegionRe.test(line)) - return this.getCommentRegionBlock(session, line, row); - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } - else if (foldStyle != "all") - range = null; - } - return range; - } - if (foldStyle === "markbegin") - return; - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - return session.getCommentFoldRange(row, i, -1); - } - }; - this.getSectionRange = function (session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } - else if (subRange.isMultiLine()) { - row = subRange.end.row; - } - else if (startIndent == indent) { - break; - } - } - endRow = row; - } - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - this.getCommentRegionBlock = function (session, line, row) { - var startColumn = line.search(/\s*$/); - var maxRow = session.getLength(); - var startRow = row; - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; - var depth = 1; - while (++row < maxRow) { - line = session.getLine(row); - var m = re.exec(line); - if (!m) - continue; - if (m[1]) - depth--; - else - depth++; - if (!depth) - break; - } - var endRow = row; - if (endRow > startRow) { - return new Range(startRow, startColumn, endRow, line.length); - } - }; -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/jsx",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/jsx_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var JsxHighlightRules = require("./jsx_highlight_rules").JsxHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; -function Mode() { - this.HighlightRules = JsxHighlightRules; - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = this.$defaultBehaviour; - this.foldingRules = new CStyleFoldMode(); -} -oop.inherits(Mode, TextMode); -(function () { - this.lineCommentStart = "//"; - this.blockComment = { start: "/*", end: "*/" }; - this.getNextLineIndent = function (state, line, tab) { - var indent = this.$getIndent(line); - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); - var tokens = tokenizedLine.tokens; - if (tokens.length && tokens[tokens.length - 1].type == "comment") { - return indent; - } - if (state == "start") { - var match = line.match(/^.*[\{\(\[]\s*$/); - if (match) { - indent += tab; - } - } - return indent; - }; - this.checkOutdent = function (state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - this.autoOutdent = function (state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - this.$id = "ace/mode/jsx"; -}).call(Mode.prototype); -exports.Mode = Mode; - -}); (function() { - ace.require(["ace/mode/jsx"], function(m) { - if ( true && module) { - module.exports = m; - } - }); - })(); - - -/***/ }), - -/***/ 7: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -/* module decorator */ module = __webpack_require__.nmd(module); -ace.define("ace/mode/python_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){/* - * TODO: python delimiters - */ -"use strict"; -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var PythonHighlightRules = function () { - var keywords = ("and|as|assert|break|class|continue|def|del|elif|else|except|exec|" + - "finally|for|from|global|if|import|in|is|lambda|not|or|pass|print|" + - "raise|return|try|while|with|yield|async|await|nonlocal"); - var builtinConstants = ("True|False|None|NotImplemented|Ellipsis|__debug__"); - var builtinFunctions = ("abs|divmod|input|open|staticmethod|all|enumerate|int|ord|str|any|" + - "eval|isinstance|pow|sum|basestring|execfile|issubclass|print|super|" + - "binfile|bin|iter|property|tuple|bool|filter|len|range|type|bytearray|" + - "float|list|raw_input|unichr|callable|format|locals|reduce|unicode|" + - "chr|frozenset|long|reload|vars|classmethod|getattr|map|repr|xrange|" + - "cmp|globals|max|reversed|zip|compile|hasattr|memoryview|round|" + - "__import__|complex|hash|min|apply|delattr|help|next|setattr|set|" + - "buffer|dict|hex|object|slice|coerce|dir|id|oct|sorted|intern|" + - "ascii|breakpoint|bytes"); - var keywordMapper = this.createKeywordMapper({ - "invalid.deprecated": "debugger", - "support.function": builtinFunctions, - "variable.language": "self|cls", - "constant.language": builtinConstants, - "keyword": keywords - }, "identifier"); - var strPre = "[uU]?"; - var strRawPre = "[rR]"; - var strFormatPre = "[fF]"; - var strRawFormatPre = "(?:[rR][fF]|[fF][rR])"; - var decimalInteger = "(?:(?:[1-9]\\d*)|(?:0))"; - var octInteger = "(?:0[oO]?[0-7]+)"; - var hexInteger = "(?:0[xX][\\dA-Fa-f]+)"; - var binInteger = "(?:0[bB][01]+)"; - var integer = "(?:" + decimalInteger + "|" + octInteger + "|" + hexInteger + "|" + binInteger + ")"; - var exponent = "(?:[eE][+-]?\\d+)"; - var fraction = "(?:\\.\\d+)"; - var intPart = "(?:\\d+)"; - var pointFloat = "(?:(?:" + intPart + "?" + fraction + ")|(?:" + intPart + "\\.))"; - var exponentFloat = "(?:(?:" + pointFloat + "|" + intPart + ")" + exponent + ")"; - var floatNumber = "(?:" + exponentFloat + "|" + pointFloat + ")"; - var stringEscape = "\\\\(x[0-9A-Fa-f]{2}|[0-7]{3}|[\\\\abfnrtv'\"]|U[0-9A-Fa-f]{8}|u[0-9A-Fa-f]{4})"; - this.$rules = { - "start": [{ - token: "comment", - regex: "#.*$" - }, { - token: "string", - regex: strPre + '"{3}', - next: "qqstring3" - }, { - token: "string", - regex: strPre + '"(?=.)', - next: "qqstring" - }, { - token: "string", - regex: strPre + "'{3}", - next: "qstring3" - }, { - token: "string", - regex: strPre + "'(?=.)", - next: "qstring" - }, { - token: "string", - regex: strRawPre + '"{3}', - next: "rawqqstring3" - }, { - token: "string", - regex: strRawPre + '"(?=.)', - next: "rawqqstring" - }, { - token: "string", - regex: strRawPre + "'{3}", - next: "rawqstring3" - }, { - token: "string", - regex: strRawPre + "'(?=.)", - next: "rawqstring" - }, { - token: "string", - regex: strFormatPre + '"{3}', - next: "fqqstring3" - }, { - token: "string", - regex: strFormatPre + '"(?=.)', - next: "fqqstring" - }, { - token: "string", - regex: strFormatPre + "'{3}", - next: "fqstring3" - }, { - token: "string", - regex: strFormatPre + "'(?=.)", - next: "fqstring" - }, { - token: "string", - regex: strRawFormatPre + '"{3}', - next: "rfqqstring3" - }, { - token: "string", - regex: strRawFormatPre + '"(?=.)', - next: "rfqqstring" - }, { - token: "string", - regex: strRawFormatPre + "'{3}", - next: "rfqstring3" - }, { - token: "string", - regex: strRawFormatPre + "'(?=.)", - next: "rfqstring" - }, { - token: "keyword.operator", - regex: "\\+|\\-|\\*|\\*\\*|\\/|\\/\\/|%|@|<<|>>|&|\\||\\^|~|<|>|<=|=>|==|!=|<>|=" - }, { - token: "punctuation", - regex: ",|:|;|\\->|\\+=|\\-=|\\*=|\\/=|\\/\\/=|%=|@=|&=|\\|=|^=|>>=|<<=|\\*\\*=" - }, { - token: "paren.lparen", - regex: "[\\[\\(\\{]" - }, { - token: "paren.rparen", - regex: "[\\]\\)\\}]" - }, { - token: ["keyword", "text", "entity.name.function"], - regex: "(def|class)(\\s+)([\\u00BF-\\u1FFF\\u2C00-\\uD7FF\\w]+)" - }, { - token: "text", - regex: "\\s+" - }, { - include: "constants" - }], - "qqstring3": [{ - token: "constant.language.escape", - regex: stringEscape - }, { - token: "string", - regex: '"{3}', - next: "start" - }, { - defaultToken: "string" - }], - "qstring3": [{ - token: "constant.language.escape", - regex: stringEscape - }, { - token: "string", - regex: "'{3}", - next: "start" - }, { - defaultToken: "string" - }], - "qqstring": [{ - token: "constant.language.escape", - regex: stringEscape - }, { - token: "string", - regex: "\\\\$", - next: "qqstring" - }, { - token: "string", - regex: '"|$', - next: "start" - }, { - defaultToken: "string" - }], - "qstring": [{ - token: "constant.language.escape", - regex: stringEscape - }, { - token: "string", - regex: "\\\\$", - next: "qstring" - }, { - token: "string", - regex: "'|$", - next: "start" - }, { - defaultToken: "string" - }], - "rawqqstring3": [{ - token: "string", - regex: '"{3}', - next: "start" - }, { - defaultToken: "string" - }], - "rawqstring3": [{ - token: "string", - regex: "'{3}", - next: "start" - }, { - defaultToken: "string" - }], - "rawqqstring": [{ - token: "string", - regex: "\\\\$", - next: "rawqqstring" - }, { - token: "string", - regex: '"|$', - next: "start" - }, { - defaultToken: "string" - }], - "rawqstring": [{ - token: "string", - regex: "\\\\$", - next: "rawqstring" - }, { - token: "string", - regex: "'|$", - next: "start" - }, { - defaultToken: "string" - }], - "fqqstring3": [{ - token: "constant.language.escape", - regex: stringEscape - }, { - token: "string", - regex: '"{3}', - next: "start" - }, { - token: "paren.lparen", - regex: "{", - push: "fqstringParRules" - }, { - defaultToken: "string" - }], - "fqstring3": [{ - token: "constant.language.escape", - regex: stringEscape - }, { - token: "string", - regex: "'{3}", - next: "start" - }, { - token: "paren.lparen", - regex: "{", - push: "fqstringParRules" - }, { - defaultToken: "string" - }], - "fqqstring": [{ - token: "constant.language.escape", - regex: stringEscape - }, { - token: "string", - regex: "\\\\$", - next: "fqqstring" - }, { - token: "string", - regex: '"|$', - next: "start" - }, { - token: "paren.lparen", - regex: "{", - push: "fqstringParRules" - }, { - defaultToken: "string" - }], - "fqstring": [{ - token: "constant.language.escape", - regex: stringEscape - }, { - token: "string", - regex: "'|$", - next: "start" - }, { - token: "paren.lparen", - regex: "{", - push: "fqstringParRules" - }, { - defaultToken: "string" - }], - "rfqqstring3": [{ - token: "string", - regex: '"{3}', - next: "start" - }, { - token: "paren.lparen", - regex: "{", - push: "fqstringParRules" - }, { - defaultToken: "string" - }], - "rfqstring3": [{ - token: "string", - regex: "'{3}", - next: "start" - }, { - token: "paren.lparen", - regex: "{", - push: "fqstringParRules" - }, { - defaultToken: "string" - }], - "rfqqstring": [{ - token: "string", - regex: "\\\\$", - next: "rfqqstring" - }, { - token: "string", - regex: '"|$', - next: "start" - }, { - token: "paren.lparen", - regex: "{", - push: "fqstringParRules" - }, { - defaultToken: "string" - }], - "rfqstring": [{ - token: "string", - regex: "'|$", - next: "start" - }, { - token: "paren.lparen", - regex: "{", - push: "fqstringParRules" - }, { - defaultToken: "string" - }], - "fqstringParRules": [{ - token: "paren.lparen", - regex: "[\\[\\(]" - }, { - token: "paren.rparen", - regex: "[\\]\\)]" - }, { - token: "string", - regex: "\\s+" - }, { - token: "string", - regex: "'[^']*'" - }, { - token: "string", - regex: '"[^"]*"' - }, { - token: "function.support", - regex: "(!s|!r|!a)" - }, { - include: "constants" - }, { - token: 'paren.rparen', - regex: "}", - next: 'pop' - }, { - token: 'paren.lparen', - regex: "{", - push: "fqstringParRules" - }], - "constants": [{ - token: "constant.numeric", - regex: "(?:" + floatNumber + "|\\d+)[jJ]\\b" - }, { - token: "constant.numeric", - regex: floatNumber - }, { - token: "constant.numeric", - regex: integer + "[lL]\\b" - }, { - token: "constant.numeric", - regex: integer + "\\b" - }, { - token: ["punctuation", "function.support"], - regex: "(\\.)([a-zA-Z_]+)\\b" - }, { - token: keywordMapper, - regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }] - }; - this.normalizeRules(); -}; -oop.inherits(PythonHighlightRules, TextHighlightRules); -exports.PythonHighlightRules = PythonHighlightRules; - -}); - -ace.define("ace/mode/folding/pythonic",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; -var oop = require("../../lib/oop"); -var BaseFoldMode = require("./fold_mode").FoldMode; -var FoldMode = exports.FoldMode = function (markers) { - this.foldingStartMarker = new RegExp("([\\[{])(?:\\s*)$|(" + markers + ")(?:\\s*)(?:#.*)?$"); -}; -oop.inherits(FoldMode, BaseFoldMode); -(function () { - this.getFoldWidgetRange = function (session, foldStyle, row) { - var line = session.getLine(row); - var match = line.match(this.foldingStartMarker); - if (match) { - if (match[1]) - return this.openingBracketBlock(session, match[1], row, match.index); - if (match[2]) - return this.indentationBlock(session, row, match.index + match[2].length); - return this.indentationBlock(session, row); - } - }; -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/python",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/python_highlight_rules","ace/mode/folding/pythonic","ace/range"], function(require, exports, module){"use strict"; -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var PythonHighlightRules = require("./python_highlight_rules").PythonHighlightRules; -var PythonFoldMode = require("./folding/pythonic").FoldMode; -var Range = require("../range").Range; -var Mode = function () { - this.HighlightRules = PythonHighlightRules; - this.foldingRules = new PythonFoldMode("\\:"); - this.$behaviour = this.$defaultBehaviour; -}; -oop.inherits(Mode, TextMode); -(function () { - this.lineCommentStart = "#"; - this.$pairQuotesAfter = { - "'": /[ruf]/i, - '"': /[ruf]/i - }; - this.getNextLineIndent = function (state, line, tab) { - var indent = this.$getIndent(line); - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); - var tokens = tokenizedLine.tokens; - if (tokens.length && tokens[tokens.length - 1].type == "comment") { - return indent; - } - if (state == "start") { - var match = line.match(/^.*[\{\(\[:]\s*$/); - if (match) { - indent += tab; - } - } - return indent; - }; - var outdents = { - "pass": 1, - "return": 1, - "raise": 1, - "break": 1, - "continue": 1 - }; - this.checkOutdent = function (state, line, input) { - if (input !== "\r\n" && input !== "\r" && input !== "\n") - return false; - var tokens = this.getTokenizer().getLineTokens(line.trim(), state).tokens; - if (!tokens) - return false; - do { - var last = tokens.pop(); - } while (last && (last.type == "comment" || (last.type == "text" && last.value.match(/^\s+$/)))); - if (!last) - return false; - return (last.type == "keyword" && outdents[last.value]); - }; - this.autoOutdent = function (state, doc, row) { - row += 1; - var indent = this.$getIndent(doc.getLine(row)); - var tab = doc.getTabString(); - if (indent.slice(-tab.length) == tab) - doc.remove(new Range(row, indent.length - tab.length, row, indent.length)); - }; - this.$id = "ace/mode/python"; - this.snippetFileId = "ace/snippets/python"; -}).call(Mode.prototype); -exports.Mode = Mode; - -}); (function() { - ace.require(["ace/mode/python"], function(m) { - if ( true && module) { - module.exports = m; - } - }); - })(); - - -/***/ }), - -/***/ 202: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -/* module decorator */ module = __webpack_require__.nmd(module); -ace.define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var XmlHighlightRules = function (normalize) { - var tagRegex = "[_:a-zA-Z\xc0-\uffff][-_:.a-zA-Z0-9\xc0-\uffff]*"; - this.$rules = { - start: [ - { token: "string.cdata.xml", regex: "<\\!\\[CDATA\\[", next: "cdata" }, - { - token: ["punctuation.instruction.xml", "keyword.instruction.xml"], - regex: "(<\\?)(" + tagRegex + ")", next: "processing_instruction" - }, - { token: "comment.start.xml", regex: "<\\!--", next: "comment" }, - { - token: ["xml-pe.doctype.xml", "xml-pe.doctype.xml"], - regex: "(<\\!)(DOCTYPE)(?=[\\s])", next: "doctype", caseInsensitive: true - }, - { include: "tag" }, - { token: "text.end-tag-open.xml", regex: "", - next: "start" - }], - doctype: [ - { include: "whitespace" }, - { include: "string" }, - { token: "xml-pe.doctype.xml", regex: ">", next: "start" }, - { token: "xml-pe.xml", regex: "[-_a-zA-Z0-9:]+" }, - { token: "punctuation.int-subset", regex: "\\[", push: "int_subset" } - ], - int_subset: [{ - token: "text.xml", - regex: "\\s+" - }, { - token: "punctuation.int-subset.xml", - regex: "]", - next: "pop" - }, { - token: ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"], - regex: "(<\\!)(" + tagRegex + ")", - push: [{ - token: "text", - regex: "\\s+" - }, - { - token: "punctuation.markup-decl.xml", - regex: ">", - next: "pop" - }, - { include: "string" }] - }], - cdata: [ - { token: "string.cdata.xml", regex: "\\]\\]>", next: "start" }, - { token: "text.xml", regex: "\\s+" }, - { token: "text.xml", regex: "(?:[^\\]]|\\](?!\\]>))+" } - ], - comment: [ - { token: "comment.end.xml", regex: "-->", next: "start" }, - { defaultToken: "comment.xml" } - ], - reference: [{ - token: "constant.language.escape.reference.xml", - regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }], - attr_reference: [{ - token: "constant.language.escape.reference.attribute-value.xml", - regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }], - tag: [{ - token: ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"], - regex: "(?:(<)|(", next: "start" } - ] - }], - tag_whitespace: [ - { token: "text.tag-whitespace.xml", regex: "\\s+" } - ], - whitespace: [ - { token: "text.whitespace.xml", regex: "\\s+" } - ], - string: [{ - token: "string.xml", - regex: "'", - push: [ - { token: "string.xml", regex: "'", next: "pop" }, - { defaultToken: "string.xml" } - ] - }, { - token: "string.xml", - regex: '"', - push: [ - { token: "string.xml", regex: '"', next: "pop" }, - { defaultToken: "string.xml" } - ] - }], - attributes: [{ - token: "entity.other.attribute-name.xml", - regex: tagRegex - }, { - token: "keyword.operator.attribute-equals.xml", - regex: "=" - }, { - include: "tag_whitespace" - }, { - include: "attribute_value" - }], - attribute_value: [{ - token: "string.attribute-value.xml", - regex: "'", - push: [ - { token: "string.attribute-value.xml", regex: "'", next: "pop" }, - { include: "attr_reference" }, - { defaultToken: "string.attribute-value.xml" } - ] - }, { - token: "string.attribute-value.xml", - regex: '"', - push: [ - { token: "string.attribute-value.xml", regex: '"', next: "pop" }, - { include: "attr_reference" }, - { defaultToken: "string.attribute-value.xml" } - ] - }] - }; - if (this.constructor === XmlHighlightRules) - this.normalizeRules(); -}; -(function () { - this.embedTagRules = function (HighlightRules, prefix, tag) { - this.$rules.tag.unshift({ - token: ["meta.tag.punctuation.tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], - regex: "(<)(" + tag + "(?=\\s|>|$))", - next: [ - { include: "attributes" }, - { token: "meta.tag.punctuation.tag-close.xml", regex: "/?>", next: prefix + "start" } - ] - }); - this.$rules[tag + "-end"] = [ - { include: "attributes" }, - { token: "meta.tag.punctuation.tag-close.xml", regex: "/?>", next: "start", - onMatch: function (value, currentState, stack) { - stack.splice(0); - return this.token; - } } - ]; - this.embedRules(HighlightRules, prefix, [{ - token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], - regex: "(|$))", - next: tag + "-end" - }, { - token: "string.cdata.xml", - regex: "<\\!\\[CDATA\\[" - }, { - token: "string.cdata.xml", - regex: "\\]\\]>" - }]); - }; -}).call(TextHighlightRules.prototype); -oop.inherits(XmlHighlightRules, TextHighlightRules); -exports.XmlHighlightRules = XmlHighlightRules; - -}); - -ace.define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"], function(require, exports, module){"use strict"; -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; -var lang = require("../../lib/lang"); -function is(token, type) { - return token && token.type.lastIndexOf(type + ".xml") > -1; -} -var XmlBehaviour = function () { - this.add("string_dquotes", "insertion", function (state, action, editor, session, text) { - if (text == '"' || text == "'") { - var quote = text; - var selected = session.doc.getTextRange(editor.getSelectionRange()); - if (selected !== "" && selected !== "'" && selected != '"' && editor.getWrapBehavioursEnabled()) { - return { - text: quote + selected + quote, - selection: false - }; - } - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - if (rightChar == quote && (is(token, "attribute-value") || is(token, "string"))) { - return { - text: "", - selection: [1, 1] - }; - } - if (!token) - token = iterator.stepBackward(); - if (!token) - return; - while (is(token, "tag-whitespace") || is(token, "whitespace")) { - token = iterator.stepBackward(); - } - var rightSpace = !rightChar || rightChar.match(/\s/); - if (is(token, "attribute-equals") && (rightSpace || rightChar == '>') || (is(token, "decl-attribute-equals") && (rightSpace || rightChar == '?'))) { - return { - text: quote + quote, - selection: [1, 1] - }; - } - } - }); - this.add("string_dquotes", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && (selected == '"' || selected == "'")) { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == selected) { - range.end.column++; - return range; - } - } - }); - this.add("autoclosing", "insertion", function (state, action, editor, session, text) { - if (text == '>') { - var position = editor.getSelectionRange().start; - var iterator = new TokenIterator(session, position.row, position.column); - var token = iterator.getCurrentToken() || iterator.stepBackward(); - if (!token || !(is(token, "tag-name") || is(token, "tag-whitespace") || is(token, "attribute-name") || is(token, "attribute-equals") || is(token, "attribute-value"))) - return; - if (is(token, "reference.attribute-value")) - return; - if (is(token, "attribute-value")) { - var tokenEndColumn = iterator.getCurrentTokenColumn() + token.value.length; - if (position.column < tokenEndColumn) - return; - if (position.column == tokenEndColumn) { - var nextToken = iterator.stepForward(); - if (nextToken && is(nextToken, "attribute-value")) - return; - iterator.stepBackward(); - } - } - if (/^\s*>/.test(session.getLine(position.row).slice(position.column))) - return; - while (!is(token, "tag-name")) { - token = iterator.stepBackward(); - if (token.value == "<") { - token = iterator.stepForward(); - break; - } - } - var tokenRow = iterator.getCurrentTokenRow(); - var tokenColumn = iterator.getCurrentTokenColumn(); - if (is(iterator.stepBackward(), "end-tag-open")) - return; - var element = token.value; - if (tokenRow == position.row) - element = element.substring(0, position.column - tokenColumn); - if (this.voidElements.hasOwnProperty(element.toLowerCase())) - return; - return { - text: ">" + "", - selection: [1, 1] - }; - } - }); - this.add("autoindent", "insertion", function (state, action, editor, session, text) { - if (text == "\n") { - var cursor = editor.getCursorPosition(); - var line = session.getLine(cursor.row); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - if (token && token.type.indexOf("tag-close") !== -1) { - if (token.value == "/>") - return; - while (token && token.type.indexOf("tag-name") === -1) { - token = iterator.stepBackward(); - } - if (!token) { - return; - } - var tag = token.value; - var row = iterator.getCurrentTokenRow(); - token = iterator.stepBackward(); - if (!token || token.type.indexOf("end-tag") !== -1) { - return; - } - if (this.voidElements && !this.voidElements[tag]) { - var nextToken = session.getTokenAt(cursor.row, cursor.column + 1); - var line = session.getLine(row); - var nextIndent = this.$getIndent(line); - var indent = nextIndent + session.getTabString(); - if (nextToken && nextToken.value === " -1; -} -(function () { - this.getFoldWidget = function (session, foldStyle, row) { - var tag = this._getFirstTagInLine(session, row); - if (!tag) - return this.getCommentFoldWidget(session, row); - if (tag.closing || (!tag.tagName && tag.selfClosing)) - return foldStyle === "markbeginend" ? "end" : ""; - if (!tag.tagName || tag.selfClosing || this.voidElements.hasOwnProperty(tag.tagName.toLowerCase())) - return ""; - if (this._findEndTagInLine(session, row, tag.tagName, tag.end.column)) - return ""; - return "start"; - }; - this.getCommentFoldWidget = function (session, row) { - if (/comment/.test(session.getState(row)) && /'; - break; - } - } - return tag; - } - else if (is(token, "tag-close")) { - tag.selfClosing = token.value == '/>'; - return tag; - } - tag.start.column += token.value.length; - } - return null; - }; - this._findEndTagInLine = function (session, row, tagName, startColumn) { - var tokens = session.getTokens(row); - var column = 0; - for (var i = 0; i < tokens.length; i++) { - var token = tokens[i]; - column += token.value.length; - if (column < startColumn) - continue; - if (is(token, "end-tag-open")) { - token = tokens[i + 1]; - if (token && token.value == tagName) - return true; - } - } - return false; - }; - this.getFoldWidgetRange = function (session, foldStyle, row) { - var tags = session.getMatchingTags({ row: row, column: 0 }); - if (tags) { - return new Range(tags.openTag.end.row, tags.openTag.end.column, tags.closeTag.start.row, tags.closeTag.start.column); - } - else { - return this.getCommentFoldWidget(session, row) - && session.getCommentFoldRange(row, session.getLine(row).length); - } - }; -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/xml",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/xml_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/xml","ace/worker/worker_client"], function(require, exports, module){"use strict"; -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var TextMode = require("./text").Mode; -var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules; -var XmlBehaviour = require("./behaviour/xml").XmlBehaviour; -var XmlFoldMode = require("./folding/xml").FoldMode; -var WorkerClient = require("../worker/worker_client").WorkerClient; -var Mode = function () { - this.HighlightRules = XmlHighlightRules; - this.$behaviour = new XmlBehaviour(); - this.foldingRules = new XmlFoldMode(); -}; -oop.inherits(Mode, TextMode); -(function () { - this.voidElements = lang.arrayToMap([]); - this.blockComment = { start: "" }; - this.createWorker = function (session) { - var worker = new WorkerClient(["ace"], "ace/mode/xml_worker", "Worker"); - worker.attachToDocument(session.getDocument()); - worker.on("error", function (e) { - session.setAnnotations(e.data); - }); - worker.on("terminate", function () { - session.clearAnnotations(); - }); - return worker; - }; - this.$id = "ace/mode/xml"; -}).call(Mode.prototype); -exports.Mode = Mode; - -}); (function() { - ace.require(["ace/mode/xml"], function(m) { - if ( true && module) { - module.exports = m; - } - }); - })(); - - -/***/ }), - -/***/ 203: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -/* module decorator */ module = __webpack_require__.nmd(module); -ace.define("ace/theme/github-css",["require","exports","module"], function(require, exports, module){module.exports = "/* CSS style content from github's default pygments highlighter template.\n Cursor and selection styles from textmate.css. */\n.ace-github .ace_gutter {\n background: #e8e8e8;\n color: #AAA;\n}\n\n.ace-github {\n background: #fff;\n color: #000;\n}\n\n.ace-github .ace_keyword {\n font-weight: bold;\n}\n\n.ace-github .ace_string {\n color: #D14;\n}\n\n.ace-github .ace_variable.ace_class {\n color: teal;\n}\n\n.ace-github .ace_constant.ace_numeric {\n color: #099;\n}\n\n.ace-github .ace_constant.ace_buildin {\n color: #0086B3;\n}\n\n.ace-github .ace_support.ace_function {\n color: #0086B3;\n}\n\n.ace-github .ace_comment {\n color: #998;\n font-style: italic;\n}\n\n.ace-github .ace_variable.ace_language {\n color: #0086B3;\n}\n\n.ace-github .ace_paren {\n font-weight: bold;\n}\n\n.ace-github .ace_boolean {\n font-weight: bold;\n}\n\n.ace-github .ace_string.ace_regexp {\n color: #009926;\n font-weight: normal;\n}\n\n.ace-github .ace_variable.ace_instance {\n color: teal;\n}\n\n.ace-github .ace_constant.ace_language {\n font-weight: bold;\n}\n\n.ace-github .ace_cursor {\n color: black;\n}\n\n.ace-github.ace_focus .ace_marker-layer .ace_active-line {\n background: rgb(255, 255, 204);\n}\n.ace-github .ace_marker-layer .ace_active-line {\n background: rgb(245, 245, 245);\n}\n\n.ace-github .ace_marker-layer .ace_selection {\n background: rgb(181, 213, 255);\n}\n\n.ace-github.ace_multiselect .ace_selection.ace_start {\n box-shadow: 0 0 3px 0px white;\n}\n/* bold keywords cause cursor issues for some fonts */\n/* this disables bold style for editor and keeps for static highlighter */\n.ace-github.ace_nobold .ace_line > span {\n font-weight: normal !important;\n}\n\n.ace-github .ace_marker-layer .ace_step {\n background: rgb(252, 255, 0);\n}\n\n.ace-github .ace_marker-layer .ace_stack {\n background: rgb(164, 229, 101);\n}\n\n.ace-github .ace_marker-layer .ace_bracket {\n margin: -1px 0 0 -1px;\n border: 1px solid rgb(192, 192, 192);\n}\n\n.ace-github .ace_gutter-active-line {\n background-color : rgba(0, 0, 0, 0.07);\n}\n\n.ace-github .ace_marker-layer .ace_selected-word {\n background: rgb(250, 250, 255);\n border: 1px solid rgb(200, 200, 250);\n}\n\n.ace-github .ace_invisible {\n color: #BFBFBF\n}\n\n.ace-github .ace_print-margin {\n width: 1px;\n background: #e8e8e8;\n}\n\n.ace-github .ace_indent-guide {\n background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==\") right repeat-y;\n}\n\n.ace-github .ace_indent-guide-active {\n background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAAZSURBVHjaYvj///9/hivKyv8BAAAA//8DACLqBhbvk+/eAAAAAElFTkSuQmCC\") right repeat-y;\n}\n"; - -}); - -ace.define("ace/theme/github",["require","exports","module","ace/theme/github-css","ace/lib/dom"], function(require, exports, module){exports.isDark = false; -exports.cssClass = "ace-github"; -exports.cssText = require("./github-css"); -var dom = require("../lib/dom"); -dom.importCssString(exports.cssText, exports.cssClass, false); - -}); (function() { - ace.require(["ace/theme/github"], function(m) { - if ( true && module) { - module.exports = m; - } - }); - })(); - - -/***/ }), - -/***/ 821: -/***/ ((module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ Z: () => (__WEBPACK_DEFAULT_EXPORT__) -/* harmony export */ }); -/* harmony import */ var _css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(537); -/* harmony import */ var _css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(645); -/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); -// Imports - - -var ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); -// Module -___CSS_LOADER_EXPORT___.push([module.id, `.flatpickr-calendar{background:transparent;opacity:0;display:none;text-align:center;visibility:hidden;padding:0;-webkit-animation:none;animation:none;direction:ltr;border:0;font-size:14px;line-height:24px;border-radius:5px;position:absolute;width:307.875px;-webkit-box-sizing:border-box;box-sizing:border-box;-ms-touch-action:manipulation;touch-action:manipulation;background:#fff;-webkit-box-shadow:1px 0 0 #e6e6e6,-1px 0 0 #e6e6e6,0 1px 0 #e6e6e6,0 -1px 0 #e6e6e6,0 3px 13px rgba(0,0,0,0.08);box-shadow:1px 0 0 #e6e6e6,-1px 0 0 #e6e6e6,0 1px 0 #e6e6e6,0 -1px 0 #e6e6e6,0 3px 13px rgba(0,0,0,0.08)}.flatpickr-calendar.open,.flatpickr-calendar.inline{opacity:1;max-height:640px;visibility:visible}.flatpickr-calendar.open{display:inline-block;z-index:99999}.flatpickr-calendar.animate.open{-webkit-animation:fpFadeInDown 300ms cubic-bezier(.23,1,.32,1);animation:fpFadeInDown 300ms cubic-bezier(.23,1,.32,1)}.flatpickr-calendar.inline{display:block;position:relative;top:2px}.flatpickr-calendar.static{position:absolute;top:calc(100% + 2px)}.flatpickr-calendar.static.open{z-index:999;display:block}.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+1) .flatpickr-day.inRange:nth-child(7n+7){-webkit-box-shadow:none !important;box-shadow:none !important}.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+2) .flatpickr-day.inRange:nth-child(7n+1){-webkit-box-shadow:-2px 0 0 #e6e6e6,5px 0 0 #e6e6e6;box-shadow:-2px 0 0 #e6e6e6,5px 0 0 #e6e6e6}.flatpickr-calendar .hasWeeks .dayContainer,.flatpickr-calendar .hasTime .dayContainer{border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.flatpickr-calendar .hasWeeks .dayContainer{border-left:0}.flatpickr-calendar.hasTime .flatpickr-time{height:40px;border-top:1px solid #e6e6e6}.flatpickr-calendar.noCalendar.hasTime .flatpickr-time{height:auto}.flatpickr-calendar:before,.flatpickr-calendar:after{position:absolute;display:block;pointer-events:none;border:solid transparent;content:'';height:0;width:0;left:22px}.flatpickr-calendar.rightMost:before,.flatpickr-calendar.arrowRight:before,.flatpickr-calendar.rightMost:after,.flatpickr-calendar.arrowRight:after{left:auto;right:22px}.flatpickr-calendar.arrowCenter:before,.flatpickr-calendar.arrowCenter:after{left:50%;right:50%}.flatpickr-calendar:before{border-width:5px;margin:0 -5px}.flatpickr-calendar:after{border-width:4px;margin:0 -4px}.flatpickr-calendar.arrowTop:before,.flatpickr-calendar.arrowTop:after{bottom:100%}.flatpickr-calendar.arrowTop:before{border-bottom-color:#e6e6e6}.flatpickr-calendar.arrowTop:after{border-bottom-color:#fff}.flatpickr-calendar.arrowBottom:before,.flatpickr-calendar.arrowBottom:after{top:100%}.flatpickr-calendar.arrowBottom:before{border-top-color:#e6e6e6}.flatpickr-calendar.arrowBottom:after{border-top-color:#fff}.flatpickr-calendar:focus{outline:0}.flatpickr-wrapper{position:relative;display:inline-block}.flatpickr-months{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.flatpickr-months .flatpickr-month{background:transparent;color:rgba(0,0,0,0.9);fill:rgba(0,0,0,0.9);height:34px;line-height:1;text-align:center;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:hidden;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}.flatpickr-months .flatpickr-prev-month,.flatpickr-months .flatpickr-next-month{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;text-decoration:none;cursor:pointer;position:absolute;top:0;height:34px;padding:10px;z-index:3;color:rgba(0,0,0,0.9);fill:rgba(0,0,0,0.9)}.flatpickr-months .flatpickr-prev-month.flatpickr-disabled,.flatpickr-months .flatpickr-next-month.flatpickr-disabled{display:none}.flatpickr-months .flatpickr-prev-month i,.flatpickr-months .flatpickr-next-month i{position:relative}.flatpickr-months .flatpickr-prev-month.flatpickr-prev-month,.flatpickr-months .flatpickr-next-month.flatpickr-prev-month{/* - /*rtl:begin:ignore*/left:0/* - /*rtl:end:ignore*/}/* - /*rtl:begin:ignore*/ -/* - /*rtl:end:ignore*/ -.flatpickr-months .flatpickr-prev-month.flatpickr-next-month,.flatpickr-months .flatpickr-next-month.flatpickr-next-month{/* - /*rtl:begin:ignore*/right:0/* - /*rtl:end:ignore*/}/* - /*rtl:begin:ignore*/ -/* - /*rtl:end:ignore*/ -.flatpickr-months .flatpickr-prev-month:hover,.flatpickr-months .flatpickr-next-month:hover{color:#959ea9}.flatpickr-months .flatpickr-prev-month:hover svg,.flatpickr-months .flatpickr-next-month:hover svg{fill:#f64747}.flatpickr-months .flatpickr-prev-month svg,.flatpickr-months .flatpickr-next-month svg{width:14px;height:14px}.flatpickr-months .flatpickr-prev-month svg path,.flatpickr-months .flatpickr-next-month svg path{-webkit-transition:fill .1s;transition:fill .1s;fill:inherit}.numInputWrapper{position:relative;height:auto}.numInputWrapper input,.numInputWrapper span{display:inline-block}.numInputWrapper input{width:100%}.numInputWrapper input::-ms-clear{display:none}.numInputWrapper input::-webkit-outer-spin-button,.numInputWrapper input::-webkit-inner-spin-button{margin:0;-webkit-appearance:none}.numInputWrapper span{position:absolute;right:0;width:14px;padding:0 4px 0 2px;height:50%;line-height:50%;opacity:0;cursor:pointer;border:1px solid rgba(57,57,57,0.15);-webkit-box-sizing:border-box;box-sizing:border-box}.numInputWrapper span:hover{background:rgba(0,0,0,0.1)}.numInputWrapper span:active{background:rgba(0,0,0,0.2)}.numInputWrapper span:after{display:block;content:"";position:absolute}.numInputWrapper span.arrowUp{top:0;border-bottom:0}.numInputWrapper span.arrowUp:after{border-left:4px solid transparent;border-right:4px solid transparent;border-bottom:4px solid rgba(57,57,57,0.6);top:26%}.numInputWrapper span.arrowDown{top:50%}.numInputWrapper span.arrowDown:after{border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px solid rgba(57,57,57,0.6);top:40%}.numInputWrapper span svg{width:inherit;height:auto}.numInputWrapper span svg path{fill:rgba(0,0,0,0.5)}.numInputWrapper:hover{background:rgba(0,0,0,0.05)}.numInputWrapper:hover span{opacity:1}.flatpickr-current-month{font-size:135%;line-height:inherit;font-weight:300;color:inherit;position:absolute;width:75%;left:12.5%;padding:7.48px 0 0 0;line-height:1;height:34px;display:inline-block;text-align:center;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.flatpickr-current-month span.cur-month{font-family:inherit;font-weight:700;color:inherit;display:inline-block;margin-left:.5ch;padding:0}.flatpickr-current-month span.cur-month:hover{background:rgba(0,0,0,0.05)}.flatpickr-current-month .numInputWrapper{width:6ch;width:7ch\\0;display:inline-block}.flatpickr-current-month .numInputWrapper span.arrowUp:after{border-bottom-color:rgba(0,0,0,0.9)}.flatpickr-current-month .numInputWrapper span.arrowDown:after{border-top-color:rgba(0,0,0,0.9)}.flatpickr-current-month input.cur-year{background:transparent;-webkit-box-sizing:border-box;box-sizing:border-box;color:inherit;cursor:text;padding:0 0 0 .5ch;margin:0;display:inline-block;font-size:inherit;font-family:inherit;font-weight:300;line-height:inherit;height:auto;border:0;border-radius:0;vertical-align:initial;-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.flatpickr-current-month input.cur-year:focus{outline:0}.flatpickr-current-month input.cur-year[disabled],.flatpickr-current-month input.cur-year[disabled]:hover{font-size:100%;color:rgba(0,0,0,0.5);background:transparent;pointer-events:none}.flatpickr-current-month .flatpickr-monthDropdown-months{appearance:menulist;background:transparent;border:none;border-radius:0;box-sizing:border-box;color:inherit;cursor:pointer;font-size:inherit;font-family:inherit;font-weight:300;height:auto;line-height:inherit;margin:-1px 0 0 0;outline:none;padding:0 0 0 .5ch;position:relative;vertical-align:initial;-webkit-box-sizing:border-box;-webkit-appearance:menulist;-moz-appearance:menulist;width:auto}.flatpickr-current-month .flatpickr-monthDropdown-months:focus,.flatpickr-current-month .flatpickr-monthDropdown-months:active{outline:none}.flatpickr-current-month .flatpickr-monthDropdown-months:hover{background:rgba(0,0,0,0.05)}.flatpickr-current-month .flatpickr-monthDropdown-months .flatpickr-monthDropdown-month{background-color:transparent;outline:none;padding:0}.flatpickr-weekdays{background:transparent;text-align:center;overflow:hidden;width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;height:28px}.flatpickr-weekdays .flatpickr-weekdaycontainer{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}span.flatpickr-weekday{cursor:default;font-size:90%;background:transparent;color:rgba(0,0,0,0.54);line-height:1;margin:0;text-align:center;display:block;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;font-weight:bolder}.dayContainer,.flatpickr-weeks{padding:1px 0 0 0}.flatpickr-days{position:relative;overflow:hidden;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:flex-start;width:307.875px}.flatpickr-days:focus{outline:0}.dayContainer{padding:0;outline:0;text-align:left;width:307.875px;min-width:307.875px;max-width:307.875px;-webkit-box-sizing:border-box;box-sizing:border-box;display:inline-block;display:-ms-flexbox;display:-webkit-box;display:-webkit-flex;display:flex;-webkit-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-wrap:wrap;-ms-flex-pack:justify;-webkit-justify-content:space-around;justify-content:space-around;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}.dayContainer + .dayContainer{-webkit-box-shadow:-1px 0 0 #e6e6e6;box-shadow:-1px 0 0 #e6e6e6}.flatpickr-day{background:none;border:1px solid transparent;border-radius:150px;-webkit-box-sizing:border-box;box-sizing:border-box;color:#393939;cursor:pointer;font-weight:400;width:14.2857143%;-webkit-flex-basis:14.2857143%;-ms-flex-preferred-size:14.2857143%;flex-basis:14.2857143%;max-width:39px;height:39px;line-height:39px;margin:0;display:inline-block;position:relative;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;text-align:center}.flatpickr-day.inRange,.flatpickr-day.prevMonthDay.inRange,.flatpickr-day.nextMonthDay.inRange,.flatpickr-day.today.inRange,.flatpickr-day.prevMonthDay.today.inRange,.flatpickr-day.nextMonthDay.today.inRange,.flatpickr-day:hover,.flatpickr-day.prevMonthDay:hover,.flatpickr-day.nextMonthDay:hover,.flatpickr-day:focus,.flatpickr-day.prevMonthDay:focus,.flatpickr-day.nextMonthDay:focus{cursor:pointer;outline:0;background:#e6e6e6;border-color:#e6e6e6}.flatpickr-day.today{border-color:#959ea9}.flatpickr-day.today:hover,.flatpickr-day.today:focus{border-color:#959ea9;background:#959ea9;color:#fff}.flatpickr-day.selected,.flatpickr-day.startRange,.flatpickr-day.endRange,.flatpickr-day.selected.inRange,.flatpickr-day.startRange.inRange,.flatpickr-day.endRange.inRange,.flatpickr-day.selected:focus,.flatpickr-day.startRange:focus,.flatpickr-day.endRange:focus,.flatpickr-day.selected:hover,.flatpickr-day.startRange:hover,.flatpickr-day.endRange:hover,.flatpickr-day.selected.prevMonthDay,.flatpickr-day.startRange.prevMonthDay,.flatpickr-day.endRange.prevMonthDay,.flatpickr-day.selected.nextMonthDay,.flatpickr-day.startRange.nextMonthDay,.flatpickr-day.endRange.nextMonthDay{background:#569ff7;-webkit-box-shadow:none;box-shadow:none;color:#fff;border-color:#569ff7}.flatpickr-day.selected.startRange,.flatpickr-day.startRange.startRange,.flatpickr-day.endRange.startRange{border-radius:50px 0 0 50px}.flatpickr-day.selected.endRange,.flatpickr-day.startRange.endRange,.flatpickr-day.endRange.endRange{border-radius:0 50px 50px 0}.flatpickr-day.selected.startRange + .endRange:not(:nth-child(7n+1)),.flatpickr-day.startRange.startRange + .endRange:not(:nth-child(7n+1)),.flatpickr-day.endRange.startRange + .endRange:not(:nth-child(7n+1)){-webkit-box-shadow:-10px 0 0 #569ff7;box-shadow:-10px 0 0 #569ff7}.flatpickr-day.selected.startRange.endRange,.flatpickr-day.startRange.startRange.endRange,.flatpickr-day.endRange.startRange.endRange{border-radius:50px}.flatpickr-day.inRange{border-radius:0;-webkit-box-shadow:-5px 0 0 #e6e6e6,5px 0 0 #e6e6e6;box-shadow:-5px 0 0 #e6e6e6,5px 0 0 #e6e6e6}.flatpickr-day.flatpickr-disabled,.flatpickr-day.flatpickr-disabled:hover,.flatpickr-day.prevMonthDay,.flatpickr-day.nextMonthDay,.flatpickr-day.notAllowed,.flatpickr-day.notAllowed.prevMonthDay,.flatpickr-day.notAllowed.nextMonthDay{color:rgba(57,57,57,0.3);background:transparent;border-color:transparent;cursor:default}.flatpickr-day.flatpickr-disabled,.flatpickr-day.flatpickr-disabled:hover{cursor:not-allowed;color:rgba(57,57,57,0.1)}.flatpickr-day.week.selected{border-radius:0;-webkit-box-shadow:-5px 0 0 #569ff7,5px 0 0 #569ff7;box-shadow:-5px 0 0 #569ff7,5px 0 0 #569ff7}.flatpickr-day.hidden{visibility:hidden}.rangeMode .flatpickr-day{margin-top:1px}.flatpickr-weekwrapper{float:left}.flatpickr-weekwrapper .flatpickr-weeks{padding:0 12px;-webkit-box-shadow:1px 0 0 #e6e6e6;box-shadow:1px 0 0 #e6e6e6}.flatpickr-weekwrapper .flatpickr-weekday{float:none;width:100%;line-height:28px}.flatpickr-weekwrapper span.flatpickr-day,.flatpickr-weekwrapper span.flatpickr-day:hover{display:block;width:100%;max-width:none;color:rgba(57,57,57,0.3);background:transparent;cursor:default;border:none}.flatpickr-innerContainer{display:block;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden}.flatpickr-rContainer{display:inline-block;padding:0;-webkit-box-sizing:border-box;box-sizing:border-box}.flatpickr-time{text-align:center;outline:0;display:block;height:0;line-height:40px;max-height:40px;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.flatpickr-time:after{content:"";display:table;clear:both}.flatpickr-time .numInputWrapper{-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;width:40%;height:40px;float:left}.flatpickr-time .numInputWrapper span.arrowUp:after{border-bottom-color:#393939}.flatpickr-time .numInputWrapper span.arrowDown:after{border-top-color:#393939}.flatpickr-time.hasSeconds .numInputWrapper{width:26%}.flatpickr-time.time24hr .numInputWrapper{width:49%}.flatpickr-time input{background:transparent;-webkit-box-shadow:none;box-shadow:none;border:0;border-radius:0;text-align:center;margin:0;padding:0;height:inherit;line-height:inherit;color:#393939;font-size:14px;position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.flatpickr-time input.flatpickr-hour{font-weight:bold}.flatpickr-time input.flatpickr-minute,.flatpickr-time input.flatpickr-second{font-weight:400}.flatpickr-time input:focus{outline:0;border:0}.flatpickr-time .flatpickr-time-separator,.flatpickr-time .flatpickr-am-pm{height:inherit;float:left;line-height:inherit;color:#393939;font-weight:bold;width:2%;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-align-self:center;-ms-flex-item-align:center;align-self:center}.flatpickr-time .flatpickr-am-pm{outline:0;width:18%;cursor:pointer;text-align:center;font-weight:400}.flatpickr-time input:hover,.flatpickr-time .flatpickr-am-pm:hover,.flatpickr-time input:focus,.flatpickr-time .flatpickr-am-pm:focus{background:#eee}.flatpickr-input[readonly]{cursor:pointer}@-webkit-keyframes fpFadeInDown{from{opacity:0;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@keyframes fpFadeInDown{from{opacity:0;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}`, "",{"version":3,"sources":["webpack://./node_modules/flatpickr/dist/flatpickr.min.css"],"names":[],"mappings":"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","sourcesContent":[".flatpickr-calendar{background:transparent;opacity:0;display:none;text-align:center;visibility:hidden;padding:0;-webkit-animation:none;animation:none;direction:ltr;border:0;font-size:14px;line-height:24px;border-radius:5px;position:absolute;width:307.875px;-webkit-box-sizing:border-box;box-sizing:border-box;-ms-touch-action:manipulation;touch-action:manipulation;background:#fff;-webkit-box-shadow:1px 0 0 #e6e6e6,-1px 0 0 #e6e6e6,0 1px 0 #e6e6e6,0 -1px 0 #e6e6e6,0 3px 13px rgba(0,0,0,0.08);box-shadow:1px 0 0 #e6e6e6,-1px 0 0 #e6e6e6,0 1px 0 #e6e6e6,0 -1px 0 #e6e6e6,0 3px 13px rgba(0,0,0,0.08)}.flatpickr-calendar.open,.flatpickr-calendar.inline{opacity:1;max-height:640px;visibility:visible}.flatpickr-calendar.open{display:inline-block;z-index:99999}.flatpickr-calendar.animate.open{-webkit-animation:fpFadeInDown 300ms cubic-bezier(.23,1,.32,1);animation:fpFadeInDown 300ms cubic-bezier(.23,1,.32,1)}.flatpickr-calendar.inline{display:block;position:relative;top:2px}.flatpickr-calendar.static{position:absolute;top:calc(100% + 2px)}.flatpickr-calendar.static.open{z-index:999;display:block}.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+1) .flatpickr-day.inRange:nth-child(7n+7){-webkit-box-shadow:none !important;box-shadow:none !important}.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+2) .flatpickr-day.inRange:nth-child(7n+1){-webkit-box-shadow:-2px 0 0 #e6e6e6,5px 0 0 #e6e6e6;box-shadow:-2px 0 0 #e6e6e6,5px 0 0 #e6e6e6}.flatpickr-calendar .hasWeeks .dayContainer,.flatpickr-calendar .hasTime .dayContainer{border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.flatpickr-calendar .hasWeeks .dayContainer{border-left:0}.flatpickr-calendar.hasTime .flatpickr-time{height:40px;border-top:1px solid #e6e6e6}.flatpickr-calendar.noCalendar.hasTime .flatpickr-time{height:auto}.flatpickr-calendar:before,.flatpickr-calendar:after{position:absolute;display:block;pointer-events:none;border:solid transparent;content:'';height:0;width:0;left:22px}.flatpickr-calendar.rightMost:before,.flatpickr-calendar.arrowRight:before,.flatpickr-calendar.rightMost:after,.flatpickr-calendar.arrowRight:after{left:auto;right:22px}.flatpickr-calendar.arrowCenter:before,.flatpickr-calendar.arrowCenter:after{left:50%;right:50%}.flatpickr-calendar:before{border-width:5px;margin:0 -5px}.flatpickr-calendar:after{border-width:4px;margin:0 -4px}.flatpickr-calendar.arrowTop:before,.flatpickr-calendar.arrowTop:after{bottom:100%}.flatpickr-calendar.arrowTop:before{border-bottom-color:#e6e6e6}.flatpickr-calendar.arrowTop:after{border-bottom-color:#fff}.flatpickr-calendar.arrowBottom:before,.flatpickr-calendar.arrowBottom:after{top:100%}.flatpickr-calendar.arrowBottom:before{border-top-color:#e6e6e6}.flatpickr-calendar.arrowBottom:after{border-top-color:#fff}.flatpickr-calendar:focus{outline:0}.flatpickr-wrapper{position:relative;display:inline-block}.flatpickr-months{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.flatpickr-months .flatpickr-month{background:transparent;color:rgba(0,0,0,0.9);fill:rgba(0,0,0,0.9);height:34px;line-height:1;text-align:center;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:hidden;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}.flatpickr-months .flatpickr-prev-month,.flatpickr-months .flatpickr-next-month{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;text-decoration:none;cursor:pointer;position:absolute;top:0;height:34px;padding:10px;z-index:3;color:rgba(0,0,0,0.9);fill:rgba(0,0,0,0.9)}.flatpickr-months .flatpickr-prev-month.flatpickr-disabled,.flatpickr-months .flatpickr-next-month.flatpickr-disabled{display:none}.flatpickr-months .flatpickr-prev-month i,.flatpickr-months .flatpickr-next-month i{position:relative}.flatpickr-months .flatpickr-prev-month.flatpickr-prev-month,.flatpickr-months .flatpickr-next-month.flatpickr-prev-month{/*\n /*rtl:begin:ignore*/left:0/*\n /*rtl:end:ignore*/}/*\n /*rtl:begin:ignore*/\n/*\n /*rtl:end:ignore*/\n.flatpickr-months .flatpickr-prev-month.flatpickr-next-month,.flatpickr-months .flatpickr-next-month.flatpickr-next-month{/*\n /*rtl:begin:ignore*/right:0/*\n /*rtl:end:ignore*/}/*\n /*rtl:begin:ignore*/\n/*\n /*rtl:end:ignore*/\n.flatpickr-months .flatpickr-prev-month:hover,.flatpickr-months .flatpickr-next-month:hover{color:#959ea9}.flatpickr-months .flatpickr-prev-month:hover svg,.flatpickr-months .flatpickr-next-month:hover svg{fill:#f64747}.flatpickr-months .flatpickr-prev-month svg,.flatpickr-months .flatpickr-next-month svg{width:14px;height:14px}.flatpickr-months .flatpickr-prev-month svg path,.flatpickr-months .flatpickr-next-month svg path{-webkit-transition:fill .1s;transition:fill .1s;fill:inherit}.numInputWrapper{position:relative;height:auto}.numInputWrapper input,.numInputWrapper span{display:inline-block}.numInputWrapper input{width:100%}.numInputWrapper input::-ms-clear{display:none}.numInputWrapper input::-webkit-outer-spin-button,.numInputWrapper input::-webkit-inner-spin-button{margin:0;-webkit-appearance:none}.numInputWrapper span{position:absolute;right:0;width:14px;padding:0 4px 0 2px;height:50%;line-height:50%;opacity:0;cursor:pointer;border:1px solid rgba(57,57,57,0.15);-webkit-box-sizing:border-box;box-sizing:border-box}.numInputWrapper span:hover{background:rgba(0,0,0,0.1)}.numInputWrapper span:active{background:rgba(0,0,0,0.2)}.numInputWrapper span:after{display:block;content:\"\";position:absolute}.numInputWrapper span.arrowUp{top:0;border-bottom:0}.numInputWrapper span.arrowUp:after{border-left:4px solid transparent;border-right:4px solid transparent;border-bottom:4px solid rgba(57,57,57,0.6);top:26%}.numInputWrapper span.arrowDown{top:50%}.numInputWrapper span.arrowDown:after{border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px solid rgba(57,57,57,0.6);top:40%}.numInputWrapper span svg{width:inherit;height:auto}.numInputWrapper span svg path{fill:rgba(0,0,0,0.5)}.numInputWrapper:hover{background:rgba(0,0,0,0.05)}.numInputWrapper:hover span{opacity:1}.flatpickr-current-month{font-size:135%;line-height:inherit;font-weight:300;color:inherit;position:absolute;width:75%;left:12.5%;padding:7.48px 0 0 0;line-height:1;height:34px;display:inline-block;text-align:center;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.flatpickr-current-month span.cur-month{font-family:inherit;font-weight:700;color:inherit;display:inline-block;margin-left:.5ch;padding:0}.flatpickr-current-month span.cur-month:hover{background:rgba(0,0,0,0.05)}.flatpickr-current-month .numInputWrapper{width:6ch;width:7ch\\0;display:inline-block}.flatpickr-current-month .numInputWrapper span.arrowUp:after{border-bottom-color:rgba(0,0,0,0.9)}.flatpickr-current-month .numInputWrapper span.arrowDown:after{border-top-color:rgba(0,0,0,0.9)}.flatpickr-current-month input.cur-year{background:transparent;-webkit-box-sizing:border-box;box-sizing:border-box;color:inherit;cursor:text;padding:0 0 0 .5ch;margin:0;display:inline-block;font-size:inherit;font-family:inherit;font-weight:300;line-height:inherit;height:auto;border:0;border-radius:0;vertical-align:initial;-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.flatpickr-current-month input.cur-year:focus{outline:0}.flatpickr-current-month input.cur-year[disabled],.flatpickr-current-month input.cur-year[disabled]:hover{font-size:100%;color:rgba(0,0,0,0.5);background:transparent;pointer-events:none}.flatpickr-current-month .flatpickr-monthDropdown-months{appearance:menulist;background:transparent;border:none;border-radius:0;box-sizing:border-box;color:inherit;cursor:pointer;font-size:inherit;font-family:inherit;font-weight:300;height:auto;line-height:inherit;margin:-1px 0 0 0;outline:none;padding:0 0 0 .5ch;position:relative;vertical-align:initial;-webkit-box-sizing:border-box;-webkit-appearance:menulist;-moz-appearance:menulist;width:auto}.flatpickr-current-month .flatpickr-monthDropdown-months:focus,.flatpickr-current-month .flatpickr-monthDropdown-months:active{outline:none}.flatpickr-current-month .flatpickr-monthDropdown-months:hover{background:rgba(0,0,0,0.05)}.flatpickr-current-month .flatpickr-monthDropdown-months .flatpickr-monthDropdown-month{background-color:transparent;outline:none;padding:0}.flatpickr-weekdays{background:transparent;text-align:center;overflow:hidden;width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;height:28px}.flatpickr-weekdays .flatpickr-weekdaycontainer{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}span.flatpickr-weekday{cursor:default;font-size:90%;background:transparent;color:rgba(0,0,0,0.54);line-height:1;margin:0;text-align:center;display:block;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;font-weight:bolder}.dayContainer,.flatpickr-weeks{padding:1px 0 0 0}.flatpickr-days{position:relative;overflow:hidden;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:flex-start;width:307.875px}.flatpickr-days:focus{outline:0}.dayContainer{padding:0;outline:0;text-align:left;width:307.875px;min-width:307.875px;max-width:307.875px;-webkit-box-sizing:border-box;box-sizing:border-box;display:inline-block;display:-ms-flexbox;display:-webkit-box;display:-webkit-flex;display:flex;-webkit-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-wrap:wrap;-ms-flex-pack:justify;-webkit-justify-content:space-around;justify-content:space-around;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}.dayContainer + .dayContainer{-webkit-box-shadow:-1px 0 0 #e6e6e6;box-shadow:-1px 0 0 #e6e6e6}.flatpickr-day{background:none;border:1px solid transparent;border-radius:150px;-webkit-box-sizing:border-box;box-sizing:border-box;color:#393939;cursor:pointer;font-weight:400;width:14.2857143%;-webkit-flex-basis:14.2857143%;-ms-flex-preferred-size:14.2857143%;flex-basis:14.2857143%;max-width:39px;height:39px;line-height:39px;margin:0;display:inline-block;position:relative;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;text-align:center}.flatpickr-day.inRange,.flatpickr-day.prevMonthDay.inRange,.flatpickr-day.nextMonthDay.inRange,.flatpickr-day.today.inRange,.flatpickr-day.prevMonthDay.today.inRange,.flatpickr-day.nextMonthDay.today.inRange,.flatpickr-day:hover,.flatpickr-day.prevMonthDay:hover,.flatpickr-day.nextMonthDay:hover,.flatpickr-day:focus,.flatpickr-day.prevMonthDay:focus,.flatpickr-day.nextMonthDay:focus{cursor:pointer;outline:0;background:#e6e6e6;border-color:#e6e6e6}.flatpickr-day.today{border-color:#959ea9}.flatpickr-day.today:hover,.flatpickr-day.today:focus{border-color:#959ea9;background:#959ea9;color:#fff}.flatpickr-day.selected,.flatpickr-day.startRange,.flatpickr-day.endRange,.flatpickr-day.selected.inRange,.flatpickr-day.startRange.inRange,.flatpickr-day.endRange.inRange,.flatpickr-day.selected:focus,.flatpickr-day.startRange:focus,.flatpickr-day.endRange:focus,.flatpickr-day.selected:hover,.flatpickr-day.startRange:hover,.flatpickr-day.endRange:hover,.flatpickr-day.selected.prevMonthDay,.flatpickr-day.startRange.prevMonthDay,.flatpickr-day.endRange.prevMonthDay,.flatpickr-day.selected.nextMonthDay,.flatpickr-day.startRange.nextMonthDay,.flatpickr-day.endRange.nextMonthDay{background:#569ff7;-webkit-box-shadow:none;box-shadow:none;color:#fff;border-color:#569ff7}.flatpickr-day.selected.startRange,.flatpickr-day.startRange.startRange,.flatpickr-day.endRange.startRange{border-radius:50px 0 0 50px}.flatpickr-day.selected.endRange,.flatpickr-day.startRange.endRange,.flatpickr-day.endRange.endRange{border-radius:0 50px 50px 0}.flatpickr-day.selected.startRange + .endRange:not(:nth-child(7n+1)),.flatpickr-day.startRange.startRange + .endRange:not(:nth-child(7n+1)),.flatpickr-day.endRange.startRange + .endRange:not(:nth-child(7n+1)){-webkit-box-shadow:-10px 0 0 #569ff7;box-shadow:-10px 0 0 #569ff7}.flatpickr-day.selected.startRange.endRange,.flatpickr-day.startRange.startRange.endRange,.flatpickr-day.endRange.startRange.endRange{border-radius:50px}.flatpickr-day.inRange{border-radius:0;-webkit-box-shadow:-5px 0 0 #e6e6e6,5px 0 0 #e6e6e6;box-shadow:-5px 0 0 #e6e6e6,5px 0 0 #e6e6e6}.flatpickr-day.flatpickr-disabled,.flatpickr-day.flatpickr-disabled:hover,.flatpickr-day.prevMonthDay,.flatpickr-day.nextMonthDay,.flatpickr-day.notAllowed,.flatpickr-day.notAllowed.prevMonthDay,.flatpickr-day.notAllowed.nextMonthDay{color:rgba(57,57,57,0.3);background:transparent;border-color:transparent;cursor:default}.flatpickr-day.flatpickr-disabled,.flatpickr-day.flatpickr-disabled:hover{cursor:not-allowed;color:rgba(57,57,57,0.1)}.flatpickr-day.week.selected{border-radius:0;-webkit-box-shadow:-5px 0 0 #569ff7,5px 0 0 #569ff7;box-shadow:-5px 0 0 #569ff7,5px 0 0 #569ff7}.flatpickr-day.hidden{visibility:hidden}.rangeMode .flatpickr-day{margin-top:1px}.flatpickr-weekwrapper{float:left}.flatpickr-weekwrapper .flatpickr-weeks{padding:0 12px;-webkit-box-shadow:1px 0 0 #e6e6e6;box-shadow:1px 0 0 #e6e6e6}.flatpickr-weekwrapper .flatpickr-weekday{float:none;width:100%;line-height:28px}.flatpickr-weekwrapper span.flatpickr-day,.flatpickr-weekwrapper span.flatpickr-day:hover{display:block;width:100%;max-width:none;color:rgba(57,57,57,0.3);background:transparent;cursor:default;border:none}.flatpickr-innerContainer{display:block;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden}.flatpickr-rContainer{display:inline-block;padding:0;-webkit-box-sizing:border-box;box-sizing:border-box}.flatpickr-time{text-align:center;outline:0;display:block;height:0;line-height:40px;max-height:40px;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.flatpickr-time:after{content:\"\";display:table;clear:both}.flatpickr-time .numInputWrapper{-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;width:40%;height:40px;float:left}.flatpickr-time .numInputWrapper span.arrowUp:after{border-bottom-color:#393939}.flatpickr-time .numInputWrapper span.arrowDown:after{border-top-color:#393939}.flatpickr-time.hasSeconds .numInputWrapper{width:26%}.flatpickr-time.time24hr .numInputWrapper{width:49%}.flatpickr-time input{background:transparent;-webkit-box-shadow:none;box-shadow:none;border:0;border-radius:0;text-align:center;margin:0;padding:0;height:inherit;line-height:inherit;color:#393939;font-size:14px;position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.flatpickr-time input.flatpickr-hour{font-weight:bold}.flatpickr-time input.flatpickr-minute,.flatpickr-time input.flatpickr-second{font-weight:400}.flatpickr-time input:focus{outline:0;border:0}.flatpickr-time .flatpickr-time-separator,.flatpickr-time .flatpickr-am-pm{height:inherit;float:left;line-height:inherit;color:#393939;font-weight:bold;width:2%;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-align-self:center;-ms-flex-item-align:center;align-self:center}.flatpickr-time .flatpickr-am-pm{outline:0;width:18%;cursor:pointer;text-align:center;font-weight:400}.flatpickr-time input:hover,.flatpickr-time .flatpickr-am-pm:hover,.flatpickr-time input:focus,.flatpickr-time .flatpickr-am-pm:focus{background:#eee}.flatpickr-input[readonly]{cursor:pointer}@-webkit-keyframes fpFadeInDown{from{opacity:0;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@keyframes fpFadeInDown{from{opacity:0;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}"],"sourceRoot":""}]); -// Exports -/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); - - -/***/ }), - -/***/ 645: -/***/ ((module) => { - -"use strict"; - - -/* - MIT License http://www.opensource.org/licenses/mit-license.php - Author Tobias Koppers @sokra -*/ -module.exports = function (cssWithMappingToString) { - var list = []; - - // return the list of modules as css string - list.toString = function toString() { - return this.map(function (item) { - var content = ""; - var needLayer = typeof item[5] !== "undefined"; - if (item[4]) { - content += "@supports (".concat(item[4], ") {"); - } - if (item[2]) { - content += "@media ".concat(item[2], " {"); - } - if (needLayer) { - content += "@layer".concat(item[5].length > 0 ? " ".concat(item[5]) : "", " {"); - } - content += cssWithMappingToString(item); - if (needLayer) { - content += "}"; - } - if (item[2]) { - content += "}"; - } - if (item[4]) { - content += "}"; - } - return content; - }).join(""); - }; - - // import a list of modules into the list - list.i = function i(modules, media, dedupe, supports, layer) { - if (typeof modules === "string") { - modules = [[null, modules, undefined]]; - } - var alreadyImportedModules = {}; - if (dedupe) { - for (var k = 0; k < this.length; k++) { - var id = this[k][0]; - if (id != null) { - alreadyImportedModules[id] = true; - } - } - } - for (var _k = 0; _k < modules.length; _k++) { - var item = [].concat(modules[_k]); - if (dedupe && alreadyImportedModules[item[0]]) { - continue; - } - if (typeof layer !== "undefined") { - if (typeof item[5] === "undefined") { - item[5] = layer; - } else { - item[1] = "@layer".concat(item[5].length > 0 ? " ".concat(item[5]) : "", " {").concat(item[1], "}"); - item[5] = layer; - } - } - if (media) { - if (!item[2]) { - item[2] = media; - } else { - item[1] = "@media ".concat(item[2], " {").concat(item[1], "}"); - item[2] = media; - } - } - if (supports) { - if (!item[4]) { - item[4] = "".concat(supports); - } else { - item[1] = "@supports (".concat(item[4], ") {").concat(item[1], "}"); - item[4] = supports; - } - } - list.push(item); - } - }; - return list; -}; - -/***/ }), - -/***/ 537: -/***/ ((module) => { - -"use strict"; - - -module.exports = function (item) { - var content = item[1]; - var cssMapping = item[3]; - if (!cssMapping) { - return content; - } - if (typeof btoa === "function") { - var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(cssMapping)))); - var data = "sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(base64); - var sourceMapping = "/*# ".concat(data, " */"); - return [content].concat([sourceMapping]).join("\n"); - } - return [content].join("\n"); -}; - -/***/ }), - -/***/ 745: -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { - -"use strict"; -var __webpack_unused_export__; - - -var m = __webpack_require__(137); -if (true) { - exports.s = m.createRoot; - __webpack_unused_export__ = m.hydrateRoot; -} else { var i; } - - -/***/ }), - -/***/ 590: -/***/ ((module) => { - -/* global Map:readonly, Set:readonly, ArrayBuffer:readonly */ - -var hasElementType = typeof Element !== 'undefined'; -var hasMap = typeof Map === 'function'; -var hasSet = typeof Set === 'function'; -var hasArrayBuffer = typeof ArrayBuffer === 'function' && !!ArrayBuffer.isView; - -// Note: We **don't** need `envHasBigInt64Array` in fde es6/index.js - -function equal(a, b) { - // START: fast-deep-equal es6/index.js 3.1.3 - if (a === b) return true; - - if (a && b && typeof a == 'object' && typeof b == 'object') { - if (a.constructor !== b.constructor) return false; - - var length, i, keys; - if (Array.isArray(a)) { - length = a.length; - if (length != b.length) return false; - for (i = length; i-- !== 0;) - if (!equal(a[i], b[i])) return false; - return true; - } - - // START: Modifications: - // 1. Extra `has &&` helpers in initial condition allow es6 code - // to co-exist with es5. - // 2. Replace `for of` with es5 compliant iteration using `for`. - // Basically, take: - // - // ```js - // for (i of a.entries()) - // if (!b.has(i[0])) return false; - // ``` - // - // ... and convert to: - // - // ```js - // it = a.entries(); - // while (!(i = it.next()).done) - // if (!b.has(i.value[0])) return false; - // ``` - // - // **Note**: `i` access switches to `i.value`. - var it; - if (hasMap && (a instanceof Map) && (b instanceof Map)) { - if (a.size !== b.size) return false; - it = a.entries(); - while (!(i = it.next()).done) - if (!b.has(i.value[0])) return false; - it = a.entries(); - while (!(i = it.next()).done) - if (!equal(i.value[1], b.get(i.value[0]))) return false; - return true; - } - - if (hasSet && (a instanceof Set) && (b instanceof Set)) { - if (a.size !== b.size) return false; - it = a.entries(); - while (!(i = it.next()).done) - if (!b.has(i.value[0])) return false; - return true; - } - // END: Modifications - - if (hasArrayBuffer && ArrayBuffer.isView(a) && ArrayBuffer.isView(b)) { - length = a.length; - if (length != b.length) return false; - for (i = length; i-- !== 0;) - if (a[i] !== b[i]) return false; - return true; - } - - if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags; - // START: Modifications: - // Apply guards for `Object.create(null)` handling. See: - // - https://github.com/FormidableLabs/react-fast-compare/issues/64 - // - https://github.com/epoberezkin/fast-deep-equal/issues/49 - if (a.valueOf !== Object.prototype.valueOf && typeof a.valueOf === 'function' && typeof b.valueOf === 'function') return a.valueOf() === b.valueOf(); - if (a.toString !== Object.prototype.toString && typeof a.toString === 'function' && typeof b.toString === 'function') return a.toString() === b.toString(); - // END: Modifications - - keys = Object.keys(a); - length = keys.length; - if (length !== Object.keys(b).length) return false; - - for (i = length; i-- !== 0;) - if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false; - // END: fast-deep-equal - - // START: react-fast-compare - // custom handling for DOM elements - if (hasElementType && a instanceof Element) return false; - - // custom handling for React/Preact - for (i = length; i-- !== 0;) { - if ((keys[i] === '_owner' || keys[i] === '__v' || keys[i] === '__o') && a.$$typeof) { - // React-specific: avoid traversing React elements' _owner - // Preact-specific: avoid traversing Preact elements' __v and __o - // __v = $_original / $_vnode - // __o = $_owner - // These properties contain circular references and are not needed when - // comparing the actual elements (and not their owners) - // .$$typeof and ._store on just reasonable markers of elements - - continue; - } - - // all other properties should be traversed as usual - if (!equal(a[keys[i]], b[keys[i]])) return false; - } - // END: react-fast-compare - - // START: fast-deep-equal - return true; - } - - return a !== a && b !== b; -} -// end fast-deep-equal - -module.exports = function isEqual(a, b) { - try { - return equal(a, b); - } catch (error) { - if (((error.message || '').match(/stack|recursion/i))) { - // warn on circular references, don't crash - // browsers give this different errors name and messages: - // chrome/safari: "RangeError", "Maximum call stack size exceeded" - // firefox: "InternalError", too much recursion" - // edge: "Error", "Out of stack space" - console.warn('react-fast-compare cannot handle circular refs'); - return false; - } - // some other error. we should definitely know about these - throw error; - } -}; - - -/***/ }), - -/***/ 379: -/***/ ((module) => { - -"use strict"; - - -var stylesInDOM = []; -function getIndexByIdentifier(identifier) { - var result = -1; - for (var i = 0; i < stylesInDOM.length; i++) { - if (stylesInDOM[i].identifier === identifier) { - result = i; - break; - } - } - return result; -} -function modulesToDom(list, options) { - var idCountMap = {}; - var identifiers = []; - for (var i = 0; i < list.length; i++) { - var item = list[i]; - var id = options.base ? item[0] + options.base : item[0]; - var count = idCountMap[id] || 0; - var identifier = "".concat(id, " ").concat(count); - idCountMap[id] = count + 1; - var indexByIdentifier = getIndexByIdentifier(identifier); - var obj = { - css: item[1], - media: item[2], - sourceMap: item[3], - supports: item[4], - layer: item[5] - }; - if (indexByIdentifier !== -1) { - stylesInDOM[indexByIdentifier].references++; - stylesInDOM[indexByIdentifier].updater(obj); - } else { - var updater = addElementStyle(obj, options); - options.byIndex = i; - stylesInDOM.splice(i, 0, { - identifier: identifier, - updater: updater, - references: 1 - }); - } - identifiers.push(identifier); - } - return identifiers; -} -function addElementStyle(obj, options) { - var api = options.domAPI(options); - api.update(obj); - var updater = function updater(newObj) { - if (newObj) { - if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap && newObj.supports === obj.supports && newObj.layer === obj.layer) { - return; - } - api.update(obj = newObj); - } else { - api.remove(); - } - }; - return updater; -} -module.exports = function (list, options) { - options = options || {}; - list = list || []; - var lastIdentifiers = modulesToDom(list, options); - return function update(newList) { - newList = newList || []; - for (var i = 0; i < lastIdentifiers.length; i++) { - var identifier = lastIdentifiers[i]; - var index = getIndexByIdentifier(identifier); - stylesInDOM[index].references--; - } - var newLastIdentifiers = modulesToDom(newList, options); - for (var _i = 0; _i < lastIdentifiers.length; _i++) { - var _identifier = lastIdentifiers[_i]; - var _index = getIndexByIdentifier(_identifier); - if (stylesInDOM[_index].references === 0) { - stylesInDOM[_index].updater(); - stylesInDOM.splice(_index, 1); - } - } - lastIdentifiers = newLastIdentifiers; - }; -}; - -/***/ }), - -/***/ 569: -/***/ ((module) => { - -"use strict"; - - -var memo = {}; - -/* istanbul ignore next */ -function getTarget(target) { - if (typeof memo[target] === "undefined") { - var styleTarget = document.querySelector(target); - - // Special case to return head of iframe instead of iframe itself - if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) { - try { - // This will throw an exception if access to iframe is blocked - // due to cross-origin restrictions - styleTarget = styleTarget.contentDocument.head; - } catch (e) { - // istanbul ignore next - styleTarget = null; - } - } - memo[target] = styleTarget; - } - return memo[target]; -} - -/* istanbul ignore next */ -function insertBySelector(insert, style) { - var target = getTarget(insert); - if (!target) { - throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid."); - } - target.appendChild(style); -} -module.exports = insertBySelector; - -/***/ }), - -/***/ 216: -/***/ ((module) => { - -"use strict"; - - -/* istanbul ignore next */ -function insertStyleElement(options) { - var element = document.createElement("style"); - options.setAttributes(element, options.attributes); - options.insert(element, options.options); - return element; -} -module.exports = insertStyleElement; - -/***/ }), - -/***/ 565: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -/* istanbul ignore next */ -function setAttributesWithoutAttributes(styleElement) { - var nonce = true ? __webpack_require__.nc : 0; - if (nonce) { - styleElement.setAttribute("nonce", nonce); - } -} -module.exports = setAttributesWithoutAttributes; - -/***/ }), - -/***/ 795: -/***/ ((module) => { - -"use strict"; - - -/* istanbul ignore next */ -function apply(styleElement, options, obj) { - var css = ""; - if (obj.supports) { - css += "@supports (".concat(obj.supports, ") {"); - } - if (obj.media) { - css += "@media ".concat(obj.media, " {"); - } - var needLayer = typeof obj.layer !== "undefined"; - if (needLayer) { - css += "@layer".concat(obj.layer.length > 0 ? " ".concat(obj.layer) : "", " {"); - } - css += obj.css; - if (needLayer) { - css += "}"; - } - if (obj.media) { - css += "}"; - } - if (obj.supports) { - css += "}"; - } - var sourceMap = obj.sourceMap; - if (sourceMap && typeof btoa !== "undefined") { - css += "\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), " */"); - } - - // For old IE - /* istanbul ignore if */ - options.styleTagTransform(css, styleElement, options.options); -} -function removeStyleElement(styleElement) { - // istanbul ignore if - if (styleElement.parentNode === null) { - return false; - } - styleElement.parentNode.removeChild(styleElement); -} - -/* istanbul ignore next */ -function domAPI(options) { - if (typeof document === "undefined") { - return { - update: function update() {}, - remove: function remove() {} - }; - } - var styleElement = options.insertStyleElement(options); - return { - update: function update(obj) { - apply(styleElement, options, obj); - }, - remove: function remove() { - removeStyleElement(styleElement); - } - }; -} -module.exports = domAPI; - -/***/ }), - -/***/ 589: -/***/ ((module) => { - -"use strict"; - - -/* istanbul ignore next */ -function styleTagTransform(css, styleElement) { - if (styleElement.styleSheet) { - styleElement.styleSheet.cssText = css; - } else { - while (styleElement.firstChild) { - styleElement.removeChild(styleElement.firstChild); - } - styleElement.appendChild(document.createTextNode(css)); - } -} -module.exports = styleTagTransform; - -/***/ }), - -/***/ 137: -/***/ ((module) => { - -"use strict"; -module.exports = require("react-dom"); - -/***/ }) - -/******/ }); -/************************************************************************/ -/******/ // The module cache -/******/ var __webpack_module_cache__ = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ // Check if module is in cache -/******/ var cachedModule = __webpack_module_cache__[moduleId]; -/******/ if (cachedModule !== undefined) { -/******/ return cachedModule.exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = __webpack_module_cache__[moduleId] = { -/******/ id: moduleId, -/******/ loaded: false, -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__); -/******/ -/******/ // Flag the module as loaded -/******/ module.loaded = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/************************************************************************/ -/******/ /* webpack/runtime/amd define */ -/******/ (() => { -/******/ __webpack_require__.amdD = function () { -/******/ throw new Error('define cannot be used indirect'); -/******/ }; -/******/ })(); -/******/ -/******/ /* webpack/runtime/compat get default export */ -/******/ (() => { -/******/ // getDefaultExport function for compatibility with non-harmony modules -/******/ __webpack_require__.n = (module) => { -/******/ var getter = module && module.__esModule ? -/******/ () => (module['default']) : -/******/ () => (module); -/******/ __webpack_require__.d(getter, { a: getter }); -/******/ return getter; -/******/ }; -/******/ })(); -/******/ -/******/ /* webpack/runtime/define property getters */ -/******/ (() => { -/******/ // define getter functions for harmony exports -/******/ __webpack_require__.d = (exports, definition) => { -/******/ for(var key in definition) { -/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) { -/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] }); -/******/ } -/******/ } -/******/ }; -/******/ })(); -/******/ -/******/ /* webpack/runtime/hasOwnProperty shorthand */ -/******/ (() => { -/******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop)) -/******/ })(); -/******/ -/******/ /* webpack/runtime/make namespace object */ -/******/ (() => { -/******/ // define __esModule on exports -/******/ __webpack_require__.r = (exports) => { -/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { -/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); -/******/ } -/******/ Object.defineProperty(exports, '__esModule', { value: true }); -/******/ }; -/******/ })(); -/******/ -/******/ /* webpack/runtime/node module decorator */ -/******/ (() => { -/******/ __webpack_require__.nmd = (module) => { -/******/ module.paths = []; -/******/ if (!module.children) module.children = []; -/******/ return module; -/******/ }; -/******/ })(); -/******/ -/******/ /* webpack/runtime/publicPath */ -/******/ (() => { -/******/ __webpack_require__.p = ""; -/******/ })(); -/******/ -/******/ /* webpack/runtime/nonce */ -/******/ (() => { -/******/ __webpack_require__.nc = undefined; -/******/ })(); -/******/ -/************************************************************************/ -var __webpack_exports__ = {}; -// This entry need to be wrapped in an IIFE because it need to be in strict mode. -(() => { -"use strict"; -// ESM COMPAT FLAG -__webpack_require__.r(__webpack_exports__); - -// EXPORTS -__webpack_require__.d(__webpack_exports__, { - Accordion: () => (/* reexport */ components_Accordion), - Button: () => (/* reexport */ components_Button), - ButtonGroup: () => (/* reexport */ components_ButtonGroup), - Chart: () => (/* reexport */ components_Chart), - Checkbox: () => (/* reexport */ Checkbox), - CodeEditor: () => (/* reexport */ components_CodeEditor), - Collapsible: () => (/* reexport */ components_Collapsible), - Column: () => (/* reexport */ layout_Column), - Combobox: () => (/* reexport */ Combobox), - Combobox2: () => (/* reexport */ components_Combobox2), - Confirm: () => (/* reexport */ components_Confirm), - CopyToClipboard: () => (/* reexport */ components_CopyToClipboard), - DatePicker: () => (/* reexport */ components_DatePicker), - Dropdown: () => (/* reexport */ components_Dropdown), - EditableList: () => (/* reexport */ EditableList), - EditableList2: () => (/* reexport */ components_EditableList2), - FieldCodeEditor: () => (/* reexport */ FieldCodeEditor), - FieldCombobox: () => (/* reexport */ FieldCombobox), - FieldCombobox2: () => (/* reexport */ redux_form_FieldCombobox2), - FieldDatePicker: () => (/* reexport */ FieldDatePicker), - FieldDropdown: () => (/* reexport */ FieldDropdown), - FieldEditableList: () => (/* reexport */ FieldEditableList), - FieldFileInput: () => (/* reexport */ FieldFileInput), - FieldInput: () => (/* reexport */ FieldInput), - FieldMultiselect: () => (/* reexport */ FieldMultiselect), - FieldPagination: () => (/* reexport */ redux_form_FieldPagination), - FieldSelect: () => (/* reexport */ FieldSelect), - FieldSelectableList: () => (/* reexport */ FieldSelectableList), - FieldToggle: () => (/* reexport */ FieldToggle), - FileInput: () => (/* reexport */ FileInput), - FixedWrapper: () => (/* reexport */ components_FixedWrapper), - FloatingContainer: () => (/* reexport */ components_FloatingContainer), - FormikCheckbox: () => (/* reexport */ FormikCheckbox), - FormikCodeEditor: () => (/* reexport */ FormikCodeEditor), - FormikCombobox: () => (/* reexport */ FormikCombobox), - FormikCombobox2: () => (/* reexport */ FormikCombobox2), - FormikDatePicker: () => (/* reexport */ FormikDatePicker), - FormikEditableList: () => (/* reexport */ FormikEditableList), - FormikEditableList2: () => (/* reexport */ FormikEditableList2), - FormikFileInput: () => (/* reexport */ FormikFileInput), - FormikInput: () => (/* reexport */ FormikInput), - FormikInput2: () => (/* reexport */ FormikInput2), - FormikMultiselect: () => (/* reexport */ FormikMultiselect), - FormikRadio: () => (/* reexport */ FormikRadio), - FormikSelect: () => (/* reexport */ FormikSelect), - FormikSelectableList: () => (/* reexport */ FormikSelectableList), - FormikStringBuilder: () => (/* reexport */ FormikStringBuilder), - FormikTextarea: () => (/* reexport */ FormikTextarea), - FormikToggle: () => (/* reexport */ FormikToggle), - FormikWrapper: () => (/* reexport */ formik), - Icon: () => (/* reexport */ components_Icon), - InfiniteScroller: () => (/* reexport */ components_InfiniteScroller), - InfoNote: () => (/* reexport */ components_InfoNote), - Input: () => (/* reexport */ Input), - Input2: () => (/* reexport */ components_Input2), - List: () => (/* reexport */ components_List), - Loader: () => (/* reexport */ components_Loader), - Message: () => (/* reexport */ components_Message), - Modal: () => (/* reexport */ components_Modal), - Multiselect: () => (/* reexport */ components_Multiselect), - NavBar: () => (/* reexport */ components_NavBar), - Navigation: () => (/* reexport */ components_Navigation), - Pagination: () => (/* reexport */ Pagination), - Panel: () => (/* reexport */ components_Panel), - Pill: () => (/* reexport */ components_Pill), - Radio: () => (/* reexport */ Radio), - RevealPanel: () => (/* reexport */ components_RevealPanel), - Row: () => (/* reexport */ Row_Row), - Select: () => (/* reexport */ Select), - SelectableList: () => (/* reexport */ components_SelectableList), - StringBuilder: () => (/* reexport */ components_StringBuilder), - Table: () => (/* reexport */ components_Table), - Tabs: () => (/* reexport */ components_Tabs), - TextEllipsis: () => (/* reexport */ components_TextEllipsis), - Textarea: () => (/* reexport */ components_Textarea), - Toggle: () => (/* reexport */ components_Toggle), - Tooltip: () => (/* reexport */ components_Tooltip), - setConfig: () => (/* reexport */ setConfig), - toast: () => (/* reexport */ Toast), - useComponentSize: () => (/* reexport */ hooks_useComponentSize), - useEventListener: () => (/* reexport */ hooks_useEventListener), - useInterval: () => (/* reexport */ useInterval), - usePrevious: () => (/* reexport */ hooks_usePrevious), - useTimeout: () => (/* reexport */ hooks_useTimeout) -}); - -;// CONCATENATED MODULE: external "react" -const external_react_namespaceObject = require("react"); -var external_react_default = /*#__PURE__*/__webpack_require__.n(external_react_namespaceObject); -;// CONCATENATED MODULE: external "prop-types" -const external_prop_types_namespaceObject = require("prop-types"); -var external_prop_types_default = /*#__PURE__*/__webpack_require__.n(external_prop_types_namespaceObject); -;// CONCATENATED MODULE: ./src/components/Accordion/js/AccordionContext.js - -const AccordionContext = (0,external_react_namespaceObject.createContext)(); -/* harmony default export */ const js_AccordionContext = (AccordionContext); - -;// CONCATENATED MODULE: ./src/components/Accordion/js/AccordionItemContext.js - -const AccordionItemContext = (0,external_react_namespaceObject.createContext)(); -/* harmony default export */ const js_AccordionItemContext = (AccordionItemContext); - -;// CONCATENATED MODULE: ./src/components/Icon/index.js -var __defProp = Object.defineProperty; -var __getOwnPropSymbols = Object.getOwnPropertySymbols; -var __hasOwnProp = Object.prototype.hasOwnProperty; -var __propIsEnum = Object.prototype.propertyIsEnumerable; -var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var __spreadValues = (a, b) => { - for (var prop in b || (b = {})) - if (__hasOwnProp.call(b, prop)) - __defNormalProp(a, prop, b[prop]); - if (__getOwnPropSymbols) - for (var prop of __getOwnPropSymbols(b)) { - if (__propIsEnum.call(b, prop)) - __defNormalProp(a, prop, b[prop]); - } - return a; -}; -var __objRest = (source, exclude) => { - var target = {}; - for (var prop in source) - if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) - target[prop] = source[prop]; - if (source != null && __getOwnPropSymbols) - for (var prop of __getOwnPropSymbols(source)) { - if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop)) - target[prop] = source[prop]; - } - return target; -}; - - -function Icon(_a) { - var _b = _a, { - className, - family, - type - } = _b, rest = __objRest(_b, [ - "className", - "family", - "type" - ]); - function getCSSClasses() { - const fontFamily = family || "fa"; - return [ - "tyk-icon", - fontFamily, - `${fontFamily}-${type}`, - className - ].filter(Boolean).join(" "); - } - return /* @__PURE__ */ external_react_default().createElement("i", __spreadValues({ className: getCSSClasses() }, rest)); -} -Icon.propTypes = { - className: (external_prop_types_default()).string, - family: (external_prop_types_default()).string, - type: (external_prop_types_default()).string.isRequired -}; -/* harmony default export */ const components_Icon = (Icon); - -;// CONCATENATED MODULE: ./src/components/Accordion/js/AccordionItemTrigger.js - - - - -function ItemTrigger({ wrap }) { - const { collapsed, disabled, toggleChange } = (0,external_react_namespaceObject.useContext)(js_AccordionItemContext); - const iconType = collapsed ? "chevron-down" : "chevron-up"; - const classes = [ - "tyk-accordion__trigger", - disabled && "tyk-accordion__trigger--disabled" - ].filter(Boolean).join(" "); - const trigger = /* @__PURE__ */ external_react_default().createElement( - "button", - { - className: classes, - onClick: toggleChange, - type: "button" - }, - /* @__PURE__ */ external_react_default().createElement(components_Icon, { className: "collapsable__arrow", type: iconType }) - ); - return wrap ? /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-accordion__trigger-wrapper" }, trigger) : trigger; -} -ItemTrigger.propTypes = { - wrap: (external_prop_types_default()).bool -}; -/* harmony default export */ const AccordionItemTrigger = (ItemTrigger); - -;// CONCATENATED MODULE: ./src/components/Accordion/js/AccordionItem.js - - - - - -function AccordionItem({ - collapsed: collapsedProp, - children, - className, - disabled -}, ref) { - const { arrow } = (0,external_react_namespaceObject.useContext)(js_AccordionContext); - const [collapsed, setCollapsed] = (0,external_react_namespaceObject.useState)(collapsedProp); - const toggleChange = () => { - if (disabled) { - return; - } - setCollapsed(!collapsed); - }; - const classes = (0,external_react_namespaceObject.useMemo)(() => [ - "tyk-accordion__item", - arrow.expandToContent ? `tyk-accordion__item--trigger-position-${arrow.position}` : "tyk-accordion__item--trigger-in-header", - className, - collapsed === false && "tyk-accordion__item--active" - ].filter(Boolean).join(" "), [arrow, className, collapsed]); - const contextValue = (0,external_react_namespaceObject.useMemo)(() => ({ - collapsed, - disabled, - toggleChange - }), [collapsed, disabled, toggleChange]); - return /* @__PURE__ */ external_react_default().createElement("div", { ref, className: classes }, /* @__PURE__ */ external_react_default().createElement(js_AccordionItemContext.Provider, { value: contextValue }, arrow.expandToContent && /* @__PURE__ */ external_react_default().createElement(AccordionItemTrigger, { wrap: true }), children)); -} -AccordionItem.propTypes = { - children: external_prop_types_default().oneOfType([ - external_prop_types_default().arrayOf((external_prop_types_default()).node), - (external_prop_types_default()).node, - (external_prop_types_default()).element, - (external_prop_types_default()).string - ]), - collapsed: (external_prop_types_default()).bool, - className: (external_prop_types_default()).string, - disabled: (external_prop_types_default()).bool -}; -AccordionItem.defaultProps = { - collapsed: false -}; -/* harmony default export */ const js_AccordionItem = ((0,external_react_namespaceObject.forwardRef)(AccordionItem)); - -;// CONCATENATED MODULE: ./src/components/Accordion/js/AccordionItemHeader.js - - - - - - -function AccordionItemHeader({ className, children }) { - const { collapsed, disabled, toggleChange } = (0,external_react_namespaceObject.useContext)(js_AccordionItemContext); - const { usearrowastrigger, arrow } = (0,external_react_namespaceObject.useContext)(js_AccordionContext); - const iconType = collapsed ? "chevron-down" : "chevron-up"; - const classes = [ - "tyk-accordion__item-header", - usearrowastrigger && "tyk-accordion__arrow-trigger", - className - ].filter(Boolean).join(" "); - return /* @__PURE__ */ external_react_default().createElement("div", { className: classes }, !usearrowastrigger ? /* @__PURE__ */ external_react_default().createElement( - "button", - { - className: disabled ? "tyk-accordion__trigger--disabled" : "", - onClick: toggleChange, - type: "button" - }, - /* @__PURE__ */ external_react_default().createElement("span", null, children), - /* @__PURE__ */ external_react_default().createElement(components_Icon, { className: "collapsable__arrow", type: iconType }) - ) : /* @__PURE__ */ external_react_default().createElement((external_react_default()).Fragment, null, !arrow.expandToContent && arrow.position === "left" && /* @__PURE__ */ external_react_default().createElement(AccordionItemTrigger, null), /* @__PURE__ */ external_react_default().createElement("div", null, children), !arrow.expandToContent && arrow.position === "right" && /* @__PURE__ */ external_react_default().createElement(AccordionItemTrigger, null))); -} -AccordionItemHeader.propTypes = { - children: external_prop_types_default().oneOfType([ - external_prop_types_default().arrayOf((external_prop_types_default()).node), - (external_prop_types_default()).node, - (external_prop_types_default()).element, - (external_prop_types_default()).string - ]), - className: (external_prop_types_default()).string -}; -/* harmony default export */ const js_AccordionItemHeader = (AccordionItemHeader); - -;// CONCATENATED MODULE: external "react-transition-group" -const external_react_transition_group_namespaceObject = require("react-transition-group"); -;// CONCATENATED MODULE: ./src/hooks/usePrevious/index.js - -const usePrevious = (value) => { - const ref = (0,external_react_namespaceObject.useRef)(); - (0,external_react_namespaceObject.useEffect)(() => { - ref.current = value; - }, [value]); - return ref.current; -}; -/* harmony default export */ const hooks_usePrevious = (usePrevious); - -;// CONCATENATED MODULE: ./src/hooks/useTimeout/index.js - -const useTimeout = (callback, delay) => { - const savedCallback = (0,external_react_namespaceObject.useRef)(); - (0,external_react_namespaceObject.useEffect)( - () => { - savedCallback.current = callback; - }, - [callback] - ); - (0,external_react_namespaceObject.useEffect)( - () => { - function tick() { - savedCallback.current(); - } - if (delay !== null) { - const id = setTimeout(tick, delay); - return () => clearTimeout(id); - } - return () => { - }; - }, - [delay] - ); -}; -/* harmony default export */ const hooks_useTimeout = (useTimeout); - -;// CONCATENATED MODULE: ./src/hooks/useInterval/index.js - -function useInterval(callback, delay, ...args) { - const savedCallback = (0,external_react_namespaceObject.useRef)(); - (0,external_react_namespaceObject.useEffect)(() => { - savedCallback.current = callback; - }, [callback]); - (0,external_react_namespaceObject.useEffect)(() => { - function tick() { - savedCallback.current(...args); - } - if (delay !== null && delay !== void 0) { - const id = setInterval(tick, delay); - return () => clearInterval(id); - } - }, [delay]); -} - -;// CONCATENATED MODULE: ./src/hooks/useEventListener/index.js - -const useEventListener = (eventName, handler, element) => { - const savedHandler = (0,external_react_namespaceObject.useRef)(); - (0,external_react_namespaceObject.useEffect)(() => { - savedHandler.current = handler; - }, [handler]); - (0,external_react_namespaceObject.useEffect)(() => { - const isSupported = element == null ? void 0 : element.addEventListener; - if (!isSupported) { - return; - } - const eventListener = (event) => savedHandler.current(event); - element.addEventListener(eventName, eventListener); - return () => { - element.removeEventListener(eventName, eventListener); - }; - }, [eventName, element]); -}; -/* harmony default export */ const hooks_useEventListener = (useEventListener); - -;// CONCATENATED MODULE: ./src/hooks/useComponentSize/index.js - -const getSize = (el) => { - if (!el) { - return { - width: 0, - height: 0 - }; - } - return { - width: el.offsetWidth, - height: el.offsetHeight - }; -}; -const useComponentSize = (ref) => { - const [ComponentSize, setComponentSize] = (0,external_react_namespaceObject.useState)(getSize(ref ? ref.current : {})); - const handleResize = (0,external_react_namespaceObject.useCallback)(() => { - if (ref.current) { - setComponentSize(getSize(ref.current)); - } - }, [ref]); - (0,external_react_namespaceObject.useLayoutEffect)(() => { - handleResize(); - let resizeObserver = new ResizeObserver(() => { - handleResize(); - }); - resizeObserver.observe(ref.current); - return () => { - resizeObserver.disconnect(ref.current); - resizeObserver = null; - }; - }, [ref.current]); - return ComponentSize; -}; -/* harmony default export */ const hooks_useComponentSize = (useComponentSize); - -;// CONCATENATED MODULE: ./src/hooks/index.js - - - - - - -;// CONCATENATED MODULE: ./src/components/Collapsible/index.js -var Collapsible_defProp = Object.defineProperty; -var __defProps = Object.defineProperties; -var __getOwnPropDescs = Object.getOwnPropertyDescriptors; -var Collapsible_getOwnPropSymbols = Object.getOwnPropertySymbols; -var Collapsible_hasOwnProp = Object.prototype.hasOwnProperty; -var Collapsible_propIsEnum = Object.prototype.propertyIsEnumerable; -var Collapsible_defNormalProp = (obj, key, value) => key in obj ? Collapsible_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var Collapsible_spreadValues = (a, b) => { - for (var prop in b || (b = {})) - if (Collapsible_hasOwnProp.call(b, prop)) - Collapsible_defNormalProp(a, prop, b[prop]); - if (Collapsible_getOwnPropSymbols) - for (var prop of Collapsible_getOwnPropSymbols(b)) { - if (Collapsible_propIsEnum.call(b, prop)) - Collapsible_defNormalProp(a, prop, b[prop]); - } - return a; -}; -var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b)); -var Collapsible_objRest = (source, exclude) => { - var target = {}; - for (var prop in source) - if (Collapsible_hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) - target[prop] = source[prop]; - if (source != null && Collapsible_getOwnPropSymbols) - for (var prop of Collapsible_getOwnPropSymbols(source)) { - if (exclude.indexOf(prop) < 0 && Collapsible_propIsEnum.call(source, prop)) - target[prop] = source[prop]; - } - return target; -}; - - - - -function Collapsible(_a) { - var _b = _a, { - className, - collapsed, - children - } = _b, rest = Collapsible_objRest(_b, [ - "className", - "collapsed", - "children" - ]); - const contentContainer = (0,external_react_namespaceObject.useRef)(null); - const collapseWrapper = (0,external_react_namespaceObject.useRef)(null); - const refContainerSize = hooks_useComponentSize(contentContainer); - const [contentContainerStyle, setContentContainerStyle] = (0,external_react_namespaceObject.useState)({ - // eslint-disable-next-line - height: collapsed ? 0 : "auto" - }); - const setHeight = (height) => { - setContentContainerStyle({ - height: `${height}px` - }); - }; - const getHeight = () => contentContainer.current ? contentContainer.current.clientHeight : 0; - const onEnter = () => { - setHeight(getHeight()); - }; - const onExit = () => { - setHeight(0); - }; - (0,external_react_namespaceObject.useEffect)(() => { - if (!collapsed && (refContainerSize == null ? void 0 : refContainerSize.height) && contentContainerStyle.height !== (refContainerSize == null ? void 0 : refContainerSize.height)) { - setHeight(refContainerSize.height); - } - }, [refContainerSize.height]); - const onWindowResize = (0,external_react_namespaceObject.useCallback)(() => { - if (!collapsed && contentContainer.current) { - setHeight(getHeight()); - collapseWrapper.current.style.height = `${getHeight()}px`; - } - }, [collapsed, contentContainer.current]); - hooks_useEventListener("resize", onWindowResize, window); - return /* @__PURE__ */ external_react_default().createElement( - external_react_transition_group_namespaceObject.CSSTransition, - { - onEnter, - onExit, - in: !collapsed, - timeout: 0, - classNames: "collapse" - }, - /* @__PURE__ */ external_react_default().createElement( - "div", - { - className: "collapse-wrapper", - ref: collapseWrapper, - style: contentContainerStyle - }, - /* @__PURE__ */ external_react_default().createElement( - "div", - __spreadProps(Collapsible_spreadValues({}, rest), { - className, - ref: contentContainer - }), - children - ) - ) - ); -} -Collapsible.propTypes = { - children: external_prop_types_default().oneOfType([ - (external_prop_types_default()).element, - (external_prop_types_default()).node, - (external_prop_types_default()).string - ]), - /** Describes if the content of Collapsible should be hidden or not */ - collapsed: (external_prop_types_default()).bool, - /** CSS classes that can be passed to the Collapsible element */ - className: (external_prop_types_default()).string -}; -/* harmony default export */ const components_Collapsible = (Collapsible); - -;// CONCATENATED MODULE: ./src/components/Accordion/js/AccordionItemContent.js - - - - -function AccordionItemContent({ children, className }) { - const { collapsed } = (0,external_react_namespaceObject.useContext)(js_AccordionItemContext); - const classes = [ - "tyk-accordion__item-content", - className - ].filter(Boolean).join(" "); - return /* @__PURE__ */ external_react_default().createElement("div", { className: classes }, /* @__PURE__ */ external_react_default().createElement(components_Collapsible, { collapsed }, children)); -} -AccordionItemContent.propTypes = { - children: external_prop_types_default().oneOfType([ - external_prop_types_default().arrayOf((external_prop_types_default()).node), - (external_prop_types_default()).node, - (external_prop_types_default()).element, - (external_prop_types_default()).string - ]), - className: (external_prop_types_default()).string -}; -/* harmony default export */ const js_AccordionItemContent = (AccordionItemContent); - -;// CONCATENATED MODULE: ./src/components/Accordion/index.js - - - - - - -function Accordion({ - className, - children, - usearrowastrigger, - arrow = { position: "right", expandToContent: false } -}) { - const classes = [ - "tyk-accordion", - className - ].filter(Boolean).join(" "); - const contextValue = (0,external_react_namespaceObject.useMemo)(() => ({ - usearrowastrigger, - arrow - }), [usearrowastrigger, arrow]); - return /* @__PURE__ */ external_react_default().createElement("div", { className: classes }, /* @__PURE__ */ external_react_default().createElement(js_AccordionContext.Provider, { value: contextValue }, children)); -} -Accordion.propTypes = { - children: external_prop_types_default().oneOfType([ - external_prop_types_default().arrayOf((external_prop_types_default()).node), - (external_prop_types_default()).node, - (external_prop_types_default()).element, - (external_prop_types_default()).string - ]), - className: (external_prop_types_default()).string, - usearrowastrigger: (external_prop_types_default()).bool, - arrow: external_prop_types_default().shape({ - position: external_prop_types_default().oneOf(["left", "right"]), - expandToContent: (external_prop_types_default()).bool - }) -}; -Accordion.defaultProps = { - usearrowastrigger: false -}; -Accordion.Item = js_AccordionItem; -Accordion.Item.Header = js_AccordionItemHeader; -Accordion.Item.Content = js_AccordionItemContent; -/* harmony default export */ const components_Accordion = (Accordion); - -;// CONCATENATED MODULE: ./src/components/Button/index.js -var Button_defProp = Object.defineProperty; -var Button_getOwnPropSymbols = Object.getOwnPropertySymbols; -var Button_hasOwnProp = Object.prototype.hasOwnProperty; -var Button_propIsEnum = Object.prototype.propertyIsEnumerable; -var Button_defNormalProp = (obj, key, value) => key in obj ? Button_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var Button_spreadValues = (a, b) => { - for (var prop in b || (b = {})) - if (Button_hasOwnProp.call(b, prop)) - Button_defNormalProp(a, prop, b[prop]); - if (Button_getOwnPropSymbols) - for (var prop of Button_getOwnPropSymbols(b)) { - if (Button_propIsEnum.call(b, prop)) - Button_defNormalProp(a, prop, b[prop]); - } - return a; -}; -var Button_objRest = (source, exclude) => { - var target = {}; - for (var prop in source) - if (Button_hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) - target[prop] = source[prop]; - if (source != null && Button_getOwnPropSymbols) - for (var prop of Button_getOwnPropSymbols(source)) { - if (exclude.indexOf(prop) < 0 && Button_propIsEnum.call(source, prop)) - target[prop] = source[prop]; - } - return target; -}; - - - -const Button = external_react_default().forwardRef((props, ref) => { - const _a = props, { - customButton, - children, - iconType, - iconFamily, - iconPosition, - iconOnly, - id, - className, - disabled, - display, - href, - onClick, - noStyle, - size, - theme, - type - } = _a, rest = Button_objRest(_a, [ - "customButton", - "children", - "iconType", - "iconFamily", - "iconPosition", - "iconOnly", - "id", - "className", - "disabled", - "display", - "href", - "onClick", - "noStyle", - "size", - "theme", - "type" - ]); - const getCssClasses = () => { - const cssClasses = ["tyk-button"].concat(className ? className.split(" ") : []); - const sizeClass = size ? `tyk-button--${size}` : "tyk-button--md"; - const disabledClass = disabled ? "disabled" : ""; - const displayClass = display || ""; - const themeClass = theme ? `tyk-button--${theme}` : ""; - const iconOnlyClass = iconOnly ? "tyk-button--icon-only" : ""; - const noStyleClass = noStyle ? "tyk-button--no-style" : ""; - cssClasses.push(iconOnlyClass); - cssClasses.push(themeClass); - cssClasses.push(sizeClass); - cssClasses.push(disabledClass); - cssClasses.push(displayClass); - cssClasses.push(noStyleClass); - if (iconType) { - cssClasses.push(`icon-${iconPosition || "left"}`); - } - return cssClasses.join(" "); - }; - const getButtonIcon = (position) => { - const iPos = iconPosition || "left"; - return iconType && iPos === position ? /* @__PURE__ */ external_react_default().createElement(components_Icon, { family: iconFamily, type: iconType }) : null; - }; - const getButtonType = () => { - let buttonType; - if (customButton) { - return /* @__PURE__ */ external_react_default().createElement(external_react_namespaceObject.Fragment, null, (0,external_react_namespaceObject.cloneElement)(customButton, { - className: getCssClasses(), - disabled - })); - } - if (href) { - buttonType = /* @__PURE__ */ external_react_default().createElement( - "a", - Button_spreadValues({ - id, - className: getCssClasses(), - disabled, - onClick, - href, - ref - }, rest), - getButtonIcon("left"), - children, - getButtonIcon("right") - ); - } else { - buttonType = // eslint-disable-next-line react/button-has-type - /* @__PURE__ */ external_react_default().createElement( - "button", - Button_spreadValues({ - id, - className: getCssClasses(), - disabled, - onClick, - type: type || "button", - ref - }, rest), - getButtonIcon("left"), - children && /* @__PURE__ */ external_react_default().createElement("span", null, children), - getButtonIcon("right") - ); - } - return buttonType; - }; - return getButtonType(); -}); -Button.propTypes = { - /** - * Content of a button. Can be a DOM element or a React component - */ - children: external_prop_types_default().oneOfType([ - external_prop_types_default().arrayOf((external_prop_types_default()).node), - (external_prop_types_default()).node, - (external_prop_types_default()).element, - (external_prop_types_default()).string - ]), - customButton: external_prop_types_default().oneOfType([ - external_prop_types_default().arrayOf((external_prop_types_default()).node), - (external_prop_types_default()).node, - (external_prop_types_default()).element - ]), - className: (external_prop_types_default()).string, - /** - * Display type: inline/block. Default is inline - */ - display: (external_prop_types_default()).string, - /** - * Sets the button disabled state - */ - disabled: (external_prop_types_default()).bool, - /** - * Having this property set the button will become a link - */ - id: (external_prop_types_default()).string, - href: (external_prop_types_default()).string, - iconPosition: (external_prop_types_default()).string, - // left or right - iconFamily: (external_prop_types_default()).string, - iconOnly: (external_prop_types_default()).bool, - iconType: (external_prop_types_default()).string, - noStyle: (external_prop_types_default()).bool, - /** - * Callback function, called when the button si clicked - */ - onClick: (external_prop_types_default()).func, - /** - * Describes the appearence of the button (ex: primary, danger, primary-outline etc.) - */ - theme: (external_prop_types_default()).string, - /** - * Type of the button (ex: button, submit etc.) - */ - type: (external_prop_types_default()).string, - /** - * Describes the size of the button (sm, md, lg). Default one is md - */ - size: (external_prop_types_default()).string -}; -Button.defaultProps = { - theme: "", - type: "button" -}; -/* harmony default export */ const components_Button = (Button); - -;// CONCATENATED MODULE: ./src/components/ButtonGroup/index.js - - -function ButtonGroup({ - className, - children, - label -}) { - return /* @__PURE__ */ external_react_default().createElement("div", { className: `tyk-button-group__wrapper ${className}` }, Boolean(label) && /* @__PURE__ */ external_react_default().createElement("label", null, label), /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-button-group" }, children)); -} -ButtonGroup.propTypes = { - children: external_prop_types_default().oneOfType([ - external_prop_types_default().arrayOf((external_prop_types_default()).node), - (external_prop_types_default()).node, - (external_prop_types_default()).element, - (external_prop_types_default()).string - ]), - className: (external_prop_types_default()).string, - /** - * Label that will sit above the button group - */ - label: (external_prop_types_default()).string -}; -/* harmony default export */ const components_ButtonGroup = (ButtonGroup); - -;// CONCATENATED MODULE: external "echarts" -const external_echarts_namespaceObject = require("echarts"); -;// CONCATENATED MODULE: external "immutable" -const external_immutable_namespaceObject = require("immutable"); -;// CONCATENATED MODULE: ./src/utils/debounce/index.js -/* harmony default export */ const debounce = ((func, wait, immediate) => { - let timeout; - return function debouncer(...args) { - const context = this; - const later = () => { - timeout = null; - if (!immediate) { - func.apply(context, args); - } - }; - const callNow = immediate && !timeout; - clearTimeout(timeout); - timeout = setTimeout(later, wait); - if (callNow) { - func.apply(context, args); - } - }; -}); - -;// CONCATENATED MODULE: ./src/components/Loader/index.js - - -function Loader({ className, position = "relative", withbackground = false }) { - const classes = [ - "loading", - position, - className - ].filter(Boolean).join(" "); - const loader = /* @__PURE__ */ external_react_default().createElement("div", { className: classes }, /* @__PURE__ */ external_react_default().createElement("div", { className: "loading-bar" }), /* @__PURE__ */ external_react_default().createElement("div", { className: "loading-bar" }), /* @__PURE__ */ external_react_default().createElement("div", { className: "loading-bar" }), /* @__PURE__ */ external_react_default().createElement("div", { className: "loading-bar" })); - return withbackground ? /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-loading__wrapper" }, loader) : loader; -} -Loader.propTypes = { - /** add a class to loader */ - className: (external_prop_types_default()).string, - /** position of loader (absolute / relative) */ - position: (external_prop_types_default()).string, - /** defines weather loader should be renders with or without background */ - withbackground: (external_prop_types_default()).bool -}; -/* harmony default export */ const components_Loader = (Loader); - -;// CONCATENATED MODULE: ./src/components/Message/index.js - - - -function Message({ - children, - theme, - onClose, - noMargin, - className -}) { - function getCssClasses() { - return [ - "tyk-message", - `tyk-message--${theme || "info"}`, - noMargin && "no-margin", - className - ].filter(Boolean).join(" "); - } - const iconType = theme === "success" ? "check" : "warning"; - return /* @__PURE__ */ external_react_default().createElement("div", { className: getCssClasses() }, /* @__PURE__ */ external_react_default().createElement(components_Icon, { family: "tykon", type: iconType }), /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-message__content" }, children), onClose && /* @__PURE__ */ external_react_default().createElement(components_Icon, { family: "tykon", type: "x", onClick: onClose })); -} -Message.propTypes = { - /** Set theme for message (eg. default, success, danger, etc) */ - theme: (external_prop_types_default()).string, - children: external_prop_types_default().oneOfType([ - (external_prop_types_default()).element, - (external_prop_types_default()).node, - (external_prop_types_default()).string - ]), - /** add a class to loader */ - className: (external_prop_types_default()).string, - /** Removes margins by adding `no-margin` class */ - noMargin: (external_prop_types_default()).bool, - /** Callback for clicking on the "x" */ - onClose: (external_prop_types_default()).func -}; -/* harmony default export */ const components_Message = (Message); - -;// CONCATENATED MODULE: ./src/components/Chart/maps/world.json -const world_namespaceObject = JSON.parse('{"type":"FeatureCollection","crs":{"type":"name","properties":{"name":"urn:ogc:def:crs:OGC:1.3:CRS84"}},"features":[{"geometry":{"type":"Polygon","coordinates":[[[47.97822265625001,7.9970703125],[46.97822265625001,7.9970703125],[43.98378906250002,9.008837890624989],[43.482519531250006,9.379492187499991],[43.181640625,9.879980468749991],[42.84160156250002,10.203076171874997],[42.65644531250001,10.6],[42.92275390625002,10.999316406249989],[43.24599609375002,11.499804687499989],[43.85273437500001,10.784277343749991],[44.38652343750002,10.430224609374989],[44.94296875,10.43671875],[45.81669921875002,10.835888671874997],[46.565039062500006,10.745996093749994],[47.40498046875001,11.174023437499997],[48.01923828125001,11.139355468749997],[48.57255859375002,11.320507812499997],[48.938574218750006,11.258447265624994],[50.11005859375001,11.529296875],[50.79228515625002,11.983691406249989],[51.2548828125,11.830712890624994],[51.08427734375002,11.335644531249997],[51.140625,10.656884765624994],[51.031835937500006,10.444775390624997],[51.19296875,10.554638671874997],[51.390234375,10.422607421875],[50.93007812500002,10.33554687499999],[50.825,9.428173828124997],[50.10283203125002,8.199804687499991],[49.85205078125,7.962548828124994],[49.234960937500006,6.77734375],[49.04931640625,6.173632812499989],[47.97529296875001,4.497021484374997],[46.87880859375002,3.28564453125],[46.05117187500002,2.475146484374989],[44.92021484375002,1.81015625],[43.71757812500002,0.857861328124997],[41.97988281250002,-0.973046875],[41.53271484375,-1.6953125],[41.521875,-1.572265625],[41.42695312500001,-1.449511718750003],[41.24980468750002,-1.220507812500003],[40.97871093750001,-0.870312500000011],[40.964453125,2.814648437499997],[41.341796875,3.20166015625],[41.61347656250001,3.590478515624994],[41.88398437500001,3.977734375],[41.91533203125002,4.031298828124989],[42.02412109375001,4.137939453125],[42.85664062500001,4.32421875],[43.12568359375001,4.644482421874997],[43.58349609375,4.85498046875],[43.988867187500006,4.950537109374991],[44.940527343750006,4.912011718749994],[47.97822265625001,7.9970703125]]]},"properties":{"name":"Somalia","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[9.579979133936737,47.05856388629306],[9.409458596647225,47.02019676540292],[9.46249431093294,47.09010747968864],[9.46249431093294,47.19858962254578],[9.527658197470123,47.27026989773668],[9.579979133936737,47.05856388629306]]]},"properties":{"name":"Liechtenstein","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-8.683349609375,27.77800740805682],[-13.038761787013554,27.81190166624856],[-12.948925781249926,27.914160156250034],[-11.552685546874955,28.31010742187496],[-10.486474609374994,29.06494140625],[-10.200585937499994,29.380371093750057],[-9.667089843749949,30.10927734375005],[-9.652929687499977,30.447558593750045],[-9.875488281249943,30.717919921874966],[-9.80869140624992,31.42460937499996],[-9.347460937499932,32.086376953124955],[-9.245849609375,32.572460937499955],[-8.512841796874994,33.25244140625003],[-6.900976562499949,33.96904296874999],[-6.353125,34.77607421875001],[-5.924804687499943,35.78579101562502],[-5.277832031249943,35.90273437500002],[-5.252685546874972,35.61474609374997],[-4.628320312499966,35.206396484375006],[-4.329980468749937,35.161474609375006],[-3.693261718749994,35.27998046874998],[-3.394726562499926,35.21181640625005],[-2.972216796874989,35.40727539062499],[-2.839941406249949,35.127832031249994],[-2.731396484374955,35.13520507812498],[-2.636816406249977,35.11269531250002],[-2.423730468749994,35.12348632812498],[-2.219628906249966,35.10419921874998],[-1.795605468749926,34.751904296874955],[-1.67919921875,33.31865234375002],[-1.550732421874955,33.073583984375006],[-1.510009765625,32.877636718749955],[-1.45,32.784814453124966],[-1.352148437499977,32.70336914062497],[-1.29638671875,32.67568359375002],[-1.188232421875,32.608496093750006],[-1.111035156249983,32.55229492187502],[-1.065527343749949,32.46831054687496],[-1.16259765625,32.399169921875],[-1.275341796874983,32.089013671874966],[-2.863427734374937,32.07470703124997],[-2.930859374999926,32.04252929687499],[-2.988232421874983,31.874218749999983],[-3.01738281249996,31.834277343750017],[-3.439794921874949,31.704541015624983],[-3.604589843749949,31.686767578125],[-3.700244140624989,31.70009765625005],[-3.768164062499977,31.689550781250034],[-3.837109374999983,31.512353515624994],[-3.833398437499937,31.197802734375045],[-3.626904296874955,31.000927734374983],[-4.148779296874977,30.8095703125],[-4.322851562500006,30.698876953124994],[-4.52915039062492,30.62553710937499],[-4.778515624999926,30.552392578124994],[-4.968261718749943,30.465380859375045],[-5.061914062499937,30.326416015625057],[-5.180126953124955,30.166162109374994],[-5.293652343749983,30.058642578125045],[-5.44877929687496,29.956933593750023],[-6.00429687499999,29.83125],[-6.479736328124943,29.82036132812499],[-6.520556640624989,29.659863281249983],[-6.59775390624992,29.578955078125006],[-6.635351562499949,29.568798828124983],[-6.755126953125,29.583837890625034],[-6.855566406249949,29.601611328125017],[-7.142431640624949,29.61958007812504],[-7.427685546874983,29.425],[-7.485742187499994,29.392236328124994],[-8.659912109375,28.718603515625063],[-8.683349609375,27.900390625],[-8.683349609375,27.77800740805682]]]},"properties":{"name":"Morocco","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-13.038761787013554,27.81190166624856],[-8.683349609375,27.77800740805682],[-8.683349609375,27.65644531250004],[-8.817822265624955,27.65644531250004],[-8.817822265624951,27.656445312499997],[-8.683349609375,27.656445312499997],[-8.683349609375,27.2859375],[-8.682861328125,26.921337890624997],[-8.6826171875,26.72314453125],[-8.682324218749983,26.497705078124994],[-8.68212890625,26.273193359375],[-8.68212890625,26.10947265625],[-8.682226562499977,25.995507812499994],[-12.016308593749983,25.995410156250003],[-12.016308593749983,25.740136718749994],[-12.016308593749983,25.331689453124994],[-12.016308593749983,25.059375],[-12.016308593749983,24.923242187499994],[-12.016308593749983,24.378662109375],[-12.016308593749983,23.97021484375],[-12.0234375,23.467578125],[-12.372900390624977,23.318017578124994],[-12.559375,23.290820312500003],[-12.620410156249989,23.27133789062499],[-13.031494140625,23.000244140625],[-13.153271484374983,22.820507812499997],[-13.12702845982141,22.703770926339278],[-13.136540684091575,22.708182548616723],[-13.094335937499977,22.495996093749994],[-13.051220703124983,21.854785156250003],[-13.041748046875,21.713818359374997],[-13.0322265625,21.572070312500003],[-13.025097656249983,21.466796875],[-13.016210937499977,21.333935546874997],[-15.231201171875,21.331298828125],[-16.964550781249983,21.329248046874994],[-17.06396484375,20.89882812499999],[-17.048046874999983,20.80615234375],[-17.098779296874994,20.856884765624997],[-16.930859374999983,21.9],[-16.35874023437495,22.594531250000045],[-16.21025390624999,23.097900390625],[-15.789257812499926,23.792871093750023],[-15.980712890624943,23.670312500000023],[-15.899316406249966,23.844433593749955],[-14.904296875000028,24.719775390625017],[-14.794921874999943,25.404150390625006],[-14.413867187499932,26.25371093749999],[-13.57578125,26.735107421875],[-13.175976562499983,27.655712890624983],[-13.038761787013554,27.81190166624856]],[[-8.774365234374983,27.460546875],[-8.794873046874983,27.120703125000034],[-8.794873046874983,27.120703125],[-8.774365234374983,27.460546875]]]},"properties":{"name":"W. Sahara","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[21.5625,42.247509765625],[21.560839843750017,42.24765625],[21.389550781250023,42.21982421875],[21.28662109375,42.100390625],[21.05976562500001,42.171289062499994],[20.778125,42.071044921875],[20.725,41.87353515625],[20.566210937500017,41.873681640624994],[20.485449218750006,42.223388671875],[20.06396484375,42.54726562499999],[20.054296875,42.760058593749996],[20.344335937500006,42.827929687499996],[20.40996305279786,42.84373166741877],[20.344335937500063,42.82792968750002],[19.670996093750006,43.163964843749994],[19.21875,43.449951171875],[19.196484375000068,43.48500976562502],[19.19160156250004,43.52104492187499],[19.19433593749997,43.533300781250006],[19.495117187500057,43.642871093750045],[19.245019531249994,43.96503906250004],[19.583789062500017,44.04345703125003],[19.118457031250074,44.359960937500006],[19.348632812500057,44.88090820312502],[19.007128906250045,44.86918945312502],[19.062890625000023,45.13720703125],[19.4,45.2125],[19.004687500000074,45.39951171875006],[19.064257812500045,45.51499023437506],[18.839062499999983,45.83574218750002],[18.905371093750006,45.931738281250034],[19.421289062500023,46.064453125],[19.61347656250001,46.169189453125],[19.84443359375001,46.145898437499966],[19.934082031250057,46.161474609375034],[20.161425781250017,46.14189453124996],[20.210156250000068,46.12602539062502],[20.241796875000034,46.10859375000001],[20.301367187500006,46.05068359375002],[20.35859375000004,45.975488281249994],[20.581152343749977,45.86948242187506],[20.65273437499999,45.779394531250006],[20.709277343750074,45.735253906249994],[20.727832031250017,45.73740234374998],[20.746875,45.74897460937501],[20.76015625000005,45.75810546875002],[20.775,45.74980468750002],[20.794042968750006,45.467871093750034],[21.431445312500017,45.192529296874994],[21.465429687500006,45.171875],[21.357031250000034,44.99077148437502],[21.532324218750063,44.900683593750045],[21.519921875000023,44.88081054687498],[21.442187500000074,44.87338867187498],[21.384375,44.87006835937501],[21.357910156250057,44.86181640625003],[21.36005859375004,44.82666015624997],[21.52314453125004,44.79008789062499],[21.63613281250005,44.71044921875],[21.909277343750034,44.666113281250034],[22.026953125,44.61987304687503],[22.093066406250074,44.541943359374955],[22.200976562500017,44.560693359374966],[22.350683593750063,44.676123046875034],[22.497656249999977,44.70625],[22.64208984375,44.65097656249998],[22.720898437499983,44.605517578125045],[22.734375,44.56992187499998],[22.700781250000063,44.55551757812498],[22.620117187500057,44.562353515625034],[22.554003906250017,44.54033203124999],[22.49453125000005,44.43544921875002],[22.687890625000023,44.248291015625],[22.42080078125005,44.00742187500006],[22.399023437500063,43.96953125],[22.36542968750004,43.86210937500002],[22.36962890625003,43.78129882812499],[22.55458984375005,43.45449218750002],[22.767578125,43.35415039062502],[22.81972656250005,43.300732421874955],[22.85957031250001,43.252343749999966],[22.97685546874999,43.18798828125],[22.799902343750006,42.985742187499994],[22.706152343750006,42.88393554687505],[22.466796875,42.842480468749955],[22.53242187500004,42.48120117187497],[22.523535156250006,42.440966796875045],[22.44570312500005,42.35913085937497],[22.42207031250004,42.32885742187503],[22.344042968750045,42.31396484375003],[22.23974609375003,42.303110028468716],[21.81464843750001,42.303125],[21.5625,42.24750976562498],[21.5625,42.247509765625]]]},"properties":{"name":"Serbia","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[74.54140625000002,37.02216796875],[74.03886718750002,36.825732421874996],[73.116796875,36.868554687499994],[72.24980468750002,36.734716796875],[71.23291015625,36.12177734375],[71.18505859375,36.04208984375],[71.57197265625001,35.546826171875],[71.62050781250002,35.183007812499994],[70.965625,34.53037109375],[71.095703125,34.369433593749996],[71.05156250000002,34.049707031249994],[70.65400390625001,33.952294921874994],[69.8896484375,34.007275390625],[70.26113281250002,33.289013671875],[69.5015625,33.020068359374996],[69.24140625000001,32.433544921875],[69.279296875,31.936816406249996],[68.86894531250002,31.634228515624997],[68.59765625,31.802978515625],[68.16103515625002,31.802978515625],[67.57822265625,31.506494140624994],[67.737890625,31.343945312499997],[67.45283203125001,31.234619140625],[66.82929687500001,31.263671875],[66.346875,30.802783203124996],[66.23125,29.86572265625],[65.09550781250002,29.559472656249994],[64.39375,29.544335937499994],[64.09873046875,29.391943359375],[63.56757812500001,29.497998046874997],[62.4765625,29.408349609374994],[62.0009765625,29.530419921874994],[61.22441406250002,29.749414062499994],[60.843359375,29.858691406249996],[61.331640625,30.363720703124997],[61.55947265625002,30.599365234375],[61.7841796875,30.831933593749994],[61.81083984375002,30.91328125],[61.81425781250002,31.072558593749996],[61.75507812500001,31.285302734374994],[61.66015625,31.382421875],[61.34648437500002,31.421630859375],[61.11074218750002,31.451123046874997],[60.854101562500006,31.483251953125],[60.82070312500002,31.495166015624996],[60.791601562500006,31.660595703124997],[60.804296875,31.73447265625],[60.7875,31.877197265625],[60.78994140625002,31.987109375],[60.827246093750006,32.16796875],[60.82929687500001,32.249414062499994],[60.71044921875,32.6],[60.57656250000002,32.994873046875],[60.560546875,33.137841796874994],[60.9169921875,33.505224609375],[60.573828125,33.588330078125],[60.4859375,33.7119140625],[60.48574218750002,34.094775390624996],[60.642675781250006,34.307177734374996],[60.88945312500002,34.31943359375],[60.80390625000001,34.418017578124996],[60.76259765625002,34.475244140624994],[60.73613281250002,34.491796875],[60.72626953125001,34.51826171875],[60.73945312500001,34.544726562499996],[60.80234375,34.554638671875],[60.8453125,34.587695312499996],[60.91474609375001,34.633984375],[60.951171875,34.653857421874996],[61.080078125,34.855615234374994],[61.1,35.272314453125],[61.18925781250002,35.31201171875],[61.24550781250002,35.474072265625],[61.27851562500001,35.51376953125],[61.281835937500006,35.55341796875],[61.26201171875002,35.619580078125],[61.3447265625,35.6294921875],[61.62099609375002,35.43232421875],[62.08964843750002,35.3796875],[62.30781250000001,35.170800781249994],[62.688085937500006,35.255322265625],[63.056640625,35.44580078125],[63.08417968750001,35.56806640625],[63.16972656250002,35.678125],[63.129980468750006,35.84619140625],[63.8625,36.012353515624994],[64.184375,36.14892578125],[64.51103515625002,36.340673828125],[64.56582031250002,36.427587890625],[64.6025390625,36.554541015625],[64.78242187500001,37.05927734375],[64.81630859375002,37.132080078125],[64.95156250000002,37.1935546875],[65.08964843750002,37.237939453124994],[65.30361328125002,37.24677734375],[65.55498046875002,37.251171875],[65.76503906250002,37.569140625],[66.471875,37.3447265625],[66.52226562500002,37.348486328125],[66.827734375,37.3712890625],[67.06884765625,37.334814453125],[67.19550781250001,37.235205078125],[67.31972656250002,37.2095703125],[67.44169921875002,37.2580078125],[67.51728515625001,37.266650390624996],[67.546484375,37.235644531249996],[67.607421875,37.222509765625],[67.7,37.22724609375],[67.7529296875,37.1998046875],[67.75898437500001,37.172216796875],[67.76601562500002,37.14013671875],[67.83447265625,37.064208984375],[67.9580078125,36.972021484375],[68.06777343750002,36.9498046875],[68.26093750000001,37.013085937499994],[68.284765625,37.036328125],[68.29951171875001,37.088427734374996],[68.38691406250001,37.1375],[68.66914062500001,37.2583984375],[68.7232421875,37.268017578125],[68.78203125000002,37.2580078125],[68.82373046875,37.270703125],[68.8384765625,37.30283203125],[68.85537109375002,37.316845703125],[68.88525390625,37.328076171875],[68.91181640625001,37.333935546875],[68.96044921875,37.325048828125],[69.18017578125,37.15830078125],[69.26484375000001,37.1083984375],[69.30390625000001,37.116943359375],[69.35380859375002,37.150048828124994],[69.41445312500002,37.207763671875],[69.4296875,37.290869140625],[69.39921875000002,37.399316406249994],[69.42011718750001,37.48671875],[69.49208984375002,37.553076171875],[69.62578125000002,37.594042968749996],[69.8208984375,37.6095703125],[69.9849609375,37.566162109375],[70.18867187500001,37.582470703125],[70.25146484375,37.66416015625],[70.25498046875,37.765380859375],[70.19941406250001,37.886035156249996],[70.21464843750002,37.9244140625],[70.41777343750002,38.075439453125],[70.7359375,38.42255859375],[71.255859375,38.306982421875],[71.33271484375001,38.170263671875],[71.27851562500001,37.918408203125],[71.319921875,37.90185546875],[71.3896484375,37.906298828124996],[71.48779296875,37.931884765625],[71.55195312500001,37.933154296874996],[71.58222656250001,37.910107421875],[71.43291015625002,37.1275390625],[71.530859375,36.845117187499994],[71.665625,36.696923828124994],[72.65742187500001,37.029052734375],[72.8955078125,37.267529296875],[73.21113281250001,37.408496093749996],[73.38291015625,37.462255859375],[73.48134765625002,37.4716796875],[73.60468750000001,37.446044921875],[73.65712890625002,37.43046875],[73.72060546875002,37.41875],[73.73378906250002,37.37578125],[73.71728515625,37.329443359375],[73.6275390625,37.261572265625],[73.65351562500001,37.23935546875],[73.749609375,37.231787109375],[74.16708984375,37.329443359375],[74.20351562500002,37.372460937499994],[74.25966796875002,37.415429687499994],[74.659375,37.394482421875],[74.73056640625,37.35703125],[74.83046875000002,37.2859375],[74.89130859375001,37.231640625],[74.84023437500002,37.225048828125],[74.76738281250002,37.249169921874994],[74.73896484375001,37.28564453125],[74.72666015625,37.29072265625],[74.6689453125,37.26669921875],[74.55898437500002,37.236621093749996],[74.37216796875,37.15771484375],[74.37617187500001,37.137353515624994],[74.49794921875002,37.0572265625],[74.52646484375,37.030664062499994],[74.54140625000002,37.02216796875]]]},"properties":{"name":"Afghanistan","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[17.57958984375,-8.099023437500009],[17.643359375000017,-8.090722656250009],[18.00878906250003,-8.107617187499983],[18.56269531250001,-7.9359375],[18.944433593750063,-8.001464843750028],[19.142675781250034,-8.001464843750028],[19.34082031249997,-7.966601562500031],[19.369921875000045,-7.706542968749986],[19.371679687500063,-7.655078124999989],[19.47988281250008,-7.472167968750028],[19.48378906250008,-7.279492187500026],[19.527636718750017,-7.144433593749952],[19.87519531250004,-6.986328124999986],[19.99746093750008,-6.976464843750023],[20.190039062500063,-6.9462890625],[20.482226562500074,-6.915820312500017],[20.59003906250001,-6.919921874999957],[20.598730468750006,-6.935156249999949],[20.536914062500045,-7.121777343749955],[20.535839843749983,-7.182812499999955],[20.558398437500045,-7.244433593749989],[20.60781250000008,-7.277734375000023],[20.910937500000017,-7.281445312499983],[21.190332031250023,-7.284960937499989],[21.751074218750034,-7.305468749999989],[21.80605468750005,-7.32861328125],[21.905371093750034,-8.693359374999943],[21.813183593750068,-9.46875],[22.19775390625,-10.040625],[22.30703125000005,-10.691308593750023],[22.203515625000023,-10.829492187500009],[22.226171875,-11.121972656250009],[22.27880859375,-11.19414062499996],[22.314941406250057,-11.198632812499994],[22.39296875000005,-11.159472656250003],[22.486132812500045,-11.086718750000017],[22.56103515625003,-11.05585937500004],[22.814746093750017,-11.08027343750004],[23.076269531250006,-11.087890624999986],[23.463964843750034,-10.969335937499991],[23.83388671875008,-11.013671874999972],[23.96650390625001,-10.871777343750011],[23.98388671875,-11.725],[23.909375,-12.636132812500009],[23.886523437500045,-12.743261718749991],[23.882421875,-12.799023437499983],[23.968066406250045,-12.956933593749994],[23.962988281250006,-12.988476562500026],[23.843164062500023,-13.0009765625],[22.209570312500006,-13.0009765625],[21.97890625000008,-13.0009765625],[21.979101562500034,-13.798730468749994],[21.979296875000074,-14.11962890625],[21.979394531249994,-14.440527343750006],[21.97978515624999,-15.955566406250014],[22.193945312500006,-16.628125],[23.380664062500017,-17.640625],[22.32421875,-17.8375],[20.74550781250008,-18.019726562499983],[20.194335937500057,-17.86367187499999],[18.95527343750004,-17.80351562499999],[18.39638671875005,-17.3994140625],[16.14843750000003,-17.39023437499999],[14.017480468750023,-17.40888671874997],[13.475976562500023,-17.04003906249997],[13.179492187500017,-16.971679687499986],[12.548144531250017,-17.212695312499974],[12.35927734375008,-17.205859375],[12.318457031250006,-17.21337890625003],[12.213378906250028,-17.209960937500043],[12.013964843750074,-17.168554687500034],[11.902539062500011,-17.226562499999957],[11.743066406250023,-17.24921875000004],[11.780078125000017,-16.87128906249997],[11.818945312500034,-16.704101562500014],[11.750878906250023,-15.831933593749966],[12.016113281250057,-15.513671874999957],[12.55048828125004,-13.437792968750003],[12.983203124999989,-12.775683593750017],[13.4169921875,-12.52041015624998],[13.597949218750017,-12.286132812500028],[13.785351562499983,-11.81279296874996],[13.833593750000063,-10.9296875],[13.33222656250004,-9.998925781250009],[12.99853515625,-9.048046875],[13.358984375,-8.687207031250026],[13.378515625000063,-8.369726562500006],[12.82343750000004,-6.954785156249955],[12.283300781250063,-6.12431640624996],[13.184375,-5.85625],[13.346484375000017,-5.863378906250006],[13.978515625,-5.857226562500003],[16.315234375000074,-5.865625],[16.431445312500045,-5.90019531249996],[16.53710937499997,-5.9658203125],[16.697265625,-6.164257812500026],[16.74296874999999,-6.618457031250003],[16.813085937500063,-6.772558593749963],[16.919433593750057,-6.93398437499998],[16.98476562500005,-7.257421874999977],[17.57958984375,-8.099023437500009]]],[[[12.50146484375,-4.5875],[12.848144531250028,-4.428906249999983],[12.881054687500068,-4.445117187499989],[12.971386718750068,-4.551757812499957],[13.048046875000068,-4.619238281250034],[13.072753906250028,-4.634765625],[13.057324218750011,-4.651074218750026],[12.947460937500011,-4.695312499999986],[12.829687499999977,-4.73662109374996],[12.451464843750017,-5.071484374999969],[12.453222656250034,-5.090625],[12.52236328125008,-5.148925781250028],[12.484570312500011,-5.71875],[12.213671875000074,-5.758691406249994],[12.177148437499994,-5.324804687499977],[12.018359375000074,-5.004296874999966],[12.50146484375,-4.5875]]]]},"properties":{"name":"Angola","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[20.06396484375,42.54726562499999],[20.485449218750006,42.223388671875],[20.566210937500017,41.873681640624994],[20.48896484375001,41.272607421874994],[20.709277343750017,40.928369140624994],[20.964257812500023,40.849902343749996],[20.95576171875001,40.775292968749994],[21.030859375,40.622460937499994],[20.881640625000017,40.467919921874994],[20.65742187500001,40.1173828125],[20.4560546875,40.065576171874994],[20.408007812500017,40.049462890624994],[20.383691406250023,40.0171875],[20.338476562500006,39.991064453125],[20.311132812500006,39.979443359375],[20.311328125000017,39.95078125],[20.381640625000017,39.841796875],[20.382421875,39.802636718749994],[20.206835937500017,39.653515625],[20.13105468750001,39.66162109375],[20.05976562500001,39.699121093749994],[20.022558593750006,39.710693359375],[20.001269531250017,39.709423828125],[19.851855468750017,40.0435546875],[19.322265625,40.407080078125],[19.45917968750001,40.40537109375],[19.3375,40.663818359375],[19.57568359375,41.640429687499996],[19.577539062500023,41.7875],[19.342382812500006,41.869091796875],[19.280664062500023,42.17255859375],[19.65449218750001,42.628564453124994],[19.78828125000001,42.476171875],[20.06396484375,42.54726562499999]]]},"properties":{"name":"Albania","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[19.66230468750001,60.187158203124994],[19.53652343750005,60.14497070312501],[19.551367187500063,60.24384765625001],[19.66230468750001,60.187158203124994]]],[[[19.989550781250074,60.351171875],[20.258886718750063,60.26127929687499],[19.799804687500057,60.08173828125001],[19.68691406250005,60.267626953125045],[19.84765625000003,60.22055664062506],[19.823046875000074,60.390185546875045],[19.989550781250074,60.351171875]]]]},"properties":{"name":"Aland","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[1.7060546875,42.503320312499994],[1.534082031250023,42.441699218749996],[1.448828125,42.437451171875],[1.428125,42.46132812499999],[1.414843750000017,42.548388671874996],[1.428320312500006,42.5958984375],[1.501367187500023,42.642724609374994],[1.568164062500017,42.635009765625],[1.709863281250023,42.604443359375],[1.739453125000011,42.575927734375],[1.740234375,42.55673828125],[1.713964843750006,42.525634765625],[1.7060546875,42.503320312499994]]]},"properties":{"name":"Andorra","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[53.927832031250006,24.177197265624983],[53.63447265625004,24.169775390624977],[53.83378906250002,24.258935546875023],[53.927832031250006,24.177197265624983]]],[[[53.3322265625001,24.258593750000045],[53.19091796874997,24.290917968749966],[53.412402343750074,24.411035156250023],[53.3322265625001,24.258593750000045]]],[[[56.29785156250003,25.650683593750045],[56.38798828125002,24.97919921875004],[56.06386718750005,24.73876953125],[56.00058593750006,24.953222656249977],[55.795703125000074,24.868115234374955],[55.76083984375006,24.24267578125],[55.92861328125005,24.215136718750074],[55.98515625000002,24.063378906249966],[55.4684570312501,23.94111328125001],[55.53164062499999,23.81904296875001],[55.1999023437501,23.034765625000034],[55.185839843750074,22.7041015625],[55.104296875000074,22.621484375000023],[52.55507812500005,22.932812499999955],[51.592578125000074,24.07885742187503],[51.56835937500003,24.286181640625074],[51.76757812500003,24.25439453125],[51.84316406250005,24.010888671875023],[52.118554687499994,23.97109375],[52.64824218750002,24.154638671875006],[53.80175781249997,24.069482421874966],[54.14794921875003,24.17119140624999],[54.39707031250006,24.278173828125034],[54.74677734375004,24.810449218750023],[55.94121093750002,25.793994140625017],[56.08046875,26.06264648437505],[56.16748046875003,26.047460937499977],[56.144628906250006,25.690527343750006],[56.29785156250003,25.650683593750045]]]]},"properties":{"name":"United Arab Emirates","childNum":3}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-64.54916992187498,-54.71621093749998],[-63.81542968749997,-54.725097656250014],[-64.637353515625,-54.90253906250001],[-64.75732421875,-54.82656249999999],[-64.54916992187498,-54.71621093749998]]],[[[-68.65322265624994,-54.85361328124999],[-68.62993164062499,-52.65263671875004],[-68.24013671875,-53.08183593749999],[-68.43115234375,-53.0552734375],[-68.48852539062497,-53.260937499999976],[-68.16113281249997,-53.30644531250001],[-68.00849609374995,-53.5640625],[-67.29423828125002,-54.049804687500014],[-66.23564453124999,-54.53349609374997],[-65.17900390624993,-54.678125],[-65.47114257812495,-54.91464843749999],[-66.5111328125,-55.032128906249945],[-67.127099609375,-54.90380859375001],[-68.65322265624994,-54.85361328124999]]],[[[-61.084716796875,-23.65644531250001],[-60.83984375000003,-23.85810546874997],[-59.89248046874994,-24.093554687499974],[-59.18725585937497,-24.56230468749999],[-57.82167968749994,-25.136425781249983],[-57.56313476562494,-25.473730468749963],[-57.943115234375,-26.05292968750001],[-58.18149414062498,-26.30742187499999],[-58.222070312499994,-26.65],[-58.618603515624955,-27.13212890624996],[-58.64174804687494,-27.196093750000017],[-58.60483398437498,-27.314355468750037],[-58.16826171874993,-27.27343749999997],[-56.437158203124966,-27.553808593749977],[-56.16406250000003,-27.321484374999983],[-55.95146484374996,-27.325683593749957],[-55.789990234374926,-27.416406249999966],[-55.71464843749996,-27.41484375],[-55.632910156250006,-27.35712890624997],[-55.59379882812502,-27.288085937500014],[-55.597265625,-27.207617187499963],[-55.56489257812498,-27.15],[-55.496728515624966,-27.11533203124999],[-55.45063476562498,-27.068359375000014],[-55.426660156249994,-27.00927734374997],[-55.13593750000001,-26.931152343749957],[-54.934472656249994,-26.70253906250001],[-54.677734375,-26.308789062499997],[-54.631933593750006,-26.005761718749994],[-54.615869140624994,-25.576074218750023],[-54.44394531249998,-25.625],[-54.15458984374999,-25.523046874999963],[-53.89116210937499,-25.66884765625001],[-53.668554687500006,-26.288183593749977],[-53.83818359375002,-27.121093750000014],[-54.32700195312495,-27.423535156249997],[-54.82910156250003,-27.55058593750003],[-55.10151367187501,-27.866796874999963],[-55.72548828125002,-28.20410156250003],[-55.68725585937497,-28.38164062499996],[-55.890527343749994,-28.370019531249994],[-56.938623046874994,-29.594824218750034],[-57.22465820312499,-29.782128906249994],[-57.40522460937501,-30.03388671875004],[-57.563867187499994,-30.139941406249974],[-57.60888671875003,-30.187792968750045],[-57.65087890624997,-30.295019531250034],[-57.71269531249996,-30.38447265624997],[-57.83120117187502,-30.495214843749963],[-57.87250976562501,-30.591015625000026],[-57.81059570312499,-30.85859375000001],[-57.88632812499998,-30.937402343749994],[-57.86840820312497,-31.104394531249994],[-57.89335937499999,-31.195312499999957],[-58.03339843750001,-31.416601562500006],[-58.053857421874994,-31.494921874999974],[-58.009667968749966,-31.534375],[-57.98798828124998,-31.576171875],[-58.00698242187494,-31.684960937499966],[-58.04233398437495,-31.769238281249997],[-58.16748046874997,-31.87265625],[-58.18901367187499,-31.924218750000037],[-58.16040039062503,-31.986523437500026],[-58.156347656250006,-32.0515625],[-58.17700195312494,-32.11904296875002],[-58.16479492187494,-32.18486328125002],[-58.119726562500006,-32.24892578125002],[-58.12304687499997,-32.321875],[-58.201171875,-32.471679687500014],[-58.219970703125,-32.563964843749986],[-58.17099609374998,-32.95927734374996],[-58.424462890624994,-33.11152343749998],[-58.54721679687498,-33.66347656249998],[-58.392480468749966,-34.192968750000034],[-58.52548828124998,-34.29619140625002],[-58.28334960937494,-34.68349609375005],[-57.54785156250003,-35.018945312499994],[-57.170654296875,-35.3625],[-57.35390624999994,-35.72031249999998],[-57.33544921875,-36.026757812499966],[-57.07617187499994,-36.296777343749994],[-56.74946289062501,-36.346484375],[-56.67202148437494,-36.85126953124998],[-57.546972656250034,-38.085644531250026],[-58.17919921874994,-38.435839843750045],[-59.82832031250001,-38.83818359375003],[-61.112207031249994,-38.99296875000003],[-61.84790039062497,-38.961816406249994],[-62.33476562499993,-38.80009765625],[-62.29506835937502,-39.24326171874996],[-62.053662109374955,-39.373828125],[-62.179345703124994,-39.38046875000002],[-62.076806640624966,-39.46152343750002],[-62.131542968749926,-39.82539062499998],[-62.28691406249996,-39.89531250000002],[-62.40185546875003,-40.19658203125002],[-62.24633789062494,-40.674609374999974],[-62.39501953124997,-40.89082031249997],[-62.95903320312493,-41.10966796875006],[-63.621777343749955,-41.15976562499996],[-64.86948242187503,-40.735839843750014],[-65.13339843749998,-40.88066406250003],[-64.98637695312496,-42.102050781249986],[-64.53774414062494,-42.25458984374998],[-64.57099609374998,-42.416015625],[-64.42041015625003,-42.43378906249998],[-64.10087890624993,-42.395117187500006],[-64.06118164062494,-42.266113281250014],[-64.228515625,-42.21826171874996],[-63.795556640624994,-42.113867187500006],[-63.6298828125,-42.28271484375003],[-63.61733398437502,-42.695800781249986],[-64.03476562499998,-42.88125],[-64.48784179687499,-42.51347656250006],[-64.97070312499997,-42.66630859375002],[-65.02690429687496,-42.75888671874996],[-64.31914062499999,-42.968945312500026],[-64.83994140624998,-43.18886718749998],[-65.25234374999997,-43.571875],[-65.26552734375,-44.2796875],[-65.64760742187502,-44.661425781250045],[-65.63876953125,-45.0078125],[-66.19013671874995,-44.96474609375002],[-66.94140625,-45.25732421875003],[-67.59956054687495,-46.05253906250003],[-67.5064453125,-46.44277343749995],[-66.77685546874994,-47.005859375],[-65.99853515625,-47.09375],[-65.73808593749999,-47.34492187499998],[-65.81430664062495,-47.63818359374996],[-66.22524414062502,-47.826757812500006],[-65.93422851562497,-47.826757812500006],[-65.81005859374997,-47.941113281250026],[-67.46630859375,-48.95175781250004],[-67.68486328125002,-49.2466796875],[-67.82597656249999,-49.91962890625005],[-68.2572265625,-50.104589843749984],[-68.66757812500003,-49.75253906250003],[-68.66162109374997,-49.93574218750005],[-68.97958984375,-50.003027343749984],[-68.59794921874996,-50.00947265624997],[-68.421875,-50.15791015625001],[-69.04477539062495,-50.49912109374998],[-69.35859374999993,-51.028125],[-69.20102539062498,-50.99365234375001],[-69.03530273437497,-51.48896484375002],[-69.46542968750003,-51.58447265625003],[-68.96533203125003,-51.67714843749999],[-68.443359375,-52.35664062500004],[-69.96025390624993,-52.00820312500002],[-71.91865234374995,-51.98955078125004],[-72.40766601562501,-51.54082031250002],[-72.34023437499997,-50.68183593749999],[-72.50981445312496,-50.607519531250034],[-73.15292968749998,-50.73828125000003],[-73.50126953124996,-50.125292968750024],[-73.55419921875,-49.463867187500014],[-73.46157226562497,-49.31386718750001],[-73.13525390625,-49.30068359374999],[-73.03364257812501,-49.014355468750004],[-72.65126953125,-48.84160156249998],[-72.582861328125,-48.47539062499999],[-72.35473632812497,-48.36582031250005],[-72.32832031250001,-48.11005859374998],[-72.517919921875,-47.87636718749998],[-72.34594726562497,-47.49267578124997],[-71.90498046875001,-47.201660156250014],[-71.94023437499999,-46.83125],[-71.69965820312501,-46.6513671875],[-71.87568359374998,-46.160546875],[-71.63154296874998,-45.95371093749998],[-71.74619140624998,-45.57890625],[-71.34931640624995,-45.33193359374995],[-71.5962890625,-44.97919921875004],[-72.04169921874998,-44.90419921875004],[-72.06372070312503,-44.771875],[-71.26113281250002,-44.763085937499966],[-71.15971679687496,-44.56025390625004],[-71.21259765624998,-44.44121093750003],[-71.82001953124993,-44.38310546875],[-71.68007812500002,-43.92958984374998],[-71.90498046875001,-43.34755859374998],[-71.750634765625,-43.237304687499986],[-72.14643554687498,-42.990039062499974],[-72.10820312499993,-42.25185546874995],[-71.75,-42.04677734375001],[-71.91127929687497,-41.650390624999986],[-71.93212890624994,-40.69169921874999],[-71.70898437499997,-40.381738281249994],[-71.81831054687493,-40.17666015624995],[-71.65976562499998,-40.02080078125],[-71.71992187499995,-39.63525390624997],[-71.53945312499997,-39.60244140624995],[-71.40156249999995,-38.93505859374996],[-70.858642578125,-38.60449218750003],[-71.16757812499998,-37.76230468749996],[-71.19218750000002,-36.84365234375004],[-71.05551757812498,-36.52373046874996],[-70.40478515625,-36.06171874999998],[-70.41572265625001,-35.52304687500002],[-70.55517578125,-35.246875],[-70.39316406250003,-35.146875],[-70.05205078124999,-34.30078124999997],[-69.85244140625,-34.224316406250026],[-69.81962890624999,-33.28378906249999],[-70.08486328125002,-33.20175781249998],[-70.02197265625,-32.88457031250002],[-70.36376953125,-32.08349609374997],[-70.25439453125,-31.957714843750026],[-70.585205078125,-31.569433593749963],[-70.51958007812493,-31.1484375],[-70.30908203124994,-31.02265625000004],[-70.15322265625,-30.360937499999963],[-69.95634765624996,-30.35820312500003],[-69.84428710937493,-30.175],[-69.95996093749997,-30.078320312500026],[-70.02680664062501,-29.324023437500017],[-69.82788085937497,-29.10322265624997],[-69.65693359374995,-28.413574218749986],[-69.17441406249998,-27.924707031250037],[-68.84633789062494,-27.153710937499994],[-68.59208984375002,-27.140039062499966],[-68.31865234374999,-26.973242187500006],[-68.59160156249999,-26.47041015624997],[-68.41450195312498,-26.153710937500023],[-68.59208984375002,-25.420019531250034],[-68.38422851562495,-25.091894531249977],[-68.56201171875,-24.74736328125003],[-68.25029296875002,-24.391992187500023],[-67.35620117187503,-24.033789062499963],[-67.00878906249994,-23.00136718750005],[-67.19487304687493,-22.821679687500037],[-66.99111328125,-22.509863281250006],[-66.71171874999999,-22.216308593749986],[-66.36518554687501,-22.113769531249957],[-66.32246093750001,-22.053125],[-66.28212890624997,-21.94746093750001],[-66.24760742187496,-21.83046875],[-66.22016601562495,-21.802539062499974],[-66.174658203125,-21.805664062499986],[-66.09858398437495,-21.83505859375002],[-66.05859375,-21.87949218750002],[-65.86015624999999,-22.019726562499983],[-65.77104492187493,-22.099609375000014],[-65.68618164062497,-22.11025390625005],[-65.51879882812497,-22.094531250000045],[-64.99262695312498,-22.109667968750017],[-64.60551757812499,-22.228808593750045],[-64.52363281250001,-22.37158203125],[-64.47773437499998,-22.485351562499986],[-64.44550781249998,-22.585351562500023],[-64.37397460937498,-22.761035156250017],[-64.32529296875,-22.82763671875],[-64.30791015624993,-22.7953125],[-64.26640625000002,-22.60332031249996],[-63.97612304687502,-22.072558593750003],[-63.92167968749993,-22.028613281250017],[-62.843359375,-21.997265625000026],[-62.62597656250003,-22.29042968749998],[-62.54155273437496,-22.349609374999957],[-62.37250976562498,-22.439160156249997],[-62.21416015624996,-22.612402343750034],[-61.798535156249955,-23.18203125],[-61.084716796875,-23.65644531250001]]]]},"properties":{"name":"Argentina","childNum":3}},{"geometry":{"type":"Polygon","coordinates":[[[46.490625,38.90668945312498],[46.1144531250001,38.877783203125034],[45.977441406249994,39.24389648437503],[45.76630859375004,39.37846679687499],[45.78447265625002,39.54560546875001],[45.456835937500074,39.494482421875006],[45.15283203125003,39.58266601562502],[45.03164062500005,39.76513671874997],[44.76826171875004,39.70351562500005],[44.28925781250004,40.040380859375006],[43.66621093750004,40.12636718750002],[43.56933593750003,40.48237304687498],[43.72265624999997,40.71953124999999],[43.43945312500003,41.10712890625001],[44.077246093750006,41.182519531249994],[44.81132812500002,41.259375],[45.001367187499994,41.29096679687498],[45.188574218750006,41.14741210937504],[45.07050781250004,41.075585937499966],[45.5875,40.846923828125],[45.37890624999997,40.67358398437506],[45.45439453125002,40.532373046874966],[45.96464843750002,40.233789062499966],[45.8859375000001,40.024853515624955],[45.57978515625004,39.9775390625],[46.202050781249994,39.59448242187503],[46.48144531249997,39.55517578125003],[46.36523437500003,39.402490234374994],[46.584765625000074,39.22368164062499],[46.400292968749994,39.1921875],[46.490625,38.90668945312498]]]},"properties":{"name":"Armenia","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-170.72626953125,-14.351171875],[-170.8205078125,-14.312109375],[-170.568115234375,-14.266796875000011],[-170.72626953125,-14.351171875]]]},"properties":{"name":"American Samoa","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[69.2824218750001,-49.05888671875002],[69.16718750000004,-48.88291015624996],[69.36875,-48.89042968749998],[69.2824218750001,-49.05888671875002]]],[[[69.18486328125002,-49.10957031250004],[69.59277343749997,-48.97099609375005],[69.64404296875003,-49.11738281250003],[69.40507812500002,-49.18173828125],[69.5423828125,-49.25566406250005],[70.32021484375005,-49.05859374999996],[70.55546875000007,-49.201464843750024],[70.38613281250005,-49.433984374999966],[70.16582031250002,-49.34296874999998],[69.75996093750004,-49.430175781249986],[69.98642578125006,-49.58164062500003],[70.2477539062501,-49.53066406250003],[70.12431640625002,-49.70439453124999],[69.153125,-49.5296875],[68.99296875000007,-49.704980468750016],[68.81474609375002,-49.69960937499999],[68.88339843750006,-49.16494140624995],[68.76953125000003,-49.06591796875003],[69.00244140624997,-48.661230468750006],[69.13613281250005,-48.86103515625003],[69.05214843750005,-49.08193359375001],[69.18486328125002,-49.10957031250004]]],[[[51.83457031250006,-46.43994140625],[51.65927734375006,-46.37363281249999],[51.7418945312501,-46.32685546874997],[51.83457031250006,-46.43994140625]]]]},"properties":{"name":"Fr. S. Antarctic Lands","childNum":3}},{"geometry":{"type":"Polygon","coordinates":[[[-61.71606445312503,17.037011718749994],[-61.85966796874996,17.013330078124966],[-61.887109374999966,17.09814453125],[-61.81728515624994,17.168945312500057],[-61.71606445312503,17.037011718749994]]]},"properties":{"name":"Antigua and Barb.","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[147.35605468750006,-43.396972656250014],[147.30888671875007,-43.50078125000002],[147.10498046875003,-43.43115234374996],[147.28388671875004,-43.278906250000034],[147.35605468750006,-43.396972656250014]]],[[[145.04296875000003,-40.78671875],[145.28300781250002,-40.76992187500002],[146.31748046875006,-41.16347656250001],[146.72343750000002,-41.07802734375001],[146.84814453124997,-41.16806640624996],[146.98984375000006,-40.99238281249997],[147.45478515625004,-41.00166015624998],[147.62167968750012,-40.844726562499986],[147.87294921875005,-40.87255859374997],[147.96875,-40.779589843750045],[148.215234375,-40.85488281250002],[148.34257812500007,-42.21533203124997],[148.21367187500002,-41.97001953125],[147.92441406250006,-42.5724609375],[147.94541015625006,-43.18183593749997],[147.7858398437501,-43.22001953125002],[147.69892578125004,-43.12255859374997],[147.64794921874997,-43.02060546874999],[147.8,-42.928125],[147.57382812500006,-42.84570312499997],[147.4523437500001,-43.03339843750001],[147.29794921875006,-42.790917968749994],[147.24501953125005,-43.21591796874999],[146.99697265625005,-43.15634765625002],[147.07734375000004,-43.27587890625003],[146.87392578125,-43.6125],[146.54853515625004,-43.50888671874999],[146.04316406250004,-43.547167968749974],[145.99443359375007,-43.37607421875002],[146.20800781249997,-43.31621093749999],[145.8732421875001,-43.29238281250002],[145.48759765625002,-42.92666015625004],[145.19882812500006,-42.23085937500004],[145.46826171874997,-42.492871093750026],[145.51660156249997,-42.3544921875],[145.33105468750003,-42.14707031250002],[145.23486328124997,-42.19697265624997],[145.23818359375,-42.01962890624999],[144.76611328125003,-41.39003906249998],[144.64609375000006,-40.980859375],[144.71855468750002,-40.67226562500002],[145.04296875000003,-40.78671875]]],[[[148.23691406250006,-40.515136718749986],[148.18779296875007,-40.592578125000045],[148.11728515625012,-40.52148437499996],[148.23691406250006,-40.515136718749986]]],[[[144.784375,-40.506738281249966],[144.74804687499997,-40.589453125000034],[144.7833984375001,-40.434863281249974],[144.784375,-40.506738281249966]]],[[[148.32626953125006,-40.30693359375003],[148.40400390625004,-40.486523437500026],[148.02011718750012,-40.40419921874995],[148.32626953125006,-40.30693359375003]]],[[[148.000390625,-39.75761718750003],[148.29736328125003,-39.985742187499966],[148.31357421875012,-40.173535156250026],[148.10566406250004,-40.26210937499995],[147.76718750000012,-39.87031249999998],[148.000390625,-39.75761718750003]]],[[[143.92792968750004,-40.116113281249966],[143.83857421875004,-39.90410156250003],[144.00078125000007,-39.580175781250034],[144.14101562500005,-39.953808593750026],[143.92792968750004,-40.116113281249966]]],[[[145.31445312500003,-38.49082031249996],[145.35507812500012,-38.55703124999995],[145.12841796875003,-38.52763671875],[145.31445312500003,-38.49082031249996]]],[[[137.59648437500007,-35.73867187499998],[137.92890625000004,-35.72607421875],[138.12343750000005,-35.85234375],[137.67089843749997,-35.897949218750014],[137.44843750000004,-36.07480468749999],[137.20957031250012,-35.982421875],[136.7550781250001,-36.03310546875002],[136.540625,-35.89013671875003],[136.63867187499997,-35.74882812500002],[137.33408203125006,-35.59248046875004],[137.58496093749997,-35.620214843750006],[137.59648437500007,-35.73867187499998]]],[[[153.53876953125004,-27.436425781250037],[153.42656250000002,-27.70644531249998],[153.43544921875,-27.40537109375002],[153.53876953125004,-27.436425781250037]]],[[[113.18300781250005,-26.053125],[112.96425781250005,-25.78310546875001],[112.94707031250002,-25.531542968750017],[113.18300781250005,-26.053125]]],[[[153.07744140625002,-25.75078125],[152.97666015625012,-25.551367187499963],[153.03808593750003,-25.193164062500003],[153.22753906249997,-25.00576171875001],[153.14375,-24.814843750000023],[153.25693359375012,-24.72890625],[153.35019531250012,-25.063085937499963],[153.07744140625002,-25.75078125]]],[[[151.14658203125006,-23.49082031250002],[151.24013671875,-23.529687500000037],[151.23828124999997,-23.77578125],[151.03330078125006,-23.530175781250037],[151.14658203125006,-23.49082031250002]]],[[[115.44619140625005,-20.78779296875001],[115.31806640625004,-20.850585937500014],[115.43457031249997,-20.66796875000003],[115.44619140625005,-20.78779296875001]]],[[[149.04375,-20.29150390624997],[148.93886718750005,-20.283691406249986],[148.98105468750012,-20.153515625000026],[149.04375,-20.29150390624997]]],[[[146.27832031249997,-18.23125],[146.29882812499997,-18.48476562500005],[146.09882812500004,-18.251757812500003],[146.27832031249997,-18.23125]]],[[[139.45917968750004,-17.11455078124996],[139.49277343750006,-16.990429687499983],[139.57089843750006,-17.09443359375004],[139.45917968750004,-17.11455078124996]]],[[[139.50781250000003,-16.57304687499996],[139.1595703125,-16.74169921875003],[139.29296875000003,-16.467285156249986],[139.58789062499997,-16.39521484374997],[139.69775390624997,-16.514941406250017],[139.50781250000003,-16.57304687499996]]],[[[137.09365234375005,-15.778125],[136.94267578125002,-15.711718749999989],[137.00957031250007,-15.594824218749977],[137.09365234375005,-15.778125]]],[[[124.59726562500006,-15.40195312500002],[124.52421875000002,-15.421484375],[124.51933593750002,-15.26748046874998],[124.59726562500006,-15.40195312500002]]],[[[125.19882812500006,-14.57949218749998],[125.0912109375,-14.59169921874998],[125.15996093750002,-14.456054687499972],[125.19882812500006,-14.57949218749998]]],[[[136.71464843750002,-13.803906249999983],[136.89082031250004,-13.786621093750014],[136.74531250000004,-14.072656250000023],[136.95078125000006,-14.184277343750026],[136.89433593750002,-14.293066406249977],[136.33544921875003,-14.211816406250037],[136.42470703125,-13.864843749999963],[136.6556640625,-13.675878906250006],[136.71464843750002,-13.803906249999983]]],[[[136.23740234375006,-13.824511718750003],[136.12265625000012,-13.816601562499983],[136.21542968750012,-13.664746093750054],[136.23740234375006,-13.824511718750003]]],[[[136.33867187500007,-11.602343749999989],[136.18027343750006,-11.676757812499957],[136.47929687500002,-11.465917968749991],[136.33867187500007,-11.602343749999989]]],[[[130.45927734375007,-11.679296875000034],[130.60625,-11.816601562500026],[130.04326171875007,-11.787304687500011],[130.19755859375007,-11.658203125],[130.15283203124997,-11.477539062499972],[130.29492187499997,-11.33681640624998],[130.45927734375007,-11.679296875000034]]],[[[130.6188476562501,-11.376074218749991],[131.02304687500006,-11.334375],[131.26826171875004,-11.18984375],[131.53857421874997,-11.436914062500037],[130.95097656250007,-11.926464843750026],[130.51191406250004,-11.617871093749955],[130.38457031250002,-11.1921875],[130.6188476562501,-11.376074218749991]]],[[[136.59853515625,-11.378906249999943],[136.52656250000004,-11.438867187499994],[136.78027343749997,-11.0125],[136.59853515625,-11.378906249999943]]],[[[132.59335937500006,-11.302832031249991],[132.48378906250005,-11.037304687499983],[132.57880859375004,-10.968847656249977],[132.59335937500006,-11.302832031249991]]],[[[143.17890625000004,-11.954492187499966],[143.11025390625,-12.303515625000017],[143.40156250000004,-12.639941406249989],[143.5866210937501,-13.443652343750031],[143.54843750000012,-13.74101562499996],[143.75634765625003,-14.348828124999969],[143.96181640625005,-14.462890625000028],[144.473046875,-14.231835937500023],[144.64804687500006,-14.492480468750017],[145.28769531250006,-14.943164062499989],[145.42607421875002,-16.406152343749966],[145.75478515625,-16.879492187500034],[145.91210937499997,-16.9125],[146.12587890625005,-17.63525390625],[146.03222656249997,-18.272851562500037],[146.3332031250001,-18.55371093749997],[146.38339843750006,-18.97705078124997],[147.13876953125006,-19.39316406250002],[147.41855468750012,-19.378125],[147.7423828125001,-19.770117187499977],[148.759375,-20.28955078125003],[148.88476562499997,-20.480859375],[148.72998046874997,-20.4677734375],[148.68369140625012,-20.58017578124999],[149.20488281250007,-21.125097656249977],[149.45410156249997,-21.57871093750002],[149.70390625000002,-22.440527343750006],[149.82246093750004,-22.389843749999983],[149.97441406250007,-22.55068359374998],[149.94189453125003,-22.30810546875003],[150.07617187500003,-22.16445312499998],[150.54130859375002,-22.55908203125],[150.56855468750004,-22.38398437500004],[150.67246093750012,-22.418164062499983],[150.84316406250005,-23.4580078125],[151.15380859375003,-23.784082031249994],[151.83164062500006,-24.12294921875001],[152.12988281250003,-24.59755859374998],[152.45634765625007,-24.802441406249983],[152.65429687499997,-25.201953125000017],[152.91347656250005,-25.432128906250014],[152.98496093750012,-25.816210937500003],[153.16494140625,-25.964160156250045],[153.11679687500006,-27.194433593750034],[153.57568359375003,-28.24052734374999],[153.6168945312501,-28.673046875],[153.03056640625002,-30.563378906249994],[152.94394531250012,-31.43486328124999],[152.5592773437501,-32.045703125],[152.4704101562501,-32.439062500000034],[152.13652343750002,-32.678125],[152.1642578125001,-32.75742187499996],[151.812890625,-32.90107421875001],[151.29208984375012,-33.580957031249966],[151.28027343750003,-33.92666015625005],[151.12480468750007,-34.00527343749998],[151.23154296875006,-34.0296875],[150.8712890625001,-34.49912109374996],[150.80458984375,-35.01289062500001],[150.19531249999997,-35.83359374999996],[149.93271484375012,-37.528515625000026],[149.480859375,-37.77119140625],[147.87675781250002,-37.93417968749998],[146.8568359375,-38.663476562499966],[146.21748046875004,-38.72744140625004],[146.33662109375004,-38.89423828125],[146.46660156250007,-38.84033203125003],[146.40000000000012,-39.14550781250003],[146.1583984375001,-38.86572265624996],[145.93535156250002,-38.90175781250002],[145.79082031250007,-38.66699218749997],[145.39726562500002,-38.53535156249998],[145.54218750000004,-38.39384765625002],[145.4757812500001,-38.24375],[145.29277343750002,-38.237597656249974],[144.95957031250012,-38.500781250000045],[144.71777343749997,-38.34033203125004],[144.91142578125007,-38.34404296874999],[145.11992187500007,-38.091308593750014],[144.89130859375004,-37.899804687499994],[144.39550781250003,-38.13691406249998],[144.6652343750001,-38.20996093750003],[143.53896484375005,-38.82089843749998],[142.45585937500002,-38.38632812499999],[141.725,-38.27138671875002],[141.5939453125001,-38.38779296875002],[141.42421875,-38.36347656250004],[141.0109375000001,-38.07695312500003],[140.39042968750007,-37.89667968749998],[139.78427734375012,-37.24580078124998],[139.85732421875,-36.662109375],[139.72900390625003,-36.37138671875002],[138.9689453125001,-35.58076171874997],[139.17802734375007,-35.52304687500002],[139.289453125,-35.61132812499997],[139.28251953125002,-35.375390624999966],[138.521875,-35.6423828125],[138.184375,-35.612695312499994],[138.5111328125,-35.02441406249996],[138.48994140625004,-34.76357421875002],[138.0892578125,-34.16982421875002],[137.69169921875002,-35.14296875000004],[136.88359375000007,-35.23974609375004],[137.01425781250012,-34.91582031250003],[137.39101562500005,-34.91328124999997],[137.49384765625004,-34.16113281250003],[137.9318359375001,-33.57910156250003],[137.85234375000007,-33.20078124999996],[137.99257812500005,-33.094238281250014],[137.78320312500003,-32.578125],[137.79091796875,-32.82324218749996],[137.44228515625,-33.1935546875],[137.23730468750003,-33.62949218749999],[136.43066406249997,-34.02998046875004],[135.891015625,-34.660937499999974],[135.96972656249997,-34.98183593749998],[135.7923828125,-34.863281249999986],[135.64755859375006,-34.93964843750001],[135.12304687499997,-34.58574218750003],[135.21679687499997,-34.48730468749996],[135.45,-34.58105468749996],[135.21894531250004,-33.959765625000045],[134.88876953125012,-33.62636718749998],[134.79101562499997,-33.32832031250001],[134.60771484375002,-33.19013671875001],[134.30126953124997,-33.16503906249996],[134.17353515625004,-32.979101562500006],[134.10039062500007,-32.748632812500034],[134.22714843750006,-32.73056640624999],[134.23417968750007,-32.54853515625004],[133.66533203125007,-32.207226562500054],[133.21210937500004,-32.18378906249998],[132.75742187500012,-31.95625],[132.21464843750002,-32.00712890624996],[131.14365234375006,-31.49570312500005],[130.78300781250002,-31.604003906249986],[129.1876953125001,-31.659960937500017],[127.31982421874997,-32.2640625],[125.91718750000004,-32.296972656250034],[124.75878906250003,-32.882714843749994],[124.24375,-33.01523437499999],[123.50683593749997,-33.916210937500054],[122.15097656250006,-33.99179687499999],[122.06113281250006,-33.874414062499966],[121.40507812500007,-33.826757812500034],[119.85410156250012,-33.97470703124998],[119.45058593750005,-34.368261718750034],[118.89531250000007,-34.47988281250004],[118.13554687500002,-34.98662109374999],[117.58193359375005,-35.09775390624998],[116.51718750000012,-34.98789062499998],[115.98671875000005,-34.795019531250034],[115.56503906250012,-34.42578125000003],[115.00878906250003,-34.25585937499997],[114.9938476562501,-33.51533203125],[115.3587890625,-33.63994140624999],[115.68300781250005,-33.19287109375003],[115.6984375000001,-31.694531250000054],[115.07792968750007,-30.560449218750023],[114.85683593750005,-29.14296875],[114.16513671875012,-28.08066406250002],[114.028125,-27.34726562499999],[113.18476562500004,-26.182226562499963],[113.32324218749997,-26.243847656249997],[113.35605468750012,-26.080468750000023],[113.58164062500006,-26.558105468749986],[113.73369140625002,-26.59511718749998],[113.83642578125003,-26.50058593749999],[113.85283203125007,-26.33212890625005],[113.39531250000002,-25.71328125],[113.4513671875001,-25.599121093750014],[113.7130859375001,-25.83076171875004],[113.72373046875006,-26.129785156250037],[113.85390625,-26.01445312499999],[113.99199218750007,-26.32148437500001],[114.09033203124997,-26.393652343749963],[114.21572265625,-26.289453124999966],[114.2142578125,-25.851562500000014],[113.41767578125004,-24.435644531250034],[113.48984375000012,-23.869628906250014],[113.7570312500001,-23.418164062500054],[113.79511718750004,-22.91455078125003],[113.68281250000004,-22.637792968749963],[114.02285156250005,-21.881445312499977],[114.12392578125005,-21.828613281249957],[114.14160156250003,-22.483105468749983],[114.37773437500007,-22.341503906249997],[114.70927734375002,-21.82343749999997],[115.45615234375012,-21.49169921874997],[116.0109375000001,-21.030371093749963],[116.7067382812501,-20.653808593749986],[117.40625,-20.72119140625003],[118.19921875000003,-20.37519531249997],[118.75146484374997,-20.261914062499983],[119.10449218749997,-19.995312500000026],[119.58593750000003,-20.03828125],[120.99794921875,-19.604394531249966],[121.33769531250002,-19.31992187500002],[121.83378906250002,-18.477050781249986],[122.34541015625004,-18.11191406250002],[122.14746093749997,-17.54902343750001],[122.2609375000001,-17.135742187500014],[122.72041015625004,-16.78769531249999],[122.97070312499997,-16.436816406250003],[123.56308593750006,-17.520898437499966],[123.59355468750007,-17.03037109375005],[123.83105468750003,-17.120800781249997],[123.8744140625,-16.918652343750026],[123.4904296875001,-16.49072265624997],[123.62597656249997,-16.416308593750003],[123.60703125000006,-16.224023437499994],[123.72890625,-16.192480468749963],[123.85917968750007,-16.38232421875],[124.04443359374997,-16.264941406249974],[124.30039062500006,-16.388281249999977],[124.77197265624997,-16.40263671874996],[124.40488281250006,-16.298925781249977],[124.41640625,-16.133496093750026],[124.5768554687501,-16.11367187499998],[124.64853515625012,-15.870214843750034],[124.50429687500005,-15.972460937499989],[124.38164062500002,-15.758203125000037],[124.43955078125012,-15.493554687500037],[124.56162109375012,-15.496289062499969],[124.69257812500004,-15.273632812499997],[125.06298828125003,-15.44228515624998],[125.0729492187501,-15.306738281249991],[124.90917968750003,-15.310058593749957],[124.83906250000004,-15.160742187500006],[125.03818359375012,-15.004101562499969],[125.35566406250004,-15.119824218750011],[125.17871093749997,-14.714746093749994],[125.57978515625004,-14.483203124999989],[125.62773437500002,-14.256640625000017],[125.70458984374997,-14.29140625],[125.66162109375003,-14.529492187500011],[125.81953125000004,-14.469140624999966],[125.890625,-14.61796875],[126.0207031250001,-14.49453125],[126.0539062500001,-13.977246093750026],[126.1842773437501,-14.00205078125002],[126.25849609375004,-14.163574218749972],[126.403125,-14.018945312499994],[126.5697265625,-14.160937499999974],[126.7806640625,-13.955175781249977],[126.77558593750004,-13.788476562500037],[126.90322265625,-13.744140624999972],[127.45761718750006,-14.031445312499969],[128.18046875000007,-14.711621093749983],[128.06943359375012,-15.329296874999969],[128.15546875000004,-15.225585937499972],[128.25468750000002,-15.298535156250011],[128.175,-15.043164062500026],[128.57578125000006,-14.774511718750006],[129.05820312500012,-14.884375],[129.21582031249997,-15.160253906249991],[129.26757812500003,-14.871484375000051],[129.63476562499997,-15.139746093749991],[129.637109375,-14.850976562500037],[129.84873046875012,-14.828906249999989],[129.60468750000004,-14.647070312499977],[129.69794921875004,-14.557421875000017],[129.37871093750002,-14.39248046874998],[129.70986328125,-13.979980468749972],[129.83886718749997,-13.572949218749997],[130.25976562500003,-13.30224609375],[130.1349609375001,-13.145507812499957],[130.1681640625001,-12.957421875],[130.39990234374997,-12.68789062499999],[130.61748046875007,-12.646875],[130.62265625000006,-12.43105468749998],[130.8673828125001,-12.557812499999955],[130.87382812500007,-12.367187500000028],[131.29160156250006,-12.067871093749972],[131.43828125000002,-12.27695312500002],[132.06406250000006,-12.28076171875],[132.25322265625007,-12.186035156249972],[132.41103515625,-12.295117187499997],[132.51054687500002,-12.134863281250034],[132.71279296875,-12.1234375],[132.63046875000012,-12.035156249999972],[132.67421875000005,-11.649023437499991],[132.47519531250006,-11.491503906249974],[132.07285156250006,-11.474707031250006],[131.82246093750004,-11.302441406249997],[131.96152343750006,-11.180859375000011],[132.15546875000004,-11.311132812499991],[132.33398437499997,-11.223535156249994],[132.6828125000001,-11.505566406249997],[132.96103515625012,-11.407324218749963],[133.18525390625004,-11.705664062499991],[133.90419921875,-11.832031249999972],[134.4173828125,-12.052734375],[134.73027343750002,-11.984375],[135.02968750000005,-12.19375],[135.2179687500001,-12.221679687499957],[135.92246093750012,-11.825781250000034],[135.70439453125007,-12.209863281250037],[136.00849609375004,-12.19140625],[136.08183593750007,-12.422460937500006],[136.26064453125,-12.433789062499997],[136.32851562500005,-12.305566406249994],[136.24990234375,-12.173046875],[136.44335937499997,-11.951464843749974],[136.7194335937501,-12.226464843749952],[136.89746093749997,-12.243554687499966],[136.94746093750004,-12.34990234374996],[136.53701171875,-12.784277343749991],[136.59433593750012,-13.003808593750051],[136.46103515625006,-13.225195312500034],[136.29414062500004,-13.137988281250031],[135.92734375000012,-13.304296874999977],[135.95449218750005,-13.934863281250017],[135.40517578125005,-14.758203124999966],[135.4533203125001,-14.923144531250003],[136.20537109375002,-15.403417968749963],[136.29140625000005,-15.570117187500003],[136.70488281250007,-15.685253906250011],[136.78466796874997,-15.89423828125004],[137.00214843750004,-15.878320312499994],[137.70371093750006,-16.233007812499963],[138.24501953125005,-16.718359374999977],[139.00986328125006,-16.899316406249994],[139.2484375,-17.328613281249957],[140.03583984375004,-17.702636718749957],[140.51113281250005,-17.62451171875003],[140.83046875,-17.414453125000037],[141.29140625,-16.46347656250002],[141.62548828124997,-15.056640625000014],[141.52294921875003,-14.470117187499994],[141.59433593750006,-14.152832031250014],[141.47255859375,-13.797558593750011],[141.64541015625,-13.259082031250003],[141.61357421875002,-12.943457031250006],[141.92978515625006,-12.73984375],[141.67773437500003,-12.491406250000011],[141.68857421875012,-12.351074218750028],[141.87050781250005,-11.9755859375],[141.96113281250004,-12.054296874999963],[142.168359375,-10.946582031249974],[142.45644531250005,-10.707324218749989],[142.60507812500012,-10.748242187499983],[142.55273437500003,-10.874414062500023],[142.7796875,-11.115332031249977],[142.87255859374997,-11.821386718750034],[143.17890625000004,-11.954492187499966]]],[[[142.2748046875,-10.704785156250011],[142.19140624999997,-10.762011718750031],[142.1310546875001,-10.640625],[142.19794921875004,-10.59199218750004],[142.2748046875,-10.704785156250011]]]]},"properties":{"name":"Australia","childNum":30}},{"geometry":{"type":"Polygon","coordinates":[[[16.953125,48.598828125],[16.86542968750001,48.3869140625],[17.147363281250023,48.00595703125],[17.06660156250001,47.707568359374996],[16.421289062500023,47.674462890624994],[16.676562500000017,47.536035156249994],[16.44287109375,47.39951171875],[16.453417968750017,47.006787109375],[16.093066406250017,46.86328125],[15.957617187500006,46.677636718749994],[14.893261718750011,46.605908203125],[14.5498046875,46.399707031249996],[13.7,46.520263671875],[13.490039062500017,46.555566406249994],[13.3515625,46.557910156249996],[13.16875,46.57265625],[12.479199218750011,46.672509765624994],[12.38828125,46.70263671875],[12.330078125,46.759814453124996],[12.267968750000023,46.835888671875],[12.154101562500017,46.93525390625],[12.130761718750023,46.98476562499999],[12.16552734375,47.028173828125],[12.201269531250006,47.060888671875],[12.197167968750023,47.075],[12.16943359375,47.08212890625],[11.775683593750017,46.986083984375],[11.527539062500011,46.997412109375],[11.433203125,46.983056640624994],[11.244433593750017,46.97568359375],[11.133886718750006,46.936181640624994],[11.0634765625,46.859130859375],[11.025097656250011,46.79697265625],[10.993261718750006,46.777001953124994],[10.92734375,46.769482421875],[10.828906250000017,46.775244140625],[10.759765625,46.793310546875],[10.689257812500017,46.84638671875],[10.579785156250011,46.8537109375],[10.479394531250023,46.855126953124994],[10.452832031250011,46.86494140625],[10.45458984375,46.8994140625],[10.414941406250023,46.964404296874996],[10.349414062500017,46.98476562499999],[10.133496093750011,46.851513671875],[9.580273437500011,47.057373046875],[9.527539062500011,47.270751953125],[9.625878906250023,47.467041015625],[9.524023437500006,47.52421875],[9.748925781250023,47.575537109375],[9.839160156250017,47.552294921874996],[9.971582031250023,47.505322265625],[10.034082031250023,47.473583984375],[10.059863281250017,47.449072265625],[10.066308593750023,47.393359375],[10.200292968750006,47.363427734374994],[10.183007812500023,47.27880859375],[10.369140625,47.366064453125],[10.40390625,47.4169921875],[10.439453125,47.5515625],[10.482812500000023,47.541796875],[10.65869140625,47.547216796875],[10.741601562500023,47.52412109375],[10.873046875,47.52021484375],[11.0419921875,47.393115234374996],[12.185644531250006,47.61953125],[12.203808593750011,47.646728515625],[12.196875,47.70908203125],[12.209277343750017,47.71826171875],[12.268359375000017,47.702734375],[12.353540736607165,47.70264787946429],[12.492553013392856,47.68551897321428],[12.685839843750017,47.669335937499994],[12.771386718750023,47.639404296875],[12.796191406250017,47.60703125],[12.781152343750023,47.5904296875],[12.7828125,47.56416015625],[12.809375,47.5421875],[12.87890625,47.5064453125],[12.968066406250017,47.47568359375],[13.014355468750011,47.478076171874996],[13.031542968750017,47.5080078125],[13.047949218750006,47.579150390624996],[13.054101562500023,47.655126953125],[12.897656250000011,47.721875],[12.953515625000023,47.890625],[12.760351562500006,48.106982421874996],[13.215234375000023,48.301904296874994],[13.322851562500006,48.33125],[13.409375,48.394140625],[13.459863281250023,48.56455078125],[13.4716796875,48.571826171874996],[13.486621093750017,48.581835937499996],[13.636623883928596,48.580904017857144],[13.785351562500011,48.587451171874996],[13.798828125,48.6216796875],[13.802929687500011,48.747509765625],[13.814746093750017,48.766943359375],[14.049121093750017,48.602490234375],[14.691308593750023,48.59921875],[15.066796875000023,48.997851562499996],[16.057226562500006,48.754785156249994],[16.543554687500006,48.796240234375],[16.953125,48.598828125]]]},"properties":{"name":"Austria","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[46.1144531250001,38.877783203125034],[45.4796875000001,39.00625],[44.81718750000002,39.65043945312496],[44.76826171875004,39.70351562500005],[45.03164062500005,39.76513671874997],[45.15283203125003,39.58266601562502],[45.456835937500074,39.494482421875006],[45.78447265625002,39.54560546875001],[45.76630859375004,39.37846679687499],[45.977441406249994,39.24389648437503],[46.1144531250001,38.877783203125034]]],[[[48.572851562500006,41.84448242187503],[49.45673828125004,40.79985351562502],[49.77597656250006,40.583984375],[50.18251953125005,40.50478515625002],[50.3659179687501,40.279492187499955],[49.91884765625005,40.31640625000003],[49.55117187499999,40.19414062499999],[49.3244140625001,39.60834960937501],[49.36279296875003,39.349560546874955],[49.16533203125002,39.03027343750003],[49.013476562500074,39.13398437500001],[48.85449218750003,38.83881835937501],[48.86875,38.43549804687498],[48.59267578125005,38.41108398437498],[47.99648437499999,38.85375976562503],[48.292089843750006,39.01884765624999],[48.10439453125005,39.241113281249994],[48.322167968749994,39.39907226562502],[47.995898437500074,39.683935546875034],[46.490625,38.90668945312498],[46.400292968749994,39.1921875],[46.584765625000074,39.22368164062499],[46.36523437500003,39.402490234374994],[46.48144531249997,39.55517578125003],[46.202050781249994,39.59448242187503],[45.57978515625004,39.9775390625],[45.8859375000001,40.024853515624955],[45.96464843750002,40.233789062499966],[45.45439453125002,40.532373046874966],[45.37890624999997,40.67358398437506],[45.5875,40.846923828125],[45.07050781250004,41.075585937499966],[45.188574218750006,41.14741210937504],[45.001367187499994,41.29096679687498],[45.2171875,41.423193359375006],[45.28095703125004,41.449560546875034],[46.086523437500006,41.183837890625],[46.43095703125002,41.077050781249994],[46.534375,41.08857421875004],[46.62636718750005,41.15966796875006],[46.66240234375002,41.24550781250002],[46.67255859375004,41.28681640625001],[46.61894531250002,41.34375],[46.30546875000002,41.507714843749994],[46.18427734375004,41.70214843749997],[46.42988281250004,41.890966796875006],[46.74931640625002,41.812597656250006],[47.31767578125002,41.28242187500001],[47.79101562499997,41.19926757812502],[48.572851562500006,41.84448242187503]]]]},"properties":{"name":"Azerbaijan","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[30.553613281250023,-2.400097656250011],[30.53369140625,-2.42626953125],[30.441992187500006,-2.613476562500011],[30.424218750000023,-2.6416015625],[30.47333984375001,-2.6943359375],[30.42402343750001,-2.824023437500003],[30.433496093750023,-2.87451171875],[30.515039062500023,-2.917578125],[30.604296875000017,-2.935253906250011],[30.70947265625,-2.977246093750011],[30.7802734375,-2.98486328125],[30.811132812500006,-3.116406250000011],[30.79023437500001,-3.274609375000011],[30.4,-3.65390625],[29.947265625,-4.307324218750011],[29.7177734375,-4.455859375],[29.403222656250023,-4.449316406250006],[29.211816406250023,-3.833789062500003],[29.224414062500017,-3.053515625],[29.01435546875001,-2.72021484375],[29.10205078125,-2.595703125],[29.390234375,-2.80859375],[29.698046875000017,-2.794726562500003],[29.8681640625,-2.71640625],[29.93017578125,-2.339550781250011],[30.117285156250006,-2.416601562500006],[30.408496093750017,-2.31298828125],[30.553613281250023,-2.400097656250011]]]},"properties":{"name":"Burundi","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[5.693554687500011,50.774755859375006],[5.993945312500017,50.75043945312504],[6.340917968750006,50.451757812500034],[6.116503906250045,50.120996093749966],[6.08906250000004,50.15458984374996],[6.054785156249977,50.154296875],[5.976269531250068,50.167187499999955],[5.866894531250068,50.08281250000002],[5.817382812500028,50.01269531250003],[5.7880859375,49.96123046875002],[5.744042968749994,49.91962890624998],[5.789746093749983,49.53828125000001],[5.50732421875,49.51088867187502],[4.867578125000051,49.78813476562502],[4.818652343750045,50.153173828125034],[4.545019531250063,49.96025390624999],[4.149316406250023,49.971582031249994],[4.174609375000017,50.24648437500005],[3.689355468750023,50.30605468750002],[3.595410156250068,50.47734374999999],[3.27333984375008,50.53154296875002],[3.10683593750008,50.779443359374994],[2.759375,50.750634765624994],[2.52490234375,51.097119140624955],[3.35009765625,51.37768554687503],[3.43251953125008,51.24575195312505],[3.902050781250011,51.20766601562502],[4.226171875000034,51.38647460937503],[5.03095703125004,51.46909179687498],[5.214160156250045,51.278955078124966],[5.796484375000034,51.153076171875],[5.693554687500011,50.774755859375006]]]},"properties":{"name":"Belgium","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[3.595410156250011,11.6962890625],[3.553906250000011,11.631884765624989],[3.490527343750017,11.49921875],[3.48779296875,11.395410156249994],[3.638867187500011,11.176855468749991],[3.65625,11.154589843749989],[3.6953125,11.1203125],[3.71640625,11.07958984375],[3.7568359375,10.76875],[3.83447265625,10.607421875],[3.771777343750017,10.417626953124994],[3.646582031250006,10.408984374999989],[3.60205078125,10.004541015624994],[3.3251953125,9.778466796874994],[3.044921875,9.083837890624991],[2.774804687500023,9.048535156249997],[2.703125,8.371826171875],[2.68603515625,7.873730468749997],[2.719335937500006,7.616259765624989],[2.7509765625,7.541894531249994],[2.78515625,7.476855468749989],[2.783984375000017,7.443408203124989],[2.765820312500011,7.422509765624994],[2.75048828125,7.395068359374989],[2.756738281250023,7.067919921874989],[2.721386718750011,6.980273437499989],[2.731738281250017,6.852832031249989],[2.7529296875,6.771630859374994],[2.774609375000011,6.711718749999989],[2.753710937500017,6.661767578124994],[2.735644531250017,6.595703125],[2.706445312500023,6.369238281249991],[1.62265625,6.216796875],[1.777929687500006,6.294628906249997],[1.530957031250011,6.992431640625],[1.624707031250011,6.997314453125],[1.600195312500006,9.050048828125],[1.3857421875,9.361669921874991],[1.330078125,9.996972656249994],[0.763378906250011,10.386669921874997],[0.900488281250006,10.993261718749991],[1.4267578125,11.447119140624991],[1.980371093750023,11.418408203124997],[2.38916015625,11.897070312499991],[2.366015625000017,12.221923828125],[2.805273437500006,12.383837890624989],[3.595410156250011,11.6962890625]]]},"properties":{"name":"Benin","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[0.217480468750011,14.911474609374991],[0.163867187500017,14.497216796874994],[0.382519531250011,14.245800781249997],[0.42919921875,13.972119140624997],[0.6181640625,13.703417968750003],[1.201171875,13.357519531249991],[0.988476562500011,13.36484375],[0.9873046875,13.041894531249994],[1.56494140625,12.635400390624994],[2.104589843750006,12.701269531249991],[2.226269531250011,12.466064453125],[2.072949218750011,12.309375],[2.38916015625,11.897070312499991],[1.980371093750023,11.418408203124997],[1.4267578125,11.447119140624991],[0.900488281250006,10.993261718749991],[0.49267578125,10.954980468749994],[-0.068603515625,11.115625],[-0.299462890624994,11.166894531249994],[-0.627148437499983,10.927392578124994],[-1.04248046875,11.010058593749989],[-2.829931640624977,10.998388671874991],[-2.914892578124977,10.592333984374989],[-2.791162109374994,10.432421874999989],[-2.780517578125,9.745849609375],[-2.765966796874977,9.658056640624991],[-2.706201171874994,9.533935546875],[-2.695849609374989,9.481347656249994],[-2.7171875,9.457128906249991],[-2.7666015625,9.424707031249994],[-2.816748046874977,9.425830078124989],[-2.875146484374994,9.500927734374997],[-2.90087890625,9.534619140624997],[-2.948144531249994,9.610742187499994],[-2.98828125,9.687353515624991],[-3.042626953124994,9.720898437499997],[-3.095800781249977,9.752099609374994],[-3.160693359374989,9.849169921874989],[-3.223535156249994,9.895458984374997],[-3.289697265624994,9.882226562499994],[-3.581152343749977,9.92431640625],[-3.790625,9.9171875],[-4.18115234375,9.78173828125],[-4.267187499999977,9.743261718749991],[-4.332226562499983,9.645703125],[-4.406201171874983,9.647998046874989],[-4.526611328125,9.723486328124991],[-4.625830078124977,9.713574218749997],[-4.721777343749977,9.756542968749997],[-5.262304687499977,10.319677734374991],[-5.523535156249977,10.426025390625],[-5.490478515625,11.042382812499994],[-5.250244140625,11.375781249999989],[-5.288134765624989,11.827929687499989],[-4.699316406249977,12.076171875],[-4.4287109375,12.337597656249997],[-4.480615234374994,12.672216796874991],[-4.227099609374989,12.793701171875],[-4.328710937499977,13.119042968749994],[-4.151025390624994,13.306201171875003],[-3.947314453124989,13.402197265624991],[-3.527636718749989,13.182714843749991],[-3.3017578125,13.28076171875],[-3.248632812499977,13.658349609374994],[-2.950830078124994,13.6484375],[-2.873925781249994,13.950732421875003],[-2.586718749999989,14.227587890625003],[-2.113232421874983,14.16845703125],[-1.97304687499999,14.45654296875],[-1.049560546875,14.81953125],[-0.760449218749983,15.047753906249994],[-0.235888671874989,15.059423828124991],[0.217480468750011,14.911474609374991]]]},"properties":{"name":"Burkina Faso","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[91.94921875000003,21.50805664062503],[91.85947265625012,21.532958984375057],[91.90771484374997,21.722949218750017],[91.94921875000003,21.50805664062503]]],[[[91.87382812500002,21.832128906249977],[91.8375976562501,21.750244140625],[91.85068359375012,21.927050781250045],[91.87382812500002,21.832128906249977]]],[[[91.15078125000005,22.175195312499966],[91.04472656250002,22.10517578125001],[91.0794921875,22.519726562499983],[91.15078125000005,22.175195312499966]]],[[[91.55673828125006,22.38222656250005],[91.41132812500004,22.475683593750006],[91.45605468749997,22.61650390624999],[91.55673828125006,22.38222656250005]]],[[[90.77763671875007,22.089306640624983],[90.51503906250005,22.06513671875001],[90.68046875000007,22.327490234375006],[90.50292968749997,22.835351562499994],[90.59648437500002,22.863525390625057],[90.86816406250003,22.48486328125],[90.77763671875007,22.089306640624983]]],[[[88.94072265625002,26.24536132812497],[88.97041015625004,26.250878906250023],[88.95195312500002,26.412109375],[89.01865234375012,26.410253906249977],[89.28925781250004,26.03759765625],[89.54990234375006,26.005273437499994],[89.57275390625003,26.13232421875003],[89.67089843750003,26.21381835937504],[89.8229492187501,25.94140625000003],[89.82490234375004,25.56015625],[89.80087890625012,25.33613281250001],[89.81406250000006,25.305371093749955],[89.86630859375012,25.293164062499955],[90.11962890625003,25.21997070312497],[90.61308593750002,25.16772460937497],[92.04970703125005,25.16948242187499],[92.46835937500006,24.94414062499999],[92.38496093750004,24.848779296875023],[92.25126953125007,24.895068359375045],[92.22832031250002,24.88134765625],[92.22666015625012,24.77099609374997],[92.11748046875002,24.493945312500017],[92.06416015625004,24.374365234375006],[91.84619140624997,24.17529296875003],[91.72656250000003,24.20507812499997],[91.35019531250012,24.06049804687501],[91.16044921875007,23.66064453125],[91.359375,23.06835937500003],[91.43623046875004,23.19990234375001],[91.55351562500002,22.991552734375006],[91.61953125,22.97968750000001],[91.75097656250003,23.053515625000017],[91.75419921875007,23.287304687499955],[91.79003906249997,23.361035156249983],[91.937890625,23.504687500000017],[91.92949218750007,23.598242187499977],[91.92958984375,23.68598632812501],[91.97851562500003,23.691992187499977],[92.04404296875006,23.677783203125017],[92.24609375000003,23.683593750000057],[92.33378906250002,23.242382812499955],[92.36162109375002,22.929003906250074],[92.46445312500006,22.734423828125045],[92.49140625000004,22.685400390625006],[92.5612304687501,22.04804687500001],[92.57490234375004,21.978076171875045],[92.58281250000002,21.940332031249994],[92.5934570312501,21.46733398437499],[92.63164062500002,21.306201171875045],[92.33056640624997,21.439794921874977],[92.17958984375005,21.293115234375023],[92.32412109375,20.791845703125063],[92.0560546875,21.1748046875],[91.86337890625012,22.350488281249966],[91.7970703125001,22.297460937500006],[91.48007812500006,22.884814453125045],[91.2162109375,22.642236328124994],[90.94560546875002,22.597021484375034],[90.65625,23.025488281250006],[90.60400390624997,23.59135742187499],[90.55566406249997,23.42153320312505],[90.26914062500012,23.455859375000017],[90.59091796875012,23.266406250000045],[90.43505859374997,22.751904296874955],[90.61611328125,22.362158203125034],[90.23056640625006,21.82978515625004],[90.07119140625005,21.887255859375017],[90.20957031250006,22.156591796875006],[89.95419921875006,22.022851562500023],[89.91806640625012,22.11616210937501],[89.98515625000002,22.466406250000063],[89.81191406250005,21.983496093750006],[89.56855468750004,21.767431640625034],[89.48320312500007,22.275537109374994],[89.50058593750006,21.914355468750045],[89.35371093750004,21.72109375],[89.09394531250004,21.872753906249983],[89.05,22.274609374999983],[88.92070312500002,22.632031249999955],[88.89970703125002,22.843505859375057],[88.85058593749997,23.040527343750057],[88.928125,23.186621093750063],[88.72441406250002,23.254980468750034],[88.69765625,23.493017578125034],[88.63574218749997,23.55],[88.56738281249997,23.674414062500034],[88.69980468750006,24.002539062500006],[88.71376953125,24.069628906250017],[88.72656250000003,24.186230468749955],[88.7335937500001,24.23090820312501],[88.72353515625,24.27490234375],[88.64228515625004,24.325976562500017],[88.49853515625003,24.34663085937504],[88.3375,24.45385742187503],[88.225,24.460644531249983],[88.14550781250003,24.485791015624955],[88.07910156249997,24.549902343750063],[88.02343750000003,24.62783203125005],[88.03027343749997,24.66445312500005],[88.0451171875001,24.713037109374994],[88.1498046875,24.914648437500034],[88.1888671875,24.92060546875001],[88.27949218750004,24.881933593750034],[88.31337890625005,24.8818359375],[88.37294921875,24.961523437499977],[88.45625,25.18842773437504],[88.57382812500006,25.18789062499999],[88.92978515625012,25.222998046875063],[88.94414062500002,25.290771484375],[88.85478515625002,25.333544921875017],[88.76914062500006,25.490478515625],[88.50244140624997,25.537011718749994],[88.14746093749997,25.811425781250023],[88.1066406250001,25.841113281250045],[88.15078125000005,26.08715820312497],[88.33398437499997,26.257519531249955],[88.44042968749997,26.369482421875034],[88.38623046875003,26.471533203125034],[88.35146484375005,26.482568359374966],[88.36992187500002,26.564111328124994],[88.51826171875004,26.517773437499955],[88.68281250000004,26.291699218749983],[88.94072265625002,26.24536132812497]]]]},"properties":{"name":"Bangladesh","childNum":6}},{"geometry":{"type":"Polygon","coordinates":[[[28.585351562500023,43.742236328124996],[28.465429687500006,43.389306640624994],[28.133691406250023,43.39560546875],[27.92890625000001,43.1861328125],[27.88886718750001,42.74970703125],[27.484765625000023,42.468066406249996],[28.014453125000017,41.969042968749996],[27.47480468750001,41.946875],[27.294921875,42.079541015625],[27.24433593750001,42.09326171875],[27.01171875,42.058642578124996],[26.96875,42.02685546875],[26.884863281250006,41.991845703124994],[26.615332031250006,41.964892578124996],[26.549707031250023,41.896728515625],[26.51142578125001,41.8263671875],[26.3603515625,41.8015625],[26.327246093750006,41.772802734375],[26.31796875,41.744677734374996],[26.320898437500006,41.716552734375],[26.200585937500023,41.743798828124994],[26.107421875,41.72568359375],[26.085546875,41.704150390624996],[26.066015625,41.673242187499994],[26.1435546875,41.521533203124996],[26.155175781250023,41.434863281249996],[26.135351562500006,41.3857421875],[26.06640625,41.35068359375],[25.92333984375,41.311914062499994],[25.784960937500017,41.330419921875],[25.52705078125001,41.2998046875],[25.381933593750006,41.26435546875],[25.25117187500001,41.243554687499994],[24.773730468750017,41.356103515624994],[24.595996093750017,41.442724609375],[24.5693359375,41.4673828125],[24.51826171875001,41.552539062499996],[24.487890625,41.555224609374996],[24.056054687500023,41.527246093749994],[24.03291015625001,41.469091796875],[24.011328125,41.46005859375],[23.635156250000023,41.386767578124996],[23.53583984375001,41.386035156249996],[23.433398437500017,41.398730468749996],[23.3720703125,41.3896484375],[23.23984375,41.3849609375],[23.15595703125001,41.322070312499996],[22.916015625,41.336279296875],[23.00361328125001,41.73984375],[22.836816406250023,41.993603515625],[22.344042968750017,42.31396484375],[22.42207031250001,42.328857421875],[22.445703125000023,42.359130859375],[22.523535156250006,42.440966796874996],[22.53242187500001,42.481201171875],[22.524218750000017,42.50390625],[22.43623046875001,42.6291015625],[22.466796875,42.84248046875],[22.799902343750006,42.985742187499994],[22.976855468750017,43.18798828125],[22.85957031250001,43.25234375],[22.819726562500023,43.300732421875],[22.767578125,43.354150390624994],[22.554589843750023,43.454492187499994],[22.36962890625,43.781298828124996],[22.36542968750001,43.862109375],[22.399023437500006,43.96953125],[22.420800781250023,44.007421875],[22.452529688228115,44.0510441391688],[22.547921095934313,44.113823956634434],[22.688564844478098,44.254306249271906],[23.02851562500001,44.077978515625],[22.868261718750006,43.947900390624994],[22.919042968750006,43.83447265625],[25.4970703125,43.670800781249994],[26.2158203125,44.007275390625],[27.0869140625,44.167382812499994],[27.425390625,44.0205078125],[27.88427734375,43.987353515624996],[28.221972656250017,43.772851562499994],[28.585351562500023,43.742236328124996]]]},"properties":{"name":"Bulgaria","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[50.60722656250002,25.883105468750003],[50.57490234375001,25.806787109374994],[50.465917968750006,25.965527343749997],[50.46992187500001,26.228955078124997],[50.5859375,26.24072265625],[50.60722656250002,25.883105468750003]]]},"properties":{"name":"Bahrain","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-73.02685546874994,21.19238281250003],[-73.16455078125003,20.979150390625023],[-73.68115234375003,20.9755859375],[-73.68037109374995,21.103320312500017],[-73.52309570312497,21.190820312499966],[-73.23535156249997,21.15449218750004],[-73.05849609375,21.313378906249994],[-73.02685546874994,21.19238281250003]]],[[[-73.041015625,22.429052734375006],[-72.74726562500001,22.32739257812497],[-73.16191406250002,22.380712890625006],[-73.041015625,22.429052734375006]]],[[[-74.20673828124998,22.213769531250023],[-74.27690429687499,22.183691406250006],[-73.906396484375,22.527441406250063],[-73.95419921874995,22.71552734375001],[-73.84995117187503,22.731054687500063],[-73.83652343749998,22.538427734374977],[-74.20673828124998,22.213769531250023]]],[[[-74.05751953124997,22.723486328125034],[-74.27460937499995,22.71166992187503],[-74.30703125,22.83959960937497],[-74.05751953124997,22.723486328125034]]],[[[-74.84047851562494,22.894335937500017],[-75.22333984374995,23.165332031250074],[-75.13056640624998,23.267919921875006],[-75.31596679687502,23.668359374999966],[-74.84047851562494,22.894335937500017]]],[[[-75.66455078124997,23.45014648437501],[-76.03710937500003,23.60278320312503],[-76.01044921875001,23.671386718750057],[-75.66455078124997,23.45014648437501]]],[[[-74.42944335937497,24.068066406249955],[-74.55092773437502,23.96894531250001],[-74.52690429687502,24.105078125000034],[-74.42944335937497,24.068066406249955]]],[[[-77.65771484374994,24.249462890624955],[-77.75527343750002,24.163476562500023],[-77.61538085937494,24.216357421875045],[-77.5615234375,24.136816406250006],[-77.57373046875,23.739160156249994],[-77.77128906249999,23.752539062499977],[-77.99990234374994,24.219824218750063],[-77.65771484374994,24.249462890624955]]],[[[-75.30839843749999,24.2],[-75.50322265624996,24.139062500000023],[-75.40893554687503,24.265771484374994],[-75.72666015625,24.68935546875005],[-75.30839843749999,24.2]]],[[[-77.34755859375,25.013867187499983],[-77.56191406249997,25.030029296875],[-77.27558593750001,25.055761718750006],[-77.34755859375,25.013867187499983]]],[[[-77.74384765625001,24.70742187499999],[-77.74521484375,24.463476562500034],[-78.04492187499997,24.287451171875063],[-78.14580078125002,24.493457031250017],[-78.36650390624993,24.544189453125057],[-78.435302734375,24.627587890624994],[-78.24272460937493,24.65380859375],[-78.21137695312495,25.191259765624977],[-77.97529296874998,25.084814453125063],[-77.74384765625001,24.70742187499999]]],[[[-76.64882812499994,25.487402343750006],[-76.34379882812496,25.33203124999997],[-76.12661132812497,25.14052734375005],[-76.16953125,24.6494140625],[-76.319970703125,24.81767578124999],[-76.21376953124994,24.822460937499983],[-76.160400390625,25.119335937499983],[-76.36928710937502,25.312597656250006],[-76.62070312499998,25.43164062500003],[-76.78066406249997,25.426855468750006],[-76.71083984374997,25.564892578124983],[-76.64882812499994,25.487402343750006]]],[[[-78.49287109375001,26.729052734375017],[-77.92246093749998,26.69111328125001],[-78.74365234374994,26.50068359375004],[-78.98564453124996,26.689501953125045],[-78.79804687500001,26.58242187499999],[-78.59711914062493,26.797949218750006],[-78.49287109375001,26.729052734375017]]],[[[-77.22563476562496,25.904199218750023],[-77.40317382812498,26.02470703124996],[-77.24677734374998,26.156347656250034],[-77.238623046875,26.561132812500006],[-77.510595703125,26.845996093750045],[-77.94375,26.90356445312503],[-77.53388671874995,26.903417968750006],[-77.06635742187501,26.530175781249994],[-77.03828124999998,26.333447265624983],[-77.16728515624996,26.240332031250006],[-77.22563476562496,25.904199218750023]]]]},"properties":{"name":"Bahamas","childNum":14}},{"geometry":{"type":"Polygon","coordinates":[[[19.007128906250045,44.86918945312502],[19.348632812500057,44.88090820312502],[19.118457031250074,44.359960937500006],[19.583789062500017,44.04345703125003],[19.245019531249994,43.96503906250004],[19.495117187500057,43.642871093750045],[19.19433593749997,43.533300781250006],[19.164355468750017,43.53544921874999],[19.11279296874997,43.52773437500002],[19.080078125000057,43.51772460937502],[19.0283203125,43.53251953125002],[18.97421875,43.54233398437498],[18.95068359375,43.52666015624999],[19.036718750000034,43.35732421875002],[19.026660156250017,43.292431640624955],[18.97871093750001,43.28540039062503],[18.934667968750006,43.339453125000034],[18.85107421875003,43.34633789062502],[18.749218750000068,43.283544921875006],[18.67421875000008,43.230810546875006],[18.623632812500063,43.027685546875034],[18.488476562500068,43.01215820312498],[18.44384765625003,42.96845703125004],[18.46601562500001,42.777246093749994],[18.54589843750003,42.64160156249997],[18.436328125000017,42.559716796874994],[17.667578125000063,42.897119140624994],[17.585156250000068,42.93837890625005],[17.650488281250063,43.006591796875],[17.27382812500005,43.44575195312501],[16.300097656250017,44.12451171875],[16.10341796875008,44.52099609375006],[15.736621093750045,44.76582031250001],[15.788085937500057,45.17895507812497],[16.028320312500057,45.18959960937502],[16.29335937500005,45.00883789062496],[16.53066406250008,45.21669921875002],[16.918652343749983,45.27656249999998],[17.812792968750074,45.078125],[18.66259765625,45.07744140624999],[18.83642578125,44.883251953124955],[19.007128906250045,44.86918945312502]]]},"properties":{"name":"Bosnia and Herz.","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[28.14794921875,56.142919921875],[28.284277343750006,56.055908203125],[29.375,55.938720703125],[29.353417968750023,55.784375],[29.412988281250023,55.724853515625],[29.482226562500017,55.6845703125],[29.63007812500001,55.751171875],[29.6845703125,55.7697265625],[29.744140625,55.77041015625],[29.82392578125001,55.7951171875],[29.881640625000017,55.832324218749996],[29.93701171875,55.845263671874996],[30.04267578125001,55.83642578125],[30.23359375000001,55.84521484375],[30.625585937500006,55.666259765625],[30.906835937500006,55.57001953125],[30.90058593750001,55.397412109375],[30.82099609375001,55.3302734375],[30.810546875,55.306982421875],[30.814453125,55.2787109375],[30.87744140625,55.2234375],[30.958886718750023,55.13759765625],[30.97773437500001,55.08779296875],[30.97773437500001,55.05048828125],[30.829882812500017,54.914990234375],[30.804492187500017,54.8609375],[30.791015625,54.806005859375],[30.798828125,54.783251953124996],[30.984179687500017,54.6958984375],[31.12128906250001,54.648486328124996],[31.152148437500017,54.625341796875],[31.074804687500006,54.491796875],[31.18476562500001,54.452978515625],[31.299121093750017,54.29169921875],[31.403613281250017,54.195947265625],[31.62841796875,54.111181640625],[31.7919921875,54.055908203125],[31.825976562500017,54.030712890625],[31.837792968750023,54.00078125],[31.825292968750006,53.935009765625],[31.783007812500017,53.85498046875],[31.754199218750017,53.81044921875],[31.82080078125,53.791943359375],[31.9921875,53.796875],[32.20039062500001,53.78125],[32.45097656250002,53.6533203125],[32.70429687500001,53.336328125],[32.64443359375002,53.32890625],[32.57802734375002,53.31240234375],[32.469335937500006,53.2703125],[32.14199218750002,53.091162109375],[31.849707031250006,53.106201171875],[31.668261718750017,53.200927734375],[31.417871093750023,53.196044921875],[31.38837890625001,53.184814453125],[31.364550781250017,53.138964843749996],[31.30292968750001,53.060888671875],[31.2587890625,53.01669921875],[31.29511718750001,52.989794921874996],[31.35302734375,52.933447265625],[31.442773437500023,52.86181640625],[31.53515625,52.7982421875],[31.564843750000023,52.759228515625],[31.585546875,52.532470703125],[31.57734375000001,52.312304687499996],[31.6015625,52.284814453125],[31.64990234375,52.26220703125],[31.690625,52.220654296875],[31.758593750000017,52.125830078125],[31.76337890625001,52.10107421875],[31.57373046875,52.10810546875],[31.345996093750017,52.10537109375],[31.21796875000001,52.050244140625],[30.98066406250001,52.046191406249996],[30.845703125,51.953076171875],[30.755273437500023,51.895166015625],[30.667285156250017,51.814111328125],[30.583886718750023,51.68896484375],[30.533007812500017,51.596337890624994],[30.56074218750001,51.531494140625],[30.602343750000017,51.471240234374996],[30.611718750000023,51.40634765625],[30.63251953125001,51.355419921875],[30.449511718750017,51.274316406249994],[30.160742187500006,51.477880859375],[29.346484375000017,51.382568359375],[29.10205078125,51.6275390625],[29.06074218750001,51.625439453125],[29.013085937500023,51.598925781249996],[28.97773437500001,51.57177734375],[28.927539062500017,51.562158203124994],[28.849511718750023,51.540185546874994],[28.73125,51.433398437499996],[28.690234375000017,51.438867187499994],[28.647753906250017,51.45654296875],[28.599023437500023,51.542626953124994],[28.532031250000017,51.562451171875],[27.85859375000001,51.5923828125],[27.7,51.477978515625],[27.689746093750017,51.572412109374994],[27.296289062500023,51.597412109375],[27.270117187500006,51.613574218749996],[27.141992187500023,51.75205078125],[27.074121093750023,51.76083984375],[26.95283203125001,51.75400390625],[26.7734375,51.770703125],[25.785742187500006,51.923828125],[24.361914062500006,51.867529296875],[24.280078125000017,51.774707031249996],[24.126855468750023,51.6646484375],[23.978320312500017,51.59130859375],[23.951171875,51.58505859375],[23.8642578125,51.623974609375],[23.79169921875001,51.637109375],[23.706835937500017,51.64130859375],[23.61376953125,51.525390625],[23.605273437500017,51.517919921875],[23.652441406250006,52.040380859375],[23.175097656250017,52.28662109375],[23.915429687500023,52.770263671875],[23.484667968750017,53.939794921875],[23.55908203125,53.91982421875],[23.733691406250017,53.912255859375],[24.191308593750023,53.950439453125],[24.236621093750017,53.919970703124996],[24.31796875,53.89296875],[24.620703125,53.979833984375],[24.768164062500006,53.974658203124996],[24.78925781250001,53.9982421875],[24.82568359375,54.118994140625],[24.869531250000023,54.145166015625],[25.04609375000001,54.133056640625],[25.111425781250006,54.154931640625],[25.179492187500017,54.2142578125],[25.46113281250001,54.292773437499996],[25.505664062500017,54.264941406249996],[25.52734375,54.215136718749996],[25.497363281250017,54.175244140625],[25.573046875000017,54.139892578125],[25.765234375,54.17978515625],[25.702539062500023,54.29296875],[25.61689453125001,54.310107421874996],[25.557519531250023,54.310693359375],[25.54736328125,54.331835937499996],[25.56757812500001,54.37705078125],[25.62031250000001,54.460400390625],[25.68515625,54.535791015625],[25.72480468750001,54.564257812499996],[25.73164062500001,54.590380859374996],[25.722460937500017,54.71787109375],[25.859277343750023,54.919287109375],[25.964453125,54.94716796875],[26.09296875000001,54.9623046875],[26.175195312500023,55.003271484375],[26.250781250000017,55.12451171875],[26.291796875000017,55.139599609375],[26.601171875,55.130175781249996],[26.6484375,55.20419921875],[26.775683593750017,55.273095703125],[26.760156250000023,55.293359375],[26.68125,55.306445312499996],[26.49531250000001,55.318017578125],[26.457617187500006,55.34248046875],[26.469531250000017,55.371923828125],[26.51923828125001,55.44814453125],[26.56660156250001,55.546484375],[26.5908203125,55.62265625],[26.593554687500017,55.667529296874996],[27.052539062500017,55.83056640625],[27.576757812500006,55.798779296875],[28.14794921875,56.142919921875]]]},"properties":{"name":"Belarus","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-87.8529296875,17.4228515625],[-87.92998046874996,17.283007812500017],[-87.826416015625,17.546289062499994],[-87.8529296875,17.4228515625]]],[[[-88.89404296875,15.890625],[-89.2328125,15.888671875],[-89.16147460937503,17.81484375],[-89.13354492187503,17.970800781249977],[-88.80634765624998,17.965527343749983],[-88.52299804687499,18.445898437500063],[-88.29565429687494,18.47241210937503],[-88.34926757812494,18.358837890624983],[-88.1302734375,18.350732421875023],[-88.08525390624999,18.226123046875045],[-88.27172851562494,17.60986328125],[-88.203466796875,17.5166015625],[-88.31342773437501,16.632763671874983],[-88.89404296875,15.890625]]]]},"properties":{"name":"Belize","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[-64.73027343749999,32.29345703125],[-64.86284179687499,32.273876953125],[-64.66831054687499,32.38193359375],[-64.73027343749999,32.29345703125]]]},"properties":{"name":"Bermuda","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-58.15976562499999,-20.164648437500006],[-58.18017578125,-19.81787109375],[-59.09052734375,-19.286230468750006],[-60.00737304687499,-19.29755859375001],[-61.7568359375,-19.6453125],[-62.276318359375,-20.5625],[-62.27666015624999,-21.066015625],[-62.65097656249999,-22.233691406250003],[-62.84335937499999,-21.99726562500001],[-63.92167968749999,-22.028613281250003],[-63.97612304687499,-22.072558593750003],[-64.26640624999999,-22.603320312500003],[-64.30791015624999,-22.7953125],[-64.32529296874999,-22.82763671875],[-64.373974609375,-22.761035156250003],[-64.4455078125,-22.58535156250001],[-64.477734375,-22.4853515625],[-64.5236328125,-22.37158203125],[-64.60551757812499,-22.228808593750003],[-64.992626953125,-22.109667968750003],[-65.518798828125,-22.09453125],[-65.686181640625,-22.11025390625001],[-65.77104492187499,-22.099609375],[-65.86015624999999,-22.01972656250001],[-66.05859375,-21.879492187500006],[-66.098583984375,-21.835058593750006],[-66.17465820312499,-21.8056640625],[-66.220166015625,-21.802539062500003],[-66.24760742187499,-21.83046875],[-66.28212890625,-21.94746093750001],[-66.3224609375,-22.053125],[-66.365185546875,-22.11376953125],[-66.71171874999999,-22.21630859375],[-66.99111328125,-22.509863281250006],[-67.19487304687499,-22.82167968750001],[-67.362255859375,-22.85517578125001],[-67.57993164062499,-22.891699218750006],[-67.79443359375,-22.879492187500006],[-67.87944335937499,-22.82294921875001],[-67.88173828125,-22.49335937500001],[-68.18642578125,-21.61855468750001],[-68.197021484375,-21.30029296875],[-68.558251953125,-20.901953125],[-68.484326171875,-20.62841796875],[-68.74516601562499,-20.45859375],[-68.75932617187499,-20.115527343750003],[-68.560693359375,-19.967089843750003],[-68.559375,-19.90234375],[-68.578271484375,-19.856542968750006],[-68.69619140625,-19.74072265625],[-68.69829101562499,-19.72109375],[-68.57529296874999,-19.56015625],[-68.462890625,-19.43281250000001],[-68.470166015625,-19.409960937500003],[-68.49199218749999,-19.381933593750006],[-68.85795898437499,-19.093359375],[-68.96831054687499,-18.96796875000001],[-68.97885742187499,-18.81298828125],[-69.026806640625,-18.65625],[-69.09228515625,-18.28242187500001],[-69.145458984375,-18.14404296875],[-69.0939453125,-18.05048828125001],[-69.28232421874999,-17.96484375],[-69.31337890625,-17.943164062500003],[-69.5109375,-17.50605468750001],[-69.51108398437499,-17.5048828125],[-69.510986328125,-17.46035156250001],[-69.521923828125,-17.388964843750003],[-69.645703125,-17.24853515625],[-69.62485351562499,-17.2001953125],[-69.020703125,-16.6421875],[-69.03291015625,-16.47597656250001],[-68.8427734375,-16.337890625],[-69.21757812499999,-16.14912109375001],[-69.4208984375,-15.640625],[-69.17246093749999,-15.236621093750003],[-69.37470703125,-14.962988281250006],[-69.35947265624999,-14.7953125],[-68.87089843749999,-14.169726562500003],[-69.07412109375,-13.682812500000011],[-68.97861328124999,-12.880078125000011],[-68.68525390625,-12.501953125],[-69.57861328125,-10.951757812500006],[-69.228515625,-10.955664062500006],[-68.84833984375,-11.011132812500009],[-68.678369140625,-11.11279296875],[-68.39799804687499,-11.01875],[-68.0716796875,-10.703125],[-67.99169921875,-10.674414062500006],[-67.83500976562499,-10.662792968750011],[-67.72177734374999,-10.68310546875],[-67.416943359375,-10.389843750000011],[-66.575341796875,-9.89990234375],[-65.396142578125,-9.71240234375],[-65.298583984375,-10.146777343750003],[-65.31308593749999,-10.253027343750006],[-65.395458984375,-10.392285156250011],[-65.4369140625,-10.449023437500003],[-65.44711914062499,-10.507421875],[-65.33403320312499,-10.892773437500011],[-65.32377929687499,-11.024804687500009],[-65.389892578125,-11.246289062500011],[-65.1857421875,-11.74951171875],[-64.783447265625,-12.059375],[-64.42050781249999,-12.439746093750003],[-63.68857421874999,-12.47802734375],[-63.3466796875,-12.680078125],[-63.06748046874999,-12.669140625000011],[-62.76547851562499,-12.997265625000011],[-62.11801757812499,-13.159765625],[-62.09477539062499,-13.241992187500003],[-61.944726562499994,-13.40625],[-61.87412109374999,-13.470410156250011],[-61.789941406249994,-13.525585937500011],[-61.57568359375,-13.524804687500009],[-61.51157226562499,-13.541210937500011],[-61.41606445312499,-13.526562500000011],[-61.129150390625,-13.49853515625],[-61.07700195312499,-13.48974609375],[-60.506591796875,-13.78984375],[-60.372705078124994,-14.41875],[-60.273339843749994,-15.088769531250009],[-60.402001953124994,-15.0927734375],[-60.583203125,-15.098339843750011],[-60.53046875,-15.143164062500006],[-60.38046875,-15.318261718750009],[-60.242333984374994,-15.479589843750006],[-60.20664062499999,-15.901953125],[-60.18720703125,-16.132128906250003],[-60.17558593749999,-16.269335937500003],[-58.53793945312499,-16.328222656250006],[-58.49658203125,-16.32666015625],[-58.42368164062499,-16.307910156250003],[-58.37539062499999,-16.28359375],[-58.345605468749994,-16.284375],[-58.35039062499999,-16.490820312500006],[-58.470605468749994,-16.650195312500003],[-58.478125,-16.70068359375],[-58.45981445312499,-16.910742187500006],[-58.417382812499994,-17.08056640625],[-58.39599609375,-17.23427734375001],[-58.34775390624999,-17.28212890625001],[-57.99091796875,-17.51289062500001],[-57.905029296875,-17.532324218750006],[-57.832470703125,-17.512109375],[-57.78886718749999,-17.573046875],[-57.780175781249994,-17.67177734375001],[-57.66166992187499,-17.947363281250006],[-57.58647460937499,-18.12226562500001],[-57.49565429687499,-18.214648437500003],[-57.57402343749999,-18.279296875],[-57.725,-18.733203125],[-57.783105468749994,-18.91425781250001],[-57.716796875,-19.044042968750006],[-58.131494140624994,-19.74453125],[-57.860742187499994,-19.979589843750006],[-57.887597656249994,-20.02041015625001],[-57.96015625,-20.04072265625001],[-58.021142578124994,-20.05517578125],[-58.09375,-20.15107421875001],[-58.15976562499999,-20.164648437500006]]]},"properties":{"name":"Bolivia","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-48.48588867187493,-27.76699218749998],[-48.554589843749994,-27.81220703125004],[-48.542187499999955,-27.57480468749999],[-48.41489257812495,-27.399609375],[-48.48588867187493,-27.76699218749998]]],[[[-48.584423828124955,-26.401562499999983],[-48.665771484375,-26.289648437500006],[-48.53974609374998,-26.170312500000023],[-48.584423828124955,-26.401562499999983]]],[[[-45.26025390624997,-23.889160156249986],[-45.451416015625,-23.895605468749977],[-45.30234375,-23.727539062500014],[-45.26025390624997,-23.889160156249986]]],[[[-44.12929687499994,-23.14189453124999],[-44.36015624999999,-23.17207031250001],[-44.24287109374998,-23.074121093750037],[-44.12929687499994,-23.14189453124999]]],[[[-38.90356445312497,-13.473437499999974],[-38.97758789062496,-13.523535156249963],[-39.02216796874998,-13.445605468749989],[-38.907128906249994,-13.401074218749983],[-38.90356445312497,-13.473437499999974]]],[[[-38.743847656249955,-13.097070312500037],[-38.668115234374966,-12.880175781249989],[-38.601171875,-12.99257812499998],[-38.743847656249955,-13.097070312500037]]],[[[-44.49931640625002,-2.939648437499983],[-44.597753906250006,-3.037597656249943],[-44.4814453125,-2.717578125000031],[-44.49931640625002,-2.939648437499983]]],[[[-44.88310546874996,-1.317871093749986],[-45.020849609375034,-1.372363281249974],[-44.978662109374966,-1.267285156249983],[-44.88310546874996,-1.317871093749986]]],[[[-51.83251953124997,-1.433789062499969],[-51.938378906249966,-1.452636718749986],[-51.680029296875006,-1.086132812500026],[-51.546044921874966,-0.649609375],[-51.25400390624998,-0.54140625],[-51.16074218749998,-0.666699218750011],[-51.27631835937498,-1.02177734374996],[-51.83251953124997,-1.433789062499969]]],[[[-49.62866210937497,-0.229199218749969],[-49.11699218749999,-0.163574218750014],[-48.39267578124995,-0.29736328125],[-48.83359375,-1.390039062500023],[-49.038476562499994,-1.5140625],[-49.17270507812498,-1.41259765625],[-49.233984375000034,-1.59951171874998],[-49.50664062499999,-1.511621093750023],[-49.587890625,-1.712402343749972],[-49.805126953124955,-1.790234375000026],[-50.06572265625002,-1.703808593749997],[-50.50761718749999,-1.787988281250009],[-50.759765625,-1.240234374999972],[-50.72949218749997,-1.126757812499946],[-50.57695312499999,-1.103125],[-50.709619140624994,-1.07773437499999],[-50.796093749999955,-0.90625],[-50.6455078125,-0.27285156249998],[-50.24824218749998,-0.11640625],[-49.62866210937497,-0.229199218749969]]],[[[-50.65288085937499,-0.131640624999989],[-50.926367187500034,-0.327343749999983],[-51.03808593749994,-0.225878906250003],[-50.84218750000002,-0.050195312500009],[-50.65288085937499,-0.131640624999989]]],[[[-49.44389648437499,-0.112402343749977],[-49.83007812499997,-0.093896484375023],[-49.50346679687496,0.083691406250011],[-49.37231445312497,0.001074218749963],[-49.44389648437499,-0.112402343749977]]],[[[-49.73823242187498,0.26816406250002],[-49.917089843750006,-0.023193359375014],[-50.339453125,0.043359375000051],[-50.27265624999998,0.231738281249974],[-49.73823242187498,0.26816406250002]]],[[[-50.42612304687498,0.139257812500048],[-50.44394531249998,-0.007666015624949],[-50.623925781249966,0.054394531249983],[-50.372753906249955,0.590869140625031],[-50.33227539062497,0.259033203125028],[-50.42612304687498,0.139257812500048]]],[[[-50.152929687500006,0.393017578125054],[-50.26132812499998,0.359179687500003],[-50.281689453124955,0.51650390624998],[-50.05883789062503,0.638037109374963],[-50.152929687500006,0.393017578125054]]],[[[-50.29897460937502,1.93852539062496],[-50.45610351562496,1.910498046875034],[-50.49101562499996,2.128613281249969],[-50.34199218749998,2.14174804687498],[-50.29897460937502,1.93852539062496]]],[[[-59.69970703125,4.353515625],[-59.73857421874993,4.226757812500026],[-59.62021484374998,4.023144531250026],[-59.557763671874966,3.960009765625031],[-59.551123046875034,3.933544921874969],[-59.854394531249994,3.5875],[-59.99433593749998,2.689990234375031],[-59.88964843749997,2.362939453125009],[-59.75522460937495,2.27412109375004],[-59.74350585937498,2.12163085937496],[-59.75175781249996,1.962402343750028],[-59.75620117187498,1.900634765624972],[-59.666601562500006,1.746289062499969],[-59.53569335937499,1.7],[-59.23120117187494,1.376025390625031],[-58.82177734374994,1.201220703125031],[-58.787207031250006,1.208496093750014],[-58.73032226562498,1.247509765625054],[-58.68461914062499,1.28105468749996],[-58.511865234374966,1.284667968749986],[-58.506054687499926,1.438671875000011],[-58.39580078124993,1.481738281249989],[-58.38037109375,1.530224609375011],[-58.34067382812498,1.587548828125051],[-58.03466796875,1.520263671875014],[-57.9828125,1.648437500000014],[-57.87343750000002,1.667285156250045],[-57.79565429687497,1.7],[-57.59443359375001,1.704101562499986],[-57.54575195312495,1.726074218750028],[-57.31748046874998,1.963476562499991],[-57.27558593749998,1.959228515625014],[-57.189599609374966,1.981591796875037],[-57.11889648437494,2.013964843749974],[-57.09267578125002,2.005810546874997],[-57.03759765625,1.936474609374997],[-56.96953124999999,1.91640625],[-56.48281249999994,1.942138671874986],[-56.019921874999966,1.842236328124983],[-55.96333007812498,1.85708007812498],[-55.929638671874955,1.8875],[-55.92163085937503,1.976660156250006],[-55.91533203124999,2.039550781250028],[-55.96196289062496,2.09511718749998],[-56.02006835937499,2.15815429687504],[-56.073632812499994,2.236767578124969],[-56.13769531249997,2.259033203124986],[-56.12939453124997,2.299511718749969],[-56.08779296875002,2.341308593750043],[-56.045117187499955,2.364404296875037],[-56.02036132812498,2.392773437500054],[-55.993505859375006,2.497509765624983],[-55.9755859375,2.515966796875006],[-55.957470703124955,2.52045898437504],[-55.730566406250006,2.406152343750023],[-55.385351562500006,2.440625],[-55.34399414062503,2.488769531249972],[-55.28603515625002,2.49965820312498],[-55.18769531249998,2.547509765625037],[-55.114111328125006,2.539208984375037],[-55.07031249999994,2.548339843750028],[-55.005810546874955,2.592968749999983],[-54.97866210937502,2.597656250000043],[-54.968408203124966,2.548339843750028],[-54.92656249999999,2.497363281250045],[-54.876074218750006,2.450390624999969],[-54.72221679687499,2.441650390624972],[-54.69741210937502,2.359814453124997],[-54.66186523437497,2.327539062499994],[-54.61625976562499,2.326757812500006],[-54.59194335937502,2.313769531250031],[-54.55048828125001,2.293066406249991],[-54.51508789062498,2.245458984374963],[-54.43310546875,2.207519531250057],[-54.13007812499998,2.121044921875026],[-53.76777343749998,2.354833984375048],[-52.90346679687502,2.211523437499977],[-52.58300781250003,2.528906249999977],[-52.327880859375,3.18173828125002],[-51.65253906249998,4.061279296874972],[-51.54707031250001,4.31088867187502],[-51.219921874999955,4.093603515624991],[-50.71440429687502,2.134033203125],[-50.458886718749994,1.829589843749972],[-49.957128906250006,1.65986328125004],[-49.898876953124955,1.16298828124998],[-50.29443359374997,0.835742187500003],[-50.755078124999955,0.222558593749966],[-51.28291015625001,-0.085205078125028],[-51.98081054687498,-1.367968749999974],[-52.22924804687497,-1.3625],[-52.664160156250034,-1.551757812500028],[-51.94755859374996,-1.586718749999946],[-50.89492187500002,-0.937597656249963],[-50.690039062500006,-1.761718749999986],[-50.40322265625002,-2.015527343750009],[-49.999218749999955,-1.831835937499974],[-49.71953125000002,-1.926367187499963],[-49.31367187500001,-1.731738281250003],[-49.63652343749996,-2.656933593750026],[-49.45751953125,-2.504589843749983],[-49.21103515624998,-1.916503906249986],[-48.99130859374998,-1.829785156249997],[-48.71000976562496,-1.487695312500023],[-48.46293945312499,-1.613964843749997],[-48.349804687499926,-1.482128906249955],[-48.46806640624996,-1.393847656250003],[-48.44980468749998,-1.145507812499943],[-48.11508789062498,-0.7375],[-47.557324218749955,-0.669921874999957],[-47.418652343749955,-0.765917968749974],[-47.39809570312502,-0.626660156250026],[-45.45859374999995,-1.35625],[-45.32915039062496,-1.71728515625],[-45.07636718749998,-1.466406249999949],[-44.72114257812498,-1.733496093750006],[-44.778515624999955,-1.798828125],[-44.651269531249966,-1.745800781250026],[-44.537792968749955,-2.052734374999943],[-44.75634765624997,-2.265527343749952],[-44.66240234375002,-2.373242187499955],[-44.435449218749966,-2.168066406249991],[-44.38183593749997,-2.365527343749989],[-44.52011718749998,-2.40546875000004],[-44.589013671874994,-2.573437499999983],[-44.72304687500002,-3.204785156249997],[-44.43754882812496,-2.944433593749977],[-44.228613281250006,-2.471289062499949],[-44.105566406250006,-2.493457031250031],[-44.19267578124999,-2.809570312499943],[-43.93291015624999,-2.583496093749986],[-43.45512695312499,-2.502050781250006],[-43.38007812499998,-2.376074218750006],[-42.93671874999998,-2.465039062500011],[-42.24960937499998,-2.7919921875],[-41.876171874999926,-2.746582031249986],[-41.479931640624955,-2.916503906249972],[-40.474560546874926,-2.795605468750026],[-39.96469726562498,-2.861523437499955],[-38.475781249999955,-3.717480468749997],[-38.04882812500003,-4.216406250000034],[-37.626318359375006,-4.592089843750003],[-37.30146484375001,-4.713085937499969],[-37.174658203125006,-4.912402343749974],[-36.590722656249966,-5.097558593749952],[-35.549414062500006,-5.129394531249957],[-35.39257812499994,-5.250878906250009],[-34.833886718749994,-7.024414062500014],[-34.83466796874998,-7.97148437499996],[-35.34086914062499,-9.230664062499983],[-35.76396484374993,-9.702539062500023],[-35.890820312499926,-9.687011718749957],[-35.88544921875001,-9.84765625],[-36.39833984374994,-10.484082031249983],[-36.768310546875,-10.671679687500017],[-37.18281249999998,-11.06845703125002],[-37.35600585937502,-11.403906249999977],[-37.35922851562495,-11.252539062499963],[-37.68872070312503,-12.1],[-38.019238281249955,-12.591308593750028],[-38.401757812499994,-12.966210937500023],[-38.69096679687502,-12.623925781250009],[-38.85175781250001,-12.790136718750034],[-38.76372070312502,-12.9072265625],[-38.835302734375034,-13.147167968750026],[-39.030908203124994,-13.365136718750023],[-39.08935546875,-13.588183593749989],[-38.988623046875006,-13.61503906249996],[-39.04814453124996,-14.043945312500028],[-38.94233398437498,-14.030664062499994],[-39.05957031249997,-14.654785156249957],[-38.88061523437503,-15.864257812499972],[-39.20288085937503,-17.178125],[-39.154003906249926,-17.70390625000003],[-39.650781249999966,-18.252343750000037],[-39.78330078124998,-19.571777343749986],[-40.001367187499994,-19.74199218750003],[-40.39594726562501,-20.56943359375002],[-40.78925781250001,-20.90605468750003],[-40.954541015624926,-21.237890624999963],[-41.04726562499999,-21.505664062499974],[-41.00029296875002,-21.99902343750003],[-41.70551757812498,-22.30966796874999],[-41.980419921874955,-22.580664062499963],[-42.042382812499966,-22.947070312500003],[-42.95830078124996,-22.96708984374999],[-43.154296875,-22.725195312500006],[-43.22416992187502,-22.991210937500014],[-43.898828124999966,-23.10146484375001],[-43.97382812499998,-23.057324218749983],[-43.675976562499955,-23.00947265625001],[-43.86616210937498,-22.910546875000023],[-44.63725585937496,-23.05546875],[-44.67382812499994,-23.206640625000034],[-44.56967773437495,-23.27402343749999],[-45.32539062499998,-23.59970703124999],[-45.464306640624955,-23.802539062500017],[-45.97207031250002,-23.795507812500006],[-46.86728515624998,-24.236328125000014],[-47.989160156249994,-25.03574218749999],[-47.92939453124998,-25.16826171874999],[-48.20273437499998,-25.41650390625003],[-48.18593749999994,-25.309863281249974],[-48.402490234374994,-25.27207031249999],[-48.47612304687499,-25.44296875],[-48.73173828124993,-25.36875],[-48.6921875,-25.49150390625003],[-48.40117187500002,-25.59736328125001],[-48.665771484375,-25.844335937499963],[-48.576318359374994,-25.935449218749966],[-48.61943359374996,-26.17939453125001],[-48.74829101562503,-26.26865234374999],[-48.55415039062498,-27.195996093749997],[-48.62080078124998,-28.075585937499966],[-48.799658203125006,-28.575292968749977],[-49.27128906249999,-28.87119140625005],[-49.745996093749966,-29.363183593749994],[-50.299511718749955,-30.42578125000003],[-50.92138671874997,-31.25839843750002],[-52.039208984374994,-32.11484374999996],[-52.063232421875,-31.830371093750017],[-51.68066406249994,-31.774609375000026],[-51.272167968749955,-31.476953125000037],[-51.16142578124996,-31.11884765625001],[-50.980078125000034,-31.09423828124997],[-50.94082031249994,-30.903710937499966],[-50.68930664062495,-30.70419921874999],[-50.71630859374994,-30.425976562499983],[-50.58193359375002,-30.438867187500037],[-50.56352539062499,-30.25361328125004],[-51.02495117187493,-30.36865234375003],[-51.29804687499998,-30.03486328124997],[-51.15727539062499,-30.364257812500014],[-51.283056640625034,-30.751562499999963],[-51.35908203124998,-30.674511718749983],[-51.506298828124955,-31.104492187500014],[-51.97246093749999,-31.383789062499986],[-52.19355468749998,-31.885546874999974],[-52.12739257812501,-32.1677734375],[-52.652246093749994,-33.137792968750006],[-53.37060546874997,-33.74218750000003],[-53.39755859374995,-33.737304687500014],[-53.46357421875001,-33.70986328125002],[-53.531347656250034,-33.65546875000004],[-53.531347656250034,-33.1708984375],[-53.511865234374966,-33.10869140625003],[-53.482861328124926,-33.068554687500026],[-53.39521484375001,-33.01035156249998],[-53.31010742187499,-32.927050781249974],[-53.21406249999998,-32.82109375],[-53.12558593749998,-32.73671875],[-53.15727539062496,-32.680078125],[-53.601708984374994,-32.40302734374997],[-53.76171875,-32.05683593749997],[-53.920605468749926,-31.95234375],[-54.220556640625034,-31.855175781249997],[-54.58764648437503,-31.48515625000003],[-55.036035156249994,-31.27900390625004],[-55.091162109375034,-31.31396484374997],[-55.173535156249926,-31.279589843749974],[-55.557324218749955,-30.8759765625],[-55.60302734375003,-30.85078125000001],[-55.62714843749998,-30.858105468749997],[-55.650488281250034,-30.89208984375],[-55.66523437500001,-30.92490234375002],[-55.807763671874994,-31.036718749999977],[-55.87368164062502,-31.069628906250017],[-55.95200195312498,-31.08085937499999],[-56.0046875,-31.079199218750006],[-56.01845703125002,-30.991894531249983],[-55.998974609374955,-30.837207031250003],[-56.4072265625,-30.44746093750001],[-56.83271484374998,-30.107226562499974],[-57.120507812499994,-30.144433593749994],[-57.21445312499995,-30.283398437499983],[-57.55229492187496,-30.261230468749986],[-57.60888671875003,-30.187792968750045],[-57.563867187499994,-30.139941406249974],[-57.40522460937501,-30.03388671875004],[-57.22465820312499,-29.782128906249994],[-56.938623046874994,-29.594824218750034],[-55.890527343749994,-28.370019531249994],[-55.68725585937497,-28.38164062499996],[-55.72548828125002,-28.20410156250003],[-55.10151367187501,-27.866796874999963],[-54.82910156250003,-27.55058593750003],[-54.32700195312495,-27.423535156249997],[-53.83818359375002,-27.121093750000014],[-53.668554687500006,-26.288183593749977],[-53.89116210937499,-25.66884765625001],[-54.15458984374999,-25.523046874999963],[-54.44394531249998,-25.625],[-54.615869140624994,-25.576074218750023],[-54.61054687499998,-25.432714843750034],[-54.47314453124997,-25.22021484375],[-54.43623046875001,-25.12128906250001],[-54.281005859375,-24.30605468750001],[-54.31826171874994,-24.128125],[-54.26689453124996,-24.06582031250001],[-54.241796875,-24.047265624999966],[-54.44023437500002,-23.90175781249998],[-54.62548828125,-23.8125],[-54.98266601562494,-23.974511718749966],[-55.081884765625006,-23.997656249999977],[-55.1943359375,-24.017480468750023],[-55.28691406249993,-24.00429687499999],[-55.366308593750034,-23.99101562499996],[-55.41591796875002,-23.95136718749997],[-55.4423828125,-23.86533203125002],[-55.4423828125,-23.792578125000034],[-55.458886718749966,-23.686718750000054],[-55.51845703124994,-23.627246093750017],[-55.53828124999998,-23.580957031249994],[-55.61767578125,-22.67148437499999],[-55.74663085937499,-22.51269531249997],[-55.753271484375006,-22.410156250000043],[-55.84916992187499,-22.307617187500014],[-55.991406249999926,-22.28115234375005],[-56.18984374999994,-22.28115234375005],[-56.246044921874926,-22.26464843749997],[-56.39487304687498,-22.092675781250023],[-56.44780273437502,-22.07617187500003],[-56.77519531249999,-22.261328125],[-57.955908203125034,-22.109179687500003],[-57.94267578124999,-21.79833984375],[-57.830224609374994,-20.99794921875001],[-57.91513671874998,-20.690332031249966],[-57.97905273437493,-20.65732421874999],[-58.00224609374996,-20.465429687499977],[-58.02539062499997,-20.41582031249999],[-58.05844726562495,-20.38613281249998],[-58.091503906249926,-20.33320312500004],[-58.124609375000034,-20.293457031250014],[-58.13779296874995,-20.237304687500043],[-58.15976562499998,-20.164648437499977],[-58.09375,-20.15107421874997],[-58.021142578124994,-20.05517578124997],[-57.96015625000001,-20.04072265625004],[-57.887597656249966,-20.020410156249994],[-57.860742187499994,-19.97958984375002],[-58.029931640624994,-19.83271484375004],[-58.131494140624994,-19.74453125],[-57.71679687499997,-19.044042968750034],[-57.73085937499999,-18.91718750000004],[-57.783105468749994,-18.91425781249997],[-57.725,-18.73320312500003],[-57.57402343749993,-18.279296875000014],[-57.49565429687496,-18.21464843749999],[-57.58647460937499,-18.122265625],[-57.66166992187493,-17.94736328124999],[-57.78017578125002,-17.67177734374998],[-57.78886718750002,-17.573046875000017],[-57.83247070312501,-17.512109375000037],[-57.90502929687497,-17.53232421874999],[-57.990917968749955,-17.512890625000026],[-58.20556640625,-17.363085937499974],[-58.347753906250006,-17.282128906249994],[-58.39599609374997,-17.234277343750023],[-58.417382812499994,-17.08056640624997],[-58.459814453125006,-16.910742187500006],[-58.478125,-16.70068359375003],[-58.470605468749994,-16.650195312500045],[-58.35039062500002,-16.49082031249999],[-58.34560546875002,-16.284375],[-58.375390624999966,-16.283593749999966],[-58.423681640625034,-16.30791015625003],[-58.49658203124994,-16.32666015625003],[-58.537939453125034,-16.32822265624999],[-60.17558593749996,-16.26933593749999],[-60.187207031249955,-16.132128906250017],[-60.206640625,-15.90195312500002],[-60.242333984374994,-15.479589843750034],[-60.38046874999998,-15.318261718750023],[-60.53046874999998,-15.143164062499977],[-60.58320312499998,-15.098339843749983],[-60.273339843749994,-15.088769531249994],[-60.372705078124994,-14.41875],[-60.506591796875,-13.78984375],[-61.077001953125034,-13.489746093750014],[-61.129150390625,-13.498535156250028],[-61.41606445312502,-13.526562499999969],[-61.511572265625006,-13.541210937500011],[-61.789941406249966,-13.525585937500026],[-61.87412109374998,-13.470410156249983],[-61.944726562499966,-13.40625],[-62.09477539062499,-13.241992187499989],[-62.118017578125006,-13.15976562500002],[-62.765478515625034,-12.99726562500004],[-63.01518554687502,-12.80556640624998],[-63.067480468750006,-12.669140624999983],[-63.34667968749994,-12.68007812499999],[-63.68857421874998,-12.478027343749957],[-64.42050781249995,-12.439746093749974],[-64.783447265625,-12.059375],[-65.18574218749998,-11.749511718749957],[-65.389892578125,-11.246289062500011],[-65.33403320312499,-10.892773437500026],[-65.44711914062503,-10.507421875000034],[-65.4369140625,-10.449023437499946],[-65.39545898437498,-10.392285156250026],[-65.31308593749998,-10.253027343749991],[-65.29858398437497,-10.146777343750017],[-65.39614257812494,-9.712402343749986],[-66.57534179687502,-9.899902343749986],[-67.41694335937495,-10.389843749999969],[-67.72177734374998,-10.683105468749943],[-67.83500976562496,-10.662792968749983],[-67.99169921875,-10.674414062499949],[-68.07167968749994,-10.703125],[-68.39799804687499,-11.01875],[-68.678369140625,-11.11279296875],[-68.84833984374998,-11.01113281249998],[-69.228515625,-10.955664062499963],[-69.46254882812497,-10.948144531250023],[-69.57861328125,-10.951757812499963],[-69.67402343749998,-10.9541015625],[-69.83979492187501,-10.93339843749996],[-69.96035156249997,-10.92988281250004],[-70.06630859374997,-10.982421875],[-70.22006835937503,-11.04765625],[-70.29038085937498,-11.064257812499974],[-70.34199218750001,-11.066699218750017],[-70.39228515624995,-11.058593749999972],[-70.45087890624998,-11.024804687500009],[-70.53325195312496,-10.946875],[-70.59653320312498,-10.976855468750017],[-70.642333984375,-11.010253906249986],[-70.59916992187499,-9.620507812500009],[-70.54111328124998,-9.4375],[-70.60791015625,-9.463671875000031],[-70.63691406249995,-9.478222656249969],[-71.041748046875,-9.81875],[-71.11528320312499,-9.852441406250009],[-71.33940429687499,-9.988574218750031],[-72.18159179687495,-10.003710937500003],[-72.37905273437497,-9.51015625],[-73.20942382812493,-9.411425781249946],[-73.08984375,-9.26572265625002],[-72.970361328125,-9.120117187500028],[-72.97402343750002,-8.9931640625],[-73.07050781249995,-8.8828125],[-73.203125,-8.719335937499991],[-73.30244140624995,-8.654003906250011],[-73.36040039062496,-8.479296875000031],[-73.39814453125001,-8.458984374999986],[-73.54912109374993,-8.34580078125002],[-73.73203125,-7.875390625],[-73.72041015624993,-7.782519531250017],[-73.76689453124999,-7.753515624999963],[-73.82207031249996,-7.738964843750026],[-73.89462890624998,-7.654785156250014],[-73.946875,-7.611230468750023],[-73.98173828124996,-7.58505859375002],[-74.00205078125003,-7.556054687499966],[-73.98173828124996,-7.535742187500006],[-73.95849609374994,-7.506640625000031],[-73.96430664062498,-7.378906250000028],[-73.74946289062498,-7.335351562500037],[-73.72041015624993,-7.309277343749969],[-73.758203125,-7.172753906249952],[-73.79301757812499,-7.135058593750003],[-73.75810546874999,-6.90576171875],[-73.137353515625,-6.4658203125],[-73.23554687500001,-6.098437500000017],[-73.209375,-6.028710937500023],[-73.16289062499996,-5.933398437499974],[-72.97988281249997,-5.634863281249991],[-72.88706054687498,-5.122753906250026],[-72.83193359374994,-5.09375],[-72.69873046874997,-5.067187499999989],[-72.60834960937495,-5.009570312499974],[-72.46899414062497,-4.901269531250023],[-72.35283203124993,-4.786035156249994],[-72.25678710937501,-4.74892578124998],[-71.8447265625,-4.504394531249986],[-70.97368164062499,-4.350488281249994],[-70.86601562499999,-4.229589843749963],[-70.79951171874995,-4.173339843749957],[-70.72158203124997,-4.15888671875004],[-70.53066406249997,-4.167578125000034],[-70.40463867187498,-4.150097656250026],[-70.34365234375,-4.193652343750017],[-70.31689453124994,-4.246972656250037],[-70.23916015625002,-4.30117187499998],[-70.12880859375,-4.286621093749943],[-70.05332031249998,-4.333105468750006],[-70.00395507812496,-4.327246093749963],[-69.97202148437503,-4.30117187499998],[-69.96591796875003,-4.2359375],[-69.94819335937498,-4.200585937500009],[-69.66904296875003,-2.667675781249997],[-69.40024414062498,-1.194921874999977],[-69.63398437500001,-0.50927734375],[-70.07050781249993,-0.13886718750004],[-70.05390624999993,0.578613281250028],[-69.47211914062498,0.72993164062504],[-69.15332031249994,0.65878906250002],[-69.31181640624999,1.050488281249969],[-69.85214843750003,1.05952148437504],[-69.84858398437493,1.708740234375043],[-68.17656249999999,1.719824218749991],[-68.25595703125,1.845507812500017],[-68.19379882812495,1.987011718749983],[-67.93623046874998,1.748486328124969],[-67.40043945312499,2.116699218750028],[-67.11923828124998,1.703613281249986],[-67.082275390625,1.185400390625006],[-66.87602539062499,1.223046875000037],[-66.34711914062498,0.7671875],[-66.06005859375003,0.78535156250004],[-65.68144531249999,0.983447265624989],[-65.52299804687493,0.843408203124966],[-65.55605468750002,0.687988281250014],[-65.47338867187497,0.691259765624977],[-65.10375976562497,1.108105468749983],[-64.20502929687493,1.52949218750004],[-64.00849609374995,1.931591796874969],[-63.43251953124994,2.155566406250045],[-63.389257812500006,2.411914062500045],[-64.04658203124998,2.502392578124997],[-64.22109375000002,3.587402343749972],[-64.66899414062496,4.01181640625002],[-64.788671875,4.276025390625023],[-64.57636718750001,4.139892578125],[-64.19248046874995,4.126855468750009],[-64.02148437500003,3.929101562500051],[-63.33867187500002,3.943896484375045],[-62.85698242187502,3.593457031249969],[-62.71210937499998,4.01791992187502],[-62.41064453124994,4.156738281249972],[-62.153125,4.098388671874986],[-61.82084960937496,4.197021484375],[-61.28007812500002,4.516894531249974],[-61.00283203125002,4.535253906249991],[-60.603857421875006,4.94936523437498],[-60.671972656250034,5.164355468749989],[-60.71196289062499,5.191552734375023],[-60.742138671874926,5.202050781250037],[-60.6513671875,5.221142578125011],[-60.45952148437499,5.188085937500034],[-60.40878906249998,5.21015625],[-60.33520507812497,5.199316406250006],[-60.241650390624926,5.257958984374966],[-60.14204101562498,5.238818359374974],[-59.990673828124955,5.082861328124991],[-60.14863281249998,4.533251953125031],[-59.69970703125,4.353515625]]]]},"properties":{"name":"Brazil","childNum":17}},{"geometry":{"type":"Polygon","coordinates":[[[-59.493310546874994,13.081982421874997],[-59.611328125,13.102099609374989],[-59.6466796875,13.303125],[-59.427636718749994,13.152783203124997],[-59.493310546874994,13.081982421874997]]]},"properties":{"name":"Barbados","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[115.02675781250005,4.899707031249989],[115.1400390625,4.899755859374991],[115.290625,4.352587890624989],[115.10703125000006,4.390429687499974],[115.02675781250005,4.899707031249989]]],[[[115.02675781250005,4.899707031249989],[114.74667968750006,4.718066406250017],[114.84023437500005,4.393212890625009],[114.65410156250007,4.037646484375045],[114.0638671875,4.592675781249966],[114.42441406250006,4.660400390625],[114.99541015625002,5.022363281250023],[115.02675781250005,4.899707031249989]]]]},"properties":{"name":"Brunei","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[91.63193359375003,27.759960937499997],[91.5947265625,27.557666015624996],[91.74306640625002,27.442529296874994],[91.85126953125001,27.438623046874994],[91.95097656249999,27.458300781249996],[91.99082031250003,27.4501953125],[92.044921875,27.364697265624997],[92.08339843750002,27.290625],[92.03115234375002,27.214306640624997],[92.00253906250003,27.147363281249994],[91.99228515625003,27.099902343749996],[91.99863281250003,27.079296875],[92.03085937500003,27.040820312499996],[92.06816406249999,26.9751953125],[92.07343750000001,26.91484375],[92.04970703125002,26.874853515625],[91.99833984374999,26.85498046875],[91.84208984374999,26.852978515624997],[91.67158203125001,26.802001953125],[91.517578125,26.807324218749997],[91.45585937499999,26.866894531249997],[91.4267578125,26.867089843749994],[91.28652343750002,26.789941406249994],[90.73964843750002,26.771679687499997],[90.34589843750001,26.890332031249997],[90.2060546875,26.847509765625],[90.12294921875002,26.754589843749997],[89.94316406249999,26.723925781249996],[89.76386718750001,26.7015625],[89.60996093750003,26.719433593749997],[89.58613281250001,26.778955078124994],[89.33212890625003,26.8486328125],[89.14824218749999,26.816162109375],[89.04091796875002,26.865039062499996],[88.85761718750001,26.961474609374996],[88.73876953125,27.175585937499996],[88.76035156250003,27.218115234375],[88.88164062499999,27.2974609375],[88.89140624999999,27.316064453124994],[88.94755859374999,27.464013671874994],[89.48066406250001,28.059960937499994],[89.53691406249999,28.107421875],[89.65273437500002,28.15830078125],[89.74980468749999,28.188183593749997],[89.81689453125,28.256298828124997],[89.89785156250002,28.294140625],[89.98105468750003,28.311181640624994],[90.34824218750003,28.243945312499996],[90.36298828125001,28.216503906249997],[90.33310546875003,28.093994140625],[90.35273437500001,28.080224609374994],[90.47734374999999,28.070849609374996],[90.63007812500001,28.078564453124997],[90.71572265625002,28.071728515624997],[91.02080078124999,27.970068359375],[91.07773437500003,27.974462890625],[91.22587890624999,28.071240234374997],[91.27304687500003,28.078369140625],[91.30683593750001,28.064013671874996],[91.36757812500002,28.021630859374994],[91.64189453124999,27.923242187499994],[91.63193359375003,27.759960937499997]]]},"properties":{"name":"Bhutan","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[25.2587890625,-17.793554687500006],[25.242285156250006,-17.969042968750003],[25.939355468750023,-18.93867187500001],[26.168066406250006,-19.53828125000001],[27.17822265625,-20.10097656250001],[27.28076171875,-20.47871093750001],[27.679296875,-20.503027343750006],[27.66943359375,-21.064257812500003],[28.014062500000023,-21.55419921875],[29.02558593750001,-21.796875],[29.042382812500023,-22.018359375],[29.237207031250023,-22.07949218750001],[29.315234375000017,-22.15771484375],[29.36484375,-22.193945312500006],[29.1298828125,-22.21328125],[29.013476562500017,-22.278417968750006],[28.94580078125,-22.395117187500006],[28.83984375,-22.480859375],[28.21015625000001,-22.693652343750003],[27.812597656250006,-23.108007812500006],[27.7685546875,-23.14892578125],[27.085546875,-23.577929687500003],[26.835058593750006,-24.240820312500006],[26.617773437500006,-24.3955078125],[26.451757812500006,-24.58271484375001],[26.39716796875001,-24.613574218750003],[26.130859375,-24.671484375],[26.031835937500006,-24.702441406250003],[25.912109375,-24.74746093750001],[25.518164062500006,-25.66279296875001],[25.21337890625,-25.75625],[24.33056640625,-25.74287109375001],[24.19296875,-25.632910156250006],[23.969531250000017,-25.626074218750006],[23.89375,-25.600878906250003],[23.389257812500006,-25.29140625],[23.148730468750017,-25.288671875],[22.878808593750023,-25.45791015625001],[22.59765625,-26.13271484375001],[22.548632812500017,-26.17841796875001],[22.47089843750001,-26.219042968750003],[22.217578125000017,-26.38886718750001],[22.090917968750006,-26.580175781250006],[22.01093750000001,-26.635839843750006],[21.78828125000001,-26.710058593750006],[21.738085937500017,-26.80683593750001],[21.694726562500023,-26.840917968750006],[20.73984375,-26.84882812500001],[20.641406250000017,-26.7421875],[20.79316406250001,-25.915625],[20.4306640625,-25.147070312500006],[19.98046875,-24.77675781250001],[19.977343750000017,-22.00019531250001],[20.9794921875,-21.9619140625],[20.97412109375,-18.31884765625],[23.219335937500006,-17.99970703125001],[23.599707031250006,-18.4599609375],[24.243945312500017,-18.0234375],[24.530566406250017,-18.052734375],[24.909082031250023,-17.821386718750006],[25.2587890625,-17.793554687500006]]]},"properties":{"name":"Botswana","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[22.86005859375001,10.919677734375],[23.646289062500017,9.822900390624994],[23.62265625,9.340625],[23.46826171875,9.11474609375],[23.53730468750001,8.815820312499994],[24.147363281250023,8.665625],[24.291406250000023,8.29140625],[24.853320312500017,8.137548828124991],[25.20039062500001,7.807910156249989],[25.18134765625001,7.557226562499991],[25.27890625,7.427490234375],[26.36181640625,6.635302734374989],[26.30859375,6.455322265625],[26.514257812500006,6.069238281249994],[27.143945312500023,5.722949218749989],[27.4033203125,5.109179687499989],[27.071875,5.199755859374989],[26.822070312500017,5.062402343749994],[25.52509765625001,5.31210937499999],[25.065234375000017,4.967431640624994],[24.31982421875,4.994140625],[23.41718750000001,4.663134765624989],[22.864550781250017,4.723876953125],[22.422167968750017,4.134960937499997],[20.55810546875,4.462695312499989],[20.226367187500017,4.829638671874989],[19.806542968750023,5.089306640624997],[19.5009765625,5.127490234374989],[19.06855468750001,4.891406249999989],[18.594140625000023,4.346240234374989],[18.6103515625,3.478417968749994],[18.474414062500017,3.622998046874997],[18.160937500000017,3.499804687499989],[17.491601562500023,3.687304687499989],[16.610742187500023,3.50537109375],[16.468554687500017,2.831738281249997],[16.183398437500017,2.270068359374989],[16.0634765625,2.90859375],[15.128710937500017,3.826904296875],[15.063574218750006,4.284863281249997],[14.73125,4.602392578124991],[14.56298828125,5.279931640624994],[14.616894531250011,5.865136718749994],[14.43115234375,6.038720703124994],[14.7392578125,6.27978515625],[15.206738281250011,7.206152343749991],[15.480078125,7.523779296874991],[15.957617187500006,7.507568359375],[16.37890625,7.683544921874997],[16.545312500000023,7.865478515625],[16.784765625,7.550976562499997],[17.6494140625,7.98359375],[18.56416015625001,8.0458984375],[19.108691406250017,8.656152343749994],[18.886035156250017,8.836035156249991],[18.95625,8.938867187499994],[20.342089843750017,9.127099609374994],[20.773242187500017,9.405664062499994],[21.682714843750006,10.289843749999989],[21.771484375,10.642822265625],[22.49384765625001,10.996240234374994],[22.86005859375001,10.919677734375]]]},"properties":{"name":"Central African Rep.","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-59.78759765624997,43.939599609374994],[-60.11748046874996,43.95336914062506],[-59.727148437500006,44.002832031249994],[-59.78759765624997,43.939599609374994]]],[[[-66.7625,44.68178710937502],[-66.8970703125,44.62890625],[-66.80214843749994,44.80537109374998],[-66.7625,44.68178710937502]]],[[[-60.961572265624966,45.48994140625001],[-61.081738281249926,45.55781249999998],[-60.91245117187498,45.56728515625005],[-60.961572265624966,45.48994140625001]]],[[[-73.69531249999997,45.58549804687502],[-73.85771484375002,45.573583984375006],[-73.57236328124998,45.69448242187502],[-73.69531249999997,45.58549804687502]]],[[[-73.56650390625003,45.469091796875034],[-73.960546875,45.44140624999997],[-73.68745117187498,45.561425781249994],[-73.47607421874997,45.704736328124994],[-73.56650390625003,45.469091796875034]]],[[[-61.10517578124998,45.94472656250002],[-60.86523437499997,45.983496093750006],[-61.05903320312501,45.70336914062497],[-60.73789062499995,45.75141601562498],[-60.46059570312494,45.96870117187501],[-60.733300781249994,45.956591796875045],[-60.297949218750034,46.31123046874998],[-60.22646484374994,46.19555664062506],[-59.86503906249993,46.159521484375006],[-59.8421875,45.941552734374994],[-60.67294921874995,45.59082031250006],[-61.28369140624994,45.573876953124966],[-61.44980468749995,45.71621093750002],[-61.40864257812501,46.17036132812498],[-60.87016601562499,46.796777343749966],[-60.40820312500003,47.00351562499998],[-60.332910156249966,46.737011718749955],[-60.49453125000002,46.270263671875],[-61.10517578124998,45.94472656250002]]],[[[-63.811279296875,46.46870117187501],[-63.68144531249993,46.561914062499994],[-63.12939453125,46.422216796875034],[-62.02373046874999,46.42158203125001],[-62.52607421875001,46.20288085937503],[-62.531347656250034,45.977294921875],[-63.02207031249998,46.06660156249998],[-62.89453125000003,46.12358398437496],[-63.056347656249955,46.22392578124996],[-62.97846679687498,46.31635742187498],[-63.21347656249998,46.15986328124998],[-63.641015624999966,46.23046874999997],[-63.758642578125034,46.397607421874994],[-64.11083984375003,46.425439453124994],[-64.13603515624999,46.59970703125006],[-64.388037109375,46.640869140625],[-63.99355468750002,47.06157226562502],[-64.08789062499997,46.77543945312499],[-63.811279296875,46.46870117187501]]],[[[-61.91411132812496,47.284521484375034],[-61.77255859374998,47.25981445312499],[-62.00830078124994,47.23427734375002],[-61.924707031249966,47.425146484375006],[-61.3955078125,47.63764648437504],[-61.91411132812496,47.284521484375034]]],[[[-54.227148437500034,47.44135742187501],[-54.32597656250002,47.408105468749994],[-54.12817382812494,47.646826171875034],[-54.227148437500034,47.44135742187501]]],[[[-74.70888671874997,45.0038574218751],[-73.55810546875,45.425097656250045],[-73.1595703125,46.01005859375002],[-72.10927734374997,46.55122070312504],[-71.26118164062495,46.75625],[-70.51948242187501,47.032519531250045],[-69.47104492187503,47.96728515625006],[-68.23818359374994,48.62641601562504],[-66.17817382812493,49.21313476562503],[-64.83632812499994,49.191748046875006],[-64.2162109375,48.873632812500034],[-64.51372070312493,48.84111328124999],[-64.24609374999994,48.69111328124998],[-64.34882812500001,48.423193359375034],[-65.259423828125,48.02124023437503],[-65.92670898437495,48.188867187499994],[-66.70439453125002,48.0224609375],[-66.35961914062494,48.06064453125006],[-65.84941406250002,47.91103515625005],[-65.60722656249996,47.67001953125006],[-65.00166015624995,47.84682617187502],[-64.70322265625,47.72485351562503],[-64.91220703125003,47.36865234375003],[-65.31889648437502,47.101220703124994],[-64.831396484375,47.06079101562503],[-64.88251953124993,46.822851562500034],[-64.54150390625,46.240332031250034],[-63.91591796875002,46.165820312500045],[-63.831933593749966,46.107177734375],[-64.05639648437503,46.021337890625006],[-63.70288085937494,45.858007812500034],[-62.70068359374997,45.740576171875006],[-62.750097656250006,45.64824218750002],[-62.483056640624966,45.62182617187506],[-61.955517578124955,45.86816406249997],[-61.776513671874994,45.655615234375006],[-61.49228515624998,45.68701171875],[-61.350488281249966,45.57368164062501],[-61.28198242187494,45.441064453124994],[-61.46098632812502,45.36669921875003],[-61.03154296875002,45.29174804687506],[-63.306298828124994,44.64257812500003],[-63.60400390624997,44.68320312500006],[-63.60976562499999,44.47998046875006],[-63.999707031249926,44.64492187499999],[-64.10087890624993,44.487451171874966],[-64.1669921875,44.58666992187503],[-64.28608398437493,44.55034179687499],[-64.27568359374993,44.33408203124998],[-65.48168945312497,43.51806640625],[-65.73813476562498,43.56074218750001],[-65.88691406250001,43.79521484374999],[-66.125732421875,43.813818359375034],[-66.19306640624995,44.143847656250045],[-65.86801757812498,44.56879882812501],[-66.14638671875002,44.43593750000005],[-66.090625,44.50493164062499],[-64.44814453125,45.33745117187502],[-64.13549804687497,45.023046875],[-64.09316406249997,45.21708984375002],[-63.368017578125034,45.36479492187502],[-64.87314453124998,45.35458984375006],[-64.31464843749998,45.83569335937503],[-64.48222656250002,45.80634765624998],[-64.63271484375002,45.94663085937506],[-64.77851562499998,45.63842773437497],[-65.88447265624995,45.22290039062506],[-66.10976562500002,45.316601562499955],[-66.02656249999995,45.417578125],[-66.43984374999994,45.09589843750001],[-66.87246093749997,45.067285156249966],[-67.12485351562498,45.16943359375],[-67.366943359375,45.17377929687498],[-67.43266601562496,45.603125],[-67.80224609374994,45.7275390625],[-67.806787109375,47.08281249999999],[-68.23549804687502,47.34594726562503],[-68.93720703124998,47.21123046875002],[-69.0501953125,47.426611328125034],[-69.24287109374998,47.46298828124998],[-70.00771484375002,46.70893554687501],[-70.296240234375,45.90610351562506],[-70.86503906249999,45.27070312500001],[-71.327294921875,45.29008789062496],[-71.51752929687495,45.00756835937497],[-74.663232421875,45.00390625000003],[-74.70888671874997,45.0038574218751]]],[[[-126.09208984374995,49.35400390625003],[-126.06401367187499,49.26362304687501],[-126.22963867187498,49.29565429687506],[-126.09208984374995,49.35400390625003]]],[[[-54.55439453125001,49.5888671875],[-54.786523437499966,49.496142578125045],[-54.86357421875002,49.576074218749966],[-54.55439453125001,49.5888671875]]],[[[-54.093701171874955,49.74443359374999],[-53.98066406250001,49.66196289062498],[-54.28613281249997,49.595361328124994],[-54.27763671875002,49.71147460937502],[-54.093701171874955,49.74443359374999]]],[[[-126.64121093749999,49.605810546875006],[-126.93857421874999,49.71845703125004],[-126.92583007812497,49.837744140625006],[-126.73813476562502,49.84365234375005],[-126.64121093749999,49.605810546875006]]],[[[-61.801123046875034,49.093896484374966],[-63.04150390624994,49.224951171875034],[-64.485205078125,49.88696289062497],[-64.13144531249995,49.94165039062503],[-62.858544921874966,49.70546875000005],[-61.817138671875,49.28354492187498],[-61.69614257812495,49.139013671875006],[-61.801123046875034,49.093896484374966]]],[[[-125.18413085937497,50.09711914062498],[-125.301171875,50.4140625],[-125.07402343750002,50.22065429687501],[-125.18413085937497,50.09711914062498]]],[[[-127.19731445312495,50.640380859375],[-125.48208007812501,50.316796874999966],[-124.83061523437499,49.53007812500002],[-123.99580078125,49.22402343750002],[-123.49702148437498,48.58208007812499],[-123.38989257812501,48.67021484374999],[-123.31064453125003,48.41103515625002],[-123.57314453124995,48.32280273437499],[-123.91694335937501,48.386572265625034],[-125.12070312500002,48.76079101562496],[-124.84965820312496,49.02827148437501],[-124.81264648437497,49.212646484375],[-124.92734374999998,49.01420898437499],[-125.489453125,48.933789062499955],[-125.82851562499998,49.09184570312499],[-125.64423828125001,49.18579101562506],[-125.95166015625001,49.24804687500003],[-125.93540039062499,49.401464843750006],[-126.51914062499999,49.396777343750045],[-126.54189453125001,49.590478515624966],[-126.13408203124997,49.672314453124955],[-126.52524414062499,49.71958007812498],[-126.90332031250001,49.94414062499999],[-127.114306640625,49.879736328125034],[-127.24980468749999,50.13798828124996],[-127.34941406249995,50.05195312500001],[-127.46713867187503,50.163427734375006],[-127.86391601562495,50.12773437500002],[-127.90585937499998,50.44521484375002],[-127.48652343749998,50.404638671875034],[-127.46591796874996,50.58310546875006],[-128.05834960937494,50.498486328124955],[-128.34604492187503,50.744238281250006],[-127.91806640624998,50.86054687500001],[-127.19731445312495,50.640380859375]]],[[[-55.45874023437494,51.53652343750005],[-55.58339843749994,51.38857421875002],[-56.031103515625034,51.328369140625],[-55.8,51.033300781250034],[-56.732324218749966,50.007714843749994],[-56.822167968749966,49.613476562499955],[-56.179394531249955,50.114990234375],[-56.161279296874994,49.94013671874998],[-55.50292968749997,49.98315429687503],[-56.14018554687496,49.61914062500006],[-55.869824218749955,49.67016601562506],[-56.08730468750002,49.45195312499999],[-55.375927734374955,49.48974609374997],[-55.34384765624998,49.37290039062506],[-55.22954101562496,49.508154296875006],[-55.35317382812502,49.07944335937506],[-54.50219726562503,49.52734375],[-54.44824218749997,49.329443359375006],[-53.957714843749955,49.44184570312498],[-53.61943359374996,49.321630859375006],[-53.57343750000001,49.141210937500034],[-54.16127929687494,48.787695312500034],[-53.852880859375006,48.81132812499996],[-53.966015624999955,48.70668945312505],[-53.70634765624999,48.65551757812503],[-54.11445312499998,48.393603515625045],[-53.027587890625,48.634716796874955],[-53.1357421875,48.40185546875003],[-53.60976562500002,48.20771484375001],[-53.56943359374998,48.088085937499955],[-53.869580078124926,48.019677734374966],[-53.63823242187496,48.01464843750003],[-53.863671874999966,47.787011718749994],[-53.67236328125,47.64824218749999],[-53.28271484375,47.99785156249996],[-52.86601562499993,48.11298828124998],[-53.16982421875002,47.51210937500005],[-52.945019531249955,47.55283203124998],[-52.782421874999955,47.769433593749966],[-52.653662109375034,47.549414062500006],[-53.11484375,46.65581054687502],[-53.32304687499996,46.71835937499998],[-53.589794921874955,46.638867187499955],[-53.59736328124998,47.14599609374997],[-54.00957031249993,46.839599609375],[-54.173730468749994,46.88037109375003],[-53.84951171875002,47.440332031249994],[-53.98901367187503,47.756201171875034],[-54.191845703124955,47.85981445312501],[-54.488134765625006,47.40385742187502],[-54.47392578124996,47.54707031249998],[-54.856640624999955,47.385009765625],[-55.31572265624993,46.905712890624955],[-55.78852539062498,46.86723632812502],[-55.91923828124996,47.01689453124996],[-55.49150390624996,47.16064453125003],[-54.78461914062501,47.664746093749955],[-55.366308593750034,47.66108398437501],[-55.57612304687498,47.46523437499999],[-56.12724609374999,47.50283203125002],[-55.867089843749994,47.592333984375045],[-55.85791015625,47.81918945312498],[-56.774121093749955,47.56499023437499],[-58.33686523437501,47.73085937500002],[-59.11694335937494,47.57070312499999],[-59.32065429687498,47.736914062500006],[-59.272070312500034,47.99555664062504],[-58.330224609374994,48.52211914062502],[-59.16767578124998,48.558496093749966],[-58.84179687500003,48.74643554687498],[-58.906445312499955,48.65019531249999],[-58.716455078124994,48.59804687500002],[-58.403662109375034,49.08432617187498],[-57.99052734374996,48.987939453124966],[-58.09892578124993,49.07744140624999],[-57.98007812499998,49.229638671874994],[-58.19091796875003,49.25874023437498],[-58.21337890625,49.38666992187501],[-58.01582031249998,49.54248046874997],[-57.79130859374999,49.48999023437503],[-57.92617187499999,49.700830078124994],[-57.4326171875,50.50581054687504],[-57.179589843749966,50.614843750000034],[-57.29799804687502,50.69873046874997],[-57.03593750000002,51.01083984374998],[-56.68242187500002,51.332763671875],[-56.025585937499955,51.56835937500006],[-55.6904296875,51.471337890624994],[-55.666406249999966,51.57890624999999],[-55.45874023437494,51.53652343750005]]],[[[-127.92465820312498,51.47387695312497],[-128.14877929687498,51.62670898437503],[-128.03173828125006,51.708398437499966],[-127.92465820312498,51.47387695312497]]],[[[-79.38427734374997,51.951953125000045],[-79.64375,52.01005859374996],[-79.27128906249996,52.086816406249966],[-79.38427734374997,51.951953125000045]]],[[[-128.36875,52.40087890625],[-128.43979492187503,52.696386718750006],[-128.24726562499998,52.784375],[-128.36875,52.40087890625]]],[[[-80.73168945312494,52.74726562499998],[-82.03925781249998,53.04990234374998],[-81.84731445312494,53.18627929687497],[-81.135595703125,53.20581054687503],[-80.73168945312494,52.74726562499998]]],[[[-131.7537109375,53.195556640625],[-131.63466796874997,52.92216796874999],[-131.97177734374998,52.87983398437498],[-131.45522460937502,52.70170898437502],[-131.59057617187494,52.578222656250006],[-131.25971679687495,52.415917968749966],[-131.31992187499998,52.30307617187498],[-131.142626953125,52.291113281250034],[-131.221533203125,52.15361328124999],[-132.16508789062493,52.783300781250034],[-132.14375,52.99931640624999],[-132.54677734374997,53.1375],[-131.7537109375,53.195556640625]]],[[[-128.55244140624998,52.93974609375002],[-128.50991210937502,52.51860351562502],[-128.678955078125,52.289648437500006],[-128.74633789062494,52.763378906249955],[-128.89980468749997,52.67382812500003],[-129.175927734375,52.964941406250006],[-129.033251953125,53.27993164062505],[-128.63266601562498,53.1125],[-128.55244140624998,52.93974609375002]]],[[[-129.167724609375,53.11787109374998],[-129.32387695312502,53.142138671875045],[-129.23818359374997,53.33007812500006],[-129.167724609375,53.11787109374998]]],[[[-129.84858398437498,53.167919921874955],[-130.51757812500003,53.54423828124999],[-130.45200195312498,53.63115234375002],[-129.94472656250002,53.436376953125034],[-129.75483398437498,53.244775390624994],[-129.84858398437498,53.167919921874955]]],[[[-130.236279296875,53.95854492187502],[-130.38422851562504,53.84394531250001],[-130.703173828125,53.892236328124994],[-130.44799804687497,54.08901367187502],[-130.236279296875,53.95854492187502]]],[[[-132.65551757812503,54.12749023437496],[-132.30336914062497,54.098876953125],[-132.16611328124998,53.95522460937505],[-132.53466796875,53.651708984375034],[-132.18696289062504,53.68481445312503],[-132.134423828125,54.03427734374998],[-131.66762695312502,54.14135742187503],[-131.957421875,53.308691406250034],[-132.34726562500003,53.18920898437503],[-132.747509765625,53.310498046874955],[-132.425,53.33696289062502],[-132.84501953125,53.507714843749994],[-133.07949218749997,53.837011718750034],[-133.04838867187493,54.15893554687497],[-132.65551757812503,54.12749023437496]]],[[[-130.92714843749997,54.47905273437499],[-130.90683593750003,54.63178710937504],[-130.75800781249998,54.61376953125],[-130.92714843749997,54.47905273437499]]],[[[-130.57534179687497,54.769677734374966],[-130.2140625,55.02587890625003],[-130.34941406249996,54.814550781250034],[-130.57534179687497,54.769677734374966]]],[[[-79.97758789062499,56.20703125000006],[-80.057470703125,56.28735351562497],[-79.57973632812502,56.466357421875045],[-79.97758789062499,56.20703125000006]]],[[[-78.93559570312496,56.26606445312498],[-79.17548828124998,55.88505859374999],[-79.18212890625,56.21215820312503],[-79.4951171875,55.87475585937503],[-79.76474609374995,55.80678710937505],[-79.54472656249999,56.12836914062501],[-79.9875,55.89213867187502],[-79.45888671875,56.53974609374998],[-79.53632812499995,56.180078124999966],[-79.27241210937493,56.600439453125006],[-78.93559570312496,56.26606445312498]]],[[[-61.743603515624955,57.55458984375005],[-61.6375,57.41606445312499],[-62.01123046875003,57.54848632812505],[-61.743603515624955,57.55458984375005]]],[[[-79.71650390624998,57.515527343749994],[-79.80844726562498,57.44243164062502],[-79.74257812499997,57.60795898437499],[-79.71650390624998,57.515527343749994]]],[[[-69.16005859375,59.04023437500001],[-69.35283203125002,58.96074218749999],[-69.30322265625003,59.144873046875006],[-69.16005859375,59.04023437500001]]],[[[-64.40703125,60.367089843749966],[-64.44194335937496,60.2978515625],[-64.73793945312497,60.37563476562502],[-64.83642578124997,60.50102539062499],[-64.40703125,60.367089843749966]]],[[[-68.23378906250002,60.24091796875001],[-68.36787109374998,60.314746093750045],[-68.08759765624998,60.58784179687501],[-67.81884765624994,60.449511718750074],[-68.23378906250002,60.24091796875001]]],[[[-78.531640625,60.72856445312499],[-78.66889648437498,60.716894531250006],[-78.24169921875,60.818652343750045],[-78.531640625,60.72856445312499]]],[[[-64.83261718749998,61.366064453125006],[-65.43212890625,61.649511718750034],[-64.78964843750003,61.662207031250034],[-64.83261718749998,61.366064453125006]]],[[[-65.03056640624999,61.879052734374966],[-64.89658203124995,61.73330078125005],[-65.23535156249997,61.89770507812506],[-65.03056640624999,61.879052734374966]]],[[[-79.54531250000002,62.41171875000006],[-79.28647460937495,62.247656250000034],[-79.32392578124995,62.02607421875001],[-79.81611328124995,61.59462890625002],[-80.26518554687496,61.818212890625006],[-80.26005859374996,62.10903320312502],[-79.9267578125,62.39287109375002],[-79.54531250000002,62.41171875000006]]],[[[-64.82382812499998,62.558740234374994],[-64.46503906249998,62.535937500000045],[-64.47832031250002,62.417871093749966],[-64.901220703125,62.421044921874994],[-64.82382812499998,62.558740234374994]]],[[[-70.33706054687497,62.548730468749994],[-70.76606445312498,62.596875],[-71.22011718750002,62.873925781249966],[-70.44262695312497,62.73378906250002],[-70.33706054687497,62.548730468749994]]],[[[-82.00048828124997,62.95419921874998],[-82.02583007812498,62.73007812499998],[-82.56826171875002,62.403222656249994],[-83.01582031249998,62.20991210937498],[-83.69887695312497,62.16025390624998],[-83.91049804687498,62.45415039062499],[-83.37641601562498,62.904931640624994],[-82.00048828124997,62.95419921874998]]],[[[-77.87670898437497,63.470556640625034],[-77.53271484374997,63.233642578125],[-77.94243164062496,63.11440429687502],[-78.536767578125,63.423730468749994],[-77.87670898437497,63.470556640625034]]],[[[-76.67758789062503,63.393945312499966],[-77.36474609374994,63.588330078124955],[-77.13369140624997,63.68203125000002],[-76.65244140624998,63.503564453124994],[-76.67758789062503,63.393945312499966]]],[[[-84.91962890624995,65.26108398437503],[-84.50112304687497,65.45844726562501],[-84.08486328125,65.21782226562502],[-82.05,64.64428710937506],[-81.67612304687498,64.21264648437503],[-81.88710937499997,64.01640625000002],[-80.82895507812495,64.08994140625],[-80.30205078124999,63.76220703125003],[-81.04638671875003,63.461572265624966],[-82.378125,63.706787109375],[-82.46708984375002,63.92695312500001],[-83.30395507812497,64.14379882812506],[-84.63291015625,63.30922851562502],[-85.39262695312496,63.119677734375045],[-85.76894531249997,63.70034179687502],[-87.15190429687499,63.58564453125001],[-86.93203124999997,63.90166015625002],[-86.252099609375,64.13686523437497],[-86.37426757812503,64.56582031249997],[-86.074609375,65.533837890625],[-85.55468750000003,65.91865234374995],[-85.17622070312501,65.746875],[-85.23994140624993,65.51030273437499],[-84.91962890624995,65.26108398437503]]],[[[-84.67475585937498,65.575],[-85.096337890625,65.756201171875],[-85.14960937500001,66.01538085937506],[-84.75737304687496,65.85893554687505],[-84.67475585937498,65.575]]],[[[-83.72597656249997,65.796728515625],[-83.23374023437495,65.71503906249995],[-83.332421875,65.63105468749998],[-84.11826171874995,65.77177734375007],[-84.40717773437501,66.13100585937497],[-83.78696289062495,65.96577148437498],[-83.72597656249997,65.796728515625]]],[[[-108.09272460937501,67.00517578124999],[-107.80551757812493,66.99858398437507],[-107.94394531249999,66.8578125],[-108.09272460937501,67.00517578124999]]],[[[-62.681542968749966,67.05629882812502],[-62.87163085937499,67.06259765625006],[-62.41679687499996,67.18847656250003],[-62.681542968749966,67.05629882812502]]],[[[-107.89985351562497,67.40180664062495],[-107.95024414062503,67.31821289062498],[-108.15224609374997,67.429443359375],[-108.04897460937498,67.664892578125],[-107.89985351562497,67.40180664062495]]],[[[-73.621728515625,67.783837890625],[-74.573388671875,67.82866210937507],[-74.70654296875003,68.06708984374995],[-73.49375,68.00063476562502],[-73.40717773437498,67.79306640625],[-73.621728515625,67.783837890625]]],[[[-86.59555664062498,67.7359375],[-86.89252929687498,67.836572265625],[-86.95981445312503,68.10024414062497],[-86.70209960937501,68.30561523437498],[-86.42114257812497,68.18344726562503],[-86.59555664062498,67.7359375]]],[[[-75.67587890624998,68.32250976562506],[-75.078125,68.17314453124999],[-75.20195312499996,67.45917968750001],[-75.78007812499996,67.28354492187503],[-76.94418945312498,67.25029296875002],[-77.30439453125001,67.68510742187505],[-77.12587890624997,67.94707031250002],[-76.59580078124998,68.27895507812497],[-75.67587890624998,68.32250976562506]]],[[[-78.98271484374999,68.19282226562501],[-79.17475585937493,68.26445312500002],[-78.95258789062495,68.35302734375006],[-78.98271484374999,68.19282226562501]]],[[[-104.54067382812497,68.405908203125],[-105.05136718749999,68.55903320312501],[-104.60200195312503,68.56152343749997],[-104.54067382812497,68.405908203125]]],[[[-74.880859375,68.34868164062505],[-75.40024414062503,68.52548828125],[-75.28740234374996,68.68774414062503],[-74.98364257812497,68.64760742187502],[-74.880859375,68.34868164062505]]],[[[-101.84589843749994,68.58632812499997],[-102.30815429687497,68.681982421875],[-102.01337890624995,68.82539062500001],[-101.73295898437495,68.75341796875],[-101.84589843749994,68.58632812499997]]],[[[-100.21723632812497,68.80668945312502],[-100.59653320312496,68.76640625000007],[-100.56547851562495,69.02680664062501],[-100.21723632812497,68.80668945312502]]],[[[-99.99467773437502,69.01352539062503],[-100.19570312500002,68.991455078125],[-100.153125,69.12949218750003],[-99.99467773437502,69.01352539062503]]],[[[-79.21064453124995,68.845458984375],[-79.24267578125,69.04926757812495],[-78.33256835937496,69.38603515624999],[-78.77919921875,68.95048828124999],[-79.21064453124995,68.845458984375]]],[[[-90.1998046875,69.419091796875],[-90.33027343749993,69.252197265625],[-90.49204101562503,69.369873046875],[-90.1998046875,69.419091796875]]],[[[-76.99536132812503,69.14375],[-77.37939453125,69.2740234375],[-77.18754882812502,69.440087890625],[-76.66884765625002,69.36616210937504],[-76.99536132812503,69.14375]]],[[[-101.171728515625,69.39707031250003],[-101.31289062499998,69.57607421875],[-101.00063476562497,69.4619140625],[-101.171728515625,69.39707031250003]]],[[[-95.51367187499997,69.57363281250002],[-95.43745117187498,69.37846679687505],[-95.73012695312502,69.34755859374997],[-95.80620117187499,69.56049804687501],[-95.89345703125,69.35175781250004],[-95.87583007812495,69.60600585937505],[-95.51367187499997,69.57363281250002]]],[[[-67.91469726562494,69.54096679687504],[-68.22138671874998,69.61674804687502],[-67.908837890625,69.68183593749995],[-67.91469726562494,69.54096679687504]]],[[[-78.02910156249993,69.71489257812502],[-78.03999023437495,69.6083984375],[-78.84819335937502,69.4828125],[-78.02910156249993,69.71489257812502]]],[[[-79.43066406250003,69.78779296874995],[-79.55283203124995,69.63085937500006],[-80.04750976562502,69.63432617187505],[-79.97783203124993,69.50966796874997],[-80.794775390625,69.68925781250005],[-80.42421875000002,69.797607421875],[-79.43066406250003,69.78779296874995]]],[[[-97.439453125,69.64267578125006],[-96.29995117187494,69.34438476562505],[-95.7513671875,68.89765624999998],[-95.26777343749998,68.82607421874997],[-96.40156249999995,68.47070312500003],[-97.47202148437498,68.543701171875],[-98.320556640625,68.84272460937498],[-98.70380859374993,68.80278320312502],[-98.90449218749995,68.93242187500005],[-99.25400390625002,68.86318359374997],[-99.49467773437493,68.95957031249998],[-99.455712890625,69.13120117187503],[-98.45595703124997,69.33466796875001],[-98.54599609375,69.57290039062497],[-98.04135742187498,69.456640625],[-98.20048828124996,69.79697265625006],[-97.79072265624998,69.86162109374999],[-97.439453125,69.64267578125006]]],[[[-86.91303710937501,70.11323242187501],[-86.55766601562499,69.99531249999995],[-87.3232421875,70.08012695312502],[-86.91303710937501,70.11323242187501]]],[[[-74.70888671874997,45.0038574218751],[-74.76245117187494,44.99907226562502],[-74.99614257812496,44.970117187499966],[-75.40126953124997,44.77226562499999],[-75.81933593749997,44.468017578125],[-76.18579101562503,44.24223632812502],[-76.819970703125,43.62880859375011],[-77.59653320312492,43.62861328125007],[-78.45825195312497,43.63149414062511],[-78.72041015624993,43.62495117187501],[-78.84555664062492,43.58334960937506],[-79.171875,43.466552734375085],[-79.0830566406249,43.33139648437509],[-79.05922851562494,43.27807617187506],[-79.066064453125,43.10610351562502],[-79.02617187499996,43.01733398437506],[-78.98076171874993,42.98061523437502],[-78.91508789062496,42.90913085937504],[-79.17373046875,42.74853515625],[-80.24755859374991,42.366015625000045],[-81.02822265624997,42.247167968750006],[-81.50732421874997,42.10346679687504],[-81.97416992187496,41.88872070312499],[-82.43906249999989,41.6748535156251],[-82.69003906249995,41.675195312499994],[-83.141943359375,41.97587890624996],[-83.10952148437497,42.25068359375001],[-82.54531249999997,42.62470703124998],[-82.19038085937495,43.47407226562501],[-82.137841796875,43.570898437500034],[-82.48505859374993,45.08374023437503],[-82.55107421874987,45.3473632812501],[-82.91933593749994,45.51796875000002],[-83.59267578125,45.81713867187506],[-83.46948242187503,45.99467773437499],[-83.61596679687503,46.116845703124994],[-83.97778320312494,46.08491210937507],[-84.12319335937497,46.50292968749997],[-84.44047851562496,46.49814453125006],[-84.66577148437503,46.54326171875002],[-84.87597656249994,46.89990234375003],[-85.07006835937497,46.97993164062498],[-85.65224609375,47.21997070312503],[-86.67216796874996,47.636425781249955],[-87.20800781249997,47.848486328125006],[-87.74389648437497,48.06054687500003],[-88.37817382812497,48.30307617187506],[-89.45566406249992,47.99624023437508],[-90.79731445312495,48.13105468750001],[-91.04345703124991,48.19370117187498],[-91.38720703124997,48.05854492187498],[-92.00517578125002,48.301855468750006],[-92.3484375,48.276611328125],[-92.41459960937493,48.276611328125],[-92.50058593749995,48.43535156250002],[-92.83671875,48.567773437499994],[-93.25795898437497,48.62885742187501],[-93.37788085937498,48.61655273437498],[-93.70771484374995,48.525439453125074],[-93.85161132812496,48.607275390625034],[-94.6208984374999,48.7426269531251],[-94.71279296874997,48.863427734374994],[-94.80346679687497,49.0029296875],[-94.86040039062493,49.258593750000045],[-94.85434570312495,49.304589843749994],[-95.15527343749997,49.3696777343751],[-95.16206054687493,48.991748046875045],[-95.39790039062493,48.99316406249997],[-96.25068359374993,48.99316406249997],[-96.67705078124993,48.99316406249997],[-97.52983398437493,48.99316406249997],[-98.80898437499995,48.99316406249997],[-104.77832031249997,48.993115234375125],[-110.7476562499999,48.993066406250136],[-116.71704101562493,48.993066406250136],[-118.84892578124993,48.993066406250136],[-119.27534179687494,48.993066406250136],[-119.70170898437495,48.99301757812495],[-120.98085937499995,48.99301757812495],[-122.78876953124994,48.99301757812495],[-122.82670898437495,49.028417968750034],[-122.9241699218749,49.07465820312504],[-122.96269531249993,49.07460937500005],[-123.06328125,48.97773437500001],[-123.22944335937493,49.260498046875085],[-122.87910156249995,49.39892578125003],[-123.27675781249997,49.34394531250001],[-123.1875,49.680322265624994],[-123.53056640624989,49.39731445312506],[-124.02861328125002,49.602880859375006],[-123.99262695312497,49.736181640625006],[-123.81718749999993,49.58657226562508],[-123.58247070312498,49.68125],[-123.87441406250005,49.736816406250114],[-123.82543945312493,50.14423828124998],[-123.94589843749995,50.18393554687509],[-123.9849121093749,49.87558593749998],[-124.28125,49.77211914062502],[-124.78237304687492,50.02011718749992],[-125.05668945312495,50.418652343750125],[-124.8598632812499,50.872412109375006],[-125.05878906249993,50.51386718749998],[-125.4763183593749,50.49716796874995],[-125.53935546874996,50.64902343749998],[-125.64130859374994,50.46621093750005],[-126.09433593749995,50.497607421875045],[-126.44746093750004,50.58774414062492],[-125.90410156250002,50.704931640625006],[-126.51435546875,50.679394531250125],[-126.37460937499995,50.83735351562498],[-126.5217773437499,50.86606445312498],[-126.51733398437497,51.0568359375001],[-126.63178710937494,50.915136718750006],[-127.057568359375,50.86752929687509],[-127.70810546875,51.15117187499996],[-127.41967773437496,51.608056640625136],[-126.69145507812502,51.70341796875002],[-127.33872070312489,51.70737304687495],[-127.66870117187497,51.47758789062502],[-127.85053710937498,51.67319335937509],[-127.79536132812493,52.19101562500006],[-127.43793945312504,52.356152343750125],[-127.24223632812496,52.39511718750009],[-126.71396484374989,52.060693359374994],[-127.19399414062498,52.45766601562502],[-126.95136718749994,52.7510253906251],[-127.01933593750002,52.8424804687501],[-127.06621093749989,52.65268554687498],[-127.79189453124994,52.28935546875002],[-128.10224609374993,51.78842773437495],[-128.3576171875,52.1588867187501],[-128.0375,52.318164062500045],[-127.94023437499996,52.545166015625085],[-128.27153320312493,52.3629882812501],[-128.05327148437487,52.91069335937496],[-128.3650390624999,52.82578125000006],[-128.52470703125002,53.1406738281251],[-129.08090820312492,53.36728515625006],[-129.1715820312499,53.53359375000002],[-128.8545898437499,53.70454101562504],[-128.90561523437492,53.559326171875114],[-128.5421386718749,53.420654296875114],[-128.13271484375002,53.417773437500045],[-127.92783203125,53.274707031250045],[-128.2072265624999,53.483203125000074],[-128.67553710937494,53.55458984375005],[-128.76367187500003,53.746875],[-128.5321289062499,53.85810546875007],[-128.959375,53.84145507812505],[-129.2578613281249,53.417968750000085],[-129.56372070312506,53.251464843750114],[-130.33525390625002,53.723925781250074],[-130.04331054687495,54.13354492187503],[-129.62602539062493,54.23027343750002],[-130.08422851562503,54.18139648437503],[-130.4302734375,54.42099609374998],[-129.56064453124995,55.46254882812508],[-129.79516601562503,55.559570312500114],[-130.04848632812494,55.05727539062511],[-130.01406249999997,55.950537109375006],[-130.09785156249995,56.10927734375002],[-130.41313476562487,56.12250976562507],[-130.47709960937496,56.230566406250034],[-130.649072265625,56.26367187500003],[-131.471875,56.55673828125006],[-131.82426757812496,56.58999023437508],[-131.86616210937495,56.792822265625006],[-132.1042968749999,56.85678710937509],[-132.062890625,56.95336914062503],[-132.33798828124992,57.07944335937498],[-132.27939453124998,57.14536132812506],[-132.23217773437494,57.198535156250074],[-132.30166015625005,57.2763183593751],[-132.44248046874986,57.40673828125003],[-132.55048828124995,57.499902343749994],[-133.00141601562495,57.948974609375],[-133.27529296875,58.22285156250004],[-133.54638671874997,58.50346679687499],[-134.21850585937503,58.849902343750045],[-134.32963867187505,58.93969726562506],[-134.39306640625,59.009179687499994],[-134.67724609374997,59.19926757812499],[-134.94375,59.28828125000001],[-135.05102539062491,59.57866210937502],[-135.36787109374998,59.743310546874994],[-135.70258789062504,59.72875976562506],[-136.3218261718749,59.604833984375034],[-136.27797851562494,59.48032226562506],[-136.46635742187493,59.459082031250006],[-136.57875976562494,59.15224609375002],[-136.81328125000002,59.15004882812511],[-137.12622070312491,59.04096679687507],[-137.2775390624999,58.988183593749994],[-137.43857421874995,58.903125],[-137.52089843749994,58.91538085937506],[-137.59331054687493,59.22626953124998],[-138.317626953125,59.611132812500074],[-138.86875,59.94575195312501],[-139.18515624999986,60.083593750000034],[-139.13696289062494,60.17270507812506],[-139.07924804687497,60.279443359375136],[-139.07924804687497,60.3437011718751],[-139.23476562499997,60.339746093749994],[-139.67631835937505,60.32832031249998],[-139.97329101562497,60.183154296875074],[-140.45283203125004,60.29970703125002],[-140.5254394531249,60.21835937499995],[-140.76274414062505,60.25913085937509],[-141.00214843750004,60.300244140625125],[-141.00214843750004,60.884667968749994],[-141.00214843750004,61.761279296875045],[-141.00214843750004,63.22226562499998],[-141.00214843750004,64.09887695312506],[-141.00214843750004,65.55991210937498],[-141.00214843750004,66.43652343750006],[-141.00214843750004,67.89755859374998],[-141.00214843750004,68.77416992187506],[-141.00214843750004,69.65078125000011],[-139.18154296874997,69.51552734375008],[-137.25996093749998,68.96411132812503],[-136.12236328124993,68.88222656250002],[-135.258837890625,68.68432617187503],[-135.93901367187487,68.9741699218751],[-135.575537109375,69.02695312500003],[-135.91020507812487,69.11147460937502],[-135.6914550781249,69.31118164062502],[-135.29282226562486,69.30786132812506],[-135.1408203124999,69.46782226562496],[-134.45683593749993,69.47763671875],[-134.40893554687494,69.68178710937502],[-133.87978515624997,69.50771484375011],[-134.17431640624991,69.25283203125005],[-133.16313476562496,69.43388671874999],[-132.91533203125002,69.62963867187506],[-132.40390625,69.65874023437496],[-132.48847656249993,69.73808593749996],[-132.16342773437498,69.70498046875014],[-131.13637695312497,69.90688476562505],[-130.66547851562495,70.12705078124998],[-129.944970703125,70.09091796875006],[-129.675634765625,70.19296875000009],[-129.64829101562495,69.9977539062501],[-130.83208007812487,69.65146484375006],[-131.9377929687499,69.5347167968751],[-132.8174804687499,69.20576171875004],[-133.41831054687492,68.84428710937493],[-133.138037109375,68.74658203125011],[-133.33666992187497,68.83525390625005],[-132.57763671874997,68.84780273437514],[-132.71894531249998,69.07919921875],[-131.78837890625002,69.43198242187495],[-131.32470703124997,69.36118164062509],[-131.06342773437504,69.45068359375003],[-130.97065429687495,69.20908203125],[-130.1176269531249,69.720068359375],[-128.89892578124994,69.96616210937506],[-129.15791015624995,69.80009765624999],[-129.05434570312502,69.70107421875005],[-128.85302734375003,69.7510253906251],[-127.68378906249994,70.26035156249995],[-128.17011718749998,70.41845703125],[-127.99101562499992,70.57382812500003],[-127.22597656249992,70.29614257812497],[-126.25043945312495,69.54526367187492],[-125.52495117187495,69.35156250000009],[-125.171875,69.42797851562503],[-125.35693359374991,69.62597656250003],[-124.767919921875,69.99003906249996],[-124.99038085937494,70.02661132812511],[-124.55502929687488,70.15122070312509],[-124.40693359374991,69.76743164062506],[-124.12460937499995,69.6899902343751],[-124.33808593749991,69.36484374999995],[-123.5284179687499,69.38935546874995],[-123.02578125,69.81000976562504],[-122.07006835937499,69.81616210937506],[-120.96245117187502,69.66040039062511],[-120.13999023437488,69.38056640625013],[-117.22695312499998,68.913427734375],[-116.05947265625,68.83701171875006],[-116.2434082031249,68.9740722656251],[-115.44228515624994,68.94091796875009],[-114.62016601562496,68.74609375],[-113.96440429687495,68.39907226562502],[-114.09594726562491,68.26679687500007],[-114.76528320312494,68.27021484375004],[-115.12705078124992,68.13203124999995],[-115.43447265624994,67.90234375000006],[-115.13320312499994,67.819189453125],[-112.50302734374993,67.6819335937501],[-110.9900390624999,67.79082031250007],[-110.07392578124995,67.99291992187506],[-109.63037109374991,67.73271484374996],[-109.03803710937504,67.69116210937503],[-108.85200195312497,67.42197265625009],[-108.61333007812493,67.59804687500008],[-107.98872070312495,67.2563964843751],[-107.99130859374995,67.09516601562513],[-108.49604492187493,67.09228515625006],[-107.25947265624998,66.39853515624995],[-107.71035156250001,66.74003906250007],[-107.7250976562499,66.98413085937506],[-107.15649414062497,66.88173828124997],[-107.9583984375,67.81860351562506],[-107.79829101562498,68.03691406249996],[-106.42426757812491,68.20058593750008],[-105.7501953125,68.59228515625011],[-106.45805664062496,68.51645507812495],[-106.60849609374988,68.35737304687504],[-107.61933593749994,68.3310546875],[-107.73417968749989,68.17373046875011],[-108.3228027343749,68.15410156250002],[-108.71811523437488,68.29746093750009],[-108.31347656249996,68.61079101562498],[-106.16445312499992,68.91987304687507],[-105.68559570312489,68.82817382812505],[-105.3774414062499,68.413818359375],[-104.65317382812488,68.23007812500003],[-104.48681640624991,68.06318359374998],[-103.47412109374993,68.11503906250005],[-102.32036132812489,67.73564453125005],[-101.55498046874992,67.69316406250007],[-100.21293945312489,67.83857421875004],[-98.92045898437502,67.72578124999998],[-98.41210937499991,67.80717773437505],[-98.63154296875004,68.0725585937501],[-97.45493164062486,67.61699218750002],[-97.20654296874989,67.85507812500003],[-97.73911132812495,67.97817382812505],[-98.19252929687494,67.92299804687502],[-98.65048828124989,68.36352539062506],[-98.21855468750002,68.31743164062507],[-97.7942382812499,68.38759765625],[-97.9250976562499,68.523681640625],[-97.41035156249993,68.49653320312498],[-96.97670898437497,68.25541992187505],[-96.43066406249991,68.3105957031251],[-96.72207031250005,68.03876953124998],[-95.9703125,68.24912109375],[-96.36914062499991,67.50976562500003],[-96.14145507812489,67.27182617187503],[-95.71992187499998,67.31679687500014],[-95.77768554687495,67.18461914062505],[-95.41591796875005,67.15556640624999],[-95.41889648437504,67.01323242187493],[-96.42255859374995,67.05175781249997],[-95.7875488281249,66.616796875],[-96.03686523437489,66.9375],[-95.39965820312503,66.94946289062509],[-95.25874023437493,67.26254882812492],[-95.65048828124986,67.73745117187505],[-95.46069335937503,68.02138671875],[-94.74443359374993,68.07089843749995],[-93.44892578124998,68.61889648437503],[-93.85244140624994,69.00034179687495],[-94.06489257812495,68.78476562500006],[-94.600439453125,68.80322265625011],[-94.08364257812497,69.12309570312507],[-94.254736328125,69.31376953125002],[-93.61948242187492,69.41699218750009],[-93.74853515624991,69.2261230468751],[-93.5322753906249,69.48090820312495],[-94.2708007812499,69.45512695312505],[-94.63383789062496,69.64965820312506],[-94.82250976562494,69.577783203125],[-95.96494140624989,69.80278320312499],[-96.5513671875,70.21030273437506],[-96.29770507812492,70.51137695312511],[-95.87861328124998,70.54897460937514],[-95.88632812499986,70.69428710937507],[-96.25800781249993,70.64228515625013],[-96.54892578124995,70.80874023437511],[-96.44658203124996,71.23989257812502],[-96.06201171874997,71.41386718749993],[-95.5642578124999,71.33676757812503],[-95.40625,71.49165039062498],[-95.87231445312494,71.57314453125005],[-94.73486328124994,71.98295898437507],[-94.30834960937491,71.76489257812506],[-93.74628906249998,71.742822265625],[-92.94868164062493,71.26210937500011],[-92.98144531249994,70.8522460937501],[-91.56406249999995,70.1782714843751],[-92.32050781250004,70.2353515625],[-92.51186523437494,70.10385742187503],[-91.976708984375,70.03867187500009],[-92.88779296874989,69.66821289062511],[-92.31166992187494,69.67290039062499],[-91.91196289062495,69.53125],[-91.20180664062494,69.64477539062494],[-91.43994140624997,69.52568359375002],[-90.4155761718749,69.45698242187507],[-90.89228515625004,69.26728515624995],[-91.23720703125005,69.28554687500014],[-90.47900390624994,68.88115234374999],[-90.57363281250005,68.47470703124998],[-90.20478515625004,68.25747070312511],[-89.27954101562491,69.25546875000003],[-88.22353515625,68.91503906249997],[-87.81357421874986,68.34570312499997],[-87.89267578125,68.24814453125],[-88.34697265624993,68.28828125000001],[-88.313818359375,67.95034179687508],[-87.359375,67.17724609374997],[-86.56079101562491,67.48212890625007],[-85.64316406249992,68.69970703124997],[-84.86757812499994,68.77333984375005],[-85.10664062499995,68.84404296875007],[-84.86220703125,69.07397460937503],[-85.38676757812493,69.23188476562504],[-85.50737304687487,69.84526367187493],[-82.61835937499993,69.69106445312514],[-82.39023437499989,69.60087890625007],[-82.75483398437493,69.49438476562506],[-82.30986328124996,69.41000976562509],[-82.22753906249997,69.24887695312495],[-81.37783203125005,69.18564453125003],[-81.95791015624991,68.88364257812498],[-81.38090820312496,68.85004882812504],[-81.28154296874987,68.65722656250003],[-81.91484374999993,68.4587890625001],[-82.55268554687504,68.44648437500007],[-82.22241210937489,68.145263671875],[-82.0125,68.19389648437496],[-81.97646484374997,67.86201171875001],[-81.2943359375,67.497412109375],[-81.46757812499996,67.0698730468751],[-83.40644531249998,66.37124023437508],[-84.53847656249994,66.97280273437505],[-84.84575195312502,67.02871093750008],[-85.11372070312498,66.90693359375013],[-84.73774414062504,66.93359375000006],[-84.223046875,66.68247070312506],[-83.86904296875,66.2135742187501],[-84.29306640624995,66.29179687500005],[-84.628076171875,66.20771484374998],[-85.603857421875,66.56826171875005],[-86.708154296875,66.52304687500009],[-86.68510742187502,66.36040039062499],[-85.95874023437491,66.11904296875002],[-87.45288085937503,65.33896484375009],[-87.96997070312503,65.34892578124999],[-89.7494140625,65.93603515625006],[-89.88969726562487,65.86855468749997],[-91.42724609374994,65.94790039062497],[-91.04111328124989,65.82983398437509],[-90.98344726562496,65.91923828124999],[-89.92407226562497,65.78027343750011],[-88.97402343749994,65.34829101562502],[-87.02753906249995,65.19809570312498],[-88.10561523437497,64.18330078125001],[-88.81772460937489,63.99223632812499],[-89.20063476562493,64.11376953125006],[-89.13154296874998,63.96850585937494],[-89.61582031249995,64.030615234375],[-89.8113281249999,64.18056640625],[-90.04165039062494,64.14086914062509],[-89.85571289062497,63.9569824218751],[-90.16816406250004,63.978759765625085],[-90.15473632812498,63.68964843749998],[-90.81191406249991,63.580908203125034],[-91.98222656249996,63.82241210937502],[-92.33842773437496,63.787646484375045],[-93.69633789062493,64.14716796875013],[-93.55981445312491,63.865283203125074],[-93.27021484374998,63.840869140625074],[-93.37851562499992,63.94848632812497],[-92.15688476562491,63.691699218750045],[-92.46508789062491,63.55507812500011],[-91.84184570312496,63.69755859374999],[-90.97006835937489,63.442773437500136],[-90.69858398437492,63.06386718750005],[-91.44897460937503,62.804052734375034],[-92.3612792968749,62.81938476562496],[-91.93583984374993,62.59238281250009],[-92.55141601562491,62.546728515625034],[-92.76596679687492,62.34995117187509],[-92.52797851562494,62.16840820312504],[-93.20537109374993,62.364941406250125],[-92.90551757812503,62.21513671874996],[-93.3330566406249,61.93291015625002],[-93.58178710937494,61.94204101562511],[-93.31201171874997,61.76728515625004],[-93.91274414062497,61.48144531250006],[-94.509375,60.60454101562493],[-94.76171874999991,60.498242187500125],[-94.78828124999998,59.26787109374993],[-94.95732421874996,59.068847656250085],[-94.28706054687493,58.716015625000125],[-94.33222656249998,58.297363281250114],[-94.12319335937494,58.73671875000008],[-93.1787597656249,58.72563476562496],[-92.43281249999993,57.3203125],[-92.7981445312499,56.921972656250034],[-90.89746093750003,57.25693359375006],[-88.94848632812489,56.85131835937503],[-88.07509765624997,56.46728515624994],[-87.48242187499991,56.021289062500045],[-85.55932617187491,55.54018554687508],[-85.21801757812491,55.348974609375034],[-85.3652832031249,55.07929687499998],[-85.06093749999997,55.285644531250085],[-83.91059570312493,55.314648437499955],[-82.39326171874998,55.067822265625125],[-82.219384765625,54.8134765625],[-82.42416992187486,54.2445800781251],[-82.14145507812492,53.81762695312497],[-82.29155273437496,53.03071289062507],[-81.5994140624999,52.432617187500085],[-81.82788085937489,52.22421875000009],[-81.46621093749994,52.204492187500136],[-80.588037109375,51.667236328125114],[-80.4433105468749,51.38857421875002],[-80.85122070312497,51.125],[-80.47832031249993,51.30732421874998],[-80.10356445312487,51.282861328125136],[-79.34790039062494,50.76264648437504],[-79.737451171875,51.186279296875],[-79.33867187500002,51.62817382812497],[-79.04052734375003,51.46376953125005],[-78.90317382812495,51.200292968750034],[-78.73134765624994,51.497460937499994],[-78.98164062499993,51.774560546875136],[-78.44809570312495,52.26137695312502],[-78.74414062499994,52.65537109374998],[-79.10034179687497,53.65664062500005],[-78.99604492187493,54.00249023437499],[-79.241796875,54.098876953125085],[-79.14672851562491,54.16923828125002],[-79.71235351562495,54.6718261718751],[-77.77529296874994,55.291259765625],[-76.60405273437496,56.19956054687495],[-76.52558593749998,56.8917968750001],[-76.80981445312497,57.65795898437506],[-77.15678710937496,58.018896484375034],[-78.51508789062493,58.68237304687503],[-77.76069335937498,59.38002929687505],[-77.72617187499995,59.67587890624992],[-77.34907226562495,59.57895507812509],[-77.48530273437493,59.684570312500114],[-77.28920898437494,60.0220214843751],[-77.58588867187498,60.088183593750074],[-77.45288085937497,60.1458007812501],[-77.6814453124999,60.427099609375034],[-77.503564453125,60.54272460937497],[-77.7908203124999,60.63984375000004],[-77.58955078124993,60.808593750000114],[-78.18134765624995,60.81914062499996],[-77.51435546874998,61.55629882812505],[-78.02138671874997,61.8320800781251],[-78.13339843749986,62.28227539062496],[-77.372412109375,62.572509765625114],[-75.81689453124991,62.31586914062507],[-75.7898437499999,62.17958984375002],[-75.3412109375,62.312109375],[-74.63256835937497,62.115673828125125],[-74.6458007812499,62.21113281250004],[-73.70507812499991,62.47314453124994],[-72.68696289062498,62.12456054687499],[-72.771630859375,61.840429687500006],[-72.50556640624998,61.922656250000074],[-72.22612304687487,61.83159179687499],[-72.04003906249991,61.68027343750006],[-72.21586914062502,61.58725585937495],[-71.86611328125,61.68852539062499],[-71.63828124999995,61.6171875],[-71.85439453124991,61.43979492187492],[-71.42270507812489,61.158935546875085],[-70.27929687499991,61.06865234374999],[-69.99243164062491,60.8564941406251],[-69.50332031249994,61.04042968750011],[-69.40473632812493,60.84677734375009],[-69.75947265624998,60.440234375000045],[-69.67373046874994,60.07587890625007],[-70.65483398437496,60.02622070312506],[-69.73393554687493,59.918017578125045],[-69.68188476562489,59.34174804687507],[-69.3440429687499,59.303076171875006],[-69.53164062499994,58.86923828125009],[-69.64838867187493,58.82080078125],[-69.78417968749994,58.95571289062511],[-70.15434570312496,58.76059570312498],[-69.78989257812486,58.689306640625034],[-69.27109374999986,58.88393554687505],[-68.69819335937495,58.904541015625],[-68.38115234374993,58.74350585937506],[-68.22939453124994,58.48457031250007],[-68.35654296874989,58.163232421875136],[-69.04082031249996,57.902490234375136],[-68.41357421874997,58.0517578125],[-68.02104492187493,58.48530273437504],[-67.88828124999989,58.29575195312495],[-68.06386718750005,58.13896484374999],[-67.75595703124992,58.4045898437501],[-67.6782714843749,57.99111328125008],[-67.5696289062499,58.21347656250006],[-66.72216796874991,58.49101562499996],[-66.36240234374989,58.791162109374994],[-66.0023925781249,58.43120117187502],[-66.04306640624995,58.82065429687495],[-65.72099609374996,59.02377929687495],[-65.38354492187494,59.06020507812508],[-65.7,59.21333007812501],[-65.4117187499999,59.31499023437496],[-65.47509765624994,59.47031249999998],[-65.03823242187494,59.38789062500007],[-65.40742187499993,59.53935546875002],[-65.4333984374999,59.776513671874994],[-65.02817382812495,59.77070312500007],[-65.17172851562489,59.90800781249996],[-64.81733398437498,60.3310546875],[-64.49941406250005,60.26826171875001],[-64.41958007812494,60.17138671874997],[-64.76845703124997,60.01210937500005],[-64.28349609374993,60.06406249999998],[-64.22631835937491,59.741210937500085],[-64.05605468750005,59.82255859374996],[-63.7501953124999,59.51259765625005],[-63.945458984374994,59.380175781250074],[-63.775878906249915,59.277148437500045],[-63.539892578124864,59.332861328125034],[-63.41513671874995,59.194384765625074],[-63.97114257812498,59.053808593750034],[-63.24843749999991,59.068310546874955],[-63.28212890624994,58.86738281250007],[-63.05029296874997,58.87817382812494],[-62.87387695312489,58.67246093749998],[-63.537060546874926,58.329931640625006],[-63.209960937499886,58.46694335937502],[-62.593847656249864,58.47402343750005],[-62.81206054687502,58.20039062500007],[-63.26152343749993,58.014697265625074],[-62.486230468749966,58.15405273437506],[-62.30566406249997,57.97226562499995],[-61.95864257812505,57.91176757812508],[-61.9679687499999,57.61191406250009],[-62.495556640624926,57.489208984375125],[-61.92114257812497,57.42080078125005],[-61.977441406249966,57.24794921875002],[-61.33374023437494,57.01059570312498],[-61.37163085937502,56.68081054687511],[-62.497265624999926,56.80170898437504],[-61.73774414062498,56.52602539062502],[-61.940429687499886,56.423583984375114],[-61.42529296874994,56.360644531250074],[-61.713085937499955,56.230957031250114],[-61.364697265624926,56.2160156250001],[-61.30112304687495,56.04716796874999],[-61.4495117187499,55.99570312499998],[-61.08935546874997,55.86635742187511],[-60.74326171874989,55.94145507812493],[-60.56210937499995,55.727001953125125],[-60.341015624999926,55.78466796874997],[-60.40830078124995,55.649560546874994],[-60.19238281249994,55.4809082031251],[-60.617138671874955,55.060205078124994],[-59.75878906249997,55.3095703125],[-59.68906249999989,55.19633789062502],[-59.43789062500005,55.175927734375136],[-59.837792968749994,54.813964843750114],[-59.25957031249996,55.19995117187506],[-58.99711914062496,55.149462890625074],[-58.780175781249994,54.838378906250114],[-58.39814453124998,54.77412109374998],[-57.96245117187493,54.875732421875085],[-57.40449218750004,54.59086914062496],[-57.69926757812496,54.38657226562506],[-58.435205078124966,54.228125],[-58.63320312499999,54.04956054687497],[-59.8230468749999,53.83442382812504],[-60.14492187499994,53.59614257812498],[-60.395410156249994,53.653320312500085],[-60.1002929687499,53.48696289062511],[-60.329492187499966,53.26611328125006],[-58.652050781249926,53.97788085937495],[-57.935986328124955,54.09116210937492],[-58.31748046874989,54.11445312500007],[-58.192089843749926,54.228173828125136],[-57.4160644531249,54.162744140625136],[-57.134960937499926,53.79184570312506],[-57.524072265624966,53.61142578125006],[-57.331738281249955,53.469091796875034],[-56.84086914062496,53.73945312500004],[-56.46499023437505,53.76503906250011],[-55.96611328125002,53.4711425781251],[-55.79794921874995,53.211962890625045],[-55.80283203124989,52.64316406249998],[-56.324902343749926,52.54453124999998],[-55.74648437499994,52.4745605468751],[-55.7771484374999,52.3642578125],[-56.01171874999997,52.394482421875125],[-55.695214843749994,52.13779296875006],[-56.97597656250005,51.45766601562505],[-58.510351562500006,51.295068359375136],[-59.88632812499992,50.316406250000085],[-61.72485351562503,50.10405273437499],[-61.91953124999989,50.2328613281251],[-62.71542968749995,50.30166015625008],[-66.49550781249991,50.2118652343751],[-66.94116210937503,49.993701171875045],[-67.37202148437495,49.348437500000045],[-68.28193359374998,49.197167968750136],[-69.67387695312496,48.19916992187504],[-71.01826171874993,48.455615234375045],[-69.86552734374993,48.17226562500005],[-69.775,48.09809570312504],[-69.9944335937499,47.73989257812508],[-70.70585937499996,47.13979492187505],[-71.26777343749995,46.79594726562499],[-71.87958984374998,46.68681640624996],[-72.98100585937493,46.209716796875085],[-73.4766113281249,45.738232421874955],[-74.03784179687494,45.501855468750136],[-74.31508789062494,45.531054687500045],[-73.97382812499995,45.345117187499994],[-74.70888671874997,45.0038574218751]]],[[[-96.78232421874998,72.93662109375],[-97.0927734375,72.99692382812503],[-96.86240234374995,73.18881835937506],[-96.78232421874998,72.93662109375]]],[[[-114.52153320312502,72.592919921875],[-113.57807617187501,72.65209960937506],[-113.2923828125,72.94980468750003],[-112.75361328125001,72.98603515624995],[-111.26972656249994,72.71372070312498],[-111.895166015625,72.35610351562497],[-111.67509765625002,72.30014648437503],[-110.20512695312495,72.66127929687497],[-110.66083984374998,73.00820312500002],[-110.00844726562494,72.983642578125],[-108.75498046875002,72.55107421874999],[-108.18823242187501,71.72377929687502],[-107.812841796875,71.62617187500004],[-107.30600585937496,71.89467773437502],[-108.23740234374999,73.14990234375003],[-108.029052734375,73.34873046875003],[-106.48212890624998,73.19619140624997],[-105.41513671874995,72.788330078125],[-104.38593749999997,71.57695312500005],[-104.51479492187502,71.06425781250005],[-103.58457031249995,70.63085937500003],[-103.07719726562497,70.50883789062505],[-103.04956054687503,70.65507812499999],[-101.67631835937495,70.27827148437495],[-101.56240234375001,70.135009765625],[-101.04267578125,70.11079101562504],[-100.98237304687497,69.67988281250001],[-101.483837890625,69.85019531250006],[-101.64765624999997,69.69853515625007],[-102.18212890624997,69.845947265625],[-102.59589843749997,69.71791992187502],[-102.62109374999996,69.55151367187506],[-103.464892578125,69.64448242187498],[-103.04892578124999,69.47177734375006],[-103.12021484374995,69.20458984374997],[-102.44677734374997,69.476318359375],[-102.04594726562493,69.46484374999997],[-101.85712890625001,69.02397460937505],[-102.89506835937499,68.8236328125],[-104.57143554687501,68.87211914062502],[-105.105859375,68.92041015625],[-105.019580078125,69.08125],[-106.27016601562497,69.19458007812497],[-106.65908203124997,69.439599609375],[-107.43989257812497,69.00214843749995],[-108.36499023437497,68.93476562499998],[-109.47211914062501,68.67670898437498],[-113.12773437500002,68.49414062500003],[-113.61684570312501,68.8384765625],[-113.69414062499995,69.19501953124998],[-115.61811523437495,69.28295898437506],[-116.51347656249993,69.42460937500005],[-117.19541015624995,70.05405273437503],[-114.59233398437497,70.31245117187498],[-112.63789062499997,70.225244140625],[-111.63256835937497,70.30883789062497],[-113.75727539062503,70.69072265625005],[-115.99091796874997,70.586279296875],[-117.58706054687498,70.62954101562502],[-118.2640625,70.888330078125],[-118.26909179687493,71.03471679687505],[-115.30341796874997,71.49370117187505],[-117.93564453125003,71.39208984375003],[-118.22646484374995,71.46708984375005],[-117.742333984375,71.65932617187502],[-118.58300781250003,71.64902343749998],[-118.98769531249997,71.7642578125],[-118.94462890624997,71.98554687499995],[-118.21347656249998,72.26289062499998],[-118.481298828125,72.42768554687498],[-118.13310546874995,72.63281250000003],[-114.63823242187499,73.37265625000003],[-114.20639648437495,73.29780273437495],[-114.05170898437497,73.07099609375004],[-114.52153320312502,72.592919921875]]],[[[-105.28891601562499,72.919921875],[-106.92153320312497,73.479833984375],[-106.61396484375001,73.69560546875002],[-105.31796874999995,73.76713867187502],[-104.5875,73.57807617187495],[-104.62172851562495,73.3111328125],[-105.28891601562499,72.919921875]]],[[[-79.53730468749998,73.65449218749998],[-78.2865234375,73.66582031250007],[-77.20654296874997,73.49956054687505],[-76.18339843749999,72.84306640625005],[-77.83593750000003,72.89682617187498],[-79.3193359375,72.75771484375],[-79.820703125,72.82631835937502],[-80.18330078124995,73.22465820312499],[-80.77641601562502,73.33417968750001],[-80.84887695312503,73.72124023437499],[-79.53730468749998,73.65449218749998]]],[[[-86.58935546874997,71.01079101562507],[-85.64384765624999,71.15244140624998],[-85.09487304687497,71.15195312500006],[-84.82373046874997,71.02861328125005],[-84.69941406249995,71.63144531250003],[-85.33906249999998,71.69726562500003],[-85.91162109375,71.98652343749998],[-85.321875,72.23315429687506],[-84.28374023437499,72.04448242187499],[-84.84199218749995,72.30815429687505],[-84.62304687500003,72.37656250000003],[-85.34111328124993,72.42153320312497],[-85.64990234374997,72.72216796875003],[-85.26210937500002,72.95400390625],[-84.25664062499999,72.79672851562503],[-85.454736328125,73.10546875000003],[-84.41606445312496,73.45649414062495],[-83.781884765625,73.41689453125],[-83.72983398437495,73.57587890624995],[-81.946142578125,73.72983398437506],[-81.40615234374997,73.634521484375],[-80.27724609375,72.77016601562502],[-81.229345703125,72.31171874999998],[-80.61147460937497,72.450830078125],[-80.925146484375,71.90766601562501],[-80.18193359374996,72.20878906250007],[-79.884375,72.17719726562501],[-80.10893554687499,72.33217773437497],[-79.83129882812503,72.44628906250003],[-79.000244140625,72.27202148437507],[-79.00781250000003,72.04291992187501],[-78.58510742187497,71.880615234375],[-78.86274414062495,72.100830078125],[-78.69926757812496,72.35141601562498],[-77.51650390624997,72.17778320312505],[-78.48427734374994,72.47060546875002],[-77.75322265624996,72.72475585937502],[-75.70429687499998,72.57153320312497],[-75.05268554687493,72.22636718749999],[-75.92280273437501,71.71723632812501],[-74.90317382812503,72.10048828125002],[-74.20932617187498,71.978662109375],[-74.31572265624999,71.84267578125],[-75.20478515625001,71.70913085937497],[-74.70078125,71.67558593750005],[-74.99619140624998,71.21811523437503],[-74.48808593750002,71.64838867187501],[-73.8140625,71.77143554687495],[-74.197265625,71.404150390625],[-73.71284179687498,71.58759765624998],[-73.18061523437501,71.282861328125],[-73.27822265625,71.53798828125],[-72.901953125,71.67778320312507],[-71.64067382812499,71.51625976562502],[-71.22939453124997,71.33876953125],[-71.49501953124997,71.10512695312502],[-71.93793945312498,71.09428710937502],[-72.63271484374994,70.83076171874998],[-71.74252929687495,71.046875],[-71.370849609375,70.97514648437499],[-70.82607421874994,71.10874023437503],[-70.67265625,71.05219726562498],[-70.76171874999997,70.79223632812503],[-71.89018554687502,70.43154296875002],[-71.27587890625,70.50029296874999],[-71.42944335937503,70.12778320312503],[-70.97978515624999,70.5810546875],[-69.94980468750003,70.84501953125005],[-68.49575195312502,70.61025390625],[-68.363525390625,70.48125],[-70.05771484375,70.042626953125],[-68.77822265625,70.20356445312501],[-69.00830078124997,69.97895507812501],[-68.74404296874997,69.94140625],[-68.05908203124997,70.317236328125],[-67.36367187499994,70.03442382812503],[-67.22163085937495,69.73071289062506],[-68.02041015625,69.77006835937499],[-69.25078124999999,69.51191406249998],[-68.51303710937498,69.57729492187497],[-67.236962890625,69.460107421875],[-66.71674804687495,69.31186523437498],[-66.70742187500002,69.16821289062503],[-68.40629882812499,69.23222656250002],[-69.040625,69.09799804687503],[-68.41552734375,69.17207031250001],[-67.8326171875,69.06596679687499],[-67.88320312500002,68.78398437499999],[-69.31909179687497,68.85698242187505],[-68.21040039062495,68.702978515625],[-67.9384765625,68.524169921875],[-66.74272460937502,68.45776367187497],[-67.032958984375,68.32607421874997],[-66.923095703125,68.06572265625005],[-66.72900390624997,68.12900390625006],[-66.66269531249995,68.03442382812497],[-66.63095703124998,68.21064453124998],[-66.21240234374997,68.280419921875],[-66.44394531249998,67.83383789062506],[-65.94238281250003,68.07094726562505],[-65.86435546875003,67.92285156249997],[-65.50908203124996,67.96826171875],[-65.40126953125002,67.67485351562499],[-65.41533203124996,67.87924804687498],[-64.92231445312495,68.03164062500002],[-65.02109375,67.78754882812495],[-64.63779296875,67.84023437500002],[-63.850195312500034,67.56606445312502],[-64.00795898437502,67.34731445312497],[-64.69995117187494,67.35053710937501],[-63.83623046874993,67.26411132812498],[-63.59160156250002,67.3775390625],[-63.040136718750034,67.235009765625],[-63.70156249999994,66.82236328125003],[-62.962304687499966,66.94926757812505],[-62.37973632812495,66.90537109375],[-62.12358398437499,67.046728515625],[-61.35341796874994,66.689208984375],[-61.52783203124994,66.55810546875003],[-62.12333984374993,66.64306640625003],[-61.57080078125,66.37290039062506],[-61.95634765624993,66.30932617187497],[-62.553125,66.40683593750003],[-62.53359374999994,66.22700195312498],[-61.99160156250002,66.03530273437502],[-62.624121093750006,66.01625976562505],[-62.381982421874966,65.83330078124999],[-62.65888671874998,65.63994140625002],[-63.16894531249997,65.65732421875],[-63.45874023437494,65.85302734375],[-63.42089843749997,65.70859374999998],[-63.651074218749955,65.66098632812506],[-63.33745117187493,65.61674804687502],[-63.36337890624998,65.22973632812503],[-63.606591796874966,64.92807617187503],[-64.345703125,65.17241210937499],[-64.26967773437497,65.40078124999997],[-64.55507812500002,65.1166015625],[-65.401611328125,65.764013671875],[-64.44536132812496,66.31713867187497],[-65.0044921875,66.07773437500003],[-65.82573242187499,65.996923828125],[-65.65634765625003,66.204736328125],[-66.06372070312497,66.13271484374997],[-66.986328125,66.62749023437505],[-67.07685546874995,66.52548828125006],[-67.30732421874993,66.5697265625],[-67.22539062499993,66.31025390624998],[-67.88339843749995,66.46743164062502],[-67.18320312499995,66.03442382812503],[-67.350439453125,65.92973632812502],[-67.82802734374997,65.96518554687503],[-68.45991210937498,66.249267578125],[-68.74892578125,66.200048828125],[-68.21718750000002,66.078857421875],[-68.18671874999993,65.87099609375002],[-67.86645507812497,65.773681640625],[-67.936767578125,65.56489257812501],[-67.56962890624999,65.64355468749997],[-67.11796874999999,65.44038085937495],[-67.3365234375,65.34658203125005],[-66.69741210937502,64.81518554687506],[-66.63549804687503,65.00034179687503],[-66.21464843749999,64.72241210937497],[-65.93852539062496,64.88574218750003],[-65.2748046875,64.63154296875004],[-65.52934570312499,64.50478515624997],[-65.074609375,64.43666992187502],[-65.21298828125003,64.30327148437502],[-65.580322265625,64.29384765624997],[-65.16987304687495,64.02817382812503],[-64.67846679687503,64.027978515625],[-64.79814453124999,63.91596679687498],[-64.4109375,63.70634765625002],[-64.66464843749995,63.24536132812497],[-65.19184570312498,63.764257812500006],[-65.06894531249998,63.26347656250002],[-64.67236328125003,62.921972656250006],[-65.16279296875001,62.93261718750003],[-65.10849609374998,62.62646484375],[-66.22402343749994,63.10717773437497],[-66.228662109375,62.99096679687503],[-66.41445312500002,63.027197265625034],[-66.65498046874998,63.264746093750006],[-66.69746093749993,63.069531249999955],[-67.89326171874993,63.733740234375006],[-67.72255859374997,63.422753906249966],[-68.49375,63.725488281249994],[-68.91108398437498,63.703222656250006],[-68.141259765625,63.17231445312501],[-67.67597656249998,63.093554687500045],[-67.73696289062497,63.00957031249999],[-65.98017578125001,62.20888671875002],[-66.12387695312498,61.89306640625],[-68.53588867187503,62.25561523437506],[-69.12558593749998,62.423974609374966],[-69.604736328125,62.76772460937502],[-70.23613281250002,62.76337890625001],[-70.801416015625,62.91049804687506],[-71.10576171874999,63.00224609375002],[-70.94604492187497,63.12070312499998],[-71.34726562499998,63.066113281249955],[-71.99223632812493,63.41616210937505],[-71.380859375,63.580322265625],[-72.29013671874995,63.72797851562498],[-72.17426757812498,63.893408203125006],[-72.49843749999994,63.82348632812497],[-73.45454101562495,64.39926757812503],[-73.27128906250002,64.58251953125],[-73.91035156249998,64.578125],[-74.064794921875,64.42465820312498],[-74.13046874999998,64.6078125],[-74.46123046874996,64.64467773437505],[-74.68139648437497,64.8306640625],[-74.91943359374997,64.76552734374997],[-74.69472656250002,64.49658203124997],[-75.71503906249995,64.52436523437495],[-75.76669921875,64.39194335937498],[-76.85615234374998,64.23764648437498],[-77.76049804687503,64.36015624999999],[-78.04521484374993,64.499267578125],[-78.09560546875,64.93925781250002],[-77.36088867187496,65.19653320312503],[-77.32670898437493,65.453125],[-75.82832031249993,65.22705078125003],[-75.45209960937495,64.84160156250002],[-75.35712890624995,65.00874023437495],[-75.79868164062503,65.297509765625],[-75.16630859374999,65.28393554687497],[-74.13847656250002,65.50346679687502],[-73.55078125000003,65.48525390625005],[-74.41640624999997,66.16708984375003],[-73.03325195312502,66.72817382812505],[-72.78881835937494,67.030615234375],[-72.22001953124999,67.25429687500002],[-73.28447265624993,68.35698242187505],[-73.82050781249998,68.36293945312502],[-73.82211914062495,68.68598632812501],[-74.11796875000002,68.70092773437506],[-73.9892578125,68.54863281250002],[-74.2701171875,68.54121093750001],[-74.89296875,68.80815429687505],[-74.71669921874997,69.04550781249998],[-76.58505859375,68.69873046875003],[-76.55722656250003,69.00947265625001],[-75.9537109375,69.03081054687502],[-75.64775390625002,69.212548828125],[-76.46494140624995,69.46943359375001],[-76.23408203125001,69.66210937500003],[-76.742333984375,69.57290039062497],[-77.08994140625,69.63510742187503],[-76.85859374999995,69.775390625],[-77.591650390625,69.84560546875002],[-77.77402343750003,70.23852539062503],[-78.28281250000003,70.229150390625],[-79.06640624999997,70.60356445312507],[-79.40522460937498,70.40073242187503],[-78.86284179687499,70.24189453125001],[-78.88964843750003,69.97749023437495],[-79.51542968749996,69.88759765625005],[-81.65195312500003,70.09462890625002],[-80.92172851562503,69.73090820312501],[-81.56469726562503,69.94272460937498],[-82.29384765624997,69.83691406250003],[-83.14995117187493,70.00908203125002],[-83.85908203124998,69.96274414062498],[-85.43237304687497,70.11137695312507],[-85.780029296875,70.03666992187505],[-86.32202148437503,70.14541015625],[-86.396875,70.46533203124997],[-87.838134765625,70.24658203125],[-88.78271484374997,70.49448242187503],[-89.45590820312498,71.06171874999995],[-87.84492187499995,70.94438476562505],[-87.14008789062498,71.01162109374997],[-89.80537109374993,71.46230468750005],[-89.86152343750001,72.41191406250005],[-88.70517578124998,73.40327148437495],[-87.71977539062496,73.72290039062497],[-85.95078124999998,73.85014648437505],[-84.94677734375,73.72163085937498],[-86.00053710937499,73.31254882812505],[-86.65629882812502,72.72402343750005],[-86.21845703124998,71.89912109375004],[-85.02338867187495,71.35322265625001],[-86.58935546874997,71.01079101562507]]],[[[-100.00190429687497,73.9458984375],[-99.15795898437499,73.73159179687497],[-97.66997070312499,73.88774414062499],[-97.1705078125,73.82485351562497],[-97.001708984375,73.66650390625003],[-97.62587890624997,73.50229492187498],[-97.27250976562502,73.38681640624998],[-98.42177734375002,72.94101562500003],[-97.63632812499998,73.02763671874999],[-97.128125,72.62758789062502],[-96.59208984374996,72.71025390624999],[-96.44560546874996,72.55244140624998],[-96.80146484374998,72.32241210937502],[-96.61342773437494,71.83383789062506],[-97.58227539062497,71.62968750000005],[-98.18134765624998,71.66245117187503],[-98.32270507812501,71.85234375000002],[-98.19863281249994,71.44086914062501],[-98.66289062499993,71.302099609375],[-99.22363281249996,71.387109375],[-100.594482421875,72.15234375000003],[-101.20854492187495,72.31699218749998],[-101.72392578124996,72.31489257812501],[-102.70874023437496,72.76450195312503],[-102.20400390624998,73.077294921875],[-101.27319335937497,72.7216796875],[-100.48476562500002,72.77294921874997],[-100.395703125,72.97700195312498],[-100.128125,72.90668945312495],[-100.53637695312497,73.19785156250003],[-99.82514648437503,73.2138671875],[-100.36611328125001,73.359033203125],[-100.88935546875003,73.27534179687501],[-101.52319335937501,73.48637695312502],[-100.97578124999995,73.59975585937502],[-100.5216796875,73.44931640625],[-100.96298828125002,73.79140625],[-99.99111328125,73.79516601562503],[-100.00190429687497,73.9458984375]]],[[[-98.270361328125,73.86850585937498],[-98.97392578124997,73.81206054687502],[-99.4169921875,73.89541015625002],[-97.69824218749997,74.10869140625005],[-98.270361328125,73.86850585937498]]],[[[-93.17084960937498,74.16098632812506],[-92.22270507812502,73.97236328124998],[-90.62744140625,73.95170898437505],[-90.38139648437496,73.82475585937502],[-92.11791992187497,72.75380859375],[-94.21132812499997,72.75693359375],[-93.77055664062496,72.66821289062506],[-93.55517578124994,72.42114257812497],[-94.03754882812498,72.02875976562498],[-95.00786132812496,72.01279296875],[-95.60214843749998,72.88447265624995],[-95.63291015625003,73.69545898437497],[-94.697607421875,73.66357421874997],[-95.134130859375,73.88125],[-94.97353515625,74.04140625000002],[-93.17084960937498,74.16098632812506]]],[[[-119.73632812499997,74.11264648437498],[-119.20595703125002,74.19799804687503],[-119.11796874999995,74.01552734375],[-118.54399414062499,74.24462890625003],[-117.51484375000001,74.23173828124999],[-115.51069335937501,73.61875],[-115.446875,73.43886718750002],[-118.96157226562497,72.68413085937499],[-119.51284179687501,72.30268554687501],[-120.17988281250001,72.21264648437506],[-120.61933593750001,71.50576171875002],[-121.47216796875003,71.38901367187503],[-121.74936523437502,71.44477539062501],[-123.09565429687503,71.09379882812502],[-124.00776367187494,71.67744140624998],[-125.29667968749999,71.973046875],[-125.84531250000002,71.978662109375],[-123.79726562499997,73.76816406250003],[-124.69624023437497,74.34819335937499],[-121.50415039062497,74.54511718749998],[-119.56264648437494,74.23281250000002],[-119.73632812499997,74.11264648437498]]],[[[-97.35551757812496,74.52631835937495],[-97.75,74.51054687500005],[-97.41650390624994,74.62656250000003],[-97.35551757812496,74.52631835937495]]],[[[-95.306640625,74.50541992187505],[-95.850732421875,74.58247070312504],[-95.51020507812498,74.63676757812499],[-95.306640625,74.50541992187505]]],[[[-104.11992187499995,75.03632812500004],[-104.88740234374998,75.14775390624999],[-104.34619140624996,75.42993164062503],[-103.64350585937497,75.18657226562499],[-104.11992187499995,75.03632812500004]]],[[[-93.54257812499995,75.0279296875],[-93.57309570312495,74.66884765625005],[-94.53452148437498,74.63671874999997],[-96.59960937499997,75.03178710937499],[-95.95463867187493,75.44379882812501],[-94.878173828125,75.63002929687502],[-93.90908203125002,75.42250976562502],[-93.54257812499995,75.0279296875]]],[[[-96.07856445312495,75.510107421875],[-96.91513671875003,75.37968749999999],[-96.98281249999997,75.50981445312505],[-96.367822265625,75.65463867187506],[-96.07856445312495,75.510107421875]]],[[[-94.52656249999995,75.74931640624999],[-94.901220703125,75.93076171875],[-94.53789062499996,75.99643554687506],[-94.52656249999995,75.74931640624999]]],[[[-118.328125,75.57968749999998],[-118.81713867187503,75.52211914062497],[-119.39458007812499,75.617333984375],[-117.63369140624998,76.11508789062498],[-118.328125,75.57968749999998]]],[[[-79.0630859375,75.92587890624998],[-79.63876953124995,75.84291992187505],[-79.00932617187499,76.14589843750005],[-79.0630859375,75.92587890624998]]],[[[-102.22734374999995,76.014892578125],[-102.00800781250003,75.93940429687498],[-102.57958984375003,75.78022460937498],[-103.31474609374996,75.76420898437499],[-103.04150390624999,75.91884765624997],[-103.98525390624997,75.93310546875003],[-103.80078124999994,76.03701171874997],[-104.24248046874996,76.04697265625006],[-104.35063476562497,76.18232421875001],[-102.72802734374999,76.30703125],[-102.22734374999995,76.014892578125]]],[[[-104.02285156249998,76.58310546875003],[-103.05131835937495,76.44985351562497],[-103.31137695312499,76.34755859375],[-104.35751953124995,76.33461914062502],[-104.58569335937499,76.60649414062499],[-104.07451171875003,76.66611328124998],[-104.02285156249998,76.58310546875003]]],[[[-97.70092773437497,76.46650390624998],[-97.89052734374997,75.7603515625],[-97.40751953124999,75.67250976562497],[-97.33603515624998,75.41982421875],[-97.65332031249997,75.50776367187498],[-97.87822265624996,75.41611328125003],[-97.67431640624997,75.127294921875],[-98.04531249999997,75.20083007812497],[-98.12094726562503,75.03271484375],[-100.234375,75.00771484374997],[-100.48349609374995,75.18842773437501],[-100.14570312499995,75.24614257812505],[-100.71191406250003,75.40634765625],[-99.19458007812499,75.698388671875],[-102.58740234375001,75.51367187500003],[-102.79750976562501,75.59965820312505],[-102.14472656249998,75.87504882812502],[-100.97280273437498,75.79843750000003],[-101.414990234375,75.84584960937502],[-101.87211914062496,76.08310546875003],[-101.52895507812495,76.21728515625003],[-102.1046875,76.33120117187505],[-101.41518554687495,76.42490234375003],[-99.86547851562499,75.92421875],[-100.11284179687502,76.11723632812507],[-99.54106445312497,76.14628906250005],[-100.41420898437495,76.242529296875],[-99.97773437500003,76.31245117187495],[-100.82973632812497,76.52387695312495],[-99.8140625,76.6322265625],[-98.89033203125,76.46557617187497],[-98.71083984374994,76.69384765625003],[-97.70092773437497,76.46650390624998]]],[[[-101.22612304687497,76.57934570312497],[-101.61308593749995,76.60458984375006],[-100.26914062499998,76.73413085937497],[-101.22612304687497,76.57934570312497]]],[[[-108.29238281250001,76.05712890625],[-107.72348632812502,75.99541015625002],[-108.020703125,75.80478515625],[-107.21621093749997,75.89155273437501],[-106.91352539062503,75.67963867187501],[-106.67700195312499,76.02373046875002],[-105.63266601562493,75.94536132812505],[-105.51948242187497,75.63237304687505],[-106.09262695312495,75.08945312500003],[-107.15341796874996,74.9271484375],[-108.47475585937495,74.94721679687501],[-108.83129882812501,75.06489257812498],[-112.51933593749997,74.41684570312503],[-113.67158203124997,74.45302734375005],[-114.31269531250003,74.71508789062506],[-112.835986328125,74.9755859375],[-111.67109375,75.01943359374997],[-111.09345703125001,75.25629882812498],[-113.71176757812499,75.06860351562503],[-113.85332031249996,75.259375],[-113.46708984374996,75.41611328125003],[-114.01650390624998,75.43427734375001],[-114.16845703124994,75.23950195312503],[-114.51381835937497,75.27548828125],[-114.45175781250002,75.08789062499997],[-115.02011718749999,74.97617187500003],[-115.41318359374995,75.11499023437497],[-115.72885742187496,74.968115234375],[-116.47607421874996,75.17177734375],[-117.56523437499997,75.23334960937504],[-117.25761718750002,75.45952148437502],[-116.07714843749996,75.49296874999999],[-115.14184570312501,75.67851562500005],[-116.42563476562498,75.58535156249997],[-117.16362304687496,75.64487304687503],[-116.80214843749995,75.77158203124998],[-114.99150390625002,75.896337890625],[-116.66455078124999,75.95756835937505],[-116.20986328125,76.19443359374998],[-114.77861328124999,76.17260742187497],[-115.82216796874997,76.27001953125003],[-114.99848632812503,76.4974609375],[-114.19394531249999,76.45146484375005],[-113.82348632812501,76.20683593750002],[-112.69760742187496,76.20170898437505],[-111.05268554687495,75.54853515625001],[-108.94716796875,75.54179687499999],[-108.94477539062495,75.69897460937503],[-109.8705078125,75.929052734375],[-109.48681640624999,76.14467773437497],[-110.31445312500001,76.369384765625],[-109.09824218749996,76.811865234375],[-108.46699218749997,76.73759765625007],[-108.29238281250001,76.05712890625]]],[[[-89.72646484374994,76.50742187499998],[-90.55625,76.73457031249998],[-90.13632812499995,76.83696289062505],[-89.69541015625,76.74116210937498],[-89.72646484374994,76.50742187499998]]],[[[-113.56069335937494,76.74326171874998],[-114.83525390624999,76.79467773437497],[-113.89165039062495,76.89487304687503],[-113.56069335937494,76.74326171874998]]],[[[-94.29497070312493,76.91245117187498],[-93.23002929687496,76.77026367187497],[-93.53457031250002,76.44770507812498],[-92.99536132812494,76.62041015624999],[-91.305029296875,76.68076171875003],[-90.54262695312494,76.495751953125],[-91.41508789062496,76.45585937500005],[-89.28452148437498,76.30161132812506],[-89.40659179687498,76.18916015624998],[-91.40732421874998,76.22006835937506],[-89.27758789062497,75.79506835937497],[-89.64604492187499,75.5650390625],[-88.91669921874998,75.45395507812503],[-88.64497070312495,75.65844726562503],[-88.201318359375,75.51201171875005],[-87.72973632812503,75.57563476562495],[-87.53911132812502,75.48486328125003],[-87.25693359374998,75.61772460937499],[-85.95146484374993,75.39501953125],[-85.97299804687498,75.5287109375],[-83.931982421875,75.81894531250003],[-83.23710937499993,75.75083007812503],[-82.153662109375,75.83105468750003],[-80.32197265624998,75.62910156250001],[-79.50908203125002,75.25981445312499],[-80.38198242187494,75.03417968750003],[-79.40141601562502,74.91762695312502],[-79.944482421875,74.83364257812505],[-80.34775390624998,74.90297851562505],[-80.26274414062499,74.58447265625],[-81.94018554687494,74.47270507812505],[-82.73579101562495,74.53027343749997],[-83.5220703125,74.90146484375],[-83.53188476562494,74.58569335937497],[-84.42553710937503,74.50810546875007],[-85.06142578125,74.60693359375003],[-85.133447265625,74.517431640625],[-85.44233398437495,74.6005859375],[-85.80800781249994,74.49897460937498],[-88.42304687499995,74.49414062499997],[-88.53496093749993,74.83173828125001],[-89.55869140624995,74.55473632812507],[-90.55327148437499,74.61274414062498],[-90.88022460937498,74.8177734375],[-91.13457031250002,74.64985351562498],[-91.54912109375002,74.65556640624999],[-92.3892578125,75.263330078125],[-92.18510742187499,75.84653320312498],[-93.09174804687495,76.35400390624997],[-95.27387695312498,76.26440429687503],[-96.03969726562494,76.48671875000002],[-95.65097656249998,76.58466796874998],[-96.88071289062495,76.73833007812505],[-96.40156249999995,76.79721679687503],[-96.75830078124997,76.97177734374998],[-95.84951171875002,77.06621093750005],[-94.29497070312493,76.91245117187498]]],[[[-115.55126953125001,77.36328125],[-116.32919921874996,77.137060546875],[-115.81005859374999,76.939111328125],[-116.25273437500002,76.90141601562505],[-115.94628906250003,76.71127929687503],[-116.99921874999995,76.531591796875],[-117.23359375000001,76.28154296875005],[-117.99296874999999,76.40581054687505],[-117.88081054687497,76.80507812500005],[-118.79140624999994,76.51298828125005],[-119.080712890625,76.12407226562505],[-119.58037109375,76.32651367187498],[-119.52612304687496,75.99721679687505],[-119.91289062499997,75.85883789062501],[-120.40888671874995,75.82563476562498],[-120.84838867187496,76.18266601562499],[-121.21347656249999,75.98369140625005],[-122.53305664062498,75.95092773437503],[-122.59272460937497,76.16206054687495],[-122.90278320312498,76.13471679687498],[-122.51938476562503,76.353173828125],[-121.56113281250003,76.453466796875],[-119.09018554687496,77.30507812500002],[-116.84355468749995,77.33955078124995],[-117.03974609374995,77.46513671875005],[-116.51132812500003,77.54760742187497],[-115.55126953125001,77.36328125]]],[[[-89.83325195312503,77.26762695312505],[-90.22827148437503,77.21245117187499],[-90.99321289062499,77.32949218750002],[-91.01904296875003,77.64389648437503],[-89.83896484375003,77.49140624999998],[-89.83325195312503,77.26762695312505]]],[[[-104.55815429687497,77.14174804687497],[-105.21508789062496,77.18208007812501],[-106.03559570312495,77.73984375000006],[-105.58789062499997,77.73598632812497],[-104.54223632812501,77.33774414062503],[-104.55815429687497,77.14174804687497]]],[[[-95.484375,77.79199218750003],[-93.30097656249995,77.73979492187505],[-93.54394531249997,77.466650390625],[-95.98706054687497,77.484130859375],[-96.19458007812497,77.70053710937503],[-95.484375,77.79199218750003]]],[[[-101.6935546875,77.69658203125005],[-102.37783203124995,77.728125],[-102.44770507812498,77.88061523437506],[-101.19321289062493,77.82978515624998],[-101.00205078124998,77.73510742187497],[-101.6935546875,77.69658203125005]]],[[[-113.83247070312497,77.75463867187506],[-114.28720703124998,77.72148437500005],[-114.98041992187498,77.91542968750002],[-114.33037109374997,78.07753906250002],[-113.83247070312497,77.75463867187506]]],[[[-110.45805664062496,78.10322265625001],[-109.62226562499995,78.07475585937499],[-110.865625,77.834130859375],[-110.15273437500002,77.76293945312506],[-110.19848632812501,77.52451171874998],[-112.37265625000002,77.36411132812498],[-113.16435546875002,77.5302734375],[-113.21518554687498,77.90351562500001],[-110.45805664062496,78.10322265625001]]],[[[-109.81596679687499,78.65039062500003],[-109.48447265624995,78.31640625],[-111.16918945312499,78.38627929687505],[-111.51748046874997,78.27470703125005],[-112.13125,78.366064453125],[-113.22304687499998,78.29790039062505],[-112.85585937499997,78.46684570312502],[-110.877587890625,78.73505859375004],[-109.81596679687499,78.65039062500003]]],[[[-96.20449218749994,78.53129882812499],[-94.91538085937495,78.39052734375002],[-95.32924804687497,78.22504882812495],[-94.93427734374998,78.07563476562498],[-96.98964843749994,77.80600585937503],[-97.65815429687498,78.090625],[-96.944677734375,78.15185546874997],[-98.04951171874995,78.325927734375],[-98.33261718749998,78.77353515625006],[-97.38232421875,78.78291015625001],[-96.20449218749994,78.53129882812499]]],[[[-103.42602539062499,79.315625],[-102.57617187499996,78.87939453125003],[-101.70366210937502,79.07890625000002],[-101.128125,78.80166015625002],[-100.43549804687503,78.8203125],[-99.60942382812495,78.58305664062507],[-99.16640625000002,77.85693359375003],[-100.27465820312503,77.83271484374995],[-101.07412109375001,78.19384765625],[-102.60698242187502,78.24892578125002],[-102.73134765624995,78.37104492187495],[-103.94658203124999,78.26000976562497],[-104.76357421874998,78.35166015625],[-104.90961914062498,78.55263671875],[-103.57050781250003,78.53984375000005],[-104.02084960937502,78.63491210937497],[-103.37158203125,78.73632812500003],[-104.18500976562498,78.78129882812505],[-104.15195312499999,78.989892578125],[-104.89550781249996,78.80815429687502],[-104.74677734375003,79.02709960937503],[-105.53564453124999,79.03251953125007],[-105.51455078124995,79.24248046875002],[-105.38769531249994,79.32358398437503],[-103.42602539062499,79.315625]]],[[[-98.79160156249995,79.98110351562505],[-98.94521484375,79.72407226562498],[-100.05683593749997,79.89824218750005],[-100.05327148437496,80.093359375],[-99.15322265625001,80.12421874999998],[-98.79160156249995,79.98110351562505]]],[[[-91.88554687499999,81.13286132812505],[-90.64301757812498,80.59370117187498],[-89.23559570312494,80.51064453125002],[-88.85732421874997,80.16621093750001],[-88.19990234374998,80.11147460937497],[-88.5248046875,80.41801757812507],[-87.675,80.37211914062505],[-87.92231445312501,80.09770507812499],[-86.97719726562502,79.89423828125001],[-87.29516601562494,79.58017578124998],[-86.33696289062496,79.63496093749995],[-86.00703124999998,79.47944335937498],[-85.6478515625,79.61142578125006],[-85.04213867187497,79.2845703125],[-86.95717773437502,78.97490234375005],[-87.61738281249995,78.67631835937505],[-88.04018554687494,78.99531250000004],[-87.98286132812498,78.53706054687501],[-88.74160156250002,78.58403320312499],[-88.82241210937497,78.18588867187498],[-90.037109375,78.60683593750002],[-89.52568359374999,78.15961914062495],[-90.29721679687495,78.32802734374997],[-90.614404296875,78.14985351562501],[-92.35126953125001,78.312890625],[-92.8482421875,78.46010742187497],[-91.86689453124998,78.54267578125001],[-93.26660156249997,78.60830078124997],[-93.63442382812502,78.75092773437498],[-93.15986328124998,78.77563476562503],[-94.11459960937498,78.92890625000001],[-92.54721679687495,79.28261718750002],[-91.29990234375003,79.372705078125],[-92.82192382812497,79.44990234375001],[-93.93315429687496,79.29072265624998],[-94.11030273437498,79.40156250000001],[-95.10317382812502,79.289892578125],[-95.66289062500002,79.52734374999997],[-94.40185546874997,79.736328125],[-95.73935546874995,79.66015625000003],[-96.58906249999995,79.91665039062497],[-96.77324218749999,80.13579101562502],[-94.64589843749994,80.04873046874997],[-94.26259765625002,80.19487304687499],[-95.40507812499996,80.13500976562506],[-96.39409179687493,80.31503906250003],[-95.549072265625,80.36660156249997],[-95.92695312499998,80.72065429687498],[-93.92792968749995,80.55917968750003],[-95.51474609375003,80.83813476562503],[-94.98051757812499,81.04965820312503],[-93.28671874999998,81.10029296874998],[-94.22011718749997,81.33076171875004],[-93.03466796874997,81.3462890625],[-91.88554687499999,81.13286132812505]]],[[[-69.4888671875,83.01679687499998],[-66.42255859374998,82.92685546875003],[-68.46933593749995,82.65336914062502],[-65.29902343749995,82.79960937500005],[-64.98388671874997,82.90229492187501],[-64.50400390625,82.77841796874998],[-63.641015624999966,82.81259765625003],[-63.246777343749926,82.4501953125],[-62.47519531249995,82.51958007812502],[-61.392480468749994,82.44189453125],[-61.61538085937502,82.18442382812503],[-64.43579101562497,81.74262695312501],[-66.62573242187497,81.61640624999995],[-68.68852539062493,81.29331054687503],[-64.78007812499993,81.49287109375001],[-69.55068359375,80.38325195312498],[-70.71259765625001,80.53959960937505],[-70.264892578125,80.23359374999998],[-72.05595703124996,80.12324218749995],[-70.56840820312493,80.09370117187498],[-71.387841796875,79.76176757812505],[-72.43652343750003,79.69438476562499],[-74.39448242187495,79.87407226562499],[-73.47246093749996,79.7564453125],[-73.36152343750001,79.50400390625],[-75.50341796875,79.41416015625],[-76.898828125,79.5123046875],[-75.60273437499998,79.23955078125005],[-74.48120117187503,79.22949218750006],[-74.64091796874996,79.03554687499997],[-78.58164062499998,79.075],[-77.88276367187498,78.9423828125],[-76.255859375,79.00683593749997],[-74.486328125,78.75009765624998],[-74.87861328124998,78.54482421875],[-76.41611328124995,78.51152343750005],[-75.19345703125,78.327734375],[-75.86596679687497,78.00981445312499],[-78.01259765624997,77.94604492187506],[-78.07617187500003,77.51904296875],[-78.70849609374997,77.34213867187503],[-80.57304687499996,77.31479492187506],[-81.65908203124997,77.52543945312499],[-81.3013671875,77.34404296875007],[-82.056787109375,77.29653320312497],[-81.75634765624997,77.20400390625005],[-79.49726562500001,77.19609375000005],[-78.97919921874998,76.89287109374999],[-78.28886718750002,76.97797851562501],[-77.98330078124994,76.75498046875006],[-78.284326171875,76.57124023437501],[-80.79970703124997,76.173583984375],[-80.97451171874994,76.470068359375],[-81.71738281250003,76.494970703125],[-82.52983398437499,76.723291015625],[-82.23315429687494,76.46582031250003],[-83.88569335937501,76.453125],[-84.22377929687497,76.67534179687499],[-84.27534179687498,76.35654296875006],[-85.141259765625,76.30458984375005],[-86.45371093750003,76.58486328125002],[-86.68022460937499,76.37661132812497],[-87.35419921874998,76.44804687500005],[-87.48979492187499,76.58583984374997],[-87.49755859374997,76.38627929687499],[-88.39599609374997,76.40527343750003],[-88.49584960937497,76.77285156249997],[-88.54580078125002,76.42089843750003],[-89.36962890624997,76.474462890625],[-89.49975585937503,76.82680664062502],[-88.39814453124995,77.10395507812501],[-86.81225585937497,77.18491210937498],[-87.68144531249996,77.43637695312503],[-88.01699218750002,77.78471679687505],[-86.75507812499998,77.86372070312498],[-85.58847656249998,77.46113281250004],[-84.73867187499997,77.36103515624998],[-83.72128906249998,77.41420898437497],[-82.7103515625,77.84951171875002],[-82.5953125,77.99213867187504],[-83.77939453125,77.53261718750002],[-85.28935546874996,77.55903320312498],[-85.54755859374998,77.92768554687495],[-84.61542968749998,78.19570312500002],[-84.22270507812499,78.176025390625],[-84.91035156249993,78.23969726562501],[-84.78320312499997,78.52758789062506],[-85.5859375,78.10957031249998],[-86.21777343750003,78.08120117187497],[-85.92006835937494,78.34287109374998],[-86.91323242187494,78.126806640625],[-87.5517578125,78.17661132812503],[-86.80791015624999,78.77436523437495],[-85.00375976562495,78.912255859375],[-83.27143554687501,78.77031250000002],[-81.75009765624995,78.97578124999995],[-82.43876953125002,78.903662109375],[-84.41201171875002,78.99658203125003],[-84.38359375000002,79.1185546875],[-83.57587890624995,79.05366210937501],[-86.42075195312498,79.84521484374997],[-86.49853515625003,80.25825195312501],[-83.72363281250003,80.22895507812501],[-81.68837890625,79.685791015625],[-80.47592773437498,79.60625],[-80.12446289062495,79.66948242187507],[-81.01015625000002,79.693115234375],[-82.98701171874995,80.32260742187498],[-76.86298828124995,80.86479492187505],[-78.71621093749994,80.95166015624997],[-76.88510742187503,81.43027343750006],[-81.00703125000001,80.6548828125],[-82.88432617187502,80.57753906249997],[-82.22236328124998,80.77231445312503],[-84.41782226562495,80.52675781250002],[-86.250341796875,80.56577148437506],[-86.60307617187499,80.66401367187498],[-85.63930664062494,80.92460937500007],[-83.288818359375,81.14794921875],[-85.780859375,81.03505859375],[-87.32988281250002,80.669775390625],[-88.00366210937497,80.675390625],[-89.16689453125,80.94130859375],[-86.47675781249993,81.03574218750006],[-84.94121093750002,81.28623046875],[-87.27509765624995,81.080810546875],[-89.623046875,81.032470703125],[-89.94731445312499,81.17265625000005],[-89.20869140624998,81.25009765625003],[-89.67368164062503,81.32861328125003],[-87.59702148437498,81.52583007812498],[-88.47905273437502,81.56464843749998],[-90.41630859374996,81.40537109375003],[-89.82167968749997,81.63486328124998],[-91.29238281250002,81.57124023437498],[-91.64755859374998,81.68383789062503],[-88.06318359375001,82.09648437500007],[-87.01821289062502,81.95874023437497],[-86.62680664062495,82.05102539062503],[-85.04482421874997,81.9828125],[-86.615625,82.21855468750007],[-84.89682617187503,82.44941406250001],[-82.63369140625002,82.07729492187497],[-82.53691406250002,82.24726562499995],[-79.465625,81.85112304687499],[-82.44755859374993,82.39501953125003],[-81.68115234375003,82.51865234375],[-82.11684570312497,82.62866210937503],[-80.8625,82.57153320312503],[-81.01015625000002,82.77905273437503],[-78.748779296875,82.67939453124998],[-80.15493164062497,82.91113281250003],[-77.61806640624997,82.89584960937503],[-76.009375,82.53515625],[-75.565625,82.60854492187502],[-77.12490234374994,83.00854492187497],[-74.41416015624995,83.01313476562501],[-72.65869140625,82.72163085937495],[-73.44189453124994,82.90483398437499],[-72.811669921875,83.08120117187502],[-71.98320312499996,83.10141601562498],[-70.94038085937495,82.90224609375],[-71.08481445312498,83.08266601562497],[-69.96992187499995,83.11611328125005],[-69.4888671875,83.01679687499998]]]]},"properties":{"name":"Canada","childNum":110}},{"geometry":{"type":"Polygon","coordinates":[[[9.527658197470123,47.27026989773668],[9.46249431093294,47.19858962254578],[9.46249431093294,47.09010747968864],[9.409458596647225,47.02019676540292],[9.579979133936737,47.05856388629306],[9.580273437500011,47.057373046875],[10.133496093750011,46.851513671875],[10.349414062500017,46.98476562499999],[10.414941406250023,46.964404296874996],[10.45458984375,46.8994140625],[10.452832031250011,46.86494140625],[10.406054687500017,46.73486328125],[10.39794921875,46.6650390625],[10.4306640625,46.550048828125],[10.195507812500011,46.62109375],[10.1375,46.61435546875],[10.087011718750006,46.599902343749996],[10.061230468750011,46.546777343749994],[10.038281250000011,46.483203125],[10.045605468750011,46.447900390624994],[10.081933593750023,46.420751953125],[10.109667968750017,46.362841796874996],[10.128320312500023,46.238232421875],[10.08056640625,46.227978515625],[10.041015625,46.238085937499996],[9.939257812500017,46.36181640625],[9.884472656250011,46.3677734375],[9.787792968750011,46.346044921875],[9.639453125000017,46.2958984375],[9.57958984375,46.29609375],[9.528710937500023,46.306201171874996],[9.427636718750023,46.482324218749994],[9.399316406250023,46.4806640625],[9.304394531250011,46.495556640625],[9.203417968750017,46.21923828125],[9.11874162946429,46.014892578125],[8.97551618303573,45.81677455357143],[8.74961495535715,46.02246372767857],[8.818554687500011,46.0771484375],[8.458398437500023,46.245898437499996],[8.370703125,46.445117187499996],[8.298535156250011,46.40341796875],[8.23193359375,46.341210937499994],[8.08154296875,46.256005859374994],[7.9931640625,46.015917968749996],[7.327929687500017,45.912353515625],[7.129003906250006,45.880419921874996],[7.055761718750006,45.90380859375],[7.02109375,45.92578125],[6.953710937500006,46.017138671874996],[6.897265625000017,46.0517578125],[6.772070312500006,46.16513671875],[6.758105468750017,46.415771484375],[6.578222656250006,46.437353515625],[6.428906250000011,46.430517578125],[6.321875,46.393701171874994],[6.234667968750017,46.3326171875],[6.199414062500011,46.19306640625],[6.086621093750011,46.147021484374996],[6.006640625000017,46.142333984375],[5.971484375000017,46.151220703125],[5.970019531250017,46.214697265625],[6.0361328125,46.238085937499996],[6.095898437500011,46.27939453125],[6.129687500000017,46.5669921875],[6.41015625,46.755419921874996],[6.429003906250017,46.832275390625],[6.45625,46.94833984375],[6.624804687500017,47.004345703125],[6.666894531250023,47.026513671874994],[6.688085937500006,47.058251953124994],[6.820703125000023,47.16318359375],[6.952050781250023,47.2671875],[6.978515625,47.302050781249996],[7.000585937500006,47.322509765625],[7.000585937500006,47.339453125],[6.900390625,47.39423828125],[6.968359375,47.45322265625],[7.136035156250017,47.48984375],[7.343164062500023,47.43310546875],[7.615625,47.592724609375],[8.454003906250023,47.59619140625],[8.559472656250023,47.6240234375],[8.570507812500011,47.63779296875],[8.567089843750011,47.651904296874996],[8.55234375,47.659130859375],[8.451757812500006,47.651806640625],[8.413281250000011,47.6626953125],[8.403417968750006,47.687792968749996],[8.435742187500011,47.731347656249994],[8.572656250000023,47.775634765625],[9.524023437500006,47.52421875],[9.625878906250023,47.467041015625],[9.527539062500011,47.270751953125],[9.527658197470123,47.27026989773668]]]},"properties":{"name":"Switzerland","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-67.28886718749999,-55.776855468749964],[-67.55996093749997,-55.72480468750002],[-67.39736328124997,-55.58515625],[-67.28886718749999,-55.776855468749964]]],[[[-67.07993164062498,-55.15380859374996],[-67.33969726562495,-55.292578124999984],[-67.4947265625,-55.177441406249976],[-68.07001953124995,-55.22109374999999],[-68.30136718750003,-54.98066406250003],[-67.245263671875,-54.977636718750034],[-67.07993164062498,-55.15380859374996]]],[[[-69.70297851562503,-54.91904296875],[-68.90078125000002,-55.01777343750004],[-68.45800781249997,-54.95966796875002],[-68.61328124999997,-55.155566406250045],[-68.28266601562495,-55.25517578125],[-68.04833984375,-55.6431640625],[-68.86704101562498,-55.45019531250003],[-68.89008789062498,-55.2412109375],[-69.19262695312497,-55.171875],[-69.35922851562498,-55.300683593749945],[-69.18085937499995,-55.47480468749998],[-69.41181640624995,-55.44423828124997],[-69.97978515625002,-55.14746093749999],[-69.88442382812494,-54.88203125000001],[-69.70297851562503,-54.91904296875]]],[[[-70.9916015625,-54.86796874999999],[-70.80483398437497,-54.96767578124996],[-70.41752929687493,-54.908886718749976],[-70.29785156249997,-55.11376953124997],[-70.47558593749994,-55.17705078124998],[-71.43720703125001,-54.88925781249997],[-70.9916015625,-54.86796874999999]]],[[[-71.390478515625,-54.03281250000002],[-71.02192382812495,-54.111816406250036],[-71.14326171874998,-54.374023437499986],[-71.473291015625,-54.23115234375001],[-71.94853515624999,-54.300878906250006],[-72.21044921874997,-54.04775390624995],[-71.996484375,-53.884863281249984],[-71.390478515625,-54.03281250000002]]],[[[-72.92324218749997,-53.481640625],[-72.88222656249997,-53.578320312499976],[-72.48227539062503,-53.58808593750001],[-72.20541992187503,-53.80742187500002],[-72.408544921875,-54.00380859374997],[-72.87099609375,-54.12656250000002],[-72.76376953125,-53.86484375],[-73.03945312499994,-53.83281250000004],[-73.08076171875001,-53.99804687499995],[-73.21064453125001,-53.98583984374995],[-73.31435546875,-53.72919921874998],[-73.845458984375,-53.54580078125001],[-73.44707031249993,-53.41005859374998],[-72.92324218749997,-53.481640625]]],[[[-74.38574218749994,-52.92236328125001],[-73.65400390624998,-53.06982421875003],[-73.13520507812498,-53.35390625],[-73.56728515625,-53.3068359375],[-73.86694335937494,-53.096875],[-74.27021484374995,-53.08154296875002],[-74.71201171874998,-52.74873046874998],[-74.38574218749994,-52.92236328125001]]],[[[-68.62993164062499,-52.65263671875004],[-68.65322265624994,-54.85361328124999],[-69.48627929687493,-54.85888671875],[-69.72343750000002,-54.71210937500003],[-70.49716796875,-54.80957031249999],[-71.83154296874997,-54.62617187500002],[-71.92773437500003,-54.52871093749997],[-71.80014648437498,-54.433984374999945],[-71.07993164062498,-54.444238281249994],[-70.79726562500002,-54.32724609374996],[-70.70112304687498,-54.48544921875004],[-70.31098632812498,-54.52851562500002],[-70.86308593749993,-54.11044921875003],[-70.86772460937499,-53.88417968750002],[-70.53129882812502,-53.627343750000016],[-70.37973632812495,-53.98671874999995],[-70.62983398437493,-54.005566406249976],[-70.53530273437494,-54.136132812500016],[-70.16899414062502,-54.37929687499999],[-69.74184570312494,-54.30585937500005],[-69.25317382812494,-54.557421875000045],[-69.04433593749997,-54.40673828124999],[-69.98813476562503,-54.10908203125001],[-70.15112304687503,-53.88808593750002],[-70.09111328124996,-53.72177734374998],[-69.35595703125003,-53.41630859375001],[-69.63701171874999,-53.33408203125004],[-70.32929687499998,-53.37763671875003],[-70.44335937499994,-53.085546875000034],[-70.130615234375,-52.942773437499994],[-70.38012695312494,-52.75195312500002],[-69.93544921874997,-52.82109374999998],[-69.41406249999997,-52.48623046874997],[-69.16704101562499,-52.66757812499997],[-68.78979492187497,-52.576757812500034],[-68.62993164062499,-52.65263671875004]]],[[[-74.82294921874993,-51.63017578125001],[-74.53681640624998,-51.96513671875004],[-74.69448242187497,-52.27919921874999],[-74.85180664062494,-52.27070312500003],[-75.10537109375,-51.78886718750001],[-74.82294921874993,-51.63017578125001]]],[[[-74.55864257812499,-51.27705078125001],[-74.62036132812497,-51.395703125000026],[-75.04736328125,-51.39833984375003],[-75.28911132812496,-51.625390625000016],[-75.15366210937498,-51.278808593750014],[-74.73666992187503,-51.20761718749999],[-74.55864257812499,-51.27705078125001]]],[[[-75.302001953125,-50.67998046875005],[-75.411376953125,-50.76435546875001],[-75.42763671875002,-50.48056640625002],[-75.11533203124998,-50.510449218749976],[-75.302001953125,-50.67998046875005]]],[[[-75.05478515625,-50.29609375],[-75.44912109374997,-50.34335937500004],[-75.32666015624997,-50.01181640625],[-74.8759765625,-50.10996093750001],[-75.05478515625,-50.29609375]]],[[[-75.106689453125,-48.83652343750001],[-75.38994140624999,-49.15917968750002],[-75.64116210937499,-49.195410156250034],[-75.48764648437498,-49.082421875000016],[-75.58310546874998,-48.85888671874995],[-75.106689453125,-48.83652343750001]]],[[[-74.47617187499998,-49.14785156250002],[-74.59472656249997,-50.00664062500001],[-74.76298828124996,-50.01142578125001],[-74.88041992187502,-49.72587890625001],[-74.72382812499998,-49.42382812500003],[-74.960107421875,-49.533007812499974],[-75.06601562499998,-49.85234375000002],[-75.54980468749994,-49.79130859375002],[-75.30585937499998,-49.49404296875003],[-75.46748046874995,-49.35888671875003],[-75.08603515624998,-49.27021484375],[-75.21015624999995,-49.14804687499998],[-74.94921875,-48.960156249999976],[-74.89624023437503,-48.73320312500002],[-74.54609374999993,-48.76689453125004],[-74.47617187499998,-49.14785156250002]]],[[[-75.51025390624997,-48.76347656250005],[-75.65092773437496,-48.58632812500002],[-75.57148437499993,-48.095898437500026],[-75.39140625000002,-48.01972656249997],[-75.15849609374999,-48.62265624999996],[-75.51025390624997,-48.76347656250005]]],[[[-74.56728515625,-48.591992187500026],[-74.92304687499998,-48.62646484375003],[-75.21289062499997,-48.141699218750034],[-75.19829101562502,-47.974609375000014],[-74.895654296875,-47.839355468749986],[-74.56728515625,-48.591992187500026]]],[[[-75.11220703124997,-47.8376953125],[-75.26103515625002,-47.76386718749998],[-74.92646484374998,-47.72314453125003],[-75.11220703124997,-47.8376953125]]],[[[-74.31289062500002,-45.69150390625002],[-74.46552734374995,-45.757226562499994],[-74.68984375,-45.66259765625],[-74.310546875,-45.17265625000002],[-74.31289062500002,-45.69150390625002]]],[[[-73.63217773437498,-44.82148437499997],[-73.81845703125,-44.65214843750002],[-73.72392578124993,-44.544238281249974],[-73.63217773437498,-44.82148437499997]]],[[[-72.98613281249999,-44.780078124999974],[-73.22846679687498,-44.85996093749999],[-73.39707031249998,-44.77431640624995],[-73.44506835937497,-44.641015624999966],[-73.20771484374993,-44.33496093749997],[-72.7763671875,-44.50859374999999],[-72.98613281249999,-44.780078124999974]]],[[[-73.73535156249997,-44.39453125000003],[-74.00205078125003,-44.59091796874998],[-73.728173828125,-45.195898437500034],[-74.016259765625,-45.344921875000026],[-74.61777343749998,-44.64794921874996],[-74.50180664062498,-44.47353515624995],[-74.09721679687496,-44.38935546875004],[-73.99492187499999,-44.140234375],[-73.70322265624998,-44.27412109375001],[-73.73535156249997,-44.39453125000003]]],[[[-73.81064453125003,-43.827246093750006],[-73.95566406249998,-43.921972656250034],[-74.14296874999997,-43.872167968750006],[-73.81064453125003,-43.827246093750006]]],[[[-73.77338867187498,-43.3458984375],[-74.114404296875,-43.35791015624996],[-74.387353515625,-43.231640625],[-74.03666992187496,-41.79550781249998],[-73.52783203124997,-41.89628906249999],[-73.42290039062499,-42.192871093750014],[-73.47080078124998,-42.46630859375004],[-73.78925781249993,-42.58574218750003],[-73.43632812499996,-42.9365234375],[-73.74965820312494,-43.15908203124995],[-73.77338867187498,-43.3458984375]]],[[[-78.80415039062501,-33.646484374999986],[-78.98945312499993,-33.66171874999998],[-78.87744140625003,-33.57519531250003],[-78.80415039062501,-33.646484374999986]]],[[[-109.27998046874994,-27.14042968749996],[-109.434130859375,-27.171289062500023],[-109.39047851562499,-27.068359375000014],[-109.27998046874994,-27.14042968749996]]],[[[-67.19487304687493,-22.821679687500037],[-67.00878906249994,-23.00136718750005],[-67.35620117187503,-24.033789062499963],[-68.25029296875002,-24.391992187500023],[-68.56201171875,-24.74736328125003],[-68.38422851562495,-25.091894531249977],[-68.59208984375002,-25.420019531250034],[-68.41450195312498,-26.153710937500023],[-68.59160156249999,-26.47041015624997],[-68.31865234374999,-26.973242187500006],[-68.59208984375002,-27.140039062499966],[-68.84633789062494,-27.153710937499994],[-69.17441406249998,-27.924707031250037],[-69.65693359374995,-28.413574218749986],[-69.82788085937497,-29.10322265624997],[-70.02680664062501,-29.324023437500017],[-69.95996093749997,-30.078320312500026],[-69.84428710937493,-30.175],[-69.95634765624996,-30.35820312500003],[-70.15322265625,-30.360937499999963],[-70.30908203124994,-31.02265625000004],[-70.51958007812493,-31.1484375],[-70.585205078125,-31.569433593749963],[-70.25439453125,-31.957714843750026],[-70.36376953125,-32.08349609374997],[-70.02197265625,-32.88457031250002],[-70.08486328125002,-33.20175781249998],[-69.81962890624999,-33.28378906249999],[-69.85244140625,-34.224316406250026],[-70.05205078124999,-34.30078124999997],[-70.39316406250003,-35.146875],[-70.55517578125,-35.246875],[-70.41572265625001,-35.52304687500002],[-70.40478515625,-36.06171874999998],[-71.05551757812498,-36.52373046874996],[-71.19218750000002,-36.84365234375004],[-71.16757812499998,-37.76230468749996],[-70.858642578125,-38.60449218750003],[-71.40156249999995,-38.93505859374996],[-71.53945312499997,-39.60244140624995],[-71.71992187499995,-39.63525390624997],[-71.65976562499998,-40.02080078125],[-71.81831054687493,-40.17666015624995],[-71.70898437499997,-40.381738281249994],[-71.93212890624994,-40.69169921874999],[-71.91127929687497,-41.650390624999986],[-71.75,-42.04677734375001],[-72.10820312499993,-42.25185546874995],[-72.14643554687498,-42.990039062499974],[-71.750634765625,-43.237304687499986],[-71.90498046875001,-43.34755859374998],[-71.68007812500002,-43.92958984374998],[-71.82001953124993,-44.38310546875],[-71.21259765624998,-44.44121093750003],[-71.15971679687496,-44.56025390625004],[-71.26113281250002,-44.763085937499966],[-72.06372070312503,-44.771875],[-72.04169921874998,-44.90419921875004],[-71.5962890625,-44.97919921875004],[-71.34931640624995,-45.33193359374995],[-71.74619140624998,-45.57890625],[-71.63154296874998,-45.95371093749998],[-71.87568359374998,-46.160546875],[-71.69965820312501,-46.6513671875],[-71.94023437499999,-46.83125],[-71.90498046875001,-47.201660156250014],[-72.34594726562497,-47.49267578124997],[-72.517919921875,-47.87636718749998],[-72.32832031250001,-48.11005859374998],[-72.35473632812497,-48.36582031250005],[-72.582861328125,-48.47539062499999],[-72.65126953125,-48.84160156249998],[-73.03364257812501,-49.014355468750004],[-73.13525390625,-49.30068359374999],[-73.46157226562497,-49.31386718750001],[-73.55419921875,-49.463867187500014],[-73.50126953124996,-50.125292968750024],[-73.15292968749998,-50.73828125000003],[-72.50981445312496,-50.607519531250034],[-72.34023437499997,-50.68183593749999],[-72.40766601562501,-51.54082031250002],[-71.91865234374995,-51.98955078125004],[-69.96025390624993,-52.00820312500002],[-68.443359375,-52.35664062500004],[-69.24101562499996,-52.20546874999997],[-69.62031249999995,-52.46474609374995],[-70.79511718749995,-52.76875],[-70.99584960937497,-53.77929687499997],[-71.29775390625002,-53.88339843750004],[-72.1744140625,-53.632324218749964],[-72.41289062500002,-53.35019531250004],[-71.94169921874993,-53.23408203125001],[-71.89169921874998,-53.523535156250006],[-71.79145507812498,-53.48457031249997],[-71.74052734374999,-53.232617187499976],[-71.28896484375002,-53.03369140624995],[-71.22714843750003,-52.810644531249984],[-71.38774414062496,-52.76425781250004],[-72.27802734374998,-53.13232421874997],[-72.54892578125,-53.4607421875],[-73.05273437499997,-53.24345703125005],[-72.72768554687502,-52.7623046875],[-72.453466796875,-52.814453124999964],[-72.11757812499997,-52.65],[-71.51127929687502,-52.60537109375],[-72.22568359374998,-52.52099609374995],[-72.43769531250001,-52.62578124999998],[-72.71210937499995,-52.53554687499999],[-73.12246093749997,-53.073925781249976],[-73.64521484374998,-52.83701171875003],[-73.2408203125,-52.707128906250034],[-73.12392578125,-52.487988281249976],[-73.24414062499997,-52.62402343749998],[-73.58569335937503,-52.68574218750003],[-74.01445312499999,-52.63935546875],[-74.26494140624993,-52.1048828125],[-73.83447265625,-52.23398437500001],[-73.68432617187494,-52.07773437499998],[-73.26044921874993,-52.157812500000034],[-72.79501953124998,-51.94951171875005],[-72.57084960937496,-52.200097656249945],[-72.67705078125002,-52.38466796874998],[-72.52333984374997,-52.255468750000034],[-72.62460937499998,-51.94648437499997],[-72.48964843750002,-51.76367187500003],[-72.76123046875,-51.57324218749996],[-73.16875,-51.45390624999998],[-72.60004882812495,-51.79912109374997],[-73.51816406250003,-52.04101562499996],[-73.75263671874993,-51.795507812500034],[-74.19667968749997,-51.68056640624997],[-73.92978515624995,-51.61787109374999],[-73.93950195312499,-51.26630859375005],[-74.81474609374996,-51.06289062499999],[-75.09467773437495,-50.68125],[-74.68574218749995,-50.662011718749945],[-74.77587890625003,-50.46992187499998],[-74.64448242187498,-50.360937499999984],[-74.365576171875,-50.487890625],[-74.13940429687503,-50.81777343749997],[-73.80654296875,-50.93837890625003],[-73.654443359375,-50.49267578125],[-73.97802734375003,-50.827050781249994],[-74.18559570312493,-50.485351562500014],[-73.95034179687497,-50.510546875],[-74.62958984374998,-50.19404296875],[-74.333740234375,-49.97460937499997],[-73.95859374999998,-49.994726562499984],[-74.32392578124995,-49.783398437500004],[-74.29082031249996,-49.604101562499984],[-73.83637695312493,-49.609375],[-74.09443359374993,-49.42968749999998],[-73.93496093749994,-49.02089843750001],[-74.2212890625,-49.500585937500034],[-74.36655273437503,-49.40048828124998],[-74.34101562499998,-48.59570312499998],[-74.00908203124996,-48.475],[-74.47441406249999,-48.46396484374996],[-74.58466796874998,-47.999023437500014],[-73.39106445312498,-48.14589843750001],[-73.60991210937499,-47.993945312500045],[-73.71586914062499,-47.65546875000001],[-73.94086914062498,-47.92939453125004],[-74.22705078124994,-47.96894531250001],[-74.654931640625,-47.702246093750034],[-74.5337890625,-47.567675781249974],[-74.24296874999999,-47.67929687499998],[-74.13408203125002,-47.590820312499986],[-74.48266601562497,-47.43046875],[-74.15839843749998,-47.18251953125002],[-74.31357421874998,-46.78818359374998],[-74.45419921875003,-46.76679687499997],[-74.51225585937496,-46.88515625000002],[-75.00595703125,-46.74111328124998],[-74.98417968750002,-46.51210937499995],[-75.54033203124999,-46.69873046874996],[-75.43037109374995,-46.93457031249996],[-75.70639648437498,-46.70527343749997],[-74.924462890625,-46.159667968750014],[-75.06669921874993,-45.874902343749994],[-74.15786132812497,-45.7671875],[-74.122705078125,-45.49619140625002],[-73.95717773437494,-45.40439453124998],[-73.825,-45.446875],[-74.01992187500002,-46.055859375],[-74.39296875,-46.21738281250005],[-73.96757812500002,-46.15410156250003],[-73.87871093749993,-45.846875],[-73.73525390624994,-45.81171875],[-73.70815429687502,-46.070312500000014],[-73.94863281249997,-46.533105468749966],[-73.845361328125,-46.56601562500002],[-73.59184570312493,-45.89912109375004],[-73.73076171874999,-45.47998046875],[-73.26621093749995,-45.346191406250014],[-72.933837890625,-45.45234374999997],[-73.44497070312497,-45.23818359374995],[-73.36245117187502,-44.97822265625001],[-72.73896484375001,-44.73417968750003],[-72.680078125,-44.59394531249997],[-72.66386718749999,-44.43642578124995],[-73.26508789062498,-44.16865234375001],[-73.22446289062498,-43.89794921875003],[-73.06879882812495,-43.86201171874998],[-72.99658203125,-43.63154296875001],[-73.07597656250002,-43.323632812499994],[-72.75800781249998,-43.039453125],[-72.84804687500002,-42.66914062499997],[-72.77392578125003,-42.505175781250045],[-72.63183593750003,-42.509667968749994],[-72.77324218749996,-42.257714843749994],[-72.63105468749995,-42.199804687500006],[-72.412353515625,-42.388183593750014],[-72.49941406249997,-41.98085937499999],[-72.82407226562503,-41.90878906249996],[-72.36040039062499,-41.64912109375],[-72.31826171875,-41.49902343749997],[-72.54238281250002,-41.690625],[-72.95283203124995,-41.51474609374998],[-73.24179687499995,-41.78085937500002],[-73.62402343750003,-41.77363281249997],[-73.73515625000002,-41.74248046875002],[-73.62392578125,-41.581347656250045],[-73.81074218749995,-41.51748046875001],[-73.96586914062493,-41.118261718750034],[-73.67099609375,-39.96318359374999],[-73.41040039062503,-39.78916015624998],[-73.22646484375002,-39.22441406250003],[-73.52021484375001,-38.509375],[-73.46479492187498,-38.04033203125003],[-73.66181640624998,-37.69853515625003],[-73.66240234375002,-37.341015625000026],[-73.60166015624998,-37.18847656250003],[-73.21596679687502,-37.16689453124998],[-73.11806640624997,-36.68837890625002],[-72.58735351562493,-35.759667968749994],[-72.62392578125002,-35.5857421875],[-72.22377929687494,-35.096191406250014],[-72.00283203124997,-34.16533203125],[-71.66435546875002,-33.65263671875],[-71.74296875,-33.09511718750001],[-71.45224609374998,-32.65957031250001],[-71.70893554687495,-30.62802734375002],[-71.66948242187499,-30.33037109374996],[-71.40039062499997,-30.142968749999966],[-71.31572265624996,-29.649707031250017],[-71.51923828124993,-28.926464843750026],[-71.30673828124998,-28.672460937499963],[-71.08652343749998,-27.814453124999957],[-70.92578125,-27.588671874999974],[-70.64658203124998,-26.329394531250017],[-70.71372070312498,-25.78417968749997],[-70.44536132812502,-25.17265624999999],[-70.57412109374994,-24.644335937500003],[-70.39233398437494,-23.565917968749957],[-70.59335937499995,-23.255468750000034],[-70.56318359374995,-23.057031250000023],[-70.33168945312494,-22.848632812500014],[-70.08002929687501,-21.356835937500037],[-70.19702148437494,-20.725390625],[-70.15742187499995,-19.70585937500003],[-70.41826171874999,-18.345605468750023],[-69.92636718749998,-18.206054687500014],[-69.80258789062498,-17.990234375000014],[-69.85209960937493,-17.70380859375001],[-69.68476562499995,-17.649804687500023],[-69.58642578125,-17.57324218749997],[-69.51093749999998,-17.50605468749997],[-69.31337890624997,-17.943164062500017],[-69.28232421875003,-17.96484375],[-69.09394531249993,-18.05048828125004],[-69.14545898437495,-18.14404296875],[-69.09228515624994,-18.28242187500004],[-69.02680664062493,-18.65625],[-68.97885742187503,-18.81298828125003],[-68.96831054687502,-18.967968749999983],[-68.85795898437499,-19.09335937500005],[-68.62055664062495,-19.29667968749999],[-68.54785156249997,-19.341113281249974],[-68.49199218749996,-19.381933593750034],[-68.47016601562495,-19.409960937499974],[-68.46289062499997,-19.43281250000001],[-68.57529296874998,-19.56015625000002],[-68.69829101562499,-19.721093750000037],[-68.69619140625,-19.74072265625003],[-68.57827148437494,-19.856542968750006],[-68.559375,-19.902343750000014],[-68.56069335937502,-19.96708984374996],[-68.75932617187499,-20.115527343750003],[-68.74516601562493,-20.45859375],[-68.48432617187498,-20.628417968749957],[-68.55825195312497,-20.90195312499999],[-68.197021484375,-21.30029296874997],[-68.18642578124997,-21.618554687499966],[-67.88173828124997,-22.493359375000026],[-67.87944335937496,-22.822949218750026],[-67.57993164062495,-22.89169921874999],[-67.36225585937493,-22.85517578125001],[-67.19487304687493,-22.821679687500037]]]]},"properties":{"name":"Chile","childNum":26}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[110.88876953125006,19.99194335937497],[111.01367187500003,19.65546875000001],[110.64091796875002,19.291210937499955],[110.45126953125012,18.747949218750023],[110.06738281249997,18.447558593750045],[109.51933593750007,18.21826171875003],[108.7015625,18.535253906250034],[108.66552734375003,19.304101562499994],[109.27666015625002,19.761132812500023],[109.17744140625004,19.768457031250023],[109.26347656250007,19.882666015625006],[110.1715820312501,20.053710937500057],[110.58818359375002,19.976367187500017],[110.6517578125,20.137744140625017],[110.88876953125006,19.99194335937497]]],[[[110.38515625000005,21.093164062499966],[110.52158203125006,21.083105468750063],[110.50390625000003,20.96772460937501],[110.28095703125004,21.001171874999983],[110.38515625000005,21.093164062499966]]],[[[112.64375,21.63964843750003],[112.525,21.62304687500003],[112.64765625000004,21.710253906250017],[112.64375,21.63964843750003]]],[[[112.79023437500004,21.601855468750045],[112.78203125000007,21.772265625000045],[112.86259765625002,21.75263671875004],[112.79023437500004,21.601855468750045]]],[[[118.1830078125,24.496289062499983],[118.0905273437501,24.446142578125063],[118.10380859375002,24.552343750000034],[118.1830078125,24.496289062499983]]],[[[119.82089843750006,25.45698242187504],[119.70029296875012,25.432714843750063],[119.72255859375005,25.638818359375023],[119.83837890625003,25.591064453125],[119.82089843750006,25.45698242187504]]],[[[121.2513671875,28.086425781250057],[121.13154296875004,28.062597656250006],[121.20546875,28.204394531250017],[121.2513671875,28.086425781250057]]],[[[122.29589843750003,29.96342773437499],[122.02402343750012,30.01333007812505],[121.96943359375004,30.143115234375017],[122.28447265625007,30.068017578124994],[122.29589843750003,29.96342773437499]]],[[[121.86269531250005,31.492285156249977],[121.519921875,31.549609375000017],[121.2111328125001,31.80537109375001],[121.86269531250005,31.492285156249977]]],[[[130.52695312500012,42.535400390625],[130.24667968750012,42.744824218749955],[130.24033203125006,42.891796874999955],[129.89824218750002,42.998144531250034],[129.69785156250012,42.448144531249994],[129.3136718750001,42.41357421874997],[128.92343750000006,42.038232421874966],[128.04521484375007,41.9875],[128.28925781250004,41.60742187500006],[128.14941406249997,41.38774414062496],[127.17968750000003,41.531347656250006],[126.95478515625004,41.76948242187501],[126.74306640625,41.724853515625],[125.98906250000002,40.904638671875034],[124.8893554687501,40.459814453125006],[124.36210937500002,40.004052734374994],[124.10576171875002,39.84101562499998],[123.65087890625003,39.881591796875],[122.8400390625001,39.600830078125],[121.98232421875,39.05317382812498],[121.67724609374997,39.00341796875006],[121.64990234375003,38.865087890625034],[121.16357421874997,38.73164062500001],[121.10673828125002,38.920800781249994],[121.6798828125001,39.10869140625002],[121.62763671875004,39.22016601562498],[121.81845703125006,39.38652343750002],[121.27548828125006,39.38476562500003],[121.26748046875,39.544677734375],[121.51757812499997,39.638964843750045],[121.51738281250002,39.84482421875006],[121.8009765625001,39.950537109375006],[122.27500000000012,40.541845703125034],[121.83486328125005,40.97426757812502],[121.72929687500002,40.84614257812504],[121.1745117187501,40.901269531249994],[120.47910156250006,40.23095703125003],[119.39111328125003,39.75249023437499],[118.976953125,39.182568359374955],[118.29785156249997,39.067089843749955],[118.04091796875,39.22675781249998],[117.86572265625003,39.191259765625034],[117.61669921875003,38.852880859375034],[117.5578125000001,38.625146484374994],[117.76669921875012,38.311669921874994],[118.01494140625007,38.18339843749996],[118.94003906250006,38.04277343750002],[119.08916015625007,37.70073242187496],[118.95263671875003,37.33115234374998],[119.28740234375002,37.138281250000034],[119.76054687500007,37.15507812499999],[120.31152343750003,37.62270507812505],[120.2572265625,37.67900390624996],[120.75,37.83393554687501],[121.64023437500012,37.46035156250002],[122.05664062500003,37.528906250000034],[122.66699218750003,37.40283203125003],[122.4466796875,37.06811523437503],[122.51972656250004,36.94682617187502],[122.34091796875012,36.83222656250004],[121.93271484375006,36.95947265625003],[121.05380859375006,36.61137695312499],[120.81083984375007,36.6328125],[120.89580078125007,36.44414062500002],[120.71152343750006,36.41328125000004],[120.6378906250001,36.129931640625045],[120.39306640625003,36.053857421874994],[120.32773437500006,36.228173828124994],[120.18330078125004,36.20244140624999],[120.094140625,36.11889648437503],[120.28476562500006,35.98442382812499],[119.42968749999997,35.301416015624994],[119.16533203125002,34.84882812499998],[119.20097656250002,34.748437499999966],[120.26669921875006,34.274023437500034],[120.87109374999997,33.016503906249994],[120.8532226562501,32.66137695312503],[121.34169921875005,32.42504882812503],[121.40390625000006,32.20625],[121.85634765625,31.816455078125045],[121.86630859375006,31.703564453124955],[121.68085937500004,31.71215820312503],[121.351953125,31.85878906250005],[120.97353515625,31.86938476562497],[120.52011718750006,32.10585937500002],[120.03593750000002,31.93627929687503],[120.7155273437501,31.983740234375006],[120.7877929687501,31.81977539062501],[121.66064453124997,31.319726562499994],[121.87792968750003,30.91699218750003],[121.41894531249997,30.789794921875057],[120.8214843750001,30.354638671875023],[120.44980468750006,30.38784179687505],[120.19462890625002,30.241308593750034],[120.49453125,30.303076171875006],[120.63339843750006,30.133154296875034],[121.25800781250004,30.30410156250005],[121.67792968750004,29.979101562500006],[122.08291015625005,29.870361328125057],[121.50625,29.484570312499955],[121.94121093750002,29.605908203124983],[121.91777343750007,29.13500976562497],[121.71748046875004,29.25634765625],[121.48710937500007,29.193164062500017],[121.67968749999997,28.953125],[121.54003906250003,28.931884765625],[121.6625,28.851416015625034],[121.47519531250006,28.64140625],[121.60996093750006,28.29213867187505],[121.27226562500002,28.222119140624983],[121.14570312500004,28.32666015624997],[120.95859375000006,28.037011718750023],[120.74765625000006,28.00996093750001],[120.83300781249997,27.891455078125034],[120.58750000000012,27.580761718749983],[120.60751953125012,27.41240234374996],[120.2787109375,27.097070312500023],[120.08671875000007,26.67158203125004],[119.88222656250005,26.610449218750006],[119.82421874999997,26.84638671875001],[119.71044921874997,26.728662109375023],[119.58818359375002,26.784960937500045],[119.8810546875001,26.33417968750004],[119.46308593750004,26.05468750000003],[119.13945312500007,26.12177734375001],[119.33203124999997,25.94873046875003],[119.61875000000012,26.003564453124994],[119.53945312500005,25.59125976562504],[119.6224609375,25.391162109375017],[119.180078125,25.449804687499977],[119.285546875,25.232226562500074],[118.97753906249997,25.209277343750017],[118.90908203125005,24.92890625000001],[118.63691406250004,24.835546874999977],[118.65703125000002,24.621435546874977],[118.0871093750001,24.627001953125045],[118.00595703125006,24.48198242187499],[117.84267578125005,24.47431640625004],[118.0560546875,24.24609374999997],[117.62822265625002,23.836718750000074],[117.46640625000012,23.84057617187497],[117.36767578124997,23.58862304687497],[117.29082031250007,23.71435546875],[117.08251953124997,23.578759765625023],[116.91064453124997,23.646679687499983],[116.86093750000006,23.453076171874983],[116.62939453124997,23.353857421875034],[116.69882812500006,23.277783203124983],[116.53828125000004,23.17968749999997],[116.47070312499997,22.945898437500034],[116.25185546875005,22.981347656249994],[115.85214843750006,22.801562500000045],[115.64042968750002,22.853417968750023],[115.49833984375002,22.718847656250063],[115.19580078125003,22.81728515625005],[114.85380859375007,22.616796875000063],[114.65166015625002,22.755273437500023],[114.55419921874997,22.52890625],[114.26601562500005,22.540966796874983],[114.01542968750007,22.51191406250001],[113.61962890624997,22.861425781249977],[113.6205078125,23.12749023437499],[113.51972656250004,23.102099609375074],[113.33105468749997,22.912011718749966],[113.55302734375002,22.594042968750045],[113.54912109375002,22.225195312500034],[113.14902343750012,22.075],[113.08876953125,22.207958984374983],[112.95390625000007,21.907324218750034],[112.80859374999997,21.944628906250074],[112.58632812500005,21.77685546875],[112.35966796875007,21.97802734375003],[112.30498046875002,21.74169921875003],[111.94394531250012,21.84965820312499],[111.60273437500004,21.55908203125003],[111.01689453125007,21.51171874999997],[110.56718750000002,21.21406250000001],[110.41093750000007,21.33813476562497],[110.15400390625004,20.944628906250017],[110.36542968750004,20.837597656249955],[110.31308593750012,20.67167968749999],[110.51152343750007,20.51826171875001],[110.34472656249997,20.29482421875005],[109.88251953125004,20.364062500000045],[109.96835937500006,20.448144531250023],[109.66259765625003,20.91689453125005],[109.68125000000012,21.13164062499999],[109.93076171875012,21.480566406250034],[109.6869140625,21.52460937500004],[109.56640624999997,21.690576171874994],[109.54404296875012,21.537939453125006],[109.14863281250004,21.425537109375],[109.1017578125001,21.59047851562505],[108.77167968750004,21.63046875],[108.59375,21.901025390624994],[108.47988281250005,21.904638671875006],[108.50214843750004,21.633447265624994],[108.32480468750006,21.693505859374994],[108.24628906250004,21.55839843749999],[107.97265624999997,21.507958984375023],[107.75927734374997,21.655029296875057],[107.35117187500012,21.60888671874997],[106.97099609375002,21.923925781250034],[106.66357421875003,21.97890625000005],[106.55039062500006,22.501367187499994],[106.78027343749997,22.778906250000034],[106.54179687500007,22.908349609375023],[106.2790039062501,22.857470703125045],[106.14843749999997,22.970068359375006],[105.8429687500001,22.922802734374955],[105.27539062500003,23.34521484375003],[104.86474609375003,23.136376953125023],[104.68730468750002,22.822216796874983],[104.37177734375004,22.704052734374983],[104.14306640624997,22.800146484375006],[103.94150390625006,22.540087890625045],[103.62021484375006,22.782031250000045],[103.49296875000007,22.587988281250034],[103.32666015625003,22.769775390625057],[102.98193359374997,22.4482421875],[102.47089843750004,22.75092773437501],[102.40644531250004,22.70800781249997],[102.2370117187501,22.466015624999983],[102.1759765625001,22.414648437500006],[102.12744140624997,22.379199218750045],[101.84179687500003,22.38847656249999],[101.75996093750004,22.490332031250034],[101.73876953124997,22.495263671874994],[101.70751953125003,22.486572265625],[101.67148437500006,22.462304687500023],[101.64619140625004,22.405419921874966],[101.61992187500002,22.32744140624999],[101.56787109374997,22.27636718749997],[101.52451171875006,22.25366210937497],[101.7365234375001,21.826513671874977],[101.74394531250007,21.77797851562505],[101.74726562500004,21.605761718750045],[101.72294921875007,21.31494140625003],[101.80058593750007,21.212597656249983],[101.78349609375007,21.204150390625017],[101.728125,21.156396484374994],[101.7047851562501,21.15014648437503],[101.54238281250005,21.23427734375005],[101.2814453125001,21.184130859375045],[101.24785156250007,21.197314453125045],[101.22441406250002,21.223730468750034],[101.21181640625,21.278222656250023],[101.2199218750001,21.34243164062505],[101.17539062500006,21.407519531250074],[101.19667968750005,21.522070312500063],[101.1388671875001,21.567480468749977],[101.07978515625004,21.75585937499997],[100.60458984375012,21.471777343750006],[100.14765625000004,21.480517578125017],[99.94072265625007,21.75874023437504],[99.9176757812501,22.02802734375001],[99.19296875000006,22.12597656249997],[99.50712890625002,22.959130859374994],[99.41806640625006,23.069238281250023],[98.86376953125003,23.191259765625034],[98.8322265625001,23.624365234374977],[98.67675781250003,23.905078125000045],[98.83505859375006,24.121191406250034],[98.2125,24.110644531250017],[97.56455078125012,23.911035156250023],[97.7082031250001,24.228759765625],[97.53144531250004,24.49169921875003],[97.58330078125002,24.77480468750005],[97.73789062500006,24.869873046875057],[97.8195312500001,25.251855468749994],[98.01074218749997,25.292529296875017],[98.14287109375007,25.571093750000017],[98.33378906250007,25.586767578125006],[98.65625,25.86357421874999],[98.56406250000006,26.072412109374994],[98.68554687499997,26.189355468750023],[98.7384765625001,26.785742187500006],[98.65117187500007,27.572460937499983],[98.4525390625,27.6572265625],[98.29882812499997,27.550097656250045],[98.06162109375012,28.185888671874977],[97.59921875000006,28.51704101562504],[97.53789062500002,28.510205078124983],[97.43144531250002,28.353906250000023],[97.35644531249997,28.254492187500006],[97.32158929493812,28.217097107438057],[97.3027336276825,28.08710519614969],[97.34382779482424,27.982305259167095],[97.04929369561631,27.76000444316393],[96.96494598325154,27.699301564540924],[96.19423412199573,28.04146177926422],[95.73730002295082,28.117613231051525],[95.11298892962586,27.748338353239472],[94.07167814294401,27.588707868507477],[93.61247595136224,27.323800298697016],[93.30681393470121,26.786120363519142],[92.74319481218781,26.833531317384058],[92.04974640832253,26.874866505386724],[92.07342257335648,26.915311275859864],[92.06813426293174,26.9752569185349],[92.02985139563152,27.03987087331446],[91.99856592104459,27.079255842602592],[91.99177981607339,27.100605151743654],[92.0025114452454,27.147290053160265],[92.03101585307499,27.214271359861193],[92.08387457645458,27.29090135496722],[92.04520857607581,27.364442429033787],[91.99069061380867,27.450181624174498],[91.95099838734396,27.45828799115413],[91.85276579410389,27.438593286730903],[91.74366351462741,27.442853010105477],[91.59505352446729,27.557262710287986],[91.63193359375012,27.759960937499983],[91.64189453125002,27.923242187500023],[91.36259958579089,28.02438066407592],[91.27304687500012,28.078369140625],[91.22587890625007,28.071240234374983],[91.07773437500012,27.974462890624977],[91.02080078125002,27.970068359374977],[90.71572265625,28.071728515624983],[90.63007812500004,28.078564453124955],[90.47734375000007,28.07084960937499],[90.3527343750001,28.080224609375023],[90.33310546875012,28.093994140625],[90.36298828125004,28.21650390625001],[90.34824218750006,28.24394531249999],[90.22080078125006,28.27773437500005],[90.10449218749997,28.302050781250017],[89.98105468750006,28.311181640625023],[89.8978515625,28.29414062500001],[89.81689453125003,28.25629882812501],[89.74980468750002,28.18818359375001],[89.65273437500005,28.158300781250034],[89.53691406250007,28.10742187499997],[89.4806640625001,28.059960937499994],[88.89140625000002,27.316064453124966],[88.83251953125003,27.36284179687499],[88.7648437500001,27.429882812499983],[88.74902343749997,27.521875],[88.82988281250002,27.76738281249999],[88.84882812500004,27.86865234375],[88.80371093750003,28.006933593750034],[88.57792968750002,28.093359375000034],[88.42597656250004,28.01166992187501],[88.27519531250007,27.968847656250006],[88.14111328125003,27.94892578125001],[88.10898437500006,27.933007812499966],[88.10976562500005,27.870605468750057],[87.8607421875,27.886083984375006],[87.62255859374997,27.81518554687503],[87.29072265625004,27.821923828124994],[87.14140625000002,27.838330078124955],[87.02011718750006,27.928662109374983],[86.9337890625001,27.96845703125001],[86.84238281250012,27.99916992187505],[86.750390625,28.022070312500006],[86.71962890625005,28.070654296875034],[86.69052734375006,28.09492187500001],[86.61445312500004,28.10302734374997],[86.55449218750007,28.08520507812497],[86.51689453125007,27.963525390624966],[86.40869140625003,27.928662109374983],[86.32861328124997,27.95952148437496],[86.2179687500001,28.022070312500006],[86.13701171875002,28.114355468750063],[86.07871093750006,28.08359375],[86.0641601562501,27.934716796874966],[85.99453125000005,27.910400390625],[85.95410156249997,27.92822265624997],[85.92167968750002,27.989697265624983],[85.84023437500005,28.135351562499977],[85.75947265625004,28.220654296874955],[85.67832031250012,28.277441406249977],[85.41064453125003,28.27602539062505],[85.21210937500004,28.292626953124966],[85.1224609375,28.315966796875017],[85.08857421875004,28.37226562500001],[85.121484375,28.484277343750023],[85.16015624999997,28.571875],[85.15908203125,28.592236328124983],[85.1263671875,28.602636718750063],[85.06914062500007,28.60966796874999],[84.85507812500006,28.553613281250023],[84.796875,28.560205078125023],[84.2287109375001,28.911767578124966],[84.17558593750002,29.036376953125057],[84.12783203125005,29.15629882812496],[84.10136718750002,29.21997070312497],[84.02197265624997,29.25385742187504],[83.93593750000005,29.27949218750001],[83.58349609375003,29.18359375000003],[83.15546875000004,29.612646484375034],[82.22070312500003,30.063867187500023],[82.04335937500005,30.326757812500034],[81.8548828125,30.362402343750006],[81.64189453125007,30.3875],[81.4171875000001,30.33759765625001],[81.25507812500004,30.09331054687499],[81.17714843750005,30.039892578125034],[80.98544921875006,30.23710937499999],[80.87353515625003,30.290576171875045],[80.19121093750002,30.56840820312496],[80.20712890625006,30.683740234375023],[79.92451171875004,30.888769531250034],[79.66425781250004,30.96523437499999],[79.38847656250007,31.064208984375],[79.10712890625004,31.402636718750017],[78.74355468750005,31.323779296875017],[78.7550781250001,31.55029296875],[78.69345703125006,31.740380859374994],[78.72558593750003,31.983789062500023],[78.49589843750002,32.21577148437504],[78.4552734375001,32.30034179687502],[78.41748046874997,32.466699218749994],[78.38964843749997,32.51987304687498],[78.73671875,32.55839843750002],[78.75351562500012,32.49926757812506],[78.91894531249997,32.35820312500002],[79.16992187500003,32.497216796874994],[79.14550781250003,33.00146484375006],[79.10283203125007,33.05253906249996],[79.13515625000005,33.17192382812496],[79.1125,33.22626953125001],[78.94843750000004,33.346533203125006],[78.86503906250002,33.43110351562501],[78.78378906250006,33.80878906250004],[78.72666015625006,34.013378906249955],[78.97060546875,34.22822265625004],[78.93642578125,34.35195312500002],[78.86484375000006,34.39033203125001],[78.32695312500007,34.60639648437498],[78.15849609375002,34.94648437499998],[78.07578125000006,35.13491210937502],[78.0426757812501,35.47978515625002],[77.79941406250006,35.49589843750002],[77.44648437500004,35.47558593750006],[77.29482421875005,35.508154296875034],[77.09003906250004,35.55205078124999],[76.87890625000003,35.61328125000003],[76.76689453125002,35.661718750000034],[76.72753906250003,35.67866210937504],[76.63183593749997,35.729394531249966],[76.56347656249997,35.77299804687499],[76.55126953124997,35.887060546875034],[76.50205078125006,35.87822265625002],[76.38574218750003,35.837158203125],[76.25166015625004,35.8109375],[76.17783203125012,35.810546875],[76.14785156250005,35.82900390625002],[76.07089843750006,35.983007812500034],[75.91230468750004,36.048974609374994],[75.97441406250007,36.38242187500006],[75.9518554687501,36.458105468750034],[75.9330078125,36.52158203124998],[75.840234375,36.64970703124999],[75.7721679687501,36.694921875000034],[75.6671875000001,36.741992187500045],[75.57373046874997,36.75932617187502],[75.46025390625002,36.725048828124955],[75.42421875000005,36.73823242187498],[75.37685546875,36.88369140625005],[75.34667968749997,36.913476562499966],[75.05390625000004,36.98715820312498],[74.94912109375,36.96835937500006],[74.88925781250006,36.95244140625002],[74.69218750000007,37.035742187500006],[74.60058593749997,37.03666992187502],[74.54140625,37.02216796875001],[74.52646484375006,37.03066406250005],[74.49794921875,37.057226562500034],[74.37617187500004,37.13735351562502],[74.37216796875006,37.15771484375],[74.558984375,37.23662109374999],[74.66894531250003,37.266699218750006],[74.72666015625006,37.29072265625001],[74.7389648437501,37.28564453125003],[74.76738281250002,37.249169921874966],[74.840234375,37.22504882812504],[74.89130859375004,37.231640624999955],[75.11875,37.38569335937498],[74.8942382812501,37.60141601562498],[74.81230468750002,38.46030273437498],[74.27744140625,38.659765625000034],[74.02558593750004,38.53984375000002],[73.80166015625,38.60688476562501],[73.69609375000007,38.85429687499996],[73.8052734375,38.968652343749994],[73.60732421875,39.229199218749955],[73.63632812500006,39.396679687499955],[73.63164062500007,39.44887695312502],[73.82294921875004,39.48896484375004],[73.90712890625,39.578515624999966],[73.9146484375,39.60649414062499],[73.88251953125004,39.71455078124998],[73.83974609375005,39.76284179687505],[73.8353515625,39.800146484375006],[73.85625,39.828662109375045],[73.88457031250002,39.87792968750006],[73.93876953125002,39.97880859374999],[73.99160156250005,40.04311523437502],[74.83046875,40.32851562499999],[74.80126953124997,40.428515625000045],[74.83515625000004,40.482617187499955],[74.865625,40.493505859375034],[75.0044921875,40.44951171874996],[75.11132812499997,40.4541015625],[75.24101562500002,40.48027343750002],[75.52080078125002,40.627539062500006],[75.55556640625,40.625195312499955],[75.6771484375,40.305810546874994],[75.87197265625,40.30322265625],[76.25830078124997,40.43076171875006],[76.3185546875001,40.352246093749955],[76.39638671875005,40.389794921874966],[76.4801757812501,40.44951171874996],[76.57792968750002,40.577880859375],[76.62216796875006,40.66235351562497],[76.6398437500001,40.74223632812499],[76.66113281249997,40.77963867187498],[76.70839843750005,40.818115234375],[76.82402343750002,40.982324218749966],[76.90771484374997,41.02416992187497],[76.98662109375002,41.039160156250006],[77.58173828125004,40.99277343750006],[77.71933593750012,41.024316406249994],[77.81523437500002,41.05561523437498],[77.9564453125,41.05068359375005],[78.1234375,41.07563476562498],[78.34628906250012,41.28144531249998],[78.36240234375012,41.37163085937496],[78.44287109374997,41.41752929687499],[78.742578125,41.56005859375],[79.29355468750006,41.78281249999998],[79.76611328124997,41.89887695312501],[79.84042968750012,41.99575195312502],[79.90966796875003,42.014990234375034],[80.21621093750005,42.03242187500004],[80.23515625000007,42.04345703124997],[80.24619140625012,42.05981445312503],[80.209375,42.190039062500006],[80.20224609375012,42.73447265624998],[80.53896484375005,42.873486328124955],[80.39023437500006,43.043115234374966],[80.78574218750006,43.16157226562504],[80.35527343750002,44.09726562500006],[80.48154296875006,44.71464843749999],[79.871875,44.88378906249997],[80.05917968750012,45.006445312500006],[81.69199218750012,45.34936523437497],[81.94492187500006,45.16083984375001],[82.26660156249997,45.21909179687498],[82.52148437500003,45.12548828125],[82.61162109375007,45.424267578124955],[82.31523437500002,45.59492187499998],[83.02949218750004,47.18593750000002],[84.016015625,46.97050781250002],[84.66660156250006,46.97236328125004],[84.78613281249997,46.83071289062505],[85.484765625,47.06352539062496],[85.65664062500005,47.254638671875],[85.52597656250006,47.915625],[85.7494140625,48.38505859374999],[86.54941406250012,48.52861328125002],[86.8083007812501,49.04970703125002],[87.32285156250012,49.085791015625006],[87.41669921875004,49.07661132812501],[87.5158203125001,49.122412109375006],[87.7625,49.16582031249996],[87.81425781250002,49.162304687499955],[87.87216796875012,49.000146484374966],[87.74316406250003,48.88164062499999],[87.83183593750007,48.79165039062505],[88.02792968750006,48.735595703125],[88.06005859375003,48.707177734374966],[87.9796875000001,48.55512695312498],[88.30996093750005,48.47207031250002],[88.41396484375,48.403417968750006],[88.51708984374997,48.384472656249955],[88.56679687500005,48.31743164062496],[88.57597656250007,48.220166015624955],[88.68183593750004,48.170556640624994],[88.83828125000005,48.101708984374994],[88.91777343750007,48.089013671874966],[89.04765625000007,48.002539062500034],[89.47919921875004,48.02905273437503],[89.5609375,48.00395507812496],[89.778125,47.82700195312498],[89.83134765625002,47.82329101562502],[89.91044921875007,47.844335937500034],[89.95869140625004,47.88632812499998],[90.02792968750012,47.877685546875],[90.1032226562501,47.74541015624996],[90.19101562500012,47.70209960937501],[90.31328125000007,47.67617187499999],[90.33066406250006,47.655175781249966],[90.42519531250005,47.50410156250001],[90.49619140625012,47.28515625],[90.64335937500007,47.10029296874998],[90.71552734375004,47.00385742187498],[90.7990234375001,46.98515624999999],[90.86992187500002,46.95449218750005],[90.91054687500005,46.88325195312501],[90.9857421875,46.7490234375],[90.9115234375,46.270654296874994],[90.94755859375002,46.17729492187499],[90.99677734375004,46.10498046875],[91.00175781250007,46.03579101562502],[90.6618164062501,45.525244140625006],[90.87724609375002,45.19609375000002],[91.05,45.217431640624994],[91.584375,45.07651367187498],[92.42382812499997,45.008935546874994],[92.57890625000002,45.01098632812506],[92.78789062500007,45.035742187500034],[93.51621093750012,44.944482421874994],[94.71201171875012,44.35083007812503],[95.35029296875004,44.27807617187503],[95.32558593750005,44.03935546874999],[95.52558593750004,43.953955078125006],[95.85957031250004,43.27597656249998],[96.38544921875004,42.72036132812502],[97.20566406250012,42.78979492187506],[99.46787109375012,42.568212890625034],[99.98378906250005,42.67734375000006],[100.08632812500005,42.67075195312506],[100.51904296875003,42.61679687499998],[101.09199218750004,42.55131835937496],[101.49531250000004,42.53876953124998],[101.57910156249997,42.52353515624998],[101.65996093750002,42.50004882812499],[101.97294921875002,42.21586914062502],[102.15664062500005,42.158105468749966],[102.57519531249997,42.09208984375002],[103.07285156250006,42.00595703125006],[103.7111328125001,41.75131835937506],[103.99726562500004,41.796972656250034],[104.30517578124997,41.84614257812501],[104.49824218750004,41.87700195312499],[104.49824218750004,41.65869140625],[104.86035156250003,41.64375],[104.98203125000012,41.59550781250002],[105.05058593750002,41.61591796875001],[105.1154296875001,41.66328124999998],[105.19707031250002,41.738037109375],[105.31435546875005,41.77089843750005],[105.86757812500005,41.993994140625034],[106.77001953125003,42.28872070312502],[108.17119140625002,42.44731445312502],[108.68730468750002,42.416113281250034],[109.33984374999997,42.43837890625005],[109.44316406250002,42.455957031249994],[110.40039062499997,42.77368164062497],[111.00722656250005,43.34140624999998],[111.878125,43.68017578125],[111.93173828125012,43.81494140625],[111.40224609375005,44.367285156250006],[111.89804687500006,45.064062500000034],[112.03261718750005,45.08164062500006],[112.11289062500006,45.06293945312498],[112.41132812500004,45.05820312499998],[112.49931640625002,45.01093750000004],[112.59677734375006,44.917675781249955],[112.7067382812501,44.883447265624994],[113.04941406250006,44.81035156250002],[113.3009765625001,44.79165039062502],[113.50791015625006,44.76235351562502],[113.58701171875006,44.745703125],[113.65263671875002,44.76347656249999],[113.87705078125012,44.89619140625001],[114.03027343749997,44.942578124999955],[114.08027343750004,44.97114257812501],[114.41914062500004,45.20258789062501],[114.56015625000012,45.38999023437498],[114.73876953124997,45.41962890624998],[114.91923828125007,45.378271484375006],[115.16259765624997,45.390234375000034],[115.6810546875,45.45825195312503],[116.19765625,45.739355468750006],[116.240625,45.795996093750006],[116.22910156250012,45.84575195312502],[116.21298828125012,45.88691406249998],[116.56259765625012,46.28979492187497],[116.85908203125004,46.387939453125],[117.3333984375,46.36201171875004],[117.35693359375003,46.391308593749955],[117.35634765625,46.436669921874966],[117.39218750000012,46.53759765625003],[117.40556640625007,46.57089843750006],[117.43808593750012,46.58623046874999],[117.546875,46.58828125000005],[117.74121093749997,46.51816406250006],[118.07128906249997,46.666601562500006],[118.15683593750006,46.678564453125034],[118.30869140625012,46.71704101562497],[118.40439453125006,46.70317382812499],[118.58046875,46.69189453125],[118.64873046875002,46.70166015625006],[118.72294921875007,46.69189453125],[118.8439453125001,46.76020507812498],[118.95712890625006,46.73486328124997],[119.16210937499997,46.638671875],[119.33183593750002,46.61381835937499],[119.47402343750005,46.626660156249955],[119.62021484375006,46.60395507812504],[119.70664062500006,46.60600585937502],[119.74746093750005,46.62719726562497],[119.86718750000003,46.67216796874999],[119.89785156250005,46.857812499999966],[119.71113281250004,47.15],[119.08193359375,47.654150390625034],[119.01757812500003,47.68535156249999],[118.88027343750005,47.72509765625],[118.75996093750004,47.75761718749996],[118.69052734375012,47.822265625],[118.56777343750005,47.94326171875005],[118.49843750000005,47.98398437499998],[117.76835937500002,47.98789062499998],[117.3507812500001,47.65219726562498],[117.28593750000002,47.666357421875034],[117.06972656250005,47.80639648437506],[116.95166015624997,47.836572265624966],[116.90117187500007,47.85307617187496],[116.76054687500002,47.869775390624994],[116.65195312500012,47.86450195312497],[116.51347656250007,47.839550781249955],[116.37822265625002,47.84404296874999],[116.31718750000002,47.85986328125],[116.2311523437501,47.85820312500002],[116.07480468750012,47.78955078125],[115.99384765625004,47.71132812500005],[115.89824218750002,47.68691406250005],[115.6164062500001,47.874804687500045],[115.52509765625004,48.13085937499997],[115.63945312500007,48.18623046874998],[115.785546875,48.24824218750001],[115.7965820312501,48.346337890624994],[115.7916992187501,48.455712890624994],[115.8205078125001,48.57724609375006],[116.6833007812501,49.82377929687499],[117.8734375,49.51347656250002],[118.4515625,49.84448242187503],[119.25986328125012,50.06640625000003],[119.34628906250012,50.278955078124994],[119.16367187500006,50.40600585937503],[120.06689453125003,51.60068359375006],[120.74980468750007,52.096533203125006],[120.65615234375,52.56665039062503],[120.0675781250001,52.632910156250034],[120.09453125000007,52.787207031250034],[120.98544921875012,53.28457031250002],[123.6078125,53.546533203124994],[124.81230468750002,53.133837890625045],[125.075,53.20366210937496],[125.64902343750012,53.042285156250045],[126.34169921875,52.36201171875001],[126.92480468749997,51.10014648437496],[127.30703125000005,50.70795898437501],[127.33720703125007,50.35014648437502],[127.590234375,50.20898437500003],[127.55078124999997,49.801806640625045],[127.99960937500006,49.56860351562506],[128.70400390625,49.60014648437499],[129.0651367187501,49.374658203124966],[129.49814453125012,49.38881835937502],[130.1959960937501,48.89165039062499],[130.553125,48.861181640625006],[130.5521484375,48.602490234374955],[130.80429687500012,48.34150390624998],[130.7326171875001,48.01923828124998],[130.96191406249997,47.70932617187498],[132.47626953125004,47.714990234374994],[132.7072265625001,47.94726562500006],[133.14404296875003,48.10566406249998],[133.46835937500006,48.09716796875003],[134.29335937500005,48.37343750000002],[134.66523437500004,48.25390625],[134.56601562500006,48.02250976562502],[134.75234375,47.71542968749998],[134.1676757812501,47.30219726562501],[133.86132812500003,46.24775390625004],[133.43642578125,45.60468750000004],[133.18603515625003,45.49482421875004],[133.1134765625001,45.130712890625006],[132.93603515624997,45.029931640624994],[131.85185546875002,45.32685546875001],[131.44687500000012,44.984033203124966],[130.9816406250001,44.844335937500034],[131.2552734375,44.07158203124999],[131.25732421875003,43.378076171874994],[131.06855468750004,42.90224609375005],[130.42480468749997,42.72705078124997],[130.52695312500012,42.535400390625]]],[[[113.9977539062501,22.210498046875045],[113.83886718749997,22.24169921875003],[114.04394531250003,22.33339843750005],[113.9977539062501,22.210498046875045]]],[[[114.01542968750007,22.51191406250001],[114.26601562500005,22.540966796874983],[114.26796875,22.295556640624966],[113.93730468750002,22.364990234375],[114.01542968750007,22.51191406250001]]],[],[[[118.4074218750001,24.522119140624994],[118.43271484375006,24.414355468750074],[118.29511718750004,24.436328125000017],[118.4074218750001,24.522119140624994]]],[[[121.00878906249997,22.62036132812497],[120.83984375000003,21.925],[120.2328125,22.71791992187505],[120.0724609375001,23.149755859375006],[120.13212890625007,23.652929687500034],[121.040625,25.032812500000034],[121.59365234375,25.275341796874983],[121.92900390625002,24.973730468749977],[121.39746093750003,23.172509765625023],[121.00878906249997,22.62036132812497]]]]},"properties":{"name":"China","childNum":15}},{"geometry":{"type":"Polygon","coordinates":[[[-5.262304687499977,10.319677734374991],[-4.72177734374992,9.756542968750026],[-4.625830078125006,9.713574218749969],[-4.526611328124943,9.723486328125034],[-4.406201171874926,9.647998046875031],[-4.332226562499955,9.645703125],[-4.18115234375,9.78173828125],[-3.790625,9.917187499999983],[-3.581152343749977,9.924316406250014],[-3.289697265625023,9.882226562500051],[-3.223535156249937,9.895458984374997],[-3.160693359374932,9.849169921874974],[-3.095800781249949,9.752099609375009],[-3.042626953124937,9.72089843750004],[-2.988281249999972,9.687353515624963],[-2.900878906249943,9.534619140625026],[-2.875146484374937,9.500927734374997],[-2.816748046874949,9.425830078124974],[-2.766601562499943,9.424707031250009],[-2.7171875,9.457128906250048],[-2.695849609374989,9.481347656250009],[-2.686132812499977,9.43173828125002],[-2.705761718749983,9.351367187499989],[-2.74692382812492,9.04511718750004],[-2.689892578124955,9.02509765625004],[-2.649218750000017,8.956591796875031],[-2.600390625000017,8.800439453125023],[-2.505859375000028,8.208740234375],[-2.538281249999955,8.171630859374986],[-2.61171875,8.147558593749963],[-2.619970703125006,8.12109375],[-2.600976562499937,8.082226562499983],[-2.613378906249977,8.046679687500017],[-2.668847656249994,8.022216796875014],[-2.789746093749955,7.931933593750003],[-2.959082031249977,7.454541015624997],[-3.227148437499977,6.749121093749991],[-2.998291015624972,5.711328125000051],[-2.793652343749955,5.600097656250028],[-2.754980468749977,5.432519531249994],[-2.815673828125,5.153027343749997],[-3.168701171874972,5.203027343749966],[-3.199951171874943,5.3544921875],[-3.347558593749994,5.13066406249996],[-4.120166015625017,5.309716796875023],[-4.60888671875,5.235888671875003],[-4.037207031249977,5.23012695312498],[-4.899707031249932,5.138330078125023],[-5.282373046874994,5.210253906250017],[-5.36752929687492,5.15078125],[-5.061816406249989,5.13066406249996],[-5.913769531249926,5.0109375],[-7.544970703124989,4.351318359375],[-7.574658203124983,4.572314453124989],[-7.585058593749977,4.916748046875],[-7.39990234375,5.550585937499989],[-7.454394531249989,5.841308593749972],[-7.636132812499994,5.90771484375],[-7.730371093749994,5.919042968749991],[-7.800927734374994,6.038916015624991],[-7.833251953125,6.076367187499983],[-7.855517578125017,6.150146484375],[-7.888623046875011,6.234863281250028],[-7.981591796874937,6.2861328125],[-8.287109375,6.31904296875004],[-8.587890625,6.490527343749989],[-8.324511718749989,6.920019531249991],[-8.408740234374989,7.411816406249997],[-8.429980468749989,7.601855468749989],[-8.351757812499926,7.590576171875],[-8.231884765624955,7.556738281250034],[-8.205957031249994,7.590234375000023],[-8.115429687499926,7.760742187500028],[-8.126855468749937,7.867724609374974],[-8.00986328124992,8.078515625000023],[-8.048583984375,8.169726562500045],[-8.140625,8.181445312500031],[-8.217138671874949,8.219677734375011],[-8.256103515625,8.253710937500017],[-8.244140624999943,8.407910156249983],[-8.236962890624994,8.455664062500034],[-7.953125,8.477734375],[-7.823583984374977,8.467675781249994],[-7.738964843749983,8.375244140624986],[-7.696093749999932,8.375585937499977],[-7.71958007812492,8.643017578125011],[-7.950976562499989,8.786816406249997],[-7.938183593749983,8.97978515624996],[-7.902099609375,9.017089843750014],[-7.777978515624937,9.080859375000031],[-7.799804687499943,9.115039062499989],[-7.839404296875017,9.151611328124972],[-7.918066406249949,9.188525390625031],[-7.896191406249955,9.415869140624991],[-8.136962890624972,9.49570312499999],[-8.155175781249937,9.973193359375017],[-7.990625,10.1625],[-7.661132812500028,10.427441406250011],[-7.385058593749989,10.340136718749989],[-7.01708984375,10.143261718750026],[-6.950341796874994,10.342333984374989],[-6.693261718750023,10.34946289062502],[-6.669335937499937,10.39218750000002],[-6.69199218749992,10.512011718750017],[-6.686132812499977,10.578027343750051],[-6.676367187499949,10.633789062500043],[-6.654150390624949,10.65644531250004],[-6.482617187499983,10.561230468749997],[-6.250244140625,10.717919921875037],[-6.190673828124943,10.400292968749994],[-6.192626953124972,10.369433593750003],[-6.241308593749949,10.279199218750009],[-6.238378906249977,10.26162109374998],[-6.117187499999972,10.201904296874986],[-6.034570312499937,10.194824218750057],[-5.907568359375006,10.307226562500034],[-5.896191406249983,10.354736328125028],[-5.843847656249977,10.389550781250023],[-5.694287109374983,10.433203125000034],[-5.556591796874983,10.439941406249986],[-5.382275390625011,10.314013671875003],[-5.262304687499977,10.319677734374991]]]},"properties":{"name":"Côte d\'Ivoire","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[15.480078125,7.523779296874991],[15.206738281250011,7.206152343749991],[14.7392578125,6.27978515625],[14.43115234375,6.038720703124994],[14.616894531250011,5.865136718749994],[14.56298828125,5.279931640624994],[14.73125,4.602392578124991],[15.063574218750006,4.284863281249997],[15.128710937500017,3.826904296875],[16.0634765625,2.90859375],[16.183398437500017,2.270068359374989],[16.059375,1.676220703124997],[15.741601562500023,1.914990234374997],[14.902441406250006,2.012304687499991],[14.578906250000017,2.199121093749994],[13.293554687500006,2.161572265624997],[13.2203125,2.256445312499991],[11.558984375000023,2.302197265624997],[11.348437500000017,2.299707031249994],[11.328710937500006,2.167431640624997],[11.096582031250023,2.16748046875],[10.790917968750023,2.16757812499999],[9.979882812500023,2.167773437499989],[9.8701171875,2.21328125],[9.8369140625,2.242382812499997],[9.830371093750017,2.275488281249991],[9.826171875,2.297802734374997],[9.80078125,2.304443359375],[9.82177734375,2.539257812499997],[9.948437500000011,3.079052734374997],[9.672070312500011,3.53759765625],[9.765722656250006,3.623828124999989],[9.642382812500017,3.611767578124997],[9.55615234375,3.798046875],[9.739648437500023,3.852929687499994],[9.639941406250017,3.96533203125],[9.688867187500023,4.056396484375],[9.483691406250017,4.066113281249997],[9.42529296875,3.922314453124997],[9.000097656250006,4.091601562499989],[8.918261718750017,4.553759765624989],[8.660351562500011,4.670996093749991],[8.65625,4.516357421875],[8.53955078125,4.571875],[8.715625,5.046875],[8.997167968750006,5.917724609375],[9.490234375,6.418652343749997],[9.779882812500006,6.76015625],[9.820703125000023,6.783935546875],[9.874218750000011,6.803271484374989],[10.038867187500017,6.92138671875],[10.1435546875,6.996435546874991],[10.167773437500017,6.959179687499997],[10.185546875,6.912792968749997],[10.205468750000023,6.8916015625],[10.293066406250006,6.876757812499989],[10.413183593750006,6.877734374999989],[10.60625,7.063085937499991],[10.954199218750006,6.7765625],[11.032519531250017,6.697900390624994],[11.1064453125,6.457714843749997],[11.1533203125,6.437939453124997],[11.2373046875,6.450537109374991],[11.401757812500023,6.533935546875],[11.551660156250023,6.697265625],[11.580078125,6.888867187499997],[11.657519531250017,6.9515625],[11.861425781250006,7.11640625],[11.767382812500017,7.272265624999989],[11.809179687500006,7.345068359374991],[12.016015625000023,7.589746093749994],[12.2333984375,8.282324218749991],[12.403515625000011,8.595556640624991],[12.582714843750011,8.624121093749991],[12.651562500000011,8.667773437499989],[12.7822265625,8.81787109375],[12.806542968750023,8.886621093749994],[12.875683593750011,9.303515624999989],[12.929492187500017,9.42626953125],[13.19873046875,9.563769531249989],[13.269921875000023,10.036181640624989],[13.41455078125,10.171435546874989],[13.535351562500011,10.60507812499999],[13.699902343750011,10.873144531249991],[13.89208984375,11.140087890624997],[13.9814453125,11.211865234374997],[14.056738281250006,11.245019531249994],[14.143261718750011,11.24853515625],[14.202343750000011,11.268164062499991],[14.559765625000011,11.492285156249991],[14.619726562500006,12.150976562499991],[14.518945312500023,12.298242187499994],[14.272851562500023,12.356494140624989],[14.184863281250017,12.447216796874997],[14.06396484375,13.07851562499999],[14.244824218750011,13.07734375],[14.461718750000017,13.021777343749989],[14.847070312500023,12.502099609374994],[15.08125,11.845507812499989],[15.029882812500006,11.11367187499999],[15.132226562500023,10.648486328124989],[15.276074218750011,10.357373046874997],[15.654882812500006,10.0078125],[14.243261718750006,9.979736328125],[13.977246093750011,9.691552734374994],[14.332324218750017,9.20351562499999],[15.1162109375,8.557324218749997],[15.5498046875,7.787890624999989],[15.480078125,7.523779296874991]]]},"properties":{"name":"Cameroon","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[27.4033203125,5.109179687499989],[27.7880859375,4.644677734374994],[28.19208984375001,4.350244140624994],[28.427539062500017,4.324169921874997],[28.72705078125,4.504980468749991],[29.224902343750017,4.391894531249989],[29.469628906250023,4.61181640625],[29.676855468750006,4.5869140625],[30.194921875,3.98193359375],[30.50830078125,3.835693359375],[30.586718750000017,3.62421875],[30.757226562500023,3.62421875],[30.83857421875001,3.49072265625],[30.90644531250001,3.408935546875],[30.754003906250006,3.041796874999989],[30.8466796875,2.847021484374991],[30.728613281250006,2.455371093749989],[31.176367187500006,2.270068359374989],[31.252734375000017,2.044580078124994],[29.94287109375,0.819238281249994],[29.934472656250023,0.4990234375],[29.717675781250023,0.098339843749997],[29.576953125000017,-1.387890625000011],[29.196582031250017,-1.719921875000011],[29.13154296875001,-2.195117187500003],[28.876367187500023,-2.400292968750009],[28.893945312500023,-2.635058593750003],[29.01435546875001,-2.72021484375],[29.224414062500017,-3.053515625],[29.211816406250023,-3.833789062500003],[29.403222656250023,-4.449316406250006],[29.404199218750023,-4.496679687500006],[29.32568359375,-4.835644531250011],[29.32343750000001,-4.898828125],[29.3427734375,-4.983105468750011],[29.542382812500023,-5.499804687500003],[29.594140625000023,-5.65078125],[29.60703125,-5.72265625],[29.59638671875001,-5.775976562500006],[29.490820312500006,-5.965429687500006],[29.480078125,-6.025],[29.50625,-6.172070312500011],[29.540820312500017,-6.313867187500009],[29.590625,-6.394433593750009],[29.70966796875001,-6.616894531250011],[29.798144531250017,-6.69189453125],[29.961816406250023,-6.803125],[30.10625,-6.9150390625],[30.212695312500017,-7.037890625],[30.31318359375001,-7.203710937500006],[30.40673828125,-7.460644531250011],[30.75117187500001,-8.193652343750003],[28.89814453125001,-8.485449218750006],[28.869531250000023,-8.785839843750011],[28.400683593750017,-9.224804687500011],[28.60419921875001,-9.678808593750006],[28.6455078125,-10.550195312500009],[28.383398437500006,-11.566699218750003],[28.482519531250006,-11.812109375],[29.064355468750023,-12.348828125000011],[29.48554687500001,-12.41845703125],[29.508203125000023,-12.228222656250011],[29.79511718750001,-12.155468750000011],[29.775195312500017,-13.438085937500006],[29.55419921875,-13.248925781250009],[29.20185546875001,-13.398339843750009],[29.014257812500006,-13.368847656250011],[28.730078125,-12.925488281250011],[28.550878906250006,-12.836132812500011],[28.412890625000017,-12.51806640625],[27.573828125,-12.22705078125],[27.1591796875,-11.579199218750006],[26.824023437500017,-11.965234375],[26.025976562500006,-11.89013671875],[25.349414062500017,-11.623046875],[25.28876953125001,-11.21240234375],[24.3779296875,-11.417089843750006],[24.36572265625,-11.1298828125],[23.96650390625001,-10.871777343750011],[23.901171875000017,-10.983203125],[23.833886718750023,-11.013671875],[23.463964843750006,-10.969335937500006],[23.076269531250006,-11.087890625],[22.814746093750017,-11.080273437500011],[22.56103515625,-11.055859375000011],[22.486132812500017,-11.08671875],[22.392968750000023,-11.159472656250003],[22.31494140625,-11.198632812500009],[22.27880859375,-11.194140625],[22.226171875,-11.121972656250009],[22.203515625000023,-10.829492187500009],[22.307031250000023,-10.691308593750009],[22.19775390625,-10.040625],[21.81318359375001,-9.46875],[21.905371093750006,-8.693359375],[21.806054687500023,-7.32861328125],[21.751074218750006,-7.30546875],[21.190332031250023,-7.284960937500003],[20.910937500000017,-7.281445312500011],[20.607812500000023,-7.277734375],[20.558398437500017,-7.244433593750003],[20.53583984375001,-7.182812500000011],[20.536914062500017,-7.121777343750011],[20.598730468750006,-6.93515625],[20.59003906250001,-6.919921875],[20.482226562500017,-6.915820312500003],[20.190039062500006,-6.9462890625],[19.997460937500023,-6.976464843750009],[19.87519531250001,-6.986328125],[19.527636718750017,-7.144433593750009],[19.483789062500023,-7.279492187500011],[19.479882812500023,-7.47216796875],[19.371679687500006,-7.655078125],[19.369921875000017,-7.70654296875],[19.3408203125,-7.966601562500003],[19.142675781250006,-8.00146484375],[18.944433593750006,-8.00146484375],[18.56269531250001,-7.9359375],[18.0087890625,-8.107617187500011],[17.643359375000017,-8.090722656250009],[17.57958984375,-8.099023437500009],[16.984765625000023,-7.257421875],[16.91943359375,-6.933984375],[16.813085937500006,-6.772558593750006],[16.742968750000017,-6.618457031250003],[16.697265625,-6.164257812500011],[16.537109375,-5.9658203125],[16.431445312500017,-5.900195312500003],[16.315234375000017,-5.865625],[13.978515625,-5.857226562500003],[13.346484375000017,-5.863378906250006],[13.184375,-5.85625],[12.452929687500017,-6.00048828125],[12.213671875000017,-5.758691406250009],[12.484570312500011,-5.71875],[12.451464843750017,-5.071484375000011],[12.502734375000017,-5.036914062500003],[12.573535156250017,-4.99658203125],[12.59619140625,-4.978417968750009],[12.8296875,-4.736621093750003],[12.947460937500011,-4.6953125],[13.057324218750011,-4.651074218750011],[13.07275390625,-4.634765625],[13.08740234375,-4.601953125],[13.136621093750023,-4.604296875],[13.414941406250023,-4.83740234375],[13.659570312500023,-4.721484375],[13.717089843750017,-4.454492187500009],[13.94091796875,-4.484667968750003],[14.358300781250023,-4.299414062500006],[14.449804687500006,-4.449511718750003],[14.365429687500011,-4.585546875],[14.410742187500006,-4.83125],[14.707910156250023,-4.881738281250009],[15.990039062500017,-3.766210937500006],[16.217382812500006,-3.0302734375],[16.21533203125,-2.177832031250006],[16.54072265625001,-1.840136718750003],[16.8798828125,-1.225878906250003],[17.752832031250023,-0.549023437500011],[18.072167968750023,2.01328125],[18.49091796875001,2.924414062499991],[18.6103515625,3.478417968749994],[18.594140625000023,4.346240234374989],[19.06855468750001,4.891406249999989],[19.5009765625,5.127490234374989],[19.806542968750023,5.089306640624997],[20.226367187500017,4.829638671874989],[20.55810546875,4.462695312499989],[22.422167968750017,4.134960937499997],[22.864550781250017,4.723876953125],[23.41718750000001,4.663134765624989],[24.31982421875,4.994140625],[25.065234375000017,4.967431640624994],[25.52509765625001,5.31210937499999],[26.822070312500017,5.062402343749994],[27.071875,5.199755859374989],[27.4033203125,5.109179687499989]]]},"properties":{"name":"Dem. Rep. Congo","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[18.6103515625,3.478417968749994],[18.49091796875001,2.924414062499991],[18.072167968750023,2.01328125],[17.752832031250023,-0.549023437500011],[16.8798828125,-1.225878906250003],[16.54072265625001,-1.840136718750003],[16.21533203125,-2.177832031250006],[16.217382812500006,-3.0302734375],[15.990039062500017,-3.766210937500006],[14.707910156250023,-4.881738281250009],[14.410742187500006,-4.83125],[14.365429687500011,-4.585546875],[14.449804687500006,-4.449511718750003],[14.358300781250023,-4.299414062500006],[13.94091796875,-4.484667968750003],[13.717089843750017,-4.454492187500009],[13.659570312500023,-4.721484375],[13.414941406250023,-4.83740234375],[13.136621093750023,-4.604296875],[13.08740234375,-4.601953125],[13.07275390625,-4.634765625],[13.048046875000011,-4.619238281250006],[12.971386718750011,-4.5517578125],[12.881054687500011,-4.445117187500003],[12.84814453125,-4.428906250000011],[12.50146484375,-4.5875],[12.018359375000017,-5.004296875],[11.777539062500011,-4.565820312500009],[11.130175781250017,-3.916308593750003],[11.234472656250006,-3.690820312500009],[11.504296875000023,-3.5203125],[11.685742187500011,-3.68203125],[11.8798828125,-3.665917968750009],[11.934179687500006,-3.318554687500011],[11.715429687500006,-3.176953125000011],[11.760156250000023,-2.983105468750011],[11.537792968750011,-2.83671875],[11.60546875,-2.342578125],[12.064453125,-2.41259765625],[12.446386718750006,-2.329980468750009],[12.43212890625,-1.928906250000011],[12.590429687500006,-1.826855468750011],[12.793554687500006,-1.931835937500011],[12.991992187500017,-2.313378906250009],[13.464941406250006,-2.395410156250009],[13.733789062500023,-2.138476562500003],[13.886914062500011,-2.465429687500006],[13.993847656250011,-2.490625],[14.199804687500006,-2.354199218750011],[14.162890625000017,-2.217578125],[14.383984375000011,-1.890039062500009],[14.47412109375,-0.573437500000011],[13.860058593750011,-0.203320312500011],[13.949609375000023,0.353808593749989],[14.32421875,0.62421875],[14.429882812500011,0.901464843749991],[14.180859375000011,1.370214843749991],[13.851367187500017,1.41875],[13.21630859375,1.2484375],[13.172167968750017,1.78857421875],[13.293554687500006,2.161572265624997],[14.578906250000017,2.199121093749994],[14.902441406250006,2.012304687499991],[15.741601562500023,1.914990234374997],[16.059375,1.676220703124997],[16.183398437500017,2.270068359374989],[16.468554687500017,2.831738281249997],[16.610742187500023,3.50537109375],[17.491601562500023,3.687304687499989],[18.160937500000017,3.499804687499989],[18.474414062500017,3.622998046874997],[18.6103515625,3.478417968749994]]]},"properties":{"name":"Congo","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-71.31972656249997,11.861914062500048],[-71.95810546875,11.66640625],[-72.24848632812501,11.196435546875009],[-72.690087890625,10.835839843749994],[-72.86933593750001,10.49125976562496],[-73.00654296874998,9.789160156250006],[-73.36621093749997,9.194140625000017],[-73.05839843749999,9.259570312500031],[-72.79638671874997,9.10898437499999],[-72.66542968749994,8.62758789062498],[-72.39033203124995,8.287060546874969],[-72.47197265624996,7.524267578124991],[-72.20771484374995,7.37026367187498],[-72.00664062499993,7.032617187500023],[-71.12861328124993,6.98671875],[-70.73715820312503,7.090039062499997],[-70.12919921874999,6.95361328125],[-69.42714843749997,6.123974609374997],[-68.47177734375,6.156542968749974],[-67.85917968749999,6.289892578124963],[-67.48198242187499,6.18027343750002],[-67.47387695312503,5.929980468750003],[-67.82490234374995,5.270458984375026],[-67.85527343750002,4.506884765624989],[-67.66162109375,3.864257812499986],[-67.3111328125,3.41586914062502],[-67.85908203124998,2.793603515624994],[-67.61870117187496,2.793603515624994],[-67.21083984375,2.390136718750043],[-66.87602539062499,1.223046875000037],[-67.082275390625,1.185400390625006],[-67.11923828124998,1.703613281249986],[-67.40043945312499,2.116699218750028],[-67.93623046874998,1.748486328124969],[-68.19379882812495,1.987011718749983],[-68.25595703125,1.845507812500017],[-68.17656249999999,1.719824218749991],[-69.84858398437493,1.708740234375043],[-69.85214843750003,1.05952148437504],[-69.31181640624999,1.050488281249969],[-69.15332031249994,0.65878906250002],[-69.47211914062498,0.72993164062504],[-70.05390624999993,0.578613281250028],[-70.07050781249993,-0.13886718750004],[-69.63398437500001,-0.50927734375],[-69.40024414062498,-1.194921874999977],[-69.66904296875003,-2.667675781249997],[-69.94819335937498,-4.200585937500009],[-69.96591796875003,-4.2359375],[-70.16752929687499,-4.050195312500009],[-70.24028320312496,-3.882714843749994],[-70.2984375,-3.844238281249972],[-70.33950195312502,-3.814355468750009],[-70.73510742187497,-3.781542968749989],[-70.09584960937494,-2.658203125000014],[-70.16474609374995,-2.639843750000011],[-70.24443359375002,-2.606542968749977],[-70.29462890624995,-2.552539062499989],[-70.57587890624995,-2.418261718749989],[-70.64799804687499,-2.405761718750014],[-70.70537109374996,-2.341992187499983],[-70.91455078125003,-2.218554687499974],[-70.96855468750002,-2.206835937499989],[-71.02729492187498,-2.225781250000026],[-71.11337890625003,-2.245410156250031],[-71.19638671874998,-2.313085937499963],[-71.39697265625,-2.334082031249977],[-71.55947265624997,-2.224218749999977],[-71.75253906249995,-2.15273437499998],[-71.80273437499997,-2.166308593749989],[-71.86728515624998,-2.227734374999983],[-71.932470703125,-2.288671874999963],[-71.98427734375,-2.326562499999952],[-72.21845703125001,-2.400488281250006],[-72.94111328124998,-2.394042968750028],[-72.9896484375,-2.33974609374998],[-73.15449218749993,-2.278222656249966],[-73.19697265624995,-1.830273437500011],[-73.49628906249993,-1.69306640625004],[-73.66430664062497,-1.248828124999946],[-73.86318359374997,-1.19667968749998],[-73.92695312500001,-1.125195312499983],[-73.98681640625003,-1.098144531249986],[-74.05439453124995,-1.028613281250031],[-74.18076171875,-0.997753906249955],[-74.24638671874999,-0.970605468750023],[-74.28388671874998,-0.927832031250006],[-74.33442382812498,-0.85087890624996],[-74.41787109375,-0.580664062499977],[-74.46518554687498,-0.517675781250034],[-74.51386718749993,-0.470117187500023],[-74.555078125,-0.429882812499997],[-74.61635742187494,-0.370019531249966],[-74.691650390625,-0.335253906249989],[-74.75537109375003,-0.298632812499989],[-74.78046874999998,-0.24453125],[-74.80175781249997,-0.200097656249994],[-75.13837890624998,-0.050488281249969],[-75.28447265624999,-0.10654296875002],[-75.77666015624999,0.08925781249998],[-76.27060546874998,0.439404296874997],[-76.49462890624997,0.23544921875002],[-77.396337890625,0.393896484374963],[-77.46767578124997,0.636523437500017],[-77.702880859375,0.837841796874997],[-78.1806640625,0.968554687499974],[-78.85966796874996,1.455371093750031],[-79.02543945312499,1.623681640625037],[-78.79296874999994,1.848730468749963],[-78.576904296875,1.773779296874977],[-78.59169921875,2.356640624999969],[-78.41689453125,2.483496093749963],[-78.06665039062494,2.509130859375034],[-77.81357421875,2.716357421874974],[-77.076806640625,3.913281250000026],[-77.26352539062503,3.893212890625023],[-77.27802734374995,4.058496093750023],[-77.35820312499996,3.944726562500037],[-77.40874023437496,4.24775390625004],[-77.52070312499993,4.212792968750023],[-77.35351562499997,4.398291015624977],[-77.28632812499995,4.72172851562496],[-77.373291015625,5.323974609375],[-77.53442382812497,5.537109374999986],[-77.24926757812497,5.780175781250037],[-77.46943359374995,6.176757812500014],[-77.368798828125,6.575585937499994],[-77.90117187499999,7.229345703125048],[-77.76191406249995,7.698828125000034],[-77.53828124999995,7.56625976562502],[-77.19599609374995,7.972460937500003],[-77.47851562499994,8.498437500000037],[-77.37421874999993,8.65830078125002],[-76.85185546875002,8.09047851562498],[-76.924658203125,7.973193359374974],[-76.78657226562493,7.931591796875026],[-76.7720703125,8.310546875000043],[-76.92045898437496,8.573730468750014],[-76.27685546875,8.989111328124991],[-76.02724609374997,9.365771484374989],[-75.63935546874998,9.450439453125014],[-75.680029296875,9.729785156249989],[-75.53857421874997,10.205175781250034],[-75.708349609375,10.143408203124963],[-75.44599609374995,10.610888671874989],[-74.84458007812498,11.109716796875006],[-74.330224609375,10.996679687499991],[-74.51625976562497,10.8625],[-74.40087890625,10.76523437499999],[-74.14291992187503,11.320849609375031],[-73.31337890624997,11.295751953124991],[-72.275,11.88925781250002],[-72.13574218749994,12.188574218749977],[-71.71455078124993,12.41997070312496],[-71.26210937499997,12.335302734375034],[-71.13730468750003,12.04633789062504],[-71.31972656249997,11.861914062500048]]]},"properties":{"name":"Colombia","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[43.788671875,-12.307031250000023],[43.85898437500006,-12.368261718749977],[43.66367187500006,-12.342871093749949],[43.63134765624997,-12.247070312499972],[43.788671875,-12.307031250000023]]],[[[44.476367187500074,-12.08154296875],[44.504980468750006,-12.356542968749991],[44.220117187499994,-12.171386718750014],[44.476367187500074,-12.08154296875]]],[[[43.46582031249997,-11.901269531249966],[43.226660156250006,-11.75185546874998],[43.2990234375001,-11.374511718750028],[43.39296875000005,-11.408593749999952],[43.46582031249997,-11.901269531249966]]]]},"properties":{"name":"Comoros","childNum":3}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-24.308251953124966,14.856298828124991],[-24.44052734374992,14.834814453124963],[-24.496875,14.980273437500017],[-24.329492187499937,15.019482421875011],[-24.308251953124966,14.856298828124991]]],[[[-23.18212890624997,15.136767578125017],[-23.210253906250017,15.32353515625006],[-23.119335937499955,15.26840820312502],[-23.18212890624997,15.136767578125017]]],[[[-23.444238281249994,15.00795898437498],[-23.5046875,14.916113281250006],[-23.70537109374999,14.96132812499998],[-23.74809570312499,15.328515625],[-23.444238281249994,15.00795898437498]]],[[[-22.917724609375,16.237255859374955],[-22.69262695312497,16.169042968750006],[-22.710107421874994,16.043359374999966],[-22.95927734374996,16.045117187499983],[-22.917724609375,16.237255859374955]]],[[[-24.08769531249999,16.62250976562501],[-24.03271484374997,16.57202148437503],[-24.243066406250023,16.599414062500017],[-24.32236328124992,16.49311523437504],[-24.398095703124966,16.61840820312497],[-24.08769531249999,16.62250976562501]]],[[[-22.888330078124966,16.659082031249994],[-22.980615234374937,16.700878906249983],[-22.93291015624999,16.84101562500004],[-22.888330078124966,16.659082031249994]]],[[[-24.88706054687495,16.81811523437497],[-25.09306640624999,16.83251953125],[-24.936474609374983,16.92211914062503],[-24.88706054687495,16.81811523437497]]],[[[-25.169824218749994,16.94648437500001],[-25.308300781249955,16.93583984374999],[-25.337109374999955,17.091015624999983],[-25.03466796875,17.176464843749983],[-24.979687499999983,17.09472656250003],[-25.169824218749994,16.94648437500001]]]]},"properties":{"name":"Cape Verde","childNum":8}},{"geometry":{"type":"Polygon","coordinates":[[[-83.6419921875,10.917236328125],[-83.346826171875,10.315380859374997],[-82.77841796874999,9.66953125],[-82.56357421874999,9.57666015625],[-82.56923828125,9.55820312499999],[-82.58652343749999,9.538818359375],[-82.64409179687499,9.505859375],[-82.801025390625,9.591796875],[-82.843994140625,9.57080078125],[-82.86015624999999,9.511474609375],[-82.88896484374999,9.481005859374989],[-82.925048828125,9.469042968749989],[-82.93984375,9.449169921874997],[-82.94033203125,9.060107421874989],[-82.88134765625,9.055859375],[-82.78305664062499,8.990283203124989],[-82.741162109375,8.951708984374989],[-82.72783203124999,8.916064453124989],[-82.91704101562499,8.740332031249991],[-82.855712890625,8.635302734374989],[-82.84477539062499,8.489355468749991],[-82.86162109374999,8.45351562499999],[-83.02734375,8.337744140624991],[-82.879345703125,8.070654296874991],[-83.12333984374999,8.353076171874989],[-83.16240234374999,8.588183593749989],[-83.4697265625,8.706835937499989],[-83.29150390625,8.406005859375],[-83.54375,8.445849609374989],[-83.73408203125,8.614453125],[-83.613720703125,8.804052734374991],[-83.73691406249999,9.150292968749994],[-84.58159179687499,9.568359375],[-84.71494140624999,9.8994140625],[-85.23564453124999,10.242089843749994],[-85.2365234375,10.107373046874997],[-84.88642578125,9.820947265624994],[-85.07705078125,9.60195312499999],[-85.31455078124999,9.8109375],[-85.62485351562499,9.902441406249991],[-85.84965820312499,10.292041015624989],[-85.667236328125,10.745019531249994],[-85.90800781249999,10.897558593749991],[-85.7443359375,11.06210937499999],[-85.5841796875,11.189453125],[-84.9091796875,10.9453125],[-84.6341796875,11.045605468749997],[-83.91928710937499,10.7353515625],[-83.71293945312499,10.785888671875],[-83.6419921875,10.917236328125]]]},"properties":{"name":"Costa Rica","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-82.56176757812503,21.571679687500023],[-82.959619140625,21.441308593750023],[-83.18378906250001,21.59345703125004],[-82.97358398437498,21.592285156250057],[-83.08251953124997,21.791406250000023],[-82.99121093750003,21.942724609375034],[-82.71455078124998,21.890283203125023],[-82.56176757812503,21.571679687500023]]],[[[-77.66899414062493,21.951953125000045],[-77.91855468749998,22.088085937499983],[-77.63369140624994,22.054003906250074],[-77.66899414062493,21.951953125000045]]],[[[-77.87939453125,22.127539062500034],[-78.04165039062502,22.201269531250034],[-77.99921874999998,22.298730468749994],[-77.87939453125,22.127539062500034]]],[[[-81.83745117187499,23.163037109374955],[-81.26235351562497,23.156835937500034],[-81.14462890624998,23.054931640625057],[-80.65014648437494,23.10307617187499],[-80.36489257812502,22.943408203125074],[-79.82026367187498,22.887011718750045],[-79.27568359374999,22.407617187499994],[-78.68647460937493,22.366845703125023],[-77.63681640624995,21.79736328125],[-77.49711914062502,21.78833007812503],[-77.58315429687497,21.889257812499977],[-77.49726562499995,21.871630859375045],[-77.14414062499995,21.643603515625017],[-77.36616210937498,21.612646484375034],[-77.25288085937498,21.483496093750006],[-77.0986328125,21.589013671875023],[-76.86743164062497,21.330419921875006],[-75.72294921874996,21.111035156249983],[-75.59580078125,20.99467773437499],[-75.72456054687493,20.71455078125004],[-74.882568359375,20.65063476562497],[-74.51313476562495,20.384570312500045],[-74.16748046874997,20.292187499999955],[-74.15371093750002,20.168554687500006],[-75.11640624999995,19.901416015625017],[-75.151611328125,20.008349609375045],[-75.29047851562495,19.893115234375017],[-76.15844726562497,19.98974609374997],[-77.715087890625,19.85546874999997],[-77.10380859374999,20.407519531250017],[-77.22958984374995,20.64375],[-78.11635742187497,20.761865234374994],[-78.49077148437493,21.05371093750003],[-78.72768554687497,21.592724609374955],[-79.35742187500003,21.58515625000001],[-80.23134765625,21.872167968750063],[-80.48544921874998,22.1234375],[-81.03564453124997,22.073583984375063],[-81.18549804687495,22.26796875000005],[-81.284375,22.109423828125074],[-81.84941406249993,22.21367187499999],[-82.077734375,22.3876953125],[-81.71035156250002,22.496679687500006],[-81.83881835937498,22.672460937500034],[-82.73803710937497,22.689257812500074],[-83.37963867187503,22.222998046875034],[-83.90073242187495,22.17011718750001],[-84.03095703124993,21.94311523437503],[-84.502587890625,21.776171875000045],[-84.50136718750002,21.930273437499977],[-84.88720703125003,21.856982421875074],[-84.32636718749998,22.074316406250034],[-84.36127929687498,22.37890625],[-84.04492187500003,22.666015625000057],[-83.25781249999997,22.967578125000017],[-81.83745117187499,23.163037109374955]]]]},"properties":{"name":"Cuba","childNum":4}},{"geometry":{"type":"Polygon","coordinates":[[[-68.75107421874999,12.059765625],[-68.9951171875,12.141845703125],[-69.15888671875,12.380273437499994],[-68.75107421874999,12.059765625]]]},"properties":{"name":"Curaçao","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-81.36953124999997,19.34887695312497],[-81.10712890624995,19.305175781250057],[-81.40478515624994,19.278417968750006],[-81.36953124999997,19.34887695312497]]],[[[-79.823388671875,19.711914062500057],[-79.90620117187501,19.702539062499994],[-79.74228515625,19.757128906250017],[-79.823388671875,19.711914062500057]]]]},"properties":{"name":"Cayman Is.","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[34.004492187500006,35.065234375],[33.47578125000001,35.000341796875],[33.3837890625,35.1626953125],[32.91953125,35.087841796875],[32.71269531250002,35.171044921874994],[32.8798828125,35.180566406249994],[32.94160156250001,35.390429687499996],[33.60761718750001,35.354150390624994],[34.55605468750002,35.662060546875],[33.941992187500006,35.292041015624996],[34.004492187500006,35.065234375]]]},"properties":{"name":"N. Cyprus","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[32.71269531250002,35.171044921874994],[32.91953125,35.087841796875],[33.3837890625,35.1626953125],[33.47578125000001,35.000341796875],[34.004492187500006,35.065234375],[34.05019531250002,34.98837890625],[33.69941406250001,34.969873046874994],[33.007910156250006,34.569580078125],[32.44902343750002,34.729443359375],[32.31718750000002,34.9533203125],[32.30097656250001,35.082958984375],[32.71269531250002,35.171044921874994]]]},"properties":{"name":"Cyprus","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[14.809375,50.858984375],[14.895800781250017,50.861376953124996],[14.98291015625,50.886572265625],[14.99375,51.01435546875],[16.007226562500023,50.611621093749996],[16.2822265625,50.655615234375],[16.419726562500017,50.573632812499994],[16.210351562500023,50.423730468749994],[16.63916015625,50.1021484375],[16.989648437500023,50.2369140625],[16.88007812500001,50.427050781249996],[17.41523437500001,50.254785156249994],[17.702246093750006,50.307177734374996],[17.627050781250006,50.11640625],[17.874804687500017,49.972265625],[18.0283203125,50.03525390625],[18.562402343750023,49.879345703125],[18.83222656250001,49.510791015624996],[18.160937500000017,49.257373046874996],[18.0859375,49.06513671875],[17.75849609375001,48.888134765625],[17.135644531250023,48.841064453125],[16.953125,48.598828125],[16.543554687500006,48.796240234375],[16.057226562500006,48.754785156249994],[15.066796875000023,48.997851562499996],[14.691308593750023,48.59921875],[14.049121093750017,48.602490234375],[13.814746093750017,48.766943359375],[13.769921875000023,48.815966796874996],[13.684960937500023,48.876708984375],[13.547656250000017,48.95966796875],[13.440722656250017,48.95556640625],[13.401171875000017,48.977587890624996],[12.916699218750011,49.33046875],[12.68115234375,49.414501953125],[12.390527343750023,49.739648437499994],[12.5125,49.87744140625],[12.09921875,50.310986328125],[12.134863281250006,50.3109375],[12.1748046875,50.288378906249996],[12.231152343750011,50.244873046875],[12.27734375,50.181445312499996],[12.3056640625,50.205712890624994],[12.549023437500011,50.393408203125],[13.016406250000017,50.490380859374994],[13.18115234375,50.510498046875],[14.369042968750023,50.898730468749996],[14.319726562500023,51.03779296875],[14.545703125000017,50.993945312499996],[14.559667968750006,50.954931640625],[14.59521484375,50.918603515624994],[14.623828125000017,50.91474609375],[14.613574218750017,50.85556640625],[14.658203125,50.8326171875],[14.723339843750011,50.814697265625],[14.766503906250023,50.818310546875],[14.797460937500006,50.842333984374996],[14.809375,50.858984375]]]},"properties":{"name":"Czech Rep.","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[14.1982421875,53.919042968750034],[13.92578125,53.879052734374966],[13.827734375,54.12724609374999],[14.1982421875,53.919042968750034]]],[[[13.709179687500011,54.382714843749994],[13.707324218750074,54.281152343749994],[13.190039062500034,54.32563476562501],[13.336816406249994,54.697119140625006],[13.65761718750008,54.55957031249997],[13.709179687500011,54.382714843749994]]],[[[9.739746093750028,54.82553710937498],[10.022167968750011,54.673925781250006],[9.86865234375,54.47246093749999],[10.731542968750006,54.31625976562506],[11.013378906250068,54.37915039062497],[11.008593750000074,54.18115234374997],[10.810742187500068,54.075146484374955],[10.917773437500045,53.99531250000004],[11.39960937500004,53.94462890625002],[12.111328125,54.168310546875006],[12.57539062500004,54.467382812500006],[13.028613281250017,54.411035156249994],[13.448046875000017,54.14086914062503],[13.724218750000063,54.153222656249966],[13.865527343750074,53.85336914062498],[14.258886718750006,53.729638671874994],[14.298730468750051,53.55644531249999],[14.41455078125,53.28349609374996],[14.412304687500011,53.216748046874955],[14.410937500000074,53.19902343749999],[14.368554687500051,53.105566406250034],[14.293164062500068,53.026757812499966],[14.138867187500068,52.93286132812503],[14.128613281250011,52.87822265625002],[14.253710937500017,52.78251953124996],[14.514062500000023,52.645605468750034],[14.619433593750017,52.52851562499998],[14.569726562499994,52.431103515624955],[14.554589843750023,52.35966796874996],[14.573925781250068,52.31416015625001],[14.615625,52.277636718750045],[14.679882812500068,52.25],[14.752539062500034,52.08183593750002],[14.601660156250034,51.832373046875006],[14.738671875000051,51.62714843750004],[14.7109375,51.54492187499997],[14.724707031250063,51.523876953124955],[14.90595703125004,51.463330078124955],[14.935546875000028,51.435351562500045],[14.9638671875,51.095117187499994],[14.917480468750057,51.00874023437498],[14.814257812499989,50.871630859375045],[14.809375,50.858984375000034],[14.797460937500034,50.84233398437502],[14.766503906250051,50.81831054687501],[14.72333984375004,50.81469726562497],[14.658203125,50.832617187500006],[14.613574218750045,50.85556640625006],[14.623828125000017,50.91474609375004],[14.595214843750057,50.91860351562502],[14.559667968750006,50.954931640625034],[14.545703124999989,50.99394531249999],[14.319726562500051,51.037792968749955],[14.36904296875008,50.89873046874996],[13.18115234375,50.510498046875],[13.016406250000017,50.490380859374994],[12.549023437500011,50.393408203125034],[12.3056640625,50.205712890624994],[12.27734375,50.18144531250002],[12.231152343749983,50.24487304687497],[12.174804687500057,50.28837890624996],[12.134863281250006,50.31093750000002],[12.099218750000034,50.31098632812504],[12.089843749999972,50.30175781250003],[12.089746093750051,50.2685546875],[12.294598214285761,50.13608119419641],[12.5125,49.87744140625],[12.390527343750051,49.739648437499994],[12.68115234375,49.41450195312501],[12.91669921875004,49.33046875000002],[13.401171875000074,48.97758789062499],[13.440722656250045,48.95556640625003],[13.547656250000074,48.95966796874998],[13.684960937500051,48.87670898437506],[13.769921875000051,48.81596679687502],[13.814746093750017,48.76694335937498],[13.802929687500011,48.74750976562501],[13.798828124999972,48.62167968750006],[13.785351562499983,48.58745117187502],[13.486621093750074,48.58183593750002],[13.471679687500028,48.57182617187502],[13.459863281250023,48.564550781250034],[13.409375,48.39414062500006],[13.322851562500006,48.33125],[13.215234375000023,48.301904296874994],[12.760351562500063,48.10698242187499],[12.95351562500008,47.890625],[12.897656250000068,47.721875],[13.054101562500051,47.655126953125034],[13.047949218750034,47.57915039062502],[13.031542968750074,47.50800781250001],[13.01435546875004,47.478076171875045],[12.968066406250017,47.475683593750006],[12.878906250000057,47.506445312500034],[12.809375,47.542187499999955],[12.782812500000034,47.56416015624998],[12.781152343750051,47.590429687500006],[12.796191406249989,47.60703125],[12.771386718750023,47.63940429687503],[12.685839843750074,47.66933593750002],[12.209277343750074,47.71826171875003],[12.196875,47.709082031250034],[12.203808593750011,47.64672851562503],[12.185644531250063,47.61953125],[11.041992187500028,47.39311523437496],[10.98085937499999,47.39814453125001],[10.893945312500051,47.470458984375],[10.870605468750028,47.500781250000045],[10.873046874999972,47.52021484375001],[10.741601562500023,47.52412109375001],[10.65869140625,47.547216796875006],[10.482812500000051,47.54179687499996],[10.439453125000028,47.55156249999999],[10.403906250000063,47.41699218750003],[10.369140625,47.366064453125034],[10.18300781250008,47.27880859375003],[10.200292968750063,47.36342773437505],[10.066308593750023,47.39335937500002],[10.064575892857171,47.42369419642856],[10.059863281250045,47.44907226562498],[10.034082031250023,47.47358398437501],[9.971582031249994,47.50532226562498],[9.839160156250017,47.55229492187496],[9.748925781250023,47.575537109375006],[9.524023437500034,47.52421875000002],[8.572656250000023,47.775634765625],[8.435742187500011,47.73134765625002],[8.403417968750006,47.687792968750045],[8.413281250000068,47.66269531249998],[8.451757812500006,47.65180664062498],[8.552343750000063,47.65913085937498],[8.56708984375004,47.65190429687502],[8.57050781250004,47.63779296874998],[8.55947265625008,47.62402343750003],[8.477636718750034,47.61269531250002],[8.454003906249994,47.59619140625003],[7.615625,47.59272460937504],[7.616601562500023,48.15678710937502],[8.134863281250006,48.97358398437498],[7.450585937500051,49.152197265625034],[6.735449218750006,49.16059570312498],[6.344335937500006,49.45273437499998],[6.4873046875,49.798486328124994],[6.204882812500017,49.915136718750034],[6.13818359375,49.97431640625001],[6.10976562500008,50.034375],[6.116503906250045,50.120996093749966],[6.340917968750006,50.451757812500034],[5.993945312500017,50.75043945312504],[6.048437500000034,50.90488281250006],[5.857519531250034,51.030126953125006],[6.129980468750034,51.14741210937501],[6.198828125000034,51.45],[5.948730468750057,51.80268554687501],[6.800390625,51.96738281249998],[6.724511718749994,52.080224609374966],[7.035156250000057,52.38022460937498],[6.748828125000074,52.464013671874994],[6.710742187500045,52.61787109374998],[7.033007812500045,52.65136718749997],[7.197265625000028,53.28227539062499],[7.074316406250034,53.477636718750006],[7.285253906250034,53.68134765625001],[8.00927734375,53.69072265624999],[8.108496093750063,53.46767578125002],[8.245214843750006,53.44531249999997],[8.333886718750051,53.606201171875],[8.495214843750063,53.39423828124998],[8.618945312500045,53.875],[9.20556640625,53.85595703124997],[9.783984375000074,53.554638671874955],[9.31201171875,53.859130859375],[8.92041015625,53.96533203125006],[8.906640625000023,54.26079101562502],[8.625781250000017,54.35395507812501],[8.951855468750011,54.46757812499996],[8.670312500000023,54.903417968750034],[9.739746093750028,54.82553710937498]]],[[[8.307714843750034,54.786962890625034],[8.451464843750017,55.05537109374998],[8.3798828125,54.89985351562501],[8.629589843750068,54.891748046874966],[8.307714843750034,54.786962890625034]]]]},"properties":{"name":"Germany","childNum":4}},{"geometry":{"type":"Polygon","coordinates":[[[43.24599609375002,11.499804687499989],[42.92275390625002,10.999316406249989],[42.557714843750006,11.080761718749997],[41.79824218750002,10.98046875],[41.79267578125001,11.68603515625],[42.378515625,12.46640625],[42.40859375000002,12.494384765625],[42.45,12.521337890624991],[42.47939453125002,12.513623046874997],[42.703710937500006,12.380322265624997],[42.76748046875002,12.4228515625],[42.825292968750006,12.5693359375],[42.86591796875001,12.622802734375],[42.88330078125,12.621289062499997],[43.00566406250002,12.662304687499997],[43.11669921875,12.70859375],[43.353515625,12.367041015624991],[43.38027343750002,12.091259765624997],[42.64003906250002,11.560107421874989],[42.52177734375002,11.572167968749994],[42.58378906250002,11.496777343749997],[43.04277343750002,11.588476562499991],[43.24599609375002,11.499804687499989]]]},"properties":{"name":"Djibouti","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-61.281689453125,15.2490234375],[-61.37539062499999,15.227294921875],[-61.45810546874999,15.633105468750003],[-61.277246093749994,15.526708984374991],[-61.281689453125,15.2490234375]]]},"properties":{"name":"Dominica","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[11.361425781250006,54.891650390625045],[11.739550781250017,54.80742187500002],[11.765917968750074,54.67944335937506],[11.457421875000023,54.628857421874955],[11.035546875000051,54.77309570312505],[11.058593750000028,54.940576171874966],[11.361425781250006,54.891650390625045]]],[[[12.549218750000051,54.96577148437504],[12.11884765625004,54.91440429687506],[12.274023437500034,55.064111328124994],[12.549218750000051,54.96577148437504]]],[[[10.061230468750068,54.88637695312502],[9.80625,54.90600585937503],[9.78125,55.06904296875001],[10.061230468750068,54.88637695312502]]],[[[10.734082031250011,54.750732421875],[10.621679687500006,54.851416015625006],[10.95107421875008,55.15620117187501],[10.734082031250011,54.750732421875]]],[[[15.087695312500017,55.021875],[14.684179687500063,55.10224609375004],[14.765332031250068,55.296728515625034],[15.132617187500017,55.14453125000003],[15.087695312500017,55.021875]]],[[[10.645117187500006,55.60981445312498],[10.785253906250034,55.13339843749998],[10.44277343750008,55.04877929687498],[9.988769531250028,55.163183593750006],[9.860644531250045,55.515478515625034],[10.645117187500006,55.60981445312498]]],[[[12.665722656250068,55.596533203125006],[12.550878906250034,55.55625],[12.59921875,55.68022460937502],[12.665722656250068,55.596533203125006]]],[[[12.56875,55.785058593749966],[12.215039062500011,55.46650390624998],[12.413085937500028,55.28618164062502],[12.089941406250006,55.18813476562505],[12.050390625000034,54.81533203125002],[11.8623046875,54.77260742187502],[11.653808593750057,55.186914062499966],[11.286328125000068,55.20444335937498],[10.978906250000051,55.721533203125006],[11.322265625000028,55.752539062500006],[11.627734375000074,55.95688476562498],[11.819726562500023,55.69765625000002],[11.86640625000004,55.968164062499966],[12.218945312499983,56.11865234374997],[12.578710937500006,56.06406250000006],[12.56875,55.785058593749966]]],[[[11.052148437500051,57.25253906250006],[10.873828125000045,57.26225585937499],[11.174511718750011,57.322900390624994],[11.052148437500051,57.25253906250006]]],[[[9.739746093750028,54.82553710937498],[8.670312500000023,54.903417968750034],[8.61591796875004,55.41821289062503],[8.132128906250074,55.59980468749998],[8.16396484375008,56.60688476562498],[8.671679687500045,56.49565429687496],[8.88808593750008,56.73505859374998],[9.06708984375004,56.79384765625005],[9.196386718750006,56.70166015625],[9.2548828125,57.01171875000003],[8.992773437499977,57.01611328125003],[8.771972656250028,56.72529296875004],[8.468359375,56.66455078125],[8.284082031250023,56.85234374999999],[8.618554687500051,57.11127929687498],[9.43359375,57.17431640625003],[9.96230468750008,57.580957031249994],[10.609960937500034,57.73691406249998],[10.282714843750057,56.620507812499994],[10.926171875000051,56.44326171875002],[10.753417968750028,56.24199218749999],[10.31875,56.212890625],[10.18300781250008,55.86518554687504],[9.903710937500023,55.84282226562502],[10.02363281250004,55.76142578125004],[9.591113281250017,55.49321289062502],[9.670996093750063,55.26640624999999],[9.453710937500006,55.03955078125006],[9.732324218750023,54.96801757812506],[9.739746093750028,54.82553710937498]]]]},"properties":{"name":"Denmark","childNum":10,"cp":[10.2768332,56.1773879]}},{"geometry":{"type":"Polygon","coordinates":[[[-71.647216796875,19.195947265624994],[-71.746484375,19.285839843749997],[-71.71147460937499,19.486572265625],[-71.75742187499999,19.688183593749997],[-71.779248046875,19.718164062499994],[-71.6673828125,19.8486328125],[-70.95415039062499,19.913964843749994],[-70.19384765625,19.63803710937499],[-69.95683593749999,19.671875],[-69.739404296875,19.29921875],[-69.23247070312499,19.27182617187499],[-69.60595703125,19.206494140624997],[-69.62363281249999,19.117822265624994],[-68.684765625,18.90478515625],[-68.33916015624999,18.611523437499997],[-68.68740234375,18.21494140624999],[-68.9349609375,18.408007812500003],[-69.27451171874999,18.43984375],[-69.770654296875,18.443554687499997],[-70.479931640625,18.21728515625],[-70.644677734375,18.336230468750003],[-71.02783203125,18.273193359375],[-71.43896484375,17.63559570312499],[-71.63173828125,17.773632812499997],[-71.768310546875,18.03916015624999],[-71.76376953124999,18.20395507812499],[-71.737255859375,18.270800781250003],[-71.7619140625,18.34130859375],[-71.87255859375,18.416210937499997],[-71.940380859375,18.512597656249994],[-72.000390625,18.597900390625],[-71.98686523437499,18.6103515625],[-71.86650390624999,18.614160156249994],[-71.74321289062499,18.73291015625],[-71.72705078125,18.80322265625],[-71.733642578125,18.856396484374997],[-71.80712890625,18.987011718749997],[-71.647216796875,19.195947265624994]]]},"properties":{"name":"Dominican Rep.","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[8.207617187500006,36.518945312499994],[8.348730468750006,36.36796875],[8.318066406250011,35.654931640624994],[8.31640625,35.403125],[8.35986328125,35.299609375],[8.394238281250011,35.203857421875],[8.312109375,35.084619140624994],[8.27685546875,34.9794921875],[8.24560546875,34.73408203125],[7.513867187500011,34.080517578125],[7.534375,33.717919921874994],[7.877246093750017,33.172119140625],[8.1125,33.055322265624994],[8.333398437500023,32.543603515624994],[9.044042968750006,32.07236328125],[9.160253906250006,31.621337890625],[9.224023437500023,31.373681640624994],[9.51875,30.229394531249994],[9.310253906250011,30.115234375],[9.805273437500006,29.176953125],[9.916015625,27.785693359374996],[9.74755859375,27.330859375],[9.883203125000023,26.630810546874997],[9.491406250000011,26.333740234375],[9.4482421875,26.067138671875],[10.000683593750011,25.332080078125003],[10.255859375,24.591015625],[10.395898437500023,24.485595703125],[10.686132812500006,24.55136718749999],[11.507617187500017,24.314355468749994],[11.967871093750006,23.517871093750003],[7.481738281250017,20.873095703125003],[5.836621093750011,19.479150390624994],[4.227636718750006,19.142773437499997],[3.3564453125,18.986621093750003],[3.119726562500006,19.103173828124994],[3.255859375,19.4109375],[3.130273437500023,19.85019531249999],[1.685449218750023,20.378369140624997],[1.610644531250017,20.555566406249994],[1.165722656250011,20.817431640625003],[1.1455078125,21.102246093749997],[-1.947900390624994,23.124804687500003],[-4.822607421874977,24.99560546875],[-8.683349609375,27.2859375],[-8.683349609375,27.656445312499997],[-8.683349609375,27.900390625],[-8.659912109375,28.718603515625],[-7.485742187499994,29.392236328124994],[-7.427685546874983,29.425],[-7.142431640624977,29.619580078124997],[-6.855566406249977,29.601611328124996],[-6.755126953125,29.583837890625],[-6.635351562499977,29.568798828124997],[-6.597753906249977,29.578955078125],[-6.520556640624989,29.659863281249997],[-6.479736328125,29.820361328124996],[-6.00429687499999,29.83125],[-5.448779296874989,29.956933593749994],[-5.293652343749983,30.058642578124996],[-5.180126953124983,30.166162109374994],[-4.96826171875,30.465380859374996],[-4.778515624999983,30.552392578124994],[-4.529150390624977,30.625537109374996],[-4.322851562499977,30.698876953124994],[-4.148779296874977,30.8095703125],[-3.626904296874983,31.000927734374997],[-3.833398437499994,31.197802734374996],[-3.837109374999983,31.512353515624994],[-3.768164062499977,31.68955078125],[-3.700244140624989,31.700097656249994],[-3.604589843749977,31.686767578125],[-3.439794921874977,31.704541015624997],[-3.017382812499989,31.834277343749996],[-2.988232421874983,31.87421875],[-2.930859374999983,32.042529296874996],[-2.863427734374994,32.07470703125],[-1.275341796874983,32.089013671874994],[-1.16259765625,32.399169921875],[-1.111035156249983,32.552294921874996],[-1.188232421875,32.60849609375],[-1.29638671875,32.675683593749994],[-1.352148437499977,32.703369140625],[-1.45,32.784814453124994],[-1.510009765625,32.87763671875],[-1.550732421874983,33.073583984375],[-1.67919921875,33.318652343749996],[-1.795605468749983,34.751904296875],[-2.131787109374983,34.970849609374994],[-2.190771484374977,35.02978515625],[-2.219628906249994,35.10419921875],[-1.673632812499989,35.18310546875],[-0.426123046874977,35.8615234375],[-0.048242187499994,35.8328125],[0.312207031250011,36.162353515625],[0.9716796875,36.4439453125],[2.593359375,36.60068359375],[2.972851562500011,36.784472656249996],[3.779003906250011,36.89619140625],[4.758105468750017,36.896337890625],[5.29541015625,36.648242187499996],[6.486523437500011,37.085742187499996],[6.927539062500017,36.91943359375],[7.238476562500011,36.968505859375],[7.204296875000011,37.0923828125],[7.910449218750017,36.856347656249994],[8.576562500000023,36.93720703125],[8.601269531250011,36.833935546875],[8.207617187500006,36.518945312499994]]]},"properties":{"name":"Algeria","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-80.131591796875,-2.973144531249957],[-80.27294921875003,-2.995898437499974],[-80.22368164062502,-2.753125],[-80.08076171874995,-2.668847656249966],[-79.90903320312495,-2.725585937499972],[-80.131591796875,-2.973144531249957]]],[[[-90.42392578125,-1.339941406250034],[-90.51953124999994,-1.299121093749974],[-90.47719726562494,-1.22099609374996],[-90.42392578125,-1.339941406250034]]],[[[-89.41889648437498,-0.911035156249966],[-89.60859374999998,-0.888574218750009],[-89.28784179687503,-0.689843750000023],[-89.41889648437498,-0.911035156249966]]],[[[-90.33486328125,-0.771582031249977],[-90.54213867187502,-0.676464843749955],[-90.53168945312493,-0.581445312499966],[-90.26938476562498,-0.48466796874996],[-90.19272460937498,-0.658789062500006],[-90.33486328125,-0.771582031249977]]],[[[-91.42597656249995,-0.460839843749994],[-91.61074218749994,-0.44394531250002],[-91.64667968749998,-0.284472656249946],[-91.46015625000001,-0.255664062500031],[-91.42597656249995,-0.460839843749994]]],[[[-90.57392578124993,-0.333984375],[-90.8677734375,-0.271386718750037],[-90.78037109374998,-0.160449218749989],[-90.57392578124993,-0.333984375]]],[[[-91.27216796874998,0.025146484374986],[-90.799658203125,-0.752050781249991],[-90.90551757812497,-0.94052734375002],[-91.13105468750001,-1.019628906249977],[-91.41904296874998,-0.996679687500006],[-91.49541015624999,-0.860937499999977],[-91.120947265625,-0.559082031250028],[-91.36918945312493,-0.287207031249977],[-91.42885742187502,-0.023388671874955],[-91.59682617187497,0.002099609374994],[-91.36137695312496,0.125830078124977],[-91.27216796874998,0.025146484374986]]],[[[-78.90922851562502,1.252783203124977],[-78.99169921875003,1.293212890625043],[-78.89980468749997,1.359765625],[-78.90922851562502,1.252783203124977]]],[[[-75.28447265624999,-0.10654296875002],[-75.62626953124999,-0.122851562499974],[-75.63203125000001,-0.157617187500037],[-75.56059570312502,-0.200097656249994],[-75.49106445312498,-0.24833984374996],[-75.42470703124997,-0.408886718749983],[-75.259375,-0.59013671874996],[-75.24960937499998,-0.951855468750026],[-75.34819335937499,-0.966796874999957],[-75.38012695312503,-0.94023437499996],[-75.40805664062503,-0.92431640625],[-75.42041015624997,-0.962207031250003],[-75.570556640625,-1.53125],[-76.08979492187501,-2.133105468749974],[-76.6791015625,-2.562597656249991],[-77.860595703125,-2.981640625000011],[-78.240380859375,-3.472558593750009],[-78.345361328125,-3.397363281249966],[-78.64799804687499,-4.248144531250006],[-78.68603515625003,-4.562402343749994],[-78.86152343749998,-4.665039062499943],[-78.90761718749997,-4.714453124999977],[-78.92578125,-4.770703124999983],[-78.91420898437497,-4.818652343749974],[-78.919189453125,-4.858398437499986],[-78.97539062499999,-4.873242187499997],[-78.99526367187497,-4.908007812499974],[-79.03330078124998,-4.96914062499999],[-79.07626953125003,-4.990625],[-79.18666992187497,-4.958203124999983],[-79.26811523437493,-4.957617187499949],[-79.33095703124997,-4.92783203125002],[-79.39941406249997,-4.840039062499983],[-79.45576171874998,-4.766210937499949],[-79.50190429687495,-4.670605468750011],[-79.51616210937493,-4.539160156249963],[-79.57768554687496,-4.50058593750002],[-79.638525390625,-4.454882812500031],[-79.71098632812502,-4.467578124999946],[-79.79726562500002,-4.47636718749996],[-79.8451171875,-4.445898437499977],[-79.962890625,-4.390332031250026],[-80.06352539062499,-4.327539062500023],[-80.13955078125002,-4.296093750000011],[-80.19746093750001,-4.311035156249943],[-80.293359375,-4.416796875],[-80.38349609374998,-4.46367187499996],[-80.424169921875,-4.461425781250028],[-80.47856445312499,-4.430078125000037],[-80.48847656249995,-4.393652343749991],[-80.44384765625003,-4.335839843750023],[-80.35288085937495,-4.208496093750014],[-80.453759765625,-4.205175781249963],[-80.48847656249995,-4.165527343749972],[-80.49345703124999,-4.119140625000014],[-80.510009765625,-4.06953125000004],[-80.49013671874994,-4.010058593750003],[-80.43720703125001,-3.978613281249991],[-80.30327148437499,-4.005078124999969],[-80.26689453124993,-3.948828124999963],[-80.23051757812499,-3.924023437499969],[-80.19414062499996,-3.905859375],[-80.24375,-3.576757812500006],[-80.32465820312498,-3.387890625],[-79.96333007812501,-3.15771484375],[-79.72988281249997,-2.579101562499972],[-79.842138671875,-2.0673828125],[-79.92558593749996,-2.548535156249969],[-80.03017578124994,-2.556738281249949],[-80.00664062499993,-2.353808593750003],[-80.28471679687502,-2.706738281249955],[-80.93217773437493,-2.269140624999977],[-80.76059570312498,-1.934570312500028],[-80.90239257812499,-1.078906249999974],[-80.55390624999998,-0.847949218749989],[-80.45546875,-0.585449218749986],[-80.282373046875,-0.620507812500023],[-80.48227539062503,-0.368261718749963],[-80.046142578125,0.155371093750048],[-80.08828124999997,0.78476562500002],[-78.89965820312503,1.20625],[-78.85966796874996,1.455371093750031],[-78.1806640625,0.968554687499974],[-77.702880859375,0.837841796874997],[-77.46767578124997,0.636523437500017],[-77.396337890625,0.393896484374963],[-76.49462890624997,0.23544921875002],[-76.27060546874998,0.439404296874997],[-75.77666015624999,0.08925781249998],[-75.28447265624999,-0.10654296875002]]]]},"properties":{"name":"Ecuador","childNum":9}},{"geometry":{"type":"Polygon","coordinates":[[[34.24531250000001,31.208300781249996],[34.904296875,29.47734375],[34.736425781250006,29.27060546875],[34.39970703125002,28.01601562499999],[34.22011718750002,27.764306640624994],[33.76025390625,28.04765625],[33.24775390625001,28.567724609375],[32.56572265625002,29.973974609375],[32.35976562500002,29.630664062499996],[32.89824218750002,28.565234375],[33.54707031250001,27.898144531249997],[33.5498046875,27.607373046874997],[33.84931640625001,27.184912109375],[33.959082031250006,26.6490234375],[35.19414062500002,24.475146484375003],[35.78388671875001,23.937792968750003],[35.54082031250002,23.920654296875],[35.50439453125,23.779296875],[35.697851562500006,22.946191406249994],[36.22968750000001,22.628808593749994],[36.87138671875002,21.996728515624994],[31.434472656250023,21.995849609375],[31.486132812500017,22.14780273437499],[31.400292968750023,22.202441406250003],[31.260644531250023,22.00229492187499],[31.092675781250023,21.994873046875],[28.036425781250017,21.995361328125],[24.980273437500017,21.995849609375],[24.980273437500017,25.5888671875],[24.980273437500017,29.181884765625],[24.703222656250006,30.201074218749994],[24.96142578125,30.678515625],[24.85273437500001,31.334814453125],[25.150488281250006,31.654980468749997],[25.382226562500023,31.51279296875],[25.89326171875001,31.620898437499996],[27.248046875,31.377880859374997],[27.5400390625,31.212695312499996],[28.51484375000001,31.050439453124994],[29.072070312500017,30.830273437499997],[29.929785156250006,31.227490234374997],[30.22265625,31.2583984375],[30.395117187500006,31.4576171875],[30.92353515625001,31.566845703124997],[30.56298828125,31.4169921875],[31.001757812500017,31.462792968749994],[31.082910156250023,31.603320312499996],[31.5244140625,31.458251953125],[31.888964843750017,31.54140625],[32.13603515625002,31.341064453125],[31.8921875,31.482470703124996],[31.77109375,31.292578125],[32.10175781250001,31.092822265624996],[32.281835937500006,31.200878906249997],[32.21621093750002,31.29375],[32.60332031250002,31.06875],[33.66650390625,31.130419921874996],[34.19814453125002,31.322607421875],[34.24531250000001,31.208300781249996]]]},"properties":{"name":"Egypt","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[40.141210937500006,15.696142578125034],[40.399023437500006,15.579882812500045],[39.975195312500006,15.612451171875023],[39.94746093750004,15.696142578125034],[40.07050781250004,15.676611328125034],[39.93994140625003,15.744531250000023],[39.9567382812501,15.889404296875057],[40.141210937500006,15.696142578125034]]],[[[40.07646484375002,16.082421875000023],[40.11005859375004,15.985742187500051],[39.99609375000003,16.04267578125001],[40.07646484375002,16.082421875000023]]],[[[40.938574218750006,13.983105468749997],[40.82011718750002,14.111669921874991],[40.22148437500002,14.431152343749972],[39.531835937500006,14.53671875],[39.198046875000074,14.479394531250037],[39.1354492187501,14.581884765625034],[39.07421874999997,14.628222656249974],[39.02382812499999,14.628222656249974],[38.99570312500006,14.586865234374983],[38.81201171875003,14.482324218750009],[38.50439453124997,14.42441406250002],[38.43144531250002,14.428613281249994],[38.221484375000074,14.649658203124986],[38.002539062500006,14.737109375000045],[37.94345703125006,14.810546875],[37.884179687499994,14.852294921874972],[37.82031250000003,14.708496093749986],[37.70839843750005,14.45722656250004],[37.64843750000003,14.32255859375006],[37.571191406249994,14.149072265624966],[37.546777343749994,14.143847656249974],[37.507226562499994,14.156396484375037],[37.257226562499994,14.453759765625051],[37.024511718750006,14.271972656250057],[36.81191406250005,14.315039062500034],[36.67910156250005,14.307568359375026],[36.542382812499994,14.25820312499999],[36.52431640625005,14.256835937499986],[36.492285156250006,14.544335937500023],[36.470800781250006,14.736474609375009],[36.448144531249994,14.940087890625009],[36.42675781249997,15.132080078125043],[36.566015625,15.362109375],[36.9137695312501,16.296191406250045],[36.887792968750006,16.624658203124994],[36.9787109375001,16.800585937500045],[36.9757812500001,16.866552734375006],[36.99521484375006,17.020556640625017],[37.00898437500004,17.058886718750017],[37.06152343749997,17.061279296875057],[37.16953125000006,17.04140625],[37.41103515625005,17.061718749999955],[37.452929687500074,17.108691406250017],[37.51015625,17.28813476562499],[37.54746093750006,17.32412109375005],[37.78242187500004,17.458007812500057],[38.253515625,17.584765625000017],[38.26728515625004,17.616699218750057],[38.28984375000002,17.637011718750017],[38.34736328125004,17.68359375],[38.37373046875004,17.717333984375045],[38.42246093750006,17.823925781249983],[38.60947265625006,18.00507812500004],[39.03447265625002,17.085546875000034],[39.298925781250006,15.921093750000011],[39.78554687499999,15.124853515624991],[39.86376953124997,15.470312500000034],[40.20410156250003,15.014111328124983],[41.17646484375004,14.620312500000054],[41.65820312499997,13.983056640624994],[42.24511718749997,13.587646484374986],[42.39931640625005,13.212597656249969],[42.522851562499994,13.221484375],[42.796191406250074,12.864257812500057],[42.96953125000002,12.808349609375028],[42.99902343750003,12.899511718750048],[43.08291015625005,12.824609374999966],[43.11669921874997,12.708593749999963],[43.00566406250002,12.66230468750004],[42.88330078124997,12.621289062500026],[42.86591796875004,12.622802734374986],[42.82529296875006,12.569335937500014],[42.767480468749994,12.422851562500014],[42.70371093750006,12.380322265625054],[42.479394531249994,12.513623046875026],[42.45,12.521337890625006],[42.40859375,12.494384765625014],[42.37851562500006,12.46640625],[42.28994140625005,12.570214843750009],[42.225,12.661962890624963],[42.13427734374997,12.771435546874969],[41.95214843749997,12.88232421875],[41.85957031250004,13.025878906250028],[41.76503906250005,13.183935546874991],[41.362890625,13.499804687500031],[40.938574218750006,13.983105468749997]]]]},"properties":{"name":"Eritrea","childNum":3}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-17.887939453125,27.809570312500057],[-17.984765625000023,27.646386718750023],[-18.160546874999937,27.76147460937503],[-17.887939453125,27.809570312500057]]],[[[-15.400585937499955,28.147363281250023],[-15.436767578124972,27.810693359375023],[-15.71030273437492,27.784082031250023],[-15.809472656249966,27.994482421874977],[-15.682763671874994,28.15405273437497],[-15.400585937499955,28.147363281250023]]],[[[-17.184667968749977,28.02197265624997],[-17.324902343749955,28.11767578125003],[-17.25859375,28.203173828125045],[-17.103759765624943,28.111132812500017],[-17.184667968749977,28.02197265624997]]],[[[-16.33447265624997,28.37993164062499],[-16.41821289062497,28.15141601562496],[-16.65800781249999,28.007177734374977],[-16.905322265625017,28.33959960937503],[-16.12363281249992,28.57597656249996],[-16.33447265624997,28.37993164062499]]],[[[-14.196777343749943,28.169287109375063],[-14.332617187500006,28.056005859374977],[-14.49179687499992,28.100927734374977],[-14.231982421875017,28.21582031250003],[-14.003369140624983,28.706689453125023],[-13.85722656249996,28.73803710937503],[-13.928027343749989,28.25346679687499],[-14.196777343749943,28.169287109375063]]],[[[-17.83427734374999,28.49321289062496],[-18.00078124999999,28.758251953124955],[-17.928808593749977,28.844580078125063],[-17.7265625,28.724462890625006],[-17.83427734374999,28.49321289062496]]],[[[-13.715966796874966,28.911230468750034],[-13.85991210937496,28.869091796874983],[-13.823632812499966,29.013330078124966],[-13.463574218749955,29.237207031250023],[-13.477929687499966,29.00659179687503],[-13.715966796874966,28.911230468750034]]],[[[1.593945312500068,38.672070312499955],[1.40576171875,38.670996093750006],[1.436328125000017,38.768212890624994],[1.593945312500068,38.672070312499955]]],[[[1.445214843750051,38.91870117187503],[1.223339843750068,38.90385742187502],[1.3486328125,39.080810546875],[1.564453125,39.12104492187504],[1.623632812499977,39.03881835937497],[1.445214843750051,38.91870117187503]]],[[[3.145312500000017,39.79008789062499],[3.461816406250023,39.69775390625003],[3.072851562500006,39.30126953124997],[2.799804687500057,39.38505859374999],[2.700585937500023,39.54213867187502],[2.49951171875,39.47788085937498],[2.37001953125008,39.57207031249999],[3.15869140625,39.97050781249999],[3.145312500000017,39.79008789062499]]],[[[4.293652343750011,39.84184570312499],[3.8671875,39.958740234375],[3.853417968750051,40.06303710937502],[4.22578125000004,40.032373046874966],[4.293652343750011,39.84184570312499]]],[[[-1.794042968749949,43.407324218750006],[-1.410693359374932,43.240087890625034],[-1.460839843749937,43.05175781250006],[-1.300048828124943,43.10097656250002],[-0.586425781249943,42.798974609374966],[0.631640625000045,42.689599609374994],[0.696875,42.84511718750005],[1.428320312499977,42.59589843749998],[1.414843750000074,42.54838867187499],[1.448828124999977,42.43745117187504],[1.534082031250051,42.44169921875002],[1.7060546875,42.50332031250005],[1.859765625000051,42.457080078125045],[1.927929687500068,42.42631835937499],[2.032714843750028,42.353515625],[3.21142578125,42.43115234375],[3.248046875,41.94423828125002],[3.0048828125,41.76743164062506],[2.082617187500063,41.287402343750045],[1.032910156250068,41.06206054687496],[0.714648437500074,40.822851562500006],[0.891113281250057,40.72236328125004],[0.59609375000008,40.614501953125],[-0.327001953124949,39.519873046875006],[-0.204931640624949,39.062597656250034],[0.20156250000008,38.75917968750002],[-0.520800781249989,38.317285156249966],[-0.814648437500011,37.76992187500002],[-0.721582031249966,37.63105468749998],[-1.327539062499937,37.561132812500034],[-1.640966796874949,37.38696289062497],[-2.111523437499983,36.77666015624999],[-4.366845703124994,36.71811523437506],[-4.67412109374996,36.506445312500006],[-5.171484374999949,36.423779296874955],[-5.3609375,36.134912109374994],[-5.62548828125,36.02592773437499],[-6.040673828124937,36.18842773437498],[-6.38413085937492,36.63701171874996],[-6.216796875000028,36.91357421875],[-6.396191406249983,36.831640625],[-6.863769531250028,37.27890625],[-7.406152343749937,37.17944335937497],[-7.44394531249992,37.72827148437497],[-6.957568359374932,38.18789062499999],[-7.106396484374983,38.181005859375006],[-7.343017578124943,38.45742187500002],[-6.997949218749994,39.05644531250002],[-7.53569335937496,39.66157226562501],[-7.117675781249972,39.681689453125045],[-6.975390624999932,39.79838867187502],[-6.896093749999949,40.02182617187506],[-7.032617187499966,40.16791992187498],[-6.8101562499999,40.343115234375034],[-6.928466796874972,41.009130859375006],[-6.2125,41.53203125],[-6.542187499999955,41.672509765624994],[-6.61826171874992,41.9423828125],[-7.147119140625023,41.98115234374998],[-7.40361328124996,41.833691406249955],[-8.152490234374937,41.81196289062498],[-8.266064453124983,42.13740234375001],[-8.777148437500017,41.941064453124994],[-8.887207031249943,42.105273437500045],[-8.690917968749943,42.274169921875],[-8.815820312499966,42.285253906250034],[-8.730029296874989,42.411718750000034],[-8.8115234375,42.64033203124998],[-9.033105468750023,42.593847656250006],[-8.927197265624926,42.79858398437497],[-9.235205078124977,42.97690429687498],[-9.178076171874977,43.17402343749998],[-8.248925781249937,43.43940429687498],[-8.256738281249937,43.57988281249999],[-8.004687499999932,43.69438476562496],[-7.503613281249983,43.73994140625001],[-7.060986328124955,43.55395507812503],[-5.846679687499943,43.645068359375045],[-4.52304687499992,43.41572265625004],[-3.604638671874966,43.51948242187504],[-3.045605468749926,43.37158203125],[-2.875048828125017,43.454443359375006],[-2.337109374999926,43.32802734375002],[-1.794042968749949,43.407324218750006]]]]},"properties":{"name":"Spain","childNum":12,"cp":[-2.9366964,40.3438963]}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[22.61738281250004,58.62124023437502],[23.323242187500057,58.45083007812502],[22.730273437500045,58.23066406250001],[22.371679687499977,58.217138671875006],[21.996875,57.93134765624998],[22.187695312500068,58.15434570312502],[21.88212890624999,58.262353515624994],[21.862304687500057,58.497167968750034],[22.61738281250004,58.62124023437502]]],[[[23.343554687500017,58.550341796875045],[23.10908203125004,58.65922851562502],[23.332812500000045,58.648583984374994],[23.343554687500017,58.550341796875045]]],[[[22.923730468750023,58.826904296875],[22.54218750000001,58.68999023437499],[22.411035156250023,58.863378906250034],[22.05625,58.94360351562506],[22.6494140625,59.08710937499998],[22.90986328125004,58.99121093749997],[22.923730468750023,58.826904296875]]],[[[28.0125,59.484277343749966],[28.15107421875004,59.374414062499966],[27.434179687500006,58.787255859374994],[27.502441406250057,58.221337890624994],[27.778515625000068,57.87070312500006],[27.542089843750063,57.799414062500006],[27.4,57.66679687499999],[27.35195312500005,57.528125],[26.96601562500001,57.60913085937506],[26.532617187499994,57.53100585937503],[26.29804687500001,57.60107421875],[25.66015625,57.920166015625],[25.27265625000001,58.009375],[25.11103515625004,58.06342773437498],[24.45888671875005,57.907861328124994],[24.3625,57.86616210937501],[24.322558593750074,57.87060546875003],[24.529101562500045,58.35424804687497],[24.114843750000034,58.26611328125006],[23.767578125000057,58.36083984374997],[23.50927734375003,58.65854492187498],[23.680761718750063,58.787158203125074],[23.43203125,58.920654296875],[23.494433593750017,59.19565429687498],[24.083398437500023,59.29189453125005],[24.38037109375003,59.47265625],[25.44375,59.52114257812502],[25.50927734374997,59.63901367187506],[26.974707031250006,59.450634765624955],[28.0125,59.484277343749966]]]]},"properties":{"name":"Estonia","childNum":4}},{"geometry":{"type":"Polygon","coordinates":[[[38.43144531250002,14.428613281249994],[38.50439453125,14.424414062499991],[38.81201171875,14.482324218749994],[38.995703125,14.586865234374997],[39.02382812500002,14.628222656250003],[39.07421875,14.628222656250003],[39.13544921875001,14.581884765624991],[39.19804687500002,14.479394531249994],[39.531835937500006,14.53671875],[40.22148437500002,14.43115234375],[40.82011718750002,14.111669921874991],[40.938574218750006,13.983105468749997],[41.362890625,13.499804687500003],[41.76503906250002,13.183935546874991],[41.85957031250001,13.02587890625],[41.9521484375,12.88232421875],[42.13427734375,12.771435546874997],[42.225,12.661962890624991],[42.28994140625002,12.570214843749994],[42.378515625,12.46640625],[41.79267578125001,11.68603515625],[41.79824218750002,10.98046875],[42.557714843750006,11.080761718749997],[42.92275390625002,10.999316406249989],[42.65644531250001,10.6],[42.84160156250002,10.203076171874997],[43.181640625,9.879980468749991],[43.482519531250006,9.379492187499991],[43.98378906250002,9.008837890624989],[46.97822265625001,7.9970703125],[47.97822265625001,7.9970703125],[44.940527343750006,4.912011718749994],[43.988867187500006,4.950537109374991],[43.58349609375,4.85498046875],[43.12568359375001,4.644482421874997],[42.85664062500001,4.32421875],[42.02412109375001,4.137939453125],[41.91533203125002,4.031298828124989],[41.88398437500001,3.977734375],[41.73769531250002,3.979052734374989],[41.48193359375,3.96328125],[41.37246093750002,3.946191406249994],[41.22089843750001,3.943554687499997],[41.02080078125002,4.057470703124991],[40.765234375,4.27304687499999],[39.84218750000002,3.851464843749994],[39.79033203125002,3.754248046874991],[39.65751953125002,3.577832031249997],[39.49443359375002,3.456103515624989],[38.608007812500006,3.60009765625],[38.45156250000002,3.604833984374991],[38.22529296875001,3.618994140624991],[38.08613281250001,3.64882812499999],[37.15458984375002,4.254541015624994],[36.90556640625002,4.411474609374991],[36.02197265625,4.468115234374991],[35.76308593750002,4.808007812499994],[35.75615234375002,4.950488281249989],[35.779296875,5.105566406249991],[35.80029296875,5.156933593749997],[35.74501953125002,5.343994140625],[35.325292968750006,5.364892578124994],[35.2646484375,5.412060546874997],[35.26386718750001,5.457910156249994],[35.26835937500002,5.492285156249991],[34.98359375000001,5.858300781249994],[34.71064453125001,6.660302734374994],[34.06425781250002,7.225732421874994],[33.902441406250006,7.509521484375],[32.99892578125002,7.899511718749991],[33.28105468750002,8.437255859375],[33.95332031250001,8.443505859374994],[34.07275390625,8.545263671874991],[34.078125,9.461523437499991],[34.31123046875001,10.190869140624997],[34.34394531250001,10.658642578124997],[34.571875,10.880175781249989],[34.77128906250002,10.746191406249991],[34.93144531250002,10.864794921874989],[35.1123046875,11.816552734374994],[35.67021484375002,12.623730468749997],[36.12519531250001,12.75703125],[36.52431640625002,14.2568359375],[36.54238281250002,14.25820312499999],[36.67910156250002,14.307568359374997],[36.81191406250002,14.315039062499991],[37.024511718750006,14.27197265625],[37.25722656250002,14.453759765624994],[37.50722656250002,14.156396484374994],[37.54677734375002,14.143847656250003],[37.57119140625002,14.149072265624994],[37.6484375,14.322558593750003],[37.70839843750002,14.457226562499997],[37.8203125,14.70849609375],[37.88417968750002,14.852294921875],[37.943457031250006,14.810546875],[38.002539062500006,14.737109375],[38.22148437500002,14.649658203125],[38.43144531250002,14.428613281249994]]]},"properties":{"name":"Ethiopia","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[22.17509765624999,60.370751953124994],[22.41552734375003,60.30336914062505],[22.36054687500004,60.165576171875045],[22.07714843750003,60.286328124999955],[22.17509765624999,60.370751953124994]]],[[[21.450878906250068,60.529589843750045],[21.3,60.47978515625002],[21.224707031250006,60.62060546875003],[21.450878906250068,60.529589843750045]]],[[[21.2177734375,63.241308593750034],[21.415625,63.19736328125006],[21.25341796875,63.152001953124966],[21.08388671875008,63.277539062499955],[21.2177734375,63.241308593750034]]],[[[24.848242187500034,64.99101562499999],[24.576562500000023,65.04287109375],[24.970605468750023,65.05532226562502],[24.848242187500034,64.99101562499999]]],[[[28.96582031250003,69.02197265625],[28.414062500000057,68.90415039062506],[28.77285156250005,68.84003906249995],[28.470703125000057,68.48837890625],[28.685156250000034,68.189794921875],[29.343847656250006,68.06186523437506],[29.988085937500017,67.66826171874999],[29.066210937500045,66.89174804687497],[30.102734375000097,65.72626953125004],[29.715917968750063,65.62456054687502],[29.608007812500006,65.248681640625],[29.826953125000017,65.14506835937502],[29.60419921875004,64.968408203125],[30.072851562500063,64.76503906250005],[30.04189453125005,64.44335937499997],[30.513769531250006,64.2],[30.50390625000003,64.02060546875],[29.991503906250074,63.73515625000002],[31.180859375000097,63.208300781250074],[31.533984375000017,62.885400390624994],[31.18671875000004,62.48139648437504],[29.69013671875004,61.54609375000001],[27.797656250000074,60.53613281250003],[26.53466796874997,60.412890625000074],[26.56933593750003,60.62456054687502],[26.377734375000074,60.42407226562503],[25.955957031250023,60.474218750000034],[26.03583984375004,60.34150390625001],[25.75800781250004,60.26752929687504],[25.65644531250004,60.33320312499998],[24.44560546874999,60.021289062500045],[23.46357421875004,59.986230468749994],[23.021289062500074,59.81601562500006],[23.19843750000001,60.02182617187498],[22.911718750000063,60.20971679687497],[22.749804687500017,60.057275390624994],[22.462695312500045,60.029199218749966],[22.5849609375,60.380566406249955],[21.436035156250057,60.596386718749955],[21.605957031250057,61.59155273437503],[21.255957031250063,61.98964843750005],[21.143847656250045,62.73999023437506],[21.650976562500063,63.039306640625],[21.545117187499983,63.204296874999955],[22.31972656250005,63.310449218749994],[22.532324218750034,63.647851562499994],[23.598925781250074,64.04091796874997],[24.557910156250045,64.801025390625],[25.288183593750063,64.8603515625],[25.34785156250004,65.47924804687497],[24.674902343750006,65.67070312499999],[24.628027343750034,65.85917968750002],[24.15546875000004,65.80527343750006],[23.700292968750034,66.25263671874998],[23.988574218750045,66.81054687500003],[23.64150390625005,67.12939453124997],[23.733593750000068,67.42290039062499],[23.454882812500045,67.46025390625007],[23.63886718750004,67.95439453125002],[22.854101562500034,68.36733398437502],[21.99746093750005,68.52060546874998],[20.622167968750006,69.036865234375],[21.065722656250017,69.04174804687503],[21.06611328125001,69.21411132812497],[21.59375,69.273583984375],[22.410937500000074,68.719873046875],[23.324023437500017,68.64897460937502],[23.85400390625,68.80590820312503],[24.94140625000003,68.59326171875006],[25.748339843750017,68.99013671875],[26.07246093750004,69.69155273437497],[26.525390625000057,69.91503906250003],[27.127539062500063,69.90649414062497],[27.747851562500045,70.06484375],[29.14160156250003,69.67143554687505],[29.33339843750005,69.47299804687503],[28.846289062500006,69.17690429687502],[28.96582031250003,69.02197265625]]]]},"properties":{"name":"Finland","childNum":5}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[178.48789062500018,-18.97412109375],[177.95869140624998,-19.121582031250014],[178.33427734375013,-18.93447265625001],[178.48789062500018,-18.97412109375]]],[[[179.34931640625015,-18.10234375000003],[179.25351562500018,-18.030566406249974],[179.30644531250013,-17.944042968750026],[179.34931640625015,-18.10234375000003]]],[[[178.28017578124994,-17.37197265625001],[178.59160156249996,-17.651464843750006],[178.66767578125004,-18.080859375],[177.95546875000005,-18.264062500000023],[177.32138671875,-18.077539062500037],[177.26396484375007,-17.86347656250004],[177.5044921875,-17.539550781250043],[177.81796875000012,-17.38847656249999],[178.28017578124994,-17.37197265625001]]],[[[180,-16.96308593750001],[179.89697265625003,-16.96406250000004],[180,-16.785742187500034],[180,-16.96308593750001]]],[[[-179.97490234374996,-16.92480468750003],[-180,-16.96298828124999],[-180,-16.907812500000034],[-180,-16.82431640624999],[-180,-16.78554687499999],[-179.86098632812502,-16.68828124999999],[-179.97490234374996,-16.92480468750003]]],[[[-179.92944335937503,-16.502832031250037],[-179.999951171875,-16.540039062499986],[-179.900927734375,-16.431542968749994],[-179.92944335937503,-16.502832031250037]]],[[[179.99921875000004,-16.168554687499977],[179.56416015625004,-16.636914062499997],[179.56816406249996,-16.747460937499966],[179.93037109375004,-16.51943359375005],[179.9279296875001,-16.74443359374996],[179.41933593750005,-16.80654296875001],[179.20234375000004,-16.71269531249999],[179.00683593750003,-16.90019531249999],[178.70664062500018,-16.97617187500002],[178.4974609375,-16.78789062500003],[178.58359375000012,-16.621875],[178.80507812499994,-16.631445312500034],[179.55175781250003,-16.249902343750023],[180,-16.15292968749999],[179.99921875000004,-16.168554687499977]]]]},"properties":{"name":"Fiji","childNum":7}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-61.01875,-51.7857421875],[-60.87597656250003,-51.79423828125004],[-60.94755859374996,-51.94628906250002],[-61.14501953125003,-51.83945312500001],[-61.01875,-51.7857421875]]],[[[-60.28623046874995,-51.461914062500014],[-59.38759765625002,-51.35996093750003],[-59.26806640625,-51.42753906250003],[-59.92138671874997,-51.969531250000045],[-60.246337890625,-51.98642578125003],[-60.35346679687498,-52.13994140625004],[-60.686376953125034,-52.18837890624996],[-60.96142578125003,-52.05732421874999],[-60.23847656249998,-51.771972656250036],[-60.58251953125,-51.71269531250004],[-60.24516601562493,-51.638867187500004],[-60.56845703124998,-51.357812499999945],[-60.28623046874995,-51.461914062500014]]],[[[-60.11171875000002,-51.39589843749998],[-60.275341796874955,-51.28056640625002],[-60.06982421875,-51.307910156249996],[-60.11171875000002,-51.39589843749998]]],[[[-58.85019531249995,-51.26992187499998],[-58.42583007812502,-51.32421875000003],[-58.508935546874994,-51.48359375],[-58.271582031250034,-51.57470703124999],[-58.25922851562501,-51.417089843750034],[-57.976513671874955,-51.384375],[-57.80849609375002,-51.51796875],[-57.96044921874997,-51.58320312500003],[-57.79179687499999,-51.63613281249998],[-58.68349609375002,-51.93623046875001],[-58.65278320312498,-52.09921875],[-59.19584960937496,-52.01767578125],[-59.06801757812502,-52.17304687500003],[-59.341503906249955,-52.19599609375],[-59.395654296874966,-52.308007812499994],[-59.64873046875002,-52.134375],[-59.57080078124994,-51.92539062500003],[-59.05952148437498,-51.685449218749994],[-59.09663085937498,-51.49140624999998],[-58.85019531249995,-51.26992187499998]]]]},"properties":{"name":"Falkland Is.","childNum":4}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[55.79736328125003,-21.33935546875003],[55.36269531250005,-21.27363281250004],[55.23281250000005,-21.05839843749999],[55.311328125000074,-20.90410156249999],[55.661914062500074,-20.90625],[55.8390625000001,-21.13857421874998],[55.79736328125003,-21.33935546875003]]],[[[45.180273437500006,-12.97675781250004],[45.069433593750006,-12.895605468750034],[45.09238281250006,-12.653027343749997],[45.22314453124997,-12.752148437500026],[45.180273437500006,-12.97675781250004]]],[[[-51.65253906249998,4.061279296874972],[-52.327880859375,3.18173828125002],[-52.58300781250003,2.528906249999977],[-52.90346679687502,2.211523437499977],[-53.76777343749998,2.354833984375048],[-54.13007812499998,2.121044921875026],[-54.43310546875,2.207519531250057],[-54.51508789062498,2.245458984374963],[-54.55048828125001,2.293066406249991],[-54.59194335937502,2.313769531250031],[-54.61625976562499,2.326757812500006],[-54.60473632812497,2.335791015624991],[-54.56840820312502,2.342578125000031],[-54.53593749999999,2.343310546875003],[-54.48554687500001,2.416113281250006],[-54.402001953124966,2.46152343750002],[-54.25673828125002,2.713720703124977],[-54.19550781249998,2.817871093750057],[-54.17070312499999,2.993603515624969],[-54.203125,3.138183593750028],[-54.18803710937499,3.178759765625031],[-54.063183593749955,3.353320312499989],[-54.00957031249993,3.448535156250017],[-54.03422851562499,3.62939453125],[-54.350732421874994,4.054101562500023],[-54.47968749999998,4.836523437499991],[-53.91992187499997,5.768994140624983],[-52.899316406249966,5.425048828124986],[-52.29052734375003,4.942187500000031],[-52.324609374999966,4.770898437500037],[-52.21997070312494,4.862792968750014],[-52.05810546875003,4.717382812499963],[-52.00292968749997,4.352294921875014],[-51.82753906250002,4.635693359375026],[-51.65253906249998,4.061279296874972]]],[[[-60.826269531250006,14.494482421874991],[-61.063720703125,14.467089843750017],[-61.01132812499998,14.601904296875034],[-61.21333007812501,14.848583984375011],[-60.927148437499966,14.755175781249989],[-60.826269531250006,14.494482421874991]]],[[[-61.23046875000003,15.889941406250074],[-61.310742187499955,15.894677734374966],[-61.25,16.006298828124983],[-61.23046875000003,15.889941406250074]]],[[[-61.58955078125001,16.006933593750006],[-61.759423828124966,16.062060546875045],[-61.74804687499997,16.355273437500017],[-61.55234374999998,16.270898437499966],[-61.58955078125001,16.006933593750006]]],[[[-61.3271484375,16.230419921874983],[-61.522167968749955,16.22802734375003],[-61.47119140624994,16.506640625000045],[-61.17260742187497,16.25610351562497],[-61.3271484375,16.230419921874983]]],[[[9.480371093750023,42.80541992187503],[9.550683593750051,42.12973632812506],[9.186132812500034,41.38491210937502],[8.80751953125008,41.58837890625],[8.886816406249977,41.70068359375003],[8.621875,41.93071289062502],[8.700976562500045,42.09560546875002],[8.565625,42.35771484374996],[8.81484375000008,42.60791015625003],[9.313378906250023,42.71318359374999],[9.363183593750051,43.01738281249996],[9.480371093750023,42.80541992187503]]],[[[-1.17832031249992,45.904052734375],[-1.213574218750011,45.81660156250004],[-1.388671874999972,46.05039062500006],[-1.17832031249992,45.904052734375]]],[[[5.789746093749983,49.53828125000001],[5.823437500000011,49.50507812499998],[5.9013671875,49.48974609374997],[5.928906250000011,49.47753906249997],[5.959472656250028,49.45463867187502],[6.01142578125004,49.44545898437502],[6.074121093750023,49.45463867187502],[6.119921875000017,49.485205078125034],[6.181054687500051,49.498925781249966],[6.344335937500006,49.45273437499998],[6.735449218750006,49.16059570312498],[7.450585937500051,49.152197265625034],[8.134863281250006,48.97358398437498],[7.616601562500023,48.15678710937502],[7.615625,47.59272460937504],[7.343164062499994,47.43310546875003],[7.136035156249989,47.489843750000034],[6.968359375000034,47.453222656250034],[6.900390625000028,47.39423828125001],[7.000585937500034,47.339453125000034],[7.000585937500034,47.32250976562506],[6.978515625000057,47.30205078124996],[6.95205078125008,47.26718750000006],[6.820703125000051,47.163183593750006],[6.688085937500034,47.05825195312505],[6.66689453125008,47.026513671874966],[6.624804687500017,47.00434570312498],[6.45625,46.948339843750034],[6.438646763392874,46.774418247767855],[6.129687500000045,46.56699218750006],[6.118111049107182,46.447459542410726],[6.095898437500011,46.279394531250006],[5.970019531250045,46.214697265625034],[5.971484375000074,46.151220703125006],[6.006640625000045,46.14233398437506],[6.086621093750068,46.14702148437502],[6.19941406250004,46.19306640624998],[6.234667968750045,46.332617187500006],[6.321875,46.39370117187502],[6.428906250000011,46.43051757812506],[6.578222656250034,46.437353515625034],[6.758105468750017,46.41577148437497],[6.772070312500006,46.16513671874998],[6.897265625000017,46.05175781249997],[6.953710937500063,46.017138671875045],[7.00390625,45.95883789062506],[7.021093750000034,45.92578124999997],[6.790917968750023,45.740869140624966],[7.146386718750051,45.381738281249994],[7.07832031250004,45.23994140624998],[6.634765625000028,45.06816406249996],[6.99267578125,44.82729492187502],[6.900195312499989,44.33574218749996],[7.318554687500068,44.13798828125002],[7.637207031250057,44.16484375],[7.4931640625,43.767138671875045],[6.570214843750023,43.199072265625034],[6.115917968750011,43.07236328124998],[5.406542968750074,43.228515625],[5.05976562500004,43.44453125000004],[4.712109375000011,43.373291015625],[3.910839843750011,43.563085937500034],[3.258886718750063,43.193212890625006],[3.051757812500057,42.915136718750006],[3.21142578125,42.43115234375],[2.032714843750028,42.353515625],[1.927929687500068,42.42631835937499],[1.859765625000051,42.457080078125045],[1.7060546875,42.50332031250005],[1.709863281250051,42.604443359374955],[1.568164062500045,42.63500976562506],[1.501367187500023,42.64272460937502],[1.428320312499977,42.59589843749998],[0.696875,42.84511718750005],[0.631640625000045,42.689599609374994],[-0.586425781249943,42.798974609374966],[-1.300048828124943,43.10097656250002],[-1.460839843749937,43.05175781250006],[-1.410693359374932,43.240087890625034],[-1.794042968749949,43.407324218750006],[-1.484863281249943,43.56376953124999],[-1.245507812499937,44.55986328124999],[-1.07695312499996,44.68984375],[-1.152880859374989,44.764013671875006],[-1.245214843749977,44.66669921874998],[-1.081005859374983,45.532421874999955],[-0.548486328124966,45.00058593750006],[-0.790771484375028,45.46801757812497],[-1.195996093749983,45.714453125],[-1.03173828125,45.741064453125006],[-1.14628906249996,46.311376953125034],[-1.786523437499937,46.51484375000001],[-2.059375,46.81030273437497],[-2.01889648437492,47.03764648437502],[-2.197070312499989,47.16293945312506],[-2.027587890625028,47.27358398437502],[-1.742529296874949,47.21596679687502],[-1.97539062499996,47.31069335937505],[-2.503125,47.31206054687496],[-2.427685546874983,47.47089843749998],[-2.770312499999989,47.513867187499955],[-2.787207031249949,47.62553710937496],[-4.312109374999949,47.82290039062502],[-4.678808593749949,48.03950195312501],[-4.32944335937492,48.169970703125045],[-4.577148437499943,48.2900390625],[-4.241406249999926,48.30366210937501],[-4.719384765624966,48.363134765625034],[-4.7625,48.45024414062502],[-4.531201171874983,48.61997070312506],[-3.231445312499972,48.84082031250003],[-2.692333984374983,48.53681640624998],[-2.446191406249937,48.64829101562506],[-2.00371093749996,48.58208007812499],[-1.905712890624955,48.69711914062506],[-1.376464843749972,48.65258789062503],[-1.565478515624932,48.805517578125034],[-1.583105468749977,49.20239257812506],[-1.856445312499972,49.68378906249998],[-1.258642578124949,49.68017578125006],[-1.138525390624977,49.38789062500001],[-0.163476562499937,49.296777343749994],[0.41689453125008,49.448388671874994],[0.129394531250028,49.508447265624966],[0.186718749999983,49.703027343749994],[1.245507812500051,49.99824218750001],[1.5927734375,50.25219726562506],[1.672265625000023,50.885009765625],[2.52490234375,51.097119140624955],[2.759375,50.750634765624994],[3.10683593750008,50.779443359374994],[3.27333984375008,50.53154296875002],[3.595410156250068,50.47734374999999],[3.689355468750023,50.30605468750002],[4.174609375000017,50.24648437500005],[4.149316406250023,49.971582031249994],[4.545019531250063,49.96025390624999],[4.818652343750045,50.153173828125034],[4.867578125000051,49.78813476562502],[5.50732421875,49.51088867187502],[5.789746093749983,49.53828125000001]]]]},"properties":{"name":"France","childNum":10,"cp":[2.8719426,46.8222422]}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-7.186865234374949,62.139306640624966],[-7.116796874999977,62.046826171874955],[-7.379101562499926,62.07480468749998],[-7.186865234374949,62.139306640624966]]],[[[-6.631054687499955,62.22788085937498],[-6.655810546874932,62.09360351562498],[-6.840527343749983,62.119287109374994],[-6.725195312499949,61.95146484374999],[-7.17216796874996,62.28559570312501],[-6.631054687499955,62.22788085937498]]],[[[-6.406054687499932,62.258642578125034],[-6.544140624999926,62.20561523437499],[-6.554589843749994,62.35566406250001],[-6.406054687499932,62.258642578125034]]]]},"properties":{"name":"Faeroe Is.","childNum":3}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[158.31484375,6.813671875],[158.18339843750002,6.801269531250057],[158.13476562499997,6.944824218749986],[158.29462890625004,6.951074218750023],[158.31484375,6.813671875]]],[[[138.14267578125006,9.50068359375004],[138.06708984375004,9.419042968750006],[138.18583984375007,9.593310546874989],[138.14267578125006,9.50068359375004]]]]},"properties":{"name":"Micronesia","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[13.293554687500006,2.161572265624997],[13.172167968750017,1.78857421875],[13.21630859375,1.2484375],[13.851367187500017,1.41875],[14.180859375000011,1.370214843749991],[14.429882812500011,0.901464843749991],[14.32421875,0.62421875],[13.949609375000023,0.353808593749989],[13.860058593750011,-0.203320312500011],[14.47412109375,-0.573437500000011],[14.383984375000011,-1.890039062500009],[14.162890625000017,-2.217578125],[14.199804687500006,-2.354199218750011],[13.993847656250011,-2.490625],[13.886914062500011,-2.465429687500006],[13.733789062500023,-2.138476562500003],[13.464941406250006,-2.395410156250009],[12.991992187500017,-2.313378906250009],[12.793554687500006,-1.931835937500011],[12.590429687500006,-1.826855468750011],[12.43212890625,-1.928906250000011],[12.446386718750006,-2.329980468750009],[12.064453125,-2.41259765625],[11.60546875,-2.342578125],[11.537792968750011,-2.83671875],[11.760156250000023,-2.983105468750011],[11.715429687500006,-3.176953125000011],[11.934179687500006,-3.318554687500011],[11.8798828125,-3.665917968750009],[11.685742187500011,-3.68203125],[11.504296875000023,-3.5203125],[11.234472656250006,-3.690820312500009],[11.130175781250017,-3.916308593750003],[10.34765625,-3.013085937500009],[9.722070312500023,-2.467578125],[10.06201171875,-2.549902343750006],[9.624609375,-2.367089843750009],[9.298925781250006,-1.903027343750011],[9.483203125000017,-1.894628906250006],[9.265625,-1.825097656250009],[9.036328125000011,-1.308886718750003],[9.31884765625,-1.632031250000011],[9.501074218750006,-1.55517578125],[9.295800781250023,-1.515234375],[9.3466796875,-1.325],[9.203808593750011,-1.382421875],[9.064648437500011,-1.29833984375],[8.703125,-0.591015625000011],[8.946386718750006,-0.688769531250003],[9.296679687500017,-0.351269531250011],[9.354882812500023,0.343603515624991],[9.468164062500023,0.15976562499999],[9.796777343750023,0.044238281249989],[10.00146484375,0.194970703124994],[9.546484375,0.295947265624989],[9.324804687500006,0.552099609374991],[9.495312500000011,0.664843749999989],[9.617968750000017,0.576513671874991],[9.5908203125,1.031982421875],[9.636132812500023,1.046679687499989],[9.676464843750011,1.07470703125],[9.70458984375,1.079980468749994],[9.760546875000017,1.07470703125],[9.788671875,1.025683593749989],[9.803906250000011,0.998730468749997],[9.90673828125,0.960107421874994],[11.335351562500023,0.999707031249997],[11.332324218750017,1.528369140624989],[11.328710937500006,2.167431640624997],[11.348437500000017,2.299707031249994],[11.558984375000023,2.302197265624997],[13.2203125,2.256445312499991],[13.293554687500006,2.161572265624997]]]},"properties":{"name":"Gabon","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-1.065576171874966,50.69023437500002],[-1.25146484375,50.58881835937498],[-1.563427734374955,50.666113281250006],[-1.31279296874996,50.77348632812502],[-1.065576171874966,50.69023437500002]]],[[[-4.196777343749972,53.321435546874966],[-4.04936523437496,53.30576171874998],[-4.373046875,53.13417968750002],[-4.56787109375,53.386474609375],[-4.315087890625023,53.41723632812503],[-4.196777343749972,53.321435546874966]]],[[[-6.218017578125,54.08872070312506],[-6.649804687499937,54.05864257812496],[-7.007714843749937,54.40668945312501],[-7.324511718750017,54.13344726562502],[-7.606542968750006,54.14384765625002],[-8.118261718749977,54.41425781250004],[-7.75439453125,54.59492187499998],[-7.910595703124955,54.698339843750006],[-7.55039062499992,54.767968749999966],[-7.218652343749937,55.09199218749998],[-6.475048828124955,55.24101562499999],[-6.035791015624994,55.14453125000003],[-5.71684570312496,54.817480468750034],[-5.878613281249955,54.64130859375001],[-5.582519531249943,54.66342773437498],[-5.470410156249926,54.500195312499955],[-5.671093749999955,54.54975585937501],[-5.60678710937492,54.272558593750034],[-6.019042968749972,54.05126953124997],[-6.218017578125,54.08872070312506]]],[[[-5.105419921875011,55.448828125000034],[-5.331494140624955,55.481054687500034],[-5.318115234375,55.709179687499955],[-5.105419921875011,55.448828125000034]]],[[[-6.128906249999972,55.93056640625002],[-6.055322265624994,55.69531249999997],[-6.305078124999966,55.60693359375],[-6.286425781249989,55.77250976562499],[-6.491357421874994,55.697314453125045],[-6.462841796874955,55.808251953124994],[-6.128906249999972,55.93056640625002]]],[[[-5.970068359374949,55.814550781250034],[-6.071972656250011,55.893115234375045],[-5.72514648437496,56.118554687499966],[-5.970068359374949,55.814550781250034]]],[[[-5.77788085937496,56.344335937500034],[-6.313427734374983,56.29365234375001],[-6.138867187499955,56.490625],[-6.286328124999983,56.61186523437502],[-6.102734374999955,56.645654296874966],[-5.760839843749949,56.49067382812501],[-5.77788085937496,56.344335937500034]]],[[[-7.249853515624977,57.115332031250006],[-7.410546874999937,57.38110351562506],[-7.26713867187496,57.37177734375001],[-7.249853515624977,57.115332031250006]]],[[[-6.144726562499983,57.50498046874998],[-6.135546874999989,57.31425781250002],[-5.672460937499977,57.252685546875],[-5.94907226562492,57.045166015625],[-6.034375,57.20122070312499],[-6.322705078124926,57.20249023437498],[-6.761132812499994,57.4423828125],[-6.305957031249989,57.67197265624998],[-6.144726562499983,57.50498046874998]]],[[[-7.205566406250028,57.682958984375006],[-7.182617187499972,57.53330078125006],[-7.514746093749949,57.60195312500002],[-7.205566406250028,57.682958984375006]]],[[[-6.198681640624983,58.36328125000003],[-6.554589843749994,58.092871093750006],[-6.425195312499937,58.02128906249999],[-6.983105468749983,57.75],[-7.083447265624926,57.81376953124999],[-6.856835937499937,57.92353515624998],[-7.085253906249932,58.18217773437499],[-6.726464843749937,58.189404296874955],[-6.776464843750006,58.30151367187497],[-6.237451171874966,58.50283203125005],[-6.198681640624983,58.36328125000003]]],[[[-3.109667968749932,58.515478515625034],[-3.212353515624983,58.32124023437501],[-3.99003906249996,57.95903320312502],[-4.035595703124926,57.85200195312498],[-3.857128906249983,57.81855468750001],[-4.134521484375,57.57773437500006],[-3.402783203124955,57.708251953125],[-2.074072265624977,57.70239257812506],[-1.780664062499994,57.474023437499966],[-2.592675781249937,56.56157226562499],[-3.309960937499966,56.36347656250004],[-2.885156249999937,56.397509765625045],[-2.674267578124955,56.25341796875],[-3.362255859374955,56.02763671875002],[-3.789062499999972,56.09521484375],[-3.048730468749937,55.951953125000045],[-2.599316406249955,56.02729492187501],[-2.14707031249992,55.90297851562502],[-1.655371093749949,55.57036132812502],[-1.232421874999943,54.703710937500034],[-0.084375,54.118066406249994],[-0.20556640625,54.021728515625],[0.115332031250006,53.609277343749994],[-0.270019531249972,53.73676757812504],[-0.659912109375,53.72402343750002],[-0.293701171875,53.69233398437504],[0.270996093750028,53.33549804687499],[0.355761718750045,53.15996093750002],[0.0458984375,52.90561523437498],[0.279785156250028,52.80869140625006],[0.55878906250004,52.96694335937505],[1.05556640625008,52.95898437500003],[1.656738281249972,52.753710937500045],[1.74658203125,52.46899414062503],[1.59140625,52.11977539062502],[1.232421875000057,51.97124023437496],[1.188476562500057,51.803369140624966],[0.752246093750017,51.729589843750034],[0.890917968750017,51.571435546874966],[0.42451171875004,51.465625],[1.414941406250023,51.36328125],[1.397558593750034,51.18203125000002],[0.960156250000011,50.92587890624998],[0.299707031249994,50.775976562500006],[-0.785253906249949,50.76542968749999],[-1.416455078124955,50.896875],[-1.334472656249943,50.82080078124997],[-1.516748046874937,50.747460937499966],[-2.031054687499932,50.72539062499999],[-2.035839843749926,50.603076171875045],[-2.999414062499937,50.71660156249999],[-3.40458984374996,50.63242187499998],[-3.679785156250006,50.239941406249955],[-4.194580078124972,50.39331054687503],[-4.727978515624926,50.29047851562504],[-5.11850585937492,50.038330078125],[-5.622119140624932,50.05068359375002],[-4.188183593749926,51.18852539062502],[-3.135986328124972,51.20502929687501],[-2.433056640624926,51.74072265625],[-3.293115234374994,51.390429687500045],[-3.890771484374994,51.591650390625006],[-4.234570312499955,51.56909179687503],[-4.091015624999926,51.65991210937506],[-4.38627929687496,51.74106445312506],[-4.902294921874926,51.626269531250045],[-5.168359374999937,51.74072265625],[-5.183349609374972,51.94965820312501],[-4.217724609374983,52.277441406250006],[-3.980322265624949,52.54174804687503],[-4.101464843750023,52.915478515624955],[-4.683056640624926,52.80615234374997],[-4.268554687499943,53.14453125],[-3.427734374999972,53.34067382812498],[-3.097558593749937,53.260302734375045],[-3.064746093749932,53.426855468750034],[-2.74951171875,53.310205078124994],[-3.064599609374994,53.512841796874966],[-2.84648437499996,54.135302734375045],[-3.165966796874955,54.12792968750006],[-3.56938476562496,54.46757812499996],[-3.464599609374943,54.77309570312505],[-3.036230468749977,54.95307617187501],[-3.550439453124937,54.94741210937502],[-3.957910156249994,54.780957031249955],[-4.818066406249983,54.84614257812501],[-4.911230468749949,54.68945312500006],[-5.032324218749949,54.76137695312505],[-5.172705078124949,54.98588867187496],[-4.676757812499972,55.50131835937498],[-4.871679687499977,55.87392578125005],[-4.58408203124992,55.93867187500001],[-4.844091796874949,56.05117187499999],[-4.80029296875,56.158349609374994],[-5.228222656249983,55.886328125],[-5.084326171874977,56.197460937499955],[-5.41044921874996,55.995361328125],[-5.55644531249996,55.389599609374955],[-5.730664062499926,55.33413085937502],[-5.504492187499949,55.80239257812502],[-5.609570312499955,56.055273437500034],[-5.188378906249937,56.75805664062503],[-5.652441406249977,56.531982421875],[-6.133691406249966,56.706689453124966],[-5.730615234374994,56.853076171875045],[-5.86142578124992,56.902685546875006],[-5.561914062499994,57.23271484375002],[-5.794921874999972,57.37880859375002],[-5.581787109374972,57.546777343749966],[-5.744921874999989,57.668310546875034],[-5.608349609374955,57.88134765625],[-5.157226562499972,57.88134765625],[-5.413183593750006,58.06972656250002],[-5.338281250000023,58.23872070312498],[-5.008300781250028,58.262646484374955],[-5.016748046874966,58.566552734374966],[-4.433251953124937,58.51284179687505],[-3.25913085937492,58.65],[-3.053076171874949,58.63481445312502],[-3.109667968749932,58.515478515625034]]],[[[-3.057421874999932,59.02963867187498],[-2.793017578124989,58.906933593749955],[-3.331640624999949,58.97124023437499],[-3.31035156249996,59.13081054687498],[-3.057421874999932,59.02963867187498]]],[[[-1.30810546875,60.5375],[-1.052441406249955,60.44448242187502],[-1.299462890624994,59.87866210937503],[-1.290917968749937,60.153466796874966],[-1.663769531249983,60.282519531250074],[-1.374609374999949,60.33291015625002],[-1.571777343749972,60.494433593750074],[-1.363964843750011,60.60957031249998],[-1.30810546875,60.5375]]]]},"properties":{"name":"United Kingdom","childNum":14,"cp":[-2.5830348,54.4598409]}},{"geometry":{"type":"Polygon","coordinates":[[[46.30546875000002,41.507714843749994],[46.61894531250002,41.34375],[46.67255859375001,41.28681640625],[46.66240234375002,41.245507812499994],[46.62636718750002,41.15966796875],[46.534375,41.08857421875],[46.43095703125002,41.077050781249994],[46.086523437500006,41.183837890625],[45.28095703125001,41.449560546875],[45.21718750000002,41.423193359375],[45.00136718750002,41.290966796875],[44.97587890625002,41.277490234374994],[44.81132812500002,41.259375],[44.077246093750006,41.182519531249994],[43.43339843750002,41.155517578125],[43.20546875000002,41.199169921875],[43.15283203125,41.23642578125],[43.14101562500002,41.26484375],[43.17128906250002,41.287939453125],[43.149023437500006,41.30712890625],[43.05712890625,41.352832031249996],[42.90673828125,41.466845703124996],[42.82167968750002,41.4923828125],[42.78789062500002,41.563720703125],[42.75410156250001,41.57890625],[42.68242187500002,41.585742187499996],[42.60683593750002,41.57880859375],[42.590429687500006,41.57070312499999],[42.5673828125,41.55927734375],[42.46640625,41.43984375],[41.92578125,41.495654296874996],[41.82353515625002,41.432373046875],[41.779394531250006,41.44052734375],[41.701757812500006,41.471582031249994],[41.57656250000002,41.497314453125],[41.51005859375002,41.517480468749994],[41.701757812500006,41.705419921875],[41.76298828125002,41.970019531249996],[41.48876953125,42.659326171874994],[40.83662109375001,43.0634765625],[40.46210937500001,43.145703125],[39.97832031250002,43.419824218749994],[40.02373046875002,43.48486328125],[40.084570312500006,43.553125],[40.648046875,43.53388671875],[40.941992187500006,43.41806640625],[41.083105468750006,43.374462890625],[41.35820312500002,43.333398437499994],[41.46074218750002,43.276318359375],[41.58056640625,43.21923828125],[42.76064453125002,43.169580078124994],[42.99160156250002,43.09150390625],[43.00019531250001,43.049658203125],[43.08916015625002,42.9890625],[43.55781250000001,42.844482421875],[43.623046875,42.80771484375],[43.78261718750002,42.747021484375],[43.79873046875002,42.727783203125],[43.79541015625,42.702978515625],[43.74990234375002,42.657519531249996],[43.738378906250006,42.616992187499996],[43.759863281250006,42.59384765625],[43.82597656250002,42.571533203125],[43.95742187500002,42.566552734374994],[44.00468750000002,42.595605468749994],[44.10273437500001,42.616357421874994],[44.32949218750002,42.70351562499999],[44.505859375,42.7486328125],[44.77109375,42.616796875],[44.85048828125002,42.746826171875],[44.87099609375002,42.756396484374996],[44.943359375,42.730273437499996],[45.07158203125002,42.694140625],[45.160253906250006,42.675],[45.34375,42.52978515625],[45.56289062500002,42.5357421875],[45.70527343750001,42.498095703124996],[45.7275390625,42.475048828125],[45.63427734375,42.234716796875],[45.63857421875002,42.205078125],[46.21269531250002,41.989892578124994],[46.42988281250001,41.890966796875],[46.18427734375001,41.7021484375],[46.30546875000002,41.507714843749994]]]},"properties":{"name":"Georgia","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-0.068603515625,11.115625],[0.009423828125023,11.02099609375],[-0.08632812499999,10.673046875],[0.380859375,10.291845703124991],[0.264550781250023,9.644726562499997],[0.342578125000017,9.604150390624994],[0.2333984375,9.463525390624994],[0.525683593750017,9.398486328124989],[0.48876953125,8.851464843749994],[0.37255859375,8.75927734375],[0.686328125000017,8.354882812499994],[0.5,7.546875],[0.634765625,7.353662109374994],[0.525585937500011,6.850927734374991],[0.736914062500006,6.452587890624997],[1.187207031250011,6.089404296874989],[0.94970703125,5.810253906249997],[0.259667968750023,5.75732421875],[-2.001855468749994,4.762451171875],[-3.114013671875,5.088671874999989],[-2.815673828125,5.153027343749997],[-2.754980468749977,5.432519531249994],[-2.793652343749983,5.60009765625],[-2.998291015625,5.71132812499999],[-3.227148437499977,6.749121093749991],[-2.959082031249977,7.454541015624997],[-2.789746093749983,7.931933593749989],[-2.668847656249994,8.022216796875],[-2.613378906249977,8.046679687499989],[-2.600976562499994,8.082226562499997],[-2.619970703124977,8.12109375],[-2.61171875,8.147558593749991],[-2.538281249999983,8.171630859375],[-2.505859375,8.208740234375],[-2.600390624999989,8.800439453124994],[-2.649218749999989,8.956591796874989],[-2.689892578124983,9.025097656249997],[-2.746923828124977,9.045117187499997],[-2.705761718749983,9.351367187499989],[-2.695849609374989,9.481347656249994],[-2.706201171874994,9.533935546875],[-2.765966796874977,9.658056640624991],[-2.780517578125,9.745849609375],[-2.791162109374994,10.432421874999989],[-2.914892578124977,10.592333984374989],[-2.829931640624977,10.998388671874991],[-1.04248046875,11.010058593749989],[-0.627148437499983,10.927392578124994],[-0.299462890624994,11.166894531249994],[-0.068603515625,11.115625]]]},"properties":{"name":"Ghana","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-11.389404296875,12.404394531249991],[-11.502197265625,12.198632812499994],[-11.30517578125,12.015429687499989],[-10.933203124999977,12.205175781249991],[-10.709228515625,11.898730468749989],[-10.274853515624983,12.212646484375],[-9.754003906249977,12.029931640624994],[-9.358105468749983,12.255419921874989],[-9.395361328124977,12.464648437499989],[-9.043066406249977,12.40234375],[-8.818310546874983,11.922509765624994],[-8.822021484375,11.673242187499994],[-8.398535156249977,11.366552734374991],[-8.666699218749983,11.009472656249997],[-8.33740234375,10.990625],[-8.266650390624989,10.485986328124994],[-8.007275390624983,10.321875],[-7.990625,10.1625],[-8.155175781249994,9.973193359374989],[-8.136962890625,9.49570312499999],[-7.896191406249983,9.415869140624991],[-7.918066406249977,9.188525390624989],[-7.839404296874989,9.151611328125],[-7.7998046875,9.115039062499989],[-7.777978515624994,9.080859374999989],[-7.902099609375,9.01708984375],[-7.938183593749983,8.979785156249989],[-7.950976562499989,8.786816406249997],[-7.719580078124977,8.643017578124997],[-7.696093749999989,8.375585937499991],[-7.823583984374977,8.467675781249994],[-7.953125,8.477734375],[-8.236962890624994,8.455664062499991],[-8.244140625,8.407910156249997],[-8.256103515625,8.253710937499989],[-8.217138671874977,8.219677734374997],[-8.140625,8.181445312499989],[-8.048583984375,8.169726562499989],[-8.009863281249977,8.07851562499999],[-8.126855468749994,7.867724609374989],[-8.115429687499983,7.7607421875],[-8.205957031249994,7.59023437499999],[-8.231884765624983,7.556738281249991],[-8.429980468749989,7.601855468749989],[-8.486425781249977,7.558496093749994],[-8.659765624999977,7.688378906249994],[-8.8896484375,7.2626953125],[-9.11757812499999,7.215917968749991],[-9.463818359374983,7.415869140624991],[-9.369140625,7.703808593749997],[-9.518261718749983,8.34609375],[-9.781982421875,8.537695312499991],[-10.064355468749994,8.429882812499997],[-10.147412109374983,8.519726562499997],[-10.233056640624994,8.488818359374989],[-10.283203125,8.485156249999989],[-10.360058593749983,8.495507812499994],[-10.394433593749994,8.48095703125],[-10.496435546874977,8.362109374999989],[-10.557714843749977,8.315673828125],[-10.686962890624983,8.321679687499994],[-10.712109374999983,8.335253906249989],[-10.677343749999977,8.400585937499997],[-10.500537109374989,8.687548828124989],[-10.615966796875,9.059179687499991],[-10.726855468749989,9.081689453124994],[-10.747021484374983,9.095263671874989],[-10.749951171874983,9.122363281249989],[-10.687646484374994,9.261132812499994],[-10.682714843749977,9.289355468749989],[-10.758593749999989,9.385351562499991],[-11.047460937499977,9.786328125],[-11.180859374999983,9.925341796874989],[-11.205664062499977,9.977734375],[-11.273632812499983,9.996533203124997],[-11.911083984374983,9.993017578124991],[-12.142333984375,9.87539062499999],[-12.427978515625,9.898144531249997],[-12.557861328125,9.704980468749994],[-12.755859375,9.373583984374989],[-12.958789062499989,9.263330078124994],[-13.077294921874994,9.069628906249989],[-13.292675781249983,9.04921875],[-13.436279296875,9.4203125],[-13.691357421874983,9.535791015624994],[-13.689794921874977,9.927783203124989],[-13.820117187499989,9.88720703125],[-14.045019531249977,10.141259765624994],[-14.426904296874994,10.248339843749989],[-14.609570312499983,10.549853515624989],[-14.593505859375,10.766699218749991],[-14.677343749999977,10.68896484375],[-14.775927734374989,10.931640625],[-14.88671875,10.968066406249989],[-14.975,10.803417968749997],[-15.051220703124983,10.834570312499991],[-15.043017578124989,10.940136718749997],[-14.9990234375,10.9921875],[-14.944433593749977,11.072167968749994],[-14.779296875,11.405517578125],[-14.720263671874989,11.48193359375],[-14.682958984374977,11.508496093749997],[-14.604785156249989,11.511621093749994],[-14.452441406249989,11.556201171874989],[-14.327832031249983,11.629785156249994],[-14.265576171874983,11.659912109375],[-14.122314453125,11.65195312499999],[-13.953222656249977,11.664599609374989],[-13.732763671874977,11.736035156249997],[-13.730664062499983,11.959863281249994],[-13.737988281249983,12.009667968749994],[-13.816308593749994,12.054492187499989],[-13.948876953124994,12.178173828124997],[-13.8875,12.246875],[-13.759765625,12.262353515624994],[-13.673535156249983,12.478515625],[-13.732617187499983,12.592822265624989],[-13.729248046875,12.673925781249991],[-13.082910156249994,12.633544921875],[-13.061279296875,12.489990234375],[-12.930712890624989,12.532275390624989],[-12.399072265624994,12.340087890625],[-11.389404296875,12.404394531249991]]]},"properties":{"name":"Guinea","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-16.763330078124994,13.064160156249997],[-16.824804687499977,13.341064453125],[-16.669335937499994,13.475],[-16.41337890624999,13.269726562499997],[-15.427490234375,13.46835937499999],[-16.135449218749983,13.4482421875],[-16.351806640625,13.34335937499999],[-16.56230468749999,13.587304687499994],[-15.509667968749994,13.586230468750003],[-15.426855468749977,13.727001953124997],[-15.108349609374983,13.81210937499999],[-14.405468749999983,13.503710937500003],[-13.977392578124977,13.54345703125],[-13.826708984374989,13.4078125],[-14.246777343749983,13.23583984375],[-15.151123046875,13.556494140624991],[-15.286230468749977,13.39599609375],[-15.814404296874983,13.325146484374997],[-15.834277343749989,13.156445312499997],[-16.648779296874977,13.154150390624991],[-16.763330078124994,13.064160156249997]]]},"properties":{"name":"Gambia","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-15.895898437499966,11.082470703124969],[-15.963964843749977,11.05898437499998],[-15.937695312499955,11.192773437499966],[-15.895898437499966,11.082470703124969]]],[[[-16.11450195312503,11.059423828124977],[-16.236425781249977,11.113427734374966],[-16.06733398437501,11.197216796874983],[-16.11450195312503,11.059423828124977]]],[[[-15.901806640624926,11.4658203125],[-16.02319335937497,11.477148437499991],[-15.964550781249926,11.59829101562498],[-15.901806640624926,11.4658203125]]],[[[-15.986425781249949,11.882031249999969],[-16.038330078124943,11.759716796875011],[-16.15244140624992,11.876806640624963],[-15.986425781249949,11.882031249999969]]],[[[-13.759765625,12.262353515624994],[-13.8875,12.246875],[-13.948876953124966,12.178173828124997],[-13.737988281250011,12.009667968750037],[-13.730664062499926,11.959863281250009],[-13.73276367187492,11.736035156249983],[-13.953222656249977,11.664599609374989],[-14.265576171874926,11.659912109375014],[-14.327832031250011,11.629785156250009],[-14.452441406249989,11.556201171875017],[-14.604785156249932,11.511621093749994],[-14.682958984374949,11.508496093749983],[-14.720263671875017,11.481933593749986],[-14.779296874999972,11.405517578125057],[-14.944433593749949,11.072167968749994],[-14.999023437499972,10.992187500000043],[-15.04301757812496,10.940136718750011],[-15.09375,11.011035156249974],[-15.054589843749994,11.141943359375006],[-15.222119140624926,11.030908203125037],[-15.216699218749994,11.15625],[-15.39311523437496,11.217236328124983],[-15.354687499999955,11.396337890624963],[-15.479492187499972,11.410302734374966],[-15.072656249999937,11.597802734374966],[-15.230371093750023,11.686767578124972],[-15.412988281249994,11.615234374999972],[-15.501904296875011,11.723779296874966],[-15.467187499999937,11.842822265624974],[-15.078271484374937,11.968994140625014],[-15.941748046875006,11.786621093749986],[-15.92021484374996,11.93779296874996],[-16.138427734375,11.917285156250045],[-16.32807617187501,12.051611328124963],[-16.244580078124955,12.237109375],[-16.43681640624996,12.204150390625045],[-16.711816406249937,12.354833984375006],[-16.656933593749955,12.364355468749991],[-16.52133789062495,12.348632812499986],[-16.41630859374996,12.367675781250057],[-16.24150390624996,12.443310546875011],[-16.144189453124937,12.457421875000037],[-15.839550781249955,12.437890624999966],[-15.57480468749992,12.490380859375009],[-15.19609375,12.679931640624986],[-14.3492187499999,12.67641601562498],[-14.064843749999966,12.675292968750014],[-13.729248046875,12.673925781250006],[-13.732617187499983,12.592822265625003],[-13.673535156249926,12.478515624999986],[-13.759765625,12.262353515624994]]]]},"properties":{"name":"Guinea-Bissau","childNum":5}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[11.332324218750017,1.528369140624989],[11.335351562500023,0.999707031250011],[9.906738281250028,0.960107421875037],[9.80390625000004,0.998730468749997],[9.788671875000034,1.025683593749974],[9.760546874999989,1.074707031250014],[9.704589843750057,1.079980468750023],[9.676464843750011,1.074707031250014],[9.636132812500051,1.046679687499989],[9.590820312500057,1.031982421875014],[9.599414062500045,1.054443359374972],[9.509863281250006,1.114794921875017],[9.385937500000068,1.13925781250002],[9.807031250000051,1.927490234375028],[9.77968750000008,2.068212890625006],[9.800781250000028,2.304443359375],[9.826171875000057,2.297802734374969],[9.8369140625,2.242382812500054],[9.870117187500028,2.21328125],[9.979882812499994,2.167773437500045],[10.790917968750023,2.167578125],[11.096582031250051,2.167480468749986],[11.328710937500006,2.167431640624969],[11.332324218750017,1.528369140624989]]],[[[8.735742187500023,3.758300781249972],[8.910058593750023,3.758203125000051],[8.946093750000074,3.627539062499977],[8.704003906250051,3.223632812500028],[8.474902343749989,3.264648437500043],[8.464648437500045,3.450585937499994],[8.735742187500023,3.758300781249972]]]]},"properties":{"name":"Eq. Guinea","childNum":2}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[23.852246093749983,35.53544921874999],[24.166015625000057,35.59521484375],[24.108984374999977,35.49580078124998],[24.35400390625,35.359472656250034],[25.73017578125004,35.34858398437501],[25.791308593750074,35.122851562500045],[26.32021484375008,35.315136718749955],[26.165625,35.018603515625045],[24.79980468750003,34.93447265625002],[24.70888671875008,35.08906250000001],[24.463671875000045,35.160351562499955],[23.59277343749997,35.257226562499966],[23.56982421875,35.534765625000034],[23.67265624999999,35.51391601562506],[23.736914062500034,35.65551757812503],[23.852246093749983,35.53544921874999]]],[[[27.17607421874999,35.46528320312498],[27.070703125000023,35.59775390624998],[27.22314453125,35.820458984374966],[27.17607421874999,35.46528320312498]]],[[[23.053808593750034,36.18979492187498],[22.91083984375004,36.220996093750045],[22.950488281250045,36.38393554687502],[23.053808593750034,36.18979492187498]]],[[[27.84277343750003,35.929296875000034],[27.71552734375004,35.95732421874996],[27.71630859375003,36.17158203125001],[28.23183593750005,36.43364257812502],[28.087792968750023,36.06533203125002],[27.84277343750003,35.929296875000034]]],[[[25.48242187500003,36.39262695312502],[25.37050781250005,36.35893554687499],[25.408984375000074,36.473730468750006],[25.48242187500003,36.39262695312502]]],[[[26.46064453125001,36.58540039062501],[26.270019531250057,36.54692382812499],[26.370019531250023,36.63857421875002],[26.46064453125001,36.58540039062501]]],[[[26.94960937500005,36.72709960937502],[27.214941406250006,36.89863281249998],[27.352148437499977,36.86889648437506],[26.94960937500005,36.72709960937502]]],[[[25.859375,36.79042968750005],[25.74316406250003,36.78974609374998],[26.06445312500003,36.90273437500002],[25.859375,36.79042968750005]]],[[[27.01972656250004,36.95903320312502],[26.91992187500003,36.94521484375005],[26.88867187499997,37.087255859375034],[27.01972656250004,36.95903320312502]]],[[[25.278906250000034,37.06840820312502],[25.105468750000057,37.034960937500045],[25.235058593750068,37.148535156250006],[25.278906250000034,37.06840820312502]]],[[[25.54589843749997,36.96757812499999],[25.45673828125001,36.9296875],[25.361914062500063,37.07041015624998],[25.52529296875005,37.19638671875006],[25.54589843749997,36.96757812499999]]],[[[24.523535156250063,37.125097656250006],[24.42480468750003,37.131982421874994],[24.48378906250005,37.21020507812503],[24.523535156250063,37.125097656250006]]],[[[25.402734375000023,37.419140624999955],[25.312695312500068,37.48930664062496],[25.462988281250063,37.47109375],[25.402734375000023,37.419140624999955]]],[[[26.029296875000057,37.529394531250034],[26.086328125000023,37.63491210937505],[26.351367187500017,37.67431640625],[26.029296875000057,37.529394531250034]]],[[[25.255859375000057,37.59960937500006],[25.156347656250034,37.54506835937505],[24.99648437500005,37.676904296874994],[25.255859375000057,37.59960937500006]]],[[[24.35595703125003,37.57685546875004],[24.28896484375005,37.52827148437498],[24.37910156250004,37.682714843750006],[24.35595703125003,37.57685546875004]]],[[[26.82441406250004,37.81142578125005],[27.05507812500005,37.70927734375002],[26.84492187500004,37.64472656250001],[26.58105468750003,37.723730468750034],[26.82441406250004,37.81142578125005]]],[[[20.888476562500074,37.805371093749955],[20.993945312500074,37.70800781250003],[20.81855468750004,37.66474609375001],[20.61953125000008,37.855029296875045],[20.691503906250006,37.929541015625034],[20.888476562500074,37.805371093749955]]],[[[24.991699218750057,37.75961914062506],[24.962207031250074,37.69238281250003],[24.7001953125,37.961669921875],[24.956347656250045,37.90478515625006],[24.991699218750057,37.75961914062506]]],[[[20.61230468750003,38.38334960937502],[20.761328125,38.07055664062497],[20.523535156250063,38.106640624999955],[20.4521484375,38.23417968750002],[20.35253906250003,38.179882812499955],[20.563183593750068,38.474951171875034],[20.61230468750003,38.38334960937502]]],[[[26.094042968750017,38.21806640625002],[25.891894531250045,38.243310546874994],[25.991406250000068,38.353515625],[25.846093750000023,38.57402343749996],[26.16035156250001,38.54072265625001],[26.094042968750017,38.21806640625002]]],[[[20.68671875000001,38.60869140625002],[20.5546875,38.58256835937502],[20.69414062499999,38.84423828125003],[20.68671875000001,38.60869140625002]]],[[[24.67470703125005,38.80922851562502],[24.54101562499997,38.788671875],[24.485644531250074,38.980273437500045],[24.67470703125005,38.80922851562502]]],[[[23.41542968750008,38.958642578124994],[23.525,38.8134765625],[24.127539062500034,38.648486328125045],[24.27578125000005,38.22001953124996],[24.58837890625003,38.12397460937504],[24.53652343750005,37.97973632812506],[24.212011718750006,38.11752929687506],[24.040136718750006,38.389990234375034],[23.65078125000008,38.44306640625001],[23.25214843750004,38.80122070312498],[22.870312500000068,38.870507812499966],[23.258203125000023,39.03134765625006],[23.41542968750008,38.958642578124994]]],[[[26.41015625000003,39.329443359375034],[26.59560546875005,39.04882812499997],[26.488671875000023,39.074804687500034],[26.46875,38.97280273437502],[26.10791015625,39.08105468749997],[26.273144531249983,39.19755859374999],[26.072363281250034,39.095605468749994],[25.84414062500008,39.20004882812506],[26.16542968750008,39.37353515625006],[26.41015625000003,39.329443359375034]]],[[[20.077929687500045,39.432714843750034],[19.883984375000068,39.461523437500034],[19.646484375,39.76708984375003],[19.926074218750017,39.773730468750045],[19.8466796875,39.66811523437502],[20.077929687500045,39.432714843750034]]],[[[25.43769531250004,39.98330078125002],[25.357031250000063,39.80810546875003],[25.24941406250005,39.89414062500006],[25.06220703125004,39.852392578125006],[25.05800781250005,39.999658203124966],[25.43769531250004,39.98330078125002]]],[[[24.774218750000074,40.615185546874955],[24.515527343750023,40.64702148437496],[24.623339843750045,40.79291992187501],[24.774218750000074,40.615185546874955]]],[[[26.03896484375008,40.726757812499955],[25.10449218750003,40.994726562500006],[24.792968750000057,40.857519531250034],[24.47705078125,40.94775390625003],[24.082324218750074,40.72407226562504],[23.762792968750063,40.74780273437497],[23.866796875000034,40.41855468750006],[24.21279296875008,40.32778320312502],[24.343359375000034,40.14770507812503],[23.913183593750063,40.35878906250005],[23.72792968750008,40.329736328124994],[23.96748046875001,40.11455078125002],[23.947070312500045,39.96557617187506],[23.66455078125003,40.22382812499998],[23.42626953125,40.26396484374999],[23.62734375,39.92407226562503],[22.896484375000057,40.39990234374997],[22.92226562500008,40.59086914062499],[22.629492187500034,40.49555664062501],[22.59218750000005,40.03691406250002],[23.327734374999977,39.174902343750006],[23.15468750000008,39.10146484375005],[23.16171875,39.25776367187501],[22.92138671874997,39.30634765625004],[22.886035156250074,39.16997070312496],[23.066699218750017,39.03793945312498],[22.569140625000074,38.86748046874999],[23.25292968750003,38.66123046875006],[23.68398437500008,38.35244140625002],[23.96699218750001,38.275],[24.024511718750006,38.139794921874966],[24.01972656250001,37.67773437499997],[23.50175781249999,38.03486328124998],[23.03632812500004,37.87836914062501],[23.48925781250003,37.440185546875],[23.16152343750005,37.333837890625006],[22.725390625000017,37.542138671874966],[23.16015625000003,36.448095703125034],[22.717187500000023,36.79394531250006],[22.42773437500003,36.47578124999998],[22.08046875000008,37.028955078124966],[21.95556640625003,36.990087890625034],[21.892382812500045,36.73730468749997],[21.58291015625005,37.080957031249994],[21.678906250000068,37.38720703125003],[21.124707031250068,37.89160156250003],[21.40371093750005,38.19667968750002],[21.658398437500068,38.17509765624996],[21.82470703125003,38.328125],[22.846386718750068,37.96757812499996],[23.18349609375008,38.133691406249966],[22.421679687500045,38.43852539062499],[22.319921875,38.35683593750005],[21.96533203124997,38.412451171875006],[21.47255859375005,38.321386718750006],[21.3310546875,38.48730468749997],[21.303320312500034,38.373925781249966],[21.113183593750023,38.38466796875002],[20.768554687500057,38.874414062499966],[21.111621093750045,38.89628906249999],[21.11835937500001,39.029980468749955],[20.71337890625,39.03515625000003],[20.300781250000057,39.32709960937501],[20.19140625,39.545800781249966],[20.099414062500074,39.641259765624966],[20.001269531250074,39.70942382812501],[20.022558593750063,39.710693359375],[20.059765624999983,39.69912109375002],[20.13105468750004,39.66162109375003],[20.206835937500017,39.65351562499998],[20.382421875,39.802636718749994],[20.381640625000017,39.84179687500006],[20.311328125000074,39.95078125000006],[20.311132812500034,39.97944335937504],[20.338476562500006,39.991064453125006],[20.38369140625008,40.0171875],[20.408007812500074,40.049462890624994],[20.4560546875,40.065576171874994],[20.657421875000068,40.11738281249998],[20.881640625000017,40.467919921874994],[21.030859375000034,40.62246093750002],[20.95576171875001,40.775292968749994],[20.96425781250005,40.84990234374999],[21.575781250000034,40.86894531249996],[21.627539062500006,40.896337890625034],[21.77949218750004,40.95043945312506],[21.99335937500001,41.13095703125006],[22.18447265625005,41.15864257812501],[22.49355468750005,41.118505859375006],[22.603613281249977,41.14018554687499],[22.724804687500068,41.17851562499999],[22.78388671875004,41.33198242187498],[23.155957031250068,41.32207031249999],[23.239843750000034,41.38496093750001],[23.372070312500057,41.3896484375],[23.433398437500017,41.39873046874999],[23.53583984375001,41.38603515624999],[23.63515625000008,41.386767578125045],[24.011328124999977,41.460058593750034],[24.03291015625004,41.469091796875034],[24.05605468750005,41.527246093749966],[24.38671875,41.523535156250006],[24.487890625,41.55522460937499],[24.518261718750068,41.55253906249996],[24.773730468750045,41.356103515624994],[24.99355468750008,41.36499023437503],[25.133398437500063,41.31577148437506],[25.251171875000068,41.243554687499994],[25.923339843750057,41.311914062499966],[26.066406250000057,41.35068359375006],[26.135351562499977,41.3857421875],[26.155175781250023,41.43486328124999],[26.143554687500057,41.52153320312496],[26.085546875000063,41.704150390625045],[26.10742187499997,41.72568359374998],[26.20058593750005,41.74379882812502],[26.320898437500034,41.716552734375],[26.581347656250074,41.60126953125004],[26.62490234375008,41.401757812499994],[26.330664062499977,41.23876953125],[26.331054687500057,40.954492187499994],[26.03896484375008,40.726757812499955]]]]},"properties":{"name":"Greece","childNum":29}},{"geometry":{"type":"Polygon","coordinates":[[[-61.71552734375,12.012646484374997],[-61.714990234374994,12.18515625],[-61.60703125,12.223291015624994],[-61.71552734375,12.012646484374997]]]},"properties":{"name":"Grenada","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-46.266699218750006,60.781396484374994],[-46.381542968749955,60.66030273437502],[-46.7880859375,60.758398437500034],[-46.205224609374994,60.943505859374994],[-46.266699218750006,60.781396484374994]]],[[[-37.03125,65.53198242187497],[-37.23842773437494,65.60986328125003],[-37.047509765624966,65.722265625],[-37.03125,65.53198242187497]]],[[[-51.01367187499994,69.55249023437497],[-51.202050781249966,69.525],[-51.33886718749994,69.73203125000006],[-51.094580078125006,69.92416992187503],[-50.67900390624999,69.84853515625],[-51.01367187499994,69.55249023437497]]],[[[-52.73115234375001,69.94472656250005],[-52.0453125,69.8072265625],[-51.90019531249999,69.60478515625007],[-53.57841796874996,69.25664062500002],[-54.18271484374995,69.40351562500001],[-53.65830078124998,69.46513671875005],[-53.825,69.54033203124999],[-54.91914062499998,69.71362304687503],[-54.78789062499996,69.94985351562502],[-54.322607421875034,69.94189453125],[-54.83076171875001,70.13295898437502],[-54.37163085937499,70.31728515625],[-53.296728515625034,70.20537109375002],[-52.73115234375001,69.94472656250005]]],[[[-51.67514648437498,70.855224609375],[-52.11938476562497,70.87065429687502],[-52.10673828124999,70.96801757812497],[-51.67514648437498,70.855224609375]]],[[[-25.43232421875001,70.92133789062495],[-25.402246093749994,70.65268554687503],[-26.217871093749977,70.45405273437498],[-26.604687499999926,70.55336914062497],[-28.03525390624995,70.48681640625],[-27.61723632812496,70.91376953125001],[-26.621777343749955,70.87563476562497],[-25.81889648437499,71.04365234375001],[-25.43232421875001,70.92133789062495]]],[[[-53.53520507812493,71.04082031250005],[-53.9578125,71.12773437499999],[-53.58447265625003,71.29707031249995],[-53.53520507812493,71.04082031250005]]],[[[-55.01689453124999,72.79111328125003],[-55.56660156249998,72.56435546875002],[-56.214794921874955,72.71918945312495],[-55.01689453124999,72.79111328125003]]],[[[-18.000537109374932,75.40732421875003],[-17.391992187499937,75.03691406250007],[-18.670800781249966,75.00166015624998],[-18.856054687499977,75.31914062500002],[-18.000537109374932,75.40732421875003]]],[[[-18.58261718749995,76.042333984375],[-19.085351562499966,76.43037109375001],[-18.882470703124937,76.70380859375001],[-18.58261718749995,76.042333984375]]],[[[-71.667333984375,77.32529296874998],[-72.48955078124999,77.43164062499997],[-71.43344726562495,77.394384765625],[-71.667333984375,77.32529296874998]]],[[[-17.6125,79.82587890624995],[-18.662011718749966,79.72001953125005],[-19.13828125,79.85234375000002],[-17.98291015625,80.05517578125003],[-17.471386718749955,80.02871093749997],[-17.6125,79.82587890624995]]],[[[-44.86455078124999,82.08364257812502],[-46.75190429687501,82.34819335937502],[-47.27226562499996,82.65693359375001],[-46.399169921875,82.692138671875],[-44.91748046875003,82.48051757812505],[-44.86455078124999,82.08364257812502]]],[[[-29.952880859375,83.56484374999997],[-25.795068359374994,83.26098632812497],[-31.99267578125,83.0853515625],[-32.03271484374997,82.98344726562502],[-25.12338867187495,83.15961914062501],[-24.47031249999995,82.87739257812498],[-21.582519531249943,82.6341796875],[-23.118066406249966,82.32470703125003],[-29.57939453124996,82.16118164062502],[-29.887402343749983,82.05483398437502],[-29.543847656249994,81.93994140624997],[-27.839501953124966,82.04887695312505],[-25.148828124999966,82.001123046875],[-24.293066406249977,81.70097656250005],[-23.103710937499983,82.01181640625003],[-21.337988281249977,82.068701171875],[-21.230517578125017,81.60136718749999],[-23.11772460937499,80.77817382812498],[-19.62993164062499,81.63989257812503],[-17.456054687499943,81.397705078125],[-16.12070312499995,81.776611328125],[-14.241992187500017,81.81386718750005],[-12.434423828125006,81.68251953125002],[-11.430664062499972,81.45683593750005],[-13.126220703124972,81.08779296875],[-14.452343749999955,80.99311523437498],[-14.503564453124994,80.76328125000006],[-16.76059570312492,80.573388671875],[-15.937255859374972,80.42763671874997],[-16.48876953124997,80.25195312499997],[-18.070947265624994,80.17207031249995],[-19.429199218749943,80.25771484375],[-20.150146484375,80.01123046874997],[-18.99199218749996,79.17836914062502],[-21.133740234374926,78.65864257812501],[-21.729589843749977,77.70854492187499],[-20.862597656249932,77.91186523437503],[-19.490429687499983,77.71889648437497],[-19.46752929687503,77.56582031250005],[-20.162060546874926,77.68984375],[-20.680810546875023,77.61899414062503],[-20.23193359374997,77.36840820312497],[-19.30029296874997,77.22236328124995],[-18.442626953124943,77.259375],[-18.51030273437496,76.77817382812498],[-20.48671875,76.92080078125],[-21.614697265624926,76.68789062499997],[-22.18525390625001,76.79409179687502],[-22.609326171874983,76.70429687500004],[-21.877343749999966,76.57348632812503],[-21.488232421874926,76.271875],[-20.10361328124992,76.21909179687503],[-19.508984374999926,75.75751953124995],[-19.52636718750003,75.18022460937505],[-20.484960937500006,75.31425781249999],[-21.649316406249966,75.02343749999997],[-22.232861328124926,75.11972656249998],[-21.69511718749999,74.96445312500003],[-20.985791015624983,75.07436523437497],[-20.86157226562497,74.63593750000001],[-20.41708984374995,74.9751953125],[-19.98491210937499,74.9751953125],[-19.287011718750023,74.54638671875006],[-19.36914062499997,74.28403320312498],[-20.256445312499977,74.2828125],[-20.653125,74.13735351562502],[-21.954931640624977,74.24428710937497],[-21.942919921874932,74.56572265624999],[-22.32158203124999,74.30253906250002],[-22.134814453124932,73.99047851562503],[-20.36728515624992,73.8482421875],[-20.509667968749966,73.49287109375001],[-22.346875,73.26923828125001],[-23.23320312499999,73.39770507812497],[-24.157714843749943,73.76445312499999],[-24.67724609375,73.602197265625],[-25.521289062500017,73.85161132812499],[-24.79125976562497,73.51127929687502],[-26.062304687500017,73.25302734375],[-27.270410156250023,73.43627929687503],[-26.541845703125006,73.24897460937495],[-27.561621093750006,73.13847656250002],[-27.348046875000023,73.06782226562501],[-25.057031250000023,73.396484375],[-24.132666015625006,73.409375],[-22.036328124999955,72.91845703125006],[-22.29321289062497,72.11953125],[-24.06904296875001,72.49873046874998],[-24.629980468749977,73.03764648437499],[-26.657617187499966,72.71582031249997],[-24.81333007812492,72.90151367187497],[-24.65,72.58251953125],[-25.117871093749983,72.34697265625005],[-24.66684570312492,72.437353515625],[-21.959667968749955,71.74467773437502],[-22.479638671874937,71.38344726562497],[-22.417578125,71.24868164062505],[-22.29902343750001,71.43232421874998],[-21.75224609374999,71.47832031250002],[-21.522656249999926,70.52622070312503],[-22.38413085937492,70.46240234375],[-22.437011718749943,70.860009765625],[-22.690673828124943,70.43730468750002],[-23.327832031249983,70.45097656250007],[-23.97138671875001,70.64946289062499],[-24.562207031249926,71.22353515624997],[-25.885156249999966,71.571923828125],[-27.08720703124999,71.6265625],[-27.107031250000034,71.53266601562498],[-25.842724609374955,71.48017578124995],[-25.74223632812499,71.18359375],[-26.717919921874994,70.95048828125005],[-28.39843749999997,70.99291992187497],[-27.99218749999997,70.89521484374998],[-28.06987304687499,70.69902343750005],[-29.07207031249999,70.444970703125],[-26.621777343749955,70.46337890625],[-26.576806640625023,70.35708007812502],[-27.560839843749932,70.12446289062498],[-27.384179687500023,69.9916015625],[-27.027734374999966,70.20122070312499],[-25.529882812499977,70.35317382812502],[-23.66733398437495,70.139306640625],[-22.28447265624996,70.12583007812498],[-22.287060546874955,70.03339843749998],[-23.03364257812501,69.90083007812498],[-23.04956054687497,69.79272460937497],[-23.86572265624997,69.73671875000002],[-23.739404296874994,69.58862304687497],[-24.296679687500017,69.58554687500006],[-24.295556640624966,69.439306640625],[-25.188574218750006,69.26054687500002],[-25.092431640624937,69.16518554687502],[-25.697998046874943,68.889892578125],[-26.48291015624997,68.67592773437502],[-29.24951171874997,68.29877929687501],[-29.86850585937495,68.31157226562505],[-30.318115234375,68.19331054687501],[-30.72001953124999,68.25117187499998],[-30.610742187499994,68.11791992187503],[-30.97856445312499,68.06132812500005],[-32.32744140624999,68.43730468749999],[-32.16455078125,67.99111328125002],[-33.15698242187497,67.62670898437506],[-34.1982421875,66.65507812499999],[-35.18857421874995,66.25029296875002],[-35.86723632812502,66.44140624999997],[-35.630078124999926,66.13994140625002],[-36.37919921874996,65.830810546875],[-36.52724609375002,66.00771484375],[-36.665185546874966,65.79008789062507],[-37.06279296874996,65.87143554687503],[-37.410058593749994,65.65634765625],[-37.954785156249955,65.63359375000007],[-37.278710937499994,66.30439453124995],[-38.156640624999966,66.38559570312498],[-37.75234375000002,66.26152343750002],[-38.13994140625002,65.90351562499998],[-38.52036132812498,66.00966796875002],[-38.20336914062497,65.71171874999999],[-40.17353515624998,65.55615234375],[-39.57792968749996,65.34077148437501],[-39.937255859375,65.14160156250003],[-40.253125,65.04887695312505],[-41.08442382812501,65.10083007812497],[-40.966015624999955,64.86884765624995],[-40.655468749999926,64.91533203125002],[-40.18222656249998,64.47993164062495],[-40.78173828125,64.22177734375003],[-41.581005859374926,64.29833984375],[-41.03056640624996,64.12104492187504],[-40.61777343749998,64.13173828125],[-40.550390625000034,63.72524414062505],[-40.77519531249999,63.53364257812501],[-41.04873046875002,63.51381835937505],[-41.387890624999926,63.06186523437498],[-41.84448242187497,63.07026367187501],[-42.174511718749955,63.20878906249999],[-41.63447265624998,62.972460937500074],[-41.90898437499996,62.73710937499999],[-42.94165039062503,62.72021484375003],[-42.15297851562502,62.568457031250006],[-42.32148437499998,62.15273437500005],[-42.110205078125006,61.857226562500074],[-42.58530273437498,61.71748046875001],[-42.34736328125001,61.61743164062497],[-42.717041015625,60.767480468749994],[-43.04409179687502,60.523681640625],[-43.92270507812495,60.59536132812502],[-43.21298828124998,60.390673828125074],[-43.122900390625006,60.06123046875001],[-43.32011718749993,59.928125],[-43.95502929687498,60.025488281250006],[-43.65791015625001,59.85864257812503],[-43.90654296874996,59.815478515625045],[-44.11699218750002,59.83193359375002],[-44.06547851562499,59.92480468750003],[-44.412939453125006,59.922607421875],[-44.22436523437494,60.273535156250006],[-44.61328124999997,60.01665039062499],[-45.37924804687495,60.20292968750002],[-45.367773437500006,60.37294921875002],[-44.97470703124995,60.457226562499955],[-44.756738281249966,60.66459960937502],[-45.38051757812494,60.444921875],[-46.04663085937503,60.61572265625],[-46.141943359375006,60.776513671874994],[-45.87021484374998,61.21831054687502],[-46.87446289062501,60.81640625000003],[-48.180810546874966,60.76923828125001],[-47.77031249999999,60.99775390625001],[-48.386425781249926,61.004736328125034],[-48.42817382812501,61.18740234375002],[-48.92207031249998,61.27744140624998],[-49.28906249999997,61.58994140625006],[-49.380273437499994,61.89018554687502],[-48.82871093749998,62.0796875],[-49.62377929687494,61.99858398437499],[-49.553466796875,62.23271484374999],[-50.319238281249966,62.473193359375045],[-50.298730468749966,62.72197265625002],[-49.793115234374994,63.04462890625004],[-50.39008789062501,62.82202148437497],[-51.46884765624995,63.64228515625001],[-51.547509765624994,64.00610351562497],[-50.260693359374955,64.21425781250002],[-50.48662109374996,64.20888671875],[-50.43706054687499,64.31284179687503],[-51.58491210937498,64.10317382812502],[-51.70786132812498,64.205078125],[-51.403759765624926,64.46318359375002],[-50.49208984375002,64.69316406250005],[-50.00898437500001,64.44726562499997],[-50.12163085937493,64.703759765625],[-50.51699218750002,64.76650390625],[-50.96064453124998,65.20112304687498],[-50.721582031249966,64.79760742187503],[-51.22060546875002,64.62846679687502],[-51.25537109375,64.75810546875005],[-51.92260742187503,64.21875],[-52.259033203125,65.154931640625],[-52.537695312500034,65.32880859374998],[-51.61914062500003,65.71318359375002],[-51.091894531250006,65.77578125],[-51.7234375,65.723486328125],[-52.55126953125003,65.46137695312498],[-52.760937499999926,65.59082031249997],[-53.198974609375,65.59404296875002],[-53.106347656249966,65.97714843749998],[-53.39204101562498,66.04833984375],[-51.225,66.88154296875001],[-53.035791015624966,66.20141601562503],[-53.538769531249955,66.13935546874998],[-53.41875,66.64853515624998],[-53.038281249999955,66.82680664062497],[-52.38686523437502,66.88115234375005],[-53.44360351562503,66.924658203125],[-53.88442382812502,67.13554687499999],[-53.79858398437494,67.41816406250001],[-52.666455078124955,67.74970703124995],[-50.613476562499955,67.5279296875],[-51.171044921874966,67.693603515625],[-50.96884765624998,67.80664062500003],[-51.765234375000034,67.73784179687505],[-52.34482421874998,67.83691406249997],[-53.735205078125006,67.54902343750004],[-53.151562499999926,68.20776367187503],[-51.779980468749926,68.05673828124998],[-51.456494140624926,68.116064453125],[-51.21015625000001,68.419921875],[-52.19853515624993,68.22080078125],[-53.38315429687495,68.29736328124997],[-53.03945312500002,68.61088867187499],[-52.60458984374998,68.70874023437503],[-51.62314453124995,68.53481445312505],[-50.945703124999966,68.68266601562505],[-50.807714843750006,68.81699218749998],[-51.24941406250002,68.73994140625001],[-51.084863281249994,69.12827148437498],[-50.29736328124994,69.17060546874998],[-51.07695312499996,69.20947265625],[-50.291699218749955,70.01445312500005],[-52.254638671875,70.05893554687503],[-53.02304687499995,70.30190429687497],[-54.01445312499996,70.42167968750005],[-54.53076171875,70.69926757812502],[-54.16582031249999,70.82011718750005],[-52.801953124999955,70.7505859375],[-50.87236328124993,70.36489257812502],[-50.66328124999998,70.417578125],[-51.32285156249998,70.58876953124997],[-51.25659179687497,70.85268554687502],[-51.77431640625002,71.01044921875001],[-51.018945312499966,71.001318359375],[-51.37666015625001,71.11904296875],[-53.007568359375,71.17998046874999],[-52.89184570312497,71.457666015625],[-51.76992187500002,71.67172851562498],[-53.44008789062502,71.57900390625002],[-53.14453125000003,71.80742187500002],[-53.65214843749996,72.36264648437506],[-53.92773437499997,72.31879882812501],[-53.47758789062502,71.84995117187506],[-54.01992187500002,71.657861328125],[-53.96298828124995,71.45898437499997],[-54.6890625,71.36723632812505],[-55.59404296874999,71.55351562500005],[-55.315576171874994,72.11069335937498],[-54.84013671874996,72.35610351562497],[-55.581445312499994,72.178857421875],[-55.63583984374998,72.300439453125],[-55.29570312499996,72.35439453124997],[-55.60170898437494,72.453466796875],[-54.924951171874994,72.57197265624998],[-54.737939453124994,72.87250976562501],[-55.07309570312498,73.01513671875003],[-55.28891601562498,72.93320312500003],[-55.66855468749998,73.00791015624998],[-55.288281249999955,73.32709960937498],[-56.10405273437496,73.55815429687499],[-55.83828125,73.75971679687501],[-56.22539062499999,74.12910156249995],[-57.23056640624995,74.12529296875007],[-56.70634765625002,74.21918945312501],[-56.717675781249994,74.42924804687499],[-56.25546874999998,74.52680664062498],[-58.56552734374998,75.35273437500001],[-58.249658203124994,75.50668945312503],[-58.51621093749995,75.68906250000006],[-61.18823242187494,76.157861328125],[-63.29130859374996,76.35205078125003],[-63.84306640624999,76.21713867187498],[-64.307275390625,76.31650390624998],[-65.36992187499993,76.13056640625004],[-65.87573242187494,76.23833007812505],[-66.46577148437498,76.13916015625],[-66.99257812500002,76.21293945312502],[-66.67480468750003,75.977392578125],[-68.14873046875002,76.06704101562497],[-69.48408203125001,76.39916992187503],[-68.1142578125,76.65063476562503],[-69.67382812499994,76.73588867187507],[-69.69423828125002,76.98945312500004],[-70.613134765625,76.82182617187499],[-71.14145507812498,77.02866210937503],[-70.86284179687496,77.175439453125],[-68.97832031250002,77.19531250000006],[-68.13554687499999,77.37958984375001],[-66.38945312499999,77.28027343750003],[-66.69121093749999,77.68120117187502],[-67.68808593749995,77.523779296875],[-68.62153320312498,77.60185546875002],[-69.35136718749999,77.467138671875],[-70.53540039062497,77.699560546875],[-70.11445312500001,77.84135742187505],[-71.27163085937494,77.81313476562497],[-72.81806640624995,78.1943359375],[-72.47250976562498,78.48203125],[-71.65131835937493,78.62314453124998],[-68.99345703124999,78.857421875],[-68.37705078124998,79.037841796875],[-65.82553710937503,79.17373046874997],[-64.79228515624993,80.00063476562502],[-64.17915039062498,80.09926757812497],[-66.84365234374997,80.07622070312507],[-67.05063476562503,80.384521484375],[-64.51552734374997,81],[-63.72197265624993,81.05732421875001],[-63.028662109375006,80.88955078125002],[-62.90336914062496,81.21835937500003],[-61.43598632812498,81.13359375000002],[-60.842871093750034,81.85537109374997],[-59.28193359374998,81.88403320312503],[-56.615136718749994,81.362890625],[-59.26181640624998,82.00664062500005],[-54.54887695312496,82.35063476562505],[-53.671337890624955,82.16406249999997],[-53.55566406250003,81.65327148437501],[-53.022558593750034,82.32172851562504],[-50.894433593749994,81.89521484375001],[-49.54106445312496,81.91806640625003],[-50.93554687500003,82.38281250000003],[-50.03710937499994,82.472412109375],[-44.7294921875,81.77983398437505],[-44.23886718749998,82.3681640625],[-45.55654296875002,82.74702148437498],[-41.87646484375,82.680322265625],[-41.36962890625003,82.75],[-46.136816406250006,82.85883789062504],[-46.169042968750006,83.06386718749997],[-45.41459960937496,83.01767578124998],[-43.00927734375003,83.26459960937501],[-41.300146484375006,83.10078125000004],[-40.35683593750002,83.332177734375],[-38.15625,82.9986328125],[-38.74956054687496,83.37084960937497],[-37.72333984374998,83.49775390624998],[-29.952880859375,83.56484374999997]]]]},"properties":{"name":"Greenland","childNum":14}},{"geometry":{"type":"Polygon","coordinates":[[[-89.2328125,15.888671875],[-88.89404296875,15.890625],[-88.60336914062499,15.76416015625],[-88.5939453125,15.950292968749991],[-88.22832031249999,15.72900390625],[-88.271435546875,15.694873046875003],[-88.36455078124999,15.616015625],[-88.68447265625,15.360498046874994],[-88.96098632812499,15.152441406249991],[-89.142578125,15.072314453125003],[-89.22236328125,14.866064453124991],[-89.16220703124999,14.669238281250003],[-89.17177734375,14.606884765624997],[-89.28671875,14.529980468749997],[-89.36259765624999,14.416015625],[-89.5736328125,14.390087890624997],[-89.54716796874999,14.241259765625003],[-90.04814453124999,13.904052734375],[-90.09521484375,13.736523437499997],[-90.60693359375,13.929003906250003],[-91.37734375,13.990185546874997],[-92.23515624999999,14.54541015625],[-92.15854492187499,14.963574218749997],[-92.14423828125,15.001953125],[-92.09873046874999,15.026757812499994],[-92.07480468749999,15.07421875],[-92.187158203125,15.320898437499991],[-92.08212890624999,15.495556640624997],[-91.9572265625,15.703222656249991],[-91.736572265625,16.07016601562499],[-91.433984375,16.070458984374994],[-90.97958984374999,16.07080078125],[-90.70322265624999,16.071044921875],[-90.52197265625,16.071191406249994],[-90.44716796875,16.072705078124997],[-90.45986328125,16.162353515625],[-90.450146484375,16.261376953124994],[-90.4169921875,16.351318359375],[-90.4169921875,16.39101562499999],[-90.47109375,16.43955078124999],[-90.57578125,16.467822265625003],[-90.63408203124999,16.5107421875],[-90.634375,16.565136718749997],[-90.65996093749999,16.630908203125003],[-90.710693359375,16.70810546874999],[-90.975830078125,16.867822265624994],[-91.409619140625,17.255859375],[-91.1955078125,17.254101562499997],[-90.99296874999999,17.25244140625],[-90.98916015625,17.81640625],[-89.16147460937499,17.81484375],[-89.2328125,15.888671875]]]},"properties":{"name":"Guatemala","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[144.74179687500003,13.25927734375],[144.64931640625002,13.4287109375],[144.87539062500002,13.614648437499994],[144.94082031250002,13.5703125],[144.74179687500003,13.25927734375]]]},"properties":{"name":"Guam","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-57.194775390625,5.5484375],[-57.3185546875,5.335351562499994],[-57.20981445312499,5.195410156249991],[-57.331005859375,5.020166015624994],[-57.711083984374994,4.991064453124991],[-57.91704101562499,4.820410156249991],[-57.84599609374999,4.668164062499997],[-58.05429687499999,4.101660156249991],[-57.646728515625,3.39453125],[-57.303662109375,3.377099609374994],[-57.19736328124999,2.853271484375],[-56.704345703125,2.036474609374991],[-56.4828125,1.942138671875],[-56.96953124999999,1.91640625],[-57.03759765625,1.936474609374997],[-57.092675781249994,2.005810546874997],[-57.118896484375,2.013964843749989],[-57.31748046874999,1.963476562499991],[-57.41269531249999,1.908935546875],[-57.500439453125,1.77382812499999],[-57.54575195312499,1.72607421875],[-57.59443359375,1.7041015625],[-57.795654296875,1.7],[-57.8734375,1.667285156249989],[-57.9828125,1.6484375],[-58.03466796875,1.520263671875],[-58.34067382812499,1.587548828124994],[-58.38037109375,1.530224609374997],[-58.39580078124999,1.481738281249989],[-58.5060546875,1.438671875],[-58.511865234374994,1.28466796875],[-58.68461914062499,1.281054687499989],[-58.73032226562499,1.247509765624997],[-58.78720703124999,1.20849609375],[-58.82177734375,1.201220703124989],[-59.231201171875,1.376025390624989],[-59.53569335937499,1.7],[-59.66660156249999,1.746289062499997],[-59.66850585937499,1.842333984374989],[-59.74072265625,1.874169921874994],[-59.75620117187499,1.900634765625],[-59.75522460937499,2.274121093749997],[-59.8896484375,2.362939453124994],[-59.9943359375,2.689990234374989],[-59.854394531249994,3.5875],[-59.55112304687499,3.933544921874997],[-59.557763671874994,3.960009765624989],[-59.62021484374999,4.023144531249997],[-59.73857421874999,4.226757812499997],[-59.69970703125,4.353515625],[-60.1486328125,4.533251953124989],[-59.990673828125,5.082861328124991],[-60.142041015625,5.238818359374989],[-60.241650390625,5.257958984374994],[-60.335205078125,5.199316406249991],[-60.45952148437499,5.188085937499991],[-60.6513671875,5.221142578124997],[-60.742138671875,5.202050781249994],[-61.37680664062499,5.906982421875],[-61.3908203125,5.938769531249989],[-61.303125,6.049511718749997],[-61.22495117187499,6.129199218749989],[-61.15947265624999,6.174414062499991],[-61.12871093749999,6.214306640624997],[-61.152294921875,6.385107421874991],[-61.151025390624994,6.446533203125],[-61.181591796875,6.513378906249997],[-61.20361328125,6.58837890625],[-61.14560546874999,6.69453125],[-60.717919921874994,6.768310546875],[-60.35209960937499,7.002880859374997],[-60.32207031249999,7.092041015625],[-60.32548828124999,7.133984375],[-60.34506835937499,7.15],[-60.46494140624999,7.166552734374989],[-60.523193359375,7.143701171874994],[-60.583203125,7.156201171874997],[-60.63330078125,7.211083984374994],[-60.718652343749994,7.535937499999989],[-60.513623046875,7.813183593749997],[-60.032421875,8.053564453124991],[-59.99072265625,8.162011718749994],[-59.96484375,8.191601562499997],[-59.849072265625,8.248681640624994],[-59.83164062499999,8.305957031249989],[-60.017529296875,8.54931640625],[-59.20024414062499,8.07460937499999],[-58.51108398437499,7.39804687499999],[-58.48056640624999,7.038134765624989],[-58.67294921874999,6.390771484374994],[-58.414990234375,6.85117187499999],[-57.982568359374994,6.785888671875],[-57.54013671874999,6.33154296875],[-57.2275390625,6.178417968749997],[-57.194775390625,5.5484375]]]},"properties":{"name":"Guyana","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[73.70742187500002,-53.13710937499999],[73.46513671875002,-53.184179687500006],[73.25117187500001,-52.97578125000001],[73.83779296875002,-53.11279296875],[73.70742187500002,-53.13710937499999]]]},"properties":{"name":"Heard I. and McDonald Is.","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-83.635498046875,14.876416015624997],[-84.53764648437496,14.633398437499963],[-84.64594726562498,14.661083984375011],[-84.86044921874998,14.809765625000011],[-84.98515624999999,14.752441406249972],[-85.059375,14.582958984374997],[-85.20834960937498,14.311816406250003],[-85.73393554687496,13.85869140625006],[-85.75341796875,13.852050781250028],[-85.78671874999995,13.844433593749997],[-85.98378906249997,13.965673828125006],[-86.04038085937503,14.050146484374977],[-86.33173828124995,13.770068359375031],[-86.37695312500003,13.755664062500031],[-86.61025390624997,13.774853515625026],[-86.73364257812494,13.763476562500017],[-86.75898437499995,13.746142578125045],[-86.77060546875003,13.698730468749972],[-86.763525390625,13.635253906250014],[-86.72958984375,13.4072265625],[-86.710693359375,13.31337890624998],[-86.72929687499996,13.284375],[-86.79213867187497,13.279785156249972],[-86.87353515624994,13.266503906250023],[-86.918212890625,13.223583984374983],[-87.00932617187499,13.007812499999986],[-87.0591796875,12.991455078125028],[-87.337255859375,12.979248046875028],[-87.48911132812503,13.352929687500051],[-87.814208984375,13.399169921875057],[-87.781884765625,13.521386718749994],[-87.71533203125003,13.812695312500011],[-87.73144531250003,13.841064453125014],[-87.80224609374997,13.889990234375034],[-87.89199218749997,13.894970703124983],[-87.99101562499996,13.879638671874972],[-88.15102539062497,13.987353515624974],[-88.44912109374994,13.850976562499994],[-88.48266601562503,13.854248046875043],[-88.49765624999998,13.904541015624986],[-88.50434570312501,13.964208984374963],[-88.51254882812498,13.97895507812504],[-89.12050781249994,14.370214843749991],[-89.36259765624996,14.416015625],[-89.17177734375,14.606884765624983],[-89.16220703125,14.669238281249989],[-89.22236328125001,14.86606445312502],[-89.142578125,15.072314453125031],[-88.96098632812496,15.15244140625002],[-88.68447265625002,15.360498046875037],[-88.36455078124996,15.616015625000045],[-88.27143554687498,15.694873046875045],[-88.22832031249999,15.729003906249972],[-88.131103515625,15.701025390625034],[-87.87495117187495,15.879345703124955],[-86.35664062499998,15.783203125],[-85.93627929687497,15.953417968750045],[-85.98564453124999,16.02416992187497],[-85.48369140624996,15.899511718749977],[-84.97373046874998,15.989892578124994],[-84.55966796875,15.802001953125],[-84.26142578124998,15.822607421875034],[-83.765283203125,15.405468750000054],[-83.972802734375,15.519628906250034],[-84.11132812499997,15.492431640625],[-84.09506835937503,15.400927734375017],[-83.92744140624998,15.394042968750028],[-83.76044921874998,15.220361328124994],[-83.49794921874997,15.222119140624997],[-83.64638671875,15.368408203125043],[-83.36918945312493,15.239990234375],[-83.29086914062498,15.078906250000045],[-83.2255859375,15.042285156250045],[-83.15751953124999,14.993066406249966],[-83.41503906249994,15.008056640625],[-83.5365234375,14.977001953124983],[-83.635498046875,14.876416015624997]]]},"properties":{"name":"Honduras","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[17.60781250000005,42.76904296875],[17.744238281250063,42.70034179687505],[17.34414062500008,42.790380859375006],[17.60781250000005,42.76904296875]]],[[[16.650683593750017,42.99658203125],[17.188281250000045,42.917041015625045],[16.850683593750006,42.8955078125],[16.650683593750017,42.99658203125]]],[[[17.667578125000063,42.897119140624994],[18.436328125000017,42.559716796874994],[18.517480468750023,42.43291015624999],[17.823828125,42.79741210937502],[17.045410156250057,43.014892578125],[17.667578125000063,42.897119140624994]]],[[[16.785253906250006,43.270654296874966],[16.490332031250034,43.28618164062502],[16.44892578125004,43.38706054687506],[16.89130859375001,43.314648437499955],[16.785253906250006,43.270654296874966]]],[[[15.371386718750074,43.973828124999955],[15.437207031250068,43.899511718750006],[15.270019531250028,44.01074218750003],[15.371386718750074,43.973828124999955]]],[[[14.488085937500074,44.66005859375005],[14.31240234375008,44.90039062499997],[14.33125,45.16499023437498],[14.488085937500074,44.66005859375005]]],[[[14.810253906250068,44.97705078124997],[14.45039062500004,45.079199218750006],[14.571093750000017,45.224755859374994],[14.810253906250068,44.97705078124997]]],[[[18.905371093750006,45.931738281250034],[18.839062499999983,45.83574218750002],[19.064257812500045,45.51499023437506],[19.004687500000074,45.39951171875006],[19.4,45.2125],[19.062890625000023,45.13720703125],[19.007128906250045,44.86918945312502],[18.83642578125,44.883251953124955],[18.66259765625,45.07744140624999],[17.812792968750074,45.078125],[16.918652343749983,45.27656249999998],[16.53066406250008,45.21669921875002],[16.29335937500005,45.00883789062496],[16.028320312500057,45.18959960937502],[15.788085937500057,45.17895507812497],[15.736621093750045,44.76582031250001],[16.10341796875008,44.52099609375006],[16.300097656250017,44.12451171875],[17.27382812500005,43.44575195312501],[17.650488281250063,43.006591796875],[17.585156250000068,42.93837890625005],[16.903125,43.392431640625006],[16.393945312500023,43.54335937500002],[15.985546875000068,43.519775390625],[15.185839843750017,44.17211914062503],[15.122949218749994,44.256787109374955],[15.470996093750045,44.27197265625003],[14.981347656250023,44.60292968750005],[14.854589843750034,45.08100585937501],[14.550488281249983,45.297705078125006],[14.31269531250004,45.33779296875002],[13.86074218750008,44.83740234375003],[13.517187500000063,45.481787109375034],[13.878710937500017,45.428369140624994],[14.369921875000074,45.48144531250006],[14.427343750000034,45.50576171875002],[14.56884765625,45.65722656249997],[14.591796875000057,45.65126953125002],[14.649511718750006,45.57148437500001],[14.793066406250034,45.47822265625001],[14.95458984375,45.499902343749994],[15.110449218750034,45.450781250000034],[15.242089843750023,45.44140624999997],[15.339453125000063,45.46704101562506],[15.326660156250028,45.502294921875034],[15.291210937500011,45.541552734375045],[15.283593750000051,45.5796875],[15.35371093750004,45.659912109375],[15.27705078125004,45.73261718749998],[15.652148437500074,45.86215820312498],[15.675585937500045,45.98369140624996],[15.666210937500011,46.04848632812502],[15.596875,46.10922851562506],[15.592578125000017,46.139990234375006],[15.608984374999977,46.171923828125045],[16.1064453125,46.382226562499994],[16.32119140625005,46.53461914062504],[16.42763671875005,46.5244140625],[16.516210937499977,46.499902343749966],[16.569921875,46.48500976562505],[16.748046875000057,46.41640625000002],[16.87148437500008,46.33930664062504],[17.310644531250006,45.99614257812502],[17.80712890625,45.79042968750002],[18.358300781250023,45.75302734375006],[18.533593750000023,45.79614257812503],[18.56464843750004,45.81328124999999],[18.666015625,45.90747070312497],[18.905371093750006,45.931738281250034]]]]},"properties":{"name":"Croatia","childNum":8}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-72.80458984374997,18.777685546875063],[-72.82221679687501,18.707128906249977],[-73.07797851562498,18.790917968749994],[-73.27641601562499,18.95405273437501],[-72.80458984374997,18.777685546875063]]],[[[-71.647216796875,19.195947265624994],[-71.80712890624997,18.987011718749983],[-71.733642578125,18.85639648437501],[-71.72705078125,18.80322265625003],[-71.74321289062502,18.73291015625],[-71.86650390624999,18.61416015625005],[-71.98686523437499,18.61035156249997],[-72.000390625,18.59790039062503],[-71.94038085937493,18.51259765625005],[-71.87255859374997,18.416210937499955],[-71.76191406249998,18.34130859374997],[-71.73725585937495,18.27080078124999],[-71.76831054687497,18.039160156250063],[-71.85292968749997,18.119140625],[-71.94609375,18.186083984375045],[-72.05986328124993,18.228564453125017],[-72.87666015624998,18.151757812499994],[-73.38515625000002,18.251171874999983],[-73.747314453125,18.190234375000017],[-73.88496093749998,18.041894531249994],[-74.478125,18.45],[-74.3875,18.624707031249983],[-74.22773437499998,18.662695312499977],[-72.78935546874996,18.434814453125],[-72.37607421874998,18.57446289062503],[-72.34765624999994,18.674951171874994],[-72.81108398437496,19.071582031250074],[-72.70322265625,19.441064453125023],[-73.43837890624994,19.722119140624983],[-73.21777343750003,19.88369140625005],[-72.63701171875002,19.90087890625],[-72.21982421875003,19.744628906250057],[-71.834716796875,19.696728515624983],[-71.77924804687498,19.718164062499994],[-71.75742187499998,19.68818359375001],[-71.71147460937493,19.486572265625057],[-71.74648437499997,19.28583984375001],[-71.647216796875,19.195947265624994]]]]},"properties":{"name":"Haiti","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[22.1318359375,48.405322265624996],[22.253710937500017,48.407373046874994],[22.582421875000023,48.134033203125],[22.769140625,48.109619140625],[22.87666015625001,47.947265625],[21.99970703125001,47.505029296874994],[21.121679687500006,46.282421875],[20.76025390625,46.246240234374994],[20.613671875000023,46.13349609375],[20.508105468750017,46.166943359375],[20.28095703125001,46.1330078125],[20.241796875,46.10859375],[20.21015625000001,46.126025390624996],[20.161425781250017,46.141894531249996],[19.93408203125,46.161474609375],[19.84443359375001,46.145898437499994],[19.61347656250001,46.169189453125],[19.421289062500023,46.064453125],[18.666015625,45.907470703125],[18.56464843750001,45.81328125],[18.533593750000023,45.796142578125],[18.358300781250023,45.75302734375],[17.80712890625,45.790429687499994],[17.310644531250006,45.996142578124996],[16.871484375000023,46.339306640625],[16.748046875,46.41640625],[16.569921875,46.485009765624994],[16.516210937500006,46.499902343749994],[16.283593750000023,46.857275390625],[16.093066406250017,46.86328125],[16.453417968750017,47.006787109375],[16.44287109375,47.39951171875],[16.676562500000017,47.536035156249994],[16.421289062500023,47.674462890624994],[17.06660156250001,47.707568359374996],[17.147363281250023,48.00595703125],[17.76191406250001,47.770166015624994],[18.72421875,47.787158203124996],[18.791894531250023,48.000292968749996],[19.625390625000023,48.223095703125],[19.95039062500001,48.146630859374994],[20.333789062500017,48.295556640624994],[20.490039062500017,48.526904296874996],[21.45136718750001,48.55224609375],[21.766992187500023,48.3380859375],[22.1318359375,48.405322265624996]]]},"properties":{"name":"Hungary","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[122.9489257812501,-10.90927734375002],[122.82617187500003,-10.899121093749983],[122.84570312500003,-10.761816406249991],[123.37109375000003,-10.474902343749989],[123.41816406250004,-10.651269531250037],[122.9489257812501,-10.90927734375002]]],[[[121.8830078125001,-10.590332031249957],[121.70468750000006,-10.5556640625],[121.99833984375002,-10.446972656249983],[121.8830078125001,-10.590332031249957]]],[[[123.41621093750004,-10.302636718749966],[123.3255859375,-10.264160156249943],[123.45878906250002,-10.13994140624996],[123.41621093750004,-10.302636718749966]]],[[[120.0125,-9.374707031250026],[120.78447265625002,-9.95703125],[120.83261718750006,-10.0375],[120.69804687500002,-10.206640624999949],[120.4391601562501,-10.294042968749991],[120.14482421875002,-10.200097656249952],[119.60107421874997,-9.773535156250006],[119.08544921875003,-9.706933593750023],[118.95878906250002,-9.519335937500003],[119.29589843749997,-9.3671875],[119.9420898437501,-9.301464843750026],[120.0125,-9.374707031250026]]],[[[125.06816406250002,-9.511914062499997],[124.42753906250002,-10.14863281250004],[123.7472656250001,-10.347167968749986],[123.60478515625002,-10.270117187500006],[123.71640625000012,-10.078613281249986],[123.5892578125,-9.966796875000028],[123.709375,-9.61484375],[124.0363281250001,-9.341601562500031],[124.28232421875012,-9.427929687500026],[124.44443359375012,-9.190332031250023],[124.92226562500005,-8.942480468749977],[124.93681640625007,-9.053417968750026],[125.14902343750012,-9.042578125000034],[125.10048828125,-9.189843750000023],[124.96015625000004,-9.213769531250009],[125.06816406250002,-9.511914062499997]]],[[[115.60996093750012,-8.769824218749974],[115.48046875000003,-8.715429687500006],[115.56142578125,-8.669921874999972],[115.60996093750012,-8.769824218749974]]],[[[122.97734375000002,-8.54521484374996],[122.88779296875006,-8.587304687500009],[123.01054687500002,-8.448339843750034],[123.153125,-8.475781250000026],[122.97734375000002,-8.54521484374996]]],[[[119.46406250000004,-8.741015624999974],[119.38554687500002,-8.736035156250026],[119.4464843750001,-8.429199218749957],[119.55722656250012,-8.518847656250003],[119.46406250000004,-8.741015624999974]]],[[[123.31748046875012,-8.354785156249974],[123.02500000000012,-8.395507812500014],[123.21708984375002,-8.235449218750006],[123.33603515625006,-8.269042968750014],[123.31748046875012,-8.354785156249974]]],[[[116.64082031250004,-8.613867187500006],[116.51425781250012,-8.820996093750011],[116.58652343750012,-8.886132812499966],[116.23935546875006,-8.912109375000014],[115.85732421875005,-8.787890625000017],[116.07646484375002,-8.744921874999974],[116.06113281250006,-8.437402343750023],[116.4015625000001,-8.204199218750034],[116.7189453125001,-8.336035156249977],[116.64082031250004,-8.613867187500006]]],[[[124.28662109375003,-8.32949218749998],[124.14667968750004,-8.531445312499997],[123.92773437500003,-8.448925781249969],[124.23955078125002,-8.20341796874996],[124.28662109375003,-8.32949218749998]]],[[[123.92480468750003,-8.2724609375],[123.55302734375007,-8.566796875],[123.23007812500006,-8.530664062500023],[123.47587890625007,-8.322265625000014],[123.39121093750012,-8.280468750000026],[123.77597656250006,-8.190429687499986],[123.92480468750003,-8.2724609375]]],[[[138.89511718750006,-8.388671874999957],[138.56337890625,-8.30908203125],[138.79619140625007,-8.173632812500017],[138.89511718750006,-8.388671874999957]]],[[[117.55634765625004,-8.367285156249949],[117.49052734375007,-8.183398437499974],[117.66503906249997,-8.148242187500003],[117.55634765625004,-8.367285156249949]]],[[[124.5755859375,-8.140820312499997],[125.05029296874997,-8.179589843749994],[125.13173828125,-8.326464843749989],[124.38066406250002,-8.41513671875002],[124.43066406249997,-8.18320312500002],[124.5755859375,-8.140820312499997]]],[[[127.8234375000001,-8.098828124999969],[128.11923828125012,-8.17070312499996],[128.02353515625006,-8.255371093749972],[127.82089843750012,-8.190234375000031],[127.8234375000001,-8.098828124999969]]],[[[122.7829101562501,-8.61171875],[121.65136718749997,-8.898730468749946],[121.41464843750006,-8.81484375],[121.32832031250004,-8.916894531250009],[121.03525390625012,-8.935449218749966],[120.55048828125004,-8.80185546875002],[119.909375,-8.857617187500011],[119.80791015625002,-8.697656250000023],[119.87480468750007,-8.419824218749994],[120.61025390625005,-8.24042968750004],[121.44453125000004,-8.57783203125004],[121.96650390625004,-8.455175781250006],[122.32324218749997,-8.628320312500023],[122.85048828125,-8.304394531250011],[122.91914062500004,-8.221875],[122.75859375000002,-8.185937499999952],[122.91699218749997,-8.105566406250006],[123.00595703125006,-8.329101562499986],[122.7829101562501,-8.61171875]]],[[[130.86220703125,-8.31875],[130.77519531250002,-8.34990234374996],[131.02011718750012,-8.091308593749943],[131.17636718750006,-8.130761718749994],[130.86220703125,-8.31875]]],[[[118.24238281250004,-8.317773437499994],[118.61191406250006,-8.28066406249998],[118.71386718749997,-8.41494140624998],[118.926171875,-8.297656249999974],[119.12968750000002,-8.668164062499969],[118.74589843750002,-8.735449218749991],[118.83261718750012,-8.833398437499966],[118.47861328125012,-8.856445312499957],[118.37890625000003,-8.674609375000031],[118.18994140624997,-8.840527343749997],[117.06132812500002,-9.099023437499994],[116.78847656250005,-9.006347656250028],[116.83505859375012,-8.532421875000026],[117.16484375000007,-8.367187500000014],[117.56708984375004,-8.426367187499991],[117.80605468750005,-8.711132812500011],[117.96953125000002,-8.728027343749986],[118.23486328124997,-8.591894531249963],[117.81484375000005,-8.342089843749974],[117.7552734375,-8.149511718749991],[118.11748046875007,-8.12226562500004],[118.24238281250004,-8.317773437499994]]],[[[115.44785156250012,-8.155175781249994],[115.70429687500004,-8.40712890624998],[115.14492187500005,-8.849023437500037],[115.05507812500005,-8.573046874999946],[114.61318359375,-8.37832031249998],[114.46757812500007,-8.166308593749946],[114.93847656249997,-8.18710937500002],[115.15400390625004,-8.065722656249974],[115.44785156250012,-8.155175781249994]]],[[[129.83886718749997,-7.954589843749986],[129.71347656250012,-8.04072265625004],[129.60898437500006,-7.803417968750011],[129.81298828124997,-7.819726562499952],[129.83886718749997,-7.954589843749986]]],[[[126.80097656250004,-7.667871093750009],[126.4720703125,-7.950390625000011],[126.04003906250003,-7.885839843750006],[125.79824218750005,-7.984570312499969],[125.97529296875004,-7.663378906249989],[126.21367187500002,-7.706738281250026],[126.60957031250004,-7.571777343749972],[126.80097656250004,-7.667871093750009]]],[[[127.41943359375003,-7.623046875000028],[127.37070312500012,-7.512792968749949],[127.47519531250012,-7.531054687500031],[127.41943359375003,-7.623046875000028]]],[[[138.53535156250004,-8.273632812499969],[138.2962890625,-8.405175781250037],[137.65039062499997,-8.386132812499966],[138.08183593750002,-7.566210937500003],[138.29550781250012,-7.4384765625],[138.76982421875002,-7.390429687499974],[138.98906250000002,-7.696093749999989],[138.53535156250004,-8.273632812499969]]],[[[131.3255859375,-7.999511718749986],[131.11376953125003,-7.997363281249989],[131.13779296875012,-7.684863281250017],[131.64345703125,-7.11279296875],[131.73613281250007,-7.197070312500017],[131.64384765625002,-7.266894531249946],[131.62441406250005,-7.626171874999955],[131.3255859375,-7.999511718749986]]],[[[131.98203125000006,-7.202050781249966],[131.75078125000002,-7.116796875],[131.92226562500005,-7.104492187499986],[131.98203125000006,-7.202050781249966]]],[[[128.6701171875001,-7.183300781249969],[128.52978515625003,-7.134570312499989],[128.62773437500007,-7.06875],[128.6701171875001,-7.183300781249969]]],[[[120.77441406250003,-7.118945312500003],[120.64082031250004,-7.115820312499991],[120.63339843750006,-7.018261718750011],[120.77441406250003,-7.118945312500003]]],[[[113.84453125000007,-7.105371093749994],[113.12695312499997,-7.224121093750028],[112.72587890625007,-7.072753906250014],[112.86806640625,-6.899902343749972],[113.06738281250003,-6.879980468749991],[113.97470703125012,-6.873046875],[114.0736328125,-6.960156249999983],[113.84453125000007,-7.105371093749994]]],[[[115.37705078125006,-6.97080078125002],[115.22031250000012,-6.952539062500037],[115.24052734375007,-6.861230468749994],[115.54609375000004,-6.938671874999955],[115.37705078125006,-6.97080078125002]]],[[[105.25283203125005,-6.640429687499946],[105.12138671875007,-6.614941406249997],[105.26054687500002,-6.523925781250014],[105.25283203125005,-6.640429687499946]]],[[[134.53681640625004,-6.442285156249994],[134.32275390624997,-6.84873046875002],[134.09082031249997,-6.833789062500003],[134.10703125000006,-6.471582031250009],[134.19462890625007,-6.459765625],[134.11464843750005,-6.190820312500009],[134.53681640625004,-6.442285156249994]]],[[[107.37392578125005,-6.007617187499989],[107.66679687500002,-6.215820312499957],[108.33017578125012,-6.286035156249966],[108.67783203125006,-6.790527343749972],[110.42626953124997,-6.947265625000028],[110.83476562500002,-6.424218749999952],[110.97226562500012,-6.435644531249977],[111.18154296875005,-6.686718749999969],[111.54033203125002,-6.648242187500031],[112.0873046875,-6.89335937499996],[112.53925781250004,-6.926464843749955],[112.64873046875007,-7.221289062499977],[112.7943359375,-7.304492187499974],[112.79453125000012,-7.55244140625004],[113.01357421875005,-7.657714843749986],[113.49765625000006,-7.723828124999955],[114.07070312500005,-7.633007812500011],[114.40927734375012,-7.79248046875],[114.38691406250004,-8.405175781250037],[114.58378906250002,-8.769628906250034],[113.25332031250005,-8.286718749999963],[112.67880859375006,-8.409179687499957],[111.50996093750004,-8.30507812499998],[110.60722656250002,-8.149414062499972],[109.28164062500005,-7.704882812500003],[108.74121093749997,-7.667089843750034],[108.45175781250006,-7.79697265625002],[107.91748046875003,-7.724121093750014],[107.28496093750007,-7.471679687500014],[106.45527343750004,-7.368652343749986],[106.51972656250004,-7.053710937499943],[106.19824218749997,-6.927832031249977],[105.25546875000012,-6.835253906250031],[105.37089843750002,-6.664355468750031],[105.48369140625007,-6.781542968750017],[105.65507812500002,-6.469531249999946],[105.78691406250002,-6.456933593749966],[105.86826171875006,-6.11640625000004],[106.075,-5.914160156249963],[106.82519531249997,-6.098242187499977],[107.0462890625,-5.90419921874998],[107.37392578125005,-6.007617187499989]]],[[[120.52832031249997,-6.2984375],[120.48730468749997,-6.464843749999972],[120.47734375000007,-5.775292968750009],[120.52832031249997,-6.2984375]]],[[[112.7194335937501,-5.81103515625],[112.58603515625006,-5.803613281249994],[112.69003906250006,-5.726171875000034],[112.7194335937501,-5.81103515625]]],[[[132.80712890625003,-5.850781250000011],[132.68144531250002,-5.91259765625],[132.63017578125002,-5.60703125],[132.80712890625003,-5.850781250000011]]],[[[134.74697265625,-5.707031249999957],[134.71416015625007,-6.29511718750004],[134.44111328125004,-6.334863281249966],[134.15488281250006,-6.06289062499998],[134.3019531250001,-6.009765624999986],[134.34306640625002,-5.833007812499943],[134.20537109375002,-5.707226562499997],[134.34130859375003,-5.712890624999986],[134.57080078124997,-5.42734375],[134.74697265625,-5.707031249999957]]],[[[132.92626953124997,-5.902050781249983],[132.84501953125002,-5.987988281249997],[133.13847656250002,-5.317871093749986],[133.11962890625003,-5.575976562499989],[132.92626953124997,-5.902050781249983]]],[[[102.36718750000003,-5.478710937499983],[102.1107421875,-5.32255859374996],[102.3717773437501,-5.366406250000011],[102.36718750000003,-5.478710937499983]]],[[[123.62675781250007,-5.271582031249963],[123.58261718750006,-5.36738281250004],[123.54277343750002,-5.271093749999963],[123.62675781250007,-5.271582031249963]]],[[[122.04296874999997,-5.437988281250028],[121.80849609375,-5.256152343750017],[121.91367187500012,-5.072265624999957],[122.04101562500003,-5.158789062499991],[122.04296874999997,-5.437988281250028]]],[[[122.64511718750012,-5.26943359374998],[122.5638671875,-5.3875],[122.28310546875,-5.319531249999969],[122.39628906250002,-5.069824218749986],[122.36894531250007,-4.767187499999977],[122.70195312500002,-4.61865234375],[122.75986328125012,-4.933886718750003],[122.61406250000007,-5.138671874999986],[122.64511718750012,-5.26943359374998]]],[[[123.17978515625006,-4.551171875000023],[123.195703125,-4.82265625],[123.05517578124997,-4.748242187500026],[122.97167968750003,-5.138476562500031],[123.18730468750007,-5.333007812499957],[122.96875,-5.405761718749943],[122.81210937500012,-5.671289062499952],[122.64501953124997,-5.663378906250031],[122.58642578124997,-5.488867187500006],[122.76650390625005,-5.210156249999983],[122.85332031250007,-4.618359375000026],[123.074609375,-4.38691406250004],[123.17978515625006,-4.551171875000023]]],[[[133.57080078124997,-4.245898437500003],[133.621875,-4.299316406249957],[133.32089843750006,-4.111035156249969],[133.57080078124997,-4.245898437500003]]],[[[123.2423828125001,-4.112988281250011],[123.07617187499997,-4.227148437499991],[122.96904296875002,-4.029980468749969],[123.21191406250003,-3.997558593750028],[123.2423828125001,-4.112988281250011]]],[[[128.56259765625012,-3.58544921875],[128.39160156250003,-3.637890625000026],[128.45156250000005,-3.514746093749991],[128.56259765625012,-3.58544921875]]],[[[128.2755859375001,-3.67460937499996],[127.97802734374997,-3.770996093749972],[127.925,-3.69931640625002],[128.32910156249997,-3.51591796874996],[128.2755859375001,-3.67460937499996]]],[[[116.42412109375007,-3.464453124999963],[116.38779296875012,-3.636718749999972],[116.3265625,-3.539062499999972],[116.42412109375007,-3.464453124999963]]],[[[116.30332031250006,-3.868164062499957],[116.05878906250004,-4.006933593749991],[116.06357421875006,-3.457910156249952],[116.26972656250004,-3.251074218750006],[116.30332031250006,-3.868164062499957]]],[[[126.86113281250007,-3.087890624999986],[127.22734375000007,-3.391015625],[127.22958984375006,-3.633007812500011],[126.68632812500007,-3.823632812500037],[126.21455078125004,-3.605175781250026],[126.05654296875,-3.420996093749991],[126.08828125,-3.105468750000014],[126.86113281250007,-3.087890624999986]]],[[[106.88642578125004,-3.005273437500023],[106.7428710937501,-2.932812500000011],[106.91064453124997,-2.93398437499998],[106.88642578125004,-3.005273437500023]]],[[[129.75468750000007,-2.865820312500034],[130.3791015625001,-2.989355468749977],[130.56992187500006,-3.130859375000028],[130.85996093750006,-3.570312500000028],[130.805078125,-3.85771484374996],[129.844140625,-3.327148437499957],[129.51171875000003,-3.32851562499998],[129.46767578125005,-3.453222656249977],[128.8625,-3.234960937500006],[128.51660156249997,-3.449121093750037],[128.13203125000004,-3.157421875000026],[127.90234374999997,-3.496289062499955],[127.87792968749997,-3.222070312499966],[128.19853515625002,-2.865917968749969],[128.99111328125,-2.82851562499998],[129.17441406250006,-2.933496093749966],[129.48417968750002,-2.785742187499977],[129.75468750000007,-2.865820312500034]]],[[[100.42509765625007,-3.182910156249974],[100.46513671875007,-3.32851562499998],[100.20429687500004,-2.98681640625],[100.19853515625002,-2.785546875000023],[100.45458984375003,-3.001953124999972],[100.42509765625007,-3.182910156249974]]],[[[108.2072265625001,-2.997656249999977],[108.05527343750006,-3.22685546874996],[107.85820312500002,-3.086328125000023],[107.61445312500004,-3.209375],[107.56347656250003,-2.920117187499997],[107.66630859375002,-2.566308593750037],[107.83779296875005,-2.530273437499972],[108.21513671875002,-2.696972656250011],[108.29062500000012,-2.829980468750023],[108.2072265625001,-2.997656249999977]]],[[[100.20410156249997,-2.741015625000017],[100.01494140625007,-2.819726562499966],[99.98789062500006,-2.525390624999957],[100.20410156249997,-2.741015625000017]]],[[[99.84306640625007,-2.343066406250031],[99.60703125000012,-2.257519531250011],[99.57216796875005,-2.025781249999966],[99.84306640625007,-2.343066406250031]]],[[[126.055078125,-2.451269531249963],[125.86289062500006,-2.077148437499943],[125.92275390625,-1.974804687499969],[126.055078125,-2.451269531249963]]],[[[126.02421875000007,-1.789746093750011],[126.33173828125004,-1.822851562500006],[125.47919921875004,-1.940039062499991],[125.38720703124997,-1.843066406249946],[126.02421875000007,-1.789746093750011]]],[[[130.35332031250007,-1.690527343749963],[130.41884765625,-1.971289062499963],[130.24804687500003,-2.047753906249994],[129.7376953125,-1.866894531250011],[130.35332031250007,-1.690527343749963]]],[[[124.96953125000007,-1.70546875],[125.18789062500005,-1.712890624999986],[125.31406250000006,-1.877148437499969],[124.41777343750002,-2.005175781250031],[124.32968750000012,-1.858886718749972],[124.41757812500006,-1.659277343749991],[124.96953125000007,-1.70546875]]],[[[135.47421875000006,-1.591796875000014],[136.89257812500003,-1.799707031249994],[136.22812500000012,-1.893652343749949],[135.47421875000006,-1.591796875000014]]],[[[108.953125,-1.61962890625],[108.83789062499997,-1.661621093750028],[108.80371093750003,-1.567773437499994],[108.953125,-1.61962890625]]],[[[106.04570312500002,-1.669433593750014],[106.36591796875004,-2.464843749999972],[106.81845703125006,-2.573339843749963],[106.6120117187501,-2.895507812499957],[106.66718750000004,-3.071777343749986],[105.99873046875004,-2.824902343749955],[105.7858398437501,-2.18134765625004],[105.13339843750012,-2.042578125],[105.45957031250006,-1.574707031249986],[105.58544921875003,-1.526757812499994],[105.7008789062501,-1.731054687499963],[105.7204101562501,-1.533886718750026],[105.91005859375,-1.504980468749991],[106.04570312500002,-1.669433593750014]]],[[[123.59755859375,-1.704296875000011],[123.48251953125006,-1.681445312499974],[123.52851562500004,-1.502832031250009],[123.59755859375,-1.704296875000011]]],[[[128.1530273437501,-1.66054687499998],[127.56162109375012,-1.728515624999972],[127.39501953125003,-1.589843749999972],[127.64667968750004,-1.332421875],[128.1530273437501,-1.66054687499998]]],[[[123.2123046875,-1.171289062499966],[123.23779296874997,-1.389355468749983],[123.43476562500004,-1.236816406249986],[123.54726562500005,-1.337402343749957],[123.51191406250004,-1.447363281249977],[123.27490234374997,-1.437207031249955],[123.17294921875006,-1.616015624999974],[123.15039062500003,-1.304492187500003],[122.89042968750007,-1.58720703124996],[122.81083984375002,-1.432128906249986],[122.90800781250002,-1.182226562499963],[123.2123046875,-1.171289062499966]]],[[[109.71025390625007,-1.1806640625],[109.46367187500002,-1.277539062500026],[109.4759765625,-0.9853515625],[109.74335937500004,-1.039355468749989],[109.71025390625007,-1.1806640625]]],[[[134.96533203124997,-1.116015624999974],[134.86171875,-1.114160156249952],[134.82792968750002,-0.978808593750003],[134.99628906250004,-1.03408203124998],[134.96533203124997,-1.116015624999974]]],[[[99.16386718750007,-1.777929687500006],[98.82773437500006,-1.609960937499977],[98.60175781250004,-1.197851562499949],[98.67607421875007,-0.970507812500003],[98.93261718750003,-0.954003906250009],[99.2672851562501,-1.62773437499996],[99.16386718750007,-1.777929687500006]]],[[[131.00185546875005,-1.315527343750034],[130.78232421875006,-1.255468749999963],[130.67294921875006,-0.959765625000031],[131.03300781250007,-0.917578124999963],[131.00185546875005,-1.315527343750034]]],[[[135.38300781250004,-0.6513671875],[135.89355468749997,-0.725781249999969],[136.37529296875007,-1.094042968750031],[136.1647460937501,-1.214746093750023],[135.91503906250003,-1.178417968749997],[135.74707031249997,-0.823046874999974],[135.64570312500004,-0.881933593749991],[135.38300781250004,-0.6513671875]]],[[[127.30039062500012,-0.780957031250026],[127.1564453125001,-0.760937500000026],[127.20908203125006,-0.619335937499955],[127.30039062500012,-0.780957031250026]]],[[[130.6266601562501,-0.528710937499966],[130.46542968750006,-0.486523437499983],[130.6159179687501,-0.417285156250003],[130.6266601562501,-0.528710937499966]]],[[[121.86435546875012,-0.406835937500006],[121.88125,-0.502636718749983],[121.65527343749997,-0.526171874999989],[121.86435546875012,-0.406835937500006]]],[[[140.97343750000007,-2.609765625],[140.97353515625,-2.803417968750026],[140.975,-6.346093750000023],[140.86230468749997,-6.740039062499989],[140.97519531250006,-6.90537109375002],[140.97617187500012,-9.11875],[140.00292968749997,-8.19550781250004],[140.11699218750002,-7.923730468750009],[139.93476562500004,-8.101171875],[139.38564453125,-8.189062499999963],[139.24882812500002,-7.982421874999972],[138.890625,-8.237792968749943],[139.08798828125012,-7.587207031250017],[138.74794921875,-7.25146484375],[139.17685546875006,-7.1904296875],[138.84570312500003,-7.13632812499999],[138.60136718750007,-6.936523437499972],[138.86455078125007,-6.858398437499943],[138.43867187500004,-6.343359375],[138.2962890625,-5.94902343749996],[138.37460937500006,-5.84365234374998],[138.19960937500005,-5.80703125],[138.33964843750007,-5.675683593749966],[138.08710937500004,-5.70917968750004],[138.06083984375002,-5.46523437499998],[137.27978515624997,-4.945410156249949],[136.61884765625004,-4.81875],[135.97968750000004,-4.530859374999963],[135.19560546875007,-4.450683593749972],[134.67968749999997,-4.079101562499943],[134.70654296875003,-3.954785156250026],[134.88652343750007,-3.938476562499986],[134.26621093750012,-3.945800781249972],[134.14707031250006,-3.79677734374998],[133.97382812500004,-3.817968750000034],[133.67832031250006,-3.4794921875],[133.8415039062501,-3.054785156249991],[133.70039062500004,-3.0875],[133.653125,-3.364355468749991],[133.51816406250012,-3.411914062500003],[133.40087890625003,-3.899023437500034],[133.24873046875004,-4.062304687499989],[132.91445312500005,-4.05693359374996],[132.75390625000003,-3.703613281250014],[132.86972656250006,-3.550976562499997],[132.75136718750005,-3.294628906249997],[131.97119140624997,-2.788574218750014],[132.2306640625001,-2.680371093749997],[132.725,-2.789062500000028],[133.19101562500006,-2.43779296874996],[133.70009765625005,-2.624609375],[133.75332031250005,-2.450683593750014],[133.90488281250012,-2.390917968750003],[133.79101562500003,-2.293652343749997],[133.92158203125004,-2.102050781249957],[132.96279296875005,-2.272558593749963],[132.30761718749997,-2.24228515625002],[132.02343749999997,-1.99033203125002],[131.93037109375004,-1.559667968750034],[131.29375,-1.393457031250009],[130.99589843750007,-1.42470703124998],[131.1908203125,-1.165820312500003],[131.2572265625,-0.855468750000014],[131.80429687500006,-0.703808593750026],[132.39375,-0.355468750000028],[132.85644531250003,-0.417382812500023],[133.47265624999997,-0.726171874999963],[133.97451171875,-0.744335937500026],[134.11152343750004,-0.84677734375002],[134.07197265625004,-1.001855468749994],[134.25957031250007,-1.362988281250026],[134.105859375,-1.720996093749946],[134.19482421875003,-2.309082031249943],[134.45996093749997,-2.83232421874996],[134.48330078125,-2.583007812499972],[134.62744140624997,-2.536718749999963],[134.70214843749997,-2.933593749999986],[134.84335937500006,-2.909179687499986],[134.88681640625006,-3.209863281249966],[135.25156250000012,-3.368554687499966],[135.48662109375002,-3.34511718749998],[135.85917968750002,-2.99531250000004],[136.38994140625002,-2.273339843750037],[137.07207031250002,-2.105078124999949],[137.1710937500001,-2.025488281249991],[137.1234375,-1.840917968749963],[137.80625000000012,-1.483203125],[139.78955078125003,-2.34824218750002],[140.62255859374997,-2.44580078125],[140.74746093750005,-2.607128906249997],[140.97343750000007,-2.609765625]]],[[[104.47421875000012,-0.334667968749955],[104.59013671875002,-0.466601562500017],[104.36318359375,-0.658593749999966],[104.25712890625002,-0.463281249999966],[104.47421875000012,-0.334667968749955]]],[[[127.56699218750006,-0.318945312499949],[127.68242187500002,-0.46835937500002],[127.60498046874997,-0.610156249999946],[127.88017578125002,-0.808691406249991],[127.7611328125,-0.883691406249994],[127.62382812500002,-0.76601562499999],[127.46269531250002,-0.80595703124996],[127.46865234375,-0.64296875],[127.3,-0.500292968749946],[127.32509765625,-0.335839843750023],[127.45517578125012,-0.406347656249991],[127.56699218750006,-0.318945312499949]]],[[[127.24990234375005,-0.4953125],[127.11914062500003,-0.520507812499986],[127.12646484375003,-0.278613281250003],[127.29003906250003,-0.284375],[127.24990234375005,-0.4953125]]],[[[103.73652343750004,-0.347949218750003],[103.461328125,-0.357617187500011],[103.54892578125006,-0.227539062499986],[103.73652343750004,-0.347949218750003]]],[[[130.81328125000007,-0.004101562500026],[131.27685546875003,-0.149804687499952],[131.33974609375005,-0.290332031249989],[131.00537109374997,-0.360742187500037],[130.62216796875006,-0.0859375],[130.89921875000002,-0.344433593749997],[130.7501953125001,-0.44384765625],[130.6886718750001,-0.296582031250011],[130.55078124999997,-0.366406250000026],[130.23662109375002,-0.209667968749983],[130.3625,-0.072851562500006],[130.81328125000007,-0.004101562500026]]],[[[98.45927734375007,-0.530468749999969],[98.30966796875012,-0.531835937499977],[98.4271484375,-0.226464843750037],[98.3229492187501,-0.000781249999974],[98.54414062500004,-0.257617187499989],[98.45927734375007,-0.530468749999969]]],[[[104.77861328125007,-0.175976562499955],[105.00537109374997,-0.282812499999963],[104.44707031250002,-0.189160156249983],[104.54267578125004,0.01772460937498],[104.77861328125007,-0.175976562499955]]],[[[103.28447265625002,0.541943359375011],[103.13955078125,0.549072265625043],[103.18740234375,0.699755859375017],[103.28447265625002,0.541943359375011]]],[[[103.0275390625001,0.746630859374974],[102.4904296875001,0.856640625],[102.50664062500002,1.088769531250037],[103.00244140624997,0.859277343750009],[103.0275390625001,0.746630859374974]]],[[[103.42392578125012,1.048339843749972],[103.31542968750003,1.071289062500028],[103.37998046875006,1.133642578125034],[103.42392578125012,1.048339843749972]]],[[[103.16640625000005,0.870166015625003],[102.7018554687501,1.0537109375],[102.72558593749997,1.158837890625023],[102.99941406250005,1.067773437500023],[103.16640625000005,0.870166015625003]]],[[[104.02480468750005,1.180566406250009],[104.13984375000004,1.165576171874974],[104.06611328125004,0.989550781249989],[103.93222656250012,1.071386718749963],[104.02480468750005,1.180566406250009]]],[[[104.58535156250005,1.21611328124996],[104.66289062500002,1.04951171875004],[104.57519531250003,0.831933593750037],[104.43925781250002,1.050439453125051],[104.25195312499997,1.014892578125],[104.36181640624997,1.18149414062502],[104.58535156250005,1.21611328124996]]],[[[102.4271484375,0.990136718750023],[102.27958984375002,1.075683593750043],[102.25634765625003,1.397070312499963],[102.44287109374997,1.234228515625006],[102.4271484375,0.990136718750023]]],[[[97.48154296875006,1.465087890624972],[97.93193359375002,0.973925781250003],[97.82041015625012,0.564453124999986],[97.683984375,0.596093750000037],[97.60390625000005,0.83388671874998],[97.40537109375012,0.946972656250026],[97.07919921875006,1.425488281249983],[97.35595703124997,1.539746093749997],[97.48154296875006,1.465087890624972]]],[[[102.49189453125004,1.459179687500011],[102.49941406250005,1.330908203124991],[102.02402343750012,1.607958984375031],[102.49189453125004,1.459179687500011]]],[[[124.88886718750004,0.995312500000011],[124.42753906250002,0.470605468750051],[123.75380859375,0.305517578124991],[123.26542968750007,0.326611328125026],[122.996875,0.493505859375006],[121.01298828125002,0.441699218750017],[120.57900390625,0.5283203125],[120.19228515625,0.268505859374997],[120.01328125000012,-0.196191406249994],[120.062890625,-0.555566406250023],[120.240625,-0.868261718749949],[120.51757812499997,-1.039453125],[120.66738281250005,-1.370117187499972],[121.14853515625012,-1.33945312500002],[121.5755859375,-0.828515625000023],[121.96962890625005,-0.933300781249969],[122.27998046875004,-0.757031250000026],[122.88876953125006,-0.755175781250003],[122.8294921875,-0.658886718750026],[123.17148437500012,-0.57070312499999],[123.37968750000002,-0.648535156249949],[123.43417968750006,-0.778222656249994],[123.37792968749997,-1.004101562500011],[122.90283203125003,-0.900976562499963],[122.25068359375004,-1.555273437500034],[121.8585937500001,-1.69326171874998],[121.65097656250006,-1.895410156249952],[121.35546874999997,-1.878222656250003],[122.29169921875004,-2.907617187500023],[122.39902343750006,-3.200878906249997],[122.25292968749997,-3.620410156250017],[122.68964843750004,-4.084472656249972],[122.84794921875002,-4.064550781250006],[122.8722656250001,-4.391992187500009],[122.71972656250003,-4.340722656249952],[122.11425781250003,-4.540234375000011],[122.03808593749997,-4.832421875000023],[121.58867187500007,-4.759570312500017],[121.48652343750004,-4.581054687499972],[121.61806640625,-4.092675781249952],[120.89179687500004,-3.520605468750034],[121.05429687500012,-3.167089843749949],[121.0521484375,-2.751660156249955],[120.87939453124997,-2.64560546875002],[120.65361328125002,-2.667578124999977],[120.26103515625007,-2.949316406249991],[120.43662109375012,-3.70732421874996],[120.42011718750004,-4.617382812500011],[120.27929687499997,-5.146093749999977],[120.4303710937501,-5.591015625000026],[119.9515625,-5.577636718749972],[119.71728515625003,-5.693359375000014],[119.55742187500007,-5.611035156250026],[119.36035156249997,-5.314160156250026],[119.59404296875007,-4.523144531249997],[119.62363281250006,-4.034375],[119.46748046875004,-3.512988281249989],[118.99462890624997,-3.537597656250028],[118.86767578124997,-3.39804687500002],[118.78330078125006,-2.720800781249977],[119.09218750000005,-2.482910156250014],[119.32187500000012,-1.929687500000014],[119.308984375,-1.408203125],[119.508203125,-0.906738281249972],[119.71132812500005,-0.680761718750034],[119.84433593750006,-0.861914062499991],[119.721875,-0.088476562499991],[119.865625,0.040087890625003],[119.80927734375004,0.238671875000051],[119.9132812500001,0.445068359375],[120.26953125000003,0.970800781249991],[120.60253906249997,0.854394531249994],[120.86796875000007,1.25283203124998],[121.0817382812501,1.327636718750028],[121.40410156250002,1.243603515624969],[121.59179687499997,1.067968749999977],[122.43662109375006,1.018066406250028],[122.83828125,0.845703125],[123.06650390625006,0.941796875000037],[123.93076171875006,0.850439453124977],[124.53369140624997,1.230468750000043],[124.94707031250002,1.672167968749974],[125.11093750000012,1.685693359374966],[125.2337890625,1.502294921875006],[124.88886718750004,0.995312500000011]]],[[[101.70810546875006,2.078417968750045],[101.71943359375004,1.789160156250006],[101.50078125000002,1.733203124999974],[101.40966796875003,2.021679687500026],[101.70810546875006,2.078417968750045]]],[[[127.73271484375007,0.848144531250043],[127.8810546875001,0.832128906249977],[127.96728515624997,1.042578125000048],[128.16074218750006,1.1578125],[128.22246093750002,1.400634765624986],[128.68837890625,1.572558593750017],[128.70263671874997,1.106396484374997],[128.29882812500003,0.87680664062502],[128.26064453125,0.733789062500023],[128.61123046875,0.549951171875051],[128.89960937500004,0.216259765625011],[127.9831054687501,0.471875],[127.88740234375004,0.298339843750043],[127.97783203125002,-0.24833984374996],[128.4254882812501,-0.892675781249949],[128.04638671875003,-0.706054687499943],[127.69160156250004,-0.241894531249983],[127.70869140625004,0.288085937499986],[127.53710937500003,0.610888671875031],[127.60800781250006,0.848242187499977],[127.42851562500002,1.139990234374991],[127.63173828125,1.843701171875011],[128.03642578125002,2.199023437500017],[127.88681640625012,1.83295898437504],[128.0109375000001,1.701220703125031],[128.01171874999997,1.331738281249983],[127.65283203124997,1.013867187499969],[127.73271484375007,0.848144531250043]]],[[[97.3341796875001,2.075634765625011],[97.10830078125,2.216894531250006],[97.29140625,2.200830078125023],[97.3341796875001,2.075634765625011]]],[[[128.45390625000002,2.051757812500028],[128.29589843749997,2.034716796875017],[128.2179687500001,2.297460937499991],[128.60214843750012,2.59760742187504],[128.68847656250003,2.473681640625017],[128.62324218750004,2.224414062500031],[128.45390625000002,2.051757812500028]]],[[[96.46367187500002,2.360009765625037],[95.80859374999997,2.655615234375034],[95.7171875,2.825976562500017],[95.89580078125007,2.8890625],[96.41728515625007,2.515185546875031],[96.46367187500002,2.360009765625037]]],[[[108.8875,2.905419921875037],[108.7865234375,2.885644531250009],[108.88574218750003,2.998974609374997],[108.8875,2.905419921875037]]],[[[105.76035156250006,2.863037109375014],[105.69218750000002,3.0625],[105.83671875000007,2.97651367187504],[105.76035156250006,2.863037109375014]]],[[[106.28525390625006,3.15712890624998],[106.28369140624997,3.088232421874977],[106.20097656250002,3.204882812500031],[106.28525390625006,3.15712890624998]]],[[[117.65839843750004,3.280517578124986],[117.54785156250003,3.43198242187502],[117.68085937500004,3.407519531250017],[117.65839843750004,3.280517578124986]]],[[[125.65810546875,3.436035156250043],[125.51152343750007,3.461132812500011],[125.46884765625006,3.73325195312502],[125.65810546875,3.436035156250043]]],[[[117.88476562499997,4.186132812500006],[117.92285156250003,4.054296874999977],[117.73681640624997,4.004003906250034],[117.64902343750012,4.168994140624974],[117.88476562499997,4.186132812500006]]],[[[108.31601562500006,3.689648437500026],[108.10039062500002,3.70454101562504],[108.24326171875006,3.810351562500017],[108.00234375,3.982861328124983],[108.24833984375002,4.21713867187502],[108.39287109375007,3.986181640625034],[108.31601562500006,3.689648437500026]]],[[[117.5744140625001,4.17060546875004],[117.46533203124997,4.076074218749966],[117.77724609375005,3.689257812500031],[117.05595703125007,3.622656249999963],[117.34628906250006,3.426611328124991],[117.35244140625,3.19375],[117.61064453125002,3.064355468749994],[117.56914062500002,2.92929687500002],[117.69765625,2.887304687499991],[117.6388671875001,2.825292968749963],[118.0666015625001,2.317822265624969],[117.7892578125001,2.026855468750014],[118.98496093750006,0.982128906249983],[118.53476562500006,0.813525390625017],[118.19609375000002,0.874365234374977],[117.91162109374997,1.098681640625017],[117.96425781250005,0.889550781250051],[117.74511718749997,0.72963867187498],[117.52216796875004,0.235888671875017],[117.46289062500003,-0.323730468749957],[117.5625,-0.770898437500009],[116.91396484375,-1.223632812499972],[116.73984375000006,-1.044238281250017],[116.75341796874997,-1.327343749999955],[116.27548828125006,-1.784863281249997],[116.42431640625003,-1.784863281249997],[116.45195312500002,-1.923144531250017],[116.31396484374997,-2.139843750000011],[116.56542968749997,-2.299707031249994],[116.52929687499997,-2.51054687499996],[116.31679687500005,-2.55185546875002],[116.33066406250012,-2.902148437499974],[116.16630859375002,-2.934570312500014],[116.2572265625,-3.126367187500009],[115.95615234375012,-3.595019531250003],[114.6935546875001,-4.169726562500017],[114.5255859375001,-3.376660156250011],[114.44599609375004,-3.481835937500037],[114.34433593750012,-3.444433593749963],[114.34433593750012,-3.23515625],[114.23632812500003,-3.36113281249996],[114.0822265625001,-3.27890625],[113.70507812499997,-3.45527343750004],[113.6100585937501,-3.195703125],[113.34316406250005,-3.246484374999966],[113.03398437500002,-2.933496093749966],[112.97148437500002,-3.187109375000034],[112.75800781250004,-3.322167968750009],[112.60029296875004,-3.400488281249977],[112.28496093750002,-3.32099609375004],[111.85810546875004,-3.551855468750006],[111.82304687500007,-3.057226562499949],[111.69472656250005,-2.88945312499996],[110.93007812500005,-3.071093750000017],[110.82968750000012,-2.9951171875],[110.89931640625,-2.908593749999952],[110.703125,-3.020898437500009],[110.57402343750007,-2.89140625],[110.25605468750004,-2.966113281249946],[110.09658203125,-2.001367187499966],[109.95986328125,-1.862792968749972],[109.98330078125,-1.274804687499994],[109.78740234375007,-1.011328124999963],[109.25878906250003,-0.807421874999989],[109.37275390625004,-0.638183593749972],[109.12109375000003,-0.39091796874996],[109.2575195312501,0.031152343750051],[108.94453125000004,0.355664062499997],[108.91679687500007,0.912646484375045],[108.95859375000006,1.134619140624963],[109.1315429687501,1.253857421875011],[109.01025390624997,1.239648437500051],[109.07587890625004,1.495898437500031],[109.37851562500006,1.922705078125034],[109.62890625000003,2.027539062499983],[109.53896484375,1.89619140625004],[109.65400390625004,1.614892578125023],[110.50576171875005,0.861962890625023],[111.10136718750002,1.050537109374986],[111.80898437500005,1.011669921874969],[112.078515625,1.143359374999974],[112.1857421875001,1.4390625],[112.47617187500006,1.559082031250028],[112.94296875000006,1.566992187500034],[113.00654296875004,1.433886718750003],[113.6222656250001,1.2359375],[113.90234375000003,1.434277343749997],[114.5125,1.452001953124963],[114.83056640625003,1.980029296874989],[114.78642578125002,2.250488281250014],[115.1791015625,2.523193359374972],[115.08076171875004,2.63422851562504],[115.117578125,2.89487304687502],[115.24697265625005,3.025927734374989],[115.45439453125002,3.034326171875009],[115.67880859375006,4.193017578124994],[115.86074218750005,4.348046875000037],[116.51474609375006,4.370800781249969],[117.10058593750003,4.337060546875023],[117.5744140625001,4.17060546875004]]],[[[126.81660156250004,4.033496093750003],[126.70449218750005,4.070996093749997],[126.81357421875006,4.258496093750011],[126.72207031250005,4.344189453124969],[126.75732421874997,4.547900390624989],[126.9210937500001,4.291015624999972],[126.81660156250004,4.033496093750003]]],[[[96.49257812500005,5.229345703124991],[97.54716796875002,5.205859375],[98.2484375,4.41455078125],[98.3073242187501,4.09287109375002],[99.73232421875005,3.183056640625026],[100.523828125,2.18916015625004],[100.88789062500004,1.948242187499986],[100.82822265625012,2.242578125],[101.04619140625002,2.257470703125023],[101.47666015625006,1.693066406250054],[102.019921875,1.442138671875],[102.38994140625007,0.84199218750004],[103.03183593750006,0.57890625],[103.0075195312501,0.415332031249974],[102.55,0.216455078124966],[103.33896484375012,0.513720703125045],[103.67265625000007,0.288916015624977],[103.78671875000012,0.046972656249991],[103.42851562500007,-0.19179687499998],[103.40517578125005,-0.36220703124998],[103.5091796875,-0.465527343749969],[103.43857421875006,-0.575585937500009],[103.72109375,-0.886718749999986],[104.36054687500004,-1.038378906249974],[104.51591796875002,-1.81943359375002],[104.84521484375003,-2.092968749999969],[104.65078125000005,-2.595214843749972],[104.97080078125012,-2.370898437500017],[105.39697265624997,-2.380175781249946],[106.0443359375,-3.10625],[105.84375,-3.61367187499998],[105.93046875000007,-3.833007812499986],[105.83144531250005,-4.16289062499996],[105.88720703124997,-5.009570312499974],[105.74833984375007,-5.818261718749966],[105.34941406250007,-5.549511718750011],[105.08134765625002,-5.74550781249998],[104.63955078125005,-5.520410156250037],[104.68398437500005,-5.89267578125002],[104.60156249999997,-5.90458984374996],[103.8314453125,-5.079589843750028],[102.53769531250006,-4.152148437499989],[102.12753906250006,-3.599218749999963],[101.57861328124997,-3.166992187500014],[100.88955078125,-2.248535156249957],[100.85527343750002,-1.934179687499949],[100.30820312500006,-0.82666015625],[99.66982421875005,0.045068359375037],[99.15917968749997,0.351757812499997],[98.59531250000006,1.864599609375006],[97.70078125000006,2.358544921875009],[97.59082031249997,2.846582031250037],[97.3913085937501,2.975292968749969],[96.9689453125001,3.575146484374969],[96.44472656250005,3.81630859374998],[95.57861328125003,4.661962890625048],[95.20664062500006,5.284033203125034],[95.22783203125002,5.564794921875034],[95.62890625000003,5.609082031249997],[96.13330078125003,5.294287109374991],[96.49257812500005,5.229345703124991]]]]},"properties":{"name":"Indonesia","childNum":107}},{"geometry":{"type":"Polygon","coordinates":[[[-4.412060546874983,54.185351562499996],[-4.785351562499983,54.073046875],[-4.424707031249994,54.407177734375],[-4.412060546874983,54.185351562499996]]]},"properties":{"name":"Isle of Man","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[75.32221348233018,32.28516356678968],[75.62496871116024,32.28516356678968],[75.73585997688717,32.78417426256088],[76.32728006076415,32.87658365066666],[76.62299010270264,33.32014871357439],[77.06655516561037,33.301666835953235],[77.71342088235082,32.6917648744551],[78.10154031239509,32.87658365066666],[78.49194250885338,32.53122786149202],[78.38964843749997,32.51987304687498],[78.41748046874997,32.466699218749994],[78.4552734375001,32.30034179687502],[78.49589843750002,32.21577148437504],[78.72558593750009,31.983789062500023],[78.71972656250009,31.887646484374983],[78.69345703125006,31.740380859374994],[78.7550781250001,31.55029296875],[78.74355468750005,31.323779296875017],[79.10712890625004,31.402636718750102],[79.38847656250013,31.064208984375085],[79.66425781250004,30.96523437499999],[79.92451171875004,30.888769531250034],[80.20712890625006,30.683740234375023],[80.19121093750002,30.56840820312496],[80.87353515625003,30.290576171875045],[80.98544921875006,30.23710937499999],[81.01025390625014,30.164501953125097],[80.96611328125002,30.180029296875063],[80.90761718750005,30.171923828125017],[80.84814453125009,30.139746093750034],[80.81992187500012,30.119335937499955],[80.68408203125014,29.994335937500068],[80.54902343750015,29.899804687499994],[80.40185546875003,29.730273437500102],[80.31689453125014,29.572070312500017],[80.25488281250009,29.423339843750114],[80.25595703125006,29.318017578125136],[80.23300781250006,29.194628906250045],[80.16953125000012,29.124316406250102],[80.13046875000006,29.100390625000045],[80.08457031249995,28.994189453125074],[80.05166015625,28.870312500000068],[80.07070312500005,28.830175781250063],[80.22656250000003,28.723339843750125],[80.32480468750012,28.66640625000008],[80.41855468749995,28.61201171875001],[80.47910156250012,28.604882812499994],[80.49580078125015,28.635791015625074],[80.51787109375002,28.665185546875023],[80.58701171875006,28.64960937500004],[81.16894531250014,28.335009765625074],[81.85263671875018,27.867089843750136],[81.89687500000011,27.87446289062504],[81.94521484375005,27.89926757812495],[81.98769531250016,27.91376953125004],[82.03701171875,27.90058593750004],[82.11191406250006,27.86494140625004],[82.28769531250018,27.756542968749983],[82.45136718750004,27.671826171874955],[82.62988281249997,27.687060546875045],[82.67734375000006,27.67343749999995],[82.71083984375005,27.596679687500114],[82.73339843750003,27.518994140625097],[83.28974609375004,27.370996093750136],[83.36943359375002,27.410253906249977],[83.38398437500004,27.444824218750085],[83.44716796875011,27.46533203125],[83.55166015625011,27.456347656249932],[83.74697265625011,27.395947265625068],[83.8288085937501,27.377832031250108],[84.09101562499993,27.491357421875136],[84.22978515625007,27.427832031250006],[84.48085937500005,27.348193359375102],[84.61015625000002,27.298681640624977],[84.64072265625012,27.249853515624977],[84.65478515625014,27.20366210937499],[84.65380859375009,27.09169921875008],[84.68535156250013,27.041015625000057],[85.19179687500011,26.766552734375097],[85.29296875000009,26.741015625000045],[85.56845703125012,26.839843750000114],[85.64843749999997,26.829003906250023],[85.69990234375004,26.781640624999966],[85.73730468750003,26.639746093750034],[85.79453125000006,26.60415039062505],[86.00732421875009,26.64936523437504],[86.70136718750015,26.435058593750057],[87.01640625000002,26.555419921875085],[87.2874023437499,26.360302734375125],[87.41357421875014,26.42294921875009],[87.84921875000006,26.43691406250008],[87.99511718750014,26.38237304687499],[88.02695312500023,26.395019531250085],[88.05488281250004,26.43002929687492],[88.11152343750004,26.58642578125],[88.1615234375,26.724804687500125],[88.15722656250009,26.807324218750068],[88.1110351562501,26.928466796875057],[87.99316406250009,27.086083984374994],[87.984375,27.133935546874994],[88.14697265625014,27.749218750000097],[88.15029296875011,27.843310546875074],[88.10976562500005,27.87060546874997],[88.10898437499995,27.93300781250005],[88.14111328125003,27.948925781250097],[88.27519531250013,27.96884765625009],[88.42597656250015,28.011669921875097],[88.57792968750002,28.093359375000034],[88.80371093750003,28.006933593750034],[88.74902343749997,27.521875000000136],[88.7648437500001,27.429882812500068],[88.83251953125003,27.362841796875074],[88.89140625000002,27.316064453125136],[88.88164062500007,27.29746093750009],[88.76035156250006,27.21811523437509],[88.73876953125009,27.175585937499932],[88.85761718750015,26.961474609375017],[89.14824218750002,26.816162109375085],[89.33212890625018,26.848632812500114],[89.58613281250004,26.778955078125136],[89.60996093750012,26.719433593750097],[89.71093750000009,26.713916015625045],[89.76386718750004,26.7015625],[89.94316406250013,26.723925781249932],[90.12294921875011,26.754589843749983],[90.20605468749997,26.847509765625063],[90.34589843750004,26.890332031250097],[90.73964843750005,26.771679687500068],[91.2865234375,26.78994140625008],[91.42675781249997,26.867089843749966],[91.45585937500013,26.866894531250125],[91.51757812500009,26.807324218750068],[91.67158203124993,26.80200195312503],[91.84208984375013,26.852978515625125],[91.94375,26.860839843750114],[91.99833984375013,26.85498046875],[92.04970703125016,26.87485351562495],[92.73155507489682,26.833697862861648],[93.30975376159499,26.784950522650554],[93.61047043679247,27.32239435188504],[94.06979001484449,27.589407158584788],[95.10800937321915,27.749636881153737],[95.74000740838363,28.116850432722256],[96.19577594042592,28.04291597700983],[96.96279296875,27.698291015625017],[96.88359375000013,27.514843750000125],[96.90195312500012,27.43959960937508],[97.10371093749993,27.163330078125114],[97.10205078125003,27.115429687500125],[96.95341796875013,27.13330078125003],[96.79785156249997,27.29619140624999],[96.19082031250005,27.26127929687499],[95.20146484375007,26.641406250000017],[95.05976562500015,26.473974609375006],[95.06894531250006,26.191113281250097],[95.10839843750014,26.091406250000034],[95.12929687500011,26.070410156250034],[95.13242187500006,26.041259765624943],[94.99199218750002,25.77045898437504],[94.66777343750007,25.458886718749966],[94.55302734375013,25.215722656249994],[94.70371093750012,25.097851562499955],[94.49316406250003,24.637646484374983],[94.37724609375002,24.473730468750006],[94.29306640625012,24.321875],[94.07480468750006,23.8720703125],[93.68339843750007,24.00654296875004],[93.45214843750003,23.987402343750034],[93.32626953125006,24.064208984375057],[93.36601562500007,23.132519531249955],[93.34941406250007,23.08496093750003],[93.20390625000002,23.03701171875005],[93.07871093750018,22.718212890625097],[93.16201171875,22.360205078125006],[93.07060546875002,22.20942382812501],[92.96455078125015,22.003759765625034],[92.90947265625013,21.988916015625023],[92.85429687500002,22.010156250000108],[92.77138671875,22.104785156250017],[92.68896484375009,22.130957031250006],[92.63037109375014,22.011328124999977],[92.57490234374993,21.97807617187496],[92.5612304687501,22.04804687500001],[92.49140625000004,22.685400390625006],[92.46445312500006,22.734423828125045],[92.36162109375002,22.929003906250074],[92.33378906250002,23.242382812499955],[92.24609375000003,23.68359374999997],[92.04404296875006,23.677783203125017],[91.97851562500003,23.691992187500063],[91.92958984375011,23.685986328125097],[91.92949218750019,23.598242187499977],[91.93789062500011,23.504687500000102],[91.75419921875013,23.28730468750004],[91.75097656250003,23.053515625000017],[91.55351562500013,22.991552734375006],[91.43623046875004,23.19990234375001],[91.359375,23.06835937500003],[91.16044921875019,23.660644531250085],[91.35019531250012,24.06049804687501],[91.72656250000003,24.20507812499997],[91.84619140624997,24.175292968749943],[92.06416015625004,24.374365234375006],[92.11748046875002,24.493945312500017],[92.22666015625012,24.77099609374997],[92.22832031250002,24.881347656250085],[92.2512695312499,24.895068359375045],[92.38496093750004,24.848779296875023],[92.46835937500018,24.944140625000074],[92.04970703125016,25.16948242187499],[90.61308593750002,25.16772460937497],[90.11962890625003,25.21997070312497],[89.86630859375012,25.293164062499955],[89.81406250000006,25.305371093749955],[89.80087890625012,25.33613281250001],[89.82490234375004,25.56015625],[89.82294921875015,25.94140625000003],[89.67089843750009,26.213818359375125],[89.57275390625003,26.13232421875003],[89.54990234375006,26.00527343750008],[89.28925781250015,26.037597656250085],[89.01865234375012,26.410253906249977],[88.95195312500002,26.412109375],[88.97041015625004,26.250878906250023],[88.94072265625002,26.24536132812497],[88.68281250000004,26.291699218749983],[88.51826171875004,26.51777343750004],[88.36992187500002,26.56411132812508],[88.35146484375005,26.482568359374966],[88.38623046875003,26.471533203125034],[88.44042968749997,26.369482421875034],[88.33398437499997,26.257519531249955],[88.15078125000005,26.087158203125057],[88.1066406250001,25.841113281250045],[88.14746093749997,25.811425781250023],[88.50244140625009,25.53701171875008],[88.76914062500006,25.490478515625],[88.85478515625002,25.333544921875017],[88.94414062500002,25.290771484375],[88.92978515625012,25.222998046875063],[88.57382812500006,25.18789062499999],[88.45625,25.188427734375125],[88.37294921875016,24.961523437500063],[88.31337890625011,24.8818359375],[88.27949218750015,24.881933593750034],[88.18886718750016,24.920605468750097],[88.14980468750011,24.91464843749995],[88.04511718750015,24.71303710937508],[88.03027343750009,24.664453125000136],[88.02343750000003,24.627832031250136],[88.07910156250009,24.549902343750063],[88.14550781250003,24.485791015624955],[88.225,24.460644531249983],[88.3375,24.45385742187503],[88.49853515625003,24.34663085937504],[88.64228515625015,24.325976562500102],[88.72353515625011,24.27490234375],[88.7335937500001,24.230908203125097],[88.72656250000009,24.18623046875004],[88.71376953125016,24.069628906250102],[88.69980468750006,24.00253906249992],[88.56738281250009,23.674414062500034],[88.63574218749997,23.55],[88.69765625,23.493017578125034],[88.72441406250002,23.254980468750034],[88.89707031250018,23.21040039062501],[88.92812500000011,23.186621093749977],[88.89970703125002,22.843505859375057],[88.92070312500002,22.632031249999955],[89.05,22.274609374999983],[89.02792968750023,21.937207031249983],[88.94931640625018,21.937939453125125],[89.05166015625,21.654101562500045],[88.85751953125012,21.744677734375017],[88.74501953125011,21.584375],[88.74023437500003,22.005419921875017],[88.64160156250003,22.121972656250136],[88.58466796875015,21.659716796874932],[88.44599609375004,21.614257812500085],[88.28750000000016,21.758203125000108],[88.25371093750002,21.622314453124943],[88.0568359375001,21.694140625000017],[88.19628906249997,22.139550781249994],[87.94140625000003,22.374316406250045],[88.15927734375018,22.12172851562508],[87.82373046875003,21.727343750000045],[87.20068359375009,21.544873046874983],[86.95410156250014,21.365332031250006],[86.84228515625009,21.106347656249994],[86.97548828125005,20.70014648437501],[86.75039062500011,20.313232421875057],[86.37656250000006,20.006738281249966],[86.24521484375012,20.05302734374999],[86.27949218750021,19.919433593749943],[85.575,19.69291992187499],[85.496875,19.696923828125108],[85.50410156250004,19.887695312500057],[85.24863281250006,19.757666015625034],[85.18076171875018,19.59487304687508],[85.44160156249993,19.626562499999977],[84.77099609375009,19.125390625000023],[84.10410156250018,18.29267578125001],[82.35957031250004,17.09619140624997],[82.25878906250014,16.55986328124996],[81.76191406250015,16.32949218750008],[81.28613281249997,16.337060546875023],[80.97871093750004,15.758349609375074],[80.64658203125006,15.895019531250028],[80.29345703125014,15.710742187499989],[80.0534179687501,15.074023437499932],[80.17871093750003,14.478320312500074],[80.11171875000005,14.212207031250045],[80.30654296875016,13.485058593750054],[80.15625,13.713769531250108],[80.06210937500006,13.60625],[80.34238281250006,13.361328125000071],[80.22910156250018,12.690332031249966],[79.85849609375018,11.988769531250043],[79.69316406250007,11.312548828124946],[79.79902343750004,11.338671874999932],[79.84863281250009,11.196875],[79.83818359375002,10.322558593750045],[79.31455078125018,10.256689453124949],[78.93994140625009,9.565771484375063],[79.01992187500005,9.333349609374963],[79.41142578125002,9.192382812500014],[78.97958984375018,9.268554687500085],[78.42148437500006,9.105029296874989],[78.19248046874995,8.890869140625057],[78.06015625000006,8.384570312499932],[77.51757812500003,8.078320312500068],[77.06591796875003,8.315917968749986],[76.5534179687501,8.902783203124997],[76.32460937500016,9.452099609374997],[76.24238281250004,9.927099609374949],[76.37558593750006,9.539892578124935],[76.45878906250013,9.536230468750077],[76.34648437500002,9.922119140625],[76.19560546875002,10.086132812500026],[75.72382812500015,11.361767578125026],[74.94550781250004,12.56455078124992],[74.38222656250005,14.494726562500048],[73.94921875000014,15.074755859375088],[73.80078125000009,15.39697265625],[73.93193359375013,15.39697265625],[73.77177734375013,15.573046874999989],[73.83281250000013,15.659375],[73.67988281250015,15.708886718750136],[73.47607421875003,16.05424804687496],[72.87548828124997,18.642822265625114],[72.97207031250011,19.15332031250003],[72.8346679687501,18.975585937500057],[72.80302734375013,19.07929687500004],[72.81162109375,19.298925781250006],[72.98720703125,19.27744140625009],[72.78789062500013,19.362988281250097],[72.66777343750019,19.83095703125005],[72.89375,20.672753906250136],[72.81386718750011,21.117187500000085],[72.62382812500002,21.371972656250108],[72.73476562500016,21.470800781250006],[72.61328125000009,21.461816406250108],[73.1125,21.750439453125125],[72.54306640625,21.69658203124999],[72.70019531250003,21.971923828124943],[72.52226562500013,21.976220703125108],[72.55302734375007,22.159960937500074],[72.80917968749995,22.23330078125008],[72.18281250000015,22.26972656250004],[72.30644531250002,22.18920898437497],[72.27441406250009,22.089746093749966],[72.03720703125006,21.82304687499999],[72.2103515625,21.72822265625004],[72.25400390625006,21.531005859375],[72.01523437500012,21.155712890625097],[71.0246093750001,20.73886718750009],[70.71933593750006,20.740429687500068],[70.12734375,21.094677734375097],[68.96992187500021,22.29028320312497],[69.05166015625016,22.437304687500074],[69.27656250000004,22.285498046875063],[70.17724609375014,22.57275390624997],[70.48925781250009,23.08950195312508],[70.33945312500012,22.939746093749932],[69.66464843750006,22.759082031250074],[69.23593749999995,22.848535156250023],[68.64072265625006,23.189941406250114],[68.41748046875009,23.57148437500004],[68.7767578125,23.852099609375017],[68.23496093749995,23.596972656250074],[68.16503906250009,23.857324218749994],[68.28251953125013,23.927978515625],[68.38125000000016,23.950878906250068],[68.48867187500011,23.96723632812501],[68.5866210937501,23.966601562500074],[68.72412109375003,23.964697265625034],[68.72812500000012,24.265625],[68.73964843750016,24.291992187500085],[68.75898437499993,24.307226562500006],[68.78115234375011,24.313720703125085],[68.8,24.30908203125003],[68.82832031250004,24.26401367187509],[68.86347656250015,24.26650390625005],[68.90078125000011,24.29243164062501],[68.98457031250015,24.273095703124966],[69.05156250000013,24.28632812500001],[69.11953125000011,24.26865234374995],[69.23505859374993,24.268261718750068],[69.44345703124995,24.275390625000085],[69.55917968750006,24.273095703124966],[69.80517578125009,24.16523437500004],[70.0982421875,24.2875],[70.28906250000009,24.356298828125063],[70.54677734375,24.418310546875063],[70.56503906250006,24.385791015625017],[70.55585937500015,24.331103515625074],[70.57929687500015,24.279052734374943],[70.65947265625013,24.24609374999997],[70.71630859375009,24.237988281250097],[70.7672851562501,24.245410156250017],[70.80507812500011,24.26196289062503],[70.88623046875014,24.34375],[70.92812500000016,24.362353515625045],[70.98281250000011,24.361035156250125],[71.04404296875006,24.400097656250097],[71.04531250000005,24.42998046874996],[70.96982421875012,24.571875],[70.97636718750013,24.61875],[71.00234375000016,24.6539062499999],[71.04785156250003,24.687744140625085],[71.02070312500021,24.75766601562492],[70.95087890625015,24.89160156250003],[70.87773437500019,25.06298828124997],[70.65205078125004,25.422900390625102],[70.64843750000003,25.666943359375068],[70.5695312500001,25.705957031250023],[70.50585937500009,25.685302734375085],[70.44853515625013,25.681347656249983],[70.26464843750009,25.70654296874997],[70.10019531250006,25.91005859375005],[70.14921875000002,26.347558593749994],[70.11464843750016,26.548046874999983],[69.47001953125002,26.804443359375],[69.56796875,27.174609375000102],[69.89628906250007,27.473632812500085],[70.04980468750009,27.694726562500023],[70.14453125000003,27.849023437499994],[70.19394531250006,27.89487304687492],[70.24433593750004,27.934130859375102],[70.4037109375,28.025048828124994],[70.48857421875013,28.023144531250125],[70.62910156250015,27.937451171875068],[70.6916015625001,27.76899414062504],[70.79794921875012,27.709619140625023],[70.87490234375016,27.71445312499995],[71.18476562500004,27.831640625],[71.54296875000003,27.869873046875],[71.8703125000001,27.9625],[71.88886718750004,28.04746093749992],[71.94804687500002,28.177294921875102],[72.12851562500012,28.34633789062508],[72.29199218750003,28.69726562499997],[72.34189453125006,28.751904296875097],[72.90332031250003,29.02875976562501],[73.38164062500013,29.934375],[73.8091796875,30.093359375],[73.88652343750013,30.162011718750136],[73.93339843750002,30.222070312500108],[73.92460937500007,30.28164062499999],[73.88271484375,30.352148437499977],[73.89931640625,30.435351562500045],[74.00898437500004,30.519677734374994],[74.33935546875003,30.893554687499943],[74.38037109375003,30.89340820312509],[74.50976562500009,30.959667968750097],[74.63281250000014,31.034667968750114],[74.62578125000002,31.068750000000108],[74.61035156250009,31.112841796875045],[74.51767578125012,31.185595703124932],[74.53496093750007,31.261376953125108],[74.59394531249993,31.465380859375102],[74.58183593750013,31.523925781250114],[74.50996093750015,31.712939453125074],[74.52597656249995,31.765136718750057],[74.55556640625011,31.818554687500097],[74.63574218750003,31.889746093750034],[74.73945312500015,31.948828125],[75.07148437500015,32.08935546875003],[75.13876953125,32.10478515624999],[75.25410156250004,32.140332031250125],[75.33349609374997,32.279199218749994],[75.32221348233018,32.28516356678968]]]]},"properties":{"name":"India","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[72.49199218750002,-7.37744140625],[72.42910156250002,-7.435351562500003],[72.34970703125,-7.263378906250011],[72.447265625,-7.395703125000011],[72.44560546875002,-7.220410156250011],[72.49199218750002,-7.37744140625]]]},"properties":{"name":"Br. Indian Ocean Ter.","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-9.948193359374926,53.91313476562499],[-10.265722656249949,53.977685546874994],[-9.99638671874996,54.00361328125004],[-9.948193359374926,53.91313476562499]]],[[[-6.218017578125,54.08872070312506],[-6.347607421874926,53.94130859375005],[-6.027392578124989,52.927099609375006],[-6.463183593749932,52.345361328124994],[-6.325,52.246679687500034],[-6.890234375,52.15922851562499],[-6.965771484374926,52.24951171875],[-8.057812499999926,51.82558593750005],[-8.4091796875,51.888769531250034],[-8.349121093749943,51.73930664062496],[-8.813427734374926,51.584912109374955],[-9.737304687499943,51.473730468750034],[-9.524902343750028,51.68110351562501],[-10.120751953124994,51.60068359375006],[-9.598828124999983,51.87441406250005],[-10.341064453124943,51.798925781250034],[-9.909667968749972,52.122949218749966],[-10.39023437499992,52.134912109374994],[-10.356689453125,52.20693359375002],[-9.772119140624937,52.250097656250034],[-9.90605468749996,52.403710937499966],[-9.632226562499937,52.54692382812502],[-8.783447265624943,52.679638671874955],[-8.990283203124989,52.755419921875045],[-9.175390624999949,52.634912109374994],[-9.916601562499977,52.56972656250005],[-9.46489257812496,52.82319335937498],[-9.299218749999966,53.09755859375002],[-8.930126953124983,53.207080078125045],[-9.51420898437496,53.23823242187498],[-10.091259765624926,53.41284179687503],[-10.116992187499932,53.548535156249955],[-9.720654296874926,53.6044921875],[-9.901611328124943,53.72719726562502],[-9.578222656249949,53.80541992187497],[-9.578857421875,53.879833984374955],[-9.9140625,53.863720703124955],[-9.856445312499972,54.095361328124994],[-10.092675781249966,54.15576171875003],[-10.056396484374943,54.25781250000006],[-8.545556640624994,54.24121093750003],[-8.623144531249977,54.346875],[-8.133447265624966,54.64082031250001],[-8.763916015624972,54.68120117187496],[-8.377294921874977,54.88945312500002],[-8.274609374999955,55.146289062500045],[-7.667089843749977,55.25649414062502],[-7.65874023437496,54.97094726562503],[-7.308789062500011,55.365820312500006],[-6.961669921874972,55.23789062500006],[-7.218652343749937,55.09199218749998],[-7.55039062499992,54.767968749999966],[-7.910595703124955,54.698339843750006],[-7.75439453125,54.59492187499998],[-8.118261718749977,54.41425781250004],[-7.606542968750006,54.14384765625002],[-7.324511718750017,54.13344726562502],[-7.007714843749937,54.40668945312501],[-6.649804687499937,54.05864257812496],[-6.218017578125,54.08872070312506]]]]},"properties":{"name":"Ireland","childNum":2}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[56.18798828125003,26.92114257812497],[55.95429687500004,26.70112304687501],[55.31152343749997,26.592626953125006],[55.76259765625005,26.81196289062504],[55.75761718750002,26.94765625000005],[56.279394531250006,26.952099609374983],[56.18798828125003,26.92114257812497]]],[[[46.1144531250001,38.877783203125034],[46.490625,38.90668945312498],[47.995898437500074,39.683935546875034],[48.322167968749994,39.39907226562502],[48.10439453125005,39.241113281249994],[48.292089843750006,39.01884765624999],[47.99648437499999,38.85375976562503],[48.59267578125005,38.41108398437498],[48.86875,38.43549804687498],[48.95996093750003,37.89013671875],[49.171191406250074,37.60058593749997],[50.13046875,37.407128906249994],[50.53320312499997,37.01367187500006],[51.11855468750005,36.742578124999966],[52.19013671875004,36.62172851562505],[53.76767578125006,36.93032226562502],[53.91542968750005,36.93032226562502],[53.67949218750002,36.853125],[53.970117187499994,36.818310546874955],[53.91416015625006,37.34355468750002],[54.6994140625001,37.47016601562498],[54.90009765625004,37.77792968750006],[55.38085937500003,38.051123046875034],[56.272070312500006,38.080419921875034],[56.440625,38.249414062499994],[57.1935546875001,38.216406250000034],[57.35371093750004,37.97333984374998],[58.261621093749994,37.665820312500045],[58.81542968750003,37.683496093749994],[59.30175781249997,37.51064453125005],[59.454980468749994,37.25283203125002],[60.06279296875002,36.962890625],[60.34130859375003,36.63764648437501],[61.11962890625003,36.64257812500003],[61.212011718750006,36.190527343750034],[61.15292968750006,35.97675781250001],[61.25214843750004,35.86762695312498],[61.26201171875002,35.61958007812498],[61.28183593750006,35.55341796875001],[61.2785156250001,35.513769531250006],[61.245507812499994,35.47407226562501],[61.18925781250002,35.31201171875003],[61.1,35.272314453125034],[61.08007812499997,34.85561523437505],[60.95117187499997,34.65385742187499],[60.91474609375004,34.63398437500001],[60.80234375000006,34.55463867187501],[60.73945312500004,34.544726562500045],[60.7262695312501,34.51826171874998],[60.736132812500074,34.491796875],[60.76259765625005,34.475244140624994],[60.88945312500002,34.31943359375006],[60.642675781250006,34.30717773437496],[60.48574218750005,34.09477539062502],[60.4859375,33.7119140625],[60.57382812500006,33.58833007812498],[60.91699218749997,33.505224609375006],[60.56054687499997,33.13784179687502],[60.5765625,32.99487304687503],[60.71044921874997,32.6],[60.82929687500004,32.24941406250005],[60.82724609375006,32.16796874999997],[60.789941406249994,31.98710937499999],[60.7875,31.87719726562497],[60.791601562500006,31.660595703124983],[60.82070312499999,31.495166015625045],[60.854101562500006,31.483251953125006],[61.110742187499994,31.45112304687504],[61.346484375000074,31.42163085937497],[61.66015625000003,31.382421874999977],[61.7550781250001,31.285302734374994],[61.814257812500074,31.072558593750017],[61.810839843750074,30.913281249999983],[61.78417968749997,30.831933593750023],[61.55947265625005,30.59936523437497],[61.33164062500006,30.36372070312501],[60.84335937500006,29.85869140624999],[61.03417968750003,29.663427734374977],[61.15214843750002,29.542724609375],[61.8898437500001,28.546533203124994],[62.7625,28.202050781249994],[62.782324218750006,27.800537109375],[62.75273437500002,27.265625],[63.16679687500002,27.25249023437499],[63.19609375000002,27.243945312500017],[63.25625,27.20791015625005],[63.30156250000002,27.151464843750006],[63.30517578124997,27.124560546875017],[63.242089843749994,27.07768554687499],[63.25039062499999,26.879248046875063],[63.24160156250005,26.86474609375003],[63.18613281250006,26.83759765625001],[63.168066406250006,26.66557617187496],[62.31230468750002,26.490869140624994],[62.23935546875006,26.357031249999977],[62.12597656249997,26.368994140625034],[61.842382812500006,26.225927734375006],[61.809960937499994,26.165283203125],[61.78076171874997,25.99584960937503],[61.75439453125003,25.843359375000063],[61.737695312499994,25.821093750000045],[61.66865234375004,25.76899414062501],[61.6618164062501,25.751269531250017],[61.67138671874997,25.69238281250003],[61.64013671875003,25.584619140624994],[61.61542968750004,25.28613281250003],[61.58789062499997,25.20234375000001],[61.533105468749994,25.195507812499955],[61.41220703125006,25.102099609375017],[60.66386718750002,25.28222656250003],[60.51054687500002,25.437060546875045],[60.40019531250002,25.311572265625074],[59.45605468749997,25.481494140625045],[59.0460937500001,25.417285156250017],[58.79785156249997,25.554589843750023],[57.334570312500006,25.791552734375074],[57.03603515625005,26.80068359375005],[56.728125,27.127685546875057],[56.118066406249994,27.14311523437499],[54.75927734375003,26.50507812500004],[54.24707031250003,26.696630859374977],[53.70576171875004,26.72558593750003],[52.69160156250004,27.323388671875023],[52.475878906250074,27.61650390624999],[52.03076171874997,27.824414062499955],[51.58906250000004,27.864208984374983],[51.27890625,28.13134765624997],[51.06201171874997,28.72612304687499],[50.86699218750002,28.870166015625017],[50.87578125000002,29.062695312499983],[50.67519531250005,29.146582031250034],[50.64960937500004,29.420068359374966],[50.16894531250003,29.921240234375034],[50.071582031250074,30.198535156250017],[49.55488281250004,30.028955078125023],[49.028125,30.333447265624983],[49.224511718749994,30.472314453125023],[49.00195312500003,30.506542968749983],[48.91914062500004,30.120898437500017],[48.54648437500006,29.962353515624955],[48.47851562499997,30.003808593749966],[48.43457031249997,30.03759765625],[48.33105468749997,30.28544921874996],[48.01494140625002,30.465625],[48.01064453125005,30.989794921875017],[47.679492187500074,31.00239257812501],[47.679492187500074,31.400585937499955],[47.75390624999997,31.601367187500017],[47.829980468749994,31.79443359375],[47.71455078125004,31.936425781249966],[47.5915039062501,32.087988281250034],[47.51191406250004,32.15083007812504],[47.3297851562501,32.45551757812501],[47.28515625000003,32.474023437499966],[47.121386718750074,32.46660156249996],[46.569921875,32.83393554687501],[46.37705078125006,32.92924804687499],[46.29824218750005,32.95024414062502],[46.11279296875003,32.957666015624994],[46.09306640625002,32.97587890624999],[46.08046875,33.028222656249994],[46.0807617187501,33.08652343750006],[46.14111328125003,33.174414062500034],[46.145898437499994,33.229638671874994],[46.01992187500005,33.41572265624998],[45.39707031250006,33.970849609374994],[45.542773437500074,34.21552734375004],[45.459375,34.470361328124994],[45.50078125000002,34.58159179687499],[45.6375,34.573828125],[45.678125,34.798437500000034],[45.92089843750003,35.02851562500001],[46.04179687500002,35.08017578125006],[46.13378906249997,35.127636718749955],[46.15468750000005,35.19672851562498],[46.112109375000074,35.32167968750005],[45.97109375000005,35.524169921875],[46.03740234375002,35.67314453124999],[46.180957031250074,35.71137695312504],[46.2625,35.74414062500006],[46.27343749999997,35.77324218750002],[46.16748046874997,35.820556640625],[45.77636718749997,35.82182617187499],[45.36162109375002,36.015332031249955],[45.241113281249994,36.35595703125],[45.20654296874997,36.397167968749955],[45.15527343749997,36.407373046874994],[45.11240234375006,36.409277343750034],[45.053125,36.47163085937501],[44.76513671875003,37.142431640625006],[44.79414062500004,37.290380859375034],[44.574023437500074,37.435400390625006],[44.589941406250006,37.710351562499966],[44.21132812499999,37.908056640625006],[44.4499023437501,38.33422851562506],[44.2985351562501,38.38627929687499],[44.27167968750004,38.83603515625006],[44.02324218750002,39.37744140625006],[44.3893554687501,39.422119140625],[44.58710937500004,39.76855468750006],[44.81718750000002,39.65043945312496],[45.4796875000001,39.00625],[46.1144531250001,38.877783203125034]]]]},"properties":{"name":"Iran","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[45.6375,34.573828125],[45.50078125000002,34.581591796874996],[45.459375,34.470361328124994],[45.54277343750002,34.21552734375],[45.397070312500006,33.970849609374994],[46.01992187500002,33.41572265625],[46.14589843750002,33.229638671874994],[46.14111328125,33.1744140625],[46.08076171875001,33.0865234375],[46.08046875000002,33.028222656249994],[46.09306640625002,32.975878906249996],[46.11279296875,32.957666015624994],[46.377050781250006,32.929248046874996],[46.569921875,32.833935546875],[47.12138671875002,32.466601562499996],[47.28515625,32.474023437499994],[47.32978515625001,32.455517578125],[47.51191406250001,32.150830078125],[47.59150390625001,32.08798828125],[47.71455078125001,31.936425781249994],[47.82998046875002,31.79443359375],[47.75390625,31.601367187499996],[47.67949218750002,31.400585937499997],[47.67949218750002,31.002392578124997],[48.01064453125002,30.989794921874996],[48.01494140625002,30.465625],[48.3310546875,30.285449218749996],[48.546484375,29.962353515624997],[48.454199218750006,29.9384765625],[48.354589843750006,29.956738281249997],[48.141699218750006,30.040917968749994],[47.982519531250006,30.011328125],[47.97871093750001,29.9828125],[47.64375,30.097314453124994],[47.14824218750002,30.0009765625],[46.905859375,29.5375],[46.76933593750002,29.347460937499996],[46.69375,29.259667968749994],[46.53144531250001,29.096240234374996],[46.3564453125,29.063671875],[44.71650390625001,29.193603515625],[43.77373046875002,29.84921875],[42.07441406250001,31.080371093749996],[40.47890625000002,31.893359375],[40.36933593750001,31.93896484375],[40.02783203125,31.995019531249994],[39.7041015625,32.042529296874996],[39.14541015625002,32.12451171875],[39.29277343750002,32.24384765625],[39.24746093750002,32.350976562499994],[39.04140625000002,32.3056640625],[38.773535156250006,33.372216796874994],[40.98701171875001,34.429052734375],[41.19472656250002,34.768994140625],[41.354101562500006,35.640429687499996],[41.295996093750006,36.383349609374996],[41.41679687500002,36.5146484375],[41.78857421875,36.59716796875],[42.358984375,37.10859375],[42.45585937500002,37.128710937499996],[42.63544921875001,37.249267578125],[42.74111328125002,37.3619140625],[42.77460937500001,37.371875],[42.869140625,37.334912109375],[42.936621093750006,37.324755859374996],[43.09248046875001,37.3673828125],[43.67578125,37.22724609375],[43.83642578125,37.223535156249994],[44.01318359375,37.313525390624996],[44.11445312500001,37.30185546875],[44.15625,37.282958984375],[44.19179687500002,37.249853515625],[44.20839843750002,37.20263671875],[44.20166015625,37.051806640624996],[44.281835937500006,36.97802734375],[44.32558593750002,37.0107421875],[44.401953125,37.058496093749994],[44.60595703125,37.176025390625],[44.66933593750002,37.173583984375],[44.73095703125,37.165283203125],[44.76513671875,37.142431640625],[45.053125,36.471630859375],[45.112402343750006,36.40927734375],[45.1552734375,36.407373046874994],[45.20654296875,36.39716796875],[45.24111328125002,36.35595703125],[45.36162109375002,36.01533203125],[45.7763671875,35.821826171874996],[46.16748046875,35.820556640625],[46.2734375,35.773242187499996],[46.2625,35.744140625],[46.18095703125002,35.711376953125],[46.03740234375002,35.673144531249996],[45.97109375000002,35.524169921875],[46.11210937500002,35.321679687499994],[46.15468750000002,35.196728515625],[46.1337890625,35.12763671875],[46.04179687500002,35.08017578125],[45.9208984375,35.028515625],[45.678125,34.7984375],[45.6375,34.573828125]]]},"properties":{"name":"Iraq","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-15.543115234374994,66.228515625],[-14.595849609374994,66.38154296875],[-15.117382812499983,66.125634765625],[-14.698193359374983,66.02021484375],[-14.827099609374983,65.7642578125],[-14.391845703125,65.78740234375],[-14.473388671875,65.575341796875],[-14.166943359374983,65.64228515625],[-13.617871093749983,65.5193359375],[-13.804785156249977,65.35478515625],[-13.599316406249983,65.0359375],[-14.04443359375,64.74189453125],[-14.385107421874977,64.74521484375],[-14.475390624999989,64.493994140625],[-14.927392578124994,64.319677734375],[-15.832910156249994,64.17666015625],[-16.640332031249983,63.865478515625],[-17.81572265624999,63.71298828125],[-17.946923828124994,63.5357421875],[-18.65361328124999,63.406689453125],[-20.198144531249994,63.555810546874994],[-20.494042968749994,63.687353515625],[-20.413964843749994,63.80517578125],[-20.65092773437499,63.73740234375],[-21.15239257812499,63.94453125],[-22.652197265624977,63.827734375],[-22.701171875,64.083203125],[-22.51005859374999,63.991455078125],[-22.187597656249977,64.039208984375],[-21.463330078124983,64.379150390625],[-22.053369140624994,64.313916015625],[-21.950341796874994,64.514990234375],[-21.590625,64.6263671875],[-22.10600585937499,64.533056640625],[-22.467041015625,64.794970703125],[-23.818994140624994,64.73916015625],[-24.02617187499999,64.863427734375],[-22.7880859375,65.046484375],[-21.89213867187499,65.048779296875],[-21.779980468749983,65.1876953125],[-22.50908203124999,65.19677734375],[-21.844384765624994,65.44736328125],[-22.902490234374994,65.58046875],[-23.89990234375,65.407568359375],[-24.475683593749977,65.5251953125],[-24.248925781249994,65.614990234375],[-23.85673828124999,65.53837890625],[-24.092626953124977,65.77646484375],[-23.615917968749983,65.67958984375],[-23.285351562499983,65.75],[-23.832617187499977,65.84921875],[-23.52495117187499,65.880029296875],[-23.77734375,66.017578125],[-23.434472656249994,66.02421875],[-23.452539062499994,66.181005859375],[-23.018994140624983,65.98212890625],[-22.659863281249983,66.025927734375],[-22.61601562499999,65.86748046875],[-22.44169921874999,65.90830078125],[-22.4453125,66.07001953125],[-22.947900390624994,66.212744140625],[-22.48442382812499,66.26630859375],[-23.116943359375,66.338720703125],[-22.9443359375,66.429443359375],[-22.426123046874977,66.430126953125],[-21.406884765624994,66.0255859375],[-21.374902343749994,65.74189453125],[-21.658447265625,65.723583984375],[-21.12968749999999,65.2666015625],[-20.804345703124994,65.63642578125],[-20.454833984375,65.571044921875],[-20.20751953125,66.10009765625],[-19.489697265624983,65.76806640625],[-19.382958984374994,66.07568359375],[-18.845898437499983,66.183935546875],[-18.141943359374977,65.73408203125],[-18.29716796874999,66.157421875],[-17.906982421875,66.143310546875],[-17.550439453124994,65.964404296875],[-17.153027343749983,66.20283203125],[-16.838037109374994,66.125244140625],[-16.485009765624994,66.195947265625],[-16.540673828124994,66.446728515625],[-16.24931640624999,66.522900390625],[-15.985400390624989,66.5146484375],[-15.543115234374994,66.228515625]]]},"properties":{"name":"Iceland","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[35.78730468750001,32.734912109374996],[35.572851562500006,32.640869140625],[35.56904296875001,32.619873046875],[35.55146484375001,32.3955078125],[35.484375,32.401660156249996],[35.40263671875002,32.450634765625],[35.38671875,32.493017578125],[35.303808593750006,32.512939453125],[35.19326171875002,32.534423828125],[35.065039062500006,32.46044921875],[35.01054687500002,32.338183593749996],[34.95595703125002,32.1609375],[34.98974609375,31.91328125],[34.97832031250002,31.86640625],[34.95380859375001,31.841259765624997],[34.96113281250001,31.82333984375],[34.983007812500006,31.81679687499999],[35.05322265625,31.837939453124996],[35.12714843750001,31.816748046875],[35.203710937500006,31.75],[34.95097656250002,31.602294921875],[34.88046875,31.3681640625],[35.45058593750002,31.479296875],[34.97343750000002,29.555029296875],[34.904296875,29.47734375],[34.24531250000001,31.208300781249996],[34.34833984375001,31.292919921874997],[34.350195312500006,31.362744140624997],[34.52558593750001,31.525634765625],[34.47734375000002,31.584863281249994],[34.483984375,31.59228515625],[34.67841796875001,31.895703125],[35.10859375000001,33.08369140625],[35.411230468750006,33.07568359375],[35.869140625,33.43173828125],[35.91347656250002,32.94960937499999],[35.78730468750001,32.734912109374996]]]},"properties":{"name":"Israel","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[15.576562500000051,38.220312500000034],[15.099511718750023,37.45859375],[15.295703125000017,37.05517578124997],[15.112597656250017,36.687841796875006],[14.501855468750023,36.798681640625034],[14.142968750000023,37.103662109374994],[13.90546875000004,37.10063476562502],[13.169921875000028,37.47929687499996],[12.640234375000034,37.594335937500034],[12.435546874999972,37.819775390624955],[12.734375,38.18305664062498],[12.902734375000023,38.03486328124998],[13.291113281250034,38.19145507812502],[13.788867187499989,37.981201171875],[15.11875,38.15273437500002],[15.498730468750011,38.290869140625006],[15.576562500000051,38.220312500000034]]],[[[8.478906250000023,39.067529296874966],[8.421484375000034,38.968652343749994],[8.366796875,39.115917968749955],[8.478906250000023,39.067529296874966]]],[[[8.28603515625008,41.03984375],[8.205664062500034,40.99746093750005],[8.320214843750023,41.121875],[8.28603515625008,41.03984375]]],[[[9.632031250000011,40.88203124999998],[9.805273437500063,40.499560546875045],[9.642968750000023,40.268408203125006],[9.5625,39.16601562500006],[9.056347656250068,39.23916015625002],[8.966601562500074,38.963720703125034],[8.648535156250034,38.92656250000002],[8.418164062500068,39.205712890624966],[8.547753906250023,39.83920898437506],[8.4078125,39.91723632812497],[8.471289062500063,40.29267578124998],[8.189941406250028,40.651611328125],[8.22421875,40.91333007812503],[8.571875,40.85019531250006],[9.228417968750023,41.257080078125],[9.615332031249977,41.01728515624998],[9.632031250000011,40.88203124999998]]],[[[10.395117187500034,42.85815429687503],[10.419335937499994,42.71318359374999],[10.13125,42.742041015625006],[10.395117187500034,42.85815429687503]]],[[[13.420996093750006,46.212304687499994],[13.63251953125004,46.17705078125002],[13.634960937499983,46.15776367187499],[13.61660156250008,46.133105468750045],[13.54804687500004,46.08911132812503],[13.486425781250034,46.03955078124997],[13.480273437500017,46.00922851562501],[13.487695312500023,45.987109375000045],[13.509179687500051,45.973779296874994],[13.6005859375,45.97978515624996],[13.663476562500023,45.7919921875],[13.831152343750006,45.680419921875],[13.719824218750063,45.58759765625001],[13.628320312500051,45.77094726562498],[13.206347656250074,45.771386718749966],[12.27431640625008,45.44604492187503],[12.225683593750034,45.24150390625002],[12.523437500000028,44.96796874999998],[12.248339843750045,44.72250976562498],[12.396289062500074,44.223876953125],[13.56416015625004,43.57128906250003],[14.010449218750011,42.68955078125006],[14.54072265625004,42.24428710937502],[15.16875,41.93403320312498],[16.164648437500034,41.89619140624998],[15.900488281250034,41.51206054687498],[17.954980468749994,40.65517578125002],[18.460644531249983,40.221044921875034],[18.34375,39.82138671874998],[18.077929687500017,39.93696289062498],[17.865039062500074,40.28017578125002],[17.395800781250045,40.34023437499999],[17.179980468750045,40.50278320312498],[16.92822265625,40.45805664062502],[16.521875,39.74755859375003],[17.114550781250017,39.38061523437497],[17.174609375000017,38.998095703125045],[16.61669921875003,38.800146484375034],[16.54560546875001,38.40908203125002],[16.05683593750001,37.941845703124955],[15.72451171875008,37.93911132812502],[15.645800781250017,38.034228515625045],[15.87890625,38.61391601562502],[16.19677734375,38.759228515624955],[16.20996093750003,38.94111328124998],[15.692773437499994,39.99018554687501],[14.95087890625004,40.23901367187497],[14.94765625000008,40.469335937500006],[14.765722656250063,40.66840820312498],[14.339941406250006,40.59882812500001],[14.460546875000063,40.72871093750001],[14.04433593750008,40.81225585937506],[13.733398437500057,41.23564453124999],[13.088671875000074,41.243847656249955],[12.630859374999972,41.469677734374955],[11.637304687500063,42.287548828124955],[11.141210937499977,42.38989257812503],[11.167773437500074,42.53515625000006],[10.708398437500023,42.93632812499999],[10.514843750000011,42.96752929687503],[10.188085937500063,43.947509765625],[8.76582031250004,44.42231445312501],[8.004980468750006,43.87675781249999],[7.4931640625,43.767138671875045],[7.637207031250057,44.16484375],[7.318554687500068,44.13798828125002],[6.900195312499989,44.33574218749996],[6.99267578125,44.82729492187502],[6.634765625000028,45.06816406249996],[7.07832031250004,45.23994140624998],[7.146386718750051,45.381738281249994],[6.790917968750023,45.740869140624966],[7.021093750000034,45.92578124999997],[7.055761718749977,45.90380859375003],[7.129003906249977,45.88041992187499],[7.327929687500017,45.912353515625],[7.9931640625,46.01591796874996],[8.081542968750057,46.25600585937502],[8.231933593750057,46.341210937499966],[8.29853515625004,46.403417968750034],[8.370703125,46.44511718750002],[8.458398437500023,46.24589843750002],[8.818554687500011,46.0771484375],[8.826757812500006,46.06103515625],[8.77802734375004,45.996191406250034],[8.953710937500034,45.83002929687501],[9.023730468750074,45.845703125],[9.203417968750017,46.21923828125],[9.304394531250068,46.49555664062498],[9.399316406250023,46.480664062499955],[9.427636718750023,46.48232421875002],[9.528710937500023,46.306201171875045],[9.57958984375,46.29609375000001],[9.639453125000017,46.29589843749997],[9.78779296875004,46.34604492187498],[9.884472656250011,46.36777343750006],[9.939257812500074,46.36181640625],[10.041015625000028,46.23808593750002],[10.08056640625,46.22797851562501],[10.128320312500051,46.238232421874955],[10.109667968750074,46.36284179687502],[10.081933593750023,46.420751953125006],[10.045605468750068,46.44790039062505],[10.038281250000011,46.483203125000045],[10.061230468750068,46.54677734375002],[10.087011718750063,46.59990234375002],[10.1375,46.614355468750034],[10.195507812500068,46.62109374999997],[10.4306640625,46.55004882812497],[10.409352678571473,46.6092047991071],[10.39794921875,46.66503906250006],[10.406054687500045,46.73486328124997],[10.452832031249983,46.86494140625001],[10.47939453125008,46.85512695312505],[10.579785156250011,46.85371093750001],[10.689257812500017,46.846386718749955],[10.759765625,46.79331054687498],[10.828906250000045,46.775244140625034],[10.927343750000034,46.76948242187501],[10.993261718750034,46.77700195312502],[11.02509765625004,46.796972656250006],[11.063476562500057,46.85913085937497],[11.133886718750006,46.93618164062505],[11.244433593750045,46.975683593750006],[11.433203125000063,46.983056640624994],[11.527539062500011,46.99741210937498],[11.775683593750017,46.986083984375],[12.169433593750028,47.082128906250006],[12.19716796875008,47.075],[12.201269531250034,47.060888671875034],[12.165527343750028,47.028173828125034],[12.130761718750051,46.98476562499999],[12.154101562500017,46.93525390625004],[12.267968750000023,46.83588867187504],[12.330078125,46.75981445312499],[12.388281250000034,46.70263671874997],[12.479199218749983,46.672509765624966],[13.16875,46.572656249999966],[13.3515625,46.55791015624999],[13.490039062500045,46.55556640625002],[13.7,46.52026367187503],[13.679687500000057,46.46289062499997],[13.63710937500008,46.44853515624999],[13.563281250000045,46.41508789062502],[13.399511718749977,46.31752929687502],[13.420996093750006,46.212304687499994]]]]},"properties":{"name":"Italy","childNum":6}},{"geometry":{"type":"Polygon","coordinates":[[[-77.261474609375,18.45742187499999],[-76.349853515625,18.15185546875],[-76.21079101562499,17.913525390624997],[-76.524609375,17.8662109375],[-76.85322265625,17.97373046874999],[-76.94414062499999,17.848779296874994],[-77.11948242187499,17.880078125],[-77.20498046875,17.71494140624999],[-77.36142578124999,17.833691406249997],[-77.76816406249999,17.877392578124997],[-78.04448242187499,18.173828125],[-78.339501953125,18.28720703124999],[-78.21669921875,18.44809570312499],[-77.8734375,18.522216796875],[-77.261474609375,18.45742187499999]]]},"properties":{"name":"Jamaica","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-2.018652343749977,49.23125],[-2.23583984375,49.1763671875],[-2.220507812499989,49.266357421875],[-2.018652343749977,49.23125]]]},"properties":{"name":"Jersey","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[39.14541015625002,32.12451171875],[38.9970703125,32.007470703124994],[38.96230468750002,31.994921875],[38.37548828125,31.847460937499996],[38.111425781250006,31.781152343749994],[37.49335937500001,31.625878906249994],[37.215625,31.556103515624997],[36.95859375,31.491503906249996],[37.980078125,30.5],[37.862890625,30.442626953125],[37.66972656250002,30.34814453125],[37.64990234375,30.330957031249994],[37.63359375000002,30.31328125],[37.55361328125002,30.144580078124996],[37.49072265625,30.01171875],[37.46923828125,29.995068359374997],[36.75527343750002,29.866015625],[36.70390625000002,29.831640625],[36.591796875,29.66611328125],[36.47607421875,29.4951171875],[36.2828125,29.355371093749994],[36.068457031250006,29.200537109375],[34.95078125,29.353515625],[34.97343750000002,29.555029296875],[35.45058593750002,31.479296875],[35.57207031250002,32.237890625],[35.55146484375001,32.3955078125],[35.56904296875001,32.619873046875],[35.572851562500006,32.640869140625],[35.78730468750001,32.734912109374996],[36.3720703125,32.3869140625],[36.818359375,32.317285156249994],[38.773535156250006,33.372216796874994],[39.04140625000002,32.3056640625],[39.24746093750002,32.350976562499994],[39.29277343750002,32.24384765625],[39.14541015625002,32.12451171875]]]},"properties":{"name":"Jordan","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[123.88867187499997,24.280126953124977],[123.67978515625012,24.317773437500023],[123.77148437499997,24.41445312499999],[123.93486328125002,24.362011718749983],[123.88867187499997,24.280126953124977]]],[[[124.29316406250004,24.515917968750074],[124.13574218750003,24.347607421874983],[124.08476562500002,24.435839843750017],[124.30195312500004,24.58710937500001],[124.29316406250004,24.515917968750074]]],[[[125.44414062500002,24.7431640625],[125.26894531250005,24.732519531250063],[125.28359375,24.871923828125034],[125.44414062500002,24.7431640625]]],[[[128.25878906249997,26.65278320312501],[127.86708984375,26.442480468749977],[127.80361328125005,26.152539062499983],[127.653125,26.0947265625],[127.90722656250003,26.69360351562497],[128.09765624999997,26.66777343749996],[128.25488281249997,26.88188476562496],[128.25878906249997,26.65278320312501]]],[[[128.99814453125012,27.720800781250006],[128.90000000000012,27.727783203125],[128.9076171875,27.897998046875045],[128.99814453125012,27.720800781250006]]],[[[129.45253906250005,28.20898437499997],[129.3664062500001,28.127734375000045],[129.16464843750012,28.24975585937503],[129.68955078125012,28.517480468750023],[129.45253906250005,28.20898437499997]]],[[[130.6227539062501,30.262988281250017],[130.44560546875002,30.264697265625017],[130.38808593750005,30.38818359375003],[130.49716796875006,30.465527343749983],[130.64355468749997,30.388964843750017],[130.6227539062501,30.262988281250017]]],[[[130.95976562500007,30.39692382812504],[130.87031250000004,30.444238281249994],[131.06035156250007,30.828466796875006],[130.95976562500007,30.39692382812504]]],[[[130.38105468750004,32.42373046875002],[130.24169921874997,32.462792968749994],[130.46142578124997,32.515722656250034],[130.38105468750004,32.42373046875002]]],[[[130.08251953124997,32.22968750000001],[129.9601562500001,32.24375],[130.00976562499997,32.521630859374994],[130.16777343750002,32.54121093749998],[130.19951171875002,32.34057617187506],[130.08251953124997,32.22968750000001]]],[[[128.66533203125002,32.783886718749955],[128.89453124999997,32.65214843750002],[128.69296875000012,32.60473632812506],[128.66533203125002,32.783886718749955]]],[[[129.07695312500002,32.84028320312498],[128.99726562500004,32.95185546874998],[129.10976562500005,33.13256835937503],[129.18193359375002,32.99311523437504],[129.07695312500002,32.84028320312498]]],[[[129.49179687500006,33.22304687499999],[129.37041015625002,33.176025390625],[129.56992187500006,33.36103515625004],[129.49179687500006,33.22304687499999]]],[[[129.79570312500007,33.74882812499999],[129.67480468749997,33.73969726562498],[129.71728515624997,33.8583984375],[129.79570312500007,33.74882812499999]]],[[[131.17460937500007,33.602587890625045],[131.69628906250003,33.60283203124999],[131.53740234375007,33.274072265624994],[131.89658203125006,33.25458984375001],[131.8478515625001,33.118066406249994],[132.0021484375001,32.882373046875045],[131.6603515625001,32.465625],[131.33720703125007,31.4046875],[131.07080078124997,31.436865234374977],[131.09843750000002,31.256152343750017],[130.68574218750004,31.01513671875003],[130.77626953125,31.70629882812497],[130.65507812500002,31.71840820312505],[130.5560546875,31.563085937500034],[130.58876953125,31.178515625000017],[130.20068359374997,31.291894531250023],[130.14726562500002,31.40849609374996],[130.2941406250001,31.45068359375003],[130.3219726562501,31.601464843750023],[130.18789062500005,31.768847656250017],[130.19443359375012,32.090771484374955],[130.64052734375005,32.61923828124998],[130.49785156250002,32.65693359375001],[130.547265625,32.83159179687499],[130.2375,33.177636718749966],[130.12685546875005,33.10483398437506],[130.175,32.851318359375],[130.32646484375002,32.852636718750006],[130.34042968750012,32.70185546875004],[130.05410156250005,32.770800781250045],[129.76855468749997,32.57099609375001],[129.82675781250006,32.72534179687503],[129.67910156250005,33.059960937499966],[129.99169921875003,32.85156249999997],[129.58007812500003,33.23627929687501],[129.61015625000002,33.34365234375005],[129.844140625,33.32177734375003],[129.82568359374997,33.43701171875006],[130.36503906250007,33.634472656249955],[130.4837890625,33.834619140624966],[130.715625,33.92778320312502],[130.953125,33.87202148437504],[131.17460937500007,33.602587890625045]]],[[[132.266015625,33.945166015625006],[132.44492187500006,33.91318359374998],[132.20878906250007,33.87285156250002],[132.266015625,33.945166015625006]]],[[[129.27949218750004,34.123388671875006],[129.18642578125,34.14501953125006],[129.21484374999997,34.320654296875034],[129.3371093750001,34.284765625],[129.27949218750004,34.123388671875006]]],[[[134.35742187500003,34.25634765625],[134.6375,34.22661132812499],[134.73886718750012,33.82050781250001],[134.37705078125012,33.60839843749997],[134.18164062500003,33.24721679687502],[133.95869140625004,33.44833984375006],[133.63203125000004,33.51098632812503],[133.28593750000007,33.35996093749998],[132.97724609375004,32.84199218749998],[132.80429687500006,32.75200195312502],[132.6417968750001,32.76245117187503],[132.70898437500003,32.90249023437505],[132.49511718749997,32.91660156249998],[132.41279296875004,33.43046875],[132.0326171875,33.339990234374994],[132.64306640624997,33.68994140624997],[132.93515625000006,34.09531250000006],[133.19306640625004,33.93320312499998],[133.58203124999997,34.01713867187502],[133.60263671875006,34.24384765625001],[133.94833984375006,34.34804687500002],[134.35742187500003,34.25634765625]]],[[[134.35185546875002,34.48364257812503],[134.25185546875,34.42304687500004],[134.18212890625003,34.51923828124998],[134.35185546875002,34.48364257812503]]],[[[134.9328125000001,34.28813476562499],[134.82441406250004,34.202929687500045],[134.66787109375005,34.294140624999955],[135.00468750000002,34.54404296874998],[134.9328125000001,34.28813476562499]]],[[[129.38564453125,34.35366210937502],[129.26669921875012,34.37045898437506],[129.45107421875005,34.68657226562499],[129.38564453125,34.35366210937502]]],[[[133.37050781250005,36.203857421875],[133.23925781249997,36.178759765625045],[133.20615234375006,36.293408203124955],[133.29570312500002,36.34013671874996],[133.37050781250005,36.203857421875]]],[[[138.34404296875007,37.822119140625006],[138.22519531250006,37.82939453124996],[138.25,38.078466796875006],[138.50361328125004,38.31591796875006],[138.45361328124997,38.07568359375006],[138.57519531249997,38.065527343750034],[138.34404296875007,37.822119140625006]]],[[[141.22929687500007,41.37265625],[141.45546875000005,41.404736328124955],[141.43046875000002,40.72333984374998],[141.7970703125001,40.29116210937502],[141.97695312500005,39.428808593750034],[141.90078125,39.111328125],[141.5462890625,38.762841796874966],[141.4674804687501,38.404150390625006],[141.10839843750003,38.33793945312502],[140.9621093750001,38.148876953124955],[141.00166015625004,37.11464843750002],[140.57353515625007,36.23134765625002],[140.87402343749997,35.72495117187506],[140.457421875,35.51025390625],[140.35468750000004,35.18144531249999],[139.8439453125001,34.914892578125034],[139.82646484375002,35.29667968750002],[140.096875,35.58515624999998],[139.83476562500002,35.658056640625006],[139.65000000000012,35.40913085937501],[139.675,35.149267578125006],[139.47441406250002,35.298535156249955],[139.24941406250005,35.27802734375004],[139.08603515625006,34.83916015624999],[138.8375,34.619238281250034],[138.80273437499997,34.97480468749998],[138.90361328125002,35.02524414062506],[138.71962890625,35.12407226562502],[138.18906250000012,34.596337890624994],[137.543359375,34.66420898437505],[137.06171875000004,34.58281249999999],[137.27519531250002,34.77250976562499],[136.96328125000005,34.83491210937501],[136.87128906250004,34.733105468749955],[136.89707031250006,35.03554687500002],[136.80419921874997,35.05029296875],[136.53300781250007,34.678369140624994],[136.8802734375,34.43359375000006],[136.8537109375001,34.324072265625034],[136.32988281250007,34.17685546875006],[135.91621093750004,33.561718749999955],[135.69531250000003,33.48696289062502],[135.4528320312501,33.55336914062505],[135.12792968749997,34.006982421874994],[135.10009765624997,34.288378906250045],[135.41591796875,34.61748046875002],[134.74003906250007,34.765234375],[134.246875,34.71386718750003],[133.96826171874997,34.52729492187504],[133.14238281250002,34.30244140624998],[132.65654296875007,34.24609375000003],[132.31259765625006,34.32495117187503],[132.14648437499997,33.83876953125002],[131.74052734375007,34.05205078125002],[130.91884765625,33.97573242187502],[130.88925781250012,34.261816406250034],[131.00419921875007,34.39257812500003],[131.35439453125,34.41318359375006],[132.92294921875006,35.511279296875045],[133.98125,35.50722656250002],[135.17431640625003,35.74707031250003],[135.32695312500002,35.52553710937502],[135.68027343750006,35.503125],[135.903125,35.60688476562498],[136.09531250000006,35.767626953125045],[136.06748046875006,36.11684570312505],[136.69814453125005,36.742041015625034],[136.84345703125004,37.38212890624999],[137.32265625,37.52207031249998],[136.89990234375003,37.11767578125],[137.01669921875006,36.83720703124999],[137.24628906250004,36.753173828125],[137.5140625,36.95156250000002],[138.31992187500012,37.21840820312502],[138.88505859375007,37.84394531250001],[139.36386718750006,38.09902343750002],[139.80195312500004,38.881591796875],[140.06474609375002,39.624414062499994],[139.99472656250006,39.855078125],[139.74150390625002,39.92084960937498],[140.01113281250005,40.26035156250006],[139.92285156250003,40.59843750000002],[140.28125,40.84609375000002],[140.3444335937501,41.203320312499955],[140.62763671875004,41.195410156250034],[140.74863281250012,40.830322265625],[140.93603515625003,40.940771484375034],[141.1185546875,40.88227539062501],[141.24423828125006,41.20561523437499],[140.80058593750002,41.138818359374966],[140.80185546875012,41.253662109375],[140.9369140625,41.50556640624998],[141.22929687500007,41.37265625]]],[[[139.48125,42.08100585937498],[139.43134765625004,42.19956054687498],[139.55839843750002,42.235205078125034],[139.48125,42.08100585937498]]],[[[141.29541015625003,45.11933593750001],[141.14531250000002,45.153906250000034],[141.19375,45.24785156249999],[141.29541015625003,45.11933593750001]]],[[[141.07275390624997,45.33286132812498],[141.03398437500007,45.26933593750002],[140.97167968749997,45.465478515624994],[141.07275390624997,45.33286132812498]]],[[[143.82431640625012,44.11699218749999],[144.71523437500005,43.92797851562503],[145.36953125000005,44.32739257812506],[145.13964843750003,43.6625],[145.34082031249997,43.30253906249999],[145.83300781249997,43.38593750000001],[144.92138671874997,43.00092773437498],[143.96933593750006,42.88139648437499],[143.42949218750002,42.41889648437498],[143.2365234375001,42.000195312499955],[141.85136718750007,42.57905273437501],[141.40664062500005,42.54692382812496],[140.98613281250002,42.34213867187498],[140.70976562500002,42.555615234374955],[140.48046875000003,42.559375],[140.32666015625003,42.29335937499999],[141.15097656250012,41.80507812499999],[140.99951171874997,41.73740234375006],[140.65986328125004,41.815576171874994],[140.3849609375001,41.51928710937503],[140.08515625000004,41.43408203125],[139.99531250000004,41.57641601562503],[140.10839843749997,41.912939453125034],[139.83544921874997,42.278076171875],[139.86015625000002,42.58173828125004],[140.43222656250012,42.95410156250006],[140.39238281250002,43.303125],[141.13818359374997,43.17993164062506],[141.37412109375006,43.279638671875006],[141.7609375000001,44.482519531250034],[141.58300781250003,45.15595703125001],[141.66796874999997,45.401269531249966],[141.93769531250004,45.509521484375],[142.88476562499997,44.670117187499955],[143.82431640625012,44.11699218749999]]]]},"properties":{"name":"Japan","childNum":28}},{"geometry":{"type":"Polygon","coordinates":[[[77.04863281249999,35.109912109374996],[76.927734375,35.346630859375],[76.88222656250002,35.4357421875],[76.81279296874999,35.571826171874996],[76.76689453124999,35.66171875],[76.87890625,35.61328125],[77.09003906250001,35.552050781249996],[77.29482421875002,35.508154296875],[77.44648437500001,35.4755859375],[77.57255859374999,35.471826171874994],[77.72402343750002,35.48056640625],[77.79941406250003,35.495898437499996],[77.42343750000003,35.302587890625],[77.16855468750003,35.171533203124994],[77.04863281249999,35.109912109374996]]]},"properties":{"name":"Siachen Glacier","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[50.184472656249994,44.854638671874994],[49.99511718750003,44.93696289062498],[50.10986328124997,45.08193359375002],[50.038867187500074,44.949121093749966],[50.184472656249994,44.854638671874994]]],[[[87.32285156250012,49.085791015625006],[86.8083007812501,49.04970703125002],[86.54941406250012,48.52861328125002],[85.7494140625,48.38505859374999],[85.52597656250006,47.915625],[85.65664062500005,47.254638671875],[85.484765625,47.06352539062496],[84.78613281249997,46.83071289062505],[84.66660156250006,46.97236328125004],[84.016015625,46.97050781250002],[83.02949218750004,47.18593750000002],[82.31523437500002,45.59492187499998],[82.61162109375007,45.424267578124955],[82.52148437500003,45.12548828125],[82.26660156249997,45.21909179687498],[81.94492187500006,45.16083984375001],[81.69199218750012,45.34936523437497],[80.05917968750012,45.006445312500006],[79.871875,44.88378906249997],[80.48154296875006,44.71464843749999],[80.35527343750002,44.09726562500006],[80.78574218750006,43.16157226562504],[80.39023437500006,43.043115234374966],[80.53896484375005,42.873486328124955],[80.20224609375012,42.73447265624998],[80.209375,42.190039062500006],[80.07128906249997,42.302978515625],[79.92109375000004,42.41313476562496],[79.49013671875,42.45756835937496],[79.42822265624997,42.483496093750006],[79.20302734375005,42.66601562499997],[79.16484375000007,42.759033203125],[79.1266601562501,42.775732421875034],[76.98808593750007,42.97358398437501],[76.64648437500003,42.928808593750034],[76.50917968750005,42.91889648437498],[75.9322265625,42.92851562499999],[75.84033203125003,42.9375],[75.78955078124997,42.93291015624999],[75.68173828125,42.83046875],[75.04765625000007,42.904394531250034],[74.20908203125006,43.24038085937502],[73.88603515625002,43.132568359375],[73.55625,43.002783203125006],[73.45019531249997,42.703027343749966],[73.421875,42.59350585937503],[73.49296875000007,42.409033203125034],[73.41162109375003,42.41977539062498],[73.316015625,42.46699218750001],[73.2829101562501,42.50410156250004],[72.85507812500006,42.561132812500006],[72.75292968750003,42.63789062500001],[72.54316406250004,42.67773437500006],[72.27578125,42.757666015625006],[71.76054687500002,42.82148437500004],[71.5142578125,42.766943359375006],[71.42207031250004,42.78315429687504],[71.25664062500002,42.733544921874966],[70.89287109375007,42.339990234374994],[70.94677734374997,42.24868164062505],[69.15361328125002,41.42524414062498],[68.58408203125,40.876269531250045],[68.57265625,40.62265624999998],[68.29189453125,40.656103515625034],[68.04765625000007,40.80927734374998],[68.11308593750007,41.02861328124999],[67.9357421875001,41.19658203125002],[66.70966796875004,41.17915039062501],[66.49863281250006,41.99487304687503],[66.00957031250007,42.00488281250003],[66.1002929687501,42.99082031249998],[65.80302734375002,42.87695312500006],[65.49619140625,43.310546875],[64.9054687500001,43.714697265625006],[64.44316406250007,43.55117187499999],[63.20703125000003,43.62797851562502],[61.99023437500003,43.492138671874955],[61.007910156250006,44.39379882812497],[58.555273437500006,45.55537109375001],[55.97568359375006,44.99492187499996],[55.97744140625005,41.32221679687504],[55.434375,41.296289062499994],[54.85380859375002,41.965185546875006],[54.120996093749994,42.335205078125],[53.0558593750001,42.14775390624999],[52.4938476562501,41.780371093750034],[52.59658203125005,42.760156249999966],[51.898242187500074,42.86962890624997],[51.61601562500002,43.15844726562503],[51.29541015624997,43.17412109375002],[51.30175781249997,43.48237304687501],[50.8307617187501,44.192773437499966],[50.331152343750006,44.32548828125002],[50.25292968749997,44.461523437500006],[50.409472656250074,44.6240234375],[51.543554687500006,44.53100585937506],[51.009375,44.92182617187501],[51.4157226562501,45.35786132812501],[53.20039062500004,45.33198242187498],[52.77382812499999,45.57275390625],[53.13525390625003,46.19165039062497],[53.069433593750006,46.85605468750006],[52.48320312500002,46.99067382812504],[52.13828125,46.82861328124997],[51.178027343750074,47.110156250000045],[49.886328125,46.59565429687504],[49.347460937500074,46.51914062499998],[49.232226562500074,46.33715820312503],[48.54121093750004,46.60561523437502],[48.558398437500074,46.75712890624999],[48.959375,46.77460937499998],[48.16699218750003,47.70878906249996],[47.48193359374997,47.80390624999998],[47.292382812499994,47.74091796875004],[47.06464843750004,48.23247070312499],[46.660937500000074,48.41225585937502],[46.70263671875003,48.80556640625002],[47.031347656250006,49.150292968749994],[46.80205078125002,49.36708984375002],[46.889550781249994,49.69697265625001],[47.42919921874997,50.35795898437502],[47.7057617187501,50.37797851562502],[48.33496093750003,49.858251953125006],[48.7589843750001,49.92832031250006],[48.625097656250006,50.61269531250005],[49.32343750000004,50.851708984374966],[49.49804687500003,51.08359375000006],[50.246875,51.28950195312498],[50.79394531249997,51.729199218749955],[51.16347656250005,51.6474609375],[51.344531250000074,51.47534179687503],[52.21914062499999,51.709375],[52.57119140625005,51.481640624999955],[53.33808593750004,51.48237304687504],[54.139746093750006,51.04077148437503],[54.555273437500006,50.535791015624994],[54.64160156250003,51.011572265625034],[55.68623046875004,50.582861328125006],[56.49140625000004,51.01953124999997],[57.01171874999997,51.06518554687503],[57.44218750000002,50.88886718749998],[57.83886718750003,51.091650390625006],[58.359179687500074,51.063818359375034],[58.88369140625005,50.694433593750006],[59.4523437500001,50.62041015625002],[59.523046875,50.492871093749955],[59.812402343749994,50.58203125],[60.05859374999997,50.850292968749955],[60.42480468749997,50.67915039062498],[60.94228515625005,50.69550781250004],[61.38945312500002,50.86103515625001],[61.55468750000003,51.32460937500005],[60.464746093749994,51.651171875000045],[60.03027343749997,51.93325195312505],[60.99453125000005,52.33686523437504],[60.77441406249997,52.67578124999997],[61.047460937500006,52.97246093750002],[62.08271484375004,53.00541992187499],[61.65986328125004,53.22846679687504],[61.19921874999997,53.28715820312502],[61.22890625,53.445898437500006],[61.53496093750002,53.52329101562506],[60.97949218749997,53.62172851562505],[61.231054687500006,54.01948242187498],[61.92871093750003,53.94648437500004],[64.46123046875002,54.38417968750002],[65.08837890624997,54.340185546875034],[65.476953125,54.62329101562497],[68.15585937500006,54.97670898437505],[68.20625,55.16093750000002],[68.9772460937501,55.389599609374955],[70.18242187500002,55.162451171875034],[70.73808593750007,55.30517578125],[71.18554687500003,54.59931640624998],[71.09316406250005,54.21220703124999],[72.00449218750006,54.20566406249998],[72.18603515625003,54.32563476562501],[72.44677734375003,53.94184570312498],[72.62226562500004,54.13432617187502],[73.22988281250005,53.957812500000045],[73.71240234375003,54.04238281250002],[73.30566406250003,53.707226562499955],[73.40693359375004,53.44755859374999],[73.85898437500006,53.61972656249998],[74.35156250000003,53.487646484375006],[74.45195312500007,53.64726562500002],[75.22021484374997,53.89379882812506],[75.43720703125004,54.08964843749999],[76.8373046875,54.4423828125],[76.65458984375007,54.14526367187503],[76.42167968750007,54.151513671874966],[76.48476562500005,54.02255859374998],[77.85996093750006,53.269189453124994],[79.98623046875,50.774560546874966],[80.42363281250002,50.94628906249997],[80.44804687500002,51.18334960937503],[80.73525390625,51.29340820312498],[81.12724609375002,51.19106445312502],[81.0714843750001,50.96875],[81.38828125000006,50.95649414062501],[81.46591796875006,50.73984375],[82.49394531250007,50.72758789062499],[82.76083984375012,50.89335937500002],[83.35732421875005,50.99458007812504],[83.94511718750007,50.774658203125],[84.32324218749997,50.239160156249966],[84.9894531250001,50.061425781249994],[85.2326171875001,49.61582031249998],[86.1808593750001,49.49931640624996],[86.67548828125004,49.77729492187501],[86.62646484374997,49.56269531250001],[87.32285156250012,49.085791015625006]]]]},"properties":{"name":"Kazakhstan","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[35.325292968750006,5.364892578124994],[35.745019531249994,5.343994140625],[35.80029296874997,5.156933593749983],[35.77929687499997,5.105566406250006],[35.756152343750074,4.950488281250031],[35.76308593750005,4.808007812500051],[36.02197265625003,4.468115234374991],[36.90556640625002,4.411474609374991],[37.15458984375002,4.254541015624994],[37.944921875,3.746728515625023],[38.0861328125001,3.648828124999966],[38.22529296875004,3.61899414062502],[38.45156250000005,3.604833984374977],[38.608007812500006,3.600097656249986],[39.49443359375002,3.45610351562496],[39.65751953125002,3.577832031249983],[39.79033203125002,3.754248046875034],[39.8421875,3.851464843750037],[40.765234375,4.273046875000034],[41.02080078125002,4.057470703124991],[41.22089843750004,3.943554687499969],[41.372460937499994,3.94619140624998],[41.48193359375003,3.96328125],[41.737695312499994,3.979052734375003],[41.88398437500004,3.977734375000011],[41.6134765625001,3.59047851562498],[41.34179687499997,3.20166015625],[40.964453125,2.814648437500026],[40.9787109375001,-0.870312500000011],[41.249804687500074,-1.220507812499946],[41.4269531250001,-1.449511718749974],[41.521875,-1.572265625000028],[41.53271484374997,-1.695312499999957],[41.26748046875005,-1.945019531250026],[40.889746093750006,-2.023535156250034],[40.89824218750002,-2.269921874999966],[40.64414062500006,-2.53945312499998],[40.22246093750002,-2.688378906250037],[40.1154296875001,-3.250585937499991],[39.8609375,-3.576757812500006],[39.49091796875004,-4.478417968750023],[39.221777343750006,-4.692382812500014],[37.608203125000074,-3.497070312500028],[37.643847656250074,-3.045410156250028],[33.90322265625005,-1.002050781250034],[33.94316406250002,0.173779296874969],[34.160937500000074,0.605175781250026],[34.4108398437501,0.867285156250034],[34.48173828125002,1.042138671875051],[34.79863281250002,1.24453125],[34.976464843749994,1.719628906250051],[34.97753906249997,1.861914062499991],[34.9640625000001,2.06240234374998],[34.8830078125001,2.417919921875026],[34.90576171875003,2.4796875],[34.44785156250006,3.163476562500037],[34.40722656249997,3.357519531250034],[34.39941406249997,3.412695312500006],[34.44179687499999,3.60625],[34.43769531250004,3.650585937499969],[34.392871093750074,3.691503906250048],[34.26708984375003,3.733154296875],[34.16503906250003,3.812988281250014],[34.18574218750004,3.869775390625037],[34.13203125000004,3.889160156249986],[33.97607421874997,4.220214843750028],[34.176855468750006,4.419091796875037],[34.38017578125002,4.620654296874974],[34.6398437500001,4.875488281250028],[34.878320312499994,5.109570312500026],[35.08447265624997,5.31186523437502],[35.268359375000074,5.492285156250006],[35.325292968750006,5.364892578124994]]]},"properties":{"name":"Kenya","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[72.63994140625002,39.385986328125],[72.22998046875,39.20751953125],[72.14736328125002,39.2607421875],[72.08417968750001,39.31064453125],[72.04277343750002,39.3521484375],[71.77861328125002,39.277978515624994],[71.73222656250002,39.422998046874994],[71.50332031250002,39.478808593749996],[71.51738281250002,39.553857421874994],[71.50302734375,39.582177734374994],[71.4703125,39.603662109374994],[70.79931640625,39.3947265625],[70.50117187500001,39.587353515625],[69.29765625000002,39.524804687499994],[69.2447265625,39.827099609375],[69.27880859375,39.917773437499996],[69.3072265625,39.968554687499996],[69.36542968750001,39.947070312499996],[69.43193359375002,39.909765625],[69.47626953125001,39.919726562499996],[69.47099609375002,39.990625],[69.46875,40.020751953125],[69.966796875,40.20224609375],[70.59921875,39.974511718749994],[70.990625,40.2548828125],[71.3046875,40.286914062499996],[71.69248046875,40.15234375],[72.13125,40.438623046874994],[72.3892578125,40.427392578124994],[72.40205078125001,40.578076171875],[72.6041015625,40.525439453124996],[73.13212890625002,40.82851562499999],[72.65830078125,40.869921875],[72.36406250000002,41.04345703125],[72.294921875,41.039941406249994],[72.21308593750001,41.0142578125],[72.18730468750002,41.025927734374996],[72.18095703125002,41.118457031249996],[72.16425781250001,41.173730468749994],[72.11542968750001,41.186572265624996],[72.05244140625001,41.16474609375],[71.95849609375,41.187060546874996],[71.87861328125001,41.19501953125],[71.8580078125,41.311376953125],[71.79248046875,41.413134765624996],[71.75771484375002,41.428027343749996],[71.70068359375,41.454003906249994],[71.66494140625002,41.5412109375],[71.6375,41.5341796875],[71.60224609375001,41.503271484375],[71.60625,41.367431640625],[71.54560546875001,41.308056640625],[71.5,41.307470703125],[71.4208984375,41.34189453125],[71.40839843750001,41.136035156249996],[71.39306640625,41.123388671875],[71.11074218750002,41.152636718749996],[70.86044921875,41.224902343749996],[70.734375,41.400537109374994],[70.18095703125002,41.571435546874994],[70.85664062500001,42.030810546874996],[71.0322265625,42.077783203124994],[71.228515625,42.162890625],[71.23232421875002,42.186279296875],[71.21269531250002,42.206445312499994],[71.12998046875,42.25],[71.03603515625002,42.28466796875],[70.97900390625,42.266552734375],[70.94677734375,42.248681640624994],[70.89287109375002,42.339990234374994],[71.25664062500002,42.733544921874994],[71.42207031250001,42.783154296875],[71.5142578125,42.766943359375],[71.76054687500002,42.821484375],[72.16181640625001,42.760693359375],[72.27578125000002,42.757666015625],[72.54316406250001,42.677734375],[72.7529296875,42.637890625],[72.855078125,42.5611328125],[73.28291015625001,42.5041015625],[73.316015625,42.4669921875],[73.41162109375,42.419775390625],[73.49296875000002,42.409033203125],[73.421875,42.593505859375],[73.4501953125,42.703027343749994],[73.55625,43.002783203125],[73.88603515625002,43.132568359375],[74.20908203125,43.240380859374994],[75.04765625000002,42.90439453125],[75.68173828125,42.83046875],[75.78955078125,42.932910156249996],[75.84033203125,42.9375],[75.9322265625,42.928515625],[76.50917968750002,42.918896484375],[76.646484375,42.92880859375],[76.98808593749999,42.973583984375],[79.12666015625001,42.775732421875],[79.20302734375002,42.666015625],[79.29550781250003,42.604833984375],[79.36777343750003,42.547216796875],[79.42822265625,42.48349609375],[79.92109375000001,42.413134765624996],[80.0712890625,42.302978515625],[80.209375,42.1900390625],[80.24619140625003,42.059814453125],[80.23515624999999,42.04345703125],[80.21621093750002,42.032421875],[79.90966796875,42.014990234375],[79.84042968750003,41.995751953124994],[79.76611328125,41.898876953125],[78.74257812500002,41.56005859375],[78.54316406250001,41.4595703125],[78.44287109375,41.417529296874996],[78.36240234375003,41.371630859374996],[78.34628906250003,41.2814453125],[78.12343750000002,41.075634765625],[77.95644531250002,41.050683593749994],[77.81523437499999,41.055615234375],[77.71933593750003,41.024316406249994],[77.58173828125001,40.9927734375],[76.98662109374999,41.03916015625],[76.90771484375,41.024169921875],[76.82402343749999,40.982324218749994],[76.70839843750002,40.818115234375],[76.6611328125,40.779638671875],[76.63984375000001,40.742236328124996],[76.62216796875003,40.662353515625],[76.57792968749999,40.577880859375],[76.48017578125001,40.449511718749996],[76.39638671875002,40.389794921874994],[76.31855468750001,40.35224609375],[76.25830078125,40.43076171875],[75.87197265625002,40.30322265625],[75.67714843750002,40.305810546874994],[75.55556640625002,40.6251953125],[75.52080078125002,40.6275390625],[75.24101562500002,40.480273437499996],[75.111328125,40.4541015625],[75.0044921875,40.449511718749996],[74.865625,40.493505859375],[74.80126953125,40.428515625],[74.83046875000002,40.32851562499999],[74.41191406250002,40.13720703125],[74.24267578125,40.092041015625],[74.08515625000001,40.07431640625],[73.99160156250002,40.043115234374994],[73.93876953125002,39.978808593749996],[73.88457031250002,39.8779296875],[73.85625,39.828662109374996],[73.83535156250002,39.800146484375],[73.83974609375002,39.762841796874994],[73.88251953125001,39.71455078125],[73.9146484375,39.606494140624996],[73.90712890625002,39.57851562499999],[73.87275390625001,39.53330078125],[73.82294921875001,39.48896484375],[73.71572265625002,39.462255859375],[73.63164062500002,39.448876953124994],[73.47041015625001,39.460595703124994],[73.38740234375001,39.442724609375],[73.33613281250001,39.412353515625],[73.2349609375,39.374560546874996],[73.10927734375002,39.3619140625],[72.63994140625002,39.385986328125]],[[70.66416015625,39.85546875],[70.56708984375001,39.866601562499994],[70.49775390625001,39.882421875],[70.48281250000002,39.882714843749994],[70.4892578125,39.863037109375],[70.5595703125,39.790917968749994],[70.61210937500002,39.786767578124994],[70.70166015625,39.82529296875],[70.66416015625,39.85546875]],[[71.20615234375,39.892578125],[71.22871093750001,40.048144531249996],[71.08037109375002,40.079882812499996],[71.02412109375001,40.149169921875],[71.00546875,40.152294921875],[70.96064453125001,40.08798828125],[71.04482421875002,39.992529296875],[71.04365234375001,39.976318359375],[71.01171875,39.8951171875],[71.06425781250002,39.884912109374994],[71.15625,39.883447265624994],[71.20615234375,39.892578125]]]},"properties":{"name":"Kyrgyzstan","childNum":3}},{"geometry":{"type":"Polygon","coordinates":[[[104.42636718750006,10.411230468749991],[103.87050781250005,10.655126953125034],[103.58710937500004,10.552197265625026],[103.54042968750005,10.668701171875043],[103.721875,10.890136718750043],[103.5324218750001,11.146679687499997],[103.35361328125006,10.921582031250054],[103.15283203124997,10.913720703125051],[103.12548828124997,11.460644531250011],[102.9486328125,11.773486328124974],[102.93388671875002,11.706689453125037],[102.73662109375007,12.089794921875011],[102.75566406250002,12.42626953125],[102.49960937500012,12.669970703125003],[102.33632812500005,13.560302734375014],[102.546875,13.585693359375043],[102.90927734375006,14.136718750000028],[103.19941406250004,14.332617187499977],[104.77900390625004,14.427832031250006],[105.07412109375005,14.227441406250037],[105.12597656250003,14.280957031250011],[105.16914062500004,14.336083984374966],[105.1833007812501,14.346240234374989],[105.18554687500003,14.319091796874972],[105.20703125000003,14.259375],[105.24570312500006,14.200537109374977],[105.35019531250006,14.109570312500011],[105.53154296875007,14.156152343749994],[105.73974609375003,14.084960937500057],[105.83144531250005,13.976611328125003],[105.9044921875001,13.924511718750054],[106.06679687500005,13.921191406250003],[106.12470703125004,14.049121093750031],[106.09667968749997,14.127099609375023],[106.00410156250004,14.262890624999983],[105.97890625,14.343017578125043],[106.00839843750012,14.357177734375],[106.1652343750001,14.372363281249989],[106.19072265625007,14.388134765624997],[106.22539062500002,14.476220703125009],[106.26796875,14.466210937500009],[106.35498046875003,14.454785156249997],[106.44697265625004,14.515039062500009],[106.50146484375003,14.578222656250006],[106.53115234375005,14.549414062499991],[106.5636718750001,14.505078125000026],[106.59921875000006,14.479394531250037],[106.66542968750005,14.441308593749994],[106.73818359375005,14.387744140625017],[106.78349609375002,14.335107421875037],[106.81992187500006,14.314697265625057],[106.91318359375006,14.329394531250031],[106.93808593750006,14.327343750000054],[106.99218750000003,14.391015624999966],[107.03017578125,14.425683593750009],[107.06240234375,14.415771484375043],[107.109375,14.416699218750054],[107.29267578125004,14.592382812500048],[107.37988281250003,14.555322265625051],[107.41474609375004,14.56289062499999],[107.51943359375005,14.705078125],[107.3314453125,14.126611328125009],[107.60546874999997,13.437792968750017],[107.47539062500002,13.030371093749963],[107.50644531250006,12.364550781250031],[107.39335937500002,12.260498046874972],[107.21210937500004,12.30400390624996],[106.70009765625,11.979296874999974],[106.41386718750002,11.9484375],[106.39921875000007,11.687011718750028],[106.0060546875001,11.758007812500011],[105.85146484375005,11.635009765625],[105.85605468750006,11.294287109375048],[106.16093750000002,11.037109375000057],[106.16396484375005,10.794921875],[105.85332031250007,10.86357421874996],[105.75507812500004,10.989990234375043],[105.40576171875003,10.95161132812504],[105.3146484375001,10.845166015625026],[105.04570312500002,10.911376953125014],[105.04638671874997,10.701660156250014],[104.85058593749997,10.534472656249974],[104.42636718750006,10.411230468749991]]]},"properties":{"name":"Cambodia","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-157.34213867187503,1.855566406250034],[-157.17578125,1.73984375],[-157.57895507812498,1.902050781249997],[-157.43583984374993,1.84726562500002],[-157.365185546875,1.94609375],[-157.44189453125003,2.025048828125009],[-157.321875,1.968554687500045],[-157.34213867187503,1.855566406250034]]],[[[-159.3390625,3.923535156249983],[-159.27475585937503,3.796582031250054],[-159.40903320312503,3.87324218750004],[-159.3390625,3.923535156249983]]]]},"properties":{"name":"Kiribati","childNum":2}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[126.32695312500002,33.2236328125],[126.16562500000012,33.31201171875],[126.33769531250002,33.46040039062501],[126.90117187500002,33.51513671874997],[126.87285156250002,33.34116210937498],[126.32695312500002,33.2236328125]]],[[[126.23369140625002,34.370507812499994],[126.12285156250002,34.443945312500034],[126.34384765625012,34.544921875],[126.23369140625002,34.370507812499994]]],[[[126.17197265625006,34.73115234375001],[126.00751953125004,34.86748046874999],[126.07841796875002,34.914843750000045],[126.17197265625006,34.73115234375001]]],[[[128.0658203125,34.80585937500004],[128.05468750000003,34.70805664062502],[127.87343750000005,34.73496093749998],[127.8322265625001,34.87451171875],[128.0658203125,34.80585937500004]]],[[[128.74101562500007,34.798535156249955],[128.64667968750004,34.73686523437502],[128.48925781250003,34.86528320312496],[128.66796875000003,35.0087890625],[128.74101562500007,34.798535156249955]]],[[[126.52070312500004,37.73681640625003],[126.516015625,37.60468750000001],[126.42333984375003,37.62363281250006],[126.41162109374997,37.82265625000002],[126.52070312500004,37.73681640625003]]],[[[128.37460937500012,38.6234375],[129.41826171875002,37.059033203124955],[129.40351562500004,36.052148437499994],[129.57285156250006,36.05053710937503],[129.4191406250001,35.49785156249996],[129.07675781250006,35.12270507812502],[128.5109375000001,35.10097656250002],[128.44394531250012,34.87036132812503],[128.03623046875006,35.02197265625],[127.71484374999997,34.95468749999998],[127.71542968750012,34.72104492187498],[127.40429687499997,34.823095703125006],[127.47910156250012,34.625244140625],[127.324609375,34.463281249999966],[127.17343750000006,34.54614257812497],[127.24707031249997,34.755126953125],[126.89746093749997,34.438867187499966],[126.75478515625005,34.511865234374994],[126.53144531250004,34.31425781249999],[126.26445312500002,34.67324218750002],[126.52451171875006,34.697900390624966],[126.59335937500012,34.824365234374994],[126.42070312500002,34.823388671874966],[126.29111328125012,35.154150390625034],[126.61406250000007,35.57099609375004],[126.4884765625001,35.647070312500006],[126.75302734375006,35.871972656249994],[126.5404296875,36.166162109374966],[126.4876953125,36.69379882812498],[126.18085937500004,36.69160156249998],[126.16054687500005,36.77192382812501],[126.48701171875004,37.00747070312502],[126.78447265625007,36.94843749999998],[126.87207031249997,36.82446289062506],[126.97685546875002,36.93940429687501],[126.74638671875002,37.19355468750001],[126.63388671875012,37.78183593750006],[127.09033203125003,38.28388671875001],[128.03896484375,38.30854492187498],[128.37460937500012,38.6234375]]]]},"properties":{"name":"Korea","childNum":7}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[48.27539062499997,29.624316406250017],[48.17968750000003,29.611425781250063],[48.081445312499994,29.798925781250063],[48.1847656250001,29.978857421875034],[48.348242187500006,29.78266601562504],[48.27539062499997,29.624316406250017]]],[[[48.442480468750006,28.542919921874983],[47.671289062499994,28.53315429687504],[47.433203125,28.989550781250017],[46.53144531250004,29.09624023437499],[46.69375,29.259667968749966],[46.76933593750002,29.347460937500017],[46.90585937500006,29.5375],[47.14824218750002,30.0009765625],[47.64375,30.097314453125023],[47.75390624999997,30.076611328124955],[47.97871093750004,29.98281250000005],[48.00566406250002,29.835791015625034],[48.143457031249994,29.57246093750001],[47.96962890625005,29.61669921874997],[47.72265624999997,29.393017578124955],[48.0514648437501,29.355371093750023],[48.442480468750006,28.542919921874983]]]]},"properties":{"name":"Kuwait","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[102.12744140625011,22.37919921874999],[102.58251953125006,21.904296875000057],[102.66201171875008,21.676025390625057],[102.73857421875005,21.677929687500125],[102.77109375000015,21.70966796875001],[102.79824218750014,21.797949218750034],[102.81591796875,21.807373046875],[102.94960937500008,21.681347656250068],[102.85117187500009,21.26591796874999],[102.8837890625,21.202587890625068],[103.1044921875,20.89165039062499],[103.21074218749999,20.840625],[103.46357421874995,20.779833984375102],[103.6350585937501,20.697070312500102],[104.10136718750005,20.945507812500125],[104.1953125,20.91396484375008],[104.349609375,20.82109374999999],[104.58320312500001,20.646679687499955],[104.53271484375,20.554882812500125],[104.47861328124998,20.529589843750102],[104.40781250000015,20.485742187500023],[104.36777343750015,20.441406250000057],[104.39218750000015,20.424755859375068],[104.49619140625003,20.41367187499992],[104.61884765624995,20.374511718750114],[104.65644531250001,20.328515624999966],[104.66191406250005,20.289013671875125],[104.67695312500007,20.224707031249977],[104.69873046875006,20.205322265625114],[104.84785156250007,20.202441406250045],[104.88867187500006,20.169091796875023],[104.92919921874994,20.082812500000045],[104.92792968750007,20.01811523437499],[104.81513671875001,19.90400390625001],[104.80175781250011,19.836132812500068],[104.74316406250006,19.754736328124977],[104.58789062500006,19.61875],[104.54628906250014,19.610546875000068],[104.25986328125003,19.685498046875068],[104.06279296875005,19.678417968750068],[104.03203124999999,19.67514648437492],[104.0134765625001,19.646484374999943],[104.05156250000005,19.564160156250068],[104.06289062500002,19.482568359375136],[104.02753906250013,19.420458984375102],[103.93203125000002,19.366064453125034],[103.89638671875002,19.339990234375023],[103.89160156249994,19.30498046874999],[105.146484375,18.650976562499977],[105.14541015625014,18.616796874999977],[105.08701171875015,18.49624023437508],[105.11455078125005,18.405273437500057],[105.45820312500007,18.154296875000057],[105.51855468750011,18.077441406250045],[105.58847656250015,17.983691406249932],[105.69140625,17.737841796874932],[106.00625,17.415283203124943],[106.26953125,17.216796875000057],[106.33339843750002,17.14370117187508],[106.42597656250007,17.00253906250009],[106.50224609374999,16.9541015625],[106.52597656250003,16.876611328125023],[106.53369140625,16.821044921875057],[106.54619140625005,16.650732421874977],[106.65644531250013,16.492626953125125],[106.73955078124999,16.452539062500136],[106.79160156250015,16.490332031249977],[106.83242187500008,16.526269531250023],[106.85107421875,16.515625],[106.89277343750013,16.396533203125102],[106.93066406250006,16.353125],[107.39638671875008,16.04301757812499],[107.39199218750008,15.951660156250057],[107.36064453125005,15.921728515624977],[107.18886718750008,15.838623046875114],[107.16591796875002,15.802490234375],[107.27939453125003,15.618701171875045],[107.33876953125002,15.560498046875125],[107.56425781249999,15.3916015625],[107.62167968750015,15.309863281250045],[107.653125,15.255224609375091],[107.63369140625008,15.18984375000008],[107.58964843749999,15.118457031250102],[107.55527343750009,15.057031250000023],[107.48037109375014,14.979882812500136],[107.5046875000001,14.91591796875008],[107.52451171875003,14.871826171874943],[107.51376953124998,14.817382812500057],[107.51943359375008,14.705078125000114],[107.46513671875005,14.664990234375125],[107.41474609375007,14.56289062500008],[107.37988281250006,14.555322265625136],[107.29267578125007,14.592382812500034],[107.109375,14.416699218749955],[107.06240234375008,14.415771484374943],[107.03017578125008,14.425683593750023],[106.99218749999994,14.39101562500008],[106.93808593750015,14.327343750000068],[106.91318359375003,14.329394531249932],[106.81992187500003,14.314697265624943],[106.7834960937501,14.335107421875023],[106.73818359375008,14.387744140625102],[106.66542968750002,14.441308593750023],[106.59921875000003,14.479394531250136],[106.56367187500007,14.505078125000011],[106.53115234375002,14.549414062499977],[106.50146484375,14.578222656250034],[106.22539062500005,14.476220703125023],[106.1907226562501,14.388134765625011],[106.16523437500007,14.372363281249989],[106.00839843750009,14.357177734375114],[105.97890625000014,14.343017578125057],[106.00410156250013,14.262890625000068],[106.09667968750011,14.127099609375136],[106.12470703124995,14.049121093750045],[106.06679687500008,13.921191406250102],[105.90449218750007,13.924511718750068],[105.83144531250008,13.976611328124989],[105.73974609375006,14.084960937500057],[105.5315429687501,14.156152343750023],[105.35019531250009,14.109570312500125],[105.24570312500015,14.200537109374977],[105.20703125000006,14.259375],[105.18554687499994,14.319091796875],[105.18330078125001,14.346240234374989],[105.24365234375006,14.367871093749955],[105.34218750000008,14.416699218749955],[105.42265624999993,14.471630859374955],[105.47558593750006,14.530126953124977],[105.49736328125005,14.590673828125034],[105.52304687500015,14.843310546874989],[105.54667968749999,14.932470703125034],[105.53339843750013,15.041601562500091],[105.49042968750007,15.127587890625023],[105.49042968750007,15.256591796875],[105.615625,15.488281249999943],[105.63886718750013,15.585937499999943],[105.64101562500002,15.656542968749932],[105.62207031250006,15.699951171875114],[105.39892578125011,15.829882812500102],[105.40625,15.987451171875023],[105.33066406250003,16.037890625000045],[105.1487304687501,16.09355468749999],[105.04716796874999,16.16025390625009],[104.81933593749994,16.466064453125057],[104.75058593750015,16.647558593750034],[104.74355468750014,16.884375],[104.75898437500013,17.0771484375],[104.81601562499998,17.30029296875],[104.73964843750008,17.461669921875],[104.428125,17.698974609375057],[104.32265625000002,17.815820312500023],[104.19619140625002,17.988378906250034],[104.04873046875002,18.216699218749966],[103.94960937500008,18.318994140625023],[103.89882812500002,18.295312500000023],[103.79228515624999,18.31650390625009],[103.62968750000005,18.382568359375057],[103.48798828124995,18.41816406250001],[103.36699218750005,18.42333984375],[103.28828124999995,18.408398437499955],[103.25175781249999,18.373486328125125],[103.24892578125014,18.338964843750034],[103.27958984374999,18.304980468750045],[103.26318359375,18.278466796875136],[103.19970703125006,18.25947265625001],[103.14853515625009,18.221728515624932],[103.09121093750014,18.13823242187499],[103.05136718750003,18.02851562500001],[102.80742187500005,17.945556640625],[102.71757812500005,17.892236328125136],[102.67519531250014,17.851757812500068],[102.68007812500008,17.824121093750136],[102.66064453125,17.8179687499999],[102.61679687500015,17.833349609375034],[102.59824218750009,17.926757812500057],[102.55253906249999,17.965087890625057],[102.4587890625001,17.984619140624943],[102.35185546874999,18.045947265625045],[102.14824218750005,18.203857421875057],[102.10146484375014,18.21064453125001],[102.03457031250002,18.169824218750023],[101.94746093750001,18.081494140624955],[101.87548828125011,18.046435546874932],[101.81865234375005,18.064648437500125],[101.77480468750002,18.033398437500125],[101.6875,17.889404296875114],[101.56367187500001,17.820507812500125],[101.55507812500002,17.812353515625034],[101.41367187500015,17.71875],[101.16748046875011,17.4990234375],[101.10517578125001,17.479541015625102],[100.9084960937501,17.583886718750023],[101.14394531250008,18.14262695312499],[101.1375,18.286865234375057],[101.0505859375001,18.407031250000045],[101.04697265625003,18.441992187500034],[101.28632812499995,18.977148437500034],[101.19755859374999,19.327929687500045],[101.22080078125015,19.486621093750045],[101.21191406250011,19.548339843750057],[100.51357421875008,19.553466796875],[100.39765625000013,19.756103515625057],[100.51953125000006,20.177929687500068],[100.31796875000003,20.385888671875136],[100.2180664062501,20.339599609375114],[100.13974609375015,20.245410156250102],[100.11494140625007,20.25766601562492],[100.12246093750002,20.316650390625057],[100.12968750000005,20.372216796875023],[100.1838867187501,20.589111328124943],[100.2493164062501,20.730273437499932],[100.32607421875008,20.795703124999932],[100.40742187499995,20.823242187500057],[100.56513671875013,20.82509765625008],[100.62294921875002,20.85957031250001],[100.61767578125,20.87924804687509],[100.54931640625011,20.884228515625068],[100.5222656250001,20.921923828125102],[100.53613281250006,20.992382812500068],[100.703125,21.25136718750008],[101.0803710937501,21.46865234375008],[101.13886718750013,21.567480468749977],[101.19667968750002,21.522070312499977],[101.17539062500009,21.407519531250102],[101.21992187500013,21.342431640625136],[101.21181640625008,21.278222656250023],[101.22441406249999,21.22373046874992],[101.24785156249993,21.197314453125045],[101.28144531250007,21.184130859375045],[101.44355468750001,21.230810546874977],[101.54238281250008,21.234277343750136],[101.70478515625013,21.150146484375057],[101.728125,21.15639648437508],[101.78349609374999,21.204150390625045],[101.8005859375001,21.212597656249955],[101.7229492187501,21.314941406250057],[101.74726562500007,21.60576171874999],[101.7439453125001,21.77797851562508],[101.73652343750001,21.826513671874977],[101.52451171874998,22.253662109375],[101.56787109375011,22.2763671875],[101.6199218750001,22.327441406250102],[101.67148437500009,22.462304687500023],[101.70751953125,22.486572265625],[101.73876953125011,22.495263671874966],[101.75996093750001,22.490332031250034],[101.841796875,22.388476562500102],[102.02441406250006,22.439208984375114],[102.09150390625007,22.412255859375136],[102.12744140625011,22.37919921874999]]]},"properties":{"name":"Lao PDR","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[35.869140625,33.43173828125],[35.411230468750006,33.07568359375],[35.10859375000001,33.08369140625],[35.64785156250002,34.2482421875],[35.97626953125001,34.629199218749996],[36.383886718750006,34.65791015625],[36.32988281250002,34.499609375],[36.50439453125,34.432373046875],[36.5849609375,34.221240234374996],[36.27783203125,33.92529296875],[36.36503906250002,33.83935546875],[35.98613281250002,33.75263671875],[36.03447265625002,33.58505859375],[35.869140625,33.43173828125]]]},"properties":{"name":"Lebanon","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-8.486425781249977,7.558496093749994],[-8.408740234374989,7.411816406249997],[-8.324511718749989,6.920019531249991],[-8.587890625,6.490527343749989],[-8.287109375,6.319042968749997],[-7.981591796874994,6.2861328125],[-7.888623046874983,6.23486328125],[-7.800927734374994,6.038916015624991],[-7.730371093749994,5.919042968749991],[-7.636132812499994,5.90771484375],[-7.454394531249989,5.84130859375],[-7.39990234375,5.550585937499989],[-7.585058593749977,4.916748046875],[-7.574658203124983,4.572314453124989],[-7.544970703124989,4.351318359375],[-8.259033203125,4.589990234374994],[-9.132177734374977,5.054638671874997],[-10.2763671875,6.07763671875],[-11.291601562499977,6.688232421875],[-11.507519531249983,6.906542968749989],[-11.267675781249977,7.232617187499997],[-10.878076171874994,7.538232421874994],[-10.6474609375,7.759375],[-10.570849609374989,8.071142578124991],[-10.516748046874994,8.125292968749989],[-10.359814453124983,8.187939453124997],[-10.283203125,8.485156249999989],[-10.233056640624994,8.488818359374989],[-10.147412109374983,8.519726562499997],[-10.064355468749994,8.429882812499997],[-9.781982421875,8.537695312499991],[-9.518261718749983,8.34609375],[-9.369140625,7.703808593749997],[-9.463818359374983,7.415869140624991],[-9.11757812499999,7.215917968749991],[-8.8896484375,7.2626953125],[-8.659765624999977,7.688378906249994],[-8.486425781249977,7.558496093749994]]]},"properties":{"name":"Liberia","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[25.150488281250006,31.654980468749997],[24.85273437500001,31.334814453125],[24.96142578125,30.678515625],[24.703222656250006,30.201074218749994],[24.980273437500017,29.181884765625],[24.980273437500017,25.5888671875],[24.980273437500017,21.995849609375],[24.9794921875,20.002587890624994],[23.980273437500017,19.99594726562499],[23.980273437500017,19.496630859375003],[20.14765625000001,21.38925781249999],[15.984082031250011,23.445214843749994],[14.97900390625,22.99619140624999],[14.215527343750011,22.619677734375003],[13.48125,23.18017578125],[11.967871093750006,23.517871093750003],[11.507617187500017,24.314355468749994],[10.686132812500006,24.55136718749999],[10.395898437500023,24.485595703125],[10.255859375,24.591015625],[10.000683593750011,25.332080078125003],[9.4482421875,26.067138671875],[9.491406250000011,26.333740234375],[9.883203125000023,26.630810546874997],[9.74755859375,27.330859375],[9.916015625,27.785693359374996],[9.805273437500006,29.176953125],[9.310253906250011,30.115234375],[9.51875,30.229394531249994],[9.89501953125,30.3873046875],[9.932519531250023,30.425341796874996],[10.059765625000011,30.580078125],[10.21640625,30.783203125],[10.114941406250011,31.463769531249994],[10.274609375000011,31.684960937499994],[10.475781250000011,31.736035156249997],[10.60888671875,31.929541015625],[10.826367187500011,32.0806640625],[11.005175781250017,32.172705078125],[11.168261718750017,32.256738281249994],[11.358007812500006,32.34521484375],[11.504980468750006,32.413671875],[11.535937500000017,32.47333984375],[11.533789062500006,32.524951171874996],[11.453906250000017,32.642578125],[11.453906250000017,32.781689453125],[11.459179687500011,32.897363281249994],[11.467187500000023,32.965722656249994],[11.504589843750011,33.181933593749996],[11.657128906250023,33.118896484375],[11.8134765625,33.093701171875],[12.279882812500006,32.858544921874994],[12.753515625,32.801074218749996],[13.283496093750017,32.9146484375],[15.176562500000017,32.391162109374996],[15.705957031250023,31.426416015624994],[17.830468750000023,30.927587890625],[18.669824218750023,30.415673828124994],[19.12373046875001,30.26611328125],[19.713281250000023,30.48837890625],[20.11152343750001,30.963720703125],[19.926367187500006,31.817529296874994],[20.121484375000023,32.21875],[20.62109375,32.58017578125],[21.63593750000001,32.937304687499996],[22.187402343750023,32.918261718749996],[23.090625,32.61875],[23.10625,32.331445312499994],[23.28632812500001,32.213818359375],[24.129687500000017,32.009228515625],[24.878515625,31.984277343749994],[25.150488281250006,31.654980468749997]]]},"properties":{"name":"Libya","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-60.89521484375,13.821972656249997],[-60.951416015625,13.717578125],[-61.073144531249994,13.865576171874991],[-60.908105468749994,14.09335937499999],[-60.89521484375,13.821972656249997]]]},"properties":{"name":"Saint Lucia","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[79.87480468750002,9.050732421875026],[79.90371093750005,8.975],[79.74765625000006,9.104589843749991],[79.87480468750002,9.050732421875026]]],[[[79.98232421875,9.812695312500011],[80.25283203125005,9.796337890625054],[80.71113281250004,9.366357421875023],[81.226953125,8.50551757812498],[81.37285156250002,8.431445312499989],[81.42216796875007,8.147851562500023],[81.87412109375012,7.288330078124986],[81.86142578125012,6.901269531249994],[81.63740234375004,6.425146484374991],[80.72412109375003,5.97905273437496],[80.26738281250007,6.009765625],[80.09531250000012,6.153173828125006],[79.859375,6.829296874999983],[79.71298828125012,8.18232421875004],[79.74980468750007,8.294238281250003],[79.78349609375007,8.018457031250051],[79.92890625000004,8.899218749999974],[80.09960937499997,9.209960937500043],[80.08632812500005,9.577832031250026],[80.42832031250006,9.480957031250014],[80.04580078125005,9.649902343749972],[79.98232421875,9.812695312500011]]]]},"properties":{"name":"Sri Lanka","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[28.646875,-30.1265625],[28.39208984375,-30.147558593750006],[28.128710937500017,-30.52509765625001],[28.05683593750001,-30.63105468750001],[27.753125,-30.6],[27.364062500000017,-30.27919921875001],[27.19355468750001,-29.94130859375001],[27.056933593750017,-29.625585937500006],[27.29453125,-29.519335937500003],[27.73554687500001,-28.940039062500006],[27.959863281250023,-28.873339843750003],[28.084375,-28.77998046875001],[28.23261718750001,-28.701269531250006],[28.471875,-28.615820312500006],[28.583398437500023,-28.594140625],[28.625781250000017,-28.58173828125001],[29.301367187500006,-29.08984375],[29.38671875,-29.31972656250001],[29.34882812500001,-29.441992187500006],[29.293554687500006,-29.56689453125],[29.1421875,-29.700976562500003],[29.098046875000023,-29.919042968750006],[28.646875,-30.1265625]]]},"properties":{"name":"Lesotho","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[20.957812500000074,55.27890625000006],[20.89980468750008,55.286669921875045],[21.11484375,55.61650390624999],[20.957812500000074,55.27890625000006]]],[[[25.573046875000017,54.139892578125],[25.497363281250045,54.17524414062501],[25.52734375000003,54.21513671874996],[25.505664062500045,54.26494140624999],[25.46113281250004,54.29277343749996],[25.179492187500017,54.214257812499966],[25.111425781250006,54.15493164062505],[25.04609375000004,54.13305664062503],[24.869531250000023,54.14516601562502],[24.82568359374997,54.118994140625006],[24.78925781250001,53.99824218750001],[24.768164062499977,53.97465820312499],[24.31796875,53.892968749999966],[24.236621093750045,53.91997070312496],[24.19130859375005,53.95043945312503],[23.559082031250057,53.91982421875002],[23.484667968750074,53.939794921875006],[23.453613281250057,54.14345703125002],[23.3701171875,54.20048828124999],[23.282324218750063,54.240332031250034],[23.17031250000008,54.28144531249998],[23.0875,54.299462890624994],[23.042187500000068,54.30419921875],[23.01552734375005,54.34833984375001],[22.976757812500068,54.36635742187505],[22.89394531250008,54.390527343749994],[22.82373046874997,54.39580078124999],[22.766210937499977,54.356787109375034],[22.679882812500068,54.493017578125006],[22.684472656250023,54.56293945312504],[22.82470703125,54.87128906249998],[22.56728515625005,55.05913085937496],[22.072363281250034,55.06367187499998],[21.235742187500023,55.26411132812498],[21.237890625000034,55.455029296874955],[21.06191406250005,55.81342773437498],[21.053808593750006,56.02294921875003],[21.04609375000004,56.07006835937503],[21.31464843750004,56.18813476562502],[21.65351562500004,56.314550781250006],[22.084570312500034,56.40673828125006],[22.875585937500063,56.39643554687501],[22.96826171875003,56.38041992187502],[23.042968750000057,56.324072265625006],[23.119824218749983,56.330664062500006],[23.195898437500034,56.36713867187498],[24.120703125000063,56.26425781249998],[24.90302734375001,56.398193359375],[25.069921875,56.20039062500004],[25.663183593750063,56.104833984375006],[26.593554687500074,55.66752929687502],[26.590820312500057,55.62265625],[26.56660156250001,55.546484375000034],[26.51923828125004,55.448144531249994],[26.469531250000045,55.371923828125006],[26.457617187500006,55.342480468749955],[26.49531250000004,55.31801757812502],[26.68125,55.30644531249999],[26.76015625000008,55.29335937499999],[26.775683593750045,55.27309570312502],[26.601171875000034,55.130175781250045],[26.291796875000074,55.13959960937501],[26.250781250000045,55.12451171875006],[26.175195312500023,55.003271484375034],[26.092968750000068,54.96230468750005],[25.964453124999977,54.947167968749966],[25.85927734375005,54.91928710937498],[25.722460937500074,54.71787109374998],[25.731640625000068,54.59038085937502],[25.72480468750001,54.564257812500045],[25.68515625,54.53579101562502],[25.62031250000004,54.46040039062501],[25.56757812500004,54.377050781250006],[25.54736328125,54.33183593750002],[25.55751953125005,54.310693359374994],[25.702539062499994,54.29296875],[25.765234374999977,54.179785156250034],[25.573046875000017,54.139892578125]]]]},"properties":{"name":"Lithuania","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[6.4873046875,49.798486328124994],[6.344335937500006,49.452734375],[6.181054687500023,49.498925781249994],[6.119921875000017,49.485205078125],[6.074121093750023,49.454638671874996],[6.011425781250011,49.445458984374994],[5.95947265625,49.454638671874996],[5.928906250000011,49.4775390625],[5.9013671875,49.48974609375],[5.823437500000011,49.505078125],[5.789746093750011,49.53828125],[5.776710379464286,49.639953962053575],[5.744042968750023,49.91962890625],[5.7880859375,49.961230468749996],[5.8173828125,50.0126953125],[5.866894531250011,50.0828125],[5.976269531250011,50.1671875],[6.089062500000011,50.154589843749996],[6.110058593750011,50.123779296875],[6.116503906250017,50.120996093749994],[6.109765625000023,50.034375],[6.13818359375,49.97431640625],[6.204882812500017,49.91513671875],[6.272327008928583,49.887234933035714],[6.4873046875,49.798486328124994]]]},"properties":{"name":"Luxembourg","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[28.14794921875,56.142919921875],[27.576757812500006,55.798779296875],[27.052539062500017,55.83056640625],[26.593554687500017,55.667529296874996],[25.663183593750006,56.104833984375],[25.069921875,56.200390625],[24.90302734375001,56.398193359375],[24.120703125,56.2642578125],[23.81269531250001,56.329248046875],[23.195898437500006,56.367138671875],[23.11982421875001,56.3306640625],[23.04296875,56.324072265625],[22.875585937500006,56.396435546875],[22.084570312500006,56.40673828125],[21.730566406250006,56.325976562499996],[21.65351562500001,56.31455078125],[21.31464843750001,56.188134765625],[21.04609375000001,56.070068359375],[21.0712890625,56.82373046875],[21.72871093750001,57.57099609375],[22.554589843750023,57.724267578125],[23.28730468750001,57.08974609375],[23.647753906250017,56.971044921875],[24.382617187500017,57.250048828124996],[24.322558593750017,57.87060546875],[24.3625,57.866162109375],[24.458886718750023,57.907861328125],[25.11103515625001,58.063427734375],[25.27265625000001,58.009375],[25.66015625,57.920166015625],[26.29804687500001,57.60107421875],[26.532617187500023,57.531005859375],[26.96601562500001,57.609130859375],[27.187109375,57.538330078125],[27.326562500000023,57.52548828125],[27.4697265625,57.5240234375],[27.538671875,57.42978515625],[27.796875,57.316943359374996],[27.82861328125,57.293310546875],[27.838281250000023,57.247705078125],[27.83027343750001,57.194482421875],[27.639453125000017,56.845654296875],[27.806054687500023,56.86708984375],[27.8486328125,56.85341796875],[27.89208984375,56.741064453125],[28.00751953125001,56.599853515625],[28.103125,56.545703125],[28.11083984375,56.510693359375],[28.169238281250017,56.386865234375],[28.191699218750017,56.315576171875],[28.202050781250023,56.260400390625],[28.14794921875,56.142919921875]]]},"properties":{"name":"Latvia","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[28.2125,45.450439453125],[28.07470703125,45.598974609375],[28.23945312500001,46.6408203125],[28.07177734375,46.978417968749994],[27.614062500000017,47.34052734375],[26.980761718750017,48.155029296875],[26.618945312500017,48.25986328125],[26.640429687500017,48.294140625],[26.847070312500023,48.387158203125],[26.90058593750001,48.371923828125],[27.228515625,48.371435546875],[27.549218750000023,48.477734375],[28.34052734375001,48.144433593749994],[28.42304687500001,48.146875],[29.125390625000023,47.96455078125],[29.134863281250006,47.489697265625],[29.455664062500006,47.292626953124994],[29.57197265625001,46.964013671874994],[29.7197265625,46.88291015625],[29.877832031250023,46.82890625],[29.942480468750006,46.723779296874994],[29.93476562500001,46.625],[29.92431640625,46.538867187499996],[30.13105468750001,46.423095703125],[30.07568359375,46.377832031249994],[29.878027343750006,46.360205078125],[29.837890625,46.350537109375],[29.458789062500017,46.453759765624994],[29.30488281250001,46.466601562499996],[29.22382812500001,46.376953125],[29.20458984375,46.379345703125],[29.20078125,46.50498046875],[29.18623046875001,46.523974609374996],[29.146289062500017,46.526904296874996],[28.958398437500023,46.45849609375],[28.92744140625001,46.424121093749996],[28.930566406250023,46.362255859375],[28.94375,46.288427734375],[29.00625,46.17646484375],[28.971875,46.12763671875],[28.94775390625,46.049951171874994],[28.849511718750023,45.978662109374994],[28.73876953125,45.937158203124994],[28.729296875000017,45.852001953125],[28.667578125,45.793847656249994],[28.562304687500017,45.735791015625],[28.491601562500023,45.665771484375],[28.4990234375,45.517724609374994],[28.310351562500017,45.498583984374996],[28.26484375000001,45.48388671875],[28.2125,45.450439453125]]]},"properties":{"name":"Moldova","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[49.936425781249994,-16.90292968750002],[49.82402343750002,-17.08652343750002],[50.02304687500006,-16.6953125],[49.936425781249994,-16.90292968750002]]],[[[48.3421875,-13.363867187500034],[48.21191406250003,-13.385253906249957],[48.191210937500074,-13.259960937500011],[48.308886718750074,-13.198242187499957],[48.3421875,-13.363867187500034]]],[[[49.53828125000004,-12.432128906250014],[49.9375,-13.072265624999957],[50.23535156249997,-14.732031249999963],[50.482714843750074,-15.385644531249994],[50.20898437499997,-15.960449218750028],[50.02041015625005,-15.801757812500028],[49.89257812500003,-15.457714843750011],[49.664355468750074,-15.521582031249977],[49.83906250000004,-16.486523437499997],[49.76718750000006,-16.815136718749983],[49.44931640625006,-17.240625],[49.477832031250074,-17.89853515624999],[49.362890625,-18.336328125],[47.934472656249994,-22.393945312500023],[47.55800781250005,-23.874609374999963],[47.17734375,-24.787207031249977],[46.72851562499997,-25.14990234374997],[46.15869140624997,-25.230371093750023],[45.5080078125001,-25.56318359374997],[45.2057617187501,-25.57050781250004],[44.0353515625001,-24.995703125],[43.670019531250006,-24.30029296875],[43.722265625,-23.529687500000037],[43.2648437500001,-22.38359375],[43.29052734374997,-21.93251953124998],[43.50185546875005,-21.356445312499957],[43.800195312499994,-21.179199218749986],[44.40468750000005,-19.922070312500026],[44.44882812500006,-19.42871093749997],[44.23876953124997,-19.075195312499986],[44.23310546875004,-18.740625],[44.04003906249997,-18.288476562500023],[43.979394531249994,-17.3916015625],[44.42138671874997,-16.70263671874997],[44.476171875,-16.217285156249957],[44.90917968749997,-16.174511718750026],[45.2228515625001,-15.95048828124996],[45.3421875,-16.03671875000002],[45.598242187500006,-15.992578125],[45.70019531249997,-15.813769531249989],[46.157519531250074,-15.738281249999972],[46.3996093750001,-15.924609375000017],[46.331445312499994,-15.713671875000031],[46.47509765625003,-15.513476562500003],[46.942285156249994,-15.219042968749974],[47.09921875,-15.43417968750002],[47.092578125000074,-15.150097656249969],[47.35195312500005,-14.766113281249986],[47.46474609375005,-14.713281249999966],[47.47832031250002,-15.009375],[47.77402343750006,-14.63671875],[47.964160156250074,-14.672558593750026],[47.773339843749994,-14.369921875],[47.995507812499994,-13.960449218749986],[47.88359375000002,-13.807519531250009],[47.94101562500006,-13.662402343750017],[48.03984375000002,-13.596289062499963],[48.25527343750005,-13.719335937499977],[48.796484375,-13.267480468750023],[48.91943359375003,-12.839062499999969],[48.78632812500004,-12.470898437500011],[48.931738281250006,-12.4390625],[49.20703124999997,-12.079589843749957],[49.53828125000004,-12.432128906250014]]]]},"properties":{"name":"Madagascar","childNum":3}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-91.68369140624998,18.677343750000034],[-91.81611328124995,18.675878906250006],[-91.53671874999998,18.760009765625],[-91.68369140624998,18.677343750000034]]],[[[-86.93964843750001,20.303320312500006],[-86.97797851562498,20.489794921875074],[-86.76328124999995,20.579052734374955],[-86.93964843750001,20.303320312500006]]],[[[-106.50224609374999,21.61083984375003],[-106.60703124999993,21.561474609374983],[-106.63935546874995,21.697851562499977],[-106.50224609374999,21.61083984375003]]],[[[-110.56738281249994,25.003466796875017],[-110.5388671875,24.89155273437504],[-110.69926757812499,25.081445312499994],[-110.56738281249994,25.003466796875017]]],[[[-112.05727539062498,24.545703125000017],[-112.29677734375002,24.789648437500063],[-112.15942382812501,25.28564453125003],[-112.19501953124998,24.841064453125057],[-112.05727539062498,24.545703125000017]]],[[[-111.10029296874998,26.020605468750006],[-111.224658203125,25.83588867187504],[-111.18291015625002,26.040625],[-111.10029296874998,26.020605468750006]]],[[[-115.17060546875001,28.06938476562496],[-115.35292968750002,28.103955078124983],[-115.23354492187495,28.36835937500004],[-115.17060546875001,28.06938476562496]]],[[[-112.20307617187503,29.00532226562504],[-112.27841796875,28.769335937500017],[-112.51406249999997,28.847607421874955],[-112.42353515625,29.203662109375017],[-112.28505859374994,29.240429687499955],[-112.20307617187503,29.00532226562504]]],[[[-113.15561523437502,29.05224609375],[-113.49633789062497,29.30761718749997],[-113.58720703125002,29.57304687499996],[-113.20214843749999,29.301855468750034],[-113.15561523437502,29.05224609375]]],[[[-97.14624023437494,25.961474609375045],[-97.66767578124995,24.389990234374977],[-97.84248046874995,22.510302734375017],[-97.76328124999998,22.105859374999966],[-97.31450195312496,21.56420898437503],[-97.40917968749997,21.272558593750034],[-97.38344726562497,21.56669921874999],[-97.75380859375002,22.02666015624999],[-97.18632812499996,20.717041015625],[-96.45605468749994,19.869775390624966],[-96.28955078124994,19.34375],[-95.778125,18.805517578125034],[-95.92036132812495,18.81958007812497],[-95.62680664062503,18.690576171874994],[-95.71982421874998,18.768359375000017],[-95.18183593749995,18.700732421875017],[-94.79814453124996,18.51459960937501],[-94.45976562499993,18.166650390624994],[-93.55234375,18.430468750000017],[-92.88476562499997,18.468652343749966],[-92.44101562499998,18.67529296874997],[-91.97377929687502,18.715869140625074],[-91.91357421875,18.52851562500001],[-91.53398437499993,18.45654296875],[-91.27524414062498,18.62446289062501],[-91.34306640624996,18.900585937499955],[-91.43666992187502,18.889794921874966],[-90.73925781249994,19.352246093749955],[-90.69316406249996,19.729882812499966],[-90.49169921874997,19.94677734375003],[-90.353125,21.009423828124966],[-89.81977539062495,21.274609374999983],[-88.46669921874997,21.569384765625017],[-88.0068359375,21.604052734375045],[-87.25087890625,21.44697265625004],[-87.18828124999993,21.546435546875045],[-87.36850585937498,21.57373046875],[-87.034765625,21.592236328124955],[-86.824072265625,21.421679687500017],[-86.77177734374999,21.150537109375023],[-86.92622070312493,20.786474609375034],[-87.42138671875,20.23139648437501],[-87.44174804687498,19.861523437499983],[-87.68769531249998,19.63710937499999],[-87.6453125,19.55390625000001],[-87.42475585937498,19.583349609375063],[-87.65869140625003,19.352343750000074],[-87.65576171874997,19.25786132812499],[-87.50107421874998,19.287792968749983],[-87.76181640624998,18.446142578125006],[-87.88198242187497,18.27387695312501],[-88.05644531249996,18.524462890625074],[-88.03173828125,18.838916015625017],[-88.29565429687494,18.47241210937503],[-88.52299804687499,18.445898437500063],[-88.80634765624998,17.965527343749983],[-89.13354492187503,17.970800781249977],[-89.16147460937503,17.81484375],[-90.98916015624997,17.81640624999997],[-90.99296874999993,17.25244140625],[-91.19550781249998,17.254101562499983],[-91.40961914062501,17.255859375],[-90.975830078125,16.867822265624994],[-90.710693359375,16.708105468750034],[-90.65996093749996,16.630908203125045],[-90.634375,16.565136718749955],[-90.63408203125002,16.51074218749997],[-90.57578124999995,16.467822265625017],[-90.47109374999994,16.439550781250034],[-90.41699218750003,16.391015625000023],[-90.41699218750003,16.351318359375],[-90.45014648437493,16.261376953124994],[-90.45986328124997,16.16235351562497],[-90.44716796874994,16.07270507812501],[-90.52197265625,16.07119140625005],[-90.70322265624998,16.07104492187503],[-90.97958984374998,16.07080078124997],[-91.433984375,16.070458984374994],[-91.736572265625,16.070166015625006],[-91.95722656250001,15.703222656250034],[-92.08212890624998,15.495556640625011],[-92.18715820312497,15.320898437499963],[-92.07480468749998,15.074218749999972],[-92.09873046874998,15.026757812499994],[-92.14423828125001,15.001953125],[-92.158544921875,14.963574218749997],[-92.23515625,14.545410156249986],[-93.91606445312493,16.053564453125006],[-94.374169921875,16.284765625000034],[-94.426416015625,16.22626953125001],[-94.00126953124996,16.018945312499966],[-94.66152343750002,16.20190429687503],[-94.58710937499995,16.315820312499966],[-94.79082031249999,16.28715820312499],[-94.85869140624996,16.41972656249999],[-95.02084960937503,16.277636718750017],[-94.79941406249995,16.20966796875001],[-95.134375,16.17695312500001],[-96.21357421874993,15.693066406250011],[-96.80795898437495,15.726416015624977],[-97.18466796874998,15.909277343750006],[-97.75478515624994,15.966845703125017],[-98.52031249999993,16.30483398437505],[-98.76220703125,16.534765624999977],[-99.69067382812499,16.719628906249994],[-100.847802734375,17.20048828124999],[-101.91870117187494,17.959765625000045],[-102.69956054687495,18.062841796875006],[-103.44160156249995,18.32539062500001],[-103.91245117187496,18.828466796875006],[-104.9384765625,19.309375],[-105.482080078125,19.97607421875003],[-105.66943359374997,20.385595703124977],[-105.26015625,20.579052734374955],[-105.32705078124994,20.752978515625045],[-105.51083984374999,20.808740234375023],[-105.23706054687499,21.119189453125045],[-105.20869140624998,21.490820312499977],[-105.43144531249997,21.618261718750006],[-105.64912109375001,21.988085937500045],[-105.64550781249999,22.32690429687497],[-105.79179687500003,22.627490234375017],[-106.93549804687497,23.88125],[-107.76494140625002,24.47192382812497],[-107.52724609375001,24.36005859375001],[-107.51191406249998,24.489160156250023],[-107.95117187499994,24.614892578124966],[-108.28076171874994,25.08154296875],[-108.05146484374995,25.067041015624994],[-108.69638671874998,25.382910156250034],[-108.78725585937502,25.53803710937501],[-109.02880859375003,25.48046875000003],[-108.886572265625,25.733447265625045],[-109.19648437499998,25.59252929687503],[-109.38496093750001,25.727148437500006],[-109.42563476562495,26.032568359375063],[-109.19970703125003,26.30522460937499],[-109.11669921874999,26.25273437499996],[-109.27626953125,26.533886718749955],[-109.48286132812498,26.710351562500023],[-109.75478515624995,26.702929687500017],[-109.94399414062495,27.079345703125057],[-110.37729492187495,27.233300781249966],[-110.59267578124995,27.544335937500023],[-110.52988281249995,27.864208984374983],[-111.12138671875002,27.966992187499983],[-112.16176757812495,29.018896484375034],[-113.05766601562496,30.651025390625023],[-113.04672851562495,31.17924804687499],[-113.62348632812494,31.34589843750001],[-113.75942382812501,31.557763671874994],[-113.94775390625001,31.62934570312501],[-114.14931640624995,31.507373046875045],[-114.93359374999994,31.900732421874977],[-114.78989257812498,31.647119140624994],[-114.88188476562499,31.156396484375023],[-114.55048828124997,30.02226562499999],[-113.75546875,29.367480468750017],[-113.49970703124995,28.92670898437501],[-113.20556640624997,28.798779296874955],[-113.09365234375001,28.511767578125017],[-112.870849609375,28.42421875000005],[-112.73403320312501,27.825976562500017],[-112.32919921874996,27.52343750000003],[-111.86264648437495,26.678515625000017],[-111.6994140625,26.58095703125005],[-111.79526367187499,26.8796875],[-111.56967773437495,26.707617187500006],[-111.29160156249996,25.78979492187497],[-110.68676757812501,24.867675781250057],[-110.65932617187502,24.34145507812505],[-110.36743164062497,24.100488281249994],[-110.30375976562497,24.339453125],[-110.02280273437502,24.17460937499999],[-109.6765625,23.66157226562501],[-109.42084960937495,23.480126953124994],[-109.49570312500002,23.159814453125023],[-110.00625,22.894042968750057],[-110.3626953125,23.60493164062501],[-111.68291015625002,24.555810546875023],[-111.80249023437494,24.542529296875074],[-112.07255859374999,24.84003906250001],[-112.06987304687497,25.572851562500006],[-112.37724609374997,26.21391601562496],[-113.02075195312499,26.58325195312497],[-113.15581054687496,26.94624023437504],[-113.27226562499997,26.79096679687501],[-113.59853515625001,26.721289062500034],[-113.84096679687502,26.966503906249983],[-114.44526367187503,27.218164062499994],[-114.53989257812495,27.431103515624955],[-114.99350585937499,27.736035156249983],[-115.03647460937495,27.84184570312496],[-114.57001953124995,27.78393554687497],[-114.30058593749995,27.87299804687501],[-114.30224609375003,27.775732421875006],[-114.0693359375,27.67568359375005],[-114.15839843750003,27.919677734375],[-114.26586914062499,27.934472656249994],[-114.04848632812502,28.42617187499999],[-114.93730468749999,29.35161132812496],[-115.67382812500003,29.756396484375017],[-116.06215820312501,30.80415039062504],[-116.29628906250001,30.97050781249999],[-116.33344726562494,31.202783203124994],[-116.66215820312495,31.56489257812504],[-116.72207031249998,31.734570312499955],[-116.62080078124995,31.85107421874997],[-116.84799804687496,31.997363281250045],[-117.12827148437495,32.533349609374994],[-114.72475585937495,32.71533203125003],[-114.83593749999994,32.50830078125003],[-111.0419921875,31.32421875000003],[-108.21445312499993,31.329443359375034],[-108.21181640625002,31.779345703125017],[-106.44541015624996,31.768408203125006],[-106.14804687499995,31.450927734375],[-104.97880859374996,30.645947265624955],[-104.50400390624995,29.677685546874955],[-104.110595703125,29.386132812499994],[-103.16831054687498,28.998193359374994],[-102.8919921875,29.216406250000034],[-102.61494140624994,29.75234375],[-102.26894531249998,29.871191406250034],[-101.44038085937503,29.77685546875],[-100.75458984375001,29.182519531249994],[-100.29604492187495,28.32768554687499],[-99.50532226562497,27.54833984375003],[-99.45654296874999,27.05668945312496],[-99.10776367187498,26.446923828124994],[-97.37563476562497,25.871826171875],[-97.14624023437494,25.961474609375045]]]]},"properties":{"name":"Mexico","childNum":10}},{"geometry":{"type":"Polygon","coordinates":[[[22.344042968750017,42.31396484375],[22.836816406250023,41.993603515625],[23.00361328125001,41.73984375],[22.916015625,41.336279296875],[22.78388671875001,41.331982421875],[22.72480468750001,41.178515625],[22.603613281250006,41.140185546874996],[22.493554687500023,41.118505859375],[22.184472656250023,41.158642578125],[21.99335937500001,41.13095703125],[21.77949218750001,40.950439453125],[21.627539062500006,40.896337890625],[21.57578125,40.868945312499996],[20.964257812500023,40.849902343749996],[20.709277343750017,40.928369140624994],[20.48896484375001,41.272607421874994],[20.566210937500017,41.873681640624994],[20.725,41.87353515625],[20.778125,42.071044921875],[21.05976562500001,42.171289062499994],[21.28662109375,42.100390625],[21.389550781250023,42.21982421875],[21.560839843750017,42.24765625],[21.5625,42.247509765625],[21.81464843750001,42.303125],[22.344042968750017,42.31396484375]]]},"properties":{"name":"Macedonia","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[4.227636718750006,19.142773437499997],[4.234667968750017,16.996386718750003],[4.121289062500011,16.357714843750003],[3.842968750000011,15.701708984375003],[3.5205078125,15.483105468749997],[3.504296875000023,15.356347656249994],[3.06015625,15.427197265624997],[3.001074218750006,15.340966796874994],[1.300195312500023,15.272265625],[0.947460937500011,14.982128906249997],[0.217480468750011,14.911474609374991],[-0.235888671874989,15.059423828124991],[-0.760449218749983,15.047753906249994],[-1.049560546875,14.81953125],[-1.97304687499999,14.45654296875],[-2.113232421874983,14.16845703125],[-2.586718749999989,14.227587890625003],[-2.873925781249994,13.950732421875003],[-2.950830078124994,13.6484375],[-3.248632812499977,13.658349609374994],[-3.3017578125,13.28076171875],[-3.527636718749989,13.182714843749991],[-3.947314453124989,13.402197265624991],[-4.151025390624994,13.306201171875003],[-4.328710937499977,13.119042968749994],[-4.227099609374989,12.793701171875],[-4.480615234374994,12.672216796874991],[-4.4287109375,12.337597656249997],[-4.699316406249977,12.076171875],[-5.288134765624989,11.827929687499989],[-5.250244140625,11.375781249999989],[-5.490478515625,11.042382812499994],[-5.523535156249977,10.426025390625],[-5.556591796874983,10.43994140625],[-5.694287109374983,10.43320312499999],[-5.843847656249977,10.389550781249994],[-5.896191406249983,10.354736328125],[-5.907568359374977,10.307226562499991],[-6.034570312499994,10.19482421875],[-6.1171875,10.201904296875],[-6.238378906249977,10.261621093749994],[-6.241308593749977,10.279199218749994],[-6.192626953125,10.369433593749989],[-6.190673828125,10.400292968749994],[-6.250244140625,10.717919921874994],[-6.482617187499983,10.561230468749997],[-6.564599609374994,10.58642578125],[-6.654150390624977,10.656445312499997],[-6.676367187499977,10.6337890625],[-6.686132812499977,10.578027343749994],[-6.691992187499977,10.512011718749989],[-6.669335937499994,10.3921875],[-6.693261718749994,10.349462890624991],[-6.950341796874994,10.342333984374989],[-7.01708984375,10.143261718749997],[-7.385058593749989,10.340136718749989],[-7.6611328125,10.427441406249997],[-7.990625,10.1625],[-8.007275390624983,10.321875],[-8.266650390624989,10.485986328124994],[-8.33740234375,10.990625],[-8.666699218749983,11.009472656249997],[-8.398535156249977,11.366552734374991],[-8.822021484375,11.673242187499994],[-8.818310546874983,11.922509765624994],[-9.043066406249977,12.40234375],[-9.395361328124977,12.464648437499989],[-9.358105468749983,12.255419921874989],[-9.754003906249977,12.029931640624994],[-10.274853515624983,12.212646484375],[-10.709228515625,11.898730468749989],[-10.933203124999977,12.205175781249991],[-11.30517578125,12.015429687499989],[-11.502197265625,12.198632812499994],[-11.389404296875,12.404394531249991],[-11.390380859375,12.941992187499991],[-11.634960937499983,13.369873046875],[-11.831689453124994,13.315820312499994],[-12.05419921875,13.633056640625],[-11.960888671874983,13.875292968750003],[-12.019189453124994,14.206494140624997],[-12.228417968749994,14.45859375],[-12.280615234374977,14.809033203124997],[-12.104687499999983,14.745361328125],[-12.08154296875,14.766357421875],[-12.021582031249977,14.804931640625],[-11.76015625,15.425537109375],[-11.675878906249977,15.512060546874991],[-11.502685546875,15.636816406249991],[-11.455224609374994,15.62539062499999],[-10.9482421875,15.151123046875],[-10.696582031249989,15.42265625],[-9.94140625,15.373779296875],[-9.446923828124994,15.458203125],[-9.447705078124983,15.574853515624994],[-9.426562499999989,15.623046875],[-9.3505859375,15.677392578124994],[-9.33544921875,15.525683593750003],[-9.293701171875,15.502832031249994],[-5.5125,15.496289062499997],[-5.359912109374989,16.282861328124994],[-5.509619140624977,16.442041015624994],[-5.628662109375,16.568652343750003],[-5.65625,16.8095703125],[-5.684765624999983,17.058251953124994],[-5.713183593749989,17.306884765625],[-5.74169921875,17.555566406249994],[-5.827099609374983,18.3015625],[-6.026416015624989,20.0421875],[-6.396582031249977,23.274804687499994],[-6.482031249999977,24.020800781250003],[-6.538964843749994,24.51816406249999],[-6.5673828125,24.766796875],[-6.594091796874977,24.99462890625],[-6.287207031249977,24.994824218749997],[-5.959814453124977,24.99497070312499],[-5.640771484374994,24.995166015625003],[-4.822607421874977,24.99560546875],[-1.947900390624994,23.124804687500003],[1.1455078125,21.102246093749997],[1.165722656250011,20.817431640625003],[1.610644531250017,20.555566406249994],[1.685449218750023,20.378369140624997],[3.130273437500023,19.85019531249999],[3.255859375,19.4109375],[3.119726562500006,19.103173828124994],[3.3564453125,18.986621093750003],[4.227636718750006,19.142773437499997]]]},"properties":{"name":"Mali","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[14.566210937499989,35.85273437499998],[14.436425781250023,35.82167968750005],[14.351269531250011,35.978417968749994],[14.566210937499989,35.85273437499998]]]},"properties":{"name":"Malta","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[98.18261718749997,9.933447265625006],[98.11806640625,9.877880859375054],[98.2916992187501,10.051318359375031],[98.18261718749997,9.933447265625006]]],[[[98.20976562500002,10.952734375],[98.27148437499997,10.73989257812498],[98.08046875000005,10.886621093750037],[98.20976562500002,10.952734375]]],[[[98.55380859375012,11.744873046875],[98.52841796875012,11.538671875],[98.43476562500004,11.567089843750026],[98.37646484374997,11.79150390625],[98.55380859375012,11.744873046875]]],[[[98.516015625,11.905029296875028],[98.46621093750005,12.08427734374996],[98.60957031250004,11.956640624999977],[98.516015625,11.905029296875028]]],[[[98.06611328125004,12.389794921875023],[98.00234375000005,12.279003906250011],[97.93867187500004,12.34609375],[98.06611328125004,12.389794921875023]]],[[[98.41396484375005,12.597949218749974],[98.45947265625003,12.473730468749991],[98.3138671875,12.335986328124989],[98.31210937500006,12.678173828124983],[98.41396484375005,12.597949218749974]]],[[[98.31542968749997,13.099072265625026],[98.30917968750012,12.934716796875023],[98.26533203125004,13.202246093749991],[98.31542968749997,13.099072265625026]]],[[[94.80488281250004,15.8193359375],[94.73349609375006,15.823046875000045],[94.82802734375005,15.933007812499966],[94.80488281250004,15.8193359375]]],[[[94.47675781250004,15.945947265625023],[94.41191406250007,15.848388671875057],[94.3878906250001,15.994140624999972],[94.60126953125004,16.205517578124983],[94.47675781250004,15.945947265625023]]],[[[97.575,16.253222656250017],[97.48037109375,16.305712890625045],[97.54199218749997,16.505078124999983],[97.575,16.253222656250017]]],[[[93.6908203125,18.68427734375004],[93.4875,18.867529296875063],[93.74472656250006,18.865527343750017],[93.6908203125,18.68427734375004]]],[[[93.71484374999997,19.558251953124994],[93.94570312500005,19.428613281249966],[93.90195312500012,19.33203125],[93.75585937500003,19.325683593750057],[93.64404296874997,19.49506835937501],[93.71484374999997,19.558251953124994]]],[[[93.49179687500012,19.892578125],[93.51328125000006,19.754785156249994],[93.41289062500002,19.950341796875023],[93.49179687500012,19.892578125]]],[[[93.01015625000005,19.923925781249977],[93.02324218750007,19.82885742187497],[92.91464843750006,20.086474609375045],[93.01015625000005,19.923925781249977]]],[[[101.1388671875001,21.567480468749977],[101.08037109375007,21.468652343749994],[100.703125,21.251367187499966],[100.613671875,21.059326171875],[100.56660156250004,21.038183593750063],[100.53613281250003,20.992382812499955],[100.52226562500007,20.92192382812499],[100.54931640624997,20.884228515624955],[100.61767578125003,20.879248046875006],[100.62294921875005,20.859570312499983],[100.5651367187501,20.825097656249994],[100.4074218750001,20.823242187500057],[100.32607421875005,20.795703125000045],[100.24931640625002,20.730273437500045],[100.18388671875002,20.589111328125057],[100.12968750000002,20.372216796874994],[100.12246093750005,20.316650390625057],[100.0036132812501,20.37958984375001],[99.9542968750001,20.415429687500023],[99.8903320312501,20.424414062499977],[99.72011718750005,20.32543945312497],[99.45888671875005,20.363037109375],[99.48593750000006,20.14985351562501],[99.07421875000003,20.09936523437503],[98.9166992187501,19.77290039062504],[98.37128906250004,19.68916015625004],[98.01503906250005,19.74951171874997],[97.816796875,19.459960937500057],[97.74589843750002,18.58818359374999],[97.37392578125,18.51796875],[97.63222656250005,18.290332031250074],[97.7064453125,17.79711914062503],[98.4388671875,16.975683593750034],[98.66074218750006,16.330419921875006],[98.83544921875003,16.417578125],[98.88828125000006,16.351904296875034],[98.81796875000012,16.180810546874994],[98.59238281250006,16.05068359375005],[98.55693359375007,15.367675781249986],[98.19101562500012,15.204101562499972],[98.20214843749997,14.97592773437502],[98.57001953125004,14.359912109375031],[99.13681640625006,13.716699218749994],[99.12392578125,13.030761718750043],[99.40507812500002,12.547900390625003],[99.61474609374997,11.781201171875026],[99.1901367187501,11.105273437499989],[98.7572265625,10.660937499999974],[98.70253906250005,10.19038085937504],[98.56259765625006,10.034960937499989],[98.46494140625006,10.675830078124989],[98.67558593750007,10.986914062500034],[98.74140625000004,11.591699218749966],[98.87597656250003,11.719726562500028],[98.63632812500006,11.738378906250006],[98.69628906250003,12.225244140624994],[98.6002929687501,12.2453125],[98.67871093749997,12.348486328124963],[98.57597656250002,13.161914062500031],[98.20039062500004,13.980175781250026],[98.14951171875012,13.647607421875037],[98.11064453125007,13.712890625000014],[98.10019531250006,14.161523437500023],[97.90976562500012,14.652685546874991],[98.01875,14.652587890625057],[97.81230468750007,14.858935546874989],[97.7103515625,15.875537109375074],[97.58427734375007,16.019580078125017],[97.72597656250005,16.56855468750004],[97.37587890625005,16.52294921874997],[97.20019531249997,17.095410156249983],[96.85146484375005,17.401025390624994],[96.90859375000005,17.03095703125001],[96.76542968750002,16.710351562499966],[96.43115234374997,16.504931640625045],[96.18906250000012,16.768310546875057],[96.32431640625006,16.444433593750063],[95.76328125000006,16.169042968750006],[95.38955078125005,15.722753906250034],[95.30146484375004,15.756152343749989],[95.34677734375012,16.09760742187501],[95.17695312500004,15.825683593750028],[94.9425781250001,15.818261718750023],[94.89316406250006,16.182812499999955],[94.66152343750005,15.904394531250006],[94.70332031250004,16.511914062499955],[94.4416015625001,16.094384765624966],[94.22382812500004,16.016455078125006],[94.58896484375006,17.5693359375],[94.17070312500007,18.73242187499997],[94.24570312500006,18.741162109374983],[94.07001953125004,18.893408203125006],[94.04492187500003,19.287402343750074],[93.92919921874997,18.89965820312503],[93.70546875000005,19.026904296875017],[93.49306640625005,19.369482421875006],[93.82490234375004,19.238476562499955],[93.99814453125006,19.440869140624983],[93.61171875000005,19.776074218749983],[93.70703125000003,19.912158203125074],[93.25,20.070117187500017],[93.12949218750012,19.858007812500063],[93.00195312499997,20.074853515624994],[93.06679687500005,20.377636718749955],[92.82832031250004,20.177587890625063],[92.89111328124997,20.34033203125],[92.73564453125007,20.56269531250001],[92.72285156250004,20.29560546875004],[92.32412109375,20.791845703125063],[92.17958984375005,21.293115234375023],[92.33056640624997,21.439794921874977],[92.63164062500002,21.306201171875045],[92.5934570312501,21.46733398437499],[92.58281250000002,21.940332031249994],[92.57490234375004,21.978076171875045],[92.68896484374997,22.130957031250006],[92.72099609375002,22.132421875000063],[92.77138671875,22.104785156250017],[92.9645507812501,22.003759765625034],[93.07060546875002,22.20942382812501],[93.16201171875,22.360205078125006],[93.07871093750006,22.71821289062501],[93.20390625000002,23.03701171875005],[93.34941406250007,23.08496093750003],[93.36601562500007,23.132519531249955],[93.32626953125006,24.064208984375057],[93.45214843750003,23.987402343750034],[93.68339843750007,24.00654296875004],[94.07480468750006,23.8720703125],[94.29306640625012,24.321875],[94.37724609375002,24.473730468750006],[94.49316406250003,24.637646484374983],[94.70371093750012,25.097851562499955],[94.55302734375007,25.215722656249994],[94.66777343750007,25.458886718749966],[94.99199218750002,25.77045898437504],[95.01523437500006,25.912939453125006],[95.0929687500001,25.98730468749997],[95.13242187500006,26.041259765625057],[95.12929687500005,26.070410156250034],[95.10839843749997,26.091406250000034],[95.06894531250006,26.19111328125001],[95.0597656250001,26.473974609375006],[95.20146484375007,26.641406250000017],[96.19082031250005,27.26127929687499],[96.79785156249997,27.29619140624999],[96.95341796875002,27.13330078125003],[97.10205078125003,27.11542968750004],[97.10371093750004,27.16333007812503],[96.90195312500012,27.439599609374994],[96.88359375000002,27.514843749999955],[96.96279296875,27.698291015625017],[97.04970703125005,27.760009765625],[97.34355468750002,27.982324218749994],[97.30273437499997,28.08598632812496],[97.3224609375001,28.21796875000004],[97.35644531249997,28.254492187500006],[97.43144531250002,28.353906250000023],[97.53789062500002,28.510205078124983],[97.59921875000006,28.51704101562504],[98.06162109375012,28.185888671874977],[98.29882812499997,27.550097656250045],[98.4525390625,27.6572265625],[98.65117187500007,27.572460937499983],[98.7384765625001,26.785742187500006],[98.68554687499997,26.189355468750023],[98.56406250000006,26.072412109374994],[98.65625,25.86357421874999],[98.33378906250007,25.586767578125006],[98.14287109375007,25.571093750000017],[98.01074218749997,25.292529296875017],[97.8195312500001,25.251855468749994],[97.73789062500006,24.869873046875057],[97.58330078125002,24.77480468750005],[97.53144531250004,24.49169921875003],[97.7082031250001,24.228759765625],[97.56455078125012,23.911035156250023],[98.2125,24.110644531250017],[98.83505859375006,24.121191406250034],[98.67675781250003,23.905078125000045],[98.8322265625001,23.624365234374977],[98.86376953125003,23.191259765625034],[99.41806640625006,23.069238281250023],[99.50712890625002,22.959130859374994],[99.19296875000006,22.12597656249997],[99.9176757812501,22.02802734375001],[99.94072265625007,21.75874023437504],[100.14765625000004,21.480517578125017],[100.60458984375012,21.471777343750006],[101.07978515625004,21.75585937499997],[101.1388671875001,21.567480468749977]]]]},"properties":{"name":"Myanmar","childNum":15}},{"geometry":{"type":"Polygon","coordinates":[[[19.21875,43.449951171875],[19.670996093750006,43.163964843749994],[20.344335937500006,42.827929687499996],[20.054296875,42.760058593749996],[20.06396484375,42.54726562499999],[19.78828125000001,42.476171875],[19.65449218750001,42.628564453124994],[19.280664062500023,42.17255859375],[19.342382812500006,41.869091796875],[18.436328125000017,42.559716796874994],[18.5458984375,42.6416015625],[18.46601562500001,42.777246093749994],[18.44384765625,42.96845703125],[18.46015625000001,42.997900390625],[18.48847656250001,43.012158203125],[18.623632812500006,43.027685546875],[18.621875,43.124609375],[18.674218750000023,43.230810546875],[18.74921875000001,43.283544921875],[18.85107421875,43.346337890624994],[18.934667968750006,43.339453125],[18.97871093750001,43.285400390625],[19.026660156250017,43.292431640625],[19.03671875,43.357324218749994],[18.940234375000017,43.496728515624994],[18.95068359375,43.526660156249996],[18.97421875,43.542333984375],[19.0283203125,43.532519531249996],[19.080078125,43.517724609374994],[19.11279296875,43.52773437499999],[19.164355468750017,43.535449218749996],[19.1943359375,43.53330078125],[19.21875,43.449951171875]]]},"properties":{"name":"Montenegro","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[111.878125,43.68017578125],[111.00722656250002,43.34140625],[110.400390625,42.773681640625],[109.44316406249999,42.455957031249994],[109.33984375,42.438378906249994],[108.68730468749999,42.41611328125],[108.17119140624999,42.447314453124996],[106.77001953125,42.288720703124994],[105.86757812500002,41.993994140625],[105.31435546875002,41.770898437499994],[105.19707031249999,41.738037109375],[105.11542968750001,41.66328125],[105.05058593749999,41.61591796875],[104.98203125000003,41.595507812499996],[104.49824218750001,41.65869140625],[104.49824218750001,41.877001953124996],[104.30517578125,41.846142578125],[103.99726562500001,41.79697265625],[103.71113281250001,41.751318359375],[103.07285156250003,42.00595703125],[102.5751953125,42.092089843749996],[102.15664062500002,42.158105468749994],[101.97294921874999,42.215869140624996],[101.65996093749999,42.500048828124996],[101.5791015625,42.52353515625],[101.49531250000001,42.53876953125],[101.09199218750001,42.551318359374996],[100.51904296875,42.616796875],[100.08632812500002,42.670751953125],[99.98378906250002,42.67734375],[99.46787109375003,42.568212890625],[97.20566406250003,42.789794921875],[96.38544921875001,42.720361328124994],[95.85957031250001,43.2759765625],[95.52558593750001,43.953955078125],[95.32558593750002,44.039355468749996],[95.35029296875001,44.278076171875],[94.71201171875003,44.350830078125],[93.51621093750003,44.944482421874994],[92.78789062499999,45.0357421875],[92.57890624999999,45.010986328125],[92.423828125,45.008935546874994],[92.17265624999999,45.03525390625],[92.02978515625,45.068505859374994],[91.584375,45.076513671875],[91.05,45.217431640624994],[90.87724609374999,45.19609375],[90.66181640625001,45.525244140625],[91.00175781249999,46.035791015624994],[90.99677734375001,46.10498046875],[90.94755859374999,46.177294921874996],[90.91152343750002,46.270654296874994],[90.98574218750002,46.7490234375],[90.91054687500002,46.883251953125],[90.86992187499999,46.954492187499994],[90.79902343750001,46.98515625],[90.71552734375001,47.003857421875],[90.49619140625003,47.28515625],[90.42519531250002,47.5041015625],[90.34746093749999,47.596972656249996],[90.33066406250003,47.655175781249994],[90.31328124999999,47.67617187499999],[90.19101562500003,47.702099609375],[90.10322265625001,47.745410156249996],[90.02792968750003,47.877685546875],[89.95869140625001,47.886328125],[89.91044921874999,47.8443359375],[89.83134765624999,47.823291015624996],[89.778125,47.827001953125],[89.56093750000002,48.003955078124996],[89.47919921875001,48.029052734375],[89.04765624999999,48.0025390625],[88.97109375000002,48.049951171874994],[88.91777343749999,48.089013671874994],[88.83828125000002,48.101708984374994],[88.68183593750001,48.170556640624994],[88.57597656249999,48.220166015625],[88.56679687500002,48.317431640624996],[88.51708984375,48.38447265625],[88.41396484375002,48.40341796875],[88.30996093750002,48.472070312499994],[87.97968750000001,48.555126953125],[88.06005859375,48.707177734374994],[87.83183593749999,48.791650390624994],[87.7431640625,48.881640625],[87.87216796875003,49.000146484374994],[87.81630859375002,49.0802734375],[87.8251953125,49.11630859375],[87.81425781249999,49.1623046875],[87.93476562500001,49.16455078125],[87.98808593749999,49.186914062499994],[88.02851562500001,49.219775390624996],[88.11572265625,49.256298828125],[88.19257812500001,49.451708984374996],[88.63320312500002,49.486132812499996],[88.83164062500003,49.4484375],[88.86386718750003,49.527636718749996],[88.90019531249999,49.539697265624994],[88.94541015625003,49.507666015625],[88.97060546875002,49.483740234375],[89.00839843750003,49.472802734374994],[89.10947265625003,49.501367187499994],[89.17998046874999,49.5322265625],[89.20292968749999,49.595703125],[89.24394531249999,49.62705078125],[89.39560546875003,49.6115234375],[89.475,49.66054687499999],[89.57919921875003,49.69970703125],[89.65410156249999,49.71748046875],[89.64384765624999,49.90302734375],[90.0537109375,50.09375],[90.65507812499999,50.22236328125],[90.71435546875,50.259423828124994],[90.7607421875,50.305957031249996],[91.02158203125003,50.415478515625],[91.23378906250002,50.452392578125],[91.30058593749999,50.46337890625],[91.3408203125,50.470068359375],[91.4150390625,50.468017578125],[91.44648437500001,50.52216796875],[91.80429687500003,50.693603515625],[92.10400390625,50.6919921875],[92.1923828125,50.700585937499994],[92.35478515624999,50.864160156249994],[92.42636718750003,50.803076171875],[92.62666015625001,50.68828125],[92.68134765625001,50.683203125],[92.73867187500002,50.7109375],[92.779296875,50.778662109375],[92.8564453125,50.789111328124996],[92.94130859375002,50.778222656249994],[93.103125,50.60390625],[94.25107421875003,50.556396484375],[94.35468750000001,50.221826171874994],[94.61474609375,50.023730468749996],[94.67548828125001,50.028076171875],[94.71806640624999,50.043261718749996],[94.93027343750003,50.04375],[95.11142578125003,49.935449218749994],[95.52265625000001,49.91123046875],[96.06552734375003,49.99873046875],[96.31503906250003,49.901123046875],[96.98574218750002,49.8828125],[97.20859375000003,49.730810546875],[97.35976562500002,49.741455078125],[97.58935546875,49.911474609375],[98.00390625,50.0142578125],[98.25029296874999,50.30244140625],[98.27949218750001,50.533251953124996],[98.14501953125,50.5685546875],[98.07890624999999,50.603808593749996],[98.02978515625,50.64462890625],[97.82529296875003,50.985253906249994],[98.103125,51.483544921874994],[98.64052734375002,51.801171875],[98.89316406250003,52.11728515625],[99.92167968749999,51.755517578125],[100.03457031250002,51.737109375],[100.23037109375002,51.729833984375],[100.46894531250001,51.72607421875],[100.53623046875003,51.7134765625],[101.38125,51.45263671875],[101.57089843750003,51.4671875],[101.82119140625002,51.421044921874994],[102.11152343750001,51.353466796875],[102.15566406250002,51.313769531249996],[102.16005859375002,51.26083984375],[102.14238281249999,51.216064453125],[102.15195312500003,51.10751953125],[102.19453125000001,51.050683593749994],[102.21503906250001,50.829443359375],[102.31660156250001,50.71845703125],[102.28837890624999,50.585107421874994],[103.30439453125001,50.20029296875],[103.63291015625003,50.138574218749994],[103.72324218750003,50.153857421874996],[103.80263671875002,50.176074218749996],[104.07871093750003,50.154248046875],[105.38359374999999,50.47373046875],[106.21787109375003,50.304589843749994],[106.36845703124999,50.317578125],[106.57441406250001,50.32880859375],[106.71113281250001,50.31259765625],[106.94130859375002,50.196679687499994],[107.04023437500001,50.086474609374996],[107.14306640625,50.033007812499996],[107.23330078125002,49.989404296874994],[107.34707031250002,49.986669921875],[107.63095703125003,49.98310546875],[107.91660156250003,49.947802734374996],[107.96542968750003,49.653515625],[108.40693359375001,49.396386718749994],[108.5224609375,49.34150390625],[108.61367187500002,49.322802734374996],[109.23671875000002,49.334912109375],[109.45371093750003,49.296337890625],[109.52871093750002,49.269873046875],[110.19990234375001,49.17041015625],[110.42783203125003,49.219970703125],[110.70976562499999,49.14296875],[110.82792968749999,49.166162109374994],[111.20419921875003,49.304296875],[111.33662109375001,49.35585937499999],[111.42929687500003,49.342626953125],[112.07968750000003,49.42421875],[112.49492187499999,49.53232421875],[112.69736328125003,49.507275390625],[112.80644531249999,49.523583984374994],[112.91484374999999,49.569238281249994],[113.05556640625002,49.616259765624996],[113.09208984374999,49.692529296874994],[113.16416015625003,49.797167968749996],[113.31904296875001,49.874316406249996],[113.44550781250001,49.9416015625],[113.57421875,50.00703125],[114.29707031250001,50.2744140625],[114.7431640625,50.233691406249996],[115.00332031250002,50.138574218749994],[115.27451171875003,49.948876953124994],[115.36503906249999,49.911767578124994],[115.42919921875,49.896484375],[115.58798828125003,49.886035156249996],[115.7177734375,49.880615234375],[115.79521484374999,49.905908203124994],[115.92597656250001,49.9521484375],[116.13457031249999,50.010791015624996],[116.216796875,50.00927734375],[116.35117187500003,49.978076171874996],[116.55117187500002,49.9203125],[116.68330078125001,49.823779296874996],[115.82050781250001,48.57724609375],[115.79169921875001,48.455712890624994],[115.79658203125001,48.346337890624994],[115.78554687500002,48.2482421875],[115.63945312499999,48.18623046875],[115.52509765625001,48.130859375],[115.61640625000001,47.874804687499996],[115.89824218749999,47.686914062499994],[115.99384765625001,47.71132812499999],[116.07480468750003,47.78955078125],[116.23115234375001,47.858203125],[116.31718749999999,47.85986328125],[116.37822265624999,47.844042968749996],[116.51347656249999,47.83955078125],[116.65195312500003,47.864501953125],[116.76054687499999,47.869775390624994],[116.90117187499999,47.853076171874996],[116.95166015625,47.836572265624994],[117.06972656250002,47.806396484375],[117.28593749999999,47.666357421875],[117.35078125000001,47.652197265625],[117.76835937499999,47.987890625],[118.49843750000002,47.983984375],[118.56777343750002,47.943261718749994],[118.69052734375003,47.822265625],[118.75996093750001,47.757617187499996],[118.88027343750002,47.72509765625],[119.017578125,47.685351562499996],[119.08193359375002,47.654150390625],[119.71113281250001,47.15],[119.89785156250002,46.8578125],[119.8671875,46.672167968749996],[119.74746093750002,46.627197265625],[119.70664062500003,46.606005859374996],[119.62021484375003,46.603955078125],[119.47402343750002,46.62666015625],[119.33183593749999,46.613818359374996],[119.162109375,46.638671875],[118.95712890625003,46.73486328125],[118.84394531250001,46.760205078125],[118.79033203124999,46.7470703125],[118.72294921874999,46.69189453125],[118.64873046874999,46.70166015625],[118.58046875000002,46.69189453125],[118.40439453125003,46.703173828124996],[118.30869140625003,46.717041015625],[118.15683593750003,46.678564453125],[118.0712890625,46.6666015625],[117.7412109375,46.5181640625],[117.546875,46.58828125],[117.43808593750003,46.586230468749996],[117.40556640624999,46.5708984375],[117.39218750000003,46.53759765625],[117.35634765625002,46.436669921874994],[117.35693359375,46.39130859375],[117.33339843750002,46.36201171875],[116.85908203125001,46.387939453125],[116.56259765625003,46.289794921875],[116.21298828125003,45.8869140625],[116.22910156250003,45.845751953124996],[116.240625,45.79599609375],[116.19765625000002,45.73935546875],[115.68105468750002,45.458251953125],[115.16259765625,45.390234375],[114.91923828124999,45.378271484375],[114.73876953125,45.41962890625],[114.56015625000003,45.389990234375],[114.41914062500001,45.202587890625],[114.16738281250002,45.049853515624996],[114.08027343750001,44.971142578125],[113.87705078125003,44.89619140625],[113.65263671874999,44.763476562499996],[113.58701171875003,44.745703125],[113.04941406250003,44.810351562499996],[112.70673828125001,44.883447265624994],[112.59677734375003,44.91767578125],[112.49931640624999,45.0109375],[112.41132812500001,45.058203125],[112.11289062500003,45.062939453125],[112.03261718750002,45.081640625],[111.89804687500003,45.0640625],[111.40224609375002,44.36728515625],[111.93173828125003,43.81494140625],[111.878125,43.68017578125]]]},"properties":{"name":"Mongolia","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[145.75195312499997,15.133154296874991],[145.71318359375007,15.215283203125026],[145.821875,15.265380859375014],[145.75195312499997,15.133154296874991]]]},"properties":{"name":"N. Mariana Is.","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[32.112890625,-26.839453125],[32.10595703125,-26.52001953125],[32.04140625000002,-26.28125],[32.060546875,-26.018359375],[31.9482421875,-25.957617187500006],[31.98583984375,-24.46064453125001],[31.799609375000017,-23.8921875],[31.54560546875001,-23.48232421875001],[31.287890625000017,-22.40205078125001],[31.429492187500017,-22.298828125],[32.429785156250006,-21.29707031250001],[32.353613281250006,-21.136523437500003],[32.49238281250001,-20.659765625],[32.992773437500006,-19.98486328125],[32.77763671875002,-19.388769531250006],[32.84980468750001,-19.10439453125001],[32.69970703125,-18.94091796875],[32.99306640625002,-18.35957031250001],[32.87626953125002,-16.88359375],[32.94804687500002,-16.71230468750001],[31.939843750000023,-16.428808593750006],[31.236230468750023,-16.02363281250001],[30.437792968750017,-15.995312500000011],[30.39609375,-15.64306640625],[30.231835937500023,-14.990332031250006],[33.201757812500006,-14.013378906250011],[33.63642578125001,-14.568164062500003],[34.375,-14.4248046875],[34.50527343750002,-14.59814453125],[34.54082031250002,-15.297265625],[34.24609375,-15.829394531250003],[34.528125,-16.319140625],[34.93339843750002,-16.760351562500006],[35.11210937500002,-16.898535156250006],[35.06464843750001,-17.07861328125],[35.124609375,-17.127246093750003],[35.20136718750001,-17.13105468750001],[35.272558593750006,-17.118457031250003],[35.29042968750002,-17.096972656250003],[35.28115234375002,-16.80781250000001],[35.22978515625002,-16.639257812500006],[35.178320312500006,-16.573339843750006],[35.16718750000001,-16.56025390625001],[35.242773437500006,-16.375390625],[35.358496093750006,-16.160546875],[35.59931640625001,-16.12587890625001],[35.70888671875002,-16.095800781250006],[35.75527343750002,-16.05830078125001],[35.79121093750001,-15.958691406250011],[35.89277343750001,-14.891796875000011],[35.86669921875,-14.86376953125],[35.84716796875,-14.6708984375],[35.6904296875,-14.465527343750011],[35.48847656250001,-14.201074218750009],[35.37578125000002,-14.058691406250006],[35.24746093750002,-13.896875],[35.01386718750001,-13.643457031250009],[34.61152343750001,-13.437890625],[34.54570312500002,-13.21630859375],[34.542578125,-13.108691406250003],[34.35781250000002,-12.164746093750011],[34.60625,-11.690039062500006],[34.65957031250002,-11.588671875],[34.82656250000002,-11.57568359375],[34.95947265625,-11.578125],[35.1826171875,-11.574804687500006],[35.41826171875002,-11.583203125000011],[35.50439453125,-11.604785156250003],[35.56435546875002,-11.60234375],[35.630957031250006,-11.58203125],[35.78544921875002,-11.452929687500003],[35.91132812500001,-11.4546875],[36.08222656250001,-11.537304687500011],[36.17548828125001,-11.609277343750009],[36.19130859375002,-11.670703125],[36.3056640625,-11.706347656250003],[36.97890625000002,-11.566992187500006],[37.37285156250002,-11.71044921875],[37.54169921875001,-11.675097656250003],[37.72480468750001,-11.580664062500006],[37.92021484375002,-11.294726562500003],[38.491796875,-11.413281250000011],[38.9875,-11.167285156250003],[39.81708984375001,-10.912402343750003],[39.98867187500002,-10.82080078125],[40.46357421875001,-10.46435546875],[40.61171875000002,-10.661523437500009],[40.48662109375002,-10.76513671875],[40.59716796875,-10.830664062500006],[40.40283203125,-11.33203125],[40.53154296875002,-12.004589843750011],[40.48710937500002,-12.4921875],[40.58085937500002,-12.635546875],[40.43681640625002,-12.983105468750011],[40.56875,-12.984667968750003],[40.595703125,-14.122851562500003],[40.715625,-14.214453125],[40.64609375,-14.538671875],[40.775,-14.421289062500009],[40.84453125000002,-14.718652343750009],[40.617773437500006,-15.115527343750003],[40.650976562500006,-15.260937500000011],[39.98359375000001,-16.22548828125001],[39.79091796875002,-16.29453125],[39.84462890625002,-16.435644531250006],[39.084375,-16.97285156250001],[38.14492187500002,-17.242773437500006],[37.24453125000002,-17.73994140625001],[36.93935546875002,-17.993457031250003],[36.40371093750002,-18.76972656250001],[36.26289062500001,-18.71962890625001],[36.23564453125002,-18.861328125],[35.85371093750001,-18.99335937500001],[34.947851562500006,-19.81269531250001],[34.6494140625,-19.70136718750001],[34.75576171875002,-19.82197265625001],[34.705078125,-20.473046875],[34.98232421875002,-20.80625],[35.267675781250006,-21.650976562500006],[35.31572265625002,-22.396875],[35.38300781250001,-22.45458984375],[35.45634765625002,-22.11591796875001],[35.53007812500002,-22.248144531250006],[35.57539062500001,-22.96308593750001],[35.37041015625002,-23.79824218750001],[35.5419921875,-23.82441406250001],[35.48964843750002,-24.065527343750006],[34.99208984375002,-24.65058593750001],[32.96113281250001,-25.49042968750001],[32.590429687500006,-26.00410156250001],[32.84882812500001,-26.26806640625],[32.95488281250002,-26.08359375],[32.93359375,-26.25234375],[32.88916015625,-26.83046875],[32.88613281250002,-26.84931640625001],[32.353515625,-26.861621093750003],[32.19960937500002,-26.83349609375],[32.112890625,-26.839453125]]]},"properties":{"name":"Mozambique","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-16.37333984374999,19.706445312499994],[-16.437548828124932,19.609277343749994],[-16.477001953124983,19.710351562499994],[-16.343652343749994,19.86621093750003],[-16.37333984374999,19.706445312499994]]],[[[-5.359912109374989,16.282861328124994],[-5.5125,15.496289062499983],[-9.293701171875,15.502832031249994],[-9.350585937499943,15.677392578125023],[-9.38535156249992,15.667626953124994],[-9.4265625,15.623046875000057],[-9.447705078124926,15.574853515624994],[-9.446923828124937,15.458203124999955],[-9.941406249999972,15.373779296874986],[-10.696582031249989,15.42265625],[-10.9482421875,15.151123046875014],[-11.455224609374994,15.62539062499999],[-11.760156249999937,15.425537109375057],[-11.828759765624966,15.244873046875014],[-11.872851562499989,14.995166015625031],[-12.02158203124992,14.804931640625],[-12.081542968749972,14.766357421875057],[-12.104687499999955,14.745361328125043],[-12.40869140625,14.889013671874991],[-12.735253906249994,15.13125],[-13.105273437499989,15.57177734375],[-13.40966796875,16.059179687500006],[-13.756640624999989,16.172509765624994],[-13.868457031249932,16.14814453125001],[-14.300097656249932,16.58027343750001],[-14.990625,16.676904296874994],[-15.768212890624994,16.485107421875],[-16.23901367187497,16.53129882812499],[-16.44101562499992,16.20454101562504],[-16.480078124999977,16.097216796875017],[-16.50205078124992,15.917333984375063],[-16.53525390624995,15.838378906250057],[-16.53574218749995,16.28681640625001],[-16.463623046875,16.60151367187501],[-16.030322265625017,17.88793945312497],[-16.213085937499926,19.003320312500023],[-16.51445312499996,19.361962890624994],[-16.305273437499977,19.51264648437504],[-16.44487304687499,19.47314453124997],[-16.21044921875003,20.227929687500023],[-16.42978515624995,20.652343750000057],[-16.622509765624955,20.634179687499994],[-16.87607421874992,21.086132812499955],[-16.998242187499926,21.039697265625023],[-17.048046874999955,20.80615234375003],[-17.06396484375,20.89882812499999],[-16.96455078125001,21.329248046875023],[-15.231201171875,21.331298828125],[-14.084667968749926,21.33271484375001],[-13.626025390624932,21.33325195312503],[-13.396728515624943,21.333544921875017],[-13.167431640624926,21.333789062500074],[-13.016210937499949,21.33393554687501],[-13.025097656249983,21.46679687499997],[-13.032226562500028,21.572070312500017],[-13.041748046875,21.71381835937504],[-13.051220703124983,21.854785156250074],[-13.094335937499977,22.49599609375005],[-13.153271484374983,22.820507812499983],[-13.031494140624943,23.000244140625],[-12.895996093749972,23.08955078125001],[-12.739599609375006,23.192724609375063],[-12.62041015624996,23.271337890625006],[-12.559375,23.290820312500045],[-12.372900390624977,23.318017578124994],[-12.023437499999943,23.467578125000017],[-12.016308593749983,23.97021484375],[-12.016308593749983,24.378662109375],[-12.016308593749983,24.923242187499994],[-12.016308593749983,25.059375],[-12.016308593749983,25.331689453124994],[-12.016308593749983,25.740136718749994],[-12.016308593749983,25.995410156250017],[-10.376123046874966,25.995458984375034],[-9.444531249999983,25.99550781250005],[-9.071923828124937,25.99550781250005],[-8.885644531249994,25.99550781250005],[-8.682226562499949,25.99550781250005],[-8.68212890625,26.109472656250006],[-8.68212890625,26.273193359375057],[-8.682324218749955,26.49770507812505],[-8.682617187500028,26.723144531250057],[-8.682861328124972,26.92133789062501],[-8.683349609375,27.285937500000045],[-4.822607421874949,24.99560546875],[-5.640771484374994,24.99516601562499],[-5.959814453124977,24.994970703125063],[-6.287207031249977,24.99482421875001],[-6.594091796874977,24.99462890624997],[-6.396582031249977,23.274804687499994],[-6.02641601562496,20.04218750000001],[-5.827099609374955,18.301562500000045],[-5.741699218749943,17.555566406250023],[-5.713183593750017,17.306884765625],[-5.684765624999983,17.058251953124966],[-5.628662109375028,16.568652343750045],[-5.50961914062492,16.442041015625023],[-5.359912109374989,16.282861328124994]]]]},"properties":{"name":"Mauritania","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[-62.1484375,16.74033203124999],[-62.221630859375,16.699511718750003],[-62.191357421875,16.804394531249997],[-62.1484375,16.74033203124999]]]},"properties":{"name":"Montserrat","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[57.65126953125002,-20.48486328125],[57.31767578125002,-20.42763671875001],[57.416015625,-20.18378906250001],[57.65654296875002,-19.98994140625001],[57.7919921875,-20.21259765625001],[57.65126953125002,-20.48486328125]]]},"properties":{"name":"Mauritius","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[34.95947265625003,-11.578125],[34.82656250000005,-11.575683593749972],[34.65957031250005,-11.58867187499996],[34.61855468750005,-11.620214843749991],[34.60625,-11.690039062500006],[34.3578125,-12.164746093749997],[34.542578125,-13.108691406250003],[34.54570312500002,-13.21630859375],[34.6115234375001,-13.437890625000023],[35.0138671875001,-13.64345703124998],[35.247460937499994,-13.896875],[35.37578125000002,-14.05869140625002],[35.48847656250004,-14.20107421874998],[35.69042968749997,-14.465527343750026],[35.84716796875003,-14.670898437500043],[35.8927734375001,-14.891796875000011],[35.7912109375001,-15.958691406250026],[35.75527343750005,-16.058300781249983],[35.708886718749994,-16.095800781249977],[35.5993164062501,-16.12587890624998],[35.35849609375006,-16.160546875000023],[35.242773437500006,-16.375390625],[35.16718750000004,-16.56025390625001],[35.178320312500006,-16.57333984375002],[35.22978515625002,-16.639257812500034],[35.281152343749994,-16.8078125],[35.29042968750005,-17.096972656250017],[35.27255859375006,-17.11845703124996],[35.2013671875001,-17.13105468750004],[35.124609375,-17.127246093749974],[35.06464843750004,-17.078613281250014],[35.11210937500002,-16.898535156250006],[34.93339843750002,-16.760351562500006],[34.528125,-16.319140625],[34.24609374999997,-15.829394531249974],[34.54082031250002,-15.297265625],[34.50527343750005,-14.598144531249957],[34.375,-14.4248046875],[33.63642578125004,-14.568164062499974],[33.148046875,-13.94091796875],[32.98125,-14.009375],[32.797460937500006,-13.6884765625],[32.67041015624997,-13.590429687500006],[32.96757812500002,-13.225],[32.97519531250006,-12.701367187499983],[33.51230468750006,-12.347753906249977],[33.340136718750074,-12.308300781250011],[33.25234375000005,-12.112597656250031],[33.3039062500001,-11.69082031249998],[33.23271484375002,-11.417675781250026],[33.26835937500002,-11.403906249999977],[33.379785156249994,-11.15791015625004],[33.29277343750002,-10.85234375],[33.661523437499994,-10.553125],[33.55371093749997,-10.391308593750011],[33.53759765624997,-10.351562499999986],[33.52890625,-10.234667968749974],[33.31152343750003,-10.037988281249966],[33.3371093750001,-9.954003906249994],[33.350976562499994,-9.862207031250037],[33.25,-9.759570312500003],[33.148046875,-9.603515625],[32.99599609375005,-9.622851562499946],[32.91992187500003,-9.407421875000026],[33.88886718750004,-9.670117187499983],[33.99560546875003,-9.495410156250003],[34.32089843750006,-9.731542968749977],[34.56992187500006,-10.241113281249966],[34.66708984375006,-10.792480468750028],[34.60791015624997,-11.08046875],[34.77382812500005,-11.341699218750009],[34.890625,-11.3935546875],[34.93701171874997,-11.463476562500034],[34.95947265625003,-11.578125]]]},"properties":{"name":"Malawi","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[111.38925781250006,2.415332031250031],[111.31152343749997,2.437597656250034],[111.33349609374997,2.768310546875],[111.38925781250006,2.415332031250031]]],[[[104.22158203125,2.731738281250003],[104.1291015625001,2.767236328125037],[104.18476562500004,2.871728515625009],[104.22158203125,2.731738281250003]]],[[[117.88476562499997,4.186132812500006],[117.64902343750012,4.168994140624974],[117.70800781249997,4.262402343749997],[117.88476562499997,4.186132812500006]]],[[[100.28896484375005,5.294726562499989],[100.19101562500006,5.28286132812498],[100.2455078125,5.467773437499986],[100.33886718749997,5.410058593750037],[100.28896484375005,5.294726562499989]]],[[[99.848046875,6.465722656249994],[99.9186523437501,6.358593750000011],[99.74375,6.263281249999963],[99.64628906250002,6.418359375000023],[99.848046875,6.465722656249994]]],[[[102.10107421874997,6.242236328125031],[102.34013671875002,6.172021484375023],[102.534375,5.862548828125028],[103.09707031250005,5.408447265624986],[103.41582031250007,4.85029296875004],[103.43945312499997,2.93310546875],[103.8122070312501,2.58046875],[104.21855468750002,1.722851562499997],[104.25009765625012,1.388574218750009],[104.11494140625004,1.412255859375037],[103.98144531250003,1.623632812500034],[103.99150390625002,1.454785156249997],[103.6945312500001,1.449658203125026],[103.48027343750007,1.329492187499966],[103.35683593750005,1.546142578125057],[102.72714843750012,1.855566406250034],[101.29550781250012,2.885205078125011],[101.29990234375012,3.253271484375034],[100.71542968750006,3.966210937499966],[100.79550781250012,4.023388671874983],[100.61455078125002,4.3734375],[100.34326171874997,5.984179687500031],[100.11914062499997,6.441992187500048],[100.26142578125004,6.682714843749963],[100.3454101562501,6.549902343750006],[100.75449218750012,6.460058593749991],[100.87392578125,6.24541015624996],[101.05351562500002,6.242578125],[100.98164062500004,5.771044921875045],[101.1139648437501,5.636767578125045],[101.5560546875,5.907763671875003],[101.67841796875004,5.778808593750028],[101.87363281250012,5.825292968749991],[102.10107421874997,6.242236328125031]]],[[[117.5744140625001,4.17060546875004],[117.10058593750003,4.337060546875023],[116.51474609375006,4.370800781249969],[115.86074218750005,4.348046875000037],[115.67880859375006,4.193017578124994],[115.45439453125002,3.034326171875009],[115.24697265625005,3.025927734374989],[115.117578125,2.89487304687502],[115.08076171875004,2.63422851562504],[115.1791015625,2.523193359374972],[114.78642578125002,2.250488281250014],[114.83056640625003,1.980029296874989],[114.5125,1.452001953124963],[113.90234375000003,1.434277343749997],[113.6222656250001,1.2359375],[113.00654296875004,1.433886718750003],[112.94296875000006,1.566992187500034],[112.47617187500006,1.559082031250028],[112.1857421875001,1.4390625],[112.078515625,1.143359374999974],[111.80898437500005,1.011669921874969],[111.10136718750002,1.050537109374986],[110.50576171875005,0.861962890625023],[109.65400390625004,1.614892578125023],[109.53896484375,1.89619140625004],[109.62890625000003,2.027539062499983],[109.86484375000012,1.764453125000031],[110.34921875000012,1.719726562499972],[111.22324218750012,1.395849609374991],[111.0287109375,1.557812500000026],[111.26816406250012,2.13974609375002],[111.20859375000012,2.379638671875043],[111.44384765625003,2.381542968749983],[111.5125,2.743017578124991],[112.98789062500006,3.161914062499974],[113.92392578125006,4.243212890625003],[114.0638671875,4.592675781249966],[114.65410156250007,4.037646484375045],[114.84023437500005,4.393212890625009],[114.74667968750006,4.718066406250017],[115.02675781250005,4.899707031249989],[115.10703125000006,4.390429687499974],[115.290625,4.352587890624989],[115.1400390625,4.899755859374991],[115.37490234375,4.932763671874966],[115.55449218750007,5.093554687500045],[115.41904296875012,5.413183593749963],[115.60390625,5.603417968749994],[115.74082031250012,5.533007812500045],[115.8771484375001,5.613525390625014],[116.74980468750007,6.977099609374989],[116.8498046875001,6.826708984374989],[116.78808593749997,6.606103515624994],[117.12851562500012,6.968896484375009],[117.2298828125,6.939990234374974],[117.29404296875006,6.676904296875023],[117.60966796875002,6.512646484375054],[117.69375,6.35],[117.64453124999997,6.001855468749994],[117.5011718750001,5.884667968750009],[118.00380859375,6.053320312499991],[118.11582031250006,5.8625],[117.93476562500004,5.7875],[117.97363281249997,5.70625],[118.35312500000012,5.80605468749998],[118.59482421875006,5.592089843750003],[119.22343750000007,5.412646484375031],[119.2663085937501,5.308105468750057],[119.21962890625,5.159814453125037],[118.9125,5.02290039062504],[118.26054687500007,4.988867187500034],[118.18535156250002,4.828515625000051],[118.5625,4.502148437499997],[118.54833984375003,4.379248046875006],[118.008203125,4.250244140625014],[117.6964843750001,4.342822265625045],[117.5744140625001,4.17060546875004]]],[[[117.14160156250003,7.168212890625028],[117.08066406250006,7.115283203124989],[117.06425781250007,7.26069335937504],[117.2640625,7.351660156250006],[117.26679687500004,7.220800781249991],[117.14160156250003,7.168212890625028]]]]},"properties":{"name":"Malaysia","childNum":8}},{"geometry":{"type":"Polygon","coordinates":[[[23.380664062500017,-17.640625],[24.27490234375,-17.481054687500006],[24.73291015625,-17.51777343750001],[25.001757812500017,-17.56855468750001],[25.2587890625,-17.793554687500006],[24.909082031250023,-17.821386718750006],[24.530566406250017,-18.052734375],[24.243945312500017,-18.0234375],[23.599707031250006,-18.4599609375],[23.219335937500006,-17.99970703125001],[20.97412109375,-18.31884765625],[20.9794921875,-21.9619140625],[19.977343750000017,-22.00019531250001],[19.98046875,-24.77675781250001],[19.98046875,-28.310351562500003],[19.98046875,-28.451269531250006],[19.539843750000017,-28.574609375],[19.31269531250001,-28.73330078125001],[19.24580078125001,-28.901660156250003],[19.16171875,-28.938769531250003],[18.310839843750017,-28.88623046875],[17.44794921875001,-28.69814453125001],[17.34785156250001,-28.50117187500001],[17.358691406250017,-28.26943359375001],[17.1884765625,-28.13251953125001],[17.05625,-28.031054687500003],[16.93330078125001,-28.069628906250003],[16.875292968750017,-28.1279296875],[16.841210937500023,-28.21894531250001],[16.81015625,-28.26455078125001],[16.7875,-28.39472656250001],[16.755761718750023,-28.4521484375],[16.62617187500001,-28.487890625],[16.487109375000017,-28.572851562500006],[16.447558593750017,-28.617578125],[15.719042968750017,-27.9658203125],[15.341503906250011,-27.386523437500003],[15.139062500000023,-26.50800781250001],[14.9677734375,-26.31806640625001],[14.837109375000011,-25.033203125],[14.5015625,-24.201953125],[14.462792968750023,-22.44912109375001],[13.450585937500023,-20.91669921875001],[13.168359375000023,-20.184667968750006],[12.458203125000011,-18.9267578125],[11.77587890625,-18.001757812500003],[11.733496093750006,-17.7509765625],[11.743066406250023,-17.24921875000001],[11.902539062500011,-17.2265625],[12.013964843750017,-17.168554687500006],[12.21337890625,-17.2099609375],[12.318457031250006,-17.21337890625],[12.359277343750023,-17.205859375],[12.548144531250017,-17.212695312500003],[13.179492187500017,-16.9716796875],[13.475976562500023,-17.0400390625],[14.017480468750023,-17.40888671875001],[16.1484375,-17.390234375],[18.396386718750023,-17.3994140625],[18.95527343750001,-17.803515625],[20.1943359375,-17.863671875],[20.745507812500023,-18.01972656250001],[22.32421875,-17.8375],[23.380664062500017,-17.640625]]]},"properties":{"name":"Namibia","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[167.54443359375003,-22.62324218750001],[167.44375,-22.63916015624997],[167.44345703125006,-22.541406250000037],[167.54443359375003,-22.62324218750001]]],[[[168.01093750000004,-21.429980468750017],[168.1390625,-21.44521484375001],[168.12070312500012,-21.615820312500034],[167.96679687500003,-21.641601562499957],[167.81542968749997,-21.392675781249963],[167.9884765625001,-21.337890624999986],[168.01093750000004,-21.429980468750017]]],[[[167.40087890625003,-21.16064453125003],[167.07265625,-20.99726562499997],[167.03271484374997,-20.922558593750026],[167.18945312500003,-20.803515625000017],[167.05576171875012,-20.720214843750014],[167.29794921875006,-20.732519531250034],[167.40087890625003,-21.16064453125003]]],[[[164.20234375000004,-20.246093749999957],[164.4359375,-20.282226562499957],[165.191796875,-20.768847656249974],[165.66279296875004,-21.267187499999977],[166.94238281250003,-22.09013671875003],[166.97031250000012,-22.32285156250002],[166.77412109375004,-22.37617187500004],[166.4679687500001,-22.256054687499997],[164.92744140625004,-21.289843749999974],[164.16972656250007,-20.48017578125004],[164.05966796875012,-20.141503906249966],[164.20234375000004,-20.246093749999957]]]]},"properties":{"name":"New Caledonia","childNum":4}},{"geometry":{"type":"Polygon","coordinates":[[[14.97900390625,22.99619140624999],[15.181835937500011,21.523388671874997],[15.607324218750023,20.954394531250003],[15.587109375000011,20.733300781249994],[15.963183593750017,20.34619140625],[15.735058593750011,19.904052734375],[15.474316406250011,16.908398437499997],[14.367968750000017,15.750146484374994],[13.4482421875,14.380664062500003],[13.505761718750023,14.134423828124994],[13.606347656250023,13.70458984375],[13.426953125000011,13.701757812499991],[13.323828125,13.670849609374997],[12.871679687500006,13.449023437500003],[12.65478515625,13.3265625],[12.463183593750017,13.09375],[10.958886718750023,13.371533203124997],[10.475878906250017,13.330224609374994],[10.229589843750006,13.281005859375],[10.184667968750006,13.270117187499991],[9.615917968750011,12.810644531249991],[9.201562500000023,12.821484375],[8.750585937500006,12.908154296874997],[8.4560546875,13.059667968749991],[8.095019531250017,13.291162109374994],[7.955761718750011,13.32275390625],[7.788671875,13.337890625],[7.056738281250006,13.000195312499997],[6.804296875,13.107666015625],[6.2998046875,13.658789062499991],[6.184277343750011,13.66367187499999],[5.838183593750017,13.765380859375],[5.491992187500017,13.872851562500003],[5.415820312500017,13.859179687500003],[5.361621093750017,13.836865234374997],[5.241894531250011,13.757226562499994],[4.664843750000017,13.733203125],[4.147558593750006,13.457714843749997],[3.947851562500006,12.775048828124994],[3.646679687500011,12.529980468749997],[3.595410156250011,11.6962890625],[2.805273437500006,12.383837890624989],[2.366015625000017,12.221923828125],[2.38916015625,11.897070312499991],[2.072949218750011,12.309375],[2.226269531250011,12.466064453125],[2.104589843750006,12.701269531249991],[1.56494140625,12.635400390624994],[0.9873046875,13.041894531249994],[0.988476562500011,13.36484375],[1.201171875,13.357519531249991],[0.6181640625,13.703417968750003],[0.42919921875,13.972119140624997],[0.382519531250011,14.245800781249997],[0.163867187500017,14.497216796874994],[0.217480468750011,14.911474609374991],[0.947460937500011,14.982128906249997],[1.300195312500023,15.272265625],[3.001074218750006,15.340966796874994],[3.06015625,15.427197265624997],[3.504296875000023,15.356347656249994],[3.5205078125,15.483105468749997],[3.842968750000011,15.701708984375003],[4.121289062500011,16.357714843750003],[4.234667968750017,16.996386718750003],[4.227636718750006,19.142773437499997],[5.836621093750011,19.479150390624994],[7.481738281250017,20.873095703125003],[11.967871093750006,23.517871093750003],[13.48125,23.18017578125],[14.215527343750011,22.619677734375003],[14.97900390625,22.99619140624999]]]},"properties":{"name":"Niger","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[7.30078125,4.418164062500026],[7.140429687500017,4.395117187500034],[7.227343750000045,4.527343749999972],[7.30078125,4.418164062500026]]],[[[6.804296875,13.107666015625],[7.056738281250006,13.00019531250004],[7.788671875,13.337890625],[7.955761718750011,13.322753906250028],[8.095019531250045,13.29116210937498],[8.750585937500034,12.908154296875026],[9.20156250000008,12.82148437500004],[9.615917968750011,12.810644531249963],[10.184667968750063,13.270117187499963],[10.229589843749977,13.281005859375043],[10.475878906250074,13.330224609375037],[10.958886718750051,13.371533203125011],[12.463183593750017,13.09375],[12.654785156250057,13.3265625],[13.426953125000068,13.701757812499963],[13.606347656250023,13.704589843750014],[13.932324218750011,13.258496093749997],[14.06396484375,13.078515625],[14.160058593750023,12.612792968749986],[14.184863281250017,12.447216796874997],[14.272851562500023,12.356494140624989],[14.518945312500051,12.298242187500023],[14.619726562500063,12.150976562500048],[14.559765625000011,11.492285156249963],[14.20234375000004,11.268164062499963],[14.143261718750068,11.248535156250043],[14.056738281250034,11.245019531250037],[13.981445312500057,11.21186523437504],[13.892089843750057,11.140087890624983],[13.699902343749983,10.873144531250048],[13.53535156250004,10.605078124999963],[13.414550781250028,10.171435546874989],[13.269921875000051,10.036181640624974],[13.198730468750028,9.563769531250003],[12.929492187500074,9.426269531249972],[12.87568359375004,9.303515625000017],[12.80654296875008,8.886621093749994],[12.7822265625,8.817871093750014],[12.651562500000011,8.667773437499989],[12.40351562500004,8.59555664062502],[12.311328125000074,8.419726562499989],[12.2333984375,8.282324218749977],[12.016015625000051,7.589746093750009],[11.809179687500006,7.345068359374991],[11.767382812500017,7.272265624999989],[11.861425781249977,7.11640625000004],[11.657519531250017,6.951562500000023],[11.580078125000057,6.88886718750004],[11.551660156250023,6.697265625],[11.153320312500057,6.437939453125011],[11.1064453125,6.457714843750054],[11.032519531250045,6.697900390625037],[10.954199218750006,6.7765625],[10.60625,7.063085937500006],[10.413183593750006,6.877734375],[10.293066406250034,6.876757812499974],[10.205468750000051,6.891601562499986],[10.185546874999972,6.91279296875004],[10.167773437500017,6.959179687499983],[10.143554687500057,6.99643554687502],[10.038867187500045,6.921386718750014],[9.874218750000068,6.803271484375017],[9.82070312500008,6.783935546874986],[9.779882812500034,6.760156250000023],[9.725585937499972,6.65],[9.659960937500017,6.531982421874986],[9.490234375,6.418652343749997],[8.997167968750006,5.917724609375],[8.715625,5.046875],[8.514843750000068,4.724707031250034],[8.23378906250008,4.907470703124972],[8.293066406250006,4.557617187500014],[7.644238281250068,4.525341796875011],[7.530761718750028,4.655175781249994],[7.284375,4.547656250000031],[7.076562500000051,4.716162109374991],[7.15468750000008,4.514404296875],[6.92324218750008,4.390673828125017],[6.767675781250006,4.724707031250034],[6.860351562500057,4.373339843750045],[6.633007812500011,4.340234375000051],[6.579980468750051,4.475976562499994],[6.554589843750023,4.34140625000002],[6.263671875,4.309423828124991],[6.270996093749972,4.432128906250028],[6.173339843749972,4.277392578125031],[5.970703125,4.338574218749983],[5.587792968750051,4.647216796874972],[5.448144531250023,4.945849609374974],[5.383300781250057,5.129003906249977],[5.475976562500023,5.153857421874989],[5.370019531250023,5.195019531250026],[5.367968750000045,5.337744140624963],[5.549707031250023,5.474218749999963],[5.385839843750034,5.401757812500037],[5.199218750000028,5.533544921874977],[5.456640624999977,5.61171875],[5.327343750000011,5.707519531249986],[5.112402343750034,5.64155273437504],[4.861035156250068,6.026318359374997],[4.431347656250011,6.348583984375026],[3.450781249999977,6.427050781250017],[3.71699218750004,6.597949218750017],[3.430175781250057,6.525],[3.335546875000063,6.396923828125011],[2.706445312500051,6.369238281249963],[2.735644531250045,6.595703125],[2.753710937499989,6.661767578124966],[2.774609374999983,6.711718750000017],[2.752929687500028,6.771630859374966],[2.731738281250045,6.852832031249989],[2.721386718750068,6.980273437500017],[2.75673828125008,7.067919921875017],[2.750488281250057,7.39506835937496],[2.765820312500068,7.422509765625051],[2.783984375000045,7.443408203125045],[2.78515625,7.476855468750017],[2.703125,8.371826171875],[2.774804687500023,9.048535156250026],[3.044921875,9.08383789062502],[3.325195312499972,9.778466796875051],[3.60205078125,10.004541015625009],[3.646582031250006,10.408984374999989],[3.771777343750017,10.417626953124966],[3.83447265625,10.607421875],[3.7568359375,10.76875],[3.71640625,11.07958984375],[3.695312499999972,11.12031250000004],[3.63886718750004,11.176855468750006],[3.487792968749972,11.395410156250037],[3.490527343750017,11.499218750000054],[3.55390625000004,11.631884765624989],[3.595410156250068,11.696289062500057],[3.664746093750068,11.762451171875028],[3.646679687500011,12.529980468749983],[3.947851562500006,12.775048828124994],[4.147558593750006,13.457714843749983],[4.664843750000045,13.733203124999974],[5.241894531250011,13.757226562499994],[5.361621093750074,13.836865234375054],[5.415820312500017,13.859179687499974],[5.491992187500074,13.872851562500003],[6.2998046875,13.658789062500006],[6.804296875,13.107666015625]]]]},"properties":{"name":"Nigeria","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[-83.6419921875,10.917236328125],[-83.71293945312499,10.785888671875],[-83.91928710937499,10.7353515625],[-84.6341796875,11.045605468749997],[-84.9091796875,10.9453125],[-85.5841796875,11.189453125],[-85.7443359375,11.06210937499999],[-87.670166015625,12.965673828124991],[-87.58505859374999,13.043310546874991],[-87.42436523437499,12.921142578125],[-87.33725585937499,12.979248046875],[-87.05917968749999,12.991455078125],[-87.00932617187499,13.0078125],[-86.918212890625,13.223583984374997],[-86.87353515625,13.266503906249994],[-86.792138671875,13.27978515625],[-86.72929687499999,13.284375],[-86.710693359375,13.313378906249994],[-86.76352539062499,13.63525390625],[-86.77060546874999,13.69873046875],[-86.758984375,13.746142578125003],[-86.733642578125,13.763476562500003],[-86.61025390625,13.774853515624997],[-86.376953125,13.755664062500003],[-86.33173828125,13.770068359375003],[-86.238232421875,13.899462890625003],[-86.15122070312499,13.994580078124997],[-86.0892578125,14.037207031249991],[-86.04038085937499,14.050146484374991],[-85.9837890625,13.965673828124991],[-85.78671875,13.844433593749997],[-85.75341796875,13.85205078125],[-85.73393554687499,13.858691406250003],[-85.727734375,13.876074218749991],[-85.731201171875,13.931835937499997],[-85.68193359374999,13.982568359374994],[-85.20834960937499,14.311816406250003],[-85.059375,14.582958984374997],[-84.86044921874999,14.809765625],[-84.645947265625,14.661083984374997],[-84.53764648437499,14.633398437499991],[-83.635498046875,14.876416015624997],[-83.5365234375,14.977001953124997],[-83.4150390625,15.008056640625],[-83.15751953124999,14.993066406249994],[-83.18535156249999,14.956396484374991],[-83.21591796874999,14.932373046875],[-83.27988281249999,14.812792968750003],[-83.344384765625,14.902099609375],[-83.413720703125,14.825341796874994],[-83.29921875,14.7490234375],[-83.187744140625,14.340087890625],[-83.4123046875,13.99648437499999],[-83.567333984375,13.3203125],[-83.5109375,12.411816406249997],[-83.627197265625,12.459326171874991],[-83.59335937499999,12.713085937499997],[-83.75424804687499,12.501953125],[-83.680419921875,12.024316406249994],[-83.7671875,12.059277343749997],[-83.82890624999999,11.861035156249997],[-83.70458984375,11.824560546874991],[-83.6517578125,11.642041015624997],[-83.86787109375,11.300048828125],[-83.6419921875,10.917236328125]]]},"properties":{"name":"Nicaragua","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-169.80341796875,-19.0830078125],[-169.94833984375,-19.072851562500006],[-169.834033203125,-18.96601562500001],[-169.80341796875,-19.0830078125]]]},"properties":{"name":"Niue","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-68.205810546875,12.144580078124989],[-68.25434570312495,12.032080078124977],[-68.36923828125,12.301953124999983],[-68.205810546875,12.144580078124989]]],[[[4.226171875000034,51.38647460937503],[3.902050781250011,51.20766601562502],[3.43251953125008,51.24575195312505],[3.35009765625,51.37768554687503],[4.226171875000034,51.38647460937503]]],[[[3.94912109375008,51.73945312500001],[4.07509765625008,51.648779296875006],[3.699023437500017,51.70991210937501],[3.94912109375008,51.73945312500001]]],[[[4.886132812500023,53.07070312500005],[4.70917968750004,53.036035156249994],[4.886425781249983,53.18330078124998],[4.886132812500023,53.07070312500005]]],[[[4.226171875000034,51.38647460937503],[3.448925781250068,51.54077148437503],[3.743945312500017,51.596044921875006],[4.27412109375004,51.47163085937498],[4.004785156250051,51.595849609374966],[4.182617187500057,51.61030273437498],[3.946875,51.810546875],[4.482812500000023,52.30917968749998],[4.76875,52.941308593749966],[5.061230468750068,52.96064453125001],[5.532031250000074,53.268701171874966],[6.062207031250068,53.407080078125006],[6.816210937500045,53.44116210937503],[7.197265625000028,53.28227539062499],[7.033007812500045,52.65136718749997],[6.710742187500045,52.61787109374998],[6.748828125000074,52.464013671874994],[7.035156250000057,52.38022460937498],[6.724511718749994,52.080224609374966],[6.800390625,51.96738281249998],[5.948730468750057,51.80268554687501],[6.198828125000034,51.45],[6.129980468750034,51.14741210937501],[5.857519531250034,51.030126953125006],[6.048437500000034,50.90488281250006],[5.993945312500017,50.75043945312504],[5.693554687500011,50.774755859375006],[5.796484375000034,51.153076171875],[5.214160156250045,51.278955078124966],[5.03095703125004,51.46909179687498],[4.226171875000034,51.38647460937503]]],[[[5.325781250000063,53.38574218750003],[5.190234375000074,53.39179687500001],[5.582617187500063,53.438085937500034],[5.325781250000063,53.38574218750003]]]]},"properties":{"name":"Netherlands","childNum":6,"cp":[5.0752777,52.358465]}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[5.085839843750023,60.30756835937501],[5.089062500000068,60.188769531250045],[4.95722656250004,60.44726562500006],[5.085839843750023,60.30756835937501]]],[[[4.958691406250068,61.084570312500034],[4.79902343750004,61.08271484375001],[4.861621093749989,61.19384765625],[4.958691406250068,61.084570312500034]]],[[[8.10273437500004,63.33759765625004],[7.804003906250017,63.413916015625034],[8.073535156250045,63.47080078124998],[8.10273437500004,63.33759765625004]]],[[[8.470800781250063,63.66713867187502],[8.287109375000028,63.68715820312502],[8.764648437500057,63.804638671874955],[8.78652343750008,63.703466796875034],[8.470800781250063,63.66713867187502]]],[[[11.2314453125,64.865869140625],[10.739843750000034,64.87031250000001],[11.02099609375,64.97871093749995],[11.2314453125,64.865869140625]]],[[[12.971777343750063,67.87412109375],[12.824023437500074,67.82124023437498],[13.068066406250068,68.07133789062505],[12.971777343750063,67.87412109375]]],[[[13.872851562500045,68.26533203125004],[14.096777343750034,68.218603515625],[13.229394531250051,67.995361328125],[13.300195312499994,68.16044921875007],[13.872851562500045,68.26533203125004]]],[[[15.207128906250006,68.943115234375],[15.222070312500023,68.61630859375003],[14.404687500000051,68.663232421875],[15.037792968750068,69.00053710937507],[15.207128906250006,68.943115234375]]],[[[15.760351562500006,68.56123046875001],[16.328906250000017,68.87631835937498],[16.519238281250068,68.63300781249998],[15.975292968750011,68.402490234375],[14.257519531249983,68.19077148437503],[15.412597656250028,68.61582031250003],[15.483007812500006,69.04345703125003],[16.04804687500001,69.30205078125002],[15.760351562500006,68.56123046875001]]],[[[17.503027343750034,69.59624023437502],[18.004101562500068,69.50498046874998],[17.95068359375003,69.19814453125],[17.487890625000063,69.19682617187499],[17.08251953124997,69.013671875],[16.81044921875008,69.07070312499997],[17.001757812500045,69.36191406250006],[17.36083984375003,69.38149414062497],[17.503027343750034,69.59624023437502]]],[[[29.956152343750006,69.79677734375002],[29.766210937500006,69.76752929687501],[29.835839843749994,69.90556640625005],[29.956152343750006,69.79677734375002]]],[[[20.779199218750023,70.08974609375002],[20.46425781250005,70.0765625],[20.492773437500006,70.20332031249995],[20.78603515625008,70.21953124999999],[20.779199218750023,70.08974609375002]]],[[[19.25507812500001,70.06640625000006],[19.607812500000023,70.019140625],[19.334765625000074,69.82026367187501],[18.784765625000034,69.57900390624997],[18.12988281250003,69.557861328125],[18.34931640625004,69.76787109374999],[18.67402343750004,69.78164062500002],[19.13271484375005,70.24414062500003],[19.25507812500001,70.06640625000006]]],[[[19.76748046875005,70.21669921875002],[20.005957031250034,70.07622070312502],[19.599023437499994,70.26616210937507],[19.76748046875005,70.21669921875002]]],[[[23.615332031250034,70.54931640625003],[23.15917968750003,70.28261718750005],[22.941015625000063,70.444580078125],[23.546679687500017,70.61708984374997],[23.615332031250034,70.54931640625003]]],[[[24.01757812500003,70.56738281249997],[23.716601562500074,70.561865234375],[23.778417968750063,70.74736328125005],[24.01757812500003,70.56738281249997]]],[[[23.440527343750063,70.81577148437503],[22.8291015625,70.54155273437505],[22.358691406250017,70.514794921875],[21.99453125000008,70.65712890624997],[23.440527343750063,70.81577148437503]]],[[[30.869726562500006,69.78344726562506],[30.860742187499994,69.53842773437503],[30.18017578124997,69.63583984375],[30.08730468750005,69.43286132812503],[29.38828125,69.29814453125005],[28.96582031250003,69.02197265625],[28.846289062500006,69.17690429687502],[29.33339843750005,69.47299804687503],[29.14160156250003,69.67143554687505],[27.747851562500045,70.06484375],[27.127539062500063,69.90649414062497],[26.525390625000057,69.91503906250003],[26.07246093750004,69.69155273437497],[25.748339843750017,68.99013671875],[24.94140625000003,68.59326171875006],[23.85400390625,68.80590820312503],[23.324023437500017,68.64897460937502],[22.410937500000074,68.719873046875],[21.59375,69.273583984375],[21.06611328125001,69.21411132812497],[21.065722656250017,69.04174804687503],[20.622167968750006,69.036865234375],[20.116699218750057,69.02089843750005],[20.348046875000023,68.84873046875003],[19.969824218750063,68.35639648437501],[18.303027343750045,68.55541992187497],[17.91669921875001,67.96489257812502],[17.324609375000023,68.10380859374999],[16.783593750000023,67.89501953125],[16.12744140625,67.42583007812507],[16.40351562500004,67.05498046875002],[15.422949218750006,66.48984374999998],[15.483789062500051,66.30595703124999],[14.543261718750045,66.12934570312498],[14.47968750000004,65.30146484374998],[13.650292968750023,64.58154296874997],[14.077636718750028,64.464013671875],[14.141210937500006,64.17353515624998],[13.960546875000063,64.01401367187498],[13.203515625000023,64.07509765625],[12.792773437500017,64],[12.175195312500051,63.595947265625],[11.999902343750051,63.29169921875001],[12.303515625000074,62.28559570312501],[12.155371093750006,61.720751953125045],[12.88076171875008,61.35229492187506],[12.706054687500028,61.059863281250074],[12.29414062500004,61.00268554687506],[12.588671874999989,60.450732421875045],[12.486132812500074,60.10678710937506],[11.680761718750034,59.59228515625003],[11.798144531250074,59.28989257812498],[11.64277343750004,58.92607421875002],[11.470703125000057,58.909521484375034],[11.388281250000063,59.036523437499966],[10.834472656250028,59.18393554687498],[10.595312500000063,59.764550781249966],[10.179394531250068,59.00927734375003],[9.842578125000017,58.95849609374997],[9.557226562500063,59.11269531250002],[9.65693359375004,58.97119140624997],[8.166113281250063,58.145312500000045],[7.0048828125,58.024218750000074],[6.877050781250006,58.15073242187498],[6.590527343750068,58.09731445312502],[6.659863281250068,58.26274414062499],[5.706835937500074,58.52363281250001],[5.55556640625008,58.975195312500006],[6.099023437500023,58.87026367187502],[6.363281250000028,59.00092773437501],[6.099414062500017,58.951953125000074],[5.88916015625,59.097949218750045],[5.951855468750068,59.299072265625],[6.415332031250074,59.547119140625],[5.17324218750008,59.16254882812498],[5.2421875,59.564306640625034],[5.472460937500017,59.713085937499955],[5.77216796875004,59.66093749999999],[6.216601562499989,59.818359375],[5.73046875,59.863085937500045],[6.348730468750006,60.35297851562504],[6.57363281250008,60.36059570312497],[6.526855468750057,60.152929687500034],[6.995703125,60.511962890625],[6.1533203125,60.34624023437499],[5.145800781250074,59.63881835937502],[5.205664062500006,60.087939453125045],[5.688574218749977,60.12319335937502],[5.285839843750011,60.20571289062505],[5.13710937500008,60.445605468750074],[5.648339843750051,60.68798828124997],[5.244042968750023,60.569580078125],[5.115820312500006,60.63598632812503],[5.008593750000017,61.038183593750006],[6.777832031250028,61.142431640625006],[7.038671875000063,60.952929687500045],[7.040136718750006,61.091162109375034],[7.604492187500057,61.210546875000034],[7.34658203125008,61.30058593749999],[7.442578125000011,61.43461914062502],[7.173535156250011,61.16596679687501],[6.599902343750017,61.28964843749998],[6.383496093750068,61.133886718750034],[5.451269531250034,61.10234375000002],[5.106738281250017,61.187548828125045],[5.002734375000074,61.43359375],[5.338671875000017,61.485498046874994],[4.927832031249977,61.71069335937506],[4.93007812499999,61.878320312499994],[6.01582031250004,61.7875],[6.730761718750045,61.86977539062505],[5.266894531250045,61.935595703125045],[5.143164062500063,62.159912109375],[5.908300781249977,62.41601562500003],[6.083496093750057,62.349609375],[6.580078125000057,62.407275390625045],[6.692382812500028,62.46806640624999],[6.136132812500051,62.40747070312497],[6.352929687500051,62.61113281249999],[7.653125,62.56401367187499],[7.538378906250074,62.67207031249998],[8.045507812500006,62.77124023437503],[6.734960937500006,62.72070312500003],[6.940429687500028,62.930468750000045],[7.571875,63.09951171875002],[8.100585937500028,63.090966796874966],[8.623144531250006,62.84624023437502],[8.158007812500017,63.16152343750005],[8.635546875000045,63.34233398437502],[8.360742187500023,63.498876953125034],[8.576171875000028,63.60117187499998],[9.135839843750006,63.593652343749966],[9.156054687500045,63.459326171875034],[9.696875,63.624560546875045],[10.020996093750028,63.39082031250004],[10.76015625000008,63.461279296875006],[10.725292968750068,63.625],[11.370703125000034,63.804833984374994],[11.175585937500074,63.89887695312498],[11.457617187500063,64.00297851562505],[11.306640625000028,64.04887695312499],[10.91425781250004,63.92109374999998],[10.934863281250045,63.770214843749955],[10.055078125000051,63.5126953125],[9.567285156250051,63.70615234374998],[10.565625,64.418310546875],[11.523828125000051,64.744384765625],[11.632910156250063,64.81391601562495],[11.296777343750051,64.75478515625],[11.489355468750034,64.975830078125],[12.15966796875,65.178955078125],[12.508398437499977,65.09941406250005],[12.915527343750057,65.33925781249997],[12.417578125000063,65.18408203124997],[12.133886718749977,65.27915039062498],[12.68886718750008,65.90219726562498],[13.033105468750051,65.95625],[12.783789062500063,66.10043945312506],[14.034179687500057,66.29755859374998],[13.118847656250011,66.23066406250004],[13.211425781250028,66.64082031250001],[13.959472656250028,66.79433593750002],[13.651562500000011,66.90708007812498],[14.10878906250008,67.11923828125003],[15.41572265625004,67.20244140625002],[14.441699218750045,67.27138671875005],[14.961914062500057,67.57426757812502],[15.59443359375004,67.34853515625005],[15.691503906250006,67.52138671875],[15.24873046875004,67.6021484375],[15.303906250000011,67.76528320312502],[14.854687500000068,67.66333007812506],[14.798925781250063,67.80932617187503],[15.13427734375,67.97270507812502],[15.621386718750017,67.94829101562502],[15.316015624999977,68.06875],[16.007910156250006,68.22871093750004],[16.312304687500017,67.88144531249998],[16.20380859375001,68.31674804687503],[17.552832031250063,68.42626953125006],[16.51435546875004,68.53256835937503],[18.101464843749994,69.15629882812499],[18.259765625,69.47060546875],[18.915917968750023,69.33559570312502],[18.614453125000068,69.49057617187498],[19.197265625000057,69.74785156249999],[19.722460937500017,69.78164062500002],[19.64150390625005,69.42402343750001],[20.324218750000057,69.94531249999997],[20.054492187500074,69.33266601562497],[20.486718750000023,69.54208984375],[20.739453124999983,69.52050781250003],[20.622070312500057,69.91391601562498],[21.163085937500057,69.88950195312498],[21.432910156250045,70.01318359375006],[21.974707031250034,69.83457031249998],[21.355761718750045,70.23339843749997],[22.321972656250068,70.264501953125],[22.684570312500057,70.374755859375],[23.35390625000008,69.98339843750003],[23.3291015625,70.20722656249995],[24.420019531250034,70.70200195312503],[24.263476562500017,70.82631835937497],[24.658007812500017,71.00102539062505],[25.264648437500057,70.843505859375],[25.768164062500063,70.85317382812502],[25.043847656250023,70.10903320312502],[26.66132812500004,70.93974609374999],[26.585058593750034,70.41000976562498],[26.989355468750063,70.51137695312502],[27.183691406250034,70.74404296875],[27.546484375000063,70.80400390625005],[27.23525390625008,70.94721679687498],[27.59707031250005,71.09130859375003],[28.392285156250068,70.97529296875004],[27.898046875,70.67792968750001],[28.271777343750017,70.66796875000003],[28.192968750000034,70.24858398437505],[28.83154296875003,70.86396484375001],[29.7375,70.646826171875],[30.065136718750097,70.70297851562498],[30.944140625000017,70.27441406249997],[30.262988281250074,70.12470703125004],[28.804296875000063,70.09252929687506],[29.601367187500017,69.97675781249998],[29.792089843750063,69.727880859375],[30.08828125,69.71757812500005],[30.237597656250017,69.86220703125002],[30.428320312500006,69.722265625],[30.869726562500006,69.78344726562506]]],[[[25.58632812500005,71.14208984375],[26.13378906250003,70.99580078125004],[25.582031250000057,70.960791015625],[25.31494140625,71.03413085937504],[25.58632812500005,71.14208984375]]],[[[-8.953564453124983,70.83916015625002],[-8.001367187499966,71.17768554687495],[-8.002099609374937,71.04125976562497],[-8.953564453124983,70.83916015625002]]],[[[19.219335937500006,74.39101562500002],[18.86123046875008,74.51416015624997],[19.182910156250045,74.51791992187503],[19.219335937500006,74.39101562500002]]],[[[21.60810546875004,78.59570312499997],[22.04316406250004,78.57695312500007],[22.29951171875004,78.22817382812497],[23.451953125000074,78.14946289062502],[23.11669921874997,77.99150390624999],[24.901855468750057,77.756591796875],[22.55371093750003,77.26665039062502],[22.685351562500045,77.55351562500002],[20.928125,77.45966796874998],[21.653125,77.92353515624998],[20.22792968750005,78.47783203125005],[21.60810546875004,78.59570312499997]]],[[[11.250292968750017,78.610693359375],[12.116406250000068,78.232568359375],[11.121289062500011,78.46328125],[10.558203125000063,78.90292968750003],[11.250292968750017,78.610693359375]]],[[[29.047070312500068,78.91206054687504],[29.69667968750005,78.90473632812495],[27.88906250000005,78.8521484375],[28.511132812500023,78.96733398437502],[29.047070312500068,78.91206054687504]]],[[[16.786718750000034,79.90673828125],[17.834570312499977,79.80004882812503],[17.66875,79.38593750000004],[18.39736328125008,79.60517578125001],[18.677832031250006,79.26171875000003],[19.893554687500057,79.05620117187499],[20.61103515625004,79.10664062499998],[21.388769531250034,78.74042968749998],[19.67675781250003,78.60957031249995],[16.700488281250045,76.57929687499995],[14.365820312500034,77.23447265625003],[13.995703125000034,77.50820312500002],[14.69501953125004,77.525048828125],[14.920800781250023,77.68881835937506],[17.033300781250006,77.79770507812503],[16.91406250000003,77.89799804687505],[14.089941406250063,77.77138671875],[13.680566406250051,78.028125],[14.307226562500006,78.00507812500001],[15.783886718750011,78.32705078125005],[17.00292968750003,78.36938476562497],[16.44863281250008,78.50356445312502],[16.78261718750008,78.66362304687505],[15.417382812500023,78.47324218749998],[15.384179687500023,78.77119140625001],[15.01630859375004,78.63012695312497],[14.689257812500017,78.720947265625],[14.638281250000034,78.41459960937502],[14.110449218750063,78.27089843749997],[13.150195312499989,78.2375],[11.365429687500011,78.95039062500004],[12.323437500000068,78.91425781249995],[12.083984375000028,79.26752929687498],[11.579785156250068,79.28349609375005],[11.208105468750034,79.12963867187503],[10.737597656250017,79.52016601562502],[10.804003906250045,79.79877929687504],[11.150390625,79.71699218749998],[11.702343750000011,79.82060546875005],[12.287792968750068,79.713134765625],[12.279980468749983,79.81596679687507],[13.692871093749972,79.860986328125],[13.777539062500011,79.71528320312498],[12.555371093750068,79.56948242187502],[13.333789062500017,79.57480468750006],[14.029589843750017,79.34414062500005],[14.59365234375008,79.79873046875002],[16.34375,78.97612304687502],[15.816113281250011,79.68183593750001],[16.245703125000034,80.04946289062502],[16.786718750000034,79.90673828125]]],[[[32.52597656250006,80.119140625],[31.48193359374997,80.10791015625003],[33.62929687499999,80.21743164062497],[32.52597656250006,80.119140625]]],[[[20.897851562500023,80.24995117187501],[22.289746093749983,80.04921874999997],[22.450781250000034,80.40224609375005],[23.00800781250004,80.473974609375],[23.114550781250074,80.18696289062498],[24.29755859375004,80.36040039062505],[26.86083984375,80.16000976562498],[27.19863281250008,79.90659179687506],[25.641210937500034,79.40302734374995],[23.94775390625,79.19428710937498],[22.903710937500023,79.23066406250001],[22.865527343750045,79.41186523437497],[20.861132812500017,79.39785156249997],[20.128222656250074,79.489599609375],[19.674609375000045,79.591162109375],[20.784082031250023,79.74858398437502],[18.725,79.7607421875],[18.25537109375,79.92919921875003],[18.855957031250057,80.03662109375],[17.91689453125005,80.14311523437502],[19.343359375000063,80.11640624999998],[19.733300781249994,80.47783203124999],[20.897851562500023,80.24995117187501]]]]},"properties":{"name":"Norway","childNum":27}},{"geometry":{"type":"Polygon","coordinates":[[[87.984375,27.133935546874994],[87.9931640625,27.086083984374994],[88.11103515625001,26.928466796875],[88.1572265625,26.807324218749997],[88.16152343750002,26.724804687499997],[88.11152343750001,26.58642578125],[88.05488281250001,26.430029296875],[88.02695312500003,26.39501953125],[87.9951171875,26.382373046874996],[87.28740234374999,26.360302734374997],[87.01640624999999,26.555419921875],[86.70136718750001,26.43505859375],[86.00732421875,26.649365234374997],[85.79453125000003,26.604150390624994],[85.7373046875,26.63974609375],[85.6484375,26.829003906249994],[85.56845703125003,26.83984375],[85.29296875,26.741015625],[85.19179687500002,26.766552734374997],[84.68535156249999,27.041015625],[84.65380859375,27.091699218749994],[84.65478515625,27.203662109374996],[84.64072265625003,27.249853515625],[84.61015624999999,27.298681640625],[84.48085937500002,27.348193359374996],[84.22978515624999,27.42783203125],[84.09101562500001,27.491357421874994],[83.82880859375001,27.377832031249994],[83.74697265625002,27.395947265624997],[83.55166015625002,27.456347656249996],[83.44716796875002,27.46533203125],[83.38398437500001,27.44482421875],[83.36943359374999,27.41025390625],[83.28974609375001,27.370996093749994],[82.7333984375,27.518994140624997],[82.71083984375002,27.5966796875],[82.67734375000003,27.6734375],[82.6298828125,27.687060546874996],[82.45136718750001,27.671826171874997],[82.28769531250003,27.756542968749997],[82.11191406250003,27.864941406249997],[82.03701171875002,27.900585937499997],[81.98769531250002,27.913769531249997],[81.94521484375002,27.899267578125],[81.896875,27.874462890624997],[81.85263671875003,27.867089843749994],[81.1689453125,28.335009765624996],[80.58701171875003,28.649609375],[80.51787109374999,28.665185546874994],[80.49580078125001,28.635791015624996],[80.47910156250003,28.604882812499994],[80.41855468750003,28.612011718749997],[80.32480468750003,28.66640625],[80.2265625,28.723339843749997],[80.07070312500002,28.83017578125],[80.05166015625002,28.8703125],[80.08457031250003,28.994189453124996],[80.13046875000003,29.100390625],[80.16953125000003,29.124316406249996],[80.23300781250003,29.194628906249996],[80.25595703125003,29.318017578124994],[80.2548828125,29.42333984375],[80.31689453125,29.572070312499996],[80.40185546875,29.730273437499996],[80.54902343750001,29.899804687499994],[80.81992187500003,30.119335937499997],[80.84814453125,30.13974609375],[80.90761718750002,30.171923828124996],[80.96611328124999,30.180029296875],[81.17714843750002,30.039892578125],[81.25507812500001,30.093310546874996],[81.41718750000001,30.337597656249997],[81.64189453124999,30.3875],[81.85488281250002,30.36240234375],[82.04335937500002,30.3267578125],[82.220703125,30.063867187499994],[83.15546875000001,29.612646484375],[83.58349609375,29.18359375],[83.93593750000002,29.279492187499997],[84.02197265625,29.253857421874997],[84.10136718749999,29.219970703125],[84.12783203125002,29.156298828124996],[84.17558593749999,29.036376953125],[84.22871093750001,28.911767578124994],[84.796875,28.560205078124994],[84.85507812500003,28.553613281249994],[85.06914062499999,28.609667968749996],[85.12636718750002,28.60263671875],[85.15908203125002,28.592236328124997],[85.16015625,28.571875],[85.12148437500002,28.484277343749994],[85.08857421875001,28.372265625],[85.12246093750002,28.315966796874996],[85.21210937500001,28.292626953124994],[85.41064453125,28.276025390624994],[85.67832031250003,28.27744140625],[85.75947265625001,28.220654296874997],[85.84023437500002,28.1353515625],[85.92167968749999,27.989697265624997],[85.9541015625,27.92822265625],[85.99453125000002,27.910400390625],[86.06416015625001,27.934716796874994],[86.07871093750003,28.08359375],[86.13701171874999,28.11435546875],[86.21796875000001,28.0220703125],[86.32861328125,27.959521484374996],[86.40869140625,27.928662109374997],[86.51689453124999,27.963525390624994],[86.55449218749999,28.085205078125],[86.61445312500001,28.10302734375],[86.69052734375003,28.094921875],[86.71962890625002,28.070654296875],[86.75039062500002,28.0220703125],[86.93378906250001,27.968457031249997],[87.02011718750003,27.928662109374997],[87.14140624999999,27.838330078124997],[87.29072265625001,27.821923828124994],[87.62255859375,27.815185546875],[87.86074218750002,27.886083984375],[88.10976562500002,27.87060546875],[87.984375,27.133935546874994]]]},"properties":{"name":"Nepal","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[169.17822265624997,-52.497265625],[169.12753906250006,-52.570312499999964],[169.02177734375002,-52.49541015624998],[169.17822265624997,-52.497265625]]],[[[166.22109375,-50.76152343749997],[166.2428710937501,-50.84570312499998],[165.88916015624997,-50.80771484374996],[166.10136718750002,-50.538964843750016],[166.26748046875005,-50.558593750000014],[166.22109375,-50.76152343749997]]],[[[168.14492187500005,-46.862207031249966],[168.04316406250004,-46.9326171875],[168.2409179687501,-47.070019531250026],[167.52197265624997,-47.258691406249994],[167.80078125000003,-46.90654296875002],[167.78398437500007,-46.699804687500006],[167.9557617187501,-46.69443359374998],[168.14492187500005,-46.862207031249966]]],[[[166.97949218749997,-45.17968750000003],[167.02265625000004,-45.299804687499986],[166.89267578125012,-45.24052734374999],[166.97949218749997,-45.17968750000003]]],[[[-176.17763671874997,-43.74033203124998],[-176.38173828124997,-43.86679687499998],[-176.40737304687497,-43.7609375],[-176.516552734375,-43.78476562499996],[-176.33359375000003,-44.02529296875004],[-176.51552734374997,-44.11660156249998],[-176.62934570312495,-44.036132812500014],[-176.55512695312504,-43.85195312499998],[-176.84765625000003,-43.82392578125004],[-176.56611328124995,-43.717578125000045],[-176.17763671874997,-43.74033203124998]]],[[[173.91464843750018,-40.86367187500004],[173.78085937500012,-40.921777343749966],[173.964453125,-40.71298828124998],[173.91464843750018,-40.86367187500004]]],[[[173.11533203125006,-41.27929687499997],[173.94716796875005,-40.92412109375],[173.79785156250003,-41.271972656249986],[173.99941406250005,-40.99326171874996],[174.30253906249996,-41.019531249999986],[174.03857421875003,-41.24189453125],[174.37011718750009,-41.1037109375],[174.06933593750009,-41.42949218750002],[174.08369140625015,-41.67080078124998],[174.2831054687501,-41.740625],[173.22119140624997,-42.976562499999986],[172.62402343749997,-43.27246093749996],[172.73476562500005,-43.35478515625003],[172.52666015625002,-43.464746093749966],[172.69345703125006,-43.444335937499986],[172.80703125000005,-43.620996093749994],[173.07324218750003,-43.676171874999966],[173.065625,-43.87460937499998],[172.50273437500002,-43.84365234374998],[172.48037109375,-43.726660156250034],[172.29658203125004,-43.867871093750026],[172.035546875,-43.70175781250002],[172.17978515625006,-43.895996093749986],[171.24072265624997,-44.26416015625003],[171.14628906250002,-44.9123046875],[170.99902343750003,-44.91142578124999],[171.11328125000003,-45.03925781250001],[170.7005859375,-45.68427734374997],[170.77626953125005,-45.870898437499974],[170.4191406250001,-45.94101562499996],[169.68662109375006,-46.55166015625002],[169.34228515625003,-46.62050781250001],[168.38212890625007,-46.60537109374995],[168.1891601562501,-46.362207031249966],[167.8419921875001,-46.366210937499986],[167.539453125,-46.14853515624996],[167.36894531250007,-46.24150390624999],[166.73154296875006,-46.19785156249998],[166.91669921875004,-45.95722656249998],[166.64990234374997,-46.04169921875004],[166.71796875000004,-45.88935546875001],[166.49316406249997,-45.9638671875],[166.48828124999997,-45.83183593750002],[167.0033203125,-45.71210937500004],[166.79765625000002,-45.64560546874999],[166.99082031250012,-45.531738281249986],[166.73398437500012,-45.54355468749999],[166.74306640625,-45.46845703124997],[166.91992187499997,-45.40791015624998],[166.86923828125006,-45.31123046875],[167.15566406250005,-45.410937499999974],[167.23007812500012,-45.29033203125],[167.02587890624997,-45.12363281249998],[167.25947265625004,-45.08222656249997],[167.19453125000004,-44.963476562500034],[167.41074218750006,-44.82792968750003],[167.4662109375,-44.958300781250045],[167.48496093750006,-44.77138671874998],[167.78701171875,-44.59501953125002],[167.90898437500002,-44.66474609375001],[167.85654296875012,-44.50068359374998],[168.45742187500005,-44.030566406250045],[169.17890625000004,-43.9130859375],[169.16953125000006,-43.77705078125],[169.83388671875,-43.53701171875004],[170.24023437499997,-43.163867187500045],[170.39609375000012,-43.18222656249996],[170.30283203125012,-43.10761718750004],[170.61181640625003,-43.091796875000014],[170.5236328125001,-43.00898437500001],[170.6654296875,-42.961230468749974],[170.73525390625005,-43.029785156249986],[170.96992187500004,-42.71835937499996],[171.01171875000003,-42.88505859374999],[171.027734375,-42.696093750000045],[171.31337890625005,-42.460156250000026],[171.48623046875,-41.7947265625],[171.94804687500002,-41.53867187499996],[172.13945312500002,-40.947265625000014],[172.640625,-40.51826171875001],[172.94365234375007,-40.51875],[172.73261718750004,-40.54375],[172.70439453125002,-40.6677734375],[172.988671875,-40.84824218749999],[173.11533203125006,-41.27929687499997]]],[[[175.54316406250015,-36.279296874999986],[175.34619140624997,-36.217773437499986],[175.3895507812501,-36.07773437499996],[175.54316406250015,-36.279296874999986]]],[[[173.26943359375,-34.93476562499998],[173.44785156250012,-34.844335937500034],[173.47265625000003,-34.94697265624998],[174.10400390625003,-35.14287109375002],[174.1431640625,-35.3],[174.32031250000003,-35.246679687500034],[174.58066406250018,-35.78554687500004],[174.39580078124996,-35.79736328124996],[174.8021484375,-36.30947265625001],[174.72246093750007,-36.84121093749998],[175.29951171875004,-36.99326171874996],[175.38535156250012,-37.206933593749966],[175.54248046874997,-37.2013671875],[175.46083984375005,-36.475683593750034],[175.77216796875004,-36.73515625],[176.10839843749997,-37.64511718749998],[177.27402343750012,-37.993457031249974],[178.0091796875,-37.55488281249998],[178.53623046875006,-37.69208984375004],[178.26767578125006,-38.551171875],[177.976171875,-38.72226562500005],[177.90878906250012,-39.23955078125],[177.52294921875003,-39.07382812499999],[177.07675781250012,-39.22177734375002],[176.93925781249996,-39.55527343750002],[177.10986328125009,-39.673144531250045],[176.8421875000001,-40.15781250000002],[175.98291015625003,-41.21328125000002],[175.30976562499998,-41.610644531249974],[175.16562500000012,-41.41738281249995],[174.88134765624997,-41.42402343749997],[174.8656250000001,-41.223046874999966],[174.63535156250012,-41.28945312499999],[175.1625,-40.62158203125],[175.25410156250004,-40.28935546875],[175.1559570312501,-40.11494140625],[175.00927734375009,-39.95214843749996],[173.93437500000013,-39.50908203125002],[173.76367187499997,-39.31875],[173.84433593750006,-39.13935546875001],[174.39843749999997,-38.96259765624998],[174.59736328124998,-38.78505859374995],[174.80166015625005,-37.895507812500014],[174.92802734375002,-37.80449218750003],[174.58583984374994,-37.09775390625002],[174.73427734375,-37.21523437499998],[174.92890625000004,-37.084765625000045],[174.78203125000013,-36.94375],[174.47558593750009,-36.94189453124997],[174.1888671875001,-36.492285156250034],[174.4015625000001,-36.60195312499999],[174.39277343750004,-36.24003906249999],[174.26787109375002,-36.16308593750003],[174.25371093749996,-36.24912109374998],[174.03642578125013,-36.12246093750001],[173.91445312499994,-35.908691406249986],[173.91728515625002,-36.01816406249999],[174.16640624999994,-36.327636718749986],[174.05468749999991,-36.35976562500004],[173.41220703125012,-35.542578125],[173.62617187500004,-35.31914062499996],[173.3763671875001,-35.50009765624996],[173.31396484375003,-35.44335937499996],[173.11669921874997,-35.205273437500026],[173.190625,-35.01621093749998],[172.70595703125005,-34.45517578124998],[173.04394531249997,-34.429101562499994],[172.96376953125,-34.53515625000003],[173.26943359375,-34.93476562499998]]]]},"properties":{"name":"New Zealand","childNum":9}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[58.722070312499994,20.21875],[58.640917968750074,20.210693359375057],[58.64121093750006,20.33735351562501],[58.884375,20.680566406250023],[58.95078125000006,20.516162109375017],[58.722070312499994,20.21875]]],[[[56.38798828125002,24.97919921875004],[56.640625,24.4703125],[57.12304687500003,23.980712890625],[58.773046875,23.517187499999977],[59.42939453125004,22.660839843749955],[59.82324218749997,22.50898437500004],[59.8,22.21992187500001],[59.37148437500005,21.498828125000017],[58.89570312500004,21.11279296874997],[58.47421875000006,20.406884765624966],[58.20898437500003,20.423974609374994],[58.245019531249994,20.599218749999977],[58.16943359375003,20.58950195312505],[57.86181640624997,20.24414062500003],[57.71416015625002,19.678417968749983],[57.81162109375006,19.01708984374997],[56.825976562500074,18.753515625],[56.3834960937501,17.98798828125001],[55.479101562500006,17.84326171875003],[55.25537109375003,17.58564453125004],[55.275195312500074,17.320898437500006],[55.06416015625004,17.038916015625034],[54.06816406250002,17.005517578124966],[53.60986328124997,16.75996093750004],[53.08564453125004,16.648388671874955],[51.977636718750006,18.996142578125074],[54.97734375000002,19.995947265625006],[55.64101562499999,22.001855468749994],[55.185839843750074,22.7041015625],[55.1999023437501,23.034765625000034],[55.53164062499999,23.81904296875001],[55.4684570312501,23.94111328125001],[55.98515625000002,24.063378906249966],[55.92861328125005,24.215136718750074],[55.76083984375006,24.24267578125],[55.795703125000074,24.868115234374955],[56.00058593750006,24.953222656249977],[56.06386718750005,24.73876953125],[56.38798828125002,24.97919921875004]]],[[[56.29785156250003,25.650683593750045],[56.144628906250006,25.690527343750006],[56.16748046875003,26.047460937499977],[56.08046875,26.06264648437505],[56.41308593749997,26.351171875000034],[56.29785156250003,25.650683593750045]]]]},"properties":{"name":"Oman","childNum":3}},{"geometry":{"type":"Polygon","coordinates":[[[73.08961802927895,36.86435907947333],[73.08203125000107,36.43949943991182],[72.31128647748268,35.77290936638241],[73.13410859949555,34.82510160558277],[73.19895048106557,33.88770931468204],[74.00809389139292,33.25375789331485],[73.98984375,33.22119140625],[74.30361328125002,32.991796875],[74.30546875000002,32.810449218749994],[74.35458984375,32.768701171874994],[74.58828125000002,32.753222656249996],[74.632421875,32.770898437499994],[74.66328125000001,32.757666015625],[74.64335937500002,32.607714843749996],[74.68574218750001,32.493798828124994],[74.78886718750002,32.4578125],[74.9873046875,32.462207031249996],[75.33349609375,32.279199218749994],[75.25410156250001,32.14033203125],[75.13876953125,32.104785156249996],[75.07148437500001,32.08935546875],[74.73945312500001,31.948828125],[74.6357421875,31.88974609375],[74.55556640625002,31.818554687499997],[74.5259765625,31.76513671875],[74.50996093750001,31.712939453124996],[74.58183593750002,31.52392578125],[74.59394531250001,31.465380859374996],[74.53496093750002,31.261376953124994],[74.51767578125,31.185595703124996],[74.6103515625,31.112841796874996],[74.62578125000002,31.06875],[74.6328125,31.03466796875],[74.509765625,30.959667968749997],[74.38037109375,30.893408203125],[74.33935546875,30.8935546875],[74.00898437500001,30.519677734374994],[73.89931640625002,30.435351562499996],[73.88271484375002,30.3521484375],[73.92460937500002,30.28164062499999],[73.93339843750002,30.222070312499994],[73.88652343750002,30.162011718749994],[73.8091796875,30.093359375],[73.38164062500002,29.934375],[72.9033203125,29.028759765624997],[72.34189453125,28.751904296874997],[72.2919921875,28.697265625],[72.128515625,28.346337890624994],[71.94804687500002,28.177294921874996],[71.88886718750001,28.0474609375],[71.87031250000001,27.9625],[71.54296875,27.869873046875],[71.18476562500001,27.831640625],[70.87490234375002,27.714453125],[70.79794921875,27.709619140624994],[70.69160156250001,27.768994140624997],[70.62910156250001,27.937451171874997],[70.40371093750002,28.025048828124994],[70.24433593750001,27.934130859374996],[70.1939453125,27.894873046875],[70.14453125,27.849023437499994],[70.0498046875,27.694726562499994],[69.89628906250002,27.4736328125],[69.56796875,27.174609375],[69.47001953125002,26.804443359375],[70.11464843750002,26.548046875],[70.14921875000002,26.347558593749994],[70.1001953125,25.910058593749994],[70.2646484375,25.70654296875],[70.3251953125,25.685742187499997],[70.44853515625002,25.681347656249997],[70.505859375,25.685302734375],[70.56953125000001,25.705957031249994],[70.6484375,25.666943359374997],[70.65205078125001,25.422900390625003],[70.87773437500002,25.06298828125],[70.95087890625001,24.8916015625],[71.02070312500001,24.75766601562499],[71.0478515625,24.687744140625],[71.00234375000002,24.65390625],[70.97636718750002,24.61875],[70.96982421875,24.571875],[71.04531250000002,24.429980468750003],[71.04404296875,24.400097656249997],[70.98281250000002,24.361035156249997],[70.928125,24.362353515625003],[70.88623046875,24.34375],[70.80507812500002,24.261962890625],[70.76728515625001,24.245410156250003],[70.71630859375,24.237988281249997],[70.65947265625002,24.24609375],[70.57929687500001,24.279052734375],[70.55585937500001,24.331103515625003],[70.5650390625,24.385791015625003],[70.54677734375002,24.41831054687499],[70.2890625,24.35629882812499],[70.0982421875,24.2875],[69.80517578125,24.165234375],[69.71621093750002,24.172607421875],[69.63417968750002,24.22519531249999],[69.5591796875,24.273095703124994],[69.44345703125,24.275390625],[69.23505859375001,24.268261718749997],[69.11953125000002,24.26865234374999],[69.05156250000002,24.286328125],[68.98457031250001,24.273095703124994],[68.90078125000002,24.292431640624997],[68.86347656250001,24.266503906249994],[68.82832031250001,24.26401367187499],[68.78115234375002,24.313720703125],[68.75898437500001,24.30722656249999],[68.73964843750002,24.2919921875],[68.728125,24.265625],[68.72412109375,23.96469726562499],[68.48867187500002,23.967236328124997],[68.38125,23.950878906249997],[68.28251953125002,23.927978515625],[68.1650390625,23.857324218749994],[68.11552734375002,23.753369140624997],[67.8599609375,23.90268554687499],[67.66845703125,23.810986328124997],[67.309375,24.1748046875],[67.171484375,24.756103515625],[66.70302734375002,24.8609375],[66.69863281250002,25.226318359375],[66.32421875,25.601806640625],[66.13115234375002,25.49326171874999],[66.46767578125002,25.4453125],[64.77666015625002,25.307324218749997],[64.65898437500002,25.18408203125],[64.059375,25.40292968749999],[63.556640625,25.353173828124994],[63.49140625000001,25.210839843749994],[61.56689453125,25.186328125],[61.587890625,25.20234375],[61.61542968750001,25.2861328125],[61.64013671875,25.584619140624994],[61.67138671875,25.6923828125],[61.66181640625001,25.751269531250003],[61.66865234375001,25.768994140624997],[61.73769531250002,25.82109375],[61.75439453125,25.84335937499999],[61.78076171875,25.995849609375],[61.80996093750002,26.165283203125],[61.842382812500006,26.225927734375],[62.1259765625,26.368994140625],[62.239355468750006,26.35703125],[62.31230468750002,26.490869140624994],[63.168066406250006,26.665576171874996],[63.186132812500006,26.837597656249997],[63.24160156250002,26.86474609375],[63.25039062500002,26.879248046875],[63.24208984375002,27.077685546874996],[63.30517578125,27.124560546874996],[63.30156250000002,27.15146484375],[63.25625,27.207910156249994],[63.19609375000002,27.243945312499996],[63.16679687500002,27.252490234374996],[62.75273437500002,27.265625],[62.782324218750006,27.800537109375],[62.7625,28.202050781249994],[61.88984375000001,28.546533203124994],[61.15214843750002,29.542724609375],[61.0341796875,29.663427734375],[60.843359375,29.858691406249996],[61.22441406250002,29.749414062499994],[62.0009765625,29.530419921874994],[62.4765625,29.408349609374994],[63.56757812500001,29.497998046874997],[64.09873046875,29.391943359375],[64.39375,29.544335937499994],[65.09550781250002,29.559472656249994],[66.23125,29.86572265625],[66.346875,30.802783203124996],[66.82929687500001,31.263671875],[67.45283203125001,31.234619140625],[67.737890625,31.343945312499997],[67.57822265625,31.506494140624994],[68.16103515625002,31.802978515625],[68.59765625,31.802978515625],[68.86894531250002,31.634228515624997],[69.279296875,31.936816406249996],[69.24140625000001,32.433544921875],[69.5015625,33.020068359374996],[70.26113281250002,33.289013671875],[69.8896484375,34.007275390625],[70.65400390625001,33.952294921874994],[71.05156250000002,34.049707031249994],[71.095703125,34.369433593749996],[70.965625,34.53037109375],[71.62050781250002,35.183007812499994],[71.57197265625001,35.546826171875],[71.18505859375,36.04208984375],[71.23291015625,36.12177734375],[72.24980468750002,36.734716796875],[73.08961802927895,36.86435907947333]]]},"properties":{"name":"Pakistan","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-81.60327148437497,7.332812499999989],[-81.85205078125003,7.453320312500026],[-81.812158203125,7.59238281250002],[-81.72875976562494,7.62119140625002],[-81.60327148437497,7.332812499999989]]],[[[-78.89833984375002,8.27426757812502],[-78.960595703125,8.435839843749989],[-78.88325195312495,8.460253906249989],[-78.89833984375002,8.27426757812502]]],[[[-77.37421874999993,8.65830078125002],[-77.47851562499994,8.498437500000037],[-77.19599609374995,7.972460937500003],[-77.53828124999995,7.56625976562502],[-77.76191406249995,7.698828125000034],[-77.90117187499999,7.229345703125048],[-78.42158203124995,8.060986328125011],[-78.28735351562497,8.091796874999972],[-78.14189453125002,8.386083984374977],[-77.76054687499993,8.133251953124983],[-78.09946289062498,8.496972656250009],[-78.22304687500002,8.396630859374994],[-78.39921874999993,8.505664062500003],[-78.40986328124998,8.35532226562502],[-78.51406249999997,8.628173828125],[-79.08637695312495,8.997167968750034],[-79.50708007812494,8.97006835937502],[-79.68745117187493,8.850976562500009],[-79.81591796875,8.639208984375031],[-79.75043945312498,8.595507812500017],[-80.458984375,8.213867187499972],[-80.45810546875,8.077050781249994],[-80.01123046875,7.500048828125031],[-80.66669921874995,7.225683593750006],[-80.90122070312503,7.277148437500017],[-81.06386718749994,7.89975585937502],[-81.26840820312495,7.625488281250014],[-81.50415039062503,7.721191406249972],[-81.72763671875,8.137548828124977],[-82.15986328124995,8.19482421875],[-82.23544921874998,8.311035156250057],[-82.67954101562503,8.321972656249969],[-82.86611328124994,8.246337890625014],[-82.87934570312498,8.07065429687502],[-83.02734375,8.337744140624991],[-82.86162109374999,8.453515625000037],[-82.84477539062493,8.489355468749963],[-82.85571289062494,8.635302734375031],[-82.91704101562502,8.740332031250034],[-82.88198242187497,8.805322265625037],[-82.72783203125002,8.916064453125031],[-82.78305664062498,8.990283203124974],[-82.88134765625003,9.055859375000011],[-82.94033203124997,9.060107421874989],[-82.93984374999994,9.449169921875026],[-82.92504882812494,9.469042968749989],[-82.88896484374999,9.481005859375017],[-82.86015625,9.511474609375014],[-82.84399414062497,9.570800781250014],[-82.801025390625,9.591796875000028],[-82.64409179687502,9.505859375000028],[-82.56357421875003,9.576660156249972],[-82.50034179687503,9.523242187500017],[-82.37080078124993,9.428564453124991],[-82.33974609375,9.209179687499983],[-82.18813476562502,9.191748046874977],[-82.24418945312499,9.031494140625014],[-82.07788085937503,8.93486328124996],[-81.78022460937495,8.957226562499983],[-81.89448242187495,9.140429687500003],[-81.35478515624996,8.78056640624996],[-80.83867187499999,8.887207031250014],[-80.12709960937497,9.20991210937504],[-79.57729492187497,9.597851562500026],[-78.08276367187494,9.236279296874997],[-77.37421874999993,8.65830078125002]]]]},"properties":{"name":"Panama","childNum":3}},{"geometry":{"type":"Polygon","coordinates":[[[-73.137353515625,-6.4658203125],[-73.75810546874999,-6.90576171875],[-73.79301757812499,-7.135058593750003],[-73.758203125,-7.172753906250009],[-73.72041015625,-7.309277343750011],[-73.964306640625,-7.37890625],[-73.95849609375,-7.506640625],[-73.98173828124999,-7.535742187500006],[-74.00205078124999,-7.556054687500009],[-73.98173828124999,-7.585058593750006],[-73.946875,-7.611230468750009],[-73.89462890624999,-7.65478515625],[-73.82207031249999,-7.738964843750011],[-73.76689453124999,-7.753515625],[-73.72041015625,-7.782519531250003],[-73.73203125,-7.875390625],[-73.54912109374999,-8.345800781250006],[-73.39814453125,-8.458984375],[-73.36040039062499,-8.479296875],[-73.351708984375,-8.51416015625],[-73.35673828124999,-8.566992187500006],[-73.30244140625,-8.654003906250011],[-73.203125,-8.719335937500006],[-73.0705078125,-8.8828125],[-72.9740234375,-8.9931640625],[-72.970361328125,-9.1201171875],[-73.08984375,-9.265722656250006],[-73.209423828125,-9.411425781250003],[-72.379052734375,-9.51015625],[-72.181591796875,-10.003710937500003],[-71.33940429687499,-9.988574218750003],[-71.11528320312499,-9.852441406250009],[-71.041748046875,-9.81875],[-70.6369140625,-9.478222656250011],[-70.60791015625,-9.463671875],[-70.54111328124999,-9.4375],[-70.57016601562499,-9.48984375],[-70.592236328125,-9.54345703125],[-70.59916992187499,-9.620507812500009],[-70.642333984375,-11.01025390625],[-70.59653320312499,-10.976855468750003],[-70.53325195312499,-10.946875],[-70.45087890625,-11.024804687500009],[-70.39228515625,-11.05859375],[-70.3419921875,-11.066699218750003],[-70.29038085937499,-11.064257812500003],[-70.22006835937499,-11.04765625],[-70.06630859375,-10.982421875],[-69.9603515625,-10.929882812500011],[-69.839794921875,-10.933398437500003],[-69.6740234375,-10.9541015625],[-69.57861328125,-10.951757812500006],[-68.68525390625,-12.501953125],[-68.97861328124999,-12.880078125000011],[-69.07412109375,-13.682812500000011],[-68.87089843749999,-14.169726562500003],[-69.35947265624999,-14.7953125],[-69.37470703125,-14.962988281250006],[-69.17246093749999,-15.236621093750003],[-69.4208984375,-15.640625],[-69.21757812499999,-16.14912109375001],[-68.8427734375,-16.337890625],[-69.03291015625,-16.47597656250001],[-69.020703125,-16.6421875],[-69.62485351562499,-17.2001953125],[-69.645703125,-17.24853515625],[-69.521923828125,-17.388964843750003],[-69.510986328125,-17.46035156250001],[-69.51108398437499,-17.5048828125],[-69.5109375,-17.50605468750001],[-69.58642578125,-17.5732421875],[-69.684765625,-17.64980468750001],[-69.85209960937499,-17.70380859375001],[-69.80258789062499,-17.990234375],[-69.92636718749999,-18.2060546875],[-70.41826171874999,-18.34560546875001],[-71.33696289062499,-17.68251953125001],[-71.5322265625,-17.29433593750001],[-72.46767578125,-16.708105468750006],[-73.727685546875,-16.20166015625],[-75.104248046875,-15.411914062500003],[-75.533642578125,-14.89921875],[-75.93388671874999,-14.63359375],[-76.37646484375,-13.863085937500003],[-76.259228515625,-13.802832031250006],[-76.2236328125,-13.371191406250006],[-76.83212890624999,-12.348730468750006],[-77.152734375,-12.060351562500003],[-77.2203125,-11.663378906250003],[-77.633203125,-11.287792968750011],[-77.736083984375,-10.83671875],[-78.18559570312499,-10.089062500000011],[-78.76225585937499,-8.616992187500003],[-79.37724609374999,-7.835546875],[-79.99497070312499,-6.768945312500009],[-81.142041015625,-6.056738281250006],[-81.164306640625,-5.875292968750003],[-80.9306640625,-5.8408203125],[-80.88193359374999,-5.635058593750003],[-81.33662109375,-4.66953125],[-81.283203125,-4.322265625],[-80.503662109375,-3.49609375],[-80.324658203125,-3.387890625000011],[-80.24375,-3.576757812500006],[-80.19414062499999,-3.905859375],[-80.23051757812499,-3.924023437500011],[-80.26689453124999,-3.948828125],[-80.30327148437499,-4.005078125000011],[-80.43720703125,-3.978613281250006],[-80.49013671875,-4.010058593750003],[-80.510009765625,-4.069531250000011],[-80.49345703124999,-4.119140625],[-80.4884765625,-4.16552734375],[-80.453759765625,-4.205175781250006],[-80.35288085937499,-4.20849609375],[-80.44384765625,-4.335839843750009],[-80.4884765625,-4.393652343750006],[-80.47856445312499,-4.430078125],[-80.42416992187499,-4.46142578125],[-80.38349609375,-4.463671875],[-80.293359375,-4.416796875],[-80.1974609375,-4.31103515625],[-80.13955078125,-4.296093750000011],[-80.06352539062499,-4.327539062500009],[-79.962890625,-4.390332031250011],[-79.8451171875,-4.445898437500006],[-79.797265625,-4.476367187500003],[-79.71098632812499,-4.467578125],[-79.63852539062499,-4.454882812500003],[-79.57768554687499,-4.500585937500006],[-79.51616210937499,-4.539160156250006],[-79.501904296875,-4.670605468750011],[-79.45576171875,-4.766210937500006],[-79.3994140625,-4.840039062500011],[-79.33095703125,-4.927832031250006],[-79.26811523437499,-4.957617187500006],[-79.186669921875,-4.958203125000011],[-79.07626953124999,-4.990625],[-79.03330078124999,-4.969140625],[-78.995263671875,-4.908007812500003],[-78.97539062499999,-4.873242187500011],[-78.919189453125,-4.8583984375],[-78.92578125,-4.770703125000011],[-78.9076171875,-4.714453125],[-78.8615234375,-4.6650390625],[-78.68603515625,-4.562402343750009],[-78.64799804687499,-4.248144531250006],[-78.345361328125,-3.397363281250009],[-78.240380859375,-3.472558593750009],[-77.860595703125,-2.981640625000011],[-76.6791015625,-2.562597656250006],[-76.089794921875,-2.133105468750003],[-75.570556640625,-1.53125],[-75.42041015625,-0.962207031250003],[-75.40805664062499,-0.92431640625],[-75.24960937499999,-0.951855468750011],[-75.259375,-0.590136718750003],[-75.42470703125,-0.408886718750011],[-75.49106445312499,-0.248339843750003],[-75.56059570312499,-0.200097656250009],[-75.63203125,-0.157617187500009],[-75.62626953124999,-0.122851562500003],[-75.340478515625,-0.1421875],[-75.13837890625,-0.050488281250011],[-74.8017578125,-0.200097656250009],[-74.78046875,-0.24453125],[-74.75537109375,-0.298632812500003],[-74.691650390625,-0.335253906250003],[-74.616357421875,-0.370019531250009],[-74.555078125,-0.429882812500011],[-74.5138671875,-0.470117187500009],[-74.46518554687499,-0.517675781250006],[-74.41787109375,-0.580664062500006],[-74.334423828125,-0.850878906250003],[-74.28388671875,-0.927832031250006],[-74.24638671874999,-0.970605468750009],[-74.05439453125,-1.028613281250003],[-73.98681640625,-1.09814453125],[-73.926953125,-1.125195312500011],[-73.86318359375,-1.196679687500009],[-73.664306640625,-1.248828125],[-73.4962890625,-1.693066406250011],[-73.19697265625,-1.830273437500011],[-73.1544921875,-2.278222656250009],[-72.9896484375,-2.339746093750009],[-72.94111328125,-2.39404296875],[-72.21845703125,-2.400488281250006],[-71.98427734375,-2.3265625],[-71.93247070312499,-2.288671875],[-71.86728515624999,-2.227734375000011],[-71.802734375,-2.166308593750003],[-71.75253906249999,-2.152734375],[-71.55947265625,-2.22421875],[-71.39697265625,-2.334082031250006],[-71.19638671874999,-2.313085937500006],[-71.11337890624999,-2.245410156250003],[-71.027294921875,-2.225781250000011],[-70.96855468749999,-2.206835937500003],[-70.70537109374999,-2.341992187500011],[-70.64799804687499,-2.40576171875],[-70.57587890625,-2.418261718750003],[-70.29462890625,-2.552539062500003],[-70.24443359374999,-2.606542968750006],[-70.16474609375,-2.639843750000011],[-70.095849609375,-2.658203125],[-70.735107421875,-3.781542968750003],[-70.5296875,-3.866406250000011],[-70.48583984375,-3.869335937500011],[-70.42109375,-3.849609375],[-70.37919921874999,-3.81875],[-70.339501953125,-3.814355468750009],[-70.2984375,-3.84423828125],[-70.24028320312499,-3.882714843750009],[-70.16752929687499,-4.050195312500009],[-70.0171875,-4.162011718750009],[-69.96591796874999,-4.2359375],[-69.97202148437499,-4.301171875],[-70.00395507812499,-4.327246093750006],[-70.05332031249999,-4.333105468750006],[-70.12880859375,-4.28662109375],[-70.23916015625,-4.301171875],[-70.31689453125,-4.246972656250009],[-70.34365234375,-4.193652343750003],[-70.40463867187499,-4.150097656250011],[-70.5306640625,-4.167578125],[-70.72158203125,-4.158886718750011],[-70.79951171875,-4.17333984375],[-70.97368164062499,-4.350488281250009],[-71.8447265625,-4.50439453125],[-72.256787109375,-4.748925781250009],[-72.35283203124999,-4.786035156250009],[-72.468994140625,-4.901269531250009],[-72.608349609375,-5.009570312500003],[-72.69873046875,-5.0671875],[-72.83193359375,-5.09375],[-72.88706054687499,-5.122753906250011],[-72.9798828125,-5.634863281250006],[-73.16289062499999,-5.933398437500003],[-73.209375,-6.028710937500009],[-73.235546875,-6.0984375],[-73.137353515625,-6.4658203125]]]},"properties":{"name":"Peru","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[120.250390625,5.256591796875043],[119.82148437500004,5.06953125000004],[120.1652343750001,5.332421875000037],[120.250390625,5.256591796875043]]],[[[121.159375,6.075634765625011],[121.41103515625005,5.939843749999966],[121.29443359374997,5.869970703125034],[120.8763671875,5.95263671875],[121.159375,6.075634765625011]]],[[[122.09287109375012,6.428320312500006],[121.95917968750004,6.415820312500045],[121.83203125000003,6.664062499999986],[122.0583007812501,6.740722656249972],[122.32353515625002,6.602246093750011],[122.09287109375012,6.428320312500006]]],[[[122.93710937500006,7.409130859374983],[122.80468750000003,7.315966796875017],[122.82216796875,7.428466796875014],[122.93710937500006,7.409130859374983]]],[[[117.07988281250007,7.883398437499977],[117.02832031249997,7.807519531249966],[116.96953125000007,7.894921875],[116.9935546875,8.050537109375014],[117.07705078125,8.069140624999974],[117.07988281250007,7.883398437499977]]],[[[117.35527343750002,8.21464843749996],[117.28701171875,8.191015625000034],[117.28085937500006,8.314990234374974],[117.35527343750002,8.21464843749996]]],[[[124.80664062500003,9.142626953125003],[124.66582031250002,9.132324218750043],[124.65332031250003,9.225830078125],[124.80664062500003,9.142626953125003]]],[[[123.69765625000005,9.237304687500028],[123.61445312500004,9.103320312499989],[123.49345703125002,9.192089843750054],[123.69765625000005,9.237304687500028]]],[[[126.00595703125006,9.320947265625009],[126.19335937499997,9.276708984374963],[126.30458984375,8.952050781249994],[126.13955078125005,8.59565429687504],[126.36533203125012,8.483886718750014],[126.45869140625004,8.20283203125004],[126.43535156250002,7.832812499999974],[126.57011718750002,7.677246093749986],[126.58154296875003,7.247753906249969],[126.1920898437501,6.852539062500014],[126.18935546875,6.309667968749991],[125.82441406250004,7.333300781249989],[125.68925781250007,7.263037109374977],[125.38066406250007,6.689941406250014],[125.58847656250012,6.465771484374997],[125.66796874999997,5.97866210937498],[125.34648437500002,5.598974609374977],[125.23154296875006,6.069531250000011],[124.92734375000006,5.875341796874977],[124.21279296875,6.233251953124977],[124.078125,6.404443359375037],[123.98525390625,6.993701171875003],[124.20664062500006,7.396435546874983],[123.66582031250002,7.817773437500023],[123.49306640625,7.80791015624996],[123.39091796875007,7.407519531250017],[123.09667968749997,7.700439453125],[122.8429687500001,7.529296875000043],[122.79179687500002,7.72246093749996],[122.61621093749997,7.763134765624983],[122.14248046875,6.949658203124997],[121.96425781250005,6.96821289062504],[121.92460937500002,7.199511718750003],[122.24335937500004,7.945117187500031],[122.91113281250003,8.156445312499997],[123.05058593750002,8.433935546875048],[123.43457031249997,8.70332031250004],[123.84921875000006,8.432714843749977],[123.79941406250006,8.049121093749989],[124.19765625,8.229541015624974],[124.40488281250006,8.599853515625014],[124.7311523437501,8.562988281250043],[124.86894531250002,8.972265625000034],[125.141015625,8.86875],[125.20966796875004,9.027148437500017],[125.49873046875004,9.014746093749977],[125.47128906250006,9.756787109374983],[126.00595703125006,9.320947265625009]]],[[[126.059375,9.766210937500034],[125.99121093750003,9.838525390625023],[126.07382812500006,10.059228515625051],[126.1725585937501,9.79995117187498],[126.059375,9.766210937500034]]],[[[124.59384765625006,9.787207031249963],[124.1224609375,9.599316406249969],[123.93564453125012,9.623974609375011],[123.81718750000002,9.817382812499986],[124.17285156250003,10.135205078124983],[124.33574218750002,10.159912109375043],[124.57714843749997,10.026708984374991],[124.59384765625006,9.787207031249963]]],[[[125.69023437500007,9.914453125000037],[125.49482421875004,10.118701171875003],[125.66679687500002,10.440136718750026],[125.69023437500007,9.914453125000037]]],[[[119.91621093750004,10.485986328125037],[119.79316406250004,10.455273437499997],[119.85205078124997,10.64013671875],[120.00839843750012,10.570117187500031],[119.91621093750004,10.485986328125037]]],[[[122.64951171875012,10.472705078125003],[122.53837890625002,10.424951171875037],[122.5375,10.607568359375023],[122.70126953125006,10.740625],[122.64951171875012,10.472705078125003]]],[[[123.13085937500003,9.064111328124994],[122.99472656250006,9.058837890624986],[122.8666015625,9.319824218750043],[122.5625,9.482812500000037],[122.39951171875006,9.823046874999989],[122.47148437500007,9.961523437500034],[122.85556640625006,10.0869140625],[122.81699218750012,10.503808593750023],[122.98330078125,10.886621093750037],[123.25664062500007,10.99394531249996],[123.51064453125005,10.923046875],[123.5675781250001,10.780761718750057],[123.16201171875,9.864257812500028],[123.1498046875,9.606152343750026],[123.32050781250004,9.27294921875],[123.13085937500003,9.064111328124994]]],[[[123.37031250000004,9.449609375000023],[123.38623046874997,9.967089843750017],[124.03886718750002,11.273535156249991],[124.00498046875012,10.40009765625004],[123.70048828125007,10.128320312500009],[123.37031250000004,9.449609375000023]]],[[[123.75703125000004,11.28330078125002],[123.815625,11.15073242187502],[123.73671875,11.151464843749991],[123.75703125000004,11.28330078125002]]],[[[117.31113281250012,8.439599609375051],[117.21855468750007,8.367285156249963],[117.34990234375002,8.713574218749997],[119.22382812500004,10.477294921875043],[119.30566406250003,10.9736328125],[119.55332031250012,11.31352539062496],[119.52666015625002,10.953173828125003],[119.68691406250005,10.500341796875034],[119.36933593750004,10.327294921875037],[119.19150390625012,10.061083984374989],[118.78212890625005,9.91611328125002],[118.4349609375,9.256005859375009],[117.31113281250012,8.439599609375051]]],[[[119.86142578125006,11.52534179687504],[119.83066406250012,11.375683593750011],[119.72998046874997,11.431933593750017],[119.86142578125006,11.52534179687504]]],[[[124.574609375,11.343066406250031],[124.92998046875002,11.372851562499974],[125.02656250000004,11.21171875],[125.01318359374997,10.785693359374989],[125.26845703125005,10.307714843750048],[125.14257812499997,10.189453125000028],[124.9875,10.36757812499998],[125.02656250000004,10.033105468749966],[124.78076171874997,10.16806640625002],[124.78671875000012,10.781396484375009],[124.66269531250006,10.961962890625017],[124.44550781250004,10.923583984375014],[124.33066406250012,11.535205078125003],[124.574609375,11.343066406250031]]],[[[124.60839843750003,11.492187500000043],[124.48349609375006,11.485839843749986],[124.36035156250003,11.665917968749994],[124.5109375000001,11.687109375000048],[124.60839843750003,11.492187500000043]]],[[[122.49619140625006,11.615087890625034],[122.83808593750004,11.595654296874983],[122.89453125000003,11.44130859374998],[123.15830078125012,11.53554687499999],[123.11953125,11.286816406250026],[122.8029296875001,10.99003906249996],[122.76992187500005,10.823828125000034],[121.95400390625,10.444384765625003],[122.10351562499997,11.64291992187502],[121.91601562499997,11.854345703125006],[122.02919921875005,11.895410156250023],[122.49619140625006,11.615087890625034]]],[[[120.03876953125004,11.703320312499969],[119.94492187500006,11.690722656249989],[119.86093750000006,11.953955078124963],[120.03593750000002,11.917236328125028],[120.03876953125004,11.703320312499969]]],[[[120.1,12.167675781249983],[120.22822265625004,12.219824218750034],[120.31455078125012,12.012402343749969],[120.01054687500002,12.008251953125011],[119.88574218749997,12.299853515625003],[120.1,12.167675781249983]]],[[[122.65449218750004,12.309033203125011],[122.42294921875006,12.455078125],[122.60361328125006,12.49160156249998],[122.65449218750004,12.309033203125011]]],[[[125.23955078125002,12.527880859375003],[125.32021484375,12.321826171875031],[125.53564453125003,12.191406250000028],[125.49179687500006,11.594335937499977],[125.57353515625002,11.238232421874997],[125.73564453125002,11.049609375000017],[125.23339843749997,11.145068359375017],[125.03427734375012,11.341259765625026],[124.91699218750003,11.558398437500031],[124.99501953125,11.764941406250003],[124.445703125,12.152783203124969],[124.29472656250007,12.569335937500014],[125.23955078125002,12.527880859375003]]],[[[123.71660156250007,12.287353515625028],[124.04033203125002,11.966796875],[124.04550781250012,11.752441406250028],[123.47373046875006,12.21665039062502],[123.15781250000012,11.925634765624963],[123.23642578125012,12.583496093750057],[123.71660156250007,12.287353515625028]]],[[[122.09404296875002,12.354882812500023],[122.01396484375002,12.105615234375037],[121.9232421875,12.331298828125014],[122.00156250000006,12.598535156250009],[122.14501953124997,12.652636718750017],[122.09404296875002,12.354882812500023]]],[[[123.77539062499997,12.453906250000031],[123.77910156250002,12.366259765625031],[123.62148437500005,12.67490234375002],[123.77539062499997,12.453906250000031]]],[[[123.28183593750006,12.85341796874998],[123.36718750000003,12.70083007812498],[122.95751953124997,13.107177734374986],[123.28183593750006,12.85341796874998]]],[[[120.70439453125002,13.479492187499986],[121.20273437500006,13.432324218749969],[121.52275390625007,13.131201171874991],[121.540625,12.63818359375],[121.39433593750002,12.300585937499974],[121.23671875000005,12.218798828125003],[120.92216796875002,12.51162109374998],[120.65136718749997,13.169140625],[120.33847656250012,13.412353515624986],[120.40126953125,13.517041015624997],[120.70439453125002,13.479492187499986]]],[[[121.91484375000002,13.540332031250031],[122.11455078125002,13.463183593750031],[122.00488281249997,13.204980468750009],[121.82919921875006,13.328613281249972],[121.91484375000002,13.540332031250031]]],[[[124.35361328125006,13.632226562500009],[124.17539062500012,13.531542968750017],[124.03886718750002,13.663134765625003],[124.22490234375007,14.077587890624969],[124.41718750000004,13.871044921874997],[124.35361328125006,13.632226562500009]]],[[[122.03349609375002,15.005029296875009],[121.93300781250005,14.656054687500045],[121.83984374999997,15.038134765625003],[122.03349609375002,15.005029296875009]]],[[[121.10156249999997,18.615283203125017],[121.84560546875,18.29541015625003],[122.03847656250005,18.32792968749999],[122.14667968750004,18.486572265625],[122.26552734375005,18.458837890625034],[122.15234374999997,17.664404296875006],[122.51914062500012,17.124853515625034],[122.13515625000005,16.18481445312503],[121.59531250000012,15.933251953125023],[121.60703125000006,15.669824218749994],[121.39228515625004,15.324414062499969],[121.69541015625006,14.7373046875],[121.62792968749997,14.581152343749977],[121.76660156249997,14.16806640625002],[122.21171875000002,13.930175781250057],[122.2875,13.996191406250006],[122.19970703125003,14.148046875000034],[122.6271484375001,14.317529296875009],[122.93417968750012,14.18808593750002],[123.101953125,13.750244140624986],[123.29697265625012,13.836425781250043],[123.32031249999997,14.061669921875023],[123.81572265625002,13.837109375000011],[123.80625000000012,13.721728515625045],[123.54960937500007,13.645751953125014],[123.81923828125,13.269482421875011],[123.78515625000003,13.110546875000054],[124.14277343750004,13.035791015625009],[124.0597656250001,12.567089843749997],[123.87783203125005,12.689697265625014],[123.94853515625007,12.916406250000023],[123.31093750000005,13.044091796875009],[123.16328125000004,13.44174804687502],[122.59521484374997,13.90761718749998],[122.46796875000004,13.886718749999986],[122.66787109375,13.395361328124991],[122.59990234375002,13.194140625000031],[122.37656250000012,13.520605468750006],[121.77792968750006,13.93764648437498],[121.50107421875006,13.8421875],[121.344140625,13.649121093749997],[121.09550781250007,13.679492187500045],[120.84072265625,13.884716796875026],[120.637109375,13.804492187500031],[120.61679687500006,14.188037109375003],[120.9220703125001,14.493115234374983],[120.94130859375,14.645068359375031],[120.58369140625004,14.88125],[120.58867187500002,14.483105468749983],[120.43876953125002,14.453369140624972],[120.25078125000002,14.793310546875034],[120.08212890625012,14.851074218749986],[119.77255859375012,16.25512695312503],[119.83076171875004,16.326562500000023],[120.15976562500012,16.047656250000045],[120.36875,16.109570312499955],[120.35839843749997,17.63818359375],[120.59970703125012,18.507861328125074],[121.10156249999997,18.615283203125017]]],[[[121.92167968750007,18.89472656250001],[121.82519531250003,18.842724609374983],[121.94335937500003,19.010449218749955],[121.92167968750007,18.89472656250001]]],[[[121.52089843750005,19.361962890624994],[121.53125,19.271337890625006],[121.37460937500006,19.356298828124977],[121.52089843750005,19.361962890624994]]]]},"properties":{"name":"Philippines","childNum":37}},{"geometry":{"type":"Polygon","coordinates":[[[134.5954101562501,7.382031249999969],[134.51572265625012,7.525781250000037],[134.65117187500002,7.712109374999983],[134.5954101562501,7.382031249999969]]]},"properties":{"name":"Palau","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[153.53613281249997,-11.476171874999949],[153.75986328125006,-11.586328125],[153.55371093749997,-11.630566406249969],[153.28681640625004,-11.516992187500009],[153.20361328124997,-11.32412109374998],[153.53613281249997,-11.476171874999949]]],[[[154.28076171874997,-11.36142578125002],[154.12119140625006,-11.425683593749966],[154.02343750000003,-11.347949218750031],[154.28076171874997,-11.36142578125002]]],[[[150.89873046875002,-10.565332031250023],[150.88466796875,-10.643457031250037],[150.78574218750006,-10.603417968749966],[150.89873046875002,-10.565332031250023]]],[[[151.08095703125,-10.020117187499963],[151.29648437500012,-9.956738281250026],[151.230859375,-10.194726562500009],[150.95917968750004,-10.092578124999989],[150.77607421875004,-9.70908203125002],[151.08095703125,-10.020117187499963]]],[[[150.52841796875006,-9.34658203124998],[150.78867187500006,-9.417968749999957],[150.89404296875003,-9.667480468749986],[150.43623046875004,-9.624609374999949],[150.5084960937501,-9.536132812499957],[150.43730468750007,-9.359960937500034],[150.52841796875006,-9.34658203124998]]],[[[150.3454101562501,-9.493847656249955],[150.10976562500005,-9.361914062499991],[150.20830078125002,-9.206347656250003],[150.32011718750007,-9.264160156249972],[150.3454101562501,-9.493847656249955]]],[[[152.63095703125012,-8.959375],[152.95292968750007,-9.07011718749996],[152.96689453125006,-9.208984375000014],[152.51513671874997,-9.009863281250034],[152.63095703125012,-8.959375]]],[[[151.10683593750005,-8.733496093749949],[151.12412109375012,-8.804882812500011],[151.00498046875006,-8.523828124999952],[151.117578125,-8.41884765624998],[151.10683593750005,-8.733496093749949]]],[[[143.58681640625005,-8.481738281250003],[143.321875,-8.367578125],[143.5814453125,-8.390917968749974],[143.58681640625005,-8.481738281250003]]],[[[148.02578125,-5.826367187500011],[147.78105468750007,-5.627246093749946],[147.7946289062501,-5.492382812500011],[148.05478515625006,-5.61152343750004],[148.02578125,-5.826367187500011]]],[[[155.95761718750006,-6.686816406249989],[155.71933593750012,-6.862792968749957],[155.34404296875007,-6.721679687499986],[155.20214843750003,-6.3076171875],[154.75927734375003,-5.931347656249997],[154.72929687500002,-5.444433593750006],[155.09384765625006,-5.620214843750034],[155.46699218750004,-6.145117187500034],[155.82255859375002,-6.38046875000002],[155.95761718750006,-6.686816406249989]]],[[[147.17626953124997,-5.431933593749946],[147.00585937499997,-5.30703125],[147.1310546875001,-5.190820312500037],[147.17626953124997,-5.431933593749946]]],[[[154.64726562500002,-5.43271484375002],[154.54003906250003,-5.11083984375],[154.63261718750007,-5.013867187499955],[154.72714843750006,-5.218066406249989],[154.64726562500002,-5.43271484375002]]],[[[146.01933593750007,-4.726171874999963],[145.88359375000007,-4.66748046875],[145.9958007812501,-4.539257812499983],[146.01933593750007,-4.726171874999963]]],[[[151.915625,-4.296777343749966],[152.11718749999997,-4.212207031249974],[152.40566406250005,-4.340722656249952],[152.35117187500006,-4.82216796874998],[151.98369140625007,-5.07441406250004],[152.14296875,-5.357031249999963],[152.07705078125,-5.458300781249989],[151.86542968750004,-5.564843750000023],[151.51513671874997,-5.552343749999963],[151.22929687500002,-5.919921874999986],[150.47353515625,-6.263378906249969],[149.65253906250004,-6.290429687499966],[149.38232421874997,-6.078125],[149.0990234375,-6.116992187499989],[148.33720703125007,-5.669433593750014],[148.43203125,-5.471777343749991],[149.35888671875003,-5.583984375000014],[149.8314453125,-5.524121093749997],[149.96279296875,-5.447753906249972],[150.0900390625001,-5.011816406249977],[150.1703125,-5.070605468749974],[150.0724609375001,-5.309570312499986],[150.18310546874997,-5.523632812499983],[150.90029296875005,-5.447167968750037],[151.32656250000005,-4.96035156249998],[151.67119140625007,-4.88330078125],[151.59306640625007,-4.200781249999949],[151.915625,-4.296777343749966]]],[[[152.67060546875004,-3.13339843750002],[152.64619140625004,-3.221191406249957],[152.54326171875002,-3.095605468749952],[152.63876953125012,-3.042773437500031],[152.67060546875004,-3.13339843750002]]],[[[140.97617187500012,-9.11875],[140.97519531250006,-6.90537109375002],[140.86230468749997,-6.740039062499989],[140.975,-6.346093750000023],[140.97353515625,-2.803417968750026],[140.97343750000007,-2.609765625],[142.90517578125,-3.32070312499998],[143.50898437500004,-3.431152343750014],[144.06640625000003,-3.80517578125],[144.4777343750001,-3.82529296875002],[145.08779296875,-4.349121093749972],[145.33457031250012,-4.385253906249972],[145.7669921875,-4.823046874999989],[145.74521484375012,-5.402441406249977],[147.56669921875002,-6.056933593750003],[147.80205078125002,-6.31523437499996],[147.84550781250007,-6.662402343749989],[147.11914062499997,-6.721679687499986],[146.95361328124997,-6.834082031249963],[147.19003906250012,-7.378125],[148.12675781250007,-8.103613281249963],[148.246875,-8.554296875000034],[148.45117187499997,-8.694531250000011],[148.58310546875006,-9.051757812499957],[149.19833984375006,-9.03125],[149.26318359374997,-9.497851562499974],[150.01103515625007,-9.688183593750026],[149.76123046874997,-9.805859375000011],[149.87441406250005,-10.012988281250031],[150.84951171875,-10.236035156249997],[150.44609375000007,-10.30732421875004],[150.6471679687501,-10.517968749999966],[150.31992187500012,-10.654882812499963],[150.0167968750001,-10.577148437500028],[149.75410156250004,-10.353027343750028],[147.76865234375012,-10.070117187500031],[147.01718750000006,-9.38789062500004],[146.96376953125,-9.059570312499943],[146.63085937499997,-8.951171874999972],[146.03320312499997,-8.076367187500011],[144.97382812500004,-7.802148437500009],[144.86425781249997,-7.631542968749983],[144.50986328125006,-7.567382812499972],[144.14287109375007,-7.757226562500009],[143.65488281250012,-7.460351562500009],[143.94228515625005,-7.944238281250009],[143.8333984375,-8.029101562499974],[143.51816406250006,-8.000683593749955],[143.61376953125003,-8.200390624999969],[142.52412109375004,-8.32167968749998],[142.34746093750002,-8.167480468750014],[142.20683593750002,-8.195800781250014],[142.47480468750004,-8.369433593750031],[142.79794921875006,-8.345019531250031],[143.11181640624997,-8.474511718750037],[143.37724609375007,-8.762207031250028],[143.36621093750003,-8.961035156250034],[142.6471679687501,-9.327832031249969],[142.22958984375012,-9.169921874999957],[141.13320312500005,-9.221289062500034],[140.97617187500012,-9.11875]]],[[[152.96582031249997,-4.756347656249986],[152.89169921875006,-4.832421875000023],[152.73994140625004,-4.635839843750034],[152.66816406250004,-4.131835937500028],[152.27939453125006,-3.582421875],[151.06679687500005,-2.829003906249994],[150.74609374999997,-2.73886718750002],[150.8253906250001,-2.572949218749969],[152.03291015625004,-3.25136718749998],[153.01679687500004,-4.105664062500026],[153.1325195312501,-4.352441406250037],[152.96582031249997,-4.756347656249986]]],[[[150.43662109375012,-2.66181640625004],[150.16572265625004,-2.660253906249991],[149.96162109375004,-2.473828125000026],[150.22714843750006,-2.384179687499966],[150.42949218750007,-2.47041015625004],[150.43662109375012,-2.66181640625004]]],[[[147.06757812500004,-1.96015625],[147.43808593750012,-2.05898437499998],[147.20634765625007,-2.181933593749974],[146.54648437500012,-2.20859375],[146.65625,-1.97402343749998],[147.06757812500004,-1.96015625]]],[[[149.76542968750007,-1.553027343750017],[149.54589843749997,-1.471679687499957],[149.58095703125005,-1.353222656249983],[149.76542968750007,-1.553027343750017]]]]},"properties":{"name":"Papua New Guinea","childNum":21}},{"geometry":{"type":"Polygon","coordinates":[[[23.484667968750017,53.939794921875],[23.915429687500023,52.770263671875],[23.175097656250017,52.28662109375],[23.652441406250006,52.040380859375],[23.605273437500017,51.517919921875],[23.664453125000023,51.31005859375],[24.095800781250006,50.87275390625],[23.9970703125,50.809375],[24.089941406250006,50.53046875],[23.97265625,50.410058593749994],[23.711718750000017,50.37734375],[23.03632812500001,49.899072265624994],[22.706152343750006,49.606201171875],[22.6494140625,49.539013671875],[22.66064453125,49.483691406249996],[22.71992187500001,49.353808593749996],[22.732421875,49.295166015625],[22.705664062500006,49.171191406249996],[22.847070312500023,49.08125],[22.538671875,49.072705078125],[22.473046875000023,49.081298828125],[22.020117187500006,49.209521484374996],[21.6396484375,49.411962890625],[21.079394531250017,49.418261718749996],[20.868457031250017,49.314697265625],[20.36298828125001,49.38525390625],[20.0576171875,49.181298828124994],[19.756640625000017,49.204394531249996],[19.77392578125,49.37216796875],[19.44160156250001,49.597705078124996],[19.1494140625,49.4],[18.83222656250001,49.510791015624996],[18.562402343750023,49.879345703125],[18.0283203125,50.03525390625],[17.874804687500017,49.972265625],[17.627050781250006,50.11640625],[17.702246093750006,50.307177734374996],[17.41523437500001,50.254785156249994],[16.88007812500001,50.427050781249996],[16.989648437500023,50.2369140625],[16.63916015625,50.1021484375],[16.210351562500023,50.423730468749994],[16.419726562500017,50.573632812499994],[16.2822265625,50.655615234375],[16.007226562500023,50.611621093749996],[14.99375,51.01435546875],[14.98291015625,50.886572265625],[14.895800781250017,50.861376953124996],[14.809375,50.858984375],[14.814257812500017,50.871630859374996],[14.91748046875,51.008740234375],[14.9638671875,51.095117187499994],[14.935546875,51.435351562499996],[14.905957031250011,51.463330078125],[14.724707031250006,51.523876953125],[14.7109375,51.544921875],[14.738671875000023,51.6271484375],[14.601660156250006,51.832373046875],[14.752539062500006,52.081835937499996],[14.679882812500011,52.25],[14.615625,52.277636718749996],[14.573925781250011,52.31416015625],[14.554589843750023,52.359667968749996],[14.569726562500023,52.431103515625],[14.619433593750017,52.528515625],[14.514062500000023,52.64560546875],[14.253710937500017,52.782519531249996],[14.128613281250011,52.878222656249996],[14.138867187500011,52.932861328125],[14.293164062500011,53.0267578125],[14.368554687500023,53.10556640625],[14.410937500000017,53.199023437499996],[14.412304687500011,53.216748046875],[14.41455078125,53.283496093749996],[14.258886718750006,53.729638671875],[14.58349609375,53.63935546875],[14.558398437500017,53.823193359375],[14.21142578125,53.950341796875],[16.186328125000017,54.290380859375],[16.55976562500001,54.55380859375],[18.32343750000001,54.838183593749996],[18.75927734375,54.6845703125],[18.43623046875001,54.7447265625],[18.83642578125,54.369580078125],[19.604394531250023,54.4591796875],[20.20820312500001,54.420751953125],[22.16845703125,54.35986328125],[22.731835937500023,54.35009765625],[22.766210937500006,54.356787109375],[22.82373046875,54.395800781249996],[22.893945312500023,54.39052734375],[22.97675781250001,54.366357421875],[23.015527343750023,54.34833984375],[23.04218750000001,54.30419921875],[23.0875,54.299462890625],[23.170312500000023,54.2814453125],[23.282324218750006,54.24033203125],[23.3701171875,54.200488281249996],[23.45361328125,54.14345703125],[23.484667968750017,53.939794921875]]]},"properties":{"name":"Poland","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-65.42558593749999,18.105615234374994],[-65.57221679687493,18.137304687499977],[-65.29487304687501,18.133349609375045],[-65.42558593749999,18.105615234374994]]],[[[-66.12939453125003,18.444921875000034],[-65.62880859375,18.381396484375045],[-65.62084960937497,18.242333984374966],[-65.97080078124995,17.974365234375],[-67.196875,17.994189453125045],[-67.2640625,18.364599609375006],[-67.15864257812501,18.499218749999983],[-66.12939453125003,18.444921875000034]]]]},"properties":{"name":"Puerto Rico","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[130.52695312500012,42.535400390625],[130.68730468750007,42.30253906249999],[130.2357421875,42.183203125000034],[129.75634765624997,41.712255859375006],[129.70869140625004,40.857324218749994],[129.34111328125002,40.72631835937506],[128.51123046874997,40.130224609375006],[127.56816406250002,39.78198242187503],[127.39453125000003,39.207910156249966],[127.78613281250003,39.084130859374966],[128.37460937500012,38.6234375],[128.03896484375,38.30854492187498],[127.09033203125003,38.28388671875001],[126.63388671875012,37.78183593750006],[126.36992187500007,37.87836914062501],[126.11669921875003,37.74291992187503],[125.76914062500006,37.98535156250003],[125.35781250000005,37.72480468749998],[125.31074218750004,37.843505859375],[124.98876953124997,37.93144531249999],[125.2067382812501,38.08154296875],[124.69091796874997,38.12919921875002],[125.06738281250003,38.556738281250006],[125.55449218750002,38.68623046875001],[125.16884765625,38.80551757812506],[125.40966796875003,39.28837890625002],[125.36083984375003,39.52661132812497],[124.77529296875,39.75805664062506],[124.63828125000006,39.61508789062506],[124.36210937500002,40.004052734374994],[124.8893554687501,40.459814453125006],[125.98906250000002,40.904638671875034],[126.74306640625,41.724853515625],[126.95478515625004,41.76948242187501],[127.17968750000003,41.531347656250006],[128.14941406249997,41.38774414062496],[128.28925781250004,41.60742187500006],[128.04521484375007,41.9875],[128.92343750000006,42.038232421874966],[129.3136718750001,42.41357421874997],[129.69785156250012,42.448144531249994],[129.89824218750002,42.998144531250034],[130.24033203125006,42.891796874999955],[130.24667968750012,42.744824218749955],[130.52695312500012,42.535400390625]]]},"properties":{"name":"Dem. Rep. Korea","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-17.190869140624926,32.86860351562498],[-16.693261718749966,32.75800781250001],[-17.018261718749926,32.66279296874998],[-17.226025390624983,32.76684570312503],[-17.190869140624926,32.86860351562498]]],[[[-25.64897460937499,37.840917968750006],[-25.18193359374996,37.837890625],[-25.19072265624999,37.764355468749955],[-25.73447265624992,37.76289062500001],[-25.845898437499983,37.89404296875],[-25.64897460937499,37.840917968750006]]],[[[-28.14726562499996,38.45268554687502],[-28.064794921875034,38.412744140624966],[-28.454492187500023,38.40864257812504],[-28.54882812499997,38.51855468750003],[-28.14726562499996,38.45268554687502]]],[[[-28.641308593749983,38.525],[-28.842041015625,38.5984375],[-28.69775390625,38.638476562500045],[-28.641308593749983,38.525]]],[[[-27.07524414062496,38.643457031249994],[-27.38593750000001,38.765820312499955],[-27.127001953125017,38.78984375],[-27.07524414062496,38.643457031249994]]],[[[-31.137109374999937,39.40693359375001],[-31.282958984375,39.39409179687496],[-31.260839843750034,39.49677734375001],[-31.137109374999937,39.40693359375001]]],[[[-7.406152343749937,37.17944335937497],[-7.834130859374994,37.005712890625034],[-8.597656249999943,37.12133789062506],[-8.997802734375028,37.03227539062502],[-8.814160156249983,37.43081054687502],[-8.881103515624943,38.44667968750005],[-8.668310546874949,38.42431640625003],[-8.798876953124989,38.518164062500034],[-9.213281249999937,38.44809570312498],[-9.250390624999966,38.65673828125003],[-9.021484374999943,38.746875],[-8.79160156249992,39.07817382812502],[-9.13579101562496,38.74277343749998],[-9.35673828124996,38.697900390624994],[-9.479736328124972,38.79877929687501],[-9.374755859374972,39.338281249999966],[-8.837841796874926,40.11567382812498],[-8.684619140624989,40.75253906250006],[-8.755419921874932,41.69838867187502],[-8.887597656249937,41.76459960937501],[-8.777148437500017,41.941064453124994],[-8.266064453124983,42.13740234375001],[-8.152490234374937,41.81196289062498],[-7.40361328124996,41.833691406249955],[-7.147119140625023,41.98115234374998],[-6.61826171874992,41.9423828125],[-6.542187499999955,41.672509765624994],[-6.2125,41.53203125],[-6.928466796874972,41.009130859375006],[-6.8101562499999,40.343115234375034],[-7.032617187499966,40.16791992187498],[-6.896093749999949,40.02182617187506],[-6.975390624999932,39.79838867187502],[-7.117675781249972,39.681689453125045],[-7.53569335937496,39.66157226562501],[-6.997949218749994,39.05644531250002],[-7.343017578124943,38.45742187500002],[-7.106396484374983,38.181005859375006],[-6.957568359374932,38.18789062499999],[-7.44394531249992,37.72827148437497],[-7.406152343749937,37.17944335937497]]]]},"properties":{"name":"Portugal","childNum":7,"cp":[-8.7440694,39.9251454]}},{"geometry":{"type":"Polygon","coordinates":[[[-58.15976562499999,-20.164648437500006],[-58.13779296874999,-20.2373046875],[-58.12460937499999,-20.29345703125],[-58.09150390625,-20.33320312500001],[-58.05844726562499,-20.38613281250001],[-58.025390625,-20.415820312500003],[-58.00224609374999,-20.465429687500006],[-57.97905273437499,-20.657324218750006],[-57.91513671874999,-20.69033203125001],[-57.830224609374994,-20.99794921875001],[-57.94267578124999,-21.79833984375],[-57.95590820312499,-22.109179687500003],[-56.77519531249999,-22.261328125],[-56.44780273437499,-22.076171875],[-56.39487304687499,-22.09267578125001],[-56.35185546874999,-22.17861328125001],[-56.246044921875,-22.2646484375],[-56.18984375,-22.28115234375001],[-55.99140625,-22.28115234375001],[-55.84916992187499,-22.3076171875],[-55.75327148437499,-22.41015625],[-55.74663085937499,-22.5126953125],[-55.61767578125,-22.671484375],[-55.53828125,-23.58095703125001],[-55.518457031249994,-23.627246093750003],[-55.458886718749994,-23.68671875000001],[-55.4423828125,-23.792578125],[-55.4423828125,-23.865332031250006],[-55.415917968749994,-23.95136718750001],[-55.36630859374999,-23.991015625],[-55.28691406249999,-24.004296875],[-55.1943359375,-24.01748046875001],[-55.08188476562499,-23.99765625],[-54.982666015625,-23.97451171875001],[-54.62548828125,-23.8125],[-54.44023437499999,-23.90175781250001],[-54.37080078125,-23.97119140625],[-54.24179687499999,-24.047265625],[-54.281005859375,-24.30605468750001],[-54.43623046875,-25.12128906250001],[-54.47314453125,-25.22021484375],[-54.610546875,-25.432714843750006],[-54.615869140624994,-25.57607421875001],[-54.63193359374999,-26.00576171875001],[-54.677734375,-26.30878906250001],[-54.934472656249994,-26.70253906250001],[-55.1359375,-26.93115234375],[-55.426660156249994,-27.00927734375],[-55.450634765625,-27.068359375],[-55.496728515624994,-27.115332031250006],[-55.564892578125,-27.15],[-55.59726562499999,-27.207617187500006],[-55.59379882812499,-27.2880859375],[-55.63291015624999,-27.35712890625001],[-55.71464843749999,-27.41484375],[-55.789990234375,-27.41640625],[-55.95146484374999,-27.32568359375],[-56.1640625,-27.32148437500001],[-56.437158203124994,-27.553808593750006],[-58.16826171874999,-27.2734375],[-58.60483398437499,-27.31435546875001],[-58.641748046874994,-27.19609375],[-58.618603515625,-27.132128906250003],[-58.222070312499994,-26.65],[-58.18149414062499,-26.307421875],[-57.943115234375,-26.05292968750001],[-57.563134765624994,-25.473730468750006],[-57.821679687499994,-25.13642578125001],[-59.187255859375,-24.562304687500003],[-59.892480468749994,-24.093554687500003],[-60.83984375,-23.85810546875001],[-61.084716796875,-23.65644531250001],[-61.79853515625,-23.18203125],[-62.21416015624999,-22.612402343750006],[-62.372509765625,-22.43916015625001],[-62.54155273437499,-22.349609375],[-62.6259765625,-22.29042968750001],[-62.62568359375,-22.261523437500003],[-62.65097656249999,-22.233691406250003],[-62.27666015624999,-21.066015625],[-62.276318359375,-20.5625],[-61.7568359375,-19.6453125],[-60.00737304687499,-19.29755859375001],[-59.09052734375,-19.286230468750006],[-58.18017578125,-19.81787109375],[-58.15976562499999,-20.164648437500006]]]},"properties":{"name":"Paraguay","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[34.34833984375004,31.292919921874955],[34.2453125000001,31.208300781250045],[34.2125,31.292285156250017],[34.198144531249994,31.322607421875063],[34.47734375000002,31.584863281250023],[34.52412109375004,31.541650390624994],[34.5255859375001,31.52563476562503],[34.34833984375004,31.292919921874955]]],[[[34.88046875,31.3681640625],[34.950976562500074,31.60229492187503],[35.20371093750006,31.75],[35.1271484375001,31.816748046875006],[35.05322265625003,31.83793945312496],[34.983007812500006,31.816796875000023],[34.9611328125001,31.823339843750006],[34.95380859375004,31.84125976562504],[34.98974609374997,31.913281249999955],[34.955957031249994,32.1609375],[35.01054687500002,32.33818359375002],[35.06503906250006,32.46044921875006],[35.19326171875005,32.53442382812503],[35.303808593750006,32.512939453125],[35.38671875000003,32.493017578125034],[35.402636718750074,32.45063476562501],[35.484375,32.40166015624999],[35.5514648437501,32.39550781250006],[35.57207031250002,32.237890625],[35.450585937499994,31.479296875000017],[34.88046875,31.3681640625]]]]},"properties":{"name":"Palestine","childNum":2}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-149.321533203125,-17.690039062499963],[-149.177685546875,-17.736621093750045],[-149.18178710937497,-17.86230468749997],[-149.34111328125,-17.732421874999986],[-149.57890624999993,-17.734960937499963],[-149.635009765625,-17.564257812500003],[-149.37919921874993,-17.522363281249994],[-149.321533203125,-17.690039062499963]]],[[[-143.44057617187497,-16.619726562499963],[-143.38618164062498,-16.668847656250023],[-143.55068359375002,-16.62109374999997],[-143.44057617187497,-16.619726562499963]]],[[[-139.02431640624997,-9.695214843750037],[-138.82734375,-9.74160156249998],[-139.13408203124996,-9.829492187500037],[-139.02431640624997,-9.695214843750037]]],[[[-140.075634765625,-9.425976562499983],[-140.14438476562498,-9.359375],[-140.07094726562497,-9.328125],[-140.075634765625,-9.425976562499983]]],[[[-140.07260742187503,-8.910449218750031],[-140.21743164062497,-8.929687499999957],[-140.24003906249993,-8.79755859375004],[-140.057666015625,-8.801464843750026],[-140.07260742187503,-8.910449218750031]]]]},"properties":{"name":"Fr. Polynesia","childNum":5}},{"geometry":{"type":"Polygon","coordinates":[[[51.26796875000002,24.607226562500003],[51.17802734375002,24.58671875],[51.093359375,24.564648437499997],[51.02275390625002,24.565234375],[50.96601562500001,24.573925781249997],[50.928320312500006,24.595117187499994],[50.85566406250001,24.679638671874997],[50.80439453125001,24.789257812499997],[50.8359375,24.850390625],[50.846777343750006,24.888574218749994],[50.75458984375001,25.39926757812499],[51.003125,25.9814453125],[51.262304687500006,26.153271484374997],[51.543066406250006,25.902392578125003],[51.4853515625,25.524707031250003],[51.60888671875,25.052880859374994],[51.42792968750001,24.668261718750003],[51.26796875000002,24.607226562500003]]]},"properties":{"name":"Qatar","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[28.2125,45.450439453125],[28.317675781250017,45.347119140625],[28.451269531250006,45.2921875],[28.78828125000001,45.240966796875],[28.78173828125,45.309863281249996],[28.894335937500017,45.289941406249994],[29.223535156250023,45.4029296875],[29.403710937500023,45.419677734375],[29.567675781250017,45.37080078125],[29.705859375000017,45.259912109374994],[29.557519531250023,44.843408203124994],[29.048242187500023,44.757568359375],[29.0953125,44.975048828125],[28.891503906250023,44.91865234375],[28.585351562500023,43.742236328124996],[28.221972656250017,43.772851562499994],[27.88427734375,43.987353515624996],[27.425390625,44.0205078125],[27.0869140625,44.167382812499994],[26.2158203125,44.007275390625],[25.4970703125,43.670800781249994],[22.919042968750006,43.83447265625],[22.868261718750006,43.947900390624994],[23.02851562500001,44.077978515625],[22.705078125,44.23779296875],[22.687890625000023,44.248291015625],[22.494531250000023,44.435449218749994],[22.554003906250017,44.540332031249996],[22.6201171875,44.562353515625],[22.70078125,44.555517578125],[22.734375,44.569921875],[22.72089843750001,44.605517578124996],[22.64208984375,44.6509765625],[22.49765625,44.70625],[22.350683593750006,44.676123046875],[22.200976562500017,44.560693359374994],[22.093066406250017,44.541943359375],[21.909277343750006,44.66611328125],[21.636132812500023,44.71044921875],[21.52314453125001,44.790087890624996],[21.36005859375001,44.82666015625],[21.35791015625,44.86181640625],[21.384375,44.870068359375],[21.442187500000017,44.873388671875],[21.519921875000023,44.880810546875],[21.532324218750006,44.900683593749996],[21.35703125,44.990771484374996],[21.465429687500006,45.171875],[21.431445312500017,45.192529296874994],[20.794042968750006,45.46787109375],[20.775,45.749804687499996],[20.760156250000023,45.758105468749996],[20.746875,45.748974609375],[20.727832031250017,45.73740234375],[20.709277343750017,45.735253906249994],[20.652734375000023,45.77939453125],[20.581152343750006,45.869482421875],[20.35859375000001,45.975488281249994],[20.241796875,46.10859375],[20.28095703125001,46.1330078125],[20.508105468750017,46.166943359375],[20.613671875000023,46.13349609375],[20.76025390625,46.246240234374994],[21.121679687500006,46.282421875],[21.99970703125001,47.505029296874994],[22.87666015625001,47.947265625],[23.054785156250006,48.00654296875],[23.139453125000017,48.08740234375],[23.20263671875,48.084521484374996],[23.408203125,47.989990234375],[23.628710937500017,47.995849609375],[24.578906250000017,47.931054687499994],[24.979101562500006,47.72412109375],[25.464257812500023,47.910791015624994],[25.689257812500017,47.932470703125],[25.90869140625,47.967578125],[26.162695312500006,47.992529296875],[26.236230468750023,48.064355468749994],[26.276953125,48.113232421875],[26.3056640625,48.203759765624994],[26.4423828125,48.22998046875],[26.618945312500017,48.25986328125],[26.980761718750017,48.155029296875],[27.614062500000017,47.34052734375],[28.07177734375,46.978417968749994],[28.23945312500001,46.6408203125],[28.07470703125,45.598974609375],[28.2125,45.450439453125]]]},"properties":{"name":"Romania","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[146.71396484375012,43.743798828124994],[146.62197265625,43.81298828125006],[146.88408203125002,43.82915039062496],[146.71396484375012,43.743798828124994]]],[[[146.20761718750006,44.49765625],[146.5677734375,44.44042968749997],[145.91406249999997,44.10371093750004],[145.58681640625,43.84511718750002],[145.5558593750001,43.66459960937502],[145.46171875000007,43.870898437500045],[146.20761718750006,44.49765625]]],[[[148.59951171875,45.317626953125],[147.91376953125004,44.99038085937502],[147.65781250000012,44.97714843749998],[146.89746093750003,44.404296875],[147.24658203124997,44.856054687500006],[147.88554687500007,45.22563476562499],[147.9240234375001,45.38330078125006],[148.05605468750005,45.26210937500005],[148.32421874999997,45.28242187500001],[148.8122070312501,45.510009765625],[148.83710937500004,45.36269531250002],[148.59951171875,45.317626953125]]],[[[149.68769531250004,45.64204101562501],[149.44707031250002,45.593359375000034],[149.9623046875,46.02192382812504],[150.553125,46.208544921875045],[149.68769531250004,45.64204101562501]]],[[[152.00205078125006,46.89716796874998],[151.72343750000007,46.82880859375001],[152.28886718750007,47.1421875],[152.00205078125006,46.89716796874998]]],[[[154.81044921875005,49.31201171875],[154.61093750000006,49.29404296874998],[154.82490234375004,49.64692382812501],[154.81044921875005,49.31201171875]]],[[[155.9210937500001,50.30219726562501],[155.39716796875004,50.04125976562497],[155.24306640625,50.09462890625002],[155.21835937500012,50.29785156250003],[155.68017578124997,50.400732421875034],[156.096875,50.771875],[155.9210937500001,50.30219726562501]]],[[[156.40507812500002,50.65761718750005],[156.16796874999997,50.73188476562498],[156.37646484374997,50.86210937499996],[156.4875,50.84296874999998],[156.40507812500002,50.65761718750005]]],[[[142.76103515625002,54.393945312499966],[143.32470703125003,52.96308593749998],[143.15556640625002,52.08374023437497],[143.29951171875004,51.632373046875045],[143.81601562500006,50.28261718750002],[144.71376953125,48.64028320312502],[144.04873046875,49.249169921874994],[143.73232421875,49.31201171875],[143.10498046875003,49.198828125000034],[142.57421874999997,48.07216796875002],[142.55693359375002,47.737890625000034],[143.21767578125005,46.79487304687504],[143.48564453125002,46.752050781250006],[143.58066406250012,46.360693359375034],[143.43164062500003,46.02866210937498],[143.28232421875006,46.55898437500002],[142.57802734375005,46.700781250000034],[142.07714843749997,45.91704101562499],[141.83037109375002,46.451074218749966],[142.03867187500012,47.140283203124966],[141.9640625000001,47.58745117187502],[142.18173828125012,48.01337890625001],[141.86630859375006,48.750097656250006],[142.1422851562501,49.56914062499999],[142.06601562500006,50.630468750000034],[142.20673828125004,51.22255859375002],[141.72236328125004,51.73632812499997],[141.66083984375004,52.27294921874997],[141.85556640625012,52.79350585937499],[141.82353515625007,53.33950195312502],[142.1419921875,53.49560546875003],[142.52617187500002,53.44746093749998],[142.70595703125,53.89570312499998],[142.33496093749997,54.28071289062501],[142.76103515625002,54.393945312499966]]],[[[137.17861328125005,55.100439453125034],[137.05527343750006,54.9267578125],[136.71464843750002,54.956152343750034],[137.17861328125005,55.100439453125034]]],[[[137.94052734375012,55.092626953125034],[138.20615234375012,55.03354492187498],[137.72148437500007,54.66323242187505],[137.46269531250002,54.873388671875034],[137.23291015624997,54.79057617187496],[137.5773437500001,55.19702148437497],[137.94052734375012,55.092626953125034]]],[[[21.235742187500023,55.26411132812498],[22.072363281250034,55.06367187499998],[22.56728515625005,55.05913085937496],[22.82470703125,54.87128906249998],[22.684472656250023,54.56293945312504],[22.679882812500068,54.493017578125006],[22.766210937499977,54.356787109375034],[22.168457031250057,54.35986328125006],[21.14052734375008,54.39179687499998],[19.604394531250023,54.45917968750004],[19.974511718750023,54.92119140625002],[20.520312500000017,54.994873046875],[20.89980468750008,55.286669921875045],[20.957812500000074,55.27890625000006],[20.594824218750006,54.982373046874955],[20.995898437500017,54.90268554687506],[21.18886718750008,54.93520507812502],[21.235742187500023,55.26411132812498]]],[[[166.65029296875005,54.83906249999998],[166.64511718750006,54.69409179687503],[165.75107421875006,55.294531250000034],[166.27578125000005,55.311962890624955],[166.24804687499997,55.16542968750002],[166.65029296875005,54.83906249999998]]],[[[150.58994140625006,59.01875],[150.47021484375003,59.05405273437498],[150.66621093750004,59.16015625000003],[150.58994140625006,59.01875]]],[[[163.63515625000005,58.603369140625006],[163.47138671875004,58.509375],[163.7609375000001,59.01503906250002],[164.57265625,59.22114257812501],[164.61572265624997,58.885595703125034],[163.63515625000005,58.603369140625006]]],[[[35.8161132812501,65.18208007812501],[35.77871093750005,64.97666015625],[35.52890625000006,65.15107421875001],[35.8161132812501,65.18208007812501]]],[[[70.02070312500004,66.502197265625],[69.65136718750003,66.56533203125],[69.50273437500002,66.75107421875],[70.07666015624997,66.69589843750003],[70.02070312500004,66.502197265625]]],[[[-179.79853515625,68.9404296875],[-178.873876953125,68.75410156249995],[-178.69262695312503,68.54599609375],[-178.09746093750002,68.4248046875],[-178.05581054687497,68.26489257812503],[-177.79677734374997,68.33798828125],[-178.37304687500003,68.56567382812503],[-177.52724609375002,68.29438476562501],[-177.58920898437503,68.22421875],[-175.34521484375,67.67807617187503],[-175.37470703124998,67.35737304687498],[-175.00268554687494,67.4375],[-174.849853515625,67.34887695312503],[-174.92490234375,66.62314453125006],[-174.503759765625,66.537939453125],[-174.39409179687496,66.34423828124997],[-174.084765625,66.47309570312504],[-174.06503906249998,66.22958984374998],[-173.77397460937502,66.43466796875003],[-174.23159179687497,66.63188476562505],[-174.08642578125,66.94287109375],[-174.55009765624993,67.090625],[-173.6796875,67.144775390625],[-173.15781249999998,67.06909179687503],[-173.32353515625,66.95483398437503],[-173.25893554687497,66.84008789062503],[-173.19301757812497,66.99360351562504],[-172.5201171875,66.952490234375],[-173.00751953125,67.06489257812498],[-171.79555664062502,66.93173828125003],[-170.50952148437503,66.34365234375005],[-170.604443359375,66.24892578125002],[-170.30122070312504,66.29404296874998],[-170.24394531250002,66.16928710937503],[-169.777880859375,66.14311523437505],[-169.83168945312497,65.99892578124997],[-170.54067382812497,65.86542968749995],[-170.66630859375,65.62153320312501],[-171.42153320312502,65.81035156250002],[-171.10585937500002,65.51103515625005],[-171.90712890625,65.495947265625],[-172.78330078124998,65.68105468749997],[-172.23281250000002,65.45571289062497],[-172.30927734375004,65.27563476562497],[-172.66191406249993,65.24853515625006],[-172.28603515625002,65.20571289062502],[-172.21318359375,65.04814453124999],[-173.08579101562498,64.81733398437495],[-172.80107421874996,64.79052734375],[-172.90087890624994,64.62885742187501],[-172.40146484374998,64.413916015625],[-172.73916015624997,64.41225585937502],[-172.90317382812498,64.52607421875004],[-172.96005859375003,64.32768554687502],[-173.27548828124998,64.2896484375],[-173.327490234375,64.53955078125003],[-173.72973632812497,64.36450195312497],[-174.57055664062503,64.7177734375],[-175.39511718749998,64.80239257812502],[-175.85385742187498,65.01083984375003],[-176.09326171875,65.471044921875],[-177.05625,65.613623046875],[-177.48876953125,65.50371093749999],[-178.4125,65.49555664062501],[-178.93906249999998,66.03276367187505],[-178.74672851562497,66.01367187500006],[-178.52656250000004,66.40156250000004],[-178.86811523437498,66.18706054687502],[-179.14340820312503,66.37504882812505],[-179.327197265625,66.16259765625003],[-179.68330078124998,66.18413085937505],[-179.78969726562497,65.90087890625],[-179.352099609375,65.51674804687497],[-180,65.06723632812498],[-180,65.31196289062501],[-180,65.55678710937497],[-180,65.80156250000002],[-180,66.04628906250002],[-180,66.29106445312499],[-180,66.53583984375004],[-180,66.78056640625005],[-180,67.02534179687501],[-180,67.27011718750006],[-180,67.51484374999998],[-180,67.75961914062503],[-180,68.00439453124997],[-180,68.24912109375],[-180,68.49389648437497],[-180,68.738671875],[-179.999951171875,68.98344726562505],[-179.79853515625,68.9404296875]]],[[[50.265234375,69.18559570312502],[49.62626953125002,68.85971679687498],[48.91035156250004,68.74306640625002],[48.4390625,68.80488281249998],[48.319921875,69.26923828125001],[48.8449218750001,69.49472656250003],[49.22519531250006,69.51123046875],[50.265234375,69.18559570312502]]],[[[161.46708984375002,68.90097656250003],[161.08281250000007,69.4056640625],[161.50517578125007,69.63945312500002],[161.46708984375002,68.90097656250003]]],[[[169.20078125000006,69.58046875],[168.34804687500005,69.66435546875005],[167.86474609375003,69.90107421875004],[168.35791015625003,70.01567382812502],[169.37480468750007,69.88261718749999],[169.20078125000006,69.58046875]]],[[[60.450488281250074,69.93486328124999],[60.44023437500002,69.72592773437506],[59.637011718750074,69.72104492187503],[59.50263671875004,69.86621093750003],[58.952734375,69.89277343750004],[58.51992187500005,70.31831054687504],[59.04804687500004,70.46049804687505],[60.450488281250074,69.93486328124999]]],[[[52.90332031250003,71.36499023437503],[53.19257812500004,71.21528320312498],[53.0226562500001,70.96870117187501],[52.24960937500006,71.28491210937506],[52.90332031250003,71.36499023437503]]],[[[178.8615234375001,70.826416015625],[178.68388671875013,71.10566406250004],[180,71.53774414062505],[180,70.993017578125],[178.8615234375001,70.826416015625]]],[[[137.95986328125005,71.50766601562503],[137.71181640625005,71.4232421875],[137.06406250000006,71.52988281250003],[137.816796875,71.58789062500006],[137.95986328125005,71.50766601562503]]],[[[-178.87646484375,71.57705078124997],[-178.13388671874998,71.46547851562497],[-177.523583984375,71.16689453125],[-179.415673828125,70.91899414062502],[-179.999951171875,70.993017578125],[-179.999951171875,71.53774414062505],[-178.87646484375,71.57705078124997]]],[[[77.6325195312501,72.291259765625],[76.87109374999997,72.317041015625],[77.74853515625003,72.63120117187506],[78.36513671875005,72.48242187500003],[77.6325195312501,72.291259765625]]],[[[79.50146484374997,72.72192382812497],[78.63320312500005,72.85073242187502],[79.16425781250004,73.0943359375],[79.50146484374997,72.72192382812497]]],[[[74.660546875,72.87343750000002],[74.18066406250003,72.975341796875],[74.19853515625002,73.10908203124998],[74.9615234375,73.0625],[74.660546875,72.87343750000002]]],[[[120.26132812500012,73.08984374999997],[119.79208984375006,73.04541015624997],[119.64042968750002,73.12431640625007],[120.26132812500012,73.08984374999997]]],[[[55.31982421875003,73.30830078124998],[56.42958984375005,73.201171875],[56.121679687500006,72.80659179687498],[55.40332031249997,72.54907226562503],[55.29785156249997,71.93535156250005],[56.45439453125002,71.10737304687504],[57.62539062500005,70.72880859374999],[57.14589843750005,70.58911132812506],[56.38574218749997,70.73413085937503],[56.49970703125004,70.56640625000003],[55.687304687500074,70.69218749999999],[54.60117187500006,70.68007812500002],[53.383593750000074,70.87353515625],[53.670507812500006,71.08691406250003],[54.155664062499994,71.12548828125],[53.40996093750002,71.34013671875002],[53.41162109375003,71.530126953125],[51.93789062500005,71.47470703124998],[51.511328125,71.64809570312497],[51.58251953124997,72.07119140625],[52.252050781250006,72.12973632812503],[52.66191406250002,72.33686523437495],[52.91660156250006,72.66889648437501],[52.5792968750001,72.791357421875],[53.3698242187501,72.91674804687506],[53.2511718750001,73.182958984375],[54.80390625000004,73.38764648437498],[55.31982421875003,73.30830078124998]]],[[[70.67392578125006,73.09501953125005],[70.04072265625004,73.03715820312507],[69.99589843750002,73.359375],[70.94023437500002,73.51440429687503],[71.6261718750001,73.17397460937497],[70.67392578125006,73.09501953125005]]],[[[142.18486328125007,73.89589843750005],[143.34375,73.56875],[143.45146484375007,73.231298828125],[141.59667968750003,73.31083984375005],[140.66279296875004,73.45200195312503],[139.785546875,73.35522460937503],[141.08476562500002,73.86586914062497],[142.18486328125007,73.89589843750005]]],[[[83.5490234375001,74.07177734375],[82.8177734375,74.09160156250005],[83.14980468750005,74.151611328125],[83.5490234375001,74.07177734375]]],[[[141.01025390625003,73.99946289062501],[140.40947265625002,73.92167968750005],[140.1935546875001,74.23671875000002],[141.03857421875003,74.24272460937502],[141.01025390625003,73.99946289062501]]],[[[113.38720703124997,74.40043945312499],[112.78242187500004,74.09506835937503],[111.50341796874997,74.35307617187502],[111.87978515625,74.36381835937499],[112.08447265624997,74.54897460937505],[113.38720703124997,74.40043945312499]]],[[[86.653125,74.981298828125],[87.05214843750005,74.982568359375],[86.92714843750005,74.83076171874998],[86.25859375000002,74.89350585937498],[86.653125,74.981298828125]]],[[[82.17236328125003,75.41938476562501],[81.97851562499997,75.24711914062499],[81.65478515625003,75.28891601562498],[81.71210937500004,75.45141601562506],[82.165625,75.515625],[82.17236328125003,75.41938476562501]]],[[[146.79521484375007,75.37075195312505],[148.43242187500002,75.41352539062495],[148.59013671875007,75.23637695312502],[150.82236328125006,75.15654296875002],[150.64628906250002,74.944580078125],[149.596875,74.77260742187505],[148.296875,74.80043945312502],[146.14853515625012,75.19829101562499],[146.5375,75.58178710937506],[146.79521484375007,75.37075195312505]]],[[[135.9486328125,75.40957031250005],[135.45195312500007,75.38955078124997],[135.6986328125,75.84526367187499],[136.16894531249997,75.60556640625],[135.9486328125,75.40957031250005]]],[[[140.04873046875,75.82895507812503],[140.81591796874997,75.63071289062498],[141.48544921875012,76.13715820312495],[142.66953125000012,75.86342773437497],[143.68583984375002,75.86367187500002],[145.35996093750006,75.53046874999998],[144.01972656250004,75.04467773437506],[143.1703125,75.11689453125001],[142.72949218749997,75.33764648437506],[142.941796875,75.71328125000002],[142.30791015625007,75.69169921875005],[142.19882812500006,75.39267578124998],[143.12792968749997,74.9703125],[142.47275390625006,74.82041015625],[141.98730468750003,74.99125976562499],[140.26787109375002,74.846923828125],[139.68125,74.96406249999995],[139.09912109374997,74.65654296875002],[138.09228515625003,74.79746093750003],[136.94765625000005,75.32553710937498],[137.28974609375004,75.34863281249997],[137.26884765625002,75.7494140625],[137.70654296875003,75.75957031250002],[137.56054687499997,75.95522460937502],[138.20761718750006,76.11494140624995],[138.91953125000006,76.19672851562501],[140.04873046875,75.82895507812503]]],[[[96.5324218750001,76.278125],[96.30058593750002,76.121728515625],[95.31113281250006,76.21474609375002],[95.37988281250003,76.2890625],[96.5324218750001,76.278125]]],[[[112.47802734375003,76.62089843749999],[112.531640625,76.450048828125],[111.96894531250004,76.62617187500001],[112.47802734375003,76.62089843749999]]],[[[149.15019531250002,76.65991210937506],[148.39863281250004,76.64824218750007],[149.4064453125001,76.78208007812498],[149.15019531250002,76.65991210937506]]],[[[67.7653320312501,76.23759765624999],[61.35595703124997,75.31484375000002],[60.27685546875003,75.00756835937503],[60.501367187499994,74.90463867187503],[59.67402343750004,74.61015624999999],[59.24013671875005,74.69296874999998],[59.040429687499994,74.48554687500001],[58.53466796875003,74.49892578124997],[58.6178710937501,74.22739257812498],[57.76738281250002,74.013818359375],[57.755957031250006,73.769189453125],[57.313085937500006,73.838037109375],[57.54257812500006,73.65820312500003],[56.96386718750003,73.36655273437503],[56.43037109375004,73.29721679687503],[55.00683593750003,73.45385742187506],[54.29990234375006,73.35097656249997],[53.7628906250001,73.76616210937499],[54.64267578125006,73.95957031250006],[55.34091796875006,74.41962890624998],[56.13710937500005,74.49609375000003],[55.5822265625001,74.627685546875],[56.4987304687501,74.95708007812505],[55.81005859374997,75.12490234374997],[56.03554687499999,75.19423828124997],[56.57031250000003,75.09775390625003],[56.8444335937501,75.351416015625],[57.606835937499994,75.34125976562498],[58.05830078125004,75.6630859375],[58.88125,75.85478515625007],[60.27929687499997,76.09624023437505],[60.94218750000002,76.07128906250003],[61.20166015624997,76.28203125000007],[62.97148437500002,76.23666992187498],[64.4634765625,76.37817382812503],[67.65185546874997,77.011572265625],[68.48574218750005,76.93369140625003],[68.94169921875002,76.707666015625],[67.7653320312501,76.23759765624999]]],[[[96.28544921875002,77.02666015625007],[95.27031250000007,77.01884765624999],[96.52841796875006,77.20551757812501],[96.28544921875002,77.02666015625007]]],[[[89.51425781250006,77.18881835937498],[89.14169921875012,77.22680664062497],[89.61621093749997,77.31103515625],[89.51425781250006,77.18881835937498]]],[[[130.68730468750007,42.30253906249999],[130.52695312500012,42.535400390625],[130.42480468749997,42.72705078124997],[131.06855468750004,42.90224609375005],[131.25732421875003,43.378076171874994],[131.2552734375,44.07158203124999],[130.9816406250001,44.844335937500034],[131.44687500000012,44.984033203124966],[131.85185546875002,45.32685546875001],[132.93603515624997,45.029931640624994],[133.1134765625001,45.130712890625006],[133.18603515625003,45.49482421875004],[133.43642578125,45.60468750000004],[133.86132812500003,46.24775390625004],[134.1676757812501,47.30219726562501],[134.75234375,47.71542968749998],[134.56601562500006,48.02250976562502],[134.66523437500004,48.25390625],[134.29335937500005,48.37343750000002],[133.46835937500006,48.09716796875003],[133.14404296875003,48.10566406249998],[132.7072265625001,47.94726562500006],[132.47626953125004,47.714990234374994],[130.96191406249997,47.70932617187498],[130.7326171875001,48.01923828124998],[130.80429687500012,48.34150390624998],[130.5521484375,48.602490234374955],[130.553125,48.861181640625006],[130.1959960937501,48.89165039062499],[129.49814453125012,49.38881835937502],[129.0651367187501,49.374658203124966],[128.70400390625,49.60014648437499],[127.99960937500006,49.56860351562506],[127.55078124999997,49.801806640625045],[127.590234375,50.20898437500003],[127.33720703125007,50.35014648437502],[127.30703125000005,50.70795898437501],[126.92480468749997,51.10014648437496],[126.34169921875,52.36201171875001],[125.64902343750012,53.042285156250045],[125.075,53.20366210937496],[124.81230468750002,53.133837890625045],[123.6078125,53.546533203124994],[120.98544921875012,53.28457031250002],[120.09453125000007,52.787207031250034],[120.0675781250001,52.632910156250034],[120.65615234375,52.56665039062503],[120.74980468750007,52.096533203125006],[120.06689453125003,51.60068359375006],[119.16367187500006,50.40600585937503],[119.34628906250012,50.278955078124994],[119.25986328125012,50.06640625000003],[118.4515625,49.84448242187503],[117.8734375,49.51347656250002],[116.6833007812501,49.82377929687499],[116.551171875,49.92031250000002],[116.35117187500012,49.97807617187499],[116.21679687500003,50.00927734375003],[116.13457031250002,50.01079101562499],[115.9259765625001,49.95214843750003],[115.79521484375002,49.90590820312502],[115.71777343750003,49.88061523437503],[115.58798828125006,49.88603515624996],[115.42919921874997,49.89648437499997],[115.36503906250002,49.911767578124966],[115.27451171875006,49.948876953124994],[115.00332031250005,50.138574218749994],[114.74316406249997,50.23369140625002],[114.29707031250004,50.27441406250006],[113.57421874999997,50.00703125000001],[113.44550781250004,49.94160156250001],[113.31904296875004,49.87431640624999],[113.16416015625012,49.79716796874999],[113.09208984375007,49.692529296874994],[113.05556640625,49.61625976562499],[112.91484375000002,49.569238281249994],[112.80644531250007,49.52358398437502],[112.69736328125012,49.50727539062498],[112.49492187500002,49.532324218750034],[112.07968750000006,49.42421875000002],[111.42929687500006,49.342626953125034],[111.3366210937501,49.355859374999966],[111.20419921875012,49.304296875000034],[110.82792968750002,49.16616210937505],[110.70976562500002,49.14296875000002],[110.42783203125006,49.219970703125],[110.32138671875012,49.215869140625045],[110.19990234375004,49.17041015625003],[109.5287109375,49.269873046875034],[109.45371093750012,49.29633789062501],[109.23671875000005,49.334912109374955],[108.61367187500005,49.32280273437499],[108.52246093750003,49.34150390624998],[108.4069335937501,49.39638671875005],[107.96542968750012,49.65351562500004],[107.91660156250012,49.947802734375045],[107.63095703125012,49.98310546875004],[107.3470703125,49.986669921875034],[107.23330078125,49.989404296874994],[107.14306640625003,50.03300781249999],[107.04023437500004,50.086474609375045],[106.94130859375005,50.19667968750002],[106.71113281250004,50.312597656250006],[106.57441406250004,50.32880859375004],[106.36845703125002,50.317578124999955],[106.21787109375006,50.304589843749966],[105.38359375000002,50.47373046874998],[104.07871093750012,50.15424804687498],[103.63291015625006,50.138574218749994],[103.49628906250004,50.16494140625005],[103.42119140625002,50.18706054687502],[103.3043945312501,50.200292968750034],[102.28837890625007,50.58510742187502],[102.31660156250004,50.71845703125001],[102.21503906250004,50.82944335937506],[102.19453125000004,51.05068359375002],[102.15195312500006,51.107519531250034],[102.14238281250007,51.21606445312503],[102.16005859375005,51.260839843750006],[102.1556640625,51.31376953124996],[102.1115234375001,51.353466796874955],[101.97919921875004,51.382226562499966],[101.82119140625,51.421044921874966],[101.57089843750006,51.46718750000005],[101.38125,51.45263671875],[100.53623046875006,51.713476562500034],[100.46894531250004,51.72607421875003],[100.23037109375,51.729833984375006],[100.0345703125,51.73710937499996],[99.92167968750002,51.755517578124994],[99.71923828124997,51.87163085937502],[98.89316406250006,52.11728515625006],[98.64052734375005,51.80117187500005],[98.103125,51.483544921874994],[97.82529296875012,50.985253906249994],[97.953125,50.85517578124998],[98.02978515625003,50.64462890624998],[98.07890625000002,50.60380859375002],[98.14501953124997,50.56855468750001],[98.22050781250007,50.55717773437502],[98.2794921875001,50.53325195312502],[98.25029296875002,50.30244140624998],[98.00390625000003,50.01425781249998],[97.35976562500005,49.741455078125],[97.20859375000006,49.73081054687506],[96.98574218750005,49.88281250000003],[96.31503906250012,49.90112304687503],[96.06552734375006,49.99873046875001],[95.52265625000004,49.911230468750034],[95.11142578125012,49.935449218749994],[94.93027343750006,50.04375],[94.8112304687501,50.04819335937506],[94.71806640625002,50.04326171875002],[94.67548828125004,50.02807617187506],[94.61474609375003,50.02373046874996],[94.56464843750004,50.08793945312499],[94.35468750000004,50.221826171874994],[94.25107421875006,50.55639648437503],[93.103125,50.60390625000002],[92.94130859375005,50.77822265625002],[92.85644531250003,50.78911132812502],[92.77929687500003,50.778662109375006],[92.738671875,50.71093749999997],[92.68134765625004,50.683203125],[92.6266601562501,50.68828124999999],[92.57890625000002,50.725439453125006],[92.42636718750006,50.803076171875006],[92.35478515625002,50.86416015625002],[92.29580078125,50.84980468750004],[92.19238281249997,50.700585937499994],[91.80429687500006,50.693603515625],[91.4464843750001,50.52216796874998],[91.41503906249997,50.46801757812506],[91.34082031249997,50.470068359375034],[91.30058593750002,50.46337890625],[91.2337890625,50.45239257812497],[91.02158203125012,50.41547851562501],[90.83808593750004,50.32373046874997],[90.76074218749997,50.30595703124999],[90.71435546874997,50.25942382812502],[90.65507812500007,50.22236328125001],[90.05371093750003,50.09375],[89.64384765625002,49.90302734374998],[89.65410156250007,49.71748046875001],[89.57919921875006,49.69970703125003],[89.475,49.66054687500005],[89.39560546875006,49.61152343750001],[89.24394531250007,49.62705078125006],[89.20292968750007,49.59570312499997],[89.17998046875002,49.5322265625],[89.10947265625012,49.50136718750002],[89.00839843750006,49.472802734374994],[88.97060546875,49.483740234375006],[88.94541015625012,49.50766601562498],[88.90019531250002,49.53969726562502],[88.86386718750006,49.52763671874996],[88.83164062500012,49.44843749999998],[88.633203125,49.486132812500045],[88.19257812500004,49.451708984375045],[88.13554687500002,49.38149414062502],[88.11572265624997,49.25629882812501],[88.0285156250001,49.219775390625045],[87.98808593750002,49.186914062499994],[87.9347656250001,49.16455078124997],[87.81425781250002,49.162304687499955],[87.7625,49.16582031249996],[87.5158203125001,49.122412109375006],[87.41669921875004,49.07661132812501],[87.32285156250012,49.085791015625006],[86.62646484374997,49.56269531250001],[86.67548828125004,49.77729492187501],[86.1808593750001,49.49931640624996],[85.2326171875001,49.61582031249998],[84.9894531250001,50.061425781249994],[84.32324218749997,50.239160156249966],[83.94511718750007,50.774658203125],[83.35732421875005,50.99458007812504],[82.76083984375012,50.89335937500002],[82.49394531250007,50.72758789062499],[81.46591796875006,50.73984375],[81.38828125000006,50.95649414062501],[81.0714843750001,50.96875],[81.12724609375002,51.19106445312502],[80.73525390625,51.29340820312498],[80.44804687500002,51.18334960937503],[80.42363281250002,50.94628906249997],[79.98623046875,50.774560546874966],[77.85996093750006,53.269189453124994],[76.48476562500005,54.02255859374998],[76.42167968750007,54.151513671874966],[76.65458984375007,54.14526367187503],[76.8373046875,54.4423828125],[75.43720703125004,54.08964843749999],[75.22021484374997,53.89379882812506],[74.45195312500007,53.64726562500002],[74.35156250000003,53.487646484375006],[73.85898437500006,53.61972656249998],[73.40693359375004,53.44755859374999],[73.30566406250003,53.707226562499955],[73.71240234375003,54.04238281250002],[73.22988281250005,53.957812500000045],[72.62226562500004,54.13432617187502],[72.44677734375003,53.94184570312498],[72.18603515625003,54.32563476562501],[72.00449218750006,54.20566406249998],[71.09316406250005,54.21220703124999],[71.18554687500003,54.59931640624998],[70.73808593750007,55.30517578125],[70.18242187500002,55.162451171875034],[68.9772460937501,55.389599609374955],[68.20625,55.16093750000002],[68.15585937500006,54.97670898437505],[65.476953125,54.62329101562497],[65.08837890624997,54.340185546875034],[64.46123046875002,54.38417968750002],[61.92871093750003,53.94648437500004],[61.231054687500006,54.01948242187498],[60.97949218749997,53.62172851562505],[61.53496093750002,53.52329101562506],[61.22890625,53.445898437500006],[61.19921874999997,53.28715820312502],[61.65986328125004,53.22846679687504],[62.08271484375004,53.00541992187499],[61.047460937500006,52.97246093750002],[60.77441406249997,52.67578124999997],[60.99453125000005,52.33686523437504],[60.03027343749997,51.93325195312505],[60.464746093749994,51.651171875000045],[61.55468750000003,51.32460937500005],[61.38945312500002,50.86103515625001],[60.94228515625005,50.69550781250004],[60.42480468749997,50.67915039062498],[60.05859374999997,50.850292968749955],[59.812402343749994,50.58203125],[59.523046875,50.492871093749955],[59.4523437500001,50.62041015625002],[58.88369140625005,50.694433593750006],[58.359179687500074,51.063818359375034],[57.83886718750003,51.091650390625006],[57.44218750000002,50.88886718749998],[57.01171874999997,51.06518554687503],[56.49140625000004,51.01953124999997],[55.68623046875004,50.582861328125006],[54.64160156250003,51.011572265625034],[54.555273437500006,50.535791015624994],[54.139746093750006,51.04077148437503],[53.33808593750004,51.48237304687504],[52.57119140625005,51.481640624999955],[52.21914062499999,51.709375],[51.344531250000074,51.47534179687503],[51.16347656250005,51.6474609375],[50.79394531249997,51.729199218749955],[50.246875,51.28950195312498],[49.49804687500003,51.08359375000006],[49.32343750000004,50.851708984374966],[48.625097656250006,50.61269531250005],[48.7589843750001,49.92832031250006],[48.33496093750003,49.858251953125006],[47.7057617187501,50.37797851562502],[47.42919921874997,50.35795898437502],[46.889550781249994,49.69697265625001],[46.80205078125002,49.36708984375002],[47.031347656250006,49.150292968749994],[46.70263671875003,48.80556640625002],[46.660937500000074,48.41225585937502],[47.06464843750004,48.23247070312499],[47.292382812499994,47.74091796875004],[47.48193359374997,47.80390624999998],[48.16699218750003,47.70878906249996],[48.959375,46.77460937499998],[48.558398437500074,46.75712890624999],[48.54121093750004,46.60561523437502],[49.232226562500074,46.33715820312503],[48.683691406250006,46.08618164062497],[48.72958984375006,45.896826171875034],[48.4870117187501,45.93486328124996],[47.63330078124997,45.58403320312499],[47.46328125,45.67968750000003],[47.5294921875001,45.530224609374955],[47.3512695312501,45.21772460937498],[46.7072265625001,44.503320312499994],[47.30703125000005,44.103125],[47.462792968749994,43.55502929687498],[47.64648437500003,43.88461914062498],[47.463183593750074,43.03505859375002],[48.572851562500006,41.84448242187503],[47.79101562499997,41.19926757812502],[47.31767578125002,41.28242187500001],[46.74931640625002,41.812597656250006],[46.42988281250004,41.890966796875006],[46.21269531250002,41.989892578124994],[45.63857421875005,42.20507812500003],[45.63427734374997,42.234716796875034],[45.72753906249997,42.47504882812498],[45.70527343750004,42.49809570312496],[45.56289062499999,42.53574218749998],[45.34375,42.52978515625003],[45.16025390625006,42.675],[45.07158203125002,42.69414062500002],[44.94335937499997,42.73027343750002],[44.870996093749994,42.75639648437499],[44.850488281249994,42.746826171875],[44.77109375000006,42.61679687499998],[44.69179687499999,42.709619140624966],[44.64433593750002,42.734716796875034],[44.50585937500003,42.748632812500006],[44.329492187499994,42.703515624999966],[44.10273437500004,42.616357421874994],[44.004687500000074,42.59560546875002],[43.95742187500005,42.56655273437505],[43.825976562500074,42.571533203125],[43.759863281250006,42.593847656250006],[43.738378906250006,42.61699218750002],[43.74990234375005,42.65751953125002],[43.79541015624997,42.702978515625034],[43.78261718750005,42.747021484374955],[43.62304687500003,42.80771484374998],[43.5578125000001,42.844482421875],[43.089160156250074,42.9890625],[43.00019531250004,43.04965820312506],[42.991601562499994,43.09150390624998],[42.76064453125005,43.169580078124966],[41.58056640624997,43.21923828124997],[41.460742187500074,43.276318359374955],[41.35820312500002,43.33339843750005],[41.08310546875006,43.37446289062498],[40.94199218750006,43.41806640624998],[40.801660156249994,43.479931640624955],[40.64804687500006,43.53388671875004],[40.084570312500006,43.553125],[40.02373046875002,43.48486328125],[39.873632812500006,43.47280273437502],[38.71728515624997,44.28808593750003],[38.18125,44.41967773437503],[37.851464843749994,44.698828125000034],[37.49511718750003,44.69526367187504],[37.20478515625004,44.97197265624999],[36.62763671875004,45.15131835937504],[36.941210937500074,45.289697265624994],[36.72041015625004,45.371875],[36.8659179687501,45.42705078124999],[37.21357421875004,45.272314453125006],[37.6471679687501,45.37719726562506],[37.61240234375006,45.56469726562506],[37.93310546875003,46.001708984375],[38.014257812500006,46.047753906249966],[38.07958984375003,45.93481445312506],[38.18359374999997,46.09482421875006],[38.49228515625006,46.09052734374998],[37.913867187500074,46.40649414062503],[37.766503906249994,46.63613281250002],[38.50097656249997,46.663671875000034],[38.43867187500004,46.813085937500006],[39.29345703125003,47.105761718750045],[39.19570312499999,47.268847656250045],[39.023730468750074,47.27221679687503],[38.928320312500006,47.175683593749994],[38.55244140625004,47.15034179687498],[38.7619140625001,47.261621093749994],[38.21435546875003,47.091455078124966],[38.36884765625004,47.609960937500006],[38.90029296875005,47.85512695312502],[39.77871093750005,47.88754882812506],[39.95791015625005,48.268896484375034],[39.8356445312501,48.54277343749996],[39.6447265625001,48.591210937499966],[39.792871093749994,48.807714843750034],[40.00361328125004,48.82207031250002],[39.68652343749997,49.007910156250034],[40.10878906250005,49.251562500000034],[40.080664062500006,49.576855468749955],[39.780566406250074,49.57202148437503],[39.17480468750003,49.85595703124997],[38.91835937499999,49.82470703125],[38.258593750000074,50.05234375],[38.046875,49.92001953125006],[37.42285156249997,50.411474609375006],[36.619433593750074,50.209228515625],[36.1164062500001,50.408544921875006],[35.59111328125002,50.36875],[35.31191406250005,51.043896484374955],[35.0640625,51.203417968750045],[34.21386718750003,51.25537109375006],[34.12109375000003,51.67915039062498],[34.397851562499994,51.780419921874994],[33.735253906249994,52.344775390625045],[32.435449218749994,52.307226562500034],[32.12226562500004,52.05058593749996],[31.763378906250097,52.10107421875003],[31.758593750000017,52.125830078125034],[31.690625,52.22065429687498],[31.64990234374997,52.26220703125],[31.60156250000003,52.284814453124994],[31.57734375000004,52.31230468749999],[31.585546875,52.532470703125],[31.56484375,52.75922851562501],[31.53515624999997,52.798242187499966],[31.442773437499994,52.86181640625003],[31.35302734374997,52.93344726562498],[31.295117187500097,52.98979492187499],[31.25878906249997,53.01669921875006],[31.364550781250017,53.13896484375002],[31.388378906250097,53.18481445312503],[31.41787109375005,53.196044921875],[31.849707031250006,53.106201171875],[32.14199218750005,53.091162109375034],[32.46933593750006,53.270312500000045],[32.578027343749994,53.312402343749994],[32.644433593749994,53.32890624999999],[32.70429687500004,53.33632812499999],[32.45097656250002,53.6533203125],[32.20039062500004,53.78125],[31.99218750000003,53.796875],[31.82080078124997,53.79194335937498],[31.754199218750017,53.81044921875002],[31.825292968750006,53.93500976562501],[31.837792968749994,54.00078124999999],[31.825976562500074,54.030712890624955],[31.79199218749997,54.05590820312503],[31.62841796874997,54.111181640625006],[31.403613281250017,54.195947265624966],[31.299121093750017,54.29169921875001],[31.184765625000097,54.452978515625006],[31.074804687500063,54.491796875],[31.154882812500063,54.610937500000034],[31.152148437500017,54.625341796875034],[31.12128906250004,54.64848632812496],[30.984179687500074,54.695898437500034],[30.79882812499997,54.78325195312499],[30.79101562499997,54.806005859375006],[30.804492187500074,54.8609375],[30.829882812500017,54.91499023437498],[30.977734375000097,55.05048828124998],[30.977734375000097,55.08779296875002],[30.958886718749994,55.13759765625005],[30.87744140625003,55.223437500000045],[30.81445312499997,55.27871093750002],[30.81054687499997,55.306982421875006],[30.82099609375004,55.330273437499955],[30.900585937500097,55.397412109374955],[30.906835937500063,55.57001953125004],[30.625585937500006,55.666259765625],[30.23359375000004,55.84521484375006],[30.04267578125004,55.83642578125003],[29.93701171874997,55.84526367187499],[29.881640625000074,55.83232421875002],[29.82392578125004,55.79511718749998],[29.74414062499997,55.770410156249994],[29.630078125000097,55.75117187499998],[29.482226562500074,55.6845703125],[29.412988281249994,55.72485351562506],[29.35341796875005,55.784375],[29.375,55.938720703125],[28.284277343750006,56.055908203125],[28.14794921875003,56.142919921875034],[28.202050781250023,56.260400390624994],[28.191699218750045,56.31557617187505],[28.169238281250017,56.386865234374994],[28.11083984375,56.51069335937501],[28.103125,56.545703125000045],[27.89208984375003,56.741064453125034],[27.88154296875001,56.82416992187501],[27.848632812500057,56.85341796875002],[27.806054687499994,56.86708984375005],[27.639453125000074,56.84565429687504],[27.83027343750004,57.19448242187505],[27.83828125000008,57.247705078124966],[27.82861328124997,57.293310546875006],[27.796875,57.316943359375045],[27.538671875000063,57.429785156250034],[27.51113281250005,57.508154296875006],[27.469726562500057,57.524023437500034],[27.35195312500005,57.528125],[27.4,57.66679687499999],[27.542089843750063,57.799414062500006],[27.778515625000068,57.87070312500006],[27.502441406250057,58.221337890624994],[27.434179687500006,58.787255859374994],[28.15107421875004,59.374414062499966],[28.0125,59.484277343749966],[28.05800781250008,59.781542968750045],[28.334570312500034,59.69252929687502],[28.518164062500034,59.849560546874955],[28.947265625000057,59.828759765624994],[29.147265625000045,59.999755859375],[30.12255859374997,59.873583984375074],[30.172656250000017,59.957128906250034],[29.72119140624997,60.19531249999997],[29.069140625000017,60.19145507812499],[28.643164062500006,60.375292968750045],[28.512792968750006,60.67729492187502],[27.797656250000074,60.53613281250003],[29.69013671875004,61.54609375000001],[31.18671875000004,62.48139648437504],[31.533984375000017,62.885400390624994],[31.180859375000097,63.208300781250074],[29.991503906250074,63.73515625000002],[30.50390625000003,64.02060546875],[30.513769531250006,64.2],[30.04189453125005,64.44335937499997],[30.072851562500063,64.76503906250005],[29.60419921875004,64.968408203125],[29.826953125000017,65.14506835937502],[29.608007812500006,65.248681640625],[29.715917968750063,65.62456054687502],[30.102734375000097,65.72626953125004],[29.066210937500045,66.89174804687497],[29.988085937500017,67.66826171874999],[29.343847656250006,68.06186523437506],[28.685156250000034,68.189794921875],[28.470703125000057,68.48837890625],[28.77285156250005,68.84003906249995],[28.414062500000057,68.90415039062506],[28.96582031250003,69.02197265625],[29.38828125,69.29814453125005],[30.08730468750005,69.43286132812503],[30.18017578124997,69.63583984375],[30.860742187499994,69.53842773437503],[30.869726562500006,69.78344726562506],[31.546972656250063,69.696923828125],[31.997949218749994,69.80991210937503],[31.98457031250004,69.95366210937499],[33.00781249999997,69.72211914062498],[32.91503906249997,69.60170898437497],[32.17675781250003,69.67402343749995],[32.37773437500002,69.47910156250003],[32.99980468750002,69.4701171875],[32.97890625000005,69.367333984375],[33.45429687500004,69.42817382812495],[33.14121093750006,69.068701171875],[33.684375,69.31025390625001],[35.85791015625003,69.19174804687503],[37.73056640625006,68.69213867187503],[38.43017578125003,68.35561523437505],[39.568945312500006,68.07172851562501],[39.82333984375006,68.05859375],[39.80927734375004,68.15083007812498],[40.38066406250002,67.831884765625],[40.96640625000006,67.71347656250003],[41.358789062499994,67.20966796874998],[41.18896484375003,66.82617187500003],[40.10332031250002,66.29995117187502],[38.65390625000006,66.06904296874995],[35.51347656250002,66.39580078125002],[34.82460937499999,66.61113281249999],[34.48261718750004,66.55034179687505],[34.4515625,66.651220703125],[33.15019531250002,66.84394531250001],[32.93046875000002,67.08681640625002],[31.895312500000074,67.16142578125002],[33.65595703125004,66.44262695312506],[33.36054687500004,66.32954101562501],[34.112695312499994,66.225244140625],[34.69179687500005,65.95185546874998],[34.77695312500006,65.76826171874998],[34.40644531250004,65.39575195312503],[35.03535156250004,64.44023437500005],[35.802050781250074,64.3353515625],[36.3649414062501,64.00283203125002],[37.44218750000002,63.813378906249966],[37.9679687500001,63.949121093749994],[38.0622070312501,64.09101562499995],[37.953710937500006,64.32011718749999],[37.183691406250006,64.40849609375007],[36.6242187500001,64.75053710937502],[36.534570312499994,64.93862304687497],[36.88281249999997,65.17236328124997],[39.7580078125001,64.57705078125002],[40.05781250000004,64.77075195312497],[40.44492187500006,64.7787109375],[39.7980468750001,65.349853515625],[39.816503906250006,65.59794921874999],[41.4757812500001,66.12343750000002],[42.21054687500006,66.51967773437502],[43.23320312500002,66.41552734375003],[43.653125,66.2509765625],[43.54189453125005,66.12338867187503],[43.84375,66.14238281249999],[44.10439453125005,66.00859374999999],[44.42929687500006,66.93774414062503],[43.7824218750001,67.25449218749998],[44.20468750000006,68.25375976562498],[43.33320312500004,68.67338867187502],[44.04804687500004,68.54882812499997],[45.891992187499994,68.47968750000001],[46.69042968750003,67.84882812500001],[45.52871093750005,67.75756835937497],[44.90214843750002,67.41313476562505],[45.56220703125004,67.18559570312507],[45.88535156250006,66.89106445312501],[46.4923828125001,66.80019531249997],[47.65585937500006,66.97592773437498],[47.87470703125004,67.58417968749998],[48.83320312500004,67.681494140625],[48.75429687500005,67.89594726562501],[49.15527343750003,67.87041015625005],[51.994726562500006,68.53876953124995],[52.3966796875001,68.35170898437505],[52.72265624999997,68.484033203125],[52.34404296875002,68.60815429687497],[53.80195312500004,68.99589843750002],[54.49121093750003,68.992333984375],[53.797656250000074,68.90747070312503],[53.9308593750001,68.43554687499997],[53.260546875000074,68.26748046875002],[54.476171875,68.29414062499995],[54.86132812500003,68.20185546874998],[55.418066406250006,68.56782226562501],[56.04365234375004,68.64887695312501],[57.126855468749994,68.55400390625005],[58.17304687500004,68.88974609375006],[59.0573242187501,69.00605468750004],[59.37050781250005,68.73837890625003],[59.09902343750005,68.4443359375],[59.725683593750006,68.35161132812502],[59.89599609374997,68.70634765624999],[60.489160156249994,68.72895507812498],[60.93359374999997,68.98676757812501],[60.17060546875004,69.59091796875],[60.90908203125005,69.84711914062495],[64.19042968750003,69.53466796875],[64.89628906250002,69.247802734375],[67.00244140625003,68.87358398437505],[68.37119140625006,68.31425781250005],[69.14052734375005,68.95063476562501],[68.54277343750002,68.96708984374999],[68.00585937499997,69.48002929687505],[67.62412109375,69.58442382812501],[67.06445312500003,69.69370117187498],[66.89667968750004,69.55380859374998],[67.28476562500006,70.73872070312498],[67.14335937500002,70.83754882812502],[66.70224609375006,70.81850585937497],[66.63964843749997,71.08139648437498],[68.2692382812501,71.68281250000001],[69.61181640625003,72.98193359375],[69.73828124999997,72.88496093749998],[71.5001953125001,72.91367187500003],[72.812109375,72.69140624999997],[72.57412109375,72.01254882812506],[71.86728515625,71.457373046875],[72.70449218750005,70.96323242187498],[72.5767578125,68.96870117187498],[73.59169921875005,68.48188476562501],[73.13945312500002,68.18134765624998],[73.06679687500005,67.766943359375],[71.84746093750002,67.00761718750005],[71.36523437500003,66.96152343749998],[71.53955078125003,66.68310546875],[70.72490234375007,66.51943359374997],[70.38281249999997,66.60249023437501],[70.69072265625002,66.74531249999998],[70.2833984375001,66.68579101562503],[69.8771484375001,66.84545898437506],[69.21777343749997,66.82861328125],[69.01347656250002,66.78833007812503],[69.19433593749997,66.57866210937505],[70.33945312500006,66.34238281250006],[71.35800781250006,66.35942382812505],[71.91699218749997,66.24672851562502],[72.32158203125002,66.33212890625],[72.4173828125,66.56079101562506],[73.79208984375,66.99531250000001],[74.07451171875007,67.41411132812499],[74.76953124999997,67.76635742187497],[74.39140625000007,68.42060546874995],[74.57958984375003,68.751220703125],[76.10751953125006,68.975732421875],[76.45917968750004,68.97827148437497],[77.2384765625001,68.46958007812498],[77.17441406250012,67.77851562499998],[77.77158203125006,67.57026367187501],[78.92246093750006,67.58911132812503],[77.58828125000005,67.75190429687498],[77.66484375000002,68.19038085937495],[77.99511718749997,68.25947265624998],[77.65068359375007,68.90302734375001],[76.00097656249997,69.23505859374998],[75.42001953125,69.23862304687498],[74.81484375,69.09057617187503],[73.83603515625006,69.143212890625],[73.578125,69.80297851562503],[74.34335937500006,70.57871093749998],[73.08623046875007,71.44492187500006],[73.67177734375,71.84506835937503],[74.99218749999997,72.14482421874999],[74.78681640625004,72.811865234375],[75.15244140625,72.85273437499998],[75.74140625000004,72.29624023437503],[75.273828125,71.95893554687495],[75.33203125000003,71.34174804687498],[76.92900390625002,71.12788085937504],[77.58964843750007,71.16791992187501],[78.32060546875002,70.93041992187503],[78.94218750000002,70.93378906250001],[79.08388671875,71.00200195312505],[78.58769531250007,70.993896484375],[78.21259765625004,71.26630859374998],[76.43339843750002,71.55249023437503],[76.03242187500004,71.91040039062503],[76.87138671875002,72.03300781250005],[77.77753906250004,71.83642578125006],[78.23242187500003,71.95229492187502],[78.01640625000007,72.092041015625],[77.49287109375004,72.07172851562504],[77.47158203125,72.19213867187506],[78.22539062500007,72.37744140625006],[79.4220703125001,72.38076171875002],[80.7625,72.08916015625002],[81.66162109374997,71.71596679687502],[82.75781250000003,71.76411132812498],[83.23359375000004,71.66816406249995],[82.32285156250006,71.26000976562503],[82.16318359375012,70.59814453125003],[82.22119140625003,70.39570312499998],[82.86914062499997,70.95483398437503],[83.03017578125,70.58051757812498],[82.6823242187501,70.21772460937498],[83.0807617187501,70.09301757812497],[83.07382812500012,70.276708984375],[83.73593750000006,70.54648437499998],[83.15126953125005,71.10361328124998],[83.534375,71.68393554687498],[83.20029296875012,71.87470703125004],[82.64541015625005,71.92524414062504],[82.09365234375,72.26542968750005],[80.82705078125005,72.48828124999997],[80.84160156250007,72.94916992187498],[80.4245117187501,73.23115234374998],[80.5832031250001,73.56845703125003],[85.20058593750005,73.72153320312506],[86.89296875,73.88710937500002],[85.79257812500012,73.438330078125],[86.67705078125002,73.10678710937503],[85.93896484374997,73.45649414062495],[87.12011718750003,73.61503906250002],[87.57119140625,73.81074218750001],[86.57109375000007,74.24375],[86.0013671875,74.316015625],[86.39580078125007,74.45009765624997],[86.89794921874997,74.32534179687497],[87.22968750000004,74.3638671875],[85.79101562499997,74.6451171875],[86.20126953125006,74.81621093750005],[86.65146484375012,74.68242187500005],[87.04179687500007,74.77885742187499],[87.46757812500002,75.01323242187505],[86.93906250000006,75.06811523437503],[87.00595703125012,75.16982421874997],[87.67138671874997,75.12958984375004],[90.18496093750005,75.59106445312497],[94.07519531249997,75.91289062499999],[92.89042968750002,75.90996093750002],[93.25927734375003,76.09877929687502],[95.57871093750012,76.13730468749998],[96.07548828125007,76.08198242187498],[95.65332031250003,75.89218750000003],[96.50859375000002,76.00556640624995],[96.49707031249997,75.89121093750003],[98.66201171875005,76.24267578125003],[99.77041015625,76.02875976562498],[99.5407226562501,75.79858398437497],[99.85136718750007,75.93027343749998],[99.8253906250001,76.13593749999995],[98.80566406250003,76.48066406250004],[100.84375,76.52519531250005],[101.59775390625006,76.43920898437503],[100.92802734375002,76.55673828124998],[100.98994140625004,76.99047851562497],[102.61015625000007,77.508544921875],[104.01455078125,77.73041992187501],[106.05957031249997,77.39052734375002],[104.20244140625002,77.101806640625],[106.9416015625001,77.034375],[107.42978515625006,76.92656250000002],[106.41357421874997,76.51225585937499],[107.72216796875003,76.52231445312498],[108.18164062500003,76.73784179687502],[111.39248046875,76.686669921875],[112.09394531250004,76.48032226562506],[111.94267578125002,76.38046875000003],[112.61953125,76.38354492187506],[112.65625,76.05356445312498],[113.2726562500001,76.25166015625001],[113.5638671875,75.89165039062502],[113.85722656250007,75.92128906250002],[113.56757812500004,75.56840820312499],[112.45302734375,75.83017578125003],[112.95566406250006,75.571923828125],[113.24296875000007,75.61142578125003],[113.72617187500012,75.45063476562498],[112.92490234375012,75.01503906249997],[109.84033203124997,74.32197265624998],[109.8102539062501,74.16918945312503],[108.19951171875002,73.69409179687497],[107.27109375000006,73.62104492187501],[106.67939453125004,73.3306640625],[106.1886718750001,73.3080078125],[105.14394531250005,72.77705078125001],[105.7082031250001,72.836669921875],[106.47792968750005,73.13940429687503],[107.750390625,73.17314453125007],[109.33105468749997,73.48745117187497],[109.85527343750002,73.47246093750002],[110.86816406249997,73.73071289062497],[109.70673828125004,73.74375],[110.2614257812501,74.01743164062503],[111.05625,73.93935546875002],[111.13085937500003,74.05283203125003],[111.55058593750007,74.02851562499998],[111.22812500000012,73.96855468750002],[111.40039062500003,73.827734375],[112.14726562500007,73.70893554687498],[112.79541015625003,73.74609375],[112.83593750000003,73.96206054687502],[113.03281250000006,73.91386718750007],[113.4162109375001,73.647607421875],[113.15693359375004,73.45957031249998],[113.49091796875004,73.34609375000002],[113.12783203125,72.8306640625],[113.66455078124997,72.63452148437503],[113.2155273437501,72.80585937500001],[113.88623046875003,73.34580078124998],[113.51035156250012,73.50498046874998],[115.33769531250007,73.70258789062501],[118.87089843750007,73.53789062500002],[118.45703124999997,73.46440429687507],[118.43027343750012,73.24653320312501],[119.750390625,72.97910156250006],[122.26015625,72.88056640624995],[122.75195312500003,72.906494140625],[122.61523437499997,73.02792968750006],[123.1603515625001,72.95488281250002],[123.62226562500004,73.19326171875],[123.49111328125005,73.666357421875],[124.54121093750004,73.75126953125007],[125.59853515625005,73.447412109375],[126.25449218750012,73.548193359375],[126.55253906250007,73.33491210937498],[127.03134765625006,73.54746093750003],[127.74033203125012,73.48154296875],[129.10058593750003,73.11235351562502],[128.5990234375,72.895166015625],[129.01728515625004,72.8724609375],[129.250390625,72.70517578125003],[128.41826171875002,72.53515625000003],[129.28134765625006,72.43769531249998],[129.41064453124997,72.16630859375002],[128.93496093750005,72.07949218750002],[127.8034179687501,72.43403320312504],[127.84140625000012,72.308251953125],[128.91142578125002,71.75532226562495],[129.21025390625007,71.91694335937501],[129.46083984375,71.73930664062499],[128.84326171875003,71.6634765625],[129.76191406250004,71.11953125000002],[130.53710937500003,70.89252929687495],[130.75712890625002,70.96235351562498],[131.02158203125006,70.74609374999997],[132.0353515625001,71.24404296875],[132.65390625000006,71.92597656250001],[133.6888671875,71.434228515625],[134.70273437500012,71.38681640625003],[135.55917968750006,71.6103515625],[136.09033203125003,71.61958007812501],[137.9396484375001,71.1333984375],[137.84404296875007,71.22680664062503],[138.31406250000006,71.32553710937498],[137.918359375,71.38408203124999],[138.23417968750007,71.596337890625],[138.78017578125,71.62900390624998],[139.209375,71.44477539062501],[139.98417968750007,71.49150390625005],[139.72294921875002,71.88496093749998],[139.35927734375005,71.95136718750001],[140.18769531250004,72.19130859374997],[139.17636718750006,72.16347656249997],[139.14082031250004,72.32973632812502],[139.60117187500012,72.49609374999997],[141.07929687500004,72.5869140625],[140.80820312500006,72.89096679687503],[142.06142578125005,72.72080078125],[146.25292968749997,72.442236328125],[146.234765625,72.34970703125],[144.77636718749997,72.38227539062495],[144.16923828125002,72.25878906250003],[144.29492187499997,72.19262695312497],[146.83183593750007,72.29541015625003],[146.11328125000003,71.94497070312497],[146.23027343750007,72.1375],[145.75859375000007,72.22587890624999],[145.75673828125005,71.94130859375002],[145.06396484374997,71.92607421875002],[145.18857421875012,71.69580078125],[146.07324218749997,71.80834960937503],[147.26181640625006,72.327880859375],[149.50156250000012,72.16430664062497],[150.01689453125002,71.89565429687505],[149.04873046875005,71.79575195312503],[148.9681640625,71.69047851562499],[150.59980468750004,71.5201171875],[150.09765624999997,71.22656249999997],[150.96777343749997,71.38046874999998],[151.58242187500005,71.28696289062503],[152.09277343749997,71.02329101562503],[151.76201171875002,70.98247070312499],[152.50878906250003,70.83447265625003],[156.68457031250003,71.09375],[158.03701171875005,71.03925781250001],[159.35068359375006,70.79072265625001],[160.00644531250006,70.30966796875006],[159.72939453125005,69.87021484375006],[160.91074218750012,69.60634765625002],[161.03554687500005,69.09819335937507],[161.30986328125007,68.98227539062498],[160.85605468750006,68.53833007812506],[161.565625,68.90517578125],[161.53691406250002,69.379541015625],[162.16601562499997,69.61157226562503],[163.20136718750004,69.71474609375],[166.82031250000003,69.49956054687505],[167.8568359375,69.72822265624998],[168.30302734375002,69.27148437500003],[169.31064453125006,69.07954101562498],[169.60986328124997,68.78603515624997],[170.53759765624997,68.82539062500001],[170.99541015625002,69.04531250000005],[170.58222656250004,69.58334960937506],[170.16093750000007,69.62656249999998],[170.48681640625003,70.107568359375],[173.27744140625006,69.823828125],[173.43867187500004,69.94682617187502],[175.92148437500012,69.89531250000002],[179.27265624999998,69.25966796875002],[180,68.98344726562505],[180,65.06723632812498],[178.51953125000003,64.60297851562498],[177.7486328125,64.71704101562503],[176.88085937499997,65.08193359375002],[176.34101562500015,65.04731445312501],[177.03730468750004,64.99965820312497],[177.22285156250004,64.861669921875],[177.06875,64.78666992187502],[176.06113281250012,64.96088867187498],[174.54882812500009,64.68388671875005],[176.0565429687501,64.90473632812498],[176.35097656250005,64.70512695312502],[176.14091796875007,64.58583984375005],[177.42744140625015,64.76337890624998],[177.43291015625002,64.44448242187502],[177.6875,64.30473632812507],[178.04472656250013,64.21958007812503],[178.22949218749991,64.36440429687497],[178.38144531250018,64.26088867187502],[178.73144531250003,63.667089843750006],[178.44042968750009,63.605566406250006],[178.74404296874994,63.39477539062503],[178.79296874999997,63.54033203125002],[179.38857421875,63.14721679687497],[179.25957031250002,63.00830078125],[179.5705078125001,62.6875],[179.12070312500012,62.32036132812499],[177.292578125,62.59902343750002],[177.33896484375006,62.781347656250034],[177.02353515625012,62.777246093749994],[177.15947265625007,62.56098632812498],[174.51435546875015,61.823632812499966],[173.6234375,61.716064453125],[173.13183593749997,61.40664062500002],[172.85654296875006,61.469189453124955],[172.90800781250002,61.311621093750006],[172.39609375000006,61.16738281250002],[172.39277343750004,61.061767578125],[170.60820312500007,60.434912109375034],[170.3509765625,59.965527343749955],[169.9826171875001,60.067089843749955],[169.2267578125001,60.59594726562497],[168.1375,60.57392578125001],[167.22675781250004,60.406298828125045],[166.27304687500012,59.85625],[166.13603515625007,59.979345703125034],[166.35214843750006,60.48481445312498],[165.08457031250006,60.09858398437498],[164.95371093750006,59.843603515625006],[164.52529296875,60.06127929687503],[164.11328125000003,59.89755859374998],[164.13505859375002,59.984375],[163.74384765625004,60.02802734374998],[163.36484375000012,59.78144531250004],[163.27285156250005,59.302587890625006],[162.14160156249997,58.44741210937502],[161.96005859375012,58.07690429687506],[162.39140625000002,57.717236328124955],[162.65429687499997,57.94824218750003],[163.22578125000004,57.790380859375034],[162.77929687500003,57.35761718749998],[162.79111328125012,56.875390624999966],[162.92207031250004,56.72265625000003],[163.2565429687501,56.68803710937499],[163.33554687500012,56.232519531250006],[163.04736328125003,56.044677734375],[162.84033203125003,56.065625],[162.628125,56.232275390625034],[163.03837890625002,56.521875],[162.67148437500006,56.49008789062498],[162.52822265625005,56.260693359374955],[162.08496093749997,56.08964843750002],[161.72392578125002,55.49614257812499],[162.10556640625006,54.75214843750004],[161.62480468750002,54.51625976562502],[160.77265625000004,54.54135742187498],[160.0744140625001,54.18916015625001],[159.84375,53.78364257812498],[160.02509765625004,53.129589843749955],[159.58593750000003,53.237695312499966],[158.74541015625002,52.90893554687506],[158.47207031250005,53.032373046874966],[158.6087890625,52.873632812500034],[158.49316406249997,52.383154296875034],[158.10351562500003,51.80961914062499],[156.84746093750002,51.006591796875],[156.74775390625004,50.969287109375045],[156.52119140625004,51.38027343750002],[156.36474609374997,52.509375],[156.11035156250003,52.86616210937504],[155.62031250000004,54.86455078125002],[155.5548828125001,55.348486328125034],[155.98251953125012,56.69521484375002],[156.8488281250001,57.290185546874994],[156.97675781250004,57.46630859375],[156.82988281250007,57.77963867187498],[157.4503906250001,57.79926757812498],[157.66640625000005,58.01977539062506],[158.27519531250007,58.00898437499998],[159.21064453125004,58.519433593749966],[159.8473632812501,59.127148437499955],[161.75351562500012,60.15229492187501],[162.06816406250002,60.466406250000034],[163.70996093749997,60.916796875000045],[163.55351562500002,61.02563476562503],[164.00546875000006,61.34379882812499],[163.80439453125004,61.46137695312498],[164.20722656250004,62.29223632812506],[164.59833984375004,62.470556640625034],[165.20810546875012,62.37397460937501],[165.41738281250005,62.447070312500045],[164.418359375,62.704638671875045],[163.33173828125004,62.550927734374994],[163.01767578125006,61.89106445312504],[163.25781249999997,61.69946289062497],[163.08525390625002,61.570556640625],[162.85595703125003,61.705029296874955],[162.39257812500003,61.662109375],[160.76660156249997,60.753320312499966],[160.17363281250002,60.638427734375],[160.37890625000003,61.02548828124998],[159.79042968750005,60.956640625],[160.309375,61.894384765625006],[159.55234375000012,61.71948242187497],[159.18925781250007,61.92939453125001],[158.07011718750002,61.75361328125001],[157.46933593750012,61.798925781250006],[157.0841796875001,61.67568359375002],[155.71611328125002,60.682373046875],[154.97080078125012,60.376660156249955],[154.29306640625006,59.833349609375034],[154.1498046875,59.52851562500001],[154.97128906250006,59.44960937500002],[155.16044921875002,59.19013671875001],[154.45800781250003,59.21655273437497],[154.01093750000004,59.075537109375006],[153.69521484375005,59.22475585937505],[153.36113281250002,59.214794921874955],[152.81787109375003,58.92626953124997],[152.31962890625002,59.03076171875003],[152.08789062499997,58.910449218750045],[151.32675781250006,58.875097656250034],[151.12109375000003,59.08251953125003],[152.26064453125,59.22358398437498],[151.34824218750012,59.561132812500006],[150.4835937500001,59.494384765625],[150.66728515625002,59.55634765625001],[149.64257812499997,59.770410156249994],[149.06523437500002,59.63051757812502],[149.20498046875,59.488183593749966],[148.79707031250004,59.532324218750006],[148.74414062499997,59.37353515624997],[148.96464843750007,59.36914062499997],[148.72666015625006,59.257910156250034],[148.25742187500006,59.414208984374994],[147.51445312500002,59.2685546875],[146.53720703125006,59.45698242187501],[146.0495117187501,59.17055664062502],[145.55458984375,59.413525390624955],[143.19218750000002,59.3701171875],[142.58027343750004,59.240136718749966],[140.79023437500004,58.30346679687503],[140.446875,57.81367187499998],[138.66210937500003,56.96552734375004],[137.69150390625006,56.13935546875004],[135.2625,54.94331054687498],[135.25771484375005,54.73149414062499],[135.85156249999997,54.583935546874955],[136.797265625,54.62099609375005],[136.71884765625006,53.804101562499994],[137.15537109375012,53.82167968750002],[137.14160156249997,54.182226562500006],[137.66601562500003,54.283300781250006],[137.3392578125,54.10053710937498],[137.83476562500002,53.94672851562498],[137.25371093750007,53.546142578125],[137.95048828125007,53.60356445312499],[138.52792968750012,53.959863281249994],[138.56914062500002,53.818798828124955],[138.24970703125004,53.524023437500034],[138.45068359375003,53.53701171875002],[138.69941406250004,53.869726562500034],[138.65722656249997,54.29833984375003],[139.31972656250005,54.19296874999998],[139.707421875,54.27714843749999],[140.68759765625012,53.59643554687503],[141.3737304687501,53.29277343749999],[141.18125,53.01528320312505],[140.83964843750002,53.087890625],[141.25585937499997,52.84013671874996],[141.13242187500006,52.435693359374994],[141.48525390625,52.17851562500002],[141.36689453125004,51.92065429687506],[140.93261718750003,51.61992187499999],[140.5208984375,50.80019531250005],[140.62451171874997,50.08242187500002],[140.46269531250002,49.911474609375006],[140.51718750000012,49.59614257812498],[140.17060546875004,48.52368164062497],[138.58681640625005,47.057226562500006],[138.33691406250003,46.543408203124955],[137.68544921875,45.81835937500003],[136.14228515625004,44.489111328125034],[135.87460937500012,44.37353515625003],[135.1310546875001,43.52573242187506],[134.01044921875004,42.94746093750001],[133.15996093750007,42.69697265624998],[132.70898437500003,42.875830078125006],[132.30380859375006,42.88330078125],[132.30957031249997,43.31352539062499],[131.8666015625,43.09516601562501],[131.93896484374997,43.30195312500004],[131.15830078125012,42.62602539062499],[130.709375,42.656396484374966],[130.8341796875001,42.52294921875006],[130.68730468750007,42.30253906249999]]],[[[107.69550781250004,78.13090820312505],[107.48164062500004,78.057763671875],[106.41552734375003,78.13984375000001],[107.69550781250004,78.13090820312505]]],[[[102.88476562499997,79.25395507812505],[102.4123046875001,78.83544921874997],[103.80078124999997,79.14926757812503],[104.45205078125005,78.880029296875],[105.14599609375003,78.81884765625006],[105.31259765625012,78.49990234375],[104.74179687500012,78.33974609374997],[102.79667968750007,78.18789062500002],[101.20410156249997,78.19194335937505],[99.50029296875002,77.97607421875003],[101.590625,79.350439453125],[102.25126953125002,79.25605468749995],[102.40488281250006,79.43320312499998],[102.88476562499997,79.25395507812505]]],[[[76.24892578125005,79.65107421874995],[77.58896484375012,79.50190429687504],[76.64951171875012,79.493408203125],[76.24892578125005,79.65107421874995]]],[[[92.68349609375005,79.685205078125],[91.37626953125007,79.83549804687505],[91.22929687500007,80.03071289062504],[93.803125,79.904541015625],[92.68349609375005,79.685205078125]]],[[[51.409277343750006,79.94423828125],[50.09140625,79.98056640625003],[50.93632812500002,80.09423828125],[51.409277343750006,79.94423828125]]],[[[59.68886718750005,79.95581054687506],[58.91923828125002,79.98461914062506],[59.54453125000006,80.11884765624995],[59.68886718750005,79.95581054687506]]],[[[97.67451171875004,80.15825195312499],[97.65166015625002,79.76064453125],[98.59648437500002,80.05219726562495],[100.0612304687501,79.77709960937506],[99.68066406250003,79.32333984374998],[99.04179687500007,79.29301757812502],[99.92929687500012,78.96142578124997],[98.41113281250003,78.78779296875004],[95.53105468750007,79.09809570312501],[95.02041015625005,79.05268554687498],[94.21875,79.40234375],[93.07080078124997,79.49531250000001],[94.98730468749997,80.096826171875],[95.28134765625012,80.030517578125],[97.67451171875004,80.15825195312499]]],[[[50.05175781250003,80.07431640625003],[49.55605468750005,80.15893554687503],[49.883691406249994,80.230224609375],[50.05175781250003,80.07431640625003]]],[[[57.07871093750006,80.35092773437498],[56.986914062500006,80.07148437499998],[55.811621093750006,80.08715820312497],[56.02441406250003,80.34130859374997],[57.07871093750006,80.35092773437498]]],[[[53.521386718749994,80.18520507812497],[52.34355468750002,80.213232421875],[52.85390625,80.40239257812499],[53.85166015625006,80.26835937500005],[53.521386718749994,80.18520507812497]]],[[[57.95625,80.12324218749995],[57.33232421875002,80.15810546875005],[57.075,80.49394531249999],[59.25546875000006,80.34321289062501],[58.39794921874997,80.31875],[57.95625,80.12324218749995]]],[[[54.41533203125002,80.47280273437502],[53.811914062499994,80.47622070312502],[53.87724609375002,80.60527343750002],[54.41533203125002,80.47280273437502]]],[[[47.441992187500006,80.853662109375],[48.44570312500005,80.80600585937506],[48.68359375000003,80.63325195312504],[47.7052734375001,80.76518554687499],[46.141406250000074,80.44672851562495],[45.969042968750074,80.56948242187502],[44.9049804687501,80.61127929687501],[47.441992187500006,80.853662109375]]],[[[62.167773437500074,80.83476562500005],[62.07578125000006,80.616943359375],[61.05126953124997,80.418603515625],[60.27832031249997,80.49443359374999],[59.649804687499994,80.43125],[59.59228515625003,80.81650390624998],[62.167773437500074,80.83476562500005]]],[[[50.278125,80.92724609374997],[51.70361328125003,80.68764648437502],[48.81103515625003,80.35371093750001],[48.97753906250003,80.16259765624997],[47.73730468749997,80.08168945312502],[47.89296875000005,80.23925781249997],[46.991015625000074,80.182763671875],[46.644433593749994,80.30034179687507],[47.89580078125002,80.52905273437503],[49.087792968749994,80.515771484375],[49.24433593750004,80.82138671875],[50.278125,80.92724609374997]]],[[[80.02666015625007,80.84814453125003],[79.09853515625005,80.81206054687505],[79.21738281250012,80.96035156249997],[80.27958984375007,80.94980468750003],[80.02666015625007,80.84814453125003]]],[[[61.1408203125001,80.95034179687497],[60.0783203125001,80.99916992187497],[61.45742187499999,81.10395507812501],[61.1408203125001,80.95034179687497]]],[[[54.71894531250004,81.11596679687497],[56.47226562500006,80.99824218749995],[57.58037109375002,80.75546874999998],[55.88339843750006,80.62841796875003],[54.66816406250004,80.73867187500002],[54.04541015624997,80.87197265625],[54.71894531250004,81.11596679687497]]],[[[58.62236328125002,81.04165039062502],[58.930566406249994,80.83168945312497],[58.28564453124997,80.76489257812503],[57.21093749999997,81.01708984374997],[58.04951171875004,81.11845703125002],[58.62236328125002,81.04165039062502]]],[[[63.37382812500002,80.70009765624997],[62.59257812500002,80.85302734375006],[64.80205078125002,81.197265625],[65.43740234375005,80.93071289062507],[63.37382812500002,80.70009765624997]]],[[[91.56718750000007,81.14121093750003],[91.2228515625001,81.063818359375],[89.90117187500002,81.17070312500002],[91.56718750000007,81.14121093750003]]],[[[96.52656250000004,81.0755859375],[97.86992187500007,80.76328125000006],[97.02539062499997,80.53554687500002],[97.29843750000006,80.27275390625005],[93.6546875,80.009619140625],[91.52382812500005,80.35854492187502],[93.2625,80.79125976562497],[92.59257812500007,80.780859375],[92.7103515625,80.87216796875003],[95.1595703125,81.27099609375003],[95.80068359375005,81.28046874999998],[96.52656250000004,81.0755859375]]],[[[57.81025390625004,81.54604492187502],[58.563867187499994,81.41840820312504],[57.858691406250074,81.36806640625],[57.76972656250004,81.16972656249999],[55.71669921875005,81.1884765625],[55.46601562500004,81.31118164062502],[57.81025390625004,81.54604492187502]]],[[[63.65097656250006,81.60932617187501],[62.10644531249997,81.679345703125],[63.709570312500006,81.68730468750002],[63.65097656250006,81.60932617187501]]],[[[58.29541015625003,81.715185546875],[58.13457031250002,81.82797851562498],[59.261816406250006,81.85419921874998],[59.35644531250003,81.75898437499995],[58.29541015625003,81.715185546875]]]]},"properties":{"name":"Russia","childNum":73}},{"geometry":{"type":"Polygon","coordinates":[[[30.50996093750001,-1.067285156250009],[30.47705078125,-1.0830078125],[30.47021484375,-1.131152343750003],[30.508105468750017,-1.208203125000011],[30.631933593750006,-1.367480468750003],[30.710742187500017,-1.396777343750003],[30.76220703125,-1.458691406250011],[30.812597656250006,-1.563085937500006],[30.8765625,-2.143359375],[30.85498046875,-2.265429687500003],[30.828710937500006,-2.338476562500006],[30.7625,-2.371679687500006],[30.71484375,-2.363476562500011],[30.656640625000023,-2.373828125],[30.593359375,-2.396777343750003],[30.553613281250023,-2.400097656250011],[30.408496093750017,-2.31298828125],[30.117285156250006,-2.416601562500006],[29.93017578125,-2.339550781250011],[29.8681640625,-2.71640625],[29.698046875000017,-2.794726562500003],[29.390234375,-2.80859375],[29.10205078125,-2.595703125],[29.01435546875001,-2.72021484375],[28.893945312500023,-2.635058593750003],[28.876367187500023,-2.400292968750009],[29.13154296875001,-2.195117187500003],[29.196582031250017,-1.719921875000011],[29.576953125000017,-1.387890625000011],[29.82539062500001,-1.335546875],[29.930078125000023,-1.469921875000011],[30.360253906250023,-1.074609375],[30.41230468750001,-1.063085937500006],[30.46992187500001,-1.066015625],[30.50996093750001,-1.067285156250009]]]},"properties":{"name":"Rwanda","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[41.98769531250005,16.715625],[42.059960937499994,16.803515625000017],[42.15781250000006,16.570703125000023],[41.80156250000002,16.778759765624955],[41.86044921875006,17.002539062499977],[41.98769531250005,16.715625]]],[[[46.53144531250004,29.09624023437499],[47.433203125,28.989550781250017],[47.671289062499994,28.53315429687504],[48.442480468750006,28.542919921874983],[48.80898437499999,27.895898437499966],[48.797167968750074,27.72431640625001],[49.2375,27.49272460937499],[49.17509765625002,27.43764648437505],[49.40527343749997,27.18095703124996],[50.149804687499994,26.66264648437499],[50.00810546875002,26.678515625000017],[50.21386718750003,26.30849609375005],[50.15546875000004,26.100537109374955],[50.03164062499999,26.11098632812505],[50.55791015625002,25.086669921875],[50.66689453125005,24.96381835937501],[50.72558593749997,24.869384765625057],[50.80439453125004,24.789257812499983],[50.928320312500006,24.595117187500023],[50.96601562500004,24.573925781249983],[51.022753906250074,24.56523437499999],[51.09335937500006,24.564648437499955],[51.178027343750074,24.586718750000017],[51.26796875,24.607226562500017],[51.33847656250006,24.564355468749994],[51.41123046875006,24.570800781250057],[51.30986328125002,24.340380859375017],[51.56835937500003,24.286181640625074],[51.592578125000074,24.07885742187503],[52.55507812500005,22.932812499999955],[55.104296875000074,22.621484375000023],[55.185839843750074,22.7041015625],[55.64101562499999,22.001855468749994],[54.97734375000002,19.995947265625006],[51.977636718750006,18.996142578125074],[49.04199218750003,18.58178710937503],[48.17216796875002,18.156933593749983],[47.57958984374997,17.448339843750034],[47.44179687499999,17.111865234375045],[47.14355468749997,16.946679687499966],[46.97568359375006,16.953466796875034],[46.72763671875006,17.26557617187501],[45.5353515625001,17.30205078124999],[45.14804687500006,17.427441406249955],[43.91699218749997,17.32470703124997],[43.41796875000003,17.516259765625023],[43.19091796875003,17.359375],[43.16503906249997,16.689404296874955],[42.79931640624997,16.37177734375001],[42.29394531249997,17.434960937499966],[41.75,17.88574218749997],[41.22949218750003,18.678417968749983],[40.75917968750005,19.755468750000034],[40.080664062500006,20.265917968750017],[39.728320312500074,20.390332031249955],[39.27607421875004,20.973974609375034],[39.093554687500074,21.31035156249999],[39.14707031250006,21.518994140624955],[38.98789062500006,21.88173828125005],[39.06201171874997,22.592187500000023],[38.46416015625002,23.71186523437504],[37.91972656250002,24.185400390625063],[37.54306640625006,24.291650390625023],[37.18085937500004,24.82001953125001],[37.26630859375004,24.960058593750034],[37.14882812499999,25.291113281249977],[35.18046875000002,28.03486328125004],[34.722070312499994,28.130664062500017],[34.625,28.064501953125017],[34.95078125,29.353515625],[36.068457031250006,29.200537109375006],[36.28281250000006,29.355371093750023],[36.47607421874997,29.49511718749997],[36.59179687500003,29.666113281250006],[36.703906250000074,29.831640624999977],[36.75527343750005,29.86601562499996],[37.46923828125003,29.995068359374955],[37.49072265625003,30.01171874999997],[37.55361328125005,30.14458007812496],[37.63359375000002,30.313281250000045],[37.64990234374997,30.330957031249994],[37.669726562500074,30.34814453125003],[37.862890625,30.44262695312503],[37.98007812500006,30.5],[37.47900390624997,31.007763671874955],[37.10527343750002,31.35517578125004],[36.95859375000006,31.491503906250017],[37.215625,31.55610351562501],[37.49335937500004,31.625878906250023],[38.111425781250006,31.78115234375005],[38.37548828124997,31.84746093749996],[38.962304687499994,31.99492187499999],[38.99707031249997,32.00747070312505],[39.145410156249994,32.12451171875],[39.36865234374997,32.09174804687498],[39.70410156250003,32.04252929687499],[40.02783203124997,31.995019531249994],[40.3693359375001,31.93896484375003],[40.47890625000005,31.89335937499999],[42.07441406250004,31.08037109374999],[43.77373046875002,29.84921875],[44.71650390625004,29.19360351562503],[46.35644531250003,29.06367187500001],[46.53144531250004,29.09624023437499]]]]},"properties":{"name":"Saudi Arabia","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[36.87138671875002,21.996728515624994],[36.92695312500001,21.58652343749999],[37.25859375000002,21.108544921874994],[37.25722656250002,21.03940429687499],[37.15058593750001,21.103759765625],[37.14111328125,20.98178710937499],[37.19316406250002,20.12070312499999],[37.471289062500006,18.820117187500003],[38.609472656250006,18.005078125],[38.422460937500006,17.823925781249997],[38.39716796875001,17.778369140625003],[38.38554687500002,17.751269531250003],[38.37373046875001,17.717333984375003],[38.34736328125001,17.68359375],[38.28984375000002,17.637011718750003],[38.26728515625001,17.61669921875],[38.253515625,17.584765625],[37.78242187500001,17.4580078125],[37.547460937500006,17.324121093749994],[37.51015625000002,17.288134765625003],[37.45292968750002,17.108691406250003],[37.41103515625002,17.06171875],[37.24882812500002,17.056884765625],[37.16953125,17.04140625],[37.0615234375,17.061279296875],[37.00898437500001,17.058886718750003],[36.995214843750006,17.020556640625003],[36.97578125000001,16.86655273437499],[36.97871093750001,16.800585937500003],[36.887792968750006,16.624658203124994],[36.91376953125001,16.296191406250003],[36.566015625,15.362109375],[36.4267578125,15.132080078125],[36.44814453125002,14.940087890624994],[36.470800781250006,14.736474609374994],[36.52431640625002,14.2568359375],[36.12519531250001,12.75703125],[35.67021484375002,12.623730468749997],[35.1123046875,11.816552734374994],[34.93144531250002,10.864794921874989],[34.77128906250002,10.746191406249991],[34.571875,10.880175781249989],[34.34394531250001,10.658642578124997],[34.31123046875001,10.190869140624997],[34.078125,9.461523437499991],[33.87148437500002,9.506152343749989],[33.96328125000002,9.861767578124997],[33.90703125000002,10.181445312499989],[33.13007812500001,10.745947265624991],[33.073339843750006,11.606103515624994],[33.199316406250006,12.21728515625],[32.721875,12.223095703124997],[32.73671875000002,12.009667968749994],[32.072265625,12.006738281249994],[32.338476562500006,11.710107421874994],[32.42080078125002,11.089111328125],[31.224902343750017,9.799267578124997],[30.75537109375,9.731201171875],[30.003027343750006,10.277392578124989],[29.60546875,10.065087890624994],[29.47314453125,9.768603515624989],[28.979589843750006,9.594189453124997],[28.844531250000017,9.326074218749994],[28.048925781250006,9.32861328125],[27.880859375,9.601611328124989],[27.07421875,9.613818359374989],[26.65869140625,9.484130859375],[25.91914062500001,10.169335937499994],[25.858203125000017,10.406494140625],[25.211718750000017,10.329931640624991],[25.066992187500006,10.293798828124991],[24.785253906250006,9.774658203125],[24.53193359375001,8.886914062499997],[24.147363281250023,8.665625],[23.53730468750001,8.815820312499994],[23.46826171875,9.11474609375],[23.62265625,9.340625],[23.646289062500017,9.822900390624994],[22.86005859375001,10.919677734375],[22.922656250000017,11.344873046874994],[22.591113281250017,11.579882812499989],[22.580957031250023,11.990136718749994],[22.472460937500017,12.067773437499994],[22.352343750000017,12.660449218749989],[21.928125,12.678125],[21.825292968750006,12.79052734375],[22.228125,13.32958984375],[22.1064453125,13.7998046875],[22.53857421875,14.161865234375],[22.38154296875001,14.550488281249997],[22.6708984375,14.722460937500003],[22.93232421875001,15.162109375],[22.933886718750017,15.533105468749994],[23.10517578125001,15.702539062499994],[23.970800781250006,15.721533203124991],[23.980273437500017,19.496630859375003],[23.980273437500017,19.99594726562499],[24.9794921875,20.002587890624994],[24.980273437500017,21.995849609375],[28.036425781250017,21.995361328125],[31.092675781250023,21.994873046875],[31.260644531250023,22.00229492187499],[31.400292968750023,22.202441406250003],[31.486132812500017,22.14780273437499],[31.434472656250023,21.995849609375],[36.87138671875002,21.996728515624994]]]},"properties":{"name":"Sudan","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[34.078125,9.461523437499991],[34.07275390625,8.545263671874991],[33.95332031250001,8.443505859374994],[33.28105468750002,8.437255859375],[32.99892578125002,7.899511718749991],[33.902441406250006,7.509521484375],[34.06425781250002,7.225732421874994],[34.71064453125001,6.660302734374994],[34.98359375000001,5.858300781249994],[35.26835937500002,5.492285156249991],[35.08447265625,5.311865234374991],[34.87832031250002,5.109570312499997],[34.63984375000001,4.87548828125],[34.38017578125002,4.620654296874989],[34.176855468750006,4.419091796874994],[33.97607421875,4.22021484375],[33.74160156250002,3.985253906249994],[33.568457031250006,3.81171875],[33.489355468750006,3.755078125],[32.99726562500001,3.880175781249989],[32.33574218750002,3.706201171874994],[32.13593750000001,3.519726562499997],[31.79804687500001,3.802636718749994],[31.547167968750017,3.677587890624991],[31.15234375,3.785595703124997],[30.83857421875001,3.49072265625],[30.757226562500023,3.62421875],[30.586718750000017,3.62421875],[30.50830078125,3.835693359375],[30.194921875,3.98193359375],[29.676855468750006,4.5869140625],[29.469628906250023,4.61181640625],[29.224902343750017,4.391894531249989],[28.72705078125,4.504980468749991],[28.427539062500017,4.324169921874997],[28.19208984375001,4.350244140624994],[27.7880859375,4.644677734374994],[27.4033203125,5.109179687499989],[27.143945312500023,5.722949218749989],[26.514257812500006,6.069238281249994],[26.30859375,6.455322265625],[26.36181640625,6.635302734374989],[25.27890625,7.427490234375],[25.18134765625001,7.557226562499991],[25.20039062500001,7.807910156249989],[24.853320312500017,8.137548828124991],[24.291406250000023,8.29140625],[24.147363281250023,8.665625],[24.53193359375001,8.886914062499997],[24.785253906250006,9.774658203125],[25.066992187500006,10.293798828124991],[25.211718750000017,10.329931640624991],[25.858203125000017,10.406494140625],[25.91914062500001,10.169335937499994],[26.65869140625,9.484130859375],[27.07421875,9.613818359374989],[27.880859375,9.601611328124989],[28.048925781250006,9.32861328125],[28.844531250000017,9.326074218749994],[28.979589843750006,9.594189453124997],[29.47314453125,9.768603515624989],[29.60546875,10.065087890624994],[30.003027343750006,10.277392578124989],[30.75537109375,9.731201171875],[31.224902343750017,9.799267578124997],[32.42080078125002,11.089111328125],[32.338476562500006,11.710107421874994],[32.072265625,12.006738281249994],[32.73671875000002,12.009667968749994],[32.721875,12.223095703124997],[33.199316406250006,12.21728515625],[33.073339843750006,11.606103515624994],[33.13007812500001,10.745947265624991],[33.90703125000002,10.181445312499989],[33.96328125000002,9.861767578124997],[33.87148437500002,9.506152343749989],[34.078125,9.461523437499991]]]},"properties":{"name":"S. Sudan","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-12.280615234374977,14.809033203124997],[-12.228417968749994,14.45859375],[-12.019189453124994,14.206494140624997],[-11.960888671874983,13.875292968750003],[-12.05419921875,13.633056640625],[-11.831689453124994,13.315820312499994],[-11.634960937499983,13.369873046875],[-11.390380859375,12.941992187499991],[-11.389404296875,12.404394531249991],[-12.399072265624994,12.340087890625],[-12.930712890624989,12.532275390624989],[-13.061279296875,12.489990234375],[-13.082910156249994,12.633544921875],[-13.729248046875,12.673925781249991],[-14.06484375,12.67529296875],[-14.349218749999977,12.676416015624994],[-15.196093749999989,12.679931640625],[-15.3779296875,12.588964843749991],[-15.574804687499977,12.490380859374994],[-15.839550781249983,12.43789062499999],[-16.144189453124994,12.45742187499999],[-16.24150390624999,12.443310546874997],[-16.41630859374999,12.36767578125],[-16.521337890624977,12.3486328125],[-16.656933593749983,12.364355468749991],[-16.711816406249994,12.354833984374991],[-16.76030273437499,12.52578125],[-16.44287109375,12.609472656249991],[-16.59765625,12.715283203124997],[-16.743896484375,12.58544921875],[-16.763330078124994,13.064160156249997],[-16.648779296874977,13.154150390624991],[-15.834277343749989,13.156445312499997],[-15.814404296874983,13.325146484374997],[-15.286230468749977,13.39599609375],[-15.151123046875,13.556494140624991],[-14.246777343749983,13.23583984375],[-13.826708984374989,13.4078125],[-13.977392578124977,13.54345703125],[-14.405468749999983,13.503710937500003],[-15.108349609374983,13.81210937499999],[-15.426855468749977,13.727001953124997],[-15.509667968749994,13.586230468750003],[-16.56230468749999,13.587304687499994],[-16.766943359374977,13.904931640624994],[-16.618115234374983,14.04052734375],[-16.791748046875,14.004150390625],[-17.168066406249977,14.640625],[-17.345800781249977,14.729296875],[-17.445019531249983,14.651611328125],[-17.53564453125,14.755126953125],[-17.147167968749983,14.922021484374994],[-16.843408203124994,15.293994140625003],[-16.570751953124983,15.734423828125003],[-16.535253906249977,15.83837890625],[-16.502050781249977,15.917333984374991],[-16.480078124999977,16.097216796875003],[-16.441015624999977,16.204541015624997],[-16.239013671875,16.531298828125003],[-15.768212890624994,16.485107421875],[-14.990625,16.676904296874994],[-14.300097656249989,16.580273437499997],[-13.868457031249989,16.148144531249997],[-13.756640624999989,16.172509765624994],[-13.40966796875,16.05917968749999],[-13.105273437499989,15.57177734375],[-12.735253906249994,15.13125],[-12.40869140625,14.889013671874991],[-12.280615234374977,14.809033203124997]]]},"properties":{"name":"Senegal","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[103.9697265625,1.331445312499994],[103.65019531249999,1.325537109374991],[103.81796875000003,1.447070312499989],[103.9697265625,1.331445312499994]]]},"properties":{"name":"Singapore","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-37.10332031249996,-54.065625],[-36.70380859375001,-54.10810546874999],[-36.64741210937498,-54.26230468749996],[-36.32646484374996,-54.251171875],[-35.79858398437497,-54.76347656250002],[-36.08549804687499,-54.86679687500001],[-36.885986328125,-54.33945312499996],[-37.63090820312496,-54.16748046875001],[-37.61884765625001,-54.04208984375004],[-38.017431640625034,-54.008007812500026],[-37.10332031249996,-54.065625]]]},"properties":{"name":"S. Geo. and S. Sandw. Is.","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-5.692138671874972,-15.997753906249997],[-5.782519531250017,-16.00400390625002],[-5.707861328124977,-15.90615234374998],[-5.692138671874972,-15.997753906249997]]]},"properties":{"name":"Saint Helena","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[160.57626953125006,-11.797851562500028],[160.44306640625004,-11.814941406249957],[159.98632812499997,-11.494726562500006],[160.57626953125006,-11.797851562500028]]],[[[166.13320312500005,-10.757812499999972],[165.90400390625004,-10.851464843749966],[165.79101562500003,-10.784765624999963],[166.02382812500005,-10.6611328125],[166.13320312500005,-10.757812499999972]]],[[[161.71533203124997,-10.387304687499991],[162.10537109375005,-10.45380859375004],[162.37333984375002,-10.823242187499986],[161.78681640625004,-10.716894531249991],[161.53789062500007,-10.566406249999972],[161.4870117187501,-10.361425781249963],[161.29394531250003,-10.326464843750031],[161.30478515625012,-10.204394531250031],[161.71533203124997,-10.387304687499991]]],[[[161.54785156249997,-9.625683593749997],[161.55380859375012,-9.769726562500026],[161.40976562500006,-9.681640625000028],[161.36416015625,-9.353417968750037],[161.54785156249997,-9.625683593749997]]],[[[159.75039062500005,-9.272656250000011],[159.97060546875,-9.433300781249969],[160.35458984375006,-9.421582031249983],[160.81894531250006,-9.862792968749986],[160.64921875000002,-9.92861328124998],[159.80273437499997,-9.763476562500003],[159.61230468749997,-9.470703124999943],[159.62558593750012,-9.311230468749969],[159.75039062500005,-9.272656250000011]]],[[[160.1681640625001,-8.995507812500037],[160.40751953125007,-9.140332031249969],[160.10537109375,-9.080761718749997],[160.1681640625001,-8.995507812500037]]],[[[159.18857421875006,-9.123535156250014],[159.03632812500004,-9.075],[159.12978515625,-8.99306640624998],[159.22841796875005,-9.029980468749955],[159.18857421875006,-9.123535156250014]]],[[[158.10791015625003,-8.684179687500034],[157.93759765625006,-8.73642578125002],[157.90927734375006,-8.565625],[158.10546874999997,-8.536816406250026],[158.10791015625003,-8.684179687500034]]],[[[157.38896484375002,-8.713476562499963],[157.2123046875,-8.565039062500006],[157.37949218750012,-8.420898437499943],[157.38896484375002,-8.713476562499963]]],[[[160.7494140625,-8.313964843750014],[160.99765625000006,-8.612011718749983],[160.94433593750003,-8.799023437499983],[161.15869140624997,-8.961816406250009],[161.36738281250004,-9.61123046874998],[160.77207031250012,-8.963867187499986],[160.7140625000001,-8.539257812499997],[160.59042968750006,-8.372753906249997],[160.7494140625,-8.313964843750014]]],[[[157.76347656250002,-8.242187499999957],[157.89843749999997,-8.506347656249943],[157.81933593750003,-8.612011718749983],[157.58789062500003,-8.445410156249963],[157.5580078125,-8.269921875],[157.30244140625004,-8.33330078124996],[157.21757812500002,-8.262792968749977],[157.490625,-7.965722656250037],[157.76347656250002,-8.242187499999957]]],[[[157.171875,-8.108105468749997],[156.95830078125002,-8.014355468749997],[157.02412109375004,-7.867871093749997],[157.18613281250006,-7.941210937500017],[157.171875,-8.108105468749997]]],[[[156.687890625,-7.92304687500004],[156.5109375000001,-7.707812499999974],[156.5609375,-7.574023437499989],[156.80908203124997,-7.722851562500026],[156.687890625,-7.92304687500004]]],[[[159.8791015625001,-8.534277343749949],[158.9440429687501,-8.04072265625004],[158.457421875,-7.544726562499974],[158.734375,-7.604296875000031],[159.43144531250002,-8.029003906249955],[159.84306640625002,-8.326953124999989],[159.8791015625001,-8.534277343749949]]],[[[155.83984374999997,-7.097167968750014],[155.67753906250002,-7.08896484375002],[155.73896484375004,-6.972949218750017],[155.83984374999997,-7.097167968750014]]],[[[157.48671875000005,-7.330371093750003],[157.44130859375,-7.425683593749966],[157.10156249999997,-7.323632812499966],[156.4525390625,-6.638281249999963],[157.03027343750003,-6.891992187499952],[157.19335937499997,-7.160351562499997],[157.48671875000005,-7.330371093750003]]]]},"properties":{"name":"Solomon Is.","childNum":16}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-12.526074218749926,7.436328125000017],[-12.951611328124926,7.570849609374989],[-12.615234374999972,7.63720703125],[-12.5125,7.582421875000037],[-12.526074218749926,7.436328125000017]]],[[[-10.758593749999989,9.385351562499991],[-10.682714843750006,9.289355468749974],[-10.687646484374937,9.261132812499994],[-10.749951171874926,9.12236328124996],[-10.747021484374955,9.095263671875045],[-10.726855468749932,9.081689453125023],[-10.615966796875,9.059179687499977],[-10.500537109375017,8.687548828125017],[-10.677343749999977,8.400585937499997],[-10.712109374999955,8.335253906250017],[-10.686962890624983,8.321679687500009],[-10.652636718749989,8.330273437499983],[-10.604003906249943,8.319482421874994],[-10.55771484374992,8.315673828125028],[-10.496435546874977,8.362109374999974],[-10.394433593749966,8.480957031250028],[-10.360058593749983,8.49550781249998],[-10.283203124999972,8.48515625],[-10.285742187499949,8.454101562499986],[-10.314648437499983,8.310839843750017],[-10.359814453124926,8.187939453125026],[-10.570849609374932,8.071142578125034],[-10.6474609375,7.759375],[-10.878076171874994,7.538232421874994],[-11.267675781249977,7.232617187499997],[-11.507519531249983,6.906542968750003],[-12.48564453124996,7.386279296875045],[-12.480273437499932,7.75327148437502],[-12.697607421874977,7.715869140625045],[-12.850878906249932,7.818701171875034],[-12.956933593749966,8.145312500000045],[-13.148974609374989,8.214599609375043],[-13.272753906249989,8.429736328124989],[-13.085009765624932,8.42475585937504],[-12.894091796874932,8.62978515624998],[-13.181835937499955,8.576904296875043],[-13.206933593749994,8.843115234375006],[-13.059472656249966,8.881152343750031],[-13.292675781249955,9.04921875],[-13.077294921874966,9.069628906249974],[-12.958789062499989,9.263330078124994],[-12.755859374999943,9.373583984374989],[-12.557861328125,9.704980468749994],[-12.427978515625028,9.898144531250011],[-12.142333984375,9.87539062499999],[-11.911083984374955,9.993017578124977],[-11.273632812499955,9.996533203124983],[-11.205664062499949,9.977734374999969],[-11.180859374999955,9.925341796875045],[-11.047460937499977,9.786328125000054],[-10.758593749999989,9.385351562499991]]]]},"properties":{"name":"Sierra Leone","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[-89.36259765624999,14.416015625],[-89.1205078125,14.370214843749991],[-88.51254882812499,13.978955078124997],[-88.504345703125,13.964208984374991],[-88.49765625,13.904541015625],[-88.482666015625,13.854248046875],[-88.44912109375,13.850976562499994],[-88.40849609374999,13.87539062499999],[-88.27622070312499,13.942675781250003],[-88.151025390625,13.987353515625003],[-87.99101562499999,13.879638671875],[-87.8919921875,13.894970703124997],[-87.80224609375,13.889990234374991],[-87.7314453125,13.841064453125],[-87.71533203125,13.812695312499997],[-87.781884765625,13.521386718749994],[-87.930859375,13.1806640625],[-88.68564453124999,13.281494140625],[-88.51201171874999,13.183935546874991],[-89.80419921875,13.560107421875003],[-90.09521484375,13.736523437499997],[-90.04814453124999,13.904052734375],[-89.54716796874999,14.241259765625003],[-89.5736328125,14.390087890624997],[-89.36259765624999,14.416015625]]]},"properties":{"name":"El Salvador","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-56.26708984374997,46.838476562500034],[-56.38476562499994,46.81943359375006],[-56.36464843749994,47.09897460937498],[-56.26708984374997,46.838476562500034]]]},"properties":{"name":"St. Pierre and Miquelon","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[6.659960937499989,0.120654296874989],[6.51972656250004,0.066308593750023],[6.468164062499994,0.22734375],[6.68691406250008,0.404394531249977],[6.75,0.24345703124996],[6.659960937499989,0.120654296874989]]],[[[7.423828125,1.567724609375006],[7.330664062500034,1.603369140624991],[7.414453125000051,1.699121093750037],[7.423828125,1.567724609375006]]]]},"properties":{"name":"São Tomé and Principe","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[-54.03422851562499,3.62939453125],[-54.00957031249999,3.448535156249989],[-54.06318359375,3.353320312499989],[-54.18803710937499,3.178759765624989],[-54.203125,3.13818359375],[-54.17070312499999,2.993603515624997],[-54.18808593749999,2.874853515624991],[-54.1955078125,2.81787109375],[-54.256738281249994,2.713720703124991],[-54.402001953124994,2.461523437499991],[-54.53593749999999,2.343310546874989],[-54.56840820312499,2.342578124999989],[-54.604736328125,2.335791015624991],[-54.61625976562499,2.326757812499991],[-54.661865234375,2.327539062499994],[-54.697412109374994,2.359814453124997],[-54.72221679687499,2.441650390625],[-54.87607421874999,2.450390625],[-54.92656249999999,2.497363281249989],[-54.968408203124994,2.54833984375],[-54.978662109374994,2.59765625],[-55.005810546875,2.59296875],[-55.0703125,2.54833984375],[-55.11411132812499,2.539208984374994],[-55.1876953125,2.547509765624994],[-55.286035156249994,2.499658203124994],[-55.343994140625,2.48876953125],[-55.38535156249999,2.440625],[-55.73056640624999,2.406152343749994],[-55.957470703125,2.520458984374997],[-55.99350585937499,2.497509765624997],[-56.02036132812499,2.392773437499997],[-56.0451171875,2.364404296874994],[-56.087792968749994,2.34130859375],[-56.12939453125,2.299511718749997],[-56.1376953125,2.259033203125],[-56.073632812499994,2.236767578124997],[-56.02006835937499,2.158154296874997],[-55.96196289062499,2.095117187499994],[-55.91533203124999,2.03955078125],[-55.921630859375,1.976660156249991],[-55.929638671875,1.8875],[-56.01992187499999,1.842236328124997],[-56.4828125,1.942138671875],[-56.704345703125,2.036474609374991],[-57.19736328124999,2.853271484375],[-57.303662109375,3.377099609374994],[-57.646728515625,3.39453125],[-58.05429687499999,4.101660156249991],[-57.84599609374999,4.668164062499997],[-57.91704101562499,4.820410156249991],[-57.711083984374994,4.991064453124991],[-57.331005859375,5.020166015624994],[-57.20981445312499,5.195410156249991],[-57.3185546875,5.335351562499994],[-57.194775390625,5.5484375],[-56.96982421874999,5.992871093749997],[-56.235595703125,5.885351562499991],[-55.897607421874994,5.699316406249991],[-55.909912109375,5.892626953124989],[-55.648339843749994,5.985888671874989],[-54.83369140625,5.988330078124989],[-54.05419921875,5.807910156249989],[-54.08046875,5.502246093749989],[-54.4796875,4.836523437499991],[-54.350732421874994,4.054101562499994],[-54.03422851562499,3.62939453125]]]},"properties":{"name":"Suriname","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[22.538671875,49.072705078125],[22.52412109375001,49.031396484374994],[22.389453125000017,48.873486328125],[22.295214843750017,48.685839843749996],[22.142871093750017,48.568505859374994],[22.1318359375,48.405322265624996],[21.766992187500023,48.3380859375],[21.45136718750001,48.55224609375],[20.490039062500017,48.526904296874996],[20.333789062500017,48.295556640624994],[19.95039062500001,48.146630859374994],[19.625390625000023,48.223095703125],[18.791894531250023,48.000292968749996],[18.72421875,47.787158203124996],[17.76191406250001,47.770166015624994],[17.147363281250023,48.00595703125],[16.86542968750001,48.3869140625],[16.953125,48.598828125],[17.135644531250023,48.841064453125],[17.75849609375001,48.888134765625],[18.0859375,49.06513671875],[18.160937500000017,49.257373046874996],[18.83222656250001,49.510791015624996],[19.1494140625,49.4],[19.44160156250001,49.597705078124996],[19.77392578125,49.37216796875],[19.756640625000017,49.204394531249996],[20.0576171875,49.181298828124994],[20.36298828125001,49.38525390625],[20.868457031250017,49.314697265625],[21.079394531250017,49.418261718749996],[21.6396484375,49.411962890625],[22.020117187500006,49.209521484374996],[22.473046875000023,49.081298828125],[22.538671875,49.072705078125]]]},"properties":{"name":"Slovakia","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[16.516210937500006,46.499902343749994],[16.427636718750023,46.5244140625],[16.321191406250023,46.534619140625],[16.1064453125,46.382226562499994],[15.608984375,46.171923828124996],[15.592578125000017,46.139990234375],[15.596875,46.109228515625],[15.675585937500017,45.983691406249996],[15.652148437500017,45.862158203125],[15.277050781250011,45.7326171875],[15.353710937500011,45.659912109375],[15.283593750000023,45.5796875],[15.291210937500011,45.541552734374996],[15.32666015625,45.502294921875],[15.339453125,45.467041015625],[15.242089843750023,45.44140625],[15.110449218750006,45.45078125],[14.95458984375,45.499902343749994],[14.793066406250006,45.47822265625],[14.649511718750006,45.571484375],[14.591796875,45.651269531249994],[14.56884765625,45.6572265625],[14.548448660714302,45.628388671875],[14.507586495535731,45.59039341517857],[14.42734375,45.505761718749994],[14.369921875000017,45.4814453125],[13.878710937500017,45.428369140624994],[13.577929687500017,45.516894531249996],[13.8447265625,45.59287109375],[13.831152343750006,45.680419921875],[13.663476562500023,45.7919921875],[13.6005859375,45.979785156249996],[13.509179687500023,45.973779296874994],[13.487695312500023,45.987109375],[13.480273437500017,46.009228515625],[13.486425781250006,46.03955078125],[13.548046875000011,46.089111328125],[13.616601562500023,46.133105468749996],[13.634960937500011,46.157763671874996],[13.632519531250011,46.177050781249996],[13.420996093750006,46.212304687499994],[13.399511718750006,46.317529296874994],[13.563281250000017,46.415087890624996],[13.637109375000023,46.448535156249996],[13.6796875,46.462890625],[13.7,46.520263671875],[14.5498046875,46.399707031249996],[14.893261718750011,46.605908203125],[15.957617187500006,46.677636718749994],[16.093066406250017,46.86328125],[16.283593750000023,46.857275390625],[16.516210937500006,46.499902343749994]]]},"properties":{"name":"Slovenia","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[16.52851562500001,56.29052734375],[16.431640625,56.24375],[16.41230468750004,56.568994140624994],[17.02539062499997,57.345068359375006],[16.52851562500001,56.29052734375]]],[[[19.076464843750045,57.8359375],[18.813867187500023,57.70620117187502],[18.907910156250068,57.39833984375002],[18.146386718749994,56.920507812500006],[18.285351562500068,57.08320312500001],[18.136523437500045,57.55664062500003],[18.53740234374999,57.83056640625006],[18.90058593750001,57.91547851562504],[19.076464843750045,57.8359375]]],[[[19.156347656250063,57.92260742187497],[19.086523437500034,57.86499023437506],[19.134863281250034,57.98134765625002],[19.331445312500023,57.962890625],[19.156347656250063,57.92260742187497]]],[[[24.15546875000004,65.80527343750006],[23.102343750000074,65.73535156250003],[22.400976562500006,65.86210937499999],[22.254003906250006,65.59755859375002],[21.565527343750063,65.40810546874997],[21.609179687500074,65.261376953125],[21.410351562500068,65.31743164062505],[21.57392578125001,65.12578124999999],[21.138183593750057,64.80869140625006],[21.519628906250034,64.46308593749998],[20.76269531250003,63.86782226562505],[18.60644531250003,63.17827148437499],[18.31289062500008,62.996386718750045],[18.46308593750004,62.895849609375006],[18.170019531250034,62.789355468750074],[17.906640625000023,62.88676757812502],[18.037304687500068,62.60053710937498],[17.834472656250057,62.50273437500002],[17.410253906250063,62.508398437500034],[17.633691406249994,62.23300781250006],[17.374511718750057,61.866308593750034],[17.465429687500006,61.68447265625005],[17.196386718750006,61.72456054687504],[17.13076171875005,61.57573242187499],[17.25097656250003,60.70078125],[17.6611328125,60.53515625000003],[17.955761718750068,60.589794921874955],[18.85273437500001,60.02587890625],[18.970507812500045,59.757226562499994],[17.964257812500023,59.359375],[18.56025390625004,59.39448242187498],[18.285351562500068,59.109375],[16.978125,58.65415039062506],[16.214257812500023,58.636669921874955],[16.92382812499997,58.49257812499999],[16.651953125,58.43432617187503],[16.65224609375008,57.50068359374998],[16.348730468750063,56.70927734374996],[15.826660156250028,56.12495117187501],[14.782031250000017,56.16191406250002],[14.754785156250051,56.03315429687498],[14.401953125000034,55.97675781250004],[14.21503906250004,55.83261718749998],[14.341699218749994,55.52773437500002],[14.17373046875008,55.396630859374966],[12.885839843750063,55.41137695312506],[12.973925781250074,55.748144531250006],[12.471191406250057,56.29052734375],[12.801660156250051,56.263916015625],[12.65644531250004,56.44057617187502],[12.857421875000028,56.45239257812503],[12.883691406250051,56.61772460937496],[12.421484375000034,56.906396484374966],[11.449316406250063,58.118359374999955],[11.43154296875008,58.339990234374994],[11.24824218750004,58.369140625],[11.14716796875004,58.98862304687498],[11.19580078125,59.07827148437505],[11.388281250000063,59.036523437499966],[11.470703125000057,58.909521484375034],[11.64277343750004,58.92607421875002],[11.798144531250074,59.28989257812498],[11.680761718750034,59.59228515625003],[12.486132812500074,60.10678710937506],[12.588671874999989,60.450732421875045],[12.29414062500004,61.00268554687506],[12.706054687500028,61.059863281250074],[12.88076171875008,61.35229492187506],[12.155371093750006,61.720751953125045],[12.303515625000074,62.28559570312501],[11.999902343750051,63.29169921875001],[12.175195312500051,63.595947265625],[12.792773437500017,64],[13.203515625000023,64.07509765625],[13.960546875000063,64.01401367187498],[14.141210937500006,64.17353515624998],[14.077636718750028,64.464013671875],[13.650292968750023,64.58154296874997],[14.47968750000004,65.30146484374998],[14.543261718750045,66.12934570312498],[15.483789062500051,66.30595703124999],[15.422949218750006,66.48984374999998],[16.40351562500004,67.05498046875002],[16.12744140625,67.42583007812507],[16.783593750000023,67.89501953125],[17.324609375000023,68.10380859374999],[17.91669921875001,67.96489257812502],[18.303027343750045,68.55541992187497],[19.969824218750063,68.35639648437501],[20.348046875000023,68.84873046875003],[20.116699218750057,69.02089843750005],[20.622167968750006,69.036865234375],[21.99746093750005,68.52060546874998],[22.854101562500034,68.36733398437502],[23.63886718750004,67.95439453125002],[23.454882812500045,67.46025390625007],[23.733593750000068,67.42290039062499],[23.64150390625005,67.12939453124997],[23.988574218750045,66.81054687500003],[23.700292968750034,66.25263671874998],[24.15546875000004,65.80527343750006]]]]},"properties":{"name":"Sweden","childNum":4}},{"geometry":{"type":"Polygon","coordinates":[[[31.9482421875,-25.957617187500006],[32.060546875,-26.018359375],[32.04140625000002,-26.28125],[32.10595703125,-26.52001953125],[32.112890625,-26.839453125],[32.02480468750002,-26.811132812500006],[31.994726562500006,-26.817480468750006],[31.967187500000023,-26.96064453125001],[31.946093750000017,-27.173632812500003],[31.958398437500023,-27.30585937500001],[31.742578125000023,-27.30996093750001],[31.469531250000017,-27.295507812500006],[31.274023437500006,-27.238378906250006],[31.063378906250023,-27.1123046875],[30.938085937500006,-26.915820312500003],[30.88330078125,-26.79238281250001],[30.806738281250006,-26.785253906250006],[30.794335937500023,-26.764257812500006],[30.803320312500006,-26.41347656250001],[31.08808593750001,-25.98066406250001],[31.207324218750017,-25.843359375],[31.33515625000001,-25.75556640625001],[31.382617187500017,-25.74296875],[31.415136718750006,-25.74658203125],[31.921679687500017,-25.96875],[31.9482421875,-25.957617187500006]]]},"properties":{"name":"Swaziland","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[55.54033203125002,-4.693066406250011],[55.54296875,-4.785546875],[55.383398437500006,-4.609277343750009],[55.45576171875001,-4.558789062500011],[55.54033203125002,-4.693066406250011]]]},"properties":{"name":"Seychelles","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[42.358984375,37.10859375],[41.78857421875,36.59716796875],[41.41679687500002,36.5146484375],[41.295996093750006,36.383349609374996],[41.354101562500006,35.640429687499996],[41.19472656250002,34.768994140625],[40.98701171875001,34.429052734375],[38.773535156250006,33.372216796874994],[36.818359375,32.317285156249994],[36.3720703125,32.3869140625],[35.78730468750001,32.734912109374996],[35.91347656250002,32.94960937499999],[35.869140625,33.43173828125],[36.03447265625002,33.58505859375],[35.98613281250002,33.75263671875],[36.36503906250002,33.83935546875],[36.27783203125,33.92529296875],[36.5849609375,34.221240234374996],[36.50439453125,34.432373046875],[36.32988281250002,34.499609375],[36.383886718750006,34.65791015625],[35.97626953125001,34.629199218749996],[35.902441406250006,35.420703125],[35.76445312500002,35.571582031249996],[35.83964843750002,35.84921875],[35.892675781250006,35.916552734374996],[35.96757812500002,35.910058593749994],[36.12734375000002,35.831445312499994],[36.15361328125002,35.833886718749994],[36.34755859375002,36.003515625],[36.37539062500002,36.171240234375],[36.63671875,36.233984375],[36.64140625000002,36.263525390625],[36.5375,36.45742187499999],[36.54667968750002,36.50634765625],[36.596875,36.7013671875],[36.62841796875,36.777685546875],[36.65859375000002,36.802539062499996],[36.77656250000001,36.79267578125],[36.94179687500002,36.7583984375],[36.9853515625,36.702392578125],[37.06621093750002,36.652636718749996],[37.43632812500002,36.643310546875],[37.523535156250006,36.6783203125],[37.7203125,36.743701171874996],[37.90664062500002,36.79462890625],[38.19169921875002,36.9015625],[38.7666015625,36.693115234375],[38.90644531250001,36.694677734375],[39.1083984375,36.680566406249994],[39.35664062500001,36.681591796875],[39.50146484375,36.70224609375],[39.6865234375,36.738623046875],[40.01640625000002,36.826074218749994],[40.705664062500006,37.097705078124996],[41.886816406250006,37.156396484374994],[42.05986328125002,37.2060546875],[42.16787109375002,37.288623046874996],[42.202734375,37.29726562499999],[42.24755859375,37.2822265625],[42.2685546875,37.2765625],[42.31289062500002,37.22958984375],[42.358984375,37.10859375]]]},"properties":{"name":"Syria","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-72.3328125,21.85136718749999],[-72.14433593750002,21.79272460937503],[-72.33544921874994,21.758007812499983],[-72.3328125,21.85136718749999]]]},"properties":{"name":"Turks and Caicos Is.","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[23.980273437500017,19.496630859375003],[23.970800781250006,15.721533203124991],[23.10517578125001,15.702539062499994],[22.933886718750017,15.533105468749994],[22.93232421875001,15.162109375],[22.6708984375,14.722460937500003],[22.38154296875001,14.550488281249997],[22.53857421875,14.161865234375],[22.1064453125,13.7998046875],[22.228125,13.32958984375],[21.825292968750006,12.79052734375],[21.928125,12.678125],[22.352343750000017,12.660449218749989],[22.472460937500017,12.067773437499994],[22.580957031250023,11.990136718749994],[22.591113281250017,11.579882812499989],[22.922656250000017,11.344873046874994],[22.86005859375001,10.919677734375],[22.49384765625001,10.996240234374994],[21.771484375,10.642822265625],[21.682714843750006,10.289843749999989],[20.773242187500017,9.405664062499994],[20.342089843750017,9.127099609374994],[18.95625,8.938867187499994],[18.886035156250017,8.836035156249991],[19.108691406250017,8.656152343749994],[18.56416015625001,8.0458984375],[17.6494140625,7.98359375],[16.784765625,7.550976562499997],[16.545312500000023,7.865478515625],[16.37890625,7.683544921874997],[15.957617187500006,7.507568359375],[15.480078125,7.523779296874991],[15.5498046875,7.787890624999989],[15.1162109375,8.557324218749997],[14.332324218750017,9.20351562499999],[13.977246093750011,9.691552734374994],[14.243261718750006,9.979736328125],[15.654882812500006,10.0078125],[15.276074218750011,10.357373046874997],[15.132226562500023,10.648486328124989],[15.029882812500006,11.11367187499999],[15.08125,11.845507812499989],[14.847070312500023,12.502099609374994],[14.461718750000017,13.021777343749989],[14.244824218750011,13.07734375],[14.06396484375,13.07851562499999],[13.932324218750011,13.258496093749997],[13.606347656250023,13.70458984375],[13.505761718750023,14.134423828124994],[13.4482421875,14.380664062500003],[14.367968750000017,15.750146484374994],[15.474316406250011,16.908398437499997],[15.735058593750011,19.904052734375],[15.963183593750017,20.34619140625],[15.587109375000011,20.733300781249994],[15.607324218750023,20.954394531250003],[15.181835937500011,21.523388671874997],[14.97900390625,22.99619140624999],[15.984082031250011,23.445214843749994],[20.14765625000001,21.38925781249999],[23.980273437500017,19.496630859375003]]]},"properties":{"name":"Chad","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[0.900488281250006,10.993261718749991],[0.763378906250011,10.386669921874997],[1.330078125,9.996972656249994],[1.3857421875,9.361669921874991],[1.600195312500006,9.050048828125],[1.624707031250011,6.997314453125],[1.530957031250011,6.992431640625],[1.777929687500006,6.294628906249997],[1.62265625,6.216796875],[1.187207031250011,6.089404296874989],[0.736914062500006,6.452587890624997],[0.525585937500011,6.850927734374991],[0.634765625,7.353662109374994],[0.5,7.546875],[0.686328125000017,8.354882812499994],[0.37255859375,8.75927734375],[0.48876953125,8.851464843749994],[0.525683593750017,9.398486328124989],[0.2333984375,9.463525390624994],[0.342578125000017,9.604150390624994],[0.264550781250023,9.644726562499997],[0.380859375,10.291845703124991],[-0.08632812499999,10.673046875],[0.009423828125023,11.02099609375],[-0.068603515625,11.115625],[0.49267578125,10.954980468749994],[0.900488281250006,10.993261718749991]]]},"properties":{"name":"Togo","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[98.40908203125005,7.90205078125004],[98.2962890625,7.776074218750054],[98.32207031250007,8.166308593749974],[98.4349609375,8.085644531249969],[98.40908203125005,7.90205078125004]]],[[[100.070703125,9.58603515625002],[99.96240234375003,9.421630859375],[99.93955078125006,9.559960937500037],[100.070703125,9.58603515625002]]],[[[102.42675781250003,11.988720703125026],[102.30195312500004,11.98081054687502],[102.27744140625006,12.151855468750043],[102.42675781250003,11.988720703125026]]],[[[100.12246093750005,20.316650390625057],[100.11494140625004,20.257666015625034],[100.13974609375012,20.245410156250017],[100.31796875000006,20.38588867187505],[100.51953125000003,20.17792968750004],[100.39765625000004,19.756103515625],[100.51357421875005,19.553466796875],[101.21191406249997,19.54833984375003],[101.22080078125006,19.486621093750074],[101.19755859375007,19.327929687500074],[101.2863281250001,18.977148437500006],[101.04697265625012,18.441992187500063],[101.05058593750002,18.407031250000045],[101.1375,18.28686523437497],[101.14394531250005,18.14262695312499],[100.90849609375002,17.583886718750023],[100.95585937500002,17.541113281250006],[101.10517578125004,17.47954101562499],[101.16748046874997,17.49902343749997],[101.41367187500012,17.71875],[101.55507812500005,17.812353515625034],[101.56367187500004,17.82050781250001],[101.6875,17.889404296875],[101.77480468750005,18.03339843750004],[101.81865234375002,18.06464843750001],[101.87548828124997,18.046435546875017],[101.94746093750004,18.081494140624983],[102.03457031250005,18.169824218750023],[102.10146484375,18.210644531249983],[102.14824218750002,18.20385742187503],[102.35185546875002,18.045947265625017],[102.45878906250002,17.984619140625057],[102.55253906250007,17.96508789062497],[102.61679687500006,17.833349609375034],[102.66064453124997,17.817968750000034],[102.680078125,17.824121093750023],[103.05136718750006,18.02851562500001],[103.0912109375,18.13823242187499],[103.14853515625006,18.221728515625045],[103.19970703124997,18.259472656249983],[103.26318359374997,18.27846679687505],[103.27958984375002,18.304980468750017],[103.24892578125,18.338964843750034],[103.25175781250002,18.373486328124955],[103.2882812500001,18.408398437499955],[103.36699218750007,18.42333984374997],[103.48798828125004,18.418164062499983],[103.62968750000002,18.38256835937503],[103.79228515625002,18.316503906249977],[103.89882812500005,18.295312500000023],[103.949609375,18.31899414062505],[104.04873046875005,18.216699218749994],[104.19619140625005,17.988378906250006],[104.32265625,17.815820312500023],[104.428125,17.69897460937503],[104.7396484375,17.461669921875],[104.81601562500012,17.30029296874997],[104.75898437500004,17.0771484375],[104.7435546875,16.884375],[104.75058593750012,16.647558593750063],[104.81933593750003,16.46606445312503],[105.04716796875007,16.160253906249977],[105.14873046875007,16.09355468749999],[105.33066406250006,16.037890625000017],[105.40625,15.987451171875051],[105.39892578124997,15.829882812500017],[105.62207031250003,15.699951171875],[105.641015625,15.656542968750045],[105.6388671875001,15.585937500000057],[105.615625,15.488281250000057],[105.49042968750004,15.256591796875],[105.49042968750004,15.127587890625009],[105.5333984375001,15.041601562499991],[105.54667968750002,14.932470703124963],[105.52304687500012,14.843310546875003],[105.49736328125002,14.590673828124963],[105.47558593750003,14.530126953124977],[105.42265625000007,14.471630859375054],[105.34218750000005,14.416699218750054],[105.24365234375003,14.367871093750054],[105.1833007812501,14.346240234374989],[105.16914062500004,14.336083984374966],[105.12597656250003,14.280957031250011],[105.07412109375005,14.227441406250037],[104.77900390625004,14.427832031250006],[103.19941406250004,14.332617187499977],[102.90927734375006,14.136718750000028],[102.546875,13.585693359375043],[102.33632812500005,13.560302734375014],[102.49960937500012,12.669970703125003],[102.75566406250002,12.42626953125],[102.73662109375007,12.089794921875011],[102.93388671875002,11.706689453125037],[102.594140625,12.203027343749994],[102.54023437500004,12.109228515624977],[101.83574218750002,12.640380859375014],[100.89775390625007,12.653808593749986],[100.96269531250007,13.431982421874991],[100.60292968750005,13.568164062500017],[100.23564453125002,13.48447265625002],[99.99052734375007,13.243457031250031],[100.08994140625006,13.045654296874972],[99.96396484375006,12.690039062500006],[99.98906250000007,12.170800781249994],[99.16503906250003,10.319824218750028],[99.25390625000003,9.265234375000034],[99.83554687500012,9.288378906250031],[99.98955078125007,8.589208984374977],[100.129296875,8.428076171875006],[100.16347656250005,8.508398437500034],[100.27939453125006,8.268505859375011],[100.54521484375002,7.226904296874991],[100.43935546875005,7.280761718750043],[100.38037109375003,7.541503906250043],[100.28378906250006,7.551513671875043],[100.25664062500002,7.774902343749986],[100.16074218750012,7.599267578124994],[100.4235351562501,7.18784179687502],[101.01787109375002,6.860937500000034],[101.49794921875005,6.865283203125031],[102.10107421874997,6.242236328125031],[101.87363281250012,5.825292968749991],[101.67841796875004,5.778808593750028],[101.5560546875,5.907763671875003],[101.1139648437501,5.636767578125045],[100.98164062500004,5.771044921875045],[101.05351562500002,6.242578125],[100.87392578125,6.24541015624996],[100.75449218750012,6.460058593749991],[100.3454101562501,6.549902343750006],[100.26142578125004,6.682714843749963],[100.11914062499997,6.441992187500048],[99.69599609375004,6.87666015625004],[99.72031250000012,7.106201171875],[99.55302734375002,7.218798828125031],[99.59697265625002,7.355615234375009],[99.35859375000004,7.372216796875023],[99.26367187499997,7.619042968750037],[99.07763671874997,7.718066406250045],[99.05107421875002,7.887841796874994],[98.78867187500012,8.059814453125028],[98.703515625,8.256738281250009],[98.57919921875006,8.344287109374989],[98.42099609375006,8.17822265625],[98.30546875000007,8.226220703125009],[98.24179687500006,8.767871093750045],[98.70253906250005,10.19038085937504],[98.7572265625,10.660937499999974],[99.1901367187501,11.105273437499989],[99.61474609374997,11.781201171875026],[99.40507812500002,12.547900390625003],[99.12392578125,13.030761718750043],[99.13681640625006,13.716699218749994],[98.57001953125004,14.359912109375031],[98.20214843749997,14.97592773437502],[98.19101562500012,15.204101562499972],[98.55693359375007,15.367675781249986],[98.59238281250006,16.05068359375005],[98.81796875000012,16.180810546874994],[98.88828125000006,16.351904296875034],[98.83544921875003,16.417578125],[98.66074218750006,16.330419921875006],[98.4388671875,16.975683593750034],[97.7064453125,17.79711914062503],[97.63222656250005,18.290332031250074],[97.37392578125,18.51796875],[97.74589843750002,18.58818359374999],[97.816796875,19.459960937500057],[98.01503906250005,19.74951171874997],[98.37128906250004,19.68916015625004],[98.9166992187501,19.77290039062504],[99.07421875000003,20.09936523437503],[99.48593750000006,20.14985351562501],[99.45888671875005,20.363037109375],[99.72011718750005,20.32543945312497],[99.8903320312501,20.424414062499977],[99.9542968750001,20.415429687500023],[100.0036132812501,20.37958984375001],[100.12246093750005,20.316650390625057]]]]},"properties":{"name":"Thailand","childNum":4}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[70.66416015625,39.85546875],[70.55957031250003,39.790917968749994],[70.48925781250003,39.86303710937503],[70.48281250000005,39.88271484375005],[70.49775390625004,39.88242187499998],[70.56708984375004,39.86660156250005],[70.66416015625,39.85546875]]],[[[70.95800781250003,40.238867187500034],[70.59921875,39.974511718749994],[69.96679687499997,40.202246093750034],[69.46875,40.020751953125],[69.47099609375002,39.990625],[69.43193359375007,39.909765625000034],[69.36542968750004,39.94707031250002],[69.30722656250006,39.968554687500045],[69.27880859374997,39.91777343749999],[69.24472656250006,39.82709960937498],[69.29765625000007,39.52480468750005],[70.50117187500004,39.58735351562501],[70.79931640625003,39.39472656250001],[71.4703125,39.60366210937502],[71.50302734375006,39.58217773437502],[71.51738281250002,39.55385742187502],[71.50585937499997,39.51708984374997],[71.5033203125,39.47880859374999],[71.73222656250002,39.422998046874994],[71.77861328125007,39.27797851562502],[72.04277343750002,39.352148437500034],[72.08417968750004,39.310644531250034],[72.14736328125005,39.26074218749997],[72.22998046874997,39.20751953124997],[72.63994140625002,39.385986328125],[73.10927734375,39.36191406249998],[73.2349609375,39.37456054687499],[73.3361328125001,39.41235351562506],[73.38740234375004,39.442724609375034],[73.4704101562501,39.46059570312502],[73.63164062500007,39.44887695312502],[73.63632812500006,39.396679687499955],[73.60732421875,39.229199218749955],[73.8052734375,38.968652343749994],[73.69609375000007,38.85429687499996],[73.80166015625,38.60688476562501],[74.02558593750004,38.53984375000002],[74.27744140625,38.659765625000034],[74.81230468750002,38.46030273437498],[74.8942382812501,37.60141601562498],[75.11875,37.38569335937498],[74.89130859375004,37.231640624999955],[74.875390625,37.24199218750002],[74.83046875,37.28593750000002],[74.73056640625006,37.35703125],[74.659375,37.39448242187501],[74.34902343750005,37.41875],[74.25966796875005,37.41542968750002],[74.20351562500005,37.37246093750005],[74.16708984375,37.32944335937498],[73.74960937500006,37.23178710937498],[73.6535156250001,37.239355468750034],[73.62753906250006,37.261572265625006],[73.71728515625003,37.32944335937498],[73.7337890625,37.37578125000002],[73.72060546875,37.41875],[73.65712890625005,37.43046875],[73.6046875000001,37.44604492187503],[73.48134765625,37.4716796875],[73.38291015625006,37.462255859375034],[73.21113281250004,37.40849609375002],[72.89550781250003,37.26752929687498],[72.65742187500004,37.029052734375],[71.665625,36.696923828124994],[71.530859375,36.845117187499994],[71.43291015625007,37.12753906249998],[71.5822265625001,37.91010742187498],[71.55195312500004,37.93315429687496],[71.48779296874997,37.93188476562497],[71.38964843750003,37.90629882812502],[71.31992187500006,37.90185546875],[71.27851562500004,37.91840820312498],[71.33271484375004,38.170263671875034],[71.25585937499997,38.306982421875006],[70.7359375,38.42255859375001],[70.41777343750002,38.075439453125],[70.21464843750002,37.92441406250006],[70.19941406250004,37.88603515624996],[70.25498046875006,37.76538085937497],[70.25146484374997,37.66416015625006],[70.18867187500004,37.58247070312501],[70.11982421875004,37.54350585937499],[69.9849609375,37.566162109375],[69.8208984375,37.60957031250004],[69.62578125000002,37.59404296874999],[69.49208984375,37.55307617187498],[69.42011718750004,37.486718749999966],[69.39921875000007,37.39931640625002],[69.42968749999997,37.290869140625034],[69.414453125,37.20776367187497],[69.35380859375007,37.15004882812502],[69.3039062500001,37.11694335937503],[69.26484375000004,37.1083984375],[69.18017578125003,37.158300781250034],[68.96044921875003,37.32504882812498],[68.9118164062501,37.33393554687501],[68.88525390624997,37.32807617187498],[68.85537109375005,37.31684570312501],[68.83847656250006,37.30283203124998],[68.82373046874997,37.27070312500001],[68.78203125000002,37.25800781250001],[68.7232421875,37.26801757812501],[68.6691406250001,37.258398437500006],[68.3869140625001,37.1375],[68.29951171875004,37.08842773437502],[68.28476562500006,37.036328124999955],[68.2609375000001,37.01308593750002],[68.2121093750001,37.02153320312496],[68.0677734375,36.949804687500006],[67.95800781249997,36.972021484375006],[67.83447265624997,37.06420898437506],[67.75898437500004,37.172216796875034],[67.7980468750001,37.244970703125006],[67.81435546875005,37.48701171875004],[68.3502929687501,38.211035156250006],[68.08720703125002,38.47353515625002],[68.13251953125004,38.927636718749966],[67.69443359375006,38.99462890625003],[67.64833984375005,39.13105468750004],[67.3576171875001,39.216699218749994],[67.426171875,39.46557617187497],[67.71904296875007,39.62138671875002],[68.46328125,39.53671874999998],[68.63896484375007,39.8388671875],[68.86875,39.90747070312503],[68.80468750000003,40.05034179687499],[68.9720703125,40.08994140624998],[68.63066406250007,40.16708984374998],[69.27490234374997,40.19809570312498],[69.20625,40.566552734374994],[69.35722656250002,40.76738281249996],[69.71289062500003,40.65698242187503],[70.40195312500006,41.03510742187498],[70.75107421875006,40.721777343750006],[70.37158203125003,40.38413085937506],[70.653125,40.201171875],[70.95800781250003,40.238867187500034]]]]},"properties":{"name":"Tajikistan","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[66.52226562500007,37.34848632812506],[66.471875,37.3447265625],[65.7650390625,37.56914062499996],[65.55498046875002,37.25117187500004],[65.30361328125005,37.24677734375001],[65.08964843750007,37.237939453124994],[64.9515625,37.19355468750001],[64.81630859375005,37.13208007812503],[64.7824218750001,37.05927734375001],[64.60253906250003,36.554541015625034],[64.5658203125,36.427587890625034],[64.51103515625002,36.34067382812498],[64.184375,36.14892578125],[63.8625,36.012353515624994],[63.12998046875006,35.84619140624997],[63.169726562500074,35.678125],[63.05664062500003,35.44580078125003],[62.98027343750002,35.40917968750003],[62.85800781250006,35.34965820312499],[62.688085937500006,35.25532226562504],[62.3078125000001,35.17080078125005],[62.08964843750002,35.3796875],[61.62099609375005,35.43232421875004],[61.34472656249997,35.62949218750006],[61.26201171875002,35.61958007812498],[61.25214843750004,35.86762695312498],[61.15292968750006,35.97675781250001],[61.212011718750006,36.190527343750034],[61.11962890625003,36.64257812500003],[60.34130859375003,36.63764648437501],[60.06279296875002,36.962890625],[59.454980468749994,37.25283203125002],[59.30175781249997,37.51064453125005],[58.81542968750003,37.683496093749994],[58.261621093749994,37.665820312500045],[57.35371093750004,37.97333984374998],[57.1935546875001,38.216406250000034],[56.440625,38.249414062499994],[56.272070312500006,38.080419921875034],[55.38085937500003,38.051123046875034],[54.90009765625004,37.77792968750006],[54.6994140625001,37.47016601562498],[53.91416015625006,37.34355468750002],[53.86865234375003,38.949267578125045],[53.70458984375003,39.209570312500034],[53.33632812500005,39.34082031250006],[53.15664062499999,39.26499023437506],[53.23564453125002,39.608544921874966],[53.603125,39.546972656250034],[53.472265625,39.66879882812498],[53.48730468749997,39.909375],[52.9875,39.98759765625002],[53.03554687500005,39.7744140625],[52.80468749999997,40.054003906250045],[52.73369140625002,40.39873046875002],[52.943457031250006,41.03808593750006],[53.1452148437501,40.82495117187497],[53.61523437500003,40.818505859374994],[53.87001953125005,40.64868164062503],[54.37734375,40.693261718749966],[54.319433593750006,40.83457031249998],[54.68505859375003,40.873046875],[54.70371093750006,41.071142578125034],[54.094824218750006,41.51938476562506],[53.80468749999997,42.11762695312498],[53.16416015625006,42.09379882812502],[52.97001953125002,41.97622070312505],[52.81484375,41.711816406249994],[52.850390625000074,41.20029296875006],[52.4938476562501,41.780371093750034],[53.0558593750001,42.14775390624999],[54.120996093749994,42.335205078125],[54.85380859375002,41.965185546875006],[55.434375,41.296289062499994],[55.97744140625005,41.32221679687504],[57.01796875,41.26347656249996],[57.11884765625004,41.35029296874998],[56.96406250000004,41.856542968750006],[57.290625,42.123779296875],[57.814257812500074,42.18984375000005],[58.02890625,42.48764648437506],[58.474414062500074,42.29936523437496],[58.15156250000004,42.628076171874966],[58.477148437500006,42.66284179687503],[58.5890625000001,42.778466796874966],[59.35429687500002,42.32329101562496],[59.98515625000002,42.21171875],[59.94179687499999,41.97353515625002],[60.20078125000006,41.803125],[60.07558593750005,41.759667968749966],[60.089648437500074,41.39941406250003],[60.454980468749994,41.221630859374955],[61.2423828125001,41.18920898437503],[61.496972656249994,41.276074218749955],[61.90283203124997,41.09370117187501],[62.48320312500002,39.97563476562496],[63.76367187500003,39.16054687499999],[64.3099609375,38.97729492187497],[65.612890625,38.23857421875002],[65.97119140624997,38.244238281250006],[66.60625,37.98671875000005],[66.52558593750004,37.785742187500034],[66.51132812500006,37.59916992187496],[66.51064453125,37.45869140625004],[66.52226562500007,37.34848632812506]]]},"properties":{"name":"Turkmenistan","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[124.0363281250001,-9.341601562500031],[124.44443359375012,-9.190332031250023],[124.28232421875012,-9.427929687500026],[124.0363281250001,-9.341601562500031]]],[[[125.06816406250002,-9.511914062499997],[124.96015625000004,-9.213769531250009],[125.10048828125,-9.189843750000023],[125.14902343750012,-9.042578125000034],[124.93681640625007,-9.053417968750026],[124.92226562500005,-8.942480468749977],[125.17802734375002,-8.647851562499994],[125.38183593749997,-8.575390624999983],[126.61972656250006,-8.459472656249986],[126.96640625000012,-8.315722656250017],[127.29609375000004,-8.424511718749969],[126.91523437500004,-8.715234374999966],[125.40800781250002,-9.275781250000023],[125.06816406250002,-9.511914062499997]]],[[[125.64609375000006,-8.139941406250003],[125.5794921875,-8.311816406250017],[125.50712890625007,-8.275097656249997],[125.64609375000006,-8.139941406250003]]]]},"properties":{"name":"Timor-Leste","childNum":3}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-175.1619140625,-21.169335937500023],[-175.07817382812496,-21.129003906249977],[-175.15659179687495,-21.26367187499997],[-175.36235351562496,-21.106835937499994],[-175.1619140625,-21.169335937500023]]],[[[-173.953515625,-18.63935546875001],[-174.06914062500002,-18.640234375],[-173.96806640624993,-18.565332031250023],[-173.953515625,-18.63935546875001]]]]},"properties":{"name":"Tonga","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[-61.012109374999966,10.134326171874989],[-61.906103515625006,10.069140625000031],[-61.49931640624999,10.268554687499972],[-61.47827148437497,10.603369140624977],[-61.65117187499993,10.718066406249974],[-60.917626953124966,10.84023437499999],[-61.03374023437502,10.669873046875026],[-61.012109374999966,10.134326171874989]]]},"properties":{"name":"Trinidad and Tobago","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[10.957617187500063,33.72207031250005],[10.722070312500051,33.738916015624994],[10.745214843750063,33.88867187500006],[11.017871093749989,33.82333984374998],[10.957617187500063,33.72207031250005]]],[[[11.278027343750068,34.753808593749994],[11.123632812500063,34.68168945312496],[11.254882812500057,34.82031250000006],[11.278027343750068,34.753808593749994]]],[[[10.274609375000011,31.684960937499994],[10.114941406250068,31.46376953125005],[10.216406250000063,30.78320312500003],[10.05976562500004,30.58007812500003],[9.932519531250051,30.42534179687496],[9.895019531250028,30.387304687500034],[9.51875,30.229394531249994],[9.224023437500023,31.373681640624994],[9.160253906250006,31.621337890625],[9.044042968750034,32.072363281250034],[8.333398437500051,32.54360351562502],[8.1125,33.055322265624994],[7.877246093750017,33.172119140625],[7.534375,33.717919921874994],[7.513867187500068,34.080517578124955],[8.24560546875,34.73408203124998],[8.276855468750057,34.97949218749997],[8.312109375000063,35.084619140624994],[8.394238281250011,35.20385742187503],[8.318066406250011,35.654931640624994],[8.348730468750063,36.367968750000045],[8.207617187500006,36.518945312499994],[8.601269531250068,36.83393554687504],[8.576562500000023,36.93720703125001],[9.687988281250057,37.34038085937499],[9.838476562500063,37.30898437499999],[9.830273437499983,37.13535156250006],[9.875585937499977,37.25415039062503],[10.196386718750063,37.205859375000045],[10.293261718750074,36.781494140625],[10.412304687499983,36.73183593750002],[11.053906250000068,37.07250976562506],[11.12666015625004,36.874072265625045],[10.476562500000028,36.175146484375006],[10.590820312500028,35.88725585937499],[11.00429687500008,35.63383789062496],[11.120117187500057,35.24028320312499],[10.69091796875,34.67846679687503],[10.118359375000068,34.280078125000045],[10.049023437500068,34.056298828124994],[10.305273437500034,33.72827148437497],[10.713183593750017,33.68901367187496],[10.722753906250006,33.514404296875],[10.958007812500057,33.62631835937498],[11.257421875000034,33.30883789062506],[11.202636718749972,33.24921874999998],[11.50458984375004,33.181933593750045],[11.502441406250028,33.15556640624999],[11.467187500000051,32.96572265625005],[11.459179687500011,32.897363281249966],[11.453906250000017,32.64257812500003],[11.533789062500034,32.52495117187496],[11.535937500000017,32.47333984375001],[11.504980468750034,32.413671875000034],[11.358007812500006,32.34521484375003],[11.168261718750074,32.25673828125002],[11.005175781250074,32.17270507812506],[10.826367187500068,32.080664062500034],[10.771582031250006,32.02119140625001],[10.60888671875,31.929541015624977],[10.47578125000004,31.736035156249983],[10.274609375000011,31.684960937499994]]]]},"properties":{"name":"Tunisia","childNum":3}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[25.970019531250045,40.136328125],[25.6689453125,40.13588867187502],[25.918359375000023,40.23798828125004],[25.970019531250045,40.136328125]]],[[[43.43339843750002,41.155517578125],[43.43945312500003,41.10712890625001],[43.72265624999997,40.71953124999999],[43.56933593750003,40.48237304687498],[43.66621093750004,40.12636718750002],[44.28925781250004,40.040380859375006],[44.76826171875004,39.70351562500005],[44.81718750000002,39.65043945312496],[44.58710937500004,39.76855468750006],[44.3893554687501,39.422119140625],[44.02324218750002,39.37744140625006],[44.27167968750004,38.83603515625006],[44.2985351562501,38.38627929687499],[44.4499023437501,38.33422851562506],[44.21132812499999,37.908056640625006],[44.589941406250006,37.710351562499966],[44.574023437500074,37.435400390625006],[44.79414062500004,37.290380859375034],[44.76513671875003,37.142431640625006],[44.73095703124997,37.16528320312503],[44.66933593750005,37.17358398437503],[44.60595703124997,37.176025390625],[44.401953125,37.05849609375002],[44.325585937499994,37.0107421875],[44.28183593750006,36.97802734374997],[44.24570312500006,36.983300781249994],[44.20166015624997,37.05180664062502],[44.208398437499994,37.20263671875],[44.19179687499999,37.249853515625034],[44.15625,37.28295898437503],[44.11445312500004,37.30185546875006],[44.01318359375003,37.313525390625045],[43.83642578124997,37.223535156249994],[43.67578125000003,37.227246093749955],[43.09248046875004,37.36738281249998],[42.936621093750006,37.32475585937502],[42.77460937500004,37.371875],[42.74111328125005,37.361914062500034],[42.6354492187501,37.249267578125],[42.45585937500002,37.128710937500045],[42.358984375,37.10859375000004],[42.31289062499999,37.22958984374998],[42.26855468749997,37.276562499999955],[42.24755859375003,37.28222656250006],[42.20273437500006,37.29726562499999],[42.16787109375005,37.28862304687502],[42.059863281250074,37.2060546875],[41.886816406250006,37.156396484374994],[40.70566406250006,37.09770507812502],[40.4503906250001,37.00888671875006],[40.016406250000074,36.82607421875002],[39.68652343749997,36.73862304687506],[39.50146484374997,36.702246093750034],[39.35664062500004,36.68159179687498],[39.10839843749997,36.68056640625005],[38.90644531250004,36.69467773437498],[38.76660156249997,36.69311523437503],[38.19169921875002,36.90156250000004],[37.90664062500005,36.79462890625001],[37.7203125,36.74370117187502],[37.52353515625006,36.678320312500034],[37.436328125000074,36.643310546875],[37.327050781249994,36.64658203125006],[37.18740234375005,36.655908203124994],[37.066210937500074,36.652636718750045],[36.98535156250003,36.70239257812506],[36.94179687499999,36.758398437500006],[36.77656250000004,36.79267578124998],[36.65859375000005,36.80253906250002],[36.62841796875003,36.777685546875034],[36.596875,36.70136718750001],[36.546679687500074,36.50634765625],[36.5375,36.457421874999966],[36.63671874999997,36.233984375],[36.37539062499999,36.171240234375034],[36.347558593749994,36.003515625000034],[36.20195312500002,35.93754882812502],[36.15361328125002,35.83388671875005],[36.12734375,35.831445312499994],[35.967578125000074,35.91005859375002],[35.89267578125006,35.91655273437502],[35.81093750000005,36.30986328125002],[36.18847656250003,36.65898437499999],[36.048925781250006,36.91059570312501],[35.393164062500006,36.57519531249997],[34.70361328125003,36.81679687499999],[33.694726562499994,36.18198242187498],[32.794824218749994,36.03588867187497],[32.37773437500002,36.18364257812496],[32.02197265625003,36.53530273437502],[31.35253906249997,36.80107421874999],[30.64404296874997,36.86567382812501],[30.446093750000074,36.269873046875034],[29.6890625,36.15668945312498],[29.22363281249997,36.32446289062497],[28.96962890625008,36.71533203125003],[28.303710937500057,36.81196289062498],[28.01943359375005,36.63447265624998],[28.083984375000057,36.75146484375],[27.453906250000017,36.712158203125],[28.00537109375003,36.83198242187498],[28.242382812500068,37.029052734375],[27.262988281250045,36.97656250000003],[27.30019531250005,37.12685546875002],[27.53505859375005,37.16386718750002],[27.06796875,37.65791015625004],[27.224414062500074,37.725439453125006],[27.23242187500003,37.978662109374994],[26.29072265625001,38.27719726562498],[26.44130859375005,38.64121093749998],[26.67421875000008,38.33574218750002],[27.14423828125001,38.45195312499996],[26.906835937500034,38.48173828124999],[26.763671875,38.709619140624966],[27.013671875000057,38.88686523437502],[26.814941406250057,38.96098632812502],[26.853613281250034,39.115625],[26.68183593750004,39.292236328125],[26.89921874999999,39.549658203125034],[26.113085937500074,39.46738281249998],[26.101367187500074,39.56894531249998],[26.18134765625004,39.99008789062498],[26.738085937500045,40.40024414062506],[27.28457031250008,40.45561523437496],[27.4755859375,40.319921875000034],[27.72802734375,40.32880859374998],[27.84853515625005,40.38173828125002],[27.73183593750008,40.48149414062499],[27.87490234375008,40.512939453125],[27.989550781250074,40.48945312500001],[27.96259765625001,40.369873046875],[29.00712890624999,40.389746093750034],[28.787890625000017,40.534033203125034],[28.95800781250003,40.63056640624998],[29.849218750000063,40.760107421875006],[29.113867187499977,40.93784179687506],[29.14814453125004,41.221044921875034],[31.25488281249997,41.10761718750001],[31.45800781249997,41.32001953125004],[32.306445312500074,41.72958984374998],[33.38134765625003,42.01757812500003],[34.75048828124997,41.95683593749999],[35.006445312500006,42.06328125000002],[35.15488281250006,42.02753906250001],[35.12207031250003,41.89111328125003],[35.297753906249994,41.72851562500003],[35.558007812499994,41.63403320312506],[36.05175781249997,41.68256835937498],[36.40537109375006,41.27460937500001],[36.77773437499999,41.36347656250001],[37.066210937500074,41.184423828125034],[38.38105468750004,40.92451171875001],[39.426367187500006,41.10644531250003],[40.26523437500006,40.96132812500005],[41.08359375000006,41.26118164062504],[41.41435546875002,41.42363281249999],[41.510058593750074,41.51748046875002],[41.70175781250006,41.471582031249994],[41.77939453125006,41.44052734374998],[41.823535156250074,41.432373046875],[41.92578125000003,41.49565429687502],[42.46640625,41.43984375000002],[42.56738281249997,41.55927734375001],[42.590429687500006,41.57070312500002],[42.60683593750005,41.57880859374998],[42.682421875000074,41.58574218749999],[42.75410156250004,41.57890625000002],[42.787890625000074,41.56372070312503],[42.82167968750005,41.49238281249998],[42.90673828125003,41.46684570312502],[43.05712890625003,41.35283203124996],[43.149023437500006,41.30712890624997],[43.171289062499994,41.28793945312498],[43.14101562499999,41.26484374999998],[43.15283203124997,41.23642578125006],[43.20546875000005,41.19916992187501],[43.43339843750002,41.155517578125]]],[[[27.47480468750001,41.946875],[28.014453125000017,41.96904296874999],[28.197851562500063,41.55449218750002],[29.057226562500006,41.22973632812503],[28.95625,41.00820312499999],[28.172167968750074,41.08071289062502],[27.49941406250005,40.97314453124997],[27.258007812499983,40.687353515625006],[26.772070312500034,40.498046875],[26.202734375000034,40.07539062500004],[26.25380859375005,40.31469726562503],[26.792089843750034,40.626611328124994],[26.10546875000003,40.61132812499997],[26.03896484375008,40.726757812499955],[26.331054687500057,40.954492187499994],[26.330664062499977,41.23876953125],[26.62490234375008,41.401757812499994],[26.581347656250074,41.60126953125004],[26.320898437500034,41.716552734375],[26.3603515625,41.80156249999999],[26.51142578125004,41.82636718749998],[26.549707031250023,41.896728515625],[26.5796875,41.947949218749955],[26.615332031250063,41.964892578125045],[26.884863281250006,41.99184570312502],[26.96875,42.02685546875006],[27.01171875,42.05864257812496],[27.193359375000057,42.07709960937498],[27.24433593750004,42.09326171875],[27.294921875000057,42.079541015624955],[27.47480468750001,41.946875]]]]},"properties":{"name":"Turkey","childNum":3}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[39.71132812499999,-7.977441406250023],[39.602929687499994,-7.936132812499949],[39.907128906249994,-7.649218750000031],[39.71132812499999,-7.977441406250023]]],[[[39.49648437499999,-6.174609375],[39.573046875000074,-6.387402343750011],[39.48095703124997,-6.45371093750002],[39.18232421875004,-6.172558593750026],[39.30898437499999,-5.721972656249974],[39.49648437499999,-6.174609375]]],[[[39.86503906250002,-4.906152343750037],[39.74931640625002,-5.443847656249986],[39.646777343750074,-5.368554687500009],[39.6734375,-4.927050781250031],[39.86503906250002,-4.906152343750037]]],[[[33.90322265625005,-1.002050781250034],[37.643847656250074,-3.045410156250028],[37.608203125000074,-3.497070312500028],[39.221777343750006,-4.692382812500014],[38.80468750000003,-6.070117187500031],[38.87402343750003,-6.33125],[39.5460937500001,-7.024023437500034],[39.288476562499994,-7.517871093750003],[39.28701171875005,-7.787695312500006],[39.4284179687501,-7.81279296874996],[39.441015625,-8.011523437499946],[39.304003906250074,-8.44384765625],[39.451269531250006,-8.94296875],[39.64130859375004,-9.19248046875002],[39.72519531250006,-10.000488281249972],[40.46357421875004,-10.464355468749972],[39.98867187499999,-10.820800781250014],[39.81708984375004,-10.912402343750031],[38.9875,-11.167285156250003],[38.49179687500006,-11.413281250000026],[37.92021484375002,-11.294726562500031],[37.72480468750004,-11.58066406250002],[37.54169921875004,-11.675097656249974],[37.37285156250002,-11.710449218749986],[36.97890625000005,-11.566992187499977],[36.30566406250003,-11.706347656249946],[36.191308593749994,-11.670703124999974],[36.17548828125004,-11.60927734374998],[36.08222656250004,-11.537304687499969],[35.91132812500004,-11.45468750000002],[35.785449218750074,-11.452929687500017],[35.63095703125006,-11.582031250000028],[35.564355468749994,-11.602343749999989],[35.418261718750074,-11.583203125],[35.18261718750003,-11.574804687499977],[34.95947265625003,-11.578125],[34.93701171874997,-11.463476562500034],[34.890625,-11.3935546875],[34.77382812500005,-11.341699218750009],[34.60791015624997,-11.08046875],[34.66708984375006,-10.792480468750028],[34.56992187500006,-10.241113281249966],[34.32089843750006,-9.731542968749977],[33.99560546875003,-9.495410156250003],[33.88886718750004,-9.670117187499983],[32.91992187500003,-9.407421875000026],[32.75664062500002,-9.322265625],[31.94257812500004,-9.05400390624996],[31.91865234375004,-8.942187500000017],[31.886132812499994,-8.921972656249977],[31.81806640625004,-8.902246093749952],[31.673632812500017,-8.908789062499963],[31.55625,-8.80546875],[31.44921874999997,-8.65390625],[31.35058593750003,-8.607031250000034],[31.07636718750004,-8.611914062499963],[30.968359375000063,-8.550976562499983],[30.89199218750005,-8.473730468749963],[30.830664062500063,-8.385546875000031],[30.720898437500097,-8.104394531250037],[30.40673828125003,-7.460644531249983],[30.313183593750097,-7.203710937499949],[30.212695312500017,-7.037890625000017],[30.10625,-6.915039062500028],[29.961816406249994,-6.803125],[29.798144531250017,-6.691894531249957],[29.70966796875004,-6.61689453125004],[29.590625,-6.394433593750023],[29.540820312500017,-6.313867187500037],[29.50625,-6.172070312500011],[29.480078125,-6.025],[29.490820312500063,-5.96542968750002],[29.59638671875004,-5.775976562499963],[29.60703125,-5.722656250000028],[29.59414062500005,-5.650781250000037],[29.542382812499994,-5.499804687500017],[29.34277343749997,-4.983105468749997],[29.32343750000004,-4.898828124999966],[29.32568359374997,-4.835644531249969],[29.404199218749994,-4.49667968750002],[29.40322265625005,-4.449316406249963],[29.71777343750003,-4.45585937499996],[29.94726562499997,-4.307324218749983],[30.4,-3.65390625],[30.790234375000097,-3.274609375000011],[30.811132812500006,-3.116406250000011],[30.78027343750003,-2.984863281249957],[30.70947265624997,-2.977246093749997],[30.604296875000074,-2.935253906249969],[30.515039062499994,-2.917578125],[30.45556640625003,-2.893164062500006],[30.433496093749994,-2.874511718750028],[30.424023437500097,-2.82402343749996],[30.473339843750097,-2.6943359375],[30.42421875000005,-2.641601562500014],[30.441992187500006,-2.613476562499969],[30.53369140624997,-2.426269531250014],[30.55361328125005,-2.400097656250011],[30.593359375000063,-2.39677734374996],[30.65664062500005,-2.373828124999989],[30.71484375000003,-2.363476562500011],[30.7625,-2.371679687499991],[30.828710937500006,-2.338476562499977],[30.85498046874997,-2.265429687500017],[30.8765625,-2.143359375000017],[30.864648437499994,-2.044042968749949],[30.819140625000017,-1.967480468749983],[30.812597656250006,-1.56308593750002],[30.76220703124997,-1.458691406249983],[30.710742187500074,-1.396777343749974],[30.631933593750006,-1.36748046874996],[30.508105468750074,-1.208203125000026],[30.47021484374997,-1.13115234374996],[30.47705078124997,-1.0830078125],[30.509960937500097,-1.067285156249994],[30.51992187499999,-1.0625],[30.67275390625005,-1.051367187499949],[30.741992187500017,-1.007519531249997],[30.809179687500063,-0.994921875],[30.82363281250005,-0.999023437499943],[30.84472656250003,-1.002050781250034],[32.371875,-1.002050781250034],[33.90322265625005,-1.002050781250034]]]]},"properties":{"name":"Tanzania","childNum":4}},{"geometry":{"type":"Polygon","coordinates":[[[30.50996093750001,-1.067285156250009],[30.46992187500001,-1.066015625],[30.41230468750001,-1.063085937500006],[30.360253906250023,-1.074609375],[29.930078125000023,-1.469921875000011],[29.82539062500001,-1.335546875],[29.576953125000017,-1.387890625000011],[29.717675781250023,0.098339843749997],[29.934472656250023,0.4990234375],[29.94287109375,0.819238281249994],[31.252734375000017,2.044580078124994],[31.176367187500006,2.270068359374989],[30.728613281250006,2.455371093749989],[30.8466796875,2.847021484374991],[30.754003906250006,3.041796874999989],[30.90644531250001,3.408935546875],[30.83857421875001,3.49072265625],[31.15234375,3.785595703124997],[31.547167968750017,3.677587890624991],[31.79804687500001,3.802636718749994],[32.13593750000001,3.519726562499997],[32.33574218750002,3.706201171874994],[32.99726562500001,3.880175781249989],[33.489355468750006,3.755078125],[33.568457031250006,3.81171875],[33.74160156250002,3.985253906249994],[33.97607421875,4.22021484375],[34.13203125000001,3.88916015625],[34.18574218750001,3.869775390624994],[34.1650390625,3.81298828125],[34.26708984375,3.733154296875],[34.39287109375002,3.691503906249991],[34.43769531250001,3.650585937499997],[34.44179687500002,3.60625],[34.3994140625,3.412695312499991],[34.4072265625,3.357519531249991],[34.447851562500006,3.163476562499994],[34.90576171875,2.4796875],[34.88300781250001,2.417919921874997],[34.96406250000001,2.062402343749994],[34.9775390625,1.861914062499991],[34.97646484375002,1.719628906249994],[34.79863281250002,1.24453125],[34.48173828125002,1.042138671874994],[34.41083984375001,0.867285156249991],[34.16093750000002,0.605175781249997],[33.94316406250002,0.173779296874997],[33.90322265625002,-1.002050781250006],[32.371875,-1.002050781250006],[30.8447265625,-1.002050781250006],[30.823632812500023,-0.9990234375],[30.809179687500006,-0.994921875],[30.741992187500017,-1.007519531250011],[30.672753906250023,-1.051367187500006],[30.598730468750006,-1.069726562500009],[30.519921875000023,-1.0625],[30.50996093750001,-1.067285156250009]]]},"properties":{"name":"Uganda","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[32.01220703124997,46.20390624999999],[32.15009765625004,46.1546875],[31.56386718750005,46.25776367187504],[31.50878906250003,46.373144531250006],[32.01220703124997,46.20390624999999]]],[[[38.21435546875003,47.091455078124966],[37.54335937499999,47.07456054687498],[36.794824218749994,46.71440429687499],[36.55878906250004,46.76269531250006],[35.82714843749997,46.62431640625002],[35.01455078125005,46.10600585937502],[35.280175781249994,46.27949218750001],[35.23037109375005,46.440625],[34.84960937500003,46.189892578124955],[35.02285156250005,45.70097656250002],[35.45751953124997,45.316308593749994],[36.170507812500006,45.453076171874955],[36.575,45.3935546875],[36.39335937500002,45.06538085937501],[35.87011718750003,45.005322265624955],[35.472558593749994,45.098486328125006],[35.08769531250002,44.802636718749966],[34.46992187500004,44.7216796875],[33.909960937500074,44.387597656249966],[33.45068359374997,44.553662109374955],[33.55517578125003,45.09765625000003],[32.5080078125001,45.40380859375006],[33.664843750000074,45.94707031249996],[33.59414062500005,46.09624023437499],[33.42988281250004,46.05761718750003],[33.20224609375006,46.17573242187501],[32.47675781250004,46.08369140625001],[31.83125,46.28168945312501],[32.00849609375004,46.42998046875002],[31.554882812500097,46.554296875000034],[32.36132812499997,46.474951171875034],[32.578027343749994,46.615625],[32.04433593750005,46.642480468749966],[31.75917968750005,47.21284179687501],[31.872851562500017,46.649755859375034],[31.532128906249994,46.66474609374998],[31.56337890625005,46.77729492187501],[31.402929687500063,46.62880859375002],[30.796289062499994,46.55200195312503],[30.219042968750074,45.866748046875045],[29.62841796875003,45.722460937500045],[29.705859375000074,45.25991210937505],[29.567675781250074,45.37080078124998],[29.40371093750005,45.419677734375],[29.22353515625005,45.402929687500034],[28.894335937500017,45.28994140625002],[28.78173828125,45.30986328125002],[28.76660156250003,45.28623046874998],[28.78828125000001,45.240966796875],[28.451269531250006,45.292187499999955],[28.317675781250045,45.347119140624955],[28.2125,45.45043945312506],[28.26484375000004,45.48388671875003],[28.310351562500074,45.49858398437499],[28.499023437500057,45.517724609374994],[28.513769531250034,45.57241210937502],[28.49160156250005,45.66577148437503],[28.562304687500074,45.73579101562501],[28.667578125,45.79384765625002],[28.729296875000074,45.852001953124955],[28.73876953125003,45.937158203124994],[28.84951171875005,45.97866210937502],[28.94775390624997,46.049951171874966],[28.971875,46.12763671874998],[29.00625,46.17646484374998],[28.94375,46.28842773437506],[28.930566406250023,46.36225585937501],[28.92744140625001,46.42412109374999],[28.958398437500023,46.45849609374997],[29.146289062500017,46.52690429687496],[29.186230468750068,46.52397460937499],[29.20078125,46.504980468750034],[29.20458984374997,46.37934570312501],[29.223828125000097,46.37695312499997],[29.458789062500017,46.453759765624994],[29.83789062499997,46.35053710937501],[29.878027343750063,46.360205078125034],[30.07568359375003,46.377832031249966],[30.131054687500097,46.42309570312506],[29.92431640624997,46.53886718750002],[29.934765625000097,46.625],[29.942480468750063,46.72377929687502],[29.918066406250063,46.78242187499998],[29.877832031249994,46.828906250000045],[29.57197265625004,46.96401367187502],[29.455664062500006,47.292626953124994],[29.134863281250006,47.48969726562501],[29.125390625000023,47.96455078125001],[28.42304687500001,48.146875],[28.34052734375001,48.144433593749994],[27.54921875000008,48.47773437500004],[27.22851562500003,48.37143554687506],[26.90058593750001,48.37192382812506],[26.847070312500023,48.387158203124955],[26.640429687500045,48.29414062500001],[26.618945312500017,48.25986328125006],[26.4423828125,48.22998046875],[26.162695312500063,47.992529296875034],[25.90869140625,47.96757812500002],[25.689257812500045,47.93247070312506],[25.46425781250005,47.910791015624994],[24.979101562500063,47.72412109374997],[24.578906250000074,47.93105468750005],[23.628710937500017,47.995849609375],[23.40820312500003,47.98999023437506],[23.20263671875,48.084521484375045],[23.13945312499999,48.08740234375],[22.87666015625001,47.94726562500006],[22.769140625000063,48.109619140625],[22.582421875000023,48.134033203125],[22.253710937500017,48.407373046874994],[22.131835937500057,48.40532226562502],[22.142871093750017,48.568505859374966],[22.295214843750045,48.68583984374999],[22.389453125000045,48.87348632812501],[22.52412109375004,49.03139648437502],[22.538671875,49.07270507812501],[22.847070312500023,49.08125],[22.705664062500006,49.17119140624999],[22.6494140625,49.53901367187498],[22.706152343750006,49.60620117187497],[23.03632812500004,49.899072265624966],[23.711718750000045,50.377343749999966],[23.97265625,50.410058593749966],[24.089941406250006,50.53046874999998],[24.0947265625,50.617041015625034],[23.9970703125,50.809375],[24.095800781250063,50.87275390625001],[23.664453125000023,51.31005859375],[23.61376953125,51.525390625],[23.706835937500045,51.64130859374998],[23.79169921875001,51.63710937500002],[23.864257812500057,51.62397460937501],[23.951171875,51.58505859374998],[23.978320312500017,51.59130859375003],[24.12685546875008,51.664648437500034],[24.280078125000017,51.77470703124999],[24.361914062500006,51.86752929687498],[25.785742187500006,51.923828125],[26.77343750000003,51.77070312499998],[26.952832031249983,51.754003906250034],[27.074121093750023,51.760839843750006],[27.14199218750008,51.75205078124998],[27.29628906250008,51.59741210937503],[27.689746093750017,51.572412109374994],[27.7,51.47797851562501],[27.85859375000004,51.59238281250006],[28.532031250000017,51.56245117187501],[28.59902343750008,51.54262695312505],[28.647753906250074,51.45654296875],[28.690234375000017,51.43886718750005],[28.73125,51.43339843749999],[28.84951171875005,51.540185546874994],[28.927539062500045,51.56215820312502],[28.97773437500004,51.57177734375003],[29.01308593750005,51.59892578124996],[29.06074218750001,51.625439453124955],[29.102050781250057,51.627539062500034],[29.346484375000017,51.38256835937503],[30.160742187500006,51.477880859375006],[30.449511718750017,51.274316406249994],[30.63251953125004,51.35541992187501],[30.61171875000005,51.406347656250006],[30.602343750000017,51.47124023437499],[30.56074218750004,51.531494140625],[30.533007812500017,51.596337890624966],[30.583886718749994,51.68896484375003],[30.667285156250017,51.81411132812502],[30.755273437499994,51.89516601562502],[30.84570312500003,51.95307617187501],[30.980664062500097,52.04619140624996],[31.217968750000097,52.05024414062498],[31.345996093750074,52.10537109375002],[31.57373046875003,52.108105468749955],[31.763378906250097,52.10107421875003],[32.12226562500004,52.05058593749996],[32.435449218749994,52.307226562500034],[33.735253906249994,52.344775390625045],[34.397851562499994,51.780419921874994],[34.12109375000003,51.67915039062498],[34.21386718750003,51.25537109375006],[35.0640625,51.203417968750045],[35.31191406250005,51.043896484374955],[35.59111328125002,50.36875],[36.1164062500001,50.408544921875006],[36.619433593750074,50.209228515625],[37.42285156249997,50.411474609375006],[38.046875,49.92001953125006],[38.258593750000074,50.05234375],[38.91835937499999,49.82470703125],[39.17480468750003,49.85595703124997],[39.780566406250074,49.57202148437503],[40.080664062500006,49.576855468749955],[40.10878906250005,49.251562500000034],[39.68652343749997,49.007910156250034],[40.00361328125004,48.82207031250002],[39.792871093749994,48.807714843750034],[39.6447265625001,48.591210937499966],[39.8356445312501,48.54277343749996],[39.95791015625005,48.268896484375034],[39.77871093750005,47.88754882812506],[38.90029296875005,47.85512695312502],[38.36884765625004,47.609960937500006],[38.21435546875003,47.091455078124966]]]]},"properties":{"name":"Ukraine","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[-57.81059570312499,-30.85859375000001],[-57.872509765625,-30.59101562500001],[-57.831201171874994,-30.495214843750006],[-57.71269531249999,-30.38447265625001],[-57.65087890625,-30.295019531250006],[-57.645751953125,-30.226953125],[-57.60888671875,-30.187792968750003],[-57.55229492187499,-30.26123046875],[-57.21445312499999,-30.28339843750001],[-57.186914062499994,-30.26484375000001],[-57.120507812499994,-30.14443359375001],[-56.83271484375,-30.107226562500003],[-56.4072265625,-30.44746093750001],[-55.998974609375,-30.837207031250003],[-56.018457031249994,-30.99189453125001],[-56.00468749999999,-31.079199218750006],[-55.873681640624994,-31.069628906250003],[-55.6271484375,-30.85810546875001],[-55.60302734375,-30.85078125000001],[-55.55732421875,-30.8759765625],[-55.17353515625,-31.279589843750003],[-55.09116210937499,-31.31396484375],[-55.036035156249994,-31.27900390625001],[-54.587646484375,-31.48515625],[-54.22055664062499,-31.85517578125001],[-53.76171875,-32.05683593750001],[-53.601708984374994,-32.40302734375001],[-53.12558593749999,-32.73671875],[-53.2140625,-32.82109375],[-53.31010742187499,-32.92705078125],[-53.39521484375,-33.010351562500006],[-53.482861328125,-33.06855468750001],[-53.511865234374994,-33.10869140625],[-53.53134765624999,-33.1708984375],[-53.53134765624999,-33.65546875000001],[-53.37060546875,-33.7421875],[-53.419580078124994,-33.77919921875001],[-53.47246093749999,-33.84931640625001],[-53.53452148437499,-34.01748046875001],[-53.742919921875,-34.24951171875],[-53.785302734374994,-34.38037109375],[-54.16855468749999,-34.670703125],[-54.902294921875,-34.93281250000001],[-55.67314453124999,-34.77568359375],[-56.249951171875,-34.90126953125001],[-57.17070312499999,-34.45234375000001],[-57.8291015625,-34.47734375],[-58.40019531249999,-33.91240234375],[-58.363525390625,-33.18232421875001],[-58.08232421874999,-32.893652343750006],[-58.12958984375,-32.75722656250001],[-58.16220703124999,-32.566503906250006],[-58.201171875,-32.4716796875],[-58.123046875,-32.321875],[-58.11972656249999,-32.24892578125001],[-58.164794921875,-32.18486328125],[-58.177001953125,-32.11904296875001],[-58.15634765624999,-32.0515625],[-58.160400390625,-31.98652343750001],[-58.18901367187499,-31.92421875],[-58.16748046875,-31.87265625],[-58.04233398437499,-31.76923828125001],[-58.006982421874994,-31.68496093750001],[-58.053857421874994,-31.494921875],[-58.0333984375,-31.416601562500006],[-57.89335937499999,-31.1953125],[-57.868408203125,-31.10439453125001],[-57.88632812499999,-30.93740234375001],[-57.81059570312499,-30.85859375000001]]]},"properties":{"name":"Uruguay","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-155.58134765624996,19.012011718750017],[-155.88129882812495,19.07050781250001],[-156.04868164062498,19.749951171874983],[-155.82031249999997,20.01416015624997],[-155.83164062499998,20.27583007812501],[-155.198779296875,19.99438476562503],[-154.80419921875,19.524462890625045],[-155.58134765624996,19.012011718750017]]],[[[-156.84960937499997,20.772656249999955],[-156.97338867187497,20.757519531249983],[-157.0505859375,20.912451171875034],[-156.88056640624995,20.904833984375074],[-156.84960937499997,20.772656249999955]]],[[[-156.48681640624994,20.93256835937504],[-156.27753906250004,20.951269531250034],[-155.98984374999998,20.75712890624999],[-156.40878906249998,20.60517578125004],[-156.480078125,20.80122070312501],[-156.69775390625003,20.949072265625034],[-156.58540039062495,21.034326171874994],[-156.48681640624994,20.93256835937504]]],[[[-157.21362304687497,21.215380859375017],[-156.71215820312506,21.155078125000074],[-156.85986328125,21.05634765625004],[-157.29033203124996,21.112597656250017],[-157.21362304687497,21.215380859375017]]],[[[-157.79936523437502,21.456640625000034],[-157.63540039062502,21.30761718749997],[-158.11035156249994,21.318603515625],[-158.27314453125,21.585253906250045],[-157.9625,21.701367187499983],[-157.79936523437502,21.456640625000034]]],[[[-159.37275390625,21.93237304687497],[-159.60883789062495,21.909521484375034],[-159.78916015625003,22.041796875000074],[-159.57919921874998,22.22314453124997],[-159.35205078124997,22.219580078125034],[-159.37275390625,21.93237304687497]]],[[[-81.04418945312503,24.716796875000057],[-81.137353515625,24.710498046875017],[-80.93046875,24.75947265625004],[-81.04418945312503,24.716796875000057]]],[[[-80.3818359375,25.142285156249955],[-80.58056640624997,24.954248046875023],[-80.25708007812497,25.34760742187504],[-80.3818359375,25.142285156249955]]],[[[-97.17070312499996,26.159375],[-97.40209960937494,26.820507812499983],[-97.38598632812494,27.19648437500004],[-97.17070312499996,26.159375]]],[[[-80.18676757812497,27.278417968750034],[-80.17050781250003,27.20478515625004],[-80.43691406249994,27.850537109374955],[-80.18676757812497,27.278417968750034]]],[[[-91.793701171875,29.50073242187497],[-92.00664062499996,29.61030273437501],[-91.875244140625,29.640966796875034],[-91.793701171875,29.50073242187497]]],[[[-84.90791015624998,29.642626953125017],[-85.11674804687499,29.63281249999997],[-84.737158203125,29.732421875],[-84.90791015624998,29.642626953125017]]],[[[-89.22397460937498,30.084082031249977],[-89.34199218749995,30.062841796875006],[-89.18466796874995,30.168652343749983],[-89.22397460937498,30.084082031249977]]],[[[-118.34794921875002,33.3857421875],[-118.29746093750003,33.312109375],[-118.44628906249997,33.317089843749955],[-118.56943359375002,33.46416015624999],[-118.34794921875002,33.3857421875]]],[[[-120.04355468749995,33.918847656249994],[-120.25190429687494,34.01386718749998],[-120.07182617187493,34.026513671874966],[-120.04355468749995,33.918847656249994]]],[[[-119.88237304687497,34.07968749999998],[-119.54926757812497,34.02817382812506],[-119.80957031249997,33.9677734375],[-119.88237304687497,34.07968749999998]]],[[[-75.54414062499995,35.240087890625034],[-75.69008789062502,35.221582031249994],[-75.53637695312497,35.27861328124999],[-75.50351562500003,35.769140625],[-75.46474609374994,35.448632812499966],[-75.54414062499995,35.240087890625034]]],[[[-74.13320312500002,39.680761718750034],[-74.25048828125,39.529394531250006],[-74.10673828124996,39.74643554687498],[-74.13320312500002,39.680761718750034]]],[[[-72.50976562500003,40.98603515625001],[-72.58085937499996,40.92133789062498],[-71.90322265625,41.06069335937505],[-73.19428710937495,40.654199218749994],[-74.01489257812497,40.581201171874966],[-73.87924804687498,40.79165039062502],[-73.573828125,40.91962890624998],[-72.62509765624998,40.99184570312505],[-72.27412109374998,41.15302734375001],[-72.50976562500003,40.98603515625001]]],[[[-69.9779296875,41.26557617187504],[-70.23305664062502,41.28632812500001],[-70.04121093750001,41.3974609375],[-69.9779296875,41.26557617187504]]],[[[-70.50991210937502,41.376318359375034],[-70.82919921874995,41.35898437500006],[-70.61601562499996,41.45722656250001],[-70.50991210937502,41.376318359375034]]],[[[-71.24140625000001,41.49194335937497],[-71.34624023437496,41.469384765624994],[-71.23203124999995,41.654296875],[-71.24140625000001,41.49194335937497]]],[[[-68.18725585937497,44.33247070312501],[-68.41171875000003,44.294335937499966],[-68.29941406249998,44.456494140624955],[-68.18725585937497,44.33247070312501]]],[[[-122.394140625,47.39526367187503],[-122.50991210937497,47.358007812500006],[-122.486474609375,47.48876953125],[-122.394140625,47.39526367187503]]],[[[-122.57275390624999,48.15664062499999],[-122.38315429687499,47.923193359375034],[-122.74150390624999,48.22529296875004],[-122.62861328125,48.38422851562498],[-122.54243164062503,48.29399414062499],[-122.69702148437499,48.228662109374994],[-122.57275390624999,48.15664062499999]]],[[[-94.80346679687497,49.0029296875],[-94.71279296874997,48.863427734374994],[-94.62089843749999,48.74262695312501],[-93.85161132812496,48.607275390625034],[-93.70771484374995,48.52543945312499],[-93.37788085937498,48.61655273437498],[-93.25795898437497,48.62885742187501],[-92.83671875,48.567773437499994],[-92.50058593749995,48.43535156250002],[-92.41459960937493,48.276611328125],[-92.3484375,48.276611328125],[-92.00517578125002,48.301855468750006],[-91.38720703124997,48.05854492187498],[-91.04345703125003,48.19370117187498],[-90.84033203125003,48.20053710937506],[-90.79731445312495,48.13105468750001],[-89.4556640625,47.996240234374994],[-88.37817382812497,48.30307617187498],[-87.74389648437497,48.06054687500003],[-87.20800781249997,47.848486328125006],[-86.67216796874996,47.636425781249955],[-85.65224609375,47.21997070312503],[-85.07006835937497,46.97993164062498],[-84.87597656249994,46.89990234375003],[-84.66577148437503,46.54326171875002],[-84.44047851562496,46.49814453125006],[-84.12319335937497,46.50292968749997],[-83.97778320312503,46.08491210937498],[-83.61596679687503,46.116845703124994],[-83.46948242187503,45.99467773437499],[-83.59267578125,45.81713867187506],[-82.91933593749994,45.51796875000002],[-82.55107421874996,45.34736328125001],[-82.48505859374993,45.08374023437503],[-82.137841796875,43.570898437500034],[-82.19038085937495,43.47407226562501],[-82.54531249999997,42.62470703124998],[-83.10952148437497,42.25068359375001],[-83.141943359375,41.97587890624996],[-82.69003906249995,41.675195312499994],[-82.43906249999998,41.67485351562502],[-81.97416992187496,41.88872070312499],[-81.50732421874997,42.10346679687504],[-81.02822265624997,42.247167968750006],[-80.24755859375,42.36601562499996],[-79.17373046875,42.74853515625],[-78.91508789062496,42.90913085937504],[-78.98076171874993,42.98061523437502],[-79.02617187499996,43.01733398437506],[-79.066064453125,43.10610351562502],[-79.171875,43.466552734375],[-79.00249023437502,43.52714843749999],[-78.845556640625,43.58334960937498],[-78.72041015625001,43.62495117187501],[-78.45825195312497,43.63149414062502],[-77.596533203125,43.62861328124998],[-76.819970703125,43.62880859375002],[-76.18579101562503,44.24223632812502],[-75.81933593749997,44.468017578125],[-75.40126953124997,44.77226562499999],[-74.99614257812496,44.970117187499966],[-74.76245117187494,44.99907226562502],[-74.663232421875,45.00390625000003],[-71.51752929687495,45.00756835937497],[-71.327294921875,45.29008789062496],[-70.86503906249999,45.27070312500001],[-70.296240234375,45.90610351562506],[-70.00771484375002,46.70893554687501],[-69.24287109374998,47.46298828124998],[-69.0501953125,47.426611328125034],[-68.93720703124998,47.21123046875002],[-68.23549804687502,47.34594726562503],[-67.806787109375,47.08281249999999],[-67.80224609374994,45.7275390625],[-67.43266601562496,45.603125],[-67.366943359375,45.17377929687498],[-67.12485351562498,45.16943359375],[-66.98701171874995,44.82768554687502],[-67.191259765625,44.67558593750002],[-67.83906249999998,44.576269531250034],[-68.056640625,44.38432617187502],[-68.15205078124998,44.50200195312499],[-68.45058593749997,44.50761718749999],[-68.53251953124996,44.25864257812498],[-68.81191406249994,44.33935546875],[-68.76269531249994,44.57075195312498],[-69.22607421875003,43.98647460937505],[-69.52075195312503,43.89736328125002],[-69.55668945312496,43.982763671875006],[-69.62392578125,43.88061523437497],[-69.65288085937493,43.99389648437506],[-69.808349609375,43.772314453125034],[-69.965234375,43.855078125],[-70.17880859374998,43.76635742187506],[-70.73310546875001,43.07001953125004],[-70.82905273437493,42.82534179687502],[-70.61293945312497,42.623242187499955],[-71.04619140624993,42.331103515625045],[-70.73828125,42.228857421875006],[-70.42666015625002,41.75727539062501],[-70.00141601562498,41.82617187500003],[-70.24106445312495,42.09121093750002],[-70.10893554687496,42.07832031249998],[-69.97788085937498,41.961279296875006],[-69.94863281249997,41.67714843750005],[-70.65712890625,41.53422851562496],[-70.70112304687498,41.71484375],[-71.1685546875,41.489404296874994],[-71.14873046874996,41.74570312499998],[-71.27109375,41.68125],[-71.39013671875003,41.79531250000005],[-71.52285156249997,41.378955078125045],[-72.92470703125002,41.28515625000003],[-73.98710937499999,40.751367187499994],[-73.87197265625,41.05517578124997],[-73.96992187499995,41.24970703125001],[-73.92719726562495,40.914257812499955],[-74.26420898437496,40.52861328124999],[-73.972265625,40.40034179687498],[-74.079931640625,39.78813476562496],[-74.06459960937497,39.99311523437498],[-74.79448242187499,39.00190429687501],[-74.95429687499995,38.949951171875],[-74.89702148437502,39.14545898437504],[-75.52421874999999,39.49018554687501],[-75.421875,39.78969726562502],[-75.07416992187495,39.98349609375006],[-75.40063476562503,39.83159179687502],[-75.58759765625001,39.64077148437505],[-75.3921875,39.09277343750006],[-75.08867187499999,38.777539062499955],[-75.18710937499995,38.59111328124999],[-75.03876953124993,38.426367187500006],[-75.934375,37.15190429687496],[-75.97504882812498,37.3984375],[-75.65927734374995,37.953955078125034],[-75.850830078125,37.971582031249994],[-75.85869140624999,38.36206054687503],[-76.05122070312495,38.27954101562503],[-76.2646484375,38.436425781249994],[-76.26416015625,38.599951171875006],[-76.016943359375,38.62509765624998],[-76.21298828124998,38.75830078125003],[-76.34116210937498,38.70966796874998],[-76.16816406249998,38.85273437499998],[-76.32958984375,38.95278320312505],[-76.13520507812493,39.082128906250006],[-76.23569335937498,39.19160156250001],[-76.153125,39.315039062500034],[-75.87597656249997,39.3759765625],[-76.003125,39.41083984375001],[-75.87294921874997,39.510888671874966],[-75.95893554687498,39.58505859374998],[-76.2763671875,39.32275390625],[-76.330810546875,39.40390625],[-76.42089843749997,39.225],[-76.57041015624995,39.26933593749996],[-76.42758789062498,39.12602539062499],[-76.55854492187493,39.065234375000045],[-76.39409179687502,38.368994140625034],[-76.67734374999998,38.611962890624966],[-76.66855468749998,38.5375],[-76.34116210937498,38.08701171875006],[-76.86811523437495,38.39028320312502],[-76.88974609375,38.292089843750006],[-77.00117187499995,38.44526367187504],[-77.23251953125,38.40771484375003],[-77.03037109374995,38.88925781249998],[-77.26040039062502,38.6],[-77.27324218749996,38.35175781249998],[-77.04677734375002,38.356689453125],[-76.26425781250003,37.89355468749997],[-76.34414062499997,37.675683593749994],[-76.49248046874999,37.682226562500006],[-77.11108398437497,38.165673828124994],[-76.54946289062494,37.66914062500001],[-76.30556640625,37.57148437500001],[-76.26347656249996,37.35703125],[-76.40097656249998,37.386132812499994],[-76.45390624999993,37.27353515625006],[-76.75771484375002,37.50541992187496],[-76.28330078125,37.05268554687501],[-76.40087890624997,36.991308593750034],[-76.63090820312493,37.22172851562499],[-77.25087890624994,37.329199218750034],[-76.671875,37.172949218750006],[-76.48784179687502,36.89702148437499],[-75.99941406249997,36.91264648437499],[-75.53417968749997,35.81909179687506],[-75.94648437499995,36.65908203125002],[-75.99277343749995,36.47377929687502],[-75.82006835937494,36.11284179687502],[-76.14785156250002,36.279296875],[-76.15,36.14575195312497],[-76.27060546874998,36.18989257812501],[-76.22739257812498,36.11601562499996],[-76.559375,36.015332031249955],[-76.733642578125,36.229150390624994],[-76.726220703125,35.957617187500034],[-76.06977539062501,35.970312500000034],[-76.08359374999998,35.69052734375006],[-75.85390625,35.96015625000001],[-75.75883789062499,35.84326171875],[-75.77392578124997,35.64697265624997],[-76.17382812499997,35.354150390624994],[-76.489501953125,35.397021484375045],[-76.57719726562502,35.53232421874998],[-76.74140624999998,35.431494140625034],[-77.03999023437495,35.527392578125045],[-76.51293945312497,35.270410156249994],[-76.77915039062503,34.990332031250034],[-77.07026367187501,35.154638671875034],[-76.97495117187503,35.025195312500045],[-76.74497070312498,34.94096679687502],[-76.45673828124998,34.989355468750034],[-76.36220703125,34.9365234375],[-76.43979492187498,34.84291992187502],[-77.29624023437503,34.602929687499994],[-77.41225585937497,34.730810546875034],[-77.37978515625,34.526611328125],[-77.750732421875,34.28496093749996],[-77.92783203125,33.93974609374999],[-77.95327148437494,34.16899414062496],[-78.01333007812502,33.91181640624998],[-78.40585937499995,33.91757812499998],[-78.84145507812497,33.72407226562501],[-79.19379882812498,33.24414062500003],[-79.22646484375,33.40488281249998],[-79.27602539062497,33.135400390624966],[-79.80498046874999,32.78740234374996],[-79.93310546874997,32.81005859375006],[-79.94072265625002,32.667138671874966],[-80.36284179687496,32.500732421875],[-80.6341796875,32.51171875000003],[-80.474267578125,32.42275390625002],[-80.579345703125,32.28730468750004],[-80.80253906249999,32.44804687500002],[-80.69423828124997,32.21572265625002],[-81.11328124999997,31.87861328125001],[-81.06611328124995,31.787988281250023],[-81.259375,31.538916015624977],[-81.17543945312494,31.531298828125017],[-81.38095703124998,31.353271484375],[-81.28847656249997,31.263916015625],[-81.441748046875,31.19970703124997],[-81.5162109375,30.801806640625017],[-81.24951171875003,29.793798828125006],[-80.52412109374995,28.48608398437503],[-80.5849609375,28.271582031250034],[-80.456884765625,27.90068359374996],[-80.61000976562494,28.177587890624977],[-80.60693359375003,28.522900390624983],[-80.693505859375,28.34497070312497],[-80.68847656250003,28.578515625000023],[-80.83818359374999,28.757666015625034],[-80.74863281250003,28.381005859375023],[-80.050048828125,26.807714843750063],[-80.1263671875,25.83349609375],[-80.48466796874999,25.229833984375034],[-81.11049804687494,25.138037109374977],[-81.13603515624999,25.309667968750034],[-80.94042968750003,25.264208984375017],[-81.11333007812499,25.367236328125045],[-81.36494140625001,25.83105468750003],[-81.715478515625,25.98315429687503],[-81.95893554687495,26.489941406249983],[-81.82866210937496,26.68706054687499],[-82.03959960937496,26.552050781250017],[-82.01328125,26.96157226562505],[-82.24287109374998,26.848876953125],[-82.44135742187501,27.059667968750034],[-82.71459960937497,27.499609375000063],[-82.40576171874994,27.862890624999977],[-82.67519531249994,27.963769531250023],[-82.61098632812502,27.77724609375005],[-82.74287109374995,27.709375],[-82.84350585937494,27.845996093750017],[-82.65146484375,28.8875],[-83.69438476562502,29.92597656250001],[-84.04423828124996,30.10380859374999],[-84.30966796874995,30.064746093750045],[-84.38281250000003,29.90737304687505],[-85.31894531249995,29.680224609375045],[-85.413818359375,29.76757812499997],[-85.413818359375,29.842480468749955],[-85.31489257812493,29.758105468750017],[-85.35361328125,29.875732421875],[-85.67578125,30.121923828125063],[-85.60351562500003,30.286767578124966],[-85.75581054687495,30.1669921875],[-86.454443359375,30.39912109375004],[-86.12382812499999,30.40581054687499],[-86.25737304687502,30.493017578124977],[-87.201171875,30.339257812499994],[-86.98579101562498,30.43085937500001],[-86.99755859375,30.5703125],[-87.17060546874998,30.538769531249983],[-87.28105468750002,30.339257812499994],[-87.47578124999998,30.294287109375006],[-87.44829101562499,30.394140625],[-87.62226562499998,30.264746093750006],[-88.00595703124998,30.230908203124955],[-87.79028320312503,30.291796875000017],[-88.011328125,30.694189453125006],[-88.13544921874998,30.366601562499994],[-88.90522460937495,30.415136718750006],[-89.32055664062503,30.3453125],[-89.58847656249998,30.165966796874955],[-90.12597656249997,30.369091796874955],[-90.33198242187493,30.277587890625057],[-90.41303710937501,30.140332031249983],[-90.17534179687499,30.02910156249996],[-89.73745117187497,30.171972656250034],[-89.66503906249994,30.117041015625034],[-89.81518554687497,30.007275390624955],[-89.631689453125,29.90380859375003],[-89.400732421875,30.04604492187505],[-89.35444335937501,29.82021484375005],[-89.72089843749995,29.619287109374966],[-89.01572265625,29.202880859375057],[-89.15551757812497,29.01660156250003],[-89.23608398437494,29.081103515625017],[-89.37612304687497,28.981347656250023],[-89.44316406249996,29.194140625000045],[-90.15908203124997,29.537158203125017],[-90.05278320312499,29.336816406249966],[-90.21279296875,29.104931640624983],[-90.37919921874996,29.29511718750001],[-90.75102539062496,29.13085937500003],[-91.29013671875,29.288964843749994],[-91.15078124999994,29.317919921875045],[-91.24882812499993,29.56420898437503],[-91.51420898437499,29.55537109375001],[-91.8931640625,29.836035156249977],[-92.135498046875,29.699462890625057],[-92.08403320312499,29.59282226562499],[-92.26083984374995,29.55683593750004],[-93.17568359375,29.778955078124994],[-93.82646484374999,29.725146484375045],[-93.84145507812502,29.97973632812503],[-93.89047851562495,29.689355468750023],[-94.759619140625,29.384277343750057],[-94.52626953125,29.547949218750006],[-94.77827148437498,29.54785156249997],[-94.74194335937497,29.75],[-95.0228515625,29.70234375000001],[-94.88828125000003,29.37055664062501],[-95.27348632812499,28.96386718750003],[-96.23452148437502,28.488964843749983],[-96.01103515624996,28.631933593749977],[-96.44873046874997,28.594482421875],[-96.64003906249994,28.708789062500017],[-96.42109374999993,28.457324218750045],[-96.67636718749998,28.34130859375003],[-96.77353515624998,28.421630859375057],[-96.839501953125,28.194384765625017],[-97.156494140625,28.144335937500045],[-97.141259765625,28.060742187499983],[-97.034326171875,28.093847656250063],[-97.07309570312498,27.98608398437503],[-97.43149414062498,27.83720703124999],[-97.28872070312494,27.670605468749983],[-97.43911132812502,27.328271484374966],[-97.76845703124997,27.45751953125],[-97.69238281250003,27.287158203125017],[-97.48510742187497,27.237402343750006],[-97.55468749999994,26.96733398437496],[-97.43505859375,26.48583984375003],[-97.14624023437494,25.961474609375045],[-97.37563476562497,25.871826171875],[-99.10776367187498,26.446923828124994],[-99.45654296874999,27.05668945312496],[-99.50532226562497,27.54833984375003],[-100.29604492187495,28.32768554687499],[-100.75458984375001,29.182519531249994],[-101.44038085937503,29.77685546875],[-102.26894531249998,29.871191406250034],[-102.61494140624994,29.75234375],[-102.8919921875,29.216406250000034],[-103.16831054687498,28.998193359374994],[-104.110595703125,29.386132812499994],[-104.50400390624995,29.677685546874955],[-104.97880859374996,30.645947265624955],[-106.14804687499995,31.450927734375],[-106.44541015624996,31.768408203125006],[-108.21181640625002,31.779345703125017],[-108.21445312499993,31.329443359375034],[-111.0419921875,31.32421875000003],[-114.83593749999994,32.50830078125003],[-114.72475585937495,32.71533203125003],[-117.12827148437495,32.533349609374994],[-117.46743164062495,33.295507812500006],[-118.08051757812497,33.72216796874997],[-118.41044921874996,33.74394531249996],[-118.506201171875,34.01738281249999],[-119.14375,34.11201171874998],[-119.60605468749999,34.41801757812499],[-120.48120117187503,34.47163085937498],[-120.64467773437502,34.57998046875002],[-120.65908203124994,35.122412109375034],[-120.85737304687501,35.209667968749955],[-120.899609375,35.42509765624999],[-121.28383789062494,35.67631835937499],[-121.87739257812498,36.33105468749997],[-121.80742187499995,36.851220703124994],[-122.394921875,37.20751953125003],[-122.49921875000001,37.542626953124994],[-122.44560546875002,37.797998046874966],[-122.07050781249998,37.47827148437503],[-122.38544921875001,37.960595703124966],[-122.31425781249999,38.00732421874997],[-121.52534179687503,38.05590820312503],[-122.39335937499995,38.14482421875002],[-122.52133789062499,37.82641601562497],[-122.93198242187498,38.05546875000002],[-122.998779296875,37.98862304687498],[-122.90815429687501,38.19658203124999],[-123.701123046875,38.90727539062502],[-123.83291015624994,39.775488281250034],[-124.35654296875003,40.37109374999997],[-124.07192382812497,41.45952148437502],[-124.53964843750003,42.812890624999966],[-124.14873046874997,43.691748046875034],[-123.92934570312495,45.57695312499996],[-123.989306640625,46.21938476562502],[-123.22060546874998,46.153613281250045],[-123.46484375,46.27109374999998],[-124.07275390624996,46.279443359374994],[-124.04433593750002,46.605078125],[-123.946142578125,46.43256835937501],[-123.88916015625003,46.660009765625006],[-124.11254882812497,46.862695312499994],[-123.84287109375002,46.963183593750045],[-124.11171875,47.03520507812496],[-124.1392578125,46.95468749999998],[-124.376025390625,47.658642578124955],[-124.66308593749996,47.97412109375003],[-124.7099609375,48.38037109375],[-123.97578125,48.16845703125],[-122.97387695312499,48.07329101562496],[-122.77861328125,48.13759765625002],[-122.65664062500002,47.88115234374999],[-122.77841796874996,47.738427734374966],[-122.82138671875,47.79316406250001],[-123.1390625,47.386083984375034],[-122.92216796874993,47.40766601562498],[-123.066796875,47.39965820312506],[-123.04863281249995,47.479345703125034],[-122.53281250000002,47.919726562500045],[-122.67548828124995,47.612353515625045],[-122.57788085937496,47.29316406250001],[-122.76777343750001,47.21835937500006],[-122.82846679687503,47.336572265624994],[-123.02758789062501,47.13891601562503],[-122.70195312500002,47.11088867187502],[-122.35380859374996,47.37158203125],[-122.40180664062497,47.78427734374998],[-122.24199218750002,48.01074218750003],[-122.5169921875,48.15966796874997],[-122.40854492187502,48.29389648437498],[-122.66899414062496,48.465234374999966],[-122.49677734374995,48.50556640625001],[-122.51274414062502,48.66943359375],[-122.56201171875001,48.777978515624994],[-122.68593749999995,48.794287109375034],[-122.72246093750002,48.85302734375003],[-122.78876953125003,48.993017578125034],[-121.40722656249994,48.993017578125034],[-119.70170898437495,48.993017578125034],[-119.27534179687494,48.99306640625005],[-118.84892578124993,48.99306640625005],[-117.99619140625002,48.99306640625005],[-116.71704101562501,48.99306640625005],[-110.74765625,48.99306640625005],[-104.77832031249997,48.993115234374955],[-98.80898437499995,48.99316406249997],[-97.52983398437493,48.99316406249997],[-96.67705078124993,48.99316406249997],[-96.25068359374993,48.99316406249997],[-95.39790039062493,48.99316406249997],[-95.16206054687493,48.991748046875045],[-95.15527343749997,49.36967773437502],[-94.85434570312495,49.304589843749994],[-94.86040039062493,49.258593750000045],[-94.80346679687497,49.0029296875]]],[[[-176.28671874999998,51.79199218750006],[-176.34965820312502,51.733300781249994],[-176.41372070312502,51.840576171875],[-176.28671874999998,51.79199218750006]]],[[[-177.87905273437502,51.64970703125002],[-178.05888671875,51.67260742187497],[-177.98637695312493,51.76425781249998],[-178.16826171874996,51.90302734375001],[-177.644482421875,51.826269531250006],[-177.87905273437502,51.64970703125002]]],[[[-177.14819335937497,51.71674804687498],[-177.67021484375002,51.701074218749994],[-177.11005859375,51.92875976562502],[-177.14819335937497,51.71674804687498]]],[[[-176.593310546875,51.86669921875],[-176.45234374999995,51.735693359375034],[-176.96162109374998,51.60366210937505],[-176.69833984374998,51.986035156249955],[-176.593310546875,51.86669921875]]],[[[179.72773437500015,51.905419921874966],[179.50390625000003,51.97958984374998],[179.6271484375001,52.03041992187502],[179.72773437500015,51.905419921874966]]],[[[177.4154296875,51.88281249999997],[177.25029296875013,51.902929687500006],[177.6696289062501,52.10302734375],[177.4154296875,51.88281249999997]]],[[[-173.5533203125,52.13627929687502],[-173.02290039062504,52.07915039062502],[-173.83579101562498,52.048193359375006],[-173.99248046874993,52.12333984374996],[-173.5533203125,52.13627929687502]]],[[[-172.464794921875,52.27226562500002],[-172.61982421874998,52.27285156250005],[-172.47041015625,52.38803710937506],[-172.31362304687497,52.32958984375006],[-172.464794921875,52.27226562500002]]],[[[-174.67739257812502,52.035009765625006],[-175.29555664062502,52.022167968749955],[-174.30615234375,52.216162109375034],[-174.43554687499997,52.317236328125034],[-174.168896484375,52.42016601562503],[-174.04560546875,52.36723632812499],[-174.12065429687493,52.13520507812498],[-174.67739257812502,52.035009765625006]]],[[[173.72275390625018,52.35957031250004],[173.40234375000009,52.40478515625],[173.77607421875004,52.49511718750003],[173.72275390625018,52.35957031250004]]],[[[172.81181640625002,53.01298828125002],[173.43603515625003,52.85205078125],[172.93515625000012,52.752099609374966],[172.49482421875004,52.93789062499999],[172.81181640625002,53.01298828125002]]],[[[-167.96435546875003,53.345117187499994],[-169.088916015625,52.83203125],[-168.68984375000002,53.227246093749955],[-168.38041992187496,53.28344726562506],[-168.28769531249998,53.500146484374966],[-167.82807617187495,53.50795898437505],[-167.96435546875003,53.345117187499994]]],[[[-166.61533203124998,53.90092773437499],[-166.37231445312494,53.99897460937498],[-166.230859375,53.93261718750006],[-166.54560546875,53.726464843749966],[-166.354541015625,53.67353515625004],[-166.85097656249997,53.45288085937503],[-167.78085937500003,53.30024414062501],[-167.13608398437503,53.526464843750006],[-167.01572265625003,53.69838867187502],[-166.80898437500002,53.64614257812505],[-166.741259765625,53.71293945312496],[-167.10561523437497,53.813378906249994],[-167.03808593749997,53.9421875],[-166.67329101562498,54.00595703124998],[-166.61533203124998,53.90092773437499]]],[[[-165.841552734375,54.070654296875006],[-166.05664062500003,54.054345703124994],[-166.08774414062498,54.16914062500001],[-165.89287109375,54.20698242187498],[-165.69287109375,54.09990234375002],[-165.841552734375,54.070654296875006]]],[[[-165.56113281249998,54.13671874999997],[-165.55063476562498,54.28452148437498],[-165.40786132812502,54.19682617187496],[-165.56113281249998,54.13671874999997]]],[[[-162.29814453124993,54.847021484375006],[-162.43388671875,54.931542968749994],[-162.26459960937504,54.983496093750006],[-162.29814453124993,54.847021484375006]]],[[[-163.476025390625,54.98071289062497],[-163.37895507812496,54.81552734374998],[-163.083251953125,54.66899414062496],[-163.35810546874995,54.73569335937506],[-164.82343749999998,54.41909179687505],[-164.887646484375,54.60781250000002],[-164.47861328124998,54.906835937500006],[-163.80712890624997,55.04907226562503],[-163.476025390625,54.98071289062497]]],[[[-159.51513671875,55.15185546875003],[-159.617724609375,55.05732421875004],[-159.54506835937497,55.22597656250002],[-159.51513671875,55.15185546875003]]],[[[-131.33974609375002,55.079833984375],[-131.32954101562498,54.887744140625045],[-131.592236328125,55.02568359374999],[-131.5654296875,55.26411132812498],[-131.33974609375002,55.079833984375]]],[[[-159.87299804687495,55.128759765625034],[-160.22705078124997,54.92270507812506],[-160.17207031249995,55.123046875],[-159.88735351562497,55.27299804687502],[-159.87299804687495,55.128759765625034]]],[[[-132.86225585937504,54.894433593749966],[-132.61723632812493,54.892431640625006],[-132.70581054687497,54.684179687500034],[-133.42905273437498,55.30380859374998],[-133.097412109375,55.213720703125006],[-132.86225585937504,54.894433593749966]]],[[[-160.329296875,55.337695312500045],[-160.34331054687493,55.25878906250006],[-160.51748046875,55.33383789062506],[-160.329296875,55.337695312500045]]],[[[-160.68491210937498,55.314794921875006],[-160.552783203125,55.38076171875002],[-160.48754882812503,55.18486328124999],[-160.79506835937497,55.14521484375001],[-160.72392578124993,55.404638671875006],[-160.68491210937498,55.314794921875006]]],[[[-133.30507812500002,55.54375],[-133.6501953125,55.26928710937506],[-133.73710937500002,55.49692382812498],[-133.30507812500002,55.54375]]],[[[-155.56601562500003,55.82119140625005],[-155.73735351562493,55.82978515625001],[-155.59394531250004,55.92431640625],[-155.56601562500003,55.82119140625005]]],[[[-130.97915039062502,55.489160156249994],[-131.187890625,55.206298828125],[-131.44755859374996,55.40878906250006],[-131.7625,55.16582031250002],[-131.84609374999997,55.41625976562497],[-131.62495117187504,55.831689453124966],[-131.26923828125004,55.95537109375002],[-130.997802734375,55.727636718750006],[-130.97915039062502,55.489160156249994]]],[[[-133.56611328125,56.33920898437498],[-133.202978515625,56.31982421875003],[-133.096630859375,56.09003906250001],[-132.59760742187504,55.89501953125],[-132.17270507812498,55.48061523437502],[-132.51127929687493,55.59394531250001],[-132.63129882812495,55.47319335937502],[-132.41787109375002,55.48291015625006],[-132.20668945312497,55.22441406249996],[-131.97641601562498,55.208593750000034],[-132.06474609375002,54.713134765625],[-133.11855468750002,55.32763671875003],[-132.95888671875002,55.39555664062502],[-133.0333984375,55.589697265625034],[-133.68017578124994,55.78515625],[-133.24150390624993,55.920800781249994],[-133.371240234375,56.035888671875],[-133.74252929687498,55.96484375],[-133.530859375,56.145654296874966],[-133.56611328125,56.33920898437498]]],[[[-132.77988281249998,56.24726562499998],[-133.03500976562498,56.34091796875006],[-132.90205078124998,56.45375976562505],[-132.62910156249995,56.411914062500045],[-132.77988281249998,56.24726562499998]]],[[[-132.11235351562493,56.109375],[-132.13295898437497,55.94326171875005],[-132.28730468749995,55.92939453124998],[-132.65991210937503,56.07817382812499],[-132.379833984375,56.49877929687497],[-132.06689453125,56.24423828124998],[-132.11235351562493,56.109375]]],[[[-154.208642578125,56.51489257812497],[-154.32221679687504,56.570605468750045],[-154.11040039062496,56.602929687499966],[-154.208642578125,56.51489257812497]]],[[[-169.755224609375,56.63505859375002],[-169.47431640624998,56.59404296875002],[-169.6326171875,56.545703125000045],[-169.755224609375,56.63505859375002]]],[[[-132.746875,56.525683593750045],[-132.94804687500002,56.56723632812498],[-132.842529296875,56.79477539062506],[-132.56796875000003,56.57583007812505],[-132.746875,56.525683593750045]]],[[[-133.98959960937503,56.84497070312497],[-133.73837890625,56.65043945312496],[-133.94970703125,56.12773437499996],[-134.18959960937502,56.07695312500002],[-134.084375,56.456347656250045],[-134.37368164062502,56.838671875000045],[-134.14326171874998,56.93232421875001],[-133.98959960937503,56.84497070312497]]],[[[-133.36621093750006,57.003515625000034],[-132.99624023437497,56.93041992187497],[-132.95917968749998,56.67705078124996],[-133.03491210937494,56.62075195312505],[-133.32895507812498,56.83007812499997],[-133.158154296875,56.495166015625045],[-133.4841796875,56.45175781249998],[-133.979443359375,57.009570312500045],[-133.36621093750006,57.003515625000034]]],[[[-153.007080078125,57.12485351562498],[-153.37460937499998,57.05190429687505],[-153.285205078125,57.18505859375],[-152.90839843750004,57.152441406250006],[-153.007080078125,57.12485351562498]]],[[[-134.96977539062496,57.351416015625034],[-134.62070312499998,56.71831054687502],[-134.68188476562503,56.216162109375034],[-134.98056640625003,56.518945312499994],[-134.88344726562497,56.679052734375034],[-135.33061523437505,56.821875],[-135.19960937499997,57.02734375],[-135.45493164062503,57.24941406250005],[-135.81230468750002,57.00952148437503],[-135.82275390625,57.280419921874966],[-135.448681640625,57.534375],[-134.96977539062496,57.351416015625034]]],[[[-152.89804687499998,57.82392578125004],[-152.42875976562493,57.82568359375003],[-152.48261718749998,57.70332031249998],[-152.21621093749997,57.577001953125006],[-152.41220703125003,57.454785156249955],[-152.94077148437498,57.49809570312499],[-152.67905273437503,57.345117187499994],[-153.274365234375,57.22636718749996],[-153.732568359375,57.052343750000034],[-153.643310546875,56.960742187500045],[-154.02734375,56.77797851562502],[-153.793212890625,56.98950195312503],[-154.24375,57.143017578124955],[-154.33896484374998,56.9208984375],[-154.67319335937498,57.44609375],[-154.11616210937498,57.651220703125006],[-153.6876953125,57.30512695312504],[-153.841552734375,57.86284179687496],[-153.48793945312497,57.73095703125],[-153.21748046875004,57.79575195312506],[-153.16044921875,57.97197265624999],[-152.85039062499993,57.896777343750045],[-152.89804687499998,57.82392578125004]]],[[[-135.73037109375002,58.244238281250034],[-135.61323242187507,57.99184570312505],[-135.346630859375,58.12412109374998],[-134.9546875,58.01533203125004],[-134.97065429687495,57.817236328125006],[-135.33847656250003,57.768652343750034],[-134.97885742187503,57.724365234375],[-134.93149414062498,57.48115234375001],[-135.564208984375,57.66640625],[-135.691943359375,57.41992187500006],[-135.91079101562502,57.44658203124999],[-136.568603515625,57.97216796875003],[-136.32197265625,58.21889648437502],[-136.14375,58.098486328125006],[-136.09438476562502,58.198144531249966],[-135.73037109375002,58.244238281250034]]],[[[-134.68027343749998,58.16166992187499],[-134.24008789062498,58.143994140624955],[-133.82275390624997,57.62866210937503],[-134.29233398437498,58.044726562500074],[-133.91113281250003,57.3525390625],[-134.51601562499997,57.042578125],[-134.48676757812495,57.48203125],[-134.92348632812497,58.354638671874966],[-134.68027343749998,58.16166992187499]]],[[[-152.416943359375,58.360205078125034],[-151.974365234375,58.30986328124999],[-152.068896484375,58.17792968750001],[-152.26835937499993,58.25170898437506],[-152.30922851562502,58.133886718750034],[-152.5982421875,58.16259765625],[-152.92841796875004,57.99370117187499],[-153.38134765625003,58.08720703125002],[-152.976123046875,58.29702148437505],[-152.771875,58.278564453125],[-152.84111328125002,58.41640625000002],[-152.416943359375,58.360205078125034]]],[[[-152.486083984375,58.485009765624966],[-152.63662109375002,58.54169921874998],[-152.3955078125,58.619384765625],[-152.486083984375,58.485009765624966]]],[[[-160.918994140625,58.57709960937498],[-161.13149414062502,58.668212890625],[-160.71513671875005,58.79521484375002],[-160.918994140625,58.57709960937498]]],[[[-148.02177734375,60.06533203125005],[-148.271875,60.05327148437499],[-148.07958984375003,60.151660156250045],[-148.02177734375,60.06533203125005]]],[[[-147.735888671875,59.81323242187503],[-147.76806640625,59.94375],[-147.180859375,60.358251953125034],[-147.01987304687498,60.33222656249998],[-147.735888671875,59.81323242187503]]],[[[-166.13544921875,60.38354492187503],[-165.72968750000004,60.31420898437503],[-165.591796875,59.913134765625045],[-166.14873046874996,59.764111328124955],[-167.13886718749998,60.00854492187503],[-167.43642578125002,60.20664062500006],[-166.836328125,60.21699218750004],[-166.47568359374998,60.382763671874955],[-166.13544921875,60.38354492187503]]],[[[-146.3939453125,60.44965820312501],[-146.10224609374998,60.41118164062499],[-146.61831054687497,60.27368164062503],[-146.70253906249997,60.40854492187498],[-146.3939453125,60.44965820312501]]],[[[-147.658251953125,60.45048828124999],[-147.787841796875,60.17792968749998],[-147.89145507812498,60.299414062500034],[-147.658251953125,60.45048828124999]]],[[[-172.74223632812496,60.45737304687498],[-172.23208007812494,60.299121093750074],[-172.63574218750003,60.328857421875],[-173.04765625000002,60.56831054687501],[-172.74223632812496,60.45737304687498]]],[[[-171.46303710937494,63.640039062499994],[-171.03486328125,63.58549804687499],[-170.29936523437502,63.68061523437501],[-169.55454101562498,63.373486328124955],[-168.71601562500004,63.310595703125045],[-168.76132812500003,63.21376953125002],[-169.364697265625,63.17114257812506],[-169.67636718750003,62.95610351562502],[-169.81860351562494,63.122363281250045],[-170.84838867187494,63.44438476562502],[-171.63183593749997,63.351220703124966],[-171.74638671874993,63.703076171874955],[-171.46303710937494,63.640039062499994]]],[[[-141.00214843750004,68.77416992187506],[-141.00214843750004,67.89755859374998],[-141.00214843750004,66.43652343750006],[-141.00214843750004,65.55991210937498],[-141.00214843750004,64.09887695312506],[-141.00214843750004,63.22226562499998],[-141.00214843750004,61.761279296875045],[-141.00214843750004,60.884667968749994],[-141.00214843750004,60.30024414062504],[-140.76274414062505,60.259130859375006],[-140.525439453125,60.218359375000034],[-140.45283203125004,60.29970703125002],[-139.97329101562497,60.183154296875074],[-139.67631835937505,60.32832031249998],[-139.23476562499997,60.339746093749994],[-139.07924804687497,60.34370117187501],[-139.07924804687497,60.279443359374966],[-139.136962890625,60.17270507812498],[-139.18515624999998,60.083593750000034],[-138.86875,59.94575195312501],[-138.317626953125,59.611132812500074],[-137.59331054687493,59.22626953124998],[-137.52089843750002,58.91538085937498],[-137.43857421875003,58.903125],[-137.2775390625,58.988183593749994],[-137.126220703125,59.04096679687498],[-136.81328125000002,59.150048828124994],[-136.57875976562502,59.15224609375002],[-136.46635742187493,59.459082031250006],[-136.27797851562502,59.48032226562506],[-136.321826171875,59.604833984375034],[-135.70258789062504,59.72875976562506],[-135.36787109374998,59.743310546874994],[-135.051025390625,59.57866210937502],[-134.94375,59.28828125000001],[-134.67724609374997,59.19926757812499],[-134.39306640625,59.009179687499994],[-134.32963867187505,58.93969726562506],[-134.21850585937503,58.849902343750045],[-133.54638671874997,58.50346679687499],[-133.27529296875,58.22285156250004],[-133.00141601562495,57.948974609375],[-132.55048828125,57.499902343749994],[-132.44248046874998,57.40673828125003],[-132.30166015624997,57.27631835937501],[-132.232177734375,57.19853515624999],[-132.27939453124998,57.14536132812498],[-132.33798828124998,57.07944335937506],[-132.15703125,57.048193359375006],[-132.03154296875,57.02656250000004],[-132.062890625,56.95336914062503],[-132.104296875,56.856787109375006],[-131.86616210937495,56.792822265625006],[-131.82426757812496,56.589990234374994],[-131.471875,56.55673828125006],[-130.649072265625,56.26367187500003],[-130.47709960937496,56.230566406250034],[-130.413134765625,56.12250976562498],[-130.09785156249995,56.10927734375002],[-130.01406249999997,55.950537109375006],[-130.2140625,55.02587890625003],[-130.57534179687497,54.769677734374966],[-130.849609375,54.80761718750006],[-131.04785156249997,55.157666015624955],[-130.74819335937502,55.31801757812502],[-131.127685546875,55.96015625000001],[-131.032763671875,56.08808593749998],[-131.78417968749997,55.876562500000034],[-131.98339843749994,55.535009765625006],[-132.15541992187502,55.59956054687501],[-132.20751953124997,55.75341796875],[-131.84384765625003,56.16010742187498],[-131.55136718749998,56.206787109375],[-131.88789062500004,56.24165039062498],[-132.18203125000002,56.42065429687506],[-132.82460937500002,57.05581054687505],[-133.465869140625,57.17216796875002],[-133.64873046874993,57.64228515624998],[-133.11704101562498,57.56621093750002],[-133.535205078125,57.83295898437501],[-133.1943359375,57.87768554687506],[-133.559375,57.924462890624994],[-133.72231445312502,57.84423828125],[-134.03110351562498,58.072167968749966],[-133.87675781249996,58.51816406249998],[-134.20883789062503,58.232958984375045],[-134.77612304687506,58.45385742187503],[-135.36367187500002,59.41943359375],[-135.50234375000002,59.202294921874994],[-135.090234375,58.245849609375],[-135.57177734374994,58.41206054687504],[-135.89755859374998,58.40019531250002],[-136.04311523437497,58.82163085937498],[-135.82636718750004,58.89794921874997],[-136.0166015625,58.87397460937498],[-136.150048828125,59.04809570312503],[-136.22583007812497,58.765478515625006],[-136.98901367187503,59.03447265624999],[-137.05903320312498,58.87373046875001],[-136.613916015625,58.809277343749955],[-136.48374023437503,58.61767578125],[-136.224609375,58.602246093749955],[-136.06147460937495,58.45273437500006],[-136.607421875,58.24399414062498],[-137.54399414062502,58.58120117187502],[-138.51489257812503,59.16591796875005],[-139.77329101562498,59.52729492187504],[-139.51303710937498,59.698095703125006],[-139.5123046875,59.95356445312501],[-139.28671874999998,59.610937500000034],[-139.22080078125003,59.819873046875045],[-138.9880859375,59.83500976562502],[-139.43144531249996,60.012255859375074],[-140.41982421874997,59.71074218750002],[-141.40830078125,59.90278320312498],[-141.408740234375,60.11767578125006],[-141.67016601562497,59.969873046874966],[-142.94565429687503,60.09697265625002],[-144.14721679687494,60.01640625000002],[-144.185498046875,60.150732421875034],[-144.901318359375,60.335156249999955],[-144.69111328125,60.66909179687502],[-145.248291015625,60.38012695312506],[-145.898876953125,60.47817382812505],[-145.67490234374998,60.65112304687503],[-146.57045898437497,60.72915039062502],[-146.39199218749997,60.810839843750045],[-146.63842773437497,60.89731445312498],[-146.59912109374994,61.05351562500002],[-146.284912109375,61.11264648437498],[-147.89111328125,60.889892578125],[-148.00512695312494,60.96855468750002],[-147.75185546874997,61.218945312499955],[-148.34189453125,61.060400390625006],[-148.34443359374998,60.853564453125045],[-148.55615234374994,60.82700195312506],[-148.25673828124997,60.67529296874997],[-148.64013671875,60.48945312500004],[-148.11918945312502,60.57514648437498],[-147.96411132812494,60.48486328124997],[-148.430712890625,59.98911132812498],[-149.2666015625,59.99829101562497],[-149.395263671875,60.10576171875002],[-149.59804687500002,59.77045898437501],[-149.7138671875,59.91958007812502],[-149.80126953124994,59.737939453124966],[-150.00532226562507,59.78442382812503],[-150.19804687499996,59.56655273437505],[-150.60737304687504,59.56337890625002],[-150.934521484375,59.249121093750034],[-151.18276367187502,59.30078124999997],[-151.73818359375002,59.18852539062502],[-151.94951171875,59.26508789062498],[-151.88461914062503,59.386328125],[-151.39960937499995,59.51630859375001],[-151.04648437499998,59.771826171875034],[-151.45009765624997,59.65039062499997],[-151.85322265625,59.78208007812498],[-151.39599609375006,60.27446289062502],[-151.35644531249997,60.72294921874999],[-150.44125976562503,61.02358398437505],[-149.07509765624997,60.87641601562498],[-150.05327148437496,61.17109374999998],[-149.433544921875,61.50078125000002],[-149.97568359374998,61.27934570312502],[-150.61225585937495,61.301123046875006],[-151.59350585937494,60.979638671874966],[-152.54091796874997,60.265429687500045],[-153.025,60.29565429687497],[-152.660107421875,59.99721679687502],[-153.21123046875002,59.84272460937498],[-153.09360351562503,59.70913085937505],[-153.65253906250004,59.64702148437499],[-154.17832031250003,59.155566406250074],[-153.41826171875,58.9599609375],[-153.43759765625003,58.754833984374955],[-154.289013671875,58.30434570312502],[-154.247021484375,58.15942382812497],[-155.006884765625,58.01606445312501],[-155.77797851562497,57.56821289062498],[-156.43588867187498,57.359960937500006],[-156.62900390624998,57.00996093750001],[-158.41440429687498,56.435839843750045],[-158.5521484375,56.31269531249998],[-158.27563476562497,56.19624023437498],[-158.5046875,56.062109375],[-158.59116210937503,56.18452148437498],[-158.78984375000002,55.98691406250006],[-159.52324218749993,55.81000976562498],[-159.65966796875003,55.625927734374955],[-159.77138671874997,55.84111328125002],[-160.49931640625002,55.53730468750004],[-161.38193359374998,55.371289062499955],[-161.44379882812495,55.513281250000034],[-161.202099609375,55.54355468750006],[-161.51694335937503,55.61840820312503],[-162.073974609375,55.13930664062505],[-162.38637695312497,55.05234375],[-162.63037109375003,55.24667968749998],[-162.67436523437505,54.99658203125],[-162.86503906249996,54.954541015624955],[-163.11962890624997,55.06469726562503],[-163.131103515625,54.916552734375045],[-163.33530273437503,54.83916015624999],[-163.27880859374997,55.12182617187503],[-162.906591796875,55.19555664062503],[-161.69731445312502,55.9072265625],[-161.215625,56.02143554687498],[-160.8986328125,55.99365234375],[-161.00537109375,55.88715820312498],[-160.80283203125003,55.754443359375045],[-160.70634765625002,55.870458984375034],[-160.29169921875,55.80507812500005],[-160.53906250000006,56.00629882812501],[-160.30205078125,56.31411132812502],[-158.91801757812502,56.882177734375006],[-158.675146484375,56.79487304687498],[-158.66079101562502,57.03940429687498],[-158.32094726562497,57.29790039062499],[-157.84575195312496,57.52807617187497],[-157.4619140625,57.506201171875034],[-157.697216796875,57.679443359375],[-157.610888671875,58.050830078125074],[-157.19370117187498,58.19418945312506],[-157.48837890624998,58.25371093750002],[-157.52363281249998,58.421337890624955],[-156.97465820312496,58.736328125],[-156.80888671875005,59.13427734375],[-157.14204101562504,58.87763671875001],[-158.19091796875003,58.6142578125],[-158.50317382812494,58.85034179687497],[-158.42563476562498,58.99931640625002],[-158.080517578125,58.97744140625002],[-158.422802734375,59.08984375],[-158.67827148437502,58.92939453124998],[-158.80947265625002,58.973876953125],[-158.78862304687493,58.440966796875045],[-158.95068359375,58.404541015625],[-159.67026367187498,58.9111328125],[-159.92021484375,58.819873046875074],[-160.36313476562498,59.05117187500002],[-161.246826171875,58.799462890624994],[-161.36132812499994,58.66953124999998],[-162.144921875,58.64423828124998],[-161.724365234375,58.794287109375006],[-161.64438476562498,59.109667968750045],[-161.9810546875,59.14614257812502],[-161.82871093749998,59.588623046875],[-162.421337890625,60.28398437500002],[-161.96201171875003,60.695361328125045],[-162.68496093749997,60.268945312499966],[-162.57075195312495,59.98974609375],[-163.68037109374998,59.80151367187503],[-164.14282226562497,59.89677734374999],[-165.02651367187497,60.500634765624994],[-165.35380859375002,60.54121093750001],[-164.80517578125,60.89204101562498],[-164.31850585937497,60.77128906249999],[-164.37236328125002,60.59184570312502],[-163.999560546875,60.76606445312498],[-163.72998046874997,60.589990234374994],[-163.420947265625,60.757421875],[-163.90654296874996,60.85380859375002],[-163.58691406249994,60.902978515624994],[-163.74902343750003,60.9697265625],[-163.99462890624997,60.86469726562501],[-165.11484375,60.93281250000004],[-164.86899414062503,61.11176757812498],[-165.27978515624994,61.169628906249955],[-165.27363281250004,61.27485351562498],[-165.56586914062498,61.10234375000002],[-165.86396484375004,61.33569335937503],[-165.84531249999998,61.536230468750034],[-166.152734375,61.545947265625074],[-166.16811523437502,61.65083007812501],[-165.80893554687503,61.69609375000002],[-166.07880859375,61.803125],[-165.61279296875003,61.86928710937502],[-165.707275390625,62.10043945312506],[-165.19453125,62.47353515625002],[-164.75786132812493,62.496728515624966],[-164.589453125,62.709375],[-164.79267578125,62.623193359374966],[-164.79965820312503,62.918066406250006],[-164.384228515625,63.03046874999998],[-164.40903320312503,63.21503906250001],[-163.94287109375,63.247216796874994],[-163.61630859374998,63.125146484374994],[-163.73784179687496,63.016406250000045],[-163.504345703125,63.105859374999966],[-163.28784179687494,63.046435546875045],[-162.621484375,63.26582031249998],[-162.28281250000003,63.529199218749994],[-161.97397460937498,63.45292968749999],[-161.09970703125003,63.557910156250045],[-160.778564453125,63.818945312500034],[-160.987548828125,64.25126953125002],[-161.49072265625003,64.43378906249998],[-160.93193359374996,64.5791015625],[-160.855908203125,64.755615234375],[-161.13017578125005,64.92543945312505],[-161.759375,64.816259765625],[-162.80703124999997,64.37421875000001],[-163.20390625,64.65200195312502],[-163.14433593750002,64.423828125],[-163.71308593749998,64.588232421875],[-164.978759765625,64.45366210937502],[-166.1427734375,64.58276367187503],[-166.48139648437498,64.72807617187507],[-166.415234375,64.926513671875],[-166.92841796875,65.15708007812498],[-166.15703125,65.28583984375001],[-167.40400390625,65.42211914062497],[-168.08837890624997,65.65776367187502],[-166.39873046875002,66.14443359375005],[-165.62993164062496,66.131201171875],[-165.77617187500002,66.31904296875001],[-164.46049804687502,66.58842773437499],[-163.63823242187502,66.57465820312504],[-163.89394531249997,66.57587890625001],[-164.03374023437493,66.21552734374995],[-163.69536132812502,66.08383789062503],[-161.93369140625003,66.04287109374997],[-161.45541992187503,66.28139648437497],[-161.03427734375003,66.18881835937503],[-161.12031249999995,66.334326171875],[-161.91689453124997,66.41181640624998],[-162.54365234375004,66.80512695312501],[-162.36162109375,66.94731445312502],[-161.591015625,66.45952148437502],[-160.23168945312503,66.420263671875],[-160.360888671875,66.6125],[-160.864013671875,66.67084960937501],[-161.39804687499998,66.55185546875],[-161.85668945312497,66.70034179687497],[-161.719921875,67.02055664062502],[-163.5318359375,67.10258789062502],[-164.1251953125,67.60673828125007],[-166.786279296875,68.35961914062497],[-166.38051757812502,68.425146484375],[-166.20908203125,68.88535156250003],[-165.04394531249994,68.882470703125],[-163.867919921875,69.03666992187505],[-161.88095703125003,70.33173828125001],[-162.073876953125,70.16196289062498],[-160.9962890625,70.30458984375],[-160.11713867187495,70.59121093750002],[-159.86567382812498,70.27885742187499],[-159.81499023437496,70.49707031250003],[-159.38676757812493,70.52451171875003],[-160.081591796875,70.63486328125003],[-159.680908203125,70.786767578125],[-159.31450195312496,70.87851562500003],[-159.251171875,70.7484375],[-157.909375,70.860107421875],[-156.47021484374994,71.40766601562501],[-156.469970703125,71.29155273437507],[-155.57944335937503,71.12109374999997],[-156.14658203125,70.92783203125003],[-155.97353515625002,70.84199218749995],[-155.16684570312498,71.09921875000006],[-154.19521484375002,70.80112304687498],[-153.23291015625,70.93256835937504],[-152.49121093749994,70.88095703125],[-152.23291015625,70.81035156249999],[-152.39921875,70.62045898437503],[-151.76904296875,70.56015625],[-151.94467773437498,70.45209960937501],[-149.26943359374997,70.50078124999999],[-147.70537109375,70.21723632812495],[-145.82314453124997,70.16005859375002],[-145.19736328125003,70.00869140625002],[-143.218310546875,70.11625976562499],[-142.70786132812498,70.03378906249998],[-141.40791015625,69.65336914062502],[-141.00214843750004,69.65078125000002],[-141.00214843750004,68.77416992187506]]]]},"properties":{"name":"United States","childNum":76}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[71.20615234375006,39.892578125],[71.15625,39.88344726562502],[71.06425781250002,39.88491210937505],[71.01171874999997,39.895117187500006],[71.04365234375004,39.97631835937503],[71.04482421875005,39.992529296875034],[70.96064453125004,40.087988281250034],[71.00546875,40.15229492187498],[71.0241210937501,40.14916992187497],[71.08037109375007,40.07988281249999],[71.2287109375001,40.04814453124999],[71.20615234375006,39.892578125]]],[[[70.94677734374997,42.24868164062505],[70.97900390625003,42.26655273437504],[71.03603515625,42.28466796875],[71.12998046875006,42.25],[71.21269531250002,42.20644531250005],[71.23232421875005,42.18627929687503],[71.22851562499997,42.16289062499996],[70.18095703125007,41.571435546874994],[70.734375,41.400537109374994],[70.86044921875006,41.22490234375002],[71.11074218750005,41.152636718750045],[71.29882812500003,41.152490234374994],[71.39306640625003,41.123388671875034],[71.40839843750004,41.13603515625002],[71.42089843750003,41.341894531250034],[71.60625,41.367431640625],[71.66494140625,41.54121093749998],[71.70068359374997,41.454003906249966],[71.75771484375005,41.42802734375002],[71.79248046875003,41.41313476562499],[71.85800781250006,41.311376953125034],[71.8786132812501,41.195019531249955],[71.95849609375003,41.18706054687502],[72.05244140625004,41.16474609375001],[72.1154296875001,41.18657226562502],[72.1642578125001,41.173730468749966],[72.18095703125002,41.11845703124999],[72.18730468750002,41.02592773437499],[72.2130859375001,41.014257812500006],[72.36406250000002,41.04345703125],[72.65830078125,40.86992187499999],[73.13212890625002,40.82851562499999],[72.6041015625,40.52543945312499],[72.40205078125004,40.578076171874955],[72.3892578125,40.427392578124994],[72.13125,40.438623046874966],[71.69248046875,40.15234375],[71.30468749999997,40.28691406249996],[70.990625,40.2548828125],[70.95800781250003,40.238867187500034],[70.653125,40.201171875],[70.37158203125003,40.38413085937506],[70.75107421875006,40.721777343750006],[70.40195312500006,41.03510742187498],[69.71289062500003,40.65698242187503],[69.35722656250002,40.76738281249996],[69.20625,40.566552734374994],[69.27490234374997,40.19809570312498],[68.63066406250007,40.16708984374998],[68.9720703125,40.08994140624998],[68.80468750000003,40.05034179687499],[68.86875,39.90747070312503],[68.63896484375007,39.8388671875],[68.46328125,39.53671874999998],[67.71904296875007,39.62138671875002],[67.426171875,39.46557617187497],[67.3576171875001,39.216699218749994],[67.64833984375005,39.13105468750004],[67.69443359375006,38.99462890625003],[68.13251953125004,38.927636718749966],[68.08720703125002,38.47353515625002],[68.3502929687501,38.211035156250006],[67.81435546875005,37.48701171875004],[67.7980468750001,37.244970703125006],[67.75898437500004,37.172216796875034],[67.75292968749997,37.199804687500034],[67.7,37.227246093749955],[67.60742187499997,37.22250976562506],[67.5172851562501,37.26665039062499],[67.44169921875007,37.25800781250001],[67.3197265625,37.209570312500006],[67.1955078125001,37.23520507812498],[67.06884765624997,37.334814453125006],[66.82773437500006,37.37128906249998],[66.52226562500007,37.34848632812506],[66.51064453125,37.45869140625004],[66.51132812500006,37.59916992187496],[66.52558593750004,37.785742187500034],[66.60625,37.98671875000005],[65.97119140624997,38.244238281250006],[65.612890625,38.23857421875002],[64.3099609375,38.97729492187497],[63.76367187500003,39.16054687499999],[62.48320312500002,39.97563476562496],[61.90283203124997,41.09370117187501],[61.496972656249994,41.276074218749955],[61.2423828125001,41.18920898437503],[60.454980468749994,41.221630859374955],[60.089648437500074,41.39941406250003],[60.07558593750005,41.759667968749966],[60.20078125000006,41.803125],[59.94179687499999,41.97353515625002],[59.98515625000002,42.21171875],[59.35429687500002,42.32329101562496],[58.5890625000001,42.778466796874966],[58.477148437500006,42.66284179687503],[58.15156250000004,42.628076171874966],[58.474414062500074,42.29936523437496],[58.02890625,42.48764648437506],[57.814257812500074,42.18984375000005],[57.290625,42.123779296875],[56.96406250000004,41.856542968750006],[57.11884765625004,41.35029296874998],[57.01796875,41.26347656249996],[55.97744140625005,41.32221679687504],[55.97568359375006,44.99492187499996],[58.555273437500006,45.55537109375001],[61.007910156250006,44.39379882812497],[61.99023437500003,43.492138671874955],[63.20703125000003,43.62797851562502],[64.44316406250007,43.55117187499999],[64.9054687500001,43.714697265625006],[65.49619140625,43.310546875],[65.80302734375002,42.87695312500006],[66.1002929687501,42.99082031249998],[66.00957031250007,42.00488281250003],[66.49863281250006,41.99487304687503],[66.70966796875004,41.17915039062501],[67.9357421875001,41.19658203125002],[68.11308593750007,41.02861328124999],[68.04765625000007,40.80927734374998],[68.29189453125,40.656103515625034],[68.57265625,40.62265624999998],[68.58408203125,40.876269531250045],[69.15361328125002,41.42524414062498],[70.94677734374997,42.24868164062505]]]]},"properties":{"name":"Uzbekistan","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[-61.17451171875001,13.158105468749966],[-61.268457031249966,13.287695312499991],[-61.13896484374996,13.358740234374991],[-61.17451171875001,13.158105468749966]]]},"properties":{"name":"St. Vin. and Gren.","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-60.99790039062498,8.867333984374966],[-61.069189453125034,8.947314453125003],[-60.91582031249996,9.070312500000014],[-60.86142578124998,8.949609375000037],[-60.99790039062498,8.867333984374966]]],[[[-60.821191406249966,9.138378906250026],[-60.94140625000003,9.105566406250006],[-60.73583984374997,9.203320312500026],[-60.821191406249966,9.138378906250026]]],[[[-63.84936523437494,11.131005859374994],[-63.917626953124994,10.887548828125048],[-64.40234375,10.981591796875023],[-64.21367187500002,11.086132812499997],[-64.0283203125,11.00185546874998],[-63.84936523437494,11.131005859374994]]],[[[-60.742138671874926,5.202050781250037],[-60.71196289062499,5.191552734375023],[-60.671972656250034,5.164355468749989],[-60.603857421875006,4.94936523437498],[-61.00283203125002,4.535253906249991],[-61.28007812500002,4.516894531249974],[-61.82084960937496,4.197021484375],[-62.153125,4.098388671874986],[-62.41064453124994,4.156738281249972],[-62.71210937499998,4.01791992187502],[-62.85698242187502,3.593457031249969],[-63.33867187500002,3.943896484375045],[-64.02148437500003,3.929101562500051],[-64.19248046874995,4.126855468750009],[-64.57636718750001,4.139892578125],[-64.788671875,4.276025390625023],[-64.66899414062496,4.01181640625002],[-64.22109375000002,3.587402343749972],[-64.04658203124998,2.502392578124997],[-63.389257812500006,2.411914062500045],[-63.43251953124994,2.155566406250045],[-64.00849609374995,1.931591796874969],[-64.20502929687493,1.52949218750004],[-65.10375976562497,1.108105468749983],[-65.47338867187497,0.691259765624977],[-65.55605468750002,0.687988281250014],[-65.52299804687493,0.843408203124966],[-65.68144531249999,0.983447265624989],[-66.06005859375003,0.78535156250004],[-66.34711914062498,0.7671875],[-66.87602539062499,1.223046875000037],[-67.21083984375,2.390136718750043],[-67.61870117187496,2.793603515624994],[-67.85908203124998,2.793603515624994],[-67.3111328125,3.41586914062502],[-67.66162109375,3.864257812499986],[-67.85527343750002,4.506884765624989],[-67.82490234374995,5.270458984375026],[-67.47387695312503,5.929980468750003],[-67.48198242187499,6.18027343750002],[-67.85917968749999,6.289892578124963],[-68.47177734375,6.156542968749974],[-69.42714843749997,6.123974609374997],[-70.12919921874999,6.95361328125],[-70.73715820312503,7.090039062499997],[-71.12861328124993,6.98671875],[-72.00664062499993,7.032617187500023],[-72.20771484374995,7.37026367187498],[-72.47197265624996,7.524267578124991],[-72.39033203124995,8.287060546874969],[-72.66542968749994,8.62758789062498],[-72.79638671874997,9.10898437499999],[-73.05839843749999,9.259570312500031],[-73.36621093749997,9.194140625000017],[-73.00654296874998,9.789160156250006],[-72.86933593750001,10.49125976562496],[-72.690087890625,10.835839843749994],[-72.24848632812501,11.196435546875009],[-71.95810546875,11.66640625],[-71.31972656249997,11.861914062500048],[-71.95693359375002,11.569921874999977],[-71.835107421875,11.190332031250009],[-71.6416015625,11.013525390625048],[-71.73090820312498,10.994677734375017],[-71.59433593749995,10.657373046875051],[-72.11284179687499,9.815576171874966],[-71.61953124999994,9.047949218749991],[-71.24140625000001,9.160449218750003],[-71.08583984375002,9.348242187499977],[-71.05268554687501,9.705810546874986],[-71.49423828125,10.533203124999972],[-71.46953124999993,10.964160156250017],[-70.23251953124998,11.372998046874997],[-70.09711914062493,11.519775390624972],[-69.80478515624998,11.47421875000002],[-69.81733398437495,11.672070312499997],[-70.19257812499993,11.62460937500002],[-70.28652343749997,11.886035156249989],[-70.20278320312497,12.098388671874986],[-70.00395507812496,12.177880859375023],[-69.63159179687494,11.479931640625026],[-68.827978515625,11.431738281249977],[-68.39863281249995,11.160986328124977],[-68.29628906249997,10.689355468749994],[-68.13994140624999,10.492724609374989],[-66.24721679687497,10.632226562499994],[-65.85175781249995,10.257763671874997],[-65.12910156249998,10.070068359375043],[-64.85048828125,10.098095703124969],[-64.188330078125,10.457812499999989],[-63.73188476562501,10.503417968750043],[-64.24750976562498,10.54257812500002],[-64.298193359375,10.635156249999966],[-61.879492187500006,10.741015625000031],[-62.379980468750006,10.546875],[-62.91357421875,10.531494140624986],[-62.68583984374996,10.289794921875043],[-62.740576171875006,10.056152343750043],[-62.55034179687499,10.200439453125043],[-62.320410156250034,9.783056640625006],[-62.22114257812498,9.882568359375028],[-62.15336914062493,9.821777343749986],[-62.15532226562499,9.979248046875014],[-62.077099609374926,9.97504882812504],[-61.73593749999998,9.631201171874977],[-61.76591796874996,9.813818359374963],[-61.58886718749994,9.894531249999986],[-60.79248046874997,9.360742187500037],[-61.02314453124998,9.15458984374996],[-61.24726562499998,8.600341796875014],[-61.61870117187499,8.59746093749996],[-61.30400390624999,8.410400390625043],[-60.800976562499926,8.592138671875034],[-60.16748046875,8.616992187500031],[-60.01752929687501,8.549316406250014],[-59.83164062499998,8.305957031250003],[-59.84907226562498,8.248681640624966],[-59.96484375000003,8.191601562499969],[-59.99072265624997,8.16201171874998],[-60.032421874999926,8.053564453125006],[-60.51362304687501,7.813183593749969],[-60.71865234374994,7.535937499999974],[-60.606542968750006,7.320849609375031],[-60.63330078124997,7.211083984374966],[-60.58320312499998,7.156201171874969],[-60.523193359375,7.143701171875009],[-60.464941406250034,7.166552734375045],[-60.39238281249999,7.164550781249986],[-60.34506835937495,7.15],[-60.32548828124996,7.133984374999983],[-60.32207031249996,7.092041015625043],[-60.35209960937496,7.002880859374997],[-60.39501953125,6.945361328125003],[-60.717919921874966,6.768310546875],[-61.14560546874998,6.694531249999983],[-61.20361328124997,6.588378906250028],[-61.181591796874926,6.513378906250026],[-61.15102539062502,6.446533203124986],[-61.15229492187501,6.385107421875006],[-61.12871093749999,6.214306640625026],[-61.15947265624996,6.174414062499977],[-61.22495117187498,6.129199218750003],[-61.303125,6.049511718750026],[-61.39082031250001,5.938769531250017],[-61.376806640625006,5.906982421875028],[-61.167187499999926,5.674218750000037],[-60.95400390625002,5.437402343750023],[-60.742138671874926,5.202050781250037]]]]},"properties":{"name":"Venezuela","childNum":4}},{"geometry":{"type":"Polygon","coordinates":[[[-64.765625,17.794335937499994],[-64.58046874999994,17.750195312499983],[-64.88911132812495,17.701708984375045],[-64.765625,17.794335937499994]]]},"properties":{"name":"U.S. Virgin Is.","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[104.06396484375003,10.390820312500011],[104.01845703125,10.029199218749966],[103.84951171875005,10.371093749999986],[104.06396484375003,10.390820312500011]]],[[[107.52128906250007,20.926611328124977],[107.39921875000007,20.903466796874966],[107.55126953125003,21.034033203125006],[107.52128906250007,20.926611328124977]]],[[[107.60273437500004,21.21679687500003],[107.40351562500004,21.093652343749994],[107.47626953125004,21.268945312499994],[107.60273437500004,21.21679687500003]]],[[[107.97265624999997,21.507958984375023],[107.40996093750002,21.284814453125023],[107.35429687500007,21.055175781250057],[107.1647460937501,20.94873046875003],[106.68339843750007,21.000292968750074],[106.75341796875003,20.73505859375004],[106.55078124999997,20.52656250000001],[106.57285156250012,20.392187499999977],[105.98408203125004,19.939062500000034],[105.62177734375004,18.96630859375003],[105.88828125000006,18.502490234375045],[106.49902343749997,17.946435546874994],[106.47890625000005,17.719580078125063],[106.3705078125,17.746875],[107.83378906250002,16.322460937499983],[108.02939453125012,16.331103515625074],[108.82128906249997,15.377929687500028],[109.30332031250012,13.856445312500043],[109.271875,13.279345703124974],[109.42392578125006,12.955957031249994],[109.44492187500006,12.599609375000057],[109.33554687500012,12.751904296874997],[109.21894531250004,12.64580078124996],[109.30468750000003,12.391162109375045],[109.20683593750007,12.415380859375006],[109.1986328125,11.724853515625014],[109.03964843750012,11.592675781249994],[108.98671875,11.336376953124997],[108.09492187500004,10.897265624999989],[108.0013671875,10.720361328125009],[107.26152343750007,10.39838867187504],[107.00664062500002,10.66054687499998],[106.94746093750004,10.400341796874997],[106.72734375000007,10.535644531250028],[106.605859375,10.46494140625002],[106.74121093750003,10.444384765625003],[106.75742187500006,10.295800781250023],[106.46406250000004,10.298291015624997],[106.78525390625012,10.116455078124986],[106.59560546875005,9.859863281250028],[106.1364257812501,10.221679687500014],[106.56435546875005,9.715625],[106.48408203125004,9.559423828125006],[105.83095703125005,10.000732421875028],[106.15859375,9.59414062499998],[106.16835937500005,9.396728515625],[105.50097656249997,9.093212890624983],[105.11435546875006,8.629199218750031],[104.77041015625,8.59765625],[104.89628906250007,8.746630859374974],[104.81855468750004,8.801855468750034],[104.84521484375003,9.606152343750026],[105.08447265625003,9.99570312499999],[104.8019531250001,10.202734374999977],[104.66347656250005,10.169921875000043],[104.42636718750006,10.411230468749991],[104.85058593749997,10.534472656249974],[105.04638671874997,10.701660156250014],[105.04570312500002,10.911376953125014],[105.3146484375001,10.845166015625026],[105.40576171875003,10.95161132812504],[105.75507812500004,10.989990234375043],[105.85332031250007,10.86357421874996],[106.16396484375005,10.794921875],[106.16093750000002,11.037109375000057],[105.85605468750006,11.294287109375048],[105.85146484375005,11.635009765625],[106.0060546875001,11.758007812500011],[106.39921875000007,11.687011718750028],[106.41386718750002,11.9484375],[106.70009765625,11.979296874999974],[107.21210937500004,12.30400390624996],[107.39335937500002,12.260498046874972],[107.50644531250006,12.364550781250031],[107.47539062500002,13.030371093749963],[107.60546874999997,13.437792968750017],[107.3314453125,14.126611328125009],[107.51943359375005,14.705078125],[107.51376953125012,14.817382812500057],[107.52451171875012,14.871826171875043],[107.50468750000007,14.915917968749966],[107.48037109375,14.979882812500037],[107.55527343750006,15.057031250000023],[107.58964843750002,15.118457031250017],[107.63369140625005,15.18984375],[107.653125,15.255224609374991],[107.62167968750006,15.309863281250017],[107.56425781250002,15.391601562499972],[107.45957031250012,15.4658203125],[107.33876953125,15.560498046875011],[107.27939453125006,15.618701171875045],[107.16591796875005,15.802490234375028],[107.1888671875,15.838623046875],[107.36064453125002,15.921728515624977],[107.3919921875,15.951660156250028],[107.39638671875,16.04301757812499],[106.93066406249997,16.353125],[106.8927734375001,16.396533203125074],[106.85107421875003,16.515625],[106.83242187500005,16.526269531250023],[106.79160156250006,16.490332031250006],[106.73955078125007,16.452539062500023],[106.6564453125001,16.49262695312501],[106.54619140625002,16.650732421874977],[106.53369140625003,16.821044921875057],[106.52597656250006,16.876611328124994],[106.50224609375002,16.95410156249997],[106.26953125000003,17.21679687500003],[106.00625,17.415283203125057],[105.69140625000003,17.737841796875045],[105.58847656250012,17.983691406250045],[105.51855468749997,18.077441406250045],[105.45820312500004,18.15429687499997],[105.11455078125002,18.40527343750003],[105.08701171875006,18.496240234374994],[105.14541015625,18.616796875000063],[105.14648437500003,18.650976562500006],[103.89160156250003,19.304980468750017],[103.89638671875,19.339990234375023],[103.93203125,19.366064453125006],[104.0275390625001,19.42045898437499],[104.062890625,19.48256835937505],[104.05156250000007,19.564160156249955],[104.01347656250007,19.64648437500003],[104.03203125000002,19.675146484375006],[104.06279296875007,19.678417968749983],[104.25986328125006,19.685498046874983],[104.5462890625,19.61054687500001],[104.58789062500003,19.61875],[104.74316406250003,19.754736328124977],[104.80175781249997,19.83613281250004],[104.81513671875004,19.90400390625001],[104.9279296875001,20.01811523437499],[104.92919921875003,20.082812500000017],[104.88867187500003,20.169091796875023],[104.84785156250004,20.202441406250045],[104.69873046875003,20.20532226562503],[104.67695312500004,20.224707031249977],[104.66191406250007,20.28901367187501],[104.65644531250004,20.32851562499999],[104.6188476562501,20.37451171875003],[104.49619140625006,20.413671875],[104.39218750000012,20.424755859374955],[104.36777343750012,20.44140624999997],[104.40781250000012,20.48574218750005],[104.47861328125006,20.529589843750017],[104.53271484374997,20.55488281250001],[104.58320312500004,20.646679687499955],[104.34960937499997,20.821093750000074],[104.19531249999997,20.913964843749966],[104.10136718750002,20.94550781250001],[103.63505859375007,20.697070312500017],[103.46357421875004,20.779833984375017],[103.21074218750002,20.840625],[103.10449218749997,20.891650390625045],[102.88378906250003,21.202587890624983],[102.85117187500006,21.26591796874999],[102.94960937500005,21.681347656249983],[102.84521484374997,21.73476562500005],[102.81591796874997,21.807373046875],[102.7982421875,21.797949218750034],[102.77109375000006,21.709667968749983],[102.73857421875002,21.67792968750001],[102.66201171875005,21.67602539062497],[102.58251953125003,21.90429687500003],[102.12744140624997,22.379199218750045],[102.1759765625001,22.414648437500006],[102.2370117187501,22.466015624999983],[102.40644531250004,22.70800781249997],[102.47089843750004,22.75092773437501],[102.98193359374997,22.4482421875],[103.32666015625003,22.769775390625057],[103.49296875000007,22.587988281250034],[103.62021484375006,22.782031250000045],[103.94150390625006,22.540087890625045],[104.14306640624997,22.800146484375006],[104.37177734375004,22.704052734374983],[104.68730468750002,22.822216796874983],[104.86474609375003,23.136376953125023],[105.27539062500003,23.34521484375003],[105.8429687500001,22.922802734374955],[106.14843749999997,22.970068359375006],[106.2790039062501,22.857470703125045],[106.54179687500007,22.908349609375023],[106.78027343749997,22.778906250000034],[106.55039062500006,22.501367187499994],[106.66357421875003,21.97890625000005],[106.97099609375002,21.923925781250034],[107.35117187500012,21.60888671874997],[107.75927734374997,21.655029296875057],[107.97265624999997,21.507958984375023]]]]},"properties":{"name":"Vietnam","childNum":4}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[169.49130859375006,-19.54013671875002],[169.34726562500006,-19.623535156249957],[169.2174804687501,-19.476367187500003],[169.24746093750005,-19.3447265625],[169.49130859375006,-19.54013671875002]]],[[[169.334375,-18.940234375000017],[168.98691406250006,-18.87128906250001],[169.01582031250004,-18.64375],[169.14384765625002,-18.63105468750001],[169.334375,-18.940234375000017]]],[[[168.44580078124997,-17.54218750000004],[168.58496093750003,-17.695898437500006],[168.52460937500004,-17.798046875000026],[168.15820312500003,-17.710546874999963],[168.2731445312501,-17.552246093749957],[168.44580078124997,-17.54218750000004]]],[[[168.44677734375003,-16.778808593749957],[168.18144531250002,-16.804003906250017],[168.13535156250006,-16.636914062499997],[168.44677734375003,-16.778808593749957]]],[[[168.29667968750007,-16.33652343749999],[167.92900390625002,-16.22871093749997],[168.16386718750002,-16.081640625000034],[168.29667968750007,-16.33652343749999]]],[[[167.4125,-16.095898437499997],[167.83662109375004,-16.449707031249957],[167.44931640625012,-16.554980468750003],[167.34921875000006,-16.15449218750004],[167.15146484375006,-16.080468749999966],[167.19951171875002,-15.885058593750031],[167.33574218750007,-15.916699218749997],[167.4125,-16.095898437499997]]],[[[167.9113281250001,-15.435937500000023],[167.67421875,-15.4515625],[168.00253906250012,-15.283203124999986],[167.9113281250001,-15.435937500000023]]],[[[166.74580078125004,-14.826855468750011],[166.81015625000012,-15.15742187500004],[167.0755859375,-14.935644531249977],[167.20078125000012,-15.443066406249969],[167.0939453125001,-15.580859374999974],[166.75830078125003,-15.631152343750003],[166.63105468750004,-15.406054687499974],[166.56738281250003,-14.641796874999969],[166.74580078125004,-14.826855468750011]]],[[[167.58486328125,-14.260937500000011],[167.43027343750012,-14.294921875],[167.41074218750006,-14.19746093750004],[167.50644531250012,-14.142187499999977],[167.58486328125,-14.260937500000011]]],[[[167.48886718750006,-13.907226562499972],[167.3917968750001,-13.788378906250017],[167.48105468750006,-13.709472656250014],[167.48886718750006,-13.907226562499972]]]]},"properties":{"name":"Vanuatu","childNum":10}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-171.4541015625,-14.04648437500002],[-171.9119140625,-14.001660156250026],[-172.04589843750003,-13.857128906249983],[-171.60390624999997,-13.879199218750045],[-171.4541015625,-14.04648437500002]]],[[[-172.33349609375,-13.46523437499999],[-172.17685546874998,-13.68466796875002],[-172.224951171875,-13.804296874999963],[-172.535693359375,-13.791699218749983],[-172.77851562499998,-13.516796875000011],[-172.33349609375,-13.46523437499999]]]]},"properties":{"name":"Samoa","childNum":2}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[53.76318359374997,12.636816406249991],[54.18740234375005,12.664013671875026],[54.511132812499994,12.552783203125017],[54.12949218750006,12.360644531250045],[53.71884765625006,12.318994140624994],[53.31582031250005,12.533154296875011],[53.53496093750002,12.715771484374997],[53.76318359374997,12.636816406249991]]],[[[42.75585937500003,13.70429687500004],[42.689746093750074,13.673632812500017],[42.7941406250001,13.766113281250028],[42.75585937500003,13.70429687500004]]],[[[42.787402343750074,13.971484375000031],[42.69404296875004,14.007910156249991],[42.76210937500005,14.067480468750048],[42.787402343750074,13.971484375000031]]],[[[53.08564453125004,16.648388671874955],[52.327734375,16.293554687500063],[52.17402343750004,15.956835937500017],[52.2174804687501,15.655517578125],[51.3224609375001,15.22626953125004],[49.34990234375002,14.637792968749977],[48.66835937499999,14.050146484374977],[47.9899414062501,14.048095703125],[47.40771484374997,13.661621093750057],[46.78886718750002,13.465576171874986],[45.65732421875006,13.338720703124991],[45.03867187500006,12.815869140624969],[44.617773437500006,12.817236328124977],[44.00585937499997,12.607666015625],[43.634375,12.744482421874991],[43.487597656250074,12.69882812500002],[43.23193359375003,13.267089843750057],[43.2824218750001,13.692529296875037],[43.08906250000004,14.010986328125],[42.93642578125005,14.938574218749963],[42.85566406250004,15.132958984375037],[42.65781250000006,15.232812500000051],[42.79902343750004,15.326269531249991],[42.71718750000005,15.654638671875006],[42.83964843750002,16.032031250000074],[42.79931640624997,16.37177734375001],[43.16503906249997,16.689404296874955],[43.19091796875003,17.359375],[43.41796875000003,17.516259765625023],[43.91699218749997,17.32470703124997],[45.14804687500006,17.427441406249955],[45.5353515625001,17.30205078124999],[46.72763671875006,17.26557617187501],[46.97568359375006,16.953466796875034],[47.14355468749997,16.946679687499966],[47.44179687499999,17.111865234375045],[47.57958984374997,17.448339843750034],[48.17216796875002,18.156933593749983],[49.04199218750003,18.58178710937503],[51.977636718750006,18.996142578125074],[53.08564453125004,16.648388671874955]]]]},"properties":{"name":"Yemen","childNum":4}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[37.85693359375003,-46.94423828124998],[37.5900390625001,-46.90800781250006],[37.78955078124997,-46.8375],[37.85693359375003,-46.94423828124998]]],[[[31.799609375000017,-23.8921875],[31.98583984374997,-24.460644531249983],[31.921679687500017,-25.96875],[31.335156250000097,-25.755566406249997],[31.207324218750074,-25.843359375000034],[31.08808593750004,-25.980664062500026],[30.803320312500006,-26.41347656250001],[30.806738281250006,-26.78525390624999],[30.88330078124997,-26.792382812500023],[30.938085937500006,-26.91582031250003],[31.06337890625005,-27.1123046875],[31.274023437500063,-27.23837890625002],[31.469531250000017,-27.29550781250002],[31.74257812500005,-27.309960937500037],[31.95839843750005,-27.305859375],[31.946093750000017,-27.173632812499974],[31.96718750000005,-26.96064453125001],[31.994726562500006,-26.817480468749977],[32.024804687499994,-26.81113281250002],[32.112890625,-26.83945312500002],[32.19960937499999,-26.833496093749957],[32.35351562499997,-26.861621093750003],[32.7765625000001,-26.850976562499966],[32.88613281250005,-26.849316406249983],[32.53476562500006,-28.19970703125003],[32.285742187500006,-28.62148437499998],[31.335156250000097,-29.378125],[29.97119140625003,-31.322070312500017],[28.449414062500068,-32.62460937499999],[27.077441406250074,-33.52119140625004],[26.429492187500045,-33.75957031250002],[25.80585937500001,-33.737109374999974],[25.574218750000057,-34.03535156249998],[25.00292968750003,-33.97363281250003],[24.8271484375,-34.16894531250003],[24.595507812500074,-34.17451171875],[23.697851562500063,-33.99277343750002],[23.268164062500006,-34.08115234374999],[22.553808593750063,-34.01005859374999],[22.24550781250005,-34.06914062500003],[21.788964843750023,-34.37265624999996],[20.529882812500034,-34.4630859375],[20.020605468750006,-34.785742187500006],[19.298242187500023,-34.61503906249996],[19.330761718750068,-34.49238281250001],[19.098339843750068,-34.350097656249986],[18.831347656250017,-34.36406249999999],[18.75214843750004,-34.08261718750002],[18.50039062499999,-34.10927734375004],[18.46162109375001,-34.346875],[18.35205078124997,-34.1884765625],[18.43300781250005,-33.71728515625003],[17.851074218750057,-32.82744140625002],[17.96523437500005,-32.70859374999996],[18.125,-32.74912109374996],[18.325292968750034,-32.50498046874996],[18.21083984375008,-31.74248046874996],[17.34707031250005,-30.44482421875],[16.95,-29.40341796875002],[16.739453124999983,-29.009375],[16.447558593750045,-28.61757812499998],[16.755761718750023,-28.45214843750003],[16.7875,-28.39472656249997],[16.81015625,-28.264550781249994],[16.841210937500023,-28.21894531250004],[16.875292968750045,-28.12792968749997],[16.93330078125004,-28.06962890624999],[17.05625,-28.03105468750003],[17.1884765625,-28.13251953125001],[17.358691406250017,-28.269433593750023],[17.44794921875001,-28.698144531249966],[18.310839843750017,-28.88623046875],[19.16171875,-28.93876953124996],[19.245800781250068,-28.90166015625003],[19.31269531250004,-28.733300781250023],[19.539843750000017,-28.574609375000023],[19.98046875,-28.45126953125002],[19.98046875,-28.310351562500003],[19.98046875,-24.77675781249998],[20.430664062500057,-25.14707031250002],[20.79316406250001,-25.915625],[20.641406250000017,-26.7421875],[20.739843749999977,-26.84882812499997],[21.694726562500023,-26.840917968749963],[21.738085937500045,-26.806835937500026],[21.788281250000068,-26.710058593750034],[22.01093750000004,-26.635839843750006],[22.090917968749977,-26.580175781250034],[22.217578125000045,-26.38886718749997],[22.47089843750004,-26.219042968750003],[22.548632812500074,-26.178417968749997],[22.59765625000003,-26.13271484375001],[22.878808593750023,-25.457910156250023],[23.148730468750017,-25.288671875],[23.389257812500006,-25.291406250000023],[23.89375,-25.600878906250017],[23.96953124999999,-25.62607421874999],[24.192968750000034,-25.632910156249963],[24.33056640625,-25.742871093749983],[25.21337890625,-25.75625],[25.518164062500006,-25.66279296875001],[25.91210937499997,-24.747460937499966],[26.031835937500034,-24.70244140625003],[26.130859375000057,-24.671484375000034],[26.39716796875004,-24.61357421874996],[26.451757812500063,-24.582714843749983],[26.835058593750063,-24.240820312499963],[27.085546875000034,-23.577929687500003],[27.7685546875,-23.14892578125],[27.812597656250006,-23.108007812500006],[28.210156249999983,-22.693652343749974],[28.83984375000003,-22.480859374999966],[28.94580078125003,-22.39511718749999],[29.013476562500045,-22.27841796875002],[29.129882812500057,-22.21328125],[29.364843750000063,-22.19394531250005],[29.37744140625003,-22.19277343749998],[29.66308593749997,-22.146289062500017],[29.90234375000003,-22.184179687500006],[30.19042968750003,-22.291113281250034],[30.460156250000097,-22.329003906250023],[30.71162109375004,-22.297851562499986],[31.07343750000004,-22.30781249999997],[31.19726562499997,-22.344921874999983],[31.287890625000074,-22.402050781249983],[31.54560546875004,-23.48232421874998],[31.799609375000017,-23.8921875]],[[27.19355468750001,-29.94130859375001],[27.364062500000017,-30.27919921875001],[27.753125,-30.6],[28.05683593750001,-30.63105468750001],[28.128710937500017,-30.52509765625001],[28.39208984375003,-30.14755859375002],[28.646875,-30.1265625],[29.09804687500005,-29.919042968750006],[29.142187500000063,-29.70097656249999],[29.293554687500006,-29.56689453125003],[29.348828125000097,-29.441992187499977],[29.38671874999997,-29.319726562500023],[29.301367187500006,-29.08984375],[28.625781250000017,-28.581738281250054],[28.583398437499994,-28.59414062499999],[28.471875,-28.615820312499977],[28.23261718750004,-28.701269531249977],[28.084375,-28.779980468750026],[27.95986328125008,-28.87333984375003],[27.73554687500004,-28.940039062500034],[27.294531250000063,-29.519335937500017],[27.056933593750074,-29.62558593749999],[27.19355468750001,-29.94130859375001]]]]},"properties":{"name":"South Africa","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[33.148046875,-9.603515625],[33.25,-9.759570312500003],[33.35097656250002,-9.862207031250009],[33.33710937500001,-9.954003906250009],[33.3115234375,-10.037988281250009],[33.52890625,-10.234667968750003],[33.53759765625,-10.3515625],[33.5537109375,-10.391308593750011],[33.66152343750002,-10.553125],[33.29277343750002,-10.85234375],[33.37978515625002,-11.157910156250011],[33.26835937500002,-11.40390625],[33.23271484375002,-11.417675781250011],[33.22636718750002,-11.534863281250011],[33.30390625000001,-11.690820312500009],[33.25234375000002,-12.112597656250003],[33.34013671875002,-12.308300781250011],[33.512304687500006,-12.347753906250006],[32.975195312500006,-12.701367187500011],[32.96757812500002,-13.225],[32.67041015625,-13.590429687500006],[32.797460937500006,-13.6884765625],[32.98125,-14.009375],[33.148046875,-13.94091796875],[33.201757812500006,-14.013378906250011],[30.231835937500023,-14.990332031250006],[30.39609375,-15.64306640625],[29.4873046875,-15.69677734375],[28.9130859375,-15.98779296875],[28.760546875000017,-16.53212890625001],[27.932226562500006,-16.89619140625001],[27.020800781250017,-17.95839843750001],[26.779882812500006,-18.04150390625],[26.333398437500023,-17.929296875],[25.995898437500017,-17.969824218750006],[25.2587890625,-17.793554687500006],[25.001757812500017,-17.56855468750001],[24.73291015625,-17.51777343750001],[24.27490234375,-17.481054687500006],[23.380664062500017,-17.640625],[22.193945312500006,-16.628125],[21.979785156250017,-15.95556640625],[21.979394531250023,-14.440527343750006],[21.979296875000017,-14.11962890625],[21.979101562500006,-13.798730468750009],[21.978906250000023,-13.0009765625],[22.209570312500006,-13.0009765625],[23.843164062500023,-13.0009765625],[23.962988281250006,-12.988476562500011],[23.882421875,-12.799023437500011],[23.886523437500017,-12.743261718750006],[23.909375,-12.636132812500009],[23.98388671875,-11.725],[23.96650390625001,-10.871777343750011],[24.36572265625,-11.1298828125],[24.3779296875,-11.417089843750006],[25.28876953125001,-11.21240234375],[25.349414062500017,-11.623046875],[26.025976562500006,-11.89013671875],[26.824023437500017,-11.965234375],[27.1591796875,-11.579199218750006],[27.573828125,-12.22705078125],[28.412890625000017,-12.51806640625],[28.550878906250006,-12.836132812500011],[28.730078125,-12.925488281250011],[29.014257812500006,-13.368847656250011],[29.20185546875001,-13.398339843750009],[29.55419921875,-13.248925781250009],[29.775195312500017,-13.438085937500006],[29.79511718750001,-12.155468750000011],[29.508203125000023,-12.228222656250011],[29.48554687500001,-12.41845703125],[29.064355468750023,-12.348828125000011],[28.482519531250006,-11.812109375],[28.383398437500006,-11.566699218750003],[28.6455078125,-10.550195312500009],[28.60419921875001,-9.678808593750006],[28.400683593750017,-9.224804687500011],[28.869531250000023,-8.785839843750011],[28.89814453125001,-8.485449218750006],[30.75117187500001,-8.193652343750003],[30.830664062500006,-8.385546875],[30.891992187500023,-8.473730468750006],[30.968359375,-8.550976562500011],[31.07636718750001,-8.611914062500006],[31.3505859375,-8.60703125],[31.44921875,-8.65390625],[31.53486328125001,-8.71328125],[31.55625,-8.80546875],[31.673632812500017,-8.908789062500006],[31.91865234375001,-8.9421875],[31.921875,-9.019433593750009],[31.94257812500001,-9.054003906250003],[32.75664062500002,-9.322265625],[32.919921875,-9.407421875000011],[32.99599609375002,-9.622851562500003],[33.148046875,-9.603515625]]]},"properties":{"name":"Zambia","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[31.287890625000017,-22.40205078125001],[31.07343750000001,-22.30781250000001],[30.71162109375001,-22.2978515625],[30.46015625000001,-22.32900390625001],[30.1904296875,-22.291113281250006],[29.90234375,-22.184179687500006],[29.6630859375,-22.146289062500003],[29.37744140625,-22.19277343750001],[29.36484375,-22.193945312500006],[29.315234375000017,-22.15771484375],[29.237207031250023,-22.07949218750001],[29.042382812500023,-22.018359375],[29.02558593750001,-21.796875],[28.014062500000023,-21.55419921875],[27.66943359375,-21.064257812500003],[27.679296875,-20.503027343750006],[27.28076171875,-20.47871093750001],[27.17822265625,-20.10097656250001],[26.168066406250006,-19.53828125000001],[25.939355468750023,-18.93867187500001],[25.242285156250006,-17.969042968750003],[25.2587890625,-17.793554687500006],[25.995898437500017,-17.969824218750006],[26.333398437500023,-17.929296875],[26.779882812500006,-18.04150390625],[27.020800781250017,-17.95839843750001],[27.932226562500006,-16.89619140625001],[28.760546875000017,-16.53212890625001],[28.9130859375,-15.98779296875],[29.4873046875,-15.69677734375],[30.39609375,-15.64306640625],[30.437792968750017,-15.995312500000011],[31.236230468750023,-16.02363281250001],[31.939843750000023,-16.428808593750006],[32.94804687500002,-16.71230468750001],[32.87626953125002,-16.88359375],[32.99306640625002,-18.35957031250001],[32.69970703125,-18.94091796875],[32.84980468750001,-19.10439453125001],[32.77763671875002,-19.388769531250006],[32.992773437500006,-19.98486328125],[32.49238281250001,-20.659765625],[32.353613281250006,-21.136523437500003],[32.429785156250006,-21.29707031250001],[31.429492187500017,-22.298828125],[31.287890625000017,-22.40205078125001]]]},"properties":{"name":"Zimbabwe","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[74.00809389139292,33.25375789331485],[73.19660141888893,33.898124784580936],[73.13410859949555,34.82510160558277],[72.31128647748268,35.77290936638241],[73.08203125000107,36.43949943991182],[73.08961802927895,36.86435907947333],[73.116796875,36.868554687499994],[74.03886718750002,36.825732421874996],[74.54140625000002,37.02216796875],[74.69218750000002,37.0357421875],[74.8892578125,36.952441406249996],[74.94912109375002,36.968359375],[75.05390625000001,36.987158203125],[75.14521484375001,36.9732421875],[75.3466796875,36.913476562499994],[75.37685546875002,36.883691406249994],[75.42421875000002,36.738232421875],[75.46025390625002,36.725048828125],[75.57373046875,36.759326171874996],[75.66718750000001,36.741992187499996],[75.77216796875001,36.694921875],[75.84023437500002,36.649707031249996],[75.88496093750001,36.600732421874994],[75.93300781250002,36.52158203125],[75.95185546875001,36.45810546875],[75.97441406250002,36.382421875],[75.91230468750001,36.048974609374994],[76.07089843750003,35.9830078125],[76.14785156250002,35.829003906249994],[76.17783203125003,35.810546875],[76.25166015625001,35.8109375],[76.3857421875,35.837158203125],[76.50205078125003,35.878222656249996],[76.55126953125,35.887060546875],[76.5634765625,35.772998046874996],[76.6318359375,35.729394531249994],[76.7275390625,35.678662109375],[76.76689453124999,35.66171875],[76.81279296874999,35.571826171874996],[76.88222656250002,35.4357421875],[76.927734375,35.346630859375],[77.04863281249999,35.109912109374996],[77.00087890625002,34.991992187499996],[76.78291015625001,34.900195312499996],[76.75751953125001,34.877832031249994],[76.7490234375,34.847558593749994],[76.6962890625,34.786914062499996],[76.59443359375001,34.73583984375],[76.45673828125001,34.756103515625],[76.17246093750003,34.667724609375],[76.041015625,34.669921875],[75.93828125000002,34.612548828125],[75.86210937500002,34.56025390625],[75.70917968750001,34.503076171874994],[74.300390625,34.765380859375],[74.17197265625,34.7208984375],[74.05585937500001,34.6806640625],[73.96123046875002,34.653466796874994],[73.79453125,34.378222656249996],[73.80996093750002,34.325341796874994],[73.92460937500002,34.287841796875],[73.97236328125001,34.236621093749996],[73.9794921875,34.191308593749994],[73.90390625,34.1080078125],[73.94990234375001,34.018798828125],[74.24648437500002,33.990185546875],[73.97646484375002,33.7212890625],[74.15,33.506982421874994],[74.00809389139292,33.25375789331485]]]},"properties":{"name":"","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[78.49194250885338,32.53122786149202],[78.10154031239509,32.87658365066666],[77.71342088235082,32.6917648744551],[77.06655516561037,33.301666835953235],[76.62299010270264,33.32014871357439],[76.32728006076415,32.87658365066666],[75.73585997688717,32.78417426256088],[75.62496871116024,32.28516356678968],[75.32221348233018,32.28516356678968],[74.98730468749997,32.46220703124996],[74.78886718750013,32.4578125],[74.6857421875001,32.493798828124994],[74.66328125000004,32.75766601562495],[74.63242187499995,32.770898437500136],[74.58828125000011,32.7532226562501],[74.35458984375012,32.76870117187505],[74.30546875000007,32.81044921875002],[74.30361328125005,32.991796875000034],[73.98984375000006,33.22119140625006],[74.15,33.506982421874994],[73.97646484375016,33.72128906249998],[74.24648437500011,33.99018554687504],[73.9499023437501,34.018798828125],[73.90390625000012,34.10800781250006],[73.97949218750009,34.191308593749966],[73.97236328125004,34.23662109374996],[73.92460937500007,34.287841796875114],[73.80996093750016,34.32534179687511],[73.79453125000006,34.378222656250045],[73.96123046875007,34.653466796874994],[74.05585937500015,34.68066406250003],[74.17197265624995,34.72089843750004],[74.30039062500006,34.76538085937506],[75.70917968750004,34.50307617187508],[75.86210937500002,34.56025390625001],[75.93828125000019,34.612548828125],[76.04101562500014,34.66992187499997],[76.17246093750006,34.66772460937506],[76.4567382812501,34.756103515625114],[76.5944335937501,34.73583984375006],[76.69628906249997,34.78691406249999],[76.74902343750014,34.84755859375008],[76.7575195312501,34.87783203125005],[76.7829101562501,34.90019531249999],[77.00087890625011,34.99199218750002],[77.03066406250011,35.06235351562498],[77.04863281250007,35.109912109375074],[77.42343749999995,35.30258789062506],[77.57158203125002,35.37875976562495],[77.69697265625015,35.443261718750136],[77.79941406250006,35.49589843750002],[78.0426757812501,35.4797851562501],[78.07578125000006,35.13491210937502],[78.15849609375002,34.94648437499998],[78.32695312500007,34.60639648437498],[78.86484375000006,34.39033203125001],[78.93642578125,34.35195312500002],[78.97060546875011,34.22822265625004],[78.72666015625006,34.013378906249955],[78.78378906250006,33.80878906250004],[78.86503906250002,33.43110351562501],[78.94843750000004,33.346533203125006],[79.1125,33.22626953125001],[79.13515625000005,33.17192382812496],[79.10283203125007,33.05253906249996],[79.14550781250003,33.00146484375006],[79.16992187500003,32.497216796874994],[78.91894531249997,32.3582031250001],[78.75351562500012,32.49926757812506],[78.73671875,32.55839843750002],[78.49194250885338,32.53122786149202]]]]},"properties":{"name":"","childNum":1}}]}'); -;// CONCATENATED MODULE: ./src/components/Chart/index.js - - - - - - - - - -external_echarts_namespaceObject.registerMap("world", world_namespaceObject); -const Chart = (props) => { - const { - areaStyleColors, - dataLoaded, - hasData, - highlight, - type, - option, - series, - onChange, - zoomStart, - zoomEnd, - title, - seriesConfig = [], - noDataComponent = null, - zoomColors - } = props; - const [tykChartInstance, setTykChartInstance] = (0,external_react_namespaceObject.useState)(null); - const chartWrapperRef = (0,external_react_namespaceObject.useRef)(null); - const onResize = () => { - if (tykChartInstance) { - tykChartInstance.resize(); - } - }; - const lineBarChart = { - defaultOpts: (0,external_immutable_namespaceObject.fromJS)({ - title: { - show: true, - text: title, - left: 0 - }, - color: [], - toolbox: { - right: "0", - orient: "horizontal", - itemSize: 15, - showTitle: true, - feature: null - }, - dataZoom: [{ - show: true, - start: 0, - end: 100, - orient: "horizontal", - dataBackground: { - lineStyle: { - color: (zoomColors == null ? void 0 : zoomColors.lineStyle) || "#368493" - }, - areaStyle: { - color: (zoomColors == null ? void 0 : zoomColors.areaStyle) || "#368493" - } - }, - handleStyle: { - color: (zoomColors == null ? void 0 : zoomColors.handleStyle) || "#368493" - }, - textStyle: { - color: (zoomColors == null ? void 0 : zoomColors.textStyle) || "#368493" - }, - borderColor: "transparent", - fillerColor: (zoomColors == null ? void 0 : zoomColors.fillerColor) || "rgba(54, 132, 147, 0.1)" - }], - legend: { - show: false - // data: [], - // right: '1%', - }, - tooltip: { - trigger: "axis", - axisPointer: { - type: "cross" - } - }, - grid: { - left: "1%", - right: "1%", - bottom: "50px", - top: "40px", - containLabel: true - }, - xAxis: { - boundaryGap: false, - type: "category", - splitLine: { - show: true, - lineStyle: { - type: "dotted", - color: "#F0F0F0" - } - }, - axisLine: { - show: false - }, - axisTick: { - show: false - }, - data: [] - }, - yAxis: { - min: "dataMin", - boundaryGap: true, - axisPointer: { - show: true - }, - splitLine: { - lineStyle: { - type: "dotted", - color: "#F0F0F0" - }, - show: true - }, - axisLabel: { - show: true - }, - axisLine: { - show: true - }, - axisTick: { - show: false - }, - type: "value" - }, - textStyle: { - color: "#5a5a68" - }, - series: [], - animationEasing: "elasticOut" - }), - seriesDefault: (0,external_immutable_namespaceObject.fromJS)({ - data: [], - type: "line", - areaStyle: { - opacity: 1, - color: areaStyleColors ? new external_echarts_namespaceObject.graphic.LinearGradient( - 0, - 0, - 1, - 1, - areaStyleColors.map((color, index) => ({ - offset: index, - color - })) - ) : [] - }, - smooth: false, - symbolSize: 7, - name: "" - }) - }; - const pieChart = { - defaultOpts: (0,external_immutable_namespaceObject.fromJS)({ - tooltip: { - trigger: "axis", - formatter: "{b}: {c} ({d}%)" - }, - legend: { - orient: "horizontal", - x: "left", - y: "top", - data: [] - }, - color: [], - series: [] - }), - seriesDefault: (0,external_immutable_namespaceObject.fromJS)({ - type: "pie", - center: [ - "50%", - "55%" - ], - radius: [ - "50%", - "75%" - ], - avoidLabelOverlap: false, - animationType: "scale", - animationEasing: "elasticOut", - labelLine: { - normal: { - show: true, - smooth: 0.2, - length: 6, - length2: 6 - } - }, - data: [] - }) - }; - const geoChart = { - defaultOpts: (0,external_immutable_namespaceObject.fromJS)({ - series: [] - }), - seriesDefault: (0,external_immutable_namespaceObject.fromJS)({ - type: "map", - data: [] - }) - }; - const buildChartOptions = (selectedType, selectedOptions, selectedSeries) => { - let finalOpts = {}; - switch (selectedType) { - case "pie": { - finalOpts = pieChart.defaultOpts.mergeDeep((0,external_immutable_namespaceObject.fromJS)(selectedOptions)).toJS(); - selectedSeries.forEach((entry) => { - finalOpts.series.push(pieChart.seriesDefault.mergeDeep((0,external_immutable_namespaceObject.fromJS)(entry)).toJS()); - }); - break; - } - case "geo": { - finalOpts = geoChart.defaultOpts.mergeDeep((0,external_immutable_namespaceObject.fromJS)(selectedOptions)).toJS(); - selectedSeries.forEach((entry) => { - finalOpts.series.push(geoChart.seriesDefault.mergeDeep((0,external_immutable_namespaceObject.fromJS)(entry)).toJS()); - }); - break; - } - default: { - finalOpts = lineBarChart.defaultOpts.mergeDeep((0,external_immutable_namespaceObject.fromJS)(selectedOptions)).toJS(); - if (Array.isArray(selectedOptions.yAxis)) { - finalOpts.yAxis = selectedOptions.yAxis; - } - selectedSeries.forEach((entry, index) => { - const seriesData = Object.assign( - {}, - lineBarChart.seriesDefault.toJS(), - seriesConfig[index], - entry - ); - finalOpts.series.push(seriesData); - }); - break; - } - } - return finalOpts; - }; - (0,external_react_namespaceObject.useEffect)(() => { - window.addEventListener("resize", onResize); - return () => { - window.removeEventListener("resize", onResize); - }; - }, [tykChartInstance]); - (0,external_react_namespaceObject.useEffect)(() => { - if (!(chartWrapperRef == null ? void 0 : chartWrapperRef.current)) { - return; - } - setTykChartInstance(external_echarts_namespaceObject.init(chartWrapperRef.current)); - return () => { - if (tykChartInstance) { - tykChartInstance.dispose(); - } - }; - }, [chartWrapperRef.current]); - const eventCallBack = (e) => { - if (onChange) { - onChange(e); - } - }; - (0,external_react_namespaceObject.useEffect)(() => { - let debouncedMethod; - if (tykChartInstance) { - debouncedMethod = debounce(eventCallBack, 500); - tykChartInstance.on("dataZoom", debouncedMethod); - tykChartInstance.on("restore", debouncedMethod); - tykChartInstance.on("click", debouncedMethod); - tykChartInstance.on("mousemove", (params) => { - if (params.data) { - tykChartInstance.getZr().setCursorStyle("pointer"); - } - }); - } - return () => { - if (tykChartInstance) { - tykChartInstance.off("dataZoom", debouncedMethod); - tykChartInstance.off("restore", debouncedMethod); - tykChartInstance.off("click", debouncedMethod); - } - }; - }, [tykChartInstance, onChange]); - const prevInstance = hooks_usePrevious(tykChartInstance); - const prevOption = hooks_usePrevious(option); - const prevType = hooks_usePrevious(type); - const prevSeries = hooks_usePrevious(series); - (0,external_react_namespaceObject.useEffect)(() => { - var _a, _b, _c, _d, _e, _f; - if (tykChartInstance && (!((_b = (_a = (0,external_immutable_namespaceObject.fromJS)(prevInstance)) == null ? void 0 : _a.equals) == null ? void 0 : _b.call(_a, (0,external_immutable_namespaceObject.fromJS)(tykChartInstance))) || !((_d = (_c = (0,external_immutable_namespaceObject.fromJS)(prevOption)) == null ? void 0 : _c.equals) == null ? void 0 : _d.call(_c, (0,external_immutable_namespaceObject.fromJS)(option))) || prevType !== type || !((_f = (_e = (0,external_immutable_namespaceObject.fromJS)(prevSeries)).equals) == null ? void 0 : _f.call(_e, (0,external_immutable_namespaceObject.fromJS)(series))))) { - tykChartInstance.clear(); - tykChartInstance.setOption(buildChartOptions(type, option, series)); - tykChartInstance.dispatchAction({ - type: "takeGlobalCursor", - key: "dataZoomSelect", - dataZoomSelectActive: true - }); - } - }, [tykChartInstance, option, series, type]); - (0,external_react_namespaceObject.useEffect)(() => { - if (tykChartInstance && highlight) { - tykChartInstance.dispatchAction({ - type: "highlight", - seriesIndex: highlight.seriesIndex, - dataIndex: highlight.dataIndex - }); - tykChartInstance.dispatchAction({ - type: "showTip", - seriesIndex: highlight.seriesIndex, - dataIndex: highlight.dataIndex - }); - } - }, [highlight]); - const prevZoomStart = hooks_usePrevious(zoomStart); - const prevZoomEnd = hooks_usePrevious(zoomEnd); - (0,external_react_namespaceObject.useEffect)(() => { - if (tykChartInstance && zoomStart !== -1 && zoomEnd !== -1 && (prevZoomStart !== zoomStart || prevZoomEnd !== zoomEnd)) { - tykChartInstance.dispatchAction({ - type: "dataZoom", - startValue: zoomStart, - endValue: zoomEnd - }); - } - }, [zoomStart, zoomEnd]); - const getStyle = () => { - const { style } = props; - const tempStyle = style || {}; - if (!tempStyle.height) { - tempStyle.height = "300px"; - } - if (!tempStyle.width) { - tempStyle.width = "100%"; - } - return tempStyle; - }; - const chartHasData = () => dataLoaded && (hasData === false || hasData === true) ? hasData : true; - const getCssClasses = () => { - const cssClasses = ["tyk-chart"]; - if (!dataLoaded) { - cssClasses.push("tyk-chart--loading-chart"); - } - if (!chartHasData()) { - cssClasses.push("tyk-chart--no-data"); - } - return cssClasses.join(" "); - }; - return /* @__PURE__ */ external_react_default().createElement( - "div", - { className: "tyk-chart__wrapper" }, - !dataLoaded ? /* @__PURE__ */ external_react_default().createElement(components_Loader, null) : null, - /* @__PURE__ */ external_react_default().createElement( - "div", - { - className: getCssClasses(), - style: getStyle(), - ref: chartWrapperRef - } - ), - /* eslint-disable-next-line no-nested-ternary */ - chartHasData() ? null : noDataComponent ? noDataComponent() : /* @__PURE__ */ external_react_default().createElement(components_Message, { theme: "info" }, "No data to display") - ); -}; -Chart.propTypes = { - areaStyleColors: external_prop_types_default().instanceOf(Array), - dataLoaded: (external_prop_types_default()).bool, - hasData: (external_prop_types_default()).bool, - highlight: external_prop_types_default().oneOfType([ - (external_prop_types_default()).number, - (external_prop_types_default()).string, - external_prop_types_default().instanceOf(Array) - ]), - noDataComponent: (external_prop_types_default()).func, - zoomStart: (external_prop_types_default()).number, - zoomEnd: (external_prop_types_default()).number, - zoomColors: external_prop_types_default().instanceOf(Object), - option: external_prop_types_default().instanceOf(Object), - onChange: (external_prop_types_default()).func, - style: external_prop_types_default().instanceOf(Object), - type: (external_prop_types_default()).string, - title: (external_prop_types_default()).string, - series: external_prop_types_default().instanceOf(Array), - seriesConfig: external_prop_types_default().instanceOf(Object) -}; -/* harmony default export */ const components_Chart = ((0,external_react_namespaceObject.memo)(Chart)); - -// EXTERNAL MODULE: ./node_modules/react-dom/client.js -var client = __webpack_require__(745); -;// CONCATENATED MODULE: ./src/components/Toast/js/ToastMessage.js - - - - -const ToastMessage = (props) => { - const { - children, - options, - onClose, - index - } = props; - const opts = Object.assign({ - theme: "success", - delay: 3e3 - }, options); - let timer; - const handleClose = (itemIndex) => { - onClose(itemIndex); - clearTimeout(timer); - }; - hooks_useTimeout(() => handleClose(index), opts.delay); - return /* @__PURE__ */ external_react_default().createElement( - components_Message, - { - className: "tyk-toast__message", - theme: opts.theme, - onClose: () => handleClose(index) - }, - children - ); -}; -ToastMessage.propTypes = { - children: external_prop_types_default().oneOfType([ - (external_prop_types_default()).element, - (external_prop_types_default()).node, - (external_prop_types_default()).string - ]), - options: external_prop_types_default().instanceOf(Object), - onClose: (external_prop_types_default()).func, - index: (external_prop_types_default()).number -}; -/* harmony default export */ const js_ToastMessage = (ToastMessage); - -;// CONCATENATED MODULE: ./src/components/Toast/js/ToastContainer.js -var ToastContainer_defProp = Object.defineProperty; -var ToastContainer_defProps = Object.defineProperties; -var ToastContainer_getOwnPropDescs = Object.getOwnPropertyDescriptors; -var ToastContainer_getOwnPropSymbols = Object.getOwnPropertySymbols; -var ToastContainer_hasOwnProp = Object.prototype.hasOwnProperty; -var ToastContainer_propIsEnum = Object.prototype.propertyIsEnumerable; -var ToastContainer_defNormalProp = (obj, key, value) => key in obj ? ToastContainer_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var ToastContainer_spreadValues = (a, b) => { - for (var prop in b || (b = {})) - if (ToastContainer_hasOwnProp.call(b, prop)) - ToastContainer_defNormalProp(a, prop, b[prop]); - if (ToastContainer_getOwnPropSymbols) - for (var prop of ToastContainer_getOwnPropSymbols(b)) { - if (ToastContainer_propIsEnum.call(b, prop)) - ToastContainer_defNormalProp(a, prop, b[prop]); - } - return a; -}; -var ToastContainer_spreadProps = (a, b) => ToastContainer_defProps(a, ToastContainer_getOwnPropDescs(b)); -var __restKey = (key) => typeof key === "symbol" ? key : key + ""; -var ToastContainer_objRest = (source, exclude) => { - var target = {}; - for (var prop in source) - if (ToastContainer_hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) - target[prop] = source[prop]; - if (source != null && ToastContainer_getOwnPropSymbols) - for (var prop of ToastContainer_getOwnPropSymbols(source)) { - if (exclude.indexOf(prop) < 0 && ToastContainer_propIsEnum.call(source, prop)) - target[prop] = source[prop]; - } - return target; -}; - - - -const ToastContainer = (props) => { - const [messages, setMessages] = (0,external_react_namespaceObject.useState)({}); - const { - notify - } = props; - const updateNotifications = (message, options) => { - const msgID = Math.floor(Math.random() * 1e6); - setMessages((prevMessages) => ToastContainer_spreadProps(ToastContainer_spreadValues({}, prevMessages), { - [msgID]: { - message, - options - } - })); - }; - (0,external_react_namespaceObject.useEffect)(() => { - notify(updateNotifications); - }, [messages]); - const onMessageClosed = (index) => { - const tempMessages = ToastContainer_spreadValues({}, messages); - delete tempMessages[index]; - setMessages((prevMessages) => { - const _a = prevMessages, { [index]: messageToBeRemoved } = _a, restMessages = ToastContainer_objRest(_a, [__restKey(index)]); - return restMessages; - }); - }; - return /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-toast__container" }, Object.keys(messages).map((msgID) => messages[msgID] ? /* @__PURE__ */ external_react_default().createElement( - js_ToastMessage, - { - options: messages[msgID].options, - onClose: onMessageClosed.bind(null, msgID), - index: msgID, - key: msgID - }, - messages[msgID].message - ) : null)); -}; -ToastContainer.propTypes = { - notify: (external_prop_types_default()).func -}; -/* harmony default export */ const js_ToastContainer = (ToastContainer); - -;// CONCATENATED MODULE: ./src/components/Toast/index.js -var Toast_defProp = Object.defineProperty; -var Toast_defProps = Object.defineProperties; -var Toast_getOwnPropDescs = Object.getOwnPropertyDescriptors; -var Toast_getOwnPropSymbols = Object.getOwnPropertySymbols; -var Toast_hasOwnProp = Object.prototype.hasOwnProperty; -var Toast_propIsEnum = Object.prototype.propertyIsEnumerable; -var Toast_defNormalProp = (obj, key, value) => key in obj ? Toast_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var Toast_spreadValues = (a, b) => { - for (var prop in b || (b = {})) - if (Toast_hasOwnProp.call(b, prop)) - Toast_defNormalProp(a, prop, b[prop]); - if (Toast_getOwnPropSymbols) - for (var prop of Toast_getOwnPropSymbols(b)) { - if (Toast_propIsEnum.call(b, prop)) - Toast_defNormalProp(a, prop, b[prop]); - } - return a; -}; -var Toast_spreadProps = (a, b) => Toast_defProps(a, Toast_getOwnPropDescs(b)); -var __publicField = (obj, key, value) => { - Toast_defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); - return value; -}; - - - -class ToastCreator { - constructor() { - __publicField(this, "bindNotify", (fn) => { - this.createNotification = fn; - }); - const el = document.createElement("div"); - el.className = "tyk-toast"; - document.body.appendChild(el); - const root = (0,client/* createRoot */.s)(el); - root.render(/* @__PURE__ */ external_react_default().createElement(js_ToastContainer, { notify: this.bindNotify })); - } - notify(message, options) { - if (this.createNotification) { - this.createNotification(message, options); - } - } - danger(message, options) { - this.notify(message, Toast_spreadProps(Toast_spreadValues({}, options), { theme: "danger" })); - } - success(message, options) { - this.notify(message, Toast_spreadProps(Toast_spreadValues({}, options), { theme: "success" })); - } - warning(message, options) { - this.notify(message, Toast_spreadProps(Toast_spreadValues({}, options), { theme: "warning" })); - } - info(message, options) { - this.notify(message, Toast_spreadProps(Toast_spreadValues({}, options), { theme: "info" })); - } -} -const toast = new ToastCreator(); -/* harmony default export */ const Toast = (toast); - -;// CONCATENATED MODULE: ./src/components/CopyToClipboard/index.js -var CopyToClipboard_defProp = Object.defineProperty; -var CopyToClipboard_getOwnPropSymbols = Object.getOwnPropertySymbols; -var CopyToClipboard_hasOwnProp = Object.prototype.hasOwnProperty; -var CopyToClipboard_propIsEnum = Object.prototype.propertyIsEnumerable; -var CopyToClipboard_defNormalProp = (obj, key, value) => key in obj ? CopyToClipboard_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var CopyToClipboard_spreadValues = (a, b) => { - for (var prop in b || (b = {})) - if (CopyToClipboard_hasOwnProp.call(b, prop)) - CopyToClipboard_defNormalProp(a, prop, b[prop]); - if (CopyToClipboard_getOwnPropSymbols) - for (var prop of CopyToClipboard_getOwnPropSymbols(b)) { - if (CopyToClipboard_propIsEnum.call(b, prop)) - CopyToClipboard_defNormalProp(a, prop, b[prop]); - } - return a; -}; - - - -const CopyToClipboard = (props) => { - const { - display, - copy, - children, - onCopy - } = props; - const txtRef = (0,external_react_namespaceObject.createRef)(); - const handleClick = (0,external_react_namespaceObject.useCallback)(() => { - if (onCopy) { - onCopy(); - } - if (!window.navigator.clipboard) { - txtRef.current.select(); - document.execCommand("copy"); - Toast.notify("copied", { theme: "success" }); - return; - } - window.navigator.clipboard.writeText(copy); - Toast.notify("copied", { theme: "success" }); - }, [onCopy, txtRef]); - return /* @__PURE__ */ external_react_default().createElement(external_react_namespaceObject.Fragment, null, /* @__PURE__ */ external_react_default().createElement(props.element, CopyToClipboard_spreadValues({ onClick: handleClick, onKeyUp: handleClick }, props), children || display), !window.navigator.clipboard ? /* @__PURE__ */ external_react_default().createElement("textarea", { ref: txtRef, className: "tyk-copy-to-clipboard", name: "copy", value: copy }, copy) : null); -}; -CopyToClipboard.propTypes = { - /** Callback function executed after text is copied */ - onCopy: (external_prop_types_default()).func, - /** Text to be copied */ - copy: (external_prop_types_default()).string.isRequired, - /** Text to be displayed */ - display: (external_prop_types_default()).string, - /** Children of custom element if you are using any custom element */ - children: external_prop_types_default().oneOfType([ - (external_prop_types_default()).element, - (external_prop_types_default()).string, - (external_prop_types_default()).object, - (external_prop_types_default()).node - ]) -}; -/* harmony default export */ const components_CopyToClipboard = (CopyToClipboard); - -// EXTERNAL MODULE: external "react-dom" -var external_react_dom_ = __webpack_require__(137); -var external_react_dom_default = /*#__PURE__*/__webpack_require__.n(external_react_dom_); -;// CONCATENATED MODULE: ./src/components/Modal/js/ModalFooter.js - - -function ModalFooter({ children }) { - return /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-modal__footer" }, children); -} -ModalFooter.propTypes = { - children: external_prop_types_default().oneOfType([ - (external_prop_types_default()).element, - (external_prop_types_default()).node, - (external_prop_types_default()).string - ]) -}; -/* harmony default export */ const js_ModalFooter = (ModalFooter); - -;// CONCATENATED MODULE: ./src/components/Modal/js/ModalBody.js - - -function ModalBody({ children }) { - return /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-modal__body" }, children); -} -ModalBody.propTypes = { - children: external_prop_types_default().oneOfType([ - (external_prop_types_default()).element, - (external_prop_types_default()).node, - (external_prop_types_default()).string - ]) -}; -/* harmony default export */ const js_ModalBody = (ModalBody); - -;// CONCATENATED MODULE: ./src/components/Modal/index.js -var Modal_defProp = Object.defineProperty; -var Modal_getOwnPropSymbols = Object.getOwnPropertySymbols; -var Modal_hasOwnProp = Object.prototype.hasOwnProperty; -var Modal_propIsEnum = Object.prototype.propertyIsEnumerable; -var Modal_defNormalProp = (obj, key, value) => key in obj ? Modal_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var Modal_spreadValues = (a, b) => { - for (var prop in b || (b = {})) - if (Modal_hasOwnProp.call(b, prop)) - Modal_defNormalProp(a, prop, b[prop]); - if (Modal_getOwnPropSymbols) - for (var prop of Modal_getOwnPropSymbols(b)) { - if (Modal_propIsEnum.call(b, prop)) - Modal_defNormalProp(a, prop, b[prop]); - } - return a; -}; -var Modal_objRest = (source, exclude) => { - var target = {}; - for (var prop in source) - if (Modal_hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) - target[prop] = source[prop]; - if (source != null && Modal_getOwnPropSymbols) - for (var prop of Modal_getOwnPropSymbols(source)) { - if (exclude.indexOf(prop) < 0 && Modal_propIsEnum.call(source, prop)) - target[prop] = source[prop]; - } - return target; -}; - - - - - - - -function Modal(_a) { - var _b = _a, { - children, - theme = "none", - disableCloseCommands = false, - opened = false, - onClose = () => { - }, - size = "md", - className = "", - showBackdrop = true - } = _b, restProps = Modal_objRest(_b, [ - "children", - "theme", - "disableCloseCommands", - "opened", - "onClose", - "size", - "className", - "showBackdrop" - ]); - const modalClasses = [ - "tyk-modal", - `tyk-modal--theme-${theme}`, - opened && "opened" - ].concat(className.split(" ")).filter(Boolean).join(" "); - const backdropClasses = [ - "tyk-modal__backdrop", - opened && "opened" - ].filter(Boolean).join(" "); - const themeIcon = { - success: "check", - warning: "warning", - danger: "delete" - }[theme]; - return /* @__PURE__ */ external_react_default().createElement((external_react_default()).Fragment, null, external_react_dom_default().createPortal( - /* @__PURE__ */ external_react_default().createElement( - external_react_transition_group_namespaceObject.CSSTransition, - { - in: opened, - timeout: 100, - classNames: "appear" - }, - /* @__PURE__ */ external_react_default().createElement("div", Modal_spreadValues({ className: modalClasses }, restProps), /* @__PURE__ */ external_react_default().createElement("div", { className: `tyk-modal__dialog tyk-modal--${size}` }, /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-modal__content" }, theme !== "none" && /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-modal__theme-header" }, /* @__PURE__ */ external_react_default().createElement(components_Icon, { family: "tykon", type: themeIcon })), children))) - ), - document.querySelector("body") - ), showBackdrop && external_react_dom_default().createPortal( - /* @__PURE__ */ external_react_default().createElement( - external_react_transition_group_namespaceObject.CSSTransition, - { - in: opened, - timeout: 100, - classNames: "fade" - }, - /* @__PURE__ */ external_react_default().createElement( - "button", - { - className: backdropClasses, - onClick: () => !disableCloseCommands && onClose(), - onKeyDown: () => { - }, - type: "button", - "aria-label": "Close" - } - ) - ), - document.querySelector("body") - )); -} -Modal.Body = js_ModalBody; -Modal.Footer = js_ModalFooter; -Modal.Header = ({ children }) => { - console.warn("%cModal.Header%c is deprecated.", "font-weight: bold", ""); - return /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-modal__header" }, children); -}; -Modal.Title = ({ children }) => { - console.warn("%cModal.Title%c is deprecated.", "font-weight: bold", ""); - return /* @__PURE__ */ external_react_default().createElement("h4", { className: "tyk-modal__title" }, children); -}; -Modal.propTypes = { - children: external_prop_types_default().oneOfType([ - (external_prop_types_default()).element, - (external_prop_types_default()).node, - (external_prop_types_default()).string - ]), - className: (external_prop_types_default()).string, - /** one of "success", "warning", "danger", "none"; default is "none" */ - theme: (external_prop_types_default()).string, - /** If set on true, the Modal won't close when clicking on the overlay or by pressing ESC key */ - disableCloseCommands: (external_prop_types_default()).bool, - /** If true the Modal will be by default opened */ - opened: (external_prop_types_default()).bool, - /** Callback method when the Modal is closed */ - onClose: (external_prop_types_default()).func, - /** Width of the Moda: md or lg */ - size: (external_prop_types_default()).string, - showBackdrop: (external_prop_types_default()).bool -}; -/* harmony default export */ const components_Modal = (Modal); - -;// CONCATENATED MODULE: ./src/components/Confirm/index.js - - - - -function Confirm(props) { - const { - children, - title, - description, - confirmBtnText = "Confirm", - cancelBtnText = "Cancel" - } = props; - const [open, setOpen] = (0,external_react_namespaceObject.useState)(false); - const [callback, setCallback] = (0,external_react_namespaceObject.useState)(null); - const [cancelCallback, setCancelCallback] = (0,external_react_namespaceObject.useState)(null); - const show = (callbackFunc, cancelCallbackFunc, beforeCallback) => (...args) => { - if (beforeCallback) { - beforeCallback(...args); - } - setOpen(true); - setCallback(() => () => callbackFunc(...args)); - if (cancelCallbackFunc) { - setCancelCallback(() => () => cancelCallbackFunc(...args)); - } - }; - const hide = () => { - setOpen(false); - setCallback(null); - setCancelCallback(null); - }; - const cancel = () => { - if (cancelCallback) { - cancelCallback(); - } - hide(); - }; - const confirm = () => { - callback(); - hide(); - }; - return /* @__PURE__ */ external_react_default().createElement((external_react_default()).Fragment, null, children(show), /* @__PURE__ */ external_react_default().createElement( - components_Modal, - { - opened: open, - onClose: cancel - }, - /* @__PURE__ */ external_react_default().createElement(components_Modal.Body, null, /* @__PURE__ */ external_react_default().createElement("h4", null, title), description), - /* @__PURE__ */ external_react_default().createElement(components_Modal.Footer, null, /* @__PURE__ */ external_react_default().createElement( - components_Button, - { - onClick: cancel, - theme: "default" - }, - cancelBtnText - ), /* @__PURE__ */ external_react_default().createElement( - components_Button, - { - onClick: confirm, - theme: "success" - }, - confirmBtnText - )) - )); -} -Confirm.propTypes = { - /** Sets the text for primary / confirmation button on opened modal */ - confirmBtnText: (external_prop_types_default()).string, - /** Sets the text for danger / abort button on opened modal */ - cancelBtnText: (external_prop_types_default()).string, - /** Sets the title for the opened modal */ - title: (external_prop_types_default()).string, - /** Sets the description for the opened modal */ - description: (external_prop_types_default()).string, - children: external_prop_types_default().oneOfType([ - (external_prop_types_default()).element, - (external_prop_types_default()).string, - (external_prop_types_default()).object, - (external_prop_types_default()).node, - (external_prop_types_default()).func - ]) -}; -/* harmony default export */ const components_Confirm = (Confirm); - -;// CONCATENATED MODULE: ./src/components/FixedWrapper/index.js - - - -function FixedWrapper({ children, className, showShadow }) { - const fixedWrapperRef = (0,external_react_namespaceObject.useRef)(null); - const attachShadow = (0,external_react_namespaceObject.useCallback)(() => { - const element = fixedWrapperRef.current; - if (!element) { - return; - } - if (window.scrollY) { - element.classList.add("tyk-fixed-wrapper--scrolled"); - } else { - element.classList.remove("tyk-fixed-wrapper--scrolled"); - } - }, [fixedWrapperRef.current]); - const debouncedAttachShadow = (0,external_react_namespaceObject.useCallback)(debounce(attachShadow, 100), [attachShadow]); - (0,external_react_namespaceObject.useEffect)(() => { - if (showShadow) { - window.addEventListener("scroll", debouncedAttachShadow); - } - return () => { - window.removeEventListener("scroll", debouncedAttachShadow); - }; - }, [debouncedAttachShadow, showShadow]); - return /* @__PURE__ */ external_react_default().createElement("div", { className: `tyk-fixed-wrapper ${className}`, ref: fixedWrapperRef }, children); -} -FixedWrapper.propTypes = { - children: external_prop_types_default().oneOfType([ - (external_prop_types_default()).element, - (external_prop_types_default()).node, - (external_prop_types_default()).string - ]), - /** Css classes that can be passed to the FixedWraper element */ - className: (external_prop_types_default()).string, - /** If true, bottom shadow on the FixedWrapper component - * is being displayed when scroll happens - */ - showShadow: (external_prop_types_default()).bool -}; -FixedWrapper.defaultProps = { - className: "" -}; -/* harmony default export */ const components_FixedWrapper = (FixedWrapper); - -;// CONCATENATED MODULE: ./src/components/InfiniteScroller/index.js - - - - - -function InfiniteScroller({ - children, - hasMore, - initialLoad, - loadMore, - pageNumber, - refChild -}) { - const [showLoader, setShowLoader] = (0,external_react_namespaceObject.useState)(false); - const containerRef = (0,external_react_namespaceObject.useRef)(null); - const refChildSize = hooks_useComponentSize(refChild); - (0,external_react_namespaceObject.useEffect)(() => { - if (initialLoad && typeof loadMore === "function") { - setShowLoader(false); - loadMore(pageNumber); - } - }, [initialLoad]); - const shouldLoad = (0,external_react_namespaceObject.useCallback)(() => { - if (!containerRef.current) - return false; - const { clientHeight, scrollTop } = containerRef.current; - return hasMore && (clientHeight + Math.round(scrollTop) === refChildSize.height || clientHeight >= refChildSize.height); - }, [containerRef, refChildSize.height]); - const loadMoreData = (0,external_react_namespaceObject.useCallback)(() => { - if (hasMore && typeof loadMore === "function") { - loadMore(pageNumber + 1); - setShowLoader(true); - } else { - setShowLoader(false); - } - }, [hasMore, pageNumber]); - const prevPageNumber = hooks_usePrevious(pageNumber); - const scrollHandler = (0,external_react_namespaceObject.useCallback)(debounce(() => { - if (shouldLoad() && prevPageNumber <= pageNumber) { - loadMoreData(); - } - }, 200), [loadMoreData, shouldLoad]); - (0,external_react_namespaceObject.useEffect)(() => { - var _a; - (_a = containerRef.current) == null ? void 0 : _a.addEventListener("scroll", scrollHandler); - return () => { - var _a2; - return (_a2 = containerRef.current) == null ? void 0 : _a2.removeEventListener("scroll", scrollHandler); - }; - }, [containerRef, scrollHandler]); - (0,external_react_namespaceObject.useEffect)(() => { - if (prevPageNumber > 0 && pageNumber === 0) { - containerRef.current.scrollTop = 0; - } - }, [containerRef, pageNumber]); - const prevRefChildSize = hooks_usePrevious(refChildSize); - (0,external_react_namespaceObject.useEffect)(() => { - if (refChildSize && prevRefChildSize && refChildSize.height !== prevRefChildSize.height && showLoader === true) { - setShowLoader(false); - } - }, [showLoader, refChildSize.height]); - (0,external_react_namespaceObject.useEffect)(() => { - if (refChild && refChildSize.height < containerRef.current.clientHeight && refChildSize.height && hasMore) { - loadMoreData(); - } - }, [containerRef, refChildSize, refChild, hasMore]); - return /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-infinite-scroller" }, /* @__PURE__ */ external_react_default().createElement( - "div", - { - className: "tyk-infinite-scroller__wrapper", - ref: containerRef - }, - children - ), showLoader && /* @__PURE__ */ external_react_default().createElement(components_Loader, { position: "absolute" })); -} -InfiniteScroller.propTypes = { - children: external_prop_types_namespaceObject.PropTypes.oneOfType([ - external_prop_types_namespaceObject.PropTypes.arrayOf(external_prop_types_namespaceObject.PropTypes.node), - external_prop_types_namespaceObject.PropTypes.node, - external_prop_types_namespaceObject.PropTypes.element, - external_prop_types_namespaceObject.PropTypes.string - ]), - hasMore: external_prop_types_namespaceObject.PropTypes.bool, - initialLoad: external_prop_types_namespaceObject.PropTypes.bool, - pageNumber: external_prop_types_namespaceObject.PropTypes.number, - loadMore: external_prop_types_namespaceObject.PropTypes.func, - refChild: external_prop_types_namespaceObject.PropTypes.instanceOf(Object) -}; -InfiniteScroller.defaultProps = { - hasMore: true -}; -/* harmony default export */ const components_InfiniteScroller = (InfiniteScroller); - -;// CONCATENATED MODULE: ./src/components/FloatingContainer/index.js -var FloatingContainer_defProp = Object.defineProperty; -var FloatingContainer_getOwnPropSymbols = Object.getOwnPropertySymbols; -var FloatingContainer_hasOwnProp = Object.prototype.hasOwnProperty; -var FloatingContainer_propIsEnum = Object.prototype.propertyIsEnumerable; -var FloatingContainer_defNormalProp = (obj, key, value) => key in obj ? FloatingContainer_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var FloatingContainer_spreadValues = (a, b) => { - for (var prop in b || (b = {})) - if (FloatingContainer_hasOwnProp.call(b, prop)) - FloatingContainer_defNormalProp(a, prop, b[prop]); - if (FloatingContainer_getOwnPropSymbols) - for (var prop of FloatingContainer_getOwnPropSymbols(b)) { - if (FloatingContainer_propIsEnum.call(b, prop)) - FloatingContainer_defNormalProp(a, prop, b[prop]); - } - return a; -}; - - - - -function FloatingContainer({ - element, - size = "auto", - forceDisplay = "auto", - displayAxis = "auto", - preferredPosition, - offset = 0, - className, - children, - infiniteScrollerConfig -}, ref) { - const localRef = (0,external_react_namespaceObject.useRef)(null); - const floatingContainerRef = ref || localRef; - const contentWrapperRef = (0,external_react_namespaceObject.useRef)(null); - function determineDisplay() { - const target = element.current; - const container = floatingContainerRef.current; - if (!container) - return (preferredPosition != null ? preferredPosition : displayAxis === "vertical") ? "bottom" : "right"; - const { left, top } = target.getBoundingClientRect(); - const topSpace = top; - const bottomSpace = window.innerHeight - top - target.offsetHeight; - const leftSpace = left; - const rightSpace = window.innerWidth - left - target.offsetWidth; - const hasTopSpace = topSpace > container.scrollHeight; - const hasBottomSpace = bottomSpace > container.scrollHeight; - const hasLeftSpace = leftSpace > container.offsetWidth; - const hasRightSpace = rightSpace > container.offsetWidth; - const positionedVerticallyFitsInViewport = left + target.offsetWidth / 2 - container.offsetWidth / 2 > 0; - const positionedHorizontallyFitsInViewport = top + target.offsetHeight / 2 - container.scrollHeight / 2 > 0; - if (displayAxis === "vertical" || displayAxis === "auto" && (hasTopSpace || hasBottomSpace) && positionedVerticallyFitsInViewport) { - if (preferredPosition === "top" && hasTopSpace) - return "top"; - if (preferredPosition === "bottom" && hasBottomSpace) - return "bottom"; - return hasBottomSpace || bottomSpace > topSpace ? "bottom" : "top"; - } - if (displayAxis === "horizontal") { - if (preferredPosition === "left" && hasLeftSpace) - return "left"; - if (preferredPosition === "right" && hasLeftSpace) - return "right"; - return hasRightSpace || rightSpace > leftSpace ? "right" : "left"; - } - if (hasTopSpace && positionedVerticallyFitsInViewport) - return "top"; - if (hasBottomSpace && positionedVerticallyFitsInViewport) - return "bottom"; - if (hasRightSpace && positionedHorizontallyFitsInViewport) - return "right"; - if (hasLeftSpace && positionedHorizontallyFitsInViewport) - return "left"; - return preferredPosition != null ? preferredPosition : "bottom"; - } - function adjustPosition() { - const display = forceDisplay !== "auto" ? forceDisplay : determineDisplay(); - const target = element.current; - const container = floatingContainerRef.current; - if (!target || !container) - return; - const targetPosition = target.getBoundingClientRect(); - if (display === "top") { - const topPos = targetPosition.top - container.offsetHeight - offset; - container.style.top = `${topPos}px`; - container.style.left = size === "auto" ? `${targetPosition.left + target.offsetWidth / 2 - container.offsetWidth / 2}px` : `${targetPosition.left}px`; - if (size === "matchElement") { - container.style.width = `${target.offsetWidth}px`; - } else if (typeof size === "function") { - container.style.width = `${size(target.offsetWidth)}px`; - } - container.style.maxHeight = `${targetPosition.top - offset}px`; - } - if (display === "bottom") { - container.style.top = `${targetPosition.bottom + offset}px`; - container.style.left = size === "auto" ? `${targetPosition.left + target.offsetWidth / 2 - container.offsetWidth / 2}px` : `${targetPosition.left}px`; - if (size === "matchElement") { - container.style.width = `${target.offsetWidth}px`; - } else if (typeof size === "function") { - container.style.width = `${size(target.offsetWidth)}px`; - } - container.style.maxHeight = `${window.innerHeight - targetPosition.bottom - offset}px`; - } - if (display === "left") { - const topPos = targetPosition.top + target.offsetHeight / 2 - container.offsetHeight / 2; - container.style.top = size === "auto" ? `${topPos}px` : `${targetPosition.top}px`; - container.style.left = `${targetPosition.left - container.offsetWidth - offset}px`; - if (size === "matchElement") { - container.style.height = `${target.offsetHeight}px`; - } else if (typeof size === "function") { - container.style.height = `${size(target.offsetHeight)}px`; - } - container.style.maxWidth = `${targetPosition.left - offset}px`; - } - if (display === "right") { - const topPos = targetPosition.top + target.offsetHeight / 2 - container.offsetHeight / 2; - container.style.top = size === "auto" ? `${topPos}px` : `${targetPosition.top}px`; - container.style.left = `${targetPosition.left + target.offsetWidth + offset}px`; - if (size === "matchElement") { - container.style.height = `${target.offsetHeight}px`; - } else if (typeof size === "function") { - container.style.height = `${size(target.offsetHeight)}px`; - } - container.style.maxWidth = `${window.innerWidth - targetPosition.left - target.offsetWidth - offset}px`; - } - } - (0,external_react_namespaceObject.useEffect)(() => { - window.requestAnimationFrame(function schedulePositionUpdate() { - adjustPosition(); - window.requestAnimationFrame(schedulePositionUpdate); - }); - }, []); - return (0,external_react_dom_.createPortal)( - /* @__PURE__ */ external_react_default().createElement( - "div", - { - className: `floating-container ${className || ""}`, - ref: floatingContainerRef - }, - /* @__PURE__ */ external_react_default().createElement( - components_InfiniteScroller, - FloatingContainer_spreadValues({ - refChild: contentWrapperRef - }, infiniteScrollerConfig), - /* @__PURE__ */ external_react_default().createElement( - "div", - { - className: "floating-container__content-wrapper", - ref: contentWrapperRef - }, - children - ) - ) - ), - document.querySelector("body") - ); -} -FloatingContainer.propTypes = { - /** A DOM element that the floating container will be displayed relative to. */ - element: external_prop_types_default().instanceOf(Object), - className: (external_prop_types_default()).string, - /** The size of the container. - * If `auto` the size will be determined by its contents. - * If `matchElement` it will take the width or the height of the element depending - * on the `displayAxis` prop. - * It can also be a function that returns a number representing the width - * or the height in pixels. - */ - size: external_prop_types_default().oneOfType([ - external_prop_types_default().oneOf(["auto", "matchElement"]), - (external_prop_types_default()).func - ]), - /** - * The distance between the element and the floating container. - * It can be positive or negative. - */ - offset: (external_prop_types_default()).number, - /** - * If `auto` the component will try to determine where to display the container relative to the - * element (top, bottom, left, right). - * It can also be one of top, bottom, left, right, to force the floating container to always be - * displayed in that position. - */ - forceDisplay: external_prop_types_default().oneOf(["auto", "top", "bottom", "left", "right"]), - /** - * It can be `auto`, `vertical` or `horizontal`. It specifies the axis where - * it will be displayed when `forceDisplay` is `auto`. - */ - displayAxis: external_prop_types_default().oneOf(["auto", "vertical", "horizontal"]), - /** - * If there is space on both sides of the axis preffer this side. - */ - preferredPosition: external_prop_types_default().oneOf(["top", "bottom", "left", "right"]), - /** - * Configuration object that will be passed to the infinite scroller component. - */ - infiniteScrollerConfig: external_prop_types_default().instanceOf(Object) -}; -/* harmony default export */ const components_FloatingContainer = ((0,external_react_namespaceObject.forwardRef)(FloatingContainer)); - -;// CONCATENATED MODULE: ./src/components/InfoNote/index.js - - - -function InfoNote({ children }) { - return /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-info-note" }, /* @__PURE__ */ external_react_default().createElement(components_Message, { theme: "info" }, children)); -} -InfoNote.propTypes = { - children: external_prop_types_default().oneOfType([ - (external_prop_types_default()).element, - (external_prop_types_default()).node, - (external_prop_types_default()).string - ]) -}; -/* harmony default export */ const components_InfoNote = (InfoNote); - -;// CONCATENATED MODULE: ./src/components/List/js/ListItem.js - - -const ListItem = (props) => { - const { - className, - children - } = props; - return /* @__PURE__ */ external_react_default().createElement("li", { className }, children); -}; -ListItem.propTypes = { - children: external_prop_types_default().oneOfType([ - external_prop_types_default().arrayOf((external_prop_types_default()).node), - (external_prop_types_default()).node, - (external_prop_types_default()).element, - (external_prop_types_default()).string - ]), - className: (external_prop_types_default()).string -}; -ListItem.defaultProps = { - className: "" -}; -/* harmony default export */ const js_ListItem = (ListItem); - -;// CONCATENATED MODULE: ./src/components/List/index.js - - - - -const List = (props) => { - const { - className, - children, - label, - labelwidth, - theme, - style - } = props; - const getCssClasses = () => { - let cssClasses = ["tyk-list"]; - if (theme) { - cssClasses.push(`tyk-list--${theme}`); - } - if (className) { - cssClasses = cssClasses.concat(className.split(" ")); - } - return cssClasses.join(" "); - }; - const getListStyle = () => { - const styleCopy = (0,external_immutable_namespaceObject.fromJS)(style).toJS(); - if (labelwidth) { - styleCopy.flexBasis = `calc(100% - ${labelwidth} - 20px)`; - } - return styleCopy; - }; - return /* @__PURE__ */ external_react_default().createElement("div", { className: `tyk-list__wrapper ${labelwidth ? "tyk-list--with-inline-label" : ""}` }, label !== void 0 ? /* @__PURE__ */ external_react_default().createElement( - "label", - { - style: { - flexBasis: labelwidth || "auto" - } - }, - label - ) : null, /* @__PURE__ */ external_react_default().createElement("ul", { className: getCssClasses(), style: getListStyle() }, children)); -}; -List.propTypes = { - children: external_prop_types_default().oneOfType([ - external_prop_types_default().arrayOf((external_prop_types_default()).node), - (external_prop_types_default()).node, - (external_prop_types_default()).element, - (external_prop_types_default()).string - ]), - className: (external_prop_types_default()).string, - label: (external_prop_types_default()).string, - labelwidth: (external_prop_types_default()).string, - theme: (external_prop_types_default()).string, - style: external_prop_types_default().instanceOf(Object) -}; -List.defaultProps = { - theme: "default", - style: {} -}; -List.Item = js_ListItem; -/* harmony default export */ const components_List = (List); - -;// CONCATENATED MODULE: ./src/components/NavBar/index.js - - -function NavBar({ - align = "center", - children, - left, - right, - title, - pre, - subtitle, - withTabs -}) { - const subtitleContent = subtitle ? /* @__PURE__ */ external_react_default().createElement("p", { className: "font-family-medium" }, subtitle) : null; - return /* @__PURE__ */ external_react_default().createElement("section", { className: `tyk-nav-bar ${withTabs ? "tyk-nav-bar__with-tabs" : ""}` }, /* @__PURE__ */ external_react_default().createElement("div", { className: `tyk-nav-bar__wrapper tyk-nav-bar--align-${align}` }, pre && /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-nav-bar__pre" }, pre), title ? /* @__PURE__ */ external_react_default().createElement("div", null, /* @__PURE__ */ external_react_default().createElement("h1", null, title), subtitleContent) : subtitleContent, /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-nav-bar__container" }, left && /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-nav-bar__left" }, left), right && /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-nav-bar__right" }, right))), children); -} -NavBar.propTypes = { - align: (external_prop_types_default()).string, - children: external_prop_types_default().oneOfType([ - external_prop_types_default().arrayOf((external_prop_types_default()).node), - (external_prop_types_default()).node, - (external_prop_types_default()).element, - (external_prop_types_default()).string - ]), - title: (external_prop_types_default()).string, - subtitle: (external_prop_types_default()).string, - pre: external_prop_types_default().oneOfType([ - (external_prop_types_default()).element, - (external_prop_types_default()).node - ]), - left: external_prop_types_default().oneOfType([ - (external_prop_types_default()).element, - (external_prop_types_default()).node - ]), - right: external_prop_types_default().oneOfType([ - (external_prop_types_default()).element, - (external_prop_types_default()).node - ]), - withTabs: (external_prop_types_default()).bool -}; -/* harmony default export */ const components_NavBar = (NavBar); - -;// CONCATENATED MODULE: ./src/components/Navigation/js/NavigationItem.js - - -function NavigationItem({ children }) { - return /* @__PURE__ */ external_react_default().createElement("li", { className: "tyk-navigation-item" }, children); -} -NavigationItem.propTypes = { - children: external_prop_types_default().oneOfType([ - external_prop_types_default().arrayOf((external_prop_types_default()).node), - (external_prop_types_default()).node, - (external_prop_types_default()).element, - (external_prop_types_default()).string - ]) -}; -/* harmony default export */ const js_NavigationItem = (NavigationItem); - -;// CONCATENATED MODULE: ./src/components/Navigation/index.js - - - -function Navigation({ children }) { - return /* @__PURE__ */ external_react_default().createElement("ul", { className: "tyk-navigation" }, children); -} -Navigation.propTypes = { - children: external_prop_types_default().oneOfType([ - external_prop_types_default().arrayOf((external_prop_types_default()).node), - (external_prop_types_default()).node, - (external_prop_types_default()).element, - (external_prop_types_default()).string - ]) -}; -Navigation.Item = js_NavigationItem; -/* harmony default export */ const components_Navigation = (Navigation); - -;// CONCATENATED MODULE: ./src/components/Panel/panel-context.js - -const PortalContext = (0,external_react_namespaceObject.createContext)(); - -;// CONCATENATED MODULE: ./src/components/Panel/js/PanelBody.js -var PanelBody_defProp = Object.defineProperty; -var PanelBody_defProps = Object.defineProperties; -var PanelBody_getOwnPropDescs = Object.getOwnPropertyDescriptors; -var PanelBody_getOwnPropSymbols = Object.getOwnPropertySymbols; -var PanelBody_hasOwnProp = Object.prototype.hasOwnProperty; -var PanelBody_propIsEnum = Object.prototype.propertyIsEnumerable; -var PanelBody_defNormalProp = (obj, key, value) => key in obj ? PanelBody_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var PanelBody_spreadValues = (a, b) => { - for (var prop in b || (b = {})) - if (PanelBody_hasOwnProp.call(b, prop)) - PanelBody_defNormalProp(a, prop, b[prop]); - if (PanelBody_getOwnPropSymbols) - for (var prop of PanelBody_getOwnPropSymbols(b)) { - if (PanelBody_propIsEnum.call(b, prop)) - PanelBody_defNormalProp(a, prop, b[prop]); - } - return a; -}; -var PanelBody_spreadProps = (a, b) => PanelBody_defProps(a, PanelBody_getOwnPropDescs(b)); -var PanelBody_objRest = (source, exclude) => { - var target = {}; - for (var prop in source) - if (PanelBody_hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) - target[prop] = source[prop]; - if (source != null && PanelBody_getOwnPropSymbols) - for (var prop of PanelBody_getOwnPropSymbols(source)) { - if (exclude.indexOf(prop) < 0 && PanelBody_propIsEnum.call(source, prop)) - target[prop] = source[prop]; - } - return target; -}; - - - - -function PanelBody(_a) { - var _b = _a, { - children, - noPadding, - className - } = _b, rest = PanelBody_objRest(_b, [ - "children", - "noPadding", - "className" - ]); - const getCssClasses = (0,external_react_namespaceObject.useCallback)( - () => [ - "tyk-panel__body", - className, - noPadding && "no-padding" - ].filter(Boolean).join(" "), - [className, noPadding] - ); - return /* @__PURE__ */ external_react_default().createElement(PortalContext.Consumer, null, (portalContext) => portalContext.collapsable ? /* @__PURE__ */ external_react_default().createElement( - components_Collapsible, - PanelBody_spreadProps(PanelBody_spreadValues({}, rest), { - collapsed: portalContext.collapsed, - className: getCssClasses() - }), - children - ) : /* @__PURE__ */ external_react_default().createElement( - "div", - PanelBody_spreadProps(PanelBody_spreadValues({}, rest), { - className: getCssClasses() - }), - children - )); -} -PanelBody.propTypes = { - children: external_prop_types_default().oneOfType([ - (external_prop_types_default()).element, - (external_prop_types_default()).node, - (external_prop_types_default()).string - ]), - noPadding: (external_prop_types_default()).bool, - className: (external_prop_types_default()).string -}; -/* harmony default export */ const js_PanelBody = (PanelBody); - -;// CONCATENATED MODULE: ./src/components/Panel/js/PanelFooter.js - - -const PanelFooter = (props) => { - const { children } = props; - return /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-panel__footer" }, children); -}; -PanelFooter.propTypes = { - children: external_prop_types_default().oneOfType([ - (external_prop_types_default()).element, - (external_prop_types_default()).node, - (external_prop_types_default()).string - ]) -}; -/* harmony default export */ const js_PanelFooter = (PanelFooter); - -;// CONCATENATED MODULE: ./src/components/Panel/js/PanelHeader.js -var PanelHeader_defProp = Object.defineProperty; -var PanelHeader_defNormalProp = (obj, key, value) => key in obj ? PanelHeader_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var PanelHeader_publicField = (obj, key, value) => { - PanelHeader_defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); - return value; -}; - - - - -class PanelHeader extends external_react_namespaceObject.Component { - getCssClasses(props) { - const { className } = this.props; - let cssClasses = ["tyk-panel__header"]; - if (props.collapsable) { - cssClasses.push("collapsable"); - } - if (className) { - cssClasses = cssClasses.concat(className.split(" ")); - } - return cssClasses.join(" "); - } - render() { - const { - children - } = this.props; - return /* @__PURE__ */ external_react_default().createElement(PortalContext.Consumer, null, (portalContext) => { - const HeaderTag = portalContext.theme === "blank" ? "h3" : "div"; - const iconType = portalContext.collapsed ? "chevron-down" : "chevron-up"; - return /* @__PURE__ */ external_react_default().createElement( - HeaderTag, - { - className: this.getCssClasses(portalContext), - onClick: portalContext.collapsable ? portalContext.onToggle : void 0 - }, - children, - portalContext.collapsable ? /* @__PURE__ */ external_react_default().createElement("div", { className: `collapsable__arrow-${portalContext.collapsibleIconPosition}` }, /* @__PURE__ */ external_react_default().createElement(components_Icon, { type: iconType })) : null - ); - }); - } -} -PanelHeader_publicField(PanelHeader, "propTypes", { - children: external_prop_types_default().oneOfType([ - (external_prop_types_default()).element, - (external_prop_types_default()).node, - (external_prop_types_default()).string - ]).isRequired, - className: (external_prop_types_default()).string -}); - -;// CONCATENATED MODULE: ./src/components/Panel/index.js - - - - - - -const Panel = (props) => { - const { - children, - className, - collapsed, - collapsable, - theme, - onToggleCollapse, - collapsibleIconPosition = "right" - } = props; - const [collapsedState, setCollapsedState] = (0,external_react_namespaceObject.useState)(collapsed || false); - (0,external_react_namespaceObject.useEffect)(() => { - if (collapsed !== collapsedState) { - setCollapsedState(collapsed); - } - }, [collapsed]); - const getCssClasses = () => { - let cssClasses = ["tyk-panel"]; - const panelTheme = `tyk-panel--${theme || "default"}`; - const collapsbleIconPosition = `tyk-panel__icon-collapse--${collapsibleIconPosition}`; - cssClasses.push(panelTheme); - cssClasses.push(collapsbleIconPosition); - if (className) { - cssClasses = cssClasses.concat(className.split(" ")); - } - if (collapsedState) { - cssClasses.push("tyk-panel--collapsed"); - } - return cssClasses.join(" "); - }; - const handleToggle = () => { - setCollapsedState(!collapsedState); - if (onToggleCollapse) { - onToggleCollapse(!collapsedState); - } - }; - return /* @__PURE__ */ external_react_default().createElement("div", { className: getCssClasses() }, /* @__PURE__ */ external_react_default().createElement( - PortalContext.Provider, - { - value: { - collapsable, - collapsed: collapsedState, - onToggle: handleToggle, - theme, - collapsibleIconPosition - } - }, - typeof children === "function" ? children({ - toggleCollapse: handleToggle - }) : children - )); -}; -Panel.propTypes = { - children: external_prop_types_default().oneOfType([ - (external_prop_types_default()).func, - (external_prop_types_default()).element, - (external_prop_types_default()).node, - (external_prop_types_default()).string - ]), - className: (external_prop_types_default()).string, - collapsable: (external_prop_types_default()).bool, - collapsibleIconPosition: (external_prop_types_default()).string, - collapsed: (external_prop_types_default()).bool, - theme: (external_prop_types_default()).string, - onToggleCollapse: (external_prop_types_default()).func -}; -Panel.Body = js_PanelBody; -Panel.Footer = js_PanelFooter; -Panel.Header = PanelHeader; -/* harmony default export */ const components_Panel = (Panel); - -;// CONCATENATED MODULE: ./src/components/Pill/index.js - - -const Pill = (props) => { - const { - children, - className, - theme - } = props; - const getCssClasses = () => { - let cssClasses = ["tyk-pill", ...theme.split(" ").map((t) => `tyk-pill--${t}`)]; - if (className) { - cssClasses = cssClasses.concat(className); - } - return cssClasses.join(" "); - }; - return /* @__PURE__ */ external_react_default().createElement("div", { className: getCssClasses() }, children); -}; -Pill.propTypes = { - children: external_prop_types_default().oneOfType([ - external_prop_types_default().arrayOf((external_prop_types_default()).node), - (external_prop_types_default()).node, - (external_prop_types_default()).element, - (external_prop_types_default()).string - ]), - /** Css classes that can be passed to the Pill element */ - className: (external_prop_types_default()).string, - /** Theme that can be applied to a Pill */ - theme: (external_prop_types_default()).string -}; -Pill.defaultProps = { - theme: "default" -}; -/* harmony default export */ const components_Pill = (Pill); - -;// CONCATENATED MODULE: ./src/components/RevealPanel/js/RevealPanelService.js -var __accessCheck = (obj, member, msg) => { - if (!member.has(obj)) - throw TypeError("Cannot " + msg); -}; -var __privateGet = (obj, member, getter) => { - __accessCheck(obj, member, "read from private field"); - return getter ? getter.call(obj) : member.get(obj); -}; -var __privateAdd = (obj, member, value) => { - if (member.has(obj)) - throw TypeError("Cannot add the same private member more than once"); - member instanceof WeakSet ? member.add(obj) : member.set(obj, value); -}; -var __privateSet = (obj, member, value, setter) => { - __accessCheck(obj, member, "write to private field"); - setter ? setter.call(obj, value) : member.set(obj, value); - return value; -}; -var _state, _panel, _gutter, _wrapper, _onHeightChangeCallbacks, _onDragStartCallbacks, _onDragEndCallbacks, _dragStarted; - -class RevealPanelService { - constructor() { - __privateAdd(this, _state, null); - // Private state for mouse interactions. - __privateAdd(this, _panel, null); - // The panel element to be resized. - __privateAdd(this, _gutter, null); - // The gutter element used for resizing. - __privateAdd(this, _wrapper, null); - // The wrapper element that contains the panel and gutter. - __privateAdd(this, _onHeightChangeCallbacks, []); - // Callback function to be executed when the panel is resized. - __privateAdd(this, _onDragStartCallbacks, []); - // Callback function to be executed when the panel is resized. - __privateAdd(this, _onDragEndCallbacks, []); - // Callback function to be executed when the panel is resized. - __privateAdd(this, _dragStarted, false); - } - /** - * Sets a callback function to be executed when the panel is resized. - * @param {function} callback - The callback function to be called on panel resize. - */ - on(eventName, listener) { - let list = null; - if (eventName === "onHeightChange") { - list = __privateGet(this, _onHeightChangeCallbacks); - } else if (eventName === "onDragStart") { - list = __privateGet(this, _onDragStartCallbacks); - } else if (eventName === "onDragEnd") { - list = __privateGet(this, _onDragEndCallbacks); - } - if (list) { - this.addListener(list, listener); - } - } - off(eventName, listener) { - let list = null; - if (eventName === "onHeightChange") { - list = __privateGet(this, _onHeightChangeCallbacks); - } else if (eventName === "onDragStart") { - list = __privateGet(this, _onDragStartCallbacks); - } else if (eventName === "onDragEnd") { - list = __privateGet(this, _onDragEndCallbacks); - } - if (list) { - this.removeListener(list, listener); - } - } - /** - * Sets the panel, gutter, and wrapper elements to be controlled by this class. - * @param {HTMLElement} wrapper - The wrapper element containing the panel and gutter. - * @param {HTMLElement} panel - The panel element to be resized. - * @param {HTMLElement} gutter - The gutter element used for resizing. - */ - setRefs(wrapper, panel, gutter) { - if (__privateGet(this, _panel) || __privateGet(this, _gutter) || __privateGet(this, _wrapper)) { - this.unbindEvents(); - } - __privateSet(this, _wrapper, wrapper); - __privateSet(this, _panel, panel); - __privateSet(this, _gutter, gutter); - __privateSet(this, _state, null); - this.bindEvents(); - } - /** - * Attaches event listeners for panel resizing. - */ - bindEvents() { - this.ensureRefs("bindEvents"); - __privateGet(this, _gutter).addEventListener("mousedown", this.onMouseDown.bind(this)); - document.addEventListener("mousemove", this.onMouseMove.bind(this)); - document.addEventListener("mouseup", this.onMouseUp.bind(this)); - } - /** - * Gets the current height of the panel. - * @returns {number} - The height of the panel in pixels. - */ - getHeight() { - this.ensureRefs("getHeight"); - const size = __privateGet(this, _panel).getBoundingClientRect(); - return size.height; - } - /** - * Handles the mouse down event, initiating the resizing process. - * @param {MouseEvent} e - The mouse event object. - */ - onMouseDown(e) { - this.ensureRefs("onMouseDown"); - __privateSet(this, _state, { - mouseDown: true, - initialRect: __privateGet(this, _panel).getBoundingClientRect(), - initialEvent: e - }); - } - /** - * Handles the mouse move event, adjusting the panel's height during resizing. - * @param {MouseEvent} e - The mouse event object. - */ - onMouseMove(e) { - this.ensureRefs("onMouseMove"); - if (!__privateGet(this, _state)) { - return; - } - const isButtonDown = this.isPrimaryMouseButtonDown(e); - if (!isButtonDown) { - this.onMouseUp(); - return; - } - if (!__privateGet(this, _dragStarted)) { - __privateSet(this, _dragStarted, true); - this.onDragStart.bind(this)(); - } - const newY = __privateGet(this, _state).initialEvent.y - e.y; - const finalHeight = Math.ceil(__privateGet(this, _state).initialRect.height + newY); - this.setHeight(`${finalHeight}px`, "mousemove"); - } - // eslint-disable-next-line class-methods-use-this - notifyListeners(list, value) { - if (list && Array.isArray(list) && list.length) { - list.forEach((fn) => { - if (typeof fn === "function") { - fn(value); - } - }); - } - } - // eslint-disable-next-line class-methods-use-this - addListener(list, listener) { - if (list && Array.isArray(list) && typeof listener === "function") { - list.push(listener); - } - } - // eslint-disable-next-line class-methods-use-this - removeListener(list, listener) { - if (list && Array.isArray(list) && typeof listener === "function" && list.length) { - const index = list.indexOf(listener); - if (index > -1) { - list.splice(index, 1); - } - } - } - onDragEnd() { - if (__privateGet(this, _dragStarted)) { - this.notifyListeners(__privateGet(this, _onDragEndCallbacks), this.getHeight()); - } - } - onDragStart() { - this.notifyListeners(__privateGet(this, _onDragStartCallbacks), this.getHeight()); - } - // eslint-disable-next-line class-methods-use-this - isPrimaryMouseButtonDown(e) { - const flags = e.buttons !== void 0 ? e.buttons : e.which; - const isDown = flags === 1; - return isDown; - } - /** - * Resets the state after the mouse up event, ending the resizing process. - */ - onMouseUp() { - __privateSet(this, _state, null); - this.onDragEnd.bind(this)(); - __privateSet(this, _dragStarted, false); - } - /** - * Sets the height of the panel. - * @param {string} height - The new height value as a CSS string (e.g., "100px"). - */ - setHeight(height) { - let heightVal = height; - this.ensureRefs("setHeight"); - if (typeof heightVal === "number") { - heightVal += "px"; - } - __privateGet(this, _panel).style.height = heightVal; - this.notifyListeners(__privateGet(this, _onHeightChangeCallbacks), this.getHeight()); - } - /** - * Ensures that the required elements (wrapper, panel, and gutter) are set. - * Throws an error if they are missing. - */ - ensureRefs(reason) { - if (!__privateGet(this, _panel) || !__privateGet(this, _gutter) || !__privateGet(this, _wrapper)) { - throw new Error( - `${reason}: Wrapper, panel, and gutter elements are required. Use setRefs method first.` - ); - } - } - /** - * Checks if the panel is hidden. - * @returns {boolean} - True if the panel is hidden; false otherwise. - */ - isHidden() { - this.ensureRefs("isHidden"); - return __privateGet(this, _wrapper).style.visibility === "hidden"; - } - /** - * Hides the panel by setting its visibility to "hidden". - */ - hide() { - this.ensureRefs("hide"); - __privateGet(this, _wrapper).style.visibility = "hidden"; - } - /** - * Shows the panel by setting its visibility to "visible". - */ - show() { - this.ensureRefs("show"); - __privateGet(this, _wrapper).style.visibility = "visible"; - } - /** - * Unbinds the event listeners added for resizing. - */ - unbindEvents() { - __privateSet(this, _onHeightChangeCallbacks, []); - __privateSet(this, _onDragStartCallbacks, []); - __privateSet(this, _onDragEndCallbacks, []); - __privateGet(this, _gutter).removeEventListener("mousedown", this.onMouseDown.bind(this)); - document.removeEventListener("mousemove", this.onMouseMove.bind(this)); - document.removeEventListener("mouseup", this.onMouseUp.bind(this)); - } - deinit() { - this.unbindEvents(); - } -} -_state = new WeakMap(); -_panel = new WeakMap(); -_gutter = new WeakMap(); -_wrapper = new WeakMap(); -_onHeightChangeCallbacks = new WeakMap(); -_onDragStartCallbacks = new WeakMap(); -_onDragEndCallbacks = new WeakMap(); -_dragStarted = new WeakMap(); -const useRevealPanelService = () => { - const revealPanelServiceRef = (0,external_react_namespaceObject.useRef)(new RevealPanelService()); - return revealPanelServiceRef.current; -}; - -;// CONCATENATED MODULE: ./src/components/RevealPanel/index.js - - - - -function RevealPanelHeaderLeft({ children }) { - return /* @__PURE__ */ external_react_default().createElement((external_react_default()).Fragment, null, children); -} -RevealPanelHeaderLeft.propTypes = { - children: external_prop_types_default().instanceOf({}) -}; -function RevealPanelHeaderRight({ children }) { - return /* @__PURE__ */ external_react_default().createElement((external_react_default()).Fragment, null, children); -} -RevealPanelHeaderRight.propTypes = { - children: external_prop_types_default().instanceOf({}) -}; -const mergeClasses = (...classNames) => classNames.map((it) => (it || "").trim()).filter(Boolean).join(" "); -const RevealPanel = (0,external_react_namespaceObject.forwardRef)(({ - children, - height, - onHeightChange = null, - onDragStart = null, - onDragEnd = null, - style = null, - parentSelector = null, - contentStyle, - contentClassName, - gutterClassName, - wrapperClassName - // eslint-disable-next-line consistent-return -}, ref) => { - const panelRef = (0,external_react_namespaceObject.useRef)(null); - const gutterRef = (0,external_react_namespaceObject.useRef)(null); - const wrapperRef = (0,external_react_namespaceObject.useRef)(null); - const panelService = useRevealPanelService(); - (0,external_react_namespaceObject.useEffect)(() => { - if (!panelRef.current || !gutterRef.current || !wrapperRef.current) { - return; - } - if (!panelService) { - return; - } - panelService.setRefs(wrapperRef.current, panelRef.current, gutterRef.current); - panelService.on("onHeightChange", onHeightChange); - panelService.on("onDragStart", onDragStart); - panelService.on("onDragEnd", onDragEnd); - panelService.setHeight(height, "initialize"); - return () => { - panelService.unbindEvents(); - }; - }, []); - (0,external_react_namespaceObject.useImperativeHandle)( - ref, - () => { - const bind = (func) => func.bind(panelService); - return { - getHeight: bind(panelService.getHeight), - setHeight: bind(panelService.setHeight), - hide: bind(panelService.hide), - show: bind(panelService.show), - isHidden: bind(panelService.isHidden), - deinit: bind(panelService.deinit), - on: bind(panelService.on), - off: bind(panelService.off) - }; - }, - [] - ); - let headerLeft = null; - let headerRight = null; - const contents = []; - external_react_default().Children.forEach(children, (child) => { - if (child && external_react_default().isValidElement(child)) { - if (child.type === RevealPanelHeaderLeft) { - headerLeft = child; - } else if (child.type === RevealPanelHeaderRight) { - headerRight = child; - } else { - contents.push(child); - } - } - }); - const element = /* @__PURE__ */ external_react_default().createElement("div", { className: mergeClasses("tyk-ui-reveal-wrapper", wrapperClassName || "cem"), ref: wrapperRef, style }, /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-ui-reveal-wrapper__hole" }), /* @__PURE__ */ external_react_default().createElement("div", { ref: gutterRef, className: mergeClasses("tyk-ui-reveal-wrapper__gutter", gutterClassName) }, /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-ui-reveal-wrapper__gutter__headerleft" }, headerLeft), /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-ui-reveal-wrapper__gutter__logo" }, " "), /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-ui-reveal-wrapper__gutter__headerright" }, headerRight)), /* @__PURE__ */ external_react_default().createElement("div", { ref: panelRef, className: mergeClasses("tyk-ui-reveal-wrapper__panel", contentClassName), style: contentStyle }, contents)); - if (parentSelector) { - return (0,external_react_dom_.createPortal)(element, document.querySelector(parentSelector)); - } -}); -RevealPanel.propTypes = { - children: external_prop_types_default().instanceOf({}), - height: (external_prop_types_default()).string, - onHeightChange: (external_prop_types_default()).func, - onDragStart: (external_prop_types_default()).func, - onDragEnd: (external_prop_types_default()).func, - parentSelector: (external_prop_types_default()).string, - style: external_prop_types_default().instanceOf({}), - contentStyle: external_prop_types_default().instanceOf({}), - contentClassName: (external_prop_types_default()).string, - gutterClassName: (external_prop_types_default()).string, - wrapperClassName: (external_prop_types_default()).string -}; -RevealPanel.HeaderLeft = RevealPanelHeaderLeft; -RevealPanel.HeaderRight = RevealPanelHeaderRight; -/* harmony default export */ const components_RevealPanel = (RevealPanel); - -;// CONCATENATED MODULE: ./src/components/Tabs/tabs-context.js - -const TabsContext = (0,external_react_namespaceObject.createContext)(); - -;// CONCATENATED MODULE: ./src/components/Tabs/js/TabContext.js - -/* harmony default export */ const TabContext = ((0,external_react_namespaceObject.createContext)()); - -;// CONCATENATED MODULE: ./src/components/Tabs/js/TabContent.js -var TabContent_defProp = Object.defineProperty; -var TabContent_getOwnPropSymbols = Object.getOwnPropertySymbols; -var TabContent_hasOwnProp = Object.prototype.hasOwnProperty; -var TabContent_propIsEnum = Object.prototype.propertyIsEnumerable; -var TabContent_defNormalProp = (obj, key, value) => key in obj ? TabContent_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var TabContent_spreadValues = (a, b) => { - for (var prop in b || (b = {})) - if (TabContent_hasOwnProp.call(b, prop)) - TabContent_defNormalProp(a, prop, b[prop]); - if (TabContent_getOwnPropSymbols) - for (var prop of TabContent_getOwnPropSymbols(b)) { - if (TabContent_propIsEnum.call(b, prop)) - TabContent_defNormalProp(a, prop, b[prop]); - } - return a; -}; - - - - -const TabContent = (props) => { - const { - addTab, - hideTab, - updateTab, - showTab, - children, - selectedPath, - tabData, - tabsId, - tabExists, - path, - rendered, - hideTabContent, - tabs - } = props; - (0,external_react_namespaceObject.useEffect)(() => { - const tempTabData = TabContent_spreadValues({}, tabData); - if (!tabExists(path)) { - addTab(tempTabData, path); - } - }, [tabData, path]); - const prevTabData = hooks_usePrevious(tabData); - (0,external_react_namespaceObject.useEffect)(() => { - if (tabExists(path) && (tabData == null ? void 0 : tabData.title) && ((prevTabData == null ? void 0 : prevTabData.title) !== (tabData == null ? void 0 : tabData.title) || prevTabData.selected !== tabData.selected)) { - const tempTabData = TabContent_spreadValues({}, tabData); - updateTab(tempTabData, path); - } - }, [tabData, path, prevTabData, tabs]); - (0,external_react_namespaceObject.useEffect)(() => { - showTab(path); - return () => hideTab(path); - }, []); - const shouldRender = (0,external_react_namespaceObject.useMemo)(() => { - if (!Object.keys(tabs).length) { - return false; - } - if (hideTabContent || tabs[tabData.id].show === false) { - return false; - } - if (!rendered) { - return tabExists(path); - } - return selectedPath && selectedPath.indexOf(tabData.id) > -1; - }, [hideTabContent, rendered, selectedPath, tabData, tabs]); - return shouldRender ? /* @__PURE__ */ external_react_default().createElement("div", { key: tabData.id, className: "tyk-tab__content", style: { display: selectedPath && selectedPath.indexOf(tabData.id) > -1 ? "block" : "none" } }, /* @__PURE__ */ external_react_default().createElement( - TabContext.Provider, - { - value: { - path, - tabsId - } - }, - children - )) : null; -}; -TabContent.propTypes = { - addTab: (external_prop_types_default()).func, - updateTab: (external_prop_types_default()).func, - hideTab: (external_prop_types_default()).func, - showTab: (external_prop_types_default()).func, - children: external_prop_types_default().oneOfType([ - external_prop_types_default().arrayOf((external_prop_types_default()).node), - (external_prop_types_default()).node, - (external_prop_types_default()).element, - (external_prop_types_default()).string - ]), - path: external_prop_types_default().instanceOf(Array), - hideTabContent: (external_prop_types_default()).bool, - rendered: (external_prop_types_default()).bool, - selectedPath: external_prop_types_default().instanceOf(Array), - tabExists: (external_prop_types_default()).func, - tabsId: (external_prop_types_default()).string, - tabData: external_prop_types_default().instanceOf(Object), - tabs: external_prop_types_default().instanceOf(Object) -}; -/* harmony default export */ const js_TabContent = (TabContent); - -;// CONCATENATED MODULE: ./src/components/Tabs/js/Tab.js - - - - - -const Tab = (props) => { - const { id } = props; - const tabsContext = (0,external_react_namespaceObject.useContext)(TabsContext); - const tabContext = (0,external_react_namespaceObject.useContext)(TabContext); - const { - tabExists, - selectedPath, - addTab, - updateTab, - hideTab, - showTab, - rendered, - hideTabContent, - tabs - } = tabsContext; - const { - children - } = props; - const [path, setPath] = (0,external_react_namespaceObject.useState)(""); - (0,external_react_namespaceObject.useEffect)(() => { - let tempPath; - if (tabContext && path) { - if (tabContext.tabsId === tabsContext.id) { - tempPath = tabContext.path.concat([id]); - } else { - tempPath = [id]; - } - } else { - tempPath = [id]; - } - setPath(tempPath); - }, [tabContext]); - if (!path) { - return null; - } - return /* @__PURE__ */ external_react_default().createElement(external_react_namespaceObject.Fragment, null, /* @__PURE__ */ external_react_default().createElement( - js_TabContent, - { - addTab, - updateTab, - hideTab, - showTab, - tabExists, - tabData: props, - path, - tabsId: tabsContext.id, - selectedPath, - rendered, - hideTabContent, - tabs - }, - children - )); -}; -Tab.propTypes = { - children: external_prop_types_default().oneOfType([ - external_prop_types_default().arrayOf((external_prop_types_default()).node), - (external_prop_types_default()).node, - (external_prop_types_default()).element, - (external_prop_types_default()).string - ]), - id: (external_prop_types_default()).string -}; -Tab.defaultProps = {}; -/* harmony default export */ const js_Tab = (Tab); - -;// CONCATENATED MODULE: ./src/components/Tabs/index.js -var Tabs_defProp = Object.defineProperty; -var Tabs_getOwnPropSymbols = Object.getOwnPropertySymbols; -var Tabs_hasOwnProp = Object.prototype.hasOwnProperty; -var Tabs_propIsEnum = Object.prototype.propertyIsEnumerable; -var Tabs_defNormalProp = (obj, key, value) => key in obj ? Tabs_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var Tabs_spreadValues = (a, b) => { - for (var prop in b || (b = {})) - if (Tabs_hasOwnProp.call(b, prop)) - Tabs_defNormalProp(a, prop, b[prop]); - if (Tabs_getOwnPropSymbols) - for (var prop of Tabs_getOwnPropSymbols(b)) { - if (Tabs_propIsEnum.call(b, prop)) - Tabs_defNormalProp(a, prop, b[prop]); - } - return a; -}; - - - - - - -const Tabs = (props) => { - const { - children, - className, - id, - onTabChange, - type, - hideTabContent - } = props; - const [tabs, setTabs] = (0,external_react_namespaceObject.useState)({}); - const [selectedPath, setSelectedPath] = (0,external_react_namespaceObject.useState)([]); - const [rendered, setRendered] = (0,external_react_namespaceObject.useState)(false); - const [initialPath, setInitialPath] = (0,external_react_namespaceObject.useState)(null); - (0,external_react_namespaceObject.useEffect)(() => { - setSelectedPath(initialPath); - }, [initialPath]); - const updateTabsList = (tabsState, path, tabData) => { - let tempTabsState = Object.assign({}, tabsState); - const tempTabData = Object.assign({}, tabData); - const tempPath = path.slice(0); - while (tempPath.length > 1) { - tempTabsState = tempTabsState[tempPath.shift()]; - if (!tempTabsState) { - tempTabsState = {}; - } - } - tempTabData.tempPath = tempPath; - tempTabsState[tempPath.shift()] = tempTabData; - return tempTabsState; - }; - const toggleTab = (tabsState, path) => { - let tempTabsState = Object.assign({}, tabsState); - const tempPath = path.slice(0); - while (tempPath.length > 1) { - tempTabsState = tempTabsState[tempPath.shift()]; - } - const key = tempPath.shift(); - if (tempTabsState[key].collapsed === void 0) { - tempTabsState[key].collapsed = true; - } else { - tempTabsState[key].collapsed = !tempTabsState[key].collapsed; - } - return tempTabsState; - }; - const getCssClasses = () => { - let cssClasses = ["tyk-tabs"]; - cssClasses.push(`tyk-tabs--${type || "default"}`); - if (className) { - cssClasses = cssClasses.concat(className.split(" ")); - } - return cssClasses.join(" "); - }; - const setCurrentSelectedPath = (path, tabData) => { - const tempPath = path.slice(0); - let tempRendered = true; - if (tabData.collapsible) { - tempPath.push(Object.keys(tabData.tabs)[0]); - tempRendered = false; - } - setTabs((prevTabs) => { - let tempTabs = Object.assign({}, prevTabs); - tempTabs = toggleTab(tempTabs, path); - return tempTabs; - }); - setSelectedPath(tempPath); - setRendered(tempRendered); - if (onTabChange) { - onTabChange(tabData); - } - }; - const getTabCssClass = (tabId) => { - const cssClasses = []; - if (selectedPath && selectedPath.indexOf(tabId) > -1) { - cssClasses.push("active"); - } - return cssClasses.join(" "); - }; - const genTabs = (currentTabs, path) => { - if (!currentTabs) { - return null; - } - return /* @__PURE__ */ external_react_default().createElement("ul", null, Object.keys(currentTabs).map((tabId, index) => { - const tempPath = path ? path.concat([currentTabs[tabId].id]) : [currentTabs[tabId].id]; - const iconType = currentTabs[tabId].collapsed ? "chevron-up" : "chevron-down"; - if (currentTabs[tabId].show === false) { - return null; - } - return /* @__PURE__ */ external_react_default().createElement("li", { className: getTabCssClass(currentTabs[tabId].id), key: currentTabs[tabId].id }, /* @__PURE__ */ external_react_default().createElement( - "button", - { - type: "button", - onClick: setCurrentSelectedPath.bind(null, tempPath, currentTabs[tabId]), - onKeyDown: setCurrentSelectedPath.bind(null, tempPath, currentTabs[tabId]), - tabIndex: index - }, - currentTabs[tabId].title, - currentTabs[tabId].collapsible ? /* @__PURE__ */ external_react_default().createElement(components_Icon, { className: "collapsable-arrow", type: iconType }) : null - ), currentTabs[tabId].collapsible ? /* @__PURE__ */ external_react_default().createElement( - components_Collapsible, - { - collapsed: currentTabs[tabId].collapsed - }, - genTabs(currentTabs[tabId].tabs, tempPath) - ) : genTabs(currentTabs[tabId].tabs, tempPath)); - })); - }; - const addTab = (tabData, path) => { - setTabs((prevTabs) => updateTabsList(Tabs_spreadValues({}, prevTabs), path, tabData)); - if (tabData.selected) { - setInitialPath(path); - } - }; - const updateTab = (tabData, path) => { - setTabs((prevTabs) => { - const tempTabs = Tabs_spreadValues({}, prevTabs); - tempTabs[tabData.id] = tabData; - return tempTabs; - }); - if (tabData.selected) { - setCurrentSelectedPath(path, tabData); - } - }; - const hideTab = (path) => { - setTabs((prevTabs) => { - const tempTabs = Tabs_spreadValues({}, prevTabs); - tempTabs[path].show = false; - return tempTabs; - }); - }; - const showTab = (path) => { - setTabs((prevTabs) => { - const tempTabs = Tabs_spreadValues({}, prevTabs); - tempTabs[path].show = true; - return tempTabs; - }); - }; - const tabExists = (path) => { - let tempTabs = Tabs_spreadValues({}, tabs); - const tempPath = path.slice(0); - while (tempPath.length > 1) { - tempTabs = tempTabs[tempPath.shift()]; - } - const key = tempPath.shift(); - return !!(tempTabs && tempTabs[key]); - }; - return /* @__PURE__ */ external_react_default().createElement("div", { className: getCssClasses() }, genTabs(tabs), /* @__PURE__ */ external_react_default().createElement( - TabsContext.Provider, - { - value: { - id, - addTab, - hideTab, - updateTab, - showTab, - tabExists, - selectedPath, - rendered, - hideTabContent, - tabs - } - }, - typeof children === "function" ? children({ - hideTab, - showTab - }) : children - )); -}; -Tabs.propTypes = { - className: (external_prop_types_default()).string, - children: external_prop_types_default().oneOfType([ - external_prop_types_default().arrayOf((external_prop_types_default()).node), - (external_prop_types_default()).node, - (external_prop_types_default()).element, - (external_prop_types_default()).string - ]), - hideTabContent: (external_prop_types_default()).bool, - id: (external_prop_types_default()).string, - onTabChange: (external_prop_types_default()).func, - type: (external_prop_types_default()).string -}; -Tabs.Tab = js_Tab; -/* harmony default export */ const components_Tabs = (Tabs); - -;// CONCATENATED MODULE: ./src/components/Tooltip/index.js -var Tooltip_defProp = Object.defineProperty; -var Tooltip_getOwnPropSymbols = Object.getOwnPropertySymbols; -var Tooltip_hasOwnProp = Object.prototype.hasOwnProperty; -var Tooltip_propIsEnum = Object.prototype.propertyIsEnumerable; -var Tooltip_defNormalProp = (obj, key, value) => key in obj ? Tooltip_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var Tooltip_spreadValues = (a, b) => { - for (var prop in b || (b = {})) - if (Tooltip_hasOwnProp.call(b, prop)) - Tooltip_defNormalProp(a, prop, b[prop]); - if (Tooltip_getOwnPropSymbols) - for (var prop of Tooltip_getOwnPropSymbols(b)) { - if (Tooltip_propIsEnum.call(b, prop)) - Tooltip_defNormalProp(a, prop, b[prop]); - } - return a; -}; -var Tooltip_objRest = (source, exclude) => { - var target = {}; - for (var prop in source) - if (Tooltip_hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) - target[prop] = source[prop]; - if (source != null && Tooltip_getOwnPropSymbols) - for (var prop of Tooltip_getOwnPropSymbols(source)) { - if (exclude.indexOf(prop) < 0 && Tooltip_propIsEnum.call(source, prop)) - target[prop] = source[prop]; - } - return target; -}; - - - - -function Tooltip(_a) { - var _b = _a, { - render, - className, - children, - position = "auto", - style, - icon = false, - closable, - isOpened = false, - additionalClickParents = [] - } = _b, props = Tooltip_objRest(_b, [ - "render", - "className", - "children", - "position", - "style", - "icon", - "closable", - "isOpened", - "additionalClickParents" - ]); - const [isActive, setIsActive] = (0,external_react_namespaceObject.useState)(false); - const wrapperRef = (0,external_react_namespaceObject.useRef)(null); - const tooltipRef = (0,external_react_namespaceObject.useRef)(null); - const activeEvents = closable ? { - onClick: () => setIsActive(true) - } : { - onMouseEnter: () => setIsActive(true), - onMouseLeave: () => setIsActive(false), - onFocus: () => setIsActive(true), - onBlur: () => setIsActive(false) - }; - const handleDocumentClick = (0,external_react_namespaceObject.useCallback)((e) => { - if ([...additionalClickParents, tooltipRef.current].some((p) => { - var _a2; - return (_a2 = p == null ? void 0 : p.contains) == null ? void 0 : _a2.call(p, e.target); - })) { - return; - } - setIsActive(false); - }, [additionalClickParents]); - (0,external_react_namespaceObject.useEffect)(() => { - document.addEventListener("click", handleDocumentClick, true); - return () => document.removeEventListener("click", handleDocumentClick, true); - }, [handleDocumentClick]); - (0,external_react_namespaceObject.useEffect)(() => { - setIsActive(isOpened); - }, [isOpened]); - const classes = ["tyk-tooltip", className].filter(Boolean).join(" "); - return /* @__PURE__ */ external_react_default().createElement( - "div", - Tooltip_spreadValues(Tooltip_spreadValues({ - className: "tyk-tooltip__wrapper", - style: Tooltip_spreadValues({ display: "inline-block" }, style), - ref: wrapperRef - }, activeEvents), props), - children, - isActive && /* @__PURE__ */ external_react_default().createElement( - components_FloatingContainer, - { - element: wrapperRef, - forceDisplay: position, - preferredPosition: "top", - offset: 20 - }, - /* @__PURE__ */ external_react_default().createElement("div", { className: classes, ref: tooltipRef }, icon && (icon === true ? /* @__PURE__ */ external_react_default().createElement(components_Icon, { family: "tykon", type: "help" }) : icon), /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-tooltip__content" }, render), closable && /* @__PURE__ */ external_react_default().createElement( - components_Icon, - { - family: "tykon", - type: "x", - onClick: (e) => { - e.stopPropagation(); - setIsActive(false); - } - } - )) - ) - ); -} -Tooltip.propTypes = { - children: (external_prop_types_default()).node.isRequired, - /** custom styles to apply on hovered element */ - style: external_prop_types_default().instanceOf(Object), - /** describes where the tooltip should be displayed in relation - * whith the hovered element: top, bottom, left, right - */ - position: (external_prop_types_default()).string, - /** content of the tooltip, can be a string or a React node element */ - render: external_prop_types_default().oneOfType([ - (external_prop_types_default()).node, - (external_prop_types_default()).string - ]), - /** additional tooltip classes */ - className: (external_prop_types_default()).string, - /** if `true` displays the "question mark" icon; - * optionally you can pass a different icon - */ - icon: external_prop_types_default().oneOfType([ - (external_prop_types_default()).bool, - (external_prop_types_default()).node - ]), - /** if `true` the tooltip is activated on click and an "x" is displayed to close it; - * if `false` the tooltip is activated on hover and it closes when no longer hovering - */ - closable: (external_prop_types_default()).bool, - /** handles the `isActive` state of the tooltip from outside */ - isOpened: (external_prop_types_default()).bool, - /** Additional dom elements to check if the document click was inside of them. - * Useful when you want to open the tooltip after an interaction - * with an element not inside the tooltip root. - */ - additionalClickParents: external_prop_types_default().instanceOf(Array) -}; -/* harmony default export */ const components_Tooltip = (Tooltip); - -;// CONCATENATED MODULE: ./src/components/TextEllipsis/index.js - - - -function TextEllipsis({ text, limit, position }) { - return text.length > limit ? /* @__PURE__ */ external_react_default().createElement(components_Tooltip, { render: text, position }, text.substring(0, limit), "...") : text; -} -TextEllipsis.propTypes = { - /** Text to be shrinked by TextEllipsis */ - text: (external_prop_types_default()).string, - /** Number of characters that TextEllipsis would leave visible */ - limit: (external_prop_types_default()).number, - /** tooltip position */ - position: (external_prop_types_default()).string -}; -/* harmony default export */ const components_TextEllipsis = (TextEllipsis); - -;// CONCATENATED MODULE: ./src/form/components/Pagination/index.js -var Pagination_defProp = Object.defineProperty; -var Pagination_defNormalProp = (obj, key, value) => key in obj ? Pagination_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var Pagination_publicField = (obj, key, value) => { - Pagination_defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); - return value; -}; - - -const shouldShowPage = (currentNr, pageNr, totalNrOfPages) => { - const basePageNr = 5; - const minimumNrOfPages = 10; - if (totalNrOfPages < minimumNrOfPages) { - return true; - } - if (pageNr < basePageNr && currentNr < basePageNr) { - return true; - } - if (pageNr > totalNrOfPages - basePageNr && currentNr > totalNrOfPages - basePageNr) { - return true; - } - if (currentNr >= pageNr - 2 && currentNr <= pageNr + 2) { - return true; - } - if ([0, 1, totalNrOfPages - 1, totalNrOfPages].indexOf(currentNr) > -1) { - return true; - } - return false; -}; -const getPagesArr = (nrOfPages, selectedPage) => { - let i; - const pagesArr = []; - for (i = 0; i <= nrOfPages; i += 1) { - if (shouldShowPage(i, selectedPage, nrOfPages)) { - if (i > pagesArr[pagesArr.length - 1]) { - pagesArr.push("..."); - } - pagesArr.push(i + 1); - } - } - return pagesArr; -}; -class Pagination extends external_react_namespaceObject.Component { - constructor(props) { - super(props); - const { - value, - totalNrOfPages - } = this.props; - this.state = { - prevProps: this.props, - selectedPage: value || 0, - pagesArray: getPagesArr(totalNrOfPages, value) - }; - this.pageKey = 0; - } - static getDerivedStateFromProps(nextProps, prevState) { - if (nextProps.value !== prevState.prevProps.value || nextProps.totalNrOfPages !== prevState.prevProps.totalNrOfPages) { - return { - selectedPage: nextProps.value, - pagesArray: getPagesArr(nextProps.totalNrOfPages, nextProps.value) - }; - } - return null; - } - getPageCssClass(pageNr) { - const { selectedPage } = this.state; - const cssClasses = []; - if (selectedPage === pageNr) { - cssClasses.push("active"); - } - return cssClasses.join(" "); - } - getPageKey() { - this.pageKey += 1; - return this.pageKey; - } - goToPage(pageNr) { - const { onChange, totalNrOfPages } = this.props; - this.setState({ - selectedPage: pageNr, - pagesArray: getPagesArr(totalNrOfPages, pageNr) - }, () => { - if (onChange) { - onChange(pageNr); - } - }); - } - render() { - const { totalNrOfPages } = this.props; - const { pagesArray, selectedPage } = this.state; - return /* @__PURE__ */ external_react_default().createElement(external_react_namespaceObject.Fragment, null, totalNrOfPages ? /* @__PURE__ */ external_react_default().createElement("ul", { className: "tyk-pagination" }, selectedPage > 0 && totalNrOfPages > 5 ? /* @__PURE__ */ external_react_default().createElement("li", null, /* @__PURE__ */ external_react_default().createElement("button", { onClick: this.goToPage.bind(this, selectedPage - 1), type: "button" }, "Previous")) : null, pagesArray.map((pageNr) => /* @__PURE__ */ external_react_default().createElement("li", { key: this.getPageKey(), className: this.getPageCssClass(pageNr - 1) }, pageNr !== "..." ? /* @__PURE__ */ external_react_default().createElement("button", { onClick: this.goToPage.bind(this, pageNr - 1), type: "button" }, pageNr) : /* @__PURE__ */ external_react_default().createElement("span", null, pageNr))), selectedPage < totalNrOfPages && totalNrOfPages > 5 ? /* @__PURE__ */ external_react_default().createElement("li", null, /* @__PURE__ */ external_react_default().createElement("button", { onClick: this.goToPage.bind(this, selectedPage + 1), type: "button" }, "Next")) : null) : null); - } -} -Pagination_publicField(Pagination, "propTypes", { - value: (external_prop_types_default()).number, - totalNrOfPages: (external_prop_types_default()).number, - onChange: (external_prop_types_default()).func -}); - -;// CONCATENATED MODULE: ./src/components/Table/tableContext.js - -const tableContext = (0,external_react_namespaceObject.createContext)(); - -;// CONCATENATED MODULE: ./src/components/Table/js/header-cell.js - - - - -const HeaderCell = ({ column }) => { - const { sortable } = column; - const [sortOrder, setSortOrder] = (0,external_react_namespaceObject.useState)((sortable == null ? void 0 : sortable.default) || "ASC"); - const { state, sendMessage } = (0,external_react_namespaceObject.useContext)(tableContext); - return /* @__PURE__ */ external_react_default().createElement( - "th", - { - key: column.id, - onClick: sortable ? () => { - sendMessage("sort", { column, sortOrder }); - setSortOrder(sortOrder === "ASC" ? "DESC" : "ASC"); - } : null, - className: state.maxHeight ? "fixed-header" : "" - }, - column.name, - column.sortable && /* @__PURE__ */ external_react_default().createElement("span", { className: "header-sort" }, /* @__PURE__ */ external_react_default().createElement(components_Icon, { family: "tykon", type: "arrowsort" })) - ); -}; -HeaderCell.propTypes = { - column: external_prop_types_default().instanceOf(Object) -}; - -;// CONCATENATED MODULE: ./src/components/Table/js/header.js -var header_defProp = Object.defineProperty; -var header_defProps = Object.defineProperties; -var header_getOwnPropDescs = Object.getOwnPropertyDescriptors; -var header_getOwnPropSymbols = Object.getOwnPropertySymbols; -var header_hasOwnProp = Object.prototype.hasOwnProperty; -var header_propIsEnum = Object.prototype.propertyIsEnumerable; -var header_defNormalProp = (obj, key, value) => key in obj ? header_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var header_spreadValues = (a, b) => { - for (var prop in b || (b = {})) - if (header_hasOwnProp.call(b, prop)) - header_defNormalProp(a, prop, b[prop]); - if (header_getOwnPropSymbols) - for (var prop of header_getOwnPropSymbols(b)) { - if (header_propIsEnum.call(b, prop)) - header_defNormalProp(a, prop, b[prop]); - } - return a; -}; -var header_spreadProps = (a, b) => header_defProps(a, header_getOwnPropDescs(b)); - - - -const Header = () => { - const [selectAll, setSelectAll] = (0,external_react_namespaceObject.useState)(false); - const { state, sendMessage } = (0,external_react_namespaceObject.useContext)(tableContext); - const { columns, selectable } = state; - const generateHeaders = () => columns.map((column) => /* @__PURE__ */ external_react_default().createElement( - HeaderCell, - { - key: column.id, - column - } - )); - const generateSelectable = () => { - var _a; - if (!selectable) { - return; - } - const Component = selectable.type; - return /* @__PURE__ */ external_react_default().createElement( - "th", - { - className: state.maxHeight ? "fixed-header" : "" - }, - (selectable == null ? void 0 : selectable.allowSelectAll) ? /* @__PURE__ */ external_react_default().createElement("div", { className: selectable == null ? void 0 : selectable.style }, /* @__PURE__ */ external_react_default().createElement( - Component, - header_spreadProps(header_spreadValues({}, selectable.values), { - onClick: () => { - setSelectAll(!selectAll); - sendMessage("header.selectAll.click", selectAll); - }, - onChange: (v) => { - sendMessage("header.selectAll.change", v); - } - }), - (_a = selectable.values) == null ? void 0 : _a.value - )) : selectable.name || "Select" - ); - }; - return /* @__PURE__ */ external_react_default().createElement("thead", null, /* @__PURE__ */ external_react_default().createElement("tr", null, selectable && selectable.position === "LEFT" && generateSelectable(), generateHeaders(), selectable && selectable.position === "RIGHT" && generateSelectable())); -}; - -;// CONCATENATED MODULE: ./src/form/components/Checkbox/index.js -var Checkbox_defProp = Object.defineProperty; -var Checkbox_defProps = Object.defineProperties; -var Checkbox_getOwnPropDescs = Object.getOwnPropertyDescriptors; -var Checkbox_getOwnPropSymbols = Object.getOwnPropertySymbols; -var Checkbox_hasOwnProp = Object.prototype.hasOwnProperty; -var Checkbox_propIsEnum = Object.prototype.propertyIsEnumerable; -var Checkbox_defNormalProp = (obj, key, value) => key in obj ? Checkbox_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var Checkbox_spreadValues = (a, b) => { - for (var prop in b || (b = {})) - if (Checkbox_hasOwnProp.call(b, prop)) - Checkbox_defNormalProp(a, prop, b[prop]); - if (Checkbox_getOwnPropSymbols) - for (var prop of Checkbox_getOwnPropSymbols(b)) { - if (Checkbox_propIsEnum.call(b, prop)) - Checkbox_defNormalProp(a, prop, b[prop]); - } - return a; -}; -var Checkbox_spreadProps = (a, b) => Checkbox_defProps(a, Checkbox_getOwnPropDescs(b)); -var Checkbox_objRest = (source, exclude) => { - var target = {}; - for (var prop in source) - if (Checkbox_hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) - target[prop] = source[prop]; - if (source != null && Checkbox_getOwnPropSymbols) - for (var prop of Checkbox_getOwnPropSymbols(source)) { - if (exclude.indexOf(prop) < 0 && Checkbox_propIsEnum.call(source, prop)) - target[prop] = source[prop]; - } - return target; -}; -var Checkbox_publicField = (obj, key, value) => { - Checkbox_defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); - return value; -}; - - -class Checkbox extends external_react_namespaceObject.Component { - getCssClasses() { - const { - inline, - disabled, - readOnly, - theme = "", - wrapperClassName = "" - } = this.props; - const cssClasses = [wrapperClassName]; - cssClasses.push("tyk-checkbox"); - if (inline) { - cssClasses.push("tyk-checkbox--inline"); - } - if (theme.trim()) { - cssClasses.push(...theme.split(" ").map((t) => `tyk-checkbox--theme-${t}`)); - } - if (disabled || readOnly) { - cssClasses.push("tyk-checkbox--is-disabled"); - } - return cssClasses.join(" "); - } - displayError() { - const { error } = this.props; - if (!error) - return null; - return /* @__PURE__ */ external_react_default().createElement("p", { className: "tyk-form-control__error-message" }, error); - } - displayNote() { - const { note } = this.props; - if (!note) - return null; - return /* @__PURE__ */ external_react_default().createElement("p", { className: "tyk-form-control__help-block" }, note); - } - render() { - const _a = this.props, { - input, - value, - label - } = _a, rest = Checkbox_objRest(_a, [ - "input", - "value", - "label" - ]); - return /* @__PURE__ */ external_react_default().createElement( - "div", - { - className: this.getCssClasses() - }, - /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-form-control__wrapper" }, /* @__PURE__ */ external_react_default().createElement("label", null, /* @__PURE__ */ external_react_default().createElement( - "input", - Checkbox_spreadProps(Checkbox_spreadValues(Checkbox_spreadValues({ - checked: input ? input.value : value - }, input), rest), { - type: "checkbox" - }) - ), label), this.displayNote(), this.displayError()) - ); - } -} -Checkbox_publicField(Checkbox, "propTypes", { - /** Disable a checkbox */ - disabled: (external_prop_types_default()).bool, - /** Readonly prop behaves the same as disable on checkboxes */ - readOnly: (external_prop_types_default()).bool, - /** Align checkbox with in same line with other elements */ - inline: (external_prop_types_default()).bool, - /** Set a theme for checkbox */ - theme: (external_prop_types_default()).string, - /** Set an error state for checkbox if boolean will show just icon without message */ - error: external_prop_types_default().oneOfType([ - (external_prop_types_default()).string, - (external_prop_types_default()).bool - ]), - /** Adds additional information under the checkbox element */ - note: (external_prop_types_default()).string, - input: external_prop_types_default().instanceOf(Object), - /** Adds a label to checkbox */ - label: external_prop_types_default().oneOfType([ - external_prop_types_default().arrayOf((external_prop_types_default()).node), - (external_prop_types_default()).node, - (external_prop_types_default()).element, - (external_prop_types_default()).func, - (external_prop_types_default()).string - ]), - /** Set a name for checkbox */ - name: (external_prop_types_default()).string, - /** Set initial value for checkbox */ - value: external_prop_types_default().oneOfType([ - (external_prop_types_default()).string, - (external_prop_types_default()).bool - ]), - /** Make checkbox checked by default */ - checked: external_prop_types_default().oneOfType([ - (external_prop_types_default()).string, - (external_prop_types_default()).bool - ]), - /** Callback function executed on change of checkbox */ - onChange: (external_prop_types_default()).func, - /** CSS classes added to the wrapper of the component */ - wrapperClassName: (external_prop_types_default()).string -}); - -;// CONCATENATED MODULE: ./src/components/Table/js/cell.js -var cell_defProp = Object.defineProperty; -var cell_getOwnPropSymbols = Object.getOwnPropertySymbols; -var cell_hasOwnProp = Object.prototype.hasOwnProperty; -var cell_propIsEnum = Object.prototype.propertyIsEnumerable; -var cell_defNormalProp = (obj, key, value) => key in obj ? cell_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var cell_spreadValues = (a, b) => { - for (var prop in b || (b = {})) - if (cell_hasOwnProp.call(b, prop)) - cell_defNormalProp(a, prop, b[prop]); - if (cell_getOwnPropSymbols) - for (var prop of cell_getOwnPropSymbols(b)) { - if (cell_propIsEnum.call(b, prop)) - cell_defNormalProp(a, prop, b[prop]); - } - return a; -}; - - -const Cell = ({ col, row }) => { - var _a, _b, _c, _d, _e; - if (!row.values[col.id]) { - return /* @__PURE__ */ external_react_default().createElement("td", null); - } - if (col.type === "string") { - return ( - // eslint-disable-next-line jsx-a11y/click-events-have-key-events - /* @__PURE__ */ external_react_default().createElement( - "td", - cell_spreadValues({ - className: ((_a = row.values[col.id].styling) == null ? void 0 : _a.className) || null - }, (_b = row == null ? void 0 : row.values[col.id]) == null ? void 0 : _b.events), - (_c = row.values[col.id]) == null ? void 0 : _c.value - ) - ); - } - const Component = col.type; - return /* @__PURE__ */ external_react_default().createElement( - "td", - cell_spreadValues({ - className: ((_d = row.values[col.id].styling) == null ? void 0 : _d.className) || null - }, (_e = row == null ? void 0 : row.values[col.id]) == null ? void 0 : _e.events), - /* @__PURE__ */ external_react_default().createElement( - Component, - cell_spreadValues({}, row.values[col.id].props), - row.values[col.id].children ? row.values[col.id].children : null - ) - ); -}; -Cell.propTypes = { - col: external_prop_types_default().instanceOf(Object), - row: external_prop_types_default().instanceOf(Object), - index: (external_prop_types_default()).number -}; - -;// CONCATENATED MODULE: ./src/components/Table/js/row.js - - - - - -const Row = ({ row, index }) => { - var _a, _b; - const { state, sendMessage } = (0,external_react_namespaceObject.useContext)(tableContext); - const { columns, selectable } = state; - const SelectableCheckbox = () => /* @__PURE__ */ external_react_default().createElement("td", null, /* @__PURE__ */ external_react_default().createElement( - Checkbox, - { - defaultChecked: row.selected, - onChange: (v) => sendMessage("row.selected", { index, selected: v }) - } - )); - return /* @__PURE__ */ external_react_default().createElement( - "tr", - { - onClick: (_a = row.events) == null ? void 0 : _a.onClick, - className: (_b = row.styling) == null ? void 0 : _b.className - }, - selectable && selectable.position === "LEFT" && SelectableCheckbox(), - columns.map((col) => /* @__PURE__ */ external_react_default().createElement(Cell, { key: col.id, col, row, index })), - selectable && selectable.position === "RIGHT" && SelectableCheckbox() - ); -}; -Row.propTypes = { - row: external_prop_types_default().instanceOf(Object), - index: (external_prop_types_default()).number -}; - -;// CONCATENATED MODULE: ./src/components/Table/js/body.js - - - -const Body = () => { - const { state } = (0,external_react_namespaceObject.useContext)(tableContext); - const { rows } = state; - return /* @__PURE__ */ external_react_default().createElement( - "tbody", - null, - // eslint-disable-next-line react/no-array-index-key - rows.map((row, i) => /* @__PURE__ */ external_react_default().createElement(Row, { key: i, row, index: i })) - ); -}; - -;// CONCATENATED MODULE: ./src/components/Table/index.js -var Table_defProp = Object.defineProperty; -var Table_defProps = Object.defineProperties; -var Table_getOwnPropDescs = Object.getOwnPropertyDescriptors; -var Table_getOwnPropSymbols = Object.getOwnPropertySymbols; -var Table_hasOwnProp = Object.prototype.hasOwnProperty; -var Table_propIsEnum = Object.prototype.propertyIsEnumerable; -var Table_defNormalProp = (obj, key, value) => key in obj ? Table_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var Table_spreadValues = (a, b) => { - for (var prop in b || (b = {})) - if (Table_hasOwnProp.call(b, prop)) - Table_defNormalProp(a, prop, b[prop]); - if (Table_getOwnPropSymbols) - for (var prop of Table_getOwnPropSymbols(b)) { - if (Table_propIsEnum.call(b, prop)) - Table_defNormalProp(a, prop, b[prop]); - } - return a; -}; -var Table_spreadProps = (a, b) => Table_defProps(a, Table_getOwnPropDescs(b)); - - - - - - - - - -function Table({ - value, - onChange, - noDataMessage, - loading, - infiniteScrolling -}) { - var _a; - const [state, setState] = (0,external_react_namespaceObject.useState)(null); - const [onChangeMsg, setOnChangeMsg] = (0,external_react_namespaceObject.useState)("api"); - const itemsListRef = (0,external_react_namespaceObject.useRef)(null); - const sortRows = (col, sortOrder) => { - setState(Table_spreadProps(Table_spreadValues({}, state), { - sort: { - order: sortOrder, - col - } - })); - }; - const selectAllRows = (data) => { - setState(Table_spreadProps(Table_spreadValues({}, state), { - rows: state.rows.map((row) => Table_spreadProps(Table_spreadValues({}, row), { selected: data })) - })); - }; - const selectRow = (data) => { - const { index, selected } = data; - const selectedRow = state.rows[index]; - setState(Table_spreadProps(Table_spreadValues({}, state), { - rows: [ - ...state.rows.slice(0, index), - Table_spreadProps(Table_spreadValues({}, selectedRow), { selected }), - ...state.rows.slice(index + 1) - ] - })); - }; - const setPagination = (data) => { - setState(Table_spreadProps(Table_spreadValues({}, state), { - pagination: Table_spreadProps(Table_spreadValues({}, state.pagination), { - current: data + 1 - }) - })); - }; - const api = { - getState: () => state, - setState: (newState) => setState(newState) - }; - const sendMessage = (message, data) => { - setOnChangeMsg(message); - if (message === "sort") { - sortRows(data.column.id, data.sortOrder); - } - if (message === "header.selectAll.click") { - selectAllRows(data); - } - if (message === "header.selectAll.change") { - selectAllRows(data); - } - if (message === "row.selected") { - selectRow(data); - } - if (message === "pagination.change") { - setPagination(data); - } - }; - (0,external_react_namespaceObject.useEffect)(() => setState(value), [value]); - (0,external_react_namespaceObject.useEffect)(() => { - if (onChange) { - onChange(onChangeMsg, state, api); - } - setOnChangeMsg("api"); - }, [state]); - if (!state) { - return /* @__PURE__ */ external_react_default().createElement(components_Loader, { position: "absolute" }); - } - if (state.rows <= 0) { - return /* @__PURE__ */ external_react_default().createElement(components_Message, { theme: "info" }, noDataMessage || "No Data Available"); - } - const getTable = () => /* @__PURE__ */ external_react_default().createElement("table", { className: "tyk-table", ref: itemsListRef }, /* @__PURE__ */ external_react_default().createElement(Header, null), /* @__PURE__ */ external_react_default().createElement(Body, null)); - return /* @__PURE__ */ external_react_default().createElement(tableContext.Provider, { value: { state, sendMessage } }, /* @__PURE__ */ external_react_default().createElement("div", { className: `scrollable ${((_a = state.styling) == null ? void 0 : _a.className) || ""}`, style: { height: state.maxHeight ? state.maxHeight : "auto", position: "relative" } }, loading && /* @__PURE__ */ external_react_default().createElement(components_Loader, { position: "absolute", withbackground: true }), infiniteScrolling && state.pagination ? /* @__PURE__ */ external_react_default().createElement( - components_InfiniteScroller, - { - refChild: itemsListRef, - hasMore: state.pagination.totalPages > state.pagination.current, - loadMore: (num) => sendMessage("pagination.change", num), - pageNumber: state.pagination.current - 1, - initialLoad: false - }, - getTable() - ) : getTable()), state.pagination && !infiniteScrolling && /* @__PURE__ */ external_react_default().createElement("div", { className: "new-table-pagination" }, /* @__PURE__ */ external_react_default().createElement( - Pagination, - { - value: state.pagination.current - 1, - nrItemsOnPage: state.pagination.perPage - 1, - totalNrOfPages: state.pagination.totalPages - 1, - onChange: (num) => sendMessage("pagination.change", num) - } - ))); -} -Table.propTypes = { - /** Configuration object used to render the component */ - value: external_prop_types_default().shape({ - /** Configuration for table columns */ - columns: external_prop_types_default().arrayOf(external_prop_types_default().shape({ - /** Unique id of the column */ - id: (external_prop_types_default()).string.isRequired, - /** Name of the column */ - name: (external_prop_types_default()).string, - /** Type of column, String by default */ - type: external_prop_types_default().oneOfType([ - /** Just renders cell data of type strings */ - (external_prop_types_default()).string, - /** Render cell of elements (eg. Input / Button) */ - (external_prop_types_default()).element, - /** Render a custom function/component */ - (external_prop_types_default()).func - ]), - sortable: external_prop_types_default().oneOfType([ - /** Make Column sortable */ - (external_prop_types_default()).bool, - /** Configure sorting behaviour */ - external_prop_types_default().shape({ - /** Set default sorting direction ASC / DESC */ - default: (external_prop_types_default()).string - }) - ]) - })), - /** Configuration for table rows */ - rows: external_prop_types_default().arrayOf(external_prop_types_default().shape({})), - /** Configuration to make table rows selectable */ - selectable: external_prop_types_default().shape({}), - /** Renders pagination for table if the object is missing / empty no pagination is rendered. */ - pagination: external_prop_types_default().shape({}), - /** Sets maximum height for table container. */ - maxHeight: (external_prop_types_default()).string, - /** Styling for the table container. */ - styling: external_prop_types_default().shape({ - /** It's recommended to add styles to a class and pass the class in this object */ - className: (external_prop_types_default()).string - }) - }).isRequired, - /** Callback executed with message and value when there are changes on table */ - onChange: (external_prop_types_default()).func, - /** Renders a component with the given message when `config.rows` is empty */ - noDataMessage: (external_prop_types_default()).string, - /** Show placeholder loader */ - loading: (external_prop_types_default()).bool, - /** Adds infinite scroller on page and calls `onChange` with `pagination.change` message */ - infiniteScrolling: (external_prop_types_default()).bool -}; -Table.defaultProps = { - loading: false, - infiniteScrolling: false, - noDataMessage: "No Data Available", - onChange: null -}; -/* harmony default export */ const components_Table = (Table); - -;// CONCATENATED MODULE: ./src/layout/Column/index.js -var Column_defProp = Object.defineProperty; -var Column_defProps = Object.defineProperties; -var Column_getOwnPropDescs = Object.getOwnPropertyDescriptors; -var Column_getOwnPropSymbols = Object.getOwnPropertySymbols; -var Column_hasOwnProp = Object.prototype.hasOwnProperty; -var Column_propIsEnum = Object.prototype.propertyIsEnumerable; -var Column_defNormalProp = (obj, key, value) => key in obj ? Column_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var Column_spreadValues = (a, b) => { - for (var prop in b || (b = {})) - if (Column_hasOwnProp.call(b, prop)) - Column_defNormalProp(a, prop, b[prop]); - if (Column_getOwnPropSymbols) - for (var prop of Column_getOwnPropSymbols(b)) { - if (Column_propIsEnum.call(b, prop)) - Column_defNormalProp(a, prop, b[prop]); - } - return a; -}; -var Column_spreadProps = (a, b) => Column_defProps(a, Column_getOwnPropDescs(b)); -var Column_objRest = (source, exclude) => { - var target = {}; - for (var prop in source) - if (Column_hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) - target[prop] = source[prop]; - if (source != null && Column_getOwnPropSymbols) - for (var prop of Column_getOwnPropSymbols(source)) { - if (exclude.indexOf(prop) < 0 && Column_propIsEnum.call(source, prop)) - target[prop] = source[prop]; - } - return target; -}; -var Column_publicField = (obj, key, value) => { - Column_defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); - return value; -}; - - -class Column extends external_react_namespaceObject.PureComponent { - getCssClasses() { - const { - align, - className, - offset, - size - } = this.props; - const colSize = size.split(" "); - const colOffsets = offset ? offset.split(" ") : []; - let cssClasses = colSize.map((cSize) => `tyk-col--${cSize}`); - const offsets = colOffsets.map((cOffset) => `tyk-col--offset-${cOffset}`); - if (align) { - cssClasses.push(`tyk-col--align-${align}`); - } - if (className) { - cssClasses = cssClasses.concat(className.split(" ")); - } - cssClasses.push("tyk-col"); - cssClasses = cssClasses.concat(offsets || []); - return cssClasses.join(" "); - } - render() { - const _a = this.props, { children, id } = _a, props = Column_objRest(_a, ["children", "id"]); - return /* @__PURE__ */ external_react_default().createElement("div", Column_spreadProps(Column_spreadValues({}, props), { className: this.getCssClasses(), id }), children); - } -} -Column_publicField(Column, "propTypes", { - /** - * This property describes how the column element will be aligned vertically - * within a Row: bottom, center, top - */ - align: (external_prop_types_default()).string, - /** Css classes that can be passed to the column element */ - className: (external_prop_types_default()).string, - /** - * ID that can be passed to the column element - */ - id: (external_prop_types_default()).string, - /** - * Specifies the size of the column within a Row (values must be between 1 - 12) - */ - size: (external_prop_types_default()).string.isRequired, - /** - * Specifies the left gap a column can have within a Row (values must be between 1 - 12) - */ - offset: (external_prop_types_default()).string, - children: external_prop_types_default().oneOfType([ - (external_prop_types_default()).element, - (external_prop_types_default()).string, - (external_prop_types_default()).object, - (external_prop_types_default()).node - ]) -}); -/* harmony default export */ const layout_Column = (Column); - -;// CONCATENATED MODULE: ./src/layout/Row/index.js -var Row_defProp = Object.defineProperty; -var Row_defProps = Object.defineProperties; -var Row_getOwnPropDescs = Object.getOwnPropertyDescriptors; -var Row_getOwnPropSymbols = Object.getOwnPropertySymbols; -var Row_hasOwnProp = Object.prototype.hasOwnProperty; -var Row_propIsEnum = Object.prototype.propertyIsEnumerable; -var Row_defNormalProp = (obj, key, value) => key in obj ? Row_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var Row_spreadValues = (a, b) => { - for (var prop in b || (b = {})) - if (Row_hasOwnProp.call(b, prop)) - Row_defNormalProp(a, prop, b[prop]); - if (Row_getOwnPropSymbols) - for (var prop of Row_getOwnPropSymbols(b)) { - if (Row_propIsEnum.call(b, prop)) - Row_defNormalProp(a, prop, b[prop]); - } - return a; -}; -var Row_spreadProps = (a, b) => Row_defProps(a, Row_getOwnPropDescs(b)); -var Row_objRest = (source, exclude) => { - var target = {}; - for (var prop in source) - if (Row_hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) - target[prop] = source[prop]; - if (source != null && Row_getOwnPropSymbols) - for (var prop of Row_getOwnPropSymbols(source)) { - if (exclude.indexOf(prop) < 0 && Row_propIsEnum.call(source, prop)) - target[prop] = source[prop]; - } - return target; -}; -var Row_publicField = (obj, key, value) => { - Row_defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); - return value; -}; - - -class Row_Row extends external_react_namespaceObject.PureComponent { - getCssClasses() { - const { className, nogutters } = this.props; - let cssClass = ["tyk-row"]; - if (nogutters) { - cssClass.push("no-gutters"); - cssClass.push("tyk-row--gutterless"); - } - if (className) { - cssClass = cssClass.concat(className.split(" ")); - } - return cssClass.join(" "); - } - render() { - const _a = this.props, { - children, - nogutters - } = _a, rest = Row_objRest(_a, [ - "children", - "nogutters" - ]); - return /* @__PURE__ */ external_react_default().createElement("div", Row_spreadProps(Row_spreadValues({}, rest), { className: this.getCssClasses() }), children); - } -} -Row_publicField(Row_Row, "propTypes", { - children: external_prop_types_default().oneOfType([ - (external_prop_types_default()).element, - (external_prop_types_default()).node - ]), - /** Css classes that can be passed to the Row element */ - className: (external_prop_types_default()).string, - /** Removes all the spaces between column */ - nogutters: (external_prop_types_default()).bool -}); - -;// CONCATENATED MODULE: ./src/form/components/Dropdown/dropdown-context.js - -const DropdownContext = (0,external_react_namespaceObject.createContext)(); - -;// CONCATENATED MODULE: ./src/form/components/Dropdown/js/DropdownItem.js - - - - -function DropdownItem(props) { - const { - customdropdownitem, - children, - eventKey, - href, - target, - title, - onClick - } = props; - const dropdownItemCLick = (0,external_react_namespaceObject.useCallback)((dropdownContext, itemProps) => { - dropdownContext.onSelectItem(eventKey, itemProps); - if (onClick) - onClick(eventKey); - }, []); - return /* @__PURE__ */ external_react_default().createElement(DropdownContext.Consumer, null, (dropdownContext) => /* @__PURE__ */ external_react_default().createElement( - "li", - { - onClick: () => dropdownItemCLick(dropdownContext, props), - onKeyUp: () => { - } - }, - customdropdownitem ? (0,external_react_namespaceObject.cloneElement)(customdropdownitem, {}) : /* @__PURE__ */ external_react_default().createElement("a", { href, target }, eventKey && dropdownContext.selectedItem === eventKey && dropdownContext.showCheckmark ? /* @__PURE__ */ external_react_default().createElement(components_Icon, { type: "check" }) : null, /* @__PURE__ */ external_react_default().createElement("span", null, title || children)) - )); -} -DropdownItem.propTypes = { - children: external_prop_types_default().oneOfType([ - (external_prop_types_default()).element, - (external_prop_types_default()).node, - (external_prop_types_default()).string - ]), - customdropdownitem: external_prop_types_default().oneOfType([ - external_prop_types_default().arrayOf((external_prop_types_default()).node), - (external_prop_types_default()).node, - (external_prop_types_default()).element - ]), - eventKey: (external_prop_types_default()).string, - href: (external_prop_types_default()).string, - target: (external_prop_types_default()).string, - onClick: (external_prop_types_default()).func, - title: (external_prop_types_default()).string -}; -/* harmony default export */ const js_DropdownItem = (DropdownItem); - -;// CONCATENATED MODULE: ./src/form/components/Dropdown/index.js -var Dropdown_defProp = Object.defineProperty; -var Dropdown_getOwnPropSymbols = Object.getOwnPropertySymbols; -var Dropdown_hasOwnProp = Object.prototype.hasOwnProperty; -var Dropdown_propIsEnum = Object.prototype.propertyIsEnumerable; -var Dropdown_defNormalProp = (obj, key, value) => key in obj ? Dropdown_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var Dropdown_spreadValues = (a, b) => { - for (var prop in b || (b = {})) - if (Dropdown_hasOwnProp.call(b, prop)) - Dropdown_defNormalProp(a, prop, b[prop]); - if (Dropdown_getOwnPropSymbols) - for (var prop of Dropdown_getOwnPropSymbols(b)) { - if (Dropdown_propIsEnum.call(b, prop)) - Dropdown_defNormalProp(a, prop, b[prop]); - } - return a; -}; - - - - - - -class Dropdown extends external_react_namespaceObject.Component { - static isElemInRightView(el, dropdownWidth) { - const windowWidth = window.innerWidth; - const offset = el.getBoundingClientRect(); - const elemRight = offset.left + dropdownWidth; - return elemRight <= windowWidth; - } - static isElemInBottomView(el, dropdownHeight) { - const windowHeight = window.innerHeight; - const offset = el.getBoundingClientRect(); - const elHeight = el.clientHeight; - const elemBottom = offset.top + elHeight + dropdownHeight; - return elemBottom <= windowHeight; - } - constructor(props) { - super(props); - const { - selectedItem, - open - } = this.props; - this.state = { - opened: open, - selectedItem: selectedItem || null - }; - this.dropdownRef = (0,external_react_namespaceObject.createRef)(); - this.dropdownListRef = (0,external_react_namespaceObject.createRef)(); - this.dropdownButtonRef = (0,external_react_namespaceObject.createRef)(); - this.onSelectItem = this.onSelectItem.bind(this); - this.toggleDropdown = this.toggleDropdown.bind(this); - this.handleClickOutside = this.handleClickOutside.bind(this); - } - componentDidMount() { - document.addEventListener("mousedown", this.handleClickOutside); - if (this.dropdownListRef.current) { - this.getStyles(); - } - } - componentDidUpdate(prevProps) { - const { - open - } = this.props; - const { - opened - } = this.state; - if (this.dropdownListRef.current) { - this.getStyles(); - } - if (!prevProps.open && open === true && !opened) { - this.toggleDropdown(); - } - if (prevProps.open && open === false && opened) { - this.closeDropdown(); - } - } - componentWillUnmount() { - document.removeEventListener("mousedown", this.handleClickOutside); - } - handleClickOutside(event) { - if (this.dropdownListRef.current && !this.dropdownListRef.current.contains(event.target) && this.dropdownRef.current && !this.dropdownRef.current.contains(event.target)) { - this.closeDropdown(); - } - } - onSelectItem(itemId, itemProps) { - const { closeOnSelect, onSelect } = this.props; - const changes = { - selectedItem: itemId, - selectedItemProps: itemProps - }; - if (closeOnSelect) { - changes.opened = false; - } - this.setState(changes); - if (onSelect && typeof onSelect === "function") { - onSelect(itemId); - } - } - getStyles() { - const { - display, - position, - offset - } = this.props; - const dropdownEl = this.dropdownListRef.current; - if (offset) { - dropdownEl.style.top = `${offset.top}`; - dropdownEl.style.left = `${offset.left}`; - return; - } - const scrollTop = Math.max( - document.documentElement.scrollTop, - document.body.scrollTop, - window.scrollY - ); - const el = this.dropdownRef.current; - const elHeight = el.clientHeight; - const dropdownHeight = dropdownEl ? dropdownEl.clientHeight : 0; - const dropdownWidth = dropdownEl ? dropdownEl.clientWidth : 0; - const offsetPosition = el.getBoundingClientRect(); - const { left, top } = offsetPosition; - let customTop = 0; - let customLeft = left; - if (Dropdown.isElemInBottomView(el, dropdownHeight)) { - customTop = top + scrollTop + elHeight; - } else { - customTop = top + scrollTop - dropdownHeight - 5; - } - if (Dropdown.isElemInRightView(el, dropdownWidth)) { - customLeft = left; - } else { - customLeft = left + el.clientWidth - dropdownWidth; - } - if (position !== "relative") { - dropdownEl.style.top = `${customTop}px`; - if (display !== "block") { - dropdownEl.style.left = `${customLeft}px`; - } - } - if (display !== "block") { - dropdownEl.style.minWidth = `${this.dropdownButtonRef.current.clientWidth}px`; - } - } - getWrapperCssClasses() { - const { - btnGroup, - btnGroupSize, - className, - btnTheme, - wrapperClassName = "" - } = this.props; - let cssClasses = [wrapperClassName, "tyk-dropdown"]; - cssClasses.push(`theme-${btnTheme || "default"}`); - if (className) { - cssClasses = cssClasses.concat(className.split(" ")); - } - if (btnGroup) { - cssClasses.push("tyk-button-group"); - cssClasses.push(btnGroupSize ? `tyk-button-group--${btnGroupSize}` : "tyk-button-group--md"); - } - return cssClasses.join(" "); - } - getCssClasses() { - const { - opened - } = this.state; - const { - hasCustomContent, - display, - listclassnames, - position, - maxHeight - } = this.props; - let cssClasses = ["tyk-dropdown-menu", "tyk-dropdown"]; - if (maxHeight) { - cssClasses.push("tyk-dropdown--scrollable"); - } - if (opened) { - cssClasses.push("opened"); - } - if (listclassnames) { - cssClasses = cssClasses.concat(listclassnames.split(" ")); - } - if (display) { - cssClasses.push("tyk-dropdown--block"); - } - if (hasCustomContent) { - cssClasses.push("tyk-dropdown--custom"); - } - if (position === "relative") { - cssClasses.push("tyk-dropdown--relative"); - } - return cssClasses.join(" "); - } - getBtnTitle() { - const { btnTitle, stopButtonTextChange } = this.props; - const { selectedItemProps } = this.state; - if (!stopButtonTextChange && selectedItemProps && selectedItemProps.title) { - return selectedItemProps.title; - } - return btnTitle; - } - closeDropdown() { - const { onClose } = this.props; - this.setState({ - opened: false - }, () => { - if (onClose) { - onClose(); - } - }); - } - toggleDropdown() { - const { - opened - } = this.state; - if (opened) { - this.closeDropdown(); - return; - } - this.setState({ - opened: true - }); - } - render() { - const { - appendTo, - btnClassName, - btnSize, - customBtnTitle, - hasCustomContent, - btnTheme, - children, - label, - showDropdownIcon, - showTriggerButton, - showCheckmark, - disabled = false, - maxHeight - } = this.props; - const { - selectedItem, - opened - } = this.state; - const DropdownWrapperTag = hasCustomContent ? "div" : "ul"; - return /* @__PURE__ */ external_react_default().createElement( - "div", - { - className: this.getWrapperCssClasses(), - ref: this.dropdownRef - }, - label ? /* @__PURE__ */ external_react_default().createElement("label", { className: "font-family-medium" }, label) : null, - showTriggerButton ? /* @__PURE__ */ external_react_default().createElement( - components_Button, - { - className: `tyk-dropdown__trigger ${opened ? "tyk-dropdown__trigger--opened " : " "} ${btnClassName}`, - theme: btnTheme || "default", - onClick: this.toggleDropdown, - iconType: showDropdownIcon ? "chevron-down" : null, - iconPosition: "right", - size: btnSize || "md", - type: "button", - disabled, - ref: this.dropdownButtonRef - }, - customBtnTitle || this.getBtnTitle() - ) : null, - opened ? external_react_dom_default().createPortal( - /* @__PURE__ */ external_react_default().createElement( - DropdownContext.Provider, - { - value: { - onSelectItem: this.onSelectItem, - selectedItem, - showCheckmark - } - }, - opened ? /* @__PURE__ */ external_react_default().createElement( - DropdownWrapperTag, - Dropdown_spreadValues({ - className: this.getCssClasses(), - ref: this.dropdownListRef - }, maxHeight && { - style: { - maxHeight - } - }), - typeof children === "function" ? children({ - closeDropdown: this.closeDropdown.bind(this) - }) : children - ) : null - ), - document.querySelector(appendTo || "body") - ) : null - ); - } -} -Dropdown.propTypes = { - appendTo: (external_prop_types_default()).string, - children: external_prop_types_default().oneOfType([ - (external_prop_types_default()).element, - (external_prop_types_default()).node, - (external_prop_types_default()).string, - (external_prop_types_default()).func - ]), - closeOnSelect: (external_prop_types_default()).bool, - btnClassName: (external_prop_types_default()).string, - btnSize: (external_prop_types_default()).string, - btnGroupSize: (external_prop_types_default()).string, - btnTheme: (external_prop_types_default()).string, - btnTitle: external_prop_types_default().oneOfType([ - (external_prop_types_default()).node, - (external_prop_types_default()).element, - (external_prop_types_default()).string - ]), - customBtnTitle: external_prop_types_default().oneOfType([ - (external_prop_types_default()).node, - (external_prop_types_default()).element, - (external_prop_types_default()).string - ]), - btnGroup: (external_prop_types_default()).bool, - className: (external_prop_types_default()).string, - display: (external_prop_types_default()).string, - disabled: (external_prop_types_default()).bool, - hasCustomContent: (external_prop_types_default()).bool, - label: external_prop_types_default().oneOfType([ - external_prop_types_default().arrayOf((external_prop_types_default()).node), - (external_prop_types_default()).node, - (external_prop_types_default()).element, - (external_prop_types_default()).func, - (external_prop_types_default()).string - ]), - listclassnames: (external_prop_types_default()).string, - onClose: (external_prop_types_default()).func, - onSelect: (external_prop_types_default()).func, - open: (external_prop_types_default()).bool, - offset: external_prop_types_default().instanceOf(Object), - position: (external_prop_types_default()).string, - selectedItem: (external_prop_types_default()).string, - showDropdownIcon: (external_prop_types_default()).bool, - stopButtonTextChange: (external_prop_types_default()).bool, - showTriggerButton: (external_prop_types_default()).bool, - showCheckmark: (external_prop_types_default()).bool, - maxHeight: (external_prop_types_default()).string, - wrapperClassName: (external_prop_types_default()).string -}; -Dropdown.defaultProps = { - closeOnSelect: false, - showDropdownIcon: true, - showTriggerButton: true, - showCheckmark: true, - open: false -}; -Dropdown.Item = js_DropdownItem; -/* harmony default export */ const components_Dropdown = (Dropdown); - -// EXTERNAL MODULE: ./node_modules/ace-builds/src-noconflict/ace.js -var ace = __webpack_require__(239); -var ace_default = /*#__PURE__*/__webpack_require__.n(ace); -;// CONCATENATED MODULE: external "react-ace" -const external_react_ace_namespaceObject = require("react-ace"); -var external_react_ace_default = /*#__PURE__*/__webpack_require__.n(external_react_ace_namespaceObject); -// EXTERNAL MODULE: ./node_modules/ace-builds/src-noconflict/mode-javascript.js -var mode_javascript = __webpack_require__(395); -// EXTERNAL MODULE: ./node_modules/ace-builds/src-noconflict/mode-golang.js -var mode_golang = __webpack_require__(576); -// EXTERNAL MODULE: ./node_modules/ace-builds/src-noconflict/mode-python.js -var mode_python = __webpack_require__(7); -// EXTERNAL MODULE: ./node_modules/ace-builds/src-noconflict/mode-css.js -var mode_css = __webpack_require__(549); -// EXTERNAL MODULE: ./node_modules/ace-builds/src-noconflict/mode-json.js -var mode_json = __webpack_require__(252); -// EXTERNAL MODULE: ./node_modules/ace-builds/src-noconflict/mode-xml.js -var mode_xml = __webpack_require__(202); -// EXTERNAL MODULE: ./node_modules/ace-builds/src-noconflict/mode-jsx.js -var mode_jsx = __webpack_require__(711); -// EXTERNAL MODULE: ./node_modules/ace-builds/src-noconflict/ext-searchbox.js -var ext_searchbox = __webpack_require__(604); -// EXTERNAL MODULE: ./node_modules/ace-builds/src-noconflict/ext-beautify.js -var ext_beautify = __webpack_require__(134); -// EXTERNAL MODULE: ./node_modules/ace-builds/src-noconflict/theme-github.js -var theme_github = __webpack_require__(203); -;// CONCATENATED MODULE: ./node_modules/ace-builds/src-noconflict/worker-json.js -const worker_json_namespaceObject = __webpack_require__.p + "6925696524271b926a8e.js"; -;// CONCATENATED MODULE: ./src/form/components/CodeEditor/index.js -var CodeEditor_defProp = Object.defineProperty; -var CodeEditor_defProps = Object.defineProperties; -var CodeEditor_getOwnPropDescs = Object.getOwnPropertyDescriptors; -var CodeEditor_getOwnPropSymbols = Object.getOwnPropertySymbols; -var CodeEditor_hasOwnProp = Object.prototype.hasOwnProperty; -var CodeEditor_propIsEnum = Object.prototype.propertyIsEnumerable; -var CodeEditor_defNormalProp = (obj, key, value) => key in obj ? CodeEditor_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var CodeEditor_spreadValues = (a, b) => { - for (var prop in b || (b = {})) - if (CodeEditor_hasOwnProp.call(b, prop)) - CodeEditor_defNormalProp(a, prop, b[prop]); - if (CodeEditor_getOwnPropSymbols) - for (var prop of CodeEditor_getOwnPropSymbols(b)) { - if (CodeEditor_propIsEnum.call(b, prop)) - CodeEditor_defNormalProp(a, prop, b[prop]); - } - return a; -}; -var CodeEditor_spreadProps = (a, b) => CodeEditor_defProps(a, CodeEditor_getOwnPropDescs(b)); - - - - - - - - - - - - - - - -ace_default().config.setModuleUrl("ace/mode/json_worker", worker_json_namespaceObject); -function CodeEditor(props) { - const { - disabled, - readOnly, - disableValidation, - id, - error, - label, - labelwidth, - note, - onBlur, - onChange, - theme, - value, - setOptions, - wrapperClassName - } = props; - const classes = [ - "tyk-form-group", - wrapperClassName, - ...theme ? theme.split(" ").map((t) => `tyk-form-group--${t}`) : [], - labelwidth && "tyk-form-group--label-has-width", - error && "has-error" - ].filter(Boolean).join(" "); - const finalSetOptions = CodeEditor_spreadValues(CodeEditor_spreadValues({}, setOptions), disableValidation && { useWorker: false }); - const getCodeEditorError = (0,external_react_namespaceObject.useCallback)(() => error && error !== "true" && error !== "false" ? /* @__PURE__ */ external_react_default().createElement("p", { className: "tyk-form-control__error-message" }, error) : null, [error]); - const getLabelStyles = (0,external_react_namespaceObject.useCallback)(() => { - if (labelwidth) - return { flexBasis: labelwidth }; - return {}; - }, [labelwidth]); - const getNonLabelWidth = (0,external_react_namespaceObject.useCallback)(() => { - if (labelwidth) - return { flexBasis: `calc(100% - ${labelwidth} - 20px)` }; - return {}; - }, [labelwidth]); - const handleOnChange = (0,external_react_namespaceObject.useCallback)((newValue) => { - if (onChange) - onChange(newValue); - }, [onChange]); - const handleOnBlur = (0,external_react_namespaceObject.useCallback)(() => { - if (onBlur) - onBlur(value); - }, [onBlur, value]); - return /* @__PURE__ */ external_react_default().createElement("div", { className: classes }, label ? /* @__PURE__ */ external_react_default().createElement("label", { htmlFor: id, style: getLabelStyles() }, label) : null, /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-form-control__wrapper", style: getNonLabelWidth() }, /* @__PURE__ */ external_react_default().createElement( - (external_react_ace_default()), - CodeEditor_spreadProps(CodeEditor_spreadValues({ - className: "tyk-form-control" - }, props), { - onChange: handleOnChange, - onBlur: handleOnBlur, - theme: "github", - editorProps: { $blockScrolling: true }, - readOnly: readOnly || disabled, - onLoad: (editorInstance) => { - editorInstance.container.style.resize = "both"; - document.addEventListener("mouseup", () => editorInstance.resize()); - }, - setOptions: finalSetOptions - }) - ), note ? /* @__PURE__ */ external_react_default().createElement("p", { className: "tyk-form-control__help-block" }, note) : null, getCodeEditorError())); -} -CodeEditor.propTypes = { - disabled: (external_prop_types_default()).bool, - readOnly: (external_prop_types_default()).bool, - disableValidation: (external_prop_types_default()).bool, - id: (external_prop_types_default()).string, - error: external_prop_types_default().oneOfType([ - (external_prop_types_default()).string, - (external_prop_types_default()).bool - ]), - label: external_prop_types_default().oneOfType([ - external_prop_types_default().arrayOf((external_prop_types_default()).node), - (external_prop_types_default()).node, - (external_prop_types_default()).element, - (external_prop_types_default()).func, - (external_prop_types_default()).string - ]), - labelwidth: (external_prop_types_default()).string, - mode: (external_prop_types_default()).string, - name: (external_prop_types_default()).string, - note: (external_prop_types_default()).string, - onBlur: (external_prop_types_default()).func, - onChange: (external_prop_types_default()).func, - theme: (external_prop_types_default()).string, - value: (external_prop_types_default()).string, - setOptions: external_prop_types_default().instanceOf(Object), - wrapperClassName: (external_prop_types_default()).string -}; -/* harmony default export */ const components_CodeEditor = (CodeEditor); - -;// CONCATENATED MODULE: ./src/form/components/Combobox/index.js -var Combobox_defProp = Object.defineProperty; -var Combobox_defProps = Object.defineProperties; -var Combobox_getOwnPropDescs = Object.getOwnPropertyDescriptors; -var Combobox_getOwnPropSymbols = Object.getOwnPropertySymbols; -var Combobox_hasOwnProp = Object.prototype.hasOwnProperty; -var Combobox_propIsEnum = Object.prototype.propertyIsEnumerable; -var Combobox_defNormalProp = (obj, key, value) => key in obj ? Combobox_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var Combobox_spreadValues = (a, b) => { - for (var prop in b || (b = {})) - if (Combobox_hasOwnProp.call(b, prop)) - Combobox_defNormalProp(a, prop, b[prop]); - if (Combobox_getOwnPropSymbols) - for (var prop of Combobox_getOwnPropSymbols(b)) { - if (Combobox_propIsEnum.call(b, prop)) - Combobox_defNormalProp(a, prop, b[prop]); - } - return a; -}; -var Combobox_spreadProps = (a, b) => Combobox_defProps(a, Combobox_getOwnPropDescs(b)); -var Combobox_publicField = (obj, key, value) => { - Combobox_defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); - return value; -}; - - - - - -const getStateSelectedValues = (multiple, tags, value) => { - if (!value) { - return multiple || tags ? [] : null; - } - return value; -}; -const _Combobox = class _Combobox extends external_react_namespaceObject.Component { - static closeList() { - return { - cursor: -1, - opened: false - }; - } - static openList() { - return { - opened: true - }; - } - static filterByName(itemValue, inputValue) { - return itemValue.name.toLowerCase().indexOf(inputValue) > -1; - } - constructor(props) { - super(props); - const { - multiple, - tags, - value - } = props; - this.state = { - cursor: -1, - opened: false, - width: 50, - initialValue: value, - stateSelectedValues: getStateSelectedValues(multiple, tags, value), - searchText: "", - tags - }; - this.comboboxRef = (0,external_react_namespaceObject.createRef)(); - this.valuesListRef = (0,external_react_namespaceObject.createRef)(); - this.inputRef = (0,external_react_namespaceObject.createRef)(); - this.textRef = (0,external_react_namespaceObject.createRef)(); - this.focusInput = this.focusInput.bind(this); - this.onKeyUp = this.onKeyUp.bind(this); - _Combobox.openList = _Combobox.openList.bind(this); - this.handleClickOutside = this.handleClickOutside.bind(this); - this.handleItemsNavigation = this.handleItemsNavigation.bind(this); - this.handleComboboxDropdownClick = this.handleComboboxDropdownClick.bind(this); - this.handleListItemClick = this.handleListItemClick.bind(this); - this.handlePillRemoveClick = this.handlePillRemoveClick.bind(this); - this.manageSelectedTags = this.manageSelectedTags.bind(this); - } - componentDidMount() { - const { tags } = this.props; - if (tags) { - this.setInputWidth(); - } - this.bindEvents(); - } - componentWillUnmount() { - this.unBindEvents(); - } - static getDerivedStateFromProps(nextProps, prevState) { - if (JSON.stringify(nextProps.value) !== JSON.stringify(prevState.initialValue) || nextProps.tags !== prevState.tags) { - return { - initialValue: nextProps.value, - stateSelectedValues: getStateSelectedValues( - nextProps.multiple, - nextProps.tags, - nextProps.value - ), - tags: nextProps.tags - }; - } - return null; - } - onKeyUp(e) { - const { tags, allowCustomValues } = this.props; - const { cursor, opened } = this.state; - const filteredValues = this.filterValues(); - let tempState = Object.assign({}, this.getSearchText()); - if (tags && e.key !== "Escape") { - tempState = Object.assign({}, tempState, this.setInputWidth()); - } - if (e.key === "Enter") { - const methodName = tags ? "manageSelectedTags" : "manageSelectedValues"; - tempState = Object.assign({}, tempState, this[methodName](cursor)); - } - if (allowCustomValues && !e.key === " " && tags) { - tempState = Object.assign({}, tempState, this.manageSelectedTags()); - } - if (!opened && this.inputRef.current.value && filteredValues && filteredValues.length && e.key !== "Escape") { - tempState = Object.assign({}, tempState, _Combobox.openList()); - } - if (e.key === "Escape" && opened) { - tempState = Object.assign({}, tempState, _Combobox.closeList()); - } - if (opened && filteredValues && !filteredValues.length) { - tempState = Object.assign({}, tempState, _Combobox.closeList()); - } - this.setState((previousState) => Object.assign({}, previousState, tempState)); - } - getLabelStyles() { - const { labelwidth } = this.props; - const styles = {}; - if (labelwidth) { - styles.flexBasis = labelwidth; - } - return styles; - } - getNonLabelWidth() { - const { labelwidth } = this.props; - const styles = {}; - if (labelwidth) { - styles.flexBasis = `calc(100% - ${labelwidth} - 20px)`; - } - return styles; - } - setInputWidth() { - return { - width: 50 + this.textRef.current.offsetWidth - }; - } - getSelectedIndex(value) { - const { stateSelectedValues } = this.state; - let position = -1; - if (Array.isArray(stateSelectedValues)) { - stateSelectedValues.forEach((item, index) => { - if (item.id === value.id) { - position = index; - } - }); - } else if (stateSelectedValues) { - if (stateSelectedValues.id === value.id) { - position = 0; - } - } - return position; - } - getSearchText() { - return { - searchText: this.inputRef.current.value - }; - } - getListItemCssClasses(value, index) { - const cssClasses = []; - const { - cursor - } = this.state; - if (cursor === index) { - cssClasses.push("active"); - } - if (value.disabled) { - cssClasses.push("disabled"); - } - return cssClasses.join(" "); - } - getComboboxListCssClass() { - const { opened } = this.state; - const { tags, theme } = this.props; - const themes = theme ? theme.split(" ") : []; - const cssClasses = ["tyk-combobox__list"]; - if (opened) { - cssClasses.push("tyk-combobox__list--opened"); - } - if (tags) { - cssClasses.push("tyk-combobox__list--has-tags"); - } - if (themes.length) { - themes.forEach((iTheme) => { - cssClasses.push(`tyk-form-group--${iTheme}`); - }); - } - return cssClasses.join(" "); - } - getCssClasses() { - const { - error, - disabled, - theme, - labelwidth - } = this.props; - const cssClasses = ["tyk-form-group", "tyk-combobox"]; - const themes = theme ? theme.split(" ") : []; - if (error) { - cssClasses.push("has-error"); - } - if (labelwidth) { - cssClasses.push("tyk-form-group--label-has-width"); - } - if (themes.length) { - themes.forEach((iTheme) => { - cssClasses.push(`tyk-form-group--${iTheme}`); - }); - } - if (disabled) { - cssClasses.push("disabled"); - } - return cssClasses.join(" "); - } - getInputError() { - const { error } = this.props; - return error && error !== "true" && error !== "false" ? /* @__PURE__ */ external_react_default().createElement( - "p", - { - className: "tyk-form-control__error-message" - }, - error - ) : null; - } - getStyles() { - const { scrollTop } = document.documentElement; - const el = this.comboboxRef.current; - const elHeight = el.offsetHeight; - const elWidth = el.offsetWidth; - const offset = el.getBoundingClientRect(); - const { left } = offset; - let top = 0; - top = offset.top + scrollTop + elHeight; - return { - top: `${top - 1}px`, - left: `${left}px`, - width: `${elWidth}px` - }; - } - getComboboxDisplayData() { - const { stateSelectedValues } = this.state; - const { multiple, placeholder, values } = this.props; - if (!stateSelectedValues) { - return placeholder; - } - if (stateSelectedValues && Array.isArray(stateSelectedValues) && !stateSelectedValues.length) { - return placeholder; - } - if (stateSelectedValues && !Array.isArray(stateSelectedValues) && !stateSelectedValues.id) { - return placeholder; - } - if (Array.isArray(stateSelectedValues) && multiple) { - return stateSelectedValues.reduce((prevValue, value, index) => prevValue + value.name + (index !== stateSelectedValues.length - 1 ? ", " : ""), ""); - } - if (values && values.length && !Array.isArray(stateSelectedValues) && !stateSelectedValues.name) { - return values.filter((value) => value.id === stateSelectedValues.id)[0].name; - } - return stateSelectedValues.name; - } - manageSelectedTags(index) { - const { max, allowCustomValues } = this.props; - const { stateSelectedValues } = this.state; - const filteredValues = this.filterValues(); - const value = { id: this.inputRef.current.value, name: this.inputRef.current.value }; - if (allowCustomValues === false && index === -1) { - return null; - } - const tempValue = filteredValues[index] || value; - const selectedIndex = this.getSelectedIndex(tempValue); - let selectedValues = {}; - this.inputRef.current.value = ""; - if (selectedIndex > -1 && this.isInInitialValues(tempValue)) { - selectedValues = this.removeSelectedValue(selectedIndex); - } else if (selectedIndex === -1) { - if (max && stateSelectedValues.length >= max) { - return selectedValues; - } - selectedValues = this.addSelectedValue(tempValue); - } - return selectedValues; - } - manageSelectedValues(index) { - const { stateSelectedValues } = this.state; - const { - multiple, - onChange, - max - } = this.props; - const filteredValues = this.filterValues(); - const tempSelectedValues = filteredValues[index]; - let selectedValues; - const selectedIndex = this.getSelectedIndex(tempSelectedValues); - if (tempSelectedValues && multiple) { - if (selectedIndex > -1) { - selectedValues = this.removeSelectedValue(selectedIndex); - } else { - if (max && stateSelectedValues.length >= max) { - return selectedValues; - } - selectedValues = this.addSelectedValue(filteredValues[index]); - } - } else { - selectedValues = { - stateSelectedValues: selectedIndex === -1 ? tempSelectedValues : { id: null } - }; - if (onChange && typeof onChange === "function") { - onChange(selectedIndex === -1 ? tempSelectedValues : null); - } - } - return selectedValues; - } - removeSelectedValue(index) { - const { stateSelectedValues } = this.state; - const { onChange } = this.props; - const tempStateSelectedValues = JSON.parse(JSON.stringify(stateSelectedValues)); - tempStateSelectedValues.splice(index, 1); - if (onChange && typeof onChange === "function") { - onChange(tempStateSelectedValues.length ? tempStateSelectedValues : null); - } - return { - stateSelectedValues: tempStateSelectedValues, - searchText: "" - }; - } - addSelectedValue(value) { - const { stateSelectedValues } = this.state; - const { onChange } = this.props; - const tempStateSelectedValues = JSON.parse(JSON.stringify(stateSelectedValues)); - tempStateSelectedValues.push(value); - if (onChange && typeof onChange === "function") { - onChange(tempStateSelectedValues.length ? tempStateSelectedValues : null); - } - return { - stateSelectedValues: tempStateSelectedValues, - searchText: "" - }; - } - isInInitialValues(value) { - const { values } = this.props; - let ok = false; - values.forEach((item) => { - if (value.id === item.id) { - ok = true; - } - }); - return ok; - } - filterValues() { - const { values, searchItem } = this.props; - if (!this.inputRef.current) { - return values; - } - const arr = values.filter( - (value) => searchItem ? searchItem(value, this.inputRef.current.value.toLowerCase()) : _Combobox.filterByName(value, this.inputRef.current.value.toLowerCase()) - ); - return arr; - } - bindEvents() { - document.addEventListener("mousedown", this.handleClickOutside); - } - unBindEvents() { - document.removeEventListener("mousedown", this.handleClickOutside); - } - handleItemsNavigation(e) { - const { tags } = this.props; - if (["ArrowDown", "ArrowUp"].indexOf(e.key) === -1) { - return; - } - const { cursor } = this.state; - const filteredValues = this.filterValues(); - let cursorNext; - e.preventDefault(); - if (e.key === "ArrowDown") { - if (cursor === -1 || cursor === filteredValues.length - 1) { - cursorNext = 0; - } else if (cursor < filteredValues.length - 1) { - cursorNext = cursor + 1; - } - } - if (e.key === "ArrowUp") { - if (cursor > 0) { - cursorNext = cursor - 1; - } else { - cursorNext = filteredValues.length - 1; - } - } - if (this.valuesListRef.current && cursorNext > 4) { - const scrollTop = (cursorNext - 4) * 38; - this.valuesListRef.current.scrollTop = !tags ? 60 + scrollTop : scrollTop; - } else if (this.valuesListRef.current) { - this.valuesListRef.current.scrollTop = 0; - } - this.setState((previousState) => Combobox_spreadProps(Combobox_spreadValues({}, previousState), { - opened: true, - cursor: cursorNext - })); - } - handleListItemClick(index) { - const clickedValue = this.props.values[index]; - if (clickedValue.disabled) - return; - const { multiple, tags } = this.props; - const methodName = tags ? "manageSelectedTags" : "manageSelectedValues"; - const tempState = Object.assign({}, this.state, this[methodName](index)); - this.setState((previousState) => { - if (!multiple && !tags) { - tempState.opened = false; - } - return Object.assign({}, previousState, tempState); - }); - } - handlePillRemoveClick(index) { - const { disabled } = this.props; - if (disabled) { - return; - } - const tempState = this.removeSelectedValue(index); - this.setState((previousState) => Object.assign({}, previousState, tempState)); - } - handleClickOutside(event) { - if (this.valuesListRef.current && !this.valuesListRef.current.contains(event.target) && this.comboboxRef.current && !this.comboboxRef.current.contains(event.target)) { - this.setState((previousState) => Object.assign({}, previousState, _Combobox.closeList())); - } - } - handleComboboxDropdownClick() { - const { disabled } = this.props; - if (disabled) { - return; - } - this.setState((previousState) => Object.assign({}, previousState, _Combobox.openList())); - } - reset() { - const { multiple, tags, value } = this.props; - this.setState({ - stateSelectedValues: getStateSelectedValues(multiple, tags, value) - }); - } - focusInput() { - if (this.inputRef.current) { - this.inputRef.current.focus(); - } - } - render() { - const { - CustomListComponent, - disabled, - id, - label, - note, - tags, - max, - placeholder - } = this.props; - const { - width, - opened, - searchText, - stateSelectedValues - } = this.state; - const filteredValues = this.filterValues(); - return /* @__PURE__ */ external_react_default().createElement( - external_react_namespaceObject.Fragment, - null, - /* @__PURE__ */ external_react_default().createElement("div", { className: this.getCssClasses() }, label ? /* @__PURE__ */ external_react_default().createElement("label", { htmlFor: id, style: this.getLabelStyles() }, label) : null, /* @__PURE__ */ external_react_default().createElement( - "div", - { - className: "tyk-form-control__wrapper", - style: this.getNonLabelWidth() - }, - /* @__PURE__ */ external_react_default().createElement( - "ul", - { - className: `tyk-form-control${tags ? " tyk-form-control--with-tags" : ""}`, - onClick: this.focusInput, - onKeyDown: () => { - }, - ref: this.comboboxRef - }, - tags ? /* @__PURE__ */ external_react_default().createElement(external_react_namespaceObject.Fragment, null, (stateSelectedValues || []).map((value, index) => /* @__PURE__ */ external_react_default().createElement("li", { className: "pill", key: value.id }, /* @__PURE__ */ external_react_default().createElement("button", { type: "button", onClick: this.handlePillRemoveClick.bind(this, index) }, /* @__PURE__ */ external_react_default().createElement(components_Icon, { type: "times" })), /* @__PURE__ */ external_react_default().createElement("span", null, value.name))), /* @__PURE__ */ external_react_default().createElement( - "li", - { - className: "tyk-combobox__search-box", - style: { - width: !stateSelectedValues || !stateSelectedValues.length ? "100%" : "auto" - } - }, - (max === void 0 || (stateSelectedValues == null ? void 0 : stateSelectedValues.length) < max) && /* @__PURE__ */ external_react_default().createElement((external_react_default()).Fragment, null, /* @__PURE__ */ external_react_default().createElement( - "input", - { - className: "tyk-form-control", - disabled, - onKeyPress: (e) => { - if (e.key === "Enter") { - e.preventDefault(); - } - }, - onKeyUp: this.onKeyUp, - onKeyDown: this.handleItemsNavigation, - placeholder: !stateSelectedValues || !stateSelectedValues.length ? placeholder : "", - ref: this.inputRef, - style: { - width: !stateSelectedValues || !stateSelectedValues.length ? "100%" : `${width}px` - } - } - ), /* @__PURE__ */ external_react_default().createElement( - "span", - { - ref: this.textRef, - style: { - visbility: "hidden", - position: "absolute", - top: "-9999px" - } - }, - searchText - )), - filteredValues.length ? /* @__PURE__ */ external_react_default().createElement( - components_Button, - { - className: "tyk-combobox--with-tags__button-down", - iconType: "arrow-down", - iconOnly: true, - onClick: this.handleComboboxDropdownClick - } - ) : null - )) : /* @__PURE__ */ external_react_default().createElement( - "li", - { - className: "tyk-combobox__placeholder", - onClick: this.handleComboboxDropdownClick, - onKeyDown: () => { - } - }, - this.getComboboxDisplayData(), - /* @__PURE__ */ external_react_default().createElement(components_Icon, { family: "tykon", type: "arrowdown" }) - ) - ), - note ? /* @__PURE__ */ external_react_default().createElement("p", { className: "tyk-form-control__help-block" }, note) : null, - this.getInputError() - )), - // eslint-disable-next-line no-nested-ternary - !CustomListComponent ? opened && filteredValues.length ? external_react_dom_default().createPortal( - /* @__PURE__ */ external_react_default().createElement( - "ul", - { - className: this.getComboboxListCssClass(), - ref: this.valuesListRef, - style: this.getStyles() - }, - !tags ? /* @__PURE__ */ external_react_default().createElement("li", { className: "combobox-search__container" }, /* @__PURE__ */ external_react_default().createElement( - "input", - { - autoFocus: opened, - className: "tyk-form-control", - onKeyUp: this.onKeyUp, - onKeyDown: this.handleItemsNavigation, - key: "searchInput", - ref: this.inputRef - } - )) : null, - filteredValues.map((value, index) => /* @__PURE__ */ external_react_default().createElement( - "li", - { - className: this.getListItemCssClasses(value, index), - onClick: this.handleListItemClick.bind(this, index), - onKeyDown: () => { - }, - key: value.id - }, - this.getSelectedIndex(value) > -1 ? /* @__PURE__ */ external_react_default().createElement(components_Icon, { type: "check" }) : null, - /* @__PURE__ */ external_react_default().createElement("span", null, " ", value.name) - )) - ), - document.querySelector("body") - ) : null : /* @__PURE__ */ external_react_default().createElement( - CustomListComponent, - { - ref: this.valuesListRef, - className: this.getComboboxListCssClass(), - getListItemCssClasses: this.getListItemCssClasses.bind(this), - getSelectedIndex: this.getSelectedIndex.bind(this), - filteredValues, - handleListItemClick: this.handleListItemClick.bind(this) - } - ) - ); - } -}; -Combobox_publicField(_Combobox, "propTypes", { - allowCustomValues: (external_prop_types_default()).bool, - CustomListComponent: (external_prop_types_default()).elementType, - searchItem: (external_prop_types_default()).func, - disabled: (external_prop_types_default()).bool, - error: (external_prop_types_default()).string, - id: (external_prop_types_default()).string, - label: external_prop_types_default().oneOfType([ - external_prop_types_default().arrayOf((external_prop_types_default()).node), - (external_prop_types_default()).node, - (external_prop_types_default()).element, - (external_prop_types_default()).func, - (external_prop_types_default()).string - ]), - labelwidth: (external_prop_types_default()).string, - multiple: (external_prop_types_default()).bool, - max: (external_prop_types_default()).number, - note: external_prop_types_default().oneOfType([ - (external_prop_types_default()).node, - (external_prop_types_default()).element, - (external_prop_types_default()).string - ]), - onChange: (external_prop_types_default()).func, - placeholder: (external_prop_types_default()).string, - tags: (external_prop_types_default()).bool, - theme: (external_prop_types_default()).string, - value: external_prop_types_default().oneOfType([ - (external_prop_types_default()).string, - external_prop_types_default().instanceOf(Object), - external_prop_types_default().instanceOf(Array) - ]), - values: external_prop_types_default().instanceOf(Array) -}); -Combobox_publicField(_Combobox, "defaultProps", { - allowCustomValues: true -}); -let Combobox = _Combobox; - - -;// CONCATENATED MODULE: ./src/form/components/Combobox2/js/Value.js - - - -function Value(props) { - const { - value, - max, - tags, - tagSeparators, - addTagOnBlur, - placeholder, - disabled, - renderValue, - valueOverflow, - focus, - onMessage: sendMessage, - readOnly - } = props; - const INPUT_MIN_WIDTH = 60; - const inputRef = (0,external_react_namespaceObject.useRef)(null); - const dummyElementRef = (0,external_react_namespaceObject.useRef)(null); - const [inputValue, setInputValue] = (0,external_react_namespaceObject.useState)(""); - const [inputWidth, setInputWidth] = (0,external_react_namespaceObject.useState)(`${INPUT_MIN_WIDTH + 10}px`); - function entryFieldOnChange(val) { - if (tagSeparators.some((ts) => val.slice(-1) === ts)) - return; - const dummy = dummyElementRef.current; - dummy.innerHTML = val; - setInputWidth(`${Math.max(dummy.clientWidth, INPUT_MIN_WIDTH) + 10}px`); - setInputValue(val); - sendMessage("tag.input.change", val); - } - function entryFieldOnKeyDown(key, val) { - if (!tags) - return; - if (val === "" && key === "Backspace" && value.length) { - sendMessage("tag.remove", value[value.length - 1].id); - return; - } - if (key === "Enter") { - sendMessage("tag.input.enter", val); - entryFieldOnChange(""); - return; - } - if (key === "ArrowUp") { - sendMessage("tag.input.arrowUp"); - return; - } - if (key === "ArrowDown") { - sendMessage("tag.input.arrowDown"); - return; - } - if (key === "Escape") { - sendMessage("tag.input.escape"); - return; - } - if (tagSeparators.includes(key)) { - sendMessage("tag.add", val); - entryFieldOnChange(""); - } - } - function triggerAction() { - sendMessage("text-value.click"); - } - function textValue(val, isPlaceholder = false) { - if (readOnly) - return val || "-"; - const classes = [ - "tyk-combobox2__text-value", - `overflow-${valueOverflow}`, - isPlaceholder && "is-placeholder" - ].filter(Boolean).join(" "); - return /* @__PURE__ */ external_react_default().createElement( - "span", - { - className: classes, - title: valueOverflow === "single" ? val : void 0, - role: "none", - tabIndex: disabled ? "-1" : "0", - onClick: triggerAction, - onKeyPress: triggerAction - }, - val - ); - } - function renderCustomValue(v) { - const config = { - tags, - tagSeparators, - placeholder, - disabled, - renderValue, - sendMessage - }; - return renderValue(v, config); - } - function renderTag(v) { - if (renderValue) - return renderCustomValue(v); - return /* @__PURE__ */ external_react_default().createElement( - components_Pill, - { - key: v.id, - theme: "combobox" - }, - /* @__PURE__ */ external_react_default().createElement( - "button", - { - type: "button", - onClick: (e) => { - e.stopPropagation(); - sendMessage("tag.remove", v.id); - } - }, - /* @__PURE__ */ external_react_default().createElement(components_Icon, { type: "times" }) - ), - /* @__PURE__ */ external_react_default().createElement("span", { title: v.name }, v.name) - ); - } - function getTags() { - return /* @__PURE__ */ external_react_default().createElement((external_react_default()).Fragment, null, value.map(renderTag), value.length < max && /* @__PURE__ */ external_react_default().createElement((external_react_default()).Fragment, null, /* @__PURE__ */ external_react_default().createElement( - "input", - { - className: "tyk-combobox2__entry-field", - ref: inputRef, - placeholder: value.length ? "" : placeholder, - disabled, - value: inputValue, - style: { width: value.length ? inputWidth : "100%" }, - onChange: (e) => entryFieldOnChange(e.target.value), - onKeyDown: (e) => { - if (e.key === "Enter") - e.preventDefault(); - entryFieldOnKeyDown(e.key, e.target.value); - }, - onFocus: () => sendMessage("tag.input.focus"), - onBlur: (e) => { - sendMessage("tag.input.blur", e.target.value); - if (addTagOnBlur) - entryFieldOnChange(""); - } - } - ), /* @__PURE__ */ external_react_default().createElement( - "span", - { - ref: dummyElementRef, - style: { - visbility: "hidden", - position: "absolute", - top: "-9999px" - } - } - ))); - } - (0,external_react_namespaceObject.useEffect)(() => { - if (focus && inputRef.current) - inputRef.current.focus(); - }, [focus]); - if (readOnly) { - return /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-form-control--readonly" }, textValue(value.map((v) => v.name).join(", "))); - } - if (tags) - return getTags(); - if (renderValue) { - return value.length === 0 ? textValue(placeholder, true) : value.map(renderCustomValue); - } - return value.length === 0 ? textValue(placeholder, true) : textValue(value.map((v) => v.name).join(", ")); -} -/* harmony default export */ const js_Value = (Value); - -;// CONCATENATED MODULE: ./src/form/components/Combobox2/js/List.js - - - -function List_List(props) { - const { - listRef, - tags, - values, - searchValue, - activeItem, - onMessage: sendMessage, - renderListItem, - selectAll, - showSearch - } = props; - (0,external_react_namespaceObject.useEffect)(() => { - if (!listRef.current) - return; - const activeElement = listRef.current.querySelector(".active"); - if (activeElement) - activeElement.scrollIntoView({ block: "end" }); - }, [activeItem]); - function renderItem(item) { - if (renderListItem) { - return renderListItem(item, { - tags, - searchValue, - sendMessage, - activeItem - }); - } - return /* @__PURE__ */ external_react_default().createElement( - "li", - { - key: item.id, - title: item.name, - className: [ - item.disabled && "disabled", - activeItem && item.id === activeItem.id && "active" - ].filter(Boolean).join(" "), - onClick: () => !item.disabled && sendMessage("value.select", { item }), - onKeyPress: () => { - } - }, - item.selected && /* @__PURE__ */ external_react_default().createElement(components_Icon, { type: "check" }), - /* @__PURE__ */ external_react_default().createElement("span", { className: "item-name" }, item.name) - ); - } - function renderSelectAllOption() { - var _a, _b, _c; - const isAllSelected = values.every((v) => v.selected); - const isNoneSelected = values.every((v) => !v.selected); - const label = (_a = selectAll == null ? void 0 : selectAll.label) != null ? _a : "Select All"; - const mode = (_b = selectAll == null ? void 0 : selectAll.mode) != null ? _b : "select"; - const show = (_c = selectAll == null ? void 0 : selectAll.show) != null ? _c : "always"; - const render = selectAll == null ? void 0 : selectAll.render; - const shouldRenderOption = show === "always" || (mode === "select" ? !isAllSelected : !isNoneSelected); - if (!shouldRenderOption) - return null; - if (render) { - return render({ - label, - mode, - show, - isAllSelected, - isNoneSelected - }, sendMessage); - } - return /* @__PURE__ */ external_react_default().createElement( - "li", - { - onClick: () => sendMessage("value.select-all", mode === "select" ? !isAllSelected : isNoneSelected), - onKeyDown: () => { - } - }, - (mode === "select" ? isAllSelected : isNoneSelected) && /* @__PURE__ */ external_react_default().createElement(components_Icon, { type: "check" }), - label - ); - } - return /* @__PURE__ */ external_react_default().createElement((external_react_default()).Fragment, null, !tags && showSearch && /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-combobox2__combobox-search" }, /* @__PURE__ */ external_react_default().createElement( - "input", - { - autoFocus: true, - className: "tyk-form-control", - value: searchValue, - onChange: (e) => sendMessage("search.change", e.target.value), - onKeyDown: (e) => { - if (e.key === "Escape") - sendMessage("search.escape"); - if (e.key === "ArrowUp") - sendMessage("search.arrowUp"); - if (e.key === "ArrowDown") - sendMessage("search.arrowDown"); - if (e.key === "Enter") - sendMessage("search.enter"); - } - } - )), values.length > 0 && /* @__PURE__ */ external_react_default().createElement("ul", { ref: listRef, className: "tyk-combobox2__combobox-list" }, Boolean(selectAll) && renderSelectAllOption(), values.map(renderItem))); -} -List_List.propTypes = { - listRef: external_prop_types_default().instanceOf(Object), - tags: (external_prop_types_default()).bool, - values: external_prop_types_default().instanceOf(Array), - searchValue: (external_prop_types_default()).string, - activeItem: external_prop_types_default().instanceOf(Object), - onMessage: (external_prop_types_default()).func, - renderListItem: (external_prop_types_default()).func, - selectAll: external_prop_types_default().oneOfType([ - (external_prop_types_default()).bool, - external_prop_types_default().shape({ - label: external_prop_types_default().oneOfType([ - external_prop_types_default().arrayOf((external_prop_types_default()).node), - (external_prop_types_default()).node, - (external_prop_types_default()).element, - (external_prop_types_default()).func, - (external_prop_types_default()).string - ]), - mode: external_prop_types_default().oneOf(["select", "unselect"]), - show: external_prop_types_default().oneOf(["always", "notSameState"]), - render: (external_prop_types_default()).func - }) - ]), - showSearch: (external_prop_types_default()).bool -}; -/* harmony default export */ const js_List = (List_List); - -;// CONCATENATED MODULE: ./src/form/components/Combobox2/index.js -var Combobox2_defProp = Object.defineProperty; -var Combobox2_defProps = Object.defineProperties; -var Combobox2_getOwnPropDescs = Object.getOwnPropertyDescriptors; -var Combobox2_getOwnPropSymbols = Object.getOwnPropertySymbols; -var Combobox2_hasOwnProp = Object.prototype.hasOwnProperty; -var Combobox2_propIsEnum = Object.prototype.propertyIsEnumerable; -var Combobox2_defNormalProp = (obj, key, value) => key in obj ? Combobox2_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var Combobox2_spreadValues = (a, b) => { - for (var prop in b || (b = {})) - if (Combobox2_hasOwnProp.call(b, prop)) - Combobox2_defNormalProp(a, prop, b[prop]); - if (Combobox2_getOwnPropSymbols) - for (var prop of Combobox2_getOwnPropSymbols(b)) { - if (Combobox2_propIsEnum.call(b, prop)) - Combobox2_defNormalProp(a, prop, b[prop]); - } - return a; -}; -var Combobox2_spreadProps = (a, b) => Combobox2_defProps(a, Combobox2_getOwnPropDescs(b)); -var Combobox2_objRest = (source, exclude) => { - var target = {}; - for (var prop in source) - if (Combobox2_hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) - target[prop] = source[prop]; - if (source != null && Combobox2_getOwnPropSymbols) - for (var prop of Combobox2_getOwnPropSymbols(source)) { - if (exclude.indexOf(prop) < 0 && Combobox2_propIsEnum.call(source, prop)) - target[prop] = source[prop]; - } - return target; -}; - - - - - - -function normalizeValue(value, values) { - let v = value; - if (typeof value === "string") - v = { id: value, name: value }; - else if (!value.hasOwnProperty("name")) - v = Combobox2_spreadProps(Combobox2_spreadValues({}, value), { name: value.id }); - if (!values) - return v; - const existingVal = values.find((ev) => ev.id === v.id); - return existingVal ? Combobox2_spreadValues(Combobox2_spreadValues({}, v), existingVal) : v; -} -function getValueFromProp(value, values) { - if (!value) - return []; - if (Array.isArray(value)) - return value.map((v) => normalizeValue(v, values)); - return [normalizeValue(value, values)]; -} -function Combobox2(_a) { - var _b = _a, { - value: propValue, - values: propValues = [], - valueOverflow = "single", - label = "", - labelwidth, - tags = false, - tagSeparators = [" ", "Enter"], - addTagOnBlur = false, - max: maxProp, - multiple = false, - placeholder = "", - theme, - note = "", - error = "", - disabled = false, - readOnly = false, - allowCustomValues = true, - searchItem: matchItemFn, - renderValue, - renderListItem, - renderList: renderListProp, - CustomListComponent, - onBeforeChange = () => true, - onChange = () => { - }, - floatingContainerConfig, - expandMode, - infiniteScrollerConfig, - displayDropdownTrigger = true, - selectAll, - closeOnSelect, - showSearch = false, - required = false, - validateOnChange = () => { - }, - wrapperClassName = "" - } = _b, restProps = Combobox2_objRest(_b, [ - "value", - "values", - "valueOverflow", - "label", - "labelwidth", - "tags", - "tagSeparators", - "addTagOnBlur", - "max", - "multiple", - "placeholder", - "theme", - "note", - "error", - "disabled", - "readOnly", - "allowCustomValues", - "searchItem", - "renderValue", - "renderListItem", - "renderList", - "CustomListComponent", - "onBeforeChange", - "onChange", - "floatingContainerConfig", - "expandMode", - "infiniteScrollerConfig", - "displayDropdownTrigger", - "selectAll", - "closeOnSelect", - "showSearch", - "required", - "validateOnChange", - "wrapperClassName" - ]); - const max = multiple ? Infinity : maxProp || (tags ? Infinity : 1); - const renderList = CustomListComponent ? (values2, { sendMessage }) => /* @__PURE__ */ external_react_default().createElement( - CustomListComponent, - { - filteredValues: values2, - handleListItemClick: (index) => sendMessage("value.select", { item: values2[index] }), - getListItemCssClasses: () => { - } - } - ) : renderListProp; - const rootRef = (0,external_react_namespaceObject.useRef)(null); - const comboboxControlRef = (0,external_react_namespaceObject.useRef)(null); - const dropdownRef = (0,external_react_namespaceObject.useRef)(null); - const listRef = (0,external_react_namespaceObject.useRef)(null); - const [value, setValue] = (0,external_react_namespaceObject.useState)(getValueFromProp(propValue, propValues)); - const [values, setValues] = (0,external_react_namespaceObject.useState)(propValues.map((v) => normalizeValue(v))); - const [searchValue, setSearchValue] = (0,external_react_namespaceObject.useState)(""); - const [activeItem, setActiveItem] = (0,external_react_namespaceObject.useState)(null); - const [isOpened, setIsOpened] = (0,external_react_namespaceObject.useState)(false); - const [valuesExpanded, setValuesExpanded] = (0,external_react_namespaceObject.useState)(false); - const [localValidationError, setLocalValidationError] = (0,external_react_namespaceObject.useState)(""); - function getThemeClasses() { - const themes = theme ? theme.split(" ") : []; - return themes.map((iTheme) => `tyk-form-group--${iTheme}`); - } - function getCssClasses() { - return [ - wrapperClassName, - "tyk-form-group", - "tyk-combobox2", - ...getThemeClasses(), - (error || localValidationError) && "has-error", - labelwidth && "tyk-form-group--label-has-width", - disabled && "disabled", - expandMode && "is-expand-mode" - ].filter(Boolean).join(" "); - } - function getFilteredValues() { - const defaultFn = (v, s) => { - var _a2, _b2; - return (_b2 = (_a2 = v == null ? void 0 : v.name) == null ? void 0 : _a2.toLowerCase()) == null ? void 0 : _b2.includes(s); - }; - const fn = matchItemFn || defaultFn; - const filteredValues2 = values.filter((v) => fn(v, searchValue.toLowerCase())); - return filteredValues2; - } - function openDropdown() { - setIsOpened(true); - } - function closeDropdown() { - setIsOpened(false); - if (!tags) - updateSearchValue(""); - setActiveItem(null); - } - function updateSearchValue(newSearchValue) { - setSearchValue(newSearchValue); - if (activeItem && getFilteredValues().every((fv) => fv.id !== activeItem.id)) { - setActiveItem(null); - } - if (newSearchValue && !isOpened) - openDropdown(); - } - function isValidValue(newValues, lastValue) { - const localError = validateOnChange(newValues, lastValue); - setLocalValidationError(localError); - return localError === void 0; - } - function updateValue(newValues) { - setValue(newValues); - onChange(max === 1 && !tags ? newValues[0] || null : newValues); - } - function addTag(val) { - if (!val) - return; - if (value.length >= max) - return; - if (value.some(({ name }) => name === val)) - return; - const listValueIndex = values.findIndex((lv) => lv.name === val); - let newValue; - let finalValue = [...value]; - let selectedValues; - if (listValueIndex === -1) { - if (allowCustomValues) { - newValue = { id: val, name: val }; - finalValue = [...value, newValue]; - } - } else { - selectedValues = [ - ...values.slice(0, listValueIndex), - Combobox2_spreadProps(Combobox2_spreadValues({}, values[listValueIndex]), { selected: true }), - ...values.slice(listValueIndex + 1) - ]; - newValue = values[listValueIndex]; - finalValue = [...value, values[listValueIndex]]; - } - if (isValidValue(finalValue, newValue) && onBeforeChange(value, finalValue)) { - if (selectedValues) { - setValues(selectedValues); - } - updateValue(finalValue); - } - } - function removeTag(id) { - if (required && max === 1) - return; - const listValueIndex = values.findIndex((lv) => lv.id === id); - const newValue = value.filter((v) => v.id !== id); - if (!onBeforeChange(value, newValue)) - return; - if (listValueIndex !== -1) { - setValues([ - ...values.slice(0, listValueIndex), - Combobox2_spreadProps(Combobox2_spreadValues({}, values[listValueIndex]), { selected: false }), - ...values.slice(listValueIndex + 1) - ]); - } - updateValue(newValue); - } - function selectValue({ id }) { - const val = values.find((v) => v.id === id); - let finalValue = value; - let selectedValues = values; - if (val.selected) { - if (!required || max !== 1) { - finalValue = value.filter((v) => v.id !== val.id); - selectedValues = values.map((v) => v.id === val.id ? Combobox2_spreadProps(Combobox2_spreadValues({}, v), { selected: false }) : v); - } - } else if (value.length < max) { - finalValue = [...value, val]; - selectedValues = values.map((v) => v.id === val.id ? Combobox2_spreadProps(Combobox2_spreadValues({}, v), { selected: true }) : v); - } else if (max === 1) { - finalValue = [val]; - selectedValues = values.map((v) => Combobox2_spreadProps(Combobox2_spreadValues({}, v), { selected: v.id === val.id })); - } - if (isValidValue(finalValue, val) && onBeforeChange(value, finalValue)) { - updateValue(finalValue); - setValues(selectedValues); - } - if (max === 1 || closeOnSelect) { - closeDropdown(); - } - } - function selectAllValues(selected) { - if (values.length > max) - return; - const newValue = selected ? [...values] : []; - if (!onBeforeChange(value, newValue)) - return; - updateValue(newValue); - setValues(values.map((v) => Combobox2_spreadProps(Combobox2_spreadValues({}, v), { selected }))); - if (closeOnSelect) - closeDropdown(); - } - function moveUpActiveItem() { - const visibleItems = getFilteredValues().filter((v) => !v.disabled); - if (visibleItems.length === 0) - return; - if (activeItem === null || visibleItems.length === 1) { - setActiveItem(visibleItems[visibleItems.length - 1]); - return; - } - const activeIndex = visibleItems.findIndex((v) => v.id === activeItem.id); - setActiveItem(visibleItems[activeIndex > 0 ? activeIndex - 1 : visibleItems.length - 1]); - } - function moveDownActiveItem() { - const visibleItems = getFilteredValues().filter((v) => !v.disabled); - if (visibleItems.length === 0) - return; - if (activeItem === null || visibleItems.length === 1) { - setActiveItem(visibleItems[0]); - return; - } - const activeIndex = visibleItems.findIndex((v) => v.id === activeItem.id); - setActiveItem(visibleItems[activeIndex < visibleItems.length - 1 ? activeIndex + 1 : 0]); - } - function executeTriggerAction() { - if (expandMode) { - setValuesExpanded(!valuesExpanded); - } else { - openDropdown(); - } - } - function handleDocumentClick(e) { - const isClickInside = rootRef.current && rootRef.current.contains(e.target) || dropdownRef.current && dropdownRef.current.contains(e.target); - if (!isClickInside) { - closeDropdown(); - } - } - function onClickCapture(e) { - if (!disabled) - return; - if (!expandMode) { - e.stopPropagation(); - return; - } - const triggerElement = rootRef.current.querySelector(".tyk-combobox2__values-container-trigger"); - if (!triggerElement) - return; - const isClickOnTrigger = triggerElement === e.target || triggerElement.contains(e.target); - if (!isClickOnTrigger) - e.stopPropagation(); - } - function onTagMessage(message, data) { - if (message === "add") { - addTag(data); - updateSearchValue(""); - } - if (message === "remove") - removeTag(data); - if (message === "input.change") - updateSearchValue(data); - if (message === "input.enter") { - if (activeItem) { - selectValue(activeItem); - } else if (tagSeparators.includes("Enter")) { - addTag(data); - updateSearchValue(""); - } - } - if (message === "input.arrowUp") { - openDropdown(); - moveUpActiveItem(); - } - if (message === "input.arrowDown") { - openDropdown(); - moveDownActiveItem(); - } - if (message === "input.escape") - closeDropdown(); - if (message === "input.blur" && addTagOnBlur) { - addTag(data); - updateSearchValue(""); - } - if (message === "input.focus") { - openDropdown(); - } - } - function onMessage(message, data) { - if (message.startsWith("tag.")) - onTagMessage(message.slice(4), data); - if (message === "value.select") - selectValue(data.item); - if (message === "value.select-all") - selectAllValues(data); - if (message === "text-value.click") - openDropdown(); - if (message === "search.change") - updateSearchValue(data); - if (message === "search.escape") - closeDropdown(); - if (message === "search.arrowUp") - moveUpActiveItem(); - if (message === "search.arrowDown") - moveDownActiveItem(); - if (message === "search.enter") { - if (activeItem) - selectValue(activeItem); - } - } - (0,external_react_namespaceObject.useEffect)(() => { - window.addEventListener("click", handleDocumentClick, true); - return () => window.removeEventListener("click", handleDocumentClick, true); - }, []); - (0,external_react_namespaceObject.useEffect)(() => { - if (propValues.length) { - const newValues = propValues.map((v) => Combobox2_spreadProps(Combobox2_spreadValues({}, normalizeValue(v)), { - selected: value.some((sv) => sv.id === v.id) - })); - setValues(newValues); - setValue((val) => val.map((v) => newValues.find((nv) => nv.id === v.id) || v)); - } else if (values.length) { - setValues([]); - } - }, [propValues]); - (0,external_react_namespaceObject.useEffect)(() => { - const newValue = getValueFromProp(propValue, values); - setValue(newValue); - setValues((vals) => vals.map((v) => Combobox2_spreadProps(Combobox2_spreadValues({}, normalizeValue(v)), { - selected: newValue.some((nv) => nv.id === v.id) - }))); - }, [propValue]); - (0,external_react_namespaceObject.useEffect)(() => { - if (!expandMode) - return () => { - }; - const valuesElement = comboboxControlRef.current.querySelector(".tyk-combobox2__current-values"); - const updateScroll = () => { - valuesElement.scrollTop = valuesElement.scrollHeight; - }; - const mobserver = new MutationObserver(updateScroll); - const robserver = new ResizeObserver(updateScroll); - mobserver.observe(valuesElement, { attributes: true, childList: true, subtree: true }); - robserver.observe(valuesElement); - return () => { - mobserver.disconnect(); - robserver.disconnect(); - }; - }); - const filteredValues = getFilteredValues(); - const currentValuesClasses = [ - "tyk-combobox2__current-values", - expandMode && "expand-mode", - `tyk-combobox2__current-values--${valuesExpanded ? "expanded" : "collapsed"}` - ].join(" "); - return /* @__PURE__ */ external_react_default().createElement( - "div", - Combobox2_spreadProps(Combobox2_spreadValues({ - ref: rootRef, - tabIndex: disabled ? "-1" : "0", - onClickCapture - }, restProps), { - className: getCssClasses() - }), - label && /* @__PURE__ */ external_react_default().createElement("label", { style: { flexBasis: labelwidth || "auto" } }, label), - !readOnly && /* @__PURE__ */ external_react_default().createElement( - "div", - { - className: "tyk-form-control__wrapper", - style: { flexBasis: `calc(100% - ${labelwidth} - 20px)` } - }, - /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-form-control", ref: comboboxControlRef }, /* @__PURE__ */ external_react_default().createElement( - "div", - { - className: currentValuesClasses, - onClick: openDropdown, - role: "none" - }, - /* @__PURE__ */ external_react_default().createElement( - js_Value, - { - value, - max, - tags, - tagSeparators, - addTagOnBlur, - allowCustomValues, - placeholder, - disabled, - valueOverflow, - renderValue, - focus: isOpened, - onMessage, - readOnly - } - ) - ), displayDropdownTrigger && /* @__PURE__ */ external_react_default().createElement( - "div", - { - className: `tyk-combobox2__values-container-trigger${valuesExpanded ? " tyk-combobox2__values-container-trigger--expanded" : ""}`, - role: "button", - tabIndex: disabled ? -1 : 0, - onClick: executeTriggerAction, - onKeyPress: executeTriggerAction - }, - expandMode ? /* @__PURE__ */ external_react_default().createElement(components_Icon, { type: valuesExpanded ? "compress-arrows-alt" : "expand-arrows-alt" }) : /* @__PURE__ */ external_react_default().createElement(components_Icon, { family: "tykon", type: "arrowdown" }) - )), - isOpened && (!tags || filteredValues.length > 0) && /* @__PURE__ */ external_react_default().createElement( - components_FloatingContainer, - Combobox2_spreadProps(Combobox2_spreadValues({ - element: comboboxControlRef, - size: "matchElement", - className: `tyk-combobox2__combobox-dropdown tyk-form-group ${getThemeClasses().join(" ")}`, - ref: dropdownRef, - displayAxis: "vertical" - }, floatingContainerConfig), { - infiniteScrollerConfig - }), - renderList ? renderList(filteredValues, { - tags, - searchValue, - activeItem, - listRef, - sendMessage: onMessage - }) : /* @__PURE__ */ external_react_default().createElement( - js_List, - { - listRef, - showSearch, - values: filteredValues, - tags, - searchValue, - activeItem, - onMessage, - renderListItem, - selectAll - } - ) - ), - note && /* @__PURE__ */ external_react_default().createElement("p", { className: "tyk-form-control__help-block" }, note), - (error && error !== "true" && error !== "false" || Boolean(localValidationError)) && /* @__PURE__ */ external_react_default().createElement("p", { className: "tyk-form-control__error-message" }, error || localValidationError) - ), - readOnly && /* @__PURE__ */ external_react_default().createElement("div", null, /* @__PURE__ */ external_react_default().createElement( - js_Value, - { - value, - tags, - renderValue, - readOnly - } - )) - ); -} -Combobox2.propTypes = { - /** If `true` it allows entering values that are not in the list. */ - allowCustomValues: (external_prop_types_default()).bool, - /** Alias for `renderList` - * used for backwards compatibility with the old Combobox component. */ - CustomListComponent: (external_prop_types_default()).elementType, - /** A function used for filtering elements displayed in the list when typing in. */ - searchItem: (external_prop_types_default()).func, - /** A custom component that will be used to display a value. */ - renderValue: (external_prop_types_default()).func, - /** A custom component that will be used to display an item in the dropdown list. */ - renderListItem: (external_prop_types_default()).func, - /** A custom component that will be used to display the entire content of the dropdown. */ - renderList: (external_prop_types_default()).func, - disabled: (external_prop_types_default()).bool, - /** hides the UI form element and displayes just the value as text */ - readOnly: (external_prop_types_default()).bool, - error: (external_prop_types_default()).string, - label: external_prop_types_default().oneOfType([ - external_prop_types_default().arrayOf((external_prop_types_default()).node), - (external_prop_types_default()).node, - (external_prop_types_default()).element, - (external_prop_types_default()).func, - (external_prop_types_default()).string - ]), - labelwidth: (external_prop_types_default()).string, - /** The maximum number of values that can be selected/added. */ - max: (external_prop_types_default()).number, - /** Shorthand for max=Infinity */ - multiple: (external_prop_types_default()).bool, - note: external_prop_types_default().oneOfType([ - (external_prop_types_default()).node, - (external_prop_types_default()).element, - (external_prop_types_default()).string - ]), - /** - * Callback called before changing the value of the component. - * The value change will succeed only if the callback's return value is truthy. - * The callback is called with two arguments: 1) the previous value, 2) the next value */ - onBeforeChange: (external_prop_types_default()).func, - onChange: (external_prop_types_default()).func, - placeholder: (external_prop_types_default()).string, - /** Enables the display of values as `Pill` components that can be - * removed without opening the dropdown. */ - tags: (external_prop_types_default()).bool, - /** A list of characters that will trigger the creation of a tag when typed. */ - tagSeparators: external_prop_types_default().arrayOf((external_prop_types_default()).string), - /** If set to true a tag will be created whenever the component loses focus - * and there is something typed in. */ - addTagOnBlur: (external_prop_types_default()).bool, - theme: (external_prop_types_default()).string, - /** The value of the component. It can be a string, an array, - * or an object with an `id` property. */ - value: external_prop_types_default().oneOfType([ - (external_prop_types_default()).string, - external_prop_types_default().instanceOf(Array), - external_prop_types_default().instanceOf(Object) - ]), - /** An array of selectable values. */ - values: external_prop_types_default().instanceOf(Array), - /** Config object passed to the internal floating container component. */ - floatingContainerConfig: external_prop_types_default().instanceOf(Object), - /** If set to `single` it will display the values on a single line - * with an ellipsis at the end. */ - valueOverflow: external_prop_types_default().oneOf(["single", "multiple"]), - /** - * If set to `true` whenever the user clicks on the dropdown trigger - * the selected values container - * will expand to show all selected values instead of opening the dropdown. - */ - expandMode: (external_prop_types_default()).bool, - /** Config object passed to the internal infinite scroller component. */ - infiniteScrollerConfig: external_prop_types_default().instanceOf(Object), - /** Toggles the display of the dropdown trigger. */ - displayDropdownTrigger: (external_prop_types_default()).bool, - /** - * If a boolean it will toggle the select all functionality from the dropdown. - * It can also be an object with the shape `{ label, show, mode, render }`. - * label - A string displayed as the select all option - * show - It can be one of `['always', 'notSameState']`. - * `always` means the option will always be displayed. - * `notSameState` means it will be displayed only if the list items are - * not all with the same state (depending on the `mode` value) - * mode - It can be one of `['select', 'unselect']` and makes sense only - * when the `show` property is `notSameState` - * `select` means the select all option will only be displayed if not all - * items are selected - * `unselect` means the option will be displayed if no items are selected - */ - selectAll: external_prop_types_default().oneOfType([ - (external_prop_types_default()).bool, - external_prop_types_default().shape({ - label: external_prop_types_default().oneOfType([ - external_prop_types_default().arrayOf((external_prop_types_default()).node), - (external_prop_types_default()).node, - (external_prop_types_default()).element, - (external_prop_types_default()).func, - (external_prop_types_default()).string - ]), - mode: external_prop_types_default().oneOf(["select", "unselect"]), - show: external_prop_types_default().oneOf(["always", "notSameState"]), - render: (external_prop_types_default()).func - }) - ]), - /** It `true` the dropdown will close after selecting a value. */ - closeOnSelect: (external_prop_types_default()).bool, - /** Toggles the display of the search input from the dropdown. */ - showSearch: (external_prop_types_default()).bool, - /** If it is required and can only select one value once you have something - * selected you will not be able to deselect */ - required: (external_prop_types_default()).bool, - /** Validates newly added value before adding it to the selected values. - * Returns an error string in case of error otherwise it returns undefined - */ - validateOnChange: (external_prop_types_default()).func, - wrapperClassName: (external_prop_types_default()).string -}; -/* harmony default export */ const components_Combobox2 = (Combobox2); - -;// CONCATENATED MODULE: external "flatpickr" -const external_flatpickr_namespaceObject = require("flatpickr"); -var external_flatpickr_default = /*#__PURE__*/__webpack_require__.n(external_flatpickr_namespaceObject); -// EXTERNAL MODULE: ./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js -var injectStylesIntoStyleTag = __webpack_require__(379); -var injectStylesIntoStyleTag_default = /*#__PURE__*/__webpack_require__.n(injectStylesIntoStyleTag); -// EXTERNAL MODULE: ./node_modules/style-loader/dist/runtime/styleDomAPI.js -var styleDomAPI = __webpack_require__(795); -var styleDomAPI_default = /*#__PURE__*/__webpack_require__.n(styleDomAPI); -// EXTERNAL MODULE: ./node_modules/style-loader/dist/runtime/insertBySelector.js -var insertBySelector = __webpack_require__(569); -var insertBySelector_default = /*#__PURE__*/__webpack_require__.n(insertBySelector); -// EXTERNAL MODULE: ./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js -var setAttributesWithoutAttributes = __webpack_require__(565); -var setAttributesWithoutAttributes_default = /*#__PURE__*/__webpack_require__.n(setAttributesWithoutAttributes); -// EXTERNAL MODULE: ./node_modules/style-loader/dist/runtime/insertStyleElement.js -var insertStyleElement = __webpack_require__(216); -var insertStyleElement_default = /*#__PURE__*/__webpack_require__.n(insertStyleElement); -// EXTERNAL MODULE: ./node_modules/style-loader/dist/runtime/styleTagTransform.js -var styleTagTransform = __webpack_require__(589); -var styleTagTransform_default = /*#__PURE__*/__webpack_require__.n(styleTagTransform); -// EXTERNAL MODULE: ./node_modules/css-loader/dist/cjs.js!./node_modules/flatpickr/dist/flatpickr.min.css -var flatpickr_min = __webpack_require__(821); -;// CONCATENATED MODULE: ./node_modules/flatpickr/dist/flatpickr.min.css - - - - - - - - - - - -var options = {}; - -options.styleTagTransform = (styleTagTransform_default()); -options.setAttributes = (setAttributesWithoutAttributes_default()); - - options.insert = insertBySelector_default().bind(null, "head"); - -options.domAPI = (styleDomAPI_default()); -options.insertStyleElement = (insertStyleElement_default()); - -var update = injectStylesIntoStyleTag_default()(flatpickr_min/* default */.Z, options); - - - - - /* harmony default export */ const dist_flatpickr_min = (flatpickr_min/* default */.Z && flatpickr_min/* default */.Z.locals ? flatpickr_min/* default */.Z.locals : undefined); - -;// CONCATENATED MODULE: ./src/form/components/DatePicker/index.js -var DatePicker_defProp = Object.defineProperty; -var DatePicker_defProps = Object.defineProperties; -var DatePicker_getOwnPropDescs = Object.getOwnPropertyDescriptors; -var DatePicker_getOwnPropSymbols = Object.getOwnPropertySymbols; -var DatePicker_hasOwnProp = Object.prototype.hasOwnProperty; -var DatePicker_propIsEnum = Object.prototype.propertyIsEnumerable; -var DatePicker_defNormalProp = (obj, key, value) => key in obj ? DatePicker_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var DatePicker_spreadValues = (a, b) => { - for (var prop in b || (b = {})) - if (DatePicker_hasOwnProp.call(b, prop)) - DatePicker_defNormalProp(a, prop, b[prop]); - if (DatePicker_getOwnPropSymbols) - for (var prop of DatePicker_getOwnPropSymbols(b)) { - if (DatePicker_propIsEnum.call(b, prop)) - DatePicker_defNormalProp(a, prop, b[prop]); - } - return a; -}; -var DatePicker_spreadProps = (a, b) => DatePicker_defProps(a, DatePicker_getOwnPropDescs(b)); - - - - - - -function DatePicker({ - children, - disabled, - readOnly = false, - error, - id, - label, - labelwidth, - note, - onClose, - onChange, - onOpen, - theme, - config = {}, - value, - wrapperClassName = "" -}) { - const [pickerInstance, setPickerInstance] = (0,external_react_namespaceObject.useState)(null); - const dateRef = (0,external_react_namespaceObject.useRef)(null); - const prevValue = hooks_usePrevious(value); - const hasValueChanged = (0,external_react_namespaceObject.useCallback)((prevDate, currentDate) => { - if (!prevDate) - return true; - if (!Array.isArray(currentDate)) - return prevDate.getTime() !== currentDate.getTime(); - let diffDates = currentDate; - if (prevDate && currentDate.length && prevDate.length) { - diffDates = currentDate.filter((date, index) => date.getTime() !== prevDate[index].getTime()); - return diffDates.length > 0; - } - return currentDate.length > 0; - }, []); - const onDateChange = (0,external_react_namespaceObject.useCallback)((dateValue) => { - const finalValue = config.mode === "range" ? dateValue : dateValue[0] || null; - if (!onChange) - return; - if (config.mode === "range") { - if (finalValue.length === 2 && hasValueChanged(prevValue, finalValue)) { - onChange(finalValue); - } - } else { - onChange(finalValue); - } - }, [prevValue, onChange, hasValueChanged]); - (0,external_react_namespaceObject.useEffect)(() => { - if (dateRef && dateRef.current && !pickerInstance) { - const instance = external_flatpickr_default()(dateRef.current, DatePicker_spreadProps(DatePicker_spreadValues({}, config), { - defaultDate: value, - onChange: onDateChange, - onClose, - onOpen - })); - setPickerInstance(instance); - } - return () => { - if (pickerInstance) { - pickerInstance.destroy(); - } - }; - }, [dateRef.current, pickerInstance]); - (0,external_react_namespaceObject.useEffect)(() => { - if (pickerInstance) { - let tempValue = value; - if (typeof value === "string") { - tempValue = new Date(value); - } else if (Array.isArray(value)) { - tempValue = value.map((date) => typeof date === "string" ? new Date(date) : date); - } - if (hasValueChanged(prevValue, tempValue)) { - pickerInstance.set("onChange", onDateChange); - if (config.mode === "range") { - if (tempValue && tempValue.length === 2) { - pickerInstance.setDate(tempValue, true); - } - } else { - pickerInstance.setDate(tempValue, true); - } - } - } - }, [prevValue, value, pickerInstance]); - const classes = [ - "tyk-form-group", - "tyk-form-group--addon-right", - wrapperClassName, - ...theme ? theme.split(" ").map((t) => `tyk-form-group--${t}`) : [], - labelwidth && "tyk-form-group--label-has-width", - error && "has-error" - ].filter(Boolean).join(" "); - const getLabelStyles = () => { - if (labelwidth) - return { flexBasis: labelwidth }; - return {}; - }; - const getNonLabelWidth = () => { - if (labelwidth) - return { flexBasis: `calc(100% - ${labelwidth} - 20px)` }; - return {}; - }; - const openCalendar = (0,external_react_namespaceObject.useCallback)(() => { - if (!pickerInstance) - return; - pickerInstance.open(); - }, [pickerInstance]); - const getInputError = () => error && error !== "true" && error !== "false" ? /* @__PURE__ */ external_react_default().createElement("p", { className: "tyk-form-control__error-message" }, error) : null; - const getInputField = () => { - let inputStyle = {}; - let addonStyle = {}; - if (config && config.inline) { - inputStyle = { - height: 0, - padding: 0, - width: 0, - visibility: "hidden" - }; - addonStyle = { - display: "none" - }; - } - return /* @__PURE__ */ external_react_default().createElement((external_react_default()).Fragment, null, /* @__PURE__ */ external_react_default().createElement( - "input", - { - disabled, - className: "tyk-form-control", - "data-input": true, - type: "date", - ref: dateRef, - style: inputStyle - } - ), /* @__PURE__ */ external_react_default().createElement( - "div", - { - className: "tyk-input-group__addon", - onClick: openCalendar, - role: "button", - onKeyUp: () => { - }, - tabIndex: 0, - style: addonStyle - }, - /* @__PURE__ */ external_react_default().createElement(components_Icon, { type: "calendar" }) - )); - }; - return /* @__PURE__ */ external_react_default().createElement((external_react_default()).Fragment, null, children && children.length ? children({ openCalendar, ref: dateRef }) : /* @__PURE__ */ external_react_default().createElement("div", { className: classes }, label ? /* @__PURE__ */ external_react_default().createElement("label", { htmlFor: id, style: getLabelStyles() }, label) : null, !readOnly && /* @__PURE__ */ external_react_default().createElement( - "div", - { - className: "tyk-form-control__wrapper flatpickr", - style: getNonLabelWidth() - }, - /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-input-group" }, getInputField()), - note ? /* @__PURE__ */ external_react_default().createElement("p", { className: "tyk-form-control__help-block" }, note) : null, - getInputError() - )), /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-form-control--readonly" }, readOnly && !value && "-", readOnly && value && external_flatpickr_default().formatDate(value, config.dateFormat || "d/m/Y"))); -} -DatePicker.propTypes = { - config: external_prop_types_default().instanceOf(Object), - children: external_prop_types_default().oneOfType([ - (external_prop_types_default()).element, - (external_prop_types_default()).node, - (external_prop_types_default()).string, - (external_prop_types_default()).func - ]), - disabled: (external_prop_types_default()).bool, - readOnly: (external_prop_types_default()).bool, - id: (external_prop_types_default()).string, - label: external_prop_types_default().oneOfType([ - external_prop_types_default().arrayOf((external_prop_types_default()).node), - (external_prop_types_default()).node, - (external_prop_types_default()).element, - (external_prop_types_default()).func, - (external_prop_types_default()).string - ]), - labelwidth: (external_prop_types_default()).string, - note: (external_prop_types_default()).string, - onChange: external_prop_types_default().oneOfType([ - (external_prop_types_default()).func, - external_prop_types_default().instanceOf(Array) - ]), - onClose: external_prop_types_default().oneOfType([ - (external_prop_types_default()).func, - external_prop_types_default().instanceOf(Array) - ]), - onOpen: external_prop_types_default().oneOfType([ - (external_prop_types_default()).func, - external_prop_types_default().instanceOf(Array) - ]), - theme: (external_prop_types_default()).string, - error: (external_prop_types_default()).string, - value: external_prop_types_default().oneOfType([ - external_prop_types_default().instanceOf(Array), - external_prop_types_default().instanceOf(Object), - (external_prop_types_default()).string - ]), - wrapperClassName: (external_prop_types_default()).string -}; -/* harmony default export */ const components_DatePicker = (DatePicker); - -;// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/typeof.js -function _typeof(o) { - "@babel/helpers - typeof"; - - return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { - return typeof o; - } : function (o) { - return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; - }, _typeof(o); -} -;// CONCATENATED MODULE: ./node_modules/date-fns/esm/_lib/requiredArgs/index.js -function requiredArgs(required, args) { - if (args.length < required) { - throw new TypeError(required + ' argument' + (required > 1 ? 's' : '') + ' required, but only ' + args.length + ' present'); - } -} -;// CONCATENATED MODULE: ./node_modules/date-fns/esm/isDate/index.js - - -/** - * @name isDate - * @category Common Helpers - * @summary Is the given value a date? - * - * @description - * Returns true if the given value is an instance of Date. The function works for dates transferred across iframes. - * - * @param {*} value - the value to check - * @returns {boolean} true if the given value is a date - * @throws {TypeError} 1 arguments required - * - * @example - * // For a valid date: - * const result = isDate(new Date()) - * //=> true - * - * @example - * // For an invalid date: - * const result = isDate(new Date(NaN)) - * //=> true - * - * @example - * // For some value: - * const result = isDate('2014-02-31') - * //=> false - * - * @example - * // For an object: - * const result = isDate({}) - * //=> false - */ -function isDate(value) { - requiredArgs(1, arguments); - return value instanceof Date || _typeof(value) === 'object' && Object.prototype.toString.call(value) === '[object Date]'; -} -;// CONCATENATED MODULE: ./node_modules/date-fns/esm/toDate/index.js - - -/** - * @name toDate - * @category Common Helpers - * @summary Convert the given argument to an instance of Date. - * - * @description - * Convert the given argument to an instance of Date. - * - * If the argument is an instance of Date, the function returns its clone. - * - * If the argument is a number, it is treated as a timestamp. - * - * If the argument is none of the above, the function returns Invalid Date. - * - * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`. - * - * @param {Date|Number} argument - the value to convert - * @returns {Date} the parsed date in the local time zone - * @throws {TypeError} 1 argument required - * - * @example - * // Clone the date: - * const result = toDate(new Date(2014, 1, 11, 11, 30, 30)) - * //=> Tue Feb 11 2014 11:30:30 - * - * @example - * // Convert the timestamp to date: - * const result = toDate(1392098430000) - * //=> Tue Feb 11 2014 11:30:30 - */ -function toDate(argument) { - requiredArgs(1, arguments); - var argStr = Object.prototype.toString.call(argument); - - // Clone the date - if (argument instanceof Date || _typeof(argument) === 'object' && argStr === '[object Date]') { - // Prevent the date to lose the milliseconds when passed to new Date() in IE10 - return new Date(argument.getTime()); - } else if (typeof argument === 'number' || argStr === '[object Number]') { - return new Date(argument); - } else { - if ((typeof argument === 'string' || argStr === '[object String]') && typeof console !== 'undefined') { - // eslint-disable-next-line no-console - console.warn("Starting with v2.0.0-beta.1 date-fns doesn't accept strings as date arguments. Please use `parseISO` to parse strings. See: https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#string-arguments"); - // eslint-disable-next-line no-console - console.warn(new Error().stack); - } - return new Date(NaN); - } -} -;// CONCATENATED MODULE: ./node_modules/date-fns/esm/isValid/index.js - - - -/** - * @name isValid - * @category Common Helpers - * @summary Is the given date valid? - * - * @description - * Returns false if argument is Invalid Date and true otherwise. - * Argument is converted to Date using `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate} - * Invalid Date is a Date, whose time value is NaN. - * - * Time value of Date: http://es5.github.io/#x15.9.1.1 - * - * @param {*} date - the date to check - * @returns {Boolean} the date is valid - * @throws {TypeError} 1 argument required - * - * @example - * // For the valid date: - * const result = isValid(new Date(2014, 1, 31)) - * //=> true - * - * @example - * // For the value, convertable into a date: - * const result = isValid(1393804800000) - * //=> true - * - * @example - * // For the invalid date: - * const result = isValid(new Date('')) - * //=> false - */ -function isValid(dirtyDate) { - requiredArgs(1, arguments); - if (!isDate(dirtyDate) && typeof dirtyDate !== 'number') { - return false; - } - var date = toDate(dirtyDate); - return !isNaN(Number(date)); -} -;// CONCATENATED MODULE: ./node_modules/date-fns/esm/_lib/toInteger/index.js -function toInteger(dirtyNumber) { - if (dirtyNumber === null || dirtyNumber === true || dirtyNumber === false) { - return NaN; - } - var number = Number(dirtyNumber); - if (isNaN(number)) { - return number; - } - return number < 0 ? Math.ceil(number) : Math.floor(number); -} -;// CONCATENATED MODULE: ./node_modules/date-fns/esm/addMilliseconds/index.js - - - -/** - * @name addMilliseconds - * @category Millisecond Helpers - * @summary Add the specified number of milliseconds to the given date. - * - * @description - * Add the specified number of milliseconds to the given date. - * - * @param {Date|Number} date - the date to be changed - * @param {Number} amount - the amount of milliseconds to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`. - * @returns {Date} the new date with the milliseconds added - * @throws {TypeError} 2 arguments required - * - * @example - * // Add 750 milliseconds to 10 July 2014 12:45:30.000: - * const result = addMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750) - * //=> Thu Jul 10 2014 12:45:30.750 - */ -function addMilliseconds(dirtyDate, dirtyAmount) { - requiredArgs(2, arguments); - var timestamp = toDate(dirtyDate).getTime(); - var amount = toInteger(dirtyAmount); - return new Date(timestamp + amount); -} -;// CONCATENATED MODULE: ./node_modules/date-fns/esm/subMilliseconds/index.js - - - -/** - * @name subMilliseconds - * @category Millisecond Helpers - * @summary Subtract the specified number of milliseconds from the given date. - * - * @description - * Subtract the specified number of milliseconds from the given date. - * - * @param {Date|Number} date - the date to be changed - * @param {Number} amount - the amount of milliseconds to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`. - * @returns {Date} the new date with the milliseconds subtracted - * @throws {TypeError} 2 arguments required - * - * @example - * // Subtract 750 milliseconds from 10 July 2014 12:45:30.000: - * const result = subMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750) - * //=> Thu Jul 10 2014 12:45:29.250 - */ -function subMilliseconds(dirtyDate, dirtyAmount) { - requiredArgs(2, arguments); - var amount = toInteger(dirtyAmount); - return addMilliseconds(dirtyDate, -amount); -} -;// CONCATENATED MODULE: ./node_modules/date-fns/esm/_lib/getUTCDayOfYear/index.js - - -var MILLISECONDS_IN_DAY = 86400000; -function getUTCDayOfYear(dirtyDate) { - requiredArgs(1, arguments); - var date = toDate(dirtyDate); - var timestamp = date.getTime(); - date.setUTCMonth(0, 1); - date.setUTCHours(0, 0, 0, 0); - var startOfYearTimestamp = date.getTime(); - var difference = timestamp - startOfYearTimestamp; - return Math.floor(difference / MILLISECONDS_IN_DAY) + 1; -} -;// CONCATENATED MODULE: ./node_modules/date-fns/esm/_lib/startOfUTCISOWeek/index.js - - -function startOfUTCISOWeek(dirtyDate) { - requiredArgs(1, arguments); - var weekStartsOn = 1; - var date = toDate(dirtyDate); - var day = date.getUTCDay(); - var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn; - date.setUTCDate(date.getUTCDate() - diff); - date.setUTCHours(0, 0, 0, 0); - return date; -} -;// CONCATENATED MODULE: ./node_modules/date-fns/esm/_lib/getUTCISOWeekYear/index.js - - - -function getUTCISOWeekYear(dirtyDate) { - requiredArgs(1, arguments); - var date = toDate(dirtyDate); - var year = date.getUTCFullYear(); - var fourthOfJanuaryOfNextYear = new Date(0); - fourthOfJanuaryOfNextYear.setUTCFullYear(year + 1, 0, 4); - fourthOfJanuaryOfNextYear.setUTCHours(0, 0, 0, 0); - var startOfNextYear = startOfUTCISOWeek(fourthOfJanuaryOfNextYear); - var fourthOfJanuaryOfThisYear = new Date(0); - fourthOfJanuaryOfThisYear.setUTCFullYear(year, 0, 4); - fourthOfJanuaryOfThisYear.setUTCHours(0, 0, 0, 0); - var startOfThisYear = startOfUTCISOWeek(fourthOfJanuaryOfThisYear); - if (date.getTime() >= startOfNextYear.getTime()) { - return year + 1; - } else if (date.getTime() >= startOfThisYear.getTime()) { - return year; - } else { - return year - 1; - } -} -;// CONCATENATED MODULE: ./node_modules/date-fns/esm/_lib/startOfUTCISOWeekYear/index.js - - - -function startOfUTCISOWeekYear(dirtyDate) { - requiredArgs(1, arguments); - var year = getUTCISOWeekYear(dirtyDate); - var fourthOfJanuary = new Date(0); - fourthOfJanuary.setUTCFullYear(year, 0, 4); - fourthOfJanuary.setUTCHours(0, 0, 0, 0); - var date = startOfUTCISOWeek(fourthOfJanuary); - return date; -} -;// CONCATENATED MODULE: ./node_modules/date-fns/esm/_lib/getUTCISOWeek/index.js - - - - -var MILLISECONDS_IN_WEEK = 604800000; -function getUTCISOWeek(dirtyDate) { - requiredArgs(1, arguments); - var date = toDate(dirtyDate); - var diff = startOfUTCISOWeek(date).getTime() - startOfUTCISOWeekYear(date).getTime(); - - // Round the number of days to the nearest integer - // because the number of milliseconds in a week is not constant - // (e.g. it's different in the week of the daylight saving time clock shift) - return Math.round(diff / MILLISECONDS_IN_WEEK) + 1; -} -;// CONCATENATED MODULE: ./node_modules/date-fns/esm/_lib/defaultOptions/index.js -var defaultOptions = {}; -function getDefaultOptions() { - return defaultOptions; -} -function setDefaultOptions(newOptions) { - defaultOptions = newOptions; -} -;// CONCATENATED MODULE: ./node_modules/date-fns/esm/_lib/startOfUTCWeek/index.js - - - - -function startOfUTCWeek(dirtyDate, options) { - var _ref, _ref2, _ref3, _options$weekStartsOn, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2; - requiredArgs(1, arguments); - var defaultOptions = getDefaultOptions(); - var weekStartsOn = toInteger((_ref = (_ref2 = (_ref3 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.weekStartsOn) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.weekStartsOn) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.weekStartsOn) !== null && _ref !== void 0 ? _ref : 0); - - // Test if weekStartsOn is between 0 and 6 _and_ is not NaN - if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) { - throw new RangeError('weekStartsOn must be between 0 and 6 inclusively'); - } - var date = toDate(dirtyDate); - var day = date.getUTCDay(); - var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn; - date.setUTCDate(date.getUTCDate() - diff); - date.setUTCHours(0, 0, 0, 0); - return date; -} -;// CONCATENATED MODULE: ./node_modules/date-fns/esm/_lib/getUTCWeekYear/index.js - - - - - -function getUTCWeekYear(dirtyDate, options) { - var _ref, _ref2, _ref3, _options$firstWeekCon, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2; - requiredArgs(1, arguments); - var date = toDate(dirtyDate); - var year = date.getUTCFullYear(); - var defaultOptions = getDefaultOptions(); - var firstWeekContainsDate = toInteger((_ref = (_ref2 = (_ref3 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref !== void 0 ? _ref : 1); - - // Test if weekStartsOn is between 1 and 7 _and_ is not NaN - if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) { - throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively'); - } - var firstWeekOfNextYear = new Date(0); - firstWeekOfNextYear.setUTCFullYear(year + 1, 0, firstWeekContainsDate); - firstWeekOfNextYear.setUTCHours(0, 0, 0, 0); - var startOfNextYear = startOfUTCWeek(firstWeekOfNextYear, options); - var firstWeekOfThisYear = new Date(0); - firstWeekOfThisYear.setUTCFullYear(year, 0, firstWeekContainsDate); - firstWeekOfThisYear.setUTCHours(0, 0, 0, 0); - var startOfThisYear = startOfUTCWeek(firstWeekOfThisYear, options); - if (date.getTime() >= startOfNextYear.getTime()) { - return year + 1; - } else if (date.getTime() >= startOfThisYear.getTime()) { - return year; - } else { - return year - 1; - } -} -;// CONCATENATED MODULE: ./node_modules/date-fns/esm/_lib/startOfUTCWeekYear/index.js - - - - - -function startOfUTCWeekYear(dirtyDate, options) { - var _ref, _ref2, _ref3, _options$firstWeekCon, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2; - requiredArgs(1, arguments); - var defaultOptions = getDefaultOptions(); - var firstWeekContainsDate = toInteger((_ref = (_ref2 = (_ref3 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref !== void 0 ? _ref : 1); - var year = getUTCWeekYear(dirtyDate, options); - var firstWeek = new Date(0); - firstWeek.setUTCFullYear(year, 0, firstWeekContainsDate); - firstWeek.setUTCHours(0, 0, 0, 0); - var date = startOfUTCWeek(firstWeek, options); - return date; -} -;// CONCATENATED MODULE: ./node_modules/date-fns/esm/_lib/getUTCWeek/index.js - - - - -var getUTCWeek_MILLISECONDS_IN_WEEK = 604800000; -function getUTCWeek(dirtyDate, options) { - requiredArgs(1, arguments); - var date = toDate(dirtyDate); - var diff = startOfUTCWeek(date, options).getTime() - startOfUTCWeekYear(date, options).getTime(); - - // Round the number of days to the nearest integer - // because the number of milliseconds in a week is not constant - // (e.g. it's different in the week of the daylight saving time clock shift) - return Math.round(diff / getUTCWeek_MILLISECONDS_IN_WEEK) + 1; -} -;// CONCATENATED MODULE: ./node_modules/date-fns/esm/_lib/addLeadingZeros/index.js -function addLeadingZeros(number, targetLength) { - var sign = number < 0 ? '-' : ''; - var output = Math.abs(number).toString(); - while (output.length < targetLength) { - output = '0' + output; - } - return sign + output; -} -;// CONCATENATED MODULE: ./node_modules/date-fns/esm/_lib/format/lightFormatters/index.js - -/* - * | | Unit | | Unit | - * |-----|--------------------------------|-----|--------------------------------| - * | a | AM, PM | A* | | - * | d | Day of month | D | | - * | h | Hour [1-12] | H | Hour [0-23] | - * | m | Minute | M | Month | - * | s | Second | S | Fraction of second | - * | y | Year (abs) | Y | | - * - * Letters marked by * are not implemented but reserved by Unicode standard. - */ -var formatters = { - // Year - y: function y(date, token) { - // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_tokens - // | Year | y | yy | yyy | yyyy | yyyyy | - // |----------|-------|----|-------|-------|-------| - // | AD 1 | 1 | 01 | 001 | 0001 | 00001 | - // | AD 12 | 12 | 12 | 012 | 0012 | 00012 | - // | AD 123 | 123 | 23 | 123 | 0123 | 00123 | - // | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 | - // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 | - - var signedYear = date.getUTCFullYear(); - // Returns 1 for 1 BC (which is year 0 in JavaScript) - var year = signedYear > 0 ? signedYear : 1 - signedYear; - return addLeadingZeros(token === 'yy' ? year % 100 : year, token.length); - }, - // Month - M: function M(date, token) { - var month = date.getUTCMonth(); - return token === 'M' ? String(month + 1) : addLeadingZeros(month + 1, 2); - }, - // Day of the month - d: function d(date, token) { - return addLeadingZeros(date.getUTCDate(), token.length); - }, - // AM or PM - a: function a(date, token) { - var dayPeriodEnumValue = date.getUTCHours() / 12 >= 1 ? 'pm' : 'am'; - switch (token) { - case 'a': - case 'aa': - return dayPeriodEnumValue.toUpperCase(); - case 'aaa': - return dayPeriodEnumValue; - case 'aaaaa': - return dayPeriodEnumValue[0]; - case 'aaaa': - default: - return dayPeriodEnumValue === 'am' ? 'a.m.' : 'p.m.'; - } - }, - // Hour [1-12] - h: function h(date, token) { - return addLeadingZeros(date.getUTCHours() % 12 || 12, token.length); - }, - // Hour [0-23] - H: function H(date, token) { - return addLeadingZeros(date.getUTCHours(), token.length); - }, - // Minute - m: function m(date, token) { - return addLeadingZeros(date.getUTCMinutes(), token.length); - }, - // Second - s: function s(date, token) { - return addLeadingZeros(date.getUTCSeconds(), token.length); - }, - // Fraction of second - S: function S(date, token) { - var numberOfDigits = token.length; - var milliseconds = date.getUTCMilliseconds(); - var fractionalSeconds = Math.floor(milliseconds * Math.pow(10, numberOfDigits - 3)); - return addLeadingZeros(fractionalSeconds, token.length); - } -}; -/* harmony default export */ const lightFormatters = (formatters); -;// CONCATENATED MODULE: ./node_modules/date-fns/esm/_lib/format/formatters/index.js - - - - - - - -var dayPeriodEnum = { - am: 'am', - pm: 'pm', - midnight: 'midnight', - noon: 'noon', - morning: 'morning', - afternoon: 'afternoon', - evening: 'evening', - night: 'night' -}; -/* - * | | Unit | | Unit | - * |-----|--------------------------------|-----|--------------------------------| - * | a | AM, PM | A* | Milliseconds in day | - * | b | AM, PM, noon, midnight | B | Flexible day period | - * | c | Stand-alone local day of week | C* | Localized hour w/ day period | - * | d | Day of month | D | Day of year | - * | e | Local day of week | E | Day of week | - * | f | | F* | Day of week in month | - * | g* | Modified Julian day | G | Era | - * | h | Hour [1-12] | H | Hour [0-23] | - * | i! | ISO day of week | I! | ISO week of year | - * | j* | Localized hour w/ day period | J* | Localized hour w/o day period | - * | k | Hour [1-24] | K | Hour [0-11] | - * | l* | (deprecated) | L | Stand-alone month | - * | m | Minute | M | Month | - * | n | | N | | - * | o! | Ordinal number modifier | O | Timezone (GMT) | - * | p! | Long localized time | P! | Long localized date | - * | q | Stand-alone quarter | Q | Quarter | - * | r* | Related Gregorian year | R! | ISO week-numbering year | - * | s | Second | S | Fraction of second | - * | t! | Seconds timestamp | T! | Milliseconds timestamp | - * | u | Extended year | U* | Cyclic year | - * | v* | Timezone (generic non-locat.) | V* | Timezone (location) | - * | w | Local week of year | W* | Week of month | - * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) | - * | y | Year (abs) | Y | Local week-numbering year | - * | z | Timezone (specific non-locat.) | Z* | Timezone (aliases) | - * - * Letters marked by * are not implemented but reserved by Unicode standard. - * - * Letters marked by ! are non-standard, but implemented by date-fns: - * - `o` modifies the previous token to turn it into an ordinal (see `format` docs) - * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days, - * i.e. 7 for Sunday, 1 for Monday, etc. - * - `I` is ISO week of year, as opposed to `w` which is local week of year. - * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year. - * `R` is supposed to be used in conjunction with `I` and `i` - * for universal ISO week-numbering date, whereas - * `Y` is supposed to be used in conjunction with `w` and `e` - * for week-numbering date specific to the locale. - * - `P` is long localized date format - * - `p` is long localized time format - */ - -var formatters_formatters = { - // Era - G: function G(date, token, localize) { - var era = date.getUTCFullYear() > 0 ? 1 : 0; - switch (token) { - // AD, BC - case 'G': - case 'GG': - case 'GGG': - return localize.era(era, { - width: 'abbreviated' - }); - // A, B - case 'GGGGG': - return localize.era(era, { - width: 'narrow' - }); - // Anno Domini, Before Christ - case 'GGGG': - default: - return localize.era(era, { - width: 'wide' - }); - } - }, - // Year - y: function y(date, token, localize) { - // Ordinal number - if (token === 'yo') { - var signedYear = date.getUTCFullYear(); - // Returns 1 for 1 BC (which is year 0 in JavaScript) - var year = signedYear > 0 ? signedYear : 1 - signedYear; - return localize.ordinalNumber(year, { - unit: 'year' - }); - } - return lightFormatters.y(date, token); - }, - // Local week-numbering year - Y: function Y(date, token, localize, options) { - var signedWeekYear = getUTCWeekYear(date, options); - // Returns 1 for 1 BC (which is year 0 in JavaScript) - var weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear; - - // Two digit year - if (token === 'YY') { - var twoDigitYear = weekYear % 100; - return addLeadingZeros(twoDigitYear, 2); - } - - // Ordinal number - if (token === 'Yo') { - return localize.ordinalNumber(weekYear, { - unit: 'year' - }); - } - - // Padding - return addLeadingZeros(weekYear, token.length); - }, - // ISO week-numbering year - R: function R(date, token) { - var isoWeekYear = getUTCISOWeekYear(date); - - // Padding - return addLeadingZeros(isoWeekYear, token.length); - }, - // Extended year. This is a single number designating the year of this calendar system. - // The main difference between `y` and `u` localizers are B.C. years: - // | Year | `y` | `u` | - // |------|-----|-----| - // | AC 1 | 1 | 1 | - // | BC 1 | 1 | 0 | - // | BC 2 | 2 | -1 | - // Also `yy` always returns the last two digits of a year, - // while `uu` pads single digit years to 2 characters and returns other years unchanged. - u: function u(date, token) { - var year = date.getUTCFullYear(); - return addLeadingZeros(year, token.length); - }, - // Quarter - Q: function Q(date, token, localize) { - var quarter = Math.ceil((date.getUTCMonth() + 1) / 3); - switch (token) { - // 1, 2, 3, 4 - case 'Q': - return String(quarter); - // 01, 02, 03, 04 - case 'QQ': - return addLeadingZeros(quarter, 2); - // 1st, 2nd, 3rd, 4th - case 'Qo': - return localize.ordinalNumber(quarter, { - unit: 'quarter' - }); - // Q1, Q2, Q3, Q4 - case 'QQQ': - return localize.quarter(quarter, { - width: 'abbreviated', - context: 'formatting' - }); - // 1, 2, 3, 4 (narrow quarter; could be not numerical) - case 'QQQQQ': - return localize.quarter(quarter, { - width: 'narrow', - context: 'formatting' - }); - // 1st quarter, 2nd quarter, ... - case 'QQQQ': - default: - return localize.quarter(quarter, { - width: 'wide', - context: 'formatting' - }); - } - }, - // Stand-alone quarter - q: function q(date, token, localize) { - var quarter = Math.ceil((date.getUTCMonth() + 1) / 3); - switch (token) { - // 1, 2, 3, 4 - case 'q': - return String(quarter); - // 01, 02, 03, 04 - case 'qq': - return addLeadingZeros(quarter, 2); - // 1st, 2nd, 3rd, 4th - case 'qo': - return localize.ordinalNumber(quarter, { - unit: 'quarter' - }); - // Q1, Q2, Q3, Q4 - case 'qqq': - return localize.quarter(quarter, { - width: 'abbreviated', - context: 'standalone' - }); - // 1, 2, 3, 4 (narrow quarter; could be not numerical) - case 'qqqqq': - return localize.quarter(quarter, { - width: 'narrow', - context: 'standalone' - }); - // 1st quarter, 2nd quarter, ... - case 'qqqq': - default: - return localize.quarter(quarter, { - width: 'wide', - context: 'standalone' - }); - } - }, - // Month - M: function M(date, token, localize) { - var month = date.getUTCMonth(); - switch (token) { - case 'M': - case 'MM': - return lightFormatters.M(date, token); - // 1st, 2nd, ..., 12th - case 'Mo': - return localize.ordinalNumber(month + 1, { - unit: 'month' - }); - // Jan, Feb, ..., Dec - case 'MMM': - return localize.month(month, { - width: 'abbreviated', - context: 'formatting' - }); - // J, F, ..., D - case 'MMMMM': - return localize.month(month, { - width: 'narrow', - context: 'formatting' - }); - // January, February, ..., December - case 'MMMM': - default: - return localize.month(month, { - width: 'wide', - context: 'formatting' - }); - } - }, - // Stand-alone month - L: function L(date, token, localize) { - var month = date.getUTCMonth(); - switch (token) { - // 1, 2, ..., 12 - case 'L': - return String(month + 1); - // 01, 02, ..., 12 - case 'LL': - return addLeadingZeros(month + 1, 2); - // 1st, 2nd, ..., 12th - case 'Lo': - return localize.ordinalNumber(month + 1, { - unit: 'month' - }); - // Jan, Feb, ..., Dec - case 'LLL': - return localize.month(month, { - width: 'abbreviated', - context: 'standalone' - }); - // J, F, ..., D - case 'LLLLL': - return localize.month(month, { - width: 'narrow', - context: 'standalone' - }); - // January, February, ..., December - case 'LLLL': - default: - return localize.month(month, { - width: 'wide', - context: 'standalone' - }); - } - }, - // Local week of year - w: function w(date, token, localize, options) { - var week = getUTCWeek(date, options); - if (token === 'wo') { - return localize.ordinalNumber(week, { - unit: 'week' - }); - } - return addLeadingZeros(week, token.length); - }, - // ISO week of year - I: function I(date, token, localize) { - var isoWeek = getUTCISOWeek(date); - if (token === 'Io') { - return localize.ordinalNumber(isoWeek, { - unit: 'week' - }); - } - return addLeadingZeros(isoWeek, token.length); - }, - // Day of the month - d: function d(date, token, localize) { - if (token === 'do') { - return localize.ordinalNumber(date.getUTCDate(), { - unit: 'date' - }); - } - return lightFormatters.d(date, token); - }, - // Day of year - D: function D(date, token, localize) { - var dayOfYear = getUTCDayOfYear(date); - if (token === 'Do') { - return localize.ordinalNumber(dayOfYear, { - unit: 'dayOfYear' - }); - } - return addLeadingZeros(dayOfYear, token.length); - }, - // Day of week - E: function E(date, token, localize) { - var dayOfWeek = date.getUTCDay(); - switch (token) { - // Tue - case 'E': - case 'EE': - case 'EEE': - return localize.day(dayOfWeek, { - width: 'abbreviated', - context: 'formatting' - }); - // T - case 'EEEEE': - return localize.day(dayOfWeek, { - width: 'narrow', - context: 'formatting' - }); - // Tu - case 'EEEEEE': - return localize.day(dayOfWeek, { - width: 'short', - context: 'formatting' - }); - // Tuesday - case 'EEEE': - default: - return localize.day(dayOfWeek, { - width: 'wide', - context: 'formatting' - }); - } - }, - // Local day of week - e: function e(date, token, localize, options) { - var dayOfWeek = date.getUTCDay(); - var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7; - switch (token) { - // Numerical value (Nth day of week with current locale or weekStartsOn) - case 'e': - return String(localDayOfWeek); - // Padded numerical value - case 'ee': - return addLeadingZeros(localDayOfWeek, 2); - // 1st, 2nd, ..., 7th - case 'eo': - return localize.ordinalNumber(localDayOfWeek, { - unit: 'day' - }); - case 'eee': - return localize.day(dayOfWeek, { - width: 'abbreviated', - context: 'formatting' - }); - // T - case 'eeeee': - return localize.day(dayOfWeek, { - width: 'narrow', - context: 'formatting' - }); - // Tu - case 'eeeeee': - return localize.day(dayOfWeek, { - width: 'short', - context: 'formatting' - }); - // Tuesday - case 'eeee': - default: - return localize.day(dayOfWeek, { - width: 'wide', - context: 'formatting' - }); - } - }, - // Stand-alone local day of week - c: function c(date, token, localize, options) { - var dayOfWeek = date.getUTCDay(); - var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7; - switch (token) { - // Numerical value (same as in `e`) - case 'c': - return String(localDayOfWeek); - // Padded numerical value - case 'cc': - return addLeadingZeros(localDayOfWeek, token.length); - // 1st, 2nd, ..., 7th - case 'co': - return localize.ordinalNumber(localDayOfWeek, { - unit: 'day' - }); - case 'ccc': - return localize.day(dayOfWeek, { - width: 'abbreviated', - context: 'standalone' - }); - // T - case 'ccccc': - return localize.day(dayOfWeek, { - width: 'narrow', - context: 'standalone' - }); - // Tu - case 'cccccc': - return localize.day(dayOfWeek, { - width: 'short', - context: 'standalone' - }); - // Tuesday - case 'cccc': - default: - return localize.day(dayOfWeek, { - width: 'wide', - context: 'standalone' - }); - } - }, - // ISO day of week - i: function i(date, token, localize) { - var dayOfWeek = date.getUTCDay(); - var isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek; - switch (token) { - // 2 - case 'i': - return String(isoDayOfWeek); - // 02 - case 'ii': - return addLeadingZeros(isoDayOfWeek, token.length); - // 2nd - case 'io': - return localize.ordinalNumber(isoDayOfWeek, { - unit: 'day' - }); - // Tue - case 'iii': - return localize.day(dayOfWeek, { - width: 'abbreviated', - context: 'formatting' - }); - // T - case 'iiiii': - return localize.day(dayOfWeek, { - width: 'narrow', - context: 'formatting' - }); - // Tu - case 'iiiiii': - return localize.day(dayOfWeek, { - width: 'short', - context: 'formatting' - }); - // Tuesday - case 'iiii': - default: - return localize.day(dayOfWeek, { - width: 'wide', - context: 'formatting' - }); - } - }, - // AM or PM - a: function a(date, token, localize) { - var hours = date.getUTCHours(); - var dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am'; - switch (token) { - case 'a': - case 'aa': - return localize.dayPeriod(dayPeriodEnumValue, { - width: 'abbreviated', - context: 'formatting' - }); - case 'aaa': - return localize.dayPeriod(dayPeriodEnumValue, { - width: 'abbreviated', - context: 'formatting' - }).toLowerCase(); - case 'aaaaa': - return localize.dayPeriod(dayPeriodEnumValue, { - width: 'narrow', - context: 'formatting' - }); - case 'aaaa': - default: - return localize.dayPeriod(dayPeriodEnumValue, { - width: 'wide', - context: 'formatting' - }); - } - }, - // AM, PM, midnight, noon - b: function b(date, token, localize) { - var hours = date.getUTCHours(); - var dayPeriodEnumValue; - if (hours === 12) { - dayPeriodEnumValue = dayPeriodEnum.noon; - } else if (hours === 0) { - dayPeriodEnumValue = dayPeriodEnum.midnight; - } else { - dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am'; - } - switch (token) { - case 'b': - case 'bb': - return localize.dayPeriod(dayPeriodEnumValue, { - width: 'abbreviated', - context: 'formatting' - }); - case 'bbb': - return localize.dayPeriod(dayPeriodEnumValue, { - width: 'abbreviated', - context: 'formatting' - }).toLowerCase(); - case 'bbbbb': - return localize.dayPeriod(dayPeriodEnumValue, { - width: 'narrow', - context: 'formatting' - }); - case 'bbbb': - default: - return localize.dayPeriod(dayPeriodEnumValue, { - width: 'wide', - context: 'formatting' - }); - } - }, - // in the morning, in the afternoon, in the evening, at night - B: function B(date, token, localize) { - var hours = date.getUTCHours(); - var dayPeriodEnumValue; - if (hours >= 17) { - dayPeriodEnumValue = dayPeriodEnum.evening; - } else if (hours >= 12) { - dayPeriodEnumValue = dayPeriodEnum.afternoon; - } else if (hours >= 4) { - dayPeriodEnumValue = dayPeriodEnum.morning; - } else { - dayPeriodEnumValue = dayPeriodEnum.night; - } - switch (token) { - case 'B': - case 'BB': - case 'BBB': - return localize.dayPeriod(dayPeriodEnumValue, { - width: 'abbreviated', - context: 'formatting' - }); - case 'BBBBB': - return localize.dayPeriod(dayPeriodEnumValue, { - width: 'narrow', - context: 'formatting' - }); - case 'BBBB': - default: - return localize.dayPeriod(dayPeriodEnumValue, { - width: 'wide', - context: 'formatting' - }); - } - }, - // Hour [1-12] - h: function h(date, token, localize) { - if (token === 'ho') { - var hours = date.getUTCHours() % 12; - if (hours === 0) hours = 12; - return localize.ordinalNumber(hours, { - unit: 'hour' - }); - } - return lightFormatters.h(date, token); - }, - // Hour [0-23] - H: function H(date, token, localize) { - if (token === 'Ho') { - return localize.ordinalNumber(date.getUTCHours(), { - unit: 'hour' - }); - } - return lightFormatters.H(date, token); - }, - // Hour [0-11] - K: function K(date, token, localize) { - var hours = date.getUTCHours() % 12; - if (token === 'Ko') { - return localize.ordinalNumber(hours, { - unit: 'hour' - }); - } - return addLeadingZeros(hours, token.length); - }, - // Hour [1-24] - k: function k(date, token, localize) { - var hours = date.getUTCHours(); - if (hours === 0) hours = 24; - if (token === 'ko') { - return localize.ordinalNumber(hours, { - unit: 'hour' - }); - } - return addLeadingZeros(hours, token.length); - }, - // Minute - m: function m(date, token, localize) { - if (token === 'mo') { - return localize.ordinalNumber(date.getUTCMinutes(), { - unit: 'minute' - }); - } - return lightFormatters.m(date, token); - }, - // Second - s: function s(date, token, localize) { - if (token === 'so') { - return localize.ordinalNumber(date.getUTCSeconds(), { - unit: 'second' - }); - } - return lightFormatters.s(date, token); - }, - // Fraction of second - S: function S(date, token) { - return lightFormatters.S(date, token); - }, - // Timezone (ISO-8601. If offset is 0, output is always `'Z'`) - X: function X(date, token, _localize, options) { - var originalDate = options._originalDate || date; - var timezoneOffset = originalDate.getTimezoneOffset(); - if (timezoneOffset === 0) { - return 'Z'; - } - switch (token) { - // Hours and optional minutes - case 'X': - return formatTimezoneWithOptionalMinutes(timezoneOffset); - - // Hours, minutes and optional seconds without `:` delimiter - // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets - // so this token always has the same output as `XX` - case 'XXXX': - case 'XX': - // Hours and minutes without `:` delimiter - return formatTimezone(timezoneOffset); - - // Hours, minutes and optional seconds with `:` delimiter - // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets - // so this token always has the same output as `XXX` - case 'XXXXX': - case 'XXX': // Hours and minutes with `:` delimiter - default: - return formatTimezone(timezoneOffset, ':'); - } - }, - // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent) - x: function x(date, token, _localize, options) { - var originalDate = options._originalDate || date; - var timezoneOffset = originalDate.getTimezoneOffset(); - switch (token) { - // Hours and optional minutes - case 'x': - return formatTimezoneWithOptionalMinutes(timezoneOffset); - - // Hours, minutes and optional seconds without `:` delimiter - // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets - // so this token always has the same output as `xx` - case 'xxxx': - case 'xx': - // Hours and minutes without `:` delimiter - return formatTimezone(timezoneOffset); - - // Hours, minutes and optional seconds with `:` delimiter - // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets - // so this token always has the same output as `xxx` - case 'xxxxx': - case 'xxx': // Hours and minutes with `:` delimiter - default: - return formatTimezone(timezoneOffset, ':'); - } - }, - // Timezone (GMT) - O: function O(date, token, _localize, options) { - var originalDate = options._originalDate || date; - var timezoneOffset = originalDate.getTimezoneOffset(); - switch (token) { - // Short - case 'O': - case 'OO': - case 'OOO': - return 'GMT' + formatTimezoneShort(timezoneOffset, ':'); - // Long - case 'OOOO': - default: - return 'GMT' + formatTimezone(timezoneOffset, ':'); - } - }, - // Timezone (specific non-location) - z: function z(date, token, _localize, options) { - var originalDate = options._originalDate || date; - var timezoneOffset = originalDate.getTimezoneOffset(); - switch (token) { - // Short - case 'z': - case 'zz': - case 'zzz': - return 'GMT' + formatTimezoneShort(timezoneOffset, ':'); - // Long - case 'zzzz': - default: - return 'GMT' + formatTimezone(timezoneOffset, ':'); - } - }, - // Seconds timestamp - t: function t(date, token, _localize, options) { - var originalDate = options._originalDate || date; - var timestamp = Math.floor(originalDate.getTime() / 1000); - return addLeadingZeros(timestamp, token.length); - }, - // Milliseconds timestamp - T: function T(date, token, _localize, options) { - var originalDate = options._originalDate || date; - var timestamp = originalDate.getTime(); - return addLeadingZeros(timestamp, token.length); - } -}; -function formatTimezoneShort(offset, dirtyDelimiter) { - var sign = offset > 0 ? '-' : '+'; - var absOffset = Math.abs(offset); - var hours = Math.floor(absOffset / 60); - var minutes = absOffset % 60; - if (minutes === 0) { - return sign + String(hours); - } - var delimiter = dirtyDelimiter || ''; - return sign + String(hours) + delimiter + addLeadingZeros(minutes, 2); -} -function formatTimezoneWithOptionalMinutes(offset, dirtyDelimiter) { - if (offset % 60 === 0) { - var sign = offset > 0 ? '-' : '+'; - return sign + addLeadingZeros(Math.abs(offset) / 60, 2); - } - return formatTimezone(offset, dirtyDelimiter); -} -function formatTimezone(offset, dirtyDelimiter) { - var delimiter = dirtyDelimiter || ''; - var sign = offset > 0 ? '-' : '+'; - var absOffset = Math.abs(offset); - var hours = addLeadingZeros(Math.floor(absOffset / 60), 2); - var minutes = addLeadingZeros(absOffset % 60, 2); - return sign + hours + delimiter + minutes; -} -/* harmony default export */ const format_formatters = (formatters_formatters); -;// CONCATENATED MODULE: ./node_modules/date-fns/esm/_lib/format/longFormatters/index.js -var dateLongFormatter = function dateLongFormatter(pattern, formatLong) { - switch (pattern) { - case 'P': - return formatLong.date({ - width: 'short' - }); - case 'PP': - return formatLong.date({ - width: 'medium' - }); - case 'PPP': - return formatLong.date({ - width: 'long' - }); - case 'PPPP': - default: - return formatLong.date({ - width: 'full' - }); - } -}; -var timeLongFormatter = function timeLongFormatter(pattern, formatLong) { - switch (pattern) { - case 'p': - return formatLong.time({ - width: 'short' - }); - case 'pp': - return formatLong.time({ - width: 'medium' - }); - case 'ppp': - return formatLong.time({ - width: 'long' - }); - case 'pppp': - default: - return formatLong.time({ - width: 'full' - }); - } -}; -var dateTimeLongFormatter = function dateTimeLongFormatter(pattern, formatLong) { - var matchResult = pattern.match(/(P+)(p+)?/) || []; - var datePattern = matchResult[1]; - var timePattern = matchResult[2]; - if (!timePattern) { - return dateLongFormatter(pattern, formatLong); - } - var dateTimeFormat; - switch (datePattern) { - case 'P': - dateTimeFormat = formatLong.dateTime({ - width: 'short' - }); - break; - case 'PP': - dateTimeFormat = formatLong.dateTime({ - width: 'medium' - }); - break; - case 'PPP': - dateTimeFormat = formatLong.dateTime({ - width: 'long' - }); - break; - case 'PPPP': - default: - dateTimeFormat = formatLong.dateTime({ - width: 'full' - }); - break; - } - return dateTimeFormat.replace('{{date}}', dateLongFormatter(datePattern, formatLong)).replace('{{time}}', timeLongFormatter(timePattern, formatLong)); -}; -var longFormatters = { - p: timeLongFormatter, - P: dateTimeLongFormatter -}; -/* harmony default export */ const format_longFormatters = (longFormatters); -;// CONCATENATED MODULE: ./node_modules/date-fns/esm/_lib/getTimezoneOffsetInMilliseconds/index.js -/** - * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds. - * They usually appear for dates that denote time before the timezones were introduced - * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891 - * and GMT+01:00:00 after that date) - * - * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above, - * which would lead to incorrect calculations. - * - * This function returns the timezone offset in milliseconds that takes seconds in account. - */ -function getTimezoneOffsetInMilliseconds(date) { - var utcDate = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds())); - utcDate.setUTCFullYear(date.getFullYear()); - return date.getTime() - utcDate.getTime(); -} -;// CONCATENATED MODULE: ./node_modules/date-fns/esm/_lib/protectedTokens/index.js -var protectedDayOfYearTokens = ['D', 'DD']; -var protectedWeekYearTokens = ['YY', 'YYYY']; -function isProtectedDayOfYearToken(token) { - return protectedDayOfYearTokens.indexOf(token) !== -1; -} -function isProtectedWeekYearToken(token) { - return protectedWeekYearTokens.indexOf(token) !== -1; -} -function throwProtectedError(token, format, input) { - if (token === 'YYYY') { - throw new RangeError("Use `yyyy` instead of `YYYY` (in `".concat(format, "`) for formatting years to the input `").concat(input, "`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md")); - } else if (token === 'YY') { - throw new RangeError("Use `yy` instead of `YY` (in `".concat(format, "`) for formatting years to the input `").concat(input, "`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md")); - } else if (token === 'D') { - throw new RangeError("Use `d` instead of `D` (in `".concat(format, "`) for formatting days of the month to the input `").concat(input, "`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md")); - } else if (token === 'DD') { - throw new RangeError("Use `dd` instead of `DD` (in `".concat(format, "`) for formatting days of the month to the input `").concat(input, "`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md")); - } -} -;// CONCATENATED MODULE: ./node_modules/date-fns/esm/locale/en-US/_lib/formatDistance/index.js -var formatDistanceLocale = { - lessThanXSeconds: { - one: 'less than a second', - other: 'less than {{count}} seconds' - }, - xSeconds: { - one: '1 second', - other: '{{count}} seconds' - }, - halfAMinute: 'half a minute', - lessThanXMinutes: { - one: 'less than a minute', - other: 'less than {{count}} minutes' - }, - xMinutes: { - one: '1 minute', - other: '{{count}} minutes' - }, - aboutXHours: { - one: 'about 1 hour', - other: 'about {{count}} hours' - }, - xHours: { - one: '1 hour', - other: '{{count}} hours' - }, - xDays: { - one: '1 day', - other: '{{count}} days' - }, - aboutXWeeks: { - one: 'about 1 week', - other: 'about {{count}} weeks' - }, - xWeeks: { - one: '1 week', - other: '{{count}} weeks' - }, - aboutXMonths: { - one: 'about 1 month', - other: 'about {{count}} months' - }, - xMonths: { - one: '1 month', - other: '{{count}} months' - }, - aboutXYears: { - one: 'about 1 year', - other: 'about {{count}} years' - }, - xYears: { - one: '1 year', - other: '{{count}} years' - }, - overXYears: { - one: 'over 1 year', - other: 'over {{count}} years' - }, - almostXYears: { - one: 'almost 1 year', - other: 'almost {{count}} years' - } -}; -var formatDistance = function formatDistance(token, count, options) { - var result; - var tokenValue = formatDistanceLocale[token]; - if (typeof tokenValue === 'string') { - result = tokenValue; - } else if (count === 1) { - result = tokenValue.one; - } else { - result = tokenValue.other.replace('{{count}}', count.toString()); - } - if (options !== null && options !== void 0 && options.addSuffix) { - if (options.comparison && options.comparison > 0) { - return 'in ' + result; - } else { - return result + ' ago'; - } - } - return result; -}; -/* harmony default export */ const _lib_formatDistance = (formatDistance); -;// CONCATENATED MODULE: ./node_modules/date-fns/esm/locale/_lib/buildFormatLongFn/index.js -function buildFormatLongFn(args) { - return function () { - var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; - // TODO: Remove String() - var width = options.width ? String(options.width) : args.defaultWidth; - var format = args.formats[width] || args.formats[args.defaultWidth]; - return format; - }; -} -;// CONCATENATED MODULE: ./node_modules/date-fns/esm/locale/en-US/_lib/formatLong/index.js - -var dateFormats = { - full: 'EEEE, MMMM do, y', - long: 'MMMM do, y', - medium: 'MMM d, y', - short: 'MM/dd/yyyy' -}; -var timeFormats = { - full: 'h:mm:ss a zzzz', - long: 'h:mm:ss a z', - medium: 'h:mm:ss a', - short: 'h:mm a' -}; -var dateTimeFormats = { - full: "{{date}} 'at' {{time}}", - long: "{{date}} 'at' {{time}}", - medium: '{{date}}, {{time}}', - short: '{{date}}, {{time}}' -}; -var formatLong = { - date: buildFormatLongFn({ - formats: dateFormats, - defaultWidth: 'full' - }), - time: buildFormatLongFn({ - formats: timeFormats, - defaultWidth: 'full' - }), - dateTime: buildFormatLongFn({ - formats: dateTimeFormats, - defaultWidth: 'full' - }) -}; -/* harmony default export */ const _lib_formatLong = (formatLong); -;// CONCATENATED MODULE: ./node_modules/date-fns/esm/locale/en-US/_lib/formatRelative/index.js -var formatRelativeLocale = { - lastWeek: "'last' eeee 'at' p", - yesterday: "'yesterday at' p", - today: "'today at' p", - tomorrow: "'tomorrow at' p", - nextWeek: "eeee 'at' p", - other: 'P' -}; -var formatRelative = function formatRelative(token, _date, _baseDate, _options) { - return formatRelativeLocale[token]; -}; -/* harmony default export */ const _lib_formatRelative = (formatRelative); -;// CONCATENATED MODULE: ./node_modules/date-fns/esm/locale/_lib/buildLocalizeFn/index.js -function buildLocalizeFn(args) { - return function (dirtyIndex, options) { - var context = options !== null && options !== void 0 && options.context ? String(options.context) : 'standalone'; - var valuesArray; - if (context === 'formatting' && args.formattingValues) { - var defaultWidth = args.defaultFormattingWidth || args.defaultWidth; - var width = options !== null && options !== void 0 && options.width ? String(options.width) : defaultWidth; - valuesArray = args.formattingValues[width] || args.formattingValues[defaultWidth]; - } else { - var _defaultWidth = args.defaultWidth; - var _width = options !== null && options !== void 0 && options.width ? String(options.width) : args.defaultWidth; - valuesArray = args.values[_width] || args.values[_defaultWidth]; - } - var index = args.argumentCallback ? args.argumentCallback(dirtyIndex) : dirtyIndex; - // @ts-ignore: For some reason TypeScript just don't want to match it, no matter how hard we try. I challenge you to try to remove it! - return valuesArray[index]; - }; -} -;// CONCATENATED MODULE: ./node_modules/date-fns/esm/locale/en-US/_lib/localize/index.js - -var eraValues = { - narrow: ['B', 'A'], - abbreviated: ['BC', 'AD'], - wide: ['Before Christ', 'Anno Domini'] -}; -var quarterValues = { - narrow: ['1', '2', '3', '4'], - abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'], - wide: ['1st quarter', '2nd quarter', '3rd quarter', '4th quarter'] -}; - -// Note: in English, the names of days of the week and months are capitalized. -// If you are making a new locale based on this one, check if the same is true for the language you're working on. -// Generally, formatted dates should look like they are in the middle of a sentence, -// e.g. in Spanish language the weekdays and months should be in the lowercase. -var monthValues = { - narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - abbreviated: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - wide: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'] -}; -var dayValues = { - narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S'], - short: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'], - abbreviated: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - wide: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'] -}; -var dayPeriodValues = { - narrow: { - am: 'a', - pm: 'p', - midnight: 'mi', - noon: 'n', - morning: 'morning', - afternoon: 'afternoon', - evening: 'evening', - night: 'night' - }, - abbreviated: { - am: 'AM', - pm: 'PM', - midnight: 'midnight', - noon: 'noon', - morning: 'morning', - afternoon: 'afternoon', - evening: 'evening', - night: 'night' - }, - wide: { - am: 'a.m.', - pm: 'p.m.', - midnight: 'midnight', - noon: 'noon', - morning: 'morning', - afternoon: 'afternoon', - evening: 'evening', - night: 'night' - } -}; -var formattingDayPeriodValues = { - narrow: { - am: 'a', - pm: 'p', - midnight: 'mi', - noon: 'n', - morning: 'in the morning', - afternoon: 'in the afternoon', - evening: 'in the evening', - night: 'at night' - }, - abbreviated: { - am: 'AM', - pm: 'PM', - midnight: 'midnight', - noon: 'noon', - morning: 'in the morning', - afternoon: 'in the afternoon', - evening: 'in the evening', - night: 'at night' - }, - wide: { - am: 'a.m.', - pm: 'p.m.', - midnight: 'midnight', - noon: 'noon', - morning: 'in the morning', - afternoon: 'in the afternoon', - evening: 'in the evening', - night: 'at night' - } -}; -var ordinalNumber = function ordinalNumber(dirtyNumber, _options) { - var number = Number(dirtyNumber); - - // If ordinal numbers depend on context, for example, - // if they are different for different grammatical genders, - // use `options.unit`. - // - // `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear', - // 'day', 'hour', 'minute', 'second'. - - var rem100 = number % 100; - if (rem100 > 20 || rem100 < 10) { - switch (rem100 % 10) { - case 1: - return number + 'st'; - case 2: - return number + 'nd'; - case 3: - return number + 'rd'; - } - } - return number + 'th'; -}; -var localize = { - ordinalNumber: ordinalNumber, - era: buildLocalizeFn({ - values: eraValues, - defaultWidth: 'wide' - }), - quarter: buildLocalizeFn({ - values: quarterValues, - defaultWidth: 'wide', - argumentCallback: function argumentCallback(quarter) { - return quarter - 1; - } - }), - month: buildLocalizeFn({ - values: monthValues, - defaultWidth: 'wide' - }), - day: buildLocalizeFn({ - values: dayValues, - defaultWidth: 'wide' - }), - dayPeriod: buildLocalizeFn({ - values: dayPeriodValues, - defaultWidth: 'wide', - formattingValues: formattingDayPeriodValues, - defaultFormattingWidth: 'wide' - }) -}; -/* harmony default export */ const _lib_localize = (localize); -;// CONCATENATED MODULE: ./node_modules/date-fns/esm/locale/_lib/buildMatchFn/index.js -function buildMatchFn(args) { - return function (string) { - var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - var width = options.width; - var matchPattern = width && args.matchPatterns[width] || args.matchPatterns[args.defaultMatchWidth]; - var matchResult = string.match(matchPattern); - if (!matchResult) { - return null; - } - var matchedString = matchResult[0]; - var parsePatterns = width && args.parsePatterns[width] || args.parsePatterns[args.defaultParseWidth]; - var key = Array.isArray(parsePatterns) ? findIndex(parsePatterns, function (pattern) { - return pattern.test(matchedString); - }) : findKey(parsePatterns, function (pattern) { - return pattern.test(matchedString); - }); - var value; - value = args.valueCallback ? args.valueCallback(key) : key; - value = options.valueCallback ? options.valueCallback(value) : value; - var rest = string.slice(matchedString.length); - return { - value: value, - rest: rest - }; - }; -} -function findKey(object, predicate) { - for (var key in object) { - if (object.hasOwnProperty(key) && predicate(object[key])) { - return key; - } - } - return undefined; -} -function findIndex(array, predicate) { - for (var key = 0; key < array.length; key++) { - if (predicate(array[key])) { - return key; - } - } - return undefined; -} -;// CONCATENATED MODULE: ./node_modules/date-fns/esm/locale/_lib/buildMatchPatternFn/index.js -function buildMatchPatternFn(args) { - return function (string) { - var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - var matchResult = string.match(args.matchPattern); - if (!matchResult) return null; - var matchedString = matchResult[0]; - var parseResult = string.match(args.parsePattern); - if (!parseResult) return null; - var value = args.valueCallback ? args.valueCallback(parseResult[0]) : parseResult[0]; - value = options.valueCallback ? options.valueCallback(value) : value; - var rest = string.slice(matchedString.length); - return { - value: value, - rest: rest - }; - }; -} -;// CONCATENATED MODULE: ./node_modules/date-fns/esm/locale/en-US/_lib/match/index.js - - -var matchOrdinalNumberPattern = /^(\d+)(th|st|nd|rd)?/i; -var parseOrdinalNumberPattern = /\d+/i; -var matchEraPatterns = { - narrow: /^(b|a)/i, - abbreviated: /^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i, - wide: /^(before christ|before common era|anno domini|common era)/i -}; -var parseEraPatterns = { - any: [/^b/i, /^(a|c)/i] -}; -var matchQuarterPatterns = { - narrow: /^[1234]/i, - abbreviated: /^q[1234]/i, - wide: /^[1234](th|st|nd|rd)? quarter/i -}; -var parseQuarterPatterns = { - any: [/1/i, /2/i, /3/i, /4/i] -}; -var matchMonthPatterns = { - narrow: /^[jfmasond]/i, - abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i, - wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i -}; -var parseMonthPatterns = { - narrow: [/^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i], - any: [/^ja/i, /^f/i, /^mar/i, /^ap/i, /^may/i, /^jun/i, /^jul/i, /^au/i, /^s/i, /^o/i, /^n/i, /^d/i] -}; -var matchDayPatterns = { - narrow: /^[smtwf]/i, - short: /^(su|mo|tu|we|th|fr|sa)/i, - abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i, - wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i -}; -var parseDayPatterns = { - narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i], - any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i] -}; -var matchDayPeriodPatterns = { - narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i, - any: /^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i -}; -var parseDayPeriodPatterns = { - any: { - am: /^a/i, - pm: /^p/i, - midnight: /^mi/i, - noon: /^no/i, - morning: /morning/i, - afternoon: /afternoon/i, - evening: /evening/i, - night: /night/i - } -}; -var match = { - ordinalNumber: buildMatchPatternFn({ - matchPattern: matchOrdinalNumberPattern, - parsePattern: parseOrdinalNumberPattern, - valueCallback: function valueCallback(value) { - return parseInt(value, 10); - } - }), - era: buildMatchFn({ - matchPatterns: matchEraPatterns, - defaultMatchWidth: 'wide', - parsePatterns: parseEraPatterns, - defaultParseWidth: 'any' - }), - quarter: buildMatchFn({ - matchPatterns: matchQuarterPatterns, - defaultMatchWidth: 'wide', - parsePatterns: parseQuarterPatterns, - defaultParseWidth: 'any', - valueCallback: function valueCallback(index) { - return index + 1; - } - }), - month: buildMatchFn({ - matchPatterns: matchMonthPatterns, - defaultMatchWidth: 'wide', - parsePatterns: parseMonthPatterns, - defaultParseWidth: 'any' - }), - day: buildMatchFn({ - matchPatterns: matchDayPatterns, - defaultMatchWidth: 'wide', - parsePatterns: parseDayPatterns, - defaultParseWidth: 'any' - }), - dayPeriod: buildMatchFn({ - matchPatterns: matchDayPeriodPatterns, - defaultMatchWidth: 'any', - parsePatterns: parseDayPeriodPatterns, - defaultParseWidth: 'any' - }) -}; -/* harmony default export */ const _lib_match = (match); -;// CONCATENATED MODULE: ./node_modules/date-fns/esm/locale/en-US/index.js - - - - - -/** - * @type {Locale} - * @category Locales - * @summary English locale (United States). - * @language English - * @iso-639-2 eng - * @author Sasha Koss [@kossnocorp]{@link https://github.com/kossnocorp} - * @author Lesha Koss [@leshakoss]{@link https://github.com/leshakoss} - */ -var locale = { - code: 'en-US', - formatDistance: _lib_formatDistance, - formatLong: _lib_formatLong, - formatRelative: _lib_formatRelative, - localize: _lib_localize, - match: _lib_match, - options: { - weekStartsOn: 0 /* Sunday */, - firstWeekContainsDate: 1 - } -}; -/* harmony default export */ const en_US = (locale); -;// CONCATENATED MODULE: ./node_modules/date-fns/esm/_lib/defaultLocale/index.js - -/* harmony default export */ const defaultLocale = (en_US); -;// CONCATENATED MODULE: ./node_modules/date-fns/esm/format/index.js - - - - - - - - - - - // This RegExp consists of three parts separated by `|`: -// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token -// (one of the certain letters followed by `o`) -// - (\w)\1* matches any sequences of the same letter -// - '' matches two quote characters in a row -// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('), -// except a single quote symbol, which ends the sequence. -// Two quote characters do not end the sequence. -// If there is no matching single quote -// then the sequence will continue until the end of the string. -// - . matches any single character unmatched by previous parts of the RegExps -var formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g; - -// This RegExp catches symbols escaped by quotes, and also -// sequences of symbols P, p, and the combinations like `PPPPPPPppppp` -var longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g; -var escapedStringRegExp = /^'([^]*?)'?$/; -var doubleQuoteRegExp = /''/g; -var unescapedLatinCharacterRegExp = /[a-zA-Z]/; - -/** - * @name format - * @category Common Helpers - * @summary Format the date. - * - * @description - * Return the formatted date string in the given format. The result may vary by locale. - * - * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries. - * > See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md - * - * The characters wrapped between two single quotes characters (') are escaped. - * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote. - * (see the last example) - * - * Format of the string is based on Unicode Technical Standard #35: - * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table - * with a few additions (see note 7 below the table). - * - * Accepted patterns: - * | Unit | Pattern | Result examples | Notes | - * |---------------------------------|---------|-----------------------------------|-------| - * | Era | G..GGG | AD, BC | | - * | | GGGG | Anno Domini, Before Christ | 2 | - * | | GGGGG | A, B | | - * | Calendar year | y | 44, 1, 1900, 2017 | 5 | - * | | yo | 44th, 1st, 0th, 17th | 5,7 | - * | | yy | 44, 01, 00, 17 | 5 | - * | | yyy | 044, 001, 1900, 2017 | 5 | - * | | yyyy | 0044, 0001, 1900, 2017 | 5 | - * | | yyyyy | ... | 3,5 | - * | Local week-numbering year | Y | 44, 1, 1900, 2017 | 5 | - * | | Yo | 44th, 1st, 1900th, 2017th | 5,7 | - * | | YY | 44, 01, 00, 17 | 5,8 | - * | | YYY | 044, 001, 1900, 2017 | 5 | - * | | YYYY | 0044, 0001, 1900, 2017 | 5,8 | - * | | YYYYY | ... | 3,5 | - * | ISO week-numbering year | R | -43, 0, 1, 1900, 2017 | 5,7 | - * | | RR | -43, 00, 01, 1900, 2017 | 5,7 | - * | | RRR | -043, 000, 001, 1900, 2017 | 5,7 | - * | | RRRR | -0043, 0000, 0001, 1900, 2017 | 5,7 | - * | | RRRRR | ... | 3,5,7 | - * | Extended year | u | -43, 0, 1, 1900, 2017 | 5 | - * | | uu | -43, 01, 1900, 2017 | 5 | - * | | uuu | -043, 001, 1900, 2017 | 5 | - * | | uuuu | -0043, 0001, 1900, 2017 | 5 | - * | | uuuuu | ... | 3,5 | - * | Quarter (formatting) | Q | 1, 2, 3, 4 | | - * | | Qo | 1st, 2nd, 3rd, 4th | 7 | - * | | QQ | 01, 02, 03, 04 | | - * | | QQQ | Q1, Q2, Q3, Q4 | | - * | | QQQQ | 1st quarter, 2nd quarter, ... | 2 | - * | | QQQQQ | 1, 2, 3, 4 | 4 | - * | Quarter (stand-alone) | q | 1, 2, 3, 4 | | - * | | qo | 1st, 2nd, 3rd, 4th | 7 | - * | | qq | 01, 02, 03, 04 | | - * | | qqq | Q1, Q2, Q3, Q4 | | - * | | qqqq | 1st quarter, 2nd quarter, ... | 2 | - * | | qqqqq | 1, 2, 3, 4 | 4 | - * | Month (formatting) | M | 1, 2, ..., 12 | | - * | | Mo | 1st, 2nd, ..., 12th | 7 | - * | | MM | 01, 02, ..., 12 | | - * | | MMM | Jan, Feb, ..., Dec | | - * | | MMMM | January, February, ..., December | 2 | - * | | MMMMM | J, F, ..., D | | - * | Month (stand-alone) | L | 1, 2, ..., 12 | | - * | | Lo | 1st, 2nd, ..., 12th | 7 | - * | | LL | 01, 02, ..., 12 | | - * | | LLL | Jan, Feb, ..., Dec | | - * | | LLLL | January, February, ..., December | 2 | - * | | LLLLL | J, F, ..., D | | - * | Local week of year | w | 1, 2, ..., 53 | | - * | | wo | 1st, 2nd, ..., 53th | 7 | - * | | ww | 01, 02, ..., 53 | | - * | ISO week of year | I | 1, 2, ..., 53 | 7 | - * | | Io | 1st, 2nd, ..., 53th | 7 | - * | | II | 01, 02, ..., 53 | 7 | - * | Day of month | d | 1, 2, ..., 31 | | - * | | do | 1st, 2nd, ..., 31st | 7 | - * | | dd | 01, 02, ..., 31 | | - * | Day of year | D | 1, 2, ..., 365, 366 | 9 | - * | | Do | 1st, 2nd, ..., 365th, 366th | 7 | - * | | DD | 01, 02, ..., 365, 366 | 9 | - * | | DDD | 001, 002, ..., 365, 366 | | - * | | DDDD | ... | 3 | - * | Day of week (formatting) | E..EEE | Mon, Tue, Wed, ..., Sun | | - * | | EEEE | Monday, Tuesday, ..., Sunday | 2 | - * | | EEEEE | M, T, W, T, F, S, S | | - * | | EEEEEE | Mo, Tu, We, Th, Fr, Sa, Su | | - * | ISO day of week (formatting) | i | 1, 2, 3, ..., 7 | 7 | - * | | io | 1st, 2nd, ..., 7th | 7 | - * | | ii | 01, 02, ..., 07 | 7 | - * | | iii | Mon, Tue, Wed, ..., Sun | 7 | - * | | iiii | Monday, Tuesday, ..., Sunday | 2,7 | - * | | iiiii | M, T, W, T, F, S, S | 7 | - * | | iiiiii | Mo, Tu, We, Th, Fr, Sa, Su | 7 | - * | Local day of week (formatting) | e | 2, 3, 4, ..., 1 | | - * | | eo | 2nd, 3rd, ..., 1st | 7 | - * | | ee | 02, 03, ..., 01 | | - * | | eee | Mon, Tue, Wed, ..., Sun | | - * | | eeee | Monday, Tuesday, ..., Sunday | 2 | - * | | eeeee | M, T, W, T, F, S, S | | - * | | eeeeee | Mo, Tu, We, Th, Fr, Sa, Su | | - * | Local day of week (stand-alone) | c | 2, 3, 4, ..., 1 | | - * | | co | 2nd, 3rd, ..., 1st | 7 | - * | | cc | 02, 03, ..., 01 | | - * | | ccc | Mon, Tue, Wed, ..., Sun | | - * | | cccc | Monday, Tuesday, ..., Sunday | 2 | - * | | ccccc | M, T, W, T, F, S, S | | - * | | cccccc | Mo, Tu, We, Th, Fr, Sa, Su | | - * | AM, PM | a..aa | AM, PM | | - * | | aaa | am, pm | | - * | | aaaa | a.m., p.m. | 2 | - * | | aaaaa | a, p | | - * | AM, PM, noon, midnight | b..bb | AM, PM, noon, midnight | | - * | | bbb | am, pm, noon, midnight | | - * | | bbbb | a.m., p.m., noon, midnight | 2 | - * | | bbbbb | a, p, n, mi | | - * | Flexible day period | B..BBB | at night, in the morning, ... | | - * | | BBBB | at night, in the morning, ... | 2 | - * | | BBBBB | at night, in the morning, ... | | - * | Hour [1-12] | h | 1, 2, ..., 11, 12 | | - * | | ho | 1st, 2nd, ..., 11th, 12th | 7 | - * | | hh | 01, 02, ..., 11, 12 | | - * | Hour [0-23] | H | 0, 1, 2, ..., 23 | | - * | | Ho | 0th, 1st, 2nd, ..., 23rd | 7 | - * | | HH | 00, 01, 02, ..., 23 | | - * | Hour [0-11] | K | 1, 2, ..., 11, 0 | | - * | | Ko | 1st, 2nd, ..., 11th, 0th | 7 | - * | | KK | 01, 02, ..., 11, 00 | | - * | Hour [1-24] | k | 24, 1, 2, ..., 23 | | - * | | ko | 24th, 1st, 2nd, ..., 23rd | 7 | - * | | kk | 24, 01, 02, ..., 23 | | - * | Minute | m | 0, 1, ..., 59 | | - * | | mo | 0th, 1st, ..., 59th | 7 | - * | | mm | 00, 01, ..., 59 | | - * | Second | s | 0, 1, ..., 59 | | - * | | so | 0th, 1st, ..., 59th | 7 | - * | | ss | 00, 01, ..., 59 | | - * | Fraction of second | S | 0, 1, ..., 9 | | - * | | SS | 00, 01, ..., 99 | | - * | | SSS | 000, 001, ..., 999 | | - * | | SSSS | ... | 3 | - * | Timezone (ISO-8601 w/ Z) | X | -08, +0530, Z | | - * | | XX | -0800, +0530, Z | | - * | | XXX | -08:00, +05:30, Z | | - * | | XXXX | -0800, +0530, Z, +123456 | 2 | - * | | XXXXX | -08:00, +05:30, Z, +12:34:56 | | - * | Timezone (ISO-8601 w/o Z) | x | -08, +0530, +00 | | - * | | xx | -0800, +0530, +0000 | | - * | | xxx | -08:00, +05:30, +00:00 | 2 | - * | | xxxx | -0800, +0530, +0000, +123456 | | - * | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | | - * | Timezone (GMT) | O...OOO | GMT-8, GMT+5:30, GMT+0 | | - * | | OOOO | GMT-08:00, GMT+05:30, GMT+00:00 | 2 | - * | Timezone (specific non-locat.) | z...zzz | GMT-8, GMT+5:30, GMT+0 | 6 | - * | | zzzz | GMT-08:00, GMT+05:30, GMT+00:00 | 2,6 | - * | Seconds timestamp | t | 512969520 | 7 | - * | | tt | ... | 3,7 | - * | Milliseconds timestamp | T | 512969520900 | 7 | - * | | TT | ... | 3,7 | - * | Long localized date | P | 04/29/1453 | 7 | - * | | PP | Apr 29, 1453 | 7 | - * | | PPP | April 29th, 1453 | 7 | - * | | PPPP | Friday, April 29th, 1453 | 2,7 | - * | Long localized time | p | 12:00 AM | 7 | - * | | pp | 12:00:00 AM | 7 | - * | | ppp | 12:00:00 AM GMT+2 | 7 | - * | | pppp | 12:00:00 AM GMT+02:00 | 2,7 | - * | Combination of date and time | Pp | 04/29/1453, 12:00 AM | 7 | - * | | PPpp | Apr 29, 1453, 12:00:00 AM | 7 | - * | | PPPppp | April 29th, 1453 at ... | 7 | - * | | PPPPpppp| Friday, April 29th, 1453 at ... | 2,7 | - * Notes: - * 1. "Formatting" units (e.g. formatting quarter) in the default en-US locale - * are the same as "stand-alone" units, but are different in some languages. - * "Formatting" units are declined according to the rules of the language - * in the context of a date. "Stand-alone" units are always nominative singular: - * - * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'` - * - * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'` - * - * 2. Any sequence of the identical letters is a pattern, unless it is escaped by - * the single quote characters (see below). - * If the sequence is longer than listed in table (e.g. `EEEEEEEEEEE`) - * the output will be the same as default pattern for this unit, usually - * the longest one (in case of ISO weekdays, `EEEE`). Default patterns for units - * are marked with "2" in the last column of the table. - * - * `format(new Date(2017, 10, 6), 'MMM') //=> 'Nov'` - * - * `format(new Date(2017, 10, 6), 'MMMM') //=> 'November'` - * - * `format(new Date(2017, 10, 6), 'MMMMM') //=> 'N'` - * - * `format(new Date(2017, 10, 6), 'MMMMMM') //=> 'November'` - * - * `format(new Date(2017, 10, 6), 'MMMMMMM') //=> 'November'` - * - * 3. Some patterns could be unlimited length (such as `yyyyyyyy`). - * The output will be padded with zeros to match the length of the pattern. - * - * `format(new Date(2017, 10, 6), 'yyyyyyyy') //=> '00002017'` - * - * 4. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales. - * These tokens represent the shortest form of the quarter. - * - * 5. The main difference between `y` and `u` patterns are B.C. years: - * - * | Year | `y` | `u` | - * |------|-----|-----| - * | AC 1 | 1 | 1 | - * | BC 1 | 1 | 0 | - * | BC 2 | 2 | -1 | - * - * Also `yy` always returns the last two digits of a year, - * while `uu` pads single digit years to 2 characters and returns other years unchanged: - * - * | Year | `yy` | `uu` | - * |------|------|------| - * | 1 | 01 | 01 | - * | 14 | 14 | 14 | - * | 376 | 76 | 376 | - * | 1453 | 53 | 1453 | - * - * The same difference is true for local and ISO week-numbering years (`Y` and `R`), - * except local week-numbering years are dependent on `options.weekStartsOn` - * and `options.firstWeekContainsDate` (compare [getISOWeekYear]{@link https://date-fns.org/docs/getISOWeekYear} - * and [getWeekYear]{@link https://date-fns.org/docs/getWeekYear}). - * - * 6. Specific non-location timezones are currently unavailable in `date-fns`, - * so right now these tokens fall back to GMT timezones. - * - * 7. These patterns are not in the Unicode Technical Standard #35: - * - `i`: ISO day of week - * - `I`: ISO week of year - * - `R`: ISO week-numbering year - * - `t`: seconds timestamp - * - `T`: milliseconds timestamp - * - `o`: ordinal number modifier - * - `P`: long localized date - * - `p`: long localized time - * - * 8. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years. - * You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md - * - * 9. `D` and `DD` tokens represent days of the year but they are often confused with days of the month. - * You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md - * - * @param {Date|Number} date - the original date - * @param {String} format - the string of tokens - * @param {Object} [options] - an object with options. - * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale} - * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday) - * @param {Number} [options.firstWeekContainsDate=1] - the day of January, which is - * @param {Boolean} [options.useAdditionalWeekYearTokens=false] - if true, allows usage of the week-numbering year tokens `YY` and `YYYY`; - * see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md - * @param {Boolean} [options.useAdditionalDayOfYearTokens=false] - if true, allows usage of the day of year tokens `D` and `DD`; - * see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md - * @returns {String} the formatted date string - * @throws {TypeError} 2 arguments required - * @throws {RangeError} `date` must not be Invalid Date - * @throws {RangeError} `options.locale` must contain `localize` property - * @throws {RangeError} `options.locale` must contain `formatLong` property - * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6 - * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7 - * @throws {RangeError} use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md - * @throws {RangeError} use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md - * @throws {RangeError} use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md - * @throws {RangeError} use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md - * @throws {RangeError} format string contains an unescaped latin alphabet character - * - * @example - * // Represent 11 February 2014 in middle-endian format: - * const result = format(new Date(2014, 1, 11), 'MM/dd/yyyy') - * //=> '02/11/2014' - * - * @example - * // Represent 2 July 2014 in Esperanto: - * import { eoLocale } from 'date-fns/locale/eo' - * const result = format(new Date(2014, 6, 2), "do 'de' MMMM yyyy", { - * locale: eoLocale - * }) - * //=> '2-a de julio 2014' - * - * @example - * // Escape string by single quote characters: - * const result = format(new Date(2014, 6, 2, 15), "h 'o''clock'") - * //=> "3 o'clock" - */ - -function format(dirtyDate, dirtyFormatStr, options) { - var _ref, _options$locale, _ref2, _ref3, _ref4, _options$firstWeekCon, _options$locale2, _options$locale2$opti, _defaultOptions$local, _defaultOptions$local2, _ref5, _ref6, _ref7, _options$weekStartsOn, _options$locale3, _options$locale3$opti, _defaultOptions$local3, _defaultOptions$local4; - requiredArgs(2, arguments); - var formatStr = String(dirtyFormatStr); - var defaultOptions = getDefaultOptions(); - var locale = (_ref = (_options$locale = options === null || options === void 0 ? void 0 : options.locale) !== null && _options$locale !== void 0 ? _options$locale : defaultOptions.locale) !== null && _ref !== void 0 ? _ref : defaultLocale; - var firstWeekContainsDate = toInteger((_ref2 = (_ref3 = (_ref4 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale2 = options.locale) === null || _options$locale2 === void 0 ? void 0 : (_options$locale2$opti = _options$locale2.options) === null || _options$locale2$opti === void 0 ? void 0 : _options$locale2$opti.firstWeekContainsDate) !== null && _ref4 !== void 0 ? _ref4 : defaultOptions.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : 1); - - // Test if weekStartsOn is between 1 and 7 _and_ is not NaN - if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) { - throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively'); - } - var weekStartsOn = toInteger((_ref5 = (_ref6 = (_ref7 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale3 = options.locale) === null || _options$locale3 === void 0 ? void 0 : (_options$locale3$opti = _options$locale3.options) === null || _options$locale3$opti === void 0 ? void 0 : _options$locale3$opti.weekStartsOn) !== null && _ref7 !== void 0 ? _ref7 : defaultOptions.weekStartsOn) !== null && _ref6 !== void 0 ? _ref6 : (_defaultOptions$local3 = defaultOptions.locale) === null || _defaultOptions$local3 === void 0 ? void 0 : (_defaultOptions$local4 = _defaultOptions$local3.options) === null || _defaultOptions$local4 === void 0 ? void 0 : _defaultOptions$local4.weekStartsOn) !== null && _ref5 !== void 0 ? _ref5 : 0); - - // Test if weekStartsOn is between 0 and 6 _and_ is not NaN - if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) { - throw new RangeError('weekStartsOn must be between 0 and 6 inclusively'); - } - if (!locale.localize) { - throw new RangeError('locale must contain localize property'); - } - if (!locale.formatLong) { - throw new RangeError('locale must contain formatLong property'); - } - var originalDate = toDate(dirtyDate); - if (!isValid(originalDate)) { - throw new RangeError('Invalid time value'); - } - - // Convert the date in system timezone to the same date in UTC+00:00 timezone. - // This ensures that when UTC functions will be implemented, locales will be compatible with them. - // See an issue about UTC functions: https://github.com/date-fns/date-fns/issues/376 - var timezoneOffset = getTimezoneOffsetInMilliseconds(originalDate); - var utcDate = subMilliseconds(originalDate, timezoneOffset); - var formatterOptions = { - firstWeekContainsDate: firstWeekContainsDate, - weekStartsOn: weekStartsOn, - locale: locale, - _originalDate: originalDate - }; - var result = formatStr.match(longFormattingTokensRegExp).map(function (substring) { - var firstCharacter = substring[0]; - if (firstCharacter === 'p' || firstCharacter === 'P') { - var longFormatter = format_longFormatters[firstCharacter]; - return longFormatter(substring, locale.formatLong); - } - return substring; - }).join('').match(formattingTokensRegExp).map(function (substring) { - // Replace two single quote characters with one single quote character - if (substring === "''") { - return "'"; - } - var firstCharacter = substring[0]; - if (firstCharacter === "'") { - return cleanEscapedString(substring); - } - var formatter = format_formatters[firstCharacter]; - if (formatter) { - if (!(options !== null && options !== void 0 && options.useAdditionalWeekYearTokens) && isProtectedWeekYearToken(substring)) { - throwProtectedError(substring, dirtyFormatStr, String(dirtyDate)); - } - if (!(options !== null && options !== void 0 && options.useAdditionalDayOfYearTokens) && isProtectedDayOfYearToken(substring)) { - throwProtectedError(substring, dirtyFormatStr, String(dirtyDate)); - } - return formatter(utcDate, substring, locale.localize, formatterOptions); - } - if (firstCharacter.match(unescapedLatinCharacterRegExp)) { - throw new RangeError('Format string contains an unescaped latin alphabet character `' + firstCharacter + '`'); - } - return substring; - }).join(''); - return result; -} -function cleanEscapedString(input) { - var matched = input.match(escapedStringRegExp); - if (!matched) { - return input; - } - return matched[1].replace(doubleQuoteRegExp, "'"); -} -// EXTERNAL MODULE: ./node_modules/react-fast-compare/index.js -var react_fast_compare = __webpack_require__(590); -var react_fast_compare_default = /*#__PURE__*/__webpack_require__.n(react_fast_compare); -;// CONCATENATED MODULE: ./src/form/components/EditableList/js/EditableListForm.js -var EditableListForm_defProp = Object.defineProperty; -var EditableListForm_defProps = Object.defineProperties; -var EditableListForm_getOwnPropDescs = Object.getOwnPropertyDescriptors; -var EditableListForm_getOwnPropSymbols = Object.getOwnPropertySymbols; -var EditableListForm_hasOwnProp = Object.prototype.hasOwnProperty; -var EditableListForm_propIsEnum = Object.prototype.propertyIsEnumerable; -var EditableListForm_defNormalProp = (obj, key, value) => key in obj ? EditableListForm_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var EditableListForm_spreadValues = (a, b) => { - for (var prop in b || (b = {})) - if (EditableListForm_hasOwnProp.call(b, prop)) - EditableListForm_defNormalProp(a, prop, b[prop]); - if (EditableListForm_getOwnPropSymbols) - for (var prop of EditableListForm_getOwnPropSymbols(b)) { - if (EditableListForm_propIsEnum.call(b, prop)) - EditableListForm_defNormalProp(a, prop, b[prop]); - } - return a; -}; -var EditableListForm_spreadProps = (a, b) => EditableListForm_defProps(a, EditableListForm_getOwnPropDescs(b)); -var EditableListForm_objRest = (source, exclude) => { - var target = {}; - for (var prop in source) - if (EditableListForm_hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) - target[prop] = source[prop]; - if (source != null && EditableListForm_getOwnPropSymbols) - for (var prop of EditableListForm_getOwnPropSymbols(source)) { - if (exclude.indexOf(prop) < 0 && EditableListForm_propIsEnum.call(source, prop)) - target[prop] = source[prop]; - } - return target; -}; -var EditableListForm_publicField = (obj, key, value) => { - EditableListForm_defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); - return value; -}; - - - - - - -const _EditableListForm = class _EditableListForm extends external_react_namespaceObject.Component { - static getMainFormValue(components) { - const mainFormValue = new Array(components.length); - components.forEach((component, index) => { - mainFormValue[index] = component.props.value || void 0; - }); - return mainFormValue; - } - constructor(props) { - super(props); - const { - components - } = props; - this.submitButtonRef = (0,external_react_namespaceObject.createRef)(); - this.handleOnChange = this.handleOnChange.bind(this); - this.submitForm = this.submitForm.bind(this); - this.state = { - components, - errors: {}, - mainError: null, - mainFormValue: _EditableListForm.getMainFormValue(components), - refs: [] - }; - } - componentDidMount() { - const { - addValueOnFieldChange, - getMainFormButtonWidth - } = this.props; - this.createRefs(); - if (getMainFormButtonWidth) { - getMainFormButtonWidth( - !addValueOnFieldChange ? this.submitButtonRef.current.clientWidth : 0 - ); - } - } - static getDerivedStateFromProps(nextProps, prevState) { - const state = {}; - const { - components: propsComponents - } = nextProps; - const { - components: stateComponents - } = prevState; - if (!react_fast_compare_default()(propsComponents, stateComponents) && !react_fast_compare_default()( - _EditableListForm.getMainFormValue(propsComponents), - _EditableListForm.getMainFormValue(stateComponents) - )) { - state.mainFormValue = _EditableListForm.getMainFormValue(propsComponents); - state.components = propsComponents; - } - return state; - } - getFormCssClasses() { - const { noLabels } = this.props; - const cssClasses = ["tyk-editable-list__form"]; - if (noLabels) { - cssClasses.push("no-labels"); - } - return cssClasses.join(" "); - } - getButtonClassName() { - const { buttonStyle, displayType } = this.props; - const cssClasses = []; - if (buttonStyle) { - cssClasses.push(buttonStyle); - } - if (displayType) { - cssClasses.push(displayType); - } - return cssClasses.join(" "); - } - getComponentsError(component) { - const { - error, - errors, - mainError - } = this.state; - if (error || mainError) { - errors[component.props.name] = "true"; - } else if (!(error || mainError) && errors[component.props.name] === "true") { - delete errors[component.props.name]; - } - return errors[component.props.name] ? errors[component.props.name].toString() : void 0; - } - createRefs() { - const { components } = this.props; - const refs = []; - components.forEach(() => { - refs.push((0,external_react_namespaceObject.createRef)()); - }); - this.setState({ - refs - }); - } - validateValue(value, props) { - const { mainError, errors } = this.state; - const { error, errorPersist } = this.props; - const validatorsNames = props.validate ? Object.keys(props.validate) : []; - const tempState = { - errors: error || mainError ? {} : Object.assign({}, errors) - }; - let ok = true; - if (errorPersist) { - return tempState; - } - for (let i = 0; i < validatorsNames.length; i += 1) { - const validator = props.validate[validatorsNames[i]]; - if (validator(value)) { - tempState.errors[props.name] = props.validationmessages[validatorsNames[i]]; - ok = false; - break; - } - } - if (ok) { - delete tempState.errors[props.name]; - } - tempState.mainError = null; - return tempState; - } - hasMainFormErrors(errors) { - const { components, errorPersist } = this.props; - const { mainFormValue } = this.state; - const tempState = { - errors: Object.assign({}, errors) - }; - if (errorPersist && mainFormValue.indexOf(void 0) === -1) { - return false; - } - if (Object.keys(tempState.errors).length > 0) { - return true; - } - components.forEach((component, index) => { - tempState.errors = Object.assign( - {}, - tempState.errors, - this.validateValue(mainFormValue[index], component.props).errors - ); - }); - return Object.keys(tempState.errors).length > 0; - } - handleOnChange(component, index, value) { - const { addValueOnFieldChange } = this.props; - let tempState = this.state; - tempState = Object.assign({}, tempState, this.validateValue(value, component.props)); - if (!tempState.errors[component.props.name]) { - tempState.mainFormValue[index] = value; - if (component.props.onChange) { - component.props.onChange(value); - } - } - this.setState((previousState) => Object.assign({}, previousState, tempState), () => { - if (addValueOnFieldChange) { - this.submitForm(); - } - }); - } - resetForm() { - const { refs } = this.state; - const { - components - } = this.props; - refs.forEach((ref) => { - var _a; - if ((_a = ref.current) == null ? void 0 : _a.reset) { - ref.current.reset(); - } - }); - this.setState({ - errors: {}, - mainError: null, - mainFormValue: _EditableListForm.getMainFormValue(components) - }); - } - showMainError(error) { - this.setState({ - mainError: error - }); - } - submitForm() { - const { errors, mainFormValue } = this.state; - const { - errorPersist, - onSubmit, - validate, - validationmessage - } = this.props; - if (errorPersist) { - onSubmit(mainFormValue); - this.resetForm(); - } - if (Object.keys(errors).length === 0 && (onSubmit && typeof onSubmit === "function")) { - if (validate) { - if (validate(mainFormValue)) { - this.showMainError(validationmessage); - } else { - onSubmit(mainFormValue); - this.resetForm(); - } - } else { - onSubmit(mainFormValue); - this.resetForm(); - } - } - } - render() { - const { - addValueOnFieldChange, - components, - buttonName, - disabled, - displayType, - error - } = this.props; - const { - mainError, - refs, - errors - } = this.state; - return /* @__PURE__ */ external_react_default().createElement("div", null, /* @__PURE__ */ external_react_default().createElement("div", { className: this.getFormCssClasses() }, /* @__PURE__ */ external_react_default().createElement(Row_Row, null, components.map((component, index) => { - const ComponentName = component.name; - const _a = component.props, { - onChange, - value - } = _a, rest = EditableListForm_objRest(_a, [ - "onChange", - "value" - ]); - return /* @__PURE__ */ external_react_default().createElement(layout_Column, { size: `md-${component.size || "12"} lg-${component.size || "12"}`, key: component.props.name }, /* @__PURE__ */ external_react_default().createElement( - ComponentName, - EditableListForm_spreadProps(EditableListForm_spreadValues({ - disabled: disabled || component.props.disabled, - onChange: this.handleOnChange.bind(this, component, index) - }, rest), { - label: displayType === "inline" ? "" : component.props.label, - error: this.getComponentsError(component), - ref: refs[index], - value - }) - )); - })), !addValueOnFieldChange ? /* @__PURE__ */ external_react_default().createElement( - "span", - { - className: this.getButtonClassName(), - ref: this.submitButtonRef - }, - /* @__PURE__ */ external_react_default().createElement( - components_Button, - { - disabled: this.hasMainFormErrors(errors), - className: "tyk-editable-list__submit-btn", - onClick: this.submitForm, - theme: "default", - type: "button", - size: displayType === "inline" ? "sm" : "md" - }, - buttonName || "ADD" - ) - ) : null), error || mainError ? /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-editable-list-main-error" }, /* @__PURE__ */ external_react_default().createElement("p", { className: "error-message" }, error || mainError)) : null); - } -}; -EditableListForm_publicField(_EditableListForm, "propTypes", { - addValueOnFieldChange: (external_prop_types_default()).bool, - noLabels: (external_prop_types_default()).bool, - buttonName: (external_prop_types_default()).string, - buttonStyle: (external_prop_types_default()).string, - components: external_prop_types_default().instanceOf(Array), - displayType: (external_prop_types_default()).string, - disabled: (external_prop_types_default()).bool, - getMainFormButtonWidth: (external_prop_types_default()).func, - error: (external_prop_types_default()).string, - errorPersist: (external_prop_types_default()).bool, - onSubmit: (external_prop_types_default()).func, - validate: (external_prop_types_default()).func, - validationmessage: (external_prop_types_default()).string -}); -let EditableListForm = _EditableListForm; - - -;// CONCATENATED MODULE: ./src/form/components/EditableList/index.js -var EditableList_defProp = Object.defineProperty; -var EditableList_defNormalProp = (obj, key, value) => key in obj ? EditableList_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var EditableList_publicField = (obj, key, value) => { - EditableList_defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); - return value; -}; - - - - - - - - - - -const _EditableList = class _EditableList extends external_react_namespaceObject.Component { - static getItemListValue(itemValue) { - let tempValue = null; - if (typeof itemValue === "string") { - tempValue = itemValue; - } - if (Object.prototype.toString.call(itemValue) === "[object Object]") { - tempValue = itemValue.name; - } - if (isDate(itemValue)) { - tempValue = format(itemValue, "dd/MM/yyyy"); - } - return tempValue; - } - static getListItemCssClass(displayType) { - const cssClasses = []; - if (displayType === "inline") { - cssClasses.push("tyk-editable-list-item--inline"); - } - return cssClasses.join(" "); - } - constructor(props) { - super(props); - const { - value - } = this.props; - this.state = { - initialValue: value || "", - value: value || [], - buttonWidth: 0 - }; - this.startIndex = 1; - this.handleFormSubmit = this.handleFormSubmit.bind(this); - this.getMainFormButtonWidth = this.getMainFormButtonWidth.bind(this); - this.dropdownListItemRef = (0,external_react_namespaceObject.createRef)(); - } - static getDerivedStateFromProps(nextProps, prevState) { - const state = {}; - if (nextProps.value && JSON.stringify(nextProps.value) !== JSON.stringify(prevState.initialValue)) { - state.value = nextProps.value || []; - state.initialValue = nextProps.value || ""; - } - return state.value ? state : null; - } - getListItemsCssClass(displayType) { - const { config } = this.props; - const cssClasses = ["tyk-editable-list-items"]; - cssClasses.push(config.displayType || "table"); - if (displayType === "inline") { - cssClasses.push("tyk-editable-list-items--inline"); - } - return cssClasses.join(" "); - } - getFormInputKey() { - this.startIndex += 1; - return this.startIndex; - } - // generate list item value's based on the display types - // table, inline, list - getListItemText(itemData) { - const { config } = this.props; - let value = null; - switch (config.displayType) { - case "list": - case "inline": { - const itemText = itemData.value.reduce((prevValue, itemValue, index) => { - const tempValue = _EditableList.getItemListValue(itemValue); - let separator = ", "; - if (index === itemData.value.length - 1) { - separator = ""; - } - return prevValue + tempValue + separator; - }, ""); - value = itemText; - break; - } - default: - value = /* @__PURE__ */ external_react_default().createElement(Row_Row, null, config.components.map((component, index) => /* @__PURE__ */ external_react_default().createElement( - layout_Column, - { - key: this.getFormInputKey(), - size: `md-${component.size} lg-${component.size}` - }, - _EditableList.getItemListValue(itemData.value[index]) - ))); - break; - } - return value; - } - getMainFormButtonWidth(value) { - this.setState({ - buttonWidth: value - }); - } - setItemEditMode(index) { - const newValues = this.closeListItems(); - this.setState((previousState) => { - const tempState = Object.assign({}, previousState); - tempState.value = newValues; - tempState.value[index].editMode = !tempState.value[index].editMode; - return tempState; - }); - } - isInList(index, itemValue) { - const { value } = this.state; - let ok = false; - value.forEach((item, itemIndex) => { - if (JSON.stringify(item.value) === JSON.stringify(itemValue)) { - if (index >= 0 && itemIndex === index) { - ok = false; - } else { - ok = true; - } - } - }); - return ok; - } - addValues(newValue) { - const { value } = this.state; - const { config } = this.props; - const itemValue = { - editMode: false, - value: newValue - }; - const tempState = { - value: value.slice(0) - }; - if (config.children) { - itemValue.children = []; - } - tempState.value.push(itemValue); - return tempState; - } - removeListItem(index) { - let removedItem; - this.setState((previousState) => { - const valueArr = previousState.value.slice(0); - removedItem = valueArr.splice(index, 1); - return { - value: valueArr - }; - }, () => { - this.triggerOnChange(index, removedItem, null); - }); - } - handleFormSubmit(value) { - const tempState = this.addValues(value); - this.setState((previousState) => Object.assign({}, previousState, tempState), () => { - this.triggerOnChange(tempState.value.length - 1, null, value); - }); - } - handleItemUpdate(index, value) { - let prevValue; - this.setState((previousState) => { - const tempState = Object.assign({}, previousState); - prevValue = (0,external_immutable_namespaceObject.fromJS)(tempState.value[index].value).toJS(); - tempState.value[index].value = value; - tempState.value[index].editMode = false; - return tempState; - }, () => { - this.triggerOnChange(index, prevValue, value); - }); - } - handleChildrenOnChange(index, value) { - let prevValue; - this.setState((previousState) => { - const tempState = Object.assign({}, previousState); - prevValue = (0,external_immutable_namespaceObject.fromJS)(tempState.value[index].children).toJS(); - tempState.value[index].children = value; - return tempState; - }, () => { - this.triggerOnChange(index, prevValue, value); - }); - } - closeListItems() { - const { value } = this.state; - const newValues = value.map((itemValue) => { - const tempItemValue = Object.assign({}, itemValue); - if (tempItemValue.editMode) { - tempItemValue.editMode = false; - return tempItemValue; - } - return tempItemValue; - }); - return newValues; - } - triggerOnChange(index, prevValue, nextValue) { - const { onChange } = this.props; - const { value } = this.state; - if (onChange && typeof onChange === "function") { - onChange(value.length ? value : null, index, prevValue, nextValue); - } - } - genListItem(itemData, index) { - const { config, disabled } = this.props; - const { buttonWidth, value } = this.state; - const clonedComponents = (0,external_immutable_namespaceObject.fromJS)(config.components).toJS(); - itemData.value.forEach((itemValue, itemIndex) => { - clonedComponents[itemIndex].props.value = itemValue; - }); - return /* @__PURE__ */ external_react_default().createElement( - "li", - { - key: index, - className: _EditableList.getListItemCssClass(config.displayType), - ref: this.dropdownListItemRef - }, - /* @__PURE__ */ external_react_default().createElement( - "div", - { - className: `tyk-editable-list-item__text ${config.displayType || "table"}${itemData.editMode ? " edit-mode-wrapper" : ""}` - }, - !itemData.editMode ? /* @__PURE__ */ external_react_default().createElement(external_react_namespaceObject.Fragment, null, this.getListItemText(itemData, index), /* @__PURE__ */ external_react_default().createElement( - "div", - { - className: "tyk-editable-list-item__controls", - style: { - display: "block", - width: config.displayType === "inline" ? "auto" : `${buttonWidth + 60}px` - } - }, - /* @__PURE__ */ external_react_default().createElement("button", { disabled, type: "button", className: "tyk-editable-list-action__button", onClick: this.setItemEditMode.bind(this, index) }, /* @__PURE__ */ external_react_default().createElement(components_Icon, { type: "edit" })), - /* @__PURE__ */ external_react_default().createElement("button", { disabled, type: "button", className: "tyk-editable-list-action__button", onClick: this.removeListItem.bind(this, index) }, /* @__PURE__ */ external_react_default().createElement(components_Icon, { type: "trash" })) - )) : /* @__PURE__ */ external_react_default().createElement(external_react_namespaceObject.Fragment, null, /* @__PURE__ */ external_react_default().createElement( - EditableListForm, - { - buttonName: "Update", - noLabels: config.noLabels, - disabled, - displayType: config.displayType, - components: clonedComponents, - onSubmit: this.handleItemUpdate.bind(this, index), - validate: this.isInList.bind(this, index), - validationmessage: "This value is already in the list" - } - ), /* @__PURE__ */ external_react_default().createElement("button", { type: "button", className: "tyk-editable-list-action__button on-edit", onClick: this.removeListItem.bind(this, index) }, /* @__PURE__ */ external_react_default().createElement(components_Icon, { type: "trash" }))) - ), - config.children ? /* @__PURE__ */ external_react_default().createElement( - _EditableList, - { - disabled, - onChange: this.handleChildrenOnChange.bind(this, index), - config: config.children.config, - value: value[index] && value[index].children || [] - } - ) : null - ); - } - genList() { - const { config } = this.props; - const { buttonWidth, value } = this.state; - if (!value || value.length === 0) { - return null; - } - return /* @__PURE__ */ external_react_default().createElement(external_react_namespaceObject.Fragment, null, config.displayType === "table" || !config.displayType ? /* @__PURE__ */ external_react_default().createElement( - "div", - { - className: "tyk-editable-list__header", - style: { - paddingRight: `${buttonWidth + 60}px` - } - }, - /* @__PURE__ */ external_react_default().createElement(Row_Row, null, config.components.map((component, index) => /* @__PURE__ */ external_react_default().createElement(layout_Column, { key: component.props.label || index, size: `md-${component.size || 12} lg-${component.size || 12}` }, component.props.label))) - ) : null, /* @__PURE__ */ external_react_default().createElement("ul", { className: this.getListItemsCssClass(config.displayType) }, value.map((itemData, index) => this.genListItem(itemData, index)))); - } - render() { - const { - addValueOnFieldChange, - config, - error, - disabled, - label - } = this.props; - const appendToElement = document.querySelector(config.appendTo) || document.querySelector("body"); - return /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-editable-list" }, label ? /* @__PURE__ */ external_react_default().createElement("label", null, label) : null, /* @__PURE__ */ external_react_default().createElement( - EditableListForm, - { - addValueOnFieldChange, - components: config.components, - buttonName: config.formButtonTitle, - buttonStyle: config.formButtonStyle, - disabled, - error, - errorPersist: !!error, - noLabels: config.noLabels, - onSubmit: this.handleFormSubmit, - validate: this.isInList.bind(this, -1), - validationmessage: "This value is already in the list", - getMainFormButtonWidth: this.getMainFormButtonWidth - } - ), config.appendTo ? external_react_dom_default().createPortal( - this.genList(), - appendToElement - ) : this.genList()); - } -}; -EditableList_publicField(_EditableList, "propTypes", { - addValueOnFieldChange: (external_prop_types_default()).bool, - disabled: (external_prop_types_default()).bool, - error: (external_prop_types_default()).string, - config: external_prop_types_default().instanceOf(Object), - onChange: (external_prop_types_default()).func, - label: external_prop_types_default().oneOfType([ - external_prop_types_default().arrayOf((external_prop_types_default()).node), - (external_prop_types_default()).node, - (external_prop_types_default()).element, - (external_prop_types_default()).func, - (external_prop_types_default()).string - ]), - value: external_prop_types_default().oneOfType([ - external_prop_types_default().instanceOf(Array), - external_prop_types_default().instanceOf(Object) - ]) -}); -let EditableList = _EditableList; - - -;// CONCATENATED MODULE: ./src/form/components/EditableList2/Header.js - - - -const Header_Header = ({ - label, - addButtonName, - onAddRow, - disabled, - readOnly -}) => /* @__PURE__ */ external_react_default().createElement("div", { className: "editable-list__header" }, label ? /* @__PURE__ */ external_react_default().createElement("label", null, label) : null, !disabled && !readOnly && /* @__PURE__ */ external_react_default().createElement( - components_Button, - { - theme: "primary rounded-corners", - onClick: onAddRow - }, - addButtonName || "Add" -)); -Header_Header.propTypes = { - disabled: (external_prop_types_default()).bool, - readOnly: (external_prop_types_default()).bool, - onAddRow: (external_prop_types_default()).func, - addButtonName: (external_prop_types_default()).string, - label: external_prop_types_default().oneOfType([ - (external_prop_types_default()).string, - (external_prop_types_default()).element, - (external_prop_types_default()).node - ]) -}; -/* harmony default export */ const EditableList2_Header = (Header_Header); - -;// CONCATENATED MODULE: ./src/form/components/EditableList2/ListHeader.js - - -const ListHeader = ({ - fields, - readOnly -}) => /* @__PURE__ */ external_react_default().createElement("li", { className: "editable-list__item editable-list__item-header" }, fields.map((field) => { - var _a; - return /* @__PURE__ */ external_react_default().createElement("div", { className: `editable-list__item-cell editable-list__item--size-${(field == null ? void 0 : field.size) || 12}` }, (_a = field == null ? void 0 : field.props) == null ? void 0 : _a.label); -}), /* @__PURE__ */ external_react_default().createElement("div", { className: `editable-list__item-cell editable-list__item-action ${readOnly && "editable-list__item-action--read-only"}` }, "Delete")); -ListHeader.propTypes = { - fields: external_prop_types_default().instanceOf(Array), - readOnly: (external_prop_types_default()).bool -}; -/* harmony default export */ const EditableList2_ListHeader = (ListHeader); - -;// CONCATENATED MODULE: ./src/form/components/EditableList2/FieldsList.js -var FieldsList_defProp = Object.defineProperty; -var FieldsList_defProps = Object.defineProperties; -var FieldsList_getOwnPropDescs = Object.getOwnPropertyDescriptors; -var FieldsList_getOwnPropSymbols = Object.getOwnPropertySymbols; -var FieldsList_hasOwnProp = Object.prototype.hasOwnProperty; -var FieldsList_propIsEnum = Object.prototype.propertyIsEnumerable; -var FieldsList_defNormalProp = (obj, key, value) => key in obj ? FieldsList_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var FieldsList_spreadValues = (a, b) => { - for (var prop in b || (b = {})) - if (FieldsList_hasOwnProp.call(b, prop)) - FieldsList_defNormalProp(a, prop, b[prop]); - if (FieldsList_getOwnPropSymbols) - for (var prop of FieldsList_getOwnPropSymbols(b)) { - if (FieldsList_propIsEnum.call(b, prop)) - FieldsList_defNormalProp(a, prop, b[prop]); - } - return a; -}; -var FieldsList_spreadProps = (a, b) => FieldsList_defProps(a, FieldsList_getOwnPropDescs(b)); - - - -const FieldsList = ({ - fields, - disabled, - readOnly, - errors, - components, - onChange, - onDelete, - value, - rowIndex -}) => /* @__PURE__ */ external_react_default().createElement("li", { className: "editable-list__item" }, components.map((Component, index) => { - var _a, _b, _c; - let field = fields[index]; - let tempField = typeof field === "function" ? field(rowIndex, index) : field; - return ( - /* eslint-disable-next-line */ - /* @__PURE__ */ external_react_default().createElement("div", { className: `editable-list__item-cell editable-list__item--size-${((_a = fields[index]) == null ? void 0 : _a.size) || 12}` }, /* @__PURE__ */ external_react_default().createElement( - Component, - FieldsList_spreadProps(FieldsList_spreadValues({}, tempField == null ? void 0 : tempField.props), { - label: "", - value: value[index], - onChange: onChange.bind(null, index), - error: errors == null ? void 0 : errors[index], - disabled: disabled || ((_b = tempField == null ? void 0 : tempField.props) == null ? void 0 : _b.disabled), - readOnly: readOnly || ((_c = tempField == null ? void 0 : tempField.props) == null ? void 0 : _c.readOnly) - }) - )) - ); -}), /* @__PURE__ */ external_react_default().createElement("div", { className: `editable-list__item-cell editable-list__item-action ${readOnly && "editable-list__item-action--read-only"}` }, /* @__PURE__ */ external_react_default().createElement( - components_Button, - { - iconOnly: true, - iconType: "trash-alt", - theme: "primary-link", - onClick: onDelete, - disabled: readOnly || disabled - } -))); -FieldsList.propTypes = { - disabled: (external_prop_types_default()).bool, - readOnly: (external_prop_types_default()).bool, - rowIndex: external_prop_types_default().oneOfType([ - (external_prop_types_default()).string, - (external_prop_types_default()).number - ]), - fields: external_prop_types_default().instanceOf(Array), - errors: external_prop_types_default().instanceOf(Array), - components: external_prop_types_default().instanceOf(Array), - value: external_prop_types_default().instanceOf(Array), - onChange: (external_prop_types_default()).func, - onDelete: (external_prop_types_default()).func -}; -/* harmony default export */ const EditableList2_FieldsList = (FieldsList); - -;// CONCATENATED MODULE: ./src/form/components/EditableList2/validate-values.js -const validateValues = (fields, rowValues) => { - var _a; - return (_a = rowValues || [[void 0, void 0]]) == null ? void 0 : _a.map( - (colValue) => colValue == null ? void 0 : colValue.map( - (value, index) => { - var _a2, _b; - return ((_b = (_a2 = fields == null ? void 0 : fields[index]) == null ? void 0 : _a2.props) == null ? void 0 : _b.validate) && fields[index].props.validate(value); - } - ) - ); -}; -/* harmony default export */ const validate_values = (validateValues); - -;// CONCATENATED MODULE: ./src/form/components/EditableList2/with-validation.js -var with_validation_defProp = Object.defineProperty; -var with_validation_defProps = Object.defineProperties; -var with_validation_getOwnPropDescs = Object.getOwnPropertyDescriptors; -var with_validation_getOwnPropSymbols = Object.getOwnPropertySymbols; -var with_validation_hasOwnProp = Object.prototype.hasOwnProperty; -var with_validation_propIsEnum = Object.prototype.propertyIsEnumerable; -var with_validation_defNormalProp = (obj, key, value) => key in obj ? with_validation_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var with_validation_spreadValues = (a, b) => { - for (var prop in b || (b = {})) - if (with_validation_hasOwnProp.call(b, prop)) - with_validation_defNormalProp(a, prop, b[prop]); - if (with_validation_getOwnPropSymbols) - for (var prop of with_validation_getOwnPropSymbols(b)) { - if (with_validation_propIsEnum.call(b, prop)) - with_validation_defNormalProp(a, prop, b[prop]); - } - return a; -}; -var with_validation_spreadProps = (a, b) => with_validation_defProps(a, with_validation_getOwnPropDescs(b)); -var with_validation_objRest = (source, exclude) => { - var target = {}; - for (var prop in source) - if (with_validation_hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) - target[prop] = source[prop]; - if (source != null && with_validation_getOwnPropSymbols) - for (var prop of with_validation_getOwnPropSymbols(source)) { - if (exclude.indexOf(prop) < 0 && with_validation_propIsEnum.call(source, prop)) - target[prop] = source[prop]; - } - return target; -}; - -const withValidation = (Component) => (_a) => { - var _b = _a, { - onChange, - validate, - error - } = _b, rest = with_validation_objRest(_b, [ - "onChange", - "validate", - "error" - ]); - const [internalError, setInternalError] = (0,external_react_namespaceObject.useState)(null); - const onFieldChange = (0,external_react_namespaceObject.useCallback)((event) => { - const value = (event == null ? void 0 : event.target) ? ["radio", "checkbox"].includes(event.target.type) ? event.target.checked : event == null ? void 0 : event.target.value : event; - let isValid = true; - if (validate && typeof validate === "function") { - const errorMsg = validate(value); - isValid = !errorMsg; - setInternalError(errorMsg); - } - onChange(value, isValid); - }, [validate, onChange]); - return /* @__PURE__ */ external_react_default().createElement(Component, with_validation_spreadProps(with_validation_spreadValues({}, rest), { onChange: onFieldChange, error: internalError || error })); -}; -/* harmony default export */ const with_validation = (withValidation); - -;// CONCATENATED MODULE: ./src/form/components/EditableList2/index.js - - - - - - - -let id = 1; -const getUID = (prefix) => `${prefix}-${id++}`; -const EditableList2 = ({ - addButtonName, - disabled, - readOnly, - fields, - label, - error, - value = [], - onChange = () => { - }, - hideOnEmpty = true, - wrapperClassName = "" -}) => { - const [internalErrors, setInteranlErrors] = (0,external_react_namespaceObject.useState)(null); - const updateRowValue = (rowIndex, fieldIndex, componentValue, isValid) => { - var _a; - const tempValueArr = !value ? [] : [...value]; - if (!value) { - tempValueArr[rowIndex] = [...new Array(fields.length)]; - tempValueArr[rowIndex][fieldIndex] = componentValue; - } else { - const tempValue = [...tempValueArr[rowIndex]]; - tempValue[fieldIndex] = componentValue; - tempValueArr[rowIndex] = tempValue; - tempValueArr[rowIndex].id = value[rowIndex].id; - } - if (((_a = internalErrors == null ? void 0 : internalErrors[rowIndex]) == null ? void 0 : _a[fieldIndex]) && isValid) { - const tempErrors = [...internalErrors]; - const tempFieldError = [...tempErrors[rowIndex]]; - tempFieldError[fieldIndex] = null; - tempErrors[rowIndex] = tempFieldError; - setInteranlErrors(tempErrors); - } - onChange(tempValueArr); - }; - const hasErrors = (errors) => { - var _a; - return Boolean((_a = errors == null ? void 0 : errors.flat()) == null ? void 0 : _a.filter(Boolean).length); - }; - const Components = (0,external_react_namespaceObject.useMemo)( - () => fields.map((field) => { - let tempField = typeof field === "function" ? field() : field; - return with_validation((tempField == null ? void 0 : tempField.component) || /* @__PURE__ */ external_react_default().createElement((external_react_default()).Fragment, null)); - }), - [] - ); - const onAddRow = () => { - const errors = validate_values(fields, value); - if (hasErrors(errors)) { - setInteranlErrors(errors); - return; - } - const newValue = [...new Array(fields.length)]; - newValue.id = getUID("row"); - onChange([ - ...value && value, - newValue - ]); - }; - const deleteRow = (index) => { - if (!value) { - return; - } - const tempValue = [...value]; - tempValue.splice(index, 1); - onChange(tempValue); - }; - return /* @__PURE__ */ external_react_default().createElement("div", { className: `editable-list__wrapper tyk-form-group tyk-form-group--default ${error ? "has-error" : ""} ${wrapperClassName}` }, /* @__PURE__ */ external_react_default().createElement( - EditableList2_Header, - { - disabled, - readOnly, - label, - addButtonName, - onAddRow - } - ), (value == null ? void 0 : value.length) || !hideOnEmpty ? /* @__PURE__ */ external_react_default().createElement("ul", { className: "editable-list__list" }, (value || [[]]).map((v, i) => /* @__PURE__ */ external_react_default().createElement((external_react_default()).Fragment, null, /* @__PURE__ */ external_react_default().createElement( - EditableList2_FieldsList, - { - key: v.id || i, - rowIndex: i, - disabled, - readOnly, - fields, - onChange: updateRowValue.bind(null, i), - onDelete: deleteRow.bind(null, i), - value: v, - errors: internalErrors == null ? void 0 : internalErrors[i], - components: Components - } - ))), /* @__PURE__ */ external_react_default().createElement(EditableList2_ListHeader, { fields, readOnly })) : null, error && error !== "true" && error !== "false" ? /* @__PURE__ */ external_react_default().createElement("p", { className: "tyk-form-control__error-message" }, error) : null); -}; -EditableList2.propTypes = { - /** Sets Editable list in edit mode. - * If enabled all fields are disabled, the add button is hidden and delete button is disabled - * */ - disabled: (external_prop_types_default()).bool, - /** Sets Editable list in read only mode. - * If enabled all fields are displaying just the value, - * the add button is hidden and delete button is disabled - */ - readOnly: (external_prop_types_default()).bool, - /** Name of the Add button. By default has 'Add value' */ - addButtonName: (external_prop_types_default()).string, - /** Label of Editable list, is displayed above the list and inline with the Add button */ - label: external_prop_types_default().oneOfType([ - (external_prop_types_default()).string, - (external_prop_types_default()).element, - (external_prop_types_default()).node - ]), - /** Array of form elements that you want the list to have - * Each field is an object points to the Form element component that you want to use, - * the props you want to apply on it, - * and the size (as in width, it's like columns system, between 1 and 12) - * Example: - * ... - * fields={[ - { - component: Input2, - styles: { - width: "200px", - }, - size: 4, - props: { - name: 'input', - label: 'Claim name', - theme: 'default rounded-corners', - placeholder: 'Enter claim name', - validate: formikRequired('This field is required') - } - }, - { - component: Combobox2, - size: 8, - props: comboboxProps - } - ]} - */ - fields: external_prop_types_default().instanceOf(Array), - /** onChange function is called everytime the value of editable list changes */ - onChange: (external_prop_types_default()).func, - /** value of editable list, wich is an Array (List of row values) - * of Arrays (List of column values, - * each column will have the value format depending on the component type) - */ - value: external_prop_types_default().oneOfType([ - external_prop_types_default().instanceOf(Object), - external_prop_types_default().instanceOf(Array) - ]), - error: (external_prop_types_default()).string, - hideOnEmpty: (external_prop_types_default()).bool, - wrapperClassName: (external_prop_types_default()).string -}; -/* harmony default export */ const components_EditableList2 = (EditableList2); - -;// CONCATENATED MODULE: ./src/form/components/FileInput/index.js -var FileInput_defProp = Object.defineProperty; -var FileInput_defProps = Object.defineProperties; -var FileInput_getOwnPropDescs = Object.getOwnPropertyDescriptors; -var FileInput_getOwnPropSymbols = Object.getOwnPropertySymbols; -var FileInput_hasOwnProp = Object.prototype.hasOwnProperty; -var FileInput_propIsEnum = Object.prototype.propertyIsEnumerable; -var FileInput_defNormalProp = (obj, key, value) => key in obj ? FileInput_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var FileInput_spreadValues = (a, b) => { - for (var prop in b || (b = {})) - if (FileInput_hasOwnProp.call(b, prop)) - FileInput_defNormalProp(a, prop, b[prop]); - if (FileInput_getOwnPropSymbols) - for (var prop of FileInput_getOwnPropSymbols(b)) { - if (FileInput_propIsEnum.call(b, prop)) - FileInput_defNormalProp(a, prop, b[prop]); - } - return a; -}; -var FileInput_spreadProps = (a, b) => FileInput_defProps(a, FileInput_getOwnPropDescs(b)); -var FileInput_objRest = (source, exclude) => { - var target = {}; - for (var prop in source) - if (FileInput_hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) - target[prop] = source[prop]; - if (source != null && FileInput_getOwnPropSymbols) - for (var prop of FileInput_getOwnPropSymbols(source)) { - if (exclude.indexOf(prop) < 0 && FileInput_propIsEnum.call(source, prop)) - target[prop] = source[prop]; - } - return target; -}; -var FileInput_publicField = (obj, key, value) => { - FileInput_defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); - return value; -}; - - - -class FileInput extends external_react_namespaceObject.Component { - constructor(props) { - super(props); - this.handleOnChange = this.handleOnChange.bind(this); - this.clearValue = this.clearValue.bind(this); - this.fileInputRef = (0,external_react_namespaceObject.createRef)(); - } - getCssClasses() { - const { - error, - theme, - labelwidth, - wrapperClassName = "" - } = this.props; - const cssClasses = [wrapperClassName, "tyk-form-group"]; - const themes = theme ? theme.split(" ") : []; - if (themes.length) { - themes.forEach((iTheme) => { - cssClasses.push(`tyk-form-group--${iTheme}`); - }); - } - if (labelwidth) { - cssClasses.push("tyk-form-group--label-has-width"); - } - if (error) { - cssClasses.push("has-error"); - } - return cssClasses.join(" "); - } - getLabelStyles() { - const { labelwidth } = this.props; - const styles = {}; - if (labelwidth) { - styles.flexBasis = labelwidth; - } - return styles; - } - getNonLabelWidth() { - const { labelwidth } = this.props; - const styles = {}; - if (labelwidth) { - styles.flexBasis = `calc(100% - ${labelwidth} - 20px)`; - } - return styles; - } - getFileInputError() { - const { error } = this.props; - return error && error !== "true" && error !== "false" ? /* @__PURE__ */ external_react_default().createElement( - "p", - { - className: "tyk-form-control__error-message" - }, - error - ) : null; - } - getFileInputComponent() { - const _a = this.props, { - accept, - value: omitValue, - onChange - } = _a, rest = FileInput_objRest(_a, [ - "accept", - "value", - "onChange" - ]); - return /* @__PURE__ */ external_react_default().createElement( - "div", - { - className: "tyk-file-input__wrapper", - style: this.getNonLabelWidth() - }, - /* @__PURE__ */ external_react_default().createElement( - "input", - FileInput_spreadProps(FileInput_spreadValues({ - accept, - className: "tyk-form-control" - }, rest), { - onChange: this.handleOnChange, - ref: this.fileInputRef, - type: "file" - }) - ), - this.fileInputRef.current && this.fileInputRef.current.files.length > 0 ? /* @__PURE__ */ external_react_default().createElement( - "button", - { - onClick: this.clearValue, - type: "button" - }, - /* @__PURE__ */ external_react_default().createElement(components_Icon, { type: "times" }) - ) : null - ); - } - clearValue() { - const { onChange } = this.props; - this.fileInputRef.current.value = ""; - onChange(""); - } - handleOnChange(e) { - const { onChange } = this.props; - onChange(e.target.files); - } - // eslint-disable-next-line class-methods-use-this - reset() { - } - render() { - const { - id, - label, - note - } = this.props; - return /* @__PURE__ */ external_react_default().createElement(external_react_namespaceObject.Fragment, null, /* @__PURE__ */ external_react_default().createElement("div", { className: this.getCssClasses() }, label ? /* @__PURE__ */ external_react_default().createElement("label", { htmlFor: id, style: this.getLabelStyles() }, label) : null, /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-form-control__wrapper" }, this.getFileInputComponent(), note ? /* @__PURE__ */ external_react_default().createElement("p", { className: "tyk-form-control__help-block" }, note) : null), this.getFileInputError())); - } -} -FileInput_publicField(FileInput, "propTypes", { - accept: (external_prop_types_default()).string, - disabled: (external_prop_types_default()).bool, - id: (external_prop_types_default()).string, - error: external_prop_types_default().oneOfType([ - (external_prop_types_default()).string, - (external_prop_types_default()).bool - ]), - label: external_prop_types_default().oneOfType([ - external_prop_types_default().arrayOf((external_prop_types_default()).node), - (external_prop_types_default()).node, - (external_prop_types_default()).element, - (external_prop_types_default()).func, - (external_prop_types_default()).string - ]), - labelwidth: (external_prop_types_default()).string, - name: (external_prop_types_default()).string, - note: (external_prop_types_default()).string, - onChange: (external_prop_types_default()).func, - placeholder: (external_prop_types_default()).string, - theme: (external_prop_types_default()).string, - value: external_prop_types_default().instanceOf(Object), - wrapperClassName: (external_prop_types_default()).string -}); - -;// CONCATENATED MODULE: ./src/form/components/Input/index.js -var Input_defProp = Object.defineProperty; -var Input_defProps = Object.defineProperties; -var Input_getOwnPropDescs = Object.getOwnPropertyDescriptors; -var Input_getOwnPropSymbols = Object.getOwnPropertySymbols; -var Input_hasOwnProp = Object.prototype.hasOwnProperty; -var Input_propIsEnum = Object.prototype.propertyIsEnumerable; -var Input_defNormalProp = (obj, key, value) => key in obj ? Input_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var Input_spreadValues = (a, b) => { - for (var prop in b || (b = {})) - if (Input_hasOwnProp.call(b, prop)) - Input_defNormalProp(a, prop, b[prop]); - if (Input_getOwnPropSymbols) - for (var prop of Input_getOwnPropSymbols(b)) { - if (Input_propIsEnum.call(b, prop)) - Input_defNormalProp(a, prop, b[prop]); - } - return a; -}; -var Input_spreadProps = (a, b) => Input_defProps(a, Input_getOwnPropDescs(b)); -var Input_objRest = (source, exclude) => { - var target = {}; - for (var prop in source) - if (Input_hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) - target[prop] = source[prop]; - if (source != null && Input_getOwnPropSymbols) - for (var prop of Input_getOwnPropSymbols(source)) { - if (exclude.indexOf(prop) < 0 && Input_propIsEnum.call(source, prop)) - target[prop] = source[prop]; - } - return target; -}; -var Input_publicField = (obj, key, value) => { - Input_defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); - return value; -}; - - -const _Input = class _Input extends external_react_namespaceObject.Component { - static getAddon(content) { - return /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-input-group__addon" }, content); - } - constructor(props) { - super(props); - const { - value - } = this.props; - this.state = { - initValue: value, - stateValue: value - }; - this.handleOnChange = this.handleOnChange.bind(this); - } - componentDidUpdate(prevProps) { - const { - isfield, - value, - onChange - } = this.props; - if (!isfield && prevProps.value !== value) { - this.setState({ - stateValue: value - }, () => { - if (onChange) { - onChange(value); - } - }); - } - } - getLabelStyles() { - const { labelwidth } = this.props; - const styles = {}; - if (labelwidth) { - styles.flexBasis = labelwidth; - } - return styles; - } - getNonLabelWidth() { - const { labelwidth } = this.props; - const styles = {}; - if (labelwidth) { - styles.flexBasis = `calc(100% - ${labelwidth} - 20px)`; - } - return styles; - } - getInputError() { - const { error } = this.props; - return error && error !== "true" && error !== "false" ? /* @__PURE__ */ external_react_default().createElement( - "p", - { - className: "tyk-form-control__error-message" - }, - error - ) : null; - } - getCssClasses() { - const { - error, - theme, - labelwidth, - inputgroupaddonleft, - inputgroupaddonright - } = this.props; - const cssClasses = ["tyk-form-group"]; - const themes = theme ? theme.split(" ") : []; - if (themes.length) { - themes.forEach((iTheme) => { - cssClasses.push(`tyk-form-group--${iTheme}`); - }); - } - if (inputgroupaddonleft) { - cssClasses.push("tyk-form-group--addon-left"); - } - if (inputgroupaddonright) { - cssClasses.push("tyk-form-group--addon-right"); - } - if (labelwidth) { - cssClasses.push("tyk-form-group--label-has-width"); - } - if (error) { - cssClasses.push("has-error"); - } - return cssClasses.join(" "); - } - getInputGroupAddon() { - const { - inputgroupaddonleft, - inputgroupaddonright - } = this.props; - return /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-input-group" }, inputgroupaddonleft ? _Input.getAddon(inputgroupaddonleft) : null, this.getInputComponent(), inputgroupaddonright ? _Input.getAddon(inputgroupaddonright) : null); - } - getInputComponent() { - const _a = this.props, { - isfield, - onChange, - value - } = _a, rest = Input_objRest(_a, [ - "isfield", - "onChange", - "value" - ]); - const { stateValue } = this.state; - return /* @__PURE__ */ external_react_default().createElement( - "input", - Input_spreadProps(Input_spreadValues({ - autoComplete: "off", - className: "tyk-form-control" - }, rest), { - onChange: this.handleOnChange, - value: isfield ? value : stateValue - }) - ); - } - reset() { - const { initValue } = this.state; - this.setState({ - stateValue: initValue - }); - } - handleOnChange(e) { - const { onChange, isfield } = this.props; - const inputValue = e.target.value; - if (!isfield) { - this.setState({ - stateValue: inputValue - }, () => { - if (onChange) { - onChange(inputValue); - } - }); - } else { - onChange(inputValue); - } - } - render() { - const { - label, - id, - inputgroupaddonleft, - inputgroupaddonright, - note, - readOnly, - value - } = this.props; - return /* @__PURE__ */ external_react_default().createElement("div", { className: this.getCssClasses() }, label ? /* @__PURE__ */ external_react_default().createElement("label", { htmlFor: id, style: this.getLabelStyles() }, label) : null, !readOnly && /* @__PURE__ */ external_react_default().createElement( - "div", - { - className: "tyk-form-control__wrapper", - style: this.getNonLabelWidth() - }, - inputgroupaddonleft || inputgroupaddonright ? this.getInputGroupAddon() : this.getInputComponent(), - note ? /* @__PURE__ */ external_react_default().createElement("p", { className: "tyk-form-control__help-block" }, note) : null, - this.getInputError() - ), readOnly && /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-form-control--readonly" }, value || "-")); - } -}; -Input_publicField(_Input, "propTypes", { - disabled: (external_prop_types_default()).bool, - readOnly: (external_prop_types_default()).bool, - id: (external_prop_types_default()).string, - isfield: (external_prop_types_default()).bool, - error: external_prop_types_default().oneOfType([ - (external_prop_types_default()).string, - (external_prop_types_default()).bool - ]), - inputgroupaddonleft: external_prop_types_default().oneOfType([ - (external_prop_types_default()).element, - (external_prop_types_default()).node, - (external_prop_types_default()).string - ]), - inputgroupaddonright: external_prop_types_default().oneOfType([ - (external_prop_types_default()).element, - (external_prop_types_default()).node, - (external_prop_types_default()).string - ]), - label: external_prop_types_default().oneOfType([ - (external_prop_types_default()).string, - (external_prop_types_default()).element, - (external_prop_types_default()).node - ]), - labelwidth: (external_prop_types_default()).string, - name: (external_prop_types_default()).string, - note: (external_prop_types_default()).string, - onChange: (external_prop_types_default()).func, - placeholder: (external_prop_types_default()).string, - theme: (external_prop_types_default()).string, - value: external_prop_types_default().oneOfType([ - (external_prop_types_default()).number, - (external_prop_types_default()).string - ]) -}); -let Input = _Input; - - -;// CONCATENATED MODULE: ./src/form/components/Input2/index.js -var Input2_defProp = Object.defineProperty; -var Input2_defProps = Object.defineProperties; -var Input2_getOwnPropDescs = Object.getOwnPropertyDescriptors; -var Input2_getOwnPropSymbols = Object.getOwnPropertySymbols; -var Input2_hasOwnProp = Object.prototype.hasOwnProperty; -var Input2_propIsEnum = Object.prototype.propertyIsEnumerable; -var Input2_defNormalProp = (obj, key, value) => key in obj ? Input2_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var Input2_spreadValues = (a, b) => { - for (var prop in b || (b = {})) - if (Input2_hasOwnProp.call(b, prop)) - Input2_defNormalProp(a, prop, b[prop]); - if (Input2_getOwnPropSymbols) - for (var prop of Input2_getOwnPropSymbols(b)) { - if (Input2_propIsEnum.call(b, prop)) - Input2_defNormalProp(a, prop, b[prop]); - } - return a; -}; -var Input2_spreadProps = (a, b) => Input2_defProps(a, Input2_getOwnPropDescs(b)); -var Input2_objRest = (source, exclude) => { - var target = {}; - for (var prop in source) - if (Input2_hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) - target[prop] = source[prop]; - if (source != null && Input2_getOwnPropSymbols) - for (var prop of Input2_getOwnPropSymbols(source)) { - if (exclude.indexOf(prop) < 0 && Input2_propIsEnum.call(source, prop)) - target[prop] = source[prop]; - } - return target; -}; - - -const Input2 = (0,external_react_namespaceObject.forwardRef)((_a, ref) => { - var _b = _a, { - error, - onChange, - readOnly, - id, - inputgroupaddonleft, - inputgroupaddonright, - label, - labelwidth, - note, - theme, - value, - wrapperClassName = "" - } = _b, rest = Input2_objRest(_b, [ - "error", - "onChange", - "readOnly", - "id", - "inputgroupaddonleft", - "inputgroupaddonright", - "label", - "labelwidth", - "note", - "theme", - "value", - "wrapperClassName" - ]); - const inputRef = (0,external_react_namespaceObject.useRef)(); - (0,external_react_namespaceObject.useImperativeHandle)(ref, () => ({ - focus: () => { - inputRef.current.focus(); - } - })); - const getAddon = (content) => /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-input-group__addon" }, content); - const getLabelStyles = () => Input2_spreadValues({}, labelwidth && { - flexBasis: labelwidth - }); - const getNonLabelWidth = () => Input2_spreadValues({}, labelwidth && { - flexBasis: `calc(100% - ${labelwidth} - 20px)` - }); - const getInputError = () => error && error !== "true" && error !== "false" ? /* @__PURE__ */ external_react_default().createElement( - "p", - { - className: "tyk-form-control__error-message" - }, - error - ) : null; - const getCssClasses = () => { - const cssClasses = [wrapperClassName, "tyk-form-group"]; - const themes = theme ? theme.split(" ") : []; - if (themes.length) { - themes.forEach((iTheme) => { - cssClasses.push(`tyk-form-group--${iTheme}`); - }); - } - if (inputgroupaddonleft) { - cssClasses.push("tyk-form-group--addon-left"); - } - if (inputgroupaddonright) { - cssClasses.push("tyk-form-group--addon-right"); - } - if (labelwidth) { - cssClasses.push("tyk-form-group--label-has-width"); - } - if (error) { - cssClasses.push("has-error"); - } - return cssClasses.join(" "); - }; - const handleOnChange = (e) => { - onChange(e, e.target.value); - }; - const getInputElement = () => /* @__PURE__ */ external_react_default().createElement( - "input", - Input2_spreadProps(Input2_spreadValues({ - autoComplete: "off", - className: "tyk-form-control" - }, rest), { - onChange: handleOnChange, - value, - ref: inputRef - }) - ); - const getInputGroupAddon = () => /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-input-group" }, inputgroupaddonleft ? getAddon(inputgroupaddonleft) : null, getInputElement(), inputgroupaddonright ? getAddon(inputgroupaddonright) : null); - return /* @__PURE__ */ external_react_default().createElement("div", { className: getCssClasses() }, label ? /* @__PURE__ */ external_react_default().createElement("label", { htmlFor: id, style: getLabelStyles() }, label) : null, !readOnly && /* @__PURE__ */ external_react_default().createElement( - "div", - { - className: "tyk-form-control__wrapper", - style: getNonLabelWidth() - }, - inputgroupaddonleft || inputgroupaddonright ? getInputGroupAddon() : getInputElement(), - note ? /* @__PURE__ */ external_react_default().createElement("p", { className: "tyk-form-control__help-block" }, note) : null, - getInputError() - ), readOnly && /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-form-control--readonly" }, value || "-")); -}); -Input2.propTypes = { - disabled: (external_prop_types_default()).bool, - readOnly: (external_prop_types_default()).bool, - id: (external_prop_types_default()).string, - error: external_prop_types_default().oneOfType([ - (external_prop_types_default()).string, - (external_prop_types_default()).bool - ]), - inputgroupaddonleft: external_prop_types_default().oneOfType([ - (external_prop_types_default()).element, - (external_prop_types_default()).node, - (external_prop_types_default()).string - ]), - inputgroupaddonright: external_prop_types_default().oneOfType([ - (external_prop_types_default()).element, - (external_prop_types_default()).node, - (external_prop_types_default()).string - ]), - label: external_prop_types_default().oneOfType([ - (external_prop_types_default()).string, - (external_prop_types_default()).element, - (external_prop_types_default()).node - ]), - labelwidth: (external_prop_types_default()).string, - name: (external_prop_types_default()).string, - note: (external_prop_types_default()).string, - onChange: (external_prop_types_default()).func, - placeholder: (external_prop_types_default()).string, - theme: (external_prop_types_default()).string, - value: external_prop_types_default().oneOfType([ - (external_prop_types_default()).number, - (external_prop_types_default()).string - ]), - wrapperClassName: (external_prop_types_default()).string -}; -/* harmony default export */ const components_Input2 = (Input2); - -;// CONCATENATED MODULE: ./src/form/components/Multiselect/js/MultiselectContext.js - -const MultiselectContext = (0,external_react_namespaceObject.createContext)(); -/* harmony default export */ const js_MultiselectContext = (MultiselectContext); - -;// CONCATENATED MODULE: ./src/form/components/Multiselect/js/MultiselectItem.js -var MultiselectItem_defProp = Object.defineProperty; -var MultiselectItem_defNormalProp = (obj, key, value) => key in obj ? MultiselectItem_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var MultiselectItem_publicField = (obj, key, value) => { - MultiselectItem_defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); - return value; -}; - - - - - - -const getItemContent = (context, item) => context.detailsDisplayTemplate ? context.detailsDisplayTemplate(item) : JSON.stringify(item.details); -const getItemLoader = (context, item) => { - const { opened } = context; - return opened[item.id] ? /* @__PURE__ */ external_react_default().createElement(components_Loader, { position: "relative" }) : null; -}; -class MultiselectItem extends external_react_namespaceObject.Component { - isInSearchValue(fieldsToSearchOn) { - const { searchValue, item } = this.props; - if (fieldsToSearchOn && fieldsToSearchOn.length > 0) { - let fields = fieldsToSearchOn.slice(0); - fields = fields.filter((key) => item[key] && item[key].search(searchValue) > -1); - return fields.length > 0; - } - return JSON.stringify(item).search(searchValue) > -1; - } - render() { - const { - item, - itemType, - onChange - } = this.props; - return /* @__PURE__ */ external_react_default().createElement(external_react_namespaceObject.Fragment, null, /* @__PURE__ */ external_react_default().createElement(js_MultiselectContext.Consumer, null, (context) => this.isInSearchValue(context.fieldsToSearchOn) ? /* @__PURE__ */ external_react_default().createElement("li", null, /* @__PURE__ */ external_react_default().createElement("div", null, /* @__PURE__ */ external_react_default().createElement("span", { className: "tyk-multiselect-item__name" }, context.itemDisplayTemplate ? context.itemDisplayTemplate(item) : JSON.stringify(item)), /* @__PURE__ */ external_react_default().createElement("span", { className: "tyk-multiselect-item__controls" }, /* @__PURE__ */ external_react_default().createElement( - components_Button, - { - iconType: itemType === "normal" ? "plus" : "minus", - iconOnly: true, - onClick: onChange.bind(null, item), - disabled: context.disabled || context.maxSelections && context.maxSelections === context.nrSelectedItems && itemType === "normal" - } - ), /* @__PURE__ */ external_react_default().createElement( - components_Button, - { - iconType: context.opened[item.id] ? "chevron-up" : "chevron-down", - iconOnly: true, - onClick: context.onGetItemDetails.bind(context.parentContext, item) - } - ))), item.details ? /* @__PURE__ */ external_react_default().createElement( - components_Collapsible, - { - collapsed: !context.opened[item.id], - className: "tyk-multiselect-item__details" - }, - getItemContent(context, item) - ) : getItemLoader(context, item)) : null)); - } -} -MultiselectItem_publicField(MultiselectItem, "propTypes", { - item: external_prop_types_default().instanceOf(Object), - itemType: (external_prop_types_default()).string, - searchValue: (external_prop_types_default()).string, - onChange: (external_prop_types_default()).func -}); -/* harmony default export */ const js_MultiselectItem = (MultiselectItem); - -;// CONCATENATED MODULE: ./src/form/components/Multiselect/js/MultiselectPanel.js -var MultiselectPanel_defProp = Object.defineProperty; -var MultiselectPanel_defNormalProp = (obj, key, value) => key in obj ? MultiselectPanel_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var MultiselectPanel_publicField = (obj, key, value) => { - MultiselectPanel_defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); - return value; -}; - - - - - - - - -class MultiselectPanel extends external_react_namespaceObject.Component { - constructor(props) { - super(props); - MultiselectPanel_publicField(this, "state", { - searchValue: "" - }); - this.searchOnChange = this.searchOnChange.bind(this); - this.itemChanged = this.itemChanged.bind(this); - this.itemIndex = 0; - this.itemsListRef = (0,external_react_namespaceObject.createRef)(); - } - getItemIndex() { - this.itemIndex += 1; - return this.itemIndex; - } - getItemsList() { - const { - itemsPageNumber, - itemsNrPages, - loadMoreItems, - serverLoad - } = this.props; - return serverLoad ? /* @__PURE__ */ external_react_default().createElement( - components_InfiniteScroller, - { - refChild: this.itemsListRef, - hasMore: itemsNrPages > itemsPageNumber, - loadMore: loadMoreItems, - pageNumber: itemsPageNumber - }, - this.renderListItems() - ) : this.renderListItems(); - } - searchOnChange(value) { - const { onCustomSearch } = this.props; - if (!onCustomSearch) { - this.setState({ - searchValue: value - }); - } else { - onCustomSearch(value); - } - } - itemChanged(item) { - const { items, onChange } = this.props; - let cloneItems = (0,external_immutable_namespaceObject.fromJS)(items).toJS(); - cloneItems = cloneItems.filter((clonedItem) => item.id !== clonedItem.id); - onChange(cloneItems, item); - } - renderListItems() { - const { - customSearch, - items, - panelType, - serverLoad - } = this.props; - const { searchValue } = this.state; - return /* @__PURE__ */ external_react_default().createElement( - "ul", - { - className: `tyk-multiselect__list${!serverLoad ? " tyk-multiselect__list--scroll" : ""}`, - ref: this.itemsListRef - }, - items.map((item) => /* @__PURE__ */ external_react_default().createElement( - js_MultiselectItem, - { - itemType: panelType, - key: this.getItemIndex(), - onChange: this.itemChanged, - searchValue: customSearch ? "" : searchValue, - item - } - )) - ); - } - render() { - const { - inputPlaceholder, - noItemsMessage, - items - } = this.props; - const { searchValue } = this.state; - return /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-multiselect__panel" }, /* @__PURE__ */ external_react_default().createElement( - Input, - { - inputgroupaddonleft: /* @__PURE__ */ external_react_default().createElement(components_Icon, { type: "search" }), - name: "search", - onChange: this.searchOnChange, - placeholder: inputPlaceholder, - value: searchValue - } - ), items.length ? this.getItemsList() : /* @__PURE__ */ external_react_default().createElement( - components_Message, - { - theme: "info" - }, - noItemsMessage - )); - } -} -MultiselectPanel_publicField(MultiselectPanel, "propTypes", { - customSearch: (external_prop_types_default()).bool, - onCustomSearch: (external_prop_types_default()).func, - panelType: (external_prop_types_default()).string, - onChange: (external_prop_types_default()).func, - items: external_prop_types_default().instanceOf(Array), - itemsPageNumber: (external_prop_types_default()).number, - itemsNrPages: (external_prop_types_default()).number, - inputPlaceholder: (external_prop_types_default()).string, - loadMoreItems: (external_prop_types_default()).func, - noItemsMessage: (external_prop_types_default()).string, - serverLoad: (external_prop_types_default()).bool -}); -/* harmony default export */ const js_MultiselectPanel = (MultiselectPanel); - -;// CONCATENATED MODULE: ./src/form/components/Multiselect/index.js -var Multiselect_defProp = Object.defineProperty; -var Multiselect_defNormalProp = (obj, key, value) => key in obj ? Multiselect_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var Multiselect_publicField = (obj, key, value) => { - Multiselect_defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); - return value; -}; - - - - - -const diffObjects = (value, items) => { - const newItems = items.filter((item) => { - const isCommon = value.filter((selectedItem) => selectedItem.id === item.id).length > 0; - return !isCommon; - }); - return newItems; -}; -class Multiselect extends external_react_namespaceObject.Component { - constructor(props) { - super(props); - Multiselect_publicField(this, "state", { - opened: {} - }); - this.valueChange = this.valueChange.bind(this); - this.itemsChange = this.itemsChange.bind(this); - } - onGetItemDetails(item) { - const { getItemDetails } = this.props; - this.setState((prevState) => { - const tempState = Object.assign({}, prevState); - tempState.opened[item.id] = !tempState.opened[item.id]; - return tempState; - }, () => { - if (getItemDetails) { - getItemDetails(item); - } - }); - } - getMultiselectError() { - const { error } = this.props; - return error && error !== "true" && error !== "false" ? /* @__PURE__ */ external_react_default().createElement( - "p", - { - className: "tyk-form-control__error-message" - }, - error - ) : null; - } - getCssClasses() { - const { error, wrapperClassName = "" } = this.props; - const cssClasses = [wrapperClassName, "tyk-multiselect"]; - if (error) { - cssClasses.push("has-error"); - } - return cssClasses.join(" "); - } - itemsChange(allItems, item) { - const { value, onChange } = this.props; - const valueClone = (0,external_immutable_namespaceObject.fromJS)(value).toJS(); - valueClone.unshift(item); - onChange(valueClone, item, "added"); - } - valueChange(value, item) { - const { items, onChange } = this.props; - const allItemsClone = (0,external_immutable_namespaceObject.fromJS)(items).toJS(); - allItemsClone.unshift(item); - onChange(value, item, "removed"); - } - render() { - const { - customSearch, - entityNamePlural, - disabled, - itemDisplayTemplate, - detailsDisplayTemplate, - fieldsToSearchOn, - items, - itemsPageNumber, - itemsNrPages, - loadMoreItems, - maxSelections, - note, - value - } = this.props; - const { opened } = this.state; - return /* @__PURE__ */ external_react_default().createElement(external_react_namespaceObject.Fragment, null, /* @__PURE__ */ external_react_default().createElement("div", { className: this.getCssClasses() }, /* @__PURE__ */ external_react_default().createElement( - js_MultiselectContext.Provider, - { - value: { - disabled, - parentContext: this, - itemDisplayTemplate, - detailsDisplayTemplate, - fieldsToSearchOn, - maxSelections, - nrSelectedItems: value.length, - onGetItemDetails: this.onGetItemDetails, - opened - } - }, - /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-multiselect__header" }, /* @__PURE__ */ external_react_default().createElement("div", null, value.length, " ", "Selected", " ", entityNamePlural), /* @__PURE__ */ external_react_default().createElement("div", null, "Select from existing", entityNamePlural)), - /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-multiselect__panel-wrapper" }, /* @__PURE__ */ external_react_default().createElement( - js_MultiselectPanel, - { - inputPlaceholder: `Search through selected ${entityNamePlural}`, - noItemsMessage: `Selected ${entityNamePlural} will show here`, - items: value, - onChange: this.valueChange, - panelType: "selected" - } - ), /* @__PURE__ */ external_react_default().createElement( - js_MultiselectPanel, - { - inputPlaceholder: `Search existing ${entityNamePlural}`, - noItemsMessage: `No ${entityNamePlural} to display`, - entityNamePlural, - customSearch: !!customSearch, - onCustomSearch: customSearch, - items: diffObjects(value, items), - onChange: this.itemsChange, - serverLoad: !!loadMoreItems, - loadMoreItems, - itemsPageNumber, - itemsNrPages, - panelType: "normal" - } - )) - )), /* @__PURE__ */ external_react_default().createElement("div", null, note ? /* @__PURE__ */ external_react_default().createElement("p", { className: "tyk-form-control__help-block" }, note) : null), this.getMultiselectError()); - } -} -Multiselect_publicField(Multiselect, "propTypes", { - customSearch: (external_prop_types_default()).func, - disabled: (external_prop_types_default()).bool, - error: (external_prop_types_default()).string, - entityNamePlural: (external_prop_types_default()).string, - items: external_prop_types_default().instanceOf(Array), - itemDisplayTemplate: (external_prop_types_default()).func, - detailsDisplayTemplate: (external_prop_types_default()).func, - fieldsToSearchOn: external_prop_types_default().instanceOf(Array), - onChange: (external_prop_types_default()).func, - getItemDetails: (external_prop_types_default()).func, - itemsPageNumber: (external_prop_types_default()).number, - itemsNrPages: (external_prop_types_default()).number, - loadMoreItems: (external_prop_types_default()).func, - note: (external_prop_types_default()).string, - maxSelections: (external_prop_types_default()).number, - value: external_prop_types_default().instanceOf(Array), - wrapperClassName: (external_prop_types_default()).string -}); -/* harmony default export */ const components_Multiselect = (Multiselect); - -;// CONCATENATED MODULE: ./src/form/components/Radio/index.js -var Radio_defProp = Object.defineProperty; -var Radio_defProps = Object.defineProperties; -var Radio_getOwnPropDescs = Object.getOwnPropertyDescriptors; -var Radio_getOwnPropSymbols = Object.getOwnPropertySymbols; -var Radio_hasOwnProp = Object.prototype.hasOwnProperty; -var Radio_propIsEnum = Object.prototype.propertyIsEnumerable; -var Radio_defNormalProp = (obj, key, value) => key in obj ? Radio_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var Radio_spreadValues = (a, b) => { - for (var prop in b || (b = {})) - if (Radio_hasOwnProp.call(b, prop)) - Radio_defNormalProp(a, prop, b[prop]); - if (Radio_getOwnPropSymbols) - for (var prop of Radio_getOwnPropSymbols(b)) { - if (Radio_propIsEnum.call(b, prop)) - Radio_defNormalProp(a, prop, b[prop]); - } - return a; -}; -var Radio_spreadProps = (a, b) => Radio_defProps(a, Radio_getOwnPropDescs(b)); -var Radio_objRest = (source, exclude) => { - var target = {}; - for (var prop in source) - if (Radio_hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) - target[prop] = source[prop]; - if (source != null && Radio_getOwnPropSymbols) - for (var prop of Radio_getOwnPropSymbols(source)) { - if (exclude.indexOf(prop) < 0 && Radio_propIsEnum.call(source, prop)) - target[prop] = source[prop]; - } - return target; -}; -var Radio_publicField = (obj, key, value) => { - Radio_defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); - return value; -}; - - -class Radio extends external_react_namespaceObject.Component { - getCssClasses() { - const { - inline, - nospace, - theme = "", - disabled, - readOnly, - wrapperClassName = "" - } = this.props; - const cssClasses = [wrapperClassName]; - if (inline) { - cssClasses.push("tyk-radio--inline"); - } else { - cssClasses.push("tyk-radio"); - } - if (nospace) { - cssClasses.push("no-margin"); - } - if (theme.trim()) { - cssClasses.push(...theme.split(" ").map((t) => `tyk-radio--theme-${t}`)); - } - if (readOnly || disabled) { - cssClasses.push("tyk-radio--is-disabled"); - } - return cssClasses.join(" "); - } - render() { - const _a = this.props, { - input, - label, - note, - disabled, - readOnly - } = _a, rest = Radio_objRest(_a, [ - "input", - "label", - "note", - "disabled", - "readOnly" - ]); - return /* @__PURE__ */ external_react_default().createElement( - "div", - { - className: this.getCssClasses() - }, - /* @__PURE__ */ external_react_default().createElement("label", null, /* @__PURE__ */ external_react_default().createElement( - "input", - Radio_spreadProps(Radio_spreadValues(Radio_spreadValues({}, input), rest), { - type: "radio", - disabled: readOnly || disabled - }) - ), label), - /* @__PURE__ */ external_react_default().createElement("p", { className: "tyk-form-control__help-block" }, note) - ); - } -} -Radio_publicField(Radio, "propTypes", { - /** Used to disable the element */ - disabled: (external_prop_types_default()).bool, - /** Readonly prop behaves the same as disabled on radio elements */ - readOnly: (external_prop_types_default()).bool, - /** Align radio with in same line with other elements */ - inline: (external_prop_types_default()).bool, - /** Set a theme for radio */ - theme: (external_prop_types_default()).string, - input: external_prop_types_default().instanceOf(Object), - /** Adds label to the radio input */ - label: external_prop_types_default().oneOfType([ - external_prop_types_default().arrayOf((external_prop_types_default()).node), - (external_prop_types_default()).node, - (external_prop_types_default()).element, - (external_prop_types_default()).func, - (external_prop_types_default()).string - ]), - /** Set name for the radio input */ - name: (external_prop_types_default()).string, - /** If set to true removes margin by adding `no-margin` class */ - nospace: (external_prop_types_default()).bool, - /** Set initial value for the radio input */ - value: (external_prop_types_default()).string, - /** Add note at the bottom of the radio input */ - note: external_prop_types_default().oneOfType([ - (external_prop_types_default()).string, - (external_prop_types_default()).element, - (external_prop_types_default()).node - ]), - wrapperClassName: (external_prop_types_default()).string -}); - -;// CONCATENATED MODULE: ./src/form/components/Select/index.js -var Select_defProp = Object.defineProperty; -var Select_defProps = Object.defineProperties; -var Select_getOwnPropDescs = Object.getOwnPropertyDescriptors; -var Select_getOwnPropSymbols = Object.getOwnPropertySymbols; -var Select_hasOwnProp = Object.prototype.hasOwnProperty; -var Select_propIsEnum = Object.prototype.propertyIsEnumerable; -var Select_defNormalProp = (obj, key, value) => key in obj ? Select_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var Select_spreadValues = (a, b) => { - for (var prop in b || (b = {})) - if (Select_hasOwnProp.call(b, prop)) - Select_defNormalProp(a, prop, b[prop]); - if (Select_getOwnPropSymbols) - for (var prop of Select_getOwnPropSymbols(b)) { - if (Select_propIsEnum.call(b, prop)) - Select_defNormalProp(a, prop, b[prop]); - } - return a; -}; -var Select_spreadProps = (a, b) => Select_defProps(a, Select_getOwnPropDescs(b)); -var Select_objRest = (source, exclude) => { - var target = {}; - for (var prop in source) - if (Select_hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) - target[prop] = source[prop]; - if (source != null && Select_getOwnPropSymbols) - for (var prop of Select_getOwnPropSymbols(source)) { - if (exclude.indexOf(prop) < 0 && Select_propIsEnum.call(source, prop)) - target[prop] = source[prop]; - } - return target; -}; -var Select_publicField = (obj, key, value) => { - Select_defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); - return value; -}; - - -class Select extends external_react_namespaceObject.Component { - constructor(props) { - super(props); - const { - value - } = this.props; - this.state = { - initValue: value, - stateValue: value - }; - this.handleOnChange = this.handleOnChange.bind(this); - this.handleOnBlur = this.handleOnBlur.bind(this); - } - componentDidUpdate(prevProps) { - const { - isfield, - value, - onChange - } = this.props; - if (!isfield && prevProps.value !== value) { - this.setState({ - stateValue: value - }, () => { - if (onChange) { - onChange(value); - } - }); - } - } - getSelectComponent() { - const _a = this.props, { - isfield, - options, - onChange, - onBlur, - value - } = _a, rest = Select_objRest(_a, [ - "isfield", - "options", - "onChange", - "onBlur", - "value" - ]); - const { - stateValue - } = this.state; - let selectValue = ""; - if (isfield && value) { - selectValue = value; - } else if (stateValue) { - selectValue = stateValue; - } - return /* @__PURE__ */ external_react_default().createElement( - "select", - Select_spreadProps(Select_spreadValues({ - className: "tyk-form-control tyk-select" - }, rest), { - onChange: this.handleOnChange, - onBlur: this.handleOnBlur, - value: selectValue ? selectValue.id : "" - }), - options.map((option) => /* @__PURE__ */ external_react_default().createElement("option", { key: option.id, value: option.id }, option.name)) - ); - } - getSelectError() { - const { error } = this.props; - return error && error !== "true" && error !== "false" ? /* @__PURE__ */ external_react_default().createElement( - "p", - { - className: "tyk-form-control__error-message" - }, - error - ) : null; - } - getCssClasses() { - const { - error, - labelwidth, - theme, - wrapperClassName = "" - } = this.props; - const cssClasses = [wrapperClassName, "tyk-form-group"]; - const themes = theme ? theme.split(" ") : []; - if (themes.length) { - themes.forEach((iTheme) => { - cssClasses.push(`tyk-form-group--${iTheme}`); - }); - } - if (labelwidth) { - cssClasses.push("tyk-form-group--label-has-width"); - } - if (error) { - cssClasses.push("has-error"); - } - return cssClasses.join(" "); - } - getLabelStyles() { - const { labelwidth } = this.props; - const styles = {}; - if (labelwidth) { - styles.flexBasis = labelwidth; - } - return styles; - } - getNonLabelWidth() { - const { labelwidth } = this.props; - const styles = {}; - if (labelwidth) { - styles.flexBasis = `calc(100% - ${labelwidth} - 20px)`; - } - return styles; - } - handleOnBlur() { - const { value, onBlur } = this.props; - if (onBlur) { - onBlur(value); - } - } - handleOnChange(e) { - const { - onChange, - isfield, - options - } = this.props; - let selectedValue = null; - selectedValue = options.filter((option) => option.id === e.target.value); - [selectedValue] = selectedValue; - if (!isfield) { - this.setState({ - stateValue: selectedValue - }, () => { - onChange(selectedValue.id ? selectedValue : null); - }); - } else { - onChange(selectedValue.id ? selectedValue : null); - } - } - reset() { - const { initValue } = this.state; - this.setState({ - stateValue: initValue - }); - } - render() { - const { - label, - id, - note, - readOnly, - value - } = this.props; - return /* @__PURE__ */ external_react_default().createElement(external_react_namespaceObject.Fragment, null, /* @__PURE__ */ external_react_default().createElement("div", { className: this.getCssClasses() }, label ? /* @__PURE__ */ external_react_default().createElement("label", { htmlFor: id, style: this.getLabelStyles() }, label) : null, !readOnly && /* @__PURE__ */ external_react_default().createElement( - "div", - { - className: "tyk-form-control__wrapper", - style: this.getNonLabelWidth() - }, - this.getSelectComponent(), - note ? /* @__PURE__ */ external_react_default().createElement("p", { className: "tyk-form-control__help-block" }, note) : null, - this.getSelectError() - ), readOnly && /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-form-control--readonly" }, value || "-"))); - } -} -Select_publicField(Select, "propTypes", { - disabled: (external_prop_types_default()).bool, - readOnly: (external_prop_types_default()).bool, - id: (external_prop_types_default()).string, - isfield: (external_prop_types_default()).bool, - error: external_prop_types_default().oneOfType([ - (external_prop_types_default()).string, - (external_prop_types_default()).bool - ]), - options: external_prop_types_default().instanceOf(Array), - label: external_prop_types_default().oneOfType([ - external_prop_types_default().arrayOf((external_prop_types_default()).node), - (external_prop_types_default()).node, - (external_prop_types_default()).element, - (external_prop_types_default()).func, - (external_prop_types_default()).string - ]), - labelwidth: (external_prop_types_default()).string, - name: (external_prop_types_default()).string, - note: (external_prop_types_default()).string, - onBlur: (external_prop_types_default()).func, - onChange: (external_prop_types_default()).func, - placeholder: (external_prop_types_default()).string, - theme: (external_prop_types_default()).string, - value: external_prop_types_default().oneOfType([ - (external_prop_types_default()).string, - (external_prop_types_default()).object - ]), - wrapperClassName: (external_prop_types_default()).string -}); - -;// CONCATENATED MODULE: ./src/form/components/SelectableList/index.js -var SelectableList_defProp = Object.defineProperty; -var SelectableList_defProps = Object.defineProperties; -var SelectableList_getOwnPropDescs = Object.getOwnPropertyDescriptors; -var SelectableList_getOwnPropSymbols = Object.getOwnPropertySymbols; -var SelectableList_hasOwnProp = Object.prototype.hasOwnProperty; -var SelectableList_propIsEnum = Object.prototype.propertyIsEnumerable; -var SelectableList_defNormalProp = (obj, key, value) => key in obj ? SelectableList_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var SelectableList_spreadValues = (a, b) => { - for (var prop in b || (b = {})) - if (SelectableList_hasOwnProp.call(b, prop)) - SelectableList_defNormalProp(a, prop, b[prop]); - if (SelectableList_getOwnPropSymbols) - for (var prop of SelectableList_getOwnPropSymbols(b)) { - if (SelectableList_propIsEnum.call(b, prop)) - SelectableList_defNormalProp(a, prop, b[prop]); - } - return a; -}; -var SelectableList_spreadProps = (a, b) => SelectableList_defProps(a, SelectableList_getOwnPropDescs(b)); - - - - - -function SelectableList(props) { - const { - checkboxalticon, - items, - itemTemplate, - value, - noItemsMessage = "No items in the list", - onChange, - theme, - primaryKey, - wrapperClassName = "" - } = props; - const handleOnSelect = (event) => { - const newSelectedItems = structuredClone(value); - const elemPosition = newSelectedItems.findIndex( - (id) => JSON.stringify(id) === JSON.stringify( - Array.isArray(id) ? event.target.value.split(",") : event.target.value - ) - ); - if (event.target.checked && elemPosition === -1) { - const tempValue = event.target.value.split(","); - const finalValue = tempValue.length > 1 ? tempValue : event.target.value; - newSelectedItems.push(finalValue); - } else if (!event.target.checked && elemPosition > -1) { - newSelectedItems.splice(elemPosition, 1); - } - if (onChange) { - onChange(newSelectedItems); - } - }; - const getListItemCssClassName = (isActive) => { - const cssClasses = []; - if (checkboxalticon) { - cssClasses.push("tyk-selectable-list__item--with-icon"); - } - if (isActive) { - cssClasses.push("tyk-selectable-list__item--active"); - } - return cssClasses.join(" "); - }; - const isChecked = (inputValue, itemValue) => Boolean( - inputValue.find((tvalue) => JSON.stringify(itemValue) === JSON.stringify(tvalue)) - ); - return /* @__PURE__ */ external_react_default().createElement(components_List, SelectableList_spreadProps(SelectableList_spreadValues({}, props), { theme: theme || "default", className: `tyk-selectable-list ${wrapperClassName}` }), !items.length ? /* @__PURE__ */ external_react_default().createElement("li", { className: "tyk-selectable-list__no-items-message" }, /* @__PURE__ */ external_react_default().createElement(components_Message, { theme: "info" }, noItemsMessage)) : items.map((item, index) => /* @__PURE__ */ external_react_default().createElement( - components_List.Item, - { - key: index, - className: getListItemCssClassName(value.includes(item[primaryKey])) - }, - /* @__PURE__ */ external_react_default().createElement("label", null, /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-selectable-list__item" }, itemTemplate ? itemTemplate(item) : item.name), /* @__PURE__ */ external_react_default().createElement( - "input", - { - type: "checkbox", - checked: isChecked(value, item[primaryKey]), - onChange: handleOnSelect.bind(item), - value: item[primaryKey] - } - ), checkboxalticon ? /* @__PURE__ */ external_react_default().createElement(components_Icon, { type: checkboxalticon }) : null) - ))); -} -SelectableList.propTypes = { - items: external_prop_types_default().instanceOf(Array), - itemTemplate: external_prop_types_default().oneOfType([ - (external_prop_types_default()).node, - (external_prop_types_default()).element, - (external_prop_types_default()).string, - (external_prop_types_default()).func - ]), - value: external_prop_types_default().instanceOf(Array), - onChange: (external_prop_types_default()).func, - primaryKey: (external_prop_types_default()).string, - noItemsMessage: (external_prop_types_default()).string, - checkboxalticon: external_prop_types_default().oneOfType([ - (external_prop_types_default()).node, - (external_prop_types_default()).element, - (external_prop_types_default()).string - ]), - theme: (external_prop_types_default()).string, - wrapperClassName: (external_prop_types_default()).string -}; -SelectableList.defaultProps = { - items: [], - primaryKey: "id", - value: [] -}; -/* harmony default export */ const components_SelectableList = (SelectableList); - -;// CONCATENATED MODULE: ./src/form/components/Textarea/index.js -var Textarea_defProp = Object.defineProperty; -var Textarea_getOwnPropSymbols = Object.getOwnPropertySymbols; -var Textarea_hasOwnProp = Object.prototype.hasOwnProperty; -var Textarea_propIsEnum = Object.prototype.propertyIsEnumerable; -var Textarea_defNormalProp = (obj, key, value) => key in obj ? Textarea_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var Textarea_spreadValues = (a, b) => { - for (var prop in b || (b = {})) - if (Textarea_hasOwnProp.call(b, prop)) - Textarea_defNormalProp(a, prop, b[prop]); - if (Textarea_getOwnPropSymbols) - for (var prop of Textarea_getOwnPropSymbols(b)) { - if (Textarea_propIsEnum.call(b, prop)) - Textarea_defNormalProp(a, prop, b[prop]); - } - return a; -}; -var Textarea_objRest = (source, exclude) => { - var target = {}; - for (var prop in source) - if (Textarea_hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) - target[prop] = source[prop]; - if (source != null && Textarea_getOwnPropSymbols) - for (var prop of Textarea_getOwnPropSymbols(source)) { - if (exclude.indexOf(prop) < 0 && Textarea_propIsEnum.call(source, prop)) - target[prop] = source[prop]; - } - return target; -}; - - -function Textarea(_a) { - var _b = _a, { - id, - input, - label, - note, - error, - theme, - labelwidth, - value, - readOnly, - wrapperClassName - } = _b, rest = Textarea_objRest(_b, [ - "id", - "input", - "label", - "note", - "error", - "theme", - "labelwidth", - "value", - "readOnly", - "wrapperClassName" - ]); - const classes = [ - "tyk-form-group", - wrapperClassName, - ...theme ? theme.split(" ").map((t) => `tyk-form-group--${t}`) : [], - labelwidth && "tyk-form-group--label-has-width", - error && "has-error" - ].filter(Boolean).join(" "); - const getLabelStyles = () => { - if (labelwidth) - return { flexBasis: labelwidth }; - return {}; - }; - const getNonLabelWidth = () => { - if (labelwidth) - return { flexBasis: `calc(100% - ${labelwidth} - 20px)` }; - return {}; - }; - function getTextareaError() { - return error && error !== "true" && error !== "false" ? /* @__PURE__ */ external_react_default().createElement("p", { className: "tyk-form-control__error-message" }, error) : null; - } - return /* @__PURE__ */ external_react_default().createElement("div", { className: classes }, label ? /* @__PURE__ */ external_react_default().createElement("label", { htmlFor: id, style: getLabelStyles() }, label) : null, !readOnly && /* @__PURE__ */ external_react_default().createElement( - "div", - { - className: "tyk-form-control__wrapper", - style: getNonLabelWidth() - }, - /* @__PURE__ */ external_react_default().createElement( - "textarea", - Textarea_spreadValues(Textarea_spreadValues({ - className: "tyk-form-control" - }, rest), input), - value - ), - note ? /* @__PURE__ */ external_react_default().createElement("p", { className: "tyk-form-control__help-block" }, note) : null, - getTextareaError() - ), readOnly && /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-form-control--readonly" }, value || "-")); -} -Textarea.propTypes = { - /** Disable the component */ - disabled: (external_prop_types_default()).bool, - /** Displays only the text value of the component, or "-" if no value is set */ - readOnly: (external_prop_types_default()).bool, - input: external_prop_types_default().instanceOf(Object), - /** Set an error message for the component and the component is rendered in the error state */ - error: (external_prop_types_default()).string, - /** Adds a label to the component */ - label: external_prop_types_default().oneOfType([ - external_prop_types_default().arrayOf((external_prop_types_default()).node), - (external_prop_types_default()).node, - (external_prop_types_default()).element, - (external_prop_types_default()).func, - (external_prop_types_default()).string - ]), - /** Sets the width of the label */ - labelwidth: (external_prop_types_default()).string, - /** Set a name for the component */ - name: (external_prop_types_default()).string, - /** Adds additional information under the component */ - note: (external_prop_types_default()).string, - /** Callback function executed on value change */ - onChange: (external_prop_types_default()).func, - id: (external_prop_types_default()).string, - /** Set a theme for the component */ - theme: (external_prop_types_default()).string, - /** Set the value of the component */ - value: (external_prop_types_default()).string, - /** CSS classes added to the wrapper of the component */ - wrapperClassName: (external_prop_types_default()).string -}; -/* harmony default export */ const components_Textarea = (Textarea); - -;// CONCATENATED MODULE: ./src/form/components/Toggle/js/ToggleContext.js - -const ToggleContext = (0,external_react_namespaceObject.createContext)(); -/* harmony default export */ const js_ToggleContext = (ToggleContext); - -;// CONCATENATED MODULE: ./src/form/components/Toggle/js/ToggleItem.js - - -class ToggleItem extends external_react_namespaceObject.Component { - static getNotchCssClasses(context) { - return ["tyk-toggle__item-notch", `tyk-toggle__item-notch--${context.type}`].join(" "); - } - constructor(props) { - super(props); - this.itemRef = (0,external_react_namespaceObject.createRef)(); - } - componentDidMount() { - const { context, value } = this.props; - if (context.value === value) { - context.saveSelectedRef(this.itemRef); - } - } - componentDidUpdate(prevProps) { - const { context, value } = this.props; - if (prevProps.context.value !== context.value && context.value === value) { - context.saveSelectedRef(this.itemRef); - } - } - onChange(event) { - const { context, value } = this.props; - const { disabled, readOnly } = context; - if (disabled || readOnly) { - return; - } - context.onItemSelected(context.type === "single" ? !context.value : value, event); - } - render() { - const { - context, - label, - name, - value - } = this.props; - return /* @__PURE__ */ external_react_default().createElement("li", { className: `tyk-toggle__item ${context.value && (context.type === "single" || context.value === value) ? "tyk-toggle__item--active" : ""}`, ref: this.itemRef }, /* @__PURE__ */ external_react_default().createElement("label", null, /* @__PURE__ */ external_react_default().createElement( - "input", - { - type: context.type === "single" ? "checkbox" : "radio", - name, - checked: context.value === value, - onChange: this.onChange.bind(this), - value - } - ), label ? /* @__PURE__ */ external_react_default().createElement("span", null, label) : /* @__PURE__ */ external_react_default().createElement("span", { className: "empty-toggle" }, " "), context.type === "single" ? /* @__PURE__ */ external_react_default().createElement("span", { className: ToggleItem.getNotchCssClasses(context) }) : null)); - } -} -ToggleItem.propTypes = { - context: external_prop_types_default().instanceOf(Object), - label: external_prop_types_default().oneOfType([ - external_prop_types_default().arrayOf((external_prop_types_default()).node), - (external_prop_types_default()).node, - (external_prop_types_default()).element, - (external_prop_types_default()).func, - (external_prop_types_default()).string - ]), - name: (external_prop_types_default()).string, - value: (external_prop_types_default()).string -}; -/* harmony default export */ const js_ToggleItem = (ToggleItem); - -;// CONCATENATED MODULE: ./src/form/components/Toggle/js/ToggleItemWrapper.js -var ToggleItemWrapper_defProp = Object.defineProperty; -var ToggleItemWrapper_defProps = Object.defineProperties; -var ToggleItemWrapper_getOwnPropDescs = Object.getOwnPropertyDescriptors; -var ToggleItemWrapper_getOwnPropSymbols = Object.getOwnPropertySymbols; -var ToggleItemWrapper_hasOwnProp = Object.prototype.hasOwnProperty; -var ToggleItemWrapper_propIsEnum = Object.prototype.propertyIsEnumerable; -var ToggleItemWrapper_defNormalProp = (obj, key, value) => key in obj ? ToggleItemWrapper_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var ToggleItemWrapper_spreadValues = (a, b) => { - for (var prop in b || (b = {})) - if (ToggleItemWrapper_hasOwnProp.call(b, prop)) - ToggleItemWrapper_defNormalProp(a, prop, b[prop]); - if (ToggleItemWrapper_getOwnPropSymbols) - for (var prop of ToggleItemWrapper_getOwnPropSymbols(b)) { - if (ToggleItemWrapper_propIsEnum.call(b, prop)) - ToggleItemWrapper_defNormalProp(a, prop, b[prop]); - } - return a; -}; -var ToggleItemWrapper_spreadProps = (a, b) => ToggleItemWrapper_defProps(a, ToggleItemWrapper_getOwnPropDescs(b)); - - - - -const ToggleItemWrapper = external_react_default().forwardRef((props, ref) => /* @__PURE__ */ external_react_default().createElement(js_ToggleContext.Consumer, null, (context) => /* @__PURE__ */ external_react_default().createElement(js_ToggleItem, ToggleItemWrapper_spreadProps(ToggleItemWrapper_spreadValues({}, props), { context, ref }), props.children))); -ToggleItemWrapper.propTypes = { - children: external_prop_types_default().oneOfType([ - external_prop_types_default().arrayOf((external_prop_types_default()).node), - (external_prop_types_default()).node, - (external_prop_types_default()).element, - (external_prop_types_default()).string - ]) -}; -/* harmony default export */ const js_ToggleItemWrapper = (ToggleItemWrapper); - -;// CONCATENATED MODULE: ./src/form/components/Toggle/index.js - - - - -function Toggle({ - className, - disabled, - readOnly, - size, - theme, - direction, - onDark, - wrapperClassName = "", - onChange, - labelwidth, - label, - separated, - children, - type, - value, - error -}) { - const [selectedRef, setSelectedRef] = (0,external_react_namespaceObject.useState)(null); - const notchRef = (0,external_react_namespaceObject.useRef)(); - const toggleRef = (0,external_react_namespaceObject.useRef)(); - const classes = [ - wrapperClassName, - className, - "tyk-toggle", - `tyk-toggle--disabled-${readOnly || disabled}`, - `tyk-toggle--${size || "md"}`, - `tyk-toggle--${theme}`, - `tyk-toggle--${direction}`, - onDark && "tyk-toggle--on-dark" - ].filter(Boolean).join(" "); - const onItemSelected = (0,external_react_namespaceObject.useCallback)((itemValue, event) => { - if (!onChange) - return; - onChange(itemValue, event); - }, [onChange]); - const getLabelStyles = (0,external_react_namespaceObject.useCallback)(() => { - if (labelwidth) - return { flexBasis: labelwidth }; - return {}; - }, [labelwidth]); - const positionNotch = (0,external_react_namespaceObject.useCallback)(() => { - if (!selectedRef || separated) { - return {}; - } - const selectedWidth = selectedRef.current.offsetWidth; - const selectedOffset = selectedRef.current.getBoundingClientRect().left; - const toggleOffset = toggleRef.current.getBoundingClientRect().left; - const left = selectedOffset - toggleOffset; - return { - left: `${left + 4}px`, - width: `${selectedWidth - 8}px` - }; - }, [selectedRef, separated]); - const contextValue = (0,external_react_namespaceObject.useMemo)(() => ({ - disabled, - readOnly, - onItemSelected, - saveSelectedRef: setSelectedRef, - separated, - type, - value - }), [disabled, readOnly, onItemSelected, separated, type, value]); - return /* @__PURE__ */ external_react_default().createElement((external_react_default()).Fragment, null, /* @__PURE__ */ external_react_default().createElement("div", { className: classes, ref: toggleRef }, /* @__PURE__ */ external_react_default().createElement( - js_ToggleContext.Provider, - { - value: contextValue - }, - label ? /* @__PURE__ */ external_react_default().createElement("label", { className: "tyk-toggle__label", style: getLabelStyles() }, label) : null, - /* @__PURE__ */ external_react_default().createElement("ul", { className: `tyk-toggle__list tyk-toggle__list--${type} ${error && "tyk-toggle__list--has-error"} tyk-toggle__list--${separated ? "separated" : "not-separated"}` }, children, type === "multiple" && !separated ? /* @__PURE__ */ external_react_default().createElement("li", { className: "tyk-toggle__notch", ref: notchRef, style: positionNotch() }) : null) - )), error && /* @__PURE__ */ external_react_default().createElement("p", { className: "tyk-form-control__error-message" }, error)); -} -Toggle.propTypes = { - children: external_prop_types_default().oneOfType([ - external_prop_types_default().arrayOf((external_prop_types_default()).node), - (external_prop_types_default()).node, - (external_prop_types_default()).element, - (external_prop_types_default()).string - ]), - className: (external_prop_types_default()).string, - disabled: (external_prop_types_default()).bool, - readOnly: (external_prop_types_default()).bool, - error: (external_prop_types_default()).string, - onChange: (external_prop_types_default()).func, - label: external_prop_types_default().oneOfType([ - external_prop_types_default().arrayOf((external_prop_types_default()).node), - (external_prop_types_default()).node, - (external_prop_types_default()).element, - (external_prop_types_default()).func, - (external_prop_types_default()).string - ]), - labelwidth: (external_prop_types_default()).string, - theme: (external_prop_types_default()).string, - type: (external_prop_types_default()).string, - // single || multiple - size: (external_prop_types_default()).string, - separated: (external_prop_types_default()).bool, - direction: (external_prop_types_default()).string, - value: external_prop_types_default().oneOfType([ - (external_prop_types_default()).bool, - (external_prop_types_default()).string - ]), - onDark: (external_prop_types_default()).bool, - wrapperClassName: (external_prop_types_default()).string -}; -Toggle.defaultProps = { - separated: false, - theme: "primary", - type: "single", - direction: "row" -}; -Toggle.Item = js_ToggleItemWrapper; -/* harmony default export */ const components_Toggle = (Toggle); - -;// CONCATENATED MODULE: ./src/form/components/StringBuilder/js/service.js -const stringToTokenString = (value, options) => { - let tempStr = value; - options.forEach((option) => { - tempStr = tempStr.replaceAll(option.id, `__TOKEN__${option.id}__TOKEN__`); - }); - return tempStr; -}; -const setCursorPos = (ref, pos) => { - setTimeout(() => { - ref.current.setSelectionRange(pos, pos); - }, 20); -}; - -;// CONCATENATED MODULE: ./src/form/components/StringBuilder/js/string-input.js - - - -function StringInput({ - setShowOptions, - tokenValue, - disabled, - placeholder, - tokens, - dropdownTriggerKey, - setStringBuilderHeight, - stringBuilderHeight, - setTokenString, - tokenString, - showOptions, - options, - setTokenValue, - inputRef, - setInputInFocus, - invalidTokenRegex, - name, - contextMaxLength -}) { - const [isPasteEvent, setIsPasteEvent] = (0,external_react_namespaceObject.useState)(false); - (0,external_react_namespaceObject.useEffect)(() => { - if (tokenValue) { - const tokenLen = tokenValue.length > 50 ? tokenValue.length / 5 : 0; - setStringBuilderHeight(inputRef.current.scrollHeight + tokenLen); - } - }, []); - const handleDelete = (e) => { - const { selectionEnd } = e.target; - if (selectionEnd === tokenValue.length) { - return; - } - const stringBeforeCursor = tokenValue.substring(0, selectionEnd); - const stringAfterCursor = tokenValue.slice(selectionEnd); - const tokenStringForStringAfterCursor = stringToTokenString( - stringAfterCursor, - options - ); - if (tokenStringForStringAfterCursor.startsWith("__TOKEN__")) { - const splitTokens = tokenStringForStringAfterCursor.split(/__TOKEN__(.*?)__TOKEN__/g).filter((t) => t !== ""); - const firstToken = splitTokens[0]; - const newTokenValue2 = `${stringBeforeCursor}${stringAfterCursor.substr(firstToken.length)}`; - const newTokenizedString2 = stringToTokenString(newTokenValue2, options); - setTokenString(newTokenizedString2); - setCursorPos(inputRef, selectionEnd); - return; - } - const newTokenValue = `${stringBeforeCursor}${stringAfterCursor.substr(1)}`; - const newTokenizedString = stringToTokenString(newTokenValue, options); - setTokenString(newTokenizedString); - setCursorPos(inputRef, selectionEnd); - }; - const handleBackSpace = (e) => { - const { selectionEnd } = e.target; - if (selectionEnd === tokenValue.length) { - const lastToken = tokens[(tokens == null ? void 0 : tokens.length) - 2]; - const lastCharsInString = tokenValue.slice(-(lastToken == null ? void 0 : lastToken.length)); - if (lastToken === lastCharsInString) { - e.preventDefault(); - setTokenString( - tokenString.slice(0, -`__TOKEN__${lastCharsInString}__TOKEN__`.length) - ); - return; - } - if (tokenValue.endsWith(" ")) { - const invalidToken2 = tokenValue.match(invalidTokenRegex); - const newTokenValue2 = tokenValue.slice(0, -` ${invalidToken2[invalidToken2.length - 1]} `.length); - const newTokenStr = stringToTokenString(newTokenValue2, options); - setTokenString(newTokenStr); - return; - } - setTokenString(tokenString.slice(0, -1)); - return; - } - const stringBeforeCursor = tokenValue.substring(0, selectionEnd); - const stringAfterCursor = tokenValue.slice(selectionEnd); - const tokenStringForStringBeforeCursor = stringToTokenString(stringBeforeCursor, options); - if (tokenStringForStringBeforeCursor.endsWith("__TOKEN__")) { - e.preventDefault(); - const splitTokens = tokenStringForStringBeforeCursor.split(/__TOKEN__(.*?)__TOKEN__/g); - const lastToken = splitTokens[splitTokens.length - 2]; - const newTokenValue2 = `${stringBeforeCursor.slice(0, -lastToken.length)}${stringAfterCursor}`; - const newTokenizedString2 = stringToTokenString(newTokenValue2, options); - setTokenString(newTokenizedString2); - setCursorPos(inputRef, selectionEnd - lastToken.length); - return; - } - const invalidToken = stringBeforeCursor.match(invalidTokenRegex); - if ((invalidToken == null ? void 0 : invalidToken[0]) && invalidToken.length === 1) { - e.preventDefault(); - const newTokenValue2 = `${stringBeforeCursor.replaceAll(invalidTokenRegex, "").trim()}${stringAfterCursor}`; - const newTokenizedString2 = stringToTokenString(newTokenValue2, options); - setTokenString(newTokenizedString2); - setCursorPos(inputRef, selectionEnd - ` ${invalidToken[0]} `.length); - return; - } - const newTokenValue = `${stringBeforeCursor.slice( - 0, - -1 - )}${stringAfterCursor}`; - const newTokenizedString = stringToTokenString(newTokenValue, options); - setTokenString(newTokenizedString); - setCursorPos(inputRef, selectionEnd - 1); - }; - const addCharacterToTokenString = (text, selectionStart) => { - if (selectionStart - 1 === tokenValue.length) { - setTokenString(`${tokenString}${text}`); - return; - } - const newTokenValue = tokenValue.slice(0, selectionStart - 1) + text + tokenValue.slice(selectionStart - 1); - const newTokenizedString = stringToTokenString(newTokenValue, options); - setTokenString(newTokenizedString); - }; - const handleTextSelection = (e, selectedText, key) => { - const allowedKeys = ["Delete", "Backspace"]; - if (key.length > 1 && allowedKeys.indexOf(key) === -1) { - return; - } - const { selectionEnd, selectionStart } = e.target; - const substitute = key.length > 1 ? "" : key; - if (selectedText.length > 1) { - const newStr = tokenValue.substring(0, selectionStart) + substitute + tokenValue.substring(selectionEnd); - const newTokenStr = stringToTokenString(newStr, options); - setTokenString(newTokenStr); - setCursorPos(inputRef, substitute.length ? selectionStart + 1 : selectionStart); - } - }; - const handleKeyDown = (e) => { - const { key } = e; - const { selectionEnd, selectionStart, value } = e.target; - const selectedText = value.substring(selectionStart, selectionEnd); - if (key === dropdownTriggerKey && !showOptions) { - e.preventDefault(); - setShowOptions(true); - return; - } - if (key === "Enter") { - e.preventDefault(); - return; - } - if (key === "Backspace") { - e.preventDefault(); - handleBackSpace(e); - } - if (key === "Delete") { - e.preventDefault(); - handleDelete(e); - } - if (e.metaKey && key === "x") { - setTokenString(""); - } - if (selectedText) { - e.preventDefault(); - handleTextSelection(e, selectedText, key); - } - }; - const handleOnChange = (e) => { - const { target } = e; - const { selectionStart, value } = target; - if (showOptions) { - setShowOptions(false); - } - setTokenValue(value); - if (value && !isPasteEvent) { - const text = value.charAt(selectionStart - 1); - addCharacterToTokenString(text, selectionStart); - } - setIsPasteEvent(false); - }; - const handlePasteEvent = (e) => { - e.preventDefault(); - const { clipboardData } = e; - const { selectionStart, selectionEnd } = e.target; - setIsPasteEvent(true); - let pasteString = clipboardData.getData("text/plain"); - if (selectionStart !== selectionEnd) { - pasteString = tokenValue.slice(0, selectionStart) + pasteString + tokenValue.slice(selectionEnd, tokenValue.length); - const newTokenString2 = stringToTokenString(pasteString, options); - setTokenString(newTokenString2); - return; - } - const newTokenString = stringToTokenString(pasteString, options); - addCharacterToTokenString(newTokenString, selectionStart); - }; - const handleOnFocus = () => { - setInputInFocus(true); - }; - return /* @__PURE__ */ external_react_default().createElement( - "textarea", - { - spellCheck: false, - disabled, - className: "string-builder__input", - value: tokenValue, - onChange: (e) => handleOnChange(e), - onKeyDown: (e) => handleKeyDown(e), - placeholder, - name, - ref: inputRef, - style: { height: `${stringBuilderHeight}px` }, - maxLength: contextMaxLength, - onPaste: handlePasteEvent, - onFocus: handleOnFocus, - onBlur: () => setInputInFocus(false) - } - ); -} -StringInput.propTypes = { - setShowOptions: (external_prop_types_default()).func, - tokenValue: (external_prop_types_default()).string, - disabled: (external_prop_types_default()).bool, - placeholder: (external_prop_types_default()).string, - tokenString: (external_prop_types_default()).string, - stringBuilderHeight: (external_prop_types_default()).number, - dropdownTriggerKey: (external_prop_types_default()).string, - setStringBuilderHeight: (external_prop_types_default()).func, - setTokenString: (external_prop_types_default()).func, - setTokenValue: (external_prop_types_default()).func, - setInputInFocus: (external_prop_types_default()).func, - showOptions: (external_prop_types_default()).bool, - tokens: external_prop_types_default().arrayOf((external_prop_types_default()).string), - options: external_prop_types_default().arrayOf( - external_prop_types_default().shape({ - id: (external_prop_types_default()).string.isRequired, - name: (external_prop_types_default()).string.isRequired, - className: (external_prop_types_default()).string, - desc: (external_prop_types_default()).string - }) - ), - inputRef: external_prop_types_default().instanceOf(Object), - invalidTokenRegex: external_prop_types_default().instanceOf(RegExp), - name: (external_prop_types_default()).string, - contextMaxLength: (external_prop_types_default()).number -}; - - -;// CONCATENATED MODULE: ./src/form/components/StringBuilder/js/invalid-token.js - - - - -const InvalidToken = (props) => { - const { token, findInvalidTokenSubstitute } = props; - return /* @__PURE__ */ external_react_default().createElement( - "span", - { - role: "main", - onClick: () => findInvalidTokenSubstitute(token), - onKeyDown: () => { - } - }, - /* @__PURE__ */ external_react_default().createElement(components_Tooltip, { render: "invalid token detected", position: "top" }, /* @__PURE__ */ external_react_default().createElement("span", { className: "invalid_token" }, `${token}`, /* @__PURE__ */ external_react_default().createElement(components_Icon, { type: "exclamation-circle" }))) - ); -}; -InvalidToken.propTypes = { - token: (external_prop_types_default()).string, - findInvalidTokenSubstitute: (external_prop_types_default()).func -}; -/* harmony default export */ const invalid_token = (InvalidToken); - -;// CONCATENATED MODULE: ./src/form/components/StringBuilder/js/tokenized-string.js - - - -const TokenizedString = (props) => { - const { - tokens, - options, - disabled, - invalidTokenRegex, - findInvalidTokenSubstitute - } = props; - const hasDuplicates = new Set(tokens).size !== tokens.length; - const allTokens = tokens && tokens.map((token) => { - if (options) { - const matchedOption = options.find((option) => option.id === token); - if (invalidTokenRegex && !matchedOption) { - const matchedTokens = token.replaceAll(" ", "").split(invalidTokenRegex); - if ((matchedTokens == null ? void 0 : matchedTokens.length) > 1) { - return /* @__PURE__ */ external_react_default().createElement("span", { key: `${token}${hasDuplicates && Math.random()}` }, matchedTokens.map((tkn) => { - if (tkn.match(invalidTokenRegex)) { - return /* @__PURE__ */ external_react_default().createElement( - invalid_token, - { - token: tkn, - findInvalidTokenSubstitute - } - ); - } - return /* @__PURE__ */ external_react_default().createElement("span", null, `${tkn} `); - })); - } - } - if (matchedOption) { - return /* @__PURE__ */ external_react_default().createElement( - "span", - { - key: `${token}${hasDuplicates && Math.random()}`, - className: `${matchedOption.className || "default-option-name"}` - }, - matchedOption.id - ); - } - } - return /* @__PURE__ */ external_react_default().createElement("span", { key: `${token}${hasDuplicates && Math.random()}` }, token); - }); - return /* @__PURE__ */ external_react_default().createElement( - "div", - { - className: `string-builder__styled ${disabled && "string-builder__disabled"}` - }, - allTokens - ); -}; -TokenizedString.propTypes = { - tokens: external_prop_types_default().arrayOf((external_prop_types_default()).string), - options: external_prop_types_default().arrayOf(external_prop_types_default().instanceOf(Object)), - disabled: (external_prop_types_default()).bool, - invalidTokenRegex: external_prop_types_default().instanceOf(RegExp), - findInvalidTokenSubstitute: (external_prop_types_default()).func -}; - -;// CONCATENATED MODULE: ./src/form/components/StringBuilder/js/options-list.js - - - -const OptionsList = ({ - options, - showOptions, - handleOptionSelection, - containerRef, - getThemeClasses, - setShowOptions, - allowSearch, - initialSearchValue -}) => { - const [filterValue, setFilterValue] = (0,external_react_namespaceObject.useState)(initialSearchValue); - const [filteredOptions, setFilteredOptions] = (0,external_react_namespaceObject.useState)(options); - (0,external_react_namespaceObject.useEffect)(() => { - setFilterValue(initialSearchValue); - }, [initialSearchValue]); - (0,external_react_namespaceObject.useEffect)(() => { - if (filterValue === "") { - setFilteredOptions(options); - return; - } - const newFilteredOptions = options.filter( - (option) => option.name.toLowerCase().includes(filterValue.toLowerCase()) - ); - setFilteredOptions(newFilteredOptions); - }, [filterValue]); - (0,external_react_namespaceObject.useEffect)(() => { - setFilteredOptions(options); - }, [options]); - if (!showOptions) { - return null; - } - return /* @__PURE__ */ external_react_default().createElement((external_react_default()).Fragment, null, /* @__PURE__ */ external_react_default().createElement( - components_FloatingContainer, - { - className: `string-builder-dropdown tyk-form-group ${getThemeClasses().join(" ")}`, - element: containerRef, - size: "matchElement", - displayAxis: "vertical" - }, - allowSearch && /* @__PURE__ */ external_react_default().createElement("div", { className: "string-builder-search" }, /* @__PURE__ */ external_react_default().createElement( - "input", - { - autoFocus: true, - className: "tyk-form-control", - value: filterValue, - placeholder: "Search parameter", - onChange: (e) => { - setFilterValue(e.target.value); - }, - onKeyDown: (e) => { - if (e.key === "Escape" || e.key === "ArrowUp" || e.key === "Enter") { - setShowOptions(false); - } - } - } - )), - /* @__PURE__ */ external_react_default().createElement("ul", { className: "string-builder-list" }, filteredOptions.map((option) => /* @__PURE__ */ external_react_default().createElement( - "li", - { - key: `${option.id}${Math.random()}`, - onMouseDown: () => handleOptionSelection(option) - }, - /* @__PURE__ */ external_react_default().createElement("span", { className: `url-builder__options_name ${option.className || "default-option-name"}` }, option.name), - option.desc && /* @__PURE__ */ external_react_default().createElement("span", { className: "url-builder__options_description" }, "\xA0 : \xA0", option.desc) - ))) - )); -}; -OptionsList.propTypes = { - options: external_prop_types_default().arrayOf(Object), - showOptions: (external_prop_types_default()).bool, - handleOptionSelection: (external_prop_types_default()).func, - getThemeClasses: (external_prop_types_default()).func, - setShowOptions: (external_prop_types_default()).func, - containerRef: external_prop_types_default().instanceOf(Object), - allowSearch: (external_prop_types_default()).bool, - initialSearchValue: (external_prop_types_default()).string -}; - -;// CONCATENATED MODULE: ./src/form/components/StringBuilder/js/string-builder-footer.js - - -const StringBuilderFooter = (props) => { - const { - note, - error, - inputInFocus, - stringBuilderHeight, - dropdownTriggerKey - } = props; - return /* @__PURE__ */ external_react_default().createElement( - "div", - { - className: "string-builder-footer", - style: { - marginTop: stringBuilderHeight ? `${stringBuilderHeight - 8}px` : "30px" - } - }, - inputInFocus && !error && /* @__PURE__ */ external_react_default().createElement("p", { className: "tyk-form-control__help-block" }, /* @__PURE__ */ external_react_default().createElement("span", null, "Enter", /* @__PURE__ */ external_react_default().createElement("span", { className: "string_builder_trigger" }, dropdownTriggerKey), "to add any parameter")), - note && /* @__PURE__ */ external_react_default().createElement("p", { className: "tyk-form-control__help-block" }, note), - error && error !== "true" && error !== "false" && /* @__PURE__ */ external_react_default().createElement("p", { className: "tyk-form-control__error-message" }, error) - ); -}; -StringBuilderFooter.propTypes = { - note: (external_prop_types_default()).string, - error: (external_prop_types_default()).string, - dropdownTriggerKey: (external_prop_types_default()).string, - inputInFocus: (external_prop_types_default()).bool, - stringBuilderHeight: (external_prop_types_default()).number -}; - -;// CONCATENATED MODULE: ./src/form/components/StringBuilder/index.js - - - - - - - - -function StringBuilder(props) { - const { - options, - onChange, - value, - theme, - error, - disabled, - readOnly, - note, - label, - labelwidth, - placeholder, - allowSearch, - dropdownTriggerKey, - invalidTokenRegex, - name, - wrapperClassName = "" - } = props; - const [tokenValue, setTokenValue] = (0,external_react_namespaceObject.useState)(value); - const [stringBuilderHeight, setStringBuilderHeight] = (0,external_react_namespaceObject.useState)(); - const [showOptions, setShowOptions] = (0,external_react_namespaceObject.useState)(false); - const [tokenString, setTokenString] = (0,external_react_namespaceObject.useState)(stringToTokenString(value, options)); - const [contextMaxLength, setContentMaxLength] = (0,external_react_namespaceObject.useState)( - tokenValue.length + 5 - ); - const [tokens, setTokens] = (0,external_react_namespaceObject.useState)([]); - const [prevTokenValue, setPrevTokenValue] = (0,external_react_namespaceObject.useState)(); - const [inputInFocus, setInputInFocus] = (0,external_react_namespaceObject.useState)(false); - const [initialSearchValue, setInitialSearchValue] = (0,external_react_namespaceObject.useState)(""); - const [selectedInvalidToken, setSelectedInvalidToken] = (0,external_react_namespaceObject.useState)(null); - const prevTokenString = hooks_usePrevious(tokenString); - const containerRef = (0,external_react_namespaceObject.useRef)(); - const inputRef = (0,external_react_namespaceObject.useRef)(); - (0,external_react_namespaceObject.useEffect)(() => { - if (onChange) { - onChange(tokenValue.replaceAll(" ", "")); - } - }, [tokenValue]); - (0,external_react_namespaceObject.useEffect)(() => { - const tempVal = invalidTokenRegex ? value.replaceAll(invalidTokenRegex, " $& ") : value; - setTokenValue(() => tempVal); - setTokenString(() => stringToTokenString(tempVal, options)); - }, [value]); - (0,external_react_namespaceObject.useEffect)(() => { - const splitTokens = tokenString.split(/__TOKEN__(.*?)__TOKEN__/g); - const splitTokensStr = splitTokens.join(""); - setTokens(() => splitTokens); - setTokenValue(() => splitTokensStr); - setPrevTokenValue(() => splitTokensStr); - }, [tokenString]); - (0,external_react_namespaceObject.useEffect)(() => { - if (contextMaxLength - 3 < tokenValue.length) { - const newHeight = inputRef.current.scrollHeight + 3; - setStringBuilderHeight(() => newHeight); - setContentMaxLength(() => contextMaxLength + 25); - } - }, [tokenString, tokenValue]); - const handleOptionSelection = (option) => { - let newInput = ""; - const { selectionStart } = inputRef.current; - if (prevTokenString && prevTokenString !== value && !selectedInvalidToken) { - newInput = prevTokenString + tokenValue.split(prevTokenValue)[1]; - } - let tokenizedString = ""; - if (selectionStart !== tokenValue.length && !selectedInvalidToken) { - const newTokenValue = tokenValue.slice(0, selectionStart) + option.id + tokenValue.slice(selectionStart); - tokenizedString = stringToTokenString(newTokenValue, options); - setCursorPos(inputRef, selectionStart + option.id.length); - } else { - tokenizedString = `${newInput || tokenValue}__TOKEN__${option.id}__TOKEN__`; - } - if (selectedInvalidToken) { - tokenizedString = tokenString.replace( - ` ${selectedInvalidToken} `, - `__TOKEN__${option.id}__TOKEN__` - ); - setSelectedInvalidToken(() => null); - setInitialSearchValue(() => ""); - } - setTokenString(() => tokenizedString); - setShowOptions(() => false); - setTimeout(() => { - inputRef.current.focus(); - }, 20); - }; - const getThemeClasses = () => { - const themes = theme ? theme.split(" ") : []; - return themes.map((iTheme) => `tyk-form-group--${iTheme}`); - }; - const getCssClasses = () => [ - "tyk-form-group", - ...getThemeClasses(), - error && "has-error", - disabled && "disabled" - ].filter(Boolean).join(" "); - const findInvalidTokenSubstitute = (invalidToken) => { - setSelectedInvalidToken(() => invalidToken); - setInitialSearchValue(() => invalidToken.replace(/[^a-zA-Z ]/g, "")); - setShowOptions(() => true); - }; - return /* @__PURE__ */ external_react_default().createElement("div", { className: `string-builder ${wrapperClassName}`, ref: containerRef }, /* @__PURE__ */ external_react_default().createElement("div", { className: getCssClasses() }, label && /* @__PURE__ */ external_react_default().createElement("label", { style: { flexBasis: labelwidth || "auto" } }, label), !readOnly && /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-form-control__wrapper" }, /* @__PURE__ */ external_react_default().createElement( - "div", - { - className: `tyk-form-control ${disabled && "string-builder__disabled"}`, - style: { height: `${stringBuilderHeight}px` } - }, - /* @__PURE__ */ external_react_default().createElement( - StringInput, - { - setInputInFocus, - setShowOptions, - tokenValue, - disabled, - placeholder, - allowSearch, - tokens, - dropdownTriggerKey, - setStringBuilderHeight, - stringBuilderHeight, - setTokenString, - tokenString, - showOptions, - options, - setTokenValue, - inputRef, - invalidTokenRegex, - name, - contextMaxLength, - setContentMaxLength - } - ), - /* @__PURE__ */ external_react_default().createElement( - TokenizedString, - { - tokens, - options, - disabled, - invalidTokenRegex, - findInvalidTokenSubstitute - } - ), - /* @__PURE__ */ external_react_default().createElement( - OptionsList, - { - showOptions, - options, - handleOptionSelection, - containerRef, - getThemeClasses, - setShowOptions, - allowSearch, - initialSearchValue - } - ), - /* @__PURE__ */ external_react_default().createElement( - StringBuilderFooter, - { - error, - note, - inputInFocus, - stringBuilderHeight, - dropdownTriggerKey - } - ) - )), readOnly && /* @__PURE__ */ external_react_default().createElement("div", { className: "tyk-form-control--readonly" }, value || "-"))); -} -StringBuilder.propTypes = { - /** Options to render in the list */ - options: external_prop_types_default().arrayOf( - external_prop_types_default().shape({ - /** id is the value that will be appended to the string on selection */ - id: (external_prop_types_default()).string.isRequired, - /** name of option (view) */ - name: (external_prop_types_default()).string.isRequired, - /** to style / highlight the token */ - className: (external_prop_types_default()).string, - /** description of option */ - desc: (external_prop_types_default()).string - }) - ), - /** Callback executed on change of string value */ - onChange: (external_prop_types_default()).func, - /** Initial value */ - value: (external_prop_types_default()).string, - /** Disable input */ - disabled: (external_prop_types_default()).bool, - /** Read Only prop removes the form element and displays just the value */ - readOnly: (external_prop_types_default()).bool, - /** Show error state (w/ or w/o message) */ - error: (external_prop_types_default()).string, - /** Component theme */ - theme: (external_prop_types_default()).string, - /** Footnote for component */ - note: (external_prop_types_default()).string, - /** Label for component */ - label: external_prop_types_default().oneOfType([ - external_prop_types_default().arrayOf((external_prop_types_default()).node), - (external_prop_types_default()).node, - (external_prop_types_default()).element, - (external_prop_types_default()).func, - (external_prop_types_default()).string - ]), - /** Label Width for component */ - labelwidth: (external_prop_types_default()).string, - /** Placeholder for component */ - placeholder: (external_prop_types_default()).string, - /** Key To trigger dropdown */ - dropdownTriggerKey: (external_prop_types_default()).string, - /** Regex to detect invalid tokens in the value */ - invalidTokenRegex: external_prop_types_default().instanceOf(RegExp), - /** Allow users to search from options */ - allowSearch: (external_prop_types_default()).bool, - name: (external_prop_types_default()).string, - wrapperClassName: (external_prop_types_default()).string -}; -StringBuilder.defaultProps = { - onChange: null, - value: "", - options: [], - theme: "default" -}; -/* harmony default export */ const components_StringBuilder = (StringBuilder); - -;// CONCATENATED MODULE: ./src/utils/config/config.js -const config = { - FORM_DEBOUNCE: 200 -}; -function setConfig(key, val) { - config[key] = val; -} -/* harmony default export */ const config_config = (config); - -;// CONCATENATED MODULE: ./src/utils/formik/index.js -var formik_defProp = Object.defineProperty; -var formik_defProps = Object.defineProperties; -var formik_getOwnPropDescs = Object.getOwnPropertyDescriptors; -var formik_getOwnPropSymbols = Object.getOwnPropertySymbols; -var formik_hasOwnProp = Object.prototype.hasOwnProperty; -var formik_propIsEnum = Object.prototype.propertyIsEnumerable; -var formik_defNormalProp = (obj, key, value) => key in obj ? formik_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var formik_spreadValues = (a, b) => { - for (var prop in b || (b = {})) - if (formik_hasOwnProp.call(b, prop)) - formik_defNormalProp(a, prop, b[prop]); - if (formik_getOwnPropSymbols) - for (var prop of formik_getOwnPropSymbols(b)) { - if (formik_propIsEnum.call(b, prop)) - formik_defNormalProp(a, prop, b[prop]); - } - return a; -}; -var formik_spreadProps = (a, b) => formik_defProps(a, formik_getOwnPropDescs(b)); -var formik_objRest = (source, exclude) => { - var target = {}; - for (var prop in source) - if (formik_hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) - target[prop] = source[prop]; - if (source != null && formik_getOwnPropSymbols) - for (var prop of formik_getOwnPropSymbols(source)) { - if (exclude.indexOf(prop) < 0 && formik_propIsEnum.call(source, prop)) - target[prop] = source[prop]; - } - return target; -}; - - -function getValueFromPath(obj, path) { - const indexes = path.split(/[\][.]/).filter(Boolean); - return indexes.reduce((acc, v) => acc ? acc[v] : acc, obj); -} -function formik_debounce(f, limit) { - let timeoutId; - return (...args) => { - clearTimeout(timeoutId); - timeoutId = setTimeout(f, limit, ...args); - }; -} -const wrapper = (Component, options) => (_a) => { - var _b = _a, { field, form } = _b, properties = formik_objRest(_b, ["field", "form"]); - var _a2; - const DEFAULT_DEBOUNCE_TIME_MS = typeof config_config.FORM_DEBOUNCE === "number" ? config_config.FORM_DEBOUNCE : 200; - const [myValue, setMyValue] = (0,external_react_namespaceObject.useState)(field.value); - const opts = formik_spreadValues({ - getOnChangeProps: () => ({}), - hasIsFieldProp: false - }, options); - const executeDebounced = (0,external_react_namespaceObject.useCallback)((() => { - const fn = (f) => f(); - if (properties.debounce === false || config_config.FORM_DEBOUNCE === false && !properties.debounce) { - return fn; - } - const timeout = typeof properties.debounce === "number" ? properties.debounce : DEFAULT_DEBOUNCE_TIME_MS; - return formik_debounce(fn, timeout); - })(), []); - const getValue = (v) => { - if (v && v.target) { - if (v.target.nodeName === "INPUT" && (v.target.type === "checkbox" || v.target.type === "radio")) { - return v.target.checked; - } - return v.target.value; - } - return v; - }; - const onChange = (valueOrEvent) => { - const value = getValue(valueOrEvent); - const onChangeProps = opts.getOnChangeProps(value, field, form, properties); - const newValue = onChangeProps.value || properties.value || value; - executeDebounced(() => { - if (typeof properties.onChange === "function") { - properties.onChange(newValue); - } - field.onChange({ target: formik_spreadValues({ name: field.name, value: newValue }, onChangeProps) }); - }); - setMyValue(newValue); - }; - const formError = (getValueFromPath(form.touched, field.name) || Boolean(form.submitCount)) && getValueFromPath(form.errors, field.name); - const error = typeof formError === "string" ? formError : ""; - (0,external_react_namespaceObject.useEffect)(() => { - setMyValue(field.value); - }, [field.value]); - if ((_a2 = form.status) == null ? void 0 : _a2.disabled) - properties.disabled = true; - const componentProps = formik_spreadValues({}, properties); - delete componentProps.debounce; - return /* @__PURE__ */ external_react_default().createElement( - Component, - formik_spreadProps(formik_spreadValues(formik_spreadValues(formik_spreadProps(formik_spreadValues({}, field), { - error - }), opts.hasIsFieldProp ? { isfield: true } : {}), componentProps), { - checked: typeof properties.value === "string" ? field.value === properties.value : field.value, - onChange, - value: myValue, - input: { value: myValue, onChange } - }) - ); -}; -/* harmony default export */ const formik = (wrapper); - -;// CONCATENATED MODULE: ./src/form/formik/FormikCheckbox/index.js - - -/* harmony default export */ const FormikCheckbox = (formik(Checkbox, { - getOnChangeProps: (value) => ({ - checked: value - }) -})); - -;// CONCATENATED MODULE: ./src/form/formik/FormikCodeEditor/index.js - - -/* harmony default export */ const FormikCodeEditor = (formik(components_CodeEditor)); - -;// CONCATENATED MODULE: ./src/form/formik/FormikCombobox/index.js - - -/* harmony default export */ const FormikCombobox = (formik(Combobox)); - -;// CONCATENATED MODULE: ./src/form/formik/FormikCombobox2/index.js - - -/* harmony default export */ const FormikCombobox2 = (formik(components_Combobox2)); - -;// CONCATENATED MODULE: ./src/form/formik/FormikDatePicker/index.js - - -/* harmony default export */ const FormikDatePicker = (formik(components_DatePicker)); - -;// CONCATENATED MODULE: ./src/form/formik/FormikEditableList/index.js - - -/* harmony default export */ const FormikEditableList = (formik(EditableList, { - getOnChangeProps: (value) => ({ value: value || [] }) -})); - -;// CONCATENATED MODULE: ./src/form/formik/FormikEditableList2/index.js - - -/* harmony default export */ const FormikEditableList2 = (formik(components_EditableList2)); - -;// CONCATENATED MODULE: ./src/form/formik/FormikFileInput/index.js - - -/* harmony default export */ const FormikFileInput = (formik(FileInput)); - -;// CONCATENATED MODULE: ./src/form/formik/FormikInput/index.js - - -/* harmony default export */ const FormikInput = (formik(Input, { hasIsFieldProp: true })); - -;// CONCATENATED MODULE: ./src/form/formik/FormikInput2/index.js - - -/* harmony default export */ const FormikInput2 = (formik(components_Input2)); - -;// CONCATENATED MODULE: ./src/form/formik/FormikMultiselect/index.js - - -/* harmony default export */ const FormikMultiselect = (formik(components_Multiselect)); - -;// CONCATENATED MODULE: ./src/form/formik/FormikRadio/index.js - - -/* harmony default export */ const FormikRadio = (formik(Radio, { - getOnChangeProps: (value, field, form, properties) => ({ - checked: value === properties.value, - value: properties.value - }) -})); - -;// CONCATENATED MODULE: ./src/form/formik/FormikSelect/index.js - - -/* harmony default export */ const FormikSelect = (formik(Select, { hasIsFieldProp: true })); - -;// CONCATENATED MODULE: ./src/form/formik/FormikSelectableList/index.js - - -/* harmony default export */ const FormikSelectableList = (formik(components_SelectableList)); - -;// CONCATENATED MODULE: ./src/form/formik/FormikTextarea/index.js - - -/* harmony default export */ const FormikTextarea = (formik(components_Textarea)); - -;// CONCATENATED MODULE: ./src/form/formik/FormikToggle/index.js - - -/* harmony default export */ const FormikToggle = (formik(components_Toggle)); - -;// CONCATENATED MODULE: ./src/form/formik/FormikStringBuilder/index.js - - -/* harmony default export */ const FormikStringBuilder = (formik(components_StringBuilder)); - -;// CONCATENATED MODULE: ./src/form/redux-form/FieldCodeEditor/index.js -var FieldCodeEditor_defProp = Object.defineProperty; -var FieldCodeEditor_defProps = Object.defineProperties; -var FieldCodeEditor_getOwnPropDescs = Object.getOwnPropertyDescriptors; -var FieldCodeEditor_getOwnPropSymbols = Object.getOwnPropertySymbols; -var FieldCodeEditor_hasOwnProp = Object.prototype.hasOwnProperty; -var FieldCodeEditor_propIsEnum = Object.prototype.propertyIsEnumerable; -var FieldCodeEditor_defNormalProp = (obj, key, value) => key in obj ? FieldCodeEditor_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var FieldCodeEditor_spreadValues = (a, b) => { - for (var prop in b || (b = {})) - if (FieldCodeEditor_hasOwnProp.call(b, prop)) - FieldCodeEditor_defNormalProp(a, prop, b[prop]); - if (FieldCodeEditor_getOwnPropSymbols) - for (var prop of FieldCodeEditor_getOwnPropSymbols(b)) { - if (FieldCodeEditor_propIsEnum.call(b, prop)) - FieldCodeEditor_defNormalProp(a, prop, b[prop]); - } - return a; -}; -var FieldCodeEditor_spreadProps = (a, b) => FieldCodeEditor_defProps(a, FieldCodeEditor_getOwnPropDescs(b)); -var FieldCodeEditor_objRest = (source, exclude) => { - var target = {}; - for (var prop in source) - if (FieldCodeEditor_hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) - target[prop] = source[prop]; - if (source != null && FieldCodeEditor_getOwnPropSymbols) - for (var prop of FieldCodeEditor_getOwnPropSymbols(source)) { - if (exclude.indexOf(prop) < 0 && FieldCodeEditor_propIsEnum.call(source, prop)) - target[prop] = source[prop]; - } - return target; -}; -var FieldCodeEditor_publicField = (obj, key, value) => { - FieldCodeEditor_defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); - return value; -}; - - - - -class FieldCodeEditor extends external_react_namespaceObject.Component { - constructor(props) { - super(props); - this.handleOnChange = this.handleOnChange.bind(this); - } - getInputError() { - const { meta, validationmessages } = this.props; - const { touched, error, warning } = meta; - let message = null; - if (touched && error && validationmessages[error]) { - message = validationmessages[error]; - } else if (touched && warning) { - message = "warning"; - } - return message; - } - handleOnChange(value) { - const { input } = this.prop; - const { onChange } = input; - onChange((0,external_immutable_namespaceObject.fromJS)(value)); - } - render() { - const _a = this.props, { input } = _a, rest = FieldCodeEditor_objRest(_a, ["input"]); - return /* @__PURE__ */ external_react_default().createElement( - components_CodeEditor, - FieldCodeEditor_spreadProps(FieldCodeEditor_spreadValues(FieldCodeEditor_spreadValues({}, input), rest), { - error: this.getInputError() - }) - ); - } -} -FieldCodeEditor_publicField(FieldCodeEditor, "propTypes", { - input: external_prop_types_default().instanceOf(Object), - meta: external_prop_types_default().instanceOf(Object), - validationmessages: external_prop_types_default().instanceOf(Object) -}); - -;// CONCATENATED MODULE: ./src/form/redux-form/FieldCombobox/index.js -var FieldCombobox_defProp = Object.defineProperty; -var FieldCombobox_defProps = Object.defineProperties; -var FieldCombobox_getOwnPropDescs = Object.getOwnPropertyDescriptors; -var FieldCombobox_getOwnPropSymbols = Object.getOwnPropertySymbols; -var FieldCombobox_hasOwnProp = Object.prototype.hasOwnProperty; -var FieldCombobox_propIsEnum = Object.prototype.propertyIsEnumerable; -var FieldCombobox_defNormalProp = (obj, key, value) => key in obj ? FieldCombobox_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var FieldCombobox_spreadValues = (a, b) => { - for (var prop in b || (b = {})) - if (FieldCombobox_hasOwnProp.call(b, prop)) - FieldCombobox_defNormalProp(a, prop, b[prop]); - if (FieldCombobox_getOwnPropSymbols) - for (var prop of FieldCombobox_getOwnPropSymbols(b)) { - if (FieldCombobox_propIsEnum.call(b, prop)) - FieldCombobox_defNormalProp(a, prop, b[prop]); - } - return a; -}; -var FieldCombobox_spreadProps = (a, b) => FieldCombobox_defProps(a, FieldCombobox_getOwnPropDescs(b)); -var FieldCombobox_objRest = (source, exclude) => { - var target = {}; - for (var prop in source) - if (FieldCombobox_hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) - target[prop] = source[prop]; - if (source != null && FieldCombobox_getOwnPropSymbols) - for (var prop of FieldCombobox_getOwnPropSymbols(source)) { - if (exclude.indexOf(prop) < 0 && FieldCombobox_propIsEnum.call(source, prop)) - target[prop] = source[prop]; - } - return target; -}; -var FieldCombobox_publicField = (obj, key, value) => { - FieldCombobox_defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); - return value; -}; - - - - -class FieldCombobox extends external_react_namespaceObject.Component { - constructor(props) { - super(props); - this.handleOnChange = this.handleOnChange.bind(this); - } - getComboboxError() { - const { meta, validationmessages } = this.props; - const { touched, error, warning } = meta; - let message = null; - if (touched && error && validationmessages[error]) { - message = validationmessages[error]; - } else if (touched && warning) { - message = "warning"; - } - return message; - } - handleOnChange(value) { - const { input } = this.props; - const { onChange } = input; - onChange((0,external_immutable_namespaceObject.fromJS)(value)); - } - render() { - const props = FieldCombobox_objRest(this.props, []); - return /* @__PURE__ */ external_react_default().createElement( - Combobox, - FieldCombobox_spreadProps(FieldCombobox_spreadValues({}, props), { - onChange: this.handleOnChange, - value: !props.input.value ? props.input.value : props.input.value.toJS(), - error: this.getComboboxError() - }) - ); - } -} -FieldCombobox_publicField(FieldCombobox, "propTypes", { - meta: external_prop_types_default().instanceOf(Object), - input: external_prop_types_default().instanceOf(Object), - validationmessages: external_prop_types_default().instanceOf(Object) -}); - -;// CONCATENATED MODULE: ./src/form/redux-form/FieldDropdown/index.js -var FieldDropdown_defProp = Object.defineProperty; -var FieldDropdown_defProps = Object.defineProperties; -var FieldDropdown_getOwnPropDescs = Object.getOwnPropertyDescriptors; -var FieldDropdown_getOwnPropSymbols = Object.getOwnPropertySymbols; -var FieldDropdown_hasOwnProp = Object.prototype.hasOwnProperty; -var FieldDropdown_propIsEnum = Object.prototype.propertyIsEnumerable; -var FieldDropdown_defNormalProp = (obj, key, value) => key in obj ? FieldDropdown_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var FieldDropdown_spreadValues = (a, b) => { - for (var prop in b || (b = {})) - if (FieldDropdown_hasOwnProp.call(b, prop)) - FieldDropdown_defNormalProp(a, prop, b[prop]); - if (FieldDropdown_getOwnPropSymbols) - for (var prop of FieldDropdown_getOwnPropSymbols(b)) { - if (FieldDropdown_propIsEnum.call(b, prop)) - FieldDropdown_defNormalProp(a, prop, b[prop]); - } - return a; -}; -var FieldDropdown_spreadProps = (a, b) => FieldDropdown_defProps(a, FieldDropdown_getOwnPropDescs(b)); -var FieldDropdown_objRest = (source, exclude) => { - var target = {}; - for (var prop in source) - if (FieldDropdown_hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) - target[prop] = source[prop]; - if (source != null && FieldDropdown_getOwnPropSymbols) - for (var prop of FieldDropdown_getOwnPropSymbols(source)) { - if (exclude.indexOf(prop) < 0 && FieldDropdown_propIsEnum.call(source, prop)) - target[prop] = source[prop]; - } - return target; -}; -var FieldDropdown_publicField = (obj, key, value) => { - FieldDropdown_defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); - return value; -}; - - - - -class FieldDropdown extends external_react_namespaceObject.Component { - constructor(props) { - super(props); - this.handleOnChange = this.handleOnChange.bind(this); - } - handleOnChange(value) { - const { input } = this.props; - const { onChange } = input; - onChange((0,external_immutable_namespaceObject.fromJS)(value)); - } - render() { - const _a = this.props, { - children, - input - } = _a, rest = FieldDropdown_objRest(_a, [ - "children", - "input" - ]); - return /* @__PURE__ */ external_react_default().createElement( - components_Dropdown, - FieldDropdown_spreadProps(FieldDropdown_spreadValues({}, rest), { - onSelect: this.handleOnChange, - selectedItem: input.value - }), - children - ); - } -} -FieldDropdown_publicField(FieldDropdown, "propTypes", { - children: external_prop_types_default().oneOfType([ - external_prop_types_default().arrayOf((external_prop_types_default()).node), - (external_prop_types_default()).node, - (external_prop_types_default()).element, - (external_prop_types_default()).string - ]), - input: external_prop_types_default().instanceOf(Object) -}); - -;// CONCATENATED MODULE: ./src/form/redux-form/FieldPagination/index.js -var FieldPagination_defProp = Object.defineProperty; -var FieldPagination_defProps = Object.defineProperties; -var FieldPagination_getOwnPropDescs = Object.getOwnPropertyDescriptors; -var FieldPagination_getOwnPropSymbols = Object.getOwnPropertySymbols; -var FieldPagination_hasOwnProp = Object.prototype.hasOwnProperty; -var FieldPagination_propIsEnum = Object.prototype.propertyIsEnumerable; -var FieldPagination_defNormalProp = (obj, key, value) => key in obj ? FieldPagination_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var FieldPagination_spreadValues = (a, b) => { - for (var prop in b || (b = {})) - if (FieldPagination_hasOwnProp.call(b, prop)) - FieldPagination_defNormalProp(a, prop, b[prop]); - if (FieldPagination_getOwnPropSymbols) - for (var prop of FieldPagination_getOwnPropSymbols(b)) { - if (FieldPagination_propIsEnum.call(b, prop)) - FieldPagination_defNormalProp(a, prop, b[prop]); - } - return a; -}; -var FieldPagination_spreadProps = (a, b) => FieldPagination_defProps(a, FieldPagination_getOwnPropDescs(b)); -var FieldPagination_objRest = (source, exclude) => { - var target = {}; - for (var prop in source) - if (FieldPagination_hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) - target[prop] = source[prop]; - if (source != null && FieldPagination_getOwnPropSymbols) - for (var prop of FieldPagination_getOwnPropSymbols(source)) { - if (exclude.indexOf(prop) < 0 && FieldPagination_propIsEnum.call(source, prop)) - target[prop] = source[prop]; - } - return target; -}; - - - -const FieldPagination = (props) => { - const _a = props, { input } = _a, rest = FieldPagination_objRest(_a, ["input"]); - return /* @__PURE__ */ external_react_default().createElement( - Pagination, - FieldPagination_spreadProps(FieldPagination_spreadValues(FieldPagination_spreadValues({}, input), rest), { - onChange: input.onChange, - value: input.value ? input.value : 0 - }) - ); -}; -FieldPagination.propTypes = { - input: external_prop_types_default().instanceOf(Object) -}; -/* harmony default export */ const redux_form_FieldPagination = (FieldPagination); - -;// CONCATENATED MODULE: ./src/form/redux-form/FieldCombobox2/index.js -var FieldCombobox2_defProp = Object.defineProperty; -var FieldCombobox2_defProps = Object.defineProperties; -var FieldCombobox2_getOwnPropDescs = Object.getOwnPropertyDescriptors; -var FieldCombobox2_getOwnPropSymbols = Object.getOwnPropertySymbols; -var FieldCombobox2_hasOwnProp = Object.prototype.hasOwnProperty; -var FieldCombobox2_propIsEnum = Object.prototype.propertyIsEnumerable; -var FieldCombobox2_defNormalProp = (obj, key, value) => key in obj ? FieldCombobox2_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var FieldCombobox2_spreadValues = (a, b) => { - for (var prop in b || (b = {})) - if (FieldCombobox2_hasOwnProp.call(b, prop)) - FieldCombobox2_defNormalProp(a, prop, b[prop]); - if (FieldCombobox2_getOwnPropSymbols) - for (var prop of FieldCombobox2_getOwnPropSymbols(b)) { - if (FieldCombobox2_propIsEnum.call(b, prop)) - FieldCombobox2_defNormalProp(a, prop, b[prop]); - } - return a; -}; -var FieldCombobox2_spreadProps = (a, b) => FieldCombobox2_defProps(a, FieldCombobox2_getOwnPropDescs(b)); - - - - -const FieldCombobox2 = (props) => { - const { input, meta, validationmessages } = props; - const getComboboxError = () => { - const { touched, error, warning } = meta; - let message = null; - if (touched && error && validationmessages[error]) { - message = validationmessages[error]; - } else if (touched && warning) { - message = "warning"; - } - return message; - }; - const handleOnChange = (value) => { - const { onChange } = input; - onChange((0,external_immutable_namespaceObject.fromJS)(value)); - }; - return /* @__PURE__ */ external_react_default().createElement( - components_Combobox2, - FieldCombobox2_spreadProps(FieldCombobox2_spreadValues({}, props), { - onChange: handleOnChange, - value: !input.value ? input.value : input.value.toJS(), - error: getComboboxError() - }) - ); -}; -FieldCombobox2.propTypes = { - meta: external_prop_types_default().instanceOf(Object), - input: external_prop_types_default().instanceOf(Object), - validationmessages: external_prop_types_default().instanceOf(Object) -}; -/* harmony default export */ const redux_form_FieldCombobox2 = (FieldCombobox2); - -;// CONCATENATED MODULE: ./src/form/redux-form/FieldDatePicker/index.js -var FieldDatePicker_defProp = Object.defineProperty; -var FieldDatePicker_defProps = Object.defineProperties; -var FieldDatePicker_getOwnPropDescs = Object.getOwnPropertyDescriptors; -var FieldDatePicker_getOwnPropSymbols = Object.getOwnPropertySymbols; -var FieldDatePicker_hasOwnProp = Object.prototype.hasOwnProperty; -var FieldDatePicker_propIsEnum = Object.prototype.propertyIsEnumerable; -var FieldDatePicker_defNormalProp = (obj, key, value) => key in obj ? FieldDatePicker_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var FieldDatePicker_spreadValues = (a, b) => { - for (var prop in b || (b = {})) - if (FieldDatePicker_hasOwnProp.call(b, prop)) - FieldDatePicker_defNormalProp(a, prop, b[prop]); - if (FieldDatePicker_getOwnPropSymbols) - for (var prop of FieldDatePicker_getOwnPropSymbols(b)) { - if (FieldDatePicker_propIsEnum.call(b, prop)) - FieldDatePicker_defNormalProp(a, prop, b[prop]); - } - return a; -}; -var FieldDatePicker_spreadProps = (a, b) => FieldDatePicker_defProps(a, FieldDatePicker_getOwnPropDescs(b)); -var FieldDatePicker_objRest = (source, exclude) => { - var target = {}; - for (var prop in source) - if (FieldDatePicker_hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) - target[prop] = source[prop]; - if (source != null && FieldDatePicker_getOwnPropSymbols) - for (var prop of FieldDatePicker_getOwnPropSymbols(source)) { - if (exclude.indexOf(prop) < 0 && FieldDatePicker_propIsEnum.call(source, prop)) - target[prop] = source[prop]; - } - return target; -}; - - - - -const FormDatePicker = (props) => { - const _a = props, { - input, - meta, - validationmessages - } = _a, rest = FieldDatePicker_objRest(_a, [ - "input", - "meta", - "validationmessages" - ]); - const getDatePickerError = () => { - const { touched, error } = meta; - let message = null; - if (touched && error && validationmessages[error]) { - message = validationmessages[error]; - } - return message; - }; - const handleOnChange = (value) => { - const { onChange } = input; - onChange((0,external_immutable_namespaceObject.fromJS)(value)); - }; - return /* @__PURE__ */ external_react_default().createElement( - components_DatePicker, - FieldDatePicker_spreadProps(FieldDatePicker_spreadValues({}, rest), { - onChange: handleOnChange, - value: !input.value ? input.value : input.value.toJS(), - error: getDatePickerError() - }) - ); -}; -FormDatePicker.propTypes = { - meta: external_prop_types_default().instanceOf(Object), - input: external_prop_types_default().instanceOf(Object), - validationmessages: external_prop_types_default().instanceOf(Object) -}; -/* harmony default export */ const FieldDatePicker = (FormDatePicker); - -;// CONCATENATED MODULE: ./src/form/redux-form/FieldEditableList/index.js -var FieldEditableList_defProp = Object.defineProperty; -var FieldEditableList_defProps = Object.defineProperties; -var FieldEditableList_getOwnPropDescs = Object.getOwnPropertyDescriptors; -var FieldEditableList_getOwnPropSymbols = Object.getOwnPropertySymbols; -var FieldEditableList_hasOwnProp = Object.prototype.hasOwnProperty; -var FieldEditableList_propIsEnum = Object.prototype.propertyIsEnumerable; -var FieldEditableList_defNormalProp = (obj, key, value) => key in obj ? FieldEditableList_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var FieldEditableList_spreadValues = (a, b) => { - for (var prop in b || (b = {})) - if (FieldEditableList_hasOwnProp.call(b, prop)) - FieldEditableList_defNormalProp(a, prop, b[prop]); - if (FieldEditableList_getOwnPropSymbols) - for (var prop of FieldEditableList_getOwnPropSymbols(b)) { - if (FieldEditableList_propIsEnum.call(b, prop)) - FieldEditableList_defNormalProp(a, prop, b[prop]); - } - return a; -}; -var FieldEditableList_spreadProps = (a, b) => FieldEditableList_defProps(a, FieldEditableList_getOwnPropDescs(b)); -var FieldEditableList_objRest = (source, exclude) => { - var target = {}; - for (var prop in source) - if (FieldEditableList_hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) - target[prop] = source[prop]; - if (source != null && FieldEditableList_getOwnPropSymbols) - for (var prop of FieldEditableList_getOwnPropSymbols(source)) { - if (exclude.indexOf(prop) < 0 && FieldEditableList_propIsEnum.call(source, prop)) - target[prop] = source[prop]; - } - return target; -}; -var FieldEditableList_publicField = (obj, key, value) => { - FieldEditableList_defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); - return value; -}; - - - - -class FieldEditableList extends external_react_namespaceObject.Component { - constructor(props) { - super(props); - this.handleOnChange = this.handleOnChange.bind(this); - } - getEditableListError() { - const { meta, validationmessages } = this.props; - const { touched, error } = meta; - let message = null; - if (touched && error && validationmessages[error]) { - message = validationmessages[error]; - } - return message; - } - handleOnChange(value) { - const { input } = this.props; - const { onChange } = input; - onChange((0,external_immutable_namespaceObject.fromJS)(value)); - } - render() { - const props = FieldEditableList_objRest(this.props, []); - return /* @__PURE__ */ external_react_default().createElement( - EditableList, - FieldEditableList_spreadProps(FieldEditableList_spreadValues({}, props), { - onChange: this.handleOnChange, - value: !props.input.value ? null : props.input.value.toJS(), - error: this.getEditableListError() - }) - ); - } -} -FieldEditableList_publicField(FieldEditableList, "propTypes", { - input: external_prop_types_default().instanceOf(Object), - meta: external_prop_types_default().instanceOf(Object), - validationmessages: external_prop_types_default().instanceOf(Object) -}); - -;// CONCATENATED MODULE: ./src/form/redux-form/FieldFileInput/index.js -var FieldFileInput_defProp = Object.defineProperty; -var FieldFileInput_defProps = Object.defineProperties; -var FieldFileInput_getOwnPropDescs = Object.getOwnPropertyDescriptors; -var FieldFileInput_getOwnPropSymbols = Object.getOwnPropertySymbols; -var FieldFileInput_hasOwnProp = Object.prototype.hasOwnProperty; -var FieldFileInput_propIsEnum = Object.prototype.propertyIsEnumerable; -var FieldFileInput_defNormalProp = (obj, key, value) => key in obj ? FieldFileInput_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var FieldFileInput_spreadValues = (a, b) => { - for (var prop in b || (b = {})) - if (FieldFileInput_hasOwnProp.call(b, prop)) - FieldFileInput_defNormalProp(a, prop, b[prop]); - if (FieldFileInput_getOwnPropSymbols) - for (var prop of FieldFileInput_getOwnPropSymbols(b)) { - if (FieldFileInput_propIsEnum.call(b, prop)) - FieldFileInput_defNormalProp(a, prop, b[prop]); - } - return a; -}; -var FieldFileInput_spreadProps = (a, b) => FieldFileInput_defProps(a, FieldFileInput_getOwnPropDescs(b)); -var FieldFileInput_objRest = (source, exclude) => { - var target = {}; - for (var prop in source) - if (FieldFileInput_hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) - target[prop] = source[prop]; - if (source != null && FieldFileInput_getOwnPropSymbols) - for (var prop of FieldFileInput_getOwnPropSymbols(source)) { - if (exclude.indexOf(prop) < 0 && FieldFileInput_propIsEnum.call(source, prop)) - target[prop] = source[prop]; - } - return target; -}; -var FieldFileInput_publicField = (obj, key, value) => { - FieldFileInput_defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); - return value; -}; - - - -class FieldFileInput extends external_react_namespaceObject.Component { - getInputError() { - const { meta, validationmessages } = this.props; - const { touched, error, warning } = meta; - let message = null; - if (touched && error && validationmessages[error]) { - message = validationmessages[error]; - } else if (touched && warning) { - message = "warning"; - } - return message; - } - render() { - const _a = this.props, { input } = _a, rest = FieldFileInput_objRest(_a, ["input"]); - return /* @__PURE__ */ external_react_default().createElement( - FileInput, - FieldFileInput_spreadProps(FieldFileInput_spreadValues(FieldFileInput_spreadValues({}, input), rest), { - error: this.getInputError() - }) - ); - } -} -FieldFileInput_publicField(FieldFileInput, "propTypes", { - input: external_prop_types_default().instanceOf(Object), - meta: external_prop_types_default().instanceOf(Object), - validationmessages: external_prop_types_default().instanceOf(Object) -}); - -;// CONCATENATED MODULE: ./src/form/redux-form/FieldInput/index.js -var FieldInput_defProp = Object.defineProperty; -var FieldInput_defProps = Object.defineProperties; -var FieldInput_getOwnPropDescs = Object.getOwnPropertyDescriptors; -var FieldInput_getOwnPropSymbols = Object.getOwnPropertySymbols; -var FieldInput_hasOwnProp = Object.prototype.hasOwnProperty; -var FieldInput_propIsEnum = Object.prototype.propertyIsEnumerable; -var FieldInput_defNormalProp = (obj, key, value) => key in obj ? FieldInput_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var FieldInput_spreadValues = (a, b) => { - for (var prop in b || (b = {})) - if (FieldInput_hasOwnProp.call(b, prop)) - FieldInput_defNormalProp(a, prop, b[prop]); - if (FieldInput_getOwnPropSymbols) - for (var prop of FieldInput_getOwnPropSymbols(b)) { - if (FieldInput_propIsEnum.call(b, prop)) - FieldInput_defNormalProp(a, prop, b[prop]); - } - return a; -}; -var FieldInput_spreadProps = (a, b) => FieldInput_defProps(a, FieldInput_getOwnPropDescs(b)); -var FieldInput_objRest = (source, exclude) => { - var target = {}; - for (var prop in source) - if (FieldInput_hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) - target[prop] = source[prop]; - if (source != null && FieldInput_getOwnPropSymbols) - for (var prop of FieldInput_getOwnPropSymbols(source)) { - if (exclude.indexOf(prop) < 0 && FieldInput_propIsEnum.call(source, prop)) - target[prop] = source[prop]; - } - return target; -}; -var FieldInput_publicField = (obj, key, value) => { - FieldInput_defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); - return value; -}; - - - -class FieldInput extends external_react_namespaceObject.Component { - getInputError() { - const { meta, validationmessages } = this.props; - const { touched, error, warning } = meta; - let message = null; - if (touched && error && validationmessages[error]) { - message = validationmessages[error]; - } else if (touched && warning) { - message = "warning"; - } - return message; - } - render() { - const _a = this.props, { input } = _a, rest = FieldInput_objRest(_a, ["input"]); - return /* @__PURE__ */ external_react_default().createElement( - Input, - FieldInput_spreadProps(FieldInput_spreadValues(FieldInput_spreadValues({}, input), rest), { - isfield: true, - error: this.getInputError() - }) - ); - } -} -FieldInput_publicField(FieldInput, "propTypes", { - meta: external_prop_types_default().instanceOf(Object), - input: external_prop_types_default().instanceOf(Object), - validationmessages: external_prop_types_default().instanceOf(Object) -}); - -;// CONCATENATED MODULE: ./src/form/redux-form/FieldMultiselect/index.js -var FieldMultiselect_defProp = Object.defineProperty; -var FieldMultiselect_defProps = Object.defineProperties; -var FieldMultiselect_getOwnPropDescs = Object.getOwnPropertyDescriptors; -var FieldMultiselect_getOwnPropSymbols = Object.getOwnPropertySymbols; -var FieldMultiselect_hasOwnProp = Object.prototype.hasOwnProperty; -var FieldMultiselect_propIsEnum = Object.prototype.propertyIsEnumerable; -var FieldMultiselect_defNormalProp = (obj, key, value) => key in obj ? FieldMultiselect_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var FieldMultiselect_spreadValues = (a, b) => { - for (var prop in b || (b = {})) - if (FieldMultiselect_hasOwnProp.call(b, prop)) - FieldMultiselect_defNormalProp(a, prop, b[prop]); - if (FieldMultiselect_getOwnPropSymbols) - for (var prop of FieldMultiselect_getOwnPropSymbols(b)) { - if (FieldMultiselect_propIsEnum.call(b, prop)) - FieldMultiselect_defNormalProp(a, prop, b[prop]); - } - return a; -}; -var FieldMultiselect_spreadProps = (a, b) => FieldMultiselect_defProps(a, FieldMultiselect_getOwnPropDescs(b)); -var FieldMultiselect_objRest = (source, exclude) => { - var target = {}; - for (var prop in source) - if (FieldMultiselect_hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) - target[prop] = source[prop]; - if (source != null && FieldMultiselect_getOwnPropSymbols) - for (var prop of FieldMultiselect_getOwnPropSymbols(source)) { - if (exclude.indexOf(prop) < 0 && FieldMultiselect_propIsEnum.call(source, prop)) - target[prop] = source[prop]; - } - return target; -}; -var FieldMultiselect_publicField = (obj, key, value) => { - FieldMultiselect_defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); - return value; -}; - - - - -class FieldMultiselect extends external_react_namespaceObject.Component { - constructor(props) { - super(props); - this.handleOnChange = this.handleOnChange.bind(this); - } - getMultiselectError() { - const { meta, validationmessages } = this.props; - const { touched, error, warning } = meta; - let message = null; - if (touched && error && validationmessages[error]) { - message = validationmessages[error]; - } else if (touched && warning) { - message = "warning"; - } - return message; - } - handleOnChange(value) { - const { input } = this.props; - const { onChange } = input; - onChange((0,external_immutable_namespaceObject.fromJS)(value)); - } - render() { - const props = FieldMultiselect_objRest(this.props, []); - return /* @__PURE__ */ external_react_default().createElement( - components_Multiselect, - FieldMultiselect_spreadProps(FieldMultiselect_spreadValues({}, props), { - onChange: this.handleOnChange, - value: !props.input.value ? props.input.value : props.input.value.toJS(), - error: this.getMultiselectError() - }) - ); - } -} -FieldMultiselect_publicField(FieldMultiselect, "propTypes", { - input: external_prop_types_default().instanceOf(Object), - meta: external_prop_types_default().instanceOf(Object), - validationmessages: external_prop_types_default().instanceOf(Object) -}); - -;// CONCATENATED MODULE: ./src/form/redux-form/FieldSelect/index.js -var FieldSelect_defProp = Object.defineProperty; -var FieldSelect_defProps = Object.defineProperties; -var FieldSelect_getOwnPropDescs = Object.getOwnPropertyDescriptors; -var FieldSelect_getOwnPropSymbols = Object.getOwnPropertySymbols; -var FieldSelect_hasOwnProp = Object.prototype.hasOwnProperty; -var FieldSelect_propIsEnum = Object.prototype.propertyIsEnumerable; -var FieldSelect_defNormalProp = (obj, key, value) => key in obj ? FieldSelect_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var FieldSelect_spreadValues = (a, b) => { - for (var prop in b || (b = {})) - if (FieldSelect_hasOwnProp.call(b, prop)) - FieldSelect_defNormalProp(a, prop, b[prop]); - if (FieldSelect_getOwnPropSymbols) - for (var prop of FieldSelect_getOwnPropSymbols(b)) { - if (FieldSelect_propIsEnum.call(b, prop)) - FieldSelect_defNormalProp(a, prop, b[prop]); - } - return a; -}; -var FieldSelect_spreadProps = (a, b) => FieldSelect_defProps(a, FieldSelect_getOwnPropDescs(b)); -var FieldSelect_objRest = (source, exclude) => { - var target = {}; - for (var prop in source) - if (FieldSelect_hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) - target[prop] = source[prop]; - if (source != null && FieldSelect_getOwnPropSymbols) - for (var prop of FieldSelect_getOwnPropSymbols(source)) { - if (exclude.indexOf(prop) < 0 && FieldSelect_propIsEnum.call(source, prop)) - target[prop] = source[prop]; - } - return target; -}; -var FieldSelect_publicField = (obj, key, value) => { - FieldSelect_defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); - return value; -}; - - - - -class FieldSelect extends external_react_namespaceObject.Component { - constructor(props) { - super(props); - this.handleEvent = this.handleEvent.bind(this); - } - getSelectError() { - const { meta, validationmessages } = this.props; - const { touched, error, warning } = meta; - let message = null; - if (touched && error && validationmessages[error]) { - message = validationmessages[error]; - } else if (touched && warning) { - message = "warning"; - } - return message; - } - handleEvent(selectValue) { - const { input } = this.props; - const { onChange, value } = input; - onChange((0,external_immutable_namespaceObject.fromJS)(selectValue !== void 0 ? selectValue : value)); - } - render() { - const _a = this.props, { input } = _a, rest = FieldSelect_objRest(_a, ["input"]); - return /* @__PURE__ */ external_react_default().createElement( - Select, - FieldSelect_spreadProps(FieldSelect_spreadValues(FieldSelect_spreadValues({}, input), rest), { - isfield: true, - error: this.getSelectError(), - onChange: this.handleEvent, - onBlur: this.handleEvent, - value: !input.value ? input.value : input.value.toJS() - }) - ); - } -} -FieldSelect_publicField(FieldSelect, "propTypes", { - input: external_prop_types_default().instanceOf(Object), - meta: external_prop_types_default().instanceOf(Object), - validationmessages: external_prop_types_default().instanceOf(Object) -}); - -;// CONCATENATED MODULE: ./src/form/redux-form/FieldSelectableList/index.js -var FieldSelectableList_defProp = Object.defineProperty; -var FieldSelectableList_defProps = Object.defineProperties; -var FieldSelectableList_getOwnPropDescs = Object.getOwnPropertyDescriptors; -var FieldSelectableList_getOwnPropSymbols = Object.getOwnPropertySymbols; -var FieldSelectableList_hasOwnProp = Object.prototype.hasOwnProperty; -var FieldSelectableList_propIsEnum = Object.prototype.propertyIsEnumerable; -var FieldSelectableList_defNormalProp = (obj, key, value) => key in obj ? FieldSelectableList_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var FieldSelectableList_spreadValues = (a, b) => { - for (var prop in b || (b = {})) - if (FieldSelectableList_hasOwnProp.call(b, prop)) - FieldSelectableList_defNormalProp(a, prop, b[prop]); - if (FieldSelectableList_getOwnPropSymbols) - for (var prop of FieldSelectableList_getOwnPropSymbols(b)) { - if (FieldSelectableList_propIsEnum.call(b, prop)) - FieldSelectableList_defNormalProp(a, prop, b[prop]); - } - return a; -}; -var FieldSelectableList_spreadProps = (a, b) => FieldSelectableList_defProps(a, FieldSelectableList_getOwnPropDescs(b)); -var FieldSelectableList_objRest = (source, exclude) => { - var target = {}; - for (var prop in source) - if (FieldSelectableList_hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) - target[prop] = source[prop]; - if (source != null && FieldSelectableList_getOwnPropSymbols) - for (var prop of FieldSelectableList_getOwnPropSymbols(source)) { - if (exclude.indexOf(prop) < 0 && FieldSelectableList_propIsEnum.call(source, prop)) - target[prop] = source[prop]; - } - return target; -}; -var FieldSelectableList_publicField = (obj, key, value) => { - FieldSelectableList_defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); - return value; -}; - - - - -class FieldSelectableList extends external_react_namespaceObject.Component { - constructor(props) { - super(props); - this.handleOnChange = this.handleOnChange.bind(this); - } - handleOnChange(value) { - const { input } = this.props; - input.onChange((0,external_immutable_namespaceObject.fromJS)(value)); - } - render() { - const _a = this.props, { children } = _a, props = FieldSelectableList_objRest(_a, ["children"]); - return /* @__PURE__ */ external_react_default().createElement( - components_SelectableList, - FieldSelectableList_spreadProps(FieldSelectableList_spreadValues({}, props), { - onChange: this.handleOnChange, - value: props.input.value ? props.input.value.toJS() : [] - }) - ); - } -} -FieldSelectableList_publicField(FieldSelectableList, "propTypes", { - children: external_prop_types_default().oneOfType([ - (external_prop_types_default()).node - ]), - onChange: (external_prop_types_default()).func, - input: external_prop_types_default().instanceOf(Object) -}); - -;// CONCATENATED MODULE: ./src/form/redux-form/FieldToggle/index.js -var FieldToggle_defProp = Object.defineProperty; -var FieldToggle_defProps = Object.defineProperties; -var FieldToggle_getOwnPropDescs = Object.getOwnPropertyDescriptors; -var FieldToggle_getOwnPropSymbols = Object.getOwnPropertySymbols; -var FieldToggle_hasOwnProp = Object.prototype.hasOwnProperty; -var FieldToggle_propIsEnum = Object.prototype.propertyIsEnumerable; -var FieldToggle_defNormalProp = (obj, key, value) => key in obj ? FieldToggle_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var FieldToggle_spreadValues = (a, b) => { - for (var prop in b || (b = {})) - if (FieldToggle_hasOwnProp.call(b, prop)) - FieldToggle_defNormalProp(a, prop, b[prop]); - if (FieldToggle_getOwnPropSymbols) - for (var prop of FieldToggle_getOwnPropSymbols(b)) { - if (FieldToggle_propIsEnum.call(b, prop)) - FieldToggle_defNormalProp(a, prop, b[prop]); - } - return a; -}; -var FieldToggle_spreadProps = (a, b) => FieldToggle_defProps(a, FieldToggle_getOwnPropDescs(b)); -var FieldToggle_objRest = (source, exclude) => { - var target = {}; - for (var prop in source) - if (FieldToggle_hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) - target[prop] = source[prop]; - if (source != null && FieldToggle_getOwnPropSymbols) - for (var prop of FieldToggle_getOwnPropSymbols(source)) { - if (exclude.indexOf(prop) < 0 && FieldToggle_propIsEnum.call(source, prop)) - target[prop] = source[prop]; - } - return target; -}; -var FieldToggle_publicField = (obj, key, value) => { - FieldToggle_defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); - return value; -}; - - - - -class FieldToggle extends external_react_namespaceObject.Component { - constructor(props) { - super(props); - this.handleOnChange = this.handleOnChange.bind(this); - } - handleOnChange(value) { - const { input } = this.props; - input.onChange((0,external_immutable_namespaceObject.fromJS)(value)); - } - render() { - const _a = this.props, { children } = _a, props = FieldToggle_objRest(_a, ["children"]); - return /* @__PURE__ */ external_react_default().createElement( - components_Toggle, - FieldToggle_spreadProps(FieldToggle_spreadValues({}, props), { - onChange: this.handleOnChange, - value: props.input.value - }), - children - ); - } -} -FieldToggle_publicField(FieldToggle, "propTypes", { - children: external_prop_types_default().oneOfType([ - (external_prop_types_default()).node - ]), - onChange: (external_prop_types_default()).func, - input: external_prop_types_default().instanceOf(Object) -}); - -;// CONCATENATED MODULE: ./src/index.js - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -})(); - -module.exports = __webpack_exports__; -/******/ })() -; +/*! For license information please see tyk-ui.js.LICENSE.txt */ +(()=>{var e={239:(e,t,n)=>{e=n.nmd(e),function(){var e=function(){return this}();e||"undefined"==typeof window||(e=window);var t=function(e,n,i){"string"==typeof e?(2==arguments.length&&(i=n),t.modules[e]||(t.payloads[e]=i,t.modules[e]=null)):t.original?t.original.apply(this,arguments):(console.error("dropping module because define wasn't a string."),console.trace())};t.modules={},t.payloads={};var n,i,o=function(e,t,n){if("string"==typeof t){var i=a(e,t);if(null!=i)return n&&n(),i}else if("[object Array]"===Object.prototype.toString.call(t)){for(var o=[],s=0,l=t.length;sn.length)&&(t=n.length),t-=e.length;var i=n.indexOf(e,t);return-1!==i&&i===t})),String.prototype.repeat||i(String.prototype,"repeat",(function(e){for(var t="",n=this;e>0;)1&e&&(t+=n),(e>>=1)&&(n+=n);return t})),String.prototype.includes||i(String.prototype,"includes",(function(e,t){return-1!=this.indexOf(e,t)})),Object.assign||(Object.assign=function(e){if(null==e)throw new TypeError("Cannot convert undefined or null to object");for(var t=Object(e),n=1;n>>0,i=arguments[1]>>0,o=i<0?Math.max(n+i,0):Math.min(i,n),r=arguments[2],s=void 0===r?n:r>>0,a=s<0?Math.max(n+s,0):Math.min(s,n);o0;)1&t&&(n+=e),(t>>=1)&&(e+=e);return n};var i=/^\s\s*/,o=/\s\s*$/;t.stringTrimLeft=function(e){return e.replace(i,"")},t.stringTrimRight=function(e){return e.replace(o,"")},t.copyObject=function(e){var t={};for(var n in e)t[n]=e[n];return t},t.copyArray=function(e){for(var t=[],n=0,i=e.length;n65535?2:1}})),ace.define("ace/lib/useragent",["require","exports","module"],(function(e,t,n){"use strict";t.OS={LINUX:"LINUX",MAC:"MAC",WINDOWS:"WINDOWS"},t.getOS=function(){return t.isMac?t.OS.MAC:t.isLinux?t.OS.LINUX:t.OS.WINDOWS};var i="object"==typeof navigator?navigator:{},o=(/mac|win|linux/i.exec(i.platform)||["other"])[0].toLowerCase(),r=i.userAgent||"",s=i.appName||"";t.isWin="win"==o,t.isMac="mac"==o,t.isLinux="linux"==o,t.isIE="Microsoft Internet Explorer"==s||s.indexOf("MSAppHost")>=0?parseFloat((r.match(/(?:MSIE |Trident\/[0-9]+[\.0-9]+;.*rv:)([0-9]+[\.0-9]+)/)||[])[1]):parseFloat((r.match(/(?:Trident\/[0-9]+[\.0-9]+;.*rv:)([0-9]+[\.0-9]+)/)||[])[1]),t.isOldIE=t.isIE&&t.isIE<9,t.isGecko=t.isMozilla=r.match(/ Gecko\/\d+/),t.isOpera="object"==typeof opera&&"[object Opera]"==Object.prototype.toString.call(window.opera),t.isWebKit=parseFloat(r.split("WebKit/")[1])||void 0,t.isChrome=parseFloat(r.split(" Chrome/")[1])||void 0,t.isSafari=parseFloat(r.split(" Safari/")[1])&&!t.isChrome||void 0,t.isEdge=parseFloat(r.split(" Edge/")[1])||void 0,t.isAIR=r.indexOf("AdobeAIR")>=0,t.isAndroid=r.indexOf("Android")>=0,t.isChromeOS=r.indexOf(" CrOS ")>=0,t.isIOS=/iPad|iPhone|iPod/.test(r)&&!window.MSStream,t.isIOS&&(t.isMac=!0),t.isMobile=t.isIOS||t.isAndroid})),ace.define("ace/lib/dom",["require","exports","module","ace/lib/useragent"],(function(e,t,n){"use strict";var i,o=e("./useragent");t.buildDom=function e(t,n,i){if("string"==typeof t&&t){var o=document.createTextNode(t);return n&&n.appendChild(o),o}if(!Array.isArray(t))return t&&t.appendChild&&n&&n.appendChild(t),t;if("string"!=typeof t[0]||!t[0]){for(var r=[],s=0;s=1.5,o.isChromeOS&&(t.HI_DPI=!1),"undefined"!=typeof document){var l=document.createElement("div");t.HI_DPI&&void 0!==l.style.transform&&(t.HAS_CSS_TRANSFORMS=!0),o.isEdge||void 0===l.style.animationName||(t.HAS_CSS_ANIMATION=!0),l=null}t.HAS_CSS_TRANSFORMS?t.translate=function(e,t,n){e.style.transform="translate("+Math.round(t)+"px, "+Math.round(n)+"px)"}:t.translate=function(e,t,n){e.style.top=Math.round(n)+"px",e.style.left=Math.round(t)+"px"}})),ace.define("ace/lib/net",["require","exports","module","ace/lib/dom"],(function(e,t,n){"use strict";var i=e("./dom");t.get=function(e,t){var n=new XMLHttpRequest;n.open("GET",e,!0),n.onreadystatechange=function(){4===n.readyState&&t(n.responseText)},n.send(null)},t.loadScript=function(e,t){var n=i.getDocumentHead(),o=document.createElement("script");o.src=e,n.appendChild(o),o.onload=o.onreadystatechange=function(e,n){!n&&o.readyState&&"loaded"!=o.readyState&&"complete"!=o.readyState||(o=o.onload=o.onreadystatechange=null,n||t())}},t.qualifyURL=function(e){var t=document.createElement("a");return t.href=e,t.href}})),ace.define("ace/lib/oop",["require","exports","module"],(function(e,t,n){"use strict";t.inherits=function(e,t){e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})},t.mixin=function(e,t){for(var n in t)e[n]=t[n];return e},t.implement=function(e,n){t.mixin(e,n)}})),ace.define("ace/lib/event_emitter",["require","exports","module"],(function(e,t,n){"use strict";var i={},o=function(){this.propagationStopped=!0},r=function(){this.defaultPrevented=!0};i._emit=i._dispatchEvent=function(e,t){this._eventRegistry||(this._eventRegistry={}),this._defaultHandlers||(this._defaultHandlers={});var n=this._eventRegistry[e]||[],i=this._defaultHandlers[e];if(n.length||i){"object"==typeof t&&t||(t={}),t.type||(t.type=e),t.stopPropagation||(t.stopPropagation=o),t.preventDefault||(t.preventDefault=r),n=n.slice();for(var s=0;s1&&(o=n[n.length-2]);var s=l[t+"Path"];return null==s?s=l.basePath:"/"==i&&(t=i=""),s&&"/"!=s.slice(-1)&&(s+="/"),s+t+i+o+this.get("suffix")},t.setModuleUrl=function(e,t){return l.$moduleUrls[e]=t},t.setLoader=function(e){a=e},t.dynamicModules=Object.create(null),t.$loading={},t.$loaded={},t.loadModule=function(n,i){var r,s;Array.isArray(n)&&(s=n[0],n=n[1]);var l=function(r){if(r&&!t.$loading[n])return i&&i(r);if(t.$loading[n]||(t.$loading[n]=[]),t.$loading[n].push(i),!(t.$loading[n].length>1)){var l=function(){!function(t,n){"ace/theme/textmate"===t||"./theme/textmate"===t?n(0,e("./theme/textmate")):a?a(t,n):console.error("loader is not configured")}(n,(function(e,i){i&&(t.$loaded[n]=i),t._emit("load.module",{name:n,module:i});var o=t.$loading[n];t.$loading[n]=null,o.forEach((function(e){e&&e(i)}))}))};if(!t.get("packaged"))return l();o.loadScript(t.moduleUrl(n,s),l),c()}};if(t.dynamicModules[n])t.dynamicModules[n]().then((function(e){e.default?l(e.default):l(e)}));else{try{r=this.$require(n)}catch(e){}l(r||t.$loaded[n])}},t.$require=function(e){if("function"==typeof n.require)return n.require(e)},t.setModuleLoader=function(e,n){t.dynamicModules[e]=n};var c=function(){l.basePath||l.workerPath||l.modePath||l.themePath||Object.keys(l.$moduleUrls).length||(console.error("Unable to infer path to ace from script src,","use ace.config.set('basePath', 'path') to enable dynamic loading of modes and themes","or with webpack use ace/webpack-resolver"),c=function(){})};t.version="1.32.0"})),ace.define("ace/loader_build",["require","exports","module","ace/lib/fixoldbrowsers","ace/config"],(function(e,t,i){"use strict";e("./lib/fixoldbrowsers");var o=e("./config");o.setLoader((function(t,n){e([t],(function(e){n(null,e)}))}));var r=function(){return this||"undefined"!=typeof window&&window}();function s(t){if(r&&r.document){o.set("packaged",t||e.packaged||i.packaged||r.define&&n.amdD.packaged);var s={},a="",l=document.currentScript||document._currentScript,c=l&&l.ownerDocument||document;l&&l.src&&(a=l.src.split(/[?#]/)[0].split("/").slice(0,-1).join("/")||"");for(var u,h=c.getElementsByTagName("script"),d=0;d ["+this.end.row+"/"+this.end.column+"]"},e.prototype.contains=function(e,t){return 0==this.compare(e,t)},e.prototype.compareRange=function(e){var t,n=e.end,i=e.start;return 1==(t=this.compare(n.row,n.column))?1==(t=this.compare(i.row,i.column))?2:0==t?1:0:-1==t?-2:-1==(t=this.compare(i.row,i.column))?-1:1==t?42:0},e.prototype.comparePoint=function(e){return this.compare(e.row,e.column)},e.prototype.containsRange=function(e){return 0==this.comparePoint(e.start)&&0==this.comparePoint(e.end)},e.prototype.intersects=function(e){var t=this.compareRange(e);return-1==t||0==t||1==t},e.prototype.isEnd=function(e,t){return this.end.row==e&&this.end.column==t},e.prototype.isStart=function(e,t){return this.start.row==e&&this.start.column==t},e.prototype.setStart=function(e,t){"object"==typeof e?(this.start.column=e.column,this.start.row=e.row):(this.start.row=e,this.start.column=t)},e.prototype.setEnd=function(e,t){"object"==typeof e?(this.end.column=e.column,this.end.row=e.row):(this.end.row=e,this.end.column=t)},e.prototype.inside=function(e,t){return 0==this.compare(e,t)&&!this.isEnd(e,t)&&!this.isStart(e,t)},e.prototype.insideStart=function(e,t){return 0==this.compare(e,t)&&!this.isEnd(e,t)},e.prototype.insideEnd=function(e,t){return 0==this.compare(e,t)&&!this.isStart(e,t)},e.prototype.compare=function(e,t){return this.isMultiLine()||e!==this.start.row?ethis.end.row?1:this.start.row===e?t>=this.start.column?0:-1:this.end.row===e?t<=this.end.column?0:1:0:tthis.end.column?1:0},e.prototype.compareStart=function(e,t){return this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},e.prototype.compareEnd=function(e,t){return this.end.row==e&&this.end.column==t?1:this.compare(e,t)},e.prototype.compareInside=function(e,t){return this.end.row==e&&this.end.column==t?1:this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},e.prototype.clipRows=function(t,n){if(this.end.row>n)var i={row:n+1,column:0};else this.end.rown)var o={row:n+1,column:0};else this.start.row1?++h>4&&(h=1):h=1,r.isIE){var s=Math.abs(e.clientX-a)>5||Math.abs(e.clientY-l)>5;c&&!s||(h=1),c&&clearTimeout(c),c=setTimeout((function(){c=null}),n[h-1]||600),1==h&&(a=e.clientX,l=e.clientY)}if(e._clicks=h,i[o]("mousedown",e),h>4)h=0;else if(h>1)return i[o](d[h],e)}Array.isArray(e)||(e=[e]),e.forEach((function(e){u(e,"mousedown",p,s)}))};var d=function(e){return 0|(e.ctrlKey?1:0)|(e.altKey?2:0)|(e.shiftKey?4:0)|(e.metaKey?8:0)};function p(e,t,n){var i=d(t);if(!r.isMac&&s){if(t.getModifierState&&(t.getModifierState("OS")||t.getModifierState("Win"))&&(i|=8),s.altGr){if(3==(3&i))return;s.altGr=0}if(18===n||17===n){var l="location"in t?t.location:t.keyLocation;17===n&&1===l?1==s[n]&&(a=t.timeStamp):18===n&&3===i&&2===l&&t.timeStamp-a<50&&(s.altGr=!0)}}if(n in o.MODIFIER_KEYS&&(n=-1),i||13!==n||3!==(l="location"in t?t.location:t.keyLocation)||(e(t,i,-n),!t.defaultPrevented)){if(r.isChromeOS&&8&i){if(e(t,i,n),t.defaultPrevented)return;i&=-9}return!!(i||n in o.FUNCTION_KEYS||n in o.PRINTABLE_KEYS)&&e(t,i,n)}}function g(){s=Object.create(null)}if(t.getModifierString=function(e){return o.KEY_MODS[d(e)]},t.addCommandKeyListener=function(e,n,i){if(r.isOldGecko||r.isOpera&&!("KeyboardEvent"in window)){var o=null;u(e,"keydown",(function(e){o=e.keyCode}),i),u(e,"keypress",(function(e){return p(n,e,o)}),i)}else{var a=null;u(e,"keydown",(function(e){s[e.keyCode]=(s[e.keyCode]||0)+1;var t=p(n,e,e.keyCode);return a=e.defaultPrevented,t}),i),u(e,"keypress",(function(e){a&&(e.ctrlKey||e.altKey||e.shiftKey||e.metaKey)&&(t.stopEvent(e),a=null)}),i),u(e,"keyup",(function(e){s[e.keyCode]=null}),i),s||(g(),u(window,"focus",g))}},"object"==typeof window&&window.postMessage&&!r.isOldIE){var m=1;t.nextTick=function(e,n){n=n||window;var i="zero-timeout-message-"+m++,o=function(r){r.data==i&&(t.stopPropagation(r),h(n,"message",o),e())};u(n,"message",o),n.postMessage(i,"*")}}t.$idleBlocked=!1,t.onIdle=function(e,n){return setTimeout((function n(){t.$idleBlocked?setTimeout(n,100):e()}),n)},t.$idleBlockId=null,t.blockIdle=function(e){t.$idleBlockId&&clearTimeout(t.$idleBlockId),t.$idleBlocked=!0,t.$idleBlockId=setTimeout((function(){t.$idleBlocked=!1}),e||100)},t.nextFrame="object"==typeof window&&(window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame||window.oRequestAnimationFrame),t.nextFrame?t.nextFrame=t.nextFrame.bind(window):t.nextFrame=function(e){setTimeout(e,17)}})),ace.define("ace/clipboard",["require","exports","module"],(function(e,t,n){"use strict";var i;n.exports={lineMode:!1,pasteCancelled:function(){return!!(i&&i>Date.now()-50)||(i=!1)},cancel:function(){i=Date.now()}}})),ace.define("ace/keyboard/textinput",["require","exports","module","ace/lib/event","ace/config","ace/lib/useragent","ace/lib/dom","ace/lib/lang","ace/clipboard","ace/lib/keys"],(function(e,t,n){"use strict";var i=e("../lib/event"),o=e("../config").nls,r=e("../lib/useragent"),s=e("../lib/dom"),a=e("../lib/lang"),l=e("../clipboard"),c=r.isChrome<18,u=r.isIE,h=r.isChrome>63,d=400,p=e("../lib/keys"),g=p.KEY_MODS,m=r.isIOS,f=m?/\s/:/\n/,y=r.isMobile;t.TextInput=function(e,t){var n=s.createElement("textarea");n.className="ace_text-input",n.setAttribute("wrap","off"),n.setAttribute("autocorrect","off"),n.setAttribute("autocapitalize","off"),n.setAttribute("spellcheck",!1),n.style.opacity="0",e.insertBefore(n,e.firstChild);var b=!1,v=!1,w=!1,A=!1,C="";y||(n.style.fontSize="1px");var k=!1,x=!1,S="",$=0,E=0,O=0,T=Number.MAX_SAFE_INTEGER,_=Number.MIN_SAFE_INTEGER,R=0;try{var M=document.activeElement===n}catch(e){}this.setNumberOfExtraLines=function(e){T=Number.MAX_SAFE_INTEGER,_=Number.MIN_SAFE_INTEGER,R=e<0?0:e},this.setAriaOptions=function(e){if(e.activeDescendant?(n.setAttribute("aria-haspopup","true"),n.setAttribute("aria-autocomplete",e.inline?"both":"list"),n.setAttribute("aria-activedescendant",e.activeDescendant)):(n.setAttribute("aria-haspopup","false"),n.setAttribute("aria-autocomplete","both"),n.removeAttribute("aria-activedescendant")),e.role&&n.setAttribute("role",e.role),e.setLabel&&(n.setAttribute("aria-roledescription",o("editor")),t.session)){var i=t.session.selection.cursor.row;n.setAttribute("aria-label",o("Cursor at row $0",[i+1]))}},this.setAriaOptions({role:"textbox"}),i.addListener(n,"blur",(function(e){x||(t.onBlur(e),M=!1)}),t),i.addListener(n,"focus",(function(e){if(!x){if(M=!0,r.isEdge)try{if(!document.hasFocus())return}catch(e){}t.onFocus(e),r.isEdge?setTimeout(B):B()}}),t),this.$focusScroll=!1,this.focus=function(){if(this.setAriaOptions({setLabel:t.renderer.enableKeyboardAccessibility}),C||h||"browser"==this.$focusScroll)return n.focus({preventScroll:!0});var e=n.style.top;n.style.position="fixed",n.style.top="0px";try{var i=0!=n.getBoundingClientRect().top}catch(e){return}var o=[];if(i)for(var r=n.parentElement;r&&1==r.nodeType;)o.push(r),r.setAttribute("ace_nocontext",!0),r=!r.parentElement&&r.getRootNode?r.getRootNode().host:r.parentElement;n.focus({preventScroll:!0}),i&&o.forEach((function(e){e.removeAttribute("ace_nocontext")})),setTimeout((function(){n.style.position="","0px"==n.style.top&&(n.style.top=e)}),0)},this.blur=function(){n.blur()},this.isFocused=function(){return M},t.on("beforeEndOperation",(function(){var e=t.curOp,i=e&&e.command&&e.command.name;if("insertstring"!=i){var o=i&&(e.docChanged||e.selectionChanged);w&&o&&(S=n.value="",V()),B()}}));var L=function(e,n){for(var i=n,o=1;o<=e-T&&o<2*R+1;o++)i+=t.session.getLine(e-o).length+1;return i},B=m?function(e){if(M&&(!b||e)&&!A){e||(e="");var i="\n ab"+e+"cde fg\n";i!=n.value&&(n.value=S=i);var o=4+(e.length||(t.selection.isEmpty()?0:1));4==$&&E==o||n.setSelectionRange(4,o),$=4,E=o}}:function(){if(!w&&!A&&(M||I)){w=!0;var e=0,i=0,o="";if(t.session){var r=t.selection,s=r.getRange(),a=r.cursor.row;a===_+1?_=(T=_+1)+2*R:a===T-1?T=(_=T-1)-2*R:(a_+1)&&(T=a>R?a-R:0,_=a>R?a+R:2*R);for(var l=[],c=T;c<=_;c++)l.push(t.session.getLine(c));if(o=l.join("\n"),e=L(s.start.row,s.start.column),i=L(s.end.row,s.end.column),s.start.row_){var h=t.session.getLine(_+1);i=s.end.row>_+1?h.length:s.end.column,i+=o.length+1,o=o+"\n"+h}else y&&a>0&&(o="\n"+o,i+=1,e+=1);o.length>d&&(e0&&S[d]==e[d];)d++,a--;for(c=c.slice(d),d=1;l>0&&S.length-d>$-1&&S[S.length-d]==e[e.length-d];)d++,l--;u-=d-1,h-=d-1;var p=c.length-d+1;if(p<0&&(a=-p,p=0),c=c.slice(0,p),!(i||c||u||a||l||h))return"";A=!0;var g=!1;return r.isAndroid&&". "==c&&(c=" ",g=!0),c&&!a&&!l&&!u&&!h||k?t.onTextInput(c):t.onTextInput(c,{extendLeft:a,extendRight:l,restoreStart:u,restoreEnd:h}),A=!1,S=e,$=o,E=s,O=h,g?"\n":c},D=function(e){if(w)return U();if(e&&e.inputType){if("historyUndo"==e.inputType)return t.execCommand("undo");if("historyRedo"==e.inputType)return t.execCommand("redo")}var i=n.value,o=P(i,!0);(i.length>500||f.test(o)||y&&$<1&&$==E)&&B()},F=function(e,t,n){var i=e.clipboardData||window.clipboardData;if(i&&!c){var o=u||n?"Text":"text/plain";try{return t?!1!==i.setData(o,t):i.getData(o)}catch(e){if(!n)return F(e,t,!0)}}},W=function(e,o){var r=t.getCopyText();if(!r)return i.preventDefault(e);F(e,r)?(m&&(B(r),b=r,setTimeout((function(){b=!1}),10)),o?t.onCut():t.onCopy(),i.preventDefault(e)):(b=!0,n.value=r,n.select(),setTimeout((function(){b=!1,B(),o?t.onCut():t.onCopy()})))},H=function(e){W(e,!0)},j=function(e){W(e,!1)},z=function(e){var o=F(e);l.pasteCancelled()||("string"==typeof o?(o&&t.onPaste(o,e),r.isIE&&setTimeout(B),i.preventDefault(e)):(n.value="",v=!0))};i.addCommandKeyListener(n,t.onCommandKey.bind(t),t),i.addListener(n,"select",(function(e){w||(b?b=!1:function(e){return 0===e.selectionStart&&e.selectionEnd>=S.length&&e.value===S&&S&&e.selectionEnd!==E}(n)?(t.selectAll(),B()):y&&n.selectionStart!=$&&B())}),t),i.addListener(n,"input",D,t),i.addListener(n,"cut",H,t),i.addListener(n,"copy",j,t),i.addListener(n,"paste",z,t),"oncut"in n&&"oncopy"in n&&"onpaste"in n||i.addListener(e,"keydown",(function(e){if((!r.isMac||e.metaKey)&&e.ctrlKey)switch(e.keyCode){case 67:j(e);break;case 86:z(e);break;case 88:H(e)}}),t);var U=function(){if(w&&t.onCompositionUpdate&&!t.$readOnly){if(k)return G();if(w.useTextareaForIME)t.onCompositionUpdate(n.value);else{var e=n.value;P(e),w.markerRange&&(w.context&&(w.markerRange.start.column=w.selectionStart=w.context.compositionStartOffset),w.markerRange.end.column=w.markerRange.start.column+E-w.selectionStart+O)}}},V=function(e){t.onCompositionEnd&&!t.$readOnly&&(w=!1,t.onCompositionEnd(),t.off("mousedown",G),e&&D())};function G(){x=!0,n.blur(),n.focus(),x=!1}var K,q=a.delayedCall(U,50).schedule.bind(null,null);function Y(){clearTimeout(K),K=setTimeout((function(){C&&(n.style.cssText=C,C=""),t.renderer.$isMousePressed=!1,t.renderer.$keepTextAreaAtCursor&&t.renderer.$moveTextAreaToCursor()}),0)}i.addListener(n,"compositionstart",(function(e){if(!w&&t.onCompositionStart&&!t.$readOnly&&(w={},!k)){e.data&&(w.useTextareaForIME=!1),setTimeout(U,0),t._signal("compositionStart"),t.on("mousedown",G);var i=t.getSelectionRange();i.end.row=i.start.row,i.end.column=i.start.column,w.markerRange=i,w.selectionStart=$,t.onCompositionStart(w),w.useTextareaForIME?(S=n.value="",$=0,E=0):(n.msGetInputContext&&(w.context=n.msGetInputContext()),n.getInputContext&&(w.context=n.getInputContext()))}}),t),i.addListener(n,"compositionupdate",U,t),i.addListener(n,"keyup",(function(e){27==e.keyCode&&n.value.lengthE&&"\n"==S[r]?s=p.end:i<$&&" "==S[i-1]?(s=p.left,a=g.option):i<$||i==$&&E!=$&&i==r?s=p.left:r>E&&S.slice(0,r).split("\n").length>2?s=p.down:r>E&&" "==S[r-1]?(s=p.right,a=g.option):(r>E||r==E&&E!=$&&i==r)&&(s=p.right),i!==r&&(a|=g.shift),s){if(!t.onCommandKey({},a,s)&&t.commands){s=p.keyCodeToString(s);var l=t.commands.findKeyCommand(a,s);l&&t.execCommand(l)}$=i,E=r,B("")}}};document.addEventListener("selectionchange",r),t.on("destroy",(function(){document.removeEventListener("selectionchange",r)}))}(0,t,n),this.destroy=function(){n.parentElement&&n.parentElement.removeChild(n)}},t.$setUserAgentForTests=function(e,t){y=e,m=t}})),ace.define("ace/mouse/default_handlers",["require","exports","module","ace/lib/useragent"],(function(e,t,n){"use strict";var i=e("../lib/useragent"),o=function(){function e(e){e.$clickSelection=null;var t=e.editor;t.setDefaultHandler("mousedown",this.onMouseDown.bind(e)),t.setDefaultHandler("dblclick",this.onDoubleClick.bind(e)),t.setDefaultHandler("tripleclick",this.onTripleClick.bind(e)),t.setDefaultHandler("quadclick",this.onQuadClick.bind(e)),t.setDefaultHandler("mousewheel",this.onMouseWheel.bind(e)),["select","startSelect","selectEnd","selectAllEnd","selectByWordsEnd","selectByLinesEnd","dragWait","dragWaitEnd","focusWait"].forEach((function(t){e[t]=this[t]}),this),e.selectByLines=this.extendSelectionBy.bind(e,"getLineRange"),e.selectByWords=this.extendSelectionBy.bind(e,"getWordRange")}return e.prototype.onMouseDown=function(e){var t=e.inSelection(),n=e.getDocumentPosition();this.mousedownEvent=e;var o=this.editor,r=e.getButton();return 0!==r?((o.getSelectionRange().isEmpty()||1==r)&&o.selection.moveToPosition(n),void(2==r&&(o.textInput.onContextMenu(e.domEvent),i.isMozilla||e.preventDefault()))):(this.mousedownEvent.time=Date.now(),!t||o.isFocused()||(o.focus(),!this.$focusTimeout||this.$clickSelection||o.inMultiSelectMode)?(this.captureMouse(e),this.startSelect(n,e.domEvent._clicks>1),e.preventDefault()):(this.setState("focusWait"),void this.captureMouse(e)))},e.prototype.startSelect=function(e,t){e=e||this.editor.renderer.screenToTextCoordinates(this.x,this.y);var n=this.editor;this.mousedownEvent&&(this.mousedownEvent.getShiftKey()?n.selection.selectToPosition(e):t||n.selection.moveToPosition(e),t||this.select(),n.setStyle("ace_selecting"),this.setState("select"))},e.prototype.select=function(){var e,t=this.editor,n=t.renderer.screenToTextCoordinates(this.x,this.y);if(this.$clickSelection){var i=this.$clickSelection.comparePoint(n);if(-1==i)e=this.$clickSelection.end;else if(1==i)e=this.$clickSelection.start;else{var o=r(this.$clickSelection,n);n=o.cursor,e=o.anchor}t.selection.setSelectionAnchor(e.row,e.column)}t.selection.selectToPosition(n),t.renderer.scrollCursorIntoView()},e.prototype.extendSelectionBy=function(e){var t,n=this.editor,i=n.renderer.screenToTextCoordinates(this.x,this.y),o=n.selection[e](i.row,i.column);if(this.$clickSelection){var s=this.$clickSelection.comparePoint(o.start),a=this.$clickSelection.comparePoint(o.end);if(-1==s&&a<=0)t=this.$clickSelection.end,o.end.row==i.row&&o.end.column==i.column||(i=o.start);else if(1==a&&s>=0)t=this.$clickSelection.start,o.start.row==i.row&&o.start.column==i.column||(i=o.end);else if(-1==s&&1==a)i=o.end,t=o.start;else{var l=r(this.$clickSelection,i);i=l.cursor,t=l.anchor}n.selection.setSelectionAnchor(t.row,t.column)}n.selection.selectToPosition(i),n.renderer.scrollCursorIntoView()},e.prototype.selectByLinesEnd=function(){this.$clickSelection=null,this.editor.unsetStyle("ace_selecting")},e.prototype.focusWait=function(){var e,t,n,i,o=(e=this.mousedownEvent.x,t=this.mousedownEvent.y,n=this.x,i=this.y,Math.sqrt(Math.pow(n-e,2)+Math.pow(i-t,2))),r=Date.now();(o>0||r-this.mousedownEvent.time>this.$focusTimeout)&&this.startSelect(this.mousedownEvent.getDocumentPosition())},e.prototype.onDoubleClick=function(e){var t=e.getDocumentPosition(),n=this.editor,i=n.session.getBracketRange(t);i?(i.isEmpty()&&(i.start.column--,i.end.column++),this.setState("select")):(i=n.selection.getWordRange(t.row,t.column),this.setState("selectByWords")),this.$clickSelection=i,this.select()},e.prototype.onTripleClick=function(e){var t=e.getDocumentPosition(),n=this.editor;this.setState("selectByLines");var i=n.getSelectionRange();i.isMultiLine()&&i.contains(t.row,t.column)?(this.$clickSelection=n.selection.getLineRange(i.start.row),this.$clickSelection.end=n.selection.getLineRange(i.end.row).end):this.$clickSelection=n.selection.getLineRange(t.row),this.select()},e.prototype.onQuadClick=function(e){var t=this.editor;t.selectAll(),this.$clickSelection=t.getSelectionRange(),this.setState("selectAll")},e.prototype.onMouseWheel=function(e){if(!e.getAccelKey()){e.getShiftKey()&&e.wheelY&&!e.wheelX&&(e.wheelX=e.wheelY,e.wheelY=0);var t=this.editor;this.$lastScroll||(this.$lastScroll={t:0,vx:0,vy:0,allowed:0});var n=this.$lastScroll,i=e.domEvent.timeStamp,o=i-n.t,r=o?e.wheelX/o:n.vx,s=o?e.wheelY/o:n.vy;o<550&&(r=(r+n.vx)/2,s=(s+n.vy)/2);var a=Math.abs(r/s),l=!1;return a>=1&&t.renderer.isScrollableBy(e.wheelX*e.speed,0)&&(l=!0),a<=1&&t.renderer.isScrollableBy(0,e.wheelY*e.speed)&&(l=!0),l?n.allowed=i:i-n.allowed<550&&(Math.abs(r)<=1.5*Math.abs(n.vx)&&Math.abs(s)<=1.5*Math.abs(n.vy)?(l=!0,n.allowed=i):n.allowed=0),n.t=i,n.vx=r,n.vy=s,l?(t.renderer.scrollBy(e.wheelX*e.speed,e.wheelY*e.speed),e.stop()):void 0}},e}();function r(e,t){if(e.start.row==e.end.row)var n=2*t.column-e.start.column-e.end.column;else if(e.start.row!=e.end.row-1||e.start.column||e.end.column)n=2*t.row-e.start.row-e.end.row;else n=t.column-4;return n<0?{cursor:e.start,anchor:e.end}:{cursor:e.end,anchor:e.start}}o.prototype.selectEnd=o.prototype.selectByLinesEnd,o.prototype.selectAllEnd=o.prototype.selectByLinesEnd,o.prototype.selectByWordsEnd=o.prototype.selectByLinesEnd,t.DefaultHandlers=o})),ace.define("ace/tooltip",["require","exports","module","ace/lib/dom","ace/lib/event","ace/range"],(function(e,t,n){"use strict";var i,o=this&&this.__extends||(i=function(e,t){return i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},i(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}i(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}),r=this&&this.__values||function(e){var t="function"==typeof Symbol&&Symbol.iterator,n=t&&e[t],i=0;if(n)return n.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&i>=e.length&&(e=void 0),{value:e&&e[i++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},s=e("./lib/dom"),a=e("./lib/event"),l=e("./range").Range,c="ace_tooltip",u=function(){function e(e){this.isOpen=!1,this.$element=null,this.$parentNode=e}return e.prototype.$init=function(){return this.$element=s.createElement("div"),this.$element.className=c,this.$element.style.display="none",this.$parentNode.appendChild(this.$element),this.$element},e.prototype.getElement=function(){return this.$element||this.$init()},e.prototype.setText=function(e){this.getElement().textContent=e},e.prototype.setHtml=function(e){this.getElement().innerHTML=e},e.prototype.setPosition=function(e,t){this.getElement().style.left=e+"px",this.getElement().style.top=t+"px"},e.prototype.setClassName=function(e){s.addCssClass(this.getElement(),e)},e.prototype.setTheme=function(e){this.$element.className=c+" "+(e.isDark?"ace_dark ":"")+(e.cssClass||"")},e.prototype.show=function(e,t,n){null!=e&&this.setText(e),null!=t&&null!=n&&this.setPosition(t,n),this.isOpen||(this.getElement().style.display="block",this.isOpen=!0)},e.prototype.hide=function(){this.isOpen&&(this.getElement().style.display="none",this.getElement().className=c,this.isOpen=!1)},e.prototype.getHeight=function(){return this.getElement().offsetHeight},e.prototype.getWidth=function(){return this.getElement().offsetWidth},e.prototype.destroy=function(){this.isOpen=!1,this.$element&&this.$element.parentNode&&this.$element.parentNode.removeChild(this.$element)},e}(),h=new(function(){function e(){this.popups=[]}return e.prototype.addPopup=function(e){this.popups.push(e),this.updatePopups()},e.prototype.removePopup=function(e){var t=this.popups.indexOf(e);-1!==t&&(this.popups.splice(t,1),this.updatePopups())},e.prototype.updatePopups=function(){var e,t,n,i;this.popups.sort((function(e,t){return t.priority-e.priority}));var o=[];try{for(var s=r(this.popups),a=s.next();!a.done;a=s.next()){var l=a.value,c=!0;try{for(var u=(n=void 0,r(o)),h=u.next();!h.done;h=u.next()){var d=h.value;if(this.doPopupsOverlap(d,l)){c=!1;break}}}catch(e){n={error:e}}finally{try{h&&!h.done&&(i=u.return)&&i.call(u)}finally{if(n)throw n.error}}c?o.push(l):l.hide()}}catch(t){e={error:t}}finally{try{a&&!a.done&&(t=s.return)&&t.call(s)}finally{if(e)throw e.error}}},e.prototype.doPopupsOverlap=function(e,t){var n=e.getElement().getBoundingClientRect(),i=t.getElement().getBoundingClientRect();return n.lefti.left&&n.topi.top},e}());t.popupManager=h,t.Tooltip=u;var d=function(e){function t(t){void 0===t&&(t=document.body);var n=e.call(this,t)||this;n.timeout=void 0,n.lastT=0,n.idleTime=350,n.lastEvent=void 0,n.onMouseOut=n.onMouseOut.bind(n),n.onMouseMove=n.onMouseMove.bind(n),n.waitForHover=n.waitForHover.bind(n),n.hide=n.hide.bind(n);var i=n.getElement();return i.style.whiteSpace="pre-wrap",i.style.pointerEvents="auto",i.addEventListener("mouseout",n.onMouseOut),i.tabIndex=-1,i.addEventListener("blur",function(){i.contains(document.activeElement)||this.hide()}.bind(n)),i.addEventListener("wheel",a.stopPropagation),n}return o(t,e),t.prototype.addToEditor=function(e){e.on("mousemove",this.onMouseMove),e.on("mousedown",this.hide),e.renderer.getMouseEventTarget().addEventListener("mouseout",this.onMouseOut,!0)},t.prototype.removeFromEditor=function(e){e.off("mousemove",this.onMouseMove),e.off("mousedown",this.hide),e.renderer.getMouseEventTarget().removeEventListener("mouseout",this.onMouseOut,!0),this.timeout&&(clearTimeout(this.timeout),this.timeout=null)},t.prototype.onMouseMove=function(e,t){this.lastEvent=e,this.lastT=Date.now();var n=t.$mouseHandler.isMousePressed;if(this.isOpen){var i=this.lastEvent&&this.lastEvent.getDocumentPosition();this.range&&this.range.contains(i.row,i.column)&&!n&&!this.isOutsideOfText(this.lastEvent)||this.hide()}this.timeout||n||(this.lastEvent=e,this.timeout=setTimeout(this.waitForHover,this.idleTime))},t.prototype.waitForHover=function(){this.timeout&&clearTimeout(this.timeout);var e=Date.now()-this.lastT;this.idleTime-e>10?this.timeout=setTimeout(this.waitForHover,this.idleTime-e):(this.timeout=null,this.lastEvent&&!this.isOutsideOfText(this.lastEvent)&&this.$gatherData(this.lastEvent,this.lastEvent.editor))},t.prototype.isOutsideOfText=function(e){var t=e.editor,n=e.getDocumentPosition(),i=t.session.getLine(n.row);if(n.column==i.length){var o=t.renderer.pixelToScreenCoordinates(e.clientX,e.clientY),r=t.session.documentToScreenPosition(n.row,n.column);if(r.column!=o.column||r.row!=o.row)return!0}return!1},t.prototype.setDataProvider=function(e){this.$gatherData=e},t.prototype.showForRange=function(e,t,n,i){if(!(i&&i!=this.lastEvent||this.isOpen&&document.activeElement==this.getElement())){var o=e.renderer;this.isOpen||(h.addPopup(this),this.$registerCloseEvents(),this.setTheme(o.theme)),this.isOpen=!0,this.addMarker(t,e.session),this.range=l.fromPoints(t.start,t.end);var r=o.textToScreenCoordinates(t.start.row,t.start.column),s=o.scroller.getBoundingClientRect();r.pageX=e.length&&(e=void 0),{value:e&&e[i++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},s=e("../lib/dom"),a=e("../lib/event"),l=e("../tooltip").Tooltip,c=e("../config").nls;t.GutterHandler=function(e){var t,n,i=e.editor,o=i.renderer.$gutterLayer,r=new u(i);function l(){t&&(t=clearTimeout(t)),r.isOpen&&(r.hideTooltip(),i.off("mousewheel",l))}function c(e){r.setPosition(e.x,e.y)}e.editor.setDefaultHandler("guttermousedown",(function(t){if(i.isFocused()&&0==t.getButton()&&"foldWidgets"!=o.getRegion(t)){var n=t.getDocumentPosition().row,r=i.session.selection;if(t.getShiftKey())r.selectTo(n,0);else{if(2==t.domEvent.detail)return i.selectAll(),t.preventDefault();e.$clickSelection=i.selection.getLineRange(n)}return e.setState("selectByLines"),e.captureMouse(t),t.preventDefault()}})),e.editor.setDefaultHandler("guttermousemove",(function(a){var u=a.domEvent.target||a.domEvent.srcElement;if(s.hasCssClass(u,"ace_fold-widget"))return l();r.isOpen&&e.$tooltipFollowsMouse&&c(a),n=a,t||(t=setTimeout((function(){t=null,n&&!e.isMousePressed?function(){var t=n.getDocumentPosition().row;if(t==i.session.getLength()){var s=i.renderer.pixelToScreenCoordinates(0,n.y).row,a=n.$pos;if(s>i.session.documentToScreenRow(a.row,a.column))return l()}if(r.showTooltip(t),r.isOpen)if(i.on("mousewheel",l),e.$tooltipFollowsMouse)c(n);else{var u=n.getGutterRow(),h=o.$lines.get(u);if(h){var d=h.element.querySelector(".ace_gutter_annotation").getBoundingClientRect(),p=r.getElement().style;p.left=d.right+"px",p.top=d.bottom+"px"}else c(n)}}():l()}),50))})),a.addListener(i.renderer.$gutter,"mouseout",(function(e){n=null,r.isOpen&&!t&&(t=setTimeout((function(){t=null,l()}),50))}),i),i.on("changeSession",l),i.on("input",l)};var u=function(e){function t(t){var n=e.call(this,t.container)||this;return n.editor=t,n}return o(t,e),t.prototype.setPosition=function(e,t){var n=window.innerWidth||document.documentElement.clientWidth,i=window.innerHeight||document.documentElement.clientHeight,o=this.getWidth(),r=this.getHeight();(e+=15)+o>n&&(e-=e+o-n),(t+=15)+r>i&&(t-=20+r),l.prototype.setPosition.call(this,e,t)},Object.defineProperty(t,"annotationLabels",{get:function(){return{error:{singular:c("error"),plural:c("errors")},warning:{singular:c("warning"),plural:c("warnings")},info:{singular:c("information message"),plural:c("information messages")}}},enumerable:!1,configurable:!0}),t.prototype.showTooltip=function(e){var n,i=this.editor.renderer.$gutterLayer,o=i.$annotations[e];n=o?{text:Array.from(o.text),type:Array.from(o.type)}:{text:[],type:[]};var r=i.session.getFoldLine(e);if(r&&i.$showFoldedAnnotations){for(var s,a={error:[],warning:[],info:[]},l=e+1;l<=r.end.row;l++)if(i.$annotations[l])for(var c=0;c ").concat(n.text[l]);d[n.type[l].replace("_fold","")].push(g)}var m=[].concat(d.error,d.warning,d.info).join("
    ");this.setHtml(m),this.$element.setAttribute("aria-live","polite"),this.isOpen||(this.setTheme(this.editor.renderer.theme),this.setClassName("ace_gutter-tooltip")),this.show(),this.editor._signal("showGutterTooltip",this)},t.prototype.hideTooltip=function(){this.$element.removeAttribute("aria-live"),this.hide(),this.editor._signal("hideGutterTooltip",this)},t.annotationsToSummaryString=function(e){var n,i,o=[];try{for(var s=r(["error","warning","info"]),a=s.next();!a.done;a=s.next()){var l=a.value;if(e[l].length){var c=1===e[l].length?t.annotationLabels[l].singular:t.annotationLabels[l].plural;o.push("".concat(e[l].length," ").concat(c))}}}catch(e){n={error:e}}finally{try{a&&!a.done&&(i=s.return)&&i.call(s)}finally{if(n)throw n.error}}return o.join(", ")},t}(l);t.GutterTooltip=u})),ace.define("ace/mouse/mouse_event",["require","exports","module","ace/lib/event","ace/lib/useragent"],(function(e,t,n){"use strict";var i=e("../lib/event"),o=e("../lib/useragent"),r=function(){function e(e,t){this.domEvent=e,this.editor=t,this.x=this.clientX=e.clientX,this.y=this.clientY=e.clientY,this.$pos=null,this.$inSelection=null,this.propagationStopped=!1,this.defaultPrevented=!1}return e.prototype.stopPropagation=function(){i.stopPropagation(this.domEvent),this.propagationStopped=!0},e.prototype.preventDefault=function(){i.preventDefault(this.domEvent),this.defaultPrevented=!0},e.prototype.stop=function(){this.stopPropagation(),this.preventDefault()},e.prototype.getDocumentPosition=function(){return this.$pos||(this.$pos=this.editor.renderer.screenToTextCoordinates(this.clientX,this.clientY)),this.$pos},e.prototype.getGutterRow=function(){var e=this.getDocumentPosition().row;return this.editor.session.documentToScreenRow(e,0)-this.editor.session.documentToScreenRow(this.editor.renderer.$gutterLayer.$lines.get(0).row,0)},e.prototype.inSelection=function(){if(null!==this.$inSelection)return this.$inSelection;var e=this.editor.getSelectionRange();if(e.isEmpty())this.$inSelection=!1;else{var t=this.getDocumentPosition();this.$inSelection=e.contains(t.row,t.column)}return this.$inSelection},e.prototype.getButton=function(){return i.getButton(this.domEvent)},e.prototype.getShiftKey=function(){return this.domEvent.shiftKey},e.prototype.getAccelKey=function(){return o.isMac?this.domEvent.metaKey:this.domEvent.ctrlKey},e}();t.MouseEvent=r})),ace.define("ace/mouse/dragdrop_handler",["require","exports","module","ace/lib/dom","ace/lib/event","ace/lib/useragent"],(function(e,t,n){"use strict";var i=e("../lib/dom"),o=e("../lib/event"),r=e("../lib/useragent");function s(e){var t=e.editor,n=i.createElement("div");n.style.cssText="top:-100px;position:absolute;z-index:2147483647;opacity:0.5",n.textContent=" ",["dragWait","dragWaitEnd","startDrag","dragReadyEnd","onMouseDrag"].forEach((function(t){e[t]=this[t]}),this),t.on("mousedown",this.onMouseDown.bind(e));var s,l,c,u,h,d,p,g,m,f,y,b=t.container,v=0;function w(){var e=d;(function(e,n){var i=Date.now(),o=!n||e.row!=n.row,r=!n||e.column!=n.column;!f||o||r?(t.moveCursorToPosition(e),f=i,y={x:l,y:c}):a(y.x,y.y,l,c)>5?f=null:i-f>=200&&(t.renderer.scrollCursorIntoView(),f=null)})(d=t.renderer.screenToTextCoordinates(l,c),e),function(e,n){var i=Date.now(),o=t.renderer.layerConfig.lineHeight,r=t.renderer.layerConfig.characterWidth,s=t.renderer.scroller.getBoundingClientRect(),a={x:{left:l-s.left,right:s.right-l},y:{top:c-s.top,bottom:s.bottom-c}},u=Math.min(a.x.left,a.x.right),h=Math.min(a.y.top,a.y.bottom),d={row:e.row,column:e.column};u/r<=2&&(d.column+=a.x.left=200&&t.renderer.scrollCursorIntoView(d):m=i:m=null}(d,e)}function A(){h=t.selection.toOrientedRange(),s=t.session.addMarker(h,"ace_selection",t.getSelectionStyle()),t.clearSelection(),t.isFocused()&&t.renderer.$cursorLayer.setBlinking(!1),clearInterval(u),w(),u=setInterval(w,20),v=0,o.addListener(document,"mousemove",x)}function C(){clearInterval(u),t.session.removeMarker(s),s=null,t.selection.fromOrientedRange(h),t.isFocused()&&!g&&t.$resetCursorStyle(),h=null,d=null,v=0,m=null,f=null,o.removeListener(document,"mousemove",x)}this.onDragStart=function(e){if(this.cancelDrag||!b.draggable){var i=this;return setTimeout((function(){i.startSelect(),i.captureMouse(e)}),0),e.preventDefault()}h=t.getSelectionRange();var o=e.dataTransfer;o.effectAllowed=t.getReadOnly()?"copy":"copyMove",t.container.appendChild(n),o.setDragImage&&o.setDragImage(n,0,0),setTimeout((function(){t.container.removeChild(n)})),o.clearData(),o.setData("Text",t.session.getTextRange()),g=!0,this.setState("drag")},this.onDragEnd=function(e){if(b.draggable=!1,g=!1,this.setState(null),!t.getReadOnly()){var n=e.dataTransfer.dropEffect;p||"move"!=n||t.session.remove(t.getSelectionRange()),t.$resetCursorStyle()}this.editor.unsetStyle("ace_dragging"),this.editor.renderer.setCursorStyle("")},this.onDragEnter=function(e){if(!t.getReadOnly()&&S(e.dataTransfer))return l=e.clientX,c=e.clientY,s||A(),v++,e.dataTransfer.dropEffect=p=$(e),o.preventDefault(e)},this.onDragOver=function(e){if(!t.getReadOnly()&&S(e.dataTransfer))return l=e.clientX,c=e.clientY,s||(A(),v++),null!==k&&(k=null),e.dataTransfer.dropEffect=p=$(e),o.preventDefault(e)},this.onDragLeave=function(e){if(--v<=0&&s)return C(),p=null,o.preventDefault(e)},this.onDrop=function(e){if(d){var n=e.dataTransfer;if(g)switch(p){case"move":h=h.contains(d.row,d.column)?{start:d,end:d}:t.moveText(h,d);break;case"copy":h=t.moveText(h,d,!0)}else{var i=n.getData("Text");h={start:d,end:t.session.insert(d,i)},t.focus(),p=null}return C(),o.preventDefault(e)}},o.addListener(b,"dragstart",this.onDragStart.bind(e),t),o.addListener(b,"dragend",this.onDragEnd.bind(e),t),o.addListener(b,"dragenter",this.onDragEnter.bind(e),t),o.addListener(b,"dragover",this.onDragOver.bind(e),t),o.addListener(b,"dragleave",this.onDragLeave.bind(e),t),o.addListener(b,"drop",this.onDrop.bind(e),t);var k=null;function x(){null==k&&(k=setTimeout((function(){null!=k&&s&&C()}),20))}function S(e){var t=e.types;return!t||Array.prototype.some.call(t,(function(e){return"text/plain"==e||"Text"==e}))}function $(e){var t=["copy","copymove","all","uninitialized"],n=r.isMac?e.altKey:e.ctrlKey,i="uninitialized";try{i=e.dataTransfer.effectAllowed.toLowerCase()}catch(e){}var o="none";return n&&t.indexOf(i)>=0?o="copy":["move","copymove","linkmove","all","uninitialized"].indexOf(i)>=0?o="move":t.indexOf(i)>=0&&(o="copy"),o}}function a(e,t,n,i){return Math.sqrt(Math.pow(n-e,2)+Math.pow(i-t,2))}(function(){this.dragWait=function(){Date.now()-this.mousedownEvent.time>this.editor.getDragDelay()&&this.startDrag()},this.dragWaitEnd=function(){this.editor.container.draggable=!1,this.startSelect(this.mousedownEvent.getDocumentPosition()),this.selectEnd()},this.dragReadyEnd=function(e){this.editor.$resetCursorStyle(),this.editor.unsetStyle("ace_dragging"),this.editor.renderer.setCursorStyle(""),this.dragWaitEnd()},this.startDrag=function(){this.cancelDrag=!1;var e=this.editor;e.container.draggable=!0,e.renderer.$cursorLayer.setBlinking(!1),e.setStyle("ace_dragging");var t=r.isWin?"default":"move";e.renderer.setCursorStyle(t),this.setState("dragReady")},this.onMouseDrag=function(e){var t=this.editor.container;r.isIE&&"dragReady"==this.state&&a(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y)>3&&t.dragDrop(),"dragWait"===this.state&&a(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y)>0&&(t.draggable=!1,this.startSelect(this.mousedownEvent.getDocumentPosition()))},this.onMouseDown=function(e){if(this.$dragEnabled){this.mousedownEvent=e;var t=this.editor,n=e.inSelection(),i=e.getButton();if(1===(e.domEvent.detail||1)&&0===i&&n){if(e.editor.inMultiSelectMode&&(e.getAccelKey()||e.getShiftKey()))return;this.mousedownEvent.time=Date.now();var o=e.domEvent.target||e.domEvent.srcElement;"unselectable"in o&&(o.unselectable="on"),t.getDragDelay()?(r.isWebKit&&(this.cancelDrag=!0,t.container.draggable=!0),this.setState("dragWait")):this.startDrag(),this.captureMouse(e,this.onMouseDrag.bind(this)),e.defaultPrevented=!0}}}}).call(s.prototype),t.DragdropHandler=s})),ace.define("ace/mouse/touch_handler",["require","exports","module","ace/mouse/mouse_event","ace/lib/event","ace/lib/dom"],(function(e,t,n){"use strict";var i=e("./mouse_event").MouseEvent,o=e("../lib/event"),r=e("../lib/dom");t.addTouchListeners=function(e,t){var n,s,a,l,c,u,h,d,p,g="scroll",m=0,f=0,y=0,b=0;function v(){var e,n,i;p||(e=window.navigator&&window.navigator.clipboard,n=!1,i=function(i){var o,s,a=i.target.getAttribute("action");if("more"==a||!n)return n=!n,o=t.getCopyText(),s=t.session.getUndoManager().hasUndo(),void p.replaceChild(r.buildDom(n?["span",!o&&["span",{class:"ace_mobile-button",action:"selectall"},"Select All"],o&&["span",{class:"ace_mobile-button",action:"copy"},"Copy"],o&&["span",{class:"ace_mobile-button",action:"cut"},"Cut"],e&&["span",{class:"ace_mobile-button",action:"paste"},"Paste"],s&&["span",{class:"ace_mobile-button",action:"undo"},"Undo"],["span",{class:"ace_mobile-button",action:"find"},"Find"],["span",{class:"ace_mobile-button",action:"openCommandPalette"},"Palette"]]:["span"]),p.firstChild);"paste"==a?e.readText().then((function(e){t.execCommand(a,e)})):a&&("cut"!=a&&"copy"!=a||(e?e.writeText(t.getCopyText()):document.execCommand("copy")),t.execCommand(a)),p.firstChild.style.display="none",n=!1,"openCommandPalette"!=a&&t.focus()},p=r.buildDom(["div",{class:"ace_mobile-menu",ontouchstart:function(e){g="menu",e.stopPropagation(),e.preventDefault(),t.textInput.focus()},ontouchend:function(e){e.stopPropagation(),e.preventDefault(),i(e)},onclick:i},["span"],["span",{class:"ace_mobile-button",action:"more"},"..."]],t.container));var o=t.selection.cursor,s=t.renderer.textToScreenCoordinates(o.row,o.column),a=t.renderer.textToScreenCoordinates(0,0).pageX,l=t.renderer.scrollLeft,c=t.container.getBoundingClientRect();p.style.top=s.pageY-c.top-3+"px",s.pageX-c.left1)return clearTimeout(c),c=null,a=-1,void(g="zoom");d=t.$mouseHandler.isMousePressed=!0;var r=t.renderer.layerConfig.lineHeight,u=t.renderer.layerConfig.lineHeight,p=e.timeStamp;l=p;var v=o[0],w=v.clientX,C=v.clientY;Math.abs(n-w)+Math.abs(s-C)>r&&(a=-1),n=e.clientX=w,s=e.clientY=C,y=b=0;var k=new i(e,t);if(h=k.getDocumentPosition(),p-a<500&&1==o.length&&!m)f++,e.preventDefault(),e.button=0,function(){c=null,clearTimeout(c),t.selection.moveToPosition(h);var e=f>=2?t.selection.getLineRange(h.row):t.session.getBracketRange(h);e&&!e.isEmpty()?t.selection.setRange(e):t.selection.selectWord(),g="wait"}();else{f=0;var x=t.selection.cursor,S=t.selection.isEmpty()?x:t.selection.anchor,$=t.renderer.$cursorLayer.getPixelPosition(x,!0),E=t.renderer.$cursorLayer.getPixelPosition(S,!0),O=t.renderer.scroller.getBoundingClientRect(),T=t.renderer.layerConfig.offset,_=t.renderer.scrollLeft,R=function(e,t){return(e/=u)*e+(t=t/r-.75)*t};if(e.clientXL?"cursor":"anchor"),g=L<3.5?"anchor":M<3.5?"cursor":"scroll",c=setTimeout(A,450)}a=p}),t),o.addListener(e,"touchend",(function(e){d=t.$mouseHandler.isMousePressed=!1,u&&clearInterval(u),"zoom"==g?(g="",m=0):c?(t.selection.moveToPosition(h),m=0,v()):"scroll"==g?(m+=60,u=setInterval((function(){m--<=0&&(clearInterval(u),u=null),Math.abs(y)<.01&&(y=0),Math.abs(b)<.01&&(b=0),m<20&&(y*=.9),m<20&&(b*=.9);var e=t.session.getScrollTop();t.renderer.scrollBy(10*y,10*b),e==t.session.getScrollTop()&&(m=0)}),10),w()):v(),clearTimeout(c),c=null}),t),o.addListener(e,"touchmove",(function(e){c&&(clearTimeout(c),c=null);var o=e.touches;if(!(o.length>1||"zoom"==g)){var r=o[0],a=n-r.clientX,u=s-r.clientY;if("wait"==g){if(!(a*a+u*u>4))return e.preventDefault();g="cursor"}n=r.clientX,s=r.clientY,e.clientX=r.clientX,e.clientY=r.clientY;var h=e.timeStamp,d=h-l;if(l=h,"scroll"==g){var p=new i(e,t);p.speed=1,p.wheelX=a,p.wheelY=u,10*Math.abs(a)=e){for(r=h+1;r=e;)r++;for(a=h,l=r-1;a=t.length||2!=(l=n[o-1])&&3!=l||2!=(c=t[o+1])&&3!=c?4:(r&&(c=3),c==l?c:4);case 10:return 2==(l=o>0?n[o-1]:5)&&o+10&&2==n[o-1])return 2;if(r)return 4;for(p=o+1,d=t.length;p=1425&&m<=2303||64286==m;if(l=t[p],f&&(1==l||7==l))return 1}return o<1||5==(l=t[o-1])?4:n[o-1];case 5:return r=!1,s=!0,i;case 6:return a=!0,4;case 13:case 14:case 16:case 17:case 15:r=!1;case h:return 4}}function f(e){var t=e.charCodeAt(0),n=t>>8;return 0==n?t>191?0:d[t]:5==n?/[\u0591-\u05f4]/.test(e)?1:0:6==n?/[\u0610-\u061a\u064b-\u065f\u06d6-\u06e4\u06e7-\u06ed]/.test(e)?12:/[\u0660-\u0669\u066b-\u066c]/.test(e)?3:1642==t?u:/[\u06f0-\u06f9]/.test(e)?2:7:32==n&&t<=8287?p[255&t]:254==n&&t>=65136?7:4}t.L=0,t.R=1,t.EN=2,t.ON_R=3,t.AN=4,t.R_H=5,t.B=6,t.RLE=7,t.DOT="·",t.doBidiReorder=function(e,n,u){if(e.length<2)return{};var d=e.split(""),p=new Array(d.length),y=new Array(d.length),b=[];i=u?1:0,function(e,t,n,u){var h=i?c:l,d=null,p=null,g=null,y=0,b=null,v=-1,w=null,A=null,C=[];if(!u)for(w=0,u=[];w0)if(16==b){for(w=v;w-1){for(w=v;w=0&&8==u[k];k--)t[k]=i}}(d,b,d.length,n);for(var v=0;v7&&n[v]<13||4===n[v]||n[v]===h)?b[v]=t.ON_R:v>0&&"ل"===d[v-1]&&/\u0622|\u0623|\u0625|\u0627/.test(d[v])&&(b[v-1]=b[v]=t.R_H,v++);for(d[d.length-1]===t.DOT&&(b[d.length-1]=t.B),"‫"===d[0]&&(b[0]=t.RLE),v=0;v=0&&(e=this.session.$docRowCache[n])}return e},e.prototype.getSplitIndex=function(){var e=0,t=this.session.$screenRowCache;if(t.length)for(var n,i=this.session.$getRowCacheIndex(t,this.currentRow);this.currentRow-e>0&&(n=this.session.$getRowCacheIndex(t,this.currentRow-e-1))===i;)i=n,e++;else e=this.currentRow;return e},e.prototype.updateRowLine=function(e,t){void 0===e&&(e=this.getDocumentRow());var n=e===this.session.getLength()-1?this.EOF:this.EOL;if(this.wrapIndent=0,this.line=this.session.getLine(e),this.isRtlDir=this.$isRtl||this.line.charAt(0)===this.RLE,this.session.$useWrapMode){var r=this.session.$wrapData[e];r&&(void 0===t&&(t=this.getSplitIndex()),t>0&&r.length?(this.wrapIndent=r.indent,this.wrapOffset=this.wrapIndent*this.charWidths[i.L],this.line=tt?this.session.getOverwrite()?e:e-1:t,o=i.getVisualFromLogicalIdx(n,this.bidiMap),r=this.bidiMap.bidiLevels,s=0;!this.session.getOverwrite()&&e<=t&&r[o]%2!=0&&o++;for(var a=0;at&&r[o]%2==0&&(s+=this.charWidths[r[o]]),this.wrapIndent&&(s+=this.isRtlDir?-1*this.wrapOffset:this.wrapOffset),this.isRtlDir&&(s+=this.rtlLineOffset),s},e.prototype.getSelections=function(e,t){var n,i=this.bidiMap,o=i.bidiLevels,r=[],s=0,a=Math.min(e,t)-this.wrapIndent,l=Math.max(e,t)-this.wrapIndent,c=!1,u=!1,h=0;this.wrapIndent&&(s+=this.isRtlDir?-1*this.wrapOffset:this.wrapOffset);for(var d,p=0;p=a&&dn+r/2;){if(n+=r,i===o.length-1){r=0;break}r=this.charWidths[o[++i]]}return i>0&&o[i-1]%2!=0&&o[i]%2==0?(e0&&o[i-1]%2==0&&o[i]%2!=0?t=1+(e>n?this.bidiMap.logicalFromVisual[i]:this.bidiMap.logicalFromVisual[i-1]):this.isRtlDir&&i===o.length-1&&0===r&&o[i-1]%2==0||!this.isRtlDir&&0===i&&o[i]%2!=0?t=1+this.bidiMap.logicalFromVisual[i]:(i>0&&o[i-1]%2!=0&&0!==r&&i--,t=this.bidiMap.logicalFromVisual[i]),0===t&&this.isRtlDir&&t++,t+this.wrapIndent},e}();t.BidiHandler=s})),ace.define("ace/selection",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/lib/event_emitter","ace/range"],(function(e,t,n){"use strict";var i=e("./lib/oop"),o=e("./lib/lang"),r=e("./lib/event_emitter").EventEmitter,s=e("./range").Range,a=function(){function e(e){this.session=e,this.doc=e.getDocument(),this.clearSelection(),this.cursor=this.lead=this.doc.createAnchor(0,0),this.anchor=this.doc.createAnchor(0,0),this.$silent=!1;var t=this;this.cursor.on("change",(function(e){t.$cursorChanged=!0,t.$silent||t._emit("changeCursor"),t.$isEmpty||t.$silent||t._emit("changeSelection"),t.$keepDesiredColumnOnChange||e.old.column==e.value.column||(t.$desiredColumn=null)})),this.anchor.on("change",(function(){t.$anchorChanged=!0,t.$isEmpty||t.$silent||t._emit("changeSelection")}))}return e.prototype.isEmpty=function(){return this.$isEmpty||this.anchor.row==this.lead.row&&this.anchor.column==this.lead.column},e.prototype.isMultiLine=function(){return!this.$isEmpty&&this.anchor.row!=this.cursor.row},e.prototype.getCursor=function(){return this.lead.getPosition()},e.prototype.setAnchor=function(e,t){this.$isEmpty=!1,this.anchor.setPosition(e,t)},e.prototype.getAnchor=function(){return this.$isEmpty?this.getSelectionLead():this.anchor.getPosition()},e.prototype.getSelectionLead=function(){return this.lead.getPosition()},e.prototype.isBackwards=function(){var e=this.anchor,t=this.lead;return e.row>t.row||e.row==t.row&&e.column>t.column},e.prototype.getRange=function(){var e=this.anchor,t=this.lead;return this.$isEmpty?s.fromPoints(t,t):this.isBackwards()?s.fromPoints(t,e):s.fromPoints(e,t)},e.prototype.clearSelection=function(){this.$isEmpty||(this.$isEmpty=!0,this._emit("changeSelection"))},e.prototype.selectAll=function(){this.$setSelection(0,0,Number.MAX_VALUE,Number.MAX_VALUE)},e.prototype.setRange=function(e,t){var n=t?e.end:e.start,i=t?e.start:e.end;this.$setSelection(n.row,n.column,i.row,i.column)},e.prototype.$setSelection=function(e,t,n,i){if(!this.$silent){var o=this.$isEmpty,r=this.inMultiSelectMode;this.$silent=!0,this.$cursorChanged=this.$anchorChanged=!1,this.anchor.setPosition(e,t),this.cursor.setPosition(n,i),this.$isEmpty=!s.comparePoints(this.anchor,this.cursor),this.$silent=!1,this.$cursorChanged&&this._emit("changeCursor"),(this.$cursorChanged||this.$anchorChanged||o!=this.$isEmpty||r)&&this._emit("changeSelection")}},e.prototype.$moveSelection=function(e){var t=this.lead;this.$isEmpty&&this.setSelectionAnchor(t.row,t.column),e.call(this)},e.prototype.selectTo=function(e,t){this.$moveSelection((function(){this.moveCursorTo(e,t)}))},e.prototype.selectToPosition=function(e){this.$moveSelection((function(){this.moveCursorToPosition(e)}))},e.prototype.moveTo=function(e,t){this.clearSelection(),this.moveCursorTo(e,t)},e.prototype.moveToPosition=function(e){this.clearSelection(),this.moveCursorToPosition(e)},e.prototype.selectUp=function(){this.$moveSelection(this.moveCursorUp)},e.prototype.selectDown=function(){this.$moveSelection(this.moveCursorDown)},e.prototype.selectRight=function(){this.$moveSelection(this.moveCursorRight)},e.prototype.selectLeft=function(){this.$moveSelection(this.moveCursorLeft)},e.prototype.selectLineStart=function(){this.$moveSelection(this.moveCursorLineStart)},e.prototype.selectLineEnd=function(){this.$moveSelection(this.moveCursorLineEnd)},e.prototype.selectFileEnd=function(){this.$moveSelection(this.moveCursorFileEnd)},e.prototype.selectFileStart=function(){this.$moveSelection(this.moveCursorFileStart)},e.prototype.selectWordRight=function(){this.$moveSelection(this.moveCursorWordRight)},e.prototype.selectWordLeft=function(){this.$moveSelection(this.moveCursorWordLeft)},e.prototype.getWordRange=function(e,t){if(void 0===t){var n=e||this.lead;e=n.row,t=n.column}return this.session.getWordRange(e,t)},e.prototype.selectWord=function(){this.setSelectionRange(this.getWordRange())},e.prototype.selectAWord=function(){var e=this.getCursor(),t=this.session.getAWordRange(e.row,e.column);this.setSelectionRange(t)},e.prototype.getLineRange=function(e,t){var n,i="number"==typeof e?e:this.lead.row,o=this.session.getFoldLine(i);return o?(i=o.start.row,n=o.end.row):n=i,!0===t?new s(i,0,n,this.session.getLine(n).length):new s(i,0,n+1,0)},e.prototype.selectLine=function(){this.setSelectionRange(this.getLineRange())},e.prototype.moveCursorUp=function(){this.moveCursorBy(-1,0)},e.prototype.moveCursorDown=function(){this.moveCursorBy(1,0)},e.prototype.wouldMoveIntoSoftTab=function(e,t,n){var i=e.column,o=e.column+t;return n<0&&(i=e.column-t,o=e.column),this.session.isTabStop(e)&&this.doc.getLine(e.row).slice(i,o).split(" ").length-1==t},e.prototype.moveCursorLeft=function(){var e,t=this.lead.getPosition();if(e=this.session.getFoldAt(t.row,t.column,-1))this.moveCursorTo(e.start.row,e.start.column);else if(0===t.column)t.row>0&&this.moveCursorTo(t.row-1,this.doc.getLine(t.row-1).length);else{var n=this.session.getTabSize();this.wouldMoveIntoSoftTab(t,n,-1)&&!this.session.getNavigateWithinSoftTabs()?this.moveCursorBy(0,-n):this.moveCursorBy(0,-1)}},e.prototype.moveCursorRight=function(){var e,t=this.lead.getPosition();if(e=this.session.getFoldAt(t.row,t.column,1))this.moveCursorTo(e.end.row,e.end.column);else if(this.lead.column==this.doc.getLine(this.lead.row).length)this.lead.row0&&(t.column=i)}}this.moveCursorTo(t.row,t.column)},e.prototype.moveCursorFileEnd=function(){var e=this.doc.getLength()-1,t=this.doc.getLine(e).length;this.moveCursorTo(e,t)},e.prototype.moveCursorFileStart=function(){this.moveCursorTo(0,0)},e.prototype.moveCursorLongWordRight=function(){var e=this.lead.row,t=this.lead.column,n=this.doc.getLine(e),i=n.substring(t);this.session.nonTokenRe.lastIndex=0,this.session.tokenRe.lastIndex=0;var o=this.session.getFoldAt(e,t,1);if(o)this.moveCursorTo(o.end.row,o.end.column);else{if(this.session.nonTokenRe.exec(i)&&(t+=this.session.nonTokenRe.lastIndex,this.session.nonTokenRe.lastIndex=0,i=n.substring(t)),t>=n.length)return this.moveCursorTo(e,n.length),this.moveCursorRight(),void(e0&&this.moveCursorWordLeft());this.session.tokenRe.exec(r)&&(n-=this.session.tokenRe.lastIndex,this.session.tokenRe.lastIndex=0),this.moveCursorTo(t,n)}},e.prototype.$shortWordEndIndex=function(e){var t,n=0,i=/\s/,o=this.session.tokenRe;if(o.lastIndex=0,this.session.tokenRe.exec(e))n=this.session.tokenRe.lastIndex;else{for(;(t=e[n])&&i.test(t);)n++;if(n<1)for(o.lastIndex=0;(t=e[n])&&!o.test(t);)if(o.lastIndex=0,n++,i.test(t)){if(n>2){n--;break}for(;(t=e[n])&&i.test(t);)n++;if(n>2)break}}return o.lastIndex=0,n},e.prototype.moveCursorShortWordRight=function(){var e=this.lead.row,t=this.lead.column,n=this.doc.getLine(e),i=n.substring(t),o=this.session.getFoldAt(e,t,1);if(o)return this.moveCursorTo(o.end.row,o.end.column);if(t==n.length){var r=this.doc.getLength();do{e++,i=this.doc.getLine(e)}while(e0&&/^\s*$/.test(i));n=i.length,/\s+$/.test(i)||(i="")}var r=o.stringReverse(i),s=this.$shortWordEndIndex(r);return this.moveCursorTo(t,n-s)},e.prototype.moveCursorWordRight=function(){this.session.$selectLongWords?this.moveCursorLongWordRight():this.moveCursorShortWordRight()},e.prototype.moveCursorWordLeft=function(){this.session.$selectLongWords?this.moveCursorLongWordLeft():this.moveCursorShortWordLeft()},e.prototype.moveCursorBy=function(e,t){var n,i=this.session.documentToScreenPosition(this.lead.row,this.lead.column);if(0===t&&(0!==e&&(this.session.$bidiHandler.isBidiRow(i.row,this.lead.row)?(n=this.session.$bidiHandler.getPosLeft(i.column),i.column=Math.round(n/this.session.$bidiHandler.charWidths[0])):n=i.column*this.session.$bidiHandler.charWidths[0]),this.$desiredColumn?i.column=this.$desiredColumn:this.$desiredColumn=i.column),0!=e&&this.session.lineWidgets&&this.session.lineWidgets[this.lead.row]){var o=this.session.lineWidgets[this.lead.row];e<0?e-=o.rowsAbove||0:e>0&&(e+=o.rowCount-(o.rowsAbove||0))}var r=this.session.screenToDocumentPosition(i.row+e,i.column,n);0!==e&&0===t&&r.row===this.lead.row&&(r.column,this.lead.column),this.moveCursorTo(r.row,r.column+t,0===t)},e.prototype.moveCursorToPosition=function(e){this.moveCursorTo(e.row,e.column)},e.prototype.moveCursorTo=function(e,t,n){var i=this.session.getFoldAt(e,t,1);i&&(e=i.start.row,t=i.start.column),this.$keepDesiredColumnOnChange=!0;var o=this.session.getLine(e);/[\uDC00-\uDFFF]/.test(o.charAt(t))&&o.charAt(t-1)&&(this.lead.row==e&&this.lead.column==t+1?t-=1:t+=1),this.lead.setPosition(e,t),this.$keepDesiredColumnOnChange=!1,n||(this.$desiredColumn=null)},e.prototype.moveCursorToScreen=function(e,t,n){var i=this.session.screenToDocumentPosition(e,t);this.moveCursorTo(i.row,i.column,n)},e.prototype.detach=function(){this.lead.detach(),this.anchor.detach()},e.prototype.fromOrientedRange=function(e){this.setSelectionRange(e,e.cursor==e.start),this.$desiredColumn=e.desiredColumn||this.$desiredColumn},e.prototype.toOrientedRange=function(e){var t=this.getRange();return e?(e.start.column=t.start.column,e.start.row=t.start.row,e.end.column=t.end.column,e.end.row=t.end.row):e=t,e.cursor=this.isBackwards()?e.start:e.end,e.desiredColumn=this.$desiredColumn,e},e.prototype.getRangeOfMovements=function(e){var t=this.getCursor();try{e(this);var n=this.getCursor();return s.fromPoints(t,n)}catch(e){return s.fromPoints(t,t)}finally{this.moveCursorToPosition(t)}},e.prototype.toJSON=function(){if(this.rangeCount)var e=this.ranges.map((function(e){var t=e.clone();return t.isBackwards=e.cursor==e.start,t}));else(e=this.getRange()).isBackwards=this.isBackwards();return e},e.prototype.fromJSON=function(e){if(null==e.start){if(this.rangeList&&e.length>1){this.toSingleRange(e[0]);for(var t=e.length;t--;){var n=s.fromPoints(e[t].start,e[t].end);e[t].isBackwards&&(n.cursor=n.start),this.addRange(n,!0)}return}e=e[0]}this.rangeList&&this.toSingleRange(e),this.setSelectionRange(e,e.isBackwards)},e.prototype.isEqual=function(e){if((e.length||this.rangeCount)&&e.length!=this.rangeCount)return!1;if(!e.length||!this.ranges)return this.getRange().isEqual(e);for(var t=this.ranges.length;t--;)if(!this.ranges[t].isEqual(e[t]))return!1;return!0},e}();a.prototype.setSelectionAnchor=a.prototype.setAnchor,a.prototype.getSelectionAnchor=a.prototype.getAnchor,a.prototype.setSelectionRange=a.prototype.setRange,i.implement(a.prototype,r),t.Selection=a})),ace.define("ace/tokenizer",["require","exports","module","ace/lib/report_error"],(function(e,t,n){"use strict";var i=e("./lib/report_error").reportError,o=2e3,r=function(){function e(e){for(var t in this.states=e,this.regExps={},this.matchMappings={},this.states){for(var n=this.states[t],i=[],o=0,r=this.matchMappings[t]={defaultToken:"text"},s="g",a=[],l=0;l1?this.$applyToken:c.token),h>1&&(/\\\d/.test(c.regex)?u=c.regex.replace(/\\([0-9]+)/g,(function(e,t){return"\\"+(parseInt(t,10)+o+1)})):(h=1,u=this.removeCapturingGroups(c.regex)),c.splitRegex||"string"==typeof c.token||a.push(c)),r[o]=l,o+=h,i.push(u),c.onMatch||(c.onMatch=null)}}i.length||(r[0]=0,i.push("$")),a.forEach((function(e){e.splitRegex=this.createSplitterRegexp(e.regex,s)}),this),this.regExps[t]=new RegExp("("+i.join(")|(")+")|($)",s)}}return e.prototype.$setMaxTokenCount=function(e){o=0|e},e.prototype.$applyToken=function(e){var t=this.splitRegex.exec(e).slice(1),n=this.token.apply(this,t);if("string"==typeof n)return[{type:n,value:e}];for(var i=[],o=0,r=n.length;ou){var y=e.substring(u,f-m.length);d.type==p?d.value+=y:(d.type&&c.push(d),d={type:p,value:y})}for(var b=0;bo){for(h>2*e.length&&this.reportError("infinite loop with in ace tokenizer",{startState:t,line:e});u1&&n[0]!==i&&n.unshift("#tmp",i),{tokens:c,state:n.length?n:i}},e}();r.prototype.reportError=i,t.Tokenizer=r})),ace.define("ace/mode/text_highlight_rules",["require","exports","module","ace/lib/deep_copy"],(function(e,t,n){"use strict";var i=e("../lib/deep_copy").deepCopy,o=function(){this.$rules={start:[{token:"empty_line",regex:"^$"},{defaultToken:"text"}]}};(function(){this.addRules=function(e,t){if(t)for(var n in e){for(var i=e[n],o=0;o=this.$rowTokens.length;){if(this.$row+=1,e||(e=this.$session.getLength()),this.$row>=e)return this.$row=e-1,null;this.$rowTokens=this.$session.getTokens(this.$row),this.$tokenIndex=0}return this.$rowTokens[this.$tokenIndex]},e.prototype.getCurrentToken=function(){return this.$rowTokens[this.$tokenIndex]},e.prototype.getCurrentTokenRow=function(){return this.$row},e.prototype.getCurrentTokenColumn=function(){var e=this.$rowTokens,t=this.$tokenIndex,n=e[t].start;if(void 0!==n)return n;for(n=0;t>0;)n+=e[t-=1].value.length;return n},e.prototype.getCurrentTokenPosition=function(){return{row:this.$row,column:this.getCurrentTokenColumn()}},e.prototype.getCurrentTokenRange=function(){var e=this.$rowTokens[this.$tokenIndex],t=this.getCurrentTokenColumn();return new i(this.$row,t,this.$row,t+e.value.length)},e}();t.TokenIterator=o})),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],(function(e,t,n){"use strict";var i,o=e("../../lib/oop"),r=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,a=e("../../lib/lang"),l=["text","paren.rparen","rparen","paren","punctuation.operator"],c=["text","paren.rparen","rparen","paren","punctuation.operator","comment"],u={},h={'"':'"',"'":"'"},d=function(e){var t=-1;if(e.multiSelect&&(t=e.selection.index,u.rangeCount!=e.multiSelect.rangeCount&&(u={rangeCount:e.multiSelect.rangeCount})),u[t])return i=u[t];i=u[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},p=function(e,t,n,i){var o=e.end.row-e.start.row;return{text:n+t+i,selection:[0,e.start.column+1,o,e.end.column+(o?0:1)]}},g=function(e){e=e||{},this.add("braces","insertion",(function(t,n,o,r,s){var l=o.getCursorPosition(),c=r.doc.getLine(l.row);if("{"==s){d(o);var u=o.getSelectionRange(),h=r.doc.getTextRange(u);if(""!==h&&"{"!==h&&o.getWrapBehavioursEnabled())return p(u,h,"{","}");if(g.isSaneInsertion(o,r))return/[\]\}\)]/.test(c[l.column])||o.inMultiSelectMode||e.braces?(g.recordAutoInsert(o,r,"}"),{text:"{}",selection:[1,1]}):(g.recordMaybeInsert(o,r,"{"),{text:"{",selection:[1,1]})}else if("}"==s){if(d(o),"}"==c.substring(l.column,l.column+1)&&null!==r.$findOpeningBracket("}",{column:l.column+1,row:l.row})&&g.isAutoInsertedClosing(l,c,s))return g.popAutoInsertedClosing(),{text:"",selection:[1,1]}}else{if("\n"==s||"\r\n"==s){d(o);var m="";if(g.isMaybeInsertedClosing(l,c)&&(m=a.stringRepeat("}",i.maybeInsertedBrackets),g.clearMaybeInsertedClosing()),"}"===c.substring(l.column,l.column+1)){var f=r.findMatchingBracket({row:l.row,column:l.column+1},"}");if(!f)return null;var y=this.$getIndent(r.getLine(f.row))}else{if(!m)return void g.clearMaybeInsertedClosing();y=this.$getIndent(c)}var b=y+r.getTabString();return{text:"\n"+b+"\n"+y+m,selection:[1,b.length,1,b.length]}}g.clearMaybeInsertedClosing()}})),this.add("braces","deletion",(function(e,t,n,o,r){var s=o.doc.getTextRange(r);if(!r.isMultiLine()&&"{"==s){if(d(n),"}"==o.doc.getLine(r.start.row).substring(r.end.column,r.end.column+1))return r.end.column++,r;i.maybeInsertedBrackets--}})),this.add("parens","insertion",(function(e,t,n,i,o){if("("==o){d(n);var r=n.getSelectionRange(),s=i.doc.getTextRange(r);if(""!==s&&n.getWrapBehavioursEnabled())return p(r,s,"(",")");if(g.isSaneInsertion(n,i))return g.recordAutoInsert(n,i,")"),{text:"()",selection:[1,1]}}else if(")"==o){d(n);var a=n.getCursorPosition(),l=i.doc.getLine(a.row);if(")"==l.substring(a.column,a.column+1)&&null!==i.$findOpeningBracket(")",{column:a.column+1,row:a.row})&&g.isAutoInsertedClosing(a,l,o))return g.popAutoInsertedClosing(),{text:"",selection:[1,1]}}})),this.add("parens","deletion",(function(e,t,n,i,o){var r=i.doc.getTextRange(o);if(!o.isMultiLine()&&"("==r&&(d(n),")"==i.doc.getLine(o.start.row).substring(o.start.column+1,o.start.column+2)))return o.end.column++,o})),this.add("brackets","insertion",(function(e,t,n,i,o){if("["==o){d(n);var r=n.getSelectionRange(),s=i.doc.getTextRange(r);if(""!==s&&n.getWrapBehavioursEnabled())return p(r,s,"[","]");if(g.isSaneInsertion(n,i))return g.recordAutoInsert(n,i,"]"),{text:"[]",selection:[1,1]}}else if("]"==o){d(n);var a=n.getCursorPosition(),l=i.doc.getLine(a.row);if("]"==l.substring(a.column,a.column+1)&&null!==i.$findOpeningBracket("]",{column:a.column+1,row:a.row})&&g.isAutoInsertedClosing(a,l,o))return g.popAutoInsertedClosing(),{text:"",selection:[1,1]}}})),this.add("brackets","deletion",(function(e,t,n,i,o){var r=i.doc.getTextRange(o);if(!o.isMultiLine()&&"["==r&&(d(n),"]"==i.doc.getLine(o.start.row).substring(o.start.column+1,o.start.column+2)))return o.end.column++,o})),this.add("string_dquotes","insertion",(function(e,t,n,i,o){var r=i.$mode.$quotes||h;if(1==o.length&&r[o]){if(this.lineCommentStart&&-1!=this.lineCommentStart.indexOf(o))return;d(n);var s=o,a=n.getSelectionRange(),l=i.doc.getTextRange(a);if(!(""===l||1==l.length&&r[l])&&n.getWrapBehavioursEnabled())return p(a,l,s,s);if(!l){var c=n.getCursorPosition(),u=i.doc.getLine(c.row),g=u.substring(c.column-1,c.column),m=u.substring(c.column,c.column+1),f=i.getTokenAt(c.row,c.column),y=i.getTokenAt(c.row,c.column+1);if("\\"==g&&f&&/escape/.test(f.type))return null;var b,v=f&&/string|escape/.test(f.type),w=!y||/string|escape/.test(y.type);if(m==s)(b=v!==w)&&/string\.end/.test(y.type)&&(b=!1);else{if(v&&!w)return null;if(v&&w)return null;var A=i.$mode.tokenRe;A.lastIndex=0;var C=A.test(g);A.lastIndex=0;var k=A.test(m),x=i.$mode.$pairQuotesAfter;if(!(x&&x[s]&&x[s].test(g))&&C||k)return null;if(m&&!/[\s;,.})\]\\]/.test(m))return null;var S=u[c.column-2];if(g==s&&(S==s||A.test(S)))return null;b=!0}return{text:b?s+s:"",selection:[1,1]}}}})),this.add("string_dquotes","deletion",(function(e,t,n,i,o){var r=i.$mode.$quotes||h,s=i.doc.getTextRange(o);if(!o.isMultiLine()&&r.hasOwnProperty(s)&&(d(n),i.doc.getLine(o.start.row).substring(o.start.column+1,o.start.column+2)==s))return o.end.column++,o})),!1!==e.closeDocComment&&this.add("doc comment end","insertion",(function(e,t,n,i,o){if("doc-start"===e&&("\n"===o||"\r\n"===o)&&n.selection.isEmpty()){var r=n.getCursorPosition(),s=i.doc.getLine(r.row),a=i.doc.getLine(r.row+1),l=this.$getIndent(s);if(/\s*\*/.test(a))return/^\s*\*/.test(s)?{text:o+l+"* ",selection:[1,3+l.length,1,3+l.length]}:{text:o+l+" * ",selection:[1,3+l.length,1,3+l.length]};if(/\/\*\*/.test(s.substring(0,r.column)))return{text:o+l+" * "+o+" "+l+"*/",selection:[1,4+l.length,1,4+l.length]}}}))};g.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),i=new s(t,n.row,n.column);if(!this.$matchTokenType(i.getCurrentToken()||"text",l)){if(/[)}\]]/.test(e.session.getLine(n.row)[n.column]))return!0;var o=new s(t,n.row,n.column+1);if(!this.$matchTokenType(o.getCurrentToken()||"text",l))return!1}return i.stepForward(),i.getCurrentTokenRow()!==n.row||this.$matchTokenType(i.getCurrentToken()||"text",c)},g.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},g.recordAutoInsert=function(e,t,n){var o=e.getCursorPosition(),r=t.doc.getLine(o.row);this.isAutoInsertedClosing(o,r,i.autoInsertedLineEnd[0])||(i.autoInsertedBrackets=0),i.autoInsertedRow=o.row,i.autoInsertedLineEnd=n+r.substr(o.column),i.autoInsertedBrackets++},g.recordMaybeInsert=function(e,t,n){var o=e.getCursorPosition(),r=t.doc.getLine(o.row);this.isMaybeInsertedClosing(o,r)||(i.maybeInsertedBrackets=0),i.maybeInsertedRow=o.row,i.maybeInsertedLineStart=r.substr(0,o.column)+n,i.maybeInsertedLineEnd=r.substr(o.column),i.maybeInsertedBrackets++},g.isAutoInsertedClosing=function(e,t,n){return i.autoInsertedBrackets>0&&e.row===i.autoInsertedRow&&n===i.autoInsertedLineEnd[0]&&t.substr(e.column)===i.autoInsertedLineEnd},g.isMaybeInsertedClosing=function(e,t){return i.maybeInsertedBrackets>0&&e.row===i.maybeInsertedRow&&t.substr(e.column)===i.maybeInsertedLineEnd&&t.substr(0,e.column)==i.maybeInsertedLineStart},g.popAutoInsertedClosing=function(){i.autoInsertedLineEnd=i.autoInsertedLineEnd.substr(1),i.autoInsertedBrackets--},g.clearMaybeInsertedClosing=function(){i&&(i.maybeInsertedBrackets=0,i.maybeInsertedRow=-1)},o.inherits(g,r),t.CstyleBehaviour=g})),ace.define("ace/unicode",["require","exports","module"],(function(e,t,n){"use strict";for(var i=[48,9,8,25,5,0,2,25,48,0,11,0,5,0,6,22,2,30,2,457,5,11,15,4,8,0,2,0,18,116,2,1,3,3,9,0,2,2,2,0,2,19,2,82,2,138,2,4,3,155,12,37,3,0,8,38,10,44,2,0,2,1,2,1,2,0,9,26,6,2,30,10,7,61,2,9,5,101,2,7,3,9,2,18,3,0,17,58,3,100,15,53,5,0,6,45,211,57,3,18,2,5,3,11,3,9,2,1,7,6,2,2,2,7,3,1,3,21,2,6,2,0,4,3,3,8,3,1,3,3,9,0,5,1,2,4,3,11,16,2,2,5,5,1,3,21,2,6,2,1,2,1,2,1,3,0,2,4,5,1,3,2,4,0,8,3,2,0,8,15,12,2,2,8,2,2,2,21,2,6,2,1,2,4,3,9,2,2,2,2,3,0,16,3,3,9,18,2,2,7,3,1,3,21,2,6,2,1,2,4,3,8,3,1,3,2,9,1,5,1,2,4,3,9,2,0,17,1,2,5,4,2,2,3,4,1,2,0,2,1,4,1,4,2,4,11,5,4,4,2,2,3,3,0,7,0,15,9,18,2,2,7,2,2,2,22,2,9,2,4,4,7,2,2,2,3,8,1,2,1,7,3,3,9,19,1,2,7,2,2,2,22,2,9,2,4,3,8,2,2,2,3,8,1,8,0,2,3,3,9,19,1,2,7,2,2,2,22,2,15,4,7,2,2,2,3,10,0,9,3,3,9,11,5,3,1,2,17,4,23,2,8,2,0,3,6,4,0,5,5,2,0,2,7,19,1,14,57,6,14,2,9,40,1,2,0,3,1,2,0,3,0,7,3,2,6,2,2,2,0,2,0,3,1,2,12,2,2,3,4,2,0,2,5,3,9,3,1,35,0,24,1,7,9,12,0,2,0,2,0,5,9,2,35,5,19,2,5,5,7,2,35,10,0,58,73,7,77,3,37,11,42,2,0,4,328,2,3,3,6,2,0,2,3,3,40,2,3,3,32,2,3,3,6,2,0,2,3,3,14,2,56,2,3,3,66,5,0,33,15,17,84,13,619,3,16,2,25,6,74,22,12,2,6,12,20,12,19,13,12,2,2,2,1,13,51,3,29,4,0,5,1,3,9,34,2,3,9,7,87,9,42,6,69,11,28,4,11,5,11,11,39,3,4,12,43,5,25,7,10,38,27,5,62,2,28,3,10,7,9,14,0,89,75,5,9,18,8,13,42,4,11,71,55,9,9,4,48,83,2,2,30,14,230,23,280,3,5,3,37,3,5,3,7,2,0,2,0,2,0,2,30,3,52,2,6,2,0,4,2,2,6,4,3,3,5,5,12,6,2,2,6,67,1,20,0,29,0,14,0,17,4,60,12,5,0,4,11,18,0,5,0,3,9,2,0,4,4,7,0,2,0,2,0,2,3,2,10,3,3,6,4,5,0,53,1,2684,46,2,46,2,132,7,6,15,37,11,53,10,0,17,22,10,6,2,6,2,6,2,6,2,6,2,6,2,6,2,6,2,31,48,0,470,1,36,5,2,4,6,1,5,85,3,1,3,2,2,89,2,3,6,40,4,93,18,23,57,15,513,6581,75,20939,53,1164,68,45,3,268,4,27,21,31,3,13,13,1,2,24,9,69,11,1,38,8,3,102,3,1,111,44,25,51,13,68,12,9,7,23,4,0,5,45,3,35,13,28,4,64,15,10,39,54,10,13,3,9,7,22,4,1,5,66,25,2,227,42,2,1,3,9,7,11171,13,22,5,48,8453,301,3,61,3,105,39,6,13,4,6,11,2,12,2,4,2,0,2,1,2,1,2,107,34,362,19,63,3,53,41,11,5,15,17,6,13,1,25,2,33,4,2,134,20,9,8,25,5,0,2,25,12,88,4,5,3,5,3,5,3,2],o=0,r=[],s=0;s2?i%c!=c-1:i%c==0})}else{if(!this.blockComment)return!1;var p=this.blockComment.start,g=this.blockComment.end,m=new RegExp("^(\\s*)(?:"+l.escapeRegExp(p)+")"),f=new RegExp("(?:"+l.escapeRegExp(g)+")\\s*$"),y=function(e,t){v(e,t)||r&&!/\S/.test(e)||(o.insertInLine({row:t,column:e.length},g),o.insertInLine({row:t,column:a},p))},b=function(e,t){var n;(n=e.match(f))&&o.removeInLine(t,e.length-n[0].length,e.length),(n=e.match(m))&&o.removeInLine(t,n[1].length,n[0].length)},v=function(e,n){if(m.test(e))return!0;for(var i=t.getTokens(n),o=0;oe.length&&(A=e.length)})),a==1/0&&(a=A,r=!1,s=!1),u&&a%c!=0&&(a=Math.floor(a/c)*c),w(s?b:y)},this.toggleBlockComment=function(e,t,n,i){var o=this.blockComment;if(o){!o.start&&o[0]&&(o=o[0]);var r,s,a=(m=new c(t,i.row,i.column)).getCurrentToken(),l=(t.selection,t.selection.toOrientedRange());if(a&&/comment/.test(a.type)){for(var h,d;a&&/comment/.test(a.type);){if(-1!=(f=a.value.indexOf(o.start))){var p=m.getCurrentTokenRow(),g=m.getCurrentTokenColumn()+f;h=new u(p,g,p,g+o.start.length);break}a=m.stepBackward()}var m;for(a=(m=new c(t,i.row,i.column)).getCurrentToken();a&&/comment/.test(a.type);){var f;if(-1!=(f=a.value.indexOf(o.end))){p=m.getCurrentTokenRow(),g=m.getCurrentTokenColumn()+f,d=new u(p,g,p,g+o.end.length);break}a=m.stepForward()}d&&t.remove(d),h&&(t.remove(h),r=h.start.row,s=-o.start.length)}else s=o.start.length,r=n.start.row,t.insert(n.end,o.end),t.insert(n.start,o.start);l.start.row==r&&(l.start.column+=s),l.end.row==r&&(l.end.column+=s),t.selection.fromOrientedRange(l)}},this.getNextLineIndent=function(e,t,n){return this.$getIndent(t)},this.checkOutdent=function(e,t,n){return!1},this.autoOutdent=function(e,t,n){},this.$getIndent=function(e){return e.match(/^\s*/)[0]},this.createWorker=function(e){return null},this.createModeDelegates=function(e){for(var t in this.$embeds=[],this.$modes={},e)if(e[t]){var n=e[t],o=n.prototype.$id,r=i.$modes[o];r||(i.$modes[o]=r=new n),i.$modes[t]||(i.$modes[t]=r),this.$embeds.push(t),this.$modes[t]=r}var s=["toggleBlockComment","toggleCommentLines","getNextLineIndent","checkOutdent","autoOutdent","transformAction","getCompletions"];for(t=0;tthis.row)){var t=function(e,t,n){var i="insert"==e.action,o=(i?1:-1)*(e.end.row-e.start.row),r=(i?1:-1)*(e.end.column-e.start.column),a=e.start,l=i?a:e.end;return s(t,a,n)?{row:t.row,column:t.column}:s(l,t,!n)?{row:t.row+o,column:t.column+(t.row==l.row?r:0)}:{row:a.row,column:a.column}}(e,{row:this.row,column:this.column},this.$insertRight);this.setPosition(t.row,t.column,!0)}},e.prototype.setPosition=function(e,t,n){var i;if(i=n?{row:e,column:t}:this.$clipPositionToDocument(e,t),this.row!=i.row||this.column!=i.column){var o={row:this.row,column:this.column};this.row=i.row,this.column=i.column,this._signal("change",{old:o,value:i})}},e.prototype.detach=function(){this.document.off("change",this.$onChange)},e.prototype.attach=function(e){this.document=e||this.document,this.document.on("change",this.$onChange)},e.prototype.$clipPositionToDocument=function(e,t){var n={};return e>=this.document.getLength()?(n.row=Math.max(0,this.document.getLength()-1),n.column=this.document.getLine(n.row).length):e<0?(n.row=0,n.column=0):(n.row=e,n.column=Math.min(this.document.getLine(n.row).length,Math.max(0,t))),t<0&&(n.column=0),n},e}();function s(e,t,n){var i=n?e.column<=t.column:e.column=n&&(e=n-1,t=void 0);var i=this.getLine(e);return null==t&&(t=i.length),{row:e,column:t=Math.min(Math.max(t,0),i.length)}},e.prototype.clonePos=function(e){return{row:e.row,column:e.column}},e.prototype.pos=function(e,t){return{row:e,column:t}},e.prototype.$clipPosition=function(e){var t=this.getLength();return e.row>=t?(e.row=Math.max(0,t-1),e.column=this.getLine(t-1).length):(e.row=Math.max(0,e.row),e.column=Math.min(Math.max(e.column,0),this.getLine(e.row).length)),e},e.prototype.insertFullLines=function(e,t){var n=0;(e=Math.min(Math.max(e,0),this.getLength()))0,i=t=0&&this.applyDelta({start:this.pos(e,this.getLine(e).length),end:this.pos(e+1,0),action:"remove",lines:["",""]})},e.prototype.replace=function(e,t){return e instanceof s||(e=s.fromPoints(e.start,e.end)),0===t.length&&e.isEmpty()?e.start:t==this.getTextRange(e)?e.end:(this.remove(e),t?this.insert(e.start,t):e.start)},e.prototype.applyDeltas=function(e){for(var t=0;t=0;t--)this.revertDelta(e[t])},e.prototype.applyDelta=function(e,t){var n="insert"==e.action;(n?e.lines.length<=1&&!e.lines[0]:!s.comparePoints(e.start,e.end))||(n&&e.lines.length>2e4?this.$splitAndapplyLargeDelta(e,2e4):(o(this.$lines,e,t),this._signal("change",e)))},e.prototype.$safeApplyDelta=function(e){var t=this.$lines.length;("remove"==e.action&&e.start.row20){n.running=setTimeout(n.$worker,20);break}}n.currentLine=t,-1==i&&(i=t),r<=i&&n.fireUpdateEvent(r,i)}}}return e.prototype.setTokenizer=function(e){this.tokenizer=e,this.lines=[],this.states=[],this.start(0)},e.prototype.setDocument=function(e){this.doc=e,this.lines=[],this.states=[],this.stop()},e.prototype.fireUpdateEvent=function(e,t){var n={first:e,last:t};this._signal("update",{data:n})},e.prototype.start=function(e){this.currentLine=Math.min(e||0,this.currentLine,this.doc.getLength()),this.lines.splice(this.currentLine,this.lines.length),this.states.splice(this.currentLine,this.states.length),this.stop(),this.running=setTimeout(this.$worker,700)},e.prototype.scheduleStart=function(){this.running||(this.running=setTimeout(this.$worker,700))},e.prototype.$updateOnChange=function(e){var t=e.start.row,n=e.end.row-t;if(0===n)this.lines[t]=null;else if("remove"==e.action)this.lines.splice(t,n+1,null),this.states.splice(t,n+1,null);else{var i=Array(n+1);i.unshift(t,1),this.lines.splice.apply(this.lines,i),this.states.splice.apply(this.states,i)}this.currentLine=Math.min(t,this.currentLine,this.doc.getLength()),this.stop()},e.prototype.stop=function(){this.running&&clearTimeout(this.running),this.running=!1},e.prototype.getTokens=function(e){return this.lines[e]||this.$tokenizeRow(e)},e.prototype.getState=function(e){return this.currentLine==e&&this.$tokenizeRow(e),this.states[e]||"start"},e.prototype.$tokenizeRow=function(e){var t=this.doc.getLine(e),n=this.states[e-1],i=this.tokenizer.getLineTokens(t,n,e);return this.states[e]+""!=i.state+""?(this.states[e]=i.state,this.lines[e+1]=null,this.currentLine>e+1&&(this.currentLine=e+1)):this.currentLine==e&&(this.currentLine=e+1),this.lines[e]=i.tokens},e.prototype.cleanup=function(){this.running=!1,this.lines=[],this.states=[],this.currentLine=0,this.removeAllListeners()},e}();i.implement(r.prototype,o),t.BackgroundTokenizer=r})),ace.define("ace/search_highlight",["require","exports","module","ace/lib/lang","ace/range"],(function(e,t,n){"use strict";var i=e("./lib/lang"),o=e("./range").Range,r=function(){function e(e,t,n){void 0===n&&(n="text"),this.setRegexp(e),this.clazz=t,this.type=n}return e.prototype.setRegexp=function(e){this.regExp+""!=e+""&&(this.regExp=e,this.cache=[])},e.prototype.update=function(e,t,n,r){if(this.regExp)for(var s=r.firstRow,a=r.lastRow,l={},c=s;c<=a;c++){var u=this.cache[c];null==u&&((u=i.getMatchOffsets(n.getLine(c),this.regExp)).length>this.MAX_RANGES&&(u=u.slice(0,this.MAX_RANGES)),u=u.map((function(e){return new o(c,e.offset,c,e.offset+e.length)})),this.cache[c]=u.length?u:"");for(var h=u.length;h--;){var d=u[h].toScreenRange(n),p=d.toString();l[p]||(l[p]=!0,t.drawSingleLineMarker(e,d,this.clazz,r))}}},e}();r.prototype.MAX_RANGES=500,t.SearchHighlight=r})),ace.define("ace/undomanager",["require","exports","module","ace/range"],(function(e,t,n){"use strict";var i=function(){function e(){this.$maxRev=0,this.$fromUndo=!1,this.$undoDepth=1/0,this.reset()}return e.prototype.addSession=function(e){this.$session=e},e.prototype.add=function(e,t,n){if(!this.$fromUndo&&e!=this.$lastDelta){if(this.$keepRedoStack||(this.$redoStack.length=0),!1===t||!this.lastDeltas){this.lastDeltas=[];var i=this.$undoStack.length;i>this.$undoDepth-1&&this.$undoStack.splice(0,i-this.$undoDepth+1),this.$undoStack.push(this.lastDeltas),e.id=this.$rev=++this.$maxRev}"remove"!=e.action&&"insert"!=e.action||(this.$lastDelta=e),this.lastDeltas.push(e)}},e.prototype.addSelection=function(e,t){this.selections.push({value:e,rev:t||this.$rev})},e.prototype.startNewGroup=function(){return this.lastDeltas=null,this.$rev},e.prototype.markIgnored=function(e,t){null==t&&(t=this.$rev+1);for(var n=this.$undoStack,i=n.length;i--;){var o=n[i][0];if(o.id<=e)break;o.id0},e.prototype.canRedo=function(){return this.$redoStack.length>0},e.prototype.bookmark=function(e){null==e&&(e=this.$rev),this.mark=e},e.prototype.isAtBookmark=function(){return this.$rev===this.mark},e.prototype.toJSON=function(){return{$redoStack:this.$redoStack,$undoStack:this.$undoStack}},e.prototype.fromJSON=function(e){this.reset(),this.$undoStack=e.$undoStack,this.$redoStack=e.$redoStack},e.prototype.$prettyPrint=function(e){return e?a(e):a(this.$undoStack)+"\n---\n"+a(this.$redoStack)},e}();i.prototype.hasUndo=i.prototype.canUndo,i.prototype.hasRedo=i.prototype.canRedo,i.prototype.isClean=i.prototype.isAtBookmark,i.prototype.markClean=i.prototype.bookmark;var o=e("./range").Range,r=o.comparePoints;function s(e){return{row:e.row,column:e.column}}function a(e){if(e=e||this,Array.isArray(e))return e.map(a).join("\n");var t="";return e.action?(t="insert"==e.action?"+":"-",t+="["+e.lines+"]"):e.value&&(t=Array.isArray(e.value)?e.value.map(l).join("\n"):l(e.value)),e.start&&(t+=l(e)),(e.id||e.rev)&&(t+="\t("+(e.id||e.rev)+")"),t}function l(e){return e.start.row+":"+e.start.column+"=>"+e.end.row+":"+e.end.column}function c(e,t){var n="insert"==e.action,i="insert"==t.action;if(n&&i)if(r(t.start,e.end)>=0)d(t,e,-1);else{if(!(r(t.start,e.start)<=0))return null;d(e,t,1)}else if(n&&!i)if(r(t.start,e.end)>=0)d(t,e,-1);else{if(!(r(t.end,e.start)<=0))return null;d(e,t,-1)}else if(!n&&i)if(r(t.start,e.start)>=0)d(t,e,1);else{if(!(r(t.start,e.start)<=0))return null;d(e,t,1)}else if(!n&&!i)if(r(t.start,e.start)>=0)d(t,e,1);else{if(!(r(t.end,e.start)<=0))return null;d(e,t,-1)}return[t,e]}function u(e,t){for(var n=e.length;n--;)for(var i=0;i=0?d(e,t,-1):(r(e.start,t.start)<=0||d(e,o.fromPoints(t.start,e.start),-1),d(t,e,1));else if(!n&&i)r(t.start,e.end)>=0?d(t,e,-1):(r(t.start,e.start)<=0||d(t,o.fromPoints(e.start,t.start),-1),d(e,t,1));else if(!n&&!i)if(r(t.start,e.end)>=0)d(t,e,-1);else{var s,a;if(!(r(t.end,e.start)<=0))return r(e.start,t.start)<0&&(s=e,e=g(e,t.start)),r(e.end,t.end)>0&&(a=g(e,t.end)),p(t.end,e.start,e.end,-1),a&&!s&&(e.lines=a.lines,e.start=a.start,e.end=a.end,a=e),[t,s,a].filter(Boolean);d(e,t,-1)}return[t,e]}function d(e,t,n){p(e.start,t.start,t.end,n),p(e.end,t.start,t.end,n)}function p(e,t,n,i){e.row==(1==i?t:n).row&&(e.column+=i*(n.column-t.column)),e.row+=i*(n.row-t.row)}function g(e,t){var n=e.lines,i=e.end;e.end=s(t);var o=e.end.row-e.start.row,r=n.splice(o,n.length),a=o?t.column:t.column-e.start.column;return n.push(r[0].substring(0,a)),r[0]=r[0].substr(a),{start:s(t),end:i,lines:r,action:e.action}}function m(e,t){t=function(e){return{start:s(e.start),end:s(e.end),action:e.action,lines:e.lines.slice()}}(t);for(var n=e.length;n--;){for(var i=e[n],o=0;othis.endRow)throw new Error("Can't add a fold to this FoldLine as it has no connection");this.folds.push(e),this.folds.sort((function(e,t){return-e.range.compareEnd(t.start.row,t.start.column)})),this.range.compareEnd(e.start.row,e.start.column)>0?(this.end.row=e.end.row,this.end.column=e.end.column):this.range.compareStart(e.end.row,e.end.column)<0&&(this.start.row=e.start.row,this.start.column=e.start.column)}else if(e.start.row==this.end.row)this.folds.push(e),this.end.row=e.end.row,this.end.column=e.end.column;else{if(e.end.row!=this.start.row)throw new Error("Trying to add fold to FoldRow that doesn't have a matching row");this.folds.unshift(e),this.start.row=e.start.row,this.start.column=e.start.column}e.foldLine=this},e.prototype.containsRow=function(e){return e>=this.start.row&&e<=this.end.row},e.prototype.walk=function(e,t,n){var i,o,r=0,s=this.folds,a=!0;null==t&&(t=this.end.row,n=this.end.column);for(var l=0;l0)){var l=i(e,s.start);return 0===a?t&&0!==l?-r-2:r:l>0||0===l&&!t?r:-r-1}}return-r-1},e.prototype.add=function(e){var t=!e.isEmpty(),n=this.pointIndex(e.start,t);n<0&&(n=-n-1);var i=this.pointIndex(e.end,t,n);return i<0?i=-i-1:i++,this.ranges.splice(n,i-n,e)},e.prototype.addList=function(e){for(var t=[],n=e.length;n--;)t.push.apply(t,this.add(e[n]));return t},e.prototype.substractPoint=function(e){var t=this.pointIndex(e);if(t>=0)return this.ranges.splice(t,1)},e.prototype.merge=function(){for(var e,t=[],n=this.ranges,o=(n=n.sort((function(e,t){return i(e.start,t.start)})))[0],r=1;r=0},e.prototype.containsPoint=function(e){return this.pointIndex(e)>=0},e.prototype.rangeAtPoint=function(e){var t=this.pointIndex(e);if(t>=0)return this.ranges[t]},e.prototype.clipRows=function(e,t){var n=this.ranges;if(n[0].start.row>t||n[n.length-1].start.row=i);s++);if("insert"==e.action){for(var l=o-i,c=-t.column+n.column;si);s++)if(u.start.row==i&&u.start.column>=t.column&&(u.start.column==t.column&&this.$bias<=0||(u.start.column+=c,u.start.row+=l)),u.end.row==i&&u.end.column>=t.column){if(u.end.column==t.column&&this.$bias<0)continue;u.end.column==t.column&&c>0&&su.start.column&&u.end.column==r[s+1].start.column&&(u.end.column-=c),u.end.column+=c,u.end.row+=l}}else for(l=i-o,c=t.column-n.column;so);s++)u.end.rowt.column)&&(u.end.column=t.column,u.end.row=t.row):(u.end.column+=c,u.end.row+=l):u.end.row>o&&(u.end.row+=l),u.start.rowt.column)&&(u.start.column=t.column,u.start.row=t.row):(u.start.column+=c,u.start.row+=l):u.start.row>o&&(u.start.row+=l);if(0!=l&&s=e)return o;if(o.end.row>e)return null}return null},this.getNextFoldLine=function(e,t){var n=this.$foldData,i=0;for(t&&(i=n.indexOf(t)),-1==i&&(i=0);i=e)return o}return null},this.getFoldedRowCount=function(e,t){for(var n=this.$foldData,i=t-e+1,o=0;o=t){a=e?i-=t-a:i=0);break}s>=e&&(i-=a>=e?s-a:s-e+1)}return i},this.$addFoldLine=function(e){return this.$foldData.push(e),this.$foldData.sort((function(e,t){return e.start.row-t.start.row})),e},this.addFold=function(e,t){var n,i=this.$foldData,s=!1;e instanceof r?n=e:(n=new r(t,e)).collapseChildren=t.collapseChildren,this.$clipRangeToDocument(n.range);var a=n.start.row,l=n.start.column,c=n.end.row,u=n.end.column,h=this.getFoldAt(a,l,1),d=this.getFoldAt(c,u,-1);if(h&&d==h)return h.addSubFold(n);h&&!h.range.isStart(a,l)&&this.removeFold(h),d&&!d.range.isEnd(c,u)&&this.removeFold(d);var p=this.getFoldsInRange(n.range);p.length>0&&(this.removeFolds(p),n.collapseChildren||p.forEach((function(e){n.addSubFold(e)})));for(var g=0;g0&&this.foldAll(e.start.row+1,e.end.row,e.collapseChildren-1),e.subFolds=[]},this.expandFolds=function(e){e.forEach((function(e){this.expandFold(e)}),this)},this.unfold=function(e,t){var n,o;if(null==e)n=new i(0,0,this.getLength(),0),null==t&&(t=!0);else if("number"==typeof e)n=new i(e,0,e,this.getLine(e).length);else if("row"in e)n=i.fromPoints(e,e);else{if(Array.isArray(e))return o=[],e.forEach((function(e){o=o.concat(this.unfold(e))}),this),o;n=e}for(var r=o=this.getFoldsInRangeList(n);1==o.length&&i.comparePoints(o[0].start,n.start)<0&&i.comparePoints(o[0].end,n.end)>0;)this.expandFolds(o),o=this.getFoldsInRangeList(n);if(0!=t?this.removeFolds(o):this.expandFolds(o),r.length)return r},this.isRowFolded=function(e,t){return!!this.getFoldLine(e,t)},this.getRowFoldEnd=function(e,t){var n=this.getFoldLine(e,t);return n?n.end.row:e},this.getRowFoldStart=function(e,t){var n=this.getFoldLine(e,t);return n?n.start.row:e},this.getFoldDisplayLine=function(e,t,n,i,o){null==i&&(i=e.start.row),null==o&&(o=0),null==t&&(t=e.end.row),null==n&&(n=this.getLine(t).length);var r=this.doc,s="";return e.walk((function(e,t,n,a){if(!(tu)break}while(r&&l.test(r.type)&&!/^comment.start/.test(r.type));r=o.stepBackward()}else r=o.getCurrentToken();return c.end.row=o.getCurrentTokenRow(),c.end.column=o.getCurrentTokenColumn(),/^comment.end/.test(r.type)||(c.end.column+=r.value.length-2),c}},this.foldAll=function(e,t,n,i){null==n&&(n=1e5);var o=this.foldWidgets;if(o){t=t||this.getLength();for(var r=e=e||0;r=e&&(r=s.end.row,s.collapseChildren=n,this.addFold("...",s))}}},this.foldToLevel=function(e){for(this.foldAll();e-- >0;)this.unfold(null,!1)},this.foldAllComments=function(){var e=this;this.foldAll(null,null,null,(function(t){for(var n=e.getTokens(t),i=0;i=0;){var r=n[o];if(null==r&&(r=n[o]=this.getFoldWidget(o)),"start"==r){var s=this.getFoldWidgetRange(o);if(i||(i=s),s&&s.end.row>=e)break}o--}return{range:-1!==o&&s,firstRange:i}},this.onFoldWidgetClick=function(e,t){t instanceof a&&(t=t.domEvent);var n={children:t.shiftKey,all:t.ctrlKey||t.metaKey,siblings:t.altKey};if(!this.$toggleFoldWidget(e,n)){var i=t.target||t.srcElement;i&&/ace_fold-widget/.test(i.className)&&(i.className+=" ace_invalid")}},this.$toggleFoldWidget=function(e,t){if(this.getFoldWidget){var n=this.getFoldWidget(e),i=this.getLine(e),o="end"===n?-1:1,r=this.getFoldAt(e,-1===o?0:i.length,o);if(r)return t.children||t.all?this.removeFold(r):this.expandFold(r),r;var s=this.getFoldWidgetRange(e,!0);if(s&&!s.isMultiLine()&&(r=this.getFoldAt(s.start.row,s.start.column,1))&&s.isEqual(r.range))return this.removeFold(r),r;if(t.siblings){var a=this.getParentFoldRangeData(e);if(a.range)var l=a.range.start.row+1,c=a.range.end.row;this.foldAll(l,c,t.all?1e4:0)}else t.children?(c=s?s.end.row:this.getLength(),this.foldAll(e+1,c,t.all?1e4:0)):s&&(t.all&&(s.collapseChildren=1e4),this.addFold("...",s));return s}},this.toggleFoldWidget=function(e){var t=this.selection.getCursor().row;t=this.getRowFoldStart(t);var n=this.$toggleFoldWidget(t,{});if(!n){var i=this.getParentFoldRangeData(t,!0);if(n=i.range||i.firstRange){t=n.start.row;var o=this.getFoldAt(t,this.getLine(t).length,1);o?this.removeFold(o):this.addFold("...",n)}}},this.updateFoldWidgets=function(e){var t=e.start.row,n=e.end.row-t;if(0===n)this.foldWidgets[t]=null;else if("remove"==e.action)this.foldWidgets.splice(t,n+1,null);else{var i=Array(n+1);i.unshift(t,1),this.foldWidgets.splice.apply(this.foldWidgets,i)}},this.tokenizerUpdateFoldWidgets=function(e){var t=e.data;t.first!=t.last&&this.foldWidgets.length>t.first&&this.foldWidgets.splice(t.first,this.foldWidgets.length)}}})),ace.define("ace/edit_session/bracket_match",["require","exports","module","ace/token_iterator","ace/range"],(function(e,t,n){"use strict";var i=e("../token_iterator").TokenIterator,o=e("../range").Range;t.BracketMatch=function(){this.findMatchingBracket=function(e,t){if(0==e.column)return null;var n=t||this.getLine(e.row).charAt(e.column-1);if(""==n)return null;var i=n.match(/([\(\[\{])|([\)\]\}])/);return i?i[1]?this.$findClosingBracket(i[1],e):this.$findOpeningBracket(i[2],e):null},this.getBracketRange=function(e){var t,n=this.getLine(e.row),i=!0,r=n.charAt(e.column-1),s=r&&r.match(/([\(\[\{])|([\)\]\}])/);if(s||(r=n.charAt(e.column),e={row:e.row,column:e.column+1},s=r&&r.match(/([\(\[\{])|([\)\]\}])/),i=!1),!s)return null;if(s[1]){if(!(a=this.$findClosingBracket(s[1],e)))return null;t=o.fromPoints(e,a),i||(t.end.column++,t.start.column--),t.cursor=t.end}else{var a;if(!(a=this.$findOpeningBracket(s[2],e)))return null;t=o.fromPoints(a,e),i||(t.start.column++,t.end.column--),t.cursor=t.start}return t},this.getMatchingBracketRanges=function(e,t){var n=this.getLine(e.row),i=/([\(\[\{])|([\)\]\}])/,r=!t&&n.charAt(e.column-1),s=r&&r.match(i);if(s||(r=(void 0===t||t)&&n.charAt(e.column),e={row:e.row,column:e.column+1},s=r&&r.match(i)),!s)return null;var a=new o(e.row,e.column-1,e.row,e.column),l=s[1]?this.$findClosingBracket(s[1],e):this.$findOpeningBracket(s[2],e);return l?[a,new o(l.row,l.column,l.row,l.column+1)]:[a]},this.$brackets={")":"(","(":")","]":"[","[":"]","{":"}","}":"{","<":">",">":"<"},this.$findOpeningBracket=function(e,t,n){var o=this.$brackets[e],r=1,s=new i(this,t.row,t.column),a=s.getCurrentToken();if(a||(a=s.stepForward()),a){n||(n=new RegExp("(\\.?"+a.type.replace(".","\\.").replace("rparen",".paren").replace(/\b(?:end)\b/,"(?:start|begin|end)").replace(/-close\b/,"-(close|open)")+")+"));for(var l=t.column-s.getCurrentTokenColumn()-2,c=a.value;;){for(;l>=0;){var u=c.charAt(l);if(u==o){if(0==(r-=1))return{row:s.getCurrentTokenRow(),column:l+s.getCurrentTokenColumn()}}else u==e&&(r+=1);l-=1}do{a=s.stepBackward()}while(a&&!n.test(a.type));if(null==a)break;l=(c=a.value).length-1}return null}},this.$findClosingBracket=function(e,t,n){var o=this.$brackets[e],r=1,s=new i(this,t.row,t.column),a=s.getCurrentToken();if(a||(a=s.stepForward()),a){n||(n=new RegExp("(\\.?"+a.type.replace(".","\\.").replace("lparen",".paren").replace(/\b(?:start|begin)\b/,"(?:start|begin|end)").replace(/-open\b/,"-(close|open)")+")+"));for(var l=t.column-s.getCurrentTokenColumn();;){for(var c=a.value,u=c.length;l"===t.value?i=!0:-1!==t.type.indexOf("tag-name")&&(n=!0))}while(t&&!n);return t},this.$findClosingTag=function(e,t){var n,i=t.value,r=t.value,s=0,a=new o(e.getCurrentTokenRow(),e.getCurrentTokenColumn(),e.getCurrentTokenRow(),e.getCurrentTokenColumn()+1);t=e.stepForward();var l=new o(e.getCurrentTokenRow(),e.getCurrentTokenColumn(),e.getCurrentTokenRow(),e.getCurrentTokenColumn()+t.value.length),c=!1;do{if(n=t,t=e.stepForward()){if(">"===t.value&&!c){var u=new o(e.getCurrentTokenRow(),e.getCurrentTokenColumn(),e.getCurrentTokenRow(),e.getCurrentTokenColumn()+1);c=!0}if(-1!==t.type.indexOf("tag-name")){if(r===(i=t.value))if("<"===n.value)s++;else if(""!==t.value)return;var p=new o(e.getCurrentTokenRow(),e.getCurrentTokenColumn(),e.getCurrentTokenRow(),e.getCurrentTokenColumn()+1)}}else r===i&&"/>"===t.value&&--s<0&&(p=d=h=new o(e.getCurrentTokenRow(),e.getCurrentTokenColumn(),e.getCurrentTokenRow(),e.getCurrentTokenColumn()+2),u=new o(l.end.row,l.end.column,l.end.row,l.end.column+1))}}while(t&&s>=0);if(a&&u&&h&&p&&l&&d)return{openTag:new o(a.start.row,a.start.column,u.end.row,u.end.column),closeTag:new o(h.start.row,h.start.column,p.end.row,p.end.column),openTagName:l,closeTagName:d}},this.$findOpeningTag=function(e,t){var n=e.getCurrentToken(),i=t.value,r=0,s=e.getCurrentTokenRow(),a=e.getCurrentTokenColumn(),l=a+2,c=new o(s,a,s,l);e.stepForward();var u=new o(e.getCurrentTokenRow(),e.getCurrentTokenColumn(),e.getCurrentTokenRow(),e.getCurrentTokenColumn()+t.value.length);if((t=e.stepForward())&&">"===t.value){var h=new o(e.getCurrentTokenRow(),e.getCurrentTokenColumn(),e.getCurrentTokenRow(),e.getCurrentTokenColumn()+1);e.stepBackward(),e.stepBackward();do{if(t=n,s=e.getCurrentTokenRow(),l=(a=e.getCurrentTokenColumn())+t.value.length,n=e.stepBackward(),t)if(-1!==t.type.indexOf("tag-name")){if(i===t.value)if("<"===n.value){if(++r>0){var d=new o(s,a,s,l),p=new o(e.getCurrentTokenRow(),e.getCurrentTokenColumn(),e.getCurrentTokenRow(),e.getCurrentTokenColumn()+1);do{t=e.stepForward()}while(t&&">"!==t.value);var g=new o(e.getCurrentTokenRow(),e.getCurrentTokenColumn(),e.getCurrentTokenRow(),e.getCurrentTokenColumn()+1)}}else""===t.value){for(var m=0,f=n;f;){if(-1!==f.type.indexOf("tag-name")&&f.value===i){r--;break}if("<"===f.value)break;f=e.stepBackward(),m++}for(var y=0;yn&&(this.$docRowCache.splice(n,t),this.$screenRowCache.splice(n,t))},e.prototype.$getRowCacheIndex=function(e,t){for(var n=0,i=e.length-1;n<=i;){var o=n+i>>1,r=e[o];if(t>r)n=o+1;else{if(!(t=t);r++);return(n=i[r])?(n.index=r,n.start=o-n.value.length,n):null},e.prototype.setUndoManager=function(e){if(this.$undoManager=e,this.$informUndoManager&&this.$informUndoManager.cancel(),e){var t=this;e.addSession(this),this.$syncInformUndoManager=function(){t.$informUndoManager.cancel(),t.mergeUndoDeltas=!1},this.$informUndoManager=o.delayedCall(this.$syncInformUndoManager)}else this.$syncInformUndoManager=function(){}},e.prototype.markUndoGroup=function(){this.$syncInformUndoManager&&this.$syncInformUndoManager()},e.prototype.getUndoManager=function(){return this.$undoManager||this.$defaultUndoManager},e.prototype.getTabString=function(){return this.getUseSoftTabs()?o.stringRepeat(" ",this.getTabSize()):"\t"},e.prototype.setUseSoftTabs=function(e){this.setOption("useSoftTabs",e)},e.prototype.getUseSoftTabs=function(){return this.$useSoftTabs&&!this.$mode.$indentWithTabs},e.prototype.setTabSize=function(e){this.setOption("tabSize",e)},e.prototype.getTabSize=function(){return this.$tabSize},e.prototype.isTabStop=function(e){return this.$useSoftTabs&&e.column%this.$tabSize==0},e.prototype.setNavigateWithinSoftTabs=function(e){this.setOption("navigateWithinSoftTabs",e)},e.prototype.getNavigateWithinSoftTabs=function(){return this.$navigateWithinSoftTabs},e.prototype.setOverwrite=function(e){this.setOption("overwrite",e)},e.prototype.getOverwrite=function(){return this.$overwrite},e.prototype.toggleOverwrite=function(){this.setOverwrite(!this.$overwrite)},e.prototype.addGutterDecoration=function(e,t){this.$decorations[e]||(this.$decorations[e]=""),this.$decorations[e]+=" "+t,this._signal("changeBreakpoint",{})},e.prototype.removeGutterDecoration=function(e,t){this.$decorations[e]=(this.$decorations[e]||"").replace(" "+t,""),this._signal("changeBreakpoint",{})},e.prototype.getBreakpoints=function(){return this.$breakpoints},e.prototype.setBreakpoints=function(e){this.$breakpoints=[];for(var t=0;t0&&(i=!!n.charAt(t-1).match(this.tokenRe)),i||(i=!!n.charAt(t).match(this.tokenRe)),i)var o=this.tokenRe;else o=/^\s+$/.test(n.slice(t-1,t+1))?/\s/:this.nonTokenRe;var r=t;if(r>0){do{r--}while(r>=0&&n.charAt(r).match(o));r++}for(var s=t;se&&(e=t.screenWidth)})),this.lineWidgetWidth=e},e.prototype.$computeWidth=function(e){if(this.$modified||e){if(this.$modified=!1,this.$useWrapMode)return this.screenWidth=this.$wrapLimit;for(var t=this.doc.getAllLines(),n=this.$rowLengthCache,i=0,o=0,r=this.$foldData[o],s=r?r.start.row:1/0,a=t.length,l=0;ls){if((l=r.end.row+1)>=a)break;s=(r=this.$foldData[o++])?r.start.row:1/0}null==n[l]&&(n[l]=this.$getStringScreenWidth(t[l])[0]),n[l]>i&&(i=n[l])}this.screenWidth=i}},e.prototype.getLine=function(e){return this.doc.getLine(e)},e.prototype.getLines=function(e,t){return this.doc.getLines(e,t)},e.prototype.getLength=function(){return this.doc.getLength()},e.prototype.getTextRange=function(e){return this.doc.getTextRange(e||this.selection.getRange())},e.prototype.insert=function(e,t){return this.doc.insert(e,t)},e.prototype.remove=function(e){return this.doc.remove(e)},e.prototype.removeFullLines=function(e,t){return this.doc.removeFullLines(e,t)},e.prototype.undoChanges=function(e,t){if(e.length){this.$fromUndo=!0;for(var n=e.length-1;-1!=n;n--){var i=e[n];"insert"==i.action||"remove"==i.action?this.doc.revertDelta(i):i.folds&&this.addFolds(i.folds)}!t&&this.$undoSelect&&(e.selectionBefore?this.selection.fromJSON(e.selectionBefore):this.selection.setRange(this.$getUndoSelection(e,!0))),this.$fromUndo=!1}},e.prototype.redoChanges=function(e,t){if(e.length){this.$fromUndo=!0;for(var n=0;ne.end.column&&(r.start.column+=c),r.end.row==e.end.row&&r.end.column>e.end.column&&(r.end.column+=c)),s&&r.start.row>=e.end.row&&(r.start.row+=s,r.end.row+=s)}if(r.end=this.insert(r.start,i),o.length){var a=e.start,l=r.start,c=(s=l.row-a.row,l.column-a.column);this.addFolds(o.map((function(e){return(e=e.clone()).start.row==a.row&&(e.start.column+=c),e.end.row==a.row&&(e.end.column+=c),e.start.row+=s,e.end.row+=s,e})))}return r},e.prototype.indentRows=function(e,t,n){n=n.replace(/\t/g,this.getTabString());for(var i=e;i<=t;i++)this.doc.insertInLine({row:i,column:0},n)},e.prototype.outdentRows=function(e){for(var t=e.collapseRows(),n=new u(0,0,0,0),i=this.getTabSize(),o=t.start.row;o<=t.end.row;++o){var r=this.getLine(o);n.start.row=o,n.end.row=o;for(var s=0;s0){var o;if((o=this.getRowFoldEnd(t+n))>this.doc.getLength()-1)return 0;i=o-t}else e=this.$clipRowToDocument(e),i=(t=this.$clipRowToDocument(t))-e+1;var r=new u(e,0,t,Number.MAX_VALUE),s=this.getFoldsInRange(r).map((function(e){return(e=e.clone()).start.row+=i,e.end.row+=i,e})),a=0==n?this.doc.getLines(e,t):this.doc.removeFullLines(e,t);return this.doc.insertFullLines(e+i,a),s.length&&this.addFolds(s),i},e.prototype.moveLinesUp=function(e,t){return this.$moveLines(e,t,-1)},e.prototype.moveLinesDown=function(e,t){return this.$moveLines(e,t,1)},e.prototype.duplicateLines=function(e,t){return this.$moveLines(e,t,0)},e.prototype.$clipRowToDocument=function(e){return Math.max(0,Math.min(e,this.doc.getLength()-1))},e.prototype.$clipColumnToRow=function(e,t){return t<0?0:Math.min(this.doc.getLine(e).length,t)},e.prototype.$clipPositionToDocument=function(e,t){if(t=Math.max(0,t),e<0)e=0,t=0;else{var n=this.doc.getLength();e>=n?(e=n-1,t=this.doc.getLine(n-1).length):t=Math.min(this.doc.getLine(e).length,t)}return{row:e,column:t}},e.prototype.$clipRangeToDocument=function(e){e.start.row<0?(e.start.row=0,e.start.column=0):e.start.column=this.$clipColumnToRow(e.start.row,e.start.column);var t=this.doc.getLength()-1;return e.end.row>t?(e.end.row=t,e.end.column=this.doc.getLine(t).length):e.end.column=this.$clipColumnToRow(e.end.row,e.end.column),e},e.prototype.setUseWrapMode=function(e){if(e!=this.$useWrapMode){if(this.$useWrapMode=e,this.$modified=!0,this.$resetRowCache(0),e){var t=this.getLength();this.$wrapData=Array(t),this.$updateWrapData(0,t-1)}this._signal("changeWrapMode")}},e.prototype.getUseWrapMode=function(){return this.$useWrapMode},e.prototype.setWrapLimitRange=function(e,t){this.$wrapLimitRange.min===e&&this.$wrapLimitRange.max===t||(this.$wrapLimitRange={min:e,max:t},this.$modified=!0,this.$bidiHandler.markAsDirty(),this.$useWrapMode&&this._signal("changeWrapMode"))},e.prototype.adjustWrapLimit=function(e,t){var n=this.$wrapLimitRange;n.max<0&&(n={min:t,max:t});var i=this.$constrainWrapLimit(e,n.min,n.max);return i!=this.$wrapLimit&&i>1&&(this.$wrapLimit=i,this.$modified=!0,this.$useWrapMode&&(this.$updateWrapData(0,this.getLength()-1),this.$resetRowCache(0),this._signal("changeWrapLimit")),!0)},e.prototype.$constrainWrapLimit=function(e,t,n){return t&&(e=Math.max(t,e)),n&&(e=Math.min(n,e)),e},e.prototype.getWrapLimit=function(){return this.$wrapLimit},e.prototype.setWrapLimit=function(e){this.setWrapLimitRange(e,e)},e.prototype.getWrapLimitRange=function(){return{min:this.$wrapLimitRange.min,max:this.$wrapLimitRange.max}},e.prototype.$updateInternalDataOnChange=function(e){var t=this.$useWrapMode,n=e.action,i=e.start,o=e.end,r=i.row,s=o.row,a=s-r,l=null;if(this.$updating=!0,0!=a)if("remove"===n){this[t?"$wrapData":"$rowLengthCache"].splice(r,a);var c=this.$foldData;l=this.getFoldsInRange(e),this.removeFolds(l);var u=0;if(m=this.getFoldLine(o.row)){m.addRemoveChars(o.row,o.column,i.column-o.column),m.shiftRow(-a);var h=this.getFoldLine(r);h&&h!==m&&(h.merge(m),m=h),u=c.indexOf(m)+1}for(;u=o.row&&m.shiftRow(-a);s=r}else{var d=Array(a);d.unshift(r,0);var p=t?this.$wrapData:this.$rowLengthCache;if(p.splice.apply(p,d),c=this.$foldData,u=0,m=this.getFoldLine(r)){var g=m.range.compareInside(i.row,i.column);0==g?(m=m.split(i.row,i.column))&&(m.shiftRow(a),m.addRemoveChars(s,0,o.column-i.column)):-1==g&&(m.addRemoveChars(r,0,o.column-i.column),m.shiftRow(a)),u=c.indexOf(m)+1}for(;u=r&&m.shiftRow(a)}}else a=Math.abs(e.start.column-e.end.column),"remove"===n&&(l=this.getFoldsInRange(e),this.removeFolds(l),a=-a),(m=this.getFoldLine(r))&&m.addRemoveChars(r,i.column,a);return t&&this.$wrapData.length!=this.doc.getLength()&&console.error("doc.getLength() and $wrapData.length have to be the same!"),this.$updating=!1,t?this.$updateWrapData(r,s):this.$updateRowLengthCache(r,s),l},e.prototype.$updateRowLengthCache=function(e,t,n){this.$rowLengthCache[e]=null,this.$rowLengthCache[t]=null},e.prototype.$updateWrapData=function(e,t){var n,i,o=this.doc.getAllLines(),r=this.getTabSize(),s=this.$wrapData,a=this.$wrapLimit,l=e;for(t=Math.min(t,o.length-1);l<=t;)(i=this.getFoldLine(l,i))?(n=[],i.walk(function(e,t,i,r){var s;if(null!=e){(s=this.$getDisplayTokens(e,n.length))[0]=b;for(var a=1;at-h;){var d=r+t-h;if(e[d-1]>=A&&e[d]>=A)u(d);else if(e[d]!=b&&e[d]!=v){for(var p=Math.max(d-(t-(t>>2)),r-1);d>p&&e[d]p&&e[d]p&&e[d]==w;)d--}else for(;d>p&&e[d]p?u(++d):(e[d=r+t]==y&&d--,u(d-h))}else{for(;d!=r-1&&e[d]!=b;d--);if(d>r){u(d);continue}for(d=r+t;d39&&r<48||r>57&&r<64?i.push(w):r>=4352&&x(r)?i.push(f,y):i.push(f)}return i},e.prototype.$getStringScreenWidth=function(e,t,n){if(0==t)return[0,0];var i,o;for(null==t&&(t=1/0),n=n||0,o=0;o=4352&&x(i)?n+=2:n+=1,!(n>t));o++);return[n,o]},e.prototype.getRowLength=function(e){var t=1;return this.lineWidgets&&(t+=this.lineWidgets[e]&&this.lineWidgets[e].rowCount||0),this.$useWrapMode&&this.$wrapData[e]?this.$wrapData[e].length+t:t},e.prototype.getRowLineCount=function(e){return this.$useWrapMode&&this.$wrapData[e]?this.$wrapData[e].length+1:1},e.prototype.getRowWrapIndent=function(e){if(this.$useWrapMode){var t=this.screenToDocumentPosition(e,Number.MAX_VALUE),n=this.$wrapData[t.row];return n.length&&n[0]=0){a=c[u],r=this.$docRowCache[u];var d=e>c[h-1]}else d=!h;for(var p=this.getLength()-1,g=this.getNextFoldLine(r),m=g?g.start.row:1/0;a<=e&&!(a+(l=this.getRowLength(r))>e||r>=p);)a+=l,++r>m&&(r=g.end.row+1,m=(g=this.getNextFoldLine(r,g))?g.start.row:1/0),d&&(this.$docRowCache.push(r),this.$screenRowCache.push(a));if(g&&g.start.row<=r)i=this.getFoldDisplayLine(g),r=g.start.row;else{if(a+l<=e||r>p)return{row:p,column:this.getLine(p).length};i=this.getLine(r),g=null}var f=0,y=Math.floor(e-a);if(this.$useWrapMode){var b=this.$wrapData[r];b&&(o=b[y],y>0&&b.length&&(f=b.indent,s=b[y-1]||b[b.length-1],i=i.substring(s)))}return void 0!==n&&this.$bidiHandler.isBidiRow(a+y,r,y)&&(t=this.$bidiHandler.offsetToCol(n)),s+=this.$getStringScreenWidth(i,t-f)[1],this.$useWrapMode&&s>=o&&(s=o-1),g?g.idxToPosition(s):{row:r,column:s}},e.prototype.documentToScreenPosition=function(e,t){if(void 0===t)var n=this.$clipPositionToDocument(e.row,e.column);else n=this.$clipPositionToDocument(e,t);e=n.row,t=n.column;var i,o=0,r=null;(i=this.getFoldAt(e,t,1))&&(e=i.start.row,t=i.start.column);var s,a=0,l=this.$docRowCache,c=this.$getRowCacheIndex(l,e),u=l.length;if(u&&c>=0){a=l[c],o=this.$screenRowCache[c];var h=e>l[u-1]}else h=!u;for(var d=this.getNextFoldLine(a),p=d?d.start.row:1/0;a=p){if((s=d.end.row+1)>e)break;p=(d=this.getNextFoldLine(s,d))?d.start.row:1/0}else s=a+1;o+=this.getRowLength(a),a=s,h&&(this.$docRowCache.push(a),this.$screenRowCache.push(o))}var g="";d&&a>=p?(g=this.getFoldDisplayLine(d,e,t),r=d.start.row):(g=this.getLine(e).substring(0,t),r=e);var m=0;if(this.$useWrapMode){var f=this.$wrapData[r];if(f){for(var y=0;g.length>=f[y];)o++,y++;g=g.substring(f[y-1]||0,g.length),m=y>0?f.indent:0}}return this.lineWidgets&&this.lineWidgets[a]&&this.lineWidgets[a].rowsAbove&&(o+=this.lineWidgets[a].rowsAbove),{row:o,column:m+this.$getStringScreenWidth(g)[0]}},e.prototype.documentToScreenColumn=function(e,t){return this.documentToScreenPosition(e,t).column},e.prototype.documentToScreenRow=function(e,t){return this.documentToScreenPosition(e,t).row},e.prototype.getScreenLength=function(){var e=0,t=null;if(this.$useWrapMode)for(var n=this.$wrapData.length,i=0,o=(a=0,(t=this.$foldData[a++])?t.start.row:1/0);io&&(i=t.end.row+1,o=(t=this.$foldData[a++])?t.start.row:1/0)}else{e=this.getLength();for(var s=this.$foldData,a=0;an);r++);return[i,r]})},e.prototype.destroy=function(){this.destroyed||(this.bgTokenizer.setDocument(null),this.bgTokenizer.cleanup(),this.destroyed=!0),this.$stopWorker(),this.removeAllListeners(),this.doc&&this.doc.off("change",this.$onChange),this.selection.detach()},e}();m.$uid=0,m.prototype.$modes=s.$modes,m.prototype.getValue=m.prototype.toString,m.prototype.$defaultUndoManager={undo:function(){},redo:function(){},hasUndo:function(){},hasRedo:function(){},reset:function(){},add:function(){},addSelection:function(){},startNewGroup:function(){},addSession:function(){}},m.prototype.$overwrite=!1,m.prototype.$mode=null,m.prototype.$modeId=null,m.prototype.$scrollTop=0,m.prototype.$scrollLeft=0,m.prototype.$wrapLimit=80,m.prototype.$useWrapMode=!1,m.prototype.$wrapLimitRange={min:null,max:null},m.prototype.lineWidgets=null,m.prototype.isFullWidth=x,i.implement(m.prototype,a);var f=1,y=2,b=3,v=4,w=9,A=10,C=11,k=12;function x(e){return!(e<4352)&&(e>=4352&&e<=4447||e>=4515&&e<=4519||e>=4602&&e<=4607||e>=9001&&e<=9002||e>=11904&&e<=11929||e>=11931&&e<=12019||e>=12032&&e<=12245||e>=12272&&e<=12283||e>=12288&&e<=12350||e>=12353&&e<=12438||e>=12441&&e<=12543||e>=12549&&e<=12589||e>=12593&&e<=12686||e>=12688&&e<=12730||e>=12736&&e<=12771||e>=12784&&e<=12830||e>=12832&&e<=12871||e>=12880&&e<=13054||e>=13056&&e<=19903||e>=19968&&e<=42124||e>=42128&&e<=42182||e>=43360&&e<=43388||e>=44032&&e<=55203||e>=55216&&e<=55238||e>=55243&&e<=55291||e>=63744&&e<=64255||e>=65040&&e<=65049||e>=65072&&e<=65106||e>=65108&&e<=65126||e>=65128&&e<=65131||e>=65281&&e<=65376||e>=65504&&e<=65510)}e("./edit_session/folding").Folding.call(m.prototype),e("./edit_session/bracket_match").BracketMatch.call(m.prototype),s.defineOptions(m.prototype,"session",{wrap:{set:function(e){if(e&&"off"!=e?"free"==e?e=!0:"printMargin"==e?e=-1:"string"==typeof e&&(e=parseInt(e,10)||!1):e=!1,this.$wrap!=e)if(this.$wrap=e,e){var t="number"==typeof e?e:null;this.setWrapLimitRange(t,t),this.setUseWrapMode(!0)}else this.setUseWrapMode(!1)},get:function(){return this.getUseWrapMode()?-1==this.$wrap?"printMargin":this.getWrapLimitRange().min?this.$wrap:"free":"off"},handlesSet:!0},wrapMethod:{set:function(e){(e="auto"==e?"text"!=this.$mode.type:"text"!=e)!=this.$wrapAsCode&&(this.$wrapAsCode=e,this.$useWrapMode&&(this.$useWrapMode=!1,this.setUseWrapMode(!0)))},initialValue:"auto"},indentedSoftWrap:{set:function(){this.$useWrapMode&&(this.$useWrapMode=!1,this.setUseWrapMode(!0))},initialValue:!0},firstLineNumber:{set:function(){this._signal("changeBreakpoint")},initialValue:1},useWorker:{set:function(e){this.$useWorker=e,this.$stopWorker(),e&&this.$startWorker()},initialValue:!0},useSoftTabs:{initialValue:!0},tabSize:{set:function(e){(e=parseInt(e))>0&&this.$tabSize!==e&&(this.$modified=!0,this.$rowLengthCache=[],this.$tabSize=e,this._signal("changeTabSize"))},initialValue:4,handlesSet:!0},navigateWithinSoftTabs:{initialValue:!1},foldStyle:{set:function(e){this.setFoldStyle(e)},handlesSet:!0},overwrite:{set:function(e){this._signal("changeOverwrite")},initialValue:!1},newLineMode:{set:function(e){this.doc.setNewLineMode(e)},get:function(){return this.doc.getNewLineMode()},handlesSet:!0},mode:{set:function(e){this.setMode(e)},get:function(){return this.$modeId},handlesSet:!0}}),t.EditSession=m})),ace.define("ace/search",["require","exports","module","ace/lib/lang","ace/lib/oop","ace/range"],(function(e,t,n){"use strict";var i=e("./lib/lang"),o=e("./lib/oop"),r=e("./range").Range,s=function(){function e(){this.$options={}}return e.prototype.set=function(e){return o.mixin(this.$options,e),this},e.prototype.getOptions=function(){return i.copyObject(this.$options)},e.prototype.setOptions=function(e){this.$options=e},e.prototype.find=function(e){var t=this.$options,n=this.$matchIterator(e,t);if(!n)return!1;var i=null;return n.forEach((function(e,n,o,s){return i=new r(e,n,o,s),!(n==s&&t.start&&t.start.start&&0!=t.skipCurrent&&i.isEqual(t.start)&&(i=null,1))})),i},e.prototype.findAll=function(e){var t=this.$options;if(!t.needle)return[];this.$assembleRegExp(t);var n=t.range,o=n?e.getLines(n.start.row,n.end.row):e.doc.getAllLines(),s=[],a=t.re;if(t.$isMultiLine){var l,c=a.length,u=o.length-c;e:for(var h=a.offset||0;h<=u;h++){for(var d=0;dm||(s.push(l=new r(h,m,h+c-1,f)),c>2&&(h=h+c-2))}}else for(var y=0;yA&&s[d].end.row==C;)d--;for(s=s.slice(y,d+1),y=0,d=s.length;y=c;n--)if(p(n,Number.MAX_VALUE,e))return;if(0!=t.wrap)for(n=u,c=l.row;n>=c;n--)if(p(n,Number.MAX_VALUE,e))return}};else h=function(e){var n=l.row;if(!p(n,l.column,e)){for(n+=1;n<=u;n++)if(p(n,0,e))return;if(0!=t.wrap)for(n=c,u=l.row;n<=u;n++)if(p(n,0,e))return}};if(t.$isMultiLine)var d=n.length,p=function(t,i,r){var s=o?t-d+1:t;if(!(s<0||s+d>e.getLength())){var a=e.getLine(s),l=a.search(n[0]);if(!(!o&&li))return!!r(s,l,s+d-1,u)||void 0}}};else p=o?function(t,o,r){var a,l=e.getLine(t),c=[],u=0;for(n.lastIndex=0;a=n.exec(l);){var h=a[0].length;if(u=a.index,!h){if(u>=l.length)break;n.lastIndex=u+=i.skipEmptyMatch(l,u,s)}if(a.index+h>o)break;c.push(a.index,h)}for(var d=c.length-1;d>=0;d-=2){var p=c[d-1];if(r(t,p,t,p+(h=c[d])))return!0}}:function(t,o,r){var a,l,c=e.getLine(t);for(n.lastIndex=o;l=n.exec(c);){var u=l[0].length;if(r(t,a=l.index,t,a+u))return!0;if(!u&&(n.lastIndex=a+=i.skipEmptyMatch(c,a,s),a>=c.length))return!1}};return{forEach:h}},e}();t.Search=s})),ace.define("ace/keyboard/hash_handler",["require","exports","module","ace/lib/keys","ace/lib/useragent"],(function(e,t,n){"use strict";var i,o=this&&this.__extends||(i=function(e,t){return i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},i(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}i(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}),r=e("../lib/keys"),s=e("../lib/useragent"),a=r.KEY_MODS,l=function(){function e(e,t){this.$init(e,t,!1)}return e.prototype.$init=function(e,t,n){this.platform=t||(s.isMac?"mac":"win"),this.commands={},this.commandKeyBinding={},this.addCommands(e),this.$singleCommand=n},e.prototype.addCommand=function(e){this.commands[e.name]&&this.removeCommand(e),this.commands[e.name]=e,e.bindKey&&this._buildKeyHash(e)},e.prototype.removeCommand=function(e,t){var n=e&&("string"==typeof e?e:e.name);e=this.commands[n],t||delete this.commands[n];var i=this.commandKeyBinding;for(var o in i){var r=i[o];if(r==e)delete i[o];else if(Array.isArray(r)){var s=r.indexOf(e);-1!=s&&(r.splice(s,1),1==r.length&&(i[o]=r[0]))}}},e.prototype.bindKey=function(e,t,n){if("object"==typeof e&&e&&(null==n&&(n=e.position),e=e[this.platform]),e)return"function"==typeof t?this.addCommand({exec:t,bindKey:e,name:t.name||e}):void e.split("|").forEach((function(e){var i="";if(-1!=e.indexOf(" ")){var o=e.split(/\s+/);e=o.pop(),o.forEach((function(e){var t=this.parseKeys(e),n=a[t.hashId]+t.key;i+=(i?" ":"")+n,this._addCommandToBinding(i,"chainKeys")}),this),i+=" "}var r=this.parseKeys(e),s=a[r.hashId]+r.key;this._addCommandToBinding(i+s,t,n)}),this)},e.prototype._addCommandToBinding=function(e,t,n){var i,o=this.commandKeyBinding;if(t)if(!o[e]||this.$singleCommand)o[e]=t;else{Array.isArray(o[e])?-1!=(i=o[e].indexOf(t))&&o[e].splice(i,1):o[e]=[o[e]],"number"!=typeof n&&(n=c(t));var r=o[e];for(i=0;in);i++);r.splice(i,0,t)}else delete o[e]},e.prototype.addCommands=function(e){e&&Object.keys(e).forEach((function(t){var n=e[t];if(n){if("string"==typeof n)return this.bindKey(n,t);"function"==typeof n&&(n={exec:n}),"object"==typeof n&&(n.name||(n.name=t),this.addCommand(n))}}),this)},e.prototype.removeCommands=function(e){Object.keys(e).forEach((function(t){this.removeCommand(e[t])}),this)},e.prototype.bindKeys=function(e){Object.keys(e).forEach((function(t){this.bindKey(t,e[t])}),this)},e.prototype._buildKeyHash=function(e){this.bindKey(e.bindKey,e)},e.prototype.parseKeys=function(e){var t=e.toLowerCase().split(/[\-\+]([\-\+])?/).filter((function(e){return e})),n=t.pop(),i=r[n];if(r.FUNCTION_KEYS[i])n=r.FUNCTION_KEYS[i].toLowerCase();else{if(!t.length)return{key:n,hashId:-1};if(1==t.length&&"shift"==t[0])return{key:n.toUpperCase(),hashId:-1}}for(var o=0,s=t.length;s--;){var a=r.KEY_MODS[t[s]];if(null==a)return"undefined"!=typeof console&&console.error("invalid modifier "+t[s]+" in "+e),!1;o|=a}return{key:n,hashId:o}},e.prototype.findKeyCommand=function(e,t){var n=a[e]+t;return this.commandKeyBinding[n]},e.prototype.handleKeyboard=function(e,t,n,i){if(!(i<0)){var o=a[t]+n,r=this.commandKeyBinding[o];return e.$keyChain&&(e.$keyChain+=" "+o,r=this.commandKeyBinding[e.$keyChain]||r),!r||"chainKeys"!=r&&"chainKeys"!=r[r.length-1]?(e.$keyChain&&(t&&4!=t||1!=n.length?(-1==t||i>0)&&(e.$keyChain=""):e.$keyChain=e.$keyChain.slice(0,-o.length-1)),{command:r}):(e.$keyChain=e.$keyChain||o,{command:"null"})}},e.prototype.getStatusText=function(e,t){return t.$keyChain||""},e}();function c(e){return"object"==typeof e&&e.bindKey&&e.bindKey.position||(e.isDefault?-100:0)}var u=function(e){function t(t,n){var i=e.call(this,t,n)||this;return i.$singleCommand=!0,i}return o(t,e),t}(l);u.call=function(e,t,n){l.prototype.$init.call(e,t,n,!0)},l.call=function(e,t,n){l.prototype.$init.call(e,t,n,!1)},t.HashHandler=u,t.MultiHashHandler=l})),ace.define("ace/commands/command_manager",["require","exports","module","ace/lib/oop","ace/keyboard/hash_handler","ace/lib/event_emitter"],(function(e,t,n){"use strict";var i,o=this&&this.__extends||(i=function(e,t){return i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},i(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}i(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}),r=e("../lib/oop"),s=e("../keyboard/hash_handler").MultiHashHandler,a=e("../lib/event_emitter").EventEmitter,l=function(e){function t(t,n){var i=e.call(this,n,t)||this;return i.byName=i.commands,i.setDefaultHandler("exec",(function(e){return e.args?e.command.exec(e.editor,e.args,e.event,!1):e.command.exec(e.editor,{},e.event,!0)})),i}return o(t,e),t.prototype.exec=function(e,t,n){if(Array.isArray(e)){for(var i=e.length;i--;)if(this.exec(e[i],t,n))return!0;return!1}if("string"==typeof e&&(e=this.commands[e]),!e)return!1;if(t&&t.$readOnly&&!e.readOnly)return!1;if(0!=this.$checkCommandState&&e.isAvailable&&!e.isAvailable(t))return!1;var o={editor:t,command:e,args:n};return o.returnValue=this._emit("exec",o),this._signal("afterExec",o),!1!==o.returnValue},t.prototype.toggleRecording=function(e){if(!this.$inReplay)return e&&e._emit("changeStatus"),this.recording?(this.macro.pop(),this.off("exec",this.$addCommandToMacro),this.macro.length||(this.macro=this.oldMacro),this.recording=!1):(this.$addCommandToMacro||(this.$addCommandToMacro=function(e){this.macro.push([e.command,e.args])}.bind(this)),this.oldMacro=this.macro,this.macro=[],this.on("exec",this.$addCommandToMacro),this.recording=!0)},t.prototype.replay=function(e){if(!this.$inReplay&&this.macro){if(this.recording)return this.toggleRecording(e);try{this.$inReplay=!0,this.macro.forEach((function(t){"string"==typeof t?this.exec(t,e):this.exec(t[0],e,t[1])}),this)}finally{this.$inReplay=!1}}},t.prototype.trimMacro=function(e){return e.map((function(e){return"string"!=typeof e[0]&&(e[0]=e[0].name),e[1]||(e=e[0]),e}))},t}(s);r.implement(l.prototype,a),t.CommandManager=l})),ace.define("ace/commands/default_commands",["require","exports","module","ace/lib/lang","ace/config","ace/range"],(function(e,t,n){"use strict";var i=e("../lib/lang"),o=e("../config"),r=e("../range").Range;function s(e,t){return{win:e,mac:t}}t.commands=[{name:"showSettingsMenu",description:"Show settings menu",bindKey:s("Ctrl-,","Command-,"),exec:function(e){o.loadModule("ace/ext/settings_menu",(function(t){t.init(e),e.showSettingsMenu()}))},readOnly:!0},{name:"goToNextError",description:"Go to next error",bindKey:s("Alt-E","F4"),exec:function(e){o.loadModule("ace/ext/error_marker",(function(t){t.showErrorMarker(e,1)}))},scrollIntoView:"animate",readOnly:!0},{name:"goToPreviousError",description:"Go to previous error",bindKey:s("Alt-Shift-E","Shift-F4"),exec:function(e){o.loadModule("ace/ext/error_marker",(function(t){t.showErrorMarker(e,-1)}))},scrollIntoView:"animate",readOnly:!0},{name:"selectall",description:"Select all",bindKey:s("Ctrl-A","Command-A"),exec:function(e){e.selectAll()},readOnly:!0},{name:"centerselection",description:"Center selection",bindKey:s(null,"Ctrl-L"),exec:function(e){e.centerSelection()},readOnly:!0},{name:"gotoline",description:"Go to line...",bindKey:s("Ctrl-L","Command-L"),exec:function(e,t){"number"!=typeof t||isNaN(t)||e.gotoLine(t),e.prompt({$type:"gotoLine"})},readOnly:!0},{name:"fold",bindKey:s("Alt-L|Ctrl-F1","Command-Alt-L|Command-F1"),exec:function(e){e.session.toggleFold(!1)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"unfold",bindKey:s("Alt-Shift-L|Ctrl-Shift-F1","Command-Alt-Shift-L|Command-Shift-F1"),exec:function(e){e.session.toggleFold(!0)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"toggleFoldWidget",description:"Toggle fold widget",bindKey:s("F2","F2"),exec:function(e){e.session.toggleFoldWidget()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"toggleParentFoldWidget",description:"Toggle parent fold widget",bindKey:s("Alt-F2","Alt-F2"),exec:function(e){e.session.toggleFoldWidget(!0)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"foldall",description:"Fold all",bindKey:s(null,"Ctrl-Command-Option-0"),exec:function(e){e.session.foldAll()},scrollIntoView:"center",readOnly:!0},{name:"foldAllComments",description:"Fold all comments",bindKey:s(null,"Ctrl-Command-Option-0"),exec:function(e){e.session.foldAllComments()},scrollIntoView:"center",readOnly:!0},{name:"foldOther",description:"Fold other",bindKey:s("Alt-0","Command-Option-0"),exec:function(e){e.session.foldAll(),e.session.unfold(e.selection.getAllRanges())},scrollIntoView:"center",readOnly:!0},{name:"unfoldall",description:"Unfold all",bindKey:s("Alt-Shift-0","Command-Option-Shift-0"),exec:function(e){e.session.unfold()},scrollIntoView:"center",readOnly:!0},{name:"findnext",description:"Find next",bindKey:s("Ctrl-K","Command-G"),exec:function(e){e.findNext()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"findprevious",description:"Find previous",bindKey:s("Ctrl-Shift-K","Command-Shift-G"),exec:function(e){e.findPrevious()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"selectOrFindNext",description:"Select or find next",bindKey:s("Alt-K","Ctrl-G"),exec:function(e){e.selection.isEmpty()?e.selection.selectWord():e.findNext()},readOnly:!0},{name:"selectOrFindPrevious",description:"Select or find previous",bindKey:s("Alt-Shift-K","Ctrl-Shift-G"),exec:function(e){e.selection.isEmpty()?e.selection.selectWord():e.findPrevious()},readOnly:!0},{name:"find",description:"Find",bindKey:s("Ctrl-F","Command-F"),exec:function(e){o.loadModule("ace/ext/searchbox",(function(t){t.Search(e)}))},readOnly:!0},{name:"overwrite",description:"Overwrite",bindKey:"Insert",exec:function(e){e.toggleOverwrite()},readOnly:!0},{name:"selecttostart",description:"Select to start",bindKey:s("Ctrl-Shift-Home","Command-Shift-Home|Command-Shift-Up"),exec:function(e){e.getSelection().selectFileStart()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"gotostart",description:"Go to start",bindKey:s("Ctrl-Home","Command-Home|Command-Up"),exec:function(e){e.navigateFileStart()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"selectup",description:"Select up",bindKey:s("Shift-Up","Shift-Up|Ctrl-Shift-P"),exec:function(e){e.getSelection().selectUp()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"golineup",description:"Go line up",bindKey:s("Up","Up|Ctrl-P"),exec:function(e,t){e.navigateUp(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttoend",description:"Select to end",bindKey:s("Ctrl-Shift-End","Command-Shift-End|Command-Shift-Down"),exec:function(e){e.getSelection().selectFileEnd()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"gotoend",description:"Go to end",bindKey:s("Ctrl-End","Command-End|Command-Down"),exec:function(e){e.navigateFileEnd()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"selectdown",description:"Select down",bindKey:s("Shift-Down","Shift-Down|Ctrl-Shift-N"),exec:function(e){e.getSelection().selectDown()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"golinedown",description:"Go line down",bindKey:s("Down","Down|Ctrl-N"),exec:function(e,t){e.navigateDown(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectwordleft",description:"Select word left",bindKey:s("Ctrl-Shift-Left","Option-Shift-Left"),exec:function(e){e.getSelection().selectWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotowordleft",description:"Go to word left",bindKey:s("Ctrl-Left","Option-Left"),exec:function(e){e.navigateWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttolinestart",description:"Select to line start",bindKey:s("Alt-Shift-Left","Command-Shift-Left|Ctrl-Shift-A"),exec:function(e){e.getSelection().selectLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotolinestart",description:"Go to line start",bindKey:s("Alt-Left|Home","Command-Left|Home|Ctrl-A"),exec:function(e){e.navigateLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectleft",description:"Select left",bindKey:s("Shift-Left","Shift-Left|Ctrl-Shift-B"),exec:function(e){e.getSelection().selectLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotoleft",description:"Go to left",bindKey:s("Left","Left|Ctrl-B"),exec:function(e,t){e.navigateLeft(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectwordright",description:"Select word right",bindKey:s("Ctrl-Shift-Right","Option-Shift-Right"),exec:function(e){e.getSelection().selectWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotowordright",description:"Go to word right",bindKey:s("Ctrl-Right","Option-Right"),exec:function(e){e.navigateWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttolineend",description:"Select to line end",bindKey:s("Alt-Shift-Right","Command-Shift-Right|Shift-End|Ctrl-Shift-E"),exec:function(e){e.getSelection().selectLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotolineend",description:"Go to line end",bindKey:s("Alt-Right|End","Command-Right|End|Ctrl-E"),exec:function(e){e.navigateLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectright",description:"Select right",bindKey:s("Shift-Right","Shift-Right"),exec:function(e){e.getSelection().selectRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotoright",description:"Go to right",bindKey:s("Right","Right|Ctrl-F"),exec:function(e,t){e.navigateRight(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectpagedown",description:"Select page down",bindKey:"Shift-PageDown",exec:function(e){e.selectPageDown()},readOnly:!0},{name:"pagedown",description:"Page down",bindKey:s(null,"Option-PageDown"),exec:function(e){e.scrollPageDown()},readOnly:!0},{name:"gotopagedown",description:"Go to page down",bindKey:s("PageDown","PageDown|Ctrl-V"),exec:function(e){e.gotoPageDown()},readOnly:!0},{name:"selectpageup",description:"Select page up",bindKey:"Shift-PageUp",exec:function(e){e.selectPageUp()},readOnly:!0},{name:"pageup",description:"Page up",bindKey:s(null,"Option-PageUp"),exec:function(e){e.scrollPageUp()},readOnly:!0},{name:"gotopageup",description:"Go to page up",bindKey:"PageUp",exec:function(e){e.gotoPageUp()},readOnly:!0},{name:"scrollup",description:"Scroll up",bindKey:s("Ctrl-Up",null),exec:function(e){e.renderer.scrollBy(0,-2*e.renderer.layerConfig.lineHeight)},readOnly:!0},{name:"scrolldown",description:"Scroll down",bindKey:s("Ctrl-Down",null),exec:function(e){e.renderer.scrollBy(0,2*e.renderer.layerConfig.lineHeight)},readOnly:!0},{name:"selectlinestart",description:"Select line start",bindKey:"Shift-Home",exec:function(e){e.getSelection().selectLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectlineend",description:"Select line end",bindKey:"Shift-End",exec:function(e){e.getSelection().selectLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"togglerecording",description:"Toggle recording",bindKey:s("Ctrl-Alt-E","Command-Option-E"),exec:function(e){e.commands.toggleRecording(e)},readOnly:!0},{name:"replaymacro",description:"Replay macro",bindKey:s("Ctrl-Shift-E","Command-Shift-E"),exec:function(e){e.commands.replay(e)},readOnly:!0},{name:"jumptomatching",description:"Jump to matching",bindKey:s("Ctrl-\\|Ctrl-P","Command-\\"),exec:function(e){e.jumpToMatching()},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"selecttomatching",description:"Select to matching",bindKey:s("Ctrl-Shift-\\|Ctrl-Shift-P","Command-Shift-\\"),exec:function(e){e.jumpToMatching(!0)},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"expandToMatching",description:"Expand to matching",bindKey:s("Ctrl-Shift-M","Ctrl-Shift-M"),exec:function(e){e.jumpToMatching(!0,!0)},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"passKeysToBrowser",description:"Pass keys to browser",bindKey:s(null,null),exec:function(){},passEvent:!0,readOnly:!0},{name:"copy",description:"Copy",exec:function(e){},readOnly:!0},{name:"cut",description:"Cut",exec:function(e){var t=e.$copyWithEmptySelection&&e.selection.isEmpty()?e.selection.getLineRange():e.selection.getRange();e._emit("cut",t),t.isEmpty()||e.session.remove(t),e.clearSelection()},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"paste",description:"Paste",exec:function(e,t){e.$handlePaste(t)},scrollIntoView:"cursor"},{name:"removeline",description:"Remove line",bindKey:s("Ctrl-D","Command-D"),exec:function(e){e.removeLines()},scrollIntoView:"cursor",multiSelectAction:"forEachLine"},{name:"duplicateSelection",description:"Duplicate selection",bindKey:s("Ctrl-Shift-D","Command-Shift-D"),exec:function(e){e.duplicateSelection()},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"sortlines",description:"Sort lines",bindKey:s("Ctrl-Alt-S","Command-Alt-S"),exec:function(e){e.sortLines()},scrollIntoView:"selection",multiSelectAction:"forEachLine"},{name:"togglecomment",description:"Toggle comment",bindKey:s("Ctrl-/","Command-/"),exec:function(e){e.toggleCommentLines()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"toggleBlockComment",description:"Toggle block comment",bindKey:s("Ctrl-Shift-/","Command-Shift-/"),exec:function(e){e.toggleBlockComment()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"modifyNumberUp",description:"Modify number up",bindKey:s("Ctrl-Shift-Up","Alt-Shift-Up"),exec:function(e){e.modifyNumber(1)},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"modifyNumberDown",description:"Modify number down",bindKey:s("Ctrl-Shift-Down","Alt-Shift-Down"),exec:function(e){e.modifyNumber(-1)},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"replace",description:"Replace",bindKey:s("Ctrl-H","Command-Option-F"),exec:function(e){o.loadModule("ace/ext/searchbox",(function(t){t.Search(e,!0)}))}},{name:"undo",description:"Undo",bindKey:s("Ctrl-Z","Command-Z"),exec:function(e){e.undo()}},{name:"redo",description:"Redo",bindKey:s("Ctrl-Shift-Z|Ctrl-Y","Command-Shift-Z|Command-Y"),exec:function(e){e.redo()}},{name:"copylinesup",description:"Copy lines up",bindKey:s("Alt-Shift-Up","Command-Option-Up"),exec:function(e){e.copyLinesUp()},scrollIntoView:"cursor"},{name:"movelinesup",description:"Move lines up",bindKey:s("Alt-Up","Option-Up"),exec:function(e){e.moveLinesUp()},scrollIntoView:"cursor"},{name:"copylinesdown",description:"Copy lines down",bindKey:s("Alt-Shift-Down","Command-Option-Down"),exec:function(e){e.copyLinesDown()},scrollIntoView:"cursor"},{name:"movelinesdown",description:"Move lines down",bindKey:s("Alt-Down","Option-Down"),exec:function(e){e.moveLinesDown()},scrollIntoView:"cursor"},{name:"del",description:"Delete",bindKey:s("Delete","Delete|Ctrl-D|Shift-Delete"),exec:function(e){e.remove("right")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"backspace",description:"Backspace",bindKey:s("Shift-Backspace|Backspace","Ctrl-Backspace|Shift-Backspace|Backspace|Ctrl-H"),exec:function(e){e.remove("left")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"cut_or_delete",description:"Cut or delete",bindKey:s("Shift-Delete",null),exec:function(e){if(!e.selection.isEmpty())return!1;e.remove("left")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolinestart",description:"Remove to line start",bindKey:s("Alt-Backspace","Command-Backspace"),exec:function(e){e.removeToLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolineend",description:"Remove to line end",bindKey:s("Alt-Delete","Ctrl-K|Command-Delete"),exec:function(e){e.removeToLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolinestarthard",description:"Remove to line start hard",bindKey:s("Ctrl-Shift-Backspace",null),exec:function(e){var t=e.selection.getRange();t.start.column=0,e.session.remove(t)},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolineendhard",description:"Remove to line end hard",bindKey:s("Ctrl-Shift-Delete",null),exec:function(e){var t=e.selection.getRange();t.end.column=Number.MAX_VALUE,e.session.remove(t)},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removewordleft",description:"Remove word left",bindKey:s("Ctrl-Backspace","Alt-Backspace|Ctrl-Alt-Backspace"),exec:function(e){e.removeWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removewordright",description:"Remove word right",bindKey:s("Ctrl-Delete","Alt-Delete"),exec:function(e){e.removeWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"outdent",description:"Outdent",bindKey:s("Shift-Tab","Shift-Tab"),exec:function(e){e.blockOutdent()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"indent",description:"Indent",bindKey:s("Tab","Tab"),exec:function(e){e.indent()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"blockoutdent",description:"Block outdent",bindKey:s("Ctrl-[","Ctrl-["),exec:function(e){e.blockOutdent()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"blockindent",description:"Block indent",bindKey:s("Ctrl-]","Ctrl-]"),exec:function(e){e.blockIndent()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"insertstring",description:"Insert string",exec:function(e,t){e.insert(t)},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"inserttext",description:"Insert text",exec:function(e,t){e.insert(i.stringRepeat(t.text||"",t.times||1))},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"splitline",description:"Split line",bindKey:s(null,"Ctrl-O"),exec:function(e){e.splitLine()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"transposeletters",description:"Transpose letters",bindKey:s("Alt-Shift-X","Ctrl-T"),exec:function(e){e.transposeLetters()},multiSelectAction:function(e){e.transposeSelections(1)},scrollIntoView:"cursor"},{name:"touppercase",description:"To uppercase",bindKey:s("Ctrl-U","Ctrl-U"),exec:function(e){e.toUpperCase()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"tolowercase",description:"To lowercase",bindKey:s("Ctrl-Shift-U","Ctrl-Shift-U"),exec:function(e){e.toLowerCase()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"autoindent",description:"Auto Indent",bindKey:s(null,null),exec:function(e){e.autoIndent()},multiSelectAction:"forEachLine",scrollIntoView:"animate"},{name:"expandtoline",description:"Expand to line",bindKey:s("Ctrl-Shift-L","Command-Shift-L"),exec:function(e){var t=e.selection.getRange();t.start.column=t.end.column=0,t.end.row++,e.selection.setRange(t,!1)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"openlink",bindKey:s("Ctrl+F3","F3"),exec:function(e){e.openLink()}},{name:"joinlines",description:"Join lines",bindKey:s(null,null),exec:function(e){for(var t=e.selection.isBackwards(),n=t?e.selection.getSelectionLead():e.selection.getSelectionAnchor(),o=t?e.selection.getSelectionAnchor():e.selection.getSelectionLead(),s=e.session.doc.getLine(n.row).length,a=e.session.doc.getTextRange(e.selection.getRange()).replace(/\n\s*/," ").length,l=e.session.doc.getLine(n.row),c=n.row+1;c<=o.row+1;c++){var u=i.stringTrimLeft(i.stringTrimRight(e.session.doc.getLine(c)));0!==u.length&&(u=" "+u),l+=u}o.row+10?(e.selection.moveCursorTo(n.row,n.column),e.selection.selectTo(n.row,n.column+a)):(s=e.session.doc.getLine(n.row).length>s?s+1:s,e.selection.moveCursorTo(n.row,s))},multiSelectAction:"forEach",readOnly:!0},{name:"invertSelection",description:"Invert selection",bindKey:s(null,null),exec:function(e){var t=e.session.doc.getLength()-1,n=e.session.doc.getLine(t).length,i=e.selection.rangeList.ranges,o=[];i.length<1&&(i=[e.selection.getRange()]);for(var s=0;st[n].column&&n++,r.unshift(n,0),t.splice.apply(t,r),this.$updateRows()}}},e.prototype.$updateRows=function(){var e=this.session.lineWidgets;if(e){var t=!0;e.forEach((function(e,n){if(e)for(t=!1,e.row=n;e.$oldWidget;)e.$oldWidget.row=n,e=e.$oldWidget})),t&&(this.session.lineWidgets=null)}},e.prototype.$registerLineWidget=function(e){this.session.lineWidgets||(this.session.lineWidgets=new Array(this.session.getLength()));var t=this.session.lineWidgets[e.row];return t&&(e.$oldWidget=t,t.el&&t.el.parentNode&&(t.el.parentNode.removeChild(t.el),t._inDocument=!1)),this.session.lineWidgets[e.row]=e,e},e.prototype.addLineWidget=function(e){if(this.$registerLineWidget(e),e.session=this.session,!this.editor)return e;var t=this.editor.renderer;e.html&&!e.el&&(e.el=i.createElement("div"),e.el.innerHTML=e.html),e.text&&!e.el&&(e.el=i.createElement("div"),e.el.textContent=e.text),e.el&&(i.addCssClass(e.el,"ace_lineWidgetContainer"),e.className&&i.addCssClass(e.el,e.className),e.el.style.position="absolute",e.el.style.zIndex=5,t.container.appendChild(e.el),e._inDocument=!0,e.coverGutter||(e.el.style.zIndex=3),null==e.pixelHeight&&(e.pixelHeight=e.el.offsetHeight)),null==e.rowCount&&(e.rowCount=e.pixelHeight/t.layerConfig.lineHeight);var n=this.session.getFoldAt(e.row,0);if(e.$fold=n,n){var o=this.session.lineWidgets;e.row!=n.end.row||o[n.start.row]?e.hidden=!0:o[n.start.row]=e}return this.session._emit("changeFold",{data:{start:{row:e.row}}}),this.$updateRows(),this.renderWidgets(null,t),this.onWidgetChanged(e),e},e.prototype.removeLineWidget=function(e){if(e._inDocument=!1,e.session=null,e.el&&e.el.parentNode&&e.el.parentNode.removeChild(e.el),e.editor&&e.editor.destroy)try{e.editor.destroy()}catch(e){}if(this.session.lineWidgets){var t=this.session.lineWidgets[e.row];if(t==e)this.session.lineWidgets[e.row]=e.$oldWidget,e.$oldWidget&&this.onWidgetChanged(e.$oldWidget);else for(;t;){if(t.$oldWidget==e){t.$oldWidget=e.$oldWidget;break}t=t.$oldWidget}}this.session._emit("changeFold",{data:{start:{row:e.row}}}),this.$updateRows()},e.prototype.getWidgetsAtRow=function(e){for(var t=this.session.lineWidgets,n=t&&t[e],i=[];n;)i.push(n),n=n.$oldWidget;return i},e.prototype.onWidgetChanged=function(e){this.session._changedWidgets.push(e),this.editor&&this.editor.renderer.updateFull()},e.prototype.measureWidgets=function(e,t){var n=this.session._changedWidgets,i=t.layerConfig;if(n&&n.length){for(var o=1/0,r=0;r0&&!i[o];)o--;this.firstRow=n.firstRow,this.lastRow=n.lastRow,t.$cursorLayer.config=n;for(var s=o;s<=r;s++){var a=i[s];if(a&&a.el)if(a.hidden)a.el.style.top=-100-(a.pixelHeight||0)+"px";else{a._inDocument||(a._inDocument=!0,t.container.appendChild(a.el));var l=t.$cursorLayer.getPixelPosition({row:s,column:0},!0).top;a.coverLine||(l+=n.lineHeight*this.session.getRowLineCount(a.row)),a.el.style.top=l-n.offset+"px";var c=a.coverGutter?0:t.gutterWidth;a.fixedWidth||(c-=t.scrollLeft),a.el.style.left=c+"px",a.fullWidth&&a.screenWidth&&(a.el.style.minWidth=n.width+2*n.padding+"px"),a.fixedWidth?a.el.style.right=t.scrollBar.getWidth()+"px":a.el.style.right=""}}}},e}();t.LineWidgets=o})),ace.define("ace/keyboard/gutter_handler",["require","exports","module","ace/lib/keys","ace/mouse/default_gutter_handler"],(function(e,t,n){"use strict";var i=e("../lib/keys"),o=e("../mouse/default_gutter_handler").GutterTooltip,r=function(){function e(e){this.editor=e,this.gutterLayer=e.renderer.$gutterLayer,this.element=e.renderer.$gutter,this.lines=e.renderer.$gutterLayer.$lines,this.activeRowIndex=null,this.activeLane=null,this.annotationTooltip=new o(this.editor)}return e.prototype.addListener=function(){this.element.addEventListener("keydown",this.$onGutterKeyDown.bind(this)),this.element.addEventListener("focusout",this.$blurGutter.bind(this)),this.editor.on("mousewheel",this.$blurGutter.bind(this))},e.prototype.removeListener=function(){this.element.removeEventListener("keydown",this.$onGutterKeyDown.bind(this)),this.element.removeEventListener("focusout",this.$blurGutter.bind(this)),this.editor.off("mousewheel",this.$blurGutter.bind(this))},e.prototype.$onGutterKeyDown=function(e){if(this.annotationTooltip.isOpen)return e.preventDefault(),void(e.keyCode===i.escape&&this.annotationTooltip.hideTooltip());if(e.target===this.element){if(e.keyCode!=i.enter)return;e.preventDefault();var t=this.editor.getCursorPosition().row;return this.editor.isRowVisible(t)||this.editor.scrollToLine(t,!0,!0),void setTimeout(function(){var e=this.$rowToRowIndex(this.gutterLayer.$cursorCell.row),t=this.$findNearestFoldWidget(e),n=this.$findNearestAnnotation(e);if(null!==t||null!==n)return null===t&&null!==n?(this.activeRowIndex=n,this.activeLane="annotation",void this.$focusAnnotation(this.activeRowIndex)):null!==t&&null===n?(this.activeRowIndex=t,this.activeLane="fold",void this.$focusFoldWidget(this.activeRowIndex)):Math.abs(n-e)0||e+t=0&&this.$isFoldWidgetVisible(e-t))return e-t;if(e+t<=this.lines.getLength()-1&&this.$isFoldWidgetVisible(e+t))return e+t}return null},e.prototype.$findNearestAnnotation=function(e){if(this.$isAnnotationVisible(e))return e;for(var t=0;e-t>0||e+t=0&&this.$isAnnotationVisible(e-t))return e-t;if(e+t<=this.lines.getLength()-1&&this.$isAnnotationVisible(e+t))return e+t}return null},e.prototype.$focusFoldWidget=function(e){if(null!=e){var t=this.$getFoldWidget(e);t.classList.add(this.editor.renderer.keyboardFocusClassName),t.focus()}},e.prototype.$focusAnnotation=function(e){if(null!=e){var t=this.$getAnnotation(e);t.classList.add(this.editor.renderer.keyboardFocusClassName),t.focus()}},e.prototype.$blurFoldWidget=function(e){var t=this.$getFoldWidget(e);t.classList.remove(this.editor.renderer.keyboardFocusClassName),t.blur()},e.prototype.$blurAnnotation=function(e){var t=this.$getAnnotation(e);t.classList.remove(this.editor.renderer.keyboardFocusClassName),t.blur()},e.prototype.$moveFoldWidgetUp=function(){for(var e=this.activeRowIndex;e>0;)if(e--,this.$isFoldWidgetVisible(e))return this.$blurFoldWidget(this.activeRowIndex),this.activeRowIndex=e,void this.$focusFoldWidget(this.activeRowIndex)},e.prototype.$moveFoldWidgetDown=function(){for(var e=this.activeRowIndex;e0;)if(e--,this.$isAnnotationVisible(e))return this.$blurAnnotation(this.activeRowIndex),this.activeRowIndex=e,void this.$focusAnnotation(this.activeRowIndex)},e.prototype.$moveAnnotationDown=function(){for(var e=this.activeRowIndex;e=e.length&&(e=void 0),{value:e&&e[i++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},o=e("./lib/oop"),r=e("./lib/dom"),s=e("./lib/lang"),a=e("./lib/useragent"),l=e("./keyboard/textinput").TextInput,c=e("./mouse/mouse_handler").MouseHandler,u=e("./mouse/fold_handler").FoldHandler,h=e("./keyboard/keybinding").KeyBinding,d=e("./edit_session").EditSession,p=e("./search").Search,g=e("./range").Range,m=e("./lib/event_emitter").EventEmitter,f=e("./commands/command_manager").CommandManager,y=e("./commands/default_commands").commands,b=e("./config"),v=e("./token_iterator").TokenIterator,w=e("./line_widgets").LineWidgets,A=e("./keyboard/gutter_handler").GutterKeyboardHandler,C=e("./config").nls,k=e("./clipboard"),x=e("./lib/keys"),S=function(){function e(t,n,i){this.$toDestroy=[];var o=t.getContainerElement();this.container=o,this.renderer=t,this.id="editor"+ ++e.$uid,this.commands=new f(a.isMac?"mac":"win",y),"object"==typeof document&&(this.textInput=new l(t.getTextAreaContainer(),this),this.renderer.textarea=this.textInput.getElement(),this.$mouseHandler=new c(this),new u(this)),this.keyBinding=new h(this),this.$search=(new p).set({wrap:!0}),this.$historyTracker=this.$historyTracker.bind(this),this.commands.on("exec",this.$historyTracker),this.$initOperationListeners(),this._$emitInputEvent=s.delayedCall(function(){this._signal("input",{}),this.session&&!this.session.destroyed&&this.session.bgTokenizer.scheduleStart()}.bind(this)),this.on("change",(function(e,t){t._$emitInputEvent.schedule(31)})),this.setSession(n||i&&i.session||new d("")),b.resetOptions(this),i&&this.setOptions(i),b._signal("editor",this)}return e.prototype.$initOperationListeners=function(){this.commands.on("exec",this.startOperation.bind(this),!0),this.commands.on("afterExec",this.endOperation.bind(this),!0),this.$opResetTimer=s.delayedCall(this.endOperation.bind(this,!0)),this.on("change",function(){this.curOp||(this.startOperation(),this.curOp.selectionBefore=this.$lastSel),this.curOp.docChanged=!0}.bind(this),!0),this.on("changeSelection",function(){this.curOp||(this.startOperation(),this.curOp.selectionBefore=this.$lastSel),this.curOp.selectionChanged=!0}.bind(this),!0)},e.prototype.startOperation=function(e){if(this.curOp){if(!e||this.curOp.command)return;this.prevOp=this.curOp}e||(this.previousCommand=null,e={}),this.$opResetTimer.schedule(),this.curOp=this.session.curOp={command:e.command||{},args:e.args,scrollTop:this.renderer.scrollTop},this.curOp.selectionBefore=this.selection.toJSON()},e.prototype.endOperation=function(e){if(this.curOp&&this.session){if(e&&!1===e.returnValue||!this.session)return this.curOp=null;if(1==e&&this.curOp.command&&"mouse"==this.curOp.command.name)return;if(this._signal("beforeEndOperation"),!this.curOp)return;var t=this.curOp.command,n=t&&t.scrollIntoView;if(n){switch(n){case"center-animate":n="animate";case"center":this.renderer.scrollCursorIntoView(null,.5);break;case"animate":case"cursor":this.renderer.scrollCursorIntoView();break;case"selectionPart":var i=this.selection.getRange(),o=this.renderer.layerConfig;(i.start.row>=o.lastRow||i.end.row<=o.firstRow)&&this.renderer.scrollSelectionIntoView(this.selection.anchor,this.selection.lead)}"animate"==n&&this.renderer.animateScrolling(this.curOp.scrollTop)}var r=this.selection.toJSON();this.curOp.selectionAfter=r,this.$lastSel=this.selection.toJSON(),this.session.getUndoManager().addSelection(r),this.prevOp=this.curOp,this.curOp=null}},e.prototype.$historyTracker=function(e){if(this.$mergeUndoDeltas){var t=this.prevOp,n=this.$mergeableCommands,i=t.command&&e.command.name==t.command.name;if("insertstring"==e.command.name){var o=e.args;void 0===this.mergeNextCommand&&(this.mergeNextCommand=!0),i=i&&this.mergeNextCommand&&(!/\s/.test(o)||/\s/.test(t.args)),this.mergeNextCommand=!0}else i=i&&-1!==n.indexOf(e.command.name);"always"!=this.$mergeUndoDeltas&&Date.now()-this.sequenceStartTime>2e3&&(i=!1),i?this.session.mergeUndoDeltas=!0:-1!==n.indexOf(e.command.name)&&(this.sequenceStartTime=Date.now())}},e.prototype.setKeyboardHandler=function(e,t){if(e&&"string"==typeof e&&"ace"!=e){this.$keybindingId=e;var n=this;b.loadModule(["keybinding",e],(function(i){n.$keybindingId==e&&n.keyBinding.setKeyboardHandler(i&&i.handler),t&&t()}))}else this.$keybindingId=null,this.keyBinding.setKeyboardHandler(e),t&&t()},e.prototype.getKeyboardHandler=function(){return this.keyBinding.getKeyboardHandler()},e.prototype.setSession=function(e){if(this.session!=e){this.curOp&&this.endOperation(),this.curOp={};var t=this.session;if(t){this.session.off("change",this.$onDocumentChange),this.session.off("changeMode",this.$onChangeMode),this.session.off("tokenizerUpdate",this.$onTokenizerUpdate),this.session.off("changeTabSize",this.$onChangeTabSize),this.session.off("changeWrapLimit",this.$onChangeWrapLimit),this.session.off("changeWrapMode",this.$onChangeWrapMode),this.session.off("changeFold",this.$onChangeFold),this.session.off("changeFrontMarker",this.$onChangeFrontMarker),this.session.off("changeBackMarker",this.$onChangeBackMarker),this.session.off("changeBreakpoint",this.$onChangeBreakpoint),this.session.off("changeAnnotation",this.$onChangeAnnotation),this.session.off("changeOverwrite",this.$onCursorChange),this.session.off("changeScrollTop",this.$onScrollTopChange),this.session.off("changeScrollLeft",this.$onScrollLeftChange);var n=this.session.getSelection();n.off("changeCursor",this.$onCursorChange),n.off("changeSelection",this.$onSelectionChange)}this.session=e,e?(this.$onDocumentChange=this.onDocumentChange.bind(this),e.on("change",this.$onDocumentChange),this.renderer.setSession(e),this.$onChangeMode=this.onChangeMode.bind(this),e.on("changeMode",this.$onChangeMode),this.$onTokenizerUpdate=this.onTokenizerUpdate.bind(this),e.on("tokenizerUpdate",this.$onTokenizerUpdate),this.$onChangeTabSize=this.renderer.onChangeTabSize.bind(this.renderer),e.on("changeTabSize",this.$onChangeTabSize),this.$onChangeWrapLimit=this.onChangeWrapLimit.bind(this),e.on("changeWrapLimit",this.$onChangeWrapLimit),this.$onChangeWrapMode=this.onChangeWrapMode.bind(this),e.on("changeWrapMode",this.$onChangeWrapMode),this.$onChangeFold=this.onChangeFold.bind(this),e.on("changeFold",this.$onChangeFold),this.$onChangeFrontMarker=this.onChangeFrontMarker.bind(this),this.session.on("changeFrontMarker",this.$onChangeFrontMarker),this.$onChangeBackMarker=this.onChangeBackMarker.bind(this),this.session.on("changeBackMarker",this.$onChangeBackMarker),this.$onChangeBreakpoint=this.onChangeBreakpoint.bind(this),this.session.on("changeBreakpoint",this.$onChangeBreakpoint),this.$onChangeAnnotation=this.onChangeAnnotation.bind(this),this.session.on("changeAnnotation",this.$onChangeAnnotation),this.$onCursorChange=this.onCursorChange.bind(this),this.session.on("changeOverwrite",this.$onCursorChange),this.$onScrollTopChange=this.onScrollTopChange.bind(this),this.session.on("changeScrollTop",this.$onScrollTopChange),this.$onScrollLeftChange=this.onScrollLeftChange.bind(this),this.session.on("changeScrollLeft",this.$onScrollLeftChange),this.selection=e.getSelection(),this.selection.on("changeCursor",this.$onCursorChange),this.$onSelectionChange=this.onSelectionChange.bind(this),this.selection.on("changeSelection",this.$onSelectionChange),this.onChangeMode(),this.onCursorChange(),this.onScrollTopChange(),this.onScrollLeftChange(),this.onSelectionChange(),this.onChangeFrontMarker(),this.onChangeBackMarker(),this.onChangeBreakpoint(),this.onChangeAnnotation(),this.session.getUseWrapMode()&&this.renderer.adjustWrapLimit(),this.renderer.updateFull()):(this.selection=null,this.renderer.setSession(e)),this._signal("changeSession",{session:e,oldSession:t}),this.curOp=null,t&&t._signal("changeEditor",{oldEditor:this}),e&&e._signal("changeEditor",{editor:this}),e&&!e.destroyed&&e.bgTokenizer.scheduleStart()}},e.prototype.getSession=function(){return this.session},e.prototype.setValue=function(e,t){return this.session.doc.setValue(e),t?1==t?this.navigateFileEnd():-1==t&&this.navigateFileStart():this.selectAll(),e},e.prototype.getValue=function(){return this.session.getValue()},e.prototype.getSelection=function(){return this.selection},e.prototype.resize=function(e){this.renderer.onResize(e)},e.prototype.setTheme=function(e,t){this.renderer.setTheme(e,t)},e.prototype.getTheme=function(){return this.renderer.getTheme()},e.prototype.setStyle=function(e){this.renderer.setStyle(e)},e.prototype.unsetStyle=function(e){this.renderer.unsetStyle(e)},e.prototype.getFontSize=function(){return this.getOption("fontSize")||r.computedStyle(this.container).fontSize},e.prototype.setFontSize=function(e){this.setOption("fontSize",e)},e.prototype.$highlightBrackets=function(){if(!this.$highlightPending){var e=this;this.$highlightPending=!0,setTimeout((function(){e.$highlightPending=!1;var t=e.session;if(t&&!t.destroyed){t.$bracketHighlight&&(t.$bracketHighlight.markerIds.forEach((function(e){t.removeMarker(e)})),t.$bracketHighlight=null);var n=e.getCursorPosition(),i=e.getKeyboardHandler(),o=i&&i.$getDirectionForHighlight&&i.$getDirectionForHighlight(e),r=t.getMatchingBracketRanges(n,o);if(!r){var s=new v(t,n.row,n.column).getCurrentToken();if(s&&/\b(?:tag-open|tag-name)/.test(s.type)){var a=t.getMatchingTags(n);a&&(r=[a.openTagName,a.closeTagName])}}if(!r&&t.$mode.getMatching&&(r=t.$mode.getMatching(e.session)),r){var l="ace_bracket";Array.isArray(r)?1==r.length&&(l="ace_error_bracket"):r=[r],2==r.length&&(0==g.comparePoints(r[0].end,r[1].start)?r=[g.fromPoints(r[0].start,r[1].end)]:0==g.comparePoints(r[0].start,r[1].end)&&(r=[g.fromPoints(r[1].start,r[0].end)])),t.$bracketHighlight={ranges:r,markerIds:r.map((function(e){return t.addMarker(e,l,"text")}))},e.getHighlightIndentGuides()&&e.renderer.$textLayer.$highlightIndentGuide()}else e.getHighlightIndentGuides()&&e.renderer.$textLayer.$highlightIndentGuide()}}),50)}},e.prototype.focus=function(){this.textInput.focus()},e.prototype.isFocused=function(){return this.textInput.isFocused()},e.prototype.blur=function(){this.textInput.blur()},e.prototype.onFocus=function(e){this.$isFocused||(this.$isFocused=!0,this.renderer.showCursor(),this.renderer.visualizeFocus(),this._emit("focus",e))},e.prototype.onBlur=function(e){this.$isFocused&&(this.$isFocused=!1,this.renderer.hideCursor(),this.renderer.visualizeBlur(),this._emit("blur",e))},e.prototype.$cursorChange=function(){this.renderer.updateCursor(),this.$highlightBrackets(),this.$updateHighlightActiveLine()},e.prototype.onDocumentChange=function(e){var t=this.session.$useWrapMode,n=e.start.row==e.end.row?e.end.row:1/0;this.renderer.updateLines(e.start.row,n,t),this._signal("change",e),this.$cursorChange()},e.prototype.onTokenizerUpdate=function(e){var t=e.data;this.renderer.updateLines(t.first,t.last)},e.prototype.onScrollTopChange=function(){this.renderer.scrollToY(this.session.getScrollTop())},e.prototype.onScrollLeftChange=function(){this.renderer.scrollToX(this.session.getScrollLeft())},e.prototype.onCursorChange=function(){this.$cursorChange(),this._signal("changeSelection")},e.prototype.$updateHighlightActiveLine=function(){var e,t=this.getSession();if(this.$highlightActiveLine&&("line"==this.$selectionStyle&&this.selection.isMultiLine()||(e=this.getCursorPosition()),this.renderer.theme&&this.renderer.theme.$selectionColorConflict&&!this.selection.isEmpty()&&(e=!1),!this.renderer.$maxLines||1!==this.session.getLength()||this.renderer.$minLines>1||(e=!1)),t.$highlightLineMarker&&!e)t.removeMarker(t.$highlightLineMarker.id),t.$highlightLineMarker=null;else if(!t.$highlightLineMarker&&e){var n=new g(e.row,e.column,e.row,1/0);n.id=t.addMarker(n,"ace_active-line","screenLine"),t.$highlightLineMarker=n}else e&&(t.$highlightLineMarker.start.row=e.row,t.$highlightLineMarker.end.row=e.row,t.$highlightLineMarker.start.column=e.column,t._signal("changeBackMarker"))},e.prototype.onSelectionChange=function(e){var t=this.session;if(t.$selectionMarker&&t.removeMarker(t.$selectionMarker),t.$selectionMarker=null,this.selection.isEmpty())this.$updateHighlightActiveLine();else{var n=this.selection.getRange(),i=this.getSelectionStyle();t.$selectionMarker=t.addMarker(n,"ace_selection",i)}var o=this.$highlightSelectedWord&&this.$getSelectionHighLightRegexp();this.session.highlight(o),this._signal("changeSelection")},e.prototype.$getSelectionHighLightRegexp=function(){var e=this.session,t=this.getSelectionRange();if(!t.isEmpty()&&!t.isMultiLine()){var n=t.start.column,i=t.end.column,o=e.getLine(t.start.row),r=o.substring(n,i);if(!(r.length>5e3)&&/[\w\d]/.test(r)){var s=this.$search.$assembleRegExp({wholeWord:!0,caseSensitive:!0,needle:r}),a=o.substring(n-1,i+1);if(s.test(a))return s}}},e.prototype.onChangeFrontMarker=function(){this.renderer.updateFrontMarkers()},e.prototype.onChangeBackMarker=function(){this.renderer.updateBackMarkers()},e.prototype.onChangeBreakpoint=function(){this.renderer.updateBreakpoints()},e.prototype.onChangeAnnotation=function(){this.renderer.setAnnotations(this.session.getAnnotations())},e.prototype.onChangeMode=function(e){this.renderer.updateText(),this._emit("changeMode",e)},e.prototype.onChangeWrapLimit=function(){this.renderer.updateFull()},e.prototype.onChangeWrapMode=function(){this.renderer.onResize(!0)},e.prototype.onChangeFold=function(){this.$updateHighlightActiveLine(),this.renderer.updateFull()},e.prototype.getSelectedText=function(){return this.session.getTextRange(this.getSelectionRange())},e.prototype.getCopyText=function(){var e=this.getSelectedText(),t=this.session.doc.getNewLineCharacter(),n=!1;if(!e&&this.$copyWithEmptySelection){n=!0;for(var i=this.selection.getAllRanges(),o=0;oa.search(/\S|$/)){var l=a.substr(o.column).search(/\S|$/);n.doc.removeInLine(o.row,o.column,o.column+l)}}this.clearSelection();var c=o.column,u=n.getState(o.row),h=(a=n.getLine(o.row),i.checkOutdent(u,a,e));if(n.insert(o,e),r&&r.selection&&(2==r.selection.length?this.selection.setSelectionRange(new g(o.row,c+r.selection[0],o.row,c+r.selection[1])):this.selection.setSelectionRange(new g(o.row+r.selection[0],r.selection[1],o.row+r.selection[2],r.selection[3]))),this.$enableAutoIndent){if(n.getDocument().isNewLine(e)){var d=i.getNextLineIndent(u,a.slice(0,o.column),n.getTabString());n.insert({row:o.row+1,column:0},d)}h&&i.autoOutdent(u,n,o.row)}},e.prototype.autoIndent=function(){var e,t,n=this.session,i=n.getMode();if(this.selection.isEmpty())e=0,t=n.doc.getLength()-1;else{var o=this.getSelectionRange();e=o.start.row,t=o.end.row}for(var r,s,a,l="",c="",u="",h=n.getTabString(),d=e;d<=t;d++)d>0&&(l=n.getState(d-1),c=n.getLine(d-1),u=i.getNextLineIndent(l,c,h)),r=n.getLine(d),u!==(s=i.$getIndent(r))&&(s.length>0&&(a=new g(d,0,d,s.length),n.remove(a)),u.length>0&&n.insert({row:d,column:0},u)),i.autoOutdent(l,n,d)},e.prototype.onTextInput=function(e,t){if(!t)return this.keyBinding.onTextInput(e);this.startOperation({command:{name:"insertstring"}});var n=this.applyComposition.bind(this,e,t);this.selection.rangeCount?this.forEachSelection(n):n(),this.endOperation()},e.prototype.applyComposition=function(e,t){var n;(t.extendLeft||t.extendRight)&&((n=this.selection.getRange()).start.column-=t.extendLeft,n.end.column+=t.extendRight,n.start.column<0&&(n.start.row--,n.start.column+=this.session.getLine(n.start.row).length+1),this.selection.setRange(n),e||n.isEmpty()||this.remove()),!e&&this.selection.isEmpty()||this.insert(e,!0),(t.restoreStart||t.restoreEnd)&&((n=this.selection.getRange()).start.column-=t.restoreStart,n.end.column-=t.restoreEnd,this.selection.setRange(n))},e.prototype.onCommandKey=function(e,t,n){return this.keyBinding.onCommandKey(e,t,n)},e.prototype.setOverwrite=function(e){this.session.setOverwrite(e)},e.prototype.getOverwrite=function(){return this.session.getOverwrite()},e.prototype.toggleOverwrite=function(){this.session.toggleOverwrite()},e.prototype.setScrollSpeed=function(e){this.setOption("scrollSpeed",e)},e.prototype.getScrollSpeed=function(){return this.getOption("scrollSpeed")},e.prototype.setDragDelay=function(e){this.setOption("dragDelay",e)},e.prototype.getDragDelay=function(){return this.getOption("dragDelay")},e.prototype.setSelectionStyle=function(e){this.setOption("selectionStyle",e)},e.prototype.getSelectionStyle=function(){return this.getOption("selectionStyle")},e.prototype.setHighlightActiveLine=function(e){this.setOption("highlightActiveLine",e)},e.prototype.getHighlightActiveLine=function(){return this.getOption("highlightActiveLine")},e.prototype.setHighlightGutterLine=function(e){this.setOption("highlightGutterLine",e)},e.prototype.getHighlightGutterLine=function(){return this.getOption("highlightGutterLine")},e.prototype.setHighlightSelectedWord=function(e){this.setOption("highlightSelectedWord",e)},e.prototype.getHighlightSelectedWord=function(){return this.$highlightSelectedWord},e.prototype.setAnimatedScroll=function(e){this.renderer.setAnimatedScroll(e)},e.prototype.getAnimatedScroll=function(){return this.renderer.getAnimatedScroll()},e.prototype.setShowInvisibles=function(e){this.renderer.setShowInvisibles(e)},e.prototype.getShowInvisibles=function(){return this.renderer.getShowInvisibles()},e.prototype.setDisplayIndentGuides=function(e){this.renderer.setDisplayIndentGuides(e)},e.prototype.getDisplayIndentGuides=function(){return this.renderer.getDisplayIndentGuides()},e.prototype.setHighlightIndentGuides=function(e){this.renderer.setHighlightIndentGuides(e)},e.prototype.getHighlightIndentGuides=function(){return this.renderer.getHighlightIndentGuides()},e.prototype.setShowPrintMargin=function(e){this.renderer.setShowPrintMargin(e)},e.prototype.getShowPrintMargin=function(){return this.renderer.getShowPrintMargin()},e.prototype.setPrintMarginColumn=function(e){this.renderer.setPrintMarginColumn(e)},e.prototype.getPrintMarginColumn=function(){return this.renderer.getPrintMarginColumn()},e.prototype.setReadOnly=function(e){this.setOption("readOnly",e)},e.prototype.getReadOnly=function(){return this.getOption("readOnly")},e.prototype.setBehavioursEnabled=function(e){this.setOption("behavioursEnabled",e)},e.prototype.getBehavioursEnabled=function(){return this.getOption("behavioursEnabled")},e.prototype.setWrapBehavioursEnabled=function(e){this.setOption("wrapBehavioursEnabled",e)},e.prototype.getWrapBehavioursEnabled=function(){return this.getOption("wrapBehavioursEnabled")},e.prototype.setShowFoldWidgets=function(e){this.setOption("showFoldWidgets",e)},e.prototype.getShowFoldWidgets=function(){return this.getOption("showFoldWidgets")},e.prototype.setFadeFoldWidgets=function(e){this.setOption("fadeFoldWidgets",e)},e.prototype.getFadeFoldWidgets=function(){return this.getOption("fadeFoldWidgets")},e.prototype.remove=function(e){this.selection.isEmpty()&&("left"==e?this.selection.selectLeft():this.selection.selectRight());var t=this.getSelectionRange();if(this.getBehavioursEnabled()){var n=this.session,i=n.getState(t.start.row),o=n.getMode().transformAction(i,"deletion",this,n,t);if(0===t.end.column){var r=n.getTextRange(t);if("\n"==r[r.length-1]){var s=n.getLine(t.end.row);/^\s+$/.test(s)&&(t.end.column=s.length)}}o&&(t=o)}this.session.remove(t),this.clearSelection()},e.prototype.removeWordRight=function(){this.selection.isEmpty()&&this.selection.selectWordRight(),this.session.remove(this.getSelectionRange()),this.clearSelection()},e.prototype.removeWordLeft=function(){this.selection.isEmpty()&&this.selection.selectWordLeft(),this.session.remove(this.getSelectionRange()),this.clearSelection()},e.prototype.removeToLineStart=function(){this.selection.isEmpty()&&this.selection.selectLineStart(),this.selection.isEmpty()&&this.selection.selectLeft(),this.session.remove(this.getSelectionRange()),this.clearSelection()},e.prototype.removeToLineEnd=function(){this.selection.isEmpty()&&this.selection.selectLineEnd();var e=this.getSelectionRange();e.start.column==e.end.column&&e.start.row==e.end.row&&(e.end.column=0,e.end.row++),this.session.remove(e),this.clearSelection()},e.prototype.splitLine=function(){this.selection.isEmpty()||(this.session.remove(this.getSelectionRange()),this.clearSelection());var e=this.getCursorPosition();this.insert("\n"),this.moveCursorToPosition(e)},e.prototype.setGhostText=function(e,t){this.session.widgetManager||(this.session.widgetManager=new w(this.session),this.session.widgetManager.attach(this)),this.renderer.setGhostText(e,t)},e.prototype.removeGhostText=function(){this.session.widgetManager&&this.renderer.removeGhostText()},e.prototype.transposeLetters=function(){if(this.selection.isEmpty()){var e=this.getCursorPosition(),t=e.column;if(0!==t){var n,i,o=this.session.getLine(e.row);tt.toLowerCase()?1:0}));var o=new g(0,0,0,0);for(i=e.first;i<=e.last;i++){var r=t.getLine(i);o.start.row=i,o.end.row=i,o.end.column=r.length,t.replace(o,n[i-e.first])}},e.prototype.toggleCommentLines=function(){var e=this.session.getState(this.getCursorPosition().row),t=this.$getSelectedRows();this.session.getMode().toggleCommentLines(e,this.session,t.first,t.last)},e.prototype.toggleBlockComment=function(){var e=this.getCursorPosition(),t=this.session.getState(e.row),n=this.getSelectionRange();this.session.getMode().toggleBlockComment(t,this.session,n,e)},e.prototype.getNumberAt=function(e,t){var n=/[\-]?[0-9]+(?:\.[0-9]+)?/g;n.lastIndex=0;for(var i=this.session.getLine(e);n.lastIndex=t)return{value:o[0],start:o.index,end:o.index+o[0].length}}return null},e.prototype.modifyNumber=function(e){var t=this.selection.getCursor().row,n=this.selection.getCursor().column,i=new g(t,n-1,t,n),o=this.session.getTextRange(i);if(!isNaN(parseFloat(o))&&isFinite(o)){var r=this.getNumberAt(t,n);if(r){var s=r.value.indexOf(".")>=0?r.start+r.value.indexOf(".")+1:r.end,a=r.start+r.value.length-s,l=parseFloat(r.value);l*=Math.pow(10,a),s!==r.end&&n=a&&r<=l&&(n=t,c.selection.clearSelection(),c.moveCursorTo(e,a+i),c.selection.selectTo(e,l+i)),a=l}));for(var u,h=this.$toggleWordPairs,d=0;d=l&&s<=c&&d.match(/((?:https?|ftp):\/\/[\S]+)/)){a=d.replace(/[\s:.,'";}\]]+$/,"");break}l=c}}catch(e){n={error:e}}finally{try{h&&!h.done&&(o=u.return)&&o.call(u)}finally{if(n)throw n.error}}return a},e.prototype.openLink=function(){var e=this.selection.getCursor(),t=this.findLinkAt(e.row,e.column);return t&&window.open(t,"_blank"),null!=t},e.prototype.removeLines=function(){var e=this.$getSelectedRows();this.session.removeFullLines(e.first,e.last),this.clearSelection()},e.prototype.duplicateSelection=function(){var e=this.selection,t=this.session,n=e.getRange(),i=e.isBackwards();if(n.isEmpty()){var o=n.start.row;t.duplicateLines(o,o)}else{var r=i?n.start:n.end,s=t.insert(r,t.getTextRange(n),!1);n.start=r,n.end=s,e.setSelectionRange(n,i)}},e.prototype.moveLinesDown=function(){this.$moveLines(1,!1)},e.prototype.moveLinesUp=function(){this.$moveLines(-1,!1)},e.prototype.moveText=function(e,t,n){return this.session.moveText(e,t,n)},e.prototype.copyLinesUp=function(){this.$moveLines(-1,!0)},e.prototype.copyLinesDown=function(){this.$moveLines(1,!0)},e.prototype.$moveLines=function(e,t){var n,i,o=this.selection;if(!o.inMultiSelectMode||this.inVirtualSelectionMode){var r=o.toOrientedRange();n=this.$getSelectedRows(r),i=this.session.$moveLines(n.first,n.last,t?0:e),t&&-1==e&&(i=0),r.moveBy(i,0),o.fromOrientedRange(r)}else{var s=o.rangeList.ranges;o.rangeList.detach(this.session),this.inVirtualSelectionMode=!0;for(var a=0,l=0,c=s.length,u=0;up+1)break;p=g.last}for(u--,a=this.session.$moveLines(d,p,t?0:e),t&&-1==e&&(h=u+1);h<=u;)s[h].moveBy(a,0),h++;t||(a=0),l+=a}o.fromOrientedRange(o.ranges[0]),o.rangeList.attach(this.session),this.inVirtualSelectionMode=!1}},e.prototype.$getSelectedRows=function(e){return e=(e||this.getSelectionRange()).collapseRows(),{first:this.session.getRowFoldStart(e.start.row),last:this.session.getRowFoldEnd(e.end.row)}},e.prototype.onCompositionStart=function(e){this.renderer.showComposition(e)},e.prototype.onCompositionUpdate=function(e){this.renderer.setCompositionText(e)},e.prototype.onCompositionEnd=function(){this.renderer.hideComposition()},e.prototype.getFirstVisibleRow=function(){return this.renderer.getFirstVisibleRow()},e.prototype.getLastVisibleRow=function(){return this.renderer.getLastVisibleRow()},e.prototype.isRowVisible=function(e){return e>=this.getFirstVisibleRow()&&e<=this.getLastVisibleRow()},e.prototype.isRowFullyVisible=function(e){return e>=this.renderer.getFirstFullyVisibleRow()&&e<=this.renderer.getLastFullyVisibleRow()},e.prototype.$getVisibleRowCount=function(){return this.renderer.getScrollBottomRow()-this.renderer.getScrollTopRow()+1},e.prototype.$moveByPage=function(e,t){var n=this.renderer,i=this.renderer.layerConfig,o=e*Math.floor(i.height/i.lineHeight);!0===t?this.selection.$moveSelection((function(){this.moveCursorBy(o,0)})):!1===t&&(this.selection.moveCursorBy(o,0),this.selection.clearSelection());var r=n.scrollTop;n.scrollBy(0,o*i.lineHeight),null!=t&&n.scrollCursorIntoView(null,.5),n.animateScrolling(r)},e.prototype.selectPageDown=function(){this.$moveByPage(1,!0)},e.prototype.selectPageUp=function(){this.$moveByPage(-1,!0)},e.prototype.gotoPageDown=function(){this.$moveByPage(1,!1)},e.prototype.gotoPageUp=function(){this.$moveByPage(-1,!1)},e.prototype.scrollPageDown=function(){this.$moveByPage(1)},e.prototype.scrollPageUp=function(){this.$moveByPage(-1)},e.prototype.scrollToRow=function(e){this.renderer.scrollToRow(e)},e.prototype.scrollToLine=function(e,t,n,i){this.renderer.scrollToLine(e,t,n,i)},e.prototype.centerSelection=function(){var e=this.getSelectionRange(),t={row:Math.floor(e.start.row+(e.end.row-e.start.row)/2),column:Math.floor(e.start.column+(e.end.column-e.start.column)/2)};this.renderer.alignCursor(t,.5)},e.prototype.getCursorPosition=function(){return this.selection.getCursor()},e.prototype.getCursorPositionScreen=function(){return this.session.documentToScreenPosition(this.getCursorPosition())},e.prototype.getSelectionRange=function(){return this.selection.getRange()},e.prototype.selectAll=function(){this.selection.selectAll()},e.prototype.clearSelection=function(){this.selection.clearSelection()},e.prototype.moveCursorTo=function(e,t){this.selection.moveCursorTo(e,t)},e.prototype.moveCursorToPosition=function(e){this.selection.moveCursorToPosition(e)},e.prototype.jumpToMatching=function(e,t){var n=this.getCursorPosition(),i=new v(this.session,n.row,n.column),o=i.getCurrentToken(),r=0;o&&-1!==o.type.indexOf("tag-name")&&(o=i.stepBackward());var s=o||i.stepForward();if(s){var a,l,c=!1,u={},h=n.column-s.start,d={")":"(","(":"(","]":"[","[":"[","{":"{","}":"{"};do{if(s.value.match(/[{}()\[\]]/g)){for(;h1?u[s.value]++:"=0;--r)this.$tryReplace(n[r],e)&&i++;return this.selection.setSelectionRange(o),i},e.prototype.$tryReplace=function(e,t){var n=this.session.getTextRange(e);return null!==(t=this.$search.replace(n,t))?(e.end=this.session.replace(e,t),e):null},e.prototype.getLastSearchOptions=function(){return this.$search.getOptions()},e.prototype.find=function(e,t,n){t||(t={}),"string"==typeof e||e instanceof RegExp?t.needle=e:"object"==typeof e&&o.mixin(t,e);var i=this.selection.getRange();null==t.needle&&((e=this.session.getTextRange(i)||this.$search.$options.needle)||(i=this.session.getWordRange(i.start.row,i.start.column),e=this.session.getTextRange(i)),this.$search.set({needle:e})),this.$search.set(t),t.start||this.$search.set({start:i});var r=this.$search.find(this.session);return t.preventScroll?r:r?(this.revealRange(r,n),r):(t.backwards?i.start=i.end:i.end=i.start,void this.selection.setRange(i))},e.prototype.findNext=function(e,t){this.find({skipCurrent:!0,backwards:!1},e,t)},e.prototype.findPrevious=function(e,t){this.find(e,{skipCurrent:!0,backwards:!0},t)},e.prototype.revealRange=function(e,t){this.session.unfold(e),this.selection.setSelectionRange(e);var n=this.renderer.scrollTop;this.renderer.scrollSelectionIntoView(e.start,e.end,.5),!1!==t&&this.renderer.animateScrolling(n)},e.prototype.undo=function(){this.session.getUndoManager().undo(this.session),this.renderer.scrollCursorIntoView(null,.5)},e.prototype.redo=function(){this.session.getUndoManager().redo(this.session),this.renderer.scrollCursorIntoView(null,.5)},e.prototype.destroy=function(){this.$toDestroy&&(this.$toDestroy.forEach((function(e){e.destroy()})),this.$toDestroy=null),this.$mouseHandler&&this.$mouseHandler.destroy(),this.renderer.destroy(),this._signal("destroy",this),this.session&&this.session.destroy(),this._$emitInputEvent&&this._$emitInputEvent.cancel(),this.removeAllListeners()},e.prototype.setAutoScrollEditorIntoView=function(e){if(e){var t,n=this,i=!1;this.$scrollAnchor||(this.$scrollAnchor=document.createElement("div"));var o=this.$scrollAnchor;o.style.cssText="position:absolute",this.container.insertBefore(o,this.container.firstChild);var r=this.on("changeSelection",(function(){i=!0})),s=this.renderer.on("beforeRender",(function(){i&&(t=n.renderer.container.getBoundingClientRect())})),a=this.renderer.on("afterRender",(function(){if(i&&t&&(n.isFocused()||n.searchBox&&n.searchBox.isFocused())){var e=n.renderer,r=e.$cursorLayer.$pixelPos,s=e.layerConfig,a=r.top-s.offset;null!=(i=r.top>=0&&a+t.top<0||!(r.topwindow.innerHeight)&&null)&&(o.style.top=a+"px",o.style.left=r.left+"px",o.style.height=s.lineHeight+"px",o.scrollIntoView(i)),i=t=null}}));this.setAutoScrollEditorIntoView=function(e){e||(delete this.setAutoScrollEditorIntoView,this.off("changeSelection",r),this.renderer.off("afterRender",a),this.renderer.off("beforeRender",s))}}},e.prototype.$resetCursorStyle=function(){var e=this.$cursorStyle||"ace",t=this.renderer.$cursorLayer;t&&(t.setSmoothBlinking(/smooth/.test(e)),t.isBlinking=!this.$readOnly&&"wide"!=e,r.setCssClass(t.element,"ace_slim-cursors",/slim/.test(e)))},e.prototype.prompt=function(e,t,n){var i=this;b.loadModule("ace/ext/prompt",(function(o){o.prompt(i,e,t,n)}))},e}();S.$uid=0,S.prototype.curOp=null,S.prototype.prevOp={},S.prototype.$mergeableCommands=["backspace","del","insertstring"],S.prototype.$toggleWordPairs=[["first","last"],["true","false"],["yes","no"],["width","height"],["top","bottom"],["right","left"],["on","off"],["x","y"],["get","set"],["max","min"],["horizontal","vertical"],["show","hide"],["add","remove"],["up","down"],["before","after"],["even","odd"],["in","out"],["inside","outside"],["next","previous"],["increase","decrease"],["attach","detach"],["&&","||"],["==","!="]],o.implement(S.prototype,m),b.defineOptions(S.prototype,"editor",{selectionStyle:{set:function(e){this.onSelectionChange(),this._signal("changeSelectionStyle",{data:e})},initialValue:"line"},highlightActiveLine:{set:function(){this.$updateHighlightActiveLine()},initialValue:!0},highlightSelectedWord:{set:function(e){this.$onSelectionChange()},initialValue:!0},readOnly:{set:function(e){this.textInput.setReadOnly(e),this.$resetCursorStyle()},initialValue:!1},copyWithEmptySelection:{set:function(e){this.textInput.setCopyWithEmptySelection(e)},initialValue:!1},cursorStyle:{set:function(e){this.$resetCursorStyle()},values:["ace","slim","smooth","wide"],initialValue:"ace"},mergeUndoDeltas:{values:[!1,!0,"always"],initialValue:!0},behavioursEnabled:{initialValue:!0},wrapBehavioursEnabled:{initialValue:!0},enableAutoIndent:{initialValue:!0},autoScrollEditorIntoView:{set:function(e){this.setAutoScrollEditorIntoView(e)}},keyboardHandler:{set:function(e){this.setKeyboardHandler(e)},get:function(){return this.$keybindingId},handlesSet:!0},value:{set:function(e){this.session.setValue(e)},get:function(){return this.getValue()},handlesSet:!0,hidden:!0},session:{set:function(e){this.setSession(e)},get:function(){return this.session},handlesSet:!0,hidden:!0},showLineNumbers:{set:function(e){this.renderer.$gutterLayer.setShowLineNumbers(e),this.renderer.$loop.schedule(this.renderer.CHANGE_GUTTER),e&&this.$relativeLineNumbers?$.attach(this):$.detach(this)},initialValue:!0},relativeLineNumbers:{set:function(e){this.$showLineNumbers&&e?$.attach(this):$.detach(this)}},placeholder:{set:function(e){this.$updatePlaceholder||(this.$updatePlaceholder=function(){var e=this.session&&(this.renderer.$composition||this.session.getLength()>1||this.session.getLine(0).length>0);if(e&&this.renderer.placeholderNode)this.renderer.off("afterRender",this.$updatePlaceholder),r.removeCssClass(this.container,"ace_hasPlaceholder"),this.renderer.placeholderNode.remove(),this.renderer.placeholderNode=null;else if(e||this.renderer.placeholderNode)!e&&this.renderer.placeholderNode&&(this.renderer.placeholderNode.textContent=this.$placeholder||"");else{this.renderer.on("afterRender",this.$updatePlaceholder),r.addCssClass(this.container,"ace_hasPlaceholder");var t=r.createElement("div");t.className="ace_placeholder",t.textContent=this.$placeholder||"",this.renderer.placeholderNode=t,this.renderer.content.appendChild(this.renderer.placeholderNode)}}.bind(this),this.on("input",this.$updatePlaceholder)),this.$updatePlaceholder()}},enableKeyboardAccessibility:{set:function(e){var t,n={name:"blurTextInput",description:"Set focus to the editor content div to allow tabbing through the page",bindKey:"Esc",exec:function(e){e.blur(),e.renderer.scroller.focus()},readOnly:!0},i=function(e){if(e.target==this.renderer.scroller&&e.keyCode===x.enter){e.preventDefault();var t=this.getCursorPosition().row;this.isRowVisible(t)||this.scrollToLine(t,!0,!0),this.focus()}};e?(this.renderer.enableKeyboardAccessibility=!0,this.renderer.keyboardFocusClassName="ace_keyboard-focus",this.textInput.getElement().setAttribute("tabindex",-1),this.textInput.setNumberOfExtraLines(a.isWin?3:0),this.renderer.scroller.setAttribute("tabindex",0),this.renderer.scroller.setAttribute("role","group"),this.renderer.scroller.setAttribute("aria-roledescription",C("editor")),this.renderer.scroller.classList.add(this.renderer.keyboardFocusClassName),this.renderer.scroller.setAttribute("aria-label",C("Editor content, press Enter to start editing, press Escape to exit")),this.renderer.scroller.addEventListener("keyup",i.bind(this)),this.commands.addCommand(n),this.renderer.$gutter.setAttribute("tabindex",0),this.renderer.$gutter.setAttribute("aria-hidden",!1),this.renderer.$gutter.setAttribute("role","group"),this.renderer.$gutter.setAttribute("aria-roledescription",C("editor")),this.renderer.$gutter.setAttribute("aria-label",C("Editor gutter, press Enter to interact with controls using arrow keys, press Escape to exit")),this.renderer.$gutter.classList.add(this.renderer.keyboardFocusClassName),this.renderer.content.setAttribute("aria-hidden",!0),t||(t=new A(this)),t.addListener()):(this.renderer.enableKeyboardAccessibility=!1,this.textInput.getElement().setAttribute("tabindex",0),this.textInput.setNumberOfExtraLines(0),this.renderer.scroller.setAttribute("tabindex",-1),this.renderer.scroller.removeAttribute("role"),this.renderer.scroller.removeAttribute("aria-roledescription"),this.renderer.scroller.classList.remove(this.renderer.keyboardFocusClassName),this.renderer.scroller.removeAttribute("aria-label"),this.renderer.scroller.removeEventListener("keyup",i.bind(this)),this.commands.removeCommand(n),this.renderer.content.removeAttribute("aria-hidden"),this.renderer.$gutter.setAttribute("tabindex",-1),this.renderer.$gutter.setAttribute("aria-hidden",!0),this.renderer.$gutter.removeAttribute("role"),this.renderer.$gutter.removeAttribute("aria-roledescription"),this.renderer.$gutter.removeAttribute("aria-label"),this.renderer.$gutter.classList.remove(this.renderer.keyboardFocusClassName),t&&t.removeListener())},initialValue:!1},customScrollbar:"renderer",hScrollBarAlwaysVisible:"renderer",vScrollBarAlwaysVisible:"renderer",highlightGutterLine:"renderer",animatedScroll:"renderer",showInvisibles:"renderer",showPrintMargin:"renderer",printMarginColumn:"renderer",printMargin:"renderer",fadeFoldWidgets:"renderer",showFoldWidgets:"renderer",displayIndentGuides:"renderer",highlightIndentGuides:"renderer",showGutter:"renderer",fontSize:"renderer",fontFamily:"renderer",maxLines:"renderer",minLines:"renderer",scrollPastEnd:"renderer",fixedWidthGutter:"renderer",theme:"renderer",hasCssTransforms:"renderer",maxPixelHeight:"renderer",useTextareaForIME:"renderer",useResizeObserver:"renderer",useSvgGutterIcons:"renderer",showFoldedAnnotations:"renderer",scrollSpeed:"$mouseHandler",dragDelay:"$mouseHandler",dragEnabled:"$mouseHandler",focusTimeout:"$mouseHandler",tooltipFollowsMouse:"$mouseHandler",firstLineNumber:"session",overwrite:"session",newLineMode:"session",useWorker:"session",useSoftTabs:"session",navigateWithinSoftTabs:"session",tabSize:"session",wrap:"session",indentedSoftWrap:"session",foldStyle:"session",mode:"session"});var $={getText:function(e,t){return(Math.abs(e.selection.lead.row-t)||t+1+(t<9?"·":""))+""},getWidth:function(e,t,n){return Math.max(t.toString().length,(n.lastRow+1).toString().length,2)*n.characterWidth},update:function(e,t){t.renderer.$loop.schedule(t.renderer.CHANGE_GUTTER)},attach:function(e){e.renderer.$gutterLayer.$renderer=this,e.on("changeSelection",this.update),this.update(null,e)},detach:function(e){e.renderer.$gutterLayer.$renderer==this&&(e.renderer.$gutterLayer.$renderer=null),e.off("changeSelection",this.update),this.update(null,e)}};t.Editor=S})),ace.define("ace/layer/lines",["require","exports","module","ace/lib/dom"],(function(e,t,n){"use strict";var i=e("../lib/dom"),o=function(){function e(e,t){this.element=e,this.canvasHeight=t||5e5,this.element.style.height=2*this.canvasHeight+"px",this.cells=[],this.cellCache=[],this.$offsetCoefficient=0}return e.prototype.moveContainer=function(e){i.translate(this.element,0,-e.firstRowScreen*e.lineHeight%this.canvasHeight-e.offset*this.$offsetCoefficient)},e.prototype.pageChanged=function(e,t){return Math.floor(e.firstRowScreen*e.lineHeight/this.canvasHeight)!==Math.floor(t.firstRowScreen*t.lineHeight/this.canvasHeight)},e.prototype.computeLineTop=function(e,t,n){var i=t.firstRowScreen*t.lineHeight,o=Math.floor(i/this.canvasHeight);return n.documentToScreenRow(e,0)*t.lineHeight-o*this.canvasHeight},e.prototype.computeLineHeight=function(e,t,n){return t.lineHeight*n.getRowLineCount(e)},e.prototype.getLength=function(){return this.cells.length},e.prototype.get=function(e){return this.cells[e]},e.prototype.shift=function(){this.$cacheCell(this.cells.shift())},e.prototype.pop=function(){this.$cacheCell(this.cells.pop())},e.prototype.push=function(e){if(Array.isArray(e)){this.cells.push.apply(this.cells,e);for(var t=i.createFragment(this.element),n=0;nr&&(l=o.end.row+1,r=(o=t.getNextFoldLine(l,o))?o.start.row:1/0),l>i){for(;this.$lines.getLength()>a+1;)this.$lines.pop();break}(s=this.$lines.get(++a))?s.row=l:(s=this.$lines.createCell(l,e,this.session,u),this.$lines.push(s)),this.$renderCell(s,e,o,l),l++}this._signal("afterRender"),this.$updateGutterWidth(e)},e.prototype.$updateGutterWidth=function(e){var t=this.session,n=t.gutterRenderer||this.$renderer,i=t.$firstLineNumber,o=this.$lines.last()?this.$lines.last().text:"";(this.$fixedWidth||t.$useWrapMode)&&(o=t.getLength()+i-1);var r=n?n.getWidth(t,o,e):o.toString().length*e.characterWidth,s=this.$padding||this.$computePadding();(r+=s.left+s.right)===this.gutterWidth||isNaN(r)||(this.gutterWidth=r,this.element.parentNode.style.width=this.element.style.width=Math.ceil(this.gutterWidth)+"px",this._signal("changeGutterWidth",r))},e.prototype.$updateCursorRow=function(){if(this.$highlightGutterLine){var e=this.session.selection.getCursor();this.$cursorRow!==e.row&&(this.$cursorRow=e.row)}},e.prototype.updateLineHighlight=function(){if(this.$highlightGutterLine){var e=this.session.selection.cursor.row;if(this.$cursorRow=e,!this.$cursorCell||this.$cursorCell.row!=e){this.$cursorCell&&(this.$cursorCell.element.className=this.$cursorCell.element.className.replace("ace_gutter-active-line ",""));var t=this.$lines.cells;this.$cursorCell=null;for(var n=0;n=this.$cursorRow){if(i.row>this.$cursorRow){var o=this.session.getFoldLine(this.$cursorRow);if(!(n>0&&o&&o.start.row==t[n-1].row))break;i=t[n-1]}i.element.className="ace_gutter-active-line "+i.element.className,this.$cursorCell=i;break}}}}},e.prototype.scrollLines=function(e){var t=this.config;if(this.config=e,this.$updateCursorRow(),this.$lines.pageChanged(t,e))return this.update(e);this.$lines.moveContainer(e);var n=Math.min(e.lastRow+e.gutterOffset,this.session.getLength()-1),i=this.oldLastRow;if(this.oldLastRow=n,!t||i0;o--)this.$lines.shift();if(i>n)for(o=this.session.getFoldedRowCount(n+1,i);o>0;o--)this.$lines.pop();e.firstRowi&&this.$lines.push(this.$renderLines(e,i+1,n)),this.updateLineHighlight(),this._signal("afterRender"),this.$updateGutterWidth(e)},e.prototype.$renderLines=function(e,t,n){for(var i=[],o=t,r=this.session.getNextFoldLine(o),s=r?r.start.row:1/0;o>s&&(o=r.end.row+1,s=(r=this.session.getNextFoldLine(o,r))?r.start.row:1/0),!(o>n);){var a=this.$lines.createCell(o,e,this.session,u);this.$renderCell(a,e,r,o),i.push(a),o++}return i},e.prototype.$renderCell=function(e,t,n,o){var r=e.element,s=this.session,a=r.childNodes[0],c=r.childNodes[1],u=r.childNodes[2],h=u.firstChild,d=s.$firstLineNumber,p=s.$breakpoints,g=s.$decorations,m=s.gutterRenderer||this.$renderer,f=this.$showFoldWidgets&&s.foldWidgets,y=n?n.start.row:Number.MAX_VALUE,b=t.lineHeight+"px",v=this.$useSvgGutterIcons?"ace_gutter-cell_svg-icons ":"ace_gutter-cell ",w=this.$useSvgGutterIcons?"ace_icon_svg":"ace_icon",A=(m?m.getText(s,o):o+d).toString();if(this.$highlightGutterLine&&(o==this.$cursorRow||n&&o=y&&this.$cursorRow<=n.end.row)&&(v+="ace_gutter-active-line ",this.$cursorCell!=e&&(this.$cursorCell&&(this.$cursorCell.element.className=this.$cursorCell.element.className.replace("ace_gutter-active-line ","")),this.$cursorCell=e)),p[o]&&(v+=p[o]),g[o]&&(v+=g[o]),this.$annotations[o]&&o!==y&&(v+=this.$annotations[o].className),f){var C=f[o];null==C&&(C=f[o]=s.getFoldWidget(o))}if(C){var k="ace_fold-widget ace_"+C,x="start"==C&&o==y&&on.right-t.right?"foldWidgets":void 0},e}();function u(e){var t=document.createTextNode("");e.appendChild(t);var n=i.createElement("span");e.appendChild(n);var o=i.createElement("span");e.appendChild(o);var r=i.createElement("span");return o.appendChild(r),e}c.prototype.$fixedWidth=!1,c.prototype.$highlightGutterLine=!0,c.prototype.$renderer="",c.prototype.$showLineNumbers=!0,c.prototype.$showFoldWidgets=!0,o.implement(c.prototype,s),t.Gutter=c})),ace.define("ace/layer/marker",["require","exports","module","ace/range","ace/lib/dom"],(function(e,t,n){"use strict";var i=e("../range").Range,o=e("../lib/dom"),r=function(){function e(e){this.element=o.createElement("div"),this.element.className="ace_layer ace_marker-layer",e.appendChild(this.element)}return e.prototype.setPadding=function(e){this.$padding=e},e.prototype.setSession=function(e){this.session=e},e.prototype.setMarkers=function(e){this.markers=e},e.prototype.elt=function(e,t){var n=-1!=this.i&&this.element.childNodes[this.i];n?this.i++:(n=document.createElement("div"),this.element.appendChild(n),this.i=-1),n.style.cssText=t,n.className=e},e.prototype.update=function(e){if(e){var t;for(var n in this.config=e,this.i=0,this.markers){var i=this.markers[n];if(i.range){var o=i.range.clipRows(e.firstRow,e.lastRow);if(!o.isEmpty())if(o=o.toScreenRange(this.session),i.renderer){var r=this.$getTop(o.start.row,e),s=this.$padding+o.start.column*e.characterWidth;i.renderer(t,o,s,r,e)}else"fullLine"==i.type?this.drawFullLineMarker(t,o,i.clazz,e):"screenLine"==i.type?this.drawScreenLineMarker(t,o,i.clazz,e):o.isMultiLine()?"text"==i.type?this.drawTextMarker(t,o,i.clazz,e):this.drawMultiLineMarker(t,o,i.clazz,e):this.drawSingleLineMarker(t,o,i.clazz+" ace_start ace_br15",e)}else i.update(t,this,this.session,e)}if(-1!=this.i)for(;this.id?4:0)|(c==l?8:0)),o,c==l?0:1,r)},e.prototype.drawMultiLineMarker=function(e,t,n,i,o){var r=this.$padding,s=i.lineHeight,a=this.$getTop(t.start.row,i),l=r+t.start.column*i.characterWidth;if(o=o||"",this.session.$bidiHandler.isBidiRow(t.start.row)?((c=t.clone()).end.row=c.start.row,c.end.column=this.session.getLine(c.start.row).length,this.drawBidiSingleLineMarker(e,c,n+" ace_br1 ace_start",i,null,o)):this.elt(n+" ace_br1 ace_start","height:"+s+"px;right:0;top:"+a+"px;left:"+l+"px;"+(o||"")),this.session.$bidiHandler.isBidiRow(t.end.row)){var c;(c=t.clone()).start.row=c.end.row,c.start.column=0,this.drawBidiSingleLineMarker(e,c,n+" ace_br12",i,null,o)}else{a=this.$getTop(t.end.row,i);var u=t.end.column*i.characterWidth;this.elt(n+" ace_br12","height:"+s+"px;width:"+u+"px;top:"+a+"px;left:"+r+"px;"+(o||""))}if(!((s=(t.end.row-t.start.row-1)*i.lineHeight)<=0)){a=this.$getTop(t.start.row+1,i);var h=(t.start.column?1:0)|(t.end.column?0:8);this.elt(n+(h?" ace_br"+h:""),"height:"+s+"px;right:0;top:"+a+"px;left:"+r+"px;"+(o||""))}},e.prototype.drawSingleLineMarker=function(e,t,n,i,o,r){if(this.session.$bidiHandler.isBidiRow(t.start.row))return this.drawBidiSingleLineMarker(e,t,n,i,o,r);var s=i.lineHeight,a=(t.end.column+(o||0)-t.start.column)*i.characterWidth,l=this.$getTop(t.start.row,i),c=this.$padding+t.start.column*i.characterWidth;this.elt(n,"height:"+s+"px;width:"+a+"px;top:"+l+"px;left:"+c+"px;"+(r||""))},e.prototype.drawBidiSingleLineMarker=function(e,t,n,i,o,r){var s=i.lineHeight,a=this.$getTop(t.start.row,i),l=this.$padding;this.session.$bidiHandler.getSelections(t.start.column,t.end.column).forEach((function(e){this.elt(n,"height:"+s+"px;width:"+(e.width+(o||0))+"px;top:"+a+"px;left:"+(l+e.left)+"px;"+(r||""))}),this)},e.prototype.drawFullLineMarker=function(e,t,n,i,o){var r=this.$getTop(t.start.row,i),s=i.lineHeight;t.start.row!=t.end.row&&(s+=this.$getTop(t.end.row,i)-r),this.elt(n,"height:"+s+"px;top:"+r+"px;left:0;right:0;"+(o||""))},e.prototype.drawScreenLineMarker=function(e,t,n,i,o){var r=this.$getTop(t.start.row,i),s=i.lineHeight;this.elt(n,"height:"+s+"px;top:"+r+"px;left:0;right:0;"+(o||""))},e}();r.prototype.$padding=0,t.Marker=r})),ace.define("ace/layer/text_util",["require","exports","module"],(function(e,t,n){var i=new Set(["text","rparen","lparen"]);t.isTextToken=function(e){return i.has(e)}})),ace.define("ace/layer/text",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/layer/lines","ace/lib/event_emitter","ace/config","ace/layer/text_util"],(function(e,t,n){"use strict";var i=e("../lib/oop"),o=e("../lib/dom"),r=e("../lib/lang"),s=e("./lines").Lines,a=e("../lib/event_emitter").EventEmitter,l=e("../config").nls,c=e("./text_util").isTextToken,u=function(){function e(e){this.dom=o,this.element=this.dom.createElement("div"),this.element.className="ace_layer ace_text-layer",e.appendChild(this.element),this.$updateEolChar=this.$updateEolChar.bind(this),this.$lines=new s(this.element)}return e.prototype.$updateEolChar=function(){var e=this.session.doc,t="\n"==e.getNewLineCharacter()&&"windows"!=e.getNewLineMode()?this.EOL_CHAR_LF:this.EOL_CHAR_CRLF;if(this.EOL_CHAR!=t)return this.EOL_CHAR=t,!0},e.prototype.setPadding=function(e){this.$padding=e,this.element.style.margin="0 "+e+"px"},e.prototype.getLineHeight=function(){return this.$fontMetrics.$characterSize.height||0},e.prototype.getCharacterWidth=function(){return this.$fontMetrics.$characterSize.width||0},e.prototype.$setFontMetrics=function(e){this.$fontMetrics=e,this.$fontMetrics.on("changeCharacterSize",function(e){this._signal("changeCharacterSize",e)}.bind(this)),this.$pollSizeChanges()},e.prototype.checkForSizeChanges=function(){this.$fontMetrics.checkForSizeChanges()},e.prototype.$pollSizeChanges=function(){return this.$pollSizeChangesTimer=this.$fontMetrics.$pollSizeChanges()},e.prototype.setSession=function(e){this.session=e,e&&this.$computeTabString()},e.prototype.setShowInvisibles=function(e){return this.showInvisibles!=e&&(this.showInvisibles=e,"string"==typeof e?(this.showSpaces=/tab/i.test(e),this.showTabs=/space/i.test(e),this.showEOL=/eol/i.test(e)):this.showSpaces=this.showTabs=this.showEOL=e,this.$computeTabString(),!0)},e.prototype.setDisplayIndentGuides=function(e){return this.displayIndentGuides!=e&&(this.displayIndentGuides=e,this.$computeTabString(),!0)},e.prototype.setHighlightIndentGuides=function(e){return this.$highlightIndentGuides!==e&&(this.$highlightIndentGuides=e,e)},e.prototype.$computeTabString=function(){var e=this.session.getTabSize();this.tabSize=e;for(var t=this.$tabStrings=[0],n=1;nu&&(a=l.end.row+1,u=(l=this.session.getNextFoldLine(a,l))?l.start.row:1/0),!(a>o);){var h=r[s++];if(h){this.dom.removeChildren(h),this.$renderLine(h,a,a==u&&l),c&&(h.style.top=this.$lines.computeLineTop(a,e,this.session)+"px");var d=e.lineHeight*this.session.getRowLength(a)+"px";h.style.height!=d&&(c=!0,h.style.height=d)}a++}if(c)for(;s0;o--)this.$lines.shift();if(t.lastRow>e.lastRow)for(o=this.session.getFoldedRowCount(e.lastRow+1,t.lastRow);o>0;o--)this.$lines.pop();e.firstRowt.lastRow&&this.$lines.push(this.$renderLinesFragment(e,t.lastRow+1,e.lastRow)),this.$highlightIndentGuide()},e.prototype.$renderLinesFragment=function(e,t,n){for(var i=[],r=t,s=this.session.getNextFoldLine(r),a=s?s.start.row:1/0;r>a&&(r=s.end.row+1,a=(s=this.session.getNextFoldLine(r,s))?s.start.row:1/0),!(r>n);){var l=this.$lines.createCell(r,e,this.session),c=l.element;this.dom.removeChildren(c),o.setStyle(c.style,"height",this.$lines.computeLineHeight(r,e,this.session)+"px"),o.setStyle(c.style,"top",this.$lines.computeLineTop(r,e,this.session)+"px"),this.$renderLine(c,r,r==a&&s),this.$useLineGroups()?c.className="ace_line_group":c.className="ace_line",i.push(l),r++}return i},e.prototype.update=function(e){this.$lines.moveContainer(e),this.config=e;for(var t=e.firstRow,n=e.lastRow,i=this.$lines;i.getLength();)i.pop();i.push(this.$renderLinesFragment(e,t,n))},e.prototype.$renderToken=function(e,t,n,i){for(var o,s=this,a=/(\t)|( +)|([\x00-\x1f\x80-\xa0\xad\u1680\u180E\u2000-\u200f\u2028\u2029\u202F\u205F\uFEFF\uFFF9-\uFFFC\u2066\u2067\u2068\u202A\u202B\u202D\u202E\u202C\u2069]+)|(\u3000)|([\u1100-\u115F\u11A3-\u11A7\u11FA-\u11FF\u2329-\u232A\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u2FF0-\u2FFB\u3001-\u303E\u3041-\u3096\u3099-\u30FF\u3105-\u312D\u3131-\u318E\u3190-\u31BA\u31C0-\u31E3\u31F0-\u321E\u3220-\u3247\u3250-\u32FE\u3300-\u4DBF\u4E00-\uA48C\uA490-\uA4C6\uA960-\uA97C\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFAFF\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE66\uFE68-\uFE6B\uFF01-\uFF60\uFFE0-\uFFE6]|[\uD800-\uDBFF][\uDC00-\uDFFF])/g,u=this.dom.createFragment(this.element),h=0;o=a.exec(i);){var d=o[1],p=o[2],g=o[3],m=o[4],f=o[5];if(s.showSpaces||!p){var y=h!=o.index?i.slice(h,o.index):"";if(h=o.index+o[0].length,y&&u.appendChild(this.dom.createTextNode(y,this.element)),d){var b=s.session.getScreenTabSize(t+o.index);u.appendChild(s.$tabStrings[b].cloneNode(!0)),t+=b-1}else p?s.showSpaces?((w=this.dom.createElement("span")).className="ace_invisible ace_invisible_space",w.textContent=r.stringRepeat(s.SPACE_CHAR,p.length),u.appendChild(w)):u.appendChild(this.dom.createTextNode(p,this.element)):g?((w=this.dom.createElement("span")).className="ace_invisible ace_invisible_space ace_invalid",w.textContent=r.stringRepeat(s.SPACE_CHAR,g.length),u.appendChild(w)):m?(t+=1,(w=this.dom.createElement("span")).style.width=2*s.config.characterWidth+"px",w.className=s.showSpaces?"ace_cjk ace_invisible ace_invisible_space":"ace_cjk",w.textContent=s.showSpaces?s.SPACE_CHAR:m,u.appendChild(w)):f&&(t+=1,(w=this.dom.createElement("span")).style.width=2*s.config.characterWidth+"px",w.className="ace_cjk",w.textContent=f,u.appendChild(w))}}if(u.appendChild(this.dom.createTextNode(h?i.slice(h):i,this.element)),c(n.type))e.appendChild(u);else{var v="ace_"+n.type.replace(/\./g," ace_"),w=this.dom.createElement("span");"fold"==n.type&&(w.style.width=n.value.length*this.config.characterWidth+"px",w.setAttribute("title",l("Unfold code"))),w.className=v,w.appendChild(u),e.appendChild(w)}return t+i.length},e.prototype.renderIndentGuide=function(e,t,n){var i=t.search(this.$indentGuideRe);if(i<=0||i>=n)return t;if(" "==t[0]){for(var o=(i-=i%this.tabSize)/this.tabSize,r=0;ro[r].start.row?this.$highlightIndentGuideMarker.dir=-1:this.$highlightIndentGuideMarker.dir=1;break}if(!this.$highlightIndentGuideMarker.end&&""!==e[t.row]&&t.column===e[t.row].length)for(this.$highlightIndentGuideMarker.dir=1,r=t.row+1;r0)for(var i=0;i=this.$highlightIndentGuideMarker.start+1){if(i.row>=this.$highlightIndentGuideMarker.end)break;this.$setIndentGuideActive(i,t)}}else for(n=e.length-1;n>=0;n--)if(i=e[n],this.$highlightIndentGuideMarker.end&&i.row=s;)a=this.$renderToken(l,a,u,h.substring(0,s-i)),h=h.substring(s-i),i=s,l=this.$createLineElement(),e.appendChild(l),l.appendChild(this.dom.createTextNode(r.stringRepeat(" ",n.indent),this.element)),a=0,s=n[++o]||Number.MAX_VALUE;0!=h.length&&(i+=h.length,a=this.$renderToken(l,a,u,h))}}n[n.length-1]>this.MAX_LINE_LENGTH&&this.$renderOverflowMessage(l,a,null,"",!0)},e.prototype.$renderSimpleLine=function(e,t){for(var n=0,i=0;ithis.MAX_LINE_LENGTH)return this.$renderOverflowMessage(e,n,o,r);n=this.$renderToken(e,n,o,r)}}},e.prototype.$renderOverflowMessage=function(e,t,n,i,o){n&&this.$renderToken(e,t,n,i.slice(0,this.MAX_LINE_LENGTH-t));var r=this.dom.createElement("span");r.className="ace_inline_button ace_keyword ace_toggle_wrap",r.textContent=o?"":"",e.appendChild(r)},e.prototype.$renderLine=function(e,t,n){if(n||0==n||(n=this.session.getFoldLine(t)),n)var i=this.$getFoldLineTokens(t,n);else i=this.session.getTokens(t);var o=e;if(i.length){var r=this.session.getRowSplitData(t);r&&r.length?(this.$renderWrappedLine(e,i,r),o=e.lastChild):(o=e,this.$useLineGroups()&&(o=this.$createLineElement(),e.appendChild(o)),this.$renderSimpleLine(o,i))}else this.$useLineGroups()&&(o=this.$createLineElement(),e.appendChild(o));if(this.showEOL&&o){n&&(t=n.end.row);var s=this.dom.createElement("span");s.className="ace_invisible ace_invisible_eol",s.textContent=t==this.session.getLength()-1?this.EOF_CHAR:this.EOL_CHAR,o.appendChild(s)}},e.prototype.$getFoldLineTokens=function(e,t){var n=this.session,i=[],o=n.getTokens(e);return t.walk((function(e,t,r,s,a){null!=e?i.push({type:"fold",value:e}):(a&&(o=n.getTokens(t)),o.length&&function(e,t,n){for(var o=0,r=0;r+e[o].value.lengthn-t&&(s=s.substring(0,n-t)),i.push({type:e[o].type,value:s}),r=t+s.length,o+=1);rn?i.push({type:e[o].type,value:s.substring(0,n-r)}):i.push(e[o]),r+=s.length,o+=1}}(o,s,r))}),t.end.row,this.session.getLine(t.end.row).length),i},e.prototype.$useLineGroups=function(){return this.session.getUseWrapMode()},e}();u.prototype.EOF_CHAR="¶",u.prototype.EOL_CHAR_LF="¬",u.prototype.EOL_CHAR_CRLF="¤",u.prototype.EOL_CHAR=u.prototype.EOL_CHAR_LF,u.prototype.TAB_CHAR="—",u.prototype.SPACE_CHAR="·",u.prototype.$padding=0,u.prototype.MAX_LINE_LENGTH=1e4,u.prototype.showInvisibles=!1,u.prototype.showSpaces=!1,u.prototype.showTabs=!1,u.prototype.showEOL=!1,u.prototype.displayIndentGuides=!0,u.prototype.$highlightIndentGuides=!0,u.prototype.$tabStrings=[],u.prototype.destroy={},u.prototype.onChangeTabSize=u.prototype.$computeTabString,i.implement(u.prototype,a),t.Text=u})),ace.define("ace/layer/cursor",["require","exports","module","ace/lib/dom"],(function(e,t,n){"use strict";var i=e("../lib/dom"),o=function(){function e(e){this.element=i.createElement("div"),this.element.className="ace_layer ace_cursor-layer",e.appendChild(this.element),this.isVisible=!1,this.isBlinking=!0,this.blinkInterval=1e3,this.smoothBlinking=!1,this.cursors=[],this.cursor=this.addCursor(),i.addCssClass(this.element,"ace_hidden-cursors"),this.$updateCursors=this.$updateOpacity.bind(this)}return e.prototype.$updateOpacity=function(e){for(var t=this.cursors,n=t.length;n--;)i.setStyle(t[n].style,"opacity",e?"":"0")},e.prototype.$startCssAnimation=function(){for(var e=this.cursors,t=e.length;t--;)e[t].style.animationDuration=this.blinkInterval+"ms";this.$isAnimating=!0,setTimeout(function(){this.$isAnimating&&i.addCssClass(this.element,"ace_animate-blinking")}.bind(this))},e.prototype.$stopCssAnimation=function(){this.$isAnimating=!1,i.removeCssClass(this.element,"ace_animate-blinking")},e.prototype.setPadding=function(e){this.$padding=e},e.prototype.setSession=function(e){this.session=e},e.prototype.setBlinking=function(e){e!=this.isBlinking&&(this.isBlinking=e,this.restartTimer())},e.prototype.setBlinkInterval=function(e){e!=this.blinkInterval&&(this.blinkInterval=e,this.restartTimer())},e.prototype.setSmoothBlinking=function(e){e!=this.smoothBlinking&&(this.smoothBlinking=e,i.setCssClass(this.element,"ace_smooth-blinking",e),this.$updateCursors(!0),this.restartTimer())},e.prototype.addCursor=function(){var e=i.createElement("div");return e.className="ace_cursor",this.element.appendChild(e),this.cursors.push(e),e},e.prototype.removeCursor=function(){if(this.cursors.length>1){var e=this.cursors.pop();return e.parentNode.removeChild(e),e}},e.prototype.hideCursor=function(){this.isVisible=!1,i.addCssClass(this.element,"ace_hidden-cursors"),this.restartTimer()},e.prototype.showCursor=function(){this.isVisible=!0,i.removeCssClass(this.element,"ace_hidden-cursors"),this.restartTimer()},e.prototype.restartTimer=function(){var e=this.$updateCursors;if(clearInterval(this.intervalId),clearTimeout(this.timeoutId),this.$stopCssAnimation(),this.smoothBlinking&&(this.$isSmoothBlinking=!1,i.removeCssClass(this.element,"ace_smooth-blinking")),e(!0),this.isBlinking&&this.blinkInterval&&this.isVisible)if(this.smoothBlinking&&(this.$isSmoothBlinking=!0,setTimeout(function(){this.$isSmoothBlinking&&i.addCssClass(this.element,"ace_smooth-blinking")}.bind(this))),i.HAS_CSS_ANIMATION)this.$startCssAnimation();else{var t=function(){this.timeoutId=setTimeout((function(){e(!1)}),.6*this.blinkInterval)}.bind(this);this.intervalId=setInterval((function(){e(!0),t()}),this.blinkInterval),t()}else this.$stopCssAnimation()},e.prototype.getPixelPosition=function(e,t){if(!this.config||!this.session)return{left:0,top:0};e||(e=this.session.selection.getCursor());var n=this.session.documentToScreenPosition(e);return{left:this.$padding+(this.session.$bidiHandler.isBidiRow(n.row,e.row)?this.session.$bidiHandler.getPosLeft(n.column):n.column*this.config.characterWidth),top:(n.row-(t?this.config.firstRowScreen:0))*this.config.lineHeight}},e.prototype.isCursorInView=function(e,t){return e.top>=0&&e.tope.height+e.offset||s.top<0)&&n>1)){var a=this.cursors[o++]||this.addCursor(),l=a.style;this.drawCursor?this.drawCursor(a,s,e,t[n],this.session):this.isCursorInView(s,e)?(i.setStyle(l,"display","block"),i.translate(a,s.left,s.top),i.setStyle(l,"width",Math.round(e.characterWidth)+"px"),i.setStyle(l,"height",e.lineHeight+"px")):i.setStyle(l,"display","none")}}for(;this.cursors.length>o;)this.removeCursor();var c=this.session.getOverwrite();this.$setOverwrite(c),this.$pixelPos=s,this.restartTimer()},e.prototype.$setOverwrite=function(e){e!=this.overwrite&&(this.overwrite=e,e?i.addCssClass(this.element,"ace_overwrite-cursors"):i.removeCssClass(this.element,"ace_overwrite-cursors"))},e.prototype.destroy=function(){clearInterval(this.intervalId),clearTimeout(this.timeoutId)},e}();o.prototype.$padding=0,o.prototype.drawCursor=null,t.Cursor=o})),ace.define("ace/scrollbar",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/event","ace/lib/event_emitter"],(function(e,t,n){"use strict";var i,o=this&&this.__extends||(i=function(e,t){return i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},i(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}i(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}),r=e("./lib/oop"),s=e("./lib/dom"),a=e("./lib/event"),l=e("./lib/event_emitter").EventEmitter,c=32768,u=function(){function e(e,t){this.element=s.createElement("div"),this.element.className="ace_scrollbar ace_scrollbar"+t,this.inner=s.createElement("div"),this.inner.className="ace_scrollbar-inner",this.inner.textContent=" ",this.element.appendChild(this.inner),e.appendChild(this.element),this.setVisible(!1),this.skipEvent=!1,a.addListener(this.element,"scroll",this.onScroll.bind(this)),a.addListener(this.element,"mousedown",a.preventDefault)}return e.prototype.setVisible=function(e){this.element.style.display=e?"":"none",this.isVisible=e,this.coeff=1},e}();r.implement(u.prototype,l);var h=function(e){function t(t,n){var i=e.call(this,t,"-v")||this;return i.scrollTop=0,i.scrollHeight=0,n.$scrollbarWidth=i.width=s.scrollbarWidth(t.ownerDocument),i.inner.style.width=i.element.style.width=(i.width||15)+5+"px",i.$minWidth=0,i}return o(t,e),t.prototype.onScroll=function(){if(!this.skipEvent){if(this.scrollTop=this.element.scrollTop,1!=this.coeff){var e=this.element.clientHeight/this.scrollHeight;this.scrollTop=this.scrollTop*(1-e)/(this.coeff-e)}this._emit("scroll",{data:this.scrollTop})}this.skipEvent=!1},t.prototype.getWidth=function(){return Math.max(this.isVisible?this.width:0,this.$minWidth||0)},t.prototype.setHeight=function(e){this.element.style.height=e+"px"},t.prototype.setScrollHeight=function(e){this.scrollHeight=e,e>c?(this.coeff=c/e,e=c):1!=this.coeff&&(this.coeff=1),this.inner.style.height=e+"px"},t.prototype.setScrollTop=function(e){this.scrollTop!=e&&(this.skipEvent=!0,this.scrollTop=e,this.element.scrollTop=e*this.coeff)},t}(u);h.prototype.setInnerHeight=h.prototype.setScrollHeight;var d=function(e){function t(t,n){var i=e.call(this,t,"-h")||this;return i.scrollLeft=0,i.height=n.$scrollbarWidth,i.inner.style.height=i.element.style.height=(i.height||15)+5+"px",i}return o(t,e),t.prototype.onScroll=function(){this.skipEvent||(this.scrollLeft=this.element.scrollLeft,this._emit("scroll",{data:this.scrollLeft})),this.skipEvent=!1},t.prototype.getHeight=function(){return this.isVisible?this.height:0},t.prototype.setWidth=function(e){this.element.style.width=e+"px"},t.prototype.setInnerWidth=function(e){this.inner.style.width=e+"px"},t.prototype.setScrollWidth=function(e){this.inner.style.width=e+"px"},t.prototype.setScrollLeft=function(e){this.scrollLeft!=e&&(this.skipEvent=!0,this.scrollLeft=this.element.scrollLeft=e)},t}(u);t.ScrollBar=h,t.ScrollBarV=h,t.ScrollBarH=d,t.VScrollBar=h,t.HScrollBar=d})),ace.define("ace/scrollbar_custom",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/event","ace/lib/event_emitter"],(function(e,t,n){"use strict";var i,o=this&&this.__extends||(i=function(e,t){return i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},i(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}i(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}),r=e("./lib/oop"),s=e("./lib/dom"),a=e("./lib/event"),l=e("./lib/event_emitter").EventEmitter;s.importCssString(".ace_editor>.ace_sb-v div, .ace_editor>.ace_sb-h div{\n position: absolute;\n background: rgba(128, 128, 128, 0.6);\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n border: 1px solid #bbb;\n border-radius: 2px;\n z-index: 8;\n}\n.ace_editor>.ace_sb-v, .ace_editor>.ace_sb-h {\n position: absolute;\n z-index: 6;\n background: none;\n overflow: hidden!important;\n}\n.ace_editor>.ace_sb-v {\n z-index: 6;\n right: 0;\n top: 0;\n width: 12px;\n}\n.ace_editor>.ace_sb-v div {\n z-index: 8;\n right: 0;\n width: 100%;\n}\n.ace_editor>.ace_sb-h {\n bottom: 0;\n left: 0;\n height: 12px;\n}\n.ace_editor>.ace_sb-h div {\n bottom: 0;\n height: 100%;\n}\n.ace_editor>.ace_sb_grabbed {\n z-index: 8;\n background: #000;\n}","ace_scrollbar.css",!1);var c=function(){function e(e,t){this.element=s.createElement("div"),this.element.className="ace_sb"+t,this.inner=s.createElement("div"),this.inner.className="",this.element.appendChild(this.inner),this.VScrollWidth=12,this.HScrollHeight=12,e.appendChild(this.element),this.setVisible(!1),this.skipEvent=!1,a.addMultiMouseDownListener(this.element,[500,300,300],this,"onMouseDown")}return e.prototype.setVisible=function(e){this.element.style.display=e?"":"none",this.isVisible=e,this.coeff=1},e}();r.implement(c.prototype,l);var u=function(e){function t(t,n){var i=e.call(this,t,"-v")||this;return i.scrollTop=0,i.scrollHeight=0,i.parent=t,i.width=i.VScrollWidth,i.renderer=n,i.inner.style.width=i.element.style.width=(i.width||15)+"px",i.$minWidth=0,i}return o(t,e),t.prototype.onMouseDown=function(e,t){if("mousedown"===e&&0===a.getButton(t)&&2!==t.detail){if(t.target===this.inner){var n=this,i=t.clientY,o=t.clientY,r=this.thumbTop;a.capture(this.inner,(function(e){i=e.clientY}),(function(){clearInterval(s)}));var s=setInterval((function(){if(void 0!==i){var e=n.scrollTopFromThumbTop(r+i-o);e!==n.scrollTop&&n._emit("scroll",{data:e})}}),20);return a.preventDefault(t)}var l=t.clientY-this.element.getBoundingClientRect().top-this.thumbHeight/2;return this._emit("scroll",{data:this.scrollTopFromThumbTop(l)}),a.preventDefault(t)}},t.prototype.getHeight=function(){return this.height},t.prototype.scrollTopFromThumbTop=function(e){var t=e*(this.pageHeight-this.viewHeight)/(this.slideHeight-this.thumbHeight);return(t>>=0)<0?t=0:t>this.pageHeight-this.viewHeight&&(t=this.pageHeight-this.viewHeight),t},t.prototype.getWidth=function(){return Math.max(this.isVisible?this.width:0,this.$minWidth||0)},t.prototype.setHeight=function(e){this.height=Math.max(0,e),this.slideHeight=this.height,this.viewHeight=this.height,this.setScrollHeight(this.pageHeight,!0)},t.prototype.setScrollHeight=function(e,t){(this.pageHeight!==e||t)&&(this.pageHeight=e,this.thumbHeight=this.slideHeight*this.viewHeight/this.pageHeight,this.thumbHeight>this.slideHeight&&(this.thumbHeight=this.slideHeight),this.thumbHeight<15&&(this.thumbHeight=15),this.inner.style.height=this.thumbHeight+"px",this.scrollTop>this.pageHeight-this.viewHeight&&(this.scrollTop=this.pageHeight-this.viewHeight,this.scrollTop<0&&(this.scrollTop=0),this._emit("scroll",{data:this.scrollTop})))},t.prototype.setScrollTop=function(e){this.scrollTop=e,e<0&&(e=0),this.thumbTop=e*(this.slideHeight-this.thumbHeight)/(this.pageHeight-this.viewHeight),this.inner.style.top=this.thumbTop+"px"},t}(c);u.prototype.setInnerHeight=u.prototype.setScrollHeight;var h=function(e){function t(t,n){var i=e.call(this,t,"-h")||this;return i.scrollLeft=0,i.scrollWidth=0,i.height=i.HScrollHeight,i.inner.style.height=i.element.style.height=(i.height||12)+"px",i.renderer=n,i}return o(t,e),t.prototype.onMouseDown=function(e,t){if("mousedown"===e&&0===a.getButton(t)&&2!==t.detail){if(t.target===this.inner){var n=this,i=t.clientX,o=t.clientX,r=this.thumbLeft;a.capture(this.inner,(function(e){i=e.clientX}),(function(){clearInterval(s)}));var s=setInterval((function(){if(void 0!==i){var e=n.scrollLeftFromThumbLeft(r+i-o);e!==n.scrollLeft&&n._emit("scroll",{data:e})}}),20);return a.preventDefault(t)}var l=t.clientX-this.element.getBoundingClientRect().left-this.thumbWidth/2;return this._emit("scroll",{data:this.scrollLeftFromThumbLeft(l)}),a.preventDefault(t)}},t.prototype.getHeight=function(){return this.isVisible?this.height:0},t.prototype.scrollLeftFromThumbLeft=function(e){var t=e*(this.pageWidth-this.viewWidth)/(this.slideWidth-this.thumbWidth);return(t>>=0)<0?t=0:t>this.pageWidth-this.viewWidth&&(t=this.pageWidth-this.viewWidth),t},t.prototype.setWidth=function(e){this.width=Math.max(0,e),this.element.style.width=this.width+"px",this.slideWidth=this.width,this.viewWidth=this.width,this.setScrollWidth(this.pageWidth,!0)},t.prototype.setScrollWidth=function(e,t){(this.pageWidth!==e||t)&&(this.pageWidth=e,this.thumbWidth=this.slideWidth*this.viewWidth/this.pageWidth,this.thumbWidth>this.slideWidth&&(this.thumbWidth=this.slideWidth),this.thumbWidth<15&&(this.thumbWidth=15),this.inner.style.width=this.thumbWidth+"px",this.scrollLeft>this.pageWidth-this.viewWidth&&(this.scrollLeft=this.pageWidth-this.viewWidth,this.scrollLeft<0&&(this.scrollLeft=0),this._emit("scroll",{data:this.scrollLeft})))},t.prototype.setScrollLeft=function(e){this.scrollLeft=e,e<0&&(e=0),this.thumbLeft=e*(this.slideWidth-this.thumbWidth)/(this.pageWidth-this.viewWidth),this.inner.style.left=this.thumbLeft+"px"},t}(c);h.prototype.setInnerWidth=h.prototype.setScrollWidth,t.ScrollBar=u,t.ScrollBarV=u,t.ScrollBarH=h,t.VScrollBar=u,t.HScrollBar=h})),ace.define("ace/renderloop",["require","exports","module","ace/lib/event"],(function(e,t,n){"use strict";var i=e("./lib/event"),o=function(){function e(e,t){this.onRender=e,this.pending=!1,this.changes=0,this.$recursionLimit=2,this.window=t||window;var n=this;this._flush=function(e){n.pending=!1;var t=n.changes;if(t&&(i.blockIdle(100),n.changes=0,n.onRender(t)),n.changes){if(n.$recursionLimit--<0)return;n.schedule()}else n.$recursionLimit=2}}return e.prototype.schedule=function(e){this.changes=this.changes|e,this.changes&&!this.pending&&(i.nextFrame(this._flush),this.pending=!0)},e.prototype.clear=function(e){var t=this.changes;return this.changes=0,t},e}();t.RenderLoop=o})),ace.define("ace/layer/font_metrics",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/lib/event","ace/lib/useragent","ace/lib/event_emitter"],(function(e,t,n){var i=e("../lib/oop"),o=e("../lib/dom"),r=e("../lib/lang"),s=e("../lib/event"),a=e("../lib/useragent"),l=e("../lib/event_emitter").EventEmitter,c=512,u="function"==typeof ResizeObserver,h=200,d=function(){function e(e){this.el=o.createElement("div"),this.$setMeasureNodeStyles(this.el.style,!0),this.$main=o.createElement("div"),this.$setMeasureNodeStyles(this.$main.style),this.$measureNode=o.createElement("div"),this.$setMeasureNodeStyles(this.$measureNode.style),this.el.appendChild(this.$main),this.el.appendChild(this.$measureNode),e.appendChild(this.el),this.$measureNode.textContent=r.stringRepeat("X",c),this.$characterSize={width:0,height:0},u?this.$addObserver():this.checkForSizeChanges()}return e.prototype.$setMeasureNodeStyles=function(e,t){e.width=e.height="auto",e.left=e.top="0px",e.visibility="hidden",e.position="absolute",e.whiteSpace="pre",a.isIE<8?e["font-family"]="inherit":e.font="inherit",e.overflow=t?"hidden":"visible"},e.prototype.checkForSizeChanges=function(e){if(void 0===e&&(e=this.$measureSizes()),e&&(this.$characterSize.width!==e.width||this.$characterSize.height!==e.height)){this.$measureNode.style.fontWeight="bold";var t=this.$measureSizes();this.$measureNode.style.fontWeight="",this.$characterSize=e,this.charSizes=Object.create(null),this.allowBoldFonts=t&&t.width===e.width&&t.height===e.height,this._emit("changeCharacterSize",{data:e})}},e.prototype.$addObserver=function(){var e=this;this.$observer=new window.ResizeObserver((function(t){e.checkForSizeChanges()})),this.$observer.observe(this.$measureNode)},e.prototype.$pollSizeChanges=function(){if(this.$pollSizeChangesTimer||this.$observer)return this.$pollSizeChangesTimer;var e=this;return this.$pollSizeChangesTimer=s.onIdle((function t(){e.checkForSizeChanges(),s.onIdle(t,500)}),500)},e.prototype.setPolling=function(e){e?this.$pollSizeChanges():this.$pollSizeChangesTimer&&(clearInterval(this.$pollSizeChangesTimer),this.$pollSizeChangesTimer=0)},e.prototype.$measureSizes=function(e){var t={height:(e||this.$measureNode).clientHeight,width:(e||this.$measureNode).clientWidth/c};return 0===t.width||0===t.height?null:t},e.prototype.$measureCharWidth=function(e){return this.$main.textContent=r.stringRepeat(e,c),this.$main.getBoundingClientRect().width/c},e.prototype.getCharacterWidth=function(e){var t=this.charSizes[e];return void 0===t&&(t=this.charSizes[e]=this.$measureCharWidth(e)/this.$characterSize.width),t},e.prototype.destroy=function(){clearInterval(this.$pollSizeChangesTimer),this.$observer&&this.$observer.disconnect(),this.el&&this.el.parentNode&&this.el.parentNode.removeChild(this.el)},e.prototype.$getZoom=function(e){return e&&e.parentElement?(window.getComputedStyle(e).zoom||1)*this.$getZoom(e.parentElement):1},e.prototype.$initTransformMeasureNodes=function(){var e=function(e,t){return["div",{style:"position: absolute;top:"+e+"px;left:"+t+"px;"}]};this.els=o.buildDom([e(0,0),e(h,0),e(0,h),e(h,h)],this.el)},e.prototype.transformCoordinates=function(e,t){function n(e,t,n){var i=e[1]*t[0]-e[0]*t[1];return[(-t[1]*n[0]+t[0]*n[1])/i,(+e[1]*n[0]-e[0]*n[1])/i]}function i(e,t){return[e[0]-t[0],e[1]-t[1]]}function o(e,t){return[e[0]+t[0],e[1]+t[1]]}function r(e,t){return[e*t[0],e*t[1]]}function s(e){var t=e.getBoundingClientRect();return[t.left,t.top]}e&&(e=r(1/this.$getZoom(this.el),e)),this.els||this.$initTransformMeasureNodes();var a=s(this.els[0]),l=s(this.els[1]),c=s(this.els[2]),u=s(this.els[3]),d=n(i(u,l),i(u,c),i(o(l,c),o(u,a))),p=r(1+d[0],i(l,a)),g=r(1+d[1],i(c,a));if(t){var m=t,f=d[0]*m[0]/h+d[1]*m[1]/h+1,y=o(r(m[0],p),r(m[1],g));return o(r(1/f/h,y),a)}var b=i(e,a),v=n(i(p,r(d[0],b)),i(g,r(d[1],b)),b);return r(h,v)},e}();d.prototype.$characterSize={width:0,height:0},i.implement(d.prototype,l),t.FontMetrics=d})),ace.define("ace/css/editor-css",["require","exports","module"],(function(e,t,n){n.exports='\n.ace_br1 {border-top-left-radius : 3px;}\n.ace_br2 {border-top-right-radius : 3px;}\n.ace_br3 {border-top-left-radius : 3px; border-top-right-radius: 3px;}\n.ace_br4 {border-bottom-right-radius: 3px;}\n.ace_br5 {border-top-left-radius : 3px; border-bottom-right-radius: 3px;}\n.ace_br6 {border-top-right-radius : 3px; border-bottom-right-radius: 3px;}\n.ace_br7 {border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px;}\n.ace_br8 {border-bottom-left-radius : 3px;}\n.ace_br9 {border-top-left-radius : 3px; border-bottom-left-radius: 3px;}\n.ace_br10{border-top-right-radius : 3px; border-bottom-left-radius: 3px;}\n.ace_br11{border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-left-radius: 3px;}\n.ace_br12{border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}\n.ace_br13{border-top-left-radius : 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}\n.ace_br14{border-top-right-radius : 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}\n.ace_br15{border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}\n\n\n.ace_editor {\n position: relative;\n overflow: hidden;\n padding: 0;\n font: 12px/normal \'Monaco\', \'Menlo\', \'Ubuntu Mono\', \'Consolas\', \'Source Code Pro\', \'source-code-pro\', monospace;\n direction: ltr;\n text-align: left;\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n}\n\n.ace_scroller {\n position: absolute;\n overflow: hidden;\n top: 0;\n bottom: 0;\n background-color: inherit;\n -ms-user-select: none;\n -moz-user-select: none;\n -webkit-user-select: none;\n user-select: none;\n cursor: text;\n}\n\n.ace_content {\n position: absolute;\n box-sizing: border-box;\n min-width: 100%;\n contain: style size layout;\n font-variant-ligatures: no-common-ligatures;\n}\n\n.ace_keyboard-focus:focus {\n box-shadow: inset 0 0 0 2px #5E9ED6;\n outline: none;\n}\n\n.ace_dragging .ace_scroller:before{\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n content: \'\';\n background: rgba(250, 250, 250, 0.01);\n z-index: 1000;\n}\n.ace_dragging.ace_dark .ace_scroller:before{\n background: rgba(0, 0, 0, 0.01);\n}\n\n.ace_gutter {\n position: absolute;\n overflow : hidden;\n width: auto;\n top: 0;\n bottom: 0;\n left: 0;\n cursor: default;\n z-index: 4;\n -ms-user-select: none;\n -moz-user-select: none;\n -webkit-user-select: none;\n user-select: none;\n contain: style size layout;\n}\n\n.ace_gutter-active-line {\n position: absolute;\n left: 0;\n right: 0;\n}\n\n.ace_scroller.ace_scroll-left:after {\n content: "";\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n box-shadow: 17px 0 16px -16px rgba(0, 0, 0, 0.4) inset;\n pointer-events: none;\n}\n\n.ace_gutter-cell, .ace_gutter-cell_svg-icons {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n padding-left: 19px;\n padding-right: 6px;\n background-repeat: no-repeat;\n}\n\n.ace_gutter-cell_svg-icons .ace_gutter_annotation {\n margin-left: -14px;\n float: left;\n}\n\n.ace_gutter-cell .ace_gutter_annotation {\n margin-left: -19px;\n float: left;\n}\n\n.ace_gutter-cell.ace_error, .ace_icon.ace_error, .ace_icon.ace_error_fold {\n background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAABOFBMVEX/////////QRswFAb/Ui4wFAYwFAYwFAaWGAfDRymzOSH/PxswFAb/SiUwFAYwFAbUPRvjQiDllog5HhHdRybsTi3/Tyv9Tir+Syj/UC3////XurebMBIwFAb/RSHbPx/gUzfdwL3kzMivKBAwFAbbvbnhPx66NhowFAYwFAaZJg8wFAaxKBDZurf/RB6mMxb/SCMwFAYwFAbxQB3+RB4wFAb/Qhy4Oh+4QifbNRcwFAYwFAYwFAb/QRzdNhgwFAYwFAbav7v/Uy7oaE68MBK5LxLewr/r2NXewLswFAaxJw4wFAbkPRy2PyYwFAaxKhLm1tMwFAazPiQwFAaUGAb/QBrfOx3bvrv/VC/maE4wFAbRPBq6MRO8Qynew8Dp2tjfwb0wFAbx6eju5+by6uns4uH9/f36+vr/GkHjAAAAYnRSTlMAGt+64rnWu/bo8eAA4InH3+DwoN7j4eLi4xP99Nfg4+b+/u9B/eDs1MD1mO7+4PHg2MXa347g7vDizMLN4eG+Pv7i5evs/v79yu7S3/DV7/498Yv24eH+4ufQ3Ozu/v7+y13sRqwAAADLSURBVHjaZc/XDsFgGIBhtDrshlitmk2IrbHFqL2pvXf/+78DPokj7+Fz9qpU/9UXJIlhmPaTaQ6QPaz0mm+5gwkgovcV6GZzd5JtCQwgsxoHOvJO15kleRLAnMgHFIESUEPmawB9ngmelTtipwwfASilxOLyiV5UVUyVAfbG0cCPHig+GBkzAENHS0AstVF6bacZIOzgLmxsHbt2OecNgJC83JERmePUYq8ARGkJx6XtFsdddBQgZE2nPR6CICZhawjA4Fb/chv+399kfR+MMMDGOQAAAABJRU5ErkJggg==");\n background-repeat: no-repeat;\n background-position: 2px center;\n}\n\n.ace_gutter-cell.ace_warning, .ace_icon.ace_warning, .ace_icon.ace_warning_fold {\n background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAmVBMVEX///8AAAD///8AAAAAAABPSzb/5sAAAAB/blH/73z/ulkAAAAAAAD85pkAAAAAAAACAgP/vGz/rkDerGbGrV7/pkQICAf////e0IsAAAD/oED/qTvhrnUAAAD/yHD/njcAAADuv2r/nz//oTj/p064oGf/zHAAAAA9Nir/tFIAAAD/tlTiuWf/tkIAAACynXEAAAAAAAAtIRW7zBpBAAAAM3RSTlMAABR1m7RXO8Ln31Z36zT+neXe5OzooRDfn+TZ4p3h2hTf4t3k3ucyrN1K5+Xaks52Sfs9CXgrAAAAjklEQVR42o3PbQ+CIBQFYEwboPhSYgoYunIqqLn6/z8uYdH8Vmdnu9vz4WwXgN/xTPRD2+sgOcZjsge/whXZgUaYYvT8QnuJaUrjrHUQreGczuEafQCO/SJTufTbroWsPgsllVhq3wJEk2jUSzX3CUEDJC84707djRc5MTAQxoLgupWRwW6UB5fS++NV8AbOZgnsC7BpEAAAAABJRU5ErkJggg==");\n background-repeat: no-repeat;\n background-position: 2px center;\n}\n\n.ace_gutter-cell.ace_info, .ace_icon.ace_info {\n background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAAAAAA6mKC9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAAJ0Uk5TAAB2k804AAAAPklEQVQY02NgIB68QuO3tiLznjAwpKTgNyDbMegwisCHZUETUZV0ZqOquBpXj2rtnpSJT1AEnnRmL2OgGgAAIKkRQap2htgAAAAASUVORK5CYII=");\n background-repeat: no-repeat;\n background-position: 2px center;\n}\n.ace_dark .ace_gutter-cell.ace_info, .ace_dark .ace_icon.ace_info {\n background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAJFBMVEUAAAChoaGAgIAqKiq+vr6tra1ZWVmUlJSbm5s8PDxubm56enrdgzg3AAAAAXRSTlMAQObYZgAAAClJREFUeNpjYMAPdsMYHegyJZFQBlsUlMFVCWUYKkAZMxZAGdxlDMQBAG+TBP4B6RyJAAAAAElFTkSuQmCC");\n}\n\n.ace_icon_svg.ace_error {\n -webkit-mask-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMCAxNiI+CjxnIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlPSJyZWQiIHNoYXBlLXJlbmRlcmluZz0iZ2VvbWV0cmljUHJlY2lzaW9uIj4KPGNpcmNsZSBmaWxsPSJub25lIiBjeD0iOCIgY3k9IjgiIHI9IjciIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPGxpbmUgeDE9IjExIiB5MT0iNSIgeDI9IjUiIHkyPSIxMSIvPgo8bGluZSB4MT0iMTEiIHkxPSIxMSIgeDI9IjUiIHkyPSI1Ii8+CjwvZz4KPC9zdmc+");\n background-color: crimson;\n}\n.ace_icon_svg.ace_warning {\n -webkit-mask-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMCAxNiI+CjxnIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlPSJkYXJrb3JhbmdlIiBzaGFwZS1yZW5kZXJpbmc9Imdlb21ldHJpY1ByZWNpc2lvbiI+Cjxwb2x5Z29uIHN0cm9rZS1saW5lam9pbj0icm91bmQiIGZpbGw9Im5vbmUiIHBvaW50cz0iOCAxIDE1IDE1IDEgMTUgOCAxIi8+CjxyZWN0IHg9IjgiIHk9IjEyIiB3aWR0aD0iMC4wMSIgaGVpZ2h0PSIwLjAxIi8+CjxsaW5lIHgxPSI4IiB5MT0iNiIgeDI9IjgiIHkyPSIxMCIvPgo8L2c+Cjwvc3ZnPg==");\n background-color: darkorange;\n}\n.ace_icon_svg.ace_info {\n -webkit-mask-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMCAxNiI+CjxnIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlPSJibHVlIiBzaGFwZS1yZW5kZXJpbmc9Imdlb21ldHJpY1ByZWNpc2lvbiI+CjxjaXJjbGUgZmlsbD0ibm9uZSIgY3g9IjgiIGN5PSI4IiByPSI3IiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+Cjxwb2x5bGluZSBwb2ludHM9IjggMTEgOCA4Ii8+Cjxwb2x5bGluZSBwb2ludHM9IjkgOCA2IDgiLz4KPGxpbmUgeDE9IjEwIiB5MT0iMTEiIHgyPSI2IiB5Mj0iMTEiLz4KPHJlY3QgeD0iOCIgeT0iNSIgd2lkdGg9IjAuMDEiIGhlaWdodD0iMC4wMSIvPgo8L2c+Cjwvc3ZnPg==");\n background-color: royalblue;\n}\n\n.ace_icon_svg.ace_error_fold {\n -webkit-mask-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMCAxNiIgZmlsbD0ibm9uZSI+CiAgPHBhdGggZD0ibSAxOC45Mjk4NTEsNy44Mjk4MDc2IGMgMC4xNDYzNTMsNi4zMzc0NjA0IC02LjMyMzE0Nyw3Ljc3Nzg0NDQgLTcuNDc3OTEyLDcuNzc3ODQ0NCAtMi4xMDcyNzI2LC0wLjEyODc1IDUuMTE3Njc4LDAuMzU2MjQ5IDUuMDUxNjk4LC03Ljg3MDA2MTggLTAuNjA0NjcyLC04LjAwMzk3MzQ5IC03LjA3NzI3MDYsLTcuNTYzMTE4OSAtNC44NTczLC03LjQzMDM5NTU2IDEuNjA2LC0wLjExNTE0MjI1IDYuODk3NDg1LDEuMjYyNTQ1OTYgNy4yODM1MTQsNy41MjI2MTI5NiB6IiBmaWxsPSJjcmltc29uIiBzdHJva2Utd2lkdGg9IjIiLz4KICA8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0ibSA4LjExNDc1NjIsMi4wNTI5ODI4IGMgMy4zNDkxNjk4LDAgNi4wNjQxMzI4LDIuNjc2ODYyNyA2LjA2NDEzMjgsNS45Nzg5NTMgMCwzLjMwMjExMjIgLTIuNzE0OTYzLDUuOTc4OTIwMiAtNi4wNjQxMzI4LDUuOTc4OTIwMiAtMy4zNDkxNDczLDAgLTYuMDY0MTc3MiwtMi42NzY4MDggLTYuMDY0MTc3MiwtNS45Nzg5MjAyIDAuMDA1MzksLTMuMjk5ODg2MSAyLjcxNzI2NTYsLTUuOTczNjQwOCA2LjA2NDE3NzIsLTUuOTc4OTUzIHogbSAwLC0xLjczNTgyNzE5IGMgLTQuMzIxNDgzNiwwIC03LjgyNDc0MDM4LDMuNDU0MDE4NDkgLTcuODI0NzQwMzgsNy43MTQ3ODAxOSAwLDQuMjYwNzI4MiAzLjUwMzI1Njc4LDcuNzE0NzQ1MiA3LjgyNDc0MDM4LDcuNzE0NzQ1MiA0LjMyMTQ0OTgsMCA3LjgyNDY5OTgsLTMuNDU0MDE3IDcuODI0Njk5OCwtNy43MTQ3NDUyIDAsLTIuMDQ2MDkxNCAtMC44MjQzOTIsLTQuMDA4MzY3MiAtMi4yOTE3NTYsLTUuNDU1MTc0NiBDIDEyLjE4MDIyNSwxLjEyOTk2NDggMTAuMTkwMDEzLDAuMzE3MTU1NjEgOC4xMTQ3NTYyLDAuMzE3MTU1NjEgWiBNIDYuOTM3NDU2Myw4LjI0MDU5ODUgNC42NzE4Njg1LDEwLjQ4NTg1MiA2LjAwODY4MTQsMTEuODc2NzI4IDguMzE3MDAzNSw5LjYwMDc5MTEgMTAuNjI1MzM3LDExLjg3NjcyOCAxMS45NjIxMzgsMTAuNDg1ODUyIDkuNjk2NTUwOCw4LjI0MDU5ODUgMTEuOTYyMTM4LDYuMDA2ODA2NiAxMC41NzMyNDYsNC42Mzc0MzM1IDguMzE3MDAzNSw2Ljg3MzQyOTcgNi4wNjA3NjA3LDQuNjM3NDMzNSA0LjY3MTg2ODUsNi4wMDY4MDY2IFoiIGZpbGw9ImNyaW1zb24iIHN0cm9rZS13aWR0aD0iMiIvPgo8L3N2Zz4=");\n background-color: crimson;\n}\n.ace_icon_svg.ace_warning_fold {\n -webkit-mask-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAyMCAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xNC43NzY5IDE0LjczMzdMOC42NTE5MiAyLjQ4MzY5QzguMzI5NDYgMS44Mzg3NyA3LjQwOTEzIDEuODM4NzcgNy4wODY2NyAyLjQ4MzY5TDAuOTYxNjY5IDE0LjczMzdDMC42NzA3NzUgMTUuMzE1NSAxLjA5MzgzIDE2IDEuNzQ0MjkgMTZIMTMuOTk0M0MxNC42NDQ4IDE2IDE1LjA2NzggMTUuMzE1NSAxNC43NzY5IDE0LjczMzdaTTMuMTYwMDcgMTQuMjVMNy44NjkyOSA0LjgzMTU2TDEyLjU3ODUgMTQuMjVIMy4xNjAwN1pNOC43NDQyOSAxMS42MjVWMTMuMzc1SDYuOTk0MjlWMTEuNjI1SDguNzQ0MjlaTTYuOTk0MjkgMTAuNzVWNy4yNUg4Ljc0NDI5VjEwLjc1SDYuOTk0MjlaIiBmaWxsPSIjRUM3MjExIi8+CjxwYXRoIGQ9Ik0xMS4xOTkxIDIuOTUyMzhDMTAuODgwOSAyLjMxNDY3IDEwLjM1MzcgMS44MDUyNiA5LjcwNTUgMS41MDlMMTEuMDQxIDEuMDY5NzhDMTEuNjg4MyAwLjk0OTgxNCAxMi4zMzcgMS4yNzI2MyAxMi42MzE3IDEuODYxNDFMMTcuNjEzNiAxMS44MTYxQzE4LjM1MjcgMTMuMjkyOSAxNy41OTM4IDE1LjA4MDQgMTYuMDE4IDE1LjU3NDVDMTYuNDA0NCAxNC40NTA3IDE2LjMyMzEgMTMuMjE4OCAxNS43OTI0IDEyLjE1NTVMMTEuMTk5MSAyLjk1MjM4WiIgZmlsbD0iI0VDNzIxMSIvPgo8L3N2Zz4=");\n background-color: darkorange;\n}\n\n.ace_scrollbar {\n contain: strict;\n position: absolute;\n right: 0;\n bottom: 0;\n z-index: 6;\n}\n\n.ace_scrollbar-inner {\n position: absolute;\n cursor: text;\n left: 0;\n top: 0;\n}\n\n.ace_scrollbar-v{\n overflow-x: hidden;\n overflow-y: scroll;\n top: 0;\n}\n\n.ace_scrollbar-h {\n overflow-x: scroll;\n overflow-y: hidden;\n left: 0;\n}\n\n.ace_print-margin {\n position: absolute;\n height: 100%;\n}\n\n.ace_text-input {\n position: absolute;\n z-index: 0;\n width: 0.5em;\n height: 1em;\n opacity: 0;\n background: transparent;\n -moz-appearance: none;\n appearance: none;\n border: none;\n resize: none;\n outline: none;\n overflow: hidden;\n font: inherit;\n padding: 0 1px;\n margin: 0 -1px;\n contain: strict;\n -ms-user-select: text;\n -moz-user-select: text;\n -webkit-user-select: text;\n user-select: text;\n /*with `pre-line` chrome inserts   instead of space*/\n white-space: pre!important;\n}\n.ace_text-input.ace_composition {\n background: transparent;\n color: inherit;\n z-index: 1000;\n opacity: 1;\n}\n.ace_composition_placeholder { color: transparent }\n.ace_composition_marker { \n border-bottom: 1px solid;\n position: absolute;\n border-radius: 0;\n margin-top: 1px;\n}\n\n[ace_nocontext=true] {\n transform: none!important;\n filter: none!important;\n clip-path: none!important;\n mask : none!important;\n contain: none!important;\n perspective: none!important;\n mix-blend-mode: initial!important;\n z-index: auto;\n}\n\n.ace_layer {\n z-index: 1;\n position: absolute;\n overflow: hidden;\n /* workaround for chrome bug https://github.com/ajaxorg/ace/issues/2312*/\n word-wrap: normal;\n white-space: pre;\n height: 100%;\n width: 100%;\n box-sizing: border-box;\n /* setting pointer-events: auto; on node under the mouse, which changes\n during scroll, will break mouse wheel scrolling in Safari */\n pointer-events: none;\n}\n\n.ace_gutter-layer {\n position: relative;\n width: auto;\n text-align: right;\n pointer-events: auto;\n height: 1000000px;\n contain: style size layout;\n}\n\n.ace_text-layer {\n font: inherit !important;\n position: absolute;\n height: 1000000px;\n width: 1000000px;\n contain: style size layout;\n}\n\n.ace_text-layer > .ace_line, .ace_text-layer > .ace_line_group {\n contain: style size layout;\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n}\n\n.ace_hidpi .ace_text-layer,\n.ace_hidpi .ace_gutter-layer,\n.ace_hidpi .ace_content,\n.ace_hidpi .ace_gutter {\n contain: strict;\n}\n.ace_hidpi .ace_text-layer > .ace_line, \n.ace_hidpi .ace_text-layer > .ace_line_group {\n contain: strict;\n}\n\n.ace_cjk {\n display: inline-block;\n text-align: center;\n}\n\n.ace_cursor-layer {\n z-index: 4;\n}\n\n.ace_cursor {\n z-index: 4;\n position: absolute;\n box-sizing: border-box;\n border-left: 2px solid;\n /* workaround for smooth cursor repaintng whole screen in chrome */\n transform: translatez(0);\n}\n\n.ace_multiselect .ace_cursor {\n border-left-width: 1px;\n}\n\n.ace_slim-cursors .ace_cursor {\n border-left-width: 1px;\n}\n\n.ace_overwrite-cursors .ace_cursor {\n border-left-width: 0;\n border-bottom: 1px solid;\n}\n\n.ace_hidden-cursors .ace_cursor {\n opacity: 0.2;\n}\n\n.ace_hasPlaceholder .ace_hidden-cursors .ace_cursor {\n opacity: 0;\n}\n\n.ace_smooth-blinking .ace_cursor {\n transition: opacity 0.18s;\n}\n\n.ace_animate-blinking .ace_cursor {\n animation-duration: 1000ms;\n animation-timing-function: step-end;\n animation-name: blink-ace-animate;\n animation-iteration-count: infinite;\n}\n\n.ace_animate-blinking.ace_smooth-blinking .ace_cursor {\n animation-duration: 1000ms;\n animation-timing-function: ease-in-out;\n animation-name: blink-ace-animate-smooth;\n}\n \n@keyframes blink-ace-animate {\n from, to { opacity: 1; }\n 60% { opacity: 0; }\n}\n\n@keyframes blink-ace-animate-smooth {\n from, to { opacity: 1; }\n 45% { opacity: 1; }\n 60% { opacity: 0; }\n 85% { opacity: 0; }\n}\n\n.ace_marker-layer .ace_step, .ace_marker-layer .ace_stack {\n position: absolute;\n z-index: 3;\n}\n\n.ace_marker-layer .ace_selection {\n position: absolute;\n z-index: 5;\n}\n\n.ace_marker-layer .ace_bracket {\n position: absolute;\n z-index: 6;\n}\n\n.ace_marker-layer .ace_error_bracket {\n position: absolute;\n border-bottom: 1px solid #DE5555;\n border-radius: 0;\n}\n\n.ace_marker-layer .ace_active-line {\n position: absolute;\n z-index: 2;\n}\n\n.ace_marker-layer .ace_selected-word {\n position: absolute;\n z-index: 4;\n box-sizing: border-box;\n}\n\n.ace_line .ace_fold {\n box-sizing: border-box;\n\n display: inline-block;\n height: 11px;\n margin-top: -2px;\n vertical-align: middle;\n\n background-image:\n url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII="),\n url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACJJREFUeNpi+P//fxgTAwPDBxDxD078RSX+YeEyDFMCIMAAI3INmXiwf2YAAAAASUVORK5CYII=");\n background-repeat: no-repeat, repeat-x;\n background-position: center center, top left;\n color: transparent;\n\n border: 1px solid black;\n border-radius: 2px;\n\n cursor: pointer;\n pointer-events: auto;\n}\n\n.ace_dark .ace_fold {\n}\n\n.ace_fold:hover{\n background-image:\n url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII="),\n url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACBJREFUeNpi+P//fz4TAwPDZxDxD5X4i5fLMEwJgAADAEPVDbjNw87ZAAAAAElFTkSuQmCC");\n}\n\n.ace_tooltip {\n background-color: #f5f5f5;\n border: 1px solid gray;\n border-radius: 1px;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);\n color: black;\n max-width: 100%;\n padding: 3px 4px;\n position: fixed;\n z-index: 999999;\n box-sizing: border-box;\n cursor: default;\n white-space: pre-wrap;\n word-wrap: break-word;\n line-height: normal;\n font-style: normal;\n font-weight: normal;\n letter-spacing: normal;\n pointer-events: none;\n overflow: auto;\n max-width: min(60em, 66vw);\n}\n.ace_tooltip pre {\n white-space: pre-wrap;\n}\n\n.ace_tooltip.ace_dark {\n background-color: #636363;\n color: #fff;\n}\n\n.ace_tooltip:focus {\n outline: 1px solid #5E9ED6;\n}\n\n.ace_icon {\n display: inline-block;\n width: 18px;\n vertical-align: top;\n}\n\n.ace_icon_svg {\n display: inline-block;\n width: 12px;\n vertical-align: top;\n -webkit-mask-repeat: no-repeat;\n -webkit-mask-size: 12px;\n -webkit-mask-position: center;\n}\n\n.ace_folding-enabled > .ace_gutter-cell, .ace_folding-enabled > .ace_gutter-cell_svg-icons {\n padding-right: 13px;\n}\n\n.ace_fold-widget {\n box-sizing: border-box;\n\n margin: 0 -12px 0 1px;\n display: none;\n width: 11px;\n vertical-align: top;\n\n background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42mWKsQ0AMAzC8ixLlrzQjzmBiEjp0A6WwBCSPgKAXoLkqSot7nN3yMwR7pZ32NzpKkVoDBUxKAAAAABJRU5ErkJggg==");\n background-repeat: no-repeat;\n background-position: center;\n\n border-radius: 3px;\n \n border: 1px solid transparent;\n cursor: pointer;\n}\n\n.ace_folding-enabled .ace_fold-widget {\n display: inline-block; \n}\n\n.ace_fold-widget.ace_end {\n background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42m3HwQkAMAhD0YzsRchFKI7sAikeWkrxwScEB0nh5e7KTPWimZki4tYfVbX+MNl4pyZXejUO1QAAAABJRU5ErkJggg==");\n}\n\n.ace_fold-widget.ace_closed {\n background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAGCAYAAAAG5SQMAAAAOUlEQVR42jXKwQkAMAgDwKwqKD4EwQ26sSOkVWjgIIHAzPiCgaqiqnJHZnKICBERHN194O5b9vbLuAVRL+l0YWnZAAAAAElFTkSuQmCCXA==");\n}\n\n.ace_fold-widget:hover {\n border: 1px solid rgba(0, 0, 0, 0.3);\n background-color: rgba(255, 255, 255, 0.2);\n box-shadow: 0 1px 1px rgba(255, 255, 255, 0.7);\n}\n\n.ace_fold-widget:active {\n border: 1px solid rgba(0, 0, 0, 0.4);\n background-color: rgba(0, 0, 0, 0.05);\n box-shadow: 0 1px 1px rgba(255, 255, 255, 0.8);\n}\n/**\n * Dark version for fold widgets\n */\n.ace_dark .ace_fold-widget {\n background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHklEQVQIW2P4//8/AzoGEQ7oGCaLLAhWiSwB146BAQCSTPYocqT0AAAAAElFTkSuQmCC");\n}\n.ace_dark .ace_fold-widget.ace_end {\n background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAH0lEQVQIW2P4//8/AxQ7wNjIAjDMgC4AxjCVKBirIAAF0kz2rlhxpAAAAABJRU5ErkJggg==");\n}\n.ace_dark .ace_fold-widget.ace_closed {\n background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAFCAYAAACAcVaiAAAAHElEQVQIW2P4//+/AxAzgDADlOOAznHAKgPWAwARji8UIDTfQQAAAABJRU5ErkJggg==");\n}\n.ace_dark .ace_fold-widget:hover {\n box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);\n background-color: rgba(255, 255, 255, 0.1);\n}\n.ace_dark .ace_fold-widget:active {\n box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);\n}\n\n.ace_inline_button {\n border: 1px solid lightgray;\n display: inline-block;\n margin: -1px 8px;\n padding: 0 5px;\n pointer-events: auto;\n cursor: pointer;\n}\n.ace_inline_button:hover {\n border-color: gray;\n background: rgba(200,200,200,0.2);\n display: inline-block;\n pointer-events: auto;\n}\n\n.ace_fold-widget.ace_invalid {\n background-color: #FFB4B4;\n border-color: #DE5555;\n}\n\n.ace_fade-fold-widgets .ace_fold-widget {\n transition: opacity 0.4s ease 0.05s;\n opacity: 0;\n}\n\n.ace_fade-fold-widgets:hover .ace_fold-widget {\n transition: opacity 0.05s ease 0.05s;\n opacity:1;\n}\n\n.ace_underline {\n text-decoration: underline;\n}\n\n.ace_bold {\n font-weight: bold;\n}\n\n.ace_nobold .ace_bold {\n font-weight: normal;\n}\n\n.ace_italic {\n font-style: italic;\n}\n\n\n.ace_error-marker {\n background-color: rgba(255, 0, 0,0.2);\n position: absolute;\n z-index: 9;\n}\n\n.ace_highlight-marker {\n background-color: rgba(255, 255, 0,0.2);\n position: absolute;\n z-index: 8;\n}\n\n.ace_mobile-menu {\n position: absolute;\n line-height: 1.5;\n border-radius: 4px;\n -ms-user-select: none;\n -moz-user-select: none;\n -webkit-user-select: none;\n user-select: none;\n background: white;\n box-shadow: 1px 3px 2px grey;\n border: 1px solid #dcdcdc;\n color: black;\n}\n.ace_dark > .ace_mobile-menu {\n background: #333;\n color: #ccc;\n box-shadow: 1px 3px 2px grey;\n border: 1px solid #444;\n\n}\n.ace_mobile-button {\n padding: 2px;\n cursor: pointer;\n overflow: hidden;\n}\n.ace_mobile-button:hover {\n background-color: #eee;\n opacity:1;\n}\n.ace_mobile-button:active {\n background-color: #ddd;\n}\n\n.ace_placeholder {\n font-family: arial;\n transform: scale(0.9);\n transform-origin: left;\n white-space: pre;\n opacity: 0.7;\n margin: 0 10px;\n}\n\n.ace_ghost_text {\n opacity: 0.5;\n font-style: italic;\n white-space: pre;\n}\n\n.ace_screenreader-only {\n position:absolute;\n left:-10000px;\n top:auto;\n width:1px;\n height:1px;\n overflow:hidden;\n}'})),ace.define("ace/layer/decorators",["require","exports","module","ace/lib/dom","ace/lib/oop","ace/lib/event_emitter"],(function(e,t,n){"use strict";var i=e("../lib/dom"),o=e("../lib/oop"),r=e("../lib/event_emitter").EventEmitter,s=function(){function e(e,t){this.canvas=i.createElement("canvas"),this.renderer=t,this.pixelRatio=1,this.maxHeight=t.layerConfig.maxHeight,this.lineHeight=t.layerConfig.lineHeight,this.canvasHeight=e.parent.scrollHeight,this.heightRatio=this.canvasHeight/this.maxHeight,this.canvasWidth=e.width,this.minDecorationHeight=2*this.pixelRatio|0,this.halfMinDecorationHeight=this.minDecorationHeight/2|0,this.canvas.width=this.canvasWidth,this.canvas.height=this.canvasHeight,this.canvas.style.top="0px",this.canvas.style.right="0px",this.canvas.style.zIndex="7px",this.canvas.style.position="absolute",this.colors={},this.colors.dark={error:"rgba(255, 18, 18, 1)",warning:"rgba(18, 136, 18, 1)",info:"rgba(18, 18, 136, 1)"},this.colors.light={error:"rgb(255,51,51)",warning:"rgb(32,133,72)",info:"rgb(35,68,138)"},e.element.appendChild(this.canvas)}return e.prototype.$updateDecorators=function(e){var t=!0===this.renderer.theme.isDark?this.colors.dark:this.colors.light;e&&(this.maxHeight=e.maxHeight,this.lineHeight=e.lineHeight,this.canvasHeight=e.height,(e.lastRow+1)*this.lineHeightt.priority?1:0}));for(var r=this.renderer.session.$foldData,s=0;sthis.canvasHeight&&(d=this.canvasHeight-this.halfMinDecorationHeight),u=Math.round(d-this.halfMinDecorationHeight),h=Math.round(d+this.halfMinDecorationHeight)}n.fillStyle=t[i[s].type]||null,n.fillRect(0,c,this.canvasWidth,h-u)}}var p=this.renderer.session.selection.getCursor();p&&(l=this.compensateFoldRows(p.row,r),c=Math.round((p.row-l)*this.lineHeight*this.heightRatio),n.fillStyle="rgba(0, 0, 0, 0.5)",n.fillRect(0,c,this.canvasWidth,2))},e.prototype.compensateFoldRows=function(e,t){var n=0;if(t&&t.length>0)for(var i=0;it[i].start.row&&e=t[i].end.row&&(n+=t[i].end.row-t[i].start.row);return n},e}();o.implement(s.prototype,r),t.Decorator=s})),ace.define("ace/virtual_renderer",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/config","ace/layer/gutter","ace/layer/marker","ace/layer/text","ace/layer/cursor","ace/scrollbar","ace/scrollbar","ace/scrollbar_custom","ace/scrollbar_custom","ace/renderloop","ace/layer/font_metrics","ace/lib/event_emitter","ace/css/editor-css","ace/layer/decorators","ace/lib/useragent"],(function(e,t,n){"use strict";var i=e("./lib/oop"),o=e("./lib/dom"),r=e("./lib/lang"),s=e("./config"),a=e("./layer/gutter").Gutter,l=e("./layer/marker").Marker,c=e("./layer/text").Text,u=e("./layer/cursor").Cursor,h=e("./scrollbar").HScrollBar,d=e("./scrollbar").VScrollBar,p=e("./scrollbar_custom").HScrollBar,g=e("./scrollbar_custom").VScrollBar,m=e("./renderloop").RenderLoop,f=e("./layer/font_metrics").FontMetrics,y=e("./lib/event_emitter").EventEmitter,b=e("./css/editor-css"),v=e("./layer/decorators").Decorator,w=e("./lib/useragent");o.importCssString(b,"ace_editor.css",!1);var A=function(){function e(e,t){var n=this;this.container=e||o.createElement("div"),o.addCssClass(this.container,"ace_editor"),o.HI_DPI&&o.addCssClass(this.container,"ace_hidpi"),this.setTheme(t),null==s.get("useStrictCSP")&&s.set("useStrictCSP",!1),this.$gutter=o.createElement("div"),this.$gutter.className="ace_gutter",this.container.appendChild(this.$gutter),this.$gutter.setAttribute("aria-hidden",!0),this.scroller=o.createElement("div"),this.scroller.className="ace_scroller",this.container.appendChild(this.scroller),this.content=o.createElement("div"),this.content.className="ace_content",this.scroller.appendChild(this.content),this.$gutterLayer=new a(this.$gutter),this.$gutterLayer.on("changeGutterWidth",this.onGutterResize.bind(this)),this.$markerBack=new l(this.content);var i=this.$textLayer=new c(this.content);this.canvas=i.element,this.$markerFront=new l(this.content),this.$cursorLayer=new u(this.content),this.$horizScroll=!1,this.$vScroll=!1,this.scrollBar=this.scrollBarV=new d(this.container,this),this.scrollBarH=new h(this.container,this),this.scrollBarV.on("scroll",(function(e){n.$scrollAnimation||n.session.setScrollTop(e.data-n.scrollMargin.top)})),this.scrollBarH.on("scroll",(function(e){n.$scrollAnimation||n.session.setScrollLeft(e.data-n.scrollMargin.left)})),this.scrollTop=0,this.scrollLeft=0,this.cursorPos={row:0,column:0},this.$fontMetrics=new f(this.container),this.$textLayer.$setFontMetrics(this.$fontMetrics),this.$textLayer.on("changeCharacterSize",(function(e){n.updateCharacterSize(),n.onResize(!0,n.gutterWidth,n.$size.width,n.$size.height),n._signal("changeCharacterSize",e)})),this.$size={width:0,height:0,scrollerHeight:0,scrollerWidth:0,$dirty:!0},this.layerConfig={width:1,padding:0,firstRow:0,firstRowScreen:0,lastRow:0,lineHeight:0,characterWidth:0,minHeight:1,maxHeight:1,offset:0,height:1,gutterOffset:1},this.scrollMargin={left:0,right:0,top:0,bottom:0,v:0,h:0},this.margin={left:0,right:0,top:0,bottom:0,v:0,h:0},this.$keepTextAreaAtCursor=!w.isIOS,this.$loop=new m(this.$renderChanges.bind(this),this.container.ownerDocument.defaultView),this.$loop.schedule(this.CHANGE_FULL),this.updateCharacterSize(),this.setPadding(4),this.$addResizeObserver(),s.resetOptions(this),s._signal("renderer",this)}return e.prototype.updateCharacterSize=function(){this.$textLayer.allowBoldFonts!=this.$allowBoldFonts&&(this.$allowBoldFonts=this.$textLayer.allowBoldFonts,this.setStyle("ace_nobold",!this.$allowBoldFonts)),this.layerConfig.characterWidth=this.characterWidth=this.$textLayer.getCharacterWidth(),this.layerConfig.lineHeight=this.lineHeight=this.$textLayer.getLineHeight(),this.$updatePrintMargin(),o.setStyle(this.scroller.style,"line-height",this.lineHeight+"px")},e.prototype.setSession=function(e){this.session&&this.session.doc.off("changeNewLineMode",this.onChangeNewLineMode),this.session=e,e&&this.scrollMargin.top&&e.getScrollTop()<=0&&e.setScrollTop(-this.scrollMargin.top),this.$cursorLayer.setSession(e),this.$markerBack.setSession(e),this.$markerFront.setSession(e),this.$gutterLayer.setSession(e),this.$textLayer.setSession(e),e&&(this.$loop.schedule(this.CHANGE_FULL),this.session.$setFontMetrics(this.$fontMetrics),this.scrollBarH.scrollLeft=this.scrollBarV.scrollTop=null,this.onChangeNewLineMode=this.onChangeNewLineMode.bind(this),this.onChangeNewLineMode(),this.session.doc.on("changeNewLineMode",this.onChangeNewLineMode))},e.prototype.updateLines=function(e,t,n){if(void 0===t&&(t=1/0),this.$changedLines?(this.$changedLines.firstRow>e&&(this.$changedLines.firstRow=e),this.$changedLines.lastRowthis.layerConfig.lastRow||this.$loop.schedule(this.CHANGE_LINES)},e.prototype.onChangeNewLineMode=function(){this.$loop.schedule(this.CHANGE_TEXT),this.$textLayer.$updateEolChar(),this.session.$bidiHandler.setEolChar(this.$textLayer.EOL_CHAR)},e.prototype.onChangeTabSize=function(){this.$loop.schedule(this.CHANGE_TEXT|this.CHANGE_MARKER),this.$textLayer.onChangeTabSize()},e.prototype.updateText=function(){this.$loop.schedule(this.CHANGE_TEXT)},e.prototype.updateFull=function(e){e?this.$renderChanges(this.CHANGE_FULL,!0):this.$loop.schedule(this.CHANGE_FULL)},e.prototype.updateFontSize=function(){this.$textLayer.checkForSizeChanges()},e.prototype.$updateSizeAsync=function(){this.$loop.pending?this.$size.$dirty=!0:this.onResize()},e.prototype.onResize=function(e,t,n,i){if(!(this.resizing>2)){this.resizing>0?this.resizing++:this.resizing=e?1:0;var o=this.container;i||(i=o.clientHeight||o.scrollHeight),n||(n=o.clientWidth||o.scrollWidth);var r=this.$updateCachedSize(e,t,n,i);if(this.$resizeTimer&&this.$resizeTimer.cancel(),!this.$size.scrollerHeight||!n&&!i)return this.resizing=0;e&&(this.$gutterLayer.$padding=null),e?this.$renderChanges(r|this.$changes,!0):this.$loop.schedule(r|this.$changes),this.resizing&&(this.resizing=0),this.scrollBarH.scrollLeft=this.scrollBarV.scrollTop=null,this.$customScrollbar&&this.$updateCustomScrollbar(!0)}},e.prototype.$updateCachedSize=function(e,t,n,i){i-=this.$extraHeight||0;var r=0,s=this.$size,a={width:s.width,height:s.height,scrollerHeight:s.scrollerHeight,scrollerWidth:s.scrollerWidth};if(i&&(e||s.height!=i)&&(s.height=i,r|=this.CHANGE_SIZE,s.scrollerHeight=s.height,this.$horizScroll&&(s.scrollerHeight-=this.scrollBarH.getHeight()),this.scrollBarV.setHeight(s.scrollerHeight),this.scrollBarV.element.style.bottom=this.scrollBarH.getHeight()+"px",r|=this.CHANGE_SCROLL),n&&(e||s.width!=n)){r|=this.CHANGE_SIZE,s.width=n,null==t&&(t=this.$showGutter?this.$gutter.offsetWidth:0),this.gutterWidth=t,o.setStyle(this.scrollBarH.element.style,"left",t+"px"),o.setStyle(this.scroller.style,"left",t+this.margin.left+"px"),s.scrollerWidth=Math.max(0,n-t-this.scrollBarV.getWidth()-this.margin.h),o.setStyle(this.$gutter.style,"left",this.margin.left+"px");var l=this.scrollBarV.getWidth()+"px";o.setStyle(this.scrollBarH.element.style,"right",l),o.setStyle(this.scroller.style,"right",l),o.setStyle(this.scroller.style,"bottom",this.scrollBarH.getHeight()),this.scrollBarH.setWidth(s.scrollerWidth),(this.session&&this.session.getUseWrapMode()&&this.adjustWrapLimit()||e)&&(r|=this.CHANGE_FULL)}return s.$dirty=!n||!i,r&&this._signal("resize",a),r},e.prototype.onGutterResize=function(e){var t=this.$showGutter?e:0;t!=this.gutterWidth&&(this.$changes|=this.$updateCachedSize(!0,t,this.$size.width,this.$size.height)),this.session.getUseWrapMode()&&this.adjustWrapLimit()||this.$size.$dirty?this.$loop.schedule(this.CHANGE_FULL):this.$computeLayerConfig()},e.prototype.adjustWrapLimit=function(){var e=this.$size.scrollerWidth-2*this.$padding,t=Math.floor(e/this.characterWidth);return this.session.adjustWrapLimit(t,this.$showPrintMargin&&this.$printMarginColumn)},e.prototype.setAnimatedScroll=function(e){this.setOption("animatedScroll",e)},e.prototype.getAnimatedScroll=function(){return this.$animatedScroll},e.prototype.setShowInvisibles=function(e){this.setOption("showInvisibles",e),this.session.$bidiHandler.setShowInvisibles(e)},e.prototype.getShowInvisibles=function(){return this.getOption("showInvisibles")},e.prototype.getDisplayIndentGuides=function(){return this.getOption("displayIndentGuides")},e.prototype.setDisplayIndentGuides=function(e){this.setOption("displayIndentGuides",e)},e.prototype.getHighlightIndentGuides=function(){return this.getOption("highlightIndentGuides")},e.prototype.setHighlightIndentGuides=function(e){this.setOption("highlightIndentGuides",e)},e.prototype.setShowPrintMargin=function(e){this.setOption("showPrintMargin",e)},e.prototype.getShowPrintMargin=function(){return this.getOption("showPrintMargin")},e.prototype.setPrintMarginColumn=function(e){this.setOption("printMarginColumn",e)},e.prototype.getPrintMarginColumn=function(){return this.getOption("printMarginColumn")},e.prototype.getShowGutter=function(){return this.getOption("showGutter")},e.prototype.setShowGutter=function(e){return this.setOption("showGutter",e)},e.prototype.getFadeFoldWidgets=function(){return this.getOption("fadeFoldWidgets")},e.prototype.setFadeFoldWidgets=function(e){this.setOption("fadeFoldWidgets",e)},e.prototype.setHighlightGutterLine=function(e){this.setOption("highlightGutterLine",e)},e.prototype.getHighlightGutterLine=function(){return this.getOption("highlightGutterLine")},e.prototype.$updatePrintMargin=function(){if(this.$showPrintMargin||this.$printMarginEl){if(!this.$printMarginEl){var e=o.createElement("div");e.className="ace_layer ace_print-margin-layer",this.$printMarginEl=o.createElement("div"),this.$printMarginEl.className="ace_print-margin",e.appendChild(this.$printMarginEl),this.content.insertBefore(e,this.content.firstChild)}var t=this.$printMarginEl.style;t.left=Math.round(this.characterWidth*this.$printMarginColumn+this.$padding)+"px",t.visibility=this.$showPrintMargin?"visible":"hidden",this.session&&-1==this.session.$wrap&&this.adjustWrapLimit()}},e.prototype.getContainerElement=function(){return this.container},e.prototype.getMouseEventTarget=function(){return this.scroller},e.prototype.getTextAreaContainer=function(){return this.container},e.prototype.$moveTextAreaToCursor=function(){if(!this.$isMousePressed){var e=this.textarea.style,t=this.$composition;if(this.$keepTextAreaAtCursor||t){var n=this.$cursorLayer.$pixelPos;if(n){t&&t.markerRange&&(n=this.$cursorLayer.getPixelPosition(t.markerRange.start,!0));var i=this.layerConfig,r=n.top,s=n.left;r-=i.offset;var a=t&&t.useTextareaForIME||w.isMobile?this.lineHeight:1;if(r<0||r>i.height-a)o.translate(this.textarea,0,0);else{var l=1,c=this.$size.height-a;if(t)if(t.useTextareaForIME){var u=this.textarea.value;l=this.characterWidth*this.session.$getStringScreenWidth(u)[0]}else r+=this.lineHeight+2;else r+=this.lineHeight;(s-=this.scrollLeft)>this.$size.scrollerWidth-l&&(s=this.$size.scrollerWidth-l),s+=this.gutterWidth+this.margin.left,o.setStyle(e,"height",a+"px"),o.setStyle(e,"width",l+"px"),o.translate(this.textarea,Math.min(s,this.$size.scrollerWidth-l),Math.min(r,c))}}}else o.translate(this.textarea,-100,0)}},e.prototype.getFirstVisibleRow=function(){return this.layerConfig.firstRow},e.prototype.getFirstFullyVisibleRow=function(){return this.layerConfig.firstRow+(0===this.layerConfig.offset?0:1)},e.prototype.getLastFullyVisibleRow=function(){var e=this.layerConfig,t=e.lastRow;return this.session.documentToScreenRow(t,0)*e.lineHeight-this.session.getScrollTop()>e.height-e.lineHeight?t-1:t},e.prototype.getLastVisibleRow=function(){return this.layerConfig.lastRow},e.prototype.setPadding=function(e){this.$padding=e,this.$textLayer.setPadding(e),this.$cursorLayer.setPadding(e),this.$markerFront.setPadding(e),this.$markerBack.setPadding(e),this.$loop.schedule(this.CHANGE_FULL),this.$updatePrintMargin()},e.prototype.setScrollMargin=function(e,t,n,i){var o=this.scrollMargin;o.top=0|e,o.bottom=0|t,o.right=0|i,o.left=0|n,o.v=o.top+o.bottom,o.h=o.left+o.right,o.top&&this.scrollTop<=0&&this.session&&this.session.setScrollTop(-o.top),this.updateFull()},e.prototype.setMargin=function(e,t,n,i){var o=this.margin;o.top=0|e,o.bottom=0|t,o.right=0|i,o.left=0|n,o.v=o.top+o.bottom,o.h=o.left+o.right,this.$updateCachedSize(!0,this.gutterWidth,this.$size.width,this.$size.height),this.updateFull()},e.prototype.getHScrollBarAlwaysVisible=function(){return this.$hScrollBarAlwaysVisible},e.prototype.setHScrollBarAlwaysVisible=function(e){this.setOption("hScrollBarAlwaysVisible",e)},e.prototype.getVScrollBarAlwaysVisible=function(){return this.$vScrollBarAlwaysVisible},e.prototype.setVScrollBarAlwaysVisible=function(e){this.setOption("vScrollBarAlwaysVisible",e)},e.prototype.$updateScrollBarV=function(){var e=this.layerConfig.maxHeight,t=this.$size.scrollerHeight;!this.$maxLines&&this.$scrollPastEnd&&(e-=(t-this.lineHeight)*this.$scrollPastEnd,this.scrollTop>e-t&&(e=this.scrollTop+t,this.scrollBarV.scrollTop=null)),this.scrollBarV.setScrollHeight(e+this.scrollMargin.v),this.scrollBarV.setScrollTop(this.scrollTop+this.scrollMargin.top)},e.prototype.$updateScrollBarH=function(){this.scrollBarH.setScrollWidth(this.layerConfig.width+2*this.$padding+this.scrollMargin.h),this.scrollBarH.setScrollLeft(this.scrollLeft+this.scrollMargin.left)},e.prototype.freeze=function(){this.$frozen=!0},e.prototype.unfreeze=function(){this.$frozen=!1},e.prototype.$renderChanges=function(e,t){if(this.$changes&&(e|=this.$changes,this.$changes=0),this.session&&this.container.offsetWidth&&!this.$frozen&&(e||t)){if(this.$size.$dirty)return this.$changes|=e,this.onResize(!0);this.lineHeight||this.$textLayer.checkForSizeChanges(),this._signal("beforeRender",e),this.session&&this.session.$bidiHandler&&this.session.$bidiHandler.updateCharacterWidths(this.$fontMetrics);var n=this.layerConfig;if(e&this.CHANGE_FULL||e&this.CHANGE_SIZE||e&this.CHANGE_TEXT||e&this.CHANGE_LINES||e&this.CHANGE_SCROLL||e&this.CHANGE_H_SCROLL){if(e|=this.$computeLayerConfig()|this.$loop.clear(),n.firstRow!=this.layerConfig.firstRow&&n.firstRowScreen==this.layerConfig.firstRowScreen){var i=this.scrollTop+(n.firstRow-Math.max(this.layerConfig.firstRow,0))*this.lineHeight;i>0&&(this.scrollTop=i,e|=this.CHANGE_SCROLL,e|=this.$computeLayerConfig()|this.$loop.clear())}n=this.layerConfig,this.$updateScrollBarV(),e&this.CHANGE_H_SCROLL&&this.$updateScrollBarH(),o.translate(this.content,-this.scrollLeft,-n.offset);var r=n.width+2*this.$padding+"px",s=n.minHeight+"px";o.setStyle(this.content.style,"width",r),o.setStyle(this.content.style,"height",s)}if(e&this.CHANGE_H_SCROLL&&(o.translate(this.content,-this.scrollLeft,-n.offset),this.scroller.className=this.scrollLeft<=0?"ace_scroller ":"ace_scroller ace_scroll-left ",this.enableKeyboardAccessibility&&(this.scroller.className+=this.keyboardFocusClassName)),e&this.CHANGE_FULL)return this.$changedLines=null,this.$textLayer.update(n),this.$showGutter&&this.$gutterLayer.update(n),this.$customScrollbar&&this.$scrollDecorator.$updateDecorators(n),this.$markerBack.update(n),this.$markerFront.update(n),this.$cursorLayer.update(n),this.$moveTextAreaToCursor(),void this._signal("afterRender",e);if(e&this.CHANGE_SCROLL)return this.$changedLines=null,e&this.CHANGE_TEXT||e&this.CHANGE_LINES?this.$textLayer.update(n):this.$textLayer.scrollLines(n),this.$showGutter&&(e&this.CHANGE_GUTTER||e&this.CHANGE_LINES?this.$gutterLayer.update(n):this.$gutterLayer.scrollLines(n)),this.$customScrollbar&&this.$scrollDecorator.$updateDecorators(n),this.$markerBack.update(n),this.$markerFront.update(n),this.$cursorLayer.update(n),this.$moveTextAreaToCursor(),void this._signal("afterRender",e);e&this.CHANGE_TEXT?(this.$changedLines=null,this.$textLayer.update(n),this.$showGutter&&this.$gutterLayer.update(n),this.$customScrollbar&&this.$scrollDecorator.$updateDecorators(n)):e&this.CHANGE_LINES?((this.$updateLines()||e&this.CHANGE_GUTTER&&this.$showGutter)&&this.$gutterLayer.update(n),this.$customScrollbar&&this.$scrollDecorator.$updateDecorators(n)):e&this.CHANGE_TEXT||e&this.CHANGE_GUTTER?(this.$showGutter&&this.$gutterLayer.update(n),this.$customScrollbar&&this.$scrollDecorator.$updateDecorators(n)):e&this.CHANGE_CURSOR&&(this.$highlightGutterLine&&this.$gutterLayer.updateLineHighlight(n),this.$customScrollbar&&this.$scrollDecorator.$updateDecorators(n)),e&this.CHANGE_CURSOR&&(this.$cursorLayer.update(n),this.$moveTextAreaToCursor()),e&(this.CHANGE_MARKER|this.CHANGE_MARKER_FRONT)&&this.$markerFront.update(n),e&(this.CHANGE_MARKER|this.CHANGE_MARKER_BACK)&&this.$markerBack.update(n),this._signal("afterRender",e)}else this.$changes|=e},e.prototype.$autosize=function(){var e=this.session.getScreenLength()*this.lineHeight,t=this.$maxLines*this.lineHeight,n=Math.min(t,Math.max((this.$minLines||1)*this.lineHeight,e))+this.scrollMargin.v+(this.$extraHeight||0);this.$horizScroll&&(n+=this.scrollBarH.getHeight()),this.$maxPixelHeight&&n>this.$maxPixelHeight&&(n=this.$maxPixelHeight);var i=!(n<=2*this.lineHeight)&&e>t;if(n!=this.desiredHeight||this.$size.height!=this.desiredHeight||i!=this.$vScroll){i!=this.$vScroll&&(this.$vScroll=i,this.scrollBarV.setVisible(i));var o=this.container.clientWidth;this.container.style.height=n+"px",this.$updateCachedSize(!0,this.$gutterWidth,o,n),this.desiredHeight=n,this._signal("autosize")}},e.prototype.$computeLayerConfig=function(){var e=this.session,t=this.$size,n=t.height<=2*this.lineHeight,i=this.session.getScreenLength()*this.lineHeight,o=this.$getLongestLine(),r=!n&&(this.$hScrollBarAlwaysVisible||t.scrollerWidth-o-2*this.$padding<0),s=this.$horizScroll!==r;s&&(this.$horizScroll=r,this.scrollBarH.setVisible(r));var a=this.$vScroll;this.$maxLines&&this.lineHeight>1&&this.$autosize();var l=t.scrollerHeight+this.lineHeight,c=!this.$maxLines&&this.$scrollPastEnd?(t.scrollerHeight-this.lineHeight)*this.$scrollPastEnd:0;i+=c;var u=this.scrollMargin;this.session.setScrollTop(Math.max(-u.top,Math.min(this.scrollTop,i-t.scrollerHeight+u.bottom))),this.session.setScrollLeft(Math.max(-u.left,Math.min(this.scrollLeft,o+2*this.$padding-t.scrollerWidth+u.right)));var h=!n&&(this.$vScrollBarAlwaysVisible||t.scrollerHeight-i+c<0||this.scrollTop>u.top),d=a!==h;d&&(this.$vScroll=h,this.scrollBarV.setVisible(h));var p,g,m=this.scrollTop%this.lineHeight,f=Math.ceil(l/this.lineHeight)-1,y=Math.max(0,Math.round((this.scrollTop-m)/this.lineHeight)),b=y+f,v=this.lineHeight;y=e.screenToDocumentRow(y,0);var w=e.getFoldLine(y);w&&(y=w.start.row),p=e.documentToScreenRow(y,0),g=e.getRowLength(y)*v,b=Math.min(e.screenToDocumentRow(b,0),e.getLength()-1),l=t.scrollerHeight+e.getRowLength(b)*v+g,m=this.scrollTop-p*v;var A=0;return(this.layerConfig.width!=o||s)&&(A=this.CHANGE_H_SCROLL),(s||d)&&(A|=this.$updateCachedSize(!0,this.gutterWidth,t.width,t.height),this._signal("scrollbarVisibilityChanged"),d&&(o=this.$getLongestLine())),this.layerConfig={width:o,padding:this.$padding,firstRow:y,firstRowScreen:p,lastRow:b,lineHeight:v,characterWidth:this.characterWidth,minHeight:l,maxHeight:i,offset:m,gutterOffset:v?Math.max(0,Math.ceil((m+t.height-t.scrollerHeight)/v)):0,height:this.$size.scrollerHeight},this.session.$bidiHandler&&this.session.$bidiHandler.setContentWidth(o-this.$padding),A},e.prototype.$updateLines=function(){if(this.$changedLines){var e=this.$changedLines.firstRow,t=this.$changedLines.lastRow;this.$changedLines=null;var n=this.layerConfig;if(!(e>n.lastRow+1||tthis.$textLayer.MAX_LINE_LENGTH&&(e=this.$textLayer.MAX_LINE_LENGTH+30),Math.max(this.$size.scrollerWidth-2*this.$padding,Math.round(e*this.characterWidth))},e.prototype.updateFrontMarkers=function(){this.$markerFront.setMarkers(this.session.getMarkers(!0)),this.$loop.schedule(this.CHANGE_MARKER_FRONT)},e.prototype.updateBackMarkers=function(){this.$markerBack.setMarkers(this.session.getMarkers()),this.$loop.schedule(this.CHANGE_MARKER_BACK)},e.prototype.addGutterDecoration=function(e,t){this.$gutterLayer.addGutterDecoration(e,t)},e.prototype.removeGutterDecoration=function(e,t){this.$gutterLayer.removeGutterDecoration(e,t)},e.prototype.updateBreakpoints=function(e){this.$loop.schedule(this.CHANGE_GUTTER)},e.prototype.setAnnotations=function(e){this.$gutterLayer.setAnnotations(e),this.$loop.schedule(this.CHANGE_GUTTER)},e.prototype.updateCursor=function(){this.$loop.schedule(this.CHANGE_CURSOR)},e.prototype.hideCursor=function(){this.$cursorLayer.hideCursor()},e.prototype.showCursor=function(){this.$cursorLayer.showCursor()},e.prototype.scrollSelectionIntoView=function(e,t,n){this.scrollCursorIntoView(e,n),this.scrollCursorIntoView(t,n)},e.prototype.scrollCursorIntoView=function(e,t,n){if(0!==this.$size.scrollerHeight){var i=this.$cursorLayer.getPixelPosition(e),o=i.left,r=i.top,s=n&&n.top||0,a=n&&n.bottom||0;this.$scrollAnimation&&(this.$stopAnimation=!0);var l=this.$scrollAnimation?this.session.getScrollTop():this.scrollTop;l+s>r?(t&&l+s>r+this.lineHeight&&(r-=t*this.$size.scrollerHeight),0===r&&(r=-this.scrollMargin.top),this.session.setScrollTop(r)):l+this.$size.scrollerHeight-a=1-this.scrollMargin.top||t>0&&this.session.getScrollTop()+this.$size.scrollerHeight-this.layerConfig.maxHeight<-1+this.scrollMargin.bottom||e<0&&this.session.getScrollLeft()>=1-this.scrollMargin.left||e>0&&this.session.getScrollLeft()+this.$size.scrollerWidth-this.layerConfig.width<-1+this.scrollMargin.right||void 0},e.prototype.pixelToScreenCoordinates=function(e,t){var n;if(this.$hasCssTransforms){n={top:0,left:0};var i=this.$fontMetrics.transformCoordinates([e,t]);e=i[1]-this.gutterWidth-this.margin.left,t=i[0]}else n=this.scroller.getBoundingClientRect();var o=e+this.scrollLeft-n.left-this.$padding,r=o/this.characterWidth,s=Math.floor((t+this.scrollTop-n.top)/this.lineHeight),a=this.$blockCursor?Math.floor(r):Math.round(r);return{row:s,column:a,side:r-a>0?1:-1,offsetX:o}},e.prototype.screenToTextCoordinates=function(e,t){var n;if(this.$hasCssTransforms){n={top:0,left:0};var i=this.$fontMetrics.transformCoordinates([e,t]);e=i[1]-this.gutterWidth-this.margin.left,t=i[0]}else n=this.scroller.getBoundingClientRect();var o=e+this.scrollLeft-n.left-this.$padding,r=o/this.characterWidth,s=this.$blockCursor?Math.floor(r):Math.round(r),a=Math.floor((t+this.scrollTop-n.top)/this.lineHeight);return this.session.screenToDocumentPosition(a,Math.max(s,0),o)},e.prototype.textToScreenCoordinates=function(e,t){var n=this.scroller.getBoundingClientRect(),i=this.session.documentToScreenPosition(e,t),o=this.$padding+(this.session.$bidiHandler.isBidiRow(i.row,e)?this.session.$bidiHandler.getPosLeft(i.column):Math.round(i.column*this.characterWidth)),r=i.row*this.lineHeight;return{pageX:n.left+o-this.scrollLeft,pageY:n.top+r-this.scrollTop}},e.prototype.visualizeFocus=function(){o.addCssClass(this.container,"ace_focus")},e.prototype.visualizeBlur=function(){o.removeCssClass(this.container,"ace_focus")},e.prototype.showComposition=function(e){this.$composition=e,e.cssText||(e.cssText=this.textarea.style.cssText),null==e.useTextareaForIME&&(e.useTextareaForIME=this.$useTextareaForIME),this.$useTextareaForIME?(o.addCssClass(this.textarea,"ace_composition"),this.textarea.style.cssText="",this.$moveTextAreaToCursor(),this.$cursorLayer.element.style.display="none"):e.markerId=this.session.addMarker(e.markerRange,"ace_composition_marker","text")},e.prototype.setCompositionText=function(e){var t=this.session.selection.cursor;this.addToken(e,"composition_placeholder",t.row,t.column),this.$moveTextAreaToCursor()},e.prototype.hideComposition=function(){if(this.$composition){this.$composition.markerId&&this.session.removeMarker(this.$composition.markerId),o.removeCssClass(this.textarea,"ace_composition"),this.textarea.style.cssText=this.$composition.cssText;var e=this.session.selection.cursor;this.removeExtraToken(e.row,e.column),this.$composition=null,this.$cursorLayer.element.style.display=""}},e.prototype.setGhostText=function(e,t){var n=this.session.selection.cursor,i=t||{row:n.row,column:n.column};this.removeGhostText();var o=e.split("\n");if(this.addToken(o[0],"ghost_text",i.row,i.column),this.$ghostText={text:e,position:{row:i.row,column:i.column}},o.length>1){this.$ghostTextWidget={text:o.slice(1).join("\n"),row:i.row,column:i.column,className:"ace_ghost_text"},this.session.widgetManager.addLineWidget(this.$ghostTextWidget);var r=this.$cursorLayer.getPixelPosition(i,!0),s=this.container.getBoundingClientRect().height,a=o.length*this.lineHeight;if(a1||Math.abs(e.$size.height-i)>1?e.$resizeTimer.delay():e.$resizeTimer.cancel()})),this.$resizeObserver.observe(this.container)}},e}();A.prototype.CHANGE_CURSOR=1,A.prototype.CHANGE_MARKER=2,A.prototype.CHANGE_GUTTER=4,A.prototype.CHANGE_SCROLL=8,A.prototype.CHANGE_LINES=16,A.prototype.CHANGE_TEXT=32,A.prototype.CHANGE_SIZE=64,A.prototype.CHANGE_MARKER_BACK=128,A.prototype.CHANGE_MARKER_FRONT=256,A.prototype.CHANGE_FULL=512,A.prototype.CHANGE_H_SCROLL=1024,A.prototype.$changes=0,A.prototype.$padding=null,A.prototype.$frozen=!1,A.prototype.STEPS=8,i.implement(A.prototype,y),s.defineOptions(A.prototype,"renderer",{useResizeObserver:{set:function(e){!e&&this.$resizeObserver?(this.$resizeObserver.disconnect(),this.$resizeTimer.cancel(),this.$resizeTimer=this.$resizeObserver=null):e&&!this.$resizeObserver&&this.$addResizeObserver()}},animatedScroll:{initialValue:!1},showInvisibles:{set:function(e){this.$textLayer.setShowInvisibles(e)&&this.$loop.schedule(this.CHANGE_TEXT)},initialValue:!1},showPrintMargin:{set:function(){this.$updatePrintMargin()},initialValue:!0},printMarginColumn:{set:function(){this.$updatePrintMargin()},initialValue:80},printMargin:{set:function(e){"number"==typeof e&&(this.$printMarginColumn=e),this.$showPrintMargin=!!e,this.$updatePrintMargin()},get:function(){return this.$showPrintMargin&&this.$printMarginColumn}},showGutter:{set:function(e){this.$gutter.style.display=e?"block":"none",this.$loop.schedule(this.CHANGE_FULL),this.onGutterResize()},initialValue:!0},useSvgGutterIcons:{set:function(e){this.$gutterLayer.$useSvgGutterIcons=e},initialValue:!1},showFoldedAnnotations:{set:function(e){this.$gutterLayer.$showFoldedAnnotations=e},initialValue:!1},fadeFoldWidgets:{set:function(e){o.setCssClass(this.$gutter,"ace_fade-fold-widgets",e)},initialValue:!1},showFoldWidgets:{set:function(e){this.$gutterLayer.setShowFoldWidgets(e),this.$loop.schedule(this.CHANGE_GUTTER)},initialValue:!0},displayIndentGuides:{set:function(e){this.$textLayer.setDisplayIndentGuides(e)&&this.$loop.schedule(this.CHANGE_TEXT)},initialValue:!0},highlightIndentGuides:{set:function(e){1==this.$textLayer.setHighlightIndentGuides(e)?this.$textLayer.$highlightIndentGuide():this.$textLayer.$clearActiveIndentGuide(this.$textLayer.$lines.cells)},initialValue:!0},highlightGutterLine:{set:function(e){this.$gutterLayer.setHighlightGutterLine(e),this.$loop.schedule(this.CHANGE_GUTTER)},initialValue:!0},hScrollBarAlwaysVisible:{set:function(e){this.$hScrollBarAlwaysVisible&&this.$horizScroll||this.$loop.schedule(this.CHANGE_SCROLL)},initialValue:!1},vScrollBarAlwaysVisible:{set:function(e){this.$vScrollBarAlwaysVisible&&this.$vScroll||this.$loop.schedule(this.CHANGE_SCROLL)},initialValue:!1},fontSize:{set:function(e){"number"==typeof e&&(e+="px"),this.container.style.fontSize=e,this.updateFontSize()},initialValue:12},fontFamily:{set:function(e){this.container.style.fontFamily=e,this.updateFontSize()}},maxLines:{set:function(e){this.updateFull()}},minLines:{set:function(e){this.$minLines<562949953421311||(this.$minLines=0),this.updateFull()}},maxPixelHeight:{set:function(e){this.updateFull()},initialValue:0},scrollPastEnd:{set:function(e){e=+e||0,this.$scrollPastEnd!=e&&(this.$scrollPastEnd=e,this.$loop.schedule(this.CHANGE_SCROLL))},initialValue:0,handlesSet:!0},fixedWidthGutter:{set:function(e){this.$gutterLayer.$fixedWidth=!!e,this.$loop.schedule(this.CHANGE_GUTTER)}},customScrollbar:{set:function(e){this.$updateCustomScrollbar(e)},initialValue:!1},theme:{set:function(e){this.setTheme(e)},get:function(){return this.$themeId||this.theme},initialValue:"./theme/textmate",handlesSet:!0},hasCssTransforms:{},useTextareaForIME:{initialValue:!w.isMobile&&!w.isIE}}),t.VirtualRenderer=A})),ace.define("ace/worker/worker_client",["require","exports","module","ace/lib/oop","ace/lib/net","ace/lib/event_emitter","ace/config"],(function(e,t,n){"use strict";var i=e("../lib/oop"),o=e("../lib/net"),r=e("../lib/event_emitter").EventEmitter,s=e("../config");function a(e){if("undefined"==typeof Worker)return{postMessage:function(){},terminate:function(){}};if(s.get("loadWorkerFromBlob")){var t=function(e){var t="importScripts('"+o.qualifyURL(e)+"');";try{return new Blob([t],{type:"application/javascript"})}catch(e){var n=new(window.BlobBuilder||window.WebKitBlobBuilder||window.MozBlobBuilder);return n.append(t),n.getBlob("application/javascript")}}(e),n=(window.URL||window.webkitURL).createObjectURL(t);return new Worker(n)}return new Worker(e)}var l=function(e){e.postMessage||(e=this.$createWorkerFromOldConfig.apply(this,arguments)),this.$worker=e,this.$sendDeltaQueue=this.$sendDeltaQueue.bind(this),this.changeListener=this.changeListener.bind(this),this.onMessage=this.onMessage.bind(this),this.callbackId=1,this.callbacks={},this.$worker.onmessage=this.onMessage};(function(){i.implement(this,r),this.$createWorkerFromOldConfig=function(t,n,i,o,r){if(e.nameToUrl&&!e.toUrl&&(e.toUrl=e.nameToUrl),s.get("packaged")||!e.toUrl)o=o||s.moduleUrl(n,"worker");else{var l=this.$normalizePath;o=o||l(e.toUrl("ace/worker/worker.js",null,"_"));var c={};t.forEach((function(t){c[t]=l(e.toUrl(t,null,"_").replace(/(\.js)?(\?.*)?$/,""))}))}return this.$worker=a(o),r&&this.send("importScripts",r),this.$worker.postMessage({init:!0,tlns:c,module:n,classname:i}),this.$worker},this.onMessage=function(e){var t=e.data;switch(t.type){case"event":this._signal(t.name,{data:t.data});break;case"call":var n=this.callbacks[t.id];n&&(n(t.data),delete this.callbacks[t.id]);break;case"error":this.reportError(t.data);break;case"log":window.console&&console.log&&console.log.apply(console,t.data)}},this.reportError=function(e){window.console&&console.error&&console.error(e)},this.$normalizePath=function(e){return o.qualifyURL(e)},this.terminate=function(){this._signal("terminate",{}),this.deltaQueue=null,this.$worker.terminate(),this.$worker.onerror=function(e){e.preventDefault()},this.$worker=null,this.$doc&&this.$doc.off("change",this.changeListener),this.$doc=null},this.send=function(e,t){this.$worker.postMessage({command:e,args:t})},this.call=function(e,t,n){if(n){var i=this.callbackId++;this.callbacks[i]=n,t.push(i)}this.send(e,t)},this.emit=function(e,t){try{t.data&&t.data.err&&(t.data.err={message:t.data.err.message,stack:t.data.err.stack,code:t.data.err.code}),this.$worker&&this.$worker.postMessage({event:e,data:{data:t.data}})}catch(e){console.error(e.stack)}},this.attachToDocument=function(e){this.$doc&&this.terminate(),this.$doc=e,this.call("setValue",[e.getValue()]),e.on("change",this.changeListener,!0)},this.changeListener=function(e){this.deltaQueue||(this.deltaQueue=[],setTimeout(this.$sendDeltaQueue,0)),"insert"==e.action?this.deltaQueue.push(e.start,e.lines):this.deltaQueue.push(e.start,e.end)},this.$sendDeltaQueue=function(){var e=this.deltaQueue;e&&(this.deltaQueue=null,e.length>50&&e.length>this.$doc.getLength()>>1?this.call("setValue",[this.$doc.getValue()]):this.emit("change",{data:e}))}}).call(l.prototype),t.UIWorkerClient=function(e,t,n){var i=null,o=!1,a=Object.create(r),c=[],u=new l({messageBuffer:c,terminate:function(){},postMessage:function(e){c.push(e),i&&(o?setTimeout(h):h())}});u.setEmitSync=function(e){o=e};var h=function(){var e=c.shift();e.command?i[e.command].apply(i,e.args):e.event&&a._signal(e.event,e.data)};return a.postMessage=function(e){u.onMessage({data:e})},a.callback=function(e,t){this.postMessage({type:"call",id:t,data:e})},a.emit=function(e,t){this.postMessage({type:"event",name:e,data:t})},s.loadModule(["worker",t],(function(e){for(i=new e[n](a);c.length;)h()})),u},t.WorkerClient=l,t.createWorker=a})),ace.define("ace/placeholder",["require","exports","module","ace/range","ace/lib/event_emitter","ace/lib/oop"],(function(e,t,n){"use strict";var i=e("./range").Range,o=e("./lib/event_emitter").EventEmitter,r=e("./lib/oop"),s=function(){function e(e,t,n,i,o,r){var s=this;this.length=t,this.session=e,this.doc=e.getDocument(),this.mainClass=o,this.othersClass=r,this.$onUpdate=this.onUpdate.bind(this),this.doc.on("change",this.$onUpdate,!0),this.$others=i,this.$onCursorChange=function(){setTimeout((function(){s.onCursorChange()}))},this.$pos=n;var a=e.getUndoManager().$undoStack||e.getUndoManager().$undostack||{length:-1};this.$undoStackDepth=a.length,this.setup(),e.selection.on("changeCursor",this.$onCursorChange)}return e.prototype.setup=function(){var e=this,t=this.doc,n=this.session;this.selectionBefore=n.selection.toJSON(),n.selection.inMultiSelectMode&&n.selection.toSingleRange(),this.pos=t.createAnchor(this.$pos.row,this.$pos.column);var o=this.pos;o.$insertRight=!0,o.detach(),o.markerId=n.addMarker(new i(o.row,o.column,o.row,o.column+this.length),this.mainClass,null,!1),this.others=[],this.$others.forEach((function(n){var i=t.createAnchor(n.row,n.column);i.$insertRight=!0,i.detach(),e.others.push(i)})),n.setUndoSelect(!1)},e.prototype.showOtherMarkers=function(){if(!this.othersActive){var e=this.session,t=this;this.othersActive=!0,this.others.forEach((function(n){n.markerId=e.addMarker(new i(n.row,n.column,n.row,n.column+t.length),t.othersClass,null,!1)}))}},e.prototype.hideOtherMarkers=function(){if(this.othersActive){this.othersActive=!1;for(var e=0;e=this.pos.column&&t.start.column<=this.pos.column+this.length+1,r=t.start.column-this.pos.column;if(this.updateAnchors(e),o&&(this.length+=n),o&&!this.session.$fromUndo)if("insert"===e.action)for(var s=this.others.length-1;s>=0;s--){var a={row:(l=this.others[s]).row,column:l.column+r};this.doc.insertMergedLines(a,e.lines)}else if("remove"===e.action)for(s=this.others.length-1;s>=0;s--){var l;a={row:(l=this.others[s]).row,column:l.column+r},this.doc.remove(new i(a.row,a.column,a.row,a.column-n))}this.$updating=!1,this.updateMarkers()}},e.prototype.updateAnchors=function(e){this.pos.onChange(e);for(var t=this.others.length;t--;)this.others[t].onChange(e);this.updateMarkers()},e.prototype.updateMarkers=function(){if(!this.$updating){var e=this,t=this.session,n=function(n,o){t.removeMarker(n.markerId),n.markerId=t.addMarker(new i(n.row,n.column,n.row,n.column+e.length),o,null,!1)};n(this.pos,this.mainClass);for(var o=this.others.length;o--;)n(this.others[o],this.othersClass)}},e.prototype.onCursorChange=function(e){if(!this.$updating&&this.session){var t=this.session.selection.getCursor();t.row===this.pos.row&&t.column>=this.pos.column&&t.column<=this.pos.column+this.length?(this.showOtherMarkers(),this._emit("cursorEnter",e)):(this.hideOtherMarkers(),this._emit("cursorLeave",e))}},e.prototype.detach=function(){this.session.removeMarker(this.pos&&this.pos.markerId),this.hideOtherMarkers(),this.doc.off("change",this.$onUpdate),this.session.selection.off("changeCursor",this.$onCursorChange),this.session.setUndoSelect(!0),this.session=null},e.prototype.cancel=function(){if(-1!==this.$undoStackDepth){for(var e=this.session.getUndoManager(),t=(e.$undoStack||e.$undostack).length-this.$undoStackDepth,n=0;n1?e.multiSelect.joinSelections():e.multiSelect.splitIntoLines()},bindKey:{win:"Ctrl-Alt-L",mac:"Ctrl-Alt-L"},readOnly:!0},{name:"splitSelectionIntoLines",description:"Split into lines",exec:function(e){e.multiSelect.splitIntoLines()},readOnly:!0},{name:"alignCursors",description:"Align cursors",exec:function(e){e.alignCursors()},bindKey:{win:"Ctrl-Alt-A",mac:"Ctrl-Alt-A"},scrollIntoView:"cursor"},{name:"findAll",description:"Find all",exec:function(e){e.findAll()},bindKey:{win:"Ctrl-Alt-K",mac:"Ctrl-Alt-G"},scrollIntoView:"cursor",readOnly:!0}],t.multiSelectCommands=[{name:"singleSelection",description:"Single selection",bindKey:"esc",exec:function(e){e.exitMultiSelectMode()},scrollIntoView:"cursor",readOnly:!0,isAvailable:function(e){return e&&e.inMultiSelectMode}}];var i=e("../keyboard/hash_handler").HashHandler;t.keyboardHandler=new i(t.multiSelectCommands)})),ace.define("ace/multi_select",["require","exports","module","ace/range_list","ace/range","ace/selection","ace/mouse/multi_select_handler","ace/lib/event","ace/lib/lang","ace/commands/multi_select_commands","ace/search","ace/edit_session","ace/editor","ace/config"],(function(e,t,n){var i=e("./range_list").RangeList,o=e("./range").Range,r=e("./selection").Selection,s=e("./mouse/multi_select_handler").onMouseDown,a=e("./lib/event"),l=e("./lib/lang"),c=e("./commands/multi_select_commands");t.commands=c.defaultCommands.concat(c.multiSelectCommands);var u=new(0,e("./search").Search),h=e("./edit_session").EditSession;(function(){this.getSelectionMarkers=function(){return this.$selectionMarkers}}).call(h.prototype),function(){this.ranges=null,this.rangeList=null,this.addRange=function(e,t){if(e){if(!this.inMultiSelectMode&&0===this.rangeCount){var n=this.toOrientedRange();if(this.rangeList.add(n),this.rangeList.add(e),2!=this.rangeList.ranges.length)return this.rangeList.removeAll(),t||this.fromOrientedRange(e);this.rangeList.removeAll(),this.rangeList.add(n),this.$onAddRange(n)}e.cursor||(e.cursor=e.end);var i=this.rangeList.add(e);return this.$onAddRange(e),i.length&&this.$onRemoveRange(i),this.rangeCount>1&&!this.inMultiSelectMode&&(this._signal("multiSelect"),this.inMultiSelectMode=!0,this.session.$undoSelect=!1,this.rangeList.attach(this.session)),t||this.fromOrientedRange(e)}},this.toSingleRange=function(e){e=e||this.ranges[0];var t=this.rangeList.removeAll();t.length&&this.$onRemoveRange(t),e&&this.fromOrientedRange(e)},this.substractPoint=function(e){var t=this.rangeList.substractPoint(e);if(t)return this.$onRemoveRange(t),t[0]},this.mergeOverlappingRanges=function(){var e=this.rangeList.merge();e.length&&this.$onRemoveRange(e)},this.$onAddRange=function(e){this.rangeCount=this.rangeList.ranges.length,this.ranges.unshift(e),this._signal("addRange",{range:e})},this.$onRemoveRange=function(e){if(this.rangeCount=this.rangeList.ranges.length,1==this.rangeCount&&this.inMultiSelectMode){var t=this.rangeList.ranges.pop();e.push(t),this.rangeCount=0}for(var n=e.length;n--;){var i=this.ranges.indexOf(e[n]);this.ranges.splice(i,1)}this._signal("removeRange",{ranges:e}),0===this.rangeCount&&this.inMultiSelectMode&&(this.inMultiSelectMode=!1,this._signal("singleSelect"),this.session.$undoSelect=!0,this.rangeList.detach(this.session)),(t=t||this.ranges[0])&&!t.isEqual(this.getRange())&&this.fromOrientedRange(t)},this.$initRangeList=function(){this.rangeList||(this.rangeList=new i,this.ranges=[],this.rangeCount=0)},this.getAllRanges=function(){return this.rangeCount?this.rangeList.ranges.concat():[this.getRange()]},this.splitIntoLines=function(){for(var e=this.ranges.length?this.ranges:[this.getRange()],t=[],n=0;n1){var e=this.rangeList.ranges,t=e[e.length-1],n=o.fromPoints(e[0].start,t.end);this.toSingleRange(),this.setSelectionRange(n,t.cursor==t.start)}else{var i=this.session.documentToScreenPosition(this.cursor),r=this.session.documentToScreenPosition(this.anchor);this.rectangularRangeBlock(i,r).forEach(this.addRange,this)}},this.rectangularRangeBlock=function(e,t,n){var i=[],r=e.column0;)b--;if(b>0)for(var v=0;i[v].isEmpty();)v++;for(var w=b;w>=v;w--)i[w].isEmpty()&&i.splice(w,1)}return i}}.call(r.prototype);var d=e("./editor").Editor;function p(e){e.$multiselectOnSessionChange||(e.$onAddRange=e.$onAddRange.bind(e),e.$onRemoveRange=e.$onRemoveRange.bind(e),e.$onMultiSelect=e.$onMultiSelect.bind(e),e.$onSingleSelect=e.$onSingleSelect.bind(e),e.$multiselectOnSessionChange=t.onSessionChange.bind(e),e.$checkMultiselectChange=e.$checkMultiselectChange.bind(e),e.$multiselectOnSessionChange(e),e.on("changeSession",e.$multiselectOnSessionChange),e.on("mousedown",s),e.commands.addCommands(c.defaultCommands),function(e){if(e.textInput){var t=e.textInput.getElement(),n=!1;a.addListener(t,"keydown",(function(t){var o=18==t.keyCode&&!(t.ctrlKey||t.shiftKey||t.metaKey);e.$blockSelectEnabled&&o?n||(e.renderer.setMouseCursor("crosshair"),n=!0):n&&i()}),e),a.addListener(t,"keyup",i,e),a.addListener(t,"blur",i,e)}function i(t){n&&(e.renderer.setMouseCursor(""),n=!1)}}(e))}(function(){this.updateSelectionMarkers=function(){this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.addSelectionMarker=function(e){e.cursor||(e.cursor=e.end);var t=this.getSelectionStyle();return e.marker=this.session.addMarker(e,"ace_selection",t),this.session.$selectionMarkers.push(e),this.session.selectionMarkerCount=this.session.$selectionMarkers.length,e},this.removeSelectionMarker=function(e){if(e.marker){this.session.removeMarker(e.marker);var t=this.session.$selectionMarkers.indexOf(e);-1!=t&&this.session.$selectionMarkers.splice(t,1),this.session.selectionMarkerCount=this.session.$selectionMarkers.length}},this.removeSelectionMarkers=function(e){for(var t=this.session.$selectionMarkers,n=e.length;n--;){var i=e[n];if(i.marker){this.session.removeMarker(i.marker);var o=t.indexOf(i);-1!=o&&t.splice(o,1)}}this.session.selectionMarkerCount=t.length},this.$onAddRange=function(e){this.addSelectionMarker(e.range),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onRemoveRange=function(e){this.removeSelectionMarkers(e.ranges),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onMultiSelect=function(e){this.inMultiSelectMode||(this.inMultiSelectMode=!0,this.setStyle("ace_multiselect"),this.keyBinding.addKeyboardHandler(c.keyboardHandler),this.commands.setDefaultHandler("exec",this.$onMultiSelectExec),this.renderer.updateCursor(),this.renderer.updateBackMarkers())},this.$onSingleSelect=function(e){this.session.multiSelect.inVirtualMode||(this.inMultiSelectMode=!1,this.unsetStyle("ace_multiselect"),this.keyBinding.removeKeyboardHandler(c.keyboardHandler),this.commands.removeDefaultHandler("exec",this.$onMultiSelectExec),this.renderer.updateCursor(),this.renderer.updateBackMarkers(),this._emit("changeSelection"))},this.$onMultiSelectExec=function(e){var t=e.command,n=e.editor;if(n.multiSelect){if(t.multiSelectAction)"forEach"==t.multiSelectAction?i=n.forEachSelection(t,e.args):"forEachLine"==t.multiSelectAction?i=n.forEachSelection(t,e.args,!0):"single"==t.multiSelectAction?(n.exitMultiSelectMode(),i=t.exec(n,e.args||{})):i=t.multiSelectAction(n,e.args||{});else{var i=t.exec(n,e.args||{});n.multiSelect.addRange(n.multiSelect.toOrientedRange()),n.multiSelect.mergeOverlappingRanges()}return i}},this.forEachSelection=function(e,t,n){if(!this.inVirtualSelectionMode){var i,o=n&&n.keepOrder,s=1==n||n&&n.$byLines,a=this.session,l=this.selection,c=l.rangeList,u=(o?l:c).ranges;if(!u.length)return e.exec?e.exec(this,t||{}):e(this,t||{});var h=l._eventRegistry;l._eventRegistry={};var d=new r(a);this.inVirtualSelectionMode=!0;for(var p=u.length;p--;){if(s)for(;p>0&&u[p].start.row==u[p-1].end.row;)p--;d.fromOrientedRange(u[p]),d.index=p,this.selection=a.selection=d;var g=e.exec?e.exec(this,t||{}):e(this,t||{});i||void 0===g||(i=g),d.toOrientedRange(u[p])}d.detach(),this.selection=a.selection=l,this.inVirtualSelectionMode=!1,l._eventRegistry=h,l.mergeOverlappingRanges(),l.ranges[0]&&l.fromOrientedRange(l.ranges[0]);var m=this.renderer.$scrollAnimation;return this.onCursorChange(),this.onSelectionChange(),m&&m.from==m.to&&this.renderer.animateScrolling(m.from),i}},this.exitMultiSelectMode=function(){this.inMultiSelectMode&&!this.inVirtualSelectionMode&&this.multiSelect.toSingleRange()},this.getSelectedText=function(){var e="";if(this.inMultiSelectMode&&!this.inVirtualSelectionMode){for(var t=this.multiSelect.rangeList.ranges,n=[],i=0;is&&(s=n.column),iu?e.insert(i,l.stringRepeat(" ",r-u)):e.remove(new o(i.row,i.column,i.row,i.column-r+u)),t.start.column=t.end.column=s,t.start.row=t.end.row=i.row,t.cursor=t.end})),t.fromOrientedRange(n[0]),this.renderer.updateCursor(),this.renderer.updateBackMarkers()}else{var u=this.selection.getRange(),h=u.start.row,d=u.end.row,p=h==d;if(p){var g,m=this.session.getLength();do{g=this.session.getLine(d)}while(/[=:]/.test(g)&&++d0);h<0&&(h=0),d>=m&&(d=m-1)}var f=this.session.removeFullLines(h,d);f=this.$reAlignText(f,p),this.session.insert({row:h,column:0},f.join("\n")+"\n"),p||(u.start.column=0,u.end.column=f[f.length-1].length),this.selection.setRange(u)}},this.$reAlignText=function(e,t){var n,i,o,r=!0,s=!0;return e.map((function(e){var t=e.match(/(\s*)(.*?)(\s*)([=:].*)/);return t?null==n?(n=t[1].length,i=t[2].length,o=t[3].length,t):(n+i+o!=t[1].length+t[2].length+t[3].length&&(s=!1),n!=t[1].length&&(r=!1),n>t[1].length&&(n=t[1].length),it[3].length&&(o=t[3].length),t):[e]})).map(t?c:r?s?function(e){return e[2]?a(n+i-e[2].length)+e[2]+a(o)+e[4].replace(/^([=:])\s+/,"$1 "):e[0]}:c:function(e){return e[2]?a(n)+e[2]+a(o)+e[4].replace(/^([=:])\s+/,"$1 "):e[0]});function a(e){return l.stringRepeat(" ",e)}function c(e){return e[2]?a(n)+e[2]+a(i-e[2].length+o)+e[4].replace(/^([=:])\s+/,"$1 "):e[0]}}}).call(d.prototype),t.onSessionChange=function(e){var t=e.session;t&&!t.multiSelect&&(t.$selectionMarkers=[],t.selection.$initRangeList(),t.multiSelect=t.selection),this.multiSelect=t&&t.multiSelect;var n=e.oldSession;n&&(n.multiSelect.off("addRange",this.$onAddRange),n.multiSelect.off("removeRange",this.$onRemoveRange),n.multiSelect.off("multiSelect",this.$onMultiSelect),n.multiSelect.off("singleSelect",this.$onSingleSelect),n.multiSelect.lead.off("change",this.$checkMultiselectChange),n.multiSelect.anchor.off("change",this.$checkMultiselectChange)),t&&(t.multiSelect.on("addRange",this.$onAddRange),t.multiSelect.on("removeRange",this.$onRemoveRange),t.multiSelect.on("multiSelect",this.$onMultiSelect),t.multiSelect.on("singleSelect",this.$onSingleSelect),t.multiSelect.lead.on("change",this.$checkMultiselectChange),t.multiSelect.anchor.on("change",this.$checkMultiselectChange)),t&&this.inMultiSelectMode!=t.selection.inMultiSelectMode&&(t.selection.inMultiSelectMode?this.$onMultiSelect():this.$onSingleSelect())},t.MultiSelect=p,e("./config").defineOptions(d.prototype,"editor",{enableMultiselect:{set:function(e){p(this),e?this.on("mousedown",s):this.off("mousedown",s)},value:!0},enableBlockSelect:{set:function(e){this.$blockSelectEnabled=e},value:!0}})})),ace.define("ace/mode/folding/fold_mode",["require","exports","module","ace/range"],(function(e,t,n){"use strict";var i=e("../../range").Range,o=t.FoldMode=function(){};(function(){this.foldingStartMarker=null,this.foldingStopMarker=null,this.getFoldWidget=function(e,t,n){var i=e.getLine(n);return this.foldingStartMarker.test(i)?"start":"markbeginend"==t&&this.foldingStopMarker&&this.foldingStopMarker.test(i)?"end":""},this.getFoldWidgetRange=function(e,t,n){return null},this.indentationBlock=function(e,t,n){var o=/\S/,r=e.getLine(t),s=r.search(o);if(-1!=s){for(var a=n||r.length,l=e.getLength(),c=t,u=t;++tc){var p=e.getLine(u).length;return new i(c,a,u,p)}}},this.openingBracketBlock=function(e,t,n,o,r){var s={row:n,column:o+1},a=e.$findClosingBracket(t,s,r);if(a){var l=e.foldWidgets[a.row];return null==l&&(l=e.getFoldWidget(a.row)),"start"==l&&a.row>s.row&&(a.row--,a.column=e.getLine(a.row).length),i.fromPoints(s,a)}},this.closingBracketBlock=function(e,t,n,o,r){var s={row:n,column:o},a=e.$findOpeningBracket(t,s);if(a)return a.column++,s.column--,i.fromPoints(a,s)}}).call(o.prototype)})),ace.define("ace/ext/error_marker",["require","exports","module","ace/line_widgets","ace/lib/dom","ace/range","ace/config"],(function(e,t,n){"use strict";var i=e("../line_widgets").LineWidgets,o=e("../lib/dom"),r=e("../range").Range,s=e("../config").nls;t.showErrorMarker=function(e,t){var n=e.session;n.widgetManager||(n.widgetManager=new i(n),n.widgetManager.attach(e));var a=e.getCursorPosition(),l=a.row,c=n.widgetManager.getWidgetsAtRow(l).filter((function(e){return"errorMarker"==e.type}))[0];c?c.destroy():l-=t;var u,h=function(e,t,n){var i=e.getAnnotations().sort(r.comparePoints);if(i.length){var o=function(e,t,n){for(var i=0,o=e.length-1;i<=o;){var r=i+o>>1,s=n(t,e[r]);if(s>0)i=r+1;else{if(!(s<0))return r;o=r-1}}return-(i+1)}(i,{row:t,column:-1},r.comparePoints);o<0&&(o=-o-1),o>=i.length?o=n>0?0:i.length-1:0===o&&n<0&&(o=i.length-1);var s=i[o];if(s&&n){if(s.row===t){do{s=i[o+=n]}while(s&&s.row===t);if(!s)return i.slice()}var a=[];t=s.row;do{a[n<0?"unshift":"push"](s),s=i[o+=n]}while(s&&s.row==t);return a.length&&a}}}(n,l,t);if(h){var d=h[0];a.column=(d.pos&&"number"!=typeof d.column?d.pos.sc:d.column)||0,a.row=d.row,u=e.renderer.$gutterLayer.$annotations[a.row]}else{if(c)return;u={text:[s("Looks good!")],className:"ace_ok"}}e.session.unfold(a.row),e.selection.moveToPosition(a);var p={row:a.row,fixedWidth:!0,coverGutter:!0,el:o.createElement("div"),type:"errorMarker"},g=p.el.appendChild(o.createElement("div")),m=p.el.appendChild(o.createElement("div"));m.className="error_widget_arrow "+u.className;var f=e.renderer.$cursorLayer.getPixelPosition(a).left;m.style.left=f+e.renderer.gutterWidth-5+"px",p.el.className="error_widget_wrapper",g.className="error_widget "+u.className,g.innerHTML=u.text.join("
    "),g.appendChild(o.createElement("div"));var y=function(e,t,n){if(0===t&&("esc"===n||"return"===n))return p.destroy(),{command:"null"}};p.destroy=function(){e.$mouseHandler.isMousePressed||(e.keyBinding.removeKeyboardHandler(y),n.widgetManager.removeLineWidget(p),e.off("changeSelection",p.destroy),e.off("changeSession",p.destroy),e.off("mouseup",p.destroy),e.off("change",p.destroy))},e.keyBinding.addKeyboardHandler(y),e.on("changeSelection",p.destroy),e.on("changeSession",p.destroy),e.on("mouseup",p.destroy),e.on("change",p.destroy),e.session.widgetManager.addLineWidget(p),p.el.onmousedown=e.focus.bind(e),e.renderer.scrollCursorIntoView(null,.5,{bottom:p.el.offsetHeight})},o.importCssString("\n .error_widget_wrapper {\n background: inherit;\n color: inherit;\n border:none\n }\n .error_widget {\n border-top: solid 2px;\n border-bottom: solid 2px;\n margin: 5px 0;\n padding: 10px 40px;\n white-space: pre-wrap;\n }\n .error_widget.ace_error, .error_widget_arrow.ace_error{\n border-color: #ff5a5a\n }\n .error_widget.ace_warning, .error_widget_arrow.ace_warning{\n border-color: #F1D817\n }\n .error_widget.ace_info, .error_widget_arrow.ace_info{\n border-color: #5a5a5a\n }\n .error_widget.ace_ok, .error_widget_arrow.ace_ok{\n border-color: #5aaa5a\n }\n .error_widget_arrow {\n position: absolute;\n border: solid 5px;\n border-top-color: transparent!important;\n border-right-color: transparent!important;\n border-left-color: transparent!important;\n top: -5px;\n }\n","error_marker.css",!1)})),ace.define("ace/ace",["require","exports","module","ace/lib/dom","ace/range","ace/editor","ace/edit_session","ace/undomanager","ace/virtual_renderer","ace/worker/worker_client","ace/keyboard/hash_handler","ace/placeholder","ace/multi_select","ace/mode/folding/fold_mode","ace/theme/textmate","ace/ext/error_marker","ace/config","ace/loader_build"],(function(e,t,n){"use strict";e("./loader_build")(t);var i=e("./lib/dom"),o=e("./range").Range,r=e("./editor").Editor,s=e("./edit_session").EditSession,a=e("./undomanager").UndoManager,l=e("./virtual_renderer").VirtualRenderer;e("./worker/worker_client"),e("./keyboard/hash_handler"),e("./placeholder"),e("./multi_select"),e("./mode/folding/fold_mode"),e("./theme/textmate"),e("./ext/error_marker"),t.config=e("./config"),t.edit=function(e,n){if("string"==typeof e){var o=e;if(!(e=document.getElementById(o)))throw new Error("ace.edit can't find div #"+o)}if(e&&e.env&&e.env.editor instanceof r)return e.env.editor;var s="";if(e&&/input|textarea/i.test(e.tagName)){var a=e;s=a.value,e=i.createElement("pre"),a.parentNode.replaceChild(e,a)}else e&&(s=e.textContent,e.innerHTML="");var c=t.createEditSession(s),u=new r(new l(e),c,n),h={document:c,editor:u,onResize:u.resize.bind(u,null)};return a&&(h.textarea=a),u.on("destroy",(function(){h.editor.container.env=null})),u.container.env=u.env=h,u},t.createEditSession=function(e,t){var n=new s(e,t);return n.setUndoManager(new a),n},t.Range=o,t.Editor=r,t.EditSession=s,t.UndoManager=a,t.VirtualRenderer=l,t.version=t.config.version})),ace.require(["ace/ace"],(function(t){t&&(t.config.init(!0),t.define=ace.define);var n=function(){return this}();for(var i in n||"undefined"==typeof window||(n=window),n||"undefined"==typeof self||(n=self),n.ace||(n.ace=t),t)t.hasOwnProperty(i)&&(n.ace[i]=t[i]);n.ace.default=n.ace,e&&(e.exports=n.ace)}))},134:(e,t,n)=>{e=n.nmd(e),ace.define("ace/ext/beautify",["require","exports","module","ace/token_iterator"],(function(e,t,n){"use strict";var i=e("../token_iterator").TokenIterator;function o(e,t){return e.type.lastIndexOf(t+".xml")>-1}t.singletonTags=["area","base","br","col","command","embed","hr","html","img","input","keygen","link","meta","param","source","track","wbr"],t.blockTags=["article","aside","blockquote","body","div","dl","fieldset","footer","form","head","header","html","nav","ol","p","script","section","style","table","tbody","tfoot","thead","ul"],t.formatOptions={lineBreaksAfterCommasInCurlyBlock:!0},t.beautify=function(e){for(var n,r,s,a=new i(e,0,0),l=a.getCurrentToken(),c=e.getTabString(),u=t.singletonTags,h=t.blockTags,d=t.formatOptions||{},p=!1,g=!1,m=!1,f="",y="",b="",v=0,w=0,A=0,C=0,k=0,x=0,S=0,$=0,E=0,O=!1,T=!1,_=!1,R=!1,M={0:0},L=[],B=!1,N=function(){n&&n.value&&"string.regexp"!==n.type&&(n.value=n.value.replace(/^\s*/,""))},I=function(){for(var e=f.length-1;0!=e&&" "===f[e];)e-=1;f=f.slice(0,e+1)},P=function(){f=f.trimRight(),p=!1};null!==l;){if($=a.getCurrentTokenRow(),a.$rowTokens,n=a.stepForward(),void 0!==l){if(y=l.value,k=0,_="style"===b||"ace/mode/css"===e.$modeId,o(l,"tag-open")?(T=!0,n&&(R=-1!==h.indexOf(n.value)),"0;E--)f+="\n";p=!0,o(l,"comment")||l.type.match(/^(comment|string)$/)||(y=y.trimLeft())}if(y){if("keyword"===l.type&&y.match(/^(if|else|elseif|for|foreach|while|switch)$/)?(L[v]=y,N(),m=!0,y.match(/^(else|elseif)$/)&&f.match(/\}[\s]*$/)&&(P(),g=!0)):"paren.lparen"===l.type?(N(),"{"===y.substr(-1)&&(m=!0,O=!1,T||(E=1)),"{"===y.substr(0,1)&&(g=!0,"["!==f.substr(-1)&&"["===f.trimRight().substr(-1)?(P(),g=!1):")"===f.trimRight().substr(-1)?P():I())):"paren.rparen"===l.type?(k=1,"}"===y.substr(0,1)&&("case"===L[v-1]&&k++,"{"===f.trimRight().substr(-1)?P():(g=!0,_&&(E+=2))),"]"===y.substr(0,1)&&"}"!==f.substr(-1)&&"}"===f.trimRight().substr(-1)&&(g=!1,C++,P()),")"===y.substr(0,1)&&"("!==f.substr(-1)&&"("===f.trimRight().substr(-1)&&(g=!1,C++,P()),I()):"keyword.operator"!==l.type&&"keyword"!==l.type||!y.match(/^(=|==|===|!=|!==|&&|\|\||and|or|xor|\+=|.=|>|>=|<|<=|=>)$/)?"punctuation.operator"===l.type&&";"===y?(P(),N(),m=!0,_&&E++):"punctuation.operator"===l.type&&y.match(/^(:|,)$/)?(P(),N(),y.match(/^(,)$/)&&S>0&&0===x&&d.lineBreaksAfterCommasInCurlyBlock?E++:(m=!0,p=!1)):"support.php_tag"!==l.type||"?>"!==y||p?o(l,"attribute-name")&&f.substr(-1).match(/^\s$/)?g=!0:o(l,"attribute-equals")?(I(),N()):o(l,"tag-close")?(I(),"/>"===y&&(g=!0)):"keyword"===l.type&&y.match(/^(case|default)$/)&&B&&(k=1):(P(),g=!0):(P(),N(),g=!0,m=!0),p&&(!l.type.match(/^(comment)$/)||y.substr(0,1).match(/^[/#]$/))&&(!l.type.match(/^(string)$/)||y.substr(0,1).match(/^['"@]$/))){if(C=A,v>w)for(C++,s=v;s>w;s--)M[s]=C;else v"===y)&&(E=R&&n&&""===y&&v--),o(l,"tag-name")&&(b=y),r=$}}l=n}f=f.trim(),e.doc.setValue(f)},t.commands=[{name:"beautify",description:"Format selection (Beautify)",exec:function(e){t.beautify(e.session)},bindKey:"Ctrl-Shift-B"}]})),ace.require(["ace/ext/beautify"],(function(t){e&&(e.exports=t)}))},604:(e,t,n)=>{e=n.nmd(e),ace.define("ace/ext/searchbox-css",["require","exports","module"],(function(e,t,n){n.exports='\n\n/* ------------------------------------------------------------------------------------------\n * Editor Search Form\n * --------------------------------------------------------------------------------------- */\n.ace_search {\n background-color: #ddd;\n color: #666;\n border: 1px solid #cbcbcb;\n border-top: 0 none;\n overflow: hidden;\n margin: 0;\n padding: 4px 6px 0 4px;\n position: absolute;\n top: 0;\n z-index: 99;\n white-space: normal;\n}\n.ace_search.left {\n border-left: 0 none;\n border-radius: 0px 0px 5px 0px;\n left: 0;\n}\n.ace_search.right {\n border-radius: 0px 0px 0px 5px;\n border-right: 0 none;\n right: 0;\n}\n\n.ace_search_form, .ace_replace_form {\n margin: 0 20px 4px 0;\n overflow: hidden;\n line-height: 1.9;\n}\n.ace_replace_form {\n margin-right: 0;\n}\n.ace_search_form.ace_nomatch {\n outline: 1px solid red;\n}\n\n.ace_search_field {\n border-radius: 3px 0 0 3px;\n background-color: white;\n color: black;\n border: 1px solid #cbcbcb;\n border-right: 0 none;\n outline: 0;\n padding: 0;\n font-size: inherit;\n margin: 0;\n line-height: inherit;\n padding: 0 6px;\n min-width: 17em;\n vertical-align: top;\n min-height: 1.8em;\n box-sizing: content-box;\n}\n.ace_searchbtn {\n border: 1px solid #cbcbcb;\n line-height: inherit;\n display: inline-block;\n padding: 0 6px;\n background: #fff;\n border-right: 0 none;\n border-left: 1px solid #dcdcdc;\n cursor: pointer;\n margin: 0;\n position: relative;\n color: #666;\n}\n.ace_searchbtn:last-child {\n border-radius: 0 3px 3px 0;\n border-right: 1px solid #cbcbcb;\n}\n.ace_searchbtn:disabled {\n background: none;\n cursor: default;\n}\n.ace_searchbtn:hover {\n background-color: #eef1f6;\n}\n.ace_searchbtn.prev, .ace_searchbtn.next {\n padding: 0px 0.7em\n}\n.ace_searchbtn.prev:after, .ace_searchbtn.next:after {\n content: "";\n border: solid 2px #888;\n width: 0.5em;\n height: 0.5em;\n border-width: 2px 0 0 2px;\n display:inline-block;\n transform: rotate(-45deg);\n}\n.ace_searchbtn.next:after {\n border-width: 0 2px 2px 0 ;\n}\n.ace_searchbtn_close {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAcCAYAAABRVo5BAAAAZ0lEQVR42u2SUQrAMAhDvazn8OjZBilCkYVVxiis8H4CT0VrAJb4WHT3C5xU2a2IQZXJjiQIRMdkEoJ5Q2yMqpfDIo+XY4k6h+YXOyKqTIj5REaxloNAd0xiKmAtsTHqW8sR2W5f7gCu5nWFUpVjZwAAAABJRU5ErkJggg==) no-repeat 50% 0;\n border-radius: 50%;\n border: 0 none;\n color: #656565;\n cursor: pointer;\n font: 16px/16px Arial;\n padding: 0;\n height: 14px;\n width: 14px;\n top: 9px;\n right: 7px;\n position: absolute;\n}\n.ace_searchbtn_close:hover {\n background-color: #656565;\n background-position: 50% 100%;\n color: white;\n}\n\n.ace_button {\n margin-left: 2px;\n cursor: pointer;\n -webkit-user-select: none;\n -moz-user-select: none;\n -o-user-select: none;\n -ms-user-select: none;\n user-select: none;\n overflow: hidden;\n opacity: 0.7;\n border: 1px solid rgba(100,100,100,0.23);\n padding: 1px;\n box-sizing: border-box!important;\n color: black;\n}\n\n.ace_button:hover {\n background-color: #eee;\n opacity:1;\n}\n.ace_button:active {\n background-color: #ddd;\n}\n\n.ace_button.checked {\n border-color: #3399ff;\n opacity:1;\n}\n\n.ace_search_options{\n margin-bottom: 3px;\n text-align: right;\n -webkit-user-select: none;\n -moz-user-select: none;\n -o-user-select: none;\n -ms-user-select: none;\n user-select: none;\n clear: both;\n}\n\n.ace_search_counter {\n float: left;\n font-family: arial;\n padding: 0 8px;\n}'})),ace.define("ace/ext/searchbox",["require","exports","module","ace/lib/dom","ace/lib/lang","ace/lib/event","ace/ext/searchbox-css","ace/keyboard/hash_handler","ace/lib/keys","ace/config"],(function(e,t,n){"use strict";var i=e("../lib/dom"),o=e("../lib/lang"),r=e("../lib/event"),s=e("./searchbox-css"),a=e("../keyboard/hash_handler").HashHandler,l=e("../lib/keys"),c=e("../config").nls;i.importCssString(s,"ace_searchbox",!1);var u=function(){function e(e,t,n){var o=i.createElement("div");i.buildDom(["div",{class:"ace_search right"},["span",{action:"hide",class:"ace_searchbtn_close"}],["div",{class:"ace_search_form"},["input",{class:"ace_search_field",placeholder:c("Search for"),spellcheck:"false"}],["span",{action:"findPrev",class:"ace_searchbtn prev"},"​"],["span",{action:"findNext",class:"ace_searchbtn next"},"​"],["span",{action:"findAll",class:"ace_searchbtn",title:"Alt-Enter"},c("All")]],["div",{class:"ace_replace_form"},["input",{class:"ace_search_field",placeholder:c("Replace with"),spellcheck:"false"}],["span",{action:"replaceAndFindNext",class:"ace_searchbtn"},c("Replace")],["span",{action:"replaceAll",class:"ace_searchbtn"},c("All")]],["div",{class:"ace_search_options"},["span",{action:"toggleReplace",class:"ace_button",title:c("Toggle Replace mode"),style:"float:left;margin-top:-2px;padding:0 5px;"},"+"],["span",{class:"ace_search_counter"}],["span",{action:"toggleRegexpMode",class:"ace_button",title:c("RegExp Search")},".*"],["span",{action:"toggleCaseSensitive",class:"ace_button",title:c("CaseSensitive Search")},"Aa"],["span",{action:"toggleWholeWords",class:"ace_button",title:c("Whole Word Search")},"\\b"],["span",{action:"searchInSelection",class:"ace_button",title:c("Search In Selection")},"S"]]],o),this.element=o.firstChild,this.setSession=this.setSession.bind(this),this.$init(),this.setEditor(e),i.importCssString(s,"ace_searchbox",e.container)}return e.prototype.setEditor=function(e){e.searchBox=this,e.renderer.scroller.appendChild(this.element),this.editor=e},e.prototype.setSession=function(e){this.searchRange=null,this.$syncOptions(!0)},e.prototype.$initElements=function(e){this.searchBox=e.querySelector(".ace_search_form"),this.replaceBox=e.querySelector(".ace_replace_form"),this.searchOption=e.querySelector("[action=searchInSelection]"),this.replaceOption=e.querySelector("[action=toggleReplace]"),this.regExpOption=e.querySelector("[action=toggleRegexpMode]"),this.caseSensitiveOption=e.querySelector("[action=toggleCaseSensitive]"),this.wholeWordOption=e.querySelector("[action=toggleWholeWords]"),this.searchInput=this.searchBox.querySelector(".ace_search_field"),this.replaceInput=this.replaceBox.querySelector(".ace_search_field"),this.searchCounter=e.querySelector(".ace_search_counter")},e.prototype.$init=function(){var e=this.element;this.$initElements(e);var t=this;r.addListener(e,"mousedown",(function(e){setTimeout((function(){t.activeInput.focus()}),0),r.stopPropagation(e)})),r.addListener(e,"click",(function(e){var n=(e.target||e.srcElement).getAttribute("action");n&&t[n]?t[n]():t.$searchBarKb.commands[n]&&t.$searchBarKb.commands[n].exec(t),r.stopPropagation(e)})),r.addCommandKeyListener(e,(function(e,n,i){var o=l.keyCodeToString(i),s=t.$searchBarKb.findKeyCommand(n,o);s&&s.exec&&(s.exec(t),r.stopEvent(e))})),this.$onChange=o.delayedCall((function(){t.find(!1,!1)})),r.addListener(this.searchInput,"input",(function(){t.$onChange.schedule(20)})),r.addListener(this.searchInput,"focus",(function(){t.activeInput=t.searchInput,t.searchInput.value&&t.highlight()})),r.addListener(this.replaceInput,"focus",(function(){t.activeInput=t.replaceInput,t.searchInput.value&&t.highlight()}))},e.prototype.setSearchRange=function(e){this.searchRange=e,e?this.searchRangeMarker=this.editor.session.addMarker(e,"ace_active-line"):this.searchRangeMarker&&(this.editor.session.removeMarker(this.searchRangeMarker),this.searchRangeMarker=null)},e.prototype.$syncOptions=function(e){i.setCssClass(this.replaceOption,"checked",this.searchRange),i.setCssClass(this.searchOption,"checked",this.searchOption.checked),this.replaceOption.textContent=this.replaceOption.checked?"-":"+",i.setCssClass(this.regExpOption,"checked",this.regExpOption.checked),i.setCssClass(this.wholeWordOption,"checked",this.wholeWordOption.checked),i.setCssClass(this.caseSensitiveOption,"checked",this.caseSensitiveOption.checked);var t=this.editor.getReadOnly();this.replaceOption.style.display=t?"none":"",this.replaceBox.style.display=this.replaceOption.checked&&!t?"":"none",this.find(!1,!1,e)},e.prototype.highlight=function(e){this.editor.session.highlight(e||this.editor.$search.$options.re),this.editor.renderer.updateBackMarkers()},e.prototype.find=function(e,t,n){var o=!this.editor.find(this.searchInput.value,{skipCurrent:e,backwards:t,wrap:!0,regExp:this.regExpOption.checked,caseSensitive:this.caseSensitiveOption.checked,wholeWord:this.wholeWordOption.checked,preventScroll:n,range:this.searchRange})&&this.searchInput.value;i.setCssClass(this.searchBox,"ace_nomatch",o),this.editor._emit("findSearchBox",{match:!o}),this.highlight(),this.updateCounter()},e.prototype.updateCounter=function(){var e=this.editor,t=e.$search.$options.re,n=t.unicode,i=0,r=0;if(t){var s=this.searchRange?e.session.getTextRange(this.searchRange):e.getValue(),a=e.session.doc.positionToIndex(e.selection.anchor);this.searchRange&&(a-=e.session.doc.positionToIndex(this.searchRange.start));for(var l,u=t.lastIndex=0;(l=t.exec(s))&&(i++,(u=l.index)<=a&&r++,!(i>999))&&(l[0]||(t.lastIndex=u+=o.skipEmptyMatch(s,u,n),!(u>=s.length))););}this.searchCounter.textContent=c("$0 of $1",[r,i>999?"999+":i])},e.prototype.findNext=function(){this.find(!0,!1)},e.prototype.findPrev=function(){this.find(!0,!0)},e.prototype.findAll=function(){var e=!this.editor.findAll(this.searchInput.value,{regExp:this.regExpOption.checked,caseSensitive:this.caseSensitiveOption.checked,wholeWord:this.wholeWordOption.checked})&&this.searchInput.value;i.setCssClass(this.searchBox,"ace_nomatch",e),this.editor._emit("findSearchBox",{match:!e}),this.highlight(),this.hide()},e.prototype.replace=function(){this.editor.getReadOnly()||this.editor.replace(this.replaceInput.value)},e.prototype.replaceAndFindNext=function(){this.editor.getReadOnly()||(this.editor.replace(this.replaceInput.value),this.findNext())},e.prototype.replaceAll=function(){this.editor.getReadOnly()||this.editor.replaceAll(this.replaceInput.value)},e.prototype.hide=function(){this.active=!1,this.setSearchRange(null),this.editor.off("changeSession",this.setSession),this.element.style.display="none",this.editor.keyBinding.removeKeyboardHandler(this.$closeSearchBarKb),this.editor.focus()},e.prototype.show=function(e,t){this.active=!0,this.editor.on("changeSession",this.setSession),this.element.style.display="",this.replaceOption.checked=t,e&&(this.searchInput.value=e),this.searchInput.focus(),this.searchInput.select(),this.editor.keyBinding.addKeyboardHandler(this.$closeSearchBarKb),this.$syncOptions(!0)},e.prototype.isFocused=function(){var e=document.activeElement;return e==this.searchInput||e==this.replaceInput},e}(),h=new a;h.bindKeys({"Ctrl-f|Command-f":function(e){var t=e.isReplace=!e.isReplace;e.replaceBox.style.display=t?"":"none",e.replaceOption.checked=!1,e.$syncOptions(),e.searchInput.focus()},"Ctrl-H|Command-Option-F":function(e){e.editor.getReadOnly()||(e.replaceOption.checked=!0,e.$syncOptions(),e.replaceInput.focus())},"Ctrl-G|Command-G":function(e){e.findNext()},"Ctrl-Shift-G|Command-Shift-G":function(e){e.findPrev()},esc:function(e){setTimeout((function(){e.hide()}))},Return:function(e){e.activeInput==e.replaceInput&&e.replace(),e.findNext()},"Shift-Return":function(e){e.activeInput==e.replaceInput&&e.replace(),e.findPrev()},"Alt-Return":function(e){e.activeInput==e.replaceInput&&e.replaceAll(),e.findAll()},Tab:function(e){(e.activeInput==e.replaceInput?e.searchInput:e.replaceInput).focus()}}),h.addCommands([{name:"toggleRegexpMode",bindKey:{win:"Alt-R|Alt-/",mac:"Ctrl-Alt-R|Ctrl-Alt-/"},exec:function(e){e.regExpOption.checked=!e.regExpOption.checked,e.$syncOptions()}},{name:"toggleCaseSensitive",bindKey:{win:"Alt-C|Alt-I",mac:"Ctrl-Alt-R|Ctrl-Alt-I"},exec:function(e){e.caseSensitiveOption.checked=!e.caseSensitiveOption.checked,e.$syncOptions()}},{name:"toggleWholeWords",bindKey:{win:"Alt-B|Alt-W",mac:"Ctrl-Alt-B|Ctrl-Alt-W"},exec:function(e){e.wholeWordOption.checked=!e.wholeWordOption.checked,e.$syncOptions()}},{name:"toggleReplace",exec:function(e){e.replaceOption.checked=!e.replaceOption.checked,e.$syncOptions()}},{name:"searchInSelection",exec:function(e){e.searchOption.checked=!e.searchRange,e.setSearchRange(e.searchOption.checked&&e.editor.getSelectionRange()),e.$syncOptions()}}]);var d=new a([{bindKey:"Esc",name:"closeSearchBar",exec:function(e){e.searchBox.hide()}}]);u.prototype.$searchBarKb=h,u.prototype.$closeSearchBarKb=d,t.SearchBox=u,t.Search=function(e,t){(e.searchBox||new u(e)).show(e.session.getTextRange(),t)}})),ace.require(["ace/ext/searchbox"],(function(t){e&&(e.exports=t)}))},549:(e,t,n)=>{e=n.nmd(e),ace.define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"],(function(e,t,n){"use strict";var i=e("../lib/oop"),o=(e("../lib/lang"),e("./text_highlight_rules").TextHighlightRules),r=t.supportType="align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index",s=t.supportFunction="rgb|rgba|url|attr|counter|counters",a=t.supportConstant="absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|flex-end|flex-start|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom",l=t.supportConstantColor="aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|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|green|greenyellow|grey|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|magenta|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|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen",c=t.supportConstantFonts="arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace",u=t.numRe="\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))",h=t.pseudoElements="(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b",d=t.pseudoClasses="(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b",p=function(){var e=this.createKeywordMapper({"support.function":s,"support.constant":a,"support.type":r,"support.constant.color":l,"support.constant.fonts":c},"text",!0);this.$rules={start:[{include:["strings","url","comments"]},{token:"paren.lparen",regex:"\\{",next:"ruleset"},{token:"paren.rparen",regex:"\\}"},{token:"string",regex:"@(?!viewport)",next:"media"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"keyword",regex:"%"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant.numeric",regex:u},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],media:[{include:["strings","url","comments"]},{token:"paren.lparen",regex:"\\{",next:"start"},{token:"paren.rparen",regex:"\\}",next:"start"},{token:"string",regex:";",next:"start"},{token:"keyword",regex:"(?:media|supports|document|charset|import|namespace|media|supports|document|page|font|keyframes|viewport|counter-style|font-feature-values|swash|ornaments|annotation|stylistic|styleset|character-variant)"}],comments:[{token:"comment",regex:"\\/\\*",push:[{token:"comment",regex:"\\*\\/",next:"pop"},{defaultToken:"comment"}]}],ruleset:[{regex:"-(webkit|ms|moz|o)-",token:"text"},{token:"punctuation.operator",regex:"[:;]"},{token:"paren.rparen",regex:"\\}",next:"start"},{include:["strings","url","comments"]},{token:["constant.numeric","keyword"],regex:"("+u+")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)"},{token:"constant.numeric",regex:u},{token:"constant.numeric",regex:"#[a-f0-9]{6}"},{token:"constant.numeric",regex:"#[a-f0-9]{3}"},{token:["punctuation","entity.other.attribute-name.pseudo-element.css"],regex:h},{token:["punctuation","entity.other.attribute-name.pseudo-class.css"],regex:d},{include:"url"},{token:e,regex:"\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"},{caseInsensitive:!0}],url:[{token:"support.function",regex:"(?:url(:?-prefix)?|domain|regexp)\\(",push:[{token:"support.function",regex:"\\)",next:"pop"},{defaultToken:"string"}]}],strings:[{token:"string.start",regex:"'",push:[{token:"string.end",regex:"'|$",next:"pop"},{include:"escapes"},{token:"constant.language.escape",regex:/\\$/,consumeLineEnd:!0},{defaultToken:"string"}]},{token:"string.start",regex:'"',push:[{token:"string.end",regex:'"|$',next:"pop"},{include:"escapes"},{token:"constant.language.escape",regex:/\\$/,consumeLineEnd:!0},{defaultToken:"string"}]}],escapes:[{token:"constant.language.escape",regex:/\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/}]},this.normalizeRules()};i.inherits(p,o),t.CssHighlightRules=p})),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],(function(e,t,n){"use strict";var i=e("../range").Range,o=function(){};(function(){this.checkOutdent=function(e,t){return!!/^\s+$/.test(e)&&/^\s*\}/.test(t)},this.autoOutdent=function(e,t){var n=e.getLine(t).match(/^(\s*\})/);if(!n)return 0;var o=n[1].length,r=e.findMatchingBracket({row:t,column:o});if(!r||r.row==t)return 0;var s=this.$getIndent(e.getLine(r.row));e.replace(new i(t,0,t,o-1),s)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(o.prototype),t.MatchingBraceOutdent=o})),ace.define("ace/mode/css_completions",["require","exports","module"],(function(e,t,n){"use strict";var i={background:{"#$0":1},"background-color":{"#$0":1,transparent:1,fixed:1},"background-image":{"url('/$0')":1},"background-repeat":{repeat:1,"repeat-x":1,"repeat-y":1,"no-repeat":1,inherit:1},"background-position":{bottom:2,center:2,left:2,right:2,top:2,inherit:2},"background-attachment":{scroll:1,fixed:1},"background-size":{cover:1,contain:1},"background-clip":{"border-box":1,"padding-box":1,"content-box":1},"background-origin":{"border-box":1,"padding-box":1,"content-box":1},border:{"solid $0":1,"dashed $0":1,"dotted $0":1,"#$0":1},"border-color":{"#$0":1},"border-style":{solid:2,dashed:2,dotted:2,double:2,groove:2,hidden:2,inherit:2,inset:2,none:2,outset:2,ridged:2},"border-collapse":{collapse:1,separate:1},bottom:{px:1,em:1,"%":1},clear:{left:1,right:1,both:1,none:1},color:{"#$0":1,"rgb(#$00,0,0)":1},cursor:{default:1,pointer:1,move:1,text:1,wait:1,help:1,progress:1,"n-resize":1,"ne-resize":1,"e-resize":1,"se-resize":1,"s-resize":1,"sw-resize":1,"w-resize":1,"nw-resize":1},display:{none:1,block:1,inline:1,"inline-block":1,"table-cell":1},"empty-cells":{show:1,hide:1},float:{left:1,right:1,none:1},"font-family":{Arial:2,"Comic Sans MS":2,Consolas:2,"Courier New":2,Courier:2,Georgia:2,Monospace:2,"Sans-Serif":2,"Segoe UI":2,Tahoma:2,"Times New Roman":2,"Trebuchet MS":2,Verdana:1},"font-size":{px:1,em:1,"%":1},"font-weight":{bold:1,normal:1},"font-style":{italic:1,normal:1},"font-variant":{normal:1,"small-caps":1},height:{px:1,em:1,"%":1},left:{px:1,em:1,"%":1},"letter-spacing":{normal:1},"line-height":{normal:1},"list-style-type":{none:1,disc:1,circle:1,square:1,decimal:1,"decimal-leading-zero":1,"lower-roman":1,"upper-roman":1,"lower-greek":1,"lower-latin":1,"upper-latin":1,georgian:1,"lower-alpha":1,"upper-alpha":1},margin:{px:1,em:1,"%":1},"margin-right":{px:1,em:1,"%":1},"margin-left":{px:1,em:1,"%":1},"margin-top":{px:1,em:1,"%":1},"margin-bottom":{px:1,em:1,"%":1},"max-height":{px:1,em:1,"%":1},"max-width":{px:1,em:1,"%":1},"min-height":{px:1,em:1,"%":1},"min-width":{px:1,em:1,"%":1},overflow:{hidden:1,visible:1,auto:1,scroll:1},"overflow-x":{hidden:1,visible:1,auto:1,scroll:1},"overflow-y":{hidden:1,visible:1,auto:1,scroll:1},padding:{px:1,em:1,"%":1},"padding-top":{px:1,em:1,"%":1},"padding-right":{px:1,em:1,"%":1},"padding-bottom":{px:1,em:1,"%":1},"padding-left":{px:1,em:1,"%":1},"page-break-after":{auto:1,always:1,avoid:1,left:1,right:1},"page-break-before":{auto:1,always:1,avoid:1,left:1,right:1},position:{absolute:1,relative:1,fixed:1,static:1},right:{px:1,em:1,"%":1},"table-layout":{fixed:1,auto:1},"text-decoration":{none:1,underline:1,"line-through":1,blink:1},"text-align":{left:1,right:1,center:1,justify:1},"text-transform":{capitalize:1,uppercase:1,lowercase:1,none:1},top:{px:1,em:1,"%":1},"vertical-align":{top:1,bottom:1},visibility:{hidden:1,visible:1},"white-space":{nowrap:1,normal:1,pre:1,"pre-line":1,"pre-wrap":1},width:{px:1,em:1,"%":1},"word-spacing":{normal:1},filter:{"alpha(opacity=$0100)":1},"text-shadow":{"$02px 2px 2px #777":1},"text-overflow":{"ellipsis-word":1,clip:1,ellipsis:1},"-moz-border-radius":1,"-moz-border-radius-topright":1,"-moz-border-radius-bottomright":1,"-moz-border-radius-topleft":1,"-moz-border-radius-bottomleft":1,"-webkit-border-radius":1,"-webkit-border-top-right-radius":1,"-webkit-border-top-left-radius":1,"-webkit-border-bottom-right-radius":1,"-webkit-border-bottom-left-radius":1,"-moz-box-shadow":1,"-webkit-box-shadow":1,transform:{"rotate($00deg)":1,"skew($00deg)":1},"-moz-transform":{"rotate($00deg)":1,"skew($00deg)":1},"-webkit-transform":{"rotate($00deg)":1,"skew($00deg)":1}},o=function(){};(function(){this.completionsDefined=!1,this.defineCompletions=function(){if(document){var e=document.createElement("c").style;for(var t in e)if("string"==typeof e[t]){var n=t.replace(/[A-Z]/g,(function(e){return"-"+e.toLowerCase()}));i.hasOwnProperty(n)||(i[n]=1)}}this.completionsDefined=!0},this.getCompletions=function(e,t,n,i){if(this.completionsDefined||this.defineCompletions(),"ruleset"===e||"ace/mode/scss"==t.$mode.$id){var o=t.getLine(n.row).substr(0,n.column),r=/\([^)]*$/.test(o);return r&&(o=o.substr(o.lastIndexOf("(")+1)),/:[^;]+$/.test(o)?(/([\w\-]+):[^:]*$/.test(o),this.getPropertyValueCompletions(e,t,n,i)):this.getPropertyCompletions(e,t,n,i,r)}return[]},this.getPropertyCompletions=function(e,t,n,o,r){return r=r||!1,Object.keys(i).map((function(e){return{caption:e,snippet:e+": $0"+(r?"":";"),meta:"property",score:1e6}}))},this.getPropertyValueCompletions=function(e,t,n,o){var r=t.getLine(n.row).substr(0,n.column),s=(/([\w\-]+):[^:]*$/.exec(r)||{})[1];if(!s)return[];var a=[];return s in i&&"object"==typeof i[s]&&(a=Object.keys(i[s])),a.map((function(e){return{caption:e,snippet:e,meta:"property value",score:1e6}}))}}).call(o.prototype),t.CssCompletions=o})),ace.define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"],(function(e,t,n){"use strict";var i=e("../../lib/oop"),o=(e("../behaviour").Behaviour,e("./cstyle").CstyleBehaviour),r=e("../../token_iterator").TokenIterator,s=function(){this.inherit(o),this.add("colon","insertion",(function(e,t,n,i,o){if(":"===o&&n.selection.isEmpty()){var s=n.getCursorPosition(),a=new r(i,s.row,s.column),l=a.getCurrentToken();if(l&&l.value.match(/\s+/)&&(l=a.stepBackward()),l&&"support.type"===l.type){var c=i.doc.getLine(s.row);if(":"===c.substring(s.column,s.column+1))return{text:"",selection:[1,1]};if(/^(\s+[^;]|\s*$)/.test(c.substring(s.column)))return{text:":;",selection:[1,1]}}}})),this.add("colon","deletion",(function(e,t,n,i,o){var s=i.doc.getTextRange(o);if(!o.isMultiLine()&&":"===s){var a=n.getCursorPosition(),l=new r(i,a.row,a.column),c=l.getCurrentToken();if(c&&c.value.match(/\s+/)&&(c=l.stepBackward()),c&&"support.type"===c.type&&";"===i.doc.getLine(o.start.row).substring(o.end.column,o.end.column+1))return o.end.column++,o}})),this.add("semicolon","insertion",(function(e,t,n,i,o){if(";"===o&&n.selection.isEmpty()){var r=n.getCursorPosition();if(";"===i.doc.getLine(r.row).substring(r.column,r.column+1))return{text:"",selection:[1,1]}}})),this.add("!important","insertion",(function(e,t,n,i,o){if("!"===o&&n.selection.isEmpty()){var r=n.getCursorPosition(),s=i.doc.getLine(r.row);if(/^\s*(;|}|$)/.test(s.substring(r.column)))return{text:"!important",selection:[10,10]}}}))};i.inherits(s,o),t.CssBehaviour=s})),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],(function(e,t,n){"use strict";var i=e("../../lib/oop"),o=e("../../range").Range,r=e("./fold_mode").FoldMode,s=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};i.inherits(s,r),function(){this.foldingStartMarker=/([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var i=e.getLine(n);if(this.singleLineBlockCommentRe.test(i)&&!this.startRegionRe.test(i)&&!this.tripleStarBlockCommentRe.test(i))return"";var o=this._getFoldWidgetBase(e,t,n);return!o&&this.startRegionRe.test(i)?"start":o},this.getFoldWidgetRange=function(e,t,n,i){var o,r=e.getLine(n);if(this.startRegionRe.test(r))return this.getCommentRegionBlock(e,r,n);if(o=r.match(this.foldingStartMarker)){var s=o.index;if(o[1])return this.openingBracketBlock(e,o[1],n,s);var a=e.getCommentFoldRange(n,s+o[0].length,1);return a&&!a.isMultiLine()&&(i?a=this.getSectionRange(e,n):"all"!=t&&(a=null)),a}return"markbegin"!==t&&(o=r.match(this.foldingStopMarker))?(s=o.index+o[0].length,o[1]?this.closingBracketBlock(e,o[1],n,s):e.getCommentFoldRange(n,s,-1)):void 0},this.getSectionRange=function(e,t){for(var n=e.getLine(t),i=n.search(/\S/),r=t,s=n.length,a=t+=1,l=e.getLength();++tc)break;var u=this.getFoldWidgetRange(e,"all",t);if(u){if(u.start.row<=r)break;if(u.isMultiLine())t=u.end.row;else if(i==c)break}a=t}}return new o(r,s,a,e.getLine(a).length)},this.getCommentRegionBlock=function(e,t,n){for(var i=t.search(/\s*$/),r=e.getLength(),s=n,a=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,l=1;++ns)return new o(s,i,n,t.length)}}.call(s.prototype)})),ace.define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"],(function(e,t,n){"use strict";var i=e("../lib/oop"),o=e("./text").Mode,r=e("./css_highlight_rules").CssHighlightRules,s=e("./matching_brace_outdent").MatchingBraceOutdent,a=e("../worker/worker_client").WorkerClient,l=e("./css_completions").CssCompletions,c=e("./behaviour/css").CssBehaviour,u=e("./folding/cstyle").FoldMode,h=function(){this.HighlightRules=r,this.$outdent=new s,this.$behaviour=new c,this.$completer=new l,this.foldingRules=new u};i.inherits(h,o),function(){this.foldingRules="cStyle",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var i=this.$getIndent(t),o=this.getTokenizer().getLineTokens(t,e).tokens;return o.length&&"comment"==o[o.length-1].type||t.match(/^.*\{\s*$/)&&(i+=n),i},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.getCompletions=function(e,t,n,i){return this.$completer.getCompletions(e,t,n,i)},this.createWorker=function(e){var t=new a(["ace"],"ace/mode/css_worker","Worker");return t.attachToDocument(e.getDocument()),t.on("annotate",(function(t){e.setAnnotations(t.data)})),t.on("terminate",(function(){e.clearAnnotations()})),t},this.$id="ace/mode/css",this.snippetFileId="ace/snippets/css"}.call(h.prototype),t.Mode=h})),ace.require(["ace/mode/css"],(function(t){e&&(e.exports=t)}))},576:(e,t,n)=>{e=n.nmd(e),ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],(function(e,t,n){"use strict";var i=e("../lib/oop"),o=e("./text_highlight_rules").TextHighlightRules,r=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@\\w+(?=\\s|$)"},r.getTagRule(),{defaultToken:"comment.doc",caseInsensitive:!0}]}};i.inherits(r,o),r.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},r.getStartRule=function(e){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:e}},r.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=r})),ace.define("ace/mode/golang_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],(function(e,t,n){var i=e("../lib/oop"),o=e("./doc_comment_highlight_rules").DocCommentHighlightRules,r=e("./text_highlight_rules").TextHighlightRules,s=function(){var e=this.createKeywordMapper({keyword:"else|break|case|return|goto|if|const|select|continue|struct|default|switch|for|range|func|import|package|chan|defer|fallthrough|go|interface|map|range|select|type|var","constant.language":"nil|true|false|iota","support.function":"new|close|cap|copy|panic|panicln|print|println|len|make|delete|real|recover|imag|append","support.type":"string|uint8|uint16|uint32|uint64|int8|int16|int32|int64|float32|float64|complex64|complex128|byte|rune|uint|int|uintptr|bool|error"},""),t="\\\\(?:[0-7]{3}|x\\h{2}|u{4}|U\\h{6}|[abfnrtv'\"\\\\])".replace(/\\h/g,"[a-fA-F\\d]");this.$rules={start:[{token:"comment",regex:"\\/\\/.*$"},o.getStartRule("doc-start"),{token:"comment.start",regex:"\\/\\*",next:"comment"},{token:"string",regex:/"(?:[^"\\]|\\.)*?"/},{token:"string",regex:"`",next:"bqstring"},{token:"constant.numeric",regex:"'(?:[^\\'\ud800-\udbff]|[\ud800-\udbff][\udc00-\udfff]|"+t.replace('"',"")+")'"},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:["keyword","text","entity.name.function"],regex:"(func)(\\s+)([a-zA-Z_$][a-zA-Z0-9_$]*)\\b"},{token:function(t){return"("==t[t.length-1]?[{type:e(t.slice(0,-1))||"support.function",value:t.slice(0,-1)},{type:"paren.lparen",value:t.slice(-1)}]:e(t)||"identifier"},regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b\\(?"},{token:"keyword.operator",regex:"!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|==|=|!=|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^="},{token:"punctuation.operator",regex:"\\?|\\:|\\,|\\;|\\."},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"}],comment:[{token:"comment.end",regex:"\\*\\/",next:"start"},{defaultToken:"comment"}],bqstring:[{token:"string",regex:"`",next:"start"},{defaultToken:"string"}]},this.embedRules(o,"doc-",[o.getEndRule("start")])};i.inherits(s,r),t.GolangHighlightRules=s})),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],(function(e,t,n){"use strict";var i=e("../range").Range,o=function(){};(function(){this.checkOutdent=function(e,t){return!!/^\s+$/.test(e)&&/^\s*\}/.test(t)},this.autoOutdent=function(e,t){var n=e.getLine(t).match(/^(\s*\})/);if(!n)return 0;var o=n[1].length,r=e.findMatchingBracket({row:t,column:o});if(!r||r.row==t)return 0;var s=this.$getIndent(e.getLine(r.row));e.replace(new i(t,0,t,o-1),s)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(o.prototype),t.MatchingBraceOutdent=o})),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],(function(e,t,n){"use strict";var i=e("../../lib/oop"),o=e("../../range").Range,r=e("./fold_mode").FoldMode,s=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};i.inherits(s,r),function(){this.foldingStartMarker=/([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var i=e.getLine(n);if(this.singleLineBlockCommentRe.test(i)&&!this.startRegionRe.test(i)&&!this.tripleStarBlockCommentRe.test(i))return"";var o=this._getFoldWidgetBase(e,t,n);return!o&&this.startRegionRe.test(i)?"start":o},this.getFoldWidgetRange=function(e,t,n,i){var o,r=e.getLine(n);if(this.startRegionRe.test(r))return this.getCommentRegionBlock(e,r,n);if(o=r.match(this.foldingStartMarker)){var s=o.index;if(o[1])return this.openingBracketBlock(e,o[1],n,s);var a=e.getCommentFoldRange(n,s+o[0].length,1);return a&&!a.isMultiLine()&&(i?a=this.getSectionRange(e,n):"all"!=t&&(a=null)),a}return"markbegin"!==t&&(o=r.match(this.foldingStopMarker))?(s=o.index+o[0].length,o[1]?this.closingBracketBlock(e,o[1],n,s):e.getCommentFoldRange(n,s,-1)):void 0},this.getSectionRange=function(e,t){for(var n=e.getLine(t),i=n.search(/\S/),r=t,s=n.length,a=t+=1,l=e.getLength();++tc)break;var u=this.getFoldWidgetRange(e,"all",t);if(u){if(u.start.row<=r)break;if(u.isMultiLine())t=u.end.row;else if(i==c)break}a=t}}return new o(r,s,a,e.getLine(a).length)},this.getCommentRegionBlock=function(e,t,n){for(var i=t.search(/\s*$/),r=e.getLength(),s=n,a=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,l=1;++ns)return new o(s,i,n,t.length)}}.call(s.prototype)})),ace.define("ace/mode/golang",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/golang_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/folding/cstyle"],(function(e,t,n){var i=e("../lib/oop"),o=e("./text").Mode,r=e("./golang_highlight_rules").GolangHighlightRules,s=e("./matching_brace_outdent").MatchingBraceOutdent,a=e("./folding/cstyle").FoldMode,l=function(){this.HighlightRules=r,this.$outdent=new s,this.foldingRules=new a,this.$behaviour=this.$defaultBehaviour};i.inherits(l,o),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var i=this.$getIndent(t),o=this.getTokenizer().getLineTokens(t,e),r=o.tokens;return o.state,r.length&&"comment"==r[r.length-1].type||"start"==e&&t.match(/^.*[\{\(\[]\s*$/)&&(i+=n),i},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.$id="ace/mode/golang"}.call(l.prototype),t.Mode=l})),ace.require(["ace/mode/golang"],(function(t){e&&(e.exports=t)}))},395:(e,t,n)=>{e=n.nmd(e),ace.define("ace/mode/jsdoc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],(function(e,t,n){"use strict";var i=e("../lib/oop"),o=e("./text_highlight_rules").TextHighlightRules,r=function(){this.$rules={start:[{token:["comment.doc.tag","comment.doc.text","lparen.doc"],regex:"(@(?:param|member|typedef|property|namespace|var|const|callback))(\\s*)({)",push:[{token:"lparen.doc",regex:"{",push:[{include:"doc-syntax"},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"}]},{token:["rparen.doc","text.doc","variable.parameter.doc","lparen.doc","variable.parameter.doc","rparen.doc"],regex:/(})(\s*)(?:([\w=:\/\.]+)|(?:(\[)([\w=:\/\.]+)(\])))/,next:"pop"},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"},{include:"doc-syntax"},{defaultToken:"text.doc"}]},{token:["comment.doc.tag","text.doc","lparen.doc"],regex:"(@(?:returns?|yields|type|this|suppress|public|protected|private|package|modifies|implements|external|exception|throws|enum|define|extends))(\\s*)({)",push:[{token:"lparen.doc",regex:"{",push:[{include:"doc-syntax"},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"}]},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"},{include:"doc-syntax"},{defaultToken:"text.doc"}]},{token:["comment.doc.tag","text.doc","variable.parameter.doc"],regex:'(@(?:alias|memberof|instance|module|name|lends|namespace|external|this|template|requires|param|implements|function|extends|typedef|mixes|constructor|var|memberof\\!|event|listens|exports|class|constructs|interface|emits|fires|throws|const|callback|borrows|augments))(\\s+)(\\w[\\w#.:/~"\\-]*)?'},{token:["comment.doc.tag","text.doc","variable.parameter.doc"],regex:"(@method)(\\s+)(\\w[\\w.\\(\\)]*)"},{token:"comment.doc.tag",regex:"@access\\s+(?:private|public|protected)"},{token:"comment.doc.tag",regex:"@kind\\s+(?:class|constant|event|external|file|function|member|mixin|module|namespace|typedef)"},{token:"comment.doc.tag",regex:"@\\w+(?=\\s|$)"},r.getTagRule(),{defaultToken:"comment.doc",caseInsensitive:!0}],"doc-syntax":[{token:"operator.doc",regex:/[|:]/},{token:"paren.doc",regex:/[\[\]]/}]},this.normalizeRules()};i.inherits(r,o),r.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},r.getStartRule=function(e){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:e}},r.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.JsDocCommentHighlightRules=r})),ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/jsdoc_comment_highlight_rules","ace/mode/text_highlight_rules"],(function(e,t,n){"use strict";var i=e("../lib/oop"),o=e("./jsdoc_comment_highlight_rules").JsDocCommentHighlightRules,r=e("./text_highlight_rules").TextHighlightRules,s="[a-zA-Z\\$_¡-￿][a-zA-Z\\d\\$_¡-￿]*",a=function(e){var t=this.createKeywordMapper({"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Symbol|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",keyword:"const|yield|import|get|set|async|await|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static|constructor","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},"identifier"),n="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]{1,6}}|[0-2][0-7]{0,2}|3[0-7][0-7]?|[4-7][0-7]?|.)";this.$rules={no_regex:[o.getStartRule("doc-start"),c("no_regex"),{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/},{token:["storage.type","punctuation.operator","support.function","punctuation.operator","entity.name.function","text","keyword.operator"],regex:"("+s+")(\\.)(prototype)(\\.)("+s+")(\\s*)(=)",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+s+")(\\.)("+s+")(\\s*)(=)(\\s*)(function\\*?)(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+s+")(\\s*)(=)(\\s*)(function\\*?)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+s+")(\\.)("+s+")(\\s*)(=)(\\s*)(function\\*?)(\\s+)(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","entity.name.function","text","paren.lparen"],regex:"(function\\*?)(\\s+)("+s+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","paren.lparen"],regex:"("+s+")(\\s*)(:)(\\s*)(function\\*?)(\\s*)(\\()",next:"function_arguments"},{token:["text","text","storage.type","text","paren.lparen"],regex:"(:)(\\s*)(function\\*?)(\\s*)(\\()",next:"function_arguments"},{token:"keyword",regex:"from(?=\\s*('|\"))"},{token:"keyword",regex:"(?:case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void)\\b",next:"start"},{token:"support.constant",regex:/that\b/},{token:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/},{token:t,regex:s},{token:"punctuation.operator",regex:/[.](?![.])/,next:"property"},{token:"storage.type",regex:/=>/,next:"start"},{token:"keyword.operator",regex:/--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/,next:"start"},{token:"punctuation.operator",regex:/[?:,;.]/,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"comment",regex:/^#!.*$/}],property:[{token:"text",regex:"\\s+"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+s+")(\\.)("+s+")(\\s*)(=)(\\s*)(function\\*?)(?:(\\s+)(\\w+))?(\\s*)(\\()",next:"function_arguments"},{token:"punctuation.operator",regex:/[.](?![.])/},{token:"support.function",regex:/(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|lter|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward|rEach)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:"support.function.dom",regex:/(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:"support.constant",regex:/(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:"identifier",regex:s},{regex:"",token:"empty",next:"no_regex"}],start:[o.getStartRule("doc-start"),c("start"),{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],regex:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],default_parameter:[{token:"string",regex:"'(?=.)",push:[{token:"string",regex:"'|$",next:"pop"},{include:"qstring"}]},{token:"string",regex:'"(?=.)',push:[{token:"string",regex:'"|$',next:"pop"},{include:"qqstring"}]},{token:"constant.language",regex:"null|Infinity|NaN|undefined"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/},{token:"punctuation.operator",regex:",",next:"function_arguments"},{token:"text",regex:"\\s+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],function_arguments:[c("function_arguments"),{token:"variable.parameter",regex:s},{token:"punctuation.operator",regex:","},{token:"text",regex:"\\s+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],qqstring:[{token:"constant.language.escape",regex:n},{token:"string",regex:"\\\\$",consumeLineEnd:!0},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:n},{token:"string",regex:"\\\\$",consumeLineEnd:!0},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]},e&&e.noES6||(this.$rules.no_regex.unshift({regex:"[{}]",onMatch:function(e,t,n){if(this.next="{"==e?this.nextState:"","{"==e&&n.length)n.unshift("start",t);else if("}"==e&&n.length&&(n.shift(),this.next=n.shift(),-1!=this.next.indexOf("string")||-1!=this.next.indexOf("jsx")))return"paren.quasi.end";return"{"==e?"paren.lparen":"paren.rparen"},nextState:"start"},{token:"string.quasi.start",regex:/`/,push:[{token:"constant.language.escape",regex:n},{token:"paren.quasi.start",regex:/\${/,push:"start"},{token:"string.quasi.end",regex:/`/,next:"pop"},{defaultToken:"string.quasi"}]},{token:["variable.parameter","text"],regex:"("+s+")(\\s*)(?=\\=>)"},{token:"paren.lparen",regex:"(\\()(?=.+\\s*=>)",next:"function_arguments"},{token:"variable.language",regex:"(?:(?:(?:Weak)?(?:Set|Map))|Promise)\\b"}),this.$rules.function_arguments.unshift({token:"keyword.operator",regex:"=",next:"default_parameter"},{token:"keyword.operator",regex:"\\.{3}"}),this.$rules.property.unshift({token:"support.function",regex:"(findIndex|repeat|startsWith|endsWith|includes|isSafeInteger|trunc|cbrt|log2|log10|sign|then|catch|finally|resolve|reject|race|any|all|allSettled|keys|entries|isInteger)\\b(?=\\()"},{token:"constant.language",regex:"(?:MAX_SAFE_INTEGER|MIN_SAFE_INTEGER|EPSILON)\\b"}),e&&0==e.jsx||l.call(this)),this.embedRules(o,"doc-",[o.getEndRule("no_regex")]),this.normalizeRules()};function l(){var e=s.replace("\\d","\\d\\-"),t={onMatch:function(e,t,n){var i="/"==e.charAt(1)?2:1;return 1==i?(t!=this.nextState?n.unshift(this.next,this.nextState,0):n.unshift(this.next),n[2]++):2==i&&t==this.nextState&&(n[1]--,(!n[1]||n[1]<0)&&(n.shift(),n.shift())),[{type:"meta.tag.punctuation."+(1==i?"":"end-")+"tag-open.xml",value:e.slice(0,i)},{type:"meta.tag.tag-name.xml",value:e.substr(i)}]},regex:"",onMatch:function(e,t,n){return t==n[0]&&n.shift(),2==e.length&&(n[0]==this.nextState&&n[1]--,(!n[1]||n[1]<0)&&n.splice(0,2)),this.next=n[0]||"start",[{type:this.token,value:e}]},nextState:"jsx"},n,c("jsxAttributes"),{token:"entity.other.attribute-name.xml",regex:e},{token:"keyword.operator.attribute-equals.xml",regex:"="},{token:"text.tag-whitespace.xml",regex:"\\s+"},{token:"string.attribute-value.xml",regex:"'",stateName:"jsx_attr_q",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',stateName:"jsx_attr_qq",push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},t],this.$rules.reference=[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}]}function c(e){return[{token:"comment",regex:/\/\*/,next:[o.getTagRule(),{token:"comment",regex:"\\*\\/",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]},{token:"comment",regex:"\\/\\/",next:[o.getTagRule(),{token:"comment",regex:"$|^",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]}]}i.inherits(a,r),t.JavaScriptHighlightRules=a})),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],(function(e,t,n){"use strict";var i=e("../range").Range,o=function(){};(function(){this.checkOutdent=function(e,t){return!!/^\s+$/.test(e)&&/^\s*\}/.test(t)},this.autoOutdent=function(e,t){var n=e.getLine(t).match(/^(\s*\})/);if(!n)return 0;var o=n[1].length,r=e.findMatchingBracket({row:t,column:o});if(!r||r.row==t)return 0;var s=this.$getIndent(e.getLine(r.row));e.replace(new i(t,0,t,o-1),s)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(o.prototype),t.MatchingBraceOutdent=o})),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],(function(e,t,n){"use strict";var i=e("../../lib/oop"),o=e("../../range").Range,r=e("./fold_mode").FoldMode,s=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};i.inherits(s,r),function(){this.foldingStartMarker=/([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var i=e.getLine(n);if(this.singleLineBlockCommentRe.test(i)&&!this.startRegionRe.test(i)&&!this.tripleStarBlockCommentRe.test(i))return"";var o=this._getFoldWidgetBase(e,t,n);return!o&&this.startRegionRe.test(i)?"start":o},this.getFoldWidgetRange=function(e,t,n,i){var o,r=e.getLine(n);if(this.startRegionRe.test(r))return this.getCommentRegionBlock(e,r,n);if(o=r.match(this.foldingStartMarker)){var s=o.index;if(o[1])return this.openingBracketBlock(e,o[1],n,s);var a=e.getCommentFoldRange(n,s+o[0].length,1);return a&&!a.isMultiLine()&&(i?a=this.getSectionRange(e,n):"all"!=t&&(a=null)),a}return"markbegin"!==t&&(o=r.match(this.foldingStopMarker))?(s=o.index+o[0].length,o[1]?this.closingBracketBlock(e,o[1],n,s):e.getCommentFoldRange(n,s,-1)):void 0},this.getSectionRange=function(e,t){for(var n=e.getLine(t),i=n.search(/\S/),r=t,s=n.length,a=t+=1,l=e.getLength();++tc)break;var u=this.getFoldWidgetRange(e,"all",t);if(u){if(u.start.row<=r)break;if(u.isMultiLine())t=u.end.row;else if(i==c)break}a=t}}return new o(r,s,a,e.getLine(a).length)},this.getCommentRegionBlock=function(e,t,n){for(var i=t.search(/\s*$/),r=e.getLength(),s=n,a=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,l=1;++ns)return new o(s,i,n,t.length)}}.call(s.prototype)})),ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"],(function(e,t,n){"use strict";var i=e("../lib/oop"),o=e("./text").Mode,r=e("./javascript_highlight_rules").JavaScriptHighlightRules,s=e("./matching_brace_outdent").MatchingBraceOutdent,a=e("../worker/worker_client").WorkerClient,l=e("./behaviour/cstyle").CstyleBehaviour,c=e("./folding/cstyle").FoldMode,u=function(){this.HighlightRules=r,this.$outdent=new s,this.$behaviour=new l,this.foldingRules=new c};i.inherits(u,o),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.$quotes={'"':'"',"'":"'","`":"`"},this.$pairQuotesAfter={"`":/\w/},this.getNextLineIndent=function(e,t,n){var i=this.$getIndent(t),o=this.getTokenizer().getLineTokens(t,e),r=o.tokens,s=o.state;if(r.length&&"comment"==r[r.length-1].type)return i;if("start"==e||"no_regex"==e)(a=t.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/))&&(i+=n);else if("doc-start"==e){if("start"==s||"no_regex"==s)return"";var a;(a=t.match(/^\s*(\/?)\*/))&&(a[1]&&(i+=" "),i+="* ")}return i},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new a(["ace"],"ace/mode/javascript_worker","JavaScriptWorker");return t.attachToDocument(e.getDocument()),t.on("annotate",(function(t){e.setAnnotations(t.data)})),t.on("terminate",(function(){e.clearAnnotations()})),t},this.$id="ace/mode/javascript",this.snippetFileId="ace/snippets/javascript"}.call(u.prototype),t.Mode=u})),ace.require(["ace/mode/javascript"],(function(t){e&&(e.exports=t)}))},252:(e,t,n)=>{e=n.nmd(e),ace.define("ace/mode/json_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],(function(e,t,n){"use strict";var i=e("../lib/oop"),o=e("./text_highlight_rules").TextHighlightRules,r=function(){this.$rules={start:[{token:"variable",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]\\s*(?=:)'},{token:"string",regex:'"',next:"string"},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:"constant.language.boolean",regex:"(?:true|false)\\b"},{token:"text",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:"comment",regex:"\\/\\/.*$"},{token:"comment.start",regex:"\\/\\*",next:"comment"},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"punctuation.operator",regex:/[,]/},{token:"text",regex:"\\s+"}],string:[{token:"constant.language.escape",regex:/\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|["\\\/bfnrt])/},{token:"string",regex:'"|$',next:"start"},{defaultToken:"string"}],comment:[{token:"comment.end",regex:"\\*\\/",next:"start"},{defaultToken:"comment"}]}};i.inherits(r,o),t.JsonHighlightRules=r})),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],(function(e,t,n){"use strict";var i=e("../range").Range,o=function(){};(function(){this.checkOutdent=function(e,t){return!!/^\s+$/.test(e)&&/^\s*\}/.test(t)},this.autoOutdent=function(e,t){var n=e.getLine(t).match(/^(\s*\})/);if(!n)return 0;var o=n[1].length,r=e.findMatchingBracket({row:t,column:o});if(!r||r.row==t)return 0;var s=this.$getIndent(e.getLine(r.row));e.replace(new i(t,0,t,o-1),s)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(o.prototype),t.MatchingBraceOutdent=o})),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],(function(e,t,n){"use strict";var i=e("../../lib/oop"),o=e("../../range").Range,r=e("./fold_mode").FoldMode,s=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};i.inherits(s,r),function(){this.foldingStartMarker=/([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var i=e.getLine(n);if(this.singleLineBlockCommentRe.test(i)&&!this.startRegionRe.test(i)&&!this.tripleStarBlockCommentRe.test(i))return"";var o=this._getFoldWidgetBase(e,t,n);return!o&&this.startRegionRe.test(i)?"start":o},this.getFoldWidgetRange=function(e,t,n,i){var o,r=e.getLine(n);if(this.startRegionRe.test(r))return this.getCommentRegionBlock(e,r,n);if(o=r.match(this.foldingStartMarker)){var s=o.index;if(o[1])return this.openingBracketBlock(e,o[1],n,s);var a=e.getCommentFoldRange(n,s+o[0].length,1);return a&&!a.isMultiLine()&&(i?a=this.getSectionRange(e,n):"all"!=t&&(a=null)),a}return"markbegin"!==t&&(o=r.match(this.foldingStopMarker))?(s=o.index+o[0].length,o[1]?this.closingBracketBlock(e,o[1],n,s):e.getCommentFoldRange(n,s,-1)):void 0},this.getSectionRange=function(e,t){for(var n=e.getLine(t),i=n.search(/\S/),r=t,s=n.length,a=t+=1,l=e.getLength();++tc)break;var u=this.getFoldWidgetRange(e,"all",t);if(u){if(u.start.row<=r)break;if(u.isMultiLine())t=u.end.row;else if(i==c)break}a=t}}return new o(r,s,a,e.getLine(a).length)},this.getCommentRegionBlock=function(e,t,n){for(var i=t.search(/\s*$/),r=e.getLength(),s=n,a=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,l=1;++ns)return new o(s,i,n,t.length)}}.call(s.prototype)})),ace.define("ace/mode/json",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/json_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/folding/cstyle","ace/worker/worker_client"],(function(e,t,n){"use strict";var i=e("../lib/oop"),o=e("./text").Mode,r=e("./json_highlight_rules").JsonHighlightRules,s=e("./matching_brace_outdent").MatchingBraceOutdent,a=e("./folding/cstyle").FoldMode,l=e("../worker/worker_client").WorkerClient,c=function(){this.HighlightRules=r,this.$outdent=new s,this.$behaviour=this.$defaultBehaviour,this.foldingRules=new a};i.inherits(c,o),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var i=this.$getIndent(t);return"start"==e&&t.match(/^.*[\{\(\[]\s*$/)&&(i+=n),i},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new l(["ace"],"ace/mode/json_worker","JsonWorker");return t.attachToDocument(e.getDocument()),t.on("annotate",(function(t){e.setAnnotations(t.data)})),t.on("terminate",(function(){e.clearAnnotations()})),t},this.$id="ace/mode/json"}.call(c.prototype),t.Mode=c})),ace.require(["ace/mode/json"],(function(t){e&&(e.exports=t)}))},711:(e,t,n)=>{e=n.nmd(e),ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],(function(e,t,n){"use strict";var i=e("../lib/oop"),o=e("./text_highlight_rules").TextHighlightRules,r=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@\\w+(?=\\s|$)"},r.getTagRule(),{defaultToken:"comment.doc",caseInsensitive:!0}]}};i.inherits(r,o),r.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},r.getStartRule=function(e){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:e}},r.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=r})),ace.define("ace/mode/jsx_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],(function(e,t,n){var i=e("../lib/oop"),o=e("../lib/lang"),r=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,a=function(){var e=o.arrayToMap("break|do|instanceof|typeof|case|else|new|var|catch|finally|return|void|continue|for|switch|default|while|function|this|if|throw|delete|in|try|class|extends|super|import|from|into|implements|interface|static|mixin|override|abstract|final|number|int|string|boolean|variant|log|assert".split("|")),t=o.arrayToMap("null|true|false|NaN|Infinity|__FILE__|__LINE__|undefined".split("|")),n=o.arrayToMap("debugger|with|const|export|let|private|public|yield|protected|extern|native|as|operator|__fake__|__readonly__".split("|")),i="[a-zA-Z_][a-zA-Z0-9_]*\\b";this.$rules={start:[{token:"comment",regex:"\\/\\/.*$"},r.getStartRule("doc-start"),{token:"comment",regex:"\\/\\*",next:"comment"},{token:"string.regexp",regex:"[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/]\\w*\\s*(?=[).,;]|$)"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:"constant.language.boolean",regex:"(?:true|false)\\b"},{token:["storage.type","text","entity.name.function"],regex:"(function)(\\s+)("+i+")"},{token:function(i){return"this"==i?"variable.language":"function"==i?"storage.type":e.hasOwnProperty(i)||n.hasOwnProperty(i)?"keyword":t.hasOwnProperty(i)?"constant.language":/^_?[A-Z][a-zA-Z0-9_]*$/.test(i)?"language.support.class":"identifier"},regex:i},{token:"keyword.operator",regex:"!|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|==|=|!=|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)"},{token:"punctuation.operator",regex:"\\?|\\:|\\,|\\;|\\."},{token:"paren.lparen",regex:"[[({<]"},{token:"paren.rparen",regex:"[\\])}>]"},{token:"text",regex:"\\s+"}],comment:[{token:"comment",regex:"\\*\\/",next:"start"},{defaultToken:"comment"}]},this.embedRules(r,"doc-",[r.getEndRule("start")])};i.inherits(a,s),t.JsxHighlightRules=a})),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],(function(e,t,n){"use strict";var i=e("../range").Range,o=function(){};(function(){this.checkOutdent=function(e,t){return!!/^\s+$/.test(e)&&/^\s*\}/.test(t)},this.autoOutdent=function(e,t){var n=e.getLine(t).match(/^(\s*\})/);if(!n)return 0;var o=n[1].length,r=e.findMatchingBracket({row:t,column:o});if(!r||r.row==t)return 0;var s=this.$getIndent(e.getLine(r.row));e.replace(new i(t,0,t,o-1),s)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(o.prototype),t.MatchingBraceOutdent=o})),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],(function(e,t,n){"use strict";var i=e("../../lib/oop"),o=e("../../range").Range,r=e("./fold_mode").FoldMode,s=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};i.inherits(s,r),function(){this.foldingStartMarker=/([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var i=e.getLine(n);if(this.singleLineBlockCommentRe.test(i)&&!this.startRegionRe.test(i)&&!this.tripleStarBlockCommentRe.test(i))return"";var o=this._getFoldWidgetBase(e,t,n);return!o&&this.startRegionRe.test(i)?"start":o},this.getFoldWidgetRange=function(e,t,n,i){var o,r=e.getLine(n);if(this.startRegionRe.test(r))return this.getCommentRegionBlock(e,r,n);if(o=r.match(this.foldingStartMarker)){var s=o.index;if(o[1])return this.openingBracketBlock(e,o[1],n,s);var a=e.getCommentFoldRange(n,s+o[0].length,1);return a&&!a.isMultiLine()&&(i?a=this.getSectionRange(e,n):"all"!=t&&(a=null)),a}return"markbegin"!==t&&(o=r.match(this.foldingStopMarker))?(s=o.index+o[0].length,o[1]?this.closingBracketBlock(e,o[1],n,s):e.getCommentFoldRange(n,s,-1)):void 0},this.getSectionRange=function(e,t){for(var n=e.getLine(t),i=n.search(/\S/),r=t,s=n.length,a=t+=1,l=e.getLength();++tc)break;var u=this.getFoldWidgetRange(e,"all",t);if(u){if(u.start.row<=r)break;if(u.isMultiLine())t=u.end.row;else if(i==c)break}a=t}}return new o(r,s,a,e.getLine(a).length)},this.getCommentRegionBlock=function(e,t,n){for(var i=t.search(/\s*$/),r=e.getLength(),s=n,a=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,l=1;++ns)return new o(s,i,n,t.length)}}.call(s.prototype)})),ace.define("ace/mode/jsx",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/jsx_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/folding/cstyle"],(function(e,t,n){"use strict";var i=e("../lib/oop"),o=e("./text").Mode,r=e("./jsx_highlight_rules").JsxHighlightRules,s=e("./matching_brace_outdent").MatchingBraceOutdent,a=e("./folding/cstyle").FoldMode;function l(){this.HighlightRules=r,this.$outdent=new s,this.$behaviour=this.$defaultBehaviour,this.foldingRules=new a}i.inherits(l,o),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var i=this.$getIndent(t),o=this.getTokenizer().getLineTokens(t,e).tokens;return o.length&&"comment"==o[o.length-1].type||"start"==e&&t.match(/^.*[\{\(\[]\s*$/)&&(i+=n),i},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.$id="ace/mode/jsx"}.call(l.prototype),t.Mode=l})),ace.require(["ace/mode/jsx"],(function(t){e&&(e.exports=t)}))},7:(e,t,n)=>{e=n.nmd(e),ace.define("ace/mode/python_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],(function(e,t,n){"use strict";var i=e("../lib/oop"),o=e("./text_highlight_rules").TextHighlightRules,r=function(){var e=this.createKeywordMapper({"invalid.deprecated":"debugger","support.function":"abs|divmod|input|open|staticmethod|all|enumerate|int|ord|str|any|eval|isinstance|pow|sum|basestring|execfile|issubclass|print|super|binfile|bin|iter|property|tuple|bool|filter|len|range|type|bytearray|float|list|raw_input|unichr|callable|format|locals|reduce|unicode|chr|frozenset|long|reload|vars|classmethod|getattr|map|repr|xrange|cmp|globals|max|reversed|zip|compile|hasattr|memoryview|round|__import__|complex|hash|min|apply|delattr|help|next|setattr|set|buffer|dict|hex|object|slice|coerce|dir|id|oct|sorted|intern|ascii|breakpoint|bytes","variable.language":"self|cls","constant.language":"True|False|None|NotImplemented|Ellipsis|__debug__",keyword:"and|as|assert|break|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|not|or|pass|print|raise|return|try|while|with|yield|async|await|nonlocal"},"identifier"),t="[uU]?",n="[rR]",i="[fF]",o="(?:[rR][fF]|[fF][rR])",r="(?:(?:(?:[1-9]\\d*)|(?:0))|(?:0[oO]?[0-7]+)|(?:0[xX][\\dA-Fa-f]+)|(?:0[bB][01]+))",s="(?:\\d+)",a="(?:(?:"+s+"?(?:\\.\\d+))|(?:"+s+"\\.))",l="(?:(?:(?:"+a+"|"+s+")(?:[eE][+-]?\\d+))|"+a+")",c="\\\\(x[0-9A-Fa-f]{2}|[0-7]{3}|[\\\\abfnrtv'\"]|U[0-9A-Fa-f]{8}|u[0-9A-Fa-f]{4})";this.$rules={start:[{token:"comment",regex:"#.*$"},{token:"string",regex:t+'"{3}',next:"qqstring3"},{token:"string",regex:t+'"(?=.)',next:"qqstring"},{token:"string",regex:t+"'{3}",next:"qstring3"},{token:"string",regex:t+"'(?=.)",next:"qstring"},{token:"string",regex:n+'"{3}',next:"rawqqstring3"},{token:"string",regex:n+'"(?=.)',next:"rawqqstring"},{token:"string",regex:n+"'{3}",next:"rawqstring3"},{token:"string",regex:n+"'(?=.)",next:"rawqstring"},{token:"string",regex:i+'"{3}',next:"fqqstring3"},{token:"string",regex:i+'"(?=.)',next:"fqqstring"},{token:"string",regex:i+"'{3}",next:"fqstring3"},{token:"string",regex:i+"'(?=.)",next:"fqstring"},{token:"string",regex:o+'"{3}',next:"rfqqstring3"},{token:"string",regex:o+'"(?=.)',next:"rfqqstring"},{token:"string",regex:o+"'{3}",next:"rfqstring3"},{token:"string",regex:o+"'(?=.)",next:"rfqstring"},{token:"keyword.operator",regex:"\\+|\\-|\\*|\\*\\*|\\/|\\/\\/|%|@|<<|>>|&|\\||\\^|~|<|>|<=|=>|==|!=|<>|="},{token:"punctuation",regex:",|:|;|\\->|\\+=|\\-=|\\*=|\\/=|\\/\\/=|%=|@=|&=|\\|=|^=|>>=|<<=|\\*\\*="},{token:"paren.lparen",regex:"[\\[\\(\\{]"},{token:"paren.rparen",regex:"[\\]\\)\\}]"},{token:["keyword","text","entity.name.function"],regex:"(def|class)(\\s+)([\\u00BF-\\u1FFF\\u2C00-\\uD7FF\\w]+)"},{token:"text",regex:"\\s+"},{include:"constants"}],qqstring3:[{token:"constant.language.escape",regex:c},{token:"string",regex:'"{3}',next:"start"},{defaultToken:"string"}],qstring3:[{token:"constant.language.escape",regex:c},{token:"string",regex:"'{3}",next:"start"},{defaultToken:"string"}],qqstring:[{token:"constant.language.escape",regex:c},{token:"string",regex:"\\\\$",next:"qqstring"},{token:"string",regex:'"|$',next:"start"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:c},{token:"string",regex:"\\\\$",next:"qstring"},{token:"string",regex:"'|$",next:"start"},{defaultToken:"string"}],rawqqstring3:[{token:"string",regex:'"{3}',next:"start"},{defaultToken:"string"}],rawqstring3:[{token:"string",regex:"'{3}",next:"start"},{defaultToken:"string"}],rawqqstring:[{token:"string",regex:"\\\\$",next:"rawqqstring"},{token:"string",regex:'"|$',next:"start"},{defaultToken:"string"}],rawqstring:[{token:"string",regex:"\\\\$",next:"rawqstring"},{token:"string",regex:"'|$",next:"start"},{defaultToken:"string"}],fqqstring3:[{token:"constant.language.escape",regex:c},{token:"string",regex:'"{3}',next:"start"},{token:"paren.lparen",regex:"{",push:"fqstringParRules"},{defaultToken:"string"}],fqstring3:[{token:"constant.language.escape",regex:c},{token:"string",regex:"'{3}",next:"start"},{token:"paren.lparen",regex:"{",push:"fqstringParRules"},{defaultToken:"string"}],fqqstring:[{token:"constant.language.escape",regex:c},{token:"string",regex:"\\\\$",next:"fqqstring"},{token:"string",regex:'"|$',next:"start"},{token:"paren.lparen",regex:"{",push:"fqstringParRules"},{defaultToken:"string"}],fqstring:[{token:"constant.language.escape",regex:c},{token:"string",regex:"'|$",next:"start"},{token:"paren.lparen",regex:"{",push:"fqstringParRules"},{defaultToken:"string"}],rfqqstring3:[{token:"string",regex:'"{3}',next:"start"},{token:"paren.lparen",regex:"{",push:"fqstringParRules"},{defaultToken:"string"}],rfqstring3:[{token:"string",regex:"'{3}",next:"start"},{token:"paren.lparen",regex:"{",push:"fqstringParRules"},{defaultToken:"string"}],rfqqstring:[{token:"string",regex:"\\\\$",next:"rfqqstring"},{token:"string",regex:'"|$',next:"start"},{token:"paren.lparen",regex:"{",push:"fqstringParRules"},{defaultToken:"string"}],rfqstring:[{token:"string",regex:"'|$",next:"start"},{token:"paren.lparen",regex:"{",push:"fqstringParRules"},{defaultToken:"string"}],fqstringParRules:[{token:"paren.lparen",regex:"[\\[\\(]"},{token:"paren.rparen",regex:"[\\]\\)]"},{token:"string",regex:"\\s+"},{token:"string",regex:"'[^']*'"},{token:"string",regex:'"[^"]*"'},{token:"function.support",regex:"(!s|!r|!a)"},{include:"constants"},{token:"paren.rparen",regex:"}",next:"pop"},{token:"paren.lparen",regex:"{",push:"fqstringParRules"}],constants:[{token:"constant.numeric",regex:"(?:"+l+"|\\d+)[jJ]\\b"},{token:"constant.numeric",regex:l},{token:"constant.numeric",regex:r+"[lL]\\b"},{token:"constant.numeric",regex:r+"\\b"},{token:["punctuation","function.support"],regex:"(\\.)([a-zA-Z_]+)\\b"},{token:e,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"}]},this.normalizeRules()};i.inherits(r,o),t.PythonHighlightRules=r})),ace.define("ace/mode/folding/pythonic",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode"],(function(e,t,n){"use strict";var i=e("../../lib/oop"),o=e("./fold_mode").FoldMode,r=t.FoldMode=function(e){this.foldingStartMarker=new RegExp("([\\[{])(?:\\s*)$|("+e+")(?:\\s*)(?:#.*)?$")};i.inherits(r,o),function(){this.getFoldWidgetRange=function(e,t,n){var i=e.getLine(n).match(this.foldingStartMarker);if(i)return i[1]?this.openingBracketBlock(e,i[1],n,i.index):i[2]?this.indentationBlock(e,n,i.index+i[2].length):this.indentationBlock(e,n)}}.call(r.prototype)})),ace.define("ace/mode/python",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/python_highlight_rules","ace/mode/folding/pythonic","ace/range"],(function(e,t,n){"use strict";var i=e("../lib/oop"),o=e("./text").Mode,r=e("./python_highlight_rules").PythonHighlightRules,s=e("./folding/pythonic").FoldMode,a=e("../range").Range,l=function(){this.HighlightRules=r,this.foldingRules=new s("\\:"),this.$behaviour=this.$defaultBehaviour};i.inherits(l,o),function(){this.lineCommentStart="#",this.$pairQuotesAfter={"'":/[ruf]/i,'"':/[ruf]/i},this.getNextLineIndent=function(e,t,n){var i=this.$getIndent(t),o=this.getTokenizer().getLineTokens(t,e).tokens;return o.length&&"comment"==o[o.length-1].type||"start"==e&&t.match(/^.*[\{\(\[:]\s*$/)&&(i+=n),i};var e={pass:1,return:1,raise:1,break:1,continue:1};this.checkOutdent=function(t,n,i){if("\r\n"!==i&&"\r"!==i&&"\n"!==i)return!1;var o=this.getTokenizer().getLineTokens(n.trim(),t).tokens;if(!o)return!1;do{var r=o.pop()}while(r&&("comment"==r.type||"text"==r.type&&r.value.match(/^\s+$/)));return!!r&&"keyword"==r.type&&e[r.value]},this.autoOutdent=function(e,t,n){n+=1;var i=this.$getIndent(t.getLine(n)),o=t.getTabString();i.slice(-o.length)==o&&t.remove(new a(n,i.length-o.length,n,i.length))},this.$id="ace/mode/python",this.snippetFileId="ace/snippets/python"}.call(l.prototype),t.Mode=l})),ace.require(["ace/mode/python"],(function(t){e&&(e.exports=t)}))},202:(e,t,n)=>{e=n.nmd(e),ace.define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],(function(e,t,n){"use strict";var i=e("../lib/oop"),o=e("./text_highlight_rules").TextHighlightRules,r=function(e){var t="[_:a-zA-ZÀ-￿][-_:.a-zA-Z0-9À-￿]*";this.$rules={start:[{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\[",next:"cdata"},{token:["punctuation.instruction.xml","keyword.instruction.xml"],regex:"(<\\?)("+t+")",next:"processing_instruction"},{token:"comment.start.xml",regex:"<\\!--",next:"comment"},{token:["xml-pe.doctype.xml","xml-pe.doctype.xml"],regex:"(<\\!)(DOCTYPE)(?=[\\s])",next:"doctype",caseInsensitive:!0},{include:"tag"},{token:"text.end-tag-open.xml",regex:"",next:"start"}],doctype:[{include:"whitespace"},{include:"string"},{token:"xml-pe.doctype.xml",regex:">",next:"start"},{token:"xml-pe.xml",regex:"[-_a-zA-Z0-9:]+"},{token:"punctuation.int-subset",regex:"\\[",push:"int_subset"}],int_subset:[{token:"text.xml",regex:"\\s+"},{token:"punctuation.int-subset.xml",regex:"]",next:"pop"},{token:["punctuation.markup-decl.xml","keyword.markup-decl.xml"],regex:"(<\\!)("+t+")",push:[{token:"text",regex:"\\s+"},{token:"punctuation.markup-decl.xml",regex:">",next:"pop"},{include:"string"}]}],cdata:[{token:"string.cdata.xml",regex:"\\]\\]>",next:"start"},{token:"text.xml",regex:"\\s+"},{token:"text.xml",regex:"(?:[^\\]]|\\](?!\\]>))+"}],comment:[{token:"comment.end.xml",regex:"--\x3e",next:"start"},{defaultToken:"comment.xml"}],reference:[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],attr_reference:[{token:"constant.language.escape.reference.attribute-value.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],tag:[{token:["meta.tag.punctuation.tag-open.xml","meta.tag.punctuation.end-tag-open.xml","meta.tag.tag-name.xml"],regex:"(?:(<)|(",next:"start"}]}],tag_whitespace:[{token:"text.tag-whitespace.xml",regex:"\\s+"}],whitespace:[{token:"text.whitespace.xml",regex:"\\s+"}],string:[{token:"string.xml",regex:"'",push:[{token:"string.xml",regex:"'",next:"pop"},{defaultToken:"string.xml"}]},{token:"string.xml",regex:'"',push:[{token:"string.xml",regex:'"',next:"pop"},{defaultToken:"string.xml"}]}],attributes:[{token:"entity.other.attribute-name.xml",regex:t},{token:"keyword.operator.attribute-equals.xml",regex:"="},{include:"tag_whitespace"},{include:"attribute_value"}],attribute_value:[{token:"string.attribute-value.xml",regex:"'",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]}]},this.constructor===r&&this.normalizeRules()};(function(){this.embedTagRules=function(e,t,n){this.$rules.tag.unshift({token:["meta.tag.punctuation.tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(<)("+n+"(?=\\s|>|$))",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:t+"start"}]}),this.$rules[n+"-end"]=[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start",onMatch:function(e,t,n){return n.splice(0),this.token}}],this.embedRules(e,t,[{token:["meta.tag.punctuation.end-tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(|$))",next:n+"-end"},{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\["},{token:"string.cdata.xml",regex:"\\]\\]>"}])}}).call(o.prototype),i.inherits(r,o),t.XmlHighlightRules=r})),ace.define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],(function(e,t,n){"use strict";var i=e("../../lib/oop"),o=e("../behaviour").Behaviour,r=e("../../token_iterator").TokenIterator;function s(e,t){return e&&e.type.lastIndexOf(t+".xml")>-1}e("../../lib/lang");var a=function(){this.add("string_dquotes","insertion",(function(e,t,n,i,o){if('"'==o||"'"==o){var a=o,l=i.doc.getTextRange(n.getSelectionRange());if(""!==l&&"'"!==l&&'"'!=l&&n.getWrapBehavioursEnabled())return{text:a+l+a,selection:!1};var c=n.getCursorPosition(),u=i.doc.getLine(c.row).substring(c.column,c.column+1),h=new r(i,c.row,c.column),d=h.getCurrentToken();if(u==a&&(s(d,"attribute-value")||s(d,"string")))return{text:"",selection:[1,1]};if(d||(d=h.stepBackward()),!d)return;for(;s(d,"tag-whitespace")||s(d,"whitespace");)d=h.stepBackward();var p=!u||u.match(/\s/);if(s(d,"attribute-equals")&&(p||">"==u)||s(d,"decl-attribute-equals")&&(p||"?"==u))return{text:a+a,selection:[1,1]}}})),this.add("string_dquotes","deletion",(function(e,t,n,i,o){var r=i.doc.getTextRange(o);if(!o.isMultiLine()&&('"'==r||"'"==r)&&i.doc.getLine(o.start.row).substring(o.start.column+1,o.start.column+2)==r)return o.end.column++,o})),this.add("autoclosing","insertion",(function(e,t,n,i,o){if(">"==o){var a=n.getSelectionRange().start,l=new r(i,a.row,a.column),c=l.getCurrentToken()||l.stepBackward();if(!c||!(s(c,"tag-name")||s(c,"tag-whitespace")||s(c,"attribute-name")||s(c,"attribute-equals")||s(c,"attribute-value")))return;if(s(c,"reference.attribute-value"))return;if(s(c,"attribute-value")){var u=l.getCurrentTokenColumn()+c.value.length;if(a.column/.test(i.getLine(a.row).slice(a.column)))return;for(;!s(c,"tag-name");)if("<"==(c=l.stepBackward()).value){c=l.stepForward();break}var d=l.getCurrentTokenRow(),p=l.getCurrentTokenColumn();if(s(l.stepBackward(),"end-tag-open"))return;var g=c.value;if(d==a.row&&(g=g.substring(0,a.column-p)),this.voidElements.hasOwnProperty(g.toLowerCase()))return;return{text:">",selection:[1,1]}}})),this.add("autoindent","insertion",(function(e,t,n,i,o){if("\n"==o){var s=n.getCursorPosition(),a=i.getLine(s.row),l=new r(i,s.row,s.column),c=l.getCurrentToken();if(c&&-1!==c.type.indexOf("tag-close")){if("/>"==c.value)return;for(;c&&-1===c.type.indexOf("tag-name");)c=l.stepBackward();if(!c)return;var u=c.value,h=l.getCurrentTokenRow();if(!(c=l.stepBackward())||-1!==c.type.indexOf("end-tag"))return;if(this.voidElements&&!this.voidElements[u]){var d=i.getTokenAt(s.row,s.column+1),p=(a=i.getLine(h),this.$getIndent(a)),g=p+i.getTabString();return d&&"-1}(function(){this.getFoldWidget=function(e,t,n){var i=this._getFirstTagInLine(e,n);return i?i.closing||!i.tagName&&i.selfClosing?"markbeginend"===t?"end":"":!i.tagName||i.selfClosing||this.voidElements.hasOwnProperty(i.tagName.toLowerCase())||this._findEndTagInLine(e,n,i.tagName,i.end.column)?"":"start":this.getCommentFoldWidget(e,n)},this.getCommentFoldWidget=function(e,t){return/comment/.test(e.getState(t))&&/"==r.value;break}return i}if(l(r,"tag-close"))return i.selfClosing="/>"==r.value,i;i.start.column+=r.value.length}return null},this._findEndTagInLine=function(e,t,n,i){for(var o=e.getTokens(t),r=0,s=0;s{e=n.nmd(e),ace.define("ace/theme/github-css",["require","exports","module"],(function(e,t,n){n.exports='/* CSS style content from github\'s default pygments highlighter template.\n Cursor and selection styles from textmate.css. */\n.ace-github .ace_gutter {\n background: #e8e8e8;\n color: #AAA;\n}\n\n.ace-github {\n background: #fff;\n color: #000;\n}\n\n.ace-github .ace_keyword {\n font-weight: bold;\n}\n\n.ace-github .ace_string {\n color: #D14;\n}\n\n.ace-github .ace_variable.ace_class {\n color: teal;\n}\n\n.ace-github .ace_constant.ace_numeric {\n color: #099;\n}\n\n.ace-github .ace_constant.ace_buildin {\n color: #0086B3;\n}\n\n.ace-github .ace_support.ace_function {\n color: #0086B3;\n}\n\n.ace-github .ace_comment {\n color: #998;\n font-style: italic;\n}\n\n.ace-github .ace_variable.ace_language {\n color: #0086B3;\n}\n\n.ace-github .ace_paren {\n font-weight: bold;\n}\n\n.ace-github .ace_boolean {\n font-weight: bold;\n}\n\n.ace-github .ace_string.ace_regexp {\n color: #009926;\n font-weight: normal;\n}\n\n.ace-github .ace_variable.ace_instance {\n color: teal;\n}\n\n.ace-github .ace_constant.ace_language {\n font-weight: bold;\n}\n\n.ace-github .ace_cursor {\n color: black;\n}\n\n.ace-github.ace_focus .ace_marker-layer .ace_active-line {\n background: rgb(255, 255, 204);\n}\n.ace-github .ace_marker-layer .ace_active-line {\n background: rgb(245, 245, 245);\n}\n\n.ace-github .ace_marker-layer .ace_selection {\n background: rgb(181, 213, 255);\n}\n\n.ace-github.ace_multiselect .ace_selection.ace_start {\n box-shadow: 0 0 3px 0px white;\n}\n/* bold keywords cause cursor issues for some fonts */\n/* this disables bold style for editor and keeps for static highlighter */\n.ace-github.ace_nobold .ace_line > span {\n font-weight: normal !important;\n}\n\n.ace-github .ace_marker-layer .ace_step {\n background: rgb(252, 255, 0);\n}\n\n.ace-github .ace_marker-layer .ace_stack {\n background: rgb(164, 229, 101);\n}\n\n.ace-github .ace_marker-layer .ace_bracket {\n margin: -1px 0 0 -1px;\n border: 1px solid rgb(192, 192, 192);\n}\n\n.ace-github .ace_gutter-active-line {\n background-color : rgba(0, 0, 0, 0.07);\n}\n\n.ace-github .ace_marker-layer .ace_selected-word {\n background: rgb(250, 250, 255);\n border: 1px solid rgb(200, 200, 250);\n}\n\n.ace-github .ace_invisible {\n color: #BFBFBF\n}\n\n.ace-github .ace_print-margin {\n width: 1px;\n background: #e8e8e8;\n}\n\n.ace-github .ace_indent-guide {\n background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y;\n}\n\n.ace-github .ace_indent-guide-active {\n background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAAZSURBVHjaYvj///9/hivKyv8BAAAA//8DACLqBhbvk+/eAAAAAElFTkSuQmCC") right repeat-y;\n}\n'})),ace.define("ace/theme/github",["require","exports","module","ace/theme/github-css","ace/lib/dom"],(function(e,t,n){t.isDark=!1,t.cssClass="ace-github",t.cssText=e("./github-css"),e("../lib/dom").importCssString(t.cssText,t.cssClass,!1)})),ace.require(["ace/theme/github"],(function(t){e&&(e.exports=t)}))},821:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});var i=n(537),o=n.n(i),r=n(645),s=n.n(r)()(o());s.push([e.id,'.flatpickr-calendar{background:transparent;opacity:0;display:none;text-align:center;visibility:hidden;padding:0;-webkit-animation:none;animation:none;direction:ltr;border:0;font-size:14px;line-height:24px;border-radius:5px;position:absolute;width:307.875px;-webkit-box-sizing:border-box;box-sizing:border-box;-ms-touch-action:manipulation;touch-action:manipulation;background:#fff;-webkit-box-shadow:1px 0 0 #e6e6e6,-1px 0 0 #e6e6e6,0 1px 0 #e6e6e6,0 -1px 0 #e6e6e6,0 3px 13px rgba(0,0,0,0.08);box-shadow:1px 0 0 #e6e6e6,-1px 0 0 #e6e6e6,0 1px 0 #e6e6e6,0 -1px 0 #e6e6e6,0 3px 13px rgba(0,0,0,0.08)}.flatpickr-calendar.open,.flatpickr-calendar.inline{opacity:1;max-height:640px;visibility:visible}.flatpickr-calendar.open{display:inline-block;z-index:99999}.flatpickr-calendar.animate.open{-webkit-animation:fpFadeInDown 300ms cubic-bezier(.23,1,.32,1);animation:fpFadeInDown 300ms cubic-bezier(.23,1,.32,1)}.flatpickr-calendar.inline{display:block;position:relative;top:2px}.flatpickr-calendar.static{position:absolute;top:calc(100% + 2px)}.flatpickr-calendar.static.open{z-index:999;display:block}.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+1) .flatpickr-day.inRange:nth-child(7n+7){-webkit-box-shadow:none !important;box-shadow:none !important}.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+2) .flatpickr-day.inRange:nth-child(7n+1){-webkit-box-shadow:-2px 0 0 #e6e6e6,5px 0 0 #e6e6e6;box-shadow:-2px 0 0 #e6e6e6,5px 0 0 #e6e6e6}.flatpickr-calendar .hasWeeks .dayContainer,.flatpickr-calendar .hasTime .dayContainer{border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.flatpickr-calendar .hasWeeks .dayContainer{border-left:0}.flatpickr-calendar.hasTime .flatpickr-time{height:40px;border-top:1px solid #e6e6e6}.flatpickr-calendar.noCalendar.hasTime .flatpickr-time{height:auto}.flatpickr-calendar:before,.flatpickr-calendar:after{position:absolute;display:block;pointer-events:none;border:solid transparent;content:\'\';height:0;width:0;left:22px}.flatpickr-calendar.rightMost:before,.flatpickr-calendar.arrowRight:before,.flatpickr-calendar.rightMost:after,.flatpickr-calendar.arrowRight:after{left:auto;right:22px}.flatpickr-calendar.arrowCenter:before,.flatpickr-calendar.arrowCenter:after{left:50%;right:50%}.flatpickr-calendar:before{border-width:5px;margin:0 -5px}.flatpickr-calendar:after{border-width:4px;margin:0 -4px}.flatpickr-calendar.arrowTop:before,.flatpickr-calendar.arrowTop:after{bottom:100%}.flatpickr-calendar.arrowTop:before{border-bottom-color:#e6e6e6}.flatpickr-calendar.arrowTop:after{border-bottom-color:#fff}.flatpickr-calendar.arrowBottom:before,.flatpickr-calendar.arrowBottom:after{top:100%}.flatpickr-calendar.arrowBottom:before{border-top-color:#e6e6e6}.flatpickr-calendar.arrowBottom:after{border-top-color:#fff}.flatpickr-calendar:focus{outline:0}.flatpickr-wrapper{position:relative;display:inline-block}.flatpickr-months{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.flatpickr-months .flatpickr-month{background:transparent;color:rgba(0,0,0,0.9);fill:rgba(0,0,0,0.9);height:34px;line-height:1;text-align:center;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:hidden;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}.flatpickr-months .flatpickr-prev-month,.flatpickr-months .flatpickr-next-month{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;text-decoration:none;cursor:pointer;position:absolute;top:0;height:34px;padding:10px;z-index:3;color:rgba(0,0,0,0.9);fill:rgba(0,0,0,0.9)}.flatpickr-months .flatpickr-prev-month.flatpickr-disabled,.flatpickr-months .flatpickr-next-month.flatpickr-disabled{display:none}.flatpickr-months .flatpickr-prev-month i,.flatpickr-months .flatpickr-next-month i{position:relative}.flatpickr-months .flatpickr-prev-month.flatpickr-prev-month,.flatpickr-months .flatpickr-next-month.flatpickr-prev-month{/*\n /*rtl:begin:ignore*/left:0/*\n /*rtl:end:ignore*/}/*\n /*rtl:begin:ignore*/\n/*\n /*rtl:end:ignore*/\n.flatpickr-months .flatpickr-prev-month.flatpickr-next-month,.flatpickr-months .flatpickr-next-month.flatpickr-next-month{/*\n /*rtl:begin:ignore*/right:0/*\n /*rtl:end:ignore*/}/*\n /*rtl:begin:ignore*/\n/*\n /*rtl:end:ignore*/\n.flatpickr-months .flatpickr-prev-month:hover,.flatpickr-months .flatpickr-next-month:hover{color:#959ea9}.flatpickr-months .flatpickr-prev-month:hover svg,.flatpickr-months .flatpickr-next-month:hover svg{fill:#f64747}.flatpickr-months .flatpickr-prev-month svg,.flatpickr-months .flatpickr-next-month svg{width:14px;height:14px}.flatpickr-months .flatpickr-prev-month svg path,.flatpickr-months .flatpickr-next-month svg path{-webkit-transition:fill .1s;transition:fill .1s;fill:inherit}.numInputWrapper{position:relative;height:auto}.numInputWrapper input,.numInputWrapper span{display:inline-block}.numInputWrapper input{width:100%}.numInputWrapper input::-ms-clear{display:none}.numInputWrapper input::-webkit-outer-spin-button,.numInputWrapper input::-webkit-inner-spin-button{margin:0;-webkit-appearance:none}.numInputWrapper span{position:absolute;right:0;width:14px;padding:0 4px 0 2px;height:50%;line-height:50%;opacity:0;cursor:pointer;border:1px solid rgba(57,57,57,0.15);-webkit-box-sizing:border-box;box-sizing:border-box}.numInputWrapper span:hover{background:rgba(0,0,0,0.1)}.numInputWrapper span:active{background:rgba(0,0,0,0.2)}.numInputWrapper span:after{display:block;content:"";position:absolute}.numInputWrapper span.arrowUp{top:0;border-bottom:0}.numInputWrapper span.arrowUp:after{border-left:4px solid transparent;border-right:4px solid transparent;border-bottom:4px solid rgba(57,57,57,0.6);top:26%}.numInputWrapper span.arrowDown{top:50%}.numInputWrapper span.arrowDown:after{border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px solid rgba(57,57,57,0.6);top:40%}.numInputWrapper span svg{width:inherit;height:auto}.numInputWrapper span svg path{fill:rgba(0,0,0,0.5)}.numInputWrapper:hover{background:rgba(0,0,0,0.05)}.numInputWrapper:hover span{opacity:1}.flatpickr-current-month{font-size:135%;line-height:inherit;font-weight:300;color:inherit;position:absolute;width:75%;left:12.5%;padding:7.48px 0 0 0;line-height:1;height:34px;display:inline-block;text-align:center;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.flatpickr-current-month span.cur-month{font-family:inherit;font-weight:700;color:inherit;display:inline-block;margin-left:.5ch;padding:0}.flatpickr-current-month span.cur-month:hover{background:rgba(0,0,0,0.05)}.flatpickr-current-month .numInputWrapper{width:6ch;width:7ch\\0;display:inline-block}.flatpickr-current-month .numInputWrapper span.arrowUp:after{border-bottom-color:rgba(0,0,0,0.9)}.flatpickr-current-month .numInputWrapper span.arrowDown:after{border-top-color:rgba(0,0,0,0.9)}.flatpickr-current-month input.cur-year{background:transparent;-webkit-box-sizing:border-box;box-sizing:border-box;color:inherit;cursor:text;padding:0 0 0 .5ch;margin:0;display:inline-block;font-size:inherit;font-family:inherit;font-weight:300;line-height:inherit;height:auto;border:0;border-radius:0;vertical-align:initial;-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.flatpickr-current-month input.cur-year:focus{outline:0}.flatpickr-current-month input.cur-year[disabled],.flatpickr-current-month input.cur-year[disabled]:hover{font-size:100%;color:rgba(0,0,0,0.5);background:transparent;pointer-events:none}.flatpickr-current-month .flatpickr-monthDropdown-months{appearance:menulist;background:transparent;border:none;border-radius:0;box-sizing:border-box;color:inherit;cursor:pointer;font-size:inherit;font-family:inherit;font-weight:300;height:auto;line-height:inherit;margin:-1px 0 0 0;outline:none;padding:0 0 0 .5ch;position:relative;vertical-align:initial;-webkit-box-sizing:border-box;-webkit-appearance:menulist;-moz-appearance:menulist;width:auto}.flatpickr-current-month .flatpickr-monthDropdown-months:focus,.flatpickr-current-month .flatpickr-monthDropdown-months:active{outline:none}.flatpickr-current-month .flatpickr-monthDropdown-months:hover{background:rgba(0,0,0,0.05)}.flatpickr-current-month .flatpickr-monthDropdown-months .flatpickr-monthDropdown-month{background-color:transparent;outline:none;padding:0}.flatpickr-weekdays{background:transparent;text-align:center;overflow:hidden;width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;height:28px}.flatpickr-weekdays .flatpickr-weekdaycontainer{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}span.flatpickr-weekday{cursor:default;font-size:90%;background:transparent;color:rgba(0,0,0,0.54);line-height:1;margin:0;text-align:center;display:block;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;font-weight:bolder}.dayContainer,.flatpickr-weeks{padding:1px 0 0 0}.flatpickr-days{position:relative;overflow:hidden;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:flex-start;width:307.875px}.flatpickr-days:focus{outline:0}.dayContainer{padding:0;outline:0;text-align:left;width:307.875px;min-width:307.875px;max-width:307.875px;-webkit-box-sizing:border-box;box-sizing:border-box;display:inline-block;display:-ms-flexbox;display:-webkit-box;display:-webkit-flex;display:flex;-webkit-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-wrap:wrap;-ms-flex-pack:justify;-webkit-justify-content:space-around;justify-content:space-around;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}.dayContainer + .dayContainer{-webkit-box-shadow:-1px 0 0 #e6e6e6;box-shadow:-1px 0 0 #e6e6e6}.flatpickr-day{background:none;border:1px solid transparent;border-radius:150px;-webkit-box-sizing:border-box;box-sizing:border-box;color:#393939;cursor:pointer;font-weight:400;width:14.2857143%;-webkit-flex-basis:14.2857143%;-ms-flex-preferred-size:14.2857143%;flex-basis:14.2857143%;max-width:39px;height:39px;line-height:39px;margin:0;display:inline-block;position:relative;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;text-align:center}.flatpickr-day.inRange,.flatpickr-day.prevMonthDay.inRange,.flatpickr-day.nextMonthDay.inRange,.flatpickr-day.today.inRange,.flatpickr-day.prevMonthDay.today.inRange,.flatpickr-day.nextMonthDay.today.inRange,.flatpickr-day:hover,.flatpickr-day.prevMonthDay:hover,.flatpickr-day.nextMonthDay:hover,.flatpickr-day:focus,.flatpickr-day.prevMonthDay:focus,.flatpickr-day.nextMonthDay:focus{cursor:pointer;outline:0;background:#e6e6e6;border-color:#e6e6e6}.flatpickr-day.today{border-color:#959ea9}.flatpickr-day.today:hover,.flatpickr-day.today:focus{border-color:#959ea9;background:#959ea9;color:#fff}.flatpickr-day.selected,.flatpickr-day.startRange,.flatpickr-day.endRange,.flatpickr-day.selected.inRange,.flatpickr-day.startRange.inRange,.flatpickr-day.endRange.inRange,.flatpickr-day.selected:focus,.flatpickr-day.startRange:focus,.flatpickr-day.endRange:focus,.flatpickr-day.selected:hover,.flatpickr-day.startRange:hover,.flatpickr-day.endRange:hover,.flatpickr-day.selected.prevMonthDay,.flatpickr-day.startRange.prevMonthDay,.flatpickr-day.endRange.prevMonthDay,.flatpickr-day.selected.nextMonthDay,.flatpickr-day.startRange.nextMonthDay,.flatpickr-day.endRange.nextMonthDay{background:#569ff7;-webkit-box-shadow:none;box-shadow:none;color:#fff;border-color:#569ff7}.flatpickr-day.selected.startRange,.flatpickr-day.startRange.startRange,.flatpickr-day.endRange.startRange{border-radius:50px 0 0 50px}.flatpickr-day.selected.endRange,.flatpickr-day.startRange.endRange,.flatpickr-day.endRange.endRange{border-radius:0 50px 50px 0}.flatpickr-day.selected.startRange + .endRange:not(:nth-child(7n+1)),.flatpickr-day.startRange.startRange + .endRange:not(:nth-child(7n+1)),.flatpickr-day.endRange.startRange + .endRange:not(:nth-child(7n+1)){-webkit-box-shadow:-10px 0 0 #569ff7;box-shadow:-10px 0 0 #569ff7}.flatpickr-day.selected.startRange.endRange,.flatpickr-day.startRange.startRange.endRange,.flatpickr-day.endRange.startRange.endRange{border-radius:50px}.flatpickr-day.inRange{border-radius:0;-webkit-box-shadow:-5px 0 0 #e6e6e6,5px 0 0 #e6e6e6;box-shadow:-5px 0 0 #e6e6e6,5px 0 0 #e6e6e6}.flatpickr-day.flatpickr-disabled,.flatpickr-day.flatpickr-disabled:hover,.flatpickr-day.prevMonthDay,.flatpickr-day.nextMonthDay,.flatpickr-day.notAllowed,.flatpickr-day.notAllowed.prevMonthDay,.flatpickr-day.notAllowed.nextMonthDay{color:rgba(57,57,57,0.3);background:transparent;border-color:transparent;cursor:default}.flatpickr-day.flatpickr-disabled,.flatpickr-day.flatpickr-disabled:hover{cursor:not-allowed;color:rgba(57,57,57,0.1)}.flatpickr-day.week.selected{border-radius:0;-webkit-box-shadow:-5px 0 0 #569ff7,5px 0 0 #569ff7;box-shadow:-5px 0 0 #569ff7,5px 0 0 #569ff7}.flatpickr-day.hidden{visibility:hidden}.rangeMode .flatpickr-day{margin-top:1px}.flatpickr-weekwrapper{float:left}.flatpickr-weekwrapper .flatpickr-weeks{padding:0 12px;-webkit-box-shadow:1px 0 0 #e6e6e6;box-shadow:1px 0 0 #e6e6e6}.flatpickr-weekwrapper .flatpickr-weekday{float:none;width:100%;line-height:28px}.flatpickr-weekwrapper span.flatpickr-day,.flatpickr-weekwrapper span.flatpickr-day:hover{display:block;width:100%;max-width:none;color:rgba(57,57,57,0.3);background:transparent;cursor:default;border:none}.flatpickr-innerContainer{display:block;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden}.flatpickr-rContainer{display:inline-block;padding:0;-webkit-box-sizing:border-box;box-sizing:border-box}.flatpickr-time{text-align:center;outline:0;display:block;height:0;line-height:40px;max-height:40px;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.flatpickr-time:after{content:"";display:table;clear:both}.flatpickr-time .numInputWrapper{-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;width:40%;height:40px;float:left}.flatpickr-time .numInputWrapper span.arrowUp:after{border-bottom-color:#393939}.flatpickr-time .numInputWrapper span.arrowDown:after{border-top-color:#393939}.flatpickr-time.hasSeconds .numInputWrapper{width:26%}.flatpickr-time.time24hr .numInputWrapper{width:49%}.flatpickr-time input{background:transparent;-webkit-box-shadow:none;box-shadow:none;border:0;border-radius:0;text-align:center;margin:0;padding:0;height:inherit;line-height:inherit;color:#393939;font-size:14px;position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.flatpickr-time input.flatpickr-hour{font-weight:bold}.flatpickr-time input.flatpickr-minute,.flatpickr-time input.flatpickr-second{font-weight:400}.flatpickr-time input:focus{outline:0;border:0}.flatpickr-time .flatpickr-time-separator,.flatpickr-time .flatpickr-am-pm{height:inherit;float:left;line-height:inherit;color:#393939;font-weight:bold;width:2%;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-align-self:center;-ms-flex-item-align:center;align-self:center}.flatpickr-time .flatpickr-am-pm{outline:0;width:18%;cursor:pointer;text-align:center;font-weight:400}.flatpickr-time input:hover,.flatpickr-time .flatpickr-am-pm:hover,.flatpickr-time input:focus,.flatpickr-time .flatpickr-am-pm:focus{background:#eee}.flatpickr-input[readonly]{cursor:pointer}@-webkit-keyframes fpFadeInDown{from{opacity:0;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@keyframes fpFadeInDown{from{opacity:0;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}',"",{version:3,sources:["webpack://./node_modules/flatpickr/dist/flatpickr.min.css"],names:[],mappings:"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",sourcesContent:['.flatpickr-calendar{background:transparent;opacity:0;display:none;text-align:center;visibility:hidden;padding:0;-webkit-animation:none;animation:none;direction:ltr;border:0;font-size:14px;line-height:24px;border-radius:5px;position:absolute;width:307.875px;-webkit-box-sizing:border-box;box-sizing:border-box;-ms-touch-action:manipulation;touch-action:manipulation;background:#fff;-webkit-box-shadow:1px 0 0 #e6e6e6,-1px 0 0 #e6e6e6,0 1px 0 #e6e6e6,0 -1px 0 #e6e6e6,0 3px 13px rgba(0,0,0,0.08);box-shadow:1px 0 0 #e6e6e6,-1px 0 0 #e6e6e6,0 1px 0 #e6e6e6,0 -1px 0 #e6e6e6,0 3px 13px rgba(0,0,0,0.08)}.flatpickr-calendar.open,.flatpickr-calendar.inline{opacity:1;max-height:640px;visibility:visible}.flatpickr-calendar.open{display:inline-block;z-index:99999}.flatpickr-calendar.animate.open{-webkit-animation:fpFadeInDown 300ms cubic-bezier(.23,1,.32,1);animation:fpFadeInDown 300ms cubic-bezier(.23,1,.32,1)}.flatpickr-calendar.inline{display:block;position:relative;top:2px}.flatpickr-calendar.static{position:absolute;top:calc(100% + 2px)}.flatpickr-calendar.static.open{z-index:999;display:block}.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+1) .flatpickr-day.inRange:nth-child(7n+7){-webkit-box-shadow:none !important;box-shadow:none !important}.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+2) .flatpickr-day.inRange:nth-child(7n+1){-webkit-box-shadow:-2px 0 0 #e6e6e6,5px 0 0 #e6e6e6;box-shadow:-2px 0 0 #e6e6e6,5px 0 0 #e6e6e6}.flatpickr-calendar .hasWeeks .dayContainer,.flatpickr-calendar .hasTime .dayContainer{border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.flatpickr-calendar .hasWeeks .dayContainer{border-left:0}.flatpickr-calendar.hasTime .flatpickr-time{height:40px;border-top:1px solid #e6e6e6}.flatpickr-calendar.noCalendar.hasTime .flatpickr-time{height:auto}.flatpickr-calendar:before,.flatpickr-calendar:after{position:absolute;display:block;pointer-events:none;border:solid transparent;content:\'\';height:0;width:0;left:22px}.flatpickr-calendar.rightMost:before,.flatpickr-calendar.arrowRight:before,.flatpickr-calendar.rightMost:after,.flatpickr-calendar.arrowRight:after{left:auto;right:22px}.flatpickr-calendar.arrowCenter:before,.flatpickr-calendar.arrowCenter:after{left:50%;right:50%}.flatpickr-calendar:before{border-width:5px;margin:0 -5px}.flatpickr-calendar:after{border-width:4px;margin:0 -4px}.flatpickr-calendar.arrowTop:before,.flatpickr-calendar.arrowTop:after{bottom:100%}.flatpickr-calendar.arrowTop:before{border-bottom-color:#e6e6e6}.flatpickr-calendar.arrowTop:after{border-bottom-color:#fff}.flatpickr-calendar.arrowBottom:before,.flatpickr-calendar.arrowBottom:after{top:100%}.flatpickr-calendar.arrowBottom:before{border-top-color:#e6e6e6}.flatpickr-calendar.arrowBottom:after{border-top-color:#fff}.flatpickr-calendar:focus{outline:0}.flatpickr-wrapper{position:relative;display:inline-block}.flatpickr-months{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.flatpickr-months .flatpickr-month{background:transparent;color:rgba(0,0,0,0.9);fill:rgba(0,0,0,0.9);height:34px;line-height:1;text-align:center;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:hidden;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}.flatpickr-months .flatpickr-prev-month,.flatpickr-months .flatpickr-next-month{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;text-decoration:none;cursor:pointer;position:absolute;top:0;height:34px;padding:10px;z-index:3;color:rgba(0,0,0,0.9);fill:rgba(0,0,0,0.9)}.flatpickr-months .flatpickr-prev-month.flatpickr-disabled,.flatpickr-months .flatpickr-next-month.flatpickr-disabled{display:none}.flatpickr-months .flatpickr-prev-month i,.flatpickr-months .flatpickr-next-month i{position:relative}.flatpickr-months .flatpickr-prev-month.flatpickr-prev-month,.flatpickr-months .flatpickr-next-month.flatpickr-prev-month{/*\n /*rtl:begin:ignore*/left:0/*\n /*rtl:end:ignore*/}/*\n /*rtl:begin:ignore*/\n/*\n /*rtl:end:ignore*/\n.flatpickr-months .flatpickr-prev-month.flatpickr-next-month,.flatpickr-months .flatpickr-next-month.flatpickr-next-month{/*\n /*rtl:begin:ignore*/right:0/*\n /*rtl:end:ignore*/}/*\n /*rtl:begin:ignore*/\n/*\n /*rtl:end:ignore*/\n.flatpickr-months .flatpickr-prev-month:hover,.flatpickr-months .flatpickr-next-month:hover{color:#959ea9}.flatpickr-months .flatpickr-prev-month:hover svg,.flatpickr-months .flatpickr-next-month:hover svg{fill:#f64747}.flatpickr-months .flatpickr-prev-month svg,.flatpickr-months .flatpickr-next-month svg{width:14px;height:14px}.flatpickr-months .flatpickr-prev-month svg path,.flatpickr-months .flatpickr-next-month svg path{-webkit-transition:fill .1s;transition:fill .1s;fill:inherit}.numInputWrapper{position:relative;height:auto}.numInputWrapper input,.numInputWrapper span{display:inline-block}.numInputWrapper input{width:100%}.numInputWrapper input::-ms-clear{display:none}.numInputWrapper input::-webkit-outer-spin-button,.numInputWrapper input::-webkit-inner-spin-button{margin:0;-webkit-appearance:none}.numInputWrapper span{position:absolute;right:0;width:14px;padding:0 4px 0 2px;height:50%;line-height:50%;opacity:0;cursor:pointer;border:1px solid rgba(57,57,57,0.15);-webkit-box-sizing:border-box;box-sizing:border-box}.numInputWrapper span:hover{background:rgba(0,0,0,0.1)}.numInputWrapper span:active{background:rgba(0,0,0,0.2)}.numInputWrapper span:after{display:block;content:"";position:absolute}.numInputWrapper span.arrowUp{top:0;border-bottom:0}.numInputWrapper span.arrowUp:after{border-left:4px solid transparent;border-right:4px solid transparent;border-bottom:4px solid rgba(57,57,57,0.6);top:26%}.numInputWrapper span.arrowDown{top:50%}.numInputWrapper span.arrowDown:after{border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px solid rgba(57,57,57,0.6);top:40%}.numInputWrapper span svg{width:inherit;height:auto}.numInputWrapper span svg path{fill:rgba(0,0,0,0.5)}.numInputWrapper:hover{background:rgba(0,0,0,0.05)}.numInputWrapper:hover span{opacity:1}.flatpickr-current-month{font-size:135%;line-height:inherit;font-weight:300;color:inherit;position:absolute;width:75%;left:12.5%;padding:7.48px 0 0 0;line-height:1;height:34px;display:inline-block;text-align:center;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.flatpickr-current-month span.cur-month{font-family:inherit;font-weight:700;color:inherit;display:inline-block;margin-left:.5ch;padding:0}.flatpickr-current-month span.cur-month:hover{background:rgba(0,0,0,0.05)}.flatpickr-current-month .numInputWrapper{width:6ch;width:7ch\\0;display:inline-block}.flatpickr-current-month .numInputWrapper span.arrowUp:after{border-bottom-color:rgba(0,0,0,0.9)}.flatpickr-current-month .numInputWrapper span.arrowDown:after{border-top-color:rgba(0,0,0,0.9)}.flatpickr-current-month input.cur-year{background:transparent;-webkit-box-sizing:border-box;box-sizing:border-box;color:inherit;cursor:text;padding:0 0 0 .5ch;margin:0;display:inline-block;font-size:inherit;font-family:inherit;font-weight:300;line-height:inherit;height:auto;border:0;border-radius:0;vertical-align:initial;-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.flatpickr-current-month input.cur-year:focus{outline:0}.flatpickr-current-month input.cur-year[disabled],.flatpickr-current-month input.cur-year[disabled]:hover{font-size:100%;color:rgba(0,0,0,0.5);background:transparent;pointer-events:none}.flatpickr-current-month .flatpickr-monthDropdown-months{appearance:menulist;background:transparent;border:none;border-radius:0;box-sizing:border-box;color:inherit;cursor:pointer;font-size:inherit;font-family:inherit;font-weight:300;height:auto;line-height:inherit;margin:-1px 0 0 0;outline:none;padding:0 0 0 .5ch;position:relative;vertical-align:initial;-webkit-box-sizing:border-box;-webkit-appearance:menulist;-moz-appearance:menulist;width:auto}.flatpickr-current-month .flatpickr-monthDropdown-months:focus,.flatpickr-current-month .flatpickr-monthDropdown-months:active{outline:none}.flatpickr-current-month .flatpickr-monthDropdown-months:hover{background:rgba(0,0,0,0.05)}.flatpickr-current-month .flatpickr-monthDropdown-months .flatpickr-monthDropdown-month{background-color:transparent;outline:none;padding:0}.flatpickr-weekdays{background:transparent;text-align:center;overflow:hidden;width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;height:28px}.flatpickr-weekdays .flatpickr-weekdaycontainer{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}span.flatpickr-weekday{cursor:default;font-size:90%;background:transparent;color:rgba(0,0,0,0.54);line-height:1;margin:0;text-align:center;display:block;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;font-weight:bolder}.dayContainer,.flatpickr-weeks{padding:1px 0 0 0}.flatpickr-days{position:relative;overflow:hidden;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:flex-start;width:307.875px}.flatpickr-days:focus{outline:0}.dayContainer{padding:0;outline:0;text-align:left;width:307.875px;min-width:307.875px;max-width:307.875px;-webkit-box-sizing:border-box;box-sizing:border-box;display:inline-block;display:-ms-flexbox;display:-webkit-box;display:-webkit-flex;display:flex;-webkit-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-wrap:wrap;-ms-flex-pack:justify;-webkit-justify-content:space-around;justify-content:space-around;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}.dayContainer + .dayContainer{-webkit-box-shadow:-1px 0 0 #e6e6e6;box-shadow:-1px 0 0 #e6e6e6}.flatpickr-day{background:none;border:1px solid transparent;border-radius:150px;-webkit-box-sizing:border-box;box-sizing:border-box;color:#393939;cursor:pointer;font-weight:400;width:14.2857143%;-webkit-flex-basis:14.2857143%;-ms-flex-preferred-size:14.2857143%;flex-basis:14.2857143%;max-width:39px;height:39px;line-height:39px;margin:0;display:inline-block;position:relative;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;text-align:center}.flatpickr-day.inRange,.flatpickr-day.prevMonthDay.inRange,.flatpickr-day.nextMonthDay.inRange,.flatpickr-day.today.inRange,.flatpickr-day.prevMonthDay.today.inRange,.flatpickr-day.nextMonthDay.today.inRange,.flatpickr-day:hover,.flatpickr-day.prevMonthDay:hover,.flatpickr-day.nextMonthDay:hover,.flatpickr-day:focus,.flatpickr-day.prevMonthDay:focus,.flatpickr-day.nextMonthDay:focus{cursor:pointer;outline:0;background:#e6e6e6;border-color:#e6e6e6}.flatpickr-day.today{border-color:#959ea9}.flatpickr-day.today:hover,.flatpickr-day.today:focus{border-color:#959ea9;background:#959ea9;color:#fff}.flatpickr-day.selected,.flatpickr-day.startRange,.flatpickr-day.endRange,.flatpickr-day.selected.inRange,.flatpickr-day.startRange.inRange,.flatpickr-day.endRange.inRange,.flatpickr-day.selected:focus,.flatpickr-day.startRange:focus,.flatpickr-day.endRange:focus,.flatpickr-day.selected:hover,.flatpickr-day.startRange:hover,.flatpickr-day.endRange:hover,.flatpickr-day.selected.prevMonthDay,.flatpickr-day.startRange.prevMonthDay,.flatpickr-day.endRange.prevMonthDay,.flatpickr-day.selected.nextMonthDay,.flatpickr-day.startRange.nextMonthDay,.flatpickr-day.endRange.nextMonthDay{background:#569ff7;-webkit-box-shadow:none;box-shadow:none;color:#fff;border-color:#569ff7}.flatpickr-day.selected.startRange,.flatpickr-day.startRange.startRange,.flatpickr-day.endRange.startRange{border-radius:50px 0 0 50px}.flatpickr-day.selected.endRange,.flatpickr-day.startRange.endRange,.flatpickr-day.endRange.endRange{border-radius:0 50px 50px 0}.flatpickr-day.selected.startRange + .endRange:not(:nth-child(7n+1)),.flatpickr-day.startRange.startRange + .endRange:not(:nth-child(7n+1)),.flatpickr-day.endRange.startRange + .endRange:not(:nth-child(7n+1)){-webkit-box-shadow:-10px 0 0 #569ff7;box-shadow:-10px 0 0 #569ff7}.flatpickr-day.selected.startRange.endRange,.flatpickr-day.startRange.startRange.endRange,.flatpickr-day.endRange.startRange.endRange{border-radius:50px}.flatpickr-day.inRange{border-radius:0;-webkit-box-shadow:-5px 0 0 #e6e6e6,5px 0 0 #e6e6e6;box-shadow:-5px 0 0 #e6e6e6,5px 0 0 #e6e6e6}.flatpickr-day.flatpickr-disabled,.flatpickr-day.flatpickr-disabled:hover,.flatpickr-day.prevMonthDay,.flatpickr-day.nextMonthDay,.flatpickr-day.notAllowed,.flatpickr-day.notAllowed.prevMonthDay,.flatpickr-day.notAllowed.nextMonthDay{color:rgba(57,57,57,0.3);background:transparent;border-color:transparent;cursor:default}.flatpickr-day.flatpickr-disabled,.flatpickr-day.flatpickr-disabled:hover{cursor:not-allowed;color:rgba(57,57,57,0.1)}.flatpickr-day.week.selected{border-radius:0;-webkit-box-shadow:-5px 0 0 #569ff7,5px 0 0 #569ff7;box-shadow:-5px 0 0 #569ff7,5px 0 0 #569ff7}.flatpickr-day.hidden{visibility:hidden}.rangeMode .flatpickr-day{margin-top:1px}.flatpickr-weekwrapper{float:left}.flatpickr-weekwrapper .flatpickr-weeks{padding:0 12px;-webkit-box-shadow:1px 0 0 #e6e6e6;box-shadow:1px 0 0 #e6e6e6}.flatpickr-weekwrapper .flatpickr-weekday{float:none;width:100%;line-height:28px}.flatpickr-weekwrapper span.flatpickr-day,.flatpickr-weekwrapper span.flatpickr-day:hover{display:block;width:100%;max-width:none;color:rgba(57,57,57,0.3);background:transparent;cursor:default;border:none}.flatpickr-innerContainer{display:block;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden}.flatpickr-rContainer{display:inline-block;padding:0;-webkit-box-sizing:border-box;box-sizing:border-box}.flatpickr-time{text-align:center;outline:0;display:block;height:0;line-height:40px;max-height:40px;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.flatpickr-time:after{content:"";display:table;clear:both}.flatpickr-time .numInputWrapper{-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;width:40%;height:40px;float:left}.flatpickr-time .numInputWrapper span.arrowUp:after{border-bottom-color:#393939}.flatpickr-time .numInputWrapper span.arrowDown:after{border-top-color:#393939}.flatpickr-time.hasSeconds .numInputWrapper{width:26%}.flatpickr-time.time24hr .numInputWrapper{width:49%}.flatpickr-time input{background:transparent;-webkit-box-shadow:none;box-shadow:none;border:0;border-radius:0;text-align:center;margin:0;padding:0;height:inherit;line-height:inherit;color:#393939;font-size:14px;position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.flatpickr-time input.flatpickr-hour{font-weight:bold}.flatpickr-time input.flatpickr-minute,.flatpickr-time input.flatpickr-second{font-weight:400}.flatpickr-time input:focus{outline:0;border:0}.flatpickr-time .flatpickr-time-separator,.flatpickr-time .flatpickr-am-pm{height:inherit;float:left;line-height:inherit;color:#393939;font-weight:bold;width:2%;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-align-self:center;-ms-flex-item-align:center;align-self:center}.flatpickr-time .flatpickr-am-pm{outline:0;width:18%;cursor:pointer;text-align:center;font-weight:400}.flatpickr-time input:hover,.flatpickr-time .flatpickr-am-pm:hover,.flatpickr-time input:focus,.flatpickr-time .flatpickr-am-pm:focus{background:#eee}.flatpickr-input[readonly]{cursor:pointer}@-webkit-keyframes fpFadeInDown{from{opacity:0;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@keyframes fpFadeInDown{from{opacity:0;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}'],sourceRoot:""}]);const a=s},645:e=>{"use strict";e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var n="",i=void 0!==t[5];return t[4]&&(n+="@supports (".concat(t[4],") {")),t[2]&&(n+="@media ".concat(t[2]," {")),i&&(n+="@layer".concat(t[5].length>0?" ".concat(t[5]):""," {")),n+=e(t),i&&(n+="}"),t[2]&&(n+="}"),t[4]&&(n+="}"),n})).join("")},t.i=function(e,n,i,o,r){"string"==typeof e&&(e=[[null,e,void 0]]);var s={};if(i)for(var a=0;a0?" ".concat(u[5]):""," {").concat(u[1],"}")),u[5]=r),n&&(u[2]?(u[1]="@media ".concat(u[2]," {").concat(u[1],"}"),u[2]=n):u[2]=n),o&&(u[4]?(u[1]="@supports (".concat(u[4],") {").concat(u[1],"}"),u[4]=o):u[4]="".concat(o)),t.push(u))}},t}},537:e=>{"use strict";e.exports=function(e){var t=e[1],n=e[3];if(!n)return t;if("function"==typeof btoa){var i=btoa(unescape(encodeURIComponent(JSON.stringify(n)))),o="sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(i),r="/*# ".concat(o," */");return[t].concat([r]).join("\n")}return[t].join("\n")}},745:(e,t,n)=>{"use strict";var i=n(137);t.s=i.createRoot,i.hydrateRoot},590:e=>{var t="undefined"!=typeof Element,n="function"==typeof Map,i="function"==typeof Set,o="function"==typeof ArrayBuffer&&!!ArrayBuffer.isView;function r(e,s){if(e===s)return!0;if(e&&s&&"object"==typeof e&&"object"==typeof s){if(e.constructor!==s.constructor)return!1;var a,l,c,u;if(Array.isArray(e)){if((a=e.length)!=s.length)return!1;for(l=a;0!=l--;)if(!r(e[l],s[l]))return!1;return!0}if(n&&e instanceof Map&&s instanceof Map){if(e.size!==s.size)return!1;for(u=e.entries();!(l=u.next()).done;)if(!s.has(l.value[0]))return!1;for(u=e.entries();!(l=u.next()).done;)if(!r(l.value[1],s.get(l.value[0])))return!1;return!0}if(i&&e instanceof Set&&s instanceof Set){if(e.size!==s.size)return!1;for(u=e.entries();!(l=u.next()).done;)if(!s.has(l.value[0]))return!1;return!0}if(o&&ArrayBuffer.isView(e)&&ArrayBuffer.isView(s)){if((a=e.length)!=s.length)return!1;for(l=a;0!=l--;)if(e[l]!==s[l])return!1;return!0}if(e.constructor===RegExp)return e.source===s.source&&e.flags===s.flags;if(e.valueOf!==Object.prototype.valueOf&&"function"==typeof e.valueOf&&"function"==typeof s.valueOf)return e.valueOf()===s.valueOf();if(e.toString!==Object.prototype.toString&&"function"==typeof e.toString&&"function"==typeof s.toString)return e.toString()===s.toString();if((a=(c=Object.keys(e)).length)!==Object.keys(s).length)return!1;for(l=a;0!=l--;)if(!Object.prototype.hasOwnProperty.call(s,c[l]))return!1;if(t&&e instanceof Element)return!1;for(l=a;0!=l--;)if(("_owner"!==c[l]&&"__v"!==c[l]&&"__o"!==c[l]||!e.$$typeof)&&!r(e[c[l]],s[c[l]]))return!1;return!0}return e!=e&&s!=s}e.exports=function(e,t){try{return r(e,t)}catch(e){if((e.message||"").match(/stack|recursion/i))return console.warn("react-fast-compare cannot handle circular refs"),!1;throw e}}},379:e=>{"use strict";var t=[];function n(e){for(var n=-1,i=0;i{"use strict";var t={};e.exports=function(e,n){var i=function(e){if(void 0===t[e]){var n=document.querySelector(e);if(window.HTMLIFrameElement&&n instanceof window.HTMLIFrameElement)try{n=n.contentDocument.head}catch(e){n=null}t[e]=n}return t[e]}(e);if(!i)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");i.appendChild(n)}},216:e=>{"use strict";e.exports=function(e){var t=document.createElement("style");return e.setAttributes(t,e.attributes),e.insert(t,e.options),t}},565:(e,t,n)=>{"use strict";e.exports=function(e){var t=n.nc;t&&e.setAttribute("nonce",t)}},795:e=>{"use strict";e.exports=function(e){if("undefined"==typeof document)return{update:function(){},remove:function(){}};var t=e.insertStyleElement(e);return{update:function(n){!function(e,t,n){var i="";n.supports&&(i+="@supports (".concat(n.supports,") {")),n.media&&(i+="@media ".concat(n.media," {"));var o=void 0!==n.layer;o&&(i+="@layer".concat(n.layer.length>0?" ".concat(n.layer):""," {")),i+=n.css,o&&(i+="}"),n.media&&(i+="}"),n.supports&&(i+="}");var r=n.sourceMap;r&&"undefined"!=typeof btoa&&(i+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(r))))," */")),t.styleTagTransform(i,e,t.options)}(t,e,n)},remove:function(){!function(e){if(null===e.parentNode)return!1;e.parentNode.removeChild(e)}(t)}}}},589:e=>{"use strict";e.exports=function(e,t){if(t.styleSheet)t.styleSheet.cssText=e;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(e))}}},137:e=>{"use strict";e.exports=require("react-dom")}},t={};function n(i){var o=t[i];if(void 0!==o)return o.exports;var r=t[i]={id:i,loaded:!1,exports:{}};return e[i](r,r.exports,n),r.loaded=!0,r.exports}n.amdD=function(){throw new Error("define cannot be used indirect")},n.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},n.d=(e,t)=>{for(var i in t)n.o(t,i)&&!n.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),n.p="",n.nc=void 0;var i={};(()=>{"use strict";n.r(i),n.d(i,{Accordion:()=>W,Button:()=>q,ButtonGroup:()=>J,Chart:()=>se,Checkbox:()=>oi,CodeEditor:()=>po,Collapsible:()=>I,Column:()=>Li,Combobox:()=>xo,Combobox2:()=>Wo,Confirm:()=>Xe,CopyToClipboard:()=>Pe,DatePicker:()=>hr,Dropdown:()=>Qi,EditableList:()=>bs,EditableList2:()=>Hs,FieldCodeEditor:()=>yc,FieldCombobox:()=>Sc,FieldCombobox2:()=>Xc,FieldDatePicker:()=>au,FieldDropdown:()=>Lc,FieldEditableList:()=>mu,FieldFileInput:()=>xu,FieldInput:()=>Lu,FieldMultiselect:()=>Hu,FieldPagination:()=>zc,FieldSelect:()=>Ju,FieldSelectableList:()=>oh,FieldToggle:()=>dh,FileInput:()=>Ys,FixedWrapper:()=>et,FloatingContainer:()=>ct,FormikCheckbox:()=>Gl,FormikCodeEditor:()=>Kl,FormikCombobox:()=>ql,FormikCombobox2:()=>Yl,FormikDatePicker:()=>Jl,FormikEditableList:()=>Ql,FormikEditableList2:()=>Xl,FormikFileInput:()=>Zl,FormikInput:()=>ec,FormikInput2:()=>tc,FormikMultiselect:()=>nc,FormikRadio:()=>ic,FormikSelect:()=>oc,FormikSelectableList:()=>rc,FormikStringBuilder:()=>lc,FormikTextarea:()=>sc,FormikToggle:()=>ac,FormikWrapper:()=>Vl,Icon:()=>g,InfiniteScroller:()=>nt,InfoNote:()=>ht,Input:()=>oa,Input2:()=>ga,List:()=>mt,Loader:()=>te,Message:()=>ie,Modal:()=>Je,Multiselect:()=>Ea,NavBar:()=>yt,Navigation:()=>At,Pagination:()=>Fn,Panel:()=>Ft,Pill:()=>Ht,Radio:()=>Ia,RevealPanel:()=>sn,Row:()=>Hi,Select:()=>Ua,SelectableList:()=>Za,StringBuilder:()=>Rl,Table:()=>xi,Tabs:()=>$n,TextEllipsis:()=>In,Textarea:()=>al,Toggle:()=>Al,Tooltip:()=>Bn,setConfig:()=>Ll,toast:()=>_e,useComponentSize:()=>E,useEventListener:()=>S,useInterval:()=>x,usePrevious:()=>C,useTimeout:()=>k});const e=require("react");var t=n.n(e);const o=require("prop-types");var r=n.n(o);const s=(0,e.createContext)(),a=(0,e.createContext)();var l=Object.defineProperty,c=Object.getOwnPropertySymbols,u=Object.prototype.hasOwnProperty,h=Object.prototype.propertyIsEnumerable,d=(e,t,n)=>t in e?l(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;function p(e){var n=e,{className:i,family:o,type:r}=n,s=((e,t)=>{var n={};for(var i in e)u.call(e,i)&&t.indexOf(i)<0&&(n[i]=e[i]);if(null!=e&&c)for(var i of c(e))t.indexOf(i)<0&&h.call(e,i)&&(n[i]=e[i]);return n})(n,["className","family","type"]);return t().createElement("i",((e,t)=>{for(var n in t||(t={}))u.call(t,n)&&d(e,n,t[n]);if(c)for(var n of c(t))h.call(t,n)&&d(e,n,t[n]);return e})({className:function(){const e=o||"fa";return["tyk-icon",e,`${e}-${r}`,i].filter(Boolean).join(" ")}()},s))}p.propTypes={className:r().string,family:r().string,type:r().string.isRequired};const g=p;function m({wrap:n}){const{collapsed:i,disabled:o,toggleChange:r}=(0,e.useContext)(a),s=i?"chevron-down":"chevron-up",l=["tyk-accordion__trigger",o&&"tyk-accordion__trigger--disabled"].filter(Boolean).join(" "),c=t().createElement("button",{className:l,onClick:r,type:"button"},t().createElement(g,{className:"collapsable__arrow",type:s}));return n?t().createElement("div",{className:"tyk-accordion__trigger-wrapper"},c):c}m.propTypes={wrap:r().bool};const f=m;function y({collapsed:n,children:i,className:o,disabled:r},l){const{arrow:c}=(0,e.useContext)(s),[u,h]=(0,e.useState)(n),d=()=>{r||h(!u)},p=(0,e.useMemo)((()=>["tyk-accordion__item",c.expandToContent?`tyk-accordion__item--trigger-position-${c.position}`:"tyk-accordion__item--trigger-in-header",o,!1===u&&"tyk-accordion__item--active"].filter(Boolean).join(" ")),[c,o,u]),g=(0,e.useMemo)((()=>({collapsed:u,disabled:r,toggleChange:d})),[u,r,d]);return t().createElement("div",{ref:l,className:p},t().createElement(a.Provider,{value:g},c.expandToContent&&t().createElement(f,{wrap:!0}),i))}y.propTypes={children:r().oneOfType([r().arrayOf(r().node),r().node,r().element,r().string]),collapsed:r().bool,className:r().string,disabled:r().bool},y.defaultProps={collapsed:!1};const b=(0,e.forwardRef)(y);function v({className:n,children:i}){const{collapsed:o,disabled:r,toggleChange:l}=(0,e.useContext)(a),{usearrowastrigger:c,arrow:u}=(0,e.useContext)(s),h=o?"chevron-down":"chevron-up",d=["tyk-accordion__item-header",c&&"tyk-accordion__arrow-trigger",n].filter(Boolean).join(" ");return t().createElement("div",{className:d},c?t().createElement(t().Fragment,null,!u.expandToContent&&"left"===u.position&&t().createElement(f,null),t().createElement("div",null,i),!u.expandToContent&&"right"===u.position&&t().createElement(f,null)):t().createElement("button",{className:r?"tyk-accordion__trigger--disabled":"",onClick:l,type:"button"},t().createElement("span",null,i),t().createElement(g,{className:"collapsable__arrow",type:h})))}v.propTypes={children:r().oneOfType([r().arrayOf(r().node),r().node,r().element,r().string]),className:r().string};const w=v,A=require("react-transition-group"),C=t=>{const n=(0,e.useRef)();return(0,e.useEffect)((()=>{n.current=t}),[t]),n.current},k=(t,n)=>{const i=(0,e.useRef)();(0,e.useEffect)((()=>{i.current=t}),[t]),(0,e.useEffect)((()=>{if(null!==n){const e=setTimeout((function(){i.current()}),n);return()=>clearTimeout(e)}return()=>{}}),[n])};function x(t,n,...i){const o=(0,e.useRef)();(0,e.useEffect)((()=>{o.current=t}),[t]),(0,e.useEffect)((()=>{if(null!=n){const e=setInterval((function(){o.current(...i)}),n);return()=>clearInterval(e)}}),[n])}const S=(t,n,i)=>{const o=(0,e.useRef)();(0,e.useEffect)((()=>{o.current=n}),[n]),(0,e.useEffect)((()=>{if(!(null==i?void 0:i.addEventListener))return;const e=e=>o.current(e);return i.addEventListener(t,e),()=>{i.removeEventListener(t,e)}}),[t,i])},$=e=>e?{width:e.offsetWidth,height:e.offsetHeight}:{width:0,height:0},E=t=>{const[n,i]=(0,e.useState)($(t?t.current:{})),o=(0,e.useCallback)((()=>{t.current&&i($(t.current))}),[t]);return(0,e.useLayoutEffect)((()=>{o();let e=new ResizeObserver((()=>{o()}));return e.observe(t.current),()=>{e.disconnect(t.current),e=null}}),[t.current]),n};var O=Object.defineProperty,T=Object.defineProperties,_=Object.getOwnPropertyDescriptors,R=Object.getOwnPropertySymbols,M=Object.prototype.hasOwnProperty,L=Object.prototype.propertyIsEnumerable,B=(e,t,n)=>t in e?O(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;function N(n){var i=n,{className:o,collapsed:r,children:s}=i,a=((e,t)=>{var n={};for(var i in e)M.call(e,i)&&t.indexOf(i)<0&&(n[i]=e[i]);if(null!=e&&R)for(var i of R(e))t.indexOf(i)<0&&L.call(e,i)&&(n[i]=e[i]);return n})(i,["className","collapsed","children"]);const l=(0,e.useRef)(null),c=(0,e.useRef)(null),u=E(l),[h,d]=(0,e.useState)({height:r?0:"auto"}),p=e=>{d({height:`${e}px`})},g=()=>l.current?l.current.clientHeight:0;(0,e.useEffect)((()=>{!r&&(null==u?void 0:u.height)&&h.height!==(null==u?void 0:u.height)&&p(u.height)}),[u.height]);const m=(0,e.useCallback)((()=>{!r&&l.current&&(p(g()),c.current.style.height=`${g()}px`)}),[r,l.current]);return S("resize",m,window),t().createElement(A.CSSTransition,{onEnter:()=>{p(g())},onExit:()=>{p(0)},in:!r,timeout:0,classNames:"collapse"},t().createElement("div",{className:"collapse-wrapper",ref:c,style:h},t().createElement("div",(f=((e,t)=>{for(var n in t||(t={}))M.call(t,n)&&B(e,n,t[n]);if(R)for(var n of R(t))L.call(t,n)&&B(e,n,t[n]);return e})({},a),T(f,_({className:o,ref:l}))),s)));var f}N.propTypes={children:r().oneOfType([r().element,r().node,r().string]),collapsed:r().bool,className:r().string};const I=N;function P({children:n,className:i}){const{collapsed:o}=(0,e.useContext)(a),r=["tyk-accordion__item-content",i].filter(Boolean).join(" ");return t().createElement("div",{className:r},t().createElement(I,{collapsed:o},n))}P.propTypes={children:r().oneOfType([r().arrayOf(r().node),r().node,r().element,r().string]),className:r().string};const D=P;function F({className:n,children:i,usearrowastrigger:o,arrow:r={position:"right",expandToContent:!1}}){const a=["tyk-accordion",n].filter(Boolean).join(" "),l=(0,e.useMemo)((()=>({usearrowastrigger:o,arrow:r})),[o,r]);return t().createElement("div",{className:a},t().createElement(s.Provider,{value:l},i))}F.propTypes={children:r().oneOfType([r().arrayOf(r().node),r().node,r().element,r().string]),className:r().string,usearrowastrigger:r().bool,arrow:r().shape({position:r().oneOf(["left","right"]),expandToContent:r().bool})},F.defaultProps={usearrowastrigger:!1},F.Item=b,F.Item.Header=w,F.Item.Content=D;const W=F;var H=Object.defineProperty,j=Object.getOwnPropertySymbols,z=Object.prototype.hasOwnProperty,U=Object.prototype.propertyIsEnumerable,V=(e,t,n)=>t in e?H(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,G=(e,t)=>{for(var n in t||(t={}))z.call(t,n)&&V(e,n,t[n]);if(j)for(var n of j(t))U.call(t,n)&&V(e,n,t[n]);return e};const K=t().forwardRef(((n,i)=>{const o=n,{customButton:r,children:s,iconType:a,iconFamily:l,iconPosition:c,iconOnly:u,id:h,className:d,disabled:p,display:m,href:f,onClick:y,noStyle:b,size:v,theme:w,type:A}=o,C=((e,t)=>{var n={};for(var i in e)z.call(e,i)&&t.indexOf(i)<0&&(n[i]=e[i]);if(null!=e&&j)for(var i of j(e))t.indexOf(i)<0&&U.call(e,i)&&(n[i]=e[i]);return n})(o,["customButton","children","iconType","iconFamily","iconPosition","iconOnly","id","className","disabled","display","href","onClick","noStyle","size","theme","type"]),k=()=>{const e=["tyk-button"].concat(d?d.split(" "):[]),t=v?`tyk-button--${v}`:"tyk-button--md",n=p?"disabled":"",i=m||"",o=w?`tyk-button--${w}`:"",r=u?"tyk-button--icon-only":"",s=b?"tyk-button--no-style":"";return e.push(r),e.push(o),e.push(t),e.push(n),e.push(i),e.push(s),a&&e.push(`icon-${c||"left"}`),e.join(" ")},x=e=>a&&(c||"left")===e?t().createElement(g,{family:l,type:a}):null;return(()=>{let n;return r?t().createElement(e.Fragment,null,(0,e.cloneElement)(r,{className:k(),disabled:p})):(n=f?t().createElement("a",G({id:h,className:k(),disabled:p,onClick:y,href:f,ref:i},C),x("left"),s,x("right")):t().createElement("button",G({id:h,className:k(),disabled:p,onClick:y,type:A||"button",ref:i},C),x("left"),s&&t().createElement("span",null,s),x("right")),n)})()}));K.propTypes={children:r().oneOfType([r().arrayOf(r().node),r().node,r().element,r().string]),customButton:r().oneOfType([r().arrayOf(r().node),r().node,r().element]),className:r().string,display:r().string,disabled:r().bool,id:r().string,href:r().string,iconPosition:r().string,iconFamily:r().string,iconOnly:r().bool,iconType:r().string,noStyle:r().bool,onClick:r().func,theme:r().string,type:r().string,size:r().string},K.defaultProps={theme:"",type:"button"};const q=K;function Y({className:e,children:n,label:i}){return t().createElement("div",{className:`tyk-button-group__wrapper ${e}`},Boolean(i)&&t().createElement("label",null,i),t().createElement("div",{className:"tyk-button-group"},n))}Y.propTypes={children:r().oneOfType([r().arrayOf(r().node),r().node,r().element,r().string]),className:r().string,label:r().string};const J=Y,Q=require("echarts"),X=require("immutable"),Z=(e,t,n)=>{let i;return function(...o){const r=this,s=n&&!i;clearTimeout(i),i=setTimeout((()=>{i=null,n||e.apply(r,o)}),t),s&&e.apply(r,o)}};function ee({className:e,position:n="relative",withbackground:i=!1}){const o=["loading",n,e].filter(Boolean).join(" "),r=t().createElement("div",{className:o},t().createElement("div",{className:"loading-bar"}),t().createElement("div",{className:"loading-bar"}),t().createElement("div",{className:"loading-bar"}),t().createElement("div",{className:"loading-bar"}));return i?t().createElement("div",{className:"tyk-loading__wrapper"},r):r}ee.propTypes={className:r().string,position:r().string,withbackground:r().bool};const te=ee;function ne({children:e,theme:n,onClose:i,noMargin:o,className:r}){const s="success"===n?"check":"warning";return t().createElement("div",{className:["tyk-message",`tyk-message--${n||"info"}`,o&&"no-margin",r].filter(Boolean).join(" ")},t().createElement(g,{family:"tykon",type:s}),t().createElement("div",{className:"tyk-message__content"},e),i&&t().createElement(g,{family:"tykon",type:"x",onClick:i}))}ne.propTypes={theme:r().string,children:r().oneOfType([r().element,r().node,r().string]),className:r().string,noMargin:r().bool,onClose:r().func};const ie=ne,oe=JSON.parse('{"type":"FeatureCollection","crs":{"type":"name","properties":{"name":"urn:ogc:def:crs:OGC:1.3:CRS84"}},"features":[{"geometry":{"type":"Polygon","coordinates":[[[47.97822265625001,7.9970703125],[46.97822265625001,7.9970703125],[43.98378906250002,9.008837890624989],[43.482519531250006,9.379492187499991],[43.181640625,9.879980468749991],[42.84160156250002,10.203076171874997],[42.65644531250001,10.6],[42.92275390625002,10.999316406249989],[43.24599609375002,11.499804687499989],[43.85273437500001,10.784277343749991],[44.38652343750002,10.430224609374989],[44.94296875,10.43671875],[45.81669921875002,10.835888671874997],[46.565039062500006,10.745996093749994],[47.40498046875001,11.174023437499997],[48.01923828125001,11.139355468749997],[48.57255859375002,11.320507812499997],[48.938574218750006,11.258447265624994],[50.11005859375001,11.529296875],[50.79228515625002,11.983691406249989],[51.2548828125,11.830712890624994],[51.08427734375002,11.335644531249997],[51.140625,10.656884765624994],[51.031835937500006,10.444775390624997],[51.19296875,10.554638671874997],[51.390234375,10.422607421875],[50.93007812500002,10.33554687499999],[50.825,9.428173828124997],[50.10283203125002,8.199804687499991],[49.85205078125,7.962548828124994],[49.234960937500006,6.77734375],[49.04931640625,6.173632812499989],[47.97529296875001,4.497021484374997],[46.87880859375002,3.28564453125],[46.05117187500002,2.475146484374989],[44.92021484375002,1.81015625],[43.71757812500002,0.857861328124997],[41.97988281250002,-0.973046875],[41.53271484375,-1.6953125],[41.521875,-1.572265625],[41.42695312500001,-1.449511718750003],[41.24980468750002,-1.220507812500003],[40.97871093750001,-0.870312500000011],[40.964453125,2.814648437499997],[41.341796875,3.20166015625],[41.61347656250001,3.590478515624994],[41.88398437500001,3.977734375],[41.91533203125002,4.031298828124989],[42.02412109375001,4.137939453125],[42.85664062500001,4.32421875],[43.12568359375001,4.644482421874997],[43.58349609375,4.85498046875],[43.988867187500006,4.950537109374991],[44.940527343750006,4.912011718749994],[47.97822265625001,7.9970703125]]]},"properties":{"name":"Somalia","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[9.579979133936737,47.05856388629306],[9.409458596647225,47.02019676540292],[9.46249431093294,47.09010747968864],[9.46249431093294,47.19858962254578],[9.527658197470123,47.27026989773668],[9.579979133936737,47.05856388629306]]]},"properties":{"name":"Liechtenstein","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-8.683349609375,27.77800740805682],[-13.038761787013554,27.81190166624856],[-12.948925781249926,27.914160156250034],[-11.552685546874955,28.31010742187496],[-10.486474609374994,29.06494140625],[-10.200585937499994,29.380371093750057],[-9.667089843749949,30.10927734375005],[-9.652929687499977,30.447558593750045],[-9.875488281249943,30.717919921874966],[-9.80869140624992,31.42460937499996],[-9.347460937499932,32.086376953124955],[-9.245849609375,32.572460937499955],[-8.512841796874994,33.25244140625003],[-6.900976562499949,33.96904296874999],[-6.353125,34.77607421875001],[-5.924804687499943,35.78579101562502],[-5.277832031249943,35.90273437500002],[-5.252685546874972,35.61474609374997],[-4.628320312499966,35.206396484375006],[-4.329980468749937,35.161474609375006],[-3.693261718749994,35.27998046874998],[-3.394726562499926,35.21181640625005],[-2.972216796874989,35.40727539062499],[-2.839941406249949,35.127832031249994],[-2.731396484374955,35.13520507812498],[-2.636816406249977,35.11269531250002],[-2.423730468749994,35.12348632812498],[-2.219628906249966,35.10419921874998],[-1.795605468749926,34.751904296874955],[-1.67919921875,33.31865234375002],[-1.550732421874955,33.073583984375006],[-1.510009765625,32.877636718749955],[-1.45,32.784814453124966],[-1.352148437499977,32.70336914062497],[-1.29638671875,32.67568359375002],[-1.188232421875,32.608496093750006],[-1.111035156249983,32.55229492187502],[-1.065527343749949,32.46831054687496],[-1.16259765625,32.399169921875],[-1.275341796874983,32.089013671874966],[-2.863427734374937,32.07470703124997],[-2.930859374999926,32.04252929687499],[-2.988232421874983,31.874218749999983],[-3.01738281249996,31.834277343750017],[-3.439794921874949,31.704541015624983],[-3.604589843749949,31.686767578125],[-3.700244140624989,31.70009765625005],[-3.768164062499977,31.689550781250034],[-3.837109374999983,31.512353515624994],[-3.833398437499937,31.197802734375045],[-3.626904296874955,31.000927734374983],[-4.148779296874977,30.8095703125],[-4.322851562500006,30.698876953124994],[-4.52915039062492,30.62553710937499],[-4.778515624999926,30.552392578124994],[-4.968261718749943,30.465380859375045],[-5.061914062499937,30.326416015625057],[-5.180126953124955,30.166162109374994],[-5.293652343749983,30.058642578125045],[-5.44877929687496,29.956933593750023],[-6.00429687499999,29.83125],[-6.479736328124943,29.82036132812499],[-6.520556640624989,29.659863281249983],[-6.59775390624992,29.578955078125006],[-6.635351562499949,29.568798828124983],[-6.755126953125,29.583837890625034],[-6.855566406249949,29.601611328125017],[-7.142431640624949,29.61958007812504],[-7.427685546874983,29.425],[-7.485742187499994,29.392236328124994],[-8.659912109375,28.718603515625063],[-8.683349609375,27.900390625],[-8.683349609375,27.77800740805682]]]},"properties":{"name":"Morocco","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-13.038761787013554,27.81190166624856],[-8.683349609375,27.77800740805682],[-8.683349609375,27.65644531250004],[-8.817822265624955,27.65644531250004],[-8.817822265624951,27.656445312499997],[-8.683349609375,27.656445312499997],[-8.683349609375,27.2859375],[-8.682861328125,26.921337890624997],[-8.6826171875,26.72314453125],[-8.682324218749983,26.497705078124994],[-8.68212890625,26.273193359375],[-8.68212890625,26.10947265625],[-8.682226562499977,25.995507812499994],[-12.016308593749983,25.995410156250003],[-12.016308593749983,25.740136718749994],[-12.016308593749983,25.331689453124994],[-12.016308593749983,25.059375],[-12.016308593749983,24.923242187499994],[-12.016308593749983,24.378662109375],[-12.016308593749983,23.97021484375],[-12.0234375,23.467578125],[-12.372900390624977,23.318017578124994],[-12.559375,23.290820312500003],[-12.620410156249989,23.27133789062499],[-13.031494140625,23.000244140625],[-13.153271484374983,22.820507812499997],[-13.12702845982141,22.703770926339278],[-13.136540684091575,22.708182548616723],[-13.094335937499977,22.495996093749994],[-13.051220703124983,21.854785156250003],[-13.041748046875,21.713818359374997],[-13.0322265625,21.572070312500003],[-13.025097656249983,21.466796875],[-13.016210937499977,21.333935546874997],[-15.231201171875,21.331298828125],[-16.964550781249983,21.329248046874994],[-17.06396484375,20.89882812499999],[-17.048046874999983,20.80615234375],[-17.098779296874994,20.856884765624997],[-16.930859374999983,21.9],[-16.35874023437495,22.594531250000045],[-16.21025390624999,23.097900390625],[-15.789257812499926,23.792871093750023],[-15.980712890624943,23.670312500000023],[-15.899316406249966,23.844433593749955],[-14.904296875000028,24.719775390625017],[-14.794921874999943,25.404150390625006],[-14.413867187499932,26.25371093749999],[-13.57578125,26.735107421875],[-13.175976562499983,27.655712890624983],[-13.038761787013554,27.81190166624856]],[[-8.774365234374983,27.460546875],[-8.794873046874983,27.120703125000034],[-8.794873046874983,27.120703125],[-8.774365234374983,27.460546875]]]},"properties":{"name":"W. Sahara","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[21.5625,42.247509765625],[21.560839843750017,42.24765625],[21.389550781250023,42.21982421875],[21.28662109375,42.100390625],[21.05976562500001,42.171289062499994],[20.778125,42.071044921875],[20.725,41.87353515625],[20.566210937500017,41.873681640624994],[20.485449218750006,42.223388671875],[20.06396484375,42.54726562499999],[20.054296875,42.760058593749996],[20.344335937500006,42.827929687499996],[20.40996305279786,42.84373166741877],[20.344335937500063,42.82792968750002],[19.670996093750006,43.163964843749994],[19.21875,43.449951171875],[19.196484375000068,43.48500976562502],[19.19160156250004,43.52104492187499],[19.19433593749997,43.533300781250006],[19.495117187500057,43.642871093750045],[19.245019531249994,43.96503906250004],[19.583789062500017,44.04345703125003],[19.118457031250074,44.359960937500006],[19.348632812500057,44.88090820312502],[19.007128906250045,44.86918945312502],[19.062890625000023,45.13720703125],[19.4,45.2125],[19.004687500000074,45.39951171875006],[19.064257812500045,45.51499023437506],[18.839062499999983,45.83574218750002],[18.905371093750006,45.931738281250034],[19.421289062500023,46.064453125],[19.61347656250001,46.169189453125],[19.84443359375001,46.145898437499966],[19.934082031250057,46.161474609375034],[20.161425781250017,46.14189453124996],[20.210156250000068,46.12602539062502],[20.241796875000034,46.10859375000001],[20.301367187500006,46.05068359375002],[20.35859375000004,45.975488281249994],[20.581152343749977,45.86948242187506],[20.65273437499999,45.779394531250006],[20.709277343750074,45.735253906249994],[20.727832031250017,45.73740234374998],[20.746875,45.74897460937501],[20.76015625000005,45.75810546875002],[20.775,45.74980468750002],[20.794042968750006,45.467871093750034],[21.431445312500017,45.192529296874994],[21.465429687500006,45.171875],[21.357031250000034,44.99077148437502],[21.532324218750063,44.900683593750045],[21.519921875000023,44.88081054687498],[21.442187500000074,44.87338867187498],[21.384375,44.87006835937501],[21.357910156250057,44.86181640625003],[21.36005859375004,44.82666015624997],[21.52314453125004,44.79008789062499],[21.63613281250005,44.71044921875],[21.909277343750034,44.666113281250034],[22.026953125,44.61987304687503],[22.093066406250074,44.541943359374955],[22.200976562500017,44.560693359374966],[22.350683593750063,44.676123046875034],[22.497656249999977,44.70625],[22.64208984375,44.65097656249998],[22.720898437499983,44.605517578125045],[22.734375,44.56992187499998],[22.700781250000063,44.55551757812498],[22.620117187500057,44.562353515625034],[22.554003906250017,44.54033203124999],[22.49453125000005,44.43544921875002],[22.687890625000023,44.248291015625],[22.42080078125005,44.00742187500006],[22.399023437500063,43.96953125],[22.36542968750004,43.86210937500002],[22.36962890625003,43.78129882812499],[22.55458984375005,43.45449218750002],[22.767578125,43.35415039062502],[22.81972656250005,43.300732421874955],[22.85957031250001,43.252343749999966],[22.97685546874999,43.18798828125],[22.799902343750006,42.985742187499994],[22.706152343750006,42.88393554687505],[22.466796875,42.842480468749955],[22.53242187500004,42.48120117187497],[22.523535156250006,42.440966796875045],[22.44570312500005,42.35913085937497],[22.42207031250004,42.32885742187503],[22.344042968750045,42.31396484375003],[22.23974609375003,42.303110028468716],[21.81464843750001,42.303125],[21.5625,42.24750976562498],[21.5625,42.247509765625]]]},"properties":{"name":"Serbia","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[74.54140625000002,37.02216796875],[74.03886718750002,36.825732421874996],[73.116796875,36.868554687499994],[72.24980468750002,36.734716796875],[71.23291015625,36.12177734375],[71.18505859375,36.04208984375],[71.57197265625001,35.546826171875],[71.62050781250002,35.183007812499994],[70.965625,34.53037109375],[71.095703125,34.369433593749996],[71.05156250000002,34.049707031249994],[70.65400390625001,33.952294921874994],[69.8896484375,34.007275390625],[70.26113281250002,33.289013671875],[69.5015625,33.020068359374996],[69.24140625000001,32.433544921875],[69.279296875,31.936816406249996],[68.86894531250002,31.634228515624997],[68.59765625,31.802978515625],[68.16103515625002,31.802978515625],[67.57822265625,31.506494140624994],[67.737890625,31.343945312499997],[67.45283203125001,31.234619140625],[66.82929687500001,31.263671875],[66.346875,30.802783203124996],[66.23125,29.86572265625],[65.09550781250002,29.559472656249994],[64.39375,29.544335937499994],[64.09873046875,29.391943359375],[63.56757812500001,29.497998046874997],[62.4765625,29.408349609374994],[62.0009765625,29.530419921874994],[61.22441406250002,29.749414062499994],[60.843359375,29.858691406249996],[61.331640625,30.363720703124997],[61.55947265625002,30.599365234375],[61.7841796875,30.831933593749994],[61.81083984375002,30.91328125],[61.81425781250002,31.072558593749996],[61.75507812500001,31.285302734374994],[61.66015625,31.382421875],[61.34648437500002,31.421630859375],[61.11074218750002,31.451123046874997],[60.854101562500006,31.483251953125],[60.82070312500002,31.495166015624996],[60.791601562500006,31.660595703124997],[60.804296875,31.73447265625],[60.7875,31.877197265625],[60.78994140625002,31.987109375],[60.827246093750006,32.16796875],[60.82929687500001,32.249414062499994],[60.71044921875,32.6],[60.57656250000002,32.994873046875],[60.560546875,33.137841796874994],[60.9169921875,33.505224609375],[60.573828125,33.588330078125],[60.4859375,33.7119140625],[60.48574218750002,34.094775390624996],[60.642675781250006,34.307177734374996],[60.88945312500002,34.31943359375],[60.80390625000001,34.418017578124996],[60.76259765625002,34.475244140624994],[60.73613281250002,34.491796875],[60.72626953125001,34.51826171875],[60.73945312500001,34.544726562499996],[60.80234375,34.554638671875],[60.8453125,34.587695312499996],[60.91474609375001,34.633984375],[60.951171875,34.653857421874996],[61.080078125,34.855615234374994],[61.1,35.272314453125],[61.18925781250002,35.31201171875],[61.24550781250002,35.474072265625],[61.27851562500001,35.51376953125],[61.281835937500006,35.55341796875],[61.26201171875002,35.619580078125],[61.3447265625,35.6294921875],[61.62099609375002,35.43232421875],[62.08964843750002,35.3796875],[62.30781250000001,35.170800781249994],[62.688085937500006,35.255322265625],[63.056640625,35.44580078125],[63.08417968750001,35.56806640625],[63.16972656250002,35.678125],[63.129980468750006,35.84619140625],[63.8625,36.012353515624994],[64.184375,36.14892578125],[64.51103515625002,36.340673828125],[64.56582031250002,36.427587890625],[64.6025390625,36.554541015625],[64.78242187500001,37.05927734375],[64.81630859375002,37.132080078125],[64.95156250000002,37.1935546875],[65.08964843750002,37.237939453124994],[65.30361328125002,37.24677734375],[65.55498046875002,37.251171875],[65.76503906250002,37.569140625],[66.471875,37.3447265625],[66.52226562500002,37.348486328125],[66.827734375,37.3712890625],[67.06884765625,37.334814453125],[67.19550781250001,37.235205078125],[67.31972656250002,37.2095703125],[67.44169921875002,37.2580078125],[67.51728515625001,37.266650390624996],[67.546484375,37.235644531249996],[67.607421875,37.222509765625],[67.7,37.22724609375],[67.7529296875,37.1998046875],[67.75898437500001,37.172216796875],[67.76601562500002,37.14013671875],[67.83447265625,37.064208984375],[67.9580078125,36.972021484375],[68.06777343750002,36.9498046875],[68.26093750000001,37.013085937499994],[68.284765625,37.036328125],[68.29951171875001,37.088427734374996],[68.38691406250001,37.1375],[68.66914062500001,37.2583984375],[68.7232421875,37.268017578125],[68.78203125000002,37.2580078125],[68.82373046875,37.270703125],[68.8384765625,37.30283203125],[68.85537109375002,37.316845703125],[68.88525390625,37.328076171875],[68.91181640625001,37.333935546875],[68.96044921875,37.325048828125],[69.18017578125,37.15830078125],[69.26484375000001,37.1083984375],[69.30390625000001,37.116943359375],[69.35380859375002,37.150048828124994],[69.41445312500002,37.207763671875],[69.4296875,37.290869140625],[69.39921875000002,37.399316406249994],[69.42011718750001,37.48671875],[69.49208984375002,37.553076171875],[69.62578125000002,37.594042968749996],[69.8208984375,37.6095703125],[69.9849609375,37.566162109375],[70.18867187500001,37.582470703125],[70.25146484375,37.66416015625],[70.25498046875,37.765380859375],[70.19941406250001,37.886035156249996],[70.21464843750002,37.9244140625],[70.41777343750002,38.075439453125],[70.7359375,38.42255859375],[71.255859375,38.306982421875],[71.33271484375001,38.170263671875],[71.27851562500001,37.918408203125],[71.319921875,37.90185546875],[71.3896484375,37.906298828124996],[71.48779296875,37.931884765625],[71.55195312500001,37.933154296874996],[71.58222656250001,37.910107421875],[71.43291015625002,37.1275390625],[71.530859375,36.845117187499994],[71.665625,36.696923828124994],[72.65742187500001,37.029052734375],[72.8955078125,37.267529296875],[73.21113281250001,37.408496093749996],[73.38291015625,37.462255859375],[73.48134765625002,37.4716796875],[73.60468750000001,37.446044921875],[73.65712890625002,37.43046875],[73.72060546875002,37.41875],[73.73378906250002,37.37578125],[73.71728515625,37.329443359375],[73.6275390625,37.261572265625],[73.65351562500001,37.23935546875],[73.749609375,37.231787109375],[74.16708984375,37.329443359375],[74.20351562500002,37.372460937499994],[74.25966796875002,37.415429687499994],[74.659375,37.394482421875],[74.73056640625,37.35703125],[74.83046875000002,37.2859375],[74.89130859375001,37.231640625],[74.84023437500002,37.225048828125],[74.76738281250002,37.249169921874994],[74.73896484375001,37.28564453125],[74.72666015625,37.29072265625],[74.6689453125,37.26669921875],[74.55898437500002,37.236621093749996],[74.37216796875,37.15771484375],[74.37617187500001,37.137353515624994],[74.49794921875002,37.0572265625],[74.52646484375,37.030664062499994],[74.54140625000002,37.02216796875]]]},"properties":{"name":"Afghanistan","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[17.57958984375,-8.099023437500009],[17.643359375000017,-8.090722656250009],[18.00878906250003,-8.107617187499983],[18.56269531250001,-7.9359375],[18.944433593750063,-8.001464843750028],[19.142675781250034,-8.001464843750028],[19.34082031249997,-7.966601562500031],[19.369921875000045,-7.706542968749986],[19.371679687500063,-7.655078124999989],[19.47988281250008,-7.472167968750028],[19.48378906250008,-7.279492187500026],[19.527636718750017,-7.144433593749952],[19.87519531250004,-6.986328124999986],[19.99746093750008,-6.976464843750023],[20.190039062500063,-6.9462890625],[20.482226562500074,-6.915820312500017],[20.59003906250001,-6.919921874999957],[20.598730468750006,-6.935156249999949],[20.536914062500045,-7.121777343749955],[20.535839843749983,-7.182812499999955],[20.558398437500045,-7.244433593749989],[20.60781250000008,-7.277734375000023],[20.910937500000017,-7.281445312499983],[21.190332031250023,-7.284960937499989],[21.751074218750034,-7.305468749999989],[21.80605468750005,-7.32861328125],[21.905371093750034,-8.693359374999943],[21.813183593750068,-9.46875],[22.19775390625,-10.040625],[22.30703125000005,-10.691308593750023],[22.203515625000023,-10.829492187500009],[22.226171875,-11.121972656250009],[22.27880859375,-11.19414062499996],[22.314941406250057,-11.198632812499994],[22.39296875000005,-11.159472656250003],[22.486132812500045,-11.086718750000017],[22.56103515625003,-11.05585937500004],[22.814746093750017,-11.08027343750004],[23.076269531250006,-11.087890624999986],[23.463964843750034,-10.969335937499991],[23.83388671875008,-11.013671874999972],[23.96650390625001,-10.871777343750011],[23.98388671875,-11.725],[23.909375,-12.636132812500009],[23.886523437500045,-12.743261718749991],[23.882421875,-12.799023437499983],[23.968066406250045,-12.956933593749994],[23.962988281250006,-12.988476562500026],[23.843164062500023,-13.0009765625],[22.209570312500006,-13.0009765625],[21.97890625000008,-13.0009765625],[21.979101562500034,-13.798730468749994],[21.979296875000074,-14.11962890625],[21.979394531249994,-14.440527343750006],[21.97978515624999,-15.955566406250014],[22.193945312500006,-16.628125],[23.380664062500017,-17.640625],[22.32421875,-17.8375],[20.74550781250008,-18.019726562499983],[20.194335937500057,-17.86367187499999],[18.95527343750004,-17.80351562499999],[18.39638671875005,-17.3994140625],[16.14843750000003,-17.39023437499999],[14.017480468750023,-17.40888671874997],[13.475976562500023,-17.04003906249997],[13.179492187500017,-16.971679687499986],[12.548144531250017,-17.212695312499974],[12.35927734375008,-17.205859375],[12.318457031250006,-17.21337890625003],[12.213378906250028,-17.209960937500043],[12.013964843750074,-17.168554687500034],[11.902539062500011,-17.226562499999957],[11.743066406250023,-17.24921875000004],[11.780078125000017,-16.87128906249997],[11.818945312500034,-16.704101562500014],[11.750878906250023,-15.831933593749966],[12.016113281250057,-15.513671874999957],[12.55048828125004,-13.437792968750003],[12.983203124999989,-12.775683593750017],[13.4169921875,-12.52041015624998],[13.597949218750017,-12.286132812500028],[13.785351562499983,-11.81279296874996],[13.833593750000063,-10.9296875],[13.33222656250004,-9.998925781250009],[12.99853515625,-9.048046875],[13.358984375,-8.687207031250026],[13.378515625000063,-8.369726562500006],[12.82343750000004,-6.954785156249955],[12.283300781250063,-6.12431640624996],[13.184375,-5.85625],[13.346484375000017,-5.863378906250006],[13.978515625,-5.857226562500003],[16.315234375000074,-5.865625],[16.431445312500045,-5.90019531249996],[16.53710937499997,-5.9658203125],[16.697265625,-6.164257812500026],[16.74296874999999,-6.618457031250003],[16.813085937500063,-6.772558593749963],[16.919433593750057,-6.93398437499998],[16.98476562500005,-7.257421874999977],[17.57958984375,-8.099023437500009]]],[[[12.50146484375,-4.5875],[12.848144531250028,-4.428906249999983],[12.881054687500068,-4.445117187499989],[12.971386718750068,-4.551757812499957],[13.048046875000068,-4.619238281250034],[13.072753906250028,-4.634765625],[13.057324218750011,-4.651074218750026],[12.947460937500011,-4.695312499999986],[12.829687499999977,-4.73662109374996],[12.451464843750017,-5.071484374999969],[12.453222656250034,-5.090625],[12.52236328125008,-5.148925781250028],[12.484570312500011,-5.71875],[12.213671875000074,-5.758691406249994],[12.177148437499994,-5.324804687499977],[12.018359375000074,-5.004296874999966],[12.50146484375,-4.5875]]]]},"properties":{"name":"Angola","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[20.06396484375,42.54726562499999],[20.485449218750006,42.223388671875],[20.566210937500017,41.873681640624994],[20.48896484375001,41.272607421874994],[20.709277343750017,40.928369140624994],[20.964257812500023,40.849902343749996],[20.95576171875001,40.775292968749994],[21.030859375,40.622460937499994],[20.881640625000017,40.467919921874994],[20.65742187500001,40.1173828125],[20.4560546875,40.065576171874994],[20.408007812500017,40.049462890624994],[20.383691406250023,40.0171875],[20.338476562500006,39.991064453125],[20.311132812500006,39.979443359375],[20.311328125000017,39.95078125],[20.381640625000017,39.841796875],[20.382421875,39.802636718749994],[20.206835937500017,39.653515625],[20.13105468750001,39.66162109375],[20.05976562500001,39.699121093749994],[20.022558593750006,39.710693359375],[20.001269531250017,39.709423828125],[19.851855468750017,40.0435546875],[19.322265625,40.407080078125],[19.45917968750001,40.40537109375],[19.3375,40.663818359375],[19.57568359375,41.640429687499996],[19.577539062500023,41.7875],[19.342382812500006,41.869091796875],[19.280664062500023,42.17255859375],[19.65449218750001,42.628564453124994],[19.78828125000001,42.476171875],[20.06396484375,42.54726562499999]]]},"properties":{"name":"Albania","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[19.66230468750001,60.187158203124994],[19.53652343750005,60.14497070312501],[19.551367187500063,60.24384765625001],[19.66230468750001,60.187158203124994]]],[[[19.989550781250074,60.351171875],[20.258886718750063,60.26127929687499],[19.799804687500057,60.08173828125001],[19.68691406250005,60.267626953125045],[19.84765625000003,60.22055664062506],[19.823046875000074,60.390185546875045],[19.989550781250074,60.351171875]]]]},"properties":{"name":"Aland","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[1.7060546875,42.503320312499994],[1.534082031250023,42.441699218749996],[1.448828125,42.437451171875],[1.428125,42.46132812499999],[1.414843750000017,42.548388671874996],[1.428320312500006,42.5958984375],[1.501367187500023,42.642724609374994],[1.568164062500017,42.635009765625],[1.709863281250023,42.604443359375],[1.739453125000011,42.575927734375],[1.740234375,42.55673828125],[1.713964843750006,42.525634765625],[1.7060546875,42.503320312499994]]]},"properties":{"name":"Andorra","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[53.927832031250006,24.177197265624983],[53.63447265625004,24.169775390624977],[53.83378906250002,24.258935546875023],[53.927832031250006,24.177197265624983]]],[[[53.3322265625001,24.258593750000045],[53.19091796874997,24.290917968749966],[53.412402343750074,24.411035156250023],[53.3322265625001,24.258593750000045]]],[[[56.29785156250003,25.650683593750045],[56.38798828125002,24.97919921875004],[56.06386718750005,24.73876953125],[56.00058593750006,24.953222656249977],[55.795703125000074,24.868115234374955],[55.76083984375006,24.24267578125],[55.92861328125005,24.215136718750074],[55.98515625000002,24.063378906249966],[55.4684570312501,23.94111328125001],[55.53164062499999,23.81904296875001],[55.1999023437501,23.034765625000034],[55.185839843750074,22.7041015625],[55.104296875000074,22.621484375000023],[52.55507812500005,22.932812499999955],[51.592578125000074,24.07885742187503],[51.56835937500003,24.286181640625074],[51.76757812500003,24.25439453125],[51.84316406250005,24.010888671875023],[52.118554687499994,23.97109375],[52.64824218750002,24.154638671875006],[53.80175781249997,24.069482421874966],[54.14794921875003,24.17119140624999],[54.39707031250006,24.278173828125034],[54.74677734375004,24.810449218750023],[55.94121093750002,25.793994140625017],[56.08046875,26.06264648437505],[56.16748046875003,26.047460937499977],[56.144628906250006,25.690527343750006],[56.29785156250003,25.650683593750045]]]]},"properties":{"name":"United Arab Emirates","childNum":3}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-64.54916992187498,-54.71621093749998],[-63.81542968749997,-54.725097656250014],[-64.637353515625,-54.90253906250001],[-64.75732421875,-54.82656249999999],[-64.54916992187498,-54.71621093749998]]],[[[-68.65322265624994,-54.85361328124999],[-68.62993164062499,-52.65263671875004],[-68.24013671875,-53.08183593749999],[-68.43115234375,-53.0552734375],[-68.48852539062497,-53.260937499999976],[-68.16113281249997,-53.30644531250001],[-68.00849609374995,-53.5640625],[-67.29423828125002,-54.049804687500014],[-66.23564453124999,-54.53349609374997],[-65.17900390624993,-54.678125],[-65.47114257812495,-54.91464843749999],[-66.5111328125,-55.032128906249945],[-67.127099609375,-54.90380859375001],[-68.65322265624994,-54.85361328124999]]],[[[-61.084716796875,-23.65644531250001],[-60.83984375000003,-23.85810546874997],[-59.89248046874994,-24.093554687499974],[-59.18725585937497,-24.56230468749999],[-57.82167968749994,-25.136425781249983],[-57.56313476562494,-25.473730468749963],[-57.943115234375,-26.05292968750001],[-58.18149414062498,-26.30742187499999],[-58.222070312499994,-26.65],[-58.618603515624955,-27.13212890624996],[-58.64174804687494,-27.196093750000017],[-58.60483398437498,-27.314355468750037],[-58.16826171874993,-27.27343749999997],[-56.437158203124966,-27.553808593749977],[-56.16406250000003,-27.321484374999983],[-55.95146484374996,-27.325683593749957],[-55.789990234374926,-27.416406249999966],[-55.71464843749996,-27.41484375],[-55.632910156250006,-27.35712890624997],[-55.59379882812502,-27.288085937500014],[-55.597265625,-27.207617187499963],[-55.56489257812498,-27.15],[-55.496728515624966,-27.11533203124999],[-55.45063476562498,-27.068359375000014],[-55.426660156249994,-27.00927734374997],[-55.13593750000001,-26.931152343749957],[-54.934472656249994,-26.70253906250001],[-54.677734375,-26.308789062499997],[-54.631933593750006,-26.005761718749994],[-54.615869140624994,-25.576074218750023],[-54.44394531249998,-25.625],[-54.15458984374999,-25.523046874999963],[-53.89116210937499,-25.66884765625001],[-53.668554687500006,-26.288183593749977],[-53.83818359375002,-27.121093750000014],[-54.32700195312495,-27.423535156249997],[-54.82910156250003,-27.55058593750003],[-55.10151367187501,-27.866796874999963],[-55.72548828125002,-28.20410156250003],[-55.68725585937497,-28.38164062499996],[-55.890527343749994,-28.370019531249994],[-56.938623046874994,-29.594824218750034],[-57.22465820312499,-29.782128906249994],[-57.40522460937501,-30.03388671875004],[-57.563867187499994,-30.139941406249974],[-57.60888671875003,-30.187792968750045],[-57.65087890624997,-30.295019531250034],[-57.71269531249996,-30.38447265624997],[-57.83120117187502,-30.495214843749963],[-57.87250976562501,-30.591015625000026],[-57.81059570312499,-30.85859375000001],[-57.88632812499998,-30.937402343749994],[-57.86840820312497,-31.104394531249994],[-57.89335937499999,-31.195312499999957],[-58.03339843750001,-31.416601562500006],[-58.053857421874994,-31.494921874999974],[-58.009667968749966,-31.534375],[-57.98798828124998,-31.576171875],[-58.00698242187494,-31.684960937499966],[-58.04233398437495,-31.769238281249997],[-58.16748046874997,-31.87265625],[-58.18901367187499,-31.924218750000037],[-58.16040039062503,-31.986523437500026],[-58.156347656250006,-32.0515625],[-58.17700195312494,-32.11904296875002],[-58.16479492187494,-32.18486328125002],[-58.119726562500006,-32.24892578125002],[-58.12304687499997,-32.321875],[-58.201171875,-32.471679687500014],[-58.219970703125,-32.563964843749986],[-58.17099609374998,-32.95927734374996],[-58.424462890624994,-33.11152343749998],[-58.54721679687498,-33.66347656249998],[-58.392480468749966,-34.192968750000034],[-58.52548828124998,-34.29619140625002],[-58.28334960937494,-34.68349609375005],[-57.54785156250003,-35.018945312499994],[-57.170654296875,-35.3625],[-57.35390624999994,-35.72031249999998],[-57.33544921875,-36.026757812499966],[-57.07617187499994,-36.296777343749994],[-56.74946289062501,-36.346484375],[-56.67202148437494,-36.85126953124998],[-57.546972656250034,-38.085644531250026],[-58.17919921874994,-38.435839843750045],[-59.82832031250001,-38.83818359375003],[-61.112207031249994,-38.99296875000003],[-61.84790039062497,-38.961816406249994],[-62.33476562499993,-38.80009765625],[-62.29506835937502,-39.24326171874996],[-62.053662109374955,-39.373828125],[-62.179345703124994,-39.38046875000002],[-62.076806640624966,-39.46152343750002],[-62.131542968749926,-39.82539062499998],[-62.28691406249996,-39.89531250000002],[-62.40185546875003,-40.19658203125002],[-62.24633789062494,-40.674609374999974],[-62.39501953124997,-40.89082031249997],[-62.95903320312493,-41.10966796875006],[-63.621777343749955,-41.15976562499996],[-64.86948242187503,-40.735839843750014],[-65.13339843749998,-40.88066406250003],[-64.98637695312496,-42.102050781249986],[-64.53774414062494,-42.25458984374998],[-64.57099609374998,-42.416015625],[-64.42041015625003,-42.43378906249998],[-64.10087890624993,-42.395117187500006],[-64.06118164062494,-42.266113281250014],[-64.228515625,-42.21826171874996],[-63.795556640624994,-42.113867187500006],[-63.6298828125,-42.28271484375003],[-63.61733398437502,-42.695800781249986],[-64.03476562499998,-42.88125],[-64.48784179687499,-42.51347656250006],[-64.97070312499997,-42.66630859375002],[-65.02690429687496,-42.75888671874996],[-64.31914062499999,-42.968945312500026],[-64.83994140624998,-43.18886718749998],[-65.25234374999997,-43.571875],[-65.26552734375,-44.2796875],[-65.64760742187502,-44.661425781250045],[-65.63876953125,-45.0078125],[-66.19013671874995,-44.96474609375002],[-66.94140625,-45.25732421875003],[-67.59956054687495,-46.05253906250003],[-67.5064453125,-46.44277343749995],[-66.77685546874994,-47.005859375],[-65.99853515625,-47.09375],[-65.73808593749999,-47.34492187499998],[-65.81430664062495,-47.63818359374996],[-66.22524414062502,-47.826757812500006],[-65.93422851562497,-47.826757812500006],[-65.81005859374997,-47.941113281250026],[-67.46630859375,-48.95175781250004],[-67.68486328125002,-49.2466796875],[-67.82597656249999,-49.91962890625005],[-68.2572265625,-50.104589843749984],[-68.66757812500003,-49.75253906250003],[-68.66162109374997,-49.93574218750005],[-68.97958984375,-50.003027343749984],[-68.59794921874996,-50.00947265624997],[-68.421875,-50.15791015625001],[-69.04477539062495,-50.49912109374998],[-69.35859374999993,-51.028125],[-69.20102539062498,-50.99365234375001],[-69.03530273437497,-51.48896484375002],[-69.46542968750003,-51.58447265625003],[-68.96533203125003,-51.67714843749999],[-68.443359375,-52.35664062500004],[-69.96025390624993,-52.00820312500002],[-71.91865234374995,-51.98955078125004],[-72.40766601562501,-51.54082031250002],[-72.34023437499997,-50.68183593749999],[-72.50981445312496,-50.607519531250034],[-73.15292968749998,-50.73828125000003],[-73.50126953124996,-50.125292968750024],[-73.55419921875,-49.463867187500014],[-73.46157226562497,-49.31386718750001],[-73.13525390625,-49.30068359374999],[-73.03364257812501,-49.014355468750004],[-72.65126953125,-48.84160156249998],[-72.582861328125,-48.47539062499999],[-72.35473632812497,-48.36582031250005],[-72.32832031250001,-48.11005859374998],[-72.517919921875,-47.87636718749998],[-72.34594726562497,-47.49267578124997],[-71.90498046875001,-47.201660156250014],[-71.94023437499999,-46.83125],[-71.69965820312501,-46.6513671875],[-71.87568359374998,-46.160546875],[-71.63154296874998,-45.95371093749998],[-71.74619140624998,-45.57890625],[-71.34931640624995,-45.33193359374995],[-71.5962890625,-44.97919921875004],[-72.04169921874998,-44.90419921875004],[-72.06372070312503,-44.771875],[-71.26113281250002,-44.763085937499966],[-71.15971679687496,-44.56025390625004],[-71.21259765624998,-44.44121093750003],[-71.82001953124993,-44.38310546875],[-71.68007812500002,-43.92958984374998],[-71.90498046875001,-43.34755859374998],[-71.750634765625,-43.237304687499986],[-72.14643554687498,-42.990039062499974],[-72.10820312499993,-42.25185546874995],[-71.75,-42.04677734375001],[-71.91127929687497,-41.650390624999986],[-71.93212890624994,-40.69169921874999],[-71.70898437499997,-40.381738281249994],[-71.81831054687493,-40.17666015624995],[-71.65976562499998,-40.02080078125],[-71.71992187499995,-39.63525390624997],[-71.53945312499997,-39.60244140624995],[-71.40156249999995,-38.93505859374996],[-70.858642578125,-38.60449218750003],[-71.16757812499998,-37.76230468749996],[-71.19218750000002,-36.84365234375004],[-71.05551757812498,-36.52373046874996],[-70.40478515625,-36.06171874999998],[-70.41572265625001,-35.52304687500002],[-70.55517578125,-35.246875],[-70.39316406250003,-35.146875],[-70.05205078124999,-34.30078124999997],[-69.85244140625,-34.224316406250026],[-69.81962890624999,-33.28378906249999],[-70.08486328125002,-33.20175781249998],[-70.02197265625,-32.88457031250002],[-70.36376953125,-32.08349609374997],[-70.25439453125,-31.957714843750026],[-70.585205078125,-31.569433593749963],[-70.51958007812493,-31.1484375],[-70.30908203124994,-31.02265625000004],[-70.15322265625,-30.360937499999963],[-69.95634765624996,-30.35820312500003],[-69.84428710937493,-30.175],[-69.95996093749997,-30.078320312500026],[-70.02680664062501,-29.324023437500017],[-69.82788085937497,-29.10322265624997],[-69.65693359374995,-28.413574218749986],[-69.17441406249998,-27.924707031250037],[-68.84633789062494,-27.153710937499994],[-68.59208984375002,-27.140039062499966],[-68.31865234374999,-26.973242187500006],[-68.59160156249999,-26.47041015624997],[-68.41450195312498,-26.153710937500023],[-68.59208984375002,-25.420019531250034],[-68.38422851562495,-25.091894531249977],[-68.56201171875,-24.74736328125003],[-68.25029296875002,-24.391992187500023],[-67.35620117187503,-24.033789062499963],[-67.00878906249994,-23.00136718750005],[-67.19487304687493,-22.821679687500037],[-66.99111328125,-22.509863281250006],[-66.71171874999999,-22.216308593749986],[-66.36518554687501,-22.113769531249957],[-66.32246093750001,-22.053125],[-66.28212890624997,-21.94746093750001],[-66.24760742187496,-21.83046875],[-66.22016601562495,-21.802539062499974],[-66.174658203125,-21.805664062499986],[-66.09858398437495,-21.83505859375002],[-66.05859375,-21.87949218750002],[-65.86015624999999,-22.019726562499983],[-65.77104492187493,-22.099609375000014],[-65.68618164062497,-22.11025390625005],[-65.51879882812497,-22.094531250000045],[-64.99262695312498,-22.109667968750017],[-64.60551757812499,-22.228808593750045],[-64.52363281250001,-22.37158203125],[-64.47773437499998,-22.485351562499986],[-64.44550781249998,-22.585351562500023],[-64.37397460937498,-22.761035156250017],[-64.32529296875,-22.82763671875],[-64.30791015624993,-22.7953125],[-64.26640625000002,-22.60332031249996],[-63.97612304687502,-22.072558593750003],[-63.92167968749993,-22.028613281250017],[-62.843359375,-21.997265625000026],[-62.62597656250003,-22.29042968749998],[-62.54155273437496,-22.349609374999957],[-62.37250976562498,-22.439160156249997],[-62.21416015624996,-22.612402343750034],[-61.798535156249955,-23.18203125],[-61.084716796875,-23.65644531250001]]]]},"properties":{"name":"Argentina","childNum":3}},{"geometry":{"type":"Polygon","coordinates":[[[46.490625,38.90668945312498],[46.1144531250001,38.877783203125034],[45.977441406249994,39.24389648437503],[45.76630859375004,39.37846679687499],[45.78447265625002,39.54560546875001],[45.456835937500074,39.494482421875006],[45.15283203125003,39.58266601562502],[45.03164062500005,39.76513671874997],[44.76826171875004,39.70351562500005],[44.28925781250004,40.040380859375006],[43.66621093750004,40.12636718750002],[43.56933593750003,40.48237304687498],[43.72265624999997,40.71953124999999],[43.43945312500003,41.10712890625001],[44.077246093750006,41.182519531249994],[44.81132812500002,41.259375],[45.001367187499994,41.29096679687498],[45.188574218750006,41.14741210937504],[45.07050781250004,41.075585937499966],[45.5875,40.846923828125],[45.37890624999997,40.67358398437506],[45.45439453125002,40.532373046874966],[45.96464843750002,40.233789062499966],[45.8859375000001,40.024853515624955],[45.57978515625004,39.9775390625],[46.202050781249994,39.59448242187503],[46.48144531249997,39.55517578125003],[46.36523437500003,39.402490234374994],[46.584765625000074,39.22368164062499],[46.400292968749994,39.1921875],[46.490625,38.90668945312498]]]},"properties":{"name":"Armenia","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-170.72626953125,-14.351171875],[-170.8205078125,-14.312109375],[-170.568115234375,-14.266796875000011],[-170.72626953125,-14.351171875]]]},"properties":{"name":"American Samoa","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[69.2824218750001,-49.05888671875002],[69.16718750000004,-48.88291015624996],[69.36875,-48.89042968749998],[69.2824218750001,-49.05888671875002]]],[[[69.18486328125002,-49.10957031250004],[69.59277343749997,-48.97099609375005],[69.64404296875003,-49.11738281250003],[69.40507812500002,-49.18173828125],[69.5423828125,-49.25566406250005],[70.32021484375005,-49.05859374999996],[70.55546875000007,-49.201464843750024],[70.38613281250005,-49.433984374999966],[70.16582031250002,-49.34296874999998],[69.75996093750004,-49.430175781249986],[69.98642578125006,-49.58164062500003],[70.2477539062501,-49.53066406250003],[70.12431640625002,-49.70439453124999],[69.153125,-49.5296875],[68.99296875000007,-49.704980468750016],[68.81474609375002,-49.69960937499999],[68.88339843750006,-49.16494140624995],[68.76953125000003,-49.06591796875003],[69.00244140624997,-48.661230468750006],[69.13613281250005,-48.86103515625003],[69.05214843750005,-49.08193359375001],[69.18486328125002,-49.10957031250004]]],[[[51.83457031250006,-46.43994140625],[51.65927734375006,-46.37363281249999],[51.7418945312501,-46.32685546874997],[51.83457031250006,-46.43994140625]]]]},"properties":{"name":"Fr. S. Antarctic Lands","childNum":3}},{"geometry":{"type":"Polygon","coordinates":[[[-61.71606445312503,17.037011718749994],[-61.85966796874996,17.013330078124966],[-61.887109374999966,17.09814453125],[-61.81728515624994,17.168945312500057],[-61.71606445312503,17.037011718749994]]]},"properties":{"name":"Antigua and Barb.","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[147.35605468750006,-43.396972656250014],[147.30888671875007,-43.50078125000002],[147.10498046875003,-43.43115234374996],[147.28388671875004,-43.278906250000034],[147.35605468750006,-43.396972656250014]]],[[[145.04296875000003,-40.78671875],[145.28300781250002,-40.76992187500002],[146.31748046875006,-41.16347656250001],[146.72343750000002,-41.07802734375001],[146.84814453124997,-41.16806640624996],[146.98984375000006,-40.99238281249997],[147.45478515625004,-41.00166015624998],[147.62167968750012,-40.844726562499986],[147.87294921875005,-40.87255859374997],[147.96875,-40.779589843750045],[148.215234375,-40.85488281250002],[148.34257812500007,-42.21533203124997],[148.21367187500002,-41.97001953125],[147.92441406250006,-42.5724609375],[147.94541015625006,-43.18183593749997],[147.7858398437501,-43.22001953125002],[147.69892578125004,-43.12255859374997],[147.64794921874997,-43.02060546874999],[147.8,-42.928125],[147.57382812500006,-42.84570312499997],[147.4523437500001,-43.03339843750001],[147.29794921875006,-42.790917968749994],[147.24501953125005,-43.21591796874999],[146.99697265625005,-43.15634765625002],[147.07734375000004,-43.27587890625003],[146.87392578125,-43.6125],[146.54853515625004,-43.50888671874999],[146.04316406250004,-43.547167968749974],[145.99443359375007,-43.37607421875002],[146.20800781249997,-43.31621093749999],[145.8732421875001,-43.29238281250002],[145.48759765625002,-42.92666015625004],[145.19882812500006,-42.23085937500004],[145.46826171874997,-42.492871093750026],[145.51660156249997,-42.3544921875],[145.33105468750003,-42.14707031250002],[145.23486328124997,-42.19697265624997],[145.23818359375,-42.01962890624999],[144.76611328125003,-41.39003906249998],[144.64609375000006,-40.980859375],[144.71855468750002,-40.67226562500002],[145.04296875000003,-40.78671875]]],[[[148.23691406250006,-40.515136718749986],[148.18779296875007,-40.592578125000045],[148.11728515625012,-40.52148437499996],[148.23691406250006,-40.515136718749986]]],[[[144.784375,-40.506738281249966],[144.74804687499997,-40.589453125000034],[144.7833984375001,-40.434863281249974],[144.784375,-40.506738281249966]]],[[[148.32626953125006,-40.30693359375003],[148.40400390625004,-40.486523437500026],[148.02011718750012,-40.40419921874995],[148.32626953125006,-40.30693359375003]]],[[[148.000390625,-39.75761718750003],[148.29736328125003,-39.985742187499966],[148.31357421875012,-40.173535156250026],[148.10566406250004,-40.26210937499995],[147.76718750000012,-39.87031249999998],[148.000390625,-39.75761718750003]]],[[[143.92792968750004,-40.116113281249966],[143.83857421875004,-39.90410156250003],[144.00078125000007,-39.580175781250034],[144.14101562500005,-39.953808593750026],[143.92792968750004,-40.116113281249966]]],[[[145.31445312500003,-38.49082031249996],[145.35507812500012,-38.55703124999995],[145.12841796875003,-38.52763671875],[145.31445312500003,-38.49082031249996]]],[[[137.59648437500007,-35.73867187499998],[137.92890625000004,-35.72607421875],[138.12343750000005,-35.85234375],[137.67089843749997,-35.897949218750014],[137.44843750000004,-36.07480468749999],[137.20957031250012,-35.982421875],[136.7550781250001,-36.03310546875002],[136.540625,-35.89013671875003],[136.63867187499997,-35.74882812500002],[137.33408203125006,-35.59248046875004],[137.58496093749997,-35.620214843750006],[137.59648437500007,-35.73867187499998]]],[[[153.53876953125004,-27.436425781250037],[153.42656250000002,-27.70644531249998],[153.43544921875,-27.40537109375002],[153.53876953125004,-27.436425781250037]]],[[[113.18300781250005,-26.053125],[112.96425781250005,-25.78310546875001],[112.94707031250002,-25.531542968750017],[113.18300781250005,-26.053125]]],[[[153.07744140625002,-25.75078125],[152.97666015625012,-25.551367187499963],[153.03808593750003,-25.193164062500003],[153.22753906249997,-25.00576171875001],[153.14375,-24.814843750000023],[153.25693359375012,-24.72890625],[153.35019531250012,-25.063085937499963],[153.07744140625002,-25.75078125]]],[[[151.14658203125006,-23.49082031250002],[151.24013671875,-23.529687500000037],[151.23828124999997,-23.77578125],[151.03330078125006,-23.530175781250037],[151.14658203125006,-23.49082031250002]]],[[[115.44619140625005,-20.78779296875001],[115.31806640625004,-20.850585937500014],[115.43457031249997,-20.66796875000003],[115.44619140625005,-20.78779296875001]]],[[[149.04375,-20.29150390624997],[148.93886718750005,-20.283691406249986],[148.98105468750012,-20.153515625000026],[149.04375,-20.29150390624997]]],[[[146.27832031249997,-18.23125],[146.29882812499997,-18.48476562500005],[146.09882812500004,-18.251757812500003],[146.27832031249997,-18.23125]]],[[[139.45917968750004,-17.11455078124996],[139.49277343750006,-16.990429687499983],[139.57089843750006,-17.09443359375004],[139.45917968750004,-17.11455078124996]]],[[[139.50781250000003,-16.57304687499996],[139.1595703125,-16.74169921875003],[139.29296875000003,-16.467285156249986],[139.58789062499997,-16.39521484374997],[139.69775390624997,-16.514941406250017],[139.50781250000003,-16.57304687499996]]],[[[137.09365234375005,-15.778125],[136.94267578125002,-15.711718749999989],[137.00957031250007,-15.594824218749977],[137.09365234375005,-15.778125]]],[[[124.59726562500006,-15.40195312500002],[124.52421875000002,-15.421484375],[124.51933593750002,-15.26748046874998],[124.59726562500006,-15.40195312500002]]],[[[125.19882812500006,-14.57949218749998],[125.0912109375,-14.59169921874998],[125.15996093750002,-14.456054687499972],[125.19882812500006,-14.57949218749998]]],[[[136.71464843750002,-13.803906249999983],[136.89082031250004,-13.786621093750014],[136.74531250000004,-14.072656250000023],[136.95078125000006,-14.184277343750026],[136.89433593750002,-14.293066406249977],[136.33544921875003,-14.211816406250037],[136.42470703125,-13.864843749999963],[136.6556640625,-13.675878906250006],[136.71464843750002,-13.803906249999983]]],[[[136.23740234375006,-13.824511718750003],[136.12265625000012,-13.816601562499983],[136.21542968750012,-13.664746093750054],[136.23740234375006,-13.824511718750003]]],[[[136.33867187500007,-11.602343749999989],[136.18027343750006,-11.676757812499957],[136.47929687500002,-11.465917968749991],[136.33867187500007,-11.602343749999989]]],[[[130.45927734375007,-11.679296875000034],[130.60625,-11.816601562500026],[130.04326171875007,-11.787304687500011],[130.19755859375007,-11.658203125],[130.15283203124997,-11.477539062499972],[130.29492187499997,-11.33681640624998],[130.45927734375007,-11.679296875000034]]],[[[130.6188476562501,-11.376074218749991],[131.02304687500006,-11.334375],[131.26826171875004,-11.18984375],[131.53857421874997,-11.436914062500037],[130.95097656250007,-11.926464843750026],[130.51191406250004,-11.617871093749955],[130.38457031250002,-11.1921875],[130.6188476562501,-11.376074218749991]]],[[[136.59853515625,-11.378906249999943],[136.52656250000004,-11.438867187499994],[136.78027343749997,-11.0125],[136.59853515625,-11.378906249999943]]],[[[132.59335937500006,-11.302832031249991],[132.48378906250005,-11.037304687499983],[132.57880859375004,-10.968847656249977],[132.59335937500006,-11.302832031249991]]],[[[143.17890625000004,-11.954492187499966],[143.11025390625,-12.303515625000017],[143.40156250000004,-12.639941406249989],[143.5866210937501,-13.443652343750031],[143.54843750000012,-13.74101562499996],[143.75634765625003,-14.348828124999969],[143.96181640625005,-14.462890625000028],[144.473046875,-14.231835937500023],[144.64804687500006,-14.492480468750017],[145.28769531250006,-14.943164062499989],[145.42607421875002,-16.406152343749966],[145.75478515625,-16.879492187500034],[145.91210937499997,-16.9125],[146.12587890625005,-17.63525390625],[146.03222656249997,-18.272851562500037],[146.3332031250001,-18.55371093749997],[146.38339843750006,-18.97705078124997],[147.13876953125006,-19.39316406250002],[147.41855468750012,-19.378125],[147.7423828125001,-19.770117187499977],[148.759375,-20.28955078125003],[148.88476562499997,-20.480859375],[148.72998046874997,-20.4677734375],[148.68369140625012,-20.58017578124999],[149.20488281250007,-21.125097656249977],[149.45410156249997,-21.57871093750002],[149.70390625000002,-22.440527343750006],[149.82246093750004,-22.389843749999983],[149.97441406250007,-22.55068359374998],[149.94189453125003,-22.30810546875003],[150.07617187500003,-22.16445312499998],[150.54130859375002,-22.55908203125],[150.56855468750004,-22.38398437500004],[150.67246093750012,-22.418164062499983],[150.84316406250005,-23.4580078125],[151.15380859375003,-23.784082031249994],[151.83164062500006,-24.12294921875001],[152.12988281250003,-24.59755859374998],[152.45634765625007,-24.802441406249983],[152.65429687499997,-25.201953125000017],[152.91347656250005,-25.432128906250014],[152.98496093750012,-25.816210937500003],[153.16494140625,-25.964160156250045],[153.11679687500006,-27.194433593750034],[153.57568359375003,-28.24052734374999],[153.6168945312501,-28.673046875],[153.03056640625002,-30.563378906249994],[152.94394531250012,-31.43486328124999],[152.5592773437501,-32.045703125],[152.4704101562501,-32.439062500000034],[152.13652343750002,-32.678125],[152.1642578125001,-32.75742187499996],[151.812890625,-32.90107421875001],[151.29208984375012,-33.580957031249966],[151.28027343750003,-33.92666015625005],[151.12480468750007,-34.00527343749998],[151.23154296875006,-34.0296875],[150.8712890625001,-34.49912109374996],[150.80458984375,-35.01289062500001],[150.19531249999997,-35.83359374999996],[149.93271484375012,-37.528515625000026],[149.480859375,-37.77119140625],[147.87675781250002,-37.93417968749998],[146.8568359375,-38.663476562499966],[146.21748046875004,-38.72744140625004],[146.33662109375004,-38.89423828125],[146.46660156250007,-38.84033203125003],[146.40000000000012,-39.14550781250003],[146.1583984375001,-38.86572265624996],[145.93535156250002,-38.90175781250002],[145.79082031250007,-38.66699218749997],[145.39726562500002,-38.53535156249998],[145.54218750000004,-38.39384765625002],[145.4757812500001,-38.24375],[145.29277343750002,-38.237597656249974],[144.95957031250012,-38.500781250000045],[144.71777343749997,-38.34033203125004],[144.91142578125007,-38.34404296874999],[145.11992187500007,-38.091308593750014],[144.89130859375004,-37.899804687499994],[144.39550781250003,-38.13691406249998],[144.6652343750001,-38.20996093750003],[143.53896484375005,-38.82089843749998],[142.45585937500002,-38.38632812499999],[141.725,-38.27138671875002],[141.5939453125001,-38.38779296875002],[141.42421875,-38.36347656250004],[141.0109375000001,-38.07695312500003],[140.39042968750007,-37.89667968749998],[139.78427734375012,-37.24580078124998],[139.85732421875,-36.662109375],[139.72900390625003,-36.37138671875002],[138.9689453125001,-35.58076171874997],[139.17802734375007,-35.52304687500002],[139.289453125,-35.61132812499997],[139.28251953125002,-35.375390624999966],[138.521875,-35.6423828125],[138.184375,-35.612695312499994],[138.5111328125,-35.02441406249996],[138.48994140625004,-34.76357421875002],[138.0892578125,-34.16982421875002],[137.69169921875002,-35.14296875000004],[136.88359375000007,-35.23974609375004],[137.01425781250012,-34.91582031250003],[137.39101562500005,-34.91328124999997],[137.49384765625004,-34.16113281250003],[137.9318359375001,-33.57910156250003],[137.85234375000007,-33.20078124999996],[137.99257812500005,-33.094238281250014],[137.78320312500003,-32.578125],[137.79091796875,-32.82324218749996],[137.44228515625,-33.1935546875],[137.23730468750003,-33.62949218749999],[136.43066406249997,-34.02998046875004],[135.891015625,-34.660937499999974],[135.96972656249997,-34.98183593749998],[135.7923828125,-34.863281249999986],[135.64755859375006,-34.93964843750001],[135.12304687499997,-34.58574218750003],[135.21679687499997,-34.48730468749996],[135.45,-34.58105468749996],[135.21894531250004,-33.959765625000045],[134.88876953125012,-33.62636718749998],[134.79101562499997,-33.32832031250001],[134.60771484375002,-33.19013671875001],[134.30126953124997,-33.16503906249996],[134.17353515625004,-32.979101562500006],[134.10039062500007,-32.748632812500034],[134.22714843750006,-32.73056640624999],[134.23417968750007,-32.54853515625004],[133.66533203125007,-32.207226562500054],[133.21210937500004,-32.18378906249998],[132.75742187500012,-31.95625],[132.21464843750002,-32.00712890624996],[131.14365234375006,-31.49570312500005],[130.78300781250002,-31.604003906249986],[129.1876953125001,-31.659960937500017],[127.31982421874997,-32.2640625],[125.91718750000004,-32.296972656250034],[124.75878906250003,-32.882714843749994],[124.24375,-33.01523437499999],[123.50683593749997,-33.916210937500054],[122.15097656250006,-33.99179687499999],[122.06113281250006,-33.874414062499966],[121.40507812500007,-33.826757812500034],[119.85410156250012,-33.97470703124998],[119.45058593750005,-34.368261718750034],[118.89531250000007,-34.47988281250004],[118.13554687500002,-34.98662109374999],[117.58193359375005,-35.09775390624998],[116.51718750000012,-34.98789062499998],[115.98671875000005,-34.795019531250034],[115.56503906250012,-34.42578125000003],[115.00878906250003,-34.25585937499997],[114.9938476562501,-33.51533203125],[115.3587890625,-33.63994140624999],[115.68300781250005,-33.19287109375003],[115.6984375000001,-31.694531250000054],[115.07792968750007,-30.560449218750023],[114.85683593750005,-29.14296875],[114.16513671875012,-28.08066406250002],[114.028125,-27.34726562499999],[113.18476562500004,-26.182226562499963],[113.32324218749997,-26.243847656249997],[113.35605468750012,-26.080468750000023],[113.58164062500006,-26.558105468749986],[113.73369140625002,-26.59511718749998],[113.83642578125003,-26.50058593749999],[113.85283203125007,-26.33212890625005],[113.39531250000002,-25.71328125],[113.4513671875001,-25.599121093750014],[113.7130859375001,-25.83076171875004],[113.72373046875006,-26.129785156250037],[113.85390625,-26.01445312499999],[113.99199218750007,-26.32148437500001],[114.09033203124997,-26.393652343749963],[114.21572265625,-26.289453124999966],[114.2142578125,-25.851562500000014],[113.41767578125004,-24.435644531250034],[113.48984375000012,-23.869628906250014],[113.7570312500001,-23.418164062500054],[113.79511718750004,-22.91455078125003],[113.68281250000004,-22.637792968749963],[114.02285156250005,-21.881445312499977],[114.12392578125005,-21.828613281249957],[114.14160156250003,-22.483105468749983],[114.37773437500007,-22.341503906249997],[114.70927734375002,-21.82343749999997],[115.45615234375012,-21.49169921874997],[116.0109375000001,-21.030371093749963],[116.7067382812501,-20.653808593749986],[117.40625,-20.72119140625003],[118.19921875000003,-20.37519531249997],[118.75146484374997,-20.261914062499983],[119.10449218749997,-19.995312500000026],[119.58593750000003,-20.03828125],[120.99794921875,-19.604394531249966],[121.33769531250002,-19.31992187500002],[121.83378906250002,-18.477050781249986],[122.34541015625004,-18.11191406250002],[122.14746093749997,-17.54902343750001],[122.2609375000001,-17.135742187500014],[122.72041015625004,-16.78769531249999],[122.97070312499997,-16.436816406250003],[123.56308593750006,-17.520898437499966],[123.59355468750007,-17.03037109375005],[123.83105468750003,-17.120800781249997],[123.8744140625,-16.918652343750026],[123.4904296875001,-16.49072265624997],[123.62597656249997,-16.416308593750003],[123.60703125000006,-16.224023437499994],[123.72890625,-16.192480468749963],[123.85917968750007,-16.38232421875],[124.04443359374997,-16.264941406249974],[124.30039062500006,-16.388281249999977],[124.77197265624997,-16.40263671874996],[124.40488281250006,-16.298925781249977],[124.41640625,-16.133496093750026],[124.5768554687501,-16.11367187499998],[124.64853515625012,-15.870214843750034],[124.50429687500005,-15.972460937499989],[124.38164062500002,-15.758203125000037],[124.43955078125012,-15.493554687500037],[124.56162109375012,-15.496289062499969],[124.69257812500004,-15.273632812499997],[125.06298828125003,-15.44228515624998],[125.0729492187501,-15.306738281249991],[124.90917968750003,-15.310058593749957],[124.83906250000004,-15.160742187500006],[125.03818359375012,-15.004101562499969],[125.35566406250004,-15.119824218750011],[125.17871093749997,-14.714746093749994],[125.57978515625004,-14.483203124999989],[125.62773437500002,-14.256640625000017],[125.70458984374997,-14.29140625],[125.66162109375003,-14.529492187500011],[125.81953125000004,-14.469140624999966],[125.890625,-14.61796875],[126.0207031250001,-14.49453125],[126.0539062500001,-13.977246093750026],[126.1842773437501,-14.00205078125002],[126.25849609375004,-14.163574218749972],[126.403125,-14.018945312499994],[126.5697265625,-14.160937499999974],[126.7806640625,-13.955175781249977],[126.77558593750004,-13.788476562500037],[126.90322265625,-13.744140624999972],[127.45761718750006,-14.031445312499969],[128.18046875000007,-14.711621093749983],[128.06943359375012,-15.329296874999969],[128.15546875000004,-15.225585937499972],[128.25468750000002,-15.298535156250011],[128.175,-15.043164062500026],[128.57578125000006,-14.774511718750006],[129.05820312500012,-14.884375],[129.21582031249997,-15.160253906249991],[129.26757812500003,-14.871484375000051],[129.63476562499997,-15.139746093749991],[129.637109375,-14.850976562500037],[129.84873046875012,-14.828906249999989],[129.60468750000004,-14.647070312499977],[129.69794921875004,-14.557421875000017],[129.37871093750002,-14.39248046874998],[129.70986328125,-13.979980468749972],[129.83886718749997,-13.572949218749997],[130.25976562500003,-13.30224609375],[130.1349609375001,-13.145507812499957],[130.1681640625001,-12.957421875],[130.39990234374997,-12.68789062499999],[130.61748046875007,-12.646875],[130.62265625000006,-12.43105468749998],[130.8673828125001,-12.557812499999955],[130.87382812500007,-12.367187500000028],[131.29160156250006,-12.067871093749972],[131.43828125000002,-12.27695312500002],[132.06406250000006,-12.28076171875],[132.25322265625007,-12.186035156249972],[132.41103515625,-12.295117187499997],[132.51054687500002,-12.134863281250034],[132.71279296875,-12.1234375],[132.63046875000012,-12.035156249999972],[132.67421875000005,-11.649023437499991],[132.47519531250006,-11.491503906249974],[132.07285156250006,-11.474707031250006],[131.82246093750004,-11.302441406249997],[131.96152343750006,-11.180859375000011],[132.15546875000004,-11.311132812499991],[132.33398437499997,-11.223535156249994],[132.6828125000001,-11.505566406249997],[132.96103515625012,-11.407324218749963],[133.18525390625004,-11.705664062499991],[133.90419921875,-11.832031249999972],[134.4173828125,-12.052734375],[134.73027343750002,-11.984375],[135.02968750000005,-12.19375],[135.2179687500001,-12.221679687499957],[135.92246093750012,-11.825781250000034],[135.70439453125007,-12.209863281250037],[136.00849609375004,-12.19140625],[136.08183593750007,-12.422460937500006],[136.26064453125,-12.433789062499997],[136.32851562500005,-12.305566406249994],[136.24990234375,-12.173046875],[136.44335937499997,-11.951464843749974],[136.7194335937501,-12.226464843749952],[136.89746093749997,-12.243554687499966],[136.94746093750004,-12.34990234374996],[136.53701171875,-12.784277343749991],[136.59433593750012,-13.003808593750051],[136.46103515625006,-13.225195312500034],[136.29414062500004,-13.137988281250031],[135.92734375000012,-13.304296874999977],[135.95449218750005,-13.934863281250017],[135.40517578125005,-14.758203124999966],[135.4533203125001,-14.923144531250003],[136.20537109375002,-15.403417968749963],[136.29140625000005,-15.570117187500003],[136.70488281250007,-15.685253906250011],[136.78466796874997,-15.89423828125004],[137.00214843750004,-15.878320312499994],[137.70371093750006,-16.233007812499963],[138.24501953125005,-16.718359374999977],[139.00986328125006,-16.899316406249994],[139.2484375,-17.328613281249957],[140.03583984375004,-17.702636718749957],[140.51113281250005,-17.62451171875003],[140.83046875,-17.414453125000037],[141.29140625,-16.46347656250002],[141.62548828124997,-15.056640625000014],[141.52294921875003,-14.470117187499994],[141.59433593750006,-14.152832031250014],[141.47255859375,-13.797558593750011],[141.64541015625,-13.259082031250003],[141.61357421875002,-12.943457031250006],[141.92978515625006,-12.73984375],[141.67773437500003,-12.491406250000011],[141.68857421875012,-12.351074218750028],[141.87050781250005,-11.9755859375],[141.96113281250004,-12.054296874999963],[142.168359375,-10.946582031249974],[142.45644531250005,-10.707324218749989],[142.60507812500012,-10.748242187499983],[142.55273437500003,-10.874414062500023],[142.7796875,-11.115332031249977],[142.87255859374997,-11.821386718750034],[143.17890625000004,-11.954492187499966]]],[[[142.2748046875,-10.704785156250011],[142.19140624999997,-10.762011718750031],[142.1310546875001,-10.640625],[142.19794921875004,-10.59199218750004],[142.2748046875,-10.704785156250011]]]]},"properties":{"name":"Australia","childNum":30}},{"geometry":{"type":"Polygon","coordinates":[[[16.953125,48.598828125],[16.86542968750001,48.3869140625],[17.147363281250023,48.00595703125],[17.06660156250001,47.707568359374996],[16.421289062500023,47.674462890624994],[16.676562500000017,47.536035156249994],[16.44287109375,47.39951171875],[16.453417968750017,47.006787109375],[16.093066406250017,46.86328125],[15.957617187500006,46.677636718749994],[14.893261718750011,46.605908203125],[14.5498046875,46.399707031249996],[13.7,46.520263671875],[13.490039062500017,46.555566406249994],[13.3515625,46.557910156249996],[13.16875,46.57265625],[12.479199218750011,46.672509765624994],[12.38828125,46.70263671875],[12.330078125,46.759814453124996],[12.267968750000023,46.835888671875],[12.154101562500017,46.93525390625],[12.130761718750023,46.98476562499999],[12.16552734375,47.028173828125],[12.201269531250006,47.060888671875],[12.197167968750023,47.075],[12.16943359375,47.08212890625],[11.775683593750017,46.986083984375],[11.527539062500011,46.997412109375],[11.433203125,46.983056640624994],[11.244433593750017,46.97568359375],[11.133886718750006,46.936181640624994],[11.0634765625,46.859130859375],[11.025097656250011,46.79697265625],[10.993261718750006,46.777001953124994],[10.92734375,46.769482421875],[10.828906250000017,46.775244140625],[10.759765625,46.793310546875],[10.689257812500017,46.84638671875],[10.579785156250011,46.8537109375],[10.479394531250023,46.855126953124994],[10.452832031250011,46.86494140625],[10.45458984375,46.8994140625],[10.414941406250023,46.964404296874996],[10.349414062500017,46.98476562499999],[10.133496093750011,46.851513671875],[9.580273437500011,47.057373046875],[9.527539062500011,47.270751953125],[9.625878906250023,47.467041015625],[9.524023437500006,47.52421875],[9.748925781250023,47.575537109375],[9.839160156250017,47.552294921874996],[9.971582031250023,47.505322265625],[10.034082031250023,47.473583984375],[10.059863281250017,47.449072265625],[10.066308593750023,47.393359375],[10.200292968750006,47.363427734374994],[10.183007812500023,47.27880859375],[10.369140625,47.366064453125],[10.40390625,47.4169921875],[10.439453125,47.5515625],[10.482812500000023,47.541796875],[10.65869140625,47.547216796875],[10.741601562500023,47.52412109375],[10.873046875,47.52021484375],[11.0419921875,47.393115234374996],[12.185644531250006,47.61953125],[12.203808593750011,47.646728515625],[12.196875,47.70908203125],[12.209277343750017,47.71826171875],[12.268359375000017,47.702734375],[12.353540736607165,47.70264787946429],[12.492553013392856,47.68551897321428],[12.685839843750017,47.669335937499994],[12.771386718750023,47.639404296875],[12.796191406250017,47.60703125],[12.781152343750023,47.5904296875],[12.7828125,47.56416015625],[12.809375,47.5421875],[12.87890625,47.5064453125],[12.968066406250017,47.47568359375],[13.014355468750011,47.478076171874996],[13.031542968750017,47.5080078125],[13.047949218750006,47.579150390624996],[13.054101562500023,47.655126953125],[12.897656250000011,47.721875],[12.953515625000023,47.890625],[12.760351562500006,48.106982421874996],[13.215234375000023,48.301904296874994],[13.322851562500006,48.33125],[13.409375,48.394140625],[13.459863281250023,48.56455078125],[13.4716796875,48.571826171874996],[13.486621093750017,48.581835937499996],[13.636623883928596,48.580904017857144],[13.785351562500011,48.587451171874996],[13.798828125,48.6216796875],[13.802929687500011,48.747509765625],[13.814746093750017,48.766943359375],[14.049121093750017,48.602490234375],[14.691308593750023,48.59921875],[15.066796875000023,48.997851562499996],[16.057226562500006,48.754785156249994],[16.543554687500006,48.796240234375],[16.953125,48.598828125]]]},"properties":{"name":"Austria","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[46.1144531250001,38.877783203125034],[45.4796875000001,39.00625],[44.81718750000002,39.65043945312496],[44.76826171875004,39.70351562500005],[45.03164062500005,39.76513671874997],[45.15283203125003,39.58266601562502],[45.456835937500074,39.494482421875006],[45.78447265625002,39.54560546875001],[45.76630859375004,39.37846679687499],[45.977441406249994,39.24389648437503],[46.1144531250001,38.877783203125034]]],[[[48.572851562500006,41.84448242187503],[49.45673828125004,40.79985351562502],[49.77597656250006,40.583984375],[50.18251953125005,40.50478515625002],[50.3659179687501,40.279492187499955],[49.91884765625005,40.31640625000003],[49.55117187499999,40.19414062499999],[49.3244140625001,39.60834960937501],[49.36279296875003,39.349560546874955],[49.16533203125002,39.03027343750003],[49.013476562500074,39.13398437500001],[48.85449218750003,38.83881835937501],[48.86875,38.43549804687498],[48.59267578125005,38.41108398437498],[47.99648437499999,38.85375976562503],[48.292089843750006,39.01884765624999],[48.10439453125005,39.241113281249994],[48.322167968749994,39.39907226562502],[47.995898437500074,39.683935546875034],[46.490625,38.90668945312498],[46.400292968749994,39.1921875],[46.584765625000074,39.22368164062499],[46.36523437500003,39.402490234374994],[46.48144531249997,39.55517578125003],[46.202050781249994,39.59448242187503],[45.57978515625004,39.9775390625],[45.8859375000001,40.024853515624955],[45.96464843750002,40.233789062499966],[45.45439453125002,40.532373046874966],[45.37890624999997,40.67358398437506],[45.5875,40.846923828125],[45.07050781250004,41.075585937499966],[45.188574218750006,41.14741210937504],[45.001367187499994,41.29096679687498],[45.2171875,41.423193359375006],[45.28095703125004,41.449560546875034],[46.086523437500006,41.183837890625],[46.43095703125002,41.077050781249994],[46.534375,41.08857421875004],[46.62636718750005,41.15966796875006],[46.66240234375002,41.24550781250002],[46.67255859375004,41.28681640625001],[46.61894531250002,41.34375],[46.30546875000002,41.507714843749994],[46.18427734375004,41.70214843749997],[46.42988281250004,41.890966796875006],[46.74931640625002,41.812597656250006],[47.31767578125002,41.28242187500001],[47.79101562499997,41.19926757812502],[48.572851562500006,41.84448242187503]]]]},"properties":{"name":"Azerbaijan","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[30.553613281250023,-2.400097656250011],[30.53369140625,-2.42626953125],[30.441992187500006,-2.613476562500011],[30.424218750000023,-2.6416015625],[30.47333984375001,-2.6943359375],[30.42402343750001,-2.824023437500003],[30.433496093750023,-2.87451171875],[30.515039062500023,-2.917578125],[30.604296875000017,-2.935253906250011],[30.70947265625,-2.977246093750011],[30.7802734375,-2.98486328125],[30.811132812500006,-3.116406250000011],[30.79023437500001,-3.274609375000011],[30.4,-3.65390625],[29.947265625,-4.307324218750011],[29.7177734375,-4.455859375],[29.403222656250023,-4.449316406250006],[29.211816406250023,-3.833789062500003],[29.224414062500017,-3.053515625],[29.01435546875001,-2.72021484375],[29.10205078125,-2.595703125],[29.390234375,-2.80859375],[29.698046875000017,-2.794726562500003],[29.8681640625,-2.71640625],[29.93017578125,-2.339550781250011],[30.117285156250006,-2.416601562500006],[30.408496093750017,-2.31298828125],[30.553613281250023,-2.400097656250011]]]},"properties":{"name":"Burundi","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[5.693554687500011,50.774755859375006],[5.993945312500017,50.75043945312504],[6.340917968750006,50.451757812500034],[6.116503906250045,50.120996093749966],[6.08906250000004,50.15458984374996],[6.054785156249977,50.154296875],[5.976269531250068,50.167187499999955],[5.866894531250068,50.08281250000002],[5.817382812500028,50.01269531250003],[5.7880859375,49.96123046875002],[5.744042968749994,49.91962890624998],[5.789746093749983,49.53828125000001],[5.50732421875,49.51088867187502],[4.867578125000051,49.78813476562502],[4.818652343750045,50.153173828125034],[4.545019531250063,49.96025390624999],[4.149316406250023,49.971582031249994],[4.174609375000017,50.24648437500005],[3.689355468750023,50.30605468750002],[3.595410156250068,50.47734374999999],[3.27333984375008,50.53154296875002],[3.10683593750008,50.779443359374994],[2.759375,50.750634765624994],[2.52490234375,51.097119140624955],[3.35009765625,51.37768554687503],[3.43251953125008,51.24575195312505],[3.902050781250011,51.20766601562502],[4.226171875000034,51.38647460937503],[5.03095703125004,51.46909179687498],[5.214160156250045,51.278955078124966],[5.796484375000034,51.153076171875],[5.693554687500011,50.774755859375006]]]},"properties":{"name":"Belgium","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[3.595410156250011,11.6962890625],[3.553906250000011,11.631884765624989],[3.490527343750017,11.49921875],[3.48779296875,11.395410156249994],[3.638867187500011,11.176855468749991],[3.65625,11.154589843749989],[3.6953125,11.1203125],[3.71640625,11.07958984375],[3.7568359375,10.76875],[3.83447265625,10.607421875],[3.771777343750017,10.417626953124994],[3.646582031250006,10.408984374999989],[3.60205078125,10.004541015624994],[3.3251953125,9.778466796874994],[3.044921875,9.083837890624991],[2.774804687500023,9.048535156249997],[2.703125,8.371826171875],[2.68603515625,7.873730468749997],[2.719335937500006,7.616259765624989],[2.7509765625,7.541894531249994],[2.78515625,7.476855468749989],[2.783984375000017,7.443408203124989],[2.765820312500011,7.422509765624994],[2.75048828125,7.395068359374989],[2.756738281250023,7.067919921874989],[2.721386718750011,6.980273437499989],[2.731738281250017,6.852832031249989],[2.7529296875,6.771630859374994],[2.774609375000011,6.711718749999989],[2.753710937500017,6.661767578124994],[2.735644531250017,6.595703125],[2.706445312500023,6.369238281249991],[1.62265625,6.216796875],[1.777929687500006,6.294628906249997],[1.530957031250011,6.992431640625],[1.624707031250011,6.997314453125],[1.600195312500006,9.050048828125],[1.3857421875,9.361669921874991],[1.330078125,9.996972656249994],[0.763378906250011,10.386669921874997],[0.900488281250006,10.993261718749991],[1.4267578125,11.447119140624991],[1.980371093750023,11.418408203124997],[2.38916015625,11.897070312499991],[2.366015625000017,12.221923828125],[2.805273437500006,12.383837890624989],[3.595410156250011,11.6962890625]]]},"properties":{"name":"Benin","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[0.217480468750011,14.911474609374991],[0.163867187500017,14.497216796874994],[0.382519531250011,14.245800781249997],[0.42919921875,13.972119140624997],[0.6181640625,13.703417968750003],[1.201171875,13.357519531249991],[0.988476562500011,13.36484375],[0.9873046875,13.041894531249994],[1.56494140625,12.635400390624994],[2.104589843750006,12.701269531249991],[2.226269531250011,12.466064453125],[2.072949218750011,12.309375],[2.38916015625,11.897070312499991],[1.980371093750023,11.418408203124997],[1.4267578125,11.447119140624991],[0.900488281250006,10.993261718749991],[0.49267578125,10.954980468749994],[-0.068603515625,11.115625],[-0.299462890624994,11.166894531249994],[-0.627148437499983,10.927392578124994],[-1.04248046875,11.010058593749989],[-2.829931640624977,10.998388671874991],[-2.914892578124977,10.592333984374989],[-2.791162109374994,10.432421874999989],[-2.780517578125,9.745849609375],[-2.765966796874977,9.658056640624991],[-2.706201171874994,9.533935546875],[-2.695849609374989,9.481347656249994],[-2.7171875,9.457128906249991],[-2.7666015625,9.424707031249994],[-2.816748046874977,9.425830078124989],[-2.875146484374994,9.500927734374997],[-2.90087890625,9.534619140624997],[-2.948144531249994,9.610742187499994],[-2.98828125,9.687353515624991],[-3.042626953124994,9.720898437499997],[-3.095800781249977,9.752099609374994],[-3.160693359374989,9.849169921874989],[-3.223535156249994,9.895458984374997],[-3.289697265624994,9.882226562499994],[-3.581152343749977,9.92431640625],[-3.790625,9.9171875],[-4.18115234375,9.78173828125],[-4.267187499999977,9.743261718749991],[-4.332226562499983,9.645703125],[-4.406201171874983,9.647998046874989],[-4.526611328125,9.723486328124991],[-4.625830078124977,9.713574218749997],[-4.721777343749977,9.756542968749997],[-5.262304687499977,10.319677734374991],[-5.523535156249977,10.426025390625],[-5.490478515625,11.042382812499994],[-5.250244140625,11.375781249999989],[-5.288134765624989,11.827929687499989],[-4.699316406249977,12.076171875],[-4.4287109375,12.337597656249997],[-4.480615234374994,12.672216796874991],[-4.227099609374989,12.793701171875],[-4.328710937499977,13.119042968749994],[-4.151025390624994,13.306201171875003],[-3.947314453124989,13.402197265624991],[-3.527636718749989,13.182714843749991],[-3.3017578125,13.28076171875],[-3.248632812499977,13.658349609374994],[-2.950830078124994,13.6484375],[-2.873925781249994,13.950732421875003],[-2.586718749999989,14.227587890625003],[-2.113232421874983,14.16845703125],[-1.97304687499999,14.45654296875],[-1.049560546875,14.81953125],[-0.760449218749983,15.047753906249994],[-0.235888671874989,15.059423828124991],[0.217480468750011,14.911474609374991]]]},"properties":{"name":"Burkina Faso","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[91.94921875000003,21.50805664062503],[91.85947265625012,21.532958984375057],[91.90771484374997,21.722949218750017],[91.94921875000003,21.50805664062503]]],[[[91.87382812500002,21.832128906249977],[91.8375976562501,21.750244140625],[91.85068359375012,21.927050781250045],[91.87382812500002,21.832128906249977]]],[[[91.15078125000005,22.175195312499966],[91.04472656250002,22.10517578125001],[91.0794921875,22.519726562499983],[91.15078125000005,22.175195312499966]]],[[[91.55673828125006,22.38222656250005],[91.41132812500004,22.475683593750006],[91.45605468749997,22.61650390624999],[91.55673828125006,22.38222656250005]]],[[[90.77763671875007,22.089306640624983],[90.51503906250005,22.06513671875001],[90.68046875000007,22.327490234375006],[90.50292968749997,22.835351562499994],[90.59648437500002,22.863525390625057],[90.86816406250003,22.48486328125],[90.77763671875007,22.089306640624983]]],[[[88.94072265625002,26.24536132812497],[88.97041015625004,26.250878906250023],[88.95195312500002,26.412109375],[89.01865234375012,26.410253906249977],[89.28925781250004,26.03759765625],[89.54990234375006,26.005273437499994],[89.57275390625003,26.13232421875003],[89.67089843750003,26.21381835937504],[89.8229492187501,25.94140625000003],[89.82490234375004,25.56015625],[89.80087890625012,25.33613281250001],[89.81406250000006,25.305371093749955],[89.86630859375012,25.293164062499955],[90.11962890625003,25.21997070312497],[90.61308593750002,25.16772460937497],[92.04970703125005,25.16948242187499],[92.46835937500006,24.94414062499999],[92.38496093750004,24.848779296875023],[92.25126953125007,24.895068359375045],[92.22832031250002,24.88134765625],[92.22666015625012,24.77099609374997],[92.11748046875002,24.493945312500017],[92.06416015625004,24.374365234375006],[91.84619140624997,24.17529296875003],[91.72656250000003,24.20507812499997],[91.35019531250012,24.06049804687501],[91.16044921875007,23.66064453125],[91.359375,23.06835937500003],[91.43623046875004,23.19990234375001],[91.55351562500002,22.991552734375006],[91.61953125,22.97968750000001],[91.75097656250003,23.053515625000017],[91.75419921875007,23.287304687499955],[91.79003906249997,23.361035156249983],[91.937890625,23.504687500000017],[91.92949218750007,23.598242187499977],[91.92958984375,23.68598632812501],[91.97851562500003,23.691992187499977],[92.04404296875006,23.677783203125017],[92.24609375000003,23.683593750000057],[92.33378906250002,23.242382812499955],[92.36162109375002,22.929003906250074],[92.46445312500006,22.734423828125045],[92.49140625000004,22.685400390625006],[92.5612304687501,22.04804687500001],[92.57490234375004,21.978076171875045],[92.58281250000002,21.940332031249994],[92.5934570312501,21.46733398437499],[92.63164062500002,21.306201171875045],[92.33056640624997,21.439794921874977],[92.17958984375005,21.293115234375023],[92.32412109375,20.791845703125063],[92.0560546875,21.1748046875],[91.86337890625012,22.350488281249966],[91.7970703125001,22.297460937500006],[91.48007812500006,22.884814453125045],[91.2162109375,22.642236328124994],[90.94560546875002,22.597021484375034],[90.65625,23.025488281250006],[90.60400390624997,23.59135742187499],[90.55566406249997,23.42153320312505],[90.26914062500012,23.455859375000017],[90.59091796875012,23.266406250000045],[90.43505859374997,22.751904296874955],[90.61611328125,22.362158203125034],[90.23056640625006,21.82978515625004],[90.07119140625005,21.887255859375017],[90.20957031250006,22.156591796875006],[89.95419921875006,22.022851562500023],[89.91806640625012,22.11616210937501],[89.98515625000002,22.466406250000063],[89.81191406250005,21.983496093750006],[89.56855468750004,21.767431640625034],[89.48320312500007,22.275537109374994],[89.50058593750006,21.914355468750045],[89.35371093750004,21.72109375],[89.09394531250004,21.872753906249983],[89.05,22.274609374999983],[88.92070312500002,22.632031249999955],[88.89970703125002,22.843505859375057],[88.85058593749997,23.040527343750057],[88.928125,23.186621093750063],[88.72441406250002,23.254980468750034],[88.69765625,23.493017578125034],[88.63574218749997,23.55],[88.56738281249997,23.674414062500034],[88.69980468750006,24.002539062500006],[88.71376953125,24.069628906250017],[88.72656250000003,24.186230468749955],[88.7335937500001,24.23090820312501],[88.72353515625,24.27490234375],[88.64228515625004,24.325976562500017],[88.49853515625003,24.34663085937504],[88.3375,24.45385742187503],[88.225,24.460644531249983],[88.14550781250003,24.485791015624955],[88.07910156249997,24.549902343750063],[88.02343750000003,24.62783203125005],[88.03027343749997,24.66445312500005],[88.0451171875001,24.713037109374994],[88.1498046875,24.914648437500034],[88.1888671875,24.92060546875001],[88.27949218750004,24.881933593750034],[88.31337890625005,24.8818359375],[88.37294921875,24.961523437499977],[88.45625,25.18842773437504],[88.57382812500006,25.18789062499999],[88.92978515625012,25.222998046875063],[88.94414062500002,25.290771484375],[88.85478515625002,25.333544921875017],[88.76914062500006,25.490478515625],[88.50244140624997,25.537011718749994],[88.14746093749997,25.811425781250023],[88.1066406250001,25.841113281250045],[88.15078125000005,26.08715820312497],[88.33398437499997,26.257519531249955],[88.44042968749997,26.369482421875034],[88.38623046875003,26.471533203125034],[88.35146484375005,26.482568359374966],[88.36992187500002,26.564111328124994],[88.51826171875004,26.517773437499955],[88.68281250000004,26.291699218749983],[88.94072265625002,26.24536132812497]]]]},"properties":{"name":"Bangladesh","childNum":6}},{"geometry":{"type":"Polygon","coordinates":[[[28.585351562500023,43.742236328124996],[28.465429687500006,43.389306640624994],[28.133691406250023,43.39560546875],[27.92890625000001,43.1861328125],[27.88886718750001,42.74970703125],[27.484765625000023,42.468066406249996],[28.014453125000017,41.969042968749996],[27.47480468750001,41.946875],[27.294921875,42.079541015625],[27.24433593750001,42.09326171875],[27.01171875,42.058642578124996],[26.96875,42.02685546875],[26.884863281250006,41.991845703124994],[26.615332031250006,41.964892578124996],[26.549707031250023,41.896728515625],[26.51142578125001,41.8263671875],[26.3603515625,41.8015625],[26.327246093750006,41.772802734375],[26.31796875,41.744677734374996],[26.320898437500006,41.716552734375],[26.200585937500023,41.743798828124994],[26.107421875,41.72568359375],[26.085546875,41.704150390624996],[26.066015625,41.673242187499994],[26.1435546875,41.521533203124996],[26.155175781250023,41.434863281249996],[26.135351562500006,41.3857421875],[26.06640625,41.35068359375],[25.92333984375,41.311914062499994],[25.784960937500017,41.330419921875],[25.52705078125001,41.2998046875],[25.381933593750006,41.26435546875],[25.25117187500001,41.243554687499994],[24.773730468750017,41.356103515624994],[24.595996093750017,41.442724609375],[24.5693359375,41.4673828125],[24.51826171875001,41.552539062499996],[24.487890625,41.555224609374996],[24.056054687500023,41.527246093749994],[24.03291015625001,41.469091796875],[24.011328125,41.46005859375],[23.635156250000023,41.386767578124996],[23.53583984375001,41.386035156249996],[23.433398437500017,41.398730468749996],[23.3720703125,41.3896484375],[23.23984375,41.3849609375],[23.15595703125001,41.322070312499996],[22.916015625,41.336279296875],[23.00361328125001,41.73984375],[22.836816406250023,41.993603515625],[22.344042968750017,42.31396484375],[22.42207031250001,42.328857421875],[22.445703125000023,42.359130859375],[22.523535156250006,42.440966796874996],[22.53242187500001,42.481201171875],[22.524218750000017,42.50390625],[22.43623046875001,42.6291015625],[22.466796875,42.84248046875],[22.799902343750006,42.985742187499994],[22.976855468750017,43.18798828125],[22.85957031250001,43.25234375],[22.819726562500023,43.300732421875],[22.767578125,43.354150390624994],[22.554589843750023,43.454492187499994],[22.36962890625,43.781298828124996],[22.36542968750001,43.862109375],[22.399023437500006,43.96953125],[22.420800781250023,44.007421875],[22.452529688228115,44.0510441391688],[22.547921095934313,44.113823956634434],[22.688564844478098,44.254306249271906],[23.02851562500001,44.077978515625],[22.868261718750006,43.947900390624994],[22.919042968750006,43.83447265625],[25.4970703125,43.670800781249994],[26.2158203125,44.007275390625],[27.0869140625,44.167382812499994],[27.425390625,44.0205078125],[27.88427734375,43.987353515624996],[28.221972656250017,43.772851562499994],[28.585351562500023,43.742236328124996]]]},"properties":{"name":"Bulgaria","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[50.60722656250002,25.883105468750003],[50.57490234375001,25.806787109374994],[50.465917968750006,25.965527343749997],[50.46992187500001,26.228955078124997],[50.5859375,26.24072265625],[50.60722656250002,25.883105468750003]]]},"properties":{"name":"Bahrain","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-73.02685546874994,21.19238281250003],[-73.16455078125003,20.979150390625023],[-73.68115234375003,20.9755859375],[-73.68037109374995,21.103320312500017],[-73.52309570312497,21.190820312499966],[-73.23535156249997,21.15449218750004],[-73.05849609375,21.313378906249994],[-73.02685546874994,21.19238281250003]]],[[[-73.041015625,22.429052734375006],[-72.74726562500001,22.32739257812497],[-73.16191406250002,22.380712890625006],[-73.041015625,22.429052734375006]]],[[[-74.20673828124998,22.213769531250023],[-74.27690429687499,22.183691406250006],[-73.906396484375,22.527441406250063],[-73.95419921874995,22.71552734375001],[-73.84995117187503,22.731054687500063],[-73.83652343749998,22.538427734374977],[-74.20673828124998,22.213769531250023]]],[[[-74.05751953124997,22.723486328125034],[-74.27460937499995,22.71166992187503],[-74.30703125,22.83959960937497],[-74.05751953124997,22.723486328125034]]],[[[-74.84047851562494,22.894335937500017],[-75.22333984374995,23.165332031250074],[-75.13056640624998,23.267919921875006],[-75.31596679687502,23.668359374999966],[-74.84047851562494,22.894335937500017]]],[[[-75.66455078124997,23.45014648437501],[-76.03710937500003,23.60278320312503],[-76.01044921875001,23.671386718750057],[-75.66455078124997,23.45014648437501]]],[[[-74.42944335937497,24.068066406249955],[-74.55092773437502,23.96894531250001],[-74.52690429687502,24.105078125000034],[-74.42944335937497,24.068066406249955]]],[[[-77.65771484374994,24.249462890624955],[-77.75527343750002,24.163476562500023],[-77.61538085937494,24.216357421875045],[-77.5615234375,24.136816406250006],[-77.57373046875,23.739160156249994],[-77.77128906249999,23.752539062499977],[-77.99990234374994,24.219824218750063],[-77.65771484374994,24.249462890624955]]],[[[-75.30839843749999,24.2],[-75.50322265624996,24.139062500000023],[-75.40893554687503,24.265771484374994],[-75.72666015625,24.68935546875005],[-75.30839843749999,24.2]]],[[[-77.34755859375,25.013867187499983],[-77.56191406249997,25.030029296875],[-77.27558593750001,25.055761718750006],[-77.34755859375,25.013867187499983]]],[[[-77.74384765625001,24.70742187499999],[-77.74521484375,24.463476562500034],[-78.04492187499997,24.287451171875063],[-78.14580078125002,24.493457031250017],[-78.36650390624993,24.544189453125057],[-78.435302734375,24.627587890624994],[-78.24272460937493,24.65380859375],[-78.21137695312495,25.191259765624977],[-77.97529296874998,25.084814453125063],[-77.74384765625001,24.70742187499999]]],[[[-76.64882812499994,25.487402343750006],[-76.34379882812496,25.33203124999997],[-76.12661132812497,25.14052734375005],[-76.16953125,24.6494140625],[-76.319970703125,24.81767578124999],[-76.21376953124994,24.822460937499983],[-76.160400390625,25.119335937499983],[-76.36928710937502,25.312597656250006],[-76.62070312499998,25.43164062500003],[-76.78066406249997,25.426855468750006],[-76.71083984374997,25.564892578124983],[-76.64882812499994,25.487402343750006]]],[[[-78.49287109375001,26.729052734375017],[-77.92246093749998,26.69111328125001],[-78.74365234374994,26.50068359375004],[-78.98564453124996,26.689501953125045],[-78.79804687500001,26.58242187499999],[-78.59711914062493,26.797949218750006],[-78.49287109375001,26.729052734375017]]],[[[-77.22563476562496,25.904199218750023],[-77.40317382812498,26.02470703124996],[-77.24677734374998,26.156347656250034],[-77.238623046875,26.561132812500006],[-77.510595703125,26.845996093750045],[-77.94375,26.90356445312503],[-77.53388671874995,26.903417968750006],[-77.06635742187501,26.530175781249994],[-77.03828124999998,26.333447265624983],[-77.16728515624996,26.240332031250006],[-77.22563476562496,25.904199218750023]]]]},"properties":{"name":"Bahamas","childNum":14}},{"geometry":{"type":"Polygon","coordinates":[[[19.007128906250045,44.86918945312502],[19.348632812500057,44.88090820312502],[19.118457031250074,44.359960937500006],[19.583789062500017,44.04345703125003],[19.245019531249994,43.96503906250004],[19.495117187500057,43.642871093750045],[19.19433593749997,43.533300781250006],[19.164355468750017,43.53544921874999],[19.11279296874997,43.52773437500002],[19.080078125000057,43.51772460937502],[19.0283203125,43.53251953125002],[18.97421875,43.54233398437498],[18.95068359375,43.52666015624999],[19.036718750000034,43.35732421875002],[19.026660156250017,43.292431640624955],[18.97871093750001,43.28540039062503],[18.934667968750006,43.339453125000034],[18.85107421875003,43.34633789062502],[18.749218750000068,43.283544921875006],[18.67421875000008,43.230810546875006],[18.623632812500063,43.027685546875034],[18.488476562500068,43.01215820312498],[18.44384765625003,42.96845703125004],[18.46601562500001,42.777246093749994],[18.54589843750003,42.64160156249997],[18.436328125000017,42.559716796874994],[17.667578125000063,42.897119140624994],[17.585156250000068,42.93837890625005],[17.650488281250063,43.006591796875],[17.27382812500005,43.44575195312501],[16.300097656250017,44.12451171875],[16.10341796875008,44.52099609375006],[15.736621093750045,44.76582031250001],[15.788085937500057,45.17895507812497],[16.028320312500057,45.18959960937502],[16.29335937500005,45.00883789062496],[16.53066406250008,45.21669921875002],[16.918652343749983,45.27656249999998],[17.812792968750074,45.078125],[18.66259765625,45.07744140624999],[18.83642578125,44.883251953124955],[19.007128906250045,44.86918945312502]]]},"properties":{"name":"Bosnia and Herz.","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[28.14794921875,56.142919921875],[28.284277343750006,56.055908203125],[29.375,55.938720703125],[29.353417968750023,55.784375],[29.412988281250023,55.724853515625],[29.482226562500017,55.6845703125],[29.63007812500001,55.751171875],[29.6845703125,55.7697265625],[29.744140625,55.77041015625],[29.82392578125001,55.7951171875],[29.881640625000017,55.832324218749996],[29.93701171875,55.845263671874996],[30.04267578125001,55.83642578125],[30.23359375000001,55.84521484375],[30.625585937500006,55.666259765625],[30.906835937500006,55.57001953125],[30.90058593750001,55.397412109375],[30.82099609375001,55.3302734375],[30.810546875,55.306982421875],[30.814453125,55.2787109375],[30.87744140625,55.2234375],[30.958886718750023,55.13759765625],[30.97773437500001,55.08779296875],[30.97773437500001,55.05048828125],[30.829882812500017,54.914990234375],[30.804492187500017,54.8609375],[30.791015625,54.806005859375],[30.798828125,54.783251953124996],[30.984179687500017,54.6958984375],[31.12128906250001,54.648486328124996],[31.152148437500017,54.625341796875],[31.074804687500006,54.491796875],[31.18476562500001,54.452978515625],[31.299121093750017,54.29169921875],[31.403613281250017,54.195947265625],[31.62841796875,54.111181640625],[31.7919921875,54.055908203125],[31.825976562500017,54.030712890625],[31.837792968750023,54.00078125],[31.825292968750006,53.935009765625],[31.783007812500017,53.85498046875],[31.754199218750017,53.81044921875],[31.82080078125,53.791943359375],[31.9921875,53.796875],[32.20039062500001,53.78125],[32.45097656250002,53.6533203125],[32.70429687500001,53.336328125],[32.64443359375002,53.32890625],[32.57802734375002,53.31240234375],[32.469335937500006,53.2703125],[32.14199218750002,53.091162109375],[31.849707031250006,53.106201171875],[31.668261718750017,53.200927734375],[31.417871093750023,53.196044921875],[31.38837890625001,53.184814453125],[31.364550781250017,53.138964843749996],[31.30292968750001,53.060888671875],[31.2587890625,53.01669921875],[31.29511718750001,52.989794921874996],[31.35302734375,52.933447265625],[31.442773437500023,52.86181640625],[31.53515625,52.7982421875],[31.564843750000023,52.759228515625],[31.585546875,52.532470703125],[31.57734375000001,52.312304687499996],[31.6015625,52.284814453125],[31.64990234375,52.26220703125],[31.690625,52.220654296875],[31.758593750000017,52.125830078125],[31.76337890625001,52.10107421875],[31.57373046875,52.10810546875],[31.345996093750017,52.10537109375],[31.21796875000001,52.050244140625],[30.98066406250001,52.046191406249996],[30.845703125,51.953076171875],[30.755273437500023,51.895166015625],[30.667285156250017,51.814111328125],[30.583886718750023,51.68896484375],[30.533007812500017,51.596337890624994],[30.56074218750001,51.531494140625],[30.602343750000017,51.471240234374996],[30.611718750000023,51.40634765625],[30.63251953125001,51.355419921875],[30.449511718750017,51.274316406249994],[30.160742187500006,51.477880859375],[29.346484375000017,51.382568359375],[29.10205078125,51.6275390625],[29.06074218750001,51.625439453125],[29.013085937500023,51.598925781249996],[28.97773437500001,51.57177734375],[28.927539062500017,51.562158203124994],[28.849511718750023,51.540185546874994],[28.73125,51.433398437499996],[28.690234375000017,51.438867187499994],[28.647753906250017,51.45654296875],[28.599023437500023,51.542626953124994],[28.532031250000017,51.562451171875],[27.85859375000001,51.5923828125],[27.7,51.477978515625],[27.689746093750017,51.572412109374994],[27.296289062500023,51.597412109375],[27.270117187500006,51.613574218749996],[27.141992187500023,51.75205078125],[27.074121093750023,51.76083984375],[26.95283203125001,51.75400390625],[26.7734375,51.770703125],[25.785742187500006,51.923828125],[24.361914062500006,51.867529296875],[24.280078125000017,51.774707031249996],[24.126855468750023,51.6646484375],[23.978320312500017,51.59130859375],[23.951171875,51.58505859375],[23.8642578125,51.623974609375],[23.79169921875001,51.637109375],[23.706835937500017,51.64130859375],[23.61376953125,51.525390625],[23.605273437500017,51.517919921875],[23.652441406250006,52.040380859375],[23.175097656250017,52.28662109375],[23.915429687500023,52.770263671875],[23.484667968750017,53.939794921875],[23.55908203125,53.91982421875],[23.733691406250017,53.912255859375],[24.191308593750023,53.950439453125],[24.236621093750017,53.919970703124996],[24.31796875,53.89296875],[24.620703125,53.979833984375],[24.768164062500006,53.974658203124996],[24.78925781250001,53.9982421875],[24.82568359375,54.118994140625],[24.869531250000023,54.145166015625],[25.04609375000001,54.133056640625],[25.111425781250006,54.154931640625],[25.179492187500017,54.2142578125],[25.46113281250001,54.292773437499996],[25.505664062500017,54.264941406249996],[25.52734375,54.215136718749996],[25.497363281250017,54.175244140625],[25.573046875000017,54.139892578125],[25.765234375,54.17978515625],[25.702539062500023,54.29296875],[25.61689453125001,54.310107421874996],[25.557519531250023,54.310693359375],[25.54736328125,54.331835937499996],[25.56757812500001,54.37705078125],[25.62031250000001,54.460400390625],[25.68515625,54.535791015625],[25.72480468750001,54.564257812499996],[25.73164062500001,54.590380859374996],[25.722460937500017,54.71787109375],[25.859277343750023,54.919287109375],[25.964453125,54.94716796875],[26.09296875000001,54.9623046875],[26.175195312500023,55.003271484375],[26.250781250000017,55.12451171875],[26.291796875000017,55.139599609375],[26.601171875,55.130175781249996],[26.6484375,55.20419921875],[26.775683593750017,55.273095703125],[26.760156250000023,55.293359375],[26.68125,55.306445312499996],[26.49531250000001,55.318017578125],[26.457617187500006,55.34248046875],[26.469531250000017,55.371923828125],[26.51923828125001,55.44814453125],[26.56660156250001,55.546484375],[26.5908203125,55.62265625],[26.593554687500017,55.667529296874996],[27.052539062500017,55.83056640625],[27.576757812500006,55.798779296875],[28.14794921875,56.142919921875]]]},"properties":{"name":"Belarus","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-87.8529296875,17.4228515625],[-87.92998046874996,17.283007812500017],[-87.826416015625,17.546289062499994],[-87.8529296875,17.4228515625]]],[[[-88.89404296875,15.890625],[-89.2328125,15.888671875],[-89.16147460937503,17.81484375],[-89.13354492187503,17.970800781249977],[-88.80634765624998,17.965527343749983],[-88.52299804687499,18.445898437500063],[-88.29565429687494,18.47241210937503],[-88.34926757812494,18.358837890624983],[-88.1302734375,18.350732421875023],[-88.08525390624999,18.226123046875045],[-88.27172851562494,17.60986328125],[-88.203466796875,17.5166015625],[-88.31342773437501,16.632763671874983],[-88.89404296875,15.890625]]]]},"properties":{"name":"Belize","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[-64.73027343749999,32.29345703125],[-64.86284179687499,32.273876953125],[-64.66831054687499,32.38193359375],[-64.73027343749999,32.29345703125]]]},"properties":{"name":"Bermuda","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-58.15976562499999,-20.164648437500006],[-58.18017578125,-19.81787109375],[-59.09052734375,-19.286230468750006],[-60.00737304687499,-19.29755859375001],[-61.7568359375,-19.6453125],[-62.276318359375,-20.5625],[-62.27666015624999,-21.066015625],[-62.65097656249999,-22.233691406250003],[-62.84335937499999,-21.99726562500001],[-63.92167968749999,-22.028613281250003],[-63.97612304687499,-22.072558593750003],[-64.26640624999999,-22.603320312500003],[-64.30791015624999,-22.7953125],[-64.32529296874999,-22.82763671875],[-64.373974609375,-22.761035156250003],[-64.4455078125,-22.58535156250001],[-64.477734375,-22.4853515625],[-64.5236328125,-22.37158203125],[-64.60551757812499,-22.228808593750003],[-64.992626953125,-22.109667968750003],[-65.518798828125,-22.09453125],[-65.686181640625,-22.11025390625001],[-65.77104492187499,-22.099609375],[-65.86015624999999,-22.01972656250001],[-66.05859375,-21.879492187500006],[-66.098583984375,-21.835058593750006],[-66.17465820312499,-21.8056640625],[-66.220166015625,-21.802539062500003],[-66.24760742187499,-21.83046875],[-66.28212890625,-21.94746093750001],[-66.3224609375,-22.053125],[-66.365185546875,-22.11376953125],[-66.71171874999999,-22.21630859375],[-66.99111328125,-22.509863281250006],[-67.19487304687499,-22.82167968750001],[-67.362255859375,-22.85517578125001],[-67.57993164062499,-22.891699218750006],[-67.79443359375,-22.879492187500006],[-67.87944335937499,-22.82294921875001],[-67.88173828125,-22.49335937500001],[-68.18642578125,-21.61855468750001],[-68.197021484375,-21.30029296875],[-68.558251953125,-20.901953125],[-68.484326171875,-20.62841796875],[-68.74516601562499,-20.45859375],[-68.75932617187499,-20.115527343750003],[-68.560693359375,-19.967089843750003],[-68.559375,-19.90234375],[-68.578271484375,-19.856542968750006],[-68.69619140625,-19.74072265625],[-68.69829101562499,-19.72109375],[-68.57529296874999,-19.56015625],[-68.462890625,-19.43281250000001],[-68.470166015625,-19.409960937500003],[-68.49199218749999,-19.381933593750006],[-68.85795898437499,-19.093359375],[-68.96831054687499,-18.96796875000001],[-68.97885742187499,-18.81298828125],[-69.026806640625,-18.65625],[-69.09228515625,-18.28242187500001],[-69.145458984375,-18.14404296875],[-69.0939453125,-18.05048828125001],[-69.28232421874999,-17.96484375],[-69.31337890625,-17.943164062500003],[-69.5109375,-17.50605468750001],[-69.51108398437499,-17.5048828125],[-69.510986328125,-17.46035156250001],[-69.521923828125,-17.388964843750003],[-69.645703125,-17.24853515625],[-69.62485351562499,-17.2001953125],[-69.020703125,-16.6421875],[-69.03291015625,-16.47597656250001],[-68.8427734375,-16.337890625],[-69.21757812499999,-16.14912109375001],[-69.4208984375,-15.640625],[-69.17246093749999,-15.236621093750003],[-69.37470703125,-14.962988281250006],[-69.35947265624999,-14.7953125],[-68.87089843749999,-14.169726562500003],[-69.07412109375,-13.682812500000011],[-68.97861328124999,-12.880078125000011],[-68.68525390625,-12.501953125],[-69.57861328125,-10.951757812500006],[-69.228515625,-10.955664062500006],[-68.84833984375,-11.011132812500009],[-68.678369140625,-11.11279296875],[-68.39799804687499,-11.01875],[-68.0716796875,-10.703125],[-67.99169921875,-10.674414062500006],[-67.83500976562499,-10.662792968750011],[-67.72177734374999,-10.68310546875],[-67.416943359375,-10.389843750000011],[-66.575341796875,-9.89990234375],[-65.396142578125,-9.71240234375],[-65.298583984375,-10.146777343750003],[-65.31308593749999,-10.253027343750006],[-65.395458984375,-10.392285156250011],[-65.4369140625,-10.449023437500003],[-65.44711914062499,-10.507421875],[-65.33403320312499,-10.892773437500011],[-65.32377929687499,-11.024804687500009],[-65.389892578125,-11.246289062500011],[-65.1857421875,-11.74951171875],[-64.783447265625,-12.059375],[-64.42050781249999,-12.439746093750003],[-63.68857421874999,-12.47802734375],[-63.3466796875,-12.680078125],[-63.06748046874999,-12.669140625000011],[-62.76547851562499,-12.997265625000011],[-62.11801757812499,-13.159765625],[-62.09477539062499,-13.241992187500003],[-61.944726562499994,-13.40625],[-61.87412109374999,-13.470410156250011],[-61.789941406249994,-13.525585937500011],[-61.57568359375,-13.524804687500009],[-61.51157226562499,-13.541210937500011],[-61.41606445312499,-13.526562500000011],[-61.129150390625,-13.49853515625],[-61.07700195312499,-13.48974609375],[-60.506591796875,-13.78984375],[-60.372705078124994,-14.41875],[-60.273339843749994,-15.088769531250009],[-60.402001953124994,-15.0927734375],[-60.583203125,-15.098339843750011],[-60.53046875,-15.143164062500006],[-60.38046875,-15.318261718750009],[-60.242333984374994,-15.479589843750006],[-60.20664062499999,-15.901953125],[-60.18720703125,-16.132128906250003],[-60.17558593749999,-16.269335937500003],[-58.53793945312499,-16.328222656250006],[-58.49658203125,-16.32666015625],[-58.42368164062499,-16.307910156250003],[-58.37539062499999,-16.28359375],[-58.345605468749994,-16.284375],[-58.35039062499999,-16.490820312500006],[-58.470605468749994,-16.650195312500003],[-58.478125,-16.70068359375],[-58.45981445312499,-16.910742187500006],[-58.417382812499994,-17.08056640625],[-58.39599609375,-17.23427734375001],[-58.34775390624999,-17.28212890625001],[-57.99091796875,-17.51289062500001],[-57.905029296875,-17.532324218750006],[-57.832470703125,-17.512109375],[-57.78886718749999,-17.573046875],[-57.780175781249994,-17.67177734375001],[-57.66166992187499,-17.947363281250006],[-57.58647460937499,-18.12226562500001],[-57.49565429687499,-18.214648437500003],[-57.57402343749999,-18.279296875],[-57.725,-18.733203125],[-57.783105468749994,-18.91425781250001],[-57.716796875,-19.044042968750006],[-58.131494140624994,-19.74453125],[-57.860742187499994,-19.979589843750006],[-57.887597656249994,-20.02041015625001],[-57.96015625,-20.04072265625001],[-58.021142578124994,-20.05517578125],[-58.09375,-20.15107421875001],[-58.15976562499999,-20.164648437500006]]]},"properties":{"name":"Bolivia","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-48.48588867187493,-27.76699218749998],[-48.554589843749994,-27.81220703125004],[-48.542187499999955,-27.57480468749999],[-48.41489257812495,-27.399609375],[-48.48588867187493,-27.76699218749998]]],[[[-48.584423828124955,-26.401562499999983],[-48.665771484375,-26.289648437500006],[-48.53974609374998,-26.170312500000023],[-48.584423828124955,-26.401562499999983]]],[[[-45.26025390624997,-23.889160156249986],[-45.451416015625,-23.895605468749977],[-45.30234375,-23.727539062500014],[-45.26025390624997,-23.889160156249986]]],[[[-44.12929687499994,-23.14189453124999],[-44.36015624999999,-23.17207031250001],[-44.24287109374998,-23.074121093750037],[-44.12929687499994,-23.14189453124999]]],[[[-38.90356445312497,-13.473437499999974],[-38.97758789062496,-13.523535156249963],[-39.02216796874998,-13.445605468749989],[-38.907128906249994,-13.401074218749983],[-38.90356445312497,-13.473437499999974]]],[[[-38.743847656249955,-13.097070312500037],[-38.668115234374966,-12.880175781249989],[-38.601171875,-12.99257812499998],[-38.743847656249955,-13.097070312500037]]],[[[-44.49931640625002,-2.939648437499983],[-44.597753906250006,-3.037597656249943],[-44.4814453125,-2.717578125000031],[-44.49931640625002,-2.939648437499983]]],[[[-44.88310546874996,-1.317871093749986],[-45.020849609375034,-1.372363281249974],[-44.978662109374966,-1.267285156249983],[-44.88310546874996,-1.317871093749986]]],[[[-51.83251953124997,-1.433789062499969],[-51.938378906249966,-1.452636718749986],[-51.680029296875006,-1.086132812500026],[-51.546044921874966,-0.649609375],[-51.25400390624998,-0.54140625],[-51.16074218749998,-0.666699218750011],[-51.27631835937498,-1.02177734374996],[-51.83251953124997,-1.433789062499969]]],[[[-49.62866210937497,-0.229199218749969],[-49.11699218749999,-0.163574218750014],[-48.39267578124995,-0.29736328125],[-48.83359375,-1.390039062500023],[-49.038476562499994,-1.5140625],[-49.17270507812498,-1.41259765625],[-49.233984375000034,-1.59951171874998],[-49.50664062499999,-1.511621093750023],[-49.587890625,-1.712402343749972],[-49.805126953124955,-1.790234375000026],[-50.06572265625002,-1.703808593749997],[-50.50761718749999,-1.787988281250009],[-50.759765625,-1.240234374999972],[-50.72949218749997,-1.126757812499946],[-50.57695312499999,-1.103125],[-50.709619140624994,-1.07773437499999],[-50.796093749999955,-0.90625],[-50.6455078125,-0.27285156249998],[-50.24824218749998,-0.11640625],[-49.62866210937497,-0.229199218749969]]],[[[-50.65288085937499,-0.131640624999989],[-50.926367187500034,-0.327343749999983],[-51.03808593749994,-0.225878906250003],[-50.84218750000002,-0.050195312500009],[-50.65288085937499,-0.131640624999989]]],[[[-49.44389648437499,-0.112402343749977],[-49.83007812499997,-0.093896484375023],[-49.50346679687496,0.083691406250011],[-49.37231445312497,0.001074218749963],[-49.44389648437499,-0.112402343749977]]],[[[-49.73823242187498,0.26816406250002],[-49.917089843750006,-0.023193359375014],[-50.339453125,0.043359375000051],[-50.27265624999998,0.231738281249974],[-49.73823242187498,0.26816406250002]]],[[[-50.42612304687498,0.139257812500048],[-50.44394531249998,-0.007666015624949],[-50.623925781249966,0.054394531249983],[-50.372753906249955,0.590869140625031],[-50.33227539062497,0.259033203125028],[-50.42612304687498,0.139257812500048]]],[[[-50.152929687500006,0.393017578125054],[-50.26132812499998,0.359179687500003],[-50.281689453124955,0.51650390624998],[-50.05883789062503,0.638037109374963],[-50.152929687500006,0.393017578125054]]],[[[-50.29897460937502,1.93852539062496],[-50.45610351562496,1.910498046875034],[-50.49101562499996,2.128613281249969],[-50.34199218749998,2.14174804687498],[-50.29897460937502,1.93852539062496]]],[[[-59.69970703125,4.353515625],[-59.73857421874993,4.226757812500026],[-59.62021484374998,4.023144531250026],[-59.557763671874966,3.960009765625031],[-59.551123046875034,3.933544921874969],[-59.854394531249994,3.5875],[-59.99433593749998,2.689990234375031],[-59.88964843749997,2.362939453125009],[-59.75522460937495,2.27412109375004],[-59.74350585937498,2.12163085937496],[-59.75175781249996,1.962402343750028],[-59.75620117187498,1.900634765624972],[-59.666601562500006,1.746289062499969],[-59.53569335937499,1.7],[-59.23120117187494,1.376025390625031],[-58.82177734374994,1.201220703125031],[-58.787207031250006,1.208496093750014],[-58.73032226562498,1.247509765625054],[-58.68461914062499,1.28105468749996],[-58.511865234374966,1.284667968749986],[-58.506054687499926,1.438671875000011],[-58.39580078124993,1.481738281249989],[-58.38037109375,1.530224609375011],[-58.34067382812498,1.587548828125051],[-58.03466796875,1.520263671875014],[-57.9828125,1.648437500000014],[-57.87343750000002,1.667285156250045],[-57.79565429687497,1.7],[-57.59443359375001,1.704101562499986],[-57.54575195312495,1.726074218750028],[-57.31748046874998,1.963476562499991],[-57.27558593749998,1.959228515625014],[-57.189599609374966,1.981591796875037],[-57.11889648437494,2.013964843749974],[-57.09267578125002,2.005810546874997],[-57.03759765625,1.936474609374997],[-56.96953124999999,1.91640625],[-56.48281249999994,1.942138671874986],[-56.019921874999966,1.842236328124983],[-55.96333007812498,1.85708007812498],[-55.929638671874955,1.8875],[-55.92163085937503,1.976660156250006],[-55.91533203124999,2.039550781250028],[-55.96196289062496,2.09511718749998],[-56.02006835937499,2.15815429687504],[-56.073632812499994,2.236767578124969],[-56.13769531249997,2.259033203124986],[-56.12939453124997,2.299511718749969],[-56.08779296875002,2.341308593750043],[-56.045117187499955,2.364404296875037],[-56.02036132812498,2.392773437500054],[-55.993505859375006,2.497509765624983],[-55.9755859375,2.515966796875006],[-55.957470703124955,2.52045898437504],[-55.730566406250006,2.406152343750023],[-55.385351562500006,2.440625],[-55.34399414062503,2.488769531249972],[-55.28603515625002,2.49965820312498],[-55.18769531249998,2.547509765625037],[-55.114111328125006,2.539208984375037],[-55.07031249999994,2.548339843750028],[-55.005810546874955,2.592968749999983],[-54.97866210937502,2.597656250000043],[-54.968408203124966,2.548339843750028],[-54.92656249999999,2.497363281250045],[-54.876074218750006,2.450390624999969],[-54.72221679687499,2.441650390624972],[-54.69741210937502,2.359814453124997],[-54.66186523437497,2.327539062499994],[-54.61625976562499,2.326757812500006],[-54.59194335937502,2.313769531250031],[-54.55048828125001,2.293066406249991],[-54.51508789062498,2.245458984374963],[-54.43310546875,2.207519531250057],[-54.13007812499998,2.121044921875026],[-53.76777343749998,2.354833984375048],[-52.90346679687502,2.211523437499977],[-52.58300781250003,2.528906249999977],[-52.327880859375,3.18173828125002],[-51.65253906249998,4.061279296874972],[-51.54707031250001,4.31088867187502],[-51.219921874999955,4.093603515624991],[-50.71440429687502,2.134033203125],[-50.458886718749994,1.829589843749972],[-49.957128906250006,1.65986328125004],[-49.898876953124955,1.16298828124998],[-50.29443359374997,0.835742187500003],[-50.755078124999955,0.222558593749966],[-51.28291015625001,-0.085205078125028],[-51.98081054687498,-1.367968749999974],[-52.22924804687497,-1.3625],[-52.664160156250034,-1.551757812500028],[-51.94755859374996,-1.586718749999946],[-50.89492187500002,-0.937597656249963],[-50.690039062500006,-1.761718749999986],[-50.40322265625002,-2.015527343750009],[-49.999218749999955,-1.831835937499974],[-49.71953125000002,-1.926367187499963],[-49.31367187500001,-1.731738281250003],[-49.63652343749996,-2.656933593750026],[-49.45751953125,-2.504589843749983],[-49.21103515624998,-1.916503906249986],[-48.99130859374998,-1.829785156249997],[-48.71000976562496,-1.487695312500023],[-48.46293945312499,-1.613964843749997],[-48.349804687499926,-1.482128906249955],[-48.46806640624996,-1.393847656250003],[-48.44980468749998,-1.145507812499943],[-48.11508789062498,-0.7375],[-47.557324218749955,-0.669921874999957],[-47.418652343749955,-0.765917968749974],[-47.39809570312502,-0.626660156250026],[-45.45859374999995,-1.35625],[-45.32915039062496,-1.71728515625],[-45.07636718749998,-1.466406249999949],[-44.72114257812498,-1.733496093750006],[-44.778515624999955,-1.798828125],[-44.651269531249966,-1.745800781250026],[-44.537792968749955,-2.052734374999943],[-44.75634765624997,-2.265527343749952],[-44.66240234375002,-2.373242187499955],[-44.435449218749966,-2.168066406249991],[-44.38183593749997,-2.365527343749989],[-44.52011718749998,-2.40546875000004],[-44.589013671874994,-2.573437499999983],[-44.72304687500002,-3.204785156249997],[-44.43754882812496,-2.944433593749977],[-44.228613281250006,-2.471289062499949],[-44.105566406250006,-2.493457031250031],[-44.19267578124999,-2.809570312499943],[-43.93291015624999,-2.583496093749986],[-43.45512695312499,-2.502050781250006],[-43.38007812499998,-2.376074218750006],[-42.93671874999998,-2.465039062500011],[-42.24960937499998,-2.7919921875],[-41.876171874999926,-2.746582031249986],[-41.479931640624955,-2.916503906249972],[-40.474560546874926,-2.795605468750026],[-39.96469726562498,-2.861523437499955],[-38.475781249999955,-3.717480468749997],[-38.04882812500003,-4.216406250000034],[-37.626318359375006,-4.592089843750003],[-37.30146484375001,-4.713085937499969],[-37.174658203125006,-4.912402343749974],[-36.590722656249966,-5.097558593749952],[-35.549414062500006,-5.129394531249957],[-35.39257812499994,-5.250878906250009],[-34.833886718749994,-7.024414062500014],[-34.83466796874998,-7.97148437499996],[-35.34086914062499,-9.230664062499983],[-35.76396484374993,-9.702539062500023],[-35.890820312499926,-9.687011718749957],[-35.88544921875001,-9.84765625],[-36.39833984374994,-10.484082031249983],[-36.768310546875,-10.671679687500017],[-37.18281249999998,-11.06845703125002],[-37.35600585937502,-11.403906249999977],[-37.35922851562495,-11.252539062499963],[-37.68872070312503,-12.1],[-38.019238281249955,-12.591308593750028],[-38.401757812499994,-12.966210937500023],[-38.69096679687502,-12.623925781250009],[-38.85175781250001,-12.790136718750034],[-38.76372070312502,-12.9072265625],[-38.835302734375034,-13.147167968750026],[-39.030908203124994,-13.365136718750023],[-39.08935546875,-13.588183593749989],[-38.988623046875006,-13.61503906249996],[-39.04814453124996,-14.043945312500028],[-38.94233398437498,-14.030664062499994],[-39.05957031249997,-14.654785156249957],[-38.88061523437503,-15.864257812499972],[-39.20288085937503,-17.178125],[-39.154003906249926,-17.70390625000003],[-39.650781249999966,-18.252343750000037],[-39.78330078124998,-19.571777343749986],[-40.001367187499994,-19.74199218750003],[-40.39594726562501,-20.56943359375002],[-40.78925781250001,-20.90605468750003],[-40.954541015624926,-21.237890624999963],[-41.04726562499999,-21.505664062499974],[-41.00029296875002,-21.99902343750003],[-41.70551757812498,-22.30966796874999],[-41.980419921874955,-22.580664062499963],[-42.042382812499966,-22.947070312500003],[-42.95830078124996,-22.96708984374999],[-43.154296875,-22.725195312500006],[-43.22416992187502,-22.991210937500014],[-43.898828124999966,-23.10146484375001],[-43.97382812499998,-23.057324218749983],[-43.675976562499955,-23.00947265625001],[-43.86616210937498,-22.910546875000023],[-44.63725585937496,-23.05546875],[-44.67382812499994,-23.206640625000034],[-44.56967773437495,-23.27402343749999],[-45.32539062499998,-23.59970703124999],[-45.464306640624955,-23.802539062500017],[-45.97207031250002,-23.795507812500006],[-46.86728515624998,-24.236328125000014],[-47.989160156249994,-25.03574218749999],[-47.92939453124998,-25.16826171874999],[-48.20273437499998,-25.41650390625003],[-48.18593749999994,-25.309863281249974],[-48.402490234374994,-25.27207031249999],[-48.47612304687499,-25.44296875],[-48.73173828124993,-25.36875],[-48.6921875,-25.49150390625003],[-48.40117187500002,-25.59736328125001],[-48.665771484375,-25.844335937499963],[-48.576318359374994,-25.935449218749966],[-48.61943359374996,-26.17939453125001],[-48.74829101562503,-26.26865234374999],[-48.55415039062498,-27.195996093749997],[-48.62080078124998,-28.075585937499966],[-48.799658203125006,-28.575292968749977],[-49.27128906249999,-28.87119140625005],[-49.745996093749966,-29.363183593749994],[-50.299511718749955,-30.42578125000003],[-50.92138671874997,-31.25839843750002],[-52.039208984374994,-32.11484374999996],[-52.063232421875,-31.830371093750017],[-51.68066406249994,-31.774609375000026],[-51.272167968749955,-31.476953125000037],[-51.16142578124996,-31.11884765625001],[-50.980078125000034,-31.09423828124997],[-50.94082031249994,-30.903710937499966],[-50.68930664062495,-30.70419921874999],[-50.71630859374994,-30.425976562499983],[-50.58193359375002,-30.438867187500037],[-50.56352539062499,-30.25361328125004],[-51.02495117187493,-30.36865234375003],[-51.29804687499998,-30.03486328124997],[-51.15727539062499,-30.364257812500014],[-51.283056640625034,-30.751562499999963],[-51.35908203124998,-30.674511718749983],[-51.506298828124955,-31.104492187500014],[-51.97246093749999,-31.383789062499986],[-52.19355468749998,-31.885546874999974],[-52.12739257812501,-32.1677734375],[-52.652246093749994,-33.137792968750006],[-53.37060546874997,-33.74218750000003],[-53.39755859374995,-33.737304687500014],[-53.46357421875001,-33.70986328125002],[-53.531347656250034,-33.65546875000004],[-53.531347656250034,-33.1708984375],[-53.511865234374966,-33.10869140625003],[-53.482861328124926,-33.068554687500026],[-53.39521484375001,-33.01035156249998],[-53.31010742187499,-32.927050781249974],[-53.21406249999998,-32.82109375],[-53.12558593749998,-32.73671875],[-53.15727539062496,-32.680078125],[-53.601708984374994,-32.40302734374997],[-53.76171875,-32.05683593749997],[-53.920605468749926,-31.95234375],[-54.220556640625034,-31.855175781249997],[-54.58764648437503,-31.48515625000003],[-55.036035156249994,-31.27900390625004],[-55.091162109375034,-31.31396484374997],[-55.173535156249926,-31.279589843749974],[-55.557324218749955,-30.8759765625],[-55.60302734375003,-30.85078125000001],[-55.62714843749998,-30.858105468749997],[-55.650488281250034,-30.89208984375],[-55.66523437500001,-30.92490234375002],[-55.807763671874994,-31.036718749999977],[-55.87368164062502,-31.069628906250017],[-55.95200195312498,-31.08085937499999],[-56.0046875,-31.079199218750006],[-56.01845703125002,-30.991894531249983],[-55.998974609374955,-30.837207031250003],[-56.4072265625,-30.44746093750001],[-56.83271484374998,-30.107226562499974],[-57.120507812499994,-30.144433593749994],[-57.21445312499995,-30.283398437499983],[-57.55229492187496,-30.261230468749986],[-57.60888671875003,-30.187792968750045],[-57.563867187499994,-30.139941406249974],[-57.40522460937501,-30.03388671875004],[-57.22465820312499,-29.782128906249994],[-56.938623046874994,-29.594824218750034],[-55.890527343749994,-28.370019531249994],[-55.68725585937497,-28.38164062499996],[-55.72548828125002,-28.20410156250003],[-55.10151367187501,-27.866796874999963],[-54.82910156250003,-27.55058593750003],[-54.32700195312495,-27.423535156249997],[-53.83818359375002,-27.121093750000014],[-53.668554687500006,-26.288183593749977],[-53.89116210937499,-25.66884765625001],[-54.15458984374999,-25.523046874999963],[-54.44394531249998,-25.625],[-54.615869140624994,-25.576074218750023],[-54.61054687499998,-25.432714843750034],[-54.47314453124997,-25.22021484375],[-54.43623046875001,-25.12128906250001],[-54.281005859375,-24.30605468750001],[-54.31826171874994,-24.128125],[-54.26689453124996,-24.06582031250001],[-54.241796875,-24.047265624999966],[-54.44023437500002,-23.90175781249998],[-54.62548828125,-23.8125],[-54.98266601562494,-23.974511718749966],[-55.081884765625006,-23.997656249999977],[-55.1943359375,-24.017480468750023],[-55.28691406249993,-24.00429687499999],[-55.366308593750034,-23.99101562499996],[-55.41591796875002,-23.95136718749997],[-55.4423828125,-23.86533203125002],[-55.4423828125,-23.792578125000034],[-55.458886718749966,-23.686718750000054],[-55.51845703124994,-23.627246093750017],[-55.53828124999998,-23.580957031249994],[-55.61767578125,-22.67148437499999],[-55.74663085937499,-22.51269531249997],[-55.753271484375006,-22.410156250000043],[-55.84916992187499,-22.307617187500014],[-55.991406249999926,-22.28115234375005],[-56.18984374999994,-22.28115234375005],[-56.246044921874926,-22.26464843749997],[-56.39487304687498,-22.092675781250023],[-56.44780273437502,-22.07617187500003],[-56.77519531249999,-22.261328125],[-57.955908203125034,-22.109179687500003],[-57.94267578124999,-21.79833984375],[-57.830224609374994,-20.99794921875001],[-57.91513671874998,-20.690332031249966],[-57.97905273437493,-20.65732421874999],[-58.00224609374996,-20.465429687499977],[-58.02539062499997,-20.41582031249999],[-58.05844726562495,-20.38613281249998],[-58.091503906249926,-20.33320312500004],[-58.124609375000034,-20.293457031250014],[-58.13779296874995,-20.237304687500043],[-58.15976562499998,-20.164648437499977],[-58.09375,-20.15107421874997],[-58.021142578124994,-20.05517578124997],[-57.96015625000001,-20.04072265625004],[-57.887597656249966,-20.020410156249994],[-57.860742187499994,-19.97958984375002],[-58.029931640624994,-19.83271484375004],[-58.131494140624994,-19.74453125],[-57.71679687499997,-19.044042968750034],[-57.73085937499999,-18.91718750000004],[-57.783105468749994,-18.91425781249997],[-57.725,-18.73320312500003],[-57.57402343749993,-18.279296875000014],[-57.49565429687496,-18.21464843749999],[-57.58647460937499,-18.122265625],[-57.66166992187493,-17.94736328124999],[-57.78017578125002,-17.67177734374998],[-57.78886718750002,-17.573046875000017],[-57.83247070312501,-17.512109375000037],[-57.90502929687497,-17.53232421874999],[-57.990917968749955,-17.512890625000026],[-58.20556640625,-17.363085937499974],[-58.347753906250006,-17.282128906249994],[-58.39599609374997,-17.234277343750023],[-58.417382812499994,-17.08056640624997],[-58.459814453125006,-16.910742187500006],[-58.478125,-16.70068359375003],[-58.470605468749994,-16.650195312500045],[-58.35039062500002,-16.49082031249999],[-58.34560546875002,-16.284375],[-58.375390624999966,-16.283593749999966],[-58.423681640625034,-16.30791015625003],[-58.49658203124994,-16.32666015625003],[-58.537939453125034,-16.32822265624999],[-60.17558593749996,-16.26933593749999],[-60.187207031249955,-16.132128906250017],[-60.206640625,-15.90195312500002],[-60.242333984374994,-15.479589843750034],[-60.38046874999998,-15.318261718750023],[-60.53046874999998,-15.143164062499977],[-60.58320312499998,-15.098339843749983],[-60.273339843749994,-15.088769531249994],[-60.372705078124994,-14.41875],[-60.506591796875,-13.78984375],[-61.077001953125034,-13.489746093750014],[-61.129150390625,-13.498535156250028],[-61.41606445312502,-13.526562499999969],[-61.511572265625006,-13.541210937500011],[-61.789941406249966,-13.525585937500026],[-61.87412109374998,-13.470410156249983],[-61.944726562499966,-13.40625],[-62.09477539062499,-13.241992187499989],[-62.118017578125006,-13.15976562500002],[-62.765478515625034,-12.99726562500004],[-63.01518554687502,-12.80556640624998],[-63.067480468750006,-12.669140624999983],[-63.34667968749994,-12.68007812499999],[-63.68857421874998,-12.478027343749957],[-64.42050781249995,-12.439746093749974],[-64.783447265625,-12.059375],[-65.18574218749998,-11.749511718749957],[-65.389892578125,-11.246289062500011],[-65.33403320312499,-10.892773437500026],[-65.44711914062503,-10.507421875000034],[-65.4369140625,-10.449023437499946],[-65.39545898437498,-10.392285156250026],[-65.31308593749998,-10.253027343749991],[-65.29858398437497,-10.146777343750017],[-65.39614257812494,-9.712402343749986],[-66.57534179687502,-9.899902343749986],[-67.41694335937495,-10.389843749999969],[-67.72177734374998,-10.683105468749943],[-67.83500976562496,-10.662792968749983],[-67.99169921875,-10.674414062499949],[-68.07167968749994,-10.703125],[-68.39799804687499,-11.01875],[-68.678369140625,-11.11279296875],[-68.84833984374998,-11.01113281249998],[-69.228515625,-10.955664062499963],[-69.46254882812497,-10.948144531250023],[-69.57861328125,-10.951757812499963],[-69.67402343749998,-10.9541015625],[-69.83979492187501,-10.93339843749996],[-69.96035156249997,-10.92988281250004],[-70.06630859374997,-10.982421875],[-70.22006835937503,-11.04765625],[-70.29038085937498,-11.064257812499974],[-70.34199218750001,-11.066699218750017],[-70.39228515624995,-11.058593749999972],[-70.45087890624998,-11.024804687500009],[-70.53325195312496,-10.946875],[-70.59653320312498,-10.976855468750017],[-70.642333984375,-11.010253906249986],[-70.59916992187499,-9.620507812500009],[-70.54111328124998,-9.4375],[-70.60791015625,-9.463671875000031],[-70.63691406249995,-9.478222656249969],[-71.041748046875,-9.81875],[-71.11528320312499,-9.852441406250009],[-71.33940429687499,-9.988574218750031],[-72.18159179687495,-10.003710937500003],[-72.37905273437497,-9.51015625],[-73.20942382812493,-9.411425781249946],[-73.08984375,-9.26572265625002],[-72.970361328125,-9.120117187500028],[-72.97402343750002,-8.9931640625],[-73.07050781249995,-8.8828125],[-73.203125,-8.719335937499991],[-73.30244140624995,-8.654003906250011],[-73.36040039062496,-8.479296875000031],[-73.39814453125001,-8.458984374999986],[-73.54912109374993,-8.34580078125002],[-73.73203125,-7.875390625],[-73.72041015624993,-7.782519531250017],[-73.76689453124999,-7.753515624999963],[-73.82207031249996,-7.738964843750026],[-73.89462890624998,-7.654785156250014],[-73.946875,-7.611230468750023],[-73.98173828124996,-7.58505859375002],[-74.00205078125003,-7.556054687499966],[-73.98173828124996,-7.535742187500006],[-73.95849609374994,-7.506640625000031],[-73.96430664062498,-7.378906250000028],[-73.74946289062498,-7.335351562500037],[-73.72041015624993,-7.309277343749969],[-73.758203125,-7.172753906249952],[-73.79301757812499,-7.135058593750003],[-73.75810546874999,-6.90576171875],[-73.137353515625,-6.4658203125],[-73.23554687500001,-6.098437500000017],[-73.209375,-6.028710937500023],[-73.16289062499996,-5.933398437499974],[-72.97988281249997,-5.634863281249991],[-72.88706054687498,-5.122753906250026],[-72.83193359374994,-5.09375],[-72.69873046874997,-5.067187499999989],[-72.60834960937495,-5.009570312499974],[-72.46899414062497,-4.901269531250023],[-72.35283203124993,-4.786035156249994],[-72.25678710937501,-4.74892578124998],[-71.8447265625,-4.504394531249986],[-70.97368164062499,-4.350488281249994],[-70.86601562499999,-4.229589843749963],[-70.79951171874995,-4.173339843749957],[-70.72158203124997,-4.15888671875004],[-70.53066406249997,-4.167578125000034],[-70.40463867187498,-4.150097656250026],[-70.34365234375,-4.193652343750017],[-70.31689453124994,-4.246972656250037],[-70.23916015625002,-4.30117187499998],[-70.12880859375,-4.286621093749943],[-70.05332031249998,-4.333105468750006],[-70.00395507812496,-4.327246093749963],[-69.97202148437503,-4.30117187499998],[-69.96591796875003,-4.2359375],[-69.94819335937498,-4.200585937500009],[-69.66904296875003,-2.667675781249997],[-69.40024414062498,-1.194921874999977],[-69.63398437500001,-0.50927734375],[-70.07050781249993,-0.13886718750004],[-70.05390624999993,0.578613281250028],[-69.47211914062498,0.72993164062504],[-69.15332031249994,0.65878906250002],[-69.31181640624999,1.050488281249969],[-69.85214843750003,1.05952148437504],[-69.84858398437493,1.708740234375043],[-68.17656249999999,1.719824218749991],[-68.25595703125,1.845507812500017],[-68.19379882812495,1.987011718749983],[-67.93623046874998,1.748486328124969],[-67.40043945312499,2.116699218750028],[-67.11923828124998,1.703613281249986],[-67.082275390625,1.185400390625006],[-66.87602539062499,1.223046875000037],[-66.34711914062498,0.7671875],[-66.06005859375003,0.78535156250004],[-65.68144531249999,0.983447265624989],[-65.52299804687493,0.843408203124966],[-65.55605468750002,0.687988281250014],[-65.47338867187497,0.691259765624977],[-65.10375976562497,1.108105468749983],[-64.20502929687493,1.52949218750004],[-64.00849609374995,1.931591796874969],[-63.43251953124994,2.155566406250045],[-63.389257812500006,2.411914062500045],[-64.04658203124998,2.502392578124997],[-64.22109375000002,3.587402343749972],[-64.66899414062496,4.01181640625002],[-64.788671875,4.276025390625023],[-64.57636718750001,4.139892578125],[-64.19248046874995,4.126855468750009],[-64.02148437500003,3.929101562500051],[-63.33867187500002,3.943896484375045],[-62.85698242187502,3.593457031249969],[-62.71210937499998,4.01791992187502],[-62.41064453124994,4.156738281249972],[-62.153125,4.098388671874986],[-61.82084960937496,4.197021484375],[-61.28007812500002,4.516894531249974],[-61.00283203125002,4.535253906249991],[-60.603857421875006,4.94936523437498],[-60.671972656250034,5.164355468749989],[-60.71196289062499,5.191552734375023],[-60.742138671874926,5.202050781250037],[-60.6513671875,5.221142578125011],[-60.45952148437499,5.188085937500034],[-60.40878906249998,5.21015625],[-60.33520507812497,5.199316406250006],[-60.241650390624926,5.257958984374966],[-60.14204101562498,5.238818359374974],[-59.990673828124955,5.082861328124991],[-60.14863281249998,4.533251953125031],[-59.69970703125,4.353515625]]]]},"properties":{"name":"Brazil","childNum":17}},{"geometry":{"type":"Polygon","coordinates":[[[-59.493310546874994,13.081982421874997],[-59.611328125,13.102099609374989],[-59.6466796875,13.303125],[-59.427636718749994,13.152783203124997],[-59.493310546874994,13.081982421874997]]]},"properties":{"name":"Barbados","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[115.02675781250005,4.899707031249989],[115.1400390625,4.899755859374991],[115.290625,4.352587890624989],[115.10703125000006,4.390429687499974],[115.02675781250005,4.899707031249989]]],[[[115.02675781250005,4.899707031249989],[114.74667968750006,4.718066406250017],[114.84023437500005,4.393212890625009],[114.65410156250007,4.037646484375045],[114.0638671875,4.592675781249966],[114.42441406250006,4.660400390625],[114.99541015625002,5.022363281250023],[115.02675781250005,4.899707031249989]]]]},"properties":{"name":"Brunei","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[91.63193359375003,27.759960937499997],[91.5947265625,27.557666015624996],[91.74306640625002,27.442529296874994],[91.85126953125001,27.438623046874994],[91.95097656249999,27.458300781249996],[91.99082031250003,27.4501953125],[92.044921875,27.364697265624997],[92.08339843750002,27.290625],[92.03115234375002,27.214306640624997],[92.00253906250003,27.147363281249994],[91.99228515625003,27.099902343749996],[91.99863281250003,27.079296875],[92.03085937500003,27.040820312499996],[92.06816406249999,26.9751953125],[92.07343750000001,26.91484375],[92.04970703125002,26.874853515625],[91.99833984374999,26.85498046875],[91.84208984374999,26.852978515624997],[91.67158203125001,26.802001953125],[91.517578125,26.807324218749997],[91.45585937499999,26.866894531249997],[91.4267578125,26.867089843749994],[91.28652343750002,26.789941406249994],[90.73964843750002,26.771679687499997],[90.34589843750001,26.890332031249997],[90.2060546875,26.847509765625],[90.12294921875002,26.754589843749997],[89.94316406249999,26.723925781249996],[89.76386718750001,26.7015625],[89.60996093750003,26.719433593749997],[89.58613281250001,26.778955078124994],[89.33212890625003,26.8486328125],[89.14824218749999,26.816162109375],[89.04091796875002,26.865039062499996],[88.85761718750001,26.961474609374996],[88.73876953125,27.175585937499996],[88.76035156250003,27.218115234375],[88.88164062499999,27.2974609375],[88.89140624999999,27.316064453124994],[88.94755859374999,27.464013671874994],[89.48066406250001,28.059960937499994],[89.53691406249999,28.107421875],[89.65273437500002,28.15830078125],[89.74980468749999,28.188183593749997],[89.81689453125,28.256298828124997],[89.89785156250002,28.294140625],[89.98105468750003,28.311181640624994],[90.34824218750003,28.243945312499996],[90.36298828125001,28.216503906249997],[90.33310546875003,28.093994140625],[90.35273437500001,28.080224609374994],[90.47734374999999,28.070849609374996],[90.63007812500001,28.078564453124997],[90.71572265625002,28.071728515624997],[91.02080078124999,27.970068359375],[91.07773437500003,27.974462890625],[91.22587890624999,28.071240234374997],[91.27304687500003,28.078369140625],[91.30683593750001,28.064013671874996],[91.36757812500002,28.021630859374994],[91.64189453124999,27.923242187499994],[91.63193359375003,27.759960937499997]]]},"properties":{"name":"Bhutan","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[25.2587890625,-17.793554687500006],[25.242285156250006,-17.969042968750003],[25.939355468750023,-18.93867187500001],[26.168066406250006,-19.53828125000001],[27.17822265625,-20.10097656250001],[27.28076171875,-20.47871093750001],[27.679296875,-20.503027343750006],[27.66943359375,-21.064257812500003],[28.014062500000023,-21.55419921875],[29.02558593750001,-21.796875],[29.042382812500023,-22.018359375],[29.237207031250023,-22.07949218750001],[29.315234375000017,-22.15771484375],[29.36484375,-22.193945312500006],[29.1298828125,-22.21328125],[29.013476562500017,-22.278417968750006],[28.94580078125,-22.395117187500006],[28.83984375,-22.480859375],[28.21015625000001,-22.693652343750003],[27.812597656250006,-23.108007812500006],[27.7685546875,-23.14892578125],[27.085546875,-23.577929687500003],[26.835058593750006,-24.240820312500006],[26.617773437500006,-24.3955078125],[26.451757812500006,-24.58271484375001],[26.39716796875001,-24.613574218750003],[26.130859375,-24.671484375],[26.031835937500006,-24.702441406250003],[25.912109375,-24.74746093750001],[25.518164062500006,-25.66279296875001],[25.21337890625,-25.75625],[24.33056640625,-25.74287109375001],[24.19296875,-25.632910156250006],[23.969531250000017,-25.626074218750006],[23.89375,-25.600878906250003],[23.389257812500006,-25.29140625],[23.148730468750017,-25.288671875],[22.878808593750023,-25.45791015625001],[22.59765625,-26.13271484375001],[22.548632812500017,-26.17841796875001],[22.47089843750001,-26.219042968750003],[22.217578125000017,-26.38886718750001],[22.090917968750006,-26.580175781250006],[22.01093750000001,-26.635839843750006],[21.78828125000001,-26.710058593750006],[21.738085937500017,-26.80683593750001],[21.694726562500023,-26.840917968750006],[20.73984375,-26.84882812500001],[20.641406250000017,-26.7421875],[20.79316406250001,-25.915625],[20.4306640625,-25.147070312500006],[19.98046875,-24.77675781250001],[19.977343750000017,-22.00019531250001],[20.9794921875,-21.9619140625],[20.97412109375,-18.31884765625],[23.219335937500006,-17.99970703125001],[23.599707031250006,-18.4599609375],[24.243945312500017,-18.0234375],[24.530566406250017,-18.052734375],[24.909082031250023,-17.821386718750006],[25.2587890625,-17.793554687500006]]]},"properties":{"name":"Botswana","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[22.86005859375001,10.919677734375],[23.646289062500017,9.822900390624994],[23.62265625,9.340625],[23.46826171875,9.11474609375],[23.53730468750001,8.815820312499994],[24.147363281250023,8.665625],[24.291406250000023,8.29140625],[24.853320312500017,8.137548828124991],[25.20039062500001,7.807910156249989],[25.18134765625001,7.557226562499991],[25.27890625,7.427490234375],[26.36181640625,6.635302734374989],[26.30859375,6.455322265625],[26.514257812500006,6.069238281249994],[27.143945312500023,5.722949218749989],[27.4033203125,5.109179687499989],[27.071875,5.199755859374989],[26.822070312500017,5.062402343749994],[25.52509765625001,5.31210937499999],[25.065234375000017,4.967431640624994],[24.31982421875,4.994140625],[23.41718750000001,4.663134765624989],[22.864550781250017,4.723876953125],[22.422167968750017,4.134960937499997],[20.55810546875,4.462695312499989],[20.226367187500017,4.829638671874989],[19.806542968750023,5.089306640624997],[19.5009765625,5.127490234374989],[19.06855468750001,4.891406249999989],[18.594140625000023,4.346240234374989],[18.6103515625,3.478417968749994],[18.474414062500017,3.622998046874997],[18.160937500000017,3.499804687499989],[17.491601562500023,3.687304687499989],[16.610742187500023,3.50537109375],[16.468554687500017,2.831738281249997],[16.183398437500017,2.270068359374989],[16.0634765625,2.90859375],[15.128710937500017,3.826904296875],[15.063574218750006,4.284863281249997],[14.73125,4.602392578124991],[14.56298828125,5.279931640624994],[14.616894531250011,5.865136718749994],[14.43115234375,6.038720703124994],[14.7392578125,6.27978515625],[15.206738281250011,7.206152343749991],[15.480078125,7.523779296874991],[15.957617187500006,7.507568359375],[16.37890625,7.683544921874997],[16.545312500000023,7.865478515625],[16.784765625,7.550976562499997],[17.6494140625,7.98359375],[18.56416015625001,8.0458984375],[19.108691406250017,8.656152343749994],[18.886035156250017,8.836035156249991],[18.95625,8.938867187499994],[20.342089843750017,9.127099609374994],[20.773242187500017,9.405664062499994],[21.682714843750006,10.289843749999989],[21.771484375,10.642822265625],[22.49384765625001,10.996240234374994],[22.86005859375001,10.919677734375]]]},"properties":{"name":"Central African Rep.","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-59.78759765624997,43.939599609374994],[-60.11748046874996,43.95336914062506],[-59.727148437500006,44.002832031249994],[-59.78759765624997,43.939599609374994]]],[[[-66.7625,44.68178710937502],[-66.8970703125,44.62890625],[-66.80214843749994,44.80537109374998],[-66.7625,44.68178710937502]]],[[[-60.961572265624966,45.48994140625001],[-61.081738281249926,45.55781249999998],[-60.91245117187498,45.56728515625005],[-60.961572265624966,45.48994140625001]]],[[[-73.69531249999997,45.58549804687502],[-73.85771484375002,45.573583984375006],[-73.57236328124998,45.69448242187502],[-73.69531249999997,45.58549804687502]]],[[[-73.56650390625003,45.469091796875034],[-73.960546875,45.44140624999997],[-73.68745117187498,45.561425781249994],[-73.47607421874997,45.704736328124994],[-73.56650390625003,45.469091796875034]]],[[[-61.10517578124998,45.94472656250002],[-60.86523437499997,45.983496093750006],[-61.05903320312501,45.70336914062497],[-60.73789062499995,45.75141601562498],[-60.46059570312494,45.96870117187501],[-60.733300781249994,45.956591796875045],[-60.297949218750034,46.31123046874998],[-60.22646484374994,46.19555664062506],[-59.86503906249993,46.159521484375006],[-59.8421875,45.941552734374994],[-60.67294921874995,45.59082031250006],[-61.28369140624994,45.573876953124966],[-61.44980468749995,45.71621093750002],[-61.40864257812501,46.17036132812498],[-60.87016601562499,46.796777343749966],[-60.40820312500003,47.00351562499998],[-60.332910156249966,46.737011718749955],[-60.49453125000002,46.270263671875],[-61.10517578124998,45.94472656250002]]],[[[-63.811279296875,46.46870117187501],[-63.68144531249993,46.561914062499994],[-63.12939453125,46.422216796875034],[-62.02373046874999,46.42158203125001],[-62.52607421875001,46.20288085937503],[-62.531347656250034,45.977294921875],[-63.02207031249998,46.06660156249998],[-62.89453125000003,46.12358398437496],[-63.056347656249955,46.22392578124996],[-62.97846679687498,46.31635742187498],[-63.21347656249998,46.15986328124998],[-63.641015624999966,46.23046874999997],[-63.758642578125034,46.397607421874994],[-64.11083984375003,46.425439453124994],[-64.13603515624999,46.59970703125006],[-64.388037109375,46.640869140625],[-63.99355468750002,47.06157226562502],[-64.08789062499997,46.77543945312499],[-63.811279296875,46.46870117187501]]],[[[-61.91411132812496,47.284521484375034],[-61.77255859374998,47.25981445312499],[-62.00830078124994,47.23427734375002],[-61.924707031249966,47.425146484375006],[-61.3955078125,47.63764648437504],[-61.91411132812496,47.284521484375034]]],[[[-54.227148437500034,47.44135742187501],[-54.32597656250002,47.408105468749994],[-54.12817382812494,47.646826171875034],[-54.227148437500034,47.44135742187501]]],[[[-74.70888671874997,45.0038574218751],[-73.55810546875,45.425097656250045],[-73.1595703125,46.01005859375002],[-72.10927734374997,46.55122070312504],[-71.26118164062495,46.75625],[-70.51948242187501,47.032519531250045],[-69.47104492187503,47.96728515625006],[-68.23818359374994,48.62641601562504],[-66.17817382812493,49.21313476562503],[-64.83632812499994,49.191748046875006],[-64.2162109375,48.873632812500034],[-64.51372070312493,48.84111328124999],[-64.24609374999994,48.69111328124998],[-64.34882812500001,48.423193359375034],[-65.259423828125,48.02124023437503],[-65.92670898437495,48.188867187499994],[-66.70439453125002,48.0224609375],[-66.35961914062494,48.06064453125006],[-65.84941406250002,47.91103515625005],[-65.60722656249996,47.67001953125006],[-65.00166015624995,47.84682617187502],[-64.70322265625,47.72485351562503],[-64.91220703125003,47.36865234375003],[-65.31889648437502,47.101220703124994],[-64.831396484375,47.06079101562503],[-64.88251953124993,46.822851562500034],[-64.54150390625,46.240332031250034],[-63.91591796875002,46.165820312500045],[-63.831933593749966,46.107177734375],[-64.05639648437503,46.021337890625006],[-63.70288085937494,45.858007812500034],[-62.70068359374997,45.740576171875006],[-62.750097656250006,45.64824218750002],[-62.483056640624966,45.62182617187506],[-61.955517578124955,45.86816406249997],[-61.776513671874994,45.655615234375006],[-61.49228515624998,45.68701171875],[-61.350488281249966,45.57368164062501],[-61.28198242187494,45.441064453124994],[-61.46098632812502,45.36669921875003],[-61.03154296875002,45.29174804687506],[-63.306298828124994,44.64257812500003],[-63.60400390624997,44.68320312500006],[-63.60976562499999,44.47998046875006],[-63.999707031249926,44.64492187499999],[-64.10087890624993,44.487451171874966],[-64.1669921875,44.58666992187503],[-64.28608398437493,44.55034179687499],[-64.27568359374993,44.33408203124998],[-65.48168945312497,43.51806640625],[-65.73813476562498,43.56074218750001],[-65.88691406250001,43.79521484374999],[-66.125732421875,43.813818359375034],[-66.19306640624995,44.143847656250045],[-65.86801757812498,44.56879882812501],[-66.14638671875002,44.43593750000005],[-66.090625,44.50493164062499],[-64.44814453125,45.33745117187502],[-64.13549804687497,45.023046875],[-64.09316406249997,45.21708984375002],[-63.368017578125034,45.36479492187502],[-64.87314453124998,45.35458984375006],[-64.31464843749998,45.83569335937503],[-64.48222656250002,45.80634765624998],[-64.63271484375002,45.94663085937506],[-64.77851562499998,45.63842773437497],[-65.88447265624995,45.22290039062506],[-66.10976562500002,45.316601562499955],[-66.02656249999995,45.417578125],[-66.43984374999994,45.09589843750001],[-66.87246093749997,45.067285156249966],[-67.12485351562498,45.16943359375],[-67.366943359375,45.17377929687498],[-67.43266601562496,45.603125],[-67.80224609374994,45.7275390625],[-67.806787109375,47.08281249999999],[-68.23549804687502,47.34594726562503],[-68.93720703124998,47.21123046875002],[-69.0501953125,47.426611328125034],[-69.24287109374998,47.46298828124998],[-70.00771484375002,46.70893554687501],[-70.296240234375,45.90610351562506],[-70.86503906249999,45.27070312500001],[-71.327294921875,45.29008789062496],[-71.51752929687495,45.00756835937497],[-74.663232421875,45.00390625000003],[-74.70888671874997,45.0038574218751]]],[[[-126.09208984374995,49.35400390625003],[-126.06401367187499,49.26362304687501],[-126.22963867187498,49.29565429687506],[-126.09208984374995,49.35400390625003]]],[[[-54.55439453125001,49.5888671875],[-54.786523437499966,49.496142578125045],[-54.86357421875002,49.576074218749966],[-54.55439453125001,49.5888671875]]],[[[-54.093701171874955,49.74443359374999],[-53.98066406250001,49.66196289062498],[-54.28613281249997,49.595361328124994],[-54.27763671875002,49.71147460937502],[-54.093701171874955,49.74443359374999]]],[[[-126.64121093749999,49.605810546875006],[-126.93857421874999,49.71845703125004],[-126.92583007812497,49.837744140625006],[-126.73813476562502,49.84365234375005],[-126.64121093749999,49.605810546875006]]],[[[-61.801123046875034,49.093896484374966],[-63.04150390624994,49.224951171875034],[-64.485205078125,49.88696289062497],[-64.13144531249995,49.94165039062503],[-62.858544921874966,49.70546875000005],[-61.817138671875,49.28354492187498],[-61.69614257812495,49.139013671875006],[-61.801123046875034,49.093896484374966]]],[[[-125.18413085937497,50.09711914062498],[-125.301171875,50.4140625],[-125.07402343750002,50.22065429687501],[-125.18413085937497,50.09711914062498]]],[[[-127.19731445312495,50.640380859375],[-125.48208007812501,50.316796874999966],[-124.83061523437499,49.53007812500002],[-123.99580078125,49.22402343750002],[-123.49702148437498,48.58208007812499],[-123.38989257812501,48.67021484374999],[-123.31064453125003,48.41103515625002],[-123.57314453124995,48.32280273437499],[-123.91694335937501,48.386572265625034],[-125.12070312500002,48.76079101562496],[-124.84965820312496,49.02827148437501],[-124.81264648437497,49.212646484375],[-124.92734374999998,49.01420898437499],[-125.489453125,48.933789062499955],[-125.82851562499998,49.09184570312499],[-125.64423828125001,49.18579101562506],[-125.95166015625001,49.24804687500003],[-125.93540039062499,49.401464843750006],[-126.51914062499999,49.396777343750045],[-126.54189453125001,49.590478515624966],[-126.13408203124997,49.672314453124955],[-126.52524414062499,49.71958007812498],[-126.90332031250001,49.94414062499999],[-127.114306640625,49.879736328125034],[-127.24980468749999,50.13798828124996],[-127.34941406249995,50.05195312500001],[-127.46713867187503,50.163427734375006],[-127.86391601562495,50.12773437500002],[-127.90585937499998,50.44521484375002],[-127.48652343749998,50.404638671875034],[-127.46591796874996,50.58310546875006],[-128.05834960937494,50.498486328124955],[-128.34604492187503,50.744238281250006],[-127.91806640624998,50.86054687500001],[-127.19731445312495,50.640380859375]]],[[[-55.45874023437494,51.53652343750005],[-55.58339843749994,51.38857421875002],[-56.031103515625034,51.328369140625],[-55.8,51.033300781250034],[-56.732324218749966,50.007714843749994],[-56.822167968749966,49.613476562499955],[-56.179394531249955,50.114990234375],[-56.161279296874994,49.94013671874998],[-55.50292968749997,49.98315429687503],[-56.14018554687496,49.61914062500006],[-55.869824218749955,49.67016601562506],[-56.08730468750002,49.45195312499999],[-55.375927734374955,49.48974609374997],[-55.34384765624998,49.37290039062506],[-55.22954101562496,49.508154296875006],[-55.35317382812502,49.07944335937506],[-54.50219726562503,49.52734375],[-54.44824218749997,49.329443359375006],[-53.957714843749955,49.44184570312498],[-53.61943359374996,49.321630859375006],[-53.57343750000001,49.141210937500034],[-54.16127929687494,48.787695312500034],[-53.852880859375006,48.81132812499996],[-53.966015624999955,48.70668945312505],[-53.70634765624999,48.65551757812503],[-54.11445312499998,48.393603515625045],[-53.027587890625,48.634716796874955],[-53.1357421875,48.40185546875003],[-53.60976562500002,48.20771484375001],[-53.56943359374998,48.088085937499955],[-53.869580078124926,48.019677734374966],[-53.63823242187496,48.01464843750003],[-53.863671874999966,47.787011718749994],[-53.67236328125,47.64824218749999],[-53.28271484375,47.99785156249996],[-52.86601562499993,48.11298828124998],[-53.16982421875002,47.51210937500005],[-52.945019531249955,47.55283203124998],[-52.782421874999955,47.769433593749966],[-52.653662109375034,47.549414062500006],[-53.11484375,46.65581054687502],[-53.32304687499996,46.71835937499998],[-53.589794921874955,46.638867187499955],[-53.59736328124998,47.14599609374997],[-54.00957031249993,46.839599609375],[-54.173730468749994,46.88037109375003],[-53.84951171875002,47.440332031249994],[-53.98901367187503,47.756201171875034],[-54.191845703124955,47.85981445312501],[-54.488134765625006,47.40385742187502],[-54.47392578124996,47.54707031249998],[-54.856640624999955,47.385009765625],[-55.31572265624993,46.905712890624955],[-55.78852539062498,46.86723632812502],[-55.91923828124996,47.01689453124996],[-55.49150390624996,47.16064453125003],[-54.78461914062501,47.664746093749955],[-55.366308593750034,47.66108398437501],[-55.57612304687498,47.46523437499999],[-56.12724609374999,47.50283203125002],[-55.867089843749994,47.592333984375045],[-55.85791015625,47.81918945312498],[-56.774121093749955,47.56499023437499],[-58.33686523437501,47.73085937500002],[-59.11694335937494,47.57070312499999],[-59.32065429687498,47.736914062500006],[-59.272070312500034,47.99555664062504],[-58.330224609374994,48.52211914062502],[-59.16767578124998,48.558496093749966],[-58.84179687500003,48.74643554687498],[-58.906445312499955,48.65019531249999],[-58.716455078124994,48.59804687500002],[-58.403662109375034,49.08432617187498],[-57.99052734374996,48.987939453124966],[-58.09892578124993,49.07744140624999],[-57.98007812499998,49.229638671874994],[-58.19091796875003,49.25874023437498],[-58.21337890625,49.38666992187501],[-58.01582031249998,49.54248046874997],[-57.79130859374999,49.48999023437503],[-57.92617187499999,49.700830078124994],[-57.4326171875,50.50581054687504],[-57.179589843749966,50.614843750000034],[-57.29799804687502,50.69873046874997],[-57.03593750000002,51.01083984374998],[-56.68242187500002,51.332763671875],[-56.025585937499955,51.56835937500006],[-55.6904296875,51.471337890624994],[-55.666406249999966,51.57890624999999],[-55.45874023437494,51.53652343750005]]],[[[-127.92465820312498,51.47387695312497],[-128.14877929687498,51.62670898437503],[-128.03173828125006,51.708398437499966],[-127.92465820312498,51.47387695312497]]],[[[-79.38427734374997,51.951953125000045],[-79.64375,52.01005859374996],[-79.27128906249996,52.086816406249966],[-79.38427734374997,51.951953125000045]]],[[[-128.36875,52.40087890625],[-128.43979492187503,52.696386718750006],[-128.24726562499998,52.784375],[-128.36875,52.40087890625]]],[[[-80.73168945312494,52.74726562499998],[-82.03925781249998,53.04990234374998],[-81.84731445312494,53.18627929687497],[-81.135595703125,53.20581054687503],[-80.73168945312494,52.74726562499998]]],[[[-131.7537109375,53.195556640625],[-131.63466796874997,52.92216796874999],[-131.97177734374998,52.87983398437498],[-131.45522460937502,52.70170898437502],[-131.59057617187494,52.578222656250006],[-131.25971679687495,52.415917968749966],[-131.31992187499998,52.30307617187498],[-131.142626953125,52.291113281250034],[-131.221533203125,52.15361328124999],[-132.16508789062493,52.783300781250034],[-132.14375,52.99931640624999],[-132.54677734374997,53.1375],[-131.7537109375,53.195556640625]]],[[[-128.55244140624998,52.93974609375002],[-128.50991210937502,52.51860351562502],[-128.678955078125,52.289648437500006],[-128.74633789062494,52.763378906249955],[-128.89980468749997,52.67382812500003],[-129.175927734375,52.964941406250006],[-129.033251953125,53.27993164062505],[-128.63266601562498,53.1125],[-128.55244140624998,52.93974609375002]]],[[[-129.167724609375,53.11787109374998],[-129.32387695312502,53.142138671875045],[-129.23818359374997,53.33007812500006],[-129.167724609375,53.11787109374998]]],[[[-129.84858398437498,53.167919921874955],[-130.51757812500003,53.54423828124999],[-130.45200195312498,53.63115234375002],[-129.94472656250002,53.436376953125034],[-129.75483398437498,53.244775390624994],[-129.84858398437498,53.167919921874955]]],[[[-130.236279296875,53.95854492187502],[-130.38422851562504,53.84394531250001],[-130.703173828125,53.892236328124994],[-130.44799804687497,54.08901367187502],[-130.236279296875,53.95854492187502]]],[[[-132.65551757812503,54.12749023437496],[-132.30336914062497,54.098876953125],[-132.16611328124998,53.95522460937505],[-132.53466796875,53.651708984375034],[-132.18696289062504,53.68481445312503],[-132.134423828125,54.03427734374998],[-131.66762695312502,54.14135742187503],[-131.957421875,53.308691406250034],[-132.34726562500003,53.18920898437503],[-132.747509765625,53.310498046874955],[-132.425,53.33696289062502],[-132.84501953125,53.507714843749994],[-133.07949218749997,53.837011718750034],[-133.04838867187493,54.15893554687497],[-132.65551757812503,54.12749023437496]]],[[[-130.92714843749997,54.47905273437499],[-130.90683593750003,54.63178710937504],[-130.75800781249998,54.61376953125],[-130.92714843749997,54.47905273437499]]],[[[-130.57534179687497,54.769677734374966],[-130.2140625,55.02587890625003],[-130.34941406249996,54.814550781250034],[-130.57534179687497,54.769677734374966]]],[[[-79.97758789062499,56.20703125000006],[-80.057470703125,56.28735351562497],[-79.57973632812502,56.466357421875045],[-79.97758789062499,56.20703125000006]]],[[[-78.93559570312496,56.26606445312498],[-79.17548828124998,55.88505859374999],[-79.18212890625,56.21215820312503],[-79.4951171875,55.87475585937503],[-79.76474609374995,55.80678710937505],[-79.54472656249999,56.12836914062501],[-79.9875,55.89213867187502],[-79.45888671875,56.53974609374998],[-79.53632812499995,56.180078124999966],[-79.27241210937493,56.600439453125006],[-78.93559570312496,56.26606445312498]]],[[[-61.743603515624955,57.55458984375005],[-61.6375,57.41606445312499],[-62.01123046875003,57.54848632812505],[-61.743603515624955,57.55458984375005]]],[[[-79.71650390624998,57.515527343749994],[-79.80844726562498,57.44243164062502],[-79.74257812499997,57.60795898437499],[-79.71650390624998,57.515527343749994]]],[[[-69.16005859375,59.04023437500001],[-69.35283203125002,58.96074218749999],[-69.30322265625003,59.144873046875006],[-69.16005859375,59.04023437500001]]],[[[-64.40703125,60.367089843749966],[-64.44194335937496,60.2978515625],[-64.73793945312497,60.37563476562502],[-64.83642578124997,60.50102539062499],[-64.40703125,60.367089843749966]]],[[[-68.23378906250002,60.24091796875001],[-68.36787109374998,60.314746093750045],[-68.08759765624998,60.58784179687501],[-67.81884765624994,60.449511718750074],[-68.23378906250002,60.24091796875001]]],[[[-78.531640625,60.72856445312499],[-78.66889648437498,60.716894531250006],[-78.24169921875,60.818652343750045],[-78.531640625,60.72856445312499]]],[[[-64.83261718749998,61.366064453125006],[-65.43212890625,61.649511718750034],[-64.78964843750003,61.662207031250034],[-64.83261718749998,61.366064453125006]]],[[[-65.03056640624999,61.879052734374966],[-64.89658203124995,61.73330078125005],[-65.23535156249997,61.89770507812506],[-65.03056640624999,61.879052734374966]]],[[[-79.54531250000002,62.41171875000006],[-79.28647460937495,62.247656250000034],[-79.32392578124995,62.02607421875001],[-79.81611328124995,61.59462890625002],[-80.26518554687496,61.818212890625006],[-80.26005859374996,62.10903320312502],[-79.9267578125,62.39287109375002],[-79.54531250000002,62.41171875000006]]],[[[-64.82382812499998,62.558740234374994],[-64.46503906249998,62.535937500000045],[-64.47832031250002,62.417871093749966],[-64.901220703125,62.421044921874994],[-64.82382812499998,62.558740234374994]]],[[[-70.33706054687497,62.548730468749994],[-70.76606445312498,62.596875],[-71.22011718750002,62.873925781249966],[-70.44262695312497,62.73378906250002],[-70.33706054687497,62.548730468749994]]],[[[-82.00048828124997,62.95419921874998],[-82.02583007812498,62.73007812499998],[-82.56826171875002,62.403222656249994],[-83.01582031249998,62.20991210937498],[-83.69887695312497,62.16025390624998],[-83.91049804687498,62.45415039062499],[-83.37641601562498,62.904931640624994],[-82.00048828124997,62.95419921874998]]],[[[-77.87670898437497,63.470556640625034],[-77.53271484374997,63.233642578125],[-77.94243164062496,63.11440429687502],[-78.536767578125,63.423730468749994],[-77.87670898437497,63.470556640625034]]],[[[-76.67758789062503,63.393945312499966],[-77.36474609374994,63.588330078124955],[-77.13369140624997,63.68203125000002],[-76.65244140624998,63.503564453124994],[-76.67758789062503,63.393945312499966]]],[[[-84.91962890624995,65.26108398437503],[-84.50112304687497,65.45844726562501],[-84.08486328125,65.21782226562502],[-82.05,64.64428710937506],[-81.67612304687498,64.21264648437503],[-81.88710937499997,64.01640625000002],[-80.82895507812495,64.08994140625],[-80.30205078124999,63.76220703125003],[-81.04638671875003,63.461572265624966],[-82.378125,63.706787109375],[-82.46708984375002,63.92695312500001],[-83.30395507812497,64.14379882812506],[-84.63291015625,63.30922851562502],[-85.39262695312496,63.119677734375045],[-85.76894531249997,63.70034179687502],[-87.15190429687499,63.58564453125001],[-86.93203124999997,63.90166015625002],[-86.252099609375,64.13686523437497],[-86.37426757812503,64.56582031249997],[-86.074609375,65.533837890625],[-85.55468750000003,65.91865234374995],[-85.17622070312501,65.746875],[-85.23994140624993,65.51030273437499],[-84.91962890624995,65.26108398437503]]],[[[-84.67475585937498,65.575],[-85.096337890625,65.756201171875],[-85.14960937500001,66.01538085937506],[-84.75737304687496,65.85893554687505],[-84.67475585937498,65.575]]],[[[-83.72597656249997,65.796728515625],[-83.23374023437495,65.71503906249995],[-83.332421875,65.63105468749998],[-84.11826171874995,65.77177734375007],[-84.40717773437501,66.13100585937497],[-83.78696289062495,65.96577148437498],[-83.72597656249997,65.796728515625]]],[[[-108.09272460937501,67.00517578124999],[-107.80551757812493,66.99858398437507],[-107.94394531249999,66.8578125],[-108.09272460937501,67.00517578124999]]],[[[-62.681542968749966,67.05629882812502],[-62.87163085937499,67.06259765625006],[-62.41679687499996,67.18847656250003],[-62.681542968749966,67.05629882812502]]],[[[-107.89985351562497,67.40180664062495],[-107.95024414062503,67.31821289062498],[-108.15224609374997,67.429443359375],[-108.04897460937498,67.664892578125],[-107.89985351562497,67.40180664062495]]],[[[-73.621728515625,67.783837890625],[-74.573388671875,67.82866210937507],[-74.70654296875003,68.06708984374995],[-73.49375,68.00063476562502],[-73.40717773437498,67.79306640625],[-73.621728515625,67.783837890625]]],[[[-86.59555664062498,67.7359375],[-86.89252929687498,67.836572265625],[-86.95981445312503,68.10024414062497],[-86.70209960937501,68.30561523437498],[-86.42114257812497,68.18344726562503],[-86.59555664062498,67.7359375]]],[[[-75.67587890624998,68.32250976562506],[-75.078125,68.17314453124999],[-75.20195312499996,67.45917968750001],[-75.78007812499996,67.28354492187503],[-76.94418945312498,67.25029296875002],[-77.30439453125001,67.68510742187505],[-77.12587890624997,67.94707031250002],[-76.59580078124998,68.27895507812497],[-75.67587890624998,68.32250976562506]]],[[[-78.98271484374999,68.19282226562501],[-79.17475585937493,68.26445312500002],[-78.95258789062495,68.35302734375006],[-78.98271484374999,68.19282226562501]]],[[[-104.54067382812497,68.405908203125],[-105.05136718749999,68.55903320312501],[-104.60200195312503,68.56152343749997],[-104.54067382812497,68.405908203125]]],[[[-74.880859375,68.34868164062505],[-75.40024414062503,68.52548828125],[-75.28740234374996,68.68774414062503],[-74.98364257812497,68.64760742187502],[-74.880859375,68.34868164062505]]],[[[-101.84589843749994,68.58632812499997],[-102.30815429687497,68.681982421875],[-102.01337890624995,68.82539062500001],[-101.73295898437495,68.75341796875],[-101.84589843749994,68.58632812499997]]],[[[-100.21723632812497,68.80668945312502],[-100.59653320312496,68.76640625000007],[-100.56547851562495,69.02680664062501],[-100.21723632812497,68.80668945312502]]],[[[-99.99467773437502,69.01352539062503],[-100.19570312500002,68.991455078125],[-100.153125,69.12949218750003],[-99.99467773437502,69.01352539062503]]],[[[-79.21064453124995,68.845458984375],[-79.24267578125,69.04926757812495],[-78.33256835937496,69.38603515624999],[-78.77919921875,68.95048828124999],[-79.21064453124995,68.845458984375]]],[[[-90.1998046875,69.419091796875],[-90.33027343749993,69.252197265625],[-90.49204101562503,69.369873046875],[-90.1998046875,69.419091796875]]],[[[-76.99536132812503,69.14375],[-77.37939453125,69.2740234375],[-77.18754882812502,69.440087890625],[-76.66884765625002,69.36616210937504],[-76.99536132812503,69.14375]]],[[[-101.171728515625,69.39707031250003],[-101.31289062499998,69.57607421875],[-101.00063476562497,69.4619140625],[-101.171728515625,69.39707031250003]]],[[[-95.51367187499997,69.57363281250002],[-95.43745117187498,69.37846679687505],[-95.73012695312502,69.34755859374997],[-95.80620117187499,69.56049804687501],[-95.89345703125,69.35175781250004],[-95.87583007812495,69.60600585937505],[-95.51367187499997,69.57363281250002]]],[[[-67.91469726562494,69.54096679687504],[-68.22138671874998,69.61674804687502],[-67.908837890625,69.68183593749995],[-67.91469726562494,69.54096679687504]]],[[[-78.02910156249993,69.71489257812502],[-78.03999023437495,69.6083984375],[-78.84819335937502,69.4828125],[-78.02910156249993,69.71489257812502]]],[[[-79.43066406250003,69.78779296874995],[-79.55283203124995,69.63085937500006],[-80.04750976562502,69.63432617187505],[-79.97783203124993,69.50966796874997],[-80.794775390625,69.68925781250005],[-80.42421875000002,69.797607421875],[-79.43066406250003,69.78779296874995]]],[[[-97.439453125,69.64267578125006],[-96.29995117187494,69.34438476562505],[-95.7513671875,68.89765624999998],[-95.26777343749998,68.82607421874997],[-96.40156249999995,68.47070312500003],[-97.47202148437498,68.543701171875],[-98.320556640625,68.84272460937498],[-98.70380859374993,68.80278320312502],[-98.90449218749995,68.93242187500005],[-99.25400390625002,68.86318359374997],[-99.49467773437493,68.95957031249998],[-99.455712890625,69.13120117187503],[-98.45595703124997,69.33466796875001],[-98.54599609375,69.57290039062497],[-98.04135742187498,69.456640625],[-98.20048828124996,69.79697265625006],[-97.79072265624998,69.86162109374999],[-97.439453125,69.64267578125006]]],[[[-86.91303710937501,70.11323242187501],[-86.55766601562499,69.99531249999995],[-87.3232421875,70.08012695312502],[-86.91303710937501,70.11323242187501]]],[[[-74.70888671874997,45.0038574218751],[-74.76245117187494,44.99907226562502],[-74.99614257812496,44.970117187499966],[-75.40126953124997,44.77226562499999],[-75.81933593749997,44.468017578125],[-76.18579101562503,44.24223632812502],[-76.819970703125,43.62880859375011],[-77.59653320312492,43.62861328125007],[-78.45825195312497,43.63149414062511],[-78.72041015624993,43.62495117187501],[-78.84555664062492,43.58334960937506],[-79.171875,43.466552734375085],[-79.0830566406249,43.33139648437509],[-79.05922851562494,43.27807617187506],[-79.066064453125,43.10610351562502],[-79.02617187499996,43.01733398437506],[-78.98076171874993,42.98061523437502],[-78.91508789062496,42.90913085937504],[-79.17373046875,42.74853515625],[-80.24755859374991,42.366015625000045],[-81.02822265624997,42.247167968750006],[-81.50732421874997,42.10346679687504],[-81.97416992187496,41.88872070312499],[-82.43906249999989,41.6748535156251],[-82.69003906249995,41.675195312499994],[-83.141943359375,41.97587890624996],[-83.10952148437497,42.25068359375001],[-82.54531249999997,42.62470703124998],[-82.19038085937495,43.47407226562501],[-82.137841796875,43.570898437500034],[-82.48505859374993,45.08374023437503],[-82.55107421874987,45.3473632812501],[-82.91933593749994,45.51796875000002],[-83.59267578125,45.81713867187506],[-83.46948242187503,45.99467773437499],[-83.61596679687503,46.116845703124994],[-83.97778320312494,46.08491210937507],[-84.12319335937497,46.50292968749997],[-84.44047851562496,46.49814453125006],[-84.66577148437503,46.54326171875002],[-84.87597656249994,46.89990234375003],[-85.07006835937497,46.97993164062498],[-85.65224609375,47.21997070312503],[-86.67216796874996,47.636425781249955],[-87.20800781249997,47.848486328125006],[-87.74389648437497,48.06054687500003],[-88.37817382812497,48.30307617187506],[-89.45566406249992,47.99624023437508],[-90.79731445312495,48.13105468750001],[-91.04345703124991,48.19370117187498],[-91.38720703124997,48.05854492187498],[-92.00517578125002,48.301855468750006],[-92.3484375,48.276611328125],[-92.41459960937493,48.276611328125],[-92.50058593749995,48.43535156250002],[-92.83671875,48.567773437499994],[-93.25795898437497,48.62885742187501],[-93.37788085937498,48.61655273437498],[-93.70771484374995,48.525439453125074],[-93.85161132812496,48.607275390625034],[-94.6208984374999,48.7426269531251],[-94.71279296874997,48.863427734374994],[-94.80346679687497,49.0029296875],[-94.86040039062493,49.258593750000045],[-94.85434570312495,49.304589843749994],[-95.15527343749997,49.3696777343751],[-95.16206054687493,48.991748046875045],[-95.39790039062493,48.99316406249997],[-96.25068359374993,48.99316406249997],[-96.67705078124993,48.99316406249997],[-97.52983398437493,48.99316406249997],[-98.80898437499995,48.99316406249997],[-104.77832031249997,48.993115234375125],[-110.7476562499999,48.993066406250136],[-116.71704101562493,48.993066406250136],[-118.84892578124993,48.993066406250136],[-119.27534179687494,48.993066406250136],[-119.70170898437495,48.99301757812495],[-120.98085937499995,48.99301757812495],[-122.78876953124994,48.99301757812495],[-122.82670898437495,49.028417968750034],[-122.9241699218749,49.07465820312504],[-122.96269531249993,49.07460937500005],[-123.06328125,48.97773437500001],[-123.22944335937493,49.260498046875085],[-122.87910156249995,49.39892578125003],[-123.27675781249997,49.34394531250001],[-123.1875,49.680322265624994],[-123.53056640624989,49.39731445312506],[-124.02861328125002,49.602880859375006],[-123.99262695312497,49.736181640625006],[-123.81718749999993,49.58657226562508],[-123.58247070312498,49.68125],[-123.87441406250005,49.736816406250114],[-123.82543945312493,50.14423828124998],[-123.94589843749995,50.18393554687509],[-123.9849121093749,49.87558593749998],[-124.28125,49.77211914062502],[-124.78237304687492,50.02011718749992],[-125.05668945312495,50.418652343750125],[-124.8598632812499,50.872412109375006],[-125.05878906249993,50.51386718749998],[-125.4763183593749,50.49716796874995],[-125.53935546874996,50.64902343749998],[-125.64130859374994,50.46621093750005],[-126.09433593749995,50.497607421875045],[-126.44746093750004,50.58774414062492],[-125.90410156250002,50.704931640625006],[-126.51435546875,50.679394531250125],[-126.37460937499995,50.83735351562498],[-126.5217773437499,50.86606445312498],[-126.51733398437497,51.0568359375001],[-126.63178710937494,50.915136718750006],[-127.057568359375,50.86752929687509],[-127.70810546875,51.15117187499996],[-127.41967773437496,51.608056640625136],[-126.69145507812502,51.70341796875002],[-127.33872070312489,51.70737304687495],[-127.66870117187497,51.47758789062502],[-127.85053710937498,51.67319335937509],[-127.79536132812493,52.19101562500006],[-127.43793945312504,52.356152343750125],[-127.24223632812496,52.39511718750009],[-126.71396484374989,52.060693359374994],[-127.19399414062498,52.45766601562502],[-126.95136718749994,52.7510253906251],[-127.01933593750002,52.8424804687501],[-127.06621093749989,52.65268554687498],[-127.79189453124994,52.28935546875002],[-128.10224609374993,51.78842773437495],[-128.3576171875,52.1588867187501],[-128.0375,52.318164062500045],[-127.94023437499996,52.545166015625085],[-128.27153320312493,52.3629882812501],[-128.05327148437487,52.91069335937496],[-128.3650390624999,52.82578125000006],[-128.52470703125002,53.1406738281251],[-129.08090820312492,53.36728515625006],[-129.1715820312499,53.53359375000002],[-128.8545898437499,53.70454101562504],[-128.90561523437492,53.559326171875114],[-128.5421386718749,53.420654296875114],[-128.13271484375002,53.417773437500045],[-127.92783203125,53.274707031250045],[-128.2072265624999,53.483203125000074],[-128.67553710937494,53.55458984375005],[-128.76367187500003,53.746875],[-128.5321289062499,53.85810546875007],[-128.959375,53.84145507812505],[-129.2578613281249,53.417968750000085],[-129.56372070312506,53.251464843750114],[-130.33525390625002,53.723925781250074],[-130.04331054687495,54.13354492187503],[-129.62602539062493,54.23027343750002],[-130.08422851562503,54.18139648437503],[-130.4302734375,54.42099609374998],[-129.56064453124995,55.46254882812508],[-129.79516601562503,55.559570312500114],[-130.04848632812494,55.05727539062511],[-130.01406249999997,55.950537109375006],[-130.09785156249995,56.10927734375002],[-130.41313476562487,56.12250976562507],[-130.47709960937496,56.230566406250034],[-130.649072265625,56.26367187500003],[-131.471875,56.55673828125006],[-131.82426757812496,56.58999023437508],[-131.86616210937495,56.792822265625006],[-132.1042968749999,56.85678710937509],[-132.062890625,56.95336914062503],[-132.33798828124992,57.07944335937498],[-132.27939453124998,57.14536132812506],[-132.23217773437494,57.198535156250074],[-132.30166015625005,57.2763183593751],[-132.44248046874986,57.40673828125003],[-132.55048828124995,57.499902343749994],[-133.00141601562495,57.948974609375],[-133.27529296875,58.22285156250004],[-133.54638671874997,58.50346679687499],[-134.21850585937503,58.849902343750045],[-134.32963867187505,58.93969726562506],[-134.39306640625,59.009179687499994],[-134.67724609374997,59.19926757812499],[-134.94375,59.28828125000001],[-135.05102539062491,59.57866210937502],[-135.36787109374998,59.743310546874994],[-135.70258789062504,59.72875976562506],[-136.3218261718749,59.604833984375034],[-136.27797851562494,59.48032226562506],[-136.46635742187493,59.459082031250006],[-136.57875976562494,59.15224609375002],[-136.81328125000002,59.15004882812511],[-137.12622070312491,59.04096679687507],[-137.2775390624999,58.988183593749994],[-137.43857421874995,58.903125],[-137.52089843749994,58.91538085937506],[-137.59331054687493,59.22626953124998],[-138.317626953125,59.611132812500074],[-138.86875,59.94575195312501],[-139.18515624999986,60.083593750000034],[-139.13696289062494,60.17270507812506],[-139.07924804687497,60.279443359375136],[-139.07924804687497,60.3437011718751],[-139.23476562499997,60.339746093749994],[-139.67631835937505,60.32832031249998],[-139.97329101562497,60.183154296875074],[-140.45283203125004,60.29970703125002],[-140.5254394531249,60.21835937499995],[-140.76274414062505,60.25913085937509],[-141.00214843750004,60.300244140625125],[-141.00214843750004,60.884667968749994],[-141.00214843750004,61.761279296875045],[-141.00214843750004,63.22226562499998],[-141.00214843750004,64.09887695312506],[-141.00214843750004,65.55991210937498],[-141.00214843750004,66.43652343750006],[-141.00214843750004,67.89755859374998],[-141.00214843750004,68.77416992187506],[-141.00214843750004,69.65078125000011],[-139.18154296874997,69.51552734375008],[-137.25996093749998,68.96411132812503],[-136.12236328124993,68.88222656250002],[-135.258837890625,68.68432617187503],[-135.93901367187487,68.9741699218751],[-135.575537109375,69.02695312500003],[-135.91020507812487,69.11147460937502],[-135.6914550781249,69.31118164062502],[-135.29282226562486,69.30786132812506],[-135.1408203124999,69.46782226562496],[-134.45683593749993,69.47763671875],[-134.40893554687494,69.68178710937502],[-133.87978515624997,69.50771484375011],[-134.17431640624991,69.25283203125005],[-133.16313476562496,69.43388671874999],[-132.91533203125002,69.62963867187506],[-132.40390625,69.65874023437496],[-132.48847656249993,69.73808593749996],[-132.16342773437498,69.70498046875014],[-131.13637695312497,69.90688476562505],[-130.66547851562495,70.12705078124998],[-129.944970703125,70.09091796875006],[-129.675634765625,70.19296875000009],[-129.64829101562495,69.9977539062501],[-130.83208007812487,69.65146484375006],[-131.9377929687499,69.5347167968751],[-132.8174804687499,69.20576171875004],[-133.41831054687492,68.84428710937493],[-133.138037109375,68.74658203125011],[-133.33666992187497,68.83525390625005],[-132.57763671874997,68.84780273437514],[-132.71894531249998,69.07919921875],[-131.78837890625002,69.43198242187495],[-131.32470703124997,69.36118164062509],[-131.06342773437504,69.45068359375003],[-130.97065429687495,69.20908203125],[-130.1176269531249,69.720068359375],[-128.89892578124994,69.96616210937506],[-129.15791015624995,69.80009765624999],[-129.05434570312502,69.70107421875005],[-128.85302734375003,69.7510253906251],[-127.68378906249994,70.26035156249995],[-128.17011718749998,70.41845703125],[-127.99101562499992,70.57382812500003],[-127.22597656249992,70.29614257812497],[-126.25043945312495,69.54526367187492],[-125.52495117187495,69.35156250000009],[-125.171875,69.42797851562503],[-125.35693359374991,69.62597656250003],[-124.767919921875,69.99003906249996],[-124.99038085937494,70.02661132812511],[-124.55502929687488,70.15122070312509],[-124.40693359374991,69.76743164062506],[-124.12460937499995,69.6899902343751],[-124.33808593749991,69.36484374999995],[-123.5284179687499,69.38935546874995],[-123.02578125,69.81000976562504],[-122.07006835937499,69.81616210937506],[-120.96245117187502,69.66040039062511],[-120.13999023437488,69.38056640625013],[-117.22695312499998,68.913427734375],[-116.05947265625,68.83701171875006],[-116.2434082031249,68.9740722656251],[-115.44228515624994,68.94091796875009],[-114.62016601562496,68.74609375],[-113.96440429687495,68.39907226562502],[-114.09594726562491,68.26679687500007],[-114.76528320312494,68.27021484375004],[-115.12705078124992,68.13203124999995],[-115.43447265624994,67.90234375000006],[-115.13320312499994,67.819189453125],[-112.50302734374993,67.6819335937501],[-110.9900390624999,67.79082031250007],[-110.07392578124995,67.99291992187506],[-109.63037109374991,67.73271484374996],[-109.03803710937504,67.69116210937503],[-108.85200195312497,67.42197265625009],[-108.61333007812493,67.59804687500008],[-107.98872070312495,67.2563964843751],[-107.99130859374995,67.09516601562513],[-108.49604492187493,67.09228515625006],[-107.25947265624998,66.39853515624995],[-107.71035156250001,66.74003906250007],[-107.7250976562499,66.98413085937506],[-107.15649414062497,66.88173828124997],[-107.9583984375,67.81860351562506],[-107.79829101562498,68.03691406249996],[-106.42426757812491,68.20058593750008],[-105.7501953125,68.59228515625011],[-106.45805664062496,68.51645507812495],[-106.60849609374988,68.35737304687504],[-107.61933593749994,68.3310546875],[-107.73417968749989,68.17373046875011],[-108.3228027343749,68.15410156250002],[-108.71811523437488,68.29746093750009],[-108.31347656249996,68.61079101562498],[-106.16445312499992,68.91987304687507],[-105.68559570312489,68.82817382812505],[-105.3774414062499,68.413818359375],[-104.65317382812488,68.23007812500003],[-104.48681640624991,68.06318359374998],[-103.47412109374993,68.11503906250005],[-102.32036132812489,67.73564453125005],[-101.55498046874992,67.69316406250007],[-100.21293945312489,67.83857421875004],[-98.92045898437502,67.72578124999998],[-98.41210937499991,67.80717773437505],[-98.63154296875004,68.0725585937501],[-97.45493164062486,67.61699218750002],[-97.20654296874989,67.85507812500003],[-97.73911132812495,67.97817382812505],[-98.19252929687494,67.92299804687502],[-98.65048828124989,68.36352539062506],[-98.21855468750002,68.31743164062507],[-97.7942382812499,68.38759765625],[-97.9250976562499,68.523681640625],[-97.41035156249993,68.49653320312498],[-96.97670898437497,68.25541992187505],[-96.43066406249991,68.3105957031251],[-96.72207031250005,68.03876953124998],[-95.9703125,68.24912109375],[-96.36914062499991,67.50976562500003],[-96.14145507812489,67.27182617187503],[-95.71992187499998,67.31679687500014],[-95.77768554687495,67.18461914062505],[-95.41591796875005,67.15556640624999],[-95.41889648437504,67.01323242187493],[-96.42255859374995,67.05175781249997],[-95.7875488281249,66.616796875],[-96.03686523437489,66.9375],[-95.39965820312503,66.94946289062509],[-95.25874023437493,67.26254882812492],[-95.65048828124986,67.73745117187505],[-95.46069335937503,68.02138671875],[-94.74443359374993,68.07089843749995],[-93.44892578124998,68.61889648437503],[-93.85244140624994,69.00034179687495],[-94.06489257812495,68.78476562500006],[-94.600439453125,68.80322265625011],[-94.08364257812497,69.12309570312507],[-94.254736328125,69.31376953125002],[-93.61948242187492,69.41699218750009],[-93.74853515624991,69.2261230468751],[-93.5322753906249,69.48090820312495],[-94.2708007812499,69.45512695312505],[-94.63383789062496,69.64965820312506],[-94.82250976562494,69.577783203125],[-95.96494140624989,69.80278320312499],[-96.5513671875,70.21030273437506],[-96.29770507812492,70.51137695312511],[-95.87861328124998,70.54897460937514],[-95.88632812499986,70.69428710937507],[-96.25800781249993,70.64228515625013],[-96.54892578124995,70.80874023437511],[-96.44658203124996,71.23989257812502],[-96.06201171874997,71.41386718749993],[-95.5642578124999,71.33676757812503],[-95.40625,71.49165039062498],[-95.87231445312494,71.57314453125005],[-94.73486328124994,71.98295898437507],[-94.30834960937491,71.76489257812506],[-93.74628906249998,71.742822265625],[-92.94868164062493,71.26210937500011],[-92.98144531249994,70.8522460937501],[-91.56406249999995,70.1782714843751],[-92.32050781250004,70.2353515625],[-92.51186523437494,70.10385742187503],[-91.976708984375,70.03867187500009],[-92.88779296874989,69.66821289062511],[-92.31166992187494,69.67290039062499],[-91.91196289062495,69.53125],[-91.20180664062494,69.64477539062494],[-91.43994140624997,69.52568359375002],[-90.4155761718749,69.45698242187507],[-90.89228515625004,69.26728515624995],[-91.23720703125005,69.28554687500014],[-90.47900390624994,68.88115234374999],[-90.57363281250005,68.47470703124998],[-90.20478515625004,68.25747070312511],[-89.27954101562491,69.25546875000003],[-88.22353515625,68.91503906249997],[-87.81357421874986,68.34570312499997],[-87.89267578125,68.24814453125],[-88.34697265624993,68.28828125000001],[-88.313818359375,67.95034179687508],[-87.359375,67.17724609374997],[-86.56079101562491,67.48212890625007],[-85.64316406249992,68.69970703124997],[-84.86757812499994,68.77333984375005],[-85.10664062499995,68.84404296875007],[-84.86220703125,69.07397460937503],[-85.38676757812493,69.23188476562504],[-85.50737304687487,69.84526367187493],[-82.61835937499993,69.69106445312514],[-82.39023437499989,69.60087890625007],[-82.75483398437493,69.49438476562506],[-82.30986328124996,69.41000976562509],[-82.22753906249997,69.24887695312495],[-81.37783203125005,69.18564453125003],[-81.95791015624991,68.88364257812498],[-81.38090820312496,68.85004882812504],[-81.28154296874987,68.65722656250003],[-81.91484374999993,68.4587890625001],[-82.55268554687504,68.44648437500007],[-82.22241210937489,68.145263671875],[-82.0125,68.19389648437496],[-81.97646484374997,67.86201171875001],[-81.2943359375,67.497412109375],[-81.46757812499996,67.0698730468751],[-83.40644531249998,66.37124023437508],[-84.53847656249994,66.97280273437505],[-84.84575195312502,67.02871093750008],[-85.11372070312498,66.90693359375013],[-84.73774414062504,66.93359375000006],[-84.223046875,66.68247070312506],[-83.86904296875,66.2135742187501],[-84.29306640624995,66.29179687500005],[-84.628076171875,66.20771484374998],[-85.603857421875,66.56826171875005],[-86.708154296875,66.52304687500009],[-86.68510742187502,66.36040039062499],[-85.95874023437491,66.11904296875002],[-87.45288085937503,65.33896484375009],[-87.96997070312503,65.34892578124999],[-89.7494140625,65.93603515625006],[-89.88969726562487,65.86855468749997],[-91.42724609374994,65.94790039062497],[-91.04111328124989,65.82983398437509],[-90.98344726562496,65.91923828124999],[-89.92407226562497,65.78027343750011],[-88.97402343749994,65.34829101562502],[-87.02753906249995,65.19809570312498],[-88.10561523437497,64.18330078125001],[-88.81772460937489,63.99223632812499],[-89.20063476562493,64.11376953125006],[-89.13154296874998,63.96850585937494],[-89.61582031249995,64.030615234375],[-89.8113281249999,64.18056640625],[-90.04165039062494,64.14086914062509],[-89.85571289062497,63.9569824218751],[-90.16816406250004,63.978759765625085],[-90.15473632812498,63.68964843749998],[-90.81191406249991,63.580908203125034],[-91.98222656249996,63.82241210937502],[-92.33842773437496,63.787646484375045],[-93.69633789062493,64.14716796875013],[-93.55981445312491,63.865283203125074],[-93.27021484374998,63.840869140625074],[-93.37851562499992,63.94848632812497],[-92.15688476562491,63.691699218750045],[-92.46508789062491,63.55507812500011],[-91.84184570312496,63.69755859374999],[-90.97006835937489,63.442773437500136],[-90.69858398437492,63.06386718750005],[-91.44897460937503,62.804052734375034],[-92.3612792968749,62.81938476562496],[-91.93583984374993,62.59238281250009],[-92.55141601562491,62.546728515625034],[-92.76596679687492,62.34995117187509],[-92.52797851562494,62.16840820312504],[-93.20537109374993,62.364941406250125],[-92.90551757812503,62.21513671874996],[-93.3330566406249,61.93291015625002],[-93.58178710937494,61.94204101562511],[-93.31201171874997,61.76728515625004],[-93.91274414062497,61.48144531250006],[-94.509375,60.60454101562493],[-94.76171874999991,60.498242187500125],[-94.78828124999998,59.26787109374993],[-94.95732421874996,59.068847656250085],[-94.28706054687493,58.716015625000125],[-94.33222656249998,58.297363281250114],[-94.12319335937494,58.73671875000008],[-93.1787597656249,58.72563476562496],[-92.43281249999993,57.3203125],[-92.7981445312499,56.921972656250034],[-90.89746093750003,57.25693359375006],[-88.94848632812489,56.85131835937503],[-88.07509765624997,56.46728515624994],[-87.48242187499991,56.021289062500045],[-85.55932617187491,55.54018554687508],[-85.21801757812491,55.348974609375034],[-85.3652832031249,55.07929687499998],[-85.06093749999997,55.285644531250085],[-83.91059570312493,55.314648437499955],[-82.39326171874998,55.067822265625125],[-82.219384765625,54.8134765625],[-82.42416992187486,54.2445800781251],[-82.14145507812492,53.81762695312497],[-82.29155273437496,53.03071289062507],[-81.5994140624999,52.432617187500085],[-81.82788085937489,52.22421875000009],[-81.46621093749994,52.204492187500136],[-80.588037109375,51.667236328125114],[-80.4433105468749,51.38857421875002],[-80.85122070312497,51.125],[-80.47832031249993,51.30732421874998],[-80.10356445312487,51.282861328125136],[-79.34790039062494,50.76264648437504],[-79.737451171875,51.186279296875],[-79.33867187500002,51.62817382812497],[-79.04052734375003,51.46376953125005],[-78.90317382812495,51.200292968750034],[-78.73134765624994,51.497460937499994],[-78.98164062499993,51.774560546875136],[-78.44809570312495,52.26137695312502],[-78.74414062499994,52.65537109374998],[-79.10034179687497,53.65664062500005],[-78.99604492187493,54.00249023437499],[-79.241796875,54.098876953125085],[-79.14672851562491,54.16923828125002],[-79.71235351562495,54.6718261718751],[-77.77529296874994,55.291259765625],[-76.60405273437496,56.19956054687495],[-76.52558593749998,56.8917968750001],[-76.80981445312497,57.65795898437506],[-77.15678710937496,58.018896484375034],[-78.51508789062493,58.68237304687503],[-77.76069335937498,59.38002929687505],[-77.72617187499995,59.67587890624992],[-77.34907226562495,59.57895507812509],[-77.48530273437493,59.684570312500114],[-77.28920898437494,60.0220214843751],[-77.58588867187498,60.088183593750074],[-77.45288085937497,60.1458007812501],[-77.6814453124999,60.427099609375034],[-77.503564453125,60.54272460937497],[-77.7908203124999,60.63984375000004],[-77.58955078124993,60.808593750000114],[-78.18134765624995,60.81914062499996],[-77.51435546874998,61.55629882812505],[-78.02138671874997,61.8320800781251],[-78.13339843749986,62.28227539062496],[-77.372412109375,62.572509765625114],[-75.81689453124991,62.31586914062507],[-75.7898437499999,62.17958984375002],[-75.3412109375,62.312109375],[-74.63256835937497,62.115673828125125],[-74.6458007812499,62.21113281250004],[-73.70507812499991,62.47314453124994],[-72.68696289062498,62.12456054687499],[-72.771630859375,61.840429687500006],[-72.50556640624998,61.922656250000074],[-72.22612304687487,61.83159179687499],[-72.04003906249991,61.68027343750006],[-72.21586914062502,61.58725585937495],[-71.86611328125,61.68852539062499],[-71.63828124999995,61.6171875],[-71.85439453124991,61.43979492187492],[-71.42270507812489,61.158935546875085],[-70.27929687499991,61.06865234374999],[-69.99243164062491,60.8564941406251],[-69.50332031249994,61.04042968750011],[-69.40473632812493,60.84677734375009],[-69.75947265624998,60.440234375000045],[-69.67373046874994,60.07587890625007],[-70.65483398437496,60.02622070312506],[-69.73393554687493,59.918017578125045],[-69.68188476562489,59.34174804687507],[-69.3440429687499,59.303076171875006],[-69.53164062499994,58.86923828125009],[-69.64838867187493,58.82080078125],[-69.78417968749994,58.95571289062511],[-70.15434570312496,58.76059570312498],[-69.78989257812486,58.689306640625034],[-69.27109374999986,58.88393554687505],[-68.69819335937495,58.904541015625],[-68.38115234374993,58.74350585937506],[-68.22939453124994,58.48457031250007],[-68.35654296874989,58.163232421875136],[-69.04082031249996,57.902490234375136],[-68.41357421874997,58.0517578125],[-68.02104492187493,58.48530273437504],[-67.88828124999989,58.29575195312495],[-68.06386718750005,58.13896484374999],[-67.75595703124992,58.4045898437501],[-67.6782714843749,57.99111328125008],[-67.5696289062499,58.21347656250006],[-66.72216796874991,58.49101562499996],[-66.36240234374989,58.791162109374994],[-66.0023925781249,58.43120117187502],[-66.04306640624995,58.82065429687495],[-65.72099609374996,59.02377929687495],[-65.38354492187494,59.06020507812508],[-65.7,59.21333007812501],[-65.4117187499999,59.31499023437496],[-65.47509765624994,59.47031249999998],[-65.03823242187494,59.38789062500007],[-65.40742187499993,59.53935546875002],[-65.4333984374999,59.776513671874994],[-65.02817382812495,59.77070312500007],[-65.17172851562489,59.90800781249996],[-64.81733398437498,60.3310546875],[-64.49941406250005,60.26826171875001],[-64.41958007812494,60.17138671874997],[-64.76845703124997,60.01210937500005],[-64.28349609374993,60.06406249999998],[-64.22631835937491,59.741210937500085],[-64.05605468750005,59.82255859374996],[-63.7501953124999,59.51259765625005],[-63.945458984374994,59.380175781250074],[-63.775878906249915,59.277148437500045],[-63.539892578124864,59.332861328125034],[-63.41513671874995,59.194384765625074],[-63.97114257812498,59.053808593750034],[-63.24843749999991,59.068310546874955],[-63.28212890624994,58.86738281250007],[-63.05029296874997,58.87817382812494],[-62.87387695312489,58.67246093749998],[-63.537060546874926,58.329931640625006],[-63.209960937499886,58.46694335937502],[-62.593847656249864,58.47402343750005],[-62.81206054687502,58.20039062500007],[-63.26152343749993,58.014697265625074],[-62.486230468749966,58.15405273437506],[-62.30566406249997,57.97226562499995],[-61.95864257812505,57.91176757812508],[-61.9679687499999,57.61191406250009],[-62.495556640624926,57.489208984375125],[-61.92114257812497,57.42080078125005],[-61.977441406249966,57.24794921875002],[-61.33374023437494,57.01059570312498],[-61.37163085937502,56.68081054687511],[-62.497265624999926,56.80170898437504],[-61.73774414062498,56.52602539062502],[-61.940429687499886,56.423583984375114],[-61.42529296874994,56.360644531250074],[-61.713085937499955,56.230957031250114],[-61.364697265624926,56.2160156250001],[-61.30112304687495,56.04716796874999],[-61.4495117187499,55.99570312499998],[-61.08935546874997,55.86635742187511],[-60.74326171874989,55.94145507812493],[-60.56210937499995,55.727001953125125],[-60.341015624999926,55.78466796874997],[-60.40830078124995,55.649560546874994],[-60.19238281249994,55.4809082031251],[-60.617138671874955,55.060205078124994],[-59.75878906249997,55.3095703125],[-59.68906249999989,55.19633789062502],[-59.43789062500005,55.175927734375136],[-59.837792968749994,54.813964843750114],[-59.25957031249996,55.19995117187506],[-58.99711914062496,55.149462890625074],[-58.780175781249994,54.838378906250114],[-58.39814453124998,54.77412109374998],[-57.96245117187493,54.875732421875085],[-57.40449218750004,54.59086914062496],[-57.69926757812496,54.38657226562506],[-58.435205078124966,54.228125],[-58.63320312499999,54.04956054687497],[-59.8230468749999,53.83442382812504],[-60.14492187499994,53.59614257812498],[-60.395410156249994,53.653320312500085],[-60.1002929687499,53.48696289062511],[-60.329492187499966,53.26611328125006],[-58.652050781249926,53.97788085937495],[-57.935986328124955,54.09116210937492],[-58.31748046874989,54.11445312500007],[-58.192089843749926,54.228173828125136],[-57.4160644531249,54.162744140625136],[-57.134960937499926,53.79184570312506],[-57.524072265624966,53.61142578125006],[-57.331738281249955,53.469091796875034],[-56.84086914062496,53.73945312500004],[-56.46499023437505,53.76503906250011],[-55.96611328125002,53.4711425781251],[-55.79794921874995,53.211962890625045],[-55.80283203124989,52.64316406249998],[-56.324902343749926,52.54453124999998],[-55.74648437499994,52.4745605468751],[-55.7771484374999,52.3642578125],[-56.01171874999997,52.394482421875125],[-55.695214843749994,52.13779296875006],[-56.97597656250005,51.45766601562505],[-58.510351562500006,51.295068359375136],[-59.88632812499992,50.316406250000085],[-61.72485351562503,50.10405273437499],[-61.91953124999989,50.2328613281251],[-62.71542968749995,50.30166015625008],[-66.49550781249991,50.2118652343751],[-66.94116210937503,49.993701171875045],[-67.37202148437495,49.348437500000045],[-68.28193359374998,49.197167968750136],[-69.67387695312496,48.19916992187504],[-71.01826171874993,48.455615234375045],[-69.86552734374993,48.17226562500005],[-69.775,48.09809570312504],[-69.9944335937499,47.73989257812508],[-70.70585937499996,47.13979492187505],[-71.26777343749995,46.79594726562499],[-71.87958984374998,46.68681640624996],[-72.98100585937493,46.209716796875085],[-73.4766113281249,45.738232421874955],[-74.03784179687494,45.501855468750136],[-74.31508789062494,45.531054687500045],[-73.97382812499995,45.345117187499994],[-74.70888671874997,45.0038574218751]]],[[[-96.78232421874998,72.93662109375],[-97.0927734375,72.99692382812503],[-96.86240234374995,73.18881835937506],[-96.78232421874998,72.93662109375]]],[[[-114.52153320312502,72.592919921875],[-113.57807617187501,72.65209960937506],[-113.2923828125,72.94980468750003],[-112.75361328125001,72.98603515624995],[-111.26972656249994,72.71372070312498],[-111.895166015625,72.35610351562497],[-111.67509765625002,72.30014648437503],[-110.20512695312495,72.66127929687497],[-110.66083984374998,73.00820312500002],[-110.00844726562494,72.983642578125],[-108.75498046875002,72.55107421874999],[-108.18823242187501,71.72377929687502],[-107.812841796875,71.62617187500004],[-107.30600585937496,71.89467773437502],[-108.23740234374999,73.14990234375003],[-108.029052734375,73.34873046875003],[-106.48212890624998,73.19619140624997],[-105.41513671874995,72.788330078125],[-104.38593749999997,71.57695312500005],[-104.51479492187502,71.06425781250005],[-103.58457031249995,70.63085937500003],[-103.07719726562497,70.50883789062505],[-103.04956054687503,70.65507812499999],[-101.67631835937495,70.27827148437495],[-101.56240234375001,70.135009765625],[-101.04267578125,70.11079101562504],[-100.98237304687497,69.67988281250001],[-101.483837890625,69.85019531250006],[-101.64765624999997,69.69853515625007],[-102.18212890624997,69.845947265625],[-102.59589843749997,69.71791992187502],[-102.62109374999996,69.55151367187506],[-103.464892578125,69.64448242187498],[-103.04892578124999,69.47177734375006],[-103.12021484374995,69.20458984374997],[-102.44677734374997,69.476318359375],[-102.04594726562493,69.46484374999997],[-101.85712890625001,69.02397460937505],[-102.89506835937499,68.8236328125],[-104.57143554687501,68.87211914062502],[-105.105859375,68.92041015625],[-105.019580078125,69.08125],[-106.27016601562497,69.19458007812497],[-106.65908203124997,69.439599609375],[-107.43989257812497,69.00214843749995],[-108.36499023437497,68.93476562499998],[-109.47211914062501,68.67670898437498],[-113.12773437500002,68.49414062500003],[-113.61684570312501,68.8384765625],[-113.69414062499995,69.19501953124998],[-115.61811523437495,69.28295898437506],[-116.51347656249993,69.42460937500005],[-117.19541015624995,70.05405273437503],[-114.59233398437497,70.31245117187498],[-112.63789062499997,70.225244140625],[-111.63256835937497,70.30883789062497],[-113.75727539062503,70.69072265625005],[-115.99091796874997,70.586279296875],[-117.58706054687498,70.62954101562502],[-118.2640625,70.888330078125],[-118.26909179687493,71.03471679687505],[-115.30341796874997,71.49370117187505],[-117.93564453125003,71.39208984375003],[-118.22646484374995,71.46708984375005],[-117.742333984375,71.65932617187502],[-118.58300781250003,71.64902343749998],[-118.98769531249997,71.7642578125],[-118.94462890624997,71.98554687499995],[-118.21347656249998,72.26289062499998],[-118.481298828125,72.42768554687498],[-118.13310546874995,72.63281250000003],[-114.63823242187499,73.37265625000003],[-114.20639648437495,73.29780273437495],[-114.05170898437497,73.07099609375004],[-114.52153320312502,72.592919921875]]],[[[-105.28891601562499,72.919921875],[-106.92153320312497,73.479833984375],[-106.61396484375001,73.69560546875002],[-105.31796874999995,73.76713867187502],[-104.5875,73.57807617187495],[-104.62172851562495,73.3111328125],[-105.28891601562499,72.919921875]]],[[[-79.53730468749998,73.65449218749998],[-78.2865234375,73.66582031250007],[-77.20654296874997,73.49956054687505],[-76.18339843749999,72.84306640625005],[-77.83593750000003,72.89682617187498],[-79.3193359375,72.75771484375],[-79.820703125,72.82631835937502],[-80.18330078124995,73.22465820312499],[-80.77641601562502,73.33417968750001],[-80.84887695312503,73.72124023437499],[-79.53730468749998,73.65449218749998]]],[[[-86.58935546874997,71.01079101562507],[-85.64384765624999,71.15244140624998],[-85.09487304687497,71.15195312500006],[-84.82373046874997,71.02861328125005],[-84.69941406249995,71.63144531250003],[-85.33906249999998,71.69726562500003],[-85.91162109375,71.98652343749998],[-85.321875,72.23315429687506],[-84.28374023437499,72.04448242187499],[-84.84199218749995,72.30815429687505],[-84.62304687500003,72.37656250000003],[-85.34111328124993,72.42153320312497],[-85.64990234374997,72.72216796875003],[-85.26210937500002,72.95400390625],[-84.25664062499999,72.79672851562503],[-85.454736328125,73.10546875000003],[-84.41606445312496,73.45649414062495],[-83.781884765625,73.41689453125],[-83.72983398437495,73.57587890624995],[-81.946142578125,73.72983398437506],[-81.40615234374997,73.634521484375],[-80.27724609375,72.77016601562502],[-81.229345703125,72.31171874999998],[-80.61147460937497,72.450830078125],[-80.925146484375,71.90766601562501],[-80.18193359374996,72.20878906250007],[-79.884375,72.17719726562501],[-80.10893554687499,72.33217773437497],[-79.83129882812503,72.44628906250003],[-79.000244140625,72.27202148437507],[-79.00781250000003,72.04291992187501],[-78.58510742187497,71.880615234375],[-78.86274414062495,72.100830078125],[-78.69926757812496,72.35141601562498],[-77.51650390624997,72.17778320312505],[-78.48427734374994,72.47060546875002],[-77.75322265624996,72.72475585937502],[-75.70429687499998,72.57153320312497],[-75.05268554687493,72.22636718749999],[-75.92280273437501,71.71723632812501],[-74.90317382812503,72.10048828125002],[-74.20932617187498,71.978662109375],[-74.31572265624999,71.84267578125],[-75.20478515625001,71.70913085937497],[-74.70078125,71.67558593750005],[-74.99619140624998,71.21811523437503],[-74.48808593750002,71.64838867187501],[-73.8140625,71.77143554687495],[-74.197265625,71.404150390625],[-73.71284179687498,71.58759765624998],[-73.18061523437501,71.282861328125],[-73.27822265625,71.53798828125],[-72.901953125,71.67778320312507],[-71.64067382812499,71.51625976562502],[-71.22939453124997,71.33876953125],[-71.49501953124997,71.10512695312502],[-71.93793945312498,71.09428710937502],[-72.63271484374994,70.83076171874998],[-71.74252929687495,71.046875],[-71.370849609375,70.97514648437499],[-70.82607421874994,71.10874023437503],[-70.67265625,71.05219726562498],[-70.76171874999997,70.79223632812503],[-71.89018554687502,70.43154296875002],[-71.27587890625,70.50029296874999],[-71.42944335937503,70.12778320312503],[-70.97978515624999,70.5810546875],[-69.94980468750003,70.84501953125005],[-68.49575195312502,70.61025390625],[-68.363525390625,70.48125],[-70.05771484375,70.042626953125],[-68.77822265625,70.20356445312501],[-69.00830078124997,69.97895507812501],[-68.74404296874997,69.94140625],[-68.05908203124997,70.317236328125],[-67.36367187499994,70.03442382812503],[-67.22163085937495,69.73071289062506],[-68.02041015625,69.77006835937499],[-69.25078124999999,69.51191406249998],[-68.51303710937498,69.57729492187497],[-67.236962890625,69.460107421875],[-66.71674804687495,69.31186523437498],[-66.70742187500002,69.16821289062503],[-68.40629882812499,69.23222656250002],[-69.040625,69.09799804687503],[-68.41552734375,69.17207031250001],[-67.8326171875,69.06596679687499],[-67.88320312500002,68.78398437499999],[-69.31909179687497,68.85698242187505],[-68.21040039062495,68.702978515625],[-67.9384765625,68.524169921875],[-66.74272460937502,68.45776367187497],[-67.032958984375,68.32607421874997],[-66.923095703125,68.06572265625005],[-66.72900390624997,68.12900390625006],[-66.66269531249995,68.03442382812497],[-66.63095703124998,68.21064453124998],[-66.21240234374997,68.280419921875],[-66.44394531249998,67.83383789062506],[-65.94238281250003,68.07094726562505],[-65.86435546875003,67.92285156249997],[-65.50908203124996,67.96826171875],[-65.40126953125002,67.67485351562499],[-65.41533203124996,67.87924804687498],[-64.92231445312495,68.03164062500002],[-65.02109375,67.78754882812495],[-64.63779296875,67.84023437500002],[-63.850195312500034,67.56606445312502],[-64.00795898437502,67.34731445312497],[-64.69995117187494,67.35053710937501],[-63.83623046874993,67.26411132812498],[-63.59160156250002,67.3775390625],[-63.040136718750034,67.235009765625],[-63.70156249999994,66.82236328125003],[-62.962304687499966,66.94926757812505],[-62.37973632812495,66.90537109375],[-62.12358398437499,67.046728515625],[-61.35341796874994,66.689208984375],[-61.52783203124994,66.55810546875003],[-62.12333984374993,66.64306640625003],[-61.57080078125,66.37290039062506],[-61.95634765624993,66.30932617187497],[-62.553125,66.40683593750003],[-62.53359374999994,66.22700195312498],[-61.99160156250002,66.03530273437502],[-62.624121093750006,66.01625976562505],[-62.381982421874966,65.83330078124999],[-62.65888671874998,65.63994140625002],[-63.16894531249997,65.65732421875],[-63.45874023437494,65.85302734375],[-63.42089843749997,65.70859374999998],[-63.651074218749955,65.66098632812506],[-63.33745117187493,65.61674804687502],[-63.36337890624998,65.22973632812503],[-63.606591796874966,64.92807617187503],[-64.345703125,65.17241210937499],[-64.26967773437497,65.40078124999997],[-64.55507812500002,65.1166015625],[-65.401611328125,65.764013671875],[-64.44536132812496,66.31713867187497],[-65.0044921875,66.07773437500003],[-65.82573242187499,65.996923828125],[-65.65634765625003,66.204736328125],[-66.06372070312497,66.13271484374997],[-66.986328125,66.62749023437505],[-67.07685546874995,66.52548828125006],[-67.30732421874993,66.5697265625],[-67.22539062499993,66.31025390624998],[-67.88339843749995,66.46743164062502],[-67.18320312499995,66.03442382812503],[-67.350439453125,65.92973632812502],[-67.82802734374997,65.96518554687503],[-68.45991210937498,66.249267578125],[-68.74892578125,66.200048828125],[-68.21718750000002,66.078857421875],[-68.18671874999993,65.87099609375002],[-67.86645507812497,65.773681640625],[-67.936767578125,65.56489257812501],[-67.56962890624999,65.64355468749997],[-67.11796874999999,65.44038085937495],[-67.3365234375,65.34658203125005],[-66.69741210937502,64.81518554687506],[-66.63549804687503,65.00034179687503],[-66.21464843749999,64.72241210937497],[-65.93852539062496,64.88574218750003],[-65.2748046875,64.63154296875004],[-65.52934570312499,64.50478515624997],[-65.074609375,64.43666992187502],[-65.21298828125003,64.30327148437502],[-65.580322265625,64.29384765624997],[-65.16987304687495,64.02817382812503],[-64.67846679687503,64.027978515625],[-64.79814453124999,63.91596679687498],[-64.4109375,63.70634765625002],[-64.66464843749995,63.24536132812497],[-65.19184570312498,63.764257812500006],[-65.06894531249998,63.26347656250002],[-64.67236328125003,62.921972656250006],[-65.16279296875001,62.93261718750003],[-65.10849609374998,62.62646484375],[-66.22402343749994,63.10717773437497],[-66.228662109375,62.99096679687503],[-66.41445312500002,63.027197265625034],[-66.65498046874998,63.264746093750006],[-66.69746093749993,63.069531249999955],[-67.89326171874993,63.733740234375006],[-67.72255859374997,63.422753906249966],[-68.49375,63.725488281249994],[-68.91108398437498,63.703222656250006],[-68.141259765625,63.17231445312501],[-67.67597656249998,63.093554687500045],[-67.73696289062497,63.00957031249999],[-65.98017578125001,62.20888671875002],[-66.12387695312498,61.89306640625],[-68.53588867187503,62.25561523437506],[-69.12558593749998,62.423974609374966],[-69.604736328125,62.76772460937502],[-70.23613281250002,62.76337890625001],[-70.801416015625,62.91049804687506],[-71.10576171874999,63.00224609375002],[-70.94604492187497,63.12070312499998],[-71.34726562499998,63.066113281249955],[-71.99223632812493,63.41616210937505],[-71.380859375,63.580322265625],[-72.29013671874995,63.72797851562498],[-72.17426757812498,63.893408203125006],[-72.49843749999994,63.82348632812497],[-73.45454101562495,64.39926757812503],[-73.27128906250002,64.58251953125],[-73.91035156249998,64.578125],[-74.064794921875,64.42465820312498],[-74.13046874999998,64.6078125],[-74.46123046874996,64.64467773437505],[-74.68139648437497,64.8306640625],[-74.91943359374997,64.76552734374997],[-74.69472656250002,64.49658203124997],[-75.71503906249995,64.52436523437495],[-75.76669921875,64.39194335937498],[-76.85615234374998,64.23764648437498],[-77.76049804687503,64.36015624999999],[-78.04521484374993,64.499267578125],[-78.09560546875,64.93925781250002],[-77.36088867187496,65.19653320312503],[-77.32670898437493,65.453125],[-75.82832031249993,65.22705078125003],[-75.45209960937495,64.84160156250002],[-75.35712890624995,65.00874023437495],[-75.79868164062503,65.297509765625],[-75.16630859374999,65.28393554687497],[-74.13847656250002,65.50346679687502],[-73.55078125000003,65.48525390625005],[-74.41640624999997,66.16708984375003],[-73.03325195312502,66.72817382812505],[-72.78881835937494,67.030615234375],[-72.22001953124999,67.25429687500002],[-73.28447265624993,68.35698242187505],[-73.82050781249998,68.36293945312502],[-73.82211914062495,68.68598632812501],[-74.11796875000002,68.70092773437506],[-73.9892578125,68.54863281250002],[-74.2701171875,68.54121093750001],[-74.89296875,68.80815429687505],[-74.71669921874997,69.04550781249998],[-76.58505859375,68.69873046875003],[-76.55722656250003,69.00947265625001],[-75.9537109375,69.03081054687502],[-75.64775390625002,69.212548828125],[-76.46494140624995,69.46943359375001],[-76.23408203125001,69.66210937500003],[-76.742333984375,69.57290039062497],[-77.08994140625,69.63510742187503],[-76.85859374999995,69.775390625],[-77.591650390625,69.84560546875002],[-77.77402343750003,70.23852539062503],[-78.28281250000003,70.229150390625],[-79.06640624999997,70.60356445312507],[-79.40522460937498,70.40073242187503],[-78.86284179687499,70.24189453125001],[-78.88964843750003,69.97749023437495],[-79.51542968749996,69.88759765625005],[-81.65195312500003,70.09462890625002],[-80.92172851562503,69.73090820312501],[-81.56469726562503,69.94272460937498],[-82.29384765624997,69.83691406250003],[-83.14995117187493,70.00908203125002],[-83.85908203124998,69.96274414062498],[-85.43237304687497,70.11137695312507],[-85.780029296875,70.03666992187505],[-86.32202148437503,70.14541015625],[-86.396875,70.46533203124997],[-87.838134765625,70.24658203125],[-88.78271484374997,70.49448242187503],[-89.45590820312498,71.06171874999995],[-87.84492187499995,70.94438476562505],[-87.14008789062498,71.01162109374997],[-89.80537109374993,71.46230468750005],[-89.86152343750001,72.41191406250005],[-88.70517578124998,73.40327148437495],[-87.71977539062496,73.72290039062497],[-85.95078124999998,73.85014648437505],[-84.94677734375,73.72163085937498],[-86.00053710937499,73.31254882812505],[-86.65629882812502,72.72402343750005],[-86.21845703124998,71.89912109375004],[-85.02338867187495,71.35322265625001],[-86.58935546874997,71.01079101562507]]],[[[-100.00190429687497,73.9458984375],[-99.15795898437499,73.73159179687497],[-97.66997070312499,73.88774414062499],[-97.1705078125,73.82485351562497],[-97.001708984375,73.66650390625003],[-97.62587890624997,73.50229492187498],[-97.27250976562502,73.38681640624998],[-98.42177734375002,72.94101562500003],[-97.63632812499998,73.02763671874999],[-97.128125,72.62758789062502],[-96.59208984374996,72.71025390624999],[-96.44560546874996,72.55244140624998],[-96.80146484374998,72.32241210937502],[-96.61342773437494,71.83383789062506],[-97.58227539062497,71.62968750000005],[-98.18134765624998,71.66245117187503],[-98.32270507812501,71.85234375000002],[-98.19863281249994,71.44086914062501],[-98.66289062499993,71.302099609375],[-99.22363281249996,71.387109375],[-100.594482421875,72.15234375000003],[-101.20854492187495,72.31699218749998],[-101.72392578124996,72.31489257812501],[-102.70874023437496,72.76450195312503],[-102.20400390624998,73.077294921875],[-101.27319335937497,72.7216796875],[-100.48476562500002,72.77294921874997],[-100.395703125,72.97700195312498],[-100.128125,72.90668945312495],[-100.53637695312497,73.19785156250003],[-99.82514648437503,73.2138671875],[-100.36611328125001,73.359033203125],[-100.88935546875003,73.27534179687501],[-101.52319335937501,73.48637695312502],[-100.97578124999995,73.59975585937502],[-100.5216796875,73.44931640625],[-100.96298828125002,73.79140625],[-99.99111328125,73.79516601562503],[-100.00190429687497,73.9458984375]]],[[[-98.270361328125,73.86850585937498],[-98.97392578124997,73.81206054687502],[-99.4169921875,73.89541015625002],[-97.69824218749997,74.10869140625005],[-98.270361328125,73.86850585937498]]],[[[-93.17084960937498,74.16098632812506],[-92.22270507812502,73.97236328124998],[-90.62744140625,73.95170898437505],[-90.38139648437496,73.82475585937502],[-92.11791992187497,72.75380859375],[-94.21132812499997,72.75693359375],[-93.77055664062496,72.66821289062506],[-93.55517578124994,72.42114257812497],[-94.03754882812498,72.02875976562498],[-95.00786132812496,72.01279296875],[-95.60214843749998,72.88447265624995],[-95.63291015625003,73.69545898437497],[-94.697607421875,73.66357421874997],[-95.134130859375,73.88125],[-94.97353515625,74.04140625000002],[-93.17084960937498,74.16098632812506]]],[[[-119.73632812499997,74.11264648437498],[-119.20595703125002,74.19799804687503],[-119.11796874999995,74.01552734375],[-118.54399414062499,74.24462890625003],[-117.51484375000001,74.23173828124999],[-115.51069335937501,73.61875],[-115.446875,73.43886718750002],[-118.96157226562497,72.68413085937499],[-119.51284179687501,72.30268554687501],[-120.17988281250001,72.21264648437506],[-120.61933593750001,71.50576171875002],[-121.47216796875003,71.38901367187503],[-121.74936523437502,71.44477539062501],[-123.09565429687503,71.09379882812502],[-124.00776367187494,71.67744140624998],[-125.29667968749999,71.973046875],[-125.84531250000002,71.978662109375],[-123.79726562499997,73.76816406250003],[-124.69624023437497,74.34819335937499],[-121.50415039062497,74.54511718749998],[-119.56264648437494,74.23281250000002],[-119.73632812499997,74.11264648437498]]],[[[-97.35551757812496,74.52631835937495],[-97.75,74.51054687500005],[-97.41650390624994,74.62656250000003],[-97.35551757812496,74.52631835937495]]],[[[-95.306640625,74.50541992187505],[-95.850732421875,74.58247070312504],[-95.51020507812498,74.63676757812499],[-95.306640625,74.50541992187505]]],[[[-104.11992187499995,75.03632812500004],[-104.88740234374998,75.14775390624999],[-104.34619140624996,75.42993164062503],[-103.64350585937497,75.18657226562499],[-104.11992187499995,75.03632812500004]]],[[[-93.54257812499995,75.0279296875],[-93.57309570312495,74.66884765625005],[-94.53452148437498,74.63671874999997],[-96.59960937499997,75.03178710937499],[-95.95463867187493,75.44379882812501],[-94.878173828125,75.63002929687502],[-93.90908203125002,75.42250976562502],[-93.54257812499995,75.0279296875]]],[[[-96.07856445312495,75.510107421875],[-96.91513671875003,75.37968749999999],[-96.98281249999997,75.50981445312505],[-96.367822265625,75.65463867187506],[-96.07856445312495,75.510107421875]]],[[[-94.52656249999995,75.74931640624999],[-94.901220703125,75.93076171875],[-94.53789062499996,75.99643554687506],[-94.52656249999995,75.74931640624999]]],[[[-118.328125,75.57968749999998],[-118.81713867187503,75.52211914062497],[-119.39458007812499,75.617333984375],[-117.63369140624998,76.11508789062498],[-118.328125,75.57968749999998]]],[[[-79.0630859375,75.92587890624998],[-79.63876953124995,75.84291992187505],[-79.00932617187499,76.14589843750005],[-79.0630859375,75.92587890624998]]],[[[-102.22734374999995,76.014892578125],[-102.00800781250003,75.93940429687498],[-102.57958984375003,75.78022460937498],[-103.31474609374996,75.76420898437499],[-103.04150390624999,75.91884765624997],[-103.98525390624997,75.93310546875003],[-103.80078124999994,76.03701171874997],[-104.24248046874996,76.04697265625006],[-104.35063476562497,76.18232421875001],[-102.72802734374999,76.30703125],[-102.22734374999995,76.014892578125]]],[[[-104.02285156249998,76.58310546875003],[-103.05131835937495,76.44985351562497],[-103.31137695312499,76.34755859375],[-104.35751953124995,76.33461914062502],[-104.58569335937499,76.60649414062499],[-104.07451171875003,76.66611328124998],[-104.02285156249998,76.58310546875003]]],[[[-97.70092773437497,76.46650390624998],[-97.89052734374997,75.7603515625],[-97.40751953124999,75.67250976562497],[-97.33603515624998,75.41982421875],[-97.65332031249997,75.50776367187498],[-97.87822265624996,75.41611328125003],[-97.67431640624997,75.127294921875],[-98.04531249999997,75.20083007812497],[-98.12094726562503,75.03271484375],[-100.234375,75.00771484374997],[-100.48349609374995,75.18842773437501],[-100.14570312499995,75.24614257812505],[-100.71191406250003,75.40634765625],[-99.19458007812499,75.698388671875],[-102.58740234375001,75.51367187500003],[-102.79750976562501,75.59965820312505],[-102.14472656249998,75.87504882812502],[-100.97280273437498,75.79843750000003],[-101.414990234375,75.84584960937502],[-101.87211914062496,76.08310546875003],[-101.52895507812495,76.21728515625003],[-102.1046875,76.33120117187505],[-101.41518554687495,76.42490234375003],[-99.86547851562499,75.92421875],[-100.11284179687502,76.11723632812507],[-99.54106445312497,76.14628906250005],[-100.41420898437495,76.242529296875],[-99.97773437500003,76.31245117187495],[-100.82973632812497,76.52387695312495],[-99.8140625,76.6322265625],[-98.89033203125,76.46557617187497],[-98.71083984374994,76.69384765625003],[-97.70092773437497,76.46650390624998]]],[[[-101.22612304687497,76.57934570312497],[-101.61308593749995,76.60458984375006],[-100.26914062499998,76.73413085937497],[-101.22612304687497,76.57934570312497]]],[[[-108.29238281250001,76.05712890625],[-107.72348632812502,75.99541015625002],[-108.020703125,75.80478515625],[-107.21621093749997,75.89155273437501],[-106.91352539062503,75.67963867187501],[-106.67700195312499,76.02373046875002],[-105.63266601562493,75.94536132812505],[-105.51948242187497,75.63237304687505],[-106.09262695312495,75.08945312500003],[-107.15341796874996,74.9271484375],[-108.47475585937495,74.94721679687501],[-108.83129882812501,75.06489257812498],[-112.51933593749997,74.41684570312503],[-113.67158203124997,74.45302734375005],[-114.31269531250003,74.71508789062506],[-112.835986328125,74.9755859375],[-111.67109375,75.01943359374997],[-111.09345703125001,75.25629882812498],[-113.71176757812499,75.06860351562503],[-113.85332031249996,75.259375],[-113.46708984374996,75.41611328125003],[-114.01650390624998,75.43427734375001],[-114.16845703124994,75.23950195312503],[-114.51381835937497,75.27548828125],[-114.45175781250002,75.08789062499997],[-115.02011718749999,74.97617187500003],[-115.41318359374995,75.11499023437497],[-115.72885742187496,74.968115234375],[-116.47607421874996,75.17177734375],[-117.56523437499997,75.23334960937504],[-117.25761718750002,75.45952148437502],[-116.07714843749996,75.49296874999999],[-115.14184570312501,75.67851562500005],[-116.42563476562498,75.58535156249997],[-117.16362304687496,75.64487304687503],[-116.80214843749995,75.77158203124998],[-114.99150390625002,75.896337890625],[-116.66455078124999,75.95756835937505],[-116.20986328125,76.19443359374998],[-114.77861328124999,76.17260742187497],[-115.82216796874997,76.27001953125003],[-114.99848632812503,76.4974609375],[-114.19394531249999,76.45146484375005],[-113.82348632812501,76.20683593750002],[-112.69760742187496,76.20170898437505],[-111.05268554687495,75.54853515625001],[-108.94716796875,75.54179687499999],[-108.94477539062495,75.69897460937503],[-109.8705078125,75.929052734375],[-109.48681640624999,76.14467773437497],[-110.31445312500001,76.369384765625],[-109.09824218749996,76.811865234375],[-108.46699218749997,76.73759765625007],[-108.29238281250001,76.05712890625]]],[[[-89.72646484374994,76.50742187499998],[-90.55625,76.73457031249998],[-90.13632812499995,76.83696289062505],[-89.69541015625,76.74116210937498],[-89.72646484374994,76.50742187499998]]],[[[-113.56069335937494,76.74326171874998],[-114.83525390624999,76.79467773437497],[-113.89165039062495,76.89487304687503],[-113.56069335937494,76.74326171874998]]],[[[-94.29497070312493,76.91245117187498],[-93.23002929687496,76.77026367187497],[-93.53457031250002,76.44770507812498],[-92.99536132812494,76.62041015624999],[-91.305029296875,76.68076171875003],[-90.54262695312494,76.495751953125],[-91.41508789062496,76.45585937500005],[-89.28452148437498,76.30161132812506],[-89.40659179687498,76.18916015624998],[-91.40732421874998,76.22006835937506],[-89.27758789062497,75.79506835937497],[-89.64604492187499,75.5650390625],[-88.91669921874998,75.45395507812503],[-88.64497070312495,75.65844726562503],[-88.201318359375,75.51201171875005],[-87.72973632812503,75.57563476562495],[-87.53911132812502,75.48486328125003],[-87.25693359374998,75.61772460937499],[-85.95146484374993,75.39501953125],[-85.97299804687498,75.5287109375],[-83.931982421875,75.81894531250003],[-83.23710937499993,75.75083007812503],[-82.153662109375,75.83105468750003],[-80.32197265624998,75.62910156250001],[-79.50908203125002,75.25981445312499],[-80.38198242187494,75.03417968750003],[-79.40141601562502,74.91762695312502],[-79.944482421875,74.83364257812505],[-80.34775390624998,74.90297851562505],[-80.26274414062499,74.58447265625],[-81.94018554687494,74.47270507812505],[-82.73579101562495,74.53027343749997],[-83.5220703125,74.90146484375],[-83.53188476562494,74.58569335937497],[-84.42553710937503,74.50810546875007],[-85.06142578125,74.60693359375003],[-85.133447265625,74.517431640625],[-85.44233398437495,74.6005859375],[-85.80800781249994,74.49897460937498],[-88.42304687499995,74.49414062499997],[-88.53496093749993,74.83173828125001],[-89.55869140624995,74.55473632812507],[-90.55327148437499,74.61274414062498],[-90.88022460937498,74.8177734375],[-91.13457031250002,74.64985351562498],[-91.54912109375002,74.65556640624999],[-92.3892578125,75.263330078125],[-92.18510742187499,75.84653320312498],[-93.09174804687495,76.35400390624997],[-95.27387695312498,76.26440429687503],[-96.03969726562494,76.48671875000002],[-95.65097656249998,76.58466796874998],[-96.88071289062495,76.73833007812505],[-96.40156249999995,76.79721679687503],[-96.75830078124997,76.97177734374998],[-95.84951171875002,77.06621093750005],[-94.29497070312493,76.91245117187498]]],[[[-115.55126953125001,77.36328125],[-116.32919921874996,77.137060546875],[-115.81005859374999,76.939111328125],[-116.25273437500002,76.90141601562505],[-115.94628906250003,76.71127929687503],[-116.99921874999995,76.531591796875],[-117.23359375000001,76.28154296875005],[-117.99296874999999,76.40581054687505],[-117.88081054687497,76.80507812500005],[-118.79140624999994,76.51298828125005],[-119.080712890625,76.12407226562505],[-119.58037109375,76.32651367187498],[-119.52612304687496,75.99721679687505],[-119.91289062499997,75.85883789062501],[-120.40888671874995,75.82563476562498],[-120.84838867187496,76.18266601562499],[-121.21347656249999,75.98369140625005],[-122.53305664062498,75.95092773437503],[-122.59272460937497,76.16206054687495],[-122.90278320312498,76.13471679687498],[-122.51938476562503,76.353173828125],[-121.56113281250003,76.453466796875],[-119.09018554687496,77.30507812500002],[-116.84355468749995,77.33955078124995],[-117.03974609374995,77.46513671875005],[-116.51132812500003,77.54760742187497],[-115.55126953125001,77.36328125]]],[[[-89.83325195312503,77.26762695312505],[-90.22827148437503,77.21245117187499],[-90.99321289062499,77.32949218750002],[-91.01904296875003,77.64389648437503],[-89.83896484375003,77.49140624999998],[-89.83325195312503,77.26762695312505]]],[[[-104.55815429687497,77.14174804687497],[-105.21508789062496,77.18208007812501],[-106.03559570312495,77.73984375000006],[-105.58789062499997,77.73598632812497],[-104.54223632812501,77.33774414062503],[-104.55815429687497,77.14174804687497]]],[[[-95.484375,77.79199218750003],[-93.30097656249995,77.73979492187505],[-93.54394531249997,77.466650390625],[-95.98706054687497,77.484130859375],[-96.19458007812497,77.70053710937503],[-95.484375,77.79199218750003]]],[[[-101.6935546875,77.69658203125005],[-102.37783203124995,77.728125],[-102.44770507812498,77.88061523437506],[-101.19321289062493,77.82978515624998],[-101.00205078124998,77.73510742187497],[-101.6935546875,77.69658203125005]]],[[[-113.83247070312497,77.75463867187506],[-114.28720703124998,77.72148437500005],[-114.98041992187498,77.91542968750002],[-114.33037109374997,78.07753906250002],[-113.83247070312497,77.75463867187506]]],[[[-110.45805664062496,78.10322265625001],[-109.62226562499995,78.07475585937499],[-110.865625,77.834130859375],[-110.15273437500002,77.76293945312506],[-110.19848632812501,77.52451171874998],[-112.37265625000002,77.36411132812498],[-113.16435546875002,77.5302734375],[-113.21518554687498,77.90351562500001],[-110.45805664062496,78.10322265625001]]],[[[-109.81596679687499,78.65039062500003],[-109.48447265624995,78.31640625],[-111.16918945312499,78.38627929687505],[-111.51748046874997,78.27470703125005],[-112.13125,78.366064453125],[-113.22304687499998,78.29790039062505],[-112.85585937499997,78.46684570312502],[-110.877587890625,78.73505859375004],[-109.81596679687499,78.65039062500003]]],[[[-96.20449218749994,78.53129882812499],[-94.91538085937495,78.39052734375002],[-95.32924804687497,78.22504882812495],[-94.93427734374998,78.07563476562498],[-96.98964843749994,77.80600585937503],[-97.65815429687498,78.090625],[-96.944677734375,78.15185546874997],[-98.04951171874995,78.325927734375],[-98.33261718749998,78.77353515625006],[-97.38232421875,78.78291015625001],[-96.20449218749994,78.53129882812499]]],[[[-103.42602539062499,79.315625],[-102.57617187499996,78.87939453125003],[-101.70366210937502,79.07890625000002],[-101.128125,78.80166015625002],[-100.43549804687503,78.8203125],[-99.60942382812495,78.58305664062507],[-99.16640625000002,77.85693359375003],[-100.27465820312503,77.83271484374995],[-101.07412109375001,78.19384765625],[-102.60698242187502,78.24892578125002],[-102.73134765624995,78.37104492187495],[-103.94658203124999,78.26000976562497],[-104.76357421874998,78.35166015625],[-104.90961914062498,78.55263671875],[-103.57050781250003,78.53984375000005],[-104.02084960937502,78.63491210937497],[-103.37158203125,78.73632812500003],[-104.18500976562498,78.78129882812505],[-104.15195312499999,78.989892578125],[-104.89550781249996,78.80815429687502],[-104.74677734375003,79.02709960937503],[-105.53564453124999,79.03251953125007],[-105.51455078124995,79.24248046875002],[-105.38769531249994,79.32358398437503],[-103.42602539062499,79.315625]]],[[[-98.79160156249995,79.98110351562505],[-98.94521484375,79.72407226562498],[-100.05683593749997,79.89824218750005],[-100.05327148437496,80.093359375],[-99.15322265625001,80.12421874999998],[-98.79160156249995,79.98110351562505]]],[[[-91.88554687499999,81.13286132812505],[-90.64301757812498,80.59370117187498],[-89.23559570312494,80.51064453125002],[-88.85732421874997,80.16621093750001],[-88.19990234374998,80.11147460937497],[-88.5248046875,80.41801757812507],[-87.675,80.37211914062505],[-87.92231445312501,80.09770507812499],[-86.97719726562502,79.89423828125001],[-87.29516601562494,79.58017578124998],[-86.33696289062496,79.63496093749995],[-86.00703124999998,79.47944335937498],[-85.6478515625,79.61142578125006],[-85.04213867187497,79.2845703125],[-86.95717773437502,78.97490234375005],[-87.61738281249995,78.67631835937505],[-88.04018554687494,78.99531250000004],[-87.98286132812498,78.53706054687501],[-88.74160156250002,78.58403320312499],[-88.82241210937497,78.18588867187498],[-90.037109375,78.60683593750002],[-89.52568359374999,78.15961914062495],[-90.29721679687495,78.32802734374997],[-90.614404296875,78.14985351562501],[-92.35126953125001,78.312890625],[-92.8482421875,78.46010742187497],[-91.86689453124998,78.54267578125001],[-93.26660156249997,78.60830078124997],[-93.63442382812502,78.75092773437498],[-93.15986328124998,78.77563476562503],[-94.11459960937498,78.92890625000001],[-92.54721679687495,79.28261718750002],[-91.29990234375003,79.372705078125],[-92.82192382812497,79.44990234375001],[-93.93315429687496,79.29072265624998],[-94.11030273437498,79.40156250000001],[-95.10317382812502,79.289892578125],[-95.66289062500002,79.52734374999997],[-94.40185546874997,79.736328125],[-95.73935546874995,79.66015625000003],[-96.58906249999995,79.91665039062497],[-96.77324218749999,80.13579101562502],[-94.64589843749994,80.04873046874997],[-94.26259765625002,80.19487304687499],[-95.40507812499996,80.13500976562506],[-96.39409179687493,80.31503906250003],[-95.549072265625,80.36660156249997],[-95.92695312499998,80.72065429687498],[-93.92792968749995,80.55917968750003],[-95.51474609375003,80.83813476562503],[-94.98051757812499,81.04965820312503],[-93.28671874999998,81.10029296874998],[-94.22011718749997,81.33076171875004],[-93.03466796874997,81.3462890625],[-91.88554687499999,81.13286132812505]]],[[[-69.4888671875,83.01679687499998],[-66.42255859374998,82.92685546875003],[-68.46933593749995,82.65336914062502],[-65.29902343749995,82.79960937500005],[-64.98388671874997,82.90229492187501],[-64.50400390625,82.77841796874998],[-63.641015624999966,82.81259765625003],[-63.246777343749926,82.4501953125],[-62.47519531249995,82.51958007812502],[-61.392480468749994,82.44189453125],[-61.61538085937502,82.18442382812503],[-64.43579101562497,81.74262695312501],[-66.62573242187497,81.61640624999995],[-68.68852539062493,81.29331054687503],[-64.78007812499993,81.49287109375001],[-69.55068359375,80.38325195312498],[-70.71259765625001,80.53959960937505],[-70.264892578125,80.23359374999998],[-72.05595703124996,80.12324218749995],[-70.56840820312493,80.09370117187498],[-71.387841796875,79.76176757812505],[-72.43652343750003,79.69438476562499],[-74.39448242187495,79.87407226562499],[-73.47246093749996,79.7564453125],[-73.36152343750001,79.50400390625],[-75.50341796875,79.41416015625],[-76.898828125,79.5123046875],[-75.60273437499998,79.23955078125005],[-74.48120117187503,79.22949218750006],[-74.64091796874996,79.03554687499997],[-78.58164062499998,79.075],[-77.88276367187498,78.9423828125],[-76.255859375,79.00683593749997],[-74.486328125,78.75009765624998],[-74.87861328124998,78.54482421875],[-76.41611328124995,78.51152343750005],[-75.19345703125,78.327734375],[-75.86596679687497,78.00981445312499],[-78.01259765624997,77.94604492187506],[-78.07617187500003,77.51904296875],[-78.70849609374997,77.34213867187503],[-80.57304687499996,77.31479492187506],[-81.65908203124997,77.52543945312499],[-81.3013671875,77.34404296875007],[-82.056787109375,77.29653320312497],[-81.75634765624997,77.20400390625005],[-79.49726562500001,77.19609375000005],[-78.97919921874998,76.89287109374999],[-78.28886718750002,76.97797851562501],[-77.98330078124994,76.75498046875006],[-78.284326171875,76.57124023437501],[-80.79970703124997,76.173583984375],[-80.97451171874994,76.470068359375],[-81.71738281250003,76.494970703125],[-82.52983398437499,76.723291015625],[-82.23315429687494,76.46582031250003],[-83.88569335937501,76.453125],[-84.22377929687497,76.67534179687499],[-84.27534179687498,76.35654296875006],[-85.141259765625,76.30458984375005],[-86.45371093750003,76.58486328125002],[-86.68022460937499,76.37661132812497],[-87.35419921874998,76.44804687500005],[-87.48979492187499,76.58583984374997],[-87.49755859374997,76.38627929687499],[-88.39599609374997,76.40527343750003],[-88.49584960937497,76.77285156249997],[-88.54580078125002,76.42089843750003],[-89.36962890624997,76.474462890625],[-89.49975585937503,76.82680664062502],[-88.39814453124995,77.10395507812501],[-86.81225585937497,77.18491210937498],[-87.68144531249996,77.43637695312503],[-88.01699218750002,77.78471679687505],[-86.75507812499998,77.86372070312498],[-85.58847656249998,77.46113281250004],[-84.73867187499997,77.36103515624998],[-83.72128906249998,77.41420898437497],[-82.7103515625,77.84951171875002],[-82.5953125,77.99213867187504],[-83.77939453125,77.53261718750002],[-85.28935546874996,77.55903320312498],[-85.54755859374998,77.92768554687495],[-84.61542968749998,78.19570312500002],[-84.22270507812499,78.176025390625],[-84.91035156249993,78.23969726562501],[-84.78320312499997,78.52758789062506],[-85.5859375,78.10957031249998],[-86.21777343750003,78.08120117187497],[-85.92006835937494,78.34287109374998],[-86.91323242187494,78.126806640625],[-87.5517578125,78.17661132812503],[-86.80791015624999,78.77436523437495],[-85.00375976562495,78.912255859375],[-83.27143554687501,78.77031250000002],[-81.75009765624995,78.97578124999995],[-82.43876953125002,78.903662109375],[-84.41201171875002,78.99658203125003],[-84.38359375000002,79.1185546875],[-83.57587890624995,79.05366210937501],[-86.42075195312498,79.84521484374997],[-86.49853515625003,80.25825195312501],[-83.72363281250003,80.22895507812501],[-81.68837890625,79.685791015625],[-80.47592773437498,79.60625],[-80.12446289062495,79.66948242187507],[-81.01015625000002,79.693115234375],[-82.98701171874995,80.32260742187498],[-76.86298828124995,80.86479492187505],[-78.71621093749994,80.95166015624997],[-76.88510742187503,81.43027343750006],[-81.00703125000001,80.6548828125],[-82.88432617187502,80.57753906249997],[-82.22236328124998,80.77231445312503],[-84.41782226562495,80.52675781250002],[-86.250341796875,80.56577148437506],[-86.60307617187499,80.66401367187498],[-85.63930664062494,80.92460937500007],[-83.288818359375,81.14794921875],[-85.780859375,81.03505859375],[-87.32988281250002,80.669775390625],[-88.00366210937497,80.675390625],[-89.16689453125,80.94130859375],[-86.47675781249993,81.03574218750006],[-84.94121093750002,81.28623046875],[-87.27509765624995,81.080810546875],[-89.623046875,81.032470703125],[-89.94731445312499,81.17265625000005],[-89.20869140624998,81.25009765625003],[-89.67368164062503,81.32861328125003],[-87.59702148437498,81.52583007812498],[-88.47905273437502,81.56464843749998],[-90.41630859374996,81.40537109375003],[-89.82167968749997,81.63486328124998],[-91.29238281250002,81.57124023437498],[-91.64755859374998,81.68383789062503],[-88.06318359375001,82.09648437500007],[-87.01821289062502,81.95874023437497],[-86.62680664062495,82.05102539062503],[-85.04482421874997,81.9828125],[-86.615625,82.21855468750007],[-84.89682617187503,82.44941406250001],[-82.63369140625002,82.07729492187497],[-82.53691406250002,82.24726562499995],[-79.465625,81.85112304687499],[-82.44755859374993,82.39501953125003],[-81.68115234375003,82.51865234375],[-82.11684570312497,82.62866210937503],[-80.8625,82.57153320312503],[-81.01015625000002,82.77905273437503],[-78.748779296875,82.67939453124998],[-80.15493164062497,82.91113281250003],[-77.61806640624997,82.89584960937503],[-76.009375,82.53515625],[-75.565625,82.60854492187502],[-77.12490234374994,83.00854492187497],[-74.41416015624995,83.01313476562501],[-72.65869140625,82.72163085937495],[-73.44189453124994,82.90483398437499],[-72.811669921875,83.08120117187502],[-71.98320312499996,83.10141601562498],[-70.94038085937495,82.90224609375],[-71.08481445312498,83.08266601562497],[-69.96992187499995,83.11611328125005],[-69.4888671875,83.01679687499998]]]]},"properties":{"name":"Canada","childNum":110}},{"geometry":{"type":"Polygon","coordinates":[[[9.527658197470123,47.27026989773668],[9.46249431093294,47.19858962254578],[9.46249431093294,47.09010747968864],[9.409458596647225,47.02019676540292],[9.579979133936737,47.05856388629306],[9.580273437500011,47.057373046875],[10.133496093750011,46.851513671875],[10.349414062500017,46.98476562499999],[10.414941406250023,46.964404296874996],[10.45458984375,46.8994140625],[10.452832031250011,46.86494140625],[10.406054687500017,46.73486328125],[10.39794921875,46.6650390625],[10.4306640625,46.550048828125],[10.195507812500011,46.62109375],[10.1375,46.61435546875],[10.087011718750006,46.599902343749996],[10.061230468750011,46.546777343749994],[10.038281250000011,46.483203125],[10.045605468750011,46.447900390624994],[10.081933593750023,46.420751953125],[10.109667968750017,46.362841796874996],[10.128320312500023,46.238232421875],[10.08056640625,46.227978515625],[10.041015625,46.238085937499996],[9.939257812500017,46.36181640625],[9.884472656250011,46.3677734375],[9.787792968750011,46.346044921875],[9.639453125000017,46.2958984375],[9.57958984375,46.29609375],[9.528710937500023,46.306201171874996],[9.427636718750023,46.482324218749994],[9.399316406250023,46.4806640625],[9.304394531250011,46.495556640625],[9.203417968750017,46.21923828125],[9.11874162946429,46.014892578125],[8.97551618303573,45.81677455357143],[8.74961495535715,46.02246372767857],[8.818554687500011,46.0771484375],[8.458398437500023,46.245898437499996],[8.370703125,46.445117187499996],[8.298535156250011,46.40341796875],[8.23193359375,46.341210937499994],[8.08154296875,46.256005859374994],[7.9931640625,46.015917968749996],[7.327929687500017,45.912353515625],[7.129003906250006,45.880419921874996],[7.055761718750006,45.90380859375],[7.02109375,45.92578125],[6.953710937500006,46.017138671874996],[6.897265625000017,46.0517578125],[6.772070312500006,46.16513671875],[6.758105468750017,46.415771484375],[6.578222656250006,46.437353515625],[6.428906250000011,46.430517578125],[6.321875,46.393701171874994],[6.234667968750017,46.3326171875],[6.199414062500011,46.19306640625],[6.086621093750011,46.147021484374996],[6.006640625000017,46.142333984375],[5.971484375000017,46.151220703125],[5.970019531250017,46.214697265625],[6.0361328125,46.238085937499996],[6.095898437500011,46.27939453125],[6.129687500000017,46.5669921875],[6.41015625,46.755419921874996],[6.429003906250017,46.832275390625],[6.45625,46.94833984375],[6.624804687500017,47.004345703125],[6.666894531250023,47.026513671874994],[6.688085937500006,47.058251953124994],[6.820703125000023,47.16318359375],[6.952050781250023,47.2671875],[6.978515625,47.302050781249996],[7.000585937500006,47.322509765625],[7.000585937500006,47.339453125],[6.900390625,47.39423828125],[6.968359375,47.45322265625],[7.136035156250017,47.48984375],[7.343164062500023,47.43310546875],[7.615625,47.592724609375],[8.454003906250023,47.59619140625],[8.559472656250023,47.6240234375],[8.570507812500011,47.63779296875],[8.567089843750011,47.651904296874996],[8.55234375,47.659130859375],[8.451757812500006,47.651806640625],[8.413281250000011,47.6626953125],[8.403417968750006,47.687792968749996],[8.435742187500011,47.731347656249994],[8.572656250000023,47.775634765625],[9.524023437500006,47.52421875],[9.625878906250023,47.467041015625],[9.527539062500011,47.270751953125],[9.527658197470123,47.27026989773668]]]},"properties":{"name":"Switzerland","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-67.28886718749999,-55.776855468749964],[-67.55996093749997,-55.72480468750002],[-67.39736328124997,-55.58515625],[-67.28886718749999,-55.776855468749964]]],[[[-67.07993164062498,-55.15380859374996],[-67.33969726562495,-55.292578124999984],[-67.4947265625,-55.177441406249976],[-68.07001953124995,-55.22109374999999],[-68.30136718750003,-54.98066406250003],[-67.245263671875,-54.977636718750034],[-67.07993164062498,-55.15380859374996]]],[[[-69.70297851562503,-54.91904296875],[-68.90078125000002,-55.01777343750004],[-68.45800781249997,-54.95966796875002],[-68.61328124999997,-55.155566406250045],[-68.28266601562495,-55.25517578125],[-68.04833984375,-55.6431640625],[-68.86704101562498,-55.45019531250003],[-68.89008789062498,-55.2412109375],[-69.19262695312497,-55.171875],[-69.35922851562498,-55.300683593749945],[-69.18085937499995,-55.47480468749998],[-69.41181640624995,-55.44423828124997],[-69.97978515625002,-55.14746093749999],[-69.88442382812494,-54.88203125000001],[-69.70297851562503,-54.91904296875]]],[[[-70.9916015625,-54.86796874999999],[-70.80483398437497,-54.96767578124996],[-70.41752929687493,-54.908886718749976],[-70.29785156249997,-55.11376953124997],[-70.47558593749994,-55.17705078124998],[-71.43720703125001,-54.88925781249997],[-70.9916015625,-54.86796874999999]]],[[[-71.390478515625,-54.03281250000002],[-71.02192382812495,-54.111816406250036],[-71.14326171874998,-54.374023437499986],[-71.473291015625,-54.23115234375001],[-71.94853515624999,-54.300878906250006],[-72.21044921874997,-54.04775390624995],[-71.996484375,-53.884863281249984],[-71.390478515625,-54.03281250000002]]],[[[-72.92324218749997,-53.481640625],[-72.88222656249997,-53.578320312499976],[-72.48227539062503,-53.58808593750001],[-72.20541992187503,-53.80742187500002],[-72.408544921875,-54.00380859374997],[-72.87099609375,-54.12656250000002],[-72.76376953125,-53.86484375],[-73.03945312499994,-53.83281250000004],[-73.08076171875001,-53.99804687499995],[-73.21064453125001,-53.98583984374995],[-73.31435546875,-53.72919921874998],[-73.845458984375,-53.54580078125001],[-73.44707031249993,-53.41005859374998],[-72.92324218749997,-53.481640625]]],[[[-74.38574218749994,-52.92236328125001],[-73.65400390624998,-53.06982421875003],[-73.13520507812498,-53.35390625],[-73.56728515625,-53.3068359375],[-73.86694335937494,-53.096875],[-74.27021484374995,-53.08154296875002],[-74.71201171874998,-52.74873046874998],[-74.38574218749994,-52.92236328125001]]],[[[-68.62993164062499,-52.65263671875004],[-68.65322265624994,-54.85361328124999],[-69.48627929687493,-54.85888671875],[-69.72343750000002,-54.71210937500003],[-70.49716796875,-54.80957031249999],[-71.83154296874997,-54.62617187500002],[-71.92773437500003,-54.52871093749997],[-71.80014648437498,-54.433984374999945],[-71.07993164062498,-54.444238281249994],[-70.79726562500002,-54.32724609374996],[-70.70112304687498,-54.48544921875004],[-70.31098632812498,-54.52851562500002],[-70.86308593749993,-54.11044921875003],[-70.86772460937499,-53.88417968750002],[-70.53129882812502,-53.627343750000016],[-70.37973632812495,-53.98671874999995],[-70.62983398437493,-54.005566406249976],[-70.53530273437494,-54.136132812500016],[-70.16899414062502,-54.37929687499999],[-69.74184570312494,-54.30585937500005],[-69.25317382812494,-54.557421875000045],[-69.04433593749997,-54.40673828124999],[-69.98813476562503,-54.10908203125001],[-70.15112304687503,-53.88808593750002],[-70.09111328124996,-53.72177734374998],[-69.35595703125003,-53.41630859375001],[-69.63701171874999,-53.33408203125004],[-70.32929687499998,-53.37763671875003],[-70.44335937499994,-53.085546875000034],[-70.130615234375,-52.942773437499994],[-70.38012695312494,-52.75195312500002],[-69.93544921874997,-52.82109374999998],[-69.41406249999997,-52.48623046874997],[-69.16704101562499,-52.66757812499997],[-68.78979492187497,-52.576757812500034],[-68.62993164062499,-52.65263671875004]]],[[[-74.82294921874993,-51.63017578125001],[-74.53681640624998,-51.96513671875004],[-74.69448242187497,-52.27919921874999],[-74.85180664062494,-52.27070312500003],[-75.10537109375,-51.78886718750001],[-74.82294921874993,-51.63017578125001]]],[[[-74.55864257812499,-51.27705078125001],[-74.62036132812497,-51.395703125000026],[-75.04736328125,-51.39833984375003],[-75.28911132812496,-51.625390625000016],[-75.15366210937498,-51.278808593750014],[-74.73666992187503,-51.20761718749999],[-74.55864257812499,-51.27705078125001]]],[[[-75.302001953125,-50.67998046875005],[-75.411376953125,-50.76435546875001],[-75.42763671875002,-50.48056640625002],[-75.11533203124998,-50.510449218749976],[-75.302001953125,-50.67998046875005]]],[[[-75.05478515625,-50.29609375],[-75.44912109374997,-50.34335937500004],[-75.32666015624997,-50.01181640625],[-74.8759765625,-50.10996093750001],[-75.05478515625,-50.29609375]]],[[[-75.106689453125,-48.83652343750001],[-75.38994140624999,-49.15917968750002],[-75.64116210937499,-49.195410156250034],[-75.48764648437498,-49.082421875000016],[-75.58310546874998,-48.85888671874995],[-75.106689453125,-48.83652343750001]]],[[[-74.47617187499998,-49.14785156250002],[-74.59472656249997,-50.00664062500001],[-74.76298828124996,-50.01142578125001],[-74.88041992187502,-49.72587890625001],[-74.72382812499998,-49.42382812500003],[-74.960107421875,-49.533007812499974],[-75.06601562499998,-49.85234375000002],[-75.54980468749994,-49.79130859375002],[-75.30585937499998,-49.49404296875003],[-75.46748046874995,-49.35888671875003],[-75.08603515624998,-49.27021484375],[-75.21015624999995,-49.14804687499998],[-74.94921875,-48.960156249999976],[-74.89624023437503,-48.73320312500002],[-74.54609374999993,-48.76689453125004],[-74.47617187499998,-49.14785156250002]]],[[[-75.51025390624997,-48.76347656250005],[-75.65092773437496,-48.58632812500002],[-75.57148437499993,-48.095898437500026],[-75.39140625000002,-48.01972656249997],[-75.15849609374999,-48.62265624999996],[-75.51025390624997,-48.76347656250005]]],[[[-74.56728515625,-48.591992187500026],[-74.92304687499998,-48.62646484375003],[-75.21289062499997,-48.141699218750034],[-75.19829101562502,-47.974609375000014],[-74.895654296875,-47.839355468749986],[-74.56728515625,-48.591992187500026]]],[[[-75.11220703124997,-47.8376953125],[-75.26103515625002,-47.76386718749998],[-74.92646484374998,-47.72314453125003],[-75.11220703124997,-47.8376953125]]],[[[-74.31289062500002,-45.69150390625002],[-74.46552734374995,-45.757226562499994],[-74.68984375,-45.66259765625],[-74.310546875,-45.17265625000002],[-74.31289062500002,-45.69150390625002]]],[[[-73.63217773437498,-44.82148437499997],[-73.81845703125,-44.65214843750002],[-73.72392578124993,-44.544238281249974],[-73.63217773437498,-44.82148437499997]]],[[[-72.98613281249999,-44.780078124999974],[-73.22846679687498,-44.85996093749999],[-73.39707031249998,-44.77431640624995],[-73.44506835937497,-44.641015624999966],[-73.20771484374993,-44.33496093749997],[-72.7763671875,-44.50859374999999],[-72.98613281249999,-44.780078124999974]]],[[[-73.73535156249997,-44.39453125000003],[-74.00205078125003,-44.59091796874998],[-73.728173828125,-45.195898437500034],[-74.016259765625,-45.344921875000026],[-74.61777343749998,-44.64794921874996],[-74.50180664062498,-44.47353515624995],[-74.09721679687496,-44.38935546875004],[-73.99492187499999,-44.140234375],[-73.70322265624998,-44.27412109375001],[-73.73535156249997,-44.39453125000003]]],[[[-73.81064453125003,-43.827246093750006],[-73.95566406249998,-43.921972656250034],[-74.14296874999997,-43.872167968750006],[-73.81064453125003,-43.827246093750006]]],[[[-73.77338867187498,-43.3458984375],[-74.114404296875,-43.35791015624996],[-74.387353515625,-43.231640625],[-74.03666992187496,-41.79550781249998],[-73.52783203124997,-41.89628906249999],[-73.42290039062499,-42.192871093750014],[-73.47080078124998,-42.46630859375004],[-73.78925781249993,-42.58574218750003],[-73.43632812499996,-42.9365234375],[-73.74965820312494,-43.15908203124995],[-73.77338867187498,-43.3458984375]]],[[[-78.80415039062501,-33.646484374999986],[-78.98945312499993,-33.66171874999998],[-78.87744140625003,-33.57519531250003],[-78.80415039062501,-33.646484374999986]]],[[[-109.27998046874994,-27.14042968749996],[-109.434130859375,-27.171289062500023],[-109.39047851562499,-27.068359375000014],[-109.27998046874994,-27.14042968749996]]],[[[-67.19487304687493,-22.821679687500037],[-67.00878906249994,-23.00136718750005],[-67.35620117187503,-24.033789062499963],[-68.25029296875002,-24.391992187500023],[-68.56201171875,-24.74736328125003],[-68.38422851562495,-25.091894531249977],[-68.59208984375002,-25.420019531250034],[-68.41450195312498,-26.153710937500023],[-68.59160156249999,-26.47041015624997],[-68.31865234374999,-26.973242187500006],[-68.59208984375002,-27.140039062499966],[-68.84633789062494,-27.153710937499994],[-69.17441406249998,-27.924707031250037],[-69.65693359374995,-28.413574218749986],[-69.82788085937497,-29.10322265624997],[-70.02680664062501,-29.324023437500017],[-69.95996093749997,-30.078320312500026],[-69.84428710937493,-30.175],[-69.95634765624996,-30.35820312500003],[-70.15322265625,-30.360937499999963],[-70.30908203124994,-31.02265625000004],[-70.51958007812493,-31.1484375],[-70.585205078125,-31.569433593749963],[-70.25439453125,-31.957714843750026],[-70.36376953125,-32.08349609374997],[-70.02197265625,-32.88457031250002],[-70.08486328125002,-33.20175781249998],[-69.81962890624999,-33.28378906249999],[-69.85244140625,-34.224316406250026],[-70.05205078124999,-34.30078124999997],[-70.39316406250003,-35.146875],[-70.55517578125,-35.246875],[-70.41572265625001,-35.52304687500002],[-70.40478515625,-36.06171874999998],[-71.05551757812498,-36.52373046874996],[-71.19218750000002,-36.84365234375004],[-71.16757812499998,-37.76230468749996],[-70.858642578125,-38.60449218750003],[-71.40156249999995,-38.93505859374996],[-71.53945312499997,-39.60244140624995],[-71.71992187499995,-39.63525390624997],[-71.65976562499998,-40.02080078125],[-71.81831054687493,-40.17666015624995],[-71.70898437499997,-40.381738281249994],[-71.93212890624994,-40.69169921874999],[-71.91127929687497,-41.650390624999986],[-71.75,-42.04677734375001],[-72.10820312499993,-42.25185546874995],[-72.14643554687498,-42.990039062499974],[-71.750634765625,-43.237304687499986],[-71.90498046875001,-43.34755859374998],[-71.68007812500002,-43.92958984374998],[-71.82001953124993,-44.38310546875],[-71.21259765624998,-44.44121093750003],[-71.15971679687496,-44.56025390625004],[-71.26113281250002,-44.763085937499966],[-72.06372070312503,-44.771875],[-72.04169921874998,-44.90419921875004],[-71.5962890625,-44.97919921875004],[-71.34931640624995,-45.33193359374995],[-71.74619140624998,-45.57890625],[-71.63154296874998,-45.95371093749998],[-71.87568359374998,-46.160546875],[-71.69965820312501,-46.6513671875],[-71.94023437499999,-46.83125],[-71.90498046875001,-47.201660156250014],[-72.34594726562497,-47.49267578124997],[-72.517919921875,-47.87636718749998],[-72.32832031250001,-48.11005859374998],[-72.35473632812497,-48.36582031250005],[-72.582861328125,-48.47539062499999],[-72.65126953125,-48.84160156249998],[-73.03364257812501,-49.014355468750004],[-73.13525390625,-49.30068359374999],[-73.46157226562497,-49.31386718750001],[-73.55419921875,-49.463867187500014],[-73.50126953124996,-50.125292968750024],[-73.15292968749998,-50.73828125000003],[-72.50981445312496,-50.607519531250034],[-72.34023437499997,-50.68183593749999],[-72.40766601562501,-51.54082031250002],[-71.91865234374995,-51.98955078125004],[-69.96025390624993,-52.00820312500002],[-68.443359375,-52.35664062500004],[-69.24101562499996,-52.20546874999997],[-69.62031249999995,-52.46474609374995],[-70.79511718749995,-52.76875],[-70.99584960937497,-53.77929687499997],[-71.29775390625002,-53.88339843750004],[-72.1744140625,-53.632324218749964],[-72.41289062500002,-53.35019531250004],[-71.94169921874993,-53.23408203125001],[-71.89169921874998,-53.523535156250006],[-71.79145507812498,-53.48457031249997],[-71.74052734374999,-53.232617187499976],[-71.28896484375002,-53.03369140624995],[-71.22714843750003,-52.810644531249984],[-71.38774414062496,-52.76425781250004],[-72.27802734374998,-53.13232421874997],[-72.54892578125,-53.4607421875],[-73.05273437499997,-53.24345703125005],[-72.72768554687502,-52.7623046875],[-72.453466796875,-52.814453124999964],[-72.11757812499997,-52.65],[-71.51127929687502,-52.60537109375],[-72.22568359374998,-52.52099609374995],[-72.43769531250001,-52.62578124999998],[-72.71210937499995,-52.53554687499999],[-73.12246093749997,-53.073925781249976],[-73.64521484374998,-52.83701171875003],[-73.2408203125,-52.707128906250034],[-73.12392578125,-52.487988281249976],[-73.24414062499997,-52.62402343749998],[-73.58569335937503,-52.68574218750003],[-74.01445312499999,-52.63935546875],[-74.26494140624993,-52.1048828125],[-73.83447265625,-52.23398437500001],[-73.68432617187494,-52.07773437499998],[-73.26044921874993,-52.157812500000034],[-72.79501953124998,-51.94951171875005],[-72.57084960937496,-52.200097656249945],[-72.67705078125002,-52.38466796874998],[-72.52333984374997,-52.255468750000034],[-72.62460937499998,-51.94648437499997],[-72.48964843750002,-51.76367187500003],[-72.76123046875,-51.57324218749996],[-73.16875,-51.45390624999998],[-72.60004882812495,-51.79912109374997],[-73.51816406250003,-52.04101562499996],[-73.75263671874993,-51.795507812500034],[-74.19667968749997,-51.68056640624997],[-73.92978515624995,-51.61787109374999],[-73.93950195312499,-51.26630859375005],[-74.81474609374996,-51.06289062499999],[-75.09467773437495,-50.68125],[-74.68574218749995,-50.662011718749945],[-74.77587890625003,-50.46992187499998],[-74.64448242187498,-50.360937499999984],[-74.365576171875,-50.487890625],[-74.13940429687503,-50.81777343749997],[-73.80654296875,-50.93837890625003],[-73.654443359375,-50.49267578125],[-73.97802734375003,-50.827050781249994],[-74.18559570312493,-50.485351562500014],[-73.95034179687497,-50.510546875],[-74.62958984374998,-50.19404296875],[-74.333740234375,-49.97460937499997],[-73.95859374999998,-49.994726562499984],[-74.32392578124995,-49.783398437500004],[-74.29082031249996,-49.604101562499984],[-73.83637695312493,-49.609375],[-74.09443359374993,-49.42968749999998],[-73.93496093749994,-49.02089843750001],[-74.2212890625,-49.500585937500034],[-74.36655273437503,-49.40048828124998],[-74.34101562499998,-48.59570312499998],[-74.00908203124996,-48.475],[-74.47441406249999,-48.46396484374996],[-74.58466796874998,-47.999023437500014],[-73.39106445312498,-48.14589843750001],[-73.60991210937499,-47.993945312500045],[-73.71586914062499,-47.65546875000001],[-73.94086914062498,-47.92939453125004],[-74.22705078124994,-47.96894531250001],[-74.654931640625,-47.702246093750034],[-74.5337890625,-47.567675781249974],[-74.24296874999999,-47.67929687499998],[-74.13408203125002,-47.590820312499986],[-74.48266601562497,-47.43046875],[-74.15839843749998,-47.18251953125002],[-74.31357421874998,-46.78818359374998],[-74.45419921875003,-46.76679687499997],[-74.51225585937496,-46.88515625000002],[-75.00595703125,-46.74111328124998],[-74.98417968750002,-46.51210937499995],[-75.54033203124999,-46.69873046874996],[-75.43037109374995,-46.93457031249996],[-75.70639648437498,-46.70527343749997],[-74.924462890625,-46.159667968750014],[-75.06669921874993,-45.874902343749994],[-74.15786132812497,-45.7671875],[-74.122705078125,-45.49619140625002],[-73.95717773437494,-45.40439453124998],[-73.825,-45.446875],[-74.01992187500002,-46.055859375],[-74.39296875,-46.21738281250005],[-73.96757812500002,-46.15410156250003],[-73.87871093749993,-45.846875],[-73.73525390624994,-45.81171875],[-73.70815429687502,-46.070312500000014],[-73.94863281249997,-46.533105468749966],[-73.845361328125,-46.56601562500002],[-73.59184570312493,-45.89912109375004],[-73.73076171874999,-45.47998046875],[-73.26621093749995,-45.346191406250014],[-72.933837890625,-45.45234374999997],[-73.44497070312497,-45.23818359374995],[-73.36245117187502,-44.97822265625001],[-72.73896484375001,-44.73417968750003],[-72.680078125,-44.59394531249997],[-72.66386718749999,-44.43642578124995],[-73.26508789062498,-44.16865234375001],[-73.22446289062498,-43.89794921875003],[-73.06879882812495,-43.86201171874998],[-72.99658203125,-43.63154296875001],[-73.07597656250002,-43.323632812499994],[-72.75800781249998,-43.039453125],[-72.84804687500002,-42.66914062499997],[-72.77392578125003,-42.505175781250045],[-72.63183593750003,-42.509667968749994],[-72.77324218749996,-42.257714843749994],[-72.63105468749995,-42.199804687500006],[-72.412353515625,-42.388183593750014],[-72.49941406249997,-41.98085937499999],[-72.82407226562503,-41.90878906249996],[-72.36040039062499,-41.64912109375],[-72.31826171875,-41.49902343749997],[-72.54238281250002,-41.690625],[-72.95283203124995,-41.51474609374998],[-73.24179687499995,-41.78085937500002],[-73.62402343750003,-41.77363281249997],[-73.73515625000002,-41.74248046875002],[-73.62392578125,-41.581347656250045],[-73.81074218749995,-41.51748046875001],[-73.96586914062493,-41.118261718750034],[-73.67099609375,-39.96318359374999],[-73.41040039062503,-39.78916015624998],[-73.22646484375002,-39.22441406250003],[-73.52021484375001,-38.509375],[-73.46479492187498,-38.04033203125003],[-73.66181640624998,-37.69853515625003],[-73.66240234375002,-37.341015625000026],[-73.60166015624998,-37.18847656250003],[-73.21596679687502,-37.16689453124998],[-73.11806640624997,-36.68837890625002],[-72.58735351562493,-35.759667968749994],[-72.62392578125002,-35.5857421875],[-72.22377929687494,-35.096191406250014],[-72.00283203124997,-34.16533203125],[-71.66435546875002,-33.65263671875],[-71.74296875,-33.09511718750001],[-71.45224609374998,-32.65957031250001],[-71.70893554687495,-30.62802734375002],[-71.66948242187499,-30.33037109374996],[-71.40039062499997,-30.142968749999966],[-71.31572265624996,-29.649707031250017],[-71.51923828124993,-28.926464843750026],[-71.30673828124998,-28.672460937499963],[-71.08652343749998,-27.814453124999957],[-70.92578125,-27.588671874999974],[-70.64658203124998,-26.329394531250017],[-70.71372070312498,-25.78417968749997],[-70.44536132812502,-25.17265624999999],[-70.57412109374994,-24.644335937500003],[-70.39233398437494,-23.565917968749957],[-70.59335937499995,-23.255468750000034],[-70.56318359374995,-23.057031250000023],[-70.33168945312494,-22.848632812500014],[-70.08002929687501,-21.356835937500037],[-70.19702148437494,-20.725390625],[-70.15742187499995,-19.70585937500003],[-70.41826171874999,-18.345605468750023],[-69.92636718749998,-18.206054687500014],[-69.80258789062498,-17.990234375000014],[-69.85209960937493,-17.70380859375001],[-69.68476562499995,-17.649804687500023],[-69.58642578125,-17.57324218749997],[-69.51093749999998,-17.50605468749997],[-69.31337890624997,-17.943164062500017],[-69.28232421875003,-17.96484375],[-69.09394531249993,-18.05048828125004],[-69.14545898437495,-18.14404296875],[-69.09228515624994,-18.28242187500004],[-69.02680664062493,-18.65625],[-68.97885742187503,-18.81298828125003],[-68.96831054687502,-18.967968749999983],[-68.85795898437499,-19.09335937500005],[-68.62055664062495,-19.29667968749999],[-68.54785156249997,-19.341113281249974],[-68.49199218749996,-19.381933593750034],[-68.47016601562495,-19.409960937499974],[-68.46289062499997,-19.43281250000001],[-68.57529296874998,-19.56015625000002],[-68.69829101562499,-19.721093750000037],[-68.69619140625,-19.74072265625003],[-68.57827148437494,-19.856542968750006],[-68.559375,-19.902343750000014],[-68.56069335937502,-19.96708984374996],[-68.75932617187499,-20.115527343750003],[-68.74516601562493,-20.45859375],[-68.48432617187498,-20.628417968749957],[-68.55825195312497,-20.90195312499999],[-68.197021484375,-21.30029296874997],[-68.18642578124997,-21.618554687499966],[-67.88173828124997,-22.493359375000026],[-67.87944335937496,-22.822949218750026],[-67.57993164062495,-22.89169921874999],[-67.36225585937493,-22.85517578125001],[-67.19487304687493,-22.821679687500037]]]]},"properties":{"name":"Chile","childNum":26}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[110.88876953125006,19.99194335937497],[111.01367187500003,19.65546875000001],[110.64091796875002,19.291210937499955],[110.45126953125012,18.747949218750023],[110.06738281249997,18.447558593750045],[109.51933593750007,18.21826171875003],[108.7015625,18.535253906250034],[108.66552734375003,19.304101562499994],[109.27666015625002,19.761132812500023],[109.17744140625004,19.768457031250023],[109.26347656250007,19.882666015625006],[110.1715820312501,20.053710937500057],[110.58818359375002,19.976367187500017],[110.6517578125,20.137744140625017],[110.88876953125006,19.99194335937497]]],[[[110.38515625000005,21.093164062499966],[110.52158203125006,21.083105468750063],[110.50390625000003,20.96772460937501],[110.28095703125004,21.001171874999983],[110.38515625000005,21.093164062499966]]],[[[112.64375,21.63964843750003],[112.525,21.62304687500003],[112.64765625000004,21.710253906250017],[112.64375,21.63964843750003]]],[[[112.79023437500004,21.601855468750045],[112.78203125000007,21.772265625000045],[112.86259765625002,21.75263671875004],[112.79023437500004,21.601855468750045]]],[[[118.1830078125,24.496289062499983],[118.0905273437501,24.446142578125063],[118.10380859375002,24.552343750000034],[118.1830078125,24.496289062499983]]],[[[119.82089843750006,25.45698242187504],[119.70029296875012,25.432714843750063],[119.72255859375005,25.638818359375023],[119.83837890625003,25.591064453125],[119.82089843750006,25.45698242187504]]],[[[121.2513671875,28.086425781250057],[121.13154296875004,28.062597656250006],[121.20546875,28.204394531250017],[121.2513671875,28.086425781250057]]],[[[122.29589843750003,29.96342773437499],[122.02402343750012,30.01333007812505],[121.96943359375004,30.143115234375017],[122.28447265625007,30.068017578124994],[122.29589843750003,29.96342773437499]]],[[[121.86269531250005,31.492285156249977],[121.519921875,31.549609375000017],[121.2111328125001,31.80537109375001],[121.86269531250005,31.492285156249977]]],[[[130.52695312500012,42.535400390625],[130.24667968750012,42.744824218749955],[130.24033203125006,42.891796874999955],[129.89824218750002,42.998144531250034],[129.69785156250012,42.448144531249994],[129.3136718750001,42.41357421874997],[128.92343750000006,42.038232421874966],[128.04521484375007,41.9875],[128.28925781250004,41.60742187500006],[128.14941406249997,41.38774414062496],[127.17968750000003,41.531347656250006],[126.95478515625004,41.76948242187501],[126.74306640625,41.724853515625],[125.98906250000002,40.904638671875034],[124.8893554687501,40.459814453125006],[124.36210937500002,40.004052734374994],[124.10576171875002,39.84101562499998],[123.65087890625003,39.881591796875],[122.8400390625001,39.600830078125],[121.98232421875,39.05317382812498],[121.67724609374997,39.00341796875006],[121.64990234375003,38.865087890625034],[121.16357421874997,38.73164062500001],[121.10673828125002,38.920800781249994],[121.6798828125001,39.10869140625002],[121.62763671875004,39.22016601562498],[121.81845703125006,39.38652343750002],[121.27548828125006,39.38476562500003],[121.26748046875,39.544677734375],[121.51757812499997,39.638964843750045],[121.51738281250002,39.84482421875006],[121.8009765625001,39.950537109375006],[122.27500000000012,40.541845703125034],[121.83486328125005,40.97426757812502],[121.72929687500002,40.84614257812504],[121.1745117187501,40.901269531249994],[120.47910156250006,40.23095703125003],[119.39111328125003,39.75249023437499],[118.976953125,39.182568359374955],[118.29785156249997,39.067089843749955],[118.04091796875,39.22675781249998],[117.86572265625003,39.191259765625034],[117.61669921875003,38.852880859375034],[117.5578125000001,38.625146484374994],[117.76669921875012,38.311669921874994],[118.01494140625007,38.18339843749996],[118.94003906250006,38.04277343750002],[119.08916015625007,37.70073242187496],[118.95263671875003,37.33115234374998],[119.28740234375002,37.138281250000034],[119.76054687500007,37.15507812499999],[120.31152343750003,37.62270507812505],[120.2572265625,37.67900390624996],[120.75,37.83393554687501],[121.64023437500012,37.46035156250002],[122.05664062500003,37.528906250000034],[122.66699218750003,37.40283203125003],[122.4466796875,37.06811523437503],[122.51972656250004,36.94682617187502],[122.34091796875012,36.83222656250004],[121.93271484375006,36.95947265625003],[121.05380859375006,36.61137695312499],[120.81083984375007,36.6328125],[120.89580078125007,36.44414062500002],[120.71152343750006,36.41328125000004],[120.6378906250001,36.129931640625045],[120.39306640625003,36.053857421874994],[120.32773437500006,36.228173828124994],[120.18330078125004,36.20244140624999],[120.094140625,36.11889648437503],[120.28476562500006,35.98442382812499],[119.42968749999997,35.301416015624994],[119.16533203125002,34.84882812499998],[119.20097656250002,34.748437499999966],[120.26669921875006,34.274023437500034],[120.87109374999997,33.016503906249994],[120.8532226562501,32.66137695312503],[121.34169921875005,32.42504882812503],[121.40390625000006,32.20625],[121.85634765625,31.816455078125045],[121.86630859375006,31.703564453124955],[121.68085937500004,31.71215820312503],[121.351953125,31.85878906250005],[120.97353515625,31.86938476562497],[120.52011718750006,32.10585937500002],[120.03593750000002,31.93627929687503],[120.7155273437501,31.983740234375006],[120.7877929687501,31.81977539062501],[121.66064453124997,31.319726562499994],[121.87792968750003,30.91699218750003],[121.41894531249997,30.789794921875057],[120.8214843750001,30.354638671875023],[120.44980468750006,30.38784179687505],[120.19462890625002,30.241308593750034],[120.49453125,30.303076171875006],[120.63339843750006,30.133154296875034],[121.25800781250004,30.30410156250005],[121.67792968750004,29.979101562500006],[122.08291015625005,29.870361328125057],[121.50625,29.484570312499955],[121.94121093750002,29.605908203124983],[121.91777343750007,29.13500976562497],[121.71748046875004,29.25634765625],[121.48710937500007,29.193164062500017],[121.67968749999997,28.953125],[121.54003906250003,28.931884765625],[121.6625,28.851416015625034],[121.47519531250006,28.64140625],[121.60996093750006,28.29213867187505],[121.27226562500002,28.222119140624983],[121.14570312500004,28.32666015624997],[120.95859375000006,28.037011718750023],[120.74765625000006,28.00996093750001],[120.83300781249997,27.891455078125034],[120.58750000000012,27.580761718749983],[120.60751953125012,27.41240234374996],[120.2787109375,27.097070312500023],[120.08671875000007,26.67158203125004],[119.88222656250005,26.610449218750006],[119.82421874999997,26.84638671875001],[119.71044921874997,26.728662109375023],[119.58818359375002,26.784960937500045],[119.8810546875001,26.33417968750004],[119.46308593750004,26.05468750000003],[119.13945312500007,26.12177734375001],[119.33203124999997,25.94873046875003],[119.61875000000012,26.003564453124994],[119.53945312500005,25.59125976562504],[119.6224609375,25.391162109375017],[119.180078125,25.449804687499977],[119.285546875,25.232226562500074],[118.97753906249997,25.209277343750017],[118.90908203125005,24.92890625000001],[118.63691406250004,24.835546874999977],[118.65703125000002,24.621435546874977],[118.0871093750001,24.627001953125045],[118.00595703125006,24.48198242187499],[117.84267578125005,24.47431640625004],[118.0560546875,24.24609374999997],[117.62822265625002,23.836718750000074],[117.46640625000012,23.84057617187497],[117.36767578124997,23.58862304687497],[117.29082031250007,23.71435546875],[117.08251953124997,23.578759765625023],[116.91064453124997,23.646679687499983],[116.86093750000006,23.453076171874983],[116.62939453124997,23.353857421875034],[116.69882812500006,23.277783203124983],[116.53828125000004,23.17968749999997],[116.47070312499997,22.945898437500034],[116.25185546875005,22.981347656249994],[115.85214843750006,22.801562500000045],[115.64042968750002,22.853417968750023],[115.49833984375002,22.718847656250063],[115.19580078125003,22.81728515625005],[114.85380859375007,22.616796875000063],[114.65166015625002,22.755273437500023],[114.55419921874997,22.52890625],[114.26601562500005,22.540966796874983],[114.01542968750007,22.51191406250001],[113.61962890624997,22.861425781249977],[113.6205078125,23.12749023437499],[113.51972656250004,23.102099609375074],[113.33105468749997,22.912011718749966],[113.55302734375002,22.594042968750045],[113.54912109375002,22.225195312500034],[113.14902343750012,22.075],[113.08876953125,22.207958984374983],[112.95390625000007,21.907324218750034],[112.80859374999997,21.944628906250074],[112.58632812500005,21.77685546875],[112.35966796875007,21.97802734375003],[112.30498046875002,21.74169921875003],[111.94394531250012,21.84965820312499],[111.60273437500004,21.55908203125003],[111.01689453125007,21.51171874999997],[110.56718750000002,21.21406250000001],[110.41093750000007,21.33813476562497],[110.15400390625004,20.944628906250017],[110.36542968750004,20.837597656249955],[110.31308593750012,20.67167968749999],[110.51152343750007,20.51826171875001],[110.34472656249997,20.29482421875005],[109.88251953125004,20.364062500000045],[109.96835937500006,20.448144531250023],[109.66259765625003,20.91689453125005],[109.68125000000012,21.13164062499999],[109.93076171875012,21.480566406250034],[109.6869140625,21.52460937500004],[109.56640624999997,21.690576171874994],[109.54404296875012,21.537939453125006],[109.14863281250004,21.425537109375],[109.1017578125001,21.59047851562505],[108.77167968750004,21.63046875],[108.59375,21.901025390624994],[108.47988281250005,21.904638671875006],[108.50214843750004,21.633447265624994],[108.32480468750006,21.693505859374994],[108.24628906250004,21.55839843749999],[107.97265624999997,21.507958984375023],[107.75927734374997,21.655029296875057],[107.35117187500012,21.60888671874997],[106.97099609375002,21.923925781250034],[106.66357421875003,21.97890625000005],[106.55039062500006,22.501367187499994],[106.78027343749997,22.778906250000034],[106.54179687500007,22.908349609375023],[106.2790039062501,22.857470703125045],[106.14843749999997,22.970068359375006],[105.8429687500001,22.922802734374955],[105.27539062500003,23.34521484375003],[104.86474609375003,23.136376953125023],[104.68730468750002,22.822216796874983],[104.37177734375004,22.704052734374983],[104.14306640624997,22.800146484375006],[103.94150390625006,22.540087890625045],[103.62021484375006,22.782031250000045],[103.49296875000007,22.587988281250034],[103.32666015625003,22.769775390625057],[102.98193359374997,22.4482421875],[102.47089843750004,22.75092773437501],[102.40644531250004,22.70800781249997],[102.2370117187501,22.466015624999983],[102.1759765625001,22.414648437500006],[102.12744140624997,22.379199218750045],[101.84179687500003,22.38847656249999],[101.75996093750004,22.490332031250034],[101.73876953124997,22.495263671874994],[101.70751953125003,22.486572265625],[101.67148437500006,22.462304687500023],[101.64619140625004,22.405419921874966],[101.61992187500002,22.32744140624999],[101.56787109374997,22.27636718749997],[101.52451171875006,22.25366210937497],[101.7365234375001,21.826513671874977],[101.74394531250007,21.77797851562505],[101.74726562500004,21.605761718750045],[101.72294921875007,21.31494140625003],[101.80058593750007,21.212597656249983],[101.78349609375007,21.204150390625017],[101.728125,21.156396484374994],[101.7047851562501,21.15014648437503],[101.54238281250005,21.23427734375005],[101.2814453125001,21.184130859375045],[101.24785156250007,21.197314453125045],[101.22441406250002,21.223730468750034],[101.21181640625,21.278222656250023],[101.2199218750001,21.34243164062505],[101.17539062500006,21.407519531250074],[101.19667968750005,21.522070312500063],[101.1388671875001,21.567480468749977],[101.07978515625004,21.75585937499997],[100.60458984375012,21.471777343750006],[100.14765625000004,21.480517578125017],[99.94072265625007,21.75874023437504],[99.9176757812501,22.02802734375001],[99.19296875000006,22.12597656249997],[99.50712890625002,22.959130859374994],[99.41806640625006,23.069238281250023],[98.86376953125003,23.191259765625034],[98.8322265625001,23.624365234374977],[98.67675781250003,23.905078125000045],[98.83505859375006,24.121191406250034],[98.2125,24.110644531250017],[97.56455078125012,23.911035156250023],[97.7082031250001,24.228759765625],[97.53144531250004,24.49169921875003],[97.58330078125002,24.77480468750005],[97.73789062500006,24.869873046875057],[97.8195312500001,25.251855468749994],[98.01074218749997,25.292529296875017],[98.14287109375007,25.571093750000017],[98.33378906250007,25.586767578125006],[98.65625,25.86357421874999],[98.56406250000006,26.072412109374994],[98.68554687499997,26.189355468750023],[98.7384765625001,26.785742187500006],[98.65117187500007,27.572460937499983],[98.4525390625,27.6572265625],[98.29882812499997,27.550097656250045],[98.06162109375012,28.185888671874977],[97.59921875000006,28.51704101562504],[97.53789062500002,28.510205078124983],[97.43144531250002,28.353906250000023],[97.35644531249997,28.254492187500006],[97.32158929493812,28.217097107438057],[97.3027336276825,28.08710519614969],[97.34382779482424,27.982305259167095],[97.04929369561631,27.76000444316393],[96.96494598325154,27.699301564540924],[96.19423412199573,28.04146177926422],[95.73730002295082,28.117613231051525],[95.11298892962586,27.748338353239472],[94.07167814294401,27.588707868507477],[93.61247595136224,27.323800298697016],[93.30681393470121,26.786120363519142],[92.74319481218781,26.833531317384058],[92.04974640832253,26.874866505386724],[92.07342257335648,26.915311275859864],[92.06813426293174,26.9752569185349],[92.02985139563152,27.03987087331446],[91.99856592104459,27.079255842602592],[91.99177981607339,27.100605151743654],[92.0025114452454,27.147290053160265],[92.03101585307499,27.214271359861193],[92.08387457645458,27.29090135496722],[92.04520857607581,27.364442429033787],[91.99069061380867,27.450181624174498],[91.95099838734396,27.45828799115413],[91.85276579410389,27.438593286730903],[91.74366351462741,27.442853010105477],[91.59505352446729,27.557262710287986],[91.63193359375012,27.759960937499983],[91.64189453125002,27.923242187500023],[91.36259958579089,28.02438066407592],[91.27304687500012,28.078369140625],[91.22587890625007,28.071240234374983],[91.07773437500012,27.974462890624977],[91.02080078125002,27.970068359374977],[90.71572265625,28.071728515624983],[90.63007812500004,28.078564453124955],[90.47734375000007,28.07084960937499],[90.3527343750001,28.080224609375023],[90.33310546875012,28.093994140625],[90.36298828125004,28.21650390625001],[90.34824218750006,28.24394531249999],[90.22080078125006,28.27773437500005],[90.10449218749997,28.302050781250017],[89.98105468750006,28.311181640625023],[89.8978515625,28.29414062500001],[89.81689453125003,28.25629882812501],[89.74980468750002,28.18818359375001],[89.65273437500005,28.158300781250034],[89.53691406250007,28.10742187499997],[89.4806640625001,28.059960937499994],[88.89140625000002,27.316064453124966],[88.83251953125003,27.36284179687499],[88.7648437500001,27.429882812499983],[88.74902343749997,27.521875],[88.82988281250002,27.76738281249999],[88.84882812500004,27.86865234375],[88.80371093750003,28.006933593750034],[88.57792968750002,28.093359375000034],[88.42597656250004,28.01166992187501],[88.27519531250007,27.968847656250006],[88.14111328125003,27.94892578125001],[88.10898437500006,27.933007812499966],[88.10976562500005,27.870605468750057],[87.8607421875,27.886083984375006],[87.62255859374997,27.81518554687503],[87.29072265625004,27.821923828124994],[87.14140625000002,27.838330078124955],[87.02011718750006,27.928662109374983],[86.9337890625001,27.96845703125001],[86.84238281250012,27.99916992187505],[86.750390625,28.022070312500006],[86.71962890625005,28.070654296875034],[86.69052734375006,28.09492187500001],[86.61445312500004,28.10302734374997],[86.55449218750007,28.08520507812497],[86.51689453125007,27.963525390624966],[86.40869140625003,27.928662109374983],[86.32861328124997,27.95952148437496],[86.2179687500001,28.022070312500006],[86.13701171875002,28.114355468750063],[86.07871093750006,28.08359375],[86.0641601562501,27.934716796874966],[85.99453125000005,27.910400390625],[85.95410156249997,27.92822265624997],[85.92167968750002,27.989697265624983],[85.84023437500005,28.135351562499977],[85.75947265625004,28.220654296874955],[85.67832031250012,28.277441406249977],[85.41064453125003,28.27602539062505],[85.21210937500004,28.292626953124966],[85.1224609375,28.315966796875017],[85.08857421875004,28.37226562500001],[85.121484375,28.484277343750023],[85.16015624999997,28.571875],[85.15908203125,28.592236328124983],[85.1263671875,28.602636718750063],[85.06914062500007,28.60966796874999],[84.85507812500006,28.553613281250023],[84.796875,28.560205078125023],[84.2287109375001,28.911767578124966],[84.17558593750002,29.036376953125057],[84.12783203125005,29.15629882812496],[84.10136718750002,29.21997070312497],[84.02197265624997,29.25385742187504],[83.93593750000005,29.27949218750001],[83.58349609375003,29.18359375000003],[83.15546875000004,29.612646484375034],[82.22070312500003,30.063867187500023],[82.04335937500005,30.326757812500034],[81.8548828125,30.362402343750006],[81.64189453125007,30.3875],[81.4171875000001,30.33759765625001],[81.25507812500004,30.09331054687499],[81.17714843750005,30.039892578125034],[80.98544921875006,30.23710937499999],[80.87353515625003,30.290576171875045],[80.19121093750002,30.56840820312496],[80.20712890625006,30.683740234375023],[79.92451171875004,30.888769531250034],[79.66425781250004,30.96523437499999],[79.38847656250007,31.064208984375],[79.10712890625004,31.402636718750017],[78.74355468750005,31.323779296875017],[78.7550781250001,31.55029296875],[78.69345703125006,31.740380859374994],[78.72558593750003,31.983789062500023],[78.49589843750002,32.21577148437504],[78.4552734375001,32.30034179687502],[78.41748046874997,32.466699218749994],[78.38964843749997,32.51987304687498],[78.73671875,32.55839843750002],[78.75351562500012,32.49926757812506],[78.91894531249997,32.35820312500002],[79.16992187500003,32.497216796874994],[79.14550781250003,33.00146484375006],[79.10283203125007,33.05253906249996],[79.13515625000005,33.17192382812496],[79.1125,33.22626953125001],[78.94843750000004,33.346533203125006],[78.86503906250002,33.43110351562501],[78.78378906250006,33.80878906250004],[78.72666015625006,34.013378906249955],[78.97060546875,34.22822265625004],[78.93642578125,34.35195312500002],[78.86484375000006,34.39033203125001],[78.32695312500007,34.60639648437498],[78.15849609375002,34.94648437499998],[78.07578125000006,35.13491210937502],[78.0426757812501,35.47978515625002],[77.79941406250006,35.49589843750002],[77.44648437500004,35.47558593750006],[77.29482421875005,35.508154296875034],[77.09003906250004,35.55205078124999],[76.87890625000003,35.61328125000003],[76.76689453125002,35.661718750000034],[76.72753906250003,35.67866210937504],[76.63183593749997,35.729394531249966],[76.56347656249997,35.77299804687499],[76.55126953124997,35.887060546875034],[76.50205078125006,35.87822265625002],[76.38574218750003,35.837158203125],[76.25166015625004,35.8109375],[76.17783203125012,35.810546875],[76.14785156250005,35.82900390625002],[76.07089843750006,35.983007812500034],[75.91230468750004,36.048974609374994],[75.97441406250007,36.38242187500006],[75.9518554687501,36.458105468750034],[75.9330078125,36.52158203124998],[75.840234375,36.64970703124999],[75.7721679687501,36.694921875000034],[75.6671875000001,36.741992187500045],[75.57373046874997,36.75932617187502],[75.46025390625002,36.725048828124955],[75.42421875000005,36.73823242187498],[75.37685546875,36.88369140625005],[75.34667968749997,36.913476562499966],[75.05390625000004,36.98715820312498],[74.94912109375,36.96835937500006],[74.88925781250006,36.95244140625002],[74.69218750000007,37.035742187500006],[74.60058593749997,37.03666992187502],[74.54140625,37.02216796875001],[74.52646484375006,37.03066406250005],[74.49794921875,37.057226562500034],[74.37617187500004,37.13735351562502],[74.37216796875006,37.15771484375],[74.558984375,37.23662109374999],[74.66894531250003,37.266699218750006],[74.72666015625006,37.29072265625001],[74.7389648437501,37.28564453125003],[74.76738281250002,37.249169921874966],[74.840234375,37.22504882812504],[74.89130859375004,37.231640624999955],[75.11875,37.38569335937498],[74.8942382812501,37.60141601562498],[74.81230468750002,38.46030273437498],[74.27744140625,38.659765625000034],[74.02558593750004,38.53984375000002],[73.80166015625,38.60688476562501],[73.69609375000007,38.85429687499996],[73.8052734375,38.968652343749994],[73.60732421875,39.229199218749955],[73.63632812500006,39.396679687499955],[73.63164062500007,39.44887695312502],[73.82294921875004,39.48896484375004],[73.90712890625,39.578515624999966],[73.9146484375,39.60649414062499],[73.88251953125004,39.71455078124998],[73.83974609375005,39.76284179687505],[73.8353515625,39.800146484375006],[73.85625,39.828662109375045],[73.88457031250002,39.87792968750006],[73.93876953125002,39.97880859374999],[73.99160156250005,40.04311523437502],[74.83046875,40.32851562499999],[74.80126953124997,40.428515625000045],[74.83515625000004,40.482617187499955],[74.865625,40.493505859375034],[75.0044921875,40.44951171874996],[75.11132812499997,40.4541015625],[75.24101562500002,40.48027343750002],[75.52080078125002,40.627539062500006],[75.55556640625,40.625195312499955],[75.6771484375,40.305810546874994],[75.87197265625,40.30322265625],[76.25830078124997,40.43076171875006],[76.3185546875001,40.352246093749955],[76.39638671875005,40.389794921874966],[76.4801757812501,40.44951171874996],[76.57792968750002,40.577880859375],[76.62216796875006,40.66235351562497],[76.6398437500001,40.74223632812499],[76.66113281249997,40.77963867187498],[76.70839843750005,40.818115234375],[76.82402343750002,40.982324218749966],[76.90771484374997,41.02416992187497],[76.98662109375002,41.039160156250006],[77.58173828125004,40.99277343750006],[77.71933593750012,41.024316406249994],[77.81523437500002,41.05561523437498],[77.9564453125,41.05068359375005],[78.1234375,41.07563476562498],[78.34628906250012,41.28144531249998],[78.36240234375012,41.37163085937496],[78.44287109374997,41.41752929687499],[78.742578125,41.56005859375],[79.29355468750006,41.78281249999998],[79.76611328124997,41.89887695312501],[79.84042968750012,41.99575195312502],[79.90966796875003,42.014990234375034],[80.21621093750005,42.03242187500004],[80.23515625000007,42.04345703124997],[80.24619140625012,42.05981445312503],[80.209375,42.190039062500006],[80.20224609375012,42.73447265624998],[80.53896484375005,42.873486328124955],[80.39023437500006,43.043115234374966],[80.78574218750006,43.16157226562504],[80.35527343750002,44.09726562500006],[80.48154296875006,44.71464843749999],[79.871875,44.88378906249997],[80.05917968750012,45.006445312500006],[81.69199218750012,45.34936523437497],[81.94492187500006,45.16083984375001],[82.26660156249997,45.21909179687498],[82.52148437500003,45.12548828125],[82.61162109375007,45.424267578124955],[82.31523437500002,45.59492187499998],[83.02949218750004,47.18593750000002],[84.016015625,46.97050781250002],[84.66660156250006,46.97236328125004],[84.78613281249997,46.83071289062505],[85.484765625,47.06352539062496],[85.65664062500005,47.254638671875],[85.52597656250006,47.915625],[85.7494140625,48.38505859374999],[86.54941406250012,48.52861328125002],[86.8083007812501,49.04970703125002],[87.32285156250012,49.085791015625006],[87.41669921875004,49.07661132812501],[87.5158203125001,49.122412109375006],[87.7625,49.16582031249996],[87.81425781250002,49.162304687499955],[87.87216796875012,49.000146484374966],[87.74316406250003,48.88164062499999],[87.83183593750007,48.79165039062505],[88.02792968750006,48.735595703125],[88.06005859375003,48.707177734374966],[87.9796875000001,48.55512695312498],[88.30996093750005,48.47207031250002],[88.41396484375,48.403417968750006],[88.51708984374997,48.384472656249955],[88.56679687500005,48.31743164062496],[88.57597656250007,48.220166015624955],[88.68183593750004,48.170556640624994],[88.83828125000005,48.101708984374994],[88.91777343750007,48.089013671874966],[89.04765625000007,48.002539062500034],[89.47919921875004,48.02905273437503],[89.5609375,48.00395507812496],[89.778125,47.82700195312498],[89.83134765625002,47.82329101562502],[89.91044921875007,47.844335937500034],[89.95869140625004,47.88632812499998],[90.02792968750012,47.877685546875],[90.1032226562501,47.74541015624996],[90.19101562500012,47.70209960937501],[90.31328125000007,47.67617187499999],[90.33066406250006,47.655175781249966],[90.42519531250005,47.50410156250001],[90.49619140625012,47.28515625],[90.64335937500007,47.10029296874998],[90.71552734375004,47.00385742187498],[90.7990234375001,46.98515624999999],[90.86992187500002,46.95449218750005],[90.91054687500005,46.88325195312501],[90.9857421875,46.7490234375],[90.9115234375,46.270654296874994],[90.94755859375002,46.17729492187499],[90.99677734375004,46.10498046875],[91.00175781250007,46.03579101562502],[90.6618164062501,45.525244140625006],[90.87724609375002,45.19609375000002],[91.05,45.217431640624994],[91.584375,45.07651367187498],[92.42382812499997,45.008935546874994],[92.57890625000002,45.01098632812506],[92.78789062500007,45.035742187500034],[93.51621093750012,44.944482421874994],[94.71201171875012,44.35083007812503],[95.35029296875004,44.27807617187503],[95.32558593750005,44.03935546874999],[95.52558593750004,43.953955078125006],[95.85957031250004,43.27597656249998],[96.38544921875004,42.72036132812502],[97.20566406250012,42.78979492187506],[99.46787109375012,42.568212890625034],[99.98378906250005,42.67734375000006],[100.08632812500005,42.67075195312506],[100.51904296875003,42.61679687499998],[101.09199218750004,42.55131835937496],[101.49531250000004,42.53876953124998],[101.57910156249997,42.52353515624998],[101.65996093750002,42.50004882812499],[101.97294921875002,42.21586914062502],[102.15664062500005,42.158105468749966],[102.57519531249997,42.09208984375002],[103.07285156250006,42.00595703125006],[103.7111328125001,41.75131835937506],[103.99726562500004,41.796972656250034],[104.30517578124997,41.84614257812501],[104.49824218750004,41.87700195312499],[104.49824218750004,41.65869140625],[104.86035156250003,41.64375],[104.98203125000012,41.59550781250002],[105.05058593750002,41.61591796875001],[105.1154296875001,41.66328124999998],[105.19707031250002,41.738037109375],[105.31435546875005,41.77089843750005],[105.86757812500005,41.993994140625034],[106.77001953125003,42.28872070312502],[108.17119140625002,42.44731445312502],[108.68730468750002,42.416113281250034],[109.33984374999997,42.43837890625005],[109.44316406250002,42.455957031249994],[110.40039062499997,42.77368164062497],[111.00722656250005,43.34140624999998],[111.878125,43.68017578125],[111.93173828125012,43.81494140625],[111.40224609375005,44.367285156250006],[111.89804687500006,45.064062500000034],[112.03261718750005,45.08164062500006],[112.11289062500006,45.06293945312498],[112.41132812500004,45.05820312499998],[112.49931640625002,45.01093750000004],[112.59677734375006,44.917675781249955],[112.7067382812501,44.883447265624994],[113.04941406250006,44.81035156250002],[113.3009765625001,44.79165039062502],[113.50791015625006,44.76235351562502],[113.58701171875006,44.745703125],[113.65263671875002,44.76347656249999],[113.87705078125012,44.89619140625001],[114.03027343749997,44.942578124999955],[114.08027343750004,44.97114257812501],[114.41914062500004,45.20258789062501],[114.56015625000012,45.38999023437498],[114.73876953124997,45.41962890624998],[114.91923828125007,45.378271484375006],[115.16259765624997,45.390234375000034],[115.6810546875,45.45825195312503],[116.19765625,45.739355468750006],[116.240625,45.795996093750006],[116.22910156250012,45.84575195312502],[116.21298828125012,45.88691406249998],[116.56259765625012,46.28979492187497],[116.85908203125004,46.387939453125],[117.3333984375,46.36201171875004],[117.35693359375003,46.391308593749955],[117.35634765625,46.436669921874966],[117.39218750000012,46.53759765625003],[117.40556640625007,46.57089843750006],[117.43808593750012,46.58623046874999],[117.546875,46.58828125000005],[117.74121093749997,46.51816406250006],[118.07128906249997,46.666601562500006],[118.15683593750006,46.678564453125034],[118.30869140625012,46.71704101562497],[118.40439453125006,46.70317382812499],[118.58046875,46.69189453125],[118.64873046875002,46.70166015625006],[118.72294921875007,46.69189453125],[118.8439453125001,46.76020507812498],[118.95712890625006,46.73486328124997],[119.16210937499997,46.638671875],[119.33183593750002,46.61381835937499],[119.47402343750005,46.626660156249955],[119.62021484375006,46.60395507812504],[119.70664062500006,46.60600585937502],[119.74746093750005,46.62719726562497],[119.86718750000003,46.67216796874999],[119.89785156250005,46.857812499999966],[119.71113281250004,47.15],[119.08193359375,47.654150390625034],[119.01757812500003,47.68535156249999],[118.88027343750005,47.72509765625],[118.75996093750004,47.75761718749996],[118.69052734375012,47.822265625],[118.56777343750005,47.94326171875005],[118.49843750000005,47.98398437499998],[117.76835937500002,47.98789062499998],[117.3507812500001,47.65219726562498],[117.28593750000002,47.666357421875034],[117.06972656250005,47.80639648437506],[116.95166015624997,47.836572265624966],[116.90117187500007,47.85307617187496],[116.76054687500002,47.869775390624994],[116.65195312500012,47.86450195312497],[116.51347656250007,47.839550781249955],[116.37822265625002,47.84404296874999],[116.31718750000002,47.85986328125],[116.2311523437501,47.85820312500002],[116.07480468750012,47.78955078125],[115.99384765625004,47.71132812500005],[115.89824218750002,47.68691406250005],[115.6164062500001,47.874804687500045],[115.52509765625004,48.13085937499997],[115.63945312500007,48.18623046874998],[115.785546875,48.24824218750001],[115.7965820312501,48.346337890624994],[115.7916992187501,48.455712890624994],[115.8205078125001,48.57724609375006],[116.6833007812501,49.82377929687499],[117.8734375,49.51347656250002],[118.4515625,49.84448242187503],[119.25986328125012,50.06640625000003],[119.34628906250012,50.278955078124994],[119.16367187500006,50.40600585937503],[120.06689453125003,51.60068359375006],[120.74980468750007,52.096533203125006],[120.65615234375,52.56665039062503],[120.0675781250001,52.632910156250034],[120.09453125000007,52.787207031250034],[120.98544921875012,53.28457031250002],[123.6078125,53.546533203124994],[124.81230468750002,53.133837890625045],[125.075,53.20366210937496],[125.64902343750012,53.042285156250045],[126.34169921875,52.36201171875001],[126.92480468749997,51.10014648437496],[127.30703125000005,50.70795898437501],[127.33720703125007,50.35014648437502],[127.590234375,50.20898437500003],[127.55078124999997,49.801806640625045],[127.99960937500006,49.56860351562506],[128.70400390625,49.60014648437499],[129.0651367187501,49.374658203124966],[129.49814453125012,49.38881835937502],[130.1959960937501,48.89165039062499],[130.553125,48.861181640625006],[130.5521484375,48.602490234374955],[130.80429687500012,48.34150390624998],[130.7326171875001,48.01923828124998],[130.96191406249997,47.70932617187498],[132.47626953125004,47.714990234374994],[132.7072265625001,47.94726562500006],[133.14404296875003,48.10566406249998],[133.46835937500006,48.09716796875003],[134.29335937500005,48.37343750000002],[134.66523437500004,48.25390625],[134.56601562500006,48.02250976562502],[134.75234375,47.71542968749998],[134.1676757812501,47.30219726562501],[133.86132812500003,46.24775390625004],[133.43642578125,45.60468750000004],[133.18603515625003,45.49482421875004],[133.1134765625001,45.130712890625006],[132.93603515624997,45.029931640624994],[131.85185546875002,45.32685546875001],[131.44687500000012,44.984033203124966],[130.9816406250001,44.844335937500034],[131.2552734375,44.07158203124999],[131.25732421875003,43.378076171874994],[131.06855468750004,42.90224609375005],[130.42480468749997,42.72705078124997],[130.52695312500012,42.535400390625]]],[[[113.9977539062501,22.210498046875045],[113.83886718749997,22.24169921875003],[114.04394531250003,22.33339843750005],[113.9977539062501,22.210498046875045]]],[[[114.01542968750007,22.51191406250001],[114.26601562500005,22.540966796874983],[114.26796875,22.295556640624966],[113.93730468750002,22.364990234375],[114.01542968750007,22.51191406250001]]],[],[[[118.4074218750001,24.522119140624994],[118.43271484375006,24.414355468750074],[118.29511718750004,24.436328125000017],[118.4074218750001,24.522119140624994]]],[[[121.00878906249997,22.62036132812497],[120.83984375000003,21.925],[120.2328125,22.71791992187505],[120.0724609375001,23.149755859375006],[120.13212890625007,23.652929687500034],[121.040625,25.032812500000034],[121.59365234375,25.275341796874983],[121.92900390625002,24.973730468749977],[121.39746093750003,23.172509765625023],[121.00878906249997,22.62036132812497]]]]},"properties":{"name":"China","childNum":15}},{"geometry":{"type":"Polygon","coordinates":[[[-5.262304687499977,10.319677734374991],[-4.72177734374992,9.756542968750026],[-4.625830078125006,9.713574218749969],[-4.526611328124943,9.723486328125034],[-4.406201171874926,9.647998046875031],[-4.332226562499955,9.645703125],[-4.18115234375,9.78173828125],[-3.790625,9.917187499999983],[-3.581152343749977,9.924316406250014],[-3.289697265625023,9.882226562500051],[-3.223535156249937,9.895458984374997],[-3.160693359374932,9.849169921874974],[-3.095800781249949,9.752099609375009],[-3.042626953124937,9.72089843750004],[-2.988281249999972,9.687353515624963],[-2.900878906249943,9.534619140625026],[-2.875146484374937,9.500927734374997],[-2.816748046874949,9.425830078124974],[-2.766601562499943,9.424707031250009],[-2.7171875,9.457128906250048],[-2.695849609374989,9.481347656250009],[-2.686132812499977,9.43173828125002],[-2.705761718749983,9.351367187499989],[-2.74692382812492,9.04511718750004],[-2.689892578124955,9.02509765625004],[-2.649218750000017,8.956591796875031],[-2.600390625000017,8.800439453125023],[-2.505859375000028,8.208740234375],[-2.538281249999955,8.171630859374986],[-2.61171875,8.147558593749963],[-2.619970703125006,8.12109375],[-2.600976562499937,8.082226562499983],[-2.613378906249977,8.046679687500017],[-2.668847656249994,8.022216796875014],[-2.789746093749955,7.931933593750003],[-2.959082031249977,7.454541015624997],[-3.227148437499977,6.749121093749991],[-2.998291015624972,5.711328125000051],[-2.793652343749955,5.600097656250028],[-2.754980468749977,5.432519531249994],[-2.815673828125,5.153027343749997],[-3.168701171874972,5.203027343749966],[-3.199951171874943,5.3544921875],[-3.347558593749994,5.13066406249996],[-4.120166015625017,5.309716796875023],[-4.60888671875,5.235888671875003],[-4.037207031249977,5.23012695312498],[-4.899707031249932,5.138330078125023],[-5.282373046874994,5.210253906250017],[-5.36752929687492,5.15078125],[-5.061816406249989,5.13066406249996],[-5.913769531249926,5.0109375],[-7.544970703124989,4.351318359375],[-7.574658203124983,4.572314453124989],[-7.585058593749977,4.916748046875],[-7.39990234375,5.550585937499989],[-7.454394531249989,5.841308593749972],[-7.636132812499994,5.90771484375],[-7.730371093749994,5.919042968749991],[-7.800927734374994,6.038916015624991],[-7.833251953125,6.076367187499983],[-7.855517578125017,6.150146484375],[-7.888623046875011,6.234863281250028],[-7.981591796874937,6.2861328125],[-8.287109375,6.31904296875004],[-8.587890625,6.490527343749989],[-8.324511718749989,6.920019531249991],[-8.408740234374989,7.411816406249997],[-8.429980468749989,7.601855468749989],[-8.351757812499926,7.590576171875],[-8.231884765624955,7.556738281250034],[-8.205957031249994,7.590234375000023],[-8.115429687499926,7.760742187500028],[-8.126855468749937,7.867724609374974],[-8.00986328124992,8.078515625000023],[-8.048583984375,8.169726562500045],[-8.140625,8.181445312500031],[-8.217138671874949,8.219677734375011],[-8.256103515625,8.253710937500017],[-8.244140624999943,8.407910156249983],[-8.236962890624994,8.455664062500034],[-7.953125,8.477734375],[-7.823583984374977,8.467675781249994],[-7.738964843749983,8.375244140624986],[-7.696093749999932,8.375585937499977],[-7.71958007812492,8.643017578125011],[-7.950976562499989,8.786816406249997],[-7.938183593749983,8.97978515624996],[-7.902099609375,9.017089843750014],[-7.777978515624937,9.080859375000031],[-7.799804687499943,9.115039062499989],[-7.839404296875017,9.151611328124972],[-7.918066406249949,9.188525390625031],[-7.896191406249955,9.415869140624991],[-8.136962890624972,9.49570312499999],[-8.155175781249937,9.973193359375017],[-7.990625,10.1625],[-7.661132812500028,10.427441406250011],[-7.385058593749989,10.340136718749989],[-7.01708984375,10.143261718750026],[-6.950341796874994,10.342333984374989],[-6.693261718750023,10.34946289062502],[-6.669335937499937,10.39218750000002],[-6.69199218749992,10.512011718750017],[-6.686132812499977,10.578027343750051],[-6.676367187499949,10.633789062500043],[-6.654150390624949,10.65644531250004],[-6.482617187499983,10.561230468749997],[-6.250244140625,10.717919921875037],[-6.190673828124943,10.400292968749994],[-6.192626953124972,10.369433593750003],[-6.241308593749949,10.279199218750009],[-6.238378906249977,10.26162109374998],[-6.117187499999972,10.201904296874986],[-6.034570312499937,10.194824218750057],[-5.907568359375006,10.307226562500034],[-5.896191406249983,10.354736328125028],[-5.843847656249977,10.389550781250023],[-5.694287109374983,10.433203125000034],[-5.556591796874983,10.439941406249986],[-5.382275390625011,10.314013671875003],[-5.262304687499977,10.319677734374991]]]},"properties":{"name":"Côte d\'Ivoire","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[15.480078125,7.523779296874991],[15.206738281250011,7.206152343749991],[14.7392578125,6.27978515625],[14.43115234375,6.038720703124994],[14.616894531250011,5.865136718749994],[14.56298828125,5.279931640624994],[14.73125,4.602392578124991],[15.063574218750006,4.284863281249997],[15.128710937500017,3.826904296875],[16.0634765625,2.90859375],[16.183398437500017,2.270068359374989],[16.059375,1.676220703124997],[15.741601562500023,1.914990234374997],[14.902441406250006,2.012304687499991],[14.578906250000017,2.199121093749994],[13.293554687500006,2.161572265624997],[13.2203125,2.256445312499991],[11.558984375000023,2.302197265624997],[11.348437500000017,2.299707031249994],[11.328710937500006,2.167431640624997],[11.096582031250023,2.16748046875],[10.790917968750023,2.16757812499999],[9.979882812500023,2.167773437499989],[9.8701171875,2.21328125],[9.8369140625,2.242382812499997],[9.830371093750017,2.275488281249991],[9.826171875,2.297802734374997],[9.80078125,2.304443359375],[9.82177734375,2.539257812499997],[9.948437500000011,3.079052734374997],[9.672070312500011,3.53759765625],[9.765722656250006,3.623828124999989],[9.642382812500017,3.611767578124997],[9.55615234375,3.798046875],[9.739648437500023,3.852929687499994],[9.639941406250017,3.96533203125],[9.688867187500023,4.056396484375],[9.483691406250017,4.066113281249997],[9.42529296875,3.922314453124997],[9.000097656250006,4.091601562499989],[8.918261718750017,4.553759765624989],[8.660351562500011,4.670996093749991],[8.65625,4.516357421875],[8.53955078125,4.571875],[8.715625,5.046875],[8.997167968750006,5.917724609375],[9.490234375,6.418652343749997],[9.779882812500006,6.76015625],[9.820703125000023,6.783935546875],[9.874218750000011,6.803271484374989],[10.038867187500017,6.92138671875],[10.1435546875,6.996435546874991],[10.167773437500017,6.959179687499997],[10.185546875,6.912792968749997],[10.205468750000023,6.8916015625],[10.293066406250006,6.876757812499989],[10.413183593750006,6.877734374999989],[10.60625,7.063085937499991],[10.954199218750006,6.7765625],[11.032519531250017,6.697900390624994],[11.1064453125,6.457714843749997],[11.1533203125,6.437939453124997],[11.2373046875,6.450537109374991],[11.401757812500023,6.533935546875],[11.551660156250023,6.697265625],[11.580078125,6.888867187499997],[11.657519531250017,6.9515625],[11.861425781250006,7.11640625],[11.767382812500017,7.272265624999989],[11.809179687500006,7.345068359374991],[12.016015625000023,7.589746093749994],[12.2333984375,8.282324218749991],[12.403515625000011,8.595556640624991],[12.582714843750011,8.624121093749991],[12.651562500000011,8.667773437499989],[12.7822265625,8.81787109375],[12.806542968750023,8.886621093749994],[12.875683593750011,9.303515624999989],[12.929492187500017,9.42626953125],[13.19873046875,9.563769531249989],[13.269921875000023,10.036181640624989],[13.41455078125,10.171435546874989],[13.535351562500011,10.60507812499999],[13.699902343750011,10.873144531249991],[13.89208984375,11.140087890624997],[13.9814453125,11.211865234374997],[14.056738281250006,11.245019531249994],[14.143261718750011,11.24853515625],[14.202343750000011,11.268164062499991],[14.559765625000011,11.492285156249991],[14.619726562500006,12.150976562499991],[14.518945312500023,12.298242187499994],[14.272851562500023,12.356494140624989],[14.184863281250017,12.447216796874997],[14.06396484375,13.07851562499999],[14.244824218750011,13.07734375],[14.461718750000017,13.021777343749989],[14.847070312500023,12.502099609374994],[15.08125,11.845507812499989],[15.029882812500006,11.11367187499999],[15.132226562500023,10.648486328124989],[15.276074218750011,10.357373046874997],[15.654882812500006,10.0078125],[14.243261718750006,9.979736328125],[13.977246093750011,9.691552734374994],[14.332324218750017,9.20351562499999],[15.1162109375,8.557324218749997],[15.5498046875,7.787890624999989],[15.480078125,7.523779296874991]]]},"properties":{"name":"Cameroon","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[27.4033203125,5.109179687499989],[27.7880859375,4.644677734374994],[28.19208984375001,4.350244140624994],[28.427539062500017,4.324169921874997],[28.72705078125,4.504980468749991],[29.224902343750017,4.391894531249989],[29.469628906250023,4.61181640625],[29.676855468750006,4.5869140625],[30.194921875,3.98193359375],[30.50830078125,3.835693359375],[30.586718750000017,3.62421875],[30.757226562500023,3.62421875],[30.83857421875001,3.49072265625],[30.90644531250001,3.408935546875],[30.754003906250006,3.041796874999989],[30.8466796875,2.847021484374991],[30.728613281250006,2.455371093749989],[31.176367187500006,2.270068359374989],[31.252734375000017,2.044580078124994],[29.94287109375,0.819238281249994],[29.934472656250023,0.4990234375],[29.717675781250023,0.098339843749997],[29.576953125000017,-1.387890625000011],[29.196582031250017,-1.719921875000011],[29.13154296875001,-2.195117187500003],[28.876367187500023,-2.400292968750009],[28.893945312500023,-2.635058593750003],[29.01435546875001,-2.72021484375],[29.224414062500017,-3.053515625],[29.211816406250023,-3.833789062500003],[29.403222656250023,-4.449316406250006],[29.404199218750023,-4.496679687500006],[29.32568359375,-4.835644531250011],[29.32343750000001,-4.898828125],[29.3427734375,-4.983105468750011],[29.542382812500023,-5.499804687500003],[29.594140625000023,-5.65078125],[29.60703125,-5.72265625],[29.59638671875001,-5.775976562500006],[29.490820312500006,-5.965429687500006],[29.480078125,-6.025],[29.50625,-6.172070312500011],[29.540820312500017,-6.313867187500009],[29.590625,-6.394433593750009],[29.70966796875001,-6.616894531250011],[29.798144531250017,-6.69189453125],[29.961816406250023,-6.803125],[30.10625,-6.9150390625],[30.212695312500017,-7.037890625],[30.31318359375001,-7.203710937500006],[30.40673828125,-7.460644531250011],[30.75117187500001,-8.193652343750003],[28.89814453125001,-8.485449218750006],[28.869531250000023,-8.785839843750011],[28.400683593750017,-9.224804687500011],[28.60419921875001,-9.678808593750006],[28.6455078125,-10.550195312500009],[28.383398437500006,-11.566699218750003],[28.482519531250006,-11.812109375],[29.064355468750023,-12.348828125000011],[29.48554687500001,-12.41845703125],[29.508203125000023,-12.228222656250011],[29.79511718750001,-12.155468750000011],[29.775195312500017,-13.438085937500006],[29.55419921875,-13.248925781250009],[29.20185546875001,-13.398339843750009],[29.014257812500006,-13.368847656250011],[28.730078125,-12.925488281250011],[28.550878906250006,-12.836132812500011],[28.412890625000017,-12.51806640625],[27.573828125,-12.22705078125],[27.1591796875,-11.579199218750006],[26.824023437500017,-11.965234375],[26.025976562500006,-11.89013671875],[25.349414062500017,-11.623046875],[25.28876953125001,-11.21240234375],[24.3779296875,-11.417089843750006],[24.36572265625,-11.1298828125],[23.96650390625001,-10.871777343750011],[23.901171875000017,-10.983203125],[23.833886718750023,-11.013671875],[23.463964843750006,-10.969335937500006],[23.076269531250006,-11.087890625],[22.814746093750017,-11.080273437500011],[22.56103515625,-11.055859375000011],[22.486132812500017,-11.08671875],[22.392968750000023,-11.159472656250003],[22.31494140625,-11.198632812500009],[22.27880859375,-11.194140625],[22.226171875,-11.121972656250009],[22.203515625000023,-10.829492187500009],[22.307031250000023,-10.691308593750009],[22.19775390625,-10.040625],[21.81318359375001,-9.46875],[21.905371093750006,-8.693359375],[21.806054687500023,-7.32861328125],[21.751074218750006,-7.30546875],[21.190332031250023,-7.284960937500003],[20.910937500000017,-7.281445312500011],[20.607812500000023,-7.277734375],[20.558398437500017,-7.244433593750003],[20.53583984375001,-7.182812500000011],[20.536914062500017,-7.121777343750011],[20.598730468750006,-6.93515625],[20.59003906250001,-6.919921875],[20.482226562500017,-6.915820312500003],[20.190039062500006,-6.9462890625],[19.997460937500023,-6.976464843750009],[19.87519531250001,-6.986328125],[19.527636718750017,-7.144433593750009],[19.483789062500023,-7.279492187500011],[19.479882812500023,-7.47216796875],[19.371679687500006,-7.655078125],[19.369921875000017,-7.70654296875],[19.3408203125,-7.966601562500003],[19.142675781250006,-8.00146484375],[18.944433593750006,-8.00146484375],[18.56269531250001,-7.9359375],[18.0087890625,-8.107617187500011],[17.643359375000017,-8.090722656250009],[17.57958984375,-8.099023437500009],[16.984765625000023,-7.257421875],[16.91943359375,-6.933984375],[16.813085937500006,-6.772558593750006],[16.742968750000017,-6.618457031250003],[16.697265625,-6.164257812500011],[16.537109375,-5.9658203125],[16.431445312500017,-5.900195312500003],[16.315234375000017,-5.865625],[13.978515625,-5.857226562500003],[13.346484375000017,-5.863378906250006],[13.184375,-5.85625],[12.452929687500017,-6.00048828125],[12.213671875000017,-5.758691406250009],[12.484570312500011,-5.71875],[12.451464843750017,-5.071484375000011],[12.502734375000017,-5.036914062500003],[12.573535156250017,-4.99658203125],[12.59619140625,-4.978417968750009],[12.8296875,-4.736621093750003],[12.947460937500011,-4.6953125],[13.057324218750011,-4.651074218750011],[13.07275390625,-4.634765625],[13.08740234375,-4.601953125],[13.136621093750023,-4.604296875],[13.414941406250023,-4.83740234375],[13.659570312500023,-4.721484375],[13.717089843750017,-4.454492187500009],[13.94091796875,-4.484667968750003],[14.358300781250023,-4.299414062500006],[14.449804687500006,-4.449511718750003],[14.365429687500011,-4.585546875],[14.410742187500006,-4.83125],[14.707910156250023,-4.881738281250009],[15.990039062500017,-3.766210937500006],[16.217382812500006,-3.0302734375],[16.21533203125,-2.177832031250006],[16.54072265625001,-1.840136718750003],[16.8798828125,-1.225878906250003],[17.752832031250023,-0.549023437500011],[18.072167968750023,2.01328125],[18.49091796875001,2.924414062499991],[18.6103515625,3.478417968749994],[18.594140625000023,4.346240234374989],[19.06855468750001,4.891406249999989],[19.5009765625,5.127490234374989],[19.806542968750023,5.089306640624997],[20.226367187500017,4.829638671874989],[20.55810546875,4.462695312499989],[22.422167968750017,4.134960937499997],[22.864550781250017,4.723876953125],[23.41718750000001,4.663134765624989],[24.31982421875,4.994140625],[25.065234375000017,4.967431640624994],[25.52509765625001,5.31210937499999],[26.822070312500017,5.062402343749994],[27.071875,5.199755859374989],[27.4033203125,5.109179687499989]]]},"properties":{"name":"Dem. Rep. Congo","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[18.6103515625,3.478417968749994],[18.49091796875001,2.924414062499991],[18.072167968750023,2.01328125],[17.752832031250023,-0.549023437500011],[16.8798828125,-1.225878906250003],[16.54072265625001,-1.840136718750003],[16.21533203125,-2.177832031250006],[16.217382812500006,-3.0302734375],[15.990039062500017,-3.766210937500006],[14.707910156250023,-4.881738281250009],[14.410742187500006,-4.83125],[14.365429687500011,-4.585546875],[14.449804687500006,-4.449511718750003],[14.358300781250023,-4.299414062500006],[13.94091796875,-4.484667968750003],[13.717089843750017,-4.454492187500009],[13.659570312500023,-4.721484375],[13.414941406250023,-4.83740234375],[13.136621093750023,-4.604296875],[13.08740234375,-4.601953125],[13.07275390625,-4.634765625],[13.048046875000011,-4.619238281250006],[12.971386718750011,-4.5517578125],[12.881054687500011,-4.445117187500003],[12.84814453125,-4.428906250000011],[12.50146484375,-4.5875],[12.018359375000017,-5.004296875],[11.777539062500011,-4.565820312500009],[11.130175781250017,-3.916308593750003],[11.234472656250006,-3.690820312500009],[11.504296875000023,-3.5203125],[11.685742187500011,-3.68203125],[11.8798828125,-3.665917968750009],[11.934179687500006,-3.318554687500011],[11.715429687500006,-3.176953125000011],[11.760156250000023,-2.983105468750011],[11.537792968750011,-2.83671875],[11.60546875,-2.342578125],[12.064453125,-2.41259765625],[12.446386718750006,-2.329980468750009],[12.43212890625,-1.928906250000011],[12.590429687500006,-1.826855468750011],[12.793554687500006,-1.931835937500011],[12.991992187500017,-2.313378906250009],[13.464941406250006,-2.395410156250009],[13.733789062500023,-2.138476562500003],[13.886914062500011,-2.465429687500006],[13.993847656250011,-2.490625],[14.199804687500006,-2.354199218750011],[14.162890625000017,-2.217578125],[14.383984375000011,-1.890039062500009],[14.47412109375,-0.573437500000011],[13.860058593750011,-0.203320312500011],[13.949609375000023,0.353808593749989],[14.32421875,0.62421875],[14.429882812500011,0.901464843749991],[14.180859375000011,1.370214843749991],[13.851367187500017,1.41875],[13.21630859375,1.2484375],[13.172167968750017,1.78857421875],[13.293554687500006,2.161572265624997],[14.578906250000017,2.199121093749994],[14.902441406250006,2.012304687499991],[15.741601562500023,1.914990234374997],[16.059375,1.676220703124997],[16.183398437500017,2.270068359374989],[16.468554687500017,2.831738281249997],[16.610742187500023,3.50537109375],[17.491601562500023,3.687304687499989],[18.160937500000017,3.499804687499989],[18.474414062500017,3.622998046874997],[18.6103515625,3.478417968749994]]]},"properties":{"name":"Congo","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-71.31972656249997,11.861914062500048],[-71.95810546875,11.66640625],[-72.24848632812501,11.196435546875009],[-72.690087890625,10.835839843749994],[-72.86933593750001,10.49125976562496],[-73.00654296874998,9.789160156250006],[-73.36621093749997,9.194140625000017],[-73.05839843749999,9.259570312500031],[-72.79638671874997,9.10898437499999],[-72.66542968749994,8.62758789062498],[-72.39033203124995,8.287060546874969],[-72.47197265624996,7.524267578124991],[-72.20771484374995,7.37026367187498],[-72.00664062499993,7.032617187500023],[-71.12861328124993,6.98671875],[-70.73715820312503,7.090039062499997],[-70.12919921874999,6.95361328125],[-69.42714843749997,6.123974609374997],[-68.47177734375,6.156542968749974],[-67.85917968749999,6.289892578124963],[-67.48198242187499,6.18027343750002],[-67.47387695312503,5.929980468750003],[-67.82490234374995,5.270458984375026],[-67.85527343750002,4.506884765624989],[-67.66162109375,3.864257812499986],[-67.3111328125,3.41586914062502],[-67.85908203124998,2.793603515624994],[-67.61870117187496,2.793603515624994],[-67.21083984375,2.390136718750043],[-66.87602539062499,1.223046875000037],[-67.082275390625,1.185400390625006],[-67.11923828124998,1.703613281249986],[-67.40043945312499,2.116699218750028],[-67.93623046874998,1.748486328124969],[-68.19379882812495,1.987011718749983],[-68.25595703125,1.845507812500017],[-68.17656249999999,1.719824218749991],[-69.84858398437493,1.708740234375043],[-69.85214843750003,1.05952148437504],[-69.31181640624999,1.050488281249969],[-69.15332031249994,0.65878906250002],[-69.47211914062498,0.72993164062504],[-70.05390624999993,0.578613281250028],[-70.07050781249993,-0.13886718750004],[-69.63398437500001,-0.50927734375],[-69.40024414062498,-1.194921874999977],[-69.66904296875003,-2.667675781249997],[-69.94819335937498,-4.200585937500009],[-69.96591796875003,-4.2359375],[-70.16752929687499,-4.050195312500009],[-70.24028320312496,-3.882714843749994],[-70.2984375,-3.844238281249972],[-70.33950195312502,-3.814355468750009],[-70.73510742187497,-3.781542968749989],[-70.09584960937494,-2.658203125000014],[-70.16474609374995,-2.639843750000011],[-70.24443359375002,-2.606542968749977],[-70.29462890624995,-2.552539062499989],[-70.57587890624995,-2.418261718749989],[-70.64799804687499,-2.405761718750014],[-70.70537109374996,-2.341992187499983],[-70.91455078125003,-2.218554687499974],[-70.96855468750002,-2.206835937499989],[-71.02729492187498,-2.225781250000026],[-71.11337890625003,-2.245410156250031],[-71.19638671874998,-2.313085937499963],[-71.39697265625,-2.334082031249977],[-71.55947265624997,-2.224218749999977],[-71.75253906249995,-2.15273437499998],[-71.80273437499997,-2.166308593749989],[-71.86728515624998,-2.227734374999983],[-71.932470703125,-2.288671874999963],[-71.98427734375,-2.326562499999952],[-72.21845703125001,-2.400488281250006],[-72.94111328124998,-2.394042968750028],[-72.9896484375,-2.33974609374998],[-73.15449218749993,-2.278222656249966],[-73.19697265624995,-1.830273437500011],[-73.49628906249993,-1.69306640625004],[-73.66430664062497,-1.248828124999946],[-73.86318359374997,-1.19667968749998],[-73.92695312500001,-1.125195312499983],[-73.98681640625003,-1.098144531249986],[-74.05439453124995,-1.028613281250031],[-74.18076171875,-0.997753906249955],[-74.24638671874999,-0.970605468750023],[-74.28388671874998,-0.927832031250006],[-74.33442382812498,-0.85087890624996],[-74.41787109375,-0.580664062499977],[-74.46518554687498,-0.517675781250034],[-74.51386718749993,-0.470117187500023],[-74.555078125,-0.429882812499997],[-74.61635742187494,-0.370019531249966],[-74.691650390625,-0.335253906249989],[-74.75537109375003,-0.298632812499989],[-74.78046874999998,-0.24453125],[-74.80175781249997,-0.200097656249994],[-75.13837890624998,-0.050488281249969],[-75.28447265624999,-0.10654296875002],[-75.77666015624999,0.08925781249998],[-76.27060546874998,0.439404296874997],[-76.49462890624997,0.23544921875002],[-77.396337890625,0.393896484374963],[-77.46767578124997,0.636523437500017],[-77.702880859375,0.837841796874997],[-78.1806640625,0.968554687499974],[-78.85966796874996,1.455371093750031],[-79.02543945312499,1.623681640625037],[-78.79296874999994,1.848730468749963],[-78.576904296875,1.773779296874977],[-78.59169921875,2.356640624999969],[-78.41689453125,2.483496093749963],[-78.06665039062494,2.509130859375034],[-77.81357421875,2.716357421874974],[-77.076806640625,3.913281250000026],[-77.26352539062503,3.893212890625023],[-77.27802734374995,4.058496093750023],[-77.35820312499996,3.944726562500037],[-77.40874023437496,4.24775390625004],[-77.52070312499993,4.212792968750023],[-77.35351562499997,4.398291015624977],[-77.28632812499995,4.72172851562496],[-77.373291015625,5.323974609375],[-77.53442382812497,5.537109374999986],[-77.24926757812497,5.780175781250037],[-77.46943359374995,6.176757812500014],[-77.368798828125,6.575585937499994],[-77.90117187499999,7.229345703125048],[-77.76191406249995,7.698828125000034],[-77.53828124999995,7.56625976562502],[-77.19599609374995,7.972460937500003],[-77.47851562499994,8.498437500000037],[-77.37421874999993,8.65830078125002],[-76.85185546875002,8.09047851562498],[-76.924658203125,7.973193359374974],[-76.78657226562493,7.931591796875026],[-76.7720703125,8.310546875000043],[-76.92045898437496,8.573730468750014],[-76.27685546875,8.989111328124991],[-76.02724609374997,9.365771484374989],[-75.63935546874998,9.450439453125014],[-75.680029296875,9.729785156249989],[-75.53857421874997,10.205175781250034],[-75.708349609375,10.143408203124963],[-75.44599609374995,10.610888671874989],[-74.84458007812498,11.109716796875006],[-74.330224609375,10.996679687499991],[-74.51625976562497,10.8625],[-74.40087890625,10.76523437499999],[-74.14291992187503,11.320849609375031],[-73.31337890624997,11.295751953124991],[-72.275,11.88925781250002],[-72.13574218749994,12.188574218749977],[-71.71455078124993,12.41997070312496],[-71.26210937499997,12.335302734375034],[-71.13730468750003,12.04633789062504],[-71.31972656249997,11.861914062500048]]]},"properties":{"name":"Colombia","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[43.788671875,-12.307031250000023],[43.85898437500006,-12.368261718749977],[43.66367187500006,-12.342871093749949],[43.63134765624997,-12.247070312499972],[43.788671875,-12.307031250000023]]],[[[44.476367187500074,-12.08154296875],[44.504980468750006,-12.356542968749991],[44.220117187499994,-12.171386718750014],[44.476367187500074,-12.08154296875]]],[[[43.46582031249997,-11.901269531249966],[43.226660156250006,-11.75185546874998],[43.2990234375001,-11.374511718750028],[43.39296875000005,-11.408593749999952],[43.46582031249997,-11.901269531249966]]]]},"properties":{"name":"Comoros","childNum":3}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-24.308251953124966,14.856298828124991],[-24.44052734374992,14.834814453124963],[-24.496875,14.980273437500017],[-24.329492187499937,15.019482421875011],[-24.308251953124966,14.856298828124991]]],[[[-23.18212890624997,15.136767578125017],[-23.210253906250017,15.32353515625006],[-23.119335937499955,15.26840820312502],[-23.18212890624997,15.136767578125017]]],[[[-23.444238281249994,15.00795898437498],[-23.5046875,14.916113281250006],[-23.70537109374999,14.96132812499998],[-23.74809570312499,15.328515625],[-23.444238281249994,15.00795898437498]]],[[[-22.917724609375,16.237255859374955],[-22.69262695312497,16.169042968750006],[-22.710107421874994,16.043359374999966],[-22.95927734374996,16.045117187499983],[-22.917724609375,16.237255859374955]]],[[[-24.08769531249999,16.62250976562501],[-24.03271484374997,16.57202148437503],[-24.243066406250023,16.599414062500017],[-24.32236328124992,16.49311523437504],[-24.398095703124966,16.61840820312497],[-24.08769531249999,16.62250976562501]]],[[[-22.888330078124966,16.659082031249994],[-22.980615234374937,16.700878906249983],[-22.93291015624999,16.84101562500004],[-22.888330078124966,16.659082031249994]]],[[[-24.88706054687495,16.81811523437497],[-25.09306640624999,16.83251953125],[-24.936474609374983,16.92211914062503],[-24.88706054687495,16.81811523437497]]],[[[-25.169824218749994,16.94648437500001],[-25.308300781249955,16.93583984374999],[-25.337109374999955,17.091015624999983],[-25.03466796875,17.176464843749983],[-24.979687499999983,17.09472656250003],[-25.169824218749994,16.94648437500001]]]]},"properties":{"name":"Cape Verde","childNum":8}},{"geometry":{"type":"Polygon","coordinates":[[[-83.6419921875,10.917236328125],[-83.346826171875,10.315380859374997],[-82.77841796874999,9.66953125],[-82.56357421874999,9.57666015625],[-82.56923828125,9.55820312499999],[-82.58652343749999,9.538818359375],[-82.64409179687499,9.505859375],[-82.801025390625,9.591796875],[-82.843994140625,9.57080078125],[-82.86015624999999,9.511474609375],[-82.88896484374999,9.481005859374989],[-82.925048828125,9.469042968749989],[-82.93984375,9.449169921874997],[-82.94033203125,9.060107421874989],[-82.88134765625,9.055859375],[-82.78305664062499,8.990283203124989],[-82.741162109375,8.951708984374989],[-82.72783203124999,8.916064453124989],[-82.91704101562499,8.740332031249991],[-82.855712890625,8.635302734374989],[-82.84477539062499,8.489355468749991],[-82.86162109374999,8.45351562499999],[-83.02734375,8.337744140624991],[-82.879345703125,8.070654296874991],[-83.12333984374999,8.353076171874989],[-83.16240234374999,8.588183593749989],[-83.4697265625,8.706835937499989],[-83.29150390625,8.406005859375],[-83.54375,8.445849609374989],[-83.73408203125,8.614453125],[-83.613720703125,8.804052734374991],[-83.73691406249999,9.150292968749994],[-84.58159179687499,9.568359375],[-84.71494140624999,9.8994140625],[-85.23564453124999,10.242089843749994],[-85.2365234375,10.107373046874997],[-84.88642578125,9.820947265624994],[-85.07705078125,9.60195312499999],[-85.31455078124999,9.8109375],[-85.62485351562499,9.902441406249991],[-85.84965820312499,10.292041015624989],[-85.667236328125,10.745019531249994],[-85.90800781249999,10.897558593749991],[-85.7443359375,11.06210937499999],[-85.5841796875,11.189453125],[-84.9091796875,10.9453125],[-84.6341796875,11.045605468749997],[-83.91928710937499,10.7353515625],[-83.71293945312499,10.785888671875],[-83.6419921875,10.917236328125]]]},"properties":{"name":"Costa Rica","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-82.56176757812503,21.571679687500023],[-82.959619140625,21.441308593750023],[-83.18378906250001,21.59345703125004],[-82.97358398437498,21.592285156250057],[-83.08251953124997,21.791406250000023],[-82.99121093750003,21.942724609375034],[-82.71455078124998,21.890283203125023],[-82.56176757812503,21.571679687500023]]],[[[-77.66899414062493,21.951953125000045],[-77.91855468749998,22.088085937499983],[-77.63369140624994,22.054003906250074],[-77.66899414062493,21.951953125000045]]],[[[-77.87939453125,22.127539062500034],[-78.04165039062502,22.201269531250034],[-77.99921874999998,22.298730468749994],[-77.87939453125,22.127539062500034]]],[[[-81.83745117187499,23.163037109374955],[-81.26235351562497,23.156835937500034],[-81.14462890624998,23.054931640625057],[-80.65014648437494,23.10307617187499],[-80.36489257812502,22.943408203125074],[-79.82026367187498,22.887011718750045],[-79.27568359374999,22.407617187499994],[-78.68647460937493,22.366845703125023],[-77.63681640624995,21.79736328125],[-77.49711914062502,21.78833007812503],[-77.58315429687497,21.889257812499977],[-77.49726562499995,21.871630859375045],[-77.14414062499995,21.643603515625017],[-77.36616210937498,21.612646484375034],[-77.25288085937498,21.483496093750006],[-77.0986328125,21.589013671875023],[-76.86743164062497,21.330419921875006],[-75.72294921874996,21.111035156249983],[-75.59580078125,20.99467773437499],[-75.72456054687493,20.71455078125004],[-74.882568359375,20.65063476562497],[-74.51313476562495,20.384570312500045],[-74.16748046874997,20.292187499999955],[-74.15371093750002,20.168554687500006],[-75.11640624999995,19.901416015625017],[-75.151611328125,20.008349609375045],[-75.29047851562495,19.893115234375017],[-76.15844726562497,19.98974609374997],[-77.715087890625,19.85546874999997],[-77.10380859374999,20.407519531250017],[-77.22958984374995,20.64375],[-78.11635742187497,20.761865234374994],[-78.49077148437493,21.05371093750003],[-78.72768554687497,21.592724609374955],[-79.35742187500003,21.58515625000001],[-80.23134765625,21.872167968750063],[-80.48544921874998,22.1234375],[-81.03564453124997,22.073583984375063],[-81.18549804687495,22.26796875000005],[-81.284375,22.109423828125074],[-81.84941406249993,22.21367187499999],[-82.077734375,22.3876953125],[-81.71035156250002,22.496679687500006],[-81.83881835937498,22.672460937500034],[-82.73803710937497,22.689257812500074],[-83.37963867187503,22.222998046875034],[-83.90073242187495,22.17011718750001],[-84.03095703124993,21.94311523437503],[-84.502587890625,21.776171875000045],[-84.50136718750002,21.930273437499977],[-84.88720703125003,21.856982421875074],[-84.32636718749998,22.074316406250034],[-84.36127929687498,22.37890625],[-84.04492187500003,22.666015625000057],[-83.25781249999997,22.967578125000017],[-81.83745117187499,23.163037109374955]]]]},"properties":{"name":"Cuba","childNum":4}},{"geometry":{"type":"Polygon","coordinates":[[[-68.75107421874999,12.059765625],[-68.9951171875,12.141845703125],[-69.15888671875,12.380273437499994],[-68.75107421874999,12.059765625]]]},"properties":{"name":"Curaçao","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-81.36953124999997,19.34887695312497],[-81.10712890624995,19.305175781250057],[-81.40478515624994,19.278417968750006],[-81.36953124999997,19.34887695312497]]],[[[-79.823388671875,19.711914062500057],[-79.90620117187501,19.702539062499994],[-79.74228515625,19.757128906250017],[-79.823388671875,19.711914062500057]]]]},"properties":{"name":"Cayman Is.","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[34.004492187500006,35.065234375],[33.47578125000001,35.000341796875],[33.3837890625,35.1626953125],[32.91953125,35.087841796875],[32.71269531250002,35.171044921874994],[32.8798828125,35.180566406249994],[32.94160156250001,35.390429687499996],[33.60761718750001,35.354150390624994],[34.55605468750002,35.662060546875],[33.941992187500006,35.292041015624996],[34.004492187500006,35.065234375]]]},"properties":{"name":"N. Cyprus","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[32.71269531250002,35.171044921874994],[32.91953125,35.087841796875],[33.3837890625,35.1626953125],[33.47578125000001,35.000341796875],[34.004492187500006,35.065234375],[34.05019531250002,34.98837890625],[33.69941406250001,34.969873046874994],[33.007910156250006,34.569580078125],[32.44902343750002,34.729443359375],[32.31718750000002,34.9533203125],[32.30097656250001,35.082958984375],[32.71269531250002,35.171044921874994]]]},"properties":{"name":"Cyprus","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[14.809375,50.858984375],[14.895800781250017,50.861376953124996],[14.98291015625,50.886572265625],[14.99375,51.01435546875],[16.007226562500023,50.611621093749996],[16.2822265625,50.655615234375],[16.419726562500017,50.573632812499994],[16.210351562500023,50.423730468749994],[16.63916015625,50.1021484375],[16.989648437500023,50.2369140625],[16.88007812500001,50.427050781249996],[17.41523437500001,50.254785156249994],[17.702246093750006,50.307177734374996],[17.627050781250006,50.11640625],[17.874804687500017,49.972265625],[18.0283203125,50.03525390625],[18.562402343750023,49.879345703125],[18.83222656250001,49.510791015624996],[18.160937500000017,49.257373046874996],[18.0859375,49.06513671875],[17.75849609375001,48.888134765625],[17.135644531250023,48.841064453125],[16.953125,48.598828125],[16.543554687500006,48.796240234375],[16.057226562500006,48.754785156249994],[15.066796875000023,48.997851562499996],[14.691308593750023,48.59921875],[14.049121093750017,48.602490234375],[13.814746093750017,48.766943359375],[13.769921875000023,48.815966796874996],[13.684960937500023,48.876708984375],[13.547656250000017,48.95966796875],[13.440722656250017,48.95556640625],[13.401171875000017,48.977587890624996],[12.916699218750011,49.33046875],[12.68115234375,49.414501953125],[12.390527343750023,49.739648437499994],[12.5125,49.87744140625],[12.09921875,50.310986328125],[12.134863281250006,50.3109375],[12.1748046875,50.288378906249996],[12.231152343750011,50.244873046875],[12.27734375,50.181445312499996],[12.3056640625,50.205712890624994],[12.549023437500011,50.393408203125],[13.016406250000017,50.490380859374994],[13.18115234375,50.510498046875],[14.369042968750023,50.898730468749996],[14.319726562500023,51.03779296875],[14.545703125000017,50.993945312499996],[14.559667968750006,50.954931640625],[14.59521484375,50.918603515624994],[14.623828125000017,50.91474609375],[14.613574218750017,50.85556640625],[14.658203125,50.8326171875],[14.723339843750011,50.814697265625],[14.766503906250023,50.818310546875],[14.797460937500006,50.842333984374996],[14.809375,50.858984375]]]},"properties":{"name":"Czech Rep.","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[14.1982421875,53.919042968750034],[13.92578125,53.879052734374966],[13.827734375,54.12724609374999],[14.1982421875,53.919042968750034]]],[[[13.709179687500011,54.382714843749994],[13.707324218750074,54.281152343749994],[13.190039062500034,54.32563476562501],[13.336816406249994,54.697119140625006],[13.65761718750008,54.55957031249997],[13.709179687500011,54.382714843749994]]],[[[9.739746093750028,54.82553710937498],[10.022167968750011,54.673925781250006],[9.86865234375,54.47246093749999],[10.731542968750006,54.31625976562506],[11.013378906250068,54.37915039062497],[11.008593750000074,54.18115234374997],[10.810742187500068,54.075146484374955],[10.917773437500045,53.99531250000004],[11.39960937500004,53.94462890625002],[12.111328125,54.168310546875006],[12.57539062500004,54.467382812500006],[13.028613281250017,54.411035156249994],[13.448046875000017,54.14086914062503],[13.724218750000063,54.153222656249966],[13.865527343750074,53.85336914062498],[14.258886718750006,53.729638671874994],[14.298730468750051,53.55644531249999],[14.41455078125,53.28349609374996],[14.412304687500011,53.216748046874955],[14.410937500000074,53.19902343749999],[14.368554687500051,53.105566406250034],[14.293164062500068,53.026757812499966],[14.138867187500068,52.93286132812503],[14.128613281250011,52.87822265625002],[14.253710937500017,52.78251953124996],[14.514062500000023,52.645605468750034],[14.619433593750017,52.52851562499998],[14.569726562499994,52.431103515624955],[14.554589843750023,52.35966796874996],[14.573925781250068,52.31416015625001],[14.615625,52.277636718750045],[14.679882812500068,52.25],[14.752539062500034,52.08183593750002],[14.601660156250034,51.832373046875006],[14.738671875000051,51.62714843750004],[14.7109375,51.54492187499997],[14.724707031250063,51.523876953124955],[14.90595703125004,51.463330078124955],[14.935546875000028,51.435351562500045],[14.9638671875,51.095117187499994],[14.917480468750057,51.00874023437498],[14.814257812499989,50.871630859375045],[14.809375,50.858984375000034],[14.797460937500034,50.84233398437502],[14.766503906250051,50.81831054687501],[14.72333984375004,50.81469726562497],[14.658203125,50.832617187500006],[14.613574218750045,50.85556640625006],[14.623828125000017,50.91474609375004],[14.595214843750057,50.91860351562502],[14.559667968750006,50.954931640625034],[14.545703124999989,50.99394531249999],[14.319726562500051,51.037792968749955],[14.36904296875008,50.89873046874996],[13.18115234375,50.510498046875],[13.016406250000017,50.490380859374994],[12.549023437500011,50.393408203125034],[12.3056640625,50.205712890624994],[12.27734375,50.18144531250002],[12.231152343749983,50.24487304687497],[12.174804687500057,50.28837890624996],[12.134863281250006,50.31093750000002],[12.099218750000034,50.31098632812504],[12.089843749999972,50.30175781250003],[12.089746093750051,50.2685546875],[12.294598214285761,50.13608119419641],[12.5125,49.87744140625],[12.390527343750051,49.739648437499994],[12.68115234375,49.41450195312501],[12.91669921875004,49.33046875000002],[13.401171875000074,48.97758789062499],[13.440722656250045,48.95556640625003],[13.547656250000074,48.95966796874998],[13.684960937500051,48.87670898437506],[13.769921875000051,48.81596679687502],[13.814746093750017,48.76694335937498],[13.802929687500011,48.74750976562501],[13.798828124999972,48.62167968750006],[13.785351562499983,48.58745117187502],[13.486621093750074,48.58183593750002],[13.471679687500028,48.57182617187502],[13.459863281250023,48.564550781250034],[13.409375,48.39414062500006],[13.322851562500006,48.33125],[13.215234375000023,48.301904296874994],[12.760351562500063,48.10698242187499],[12.95351562500008,47.890625],[12.897656250000068,47.721875],[13.054101562500051,47.655126953125034],[13.047949218750034,47.57915039062502],[13.031542968750074,47.50800781250001],[13.01435546875004,47.478076171875045],[12.968066406250017,47.475683593750006],[12.878906250000057,47.506445312500034],[12.809375,47.542187499999955],[12.782812500000034,47.56416015624998],[12.781152343750051,47.590429687500006],[12.796191406249989,47.60703125],[12.771386718750023,47.63940429687503],[12.685839843750074,47.66933593750002],[12.209277343750074,47.71826171875003],[12.196875,47.709082031250034],[12.203808593750011,47.64672851562503],[12.185644531250063,47.61953125],[11.041992187500028,47.39311523437496],[10.98085937499999,47.39814453125001],[10.893945312500051,47.470458984375],[10.870605468750028,47.500781250000045],[10.873046874999972,47.52021484375001],[10.741601562500023,47.52412109375001],[10.65869140625,47.547216796875006],[10.482812500000051,47.54179687499996],[10.439453125000028,47.55156249999999],[10.403906250000063,47.41699218750003],[10.369140625,47.366064453125034],[10.18300781250008,47.27880859375003],[10.200292968750063,47.36342773437505],[10.066308593750023,47.39335937500002],[10.064575892857171,47.42369419642856],[10.059863281250045,47.44907226562498],[10.034082031250023,47.47358398437501],[9.971582031249994,47.50532226562498],[9.839160156250017,47.55229492187496],[9.748925781250023,47.575537109375006],[9.524023437500034,47.52421875000002],[8.572656250000023,47.775634765625],[8.435742187500011,47.73134765625002],[8.403417968750006,47.687792968750045],[8.413281250000068,47.66269531249998],[8.451757812500006,47.65180664062498],[8.552343750000063,47.65913085937498],[8.56708984375004,47.65190429687502],[8.57050781250004,47.63779296874998],[8.55947265625008,47.62402343750003],[8.477636718750034,47.61269531250002],[8.454003906249994,47.59619140625003],[7.615625,47.59272460937504],[7.616601562500023,48.15678710937502],[8.134863281250006,48.97358398437498],[7.450585937500051,49.152197265625034],[6.735449218750006,49.16059570312498],[6.344335937500006,49.45273437499998],[6.4873046875,49.798486328124994],[6.204882812500017,49.915136718750034],[6.13818359375,49.97431640625001],[6.10976562500008,50.034375],[6.116503906250045,50.120996093749966],[6.340917968750006,50.451757812500034],[5.993945312500017,50.75043945312504],[6.048437500000034,50.90488281250006],[5.857519531250034,51.030126953125006],[6.129980468750034,51.14741210937501],[6.198828125000034,51.45],[5.948730468750057,51.80268554687501],[6.800390625,51.96738281249998],[6.724511718749994,52.080224609374966],[7.035156250000057,52.38022460937498],[6.748828125000074,52.464013671874994],[6.710742187500045,52.61787109374998],[7.033007812500045,52.65136718749997],[7.197265625000028,53.28227539062499],[7.074316406250034,53.477636718750006],[7.285253906250034,53.68134765625001],[8.00927734375,53.69072265624999],[8.108496093750063,53.46767578125002],[8.245214843750006,53.44531249999997],[8.333886718750051,53.606201171875],[8.495214843750063,53.39423828124998],[8.618945312500045,53.875],[9.20556640625,53.85595703124997],[9.783984375000074,53.554638671874955],[9.31201171875,53.859130859375],[8.92041015625,53.96533203125006],[8.906640625000023,54.26079101562502],[8.625781250000017,54.35395507812501],[8.951855468750011,54.46757812499996],[8.670312500000023,54.903417968750034],[9.739746093750028,54.82553710937498]]],[[[8.307714843750034,54.786962890625034],[8.451464843750017,55.05537109374998],[8.3798828125,54.89985351562501],[8.629589843750068,54.891748046874966],[8.307714843750034,54.786962890625034]]]]},"properties":{"name":"Germany","childNum":4}},{"geometry":{"type":"Polygon","coordinates":[[[43.24599609375002,11.499804687499989],[42.92275390625002,10.999316406249989],[42.557714843750006,11.080761718749997],[41.79824218750002,10.98046875],[41.79267578125001,11.68603515625],[42.378515625,12.46640625],[42.40859375000002,12.494384765625],[42.45,12.521337890624991],[42.47939453125002,12.513623046874997],[42.703710937500006,12.380322265624997],[42.76748046875002,12.4228515625],[42.825292968750006,12.5693359375],[42.86591796875001,12.622802734375],[42.88330078125,12.621289062499997],[43.00566406250002,12.662304687499997],[43.11669921875,12.70859375],[43.353515625,12.367041015624991],[43.38027343750002,12.091259765624997],[42.64003906250002,11.560107421874989],[42.52177734375002,11.572167968749994],[42.58378906250002,11.496777343749997],[43.04277343750002,11.588476562499991],[43.24599609375002,11.499804687499989]]]},"properties":{"name":"Djibouti","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-61.281689453125,15.2490234375],[-61.37539062499999,15.227294921875],[-61.45810546874999,15.633105468750003],[-61.277246093749994,15.526708984374991],[-61.281689453125,15.2490234375]]]},"properties":{"name":"Dominica","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[11.361425781250006,54.891650390625045],[11.739550781250017,54.80742187500002],[11.765917968750074,54.67944335937506],[11.457421875000023,54.628857421874955],[11.035546875000051,54.77309570312505],[11.058593750000028,54.940576171874966],[11.361425781250006,54.891650390625045]]],[[[12.549218750000051,54.96577148437504],[12.11884765625004,54.91440429687506],[12.274023437500034,55.064111328124994],[12.549218750000051,54.96577148437504]]],[[[10.061230468750068,54.88637695312502],[9.80625,54.90600585937503],[9.78125,55.06904296875001],[10.061230468750068,54.88637695312502]]],[[[10.734082031250011,54.750732421875],[10.621679687500006,54.851416015625006],[10.95107421875008,55.15620117187501],[10.734082031250011,54.750732421875]]],[[[15.087695312500017,55.021875],[14.684179687500063,55.10224609375004],[14.765332031250068,55.296728515625034],[15.132617187500017,55.14453125000003],[15.087695312500017,55.021875]]],[[[10.645117187500006,55.60981445312498],[10.785253906250034,55.13339843749998],[10.44277343750008,55.04877929687498],[9.988769531250028,55.163183593750006],[9.860644531250045,55.515478515625034],[10.645117187500006,55.60981445312498]]],[[[12.665722656250068,55.596533203125006],[12.550878906250034,55.55625],[12.59921875,55.68022460937502],[12.665722656250068,55.596533203125006]]],[[[12.56875,55.785058593749966],[12.215039062500011,55.46650390624998],[12.413085937500028,55.28618164062502],[12.089941406250006,55.18813476562505],[12.050390625000034,54.81533203125002],[11.8623046875,54.77260742187502],[11.653808593750057,55.186914062499966],[11.286328125000068,55.20444335937498],[10.978906250000051,55.721533203125006],[11.322265625000028,55.752539062500006],[11.627734375000074,55.95688476562498],[11.819726562500023,55.69765625000002],[11.86640625000004,55.968164062499966],[12.218945312499983,56.11865234374997],[12.578710937500006,56.06406250000006],[12.56875,55.785058593749966]]],[[[11.052148437500051,57.25253906250006],[10.873828125000045,57.26225585937499],[11.174511718750011,57.322900390624994],[11.052148437500051,57.25253906250006]]],[[[9.739746093750028,54.82553710937498],[8.670312500000023,54.903417968750034],[8.61591796875004,55.41821289062503],[8.132128906250074,55.59980468749998],[8.16396484375008,56.60688476562498],[8.671679687500045,56.49565429687496],[8.88808593750008,56.73505859374998],[9.06708984375004,56.79384765625005],[9.196386718750006,56.70166015625],[9.2548828125,57.01171875000003],[8.992773437499977,57.01611328125003],[8.771972656250028,56.72529296875004],[8.468359375,56.66455078125],[8.284082031250023,56.85234374999999],[8.618554687500051,57.11127929687498],[9.43359375,57.17431640625003],[9.96230468750008,57.580957031249994],[10.609960937500034,57.73691406249998],[10.282714843750057,56.620507812499994],[10.926171875000051,56.44326171875002],[10.753417968750028,56.24199218749999],[10.31875,56.212890625],[10.18300781250008,55.86518554687504],[9.903710937500023,55.84282226562502],[10.02363281250004,55.76142578125004],[9.591113281250017,55.49321289062502],[9.670996093750063,55.26640624999999],[9.453710937500006,55.03955078125006],[9.732324218750023,54.96801757812506],[9.739746093750028,54.82553710937498]]]]},"properties":{"name":"Denmark","childNum":10,"cp":[10.2768332,56.1773879]}},{"geometry":{"type":"Polygon","coordinates":[[[-71.647216796875,19.195947265624994],[-71.746484375,19.285839843749997],[-71.71147460937499,19.486572265625],[-71.75742187499999,19.688183593749997],[-71.779248046875,19.718164062499994],[-71.6673828125,19.8486328125],[-70.95415039062499,19.913964843749994],[-70.19384765625,19.63803710937499],[-69.95683593749999,19.671875],[-69.739404296875,19.29921875],[-69.23247070312499,19.27182617187499],[-69.60595703125,19.206494140624997],[-69.62363281249999,19.117822265624994],[-68.684765625,18.90478515625],[-68.33916015624999,18.611523437499997],[-68.68740234375,18.21494140624999],[-68.9349609375,18.408007812500003],[-69.27451171874999,18.43984375],[-69.770654296875,18.443554687499997],[-70.479931640625,18.21728515625],[-70.644677734375,18.336230468750003],[-71.02783203125,18.273193359375],[-71.43896484375,17.63559570312499],[-71.63173828125,17.773632812499997],[-71.768310546875,18.03916015624999],[-71.76376953124999,18.20395507812499],[-71.737255859375,18.270800781250003],[-71.7619140625,18.34130859375],[-71.87255859375,18.416210937499997],[-71.940380859375,18.512597656249994],[-72.000390625,18.597900390625],[-71.98686523437499,18.6103515625],[-71.86650390624999,18.614160156249994],[-71.74321289062499,18.73291015625],[-71.72705078125,18.80322265625],[-71.733642578125,18.856396484374997],[-71.80712890625,18.987011718749997],[-71.647216796875,19.195947265624994]]]},"properties":{"name":"Dominican Rep.","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[8.207617187500006,36.518945312499994],[8.348730468750006,36.36796875],[8.318066406250011,35.654931640624994],[8.31640625,35.403125],[8.35986328125,35.299609375],[8.394238281250011,35.203857421875],[8.312109375,35.084619140624994],[8.27685546875,34.9794921875],[8.24560546875,34.73408203125],[7.513867187500011,34.080517578125],[7.534375,33.717919921874994],[7.877246093750017,33.172119140625],[8.1125,33.055322265624994],[8.333398437500023,32.543603515624994],[9.044042968750006,32.07236328125],[9.160253906250006,31.621337890625],[9.224023437500023,31.373681640624994],[9.51875,30.229394531249994],[9.310253906250011,30.115234375],[9.805273437500006,29.176953125],[9.916015625,27.785693359374996],[9.74755859375,27.330859375],[9.883203125000023,26.630810546874997],[9.491406250000011,26.333740234375],[9.4482421875,26.067138671875],[10.000683593750011,25.332080078125003],[10.255859375,24.591015625],[10.395898437500023,24.485595703125],[10.686132812500006,24.55136718749999],[11.507617187500017,24.314355468749994],[11.967871093750006,23.517871093750003],[7.481738281250017,20.873095703125003],[5.836621093750011,19.479150390624994],[4.227636718750006,19.142773437499997],[3.3564453125,18.986621093750003],[3.119726562500006,19.103173828124994],[3.255859375,19.4109375],[3.130273437500023,19.85019531249999],[1.685449218750023,20.378369140624997],[1.610644531250017,20.555566406249994],[1.165722656250011,20.817431640625003],[1.1455078125,21.102246093749997],[-1.947900390624994,23.124804687500003],[-4.822607421874977,24.99560546875],[-8.683349609375,27.2859375],[-8.683349609375,27.656445312499997],[-8.683349609375,27.900390625],[-8.659912109375,28.718603515625],[-7.485742187499994,29.392236328124994],[-7.427685546874983,29.425],[-7.142431640624977,29.619580078124997],[-6.855566406249977,29.601611328124996],[-6.755126953125,29.583837890625],[-6.635351562499977,29.568798828124997],[-6.597753906249977,29.578955078125],[-6.520556640624989,29.659863281249997],[-6.479736328125,29.820361328124996],[-6.00429687499999,29.83125],[-5.448779296874989,29.956933593749994],[-5.293652343749983,30.058642578124996],[-5.180126953124983,30.166162109374994],[-4.96826171875,30.465380859374996],[-4.778515624999983,30.552392578124994],[-4.529150390624977,30.625537109374996],[-4.322851562499977,30.698876953124994],[-4.148779296874977,30.8095703125],[-3.626904296874983,31.000927734374997],[-3.833398437499994,31.197802734374996],[-3.837109374999983,31.512353515624994],[-3.768164062499977,31.68955078125],[-3.700244140624989,31.700097656249994],[-3.604589843749977,31.686767578125],[-3.439794921874977,31.704541015624997],[-3.017382812499989,31.834277343749996],[-2.988232421874983,31.87421875],[-2.930859374999983,32.042529296874996],[-2.863427734374994,32.07470703125],[-1.275341796874983,32.089013671874994],[-1.16259765625,32.399169921875],[-1.111035156249983,32.552294921874996],[-1.188232421875,32.60849609375],[-1.29638671875,32.675683593749994],[-1.352148437499977,32.703369140625],[-1.45,32.784814453124994],[-1.510009765625,32.87763671875],[-1.550732421874983,33.073583984375],[-1.67919921875,33.318652343749996],[-1.795605468749983,34.751904296875],[-2.131787109374983,34.970849609374994],[-2.190771484374977,35.02978515625],[-2.219628906249994,35.10419921875],[-1.673632812499989,35.18310546875],[-0.426123046874977,35.8615234375],[-0.048242187499994,35.8328125],[0.312207031250011,36.162353515625],[0.9716796875,36.4439453125],[2.593359375,36.60068359375],[2.972851562500011,36.784472656249996],[3.779003906250011,36.89619140625],[4.758105468750017,36.896337890625],[5.29541015625,36.648242187499996],[6.486523437500011,37.085742187499996],[6.927539062500017,36.91943359375],[7.238476562500011,36.968505859375],[7.204296875000011,37.0923828125],[7.910449218750017,36.856347656249994],[8.576562500000023,36.93720703125],[8.601269531250011,36.833935546875],[8.207617187500006,36.518945312499994]]]},"properties":{"name":"Algeria","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-80.131591796875,-2.973144531249957],[-80.27294921875003,-2.995898437499974],[-80.22368164062502,-2.753125],[-80.08076171874995,-2.668847656249966],[-79.90903320312495,-2.725585937499972],[-80.131591796875,-2.973144531249957]]],[[[-90.42392578125,-1.339941406250034],[-90.51953124999994,-1.299121093749974],[-90.47719726562494,-1.22099609374996],[-90.42392578125,-1.339941406250034]]],[[[-89.41889648437498,-0.911035156249966],[-89.60859374999998,-0.888574218750009],[-89.28784179687503,-0.689843750000023],[-89.41889648437498,-0.911035156249966]]],[[[-90.33486328125,-0.771582031249977],[-90.54213867187502,-0.676464843749955],[-90.53168945312493,-0.581445312499966],[-90.26938476562498,-0.48466796874996],[-90.19272460937498,-0.658789062500006],[-90.33486328125,-0.771582031249977]]],[[[-91.42597656249995,-0.460839843749994],[-91.61074218749994,-0.44394531250002],[-91.64667968749998,-0.284472656249946],[-91.46015625000001,-0.255664062500031],[-91.42597656249995,-0.460839843749994]]],[[[-90.57392578124993,-0.333984375],[-90.8677734375,-0.271386718750037],[-90.78037109374998,-0.160449218749989],[-90.57392578124993,-0.333984375]]],[[[-91.27216796874998,0.025146484374986],[-90.799658203125,-0.752050781249991],[-90.90551757812497,-0.94052734375002],[-91.13105468750001,-1.019628906249977],[-91.41904296874998,-0.996679687500006],[-91.49541015624999,-0.860937499999977],[-91.120947265625,-0.559082031250028],[-91.36918945312493,-0.287207031249977],[-91.42885742187502,-0.023388671874955],[-91.59682617187497,0.002099609374994],[-91.36137695312496,0.125830078124977],[-91.27216796874998,0.025146484374986]]],[[[-78.90922851562502,1.252783203124977],[-78.99169921875003,1.293212890625043],[-78.89980468749997,1.359765625],[-78.90922851562502,1.252783203124977]]],[[[-75.28447265624999,-0.10654296875002],[-75.62626953124999,-0.122851562499974],[-75.63203125000001,-0.157617187500037],[-75.56059570312502,-0.200097656249994],[-75.49106445312498,-0.24833984374996],[-75.42470703124997,-0.408886718749983],[-75.259375,-0.59013671874996],[-75.24960937499998,-0.951855468750026],[-75.34819335937499,-0.966796874999957],[-75.38012695312503,-0.94023437499996],[-75.40805664062503,-0.92431640625],[-75.42041015624997,-0.962207031250003],[-75.570556640625,-1.53125],[-76.08979492187501,-2.133105468749974],[-76.6791015625,-2.562597656249991],[-77.860595703125,-2.981640625000011],[-78.240380859375,-3.472558593750009],[-78.345361328125,-3.397363281249966],[-78.64799804687499,-4.248144531250006],[-78.68603515625003,-4.562402343749994],[-78.86152343749998,-4.665039062499943],[-78.90761718749997,-4.714453124999977],[-78.92578125,-4.770703124999983],[-78.91420898437497,-4.818652343749974],[-78.919189453125,-4.858398437499986],[-78.97539062499999,-4.873242187499997],[-78.99526367187497,-4.908007812499974],[-79.03330078124998,-4.96914062499999],[-79.07626953125003,-4.990625],[-79.18666992187497,-4.958203124999983],[-79.26811523437493,-4.957617187499949],[-79.33095703124997,-4.92783203125002],[-79.39941406249997,-4.840039062499983],[-79.45576171874998,-4.766210937499949],[-79.50190429687495,-4.670605468750011],[-79.51616210937493,-4.539160156249963],[-79.57768554687496,-4.50058593750002],[-79.638525390625,-4.454882812500031],[-79.71098632812502,-4.467578124999946],[-79.79726562500002,-4.47636718749996],[-79.8451171875,-4.445898437499977],[-79.962890625,-4.390332031250026],[-80.06352539062499,-4.327539062500023],[-80.13955078125002,-4.296093750000011],[-80.19746093750001,-4.311035156249943],[-80.293359375,-4.416796875],[-80.38349609374998,-4.46367187499996],[-80.424169921875,-4.461425781250028],[-80.47856445312499,-4.430078125000037],[-80.48847656249995,-4.393652343749991],[-80.44384765625003,-4.335839843750023],[-80.35288085937495,-4.208496093750014],[-80.453759765625,-4.205175781249963],[-80.48847656249995,-4.165527343749972],[-80.49345703124999,-4.119140625000014],[-80.510009765625,-4.06953125000004],[-80.49013671874994,-4.010058593750003],[-80.43720703125001,-3.978613281249991],[-80.30327148437499,-4.005078124999969],[-80.26689453124993,-3.948828124999963],[-80.23051757812499,-3.924023437499969],[-80.19414062499996,-3.905859375],[-80.24375,-3.576757812500006],[-80.32465820312498,-3.387890625],[-79.96333007812501,-3.15771484375],[-79.72988281249997,-2.579101562499972],[-79.842138671875,-2.0673828125],[-79.92558593749996,-2.548535156249969],[-80.03017578124994,-2.556738281249949],[-80.00664062499993,-2.353808593750003],[-80.28471679687502,-2.706738281249955],[-80.93217773437493,-2.269140624999977],[-80.76059570312498,-1.934570312500028],[-80.90239257812499,-1.078906249999974],[-80.55390624999998,-0.847949218749989],[-80.45546875,-0.585449218749986],[-80.282373046875,-0.620507812500023],[-80.48227539062503,-0.368261718749963],[-80.046142578125,0.155371093750048],[-80.08828124999997,0.78476562500002],[-78.89965820312503,1.20625],[-78.85966796874996,1.455371093750031],[-78.1806640625,0.968554687499974],[-77.702880859375,0.837841796874997],[-77.46767578124997,0.636523437500017],[-77.396337890625,0.393896484374963],[-76.49462890624997,0.23544921875002],[-76.27060546874998,0.439404296874997],[-75.77666015624999,0.08925781249998],[-75.28447265624999,-0.10654296875002]]]]},"properties":{"name":"Ecuador","childNum":9}},{"geometry":{"type":"Polygon","coordinates":[[[34.24531250000001,31.208300781249996],[34.904296875,29.47734375],[34.736425781250006,29.27060546875],[34.39970703125002,28.01601562499999],[34.22011718750002,27.764306640624994],[33.76025390625,28.04765625],[33.24775390625001,28.567724609375],[32.56572265625002,29.973974609375],[32.35976562500002,29.630664062499996],[32.89824218750002,28.565234375],[33.54707031250001,27.898144531249997],[33.5498046875,27.607373046874997],[33.84931640625001,27.184912109375],[33.959082031250006,26.6490234375],[35.19414062500002,24.475146484375003],[35.78388671875001,23.937792968750003],[35.54082031250002,23.920654296875],[35.50439453125,23.779296875],[35.697851562500006,22.946191406249994],[36.22968750000001,22.628808593749994],[36.87138671875002,21.996728515624994],[31.434472656250023,21.995849609375],[31.486132812500017,22.14780273437499],[31.400292968750023,22.202441406250003],[31.260644531250023,22.00229492187499],[31.092675781250023,21.994873046875],[28.036425781250017,21.995361328125],[24.980273437500017,21.995849609375],[24.980273437500017,25.5888671875],[24.980273437500017,29.181884765625],[24.703222656250006,30.201074218749994],[24.96142578125,30.678515625],[24.85273437500001,31.334814453125],[25.150488281250006,31.654980468749997],[25.382226562500023,31.51279296875],[25.89326171875001,31.620898437499996],[27.248046875,31.377880859374997],[27.5400390625,31.212695312499996],[28.51484375000001,31.050439453124994],[29.072070312500017,30.830273437499997],[29.929785156250006,31.227490234374997],[30.22265625,31.2583984375],[30.395117187500006,31.4576171875],[30.92353515625001,31.566845703124997],[30.56298828125,31.4169921875],[31.001757812500017,31.462792968749994],[31.082910156250023,31.603320312499996],[31.5244140625,31.458251953125],[31.888964843750017,31.54140625],[32.13603515625002,31.341064453125],[31.8921875,31.482470703124996],[31.77109375,31.292578125],[32.10175781250001,31.092822265624996],[32.281835937500006,31.200878906249997],[32.21621093750002,31.29375],[32.60332031250002,31.06875],[33.66650390625,31.130419921874996],[34.19814453125002,31.322607421875],[34.24531250000001,31.208300781249996]]]},"properties":{"name":"Egypt","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[40.141210937500006,15.696142578125034],[40.399023437500006,15.579882812500045],[39.975195312500006,15.612451171875023],[39.94746093750004,15.696142578125034],[40.07050781250004,15.676611328125034],[39.93994140625003,15.744531250000023],[39.9567382812501,15.889404296875057],[40.141210937500006,15.696142578125034]]],[[[40.07646484375002,16.082421875000023],[40.11005859375004,15.985742187500051],[39.99609375000003,16.04267578125001],[40.07646484375002,16.082421875000023]]],[[[40.938574218750006,13.983105468749997],[40.82011718750002,14.111669921874991],[40.22148437500002,14.431152343749972],[39.531835937500006,14.53671875],[39.198046875000074,14.479394531250037],[39.1354492187501,14.581884765625034],[39.07421874999997,14.628222656249974],[39.02382812499999,14.628222656249974],[38.99570312500006,14.586865234374983],[38.81201171875003,14.482324218750009],[38.50439453124997,14.42441406250002],[38.43144531250002,14.428613281249994],[38.221484375000074,14.649658203124986],[38.002539062500006,14.737109375000045],[37.94345703125006,14.810546875],[37.884179687499994,14.852294921874972],[37.82031250000003,14.708496093749986],[37.70839843750005,14.45722656250004],[37.64843750000003,14.32255859375006],[37.571191406249994,14.149072265624966],[37.546777343749994,14.143847656249974],[37.507226562499994,14.156396484375037],[37.257226562499994,14.453759765625051],[37.024511718750006,14.271972656250057],[36.81191406250005,14.315039062500034],[36.67910156250005,14.307568359375026],[36.542382812499994,14.25820312499999],[36.52431640625005,14.256835937499986],[36.492285156250006,14.544335937500023],[36.470800781250006,14.736474609375009],[36.448144531249994,14.940087890625009],[36.42675781249997,15.132080078125043],[36.566015625,15.362109375],[36.9137695312501,16.296191406250045],[36.887792968750006,16.624658203124994],[36.9787109375001,16.800585937500045],[36.9757812500001,16.866552734375006],[36.99521484375006,17.020556640625017],[37.00898437500004,17.058886718750017],[37.06152343749997,17.061279296875057],[37.16953125000006,17.04140625],[37.41103515625005,17.061718749999955],[37.452929687500074,17.108691406250017],[37.51015625,17.28813476562499],[37.54746093750006,17.32412109375005],[37.78242187500004,17.458007812500057],[38.253515625,17.584765625000017],[38.26728515625004,17.616699218750057],[38.28984375000002,17.637011718750017],[38.34736328125004,17.68359375],[38.37373046875004,17.717333984375045],[38.42246093750006,17.823925781249983],[38.60947265625006,18.00507812500004],[39.03447265625002,17.085546875000034],[39.298925781250006,15.921093750000011],[39.78554687499999,15.124853515624991],[39.86376953124997,15.470312500000034],[40.20410156250003,15.014111328124983],[41.17646484375004,14.620312500000054],[41.65820312499997,13.983056640624994],[42.24511718749997,13.587646484374986],[42.39931640625005,13.212597656249969],[42.522851562499994,13.221484375],[42.796191406250074,12.864257812500057],[42.96953125000002,12.808349609375028],[42.99902343750003,12.899511718750048],[43.08291015625005,12.824609374999966],[43.11669921874997,12.708593749999963],[43.00566406250002,12.66230468750004],[42.88330078124997,12.621289062500026],[42.86591796875004,12.622802734374986],[42.82529296875006,12.569335937500014],[42.767480468749994,12.422851562500014],[42.70371093750006,12.380322265625054],[42.479394531249994,12.513623046875026],[42.45,12.521337890625006],[42.40859375,12.494384765625014],[42.37851562500006,12.46640625],[42.28994140625005,12.570214843750009],[42.225,12.661962890624963],[42.13427734374997,12.771435546874969],[41.95214843749997,12.88232421875],[41.85957031250004,13.025878906250028],[41.76503906250005,13.183935546874991],[41.362890625,13.499804687500031],[40.938574218750006,13.983105468749997]]]]},"properties":{"name":"Eritrea","childNum":3}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-17.887939453125,27.809570312500057],[-17.984765625000023,27.646386718750023],[-18.160546874999937,27.76147460937503],[-17.887939453125,27.809570312500057]]],[[[-15.400585937499955,28.147363281250023],[-15.436767578124972,27.810693359375023],[-15.71030273437492,27.784082031250023],[-15.809472656249966,27.994482421874977],[-15.682763671874994,28.15405273437497],[-15.400585937499955,28.147363281250023]]],[[[-17.184667968749977,28.02197265624997],[-17.324902343749955,28.11767578125003],[-17.25859375,28.203173828125045],[-17.103759765624943,28.111132812500017],[-17.184667968749977,28.02197265624997]]],[[[-16.33447265624997,28.37993164062499],[-16.41821289062497,28.15141601562496],[-16.65800781249999,28.007177734374977],[-16.905322265625017,28.33959960937503],[-16.12363281249992,28.57597656249996],[-16.33447265624997,28.37993164062499]]],[[[-14.196777343749943,28.169287109375063],[-14.332617187500006,28.056005859374977],[-14.49179687499992,28.100927734374977],[-14.231982421875017,28.21582031250003],[-14.003369140624983,28.706689453125023],[-13.85722656249996,28.73803710937503],[-13.928027343749989,28.25346679687499],[-14.196777343749943,28.169287109375063]]],[[[-17.83427734374999,28.49321289062496],[-18.00078124999999,28.758251953124955],[-17.928808593749977,28.844580078125063],[-17.7265625,28.724462890625006],[-17.83427734374999,28.49321289062496]]],[[[-13.715966796874966,28.911230468750034],[-13.85991210937496,28.869091796874983],[-13.823632812499966,29.013330078124966],[-13.463574218749955,29.237207031250023],[-13.477929687499966,29.00659179687503],[-13.715966796874966,28.911230468750034]]],[[[1.593945312500068,38.672070312499955],[1.40576171875,38.670996093750006],[1.436328125000017,38.768212890624994],[1.593945312500068,38.672070312499955]]],[[[1.445214843750051,38.91870117187503],[1.223339843750068,38.90385742187502],[1.3486328125,39.080810546875],[1.564453125,39.12104492187504],[1.623632812499977,39.03881835937497],[1.445214843750051,38.91870117187503]]],[[[3.145312500000017,39.79008789062499],[3.461816406250023,39.69775390625003],[3.072851562500006,39.30126953124997],[2.799804687500057,39.38505859374999],[2.700585937500023,39.54213867187502],[2.49951171875,39.47788085937498],[2.37001953125008,39.57207031249999],[3.15869140625,39.97050781249999],[3.145312500000017,39.79008789062499]]],[[[4.293652343750011,39.84184570312499],[3.8671875,39.958740234375],[3.853417968750051,40.06303710937502],[4.22578125000004,40.032373046874966],[4.293652343750011,39.84184570312499]]],[[[-1.794042968749949,43.407324218750006],[-1.410693359374932,43.240087890625034],[-1.460839843749937,43.05175781250006],[-1.300048828124943,43.10097656250002],[-0.586425781249943,42.798974609374966],[0.631640625000045,42.689599609374994],[0.696875,42.84511718750005],[1.428320312499977,42.59589843749998],[1.414843750000074,42.54838867187499],[1.448828124999977,42.43745117187504],[1.534082031250051,42.44169921875002],[1.7060546875,42.50332031250005],[1.859765625000051,42.457080078125045],[1.927929687500068,42.42631835937499],[2.032714843750028,42.353515625],[3.21142578125,42.43115234375],[3.248046875,41.94423828125002],[3.0048828125,41.76743164062506],[2.082617187500063,41.287402343750045],[1.032910156250068,41.06206054687496],[0.714648437500074,40.822851562500006],[0.891113281250057,40.72236328125004],[0.59609375000008,40.614501953125],[-0.327001953124949,39.519873046875006],[-0.204931640624949,39.062597656250034],[0.20156250000008,38.75917968750002],[-0.520800781249989,38.317285156249966],[-0.814648437500011,37.76992187500002],[-0.721582031249966,37.63105468749998],[-1.327539062499937,37.561132812500034],[-1.640966796874949,37.38696289062497],[-2.111523437499983,36.77666015624999],[-4.366845703124994,36.71811523437506],[-4.67412109374996,36.506445312500006],[-5.171484374999949,36.423779296874955],[-5.3609375,36.134912109374994],[-5.62548828125,36.02592773437499],[-6.040673828124937,36.18842773437498],[-6.38413085937492,36.63701171874996],[-6.216796875000028,36.91357421875],[-6.396191406249983,36.831640625],[-6.863769531250028,37.27890625],[-7.406152343749937,37.17944335937497],[-7.44394531249992,37.72827148437497],[-6.957568359374932,38.18789062499999],[-7.106396484374983,38.181005859375006],[-7.343017578124943,38.45742187500002],[-6.997949218749994,39.05644531250002],[-7.53569335937496,39.66157226562501],[-7.117675781249972,39.681689453125045],[-6.975390624999932,39.79838867187502],[-6.896093749999949,40.02182617187506],[-7.032617187499966,40.16791992187498],[-6.8101562499999,40.343115234375034],[-6.928466796874972,41.009130859375006],[-6.2125,41.53203125],[-6.542187499999955,41.672509765624994],[-6.61826171874992,41.9423828125],[-7.147119140625023,41.98115234374998],[-7.40361328124996,41.833691406249955],[-8.152490234374937,41.81196289062498],[-8.266064453124983,42.13740234375001],[-8.777148437500017,41.941064453124994],[-8.887207031249943,42.105273437500045],[-8.690917968749943,42.274169921875],[-8.815820312499966,42.285253906250034],[-8.730029296874989,42.411718750000034],[-8.8115234375,42.64033203124998],[-9.033105468750023,42.593847656250006],[-8.927197265624926,42.79858398437497],[-9.235205078124977,42.97690429687498],[-9.178076171874977,43.17402343749998],[-8.248925781249937,43.43940429687498],[-8.256738281249937,43.57988281249999],[-8.004687499999932,43.69438476562496],[-7.503613281249983,43.73994140625001],[-7.060986328124955,43.55395507812503],[-5.846679687499943,43.645068359375045],[-4.52304687499992,43.41572265625004],[-3.604638671874966,43.51948242187504],[-3.045605468749926,43.37158203125],[-2.875048828125017,43.454443359375006],[-2.337109374999926,43.32802734375002],[-1.794042968749949,43.407324218750006]]]]},"properties":{"name":"Spain","childNum":12,"cp":[-2.9366964,40.3438963]}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[22.61738281250004,58.62124023437502],[23.323242187500057,58.45083007812502],[22.730273437500045,58.23066406250001],[22.371679687499977,58.217138671875006],[21.996875,57.93134765624998],[22.187695312500068,58.15434570312502],[21.88212890624999,58.262353515624994],[21.862304687500057,58.497167968750034],[22.61738281250004,58.62124023437502]]],[[[23.343554687500017,58.550341796875045],[23.10908203125004,58.65922851562502],[23.332812500000045,58.648583984374994],[23.343554687500017,58.550341796875045]]],[[[22.923730468750023,58.826904296875],[22.54218750000001,58.68999023437499],[22.411035156250023,58.863378906250034],[22.05625,58.94360351562506],[22.6494140625,59.08710937499998],[22.90986328125004,58.99121093749997],[22.923730468750023,58.826904296875]]],[[[28.0125,59.484277343749966],[28.15107421875004,59.374414062499966],[27.434179687500006,58.787255859374994],[27.502441406250057,58.221337890624994],[27.778515625000068,57.87070312500006],[27.542089843750063,57.799414062500006],[27.4,57.66679687499999],[27.35195312500005,57.528125],[26.96601562500001,57.60913085937506],[26.532617187499994,57.53100585937503],[26.29804687500001,57.60107421875],[25.66015625,57.920166015625],[25.27265625000001,58.009375],[25.11103515625004,58.06342773437498],[24.45888671875005,57.907861328124994],[24.3625,57.86616210937501],[24.322558593750074,57.87060546875003],[24.529101562500045,58.35424804687497],[24.114843750000034,58.26611328125006],[23.767578125000057,58.36083984374997],[23.50927734375003,58.65854492187498],[23.680761718750063,58.787158203125074],[23.43203125,58.920654296875],[23.494433593750017,59.19565429687498],[24.083398437500023,59.29189453125005],[24.38037109375003,59.47265625],[25.44375,59.52114257812502],[25.50927734374997,59.63901367187506],[26.974707031250006,59.450634765624955],[28.0125,59.484277343749966]]]]},"properties":{"name":"Estonia","childNum":4}},{"geometry":{"type":"Polygon","coordinates":[[[38.43144531250002,14.428613281249994],[38.50439453125,14.424414062499991],[38.81201171875,14.482324218749994],[38.995703125,14.586865234374997],[39.02382812500002,14.628222656250003],[39.07421875,14.628222656250003],[39.13544921875001,14.581884765624991],[39.19804687500002,14.479394531249994],[39.531835937500006,14.53671875],[40.22148437500002,14.43115234375],[40.82011718750002,14.111669921874991],[40.938574218750006,13.983105468749997],[41.362890625,13.499804687500003],[41.76503906250002,13.183935546874991],[41.85957031250001,13.02587890625],[41.9521484375,12.88232421875],[42.13427734375,12.771435546874997],[42.225,12.661962890624991],[42.28994140625002,12.570214843749994],[42.378515625,12.46640625],[41.79267578125001,11.68603515625],[41.79824218750002,10.98046875],[42.557714843750006,11.080761718749997],[42.92275390625002,10.999316406249989],[42.65644531250001,10.6],[42.84160156250002,10.203076171874997],[43.181640625,9.879980468749991],[43.482519531250006,9.379492187499991],[43.98378906250002,9.008837890624989],[46.97822265625001,7.9970703125],[47.97822265625001,7.9970703125],[44.940527343750006,4.912011718749994],[43.988867187500006,4.950537109374991],[43.58349609375,4.85498046875],[43.12568359375001,4.644482421874997],[42.85664062500001,4.32421875],[42.02412109375001,4.137939453125],[41.91533203125002,4.031298828124989],[41.88398437500001,3.977734375],[41.73769531250002,3.979052734374989],[41.48193359375,3.96328125],[41.37246093750002,3.946191406249994],[41.22089843750001,3.943554687499997],[41.02080078125002,4.057470703124991],[40.765234375,4.27304687499999],[39.84218750000002,3.851464843749994],[39.79033203125002,3.754248046874991],[39.65751953125002,3.577832031249997],[39.49443359375002,3.456103515624989],[38.608007812500006,3.60009765625],[38.45156250000002,3.604833984374991],[38.22529296875001,3.618994140624991],[38.08613281250001,3.64882812499999],[37.15458984375002,4.254541015624994],[36.90556640625002,4.411474609374991],[36.02197265625,4.468115234374991],[35.76308593750002,4.808007812499994],[35.75615234375002,4.950488281249989],[35.779296875,5.105566406249991],[35.80029296875,5.156933593749997],[35.74501953125002,5.343994140625],[35.325292968750006,5.364892578124994],[35.2646484375,5.412060546874997],[35.26386718750001,5.457910156249994],[35.26835937500002,5.492285156249991],[34.98359375000001,5.858300781249994],[34.71064453125001,6.660302734374994],[34.06425781250002,7.225732421874994],[33.902441406250006,7.509521484375],[32.99892578125002,7.899511718749991],[33.28105468750002,8.437255859375],[33.95332031250001,8.443505859374994],[34.07275390625,8.545263671874991],[34.078125,9.461523437499991],[34.31123046875001,10.190869140624997],[34.34394531250001,10.658642578124997],[34.571875,10.880175781249989],[34.77128906250002,10.746191406249991],[34.93144531250002,10.864794921874989],[35.1123046875,11.816552734374994],[35.67021484375002,12.623730468749997],[36.12519531250001,12.75703125],[36.52431640625002,14.2568359375],[36.54238281250002,14.25820312499999],[36.67910156250002,14.307568359374997],[36.81191406250002,14.315039062499991],[37.024511718750006,14.27197265625],[37.25722656250002,14.453759765624994],[37.50722656250002,14.156396484374994],[37.54677734375002,14.143847656250003],[37.57119140625002,14.149072265624994],[37.6484375,14.322558593750003],[37.70839843750002,14.457226562499997],[37.8203125,14.70849609375],[37.88417968750002,14.852294921875],[37.943457031250006,14.810546875],[38.002539062500006,14.737109375],[38.22148437500002,14.649658203125],[38.43144531250002,14.428613281249994]]]},"properties":{"name":"Ethiopia","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[22.17509765624999,60.370751953124994],[22.41552734375003,60.30336914062505],[22.36054687500004,60.165576171875045],[22.07714843750003,60.286328124999955],[22.17509765624999,60.370751953124994]]],[[[21.450878906250068,60.529589843750045],[21.3,60.47978515625002],[21.224707031250006,60.62060546875003],[21.450878906250068,60.529589843750045]]],[[[21.2177734375,63.241308593750034],[21.415625,63.19736328125006],[21.25341796875,63.152001953124966],[21.08388671875008,63.277539062499955],[21.2177734375,63.241308593750034]]],[[[24.848242187500034,64.99101562499999],[24.576562500000023,65.04287109375],[24.970605468750023,65.05532226562502],[24.848242187500034,64.99101562499999]]],[[[28.96582031250003,69.02197265625],[28.414062500000057,68.90415039062506],[28.77285156250005,68.84003906249995],[28.470703125000057,68.48837890625],[28.685156250000034,68.189794921875],[29.343847656250006,68.06186523437506],[29.988085937500017,67.66826171874999],[29.066210937500045,66.89174804687497],[30.102734375000097,65.72626953125004],[29.715917968750063,65.62456054687502],[29.608007812500006,65.248681640625],[29.826953125000017,65.14506835937502],[29.60419921875004,64.968408203125],[30.072851562500063,64.76503906250005],[30.04189453125005,64.44335937499997],[30.513769531250006,64.2],[30.50390625000003,64.02060546875],[29.991503906250074,63.73515625000002],[31.180859375000097,63.208300781250074],[31.533984375000017,62.885400390624994],[31.18671875000004,62.48139648437504],[29.69013671875004,61.54609375000001],[27.797656250000074,60.53613281250003],[26.53466796874997,60.412890625000074],[26.56933593750003,60.62456054687502],[26.377734375000074,60.42407226562503],[25.955957031250023,60.474218750000034],[26.03583984375004,60.34150390625001],[25.75800781250004,60.26752929687504],[25.65644531250004,60.33320312499998],[24.44560546874999,60.021289062500045],[23.46357421875004,59.986230468749994],[23.021289062500074,59.81601562500006],[23.19843750000001,60.02182617187498],[22.911718750000063,60.20971679687497],[22.749804687500017,60.057275390624994],[22.462695312500045,60.029199218749966],[22.5849609375,60.380566406249955],[21.436035156250057,60.596386718749955],[21.605957031250057,61.59155273437503],[21.255957031250063,61.98964843750005],[21.143847656250045,62.73999023437506],[21.650976562500063,63.039306640625],[21.545117187499983,63.204296874999955],[22.31972656250005,63.310449218749994],[22.532324218750034,63.647851562499994],[23.598925781250074,64.04091796874997],[24.557910156250045,64.801025390625],[25.288183593750063,64.8603515625],[25.34785156250004,65.47924804687497],[24.674902343750006,65.67070312499999],[24.628027343750034,65.85917968750002],[24.15546875000004,65.80527343750006],[23.700292968750034,66.25263671874998],[23.988574218750045,66.81054687500003],[23.64150390625005,67.12939453124997],[23.733593750000068,67.42290039062499],[23.454882812500045,67.46025390625007],[23.63886718750004,67.95439453125002],[22.854101562500034,68.36733398437502],[21.99746093750005,68.52060546874998],[20.622167968750006,69.036865234375],[21.065722656250017,69.04174804687503],[21.06611328125001,69.21411132812497],[21.59375,69.273583984375],[22.410937500000074,68.719873046875],[23.324023437500017,68.64897460937502],[23.85400390625,68.80590820312503],[24.94140625000003,68.59326171875006],[25.748339843750017,68.99013671875],[26.07246093750004,69.69155273437497],[26.525390625000057,69.91503906250003],[27.127539062500063,69.90649414062497],[27.747851562500045,70.06484375],[29.14160156250003,69.67143554687505],[29.33339843750005,69.47299804687503],[28.846289062500006,69.17690429687502],[28.96582031250003,69.02197265625]]]]},"properties":{"name":"Finland","childNum":5}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[178.48789062500018,-18.97412109375],[177.95869140624998,-19.121582031250014],[178.33427734375013,-18.93447265625001],[178.48789062500018,-18.97412109375]]],[[[179.34931640625015,-18.10234375000003],[179.25351562500018,-18.030566406249974],[179.30644531250013,-17.944042968750026],[179.34931640625015,-18.10234375000003]]],[[[178.28017578124994,-17.37197265625001],[178.59160156249996,-17.651464843750006],[178.66767578125004,-18.080859375],[177.95546875000005,-18.264062500000023],[177.32138671875,-18.077539062500037],[177.26396484375007,-17.86347656250004],[177.5044921875,-17.539550781250043],[177.81796875000012,-17.38847656249999],[178.28017578124994,-17.37197265625001]]],[[[180,-16.96308593750001],[179.89697265625003,-16.96406250000004],[180,-16.785742187500034],[180,-16.96308593750001]]],[[[-179.97490234374996,-16.92480468750003],[-180,-16.96298828124999],[-180,-16.907812500000034],[-180,-16.82431640624999],[-180,-16.78554687499999],[-179.86098632812502,-16.68828124999999],[-179.97490234374996,-16.92480468750003]]],[[[-179.92944335937503,-16.502832031250037],[-179.999951171875,-16.540039062499986],[-179.900927734375,-16.431542968749994],[-179.92944335937503,-16.502832031250037]]],[[[179.99921875000004,-16.168554687499977],[179.56416015625004,-16.636914062499997],[179.56816406249996,-16.747460937499966],[179.93037109375004,-16.51943359375005],[179.9279296875001,-16.74443359374996],[179.41933593750005,-16.80654296875001],[179.20234375000004,-16.71269531249999],[179.00683593750003,-16.90019531249999],[178.70664062500018,-16.97617187500002],[178.4974609375,-16.78789062500003],[178.58359375000012,-16.621875],[178.80507812499994,-16.631445312500034],[179.55175781250003,-16.249902343750023],[180,-16.15292968749999],[179.99921875000004,-16.168554687499977]]]]},"properties":{"name":"Fiji","childNum":7}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-61.01875,-51.7857421875],[-60.87597656250003,-51.79423828125004],[-60.94755859374996,-51.94628906250002],[-61.14501953125003,-51.83945312500001],[-61.01875,-51.7857421875]]],[[[-60.28623046874995,-51.461914062500014],[-59.38759765625002,-51.35996093750003],[-59.26806640625,-51.42753906250003],[-59.92138671874997,-51.969531250000045],[-60.246337890625,-51.98642578125003],[-60.35346679687498,-52.13994140625004],[-60.686376953125034,-52.18837890624996],[-60.96142578125003,-52.05732421874999],[-60.23847656249998,-51.771972656250036],[-60.58251953125,-51.71269531250004],[-60.24516601562493,-51.638867187500004],[-60.56845703124998,-51.357812499999945],[-60.28623046874995,-51.461914062500014]]],[[[-60.11171875000002,-51.39589843749998],[-60.275341796874955,-51.28056640625002],[-60.06982421875,-51.307910156249996],[-60.11171875000002,-51.39589843749998]]],[[[-58.85019531249995,-51.26992187499998],[-58.42583007812502,-51.32421875000003],[-58.508935546874994,-51.48359375],[-58.271582031250034,-51.57470703124999],[-58.25922851562501,-51.417089843750034],[-57.976513671874955,-51.384375],[-57.80849609375002,-51.51796875],[-57.96044921874997,-51.58320312500003],[-57.79179687499999,-51.63613281249998],[-58.68349609375002,-51.93623046875001],[-58.65278320312498,-52.09921875],[-59.19584960937496,-52.01767578125],[-59.06801757812502,-52.17304687500003],[-59.341503906249955,-52.19599609375],[-59.395654296874966,-52.308007812499994],[-59.64873046875002,-52.134375],[-59.57080078124994,-51.92539062500003],[-59.05952148437498,-51.685449218749994],[-59.09663085937498,-51.49140624999998],[-58.85019531249995,-51.26992187499998]]]]},"properties":{"name":"Falkland Is.","childNum":4}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[55.79736328125003,-21.33935546875003],[55.36269531250005,-21.27363281250004],[55.23281250000005,-21.05839843749999],[55.311328125000074,-20.90410156249999],[55.661914062500074,-20.90625],[55.8390625000001,-21.13857421874998],[55.79736328125003,-21.33935546875003]]],[[[45.180273437500006,-12.97675781250004],[45.069433593750006,-12.895605468750034],[45.09238281250006,-12.653027343749997],[45.22314453124997,-12.752148437500026],[45.180273437500006,-12.97675781250004]]],[[[-51.65253906249998,4.061279296874972],[-52.327880859375,3.18173828125002],[-52.58300781250003,2.528906249999977],[-52.90346679687502,2.211523437499977],[-53.76777343749998,2.354833984375048],[-54.13007812499998,2.121044921875026],[-54.43310546875,2.207519531250057],[-54.51508789062498,2.245458984374963],[-54.55048828125001,2.293066406249991],[-54.59194335937502,2.313769531250031],[-54.61625976562499,2.326757812500006],[-54.60473632812497,2.335791015624991],[-54.56840820312502,2.342578125000031],[-54.53593749999999,2.343310546875003],[-54.48554687500001,2.416113281250006],[-54.402001953124966,2.46152343750002],[-54.25673828125002,2.713720703124977],[-54.19550781249998,2.817871093750057],[-54.17070312499999,2.993603515624969],[-54.203125,3.138183593750028],[-54.18803710937499,3.178759765625031],[-54.063183593749955,3.353320312499989],[-54.00957031249993,3.448535156250017],[-54.03422851562499,3.62939453125],[-54.350732421874994,4.054101562500023],[-54.47968749999998,4.836523437499991],[-53.91992187499997,5.768994140624983],[-52.899316406249966,5.425048828124986],[-52.29052734375003,4.942187500000031],[-52.324609374999966,4.770898437500037],[-52.21997070312494,4.862792968750014],[-52.05810546875003,4.717382812499963],[-52.00292968749997,4.352294921875014],[-51.82753906250002,4.635693359375026],[-51.65253906249998,4.061279296874972]]],[[[-60.826269531250006,14.494482421874991],[-61.063720703125,14.467089843750017],[-61.01132812499998,14.601904296875034],[-61.21333007812501,14.848583984375011],[-60.927148437499966,14.755175781249989],[-60.826269531250006,14.494482421874991]]],[[[-61.23046875000003,15.889941406250074],[-61.310742187499955,15.894677734374966],[-61.25,16.006298828124983],[-61.23046875000003,15.889941406250074]]],[[[-61.58955078125001,16.006933593750006],[-61.759423828124966,16.062060546875045],[-61.74804687499997,16.355273437500017],[-61.55234374999998,16.270898437499966],[-61.58955078125001,16.006933593750006]]],[[[-61.3271484375,16.230419921874983],[-61.522167968749955,16.22802734375003],[-61.47119140624994,16.506640625000045],[-61.17260742187497,16.25610351562497],[-61.3271484375,16.230419921874983]]],[[[9.480371093750023,42.80541992187503],[9.550683593750051,42.12973632812506],[9.186132812500034,41.38491210937502],[8.80751953125008,41.58837890625],[8.886816406249977,41.70068359375003],[8.621875,41.93071289062502],[8.700976562500045,42.09560546875002],[8.565625,42.35771484374996],[8.81484375000008,42.60791015625003],[9.313378906250023,42.71318359374999],[9.363183593750051,43.01738281249996],[9.480371093750023,42.80541992187503]]],[[[-1.17832031249992,45.904052734375],[-1.213574218750011,45.81660156250004],[-1.388671874999972,46.05039062500006],[-1.17832031249992,45.904052734375]]],[[[5.789746093749983,49.53828125000001],[5.823437500000011,49.50507812499998],[5.9013671875,49.48974609374997],[5.928906250000011,49.47753906249997],[5.959472656250028,49.45463867187502],[6.01142578125004,49.44545898437502],[6.074121093750023,49.45463867187502],[6.119921875000017,49.485205078125034],[6.181054687500051,49.498925781249966],[6.344335937500006,49.45273437499998],[6.735449218750006,49.16059570312498],[7.450585937500051,49.152197265625034],[8.134863281250006,48.97358398437498],[7.616601562500023,48.15678710937502],[7.615625,47.59272460937504],[7.343164062499994,47.43310546875003],[7.136035156249989,47.489843750000034],[6.968359375000034,47.453222656250034],[6.900390625000028,47.39423828125001],[7.000585937500034,47.339453125000034],[7.000585937500034,47.32250976562506],[6.978515625000057,47.30205078124996],[6.95205078125008,47.26718750000006],[6.820703125000051,47.163183593750006],[6.688085937500034,47.05825195312505],[6.66689453125008,47.026513671874966],[6.624804687500017,47.00434570312498],[6.45625,46.948339843750034],[6.438646763392874,46.774418247767855],[6.129687500000045,46.56699218750006],[6.118111049107182,46.447459542410726],[6.095898437500011,46.279394531250006],[5.970019531250045,46.214697265625034],[5.971484375000074,46.151220703125006],[6.006640625000045,46.14233398437506],[6.086621093750068,46.14702148437502],[6.19941406250004,46.19306640624998],[6.234667968750045,46.332617187500006],[6.321875,46.39370117187502],[6.428906250000011,46.43051757812506],[6.578222656250034,46.437353515625034],[6.758105468750017,46.41577148437497],[6.772070312500006,46.16513671874998],[6.897265625000017,46.05175781249997],[6.953710937500063,46.017138671875045],[7.00390625,45.95883789062506],[7.021093750000034,45.92578124999997],[6.790917968750023,45.740869140624966],[7.146386718750051,45.381738281249994],[7.07832031250004,45.23994140624998],[6.634765625000028,45.06816406249996],[6.99267578125,44.82729492187502],[6.900195312499989,44.33574218749996],[7.318554687500068,44.13798828125002],[7.637207031250057,44.16484375],[7.4931640625,43.767138671875045],[6.570214843750023,43.199072265625034],[6.115917968750011,43.07236328124998],[5.406542968750074,43.228515625],[5.05976562500004,43.44453125000004],[4.712109375000011,43.373291015625],[3.910839843750011,43.563085937500034],[3.258886718750063,43.193212890625006],[3.051757812500057,42.915136718750006],[3.21142578125,42.43115234375],[2.032714843750028,42.353515625],[1.927929687500068,42.42631835937499],[1.859765625000051,42.457080078125045],[1.7060546875,42.50332031250005],[1.709863281250051,42.604443359374955],[1.568164062500045,42.63500976562506],[1.501367187500023,42.64272460937502],[1.428320312499977,42.59589843749998],[0.696875,42.84511718750005],[0.631640625000045,42.689599609374994],[-0.586425781249943,42.798974609374966],[-1.300048828124943,43.10097656250002],[-1.460839843749937,43.05175781250006],[-1.410693359374932,43.240087890625034],[-1.794042968749949,43.407324218750006],[-1.484863281249943,43.56376953124999],[-1.245507812499937,44.55986328124999],[-1.07695312499996,44.68984375],[-1.152880859374989,44.764013671875006],[-1.245214843749977,44.66669921874998],[-1.081005859374983,45.532421874999955],[-0.548486328124966,45.00058593750006],[-0.790771484375028,45.46801757812497],[-1.195996093749983,45.714453125],[-1.03173828125,45.741064453125006],[-1.14628906249996,46.311376953125034],[-1.786523437499937,46.51484375000001],[-2.059375,46.81030273437497],[-2.01889648437492,47.03764648437502],[-2.197070312499989,47.16293945312506],[-2.027587890625028,47.27358398437502],[-1.742529296874949,47.21596679687502],[-1.97539062499996,47.31069335937505],[-2.503125,47.31206054687496],[-2.427685546874983,47.47089843749998],[-2.770312499999989,47.513867187499955],[-2.787207031249949,47.62553710937496],[-4.312109374999949,47.82290039062502],[-4.678808593749949,48.03950195312501],[-4.32944335937492,48.169970703125045],[-4.577148437499943,48.2900390625],[-4.241406249999926,48.30366210937501],[-4.719384765624966,48.363134765625034],[-4.7625,48.45024414062502],[-4.531201171874983,48.61997070312506],[-3.231445312499972,48.84082031250003],[-2.692333984374983,48.53681640624998],[-2.446191406249937,48.64829101562506],[-2.00371093749996,48.58208007812499],[-1.905712890624955,48.69711914062506],[-1.376464843749972,48.65258789062503],[-1.565478515624932,48.805517578125034],[-1.583105468749977,49.20239257812506],[-1.856445312499972,49.68378906249998],[-1.258642578124949,49.68017578125006],[-1.138525390624977,49.38789062500001],[-0.163476562499937,49.296777343749994],[0.41689453125008,49.448388671874994],[0.129394531250028,49.508447265624966],[0.186718749999983,49.703027343749994],[1.245507812500051,49.99824218750001],[1.5927734375,50.25219726562506],[1.672265625000023,50.885009765625],[2.52490234375,51.097119140624955],[2.759375,50.750634765624994],[3.10683593750008,50.779443359374994],[3.27333984375008,50.53154296875002],[3.595410156250068,50.47734374999999],[3.689355468750023,50.30605468750002],[4.174609375000017,50.24648437500005],[4.149316406250023,49.971582031249994],[4.545019531250063,49.96025390624999],[4.818652343750045,50.153173828125034],[4.867578125000051,49.78813476562502],[5.50732421875,49.51088867187502],[5.789746093749983,49.53828125000001]]]]},"properties":{"name":"France","childNum":10,"cp":[2.8719426,46.8222422]}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-7.186865234374949,62.139306640624966],[-7.116796874999977,62.046826171874955],[-7.379101562499926,62.07480468749998],[-7.186865234374949,62.139306640624966]]],[[[-6.631054687499955,62.22788085937498],[-6.655810546874932,62.09360351562498],[-6.840527343749983,62.119287109374994],[-6.725195312499949,61.95146484374999],[-7.17216796874996,62.28559570312501],[-6.631054687499955,62.22788085937498]]],[[[-6.406054687499932,62.258642578125034],[-6.544140624999926,62.20561523437499],[-6.554589843749994,62.35566406250001],[-6.406054687499932,62.258642578125034]]]]},"properties":{"name":"Faeroe Is.","childNum":3}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[158.31484375,6.813671875],[158.18339843750002,6.801269531250057],[158.13476562499997,6.944824218749986],[158.29462890625004,6.951074218750023],[158.31484375,6.813671875]]],[[[138.14267578125006,9.50068359375004],[138.06708984375004,9.419042968750006],[138.18583984375007,9.593310546874989],[138.14267578125006,9.50068359375004]]]]},"properties":{"name":"Micronesia","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[13.293554687500006,2.161572265624997],[13.172167968750017,1.78857421875],[13.21630859375,1.2484375],[13.851367187500017,1.41875],[14.180859375000011,1.370214843749991],[14.429882812500011,0.901464843749991],[14.32421875,0.62421875],[13.949609375000023,0.353808593749989],[13.860058593750011,-0.203320312500011],[14.47412109375,-0.573437500000011],[14.383984375000011,-1.890039062500009],[14.162890625000017,-2.217578125],[14.199804687500006,-2.354199218750011],[13.993847656250011,-2.490625],[13.886914062500011,-2.465429687500006],[13.733789062500023,-2.138476562500003],[13.464941406250006,-2.395410156250009],[12.991992187500017,-2.313378906250009],[12.793554687500006,-1.931835937500011],[12.590429687500006,-1.826855468750011],[12.43212890625,-1.928906250000011],[12.446386718750006,-2.329980468750009],[12.064453125,-2.41259765625],[11.60546875,-2.342578125],[11.537792968750011,-2.83671875],[11.760156250000023,-2.983105468750011],[11.715429687500006,-3.176953125000011],[11.934179687500006,-3.318554687500011],[11.8798828125,-3.665917968750009],[11.685742187500011,-3.68203125],[11.504296875000023,-3.5203125],[11.234472656250006,-3.690820312500009],[11.130175781250017,-3.916308593750003],[10.34765625,-3.013085937500009],[9.722070312500023,-2.467578125],[10.06201171875,-2.549902343750006],[9.624609375,-2.367089843750009],[9.298925781250006,-1.903027343750011],[9.483203125000017,-1.894628906250006],[9.265625,-1.825097656250009],[9.036328125000011,-1.308886718750003],[9.31884765625,-1.632031250000011],[9.501074218750006,-1.55517578125],[9.295800781250023,-1.515234375],[9.3466796875,-1.325],[9.203808593750011,-1.382421875],[9.064648437500011,-1.29833984375],[8.703125,-0.591015625000011],[8.946386718750006,-0.688769531250003],[9.296679687500017,-0.351269531250011],[9.354882812500023,0.343603515624991],[9.468164062500023,0.15976562499999],[9.796777343750023,0.044238281249989],[10.00146484375,0.194970703124994],[9.546484375,0.295947265624989],[9.324804687500006,0.552099609374991],[9.495312500000011,0.664843749999989],[9.617968750000017,0.576513671874991],[9.5908203125,1.031982421875],[9.636132812500023,1.046679687499989],[9.676464843750011,1.07470703125],[9.70458984375,1.079980468749994],[9.760546875000017,1.07470703125],[9.788671875,1.025683593749989],[9.803906250000011,0.998730468749997],[9.90673828125,0.960107421874994],[11.335351562500023,0.999707031249997],[11.332324218750017,1.528369140624989],[11.328710937500006,2.167431640624997],[11.348437500000017,2.299707031249994],[11.558984375000023,2.302197265624997],[13.2203125,2.256445312499991],[13.293554687500006,2.161572265624997]]]},"properties":{"name":"Gabon","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-1.065576171874966,50.69023437500002],[-1.25146484375,50.58881835937498],[-1.563427734374955,50.666113281250006],[-1.31279296874996,50.77348632812502],[-1.065576171874966,50.69023437500002]]],[[[-4.196777343749972,53.321435546874966],[-4.04936523437496,53.30576171874998],[-4.373046875,53.13417968750002],[-4.56787109375,53.386474609375],[-4.315087890625023,53.41723632812503],[-4.196777343749972,53.321435546874966]]],[[[-6.218017578125,54.08872070312506],[-6.649804687499937,54.05864257812496],[-7.007714843749937,54.40668945312501],[-7.324511718750017,54.13344726562502],[-7.606542968750006,54.14384765625002],[-8.118261718749977,54.41425781250004],[-7.75439453125,54.59492187499998],[-7.910595703124955,54.698339843750006],[-7.55039062499992,54.767968749999966],[-7.218652343749937,55.09199218749998],[-6.475048828124955,55.24101562499999],[-6.035791015624994,55.14453125000003],[-5.71684570312496,54.817480468750034],[-5.878613281249955,54.64130859375001],[-5.582519531249943,54.66342773437498],[-5.470410156249926,54.500195312499955],[-5.671093749999955,54.54975585937501],[-5.60678710937492,54.272558593750034],[-6.019042968749972,54.05126953124997],[-6.218017578125,54.08872070312506]]],[[[-5.105419921875011,55.448828125000034],[-5.331494140624955,55.481054687500034],[-5.318115234375,55.709179687499955],[-5.105419921875011,55.448828125000034]]],[[[-6.128906249999972,55.93056640625002],[-6.055322265624994,55.69531249999997],[-6.305078124999966,55.60693359375],[-6.286425781249989,55.77250976562499],[-6.491357421874994,55.697314453125045],[-6.462841796874955,55.808251953124994],[-6.128906249999972,55.93056640625002]]],[[[-5.970068359374949,55.814550781250034],[-6.071972656250011,55.893115234375045],[-5.72514648437496,56.118554687499966],[-5.970068359374949,55.814550781250034]]],[[[-5.77788085937496,56.344335937500034],[-6.313427734374983,56.29365234375001],[-6.138867187499955,56.490625],[-6.286328124999983,56.61186523437502],[-6.102734374999955,56.645654296874966],[-5.760839843749949,56.49067382812501],[-5.77788085937496,56.344335937500034]]],[[[-7.249853515624977,57.115332031250006],[-7.410546874999937,57.38110351562506],[-7.26713867187496,57.37177734375001],[-7.249853515624977,57.115332031250006]]],[[[-6.144726562499983,57.50498046874998],[-6.135546874999989,57.31425781250002],[-5.672460937499977,57.252685546875],[-5.94907226562492,57.045166015625],[-6.034375,57.20122070312499],[-6.322705078124926,57.20249023437498],[-6.761132812499994,57.4423828125],[-6.305957031249989,57.67197265624998],[-6.144726562499983,57.50498046874998]]],[[[-7.205566406250028,57.682958984375006],[-7.182617187499972,57.53330078125006],[-7.514746093749949,57.60195312500002],[-7.205566406250028,57.682958984375006]]],[[[-6.198681640624983,58.36328125000003],[-6.554589843749994,58.092871093750006],[-6.425195312499937,58.02128906249999],[-6.983105468749983,57.75],[-7.083447265624926,57.81376953124999],[-6.856835937499937,57.92353515624998],[-7.085253906249932,58.18217773437499],[-6.726464843749937,58.189404296874955],[-6.776464843750006,58.30151367187497],[-6.237451171874966,58.50283203125005],[-6.198681640624983,58.36328125000003]]],[[[-3.109667968749932,58.515478515625034],[-3.212353515624983,58.32124023437501],[-3.99003906249996,57.95903320312502],[-4.035595703124926,57.85200195312498],[-3.857128906249983,57.81855468750001],[-4.134521484375,57.57773437500006],[-3.402783203124955,57.708251953125],[-2.074072265624977,57.70239257812506],[-1.780664062499994,57.474023437499966],[-2.592675781249937,56.56157226562499],[-3.309960937499966,56.36347656250004],[-2.885156249999937,56.397509765625045],[-2.674267578124955,56.25341796875],[-3.362255859374955,56.02763671875002],[-3.789062499999972,56.09521484375],[-3.048730468749937,55.951953125000045],[-2.599316406249955,56.02729492187501],[-2.14707031249992,55.90297851562502],[-1.655371093749949,55.57036132812502],[-1.232421874999943,54.703710937500034],[-0.084375,54.118066406249994],[-0.20556640625,54.021728515625],[0.115332031250006,53.609277343749994],[-0.270019531249972,53.73676757812504],[-0.659912109375,53.72402343750002],[-0.293701171875,53.69233398437504],[0.270996093750028,53.33549804687499],[0.355761718750045,53.15996093750002],[0.0458984375,52.90561523437498],[0.279785156250028,52.80869140625006],[0.55878906250004,52.96694335937505],[1.05556640625008,52.95898437500003],[1.656738281249972,52.753710937500045],[1.74658203125,52.46899414062503],[1.59140625,52.11977539062502],[1.232421875000057,51.97124023437496],[1.188476562500057,51.803369140624966],[0.752246093750017,51.729589843750034],[0.890917968750017,51.571435546874966],[0.42451171875004,51.465625],[1.414941406250023,51.36328125],[1.397558593750034,51.18203125000002],[0.960156250000011,50.92587890624998],[0.299707031249994,50.775976562500006],[-0.785253906249949,50.76542968749999],[-1.416455078124955,50.896875],[-1.334472656249943,50.82080078124997],[-1.516748046874937,50.747460937499966],[-2.031054687499932,50.72539062499999],[-2.035839843749926,50.603076171875045],[-2.999414062499937,50.71660156249999],[-3.40458984374996,50.63242187499998],[-3.679785156250006,50.239941406249955],[-4.194580078124972,50.39331054687503],[-4.727978515624926,50.29047851562504],[-5.11850585937492,50.038330078125],[-5.622119140624932,50.05068359375002],[-4.188183593749926,51.18852539062502],[-3.135986328124972,51.20502929687501],[-2.433056640624926,51.74072265625],[-3.293115234374994,51.390429687500045],[-3.890771484374994,51.591650390625006],[-4.234570312499955,51.56909179687503],[-4.091015624999926,51.65991210937506],[-4.38627929687496,51.74106445312506],[-4.902294921874926,51.626269531250045],[-5.168359374999937,51.74072265625],[-5.183349609374972,51.94965820312501],[-4.217724609374983,52.277441406250006],[-3.980322265624949,52.54174804687503],[-4.101464843750023,52.915478515624955],[-4.683056640624926,52.80615234374997],[-4.268554687499943,53.14453125],[-3.427734374999972,53.34067382812498],[-3.097558593749937,53.260302734375045],[-3.064746093749932,53.426855468750034],[-2.74951171875,53.310205078124994],[-3.064599609374994,53.512841796874966],[-2.84648437499996,54.135302734375045],[-3.165966796874955,54.12792968750006],[-3.56938476562496,54.46757812499996],[-3.464599609374943,54.77309570312505],[-3.036230468749977,54.95307617187501],[-3.550439453124937,54.94741210937502],[-3.957910156249994,54.780957031249955],[-4.818066406249983,54.84614257812501],[-4.911230468749949,54.68945312500006],[-5.032324218749949,54.76137695312505],[-5.172705078124949,54.98588867187496],[-4.676757812499972,55.50131835937498],[-4.871679687499977,55.87392578125005],[-4.58408203124992,55.93867187500001],[-4.844091796874949,56.05117187499999],[-4.80029296875,56.158349609374994],[-5.228222656249983,55.886328125],[-5.084326171874977,56.197460937499955],[-5.41044921874996,55.995361328125],[-5.55644531249996,55.389599609374955],[-5.730664062499926,55.33413085937502],[-5.504492187499949,55.80239257812502],[-5.609570312499955,56.055273437500034],[-5.188378906249937,56.75805664062503],[-5.652441406249977,56.531982421875],[-6.133691406249966,56.706689453124966],[-5.730615234374994,56.853076171875045],[-5.86142578124992,56.902685546875006],[-5.561914062499994,57.23271484375002],[-5.794921874999972,57.37880859375002],[-5.581787109374972,57.546777343749966],[-5.744921874999989,57.668310546875034],[-5.608349609374955,57.88134765625],[-5.157226562499972,57.88134765625],[-5.413183593750006,58.06972656250002],[-5.338281250000023,58.23872070312498],[-5.008300781250028,58.262646484374955],[-5.016748046874966,58.566552734374966],[-4.433251953124937,58.51284179687505],[-3.25913085937492,58.65],[-3.053076171874949,58.63481445312502],[-3.109667968749932,58.515478515625034]]],[[[-3.057421874999932,59.02963867187498],[-2.793017578124989,58.906933593749955],[-3.331640624999949,58.97124023437499],[-3.31035156249996,59.13081054687498],[-3.057421874999932,59.02963867187498]]],[[[-1.30810546875,60.5375],[-1.052441406249955,60.44448242187502],[-1.299462890624994,59.87866210937503],[-1.290917968749937,60.153466796874966],[-1.663769531249983,60.282519531250074],[-1.374609374999949,60.33291015625002],[-1.571777343749972,60.494433593750074],[-1.363964843750011,60.60957031249998],[-1.30810546875,60.5375]]]]},"properties":{"name":"United Kingdom","childNum":14,"cp":[-2.5830348,54.4598409]}},{"geometry":{"type":"Polygon","coordinates":[[[46.30546875000002,41.507714843749994],[46.61894531250002,41.34375],[46.67255859375001,41.28681640625],[46.66240234375002,41.245507812499994],[46.62636718750002,41.15966796875],[46.534375,41.08857421875],[46.43095703125002,41.077050781249994],[46.086523437500006,41.183837890625],[45.28095703125001,41.449560546875],[45.21718750000002,41.423193359375],[45.00136718750002,41.290966796875],[44.97587890625002,41.277490234374994],[44.81132812500002,41.259375],[44.077246093750006,41.182519531249994],[43.43339843750002,41.155517578125],[43.20546875000002,41.199169921875],[43.15283203125,41.23642578125],[43.14101562500002,41.26484375],[43.17128906250002,41.287939453125],[43.149023437500006,41.30712890625],[43.05712890625,41.352832031249996],[42.90673828125,41.466845703124996],[42.82167968750002,41.4923828125],[42.78789062500002,41.563720703125],[42.75410156250001,41.57890625],[42.68242187500002,41.585742187499996],[42.60683593750002,41.57880859375],[42.590429687500006,41.57070312499999],[42.5673828125,41.55927734375],[42.46640625,41.43984375],[41.92578125,41.495654296874996],[41.82353515625002,41.432373046875],[41.779394531250006,41.44052734375],[41.701757812500006,41.471582031249994],[41.57656250000002,41.497314453125],[41.51005859375002,41.517480468749994],[41.701757812500006,41.705419921875],[41.76298828125002,41.970019531249996],[41.48876953125,42.659326171874994],[40.83662109375001,43.0634765625],[40.46210937500001,43.145703125],[39.97832031250002,43.419824218749994],[40.02373046875002,43.48486328125],[40.084570312500006,43.553125],[40.648046875,43.53388671875],[40.941992187500006,43.41806640625],[41.083105468750006,43.374462890625],[41.35820312500002,43.333398437499994],[41.46074218750002,43.276318359375],[41.58056640625,43.21923828125],[42.76064453125002,43.169580078124994],[42.99160156250002,43.09150390625],[43.00019531250001,43.049658203125],[43.08916015625002,42.9890625],[43.55781250000001,42.844482421875],[43.623046875,42.80771484375],[43.78261718750002,42.747021484375],[43.79873046875002,42.727783203125],[43.79541015625,42.702978515625],[43.74990234375002,42.657519531249996],[43.738378906250006,42.616992187499996],[43.759863281250006,42.59384765625],[43.82597656250002,42.571533203125],[43.95742187500002,42.566552734374994],[44.00468750000002,42.595605468749994],[44.10273437500001,42.616357421874994],[44.32949218750002,42.70351562499999],[44.505859375,42.7486328125],[44.77109375,42.616796875],[44.85048828125002,42.746826171875],[44.87099609375002,42.756396484374996],[44.943359375,42.730273437499996],[45.07158203125002,42.694140625],[45.160253906250006,42.675],[45.34375,42.52978515625],[45.56289062500002,42.5357421875],[45.70527343750001,42.498095703124996],[45.7275390625,42.475048828125],[45.63427734375,42.234716796875],[45.63857421875002,42.205078125],[46.21269531250002,41.989892578124994],[46.42988281250001,41.890966796875],[46.18427734375001,41.7021484375],[46.30546875000002,41.507714843749994]]]},"properties":{"name":"Georgia","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-0.068603515625,11.115625],[0.009423828125023,11.02099609375],[-0.08632812499999,10.673046875],[0.380859375,10.291845703124991],[0.264550781250023,9.644726562499997],[0.342578125000017,9.604150390624994],[0.2333984375,9.463525390624994],[0.525683593750017,9.398486328124989],[0.48876953125,8.851464843749994],[0.37255859375,8.75927734375],[0.686328125000017,8.354882812499994],[0.5,7.546875],[0.634765625,7.353662109374994],[0.525585937500011,6.850927734374991],[0.736914062500006,6.452587890624997],[1.187207031250011,6.089404296874989],[0.94970703125,5.810253906249997],[0.259667968750023,5.75732421875],[-2.001855468749994,4.762451171875],[-3.114013671875,5.088671874999989],[-2.815673828125,5.153027343749997],[-2.754980468749977,5.432519531249994],[-2.793652343749983,5.60009765625],[-2.998291015625,5.71132812499999],[-3.227148437499977,6.749121093749991],[-2.959082031249977,7.454541015624997],[-2.789746093749983,7.931933593749989],[-2.668847656249994,8.022216796875],[-2.613378906249977,8.046679687499989],[-2.600976562499994,8.082226562499997],[-2.619970703124977,8.12109375],[-2.61171875,8.147558593749991],[-2.538281249999983,8.171630859375],[-2.505859375,8.208740234375],[-2.600390624999989,8.800439453124994],[-2.649218749999989,8.956591796874989],[-2.689892578124983,9.025097656249997],[-2.746923828124977,9.045117187499997],[-2.705761718749983,9.351367187499989],[-2.695849609374989,9.481347656249994],[-2.706201171874994,9.533935546875],[-2.765966796874977,9.658056640624991],[-2.780517578125,9.745849609375],[-2.791162109374994,10.432421874999989],[-2.914892578124977,10.592333984374989],[-2.829931640624977,10.998388671874991],[-1.04248046875,11.010058593749989],[-0.627148437499983,10.927392578124994],[-0.299462890624994,11.166894531249994],[-0.068603515625,11.115625]]]},"properties":{"name":"Ghana","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-11.389404296875,12.404394531249991],[-11.502197265625,12.198632812499994],[-11.30517578125,12.015429687499989],[-10.933203124999977,12.205175781249991],[-10.709228515625,11.898730468749989],[-10.274853515624983,12.212646484375],[-9.754003906249977,12.029931640624994],[-9.358105468749983,12.255419921874989],[-9.395361328124977,12.464648437499989],[-9.043066406249977,12.40234375],[-8.818310546874983,11.922509765624994],[-8.822021484375,11.673242187499994],[-8.398535156249977,11.366552734374991],[-8.666699218749983,11.009472656249997],[-8.33740234375,10.990625],[-8.266650390624989,10.485986328124994],[-8.007275390624983,10.321875],[-7.990625,10.1625],[-8.155175781249994,9.973193359374989],[-8.136962890625,9.49570312499999],[-7.896191406249983,9.415869140624991],[-7.918066406249977,9.188525390624989],[-7.839404296874989,9.151611328125],[-7.7998046875,9.115039062499989],[-7.777978515624994,9.080859374999989],[-7.902099609375,9.01708984375],[-7.938183593749983,8.979785156249989],[-7.950976562499989,8.786816406249997],[-7.719580078124977,8.643017578124997],[-7.696093749999989,8.375585937499991],[-7.823583984374977,8.467675781249994],[-7.953125,8.477734375],[-8.236962890624994,8.455664062499991],[-8.244140625,8.407910156249997],[-8.256103515625,8.253710937499989],[-8.217138671874977,8.219677734374997],[-8.140625,8.181445312499989],[-8.048583984375,8.169726562499989],[-8.009863281249977,8.07851562499999],[-8.126855468749994,7.867724609374989],[-8.115429687499983,7.7607421875],[-8.205957031249994,7.59023437499999],[-8.231884765624983,7.556738281249991],[-8.429980468749989,7.601855468749989],[-8.486425781249977,7.558496093749994],[-8.659765624999977,7.688378906249994],[-8.8896484375,7.2626953125],[-9.11757812499999,7.215917968749991],[-9.463818359374983,7.415869140624991],[-9.369140625,7.703808593749997],[-9.518261718749983,8.34609375],[-9.781982421875,8.537695312499991],[-10.064355468749994,8.429882812499997],[-10.147412109374983,8.519726562499997],[-10.233056640624994,8.488818359374989],[-10.283203125,8.485156249999989],[-10.360058593749983,8.495507812499994],[-10.394433593749994,8.48095703125],[-10.496435546874977,8.362109374999989],[-10.557714843749977,8.315673828125],[-10.686962890624983,8.321679687499994],[-10.712109374999983,8.335253906249989],[-10.677343749999977,8.400585937499997],[-10.500537109374989,8.687548828124989],[-10.615966796875,9.059179687499991],[-10.726855468749989,9.081689453124994],[-10.747021484374983,9.095263671874989],[-10.749951171874983,9.122363281249989],[-10.687646484374994,9.261132812499994],[-10.682714843749977,9.289355468749989],[-10.758593749999989,9.385351562499991],[-11.047460937499977,9.786328125],[-11.180859374999983,9.925341796874989],[-11.205664062499977,9.977734375],[-11.273632812499983,9.996533203124997],[-11.911083984374983,9.993017578124991],[-12.142333984375,9.87539062499999],[-12.427978515625,9.898144531249997],[-12.557861328125,9.704980468749994],[-12.755859375,9.373583984374989],[-12.958789062499989,9.263330078124994],[-13.077294921874994,9.069628906249989],[-13.292675781249983,9.04921875],[-13.436279296875,9.4203125],[-13.691357421874983,9.535791015624994],[-13.689794921874977,9.927783203124989],[-13.820117187499989,9.88720703125],[-14.045019531249977,10.141259765624994],[-14.426904296874994,10.248339843749989],[-14.609570312499983,10.549853515624989],[-14.593505859375,10.766699218749991],[-14.677343749999977,10.68896484375],[-14.775927734374989,10.931640625],[-14.88671875,10.968066406249989],[-14.975,10.803417968749997],[-15.051220703124983,10.834570312499991],[-15.043017578124989,10.940136718749997],[-14.9990234375,10.9921875],[-14.944433593749977,11.072167968749994],[-14.779296875,11.405517578125],[-14.720263671874989,11.48193359375],[-14.682958984374977,11.508496093749997],[-14.604785156249989,11.511621093749994],[-14.452441406249989,11.556201171874989],[-14.327832031249983,11.629785156249994],[-14.265576171874983,11.659912109375],[-14.122314453125,11.65195312499999],[-13.953222656249977,11.664599609374989],[-13.732763671874977,11.736035156249997],[-13.730664062499983,11.959863281249994],[-13.737988281249983,12.009667968749994],[-13.816308593749994,12.054492187499989],[-13.948876953124994,12.178173828124997],[-13.8875,12.246875],[-13.759765625,12.262353515624994],[-13.673535156249983,12.478515625],[-13.732617187499983,12.592822265624989],[-13.729248046875,12.673925781249991],[-13.082910156249994,12.633544921875],[-13.061279296875,12.489990234375],[-12.930712890624989,12.532275390624989],[-12.399072265624994,12.340087890625],[-11.389404296875,12.404394531249991]]]},"properties":{"name":"Guinea","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-16.763330078124994,13.064160156249997],[-16.824804687499977,13.341064453125],[-16.669335937499994,13.475],[-16.41337890624999,13.269726562499997],[-15.427490234375,13.46835937499999],[-16.135449218749983,13.4482421875],[-16.351806640625,13.34335937499999],[-16.56230468749999,13.587304687499994],[-15.509667968749994,13.586230468750003],[-15.426855468749977,13.727001953124997],[-15.108349609374983,13.81210937499999],[-14.405468749999983,13.503710937500003],[-13.977392578124977,13.54345703125],[-13.826708984374989,13.4078125],[-14.246777343749983,13.23583984375],[-15.151123046875,13.556494140624991],[-15.286230468749977,13.39599609375],[-15.814404296874983,13.325146484374997],[-15.834277343749989,13.156445312499997],[-16.648779296874977,13.154150390624991],[-16.763330078124994,13.064160156249997]]]},"properties":{"name":"Gambia","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-15.895898437499966,11.082470703124969],[-15.963964843749977,11.05898437499998],[-15.937695312499955,11.192773437499966],[-15.895898437499966,11.082470703124969]]],[[[-16.11450195312503,11.059423828124977],[-16.236425781249977,11.113427734374966],[-16.06733398437501,11.197216796874983],[-16.11450195312503,11.059423828124977]]],[[[-15.901806640624926,11.4658203125],[-16.02319335937497,11.477148437499991],[-15.964550781249926,11.59829101562498],[-15.901806640624926,11.4658203125]]],[[[-15.986425781249949,11.882031249999969],[-16.038330078124943,11.759716796875011],[-16.15244140624992,11.876806640624963],[-15.986425781249949,11.882031249999969]]],[[[-13.759765625,12.262353515624994],[-13.8875,12.246875],[-13.948876953124966,12.178173828124997],[-13.737988281250011,12.009667968750037],[-13.730664062499926,11.959863281250009],[-13.73276367187492,11.736035156249983],[-13.953222656249977,11.664599609374989],[-14.265576171874926,11.659912109375014],[-14.327832031250011,11.629785156250009],[-14.452441406249989,11.556201171875017],[-14.604785156249932,11.511621093749994],[-14.682958984374949,11.508496093749983],[-14.720263671875017,11.481933593749986],[-14.779296874999972,11.405517578125057],[-14.944433593749949,11.072167968749994],[-14.999023437499972,10.992187500000043],[-15.04301757812496,10.940136718750011],[-15.09375,11.011035156249974],[-15.054589843749994,11.141943359375006],[-15.222119140624926,11.030908203125037],[-15.216699218749994,11.15625],[-15.39311523437496,11.217236328124983],[-15.354687499999955,11.396337890624963],[-15.479492187499972,11.410302734374966],[-15.072656249999937,11.597802734374966],[-15.230371093750023,11.686767578124972],[-15.412988281249994,11.615234374999972],[-15.501904296875011,11.723779296874966],[-15.467187499999937,11.842822265624974],[-15.078271484374937,11.968994140625014],[-15.941748046875006,11.786621093749986],[-15.92021484374996,11.93779296874996],[-16.138427734375,11.917285156250045],[-16.32807617187501,12.051611328124963],[-16.244580078124955,12.237109375],[-16.43681640624996,12.204150390625045],[-16.711816406249937,12.354833984375006],[-16.656933593749955,12.364355468749991],[-16.52133789062495,12.348632812499986],[-16.41630859374996,12.367675781250057],[-16.24150390624996,12.443310546875011],[-16.144189453124937,12.457421875000037],[-15.839550781249955,12.437890624999966],[-15.57480468749992,12.490380859375009],[-15.19609375,12.679931640624986],[-14.3492187499999,12.67641601562498],[-14.064843749999966,12.675292968750014],[-13.729248046875,12.673925781250006],[-13.732617187499983,12.592822265625003],[-13.673535156249926,12.478515624999986],[-13.759765625,12.262353515624994]]]]},"properties":{"name":"Guinea-Bissau","childNum":5}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[11.332324218750017,1.528369140624989],[11.335351562500023,0.999707031250011],[9.906738281250028,0.960107421875037],[9.80390625000004,0.998730468749997],[9.788671875000034,1.025683593749974],[9.760546874999989,1.074707031250014],[9.704589843750057,1.079980468750023],[9.676464843750011,1.074707031250014],[9.636132812500051,1.046679687499989],[9.590820312500057,1.031982421875014],[9.599414062500045,1.054443359374972],[9.509863281250006,1.114794921875017],[9.385937500000068,1.13925781250002],[9.807031250000051,1.927490234375028],[9.77968750000008,2.068212890625006],[9.800781250000028,2.304443359375],[9.826171875000057,2.297802734374969],[9.8369140625,2.242382812500054],[9.870117187500028,2.21328125],[9.979882812499994,2.167773437500045],[10.790917968750023,2.167578125],[11.096582031250051,2.167480468749986],[11.328710937500006,2.167431640624969],[11.332324218750017,1.528369140624989]]],[[[8.735742187500023,3.758300781249972],[8.910058593750023,3.758203125000051],[8.946093750000074,3.627539062499977],[8.704003906250051,3.223632812500028],[8.474902343749989,3.264648437500043],[8.464648437500045,3.450585937499994],[8.735742187500023,3.758300781249972]]]]},"properties":{"name":"Eq. Guinea","childNum":2}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[23.852246093749983,35.53544921874999],[24.166015625000057,35.59521484375],[24.108984374999977,35.49580078124998],[24.35400390625,35.359472656250034],[25.73017578125004,35.34858398437501],[25.791308593750074,35.122851562500045],[26.32021484375008,35.315136718749955],[26.165625,35.018603515625045],[24.79980468750003,34.93447265625002],[24.70888671875008,35.08906250000001],[24.463671875000045,35.160351562499955],[23.59277343749997,35.257226562499966],[23.56982421875,35.534765625000034],[23.67265624999999,35.51391601562506],[23.736914062500034,35.65551757812503],[23.852246093749983,35.53544921874999]]],[[[27.17607421874999,35.46528320312498],[27.070703125000023,35.59775390624998],[27.22314453125,35.820458984374966],[27.17607421874999,35.46528320312498]]],[[[23.053808593750034,36.18979492187498],[22.91083984375004,36.220996093750045],[22.950488281250045,36.38393554687502],[23.053808593750034,36.18979492187498]]],[[[27.84277343750003,35.929296875000034],[27.71552734375004,35.95732421874996],[27.71630859375003,36.17158203125001],[28.23183593750005,36.43364257812502],[28.087792968750023,36.06533203125002],[27.84277343750003,35.929296875000034]]],[[[25.48242187500003,36.39262695312502],[25.37050781250005,36.35893554687499],[25.408984375000074,36.473730468750006],[25.48242187500003,36.39262695312502]]],[[[26.46064453125001,36.58540039062501],[26.270019531250057,36.54692382812499],[26.370019531250023,36.63857421875002],[26.46064453125001,36.58540039062501]]],[[[26.94960937500005,36.72709960937502],[27.214941406250006,36.89863281249998],[27.352148437499977,36.86889648437506],[26.94960937500005,36.72709960937502]]],[[[25.859375,36.79042968750005],[25.74316406250003,36.78974609374998],[26.06445312500003,36.90273437500002],[25.859375,36.79042968750005]]],[[[27.01972656250004,36.95903320312502],[26.91992187500003,36.94521484375005],[26.88867187499997,37.087255859375034],[27.01972656250004,36.95903320312502]]],[[[25.278906250000034,37.06840820312502],[25.105468750000057,37.034960937500045],[25.235058593750068,37.148535156250006],[25.278906250000034,37.06840820312502]]],[[[25.54589843749997,36.96757812499999],[25.45673828125001,36.9296875],[25.361914062500063,37.07041015624998],[25.52529296875005,37.19638671875006],[25.54589843749997,36.96757812499999]]],[[[24.523535156250063,37.125097656250006],[24.42480468750003,37.131982421874994],[24.48378906250005,37.21020507812503],[24.523535156250063,37.125097656250006]]],[[[25.402734375000023,37.419140624999955],[25.312695312500068,37.48930664062496],[25.462988281250063,37.47109375],[25.402734375000023,37.419140624999955]]],[[[26.029296875000057,37.529394531250034],[26.086328125000023,37.63491210937505],[26.351367187500017,37.67431640625],[26.029296875000057,37.529394531250034]]],[[[25.255859375000057,37.59960937500006],[25.156347656250034,37.54506835937505],[24.99648437500005,37.676904296874994],[25.255859375000057,37.59960937500006]]],[[[24.35595703125003,37.57685546875004],[24.28896484375005,37.52827148437498],[24.37910156250004,37.682714843750006],[24.35595703125003,37.57685546875004]]],[[[26.82441406250004,37.81142578125005],[27.05507812500005,37.70927734375002],[26.84492187500004,37.64472656250001],[26.58105468750003,37.723730468750034],[26.82441406250004,37.81142578125005]]],[[[20.888476562500074,37.805371093749955],[20.993945312500074,37.70800781250003],[20.81855468750004,37.66474609375001],[20.61953125000008,37.855029296875045],[20.691503906250006,37.929541015625034],[20.888476562500074,37.805371093749955]]],[[[24.991699218750057,37.75961914062506],[24.962207031250074,37.69238281250003],[24.7001953125,37.961669921875],[24.956347656250045,37.90478515625006],[24.991699218750057,37.75961914062506]]],[[[20.61230468750003,38.38334960937502],[20.761328125,38.07055664062497],[20.523535156250063,38.106640624999955],[20.4521484375,38.23417968750002],[20.35253906250003,38.179882812499955],[20.563183593750068,38.474951171875034],[20.61230468750003,38.38334960937502]]],[[[26.094042968750017,38.21806640625002],[25.891894531250045,38.243310546874994],[25.991406250000068,38.353515625],[25.846093750000023,38.57402343749996],[26.16035156250001,38.54072265625001],[26.094042968750017,38.21806640625002]]],[[[20.68671875000001,38.60869140625002],[20.5546875,38.58256835937502],[20.69414062499999,38.84423828125003],[20.68671875000001,38.60869140625002]]],[[[24.67470703125005,38.80922851562502],[24.54101562499997,38.788671875],[24.485644531250074,38.980273437500045],[24.67470703125005,38.80922851562502]]],[[[23.41542968750008,38.958642578124994],[23.525,38.8134765625],[24.127539062500034,38.648486328125045],[24.27578125000005,38.22001953124996],[24.58837890625003,38.12397460937504],[24.53652343750005,37.97973632812506],[24.212011718750006,38.11752929687506],[24.040136718750006,38.389990234375034],[23.65078125000008,38.44306640625001],[23.25214843750004,38.80122070312498],[22.870312500000068,38.870507812499966],[23.258203125000023,39.03134765625006],[23.41542968750008,38.958642578124994]]],[[[26.41015625000003,39.329443359375034],[26.59560546875005,39.04882812499997],[26.488671875000023,39.074804687500034],[26.46875,38.97280273437502],[26.10791015625,39.08105468749997],[26.273144531249983,39.19755859374999],[26.072363281250034,39.095605468749994],[25.84414062500008,39.20004882812506],[26.16542968750008,39.37353515625006],[26.41015625000003,39.329443359375034]]],[[[20.077929687500045,39.432714843750034],[19.883984375000068,39.461523437500034],[19.646484375,39.76708984375003],[19.926074218750017,39.773730468750045],[19.8466796875,39.66811523437502],[20.077929687500045,39.432714843750034]]],[[[25.43769531250004,39.98330078125002],[25.357031250000063,39.80810546875003],[25.24941406250005,39.89414062500006],[25.06220703125004,39.852392578125006],[25.05800781250005,39.999658203124966],[25.43769531250004,39.98330078125002]]],[[[24.774218750000074,40.615185546874955],[24.515527343750023,40.64702148437496],[24.623339843750045,40.79291992187501],[24.774218750000074,40.615185546874955]]],[[[26.03896484375008,40.726757812499955],[25.10449218750003,40.994726562500006],[24.792968750000057,40.857519531250034],[24.47705078125,40.94775390625003],[24.082324218750074,40.72407226562504],[23.762792968750063,40.74780273437497],[23.866796875000034,40.41855468750006],[24.21279296875008,40.32778320312502],[24.343359375000034,40.14770507812503],[23.913183593750063,40.35878906250005],[23.72792968750008,40.329736328124994],[23.96748046875001,40.11455078125002],[23.947070312500045,39.96557617187506],[23.66455078125003,40.22382812499998],[23.42626953125,40.26396484374999],[23.62734375,39.92407226562503],[22.896484375000057,40.39990234374997],[22.92226562500008,40.59086914062499],[22.629492187500034,40.49555664062501],[22.59218750000005,40.03691406250002],[23.327734374999977,39.174902343750006],[23.15468750000008,39.10146484375005],[23.16171875,39.25776367187501],[22.92138671874997,39.30634765625004],[22.886035156250074,39.16997070312496],[23.066699218750017,39.03793945312498],[22.569140625000074,38.86748046874999],[23.25292968750003,38.66123046875006],[23.68398437500008,38.35244140625002],[23.96699218750001,38.275],[24.024511718750006,38.139794921874966],[24.01972656250001,37.67773437499997],[23.50175781249999,38.03486328124998],[23.03632812500004,37.87836914062501],[23.48925781250003,37.440185546875],[23.16152343750005,37.333837890625006],[22.725390625000017,37.542138671874966],[23.16015625000003,36.448095703125034],[22.717187500000023,36.79394531250006],[22.42773437500003,36.47578124999998],[22.08046875000008,37.028955078124966],[21.95556640625003,36.990087890625034],[21.892382812500045,36.73730468749997],[21.58291015625005,37.080957031249994],[21.678906250000068,37.38720703125003],[21.124707031250068,37.89160156250003],[21.40371093750005,38.19667968750002],[21.658398437500068,38.17509765624996],[21.82470703125003,38.328125],[22.846386718750068,37.96757812499996],[23.18349609375008,38.133691406249966],[22.421679687500045,38.43852539062499],[22.319921875,38.35683593750005],[21.96533203124997,38.412451171875006],[21.47255859375005,38.321386718750006],[21.3310546875,38.48730468749997],[21.303320312500034,38.373925781249966],[21.113183593750023,38.38466796875002],[20.768554687500057,38.874414062499966],[21.111621093750045,38.89628906249999],[21.11835937500001,39.029980468749955],[20.71337890625,39.03515625000003],[20.300781250000057,39.32709960937501],[20.19140625,39.545800781249966],[20.099414062500074,39.641259765624966],[20.001269531250074,39.70942382812501],[20.022558593750063,39.710693359375],[20.059765624999983,39.69912109375002],[20.13105468750004,39.66162109375003],[20.206835937500017,39.65351562499998],[20.382421875,39.802636718749994],[20.381640625000017,39.84179687500006],[20.311328125000074,39.95078125000006],[20.311132812500034,39.97944335937504],[20.338476562500006,39.991064453125006],[20.38369140625008,40.0171875],[20.408007812500074,40.049462890624994],[20.4560546875,40.065576171874994],[20.657421875000068,40.11738281249998],[20.881640625000017,40.467919921874994],[21.030859375000034,40.62246093750002],[20.95576171875001,40.775292968749994],[20.96425781250005,40.84990234374999],[21.575781250000034,40.86894531249996],[21.627539062500006,40.896337890625034],[21.77949218750004,40.95043945312506],[21.99335937500001,41.13095703125006],[22.18447265625005,41.15864257812501],[22.49355468750005,41.118505859375006],[22.603613281249977,41.14018554687499],[22.724804687500068,41.17851562499999],[22.78388671875004,41.33198242187498],[23.155957031250068,41.32207031249999],[23.239843750000034,41.38496093750001],[23.372070312500057,41.3896484375],[23.433398437500017,41.39873046874999],[23.53583984375001,41.38603515624999],[23.63515625000008,41.386767578125045],[24.011328124999977,41.460058593750034],[24.03291015625004,41.469091796875034],[24.05605468750005,41.527246093749966],[24.38671875,41.523535156250006],[24.487890625,41.55522460937499],[24.518261718750068,41.55253906249996],[24.773730468750045,41.356103515624994],[24.99355468750008,41.36499023437503],[25.133398437500063,41.31577148437506],[25.251171875000068,41.243554687499994],[25.923339843750057,41.311914062499966],[26.066406250000057,41.35068359375006],[26.135351562499977,41.3857421875],[26.155175781250023,41.43486328124999],[26.143554687500057,41.52153320312496],[26.085546875000063,41.704150390625045],[26.10742187499997,41.72568359374998],[26.20058593750005,41.74379882812502],[26.320898437500034,41.716552734375],[26.581347656250074,41.60126953125004],[26.62490234375008,41.401757812499994],[26.330664062499977,41.23876953125],[26.331054687500057,40.954492187499994],[26.03896484375008,40.726757812499955]]]]},"properties":{"name":"Greece","childNum":29}},{"geometry":{"type":"Polygon","coordinates":[[[-61.71552734375,12.012646484374997],[-61.714990234374994,12.18515625],[-61.60703125,12.223291015624994],[-61.71552734375,12.012646484374997]]]},"properties":{"name":"Grenada","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-46.266699218750006,60.781396484374994],[-46.381542968749955,60.66030273437502],[-46.7880859375,60.758398437500034],[-46.205224609374994,60.943505859374994],[-46.266699218750006,60.781396484374994]]],[[[-37.03125,65.53198242187497],[-37.23842773437494,65.60986328125003],[-37.047509765624966,65.722265625],[-37.03125,65.53198242187497]]],[[[-51.01367187499994,69.55249023437497],[-51.202050781249966,69.525],[-51.33886718749994,69.73203125000006],[-51.094580078125006,69.92416992187503],[-50.67900390624999,69.84853515625],[-51.01367187499994,69.55249023437497]]],[[[-52.73115234375001,69.94472656250005],[-52.0453125,69.8072265625],[-51.90019531249999,69.60478515625007],[-53.57841796874996,69.25664062500002],[-54.18271484374995,69.40351562500001],[-53.65830078124998,69.46513671875005],[-53.825,69.54033203124999],[-54.91914062499998,69.71362304687503],[-54.78789062499996,69.94985351562502],[-54.322607421875034,69.94189453125],[-54.83076171875001,70.13295898437502],[-54.37163085937499,70.31728515625],[-53.296728515625034,70.20537109375002],[-52.73115234375001,69.94472656250005]]],[[[-51.67514648437498,70.855224609375],[-52.11938476562497,70.87065429687502],[-52.10673828124999,70.96801757812497],[-51.67514648437498,70.855224609375]]],[[[-25.43232421875001,70.92133789062495],[-25.402246093749994,70.65268554687503],[-26.217871093749977,70.45405273437498],[-26.604687499999926,70.55336914062497],[-28.03525390624995,70.48681640625],[-27.61723632812496,70.91376953125001],[-26.621777343749955,70.87563476562497],[-25.81889648437499,71.04365234375001],[-25.43232421875001,70.92133789062495]]],[[[-53.53520507812493,71.04082031250005],[-53.9578125,71.12773437499999],[-53.58447265625003,71.29707031249995],[-53.53520507812493,71.04082031250005]]],[[[-55.01689453124999,72.79111328125003],[-55.56660156249998,72.56435546875002],[-56.214794921874955,72.71918945312495],[-55.01689453124999,72.79111328125003]]],[[[-18.000537109374932,75.40732421875003],[-17.391992187499937,75.03691406250007],[-18.670800781249966,75.00166015624998],[-18.856054687499977,75.31914062500002],[-18.000537109374932,75.40732421875003]]],[[[-18.58261718749995,76.042333984375],[-19.085351562499966,76.43037109375001],[-18.882470703124937,76.70380859375001],[-18.58261718749995,76.042333984375]]],[[[-71.667333984375,77.32529296874998],[-72.48955078124999,77.43164062499997],[-71.43344726562495,77.394384765625],[-71.667333984375,77.32529296874998]]],[[[-17.6125,79.82587890624995],[-18.662011718749966,79.72001953125005],[-19.13828125,79.85234375000002],[-17.98291015625,80.05517578125003],[-17.471386718749955,80.02871093749997],[-17.6125,79.82587890624995]]],[[[-44.86455078124999,82.08364257812502],[-46.75190429687501,82.34819335937502],[-47.27226562499996,82.65693359375001],[-46.399169921875,82.692138671875],[-44.91748046875003,82.48051757812505],[-44.86455078124999,82.08364257812502]]],[[[-29.952880859375,83.56484374999997],[-25.795068359374994,83.26098632812497],[-31.99267578125,83.0853515625],[-32.03271484374997,82.98344726562502],[-25.12338867187495,83.15961914062501],[-24.47031249999995,82.87739257812498],[-21.582519531249943,82.6341796875],[-23.118066406249966,82.32470703125003],[-29.57939453124996,82.16118164062502],[-29.887402343749983,82.05483398437502],[-29.543847656249994,81.93994140624997],[-27.839501953124966,82.04887695312505],[-25.148828124999966,82.001123046875],[-24.293066406249977,81.70097656250005],[-23.103710937499983,82.01181640625003],[-21.337988281249977,82.068701171875],[-21.230517578125017,81.60136718749999],[-23.11772460937499,80.77817382812498],[-19.62993164062499,81.63989257812503],[-17.456054687499943,81.397705078125],[-16.12070312499995,81.776611328125],[-14.241992187500017,81.81386718750005],[-12.434423828125006,81.68251953125002],[-11.430664062499972,81.45683593750005],[-13.126220703124972,81.08779296875],[-14.452343749999955,80.99311523437498],[-14.503564453124994,80.76328125000006],[-16.76059570312492,80.573388671875],[-15.937255859374972,80.42763671874997],[-16.48876953124997,80.25195312499997],[-18.070947265624994,80.17207031249995],[-19.429199218749943,80.25771484375],[-20.150146484375,80.01123046874997],[-18.99199218749996,79.17836914062502],[-21.133740234374926,78.65864257812501],[-21.729589843749977,77.70854492187499],[-20.862597656249932,77.91186523437503],[-19.490429687499983,77.71889648437497],[-19.46752929687503,77.56582031250005],[-20.162060546874926,77.68984375],[-20.680810546875023,77.61899414062503],[-20.23193359374997,77.36840820312497],[-19.30029296874997,77.22236328124995],[-18.442626953124943,77.259375],[-18.51030273437496,76.77817382812498],[-20.48671875,76.92080078125],[-21.614697265624926,76.68789062499997],[-22.18525390625001,76.79409179687502],[-22.609326171874983,76.70429687500004],[-21.877343749999966,76.57348632812503],[-21.488232421874926,76.271875],[-20.10361328124992,76.21909179687503],[-19.508984374999926,75.75751953124995],[-19.52636718750003,75.18022460937505],[-20.484960937500006,75.31425781249999],[-21.649316406249966,75.02343749999997],[-22.232861328124926,75.11972656249998],[-21.69511718749999,74.96445312500003],[-20.985791015624983,75.07436523437497],[-20.86157226562497,74.63593750000001],[-20.41708984374995,74.9751953125],[-19.98491210937499,74.9751953125],[-19.287011718750023,74.54638671875006],[-19.36914062499997,74.28403320312498],[-20.256445312499977,74.2828125],[-20.653125,74.13735351562502],[-21.954931640624977,74.24428710937497],[-21.942919921874932,74.56572265624999],[-22.32158203124999,74.30253906250002],[-22.134814453124932,73.99047851562503],[-20.36728515624992,73.8482421875],[-20.509667968749966,73.49287109375001],[-22.346875,73.26923828125001],[-23.23320312499999,73.39770507812497],[-24.157714843749943,73.76445312499999],[-24.67724609375,73.602197265625],[-25.521289062500017,73.85161132812499],[-24.79125976562497,73.51127929687502],[-26.062304687500017,73.25302734375],[-27.270410156250023,73.43627929687503],[-26.541845703125006,73.24897460937495],[-27.561621093750006,73.13847656250002],[-27.348046875000023,73.06782226562501],[-25.057031250000023,73.396484375],[-24.132666015625006,73.409375],[-22.036328124999955,72.91845703125006],[-22.29321289062497,72.11953125],[-24.06904296875001,72.49873046874998],[-24.629980468749977,73.03764648437499],[-26.657617187499966,72.71582031249997],[-24.81333007812492,72.90151367187497],[-24.65,72.58251953125],[-25.117871093749983,72.34697265625005],[-24.66684570312492,72.437353515625],[-21.959667968749955,71.74467773437502],[-22.479638671874937,71.38344726562497],[-22.417578125,71.24868164062505],[-22.29902343750001,71.43232421874998],[-21.75224609374999,71.47832031250002],[-21.522656249999926,70.52622070312503],[-22.38413085937492,70.46240234375],[-22.437011718749943,70.860009765625],[-22.690673828124943,70.43730468750002],[-23.327832031249983,70.45097656250007],[-23.97138671875001,70.64946289062499],[-24.562207031249926,71.22353515624997],[-25.885156249999966,71.571923828125],[-27.08720703124999,71.6265625],[-27.107031250000034,71.53266601562498],[-25.842724609374955,71.48017578124995],[-25.74223632812499,71.18359375],[-26.717919921874994,70.95048828125005],[-28.39843749999997,70.99291992187497],[-27.99218749999997,70.89521484374998],[-28.06987304687499,70.69902343750005],[-29.07207031249999,70.444970703125],[-26.621777343749955,70.46337890625],[-26.576806640625023,70.35708007812502],[-27.560839843749932,70.12446289062498],[-27.384179687500023,69.9916015625],[-27.027734374999966,70.20122070312499],[-25.529882812499977,70.35317382812502],[-23.66733398437495,70.139306640625],[-22.28447265624996,70.12583007812498],[-22.287060546874955,70.03339843749998],[-23.03364257812501,69.90083007812498],[-23.04956054687497,69.79272460937497],[-23.86572265624997,69.73671875000002],[-23.739404296874994,69.58862304687497],[-24.296679687500017,69.58554687500006],[-24.295556640624966,69.439306640625],[-25.188574218750006,69.26054687500002],[-25.092431640624937,69.16518554687502],[-25.697998046874943,68.889892578125],[-26.48291015624997,68.67592773437502],[-29.24951171874997,68.29877929687501],[-29.86850585937495,68.31157226562505],[-30.318115234375,68.19331054687501],[-30.72001953124999,68.25117187499998],[-30.610742187499994,68.11791992187503],[-30.97856445312499,68.06132812500005],[-32.32744140624999,68.43730468749999],[-32.16455078125,67.99111328125002],[-33.15698242187497,67.62670898437506],[-34.1982421875,66.65507812499999],[-35.18857421874995,66.25029296875002],[-35.86723632812502,66.44140624999997],[-35.630078124999926,66.13994140625002],[-36.37919921874996,65.830810546875],[-36.52724609375002,66.00771484375],[-36.665185546874966,65.79008789062507],[-37.06279296874996,65.87143554687503],[-37.410058593749994,65.65634765625],[-37.954785156249955,65.63359375000007],[-37.278710937499994,66.30439453124995],[-38.156640624999966,66.38559570312498],[-37.75234375000002,66.26152343750002],[-38.13994140625002,65.90351562499998],[-38.52036132812498,66.00966796875002],[-38.20336914062497,65.71171874999999],[-40.17353515624998,65.55615234375],[-39.57792968749996,65.34077148437501],[-39.937255859375,65.14160156250003],[-40.253125,65.04887695312505],[-41.08442382812501,65.10083007812497],[-40.966015624999955,64.86884765624995],[-40.655468749999926,64.91533203125002],[-40.18222656249998,64.47993164062495],[-40.78173828125,64.22177734375003],[-41.581005859374926,64.29833984375],[-41.03056640624996,64.12104492187504],[-40.61777343749998,64.13173828125],[-40.550390625000034,63.72524414062505],[-40.77519531249999,63.53364257812501],[-41.04873046875002,63.51381835937505],[-41.387890624999926,63.06186523437498],[-41.84448242187497,63.07026367187501],[-42.174511718749955,63.20878906249999],[-41.63447265624998,62.972460937500074],[-41.90898437499996,62.73710937499999],[-42.94165039062503,62.72021484375003],[-42.15297851562502,62.568457031250006],[-42.32148437499998,62.15273437500005],[-42.110205078125006,61.857226562500074],[-42.58530273437498,61.71748046875001],[-42.34736328125001,61.61743164062497],[-42.717041015625,60.767480468749994],[-43.04409179687502,60.523681640625],[-43.92270507812495,60.59536132812502],[-43.21298828124998,60.390673828125074],[-43.122900390625006,60.06123046875001],[-43.32011718749993,59.928125],[-43.95502929687498,60.025488281250006],[-43.65791015625001,59.85864257812503],[-43.90654296874996,59.815478515625045],[-44.11699218750002,59.83193359375002],[-44.06547851562499,59.92480468750003],[-44.412939453125006,59.922607421875],[-44.22436523437494,60.273535156250006],[-44.61328124999997,60.01665039062499],[-45.37924804687495,60.20292968750002],[-45.367773437500006,60.37294921875002],[-44.97470703124995,60.457226562499955],[-44.756738281249966,60.66459960937502],[-45.38051757812494,60.444921875],[-46.04663085937503,60.61572265625],[-46.141943359375006,60.776513671874994],[-45.87021484374998,61.21831054687502],[-46.87446289062501,60.81640625000003],[-48.180810546874966,60.76923828125001],[-47.77031249999999,60.99775390625001],[-48.386425781249926,61.004736328125034],[-48.42817382812501,61.18740234375002],[-48.92207031249998,61.27744140624998],[-49.28906249999997,61.58994140625006],[-49.380273437499994,61.89018554687502],[-48.82871093749998,62.0796875],[-49.62377929687494,61.99858398437499],[-49.553466796875,62.23271484374999],[-50.319238281249966,62.473193359375045],[-50.298730468749966,62.72197265625002],[-49.793115234374994,63.04462890625004],[-50.39008789062501,62.82202148437497],[-51.46884765624995,63.64228515625001],[-51.547509765624994,64.00610351562497],[-50.260693359374955,64.21425781250002],[-50.48662109374996,64.20888671875],[-50.43706054687499,64.31284179687503],[-51.58491210937498,64.10317382812502],[-51.70786132812498,64.205078125],[-51.403759765624926,64.46318359375002],[-50.49208984375002,64.69316406250005],[-50.00898437500001,64.44726562499997],[-50.12163085937493,64.703759765625],[-50.51699218750002,64.76650390625],[-50.96064453124998,65.20112304687498],[-50.721582031249966,64.79760742187503],[-51.22060546875002,64.62846679687502],[-51.25537109375,64.75810546875005],[-51.92260742187503,64.21875],[-52.259033203125,65.154931640625],[-52.537695312500034,65.32880859374998],[-51.61914062500003,65.71318359375002],[-51.091894531250006,65.77578125],[-51.7234375,65.723486328125],[-52.55126953125003,65.46137695312498],[-52.760937499999926,65.59082031249997],[-53.198974609375,65.59404296875002],[-53.106347656249966,65.97714843749998],[-53.39204101562498,66.04833984375],[-51.225,66.88154296875001],[-53.035791015624966,66.20141601562503],[-53.538769531249955,66.13935546874998],[-53.41875,66.64853515624998],[-53.038281249999955,66.82680664062497],[-52.38686523437502,66.88115234375005],[-53.44360351562503,66.924658203125],[-53.88442382812502,67.13554687499999],[-53.79858398437494,67.41816406250001],[-52.666455078124955,67.74970703124995],[-50.613476562499955,67.5279296875],[-51.171044921874966,67.693603515625],[-50.96884765624998,67.80664062500003],[-51.765234375000034,67.73784179687505],[-52.34482421874998,67.83691406249997],[-53.735205078125006,67.54902343750004],[-53.151562499999926,68.20776367187503],[-51.779980468749926,68.05673828124998],[-51.456494140624926,68.116064453125],[-51.21015625000001,68.419921875],[-52.19853515624993,68.22080078125],[-53.38315429687495,68.29736328124997],[-53.03945312500002,68.61088867187499],[-52.60458984374998,68.70874023437503],[-51.62314453124995,68.53481445312505],[-50.945703124999966,68.68266601562505],[-50.807714843750006,68.81699218749998],[-51.24941406250002,68.73994140625001],[-51.084863281249994,69.12827148437498],[-50.29736328124994,69.17060546874998],[-51.07695312499996,69.20947265625],[-50.291699218749955,70.01445312500005],[-52.254638671875,70.05893554687503],[-53.02304687499995,70.30190429687497],[-54.01445312499996,70.42167968750005],[-54.53076171875,70.69926757812502],[-54.16582031249999,70.82011718750005],[-52.801953124999955,70.7505859375],[-50.87236328124993,70.36489257812502],[-50.66328124999998,70.417578125],[-51.32285156249998,70.58876953124997],[-51.25659179687497,70.85268554687502],[-51.77431640625002,71.01044921875001],[-51.018945312499966,71.001318359375],[-51.37666015625001,71.11904296875],[-53.007568359375,71.17998046874999],[-52.89184570312497,71.457666015625],[-51.76992187500002,71.67172851562498],[-53.44008789062502,71.57900390625002],[-53.14453125000003,71.80742187500002],[-53.65214843749996,72.36264648437506],[-53.92773437499997,72.31879882812501],[-53.47758789062502,71.84995117187506],[-54.01992187500002,71.657861328125],[-53.96298828124995,71.45898437499997],[-54.6890625,71.36723632812505],[-55.59404296874999,71.55351562500005],[-55.315576171874994,72.11069335937498],[-54.84013671874996,72.35610351562497],[-55.581445312499994,72.178857421875],[-55.63583984374998,72.300439453125],[-55.29570312499996,72.35439453124997],[-55.60170898437494,72.453466796875],[-54.924951171874994,72.57197265624998],[-54.737939453124994,72.87250976562501],[-55.07309570312498,73.01513671875003],[-55.28891601562498,72.93320312500003],[-55.66855468749998,73.00791015624998],[-55.288281249999955,73.32709960937498],[-56.10405273437496,73.55815429687499],[-55.83828125,73.75971679687501],[-56.22539062499999,74.12910156249995],[-57.23056640624995,74.12529296875007],[-56.70634765625002,74.21918945312501],[-56.717675781249994,74.42924804687499],[-56.25546874999998,74.52680664062498],[-58.56552734374998,75.35273437500001],[-58.249658203124994,75.50668945312503],[-58.51621093749995,75.68906250000006],[-61.18823242187494,76.157861328125],[-63.29130859374996,76.35205078125003],[-63.84306640624999,76.21713867187498],[-64.307275390625,76.31650390624998],[-65.36992187499993,76.13056640625004],[-65.87573242187494,76.23833007812505],[-66.46577148437498,76.13916015625],[-66.99257812500002,76.21293945312502],[-66.67480468750003,75.977392578125],[-68.14873046875002,76.06704101562497],[-69.48408203125001,76.39916992187503],[-68.1142578125,76.65063476562503],[-69.67382812499994,76.73588867187507],[-69.69423828125002,76.98945312500004],[-70.613134765625,76.82182617187499],[-71.14145507812498,77.02866210937503],[-70.86284179687496,77.175439453125],[-68.97832031250002,77.19531250000006],[-68.13554687499999,77.37958984375001],[-66.38945312499999,77.28027343750003],[-66.69121093749999,77.68120117187502],[-67.68808593749995,77.523779296875],[-68.62153320312498,77.60185546875002],[-69.35136718749999,77.467138671875],[-70.53540039062497,77.699560546875],[-70.11445312500001,77.84135742187505],[-71.27163085937494,77.81313476562497],[-72.81806640624995,78.1943359375],[-72.47250976562498,78.48203125],[-71.65131835937493,78.62314453124998],[-68.99345703124999,78.857421875],[-68.37705078124998,79.037841796875],[-65.82553710937503,79.17373046874997],[-64.79228515624993,80.00063476562502],[-64.17915039062498,80.09926757812497],[-66.84365234374997,80.07622070312507],[-67.05063476562503,80.384521484375],[-64.51552734374997,81],[-63.72197265624993,81.05732421875001],[-63.028662109375006,80.88955078125002],[-62.90336914062496,81.21835937500003],[-61.43598632812498,81.13359375000002],[-60.842871093750034,81.85537109374997],[-59.28193359374998,81.88403320312503],[-56.615136718749994,81.362890625],[-59.26181640624998,82.00664062500005],[-54.54887695312496,82.35063476562505],[-53.671337890624955,82.16406249999997],[-53.55566406250003,81.65327148437501],[-53.022558593750034,82.32172851562504],[-50.894433593749994,81.89521484375001],[-49.54106445312496,81.91806640625003],[-50.93554687500003,82.38281250000003],[-50.03710937499994,82.472412109375],[-44.7294921875,81.77983398437505],[-44.23886718749998,82.3681640625],[-45.55654296875002,82.74702148437498],[-41.87646484375,82.680322265625],[-41.36962890625003,82.75],[-46.136816406250006,82.85883789062504],[-46.169042968750006,83.06386718749997],[-45.41459960937496,83.01767578124998],[-43.00927734375003,83.26459960937501],[-41.300146484375006,83.10078125000004],[-40.35683593750002,83.332177734375],[-38.15625,82.9986328125],[-38.74956054687496,83.37084960937497],[-37.72333984374998,83.49775390624998],[-29.952880859375,83.56484374999997]]]]},"properties":{"name":"Greenland","childNum":14}},{"geometry":{"type":"Polygon","coordinates":[[[-89.2328125,15.888671875],[-88.89404296875,15.890625],[-88.60336914062499,15.76416015625],[-88.5939453125,15.950292968749991],[-88.22832031249999,15.72900390625],[-88.271435546875,15.694873046875003],[-88.36455078124999,15.616015625],[-88.68447265625,15.360498046874994],[-88.96098632812499,15.152441406249991],[-89.142578125,15.072314453125003],[-89.22236328125,14.866064453124991],[-89.16220703124999,14.669238281250003],[-89.17177734375,14.606884765624997],[-89.28671875,14.529980468749997],[-89.36259765624999,14.416015625],[-89.5736328125,14.390087890624997],[-89.54716796874999,14.241259765625003],[-90.04814453124999,13.904052734375],[-90.09521484375,13.736523437499997],[-90.60693359375,13.929003906250003],[-91.37734375,13.990185546874997],[-92.23515624999999,14.54541015625],[-92.15854492187499,14.963574218749997],[-92.14423828125,15.001953125],[-92.09873046874999,15.026757812499994],[-92.07480468749999,15.07421875],[-92.187158203125,15.320898437499991],[-92.08212890624999,15.495556640624997],[-91.9572265625,15.703222656249991],[-91.736572265625,16.07016601562499],[-91.433984375,16.070458984374994],[-90.97958984374999,16.07080078125],[-90.70322265624999,16.071044921875],[-90.52197265625,16.071191406249994],[-90.44716796875,16.072705078124997],[-90.45986328125,16.162353515625],[-90.450146484375,16.261376953124994],[-90.4169921875,16.351318359375],[-90.4169921875,16.39101562499999],[-90.47109375,16.43955078124999],[-90.57578125,16.467822265625003],[-90.63408203124999,16.5107421875],[-90.634375,16.565136718749997],[-90.65996093749999,16.630908203125003],[-90.710693359375,16.70810546874999],[-90.975830078125,16.867822265624994],[-91.409619140625,17.255859375],[-91.1955078125,17.254101562499997],[-90.99296874999999,17.25244140625],[-90.98916015625,17.81640625],[-89.16147460937499,17.81484375],[-89.2328125,15.888671875]]]},"properties":{"name":"Guatemala","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[144.74179687500003,13.25927734375],[144.64931640625002,13.4287109375],[144.87539062500002,13.614648437499994],[144.94082031250002,13.5703125],[144.74179687500003,13.25927734375]]]},"properties":{"name":"Guam","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-57.194775390625,5.5484375],[-57.3185546875,5.335351562499994],[-57.20981445312499,5.195410156249991],[-57.331005859375,5.020166015624994],[-57.711083984374994,4.991064453124991],[-57.91704101562499,4.820410156249991],[-57.84599609374999,4.668164062499997],[-58.05429687499999,4.101660156249991],[-57.646728515625,3.39453125],[-57.303662109375,3.377099609374994],[-57.19736328124999,2.853271484375],[-56.704345703125,2.036474609374991],[-56.4828125,1.942138671875],[-56.96953124999999,1.91640625],[-57.03759765625,1.936474609374997],[-57.092675781249994,2.005810546874997],[-57.118896484375,2.013964843749989],[-57.31748046874999,1.963476562499991],[-57.41269531249999,1.908935546875],[-57.500439453125,1.77382812499999],[-57.54575195312499,1.72607421875],[-57.59443359375,1.7041015625],[-57.795654296875,1.7],[-57.8734375,1.667285156249989],[-57.9828125,1.6484375],[-58.03466796875,1.520263671875],[-58.34067382812499,1.587548828124994],[-58.38037109375,1.530224609374997],[-58.39580078124999,1.481738281249989],[-58.5060546875,1.438671875],[-58.511865234374994,1.28466796875],[-58.68461914062499,1.281054687499989],[-58.73032226562499,1.247509765624997],[-58.78720703124999,1.20849609375],[-58.82177734375,1.201220703124989],[-59.231201171875,1.376025390624989],[-59.53569335937499,1.7],[-59.66660156249999,1.746289062499997],[-59.66850585937499,1.842333984374989],[-59.74072265625,1.874169921874994],[-59.75620117187499,1.900634765625],[-59.75522460937499,2.274121093749997],[-59.8896484375,2.362939453124994],[-59.9943359375,2.689990234374989],[-59.854394531249994,3.5875],[-59.55112304687499,3.933544921874997],[-59.557763671874994,3.960009765624989],[-59.62021484374999,4.023144531249997],[-59.73857421874999,4.226757812499997],[-59.69970703125,4.353515625],[-60.1486328125,4.533251953124989],[-59.990673828125,5.082861328124991],[-60.142041015625,5.238818359374989],[-60.241650390625,5.257958984374994],[-60.335205078125,5.199316406249991],[-60.45952148437499,5.188085937499991],[-60.6513671875,5.221142578124997],[-60.742138671875,5.202050781249994],[-61.37680664062499,5.906982421875],[-61.3908203125,5.938769531249989],[-61.303125,6.049511718749997],[-61.22495117187499,6.129199218749989],[-61.15947265624999,6.174414062499991],[-61.12871093749999,6.214306640624997],[-61.152294921875,6.385107421874991],[-61.151025390624994,6.446533203125],[-61.181591796875,6.513378906249997],[-61.20361328125,6.58837890625],[-61.14560546874999,6.69453125],[-60.717919921874994,6.768310546875],[-60.35209960937499,7.002880859374997],[-60.32207031249999,7.092041015625],[-60.32548828124999,7.133984375],[-60.34506835937499,7.15],[-60.46494140624999,7.166552734374989],[-60.523193359375,7.143701171874994],[-60.583203125,7.156201171874997],[-60.63330078125,7.211083984374994],[-60.718652343749994,7.535937499999989],[-60.513623046875,7.813183593749997],[-60.032421875,8.053564453124991],[-59.99072265625,8.162011718749994],[-59.96484375,8.191601562499997],[-59.849072265625,8.248681640624994],[-59.83164062499999,8.305957031249989],[-60.017529296875,8.54931640625],[-59.20024414062499,8.07460937499999],[-58.51108398437499,7.39804687499999],[-58.48056640624999,7.038134765624989],[-58.67294921874999,6.390771484374994],[-58.414990234375,6.85117187499999],[-57.982568359374994,6.785888671875],[-57.54013671874999,6.33154296875],[-57.2275390625,6.178417968749997],[-57.194775390625,5.5484375]]]},"properties":{"name":"Guyana","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[73.70742187500002,-53.13710937499999],[73.46513671875002,-53.184179687500006],[73.25117187500001,-52.97578125000001],[73.83779296875002,-53.11279296875],[73.70742187500002,-53.13710937499999]]]},"properties":{"name":"Heard I. and McDonald Is.","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-83.635498046875,14.876416015624997],[-84.53764648437496,14.633398437499963],[-84.64594726562498,14.661083984375011],[-84.86044921874998,14.809765625000011],[-84.98515624999999,14.752441406249972],[-85.059375,14.582958984374997],[-85.20834960937498,14.311816406250003],[-85.73393554687496,13.85869140625006],[-85.75341796875,13.852050781250028],[-85.78671874999995,13.844433593749997],[-85.98378906249997,13.965673828125006],[-86.04038085937503,14.050146484374977],[-86.33173828124995,13.770068359375031],[-86.37695312500003,13.755664062500031],[-86.61025390624997,13.774853515625026],[-86.73364257812494,13.763476562500017],[-86.75898437499995,13.746142578125045],[-86.77060546875003,13.698730468749972],[-86.763525390625,13.635253906250014],[-86.72958984375,13.4072265625],[-86.710693359375,13.31337890624998],[-86.72929687499996,13.284375],[-86.79213867187497,13.279785156249972],[-86.87353515624994,13.266503906250023],[-86.918212890625,13.223583984374983],[-87.00932617187499,13.007812499999986],[-87.0591796875,12.991455078125028],[-87.337255859375,12.979248046875028],[-87.48911132812503,13.352929687500051],[-87.814208984375,13.399169921875057],[-87.781884765625,13.521386718749994],[-87.71533203125003,13.812695312500011],[-87.73144531250003,13.841064453125014],[-87.80224609374997,13.889990234375034],[-87.89199218749997,13.894970703124983],[-87.99101562499996,13.879638671874972],[-88.15102539062497,13.987353515624974],[-88.44912109374994,13.850976562499994],[-88.48266601562503,13.854248046875043],[-88.49765624999998,13.904541015624986],[-88.50434570312501,13.964208984374963],[-88.51254882812498,13.97895507812504],[-89.12050781249994,14.370214843749991],[-89.36259765624996,14.416015625],[-89.17177734375,14.606884765624983],[-89.16220703125,14.669238281249989],[-89.22236328125001,14.86606445312502],[-89.142578125,15.072314453125031],[-88.96098632812496,15.15244140625002],[-88.68447265625002,15.360498046875037],[-88.36455078124996,15.616015625000045],[-88.27143554687498,15.694873046875045],[-88.22832031249999,15.729003906249972],[-88.131103515625,15.701025390625034],[-87.87495117187495,15.879345703124955],[-86.35664062499998,15.783203125],[-85.93627929687497,15.953417968750045],[-85.98564453124999,16.02416992187497],[-85.48369140624996,15.899511718749977],[-84.97373046874998,15.989892578124994],[-84.55966796875,15.802001953125],[-84.26142578124998,15.822607421875034],[-83.765283203125,15.405468750000054],[-83.972802734375,15.519628906250034],[-84.11132812499997,15.492431640625],[-84.09506835937503,15.400927734375017],[-83.92744140624998,15.394042968750028],[-83.76044921874998,15.220361328124994],[-83.49794921874997,15.222119140624997],[-83.64638671875,15.368408203125043],[-83.36918945312493,15.239990234375],[-83.29086914062498,15.078906250000045],[-83.2255859375,15.042285156250045],[-83.15751953124999,14.993066406249966],[-83.41503906249994,15.008056640625],[-83.5365234375,14.977001953124983],[-83.635498046875,14.876416015624997]]]},"properties":{"name":"Honduras","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[17.60781250000005,42.76904296875],[17.744238281250063,42.70034179687505],[17.34414062500008,42.790380859375006],[17.60781250000005,42.76904296875]]],[[[16.650683593750017,42.99658203125],[17.188281250000045,42.917041015625045],[16.850683593750006,42.8955078125],[16.650683593750017,42.99658203125]]],[[[17.667578125000063,42.897119140624994],[18.436328125000017,42.559716796874994],[18.517480468750023,42.43291015624999],[17.823828125,42.79741210937502],[17.045410156250057,43.014892578125],[17.667578125000063,42.897119140624994]]],[[[16.785253906250006,43.270654296874966],[16.490332031250034,43.28618164062502],[16.44892578125004,43.38706054687506],[16.89130859375001,43.314648437499955],[16.785253906250006,43.270654296874966]]],[[[15.371386718750074,43.973828124999955],[15.437207031250068,43.899511718750006],[15.270019531250028,44.01074218750003],[15.371386718750074,43.973828124999955]]],[[[14.488085937500074,44.66005859375005],[14.31240234375008,44.90039062499997],[14.33125,45.16499023437498],[14.488085937500074,44.66005859375005]]],[[[14.810253906250068,44.97705078124997],[14.45039062500004,45.079199218750006],[14.571093750000017,45.224755859374994],[14.810253906250068,44.97705078124997]]],[[[18.905371093750006,45.931738281250034],[18.839062499999983,45.83574218750002],[19.064257812500045,45.51499023437506],[19.004687500000074,45.39951171875006],[19.4,45.2125],[19.062890625000023,45.13720703125],[19.007128906250045,44.86918945312502],[18.83642578125,44.883251953124955],[18.66259765625,45.07744140624999],[17.812792968750074,45.078125],[16.918652343749983,45.27656249999998],[16.53066406250008,45.21669921875002],[16.29335937500005,45.00883789062496],[16.028320312500057,45.18959960937502],[15.788085937500057,45.17895507812497],[15.736621093750045,44.76582031250001],[16.10341796875008,44.52099609375006],[16.300097656250017,44.12451171875],[17.27382812500005,43.44575195312501],[17.650488281250063,43.006591796875],[17.585156250000068,42.93837890625005],[16.903125,43.392431640625006],[16.393945312500023,43.54335937500002],[15.985546875000068,43.519775390625],[15.185839843750017,44.17211914062503],[15.122949218749994,44.256787109374955],[15.470996093750045,44.27197265625003],[14.981347656250023,44.60292968750005],[14.854589843750034,45.08100585937501],[14.550488281249983,45.297705078125006],[14.31269531250004,45.33779296875002],[13.86074218750008,44.83740234375003],[13.517187500000063,45.481787109375034],[13.878710937500017,45.428369140624994],[14.369921875000074,45.48144531250006],[14.427343750000034,45.50576171875002],[14.56884765625,45.65722656249997],[14.591796875000057,45.65126953125002],[14.649511718750006,45.57148437500001],[14.793066406250034,45.47822265625001],[14.95458984375,45.499902343749994],[15.110449218750034,45.450781250000034],[15.242089843750023,45.44140624999997],[15.339453125000063,45.46704101562506],[15.326660156250028,45.502294921875034],[15.291210937500011,45.541552734375045],[15.283593750000051,45.5796875],[15.35371093750004,45.659912109375],[15.27705078125004,45.73261718749998],[15.652148437500074,45.86215820312498],[15.675585937500045,45.98369140624996],[15.666210937500011,46.04848632812502],[15.596875,46.10922851562506],[15.592578125000017,46.139990234375006],[15.608984374999977,46.171923828125045],[16.1064453125,46.382226562499994],[16.32119140625005,46.53461914062504],[16.42763671875005,46.5244140625],[16.516210937499977,46.499902343749966],[16.569921875,46.48500976562505],[16.748046875000057,46.41640625000002],[16.87148437500008,46.33930664062504],[17.310644531250006,45.99614257812502],[17.80712890625,45.79042968750002],[18.358300781250023,45.75302734375006],[18.533593750000023,45.79614257812503],[18.56464843750004,45.81328124999999],[18.666015625,45.90747070312497],[18.905371093750006,45.931738281250034]]]]},"properties":{"name":"Croatia","childNum":8}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-72.80458984374997,18.777685546875063],[-72.82221679687501,18.707128906249977],[-73.07797851562498,18.790917968749994],[-73.27641601562499,18.95405273437501],[-72.80458984374997,18.777685546875063]]],[[[-71.647216796875,19.195947265624994],[-71.80712890624997,18.987011718749983],[-71.733642578125,18.85639648437501],[-71.72705078125,18.80322265625003],[-71.74321289062502,18.73291015625],[-71.86650390624999,18.61416015625005],[-71.98686523437499,18.61035156249997],[-72.000390625,18.59790039062503],[-71.94038085937493,18.51259765625005],[-71.87255859374997,18.416210937499955],[-71.76191406249998,18.34130859374997],[-71.73725585937495,18.27080078124999],[-71.76831054687497,18.039160156250063],[-71.85292968749997,18.119140625],[-71.94609375,18.186083984375045],[-72.05986328124993,18.228564453125017],[-72.87666015624998,18.151757812499994],[-73.38515625000002,18.251171874999983],[-73.747314453125,18.190234375000017],[-73.88496093749998,18.041894531249994],[-74.478125,18.45],[-74.3875,18.624707031249983],[-74.22773437499998,18.662695312499977],[-72.78935546874996,18.434814453125],[-72.37607421874998,18.57446289062503],[-72.34765624999994,18.674951171874994],[-72.81108398437496,19.071582031250074],[-72.70322265625,19.441064453125023],[-73.43837890624994,19.722119140624983],[-73.21777343750003,19.88369140625005],[-72.63701171875002,19.90087890625],[-72.21982421875003,19.744628906250057],[-71.834716796875,19.696728515624983],[-71.77924804687498,19.718164062499994],[-71.75742187499998,19.68818359375001],[-71.71147460937493,19.486572265625057],[-71.74648437499997,19.28583984375001],[-71.647216796875,19.195947265624994]]]]},"properties":{"name":"Haiti","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[22.1318359375,48.405322265624996],[22.253710937500017,48.407373046874994],[22.582421875000023,48.134033203125],[22.769140625,48.109619140625],[22.87666015625001,47.947265625],[21.99970703125001,47.505029296874994],[21.121679687500006,46.282421875],[20.76025390625,46.246240234374994],[20.613671875000023,46.13349609375],[20.508105468750017,46.166943359375],[20.28095703125001,46.1330078125],[20.241796875,46.10859375],[20.21015625000001,46.126025390624996],[20.161425781250017,46.141894531249996],[19.93408203125,46.161474609375],[19.84443359375001,46.145898437499994],[19.61347656250001,46.169189453125],[19.421289062500023,46.064453125],[18.666015625,45.907470703125],[18.56464843750001,45.81328125],[18.533593750000023,45.796142578125],[18.358300781250023,45.75302734375],[17.80712890625,45.790429687499994],[17.310644531250006,45.996142578124996],[16.871484375000023,46.339306640625],[16.748046875,46.41640625],[16.569921875,46.485009765624994],[16.516210937500006,46.499902343749994],[16.283593750000023,46.857275390625],[16.093066406250017,46.86328125],[16.453417968750017,47.006787109375],[16.44287109375,47.39951171875],[16.676562500000017,47.536035156249994],[16.421289062500023,47.674462890624994],[17.06660156250001,47.707568359374996],[17.147363281250023,48.00595703125],[17.76191406250001,47.770166015624994],[18.72421875,47.787158203124996],[18.791894531250023,48.000292968749996],[19.625390625000023,48.223095703125],[19.95039062500001,48.146630859374994],[20.333789062500017,48.295556640624994],[20.490039062500017,48.526904296874996],[21.45136718750001,48.55224609375],[21.766992187500023,48.3380859375],[22.1318359375,48.405322265624996]]]},"properties":{"name":"Hungary","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[122.9489257812501,-10.90927734375002],[122.82617187500003,-10.899121093749983],[122.84570312500003,-10.761816406249991],[123.37109375000003,-10.474902343749989],[123.41816406250004,-10.651269531250037],[122.9489257812501,-10.90927734375002]]],[[[121.8830078125001,-10.590332031249957],[121.70468750000006,-10.5556640625],[121.99833984375002,-10.446972656249983],[121.8830078125001,-10.590332031249957]]],[[[123.41621093750004,-10.302636718749966],[123.3255859375,-10.264160156249943],[123.45878906250002,-10.13994140624996],[123.41621093750004,-10.302636718749966]]],[[[120.0125,-9.374707031250026],[120.78447265625002,-9.95703125],[120.83261718750006,-10.0375],[120.69804687500002,-10.206640624999949],[120.4391601562501,-10.294042968749991],[120.14482421875002,-10.200097656249952],[119.60107421874997,-9.773535156250006],[119.08544921875003,-9.706933593750023],[118.95878906250002,-9.519335937500003],[119.29589843749997,-9.3671875],[119.9420898437501,-9.301464843750026],[120.0125,-9.374707031250026]]],[[[125.06816406250002,-9.511914062499997],[124.42753906250002,-10.14863281250004],[123.7472656250001,-10.347167968749986],[123.60478515625002,-10.270117187500006],[123.71640625000012,-10.078613281249986],[123.5892578125,-9.966796875000028],[123.709375,-9.61484375],[124.0363281250001,-9.341601562500031],[124.28232421875012,-9.427929687500026],[124.44443359375012,-9.190332031250023],[124.92226562500005,-8.942480468749977],[124.93681640625007,-9.053417968750026],[125.14902343750012,-9.042578125000034],[125.10048828125,-9.189843750000023],[124.96015625000004,-9.213769531250009],[125.06816406250002,-9.511914062499997]]],[[[115.60996093750012,-8.769824218749974],[115.48046875000003,-8.715429687500006],[115.56142578125,-8.669921874999972],[115.60996093750012,-8.769824218749974]]],[[[122.97734375000002,-8.54521484374996],[122.88779296875006,-8.587304687500009],[123.01054687500002,-8.448339843750034],[123.153125,-8.475781250000026],[122.97734375000002,-8.54521484374996]]],[[[119.46406250000004,-8.741015624999974],[119.38554687500002,-8.736035156250026],[119.4464843750001,-8.429199218749957],[119.55722656250012,-8.518847656250003],[119.46406250000004,-8.741015624999974]]],[[[123.31748046875012,-8.354785156249974],[123.02500000000012,-8.395507812500014],[123.21708984375002,-8.235449218750006],[123.33603515625006,-8.269042968750014],[123.31748046875012,-8.354785156249974]]],[[[116.64082031250004,-8.613867187500006],[116.51425781250012,-8.820996093750011],[116.58652343750012,-8.886132812499966],[116.23935546875006,-8.912109375000014],[115.85732421875005,-8.787890625000017],[116.07646484375002,-8.744921874999974],[116.06113281250006,-8.437402343750023],[116.4015625000001,-8.204199218750034],[116.7189453125001,-8.336035156249977],[116.64082031250004,-8.613867187500006]]],[[[124.28662109375003,-8.32949218749998],[124.14667968750004,-8.531445312499997],[123.92773437500003,-8.448925781249969],[124.23955078125002,-8.20341796874996],[124.28662109375003,-8.32949218749998]]],[[[123.92480468750003,-8.2724609375],[123.55302734375007,-8.566796875],[123.23007812500006,-8.530664062500023],[123.47587890625007,-8.322265625000014],[123.39121093750012,-8.280468750000026],[123.77597656250006,-8.190429687499986],[123.92480468750003,-8.2724609375]]],[[[138.89511718750006,-8.388671874999957],[138.56337890625,-8.30908203125],[138.79619140625007,-8.173632812500017],[138.89511718750006,-8.388671874999957]]],[[[117.55634765625004,-8.367285156249949],[117.49052734375007,-8.183398437499974],[117.66503906249997,-8.148242187500003],[117.55634765625004,-8.367285156249949]]],[[[124.5755859375,-8.140820312499997],[125.05029296874997,-8.179589843749994],[125.13173828125,-8.326464843749989],[124.38066406250002,-8.41513671875002],[124.43066406249997,-8.18320312500002],[124.5755859375,-8.140820312499997]]],[[[127.8234375000001,-8.098828124999969],[128.11923828125012,-8.17070312499996],[128.02353515625006,-8.255371093749972],[127.82089843750012,-8.190234375000031],[127.8234375000001,-8.098828124999969]]],[[[122.7829101562501,-8.61171875],[121.65136718749997,-8.898730468749946],[121.41464843750006,-8.81484375],[121.32832031250004,-8.916894531250009],[121.03525390625012,-8.935449218749966],[120.55048828125004,-8.80185546875002],[119.909375,-8.857617187500011],[119.80791015625002,-8.697656250000023],[119.87480468750007,-8.419824218749994],[120.61025390625005,-8.24042968750004],[121.44453125000004,-8.57783203125004],[121.96650390625004,-8.455175781250006],[122.32324218749997,-8.628320312500023],[122.85048828125,-8.304394531250011],[122.91914062500004,-8.221875],[122.75859375000002,-8.185937499999952],[122.91699218749997,-8.105566406250006],[123.00595703125006,-8.329101562499986],[122.7829101562501,-8.61171875]]],[[[130.86220703125,-8.31875],[130.77519531250002,-8.34990234374996],[131.02011718750012,-8.091308593749943],[131.17636718750006,-8.130761718749994],[130.86220703125,-8.31875]]],[[[118.24238281250004,-8.317773437499994],[118.61191406250006,-8.28066406249998],[118.71386718749997,-8.41494140624998],[118.926171875,-8.297656249999974],[119.12968750000002,-8.668164062499969],[118.74589843750002,-8.735449218749991],[118.83261718750012,-8.833398437499966],[118.47861328125012,-8.856445312499957],[118.37890625000003,-8.674609375000031],[118.18994140624997,-8.840527343749997],[117.06132812500002,-9.099023437499994],[116.78847656250005,-9.006347656250028],[116.83505859375012,-8.532421875000026],[117.16484375000007,-8.367187500000014],[117.56708984375004,-8.426367187499991],[117.80605468750005,-8.711132812500011],[117.96953125000002,-8.728027343749986],[118.23486328124997,-8.591894531249963],[117.81484375000005,-8.342089843749974],[117.7552734375,-8.149511718749991],[118.11748046875007,-8.12226562500004],[118.24238281250004,-8.317773437499994]]],[[[115.44785156250012,-8.155175781249994],[115.70429687500004,-8.40712890624998],[115.14492187500005,-8.849023437500037],[115.05507812500005,-8.573046874999946],[114.61318359375,-8.37832031249998],[114.46757812500007,-8.166308593749946],[114.93847656249997,-8.18710937500002],[115.15400390625004,-8.065722656249974],[115.44785156250012,-8.155175781249994]]],[[[129.83886718749997,-7.954589843749986],[129.71347656250012,-8.04072265625004],[129.60898437500006,-7.803417968750011],[129.81298828124997,-7.819726562499952],[129.83886718749997,-7.954589843749986]]],[[[126.80097656250004,-7.667871093750009],[126.4720703125,-7.950390625000011],[126.04003906250003,-7.885839843750006],[125.79824218750005,-7.984570312499969],[125.97529296875004,-7.663378906249989],[126.21367187500002,-7.706738281250026],[126.60957031250004,-7.571777343749972],[126.80097656250004,-7.667871093750009]]],[[[127.41943359375003,-7.623046875000028],[127.37070312500012,-7.512792968749949],[127.47519531250012,-7.531054687500031],[127.41943359375003,-7.623046875000028]]],[[[138.53535156250004,-8.273632812499969],[138.2962890625,-8.405175781250037],[137.65039062499997,-8.386132812499966],[138.08183593750002,-7.566210937500003],[138.29550781250012,-7.4384765625],[138.76982421875002,-7.390429687499974],[138.98906250000002,-7.696093749999989],[138.53535156250004,-8.273632812499969]]],[[[131.3255859375,-7.999511718749986],[131.11376953125003,-7.997363281249989],[131.13779296875012,-7.684863281250017],[131.64345703125,-7.11279296875],[131.73613281250007,-7.197070312500017],[131.64384765625002,-7.266894531249946],[131.62441406250005,-7.626171874999955],[131.3255859375,-7.999511718749986]]],[[[131.98203125000006,-7.202050781249966],[131.75078125000002,-7.116796875],[131.92226562500005,-7.104492187499986],[131.98203125000006,-7.202050781249966]]],[[[128.6701171875001,-7.183300781249969],[128.52978515625003,-7.134570312499989],[128.62773437500007,-7.06875],[128.6701171875001,-7.183300781249969]]],[[[120.77441406250003,-7.118945312500003],[120.64082031250004,-7.115820312499991],[120.63339843750006,-7.018261718750011],[120.77441406250003,-7.118945312500003]]],[[[113.84453125000007,-7.105371093749994],[113.12695312499997,-7.224121093750028],[112.72587890625007,-7.072753906250014],[112.86806640625,-6.899902343749972],[113.06738281250003,-6.879980468749991],[113.97470703125012,-6.873046875],[114.0736328125,-6.960156249999983],[113.84453125000007,-7.105371093749994]]],[[[115.37705078125006,-6.97080078125002],[115.22031250000012,-6.952539062500037],[115.24052734375007,-6.861230468749994],[115.54609375000004,-6.938671874999955],[115.37705078125006,-6.97080078125002]]],[[[105.25283203125005,-6.640429687499946],[105.12138671875007,-6.614941406249997],[105.26054687500002,-6.523925781250014],[105.25283203125005,-6.640429687499946]]],[[[134.53681640625004,-6.442285156249994],[134.32275390624997,-6.84873046875002],[134.09082031249997,-6.833789062500003],[134.10703125000006,-6.471582031250009],[134.19462890625007,-6.459765625],[134.11464843750005,-6.190820312500009],[134.53681640625004,-6.442285156249994]]],[[[107.37392578125005,-6.007617187499989],[107.66679687500002,-6.215820312499957],[108.33017578125012,-6.286035156249966],[108.67783203125006,-6.790527343749972],[110.42626953124997,-6.947265625000028],[110.83476562500002,-6.424218749999952],[110.97226562500012,-6.435644531249977],[111.18154296875005,-6.686718749999969],[111.54033203125002,-6.648242187500031],[112.0873046875,-6.89335937499996],[112.53925781250004,-6.926464843749955],[112.64873046875007,-7.221289062499977],[112.7943359375,-7.304492187499974],[112.79453125000012,-7.55244140625004],[113.01357421875005,-7.657714843749986],[113.49765625000006,-7.723828124999955],[114.07070312500005,-7.633007812500011],[114.40927734375012,-7.79248046875],[114.38691406250004,-8.405175781250037],[114.58378906250002,-8.769628906250034],[113.25332031250005,-8.286718749999963],[112.67880859375006,-8.409179687499957],[111.50996093750004,-8.30507812499998],[110.60722656250002,-8.149414062499972],[109.28164062500005,-7.704882812500003],[108.74121093749997,-7.667089843750034],[108.45175781250006,-7.79697265625002],[107.91748046875003,-7.724121093750014],[107.28496093750007,-7.471679687500014],[106.45527343750004,-7.368652343749986],[106.51972656250004,-7.053710937499943],[106.19824218749997,-6.927832031249977],[105.25546875000012,-6.835253906250031],[105.37089843750002,-6.664355468750031],[105.48369140625007,-6.781542968750017],[105.65507812500002,-6.469531249999946],[105.78691406250002,-6.456933593749966],[105.86826171875006,-6.11640625000004],[106.075,-5.914160156249963],[106.82519531249997,-6.098242187499977],[107.0462890625,-5.90419921874998],[107.37392578125005,-6.007617187499989]]],[[[120.52832031249997,-6.2984375],[120.48730468749997,-6.464843749999972],[120.47734375000007,-5.775292968750009],[120.52832031249997,-6.2984375]]],[[[112.7194335937501,-5.81103515625],[112.58603515625006,-5.803613281249994],[112.69003906250006,-5.726171875000034],[112.7194335937501,-5.81103515625]]],[[[132.80712890625003,-5.850781250000011],[132.68144531250002,-5.91259765625],[132.63017578125002,-5.60703125],[132.80712890625003,-5.850781250000011]]],[[[134.74697265625,-5.707031249999957],[134.71416015625007,-6.29511718750004],[134.44111328125004,-6.334863281249966],[134.15488281250006,-6.06289062499998],[134.3019531250001,-6.009765624999986],[134.34306640625002,-5.833007812499943],[134.20537109375002,-5.707226562499997],[134.34130859375003,-5.712890624999986],[134.57080078124997,-5.42734375],[134.74697265625,-5.707031249999957]]],[[[132.92626953124997,-5.902050781249983],[132.84501953125002,-5.987988281249997],[133.13847656250002,-5.317871093749986],[133.11962890625003,-5.575976562499989],[132.92626953124997,-5.902050781249983]]],[[[102.36718750000003,-5.478710937499983],[102.1107421875,-5.32255859374996],[102.3717773437501,-5.366406250000011],[102.36718750000003,-5.478710937499983]]],[[[123.62675781250007,-5.271582031249963],[123.58261718750006,-5.36738281250004],[123.54277343750002,-5.271093749999963],[123.62675781250007,-5.271582031249963]]],[[[122.04296874999997,-5.437988281250028],[121.80849609375,-5.256152343750017],[121.91367187500012,-5.072265624999957],[122.04101562500003,-5.158789062499991],[122.04296874999997,-5.437988281250028]]],[[[122.64511718750012,-5.26943359374998],[122.5638671875,-5.3875],[122.28310546875,-5.319531249999969],[122.39628906250002,-5.069824218749986],[122.36894531250007,-4.767187499999977],[122.70195312500002,-4.61865234375],[122.75986328125012,-4.933886718750003],[122.61406250000007,-5.138671874999986],[122.64511718750012,-5.26943359374998]]],[[[123.17978515625006,-4.551171875000023],[123.195703125,-4.82265625],[123.05517578124997,-4.748242187500026],[122.97167968750003,-5.138476562500031],[123.18730468750007,-5.333007812499957],[122.96875,-5.405761718749943],[122.81210937500012,-5.671289062499952],[122.64501953124997,-5.663378906250031],[122.58642578124997,-5.488867187500006],[122.76650390625005,-5.210156249999983],[122.85332031250007,-4.618359375000026],[123.074609375,-4.38691406250004],[123.17978515625006,-4.551171875000023]]],[[[133.57080078124997,-4.245898437500003],[133.621875,-4.299316406249957],[133.32089843750006,-4.111035156249969],[133.57080078124997,-4.245898437500003]]],[[[123.2423828125001,-4.112988281250011],[123.07617187499997,-4.227148437499991],[122.96904296875002,-4.029980468749969],[123.21191406250003,-3.997558593750028],[123.2423828125001,-4.112988281250011]]],[[[128.56259765625012,-3.58544921875],[128.39160156250003,-3.637890625000026],[128.45156250000005,-3.514746093749991],[128.56259765625012,-3.58544921875]]],[[[128.2755859375001,-3.67460937499996],[127.97802734374997,-3.770996093749972],[127.925,-3.69931640625002],[128.32910156249997,-3.51591796874996],[128.2755859375001,-3.67460937499996]]],[[[116.42412109375007,-3.464453124999963],[116.38779296875012,-3.636718749999972],[116.3265625,-3.539062499999972],[116.42412109375007,-3.464453124999963]]],[[[116.30332031250006,-3.868164062499957],[116.05878906250004,-4.006933593749991],[116.06357421875006,-3.457910156249952],[116.26972656250004,-3.251074218750006],[116.30332031250006,-3.868164062499957]]],[[[126.86113281250007,-3.087890624999986],[127.22734375000007,-3.391015625],[127.22958984375006,-3.633007812500011],[126.68632812500007,-3.823632812500037],[126.21455078125004,-3.605175781250026],[126.05654296875,-3.420996093749991],[126.08828125,-3.105468750000014],[126.86113281250007,-3.087890624999986]]],[[[106.88642578125004,-3.005273437500023],[106.7428710937501,-2.932812500000011],[106.91064453124997,-2.93398437499998],[106.88642578125004,-3.005273437500023]]],[[[129.75468750000007,-2.865820312500034],[130.3791015625001,-2.989355468749977],[130.56992187500006,-3.130859375000028],[130.85996093750006,-3.570312500000028],[130.805078125,-3.85771484374996],[129.844140625,-3.327148437499957],[129.51171875000003,-3.32851562499998],[129.46767578125005,-3.453222656249977],[128.8625,-3.234960937500006],[128.51660156249997,-3.449121093750037],[128.13203125000004,-3.157421875000026],[127.90234374999997,-3.496289062499955],[127.87792968749997,-3.222070312499966],[128.19853515625002,-2.865917968749969],[128.99111328125,-2.82851562499998],[129.17441406250006,-2.933496093749966],[129.48417968750002,-2.785742187499977],[129.75468750000007,-2.865820312500034]]],[[[100.42509765625007,-3.182910156249974],[100.46513671875007,-3.32851562499998],[100.20429687500004,-2.98681640625],[100.19853515625002,-2.785546875000023],[100.45458984375003,-3.001953124999972],[100.42509765625007,-3.182910156249974]]],[[[108.2072265625001,-2.997656249999977],[108.05527343750006,-3.22685546874996],[107.85820312500002,-3.086328125000023],[107.61445312500004,-3.209375],[107.56347656250003,-2.920117187499997],[107.66630859375002,-2.566308593750037],[107.83779296875005,-2.530273437499972],[108.21513671875002,-2.696972656250011],[108.29062500000012,-2.829980468750023],[108.2072265625001,-2.997656249999977]]],[[[100.20410156249997,-2.741015625000017],[100.01494140625007,-2.819726562499966],[99.98789062500006,-2.525390624999957],[100.20410156249997,-2.741015625000017]]],[[[99.84306640625007,-2.343066406250031],[99.60703125000012,-2.257519531250011],[99.57216796875005,-2.025781249999966],[99.84306640625007,-2.343066406250031]]],[[[126.055078125,-2.451269531249963],[125.86289062500006,-2.077148437499943],[125.92275390625,-1.974804687499969],[126.055078125,-2.451269531249963]]],[[[126.02421875000007,-1.789746093750011],[126.33173828125004,-1.822851562500006],[125.47919921875004,-1.940039062499991],[125.38720703124997,-1.843066406249946],[126.02421875000007,-1.789746093750011]]],[[[130.35332031250007,-1.690527343749963],[130.41884765625,-1.971289062499963],[130.24804687500003,-2.047753906249994],[129.7376953125,-1.866894531250011],[130.35332031250007,-1.690527343749963]]],[[[124.96953125000007,-1.70546875],[125.18789062500005,-1.712890624999986],[125.31406250000006,-1.877148437499969],[124.41777343750002,-2.005175781250031],[124.32968750000012,-1.858886718749972],[124.41757812500006,-1.659277343749991],[124.96953125000007,-1.70546875]]],[[[135.47421875000006,-1.591796875000014],[136.89257812500003,-1.799707031249994],[136.22812500000012,-1.893652343749949],[135.47421875000006,-1.591796875000014]]],[[[108.953125,-1.61962890625],[108.83789062499997,-1.661621093750028],[108.80371093750003,-1.567773437499994],[108.953125,-1.61962890625]]],[[[106.04570312500002,-1.669433593750014],[106.36591796875004,-2.464843749999972],[106.81845703125006,-2.573339843749963],[106.6120117187501,-2.895507812499957],[106.66718750000004,-3.071777343749986],[105.99873046875004,-2.824902343749955],[105.7858398437501,-2.18134765625004],[105.13339843750012,-2.042578125],[105.45957031250006,-1.574707031249986],[105.58544921875003,-1.526757812499994],[105.7008789062501,-1.731054687499963],[105.7204101562501,-1.533886718750026],[105.91005859375,-1.504980468749991],[106.04570312500002,-1.669433593750014]]],[[[123.59755859375,-1.704296875000011],[123.48251953125006,-1.681445312499974],[123.52851562500004,-1.502832031250009],[123.59755859375,-1.704296875000011]]],[[[128.1530273437501,-1.66054687499998],[127.56162109375012,-1.728515624999972],[127.39501953125003,-1.589843749999972],[127.64667968750004,-1.332421875],[128.1530273437501,-1.66054687499998]]],[[[123.2123046875,-1.171289062499966],[123.23779296874997,-1.389355468749983],[123.43476562500004,-1.236816406249986],[123.54726562500005,-1.337402343749957],[123.51191406250004,-1.447363281249977],[123.27490234374997,-1.437207031249955],[123.17294921875006,-1.616015624999974],[123.15039062500003,-1.304492187500003],[122.89042968750007,-1.58720703124996],[122.81083984375002,-1.432128906249986],[122.90800781250002,-1.182226562499963],[123.2123046875,-1.171289062499966]]],[[[109.71025390625007,-1.1806640625],[109.46367187500002,-1.277539062500026],[109.4759765625,-0.9853515625],[109.74335937500004,-1.039355468749989],[109.71025390625007,-1.1806640625]]],[[[134.96533203124997,-1.116015624999974],[134.86171875,-1.114160156249952],[134.82792968750002,-0.978808593750003],[134.99628906250004,-1.03408203124998],[134.96533203124997,-1.116015624999974]]],[[[99.16386718750007,-1.777929687500006],[98.82773437500006,-1.609960937499977],[98.60175781250004,-1.197851562499949],[98.67607421875007,-0.970507812500003],[98.93261718750003,-0.954003906250009],[99.2672851562501,-1.62773437499996],[99.16386718750007,-1.777929687500006]]],[[[131.00185546875005,-1.315527343750034],[130.78232421875006,-1.255468749999963],[130.67294921875006,-0.959765625000031],[131.03300781250007,-0.917578124999963],[131.00185546875005,-1.315527343750034]]],[[[135.38300781250004,-0.6513671875],[135.89355468749997,-0.725781249999969],[136.37529296875007,-1.094042968750031],[136.1647460937501,-1.214746093750023],[135.91503906250003,-1.178417968749997],[135.74707031249997,-0.823046874999974],[135.64570312500004,-0.881933593749991],[135.38300781250004,-0.6513671875]]],[[[127.30039062500012,-0.780957031250026],[127.1564453125001,-0.760937500000026],[127.20908203125006,-0.619335937499955],[127.30039062500012,-0.780957031250026]]],[[[130.6266601562501,-0.528710937499966],[130.46542968750006,-0.486523437499983],[130.6159179687501,-0.417285156250003],[130.6266601562501,-0.528710937499966]]],[[[121.86435546875012,-0.406835937500006],[121.88125,-0.502636718749983],[121.65527343749997,-0.526171874999989],[121.86435546875012,-0.406835937500006]]],[[[140.97343750000007,-2.609765625],[140.97353515625,-2.803417968750026],[140.975,-6.346093750000023],[140.86230468749997,-6.740039062499989],[140.97519531250006,-6.90537109375002],[140.97617187500012,-9.11875],[140.00292968749997,-8.19550781250004],[140.11699218750002,-7.923730468750009],[139.93476562500004,-8.101171875],[139.38564453125,-8.189062499999963],[139.24882812500002,-7.982421874999972],[138.890625,-8.237792968749943],[139.08798828125012,-7.587207031250017],[138.74794921875,-7.25146484375],[139.17685546875006,-7.1904296875],[138.84570312500003,-7.13632812499999],[138.60136718750007,-6.936523437499972],[138.86455078125007,-6.858398437499943],[138.43867187500004,-6.343359375],[138.2962890625,-5.94902343749996],[138.37460937500006,-5.84365234374998],[138.19960937500005,-5.80703125],[138.33964843750007,-5.675683593749966],[138.08710937500004,-5.70917968750004],[138.06083984375002,-5.46523437499998],[137.27978515624997,-4.945410156249949],[136.61884765625004,-4.81875],[135.97968750000004,-4.530859374999963],[135.19560546875007,-4.450683593749972],[134.67968749999997,-4.079101562499943],[134.70654296875003,-3.954785156250026],[134.88652343750007,-3.938476562499986],[134.26621093750012,-3.945800781249972],[134.14707031250006,-3.79677734374998],[133.97382812500004,-3.817968750000034],[133.67832031250006,-3.4794921875],[133.8415039062501,-3.054785156249991],[133.70039062500004,-3.0875],[133.653125,-3.364355468749991],[133.51816406250012,-3.411914062500003],[133.40087890625003,-3.899023437500034],[133.24873046875004,-4.062304687499989],[132.91445312500005,-4.05693359374996],[132.75390625000003,-3.703613281250014],[132.86972656250006,-3.550976562499997],[132.75136718750005,-3.294628906249997],[131.97119140624997,-2.788574218750014],[132.2306640625001,-2.680371093749997],[132.725,-2.789062500000028],[133.19101562500006,-2.43779296874996],[133.70009765625005,-2.624609375],[133.75332031250005,-2.450683593750014],[133.90488281250012,-2.390917968750003],[133.79101562500003,-2.293652343749997],[133.92158203125004,-2.102050781249957],[132.96279296875005,-2.272558593749963],[132.30761718749997,-2.24228515625002],[132.02343749999997,-1.99033203125002],[131.93037109375004,-1.559667968750034],[131.29375,-1.393457031250009],[130.99589843750007,-1.42470703124998],[131.1908203125,-1.165820312500003],[131.2572265625,-0.855468750000014],[131.80429687500006,-0.703808593750026],[132.39375,-0.355468750000028],[132.85644531250003,-0.417382812500023],[133.47265624999997,-0.726171874999963],[133.97451171875,-0.744335937500026],[134.11152343750004,-0.84677734375002],[134.07197265625004,-1.001855468749994],[134.25957031250007,-1.362988281250026],[134.105859375,-1.720996093749946],[134.19482421875003,-2.309082031249943],[134.45996093749997,-2.83232421874996],[134.48330078125,-2.583007812499972],[134.62744140624997,-2.536718749999963],[134.70214843749997,-2.933593749999986],[134.84335937500006,-2.909179687499986],[134.88681640625006,-3.209863281249966],[135.25156250000012,-3.368554687499966],[135.48662109375002,-3.34511718749998],[135.85917968750002,-2.99531250000004],[136.38994140625002,-2.273339843750037],[137.07207031250002,-2.105078124999949],[137.1710937500001,-2.025488281249991],[137.1234375,-1.840917968749963],[137.80625000000012,-1.483203125],[139.78955078125003,-2.34824218750002],[140.62255859374997,-2.44580078125],[140.74746093750005,-2.607128906249997],[140.97343750000007,-2.609765625]]],[[[104.47421875000012,-0.334667968749955],[104.59013671875002,-0.466601562500017],[104.36318359375,-0.658593749999966],[104.25712890625002,-0.463281249999966],[104.47421875000012,-0.334667968749955]]],[[[127.56699218750006,-0.318945312499949],[127.68242187500002,-0.46835937500002],[127.60498046874997,-0.610156249999946],[127.88017578125002,-0.808691406249991],[127.7611328125,-0.883691406249994],[127.62382812500002,-0.76601562499999],[127.46269531250002,-0.80595703124996],[127.46865234375,-0.64296875],[127.3,-0.500292968749946],[127.32509765625,-0.335839843750023],[127.45517578125012,-0.406347656249991],[127.56699218750006,-0.318945312499949]]],[[[127.24990234375005,-0.4953125],[127.11914062500003,-0.520507812499986],[127.12646484375003,-0.278613281250003],[127.29003906250003,-0.284375],[127.24990234375005,-0.4953125]]],[[[103.73652343750004,-0.347949218750003],[103.461328125,-0.357617187500011],[103.54892578125006,-0.227539062499986],[103.73652343750004,-0.347949218750003]]],[[[130.81328125000007,-0.004101562500026],[131.27685546875003,-0.149804687499952],[131.33974609375005,-0.290332031249989],[131.00537109374997,-0.360742187500037],[130.62216796875006,-0.0859375],[130.89921875000002,-0.344433593749997],[130.7501953125001,-0.44384765625],[130.6886718750001,-0.296582031250011],[130.55078124999997,-0.366406250000026],[130.23662109375002,-0.209667968749983],[130.3625,-0.072851562500006],[130.81328125000007,-0.004101562500026]]],[[[98.45927734375007,-0.530468749999969],[98.30966796875012,-0.531835937499977],[98.4271484375,-0.226464843750037],[98.3229492187501,-0.000781249999974],[98.54414062500004,-0.257617187499989],[98.45927734375007,-0.530468749999969]]],[[[104.77861328125007,-0.175976562499955],[105.00537109374997,-0.282812499999963],[104.44707031250002,-0.189160156249983],[104.54267578125004,0.01772460937498],[104.77861328125007,-0.175976562499955]]],[[[103.28447265625002,0.541943359375011],[103.13955078125,0.549072265625043],[103.18740234375,0.699755859375017],[103.28447265625002,0.541943359375011]]],[[[103.0275390625001,0.746630859374974],[102.4904296875001,0.856640625],[102.50664062500002,1.088769531250037],[103.00244140624997,0.859277343750009],[103.0275390625001,0.746630859374974]]],[[[103.42392578125012,1.048339843749972],[103.31542968750003,1.071289062500028],[103.37998046875006,1.133642578125034],[103.42392578125012,1.048339843749972]]],[[[103.16640625000005,0.870166015625003],[102.7018554687501,1.0537109375],[102.72558593749997,1.158837890625023],[102.99941406250005,1.067773437500023],[103.16640625000005,0.870166015625003]]],[[[104.02480468750005,1.180566406250009],[104.13984375000004,1.165576171874974],[104.06611328125004,0.989550781249989],[103.93222656250012,1.071386718749963],[104.02480468750005,1.180566406250009]]],[[[104.58535156250005,1.21611328124996],[104.66289062500002,1.04951171875004],[104.57519531250003,0.831933593750037],[104.43925781250002,1.050439453125051],[104.25195312499997,1.014892578125],[104.36181640624997,1.18149414062502],[104.58535156250005,1.21611328124996]]],[[[102.4271484375,0.990136718750023],[102.27958984375002,1.075683593750043],[102.25634765625003,1.397070312499963],[102.44287109374997,1.234228515625006],[102.4271484375,0.990136718750023]]],[[[97.48154296875006,1.465087890624972],[97.93193359375002,0.973925781250003],[97.82041015625012,0.564453124999986],[97.683984375,0.596093750000037],[97.60390625000005,0.83388671874998],[97.40537109375012,0.946972656250026],[97.07919921875006,1.425488281249983],[97.35595703124997,1.539746093749997],[97.48154296875006,1.465087890624972]]],[[[102.49189453125004,1.459179687500011],[102.49941406250005,1.330908203124991],[102.02402343750012,1.607958984375031],[102.49189453125004,1.459179687500011]]],[[[124.88886718750004,0.995312500000011],[124.42753906250002,0.470605468750051],[123.75380859375,0.305517578124991],[123.26542968750007,0.326611328125026],[122.996875,0.493505859375006],[121.01298828125002,0.441699218750017],[120.57900390625,0.5283203125],[120.19228515625,0.268505859374997],[120.01328125000012,-0.196191406249994],[120.062890625,-0.555566406250023],[120.240625,-0.868261718749949],[120.51757812499997,-1.039453125],[120.66738281250005,-1.370117187499972],[121.14853515625012,-1.33945312500002],[121.5755859375,-0.828515625000023],[121.96962890625005,-0.933300781249969],[122.27998046875004,-0.757031250000026],[122.88876953125006,-0.755175781250003],[122.8294921875,-0.658886718750026],[123.17148437500012,-0.57070312499999],[123.37968750000002,-0.648535156249949],[123.43417968750006,-0.778222656249994],[123.37792968749997,-1.004101562500011],[122.90283203125003,-0.900976562499963],[122.25068359375004,-1.555273437500034],[121.8585937500001,-1.69326171874998],[121.65097656250006,-1.895410156249952],[121.35546874999997,-1.878222656250003],[122.29169921875004,-2.907617187500023],[122.39902343750006,-3.200878906249997],[122.25292968749997,-3.620410156250017],[122.68964843750004,-4.084472656249972],[122.84794921875002,-4.064550781250006],[122.8722656250001,-4.391992187500009],[122.71972656250003,-4.340722656249952],[122.11425781250003,-4.540234375000011],[122.03808593749997,-4.832421875000023],[121.58867187500007,-4.759570312500017],[121.48652343750004,-4.581054687499972],[121.61806640625,-4.092675781249952],[120.89179687500004,-3.520605468750034],[121.05429687500012,-3.167089843749949],[121.0521484375,-2.751660156249955],[120.87939453124997,-2.64560546875002],[120.65361328125002,-2.667578124999977],[120.26103515625007,-2.949316406249991],[120.43662109375012,-3.70732421874996],[120.42011718750004,-4.617382812500011],[120.27929687499997,-5.146093749999977],[120.4303710937501,-5.591015625000026],[119.9515625,-5.577636718749972],[119.71728515625003,-5.693359375000014],[119.55742187500007,-5.611035156250026],[119.36035156249997,-5.314160156250026],[119.59404296875007,-4.523144531249997],[119.62363281250006,-4.034375],[119.46748046875004,-3.512988281249989],[118.99462890624997,-3.537597656250028],[118.86767578124997,-3.39804687500002],[118.78330078125006,-2.720800781249977],[119.09218750000005,-2.482910156250014],[119.32187500000012,-1.929687500000014],[119.308984375,-1.408203125],[119.508203125,-0.906738281249972],[119.71132812500005,-0.680761718750034],[119.84433593750006,-0.861914062499991],[119.721875,-0.088476562499991],[119.865625,0.040087890625003],[119.80927734375004,0.238671875000051],[119.9132812500001,0.445068359375],[120.26953125000003,0.970800781249991],[120.60253906249997,0.854394531249994],[120.86796875000007,1.25283203124998],[121.0817382812501,1.327636718750028],[121.40410156250002,1.243603515624969],[121.59179687499997,1.067968749999977],[122.43662109375006,1.018066406250028],[122.83828125,0.845703125],[123.06650390625006,0.941796875000037],[123.93076171875006,0.850439453124977],[124.53369140624997,1.230468750000043],[124.94707031250002,1.672167968749974],[125.11093750000012,1.685693359374966],[125.2337890625,1.502294921875006],[124.88886718750004,0.995312500000011]]],[[[101.70810546875006,2.078417968750045],[101.71943359375004,1.789160156250006],[101.50078125000002,1.733203124999974],[101.40966796875003,2.021679687500026],[101.70810546875006,2.078417968750045]]],[[[127.73271484375007,0.848144531250043],[127.8810546875001,0.832128906249977],[127.96728515624997,1.042578125000048],[128.16074218750006,1.1578125],[128.22246093750002,1.400634765624986],[128.68837890625,1.572558593750017],[128.70263671874997,1.106396484374997],[128.29882812500003,0.87680664062502],[128.26064453125,0.733789062500023],[128.61123046875,0.549951171875051],[128.89960937500004,0.216259765625011],[127.9831054687501,0.471875],[127.88740234375004,0.298339843750043],[127.97783203125002,-0.24833984374996],[128.4254882812501,-0.892675781249949],[128.04638671875003,-0.706054687499943],[127.69160156250004,-0.241894531249983],[127.70869140625004,0.288085937499986],[127.53710937500003,0.610888671875031],[127.60800781250006,0.848242187499977],[127.42851562500002,1.139990234374991],[127.63173828125,1.843701171875011],[128.03642578125002,2.199023437500017],[127.88681640625012,1.83295898437504],[128.0109375000001,1.701220703125031],[128.01171874999997,1.331738281249983],[127.65283203124997,1.013867187499969],[127.73271484375007,0.848144531250043]]],[[[97.3341796875001,2.075634765625011],[97.10830078125,2.216894531250006],[97.29140625,2.200830078125023],[97.3341796875001,2.075634765625011]]],[[[128.45390625000002,2.051757812500028],[128.29589843749997,2.034716796875017],[128.2179687500001,2.297460937499991],[128.60214843750012,2.59760742187504],[128.68847656250003,2.473681640625017],[128.62324218750004,2.224414062500031],[128.45390625000002,2.051757812500028]]],[[[96.46367187500002,2.360009765625037],[95.80859374999997,2.655615234375034],[95.7171875,2.825976562500017],[95.89580078125007,2.8890625],[96.41728515625007,2.515185546875031],[96.46367187500002,2.360009765625037]]],[[[108.8875,2.905419921875037],[108.7865234375,2.885644531250009],[108.88574218750003,2.998974609374997],[108.8875,2.905419921875037]]],[[[105.76035156250006,2.863037109375014],[105.69218750000002,3.0625],[105.83671875000007,2.97651367187504],[105.76035156250006,2.863037109375014]]],[[[106.28525390625006,3.15712890624998],[106.28369140624997,3.088232421874977],[106.20097656250002,3.204882812500031],[106.28525390625006,3.15712890624998]]],[[[117.65839843750004,3.280517578124986],[117.54785156250003,3.43198242187502],[117.68085937500004,3.407519531250017],[117.65839843750004,3.280517578124986]]],[[[125.65810546875,3.436035156250043],[125.51152343750007,3.461132812500011],[125.46884765625006,3.73325195312502],[125.65810546875,3.436035156250043]]],[[[117.88476562499997,4.186132812500006],[117.92285156250003,4.054296874999977],[117.73681640624997,4.004003906250034],[117.64902343750012,4.168994140624974],[117.88476562499997,4.186132812500006]]],[[[108.31601562500006,3.689648437500026],[108.10039062500002,3.70454101562504],[108.24326171875006,3.810351562500017],[108.00234375,3.982861328124983],[108.24833984375002,4.21713867187502],[108.39287109375007,3.986181640625034],[108.31601562500006,3.689648437500026]]],[[[117.5744140625001,4.17060546875004],[117.46533203124997,4.076074218749966],[117.77724609375005,3.689257812500031],[117.05595703125007,3.622656249999963],[117.34628906250006,3.426611328124991],[117.35244140625,3.19375],[117.61064453125002,3.064355468749994],[117.56914062500002,2.92929687500002],[117.69765625,2.887304687499991],[117.6388671875001,2.825292968749963],[118.0666015625001,2.317822265624969],[117.7892578125001,2.026855468750014],[118.98496093750006,0.982128906249983],[118.53476562500006,0.813525390625017],[118.19609375000002,0.874365234374977],[117.91162109374997,1.098681640625017],[117.96425781250005,0.889550781250051],[117.74511718749997,0.72963867187498],[117.52216796875004,0.235888671875017],[117.46289062500003,-0.323730468749957],[117.5625,-0.770898437500009],[116.91396484375,-1.223632812499972],[116.73984375000006,-1.044238281250017],[116.75341796874997,-1.327343749999955],[116.27548828125006,-1.784863281249997],[116.42431640625003,-1.784863281249997],[116.45195312500002,-1.923144531250017],[116.31396484374997,-2.139843750000011],[116.56542968749997,-2.299707031249994],[116.52929687499997,-2.51054687499996],[116.31679687500005,-2.55185546875002],[116.33066406250012,-2.902148437499974],[116.16630859375002,-2.934570312500014],[116.2572265625,-3.126367187500009],[115.95615234375012,-3.595019531250003],[114.6935546875001,-4.169726562500017],[114.5255859375001,-3.376660156250011],[114.44599609375004,-3.481835937500037],[114.34433593750012,-3.444433593749963],[114.34433593750012,-3.23515625],[114.23632812500003,-3.36113281249996],[114.0822265625001,-3.27890625],[113.70507812499997,-3.45527343750004],[113.6100585937501,-3.195703125],[113.34316406250005,-3.246484374999966],[113.03398437500002,-2.933496093749966],[112.97148437500002,-3.187109375000034],[112.75800781250004,-3.322167968750009],[112.60029296875004,-3.400488281249977],[112.28496093750002,-3.32099609375004],[111.85810546875004,-3.551855468750006],[111.82304687500007,-3.057226562499949],[111.69472656250005,-2.88945312499996],[110.93007812500005,-3.071093750000017],[110.82968750000012,-2.9951171875],[110.89931640625,-2.908593749999952],[110.703125,-3.020898437500009],[110.57402343750007,-2.89140625],[110.25605468750004,-2.966113281249946],[110.09658203125,-2.001367187499966],[109.95986328125,-1.862792968749972],[109.98330078125,-1.274804687499994],[109.78740234375007,-1.011328124999963],[109.25878906250003,-0.807421874999989],[109.37275390625004,-0.638183593749972],[109.12109375000003,-0.39091796874996],[109.2575195312501,0.031152343750051],[108.94453125000004,0.355664062499997],[108.91679687500007,0.912646484375045],[108.95859375000006,1.134619140624963],[109.1315429687501,1.253857421875011],[109.01025390624997,1.239648437500051],[109.07587890625004,1.495898437500031],[109.37851562500006,1.922705078125034],[109.62890625000003,2.027539062499983],[109.53896484375,1.89619140625004],[109.65400390625004,1.614892578125023],[110.50576171875005,0.861962890625023],[111.10136718750002,1.050537109374986],[111.80898437500005,1.011669921874969],[112.078515625,1.143359374999974],[112.1857421875001,1.4390625],[112.47617187500006,1.559082031250028],[112.94296875000006,1.566992187500034],[113.00654296875004,1.433886718750003],[113.6222656250001,1.2359375],[113.90234375000003,1.434277343749997],[114.5125,1.452001953124963],[114.83056640625003,1.980029296874989],[114.78642578125002,2.250488281250014],[115.1791015625,2.523193359374972],[115.08076171875004,2.63422851562504],[115.117578125,2.89487304687502],[115.24697265625005,3.025927734374989],[115.45439453125002,3.034326171875009],[115.67880859375006,4.193017578124994],[115.86074218750005,4.348046875000037],[116.51474609375006,4.370800781249969],[117.10058593750003,4.337060546875023],[117.5744140625001,4.17060546875004]]],[[[126.81660156250004,4.033496093750003],[126.70449218750005,4.070996093749997],[126.81357421875006,4.258496093750011],[126.72207031250005,4.344189453124969],[126.75732421874997,4.547900390624989],[126.9210937500001,4.291015624999972],[126.81660156250004,4.033496093750003]]],[[[96.49257812500005,5.229345703124991],[97.54716796875002,5.205859375],[98.2484375,4.41455078125],[98.3073242187501,4.09287109375002],[99.73232421875005,3.183056640625026],[100.523828125,2.18916015625004],[100.88789062500004,1.948242187499986],[100.82822265625012,2.242578125],[101.04619140625002,2.257470703125023],[101.47666015625006,1.693066406250054],[102.019921875,1.442138671875],[102.38994140625007,0.84199218750004],[103.03183593750006,0.57890625],[103.0075195312501,0.415332031249974],[102.55,0.216455078124966],[103.33896484375012,0.513720703125045],[103.67265625000007,0.288916015624977],[103.78671875000012,0.046972656249991],[103.42851562500007,-0.19179687499998],[103.40517578125005,-0.36220703124998],[103.5091796875,-0.465527343749969],[103.43857421875006,-0.575585937500009],[103.72109375,-0.886718749999986],[104.36054687500004,-1.038378906249974],[104.51591796875002,-1.81943359375002],[104.84521484375003,-2.092968749999969],[104.65078125000005,-2.595214843749972],[104.97080078125012,-2.370898437500017],[105.39697265624997,-2.380175781249946],[106.0443359375,-3.10625],[105.84375,-3.61367187499998],[105.93046875000007,-3.833007812499986],[105.83144531250005,-4.16289062499996],[105.88720703124997,-5.009570312499974],[105.74833984375007,-5.818261718749966],[105.34941406250007,-5.549511718750011],[105.08134765625002,-5.74550781249998],[104.63955078125005,-5.520410156250037],[104.68398437500005,-5.89267578125002],[104.60156249999997,-5.90458984374996],[103.8314453125,-5.079589843750028],[102.53769531250006,-4.152148437499989],[102.12753906250006,-3.599218749999963],[101.57861328124997,-3.166992187500014],[100.88955078125,-2.248535156249957],[100.85527343750002,-1.934179687499949],[100.30820312500006,-0.82666015625],[99.66982421875005,0.045068359375037],[99.15917968749997,0.351757812499997],[98.59531250000006,1.864599609375006],[97.70078125000006,2.358544921875009],[97.59082031249997,2.846582031250037],[97.3913085937501,2.975292968749969],[96.9689453125001,3.575146484374969],[96.44472656250005,3.81630859374998],[95.57861328125003,4.661962890625048],[95.20664062500006,5.284033203125034],[95.22783203125002,5.564794921875034],[95.62890625000003,5.609082031249997],[96.13330078125003,5.294287109374991],[96.49257812500005,5.229345703124991]]]]},"properties":{"name":"Indonesia","childNum":107}},{"geometry":{"type":"Polygon","coordinates":[[[-4.412060546874983,54.185351562499996],[-4.785351562499983,54.073046875],[-4.424707031249994,54.407177734375],[-4.412060546874983,54.185351562499996]]]},"properties":{"name":"Isle of Man","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[75.32221348233018,32.28516356678968],[75.62496871116024,32.28516356678968],[75.73585997688717,32.78417426256088],[76.32728006076415,32.87658365066666],[76.62299010270264,33.32014871357439],[77.06655516561037,33.301666835953235],[77.71342088235082,32.6917648744551],[78.10154031239509,32.87658365066666],[78.49194250885338,32.53122786149202],[78.38964843749997,32.51987304687498],[78.41748046874997,32.466699218749994],[78.4552734375001,32.30034179687502],[78.49589843750002,32.21577148437504],[78.72558593750009,31.983789062500023],[78.71972656250009,31.887646484374983],[78.69345703125006,31.740380859374994],[78.7550781250001,31.55029296875],[78.74355468750005,31.323779296875017],[79.10712890625004,31.402636718750102],[79.38847656250013,31.064208984375085],[79.66425781250004,30.96523437499999],[79.92451171875004,30.888769531250034],[80.20712890625006,30.683740234375023],[80.19121093750002,30.56840820312496],[80.87353515625003,30.290576171875045],[80.98544921875006,30.23710937499999],[81.01025390625014,30.164501953125097],[80.96611328125002,30.180029296875063],[80.90761718750005,30.171923828125017],[80.84814453125009,30.139746093750034],[80.81992187500012,30.119335937499955],[80.68408203125014,29.994335937500068],[80.54902343750015,29.899804687499994],[80.40185546875003,29.730273437500102],[80.31689453125014,29.572070312500017],[80.25488281250009,29.423339843750114],[80.25595703125006,29.318017578125136],[80.23300781250006,29.194628906250045],[80.16953125000012,29.124316406250102],[80.13046875000006,29.100390625000045],[80.08457031249995,28.994189453125074],[80.05166015625,28.870312500000068],[80.07070312500005,28.830175781250063],[80.22656250000003,28.723339843750125],[80.32480468750012,28.66640625000008],[80.41855468749995,28.61201171875001],[80.47910156250012,28.604882812499994],[80.49580078125015,28.635791015625074],[80.51787109375002,28.665185546875023],[80.58701171875006,28.64960937500004],[81.16894531250014,28.335009765625074],[81.85263671875018,27.867089843750136],[81.89687500000011,27.87446289062504],[81.94521484375005,27.89926757812495],[81.98769531250016,27.91376953125004],[82.03701171875,27.90058593750004],[82.11191406250006,27.86494140625004],[82.28769531250018,27.756542968749983],[82.45136718750004,27.671826171874955],[82.62988281249997,27.687060546875045],[82.67734375000006,27.67343749999995],[82.71083984375005,27.596679687500114],[82.73339843750003,27.518994140625097],[83.28974609375004,27.370996093750136],[83.36943359375002,27.410253906249977],[83.38398437500004,27.444824218750085],[83.44716796875011,27.46533203125],[83.55166015625011,27.456347656249932],[83.74697265625011,27.395947265625068],[83.8288085937501,27.377832031250108],[84.09101562499993,27.491357421875136],[84.22978515625007,27.427832031250006],[84.48085937500005,27.348193359375102],[84.61015625000002,27.298681640624977],[84.64072265625012,27.249853515624977],[84.65478515625014,27.20366210937499],[84.65380859375009,27.09169921875008],[84.68535156250013,27.041015625000057],[85.19179687500011,26.766552734375097],[85.29296875000009,26.741015625000045],[85.56845703125012,26.839843750000114],[85.64843749999997,26.829003906250023],[85.69990234375004,26.781640624999966],[85.73730468750003,26.639746093750034],[85.79453125000006,26.60415039062505],[86.00732421875009,26.64936523437504],[86.70136718750015,26.435058593750057],[87.01640625000002,26.555419921875085],[87.2874023437499,26.360302734375125],[87.41357421875014,26.42294921875009],[87.84921875000006,26.43691406250008],[87.99511718750014,26.38237304687499],[88.02695312500023,26.395019531250085],[88.05488281250004,26.43002929687492],[88.11152343750004,26.58642578125],[88.1615234375,26.724804687500125],[88.15722656250009,26.807324218750068],[88.1110351562501,26.928466796875057],[87.99316406250009,27.086083984374994],[87.984375,27.133935546874994],[88.14697265625014,27.749218750000097],[88.15029296875011,27.843310546875074],[88.10976562500005,27.87060546874997],[88.10898437499995,27.93300781250005],[88.14111328125003,27.948925781250097],[88.27519531250013,27.96884765625009],[88.42597656250015,28.011669921875097],[88.57792968750002,28.093359375000034],[88.80371093750003,28.006933593750034],[88.74902343749997,27.521875000000136],[88.7648437500001,27.429882812500068],[88.83251953125003,27.362841796875074],[88.89140625000002,27.316064453125136],[88.88164062500007,27.29746093750009],[88.76035156250006,27.21811523437509],[88.73876953125009,27.175585937499932],[88.85761718750015,26.961474609375017],[89.14824218750002,26.816162109375085],[89.33212890625018,26.848632812500114],[89.58613281250004,26.778955078125136],[89.60996093750012,26.719433593750097],[89.71093750000009,26.713916015625045],[89.76386718750004,26.7015625],[89.94316406250013,26.723925781249932],[90.12294921875011,26.754589843749983],[90.20605468749997,26.847509765625063],[90.34589843750004,26.890332031250097],[90.73964843750005,26.771679687500068],[91.2865234375,26.78994140625008],[91.42675781249997,26.867089843749966],[91.45585937500013,26.866894531250125],[91.51757812500009,26.807324218750068],[91.67158203124993,26.80200195312503],[91.84208984375013,26.852978515625125],[91.94375,26.860839843750114],[91.99833984375013,26.85498046875],[92.04970703125016,26.87485351562495],[92.73155507489682,26.833697862861648],[93.30975376159499,26.784950522650554],[93.61047043679247,27.32239435188504],[94.06979001484449,27.589407158584788],[95.10800937321915,27.749636881153737],[95.74000740838363,28.116850432722256],[96.19577594042592,28.04291597700983],[96.96279296875,27.698291015625017],[96.88359375000013,27.514843750000125],[96.90195312500012,27.43959960937508],[97.10371093749993,27.163330078125114],[97.10205078125003,27.115429687500125],[96.95341796875013,27.13330078125003],[96.79785156249997,27.29619140624999],[96.19082031250005,27.26127929687499],[95.20146484375007,26.641406250000017],[95.05976562500015,26.473974609375006],[95.06894531250006,26.191113281250097],[95.10839843750014,26.091406250000034],[95.12929687500011,26.070410156250034],[95.13242187500006,26.041259765624943],[94.99199218750002,25.77045898437504],[94.66777343750007,25.458886718749966],[94.55302734375013,25.215722656249994],[94.70371093750012,25.097851562499955],[94.49316406250003,24.637646484374983],[94.37724609375002,24.473730468750006],[94.29306640625012,24.321875],[94.07480468750006,23.8720703125],[93.68339843750007,24.00654296875004],[93.45214843750003,23.987402343750034],[93.32626953125006,24.064208984375057],[93.36601562500007,23.132519531249955],[93.34941406250007,23.08496093750003],[93.20390625000002,23.03701171875005],[93.07871093750018,22.718212890625097],[93.16201171875,22.360205078125006],[93.07060546875002,22.20942382812501],[92.96455078125015,22.003759765625034],[92.90947265625013,21.988916015625023],[92.85429687500002,22.010156250000108],[92.77138671875,22.104785156250017],[92.68896484375009,22.130957031250006],[92.63037109375014,22.011328124999977],[92.57490234374993,21.97807617187496],[92.5612304687501,22.04804687500001],[92.49140625000004,22.685400390625006],[92.46445312500006,22.734423828125045],[92.36162109375002,22.929003906250074],[92.33378906250002,23.242382812499955],[92.24609375000003,23.68359374999997],[92.04404296875006,23.677783203125017],[91.97851562500003,23.691992187500063],[91.92958984375011,23.685986328125097],[91.92949218750019,23.598242187499977],[91.93789062500011,23.504687500000102],[91.75419921875013,23.28730468750004],[91.75097656250003,23.053515625000017],[91.55351562500013,22.991552734375006],[91.43623046875004,23.19990234375001],[91.359375,23.06835937500003],[91.16044921875019,23.660644531250085],[91.35019531250012,24.06049804687501],[91.72656250000003,24.20507812499997],[91.84619140624997,24.175292968749943],[92.06416015625004,24.374365234375006],[92.11748046875002,24.493945312500017],[92.22666015625012,24.77099609374997],[92.22832031250002,24.881347656250085],[92.2512695312499,24.895068359375045],[92.38496093750004,24.848779296875023],[92.46835937500018,24.944140625000074],[92.04970703125016,25.16948242187499],[90.61308593750002,25.16772460937497],[90.11962890625003,25.21997070312497],[89.86630859375012,25.293164062499955],[89.81406250000006,25.305371093749955],[89.80087890625012,25.33613281250001],[89.82490234375004,25.56015625],[89.82294921875015,25.94140625000003],[89.67089843750009,26.213818359375125],[89.57275390625003,26.13232421875003],[89.54990234375006,26.00527343750008],[89.28925781250015,26.037597656250085],[89.01865234375012,26.410253906249977],[88.95195312500002,26.412109375],[88.97041015625004,26.250878906250023],[88.94072265625002,26.24536132812497],[88.68281250000004,26.291699218749983],[88.51826171875004,26.51777343750004],[88.36992187500002,26.56411132812508],[88.35146484375005,26.482568359374966],[88.38623046875003,26.471533203125034],[88.44042968749997,26.369482421875034],[88.33398437499997,26.257519531249955],[88.15078125000005,26.087158203125057],[88.1066406250001,25.841113281250045],[88.14746093749997,25.811425781250023],[88.50244140625009,25.53701171875008],[88.76914062500006,25.490478515625],[88.85478515625002,25.333544921875017],[88.94414062500002,25.290771484375],[88.92978515625012,25.222998046875063],[88.57382812500006,25.18789062499999],[88.45625,25.188427734375125],[88.37294921875016,24.961523437500063],[88.31337890625011,24.8818359375],[88.27949218750015,24.881933593750034],[88.18886718750016,24.920605468750097],[88.14980468750011,24.91464843749995],[88.04511718750015,24.71303710937508],[88.03027343750009,24.664453125000136],[88.02343750000003,24.627832031250136],[88.07910156250009,24.549902343750063],[88.14550781250003,24.485791015624955],[88.225,24.460644531249983],[88.3375,24.45385742187503],[88.49853515625003,24.34663085937504],[88.64228515625015,24.325976562500102],[88.72353515625011,24.27490234375],[88.7335937500001,24.230908203125097],[88.72656250000009,24.18623046875004],[88.71376953125016,24.069628906250102],[88.69980468750006,24.00253906249992],[88.56738281250009,23.674414062500034],[88.63574218749997,23.55],[88.69765625,23.493017578125034],[88.72441406250002,23.254980468750034],[88.89707031250018,23.21040039062501],[88.92812500000011,23.186621093749977],[88.89970703125002,22.843505859375057],[88.92070312500002,22.632031249999955],[89.05,22.274609374999983],[89.02792968750023,21.937207031249983],[88.94931640625018,21.937939453125125],[89.05166015625,21.654101562500045],[88.85751953125012,21.744677734375017],[88.74501953125011,21.584375],[88.74023437500003,22.005419921875017],[88.64160156250003,22.121972656250136],[88.58466796875015,21.659716796874932],[88.44599609375004,21.614257812500085],[88.28750000000016,21.758203125000108],[88.25371093750002,21.622314453124943],[88.0568359375001,21.694140625000017],[88.19628906249997,22.139550781249994],[87.94140625000003,22.374316406250045],[88.15927734375018,22.12172851562508],[87.82373046875003,21.727343750000045],[87.20068359375009,21.544873046874983],[86.95410156250014,21.365332031250006],[86.84228515625009,21.106347656249994],[86.97548828125005,20.70014648437501],[86.75039062500011,20.313232421875057],[86.37656250000006,20.006738281249966],[86.24521484375012,20.05302734374999],[86.27949218750021,19.919433593749943],[85.575,19.69291992187499],[85.496875,19.696923828125108],[85.50410156250004,19.887695312500057],[85.24863281250006,19.757666015625034],[85.18076171875018,19.59487304687508],[85.44160156249993,19.626562499999977],[84.77099609375009,19.125390625000023],[84.10410156250018,18.29267578125001],[82.35957031250004,17.09619140624997],[82.25878906250014,16.55986328124996],[81.76191406250015,16.32949218750008],[81.28613281249997,16.337060546875023],[80.97871093750004,15.758349609375074],[80.64658203125006,15.895019531250028],[80.29345703125014,15.710742187499989],[80.0534179687501,15.074023437499932],[80.17871093750003,14.478320312500074],[80.11171875000005,14.212207031250045],[80.30654296875016,13.485058593750054],[80.15625,13.713769531250108],[80.06210937500006,13.60625],[80.34238281250006,13.361328125000071],[80.22910156250018,12.690332031249966],[79.85849609375018,11.988769531250043],[79.69316406250007,11.312548828124946],[79.79902343750004,11.338671874999932],[79.84863281250009,11.196875],[79.83818359375002,10.322558593750045],[79.31455078125018,10.256689453124949],[78.93994140625009,9.565771484375063],[79.01992187500005,9.333349609374963],[79.41142578125002,9.192382812500014],[78.97958984375018,9.268554687500085],[78.42148437500006,9.105029296874989],[78.19248046874995,8.890869140625057],[78.06015625000006,8.384570312499932],[77.51757812500003,8.078320312500068],[77.06591796875003,8.315917968749986],[76.5534179687501,8.902783203124997],[76.32460937500016,9.452099609374997],[76.24238281250004,9.927099609374949],[76.37558593750006,9.539892578124935],[76.45878906250013,9.536230468750077],[76.34648437500002,9.922119140625],[76.19560546875002,10.086132812500026],[75.72382812500015,11.361767578125026],[74.94550781250004,12.56455078124992],[74.38222656250005,14.494726562500048],[73.94921875000014,15.074755859375088],[73.80078125000009,15.39697265625],[73.93193359375013,15.39697265625],[73.77177734375013,15.573046874999989],[73.83281250000013,15.659375],[73.67988281250015,15.708886718750136],[73.47607421875003,16.05424804687496],[72.87548828124997,18.642822265625114],[72.97207031250011,19.15332031250003],[72.8346679687501,18.975585937500057],[72.80302734375013,19.07929687500004],[72.81162109375,19.298925781250006],[72.98720703125,19.27744140625009],[72.78789062500013,19.362988281250097],[72.66777343750019,19.83095703125005],[72.89375,20.672753906250136],[72.81386718750011,21.117187500000085],[72.62382812500002,21.371972656250108],[72.73476562500016,21.470800781250006],[72.61328125000009,21.461816406250108],[73.1125,21.750439453125125],[72.54306640625,21.69658203124999],[72.70019531250003,21.971923828124943],[72.52226562500013,21.976220703125108],[72.55302734375007,22.159960937500074],[72.80917968749995,22.23330078125008],[72.18281250000015,22.26972656250004],[72.30644531250002,22.18920898437497],[72.27441406250009,22.089746093749966],[72.03720703125006,21.82304687499999],[72.2103515625,21.72822265625004],[72.25400390625006,21.531005859375],[72.01523437500012,21.155712890625097],[71.0246093750001,20.73886718750009],[70.71933593750006,20.740429687500068],[70.12734375,21.094677734375097],[68.96992187500021,22.29028320312497],[69.05166015625016,22.437304687500074],[69.27656250000004,22.285498046875063],[70.17724609375014,22.57275390624997],[70.48925781250009,23.08950195312508],[70.33945312500012,22.939746093749932],[69.66464843750006,22.759082031250074],[69.23593749999995,22.848535156250023],[68.64072265625006,23.189941406250114],[68.41748046875009,23.57148437500004],[68.7767578125,23.852099609375017],[68.23496093749995,23.596972656250074],[68.16503906250009,23.857324218749994],[68.28251953125013,23.927978515625],[68.38125000000016,23.950878906250068],[68.48867187500011,23.96723632812501],[68.5866210937501,23.966601562500074],[68.72412109375003,23.964697265625034],[68.72812500000012,24.265625],[68.73964843750016,24.291992187500085],[68.75898437499993,24.307226562500006],[68.78115234375011,24.313720703125085],[68.8,24.30908203125003],[68.82832031250004,24.26401367187509],[68.86347656250015,24.26650390625005],[68.90078125000011,24.29243164062501],[68.98457031250015,24.273095703124966],[69.05156250000013,24.28632812500001],[69.11953125000011,24.26865234374995],[69.23505859374993,24.268261718750068],[69.44345703124995,24.275390625000085],[69.55917968750006,24.273095703124966],[69.80517578125009,24.16523437500004],[70.0982421875,24.2875],[70.28906250000009,24.356298828125063],[70.54677734375,24.418310546875063],[70.56503906250006,24.385791015625017],[70.55585937500015,24.331103515625074],[70.57929687500015,24.279052734374943],[70.65947265625013,24.24609374999997],[70.71630859375009,24.237988281250097],[70.7672851562501,24.245410156250017],[70.80507812500011,24.26196289062503],[70.88623046875014,24.34375],[70.92812500000016,24.362353515625045],[70.98281250000011,24.361035156250125],[71.04404296875006,24.400097656250097],[71.04531250000005,24.42998046874996],[70.96982421875012,24.571875],[70.97636718750013,24.61875],[71.00234375000016,24.6539062499999],[71.04785156250003,24.687744140625085],[71.02070312500021,24.75766601562492],[70.95087890625015,24.89160156250003],[70.87773437500019,25.06298828124997],[70.65205078125004,25.422900390625102],[70.64843750000003,25.666943359375068],[70.5695312500001,25.705957031250023],[70.50585937500009,25.685302734375085],[70.44853515625013,25.681347656249983],[70.26464843750009,25.70654296874997],[70.10019531250006,25.91005859375005],[70.14921875000002,26.347558593749994],[70.11464843750016,26.548046874999983],[69.47001953125002,26.804443359375],[69.56796875,27.174609375000102],[69.89628906250007,27.473632812500085],[70.04980468750009,27.694726562500023],[70.14453125000003,27.849023437499994],[70.19394531250006,27.89487304687492],[70.24433593750004,27.934130859375102],[70.4037109375,28.025048828124994],[70.48857421875013,28.023144531250125],[70.62910156250015,27.937451171875068],[70.6916015625001,27.76899414062504],[70.79794921875012,27.709619140625023],[70.87490234375016,27.71445312499995],[71.18476562500004,27.831640625],[71.54296875000003,27.869873046875],[71.8703125000001,27.9625],[71.88886718750004,28.04746093749992],[71.94804687500002,28.177294921875102],[72.12851562500012,28.34633789062508],[72.29199218750003,28.69726562499997],[72.34189453125006,28.751904296875097],[72.90332031250003,29.02875976562501],[73.38164062500013,29.934375],[73.8091796875,30.093359375],[73.88652343750013,30.162011718750136],[73.93339843750002,30.222070312500108],[73.92460937500007,30.28164062499999],[73.88271484375,30.352148437499977],[73.89931640625,30.435351562500045],[74.00898437500004,30.519677734374994],[74.33935546875003,30.893554687499943],[74.38037109375003,30.89340820312509],[74.50976562500009,30.959667968750097],[74.63281250000014,31.034667968750114],[74.62578125000002,31.068750000000108],[74.61035156250009,31.112841796875045],[74.51767578125012,31.185595703124932],[74.53496093750007,31.261376953125108],[74.59394531249993,31.465380859375102],[74.58183593750013,31.523925781250114],[74.50996093750015,31.712939453125074],[74.52597656249995,31.765136718750057],[74.55556640625011,31.818554687500097],[74.63574218750003,31.889746093750034],[74.73945312500015,31.948828125],[75.07148437500015,32.08935546875003],[75.13876953125,32.10478515624999],[75.25410156250004,32.140332031250125],[75.33349609374997,32.279199218749994],[75.32221348233018,32.28516356678968]]]]},"properties":{"name":"India","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[72.49199218750002,-7.37744140625],[72.42910156250002,-7.435351562500003],[72.34970703125,-7.263378906250011],[72.447265625,-7.395703125000011],[72.44560546875002,-7.220410156250011],[72.49199218750002,-7.37744140625]]]},"properties":{"name":"Br. Indian Ocean Ter.","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-9.948193359374926,53.91313476562499],[-10.265722656249949,53.977685546874994],[-9.99638671874996,54.00361328125004],[-9.948193359374926,53.91313476562499]]],[[[-6.218017578125,54.08872070312506],[-6.347607421874926,53.94130859375005],[-6.027392578124989,52.927099609375006],[-6.463183593749932,52.345361328124994],[-6.325,52.246679687500034],[-6.890234375,52.15922851562499],[-6.965771484374926,52.24951171875],[-8.057812499999926,51.82558593750005],[-8.4091796875,51.888769531250034],[-8.349121093749943,51.73930664062496],[-8.813427734374926,51.584912109374955],[-9.737304687499943,51.473730468750034],[-9.524902343750028,51.68110351562501],[-10.120751953124994,51.60068359375006],[-9.598828124999983,51.87441406250005],[-10.341064453124943,51.798925781250034],[-9.909667968749972,52.122949218749966],[-10.39023437499992,52.134912109374994],[-10.356689453125,52.20693359375002],[-9.772119140624937,52.250097656250034],[-9.90605468749996,52.403710937499966],[-9.632226562499937,52.54692382812502],[-8.783447265624943,52.679638671874955],[-8.990283203124989,52.755419921875045],[-9.175390624999949,52.634912109374994],[-9.916601562499977,52.56972656250005],[-9.46489257812496,52.82319335937498],[-9.299218749999966,53.09755859375002],[-8.930126953124983,53.207080078125045],[-9.51420898437496,53.23823242187498],[-10.091259765624926,53.41284179687503],[-10.116992187499932,53.548535156249955],[-9.720654296874926,53.6044921875],[-9.901611328124943,53.72719726562502],[-9.578222656249949,53.80541992187497],[-9.578857421875,53.879833984374955],[-9.9140625,53.863720703124955],[-9.856445312499972,54.095361328124994],[-10.092675781249966,54.15576171875003],[-10.056396484374943,54.25781250000006],[-8.545556640624994,54.24121093750003],[-8.623144531249977,54.346875],[-8.133447265624966,54.64082031250001],[-8.763916015624972,54.68120117187496],[-8.377294921874977,54.88945312500002],[-8.274609374999955,55.146289062500045],[-7.667089843749977,55.25649414062502],[-7.65874023437496,54.97094726562503],[-7.308789062500011,55.365820312500006],[-6.961669921874972,55.23789062500006],[-7.218652343749937,55.09199218749998],[-7.55039062499992,54.767968749999966],[-7.910595703124955,54.698339843750006],[-7.75439453125,54.59492187499998],[-8.118261718749977,54.41425781250004],[-7.606542968750006,54.14384765625002],[-7.324511718750017,54.13344726562502],[-7.007714843749937,54.40668945312501],[-6.649804687499937,54.05864257812496],[-6.218017578125,54.08872070312506]]]]},"properties":{"name":"Ireland","childNum":2}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[56.18798828125003,26.92114257812497],[55.95429687500004,26.70112304687501],[55.31152343749997,26.592626953125006],[55.76259765625005,26.81196289062504],[55.75761718750002,26.94765625000005],[56.279394531250006,26.952099609374983],[56.18798828125003,26.92114257812497]]],[[[46.1144531250001,38.877783203125034],[46.490625,38.90668945312498],[47.995898437500074,39.683935546875034],[48.322167968749994,39.39907226562502],[48.10439453125005,39.241113281249994],[48.292089843750006,39.01884765624999],[47.99648437499999,38.85375976562503],[48.59267578125005,38.41108398437498],[48.86875,38.43549804687498],[48.95996093750003,37.89013671875],[49.171191406250074,37.60058593749997],[50.13046875,37.407128906249994],[50.53320312499997,37.01367187500006],[51.11855468750005,36.742578124999966],[52.19013671875004,36.62172851562505],[53.76767578125006,36.93032226562502],[53.91542968750005,36.93032226562502],[53.67949218750002,36.853125],[53.970117187499994,36.818310546874955],[53.91416015625006,37.34355468750002],[54.6994140625001,37.47016601562498],[54.90009765625004,37.77792968750006],[55.38085937500003,38.051123046875034],[56.272070312500006,38.080419921875034],[56.440625,38.249414062499994],[57.1935546875001,38.216406250000034],[57.35371093750004,37.97333984374998],[58.261621093749994,37.665820312500045],[58.81542968750003,37.683496093749994],[59.30175781249997,37.51064453125005],[59.454980468749994,37.25283203125002],[60.06279296875002,36.962890625],[60.34130859375003,36.63764648437501],[61.11962890625003,36.64257812500003],[61.212011718750006,36.190527343750034],[61.15292968750006,35.97675781250001],[61.25214843750004,35.86762695312498],[61.26201171875002,35.61958007812498],[61.28183593750006,35.55341796875001],[61.2785156250001,35.513769531250006],[61.245507812499994,35.47407226562501],[61.18925781250002,35.31201171875003],[61.1,35.272314453125034],[61.08007812499997,34.85561523437505],[60.95117187499997,34.65385742187499],[60.91474609375004,34.63398437500001],[60.80234375000006,34.55463867187501],[60.73945312500004,34.544726562500045],[60.7262695312501,34.51826171874998],[60.736132812500074,34.491796875],[60.76259765625005,34.475244140624994],[60.88945312500002,34.31943359375006],[60.642675781250006,34.30717773437496],[60.48574218750005,34.09477539062502],[60.4859375,33.7119140625],[60.57382812500006,33.58833007812498],[60.91699218749997,33.505224609375006],[60.56054687499997,33.13784179687502],[60.5765625,32.99487304687503],[60.71044921874997,32.6],[60.82929687500004,32.24941406250005],[60.82724609375006,32.16796874999997],[60.789941406249994,31.98710937499999],[60.7875,31.87719726562497],[60.791601562500006,31.660595703124983],[60.82070312499999,31.495166015625045],[60.854101562500006,31.483251953125006],[61.110742187499994,31.45112304687504],[61.346484375000074,31.42163085937497],[61.66015625000003,31.382421874999977],[61.7550781250001,31.285302734374994],[61.814257812500074,31.072558593750017],[61.810839843750074,30.913281249999983],[61.78417968749997,30.831933593750023],[61.55947265625005,30.59936523437497],[61.33164062500006,30.36372070312501],[60.84335937500006,29.85869140624999],[61.03417968750003,29.663427734374977],[61.15214843750002,29.542724609375],[61.8898437500001,28.546533203124994],[62.7625,28.202050781249994],[62.782324218750006,27.800537109375],[62.75273437500002,27.265625],[63.16679687500002,27.25249023437499],[63.19609375000002,27.243945312500017],[63.25625,27.20791015625005],[63.30156250000002,27.151464843750006],[63.30517578124997,27.124560546875017],[63.242089843749994,27.07768554687499],[63.25039062499999,26.879248046875063],[63.24160156250005,26.86474609375003],[63.18613281250006,26.83759765625001],[63.168066406250006,26.66557617187496],[62.31230468750002,26.490869140624994],[62.23935546875006,26.357031249999977],[62.12597656249997,26.368994140625034],[61.842382812500006,26.225927734375006],[61.809960937499994,26.165283203125],[61.78076171874997,25.99584960937503],[61.75439453125003,25.843359375000063],[61.737695312499994,25.821093750000045],[61.66865234375004,25.76899414062501],[61.6618164062501,25.751269531250017],[61.67138671874997,25.69238281250003],[61.64013671875003,25.584619140624994],[61.61542968750004,25.28613281250003],[61.58789062499997,25.20234375000001],[61.533105468749994,25.195507812499955],[61.41220703125006,25.102099609375017],[60.66386718750002,25.28222656250003],[60.51054687500002,25.437060546875045],[60.40019531250002,25.311572265625074],[59.45605468749997,25.481494140625045],[59.0460937500001,25.417285156250017],[58.79785156249997,25.554589843750023],[57.334570312500006,25.791552734375074],[57.03603515625005,26.80068359375005],[56.728125,27.127685546875057],[56.118066406249994,27.14311523437499],[54.75927734375003,26.50507812500004],[54.24707031250003,26.696630859374977],[53.70576171875004,26.72558593750003],[52.69160156250004,27.323388671875023],[52.475878906250074,27.61650390624999],[52.03076171874997,27.824414062499955],[51.58906250000004,27.864208984374983],[51.27890625,28.13134765624997],[51.06201171874997,28.72612304687499],[50.86699218750002,28.870166015625017],[50.87578125000002,29.062695312499983],[50.67519531250005,29.146582031250034],[50.64960937500004,29.420068359374966],[50.16894531250003,29.921240234375034],[50.071582031250074,30.198535156250017],[49.55488281250004,30.028955078125023],[49.028125,30.333447265624983],[49.224511718749994,30.472314453125023],[49.00195312500003,30.506542968749983],[48.91914062500004,30.120898437500017],[48.54648437500006,29.962353515624955],[48.47851562499997,30.003808593749966],[48.43457031249997,30.03759765625],[48.33105468749997,30.28544921874996],[48.01494140625002,30.465625],[48.01064453125005,30.989794921875017],[47.679492187500074,31.00239257812501],[47.679492187500074,31.400585937499955],[47.75390624999997,31.601367187500017],[47.829980468749994,31.79443359375],[47.71455078125004,31.936425781249966],[47.5915039062501,32.087988281250034],[47.51191406250004,32.15083007812504],[47.3297851562501,32.45551757812501],[47.28515625000003,32.474023437499966],[47.121386718750074,32.46660156249996],[46.569921875,32.83393554687501],[46.37705078125006,32.92924804687499],[46.29824218750005,32.95024414062502],[46.11279296875003,32.957666015624994],[46.09306640625002,32.97587890624999],[46.08046875,33.028222656249994],[46.0807617187501,33.08652343750006],[46.14111328125003,33.174414062500034],[46.145898437499994,33.229638671874994],[46.01992187500005,33.41572265624998],[45.39707031250006,33.970849609374994],[45.542773437500074,34.21552734375004],[45.459375,34.470361328124994],[45.50078125000002,34.58159179687499],[45.6375,34.573828125],[45.678125,34.798437500000034],[45.92089843750003,35.02851562500001],[46.04179687500002,35.08017578125006],[46.13378906249997,35.127636718749955],[46.15468750000005,35.19672851562498],[46.112109375000074,35.32167968750005],[45.97109375000005,35.524169921875],[46.03740234375002,35.67314453124999],[46.180957031250074,35.71137695312504],[46.2625,35.74414062500006],[46.27343749999997,35.77324218750002],[46.16748046874997,35.820556640625],[45.77636718749997,35.82182617187499],[45.36162109375002,36.015332031249955],[45.241113281249994,36.35595703125],[45.20654296874997,36.397167968749955],[45.15527343749997,36.407373046874994],[45.11240234375006,36.409277343750034],[45.053125,36.47163085937501],[44.76513671875003,37.142431640625006],[44.79414062500004,37.290380859375034],[44.574023437500074,37.435400390625006],[44.589941406250006,37.710351562499966],[44.21132812499999,37.908056640625006],[44.4499023437501,38.33422851562506],[44.2985351562501,38.38627929687499],[44.27167968750004,38.83603515625006],[44.02324218750002,39.37744140625006],[44.3893554687501,39.422119140625],[44.58710937500004,39.76855468750006],[44.81718750000002,39.65043945312496],[45.4796875000001,39.00625],[46.1144531250001,38.877783203125034]]]]},"properties":{"name":"Iran","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[45.6375,34.573828125],[45.50078125000002,34.581591796874996],[45.459375,34.470361328124994],[45.54277343750002,34.21552734375],[45.397070312500006,33.970849609374994],[46.01992187500002,33.41572265625],[46.14589843750002,33.229638671874994],[46.14111328125,33.1744140625],[46.08076171875001,33.0865234375],[46.08046875000002,33.028222656249994],[46.09306640625002,32.975878906249996],[46.11279296875,32.957666015624994],[46.377050781250006,32.929248046874996],[46.569921875,32.833935546875],[47.12138671875002,32.466601562499996],[47.28515625,32.474023437499994],[47.32978515625001,32.455517578125],[47.51191406250001,32.150830078125],[47.59150390625001,32.08798828125],[47.71455078125001,31.936425781249994],[47.82998046875002,31.79443359375],[47.75390625,31.601367187499996],[47.67949218750002,31.400585937499997],[47.67949218750002,31.002392578124997],[48.01064453125002,30.989794921874996],[48.01494140625002,30.465625],[48.3310546875,30.285449218749996],[48.546484375,29.962353515624997],[48.454199218750006,29.9384765625],[48.354589843750006,29.956738281249997],[48.141699218750006,30.040917968749994],[47.982519531250006,30.011328125],[47.97871093750001,29.9828125],[47.64375,30.097314453124994],[47.14824218750002,30.0009765625],[46.905859375,29.5375],[46.76933593750002,29.347460937499996],[46.69375,29.259667968749994],[46.53144531250001,29.096240234374996],[46.3564453125,29.063671875],[44.71650390625001,29.193603515625],[43.77373046875002,29.84921875],[42.07441406250001,31.080371093749996],[40.47890625000002,31.893359375],[40.36933593750001,31.93896484375],[40.02783203125,31.995019531249994],[39.7041015625,32.042529296874996],[39.14541015625002,32.12451171875],[39.29277343750002,32.24384765625],[39.24746093750002,32.350976562499994],[39.04140625000002,32.3056640625],[38.773535156250006,33.372216796874994],[40.98701171875001,34.429052734375],[41.19472656250002,34.768994140625],[41.354101562500006,35.640429687499996],[41.295996093750006,36.383349609374996],[41.41679687500002,36.5146484375],[41.78857421875,36.59716796875],[42.358984375,37.10859375],[42.45585937500002,37.128710937499996],[42.63544921875001,37.249267578125],[42.74111328125002,37.3619140625],[42.77460937500001,37.371875],[42.869140625,37.334912109375],[42.936621093750006,37.324755859374996],[43.09248046875001,37.3673828125],[43.67578125,37.22724609375],[43.83642578125,37.223535156249994],[44.01318359375,37.313525390624996],[44.11445312500001,37.30185546875],[44.15625,37.282958984375],[44.19179687500002,37.249853515625],[44.20839843750002,37.20263671875],[44.20166015625,37.051806640624996],[44.281835937500006,36.97802734375],[44.32558593750002,37.0107421875],[44.401953125,37.058496093749994],[44.60595703125,37.176025390625],[44.66933593750002,37.173583984375],[44.73095703125,37.165283203125],[44.76513671875,37.142431640625],[45.053125,36.471630859375],[45.112402343750006,36.40927734375],[45.1552734375,36.407373046874994],[45.20654296875,36.39716796875],[45.24111328125002,36.35595703125],[45.36162109375002,36.01533203125],[45.7763671875,35.821826171874996],[46.16748046875,35.820556640625],[46.2734375,35.773242187499996],[46.2625,35.744140625],[46.18095703125002,35.711376953125],[46.03740234375002,35.673144531249996],[45.97109375000002,35.524169921875],[46.11210937500002,35.321679687499994],[46.15468750000002,35.196728515625],[46.1337890625,35.12763671875],[46.04179687500002,35.08017578125],[45.9208984375,35.028515625],[45.678125,34.7984375],[45.6375,34.573828125]]]},"properties":{"name":"Iraq","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-15.543115234374994,66.228515625],[-14.595849609374994,66.38154296875],[-15.117382812499983,66.125634765625],[-14.698193359374983,66.02021484375],[-14.827099609374983,65.7642578125],[-14.391845703125,65.78740234375],[-14.473388671875,65.575341796875],[-14.166943359374983,65.64228515625],[-13.617871093749983,65.5193359375],[-13.804785156249977,65.35478515625],[-13.599316406249983,65.0359375],[-14.04443359375,64.74189453125],[-14.385107421874977,64.74521484375],[-14.475390624999989,64.493994140625],[-14.927392578124994,64.319677734375],[-15.832910156249994,64.17666015625],[-16.640332031249983,63.865478515625],[-17.81572265624999,63.71298828125],[-17.946923828124994,63.5357421875],[-18.65361328124999,63.406689453125],[-20.198144531249994,63.555810546874994],[-20.494042968749994,63.687353515625],[-20.413964843749994,63.80517578125],[-20.65092773437499,63.73740234375],[-21.15239257812499,63.94453125],[-22.652197265624977,63.827734375],[-22.701171875,64.083203125],[-22.51005859374999,63.991455078125],[-22.187597656249977,64.039208984375],[-21.463330078124983,64.379150390625],[-22.053369140624994,64.313916015625],[-21.950341796874994,64.514990234375],[-21.590625,64.6263671875],[-22.10600585937499,64.533056640625],[-22.467041015625,64.794970703125],[-23.818994140624994,64.73916015625],[-24.02617187499999,64.863427734375],[-22.7880859375,65.046484375],[-21.89213867187499,65.048779296875],[-21.779980468749983,65.1876953125],[-22.50908203124999,65.19677734375],[-21.844384765624994,65.44736328125],[-22.902490234374994,65.58046875],[-23.89990234375,65.407568359375],[-24.475683593749977,65.5251953125],[-24.248925781249994,65.614990234375],[-23.85673828124999,65.53837890625],[-24.092626953124977,65.77646484375],[-23.615917968749983,65.67958984375],[-23.285351562499983,65.75],[-23.832617187499977,65.84921875],[-23.52495117187499,65.880029296875],[-23.77734375,66.017578125],[-23.434472656249994,66.02421875],[-23.452539062499994,66.181005859375],[-23.018994140624983,65.98212890625],[-22.659863281249983,66.025927734375],[-22.61601562499999,65.86748046875],[-22.44169921874999,65.90830078125],[-22.4453125,66.07001953125],[-22.947900390624994,66.212744140625],[-22.48442382812499,66.26630859375],[-23.116943359375,66.338720703125],[-22.9443359375,66.429443359375],[-22.426123046874977,66.430126953125],[-21.406884765624994,66.0255859375],[-21.374902343749994,65.74189453125],[-21.658447265625,65.723583984375],[-21.12968749999999,65.2666015625],[-20.804345703124994,65.63642578125],[-20.454833984375,65.571044921875],[-20.20751953125,66.10009765625],[-19.489697265624983,65.76806640625],[-19.382958984374994,66.07568359375],[-18.845898437499983,66.183935546875],[-18.141943359374977,65.73408203125],[-18.29716796874999,66.157421875],[-17.906982421875,66.143310546875],[-17.550439453124994,65.964404296875],[-17.153027343749983,66.20283203125],[-16.838037109374994,66.125244140625],[-16.485009765624994,66.195947265625],[-16.540673828124994,66.446728515625],[-16.24931640624999,66.522900390625],[-15.985400390624989,66.5146484375],[-15.543115234374994,66.228515625]]]},"properties":{"name":"Iceland","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[35.78730468750001,32.734912109374996],[35.572851562500006,32.640869140625],[35.56904296875001,32.619873046875],[35.55146484375001,32.3955078125],[35.484375,32.401660156249996],[35.40263671875002,32.450634765625],[35.38671875,32.493017578125],[35.303808593750006,32.512939453125],[35.19326171875002,32.534423828125],[35.065039062500006,32.46044921875],[35.01054687500002,32.338183593749996],[34.95595703125002,32.1609375],[34.98974609375,31.91328125],[34.97832031250002,31.86640625],[34.95380859375001,31.841259765624997],[34.96113281250001,31.82333984375],[34.983007812500006,31.81679687499999],[35.05322265625,31.837939453124996],[35.12714843750001,31.816748046875],[35.203710937500006,31.75],[34.95097656250002,31.602294921875],[34.88046875,31.3681640625],[35.45058593750002,31.479296875],[34.97343750000002,29.555029296875],[34.904296875,29.47734375],[34.24531250000001,31.208300781249996],[34.34833984375001,31.292919921874997],[34.350195312500006,31.362744140624997],[34.52558593750001,31.525634765625],[34.47734375000002,31.584863281249994],[34.483984375,31.59228515625],[34.67841796875001,31.895703125],[35.10859375000001,33.08369140625],[35.411230468750006,33.07568359375],[35.869140625,33.43173828125],[35.91347656250002,32.94960937499999],[35.78730468750001,32.734912109374996]]]},"properties":{"name":"Israel","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[15.576562500000051,38.220312500000034],[15.099511718750023,37.45859375],[15.295703125000017,37.05517578124997],[15.112597656250017,36.687841796875006],[14.501855468750023,36.798681640625034],[14.142968750000023,37.103662109374994],[13.90546875000004,37.10063476562502],[13.169921875000028,37.47929687499996],[12.640234375000034,37.594335937500034],[12.435546874999972,37.819775390624955],[12.734375,38.18305664062498],[12.902734375000023,38.03486328124998],[13.291113281250034,38.19145507812502],[13.788867187499989,37.981201171875],[15.11875,38.15273437500002],[15.498730468750011,38.290869140625006],[15.576562500000051,38.220312500000034]]],[[[8.478906250000023,39.067529296874966],[8.421484375000034,38.968652343749994],[8.366796875,39.115917968749955],[8.478906250000023,39.067529296874966]]],[[[8.28603515625008,41.03984375],[8.205664062500034,40.99746093750005],[8.320214843750023,41.121875],[8.28603515625008,41.03984375]]],[[[9.632031250000011,40.88203124999998],[9.805273437500063,40.499560546875045],[9.642968750000023,40.268408203125006],[9.5625,39.16601562500006],[9.056347656250068,39.23916015625002],[8.966601562500074,38.963720703125034],[8.648535156250034,38.92656250000002],[8.418164062500068,39.205712890624966],[8.547753906250023,39.83920898437506],[8.4078125,39.91723632812497],[8.471289062500063,40.29267578124998],[8.189941406250028,40.651611328125],[8.22421875,40.91333007812503],[8.571875,40.85019531250006],[9.228417968750023,41.257080078125],[9.615332031249977,41.01728515624998],[9.632031250000011,40.88203124999998]]],[[[10.395117187500034,42.85815429687503],[10.419335937499994,42.71318359374999],[10.13125,42.742041015625006],[10.395117187500034,42.85815429687503]]],[[[13.420996093750006,46.212304687499994],[13.63251953125004,46.17705078125002],[13.634960937499983,46.15776367187499],[13.61660156250008,46.133105468750045],[13.54804687500004,46.08911132812503],[13.486425781250034,46.03955078124997],[13.480273437500017,46.00922851562501],[13.487695312500023,45.987109375000045],[13.509179687500051,45.973779296874994],[13.6005859375,45.97978515624996],[13.663476562500023,45.7919921875],[13.831152343750006,45.680419921875],[13.719824218750063,45.58759765625001],[13.628320312500051,45.77094726562498],[13.206347656250074,45.771386718749966],[12.27431640625008,45.44604492187503],[12.225683593750034,45.24150390625002],[12.523437500000028,44.96796874999998],[12.248339843750045,44.72250976562498],[12.396289062500074,44.223876953125],[13.56416015625004,43.57128906250003],[14.010449218750011,42.68955078125006],[14.54072265625004,42.24428710937502],[15.16875,41.93403320312498],[16.164648437500034,41.89619140624998],[15.900488281250034,41.51206054687498],[17.954980468749994,40.65517578125002],[18.460644531249983,40.221044921875034],[18.34375,39.82138671874998],[18.077929687500017,39.93696289062498],[17.865039062500074,40.28017578125002],[17.395800781250045,40.34023437499999],[17.179980468750045,40.50278320312498],[16.92822265625,40.45805664062502],[16.521875,39.74755859375003],[17.114550781250017,39.38061523437497],[17.174609375000017,38.998095703125045],[16.61669921875003,38.800146484375034],[16.54560546875001,38.40908203125002],[16.05683593750001,37.941845703124955],[15.72451171875008,37.93911132812502],[15.645800781250017,38.034228515625045],[15.87890625,38.61391601562502],[16.19677734375,38.759228515624955],[16.20996093750003,38.94111328124998],[15.692773437499994,39.99018554687501],[14.95087890625004,40.23901367187497],[14.94765625000008,40.469335937500006],[14.765722656250063,40.66840820312498],[14.339941406250006,40.59882812500001],[14.460546875000063,40.72871093750001],[14.04433593750008,40.81225585937506],[13.733398437500057,41.23564453124999],[13.088671875000074,41.243847656249955],[12.630859374999972,41.469677734374955],[11.637304687500063,42.287548828124955],[11.141210937499977,42.38989257812503],[11.167773437500074,42.53515625000006],[10.708398437500023,42.93632812499999],[10.514843750000011,42.96752929687503],[10.188085937500063,43.947509765625],[8.76582031250004,44.42231445312501],[8.004980468750006,43.87675781249999],[7.4931640625,43.767138671875045],[7.637207031250057,44.16484375],[7.318554687500068,44.13798828125002],[6.900195312499989,44.33574218749996],[6.99267578125,44.82729492187502],[6.634765625000028,45.06816406249996],[7.07832031250004,45.23994140624998],[7.146386718750051,45.381738281249994],[6.790917968750023,45.740869140624966],[7.021093750000034,45.92578124999997],[7.055761718749977,45.90380859375003],[7.129003906249977,45.88041992187499],[7.327929687500017,45.912353515625],[7.9931640625,46.01591796874996],[8.081542968750057,46.25600585937502],[8.231933593750057,46.341210937499966],[8.29853515625004,46.403417968750034],[8.370703125,46.44511718750002],[8.458398437500023,46.24589843750002],[8.818554687500011,46.0771484375],[8.826757812500006,46.06103515625],[8.77802734375004,45.996191406250034],[8.953710937500034,45.83002929687501],[9.023730468750074,45.845703125],[9.203417968750017,46.21923828125],[9.304394531250068,46.49555664062498],[9.399316406250023,46.480664062499955],[9.427636718750023,46.48232421875002],[9.528710937500023,46.306201171875045],[9.57958984375,46.29609375000001],[9.639453125000017,46.29589843749997],[9.78779296875004,46.34604492187498],[9.884472656250011,46.36777343750006],[9.939257812500074,46.36181640625],[10.041015625000028,46.23808593750002],[10.08056640625,46.22797851562501],[10.128320312500051,46.238232421874955],[10.109667968750074,46.36284179687502],[10.081933593750023,46.420751953125006],[10.045605468750068,46.44790039062505],[10.038281250000011,46.483203125000045],[10.061230468750068,46.54677734375002],[10.087011718750063,46.59990234375002],[10.1375,46.614355468750034],[10.195507812500068,46.62109374999997],[10.4306640625,46.55004882812497],[10.409352678571473,46.6092047991071],[10.39794921875,46.66503906250006],[10.406054687500045,46.73486328124997],[10.452832031249983,46.86494140625001],[10.47939453125008,46.85512695312505],[10.579785156250011,46.85371093750001],[10.689257812500017,46.846386718749955],[10.759765625,46.79331054687498],[10.828906250000045,46.775244140625034],[10.927343750000034,46.76948242187501],[10.993261718750034,46.77700195312502],[11.02509765625004,46.796972656250006],[11.063476562500057,46.85913085937497],[11.133886718750006,46.93618164062505],[11.244433593750045,46.975683593750006],[11.433203125000063,46.983056640624994],[11.527539062500011,46.99741210937498],[11.775683593750017,46.986083984375],[12.169433593750028,47.082128906250006],[12.19716796875008,47.075],[12.201269531250034,47.060888671875034],[12.165527343750028,47.028173828125034],[12.130761718750051,46.98476562499999],[12.154101562500017,46.93525390625004],[12.267968750000023,46.83588867187504],[12.330078125,46.75981445312499],[12.388281250000034,46.70263671874997],[12.479199218749983,46.672509765624966],[13.16875,46.572656249999966],[13.3515625,46.55791015624999],[13.490039062500045,46.55556640625002],[13.7,46.52026367187503],[13.679687500000057,46.46289062499997],[13.63710937500008,46.44853515624999],[13.563281250000045,46.41508789062502],[13.399511718749977,46.31752929687502],[13.420996093750006,46.212304687499994]]]]},"properties":{"name":"Italy","childNum":6}},{"geometry":{"type":"Polygon","coordinates":[[[-77.261474609375,18.45742187499999],[-76.349853515625,18.15185546875],[-76.21079101562499,17.913525390624997],[-76.524609375,17.8662109375],[-76.85322265625,17.97373046874999],[-76.94414062499999,17.848779296874994],[-77.11948242187499,17.880078125],[-77.20498046875,17.71494140624999],[-77.36142578124999,17.833691406249997],[-77.76816406249999,17.877392578124997],[-78.04448242187499,18.173828125],[-78.339501953125,18.28720703124999],[-78.21669921875,18.44809570312499],[-77.8734375,18.522216796875],[-77.261474609375,18.45742187499999]]]},"properties":{"name":"Jamaica","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-2.018652343749977,49.23125],[-2.23583984375,49.1763671875],[-2.220507812499989,49.266357421875],[-2.018652343749977,49.23125]]]},"properties":{"name":"Jersey","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[39.14541015625002,32.12451171875],[38.9970703125,32.007470703124994],[38.96230468750002,31.994921875],[38.37548828125,31.847460937499996],[38.111425781250006,31.781152343749994],[37.49335937500001,31.625878906249994],[37.215625,31.556103515624997],[36.95859375,31.491503906249996],[37.980078125,30.5],[37.862890625,30.442626953125],[37.66972656250002,30.34814453125],[37.64990234375,30.330957031249994],[37.63359375000002,30.31328125],[37.55361328125002,30.144580078124996],[37.49072265625,30.01171875],[37.46923828125,29.995068359374997],[36.75527343750002,29.866015625],[36.70390625000002,29.831640625],[36.591796875,29.66611328125],[36.47607421875,29.4951171875],[36.2828125,29.355371093749994],[36.068457031250006,29.200537109375],[34.95078125,29.353515625],[34.97343750000002,29.555029296875],[35.45058593750002,31.479296875],[35.57207031250002,32.237890625],[35.55146484375001,32.3955078125],[35.56904296875001,32.619873046875],[35.572851562500006,32.640869140625],[35.78730468750001,32.734912109374996],[36.3720703125,32.3869140625],[36.818359375,32.317285156249994],[38.773535156250006,33.372216796874994],[39.04140625000002,32.3056640625],[39.24746093750002,32.350976562499994],[39.29277343750002,32.24384765625],[39.14541015625002,32.12451171875]]]},"properties":{"name":"Jordan","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[123.88867187499997,24.280126953124977],[123.67978515625012,24.317773437500023],[123.77148437499997,24.41445312499999],[123.93486328125002,24.362011718749983],[123.88867187499997,24.280126953124977]]],[[[124.29316406250004,24.515917968750074],[124.13574218750003,24.347607421874983],[124.08476562500002,24.435839843750017],[124.30195312500004,24.58710937500001],[124.29316406250004,24.515917968750074]]],[[[125.44414062500002,24.7431640625],[125.26894531250005,24.732519531250063],[125.28359375,24.871923828125034],[125.44414062500002,24.7431640625]]],[[[128.25878906249997,26.65278320312501],[127.86708984375,26.442480468749977],[127.80361328125005,26.152539062499983],[127.653125,26.0947265625],[127.90722656250003,26.69360351562497],[128.09765624999997,26.66777343749996],[128.25488281249997,26.88188476562496],[128.25878906249997,26.65278320312501]]],[[[128.99814453125012,27.720800781250006],[128.90000000000012,27.727783203125],[128.9076171875,27.897998046875045],[128.99814453125012,27.720800781250006]]],[[[129.45253906250005,28.20898437499997],[129.3664062500001,28.127734375000045],[129.16464843750012,28.24975585937503],[129.68955078125012,28.517480468750023],[129.45253906250005,28.20898437499997]]],[[[130.6227539062501,30.262988281250017],[130.44560546875002,30.264697265625017],[130.38808593750005,30.38818359375003],[130.49716796875006,30.465527343749983],[130.64355468749997,30.388964843750017],[130.6227539062501,30.262988281250017]]],[[[130.95976562500007,30.39692382812504],[130.87031250000004,30.444238281249994],[131.06035156250007,30.828466796875006],[130.95976562500007,30.39692382812504]]],[[[130.38105468750004,32.42373046875002],[130.24169921874997,32.462792968749994],[130.46142578124997,32.515722656250034],[130.38105468750004,32.42373046875002]]],[[[130.08251953124997,32.22968750000001],[129.9601562500001,32.24375],[130.00976562499997,32.521630859374994],[130.16777343750002,32.54121093749998],[130.19951171875002,32.34057617187506],[130.08251953124997,32.22968750000001]]],[[[128.66533203125002,32.783886718749955],[128.89453124999997,32.65214843750002],[128.69296875000012,32.60473632812506],[128.66533203125002,32.783886718749955]]],[[[129.07695312500002,32.84028320312498],[128.99726562500004,32.95185546874998],[129.10976562500005,33.13256835937503],[129.18193359375002,32.99311523437504],[129.07695312500002,32.84028320312498]]],[[[129.49179687500006,33.22304687499999],[129.37041015625002,33.176025390625],[129.56992187500006,33.36103515625004],[129.49179687500006,33.22304687499999]]],[[[129.79570312500007,33.74882812499999],[129.67480468749997,33.73969726562498],[129.71728515624997,33.8583984375],[129.79570312500007,33.74882812499999]]],[[[131.17460937500007,33.602587890625045],[131.69628906250003,33.60283203124999],[131.53740234375007,33.274072265624994],[131.89658203125006,33.25458984375001],[131.8478515625001,33.118066406249994],[132.0021484375001,32.882373046875045],[131.6603515625001,32.465625],[131.33720703125007,31.4046875],[131.07080078124997,31.436865234374977],[131.09843750000002,31.256152343750017],[130.68574218750004,31.01513671875003],[130.77626953125,31.70629882812497],[130.65507812500002,31.71840820312505],[130.5560546875,31.563085937500034],[130.58876953125,31.178515625000017],[130.20068359374997,31.291894531250023],[130.14726562500002,31.40849609374996],[130.2941406250001,31.45068359375003],[130.3219726562501,31.601464843750023],[130.18789062500005,31.768847656250017],[130.19443359375012,32.090771484374955],[130.64052734375005,32.61923828124998],[130.49785156250002,32.65693359375001],[130.547265625,32.83159179687499],[130.2375,33.177636718749966],[130.12685546875005,33.10483398437506],[130.175,32.851318359375],[130.32646484375002,32.852636718750006],[130.34042968750012,32.70185546875004],[130.05410156250005,32.770800781250045],[129.76855468749997,32.57099609375001],[129.82675781250006,32.72534179687503],[129.67910156250005,33.059960937499966],[129.99169921875003,32.85156249999997],[129.58007812500003,33.23627929687501],[129.61015625000002,33.34365234375005],[129.844140625,33.32177734375003],[129.82568359374997,33.43701171875006],[130.36503906250007,33.634472656249955],[130.4837890625,33.834619140624966],[130.715625,33.92778320312502],[130.953125,33.87202148437504],[131.17460937500007,33.602587890625045]]],[[[132.266015625,33.945166015625006],[132.44492187500006,33.91318359374998],[132.20878906250007,33.87285156250002],[132.266015625,33.945166015625006]]],[[[129.27949218750004,34.123388671875006],[129.18642578125,34.14501953125006],[129.21484374999997,34.320654296875034],[129.3371093750001,34.284765625],[129.27949218750004,34.123388671875006]]],[[[134.35742187500003,34.25634765625],[134.6375,34.22661132812499],[134.73886718750012,33.82050781250001],[134.37705078125012,33.60839843749997],[134.18164062500003,33.24721679687502],[133.95869140625004,33.44833984375006],[133.63203125000004,33.51098632812503],[133.28593750000007,33.35996093749998],[132.97724609375004,32.84199218749998],[132.80429687500006,32.75200195312502],[132.6417968750001,32.76245117187503],[132.70898437500003,32.90249023437505],[132.49511718749997,32.91660156249998],[132.41279296875004,33.43046875],[132.0326171875,33.339990234374994],[132.64306640624997,33.68994140624997],[132.93515625000006,34.09531250000006],[133.19306640625004,33.93320312499998],[133.58203124999997,34.01713867187502],[133.60263671875006,34.24384765625001],[133.94833984375006,34.34804687500002],[134.35742187500003,34.25634765625]]],[[[134.35185546875002,34.48364257812503],[134.25185546875,34.42304687500004],[134.18212890625003,34.51923828124998],[134.35185546875002,34.48364257812503]]],[[[134.9328125000001,34.28813476562499],[134.82441406250004,34.202929687500045],[134.66787109375005,34.294140624999955],[135.00468750000002,34.54404296874998],[134.9328125000001,34.28813476562499]]],[[[129.38564453125,34.35366210937502],[129.26669921875012,34.37045898437506],[129.45107421875005,34.68657226562499],[129.38564453125,34.35366210937502]]],[[[133.37050781250005,36.203857421875],[133.23925781249997,36.178759765625045],[133.20615234375006,36.293408203124955],[133.29570312500002,36.34013671874996],[133.37050781250005,36.203857421875]]],[[[138.34404296875007,37.822119140625006],[138.22519531250006,37.82939453124996],[138.25,38.078466796875006],[138.50361328125004,38.31591796875006],[138.45361328124997,38.07568359375006],[138.57519531249997,38.065527343750034],[138.34404296875007,37.822119140625006]]],[[[141.22929687500007,41.37265625],[141.45546875000005,41.404736328124955],[141.43046875000002,40.72333984374998],[141.7970703125001,40.29116210937502],[141.97695312500005,39.428808593750034],[141.90078125,39.111328125],[141.5462890625,38.762841796874966],[141.4674804687501,38.404150390625006],[141.10839843750003,38.33793945312502],[140.9621093750001,38.148876953124955],[141.00166015625004,37.11464843750002],[140.57353515625007,36.23134765625002],[140.87402343749997,35.72495117187506],[140.457421875,35.51025390625],[140.35468750000004,35.18144531249999],[139.8439453125001,34.914892578125034],[139.82646484375002,35.29667968750002],[140.096875,35.58515624999998],[139.83476562500002,35.658056640625006],[139.65000000000012,35.40913085937501],[139.675,35.149267578125006],[139.47441406250002,35.298535156249955],[139.24941406250005,35.27802734375004],[139.08603515625006,34.83916015624999],[138.8375,34.619238281250034],[138.80273437499997,34.97480468749998],[138.90361328125002,35.02524414062506],[138.71962890625,35.12407226562502],[138.18906250000012,34.596337890624994],[137.543359375,34.66420898437505],[137.06171875000004,34.58281249999999],[137.27519531250002,34.77250976562499],[136.96328125000005,34.83491210937501],[136.87128906250004,34.733105468749955],[136.89707031250006,35.03554687500002],[136.80419921874997,35.05029296875],[136.53300781250007,34.678369140624994],[136.8802734375,34.43359375000006],[136.8537109375001,34.324072265625034],[136.32988281250007,34.17685546875006],[135.91621093750004,33.561718749999955],[135.69531250000003,33.48696289062502],[135.4528320312501,33.55336914062505],[135.12792968749997,34.006982421874994],[135.10009765624997,34.288378906250045],[135.41591796875,34.61748046875002],[134.74003906250007,34.765234375],[134.246875,34.71386718750003],[133.96826171874997,34.52729492187504],[133.14238281250002,34.30244140624998],[132.65654296875007,34.24609375000003],[132.31259765625006,34.32495117187503],[132.14648437499997,33.83876953125002],[131.74052734375007,34.05205078125002],[130.91884765625,33.97573242187502],[130.88925781250012,34.261816406250034],[131.00419921875007,34.39257812500003],[131.35439453125,34.41318359375006],[132.92294921875006,35.511279296875045],[133.98125,35.50722656250002],[135.17431640625003,35.74707031250003],[135.32695312500002,35.52553710937502],[135.68027343750006,35.503125],[135.903125,35.60688476562498],[136.09531250000006,35.767626953125045],[136.06748046875006,36.11684570312505],[136.69814453125005,36.742041015625034],[136.84345703125004,37.38212890624999],[137.32265625,37.52207031249998],[136.89990234375003,37.11767578125],[137.01669921875006,36.83720703124999],[137.24628906250004,36.753173828125],[137.5140625,36.95156250000002],[138.31992187500012,37.21840820312502],[138.88505859375007,37.84394531250001],[139.36386718750006,38.09902343750002],[139.80195312500004,38.881591796875],[140.06474609375002,39.624414062499994],[139.99472656250006,39.855078125],[139.74150390625002,39.92084960937498],[140.01113281250005,40.26035156250006],[139.92285156250003,40.59843750000002],[140.28125,40.84609375000002],[140.3444335937501,41.203320312499955],[140.62763671875004,41.195410156250034],[140.74863281250012,40.830322265625],[140.93603515625003,40.940771484375034],[141.1185546875,40.88227539062501],[141.24423828125006,41.20561523437499],[140.80058593750002,41.138818359374966],[140.80185546875012,41.253662109375],[140.9369140625,41.50556640624998],[141.22929687500007,41.37265625]]],[[[139.48125,42.08100585937498],[139.43134765625004,42.19956054687498],[139.55839843750002,42.235205078125034],[139.48125,42.08100585937498]]],[[[141.29541015625003,45.11933593750001],[141.14531250000002,45.153906250000034],[141.19375,45.24785156249999],[141.29541015625003,45.11933593750001]]],[[[141.07275390624997,45.33286132812498],[141.03398437500007,45.26933593750002],[140.97167968749997,45.465478515624994],[141.07275390624997,45.33286132812498]]],[[[143.82431640625012,44.11699218749999],[144.71523437500005,43.92797851562503],[145.36953125000005,44.32739257812506],[145.13964843750003,43.6625],[145.34082031249997,43.30253906249999],[145.83300781249997,43.38593750000001],[144.92138671874997,43.00092773437498],[143.96933593750006,42.88139648437499],[143.42949218750002,42.41889648437498],[143.2365234375001,42.000195312499955],[141.85136718750007,42.57905273437501],[141.40664062500005,42.54692382812496],[140.98613281250002,42.34213867187498],[140.70976562500002,42.555615234374955],[140.48046875000003,42.559375],[140.32666015625003,42.29335937499999],[141.15097656250012,41.80507812499999],[140.99951171874997,41.73740234375006],[140.65986328125004,41.815576171874994],[140.3849609375001,41.51928710937503],[140.08515625000004,41.43408203125],[139.99531250000004,41.57641601562503],[140.10839843749997,41.912939453125034],[139.83544921874997,42.278076171875],[139.86015625000002,42.58173828125004],[140.43222656250012,42.95410156250006],[140.39238281250002,43.303125],[141.13818359374997,43.17993164062506],[141.37412109375006,43.279638671875006],[141.7609375000001,44.482519531250034],[141.58300781250003,45.15595703125001],[141.66796874999997,45.401269531249966],[141.93769531250004,45.509521484375],[142.88476562499997,44.670117187499955],[143.82431640625012,44.11699218749999]]]]},"properties":{"name":"Japan","childNum":28}},{"geometry":{"type":"Polygon","coordinates":[[[77.04863281249999,35.109912109374996],[76.927734375,35.346630859375],[76.88222656250002,35.4357421875],[76.81279296874999,35.571826171874996],[76.76689453124999,35.66171875],[76.87890625,35.61328125],[77.09003906250001,35.552050781249996],[77.29482421875002,35.508154296875],[77.44648437500001,35.4755859375],[77.57255859374999,35.471826171874994],[77.72402343750002,35.48056640625],[77.79941406250003,35.495898437499996],[77.42343750000003,35.302587890625],[77.16855468750003,35.171533203124994],[77.04863281249999,35.109912109374996]]]},"properties":{"name":"Siachen Glacier","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[50.184472656249994,44.854638671874994],[49.99511718750003,44.93696289062498],[50.10986328124997,45.08193359375002],[50.038867187500074,44.949121093749966],[50.184472656249994,44.854638671874994]]],[[[87.32285156250012,49.085791015625006],[86.8083007812501,49.04970703125002],[86.54941406250012,48.52861328125002],[85.7494140625,48.38505859374999],[85.52597656250006,47.915625],[85.65664062500005,47.254638671875],[85.484765625,47.06352539062496],[84.78613281249997,46.83071289062505],[84.66660156250006,46.97236328125004],[84.016015625,46.97050781250002],[83.02949218750004,47.18593750000002],[82.31523437500002,45.59492187499998],[82.61162109375007,45.424267578124955],[82.52148437500003,45.12548828125],[82.26660156249997,45.21909179687498],[81.94492187500006,45.16083984375001],[81.69199218750012,45.34936523437497],[80.05917968750012,45.006445312500006],[79.871875,44.88378906249997],[80.48154296875006,44.71464843749999],[80.35527343750002,44.09726562500006],[80.78574218750006,43.16157226562504],[80.39023437500006,43.043115234374966],[80.53896484375005,42.873486328124955],[80.20224609375012,42.73447265624998],[80.209375,42.190039062500006],[80.07128906249997,42.302978515625],[79.92109375000004,42.41313476562496],[79.49013671875,42.45756835937496],[79.42822265624997,42.483496093750006],[79.20302734375005,42.66601562499997],[79.16484375000007,42.759033203125],[79.1266601562501,42.775732421875034],[76.98808593750007,42.97358398437501],[76.64648437500003,42.928808593750034],[76.50917968750005,42.91889648437498],[75.9322265625,42.92851562499999],[75.84033203125003,42.9375],[75.78955078124997,42.93291015624999],[75.68173828125,42.83046875],[75.04765625000007,42.904394531250034],[74.20908203125006,43.24038085937502],[73.88603515625002,43.132568359375],[73.55625,43.002783203125006],[73.45019531249997,42.703027343749966],[73.421875,42.59350585937503],[73.49296875000007,42.409033203125034],[73.41162109375003,42.41977539062498],[73.316015625,42.46699218750001],[73.2829101562501,42.50410156250004],[72.85507812500006,42.561132812500006],[72.75292968750003,42.63789062500001],[72.54316406250004,42.67773437500006],[72.27578125,42.757666015625006],[71.76054687500002,42.82148437500004],[71.5142578125,42.766943359375006],[71.42207031250004,42.78315429687504],[71.25664062500002,42.733544921874966],[70.89287109375007,42.339990234374994],[70.94677734374997,42.24868164062505],[69.15361328125002,41.42524414062498],[68.58408203125,40.876269531250045],[68.57265625,40.62265624999998],[68.29189453125,40.656103515625034],[68.04765625000007,40.80927734374998],[68.11308593750007,41.02861328124999],[67.9357421875001,41.19658203125002],[66.70966796875004,41.17915039062501],[66.49863281250006,41.99487304687503],[66.00957031250007,42.00488281250003],[66.1002929687501,42.99082031249998],[65.80302734375002,42.87695312500006],[65.49619140625,43.310546875],[64.9054687500001,43.714697265625006],[64.44316406250007,43.55117187499999],[63.20703125000003,43.62797851562502],[61.99023437500003,43.492138671874955],[61.007910156250006,44.39379882812497],[58.555273437500006,45.55537109375001],[55.97568359375006,44.99492187499996],[55.97744140625005,41.32221679687504],[55.434375,41.296289062499994],[54.85380859375002,41.965185546875006],[54.120996093749994,42.335205078125],[53.0558593750001,42.14775390624999],[52.4938476562501,41.780371093750034],[52.59658203125005,42.760156249999966],[51.898242187500074,42.86962890624997],[51.61601562500002,43.15844726562503],[51.29541015624997,43.17412109375002],[51.30175781249997,43.48237304687501],[50.8307617187501,44.192773437499966],[50.331152343750006,44.32548828125002],[50.25292968749997,44.461523437500006],[50.409472656250074,44.6240234375],[51.543554687500006,44.53100585937506],[51.009375,44.92182617187501],[51.4157226562501,45.35786132812501],[53.20039062500004,45.33198242187498],[52.77382812499999,45.57275390625],[53.13525390625003,46.19165039062497],[53.069433593750006,46.85605468750006],[52.48320312500002,46.99067382812504],[52.13828125,46.82861328124997],[51.178027343750074,47.110156250000045],[49.886328125,46.59565429687504],[49.347460937500074,46.51914062499998],[49.232226562500074,46.33715820312503],[48.54121093750004,46.60561523437502],[48.558398437500074,46.75712890624999],[48.959375,46.77460937499998],[48.16699218750003,47.70878906249996],[47.48193359374997,47.80390624999998],[47.292382812499994,47.74091796875004],[47.06464843750004,48.23247070312499],[46.660937500000074,48.41225585937502],[46.70263671875003,48.80556640625002],[47.031347656250006,49.150292968749994],[46.80205078125002,49.36708984375002],[46.889550781249994,49.69697265625001],[47.42919921874997,50.35795898437502],[47.7057617187501,50.37797851562502],[48.33496093750003,49.858251953125006],[48.7589843750001,49.92832031250006],[48.625097656250006,50.61269531250005],[49.32343750000004,50.851708984374966],[49.49804687500003,51.08359375000006],[50.246875,51.28950195312498],[50.79394531249997,51.729199218749955],[51.16347656250005,51.6474609375],[51.344531250000074,51.47534179687503],[52.21914062499999,51.709375],[52.57119140625005,51.481640624999955],[53.33808593750004,51.48237304687504],[54.139746093750006,51.04077148437503],[54.555273437500006,50.535791015624994],[54.64160156250003,51.011572265625034],[55.68623046875004,50.582861328125006],[56.49140625000004,51.01953124999997],[57.01171874999997,51.06518554687503],[57.44218750000002,50.88886718749998],[57.83886718750003,51.091650390625006],[58.359179687500074,51.063818359375034],[58.88369140625005,50.694433593750006],[59.4523437500001,50.62041015625002],[59.523046875,50.492871093749955],[59.812402343749994,50.58203125],[60.05859374999997,50.850292968749955],[60.42480468749997,50.67915039062498],[60.94228515625005,50.69550781250004],[61.38945312500002,50.86103515625001],[61.55468750000003,51.32460937500005],[60.464746093749994,51.651171875000045],[60.03027343749997,51.93325195312505],[60.99453125000005,52.33686523437504],[60.77441406249997,52.67578124999997],[61.047460937500006,52.97246093750002],[62.08271484375004,53.00541992187499],[61.65986328125004,53.22846679687504],[61.19921874999997,53.28715820312502],[61.22890625,53.445898437500006],[61.53496093750002,53.52329101562506],[60.97949218749997,53.62172851562505],[61.231054687500006,54.01948242187498],[61.92871093750003,53.94648437500004],[64.46123046875002,54.38417968750002],[65.08837890624997,54.340185546875034],[65.476953125,54.62329101562497],[68.15585937500006,54.97670898437505],[68.20625,55.16093750000002],[68.9772460937501,55.389599609374955],[70.18242187500002,55.162451171875034],[70.73808593750007,55.30517578125],[71.18554687500003,54.59931640624998],[71.09316406250005,54.21220703124999],[72.00449218750006,54.20566406249998],[72.18603515625003,54.32563476562501],[72.44677734375003,53.94184570312498],[72.62226562500004,54.13432617187502],[73.22988281250005,53.957812500000045],[73.71240234375003,54.04238281250002],[73.30566406250003,53.707226562499955],[73.40693359375004,53.44755859374999],[73.85898437500006,53.61972656249998],[74.35156250000003,53.487646484375006],[74.45195312500007,53.64726562500002],[75.22021484374997,53.89379882812506],[75.43720703125004,54.08964843749999],[76.8373046875,54.4423828125],[76.65458984375007,54.14526367187503],[76.42167968750007,54.151513671874966],[76.48476562500005,54.02255859374998],[77.85996093750006,53.269189453124994],[79.98623046875,50.774560546874966],[80.42363281250002,50.94628906249997],[80.44804687500002,51.18334960937503],[80.73525390625,51.29340820312498],[81.12724609375002,51.19106445312502],[81.0714843750001,50.96875],[81.38828125000006,50.95649414062501],[81.46591796875006,50.73984375],[82.49394531250007,50.72758789062499],[82.76083984375012,50.89335937500002],[83.35732421875005,50.99458007812504],[83.94511718750007,50.774658203125],[84.32324218749997,50.239160156249966],[84.9894531250001,50.061425781249994],[85.2326171875001,49.61582031249998],[86.1808593750001,49.49931640624996],[86.67548828125004,49.77729492187501],[86.62646484374997,49.56269531250001],[87.32285156250012,49.085791015625006]]]]},"properties":{"name":"Kazakhstan","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[35.325292968750006,5.364892578124994],[35.745019531249994,5.343994140625],[35.80029296874997,5.156933593749983],[35.77929687499997,5.105566406250006],[35.756152343750074,4.950488281250031],[35.76308593750005,4.808007812500051],[36.02197265625003,4.468115234374991],[36.90556640625002,4.411474609374991],[37.15458984375002,4.254541015624994],[37.944921875,3.746728515625023],[38.0861328125001,3.648828124999966],[38.22529296875004,3.61899414062502],[38.45156250000005,3.604833984374977],[38.608007812500006,3.600097656249986],[39.49443359375002,3.45610351562496],[39.65751953125002,3.577832031249983],[39.79033203125002,3.754248046875034],[39.8421875,3.851464843750037],[40.765234375,4.273046875000034],[41.02080078125002,4.057470703124991],[41.22089843750004,3.943554687499969],[41.372460937499994,3.94619140624998],[41.48193359375003,3.96328125],[41.737695312499994,3.979052734375003],[41.88398437500004,3.977734375000011],[41.6134765625001,3.59047851562498],[41.34179687499997,3.20166015625],[40.964453125,2.814648437500026],[40.9787109375001,-0.870312500000011],[41.249804687500074,-1.220507812499946],[41.4269531250001,-1.449511718749974],[41.521875,-1.572265625000028],[41.53271484374997,-1.695312499999957],[41.26748046875005,-1.945019531250026],[40.889746093750006,-2.023535156250034],[40.89824218750002,-2.269921874999966],[40.64414062500006,-2.53945312499998],[40.22246093750002,-2.688378906250037],[40.1154296875001,-3.250585937499991],[39.8609375,-3.576757812500006],[39.49091796875004,-4.478417968750023],[39.221777343750006,-4.692382812500014],[37.608203125000074,-3.497070312500028],[37.643847656250074,-3.045410156250028],[33.90322265625005,-1.002050781250034],[33.94316406250002,0.173779296874969],[34.160937500000074,0.605175781250026],[34.4108398437501,0.867285156250034],[34.48173828125002,1.042138671875051],[34.79863281250002,1.24453125],[34.976464843749994,1.719628906250051],[34.97753906249997,1.861914062499991],[34.9640625000001,2.06240234374998],[34.8830078125001,2.417919921875026],[34.90576171875003,2.4796875],[34.44785156250006,3.163476562500037],[34.40722656249997,3.357519531250034],[34.39941406249997,3.412695312500006],[34.44179687499999,3.60625],[34.43769531250004,3.650585937499969],[34.392871093750074,3.691503906250048],[34.26708984375003,3.733154296875],[34.16503906250003,3.812988281250014],[34.18574218750004,3.869775390625037],[34.13203125000004,3.889160156249986],[33.97607421874997,4.220214843750028],[34.176855468750006,4.419091796875037],[34.38017578125002,4.620654296874974],[34.6398437500001,4.875488281250028],[34.878320312499994,5.109570312500026],[35.08447265624997,5.31186523437502],[35.268359375000074,5.492285156250006],[35.325292968750006,5.364892578124994]]]},"properties":{"name":"Kenya","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[72.63994140625002,39.385986328125],[72.22998046875,39.20751953125],[72.14736328125002,39.2607421875],[72.08417968750001,39.31064453125],[72.04277343750002,39.3521484375],[71.77861328125002,39.277978515624994],[71.73222656250002,39.422998046874994],[71.50332031250002,39.478808593749996],[71.51738281250002,39.553857421874994],[71.50302734375,39.582177734374994],[71.4703125,39.603662109374994],[70.79931640625,39.3947265625],[70.50117187500001,39.587353515625],[69.29765625000002,39.524804687499994],[69.2447265625,39.827099609375],[69.27880859375,39.917773437499996],[69.3072265625,39.968554687499996],[69.36542968750001,39.947070312499996],[69.43193359375002,39.909765625],[69.47626953125001,39.919726562499996],[69.47099609375002,39.990625],[69.46875,40.020751953125],[69.966796875,40.20224609375],[70.59921875,39.974511718749994],[70.990625,40.2548828125],[71.3046875,40.286914062499996],[71.69248046875,40.15234375],[72.13125,40.438623046874994],[72.3892578125,40.427392578124994],[72.40205078125001,40.578076171875],[72.6041015625,40.525439453124996],[73.13212890625002,40.82851562499999],[72.65830078125,40.869921875],[72.36406250000002,41.04345703125],[72.294921875,41.039941406249994],[72.21308593750001,41.0142578125],[72.18730468750002,41.025927734374996],[72.18095703125002,41.118457031249996],[72.16425781250001,41.173730468749994],[72.11542968750001,41.186572265624996],[72.05244140625001,41.16474609375],[71.95849609375,41.187060546874996],[71.87861328125001,41.19501953125],[71.8580078125,41.311376953125],[71.79248046875,41.413134765624996],[71.75771484375002,41.428027343749996],[71.70068359375,41.454003906249994],[71.66494140625002,41.5412109375],[71.6375,41.5341796875],[71.60224609375001,41.503271484375],[71.60625,41.367431640625],[71.54560546875001,41.308056640625],[71.5,41.307470703125],[71.4208984375,41.34189453125],[71.40839843750001,41.136035156249996],[71.39306640625,41.123388671875],[71.11074218750002,41.152636718749996],[70.86044921875,41.224902343749996],[70.734375,41.400537109374994],[70.18095703125002,41.571435546874994],[70.85664062500001,42.030810546874996],[71.0322265625,42.077783203124994],[71.228515625,42.162890625],[71.23232421875002,42.186279296875],[71.21269531250002,42.206445312499994],[71.12998046875,42.25],[71.03603515625002,42.28466796875],[70.97900390625,42.266552734375],[70.94677734375,42.248681640624994],[70.89287109375002,42.339990234374994],[71.25664062500002,42.733544921874994],[71.42207031250001,42.783154296875],[71.5142578125,42.766943359375],[71.76054687500002,42.821484375],[72.16181640625001,42.760693359375],[72.27578125000002,42.757666015625],[72.54316406250001,42.677734375],[72.7529296875,42.637890625],[72.855078125,42.5611328125],[73.28291015625001,42.5041015625],[73.316015625,42.4669921875],[73.41162109375,42.419775390625],[73.49296875000002,42.409033203125],[73.421875,42.593505859375],[73.4501953125,42.703027343749994],[73.55625,43.002783203125],[73.88603515625002,43.132568359375],[74.20908203125,43.240380859374994],[75.04765625000002,42.90439453125],[75.68173828125,42.83046875],[75.78955078125,42.932910156249996],[75.84033203125,42.9375],[75.9322265625,42.928515625],[76.50917968750002,42.918896484375],[76.646484375,42.92880859375],[76.98808593749999,42.973583984375],[79.12666015625001,42.775732421875],[79.20302734375002,42.666015625],[79.29550781250003,42.604833984375],[79.36777343750003,42.547216796875],[79.42822265625,42.48349609375],[79.92109375000001,42.413134765624996],[80.0712890625,42.302978515625],[80.209375,42.1900390625],[80.24619140625003,42.059814453125],[80.23515624999999,42.04345703125],[80.21621093750002,42.032421875],[79.90966796875,42.014990234375],[79.84042968750003,41.995751953124994],[79.76611328125,41.898876953125],[78.74257812500002,41.56005859375],[78.54316406250001,41.4595703125],[78.44287109375,41.417529296874996],[78.36240234375003,41.371630859374996],[78.34628906250003,41.2814453125],[78.12343750000002,41.075634765625],[77.95644531250002,41.050683593749994],[77.81523437499999,41.055615234375],[77.71933593750003,41.024316406249994],[77.58173828125001,40.9927734375],[76.98662109374999,41.03916015625],[76.90771484375,41.024169921875],[76.82402343749999,40.982324218749994],[76.70839843750002,40.818115234375],[76.6611328125,40.779638671875],[76.63984375000001,40.742236328124996],[76.62216796875003,40.662353515625],[76.57792968749999,40.577880859375],[76.48017578125001,40.449511718749996],[76.39638671875002,40.389794921874994],[76.31855468750001,40.35224609375],[76.25830078125,40.43076171875],[75.87197265625002,40.30322265625],[75.67714843750002,40.305810546874994],[75.55556640625002,40.6251953125],[75.52080078125002,40.6275390625],[75.24101562500002,40.480273437499996],[75.111328125,40.4541015625],[75.0044921875,40.449511718749996],[74.865625,40.493505859375],[74.80126953125,40.428515625],[74.83046875000002,40.32851562499999],[74.41191406250002,40.13720703125],[74.24267578125,40.092041015625],[74.08515625000001,40.07431640625],[73.99160156250002,40.043115234374994],[73.93876953125002,39.978808593749996],[73.88457031250002,39.8779296875],[73.85625,39.828662109374996],[73.83535156250002,39.800146484375],[73.83974609375002,39.762841796874994],[73.88251953125001,39.71455078125],[73.9146484375,39.606494140624996],[73.90712890625002,39.57851562499999],[73.87275390625001,39.53330078125],[73.82294921875001,39.48896484375],[73.71572265625002,39.462255859375],[73.63164062500002,39.448876953124994],[73.47041015625001,39.460595703124994],[73.38740234375001,39.442724609375],[73.33613281250001,39.412353515625],[73.2349609375,39.374560546874996],[73.10927734375002,39.3619140625],[72.63994140625002,39.385986328125]],[[70.66416015625,39.85546875],[70.56708984375001,39.866601562499994],[70.49775390625001,39.882421875],[70.48281250000002,39.882714843749994],[70.4892578125,39.863037109375],[70.5595703125,39.790917968749994],[70.61210937500002,39.786767578124994],[70.70166015625,39.82529296875],[70.66416015625,39.85546875]],[[71.20615234375,39.892578125],[71.22871093750001,40.048144531249996],[71.08037109375002,40.079882812499996],[71.02412109375001,40.149169921875],[71.00546875,40.152294921875],[70.96064453125001,40.08798828125],[71.04482421875002,39.992529296875],[71.04365234375001,39.976318359375],[71.01171875,39.8951171875],[71.06425781250002,39.884912109374994],[71.15625,39.883447265624994],[71.20615234375,39.892578125]]]},"properties":{"name":"Kyrgyzstan","childNum":3}},{"geometry":{"type":"Polygon","coordinates":[[[104.42636718750006,10.411230468749991],[103.87050781250005,10.655126953125034],[103.58710937500004,10.552197265625026],[103.54042968750005,10.668701171875043],[103.721875,10.890136718750043],[103.5324218750001,11.146679687499997],[103.35361328125006,10.921582031250054],[103.15283203124997,10.913720703125051],[103.12548828124997,11.460644531250011],[102.9486328125,11.773486328124974],[102.93388671875002,11.706689453125037],[102.73662109375007,12.089794921875011],[102.75566406250002,12.42626953125],[102.49960937500012,12.669970703125003],[102.33632812500005,13.560302734375014],[102.546875,13.585693359375043],[102.90927734375006,14.136718750000028],[103.19941406250004,14.332617187499977],[104.77900390625004,14.427832031250006],[105.07412109375005,14.227441406250037],[105.12597656250003,14.280957031250011],[105.16914062500004,14.336083984374966],[105.1833007812501,14.346240234374989],[105.18554687500003,14.319091796874972],[105.20703125000003,14.259375],[105.24570312500006,14.200537109374977],[105.35019531250006,14.109570312500011],[105.53154296875007,14.156152343749994],[105.73974609375003,14.084960937500057],[105.83144531250005,13.976611328125003],[105.9044921875001,13.924511718750054],[106.06679687500005,13.921191406250003],[106.12470703125004,14.049121093750031],[106.09667968749997,14.127099609375023],[106.00410156250004,14.262890624999983],[105.97890625,14.343017578125043],[106.00839843750012,14.357177734375],[106.1652343750001,14.372363281249989],[106.19072265625007,14.388134765624997],[106.22539062500002,14.476220703125009],[106.26796875,14.466210937500009],[106.35498046875003,14.454785156249997],[106.44697265625004,14.515039062500009],[106.50146484375003,14.578222656250006],[106.53115234375005,14.549414062499991],[106.5636718750001,14.505078125000026],[106.59921875000006,14.479394531250037],[106.66542968750005,14.441308593749994],[106.73818359375005,14.387744140625017],[106.78349609375002,14.335107421875037],[106.81992187500006,14.314697265625057],[106.91318359375006,14.329394531250031],[106.93808593750006,14.327343750000054],[106.99218750000003,14.391015624999966],[107.03017578125,14.425683593750009],[107.06240234375,14.415771484375043],[107.109375,14.416699218750054],[107.29267578125004,14.592382812500048],[107.37988281250003,14.555322265625051],[107.41474609375004,14.56289062499999],[107.51943359375005,14.705078125],[107.3314453125,14.126611328125009],[107.60546874999997,13.437792968750017],[107.47539062500002,13.030371093749963],[107.50644531250006,12.364550781250031],[107.39335937500002,12.260498046874972],[107.21210937500004,12.30400390624996],[106.70009765625,11.979296874999974],[106.41386718750002,11.9484375],[106.39921875000007,11.687011718750028],[106.0060546875001,11.758007812500011],[105.85146484375005,11.635009765625],[105.85605468750006,11.294287109375048],[106.16093750000002,11.037109375000057],[106.16396484375005,10.794921875],[105.85332031250007,10.86357421874996],[105.75507812500004,10.989990234375043],[105.40576171875003,10.95161132812504],[105.3146484375001,10.845166015625026],[105.04570312500002,10.911376953125014],[105.04638671874997,10.701660156250014],[104.85058593749997,10.534472656249974],[104.42636718750006,10.411230468749991]]]},"properties":{"name":"Cambodia","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-157.34213867187503,1.855566406250034],[-157.17578125,1.73984375],[-157.57895507812498,1.902050781249997],[-157.43583984374993,1.84726562500002],[-157.365185546875,1.94609375],[-157.44189453125003,2.025048828125009],[-157.321875,1.968554687500045],[-157.34213867187503,1.855566406250034]]],[[[-159.3390625,3.923535156249983],[-159.27475585937503,3.796582031250054],[-159.40903320312503,3.87324218750004],[-159.3390625,3.923535156249983]]]]},"properties":{"name":"Kiribati","childNum":2}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[126.32695312500002,33.2236328125],[126.16562500000012,33.31201171875],[126.33769531250002,33.46040039062501],[126.90117187500002,33.51513671874997],[126.87285156250002,33.34116210937498],[126.32695312500002,33.2236328125]]],[[[126.23369140625002,34.370507812499994],[126.12285156250002,34.443945312500034],[126.34384765625012,34.544921875],[126.23369140625002,34.370507812499994]]],[[[126.17197265625006,34.73115234375001],[126.00751953125004,34.86748046874999],[126.07841796875002,34.914843750000045],[126.17197265625006,34.73115234375001]]],[[[128.0658203125,34.80585937500004],[128.05468750000003,34.70805664062502],[127.87343750000005,34.73496093749998],[127.8322265625001,34.87451171875],[128.0658203125,34.80585937500004]]],[[[128.74101562500007,34.798535156249955],[128.64667968750004,34.73686523437502],[128.48925781250003,34.86528320312496],[128.66796875000003,35.0087890625],[128.74101562500007,34.798535156249955]]],[[[126.52070312500004,37.73681640625003],[126.516015625,37.60468750000001],[126.42333984375003,37.62363281250006],[126.41162109374997,37.82265625000002],[126.52070312500004,37.73681640625003]]],[[[128.37460937500012,38.6234375],[129.41826171875002,37.059033203124955],[129.40351562500004,36.052148437499994],[129.57285156250006,36.05053710937503],[129.4191406250001,35.49785156249996],[129.07675781250006,35.12270507812502],[128.5109375000001,35.10097656250002],[128.44394531250012,34.87036132812503],[128.03623046875006,35.02197265625],[127.71484374999997,34.95468749999998],[127.71542968750012,34.72104492187498],[127.40429687499997,34.823095703125006],[127.47910156250012,34.625244140625],[127.324609375,34.463281249999966],[127.17343750000006,34.54614257812497],[127.24707031249997,34.755126953125],[126.89746093749997,34.438867187499966],[126.75478515625005,34.511865234374994],[126.53144531250004,34.31425781249999],[126.26445312500002,34.67324218750002],[126.52451171875006,34.697900390624966],[126.59335937500012,34.824365234374994],[126.42070312500002,34.823388671874966],[126.29111328125012,35.154150390625034],[126.61406250000007,35.57099609375004],[126.4884765625001,35.647070312500006],[126.75302734375006,35.871972656249994],[126.5404296875,36.166162109374966],[126.4876953125,36.69379882812498],[126.18085937500004,36.69160156249998],[126.16054687500005,36.77192382812501],[126.48701171875004,37.00747070312502],[126.78447265625007,36.94843749999998],[126.87207031249997,36.82446289062506],[126.97685546875002,36.93940429687501],[126.74638671875002,37.19355468750001],[126.63388671875012,37.78183593750006],[127.09033203125003,38.28388671875001],[128.03896484375,38.30854492187498],[128.37460937500012,38.6234375]]]]},"properties":{"name":"Korea","childNum":7}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[48.27539062499997,29.624316406250017],[48.17968750000003,29.611425781250063],[48.081445312499994,29.798925781250063],[48.1847656250001,29.978857421875034],[48.348242187500006,29.78266601562504],[48.27539062499997,29.624316406250017]]],[[[48.442480468750006,28.542919921874983],[47.671289062499994,28.53315429687504],[47.433203125,28.989550781250017],[46.53144531250004,29.09624023437499],[46.69375,29.259667968749966],[46.76933593750002,29.347460937500017],[46.90585937500006,29.5375],[47.14824218750002,30.0009765625],[47.64375,30.097314453125023],[47.75390624999997,30.076611328124955],[47.97871093750004,29.98281250000005],[48.00566406250002,29.835791015625034],[48.143457031249994,29.57246093750001],[47.96962890625005,29.61669921874997],[47.72265624999997,29.393017578124955],[48.0514648437501,29.355371093750023],[48.442480468750006,28.542919921874983]]]]},"properties":{"name":"Kuwait","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[102.12744140625011,22.37919921874999],[102.58251953125006,21.904296875000057],[102.66201171875008,21.676025390625057],[102.73857421875005,21.677929687500125],[102.77109375000015,21.70966796875001],[102.79824218750014,21.797949218750034],[102.81591796875,21.807373046875],[102.94960937500008,21.681347656250068],[102.85117187500009,21.26591796874999],[102.8837890625,21.202587890625068],[103.1044921875,20.89165039062499],[103.21074218749999,20.840625],[103.46357421874995,20.779833984375102],[103.6350585937501,20.697070312500102],[104.10136718750005,20.945507812500125],[104.1953125,20.91396484375008],[104.349609375,20.82109374999999],[104.58320312500001,20.646679687499955],[104.53271484375,20.554882812500125],[104.47861328124998,20.529589843750102],[104.40781250000015,20.485742187500023],[104.36777343750015,20.441406250000057],[104.39218750000015,20.424755859375068],[104.49619140625003,20.41367187499992],[104.61884765624995,20.374511718750114],[104.65644531250001,20.328515624999966],[104.66191406250005,20.289013671875125],[104.67695312500007,20.224707031249977],[104.69873046875006,20.205322265625114],[104.84785156250007,20.202441406250045],[104.88867187500006,20.169091796875023],[104.92919921874994,20.082812500000045],[104.92792968750007,20.01811523437499],[104.81513671875001,19.90400390625001],[104.80175781250011,19.836132812500068],[104.74316406250006,19.754736328124977],[104.58789062500006,19.61875],[104.54628906250014,19.610546875000068],[104.25986328125003,19.685498046875068],[104.06279296875005,19.678417968750068],[104.03203124999999,19.67514648437492],[104.0134765625001,19.646484374999943],[104.05156250000005,19.564160156250068],[104.06289062500002,19.482568359375136],[104.02753906250013,19.420458984375102],[103.93203125000002,19.366064453125034],[103.89638671875002,19.339990234375023],[103.89160156249994,19.30498046874999],[105.146484375,18.650976562499977],[105.14541015625014,18.616796874999977],[105.08701171875015,18.49624023437508],[105.11455078125005,18.405273437500057],[105.45820312500007,18.154296875000057],[105.51855468750011,18.077441406250045],[105.58847656250015,17.983691406249932],[105.69140625,17.737841796874932],[106.00625,17.415283203124943],[106.26953125,17.216796875000057],[106.33339843750002,17.14370117187508],[106.42597656250007,17.00253906250009],[106.50224609374999,16.9541015625],[106.52597656250003,16.876611328125023],[106.53369140625,16.821044921875057],[106.54619140625005,16.650732421874977],[106.65644531250013,16.492626953125125],[106.73955078124999,16.452539062500136],[106.79160156250015,16.490332031249977],[106.83242187500008,16.526269531250023],[106.85107421875,16.515625],[106.89277343750013,16.396533203125102],[106.93066406250006,16.353125],[107.39638671875008,16.04301757812499],[107.39199218750008,15.951660156250057],[107.36064453125005,15.921728515624977],[107.18886718750008,15.838623046875114],[107.16591796875002,15.802490234375],[107.27939453125003,15.618701171875045],[107.33876953125002,15.560498046875125],[107.56425781249999,15.3916015625],[107.62167968750015,15.309863281250045],[107.653125,15.255224609375091],[107.63369140625008,15.18984375000008],[107.58964843749999,15.118457031250102],[107.55527343750009,15.057031250000023],[107.48037109375014,14.979882812500136],[107.5046875000001,14.91591796875008],[107.52451171875003,14.871826171874943],[107.51376953124998,14.817382812500057],[107.51943359375008,14.705078125000114],[107.46513671875005,14.664990234375125],[107.41474609375007,14.56289062500008],[107.37988281250006,14.555322265625136],[107.29267578125007,14.592382812500034],[107.109375,14.416699218749955],[107.06240234375008,14.415771484374943],[107.03017578125008,14.425683593750023],[106.99218749999994,14.39101562500008],[106.93808593750015,14.327343750000068],[106.91318359375003,14.329394531249932],[106.81992187500003,14.314697265624943],[106.7834960937501,14.335107421875023],[106.73818359375008,14.387744140625102],[106.66542968750002,14.441308593750023],[106.59921875000003,14.479394531250136],[106.56367187500007,14.505078125000011],[106.53115234375002,14.549414062499977],[106.50146484375,14.578222656250034],[106.22539062500005,14.476220703125023],[106.1907226562501,14.388134765625011],[106.16523437500007,14.372363281249989],[106.00839843750009,14.357177734375114],[105.97890625000014,14.343017578125057],[106.00410156250013,14.262890625000068],[106.09667968750011,14.127099609375136],[106.12470703124995,14.049121093750045],[106.06679687500008,13.921191406250102],[105.90449218750007,13.924511718750068],[105.83144531250008,13.976611328124989],[105.73974609375006,14.084960937500057],[105.5315429687501,14.156152343750023],[105.35019531250009,14.109570312500125],[105.24570312500015,14.200537109374977],[105.20703125000006,14.259375],[105.18554687499994,14.319091796875],[105.18330078125001,14.346240234374989],[105.24365234375006,14.367871093749955],[105.34218750000008,14.416699218749955],[105.42265624999993,14.471630859374955],[105.47558593750006,14.530126953124977],[105.49736328125005,14.590673828125034],[105.52304687500015,14.843310546874989],[105.54667968749999,14.932470703125034],[105.53339843750013,15.041601562500091],[105.49042968750007,15.127587890625023],[105.49042968750007,15.256591796875],[105.615625,15.488281249999943],[105.63886718750013,15.585937499999943],[105.64101562500002,15.656542968749932],[105.62207031250006,15.699951171875114],[105.39892578125011,15.829882812500102],[105.40625,15.987451171875023],[105.33066406250003,16.037890625000045],[105.1487304687501,16.09355468749999],[105.04716796874999,16.16025390625009],[104.81933593749994,16.466064453125057],[104.75058593750015,16.647558593750034],[104.74355468750014,16.884375],[104.75898437500013,17.0771484375],[104.81601562499998,17.30029296875],[104.73964843750008,17.461669921875],[104.428125,17.698974609375057],[104.32265625000002,17.815820312500023],[104.19619140625002,17.988378906250034],[104.04873046875002,18.216699218749966],[103.94960937500008,18.318994140625023],[103.89882812500002,18.295312500000023],[103.79228515624999,18.31650390625009],[103.62968750000005,18.382568359375057],[103.48798828124995,18.41816406250001],[103.36699218750005,18.42333984375],[103.28828124999995,18.408398437499955],[103.25175781249999,18.373486328125125],[103.24892578125014,18.338964843750034],[103.27958984374999,18.304980468750045],[103.26318359375,18.278466796875136],[103.19970703125006,18.25947265625001],[103.14853515625009,18.221728515624932],[103.09121093750014,18.13823242187499],[103.05136718750003,18.02851562500001],[102.80742187500005,17.945556640625],[102.71757812500005,17.892236328125136],[102.67519531250014,17.851757812500068],[102.68007812500008,17.824121093750136],[102.66064453125,17.8179687499999],[102.61679687500015,17.833349609375034],[102.59824218750009,17.926757812500057],[102.55253906249999,17.965087890625057],[102.4587890625001,17.984619140624943],[102.35185546874999,18.045947265625045],[102.14824218750005,18.203857421875057],[102.10146484375014,18.21064453125001],[102.03457031250002,18.169824218750023],[101.94746093750001,18.081494140624955],[101.87548828125011,18.046435546874932],[101.81865234375005,18.064648437500125],[101.77480468750002,18.033398437500125],[101.6875,17.889404296875114],[101.56367187500001,17.820507812500125],[101.55507812500002,17.812353515625034],[101.41367187500015,17.71875],[101.16748046875011,17.4990234375],[101.10517578125001,17.479541015625102],[100.9084960937501,17.583886718750023],[101.14394531250008,18.14262695312499],[101.1375,18.286865234375057],[101.0505859375001,18.407031250000045],[101.04697265625003,18.441992187500034],[101.28632812499995,18.977148437500034],[101.19755859374999,19.327929687500045],[101.22080078125015,19.486621093750045],[101.21191406250011,19.548339843750057],[100.51357421875008,19.553466796875],[100.39765625000013,19.756103515625057],[100.51953125000006,20.177929687500068],[100.31796875000003,20.385888671875136],[100.2180664062501,20.339599609375114],[100.13974609375015,20.245410156250102],[100.11494140625007,20.25766601562492],[100.12246093750002,20.316650390625057],[100.12968750000005,20.372216796875023],[100.1838867187501,20.589111328124943],[100.2493164062501,20.730273437499932],[100.32607421875008,20.795703124999932],[100.40742187499995,20.823242187500057],[100.56513671875013,20.82509765625008],[100.62294921875002,20.85957031250001],[100.61767578125,20.87924804687509],[100.54931640625011,20.884228515625068],[100.5222656250001,20.921923828125102],[100.53613281250006,20.992382812500068],[100.703125,21.25136718750008],[101.0803710937501,21.46865234375008],[101.13886718750013,21.567480468749977],[101.19667968750002,21.522070312499977],[101.17539062500009,21.407519531250102],[101.21992187500013,21.342431640625136],[101.21181640625008,21.278222656250023],[101.22441406249999,21.22373046874992],[101.24785156249993,21.197314453125045],[101.28144531250007,21.184130859375045],[101.44355468750001,21.230810546874977],[101.54238281250008,21.234277343750136],[101.70478515625013,21.150146484375057],[101.728125,21.15639648437508],[101.78349609374999,21.204150390625045],[101.8005859375001,21.212597656249955],[101.7229492187501,21.314941406250057],[101.74726562500007,21.60576171874999],[101.7439453125001,21.77797851562508],[101.73652343750001,21.826513671874977],[101.52451171874998,22.253662109375],[101.56787109375011,22.2763671875],[101.6199218750001,22.327441406250102],[101.67148437500009,22.462304687500023],[101.70751953125,22.486572265625],[101.73876953125011,22.495263671874966],[101.75996093750001,22.490332031250034],[101.841796875,22.388476562500102],[102.02441406250006,22.439208984375114],[102.09150390625007,22.412255859375136],[102.12744140625011,22.37919921874999]]]},"properties":{"name":"Lao PDR","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[35.869140625,33.43173828125],[35.411230468750006,33.07568359375],[35.10859375000001,33.08369140625],[35.64785156250002,34.2482421875],[35.97626953125001,34.629199218749996],[36.383886718750006,34.65791015625],[36.32988281250002,34.499609375],[36.50439453125,34.432373046875],[36.5849609375,34.221240234374996],[36.27783203125,33.92529296875],[36.36503906250002,33.83935546875],[35.98613281250002,33.75263671875],[36.03447265625002,33.58505859375],[35.869140625,33.43173828125]]]},"properties":{"name":"Lebanon","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-8.486425781249977,7.558496093749994],[-8.408740234374989,7.411816406249997],[-8.324511718749989,6.920019531249991],[-8.587890625,6.490527343749989],[-8.287109375,6.319042968749997],[-7.981591796874994,6.2861328125],[-7.888623046874983,6.23486328125],[-7.800927734374994,6.038916015624991],[-7.730371093749994,5.919042968749991],[-7.636132812499994,5.90771484375],[-7.454394531249989,5.84130859375],[-7.39990234375,5.550585937499989],[-7.585058593749977,4.916748046875],[-7.574658203124983,4.572314453124989],[-7.544970703124989,4.351318359375],[-8.259033203125,4.589990234374994],[-9.132177734374977,5.054638671874997],[-10.2763671875,6.07763671875],[-11.291601562499977,6.688232421875],[-11.507519531249983,6.906542968749989],[-11.267675781249977,7.232617187499997],[-10.878076171874994,7.538232421874994],[-10.6474609375,7.759375],[-10.570849609374989,8.071142578124991],[-10.516748046874994,8.125292968749989],[-10.359814453124983,8.187939453124997],[-10.283203125,8.485156249999989],[-10.233056640624994,8.488818359374989],[-10.147412109374983,8.519726562499997],[-10.064355468749994,8.429882812499997],[-9.781982421875,8.537695312499991],[-9.518261718749983,8.34609375],[-9.369140625,7.703808593749997],[-9.463818359374983,7.415869140624991],[-9.11757812499999,7.215917968749991],[-8.8896484375,7.2626953125],[-8.659765624999977,7.688378906249994],[-8.486425781249977,7.558496093749994]]]},"properties":{"name":"Liberia","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[25.150488281250006,31.654980468749997],[24.85273437500001,31.334814453125],[24.96142578125,30.678515625],[24.703222656250006,30.201074218749994],[24.980273437500017,29.181884765625],[24.980273437500017,25.5888671875],[24.980273437500017,21.995849609375],[24.9794921875,20.002587890624994],[23.980273437500017,19.99594726562499],[23.980273437500017,19.496630859375003],[20.14765625000001,21.38925781249999],[15.984082031250011,23.445214843749994],[14.97900390625,22.99619140624999],[14.215527343750011,22.619677734375003],[13.48125,23.18017578125],[11.967871093750006,23.517871093750003],[11.507617187500017,24.314355468749994],[10.686132812500006,24.55136718749999],[10.395898437500023,24.485595703125],[10.255859375,24.591015625],[10.000683593750011,25.332080078125003],[9.4482421875,26.067138671875],[9.491406250000011,26.333740234375],[9.883203125000023,26.630810546874997],[9.74755859375,27.330859375],[9.916015625,27.785693359374996],[9.805273437500006,29.176953125],[9.310253906250011,30.115234375],[9.51875,30.229394531249994],[9.89501953125,30.3873046875],[9.932519531250023,30.425341796874996],[10.059765625000011,30.580078125],[10.21640625,30.783203125],[10.114941406250011,31.463769531249994],[10.274609375000011,31.684960937499994],[10.475781250000011,31.736035156249997],[10.60888671875,31.929541015625],[10.826367187500011,32.0806640625],[11.005175781250017,32.172705078125],[11.168261718750017,32.256738281249994],[11.358007812500006,32.34521484375],[11.504980468750006,32.413671875],[11.535937500000017,32.47333984375],[11.533789062500006,32.524951171874996],[11.453906250000017,32.642578125],[11.453906250000017,32.781689453125],[11.459179687500011,32.897363281249994],[11.467187500000023,32.965722656249994],[11.504589843750011,33.181933593749996],[11.657128906250023,33.118896484375],[11.8134765625,33.093701171875],[12.279882812500006,32.858544921874994],[12.753515625,32.801074218749996],[13.283496093750017,32.9146484375],[15.176562500000017,32.391162109374996],[15.705957031250023,31.426416015624994],[17.830468750000023,30.927587890625],[18.669824218750023,30.415673828124994],[19.12373046875001,30.26611328125],[19.713281250000023,30.48837890625],[20.11152343750001,30.963720703125],[19.926367187500006,31.817529296874994],[20.121484375000023,32.21875],[20.62109375,32.58017578125],[21.63593750000001,32.937304687499996],[22.187402343750023,32.918261718749996],[23.090625,32.61875],[23.10625,32.331445312499994],[23.28632812500001,32.213818359375],[24.129687500000017,32.009228515625],[24.878515625,31.984277343749994],[25.150488281250006,31.654980468749997]]]},"properties":{"name":"Libya","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-60.89521484375,13.821972656249997],[-60.951416015625,13.717578125],[-61.073144531249994,13.865576171874991],[-60.908105468749994,14.09335937499999],[-60.89521484375,13.821972656249997]]]},"properties":{"name":"Saint Lucia","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[79.87480468750002,9.050732421875026],[79.90371093750005,8.975],[79.74765625000006,9.104589843749991],[79.87480468750002,9.050732421875026]]],[[[79.98232421875,9.812695312500011],[80.25283203125005,9.796337890625054],[80.71113281250004,9.366357421875023],[81.226953125,8.50551757812498],[81.37285156250002,8.431445312499989],[81.42216796875007,8.147851562500023],[81.87412109375012,7.288330078124986],[81.86142578125012,6.901269531249994],[81.63740234375004,6.425146484374991],[80.72412109375003,5.97905273437496],[80.26738281250007,6.009765625],[80.09531250000012,6.153173828125006],[79.859375,6.829296874999983],[79.71298828125012,8.18232421875004],[79.74980468750007,8.294238281250003],[79.78349609375007,8.018457031250051],[79.92890625000004,8.899218749999974],[80.09960937499997,9.209960937500043],[80.08632812500005,9.577832031250026],[80.42832031250006,9.480957031250014],[80.04580078125005,9.649902343749972],[79.98232421875,9.812695312500011]]]]},"properties":{"name":"Sri Lanka","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[28.646875,-30.1265625],[28.39208984375,-30.147558593750006],[28.128710937500017,-30.52509765625001],[28.05683593750001,-30.63105468750001],[27.753125,-30.6],[27.364062500000017,-30.27919921875001],[27.19355468750001,-29.94130859375001],[27.056933593750017,-29.625585937500006],[27.29453125,-29.519335937500003],[27.73554687500001,-28.940039062500006],[27.959863281250023,-28.873339843750003],[28.084375,-28.77998046875001],[28.23261718750001,-28.701269531250006],[28.471875,-28.615820312500006],[28.583398437500023,-28.594140625],[28.625781250000017,-28.58173828125001],[29.301367187500006,-29.08984375],[29.38671875,-29.31972656250001],[29.34882812500001,-29.441992187500006],[29.293554687500006,-29.56689453125],[29.1421875,-29.700976562500003],[29.098046875000023,-29.919042968750006],[28.646875,-30.1265625]]]},"properties":{"name":"Lesotho","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[20.957812500000074,55.27890625000006],[20.89980468750008,55.286669921875045],[21.11484375,55.61650390624999],[20.957812500000074,55.27890625000006]]],[[[25.573046875000017,54.139892578125],[25.497363281250045,54.17524414062501],[25.52734375000003,54.21513671874996],[25.505664062500045,54.26494140624999],[25.46113281250004,54.29277343749996],[25.179492187500017,54.214257812499966],[25.111425781250006,54.15493164062505],[25.04609375000004,54.13305664062503],[24.869531250000023,54.14516601562502],[24.82568359374997,54.118994140625006],[24.78925781250001,53.99824218750001],[24.768164062499977,53.97465820312499],[24.31796875,53.892968749999966],[24.236621093750045,53.91997070312496],[24.19130859375005,53.95043945312503],[23.559082031250057,53.91982421875002],[23.484667968750074,53.939794921875006],[23.453613281250057,54.14345703125002],[23.3701171875,54.20048828124999],[23.282324218750063,54.240332031250034],[23.17031250000008,54.28144531249998],[23.0875,54.299462890624994],[23.042187500000068,54.30419921875],[23.01552734375005,54.34833984375001],[22.976757812500068,54.36635742187505],[22.89394531250008,54.390527343749994],[22.82373046874997,54.39580078124999],[22.766210937499977,54.356787109375034],[22.679882812500068,54.493017578125006],[22.684472656250023,54.56293945312504],[22.82470703125,54.87128906249998],[22.56728515625005,55.05913085937496],[22.072363281250034,55.06367187499998],[21.235742187500023,55.26411132812498],[21.237890625000034,55.455029296874955],[21.06191406250005,55.81342773437498],[21.053808593750006,56.02294921875003],[21.04609375000004,56.07006835937503],[21.31464843750004,56.18813476562502],[21.65351562500004,56.314550781250006],[22.084570312500034,56.40673828125006],[22.875585937500063,56.39643554687501],[22.96826171875003,56.38041992187502],[23.042968750000057,56.324072265625006],[23.119824218749983,56.330664062500006],[23.195898437500034,56.36713867187498],[24.120703125000063,56.26425781249998],[24.90302734375001,56.398193359375],[25.069921875,56.20039062500004],[25.663183593750063,56.104833984375006],[26.593554687500074,55.66752929687502],[26.590820312500057,55.62265625],[26.56660156250001,55.546484375000034],[26.51923828125004,55.448144531249994],[26.469531250000045,55.371923828125006],[26.457617187500006,55.342480468749955],[26.49531250000004,55.31801757812502],[26.68125,55.30644531249999],[26.76015625000008,55.29335937499999],[26.775683593750045,55.27309570312502],[26.601171875000034,55.130175781250045],[26.291796875000074,55.13959960937501],[26.250781250000045,55.12451171875006],[26.175195312500023,55.003271484375034],[26.092968750000068,54.96230468750005],[25.964453124999977,54.947167968749966],[25.85927734375005,54.91928710937498],[25.722460937500074,54.71787109374998],[25.731640625000068,54.59038085937502],[25.72480468750001,54.564257812500045],[25.68515625,54.53579101562502],[25.62031250000004,54.46040039062501],[25.56757812500004,54.377050781250006],[25.54736328125,54.33183593750002],[25.55751953125005,54.310693359374994],[25.702539062499994,54.29296875],[25.765234374999977,54.179785156250034],[25.573046875000017,54.139892578125]]]]},"properties":{"name":"Lithuania","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[6.4873046875,49.798486328124994],[6.344335937500006,49.452734375],[6.181054687500023,49.498925781249994],[6.119921875000017,49.485205078125],[6.074121093750023,49.454638671874996],[6.011425781250011,49.445458984374994],[5.95947265625,49.454638671874996],[5.928906250000011,49.4775390625],[5.9013671875,49.48974609375],[5.823437500000011,49.505078125],[5.789746093750011,49.53828125],[5.776710379464286,49.639953962053575],[5.744042968750023,49.91962890625],[5.7880859375,49.961230468749996],[5.8173828125,50.0126953125],[5.866894531250011,50.0828125],[5.976269531250011,50.1671875],[6.089062500000011,50.154589843749996],[6.110058593750011,50.123779296875],[6.116503906250017,50.120996093749994],[6.109765625000023,50.034375],[6.13818359375,49.97431640625],[6.204882812500017,49.91513671875],[6.272327008928583,49.887234933035714],[6.4873046875,49.798486328124994]]]},"properties":{"name":"Luxembourg","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[28.14794921875,56.142919921875],[27.576757812500006,55.798779296875],[27.052539062500017,55.83056640625],[26.593554687500017,55.667529296874996],[25.663183593750006,56.104833984375],[25.069921875,56.200390625],[24.90302734375001,56.398193359375],[24.120703125,56.2642578125],[23.81269531250001,56.329248046875],[23.195898437500006,56.367138671875],[23.11982421875001,56.3306640625],[23.04296875,56.324072265625],[22.875585937500006,56.396435546875],[22.084570312500006,56.40673828125],[21.730566406250006,56.325976562499996],[21.65351562500001,56.31455078125],[21.31464843750001,56.188134765625],[21.04609375000001,56.070068359375],[21.0712890625,56.82373046875],[21.72871093750001,57.57099609375],[22.554589843750023,57.724267578125],[23.28730468750001,57.08974609375],[23.647753906250017,56.971044921875],[24.382617187500017,57.250048828124996],[24.322558593750017,57.87060546875],[24.3625,57.866162109375],[24.458886718750023,57.907861328125],[25.11103515625001,58.063427734375],[25.27265625000001,58.009375],[25.66015625,57.920166015625],[26.29804687500001,57.60107421875],[26.532617187500023,57.531005859375],[26.96601562500001,57.609130859375],[27.187109375,57.538330078125],[27.326562500000023,57.52548828125],[27.4697265625,57.5240234375],[27.538671875,57.42978515625],[27.796875,57.316943359374996],[27.82861328125,57.293310546875],[27.838281250000023,57.247705078125],[27.83027343750001,57.194482421875],[27.639453125000017,56.845654296875],[27.806054687500023,56.86708984375],[27.8486328125,56.85341796875],[27.89208984375,56.741064453125],[28.00751953125001,56.599853515625],[28.103125,56.545703125],[28.11083984375,56.510693359375],[28.169238281250017,56.386865234375],[28.191699218750017,56.315576171875],[28.202050781250023,56.260400390625],[28.14794921875,56.142919921875]]]},"properties":{"name":"Latvia","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[28.2125,45.450439453125],[28.07470703125,45.598974609375],[28.23945312500001,46.6408203125],[28.07177734375,46.978417968749994],[27.614062500000017,47.34052734375],[26.980761718750017,48.155029296875],[26.618945312500017,48.25986328125],[26.640429687500017,48.294140625],[26.847070312500023,48.387158203125],[26.90058593750001,48.371923828125],[27.228515625,48.371435546875],[27.549218750000023,48.477734375],[28.34052734375001,48.144433593749994],[28.42304687500001,48.146875],[29.125390625000023,47.96455078125],[29.134863281250006,47.489697265625],[29.455664062500006,47.292626953124994],[29.57197265625001,46.964013671874994],[29.7197265625,46.88291015625],[29.877832031250023,46.82890625],[29.942480468750006,46.723779296874994],[29.93476562500001,46.625],[29.92431640625,46.538867187499996],[30.13105468750001,46.423095703125],[30.07568359375,46.377832031249994],[29.878027343750006,46.360205078125],[29.837890625,46.350537109375],[29.458789062500017,46.453759765624994],[29.30488281250001,46.466601562499996],[29.22382812500001,46.376953125],[29.20458984375,46.379345703125],[29.20078125,46.50498046875],[29.18623046875001,46.523974609374996],[29.146289062500017,46.526904296874996],[28.958398437500023,46.45849609375],[28.92744140625001,46.424121093749996],[28.930566406250023,46.362255859375],[28.94375,46.288427734375],[29.00625,46.17646484375],[28.971875,46.12763671875],[28.94775390625,46.049951171874994],[28.849511718750023,45.978662109374994],[28.73876953125,45.937158203124994],[28.729296875000017,45.852001953125],[28.667578125,45.793847656249994],[28.562304687500017,45.735791015625],[28.491601562500023,45.665771484375],[28.4990234375,45.517724609374994],[28.310351562500017,45.498583984374996],[28.26484375000001,45.48388671875],[28.2125,45.450439453125]]]},"properties":{"name":"Moldova","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[49.936425781249994,-16.90292968750002],[49.82402343750002,-17.08652343750002],[50.02304687500006,-16.6953125],[49.936425781249994,-16.90292968750002]]],[[[48.3421875,-13.363867187500034],[48.21191406250003,-13.385253906249957],[48.191210937500074,-13.259960937500011],[48.308886718750074,-13.198242187499957],[48.3421875,-13.363867187500034]]],[[[49.53828125000004,-12.432128906250014],[49.9375,-13.072265624999957],[50.23535156249997,-14.732031249999963],[50.482714843750074,-15.385644531249994],[50.20898437499997,-15.960449218750028],[50.02041015625005,-15.801757812500028],[49.89257812500003,-15.457714843750011],[49.664355468750074,-15.521582031249977],[49.83906250000004,-16.486523437499997],[49.76718750000006,-16.815136718749983],[49.44931640625006,-17.240625],[49.477832031250074,-17.89853515624999],[49.362890625,-18.336328125],[47.934472656249994,-22.393945312500023],[47.55800781250005,-23.874609374999963],[47.17734375,-24.787207031249977],[46.72851562499997,-25.14990234374997],[46.15869140624997,-25.230371093750023],[45.5080078125001,-25.56318359374997],[45.2057617187501,-25.57050781250004],[44.0353515625001,-24.995703125],[43.670019531250006,-24.30029296875],[43.722265625,-23.529687500000037],[43.2648437500001,-22.38359375],[43.29052734374997,-21.93251953124998],[43.50185546875005,-21.356445312499957],[43.800195312499994,-21.179199218749986],[44.40468750000005,-19.922070312500026],[44.44882812500006,-19.42871093749997],[44.23876953124997,-19.075195312499986],[44.23310546875004,-18.740625],[44.04003906249997,-18.288476562500023],[43.979394531249994,-17.3916015625],[44.42138671874997,-16.70263671874997],[44.476171875,-16.217285156249957],[44.90917968749997,-16.174511718750026],[45.2228515625001,-15.95048828124996],[45.3421875,-16.03671875000002],[45.598242187500006,-15.992578125],[45.70019531249997,-15.813769531249989],[46.157519531250074,-15.738281249999972],[46.3996093750001,-15.924609375000017],[46.331445312499994,-15.713671875000031],[46.47509765625003,-15.513476562500003],[46.942285156249994,-15.219042968749974],[47.09921875,-15.43417968750002],[47.092578125000074,-15.150097656249969],[47.35195312500005,-14.766113281249986],[47.46474609375005,-14.713281249999966],[47.47832031250002,-15.009375],[47.77402343750006,-14.63671875],[47.964160156250074,-14.672558593750026],[47.773339843749994,-14.369921875],[47.995507812499994,-13.960449218749986],[47.88359375000002,-13.807519531250009],[47.94101562500006,-13.662402343750017],[48.03984375000002,-13.596289062499963],[48.25527343750005,-13.719335937499977],[48.796484375,-13.267480468750023],[48.91943359375003,-12.839062499999969],[48.78632812500004,-12.470898437500011],[48.931738281250006,-12.4390625],[49.20703124999997,-12.079589843749957],[49.53828125000004,-12.432128906250014]]]]},"properties":{"name":"Madagascar","childNum":3}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-91.68369140624998,18.677343750000034],[-91.81611328124995,18.675878906250006],[-91.53671874999998,18.760009765625],[-91.68369140624998,18.677343750000034]]],[[[-86.93964843750001,20.303320312500006],[-86.97797851562498,20.489794921875074],[-86.76328124999995,20.579052734374955],[-86.93964843750001,20.303320312500006]]],[[[-106.50224609374999,21.61083984375003],[-106.60703124999993,21.561474609374983],[-106.63935546874995,21.697851562499977],[-106.50224609374999,21.61083984375003]]],[[[-110.56738281249994,25.003466796875017],[-110.5388671875,24.89155273437504],[-110.69926757812499,25.081445312499994],[-110.56738281249994,25.003466796875017]]],[[[-112.05727539062498,24.545703125000017],[-112.29677734375002,24.789648437500063],[-112.15942382812501,25.28564453125003],[-112.19501953124998,24.841064453125057],[-112.05727539062498,24.545703125000017]]],[[[-111.10029296874998,26.020605468750006],[-111.224658203125,25.83588867187504],[-111.18291015625002,26.040625],[-111.10029296874998,26.020605468750006]]],[[[-115.17060546875001,28.06938476562496],[-115.35292968750002,28.103955078124983],[-115.23354492187495,28.36835937500004],[-115.17060546875001,28.06938476562496]]],[[[-112.20307617187503,29.00532226562504],[-112.27841796875,28.769335937500017],[-112.51406249999997,28.847607421874955],[-112.42353515625,29.203662109375017],[-112.28505859374994,29.240429687499955],[-112.20307617187503,29.00532226562504]]],[[[-113.15561523437502,29.05224609375],[-113.49633789062497,29.30761718749997],[-113.58720703125002,29.57304687499996],[-113.20214843749999,29.301855468750034],[-113.15561523437502,29.05224609375]]],[[[-97.14624023437494,25.961474609375045],[-97.66767578124995,24.389990234374977],[-97.84248046874995,22.510302734375017],[-97.76328124999998,22.105859374999966],[-97.31450195312496,21.56420898437503],[-97.40917968749997,21.272558593750034],[-97.38344726562497,21.56669921874999],[-97.75380859375002,22.02666015624999],[-97.18632812499996,20.717041015625],[-96.45605468749994,19.869775390624966],[-96.28955078124994,19.34375],[-95.778125,18.805517578125034],[-95.92036132812495,18.81958007812497],[-95.62680664062503,18.690576171874994],[-95.71982421874998,18.768359375000017],[-95.18183593749995,18.700732421875017],[-94.79814453124996,18.51459960937501],[-94.45976562499993,18.166650390624994],[-93.55234375,18.430468750000017],[-92.88476562499997,18.468652343749966],[-92.44101562499998,18.67529296874997],[-91.97377929687502,18.715869140625074],[-91.91357421875,18.52851562500001],[-91.53398437499993,18.45654296875],[-91.27524414062498,18.62446289062501],[-91.34306640624996,18.900585937499955],[-91.43666992187502,18.889794921874966],[-90.73925781249994,19.352246093749955],[-90.69316406249996,19.729882812499966],[-90.49169921874997,19.94677734375003],[-90.353125,21.009423828124966],[-89.81977539062495,21.274609374999983],[-88.46669921874997,21.569384765625017],[-88.0068359375,21.604052734375045],[-87.25087890625,21.44697265625004],[-87.18828124999993,21.546435546875045],[-87.36850585937498,21.57373046875],[-87.034765625,21.592236328124955],[-86.824072265625,21.421679687500017],[-86.77177734374999,21.150537109375023],[-86.92622070312493,20.786474609375034],[-87.42138671875,20.23139648437501],[-87.44174804687498,19.861523437499983],[-87.68769531249998,19.63710937499999],[-87.6453125,19.55390625000001],[-87.42475585937498,19.583349609375063],[-87.65869140625003,19.352343750000074],[-87.65576171874997,19.25786132812499],[-87.50107421874998,19.287792968749983],[-87.76181640624998,18.446142578125006],[-87.88198242187497,18.27387695312501],[-88.05644531249996,18.524462890625074],[-88.03173828125,18.838916015625017],[-88.29565429687494,18.47241210937503],[-88.52299804687499,18.445898437500063],[-88.80634765624998,17.965527343749983],[-89.13354492187503,17.970800781249977],[-89.16147460937503,17.81484375],[-90.98916015624997,17.81640624999997],[-90.99296874999993,17.25244140625],[-91.19550781249998,17.254101562499983],[-91.40961914062501,17.255859375],[-90.975830078125,16.867822265624994],[-90.710693359375,16.708105468750034],[-90.65996093749996,16.630908203125045],[-90.634375,16.565136718749955],[-90.63408203125002,16.51074218749997],[-90.57578124999995,16.467822265625017],[-90.47109374999994,16.439550781250034],[-90.41699218750003,16.391015625000023],[-90.41699218750003,16.351318359375],[-90.45014648437493,16.261376953124994],[-90.45986328124997,16.16235351562497],[-90.44716796874994,16.07270507812501],[-90.52197265625,16.07119140625005],[-90.70322265624998,16.07104492187503],[-90.97958984374998,16.07080078124997],[-91.433984375,16.070458984374994],[-91.736572265625,16.070166015625006],[-91.95722656250001,15.703222656250034],[-92.08212890624998,15.495556640625011],[-92.18715820312497,15.320898437499963],[-92.07480468749998,15.074218749999972],[-92.09873046874998,15.026757812499994],[-92.14423828125001,15.001953125],[-92.158544921875,14.963574218749997],[-92.23515625,14.545410156249986],[-93.91606445312493,16.053564453125006],[-94.374169921875,16.284765625000034],[-94.426416015625,16.22626953125001],[-94.00126953124996,16.018945312499966],[-94.66152343750002,16.20190429687503],[-94.58710937499995,16.315820312499966],[-94.79082031249999,16.28715820312499],[-94.85869140624996,16.41972656249999],[-95.02084960937503,16.277636718750017],[-94.79941406249995,16.20966796875001],[-95.134375,16.17695312500001],[-96.21357421874993,15.693066406250011],[-96.80795898437495,15.726416015624977],[-97.18466796874998,15.909277343750006],[-97.75478515624994,15.966845703125017],[-98.52031249999993,16.30483398437505],[-98.76220703125,16.534765624999977],[-99.69067382812499,16.719628906249994],[-100.847802734375,17.20048828124999],[-101.91870117187494,17.959765625000045],[-102.69956054687495,18.062841796875006],[-103.44160156249995,18.32539062500001],[-103.91245117187496,18.828466796875006],[-104.9384765625,19.309375],[-105.482080078125,19.97607421875003],[-105.66943359374997,20.385595703124977],[-105.26015625,20.579052734374955],[-105.32705078124994,20.752978515625045],[-105.51083984374999,20.808740234375023],[-105.23706054687499,21.119189453125045],[-105.20869140624998,21.490820312499977],[-105.43144531249997,21.618261718750006],[-105.64912109375001,21.988085937500045],[-105.64550781249999,22.32690429687497],[-105.79179687500003,22.627490234375017],[-106.93549804687497,23.88125],[-107.76494140625002,24.47192382812497],[-107.52724609375001,24.36005859375001],[-107.51191406249998,24.489160156250023],[-107.95117187499994,24.614892578124966],[-108.28076171874994,25.08154296875],[-108.05146484374995,25.067041015624994],[-108.69638671874998,25.382910156250034],[-108.78725585937502,25.53803710937501],[-109.02880859375003,25.48046875000003],[-108.886572265625,25.733447265625045],[-109.19648437499998,25.59252929687503],[-109.38496093750001,25.727148437500006],[-109.42563476562495,26.032568359375063],[-109.19970703125003,26.30522460937499],[-109.11669921874999,26.25273437499996],[-109.27626953125,26.533886718749955],[-109.48286132812498,26.710351562500023],[-109.75478515624995,26.702929687500017],[-109.94399414062495,27.079345703125057],[-110.37729492187495,27.233300781249966],[-110.59267578124995,27.544335937500023],[-110.52988281249995,27.864208984374983],[-111.12138671875002,27.966992187499983],[-112.16176757812495,29.018896484375034],[-113.05766601562496,30.651025390625023],[-113.04672851562495,31.17924804687499],[-113.62348632812494,31.34589843750001],[-113.75942382812501,31.557763671874994],[-113.94775390625001,31.62934570312501],[-114.14931640624995,31.507373046875045],[-114.93359374999994,31.900732421874977],[-114.78989257812498,31.647119140624994],[-114.88188476562499,31.156396484375023],[-114.55048828124997,30.02226562499999],[-113.75546875,29.367480468750017],[-113.49970703124995,28.92670898437501],[-113.20556640624997,28.798779296874955],[-113.09365234375001,28.511767578125017],[-112.870849609375,28.42421875000005],[-112.73403320312501,27.825976562500017],[-112.32919921874996,27.52343750000003],[-111.86264648437495,26.678515625000017],[-111.6994140625,26.58095703125005],[-111.79526367187499,26.8796875],[-111.56967773437495,26.707617187500006],[-111.29160156249996,25.78979492187497],[-110.68676757812501,24.867675781250057],[-110.65932617187502,24.34145507812505],[-110.36743164062497,24.100488281249994],[-110.30375976562497,24.339453125],[-110.02280273437502,24.17460937499999],[-109.6765625,23.66157226562501],[-109.42084960937495,23.480126953124994],[-109.49570312500002,23.159814453125023],[-110.00625,22.894042968750057],[-110.3626953125,23.60493164062501],[-111.68291015625002,24.555810546875023],[-111.80249023437494,24.542529296875074],[-112.07255859374999,24.84003906250001],[-112.06987304687497,25.572851562500006],[-112.37724609374997,26.21391601562496],[-113.02075195312499,26.58325195312497],[-113.15581054687496,26.94624023437504],[-113.27226562499997,26.79096679687501],[-113.59853515625001,26.721289062500034],[-113.84096679687502,26.966503906249983],[-114.44526367187503,27.218164062499994],[-114.53989257812495,27.431103515624955],[-114.99350585937499,27.736035156249983],[-115.03647460937495,27.84184570312496],[-114.57001953124995,27.78393554687497],[-114.30058593749995,27.87299804687501],[-114.30224609375003,27.775732421875006],[-114.0693359375,27.67568359375005],[-114.15839843750003,27.919677734375],[-114.26586914062499,27.934472656249994],[-114.04848632812502,28.42617187499999],[-114.93730468749999,29.35161132812496],[-115.67382812500003,29.756396484375017],[-116.06215820312501,30.80415039062504],[-116.29628906250001,30.97050781249999],[-116.33344726562494,31.202783203124994],[-116.66215820312495,31.56489257812504],[-116.72207031249998,31.734570312499955],[-116.62080078124995,31.85107421874997],[-116.84799804687496,31.997363281250045],[-117.12827148437495,32.533349609374994],[-114.72475585937495,32.71533203125003],[-114.83593749999994,32.50830078125003],[-111.0419921875,31.32421875000003],[-108.21445312499993,31.329443359375034],[-108.21181640625002,31.779345703125017],[-106.44541015624996,31.768408203125006],[-106.14804687499995,31.450927734375],[-104.97880859374996,30.645947265624955],[-104.50400390624995,29.677685546874955],[-104.110595703125,29.386132812499994],[-103.16831054687498,28.998193359374994],[-102.8919921875,29.216406250000034],[-102.61494140624994,29.75234375],[-102.26894531249998,29.871191406250034],[-101.44038085937503,29.77685546875],[-100.75458984375001,29.182519531249994],[-100.29604492187495,28.32768554687499],[-99.50532226562497,27.54833984375003],[-99.45654296874999,27.05668945312496],[-99.10776367187498,26.446923828124994],[-97.37563476562497,25.871826171875],[-97.14624023437494,25.961474609375045]]]]},"properties":{"name":"Mexico","childNum":10}},{"geometry":{"type":"Polygon","coordinates":[[[22.344042968750017,42.31396484375],[22.836816406250023,41.993603515625],[23.00361328125001,41.73984375],[22.916015625,41.336279296875],[22.78388671875001,41.331982421875],[22.72480468750001,41.178515625],[22.603613281250006,41.140185546874996],[22.493554687500023,41.118505859375],[22.184472656250023,41.158642578125],[21.99335937500001,41.13095703125],[21.77949218750001,40.950439453125],[21.627539062500006,40.896337890625],[21.57578125,40.868945312499996],[20.964257812500023,40.849902343749996],[20.709277343750017,40.928369140624994],[20.48896484375001,41.272607421874994],[20.566210937500017,41.873681640624994],[20.725,41.87353515625],[20.778125,42.071044921875],[21.05976562500001,42.171289062499994],[21.28662109375,42.100390625],[21.389550781250023,42.21982421875],[21.560839843750017,42.24765625],[21.5625,42.247509765625],[21.81464843750001,42.303125],[22.344042968750017,42.31396484375]]]},"properties":{"name":"Macedonia","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[4.227636718750006,19.142773437499997],[4.234667968750017,16.996386718750003],[4.121289062500011,16.357714843750003],[3.842968750000011,15.701708984375003],[3.5205078125,15.483105468749997],[3.504296875000023,15.356347656249994],[3.06015625,15.427197265624997],[3.001074218750006,15.340966796874994],[1.300195312500023,15.272265625],[0.947460937500011,14.982128906249997],[0.217480468750011,14.911474609374991],[-0.235888671874989,15.059423828124991],[-0.760449218749983,15.047753906249994],[-1.049560546875,14.81953125],[-1.97304687499999,14.45654296875],[-2.113232421874983,14.16845703125],[-2.586718749999989,14.227587890625003],[-2.873925781249994,13.950732421875003],[-2.950830078124994,13.6484375],[-3.248632812499977,13.658349609374994],[-3.3017578125,13.28076171875],[-3.527636718749989,13.182714843749991],[-3.947314453124989,13.402197265624991],[-4.151025390624994,13.306201171875003],[-4.328710937499977,13.119042968749994],[-4.227099609374989,12.793701171875],[-4.480615234374994,12.672216796874991],[-4.4287109375,12.337597656249997],[-4.699316406249977,12.076171875],[-5.288134765624989,11.827929687499989],[-5.250244140625,11.375781249999989],[-5.490478515625,11.042382812499994],[-5.523535156249977,10.426025390625],[-5.556591796874983,10.43994140625],[-5.694287109374983,10.43320312499999],[-5.843847656249977,10.389550781249994],[-5.896191406249983,10.354736328125],[-5.907568359374977,10.307226562499991],[-6.034570312499994,10.19482421875],[-6.1171875,10.201904296875],[-6.238378906249977,10.261621093749994],[-6.241308593749977,10.279199218749994],[-6.192626953125,10.369433593749989],[-6.190673828125,10.400292968749994],[-6.250244140625,10.717919921874994],[-6.482617187499983,10.561230468749997],[-6.564599609374994,10.58642578125],[-6.654150390624977,10.656445312499997],[-6.676367187499977,10.6337890625],[-6.686132812499977,10.578027343749994],[-6.691992187499977,10.512011718749989],[-6.669335937499994,10.3921875],[-6.693261718749994,10.349462890624991],[-6.950341796874994,10.342333984374989],[-7.01708984375,10.143261718749997],[-7.385058593749989,10.340136718749989],[-7.6611328125,10.427441406249997],[-7.990625,10.1625],[-8.007275390624983,10.321875],[-8.266650390624989,10.485986328124994],[-8.33740234375,10.990625],[-8.666699218749983,11.009472656249997],[-8.398535156249977,11.366552734374991],[-8.822021484375,11.673242187499994],[-8.818310546874983,11.922509765624994],[-9.043066406249977,12.40234375],[-9.395361328124977,12.464648437499989],[-9.358105468749983,12.255419921874989],[-9.754003906249977,12.029931640624994],[-10.274853515624983,12.212646484375],[-10.709228515625,11.898730468749989],[-10.933203124999977,12.205175781249991],[-11.30517578125,12.015429687499989],[-11.502197265625,12.198632812499994],[-11.389404296875,12.404394531249991],[-11.390380859375,12.941992187499991],[-11.634960937499983,13.369873046875],[-11.831689453124994,13.315820312499994],[-12.05419921875,13.633056640625],[-11.960888671874983,13.875292968750003],[-12.019189453124994,14.206494140624997],[-12.228417968749994,14.45859375],[-12.280615234374977,14.809033203124997],[-12.104687499999983,14.745361328125],[-12.08154296875,14.766357421875],[-12.021582031249977,14.804931640625],[-11.76015625,15.425537109375],[-11.675878906249977,15.512060546874991],[-11.502685546875,15.636816406249991],[-11.455224609374994,15.62539062499999],[-10.9482421875,15.151123046875],[-10.696582031249989,15.42265625],[-9.94140625,15.373779296875],[-9.446923828124994,15.458203125],[-9.447705078124983,15.574853515624994],[-9.426562499999989,15.623046875],[-9.3505859375,15.677392578124994],[-9.33544921875,15.525683593750003],[-9.293701171875,15.502832031249994],[-5.5125,15.496289062499997],[-5.359912109374989,16.282861328124994],[-5.509619140624977,16.442041015624994],[-5.628662109375,16.568652343750003],[-5.65625,16.8095703125],[-5.684765624999983,17.058251953124994],[-5.713183593749989,17.306884765625],[-5.74169921875,17.555566406249994],[-5.827099609374983,18.3015625],[-6.026416015624989,20.0421875],[-6.396582031249977,23.274804687499994],[-6.482031249999977,24.020800781250003],[-6.538964843749994,24.51816406249999],[-6.5673828125,24.766796875],[-6.594091796874977,24.99462890625],[-6.287207031249977,24.994824218749997],[-5.959814453124977,24.99497070312499],[-5.640771484374994,24.995166015625003],[-4.822607421874977,24.99560546875],[-1.947900390624994,23.124804687500003],[1.1455078125,21.102246093749997],[1.165722656250011,20.817431640625003],[1.610644531250017,20.555566406249994],[1.685449218750023,20.378369140624997],[3.130273437500023,19.85019531249999],[3.255859375,19.4109375],[3.119726562500006,19.103173828124994],[3.3564453125,18.986621093750003],[4.227636718750006,19.142773437499997]]]},"properties":{"name":"Mali","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[14.566210937499989,35.85273437499998],[14.436425781250023,35.82167968750005],[14.351269531250011,35.978417968749994],[14.566210937499989,35.85273437499998]]]},"properties":{"name":"Malta","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[98.18261718749997,9.933447265625006],[98.11806640625,9.877880859375054],[98.2916992187501,10.051318359375031],[98.18261718749997,9.933447265625006]]],[[[98.20976562500002,10.952734375],[98.27148437499997,10.73989257812498],[98.08046875000005,10.886621093750037],[98.20976562500002,10.952734375]]],[[[98.55380859375012,11.744873046875],[98.52841796875012,11.538671875],[98.43476562500004,11.567089843750026],[98.37646484374997,11.79150390625],[98.55380859375012,11.744873046875]]],[[[98.516015625,11.905029296875028],[98.46621093750005,12.08427734374996],[98.60957031250004,11.956640624999977],[98.516015625,11.905029296875028]]],[[[98.06611328125004,12.389794921875023],[98.00234375000005,12.279003906250011],[97.93867187500004,12.34609375],[98.06611328125004,12.389794921875023]]],[[[98.41396484375005,12.597949218749974],[98.45947265625003,12.473730468749991],[98.3138671875,12.335986328124989],[98.31210937500006,12.678173828124983],[98.41396484375005,12.597949218749974]]],[[[98.31542968749997,13.099072265625026],[98.30917968750012,12.934716796875023],[98.26533203125004,13.202246093749991],[98.31542968749997,13.099072265625026]]],[[[94.80488281250004,15.8193359375],[94.73349609375006,15.823046875000045],[94.82802734375005,15.933007812499966],[94.80488281250004,15.8193359375]]],[[[94.47675781250004,15.945947265625023],[94.41191406250007,15.848388671875057],[94.3878906250001,15.994140624999972],[94.60126953125004,16.205517578124983],[94.47675781250004,15.945947265625023]]],[[[97.575,16.253222656250017],[97.48037109375,16.305712890625045],[97.54199218749997,16.505078124999983],[97.575,16.253222656250017]]],[[[93.6908203125,18.68427734375004],[93.4875,18.867529296875063],[93.74472656250006,18.865527343750017],[93.6908203125,18.68427734375004]]],[[[93.71484374999997,19.558251953124994],[93.94570312500005,19.428613281249966],[93.90195312500012,19.33203125],[93.75585937500003,19.325683593750057],[93.64404296874997,19.49506835937501],[93.71484374999997,19.558251953124994]]],[[[93.49179687500012,19.892578125],[93.51328125000006,19.754785156249994],[93.41289062500002,19.950341796875023],[93.49179687500012,19.892578125]]],[[[93.01015625000005,19.923925781249977],[93.02324218750007,19.82885742187497],[92.91464843750006,20.086474609375045],[93.01015625000005,19.923925781249977]]],[[[101.1388671875001,21.567480468749977],[101.08037109375007,21.468652343749994],[100.703125,21.251367187499966],[100.613671875,21.059326171875],[100.56660156250004,21.038183593750063],[100.53613281250003,20.992382812499955],[100.52226562500007,20.92192382812499],[100.54931640624997,20.884228515624955],[100.61767578125003,20.879248046875006],[100.62294921875005,20.859570312499983],[100.5651367187501,20.825097656249994],[100.4074218750001,20.823242187500057],[100.32607421875005,20.795703125000045],[100.24931640625002,20.730273437500045],[100.18388671875002,20.589111328125057],[100.12968750000002,20.372216796874994],[100.12246093750005,20.316650390625057],[100.0036132812501,20.37958984375001],[99.9542968750001,20.415429687500023],[99.8903320312501,20.424414062499977],[99.72011718750005,20.32543945312497],[99.45888671875005,20.363037109375],[99.48593750000006,20.14985351562501],[99.07421875000003,20.09936523437503],[98.9166992187501,19.77290039062504],[98.37128906250004,19.68916015625004],[98.01503906250005,19.74951171874997],[97.816796875,19.459960937500057],[97.74589843750002,18.58818359374999],[97.37392578125,18.51796875],[97.63222656250005,18.290332031250074],[97.7064453125,17.79711914062503],[98.4388671875,16.975683593750034],[98.66074218750006,16.330419921875006],[98.83544921875003,16.417578125],[98.88828125000006,16.351904296875034],[98.81796875000012,16.180810546874994],[98.59238281250006,16.05068359375005],[98.55693359375007,15.367675781249986],[98.19101562500012,15.204101562499972],[98.20214843749997,14.97592773437502],[98.57001953125004,14.359912109375031],[99.13681640625006,13.716699218749994],[99.12392578125,13.030761718750043],[99.40507812500002,12.547900390625003],[99.61474609374997,11.781201171875026],[99.1901367187501,11.105273437499989],[98.7572265625,10.660937499999974],[98.70253906250005,10.19038085937504],[98.56259765625006,10.034960937499989],[98.46494140625006,10.675830078124989],[98.67558593750007,10.986914062500034],[98.74140625000004,11.591699218749966],[98.87597656250003,11.719726562500028],[98.63632812500006,11.738378906250006],[98.69628906250003,12.225244140624994],[98.6002929687501,12.2453125],[98.67871093749997,12.348486328124963],[98.57597656250002,13.161914062500031],[98.20039062500004,13.980175781250026],[98.14951171875012,13.647607421875037],[98.11064453125007,13.712890625000014],[98.10019531250006,14.161523437500023],[97.90976562500012,14.652685546874991],[98.01875,14.652587890625057],[97.81230468750007,14.858935546874989],[97.7103515625,15.875537109375074],[97.58427734375007,16.019580078125017],[97.72597656250005,16.56855468750004],[97.37587890625005,16.52294921874997],[97.20019531249997,17.095410156249983],[96.85146484375005,17.401025390624994],[96.90859375000005,17.03095703125001],[96.76542968750002,16.710351562499966],[96.43115234374997,16.504931640625045],[96.18906250000012,16.768310546875057],[96.32431640625006,16.444433593750063],[95.76328125000006,16.169042968750006],[95.38955078125005,15.722753906250034],[95.30146484375004,15.756152343749989],[95.34677734375012,16.09760742187501],[95.17695312500004,15.825683593750028],[94.9425781250001,15.818261718750023],[94.89316406250006,16.182812499999955],[94.66152343750005,15.904394531250006],[94.70332031250004,16.511914062499955],[94.4416015625001,16.094384765624966],[94.22382812500004,16.016455078125006],[94.58896484375006,17.5693359375],[94.17070312500007,18.73242187499997],[94.24570312500006,18.741162109374983],[94.07001953125004,18.893408203125006],[94.04492187500003,19.287402343750074],[93.92919921874997,18.89965820312503],[93.70546875000005,19.026904296875017],[93.49306640625005,19.369482421875006],[93.82490234375004,19.238476562499955],[93.99814453125006,19.440869140624983],[93.61171875000005,19.776074218749983],[93.70703125000003,19.912158203125074],[93.25,20.070117187500017],[93.12949218750012,19.858007812500063],[93.00195312499997,20.074853515624994],[93.06679687500005,20.377636718749955],[92.82832031250004,20.177587890625063],[92.89111328124997,20.34033203125],[92.73564453125007,20.56269531250001],[92.72285156250004,20.29560546875004],[92.32412109375,20.791845703125063],[92.17958984375005,21.293115234375023],[92.33056640624997,21.439794921874977],[92.63164062500002,21.306201171875045],[92.5934570312501,21.46733398437499],[92.58281250000002,21.940332031249994],[92.57490234375004,21.978076171875045],[92.68896484374997,22.130957031250006],[92.72099609375002,22.132421875000063],[92.77138671875,22.104785156250017],[92.9645507812501,22.003759765625034],[93.07060546875002,22.20942382812501],[93.16201171875,22.360205078125006],[93.07871093750006,22.71821289062501],[93.20390625000002,23.03701171875005],[93.34941406250007,23.08496093750003],[93.36601562500007,23.132519531249955],[93.32626953125006,24.064208984375057],[93.45214843750003,23.987402343750034],[93.68339843750007,24.00654296875004],[94.07480468750006,23.8720703125],[94.29306640625012,24.321875],[94.37724609375002,24.473730468750006],[94.49316406250003,24.637646484374983],[94.70371093750012,25.097851562499955],[94.55302734375007,25.215722656249994],[94.66777343750007,25.458886718749966],[94.99199218750002,25.77045898437504],[95.01523437500006,25.912939453125006],[95.0929687500001,25.98730468749997],[95.13242187500006,26.041259765625057],[95.12929687500005,26.070410156250034],[95.10839843749997,26.091406250000034],[95.06894531250006,26.19111328125001],[95.0597656250001,26.473974609375006],[95.20146484375007,26.641406250000017],[96.19082031250005,27.26127929687499],[96.79785156249997,27.29619140624999],[96.95341796875002,27.13330078125003],[97.10205078125003,27.11542968750004],[97.10371093750004,27.16333007812503],[96.90195312500012,27.439599609374994],[96.88359375000002,27.514843749999955],[96.96279296875,27.698291015625017],[97.04970703125005,27.760009765625],[97.34355468750002,27.982324218749994],[97.30273437499997,28.08598632812496],[97.3224609375001,28.21796875000004],[97.35644531249997,28.254492187500006],[97.43144531250002,28.353906250000023],[97.53789062500002,28.510205078124983],[97.59921875000006,28.51704101562504],[98.06162109375012,28.185888671874977],[98.29882812499997,27.550097656250045],[98.4525390625,27.6572265625],[98.65117187500007,27.572460937499983],[98.7384765625001,26.785742187500006],[98.68554687499997,26.189355468750023],[98.56406250000006,26.072412109374994],[98.65625,25.86357421874999],[98.33378906250007,25.586767578125006],[98.14287109375007,25.571093750000017],[98.01074218749997,25.292529296875017],[97.8195312500001,25.251855468749994],[97.73789062500006,24.869873046875057],[97.58330078125002,24.77480468750005],[97.53144531250004,24.49169921875003],[97.7082031250001,24.228759765625],[97.56455078125012,23.911035156250023],[98.2125,24.110644531250017],[98.83505859375006,24.121191406250034],[98.67675781250003,23.905078125000045],[98.8322265625001,23.624365234374977],[98.86376953125003,23.191259765625034],[99.41806640625006,23.069238281250023],[99.50712890625002,22.959130859374994],[99.19296875000006,22.12597656249997],[99.9176757812501,22.02802734375001],[99.94072265625007,21.75874023437504],[100.14765625000004,21.480517578125017],[100.60458984375012,21.471777343750006],[101.07978515625004,21.75585937499997],[101.1388671875001,21.567480468749977]]]]},"properties":{"name":"Myanmar","childNum":15}},{"geometry":{"type":"Polygon","coordinates":[[[19.21875,43.449951171875],[19.670996093750006,43.163964843749994],[20.344335937500006,42.827929687499996],[20.054296875,42.760058593749996],[20.06396484375,42.54726562499999],[19.78828125000001,42.476171875],[19.65449218750001,42.628564453124994],[19.280664062500023,42.17255859375],[19.342382812500006,41.869091796875],[18.436328125000017,42.559716796874994],[18.5458984375,42.6416015625],[18.46601562500001,42.777246093749994],[18.44384765625,42.96845703125],[18.46015625000001,42.997900390625],[18.48847656250001,43.012158203125],[18.623632812500006,43.027685546875],[18.621875,43.124609375],[18.674218750000023,43.230810546875],[18.74921875000001,43.283544921875],[18.85107421875,43.346337890624994],[18.934667968750006,43.339453125],[18.97871093750001,43.285400390625],[19.026660156250017,43.292431640625],[19.03671875,43.357324218749994],[18.940234375000017,43.496728515624994],[18.95068359375,43.526660156249996],[18.97421875,43.542333984375],[19.0283203125,43.532519531249996],[19.080078125,43.517724609374994],[19.11279296875,43.52773437499999],[19.164355468750017,43.535449218749996],[19.1943359375,43.53330078125],[19.21875,43.449951171875]]]},"properties":{"name":"Montenegro","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[111.878125,43.68017578125],[111.00722656250002,43.34140625],[110.400390625,42.773681640625],[109.44316406249999,42.455957031249994],[109.33984375,42.438378906249994],[108.68730468749999,42.41611328125],[108.17119140624999,42.447314453124996],[106.77001953125,42.288720703124994],[105.86757812500002,41.993994140625],[105.31435546875002,41.770898437499994],[105.19707031249999,41.738037109375],[105.11542968750001,41.66328125],[105.05058593749999,41.61591796875],[104.98203125000003,41.595507812499996],[104.49824218750001,41.65869140625],[104.49824218750001,41.877001953124996],[104.30517578125,41.846142578125],[103.99726562500001,41.79697265625],[103.71113281250001,41.751318359375],[103.07285156250003,42.00595703125],[102.5751953125,42.092089843749996],[102.15664062500002,42.158105468749994],[101.97294921874999,42.215869140624996],[101.65996093749999,42.500048828124996],[101.5791015625,42.52353515625],[101.49531250000001,42.53876953125],[101.09199218750001,42.551318359374996],[100.51904296875,42.616796875],[100.08632812500002,42.670751953125],[99.98378906250002,42.67734375],[99.46787109375003,42.568212890625],[97.20566406250003,42.789794921875],[96.38544921875001,42.720361328124994],[95.85957031250001,43.2759765625],[95.52558593750001,43.953955078125],[95.32558593750002,44.039355468749996],[95.35029296875001,44.278076171875],[94.71201171875003,44.350830078125],[93.51621093750003,44.944482421874994],[92.78789062499999,45.0357421875],[92.57890624999999,45.010986328125],[92.423828125,45.008935546874994],[92.17265624999999,45.03525390625],[92.02978515625,45.068505859374994],[91.584375,45.076513671875],[91.05,45.217431640624994],[90.87724609374999,45.19609375],[90.66181640625001,45.525244140625],[91.00175781249999,46.035791015624994],[90.99677734375001,46.10498046875],[90.94755859374999,46.177294921874996],[90.91152343750002,46.270654296874994],[90.98574218750002,46.7490234375],[90.91054687500002,46.883251953125],[90.86992187499999,46.954492187499994],[90.79902343750001,46.98515625],[90.71552734375001,47.003857421875],[90.49619140625003,47.28515625],[90.42519531250002,47.5041015625],[90.34746093749999,47.596972656249996],[90.33066406250003,47.655175781249994],[90.31328124999999,47.67617187499999],[90.19101562500003,47.702099609375],[90.10322265625001,47.745410156249996],[90.02792968750003,47.877685546875],[89.95869140625001,47.886328125],[89.91044921874999,47.8443359375],[89.83134765624999,47.823291015624996],[89.778125,47.827001953125],[89.56093750000002,48.003955078124996],[89.47919921875001,48.029052734375],[89.04765624999999,48.0025390625],[88.97109375000002,48.049951171874994],[88.91777343749999,48.089013671874994],[88.83828125000002,48.101708984374994],[88.68183593750001,48.170556640624994],[88.57597656249999,48.220166015625],[88.56679687500002,48.317431640624996],[88.51708984375,48.38447265625],[88.41396484375002,48.40341796875],[88.30996093750002,48.472070312499994],[87.97968750000001,48.555126953125],[88.06005859375,48.707177734374994],[87.83183593749999,48.791650390624994],[87.7431640625,48.881640625],[87.87216796875003,49.000146484374994],[87.81630859375002,49.0802734375],[87.8251953125,49.11630859375],[87.81425781249999,49.1623046875],[87.93476562500001,49.16455078125],[87.98808593749999,49.186914062499994],[88.02851562500001,49.219775390624996],[88.11572265625,49.256298828125],[88.19257812500001,49.451708984374996],[88.63320312500002,49.486132812499996],[88.83164062500003,49.4484375],[88.86386718750003,49.527636718749996],[88.90019531249999,49.539697265624994],[88.94541015625003,49.507666015625],[88.97060546875002,49.483740234375],[89.00839843750003,49.472802734374994],[89.10947265625003,49.501367187499994],[89.17998046874999,49.5322265625],[89.20292968749999,49.595703125],[89.24394531249999,49.62705078125],[89.39560546875003,49.6115234375],[89.475,49.66054687499999],[89.57919921875003,49.69970703125],[89.65410156249999,49.71748046875],[89.64384765624999,49.90302734375],[90.0537109375,50.09375],[90.65507812499999,50.22236328125],[90.71435546875,50.259423828124994],[90.7607421875,50.305957031249996],[91.02158203125003,50.415478515625],[91.23378906250002,50.452392578125],[91.30058593749999,50.46337890625],[91.3408203125,50.470068359375],[91.4150390625,50.468017578125],[91.44648437500001,50.52216796875],[91.80429687500003,50.693603515625],[92.10400390625,50.6919921875],[92.1923828125,50.700585937499994],[92.35478515624999,50.864160156249994],[92.42636718750003,50.803076171875],[92.62666015625001,50.68828125],[92.68134765625001,50.683203125],[92.73867187500002,50.7109375],[92.779296875,50.778662109375],[92.8564453125,50.789111328124996],[92.94130859375002,50.778222656249994],[93.103125,50.60390625],[94.25107421875003,50.556396484375],[94.35468750000001,50.221826171874994],[94.61474609375,50.023730468749996],[94.67548828125001,50.028076171875],[94.71806640624999,50.043261718749996],[94.93027343750003,50.04375],[95.11142578125003,49.935449218749994],[95.52265625000001,49.91123046875],[96.06552734375003,49.99873046875],[96.31503906250003,49.901123046875],[96.98574218750002,49.8828125],[97.20859375000003,49.730810546875],[97.35976562500002,49.741455078125],[97.58935546875,49.911474609375],[98.00390625,50.0142578125],[98.25029296874999,50.30244140625],[98.27949218750001,50.533251953124996],[98.14501953125,50.5685546875],[98.07890624999999,50.603808593749996],[98.02978515625,50.64462890625],[97.82529296875003,50.985253906249994],[98.103125,51.483544921874994],[98.64052734375002,51.801171875],[98.89316406250003,52.11728515625],[99.92167968749999,51.755517578125],[100.03457031250002,51.737109375],[100.23037109375002,51.729833984375],[100.46894531250001,51.72607421875],[100.53623046875003,51.7134765625],[101.38125,51.45263671875],[101.57089843750003,51.4671875],[101.82119140625002,51.421044921874994],[102.11152343750001,51.353466796875],[102.15566406250002,51.313769531249996],[102.16005859375002,51.26083984375],[102.14238281249999,51.216064453125],[102.15195312500003,51.10751953125],[102.19453125000001,51.050683593749994],[102.21503906250001,50.829443359375],[102.31660156250001,50.71845703125],[102.28837890624999,50.585107421874994],[103.30439453125001,50.20029296875],[103.63291015625003,50.138574218749994],[103.72324218750003,50.153857421874996],[103.80263671875002,50.176074218749996],[104.07871093750003,50.154248046875],[105.38359374999999,50.47373046875],[106.21787109375003,50.304589843749994],[106.36845703124999,50.317578125],[106.57441406250001,50.32880859375],[106.71113281250001,50.31259765625],[106.94130859375002,50.196679687499994],[107.04023437500001,50.086474609374996],[107.14306640625,50.033007812499996],[107.23330078125002,49.989404296874994],[107.34707031250002,49.986669921875],[107.63095703125003,49.98310546875],[107.91660156250003,49.947802734374996],[107.96542968750003,49.653515625],[108.40693359375001,49.396386718749994],[108.5224609375,49.34150390625],[108.61367187500002,49.322802734374996],[109.23671875000002,49.334912109375],[109.45371093750003,49.296337890625],[109.52871093750002,49.269873046875],[110.19990234375001,49.17041015625],[110.42783203125003,49.219970703125],[110.70976562499999,49.14296875],[110.82792968749999,49.166162109374994],[111.20419921875003,49.304296875],[111.33662109375001,49.35585937499999],[111.42929687500003,49.342626953125],[112.07968750000003,49.42421875],[112.49492187499999,49.53232421875],[112.69736328125003,49.507275390625],[112.80644531249999,49.523583984374994],[112.91484374999999,49.569238281249994],[113.05556640625002,49.616259765624996],[113.09208984374999,49.692529296874994],[113.16416015625003,49.797167968749996],[113.31904296875001,49.874316406249996],[113.44550781250001,49.9416015625],[113.57421875,50.00703125],[114.29707031250001,50.2744140625],[114.7431640625,50.233691406249996],[115.00332031250002,50.138574218749994],[115.27451171875003,49.948876953124994],[115.36503906249999,49.911767578124994],[115.42919921875,49.896484375],[115.58798828125003,49.886035156249996],[115.7177734375,49.880615234375],[115.79521484374999,49.905908203124994],[115.92597656250001,49.9521484375],[116.13457031249999,50.010791015624996],[116.216796875,50.00927734375],[116.35117187500003,49.978076171874996],[116.55117187500002,49.9203125],[116.68330078125001,49.823779296874996],[115.82050781250001,48.57724609375],[115.79169921875001,48.455712890624994],[115.79658203125001,48.346337890624994],[115.78554687500002,48.2482421875],[115.63945312499999,48.18623046875],[115.52509765625001,48.130859375],[115.61640625000001,47.874804687499996],[115.89824218749999,47.686914062499994],[115.99384765625001,47.71132812499999],[116.07480468750003,47.78955078125],[116.23115234375001,47.858203125],[116.31718749999999,47.85986328125],[116.37822265624999,47.844042968749996],[116.51347656249999,47.83955078125],[116.65195312500003,47.864501953125],[116.76054687499999,47.869775390624994],[116.90117187499999,47.853076171874996],[116.95166015625,47.836572265624994],[117.06972656250002,47.806396484375],[117.28593749999999,47.666357421875],[117.35078125000001,47.652197265625],[117.76835937499999,47.987890625],[118.49843750000002,47.983984375],[118.56777343750002,47.943261718749994],[118.69052734375003,47.822265625],[118.75996093750001,47.757617187499996],[118.88027343750002,47.72509765625],[119.017578125,47.685351562499996],[119.08193359375002,47.654150390625],[119.71113281250001,47.15],[119.89785156250002,46.8578125],[119.8671875,46.672167968749996],[119.74746093750002,46.627197265625],[119.70664062500003,46.606005859374996],[119.62021484375003,46.603955078125],[119.47402343750002,46.62666015625],[119.33183593749999,46.613818359374996],[119.162109375,46.638671875],[118.95712890625003,46.73486328125],[118.84394531250001,46.760205078125],[118.79033203124999,46.7470703125],[118.72294921874999,46.69189453125],[118.64873046874999,46.70166015625],[118.58046875000002,46.69189453125],[118.40439453125003,46.703173828124996],[118.30869140625003,46.717041015625],[118.15683593750003,46.678564453125],[118.0712890625,46.6666015625],[117.7412109375,46.5181640625],[117.546875,46.58828125],[117.43808593750003,46.586230468749996],[117.40556640624999,46.5708984375],[117.39218750000003,46.53759765625],[117.35634765625002,46.436669921874994],[117.35693359375,46.39130859375],[117.33339843750002,46.36201171875],[116.85908203125001,46.387939453125],[116.56259765625003,46.289794921875],[116.21298828125003,45.8869140625],[116.22910156250003,45.845751953124996],[116.240625,45.79599609375],[116.19765625000002,45.73935546875],[115.68105468750002,45.458251953125],[115.16259765625,45.390234375],[114.91923828124999,45.378271484375],[114.73876953125,45.41962890625],[114.56015625000003,45.389990234375],[114.41914062500001,45.202587890625],[114.16738281250002,45.049853515624996],[114.08027343750001,44.971142578125],[113.87705078125003,44.89619140625],[113.65263671874999,44.763476562499996],[113.58701171875003,44.745703125],[113.04941406250003,44.810351562499996],[112.70673828125001,44.883447265624994],[112.59677734375003,44.91767578125],[112.49931640624999,45.0109375],[112.41132812500001,45.058203125],[112.11289062500003,45.062939453125],[112.03261718750002,45.081640625],[111.89804687500003,45.0640625],[111.40224609375002,44.36728515625],[111.93173828125003,43.81494140625],[111.878125,43.68017578125]]]},"properties":{"name":"Mongolia","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[145.75195312499997,15.133154296874991],[145.71318359375007,15.215283203125026],[145.821875,15.265380859375014],[145.75195312499997,15.133154296874991]]]},"properties":{"name":"N. Mariana Is.","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[32.112890625,-26.839453125],[32.10595703125,-26.52001953125],[32.04140625000002,-26.28125],[32.060546875,-26.018359375],[31.9482421875,-25.957617187500006],[31.98583984375,-24.46064453125001],[31.799609375000017,-23.8921875],[31.54560546875001,-23.48232421875001],[31.287890625000017,-22.40205078125001],[31.429492187500017,-22.298828125],[32.429785156250006,-21.29707031250001],[32.353613281250006,-21.136523437500003],[32.49238281250001,-20.659765625],[32.992773437500006,-19.98486328125],[32.77763671875002,-19.388769531250006],[32.84980468750001,-19.10439453125001],[32.69970703125,-18.94091796875],[32.99306640625002,-18.35957031250001],[32.87626953125002,-16.88359375],[32.94804687500002,-16.71230468750001],[31.939843750000023,-16.428808593750006],[31.236230468750023,-16.02363281250001],[30.437792968750017,-15.995312500000011],[30.39609375,-15.64306640625],[30.231835937500023,-14.990332031250006],[33.201757812500006,-14.013378906250011],[33.63642578125001,-14.568164062500003],[34.375,-14.4248046875],[34.50527343750002,-14.59814453125],[34.54082031250002,-15.297265625],[34.24609375,-15.829394531250003],[34.528125,-16.319140625],[34.93339843750002,-16.760351562500006],[35.11210937500002,-16.898535156250006],[35.06464843750001,-17.07861328125],[35.124609375,-17.127246093750003],[35.20136718750001,-17.13105468750001],[35.272558593750006,-17.118457031250003],[35.29042968750002,-17.096972656250003],[35.28115234375002,-16.80781250000001],[35.22978515625002,-16.639257812500006],[35.178320312500006,-16.573339843750006],[35.16718750000001,-16.56025390625001],[35.242773437500006,-16.375390625],[35.358496093750006,-16.160546875],[35.59931640625001,-16.12587890625001],[35.70888671875002,-16.095800781250006],[35.75527343750002,-16.05830078125001],[35.79121093750001,-15.958691406250011],[35.89277343750001,-14.891796875000011],[35.86669921875,-14.86376953125],[35.84716796875,-14.6708984375],[35.6904296875,-14.465527343750011],[35.48847656250001,-14.201074218750009],[35.37578125000002,-14.058691406250006],[35.24746093750002,-13.896875],[35.01386718750001,-13.643457031250009],[34.61152343750001,-13.437890625],[34.54570312500002,-13.21630859375],[34.542578125,-13.108691406250003],[34.35781250000002,-12.164746093750011],[34.60625,-11.690039062500006],[34.65957031250002,-11.588671875],[34.82656250000002,-11.57568359375],[34.95947265625,-11.578125],[35.1826171875,-11.574804687500006],[35.41826171875002,-11.583203125000011],[35.50439453125,-11.604785156250003],[35.56435546875002,-11.60234375],[35.630957031250006,-11.58203125],[35.78544921875002,-11.452929687500003],[35.91132812500001,-11.4546875],[36.08222656250001,-11.537304687500011],[36.17548828125001,-11.609277343750009],[36.19130859375002,-11.670703125],[36.3056640625,-11.706347656250003],[36.97890625000002,-11.566992187500006],[37.37285156250002,-11.71044921875],[37.54169921875001,-11.675097656250003],[37.72480468750001,-11.580664062500006],[37.92021484375002,-11.294726562500003],[38.491796875,-11.413281250000011],[38.9875,-11.167285156250003],[39.81708984375001,-10.912402343750003],[39.98867187500002,-10.82080078125],[40.46357421875001,-10.46435546875],[40.61171875000002,-10.661523437500009],[40.48662109375002,-10.76513671875],[40.59716796875,-10.830664062500006],[40.40283203125,-11.33203125],[40.53154296875002,-12.004589843750011],[40.48710937500002,-12.4921875],[40.58085937500002,-12.635546875],[40.43681640625002,-12.983105468750011],[40.56875,-12.984667968750003],[40.595703125,-14.122851562500003],[40.715625,-14.214453125],[40.64609375,-14.538671875],[40.775,-14.421289062500009],[40.84453125000002,-14.718652343750009],[40.617773437500006,-15.115527343750003],[40.650976562500006,-15.260937500000011],[39.98359375000001,-16.22548828125001],[39.79091796875002,-16.29453125],[39.84462890625002,-16.435644531250006],[39.084375,-16.97285156250001],[38.14492187500002,-17.242773437500006],[37.24453125000002,-17.73994140625001],[36.93935546875002,-17.993457031250003],[36.40371093750002,-18.76972656250001],[36.26289062500001,-18.71962890625001],[36.23564453125002,-18.861328125],[35.85371093750001,-18.99335937500001],[34.947851562500006,-19.81269531250001],[34.6494140625,-19.70136718750001],[34.75576171875002,-19.82197265625001],[34.705078125,-20.473046875],[34.98232421875002,-20.80625],[35.267675781250006,-21.650976562500006],[35.31572265625002,-22.396875],[35.38300781250001,-22.45458984375],[35.45634765625002,-22.11591796875001],[35.53007812500002,-22.248144531250006],[35.57539062500001,-22.96308593750001],[35.37041015625002,-23.79824218750001],[35.5419921875,-23.82441406250001],[35.48964843750002,-24.065527343750006],[34.99208984375002,-24.65058593750001],[32.96113281250001,-25.49042968750001],[32.590429687500006,-26.00410156250001],[32.84882812500001,-26.26806640625],[32.95488281250002,-26.08359375],[32.93359375,-26.25234375],[32.88916015625,-26.83046875],[32.88613281250002,-26.84931640625001],[32.353515625,-26.861621093750003],[32.19960937500002,-26.83349609375],[32.112890625,-26.839453125]]]},"properties":{"name":"Mozambique","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-16.37333984374999,19.706445312499994],[-16.437548828124932,19.609277343749994],[-16.477001953124983,19.710351562499994],[-16.343652343749994,19.86621093750003],[-16.37333984374999,19.706445312499994]]],[[[-5.359912109374989,16.282861328124994],[-5.5125,15.496289062499983],[-9.293701171875,15.502832031249994],[-9.350585937499943,15.677392578125023],[-9.38535156249992,15.667626953124994],[-9.4265625,15.623046875000057],[-9.447705078124926,15.574853515624994],[-9.446923828124937,15.458203124999955],[-9.941406249999972,15.373779296874986],[-10.696582031249989,15.42265625],[-10.9482421875,15.151123046875014],[-11.455224609374994,15.62539062499999],[-11.760156249999937,15.425537109375057],[-11.828759765624966,15.244873046875014],[-11.872851562499989,14.995166015625031],[-12.02158203124992,14.804931640625],[-12.081542968749972,14.766357421875057],[-12.104687499999955,14.745361328125043],[-12.40869140625,14.889013671874991],[-12.735253906249994,15.13125],[-13.105273437499989,15.57177734375],[-13.40966796875,16.059179687500006],[-13.756640624999989,16.172509765624994],[-13.868457031249932,16.14814453125001],[-14.300097656249932,16.58027343750001],[-14.990625,16.676904296874994],[-15.768212890624994,16.485107421875],[-16.23901367187497,16.53129882812499],[-16.44101562499992,16.20454101562504],[-16.480078124999977,16.097216796875017],[-16.50205078124992,15.917333984375063],[-16.53525390624995,15.838378906250057],[-16.53574218749995,16.28681640625001],[-16.463623046875,16.60151367187501],[-16.030322265625017,17.88793945312497],[-16.213085937499926,19.003320312500023],[-16.51445312499996,19.361962890624994],[-16.305273437499977,19.51264648437504],[-16.44487304687499,19.47314453124997],[-16.21044921875003,20.227929687500023],[-16.42978515624995,20.652343750000057],[-16.622509765624955,20.634179687499994],[-16.87607421874992,21.086132812499955],[-16.998242187499926,21.039697265625023],[-17.048046874999955,20.80615234375003],[-17.06396484375,20.89882812499999],[-16.96455078125001,21.329248046875023],[-15.231201171875,21.331298828125],[-14.084667968749926,21.33271484375001],[-13.626025390624932,21.33325195312503],[-13.396728515624943,21.333544921875017],[-13.167431640624926,21.333789062500074],[-13.016210937499949,21.33393554687501],[-13.025097656249983,21.46679687499997],[-13.032226562500028,21.572070312500017],[-13.041748046875,21.71381835937504],[-13.051220703124983,21.854785156250074],[-13.094335937499977,22.49599609375005],[-13.153271484374983,22.820507812499983],[-13.031494140624943,23.000244140625],[-12.895996093749972,23.08955078125001],[-12.739599609375006,23.192724609375063],[-12.62041015624996,23.271337890625006],[-12.559375,23.290820312500045],[-12.372900390624977,23.318017578124994],[-12.023437499999943,23.467578125000017],[-12.016308593749983,23.97021484375],[-12.016308593749983,24.378662109375],[-12.016308593749983,24.923242187499994],[-12.016308593749983,25.059375],[-12.016308593749983,25.331689453124994],[-12.016308593749983,25.740136718749994],[-12.016308593749983,25.995410156250017],[-10.376123046874966,25.995458984375034],[-9.444531249999983,25.99550781250005],[-9.071923828124937,25.99550781250005],[-8.885644531249994,25.99550781250005],[-8.682226562499949,25.99550781250005],[-8.68212890625,26.109472656250006],[-8.68212890625,26.273193359375057],[-8.682324218749955,26.49770507812505],[-8.682617187500028,26.723144531250057],[-8.682861328124972,26.92133789062501],[-8.683349609375,27.285937500000045],[-4.822607421874949,24.99560546875],[-5.640771484374994,24.99516601562499],[-5.959814453124977,24.994970703125063],[-6.287207031249977,24.99482421875001],[-6.594091796874977,24.99462890624997],[-6.396582031249977,23.274804687499994],[-6.02641601562496,20.04218750000001],[-5.827099609374955,18.301562500000045],[-5.741699218749943,17.555566406250023],[-5.713183593750017,17.306884765625],[-5.684765624999983,17.058251953124966],[-5.628662109375028,16.568652343750045],[-5.50961914062492,16.442041015625023],[-5.359912109374989,16.282861328124994]]]]},"properties":{"name":"Mauritania","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[-62.1484375,16.74033203124999],[-62.221630859375,16.699511718750003],[-62.191357421875,16.804394531249997],[-62.1484375,16.74033203124999]]]},"properties":{"name":"Montserrat","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[57.65126953125002,-20.48486328125],[57.31767578125002,-20.42763671875001],[57.416015625,-20.18378906250001],[57.65654296875002,-19.98994140625001],[57.7919921875,-20.21259765625001],[57.65126953125002,-20.48486328125]]]},"properties":{"name":"Mauritius","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[34.95947265625003,-11.578125],[34.82656250000005,-11.575683593749972],[34.65957031250005,-11.58867187499996],[34.61855468750005,-11.620214843749991],[34.60625,-11.690039062500006],[34.3578125,-12.164746093749997],[34.542578125,-13.108691406250003],[34.54570312500002,-13.21630859375],[34.6115234375001,-13.437890625000023],[35.0138671875001,-13.64345703124998],[35.247460937499994,-13.896875],[35.37578125000002,-14.05869140625002],[35.48847656250004,-14.20107421874998],[35.69042968749997,-14.465527343750026],[35.84716796875003,-14.670898437500043],[35.8927734375001,-14.891796875000011],[35.7912109375001,-15.958691406250026],[35.75527343750005,-16.058300781249983],[35.708886718749994,-16.095800781249977],[35.5993164062501,-16.12587890624998],[35.35849609375006,-16.160546875000023],[35.242773437500006,-16.375390625],[35.16718750000004,-16.56025390625001],[35.178320312500006,-16.57333984375002],[35.22978515625002,-16.639257812500034],[35.281152343749994,-16.8078125],[35.29042968750005,-17.096972656250017],[35.27255859375006,-17.11845703124996],[35.2013671875001,-17.13105468750004],[35.124609375,-17.127246093749974],[35.06464843750004,-17.078613281250014],[35.11210937500002,-16.898535156250006],[34.93339843750002,-16.760351562500006],[34.528125,-16.319140625],[34.24609374999997,-15.829394531249974],[34.54082031250002,-15.297265625],[34.50527343750005,-14.598144531249957],[34.375,-14.4248046875],[33.63642578125004,-14.568164062499974],[33.148046875,-13.94091796875],[32.98125,-14.009375],[32.797460937500006,-13.6884765625],[32.67041015624997,-13.590429687500006],[32.96757812500002,-13.225],[32.97519531250006,-12.701367187499983],[33.51230468750006,-12.347753906249977],[33.340136718750074,-12.308300781250011],[33.25234375000005,-12.112597656250031],[33.3039062500001,-11.69082031249998],[33.23271484375002,-11.417675781250026],[33.26835937500002,-11.403906249999977],[33.379785156249994,-11.15791015625004],[33.29277343750002,-10.85234375],[33.661523437499994,-10.553125],[33.55371093749997,-10.391308593750011],[33.53759765624997,-10.351562499999986],[33.52890625,-10.234667968749974],[33.31152343750003,-10.037988281249966],[33.3371093750001,-9.954003906249994],[33.350976562499994,-9.862207031250037],[33.25,-9.759570312500003],[33.148046875,-9.603515625],[32.99599609375005,-9.622851562499946],[32.91992187500003,-9.407421875000026],[33.88886718750004,-9.670117187499983],[33.99560546875003,-9.495410156250003],[34.32089843750006,-9.731542968749977],[34.56992187500006,-10.241113281249966],[34.66708984375006,-10.792480468750028],[34.60791015624997,-11.08046875],[34.77382812500005,-11.341699218750009],[34.890625,-11.3935546875],[34.93701171874997,-11.463476562500034],[34.95947265625003,-11.578125]]]},"properties":{"name":"Malawi","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[111.38925781250006,2.415332031250031],[111.31152343749997,2.437597656250034],[111.33349609374997,2.768310546875],[111.38925781250006,2.415332031250031]]],[[[104.22158203125,2.731738281250003],[104.1291015625001,2.767236328125037],[104.18476562500004,2.871728515625009],[104.22158203125,2.731738281250003]]],[[[117.88476562499997,4.186132812500006],[117.64902343750012,4.168994140624974],[117.70800781249997,4.262402343749997],[117.88476562499997,4.186132812500006]]],[[[100.28896484375005,5.294726562499989],[100.19101562500006,5.28286132812498],[100.2455078125,5.467773437499986],[100.33886718749997,5.410058593750037],[100.28896484375005,5.294726562499989]]],[[[99.848046875,6.465722656249994],[99.9186523437501,6.358593750000011],[99.74375,6.263281249999963],[99.64628906250002,6.418359375000023],[99.848046875,6.465722656249994]]],[[[102.10107421874997,6.242236328125031],[102.34013671875002,6.172021484375023],[102.534375,5.862548828125028],[103.09707031250005,5.408447265624986],[103.41582031250007,4.85029296875004],[103.43945312499997,2.93310546875],[103.8122070312501,2.58046875],[104.21855468750002,1.722851562499997],[104.25009765625012,1.388574218750009],[104.11494140625004,1.412255859375037],[103.98144531250003,1.623632812500034],[103.99150390625002,1.454785156249997],[103.6945312500001,1.449658203125026],[103.48027343750007,1.329492187499966],[103.35683593750005,1.546142578125057],[102.72714843750012,1.855566406250034],[101.29550781250012,2.885205078125011],[101.29990234375012,3.253271484375034],[100.71542968750006,3.966210937499966],[100.79550781250012,4.023388671874983],[100.61455078125002,4.3734375],[100.34326171874997,5.984179687500031],[100.11914062499997,6.441992187500048],[100.26142578125004,6.682714843749963],[100.3454101562501,6.549902343750006],[100.75449218750012,6.460058593749991],[100.87392578125,6.24541015624996],[101.05351562500002,6.242578125],[100.98164062500004,5.771044921875045],[101.1139648437501,5.636767578125045],[101.5560546875,5.907763671875003],[101.67841796875004,5.778808593750028],[101.87363281250012,5.825292968749991],[102.10107421874997,6.242236328125031]]],[[[117.5744140625001,4.17060546875004],[117.10058593750003,4.337060546875023],[116.51474609375006,4.370800781249969],[115.86074218750005,4.348046875000037],[115.67880859375006,4.193017578124994],[115.45439453125002,3.034326171875009],[115.24697265625005,3.025927734374989],[115.117578125,2.89487304687502],[115.08076171875004,2.63422851562504],[115.1791015625,2.523193359374972],[114.78642578125002,2.250488281250014],[114.83056640625003,1.980029296874989],[114.5125,1.452001953124963],[113.90234375000003,1.434277343749997],[113.6222656250001,1.2359375],[113.00654296875004,1.433886718750003],[112.94296875000006,1.566992187500034],[112.47617187500006,1.559082031250028],[112.1857421875001,1.4390625],[112.078515625,1.143359374999974],[111.80898437500005,1.011669921874969],[111.10136718750002,1.050537109374986],[110.50576171875005,0.861962890625023],[109.65400390625004,1.614892578125023],[109.53896484375,1.89619140625004],[109.62890625000003,2.027539062499983],[109.86484375000012,1.764453125000031],[110.34921875000012,1.719726562499972],[111.22324218750012,1.395849609374991],[111.0287109375,1.557812500000026],[111.26816406250012,2.13974609375002],[111.20859375000012,2.379638671875043],[111.44384765625003,2.381542968749983],[111.5125,2.743017578124991],[112.98789062500006,3.161914062499974],[113.92392578125006,4.243212890625003],[114.0638671875,4.592675781249966],[114.65410156250007,4.037646484375045],[114.84023437500005,4.393212890625009],[114.74667968750006,4.718066406250017],[115.02675781250005,4.899707031249989],[115.10703125000006,4.390429687499974],[115.290625,4.352587890624989],[115.1400390625,4.899755859374991],[115.37490234375,4.932763671874966],[115.55449218750007,5.093554687500045],[115.41904296875012,5.413183593749963],[115.60390625,5.603417968749994],[115.74082031250012,5.533007812500045],[115.8771484375001,5.613525390625014],[116.74980468750007,6.977099609374989],[116.8498046875001,6.826708984374989],[116.78808593749997,6.606103515624994],[117.12851562500012,6.968896484375009],[117.2298828125,6.939990234374974],[117.29404296875006,6.676904296875023],[117.60966796875002,6.512646484375054],[117.69375,6.35],[117.64453124999997,6.001855468749994],[117.5011718750001,5.884667968750009],[118.00380859375,6.053320312499991],[118.11582031250006,5.8625],[117.93476562500004,5.7875],[117.97363281249997,5.70625],[118.35312500000012,5.80605468749998],[118.59482421875006,5.592089843750003],[119.22343750000007,5.412646484375031],[119.2663085937501,5.308105468750057],[119.21962890625,5.159814453125037],[118.9125,5.02290039062504],[118.26054687500007,4.988867187500034],[118.18535156250002,4.828515625000051],[118.5625,4.502148437499997],[118.54833984375003,4.379248046875006],[118.008203125,4.250244140625014],[117.6964843750001,4.342822265625045],[117.5744140625001,4.17060546875004]]],[[[117.14160156250003,7.168212890625028],[117.08066406250006,7.115283203124989],[117.06425781250007,7.26069335937504],[117.2640625,7.351660156250006],[117.26679687500004,7.220800781249991],[117.14160156250003,7.168212890625028]]]]},"properties":{"name":"Malaysia","childNum":8}},{"geometry":{"type":"Polygon","coordinates":[[[23.380664062500017,-17.640625],[24.27490234375,-17.481054687500006],[24.73291015625,-17.51777343750001],[25.001757812500017,-17.56855468750001],[25.2587890625,-17.793554687500006],[24.909082031250023,-17.821386718750006],[24.530566406250017,-18.052734375],[24.243945312500017,-18.0234375],[23.599707031250006,-18.4599609375],[23.219335937500006,-17.99970703125001],[20.97412109375,-18.31884765625],[20.9794921875,-21.9619140625],[19.977343750000017,-22.00019531250001],[19.98046875,-24.77675781250001],[19.98046875,-28.310351562500003],[19.98046875,-28.451269531250006],[19.539843750000017,-28.574609375],[19.31269531250001,-28.73330078125001],[19.24580078125001,-28.901660156250003],[19.16171875,-28.938769531250003],[18.310839843750017,-28.88623046875],[17.44794921875001,-28.69814453125001],[17.34785156250001,-28.50117187500001],[17.358691406250017,-28.26943359375001],[17.1884765625,-28.13251953125001],[17.05625,-28.031054687500003],[16.93330078125001,-28.069628906250003],[16.875292968750017,-28.1279296875],[16.841210937500023,-28.21894531250001],[16.81015625,-28.26455078125001],[16.7875,-28.39472656250001],[16.755761718750023,-28.4521484375],[16.62617187500001,-28.487890625],[16.487109375000017,-28.572851562500006],[16.447558593750017,-28.617578125],[15.719042968750017,-27.9658203125],[15.341503906250011,-27.386523437500003],[15.139062500000023,-26.50800781250001],[14.9677734375,-26.31806640625001],[14.837109375000011,-25.033203125],[14.5015625,-24.201953125],[14.462792968750023,-22.44912109375001],[13.450585937500023,-20.91669921875001],[13.168359375000023,-20.184667968750006],[12.458203125000011,-18.9267578125],[11.77587890625,-18.001757812500003],[11.733496093750006,-17.7509765625],[11.743066406250023,-17.24921875000001],[11.902539062500011,-17.2265625],[12.013964843750017,-17.168554687500006],[12.21337890625,-17.2099609375],[12.318457031250006,-17.21337890625],[12.359277343750023,-17.205859375],[12.548144531250017,-17.212695312500003],[13.179492187500017,-16.9716796875],[13.475976562500023,-17.0400390625],[14.017480468750023,-17.40888671875001],[16.1484375,-17.390234375],[18.396386718750023,-17.3994140625],[18.95527343750001,-17.803515625],[20.1943359375,-17.863671875],[20.745507812500023,-18.01972656250001],[22.32421875,-17.8375],[23.380664062500017,-17.640625]]]},"properties":{"name":"Namibia","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[167.54443359375003,-22.62324218750001],[167.44375,-22.63916015624997],[167.44345703125006,-22.541406250000037],[167.54443359375003,-22.62324218750001]]],[[[168.01093750000004,-21.429980468750017],[168.1390625,-21.44521484375001],[168.12070312500012,-21.615820312500034],[167.96679687500003,-21.641601562499957],[167.81542968749997,-21.392675781249963],[167.9884765625001,-21.337890624999986],[168.01093750000004,-21.429980468750017]]],[[[167.40087890625003,-21.16064453125003],[167.07265625,-20.99726562499997],[167.03271484374997,-20.922558593750026],[167.18945312500003,-20.803515625000017],[167.05576171875012,-20.720214843750014],[167.29794921875006,-20.732519531250034],[167.40087890625003,-21.16064453125003]]],[[[164.20234375000004,-20.246093749999957],[164.4359375,-20.282226562499957],[165.191796875,-20.768847656249974],[165.66279296875004,-21.267187499999977],[166.94238281250003,-22.09013671875003],[166.97031250000012,-22.32285156250002],[166.77412109375004,-22.37617187500004],[166.4679687500001,-22.256054687499997],[164.92744140625004,-21.289843749999974],[164.16972656250007,-20.48017578125004],[164.05966796875012,-20.141503906249966],[164.20234375000004,-20.246093749999957]]]]},"properties":{"name":"New Caledonia","childNum":4}},{"geometry":{"type":"Polygon","coordinates":[[[14.97900390625,22.99619140624999],[15.181835937500011,21.523388671874997],[15.607324218750023,20.954394531250003],[15.587109375000011,20.733300781249994],[15.963183593750017,20.34619140625],[15.735058593750011,19.904052734375],[15.474316406250011,16.908398437499997],[14.367968750000017,15.750146484374994],[13.4482421875,14.380664062500003],[13.505761718750023,14.134423828124994],[13.606347656250023,13.70458984375],[13.426953125000011,13.701757812499991],[13.323828125,13.670849609374997],[12.871679687500006,13.449023437500003],[12.65478515625,13.3265625],[12.463183593750017,13.09375],[10.958886718750023,13.371533203124997],[10.475878906250017,13.330224609374994],[10.229589843750006,13.281005859375],[10.184667968750006,13.270117187499991],[9.615917968750011,12.810644531249991],[9.201562500000023,12.821484375],[8.750585937500006,12.908154296874997],[8.4560546875,13.059667968749991],[8.095019531250017,13.291162109374994],[7.955761718750011,13.32275390625],[7.788671875,13.337890625],[7.056738281250006,13.000195312499997],[6.804296875,13.107666015625],[6.2998046875,13.658789062499991],[6.184277343750011,13.66367187499999],[5.838183593750017,13.765380859375],[5.491992187500017,13.872851562500003],[5.415820312500017,13.859179687500003],[5.361621093750017,13.836865234374997],[5.241894531250011,13.757226562499994],[4.664843750000017,13.733203125],[4.147558593750006,13.457714843749997],[3.947851562500006,12.775048828124994],[3.646679687500011,12.529980468749997],[3.595410156250011,11.6962890625],[2.805273437500006,12.383837890624989],[2.366015625000017,12.221923828125],[2.38916015625,11.897070312499991],[2.072949218750011,12.309375],[2.226269531250011,12.466064453125],[2.104589843750006,12.701269531249991],[1.56494140625,12.635400390624994],[0.9873046875,13.041894531249994],[0.988476562500011,13.36484375],[1.201171875,13.357519531249991],[0.6181640625,13.703417968750003],[0.42919921875,13.972119140624997],[0.382519531250011,14.245800781249997],[0.163867187500017,14.497216796874994],[0.217480468750011,14.911474609374991],[0.947460937500011,14.982128906249997],[1.300195312500023,15.272265625],[3.001074218750006,15.340966796874994],[3.06015625,15.427197265624997],[3.504296875000023,15.356347656249994],[3.5205078125,15.483105468749997],[3.842968750000011,15.701708984375003],[4.121289062500011,16.357714843750003],[4.234667968750017,16.996386718750003],[4.227636718750006,19.142773437499997],[5.836621093750011,19.479150390624994],[7.481738281250017,20.873095703125003],[11.967871093750006,23.517871093750003],[13.48125,23.18017578125],[14.215527343750011,22.619677734375003],[14.97900390625,22.99619140624999]]]},"properties":{"name":"Niger","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[7.30078125,4.418164062500026],[7.140429687500017,4.395117187500034],[7.227343750000045,4.527343749999972],[7.30078125,4.418164062500026]]],[[[6.804296875,13.107666015625],[7.056738281250006,13.00019531250004],[7.788671875,13.337890625],[7.955761718750011,13.322753906250028],[8.095019531250045,13.29116210937498],[8.750585937500034,12.908154296875026],[9.20156250000008,12.82148437500004],[9.615917968750011,12.810644531249963],[10.184667968750063,13.270117187499963],[10.229589843749977,13.281005859375043],[10.475878906250074,13.330224609375037],[10.958886718750051,13.371533203125011],[12.463183593750017,13.09375],[12.654785156250057,13.3265625],[13.426953125000068,13.701757812499963],[13.606347656250023,13.704589843750014],[13.932324218750011,13.258496093749997],[14.06396484375,13.078515625],[14.160058593750023,12.612792968749986],[14.184863281250017,12.447216796874997],[14.272851562500023,12.356494140624989],[14.518945312500051,12.298242187500023],[14.619726562500063,12.150976562500048],[14.559765625000011,11.492285156249963],[14.20234375000004,11.268164062499963],[14.143261718750068,11.248535156250043],[14.056738281250034,11.245019531250037],[13.981445312500057,11.21186523437504],[13.892089843750057,11.140087890624983],[13.699902343749983,10.873144531250048],[13.53535156250004,10.605078124999963],[13.414550781250028,10.171435546874989],[13.269921875000051,10.036181640624974],[13.198730468750028,9.563769531250003],[12.929492187500074,9.426269531249972],[12.87568359375004,9.303515625000017],[12.80654296875008,8.886621093749994],[12.7822265625,8.817871093750014],[12.651562500000011,8.667773437499989],[12.40351562500004,8.59555664062502],[12.311328125000074,8.419726562499989],[12.2333984375,8.282324218749977],[12.016015625000051,7.589746093750009],[11.809179687500006,7.345068359374991],[11.767382812500017,7.272265624999989],[11.861425781249977,7.11640625000004],[11.657519531250017,6.951562500000023],[11.580078125000057,6.88886718750004],[11.551660156250023,6.697265625],[11.153320312500057,6.437939453125011],[11.1064453125,6.457714843750054],[11.032519531250045,6.697900390625037],[10.954199218750006,6.7765625],[10.60625,7.063085937500006],[10.413183593750006,6.877734375],[10.293066406250034,6.876757812499974],[10.205468750000051,6.891601562499986],[10.185546874999972,6.91279296875004],[10.167773437500017,6.959179687499983],[10.143554687500057,6.99643554687502],[10.038867187500045,6.921386718750014],[9.874218750000068,6.803271484375017],[9.82070312500008,6.783935546874986],[9.779882812500034,6.760156250000023],[9.725585937499972,6.65],[9.659960937500017,6.531982421874986],[9.490234375,6.418652343749997],[8.997167968750006,5.917724609375],[8.715625,5.046875],[8.514843750000068,4.724707031250034],[8.23378906250008,4.907470703124972],[8.293066406250006,4.557617187500014],[7.644238281250068,4.525341796875011],[7.530761718750028,4.655175781249994],[7.284375,4.547656250000031],[7.076562500000051,4.716162109374991],[7.15468750000008,4.514404296875],[6.92324218750008,4.390673828125017],[6.767675781250006,4.724707031250034],[6.860351562500057,4.373339843750045],[6.633007812500011,4.340234375000051],[6.579980468750051,4.475976562499994],[6.554589843750023,4.34140625000002],[6.263671875,4.309423828124991],[6.270996093749972,4.432128906250028],[6.173339843749972,4.277392578125031],[5.970703125,4.338574218749983],[5.587792968750051,4.647216796874972],[5.448144531250023,4.945849609374974],[5.383300781250057,5.129003906249977],[5.475976562500023,5.153857421874989],[5.370019531250023,5.195019531250026],[5.367968750000045,5.337744140624963],[5.549707031250023,5.474218749999963],[5.385839843750034,5.401757812500037],[5.199218750000028,5.533544921874977],[5.456640624999977,5.61171875],[5.327343750000011,5.707519531249986],[5.112402343750034,5.64155273437504],[4.861035156250068,6.026318359374997],[4.431347656250011,6.348583984375026],[3.450781249999977,6.427050781250017],[3.71699218750004,6.597949218750017],[3.430175781250057,6.525],[3.335546875000063,6.396923828125011],[2.706445312500051,6.369238281249963],[2.735644531250045,6.595703125],[2.753710937499989,6.661767578124966],[2.774609374999983,6.711718750000017],[2.752929687500028,6.771630859374966],[2.731738281250045,6.852832031249989],[2.721386718750068,6.980273437500017],[2.75673828125008,7.067919921875017],[2.750488281250057,7.39506835937496],[2.765820312500068,7.422509765625051],[2.783984375000045,7.443408203125045],[2.78515625,7.476855468750017],[2.703125,8.371826171875],[2.774804687500023,9.048535156250026],[3.044921875,9.08383789062502],[3.325195312499972,9.778466796875051],[3.60205078125,10.004541015625009],[3.646582031250006,10.408984374999989],[3.771777343750017,10.417626953124966],[3.83447265625,10.607421875],[3.7568359375,10.76875],[3.71640625,11.07958984375],[3.695312499999972,11.12031250000004],[3.63886718750004,11.176855468750006],[3.487792968749972,11.395410156250037],[3.490527343750017,11.499218750000054],[3.55390625000004,11.631884765624989],[3.595410156250068,11.696289062500057],[3.664746093750068,11.762451171875028],[3.646679687500011,12.529980468749983],[3.947851562500006,12.775048828124994],[4.147558593750006,13.457714843749983],[4.664843750000045,13.733203124999974],[5.241894531250011,13.757226562499994],[5.361621093750074,13.836865234375054],[5.415820312500017,13.859179687499974],[5.491992187500074,13.872851562500003],[6.2998046875,13.658789062500006],[6.804296875,13.107666015625]]]]},"properties":{"name":"Nigeria","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[-83.6419921875,10.917236328125],[-83.71293945312499,10.785888671875],[-83.91928710937499,10.7353515625],[-84.6341796875,11.045605468749997],[-84.9091796875,10.9453125],[-85.5841796875,11.189453125],[-85.7443359375,11.06210937499999],[-87.670166015625,12.965673828124991],[-87.58505859374999,13.043310546874991],[-87.42436523437499,12.921142578125],[-87.33725585937499,12.979248046875],[-87.05917968749999,12.991455078125],[-87.00932617187499,13.0078125],[-86.918212890625,13.223583984374997],[-86.87353515625,13.266503906249994],[-86.792138671875,13.27978515625],[-86.72929687499999,13.284375],[-86.710693359375,13.313378906249994],[-86.76352539062499,13.63525390625],[-86.77060546874999,13.69873046875],[-86.758984375,13.746142578125003],[-86.733642578125,13.763476562500003],[-86.61025390625,13.774853515624997],[-86.376953125,13.755664062500003],[-86.33173828125,13.770068359375003],[-86.238232421875,13.899462890625003],[-86.15122070312499,13.994580078124997],[-86.0892578125,14.037207031249991],[-86.04038085937499,14.050146484374991],[-85.9837890625,13.965673828124991],[-85.78671875,13.844433593749997],[-85.75341796875,13.85205078125],[-85.73393554687499,13.858691406250003],[-85.727734375,13.876074218749991],[-85.731201171875,13.931835937499997],[-85.68193359374999,13.982568359374994],[-85.20834960937499,14.311816406250003],[-85.059375,14.582958984374997],[-84.86044921874999,14.809765625],[-84.645947265625,14.661083984374997],[-84.53764648437499,14.633398437499991],[-83.635498046875,14.876416015624997],[-83.5365234375,14.977001953124997],[-83.4150390625,15.008056640625],[-83.15751953124999,14.993066406249994],[-83.18535156249999,14.956396484374991],[-83.21591796874999,14.932373046875],[-83.27988281249999,14.812792968750003],[-83.344384765625,14.902099609375],[-83.413720703125,14.825341796874994],[-83.29921875,14.7490234375],[-83.187744140625,14.340087890625],[-83.4123046875,13.99648437499999],[-83.567333984375,13.3203125],[-83.5109375,12.411816406249997],[-83.627197265625,12.459326171874991],[-83.59335937499999,12.713085937499997],[-83.75424804687499,12.501953125],[-83.680419921875,12.024316406249994],[-83.7671875,12.059277343749997],[-83.82890624999999,11.861035156249997],[-83.70458984375,11.824560546874991],[-83.6517578125,11.642041015624997],[-83.86787109375,11.300048828125],[-83.6419921875,10.917236328125]]]},"properties":{"name":"Nicaragua","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-169.80341796875,-19.0830078125],[-169.94833984375,-19.072851562500006],[-169.834033203125,-18.96601562500001],[-169.80341796875,-19.0830078125]]]},"properties":{"name":"Niue","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-68.205810546875,12.144580078124989],[-68.25434570312495,12.032080078124977],[-68.36923828125,12.301953124999983],[-68.205810546875,12.144580078124989]]],[[[4.226171875000034,51.38647460937503],[3.902050781250011,51.20766601562502],[3.43251953125008,51.24575195312505],[3.35009765625,51.37768554687503],[4.226171875000034,51.38647460937503]]],[[[3.94912109375008,51.73945312500001],[4.07509765625008,51.648779296875006],[3.699023437500017,51.70991210937501],[3.94912109375008,51.73945312500001]]],[[[4.886132812500023,53.07070312500005],[4.70917968750004,53.036035156249994],[4.886425781249983,53.18330078124998],[4.886132812500023,53.07070312500005]]],[[[4.226171875000034,51.38647460937503],[3.448925781250068,51.54077148437503],[3.743945312500017,51.596044921875006],[4.27412109375004,51.47163085937498],[4.004785156250051,51.595849609374966],[4.182617187500057,51.61030273437498],[3.946875,51.810546875],[4.482812500000023,52.30917968749998],[4.76875,52.941308593749966],[5.061230468750068,52.96064453125001],[5.532031250000074,53.268701171874966],[6.062207031250068,53.407080078125006],[6.816210937500045,53.44116210937503],[7.197265625000028,53.28227539062499],[7.033007812500045,52.65136718749997],[6.710742187500045,52.61787109374998],[6.748828125000074,52.464013671874994],[7.035156250000057,52.38022460937498],[6.724511718749994,52.080224609374966],[6.800390625,51.96738281249998],[5.948730468750057,51.80268554687501],[6.198828125000034,51.45],[6.129980468750034,51.14741210937501],[5.857519531250034,51.030126953125006],[6.048437500000034,50.90488281250006],[5.993945312500017,50.75043945312504],[5.693554687500011,50.774755859375006],[5.796484375000034,51.153076171875],[5.214160156250045,51.278955078124966],[5.03095703125004,51.46909179687498],[4.226171875000034,51.38647460937503]]],[[[5.325781250000063,53.38574218750003],[5.190234375000074,53.39179687500001],[5.582617187500063,53.438085937500034],[5.325781250000063,53.38574218750003]]]]},"properties":{"name":"Netherlands","childNum":6,"cp":[5.0752777,52.358465]}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[5.085839843750023,60.30756835937501],[5.089062500000068,60.188769531250045],[4.95722656250004,60.44726562500006],[5.085839843750023,60.30756835937501]]],[[[4.958691406250068,61.084570312500034],[4.79902343750004,61.08271484375001],[4.861621093749989,61.19384765625],[4.958691406250068,61.084570312500034]]],[[[8.10273437500004,63.33759765625004],[7.804003906250017,63.413916015625034],[8.073535156250045,63.47080078124998],[8.10273437500004,63.33759765625004]]],[[[8.470800781250063,63.66713867187502],[8.287109375000028,63.68715820312502],[8.764648437500057,63.804638671874955],[8.78652343750008,63.703466796875034],[8.470800781250063,63.66713867187502]]],[[[11.2314453125,64.865869140625],[10.739843750000034,64.87031250000001],[11.02099609375,64.97871093749995],[11.2314453125,64.865869140625]]],[[[12.971777343750063,67.87412109375],[12.824023437500074,67.82124023437498],[13.068066406250068,68.07133789062505],[12.971777343750063,67.87412109375]]],[[[13.872851562500045,68.26533203125004],[14.096777343750034,68.218603515625],[13.229394531250051,67.995361328125],[13.300195312499994,68.16044921875007],[13.872851562500045,68.26533203125004]]],[[[15.207128906250006,68.943115234375],[15.222070312500023,68.61630859375003],[14.404687500000051,68.663232421875],[15.037792968750068,69.00053710937507],[15.207128906250006,68.943115234375]]],[[[15.760351562500006,68.56123046875001],[16.328906250000017,68.87631835937498],[16.519238281250068,68.63300781249998],[15.975292968750011,68.402490234375],[14.257519531249983,68.19077148437503],[15.412597656250028,68.61582031250003],[15.483007812500006,69.04345703125003],[16.04804687500001,69.30205078125002],[15.760351562500006,68.56123046875001]]],[[[17.503027343750034,69.59624023437502],[18.004101562500068,69.50498046874998],[17.95068359375003,69.19814453125],[17.487890625000063,69.19682617187499],[17.08251953124997,69.013671875],[16.81044921875008,69.07070312499997],[17.001757812500045,69.36191406250006],[17.36083984375003,69.38149414062497],[17.503027343750034,69.59624023437502]]],[[[29.956152343750006,69.79677734375002],[29.766210937500006,69.76752929687501],[29.835839843749994,69.90556640625005],[29.956152343750006,69.79677734375002]]],[[[20.779199218750023,70.08974609375002],[20.46425781250005,70.0765625],[20.492773437500006,70.20332031249995],[20.78603515625008,70.21953124999999],[20.779199218750023,70.08974609375002]]],[[[19.25507812500001,70.06640625000006],[19.607812500000023,70.019140625],[19.334765625000074,69.82026367187501],[18.784765625000034,69.57900390624997],[18.12988281250003,69.557861328125],[18.34931640625004,69.76787109374999],[18.67402343750004,69.78164062500002],[19.13271484375005,70.24414062500003],[19.25507812500001,70.06640625000006]]],[[[19.76748046875005,70.21669921875002],[20.005957031250034,70.07622070312502],[19.599023437499994,70.26616210937507],[19.76748046875005,70.21669921875002]]],[[[23.615332031250034,70.54931640625003],[23.15917968750003,70.28261718750005],[22.941015625000063,70.444580078125],[23.546679687500017,70.61708984374997],[23.615332031250034,70.54931640625003]]],[[[24.01757812500003,70.56738281249997],[23.716601562500074,70.561865234375],[23.778417968750063,70.74736328125005],[24.01757812500003,70.56738281249997]]],[[[23.440527343750063,70.81577148437503],[22.8291015625,70.54155273437505],[22.358691406250017,70.514794921875],[21.99453125000008,70.65712890624997],[23.440527343750063,70.81577148437503]]],[[[30.869726562500006,69.78344726562506],[30.860742187499994,69.53842773437503],[30.18017578124997,69.63583984375],[30.08730468750005,69.43286132812503],[29.38828125,69.29814453125005],[28.96582031250003,69.02197265625],[28.846289062500006,69.17690429687502],[29.33339843750005,69.47299804687503],[29.14160156250003,69.67143554687505],[27.747851562500045,70.06484375],[27.127539062500063,69.90649414062497],[26.525390625000057,69.91503906250003],[26.07246093750004,69.69155273437497],[25.748339843750017,68.99013671875],[24.94140625000003,68.59326171875006],[23.85400390625,68.80590820312503],[23.324023437500017,68.64897460937502],[22.410937500000074,68.719873046875],[21.59375,69.273583984375],[21.06611328125001,69.21411132812497],[21.065722656250017,69.04174804687503],[20.622167968750006,69.036865234375],[20.116699218750057,69.02089843750005],[20.348046875000023,68.84873046875003],[19.969824218750063,68.35639648437501],[18.303027343750045,68.55541992187497],[17.91669921875001,67.96489257812502],[17.324609375000023,68.10380859374999],[16.783593750000023,67.89501953125],[16.12744140625,67.42583007812507],[16.40351562500004,67.05498046875002],[15.422949218750006,66.48984374999998],[15.483789062500051,66.30595703124999],[14.543261718750045,66.12934570312498],[14.47968750000004,65.30146484374998],[13.650292968750023,64.58154296874997],[14.077636718750028,64.464013671875],[14.141210937500006,64.17353515624998],[13.960546875000063,64.01401367187498],[13.203515625000023,64.07509765625],[12.792773437500017,64],[12.175195312500051,63.595947265625],[11.999902343750051,63.29169921875001],[12.303515625000074,62.28559570312501],[12.155371093750006,61.720751953125045],[12.88076171875008,61.35229492187506],[12.706054687500028,61.059863281250074],[12.29414062500004,61.00268554687506],[12.588671874999989,60.450732421875045],[12.486132812500074,60.10678710937506],[11.680761718750034,59.59228515625003],[11.798144531250074,59.28989257812498],[11.64277343750004,58.92607421875002],[11.470703125000057,58.909521484375034],[11.388281250000063,59.036523437499966],[10.834472656250028,59.18393554687498],[10.595312500000063,59.764550781249966],[10.179394531250068,59.00927734375003],[9.842578125000017,58.95849609374997],[9.557226562500063,59.11269531250002],[9.65693359375004,58.97119140624997],[8.166113281250063,58.145312500000045],[7.0048828125,58.024218750000074],[6.877050781250006,58.15073242187498],[6.590527343750068,58.09731445312502],[6.659863281250068,58.26274414062499],[5.706835937500074,58.52363281250001],[5.55556640625008,58.975195312500006],[6.099023437500023,58.87026367187502],[6.363281250000028,59.00092773437501],[6.099414062500017,58.951953125000074],[5.88916015625,59.097949218750045],[5.951855468750068,59.299072265625],[6.415332031250074,59.547119140625],[5.17324218750008,59.16254882812498],[5.2421875,59.564306640625034],[5.472460937500017,59.713085937499955],[5.77216796875004,59.66093749999999],[6.216601562499989,59.818359375],[5.73046875,59.863085937500045],[6.348730468750006,60.35297851562504],[6.57363281250008,60.36059570312497],[6.526855468750057,60.152929687500034],[6.995703125,60.511962890625],[6.1533203125,60.34624023437499],[5.145800781250074,59.63881835937502],[5.205664062500006,60.087939453125045],[5.688574218749977,60.12319335937502],[5.285839843750011,60.20571289062505],[5.13710937500008,60.445605468750074],[5.648339843750051,60.68798828124997],[5.244042968750023,60.569580078125],[5.115820312500006,60.63598632812503],[5.008593750000017,61.038183593750006],[6.777832031250028,61.142431640625006],[7.038671875000063,60.952929687500045],[7.040136718750006,61.091162109375034],[7.604492187500057,61.210546875000034],[7.34658203125008,61.30058593749999],[7.442578125000011,61.43461914062502],[7.173535156250011,61.16596679687501],[6.599902343750017,61.28964843749998],[6.383496093750068,61.133886718750034],[5.451269531250034,61.10234375000002],[5.106738281250017,61.187548828125045],[5.002734375000074,61.43359375],[5.338671875000017,61.485498046874994],[4.927832031249977,61.71069335937506],[4.93007812499999,61.878320312499994],[6.01582031250004,61.7875],[6.730761718750045,61.86977539062505],[5.266894531250045,61.935595703125045],[5.143164062500063,62.159912109375],[5.908300781249977,62.41601562500003],[6.083496093750057,62.349609375],[6.580078125000057,62.407275390625045],[6.692382812500028,62.46806640624999],[6.136132812500051,62.40747070312497],[6.352929687500051,62.61113281249999],[7.653125,62.56401367187499],[7.538378906250074,62.67207031249998],[8.045507812500006,62.77124023437503],[6.734960937500006,62.72070312500003],[6.940429687500028,62.930468750000045],[7.571875,63.09951171875002],[8.100585937500028,63.090966796874966],[8.623144531250006,62.84624023437502],[8.158007812500017,63.16152343750005],[8.635546875000045,63.34233398437502],[8.360742187500023,63.498876953125034],[8.576171875000028,63.60117187499998],[9.135839843750006,63.593652343749966],[9.156054687500045,63.459326171875034],[9.696875,63.624560546875045],[10.020996093750028,63.39082031250004],[10.76015625000008,63.461279296875006],[10.725292968750068,63.625],[11.370703125000034,63.804833984374994],[11.175585937500074,63.89887695312498],[11.457617187500063,64.00297851562505],[11.306640625000028,64.04887695312499],[10.91425781250004,63.92109374999998],[10.934863281250045,63.770214843749955],[10.055078125000051,63.5126953125],[9.567285156250051,63.70615234374998],[10.565625,64.418310546875],[11.523828125000051,64.744384765625],[11.632910156250063,64.81391601562495],[11.296777343750051,64.75478515625],[11.489355468750034,64.975830078125],[12.15966796875,65.178955078125],[12.508398437499977,65.09941406250005],[12.915527343750057,65.33925781249997],[12.417578125000063,65.18408203124997],[12.133886718749977,65.27915039062498],[12.68886718750008,65.90219726562498],[13.033105468750051,65.95625],[12.783789062500063,66.10043945312506],[14.034179687500057,66.29755859374998],[13.118847656250011,66.23066406250004],[13.211425781250028,66.64082031250001],[13.959472656250028,66.79433593750002],[13.651562500000011,66.90708007812498],[14.10878906250008,67.11923828125003],[15.41572265625004,67.20244140625002],[14.441699218750045,67.27138671875005],[14.961914062500057,67.57426757812502],[15.59443359375004,67.34853515625005],[15.691503906250006,67.52138671875],[15.24873046875004,67.6021484375],[15.303906250000011,67.76528320312502],[14.854687500000068,67.66333007812506],[14.798925781250063,67.80932617187503],[15.13427734375,67.97270507812502],[15.621386718750017,67.94829101562502],[15.316015624999977,68.06875],[16.007910156250006,68.22871093750004],[16.312304687500017,67.88144531249998],[16.20380859375001,68.31674804687503],[17.552832031250063,68.42626953125006],[16.51435546875004,68.53256835937503],[18.101464843749994,69.15629882812499],[18.259765625,69.47060546875],[18.915917968750023,69.33559570312502],[18.614453125000068,69.49057617187498],[19.197265625000057,69.74785156249999],[19.722460937500017,69.78164062500002],[19.64150390625005,69.42402343750001],[20.324218750000057,69.94531249999997],[20.054492187500074,69.33266601562497],[20.486718750000023,69.54208984375],[20.739453124999983,69.52050781250003],[20.622070312500057,69.91391601562498],[21.163085937500057,69.88950195312498],[21.432910156250045,70.01318359375006],[21.974707031250034,69.83457031249998],[21.355761718750045,70.23339843749997],[22.321972656250068,70.264501953125],[22.684570312500057,70.374755859375],[23.35390625000008,69.98339843750003],[23.3291015625,70.20722656249995],[24.420019531250034,70.70200195312503],[24.263476562500017,70.82631835937497],[24.658007812500017,71.00102539062505],[25.264648437500057,70.843505859375],[25.768164062500063,70.85317382812502],[25.043847656250023,70.10903320312502],[26.66132812500004,70.93974609374999],[26.585058593750034,70.41000976562498],[26.989355468750063,70.51137695312502],[27.183691406250034,70.74404296875],[27.546484375000063,70.80400390625005],[27.23525390625008,70.94721679687498],[27.59707031250005,71.09130859375003],[28.392285156250068,70.97529296875004],[27.898046875,70.67792968750001],[28.271777343750017,70.66796875000003],[28.192968750000034,70.24858398437505],[28.83154296875003,70.86396484375001],[29.7375,70.646826171875],[30.065136718750097,70.70297851562498],[30.944140625000017,70.27441406249997],[30.262988281250074,70.12470703125004],[28.804296875000063,70.09252929687506],[29.601367187500017,69.97675781249998],[29.792089843750063,69.727880859375],[30.08828125,69.71757812500005],[30.237597656250017,69.86220703125002],[30.428320312500006,69.722265625],[30.869726562500006,69.78344726562506]]],[[[25.58632812500005,71.14208984375],[26.13378906250003,70.99580078125004],[25.582031250000057,70.960791015625],[25.31494140625,71.03413085937504],[25.58632812500005,71.14208984375]]],[[[-8.953564453124983,70.83916015625002],[-8.001367187499966,71.17768554687495],[-8.002099609374937,71.04125976562497],[-8.953564453124983,70.83916015625002]]],[[[19.219335937500006,74.39101562500002],[18.86123046875008,74.51416015624997],[19.182910156250045,74.51791992187503],[19.219335937500006,74.39101562500002]]],[[[21.60810546875004,78.59570312499997],[22.04316406250004,78.57695312500007],[22.29951171875004,78.22817382812497],[23.451953125000074,78.14946289062502],[23.11669921874997,77.99150390624999],[24.901855468750057,77.756591796875],[22.55371093750003,77.26665039062502],[22.685351562500045,77.55351562500002],[20.928125,77.45966796874998],[21.653125,77.92353515624998],[20.22792968750005,78.47783203125005],[21.60810546875004,78.59570312499997]]],[[[11.250292968750017,78.610693359375],[12.116406250000068,78.232568359375],[11.121289062500011,78.46328125],[10.558203125000063,78.90292968750003],[11.250292968750017,78.610693359375]]],[[[29.047070312500068,78.91206054687504],[29.69667968750005,78.90473632812495],[27.88906250000005,78.8521484375],[28.511132812500023,78.96733398437502],[29.047070312500068,78.91206054687504]]],[[[16.786718750000034,79.90673828125],[17.834570312499977,79.80004882812503],[17.66875,79.38593750000004],[18.39736328125008,79.60517578125001],[18.677832031250006,79.26171875000003],[19.893554687500057,79.05620117187499],[20.61103515625004,79.10664062499998],[21.388769531250034,78.74042968749998],[19.67675781250003,78.60957031249995],[16.700488281250045,76.57929687499995],[14.365820312500034,77.23447265625003],[13.995703125000034,77.50820312500002],[14.69501953125004,77.525048828125],[14.920800781250023,77.68881835937506],[17.033300781250006,77.79770507812503],[16.91406250000003,77.89799804687505],[14.089941406250063,77.77138671875],[13.680566406250051,78.028125],[14.307226562500006,78.00507812500001],[15.783886718750011,78.32705078125005],[17.00292968750003,78.36938476562497],[16.44863281250008,78.50356445312502],[16.78261718750008,78.66362304687505],[15.417382812500023,78.47324218749998],[15.384179687500023,78.77119140625001],[15.01630859375004,78.63012695312497],[14.689257812500017,78.720947265625],[14.638281250000034,78.41459960937502],[14.110449218750063,78.27089843749997],[13.150195312499989,78.2375],[11.365429687500011,78.95039062500004],[12.323437500000068,78.91425781249995],[12.083984375000028,79.26752929687498],[11.579785156250068,79.28349609375005],[11.208105468750034,79.12963867187503],[10.737597656250017,79.52016601562502],[10.804003906250045,79.79877929687504],[11.150390625,79.71699218749998],[11.702343750000011,79.82060546875005],[12.287792968750068,79.713134765625],[12.279980468749983,79.81596679687507],[13.692871093749972,79.860986328125],[13.777539062500011,79.71528320312498],[12.555371093750068,79.56948242187502],[13.333789062500017,79.57480468750006],[14.029589843750017,79.34414062500005],[14.59365234375008,79.79873046875002],[16.34375,78.97612304687502],[15.816113281250011,79.68183593750001],[16.245703125000034,80.04946289062502],[16.786718750000034,79.90673828125]]],[[[32.52597656250006,80.119140625],[31.48193359374997,80.10791015625003],[33.62929687499999,80.21743164062497],[32.52597656250006,80.119140625]]],[[[20.897851562500023,80.24995117187501],[22.289746093749983,80.04921874999997],[22.450781250000034,80.40224609375005],[23.00800781250004,80.473974609375],[23.114550781250074,80.18696289062498],[24.29755859375004,80.36040039062505],[26.86083984375,80.16000976562498],[27.19863281250008,79.90659179687506],[25.641210937500034,79.40302734374995],[23.94775390625,79.19428710937498],[22.903710937500023,79.23066406250001],[22.865527343750045,79.41186523437497],[20.861132812500017,79.39785156249997],[20.128222656250074,79.489599609375],[19.674609375000045,79.591162109375],[20.784082031250023,79.74858398437502],[18.725,79.7607421875],[18.25537109375,79.92919921875003],[18.855957031250057,80.03662109375],[17.91689453125005,80.14311523437502],[19.343359375000063,80.11640624999998],[19.733300781249994,80.47783203124999],[20.897851562500023,80.24995117187501]]]]},"properties":{"name":"Norway","childNum":27}},{"geometry":{"type":"Polygon","coordinates":[[[87.984375,27.133935546874994],[87.9931640625,27.086083984374994],[88.11103515625001,26.928466796875],[88.1572265625,26.807324218749997],[88.16152343750002,26.724804687499997],[88.11152343750001,26.58642578125],[88.05488281250001,26.430029296875],[88.02695312500003,26.39501953125],[87.9951171875,26.382373046874996],[87.28740234374999,26.360302734374997],[87.01640624999999,26.555419921875],[86.70136718750001,26.43505859375],[86.00732421875,26.649365234374997],[85.79453125000003,26.604150390624994],[85.7373046875,26.63974609375],[85.6484375,26.829003906249994],[85.56845703125003,26.83984375],[85.29296875,26.741015625],[85.19179687500002,26.766552734374997],[84.68535156249999,27.041015625],[84.65380859375,27.091699218749994],[84.65478515625,27.203662109374996],[84.64072265625003,27.249853515625],[84.61015624999999,27.298681640625],[84.48085937500002,27.348193359374996],[84.22978515624999,27.42783203125],[84.09101562500001,27.491357421874994],[83.82880859375001,27.377832031249994],[83.74697265625002,27.395947265624997],[83.55166015625002,27.456347656249996],[83.44716796875002,27.46533203125],[83.38398437500001,27.44482421875],[83.36943359374999,27.41025390625],[83.28974609375001,27.370996093749994],[82.7333984375,27.518994140624997],[82.71083984375002,27.5966796875],[82.67734375000003,27.6734375],[82.6298828125,27.687060546874996],[82.45136718750001,27.671826171874997],[82.28769531250003,27.756542968749997],[82.11191406250003,27.864941406249997],[82.03701171875002,27.900585937499997],[81.98769531250002,27.913769531249997],[81.94521484375002,27.899267578125],[81.896875,27.874462890624997],[81.85263671875003,27.867089843749994],[81.1689453125,28.335009765624996],[80.58701171875003,28.649609375],[80.51787109374999,28.665185546874994],[80.49580078125001,28.635791015624996],[80.47910156250003,28.604882812499994],[80.41855468750003,28.612011718749997],[80.32480468750003,28.66640625],[80.2265625,28.723339843749997],[80.07070312500002,28.83017578125],[80.05166015625002,28.8703125],[80.08457031250003,28.994189453124996],[80.13046875000003,29.100390625],[80.16953125000003,29.124316406249996],[80.23300781250003,29.194628906249996],[80.25595703125003,29.318017578124994],[80.2548828125,29.42333984375],[80.31689453125,29.572070312499996],[80.40185546875,29.730273437499996],[80.54902343750001,29.899804687499994],[80.81992187500003,30.119335937499997],[80.84814453125,30.13974609375],[80.90761718750002,30.171923828124996],[80.96611328124999,30.180029296875],[81.17714843750002,30.039892578125],[81.25507812500001,30.093310546874996],[81.41718750000001,30.337597656249997],[81.64189453124999,30.3875],[81.85488281250002,30.36240234375],[82.04335937500002,30.3267578125],[82.220703125,30.063867187499994],[83.15546875000001,29.612646484375],[83.58349609375,29.18359375],[83.93593750000002,29.279492187499997],[84.02197265625,29.253857421874997],[84.10136718749999,29.219970703125],[84.12783203125002,29.156298828124996],[84.17558593749999,29.036376953125],[84.22871093750001,28.911767578124994],[84.796875,28.560205078124994],[84.85507812500003,28.553613281249994],[85.06914062499999,28.609667968749996],[85.12636718750002,28.60263671875],[85.15908203125002,28.592236328124997],[85.16015625,28.571875],[85.12148437500002,28.484277343749994],[85.08857421875001,28.372265625],[85.12246093750002,28.315966796874996],[85.21210937500001,28.292626953124994],[85.41064453125,28.276025390624994],[85.67832031250003,28.27744140625],[85.75947265625001,28.220654296874997],[85.84023437500002,28.1353515625],[85.92167968749999,27.989697265624997],[85.9541015625,27.92822265625],[85.99453125000002,27.910400390625],[86.06416015625001,27.934716796874994],[86.07871093750003,28.08359375],[86.13701171874999,28.11435546875],[86.21796875000001,28.0220703125],[86.32861328125,27.959521484374996],[86.40869140625,27.928662109374997],[86.51689453124999,27.963525390624994],[86.55449218749999,28.085205078125],[86.61445312500001,28.10302734375],[86.69052734375003,28.094921875],[86.71962890625002,28.070654296875],[86.75039062500002,28.0220703125],[86.93378906250001,27.968457031249997],[87.02011718750003,27.928662109374997],[87.14140624999999,27.838330078124997],[87.29072265625001,27.821923828124994],[87.62255859375,27.815185546875],[87.86074218750002,27.886083984375],[88.10976562500002,27.87060546875],[87.984375,27.133935546874994]]]},"properties":{"name":"Nepal","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[169.17822265624997,-52.497265625],[169.12753906250006,-52.570312499999964],[169.02177734375002,-52.49541015624998],[169.17822265624997,-52.497265625]]],[[[166.22109375,-50.76152343749997],[166.2428710937501,-50.84570312499998],[165.88916015624997,-50.80771484374996],[166.10136718750002,-50.538964843750016],[166.26748046875005,-50.558593750000014],[166.22109375,-50.76152343749997]]],[[[168.14492187500005,-46.862207031249966],[168.04316406250004,-46.9326171875],[168.2409179687501,-47.070019531250026],[167.52197265624997,-47.258691406249994],[167.80078125000003,-46.90654296875002],[167.78398437500007,-46.699804687500006],[167.9557617187501,-46.69443359374998],[168.14492187500005,-46.862207031249966]]],[[[166.97949218749997,-45.17968750000003],[167.02265625000004,-45.299804687499986],[166.89267578125012,-45.24052734374999],[166.97949218749997,-45.17968750000003]]],[[[-176.17763671874997,-43.74033203124998],[-176.38173828124997,-43.86679687499998],[-176.40737304687497,-43.7609375],[-176.516552734375,-43.78476562499996],[-176.33359375000003,-44.02529296875004],[-176.51552734374997,-44.11660156249998],[-176.62934570312495,-44.036132812500014],[-176.55512695312504,-43.85195312499998],[-176.84765625000003,-43.82392578125004],[-176.56611328124995,-43.717578125000045],[-176.17763671874997,-43.74033203124998]]],[[[173.91464843750018,-40.86367187500004],[173.78085937500012,-40.921777343749966],[173.964453125,-40.71298828124998],[173.91464843750018,-40.86367187500004]]],[[[173.11533203125006,-41.27929687499997],[173.94716796875005,-40.92412109375],[173.79785156250003,-41.271972656249986],[173.99941406250005,-40.99326171874996],[174.30253906249996,-41.019531249999986],[174.03857421875003,-41.24189453125],[174.37011718750009,-41.1037109375],[174.06933593750009,-41.42949218750002],[174.08369140625015,-41.67080078124998],[174.2831054687501,-41.740625],[173.22119140624997,-42.976562499999986],[172.62402343749997,-43.27246093749996],[172.73476562500005,-43.35478515625003],[172.52666015625002,-43.464746093749966],[172.69345703125006,-43.444335937499986],[172.80703125000005,-43.620996093749994],[173.07324218750003,-43.676171874999966],[173.065625,-43.87460937499998],[172.50273437500002,-43.84365234374998],[172.48037109375,-43.726660156250034],[172.29658203125004,-43.867871093750026],[172.035546875,-43.70175781250002],[172.17978515625006,-43.895996093749986],[171.24072265624997,-44.26416015625003],[171.14628906250002,-44.9123046875],[170.99902343750003,-44.91142578124999],[171.11328125000003,-45.03925781250001],[170.7005859375,-45.68427734374997],[170.77626953125005,-45.870898437499974],[170.4191406250001,-45.94101562499996],[169.68662109375006,-46.55166015625002],[169.34228515625003,-46.62050781250001],[168.38212890625007,-46.60537109374995],[168.1891601562501,-46.362207031249966],[167.8419921875001,-46.366210937499986],[167.539453125,-46.14853515624996],[167.36894531250007,-46.24150390624999],[166.73154296875006,-46.19785156249998],[166.91669921875004,-45.95722656249998],[166.64990234374997,-46.04169921875004],[166.71796875000004,-45.88935546875001],[166.49316406249997,-45.9638671875],[166.48828124999997,-45.83183593750002],[167.0033203125,-45.71210937500004],[166.79765625000002,-45.64560546874999],[166.99082031250012,-45.531738281249986],[166.73398437500012,-45.54355468749999],[166.74306640625,-45.46845703124997],[166.91992187499997,-45.40791015624998],[166.86923828125006,-45.31123046875],[167.15566406250005,-45.410937499999974],[167.23007812500012,-45.29033203125],[167.02587890624997,-45.12363281249998],[167.25947265625004,-45.08222656249997],[167.19453125000004,-44.963476562500034],[167.41074218750006,-44.82792968750003],[167.4662109375,-44.958300781250045],[167.48496093750006,-44.77138671874998],[167.78701171875,-44.59501953125002],[167.90898437500002,-44.66474609375001],[167.85654296875012,-44.50068359374998],[168.45742187500005,-44.030566406250045],[169.17890625000004,-43.9130859375],[169.16953125000006,-43.77705078125],[169.83388671875,-43.53701171875004],[170.24023437499997,-43.163867187500045],[170.39609375000012,-43.18222656249996],[170.30283203125012,-43.10761718750004],[170.61181640625003,-43.091796875000014],[170.5236328125001,-43.00898437500001],[170.6654296875,-42.961230468749974],[170.73525390625005,-43.029785156249986],[170.96992187500004,-42.71835937499996],[171.01171875000003,-42.88505859374999],[171.027734375,-42.696093750000045],[171.31337890625005,-42.460156250000026],[171.48623046875,-41.7947265625],[171.94804687500002,-41.53867187499996],[172.13945312500002,-40.947265625000014],[172.640625,-40.51826171875001],[172.94365234375007,-40.51875],[172.73261718750004,-40.54375],[172.70439453125002,-40.6677734375],[172.988671875,-40.84824218749999],[173.11533203125006,-41.27929687499997]]],[[[175.54316406250015,-36.279296874999986],[175.34619140624997,-36.217773437499986],[175.3895507812501,-36.07773437499996],[175.54316406250015,-36.279296874999986]]],[[[173.26943359375,-34.93476562499998],[173.44785156250012,-34.844335937500034],[173.47265625000003,-34.94697265624998],[174.10400390625003,-35.14287109375002],[174.1431640625,-35.3],[174.32031250000003,-35.246679687500034],[174.58066406250018,-35.78554687500004],[174.39580078124996,-35.79736328124996],[174.8021484375,-36.30947265625001],[174.72246093750007,-36.84121093749998],[175.29951171875004,-36.99326171874996],[175.38535156250012,-37.206933593749966],[175.54248046874997,-37.2013671875],[175.46083984375005,-36.475683593750034],[175.77216796875004,-36.73515625],[176.10839843749997,-37.64511718749998],[177.27402343750012,-37.993457031249974],[178.0091796875,-37.55488281249998],[178.53623046875006,-37.69208984375004],[178.26767578125006,-38.551171875],[177.976171875,-38.72226562500005],[177.90878906250012,-39.23955078125],[177.52294921875003,-39.07382812499999],[177.07675781250012,-39.22177734375002],[176.93925781249996,-39.55527343750002],[177.10986328125009,-39.673144531250045],[176.8421875000001,-40.15781250000002],[175.98291015625003,-41.21328125000002],[175.30976562499998,-41.610644531249974],[175.16562500000012,-41.41738281249995],[174.88134765624997,-41.42402343749997],[174.8656250000001,-41.223046874999966],[174.63535156250012,-41.28945312499999],[175.1625,-40.62158203125],[175.25410156250004,-40.28935546875],[175.1559570312501,-40.11494140625],[175.00927734375009,-39.95214843749996],[173.93437500000013,-39.50908203125002],[173.76367187499997,-39.31875],[173.84433593750006,-39.13935546875001],[174.39843749999997,-38.96259765624998],[174.59736328124998,-38.78505859374995],[174.80166015625005,-37.895507812500014],[174.92802734375002,-37.80449218750003],[174.58583984374994,-37.09775390625002],[174.73427734375,-37.21523437499998],[174.92890625000004,-37.084765625000045],[174.78203125000013,-36.94375],[174.47558593750009,-36.94189453124997],[174.1888671875001,-36.492285156250034],[174.4015625000001,-36.60195312499999],[174.39277343750004,-36.24003906249999],[174.26787109375002,-36.16308593750003],[174.25371093749996,-36.24912109374998],[174.03642578125013,-36.12246093750001],[173.91445312499994,-35.908691406249986],[173.91728515625002,-36.01816406249999],[174.16640624999994,-36.327636718749986],[174.05468749999991,-36.35976562500004],[173.41220703125012,-35.542578125],[173.62617187500004,-35.31914062499996],[173.3763671875001,-35.50009765624996],[173.31396484375003,-35.44335937499996],[173.11669921874997,-35.205273437500026],[173.190625,-35.01621093749998],[172.70595703125005,-34.45517578124998],[173.04394531249997,-34.429101562499994],[172.96376953125,-34.53515625000003],[173.26943359375,-34.93476562499998]]]]},"properties":{"name":"New Zealand","childNum":9}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[58.722070312499994,20.21875],[58.640917968750074,20.210693359375057],[58.64121093750006,20.33735351562501],[58.884375,20.680566406250023],[58.95078125000006,20.516162109375017],[58.722070312499994,20.21875]]],[[[56.38798828125002,24.97919921875004],[56.640625,24.4703125],[57.12304687500003,23.980712890625],[58.773046875,23.517187499999977],[59.42939453125004,22.660839843749955],[59.82324218749997,22.50898437500004],[59.8,22.21992187500001],[59.37148437500005,21.498828125000017],[58.89570312500004,21.11279296874997],[58.47421875000006,20.406884765624966],[58.20898437500003,20.423974609374994],[58.245019531249994,20.599218749999977],[58.16943359375003,20.58950195312505],[57.86181640624997,20.24414062500003],[57.71416015625002,19.678417968749983],[57.81162109375006,19.01708984374997],[56.825976562500074,18.753515625],[56.3834960937501,17.98798828125001],[55.479101562500006,17.84326171875003],[55.25537109375003,17.58564453125004],[55.275195312500074,17.320898437500006],[55.06416015625004,17.038916015625034],[54.06816406250002,17.005517578124966],[53.60986328124997,16.75996093750004],[53.08564453125004,16.648388671874955],[51.977636718750006,18.996142578125074],[54.97734375000002,19.995947265625006],[55.64101562499999,22.001855468749994],[55.185839843750074,22.7041015625],[55.1999023437501,23.034765625000034],[55.53164062499999,23.81904296875001],[55.4684570312501,23.94111328125001],[55.98515625000002,24.063378906249966],[55.92861328125005,24.215136718750074],[55.76083984375006,24.24267578125],[55.795703125000074,24.868115234374955],[56.00058593750006,24.953222656249977],[56.06386718750005,24.73876953125],[56.38798828125002,24.97919921875004]]],[[[56.29785156250003,25.650683593750045],[56.144628906250006,25.690527343750006],[56.16748046875003,26.047460937499977],[56.08046875,26.06264648437505],[56.41308593749997,26.351171875000034],[56.29785156250003,25.650683593750045]]]]},"properties":{"name":"Oman","childNum":3}},{"geometry":{"type":"Polygon","coordinates":[[[73.08961802927895,36.86435907947333],[73.08203125000107,36.43949943991182],[72.31128647748268,35.77290936638241],[73.13410859949555,34.82510160558277],[73.19895048106557,33.88770931468204],[74.00809389139292,33.25375789331485],[73.98984375,33.22119140625],[74.30361328125002,32.991796875],[74.30546875000002,32.810449218749994],[74.35458984375,32.768701171874994],[74.58828125000002,32.753222656249996],[74.632421875,32.770898437499994],[74.66328125000001,32.757666015625],[74.64335937500002,32.607714843749996],[74.68574218750001,32.493798828124994],[74.78886718750002,32.4578125],[74.9873046875,32.462207031249996],[75.33349609375,32.279199218749994],[75.25410156250001,32.14033203125],[75.13876953125,32.104785156249996],[75.07148437500001,32.08935546875],[74.73945312500001,31.948828125],[74.6357421875,31.88974609375],[74.55556640625002,31.818554687499997],[74.5259765625,31.76513671875],[74.50996093750001,31.712939453124996],[74.58183593750002,31.52392578125],[74.59394531250001,31.465380859374996],[74.53496093750002,31.261376953124994],[74.51767578125,31.185595703124996],[74.6103515625,31.112841796874996],[74.62578125000002,31.06875],[74.6328125,31.03466796875],[74.509765625,30.959667968749997],[74.38037109375,30.893408203125],[74.33935546875,30.8935546875],[74.00898437500001,30.519677734374994],[73.89931640625002,30.435351562499996],[73.88271484375002,30.3521484375],[73.92460937500002,30.28164062499999],[73.93339843750002,30.222070312499994],[73.88652343750002,30.162011718749994],[73.8091796875,30.093359375],[73.38164062500002,29.934375],[72.9033203125,29.028759765624997],[72.34189453125,28.751904296874997],[72.2919921875,28.697265625],[72.128515625,28.346337890624994],[71.94804687500002,28.177294921874996],[71.88886718750001,28.0474609375],[71.87031250000001,27.9625],[71.54296875,27.869873046875],[71.18476562500001,27.831640625],[70.87490234375002,27.714453125],[70.79794921875,27.709619140624994],[70.69160156250001,27.768994140624997],[70.62910156250001,27.937451171874997],[70.40371093750002,28.025048828124994],[70.24433593750001,27.934130859374996],[70.1939453125,27.894873046875],[70.14453125,27.849023437499994],[70.0498046875,27.694726562499994],[69.89628906250002,27.4736328125],[69.56796875,27.174609375],[69.47001953125002,26.804443359375],[70.11464843750002,26.548046875],[70.14921875000002,26.347558593749994],[70.1001953125,25.910058593749994],[70.2646484375,25.70654296875],[70.3251953125,25.685742187499997],[70.44853515625002,25.681347656249997],[70.505859375,25.685302734375],[70.56953125000001,25.705957031249994],[70.6484375,25.666943359374997],[70.65205078125001,25.422900390625003],[70.87773437500002,25.06298828125],[70.95087890625001,24.8916015625],[71.02070312500001,24.75766601562499],[71.0478515625,24.687744140625],[71.00234375000002,24.65390625],[70.97636718750002,24.61875],[70.96982421875,24.571875],[71.04531250000002,24.429980468750003],[71.04404296875,24.400097656249997],[70.98281250000002,24.361035156249997],[70.928125,24.362353515625003],[70.88623046875,24.34375],[70.80507812500002,24.261962890625],[70.76728515625001,24.245410156250003],[70.71630859375,24.237988281249997],[70.65947265625002,24.24609375],[70.57929687500001,24.279052734375],[70.55585937500001,24.331103515625003],[70.5650390625,24.385791015625003],[70.54677734375002,24.41831054687499],[70.2890625,24.35629882812499],[70.0982421875,24.2875],[69.80517578125,24.165234375],[69.71621093750002,24.172607421875],[69.63417968750002,24.22519531249999],[69.5591796875,24.273095703124994],[69.44345703125,24.275390625],[69.23505859375001,24.268261718749997],[69.11953125000002,24.26865234374999],[69.05156250000002,24.286328125],[68.98457031250001,24.273095703124994],[68.90078125000002,24.292431640624997],[68.86347656250001,24.266503906249994],[68.82832031250001,24.26401367187499],[68.78115234375002,24.313720703125],[68.75898437500001,24.30722656249999],[68.73964843750002,24.2919921875],[68.728125,24.265625],[68.72412109375,23.96469726562499],[68.48867187500002,23.967236328124997],[68.38125,23.950878906249997],[68.28251953125002,23.927978515625],[68.1650390625,23.857324218749994],[68.11552734375002,23.753369140624997],[67.8599609375,23.90268554687499],[67.66845703125,23.810986328124997],[67.309375,24.1748046875],[67.171484375,24.756103515625],[66.70302734375002,24.8609375],[66.69863281250002,25.226318359375],[66.32421875,25.601806640625],[66.13115234375002,25.49326171874999],[66.46767578125002,25.4453125],[64.77666015625002,25.307324218749997],[64.65898437500002,25.18408203125],[64.059375,25.40292968749999],[63.556640625,25.353173828124994],[63.49140625000001,25.210839843749994],[61.56689453125,25.186328125],[61.587890625,25.20234375],[61.61542968750001,25.2861328125],[61.64013671875,25.584619140624994],[61.67138671875,25.6923828125],[61.66181640625001,25.751269531250003],[61.66865234375001,25.768994140624997],[61.73769531250002,25.82109375],[61.75439453125,25.84335937499999],[61.78076171875,25.995849609375],[61.80996093750002,26.165283203125],[61.842382812500006,26.225927734375],[62.1259765625,26.368994140625],[62.239355468750006,26.35703125],[62.31230468750002,26.490869140624994],[63.168066406250006,26.665576171874996],[63.186132812500006,26.837597656249997],[63.24160156250002,26.86474609375],[63.25039062500002,26.879248046875],[63.24208984375002,27.077685546874996],[63.30517578125,27.124560546874996],[63.30156250000002,27.15146484375],[63.25625,27.207910156249994],[63.19609375000002,27.243945312499996],[63.16679687500002,27.252490234374996],[62.75273437500002,27.265625],[62.782324218750006,27.800537109375],[62.7625,28.202050781249994],[61.88984375000001,28.546533203124994],[61.15214843750002,29.542724609375],[61.0341796875,29.663427734375],[60.843359375,29.858691406249996],[61.22441406250002,29.749414062499994],[62.0009765625,29.530419921874994],[62.4765625,29.408349609374994],[63.56757812500001,29.497998046874997],[64.09873046875,29.391943359375],[64.39375,29.544335937499994],[65.09550781250002,29.559472656249994],[66.23125,29.86572265625],[66.346875,30.802783203124996],[66.82929687500001,31.263671875],[67.45283203125001,31.234619140625],[67.737890625,31.343945312499997],[67.57822265625,31.506494140624994],[68.16103515625002,31.802978515625],[68.59765625,31.802978515625],[68.86894531250002,31.634228515624997],[69.279296875,31.936816406249996],[69.24140625000001,32.433544921875],[69.5015625,33.020068359374996],[70.26113281250002,33.289013671875],[69.8896484375,34.007275390625],[70.65400390625001,33.952294921874994],[71.05156250000002,34.049707031249994],[71.095703125,34.369433593749996],[70.965625,34.53037109375],[71.62050781250002,35.183007812499994],[71.57197265625001,35.546826171875],[71.18505859375,36.04208984375],[71.23291015625,36.12177734375],[72.24980468750002,36.734716796875],[73.08961802927895,36.86435907947333]]]},"properties":{"name":"Pakistan","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-81.60327148437497,7.332812499999989],[-81.85205078125003,7.453320312500026],[-81.812158203125,7.59238281250002],[-81.72875976562494,7.62119140625002],[-81.60327148437497,7.332812499999989]]],[[[-78.89833984375002,8.27426757812502],[-78.960595703125,8.435839843749989],[-78.88325195312495,8.460253906249989],[-78.89833984375002,8.27426757812502]]],[[[-77.37421874999993,8.65830078125002],[-77.47851562499994,8.498437500000037],[-77.19599609374995,7.972460937500003],[-77.53828124999995,7.56625976562502],[-77.76191406249995,7.698828125000034],[-77.90117187499999,7.229345703125048],[-78.42158203124995,8.060986328125011],[-78.28735351562497,8.091796874999972],[-78.14189453125002,8.386083984374977],[-77.76054687499993,8.133251953124983],[-78.09946289062498,8.496972656250009],[-78.22304687500002,8.396630859374994],[-78.39921874999993,8.505664062500003],[-78.40986328124998,8.35532226562502],[-78.51406249999997,8.628173828125],[-79.08637695312495,8.997167968750034],[-79.50708007812494,8.97006835937502],[-79.68745117187493,8.850976562500009],[-79.81591796875,8.639208984375031],[-79.75043945312498,8.595507812500017],[-80.458984375,8.213867187499972],[-80.45810546875,8.077050781249994],[-80.01123046875,7.500048828125031],[-80.66669921874995,7.225683593750006],[-80.90122070312503,7.277148437500017],[-81.06386718749994,7.89975585937502],[-81.26840820312495,7.625488281250014],[-81.50415039062503,7.721191406249972],[-81.72763671875,8.137548828124977],[-82.15986328124995,8.19482421875],[-82.23544921874998,8.311035156250057],[-82.67954101562503,8.321972656249969],[-82.86611328124994,8.246337890625014],[-82.87934570312498,8.07065429687502],[-83.02734375,8.337744140624991],[-82.86162109374999,8.453515625000037],[-82.84477539062493,8.489355468749963],[-82.85571289062494,8.635302734375031],[-82.91704101562502,8.740332031250034],[-82.88198242187497,8.805322265625037],[-82.72783203125002,8.916064453125031],[-82.78305664062498,8.990283203124974],[-82.88134765625003,9.055859375000011],[-82.94033203124997,9.060107421874989],[-82.93984374999994,9.449169921875026],[-82.92504882812494,9.469042968749989],[-82.88896484374999,9.481005859375017],[-82.86015625,9.511474609375014],[-82.84399414062497,9.570800781250014],[-82.801025390625,9.591796875000028],[-82.64409179687502,9.505859375000028],[-82.56357421875003,9.576660156249972],[-82.50034179687503,9.523242187500017],[-82.37080078124993,9.428564453124991],[-82.33974609375,9.209179687499983],[-82.18813476562502,9.191748046874977],[-82.24418945312499,9.031494140625014],[-82.07788085937503,8.93486328124996],[-81.78022460937495,8.957226562499983],[-81.89448242187495,9.140429687500003],[-81.35478515624996,8.78056640624996],[-80.83867187499999,8.887207031250014],[-80.12709960937497,9.20991210937504],[-79.57729492187497,9.597851562500026],[-78.08276367187494,9.236279296874997],[-77.37421874999993,8.65830078125002]]]]},"properties":{"name":"Panama","childNum":3}},{"geometry":{"type":"Polygon","coordinates":[[[-73.137353515625,-6.4658203125],[-73.75810546874999,-6.90576171875],[-73.79301757812499,-7.135058593750003],[-73.758203125,-7.172753906250009],[-73.72041015625,-7.309277343750011],[-73.964306640625,-7.37890625],[-73.95849609375,-7.506640625],[-73.98173828124999,-7.535742187500006],[-74.00205078124999,-7.556054687500009],[-73.98173828124999,-7.585058593750006],[-73.946875,-7.611230468750009],[-73.89462890624999,-7.65478515625],[-73.82207031249999,-7.738964843750011],[-73.76689453124999,-7.753515625],[-73.72041015625,-7.782519531250003],[-73.73203125,-7.875390625],[-73.54912109374999,-8.345800781250006],[-73.39814453125,-8.458984375],[-73.36040039062499,-8.479296875],[-73.351708984375,-8.51416015625],[-73.35673828124999,-8.566992187500006],[-73.30244140625,-8.654003906250011],[-73.203125,-8.719335937500006],[-73.0705078125,-8.8828125],[-72.9740234375,-8.9931640625],[-72.970361328125,-9.1201171875],[-73.08984375,-9.265722656250006],[-73.209423828125,-9.411425781250003],[-72.379052734375,-9.51015625],[-72.181591796875,-10.003710937500003],[-71.33940429687499,-9.988574218750003],[-71.11528320312499,-9.852441406250009],[-71.041748046875,-9.81875],[-70.6369140625,-9.478222656250011],[-70.60791015625,-9.463671875],[-70.54111328124999,-9.4375],[-70.57016601562499,-9.48984375],[-70.592236328125,-9.54345703125],[-70.59916992187499,-9.620507812500009],[-70.642333984375,-11.01025390625],[-70.59653320312499,-10.976855468750003],[-70.53325195312499,-10.946875],[-70.45087890625,-11.024804687500009],[-70.39228515625,-11.05859375],[-70.3419921875,-11.066699218750003],[-70.29038085937499,-11.064257812500003],[-70.22006835937499,-11.04765625],[-70.06630859375,-10.982421875],[-69.9603515625,-10.929882812500011],[-69.839794921875,-10.933398437500003],[-69.6740234375,-10.9541015625],[-69.57861328125,-10.951757812500006],[-68.68525390625,-12.501953125],[-68.97861328124999,-12.880078125000011],[-69.07412109375,-13.682812500000011],[-68.87089843749999,-14.169726562500003],[-69.35947265624999,-14.7953125],[-69.37470703125,-14.962988281250006],[-69.17246093749999,-15.236621093750003],[-69.4208984375,-15.640625],[-69.21757812499999,-16.14912109375001],[-68.8427734375,-16.337890625],[-69.03291015625,-16.47597656250001],[-69.020703125,-16.6421875],[-69.62485351562499,-17.2001953125],[-69.645703125,-17.24853515625],[-69.521923828125,-17.388964843750003],[-69.510986328125,-17.46035156250001],[-69.51108398437499,-17.5048828125],[-69.5109375,-17.50605468750001],[-69.58642578125,-17.5732421875],[-69.684765625,-17.64980468750001],[-69.85209960937499,-17.70380859375001],[-69.80258789062499,-17.990234375],[-69.92636718749999,-18.2060546875],[-70.41826171874999,-18.34560546875001],[-71.33696289062499,-17.68251953125001],[-71.5322265625,-17.29433593750001],[-72.46767578125,-16.708105468750006],[-73.727685546875,-16.20166015625],[-75.104248046875,-15.411914062500003],[-75.533642578125,-14.89921875],[-75.93388671874999,-14.63359375],[-76.37646484375,-13.863085937500003],[-76.259228515625,-13.802832031250006],[-76.2236328125,-13.371191406250006],[-76.83212890624999,-12.348730468750006],[-77.152734375,-12.060351562500003],[-77.2203125,-11.663378906250003],[-77.633203125,-11.287792968750011],[-77.736083984375,-10.83671875],[-78.18559570312499,-10.089062500000011],[-78.76225585937499,-8.616992187500003],[-79.37724609374999,-7.835546875],[-79.99497070312499,-6.768945312500009],[-81.142041015625,-6.056738281250006],[-81.164306640625,-5.875292968750003],[-80.9306640625,-5.8408203125],[-80.88193359374999,-5.635058593750003],[-81.33662109375,-4.66953125],[-81.283203125,-4.322265625],[-80.503662109375,-3.49609375],[-80.324658203125,-3.387890625000011],[-80.24375,-3.576757812500006],[-80.19414062499999,-3.905859375],[-80.23051757812499,-3.924023437500011],[-80.26689453124999,-3.948828125],[-80.30327148437499,-4.005078125000011],[-80.43720703125,-3.978613281250006],[-80.49013671875,-4.010058593750003],[-80.510009765625,-4.069531250000011],[-80.49345703124999,-4.119140625],[-80.4884765625,-4.16552734375],[-80.453759765625,-4.205175781250006],[-80.35288085937499,-4.20849609375],[-80.44384765625,-4.335839843750009],[-80.4884765625,-4.393652343750006],[-80.47856445312499,-4.430078125],[-80.42416992187499,-4.46142578125],[-80.38349609375,-4.463671875],[-80.293359375,-4.416796875],[-80.1974609375,-4.31103515625],[-80.13955078125,-4.296093750000011],[-80.06352539062499,-4.327539062500009],[-79.962890625,-4.390332031250011],[-79.8451171875,-4.445898437500006],[-79.797265625,-4.476367187500003],[-79.71098632812499,-4.467578125],[-79.63852539062499,-4.454882812500003],[-79.57768554687499,-4.500585937500006],[-79.51616210937499,-4.539160156250006],[-79.501904296875,-4.670605468750011],[-79.45576171875,-4.766210937500006],[-79.3994140625,-4.840039062500011],[-79.33095703125,-4.927832031250006],[-79.26811523437499,-4.957617187500006],[-79.186669921875,-4.958203125000011],[-79.07626953124999,-4.990625],[-79.03330078124999,-4.969140625],[-78.995263671875,-4.908007812500003],[-78.97539062499999,-4.873242187500011],[-78.919189453125,-4.8583984375],[-78.92578125,-4.770703125000011],[-78.9076171875,-4.714453125],[-78.8615234375,-4.6650390625],[-78.68603515625,-4.562402343750009],[-78.64799804687499,-4.248144531250006],[-78.345361328125,-3.397363281250009],[-78.240380859375,-3.472558593750009],[-77.860595703125,-2.981640625000011],[-76.6791015625,-2.562597656250006],[-76.089794921875,-2.133105468750003],[-75.570556640625,-1.53125],[-75.42041015625,-0.962207031250003],[-75.40805664062499,-0.92431640625],[-75.24960937499999,-0.951855468750011],[-75.259375,-0.590136718750003],[-75.42470703125,-0.408886718750011],[-75.49106445312499,-0.248339843750003],[-75.56059570312499,-0.200097656250009],[-75.63203125,-0.157617187500009],[-75.62626953124999,-0.122851562500003],[-75.340478515625,-0.1421875],[-75.13837890625,-0.050488281250011],[-74.8017578125,-0.200097656250009],[-74.78046875,-0.24453125],[-74.75537109375,-0.298632812500003],[-74.691650390625,-0.335253906250003],[-74.616357421875,-0.370019531250009],[-74.555078125,-0.429882812500011],[-74.5138671875,-0.470117187500009],[-74.46518554687499,-0.517675781250006],[-74.41787109375,-0.580664062500006],[-74.334423828125,-0.850878906250003],[-74.28388671875,-0.927832031250006],[-74.24638671874999,-0.970605468750009],[-74.05439453125,-1.028613281250003],[-73.98681640625,-1.09814453125],[-73.926953125,-1.125195312500011],[-73.86318359375,-1.196679687500009],[-73.664306640625,-1.248828125],[-73.4962890625,-1.693066406250011],[-73.19697265625,-1.830273437500011],[-73.1544921875,-2.278222656250009],[-72.9896484375,-2.339746093750009],[-72.94111328125,-2.39404296875],[-72.21845703125,-2.400488281250006],[-71.98427734375,-2.3265625],[-71.93247070312499,-2.288671875],[-71.86728515624999,-2.227734375000011],[-71.802734375,-2.166308593750003],[-71.75253906249999,-2.152734375],[-71.55947265625,-2.22421875],[-71.39697265625,-2.334082031250006],[-71.19638671874999,-2.313085937500006],[-71.11337890624999,-2.245410156250003],[-71.027294921875,-2.225781250000011],[-70.96855468749999,-2.206835937500003],[-70.70537109374999,-2.341992187500011],[-70.64799804687499,-2.40576171875],[-70.57587890625,-2.418261718750003],[-70.29462890625,-2.552539062500003],[-70.24443359374999,-2.606542968750006],[-70.16474609375,-2.639843750000011],[-70.095849609375,-2.658203125],[-70.735107421875,-3.781542968750003],[-70.5296875,-3.866406250000011],[-70.48583984375,-3.869335937500011],[-70.42109375,-3.849609375],[-70.37919921874999,-3.81875],[-70.339501953125,-3.814355468750009],[-70.2984375,-3.84423828125],[-70.24028320312499,-3.882714843750009],[-70.16752929687499,-4.050195312500009],[-70.0171875,-4.162011718750009],[-69.96591796874999,-4.2359375],[-69.97202148437499,-4.301171875],[-70.00395507812499,-4.327246093750006],[-70.05332031249999,-4.333105468750006],[-70.12880859375,-4.28662109375],[-70.23916015625,-4.301171875],[-70.31689453125,-4.246972656250009],[-70.34365234375,-4.193652343750003],[-70.40463867187499,-4.150097656250011],[-70.5306640625,-4.167578125],[-70.72158203125,-4.158886718750011],[-70.79951171875,-4.17333984375],[-70.97368164062499,-4.350488281250009],[-71.8447265625,-4.50439453125],[-72.256787109375,-4.748925781250009],[-72.35283203124999,-4.786035156250009],[-72.468994140625,-4.901269531250009],[-72.608349609375,-5.009570312500003],[-72.69873046875,-5.0671875],[-72.83193359375,-5.09375],[-72.88706054687499,-5.122753906250011],[-72.9798828125,-5.634863281250006],[-73.16289062499999,-5.933398437500003],[-73.209375,-6.028710937500009],[-73.235546875,-6.0984375],[-73.137353515625,-6.4658203125]]]},"properties":{"name":"Peru","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[120.250390625,5.256591796875043],[119.82148437500004,5.06953125000004],[120.1652343750001,5.332421875000037],[120.250390625,5.256591796875043]]],[[[121.159375,6.075634765625011],[121.41103515625005,5.939843749999966],[121.29443359374997,5.869970703125034],[120.8763671875,5.95263671875],[121.159375,6.075634765625011]]],[[[122.09287109375012,6.428320312500006],[121.95917968750004,6.415820312500045],[121.83203125000003,6.664062499999986],[122.0583007812501,6.740722656249972],[122.32353515625002,6.602246093750011],[122.09287109375012,6.428320312500006]]],[[[122.93710937500006,7.409130859374983],[122.80468750000003,7.315966796875017],[122.82216796875,7.428466796875014],[122.93710937500006,7.409130859374983]]],[[[117.07988281250007,7.883398437499977],[117.02832031249997,7.807519531249966],[116.96953125000007,7.894921875],[116.9935546875,8.050537109375014],[117.07705078125,8.069140624999974],[117.07988281250007,7.883398437499977]]],[[[117.35527343750002,8.21464843749996],[117.28701171875,8.191015625000034],[117.28085937500006,8.314990234374974],[117.35527343750002,8.21464843749996]]],[[[124.80664062500003,9.142626953125003],[124.66582031250002,9.132324218750043],[124.65332031250003,9.225830078125],[124.80664062500003,9.142626953125003]]],[[[123.69765625000005,9.237304687500028],[123.61445312500004,9.103320312499989],[123.49345703125002,9.192089843750054],[123.69765625000005,9.237304687500028]]],[[[126.00595703125006,9.320947265625009],[126.19335937499997,9.276708984374963],[126.30458984375,8.952050781249994],[126.13955078125005,8.59565429687504],[126.36533203125012,8.483886718750014],[126.45869140625004,8.20283203125004],[126.43535156250002,7.832812499999974],[126.57011718750002,7.677246093749986],[126.58154296875003,7.247753906249969],[126.1920898437501,6.852539062500014],[126.18935546875,6.309667968749991],[125.82441406250004,7.333300781249989],[125.68925781250007,7.263037109374977],[125.38066406250007,6.689941406250014],[125.58847656250012,6.465771484374997],[125.66796874999997,5.97866210937498],[125.34648437500002,5.598974609374977],[125.23154296875006,6.069531250000011],[124.92734375000006,5.875341796874977],[124.21279296875,6.233251953124977],[124.078125,6.404443359375037],[123.98525390625,6.993701171875003],[124.20664062500006,7.396435546874983],[123.66582031250002,7.817773437500023],[123.49306640625,7.80791015624996],[123.39091796875007,7.407519531250017],[123.09667968749997,7.700439453125],[122.8429687500001,7.529296875000043],[122.79179687500002,7.72246093749996],[122.61621093749997,7.763134765624983],[122.14248046875,6.949658203124997],[121.96425781250005,6.96821289062504],[121.92460937500002,7.199511718750003],[122.24335937500004,7.945117187500031],[122.91113281250003,8.156445312499997],[123.05058593750002,8.433935546875048],[123.43457031249997,8.70332031250004],[123.84921875000006,8.432714843749977],[123.79941406250006,8.049121093749989],[124.19765625,8.229541015624974],[124.40488281250006,8.599853515625014],[124.7311523437501,8.562988281250043],[124.86894531250002,8.972265625000034],[125.141015625,8.86875],[125.20966796875004,9.027148437500017],[125.49873046875004,9.014746093749977],[125.47128906250006,9.756787109374983],[126.00595703125006,9.320947265625009]]],[[[126.059375,9.766210937500034],[125.99121093750003,9.838525390625023],[126.07382812500006,10.059228515625051],[126.1725585937501,9.79995117187498],[126.059375,9.766210937500034]]],[[[124.59384765625006,9.787207031249963],[124.1224609375,9.599316406249969],[123.93564453125012,9.623974609375011],[123.81718750000002,9.817382812499986],[124.17285156250003,10.135205078124983],[124.33574218750002,10.159912109375043],[124.57714843749997,10.026708984374991],[124.59384765625006,9.787207031249963]]],[[[125.69023437500007,9.914453125000037],[125.49482421875004,10.118701171875003],[125.66679687500002,10.440136718750026],[125.69023437500007,9.914453125000037]]],[[[119.91621093750004,10.485986328125037],[119.79316406250004,10.455273437499997],[119.85205078124997,10.64013671875],[120.00839843750012,10.570117187500031],[119.91621093750004,10.485986328125037]]],[[[122.64951171875012,10.472705078125003],[122.53837890625002,10.424951171875037],[122.5375,10.607568359375023],[122.70126953125006,10.740625],[122.64951171875012,10.472705078125003]]],[[[123.13085937500003,9.064111328124994],[122.99472656250006,9.058837890624986],[122.8666015625,9.319824218750043],[122.5625,9.482812500000037],[122.39951171875006,9.823046874999989],[122.47148437500007,9.961523437500034],[122.85556640625006,10.0869140625],[122.81699218750012,10.503808593750023],[122.98330078125,10.886621093750037],[123.25664062500007,10.99394531249996],[123.51064453125005,10.923046875],[123.5675781250001,10.780761718750057],[123.16201171875,9.864257812500028],[123.1498046875,9.606152343750026],[123.32050781250004,9.27294921875],[123.13085937500003,9.064111328124994]]],[[[123.37031250000004,9.449609375000023],[123.38623046874997,9.967089843750017],[124.03886718750002,11.273535156249991],[124.00498046875012,10.40009765625004],[123.70048828125007,10.128320312500009],[123.37031250000004,9.449609375000023]]],[[[123.75703125000004,11.28330078125002],[123.815625,11.15073242187502],[123.73671875,11.151464843749991],[123.75703125000004,11.28330078125002]]],[[[117.31113281250012,8.439599609375051],[117.21855468750007,8.367285156249963],[117.34990234375002,8.713574218749997],[119.22382812500004,10.477294921875043],[119.30566406250003,10.9736328125],[119.55332031250012,11.31352539062496],[119.52666015625002,10.953173828125003],[119.68691406250005,10.500341796875034],[119.36933593750004,10.327294921875037],[119.19150390625012,10.061083984374989],[118.78212890625005,9.91611328125002],[118.4349609375,9.256005859375009],[117.31113281250012,8.439599609375051]]],[[[119.86142578125006,11.52534179687504],[119.83066406250012,11.375683593750011],[119.72998046874997,11.431933593750017],[119.86142578125006,11.52534179687504]]],[[[124.574609375,11.343066406250031],[124.92998046875002,11.372851562499974],[125.02656250000004,11.21171875],[125.01318359374997,10.785693359374989],[125.26845703125005,10.307714843750048],[125.14257812499997,10.189453125000028],[124.9875,10.36757812499998],[125.02656250000004,10.033105468749966],[124.78076171874997,10.16806640625002],[124.78671875000012,10.781396484375009],[124.66269531250006,10.961962890625017],[124.44550781250004,10.923583984375014],[124.33066406250012,11.535205078125003],[124.574609375,11.343066406250031]]],[[[124.60839843750003,11.492187500000043],[124.48349609375006,11.485839843749986],[124.36035156250003,11.665917968749994],[124.5109375000001,11.687109375000048],[124.60839843750003,11.492187500000043]]],[[[122.49619140625006,11.615087890625034],[122.83808593750004,11.595654296874983],[122.89453125000003,11.44130859374998],[123.15830078125012,11.53554687499999],[123.11953125,11.286816406250026],[122.8029296875001,10.99003906249996],[122.76992187500005,10.823828125000034],[121.95400390625,10.444384765625003],[122.10351562499997,11.64291992187502],[121.91601562499997,11.854345703125006],[122.02919921875005,11.895410156250023],[122.49619140625006,11.615087890625034]]],[[[120.03876953125004,11.703320312499969],[119.94492187500006,11.690722656249989],[119.86093750000006,11.953955078124963],[120.03593750000002,11.917236328125028],[120.03876953125004,11.703320312499969]]],[[[120.1,12.167675781249983],[120.22822265625004,12.219824218750034],[120.31455078125012,12.012402343749969],[120.01054687500002,12.008251953125011],[119.88574218749997,12.299853515625003],[120.1,12.167675781249983]]],[[[122.65449218750004,12.309033203125011],[122.42294921875006,12.455078125],[122.60361328125006,12.49160156249998],[122.65449218750004,12.309033203125011]]],[[[125.23955078125002,12.527880859375003],[125.32021484375,12.321826171875031],[125.53564453125003,12.191406250000028],[125.49179687500006,11.594335937499977],[125.57353515625002,11.238232421874997],[125.73564453125002,11.049609375000017],[125.23339843749997,11.145068359375017],[125.03427734375012,11.341259765625026],[124.91699218750003,11.558398437500031],[124.99501953125,11.764941406250003],[124.445703125,12.152783203124969],[124.29472656250007,12.569335937500014],[125.23955078125002,12.527880859375003]]],[[[123.71660156250007,12.287353515625028],[124.04033203125002,11.966796875],[124.04550781250012,11.752441406250028],[123.47373046875006,12.21665039062502],[123.15781250000012,11.925634765624963],[123.23642578125012,12.583496093750057],[123.71660156250007,12.287353515625028]]],[[[122.09404296875002,12.354882812500023],[122.01396484375002,12.105615234375037],[121.9232421875,12.331298828125014],[122.00156250000006,12.598535156250009],[122.14501953124997,12.652636718750017],[122.09404296875002,12.354882812500023]]],[[[123.77539062499997,12.453906250000031],[123.77910156250002,12.366259765625031],[123.62148437500005,12.67490234375002],[123.77539062499997,12.453906250000031]]],[[[123.28183593750006,12.85341796874998],[123.36718750000003,12.70083007812498],[122.95751953124997,13.107177734374986],[123.28183593750006,12.85341796874998]]],[[[120.70439453125002,13.479492187499986],[121.20273437500006,13.432324218749969],[121.52275390625007,13.131201171874991],[121.540625,12.63818359375],[121.39433593750002,12.300585937499974],[121.23671875000005,12.218798828125003],[120.92216796875002,12.51162109374998],[120.65136718749997,13.169140625],[120.33847656250012,13.412353515624986],[120.40126953125,13.517041015624997],[120.70439453125002,13.479492187499986]]],[[[121.91484375000002,13.540332031250031],[122.11455078125002,13.463183593750031],[122.00488281249997,13.204980468750009],[121.82919921875006,13.328613281249972],[121.91484375000002,13.540332031250031]]],[[[124.35361328125006,13.632226562500009],[124.17539062500012,13.531542968750017],[124.03886718750002,13.663134765625003],[124.22490234375007,14.077587890624969],[124.41718750000004,13.871044921874997],[124.35361328125006,13.632226562500009]]],[[[122.03349609375002,15.005029296875009],[121.93300781250005,14.656054687500045],[121.83984374999997,15.038134765625003],[122.03349609375002,15.005029296875009]]],[[[121.10156249999997,18.615283203125017],[121.84560546875,18.29541015625003],[122.03847656250005,18.32792968749999],[122.14667968750004,18.486572265625],[122.26552734375005,18.458837890625034],[122.15234374999997,17.664404296875006],[122.51914062500012,17.124853515625034],[122.13515625000005,16.18481445312503],[121.59531250000012,15.933251953125023],[121.60703125000006,15.669824218749994],[121.39228515625004,15.324414062499969],[121.69541015625006,14.7373046875],[121.62792968749997,14.581152343749977],[121.76660156249997,14.16806640625002],[122.21171875000002,13.930175781250057],[122.2875,13.996191406250006],[122.19970703125003,14.148046875000034],[122.6271484375001,14.317529296875009],[122.93417968750012,14.18808593750002],[123.101953125,13.750244140624986],[123.29697265625012,13.836425781250043],[123.32031249999997,14.061669921875023],[123.81572265625002,13.837109375000011],[123.80625000000012,13.721728515625045],[123.54960937500007,13.645751953125014],[123.81923828125,13.269482421875011],[123.78515625000003,13.110546875000054],[124.14277343750004,13.035791015625009],[124.0597656250001,12.567089843749997],[123.87783203125005,12.689697265625014],[123.94853515625007,12.916406250000023],[123.31093750000005,13.044091796875009],[123.16328125000004,13.44174804687502],[122.59521484374997,13.90761718749998],[122.46796875000004,13.886718749999986],[122.66787109375,13.395361328124991],[122.59990234375002,13.194140625000031],[122.37656250000012,13.520605468750006],[121.77792968750006,13.93764648437498],[121.50107421875006,13.8421875],[121.344140625,13.649121093749997],[121.09550781250007,13.679492187500045],[120.84072265625,13.884716796875026],[120.637109375,13.804492187500031],[120.61679687500006,14.188037109375003],[120.9220703125001,14.493115234374983],[120.94130859375,14.645068359375031],[120.58369140625004,14.88125],[120.58867187500002,14.483105468749983],[120.43876953125002,14.453369140624972],[120.25078125000002,14.793310546875034],[120.08212890625012,14.851074218749986],[119.77255859375012,16.25512695312503],[119.83076171875004,16.326562500000023],[120.15976562500012,16.047656250000045],[120.36875,16.109570312499955],[120.35839843749997,17.63818359375],[120.59970703125012,18.507861328125074],[121.10156249999997,18.615283203125017]]],[[[121.92167968750007,18.89472656250001],[121.82519531250003,18.842724609374983],[121.94335937500003,19.010449218749955],[121.92167968750007,18.89472656250001]]],[[[121.52089843750005,19.361962890624994],[121.53125,19.271337890625006],[121.37460937500006,19.356298828124977],[121.52089843750005,19.361962890624994]]]]},"properties":{"name":"Philippines","childNum":37}},{"geometry":{"type":"Polygon","coordinates":[[[134.5954101562501,7.382031249999969],[134.51572265625012,7.525781250000037],[134.65117187500002,7.712109374999983],[134.5954101562501,7.382031249999969]]]},"properties":{"name":"Palau","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[153.53613281249997,-11.476171874999949],[153.75986328125006,-11.586328125],[153.55371093749997,-11.630566406249969],[153.28681640625004,-11.516992187500009],[153.20361328124997,-11.32412109374998],[153.53613281249997,-11.476171874999949]]],[[[154.28076171874997,-11.36142578125002],[154.12119140625006,-11.425683593749966],[154.02343750000003,-11.347949218750031],[154.28076171874997,-11.36142578125002]]],[[[150.89873046875002,-10.565332031250023],[150.88466796875,-10.643457031250037],[150.78574218750006,-10.603417968749966],[150.89873046875002,-10.565332031250023]]],[[[151.08095703125,-10.020117187499963],[151.29648437500012,-9.956738281250026],[151.230859375,-10.194726562500009],[150.95917968750004,-10.092578124999989],[150.77607421875004,-9.70908203125002],[151.08095703125,-10.020117187499963]]],[[[150.52841796875006,-9.34658203124998],[150.78867187500006,-9.417968749999957],[150.89404296875003,-9.667480468749986],[150.43623046875004,-9.624609374999949],[150.5084960937501,-9.536132812499957],[150.43730468750007,-9.359960937500034],[150.52841796875006,-9.34658203124998]]],[[[150.3454101562501,-9.493847656249955],[150.10976562500005,-9.361914062499991],[150.20830078125002,-9.206347656250003],[150.32011718750007,-9.264160156249972],[150.3454101562501,-9.493847656249955]]],[[[152.63095703125012,-8.959375],[152.95292968750007,-9.07011718749996],[152.96689453125006,-9.208984375000014],[152.51513671874997,-9.009863281250034],[152.63095703125012,-8.959375]]],[[[151.10683593750005,-8.733496093749949],[151.12412109375012,-8.804882812500011],[151.00498046875006,-8.523828124999952],[151.117578125,-8.41884765624998],[151.10683593750005,-8.733496093749949]]],[[[143.58681640625005,-8.481738281250003],[143.321875,-8.367578125],[143.5814453125,-8.390917968749974],[143.58681640625005,-8.481738281250003]]],[[[148.02578125,-5.826367187500011],[147.78105468750007,-5.627246093749946],[147.7946289062501,-5.492382812500011],[148.05478515625006,-5.61152343750004],[148.02578125,-5.826367187500011]]],[[[155.95761718750006,-6.686816406249989],[155.71933593750012,-6.862792968749957],[155.34404296875007,-6.721679687499986],[155.20214843750003,-6.3076171875],[154.75927734375003,-5.931347656249997],[154.72929687500002,-5.444433593750006],[155.09384765625006,-5.620214843750034],[155.46699218750004,-6.145117187500034],[155.82255859375002,-6.38046875000002],[155.95761718750006,-6.686816406249989]]],[[[147.17626953124997,-5.431933593749946],[147.00585937499997,-5.30703125],[147.1310546875001,-5.190820312500037],[147.17626953124997,-5.431933593749946]]],[[[154.64726562500002,-5.43271484375002],[154.54003906250003,-5.11083984375],[154.63261718750007,-5.013867187499955],[154.72714843750006,-5.218066406249989],[154.64726562500002,-5.43271484375002]]],[[[146.01933593750007,-4.726171874999963],[145.88359375000007,-4.66748046875],[145.9958007812501,-4.539257812499983],[146.01933593750007,-4.726171874999963]]],[[[151.915625,-4.296777343749966],[152.11718749999997,-4.212207031249974],[152.40566406250005,-4.340722656249952],[152.35117187500006,-4.82216796874998],[151.98369140625007,-5.07441406250004],[152.14296875,-5.357031249999963],[152.07705078125,-5.458300781249989],[151.86542968750004,-5.564843750000023],[151.51513671874997,-5.552343749999963],[151.22929687500002,-5.919921874999986],[150.47353515625,-6.263378906249969],[149.65253906250004,-6.290429687499966],[149.38232421874997,-6.078125],[149.0990234375,-6.116992187499989],[148.33720703125007,-5.669433593750014],[148.43203125,-5.471777343749991],[149.35888671875003,-5.583984375000014],[149.8314453125,-5.524121093749997],[149.96279296875,-5.447753906249972],[150.0900390625001,-5.011816406249977],[150.1703125,-5.070605468749974],[150.0724609375001,-5.309570312499986],[150.18310546874997,-5.523632812499983],[150.90029296875005,-5.447167968750037],[151.32656250000005,-4.96035156249998],[151.67119140625007,-4.88330078125],[151.59306640625007,-4.200781249999949],[151.915625,-4.296777343749966]]],[[[152.67060546875004,-3.13339843750002],[152.64619140625004,-3.221191406249957],[152.54326171875002,-3.095605468749952],[152.63876953125012,-3.042773437500031],[152.67060546875004,-3.13339843750002]]],[[[140.97617187500012,-9.11875],[140.97519531250006,-6.90537109375002],[140.86230468749997,-6.740039062499989],[140.975,-6.346093750000023],[140.97353515625,-2.803417968750026],[140.97343750000007,-2.609765625],[142.90517578125,-3.32070312499998],[143.50898437500004,-3.431152343750014],[144.06640625000003,-3.80517578125],[144.4777343750001,-3.82529296875002],[145.08779296875,-4.349121093749972],[145.33457031250012,-4.385253906249972],[145.7669921875,-4.823046874999989],[145.74521484375012,-5.402441406249977],[147.56669921875002,-6.056933593750003],[147.80205078125002,-6.31523437499996],[147.84550781250007,-6.662402343749989],[147.11914062499997,-6.721679687499986],[146.95361328124997,-6.834082031249963],[147.19003906250012,-7.378125],[148.12675781250007,-8.103613281249963],[148.246875,-8.554296875000034],[148.45117187499997,-8.694531250000011],[148.58310546875006,-9.051757812499957],[149.19833984375006,-9.03125],[149.26318359374997,-9.497851562499974],[150.01103515625007,-9.688183593750026],[149.76123046874997,-9.805859375000011],[149.87441406250005,-10.012988281250031],[150.84951171875,-10.236035156249997],[150.44609375000007,-10.30732421875004],[150.6471679687501,-10.517968749999966],[150.31992187500012,-10.654882812499963],[150.0167968750001,-10.577148437500028],[149.75410156250004,-10.353027343750028],[147.76865234375012,-10.070117187500031],[147.01718750000006,-9.38789062500004],[146.96376953125,-9.059570312499943],[146.63085937499997,-8.951171874999972],[146.03320312499997,-8.076367187500011],[144.97382812500004,-7.802148437500009],[144.86425781249997,-7.631542968749983],[144.50986328125006,-7.567382812499972],[144.14287109375007,-7.757226562500009],[143.65488281250012,-7.460351562500009],[143.94228515625005,-7.944238281250009],[143.8333984375,-8.029101562499974],[143.51816406250006,-8.000683593749955],[143.61376953125003,-8.200390624999969],[142.52412109375004,-8.32167968749998],[142.34746093750002,-8.167480468750014],[142.20683593750002,-8.195800781250014],[142.47480468750004,-8.369433593750031],[142.79794921875006,-8.345019531250031],[143.11181640624997,-8.474511718750037],[143.37724609375007,-8.762207031250028],[143.36621093750003,-8.961035156250034],[142.6471679687501,-9.327832031249969],[142.22958984375012,-9.169921874999957],[141.13320312500005,-9.221289062500034],[140.97617187500012,-9.11875]]],[[[152.96582031249997,-4.756347656249986],[152.89169921875006,-4.832421875000023],[152.73994140625004,-4.635839843750034],[152.66816406250004,-4.131835937500028],[152.27939453125006,-3.582421875],[151.06679687500005,-2.829003906249994],[150.74609374999997,-2.73886718750002],[150.8253906250001,-2.572949218749969],[152.03291015625004,-3.25136718749998],[153.01679687500004,-4.105664062500026],[153.1325195312501,-4.352441406250037],[152.96582031249997,-4.756347656249986]]],[[[150.43662109375012,-2.66181640625004],[150.16572265625004,-2.660253906249991],[149.96162109375004,-2.473828125000026],[150.22714843750006,-2.384179687499966],[150.42949218750007,-2.47041015625004],[150.43662109375012,-2.66181640625004]]],[[[147.06757812500004,-1.96015625],[147.43808593750012,-2.05898437499998],[147.20634765625007,-2.181933593749974],[146.54648437500012,-2.20859375],[146.65625,-1.97402343749998],[147.06757812500004,-1.96015625]]],[[[149.76542968750007,-1.553027343750017],[149.54589843749997,-1.471679687499957],[149.58095703125005,-1.353222656249983],[149.76542968750007,-1.553027343750017]]]]},"properties":{"name":"Papua New Guinea","childNum":21}},{"geometry":{"type":"Polygon","coordinates":[[[23.484667968750017,53.939794921875],[23.915429687500023,52.770263671875],[23.175097656250017,52.28662109375],[23.652441406250006,52.040380859375],[23.605273437500017,51.517919921875],[23.664453125000023,51.31005859375],[24.095800781250006,50.87275390625],[23.9970703125,50.809375],[24.089941406250006,50.53046875],[23.97265625,50.410058593749994],[23.711718750000017,50.37734375],[23.03632812500001,49.899072265624994],[22.706152343750006,49.606201171875],[22.6494140625,49.539013671875],[22.66064453125,49.483691406249996],[22.71992187500001,49.353808593749996],[22.732421875,49.295166015625],[22.705664062500006,49.171191406249996],[22.847070312500023,49.08125],[22.538671875,49.072705078125],[22.473046875000023,49.081298828125],[22.020117187500006,49.209521484374996],[21.6396484375,49.411962890625],[21.079394531250017,49.418261718749996],[20.868457031250017,49.314697265625],[20.36298828125001,49.38525390625],[20.0576171875,49.181298828124994],[19.756640625000017,49.204394531249996],[19.77392578125,49.37216796875],[19.44160156250001,49.597705078124996],[19.1494140625,49.4],[18.83222656250001,49.510791015624996],[18.562402343750023,49.879345703125],[18.0283203125,50.03525390625],[17.874804687500017,49.972265625],[17.627050781250006,50.11640625],[17.702246093750006,50.307177734374996],[17.41523437500001,50.254785156249994],[16.88007812500001,50.427050781249996],[16.989648437500023,50.2369140625],[16.63916015625,50.1021484375],[16.210351562500023,50.423730468749994],[16.419726562500017,50.573632812499994],[16.2822265625,50.655615234375],[16.007226562500023,50.611621093749996],[14.99375,51.01435546875],[14.98291015625,50.886572265625],[14.895800781250017,50.861376953124996],[14.809375,50.858984375],[14.814257812500017,50.871630859374996],[14.91748046875,51.008740234375],[14.9638671875,51.095117187499994],[14.935546875,51.435351562499996],[14.905957031250011,51.463330078125],[14.724707031250006,51.523876953125],[14.7109375,51.544921875],[14.738671875000023,51.6271484375],[14.601660156250006,51.832373046875],[14.752539062500006,52.081835937499996],[14.679882812500011,52.25],[14.615625,52.277636718749996],[14.573925781250011,52.31416015625],[14.554589843750023,52.359667968749996],[14.569726562500023,52.431103515625],[14.619433593750017,52.528515625],[14.514062500000023,52.64560546875],[14.253710937500017,52.782519531249996],[14.128613281250011,52.878222656249996],[14.138867187500011,52.932861328125],[14.293164062500011,53.0267578125],[14.368554687500023,53.10556640625],[14.410937500000017,53.199023437499996],[14.412304687500011,53.216748046875],[14.41455078125,53.283496093749996],[14.258886718750006,53.729638671875],[14.58349609375,53.63935546875],[14.558398437500017,53.823193359375],[14.21142578125,53.950341796875],[16.186328125000017,54.290380859375],[16.55976562500001,54.55380859375],[18.32343750000001,54.838183593749996],[18.75927734375,54.6845703125],[18.43623046875001,54.7447265625],[18.83642578125,54.369580078125],[19.604394531250023,54.4591796875],[20.20820312500001,54.420751953125],[22.16845703125,54.35986328125],[22.731835937500023,54.35009765625],[22.766210937500006,54.356787109375],[22.82373046875,54.395800781249996],[22.893945312500023,54.39052734375],[22.97675781250001,54.366357421875],[23.015527343750023,54.34833984375],[23.04218750000001,54.30419921875],[23.0875,54.299462890625],[23.170312500000023,54.2814453125],[23.282324218750006,54.24033203125],[23.3701171875,54.200488281249996],[23.45361328125,54.14345703125],[23.484667968750017,53.939794921875]]]},"properties":{"name":"Poland","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-65.42558593749999,18.105615234374994],[-65.57221679687493,18.137304687499977],[-65.29487304687501,18.133349609375045],[-65.42558593749999,18.105615234374994]]],[[[-66.12939453125003,18.444921875000034],[-65.62880859375,18.381396484375045],[-65.62084960937497,18.242333984374966],[-65.97080078124995,17.974365234375],[-67.196875,17.994189453125045],[-67.2640625,18.364599609375006],[-67.15864257812501,18.499218749999983],[-66.12939453125003,18.444921875000034]]]]},"properties":{"name":"Puerto Rico","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[130.52695312500012,42.535400390625],[130.68730468750007,42.30253906249999],[130.2357421875,42.183203125000034],[129.75634765624997,41.712255859375006],[129.70869140625004,40.857324218749994],[129.34111328125002,40.72631835937506],[128.51123046874997,40.130224609375006],[127.56816406250002,39.78198242187503],[127.39453125000003,39.207910156249966],[127.78613281250003,39.084130859374966],[128.37460937500012,38.6234375],[128.03896484375,38.30854492187498],[127.09033203125003,38.28388671875001],[126.63388671875012,37.78183593750006],[126.36992187500007,37.87836914062501],[126.11669921875003,37.74291992187503],[125.76914062500006,37.98535156250003],[125.35781250000005,37.72480468749998],[125.31074218750004,37.843505859375],[124.98876953124997,37.93144531249999],[125.2067382812501,38.08154296875],[124.69091796874997,38.12919921875002],[125.06738281250003,38.556738281250006],[125.55449218750002,38.68623046875001],[125.16884765625,38.80551757812506],[125.40966796875003,39.28837890625002],[125.36083984375003,39.52661132812497],[124.77529296875,39.75805664062506],[124.63828125000006,39.61508789062506],[124.36210937500002,40.004052734374994],[124.8893554687501,40.459814453125006],[125.98906250000002,40.904638671875034],[126.74306640625,41.724853515625],[126.95478515625004,41.76948242187501],[127.17968750000003,41.531347656250006],[128.14941406249997,41.38774414062496],[128.28925781250004,41.60742187500006],[128.04521484375007,41.9875],[128.92343750000006,42.038232421874966],[129.3136718750001,42.41357421874997],[129.69785156250012,42.448144531249994],[129.89824218750002,42.998144531250034],[130.24033203125006,42.891796874999955],[130.24667968750012,42.744824218749955],[130.52695312500012,42.535400390625]]]},"properties":{"name":"Dem. Rep. Korea","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-17.190869140624926,32.86860351562498],[-16.693261718749966,32.75800781250001],[-17.018261718749926,32.66279296874998],[-17.226025390624983,32.76684570312503],[-17.190869140624926,32.86860351562498]]],[[[-25.64897460937499,37.840917968750006],[-25.18193359374996,37.837890625],[-25.19072265624999,37.764355468749955],[-25.73447265624992,37.76289062500001],[-25.845898437499983,37.89404296875],[-25.64897460937499,37.840917968750006]]],[[[-28.14726562499996,38.45268554687502],[-28.064794921875034,38.412744140624966],[-28.454492187500023,38.40864257812504],[-28.54882812499997,38.51855468750003],[-28.14726562499996,38.45268554687502]]],[[[-28.641308593749983,38.525],[-28.842041015625,38.5984375],[-28.69775390625,38.638476562500045],[-28.641308593749983,38.525]]],[[[-27.07524414062496,38.643457031249994],[-27.38593750000001,38.765820312499955],[-27.127001953125017,38.78984375],[-27.07524414062496,38.643457031249994]]],[[[-31.137109374999937,39.40693359375001],[-31.282958984375,39.39409179687496],[-31.260839843750034,39.49677734375001],[-31.137109374999937,39.40693359375001]]],[[[-7.406152343749937,37.17944335937497],[-7.834130859374994,37.005712890625034],[-8.597656249999943,37.12133789062506],[-8.997802734375028,37.03227539062502],[-8.814160156249983,37.43081054687502],[-8.881103515624943,38.44667968750005],[-8.668310546874949,38.42431640625003],[-8.798876953124989,38.518164062500034],[-9.213281249999937,38.44809570312498],[-9.250390624999966,38.65673828125003],[-9.021484374999943,38.746875],[-8.79160156249992,39.07817382812502],[-9.13579101562496,38.74277343749998],[-9.35673828124996,38.697900390624994],[-9.479736328124972,38.79877929687501],[-9.374755859374972,39.338281249999966],[-8.837841796874926,40.11567382812498],[-8.684619140624989,40.75253906250006],[-8.755419921874932,41.69838867187502],[-8.887597656249937,41.76459960937501],[-8.777148437500017,41.941064453124994],[-8.266064453124983,42.13740234375001],[-8.152490234374937,41.81196289062498],[-7.40361328124996,41.833691406249955],[-7.147119140625023,41.98115234374998],[-6.61826171874992,41.9423828125],[-6.542187499999955,41.672509765624994],[-6.2125,41.53203125],[-6.928466796874972,41.009130859375006],[-6.8101562499999,40.343115234375034],[-7.032617187499966,40.16791992187498],[-6.896093749999949,40.02182617187506],[-6.975390624999932,39.79838867187502],[-7.117675781249972,39.681689453125045],[-7.53569335937496,39.66157226562501],[-6.997949218749994,39.05644531250002],[-7.343017578124943,38.45742187500002],[-7.106396484374983,38.181005859375006],[-6.957568359374932,38.18789062499999],[-7.44394531249992,37.72827148437497],[-7.406152343749937,37.17944335937497]]]]},"properties":{"name":"Portugal","childNum":7,"cp":[-8.7440694,39.9251454]}},{"geometry":{"type":"Polygon","coordinates":[[[-58.15976562499999,-20.164648437500006],[-58.13779296874999,-20.2373046875],[-58.12460937499999,-20.29345703125],[-58.09150390625,-20.33320312500001],[-58.05844726562499,-20.38613281250001],[-58.025390625,-20.415820312500003],[-58.00224609374999,-20.465429687500006],[-57.97905273437499,-20.657324218750006],[-57.91513671874999,-20.69033203125001],[-57.830224609374994,-20.99794921875001],[-57.94267578124999,-21.79833984375],[-57.95590820312499,-22.109179687500003],[-56.77519531249999,-22.261328125],[-56.44780273437499,-22.076171875],[-56.39487304687499,-22.09267578125001],[-56.35185546874999,-22.17861328125001],[-56.246044921875,-22.2646484375],[-56.18984375,-22.28115234375001],[-55.99140625,-22.28115234375001],[-55.84916992187499,-22.3076171875],[-55.75327148437499,-22.41015625],[-55.74663085937499,-22.5126953125],[-55.61767578125,-22.671484375],[-55.53828125,-23.58095703125001],[-55.518457031249994,-23.627246093750003],[-55.458886718749994,-23.68671875000001],[-55.4423828125,-23.792578125],[-55.4423828125,-23.865332031250006],[-55.415917968749994,-23.95136718750001],[-55.36630859374999,-23.991015625],[-55.28691406249999,-24.004296875],[-55.1943359375,-24.01748046875001],[-55.08188476562499,-23.99765625],[-54.982666015625,-23.97451171875001],[-54.62548828125,-23.8125],[-54.44023437499999,-23.90175781250001],[-54.37080078125,-23.97119140625],[-54.24179687499999,-24.047265625],[-54.281005859375,-24.30605468750001],[-54.43623046875,-25.12128906250001],[-54.47314453125,-25.22021484375],[-54.610546875,-25.432714843750006],[-54.615869140624994,-25.57607421875001],[-54.63193359374999,-26.00576171875001],[-54.677734375,-26.30878906250001],[-54.934472656249994,-26.70253906250001],[-55.1359375,-26.93115234375],[-55.426660156249994,-27.00927734375],[-55.450634765625,-27.068359375],[-55.496728515624994,-27.115332031250006],[-55.564892578125,-27.15],[-55.59726562499999,-27.207617187500006],[-55.59379882812499,-27.2880859375],[-55.63291015624999,-27.35712890625001],[-55.71464843749999,-27.41484375],[-55.789990234375,-27.41640625],[-55.95146484374999,-27.32568359375],[-56.1640625,-27.32148437500001],[-56.437158203124994,-27.553808593750006],[-58.16826171874999,-27.2734375],[-58.60483398437499,-27.31435546875001],[-58.641748046874994,-27.19609375],[-58.618603515625,-27.132128906250003],[-58.222070312499994,-26.65],[-58.18149414062499,-26.307421875],[-57.943115234375,-26.05292968750001],[-57.563134765624994,-25.473730468750006],[-57.821679687499994,-25.13642578125001],[-59.187255859375,-24.562304687500003],[-59.892480468749994,-24.093554687500003],[-60.83984375,-23.85810546875001],[-61.084716796875,-23.65644531250001],[-61.79853515625,-23.18203125],[-62.21416015624999,-22.612402343750006],[-62.372509765625,-22.43916015625001],[-62.54155273437499,-22.349609375],[-62.6259765625,-22.29042968750001],[-62.62568359375,-22.261523437500003],[-62.65097656249999,-22.233691406250003],[-62.27666015624999,-21.066015625],[-62.276318359375,-20.5625],[-61.7568359375,-19.6453125],[-60.00737304687499,-19.29755859375001],[-59.09052734375,-19.286230468750006],[-58.18017578125,-19.81787109375],[-58.15976562499999,-20.164648437500006]]]},"properties":{"name":"Paraguay","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[34.34833984375004,31.292919921874955],[34.2453125000001,31.208300781250045],[34.2125,31.292285156250017],[34.198144531249994,31.322607421875063],[34.47734375000002,31.584863281250023],[34.52412109375004,31.541650390624994],[34.5255859375001,31.52563476562503],[34.34833984375004,31.292919921874955]]],[[[34.88046875,31.3681640625],[34.950976562500074,31.60229492187503],[35.20371093750006,31.75],[35.1271484375001,31.816748046875006],[35.05322265625003,31.83793945312496],[34.983007812500006,31.816796875000023],[34.9611328125001,31.823339843750006],[34.95380859375004,31.84125976562504],[34.98974609374997,31.913281249999955],[34.955957031249994,32.1609375],[35.01054687500002,32.33818359375002],[35.06503906250006,32.46044921875006],[35.19326171875005,32.53442382812503],[35.303808593750006,32.512939453125],[35.38671875000003,32.493017578125034],[35.402636718750074,32.45063476562501],[35.484375,32.40166015624999],[35.5514648437501,32.39550781250006],[35.57207031250002,32.237890625],[35.450585937499994,31.479296875000017],[34.88046875,31.3681640625]]]]},"properties":{"name":"Palestine","childNum":2}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-149.321533203125,-17.690039062499963],[-149.177685546875,-17.736621093750045],[-149.18178710937497,-17.86230468749997],[-149.34111328125,-17.732421874999986],[-149.57890624999993,-17.734960937499963],[-149.635009765625,-17.564257812500003],[-149.37919921874993,-17.522363281249994],[-149.321533203125,-17.690039062499963]]],[[[-143.44057617187497,-16.619726562499963],[-143.38618164062498,-16.668847656250023],[-143.55068359375002,-16.62109374999997],[-143.44057617187497,-16.619726562499963]]],[[[-139.02431640624997,-9.695214843750037],[-138.82734375,-9.74160156249998],[-139.13408203124996,-9.829492187500037],[-139.02431640624997,-9.695214843750037]]],[[[-140.075634765625,-9.425976562499983],[-140.14438476562498,-9.359375],[-140.07094726562497,-9.328125],[-140.075634765625,-9.425976562499983]]],[[[-140.07260742187503,-8.910449218750031],[-140.21743164062497,-8.929687499999957],[-140.24003906249993,-8.79755859375004],[-140.057666015625,-8.801464843750026],[-140.07260742187503,-8.910449218750031]]]]},"properties":{"name":"Fr. Polynesia","childNum":5}},{"geometry":{"type":"Polygon","coordinates":[[[51.26796875000002,24.607226562500003],[51.17802734375002,24.58671875],[51.093359375,24.564648437499997],[51.02275390625002,24.565234375],[50.96601562500001,24.573925781249997],[50.928320312500006,24.595117187499994],[50.85566406250001,24.679638671874997],[50.80439453125001,24.789257812499997],[50.8359375,24.850390625],[50.846777343750006,24.888574218749994],[50.75458984375001,25.39926757812499],[51.003125,25.9814453125],[51.262304687500006,26.153271484374997],[51.543066406250006,25.902392578125003],[51.4853515625,25.524707031250003],[51.60888671875,25.052880859374994],[51.42792968750001,24.668261718750003],[51.26796875000002,24.607226562500003]]]},"properties":{"name":"Qatar","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[28.2125,45.450439453125],[28.317675781250017,45.347119140625],[28.451269531250006,45.2921875],[28.78828125000001,45.240966796875],[28.78173828125,45.309863281249996],[28.894335937500017,45.289941406249994],[29.223535156250023,45.4029296875],[29.403710937500023,45.419677734375],[29.567675781250017,45.37080078125],[29.705859375000017,45.259912109374994],[29.557519531250023,44.843408203124994],[29.048242187500023,44.757568359375],[29.0953125,44.975048828125],[28.891503906250023,44.91865234375],[28.585351562500023,43.742236328124996],[28.221972656250017,43.772851562499994],[27.88427734375,43.987353515624996],[27.425390625,44.0205078125],[27.0869140625,44.167382812499994],[26.2158203125,44.007275390625],[25.4970703125,43.670800781249994],[22.919042968750006,43.83447265625],[22.868261718750006,43.947900390624994],[23.02851562500001,44.077978515625],[22.705078125,44.23779296875],[22.687890625000023,44.248291015625],[22.494531250000023,44.435449218749994],[22.554003906250017,44.540332031249996],[22.6201171875,44.562353515625],[22.70078125,44.555517578125],[22.734375,44.569921875],[22.72089843750001,44.605517578124996],[22.64208984375,44.6509765625],[22.49765625,44.70625],[22.350683593750006,44.676123046875],[22.200976562500017,44.560693359374994],[22.093066406250017,44.541943359375],[21.909277343750006,44.66611328125],[21.636132812500023,44.71044921875],[21.52314453125001,44.790087890624996],[21.36005859375001,44.82666015625],[21.35791015625,44.86181640625],[21.384375,44.870068359375],[21.442187500000017,44.873388671875],[21.519921875000023,44.880810546875],[21.532324218750006,44.900683593749996],[21.35703125,44.990771484374996],[21.465429687500006,45.171875],[21.431445312500017,45.192529296874994],[20.794042968750006,45.46787109375],[20.775,45.749804687499996],[20.760156250000023,45.758105468749996],[20.746875,45.748974609375],[20.727832031250017,45.73740234375],[20.709277343750017,45.735253906249994],[20.652734375000023,45.77939453125],[20.581152343750006,45.869482421875],[20.35859375000001,45.975488281249994],[20.241796875,46.10859375],[20.28095703125001,46.1330078125],[20.508105468750017,46.166943359375],[20.613671875000023,46.13349609375],[20.76025390625,46.246240234374994],[21.121679687500006,46.282421875],[21.99970703125001,47.505029296874994],[22.87666015625001,47.947265625],[23.054785156250006,48.00654296875],[23.139453125000017,48.08740234375],[23.20263671875,48.084521484374996],[23.408203125,47.989990234375],[23.628710937500017,47.995849609375],[24.578906250000017,47.931054687499994],[24.979101562500006,47.72412109375],[25.464257812500023,47.910791015624994],[25.689257812500017,47.932470703125],[25.90869140625,47.967578125],[26.162695312500006,47.992529296875],[26.236230468750023,48.064355468749994],[26.276953125,48.113232421875],[26.3056640625,48.203759765624994],[26.4423828125,48.22998046875],[26.618945312500017,48.25986328125],[26.980761718750017,48.155029296875],[27.614062500000017,47.34052734375],[28.07177734375,46.978417968749994],[28.23945312500001,46.6408203125],[28.07470703125,45.598974609375],[28.2125,45.450439453125]]]},"properties":{"name":"Romania","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[146.71396484375012,43.743798828124994],[146.62197265625,43.81298828125006],[146.88408203125002,43.82915039062496],[146.71396484375012,43.743798828124994]]],[[[146.20761718750006,44.49765625],[146.5677734375,44.44042968749997],[145.91406249999997,44.10371093750004],[145.58681640625,43.84511718750002],[145.5558593750001,43.66459960937502],[145.46171875000007,43.870898437500045],[146.20761718750006,44.49765625]]],[[[148.59951171875,45.317626953125],[147.91376953125004,44.99038085937502],[147.65781250000012,44.97714843749998],[146.89746093750003,44.404296875],[147.24658203124997,44.856054687500006],[147.88554687500007,45.22563476562499],[147.9240234375001,45.38330078125006],[148.05605468750005,45.26210937500005],[148.32421874999997,45.28242187500001],[148.8122070312501,45.510009765625],[148.83710937500004,45.36269531250002],[148.59951171875,45.317626953125]]],[[[149.68769531250004,45.64204101562501],[149.44707031250002,45.593359375000034],[149.9623046875,46.02192382812504],[150.553125,46.208544921875045],[149.68769531250004,45.64204101562501]]],[[[152.00205078125006,46.89716796874998],[151.72343750000007,46.82880859375001],[152.28886718750007,47.1421875],[152.00205078125006,46.89716796874998]]],[[[154.81044921875005,49.31201171875],[154.61093750000006,49.29404296874998],[154.82490234375004,49.64692382812501],[154.81044921875005,49.31201171875]]],[[[155.9210937500001,50.30219726562501],[155.39716796875004,50.04125976562497],[155.24306640625,50.09462890625002],[155.21835937500012,50.29785156250003],[155.68017578124997,50.400732421875034],[156.096875,50.771875],[155.9210937500001,50.30219726562501]]],[[[156.40507812500002,50.65761718750005],[156.16796874999997,50.73188476562498],[156.37646484374997,50.86210937499996],[156.4875,50.84296874999998],[156.40507812500002,50.65761718750005]]],[[[142.76103515625002,54.393945312499966],[143.32470703125003,52.96308593749998],[143.15556640625002,52.08374023437497],[143.29951171875004,51.632373046875045],[143.81601562500006,50.28261718750002],[144.71376953125,48.64028320312502],[144.04873046875,49.249169921874994],[143.73232421875,49.31201171875],[143.10498046875003,49.198828125000034],[142.57421874999997,48.07216796875002],[142.55693359375002,47.737890625000034],[143.21767578125005,46.79487304687504],[143.48564453125002,46.752050781250006],[143.58066406250012,46.360693359375034],[143.43164062500003,46.02866210937498],[143.28232421875006,46.55898437500002],[142.57802734375005,46.700781250000034],[142.07714843749997,45.91704101562499],[141.83037109375002,46.451074218749966],[142.03867187500012,47.140283203124966],[141.9640625000001,47.58745117187502],[142.18173828125012,48.01337890625001],[141.86630859375006,48.750097656250006],[142.1422851562501,49.56914062499999],[142.06601562500006,50.630468750000034],[142.20673828125004,51.22255859375002],[141.72236328125004,51.73632812499997],[141.66083984375004,52.27294921874997],[141.85556640625012,52.79350585937499],[141.82353515625007,53.33950195312502],[142.1419921875,53.49560546875003],[142.52617187500002,53.44746093749998],[142.70595703125,53.89570312499998],[142.33496093749997,54.28071289062501],[142.76103515625002,54.393945312499966]]],[[[137.17861328125005,55.100439453125034],[137.05527343750006,54.9267578125],[136.71464843750002,54.956152343750034],[137.17861328125005,55.100439453125034]]],[[[137.94052734375012,55.092626953125034],[138.20615234375012,55.03354492187498],[137.72148437500007,54.66323242187505],[137.46269531250002,54.873388671875034],[137.23291015624997,54.79057617187496],[137.5773437500001,55.19702148437497],[137.94052734375012,55.092626953125034]]],[[[21.235742187500023,55.26411132812498],[22.072363281250034,55.06367187499998],[22.56728515625005,55.05913085937496],[22.82470703125,54.87128906249998],[22.684472656250023,54.56293945312504],[22.679882812500068,54.493017578125006],[22.766210937499977,54.356787109375034],[22.168457031250057,54.35986328125006],[21.14052734375008,54.39179687499998],[19.604394531250023,54.45917968750004],[19.974511718750023,54.92119140625002],[20.520312500000017,54.994873046875],[20.89980468750008,55.286669921875045],[20.957812500000074,55.27890625000006],[20.594824218750006,54.982373046874955],[20.995898437500017,54.90268554687506],[21.18886718750008,54.93520507812502],[21.235742187500023,55.26411132812498]]],[[[166.65029296875005,54.83906249999998],[166.64511718750006,54.69409179687503],[165.75107421875006,55.294531250000034],[166.27578125000005,55.311962890624955],[166.24804687499997,55.16542968750002],[166.65029296875005,54.83906249999998]]],[[[150.58994140625006,59.01875],[150.47021484375003,59.05405273437498],[150.66621093750004,59.16015625000003],[150.58994140625006,59.01875]]],[[[163.63515625000005,58.603369140625006],[163.47138671875004,58.509375],[163.7609375000001,59.01503906250002],[164.57265625,59.22114257812501],[164.61572265624997,58.885595703125034],[163.63515625000005,58.603369140625006]]],[[[35.8161132812501,65.18208007812501],[35.77871093750005,64.97666015625],[35.52890625000006,65.15107421875001],[35.8161132812501,65.18208007812501]]],[[[70.02070312500004,66.502197265625],[69.65136718750003,66.56533203125],[69.50273437500002,66.75107421875],[70.07666015624997,66.69589843750003],[70.02070312500004,66.502197265625]]],[[[-179.79853515625,68.9404296875],[-178.873876953125,68.75410156249995],[-178.69262695312503,68.54599609375],[-178.09746093750002,68.4248046875],[-178.05581054687497,68.26489257812503],[-177.79677734374997,68.33798828125],[-178.37304687500003,68.56567382812503],[-177.52724609375002,68.29438476562501],[-177.58920898437503,68.22421875],[-175.34521484375,67.67807617187503],[-175.37470703124998,67.35737304687498],[-175.00268554687494,67.4375],[-174.849853515625,67.34887695312503],[-174.92490234375,66.62314453125006],[-174.503759765625,66.537939453125],[-174.39409179687496,66.34423828124997],[-174.084765625,66.47309570312504],[-174.06503906249998,66.22958984374998],[-173.77397460937502,66.43466796875003],[-174.23159179687497,66.63188476562505],[-174.08642578125,66.94287109375],[-174.55009765624993,67.090625],[-173.6796875,67.144775390625],[-173.15781249999998,67.06909179687503],[-173.32353515625,66.95483398437503],[-173.25893554687497,66.84008789062503],[-173.19301757812497,66.99360351562504],[-172.5201171875,66.952490234375],[-173.00751953125,67.06489257812498],[-171.79555664062502,66.93173828125003],[-170.50952148437503,66.34365234375005],[-170.604443359375,66.24892578125002],[-170.30122070312504,66.29404296874998],[-170.24394531250002,66.16928710937503],[-169.777880859375,66.14311523437505],[-169.83168945312497,65.99892578124997],[-170.54067382812497,65.86542968749995],[-170.66630859375,65.62153320312501],[-171.42153320312502,65.81035156250002],[-171.10585937500002,65.51103515625005],[-171.90712890625,65.495947265625],[-172.78330078124998,65.68105468749997],[-172.23281250000002,65.45571289062497],[-172.30927734375004,65.27563476562497],[-172.66191406249993,65.24853515625006],[-172.28603515625002,65.20571289062502],[-172.21318359375,65.04814453124999],[-173.08579101562498,64.81733398437495],[-172.80107421874996,64.79052734375],[-172.90087890624994,64.62885742187501],[-172.40146484374998,64.413916015625],[-172.73916015624997,64.41225585937502],[-172.90317382812498,64.52607421875004],[-172.96005859375003,64.32768554687502],[-173.27548828124998,64.2896484375],[-173.327490234375,64.53955078125003],[-173.72973632812497,64.36450195312497],[-174.57055664062503,64.7177734375],[-175.39511718749998,64.80239257812502],[-175.85385742187498,65.01083984375003],[-176.09326171875,65.471044921875],[-177.05625,65.613623046875],[-177.48876953125,65.50371093749999],[-178.4125,65.49555664062501],[-178.93906249999998,66.03276367187505],[-178.74672851562497,66.01367187500006],[-178.52656250000004,66.40156250000004],[-178.86811523437498,66.18706054687502],[-179.14340820312503,66.37504882812505],[-179.327197265625,66.16259765625003],[-179.68330078124998,66.18413085937505],[-179.78969726562497,65.90087890625],[-179.352099609375,65.51674804687497],[-180,65.06723632812498],[-180,65.31196289062501],[-180,65.55678710937497],[-180,65.80156250000002],[-180,66.04628906250002],[-180,66.29106445312499],[-180,66.53583984375004],[-180,66.78056640625005],[-180,67.02534179687501],[-180,67.27011718750006],[-180,67.51484374999998],[-180,67.75961914062503],[-180,68.00439453124997],[-180,68.24912109375],[-180,68.49389648437497],[-180,68.738671875],[-179.999951171875,68.98344726562505],[-179.79853515625,68.9404296875]]],[[[50.265234375,69.18559570312502],[49.62626953125002,68.85971679687498],[48.91035156250004,68.74306640625002],[48.4390625,68.80488281249998],[48.319921875,69.26923828125001],[48.8449218750001,69.49472656250003],[49.22519531250006,69.51123046875],[50.265234375,69.18559570312502]]],[[[161.46708984375002,68.90097656250003],[161.08281250000007,69.4056640625],[161.50517578125007,69.63945312500002],[161.46708984375002,68.90097656250003]]],[[[169.20078125000006,69.58046875],[168.34804687500005,69.66435546875005],[167.86474609375003,69.90107421875004],[168.35791015625003,70.01567382812502],[169.37480468750007,69.88261718749999],[169.20078125000006,69.58046875]]],[[[60.450488281250074,69.93486328124999],[60.44023437500002,69.72592773437506],[59.637011718750074,69.72104492187503],[59.50263671875004,69.86621093750003],[58.952734375,69.89277343750004],[58.51992187500005,70.31831054687504],[59.04804687500004,70.46049804687505],[60.450488281250074,69.93486328124999]]],[[[52.90332031250003,71.36499023437503],[53.19257812500004,71.21528320312498],[53.0226562500001,70.96870117187501],[52.24960937500006,71.28491210937506],[52.90332031250003,71.36499023437503]]],[[[178.8615234375001,70.826416015625],[178.68388671875013,71.10566406250004],[180,71.53774414062505],[180,70.993017578125],[178.8615234375001,70.826416015625]]],[[[137.95986328125005,71.50766601562503],[137.71181640625005,71.4232421875],[137.06406250000006,71.52988281250003],[137.816796875,71.58789062500006],[137.95986328125005,71.50766601562503]]],[[[-178.87646484375,71.57705078124997],[-178.13388671874998,71.46547851562497],[-177.523583984375,71.16689453125],[-179.415673828125,70.91899414062502],[-179.999951171875,70.993017578125],[-179.999951171875,71.53774414062505],[-178.87646484375,71.57705078124997]]],[[[77.6325195312501,72.291259765625],[76.87109374999997,72.317041015625],[77.74853515625003,72.63120117187506],[78.36513671875005,72.48242187500003],[77.6325195312501,72.291259765625]]],[[[79.50146484374997,72.72192382812497],[78.63320312500005,72.85073242187502],[79.16425781250004,73.0943359375],[79.50146484374997,72.72192382812497]]],[[[74.660546875,72.87343750000002],[74.18066406250003,72.975341796875],[74.19853515625002,73.10908203124998],[74.9615234375,73.0625],[74.660546875,72.87343750000002]]],[[[120.26132812500012,73.08984374999997],[119.79208984375006,73.04541015624997],[119.64042968750002,73.12431640625007],[120.26132812500012,73.08984374999997]]],[[[55.31982421875003,73.30830078124998],[56.42958984375005,73.201171875],[56.121679687500006,72.80659179687498],[55.40332031249997,72.54907226562503],[55.29785156249997,71.93535156250005],[56.45439453125002,71.10737304687504],[57.62539062500005,70.72880859374999],[57.14589843750005,70.58911132812506],[56.38574218749997,70.73413085937503],[56.49970703125004,70.56640625000003],[55.687304687500074,70.69218749999999],[54.60117187500006,70.68007812500002],[53.383593750000074,70.87353515625],[53.670507812500006,71.08691406250003],[54.155664062499994,71.12548828125],[53.40996093750002,71.34013671875002],[53.41162109375003,71.530126953125],[51.93789062500005,71.47470703124998],[51.511328125,71.64809570312497],[51.58251953124997,72.07119140625],[52.252050781250006,72.12973632812503],[52.66191406250002,72.33686523437495],[52.91660156250006,72.66889648437501],[52.5792968750001,72.791357421875],[53.3698242187501,72.91674804687506],[53.2511718750001,73.182958984375],[54.80390625000004,73.38764648437498],[55.31982421875003,73.30830078124998]]],[[[70.67392578125006,73.09501953125005],[70.04072265625004,73.03715820312507],[69.99589843750002,73.359375],[70.94023437500002,73.51440429687503],[71.6261718750001,73.17397460937497],[70.67392578125006,73.09501953125005]]],[[[142.18486328125007,73.89589843750005],[143.34375,73.56875],[143.45146484375007,73.231298828125],[141.59667968750003,73.31083984375005],[140.66279296875004,73.45200195312503],[139.785546875,73.35522460937503],[141.08476562500002,73.86586914062497],[142.18486328125007,73.89589843750005]]],[[[83.5490234375001,74.07177734375],[82.8177734375,74.09160156250005],[83.14980468750005,74.151611328125],[83.5490234375001,74.07177734375]]],[[[141.01025390625003,73.99946289062501],[140.40947265625002,73.92167968750005],[140.1935546875001,74.23671875000002],[141.03857421875003,74.24272460937502],[141.01025390625003,73.99946289062501]]],[[[113.38720703124997,74.40043945312499],[112.78242187500004,74.09506835937503],[111.50341796874997,74.35307617187502],[111.87978515625,74.36381835937499],[112.08447265624997,74.54897460937505],[113.38720703124997,74.40043945312499]]],[[[86.653125,74.981298828125],[87.05214843750005,74.982568359375],[86.92714843750005,74.83076171874998],[86.25859375000002,74.89350585937498],[86.653125,74.981298828125]]],[[[82.17236328125003,75.41938476562501],[81.97851562499997,75.24711914062499],[81.65478515625003,75.28891601562498],[81.71210937500004,75.45141601562506],[82.165625,75.515625],[82.17236328125003,75.41938476562501]]],[[[146.79521484375007,75.37075195312505],[148.43242187500002,75.41352539062495],[148.59013671875007,75.23637695312502],[150.82236328125006,75.15654296875002],[150.64628906250002,74.944580078125],[149.596875,74.77260742187505],[148.296875,74.80043945312502],[146.14853515625012,75.19829101562499],[146.5375,75.58178710937506],[146.79521484375007,75.37075195312505]]],[[[135.9486328125,75.40957031250005],[135.45195312500007,75.38955078124997],[135.6986328125,75.84526367187499],[136.16894531249997,75.60556640625],[135.9486328125,75.40957031250005]]],[[[140.04873046875,75.82895507812503],[140.81591796874997,75.63071289062498],[141.48544921875012,76.13715820312495],[142.66953125000012,75.86342773437497],[143.68583984375002,75.86367187500002],[145.35996093750006,75.53046874999998],[144.01972656250004,75.04467773437506],[143.1703125,75.11689453125001],[142.72949218749997,75.33764648437506],[142.941796875,75.71328125000002],[142.30791015625007,75.69169921875005],[142.19882812500006,75.39267578124998],[143.12792968749997,74.9703125],[142.47275390625006,74.82041015625],[141.98730468750003,74.99125976562499],[140.26787109375002,74.846923828125],[139.68125,74.96406249999995],[139.09912109374997,74.65654296875002],[138.09228515625003,74.79746093750003],[136.94765625000005,75.32553710937498],[137.28974609375004,75.34863281249997],[137.26884765625002,75.7494140625],[137.70654296875003,75.75957031250002],[137.56054687499997,75.95522460937502],[138.20761718750006,76.11494140624995],[138.91953125000006,76.19672851562501],[140.04873046875,75.82895507812503]]],[[[96.5324218750001,76.278125],[96.30058593750002,76.121728515625],[95.31113281250006,76.21474609375002],[95.37988281250003,76.2890625],[96.5324218750001,76.278125]]],[[[112.47802734375003,76.62089843749999],[112.531640625,76.450048828125],[111.96894531250004,76.62617187500001],[112.47802734375003,76.62089843749999]]],[[[149.15019531250002,76.65991210937506],[148.39863281250004,76.64824218750007],[149.4064453125001,76.78208007812498],[149.15019531250002,76.65991210937506]]],[[[67.7653320312501,76.23759765624999],[61.35595703124997,75.31484375000002],[60.27685546875003,75.00756835937503],[60.501367187499994,74.90463867187503],[59.67402343750004,74.61015624999999],[59.24013671875005,74.69296874999998],[59.040429687499994,74.48554687500001],[58.53466796875003,74.49892578124997],[58.6178710937501,74.22739257812498],[57.76738281250002,74.013818359375],[57.755957031250006,73.769189453125],[57.313085937500006,73.838037109375],[57.54257812500006,73.65820312500003],[56.96386718750003,73.36655273437503],[56.43037109375004,73.29721679687503],[55.00683593750003,73.45385742187506],[54.29990234375006,73.35097656249997],[53.7628906250001,73.76616210937499],[54.64267578125006,73.95957031250006],[55.34091796875006,74.41962890624998],[56.13710937500005,74.49609375000003],[55.5822265625001,74.627685546875],[56.4987304687501,74.95708007812505],[55.81005859374997,75.12490234374997],[56.03554687499999,75.19423828124997],[56.57031250000003,75.09775390625003],[56.8444335937501,75.351416015625],[57.606835937499994,75.34125976562498],[58.05830078125004,75.6630859375],[58.88125,75.85478515625007],[60.27929687499997,76.09624023437505],[60.94218750000002,76.07128906250003],[61.20166015624997,76.28203125000007],[62.97148437500002,76.23666992187498],[64.4634765625,76.37817382812503],[67.65185546874997,77.011572265625],[68.48574218750005,76.93369140625003],[68.94169921875002,76.707666015625],[67.7653320312501,76.23759765624999]]],[[[96.28544921875002,77.02666015625007],[95.27031250000007,77.01884765624999],[96.52841796875006,77.20551757812501],[96.28544921875002,77.02666015625007]]],[[[89.51425781250006,77.18881835937498],[89.14169921875012,77.22680664062497],[89.61621093749997,77.31103515625],[89.51425781250006,77.18881835937498]]],[[[130.68730468750007,42.30253906249999],[130.52695312500012,42.535400390625],[130.42480468749997,42.72705078124997],[131.06855468750004,42.90224609375005],[131.25732421875003,43.378076171874994],[131.2552734375,44.07158203124999],[130.9816406250001,44.844335937500034],[131.44687500000012,44.984033203124966],[131.85185546875002,45.32685546875001],[132.93603515624997,45.029931640624994],[133.1134765625001,45.130712890625006],[133.18603515625003,45.49482421875004],[133.43642578125,45.60468750000004],[133.86132812500003,46.24775390625004],[134.1676757812501,47.30219726562501],[134.75234375,47.71542968749998],[134.56601562500006,48.02250976562502],[134.66523437500004,48.25390625],[134.29335937500005,48.37343750000002],[133.46835937500006,48.09716796875003],[133.14404296875003,48.10566406249998],[132.7072265625001,47.94726562500006],[132.47626953125004,47.714990234374994],[130.96191406249997,47.70932617187498],[130.7326171875001,48.01923828124998],[130.80429687500012,48.34150390624998],[130.5521484375,48.602490234374955],[130.553125,48.861181640625006],[130.1959960937501,48.89165039062499],[129.49814453125012,49.38881835937502],[129.0651367187501,49.374658203124966],[128.70400390625,49.60014648437499],[127.99960937500006,49.56860351562506],[127.55078124999997,49.801806640625045],[127.590234375,50.20898437500003],[127.33720703125007,50.35014648437502],[127.30703125000005,50.70795898437501],[126.92480468749997,51.10014648437496],[126.34169921875,52.36201171875001],[125.64902343750012,53.042285156250045],[125.075,53.20366210937496],[124.81230468750002,53.133837890625045],[123.6078125,53.546533203124994],[120.98544921875012,53.28457031250002],[120.09453125000007,52.787207031250034],[120.0675781250001,52.632910156250034],[120.65615234375,52.56665039062503],[120.74980468750007,52.096533203125006],[120.06689453125003,51.60068359375006],[119.16367187500006,50.40600585937503],[119.34628906250012,50.278955078124994],[119.25986328125012,50.06640625000003],[118.4515625,49.84448242187503],[117.8734375,49.51347656250002],[116.6833007812501,49.82377929687499],[116.551171875,49.92031250000002],[116.35117187500012,49.97807617187499],[116.21679687500003,50.00927734375003],[116.13457031250002,50.01079101562499],[115.9259765625001,49.95214843750003],[115.79521484375002,49.90590820312502],[115.71777343750003,49.88061523437503],[115.58798828125006,49.88603515624996],[115.42919921874997,49.89648437499997],[115.36503906250002,49.911767578124966],[115.27451171875006,49.948876953124994],[115.00332031250005,50.138574218749994],[114.74316406249997,50.23369140625002],[114.29707031250004,50.27441406250006],[113.57421874999997,50.00703125000001],[113.44550781250004,49.94160156250001],[113.31904296875004,49.87431640624999],[113.16416015625012,49.79716796874999],[113.09208984375007,49.692529296874994],[113.05556640625,49.61625976562499],[112.91484375000002,49.569238281249994],[112.80644531250007,49.52358398437502],[112.69736328125012,49.50727539062498],[112.49492187500002,49.532324218750034],[112.07968750000006,49.42421875000002],[111.42929687500006,49.342626953125034],[111.3366210937501,49.355859374999966],[111.20419921875012,49.304296875000034],[110.82792968750002,49.16616210937505],[110.70976562500002,49.14296875000002],[110.42783203125006,49.219970703125],[110.32138671875012,49.215869140625045],[110.19990234375004,49.17041015625003],[109.5287109375,49.269873046875034],[109.45371093750012,49.29633789062501],[109.23671875000005,49.334912109374955],[108.61367187500005,49.32280273437499],[108.52246093750003,49.34150390624998],[108.4069335937501,49.39638671875005],[107.96542968750012,49.65351562500004],[107.91660156250012,49.947802734375045],[107.63095703125012,49.98310546875004],[107.3470703125,49.986669921875034],[107.23330078125,49.989404296874994],[107.14306640625003,50.03300781249999],[107.04023437500004,50.086474609375045],[106.94130859375005,50.19667968750002],[106.71113281250004,50.312597656250006],[106.57441406250004,50.32880859375004],[106.36845703125002,50.317578124999955],[106.21787109375006,50.304589843749966],[105.38359375000002,50.47373046874998],[104.07871093750012,50.15424804687498],[103.63291015625006,50.138574218749994],[103.49628906250004,50.16494140625005],[103.42119140625002,50.18706054687502],[103.3043945312501,50.200292968750034],[102.28837890625007,50.58510742187502],[102.31660156250004,50.71845703125001],[102.21503906250004,50.82944335937506],[102.19453125000004,51.05068359375002],[102.15195312500006,51.107519531250034],[102.14238281250007,51.21606445312503],[102.16005859375005,51.260839843750006],[102.1556640625,51.31376953124996],[102.1115234375001,51.353466796874955],[101.97919921875004,51.382226562499966],[101.82119140625,51.421044921874966],[101.57089843750006,51.46718750000005],[101.38125,51.45263671875],[100.53623046875006,51.713476562500034],[100.46894531250004,51.72607421875003],[100.23037109375,51.729833984375006],[100.0345703125,51.73710937499996],[99.92167968750002,51.755517578124994],[99.71923828124997,51.87163085937502],[98.89316406250006,52.11728515625006],[98.64052734375005,51.80117187500005],[98.103125,51.483544921874994],[97.82529296875012,50.985253906249994],[97.953125,50.85517578124998],[98.02978515625003,50.64462890624998],[98.07890625000002,50.60380859375002],[98.14501953124997,50.56855468750001],[98.22050781250007,50.55717773437502],[98.2794921875001,50.53325195312502],[98.25029296875002,50.30244140624998],[98.00390625000003,50.01425781249998],[97.35976562500005,49.741455078125],[97.20859375000006,49.73081054687506],[96.98574218750005,49.88281250000003],[96.31503906250012,49.90112304687503],[96.06552734375006,49.99873046875001],[95.52265625000004,49.911230468750034],[95.11142578125012,49.935449218749994],[94.93027343750006,50.04375],[94.8112304687501,50.04819335937506],[94.71806640625002,50.04326171875002],[94.67548828125004,50.02807617187506],[94.61474609375003,50.02373046874996],[94.56464843750004,50.08793945312499],[94.35468750000004,50.221826171874994],[94.25107421875006,50.55639648437503],[93.103125,50.60390625000002],[92.94130859375005,50.77822265625002],[92.85644531250003,50.78911132812502],[92.77929687500003,50.778662109375006],[92.738671875,50.71093749999997],[92.68134765625004,50.683203125],[92.6266601562501,50.68828124999999],[92.57890625000002,50.725439453125006],[92.42636718750006,50.803076171875006],[92.35478515625002,50.86416015625002],[92.29580078125,50.84980468750004],[92.19238281249997,50.700585937499994],[91.80429687500006,50.693603515625],[91.4464843750001,50.52216796874998],[91.41503906249997,50.46801757812506],[91.34082031249997,50.470068359375034],[91.30058593750002,50.46337890625],[91.2337890625,50.45239257812497],[91.02158203125012,50.41547851562501],[90.83808593750004,50.32373046874997],[90.76074218749997,50.30595703124999],[90.71435546874997,50.25942382812502],[90.65507812500007,50.22236328125001],[90.05371093750003,50.09375],[89.64384765625002,49.90302734374998],[89.65410156250007,49.71748046875001],[89.57919921875006,49.69970703125003],[89.475,49.66054687500005],[89.39560546875006,49.61152343750001],[89.24394531250007,49.62705078125006],[89.20292968750007,49.59570312499997],[89.17998046875002,49.5322265625],[89.10947265625012,49.50136718750002],[89.00839843750006,49.472802734374994],[88.97060546875,49.483740234375006],[88.94541015625012,49.50766601562498],[88.90019531250002,49.53969726562502],[88.86386718750006,49.52763671874996],[88.83164062500012,49.44843749999998],[88.633203125,49.486132812500045],[88.19257812500004,49.451708984375045],[88.13554687500002,49.38149414062502],[88.11572265624997,49.25629882812501],[88.0285156250001,49.219775390625045],[87.98808593750002,49.186914062499994],[87.9347656250001,49.16455078124997],[87.81425781250002,49.162304687499955],[87.7625,49.16582031249996],[87.5158203125001,49.122412109375006],[87.41669921875004,49.07661132812501],[87.32285156250012,49.085791015625006],[86.62646484374997,49.56269531250001],[86.67548828125004,49.77729492187501],[86.1808593750001,49.49931640624996],[85.2326171875001,49.61582031249998],[84.9894531250001,50.061425781249994],[84.32324218749997,50.239160156249966],[83.94511718750007,50.774658203125],[83.35732421875005,50.99458007812504],[82.76083984375012,50.89335937500002],[82.49394531250007,50.72758789062499],[81.46591796875006,50.73984375],[81.38828125000006,50.95649414062501],[81.0714843750001,50.96875],[81.12724609375002,51.19106445312502],[80.73525390625,51.29340820312498],[80.44804687500002,51.18334960937503],[80.42363281250002,50.94628906249997],[79.98623046875,50.774560546874966],[77.85996093750006,53.269189453124994],[76.48476562500005,54.02255859374998],[76.42167968750007,54.151513671874966],[76.65458984375007,54.14526367187503],[76.8373046875,54.4423828125],[75.43720703125004,54.08964843749999],[75.22021484374997,53.89379882812506],[74.45195312500007,53.64726562500002],[74.35156250000003,53.487646484375006],[73.85898437500006,53.61972656249998],[73.40693359375004,53.44755859374999],[73.30566406250003,53.707226562499955],[73.71240234375003,54.04238281250002],[73.22988281250005,53.957812500000045],[72.62226562500004,54.13432617187502],[72.44677734375003,53.94184570312498],[72.18603515625003,54.32563476562501],[72.00449218750006,54.20566406249998],[71.09316406250005,54.21220703124999],[71.18554687500003,54.59931640624998],[70.73808593750007,55.30517578125],[70.18242187500002,55.162451171875034],[68.9772460937501,55.389599609374955],[68.20625,55.16093750000002],[68.15585937500006,54.97670898437505],[65.476953125,54.62329101562497],[65.08837890624997,54.340185546875034],[64.46123046875002,54.38417968750002],[61.92871093750003,53.94648437500004],[61.231054687500006,54.01948242187498],[60.97949218749997,53.62172851562505],[61.53496093750002,53.52329101562506],[61.22890625,53.445898437500006],[61.19921874999997,53.28715820312502],[61.65986328125004,53.22846679687504],[62.08271484375004,53.00541992187499],[61.047460937500006,52.97246093750002],[60.77441406249997,52.67578124999997],[60.99453125000005,52.33686523437504],[60.03027343749997,51.93325195312505],[60.464746093749994,51.651171875000045],[61.55468750000003,51.32460937500005],[61.38945312500002,50.86103515625001],[60.94228515625005,50.69550781250004],[60.42480468749997,50.67915039062498],[60.05859374999997,50.850292968749955],[59.812402343749994,50.58203125],[59.523046875,50.492871093749955],[59.4523437500001,50.62041015625002],[58.88369140625005,50.694433593750006],[58.359179687500074,51.063818359375034],[57.83886718750003,51.091650390625006],[57.44218750000002,50.88886718749998],[57.01171874999997,51.06518554687503],[56.49140625000004,51.01953124999997],[55.68623046875004,50.582861328125006],[54.64160156250003,51.011572265625034],[54.555273437500006,50.535791015624994],[54.139746093750006,51.04077148437503],[53.33808593750004,51.48237304687504],[52.57119140625005,51.481640624999955],[52.21914062499999,51.709375],[51.344531250000074,51.47534179687503],[51.16347656250005,51.6474609375],[50.79394531249997,51.729199218749955],[50.246875,51.28950195312498],[49.49804687500003,51.08359375000006],[49.32343750000004,50.851708984374966],[48.625097656250006,50.61269531250005],[48.7589843750001,49.92832031250006],[48.33496093750003,49.858251953125006],[47.7057617187501,50.37797851562502],[47.42919921874997,50.35795898437502],[46.889550781249994,49.69697265625001],[46.80205078125002,49.36708984375002],[47.031347656250006,49.150292968749994],[46.70263671875003,48.80556640625002],[46.660937500000074,48.41225585937502],[47.06464843750004,48.23247070312499],[47.292382812499994,47.74091796875004],[47.48193359374997,47.80390624999998],[48.16699218750003,47.70878906249996],[48.959375,46.77460937499998],[48.558398437500074,46.75712890624999],[48.54121093750004,46.60561523437502],[49.232226562500074,46.33715820312503],[48.683691406250006,46.08618164062497],[48.72958984375006,45.896826171875034],[48.4870117187501,45.93486328124996],[47.63330078124997,45.58403320312499],[47.46328125,45.67968750000003],[47.5294921875001,45.530224609374955],[47.3512695312501,45.21772460937498],[46.7072265625001,44.503320312499994],[47.30703125000005,44.103125],[47.462792968749994,43.55502929687498],[47.64648437500003,43.88461914062498],[47.463183593750074,43.03505859375002],[48.572851562500006,41.84448242187503],[47.79101562499997,41.19926757812502],[47.31767578125002,41.28242187500001],[46.74931640625002,41.812597656250006],[46.42988281250004,41.890966796875006],[46.21269531250002,41.989892578124994],[45.63857421875005,42.20507812500003],[45.63427734374997,42.234716796875034],[45.72753906249997,42.47504882812498],[45.70527343750004,42.49809570312496],[45.56289062499999,42.53574218749998],[45.34375,42.52978515625003],[45.16025390625006,42.675],[45.07158203125002,42.69414062500002],[44.94335937499997,42.73027343750002],[44.870996093749994,42.75639648437499],[44.850488281249994,42.746826171875],[44.77109375000006,42.61679687499998],[44.69179687499999,42.709619140624966],[44.64433593750002,42.734716796875034],[44.50585937500003,42.748632812500006],[44.329492187499994,42.703515624999966],[44.10273437500004,42.616357421874994],[44.004687500000074,42.59560546875002],[43.95742187500005,42.56655273437505],[43.825976562500074,42.571533203125],[43.759863281250006,42.593847656250006],[43.738378906250006,42.61699218750002],[43.74990234375005,42.65751953125002],[43.79541015624997,42.702978515625034],[43.78261718750005,42.747021484374955],[43.62304687500003,42.80771484374998],[43.5578125000001,42.844482421875],[43.089160156250074,42.9890625],[43.00019531250004,43.04965820312506],[42.991601562499994,43.09150390624998],[42.76064453125005,43.169580078124966],[41.58056640624997,43.21923828124997],[41.460742187500074,43.276318359374955],[41.35820312500002,43.33339843750005],[41.08310546875006,43.37446289062498],[40.94199218750006,43.41806640624998],[40.801660156249994,43.479931640624955],[40.64804687500006,43.53388671875004],[40.084570312500006,43.553125],[40.02373046875002,43.48486328125],[39.873632812500006,43.47280273437502],[38.71728515624997,44.28808593750003],[38.18125,44.41967773437503],[37.851464843749994,44.698828125000034],[37.49511718750003,44.69526367187504],[37.20478515625004,44.97197265624999],[36.62763671875004,45.15131835937504],[36.941210937500074,45.289697265624994],[36.72041015625004,45.371875],[36.8659179687501,45.42705078124999],[37.21357421875004,45.272314453125006],[37.6471679687501,45.37719726562506],[37.61240234375006,45.56469726562506],[37.93310546875003,46.001708984375],[38.014257812500006,46.047753906249966],[38.07958984375003,45.93481445312506],[38.18359374999997,46.09482421875006],[38.49228515625006,46.09052734374998],[37.913867187500074,46.40649414062503],[37.766503906249994,46.63613281250002],[38.50097656249997,46.663671875000034],[38.43867187500004,46.813085937500006],[39.29345703125003,47.105761718750045],[39.19570312499999,47.268847656250045],[39.023730468750074,47.27221679687503],[38.928320312500006,47.175683593749994],[38.55244140625004,47.15034179687498],[38.7619140625001,47.261621093749994],[38.21435546875003,47.091455078124966],[38.36884765625004,47.609960937500006],[38.90029296875005,47.85512695312502],[39.77871093750005,47.88754882812506],[39.95791015625005,48.268896484375034],[39.8356445312501,48.54277343749996],[39.6447265625001,48.591210937499966],[39.792871093749994,48.807714843750034],[40.00361328125004,48.82207031250002],[39.68652343749997,49.007910156250034],[40.10878906250005,49.251562500000034],[40.080664062500006,49.576855468749955],[39.780566406250074,49.57202148437503],[39.17480468750003,49.85595703124997],[38.91835937499999,49.82470703125],[38.258593750000074,50.05234375],[38.046875,49.92001953125006],[37.42285156249997,50.411474609375006],[36.619433593750074,50.209228515625],[36.1164062500001,50.408544921875006],[35.59111328125002,50.36875],[35.31191406250005,51.043896484374955],[35.0640625,51.203417968750045],[34.21386718750003,51.25537109375006],[34.12109375000003,51.67915039062498],[34.397851562499994,51.780419921874994],[33.735253906249994,52.344775390625045],[32.435449218749994,52.307226562500034],[32.12226562500004,52.05058593749996],[31.763378906250097,52.10107421875003],[31.758593750000017,52.125830078125034],[31.690625,52.22065429687498],[31.64990234374997,52.26220703125],[31.60156250000003,52.284814453124994],[31.57734375000004,52.31230468749999],[31.585546875,52.532470703125],[31.56484375,52.75922851562501],[31.53515624999997,52.798242187499966],[31.442773437499994,52.86181640625003],[31.35302734374997,52.93344726562498],[31.295117187500097,52.98979492187499],[31.25878906249997,53.01669921875006],[31.364550781250017,53.13896484375002],[31.388378906250097,53.18481445312503],[31.41787109375005,53.196044921875],[31.849707031250006,53.106201171875],[32.14199218750005,53.091162109375034],[32.46933593750006,53.270312500000045],[32.578027343749994,53.312402343749994],[32.644433593749994,53.32890624999999],[32.70429687500004,53.33632812499999],[32.45097656250002,53.6533203125],[32.20039062500004,53.78125],[31.99218750000003,53.796875],[31.82080078124997,53.79194335937498],[31.754199218750017,53.81044921875002],[31.825292968750006,53.93500976562501],[31.837792968749994,54.00078124999999],[31.825976562500074,54.030712890624955],[31.79199218749997,54.05590820312503],[31.62841796874997,54.111181640625006],[31.403613281250017,54.195947265624966],[31.299121093750017,54.29169921875001],[31.184765625000097,54.452978515625006],[31.074804687500063,54.491796875],[31.154882812500063,54.610937500000034],[31.152148437500017,54.625341796875034],[31.12128906250004,54.64848632812496],[30.984179687500074,54.695898437500034],[30.79882812499997,54.78325195312499],[30.79101562499997,54.806005859375006],[30.804492187500074,54.8609375],[30.829882812500017,54.91499023437498],[30.977734375000097,55.05048828124998],[30.977734375000097,55.08779296875002],[30.958886718749994,55.13759765625005],[30.87744140625003,55.223437500000045],[30.81445312499997,55.27871093750002],[30.81054687499997,55.306982421875006],[30.82099609375004,55.330273437499955],[30.900585937500097,55.397412109374955],[30.906835937500063,55.57001953125004],[30.625585937500006,55.666259765625],[30.23359375000004,55.84521484375006],[30.04267578125004,55.83642578125003],[29.93701171874997,55.84526367187499],[29.881640625000074,55.83232421875002],[29.82392578125004,55.79511718749998],[29.74414062499997,55.770410156249994],[29.630078125000097,55.75117187499998],[29.482226562500074,55.6845703125],[29.412988281249994,55.72485351562506],[29.35341796875005,55.784375],[29.375,55.938720703125],[28.284277343750006,56.055908203125],[28.14794921875003,56.142919921875034],[28.202050781250023,56.260400390624994],[28.191699218750045,56.31557617187505],[28.169238281250017,56.386865234374994],[28.11083984375,56.51069335937501],[28.103125,56.545703125000045],[27.89208984375003,56.741064453125034],[27.88154296875001,56.82416992187501],[27.848632812500057,56.85341796875002],[27.806054687499994,56.86708984375005],[27.639453125000074,56.84565429687504],[27.83027343750004,57.19448242187505],[27.83828125000008,57.247705078124966],[27.82861328124997,57.293310546875006],[27.796875,57.316943359375045],[27.538671875000063,57.429785156250034],[27.51113281250005,57.508154296875006],[27.469726562500057,57.524023437500034],[27.35195312500005,57.528125],[27.4,57.66679687499999],[27.542089843750063,57.799414062500006],[27.778515625000068,57.87070312500006],[27.502441406250057,58.221337890624994],[27.434179687500006,58.787255859374994],[28.15107421875004,59.374414062499966],[28.0125,59.484277343749966],[28.05800781250008,59.781542968750045],[28.334570312500034,59.69252929687502],[28.518164062500034,59.849560546874955],[28.947265625000057,59.828759765624994],[29.147265625000045,59.999755859375],[30.12255859374997,59.873583984375074],[30.172656250000017,59.957128906250034],[29.72119140624997,60.19531249999997],[29.069140625000017,60.19145507812499],[28.643164062500006,60.375292968750045],[28.512792968750006,60.67729492187502],[27.797656250000074,60.53613281250003],[29.69013671875004,61.54609375000001],[31.18671875000004,62.48139648437504],[31.533984375000017,62.885400390624994],[31.180859375000097,63.208300781250074],[29.991503906250074,63.73515625000002],[30.50390625000003,64.02060546875],[30.513769531250006,64.2],[30.04189453125005,64.44335937499997],[30.072851562500063,64.76503906250005],[29.60419921875004,64.968408203125],[29.826953125000017,65.14506835937502],[29.608007812500006,65.248681640625],[29.715917968750063,65.62456054687502],[30.102734375000097,65.72626953125004],[29.066210937500045,66.89174804687497],[29.988085937500017,67.66826171874999],[29.343847656250006,68.06186523437506],[28.685156250000034,68.189794921875],[28.470703125000057,68.48837890625],[28.77285156250005,68.84003906249995],[28.414062500000057,68.90415039062506],[28.96582031250003,69.02197265625],[29.38828125,69.29814453125005],[30.08730468750005,69.43286132812503],[30.18017578124997,69.63583984375],[30.860742187499994,69.53842773437503],[30.869726562500006,69.78344726562506],[31.546972656250063,69.696923828125],[31.997949218749994,69.80991210937503],[31.98457031250004,69.95366210937499],[33.00781249999997,69.72211914062498],[32.91503906249997,69.60170898437497],[32.17675781250003,69.67402343749995],[32.37773437500002,69.47910156250003],[32.99980468750002,69.4701171875],[32.97890625000005,69.367333984375],[33.45429687500004,69.42817382812495],[33.14121093750006,69.068701171875],[33.684375,69.31025390625001],[35.85791015625003,69.19174804687503],[37.73056640625006,68.69213867187503],[38.43017578125003,68.35561523437505],[39.568945312500006,68.07172851562501],[39.82333984375006,68.05859375],[39.80927734375004,68.15083007812498],[40.38066406250002,67.831884765625],[40.96640625000006,67.71347656250003],[41.358789062499994,67.20966796874998],[41.18896484375003,66.82617187500003],[40.10332031250002,66.29995117187502],[38.65390625000006,66.06904296874995],[35.51347656250002,66.39580078125002],[34.82460937499999,66.61113281249999],[34.48261718750004,66.55034179687505],[34.4515625,66.651220703125],[33.15019531250002,66.84394531250001],[32.93046875000002,67.08681640625002],[31.895312500000074,67.16142578125002],[33.65595703125004,66.44262695312506],[33.36054687500004,66.32954101562501],[34.112695312499994,66.225244140625],[34.69179687500005,65.95185546874998],[34.77695312500006,65.76826171874998],[34.40644531250004,65.39575195312503],[35.03535156250004,64.44023437500005],[35.802050781250074,64.3353515625],[36.3649414062501,64.00283203125002],[37.44218750000002,63.813378906249966],[37.9679687500001,63.949121093749994],[38.0622070312501,64.09101562499995],[37.953710937500006,64.32011718749999],[37.183691406250006,64.40849609375007],[36.6242187500001,64.75053710937502],[36.534570312499994,64.93862304687497],[36.88281249999997,65.17236328124997],[39.7580078125001,64.57705078125002],[40.05781250000004,64.77075195312497],[40.44492187500006,64.7787109375],[39.7980468750001,65.349853515625],[39.816503906250006,65.59794921874999],[41.4757812500001,66.12343750000002],[42.21054687500006,66.51967773437502],[43.23320312500002,66.41552734375003],[43.653125,66.2509765625],[43.54189453125005,66.12338867187503],[43.84375,66.14238281249999],[44.10439453125005,66.00859374999999],[44.42929687500006,66.93774414062503],[43.7824218750001,67.25449218749998],[44.20468750000006,68.25375976562498],[43.33320312500004,68.67338867187502],[44.04804687500004,68.54882812499997],[45.891992187499994,68.47968750000001],[46.69042968750003,67.84882812500001],[45.52871093750005,67.75756835937497],[44.90214843750002,67.41313476562505],[45.56220703125004,67.18559570312507],[45.88535156250006,66.89106445312501],[46.4923828125001,66.80019531249997],[47.65585937500006,66.97592773437498],[47.87470703125004,67.58417968749998],[48.83320312500004,67.681494140625],[48.75429687500005,67.89594726562501],[49.15527343750003,67.87041015625005],[51.994726562500006,68.53876953124995],[52.3966796875001,68.35170898437505],[52.72265624999997,68.484033203125],[52.34404296875002,68.60815429687497],[53.80195312500004,68.99589843750002],[54.49121093750003,68.992333984375],[53.797656250000074,68.90747070312503],[53.9308593750001,68.43554687499997],[53.260546875000074,68.26748046875002],[54.476171875,68.29414062499995],[54.86132812500003,68.20185546874998],[55.418066406250006,68.56782226562501],[56.04365234375004,68.64887695312501],[57.126855468749994,68.55400390625005],[58.17304687500004,68.88974609375006],[59.0573242187501,69.00605468750004],[59.37050781250005,68.73837890625003],[59.09902343750005,68.4443359375],[59.725683593750006,68.35161132812502],[59.89599609374997,68.70634765624999],[60.489160156249994,68.72895507812498],[60.93359374999997,68.98676757812501],[60.17060546875004,69.59091796875],[60.90908203125005,69.84711914062495],[64.19042968750003,69.53466796875],[64.89628906250002,69.247802734375],[67.00244140625003,68.87358398437505],[68.37119140625006,68.31425781250005],[69.14052734375005,68.95063476562501],[68.54277343750002,68.96708984374999],[68.00585937499997,69.48002929687505],[67.62412109375,69.58442382812501],[67.06445312500003,69.69370117187498],[66.89667968750004,69.55380859374998],[67.28476562500006,70.73872070312498],[67.14335937500002,70.83754882812502],[66.70224609375006,70.81850585937497],[66.63964843749997,71.08139648437498],[68.2692382812501,71.68281250000001],[69.61181640625003,72.98193359375],[69.73828124999997,72.88496093749998],[71.5001953125001,72.91367187500003],[72.812109375,72.69140624999997],[72.57412109375,72.01254882812506],[71.86728515625,71.457373046875],[72.70449218750005,70.96323242187498],[72.5767578125,68.96870117187498],[73.59169921875005,68.48188476562501],[73.13945312500002,68.18134765624998],[73.06679687500005,67.766943359375],[71.84746093750002,67.00761718750005],[71.36523437500003,66.96152343749998],[71.53955078125003,66.68310546875],[70.72490234375007,66.51943359374997],[70.38281249999997,66.60249023437501],[70.69072265625002,66.74531249999998],[70.2833984375001,66.68579101562503],[69.8771484375001,66.84545898437506],[69.21777343749997,66.82861328125],[69.01347656250002,66.78833007812503],[69.19433593749997,66.57866210937505],[70.33945312500006,66.34238281250006],[71.35800781250006,66.35942382812505],[71.91699218749997,66.24672851562502],[72.32158203125002,66.33212890625],[72.4173828125,66.56079101562506],[73.79208984375,66.99531250000001],[74.07451171875007,67.41411132812499],[74.76953124999997,67.76635742187497],[74.39140625000007,68.42060546874995],[74.57958984375003,68.751220703125],[76.10751953125006,68.975732421875],[76.45917968750004,68.97827148437497],[77.2384765625001,68.46958007812498],[77.17441406250012,67.77851562499998],[77.77158203125006,67.57026367187501],[78.92246093750006,67.58911132812503],[77.58828125000005,67.75190429687498],[77.66484375000002,68.19038085937495],[77.99511718749997,68.25947265624998],[77.65068359375007,68.90302734375001],[76.00097656249997,69.23505859374998],[75.42001953125,69.23862304687498],[74.81484375,69.09057617187503],[73.83603515625006,69.143212890625],[73.578125,69.80297851562503],[74.34335937500006,70.57871093749998],[73.08623046875007,71.44492187500006],[73.67177734375,71.84506835937503],[74.99218749999997,72.14482421874999],[74.78681640625004,72.811865234375],[75.15244140625,72.85273437499998],[75.74140625000004,72.29624023437503],[75.273828125,71.95893554687495],[75.33203125000003,71.34174804687498],[76.92900390625002,71.12788085937504],[77.58964843750007,71.16791992187501],[78.32060546875002,70.93041992187503],[78.94218750000002,70.93378906250001],[79.08388671875,71.00200195312505],[78.58769531250007,70.993896484375],[78.21259765625004,71.26630859374998],[76.43339843750002,71.55249023437503],[76.03242187500004,71.91040039062503],[76.87138671875002,72.03300781250005],[77.77753906250004,71.83642578125006],[78.23242187500003,71.95229492187502],[78.01640625000007,72.092041015625],[77.49287109375004,72.07172851562504],[77.47158203125,72.19213867187506],[78.22539062500007,72.37744140625006],[79.4220703125001,72.38076171875002],[80.7625,72.08916015625002],[81.66162109374997,71.71596679687502],[82.75781250000003,71.76411132812498],[83.23359375000004,71.66816406249995],[82.32285156250006,71.26000976562503],[82.16318359375012,70.59814453125003],[82.22119140625003,70.39570312499998],[82.86914062499997,70.95483398437503],[83.03017578125,70.58051757812498],[82.6823242187501,70.21772460937498],[83.0807617187501,70.09301757812497],[83.07382812500012,70.276708984375],[83.73593750000006,70.54648437499998],[83.15126953125005,71.10361328124998],[83.534375,71.68393554687498],[83.20029296875012,71.87470703125004],[82.64541015625005,71.92524414062504],[82.09365234375,72.26542968750005],[80.82705078125005,72.48828124999997],[80.84160156250007,72.94916992187498],[80.4245117187501,73.23115234374998],[80.5832031250001,73.56845703125003],[85.20058593750005,73.72153320312506],[86.89296875,73.88710937500002],[85.79257812500012,73.438330078125],[86.67705078125002,73.10678710937503],[85.93896484374997,73.45649414062495],[87.12011718750003,73.61503906250002],[87.57119140625,73.81074218750001],[86.57109375000007,74.24375],[86.0013671875,74.316015625],[86.39580078125007,74.45009765624997],[86.89794921874997,74.32534179687497],[87.22968750000004,74.3638671875],[85.79101562499997,74.6451171875],[86.20126953125006,74.81621093750005],[86.65146484375012,74.68242187500005],[87.04179687500007,74.77885742187499],[87.46757812500002,75.01323242187505],[86.93906250000006,75.06811523437503],[87.00595703125012,75.16982421874997],[87.67138671874997,75.12958984375004],[90.18496093750005,75.59106445312497],[94.07519531249997,75.91289062499999],[92.89042968750002,75.90996093750002],[93.25927734375003,76.09877929687502],[95.57871093750012,76.13730468749998],[96.07548828125007,76.08198242187498],[95.65332031250003,75.89218750000003],[96.50859375000002,76.00556640624995],[96.49707031249997,75.89121093750003],[98.66201171875005,76.24267578125003],[99.77041015625,76.02875976562498],[99.5407226562501,75.79858398437497],[99.85136718750007,75.93027343749998],[99.8253906250001,76.13593749999995],[98.80566406250003,76.48066406250004],[100.84375,76.52519531250005],[101.59775390625006,76.43920898437503],[100.92802734375002,76.55673828124998],[100.98994140625004,76.99047851562497],[102.61015625000007,77.508544921875],[104.01455078125,77.73041992187501],[106.05957031249997,77.39052734375002],[104.20244140625002,77.101806640625],[106.9416015625001,77.034375],[107.42978515625006,76.92656250000002],[106.41357421874997,76.51225585937499],[107.72216796875003,76.52231445312498],[108.18164062500003,76.73784179687502],[111.39248046875,76.686669921875],[112.09394531250004,76.48032226562506],[111.94267578125002,76.38046875000003],[112.61953125,76.38354492187506],[112.65625,76.05356445312498],[113.2726562500001,76.25166015625001],[113.5638671875,75.89165039062502],[113.85722656250007,75.92128906250002],[113.56757812500004,75.56840820312499],[112.45302734375,75.83017578125003],[112.95566406250006,75.571923828125],[113.24296875000007,75.61142578125003],[113.72617187500012,75.45063476562498],[112.92490234375012,75.01503906249997],[109.84033203124997,74.32197265624998],[109.8102539062501,74.16918945312503],[108.19951171875002,73.69409179687497],[107.27109375000006,73.62104492187501],[106.67939453125004,73.3306640625],[106.1886718750001,73.3080078125],[105.14394531250005,72.77705078125001],[105.7082031250001,72.836669921875],[106.47792968750005,73.13940429687503],[107.750390625,73.17314453125007],[109.33105468749997,73.48745117187497],[109.85527343750002,73.47246093750002],[110.86816406249997,73.73071289062497],[109.70673828125004,73.74375],[110.2614257812501,74.01743164062503],[111.05625,73.93935546875002],[111.13085937500003,74.05283203125003],[111.55058593750007,74.02851562499998],[111.22812500000012,73.96855468750002],[111.40039062500003,73.827734375],[112.14726562500007,73.70893554687498],[112.79541015625003,73.74609375],[112.83593750000003,73.96206054687502],[113.03281250000006,73.91386718750007],[113.4162109375001,73.647607421875],[113.15693359375004,73.45957031249998],[113.49091796875004,73.34609375000002],[113.12783203125,72.8306640625],[113.66455078124997,72.63452148437503],[113.2155273437501,72.80585937500001],[113.88623046875003,73.34580078124998],[113.51035156250012,73.50498046874998],[115.33769531250007,73.70258789062501],[118.87089843750007,73.53789062500002],[118.45703124999997,73.46440429687507],[118.43027343750012,73.24653320312501],[119.750390625,72.97910156250006],[122.26015625,72.88056640624995],[122.75195312500003,72.906494140625],[122.61523437499997,73.02792968750006],[123.1603515625001,72.95488281250002],[123.62226562500004,73.19326171875],[123.49111328125005,73.666357421875],[124.54121093750004,73.75126953125007],[125.59853515625005,73.447412109375],[126.25449218750012,73.548193359375],[126.55253906250007,73.33491210937498],[127.03134765625006,73.54746093750003],[127.74033203125012,73.48154296875],[129.10058593750003,73.11235351562502],[128.5990234375,72.895166015625],[129.01728515625004,72.8724609375],[129.250390625,72.70517578125003],[128.41826171875002,72.53515625000003],[129.28134765625006,72.43769531249998],[129.41064453124997,72.16630859375002],[128.93496093750005,72.07949218750002],[127.8034179687501,72.43403320312504],[127.84140625000012,72.308251953125],[128.91142578125002,71.75532226562495],[129.21025390625007,71.91694335937501],[129.46083984375,71.73930664062499],[128.84326171875003,71.6634765625],[129.76191406250004,71.11953125000002],[130.53710937500003,70.89252929687495],[130.75712890625002,70.96235351562498],[131.02158203125006,70.74609374999997],[132.0353515625001,71.24404296875],[132.65390625000006,71.92597656250001],[133.6888671875,71.434228515625],[134.70273437500012,71.38681640625003],[135.55917968750006,71.6103515625],[136.09033203125003,71.61958007812501],[137.9396484375001,71.1333984375],[137.84404296875007,71.22680664062503],[138.31406250000006,71.32553710937498],[137.918359375,71.38408203124999],[138.23417968750007,71.596337890625],[138.78017578125,71.62900390624998],[139.209375,71.44477539062501],[139.98417968750007,71.49150390625005],[139.72294921875002,71.88496093749998],[139.35927734375005,71.95136718750001],[140.18769531250004,72.19130859374997],[139.17636718750006,72.16347656249997],[139.14082031250004,72.32973632812502],[139.60117187500012,72.49609374999997],[141.07929687500004,72.5869140625],[140.80820312500006,72.89096679687503],[142.06142578125005,72.72080078125],[146.25292968749997,72.442236328125],[146.234765625,72.34970703125],[144.77636718749997,72.38227539062495],[144.16923828125002,72.25878906250003],[144.29492187499997,72.19262695312497],[146.83183593750007,72.29541015625003],[146.11328125000003,71.94497070312497],[146.23027343750007,72.1375],[145.75859375000007,72.22587890624999],[145.75673828125005,71.94130859375002],[145.06396484374997,71.92607421875002],[145.18857421875012,71.69580078125],[146.07324218749997,71.80834960937503],[147.26181640625006,72.327880859375],[149.50156250000012,72.16430664062497],[150.01689453125002,71.89565429687505],[149.04873046875005,71.79575195312503],[148.9681640625,71.69047851562499],[150.59980468750004,71.5201171875],[150.09765624999997,71.22656249999997],[150.96777343749997,71.38046874999998],[151.58242187500005,71.28696289062503],[152.09277343749997,71.02329101562503],[151.76201171875002,70.98247070312499],[152.50878906250003,70.83447265625003],[156.68457031250003,71.09375],[158.03701171875005,71.03925781250001],[159.35068359375006,70.79072265625001],[160.00644531250006,70.30966796875006],[159.72939453125005,69.87021484375006],[160.91074218750012,69.60634765625002],[161.03554687500005,69.09819335937507],[161.30986328125007,68.98227539062498],[160.85605468750006,68.53833007812506],[161.565625,68.90517578125],[161.53691406250002,69.379541015625],[162.16601562499997,69.61157226562503],[163.20136718750004,69.71474609375],[166.82031250000003,69.49956054687505],[167.8568359375,69.72822265624998],[168.30302734375002,69.27148437500003],[169.31064453125006,69.07954101562498],[169.60986328124997,68.78603515624997],[170.53759765624997,68.82539062500001],[170.99541015625002,69.04531250000005],[170.58222656250004,69.58334960937506],[170.16093750000007,69.62656249999998],[170.48681640625003,70.107568359375],[173.27744140625006,69.823828125],[173.43867187500004,69.94682617187502],[175.92148437500012,69.89531250000002],[179.27265624999998,69.25966796875002],[180,68.98344726562505],[180,65.06723632812498],[178.51953125000003,64.60297851562498],[177.7486328125,64.71704101562503],[176.88085937499997,65.08193359375002],[176.34101562500015,65.04731445312501],[177.03730468750004,64.99965820312497],[177.22285156250004,64.861669921875],[177.06875,64.78666992187502],[176.06113281250012,64.96088867187498],[174.54882812500009,64.68388671875005],[176.0565429687501,64.90473632812498],[176.35097656250005,64.70512695312502],[176.14091796875007,64.58583984375005],[177.42744140625015,64.76337890624998],[177.43291015625002,64.44448242187502],[177.6875,64.30473632812507],[178.04472656250013,64.21958007812503],[178.22949218749991,64.36440429687497],[178.38144531250018,64.26088867187502],[178.73144531250003,63.667089843750006],[178.44042968750009,63.605566406250006],[178.74404296874994,63.39477539062503],[178.79296874999997,63.54033203125002],[179.38857421875,63.14721679687497],[179.25957031250002,63.00830078125],[179.5705078125001,62.6875],[179.12070312500012,62.32036132812499],[177.292578125,62.59902343750002],[177.33896484375006,62.781347656250034],[177.02353515625012,62.777246093749994],[177.15947265625007,62.56098632812498],[174.51435546875015,61.823632812499966],[173.6234375,61.716064453125],[173.13183593749997,61.40664062500002],[172.85654296875006,61.469189453124955],[172.90800781250002,61.311621093750006],[172.39609375000006,61.16738281250002],[172.39277343750004,61.061767578125],[170.60820312500007,60.434912109375034],[170.3509765625,59.965527343749955],[169.9826171875001,60.067089843749955],[169.2267578125001,60.59594726562497],[168.1375,60.57392578125001],[167.22675781250004,60.406298828125045],[166.27304687500012,59.85625],[166.13603515625007,59.979345703125034],[166.35214843750006,60.48481445312498],[165.08457031250006,60.09858398437498],[164.95371093750006,59.843603515625006],[164.52529296875,60.06127929687503],[164.11328125000003,59.89755859374998],[164.13505859375002,59.984375],[163.74384765625004,60.02802734374998],[163.36484375000012,59.78144531250004],[163.27285156250005,59.302587890625006],[162.14160156249997,58.44741210937502],[161.96005859375012,58.07690429687506],[162.39140625000002,57.717236328124955],[162.65429687499997,57.94824218750003],[163.22578125000004,57.790380859375034],[162.77929687500003,57.35761718749998],[162.79111328125012,56.875390624999966],[162.92207031250004,56.72265625000003],[163.2565429687501,56.68803710937499],[163.33554687500012,56.232519531250006],[163.04736328125003,56.044677734375],[162.84033203125003,56.065625],[162.628125,56.232275390625034],[163.03837890625002,56.521875],[162.67148437500006,56.49008789062498],[162.52822265625005,56.260693359374955],[162.08496093749997,56.08964843750002],[161.72392578125002,55.49614257812499],[162.10556640625006,54.75214843750004],[161.62480468750002,54.51625976562502],[160.77265625000004,54.54135742187498],[160.0744140625001,54.18916015625001],[159.84375,53.78364257812498],[160.02509765625004,53.129589843749955],[159.58593750000003,53.237695312499966],[158.74541015625002,52.90893554687506],[158.47207031250005,53.032373046874966],[158.6087890625,52.873632812500034],[158.49316406249997,52.383154296875034],[158.10351562500003,51.80961914062499],[156.84746093750002,51.006591796875],[156.74775390625004,50.969287109375045],[156.52119140625004,51.38027343750002],[156.36474609374997,52.509375],[156.11035156250003,52.86616210937504],[155.62031250000004,54.86455078125002],[155.5548828125001,55.348486328125034],[155.98251953125012,56.69521484375002],[156.8488281250001,57.290185546874994],[156.97675781250004,57.46630859375],[156.82988281250007,57.77963867187498],[157.4503906250001,57.79926757812498],[157.66640625000005,58.01977539062506],[158.27519531250007,58.00898437499998],[159.21064453125004,58.519433593749966],[159.8473632812501,59.127148437499955],[161.75351562500012,60.15229492187501],[162.06816406250002,60.466406250000034],[163.70996093749997,60.916796875000045],[163.55351562500002,61.02563476562503],[164.00546875000006,61.34379882812499],[163.80439453125004,61.46137695312498],[164.20722656250004,62.29223632812506],[164.59833984375004,62.470556640625034],[165.20810546875012,62.37397460937501],[165.41738281250005,62.447070312500045],[164.418359375,62.704638671875045],[163.33173828125004,62.550927734374994],[163.01767578125006,61.89106445312504],[163.25781249999997,61.69946289062497],[163.08525390625002,61.570556640625],[162.85595703125003,61.705029296874955],[162.39257812500003,61.662109375],[160.76660156249997,60.753320312499966],[160.17363281250002,60.638427734375],[160.37890625000003,61.02548828124998],[159.79042968750005,60.956640625],[160.309375,61.894384765625006],[159.55234375000012,61.71948242187497],[159.18925781250007,61.92939453125001],[158.07011718750002,61.75361328125001],[157.46933593750012,61.798925781250006],[157.0841796875001,61.67568359375002],[155.71611328125002,60.682373046875],[154.97080078125012,60.376660156249955],[154.29306640625006,59.833349609375034],[154.1498046875,59.52851562500001],[154.97128906250006,59.44960937500002],[155.16044921875002,59.19013671875001],[154.45800781250003,59.21655273437497],[154.01093750000004,59.075537109375006],[153.69521484375005,59.22475585937505],[153.36113281250002,59.214794921874955],[152.81787109375003,58.92626953124997],[152.31962890625002,59.03076171875003],[152.08789062499997,58.910449218750045],[151.32675781250006,58.875097656250034],[151.12109375000003,59.08251953125003],[152.26064453125,59.22358398437498],[151.34824218750012,59.561132812500006],[150.4835937500001,59.494384765625],[150.66728515625002,59.55634765625001],[149.64257812499997,59.770410156249994],[149.06523437500002,59.63051757812502],[149.20498046875,59.488183593749966],[148.79707031250004,59.532324218750006],[148.74414062499997,59.37353515624997],[148.96464843750007,59.36914062499997],[148.72666015625006,59.257910156250034],[148.25742187500006,59.414208984374994],[147.51445312500002,59.2685546875],[146.53720703125006,59.45698242187501],[146.0495117187501,59.17055664062502],[145.55458984375,59.413525390624955],[143.19218750000002,59.3701171875],[142.58027343750004,59.240136718749966],[140.79023437500004,58.30346679687503],[140.446875,57.81367187499998],[138.66210937500003,56.96552734375004],[137.69150390625006,56.13935546875004],[135.2625,54.94331054687498],[135.25771484375005,54.73149414062499],[135.85156249999997,54.583935546874955],[136.797265625,54.62099609375005],[136.71884765625006,53.804101562499994],[137.15537109375012,53.82167968750002],[137.14160156249997,54.182226562500006],[137.66601562500003,54.283300781250006],[137.3392578125,54.10053710937498],[137.83476562500002,53.94672851562498],[137.25371093750007,53.546142578125],[137.95048828125007,53.60356445312499],[138.52792968750012,53.959863281249994],[138.56914062500002,53.818798828124955],[138.24970703125004,53.524023437500034],[138.45068359375003,53.53701171875002],[138.69941406250004,53.869726562500034],[138.65722656249997,54.29833984375003],[139.31972656250005,54.19296874999998],[139.707421875,54.27714843749999],[140.68759765625012,53.59643554687503],[141.3737304687501,53.29277343749999],[141.18125,53.01528320312505],[140.83964843750002,53.087890625],[141.25585937499997,52.84013671874996],[141.13242187500006,52.435693359374994],[141.48525390625,52.17851562500002],[141.36689453125004,51.92065429687506],[140.93261718750003,51.61992187499999],[140.5208984375,50.80019531250005],[140.62451171874997,50.08242187500002],[140.46269531250002,49.911474609375006],[140.51718750000012,49.59614257812498],[140.17060546875004,48.52368164062497],[138.58681640625005,47.057226562500006],[138.33691406250003,46.543408203124955],[137.68544921875,45.81835937500003],[136.14228515625004,44.489111328125034],[135.87460937500012,44.37353515625003],[135.1310546875001,43.52573242187506],[134.01044921875004,42.94746093750001],[133.15996093750007,42.69697265624998],[132.70898437500003,42.875830078125006],[132.30380859375006,42.88330078125],[132.30957031249997,43.31352539062499],[131.8666015625,43.09516601562501],[131.93896484374997,43.30195312500004],[131.15830078125012,42.62602539062499],[130.709375,42.656396484374966],[130.8341796875001,42.52294921875006],[130.68730468750007,42.30253906249999]]],[[[107.69550781250004,78.13090820312505],[107.48164062500004,78.057763671875],[106.41552734375003,78.13984375000001],[107.69550781250004,78.13090820312505]]],[[[102.88476562499997,79.25395507812505],[102.4123046875001,78.83544921874997],[103.80078124999997,79.14926757812503],[104.45205078125005,78.880029296875],[105.14599609375003,78.81884765625006],[105.31259765625012,78.49990234375],[104.74179687500012,78.33974609374997],[102.79667968750007,78.18789062500002],[101.20410156249997,78.19194335937505],[99.50029296875002,77.97607421875003],[101.590625,79.350439453125],[102.25126953125002,79.25605468749995],[102.40488281250006,79.43320312499998],[102.88476562499997,79.25395507812505]]],[[[76.24892578125005,79.65107421874995],[77.58896484375012,79.50190429687504],[76.64951171875012,79.493408203125],[76.24892578125005,79.65107421874995]]],[[[92.68349609375005,79.685205078125],[91.37626953125007,79.83549804687505],[91.22929687500007,80.03071289062504],[93.803125,79.904541015625],[92.68349609375005,79.685205078125]]],[[[51.409277343750006,79.94423828125],[50.09140625,79.98056640625003],[50.93632812500002,80.09423828125],[51.409277343750006,79.94423828125]]],[[[59.68886718750005,79.95581054687506],[58.91923828125002,79.98461914062506],[59.54453125000006,80.11884765624995],[59.68886718750005,79.95581054687506]]],[[[97.67451171875004,80.15825195312499],[97.65166015625002,79.76064453125],[98.59648437500002,80.05219726562495],[100.0612304687501,79.77709960937506],[99.68066406250003,79.32333984374998],[99.04179687500007,79.29301757812502],[99.92929687500012,78.96142578124997],[98.41113281250003,78.78779296875004],[95.53105468750007,79.09809570312501],[95.02041015625005,79.05268554687498],[94.21875,79.40234375],[93.07080078124997,79.49531250000001],[94.98730468749997,80.096826171875],[95.28134765625012,80.030517578125],[97.67451171875004,80.15825195312499]]],[[[50.05175781250003,80.07431640625003],[49.55605468750005,80.15893554687503],[49.883691406249994,80.230224609375],[50.05175781250003,80.07431640625003]]],[[[57.07871093750006,80.35092773437498],[56.986914062500006,80.07148437499998],[55.811621093750006,80.08715820312497],[56.02441406250003,80.34130859374997],[57.07871093750006,80.35092773437498]]],[[[53.521386718749994,80.18520507812497],[52.34355468750002,80.213232421875],[52.85390625,80.40239257812499],[53.85166015625006,80.26835937500005],[53.521386718749994,80.18520507812497]]],[[[57.95625,80.12324218749995],[57.33232421875002,80.15810546875005],[57.075,80.49394531249999],[59.25546875000006,80.34321289062501],[58.39794921874997,80.31875],[57.95625,80.12324218749995]]],[[[54.41533203125002,80.47280273437502],[53.811914062499994,80.47622070312502],[53.87724609375002,80.60527343750002],[54.41533203125002,80.47280273437502]]],[[[47.441992187500006,80.853662109375],[48.44570312500005,80.80600585937506],[48.68359375000003,80.63325195312504],[47.7052734375001,80.76518554687499],[46.141406250000074,80.44672851562495],[45.969042968750074,80.56948242187502],[44.9049804687501,80.61127929687501],[47.441992187500006,80.853662109375]]],[[[62.167773437500074,80.83476562500005],[62.07578125000006,80.616943359375],[61.05126953124997,80.418603515625],[60.27832031249997,80.49443359374999],[59.649804687499994,80.43125],[59.59228515625003,80.81650390624998],[62.167773437500074,80.83476562500005]]],[[[50.278125,80.92724609374997],[51.70361328125003,80.68764648437502],[48.81103515625003,80.35371093750001],[48.97753906250003,80.16259765624997],[47.73730468749997,80.08168945312502],[47.89296875000005,80.23925781249997],[46.991015625000074,80.182763671875],[46.644433593749994,80.30034179687507],[47.89580078125002,80.52905273437503],[49.087792968749994,80.515771484375],[49.24433593750004,80.82138671875],[50.278125,80.92724609374997]]],[[[80.02666015625007,80.84814453125003],[79.09853515625005,80.81206054687505],[79.21738281250012,80.96035156249997],[80.27958984375007,80.94980468750003],[80.02666015625007,80.84814453125003]]],[[[61.1408203125001,80.95034179687497],[60.0783203125001,80.99916992187497],[61.45742187499999,81.10395507812501],[61.1408203125001,80.95034179687497]]],[[[54.71894531250004,81.11596679687497],[56.47226562500006,80.99824218749995],[57.58037109375002,80.75546874999998],[55.88339843750006,80.62841796875003],[54.66816406250004,80.73867187500002],[54.04541015624997,80.87197265625],[54.71894531250004,81.11596679687497]]],[[[58.62236328125002,81.04165039062502],[58.930566406249994,80.83168945312497],[58.28564453124997,80.76489257812503],[57.21093749999997,81.01708984374997],[58.04951171875004,81.11845703125002],[58.62236328125002,81.04165039062502]]],[[[63.37382812500002,80.70009765624997],[62.59257812500002,80.85302734375006],[64.80205078125002,81.197265625],[65.43740234375005,80.93071289062507],[63.37382812500002,80.70009765624997]]],[[[91.56718750000007,81.14121093750003],[91.2228515625001,81.063818359375],[89.90117187500002,81.17070312500002],[91.56718750000007,81.14121093750003]]],[[[96.52656250000004,81.0755859375],[97.86992187500007,80.76328125000006],[97.02539062499997,80.53554687500002],[97.29843750000006,80.27275390625005],[93.6546875,80.009619140625],[91.52382812500005,80.35854492187502],[93.2625,80.79125976562497],[92.59257812500007,80.780859375],[92.7103515625,80.87216796875003],[95.1595703125,81.27099609375003],[95.80068359375005,81.28046874999998],[96.52656250000004,81.0755859375]]],[[[57.81025390625004,81.54604492187502],[58.563867187499994,81.41840820312504],[57.858691406250074,81.36806640625],[57.76972656250004,81.16972656249999],[55.71669921875005,81.1884765625],[55.46601562500004,81.31118164062502],[57.81025390625004,81.54604492187502]]],[[[63.65097656250006,81.60932617187501],[62.10644531249997,81.679345703125],[63.709570312500006,81.68730468750002],[63.65097656250006,81.60932617187501]]],[[[58.29541015625003,81.715185546875],[58.13457031250002,81.82797851562498],[59.261816406250006,81.85419921874998],[59.35644531250003,81.75898437499995],[58.29541015625003,81.715185546875]]]]},"properties":{"name":"Russia","childNum":73}},{"geometry":{"type":"Polygon","coordinates":[[[30.50996093750001,-1.067285156250009],[30.47705078125,-1.0830078125],[30.47021484375,-1.131152343750003],[30.508105468750017,-1.208203125000011],[30.631933593750006,-1.367480468750003],[30.710742187500017,-1.396777343750003],[30.76220703125,-1.458691406250011],[30.812597656250006,-1.563085937500006],[30.8765625,-2.143359375],[30.85498046875,-2.265429687500003],[30.828710937500006,-2.338476562500006],[30.7625,-2.371679687500006],[30.71484375,-2.363476562500011],[30.656640625000023,-2.373828125],[30.593359375,-2.396777343750003],[30.553613281250023,-2.400097656250011],[30.408496093750017,-2.31298828125],[30.117285156250006,-2.416601562500006],[29.93017578125,-2.339550781250011],[29.8681640625,-2.71640625],[29.698046875000017,-2.794726562500003],[29.390234375,-2.80859375],[29.10205078125,-2.595703125],[29.01435546875001,-2.72021484375],[28.893945312500023,-2.635058593750003],[28.876367187500023,-2.400292968750009],[29.13154296875001,-2.195117187500003],[29.196582031250017,-1.719921875000011],[29.576953125000017,-1.387890625000011],[29.82539062500001,-1.335546875],[29.930078125000023,-1.469921875000011],[30.360253906250023,-1.074609375],[30.41230468750001,-1.063085937500006],[30.46992187500001,-1.066015625],[30.50996093750001,-1.067285156250009]]]},"properties":{"name":"Rwanda","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[41.98769531250005,16.715625],[42.059960937499994,16.803515625000017],[42.15781250000006,16.570703125000023],[41.80156250000002,16.778759765624955],[41.86044921875006,17.002539062499977],[41.98769531250005,16.715625]]],[[[46.53144531250004,29.09624023437499],[47.433203125,28.989550781250017],[47.671289062499994,28.53315429687504],[48.442480468750006,28.542919921874983],[48.80898437499999,27.895898437499966],[48.797167968750074,27.72431640625001],[49.2375,27.49272460937499],[49.17509765625002,27.43764648437505],[49.40527343749997,27.18095703124996],[50.149804687499994,26.66264648437499],[50.00810546875002,26.678515625000017],[50.21386718750003,26.30849609375005],[50.15546875000004,26.100537109374955],[50.03164062499999,26.11098632812505],[50.55791015625002,25.086669921875],[50.66689453125005,24.96381835937501],[50.72558593749997,24.869384765625057],[50.80439453125004,24.789257812499983],[50.928320312500006,24.595117187500023],[50.96601562500004,24.573925781249983],[51.022753906250074,24.56523437499999],[51.09335937500006,24.564648437499955],[51.178027343750074,24.586718750000017],[51.26796875,24.607226562500017],[51.33847656250006,24.564355468749994],[51.41123046875006,24.570800781250057],[51.30986328125002,24.340380859375017],[51.56835937500003,24.286181640625074],[51.592578125000074,24.07885742187503],[52.55507812500005,22.932812499999955],[55.104296875000074,22.621484375000023],[55.185839843750074,22.7041015625],[55.64101562499999,22.001855468749994],[54.97734375000002,19.995947265625006],[51.977636718750006,18.996142578125074],[49.04199218750003,18.58178710937503],[48.17216796875002,18.156933593749983],[47.57958984374997,17.448339843750034],[47.44179687499999,17.111865234375045],[47.14355468749997,16.946679687499966],[46.97568359375006,16.953466796875034],[46.72763671875006,17.26557617187501],[45.5353515625001,17.30205078124999],[45.14804687500006,17.427441406249955],[43.91699218749997,17.32470703124997],[43.41796875000003,17.516259765625023],[43.19091796875003,17.359375],[43.16503906249997,16.689404296874955],[42.79931640624997,16.37177734375001],[42.29394531249997,17.434960937499966],[41.75,17.88574218749997],[41.22949218750003,18.678417968749983],[40.75917968750005,19.755468750000034],[40.080664062500006,20.265917968750017],[39.728320312500074,20.390332031249955],[39.27607421875004,20.973974609375034],[39.093554687500074,21.31035156249999],[39.14707031250006,21.518994140624955],[38.98789062500006,21.88173828125005],[39.06201171874997,22.592187500000023],[38.46416015625002,23.71186523437504],[37.91972656250002,24.185400390625063],[37.54306640625006,24.291650390625023],[37.18085937500004,24.82001953125001],[37.26630859375004,24.960058593750034],[37.14882812499999,25.291113281249977],[35.18046875000002,28.03486328125004],[34.722070312499994,28.130664062500017],[34.625,28.064501953125017],[34.95078125,29.353515625],[36.068457031250006,29.200537109375006],[36.28281250000006,29.355371093750023],[36.47607421874997,29.49511718749997],[36.59179687500003,29.666113281250006],[36.703906250000074,29.831640624999977],[36.75527343750005,29.86601562499996],[37.46923828125003,29.995068359374955],[37.49072265625003,30.01171874999997],[37.55361328125005,30.14458007812496],[37.63359375000002,30.313281250000045],[37.64990234374997,30.330957031249994],[37.669726562500074,30.34814453125003],[37.862890625,30.44262695312503],[37.98007812500006,30.5],[37.47900390624997,31.007763671874955],[37.10527343750002,31.35517578125004],[36.95859375000006,31.491503906250017],[37.215625,31.55610351562501],[37.49335937500004,31.625878906250023],[38.111425781250006,31.78115234375005],[38.37548828124997,31.84746093749996],[38.962304687499994,31.99492187499999],[38.99707031249997,32.00747070312505],[39.145410156249994,32.12451171875],[39.36865234374997,32.09174804687498],[39.70410156250003,32.04252929687499],[40.02783203124997,31.995019531249994],[40.3693359375001,31.93896484375003],[40.47890625000005,31.89335937499999],[42.07441406250004,31.08037109374999],[43.77373046875002,29.84921875],[44.71650390625004,29.19360351562503],[46.35644531250003,29.06367187500001],[46.53144531250004,29.09624023437499]]]]},"properties":{"name":"Saudi Arabia","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[36.87138671875002,21.996728515624994],[36.92695312500001,21.58652343749999],[37.25859375000002,21.108544921874994],[37.25722656250002,21.03940429687499],[37.15058593750001,21.103759765625],[37.14111328125,20.98178710937499],[37.19316406250002,20.12070312499999],[37.471289062500006,18.820117187500003],[38.609472656250006,18.005078125],[38.422460937500006,17.823925781249997],[38.39716796875001,17.778369140625003],[38.38554687500002,17.751269531250003],[38.37373046875001,17.717333984375003],[38.34736328125001,17.68359375],[38.28984375000002,17.637011718750003],[38.26728515625001,17.61669921875],[38.253515625,17.584765625],[37.78242187500001,17.4580078125],[37.547460937500006,17.324121093749994],[37.51015625000002,17.288134765625003],[37.45292968750002,17.108691406250003],[37.41103515625002,17.06171875],[37.24882812500002,17.056884765625],[37.16953125,17.04140625],[37.0615234375,17.061279296875],[37.00898437500001,17.058886718750003],[36.995214843750006,17.020556640625003],[36.97578125000001,16.86655273437499],[36.97871093750001,16.800585937500003],[36.887792968750006,16.624658203124994],[36.91376953125001,16.296191406250003],[36.566015625,15.362109375],[36.4267578125,15.132080078125],[36.44814453125002,14.940087890624994],[36.470800781250006,14.736474609374994],[36.52431640625002,14.2568359375],[36.12519531250001,12.75703125],[35.67021484375002,12.623730468749997],[35.1123046875,11.816552734374994],[34.93144531250002,10.864794921874989],[34.77128906250002,10.746191406249991],[34.571875,10.880175781249989],[34.34394531250001,10.658642578124997],[34.31123046875001,10.190869140624997],[34.078125,9.461523437499991],[33.87148437500002,9.506152343749989],[33.96328125000002,9.861767578124997],[33.90703125000002,10.181445312499989],[33.13007812500001,10.745947265624991],[33.073339843750006,11.606103515624994],[33.199316406250006,12.21728515625],[32.721875,12.223095703124997],[32.73671875000002,12.009667968749994],[32.072265625,12.006738281249994],[32.338476562500006,11.710107421874994],[32.42080078125002,11.089111328125],[31.224902343750017,9.799267578124997],[30.75537109375,9.731201171875],[30.003027343750006,10.277392578124989],[29.60546875,10.065087890624994],[29.47314453125,9.768603515624989],[28.979589843750006,9.594189453124997],[28.844531250000017,9.326074218749994],[28.048925781250006,9.32861328125],[27.880859375,9.601611328124989],[27.07421875,9.613818359374989],[26.65869140625,9.484130859375],[25.91914062500001,10.169335937499994],[25.858203125000017,10.406494140625],[25.211718750000017,10.329931640624991],[25.066992187500006,10.293798828124991],[24.785253906250006,9.774658203125],[24.53193359375001,8.886914062499997],[24.147363281250023,8.665625],[23.53730468750001,8.815820312499994],[23.46826171875,9.11474609375],[23.62265625,9.340625],[23.646289062500017,9.822900390624994],[22.86005859375001,10.919677734375],[22.922656250000017,11.344873046874994],[22.591113281250017,11.579882812499989],[22.580957031250023,11.990136718749994],[22.472460937500017,12.067773437499994],[22.352343750000017,12.660449218749989],[21.928125,12.678125],[21.825292968750006,12.79052734375],[22.228125,13.32958984375],[22.1064453125,13.7998046875],[22.53857421875,14.161865234375],[22.38154296875001,14.550488281249997],[22.6708984375,14.722460937500003],[22.93232421875001,15.162109375],[22.933886718750017,15.533105468749994],[23.10517578125001,15.702539062499994],[23.970800781250006,15.721533203124991],[23.980273437500017,19.496630859375003],[23.980273437500017,19.99594726562499],[24.9794921875,20.002587890624994],[24.980273437500017,21.995849609375],[28.036425781250017,21.995361328125],[31.092675781250023,21.994873046875],[31.260644531250023,22.00229492187499],[31.400292968750023,22.202441406250003],[31.486132812500017,22.14780273437499],[31.434472656250023,21.995849609375],[36.87138671875002,21.996728515624994]]]},"properties":{"name":"Sudan","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[34.078125,9.461523437499991],[34.07275390625,8.545263671874991],[33.95332031250001,8.443505859374994],[33.28105468750002,8.437255859375],[32.99892578125002,7.899511718749991],[33.902441406250006,7.509521484375],[34.06425781250002,7.225732421874994],[34.71064453125001,6.660302734374994],[34.98359375000001,5.858300781249994],[35.26835937500002,5.492285156249991],[35.08447265625,5.311865234374991],[34.87832031250002,5.109570312499997],[34.63984375000001,4.87548828125],[34.38017578125002,4.620654296874989],[34.176855468750006,4.419091796874994],[33.97607421875,4.22021484375],[33.74160156250002,3.985253906249994],[33.568457031250006,3.81171875],[33.489355468750006,3.755078125],[32.99726562500001,3.880175781249989],[32.33574218750002,3.706201171874994],[32.13593750000001,3.519726562499997],[31.79804687500001,3.802636718749994],[31.547167968750017,3.677587890624991],[31.15234375,3.785595703124997],[30.83857421875001,3.49072265625],[30.757226562500023,3.62421875],[30.586718750000017,3.62421875],[30.50830078125,3.835693359375],[30.194921875,3.98193359375],[29.676855468750006,4.5869140625],[29.469628906250023,4.61181640625],[29.224902343750017,4.391894531249989],[28.72705078125,4.504980468749991],[28.427539062500017,4.324169921874997],[28.19208984375001,4.350244140624994],[27.7880859375,4.644677734374994],[27.4033203125,5.109179687499989],[27.143945312500023,5.722949218749989],[26.514257812500006,6.069238281249994],[26.30859375,6.455322265625],[26.36181640625,6.635302734374989],[25.27890625,7.427490234375],[25.18134765625001,7.557226562499991],[25.20039062500001,7.807910156249989],[24.853320312500017,8.137548828124991],[24.291406250000023,8.29140625],[24.147363281250023,8.665625],[24.53193359375001,8.886914062499997],[24.785253906250006,9.774658203125],[25.066992187500006,10.293798828124991],[25.211718750000017,10.329931640624991],[25.858203125000017,10.406494140625],[25.91914062500001,10.169335937499994],[26.65869140625,9.484130859375],[27.07421875,9.613818359374989],[27.880859375,9.601611328124989],[28.048925781250006,9.32861328125],[28.844531250000017,9.326074218749994],[28.979589843750006,9.594189453124997],[29.47314453125,9.768603515624989],[29.60546875,10.065087890624994],[30.003027343750006,10.277392578124989],[30.75537109375,9.731201171875],[31.224902343750017,9.799267578124997],[32.42080078125002,11.089111328125],[32.338476562500006,11.710107421874994],[32.072265625,12.006738281249994],[32.73671875000002,12.009667968749994],[32.721875,12.223095703124997],[33.199316406250006,12.21728515625],[33.073339843750006,11.606103515624994],[33.13007812500001,10.745947265624991],[33.90703125000002,10.181445312499989],[33.96328125000002,9.861767578124997],[33.87148437500002,9.506152343749989],[34.078125,9.461523437499991]]]},"properties":{"name":"S. Sudan","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-12.280615234374977,14.809033203124997],[-12.228417968749994,14.45859375],[-12.019189453124994,14.206494140624997],[-11.960888671874983,13.875292968750003],[-12.05419921875,13.633056640625],[-11.831689453124994,13.315820312499994],[-11.634960937499983,13.369873046875],[-11.390380859375,12.941992187499991],[-11.389404296875,12.404394531249991],[-12.399072265624994,12.340087890625],[-12.930712890624989,12.532275390624989],[-13.061279296875,12.489990234375],[-13.082910156249994,12.633544921875],[-13.729248046875,12.673925781249991],[-14.06484375,12.67529296875],[-14.349218749999977,12.676416015624994],[-15.196093749999989,12.679931640625],[-15.3779296875,12.588964843749991],[-15.574804687499977,12.490380859374994],[-15.839550781249983,12.43789062499999],[-16.144189453124994,12.45742187499999],[-16.24150390624999,12.443310546874997],[-16.41630859374999,12.36767578125],[-16.521337890624977,12.3486328125],[-16.656933593749983,12.364355468749991],[-16.711816406249994,12.354833984374991],[-16.76030273437499,12.52578125],[-16.44287109375,12.609472656249991],[-16.59765625,12.715283203124997],[-16.743896484375,12.58544921875],[-16.763330078124994,13.064160156249997],[-16.648779296874977,13.154150390624991],[-15.834277343749989,13.156445312499997],[-15.814404296874983,13.325146484374997],[-15.286230468749977,13.39599609375],[-15.151123046875,13.556494140624991],[-14.246777343749983,13.23583984375],[-13.826708984374989,13.4078125],[-13.977392578124977,13.54345703125],[-14.405468749999983,13.503710937500003],[-15.108349609374983,13.81210937499999],[-15.426855468749977,13.727001953124997],[-15.509667968749994,13.586230468750003],[-16.56230468749999,13.587304687499994],[-16.766943359374977,13.904931640624994],[-16.618115234374983,14.04052734375],[-16.791748046875,14.004150390625],[-17.168066406249977,14.640625],[-17.345800781249977,14.729296875],[-17.445019531249983,14.651611328125],[-17.53564453125,14.755126953125],[-17.147167968749983,14.922021484374994],[-16.843408203124994,15.293994140625003],[-16.570751953124983,15.734423828125003],[-16.535253906249977,15.83837890625],[-16.502050781249977,15.917333984374991],[-16.480078124999977,16.097216796875003],[-16.441015624999977,16.204541015624997],[-16.239013671875,16.531298828125003],[-15.768212890624994,16.485107421875],[-14.990625,16.676904296874994],[-14.300097656249989,16.580273437499997],[-13.868457031249989,16.148144531249997],[-13.756640624999989,16.172509765624994],[-13.40966796875,16.05917968749999],[-13.105273437499989,15.57177734375],[-12.735253906249994,15.13125],[-12.40869140625,14.889013671874991],[-12.280615234374977,14.809033203124997]]]},"properties":{"name":"Senegal","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[103.9697265625,1.331445312499994],[103.65019531249999,1.325537109374991],[103.81796875000003,1.447070312499989],[103.9697265625,1.331445312499994]]]},"properties":{"name":"Singapore","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-37.10332031249996,-54.065625],[-36.70380859375001,-54.10810546874999],[-36.64741210937498,-54.26230468749996],[-36.32646484374996,-54.251171875],[-35.79858398437497,-54.76347656250002],[-36.08549804687499,-54.86679687500001],[-36.885986328125,-54.33945312499996],[-37.63090820312496,-54.16748046875001],[-37.61884765625001,-54.04208984375004],[-38.017431640625034,-54.008007812500026],[-37.10332031249996,-54.065625]]]},"properties":{"name":"S. Geo. and S. Sandw. Is.","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-5.692138671874972,-15.997753906249997],[-5.782519531250017,-16.00400390625002],[-5.707861328124977,-15.90615234374998],[-5.692138671874972,-15.997753906249997]]]},"properties":{"name":"Saint Helena","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[160.57626953125006,-11.797851562500028],[160.44306640625004,-11.814941406249957],[159.98632812499997,-11.494726562500006],[160.57626953125006,-11.797851562500028]]],[[[166.13320312500005,-10.757812499999972],[165.90400390625004,-10.851464843749966],[165.79101562500003,-10.784765624999963],[166.02382812500005,-10.6611328125],[166.13320312500005,-10.757812499999972]]],[[[161.71533203124997,-10.387304687499991],[162.10537109375005,-10.45380859375004],[162.37333984375002,-10.823242187499986],[161.78681640625004,-10.716894531249991],[161.53789062500007,-10.566406249999972],[161.4870117187501,-10.361425781249963],[161.29394531250003,-10.326464843750031],[161.30478515625012,-10.204394531250031],[161.71533203124997,-10.387304687499991]]],[[[161.54785156249997,-9.625683593749997],[161.55380859375012,-9.769726562500026],[161.40976562500006,-9.681640625000028],[161.36416015625,-9.353417968750037],[161.54785156249997,-9.625683593749997]]],[[[159.75039062500005,-9.272656250000011],[159.97060546875,-9.433300781249969],[160.35458984375006,-9.421582031249983],[160.81894531250006,-9.862792968749986],[160.64921875000002,-9.92861328124998],[159.80273437499997,-9.763476562500003],[159.61230468749997,-9.470703124999943],[159.62558593750012,-9.311230468749969],[159.75039062500005,-9.272656250000011]]],[[[160.1681640625001,-8.995507812500037],[160.40751953125007,-9.140332031249969],[160.10537109375,-9.080761718749997],[160.1681640625001,-8.995507812500037]]],[[[159.18857421875006,-9.123535156250014],[159.03632812500004,-9.075],[159.12978515625,-8.99306640624998],[159.22841796875005,-9.029980468749955],[159.18857421875006,-9.123535156250014]]],[[[158.10791015625003,-8.684179687500034],[157.93759765625006,-8.73642578125002],[157.90927734375006,-8.565625],[158.10546874999997,-8.536816406250026],[158.10791015625003,-8.684179687500034]]],[[[157.38896484375002,-8.713476562499963],[157.2123046875,-8.565039062500006],[157.37949218750012,-8.420898437499943],[157.38896484375002,-8.713476562499963]]],[[[160.7494140625,-8.313964843750014],[160.99765625000006,-8.612011718749983],[160.94433593750003,-8.799023437499983],[161.15869140624997,-8.961816406250009],[161.36738281250004,-9.61123046874998],[160.77207031250012,-8.963867187499986],[160.7140625000001,-8.539257812499997],[160.59042968750006,-8.372753906249997],[160.7494140625,-8.313964843750014]]],[[[157.76347656250002,-8.242187499999957],[157.89843749999997,-8.506347656249943],[157.81933593750003,-8.612011718749983],[157.58789062500003,-8.445410156249963],[157.5580078125,-8.269921875],[157.30244140625004,-8.33330078124996],[157.21757812500002,-8.262792968749977],[157.490625,-7.965722656250037],[157.76347656250002,-8.242187499999957]]],[[[157.171875,-8.108105468749997],[156.95830078125002,-8.014355468749997],[157.02412109375004,-7.867871093749997],[157.18613281250006,-7.941210937500017],[157.171875,-8.108105468749997]]],[[[156.687890625,-7.92304687500004],[156.5109375000001,-7.707812499999974],[156.5609375,-7.574023437499989],[156.80908203124997,-7.722851562500026],[156.687890625,-7.92304687500004]]],[[[159.8791015625001,-8.534277343749949],[158.9440429687501,-8.04072265625004],[158.457421875,-7.544726562499974],[158.734375,-7.604296875000031],[159.43144531250002,-8.029003906249955],[159.84306640625002,-8.326953124999989],[159.8791015625001,-8.534277343749949]]],[[[155.83984374999997,-7.097167968750014],[155.67753906250002,-7.08896484375002],[155.73896484375004,-6.972949218750017],[155.83984374999997,-7.097167968750014]]],[[[157.48671875000005,-7.330371093750003],[157.44130859375,-7.425683593749966],[157.10156249999997,-7.323632812499966],[156.4525390625,-6.638281249999963],[157.03027343750003,-6.891992187499952],[157.19335937499997,-7.160351562499997],[157.48671875000005,-7.330371093750003]]]]},"properties":{"name":"Solomon Is.","childNum":16}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-12.526074218749926,7.436328125000017],[-12.951611328124926,7.570849609374989],[-12.615234374999972,7.63720703125],[-12.5125,7.582421875000037],[-12.526074218749926,7.436328125000017]]],[[[-10.758593749999989,9.385351562499991],[-10.682714843750006,9.289355468749974],[-10.687646484374937,9.261132812499994],[-10.749951171874926,9.12236328124996],[-10.747021484374955,9.095263671875045],[-10.726855468749932,9.081689453125023],[-10.615966796875,9.059179687499977],[-10.500537109375017,8.687548828125017],[-10.677343749999977,8.400585937499997],[-10.712109374999955,8.335253906250017],[-10.686962890624983,8.321679687500009],[-10.652636718749989,8.330273437499983],[-10.604003906249943,8.319482421874994],[-10.55771484374992,8.315673828125028],[-10.496435546874977,8.362109374999974],[-10.394433593749966,8.480957031250028],[-10.360058593749983,8.49550781249998],[-10.283203124999972,8.48515625],[-10.285742187499949,8.454101562499986],[-10.314648437499983,8.310839843750017],[-10.359814453124926,8.187939453125026],[-10.570849609374932,8.071142578125034],[-10.6474609375,7.759375],[-10.878076171874994,7.538232421874994],[-11.267675781249977,7.232617187499997],[-11.507519531249983,6.906542968750003],[-12.48564453124996,7.386279296875045],[-12.480273437499932,7.75327148437502],[-12.697607421874977,7.715869140625045],[-12.850878906249932,7.818701171875034],[-12.956933593749966,8.145312500000045],[-13.148974609374989,8.214599609375043],[-13.272753906249989,8.429736328124989],[-13.085009765624932,8.42475585937504],[-12.894091796874932,8.62978515624998],[-13.181835937499955,8.576904296875043],[-13.206933593749994,8.843115234375006],[-13.059472656249966,8.881152343750031],[-13.292675781249955,9.04921875],[-13.077294921874966,9.069628906249974],[-12.958789062499989,9.263330078124994],[-12.755859374999943,9.373583984374989],[-12.557861328125,9.704980468749994],[-12.427978515625028,9.898144531250011],[-12.142333984375,9.87539062499999],[-11.911083984374955,9.993017578124977],[-11.273632812499955,9.996533203124983],[-11.205664062499949,9.977734374999969],[-11.180859374999955,9.925341796875045],[-11.047460937499977,9.786328125000054],[-10.758593749999989,9.385351562499991]]]]},"properties":{"name":"Sierra Leone","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[-89.36259765624999,14.416015625],[-89.1205078125,14.370214843749991],[-88.51254882812499,13.978955078124997],[-88.504345703125,13.964208984374991],[-88.49765625,13.904541015625],[-88.482666015625,13.854248046875],[-88.44912109375,13.850976562499994],[-88.40849609374999,13.87539062499999],[-88.27622070312499,13.942675781250003],[-88.151025390625,13.987353515625003],[-87.99101562499999,13.879638671875],[-87.8919921875,13.894970703124997],[-87.80224609375,13.889990234374991],[-87.7314453125,13.841064453125],[-87.71533203125,13.812695312499997],[-87.781884765625,13.521386718749994],[-87.930859375,13.1806640625],[-88.68564453124999,13.281494140625],[-88.51201171874999,13.183935546874991],[-89.80419921875,13.560107421875003],[-90.09521484375,13.736523437499997],[-90.04814453124999,13.904052734375],[-89.54716796874999,14.241259765625003],[-89.5736328125,14.390087890624997],[-89.36259765624999,14.416015625]]]},"properties":{"name":"El Salvador","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-56.26708984374997,46.838476562500034],[-56.38476562499994,46.81943359375006],[-56.36464843749994,47.09897460937498],[-56.26708984374997,46.838476562500034]]]},"properties":{"name":"St. Pierre and Miquelon","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[6.659960937499989,0.120654296874989],[6.51972656250004,0.066308593750023],[6.468164062499994,0.22734375],[6.68691406250008,0.404394531249977],[6.75,0.24345703124996],[6.659960937499989,0.120654296874989]]],[[[7.423828125,1.567724609375006],[7.330664062500034,1.603369140624991],[7.414453125000051,1.699121093750037],[7.423828125,1.567724609375006]]]]},"properties":{"name":"São Tomé and Principe","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[-54.03422851562499,3.62939453125],[-54.00957031249999,3.448535156249989],[-54.06318359375,3.353320312499989],[-54.18803710937499,3.178759765624989],[-54.203125,3.13818359375],[-54.17070312499999,2.993603515624997],[-54.18808593749999,2.874853515624991],[-54.1955078125,2.81787109375],[-54.256738281249994,2.713720703124991],[-54.402001953124994,2.461523437499991],[-54.53593749999999,2.343310546874989],[-54.56840820312499,2.342578124999989],[-54.604736328125,2.335791015624991],[-54.61625976562499,2.326757812499991],[-54.661865234375,2.327539062499994],[-54.697412109374994,2.359814453124997],[-54.72221679687499,2.441650390625],[-54.87607421874999,2.450390625],[-54.92656249999999,2.497363281249989],[-54.968408203124994,2.54833984375],[-54.978662109374994,2.59765625],[-55.005810546875,2.59296875],[-55.0703125,2.54833984375],[-55.11411132812499,2.539208984374994],[-55.1876953125,2.547509765624994],[-55.286035156249994,2.499658203124994],[-55.343994140625,2.48876953125],[-55.38535156249999,2.440625],[-55.73056640624999,2.406152343749994],[-55.957470703125,2.520458984374997],[-55.99350585937499,2.497509765624997],[-56.02036132812499,2.392773437499997],[-56.0451171875,2.364404296874994],[-56.087792968749994,2.34130859375],[-56.12939453125,2.299511718749997],[-56.1376953125,2.259033203125],[-56.073632812499994,2.236767578124997],[-56.02006835937499,2.158154296874997],[-55.96196289062499,2.095117187499994],[-55.91533203124999,2.03955078125],[-55.921630859375,1.976660156249991],[-55.929638671875,1.8875],[-56.01992187499999,1.842236328124997],[-56.4828125,1.942138671875],[-56.704345703125,2.036474609374991],[-57.19736328124999,2.853271484375],[-57.303662109375,3.377099609374994],[-57.646728515625,3.39453125],[-58.05429687499999,4.101660156249991],[-57.84599609374999,4.668164062499997],[-57.91704101562499,4.820410156249991],[-57.711083984374994,4.991064453124991],[-57.331005859375,5.020166015624994],[-57.20981445312499,5.195410156249991],[-57.3185546875,5.335351562499994],[-57.194775390625,5.5484375],[-56.96982421874999,5.992871093749997],[-56.235595703125,5.885351562499991],[-55.897607421874994,5.699316406249991],[-55.909912109375,5.892626953124989],[-55.648339843749994,5.985888671874989],[-54.83369140625,5.988330078124989],[-54.05419921875,5.807910156249989],[-54.08046875,5.502246093749989],[-54.4796875,4.836523437499991],[-54.350732421874994,4.054101562499994],[-54.03422851562499,3.62939453125]]]},"properties":{"name":"Suriname","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[22.538671875,49.072705078125],[22.52412109375001,49.031396484374994],[22.389453125000017,48.873486328125],[22.295214843750017,48.685839843749996],[22.142871093750017,48.568505859374994],[22.1318359375,48.405322265624996],[21.766992187500023,48.3380859375],[21.45136718750001,48.55224609375],[20.490039062500017,48.526904296874996],[20.333789062500017,48.295556640624994],[19.95039062500001,48.146630859374994],[19.625390625000023,48.223095703125],[18.791894531250023,48.000292968749996],[18.72421875,47.787158203124996],[17.76191406250001,47.770166015624994],[17.147363281250023,48.00595703125],[16.86542968750001,48.3869140625],[16.953125,48.598828125],[17.135644531250023,48.841064453125],[17.75849609375001,48.888134765625],[18.0859375,49.06513671875],[18.160937500000017,49.257373046874996],[18.83222656250001,49.510791015624996],[19.1494140625,49.4],[19.44160156250001,49.597705078124996],[19.77392578125,49.37216796875],[19.756640625000017,49.204394531249996],[20.0576171875,49.181298828124994],[20.36298828125001,49.38525390625],[20.868457031250017,49.314697265625],[21.079394531250017,49.418261718749996],[21.6396484375,49.411962890625],[22.020117187500006,49.209521484374996],[22.473046875000023,49.081298828125],[22.538671875,49.072705078125]]]},"properties":{"name":"Slovakia","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[16.516210937500006,46.499902343749994],[16.427636718750023,46.5244140625],[16.321191406250023,46.534619140625],[16.1064453125,46.382226562499994],[15.608984375,46.171923828124996],[15.592578125000017,46.139990234375],[15.596875,46.109228515625],[15.675585937500017,45.983691406249996],[15.652148437500017,45.862158203125],[15.277050781250011,45.7326171875],[15.353710937500011,45.659912109375],[15.283593750000023,45.5796875],[15.291210937500011,45.541552734374996],[15.32666015625,45.502294921875],[15.339453125,45.467041015625],[15.242089843750023,45.44140625],[15.110449218750006,45.45078125],[14.95458984375,45.499902343749994],[14.793066406250006,45.47822265625],[14.649511718750006,45.571484375],[14.591796875,45.651269531249994],[14.56884765625,45.6572265625],[14.548448660714302,45.628388671875],[14.507586495535731,45.59039341517857],[14.42734375,45.505761718749994],[14.369921875000017,45.4814453125],[13.878710937500017,45.428369140624994],[13.577929687500017,45.516894531249996],[13.8447265625,45.59287109375],[13.831152343750006,45.680419921875],[13.663476562500023,45.7919921875],[13.6005859375,45.979785156249996],[13.509179687500023,45.973779296874994],[13.487695312500023,45.987109375],[13.480273437500017,46.009228515625],[13.486425781250006,46.03955078125],[13.548046875000011,46.089111328125],[13.616601562500023,46.133105468749996],[13.634960937500011,46.157763671874996],[13.632519531250011,46.177050781249996],[13.420996093750006,46.212304687499994],[13.399511718750006,46.317529296874994],[13.563281250000017,46.415087890624996],[13.637109375000023,46.448535156249996],[13.6796875,46.462890625],[13.7,46.520263671875],[14.5498046875,46.399707031249996],[14.893261718750011,46.605908203125],[15.957617187500006,46.677636718749994],[16.093066406250017,46.86328125],[16.283593750000023,46.857275390625],[16.516210937500006,46.499902343749994]]]},"properties":{"name":"Slovenia","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[16.52851562500001,56.29052734375],[16.431640625,56.24375],[16.41230468750004,56.568994140624994],[17.02539062499997,57.345068359375006],[16.52851562500001,56.29052734375]]],[[[19.076464843750045,57.8359375],[18.813867187500023,57.70620117187502],[18.907910156250068,57.39833984375002],[18.146386718749994,56.920507812500006],[18.285351562500068,57.08320312500001],[18.136523437500045,57.55664062500003],[18.53740234374999,57.83056640625006],[18.90058593750001,57.91547851562504],[19.076464843750045,57.8359375]]],[[[19.156347656250063,57.92260742187497],[19.086523437500034,57.86499023437506],[19.134863281250034,57.98134765625002],[19.331445312500023,57.962890625],[19.156347656250063,57.92260742187497]]],[[[24.15546875000004,65.80527343750006],[23.102343750000074,65.73535156250003],[22.400976562500006,65.86210937499999],[22.254003906250006,65.59755859375002],[21.565527343750063,65.40810546874997],[21.609179687500074,65.261376953125],[21.410351562500068,65.31743164062505],[21.57392578125001,65.12578124999999],[21.138183593750057,64.80869140625006],[21.519628906250034,64.46308593749998],[20.76269531250003,63.86782226562505],[18.60644531250003,63.17827148437499],[18.31289062500008,62.996386718750045],[18.46308593750004,62.895849609375006],[18.170019531250034,62.789355468750074],[17.906640625000023,62.88676757812502],[18.037304687500068,62.60053710937498],[17.834472656250057,62.50273437500002],[17.410253906250063,62.508398437500034],[17.633691406249994,62.23300781250006],[17.374511718750057,61.866308593750034],[17.465429687500006,61.68447265625005],[17.196386718750006,61.72456054687504],[17.13076171875005,61.57573242187499],[17.25097656250003,60.70078125],[17.6611328125,60.53515625000003],[17.955761718750068,60.589794921874955],[18.85273437500001,60.02587890625],[18.970507812500045,59.757226562499994],[17.964257812500023,59.359375],[18.56025390625004,59.39448242187498],[18.285351562500068,59.109375],[16.978125,58.65415039062506],[16.214257812500023,58.636669921874955],[16.92382812499997,58.49257812499999],[16.651953125,58.43432617187503],[16.65224609375008,57.50068359374998],[16.348730468750063,56.70927734374996],[15.826660156250028,56.12495117187501],[14.782031250000017,56.16191406250002],[14.754785156250051,56.03315429687498],[14.401953125000034,55.97675781250004],[14.21503906250004,55.83261718749998],[14.341699218749994,55.52773437500002],[14.17373046875008,55.396630859374966],[12.885839843750063,55.41137695312506],[12.973925781250074,55.748144531250006],[12.471191406250057,56.29052734375],[12.801660156250051,56.263916015625],[12.65644531250004,56.44057617187502],[12.857421875000028,56.45239257812503],[12.883691406250051,56.61772460937496],[12.421484375000034,56.906396484374966],[11.449316406250063,58.118359374999955],[11.43154296875008,58.339990234374994],[11.24824218750004,58.369140625],[11.14716796875004,58.98862304687498],[11.19580078125,59.07827148437505],[11.388281250000063,59.036523437499966],[11.470703125000057,58.909521484375034],[11.64277343750004,58.92607421875002],[11.798144531250074,59.28989257812498],[11.680761718750034,59.59228515625003],[12.486132812500074,60.10678710937506],[12.588671874999989,60.450732421875045],[12.29414062500004,61.00268554687506],[12.706054687500028,61.059863281250074],[12.88076171875008,61.35229492187506],[12.155371093750006,61.720751953125045],[12.303515625000074,62.28559570312501],[11.999902343750051,63.29169921875001],[12.175195312500051,63.595947265625],[12.792773437500017,64],[13.203515625000023,64.07509765625],[13.960546875000063,64.01401367187498],[14.141210937500006,64.17353515624998],[14.077636718750028,64.464013671875],[13.650292968750023,64.58154296874997],[14.47968750000004,65.30146484374998],[14.543261718750045,66.12934570312498],[15.483789062500051,66.30595703124999],[15.422949218750006,66.48984374999998],[16.40351562500004,67.05498046875002],[16.12744140625,67.42583007812507],[16.783593750000023,67.89501953125],[17.324609375000023,68.10380859374999],[17.91669921875001,67.96489257812502],[18.303027343750045,68.55541992187497],[19.969824218750063,68.35639648437501],[20.348046875000023,68.84873046875003],[20.116699218750057,69.02089843750005],[20.622167968750006,69.036865234375],[21.99746093750005,68.52060546874998],[22.854101562500034,68.36733398437502],[23.63886718750004,67.95439453125002],[23.454882812500045,67.46025390625007],[23.733593750000068,67.42290039062499],[23.64150390625005,67.12939453124997],[23.988574218750045,66.81054687500003],[23.700292968750034,66.25263671874998],[24.15546875000004,65.80527343750006]]]]},"properties":{"name":"Sweden","childNum":4}},{"geometry":{"type":"Polygon","coordinates":[[[31.9482421875,-25.957617187500006],[32.060546875,-26.018359375],[32.04140625000002,-26.28125],[32.10595703125,-26.52001953125],[32.112890625,-26.839453125],[32.02480468750002,-26.811132812500006],[31.994726562500006,-26.817480468750006],[31.967187500000023,-26.96064453125001],[31.946093750000017,-27.173632812500003],[31.958398437500023,-27.30585937500001],[31.742578125000023,-27.30996093750001],[31.469531250000017,-27.295507812500006],[31.274023437500006,-27.238378906250006],[31.063378906250023,-27.1123046875],[30.938085937500006,-26.915820312500003],[30.88330078125,-26.79238281250001],[30.806738281250006,-26.785253906250006],[30.794335937500023,-26.764257812500006],[30.803320312500006,-26.41347656250001],[31.08808593750001,-25.98066406250001],[31.207324218750017,-25.843359375],[31.33515625000001,-25.75556640625001],[31.382617187500017,-25.74296875],[31.415136718750006,-25.74658203125],[31.921679687500017,-25.96875],[31.9482421875,-25.957617187500006]]]},"properties":{"name":"Swaziland","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[55.54033203125002,-4.693066406250011],[55.54296875,-4.785546875],[55.383398437500006,-4.609277343750009],[55.45576171875001,-4.558789062500011],[55.54033203125002,-4.693066406250011]]]},"properties":{"name":"Seychelles","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[42.358984375,37.10859375],[41.78857421875,36.59716796875],[41.41679687500002,36.5146484375],[41.295996093750006,36.383349609374996],[41.354101562500006,35.640429687499996],[41.19472656250002,34.768994140625],[40.98701171875001,34.429052734375],[38.773535156250006,33.372216796874994],[36.818359375,32.317285156249994],[36.3720703125,32.3869140625],[35.78730468750001,32.734912109374996],[35.91347656250002,32.94960937499999],[35.869140625,33.43173828125],[36.03447265625002,33.58505859375],[35.98613281250002,33.75263671875],[36.36503906250002,33.83935546875],[36.27783203125,33.92529296875],[36.5849609375,34.221240234374996],[36.50439453125,34.432373046875],[36.32988281250002,34.499609375],[36.383886718750006,34.65791015625],[35.97626953125001,34.629199218749996],[35.902441406250006,35.420703125],[35.76445312500002,35.571582031249996],[35.83964843750002,35.84921875],[35.892675781250006,35.916552734374996],[35.96757812500002,35.910058593749994],[36.12734375000002,35.831445312499994],[36.15361328125002,35.833886718749994],[36.34755859375002,36.003515625],[36.37539062500002,36.171240234375],[36.63671875,36.233984375],[36.64140625000002,36.263525390625],[36.5375,36.45742187499999],[36.54667968750002,36.50634765625],[36.596875,36.7013671875],[36.62841796875,36.777685546875],[36.65859375000002,36.802539062499996],[36.77656250000001,36.79267578125],[36.94179687500002,36.7583984375],[36.9853515625,36.702392578125],[37.06621093750002,36.652636718749996],[37.43632812500002,36.643310546875],[37.523535156250006,36.6783203125],[37.7203125,36.743701171874996],[37.90664062500002,36.79462890625],[38.19169921875002,36.9015625],[38.7666015625,36.693115234375],[38.90644531250001,36.694677734375],[39.1083984375,36.680566406249994],[39.35664062500001,36.681591796875],[39.50146484375,36.70224609375],[39.6865234375,36.738623046875],[40.01640625000002,36.826074218749994],[40.705664062500006,37.097705078124996],[41.886816406250006,37.156396484374994],[42.05986328125002,37.2060546875],[42.16787109375002,37.288623046874996],[42.202734375,37.29726562499999],[42.24755859375,37.2822265625],[42.2685546875,37.2765625],[42.31289062500002,37.22958984375],[42.358984375,37.10859375]]]},"properties":{"name":"Syria","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[-72.3328125,21.85136718749999],[-72.14433593750002,21.79272460937503],[-72.33544921874994,21.758007812499983],[-72.3328125,21.85136718749999]]]},"properties":{"name":"Turks and Caicos Is.","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[23.980273437500017,19.496630859375003],[23.970800781250006,15.721533203124991],[23.10517578125001,15.702539062499994],[22.933886718750017,15.533105468749994],[22.93232421875001,15.162109375],[22.6708984375,14.722460937500003],[22.38154296875001,14.550488281249997],[22.53857421875,14.161865234375],[22.1064453125,13.7998046875],[22.228125,13.32958984375],[21.825292968750006,12.79052734375],[21.928125,12.678125],[22.352343750000017,12.660449218749989],[22.472460937500017,12.067773437499994],[22.580957031250023,11.990136718749994],[22.591113281250017,11.579882812499989],[22.922656250000017,11.344873046874994],[22.86005859375001,10.919677734375],[22.49384765625001,10.996240234374994],[21.771484375,10.642822265625],[21.682714843750006,10.289843749999989],[20.773242187500017,9.405664062499994],[20.342089843750017,9.127099609374994],[18.95625,8.938867187499994],[18.886035156250017,8.836035156249991],[19.108691406250017,8.656152343749994],[18.56416015625001,8.0458984375],[17.6494140625,7.98359375],[16.784765625,7.550976562499997],[16.545312500000023,7.865478515625],[16.37890625,7.683544921874997],[15.957617187500006,7.507568359375],[15.480078125,7.523779296874991],[15.5498046875,7.787890624999989],[15.1162109375,8.557324218749997],[14.332324218750017,9.20351562499999],[13.977246093750011,9.691552734374994],[14.243261718750006,9.979736328125],[15.654882812500006,10.0078125],[15.276074218750011,10.357373046874997],[15.132226562500023,10.648486328124989],[15.029882812500006,11.11367187499999],[15.08125,11.845507812499989],[14.847070312500023,12.502099609374994],[14.461718750000017,13.021777343749989],[14.244824218750011,13.07734375],[14.06396484375,13.07851562499999],[13.932324218750011,13.258496093749997],[13.606347656250023,13.70458984375],[13.505761718750023,14.134423828124994],[13.4482421875,14.380664062500003],[14.367968750000017,15.750146484374994],[15.474316406250011,16.908398437499997],[15.735058593750011,19.904052734375],[15.963183593750017,20.34619140625],[15.587109375000011,20.733300781249994],[15.607324218750023,20.954394531250003],[15.181835937500011,21.523388671874997],[14.97900390625,22.99619140624999],[15.984082031250011,23.445214843749994],[20.14765625000001,21.38925781249999],[23.980273437500017,19.496630859375003]]]},"properties":{"name":"Chad","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[0.900488281250006,10.993261718749991],[0.763378906250011,10.386669921874997],[1.330078125,9.996972656249994],[1.3857421875,9.361669921874991],[1.600195312500006,9.050048828125],[1.624707031250011,6.997314453125],[1.530957031250011,6.992431640625],[1.777929687500006,6.294628906249997],[1.62265625,6.216796875],[1.187207031250011,6.089404296874989],[0.736914062500006,6.452587890624997],[0.525585937500011,6.850927734374991],[0.634765625,7.353662109374994],[0.5,7.546875],[0.686328125000017,8.354882812499994],[0.37255859375,8.75927734375],[0.48876953125,8.851464843749994],[0.525683593750017,9.398486328124989],[0.2333984375,9.463525390624994],[0.342578125000017,9.604150390624994],[0.264550781250023,9.644726562499997],[0.380859375,10.291845703124991],[-0.08632812499999,10.673046875],[0.009423828125023,11.02099609375],[-0.068603515625,11.115625],[0.49267578125,10.954980468749994],[0.900488281250006,10.993261718749991]]]},"properties":{"name":"Togo","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[98.40908203125005,7.90205078125004],[98.2962890625,7.776074218750054],[98.32207031250007,8.166308593749974],[98.4349609375,8.085644531249969],[98.40908203125005,7.90205078125004]]],[[[100.070703125,9.58603515625002],[99.96240234375003,9.421630859375],[99.93955078125006,9.559960937500037],[100.070703125,9.58603515625002]]],[[[102.42675781250003,11.988720703125026],[102.30195312500004,11.98081054687502],[102.27744140625006,12.151855468750043],[102.42675781250003,11.988720703125026]]],[[[100.12246093750005,20.316650390625057],[100.11494140625004,20.257666015625034],[100.13974609375012,20.245410156250017],[100.31796875000006,20.38588867187505],[100.51953125000003,20.17792968750004],[100.39765625000004,19.756103515625],[100.51357421875005,19.553466796875],[101.21191406249997,19.54833984375003],[101.22080078125006,19.486621093750074],[101.19755859375007,19.327929687500074],[101.2863281250001,18.977148437500006],[101.04697265625012,18.441992187500063],[101.05058593750002,18.407031250000045],[101.1375,18.28686523437497],[101.14394531250005,18.14262695312499],[100.90849609375002,17.583886718750023],[100.95585937500002,17.541113281250006],[101.10517578125004,17.47954101562499],[101.16748046874997,17.49902343749997],[101.41367187500012,17.71875],[101.55507812500005,17.812353515625034],[101.56367187500004,17.82050781250001],[101.6875,17.889404296875],[101.77480468750005,18.03339843750004],[101.81865234375002,18.06464843750001],[101.87548828124997,18.046435546875017],[101.94746093750004,18.081494140624983],[102.03457031250005,18.169824218750023],[102.10146484375,18.210644531249983],[102.14824218750002,18.20385742187503],[102.35185546875002,18.045947265625017],[102.45878906250002,17.984619140625057],[102.55253906250007,17.96508789062497],[102.61679687500006,17.833349609375034],[102.66064453124997,17.817968750000034],[102.680078125,17.824121093750023],[103.05136718750006,18.02851562500001],[103.0912109375,18.13823242187499],[103.14853515625006,18.221728515625045],[103.19970703124997,18.259472656249983],[103.26318359374997,18.27846679687505],[103.27958984375002,18.304980468750017],[103.24892578125,18.338964843750034],[103.25175781250002,18.373486328124955],[103.2882812500001,18.408398437499955],[103.36699218750007,18.42333984374997],[103.48798828125004,18.418164062499983],[103.62968750000002,18.38256835937503],[103.79228515625002,18.316503906249977],[103.89882812500005,18.295312500000023],[103.949609375,18.31899414062505],[104.04873046875005,18.216699218749994],[104.19619140625005,17.988378906250006],[104.32265625,17.815820312500023],[104.428125,17.69897460937503],[104.7396484375,17.461669921875],[104.81601562500012,17.30029296874997],[104.75898437500004,17.0771484375],[104.7435546875,16.884375],[104.75058593750012,16.647558593750063],[104.81933593750003,16.46606445312503],[105.04716796875007,16.160253906249977],[105.14873046875007,16.09355468749999],[105.33066406250006,16.037890625000017],[105.40625,15.987451171875051],[105.39892578124997,15.829882812500017],[105.62207031250003,15.699951171875],[105.641015625,15.656542968750045],[105.6388671875001,15.585937500000057],[105.615625,15.488281250000057],[105.49042968750004,15.256591796875],[105.49042968750004,15.127587890625009],[105.5333984375001,15.041601562499991],[105.54667968750002,14.932470703124963],[105.52304687500012,14.843310546875003],[105.49736328125002,14.590673828124963],[105.47558593750003,14.530126953124977],[105.42265625000007,14.471630859375054],[105.34218750000005,14.416699218750054],[105.24365234375003,14.367871093750054],[105.1833007812501,14.346240234374989],[105.16914062500004,14.336083984374966],[105.12597656250003,14.280957031250011],[105.07412109375005,14.227441406250037],[104.77900390625004,14.427832031250006],[103.19941406250004,14.332617187499977],[102.90927734375006,14.136718750000028],[102.546875,13.585693359375043],[102.33632812500005,13.560302734375014],[102.49960937500012,12.669970703125003],[102.75566406250002,12.42626953125],[102.73662109375007,12.089794921875011],[102.93388671875002,11.706689453125037],[102.594140625,12.203027343749994],[102.54023437500004,12.109228515624977],[101.83574218750002,12.640380859375014],[100.89775390625007,12.653808593749986],[100.96269531250007,13.431982421874991],[100.60292968750005,13.568164062500017],[100.23564453125002,13.48447265625002],[99.99052734375007,13.243457031250031],[100.08994140625006,13.045654296874972],[99.96396484375006,12.690039062500006],[99.98906250000007,12.170800781249994],[99.16503906250003,10.319824218750028],[99.25390625000003,9.265234375000034],[99.83554687500012,9.288378906250031],[99.98955078125007,8.589208984374977],[100.129296875,8.428076171875006],[100.16347656250005,8.508398437500034],[100.27939453125006,8.268505859375011],[100.54521484375002,7.226904296874991],[100.43935546875005,7.280761718750043],[100.38037109375003,7.541503906250043],[100.28378906250006,7.551513671875043],[100.25664062500002,7.774902343749986],[100.16074218750012,7.599267578124994],[100.4235351562501,7.18784179687502],[101.01787109375002,6.860937500000034],[101.49794921875005,6.865283203125031],[102.10107421874997,6.242236328125031],[101.87363281250012,5.825292968749991],[101.67841796875004,5.778808593750028],[101.5560546875,5.907763671875003],[101.1139648437501,5.636767578125045],[100.98164062500004,5.771044921875045],[101.05351562500002,6.242578125],[100.87392578125,6.24541015624996],[100.75449218750012,6.460058593749991],[100.3454101562501,6.549902343750006],[100.26142578125004,6.682714843749963],[100.11914062499997,6.441992187500048],[99.69599609375004,6.87666015625004],[99.72031250000012,7.106201171875],[99.55302734375002,7.218798828125031],[99.59697265625002,7.355615234375009],[99.35859375000004,7.372216796875023],[99.26367187499997,7.619042968750037],[99.07763671874997,7.718066406250045],[99.05107421875002,7.887841796874994],[98.78867187500012,8.059814453125028],[98.703515625,8.256738281250009],[98.57919921875006,8.344287109374989],[98.42099609375006,8.17822265625],[98.30546875000007,8.226220703125009],[98.24179687500006,8.767871093750045],[98.70253906250005,10.19038085937504],[98.7572265625,10.660937499999974],[99.1901367187501,11.105273437499989],[99.61474609374997,11.781201171875026],[99.40507812500002,12.547900390625003],[99.12392578125,13.030761718750043],[99.13681640625006,13.716699218749994],[98.57001953125004,14.359912109375031],[98.20214843749997,14.97592773437502],[98.19101562500012,15.204101562499972],[98.55693359375007,15.367675781249986],[98.59238281250006,16.05068359375005],[98.81796875000012,16.180810546874994],[98.88828125000006,16.351904296875034],[98.83544921875003,16.417578125],[98.66074218750006,16.330419921875006],[98.4388671875,16.975683593750034],[97.7064453125,17.79711914062503],[97.63222656250005,18.290332031250074],[97.37392578125,18.51796875],[97.74589843750002,18.58818359374999],[97.816796875,19.459960937500057],[98.01503906250005,19.74951171874997],[98.37128906250004,19.68916015625004],[98.9166992187501,19.77290039062504],[99.07421875000003,20.09936523437503],[99.48593750000006,20.14985351562501],[99.45888671875005,20.363037109375],[99.72011718750005,20.32543945312497],[99.8903320312501,20.424414062499977],[99.9542968750001,20.415429687500023],[100.0036132812501,20.37958984375001],[100.12246093750005,20.316650390625057]]]]},"properties":{"name":"Thailand","childNum":4}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[70.66416015625,39.85546875],[70.55957031250003,39.790917968749994],[70.48925781250003,39.86303710937503],[70.48281250000005,39.88271484375005],[70.49775390625004,39.88242187499998],[70.56708984375004,39.86660156250005],[70.66416015625,39.85546875]]],[[[70.95800781250003,40.238867187500034],[70.59921875,39.974511718749994],[69.96679687499997,40.202246093750034],[69.46875,40.020751953125],[69.47099609375002,39.990625],[69.43193359375007,39.909765625000034],[69.36542968750004,39.94707031250002],[69.30722656250006,39.968554687500045],[69.27880859374997,39.91777343749999],[69.24472656250006,39.82709960937498],[69.29765625000007,39.52480468750005],[70.50117187500004,39.58735351562501],[70.79931640625003,39.39472656250001],[71.4703125,39.60366210937502],[71.50302734375006,39.58217773437502],[71.51738281250002,39.55385742187502],[71.50585937499997,39.51708984374997],[71.5033203125,39.47880859374999],[71.73222656250002,39.422998046874994],[71.77861328125007,39.27797851562502],[72.04277343750002,39.352148437500034],[72.08417968750004,39.310644531250034],[72.14736328125005,39.26074218749997],[72.22998046874997,39.20751953124997],[72.63994140625002,39.385986328125],[73.10927734375,39.36191406249998],[73.2349609375,39.37456054687499],[73.3361328125001,39.41235351562506],[73.38740234375004,39.442724609375034],[73.4704101562501,39.46059570312502],[73.63164062500007,39.44887695312502],[73.63632812500006,39.396679687499955],[73.60732421875,39.229199218749955],[73.8052734375,38.968652343749994],[73.69609375000007,38.85429687499996],[73.80166015625,38.60688476562501],[74.02558593750004,38.53984375000002],[74.27744140625,38.659765625000034],[74.81230468750002,38.46030273437498],[74.8942382812501,37.60141601562498],[75.11875,37.38569335937498],[74.89130859375004,37.231640624999955],[74.875390625,37.24199218750002],[74.83046875,37.28593750000002],[74.73056640625006,37.35703125],[74.659375,37.39448242187501],[74.34902343750005,37.41875],[74.25966796875005,37.41542968750002],[74.20351562500005,37.37246093750005],[74.16708984375,37.32944335937498],[73.74960937500006,37.23178710937498],[73.6535156250001,37.239355468750034],[73.62753906250006,37.261572265625006],[73.71728515625003,37.32944335937498],[73.7337890625,37.37578125000002],[73.72060546875,37.41875],[73.65712890625005,37.43046875],[73.6046875000001,37.44604492187503],[73.48134765625,37.4716796875],[73.38291015625006,37.462255859375034],[73.21113281250004,37.40849609375002],[72.89550781250003,37.26752929687498],[72.65742187500004,37.029052734375],[71.665625,36.696923828124994],[71.530859375,36.845117187499994],[71.43291015625007,37.12753906249998],[71.5822265625001,37.91010742187498],[71.55195312500004,37.93315429687496],[71.48779296874997,37.93188476562497],[71.38964843750003,37.90629882812502],[71.31992187500006,37.90185546875],[71.27851562500004,37.91840820312498],[71.33271484375004,38.170263671875034],[71.25585937499997,38.306982421875006],[70.7359375,38.42255859375001],[70.41777343750002,38.075439453125],[70.21464843750002,37.92441406250006],[70.19941406250004,37.88603515624996],[70.25498046875006,37.76538085937497],[70.25146484374997,37.66416015625006],[70.18867187500004,37.58247070312501],[70.11982421875004,37.54350585937499],[69.9849609375,37.566162109375],[69.8208984375,37.60957031250004],[69.62578125000002,37.59404296874999],[69.49208984375,37.55307617187498],[69.42011718750004,37.486718749999966],[69.39921875000007,37.39931640625002],[69.42968749999997,37.290869140625034],[69.414453125,37.20776367187497],[69.35380859375007,37.15004882812502],[69.3039062500001,37.11694335937503],[69.26484375000004,37.1083984375],[69.18017578125003,37.158300781250034],[68.96044921875003,37.32504882812498],[68.9118164062501,37.33393554687501],[68.88525390624997,37.32807617187498],[68.85537109375005,37.31684570312501],[68.83847656250006,37.30283203124998],[68.82373046874997,37.27070312500001],[68.78203125000002,37.25800781250001],[68.7232421875,37.26801757812501],[68.6691406250001,37.258398437500006],[68.3869140625001,37.1375],[68.29951171875004,37.08842773437502],[68.28476562500006,37.036328124999955],[68.2609375000001,37.01308593750002],[68.2121093750001,37.02153320312496],[68.0677734375,36.949804687500006],[67.95800781249997,36.972021484375006],[67.83447265624997,37.06420898437506],[67.75898437500004,37.172216796875034],[67.7980468750001,37.244970703125006],[67.81435546875005,37.48701171875004],[68.3502929687501,38.211035156250006],[68.08720703125002,38.47353515625002],[68.13251953125004,38.927636718749966],[67.69443359375006,38.99462890625003],[67.64833984375005,39.13105468750004],[67.3576171875001,39.216699218749994],[67.426171875,39.46557617187497],[67.71904296875007,39.62138671875002],[68.46328125,39.53671874999998],[68.63896484375007,39.8388671875],[68.86875,39.90747070312503],[68.80468750000003,40.05034179687499],[68.9720703125,40.08994140624998],[68.63066406250007,40.16708984374998],[69.27490234374997,40.19809570312498],[69.20625,40.566552734374994],[69.35722656250002,40.76738281249996],[69.71289062500003,40.65698242187503],[70.40195312500006,41.03510742187498],[70.75107421875006,40.721777343750006],[70.37158203125003,40.38413085937506],[70.653125,40.201171875],[70.95800781250003,40.238867187500034]]]]},"properties":{"name":"Tajikistan","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[66.52226562500007,37.34848632812506],[66.471875,37.3447265625],[65.7650390625,37.56914062499996],[65.55498046875002,37.25117187500004],[65.30361328125005,37.24677734375001],[65.08964843750007,37.237939453124994],[64.9515625,37.19355468750001],[64.81630859375005,37.13208007812503],[64.7824218750001,37.05927734375001],[64.60253906250003,36.554541015625034],[64.5658203125,36.427587890625034],[64.51103515625002,36.34067382812498],[64.184375,36.14892578125],[63.8625,36.012353515624994],[63.12998046875006,35.84619140624997],[63.169726562500074,35.678125],[63.05664062500003,35.44580078125003],[62.98027343750002,35.40917968750003],[62.85800781250006,35.34965820312499],[62.688085937500006,35.25532226562504],[62.3078125000001,35.17080078125005],[62.08964843750002,35.3796875],[61.62099609375005,35.43232421875004],[61.34472656249997,35.62949218750006],[61.26201171875002,35.61958007812498],[61.25214843750004,35.86762695312498],[61.15292968750006,35.97675781250001],[61.212011718750006,36.190527343750034],[61.11962890625003,36.64257812500003],[60.34130859375003,36.63764648437501],[60.06279296875002,36.962890625],[59.454980468749994,37.25283203125002],[59.30175781249997,37.51064453125005],[58.81542968750003,37.683496093749994],[58.261621093749994,37.665820312500045],[57.35371093750004,37.97333984374998],[57.1935546875001,38.216406250000034],[56.440625,38.249414062499994],[56.272070312500006,38.080419921875034],[55.38085937500003,38.051123046875034],[54.90009765625004,37.77792968750006],[54.6994140625001,37.47016601562498],[53.91416015625006,37.34355468750002],[53.86865234375003,38.949267578125045],[53.70458984375003,39.209570312500034],[53.33632812500005,39.34082031250006],[53.15664062499999,39.26499023437506],[53.23564453125002,39.608544921874966],[53.603125,39.546972656250034],[53.472265625,39.66879882812498],[53.48730468749997,39.909375],[52.9875,39.98759765625002],[53.03554687500005,39.7744140625],[52.80468749999997,40.054003906250045],[52.73369140625002,40.39873046875002],[52.943457031250006,41.03808593750006],[53.1452148437501,40.82495117187497],[53.61523437500003,40.818505859374994],[53.87001953125005,40.64868164062503],[54.37734375,40.693261718749966],[54.319433593750006,40.83457031249998],[54.68505859375003,40.873046875],[54.70371093750006,41.071142578125034],[54.094824218750006,41.51938476562506],[53.80468749999997,42.11762695312498],[53.16416015625006,42.09379882812502],[52.97001953125002,41.97622070312505],[52.81484375,41.711816406249994],[52.850390625000074,41.20029296875006],[52.4938476562501,41.780371093750034],[53.0558593750001,42.14775390624999],[54.120996093749994,42.335205078125],[54.85380859375002,41.965185546875006],[55.434375,41.296289062499994],[55.97744140625005,41.32221679687504],[57.01796875,41.26347656249996],[57.11884765625004,41.35029296874998],[56.96406250000004,41.856542968750006],[57.290625,42.123779296875],[57.814257812500074,42.18984375000005],[58.02890625,42.48764648437506],[58.474414062500074,42.29936523437496],[58.15156250000004,42.628076171874966],[58.477148437500006,42.66284179687503],[58.5890625000001,42.778466796874966],[59.35429687500002,42.32329101562496],[59.98515625000002,42.21171875],[59.94179687499999,41.97353515625002],[60.20078125000006,41.803125],[60.07558593750005,41.759667968749966],[60.089648437500074,41.39941406250003],[60.454980468749994,41.221630859374955],[61.2423828125001,41.18920898437503],[61.496972656249994,41.276074218749955],[61.90283203124997,41.09370117187501],[62.48320312500002,39.97563476562496],[63.76367187500003,39.16054687499999],[64.3099609375,38.97729492187497],[65.612890625,38.23857421875002],[65.97119140624997,38.244238281250006],[66.60625,37.98671875000005],[66.52558593750004,37.785742187500034],[66.51132812500006,37.59916992187496],[66.51064453125,37.45869140625004],[66.52226562500007,37.34848632812506]]]},"properties":{"name":"Turkmenistan","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[124.0363281250001,-9.341601562500031],[124.44443359375012,-9.190332031250023],[124.28232421875012,-9.427929687500026],[124.0363281250001,-9.341601562500031]]],[[[125.06816406250002,-9.511914062499997],[124.96015625000004,-9.213769531250009],[125.10048828125,-9.189843750000023],[125.14902343750012,-9.042578125000034],[124.93681640625007,-9.053417968750026],[124.92226562500005,-8.942480468749977],[125.17802734375002,-8.647851562499994],[125.38183593749997,-8.575390624999983],[126.61972656250006,-8.459472656249986],[126.96640625000012,-8.315722656250017],[127.29609375000004,-8.424511718749969],[126.91523437500004,-8.715234374999966],[125.40800781250002,-9.275781250000023],[125.06816406250002,-9.511914062499997]]],[[[125.64609375000006,-8.139941406250003],[125.5794921875,-8.311816406250017],[125.50712890625007,-8.275097656249997],[125.64609375000006,-8.139941406250003]]]]},"properties":{"name":"Timor-Leste","childNum":3}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-175.1619140625,-21.169335937500023],[-175.07817382812496,-21.129003906249977],[-175.15659179687495,-21.26367187499997],[-175.36235351562496,-21.106835937499994],[-175.1619140625,-21.169335937500023]]],[[[-173.953515625,-18.63935546875001],[-174.06914062500002,-18.640234375],[-173.96806640624993,-18.565332031250023],[-173.953515625,-18.63935546875001]]]]},"properties":{"name":"Tonga","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[-61.012109374999966,10.134326171874989],[-61.906103515625006,10.069140625000031],[-61.49931640624999,10.268554687499972],[-61.47827148437497,10.603369140624977],[-61.65117187499993,10.718066406249974],[-60.917626953124966,10.84023437499999],[-61.03374023437502,10.669873046875026],[-61.012109374999966,10.134326171874989]]]},"properties":{"name":"Trinidad and Tobago","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[10.957617187500063,33.72207031250005],[10.722070312500051,33.738916015624994],[10.745214843750063,33.88867187500006],[11.017871093749989,33.82333984374998],[10.957617187500063,33.72207031250005]]],[[[11.278027343750068,34.753808593749994],[11.123632812500063,34.68168945312496],[11.254882812500057,34.82031250000006],[11.278027343750068,34.753808593749994]]],[[[10.274609375000011,31.684960937499994],[10.114941406250068,31.46376953125005],[10.216406250000063,30.78320312500003],[10.05976562500004,30.58007812500003],[9.932519531250051,30.42534179687496],[9.895019531250028,30.387304687500034],[9.51875,30.229394531249994],[9.224023437500023,31.373681640624994],[9.160253906250006,31.621337890625],[9.044042968750034,32.072363281250034],[8.333398437500051,32.54360351562502],[8.1125,33.055322265624994],[7.877246093750017,33.172119140625],[7.534375,33.717919921874994],[7.513867187500068,34.080517578124955],[8.24560546875,34.73408203124998],[8.276855468750057,34.97949218749997],[8.312109375000063,35.084619140624994],[8.394238281250011,35.20385742187503],[8.318066406250011,35.654931640624994],[8.348730468750063,36.367968750000045],[8.207617187500006,36.518945312499994],[8.601269531250068,36.83393554687504],[8.576562500000023,36.93720703125001],[9.687988281250057,37.34038085937499],[9.838476562500063,37.30898437499999],[9.830273437499983,37.13535156250006],[9.875585937499977,37.25415039062503],[10.196386718750063,37.205859375000045],[10.293261718750074,36.781494140625],[10.412304687499983,36.73183593750002],[11.053906250000068,37.07250976562506],[11.12666015625004,36.874072265625045],[10.476562500000028,36.175146484375006],[10.590820312500028,35.88725585937499],[11.00429687500008,35.63383789062496],[11.120117187500057,35.24028320312499],[10.69091796875,34.67846679687503],[10.118359375000068,34.280078125000045],[10.049023437500068,34.056298828124994],[10.305273437500034,33.72827148437497],[10.713183593750017,33.68901367187496],[10.722753906250006,33.514404296875],[10.958007812500057,33.62631835937498],[11.257421875000034,33.30883789062506],[11.202636718749972,33.24921874999998],[11.50458984375004,33.181933593750045],[11.502441406250028,33.15556640624999],[11.467187500000051,32.96572265625005],[11.459179687500011,32.897363281249966],[11.453906250000017,32.64257812500003],[11.533789062500034,32.52495117187496],[11.535937500000017,32.47333984375001],[11.504980468750034,32.413671875000034],[11.358007812500006,32.34521484375003],[11.168261718750074,32.25673828125002],[11.005175781250074,32.17270507812506],[10.826367187500068,32.080664062500034],[10.771582031250006,32.02119140625001],[10.60888671875,31.929541015624977],[10.47578125000004,31.736035156249983],[10.274609375000011,31.684960937499994]]]]},"properties":{"name":"Tunisia","childNum":3}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[25.970019531250045,40.136328125],[25.6689453125,40.13588867187502],[25.918359375000023,40.23798828125004],[25.970019531250045,40.136328125]]],[[[43.43339843750002,41.155517578125],[43.43945312500003,41.10712890625001],[43.72265624999997,40.71953124999999],[43.56933593750003,40.48237304687498],[43.66621093750004,40.12636718750002],[44.28925781250004,40.040380859375006],[44.76826171875004,39.70351562500005],[44.81718750000002,39.65043945312496],[44.58710937500004,39.76855468750006],[44.3893554687501,39.422119140625],[44.02324218750002,39.37744140625006],[44.27167968750004,38.83603515625006],[44.2985351562501,38.38627929687499],[44.4499023437501,38.33422851562506],[44.21132812499999,37.908056640625006],[44.589941406250006,37.710351562499966],[44.574023437500074,37.435400390625006],[44.79414062500004,37.290380859375034],[44.76513671875003,37.142431640625006],[44.73095703124997,37.16528320312503],[44.66933593750005,37.17358398437503],[44.60595703124997,37.176025390625],[44.401953125,37.05849609375002],[44.325585937499994,37.0107421875],[44.28183593750006,36.97802734374997],[44.24570312500006,36.983300781249994],[44.20166015624997,37.05180664062502],[44.208398437499994,37.20263671875],[44.19179687499999,37.249853515625034],[44.15625,37.28295898437503],[44.11445312500004,37.30185546875006],[44.01318359375003,37.313525390625045],[43.83642578124997,37.223535156249994],[43.67578125000003,37.227246093749955],[43.09248046875004,37.36738281249998],[42.936621093750006,37.32475585937502],[42.77460937500004,37.371875],[42.74111328125005,37.361914062500034],[42.6354492187501,37.249267578125],[42.45585937500002,37.128710937500045],[42.358984375,37.10859375000004],[42.31289062499999,37.22958984374998],[42.26855468749997,37.276562499999955],[42.24755859375003,37.28222656250006],[42.20273437500006,37.29726562499999],[42.16787109375005,37.28862304687502],[42.059863281250074,37.2060546875],[41.886816406250006,37.156396484374994],[40.70566406250006,37.09770507812502],[40.4503906250001,37.00888671875006],[40.016406250000074,36.82607421875002],[39.68652343749997,36.73862304687506],[39.50146484374997,36.702246093750034],[39.35664062500004,36.68159179687498],[39.10839843749997,36.68056640625005],[38.90644531250004,36.69467773437498],[38.76660156249997,36.69311523437503],[38.19169921875002,36.90156250000004],[37.90664062500005,36.79462890625001],[37.7203125,36.74370117187502],[37.52353515625006,36.678320312500034],[37.436328125000074,36.643310546875],[37.327050781249994,36.64658203125006],[37.18740234375005,36.655908203124994],[37.066210937500074,36.652636718750045],[36.98535156250003,36.70239257812506],[36.94179687499999,36.758398437500006],[36.77656250000004,36.79267578124998],[36.65859375000005,36.80253906250002],[36.62841796875003,36.777685546875034],[36.596875,36.70136718750001],[36.546679687500074,36.50634765625],[36.5375,36.457421874999966],[36.63671874999997,36.233984375],[36.37539062499999,36.171240234375034],[36.347558593749994,36.003515625000034],[36.20195312500002,35.93754882812502],[36.15361328125002,35.83388671875005],[36.12734375,35.831445312499994],[35.967578125000074,35.91005859375002],[35.89267578125006,35.91655273437502],[35.81093750000005,36.30986328125002],[36.18847656250003,36.65898437499999],[36.048925781250006,36.91059570312501],[35.393164062500006,36.57519531249997],[34.70361328125003,36.81679687499999],[33.694726562499994,36.18198242187498],[32.794824218749994,36.03588867187497],[32.37773437500002,36.18364257812496],[32.02197265625003,36.53530273437502],[31.35253906249997,36.80107421874999],[30.64404296874997,36.86567382812501],[30.446093750000074,36.269873046875034],[29.6890625,36.15668945312498],[29.22363281249997,36.32446289062497],[28.96962890625008,36.71533203125003],[28.303710937500057,36.81196289062498],[28.01943359375005,36.63447265624998],[28.083984375000057,36.75146484375],[27.453906250000017,36.712158203125],[28.00537109375003,36.83198242187498],[28.242382812500068,37.029052734375],[27.262988281250045,36.97656250000003],[27.30019531250005,37.12685546875002],[27.53505859375005,37.16386718750002],[27.06796875,37.65791015625004],[27.224414062500074,37.725439453125006],[27.23242187500003,37.978662109374994],[26.29072265625001,38.27719726562498],[26.44130859375005,38.64121093749998],[26.67421875000008,38.33574218750002],[27.14423828125001,38.45195312499996],[26.906835937500034,38.48173828124999],[26.763671875,38.709619140624966],[27.013671875000057,38.88686523437502],[26.814941406250057,38.96098632812502],[26.853613281250034,39.115625],[26.68183593750004,39.292236328125],[26.89921874999999,39.549658203125034],[26.113085937500074,39.46738281249998],[26.101367187500074,39.56894531249998],[26.18134765625004,39.99008789062498],[26.738085937500045,40.40024414062506],[27.28457031250008,40.45561523437496],[27.4755859375,40.319921875000034],[27.72802734375,40.32880859374998],[27.84853515625005,40.38173828125002],[27.73183593750008,40.48149414062499],[27.87490234375008,40.512939453125],[27.989550781250074,40.48945312500001],[27.96259765625001,40.369873046875],[29.00712890624999,40.389746093750034],[28.787890625000017,40.534033203125034],[28.95800781250003,40.63056640624998],[29.849218750000063,40.760107421875006],[29.113867187499977,40.93784179687506],[29.14814453125004,41.221044921875034],[31.25488281249997,41.10761718750001],[31.45800781249997,41.32001953125004],[32.306445312500074,41.72958984374998],[33.38134765625003,42.01757812500003],[34.75048828124997,41.95683593749999],[35.006445312500006,42.06328125000002],[35.15488281250006,42.02753906250001],[35.12207031250003,41.89111328125003],[35.297753906249994,41.72851562500003],[35.558007812499994,41.63403320312506],[36.05175781249997,41.68256835937498],[36.40537109375006,41.27460937500001],[36.77773437499999,41.36347656250001],[37.066210937500074,41.184423828125034],[38.38105468750004,40.92451171875001],[39.426367187500006,41.10644531250003],[40.26523437500006,40.96132812500005],[41.08359375000006,41.26118164062504],[41.41435546875002,41.42363281249999],[41.510058593750074,41.51748046875002],[41.70175781250006,41.471582031249994],[41.77939453125006,41.44052734374998],[41.823535156250074,41.432373046875],[41.92578125000003,41.49565429687502],[42.46640625,41.43984375000002],[42.56738281249997,41.55927734375001],[42.590429687500006,41.57070312500002],[42.60683593750005,41.57880859374998],[42.682421875000074,41.58574218749999],[42.75410156250004,41.57890625000002],[42.787890625000074,41.56372070312503],[42.82167968750005,41.49238281249998],[42.90673828125003,41.46684570312502],[43.05712890625003,41.35283203124996],[43.149023437500006,41.30712890624997],[43.171289062499994,41.28793945312498],[43.14101562499999,41.26484374999998],[43.15283203124997,41.23642578125006],[43.20546875000005,41.19916992187501],[43.43339843750002,41.155517578125]]],[[[27.47480468750001,41.946875],[28.014453125000017,41.96904296874999],[28.197851562500063,41.55449218750002],[29.057226562500006,41.22973632812503],[28.95625,41.00820312499999],[28.172167968750074,41.08071289062502],[27.49941406250005,40.97314453124997],[27.258007812499983,40.687353515625006],[26.772070312500034,40.498046875],[26.202734375000034,40.07539062500004],[26.25380859375005,40.31469726562503],[26.792089843750034,40.626611328124994],[26.10546875000003,40.61132812499997],[26.03896484375008,40.726757812499955],[26.331054687500057,40.954492187499994],[26.330664062499977,41.23876953125],[26.62490234375008,41.401757812499994],[26.581347656250074,41.60126953125004],[26.320898437500034,41.716552734375],[26.3603515625,41.80156249999999],[26.51142578125004,41.82636718749998],[26.549707031250023,41.896728515625],[26.5796875,41.947949218749955],[26.615332031250063,41.964892578125045],[26.884863281250006,41.99184570312502],[26.96875,42.02685546875006],[27.01171875,42.05864257812496],[27.193359375000057,42.07709960937498],[27.24433593750004,42.09326171875],[27.294921875000057,42.079541015624955],[27.47480468750001,41.946875]]]]},"properties":{"name":"Turkey","childNum":3}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[39.71132812499999,-7.977441406250023],[39.602929687499994,-7.936132812499949],[39.907128906249994,-7.649218750000031],[39.71132812499999,-7.977441406250023]]],[[[39.49648437499999,-6.174609375],[39.573046875000074,-6.387402343750011],[39.48095703124997,-6.45371093750002],[39.18232421875004,-6.172558593750026],[39.30898437499999,-5.721972656249974],[39.49648437499999,-6.174609375]]],[[[39.86503906250002,-4.906152343750037],[39.74931640625002,-5.443847656249986],[39.646777343750074,-5.368554687500009],[39.6734375,-4.927050781250031],[39.86503906250002,-4.906152343750037]]],[[[33.90322265625005,-1.002050781250034],[37.643847656250074,-3.045410156250028],[37.608203125000074,-3.497070312500028],[39.221777343750006,-4.692382812500014],[38.80468750000003,-6.070117187500031],[38.87402343750003,-6.33125],[39.5460937500001,-7.024023437500034],[39.288476562499994,-7.517871093750003],[39.28701171875005,-7.787695312500006],[39.4284179687501,-7.81279296874996],[39.441015625,-8.011523437499946],[39.304003906250074,-8.44384765625],[39.451269531250006,-8.94296875],[39.64130859375004,-9.19248046875002],[39.72519531250006,-10.000488281249972],[40.46357421875004,-10.464355468749972],[39.98867187499999,-10.820800781250014],[39.81708984375004,-10.912402343750031],[38.9875,-11.167285156250003],[38.49179687500006,-11.413281250000026],[37.92021484375002,-11.294726562500031],[37.72480468750004,-11.58066406250002],[37.54169921875004,-11.675097656249974],[37.37285156250002,-11.710449218749986],[36.97890625000005,-11.566992187499977],[36.30566406250003,-11.706347656249946],[36.191308593749994,-11.670703124999974],[36.17548828125004,-11.60927734374998],[36.08222656250004,-11.537304687499969],[35.91132812500004,-11.45468750000002],[35.785449218750074,-11.452929687500017],[35.63095703125006,-11.582031250000028],[35.564355468749994,-11.602343749999989],[35.418261718750074,-11.583203125],[35.18261718750003,-11.574804687499977],[34.95947265625003,-11.578125],[34.93701171874997,-11.463476562500034],[34.890625,-11.3935546875],[34.77382812500005,-11.341699218750009],[34.60791015624997,-11.08046875],[34.66708984375006,-10.792480468750028],[34.56992187500006,-10.241113281249966],[34.32089843750006,-9.731542968749977],[33.99560546875003,-9.495410156250003],[33.88886718750004,-9.670117187499983],[32.91992187500003,-9.407421875000026],[32.75664062500002,-9.322265625],[31.94257812500004,-9.05400390624996],[31.91865234375004,-8.942187500000017],[31.886132812499994,-8.921972656249977],[31.81806640625004,-8.902246093749952],[31.673632812500017,-8.908789062499963],[31.55625,-8.80546875],[31.44921874999997,-8.65390625],[31.35058593750003,-8.607031250000034],[31.07636718750004,-8.611914062499963],[30.968359375000063,-8.550976562499983],[30.89199218750005,-8.473730468749963],[30.830664062500063,-8.385546875000031],[30.720898437500097,-8.104394531250037],[30.40673828125003,-7.460644531249983],[30.313183593750097,-7.203710937499949],[30.212695312500017,-7.037890625000017],[30.10625,-6.915039062500028],[29.961816406249994,-6.803125],[29.798144531250017,-6.691894531249957],[29.70966796875004,-6.61689453125004],[29.590625,-6.394433593750023],[29.540820312500017,-6.313867187500037],[29.50625,-6.172070312500011],[29.480078125,-6.025],[29.490820312500063,-5.96542968750002],[29.59638671875004,-5.775976562499963],[29.60703125,-5.722656250000028],[29.59414062500005,-5.650781250000037],[29.542382812499994,-5.499804687500017],[29.34277343749997,-4.983105468749997],[29.32343750000004,-4.898828124999966],[29.32568359374997,-4.835644531249969],[29.404199218749994,-4.49667968750002],[29.40322265625005,-4.449316406249963],[29.71777343750003,-4.45585937499996],[29.94726562499997,-4.307324218749983],[30.4,-3.65390625],[30.790234375000097,-3.274609375000011],[30.811132812500006,-3.116406250000011],[30.78027343750003,-2.984863281249957],[30.70947265624997,-2.977246093749997],[30.604296875000074,-2.935253906249969],[30.515039062499994,-2.917578125],[30.45556640625003,-2.893164062500006],[30.433496093749994,-2.874511718750028],[30.424023437500097,-2.82402343749996],[30.473339843750097,-2.6943359375],[30.42421875000005,-2.641601562500014],[30.441992187500006,-2.613476562499969],[30.53369140624997,-2.426269531250014],[30.55361328125005,-2.400097656250011],[30.593359375000063,-2.39677734374996],[30.65664062500005,-2.373828124999989],[30.71484375000003,-2.363476562500011],[30.7625,-2.371679687499991],[30.828710937500006,-2.338476562499977],[30.85498046874997,-2.265429687500017],[30.8765625,-2.143359375000017],[30.864648437499994,-2.044042968749949],[30.819140625000017,-1.967480468749983],[30.812597656250006,-1.56308593750002],[30.76220703124997,-1.458691406249983],[30.710742187500074,-1.396777343749974],[30.631933593750006,-1.36748046874996],[30.508105468750074,-1.208203125000026],[30.47021484374997,-1.13115234374996],[30.47705078124997,-1.0830078125],[30.509960937500097,-1.067285156249994],[30.51992187499999,-1.0625],[30.67275390625005,-1.051367187499949],[30.741992187500017,-1.007519531249997],[30.809179687500063,-0.994921875],[30.82363281250005,-0.999023437499943],[30.84472656250003,-1.002050781250034],[32.371875,-1.002050781250034],[33.90322265625005,-1.002050781250034]]]]},"properties":{"name":"Tanzania","childNum":4}},{"geometry":{"type":"Polygon","coordinates":[[[30.50996093750001,-1.067285156250009],[30.46992187500001,-1.066015625],[30.41230468750001,-1.063085937500006],[30.360253906250023,-1.074609375],[29.930078125000023,-1.469921875000011],[29.82539062500001,-1.335546875],[29.576953125000017,-1.387890625000011],[29.717675781250023,0.098339843749997],[29.934472656250023,0.4990234375],[29.94287109375,0.819238281249994],[31.252734375000017,2.044580078124994],[31.176367187500006,2.270068359374989],[30.728613281250006,2.455371093749989],[30.8466796875,2.847021484374991],[30.754003906250006,3.041796874999989],[30.90644531250001,3.408935546875],[30.83857421875001,3.49072265625],[31.15234375,3.785595703124997],[31.547167968750017,3.677587890624991],[31.79804687500001,3.802636718749994],[32.13593750000001,3.519726562499997],[32.33574218750002,3.706201171874994],[32.99726562500001,3.880175781249989],[33.489355468750006,3.755078125],[33.568457031250006,3.81171875],[33.74160156250002,3.985253906249994],[33.97607421875,4.22021484375],[34.13203125000001,3.88916015625],[34.18574218750001,3.869775390624994],[34.1650390625,3.81298828125],[34.26708984375,3.733154296875],[34.39287109375002,3.691503906249991],[34.43769531250001,3.650585937499997],[34.44179687500002,3.60625],[34.3994140625,3.412695312499991],[34.4072265625,3.357519531249991],[34.447851562500006,3.163476562499994],[34.90576171875,2.4796875],[34.88300781250001,2.417919921874997],[34.96406250000001,2.062402343749994],[34.9775390625,1.861914062499991],[34.97646484375002,1.719628906249994],[34.79863281250002,1.24453125],[34.48173828125002,1.042138671874994],[34.41083984375001,0.867285156249991],[34.16093750000002,0.605175781249997],[33.94316406250002,0.173779296874997],[33.90322265625002,-1.002050781250006],[32.371875,-1.002050781250006],[30.8447265625,-1.002050781250006],[30.823632812500023,-0.9990234375],[30.809179687500006,-0.994921875],[30.741992187500017,-1.007519531250011],[30.672753906250023,-1.051367187500006],[30.598730468750006,-1.069726562500009],[30.519921875000023,-1.0625],[30.50996093750001,-1.067285156250009]]]},"properties":{"name":"Uganda","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[32.01220703124997,46.20390624999999],[32.15009765625004,46.1546875],[31.56386718750005,46.25776367187504],[31.50878906250003,46.373144531250006],[32.01220703124997,46.20390624999999]]],[[[38.21435546875003,47.091455078124966],[37.54335937499999,47.07456054687498],[36.794824218749994,46.71440429687499],[36.55878906250004,46.76269531250006],[35.82714843749997,46.62431640625002],[35.01455078125005,46.10600585937502],[35.280175781249994,46.27949218750001],[35.23037109375005,46.440625],[34.84960937500003,46.189892578124955],[35.02285156250005,45.70097656250002],[35.45751953124997,45.316308593749994],[36.170507812500006,45.453076171874955],[36.575,45.3935546875],[36.39335937500002,45.06538085937501],[35.87011718750003,45.005322265624955],[35.472558593749994,45.098486328125006],[35.08769531250002,44.802636718749966],[34.46992187500004,44.7216796875],[33.909960937500074,44.387597656249966],[33.45068359374997,44.553662109374955],[33.55517578125003,45.09765625000003],[32.5080078125001,45.40380859375006],[33.664843750000074,45.94707031249996],[33.59414062500005,46.09624023437499],[33.42988281250004,46.05761718750003],[33.20224609375006,46.17573242187501],[32.47675781250004,46.08369140625001],[31.83125,46.28168945312501],[32.00849609375004,46.42998046875002],[31.554882812500097,46.554296875000034],[32.36132812499997,46.474951171875034],[32.578027343749994,46.615625],[32.04433593750005,46.642480468749966],[31.75917968750005,47.21284179687501],[31.872851562500017,46.649755859375034],[31.532128906249994,46.66474609374998],[31.56337890625005,46.77729492187501],[31.402929687500063,46.62880859375002],[30.796289062499994,46.55200195312503],[30.219042968750074,45.866748046875045],[29.62841796875003,45.722460937500045],[29.705859375000074,45.25991210937505],[29.567675781250074,45.37080078124998],[29.40371093750005,45.419677734375],[29.22353515625005,45.402929687500034],[28.894335937500017,45.28994140625002],[28.78173828125,45.30986328125002],[28.76660156250003,45.28623046874998],[28.78828125000001,45.240966796875],[28.451269531250006,45.292187499999955],[28.317675781250045,45.347119140624955],[28.2125,45.45043945312506],[28.26484375000004,45.48388671875003],[28.310351562500074,45.49858398437499],[28.499023437500057,45.517724609374994],[28.513769531250034,45.57241210937502],[28.49160156250005,45.66577148437503],[28.562304687500074,45.73579101562501],[28.667578125,45.79384765625002],[28.729296875000074,45.852001953124955],[28.73876953125003,45.937158203124994],[28.84951171875005,45.97866210937502],[28.94775390624997,46.049951171874966],[28.971875,46.12763671874998],[29.00625,46.17646484374998],[28.94375,46.28842773437506],[28.930566406250023,46.36225585937501],[28.92744140625001,46.42412109374999],[28.958398437500023,46.45849609374997],[29.146289062500017,46.52690429687496],[29.186230468750068,46.52397460937499],[29.20078125,46.504980468750034],[29.20458984374997,46.37934570312501],[29.223828125000097,46.37695312499997],[29.458789062500017,46.453759765624994],[29.83789062499997,46.35053710937501],[29.878027343750063,46.360205078125034],[30.07568359375003,46.377832031249966],[30.131054687500097,46.42309570312506],[29.92431640624997,46.53886718750002],[29.934765625000097,46.625],[29.942480468750063,46.72377929687502],[29.918066406250063,46.78242187499998],[29.877832031249994,46.828906250000045],[29.57197265625004,46.96401367187502],[29.455664062500006,47.292626953124994],[29.134863281250006,47.48969726562501],[29.125390625000023,47.96455078125001],[28.42304687500001,48.146875],[28.34052734375001,48.144433593749994],[27.54921875000008,48.47773437500004],[27.22851562500003,48.37143554687506],[26.90058593750001,48.37192382812506],[26.847070312500023,48.387158203124955],[26.640429687500045,48.29414062500001],[26.618945312500017,48.25986328125006],[26.4423828125,48.22998046875],[26.162695312500063,47.992529296875034],[25.90869140625,47.96757812500002],[25.689257812500045,47.93247070312506],[25.46425781250005,47.910791015624994],[24.979101562500063,47.72412109374997],[24.578906250000074,47.93105468750005],[23.628710937500017,47.995849609375],[23.40820312500003,47.98999023437506],[23.20263671875,48.084521484375045],[23.13945312499999,48.08740234375],[22.87666015625001,47.94726562500006],[22.769140625000063,48.109619140625],[22.582421875000023,48.134033203125],[22.253710937500017,48.407373046874994],[22.131835937500057,48.40532226562502],[22.142871093750017,48.568505859374966],[22.295214843750045,48.68583984374999],[22.389453125000045,48.87348632812501],[22.52412109375004,49.03139648437502],[22.538671875,49.07270507812501],[22.847070312500023,49.08125],[22.705664062500006,49.17119140624999],[22.6494140625,49.53901367187498],[22.706152343750006,49.60620117187497],[23.03632812500004,49.899072265624966],[23.711718750000045,50.377343749999966],[23.97265625,50.410058593749966],[24.089941406250006,50.53046874999998],[24.0947265625,50.617041015625034],[23.9970703125,50.809375],[24.095800781250063,50.87275390625001],[23.664453125000023,51.31005859375],[23.61376953125,51.525390625],[23.706835937500045,51.64130859374998],[23.79169921875001,51.63710937500002],[23.864257812500057,51.62397460937501],[23.951171875,51.58505859374998],[23.978320312500017,51.59130859375003],[24.12685546875008,51.664648437500034],[24.280078125000017,51.77470703124999],[24.361914062500006,51.86752929687498],[25.785742187500006,51.923828125],[26.77343750000003,51.77070312499998],[26.952832031249983,51.754003906250034],[27.074121093750023,51.760839843750006],[27.14199218750008,51.75205078124998],[27.29628906250008,51.59741210937503],[27.689746093750017,51.572412109374994],[27.7,51.47797851562501],[27.85859375000004,51.59238281250006],[28.532031250000017,51.56245117187501],[28.59902343750008,51.54262695312505],[28.647753906250074,51.45654296875],[28.690234375000017,51.43886718750005],[28.73125,51.43339843749999],[28.84951171875005,51.540185546874994],[28.927539062500045,51.56215820312502],[28.97773437500004,51.57177734375003],[29.01308593750005,51.59892578124996],[29.06074218750001,51.625439453124955],[29.102050781250057,51.627539062500034],[29.346484375000017,51.38256835937503],[30.160742187500006,51.477880859375006],[30.449511718750017,51.274316406249994],[30.63251953125004,51.35541992187501],[30.61171875000005,51.406347656250006],[30.602343750000017,51.47124023437499],[30.56074218750004,51.531494140625],[30.533007812500017,51.596337890624966],[30.583886718749994,51.68896484375003],[30.667285156250017,51.81411132812502],[30.755273437499994,51.89516601562502],[30.84570312500003,51.95307617187501],[30.980664062500097,52.04619140624996],[31.217968750000097,52.05024414062498],[31.345996093750074,52.10537109375002],[31.57373046875003,52.108105468749955],[31.763378906250097,52.10107421875003],[32.12226562500004,52.05058593749996],[32.435449218749994,52.307226562500034],[33.735253906249994,52.344775390625045],[34.397851562499994,51.780419921874994],[34.12109375000003,51.67915039062498],[34.21386718750003,51.25537109375006],[35.0640625,51.203417968750045],[35.31191406250005,51.043896484374955],[35.59111328125002,50.36875],[36.1164062500001,50.408544921875006],[36.619433593750074,50.209228515625],[37.42285156249997,50.411474609375006],[38.046875,49.92001953125006],[38.258593750000074,50.05234375],[38.91835937499999,49.82470703125],[39.17480468750003,49.85595703124997],[39.780566406250074,49.57202148437503],[40.080664062500006,49.576855468749955],[40.10878906250005,49.251562500000034],[39.68652343749997,49.007910156250034],[40.00361328125004,48.82207031250002],[39.792871093749994,48.807714843750034],[39.6447265625001,48.591210937499966],[39.8356445312501,48.54277343749996],[39.95791015625005,48.268896484375034],[39.77871093750005,47.88754882812506],[38.90029296875005,47.85512695312502],[38.36884765625004,47.609960937500006],[38.21435546875003,47.091455078124966]]]]},"properties":{"name":"Ukraine","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[-57.81059570312499,-30.85859375000001],[-57.872509765625,-30.59101562500001],[-57.831201171874994,-30.495214843750006],[-57.71269531249999,-30.38447265625001],[-57.65087890625,-30.295019531250006],[-57.645751953125,-30.226953125],[-57.60888671875,-30.187792968750003],[-57.55229492187499,-30.26123046875],[-57.21445312499999,-30.28339843750001],[-57.186914062499994,-30.26484375000001],[-57.120507812499994,-30.14443359375001],[-56.83271484375,-30.107226562500003],[-56.4072265625,-30.44746093750001],[-55.998974609375,-30.837207031250003],[-56.018457031249994,-30.99189453125001],[-56.00468749999999,-31.079199218750006],[-55.873681640624994,-31.069628906250003],[-55.6271484375,-30.85810546875001],[-55.60302734375,-30.85078125000001],[-55.55732421875,-30.8759765625],[-55.17353515625,-31.279589843750003],[-55.09116210937499,-31.31396484375],[-55.036035156249994,-31.27900390625001],[-54.587646484375,-31.48515625],[-54.22055664062499,-31.85517578125001],[-53.76171875,-32.05683593750001],[-53.601708984374994,-32.40302734375001],[-53.12558593749999,-32.73671875],[-53.2140625,-32.82109375],[-53.31010742187499,-32.92705078125],[-53.39521484375,-33.010351562500006],[-53.482861328125,-33.06855468750001],[-53.511865234374994,-33.10869140625],[-53.53134765624999,-33.1708984375],[-53.53134765624999,-33.65546875000001],[-53.37060546875,-33.7421875],[-53.419580078124994,-33.77919921875001],[-53.47246093749999,-33.84931640625001],[-53.53452148437499,-34.01748046875001],[-53.742919921875,-34.24951171875],[-53.785302734374994,-34.38037109375],[-54.16855468749999,-34.670703125],[-54.902294921875,-34.93281250000001],[-55.67314453124999,-34.77568359375],[-56.249951171875,-34.90126953125001],[-57.17070312499999,-34.45234375000001],[-57.8291015625,-34.47734375],[-58.40019531249999,-33.91240234375],[-58.363525390625,-33.18232421875001],[-58.08232421874999,-32.893652343750006],[-58.12958984375,-32.75722656250001],[-58.16220703124999,-32.566503906250006],[-58.201171875,-32.4716796875],[-58.123046875,-32.321875],[-58.11972656249999,-32.24892578125001],[-58.164794921875,-32.18486328125],[-58.177001953125,-32.11904296875001],[-58.15634765624999,-32.0515625],[-58.160400390625,-31.98652343750001],[-58.18901367187499,-31.92421875],[-58.16748046875,-31.87265625],[-58.04233398437499,-31.76923828125001],[-58.006982421874994,-31.68496093750001],[-58.053857421874994,-31.494921875],[-58.0333984375,-31.416601562500006],[-57.89335937499999,-31.1953125],[-57.868408203125,-31.10439453125001],[-57.88632812499999,-30.93740234375001],[-57.81059570312499,-30.85859375000001]]]},"properties":{"name":"Uruguay","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-155.58134765624996,19.012011718750017],[-155.88129882812495,19.07050781250001],[-156.04868164062498,19.749951171874983],[-155.82031249999997,20.01416015624997],[-155.83164062499998,20.27583007812501],[-155.198779296875,19.99438476562503],[-154.80419921875,19.524462890625045],[-155.58134765624996,19.012011718750017]]],[[[-156.84960937499997,20.772656249999955],[-156.97338867187497,20.757519531249983],[-157.0505859375,20.912451171875034],[-156.88056640624995,20.904833984375074],[-156.84960937499997,20.772656249999955]]],[[[-156.48681640624994,20.93256835937504],[-156.27753906250004,20.951269531250034],[-155.98984374999998,20.75712890624999],[-156.40878906249998,20.60517578125004],[-156.480078125,20.80122070312501],[-156.69775390625003,20.949072265625034],[-156.58540039062495,21.034326171874994],[-156.48681640624994,20.93256835937504]]],[[[-157.21362304687497,21.215380859375017],[-156.71215820312506,21.155078125000074],[-156.85986328125,21.05634765625004],[-157.29033203124996,21.112597656250017],[-157.21362304687497,21.215380859375017]]],[[[-157.79936523437502,21.456640625000034],[-157.63540039062502,21.30761718749997],[-158.11035156249994,21.318603515625],[-158.27314453125,21.585253906250045],[-157.9625,21.701367187499983],[-157.79936523437502,21.456640625000034]]],[[[-159.37275390625,21.93237304687497],[-159.60883789062495,21.909521484375034],[-159.78916015625003,22.041796875000074],[-159.57919921874998,22.22314453124997],[-159.35205078124997,22.219580078125034],[-159.37275390625,21.93237304687497]]],[[[-81.04418945312503,24.716796875000057],[-81.137353515625,24.710498046875017],[-80.93046875,24.75947265625004],[-81.04418945312503,24.716796875000057]]],[[[-80.3818359375,25.142285156249955],[-80.58056640624997,24.954248046875023],[-80.25708007812497,25.34760742187504],[-80.3818359375,25.142285156249955]]],[[[-97.17070312499996,26.159375],[-97.40209960937494,26.820507812499983],[-97.38598632812494,27.19648437500004],[-97.17070312499996,26.159375]]],[[[-80.18676757812497,27.278417968750034],[-80.17050781250003,27.20478515625004],[-80.43691406249994,27.850537109374955],[-80.18676757812497,27.278417968750034]]],[[[-91.793701171875,29.50073242187497],[-92.00664062499996,29.61030273437501],[-91.875244140625,29.640966796875034],[-91.793701171875,29.50073242187497]]],[[[-84.90791015624998,29.642626953125017],[-85.11674804687499,29.63281249999997],[-84.737158203125,29.732421875],[-84.90791015624998,29.642626953125017]]],[[[-89.22397460937498,30.084082031249977],[-89.34199218749995,30.062841796875006],[-89.18466796874995,30.168652343749983],[-89.22397460937498,30.084082031249977]]],[[[-118.34794921875002,33.3857421875],[-118.29746093750003,33.312109375],[-118.44628906249997,33.317089843749955],[-118.56943359375002,33.46416015624999],[-118.34794921875002,33.3857421875]]],[[[-120.04355468749995,33.918847656249994],[-120.25190429687494,34.01386718749998],[-120.07182617187493,34.026513671874966],[-120.04355468749995,33.918847656249994]]],[[[-119.88237304687497,34.07968749999998],[-119.54926757812497,34.02817382812506],[-119.80957031249997,33.9677734375],[-119.88237304687497,34.07968749999998]]],[[[-75.54414062499995,35.240087890625034],[-75.69008789062502,35.221582031249994],[-75.53637695312497,35.27861328124999],[-75.50351562500003,35.769140625],[-75.46474609374994,35.448632812499966],[-75.54414062499995,35.240087890625034]]],[[[-74.13320312500002,39.680761718750034],[-74.25048828125,39.529394531250006],[-74.10673828124996,39.74643554687498],[-74.13320312500002,39.680761718750034]]],[[[-72.50976562500003,40.98603515625001],[-72.58085937499996,40.92133789062498],[-71.90322265625,41.06069335937505],[-73.19428710937495,40.654199218749994],[-74.01489257812497,40.581201171874966],[-73.87924804687498,40.79165039062502],[-73.573828125,40.91962890624998],[-72.62509765624998,40.99184570312505],[-72.27412109374998,41.15302734375001],[-72.50976562500003,40.98603515625001]]],[[[-69.9779296875,41.26557617187504],[-70.23305664062502,41.28632812500001],[-70.04121093750001,41.3974609375],[-69.9779296875,41.26557617187504]]],[[[-70.50991210937502,41.376318359375034],[-70.82919921874995,41.35898437500006],[-70.61601562499996,41.45722656250001],[-70.50991210937502,41.376318359375034]]],[[[-71.24140625000001,41.49194335937497],[-71.34624023437496,41.469384765624994],[-71.23203124999995,41.654296875],[-71.24140625000001,41.49194335937497]]],[[[-68.18725585937497,44.33247070312501],[-68.41171875000003,44.294335937499966],[-68.29941406249998,44.456494140624955],[-68.18725585937497,44.33247070312501]]],[[[-122.394140625,47.39526367187503],[-122.50991210937497,47.358007812500006],[-122.486474609375,47.48876953125],[-122.394140625,47.39526367187503]]],[[[-122.57275390624999,48.15664062499999],[-122.38315429687499,47.923193359375034],[-122.74150390624999,48.22529296875004],[-122.62861328125,48.38422851562498],[-122.54243164062503,48.29399414062499],[-122.69702148437499,48.228662109374994],[-122.57275390624999,48.15664062499999]]],[[[-94.80346679687497,49.0029296875],[-94.71279296874997,48.863427734374994],[-94.62089843749999,48.74262695312501],[-93.85161132812496,48.607275390625034],[-93.70771484374995,48.52543945312499],[-93.37788085937498,48.61655273437498],[-93.25795898437497,48.62885742187501],[-92.83671875,48.567773437499994],[-92.50058593749995,48.43535156250002],[-92.41459960937493,48.276611328125],[-92.3484375,48.276611328125],[-92.00517578125002,48.301855468750006],[-91.38720703124997,48.05854492187498],[-91.04345703125003,48.19370117187498],[-90.84033203125003,48.20053710937506],[-90.79731445312495,48.13105468750001],[-89.4556640625,47.996240234374994],[-88.37817382812497,48.30307617187498],[-87.74389648437497,48.06054687500003],[-87.20800781249997,47.848486328125006],[-86.67216796874996,47.636425781249955],[-85.65224609375,47.21997070312503],[-85.07006835937497,46.97993164062498],[-84.87597656249994,46.89990234375003],[-84.66577148437503,46.54326171875002],[-84.44047851562496,46.49814453125006],[-84.12319335937497,46.50292968749997],[-83.97778320312503,46.08491210937498],[-83.61596679687503,46.116845703124994],[-83.46948242187503,45.99467773437499],[-83.59267578125,45.81713867187506],[-82.91933593749994,45.51796875000002],[-82.55107421874996,45.34736328125001],[-82.48505859374993,45.08374023437503],[-82.137841796875,43.570898437500034],[-82.19038085937495,43.47407226562501],[-82.54531249999997,42.62470703124998],[-83.10952148437497,42.25068359375001],[-83.141943359375,41.97587890624996],[-82.69003906249995,41.675195312499994],[-82.43906249999998,41.67485351562502],[-81.97416992187496,41.88872070312499],[-81.50732421874997,42.10346679687504],[-81.02822265624997,42.247167968750006],[-80.24755859375,42.36601562499996],[-79.17373046875,42.74853515625],[-78.91508789062496,42.90913085937504],[-78.98076171874993,42.98061523437502],[-79.02617187499996,43.01733398437506],[-79.066064453125,43.10610351562502],[-79.171875,43.466552734375],[-79.00249023437502,43.52714843749999],[-78.845556640625,43.58334960937498],[-78.72041015625001,43.62495117187501],[-78.45825195312497,43.63149414062502],[-77.596533203125,43.62861328124998],[-76.819970703125,43.62880859375002],[-76.18579101562503,44.24223632812502],[-75.81933593749997,44.468017578125],[-75.40126953124997,44.77226562499999],[-74.99614257812496,44.970117187499966],[-74.76245117187494,44.99907226562502],[-74.663232421875,45.00390625000003],[-71.51752929687495,45.00756835937497],[-71.327294921875,45.29008789062496],[-70.86503906249999,45.27070312500001],[-70.296240234375,45.90610351562506],[-70.00771484375002,46.70893554687501],[-69.24287109374998,47.46298828124998],[-69.0501953125,47.426611328125034],[-68.93720703124998,47.21123046875002],[-68.23549804687502,47.34594726562503],[-67.806787109375,47.08281249999999],[-67.80224609374994,45.7275390625],[-67.43266601562496,45.603125],[-67.366943359375,45.17377929687498],[-67.12485351562498,45.16943359375],[-66.98701171874995,44.82768554687502],[-67.191259765625,44.67558593750002],[-67.83906249999998,44.576269531250034],[-68.056640625,44.38432617187502],[-68.15205078124998,44.50200195312499],[-68.45058593749997,44.50761718749999],[-68.53251953124996,44.25864257812498],[-68.81191406249994,44.33935546875],[-68.76269531249994,44.57075195312498],[-69.22607421875003,43.98647460937505],[-69.52075195312503,43.89736328125002],[-69.55668945312496,43.982763671875006],[-69.62392578125,43.88061523437497],[-69.65288085937493,43.99389648437506],[-69.808349609375,43.772314453125034],[-69.965234375,43.855078125],[-70.17880859374998,43.76635742187506],[-70.73310546875001,43.07001953125004],[-70.82905273437493,42.82534179687502],[-70.61293945312497,42.623242187499955],[-71.04619140624993,42.331103515625045],[-70.73828125,42.228857421875006],[-70.42666015625002,41.75727539062501],[-70.00141601562498,41.82617187500003],[-70.24106445312495,42.09121093750002],[-70.10893554687496,42.07832031249998],[-69.97788085937498,41.961279296875006],[-69.94863281249997,41.67714843750005],[-70.65712890625,41.53422851562496],[-70.70112304687498,41.71484375],[-71.1685546875,41.489404296874994],[-71.14873046874996,41.74570312499998],[-71.27109375,41.68125],[-71.39013671875003,41.79531250000005],[-71.52285156249997,41.378955078125045],[-72.92470703125002,41.28515625000003],[-73.98710937499999,40.751367187499994],[-73.87197265625,41.05517578124997],[-73.96992187499995,41.24970703125001],[-73.92719726562495,40.914257812499955],[-74.26420898437496,40.52861328124999],[-73.972265625,40.40034179687498],[-74.079931640625,39.78813476562496],[-74.06459960937497,39.99311523437498],[-74.79448242187499,39.00190429687501],[-74.95429687499995,38.949951171875],[-74.89702148437502,39.14545898437504],[-75.52421874999999,39.49018554687501],[-75.421875,39.78969726562502],[-75.07416992187495,39.98349609375006],[-75.40063476562503,39.83159179687502],[-75.58759765625001,39.64077148437505],[-75.3921875,39.09277343750006],[-75.08867187499999,38.777539062499955],[-75.18710937499995,38.59111328124999],[-75.03876953124993,38.426367187500006],[-75.934375,37.15190429687496],[-75.97504882812498,37.3984375],[-75.65927734374995,37.953955078125034],[-75.850830078125,37.971582031249994],[-75.85869140624999,38.36206054687503],[-76.05122070312495,38.27954101562503],[-76.2646484375,38.436425781249994],[-76.26416015625,38.599951171875006],[-76.016943359375,38.62509765624998],[-76.21298828124998,38.75830078125003],[-76.34116210937498,38.70966796874998],[-76.16816406249998,38.85273437499998],[-76.32958984375,38.95278320312505],[-76.13520507812493,39.082128906250006],[-76.23569335937498,39.19160156250001],[-76.153125,39.315039062500034],[-75.87597656249997,39.3759765625],[-76.003125,39.41083984375001],[-75.87294921874997,39.510888671874966],[-75.95893554687498,39.58505859374998],[-76.2763671875,39.32275390625],[-76.330810546875,39.40390625],[-76.42089843749997,39.225],[-76.57041015624995,39.26933593749996],[-76.42758789062498,39.12602539062499],[-76.55854492187493,39.065234375000045],[-76.39409179687502,38.368994140625034],[-76.67734374999998,38.611962890624966],[-76.66855468749998,38.5375],[-76.34116210937498,38.08701171875006],[-76.86811523437495,38.39028320312502],[-76.88974609375,38.292089843750006],[-77.00117187499995,38.44526367187504],[-77.23251953125,38.40771484375003],[-77.03037109374995,38.88925781249998],[-77.26040039062502,38.6],[-77.27324218749996,38.35175781249998],[-77.04677734375002,38.356689453125],[-76.26425781250003,37.89355468749997],[-76.34414062499997,37.675683593749994],[-76.49248046874999,37.682226562500006],[-77.11108398437497,38.165673828124994],[-76.54946289062494,37.66914062500001],[-76.30556640625,37.57148437500001],[-76.26347656249996,37.35703125],[-76.40097656249998,37.386132812499994],[-76.45390624999993,37.27353515625006],[-76.75771484375002,37.50541992187496],[-76.28330078125,37.05268554687501],[-76.40087890624997,36.991308593750034],[-76.63090820312493,37.22172851562499],[-77.25087890624994,37.329199218750034],[-76.671875,37.172949218750006],[-76.48784179687502,36.89702148437499],[-75.99941406249997,36.91264648437499],[-75.53417968749997,35.81909179687506],[-75.94648437499995,36.65908203125002],[-75.99277343749995,36.47377929687502],[-75.82006835937494,36.11284179687502],[-76.14785156250002,36.279296875],[-76.15,36.14575195312497],[-76.27060546874998,36.18989257812501],[-76.22739257812498,36.11601562499996],[-76.559375,36.015332031249955],[-76.733642578125,36.229150390624994],[-76.726220703125,35.957617187500034],[-76.06977539062501,35.970312500000034],[-76.08359374999998,35.69052734375006],[-75.85390625,35.96015625000001],[-75.75883789062499,35.84326171875],[-75.77392578124997,35.64697265624997],[-76.17382812499997,35.354150390624994],[-76.489501953125,35.397021484375045],[-76.57719726562502,35.53232421874998],[-76.74140624999998,35.431494140625034],[-77.03999023437495,35.527392578125045],[-76.51293945312497,35.270410156249994],[-76.77915039062503,34.990332031250034],[-77.07026367187501,35.154638671875034],[-76.97495117187503,35.025195312500045],[-76.74497070312498,34.94096679687502],[-76.45673828124998,34.989355468750034],[-76.36220703125,34.9365234375],[-76.43979492187498,34.84291992187502],[-77.29624023437503,34.602929687499994],[-77.41225585937497,34.730810546875034],[-77.37978515625,34.526611328125],[-77.750732421875,34.28496093749996],[-77.92783203125,33.93974609374999],[-77.95327148437494,34.16899414062496],[-78.01333007812502,33.91181640624998],[-78.40585937499995,33.91757812499998],[-78.84145507812497,33.72407226562501],[-79.19379882812498,33.24414062500003],[-79.22646484375,33.40488281249998],[-79.27602539062497,33.135400390624966],[-79.80498046874999,32.78740234374996],[-79.93310546874997,32.81005859375006],[-79.94072265625002,32.667138671874966],[-80.36284179687496,32.500732421875],[-80.6341796875,32.51171875000003],[-80.474267578125,32.42275390625002],[-80.579345703125,32.28730468750004],[-80.80253906249999,32.44804687500002],[-80.69423828124997,32.21572265625002],[-81.11328124999997,31.87861328125001],[-81.06611328124995,31.787988281250023],[-81.259375,31.538916015624977],[-81.17543945312494,31.531298828125017],[-81.38095703124998,31.353271484375],[-81.28847656249997,31.263916015625],[-81.441748046875,31.19970703124997],[-81.5162109375,30.801806640625017],[-81.24951171875003,29.793798828125006],[-80.52412109374995,28.48608398437503],[-80.5849609375,28.271582031250034],[-80.456884765625,27.90068359374996],[-80.61000976562494,28.177587890624977],[-80.60693359375003,28.522900390624983],[-80.693505859375,28.34497070312497],[-80.68847656250003,28.578515625000023],[-80.83818359374999,28.757666015625034],[-80.74863281250003,28.381005859375023],[-80.050048828125,26.807714843750063],[-80.1263671875,25.83349609375],[-80.48466796874999,25.229833984375034],[-81.11049804687494,25.138037109374977],[-81.13603515624999,25.309667968750034],[-80.94042968750003,25.264208984375017],[-81.11333007812499,25.367236328125045],[-81.36494140625001,25.83105468750003],[-81.715478515625,25.98315429687503],[-81.95893554687495,26.489941406249983],[-81.82866210937496,26.68706054687499],[-82.03959960937496,26.552050781250017],[-82.01328125,26.96157226562505],[-82.24287109374998,26.848876953125],[-82.44135742187501,27.059667968750034],[-82.71459960937497,27.499609375000063],[-82.40576171874994,27.862890624999977],[-82.67519531249994,27.963769531250023],[-82.61098632812502,27.77724609375005],[-82.74287109374995,27.709375],[-82.84350585937494,27.845996093750017],[-82.65146484375,28.8875],[-83.69438476562502,29.92597656250001],[-84.04423828124996,30.10380859374999],[-84.30966796874995,30.064746093750045],[-84.38281250000003,29.90737304687505],[-85.31894531249995,29.680224609375045],[-85.413818359375,29.76757812499997],[-85.413818359375,29.842480468749955],[-85.31489257812493,29.758105468750017],[-85.35361328125,29.875732421875],[-85.67578125,30.121923828125063],[-85.60351562500003,30.286767578124966],[-85.75581054687495,30.1669921875],[-86.454443359375,30.39912109375004],[-86.12382812499999,30.40581054687499],[-86.25737304687502,30.493017578124977],[-87.201171875,30.339257812499994],[-86.98579101562498,30.43085937500001],[-86.99755859375,30.5703125],[-87.17060546874998,30.538769531249983],[-87.28105468750002,30.339257812499994],[-87.47578124999998,30.294287109375006],[-87.44829101562499,30.394140625],[-87.62226562499998,30.264746093750006],[-88.00595703124998,30.230908203124955],[-87.79028320312503,30.291796875000017],[-88.011328125,30.694189453125006],[-88.13544921874998,30.366601562499994],[-88.90522460937495,30.415136718750006],[-89.32055664062503,30.3453125],[-89.58847656249998,30.165966796874955],[-90.12597656249997,30.369091796874955],[-90.33198242187493,30.277587890625057],[-90.41303710937501,30.140332031249983],[-90.17534179687499,30.02910156249996],[-89.73745117187497,30.171972656250034],[-89.66503906249994,30.117041015625034],[-89.81518554687497,30.007275390624955],[-89.631689453125,29.90380859375003],[-89.400732421875,30.04604492187505],[-89.35444335937501,29.82021484375005],[-89.72089843749995,29.619287109374966],[-89.01572265625,29.202880859375057],[-89.15551757812497,29.01660156250003],[-89.23608398437494,29.081103515625017],[-89.37612304687497,28.981347656250023],[-89.44316406249996,29.194140625000045],[-90.15908203124997,29.537158203125017],[-90.05278320312499,29.336816406249966],[-90.21279296875,29.104931640624983],[-90.37919921874996,29.29511718750001],[-90.75102539062496,29.13085937500003],[-91.29013671875,29.288964843749994],[-91.15078124999994,29.317919921875045],[-91.24882812499993,29.56420898437503],[-91.51420898437499,29.55537109375001],[-91.8931640625,29.836035156249977],[-92.135498046875,29.699462890625057],[-92.08403320312499,29.59282226562499],[-92.26083984374995,29.55683593750004],[-93.17568359375,29.778955078124994],[-93.82646484374999,29.725146484375045],[-93.84145507812502,29.97973632812503],[-93.89047851562495,29.689355468750023],[-94.759619140625,29.384277343750057],[-94.52626953125,29.547949218750006],[-94.77827148437498,29.54785156249997],[-94.74194335937497,29.75],[-95.0228515625,29.70234375000001],[-94.88828125000003,29.37055664062501],[-95.27348632812499,28.96386718750003],[-96.23452148437502,28.488964843749983],[-96.01103515624996,28.631933593749977],[-96.44873046874997,28.594482421875],[-96.64003906249994,28.708789062500017],[-96.42109374999993,28.457324218750045],[-96.67636718749998,28.34130859375003],[-96.77353515624998,28.421630859375057],[-96.839501953125,28.194384765625017],[-97.156494140625,28.144335937500045],[-97.141259765625,28.060742187499983],[-97.034326171875,28.093847656250063],[-97.07309570312498,27.98608398437503],[-97.43149414062498,27.83720703124999],[-97.28872070312494,27.670605468749983],[-97.43911132812502,27.328271484374966],[-97.76845703124997,27.45751953125],[-97.69238281250003,27.287158203125017],[-97.48510742187497,27.237402343750006],[-97.55468749999994,26.96733398437496],[-97.43505859375,26.48583984375003],[-97.14624023437494,25.961474609375045],[-97.37563476562497,25.871826171875],[-99.10776367187498,26.446923828124994],[-99.45654296874999,27.05668945312496],[-99.50532226562497,27.54833984375003],[-100.29604492187495,28.32768554687499],[-100.75458984375001,29.182519531249994],[-101.44038085937503,29.77685546875],[-102.26894531249998,29.871191406250034],[-102.61494140624994,29.75234375],[-102.8919921875,29.216406250000034],[-103.16831054687498,28.998193359374994],[-104.110595703125,29.386132812499994],[-104.50400390624995,29.677685546874955],[-104.97880859374996,30.645947265624955],[-106.14804687499995,31.450927734375],[-106.44541015624996,31.768408203125006],[-108.21181640625002,31.779345703125017],[-108.21445312499993,31.329443359375034],[-111.0419921875,31.32421875000003],[-114.83593749999994,32.50830078125003],[-114.72475585937495,32.71533203125003],[-117.12827148437495,32.533349609374994],[-117.46743164062495,33.295507812500006],[-118.08051757812497,33.72216796874997],[-118.41044921874996,33.74394531249996],[-118.506201171875,34.01738281249999],[-119.14375,34.11201171874998],[-119.60605468749999,34.41801757812499],[-120.48120117187503,34.47163085937498],[-120.64467773437502,34.57998046875002],[-120.65908203124994,35.122412109375034],[-120.85737304687501,35.209667968749955],[-120.899609375,35.42509765624999],[-121.28383789062494,35.67631835937499],[-121.87739257812498,36.33105468749997],[-121.80742187499995,36.851220703124994],[-122.394921875,37.20751953125003],[-122.49921875000001,37.542626953124994],[-122.44560546875002,37.797998046874966],[-122.07050781249998,37.47827148437503],[-122.38544921875001,37.960595703124966],[-122.31425781249999,38.00732421874997],[-121.52534179687503,38.05590820312503],[-122.39335937499995,38.14482421875002],[-122.52133789062499,37.82641601562497],[-122.93198242187498,38.05546875000002],[-122.998779296875,37.98862304687498],[-122.90815429687501,38.19658203124999],[-123.701123046875,38.90727539062502],[-123.83291015624994,39.775488281250034],[-124.35654296875003,40.37109374999997],[-124.07192382812497,41.45952148437502],[-124.53964843750003,42.812890624999966],[-124.14873046874997,43.691748046875034],[-123.92934570312495,45.57695312499996],[-123.989306640625,46.21938476562502],[-123.22060546874998,46.153613281250045],[-123.46484375,46.27109374999998],[-124.07275390624996,46.279443359374994],[-124.04433593750002,46.605078125],[-123.946142578125,46.43256835937501],[-123.88916015625003,46.660009765625006],[-124.11254882812497,46.862695312499994],[-123.84287109375002,46.963183593750045],[-124.11171875,47.03520507812496],[-124.1392578125,46.95468749999998],[-124.376025390625,47.658642578124955],[-124.66308593749996,47.97412109375003],[-124.7099609375,48.38037109375],[-123.97578125,48.16845703125],[-122.97387695312499,48.07329101562496],[-122.77861328125,48.13759765625002],[-122.65664062500002,47.88115234374999],[-122.77841796874996,47.738427734374966],[-122.82138671875,47.79316406250001],[-123.1390625,47.386083984375034],[-122.92216796874993,47.40766601562498],[-123.066796875,47.39965820312506],[-123.04863281249995,47.479345703125034],[-122.53281250000002,47.919726562500045],[-122.67548828124995,47.612353515625045],[-122.57788085937496,47.29316406250001],[-122.76777343750001,47.21835937500006],[-122.82846679687503,47.336572265624994],[-123.02758789062501,47.13891601562503],[-122.70195312500002,47.11088867187502],[-122.35380859374996,47.37158203125],[-122.40180664062497,47.78427734374998],[-122.24199218750002,48.01074218750003],[-122.5169921875,48.15966796874997],[-122.40854492187502,48.29389648437498],[-122.66899414062496,48.465234374999966],[-122.49677734374995,48.50556640625001],[-122.51274414062502,48.66943359375],[-122.56201171875001,48.777978515624994],[-122.68593749999995,48.794287109375034],[-122.72246093750002,48.85302734375003],[-122.78876953125003,48.993017578125034],[-121.40722656249994,48.993017578125034],[-119.70170898437495,48.993017578125034],[-119.27534179687494,48.99306640625005],[-118.84892578124993,48.99306640625005],[-117.99619140625002,48.99306640625005],[-116.71704101562501,48.99306640625005],[-110.74765625,48.99306640625005],[-104.77832031249997,48.993115234374955],[-98.80898437499995,48.99316406249997],[-97.52983398437493,48.99316406249997],[-96.67705078124993,48.99316406249997],[-96.25068359374993,48.99316406249997],[-95.39790039062493,48.99316406249997],[-95.16206054687493,48.991748046875045],[-95.15527343749997,49.36967773437502],[-94.85434570312495,49.304589843749994],[-94.86040039062493,49.258593750000045],[-94.80346679687497,49.0029296875]]],[[[-176.28671874999998,51.79199218750006],[-176.34965820312502,51.733300781249994],[-176.41372070312502,51.840576171875],[-176.28671874999998,51.79199218750006]]],[[[-177.87905273437502,51.64970703125002],[-178.05888671875,51.67260742187497],[-177.98637695312493,51.76425781249998],[-178.16826171874996,51.90302734375001],[-177.644482421875,51.826269531250006],[-177.87905273437502,51.64970703125002]]],[[[-177.14819335937497,51.71674804687498],[-177.67021484375002,51.701074218749994],[-177.11005859375,51.92875976562502],[-177.14819335937497,51.71674804687498]]],[[[-176.593310546875,51.86669921875],[-176.45234374999995,51.735693359375034],[-176.96162109374998,51.60366210937505],[-176.69833984374998,51.986035156249955],[-176.593310546875,51.86669921875]]],[[[179.72773437500015,51.905419921874966],[179.50390625000003,51.97958984374998],[179.6271484375001,52.03041992187502],[179.72773437500015,51.905419921874966]]],[[[177.4154296875,51.88281249999997],[177.25029296875013,51.902929687500006],[177.6696289062501,52.10302734375],[177.4154296875,51.88281249999997]]],[[[-173.5533203125,52.13627929687502],[-173.02290039062504,52.07915039062502],[-173.83579101562498,52.048193359375006],[-173.99248046874993,52.12333984374996],[-173.5533203125,52.13627929687502]]],[[[-172.464794921875,52.27226562500002],[-172.61982421874998,52.27285156250005],[-172.47041015625,52.38803710937506],[-172.31362304687497,52.32958984375006],[-172.464794921875,52.27226562500002]]],[[[-174.67739257812502,52.035009765625006],[-175.29555664062502,52.022167968749955],[-174.30615234375,52.216162109375034],[-174.43554687499997,52.317236328125034],[-174.168896484375,52.42016601562503],[-174.04560546875,52.36723632812499],[-174.12065429687493,52.13520507812498],[-174.67739257812502,52.035009765625006]]],[[[173.72275390625018,52.35957031250004],[173.40234375000009,52.40478515625],[173.77607421875004,52.49511718750003],[173.72275390625018,52.35957031250004]]],[[[172.81181640625002,53.01298828125002],[173.43603515625003,52.85205078125],[172.93515625000012,52.752099609374966],[172.49482421875004,52.93789062499999],[172.81181640625002,53.01298828125002]]],[[[-167.96435546875003,53.345117187499994],[-169.088916015625,52.83203125],[-168.68984375000002,53.227246093749955],[-168.38041992187496,53.28344726562506],[-168.28769531249998,53.500146484374966],[-167.82807617187495,53.50795898437505],[-167.96435546875003,53.345117187499994]]],[[[-166.61533203124998,53.90092773437499],[-166.37231445312494,53.99897460937498],[-166.230859375,53.93261718750006],[-166.54560546875,53.726464843749966],[-166.354541015625,53.67353515625004],[-166.85097656249997,53.45288085937503],[-167.78085937500003,53.30024414062501],[-167.13608398437503,53.526464843750006],[-167.01572265625003,53.69838867187502],[-166.80898437500002,53.64614257812505],[-166.741259765625,53.71293945312496],[-167.10561523437497,53.813378906249994],[-167.03808593749997,53.9421875],[-166.67329101562498,54.00595703124998],[-166.61533203124998,53.90092773437499]]],[[[-165.841552734375,54.070654296875006],[-166.05664062500003,54.054345703124994],[-166.08774414062498,54.16914062500001],[-165.89287109375,54.20698242187498],[-165.69287109375,54.09990234375002],[-165.841552734375,54.070654296875006]]],[[[-165.56113281249998,54.13671874999997],[-165.55063476562498,54.28452148437498],[-165.40786132812502,54.19682617187496],[-165.56113281249998,54.13671874999997]]],[[[-162.29814453124993,54.847021484375006],[-162.43388671875,54.931542968749994],[-162.26459960937504,54.983496093750006],[-162.29814453124993,54.847021484375006]]],[[[-163.476025390625,54.98071289062497],[-163.37895507812496,54.81552734374998],[-163.083251953125,54.66899414062496],[-163.35810546874995,54.73569335937506],[-164.82343749999998,54.41909179687505],[-164.887646484375,54.60781250000002],[-164.47861328124998,54.906835937500006],[-163.80712890624997,55.04907226562503],[-163.476025390625,54.98071289062497]]],[[[-159.51513671875,55.15185546875003],[-159.617724609375,55.05732421875004],[-159.54506835937497,55.22597656250002],[-159.51513671875,55.15185546875003]]],[[[-131.33974609375002,55.079833984375],[-131.32954101562498,54.887744140625045],[-131.592236328125,55.02568359374999],[-131.5654296875,55.26411132812498],[-131.33974609375002,55.079833984375]]],[[[-159.87299804687495,55.128759765625034],[-160.22705078124997,54.92270507812506],[-160.17207031249995,55.123046875],[-159.88735351562497,55.27299804687502],[-159.87299804687495,55.128759765625034]]],[[[-132.86225585937504,54.894433593749966],[-132.61723632812493,54.892431640625006],[-132.70581054687497,54.684179687500034],[-133.42905273437498,55.30380859374998],[-133.097412109375,55.213720703125006],[-132.86225585937504,54.894433593749966]]],[[[-160.329296875,55.337695312500045],[-160.34331054687493,55.25878906250006],[-160.51748046875,55.33383789062506],[-160.329296875,55.337695312500045]]],[[[-160.68491210937498,55.314794921875006],[-160.552783203125,55.38076171875002],[-160.48754882812503,55.18486328124999],[-160.79506835937497,55.14521484375001],[-160.72392578124993,55.404638671875006],[-160.68491210937498,55.314794921875006]]],[[[-133.30507812500002,55.54375],[-133.6501953125,55.26928710937506],[-133.73710937500002,55.49692382812498],[-133.30507812500002,55.54375]]],[[[-155.56601562500003,55.82119140625005],[-155.73735351562493,55.82978515625001],[-155.59394531250004,55.92431640625],[-155.56601562500003,55.82119140625005]]],[[[-130.97915039062502,55.489160156249994],[-131.187890625,55.206298828125],[-131.44755859374996,55.40878906250006],[-131.7625,55.16582031250002],[-131.84609374999997,55.41625976562497],[-131.62495117187504,55.831689453124966],[-131.26923828125004,55.95537109375002],[-130.997802734375,55.727636718750006],[-130.97915039062502,55.489160156249994]]],[[[-133.56611328125,56.33920898437498],[-133.202978515625,56.31982421875003],[-133.096630859375,56.09003906250001],[-132.59760742187504,55.89501953125],[-132.17270507812498,55.48061523437502],[-132.51127929687493,55.59394531250001],[-132.63129882812495,55.47319335937502],[-132.41787109375002,55.48291015625006],[-132.20668945312497,55.22441406249996],[-131.97641601562498,55.208593750000034],[-132.06474609375002,54.713134765625],[-133.11855468750002,55.32763671875003],[-132.95888671875002,55.39555664062502],[-133.0333984375,55.589697265625034],[-133.68017578124994,55.78515625],[-133.24150390624993,55.920800781249994],[-133.371240234375,56.035888671875],[-133.74252929687498,55.96484375],[-133.530859375,56.145654296874966],[-133.56611328125,56.33920898437498]]],[[[-132.77988281249998,56.24726562499998],[-133.03500976562498,56.34091796875006],[-132.90205078124998,56.45375976562505],[-132.62910156249995,56.411914062500045],[-132.77988281249998,56.24726562499998]]],[[[-132.11235351562493,56.109375],[-132.13295898437497,55.94326171875005],[-132.28730468749995,55.92939453124998],[-132.65991210937503,56.07817382812499],[-132.379833984375,56.49877929687497],[-132.06689453125,56.24423828124998],[-132.11235351562493,56.109375]]],[[[-154.208642578125,56.51489257812497],[-154.32221679687504,56.570605468750045],[-154.11040039062496,56.602929687499966],[-154.208642578125,56.51489257812497]]],[[[-169.755224609375,56.63505859375002],[-169.47431640624998,56.59404296875002],[-169.6326171875,56.545703125000045],[-169.755224609375,56.63505859375002]]],[[[-132.746875,56.525683593750045],[-132.94804687500002,56.56723632812498],[-132.842529296875,56.79477539062506],[-132.56796875000003,56.57583007812505],[-132.746875,56.525683593750045]]],[[[-133.98959960937503,56.84497070312497],[-133.73837890625,56.65043945312496],[-133.94970703125,56.12773437499996],[-134.18959960937502,56.07695312500002],[-134.084375,56.456347656250045],[-134.37368164062502,56.838671875000045],[-134.14326171874998,56.93232421875001],[-133.98959960937503,56.84497070312497]]],[[[-133.36621093750006,57.003515625000034],[-132.99624023437497,56.93041992187497],[-132.95917968749998,56.67705078124996],[-133.03491210937494,56.62075195312505],[-133.32895507812498,56.83007812499997],[-133.158154296875,56.495166015625045],[-133.4841796875,56.45175781249998],[-133.979443359375,57.009570312500045],[-133.36621093750006,57.003515625000034]]],[[[-153.007080078125,57.12485351562498],[-153.37460937499998,57.05190429687505],[-153.285205078125,57.18505859375],[-152.90839843750004,57.152441406250006],[-153.007080078125,57.12485351562498]]],[[[-134.96977539062496,57.351416015625034],[-134.62070312499998,56.71831054687502],[-134.68188476562503,56.216162109375034],[-134.98056640625003,56.518945312499994],[-134.88344726562497,56.679052734375034],[-135.33061523437505,56.821875],[-135.19960937499997,57.02734375],[-135.45493164062503,57.24941406250005],[-135.81230468750002,57.00952148437503],[-135.82275390625,57.280419921874966],[-135.448681640625,57.534375],[-134.96977539062496,57.351416015625034]]],[[[-152.89804687499998,57.82392578125004],[-152.42875976562493,57.82568359375003],[-152.48261718749998,57.70332031249998],[-152.21621093749997,57.577001953125006],[-152.41220703125003,57.454785156249955],[-152.94077148437498,57.49809570312499],[-152.67905273437503,57.345117187499994],[-153.274365234375,57.22636718749996],[-153.732568359375,57.052343750000034],[-153.643310546875,56.960742187500045],[-154.02734375,56.77797851562502],[-153.793212890625,56.98950195312503],[-154.24375,57.143017578124955],[-154.33896484374998,56.9208984375],[-154.67319335937498,57.44609375],[-154.11616210937498,57.651220703125006],[-153.6876953125,57.30512695312504],[-153.841552734375,57.86284179687496],[-153.48793945312497,57.73095703125],[-153.21748046875004,57.79575195312506],[-153.16044921875,57.97197265624999],[-152.85039062499993,57.896777343750045],[-152.89804687499998,57.82392578125004]]],[[[-135.73037109375002,58.244238281250034],[-135.61323242187507,57.99184570312505],[-135.346630859375,58.12412109374998],[-134.9546875,58.01533203125004],[-134.97065429687495,57.817236328125006],[-135.33847656250003,57.768652343750034],[-134.97885742187503,57.724365234375],[-134.93149414062498,57.48115234375001],[-135.564208984375,57.66640625],[-135.691943359375,57.41992187500006],[-135.91079101562502,57.44658203124999],[-136.568603515625,57.97216796875003],[-136.32197265625,58.21889648437502],[-136.14375,58.098486328125006],[-136.09438476562502,58.198144531249966],[-135.73037109375002,58.244238281250034]]],[[[-134.68027343749998,58.16166992187499],[-134.24008789062498,58.143994140624955],[-133.82275390624997,57.62866210937503],[-134.29233398437498,58.044726562500074],[-133.91113281250003,57.3525390625],[-134.51601562499997,57.042578125],[-134.48676757812495,57.48203125],[-134.92348632812497,58.354638671874966],[-134.68027343749998,58.16166992187499]]],[[[-152.416943359375,58.360205078125034],[-151.974365234375,58.30986328124999],[-152.068896484375,58.17792968750001],[-152.26835937499993,58.25170898437506],[-152.30922851562502,58.133886718750034],[-152.5982421875,58.16259765625],[-152.92841796875004,57.99370117187499],[-153.38134765625003,58.08720703125002],[-152.976123046875,58.29702148437505],[-152.771875,58.278564453125],[-152.84111328125002,58.41640625000002],[-152.416943359375,58.360205078125034]]],[[[-152.486083984375,58.485009765624966],[-152.63662109375002,58.54169921874998],[-152.3955078125,58.619384765625],[-152.486083984375,58.485009765624966]]],[[[-160.918994140625,58.57709960937498],[-161.13149414062502,58.668212890625],[-160.71513671875005,58.79521484375002],[-160.918994140625,58.57709960937498]]],[[[-148.02177734375,60.06533203125005],[-148.271875,60.05327148437499],[-148.07958984375003,60.151660156250045],[-148.02177734375,60.06533203125005]]],[[[-147.735888671875,59.81323242187503],[-147.76806640625,59.94375],[-147.180859375,60.358251953125034],[-147.01987304687498,60.33222656249998],[-147.735888671875,59.81323242187503]]],[[[-166.13544921875,60.38354492187503],[-165.72968750000004,60.31420898437503],[-165.591796875,59.913134765625045],[-166.14873046874996,59.764111328124955],[-167.13886718749998,60.00854492187503],[-167.43642578125002,60.20664062500006],[-166.836328125,60.21699218750004],[-166.47568359374998,60.382763671874955],[-166.13544921875,60.38354492187503]]],[[[-146.3939453125,60.44965820312501],[-146.10224609374998,60.41118164062499],[-146.61831054687497,60.27368164062503],[-146.70253906249997,60.40854492187498],[-146.3939453125,60.44965820312501]]],[[[-147.658251953125,60.45048828124999],[-147.787841796875,60.17792968749998],[-147.89145507812498,60.299414062500034],[-147.658251953125,60.45048828124999]]],[[[-172.74223632812496,60.45737304687498],[-172.23208007812494,60.299121093750074],[-172.63574218750003,60.328857421875],[-173.04765625000002,60.56831054687501],[-172.74223632812496,60.45737304687498]]],[[[-171.46303710937494,63.640039062499994],[-171.03486328125,63.58549804687499],[-170.29936523437502,63.68061523437501],[-169.55454101562498,63.373486328124955],[-168.71601562500004,63.310595703125045],[-168.76132812500003,63.21376953125002],[-169.364697265625,63.17114257812506],[-169.67636718750003,62.95610351562502],[-169.81860351562494,63.122363281250045],[-170.84838867187494,63.44438476562502],[-171.63183593749997,63.351220703124966],[-171.74638671874993,63.703076171874955],[-171.46303710937494,63.640039062499994]]],[[[-141.00214843750004,68.77416992187506],[-141.00214843750004,67.89755859374998],[-141.00214843750004,66.43652343750006],[-141.00214843750004,65.55991210937498],[-141.00214843750004,64.09887695312506],[-141.00214843750004,63.22226562499998],[-141.00214843750004,61.761279296875045],[-141.00214843750004,60.884667968749994],[-141.00214843750004,60.30024414062504],[-140.76274414062505,60.259130859375006],[-140.525439453125,60.218359375000034],[-140.45283203125004,60.29970703125002],[-139.97329101562497,60.183154296875074],[-139.67631835937505,60.32832031249998],[-139.23476562499997,60.339746093749994],[-139.07924804687497,60.34370117187501],[-139.07924804687497,60.279443359374966],[-139.136962890625,60.17270507812498],[-139.18515624999998,60.083593750000034],[-138.86875,59.94575195312501],[-138.317626953125,59.611132812500074],[-137.59331054687493,59.22626953124998],[-137.52089843750002,58.91538085937498],[-137.43857421875003,58.903125],[-137.2775390625,58.988183593749994],[-137.126220703125,59.04096679687498],[-136.81328125000002,59.150048828124994],[-136.57875976562502,59.15224609375002],[-136.46635742187493,59.459082031250006],[-136.27797851562502,59.48032226562506],[-136.321826171875,59.604833984375034],[-135.70258789062504,59.72875976562506],[-135.36787109374998,59.743310546874994],[-135.051025390625,59.57866210937502],[-134.94375,59.28828125000001],[-134.67724609374997,59.19926757812499],[-134.39306640625,59.009179687499994],[-134.32963867187505,58.93969726562506],[-134.21850585937503,58.849902343750045],[-133.54638671874997,58.50346679687499],[-133.27529296875,58.22285156250004],[-133.00141601562495,57.948974609375],[-132.55048828125,57.499902343749994],[-132.44248046874998,57.40673828125003],[-132.30166015624997,57.27631835937501],[-132.232177734375,57.19853515624999],[-132.27939453124998,57.14536132812498],[-132.33798828124998,57.07944335937506],[-132.15703125,57.048193359375006],[-132.03154296875,57.02656250000004],[-132.062890625,56.95336914062503],[-132.104296875,56.856787109375006],[-131.86616210937495,56.792822265625006],[-131.82426757812496,56.589990234374994],[-131.471875,56.55673828125006],[-130.649072265625,56.26367187500003],[-130.47709960937496,56.230566406250034],[-130.413134765625,56.12250976562498],[-130.09785156249995,56.10927734375002],[-130.01406249999997,55.950537109375006],[-130.2140625,55.02587890625003],[-130.57534179687497,54.769677734374966],[-130.849609375,54.80761718750006],[-131.04785156249997,55.157666015624955],[-130.74819335937502,55.31801757812502],[-131.127685546875,55.96015625000001],[-131.032763671875,56.08808593749998],[-131.78417968749997,55.876562500000034],[-131.98339843749994,55.535009765625006],[-132.15541992187502,55.59956054687501],[-132.20751953124997,55.75341796875],[-131.84384765625003,56.16010742187498],[-131.55136718749998,56.206787109375],[-131.88789062500004,56.24165039062498],[-132.18203125000002,56.42065429687506],[-132.82460937500002,57.05581054687505],[-133.465869140625,57.17216796875002],[-133.64873046874993,57.64228515624998],[-133.11704101562498,57.56621093750002],[-133.535205078125,57.83295898437501],[-133.1943359375,57.87768554687506],[-133.559375,57.924462890624994],[-133.72231445312502,57.84423828125],[-134.03110351562498,58.072167968749966],[-133.87675781249996,58.51816406249998],[-134.20883789062503,58.232958984375045],[-134.77612304687506,58.45385742187503],[-135.36367187500002,59.41943359375],[-135.50234375000002,59.202294921874994],[-135.090234375,58.245849609375],[-135.57177734374994,58.41206054687504],[-135.89755859374998,58.40019531250002],[-136.04311523437497,58.82163085937498],[-135.82636718750004,58.89794921874997],[-136.0166015625,58.87397460937498],[-136.150048828125,59.04809570312503],[-136.22583007812497,58.765478515625006],[-136.98901367187503,59.03447265624999],[-137.05903320312498,58.87373046875001],[-136.613916015625,58.809277343749955],[-136.48374023437503,58.61767578125],[-136.224609375,58.602246093749955],[-136.06147460937495,58.45273437500006],[-136.607421875,58.24399414062498],[-137.54399414062502,58.58120117187502],[-138.51489257812503,59.16591796875005],[-139.77329101562498,59.52729492187504],[-139.51303710937498,59.698095703125006],[-139.5123046875,59.95356445312501],[-139.28671874999998,59.610937500000034],[-139.22080078125003,59.819873046875045],[-138.9880859375,59.83500976562502],[-139.43144531249996,60.012255859375074],[-140.41982421874997,59.71074218750002],[-141.40830078125,59.90278320312498],[-141.408740234375,60.11767578125006],[-141.67016601562497,59.969873046874966],[-142.94565429687503,60.09697265625002],[-144.14721679687494,60.01640625000002],[-144.185498046875,60.150732421875034],[-144.901318359375,60.335156249999955],[-144.69111328125,60.66909179687502],[-145.248291015625,60.38012695312506],[-145.898876953125,60.47817382812505],[-145.67490234374998,60.65112304687503],[-146.57045898437497,60.72915039062502],[-146.39199218749997,60.810839843750045],[-146.63842773437497,60.89731445312498],[-146.59912109374994,61.05351562500002],[-146.284912109375,61.11264648437498],[-147.89111328125,60.889892578125],[-148.00512695312494,60.96855468750002],[-147.75185546874997,61.218945312499955],[-148.34189453125,61.060400390625006],[-148.34443359374998,60.853564453125045],[-148.55615234374994,60.82700195312506],[-148.25673828124997,60.67529296874997],[-148.64013671875,60.48945312500004],[-148.11918945312502,60.57514648437498],[-147.96411132812494,60.48486328124997],[-148.430712890625,59.98911132812498],[-149.2666015625,59.99829101562497],[-149.395263671875,60.10576171875002],[-149.59804687500002,59.77045898437501],[-149.7138671875,59.91958007812502],[-149.80126953124994,59.737939453124966],[-150.00532226562507,59.78442382812503],[-150.19804687499996,59.56655273437505],[-150.60737304687504,59.56337890625002],[-150.934521484375,59.249121093750034],[-151.18276367187502,59.30078124999997],[-151.73818359375002,59.18852539062502],[-151.94951171875,59.26508789062498],[-151.88461914062503,59.386328125],[-151.39960937499995,59.51630859375001],[-151.04648437499998,59.771826171875034],[-151.45009765624997,59.65039062499997],[-151.85322265625,59.78208007812498],[-151.39599609375006,60.27446289062502],[-151.35644531249997,60.72294921874999],[-150.44125976562503,61.02358398437505],[-149.07509765624997,60.87641601562498],[-150.05327148437496,61.17109374999998],[-149.433544921875,61.50078125000002],[-149.97568359374998,61.27934570312502],[-150.61225585937495,61.301123046875006],[-151.59350585937494,60.979638671874966],[-152.54091796874997,60.265429687500045],[-153.025,60.29565429687497],[-152.660107421875,59.99721679687502],[-153.21123046875002,59.84272460937498],[-153.09360351562503,59.70913085937505],[-153.65253906250004,59.64702148437499],[-154.17832031250003,59.155566406250074],[-153.41826171875,58.9599609375],[-153.43759765625003,58.754833984374955],[-154.289013671875,58.30434570312502],[-154.247021484375,58.15942382812497],[-155.006884765625,58.01606445312501],[-155.77797851562497,57.56821289062498],[-156.43588867187498,57.359960937500006],[-156.62900390624998,57.00996093750001],[-158.41440429687498,56.435839843750045],[-158.5521484375,56.31269531249998],[-158.27563476562497,56.19624023437498],[-158.5046875,56.062109375],[-158.59116210937503,56.18452148437498],[-158.78984375000002,55.98691406250006],[-159.52324218749993,55.81000976562498],[-159.65966796875003,55.625927734374955],[-159.77138671874997,55.84111328125002],[-160.49931640625002,55.53730468750004],[-161.38193359374998,55.371289062499955],[-161.44379882812495,55.513281250000034],[-161.202099609375,55.54355468750006],[-161.51694335937503,55.61840820312503],[-162.073974609375,55.13930664062505],[-162.38637695312497,55.05234375],[-162.63037109375003,55.24667968749998],[-162.67436523437505,54.99658203125],[-162.86503906249996,54.954541015624955],[-163.11962890624997,55.06469726562503],[-163.131103515625,54.916552734375045],[-163.33530273437503,54.83916015624999],[-163.27880859374997,55.12182617187503],[-162.906591796875,55.19555664062503],[-161.69731445312502,55.9072265625],[-161.215625,56.02143554687498],[-160.8986328125,55.99365234375],[-161.00537109375,55.88715820312498],[-160.80283203125003,55.754443359375045],[-160.70634765625002,55.870458984375034],[-160.29169921875,55.80507812500005],[-160.53906250000006,56.00629882812501],[-160.30205078125,56.31411132812502],[-158.91801757812502,56.882177734375006],[-158.675146484375,56.79487304687498],[-158.66079101562502,57.03940429687498],[-158.32094726562497,57.29790039062499],[-157.84575195312496,57.52807617187497],[-157.4619140625,57.506201171875034],[-157.697216796875,57.679443359375],[-157.610888671875,58.050830078125074],[-157.19370117187498,58.19418945312506],[-157.48837890624998,58.25371093750002],[-157.52363281249998,58.421337890624955],[-156.97465820312496,58.736328125],[-156.80888671875005,59.13427734375],[-157.14204101562504,58.87763671875001],[-158.19091796875003,58.6142578125],[-158.50317382812494,58.85034179687497],[-158.42563476562498,58.99931640625002],[-158.080517578125,58.97744140625002],[-158.422802734375,59.08984375],[-158.67827148437502,58.92939453124998],[-158.80947265625002,58.973876953125],[-158.78862304687493,58.440966796875045],[-158.95068359375,58.404541015625],[-159.67026367187498,58.9111328125],[-159.92021484375,58.819873046875074],[-160.36313476562498,59.05117187500002],[-161.246826171875,58.799462890624994],[-161.36132812499994,58.66953124999998],[-162.144921875,58.64423828124998],[-161.724365234375,58.794287109375006],[-161.64438476562498,59.109667968750045],[-161.9810546875,59.14614257812502],[-161.82871093749998,59.588623046875],[-162.421337890625,60.28398437500002],[-161.96201171875003,60.695361328125045],[-162.68496093749997,60.268945312499966],[-162.57075195312495,59.98974609375],[-163.68037109374998,59.80151367187503],[-164.14282226562497,59.89677734374999],[-165.02651367187497,60.500634765624994],[-165.35380859375002,60.54121093750001],[-164.80517578125,60.89204101562498],[-164.31850585937497,60.77128906249999],[-164.37236328125002,60.59184570312502],[-163.999560546875,60.76606445312498],[-163.72998046874997,60.589990234374994],[-163.420947265625,60.757421875],[-163.90654296874996,60.85380859375002],[-163.58691406249994,60.902978515624994],[-163.74902343750003,60.9697265625],[-163.99462890624997,60.86469726562501],[-165.11484375,60.93281250000004],[-164.86899414062503,61.11176757812498],[-165.27978515624994,61.169628906249955],[-165.27363281250004,61.27485351562498],[-165.56586914062498,61.10234375000002],[-165.86396484375004,61.33569335937503],[-165.84531249999998,61.536230468750034],[-166.152734375,61.545947265625074],[-166.16811523437502,61.65083007812501],[-165.80893554687503,61.69609375000002],[-166.07880859375,61.803125],[-165.61279296875003,61.86928710937502],[-165.707275390625,62.10043945312506],[-165.19453125,62.47353515625002],[-164.75786132812493,62.496728515624966],[-164.589453125,62.709375],[-164.79267578125,62.623193359374966],[-164.79965820312503,62.918066406250006],[-164.384228515625,63.03046874999998],[-164.40903320312503,63.21503906250001],[-163.94287109375,63.247216796874994],[-163.61630859374998,63.125146484374994],[-163.73784179687496,63.016406250000045],[-163.504345703125,63.105859374999966],[-163.28784179687494,63.046435546875045],[-162.621484375,63.26582031249998],[-162.28281250000003,63.529199218749994],[-161.97397460937498,63.45292968749999],[-161.09970703125003,63.557910156250045],[-160.778564453125,63.818945312500034],[-160.987548828125,64.25126953125002],[-161.49072265625003,64.43378906249998],[-160.93193359374996,64.5791015625],[-160.855908203125,64.755615234375],[-161.13017578125005,64.92543945312505],[-161.759375,64.816259765625],[-162.80703124999997,64.37421875000001],[-163.20390625,64.65200195312502],[-163.14433593750002,64.423828125],[-163.71308593749998,64.588232421875],[-164.978759765625,64.45366210937502],[-166.1427734375,64.58276367187503],[-166.48139648437498,64.72807617187507],[-166.415234375,64.926513671875],[-166.92841796875,65.15708007812498],[-166.15703125,65.28583984375001],[-167.40400390625,65.42211914062497],[-168.08837890624997,65.65776367187502],[-166.39873046875002,66.14443359375005],[-165.62993164062496,66.131201171875],[-165.77617187500002,66.31904296875001],[-164.46049804687502,66.58842773437499],[-163.63823242187502,66.57465820312504],[-163.89394531249997,66.57587890625001],[-164.03374023437493,66.21552734374995],[-163.69536132812502,66.08383789062503],[-161.93369140625003,66.04287109374997],[-161.45541992187503,66.28139648437497],[-161.03427734375003,66.18881835937503],[-161.12031249999995,66.334326171875],[-161.91689453124997,66.41181640624998],[-162.54365234375004,66.80512695312501],[-162.36162109375,66.94731445312502],[-161.591015625,66.45952148437502],[-160.23168945312503,66.420263671875],[-160.360888671875,66.6125],[-160.864013671875,66.67084960937501],[-161.39804687499998,66.55185546875],[-161.85668945312497,66.70034179687497],[-161.719921875,67.02055664062502],[-163.5318359375,67.10258789062502],[-164.1251953125,67.60673828125007],[-166.786279296875,68.35961914062497],[-166.38051757812502,68.425146484375],[-166.20908203125,68.88535156250003],[-165.04394531249994,68.882470703125],[-163.867919921875,69.03666992187505],[-161.88095703125003,70.33173828125001],[-162.073876953125,70.16196289062498],[-160.9962890625,70.30458984375],[-160.11713867187495,70.59121093750002],[-159.86567382812498,70.27885742187499],[-159.81499023437496,70.49707031250003],[-159.38676757812493,70.52451171875003],[-160.081591796875,70.63486328125003],[-159.680908203125,70.786767578125],[-159.31450195312496,70.87851562500003],[-159.251171875,70.7484375],[-157.909375,70.860107421875],[-156.47021484374994,71.40766601562501],[-156.469970703125,71.29155273437507],[-155.57944335937503,71.12109374999997],[-156.14658203125,70.92783203125003],[-155.97353515625002,70.84199218749995],[-155.16684570312498,71.09921875000006],[-154.19521484375002,70.80112304687498],[-153.23291015625,70.93256835937504],[-152.49121093749994,70.88095703125],[-152.23291015625,70.81035156249999],[-152.39921875,70.62045898437503],[-151.76904296875,70.56015625],[-151.94467773437498,70.45209960937501],[-149.26943359374997,70.50078124999999],[-147.70537109375,70.21723632812495],[-145.82314453124997,70.16005859375002],[-145.19736328125003,70.00869140625002],[-143.218310546875,70.11625976562499],[-142.70786132812498,70.03378906249998],[-141.40791015625,69.65336914062502],[-141.00214843750004,69.65078125000002],[-141.00214843750004,68.77416992187506]]]]},"properties":{"name":"United States","childNum":76}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[71.20615234375006,39.892578125],[71.15625,39.88344726562502],[71.06425781250002,39.88491210937505],[71.01171874999997,39.895117187500006],[71.04365234375004,39.97631835937503],[71.04482421875005,39.992529296875034],[70.96064453125004,40.087988281250034],[71.00546875,40.15229492187498],[71.0241210937501,40.14916992187497],[71.08037109375007,40.07988281249999],[71.2287109375001,40.04814453124999],[71.20615234375006,39.892578125]]],[[[70.94677734374997,42.24868164062505],[70.97900390625003,42.26655273437504],[71.03603515625,42.28466796875],[71.12998046875006,42.25],[71.21269531250002,42.20644531250005],[71.23232421875005,42.18627929687503],[71.22851562499997,42.16289062499996],[70.18095703125007,41.571435546874994],[70.734375,41.400537109374994],[70.86044921875006,41.22490234375002],[71.11074218750005,41.152636718750045],[71.29882812500003,41.152490234374994],[71.39306640625003,41.123388671875034],[71.40839843750004,41.13603515625002],[71.42089843750003,41.341894531250034],[71.60625,41.367431640625],[71.66494140625,41.54121093749998],[71.70068359374997,41.454003906249966],[71.75771484375005,41.42802734375002],[71.79248046875003,41.41313476562499],[71.85800781250006,41.311376953125034],[71.8786132812501,41.195019531249955],[71.95849609375003,41.18706054687502],[72.05244140625004,41.16474609375001],[72.1154296875001,41.18657226562502],[72.1642578125001,41.173730468749966],[72.18095703125002,41.11845703124999],[72.18730468750002,41.02592773437499],[72.2130859375001,41.014257812500006],[72.36406250000002,41.04345703125],[72.65830078125,40.86992187499999],[73.13212890625002,40.82851562499999],[72.6041015625,40.52543945312499],[72.40205078125004,40.578076171874955],[72.3892578125,40.427392578124994],[72.13125,40.438623046874966],[71.69248046875,40.15234375],[71.30468749999997,40.28691406249996],[70.990625,40.2548828125],[70.95800781250003,40.238867187500034],[70.653125,40.201171875],[70.37158203125003,40.38413085937506],[70.75107421875006,40.721777343750006],[70.40195312500006,41.03510742187498],[69.71289062500003,40.65698242187503],[69.35722656250002,40.76738281249996],[69.20625,40.566552734374994],[69.27490234374997,40.19809570312498],[68.63066406250007,40.16708984374998],[68.9720703125,40.08994140624998],[68.80468750000003,40.05034179687499],[68.86875,39.90747070312503],[68.63896484375007,39.8388671875],[68.46328125,39.53671874999998],[67.71904296875007,39.62138671875002],[67.426171875,39.46557617187497],[67.3576171875001,39.216699218749994],[67.64833984375005,39.13105468750004],[67.69443359375006,38.99462890625003],[68.13251953125004,38.927636718749966],[68.08720703125002,38.47353515625002],[68.3502929687501,38.211035156250006],[67.81435546875005,37.48701171875004],[67.7980468750001,37.244970703125006],[67.75898437500004,37.172216796875034],[67.75292968749997,37.199804687500034],[67.7,37.227246093749955],[67.60742187499997,37.22250976562506],[67.5172851562501,37.26665039062499],[67.44169921875007,37.25800781250001],[67.3197265625,37.209570312500006],[67.1955078125001,37.23520507812498],[67.06884765624997,37.334814453125006],[66.82773437500006,37.37128906249998],[66.52226562500007,37.34848632812506],[66.51064453125,37.45869140625004],[66.51132812500006,37.59916992187496],[66.52558593750004,37.785742187500034],[66.60625,37.98671875000005],[65.97119140624997,38.244238281250006],[65.612890625,38.23857421875002],[64.3099609375,38.97729492187497],[63.76367187500003,39.16054687499999],[62.48320312500002,39.97563476562496],[61.90283203124997,41.09370117187501],[61.496972656249994,41.276074218749955],[61.2423828125001,41.18920898437503],[60.454980468749994,41.221630859374955],[60.089648437500074,41.39941406250003],[60.07558593750005,41.759667968749966],[60.20078125000006,41.803125],[59.94179687499999,41.97353515625002],[59.98515625000002,42.21171875],[59.35429687500002,42.32329101562496],[58.5890625000001,42.778466796874966],[58.477148437500006,42.66284179687503],[58.15156250000004,42.628076171874966],[58.474414062500074,42.29936523437496],[58.02890625,42.48764648437506],[57.814257812500074,42.18984375000005],[57.290625,42.123779296875],[56.96406250000004,41.856542968750006],[57.11884765625004,41.35029296874998],[57.01796875,41.26347656249996],[55.97744140625005,41.32221679687504],[55.97568359375006,44.99492187499996],[58.555273437500006,45.55537109375001],[61.007910156250006,44.39379882812497],[61.99023437500003,43.492138671874955],[63.20703125000003,43.62797851562502],[64.44316406250007,43.55117187499999],[64.9054687500001,43.714697265625006],[65.49619140625,43.310546875],[65.80302734375002,42.87695312500006],[66.1002929687501,42.99082031249998],[66.00957031250007,42.00488281250003],[66.49863281250006,41.99487304687503],[66.70966796875004,41.17915039062501],[67.9357421875001,41.19658203125002],[68.11308593750007,41.02861328124999],[68.04765625000007,40.80927734374998],[68.29189453125,40.656103515625034],[68.57265625,40.62265624999998],[68.58408203125,40.876269531250045],[69.15361328125002,41.42524414062498],[70.94677734374997,42.24868164062505]]]]},"properties":{"name":"Uzbekistan","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[-61.17451171875001,13.158105468749966],[-61.268457031249966,13.287695312499991],[-61.13896484374996,13.358740234374991],[-61.17451171875001,13.158105468749966]]]},"properties":{"name":"St. Vin. and Gren.","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-60.99790039062498,8.867333984374966],[-61.069189453125034,8.947314453125003],[-60.91582031249996,9.070312500000014],[-60.86142578124998,8.949609375000037],[-60.99790039062498,8.867333984374966]]],[[[-60.821191406249966,9.138378906250026],[-60.94140625000003,9.105566406250006],[-60.73583984374997,9.203320312500026],[-60.821191406249966,9.138378906250026]]],[[[-63.84936523437494,11.131005859374994],[-63.917626953124994,10.887548828125048],[-64.40234375,10.981591796875023],[-64.21367187500002,11.086132812499997],[-64.0283203125,11.00185546874998],[-63.84936523437494,11.131005859374994]]],[[[-60.742138671874926,5.202050781250037],[-60.71196289062499,5.191552734375023],[-60.671972656250034,5.164355468749989],[-60.603857421875006,4.94936523437498],[-61.00283203125002,4.535253906249991],[-61.28007812500002,4.516894531249974],[-61.82084960937496,4.197021484375],[-62.153125,4.098388671874986],[-62.41064453124994,4.156738281249972],[-62.71210937499998,4.01791992187502],[-62.85698242187502,3.593457031249969],[-63.33867187500002,3.943896484375045],[-64.02148437500003,3.929101562500051],[-64.19248046874995,4.126855468750009],[-64.57636718750001,4.139892578125],[-64.788671875,4.276025390625023],[-64.66899414062496,4.01181640625002],[-64.22109375000002,3.587402343749972],[-64.04658203124998,2.502392578124997],[-63.389257812500006,2.411914062500045],[-63.43251953124994,2.155566406250045],[-64.00849609374995,1.931591796874969],[-64.20502929687493,1.52949218750004],[-65.10375976562497,1.108105468749983],[-65.47338867187497,0.691259765624977],[-65.55605468750002,0.687988281250014],[-65.52299804687493,0.843408203124966],[-65.68144531249999,0.983447265624989],[-66.06005859375003,0.78535156250004],[-66.34711914062498,0.7671875],[-66.87602539062499,1.223046875000037],[-67.21083984375,2.390136718750043],[-67.61870117187496,2.793603515624994],[-67.85908203124998,2.793603515624994],[-67.3111328125,3.41586914062502],[-67.66162109375,3.864257812499986],[-67.85527343750002,4.506884765624989],[-67.82490234374995,5.270458984375026],[-67.47387695312503,5.929980468750003],[-67.48198242187499,6.18027343750002],[-67.85917968749999,6.289892578124963],[-68.47177734375,6.156542968749974],[-69.42714843749997,6.123974609374997],[-70.12919921874999,6.95361328125],[-70.73715820312503,7.090039062499997],[-71.12861328124993,6.98671875],[-72.00664062499993,7.032617187500023],[-72.20771484374995,7.37026367187498],[-72.47197265624996,7.524267578124991],[-72.39033203124995,8.287060546874969],[-72.66542968749994,8.62758789062498],[-72.79638671874997,9.10898437499999],[-73.05839843749999,9.259570312500031],[-73.36621093749997,9.194140625000017],[-73.00654296874998,9.789160156250006],[-72.86933593750001,10.49125976562496],[-72.690087890625,10.835839843749994],[-72.24848632812501,11.196435546875009],[-71.95810546875,11.66640625],[-71.31972656249997,11.861914062500048],[-71.95693359375002,11.569921874999977],[-71.835107421875,11.190332031250009],[-71.6416015625,11.013525390625048],[-71.73090820312498,10.994677734375017],[-71.59433593749995,10.657373046875051],[-72.11284179687499,9.815576171874966],[-71.61953124999994,9.047949218749991],[-71.24140625000001,9.160449218750003],[-71.08583984375002,9.348242187499977],[-71.05268554687501,9.705810546874986],[-71.49423828125,10.533203124999972],[-71.46953124999993,10.964160156250017],[-70.23251953124998,11.372998046874997],[-70.09711914062493,11.519775390624972],[-69.80478515624998,11.47421875000002],[-69.81733398437495,11.672070312499997],[-70.19257812499993,11.62460937500002],[-70.28652343749997,11.886035156249989],[-70.20278320312497,12.098388671874986],[-70.00395507812496,12.177880859375023],[-69.63159179687494,11.479931640625026],[-68.827978515625,11.431738281249977],[-68.39863281249995,11.160986328124977],[-68.29628906249997,10.689355468749994],[-68.13994140624999,10.492724609374989],[-66.24721679687497,10.632226562499994],[-65.85175781249995,10.257763671874997],[-65.12910156249998,10.070068359375043],[-64.85048828125,10.098095703124969],[-64.188330078125,10.457812499999989],[-63.73188476562501,10.503417968750043],[-64.24750976562498,10.54257812500002],[-64.298193359375,10.635156249999966],[-61.879492187500006,10.741015625000031],[-62.379980468750006,10.546875],[-62.91357421875,10.531494140624986],[-62.68583984374996,10.289794921875043],[-62.740576171875006,10.056152343750043],[-62.55034179687499,10.200439453125043],[-62.320410156250034,9.783056640625006],[-62.22114257812498,9.882568359375028],[-62.15336914062493,9.821777343749986],[-62.15532226562499,9.979248046875014],[-62.077099609374926,9.97504882812504],[-61.73593749999998,9.631201171874977],[-61.76591796874996,9.813818359374963],[-61.58886718749994,9.894531249999986],[-60.79248046874997,9.360742187500037],[-61.02314453124998,9.15458984374996],[-61.24726562499998,8.600341796875014],[-61.61870117187499,8.59746093749996],[-61.30400390624999,8.410400390625043],[-60.800976562499926,8.592138671875034],[-60.16748046875,8.616992187500031],[-60.01752929687501,8.549316406250014],[-59.83164062499998,8.305957031250003],[-59.84907226562498,8.248681640624966],[-59.96484375000003,8.191601562499969],[-59.99072265624997,8.16201171874998],[-60.032421874999926,8.053564453125006],[-60.51362304687501,7.813183593749969],[-60.71865234374994,7.535937499999974],[-60.606542968750006,7.320849609375031],[-60.63330078124997,7.211083984374966],[-60.58320312499998,7.156201171874969],[-60.523193359375,7.143701171875009],[-60.464941406250034,7.166552734375045],[-60.39238281249999,7.164550781249986],[-60.34506835937495,7.15],[-60.32548828124996,7.133984374999983],[-60.32207031249996,7.092041015625043],[-60.35209960937496,7.002880859374997],[-60.39501953125,6.945361328125003],[-60.717919921874966,6.768310546875],[-61.14560546874998,6.694531249999983],[-61.20361328124997,6.588378906250028],[-61.181591796874926,6.513378906250026],[-61.15102539062502,6.446533203124986],[-61.15229492187501,6.385107421875006],[-61.12871093749999,6.214306640625026],[-61.15947265624996,6.174414062499977],[-61.22495117187498,6.129199218750003],[-61.303125,6.049511718750026],[-61.39082031250001,5.938769531250017],[-61.376806640625006,5.906982421875028],[-61.167187499999926,5.674218750000037],[-60.95400390625002,5.437402343750023],[-60.742138671874926,5.202050781250037]]]]},"properties":{"name":"Venezuela","childNum":4}},{"geometry":{"type":"Polygon","coordinates":[[[-64.765625,17.794335937499994],[-64.58046874999994,17.750195312499983],[-64.88911132812495,17.701708984375045],[-64.765625,17.794335937499994]]]},"properties":{"name":"U.S. Virgin Is.","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[104.06396484375003,10.390820312500011],[104.01845703125,10.029199218749966],[103.84951171875005,10.371093749999986],[104.06396484375003,10.390820312500011]]],[[[107.52128906250007,20.926611328124977],[107.39921875000007,20.903466796874966],[107.55126953125003,21.034033203125006],[107.52128906250007,20.926611328124977]]],[[[107.60273437500004,21.21679687500003],[107.40351562500004,21.093652343749994],[107.47626953125004,21.268945312499994],[107.60273437500004,21.21679687500003]]],[[[107.97265624999997,21.507958984375023],[107.40996093750002,21.284814453125023],[107.35429687500007,21.055175781250057],[107.1647460937501,20.94873046875003],[106.68339843750007,21.000292968750074],[106.75341796875003,20.73505859375004],[106.55078124999997,20.52656250000001],[106.57285156250012,20.392187499999977],[105.98408203125004,19.939062500000034],[105.62177734375004,18.96630859375003],[105.88828125000006,18.502490234375045],[106.49902343749997,17.946435546874994],[106.47890625000005,17.719580078125063],[106.3705078125,17.746875],[107.83378906250002,16.322460937499983],[108.02939453125012,16.331103515625074],[108.82128906249997,15.377929687500028],[109.30332031250012,13.856445312500043],[109.271875,13.279345703124974],[109.42392578125006,12.955957031249994],[109.44492187500006,12.599609375000057],[109.33554687500012,12.751904296874997],[109.21894531250004,12.64580078124996],[109.30468750000003,12.391162109375045],[109.20683593750007,12.415380859375006],[109.1986328125,11.724853515625014],[109.03964843750012,11.592675781249994],[108.98671875,11.336376953124997],[108.09492187500004,10.897265624999989],[108.0013671875,10.720361328125009],[107.26152343750007,10.39838867187504],[107.00664062500002,10.66054687499998],[106.94746093750004,10.400341796874997],[106.72734375000007,10.535644531250028],[106.605859375,10.46494140625002],[106.74121093750003,10.444384765625003],[106.75742187500006,10.295800781250023],[106.46406250000004,10.298291015624997],[106.78525390625012,10.116455078124986],[106.59560546875005,9.859863281250028],[106.1364257812501,10.221679687500014],[106.56435546875005,9.715625],[106.48408203125004,9.559423828125006],[105.83095703125005,10.000732421875028],[106.15859375,9.59414062499998],[106.16835937500005,9.396728515625],[105.50097656249997,9.093212890624983],[105.11435546875006,8.629199218750031],[104.77041015625,8.59765625],[104.89628906250007,8.746630859374974],[104.81855468750004,8.801855468750034],[104.84521484375003,9.606152343750026],[105.08447265625003,9.99570312499999],[104.8019531250001,10.202734374999977],[104.66347656250005,10.169921875000043],[104.42636718750006,10.411230468749991],[104.85058593749997,10.534472656249974],[105.04638671874997,10.701660156250014],[105.04570312500002,10.911376953125014],[105.3146484375001,10.845166015625026],[105.40576171875003,10.95161132812504],[105.75507812500004,10.989990234375043],[105.85332031250007,10.86357421874996],[106.16396484375005,10.794921875],[106.16093750000002,11.037109375000057],[105.85605468750006,11.294287109375048],[105.85146484375005,11.635009765625],[106.0060546875001,11.758007812500011],[106.39921875000007,11.687011718750028],[106.41386718750002,11.9484375],[106.70009765625,11.979296874999974],[107.21210937500004,12.30400390624996],[107.39335937500002,12.260498046874972],[107.50644531250006,12.364550781250031],[107.47539062500002,13.030371093749963],[107.60546874999997,13.437792968750017],[107.3314453125,14.126611328125009],[107.51943359375005,14.705078125],[107.51376953125012,14.817382812500057],[107.52451171875012,14.871826171875043],[107.50468750000007,14.915917968749966],[107.48037109375,14.979882812500037],[107.55527343750006,15.057031250000023],[107.58964843750002,15.118457031250017],[107.63369140625005,15.18984375],[107.653125,15.255224609374991],[107.62167968750006,15.309863281250017],[107.56425781250002,15.391601562499972],[107.45957031250012,15.4658203125],[107.33876953125,15.560498046875011],[107.27939453125006,15.618701171875045],[107.16591796875005,15.802490234375028],[107.1888671875,15.838623046875],[107.36064453125002,15.921728515624977],[107.3919921875,15.951660156250028],[107.39638671875,16.04301757812499],[106.93066406249997,16.353125],[106.8927734375001,16.396533203125074],[106.85107421875003,16.515625],[106.83242187500005,16.526269531250023],[106.79160156250006,16.490332031250006],[106.73955078125007,16.452539062500023],[106.6564453125001,16.49262695312501],[106.54619140625002,16.650732421874977],[106.53369140625003,16.821044921875057],[106.52597656250006,16.876611328124994],[106.50224609375002,16.95410156249997],[106.26953125000003,17.21679687500003],[106.00625,17.415283203125057],[105.69140625000003,17.737841796875045],[105.58847656250012,17.983691406250045],[105.51855468749997,18.077441406250045],[105.45820312500004,18.15429687499997],[105.11455078125002,18.40527343750003],[105.08701171875006,18.496240234374994],[105.14541015625,18.616796875000063],[105.14648437500003,18.650976562500006],[103.89160156250003,19.304980468750017],[103.89638671875,19.339990234375023],[103.93203125,19.366064453125006],[104.0275390625001,19.42045898437499],[104.062890625,19.48256835937505],[104.05156250000007,19.564160156249955],[104.01347656250007,19.64648437500003],[104.03203125000002,19.675146484375006],[104.06279296875007,19.678417968749983],[104.25986328125006,19.685498046874983],[104.5462890625,19.61054687500001],[104.58789062500003,19.61875],[104.74316406250003,19.754736328124977],[104.80175781249997,19.83613281250004],[104.81513671875004,19.90400390625001],[104.9279296875001,20.01811523437499],[104.92919921875003,20.082812500000017],[104.88867187500003,20.169091796875023],[104.84785156250004,20.202441406250045],[104.69873046875003,20.20532226562503],[104.67695312500004,20.224707031249977],[104.66191406250007,20.28901367187501],[104.65644531250004,20.32851562499999],[104.6188476562501,20.37451171875003],[104.49619140625006,20.413671875],[104.39218750000012,20.424755859374955],[104.36777343750012,20.44140624999997],[104.40781250000012,20.48574218750005],[104.47861328125006,20.529589843750017],[104.53271484374997,20.55488281250001],[104.58320312500004,20.646679687499955],[104.34960937499997,20.821093750000074],[104.19531249999997,20.913964843749966],[104.10136718750002,20.94550781250001],[103.63505859375007,20.697070312500017],[103.46357421875004,20.779833984375017],[103.21074218750002,20.840625],[103.10449218749997,20.891650390625045],[102.88378906250003,21.202587890624983],[102.85117187500006,21.26591796874999],[102.94960937500005,21.681347656249983],[102.84521484374997,21.73476562500005],[102.81591796874997,21.807373046875],[102.7982421875,21.797949218750034],[102.77109375000006,21.709667968749983],[102.73857421875002,21.67792968750001],[102.66201171875005,21.67602539062497],[102.58251953125003,21.90429687500003],[102.12744140624997,22.379199218750045],[102.1759765625001,22.414648437500006],[102.2370117187501,22.466015624999983],[102.40644531250004,22.70800781249997],[102.47089843750004,22.75092773437501],[102.98193359374997,22.4482421875],[103.32666015625003,22.769775390625057],[103.49296875000007,22.587988281250034],[103.62021484375006,22.782031250000045],[103.94150390625006,22.540087890625045],[104.14306640624997,22.800146484375006],[104.37177734375004,22.704052734374983],[104.68730468750002,22.822216796874983],[104.86474609375003,23.136376953125023],[105.27539062500003,23.34521484375003],[105.8429687500001,22.922802734374955],[106.14843749999997,22.970068359375006],[106.2790039062501,22.857470703125045],[106.54179687500007,22.908349609375023],[106.78027343749997,22.778906250000034],[106.55039062500006,22.501367187499994],[106.66357421875003,21.97890625000005],[106.97099609375002,21.923925781250034],[107.35117187500012,21.60888671874997],[107.75927734374997,21.655029296875057],[107.97265624999997,21.507958984375023]]]]},"properties":{"name":"Vietnam","childNum":4}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[169.49130859375006,-19.54013671875002],[169.34726562500006,-19.623535156249957],[169.2174804687501,-19.476367187500003],[169.24746093750005,-19.3447265625],[169.49130859375006,-19.54013671875002]]],[[[169.334375,-18.940234375000017],[168.98691406250006,-18.87128906250001],[169.01582031250004,-18.64375],[169.14384765625002,-18.63105468750001],[169.334375,-18.940234375000017]]],[[[168.44580078124997,-17.54218750000004],[168.58496093750003,-17.695898437500006],[168.52460937500004,-17.798046875000026],[168.15820312500003,-17.710546874999963],[168.2731445312501,-17.552246093749957],[168.44580078124997,-17.54218750000004]]],[[[168.44677734375003,-16.778808593749957],[168.18144531250002,-16.804003906250017],[168.13535156250006,-16.636914062499997],[168.44677734375003,-16.778808593749957]]],[[[168.29667968750007,-16.33652343749999],[167.92900390625002,-16.22871093749997],[168.16386718750002,-16.081640625000034],[168.29667968750007,-16.33652343749999]]],[[[167.4125,-16.095898437499997],[167.83662109375004,-16.449707031249957],[167.44931640625012,-16.554980468750003],[167.34921875000006,-16.15449218750004],[167.15146484375006,-16.080468749999966],[167.19951171875002,-15.885058593750031],[167.33574218750007,-15.916699218749997],[167.4125,-16.095898437499997]]],[[[167.9113281250001,-15.435937500000023],[167.67421875,-15.4515625],[168.00253906250012,-15.283203124999986],[167.9113281250001,-15.435937500000023]]],[[[166.74580078125004,-14.826855468750011],[166.81015625000012,-15.15742187500004],[167.0755859375,-14.935644531249977],[167.20078125000012,-15.443066406249969],[167.0939453125001,-15.580859374999974],[166.75830078125003,-15.631152343750003],[166.63105468750004,-15.406054687499974],[166.56738281250003,-14.641796874999969],[166.74580078125004,-14.826855468750011]]],[[[167.58486328125,-14.260937500000011],[167.43027343750012,-14.294921875],[167.41074218750006,-14.19746093750004],[167.50644531250012,-14.142187499999977],[167.58486328125,-14.260937500000011]]],[[[167.48886718750006,-13.907226562499972],[167.3917968750001,-13.788378906250017],[167.48105468750006,-13.709472656250014],[167.48886718750006,-13.907226562499972]]]]},"properties":{"name":"Vanuatu","childNum":10}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[-171.4541015625,-14.04648437500002],[-171.9119140625,-14.001660156250026],[-172.04589843750003,-13.857128906249983],[-171.60390624999997,-13.879199218750045],[-171.4541015625,-14.04648437500002]]],[[[-172.33349609375,-13.46523437499999],[-172.17685546874998,-13.68466796875002],[-172.224951171875,-13.804296874999963],[-172.535693359375,-13.791699218749983],[-172.77851562499998,-13.516796875000011],[-172.33349609375,-13.46523437499999]]]]},"properties":{"name":"Samoa","childNum":2}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[53.76318359374997,12.636816406249991],[54.18740234375005,12.664013671875026],[54.511132812499994,12.552783203125017],[54.12949218750006,12.360644531250045],[53.71884765625006,12.318994140624994],[53.31582031250005,12.533154296875011],[53.53496093750002,12.715771484374997],[53.76318359374997,12.636816406249991]]],[[[42.75585937500003,13.70429687500004],[42.689746093750074,13.673632812500017],[42.7941406250001,13.766113281250028],[42.75585937500003,13.70429687500004]]],[[[42.787402343750074,13.971484375000031],[42.69404296875004,14.007910156249991],[42.76210937500005,14.067480468750048],[42.787402343750074,13.971484375000031]]],[[[53.08564453125004,16.648388671874955],[52.327734375,16.293554687500063],[52.17402343750004,15.956835937500017],[52.2174804687501,15.655517578125],[51.3224609375001,15.22626953125004],[49.34990234375002,14.637792968749977],[48.66835937499999,14.050146484374977],[47.9899414062501,14.048095703125],[47.40771484374997,13.661621093750057],[46.78886718750002,13.465576171874986],[45.65732421875006,13.338720703124991],[45.03867187500006,12.815869140624969],[44.617773437500006,12.817236328124977],[44.00585937499997,12.607666015625],[43.634375,12.744482421874991],[43.487597656250074,12.69882812500002],[43.23193359375003,13.267089843750057],[43.2824218750001,13.692529296875037],[43.08906250000004,14.010986328125],[42.93642578125005,14.938574218749963],[42.85566406250004,15.132958984375037],[42.65781250000006,15.232812500000051],[42.79902343750004,15.326269531249991],[42.71718750000005,15.654638671875006],[42.83964843750002,16.032031250000074],[42.79931640624997,16.37177734375001],[43.16503906249997,16.689404296874955],[43.19091796875003,17.359375],[43.41796875000003,17.516259765625023],[43.91699218749997,17.32470703124997],[45.14804687500006,17.427441406249955],[45.5353515625001,17.30205078124999],[46.72763671875006,17.26557617187501],[46.97568359375006,16.953466796875034],[47.14355468749997,16.946679687499966],[47.44179687499999,17.111865234375045],[47.57958984374997,17.448339843750034],[48.17216796875002,18.156933593749983],[49.04199218750003,18.58178710937503],[51.977636718750006,18.996142578125074],[53.08564453125004,16.648388671874955]]]]},"properties":{"name":"Yemen","childNum":4}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[37.85693359375003,-46.94423828124998],[37.5900390625001,-46.90800781250006],[37.78955078124997,-46.8375],[37.85693359375003,-46.94423828124998]]],[[[31.799609375000017,-23.8921875],[31.98583984374997,-24.460644531249983],[31.921679687500017,-25.96875],[31.335156250000097,-25.755566406249997],[31.207324218750074,-25.843359375000034],[31.08808593750004,-25.980664062500026],[30.803320312500006,-26.41347656250001],[30.806738281250006,-26.78525390624999],[30.88330078124997,-26.792382812500023],[30.938085937500006,-26.91582031250003],[31.06337890625005,-27.1123046875],[31.274023437500063,-27.23837890625002],[31.469531250000017,-27.29550781250002],[31.74257812500005,-27.309960937500037],[31.95839843750005,-27.305859375],[31.946093750000017,-27.173632812499974],[31.96718750000005,-26.96064453125001],[31.994726562500006,-26.817480468749977],[32.024804687499994,-26.81113281250002],[32.112890625,-26.83945312500002],[32.19960937499999,-26.833496093749957],[32.35351562499997,-26.861621093750003],[32.7765625000001,-26.850976562499966],[32.88613281250005,-26.849316406249983],[32.53476562500006,-28.19970703125003],[32.285742187500006,-28.62148437499998],[31.335156250000097,-29.378125],[29.97119140625003,-31.322070312500017],[28.449414062500068,-32.62460937499999],[27.077441406250074,-33.52119140625004],[26.429492187500045,-33.75957031250002],[25.80585937500001,-33.737109374999974],[25.574218750000057,-34.03535156249998],[25.00292968750003,-33.97363281250003],[24.8271484375,-34.16894531250003],[24.595507812500074,-34.17451171875],[23.697851562500063,-33.99277343750002],[23.268164062500006,-34.08115234374999],[22.553808593750063,-34.01005859374999],[22.24550781250005,-34.06914062500003],[21.788964843750023,-34.37265624999996],[20.529882812500034,-34.4630859375],[20.020605468750006,-34.785742187500006],[19.298242187500023,-34.61503906249996],[19.330761718750068,-34.49238281250001],[19.098339843750068,-34.350097656249986],[18.831347656250017,-34.36406249999999],[18.75214843750004,-34.08261718750002],[18.50039062499999,-34.10927734375004],[18.46162109375001,-34.346875],[18.35205078124997,-34.1884765625],[18.43300781250005,-33.71728515625003],[17.851074218750057,-32.82744140625002],[17.96523437500005,-32.70859374999996],[18.125,-32.74912109374996],[18.325292968750034,-32.50498046874996],[18.21083984375008,-31.74248046874996],[17.34707031250005,-30.44482421875],[16.95,-29.40341796875002],[16.739453124999983,-29.009375],[16.447558593750045,-28.61757812499998],[16.755761718750023,-28.45214843750003],[16.7875,-28.39472656249997],[16.81015625,-28.264550781249994],[16.841210937500023,-28.21894531250004],[16.875292968750045,-28.12792968749997],[16.93330078125004,-28.06962890624999],[17.05625,-28.03105468750003],[17.1884765625,-28.13251953125001],[17.358691406250017,-28.269433593750023],[17.44794921875001,-28.698144531249966],[18.310839843750017,-28.88623046875],[19.16171875,-28.93876953124996],[19.245800781250068,-28.90166015625003],[19.31269531250004,-28.733300781250023],[19.539843750000017,-28.574609375000023],[19.98046875,-28.45126953125002],[19.98046875,-28.310351562500003],[19.98046875,-24.77675781249998],[20.430664062500057,-25.14707031250002],[20.79316406250001,-25.915625],[20.641406250000017,-26.7421875],[20.739843749999977,-26.84882812499997],[21.694726562500023,-26.840917968749963],[21.738085937500045,-26.806835937500026],[21.788281250000068,-26.710058593750034],[22.01093750000004,-26.635839843750006],[22.090917968749977,-26.580175781250034],[22.217578125000045,-26.38886718749997],[22.47089843750004,-26.219042968750003],[22.548632812500074,-26.178417968749997],[22.59765625000003,-26.13271484375001],[22.878808593750023,-25.457910156250023],[23.148730468750017,-25.288671875],[23.389257812500006,-25.291406250000023],[23.89375,-25.600878906250017],[23.96953124999999,-25.62607421874999],[24.192968750000034,-25.632910156249963],[24.33056640625,-25.742871093749983],[25.21337890625,-25.75625],[25.518164062500006,-25.66279296875001],[25.91210937499997,-24.747460937499966],[26.031835937500034,-24.70244140625003],[26.130859375000057,-24.671484375000034],[26.39716796875004,-24.61357421874996],[26.451757812500063,-24.582714843749983],[26.835058593750063,-24.240820312499963],[27.085546875000034,-23.577929687500003],[27.7685546875,-23.14892578125],[27.812597656250006,-23.108007812500006],[28.210156249999983,-22.693652343749974],[28.83984375000003,-22.480859374999966],[28.94580078125003,-22.39511718749999],[29.013476562500045,-22.27841796875002],[29.129882812500057,-22.21328125],[29.364843750000063,-22.19394531250005],[29.37744140625003,-22.19277343749998],[29.66308593749997,-22.146289062500017],[29.90234375000003,-22.184179687500006],[30.19042968750003,-22.291113281250034],[30.460156250000097,-22.329003906250023],[30.71162109375004,-22.297851562499986],[31.07343750000004,-22.30781249999997],[31.19726562499997,-22.344921874999983],[31.287890625000074,-22.402050781249983],[31.54560546875004,-23.48232421874998],[31.799609375000017,-23.8921875]],[[27.19355468750001,-29.94130859375001],[27.364062500000017,-30.27919921875001],[27.753125,-30.6],[28.05683593750001,-30.63105468750001],[28.128710937500017,-30.52509765625001],[28.39208984375003,-30.14755859375002],[28.646875,-30.1265625],[29.09804687500005,-29.919042968750006],[29.142187500000063,-29.70097656249999],[29.293554687500006,-29.56689453125003],[29.348828125000097,-29.441992187499977],[29.38671874999997,-29.319726562500023],[29.301367187500006,-29.08984375],[28.625781250000017,-28.581738281250054],[28.583398437499994,-28.59414062499999],[28.471875,-28.615820312499977],[28.23261718750004,-28.701269531249977],[28.084375,-28.779980468750026],[27.95986328125008,-28.87333984375003],[27.73554687500004,-28.940039062500034],[27.294531250000063,-29.519335937500017],[27.056933593750074,-29.62558593749999],[27.19355468750001,-29.94130859375001]]]]},"properties":{"name":"South Africa","childNum":2}},{"geometry":{"type":"Polygon","coordinates":[[[33.148046875,-9.603515625],[33.25,-9.759570312500003],[33.35097656250002,-9.862207031250009],[33.33710937500001,-9.954003906250009],[33.3115234375,-10.037988281250009],[33.52890625,-10.234667968750003],[33.53759765625,-10.3515625],[33.5537109375,-10.391308593750011],[33.66152343750002,-10.553125],[33.29277343750002,-10.85234375],[33.37978515625002,-11.157910156250011],[33.26835937500002,-11.40390625],[33.23271484375002,-11.417675781250011],[33.22636718750002,-11.534863281250011],[33.30390625000001,-11.690820312500009],[33.25234375000002,-12.112597656250003],[33.34013671875002,-12.308300781250011],[33.512304687500006,-12.347753906250006],[32.975195312500006,-12.701367187500011],[32.96757812500002,-13.225],[32.67041015625,-13.590429687500006],[32.797460937500006,-13.6884765625],[32.98125,-14.009375],[33.148046875,-13.94091796875],[33.201757812500006,-14.013378906250011],[30.231835937500023,-14.990332031250006],[30.39609375,-15.64306640625],[29.4873046875,-15.69677734375],[28.9130859375,-15.98779296875],[28.760546875000017,-16.53212890625001],[27.932226562500006,-16.89619140625001],[27.020800781250017,-17.95839843750001],[26.779882812500006,-18.04150390625],[26.333398437500023,-17.929296875],[25.995898437500017,-17.969824218750006],[25.2587890625,-17.793554687500006],[25.001757812500017,-17.56855468750001],[24.73291015625,-17.51777343750001],[24.27490234375,-17.481054687500006],[23.380664062500017,-17.640625],[22.193945312500006,-16.628125],[21.979785156250017,-15.95556640625],[21.979394531250023,-14.440527343750006],[21.979296875000017,-14.11962890625],[21.979101562500006,-13.798730468750009],[21.978906250000023,-13.0009765625],[22.209570312500006,-13.0009765625],[23.843164062500023,-13.0009765625],[23.962988281250006,-12.988476562500011],[23.882421875,-12.799023437500011],[23.886523437500017,-12.743261718750006],[23.909375,-12.636132812500009],[23.98388671875,-11.725],[23.96650390625001,-10.871777343750011],[24.36572265625,-11.1298828125],[24.3779296875,-11.417089843750006],[25.28876953125001,-11.21240234375],[25.349414062500017,-11.623046875],[26.025976562500006,-11.89013671875],[26.824023437500017,-11.965234375],[27.1591796875,-11.579199218750006],[27.573828125,-12.22705078125],[28.412890625000017,-12.51806640625],[28.550878906250006,-12.836132812500011],[28.730078125,-12.925488281250011],[29.014257812500006,-13.368847656250011],[29.20185546875001,-13.398339843750009],[29.55419921875,-13.248925781250009],[29.775195312500017,-13.438085937500006],[29.79511718750001,-12.155468750000011],[29.508203125000023,-12.228222656250011],[29.48554687500001,-12.41845703125],[29.064355468750023,-12.348828125000011],[28.482519531250006,-11.812109375],[28.383398437500006,-11.566699218750003],[28.6455078125,-10.550195312500009],[28.60419921875001,-9.678808593750006],[28.400683593750017,-9.224804687500011],[28.869531250000023,-8.785839843750011],[28.89814453125001,-8.485449218750006],[30.75117187500001,-8.193652343750003],[30.830664062500006,-8.385546875],[30.891992187500023,-8.473730468750006],[30.968359375,-8.550976562500011],[31.07636718750001,-8.611914062500006],[31.3505859375,-8.60703125],[31.44921875,-8.65390625],[31.53486328125001,-8.71328125],[31.55625,-8.80546875],[31.673632812500017,-8.908789062500006],[31.91865234375001,-8.9421875],[31.921875,-9.019433593750009],[31.94257812500001,-9.054003906250003],[32.75664062500002,-9.322265625],[32.919921875,-9.407421875000011],[32.99599609375002,-9.622851562500003],[33.148046875,-9.603515625]]]},"properties":{"name":"Zambia","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[31.287890625000017,-22.40205078125001],[31.07343750000001,-22.30781250000001],[30.71162109375001,-22.2978515625],[30.46015625000001,-22.32900390625001],[30.1904296875,-22.291113281250006],[29.90234375,-22.184179687500006],[29.6630859375,-22.146289062500003],[29.37744140625,-22.19277343750001],[29.36484375,-22.193945312500006],[29.315234375000017,-22.15771484375],[29.237207031250023,-22.07949218750001],[29.042382812500023,-22.018359375],[29.02558593750001,-21.796875],[28.014062500000023,-21.55419921875],[27.66943359375,-21.064257812500003],[27.679296875,-20.503027343750006],[27.28076171875,-20.47871093750001],[27.17822265625,-20.10097656250001],[26.168066406250006,-19.53828125000001],[25.939355468750023,-18.93867187500001],[25.242285156250006,-17.969042968750003],[25.2587890625,-17.793554687500006],[25.995898437500017,-17.969824218750006],[26.333398437500023,-17.929296875],[26.779882812500006,-18.04150390625],[27.020800781250017,-17.95839843750001],[27.932226562500006,-16.89619140625001],[28.760546875000017,-16.53212890625001],[28.9130859375,-15.98779296875],[29.4873046875,-15.69677734375],[30.39609375,-15.64306640625],[30.437792968750017,-15.995312500000011],[31.236230468750023,-16.02363281250001],[31.939843750000023,-16.428808593750006],[32.94804687500002,-16.71230468750001],[32.87626953125002,-16.88359375],[32.99306640625002,-18.35957031250001],[32.69970703125,-18.94091796875],[32.84980468750001,-19.10439453125001],[32.77763671875002,-19.388769531250006],[32.992773437500006,-19.98486328125],[32.49238281250001,-20.659765625],[32.353613281250006,-21.136523437500003],[32.429785156250006,-21.29707031250001],[31.429492187500017,-22.298828125],[31.287890625000017,-22.40205078125001]]]},"properties":{"name":"Zimbabwe","childNum":1}},{"geometry":{"type":"Polygon","coordinates":[[[74.00809389139292,33.25375789331485],[73.19660141888893,33.898124784580936],[73.13410859949555,34.82510160558277],[72.31128647748268,35.77290936638241],[73.08203125000107,36.43949943991182],[73.08961802927895,36.86435907947333],[73.116796875,36.868554687499994],[74.03886718750002,36.825732421874996],[74.54140625000002,37.02216796875],[74.69218750000002,37.0357421875],[74.8892578125,36.952441406249996],[74.94912109375002,36.968359375],[75.05390625000001,36.987158203125],[75.14521484375001,36.9732421875],[75.3466796875,36.913476562499994],[75.37685546875002,36.883691406249994],[75.42421875000002,36.738232421875],[75.46025390625002,36.725048828125],[75.57373046875,36.759326171874996],[75.66718750000001,36.741992187499996],[75.77216796875001,36.694921875],[75.84023437500002,36.649707031249996],[75.88496093750001,36.600732421874994],[75.93300781250002,36.52158203125],[75.95185546875001,36.45810546875],[75.97441406250002,36.382421875],[75.91230468750001,36.048974609374994],[76.07089843750003,35.9830078125],[76.14785156250002,35.829003906249994],[76.17783203125003,35.810546875],[76.25166015625001,35.8109375],[76.3857421875,35.837158203125],[76.50205078125003,35.878222656249996],[76.55126953125,35.887060546875],[76.5634765625,35.772998046874996],[76.6318359375,35.729394531249994],[76.7275390625,35.678662109375],[76.76689453124999,35.66171875],[76.81279296874999,35.571826171874996],[76.88222656250002,35.4357421875],[76.927734375,35.346630859375],[77.04863281249999,35.109912109374996],[77.00087890625002,34.991992187499996],[76.78291015625001,34.900195312499996],[76.75751953125001,34.877832031249994],[76.7490234375,34.847558593749994],[76.6962890625,34.786914062499996],[76.59443359375001,34.73583984375],[76.45673828125001,34.756103515625],[76.17246093750003,34.667724609375],[76.041015625,34.669921875],[75.93828125000002,34.612548828125],[75.86210937500002,34.56025390625],[75.70917968750001,34.503076171874994],[74.300390625,34.765380859375],[74.17197265625,34.7208984375],[74.05585937500001,34.6806640625],[73.96123046875002,34.653466796874994],[73.79453125,34.378222656249996],[73.80996093750002,34.325341796874994],[73.92460937500002,34.287841796875],[73.97236328125001,34.236621093749996],[73.9794921875,34.191308593749994],[73.90390625,34.1080078125],[73.94990234375001,34.018798828125],[74.24648437500002,33.990185546875],[73.97646484375002,33.7212890625],[74.15,33.506982421874994],[74.00809389139292,33.25375789331485]]]},"properties":{"name":"","childNum":1}},{"geometry":{"type":"MultiPolygon","coordinates":[[[[78.49194250885338,32.53122786149202],[78.10154031239509,32.87658365066666],[77.71342088235082,32.6917648744551],[77.06655516561037,33.301666835953235],[76.62299010270264,33.32014871357439],[76.32728006076415,32.87658365066666],[75.73585997688717,32.78417426256088],[75.62496871116024,32.28516356678968],[75.32221348233018,32.28516356678968],[74.98730468749997,32.46220703124996],[74.78886718750013,32.4578125],[74.6857421875001,32.493798828124994],[74.66328125000004,32.75766601562495],[74.63242187499995,32.770898437500136],[74.58828125000011,32.7532226562501],[74.35458984375012,32.76870117187505],[74.30546875000007,32.81044921875002],[74.30361328125005,32.991796875000034],[73.98984375000006,33.22119140625006],[74.15,33.506982421874994],[73.97646484375016,33.72128906249998],[74.24648437500011,33.99018554687504],[73.9499023437501,34.018798828125],[73.90390625000012,34.10800781250006],[73.97949218750009,34.191308593749966],[73.97236328125004,34.23662109374996],[73.92460937500007,34.287841796875114],[73.80996093750016,34.32534179687511],[73.79453125000006,34.378222656250045],[73.96123046875007,34.653466796874994],[74.05585937500015,34.68066406250003],[74.17197265624995,34.72089843750004],[74.30039062500006,34.76538085937506],[75.70917968750004,34.50307617187508],[75.86210937500002,34.56025390625001],[75.93828125000019,34.612548828125],[76.04101562500014,34.66992187499997],[76.17246093750006,34.66772460937506],[76.4567382812501,34.756103515625114],[76.5944335937501,34.73583984375006],[76.69628906249997,34.78691406249999],[76.74902343750014,34.84755859375008],[76.7575195312501,34.87783203125005],[76.7829101562501,34.90019531249999],[77.00087890625011,34.99199218750002],[77.03066406250011,35.06235351562498],[77.04863281250007,35.109912109375074],[77.42343749999995,35.30258789062506],[77.57158203125002,35.37875976562495],[77.69697265625015,35.443261718750136],[77.79941406250006,35.49589843750002],[78.0426757812501,35.4797851562501],[78.07578125000006,35.13491210937502],[78.15849609375002,34.94648437499998],[78.32695312500007,34.60639648437498],[78.86484375000006,34.39033203125001],[78.93642578125,34.35195312500002],[78.97060546875011,34.22822265625004],[78.72666015625006,34.013378906249955],[78.78378906250006,33.80878906250004],[78.86503906250002,33.43110351562501],[78.94843750000004,33.346533203125006],[79.1125,33.22626953125001],[79.13515625000005,33.17192382812496],[79.10283203125007,33.05253906249996],[79.14550781250003,33.00146484375006],[79.16992187500003,32.497216796874994],[78.91894531249997,32.3582031250001],[78.75351562500012,32.49926757812506],[78.73671875,32.55839843750002],[78.49194250885338,32.53122786149202]]]]},"properties":{"name":"","childNum":1}}]}');Q.registerMap("world",oe);const re=n=>{const{areaStyleColors:i,dataLoaded:o,hasData:r,highlight:s,type:a,option:l,series:c,onChange:u,zoomStart:h,zoomEnd:d,title:p,seriesConfig:g=[],noDataComponent:m=null,zoomColors:f}=n,[y,b]=(0,e.useState)(null),v=(0,e.useRef)(null),w=()=>{y&&y.resize()},A={defaultOpts:(0,X.fromJS)({title:{show:!0,text:p,left:0},color:[],toolbox:{right:"0",orient:"horizontal",itemSize:15,showTitle:!0,feature:null},dataZoom:[{show:!0,start:0,end:100,orient:"horizontal",dataBackground:{lineStyle:{color:(null==f?void 0:f.lineStyle)||"#368493"},areaStyle:{color:(null==f?void 0:f.areaStyle)||"#368493"}},handleStyle:{color:(null==f?void 0:f.handleStyle)||"#368493"},textStyle:{color:(null==f?void 0:f.textStyle)||"#368493"},borderColor:"transparent",fillerColor:(null==f?void 0:f.fillerColor)||"rgba(54, 132, 147, 0.1)"}],legend:{show:!1},tooltip:{trigger:"axis",axisPointer:{type:"cross"}},grid:{left:"1%",right:"1%",bottom:"50px",top:"40px",containLabel:!0},xAxis:{boundaryGap:!1,type:"category",splitLine:{show:!0,lineStyle:{type:"dotted",color:"#F0F0F0"}},axisLine:{show:!1},axisTick:{show:!1},data:[]},yAxis:{min:"dataMin",boundaryGap:!0,axisPointer:{show:!0},splitLine:{lineStyle:{type:"dotted",color:"#F0F0F0"},show:!0},axisLabel:{show:!0},axisLine:{show:!0},axisTick:{show:!1},type:"value"},textStyle:{color:"#5a5a68"},series:[],animationEasing:"elasticOut"}),seriesDefault:(0,X.fromJS)({data:[],type:"line",areaStyle:{opacity:1,color:i?new Q.graphic.LinearGradient(0,0,1,1,i.map(((e,t)=>({offset:t,color:e})))):[]},smooth:!1,symbolSize:7,name:""})},k={defaultOpts:(0,X.fromJS)({tooltip:{trigger:"axis",formatter:"{b}: {c} ({d}%)"},legend:{orient:"horizontal",x:"left",y:"top",data:[]},color:[],series:[]}),seriesDefault:(0,X.fromJS)({type:"pie",center:["50%","55%"],radius:["50%","75%"],avoidLabelOverlap:!1,animationType:"scale",animationEasing:"elasticOut",labelLine:{normal:{show:!0,smooth:.2,length:6,length2:6}},data:[]})},x={defaultOpts:(0,X.fromJS)({series:[]}),seriesDefault:(0,X.fromJS)({type:"map",data:[]})};(0,e.useEffect)((()=>(window.addEventListener("resize",w),()=>{window.removeEventListener("resize",w)})),[y]),(0,e.useEffect)((()=>{if(null==v?void 0:v.current)return b(Q.init(v.current)),()=>{y&&y.dispose()}}),[v.current]);const S=e=>{u&&u(e)};(0,e.useEffect)((()=>{let e;return y&&(e=Z(S,500),y.on("dataZoom",e),y.on("restore",e),y.on("click",e),y.on("mousemove",(e=>{e.data&&y.getZr().setCursorStyle("pointer")}))),()=>{y&&(y.off("dataZoom",e),y.off("restore",e),y.off("click",e))}}),[y,u]);const $=C(y),E=C(l),O=C(a),T=C(c);(0,e.useEffect)((()=>{var e,t,n,i,o,r;!y||(null==(t=null==(e=(0,X.fromJS)($))?void 0:e.equals)?void 0:t.call(e,(0,X.fromJS)(y)))&&(null==(i=null==(n=(0,X.fromJS)(E))?void 0:n.equals)?void 0:i.call(n,(0,X.fromJS)(l)))&&O===a&&(null==(r=(o=(0,X.fromJS)(T)).equals)?void 0:r.call(o,(0,X.fromJS)(c)))||(y.clear(),y.setOption(((e,t,n)=>{let i={};switch(e){case"pie":i=k.defaultOpts.mergeDeep((0,X.fromJS)(t)).toJS(),n.forEach((e=>{i.series.push(k.seriesDefault.mergeDeep((0,X.fromJS)(e)).toJS())}));break;case"geo":i=x.defaultOpts.mergeDeep((0,X.fromJS)(t)).toJS(),n.forEach((e=>{i.series.push(x.seriesDefault.mergeDeep((0,X.fromJS)(e)).toJS())}));break;default:i=A.defaultOpts.mergeDeep((0,X.fromJS)(t)).toJS(),Array.isArray(t.yAxis)&&(i.yAxis=t.yAxis),n.forEach(((e,t)=>{const n=Object.assign({},A.seriesDefault.toJS(),g[t],e);i.series.push(n)}))}return i})(a,l,c)),y.dispatchAction({type:"takeGlobalCursor",key:"dataZoomSelect",dataZoomSelectActive:!0}))}),[y,l,c,a]),(0,e.useEffect)((()=>{y&&s&&(y.dispatchAction({type:"highlight",seriesIndex:s.seriesIndex,dataIndex:s.dataIndex}),y.dispatchAction({type:"showTip",seriesIndex:s.seriesIndex,dataIndex:s.dataIndex}))}),[s]);const _=C(h),R=C(d);(0,e.useEffect)((()=>{!y||-1===h||-1===d||_===h&&R===d||y.dispatchAction({type:"dataZoom",startValue:h,endValue:d})}),[h,d]);const M=()=>!o||!1!==r&&!0!==r||r;return t().createElement("div",{className:"tyk-chart__wrapper"},o?null:t().createElement(te,null),t().createElement("div",{className:(()=>{const e=["tyk-chart"];return o||e.push("tyk-chart--loading-chart"),M()||e.push("tyk-chart--no-data"),e.join(" ")})(),style:(()=>{const{style:e}=n,t=e||{};return t.height||(t.height="300px"),t.width||(t.width="100%"),t})(),ref:v}),M()?null:m?m():t().createElement(ie,{theme:"info"},"No data to display"))};re.propTypes={areaStyleColors:r().instanceOf(Array),dataLoaded:r().bool,hasData:r().bool,highlight:r().oneOfType([r().number,r().string,r().instanceOf(Array)]),noDataComponent:r().func,zoomStart:r().number,zoomEnd:r().number,zoomColors:r().instanceOf(Object),option:r().instanceOf(Object),onChange:r().func,style:r().instanceOf(Object),type:r().string,title:r().string,series:r().instanceOf(Array),seriesConfig:r().instanceOf(Object)};const se=(0,e.memo)(re);var ae=n(745);const le=e=>{const{children:n,options:i,onClose:o,index:r}=e,s=Object.assign({theme:"success",delay:3e3},i),a=e=>{o(e),clearTimeout(void 0)};return k((()=>a(r)),s.delay),t().createElement(ie,{className:"tyk-toast__message",theme:s.theme,onClose:()=>a(r)},n)};le.propTypes={children:r().oneOfType([r().element,r().node,r().string]),options:r().instanceOf(Object),onClose:r().func,index:r().number};const ce=le;var ue=Object.defineProperty,he=Object.defineProperties,de=Object.getOwnPropertyDescriptors,pe=Object.getOwnPropertySymbols,ge=Object.prototype.hasOwnProperty,me=Object.prototype.propertyIsEnumerable,fe=(e,t,n)=>t in e?ue(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,ye=(e,t)=>{for(var n in t||(t={}))ge.call(t,n)&&fe(e,n,t[n]);if(pe)for(var n of pe(t))me.call(t,n)&&fe(e,n,t[n]);return e};const be=n=>{const[i,o]=(0,e.useState)({}),{notify:r}=n,s=(e,t)=>{const n=Math.floor(1e6*Math.random());o((i=>{return o=ye({},i),he(o,de({[n]:{message:e,options:t}}));var o}))};(0,e.useEffect)((()=>{r(s)}),[i]);const a=e=>{delete ye({},i)[e],o((t=>{const n=t,{[e]:i}=n;var o;return((e,t)=>{var n={};for(var i in e)ge.call(e,i)&&t.indexOf(i)<0&&(n[i]=e[i]);if(null!=e&&pe)for(var i of pe(e))t.indexOf(i)<0&&me.call(e,i)&&(n[i]=e[i]);return n})(n,[(o=e,"symbol"==typeof o?o:o+"")])}))};return t().createElement("div",{className:"tyk-toast__container"},Object.keys(i).map((e=>i[e]?t().createElement(ce,{options:i[e].options,onClose:a.bind(null,e),index:e,key:e},i[e].message):null)))};be.propTypes={notify:r().func};const ve=be;var we=Object.defineProperty,Ae=Object.defineProperties,Ce=Object.getOwnPropertyDescriptors,ke=Object.getOwnPropertySymbols,xe=Object.prototype.hasOwnProperty,Se=Object.prototype.propertyIsEnumerable,$e=(e,t,n)=>t in e?we(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Ee=(e,t)=>{for(var n in t||(t={}))xe.call(t,n)&&$e(e,n,t[n]);if(ke)for(var n of ke(t))Se.call(t,n)&&$e(e,n,t[n]);return e},Oe=(e,t)=>Ae(e,Ce(t));const Te=new class{constructor(){var e;$e(this,"symbol"!=typeof(e="bindNotify")?e+"":e,(e=>{this.createNotification=e}));const n=document.createElement("div");n.className="tyk-toast",document.body.appendChild(n),(0,ae.s)(n).render(t().createElement(ve,{notify:this.bindNotify}))}notify(e,t){this.createNotification&&this.createNotification(e,t)}danger(e,t){this.notify(e,Oe(Ee({},t),{theme:"danger"}))}success(e,t){this.notify(e,Oe(Ee({},t),{theme:"success"}))}warning(e,t){this.notify(e,Oe(Ee({},t),{theme:"warning"}))}info(e,t){this.notify(e,Oe(Ee({},t),{theme:"info"}))}},_e=Te;var Re=Object.defineProperty,Me=Object.getOwnPropertySymbols,Le=Object.prototype.hasOwnProperty,Be=Object.prototype.propertyIsEnumerable,Ne=(e,t,n)=>t in e?Re(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;const Ie=n=>{const{display:i,copy:o,children:r,onCopy:s}=n,a=(0,e.createRef)(),l=(0,e.useCallback)((()=>{if(s&&s(),!window.navigator.clipboard)return a.current.select(),document.execCommand("copy"),void _e.notify("copied",{theme:"success"});window.navigator.clipboard.writeText(o),_e.notify("copied",{theme:"success"})}),[s,a]);return t().createElement(e.Fragment,null,t().createElement(n.element,((e,t)=>{for(var n in t||(t={}))Le.call(t,n)&&Ne(e,n,t[n]);if(Me)for(var n of Me(t))Be.call(t,n)&&Ne(e,n,t[n]);return e})({onClick:l,onKeyUp:l},n),r||i),window.navigator.clipboard?null:t().createElement("textarea",{ref:a,className:"tyk-copy-to-clipboard",name:"copy",value:o},o))};Ie.propTypes={onCopy:r().func,copy:r().string.isRequired,display:r().string,children:r().oneOfType([r().element,r().string,r().object,r().node])};const Pe=Ie;var De=n(137),Fe=n.n(De);function We({children:e}){return t().createElement("div",{className:"tyk-modal__footer"},e)}We.propTypes={children:r().oneOfType([r().element,r().node,r().string])};const He=We;function je({children:e}){return t().createElement("div",{className:"tyk-modal__body"},e)}je.propTypes={children:r().oneOfType([r().element,r().node,r().string])};const ze=je;var Ue=Object.defineProperty,Ve=Object.getOwnPropertySymbols,Ge=Object.prototype.hasOwnProperty,Ke=Object.prototype.propertyIsEnumerable,qe=(e,t,n)=>t in e?Ue(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;function Ye(e){var n=e,{children:i,theme:o="none",disableCloseCommands:r=!1,opened:s=!1,onClose:a=(()=>{}),size:l="md",className:c="",showBackdrop:u=!0}=n,h=((e,t)=>{var n={};for(var i in e)Ge.call(e,i)&&t.indexOf(i)<0&&(n[i]=e[i]);if(null!=e&&Ve)for(var i of Ve(e))t.indexOf(i)<0&&Ke.call(e,i)&&(n[i]=e[i]);return n})(n,["children","theme","disableCloseCommands","opened","onClose","size","className","showBackdrop"]);const d=["tyk-modal",`tyk-modal--theme-${o}`,s&&"opened"].concat(c.split(" ")).filter(Boolean).join(" "),p=["tyk-modal__backdrop",s&&"opened"].filter(Boolean).join(" "),m={success:"check",warning:"warning",danger:"delete"}[o];return t().createElement(t().Fragment,null,Fe().createPortal(t().createElement(A.CSSTransition,{in:s,timeout:100,classNames:"appear"},t().createElement("div",((e,t)=>{for(var n in t||(t={}))Ge.call(t,n)&&qe(e,n,t[n]);if(Ve)for(var n of Ve(t))Ke.call(t,n)&&qe(e,n,t[n]);return e})({className:d},h),t().createElement("div",{className:`tyk-modal__dialog tyk-modal--${l}`},t().createElement("div",{className:"tyk-modal__content"},"none"!==o&&t().createElement("div",{className:"tyk-modal__theme-header"},t().createElement(g,{family:"tykon",type:m})),i)))),document.querySelector("body")),u&&Fe().createPortal(t().createElement(A.CSSTransition,{in:s,timeout:100,classNames:"fade"},t().createElement("button",{className:p,onClick:()=>!r&&a(),onKeyDown:()=>{},type:"button","aria-label":"Close"})),document.querySelector("body")))}Ye.Body=ze,Ye.Footer=He,Ye.Header=({children:e})=>(console.warn("%cModal.Header%c is deprecated.","font-weight: bold",""),t().createElement("div",{className:"tyk-modal__header"},e)),Ye.Title=({children:e})=>(console.warn("%cModal.Title%c is deprecated.","font-weight: bold",""),t().createElement("h4",{className:"tyk-modal__title"},e)),Ye.propTypes={children:r().oneOfType([r().element,r().node,r().string]),className:r().string,theme:r().string,disableCloseCommands:r().bool,opened:r().bool,onClose:r().func,size:r().string,showBackdrop:r().bool};const Je=Ye;function Qe(n){const{children:i,title:o,description:r,confirmBtnText:s="Confirm",cancelBtnText:a="Cancel"}=n,[l,c]=(0,e.useState)(!1),[u,h]=(0,e.useState)(null),[d,p]=(0,e.useState)(null),g=()=>{c(!1),h(null),p(null)},m=()=>{d&&d(),g()};return t().createElement(t().Fragment,null,i(((e,t,n)=>(...i)=>{n&&n(...i),c(!0),h((()=>()=>e(...i))),t&&p((()=>()=>t(...i)))})),t().createElement(Je,{opened:l,onClose:m},t().createElement(Je.Body,null,t().createElement("h4",null,o),r),t().createElement(Je.Footer,null,t().createElement(q,{onClick:m,theme:"default"},a),t().createElement(q,{onClick:()=>{u(),g()},theme:"success"},s))))}Qe.propTypes={confirmBtnText:r().string,cancelBtnText:r().string,title:r().string,description:r().string,children:r().oneOfType([r().element,r().string,r().object,r().node,r().func])};const Xe=Qe;function Ze({children:n,className:i,showShadow:o}){const r=(0,e.useRef)(null),s=(0,e.useCallback)((()=>{const e=r.current;e&&(window.scrollY?e.classList.add("tyk-fixed-wrapper--scrolled"):e.classList.remove("tyk-fixed-wrapper--scrolled"))}),[r.current]),a=(0,e.useCallback)(Z(s,100),[s]);return(0,e.useEffect)((()=>(o&&window.addEventListener("scroll",a),()=>{window.removeEventListener("scroll",a)})),[a,o]),t().createElement("div",{className:`tyk-fixed-wrapper ${i}`,ref:r},n)}Ze.propTypes={children:r().oneOfType([r().element,r().node,r().string]),className:r().string,showShadow:r().bool},Ze.defaultProps={className:""};const et=Ze;function tt({children:n,hasMore:i,initialLoad:o,loadMore:r,pageNumber:s,refChild:a}){const[l,c]=(0,e.useState)(!1),u=(0,e.useRef)(null),h=E(a);(0,e.useEffect)((()=>{o&&"function"==typeof r&&(c(!1),r(s))}),[o]);const d=(0,e.useCallback)((()=>{if(!u.current)return!1;const{clientHeight:e,scrollTop:t}=u.current;return i&&(e+Math.round(t)===h.height||e>=h.height)}),[u,h.height]),p=(0,e.useCallback)((()=>{i&&"function"==typeof r?(r(s+1),c(!0)):c(!1)}),[i,s]),g=C(s),m=(0,e.useCallback)(Z((()=>{d()&&g<=s&&p()}),200),[p,d]);(0,e.useEffect)((()=>{var e;return null==(e=u.current)||e.addEventListener("scroll",m),()=>{var e;return null==(e=u.current)?void 0:e.removeEventListener("scroll",m)}}),[u,m]),(0,e.useEffect)((()=>{g>0&&0===s&&(u.current.scrollTop=0)}),[u,s]);const f=C(h);return(0,e.useEffect)((()=>{h&&f&&h.height!==f.height&&!0===l&&c(!1)}),[l,h.height]),(0,e.useEffect)((()=>{a&&h.heightt in e?it(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;function lt({element:n,size:i="auto",forceDisplay:o="auto",displayAxis:r="auto",preferredPosition:s,offset:a=0,className:l,children:c,infiniteScrollerConfig:u},h){const d=(0,e.useRef)(null),p=h||d,g=(0,e.useRef)(null);return(0,e.useEffect)((()=>{window.requestAnimationFrame((function e(){(function(){const e="auto"!==o?o:function(){const e=n.current,t=p.current;if(!t)return(null!=s?s:"vertical"===r)?"bottom":"right";const{left:i,top:o}=e.getBoundingClientRect(),a=o,l=window.innerHeight-o-e.offsetHeight,c=i,u=window.innerWidth-i-e.offsetWidth,h=a>t.scrollHeight,d=l>t.scrollHeight,g=c>t.offsetWidth,m=u>t.offsetWidth,f=i+e.offsetWidth/2-t.offsetWidth/2>0,y=o+e.offsetHeight/2-t.scrollHeight/2>0;return"vertical"===r||"auto"===r&&(h||d)&&f?"top"===s&&h?"top":"bottom"===s&&d||d||l>a?"bottom":"top":"horizontal"===r?"left"===s&&g?"left":"right"===s&&g||m||u>c?"right":"left":h&&f?"top":d&&f?"bottom":m&&y?"right":g&&y?"left":null!=s?s:"bottom"}(),t=n.current,l=p.current;if(!t||!l)return;const c=t.getBoundingClientRect();if("top"===e){const e=c.top-l.offsetHeight-a;l.style.top=`${e}px`,l.style.left="auto"===i?c.left+t.offsetWidth/2-l.offsetWidth/2+"px":`${c.left}px`,"matchElement"===i?l.style.width=`${t.offsetWidth}px`:"function"==typeof i&&(l.style.width=`${i(t.offsetWidth)}px`),l.style.maxHeight=c.top-a+"px"}if("bottom"===e&&(l.style.top=`${c.bottom+a}px`,l.style.left="auto"===i?c.left+t.offsetWidth/2-l.offsetWidth/2+"px":`${c.left}px`,"matchElement"===i?l.style.width=`${t.offsetWidth}px`:"function"==typeof i&&(l.style.width=`${i(t.offsetWidth)}px`),l.style.maxHeight=window.innerHeight-c.bottom-a+"px"),"left"===e){const e=c.top+t.offsetHeight/2-l.offsetHeight/2;l.style.top="auto"===i?`${e}px`:`${c.top}px`,l.style.left=c.left-l.offsetWidth-a+"px","matchElement"===i?l.style.height=`${t.offsetHeight}px`:"function"==typeof i&&(l.style.height=`${i(t.offsetHeight)}px`),l.style.maxWidth=c.left-a+"px"}if("right"===e){const e=c.top+t.offsetHeight/2-l.offsetHeight/2;l.style.top="auto"===i?`${e}px`:`${c.top}px`,l.style.left=`${c.left+t.offsetWidth+a}px`,"matchElement"===i?l.style.height=`${t.offsetHeight}px`:"function"==typeof i&&(l.style.height=`${i(t.offsetHeight)}px`),l.style.maxWidth=window.innerWidth-c.left-t.offsetWidth-a+"px"}})(),window.requestAnimationFrame(e)}))}),[]),(0,De.createPortal)(t().createElement("div",{className:`floating-container ${l||""}`,ref:p},t().createElement(nt,((e,t)=>{for(var n in t||(t={}))rt.call(t,n)&&at(e,n,t[n]);if(ot)for(var n of ot(t))st.call(t,n)&&at(e,n,t[n]);return e})({refChild:g},u),t().createElement("div",{className:"floating-container__content-wrapper",ref:g},c))),document.querySelector("body"))}lt.propTypes={element:r().instanceOf(Object),className:r().string,size:r().oneOfType([r().oneOf(["auto","matchElement"]),r().func]),offset:r().number,forceDisplay:r().oneOf(["auto","top","bottom","left","right"]),displayAxis:r().oneOf(["auto","vertical","horizontal"]),preferredPosition:r().oneOf(["top","bottom","left","right"]),infiniteScrollerConfig:r().instanceOf(Object)};const ct=(0,e.forwardRef)(lt);function ut({children:e}){return t().createElement("div",{className:"tyk-info-note"},t().createElement(ie,{theme:"info"},e))}ut.propTypes={children:r().oneOfType([r().element,r().node,r().string])};const ht=ut,dt=e=>{const{className:n,children:i}=e;return t().createElement("li",{className:n},i)};dt.propTypes={children:r().oneOfType([r().arrayOf(r().node),r().node,r().element,r().string]),className:r().string},dt.defaultProps={className:""};const pt=dt,gt=e=>{const{className:n,children:i,label:o,labelwidth:r,theme:s,style:a}=e;return t().createElement("div",{className:"tyk-list__wrapper "+(r?"tyk-list--with-inline-label":"")},void 0!==o?t().createElement("label",{style:{flexBasis:r||"auto"}},o):null,t().createElement("ul",{className:(()=>{let e=["tyk-list"];return s&&e.push(`tyk-list--${s}`),n&&(e=e.concat(n.split(" "))),e.join(" ")})(),style:(()=>{const e=(0,X.fromJS)(a).toJS();return r&&(e.flexBasis=`calc(100% - ${r} - 20px)`),e})()},i))};gt.propTypes={children:r().oneOfType([r().arrayOf(r().node),r().node,r().element,r().string]),className:r().string,label:r().string,labelwidth:r().string,theme:r().string,style:r().instanceOf(Object)},gt.defaultProps={theme:"default",style:{}},gt.Item=pt;const mt=gt;function ft({align:e="center",children:n,left:i,right:o,title:r,pre:s,subtitle:a,withTabs:l}){const c=a?t().createElement("p",{className:"font-family-medium"},a):null;return t().createElement("section",{className:"tyk-nav-bar "+(l?"tyk-nav-bar__with-tabs":"")},t().createElement("div",{className:`tyk-nav-bar__wrapper tyk-nav-bar--align-${e}`},s&&t().createElement("div",{className:"tyk-nav-bar__pre"},s),r?t().createElement("div",null,t().createElement("h1",null,r),c):c,t().createElement("div",{className:"tyk-nav-bar__container"},i&&t().createElement("div",{className:"tyk-nav-bar__left"},i),o&&t().createElement("div",{className:"tyk-nav-bar__right"},o))),n)}ft.propTypes={align:r().string,children:r().oneOfType([r().arrayOf(r().node),r().node,r().element,r().string]),title:r().string,subtitle:r().string,pre:r().oneOfType([r().element,r().node]),left:r().oneOfType([r().element,r().node]),right:r().oneOfType([r().element,r().node]),withTabs:r().bool};const yt=ft;function bt({children:e}){return t().createElement("li",{className:"tyk-navigation-item"},e)}bt.propTypes={children:r().oneOfType([r().arrayOf(r().node),r().node,r().element,r().string])};const vt=bt;function wt({children:e}){return t().createElement("ul",{className:"tyk-navigation"},e)}wt.propTypes={children:r().oneOfType([r().arrayOf(r().node),r().node,r().element,r().string])},wt.Item=vt;const At=wt,Ct=(0,e.createContext)();var kt=Object.defineProperty,xt=Object.defineProperties,St=Object.getOwnPropertyDescriptors,$t=Object.getOwnPropertySymbols,Et=Object.prototype.hasOwnProperty,Ot=Object.prototype.propertyIsEnumerable,Tt=(e,t,n)=>t in e?kt(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,_t=(e,t)=>{for(var n in t||(t={}))Et.call(t,n)&&Tt(e,n,t[n]);if($t)for(var n of $t(t))Ot.call(t,n)&&Tt(e,n,t[n]);return e},Rt=(e,t)=>xt(e,St(t));function Mt(n){var i=n,{children:o,noPadding:r,className:s}=i,a=((e,t)=>{var n={};for(var i in e)Et.call(e,i)&&t.indexOf(i)<0&&(n[i]=e[i]);if(null!=e&&$t)for(var i of $t(e))t.indexOf(i)<0&&Ot.call(e,i)&&(n[i]=e[i]);return n})(i,["children","noPadding","className"]);const l=(0,e.useCallback)((()=>["tyk-panel__body",s,r&&"no-padding"].filter(Boolean).join(" ")),[s,r]);return t().createElement(Ct.Consumer,null,(e=>e.collapsable?t().createElement(I,Rt(_t({},a),{collapsed:e.collapsed,className:l()}),o):t().createElement("div",Rt(_t({},a),{className:l()}),o)))}Mt.propTypes={children:r().oneOfType([r().element,r().node,r().string]),noPadding:r().bool,className:r().string};const Lt=Mt,Bt=e=>{const{children:n}=e;return t().createElement("div",{className:"tyk-panel__footer"},n)};Bt.propTypes={children:r().oneOfType([r().element,r().node,r().string])};const Nt=Bt;var It=Object.defineProperty;class Pt extends e.Component{getCssClasses(e){const{className:t}=this.props;let n=["tyk-panel__header"];return e.collapsable&&n.push("collapsable"),t&&(n=n.concat(t.split(" "))),n.join(" ")}render(){const{children:e}=this.props;return t().createElement(Ct.Consumer,null,(n=>{const i="blank"===n.theme?"h3":"div",o=n.collapsed?"chevron-down":"chevron-up";return t().createElement(i,{className:this.getCssClasses(n),onClick:n.collapsable?n.onToggle:void 0},e,n.collapsable?t().createElement("div",{className:`collapsable__arrow-${n.collapsibleIconPosition}`},t().createElement(g,{type:o})):null)}))}}((e,t,n)=>{t in e?It(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n})(Pt,"propTypes"+"",{children:r().oneOfType([r().element,r().node,r().string]).isRequired,className:r().string});const Dt=n=>{const{children:i,className:o,collapsed:r,collapsable:s,theme:a,onToggleCollapse:l,collapsibleIconPosition:c="right"}=n,[u,h]=(0,e.useState)(r||!1);(0,e.useEffect)((()=>{r!==u&&h(r)}),[r]);const d=()=>{h(!u),l&&l(!u)};return t().createElement("div",{className:(()=>{let e=["tyk-panel"];const t=`tyk-panel--${a||"default"}`,n=`tyk-panel__icon-collapse--${c}`;return e.push(t),e.push(n),o&&(e=e.concat(o.split(" "))),u&&e.push("tyk-panel--collapsed"),e.join(" ")})()},t().createElement(Ct.Provider,{value:{collapsable:s,collapsed:u,onToggle:d,theme:a,collapsibleIconPosition:c}},"function"==typeof i?i({toggleCollapse:d}):i))};Dt.propTypes={children:r().oneOfType([r().func,r().element,r().node,r().string]),className:r().string,collapsable:r().bool,collapsibleIconPosition:r().string,collapsed:r().bool,theme:r().string,onToggleCollapse:r().func},Dt.Body=Lt,Dt.Footer=Nt,Dt.Header=Pt;const Ft=Dt,Wt=e=>{const{children:n,className:i,theme:o}=e;return t().createElement("div",{className:(()=>{let e=["tyk-pill",...o.split(" ").map((e=>`tyk-pill--${e}`))];return i&&(e=e.concat(i)),e.join(" ")})()},n)};Wt.propTypes={children:r().oneOfType([r().arrayOf(r().node),r().node,r().element,r().string]),className:r().string,theme:r().string},Wt.defaultProps={theme:"default"};const Ht=Wt;var jt,zt,Ut,Vt,Gt,Kt,qt,Yt,Jt=(e,t,n)=>{if(!t.has(e))throw TypeError("Cannot "+n)},Qt=(e,t,n)=>(Jt(e,t,"read from private field"),n?n.call(e):t.get(e)),Xt=(e,t,n)=>{if(t.has(e))throw TypeError("Cannot add the same private member more than once");t instanceof WeakSet?t.add(e):t.set(e,n)},Zt=(e,t,n,i)=>(Jt(e,t,"write to private field"),i?i.call(e,n):t.set(e,n),n);class en{constructor(){Xt(this,jt,null),Xt(this,zt,null),Xt(this,Ut,null),Xt(this,Vt,null),Xt(this,Gt,[]),Xt(this,Kt,[]),Xt(this,qt,[]),Xt(this,Yt,!1)}on(e,t){let n=null;"onHeightChange"===e?n=Qt(this,Gt):"onDragStart"===e?n=Qt(this,Kt):"onDragEnd"===e&&(n=Qt(this,qt)),n&&this.addListener(n,t)}off(e,t){let n=null;"onHeightChange"===e?n=Qt(this,Gt):"onDragStart"===e?n=Qt(this,Kt):"onDragEnd"===e&&(n=Qt(this,qt)),n&&this.removeListener(n,t)}setRefs(e,t,n){(Qt(this,zt)||Qt(this,Ut)||Qt(this,Vt))&&this.unbindEvents(),Zt(this,Vt,e),Zt(this,zt,t),Zt(this,Ut,n),Zt(this,jt,null),this.bindEvents()}bindEvents(){this.ensureRefs("bindEvents"),Qt(this,Ut).addEventListener("mousedown",this.onMouseDown.bind(this)),document.addEventListener("mousemove",this.onMouseMove.bind(this)),document.addEventListener("mouseup",this.onMouseUp.bind(this))}getHeight(){return this.ensureRefs("getHeight"),Qt(this,zt).getBoundingClientRect().height}onMouseDown(e){this.ensureRefs("onMouseDown"),Zt(this,jt,{mouseDown:!0,initialRect:Qt(this,zt).getBoundingClientRect(),initialEvent:e})}onMouseMove(e){if(this.ensureRefs("onMouseMove"),!Qt(this,jt))return;if(!this.isPrimaryMouseButtonDown(e))return void this.onMouseUp();Qt(this,Yt)||(Zt(this,Yt,!0),this.onDragStart.bind(this)());const t=Qt(this,jt).initialEvent.y-e.y,n=Math.ceil(Qt(this,jt).initialRect.height+t);this.setHeight(`${n}px`,"mousemove")}notifyListeners(e,t){e&&Array.isArray(e)&&e.length&&e.forEach((e=>{"function"==typeof e&&e(t)}))}addListener(e,t){e&&Array.isArray(e)&&"function"==typeof t&&e.push(t)}removeListener(e,t){if(e&&Array.isArray(e)&&"function"==typeof t&&e.length){const n=e.indexOf(t);n>-1&&e.splice(n,1)}}onDragEnd(){Qt(this,Yt)&&this.notifyListeners(Qt(this,qt),this.getHeight())}onDragStart(){this.notifyListeners(Qt(this,Kt),this.getHeight())}isPrimaryMouseButtonDown(e){return 1===(void 0!==e.buttons?e.buttons:e.which)}onMouseUp(){Zt(this,jt,null),this.onDragEnd.bind(this)(),Zt(this,Yt,!1)}setHeight(e){let t=e;this.ensureRefs("setHeight"),"number"==typeof t&&(t+="px"),Qt(this,zt).style.height=t,this.notifyListeners(Qt(this,Gt),this.getHeight())}ensureRefs(e){if(!Qt(this,zt)||!Qt(this,Ut)||!Qt(this,Vt))throw new Error(`${e}: Wrapper, panel, and gutter elements are required. Use setRefs method first.`)}isHidden(){return this.ensureRefs("isHidden"),"hidden"===Qt(this,Vt).style.visibility}hide(){this.ensureRefs("hide"),Qt(this,Vt).style.visibility="hidden"}show(){this.ensureRefs("show"),Qt(this,Vt).style.visibility="visible"}unbindEvents(){Zt(this,Gt,[]),Zt(this,Kt,[]),Zt(this,qt,[]),Qt(this,Ut).removeEventListener("mousedown",this.onMouseDown.bind(this)),document.removeEventListener("mousemove",this.onMouseMove.bind(this)),document.removeEventListener("mouseup",this.onMouseUp.bind(this))}deinit(){this.unbindEvents()}}function tn({children:e}){return t().createElement(t().Fragment,null,e)}function nn({children:e}){return t().createElement(t().Fragment,null,e)}jt=new WeakMap,zt=new WeakMap,Ut=new WeakMap,Vt=new WeakMap,Gt=new WeakMap,Kt=new WeakMap,qt=new WeakMap,Yt=new WeakMap,tn.propTypes={children:r().instanceOf({})},nn.propTypes={children:r().instanceOf({})};const on=(...e)=>e.map((e=>(e||"").trim())).filter(Boolean).join(" "),rn=(0,e.forwardRef)((({children:n,height:i,onHeightChange:o=null,onDragStart:r=null,onDragEnd:s=null,style:a=null,parentSelector:l=null,contentStyle:c,contentClassName:u,gutterClassName:h,wrapperClassName:d},p)=>{const g=(0,e.useRef)(null),m=(0,e.useRef)(null),f=(0,e.useRef)(null),y=(0,e.useRef)(new en).current;(0,e.useEffect)((()=>{if(g.current&&m.current&&f.current&&y)return y.setRefs(f.current,g.current,m.current),y.on("onHeightChange",o),y.on("onDragStart",r),y.on("onDragEnd",s),y.setHeight(i,"initialize"),()=>{y.unbindEvents()}}),[]),(0,e.useImperativeHandle)(p,(()=>{const e=e=>e.bind(y);return{getHeight:e(y.getHeight),setHeight:e(y.setHeight),hide:e(y.hide),show:e(y.show),isHidden:e(y.isHidden),deinit:e(y.deinit),on:e(y.on),off:e(y.off)}}),[]);let b=null,v=null;const w=[];t().Children.forEach(n,(e=>{e&&t().isValidElement(e)&&(e.type===tn?b=e:e.type===nn?v=e:w.push(e))}));const A=t().createElement("div",{className:on("tyk-ui-reveal-wrapper",d||"cem"),ref:f,style:a},t().createElement("div",{className:"tyk-ui-reveal-wrapper__hole"}),t().createElement("div",{ref:m,className:on("tyk-ui-reveal-wrapper__gutter",h)},t().createElement("div",{className:"tyk-ui-reveal-wrapper__gutter__headerleft"},b),t().createElement("div",{className:"tyk-ui-reveal-wrapper__gutter__logo"}," "),t().createElement("div",{className:"tyk-ui-reveal-wrapper__gutter__headerright"},v)),t().createElement("div",{ref:g,className:on("tyk-ui-reveal-wrapper__panel",u),style:c},w));if(l)return(0,De.createPortal)(A,document.querySelector(l))}));rn.propTypes={children:r().instanceOf({}),height:r().string,onHeightChange:r().func,onDragStart:r().func,onDragEnd:r().func,parentSelector:r().string,style:r().instanceOf({}),contentStyle:r().instanceOf({}),contentClassName:r().string,gutterClassName:r().string,wrapperClassName:r().string},rn.HeaderLeft=tn,rn.HeaderRight=nn;const sn=rn,an=(0,e.createContext)(),ln=(0,e.createContext)();var cn=Object.defineProperty,un=Object.getOwnPropertySymbols,hn=Object.prototype.hasOwnProperty,dn=Object.prototype.propertyIsEnumerable,pn=(e,t,n)=>t in e?cn(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,gn=(e,t)=>{for(var n in t||(t={}))hn.call(t,n)&&pn(e,n,t[n]);if(un)for(var n of un(t))dn.call(t,n)&&pn(e,n,t[n]);return e};const mn=n=>{const{addTab:i,hideTab:o,updateTab:r,showTab:s,children:a,selectedPath:l,tabData:c,tabsId:u,tabExists:h,path:d,rendered:p,hideTabContent:g,tabs:m}=n;(0,e.useEffect)((()=>{const e=gn({},c);h(d)||i(e,d)}),[c,d]);const f=C(c);return(0,e.useEffect)((()=>{if(h(d)&&(null==c?void 0:c.title)&&((null==f?void 0:f.title)!==(null==c?void 0:c.title)||f.selected!==c.selected)){const e=gn({},c);r(e,d)}}),[c,d,f,m]),(0,e.useEffect)((()=>(s(d),()=>o(d))),[]),(0,e.useMemo)((()=>!!Object.keys(m).length&&!g&&!1!==m[c.id].show&&(p?l&&l.indexOf(c.id)>-1:h(d))),[g,p,l,c,m])?t().createElement("div",{key:c.id,className:"tyk-tab__content",style:{display:l&&l.indexOf(c.id)>-1?"block":"none"}},t().createElement(ln.Provider,{value:{path:d,tabsId:u}},a)):null};mn.propTypes={addTab:r().func,updateTab:r().func,hideTab:r().func,showTab:r().func,children:r().oneOfType([r().arrayOf(r().node),r().node,r().element,r().string]),path:r().instanceOf(Array),hideTabContent:r().bool,rendered:r().bool,selectedPath:r().instanceOf(Array),tabExists:r().func,tabsId:r().string,tabData:r().instanceOf(Object),tabs:r().instanceOf(Object)};const fn=mn,yn=n=>{const{id:i}=n,o=(0,e.useContext)(an),r=(0,e.useContext)(ln),{tabExists:s,selectedPath:a,addTab:l,updateTab:c,hideTab:u,showTab:h,rendered:d,hideTabContent:p,tabs:g}=o,{children:m}=n,[f,y]=(0,e.useState)("");return(0,e.useEffect)((()=>{let e;e=r&&f&&r.tabsId===o.id?r.path.concat([i]):[i],y(e)}),[r]),f?t().createElement(e.Fragment,null,t().createElement(fn,{addTab:l,updateTab:c,hideTab:u,showTab:h,tabExists:s,tabData:n,path:f,tabsId:o.id,selectedPath:a,rendered:d,hideTabContent:p,tabs:g},m)):null};yn.propTypes={children:r().oneOfType([r().arrayOf(r().node),r().node,r().element,r().string]),id:r().string},yn.defaultProps={};const bn=yn;var vn=Object.defineProperty,wn=Object.getOwnPropertySymbols,An=Object.prototype.hasOwnProperty,Cn=Object.prototype.propertyIsEnumerable,kn=(e,t,n)=>t in e?vn(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,xn=(e,t)=>{for(var n in t||(t={}))An.call(t,n)&&kn(e,n,t[n]);if(wn)for(var n of wn(t))Cn.call(t,n)&&kn(e,n,t[n]);return e};const Sn=n=>{const{children:i,className:o,id:r,onTabChange:s,type:a,hideTabContent:l}=n,[c,u]=(0,e.useState)({}),[h,d]=(0,e.useState)([]),[p,m]=(0,e.useState)(!1),[f,y]=(0,e.useState)(null);(0,e.useEffect)((()=>{d(f)}),[f]);const b=(e,t)=>{const n=e.slice(0);let i=!0;t.collapsible&&(n.push(Object.keys(t.tabs)[0]),i=!1),u((t=>{let n=Object.assign({},t);return n=((e,t)=>{let n=Object.assign({},e);const i=t.slice(0);for(;i.length>1;)n=n[i.shift()];const o=i.shift();return void 0===n[o].collapsed?n[o].collapsed=!0:n[o].collapsed=!n[o].collapsed,n})(n,e),n})),d(n),m(i),s&&s(t)},v=e=>{const t=[];return h&&h.indexOf(e)>-1&&t.push("active"),t.join(" ")},w=(e,n)=>e?t().createElement("ul",null,Object.keys(e).map(((i,o)=>{const r=n?n.concat([e[i].id]):[e[i].id],s=e[i].collapsed?"chevron-up":"chevron-down";return!1===e[i].show?null:t().createElement("li",{className:v(e[i].id),key:e[i].id},t().createElement("button",{type:"button",onClick:b.bind(null,r,e[i]),onKeyDown:b.bind(null,r,e[i]),tabIndex:o},e[i].title,e[i].collapsible?t().createElement(g,{className:"collapsable-arrow",type:s}):null),e[i].collapsible?t().createElement(I,{collapsed:e[i].collapsed},w(e[i].tabs,r)):w(e[i].tabs,r))}))):null,A=e=>{u((t=>{const n=xn({},t);return n[e].show=!1,n}))},C=e=>{u((t=>{const n=xn({},t);return n[e].show=!0,n}))};return t().createElement("div",{className:(()=>{let e=["tyk-tabs"];return e.push(`tyk-tabs--${a||"default"}`),o&&(e=e.concat(o.split(" "))),e.join(" ")})()},w(c),t().createElement(an.Provider,{value:{id:r,addTab:(e,t)=>{u((n=>((e,t,n)=>{let i=Object.assign({},e);const o=Object.assign({},n),r=t.slice(0);for(;r.length>1;)i=i[r.shift()],i||(i={});return o.tempPath=r,i[r.shift()]=o,i})(xn({},n),t,e))),e.selected&&y(t)},hideTab:A,updateTab:(e,t)=>{u((t=>{const n=xn({},t);return n[e.id]=e,n})),e.selected&&b(t,e)},showTab:C,tabExists:e=>{let t=xn({},c);const n=e.slice(0);for(;n.length>1;)t=t[n.shift()];const i=n.shift();return!(!t||!t[i])},selectedPath:h,rendered:p,hideTabContent:l,tabs:c}},"function"==typeof i?i({hideTab:A,showTab:C}):i))};Sn.propTypes={className:r().string,children:r().oneOfType([r().arrayOf(r().node),r().node,r().element,r().string]),hideTabContent:r().bool,id:r().string,onTabChange:r().func,type:r().string},Sn.Tab=bn;const $n=Sn;var En=Object.defineProperty,On=Object.getOwnPropertySymbols,Tn=Object.prototype.hasOwnProperty,_n=Object.prototype.propertyIsEnumerable,Rn=(e,t,n)=>t in e?En(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Mn=(e,t)=>{for(var n in t||(t={}))Tn.call(t,n)&&Rn(e,n,t[n]);if(On)for(var n of On(t))_n.call(t,n)&&Rn(e,n,t[n]);return e};function Ln(n){var i=n,{render:o,className:r,children:s,position:a="auto",style:l,icon:c=!1,closable:u,isOpened:h=!1,additionalClickParents:d=[]}=i,p=((e,t)=>{var n={};for(var i in e)Tn.call(e,i)&&t.indexOf(i)<0&&(n[i]=e[i]);if(null!=e&&On)for(var i of On(e))t.indexOf(i)<0&&_n.call(e,i)&&(n[i]=e[i]);return n})(i,["render","className","children","position","style","icon","closable","isOpened","additionalClickParents"]);const[m,f]=(0,e.useState)(!1),y=(0,e.useRef)(null),b=(0,e.useRef)(null),v=u?{onClick:()=>f(!0)}:{onMouseEnter:()=>f(!0),onMouseLeave:()=>f(!1),onFocus:()=>f(!0),onBlur:()=>f(!1)},w=(0,e.useCallback)((e=>{[...d,b.current].some((t=>{var n;return null==(n=null==t?void 0:t.contains)?void 0:n.call(t,e.target)}))||f(!1)}),[d]);(0,e.useEffect)((()=>(document.addEventListener("click",w,!0),()=>document.removeEventListener("click",w,!0))),[w]),(0,e.useEffect)((()=>{f(h)}),[h]);const A=["tyk-tooltip",r].filter(Boolean).join(" ");return t().createElement("div",Mn(Mn({className:"tyk-tooltip__wrapper",style:Mn({display:"inline-block"},l),ref:y},v),p),s,m&&t().createElement(ct,{element:y,forceDisplay:a,preferredPosition:"top",offset:20},t().createElement("div",{className:A,ref:b},c&&(!0===c?t().createElement(g,{family:"tykon",type:"help"}):c),t().createElement("div",{className:"tyk-tooltip__content"},o),u&&t().createElement(g,{family:"tykon",type:"x",onClick:e=>{e.stopPropagation(),f(!1)}}))))}Ln.propTypes={children:r().node.isRequired,style:r().instanceOf(Object),position:r().string,render:r().oneOfType([r().node,r().string]),className:r().string,icon:r().oneOfType([r().bool,r().node]),closable:r().bool,isOpened:r().bool,additionalClickParents:r().instanceOf(Array)};const Bn=Ln;function Nn({text:e,limit:n,position:i}){return e.length>n?t().createElement(Bn,{render:e,position:i},e.substring(0,n),"..."):e}Nn.propTypes={text:r().string,limit:r().number,position:r().string};const In=Nn;var Pn=Object.defineProperty;const Dn=(e,t)=>{let n;const i=[];for(n=0;n<=e;n+=1)o=n,r=t,((s=e)<10||r<5&&o<5||r>s-5&&o>s-5||o>=r-2&&o<=r+2||[0,1,s-1,s].indexOf(o)>-1)&&(n>i[i.length-1]&&i.push("..."),i.push(n+1));var o,r,s;return i};class Fn extends e.Component{constructor(e){super(e);const{value:t,totalNrOfPages:n}=this.props;this.state={prevProps:this.props,selectedPage:t||0,pagesArray:Dn(n,t)},this.pageKey=0}static getDerivedStateFromProps(e,t){return e.value!==t.prevProps.value||e.totalNrOfPages!==t.prevProps.totalNrOfPages?{selectedPage:e.value,pagesArray:Dn(e.totalNrOfPages,e.value)}:null}getPageCssClass(e){const{selectedPage:t}=this.state,n=[];return t===e&&n.push("active"),n.join(" ")}getPageKey(){return this.pageKey+=1,this.pageKey}goToPage(e){const{onChange:t,totalNrOfPages:n}=this.props;this.setState({selectedPage:e,pagesArray:Dn(n,e)},(()=>{t&&t(e)}))}render(){const{totalNrOfPages:n}=this.props,{pagesArray:i,selectedPage:o}=this.state;return t().createElement(e.Fragment,null,n?t().createElement("ul",{className:"tyk-pagination"},o>0&&n>5?t().createElement("li",null,t().createElement("button",{onClick:this.goToPage.bind(this,o-1),type:"button"},"Previous")):null,i.map((e=>t().createElement("li",{key:this.getPageKey(),className:this.getPageCssClass(e-1)},"..."!==e?t().createElement("button",{onClick:this.goToPage.bind(this,e-1),type:"button"},e):t().createElement("span",null,e)))),o5?t().createElement("li",null,t().createElement("button",{onClick:this.goToPage.bind(this,o+1),type:"button"},"Next")):null):null)}}((e,t,n)=>{((e,t,n)=>{t in e?Pn(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n})(e,t+"",n)})(Fn,"propTypes",{value:r().number,totalNrOfPages:r().number,onChange:r().func});const Wn=(0,e.createContext)(),Hn=({column:n})=>{const{sortable:i}=n,[o,r]=(0,e.useState)((null==i?void 0:i.default)||"ASC"),{state:s,sendMessage:a}=(0,e.useContext)(Wn);return t().createElement("th",{key:n.id,onClick:i?()=>{a("sort",{column:n,sortOrder:o}),r("ASC"===o?"DESC":"ASC")}:null,className:s.maxHeight?"fixed-header":""},n.name,n.sortable&&t().createElement("span",{className:"header-sort"},t().createElement(g,{family:"tykon",type:"arrowsort"})))};Hn.propTypes={column:r().instanceOf(Object)};var jn=Object.defineProperty,zn=Object.defineProperties,Un=Object.getOwnPropertyDescriptors,Vn=Object.getOwnPropertySymbols,Gn=Object.prototype.hasOwnProperty,Kn=Object.prototype.propertyIsEnumerable,qn=(e,t,n)=>t in e?jn(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;const Yn=()=>{const[n,i]=(0,e.useState)(!1),{state:o,sendMessage:r}=(0,e.useContext)(Wn),{columns:s,selectable:a}=o,l=()=>{var e;if(!a)return;const s=a.type;return t().createElement("th",{className:o.maxHeight?"fixed-header":""},(null==a?void 0:a.allowSelectAll)?t().createElement("div",{className:null==a?void 0:a.style},t().createElement(s,(l=((e,t)=>{for(var n in t||(t={}))Gn.call(t,n)&&qn(e,n,t[n]);if(Vn)for(var n of Vn(t))Kn.call(t,n)&&qn(e,n,t[n]);return e})({},a.values),zn(l,Un({onClick:()=>{i(!n),r("header.selectAll.click",n)},onChange:e=>{r("header.selectAll.change",e)}}))),null==(e=a.values)?void 0:e.value)):a.name||"Select");var l};return t().createElement("thead",null,t().createElement("tr",null,a&&"LEFT"===a.position&&l(),s.map((e=>t().createElement(Hn,{key:e.id,column:e}))),a&&"RIGHT"===a.position&&l()))};var Jn=Object.defineProperty,Qn=Object.defineProperties,Xn=Object.getOwnPropertyDescriptors,Zn=Object.getOwnPropertySymbols,ei=Object.prototype.hasOwnProperty,ti=Object.prototype.propertyIsEnumerable,ni=(e,t,n)=>t in e?Jn(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,ii=(e,t)=>{for(var n in t||(t={}))ei.call(t,n)&&ni(e,n,t[n]);if(Zn)for(var n of Zn(t))ti.call(t,n)&&ni(e,n,t[n]);return e};class oi extends e.Component{getCssClasses(){const{inline:e,disabled:t,readOnly:n,theme:i="",wrapperClassName:o=""}=this.props,r=[o];return r.push("tyk-checkbox"),e&&r.push("tyk-checkbox--inline"),i.trim()&&r.push(...i.split(" ").map((e=>`tyk-checkbox--theme-${e}`))),(t||n)&&r.push("tyk-checkbox--is-disabled"),r.join(" ")}displayError(){const{error:e}=this.props;return e?t().createElement("p",{className:"tyk-form-control__error-message"},e):null}displayNote(){const{note:e}=this.props;return e?t().createElement("p",{className:"tyk-form-control__help-block"},e):null}render(){const e=this.props,{input:n,value:i,label:o}=e,r=((e,t)=>{var n={};for(var i in e)ei.call(e,i)&&t.indexOf(i)<0&&(n[i]=e[i]);if(null!=e&&Zn)for(var i of Zn(e))t.indexOf(i)<0&&ti.call(e,i)&&(n[i]=e[i]);return n})(e,["input","value","label"]);return t().createElement("div",{className:this.getCssClasses()},t().createElement("div",{className:"tyk-form-control__wrapper"},t().createElement("label",null,t().createElement("input",(s=ii(ii({checked:n?n.value:i},n),r),Qn(s,Xn({type:"checkbox"})))),o),this.displayNote(),this.displayError()));var s}}((e,t,n)=>{ni(e,t+"",n)})(oi,"propTypes",{disabled:r().bool,readOnly:r().bool,inline:r().bool,theme:r().string,error:r().oneOfType([r().string,r().bool]),note:r().string,input:r().instanceOf(Object),label:r().oneOfType([r().arrayOf(r().node),r().node,r().element,r().func,r().string]),name:r().string,value:r().oneOfType([r().string,r().bool]),checked:r().oneOfType([r().string,r().bool]),onChange:r().func,wrapperClassName:r().string});var ri=Object.defineProperty,si=Object.getOwnPropertySymbols,ai=Object.prototype.hasOwnProperty,li=Object.prototype.propertyIsEnumerable,ci=(e,t,n)=>t in e?ri(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,ui=(e,t)=>{for(var n in t||(t={}))ai.call(t,n)&&ci(e,n,t[n]);if(si)for(var n of si(t))li.call(t,n)&&ci(e,n,t[n]);return e};const hi=({col:e,row:n})=>{var i,o,r,s,a;if(!n.values[e.id])return t().createElement("td",null);if("string"===e.type)return t().createElement("td",ui({className:(null==(i=n.values[e.id].styling)?void 0:i.className)||null},null==(o=null==n?void 0:n.values[e.id])?void 0:o.events),null==(r=n.values[e.id])?void 0:r.value);const l=e.type;return t().createElement("td",ui({className:(null==(s=n.values[e.id].styling)?void 0:s.className)||null},null==(a=null==n?void 0:n.values[e.id])?void 0:a.events),t().createElement(l,ui({},n.values[e.id].props),n.values[e.id].children?n.values[e.id].children:null))};hi.propTypes={col:r().instanceOf(Object),row:r().instanceOf(Object),index:r().number};const di=({row:n,index:i})=>{var o,r;const{state:s,sendMessage:a}=(0,e.useContext)(Wn),{columns:l,selectable:c}=s,u=()=>t().createElement("td",null,t().createElement(oi,{defaultChecked:n.selected,onChange:e=>a("row.selected",{index:i,selected:e})}));return t().createElement("tr",{onClick:null==(o=n.events)?void 0:o.onClick,className:null==(r=n.styling)?void 0:r.className},c&&"LEFT"===c.position&&u(),l.map((e=>t().createElement(hi,{key:e.id,col:e,row:n,index:i}))),c&&"RIGHT"===c.position&&u())};di.propTypes={row:r().instanceOf(Object),index:r().number};const pi=()=>{const{state:n}=(0,e.useContext)(Wn),{rows:i}=n;return t().createElement("tbody",null,i.map(((e,n)=>t().createElement(di,{key:n,row:e,index:n}))))};var gi=Object.defineProperty,mi=Object.defineProperties,fi=Object.getOwnPropertyDescriptors,yi=Object.getOwnPropertySymbols,bi=Object.prototype.hasOwnProperty,vi=Object.prototype.propertyIsEnumerable,wi=(e,t,n)=>t in e?gi(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Ai=(e,t)=>{for(var n in t||(t={}))bi.call(t,n)&&wi(e,n,t[n]);if(yi)for(var n of yi(t))vi.call(t,n)&&wi(e,n,t[n]);return e},Ci=(e,t)=>mi(e,fi(t));function ki({value:n,onChange:i,noDataMessage:o,loading:r,infiniteScrolling:s}){var a;const[l,c]=(0,e.useState)(null),[u,h]=(0,e.useState)("api"),d=(0,e.useRef)(null),p=e=>{c(Ci(Ai({},l),{rows:l.rows.map((t=>Ci(Ai({},t),{selected:e})))}))},g={getState:()=>l,setState:e=>c(e)},m=(e,t)=>{var n,i;h(e),"sort"===e&&(n=t.column.id,i=t.sortOrder,c(Ci(Ai({},l),{sort:{order:i,col:n}}))),"header.selectAll.click"===e&&p(t),"header.selectAll.change"===e&&p(t),"row.selected"===e&&(e=>{const{index:t,selected:n}=e,i=l.rows[t];c(Ci(Ai({},l),{rows:[...l.rows.slice(0,t),Ci(Ai({},i),{selected:n}),...l.rows.slice(t+1)]}))})(t),"pagination.change"===e&&(e=>{c(Ci(Ai({},l),{pagination:Ci(Ai({},l.pagination),{current:e+1})}))})(t)};if((0,e.useEffect)((()=>c(n)),[n]),(0,e.useEffect)((()=>{i&&i(u,l,g),h("api")}),[l]),!l)return t().createElement(te,{position:"absolute"});if(l.rows<=0)return t().createElement(ie,{theme:"info"},o||"No Data Available");const f=()=>t().createElement("table",{className:"tyk-table",ref:d},t().createElement(Yn,null),t().createElement(pi,null));return t().createElement(Wn.Provider,{value:{state:l,sendMessage:m}},t().createElement("div",{className:`scrollable ${(null==(a=l.styling)?void 0:a.className)||""}`,style:{height:l.maxHeight?l.maxHeight:"auto",position:"relative"}},r&&t().createElement(te,{position:"absolute",withbackground:!0}),s&&l.pagination?t().createElement(nt,{refChild:d,hasMore:l.pagination.totalPages>l.pagination.current,loadMore:e=>m("pagination.change",e),pageNumber:l.pagination.current-1,initialLoad:!1},f()):f()),l.pagination&&!s&&t().createElement("div",{className:"new-table-pagination"},t().createElement(Fn,{value:l.pagination.current-1,nrItemsOnPage:l.pagination.perPage-1,totalNrOfPages:l.pagination.totalPages-1,onChange:e=>m("pagination.change",e)})))}ki.propTypes={value:r().shape({columns:r().arrayOf(r().shape({id:r().string.isRequired,name:r().string,type:r().oneOfType([r().string,r().element,r().func]),sortable:r().oneOfType([r().bool,r().shape({default:r().string})])})),rows:r().arrayOf(r().shape({})),selectable:r().shape({}),pagination:r().shape({}),maxHeight:r().string,styling:r().shape({className:r().string})}).isRequired,onChange:r().func,noDataMessage:r().string,loading:r().bool,infiniteScrolling:r().bool},ki.defaultProps={loading:!1,infiniteScrolling:!1,noDataMessage:"No Data Available",onChange:null};const xi=ki;var Si=Object.defineProperty,$i=Object.defineProperties,Ei=Object.getOwnPropertyDescriptors,Oi=Object.getOwnPropertySymbols,Ti=Object.prototype.hasOwnProperty,_i=Object.prototype.propertyIsEnumerable,Ri=(e,t,n)=>t in e?Si(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;class Mi extends e.PureComponent{getCssClasses(){const{align:e,className:t,offset:n,size:i}=this.props,o=i.split(" "),r=n?n.split(" "):[];let s=o.map((e=>`tyk-col--${e}`));const a=r.map((e=>`tyk-col--offset-${e}`));return e&&s.push(`tyk-col--align-${e}`),t&&(s=s.concat(t.split(" "))),s.push("tyk-col"),s=s.concat(a||[]),s.join(" ")}render(){const e=this.props,{children:n,id:i}=e,o=((e,t)=>{var n={};for(var i in e)Ti.call(e,i)&&t.indexOf(i)<0&&(n[i]=e[i]);if(null!=e&&Oi)for(var i of Oi(e))t.indexOf(i)<0&&_i.call(e,i)&&(n[i]=e[i]);return n})(e,["children","id"]);return t().createElement("div",(r=((e,t)=>{for(var n in t||(t={}))Ti.call(t,n)&&Ri(e,n,t[n]);if(Oi)for(var n of Oi(t))_i.call(t,n)&&Ri(e,n,t[n]);return e})({},o),s={className:this.getCssClasses(),id:i},$i(r,Ei(s))),n);var r,s}}((e,t,n)=>{Ri(e,t+"",n)})(Mi,"propTypes",{align:r().string,className:r().string,id:r().string,size:r().string.isRequired,offset:r().string,children:r().oneOfType([r().element,r().string,r().object,r().node])});const Li=Mi;var Bi=Object.defineProperty,Ni=Object.defineProperties,Ii=Object.getOwnPropertyDescriptors,Pi=Object.getOwnPropertySymbols,Di=Object.prototype.hasOwnProperty,Fi=Object.prototype.propertyIsEnumerable,Wi=(e,t,n)=>t in e?Bi(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;class Hi extends e.PureComponent{getCssClasses(){const{className:e,nogutters:t}=this.props;let n=["tyk-row"];return t&&(n.push("no-gutters"),n.push("tyk-row--gutterless")),e&&(n=n.concat(e.split(" "))),n.join(" ")}render(){const e=this.props,{children:n,nogutters:i}=e,o=((e,t)=>{var n={};for(var i in e)Di.call(e,i)&&t.indexOf(i)<0&&(n[i]=e[i]);if(null!=e&&Pi)for(var i of Pi(e))t.indexOf(i)<0&&Fi.call(e,i)&&(n[i]=e[i]);return n})(e,["children","nogutters"]);return t().createElement("div",(r=((e,t)=>{for(var n in t||(t={}))Di.call(t,n)&&Wi(e,n,t[n]);if(Pi)for(var n of Pi(t))Fi.call(t,n)&&Wi(e,n,t[n]);return e})({},o),s={className:this.getCssClasses()},Ni(r,Ii(s))),n);var r,s}}((e,t,n)=>{Wi(e,t+"",n)})(Hi,"propTypes",{children:r().oneOfType([r().element,r().node]),className:r().string,nogutters:r().bool});const ji=(0,e.createContext)();function zi(n){const{customdropdownitem:i,children:o,eventKey:r,href:s,target:a,title:l,onClick:c}=n,u=(0,e.useCallback)(((e,t)=>{e.onSelectItem(r,t),c&&c(r)}),[]);return t().createElement(ji.Consumer,null,(c=>t().createElement("li",{onClick:()=>u(c,n),onKeyUp:()=>{}},i?(0,e.cloneElement)(i,{}):t().createElement("a",{href:s,target:a},r&&c.selectedItem===r&&c.showCheckmark?t().createElement(g,{type:"check"}):null,t().createElement("span",null,l||o)))))}zi.propTypes={children:r().oneOfType([r().element,r().node,r().string]),customdropdownitem:r().oneOfType([r().arrayOf(r().node),r().node,r().element]),eventKey:r().string,href:r().string,target:r().string,onClick:r().func,title:r().string};const Ui=zi;var Vi=Object.defineProperty,Gi=Object.getOwnPropertySymbols,Ki=Object.prototype.hasOwnProperty,qi=Object.prototype.propertyIsEnumerable,Yi=(e,t,n)=>t in e?Vi(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;class Ji extends e.Component{static isElemInRightView(e,t){const n=window.innerWidth;return e.getBoundingClientRect().left+t<=n}static isElemInBottomView(e,t){const n=window.innerHeight,i=e.getBoundingClientRect(),o=e.clientHeight;return i.top+o+t<=n}constructor(t){super(t);const{selectedItem:n,open:i}=this.props;this.state={opened:i,selectedItem:n||null},this.dropdownRef=(0,e.createRef)(),this.dropdownListRef=(0,e.createRef)(),this.dropdownButtonRef=(0,e.createRef)(),this.onSelectItem=this.onSelectItem.bind(this),this.toggleDropdown=this.toggleDropdown.bind(this),this.handleClickOutside=this.handleClickOutside.bind(this)}componentDidMount(){document.addEventListener("mousedown",this.handleClickOutside),this.dropdownListRef.current&&this.getStyles()}componentDidUpdate(e){const{open:t}=this.props,{opened:n}=this.state;this.dropdownListRef.current&&this.getStyles(),e.open||!0!==t||n||this.toggleDropdown(),e.open&&!1===t&&n&&this.closeDropdown()}componentWillUnmount(){document.removeEventListener("mousedown",this.handleClickOutside)}handleClickOutside(e){this.dropdownListRef.current&&!this.dropdownListRef.current.contains(e.target)&&this.dropdownRef.current&&!this.dropdownRef.current.contains(e.target)&&this.closeDropdown()}onSelectItem(e,t){const{closeOnSelect:n,onSelect:i}=this.props,o={selectedItem:e,selectedItemProps:t};n&&(o.opened=!1),this.setState(o),i&&"function"==typeof i&&i(e)}getStyles(){const{display:e,position:t,offset:n}=this.props,i=this.dropdownListRef.current;if(n)return i.style.top=`${n.top}`,void(i.style.left=`${n.left}`);const o=Math.max(document.documentElement.scrollTop,document.body.scrollTop,window.scrollY),r=this.dropdownRef.current,s=r.clientHeight,a=i?i.clientHeight:0,l=i?i.clientWidth:0,c=r.getBoundingClientRect(),{left:u,top:h}=c;let d=0,p=u;d=Ji.isElemInBottomView(r,a)?h+o+s:h+o-a-5,p=Ji.isElemInRightView(r,l)?u:u+r.clientWidth-l,"relative"!==t&&(i.style.top=`${d}px`,"block"!==e&&(i.style.left=`${p}px`)),"block"!==e&&(i.style.minWidth=`${this.dropdownButtonRef.current.clientWidth}px`)}getWrapperCssClasses(){const{btnGroup:e,btnGroupSize:t,className:n,btnTheme:i,wrapperClassName:o=""}=this.props;let r=[o,"tyk-dropdown"];return r.push(`theme-${i||"default"}`),n&&(r=r.concat(n.split(" "))),e&&(r.push("tyk-button-group"),r.push(t?`tyk-button-group--${t}`:"tyk-button-group--md")),r.join(" ")}getCssClasses(){const{opened:e}=this.state,{hasCustomContent:t,display:n,listclassnames:i,position:o,maxHeight:r}=this.props;let s=["tyk-dropdown-menu","tyk-dropdown"];return r&&s.push("tyk-dropdown--scrollable"),e&&s.push("opened"),i&&(s=s.concat(i.split(" "))),n&&s.push("tyk-dropdown--block"),t&&s.push("tyk-dropdown--custom"),"relative"===o&&s.push("tyk-dropdown--relative"),s.join(" ")}getBtnTitle(){const{btnTitle:e,stopButtonTextChange:t}=this.props,{selectedItemProps:n}=this.state;return!t&&n&&n.title?n.title:e}closeDropdown(){const{onClose:e}=this.props;this.setState({opened:!1},(()=>{e&&e()}))}toggleDropdown(){const{opened:e}=this.state;e?this.closeDropdown():this.setState({opened:!0})}render(){const{appendTo:e,btnClassName:n,btnSize:i,customBtnTitle:o,hasCustomContent:r,btnTheme:s,children:a,label:l,showDropdownIcon:c,showTriggerButton:u,showCheckmark:h,disabled:d=!1,maxHeight:p}=this.props,{selectedItem:g,opened:m}=this.state,f=r?"div":"ul";return t().createElement("div",{className:this.getWrapperCssClasses(),ref:this.dropdownRef},l?t().createElement("label",{className:"font-family-medium"},l):null,u?t().createElement(q,{className:`tyk-dropdown__trigger ${m?"tyk-dropdown__trigger--opened ":" "} ${n}`,theme:s||"default",onClick:this.toggleDropdown,iconType:c?"chevron-down":null,iconPosition:"right",size:i||"md",type:"button",disabled:d,ref:this.dropdownButtonRef},o||this.getBtnTitle()):null,m?Fe().createPortal(t().createElement(ji.Provider,{value:{onSelectItem:this.onSelectItem,selectedItem:g,showCheckmark:h}},m?t().createElement(f,((e,t)=>{for(var n in t||(t={}))Ki.call(t,n)&&Yi(e,n,t[n]);if(Gi)for(var n of Gi(t))qi.call(t,n)&&Yi(e,n,t[n]);return e})({className:this.getCssClasses(),ref:this.dropdownListRef},p&&{style:{maxHeight:p}}),"function"==typeof a?a({closeDropdown:this.closeDropdown.bind(this)}):a):null),document.querySelector(e||"body")):null)}}Ji.propTypes={appendTo:r().string,children:r().oneOfType([r().element,r().node,r().string,r().func]),closeOnSelect:r().bool,btnClassName:r().string,btnSize:r().string,btnGroupSize:r().string,btnTheme:r().string,btnTitle:r().oneOfType([r().node,r().element,r().string]),customBtnTitle:r().oneOfType([r().node,r().element,r().string]),btnGroup:r().bool,className:r().string,display:r().string,disabled:r().bool,hasCustomContent:r().bool,label:r().oneOfType([r().arrayOf(r().node),r().node,r().element,r().func,r().string]),listclassnames:r().string,onClose:r().func,onSelect:r().func,open:r().bool,offset:r().instanceOf(Object),position:r().string,selectedItem:r().string,showDropdownIcon:r().bool,stopButtonTextChange:r().bool,showTriggerButton:r().bool,showCheckmark:r().bool,maxHeight:r().string,wrapperClassName:r().string},Ji.defaultProps={closeOnSelect:!1,showDropdownIcon:!0,showTriggerButton:!0,showCheckmark:!0,open:!1},Ji.Item=Ui;const Qi=Ji;var Xi=n(239),Zi=n.n(Xi);const eo=require("react-ace");var to=n.n(eo);n(395),n(576),n(7),n(549),n(252),n(202),n(711),n(604),n(134),n(203);const no=n.p+"ee385296b124aae4e5d9.js";var io=Object.defineProperty,oo=Object.defineProperties,ro=Object.getOwnPropertyDescriptors,so=Object.getOwnPropertySymbols,ao=Object.prototype.hasOwnProperty,lo=Object.prototype.propertyIsEnumerable,co=(e,t,n)=>t in e?io(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,uo=(e,t)=>{for(var n in t||(t={}))ao.call(t,n)&&co(e,n,t[n]);if(so)for(var n of so(t))lo.call(t,n)&&co(e,n,t[n]);return e};function ho(n){const{disabled:i,readOnly:o,disableValidation:r,id:s,error:a,label:l,labelwidth:c,note:u,onBlur:h,onChange:d,theme:p,value:g,setOptions:m,wrapperClassName:f}=n,y=["tyk-form-group",f,...p?p.split(" ").map((e=>`tyk-form-group--${e}`)):[],c&&"tyk-form-group--label-has-width",a&&"has-error"].filter(Boolean).join(" "),b=uo(uo({},m),r&&{useWorker:!1}),v=(0,e.useCallback)((()=>a&&"true"!==a&&"false"!==a?t().createElement("p",{className:"tyk-form-control__error-message"},a):null),[a]),w=(0,e.useCallback)((()=>c?{flexBasis:c}:{}),[c]),A=(0,e.useCallback)((()=>c?{flexBasis:`calc(100% - ${c} - 20px)`}:{}),[c]),C=(0,e.useCallback)((e=>{d&&d(e)}),[d]),k=(0,e.useCallback)((()=>{h&&h(g)}),[h,g]);return t().createElement("div",{className:y},l?t().createElement("label",{htmlFor:s,style:w()},l):null,t().createElement("div",{className:"tyk-form-control__wrapper",style:A()},t().createElement(to(),(x=uo({className:"tyk-form-control"},n),oo(x,ro({onChange:C,onBlur:k,theme:"github",editorProps:{$blockScrolling:!0},readOnly:o||i,onLoad:e=>{e.container.style.resize="both",document.addEventListener("mouseup",(()=>e.resize()))},setOptions:b})))),u?t().createElement("p",{className:"tyk-form-control__help-block"},u):null,v()));var x}Zi().config.setModuleUrl("ace/mode/json_worker",no),ho.propTypes={disabled:r().bool,readOnly:r().bool,disableValidation:r().bool,id:r().string,error:r().oneOfType([r().string,r().bool]),label:r().oneOfType([r().arrayOf(r().node),r().node,r().element,r().func,r().string]),labelwidth:r().string,mode:r().string,name:r().string,note:r().string,onBlur:r().func,onChange:r().func,theme:r().string,value:r().string,setOptions:r().instanceOf(Object),wrapperClassName:r().string};const po=ho;var go=Object.defineProperty,mo=Object.defineProperties,fo=Object.getOwnPropertyDescriptors,yo=Object.getOwnPropertySymbols,bo=Object.prototype.hasOwnProperty,vo=Object.prototype.propertyIsEnumerable,wo=(e,t,n)=>t in e?go(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Ao=(e,t,n)=>(wo(e,"symbol"!=typeof t?t+"":t,n),n);const Co=(e,t,n)=>n||(e||t?[]:null),ko=class n extends e.Component{static closeList(){return{cursor:-1,opened:!1}}static openList(){return{opened:!0}}static filterByName(e,t){return e.name.toLowerCase().indexOf(t)>-1}constructor(t){super(t);const{multiple:i,tags:o,value:r}=t;this.state={cursor:-1,opened:!1,width:50,initialValue:r,stateSelectedValues:Co(i,o,r),searchText:"",tags:o},this.comboboxRef=(0,e.createRef)(),this.valuesListRef=(0,e.createRef)(),this.inputRef=(0,e.createRef)(),this.textRef=(0,e.createRef)(),this.focusInput=this.focusInput.bind(this),this.onKeyUp=this.onKeyUp.bind(this),n.openList=n.openList.bind(this),this.handleClickOutside=this.handleClickOutside.bind(this),this.handleItemsNavigation=this.handleItemsNavigation.bind(this),this.handleComboboxDropdownClick=this.handleComboboxDropdownClick.bind(this),this.handleListItemClick=this.handleListItemClick.bind(this),this.handlePillRemoveClick=this.handlePillRemoveClick.bind(this),this.manageSelectedTags=this.manageSelectedTags.bind(this)}componentDidMount(){const{tags:e}=this.props;e&&this.setInputWidth(),this.bindEvents()}componentWillUnmount(){this.unBindEvents()}static getDerivedStateFromProps(e,t){return JSON.stringify(e.value)!==JSON.stringify(t.initialValue)||e.tags!==t.tags?{initialValue:e.value,stateSelectedValues:Co(e.multiple,e.tags,e.value),tags:e.tags}:null}onKeyUp(e){const{tags:t,allowCustomValues:i}=this.props,{cursor:o,opened:r}=this.state,s=this.filterValues();let a=Object.assign({},this.getSearchText());if(t&&"Escape"!==e.key&&(a=Object.assign({},a,this.setInputWidth())),"Enter"===e.key){const e=t?"manageSelectedTags":"manageSelectedValues";a=Object.assign({},a,this[e](o))}i&&" "===!e.key&&t&&(a=Object.assign({},a,this.manageSelectedTags())),!r&&this.inputRef.current.value&&s&&s.length&&"Escape"!==e.key&&(a=Object.assign({},a,n.openList())),"Escape"===e.key&&r&&(a=Object.assign({},a,n.closeList())),r&&s&&!s.length&&(a=Object.assign({},a,n.closeList())),this.setState((e=>Object.assign({},e,a)))}getLabelStyles(){const{labelwidth:e}=this.props,t={};return e&&(t.flexBasis=e),t}getNonLabelWidth(){const{labelwidth:e}=this.props,t={};return e&&(t.flexBasis=`calc(100% - ${e} - 20px)`),t}setInputWidth(){return{width:50+this.textRef.current.offsetWidth}}getSelectedIndex(e){const{stateSelectedValues:t}=this.state;let n=-1;return Array.isArray(t)?t.forEach(((t,i)=>{t.id===e.id&&(n=i)})):t&&t.id===e.id&&(n=0),n}getSearchText(){return{searchText:this.inputRef.current.value}}getListItemCssClasses(e,t){const n=[],{cursor:i}=this.state;return i===t&&n.push("active"),e.disabled&&n.push("disabled"),n.join(" ")}getComboboxListCssClass(){const{opened:e}=this.state,{tags:t,theme:n}=this.props,i=n?n.split(" "):[],o=["tyk-combobox__list"];return e&&o.push("tyk-combobox__list--opened"),t&&o.push("tyk-combobox__list--has-tags"),i.length&&i.forEach((e=>{o.push(`tyk-form-group--${e}`)})),o.join(" ")}getCssClasses(){const{error:e,disabled:t,theme:n,labelwidth:i}=this.props,o=["tyk-form-group","tyk-combobox"],r=n?n.split(" "):[];return e&&o.push("has-error"),i&&o.push("tyk-form-group--label-has-width"),r.length&&r.forEach((e=>{o.push(`tyk-form-group--${e}`)})),t&&o.push("disabled"),o.join(" ")}getInputError(){const{error:e}=this.props;return e&&"true"!==e&&"false"!==e?t().createElement("p",{className:"tyk-form-control__error-message"},e):null}getStyles(){const{scrollTop:e}=document.documentElement,t=this.comboboxRef.current,n=t.offsetHeight,i=t.offsetWidth,o=t.getBoundingClientRect(),{left:r}=o;let s=0;return s=o.top+e+n,{top:s-1+"px",left:`${r}px`,width:`${i}px`}}getComboboxDisplayData(){const{stateSelectedValues:e}=this.state,{multiple:t,placeholder:n,values:i}=this.props;return e?e&&Array.isArray(e)&&!e.length?n:!e||Array.isArray(e)||e.id?Array.isArray(e)&&t?e.reduce(((t,n,i)=>t+n.name+(i!==e.length-1?", ":"")),""):i&&i.length&&!Array.isArray(e)&&!e.name?i.filter((t=>t.id===e.id))[0].name:e.name:n:n}manageSelectedTags(e){const{max:t,allowCustomValues:n}=this.props,{stateSelectedValues:i}=this.state,o=this.filterValues(),r={id:this.inputRef.current.value,name:this.inputRef.current.value};if(!1===n&&-1===e)return null;const s=o[e]||r,a=this.getSelectedIndex(s);let l={};if(this.inputRef.current.value="",a>-1&&this.isInInitialValues(s))l=this.removeSelectedValue(a);else if(-1===a){if(t&&i.length>=t)return l;l=this.addSelectedValue(s)}return l}manageSelectedValues(e){const{stateSelectedValues:t}=this.state,{multiple:n,onChange:i,max:o}=this.props,r=this.filterValues(),s=r[e];let a;const l=this.getSelectedIndex(s);if(s&&n)if(l>-1)a=this.removeSelectedValue(l);else{if(o&&t.length>=o)return a;a=this.addSelectedValue(r[e])}else a={stateSelectedValues:-1===l?s:{id:null}},i&&"function"==typeof i&&i(-1===l?s:null);return a}removeSelectedValue(e){const{stateSelectedValues:t}=this.state,{onChange:n}=this.props,i=JSON.parse(JSON.stringify(t));return i.splice(e,1),n&&"function"==typeof n&&n(i.length?i:null),{stateSelectedValues:i,searchText:""}}addSelectedValue(e){const{stateSelectedValues:t}=this.state,{onChange:n}=this.props,i=JSON.parse(JSON.stringify(t));return i.push(e),n&&"function"==typeof n&&n(i.length?i:null),{stateSelectedValues:i,searchText:""}}isInInitialValues(e){const{values:t}=this.props;let n=!1;return t.forEach((t=>{e.id===t.id&&(n=!0)})),n}filterValues(){const{values:e,searchItem:t}=this.props;if(!this.inputRef.current)return e;const i=e.filter((e=>t?t(e,this.inputRef.current.value.toLowerCase()):n.filterByName(e,this.inputRef.current.value.toLowerCase())));return i}bindEvents(){document.addEventListener("mousedown",this.handleClickOutside)}unBindEvents(){document.removeEventListener("mousedown",this.handleClickOutside)}handleItemsNavigation(e){const{tags:t}=this.props;if(-1===["ArrowDown","ArrowUp"].indexOf(e.key))return;const{cursor:n}=this.state,i=this.filterValues();let o;if(e.preventDefault(),"ArrowDown"===e.key&&(-1===n||n===i.length-1?o=0:n0?n-1:i.length-1),this.valuesListRef.current&&o>4){const e=38*(o-4);this.valuesListRef.current.scrollTop=t?e:60+e}else this.valuesListRef.current&&(this.valuesListRef.current.scrollTop=0);this.setState((e=>{return t=((e,t)=>{for(var n in t||(t={}))bo.call(t,n)&&wo(e,n,t[n]);if(yo)for(var n of yo(t))vo.call(t,n)&&wo(e,n,t[n]);return e})({},e),mo(t,fo({opened:!0,cursor:o}));var t}))}handleListItemClick(e){if(this.props.values[e].disabled)return;const{multiple:t,tags:n}=this.props,i=n?"manageSelectedTags":"manageSelectedValues",o=Object.assign({},this.state,this[i](e));this.setState((e=>(t||n||(o.opened=!1),Object.assign({},e,o))))}handlePillRemoveClick(e){const{disabled:t}=this.props;if(t)return;const n=this.removeSelectedValue(e);this.setState((e=>Object.assign({},e,n)))}handleClickOutside(e){this.valuesListRef.current&&!this.valuesListRef.current.contains(e.target)&&this.comboboxRef.current&&!this.comboboxRef.current.contains(e.target)&&this.setState((e=>Object.assign({},e,n.closeList())))}handleComboboxDropdownClick(){const{disabled:e}=this.props;e||this.setState((e=>Object.assign({},e,n.openList())))}reset(){const{multiple:e,tags:t,value:n}=this.props;this.setState({stateSelectedValues:Co(e,t,n)})}focusInput(){this.inputRef.current&&this.inputRef.current.focus()}render(){const{CustomListComponent:n,disabled:i,id:o,label:r,note:s,tags:a,max:l,placeholder:c}=this.props,{width:u,opened:h,searchText:d,stateSelectedValues:p}=this.state,m=this.filterValues();return t().createElement(e.Fragment,null,t().createElement("div",{className:this.getCssClasses()},r?t().createElement("label",{htmlFor:o,style:this.getLabelStyles()},r):null,t().createElement("div",{className:"tyk-form-control__wrapper",style:this.getNonLabelWidth()},t().createElement("ul",{className:"tyk-form-control"+(a?" tyk-form-control--with-tags":""),onClick:this.focusInput,onKeyDown:()=>{},ref:this.comboboxRef},a?t().createElement(e.Fragment,null,(p||[]).map(((e,n)=>t().createElement("li",{className:"pill",key:e.id},t().createElement("button",{type:"button",onClick:this.handlePillRemoveClick.bind(this,n)},t().createElement(g,{type:"times"})),t().createElement("span",null,e.name)))),t().createElement("li",{className:"tyk-combobox__search-box",style:{width:p&&p.length?"auto":"100%"}},(void 0===l||(null==p?void 0:p.length){"Enter"===e.key&&e.preventDefault()},onKeyUp:this.onKeyUp,onKeyDown:this.handleItemsNavigation,placeholder:p&&p.length?"":c,ref:this.inputRef,style:{width:p&&p.length?`${u}px`:"100%"}}),t().createElement("span",{ref:this.textRef,style:{visbility:"hidden",position:"absolute",top:"-9999px"}},d)),m.length?t().createElement(q,{className:"tyk-combobox--with-tags__button-down",iconType:"arrow-down",iconOnly:!0,onClick:this.handleComboboxDropdownClick}):null)):t().createElement("li",{className:"tyk-combobox__placeholder",onClick:this.handleComboboxDropdownClick,onKeyDown:()=>{}},this.getComboboxDisplayData(),t().createElement(g,{family:"tykon",type:"arrowdown"}))),s?t().createElement("p",{className:"tyk-form-control__help-block"},s):null,this.getInputError())),n?t().createElement(n,{ref:this.valuesListRef,className:this.getComboboxListCssClass(),getListItemCssClasses:this.getListItemCssClasses.bind(this),getSelectedIndex:this.getSelectedIndex.bind(this),filteredValues:m,handleListItemClick:this.handleListItemClick.bind(this)}):h&&m.length?Fe().createPortal(t().createElement("ul",{className:this.getComboboxListCssClass(),ref:this.valuesListRef,style:this.getStyles()},a?null:t().createElement("li",{className:"combobox-search__container"},t().createElement("input",{autoFocus:h,className:"tyk-form-control",onKeyUp:this.onKeyUp,onKeyDown:this.handleItemsNavigation,key:"searchInput",ref:this.inputRef})),m.map(((e,n)=>t().createElement("li",{className:this.getListItemCssClasses(e,n),onClick:this.handleListItemClick.bind(this,n),onKeyDown:()=>{},key:e.id},this.getSelectedIndex(e)>-1?t().createElement(g,{type:"check"}):null,t().createElement("span",null," ",e.name))))),document.querySelector("body")):null)}};Ao(ko,"propTypes",{allowCustomValues:r().bool,CustomListComponent:r().elementType,searchItem:r().func,disabled:r().bool,error:r().string,id:r().string,label:r().oneOfType([r().arrayOf(r().node),r().node,r().element,r().func,r().string]),labelwidth:r().string,multiple:r().bool,max:r().number,note:r().oneOfType([r().node,r().element,r().string]),onChange:r().func,placeholder:r().string,tags:r().bool,theme:r().string,value:r().oneOfType([r().string,r().instanceOf(Object),r().instanceOf(Array)]),values:r().instanceOf(Array)}),Ao(ko,"defaultProps",{allowCustomValues:!0});let xo=ko;const So=function(n){const{value:i,max:o,tags:r,tagSeparators:s,addTagOnBlur:a,placeholder:l,disabled:c,renderValue:u,valueOverflow:h,focus:d,onMessage:p,readOnly:m}=n,f=(0,e.useRef)(null),y=(0,e.useRef)(null),[b,v]=(0,e.useState)(""),[w,A]=(0,e.useState)("70px");function C(e){if(s.some((t=>e.slice(-1)===t)))return;const t=y.current;t.innerHTML=e,A(`${Math.max(t.clientWidth,60)+10}px`),v(e),p("tag.input.change",e)}function k(){p("text-value.click")}function x(e,n=!1){if(m)return e||"-";const i=["tyk-combobox2__text-value",`overflow-${h}`,n&&"is-placeholder"].filter(Boolean).join(" ");return t().createElement("span",{className:i,title:"single"===h?e:void 0,role:"none",tabIndex:c?"-1":"0",onClick:k,onKeyPress:k},e)}function S(e){return u(e,{tags:r,tagSeparators:s,placeholder:l,disabled:c,renderValue:u,sendMessage:p})}return(0,e.useEffect)((()=>{d&&f.current&&f.current.focus()}),[d]),m?t().createElement("div",{className:"tyk-form-control--readonly"},x(i.map((e=>e.name)).join(", "))):r?t().createElement(t().Fragment,null,i.map((function(e){return u?S(e):t().createElement(Ht,{key:e.id,theme:"combobox"},t().createElement("button",{type:"button",onClick:t=>{t.stopPropagation(),p("tag.remove",e.id)}},t().createElement(g,{type:"times"})),t().createElement("span",{title:e.name},e.name))})),i.lengthC(e.target.value),onKeyDown:e=>{"Enter"===e.key&&e.preventDefault(),function(e,t){if(r){if(""!==t||"Backspace"!==e||!i.length)return"Enter"===e?(p("tag.input.enter",t),void C("")):void("ArrowUp"!==e?"ArrowDown"!==e?"Escape"!==e?s.includes(e)&&(p("tag.add",t),C("")):p("tag.input.escape"):p("tag.input.arrowDown"):p("tag.input.arrowUp"));p("tag.remove",i[i.length-1].id)}}(e.key,e.target.value)},onFocus:()=>p("tag.input.focus"),onBlur:e=>{p("tag.input.blur",e.target.value),a&&C("")}}),t().createElement("span",{ref:y,style:{visbility:"hidden",position:"absolute",top:"-9999px"}}))):u?0===i.length?x(l,!0):i.map(S):0===i.length?x(l,!0):x(i.map((e=>e.name)).join(", "))};function $o(n){const{listRef:i,tags:o,values:r,searchValue:s,activeItem:a,onMessage:l,renderListItem:c,selectAll:u,showSearch:h}=n;return(0,e.useEffect)((()=>{if(!i.current)return;const e=i.current.querySelector(".active");e&&e.scrollIntoView({block:"end"})}),[a]),t().createElement(t().Fragment,null,!o&&h&&t().createElement("div",{className:"tyk-combobox2__combobox-search"},t().createElement("input",{autoFocus:!0,className:"tyk-form-control",value:s,onChange:e=>l("search.change",e.target.value),onKeyDown:e=>{"Escape"===e.key&&l("search.escape"),"ArrowUp"===e.key&&l("search.arrowUp"),"ArrowDown"===e.key&&l("search.arrowDown"),"Enter"===e.key&&l("search.enter")}})),r.length>0&&t().createElement("ul",{ref:i,className:"tyk-combobox2__combobox-list"},Boolean(u)&&function(){var e,n,i;const o=r.every((e=>e.selected)),s=r.every((e=>!e.selected)),a=null!=(e=null==u?void 0:u.label)?e:"Select All",c=null!=(n=null==u?void 0:u.mode)?n:"select",h=null!=(i=null==u?void 0:u.show)?i:"always",d=null==u?void 0:u.render;return"always"!==h&&("select"===c?o:s)?null:d?d({label:a,mode:c,show:h,isAllSelected:o,isNoneSelected:s},l):t().createElement("li",{onClick:()=>l("value.select-all","select"===c?!o:s),onKeyDown:()=>{}},("select"===c?o:s)&&t().createElement(g,{type:"check"}),a)}(),r.map((function(e){return c?c(e,{tags:o,searchValue:s,sendMessage:l,activeItem:a}):t().createElement("li",{key:e.id,title:e.name,className:[e.disabled&&"disabled",a&&e.id===a.id&&"active"].filter(Boolean).join(" "),onClick:()=>!e.disabled&&l("value.select",{item:e}),onKeyPress:()=>{}},e.selected&&t().createElement(g,{type:"check"}),t().createElement("span",{className:"item-name"},e.name))}))))}$o.propTypes={listRef:r().instanceOf(Object),tags:r().bool,values:r().instanceOf(Array),searchValue:r().string,activeItem:r().instanceOf(Object),onMessage:r().func,renderListItem:r().func,selectAll:r().oneOfType([r().bool,r().shape({label:r().oneOfType([r().arrayOf(r().node),r().node,r().element,r().func,r().string]),mode:r().oneOf(["select","unselect"]),show:r().oneOf(["always","notSameState"]),render:r().func})]),showSearch:r().bool};const Eo=$o;var Oo=Object.defineProperty,To=Object.defineProperties,_o=Object.getOwnPropertyDescriptors,Ro=Object.getOwnPropertySymbols,Mo=Object.prototype.hasOwnProperty,Lo=Object.prototype.propertyIsEnumerable,Bo=(e,t,n)=>t in e?Oo(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,No=(e,t)=>{for(var n in t||(t={}))Mo.call(t,n)&&Bo(e,n,t[n]);if(Ro)for(var n of Ro(t))Lo.call(t,n)&&Bo(e,n,t[n]);return e},Io=(e,t)=>To(e,_o(t));function Po(e,t){let n=e;if("string"==typeof e?n={id:e,name:e}:e.hasOwnProperty("name")||(n=Io(No({},e),{name:e.id})),!t)return n;const i=t.find((e=>e.id===n.id));return i?No(No({},n),i):n}function Do(e,t){return e?Array.isArray(e)?e.map((e=>Po(e,t))):[Po(e,t)]:[]}function Fo(n){var i=n,{value:o,values:r=[],valueOverflow:s="single",label:a="",labelwidth:l,tags:c=!1,tagSeparators:u=[" ","Enter"],addTagOnBlur:h=!1,max:d,multiple:p=!1,placeholder:m="",theme:f,note:y="",error:b="",disabled:v=!1,readOnly:w=!1,allowCustomValues:A=!0,searchItem:C,renderValue:k,renderListItem:x,renderList:S,CustomListComponent:$,onBeforeChange:E=(()=>!0),onChange:O=(()=>{}),floatingContainerConfig:T,expandMode:_,infiniteScrollerConfig:R,displayDropdownTrigger:M=!0,selectAll:L,closeOnSelect:B,showSearch:N=!1,required:I=!1,validateOnChange:P=(()=>{}),wrapperClassName:D=""}=i,F=((e,t)=>{var n={};for(var i in e)Mo.call(e,i)&&t.indexOf(i)<0&&(n[i]=e[i]);if(null!=e&&Ro)for(var i of Ro(e))t.indexOf(i)<0&&Lo.call(e,i)&&(n[i]=e[i]);return n})(i,["value","values","valueOverflow","label","labelwidth","tags","tagSeparators","addTagOnBlur","max","multiple","placeholder","theme","note","error","disabled","readOnly","allowCustomValues","searchItem","renderValue","renderListItem","renderList","CustomListComponent","onBeforeChange","onChange","floatingContainerConfig","expandMode","infiniteScrollerConfig","displayDropdownTrigger","selectAll","closeOnSelect","showSearch","required","validateOnChange","wrapperClassName"]);const W=p?1/0:d||(c?1/0:1),H=$?(e,{sendMessage:n})=>t().createElement($,{filteredValues:e,handleListItemClick:t=>n("value.select",{item:e[t]}),getListItemCssClasses:()=>{}}):S,j=(0,e.useRef)(null),z=(0,e.useRef)(null),U=(0,e.useRef)(null),V=(0,e.useRef)(null),[G,K]=(0,e.useState)(Do(o,r)),[q,Y]=(0,e.useState)(r.map((e=>Po(e)))),[J,Q]=(0,e.useState)(""),[X,Z]=(0,e.useState)(null),[ee,te]=(0,e.useState)(!1),[ne,ie]=(0,e.useState)(!1),[oe,re]=(0,e.useState)("");function se(){return(f?f.split(" "):[]).map((e=>`tyk-form-group--${e}`))}function ae(){const e=C||((e,t)=>{var n,i;return null==(i=null==(n=null==e?void 0:e.name)?void 0:n.toLowerCase())?void 0:i.includes(t)});return q.filter((t=>e(t,J.toLowerCase())))}function le(){te(!0)}function ce(){te(!1),c||ue(""),Z(null)}function ue(e){Q(e),X&&ae().every((e=>e.id!==X.id))&&Z(null),e&&!ee&&le()}function he(e,t){const n=P(e,t);return re(n),void 0===n}function de(e){K(e),O(1!==W||c?e:e[0]||null)}function pe(e){if(!e)return;if(G.length>=W)return;if(G.some((({name:t})=>t===e)))return;const t=q.findIndex((t=>t.name===e));let n,i,o=[...G];-1===t?A&&(n={id:e,name:e},o=[...G,n]):(i=[...q.slice(0,t),Io(No({},q[t]),{selected:!0}),...q.slice(t+1)],n=q[t],o=[...G,q[t]]),he(o,n)&&E(G,o)&&(i&&Y(i),de(o))}function ge({id:e}){const t=q.find((t=>t.id===e));let n=G,i=q;t.selected?I&&1===W||(n=G.filter((e=>e.id!==t.id)),i=q.map((e=>e.id===t.id?Io(No({},e),{selected:!1}):e))):G.lengthe.id===t.id?Io(No({},e),{selected:!0}):e))):1===W&&(n=[t],i=q.map((e=>Io(No({},e),{selected:e.id===t.id})))),he(n,t)&&E(G,n)&&(de(n),Y(i)),(1===W||B)&&ce()}function me(){const e=ae().filter((e=>!e.disabled));if(0===e.length)return;if(null===X||1===e.length)return void Z(e[e.length-1]);const t=e.findIndex((e=>e.id===X.id));Z(e[t>0?t-1:e.length-1])}function fe(){const e=ae().filter((e=>!e.disabled));if(0===e.length)return;if(null===X||1===e.length)return void Z(e[0]);const t=e.findIndex((e=>e.id===X.id));Z(e[tt.id===e)),n=G.filter((t=>t.id!==e));E(G,n)&&(-1!==t&&Y([...q.slice(0,t),Io(No({},q[t]),{selected:!1}),...q.slice(t+1)]),de(n))}(t),"input.change"===e&&ue(t),"input.enter"===e&&(X?ge(X):u.includes("Enter")&&(pe(t),ue(""))),"input.arrowUp"===e&&(le(),me()),"input.arrowDown"===e&&(le(),fe()),"input.escape"===e&&ce(),"input.blur"===e&&h&&(pe(t),ue("")),"input.focus"===e&&le()}(e.slice(4),t),"value.select"===e&&ge(t.item),"value.select-all"===e&&function(e){if(q.length>W)return;const t=e?[...q]:[];E(G,t)&&(de(t),Y(q.map((t=>Io(No({},t),{selected:e})))),B&&ce())}(t),"text-value.click"===e&&le(),"search.change"===e&&ue(t),"search.escape"===e&&ce(),"search.arrowUp"===e&&me(),"search.arrowDown"===e&&fe(),"search.enter"===e&&X&&ge(X)}(0,e.useEffect)((()=>(window.addEventListener("click",be,!0),()=>window.removeEventListener("click",be,!0))),[]),(0,e.useEffect)((()=>{if(r.length){const e=r.map((e=>Io(No({},Po(e)),{selected:G.some((t=>t.id===e.id))})));Y(e),K((t=>t.map((t=>e.find((e=>e.id===t.id))||t))))}else q.length&&Y([])}),[r]),(0,e.useEffect)((()=>{const e=Do(o,q);K(e),Y((t=>t.map((t=>Io(No({},Po(t)),{selected:e.some((e=>e.id===t.id))})))))}),[o]),(0,e.useEffect)((()=>{if(!_)return()=>{};const e=z.current.querySelector(".tyk-combobox2__current-values"),t=()=>{e.scrollTop=e.scrollHeight},n=new MutationObserver(t),i=new ResizeObserver(t);return n.observe(e,{attributes:!0,childList:!0,subtree:!0}),i.observe(e),()=>{n.disconnect(),i.disconnect()}}));const we=ae(),Ae=["tyk-combobox2__current-values",_&&"expand-mode","tyk-combobox2__current-values--"+(ne?"expanded":"collapsed")].join(" ");return t().createElement("div",Io(No({ref:j,tabIndex:v?"-1":"0",onClickCapture:function(e){if(!v)return;if(!_)return void e.stopPropagation();const t=j.current.querySelector(".tyk-combobox2__values-container-trigger");t&&(t===e.target||t.contains(e.target)||e.stopPropagation())}},F),{className:[D,"tyk-form-group","tyk-combobox2",...se(),(b||oe)&&"has-error",l&&"tyk-form-group--label-has-width",v&&"disabled",_&&"is-expand-mode"].filter(Boolean).join(" ")}),a&&t().createElement("label",{style:{flexBasis:l||"auto"}},a),!w&&t().createElement("div",{className:"tyk-form-control__wrapper",style:{flexBasis:`calc(100% - ${l} - 20px)`}},t().createElement("div",{className:"tyk-form-control",ref:z},t().createElement("div",{className:Ae,onClick:le,role:"none"},t().createElement(So,{value:G,max:W,tags:c,tagSeparators:u,addTagOnBlur:h,allowCustomValues:A,placeholder:m,disabled:v,valueOverflow:s,renderValue:k,focus:ee,onMessage:ve,readOnly:w})),M&&t().createElement("div",{className:"tyk-combobox2__values-container-trigger"+(ne?" tyk-combobox2__values-container-trigger--expanded":""),role:"button",tabIndex:v?-1:0,onClick:ye,onKeyPress:ye},_?t().createElement(g,{type:ne?"compress-arrows-alt":"expand-arrows-alt"}):t().createElement(g,{family:"tykon",type:"arrowdown"}))),ee&&(!c||we.length>0)&&t().createElement(ct,Io(No({element:z,size:"matchElement",className:`tyk-combobox2__combobox-dropdown tyk-form-group ${se().join(" ")}`,ref:U,displayAxis:"vertical"},T),{infiniteScrollerConfig:R}),H?H(we,{tags:c,searchValue:J,activeItem:X,listRef:V,sendMessage:ve}):t().createElement(Eo,{listRef:V,showSearch:N,values:we,tags:c,searchValue:J,activeItem:X,onMessage:ve,renderListItem:x,selectAll:L})),y&&t().createElement("p",{className:"tyk-form-control__help-block"},y),(b&&"true"!==b&&"false"!==b||Boolean(oe))&&t().createElement("p",{className:"tyk-form-control__error-message"},b||oe)),w&&t().createElement("div",null,t().createElement(So,{value:G,tags:c,renderValue:k,readOnly:w})))}Fo.propTypes={allowCustomValues:r().bool,CustomListComponent:r().elementType,searchItem:r().func,renderValue:r().func,renderListItem:r().func,renderList:r().func,disabled:r().bool,readOnly:r().bool,error:r().string,label:r().oneOfType([r().arrayOf(r().node),r().node,r().element,r().func,r().string]),labelwidth:r().string,max:r().number,multiple:r().bool,note:r().oneOfType([r().node,r().element,r().string]),onBeforeChange:r().func,onChange:r().func,placeholder:r().string,tags:r().bool,tagSeparators:r().arrayOf(r().string),addTagOnBlur:r().bool,theme:r().string,value:r().oneOfType([r().string,r().instanceOf(Array),r().instanceOf(Object)]),values:r().instanceOf(Array),floatingContainerConfig:r().instanceOf(Object),valueOverflow:r().oneOf(["single","multiple"]),expandMode:r().bool,infiniteScrollerConfig:r().instanceOf(Object),displayDropdownTrigger:r().bool,selectAll:r().oneOfType([r().bool,r().shape({label:r().oneOfType([r().arrayOf(r().node),r().node,r().element,r().func,r().string]),mode:r().oneOf(["select","unselect"]),show:r().oneOf(["always","notSameState"]),render:r().func})]),closeOnSelect:r().bool,showSearch:r().bool,required:r().bool,validateOnChange:r().func,wrapperClassName:r().string};const Wo=Fo,Ho=require("flatpickr");var jo=n.n(Ho),zo=n(379),Uo=n.n(zo),Vo=n(795),Go=n.n(Vo),Ko=n(569),qo=n.n(Ko),Yo=n(565),Jo=n.n(Yo),Qo=n(216),Xo=n.n(Qo),Zo=n(589),er=n.n(Zo),tr=n(821),nr={};nr.styleTagTransform=er(),nr.setAttributes=Jo(),nr.insert=qo().bind(null,"head"),nr.domAPI=Go(),nr.insertStyleElement=Xo(),Uo()(tr.Z,nr),tr.Z&&tr.Z.locals&&tr.Z.locals;var ir=Object.defineProperty,or=Object.defineProperties,rr=Object.getOwnPropertyDescriptors,sr=Object.getOwnPropertySymbols,ar=Object.prototype.hasOwnProperty,lr=Object.prototype.propertyIsEnumerable,cr=(e,t,n)=>t in e?ir(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;function ur({children:n,disabled:i,readOnly:o=!1,error:r,id:s,label:a,labelwidth:l,note:c,onClose:u,onChange:h,onOpen:d,theme:p,config:m={},value:f,wrapperClassName:y=""}){const[b,v]=(0,e.useState)(null),w=(0,e.useRef)(null),A=C(f),k=(0,e.useCallback)(((e,t)=>{if(!e)return!0;if(!Array.isArray(t))return e.getTime()!==t.getTime();let n=t;return e&&t.length&&e.length?(n=t.filter(((t,n)=>t.getTime()!==e[n].getTime())),n.length>0):t.length>0}),[]),x=(0,e.useCallback)((e=>{const t="range"===m.mode?e:e[0]||null;h&&("range"===m.mode?2===t.length&&k(A,t)&&h(t):h(t))}),[A,h,k]);(0,e.useEffect)((()=>{if(w&&w.current&&!b){const t=jo()(w.current,(e=((e,t)=>{for(var n in t||(t={}))ar.call(t,n)&&cr(e,n,t[n]);if(sr)for(var n of sr(t))lr.call(t,n)&&cr(e,n,t[n]);return e})({},m),or(e,rr({defaultDate:f,onChange:x,onClose:u,onOpen:d}))));v(t)}var e;return()=>{b&&b.destroy()}}),[w.current,b]),(0,e.useEffect)((()=>{if(b){let e=f;"string"==typeof f?e=new Date(f):Array.isArray(f)&&(e=f.map((e=>"string"==typeof e?new Date(e):e))),k(A,e)&&(b.set("onChange",x),"range"===m.mode?e&&2===e.length&&b.setDate(e,!0):b.setDate(e,!0))}}),[A,f,b]);const S=["tyk-form-group","tyk-form-group--addon-right",y,...p?p.split(" ").map((e=>`tyk-form-group--${e}`)):[],l&&"tyk-form-group--label-has-width",r&&"has-error"].filter(Boolean).join(" "),$=(0,e.useCallback)((()=>{b&&b.open()}),[b]);return t().createElement(t().Fragment,null,n&&n.length?n({openCalendar:$,ref:w}):t().createElement("div",{className:S},a?t().createElement("label",{htmlFor:s,style:l?{flexBasis:l}:{}},a):null,!o&&t().createElement("div",{className:"tyk-form-control__wrapper flatpickr",style:l?{flexBasis:`calc(100% - ${l} - 20px)`}:{}},t().createElement("div",{className:"tyk-input-group"},(()=>{let e={},n={};return m&&m.inline&&(e={height:0,padding:0,width:0,visibility:"hidden"},n={display:"none"}),t().createElement(t().Fragment,null,t().createElement("input",{disabled:i,className:"tyk-form-control","data-input":!0,type:"date",ref:w,style:e}),t().createElement("div",{className:"tyk-input-group__addon",onClick:$,role:"button",onKeyUp:()=>{},tabIndex:0,style:n},t().createElement(g,{type:"calendar"})))})()),c?t().createElement("p",{className:"tyk-form-control__help-block"},c):null,r&&"true"!==r&&"false"!==r?t().createElement("p",{className:"tyk-form-control__error-message"},r):null)),t().createElement("div",{className:"tyk-form-control--readonly"},o&&!f&&"-",o&&f&&jo().formatDate(f,m.dateFormat||"d/m/Y")))}ur.propTypes={config:r().instanceOf(Object),children:r().oneOfType([r().element,r().node,r().string,r().func]),disabled:r().bool,readOnly:r().bool,id:r().string,label:r().oneOfType([r().arrayOf(r().node),r().node,r().element,r().func,r().string]),labelwidth:r().string,note:r().string,onChange:r().oneOfType([r().func,r().instanceOf(Array)]),onClose:r().oneOfType([r().func,r().instanceOf(Array)]),onOpen:r().oneOfType([r().func,r().instanceOf(Array)]),theme:r().string,error:r().string,value:r().oneOfType([r().instanceOf(Array),r().instanceOf(Object),r().string]),wrapperClassName:r().string};const hr=ur;function dr(e){return dr="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},dr(e)}function pr(e,t){if(t.length1?"s":"")+" required, but only "+t.length+" present")}function gr(e){return pr(1,arguments),e instanceof Date||"object"===dr(e)&&"[object Date]"===Object.prototype.toString.call(e)}function mr(e){pr(1,arguments);var t=Object.prototype.toString.call(e);return e instanceof Date||"object"===dr(e)&&"[object Date]"===t?new Date(e.getTime()):"number"==typeof e||"[object Number]"===t?new Date(e):("string"!=typeof e&&"[object String]"!==t||"undefined"==typeof console||(console.warn("Starting with v2.0.0-beta.1 date-fns doesn't accept strings as date arguments. Please use `parseISO` to parse strings. See: https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#string-arguments"),console.warn((new Error).stack)),new Date(NaN))}function fr(e){if(null===e||!0===e||!1===e)return NaN;var t=Number(e);return isNaN(t)?t:t<0?Math.ceil(t):Math.floor(t)}function yr(e){pr(1,arguments);var t=mr(e),n=t.getUTCDay(),i=(n<1?7:0)+n-1;return t.setUTCDate(t.getUTCDate()-i),t.setUTCHours(0,0,0,0),t}function br(e){pr(1,arguments);var t=mr(e),n=t.getUTCFullYear(),i=new Date(0);i.setUTCFullYear(n+1,0,4),i.setUTCHours(0,0,0,0);var o=yr(i),r=new Date(0);r.setUTCFullYear(n,0,4),r.setUTCHours(0,0,0,0);var s=yr(r);return t.getTime()>=o.getTime()?n+1:t.getTime()>=s.getTime()?n:n-1}var vr={};function wr(){return vr}function Ar(e,t){var n,i,o,r,s,a,l,c;pr(1,arguments);var u=wr(),h=fr(null!==(n=null!==(i=null!==(o=null!==(r=null==t?void 0:t.weekStartsOn)&&void 0!==r?r:null==t||null===(s=t.locale)||void 0===s||null===(a=s.options)||void 0===a?void 0:a.weekStartsOn)&&void 0!==o?o:u.weekStartsOn)&&void 0!==i?i:null===(l=u.locale)||void 0===l||null===(c=l.options)||void 0===c?void 0:c.weekStartsOn)&&void 0!==n?n:0);if(!(h>=0&&h<=6))throw new RangeError("weekStartsOn must be between 0 and 6 inclusively");var d=mr(e),p=d.getUTCDay(),g=(p=1&&p<=7))throw new RangeError("firstWeekContainsDate must be between 1 and 7 inclusively");var g=new Date(0);g.setUTCFullYear(h+1,0,p),g.setUTCHours(0,0,0,0);var m=Ar(g,t),f=new Date(0);f.setUTCFullYear(h,0,p),f.setUTCHours(0,0,0,0);var y=Ar(f,t);return u.getTime()>=m.getTime()?h+1:u.getTime()>=y.getTime()?h:h-1}function kr(e,t){for(var n=e<0?"-":"",i=Math.abs(e).toString();i.length0?n:1-n;return kr("yy"===t?i%100:i,t.length)},Sr=function(e,t){var n=e.getUTCMonth();return"M"===t?String(n+1):kr(n+1,2)},$r=function(e,t){return kr(e.getUTCDate(),t.length)},Er=function(e,t){return kr(e.getUTCHours()%12||12,t.length)},Or=function(e,t){return kr(e.getUTCHours(),t.length)},Tr=function(e,t){return kr(e.getUTCMinutes(),t.length)},_r=function(e,t){return kr(e.getUTCSeconds(),t.length)},Rr=function(e,t){var n=t.length,i=e.getUTCMilliseconds();return kr(Math.floor(i*Math.pow(10,n-3)),t.length)};var Mr={G:function(e,t,n){var i=e.getUTCFullYear()>0?1:0;switch(t){case"G":case"GG":case"GGG":return n.era(i,{width:"abbreviated"});case"GGGGG":return n.era(i,{width:"narrow"});default:return n.era(i,{width:"wide"})}},y:function(e,t,n){if("yo"===t){var i=e.getUTCFullYear(),o=i>0?i:1-i;return n.ordinalNumber(o,{unit:"year"})}return xr(e,t)},Y:function(e,t,n,i){var o=Cr(e,i),r=o>0?o:1-o;return"YY"===t?kr(r%100,2):"Yo"===t?n.ordinalNumber(r,{unit:"year"}):kr(r,t.length)},R:function(e,t){return kr(br(e),t.length)},u:function(e,t){return kr(e.getUTCFullYear(),t.length)},Q:function(e,t,n){var i=Math.ceil((e.getUTCMonth()+1)/3);switch(t){case"Q":return String(i);case"QQ":return kr(i,2);case"Qo":return n.ordinalNumber(i,{unit:"quarter"});case"QQQ":return n.quarter(i,{width:"abbreviated",context:"formatting"});case"QQQQQ":return n.quarter(i,{width:"narrow",context:"formatting"});default:return n.quarter(i,{width:"wide",context:"formatting"})}},q:function(e,t,n){var i=Math.ceil((e.getUTCMonth()+1)/3);switch(t){case"q":return String(i);case"qq":return kr(i,2);case"qo":return n.ordinalNumber(i,{unit:"quarter"});case"qqq":return n.quarter(i,{width:"abbreviated",context:"standalone"});case"qqqqq":return n.quarter(i,{width:"narrow",context:"standalone"});default:return n.quarter(i,{width:"wide",context:"standalone"})}},M:function(e,t,n){var i=e.getUTCMonth();switch(t){case"M":case"MM":return Sr(e,t);case"Mo":return n.ordinalNumber(i+1,{unit:"month"});case"MMM":return n.month(i,{width:"abbreviated",context:"formatting"});case"MMMMM":return n.month(i,{width:"narrow",context:"formatting"});default:return n.month(i,{width:"wide",context:"formatting"})}},L:function(e,t,n){var i=e.getUTCMonth();switch(t){case"L":return String(i+1);case"LL":return kr(i+1,2);case"Lo":return n.ordinalNumber(i+1,{unit:"month"});case"LLL":return n.month(i,{width:"abbreviated",context:"standalone"});case"LLLLL":return n.month(i,{width:"narrow",context:"standalone"});default:return n.month(i,{width:"wide",context:"standalone"})}},w:function(e,t,n,i){var o=function(e,t){pr(1,arguments);var n=mr(e),i=Ar(n,t).getTime()-function(e,t){var n,i,o,r,s,a,l,c;pr(1,arguments);var u=wr(),h=fr(null!==(n=null!==(i=null!==(o=null!==(r=null==t?void 0:t.firstWeekContainsDate)&&void 0!==r?r:null==t||null===(s=t.locale)||void 0===s||null===(a=s.options)||void 0===a?void 0:a.firstWeekContainsDate)&&void 0!==o?o:u.firstWeekContainsDate)&&void 0!==i?i:null===(l=u.locale)||void 0===l||null===(c=l.options)||void 0===c?void 0:c.firstWeekContainsDate)&&void 0!==n?n:1),d=Cr(e,t),p=new Date(0);return p.setUTCFullYear(d,0,h),p.setUTCHours(0,0,0,0),Ar(p,t)}(n,t).getTime();return Math.round(i/6048e5)+1}(e,i);return"wo"===t?n.ordinalNumber(o,{unit:"week"}):kr(o,t.length)},I:function(e,t,n){var i=function(e){pr(1,arguments);var t=mr(e),n=yr(t).getTime()-function(e){pr(1,arguments);var t=br(e),n=new Date(0);return n.setUTCFullYear(t,0,4),n.setUTCHours(0,0,0,0),yr(n)}(t).getTime();return Math.round(n/6048e5)+1}(e);return"Io"===t?n.ordinalNumber(i,{unit:"week"}):kr(i,t.length)},d:function(e,t,n){return"do"===t?n.ordinalNumber(e.getUTCDate(),{unit:"date"}):$r(e,t)},D:function(e,t,n){var i=function(e){pr(1,arguments);var t=mr(e),n=t.getTime();t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0);var i=n-t.getTime();return Math.floor(i/864e5)+1}(e);return"Do"===t?n.ordinalNumber(i,{unit:"dayOfYear"}):kr(i,t.length)},E:function(e,t,n){var i=e.getUTCDay();switch(t){case"E":case"EE":case"EEE":return n.day(i,{width:"abbreviated",context:"formatting"});case"EEEEE":return n.day(i,{width:"narrow",context:"formatting"});case"EEEEEE":return n.day(i,{width:"short",context:"formatting"});default:return n.day(i,{width:"wide",context:"formatting"})}},e:function(e,t,n,i){var o=e.getUTCDay(),r=(o-i.weekStartsOn+8)%7||7;switch(t){case"e":return String(r);case"ee":return kr(r,2);case"eo":return n.ordinalNumber(r,{unit:"day"});case"eee":return n.day(o,{width:"abbreviated",context:"formatting"});case"eeeee":return n.day(o,{width:"narrow",context:"formatting"});case"eeeeee":return n.day(o,{width:"short",context:"formatting"});default:return n.day(o,{width:"wide",context:"formatting"})}},c:function(e,t,n,i){var o=e.getUTCDay(),r=(o-i.weekStartsOn+8)%7||7;switch(t){case"c":return String(r);case"cc":return kr(r,t.length);case"co":return n.ordinalNumber(r,{unit:"day"});case"ccc":return n.day(o,{width:"abbreviated",context:"standalone"});case"ccccc":return n.day(o,{width:"narrow",context:"standalone"});case"cccccc":return n.day(o,{width:"short",context:"standalone"});default:return n.day(o,{width:"wide",context:"standalone"})}},i:function(e,t,n){var i=e.getUTCDay(),o=0===i?7:i;switch(t){case"i":return String(o);case"ii":return kr(o,t.length);case"io":return n.ordinalNumber(o,{unit:"day"});case"iii":return n.day(i,{width:"abbreviated",context:"formatting"});case"iiiii":return n.day(i,{width:"narrow",context:"formatting"});case"iiiiii":return n.day(i,{width:"short",context:"formatting"});default:return n.day(i,{width:"wide",context:"formatting"})}},a:function(e,t,n){var i=e.getUTCHours()/12>=1?"pm":"am";switch(t){case"a":case"aa":return n.dayPeriod(i,{width:"abbreviated",context:"formatting"});case"aaa":return n.dayPeriod(i,{width:"abbreviated",context:"formatting"}).toLowerCase();case"aaaaa":return n.dayPeriod(i,{width:"narrow",context:"formatting"});default:return n.dayPeriod(i,{width:"wide",context:"formatting"})}},b:function(e,t,n){var i,o=e.getUTCHours();switch(i=12===o?"noon":0===o?"midnight":o/12>=1?"pm":"am",t){case"b":case"bb":return n.dayPeriod(i,{width:"abbreviated",context:"formatting"});case"bbb":return n.dayPeriod(i,{width:"abbreviated",context:"formatting"}).toLowerCase();case"bbbbb":return n.dayPeriod(i,{width:"narrow",context:"formatting"});default:return n.dayPeriod(i,{width:"wide",context:"formatting"})}},B:function(e,t,n){var i,o=e.getUTCHours();switch(i=o>=17?"evening":o>=12?"afternoon":o>=4?"morning":"night",t){case"B":case"BB":case"BBB":return n.dayPeriod(i,{width:"abbreviated",context:"formatting"});case"BBBBB":return n.dayPeriod(i,{width:"narrow",context:"formatting"});default:return n.dayPeriod(i,{width:"wide",context:"formatting"})}},h:function(e,t,n){if("ho"===t){var i=e.getUTCHours()%12;return 0===i&&(i=12),n.ordinalNumber(i,{unit:"hour"})}return Er(e,t)},H:function(e,t,n){return"Ho"===t?n.ordinalNumber(e.getUTCHours(),{unit:"hour"}):Or(e,t)},K:function(e,t,n){var i=e.getUTCHours()%12;return"Ko"===t?n.ordinalNumber(i,{unit:"hour"}):kr(i,t.length)},k:function(e,t,n){var i=e.getUTCHours();return 0===i&&(i=24),"ko"===t?n.ordinalNumber(i,{unit:"hour"}):kr(i,t.length)},m:function(e,t,n){return"mo"===t?n.ordinalNumber(e.getUTCMinutes(),{unit:"minute"}):Tr(e,t)},s:function(e,t,n){return"so"===t?n.ordinalNumber(e.getUTCSeconds(),{unit:"second"}):_r(e,t)},S:function(e,t){return Rr(e,t)},X:function(e,t,n,i){var o=(i._originalDate||e).getTimezoneOffset();if(0===o)return"Z";switch(t){case"X":return Br(o);case"XXXX":case"XX":return Nr(o);default:return Nr(o,":")}},x:function(e,t,n,i){var o=(i._originalDate||e).getTimezoneOffset();switch(t){case"x":return Br(o);case"xxxx":case"xx":return Nr(o);default:return Nr(o,":")}},O:function(e,t,n,i){var o=(i._originalDate||e).getTimezoneOffset();switch(t){case"O":case"OO":case"OOO":return"GMT"+Lr(o,":");default:return"GMT"+Nr(o,":")}},z:function(e,t,n,i){var o=(i._originalDate||e).getTimezoneOffset();switch(t){case"z":case"zz":case"zzz":return"GMT"+Lr(o,":");default:return"GMT"+Nr(o,":")}},t:function(e,t,n,i){var o=i._originalDate||e;return kr(Math.floor(o.getTime()/1e3),t.length)},T:function(e,t,n,i){return kr((i._originalDate||e).getTime(),t.length)}};function Lr(e,t){var n=e>0?"-":"+",i=Math.abs(e),o=Math.floor(i/60),r=i%60;if(0===r)return n+String(o);var s=t||"";return n+String(o)+s+kr(r,2)}function Br(e,t){return e%60==0?(e>0?"-":"+")+kr(Math.abs(e)/60,2):Nr(e,t)}function Nr(e,t){var n=t||"",i=e>0?"-":"+",o=Math.abs(e);return i+kr(Math.floor(o/60),2)+n+kr(o%60,2)}const Ir=Mr;var Pr=function(e,t){switch(e){case"P":return t.date({width:"short"});case"PP":return t.date({width:"medium"});case"PPP":return t.date({width:"long"});default:return t.date({width:"full"})}},Dr=function(e,t){switch(e){case"p":return t.time({width:"short"});case"pp":return t.time({width:"medium"});case"ppp":return t.time({width:"long"});default:return t.time({width:"full"})}};const Fr={p:Dr,P:function(e,t){var n,i=e.match(/(P+)(p+)?/)||[],o=i[1],r=i[2];if(!r)return Pr(e,t);switch(o){case"P":n=t.dateTime({width:"short"});break;case"PP":n=t.dateTime({width:"medium"});break;case"PPP":n=t.dateTime({width:"long"});break;default:n=t.dateTime({width:"full"})}return n.replace("{{date}}",Pr(o,t)).replace("{{time}}",Dr(r,t))}};var Wr=["D","DD"],Hr=["YY","YYYY"];function jr(e,t,n){if("YYYY"===e)throw new RangeError("Use `yyyy` instead of `YYYY` (in `".concat(t,"`) for formatting years to the input `").concat(n,"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md"));if("YY"===e)throw new RangeError("Use `yy` instead of `YY` (in `".concat(t,"`) for formatting years to the input `").concat(n,"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md"));if("D"===e)throw new RangeError("Use `d` instead of `D` (in `".concat(t,"`) for formatting days of the month to the input `").concat(n,"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md"));if("DD"===e)throw new RangeError("Use `dd` instead of `DD` (in `".concat(t,"`) for formatting days of the month to the input `").concat(n,"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md"))}var zr={lessThanXSeconds:{one:"less than a second",other:"less than {{count}} seconds"},xSeconds:{one:"1 second",other:"{{count}} seconds"},halfAMinute:"half a minute",lessThanXMinutes:{one:"less than a minute",other:"less than {{count}} minutes"},xMinutes:{one:"1 minute",other:"{{count}} minutes"},aboutXHours:{one:"about 1 hour",other:"about {{count}} hours"},xHours:{one:"1 hour",other:"{{count}} hours"},xDays:{one:"1 day",other:"{{count}} days"},aboutXWeeks:{one:"about 1 week",other:"about {{count}} weeks"},xWeeks:{one:"1 week",other:"{{count}} weeks"},aboutXMonths:{one:"about 1 month",other:"about {{count}} months"},xMonths:{one:"1 month",other:"{{count}} months"},aboutXYears:{one:"about 1 year",other:"about {{count}} years"},xYears:{one:"1 year",other:"{{count}} years"},overXYears:{one:"over 1 year",other:"over {{count}} years"},almostXYears:{one:"almost 1 year",other:"almost {{count}} years"}};function Ur(e){return function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=t.width?String(t.width):e.defaultWidth;return e.formats[n]||e.formats[e.defaultWidth]}}const Vr={date:Ur({formats:{full:"EEEE, MMMM do, y",long:"MMMM do, y",medium:"MMM d, y",short:"MM/dd/yyyy"},defaultWidth:"full"}),time:Ur({formats:{full:"h:mm:ss a zzzz",long:"h:mm:ss a z",medium:"h:mm:ss a",short:"h:mm a"},defaultWidth:"full"}),dateTime:Ur({formats:{full:"{{date}} 'at' {{time}}",long:"{{date}} 'at' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},defaultWidth:"full"})};var Gr={lastWeek:"'last' eeee 'at' p",yesterday:"'yesterday at' p",today:"'today at' p",tomorrow:"'tomorrow at' p",nextWeek:"eeee 'at' p",other:"P"};function Kr(e){return function(t,n){var i;if("formatting"===(null!=n&&n.context?String(n.context):"standalone")&&e.formattingValues){var o=e.defaultFormattingWidth||e.defaultWidth,r=null!=n&&n.width?String(n.width):o;i=e.formattingValues[r]||e.formattingValues[o]}else{var s=e.defaultWidth,a=null!=n&&n.width?String(n.width):e.defaultWidth;i=e.values[a]||e.values[s]}return i[e.argumentCallback?e.argumentCallback(t):t]}}const qr={ordinalNumber:function(e,t){var n=Number(e),i=n%100;if(i>20||i<10)switch(i%10){case 1:return n+"st";case 2:return n+"nd";case 3:return n+"rd"}return n+"th"},era:Kr({values:{narrow:["B","A"],abbreviated:["BC","AD"],wide:["Before Christ","Anno Domini"]},defaultWidth:"wide"}),quarter:Kr({values:{narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1st quarter","2nd quarter","3rd quarter","4th quarter"]},defaultWidth:"wide",argumentCallback:function(e){return e-1}}),month:Kr({values:{narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],wide:["January","February","March","April","May","June","July","August","September","October","November","December"]},defaultWidth:"wide"}),day:Kr({values:{narrow:["S","M","T","W","T","F","S"],short:["Su","Mo","Tu","We","Th","Fr","Sa"],abbreviated:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],wide:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},defaultWidth:"wide"}),dayPeriod:Kr({values:{narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"}},defaultWidth:"wide",formattingValues:{narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"}},defaultFormattingWidth:"wide"})};function Yr(e){return function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=n.width,o=i&&e.matchPatterns[i]||e.matchPatterns[e.defaultMatchWidth],r=t.match(o);if(!r)return null;var s,a=r[0],l=i&&e.parsePatterns[i]||e.parsePatterns[e.defaultParseWidth],c=Array.isArray(l)?function(e,t){for(var n=0;n1&&void 0!==arguments[1]?arguments[1]:{},n=e.match(Jr.matchPattern);if(!n)return null;var i=n[0],o=e.match(Jr.parsePattern);if(!o)return null;var r=Jr.valueCallback?Jr.valueCallback(o[0]):o[0];return{value:r=t.valueCallback?t.valueCallback(r):r,rest:e.slice(i.length)}}),era:Yr({matchPatterns:{narrow:/^(b|a)/i,abbreviated:/^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i,wide:/^(before christ|before common era|anno domini|common era)/i},defaultMatchWidth:"wide",parsePatterns:{any:[/^b/i,/^(a|c)/i]},defaultParseWidth:"any"}),quarter:Yr({matchPatterns:{narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](th|st|nd|rd)? quarter/i},defaultMatchWidth:"wide",parsePatterns:{any:[/1/i,/2/i,/3/i,/4/i]},defaultParseWidth:"any",valueCallback:function(e){return e+1}}),month:Yr({matchPatterns:{narrow:/^[jfmasond]/i,abbreviated:/^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,wide:/^(january|february|march|april|may|june|july|august|september|october|november|december)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^ap/i,/^may/i,/^jun/i,/^jul/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},defaultParseWidth:"any"}),day:Yr({matchPatterns:{narrow:/^[smtwf]/i,short:/^(su|mo|tu|we|th|fr|sa)/i,abbreviated:/^(sun|mon|tue|wed|thu|fri|sat)/i,wide:/^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^s/i,/^m/i,/^t/i,/^w/i,/^t/i,/^f/i,/^s/i],any:[/^su/i,/^m/i,/^tu/i,/^w/i,/^th/i,/^f/i,/^sa/i]},defaultParseWidth:"any"}),dayPeriod:Yr({matchPatterns:{narrow:/^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,any:/^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i},defaultMatchWidth:"any",parsePatterns:{any:{am:/^a/i,pm:/^p/i,midnight:/^mi/i,noon:/^no/i,morning:/morning/i,afternoon:/afternoon/i,evening:/evening/i,night:/night/i}},defaultParseWidth:"any"})};const Xr={code:"en-US",formatDistance:function(e,t,n){var i,o=zr[e];return i="string"==typeof o?o:1===t?o.one:o.other.replace("{{count}}",t.toString()),null!=n&&n.addSuffix?n.comparison&&n.comparison>0?"in "+i:i+" ago":i},formatLong:Vr,formatRelative:function(e,t,n,i){return Gr[e]},localize:qr,match:Qr,options:{weekStartsOn:0,firstWeekContainsDate:1}};var Zr=/[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g,es=/P+p+|P+|p+|''|'(''|[^'])+('|$)|./g,ts=/^'([^]*?)'?$/,ns=/''/g,is=/[a-zA-Z]/;function os(e,t,n){var i,o,r,s,a,l,c,u,h,d,p,g,m,f,y,b,v,w;pr(2,arguments);var A=String(t),C=wr(),k=null!==(i=null!==(o=null==n?void 0:n.locale)&&void 0!==o?o:C.locale)&&void 0!==i?i:Xr,x=fr(null!==(r=null!==(s=null!==(a=null!==(l=null==n?void 0:n.firstWeekContainsDate)&&void 0!==l?l:null==n||null===(c=n.locale)||void 0===c||null===(u=c.options)||void 0===u?void 0:u.firstWeekContainsDate)&&void 0!==a?a:C.firstWeekContainsDate)&&void 0!==s?s:null===(h=C.locale)||void 0===h||null===(d=h.options)||void 0===d?void 0:d.firstWeekContainsDate)&&void 0!==r?r:1);if(!(x>=1&&x<=7))throw new RangeError("firstWeekContainsDate must be between 1 and 7 inclusively");var S=fr(null!==(p=null!==(g=null!==(m=null!==(f=null==n?void 0:n.weekStartsOn)&&void 0!==f?f:null==n||null===(y=n.locale)||void 0===y||null===(b=y.options)||void 0===b?void 0:b.weekStartsOn)&&void 0!==m?m:C.weekStartsOn)&&void 0!==g?g:null===(v=C.locale)||void 0===v||null===(w=v.options)||void 0===w?void 0:w.weekStartsOn)&&void 0!==p?p:0);if(!(S>=0&&S<=6))throw new RangeError("weekStartsOn must be between 0 and 6 inclusively");if(!k.localize)throw new RangeError("locale must contain localize property");if(!k.formatLong)throw new RangeError("locale must contain formatLong property");var $=mr(e);if(!function(e){if(pr(1,arguments),!gr(e)&&"number"!=typeof e)return!1;var t=mr(e);return!isNaN(Number(t))}($))throw new RangeError("Invalid time value");var E=function(e){var t=new Date(Date.UTC(e.getFullYear(),e.getMonth(),e.getDate(),e.getHours(),e.getMinutes(),e.getSeconds(),e.getMilliseconds()));return t.setUTCFullYear(e.getFullYear()),e.getTime()-t.getTime()}($),O=function(e,t){return pr(2,arguments),function(e,t){pr(2,arguments);var n=mr(e).getTime(),i=fr(t);return new Date(n+i)}(e,-fr(t))}($,E),T={firstWeekContainsDate:x,weekStartsOn:S,locale:k,_originalDate:$};return A.match(es).map((function(e){var t=e[0];return"p"===t||"P"===t?(0,Fr[t])(e,k.formatLong):e})).join("").match(Zr).map((function(i){if("''"===i)return"'";var o,r,s=i[0];if("'"===s)return(r=(o=i).match(ts))?r[1].replace(ns,"'"):o;var a,l=Ir[s];if(l)return null!=n&&n.useAdditionalWeekYearTokens||(a=i,-1===Hr.indexOf(a))||jr(i,t,String(e)),null!=n&&n.useAdditionalDayOfYearTokens||!function(e){return-1!==Wr.indexOf(e)}(i)||jr(i,t,String(e)),l(O,i,k.localize,T);if(s.match(is))throw new RangeError("Format string contains an unescaped latin alphabet character `"+s+"`");return i})).join("")}var rs=n(590),ss=n.n(rs),as=Object.defineProperty,ls=Object.defineProperties,cs=Object.getOwnPropertyDescriptors,us=Object.getOwnPropertySymbols,hs=Object.prototype.hasOwnProperty,ds=Object.prototype.propertyIsEnumerable,ps=(e,t,n)=>t in e?as(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;const gs=class n extends e.Component{static getMainFormValue(e){const t=new Array(e.length);return e.forEach(((e,n)=>{t[n]=e.props.value||void 0})),t}constructor(t){super(t);const{components:i}=t;this.submitButtonRef=(0,e.createRef)(),this.handleOnChange=this.handleOnChange.bind(this),this.submitForm=this.submitForm.bind(this),this.state={components:i,errors:{},mainError:null,mainFormValue:n.getMainFormValue(i),refs:[]}}componentDidMount(){const{addValueOnFieldChange:e,getMainFormButtonWidth:t}=this.props;this.createRefs(),t&&t(e?0:this.submitButtonRef.current.clientWidth)}static getDerivedStateFromProps(e,t){const i={},{components:o}=e,{components:r}=t;return ss()(o,r)||ss()(n.getMainFormValue(o),n.getMainFormValue(r))||(i.mainFormValue=n.getMainFormValue(o),i.components=o),i}getFormCssClasses(){const{noLabels:e}=this.props,t=["tyk-editable-list__form"];return e&&t.push("no-labels"),t.join(" ")}getButtonClassName(){const{buttonStyle:e,displayType:t}=this.props,n=[];return e&&n.push(e),t&&n.push(t),n.join(" ")}getComponentsError(e){const{error:t,errors:n,mainError:i}=this.state;return t||i?n[e.props.name]="true":t||i||"true"!==n[e.props.name]||delete n[e.props.name],n[e.props.name]?n[e.props.name].toString():void 0}createRefs(){const{components:t}=this.props,n=[];t.forEach((()=>{n.push((0,e.createRef)())})),this.setState({refs:n})}validateValue(e,t){const{mainError:n,errors:i}=this.state,{error:o,errorPersist:r}=this.props,s=t.validate?Object.keys(t.validate):[],a={errors:o||n?{}:Object.assign({},i)};let l=!0;if(r)return a;for(let n=0;n0||(t.forEach(((e,t)=>{o.errors=Object.assign({},o.errors,this.validateValue(i[t],e.props).errors)})),Object.keys(o.errors).length>0))}handleOnChange(e,t,n){const{addValueOnFieldChange:i}=this.props;let o=this.state;o=Object.assign({},o,this.validateValue(n,e.props)),o.errors[e.props.name]||(o.mainFormValue[t]=n,e.props.onChange&&e.props.onChange(n)),this.setState((e=>Object.assign({},e,o)),(()=>{i&&this.submitForm()}))}resetForm(){const{refs:e}=this.state,{components:t}=this.props;e.forEach((e=>{var t;(null==(t=e.current)?void 0:t.reset)&&e.current.reset()})),this.setState({errors:{},mainError:null,mainFormValue:n.getMainFormValue(t)})}showMainError(e){this.setState({mainError:e})}submitForm(){const{errors:e,mainFormValue:t}=this.state,{errorPersist:n,onSubmit:i,validate:o,validationmessage:r}=this.props;n&&(i(t),this.resetForm()),0===Object.keys(e).length&&i&&"function"==typeof i&&(o&&o(t)?this.showMainError(r):(i(t),this.resetForm()))}render(){const{addValueOnFieldChange:e,components:n,buttonName:i,disabled:o,displayType:r,error:s}=this.props,{mainError:a,refs:l,errors:c}=this.state;return t().createElement("div",null,t().createElement("div",{className:this.getFormCssClasses()},t().createElement(Hi,null,n.map(((e,n)=>{const i=e.name,s=e.props,{onChange:a,value:c}=s,u=((e,t)=>{var n={};for(var i in e)hs.call(e,i)&&t.indexOf(i)<0&&(n[i]=e[i]);if(null!=e&&us)for(var i of us(e))t.indexOf(i)<0&&ds.call(e,i)&&(n[i]=e[i]);return n})(s,["onChange","value"]);return t().createElement(Li,{size:`md-${e.size||"12"} lg-${e.size||"12"}`,key:e.props.name},t().createElement(i,(h=((e,t)=>{for(var n in t||(t={}))hs.call(t,n)&&ps(e,n,t[n]);if(us)for(var n of us(t))ds.call(t,n)&&ps(e,n,t[n]);return e})({disabled:o||e.props.disabled,onChange:this.handleOnChange.bind(this,e,n)},u),d={label:"inline"===r?"":e.props.label,error:this.getComponentsError(e),ref:l[n],value:c},ls(h,cs(d)))));var h,d}))),e?null:t().createElement("span",{className:this.getButtonClassName(),ref:this.submitButtonRef},t().createElement(q,{disabled:this.hasMainFormErrors(c),className:"tyk-editable-list__submit-btn",onClick:this.submitForm,theme:"default",type:"button",size:"inline"===r?"sm":"md"},i||"ADD"))),s||a?t().createElement("div",{className:"tyk-editable-list-main-error"},t().createElement("p",{className:"error-message"},s||a)):null)}};((e,t,n)=>{ps(e,t+"",n)})(gs,"propTypes",{addValueOnFieldChange:r().bool,noLabels:r().bool,buttonName:r().string,buttonStyle:r().string,components:r().instanceOf(Array),displayType:r().string,disabled:r().bool,getMainFormButtonWidth:r().func,error:r().string,errorPersist:r().bool,onSubmit:r().func,validate:r().func,validationmessage:r().string});let ms=gs;var fs=Object.defineProperty;const ys=class n extends e.Component{static getItemListValue(e){let t=null;return"string"==typeof e&&(t=e),"[object Object]"===Object.prototype.toString.call(e)&&(t=e.name),gr(e)&&(t=os(e,"dd/MM/yyyy")),t}static getListItemCssClass(e){const t=[];return"inline"===e&&t.push("tyk-editable-list-item--inline"),t.join(" ")}constructor(t){super(t);const{value:n}=this.props;this.state={initialValue:n||"",value:n||[],buttonWidth:0},this.startIndex=1,this.handleFormSubmit=this.handleFormSubmit.bind(this),this.getMainFormButtonWidth=this.getMainFormButtonWidth.bind(this),this.dropdownListItemRef=(0,e.createRef)()}static getDerivedStateFromProps(e,t){const n={};return e.value&&JSON.stringify(e.value)!==JSON.stringify(t.initialValue)&&(n.value=e.value||[],n.initialValue=e.value||""),n.value?n:null}getListItemsCssClass(e){const{config:t}=this.props,n=["tyk-editable-list-items"];return n.push(t.displayType||"table"),"inline"===e&&n.push("tyk-editable-list-items--inline"),n.join(" ")}getFormInputKey(){return this.startIndex+=1,this.startIndex}getListItemText(e){const{config:i}=this.props;let o=null;switch(i.displayType){case"list":case"inline":o=e.value.reduce(((t,i,o)=>{const r=n.getItemListValue(i);let s=", ";return o===e.value.length-1&&(s=""),t+r+s}),"");break;default:o=t().createElement(Hi,null,i.components.map(((i,o)=>t().createElement(Li,{key:this.getFormInputKey(),size:`md-${i.size} lg-${i.size}`},n.getItemListValue(e.value[o])))))}return o}getMainFormButtonWidth(e){this.setState({buttonWidth:e})}setItemEditMode(e){const t=this.closeListItems();this.setState((n=>{const i=Object.assign({},n);return i.value=t,i.value[e].editMode=!i.value[e].editMode,i}))}isInList(e,t){const{value:n}=this.state;let i=!1;return n.forEach(((n,o)=>{JSON.stringify(n.value)===JSON.stringify(t)&&(i=!(e>=0&&o===e))})),i}addValues(e){const{value:t}=this.state,{config:n}=this.props,i={editMode:!1,value:e},o={value:t.slice(0)};return n.children&&(i.children=[]),o.value.push(i),o}removeListItem(e){let t;this.setState((n=>{const i=n.value.slice(0);return t=i.splice(e,1),{value:i}}),(()=>{this.triggerOnChange(e,t,null)}))}handleFormSubmit(e){const t=this.addValues(e);this.setState((e=>Object.assign({},e,t)),(()=>{this.triggerOnChange(t.value.length-1,null,e)}))}handleItemUpdate(e,t){let n;this.setState((i=>{const o=Object.assign({},i);return n=(0,X.fromJS)(o.value[e].value).toJS(),o.value[e].value=t,o.value[e].editMode=!1,o}),(()=>{this.triggerOnChange(e,n,t)}))}handleChildrenOnChange(e,t){let n;this.setState((i=>{const o=Object.assign({},i);return n=(0,X.fromJS)(o.value[e].children).toJS(),o.value[e].children=t,o}),(()=>{this.triggerOnChange(e,n,t)}))}closeListItems(){const{value:e}=this.state;return e.map((e=>{const t=Object.assign({},e);return t.editMode?(t.editMode=!1,t):t}))}triggerOnChange(e,t,n){const{onChange:i}=this.props,{value:o}=this.state;i&&"function"==typeof i&&i(o.length?o:null,e,t,n)}genListItem(i,o){const{config:r,disabled:s}=this.props,{buttonWidth:a,value:l}=this.state,c=(0,X.fromJS)(r.components).toJS();return i.value.forEach(((e,t)=>{c[t].props.value=e})),t().createElement("li",{key:o,className:n.getListItemCssClass(r.displayType),ref:this.dropdownListItemRef},t().createElement("div",{className:`tyk-editable-list-item__text ${r.displayType||"table"}${i.editMode?" edit-mode-wrapper":""}`},i.editMode?t().createElement(e.Fragment,null,t().createElement(ms,{buttonName:"Update",noLabels:r.noLabels,disabled:s,displayType:r.displayType,components:c,onSubmit:this.handleItemUpdate.bind(this,o),validate:this.isInList.bind(this,o),validationmessage:"This value is already in the list"}),t().createElement("button",{type:"button",className:"tyk-editable-list-action__button on-edit",onClick:this.removeListItem.bind(this,o)},t().createElement(g,{type:"trash"}))):t().createElement(e.Fragment,null,this.getListItemText(i,o),t().createElement("div",{className:"tyk-editable-list-item__controls",style:{display:"block",width:"inline"===r.displayType?"auto":`${a+60}px`}},t().createElement("button",{disabled:s,type:"button",className:"tyk-editable-list-action__button",onClick:this.setItemEditMode.bind(this,o)},t().createElement(g,{type:"edit"})),t().createElement("button",{disabled:s,type:"button",className:"tyk-editable-list-action__button",onClick:this.removeListItem.bind(this,o)},t().createElement(g,{type:"trash"}))))),r.children?t().createElement(n,{disabled:s,onChange:this.handleChildrenOnChange.bind(this,o),config:r.children.config,value:l[o]&&l[o].children||[]}):null)}genList(){const{config:n}=this.props,{buttonWidth:i,value:o}=this.state;return o&&0!==o.length?t().createElement(e.Fragment,null,"table"!==n.displayType&&n.displayType?null:t().createElement("div",{className:"tyk-editable-list__header",style:{paddingRight:`${i+60}px`}},t().createElement(Hi,null,n.components.map(((e,n)=>t().createElement(Li,{key:e.props.label||n,size:`md-${e.size||12} lg-${e.size||12}`},e.props.label))))),t().createElement("ul",{className:this.getListItemsCssClass(n.displayType)},o.map(((e,t)=>this.genListItem(e,t))))):null}render(){const{addValueOnFieldChange:e,config:n,error:i,disabled:o,label:r}=this.props,s=document.querySelector(n.appendTo)||document.querySelector("body");return t().createElement("div",{className:"tyk-editable-list"},r?t().createElement("label",null,r):null,t().createElement(ms,{addValueOnFieldChange:e,components:n.components,buttonName:n.formButtonTitle,buttonStyle:n.formButtonStyle,disabled:o,error:i,errorPersist:!!i,noLabels:n.noLabels,onSubmit:this.handleFormSubmit,validate:this.isInList.bind(this,-1),validationmessage:"This value is already in the list",getMainFormButtonWidth:this.getMainFormButtonWidth}),n.appendTo?Fe().createPortal(this.genList(),s):this.genList())}};((e,t,n)=>{((e,t,n)=>{t in e?fs(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n})(e,t+"",n)})(ys,"propTypes",{addValueOnFieldChange:r().bool,disabled:r().bool,error:r().string,config:r().instanceOf(Object),onChange:r().func,label:r().oneOfType([r().arrayOf(r().node),r().node,r().element,r().func,r().string]),value:r().oneOfType([r().instanceOf(Array),r().instanceOf(Object)])});let bs=ys;const vs=({label:e,addButtonName:n,onAddRow:i,disabled:o,readOnly:r})=>t().createElement("div",{className:"editable-list__header"},e?t().createElement("label",null,e):null,!o&&!r&&t().createElement(q,{theme:"primary rounded-corners",onClick:i},n||"Add"));vs.propTypes={disabled:r().bool,readOnly:r().bool,onAddRow:r().func,addButtonName:r().string,label:r().oneOfType([r().string,r().element,r().node])};const ws=vs,As=({fields:e,readOnly:n})=>t().createElement("li",{className:"editable-list__item editable-list__item-header"},e.map((e=>{var n;return t().createElement("div",{className:`editable-list__item-cell editable-list__item--size-${(null==e?void 0:e.size)||12}`},null==(n=null==e?void 0:e.props)?void 0:n.label)})),t().createElement("div",{className:`editable-list__item-cell editable-list__item-action ${n&&"editable-list__item-action--read-only"}`},"Delete"));As.propTypes={fields:r().instanceOf(Array),readOnly:r().bool};const Cs=As;var ks=Object.defineProperty,xs=Object.defineProperties,Ss=Object.getOwnPropertyDescriptors,$s=Object.getOwnPropertySymbols,Es=Object.prototype.hasOwnProperty,Os=Object.prototype.propertyIsEnumerable,Ts=(e,t,n)=>t in e?ks(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;const _s=({fields:e,disabled:n,readOnly:i,errors:o,components:r,onChange:s,onDelete:a,value:l,rowIndex:c})=>t().createElement("li",{className:"editable-list__item"},r.map(((r,a)=>{var u,h,d;let p=e[a],g="function"==typeof p?p(c,a):p;return t().createElement("div",{className:`editable-list__item-cell editable-list__item--size-${(null==(u=e[a])?void 0:u.size)||12}`},t().createElement(r,(m=((e,t)=>{for(var n in t||(t={}))Es.call(t,n)&&Ts(e,n,t[n]);if($s)for(var n of $s(t))Os.call(t,n)&&Ts(e,n,t[n]);return e})({},null==g?void 0:g.props),f={label:"",value:l[a],onChange:s.bind(null,a),error:null==o?void 0:o[a],disabled:n||(null==(h=null==g?void 0:g.props)?void 0:h.disabled),readOnly:i||(null==(d=null==g?void 0:g.props)?void 0:d.readOnly)},xs(m,Ss(f)))));var m,f})),t().createElement("div",{className:`editable-list__item-cell editable-list__item-action ${i&&"editable-list__item-action--read-only"}`},t().createElement(q,{iconOnly:!0,iconType:"trash-alt",theme:"primary-link",onClick:a,disabled:i||n})));_s.propTypes={disabled:r().bool,readOnly:r().bool,rowIndex:r().oneOfType([r().string,r().number]),fields:r().instanceOf(Array),errors:r().instanceOf(Array),components:r().instanceOf(Array),value:r().instanceOf(Array),onChange:r().func,onDelete:r().func};const Rs=_s;var Ms=Object.defineProperty,Ls=Object.defineProperties,Bs=Object.getOwnPropertyDescriptors,Ns=Object.getOwnPropertySymbols,Is=Object.prototype.hasOwnProperty,Ps=Object.prototype.propertyIsEnumerable,Ds=(e,t,n)=>t in e?Ms(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;let Fs=1;const Ws=({addButtonName:n,disabled:i,readOnly:o,fields:r,label:s,error:a,value:l=[],onChange:c=(()=>{}),hideOnEmpty:u=!0,wrapperClassName:h=""})=>{const[d,p]=(0,e.useState)(null),g=(e,t,n,i)=>{var o;const s=l?[...l]:[];if(l){const i=[...s[e]];i[t]=n,s[e]=i,s[e].id=l[e].id}else s[e]=[...new Array(r.length)],s[e][t]=n;if((null==(o=null==d?void 0:d[e])?void 0:o[t])&&i){const n=[...d],i=[...n[e]];i[t]=null,n[e]=i,p(n)}c(s)},m=(0,e.useMemo)((()=>r.map((n=>{let i="function"==typeof n?n():n;return o=(null==i?void 0:i.component)||t().createElement(t().Fragment,null),n=>{var i=n,{onChange:r,validate:s,error:a}=i,l=((e,t)=>{var n={};for(var i in e)Is.call(e,i)&&t.indexOf(i)<0&&(n[i]=e[i]);if(null!=e&&Ns)for(var i of Ns(e))t.indexOf(i)<0&&Ps.call(e,i)&&(n[i]=e[i]);return n})(i,["onChange","validate","error"]);const[c,u]=(0,e.useState)(null),h=(0,e.useCallback)((e=>{const t=(null==e?void 0:e.target)?["radio","checkbox"].includes(e.target.type)?e.target.checked:null==e?void 0:e.target.value:e;let n=!0;if(s&&"function"==typeof s){const e=s(t);n=!e,u(e)}r(t,n)}),[s,r]);return t().createElement(o,(d=((e,t)=>{for(var n in t||(t={}))Is.call(t,n)&&Ds(e,n,t[n]);if(Ns)for(var n of Ns(t))Ps.call(t,n)&&Ds(e,n,t[n]);return e})({},l),Ls(d,Bs({onChange:h,error:c||a}))));var d};var o}))),[]),f=e=>{if(!l)return;const t=[...l];t.splice(e,1),c(t)};return t().createElement("div",{className:`editable-list__wrapper tyk-form-group tyk-form-group--default ${a?"has-error":""} ${h}`},t().createElement(ws,{disabled:i,readOnly:o,label:s,addButtonName:n,onAddRow:()=>{const e=((e,t)=>{var n;return null==(n=t||[[void 0,void 0]])?void 0:n.map((t=>null==t?void 0:t.map(((t,n)=>{var i,o;return(null==(o=null==(i=null==e?void 0:e[n])?void 0:i.props)?void 0:o.validate)&&e[n].props.validate(t)}))))})(r,l);if((e=>{var t;return Boolean(null==(t=null==e?void 0:e.flat())?void 0:t.filter(Boolean).length)})(e))return void p(e);const t=[...new Array(r.length)];t.id="row-"+Fs++,c([...l&&l,t])}}),(null==l?void 0:l.length)||!u?t().createElement("ul",{className:"editable-list__list"},(l||[[]]).map(((e,n)=>t().createElement(t().Fragment,null,t().createElement(Rs,{key:e.id||n,rowIndex:n,disabled:i,readOnly:o,fields:r,onChange:g.bind(null,n),onDelete:f.bind(null,n),value:e,errors:null==d?void 0:d[n],components:m})))),t().createElement(Cs,{fields:r,readOnly:o})):null,a&&"true"!==a&&"false"!==a?t().createElement("p",{className:"tyk-form-control__error-message"},a):null)};Ws.propTypes={disabled:r().bool,readOnly:r().bool,addButtonName:r().string,label:r().oneOfType([r().string,r().element,r().node]),fields:r().instanceOf(Array),onChange:r().func,value:r().oneOfType([r().instanceOf(Object),r().instanceOf(Array)]),error:r().string,hideOnEmpty:r().bool,wrapperClassName:r().string};const Hs=Ws;var js=Object.defineProperty,zs=Object.defineProperties,Us=Object.getOwnPropertyDescriptors,Vs=Object.getOwnPropertySymbols,Gs=Object.prototype.hasOwnProperty,Ks=Object.prototype.propertyIsEnumerable,qs=(e,t,n)=>t in e?js(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;class Ys extends e.Component{constructor(t){super(t),this.handleOnChange=this.handleOnChange.bind(this),this.clearValue=this.clearValue.bind(this),this.fileInputRef=(0,e.createRef)()}getCssClasses(){const{error:e,theme:t,labelwidth:n,wrapperClassName:i=""}=this.props,o=[i,"tyk-form-group"],r=t?t.split(" "):[];return r.length&&r.forEach((e=>{o.push(`tyk-form-group--${e}`)})),n&&o.push("tyk-form-group--label-has-width"),e&&o.push("has-error"),o.join(" ")}getLabelStyles(){const{labelwidth:e}=this.props,t={};return e&&(t.flexBasis=e),t}getNonLabelWidth(){const{labelwidth:e}=this.props,t={};return e&&(t.flexBasis=`calc(100% - ${e} - 20px)`),t}getFileInputError(){const{error:e}=this.props;return e&&"true"!==e&&"false"!==e?t().createElement("p",{className:"tyk-form-control__error-message"},e):null}getFileInputComponent(){const e=this.props,{accept:n,value:i,onChange:o}=e,r=((e,t)=>{var n={};for(var i in e)Gs.call(e,i)&&t.indexOf(i)<0&&(n[i]=e[i]);if(null!=e&&Vs)for(var i of Vs(e))t.indexOf(i)<0&&Ks.call(e,i)&&(n[i]=e[i]);return n})(e,["accept","value","onChange"]);return t().createElement("div",{className:"tyk-file-input__wrapper",style:this.getNonLabelWidth()},t().createElement("input",(s=((e,t)=>{for(var n in t||(t={}))Gs.call(t,n)&&qs(e,n,t[n]);if(Vs)for(var n of Vs(t))Ks.call(t,n)&&qs(e,n,t[n]);return e})({accept:n,className:"tyk-form-control"},r),a={onChange:this.handleOnChange,ref:this.fileInputRef,type:"file"},zs(s,Us(a)))),this.fileInputRef.current&&this.fileInputRef.current.files.length>0?t().createElement("button",{onClick:this.clearValue,type:"button"},t().createElement(g,{type:"times"})):null);var s,a}clearValue(){const{onChange:e}=this.props;this.fileInputRef.current.value="",e("")}handleOnChange(e){const{onChange:t}=this.props;t(e.target.files)}reset(){}render(){const{id:n,label:i,note:o}=this.props;return t().createElement(e.Fragment,null,t().createElement("div",{className:this.getCssClasses()},i?t().createElement("label",{htmlFor:n,style:this.getLabelStyles()},i):null,t().createElement("div",{className:"tyk-form-control__wrapper"},this.getFileInputComponent(),o?t().createElement("p",{className:"tyk-form-control__help-block"},o):null),this.getFileInputError()))}}((e,t,n)=>{qs(e,t+"",n)})(Ys,"propTypes",{accept:r().string,disabled:r().bool,id:r().string,error:r().oneOfType([r().string,r().bool]),label:r().oneOfType([r().arrayOf(r().node),r().node,r().element,r().func,r().string]),labelwidth:r().string,name:r().string,note:r().string,onChange:r().func,placeholder:r().string,theme:r().string,value:r().instanceOf(Object),wrapperClassName:r().string});var Js=Object.defineProperty,Qs=Object.defineProperties,Xs=Object.getOwnPropertyDescriptors,Zs=Object.getOwnPropertySymbols,ea=Object.prototype.hasOwnProperty,ta=Object.prototype.propertyIsEnumerable,na=(e,t,n)=>t in e?Js(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;const ia=class n extends e.Component{static getAddon(e){return t().createElement("div",{className:"tyk-input-group__addon"},e)}constructor(e){super(e);const{value:t}=this.props;this.state={initValue:t,stateValue:t},this.handleOnChange=this.handleOnChange.bind(this)}componentDidUpdate(e){const{isfield:t,value:n,onChange:i}=this.props;t||e.value===n||this.setState({stateValue:n},(()=>{i&&i(n)}))}getLabelStyles(){const{labelwidth:e}=this.props,t={};return e&&(t.flexBasis=e),t}getNonLabelWidth(){const{labelwidth:e}=this.props,t={};return e&&(t.flexBasis=`calc(100% - ${e} - 20px)`),t}getInputError(){const{error:e}=this.props;return e&&"true"!==e&&"false"!==e?t().createElement("p",{className:"tyk-form-control__error-message"},e):null}getCssClasses(){const{error:e,theme:t,labelwidth:n,inputgroupaddonleft:i,inputgroupaddonright:o}=this.props,r=["tyk-form-group"],s=t?t.split(" "):[];return s.length&&s.forEach((e=>{r.push(`tyk-form-group--${e}`)})),i&&r.push("tyk-form-group--addon-left"),o&&r.push("tyk-form-group--addon-right"),n&&r.push("tyk-form-group--label-has-width"),e&&r.push("has-error"),r.join(" ")}getInputGroupAddon(){const{inputgroupaddonleft:e,inputgroupaddonright:i}=this.props;return t().createElement("div",{className:"tyk-input-group"},e?n.getAddon(e):null,this.getInputComponent(),i?n.getAddon(i):null)}getInputComponent(){const e=this.props,{isfield:n,onChange:i,value:o}=e,r=((e,t)=>{var n={};for(var i in e)ea.call(e,i)&&t.indexOf(i)<0&&(n[i]=e[i]);if(null!=e&&Zs)for(var i of Zs(e))t.indexOf(i)<0&&ta.call(e,i)&&(n[i]=e[i]);return n})(e,["isfield","onChange","value"]),{stateValue:s}=this.state;return t().createElement("input",(a=((e,t)=>{for(var n in t||(t={}))ea.call(t,n)&&na(e,n,t[n]);if(Zs)for(var n of Zs(t))ta.call(t,n)&&na(e,n,t[n]);return e})({autoComplete:"off",className:"tyk-form-control"},r),l={onChange:this.handleOnChange,value:n?o:s},Qs(a,Xs(l))));var a,l}reset(){const{initValue:e}=this.state;this.setState({stateValue:e})}handleOnChange(e){const{onChange:t,isfield:n}=this.props,i=e.target.value;n?t(i):this.setState({stateValue:i},(()=>{t&&t(i)}))}render(){const{label:e,id:n,inputgroupaddonleft:i,inputgroupaddonright:o,note:r,readOnly:s,value:a}=this.props;return t().createElement("div",{className:this.getCssClasses()},e?t().createElement("label",{htmlFor:n,style:this.getLabelStyles()},e):null,!s&&t().createElement("div",{className:"tyk-form-control__wrapper",style:this.getNonLabelWidth()},i||o?this.getInputGroupAddon():this.getInputComponent(),r?t().createElement("p",{className:"tyk-form-control__help-block"},r):null,this.getInputError()),s&&t().createElement("div",{className:"tyk-form-control--readonly"},a||"-"))}};((e,t,n)=>{na(e,t+"",n)})(ia,"propTypes",{disabled:r().bool,readOnly:r().bool,id:r().string,isfield:r().bool,error:r().oneOfType([r().string,r().bool]),inputgroupaddonleft:r().oneOfType([r().element,r().node,r().string]),inputgroupaddonright:r().oneOfType([r().element,r().node,r().string]),label:r().oneOfType([r().string,r().element,r().node]),labelwidth:r().string,name:r().string,note:r().string,onChange:r().func,placeholder:r().string,theme:r().string,value:r().oneOfType([r().number,r().string])});let oa=ia;var ra=Object.defineProperty,sa=Object.defineProperties,aa=Object.getOwnPropertyDescriptors,la=Object.getOwnPropertySymbols,ca=Object.prototype.hasOwnProperty,ua=Object.prototype.propertyIsEnumerable,ha=(e,t,n)=>t in e?ra(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,da=(e,t)=>{for(var n in t||(t={}))ca.call(t,n)&&ha(e,n,t[n]);if(la)for(var n of la(t))ua.call(t,n)&&ha(e,n,t[n]);return e};const pa=(0,e.forwardRef)(((n,i)=>{var o=n,{error:r,onChange:s,readOnly:a,id:l,inputgroupaddonleft:c,inputgroupaddonright:u,label:h,labelwidth:d,note:p,theme:g,value:m,wrapperClassName:f=""}=o,y=((e,t)=>{var n={};for(var i in e)ca.call(e,i)&&t.indexOf(i)<0&&(n[i]=e[i]);if(null!=e&&la)for(var i of la(e))t.indexOf(i)<0&&ua.call(e,i)&&(n[i]=e[i]);return n})(o,["error","onChange","readOnly","id","inputgroupaddonleft","inputgroupaddonright","label","labelwidth","note","theme","value","wrapperClassName"]);const b=(0,e.useRef)();(0,e.useImperativeHandle)(i,(()=>({focus:()=>{b.current.focus()}})));const v=e=>t().createElement("div",{className:"tyk-input-group__addon"},e),w=e=>{s(e,e.target.value)},A=()=>{return t().createElement("input",(e=da({autoComplete:"off",className:"tyk-form-control"},y),sa(e,aa({onChange:w,value:m,ref:b}))));var e};return t().createElement("div",{className:(()=>{const e=[f,"tyk-form-group"],t=g?g.split(" "):[];return t.length&&t.forEach((t=>{e.push(`tyk-form-group--${t}`)})),c&&e.push("tyk-form-group--addon-left"),u&&e.push("tyk-form-group--addon-right"),d&&e.push("tyk-form-group--label-has-width"),r&&e.push("has-error"),e.join(" ")})()},h?t().createElement("label",{htmlFor:l,style:da({},d&&{flexBasis:d})},h):null,!a&&t().createElement("div",{className:"tyk-form-control__wrapper",style:da({},d&&{flexBasis:`calc(100% - ${d} - 20px)`})},c||u?t().createElement("div",{className:"tyk-input-group"},c?v(c):null,A(),u?v(u):null):A(),p?t().createElement("p",{className:"tyk-form-control__help-block"},p):null,r&&"true"!==r&&"false"!==r?t().createElement("p",{className:"tyk-form-control__error-message"},r):null),a&&t().createElement("div",{className:"tyk-form-control--readonly"},m||"-"))}));pa.propTypes={disabled:r().bool,readOnly:r().bool,id:r().string,error:r().oneOfType([r().string,r().bool]),inputgroupaddonleft:r().oneOfType([r().element,r().node,r().string]),inputgroupaddonright:r().oneOfType([r().element,r().node,r().string]),label:r().oneOfType([r().string,r().element,r().node]),labelwidth:r().string,name:r().string,note:r().string,onChange:r().func,placeholder:r().string,theme:r().string,value:r().oneOfType([r().number,r().string]),wrapperClassName:r().string};const ga=pa,ma=(0,e.createContext)();var fa=Object.defineProperty;class ya extends e.Component{isInSearchValue(e){const{searchValue:t,item:n}=this.props;if(e&&e.length>0){let i=e.slice(0);return i=i.filter((e=>n[e]&&n[e].search(t)>-1)),i.length>0}return JSON.stringify(n).search(t)>-1}render(){const{item:n,itemType:i,onChange:o}=this.props;return t().createElement(e.Fragment,null,t().createElement(ma.Consumer,null,(e=>this.isInSearchValue(e.fieldsToSearchOn)?t().createElement("li",null,t().createElement("div",null,t().createElement("span",{className:"tyk-multiselect-item__name"},e.itemDisplayTemplate?e.itemDisplayTemplate(n):JSON.stringify(n)),t().createElement("span",{className:"tyk-multiselect-item__controls"},t().createElement(q,{iconType:"normal"===i?"plus":"minus",iconOnly:!0,onClick:o.bind(null,n),disabled:e.disabled||e.maxSelections&&e.maxSelections===e.nrSelectedItems&&"normal"===i}),t().createElement(q,{iconType:e.opened[n.id]?"chevron-up":"chevron-down",iconOnly:!0,onClick:e.onGetItemDetails.bind(e.parentContext,n)}))),n.details?t().createElement(I,{collapsed:!e.opened[n.id],className:"tyk-multiselect-item__details"},((e,t)=>e.detailsDisplayTemplate?e.detailsDisplayTemplate(t):JSON.stringify(t.details))(e,n)):((e,n)=>{const{opened:i}=e;return i[n.id]?t().createElement(te,{position:"relative"}):null})(e,n)):null)))}}((e,t,n)=>{((e,t,n)=>{t in e?fa(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n})(e,t+"",n)})(ya,"propTypes",{item:r().instanceOf(Object),itemType:r().string,searchValue:r().string,onChange:r().func});const ba=ya;var va=Object.defineProperty,wa=(e,t,n)=>(((e,t,n)=>{t in e?va(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n})(e,"symbol"!=typeof t?t+"":t,n),n);class Aa extends e.Component{constructor(t){super(t),wa(this,"state",{searchValue:""}),this.searchOnChange=this.searchOnChange.bind(this),this.itemChanged=this.itemChanged.bind(this),this.itemIndex=0,this.itemsListRef=(0,e.createRef)()}getItemIndex(){return this.itemIndex+=1,this.itemIndex}getItemsList(){const{itemsPageNumber:e,itemsNrPages:n,loadMoreItems:i,serverLoad:o}=this.props;return o?t().createElement(nt,{refChild:this.itemsListRef,hasMore:n>e,loadMore:i,pageNumber:e},this.renderListItems()):this.renderListItems()}searchOnChange(e){const{onCustomSearch:t}=this.props;t?t(e):this.setState({searchValue:e})}itemChanged(e){const{items:t,onChange:n}=this.props;let i=(0,X.fromJS)(t).toJS();i=i.filter((t=>e.id!==t.id)),n(i,e)}renderListItems(){const{customSearch:e,items:n,panelType:i,serverLoad:o}=this.props,{searchValue:r}=this.state;return t().createElement("ul",{className:"tyk-multiselect__list"+(o?"":" tyk-multiselect__list--scroll"),ref:this.itemsListRef},n.map((n=>t().createElement(ba,{itemType:i,key:this.getItemIndex(),onChange:this.itemChanged,searchValue:e?"":r,item:n}))))}render(){const{inputPlaceholder:e,noItemsMessage:n,items:i}=this.props,{searchValue:o}=this.state;return t().createElement("div",{className:"tyk-multiselect__panel"},t().createElement(oa,{inputgroupaddonleft:t().createElement(g,{type:"search"}),name:"search",onChange:this.searchOnChange,placeholder:e,value:o}),i.length?this.getItemsList():t().createElement(ie,{theme:"info"},n))}}wa(Aa,"propTypes",{customSearch:r().bool,onCustomSearch:r().func,panelType:r().string,onChange:r().func,items:r().instanceOf(Array),itemsPageNumber:r().number,itemsNrPages:r().number,inputPlaceholder:r().string,loadMoreItems:r().func,noItemsMessage:r().string,serverLoad:r().bool});const Ca=Aa;var ka=Object.defineProperty,xa=(e,t,n)=>(((e,t,n)=>{t in e?ka(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n})(e,"symbol"!=typeof t?t+"":t,n),n);const Sa=(e,t)=>t.filter((t=>!(e.filter((e=>e.id===t.id)).length>0)));class $a extends e.Component{constructor(e){super(e),xa(this,"state",{opened:{}}),this.valueChange=this.valueChange.bind(this),this.itemsChange=this.itemsChange.bind(this)}onGetItemDetails(e){const{getItemDetails:t}=this.props;this.setState((t=>{const n=Object.assign({},t);return n.opened[e.id]=!n.opened[e.id],n}),(()=>{t&&t(e)}))}getMultiselectError(){const{error:e}=this.props;return e&&"true"!==e&&"false"!==e?t().createElement("p",{className:"tyk-form-control__error-message"},e):null}getCssClasses(){const{error:e,wrapperClassName:t=""}=this.props,n=[t,"tyk-multiselect"];return e&&n.push("has-error"),n.join(" ")}itemsChange(e,t){const{value:n,onChange:i}=this.props,o=(0,X.fromJS)(n).toJS();o.unshift(t),i(o,t,"added")}valueChange(e,t){const{items:n,onChange:i}=this.props;(0,X.fromJS)(n).toJS().unshift(t),i(e,t,"removed")}render(){const{customSearch:n,entityNamePlural:i,disabled:o,itemDisplayTemplate:r,detailsDisplayTemplate:s,fieldsToSearchOn:a,items:l,itemsPageNumber:c,itemsNrPages:u,loadMoreItems:h,maxSelections:d,note:p,value:g}=this.props,{opened:m}=this.state;return t().createElement(e.Fragment,null,t().createElement("div",{className:this.getCssClasses()},t().createElement(ma.Provider,{value:{disabled:o,parentContext:this,itemDisplayTemplate:r,detailsDisplayTemplate:s,fieldsToSearchOn:a,maxSelections:d,nrSelectedItems:g.length,onGetItemDetails:this.onGetItemDetails,opened:m}},t().createElement("div",{className:"tyk-multiselect__header"},t().createElement("div",null,g.length," ","Selected"," ",i),t().createElement("div",null,"Select from existing",i)),t().createElement("div",{className:"tyk-multiselect__panel-wrapper"},t().createElement(Ca,{inputPlaceholder:`Search through selected ${i}`,noItemsMessage:`Selected ${i} will show here`,items:g,onChange:this.valueChange,panelType:"selected"}),t().createElement(Ca,{inputPlaceholder:`Search existing ${i}`,noItemsMessage:`No ${i} to display`,entityNamePlural:i,customSearch:!!n,onCustomSearch:n,items:Sa(g,l),onChange:this.itemsChange,serverLoad:!!h,loadMoreItems:h,itemsPageNumber:c,itemsNrPages:u,panelType:"normal"})))),t().createElement("div",null,p?t().createElement("p",{className:"tyk-form-control__help-block"},p):null),this.getMultiselectError())}}xa($a,"propTypes",{customSearch:r().func,disabled:r().bool,error:r().string,entityNamePlural:r().string,items:r().instanceOf(Array),itemDisplayTemplate:r().func,detailsDisplayTemplate:r().func,fieldsToSearchOn:r().instanceOf(Array),onChange:r().func,getItemDetails:r().func,itemsPageNumber:r().number,itemsNrPages:r().number,loadMoreItems:r().func,note:r().string,maxSelections:r().number,value:r().instanceOf(Array),wrapperClassName:r().string});const Ea=$a;var Oa=Object.defineProperty,Ta=Object.defineProperties,_a=Object.getOwnPropertyDescriptors,Ra=Object.getOwnPropertySymbols,Ma=Object.prototype.hasOwnProperty,La=Object.prototype.propertyIsEnumerable,Ba=(e,t,n)=>t in e?Oa(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Na=(e,t)=>{for(var n in t||(t={}))Ma.call(t,n)&&Ba(e,n,t[n]);if(Ra)for(var n of Ra(t))La.call(t,n)&&Ba(e,n,t[n]);return e};class Ia extends e.Component{getCssClasses(){const{inline:e,nospace:t,theme:n="",disabled:i,readOnly:o,wrapperClassName:r=""}=this.props,s=[r];return e?s.push("tyk-radio--inline"):s.push("tyk-radio"),t&&s.push("no-margin"),n.trim()&&s.push(...n.split(" ").map((e=>`tyk-radio--theme-${e}`))),(o||i)&&s.push("tyk-radio--is-disabled"),s.join(" ")}render(){const e=this.props,{input:n,label:i,note:o,disabled:r,readOnly:s}=e,a=((e,t)=>{var n={};for(var i in e)Ma.call(e,i)&&t.indexOf(i)<0&&(n[i]=e[i]);if(null!=e&&Ra)for(var i of Ra(e))t.indexOf(i)<0&&La.call(e,i)&&(n[i]=e[i]);return n})(e,["input","label","note","disabled","readOnly"]);return t().createElement("div",{className:this.getCssClasses()},t().createElement("label",null,t().createElement("input",(l=Na(Na({},n),a),Ta(l,_a({type:"radio",disabled:s||r})))),i),t().createElement("p",{className:"tyk-form-control__help-block"},o));var l}}((e,t,n)=>{Ba(e,t+"",n)})(Ia,"propTypes",{disabled:r().bool,readOnly:r().bool,inline:r().bool,theme:r().string,input:r().instanceOf(Object),label:r().oneOfType([r().arrayOf(r().node),r().node,r().element,r().func,r().string]),name:r().string,nospace:r().bool,value:r().string,note:r().oneOfType([r().string,r().element,r().node]),wrapperClassName:r().string});var Pa=Object.defineProperty,Da=Object.defineProperties,Fa=Object.getOwnPropertyDescriptors,Wa=Object.getOwnPropertySymbols,Ha=Object.prototype.hasOwnProperty,ja=Object.prototype.propertyIsEnumerable,za=(e,t,n)=>t in e?Pa(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;class Ua extends e.Component{constructor(e){super(e);const{value:t}=this.props;this.state={initValue:t,stateValue:t},this.handleOnChange=this.handleOnChange.bind(this),this.handleOnBlur=this.handleOnBlur.bind(this)}componentDidUpdate(e){const{isfield:t,value:n,onChange:i}=this.props;t||e.value===n||this.setState({stateValue:n},(()=>{i&&i(n)}))}getSelectComponent(){const e=this.props,{isfield:n,options:i,onChange:o,onBlur:r,value:s}=e,a=((e,t)=>{var n={};for(var i in e)Ha.call(e,i)&&t.indexOf(i)<0&&(n[i]=e[i]);if(null!=e&&Wa)for(var i of Wa(e))t.indexOf(i)<0&&ja.call(e,i)&&(n[i]=e[i]);return n})(e,["isfield","options","onChange","onBlur","value"]),{stateValue:l}=this.state;let c="";return n&&s?c=s:l&&(c=l),t().createElement("select",(u=((e,t)=>{for(var n in t||(t={}))Ha.call(t,n)&&za(e,n,t[n]);if(Wa)for(var n of Wa(t))ja.call(t,n)&&za(e,n,t[n]);return e})({className:"tyk-form-control tyk-select"},a),h={onChange:this.handleOnChange,onBlur:this.handleOnBlur,value:c?c.id:""},Da(u,Fa(h))),i.map((e=>t().createElement("option",{key:e.id,value:e.id},e.name))));var u,h}getSelectError(){const{error:e}=this.props;return e&&"true"!==e&&"false"!==e?t().createElement("p",{className:"tyk-form-control__error-message"},e):null}getCssClasses(){const{error:e,labelwidth:t,theme:n,wrapperClassName:i=""}=this.props,o=[i,"tyk-form-group"],r=n?n.split(" "):[];return r.length&&r.forEach((e=>{o.push(`tyk-form-group--${e}`)})),t&&o.push("tyk-form-group--label-has-width"),e&&o.push("has-error"),o.join(" ")}getLabelStyles(){const{labelwidth:e}=this.props,t={};return e&&(t.flexBasis=e),t}getNonLabelWidth(){const{labelwidth:e}=this.props,t={};return e&&(t.flexBasis=`calc(100% - ${e} - 20px)`),t}handleOnBlur(){const{value:e,onBlur:t}=this.props;t&&t(e)}handleOnChange(e){const{onChange:t,isfield:n,options:i}=this.props;let o=null;o=i.filter((t=>t.id===e.target.value)),[o]=o,n?t(o.id?o:null):this.setState({stateValue:o},(()=>{t(o.id?o:null)}))}reset(){const{initValue:e}=this.state;this.setState({stateValue:e})}render(){const{label:n,id:i,note:o,readOnly:r,value:s}=this.props;return t().createElement(e.Fragment,null,t().createElement("div",{className:this.getCssClasses()},n?t().createElement("label",{htmlFor:i,style:this.getLabelStyles()},n):null,!r&&t().createElement("div",{className:"tyk-form-control__wrapper",style:this.getNonLabelWidth()},this.getSelectComponent(),o?t().createElement("p",{className:"tyk-form-control__help-block"},o):null,this.getSelectError()),r&&t().createElement("div",{className:"tyk-form-control--readonly"},s||"-")))}}((e,t,n)=>{za(e,t+"",n)})(Ua,"propTypes",{disabled:r().bool,readOnly:r().bool,id:r().string,isfield:r().bool,error:r().oneOfType([r().string,r().bool]),options:r().instanceOf(Array),label:r().oneOfType([r().arrayOf(r().node),r().node,r().element,r().func,r().string]),labelwidth:r().string,name:r().string,note:r().string,onBlur:r().func,onChange:r().func,placeholder:r().string,theme:r().string,value:r().oneOfType([r().string,r().object]),wrapperClassName:r().string});var Va=Object.defineProperty,Ga=Object.defineProperties,Ka=Object.getOwnPropertyDescriptors,qa=Object.getOwnPropertySymbols,Ya=Object.prototype.hasOwnProperty,Ja=Object.prototype.propertyIsEnumerable,Qa=(e,t,n)=>t in e?Va(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;function Xa(e){const{checkboxalticon:n,items:i,itemTemplate:o,value:r,noItemsMessage:s="No items in the list",onChange:a,theme:l,primaryKey:c,wrapperClassName:u=""}=e,h=e=>{const t=structuredClone(r),n=t.findIndex((t=>JSON.stringify(t)===JSON.stringify(Array.isArray(t)?e.target.value.split(","):e.target.value)));if(e.target.checked&&-1===n){const n=e.target.value.split(","),i=n.length>1?n:e.target.value;t.push(i)}else!e.target.checked&&n>-1&&t.splice(n,1);a&&a(t)},d=e=>{const t=[];return n&&t.push("tyk-selectable-list__item--with-icon"),e&&t.push("tyk-selectable-list__item--active"),t.join(" ")};return t().createElement(mt,(p=((e,t)=>{for(var n in t||(t={}))Ya.call(t,n)&&Qa(e,n,t[n]);if(qa)for(var n of qa(t))Ja.call(t,n)&&Qa(e,n,t[n]);return e})({},e),Ga(p,Ka({theme:l||"default",className:`tyk-selectable-list ${u}`}))),i.length?i.map(((e,i)=>{return t().createElement(mt.Item,{key:i,className:d(r.includes(e[c]))},t().createElement("label",null,t().createElement("div",{className:"tyk-selectable-list__item"},o?o(e):e.name),t().createElement("input",{type:"checkbox",checked:(s=r,a=e[c],Boolean(s.find((e=>JSON.stringify(a)===JSON.stringify(e))))),onChange:h.bind(e),value:e[c]}),n?t().createElement(g,{type:n}):null));var s,a})):t().createElement("li",{className:"tyk-selectable-list__no-items-message"},t().createElement(ie,{theme:"info"},s)));var p}Xa.propTypes={items:r().instanceOf(Array),itemTemplate:r().oneOfType([r().node,r().element,r().string,r().func]),value:r().instanceOf(Array),onChange:r().func,primaryKey:r().string,noItemsMessage:r().string,checkboxalticon:r().oneOfType([r().node,r().element,r().string]),theme:r().string,wrapperClassName:r().string},Xa.defaultProps={items:[],primaryKey:"id",value:[]};const Za=Xa;var el=Object.defineProperty,tl=Object.getOwnPropertySymbols,nl=Object.prototype.hasOwnProperty,il=Object.prototype.propertyIsEnumerable,ol=(e,t,n)=>t in e?el(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,rl=(e,t)=>{for(var n in t||(t={}))nl.call(t,n)&&ol(e,n,t[n]);if(tl)for(var n of tl(t))il.call(t,n)&&ol(e,n,t[n]);return e};function sl(e){var n=e,{id:i,input:o,label:r,note:s,error:a,theme:l,labelwidth:c,value:u,readOnly:h,wrapperClassName:d}=n,p=((e,t)=>{var n={};for(var i in e)nl.call(e,i)&&t.indexOf(i)<0&&(n[i]=e[i]);if(null!=e&&tl)for(var i of tl(e))t.indexOf(i)<0&&il.call(e,i)&&(n[i]=e[i]);return n})(n,["id","input","label","note","error","theme","labelwidth","value","readOnly","wrapperClassName"]);const g=["tyk-form-group",d,...l?l.split(" ").map((e=>`tyk-form-group--${e}`)):[],c&&"tyk-form-group--label-has-width",a&&"has-error"].filter(Boolean).join(" ");return t().createElement("div",{className:g},r?t().createElement("label",{htmlFor:i,style:c?{flexBasis:c}:{}},r):null,!h&&t().createElement("div",{className:"tyk-form-control__wrapper",style:c?{flexBasis:`calc(100% - ${c} - 20px)`}:{}},t().createElement("textarea",rl(rl({className:"tyk-form-control"},p),o),u),s?t().createElement("p",{className:"tyk-form-control__help-block"},s):null,a&&"true"!==a&&"false"!==a?t().createElement("p",{className:"tyk-form-control__error-message"},a):null),h&&t().createElement("div",{className:"tyk-form-control--readonly"},u||"-"))}sl.propTypes={disabled:r().bool,readOnly:r().bool,input:r().instanceOf(Object),error:r().string,label:r().oneOfType([r().arrayOf(r().node),r().node,r().element,r().func,r().string]),labelwidth:r().string,name:r().string,note:r().string,onChange:r().func,id:r().string,theme:r().string,value:r().string,wrapperClassName:r().string};const al=sl,ll=(0,e.createContext)();class cl extends e.Component{static getNotchCssClasses(e){return["tyk-toggle__item-notch",`tyk-toggle__item-notch--${e.type}`].join(" ")}constructor(t){super(t),this.itemRef=(0,e.createRef)()}componentDidMount(){const{context:e,value:t}=this.props;e.value===t&&e.saveSelectedRef(this.itemRef)}componentDidUpdate(e){const{context:t,value:n}=this.props;e.context.value!==t.value&&t.value===n&&t.saveSelectedRef(this.itemRef)}onChange(e){const{context:t,value:n}=this.props,{disabled:i,readOnly:o}=t;i||o||t.onItemSelected("single"===t.type?!t.value:n,e)}render(){const{context:e,label:n,name:i,value:o}=this.props;return t().createElement("li",{className:"tyk-toggle__item "+(!e.value||"single"!==e.type&&e.value!==o?"":"tyk-toggle__item--active"),ref:this.itemRef},t().createElement("label",null,t().createElement("input",{type:"single"===e.type?"checkbox":"radio",name:i,checked:e.value===o,onChange:this.onChange.bind(this),value:o}),n?t().createElement("span",null,n):t().createElement("span",{className:"empty-toggle"}," "),"single"===e.type?t().createElement("span",{className:cl.getNotchCssClasses(e)}):null))}}cl.propTypes={context:r().instanceOf(Object),label:r().oneOfType([r().arrayOf(r().node),r().node,r().element,r().func,r().string]),name:r().string,value:r().string};const ul=cl;var hl=Object.defineProperty,dl=Object.defineProperties,pl=Object.getOwnPropertyDescriptors,gl=Object.getOwnPropertySymbols,ml=Object.prototype.hasOwnProperty,fl=Object.prototype.propertyIsEnumerable,yl=(e,t,n)=>t in e?hl(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;const bl=t().forwardRef(((e,n)=>t().createElement(ll.Consumer,null,(i=>{return t().createElement(ul,(o=((e,t)=>{for(var n in t||(t={}))ml.call(t,n)&&yl(e,n,t[n]);if(gl)for(var n of gl(t))fl.call(t,n)&&yl(e,n,t[n]);return e})({},e),dl(o,pl({context:i,ref:n}))),e.children);var o}))));bl.propTypes={children:r().oneOfType([r().arrayOf(r().node),r().node,r().element,r().string])};const vl=bl;function wl({className:n,disabled:i,readOnly:o,size:r,theme:s,direction:a,onDark:l,wrapperClassName:c="",onChange:u,labelwidth:h,label:d,separated:p,children:g,type:m,value:f,error:y}){const[b,v]=(0,e.useState)(null),w=(0,e.useRef)(),A=(0,e.useRef)(),C=[c,n,"tyk-toggle",`tyk-toggle--disabled-${o||i}`,`tyk-toggle--${r||"md"}`,`tyk-toggle--${s}`,`tyk-toggle--${a}`,l&&"tyk-toggle--on-dark"].filter(Boolean).join(" "),k=(0,e.useCallback)(((e,t)=>{u&&u(e,t)}),[u]),x=(0,e.useCallback)((()=>h?{flexBasis:h}:{}),[h]),S=(0,e.useCallback)((()=>{if(!b||p)return{};const e=b.current.offsetWidth;return{left:b.current.getBoundingClientRect().left-A.current.getBoundingClientRect().left+4+"px",width:e-8+"px"}}),[b,p]),$=(0,e.useMemo)((()=>({disabled:i,readOnly:o,onItemSelected:k,saveSelectedRef:v,separated:p,type:m,value:f})),[i,o,k,p,m,f]);return t().createElement(t().Fragment,null,t().createElement("div",{className:C,ref:A},t().createElement(ll.Provider,{value:$},d?t().createElement("label",{className:"tyk-toggle__label",style:x()},d):null,t().createElement("ul",{className:`tyk-toggle__list tyk-toggle__list--${m} ${y&&"tyk-toggle__list--has-error"} tyk-toggle__list--${p?"separated":"not-separated"}`},g,"multiple"!==m||p?null:t().createElement("li",{className:"tyk-toggle__notch",ref:w,style:S()})))),y&&t().createElement("p",{className:"tyk-form-control__error-message"},y))}wl.propTypes={children:r().oneOfType([r().arrayOf(r().node),r().node,r().element,r().string]),className:r().string,disabled:r().bool,readOnly:r().bool,error:r().string,onChange:r().func,label:r().oneOfType([r().arrayOf(r().node),r().node,r().element,r().func,r().string]),labelwidth:r().string,theme:r().string,type:r().string,size:r().string,separated:r().bool,direction:r().string,value:r().oneOfType([r().bool,r().string]),onDark:r().bool,wrapperClassName:r().string},wl.defaultProps={separated:!1,theme:"primary",type:"single",direction:"row"},wl.Item=vl;const Al=wl,Cl=(e,t)=>{let n=e;return t.forEach((e=>{n=n.replaceAll(e.id,`__TOKEN__${e.id}__TOKEN__`)})),n},kl=(e,t)=>{setTimeout((()=>{e.current.setSelectionRange(t,t)}),20)};function xl({setShowOptions:n,tokenValue:i,disabled:o,placeholder:r,tokens:s,dropdownTriggerKey:a,setStringBuilderHeight:l,stringBuilderHeight:c,setTokenString:u,tokenString:h,showOptions:d,options:p,setTokenValue:g,inputRef:m,setInputInFocus:f,invalidTokenRegex:y,name:b,contextMaxLength:v}){const[w,A]=(0,e.useState)(!1);(0,e.useEffect)((()=>{if(i){const e=i.length>50?i.length/5:0;l(m.current.scrollHeight+e)}}),[]);const C=(e,t)=>{if(t-1===i.length)return void u(`${h}${e}`);const n=i.slice(0,t-1)+e+i.slice(t-1),o=Cl(n,p);u(o)};return t().createElement("textarea",{spellCheck:!1,disabled:o,className:"string-builder__input",value:i,onChange:e=>(e=>{const{target:t}=e,{selectionStart:i,value:o}=t;if(d&&n(!1),g(o),o&&!w){const e=o.charAt(i-1);C(e,i)}A(!1)})(e),onKeyDown:e=>(e=>{const{key:t}=e,{selectionEnd:o,selectionStart:r,value:l}=e.target,c=l.substring(r,o);if(t===a&&!d)return e.preventDefault(),void n(!0);"Enter"!==t?("Backspace"===t&&(e.preventDefault(),(e=>{const{selectionEnd:t}=e.target;if(t===i.length){const t=s[(null==s?void 0:s.length)-2],n=i.slice(-(null==t?void 0:t.length));if(t===n)return e.preventDefault(),void u(h.slice(0,-`__TOKEN__${n}__TOKEN__`.length));if(i.endsWith(" ")){const e=i.match(y),t=i.slice(0,-` ${e[e.length-1]} `.length),n=Cl(t,p);return void u(n)}return void u(h.slice(0,-1))}const n=i.substring(0,t),o=i.slice(t),r=Cl(n,p);if(r.endsWith("__TOKEN__")){e.preventDefault();const i=r.split(/__TOKEN__(.*?)__TOKEN__/g),s=i[i.length-2],a=`${n.slice(0,-s.length)}${o}`,l=Cl(a,p);return u(l),void kl(m,t-s.length)}const a=n.match(y);if((null==a?void 0:a[0])&&1===a.length){e.preventDefault();const i=`${n.replaceAll(y,"").trim()}${o}`,r=Cl(i,p);return u(r),void kl(m,t-` ${a[0]} `.length)}const l=`${n.slice(0,-1)}${o}`,c=Cl(l,p);u(c),kl(m,t-1)})(e)),"Delete"===t&&(e.preventDefault(),(e=>{const{selectionEnd:t}=e.target;if(t===i.length)return;const n=i.substring(0,t),o=i.slice(t),r=Cl(o,p);if(r.startsWith("__TOKEN__")){const e=r.split(/__TOKEN__(.*?)__TOKEN__/g).filter((e=>""!==e))[0],i=`${n}${o.substr(e.length)}`,s=Cl(i,p);return u(s),void kl(m,t)}const s=`${n}${o.substr(1)}`,a=Cl(s,p);u(a),kl(m,t)})(e)),e.metaKey&&"x"===t&&u(""),c&&(e.preventDefault(),((e,t,n)=>{if(n.length>1&&-1===["Delete","Backspace"].indexOf(n))return;const{selectionEnd:o,selectionStart:r}=e.target,s=n.length>1?"":n;if(t.length>1){const e=i.substring(0,r)+s+i.substring(o),t=Cl(e,p);u(t),kl(m,s.length?r+1:r)}})(e,c,t))):e.preventDefault()})(e),placeholder:r,name:b,ref:m,style:{height:`${c}px`},maxLength:v,onPaste:e=>{e.preventDefault();const{clipboardData:t}=e,{selectionStart:n,selectionEnd:o}=e.target;A(!0);let r=t.getData("text/plain");if(n!==o){r=i.slice(0,n)+r+i.slice(o,i.length);const e=Cl(r,p);return void u(e)}const s=Cl(r,p);C(s,n)},onFocus:()=>{f(!0)},onBlur:()=>f(!1)})}xl.propTypes={setShowOptions:r().func,tokenValue:r().string,disabled:r().bool,placeholder:r().string,tokenString:r().string,stringBuilderHeight:r().number,dropdownTriggerKey:r().string,setStringBuilderHeight:r().func,setTokenString:r().func,setTokenValue:r().func,setInputInFocus:r().func,showOptions:r().bool,tokens:r().arrayOf(r().string),options:r().arrayOf(r().shape({id:r().string.isRequired,name:r().string.isRequired,className:r().string,desc:r().string})),inputRef:r().instanceOf(Object),invalidTokenRegex:r().instanceOf(RegExp),name:r().string,contextMaxLength:r().number};const Sl=e=>{const{token:n,findInvalidTokenSubstitute:i}=e;return t().createElement("span",{role:"main",onClick:()=>i(n),onKeyDown:()=>{}},t().createElement(Bn,{render:"invalid token detected",position:"top"},t().createElement("span",{className:"invalid_token"},`${n}`,t().createElement(g,{type:"exclamation-circle"}))))};Sl.propTypes={token:r().string,findInvalidTokenSubstitute:r().func};const $l=Sl,El=e=>{const{tokens:n,options:i,disabled:o,invalidTokenRegex:r,findInvalidTokenSubstitute:s}=e,a=new Set(n).size!==n.length,l=n&&n.map((e=>{if(i){const n=i.find((t=>t.id===e));if(r&&!n){const n=e.replaceAll(" ","").split(r);if((null==n?void 0:n.length)>1)return t().createElement("span",{key:`${e}${a&&Math.random()}`},n.map((e=>e.match(r)?t().createElement($l,{token:e,findInvalidTokenSubstitute:s}):t().createElement("span",null,`${e} `))))}if(n)return t().createElement("span",{key:`${e}${a&&Math.random()}`,className:`${n.className||"default-option-name"}`},n.id)}return t().createElement("span",{key:`${e}${a&&Math.random()}`},e)}));return t().createElement("div",{className:`string-builder__styled ${o&&"string-builder__disabled"}`},l)};El.propTypes={tokens:r().arrayOf(r().string),options:r().arrayOf(r().instanceOf(Object)),disabled:r().bool,invalidTokenRegex:r().instanceOf(RegExp),findInvalidTokenSubstitute:r().func};const Ol=({options:n,showOptions:i,handleOptionSelection:o,containerRef:r,getThemeClasses:s,setShowOptions:a,allowSearch:l,initialSearchValue:c})=>{const[u,h]=(0,e.useState)(c),[d,p]=(0,e.useState)(n);return(0,e.useEffect)((()=>{h(c)}),[c]),(0,e.useEffect)((()=>{if(""===u)return void p(n);const e=n.filter((e=>e.name.toLowerCase().includes(u.toLowerCase())));p(e)}),[u]),(0,e.useEffect)((()=>{p(n)}),[n]),i?t().createElement(t().Fragment,null,t().createElement(ct,{className:`string-builder-dropdown tyk-form-group ${s().join(" ")}`,element:r,size:"matchElement",displayAxis:"vertical"},l&&t().createElement("div",{className:"string-builder-search"},t().createElement("input",{autoFocus:!0,className:"tyk-form-control",value:u,placeholder:"Search parameter",onChange:e=>{h(e.target.value)},onKeyDown:e=>{"Escape"!==e.key&&"ArrowUp"!==e.key&&"Enter"!==e.key||a(!1)}})),t().createElement("ul",{className:"string-builder-list"},d.map((e=>t().createElement("li",{key:`${e.id}${Math.random()}`,onMouseDown:()=>o(e)},t().createElement("span",{className:`url-builder__options_name ${e.className||"default-option-name"}`},e.name),e.desc&&t().createElement("span",{className:"url-builder__options_description"},"  :  ",e.desc))))))):null};Ol.propTypes={options:r().arrayOf(Object),showOptions:r().bool,handleOptionSelection:r().func,getThemeClasses:r().func,setShowOptions:r().func,containerRef:r().instanceOf(Object),allowSearch:r().bool,initialSearchValue:r().string};const Tl=e=>{const{note:n,error:i,inputInFocus:o,stringBuilderHeight:r,dropdownTriggerKey:s}=e;return t().createElement("div",{className:"string-builder-footer",style:{marginTop:r?r-8+"px":"30px"}},o&&!i&&t().createElement("p",{className:"tyk-form-control__help-block"},t().createElement("span",null,"Enter",t().createElement("span",{className:"string_builder_trigger"},s),"to add any parameter")),n&&t().createElement("p",{className:"tyk-form-control__help-block"},n),i&&"true"!==i&&"false"!==i&&t().createElement("p",{className:"tyk-form-control__error-message"},i))};function _l(n){const{options:i,onChange:o,value:r,theme:s,error:a,disabled:l,readOnly:c,note:u,label:h,labelwidth:d,placeholder:p,allowSearch:g,dropdownTriggerKey:m,invalidTokenRegex:f,name:y,wrapperClassName:b=""}=n,[v,w]=(0,e.useState)(r),[A,k]=(0,e.useState)(),[x,S]=(0,e.useState)(!1),[$,E]=(0,e.useState)(Cl(r,i)),[O,T]=(0,e.useState)(v.length+5),[_,R]=(0,e.useState)([]),[M,L]=(0,e.useState)(),[B,N]=(0,e.useState)(!1),[I,P]=(0,e.useState)(""),[D,F]=(0,e.useState)(null),W=C($),H=(0,e.useRef)(),j=(0,e.useRef)();(0,e.useEffect)((()=>{o&&o(v.replaceAll(" ",""))}),[v]),(0,e.useEffect)((()=>{const e=f?r.replaceAll(f," $& "):r;w((()=>e)),E((()=>Cl(e,i)))}),[r]),(0,e.useEffect)((()=>{const e=$.split(/__TOKEN__(.*?)__TOKEN__/g),t=e.join("");R((()=>e)),w((()=>t)),L((()=>t))}),[$]),(0,e.useEffect)((()=>{if(O-3e)),T((()=>O+25))}}),[$,v]);const z=()=>(s?s.split(" "):[]).map((e=>`tyk-form-group--${e}`));return t().createElement("div",{className:`string-builder ${b}`,ref:H},t().createElement("div",{className:["tyk-form-group",...z(),a&&"has-error",l&&"disabled"].filter(Boolean).join(" ")},h&&t().createElement("label",{style:{flexBasis:d||"auto"}},h),!c&&t().createElement("div",{className:"tyk-form-control__wrapper"},t().createElement("div",{className:`tyk-form-control ${l&&"string-builder__disabled"}`,style:{height:`${A}px`}},t().createElement(xl,{setInputInFocus:N,setShowOptions:S,tokenValue:v,disabled:l,placeholder:p,allowSearch:g,tokens:_,dropdownTriggerKey:m,setStringBuilderHeight:k,stringBuilderHeight:A,setTokenString:E,tokenString:$,showOptions:x,options:i,setTokenValue:w,inputRef:j,invalidTokenRegex:f,name:y,contextMaxLength:O,setContentMaxLength:T}),t().createElement(El,{tokens:_,options:i,disabled:l,invalidTokenRegex:f,findInvalidTokenSubstitute:e=>{F((()=>e)),P((()=>e.replace(/[^a-zA-Z ]/g,""))),S((()=>!0))}}),t().createElement(Ol,{showOptions:x,options:i,handleOptionSelection:e=>{let t="";const{selectionStart:n}=j.current;W&&W!==r&&!D&&(t=W+v.split(M)[1]);let o="";if(n===v.length||D)o=`${t||v}__TOKEN__${e.id}__TOKEN__`;else{const t=v.slice(0,n)+e.id+v.slice(n);o=Cl(t,i),kl(j,n+e.id.length)}D&&(o=$.replace(` ${D} `,`__TOKEN__${e.id}__TOKEN__`),F((()=>null)),P((()=>""))),E((()=>o)),S((()=>!1)),setTimeout((()=>{j.current.focus()}),20)},containerRef:H,getThemeClasses:z,setShowOptions:S,allowSearch:g,initialSearchValue:I}),t().createElement(Tl,{error:a,note:u,inputInFocus:B,stringBuilderHeight:A,dropdownTriggerKey:m}))),c&&t().createElement("div",{className:"tyk-form-control--readonly"},r||"-")))}Tl.propTypes={note:r().string,error:r().string,dropdownTriggerKey:r().string,inputInFocus:r().bool,stringBuilderHeight:r().number},_l.propTypes={options:r().arrayOf(r().shape({id:r().string.isRequired,name:r().string.isRequired,className:r().string,desc:r().string})),onChange:r().func,value:r().string,disabled:r().bool,readOnly:r().bool,error:r().string,theme:r().string,note:r().string,label:r().oneOfType([r().arrayOf(r().node),r().node,r().element,r().func,r().string]),labelwidth:r().string,placeholder:r().string,dropdownTriggerKey:r().string,invalidTokenRegex:r().instanceOf(RegExp),allowSearch:r().bool,name:r().string,wrapperClassName:r().string},_l.defaultProps={onChange:null,value:"",options:[],theme:"default"};const Rl=_l,Ml={FORM_DEBOUNCE:200};function Ll(e,t){Ml[e]=t}const Bl=Ml;var Nl=Object.defineProperty,Il=Object.defineProperties,Pl=Object.getOwnPropertyDescriptors,Dl=Object.getOwnPropertySymbols,Fl=Object.prototype.hasOwnProperty,Wl=Object.prototype.propertyIsEnumerable,Hl=(e,t,n)=>t in e?Nl(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,jl=(e,t)=>{for(var n in t||(t={}))Fl.call(t,n)&&Hl(e,n,t[n]);if(Dl)for(var n of Dl(t))Wl.call(t,n)&&Hl(e,n,t[n]);return e},zl=(e,t)=>Il(e,Pl(t));function Ul(e,t){return t.split(/[\][.]/).filter(Boolean).reduce(((e,t)=>e?e[t]:e),e)}const Vl=(n,i)=>o=>{var r,s=o,{field:a,form:l}=s,c=((e,t)=>{var n={};for(var i in e)Fl.call(e,i)&&t.indexOf(i)<0&&(n[i]=e[i]);if(null!=e&&Dl)for(var i of Dl(e))t.indexOf(i)<0&&Wl.call(e,i)&&(n[i]=e[i]);return n})(s,["field","form"]);const u="number"==typeof Bl.FORM_DEBOUNCE?Bl.FORM_DEBOUNCE:200,[h,d]=(0,e.useState)(a.value),p=jl({getOnChangeProps:()=>({}),hasIsFieldProp:!1},i),g=(0,e.useCallback)((()=>{const e=e=>e();return!1===c.debounce||!1===Bl.FORM_DEBOUNCE&&!c.debounce?e:function(e,t){let n;return(...i)=>{clearTimeout(n),n=setTimeout(e,t,...i)}}(e,"number"==typeof c.debounce?c.debounce:u)})(),[]),m=e=>{const t=(n=e)&&n.target?"INPUT"!==n.target.nodeName||"checkbox"!==n.target.type&&"radio"!==n.target.type?n.target.value:n.target.checked:n;var n;const i=p.getOnChangeProps(t,a,l,c),o=i.value||c.value||t;g((()=>{"function"==typeof c.onChange&&c.onChange(o),a.onChange({target:jl({name:a.name,value:o},i)})})),d(o)},f=(Ul(l.touched,a.name)||Boolean(l.submitCount))&&Ul(l.errors,a.name),y="string"==typeof f?f:"";(0,e.useEffect)((()=>{d(a.value)}),[a.value]),(null==(r=l.status)?void 0:r.disabled)&&(c.disabled=!0);const b=jl({},c);return delete b.debounce,t().createElement(n,zl(jl(jl(zl(jl({},a),{error:y}),p.hasIsFieldProp?{isfield:!0}:{}),b),{checked:"string"==typeof c.value?a.value===c.value:a.value,onChange:m,value:h,input:{value:h,onChange:m}}))},Gl=Vl(oi,{getOnChangeProps:e=>({checked:e})}),Kl=Vl(po),ql=Vl(xo),Yl=Vl(Wo),Jl=Vl(hr),Ql=Vl(bs,{getOnChangeProps:e=>({value:e||[]})}),Xl=Vl(Hs),Zl=Vl(Ys),ec=Vl(oa,{hasIsFieldProp:!0}),tc=Vl(ga),nc=Vl(Ea),ic=Vl(Ia,{getOnChangeProps:(e,t,n,i)=>({checked:e===i.value,value:i.value})}),oc=Vl(Ua,{hasIsFieldProp:!0}),rc=Vl(Za),sc=Vl(al),ac=Vl(Al),lc=Vl(Rl);var cc=Object.defineProperty,uc=Object.defineProperties,hc=Object.getOwnPropertyDescriptors,dc=Object.getOwnPropertySymbols,pc=Object.prototype.hasOwnProperty,gc=Object.prototype.propertyIsEnumerable,mc=(e,t,n)=>t in e?cc(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,fc=(e,t)=>{for(var n in t||(t={}))pc.call(t,n)&&mc(e,n,t[n]);if(dc)for(var n of dc(t))gc.call(t,n)&&mc(e,n,t[n]);return e};class yc extends e.Component{constructor(e){super(e),this.handleOnChange=this.handleOnChange.bind(this)}getInputError(){const{meta:e,validationmessages:t}=this.props,{touched:n,error:i,warning:o}=e;let r=null;return n&&i&&t[i]?r=t[i]:n&&o&&(r="warning"),r}handleOnChange(e){const{input:t}=this.prop,{onChange:n}=t;n((0,X.fromJS)(e))}render(){const e=this.props,{input:n}=e,i=((e,t)=>{var n={};for(var i in e)pc.call(e,i)&&t.indexOf(i)<0&&(n[i]=e[i]);if(null!=e&&dc)for(var i of dc(e))t.indexOf(i)<0&&gc.call(e,i)&&(n[i]=e[i]);return n})(e,["input"]);return t().createElement(po,(o=fc(fc({},n),i),r={error:this.getInputError()},uc(o,hc(r))));var o,r}}((e,t,n)=>{mc(e,t+"",n)})(yc,"propTypes",{input:r().instanceOf(Object),meta:r().instanceOf(Object),validationmessages:r().instanceOf(Object)});var bc=Object.defineProperty,vc=Object.defineProperties,wc=Object.getOwnPropertyDescriptors,Ac=Object.getOwnPropertySymbols,Cc=Object.prototype.hasOwnProperty,kc=Object.prototype.propertyIsEnumerable,xc=(e,t,n)=>t in e?bc(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;class Sc extends e.Component{constructor(e){super(e),this.handleOnChange=this.handleOnChange.bind(this)}getComboboxError(){const{meta:e,validationmessages:t}=this.props,{touched:n,error:i,warning:o}=e;let r=null;return n&&i&&t[i]?r=t[i]:n&&o&&(r="warning"),r}handleOnChange(e){const{input:t}=this.props,{onChange:n}=t;n((0,X.fromJS)(e))}render(){const e=((e,t)=>{var n={};for(var i in e)Cc.call(e,i)&&t.indexOf(i)<0&&(n[i]=e[i]);if(null!=e&&Ac)for(var i of Ac(e))t.indexOf(i)<0&&kc.call(e,i)&&(n[i]=e[i]);return n})(this.props,[]);return t().createElement(xo,(n=((e,t)=>{for(var n in t||(t={}))Cc.call(t,n)&&xc(e,n,t[n]);if(Ac)for(var n of Ac(t))kc.call(t,n)&&xc(e,n,t[n]);return e})({},e),i={onChange:this.handleOnChange,value:e.input.value?e.input.value.toJS():e.input.value,error:this.getComboboxError()},vc(n,wc(i))));var n,i}}((e,t,n)=>{xc(e,t+"",n)})(Sc,"propTypes",{meta:r().instanceOf(Object),input:r().instanceOf(Object),validationmessages:r().instanceOf(Object)});var $c=Object.defineProperty,Ec=Object.defineProperties,Oc=Object.getOwnPropertyDescriptors,Tc=Object.getOwnPropertySymbols,_c=Object.prototype.hasOwnProperty,Rc=Object.prototype.propertyIsEnumerable,Mc=(e,t,n)=>t in e?$c(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;class Lc extends e.Component{constructor(e){super(e),this.handleOnChange=this.handleOnChange.bind(this)}handleOnChange(e){const{input:t}=this.props,{onChange:n}=t;n((0,X.fromJS)(e))}render(){const e=this.props,{children:n,input:i}=e,o=((e,t)=>{var n={};for(var i in e)_c.call(e,i)&&t.indexOf(i)<0&&(n[i]=e[i]);if(null!=e&&Tc)for(var i of Tc(e))t.indexOf(i)<0&&Rc.call(e,i)&&(n[i]=e[i]);return n})(e,["children","input"]);return t().createElement(Qi,(r=((e,t)=>{for(var n in t||(t={}))_c.call(t,n)&&Mc(e,n,t[n]);if(Tc)for(var n of Tc(t))Rc.call(t,n)&&Mc(e,n,t[n]);return e})({},o),s={onSelect:this.handleOnChange,selectedItem:i.value},Ec(r,Oc(s))),n);var r,s}}((e,t,n)=>{Mc(e,t+"",n)})(Lc,"propTypes",{children:r().oneOfType([r().arrayOf(r().node),r().node,r().element,r().string]),input:r().instanceOf(Object)});var Bc=Object.defineProperty,Nc=Object.defineProperties,Ic=Object.getOwnPropertyDescriptors,Pc=Object.getOwnPropertySymbols,Dc=Object.prototype.hasOwnProperty,Fc=Object.prototype.propertyIsEnumerable,Wc=(e,t,n)=>t in e?Bc(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Hc=(e,t)=>{for(var n in t||(t={}))Dc.call(t,n)&&Wc(e,n,t[n]);if(Pc)for(var n of Pc(t))Fc.call(t,n)&&Wc(e,n,t[n]);return e};const jc=e=>{const n=e,{input:i}=n,o=((e,t)=>{var n={};for(var i in e)Dc.call(e,i)&&t.indexOf(i)<0&&(n[i]=e[i]);if(null!=e&&Pc)for(var i of Pc(e))t.indexOf(i)<0&&Fc.call(e,i)&&(n[i]=e[i]);return n})(n,["input"]);return t().createElement(Fn,(r=Hc(Hc({},i),o),s={onChange:i.onChange,value:i.value?i.value:0},Nc(r,Ic(s))));var r,s};jc.propTypes={input:r().instanceOf(Object)};const zc=jc;var Uc=Object.defineProperty,Vc=Object.defineProperties,Gc=Object.getOwnPropertyDescriptors,Kc=Object.getOwnPropertySymbols,qc=Object.prototype.hasOwnProperty,Yc=Object.prototype.propertyIsEnumerable,Jc=(e,t,n)=>t in e?Uc(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;const Qc=e=>{const{input:n,meta:i,validationmessages:o}=e;return t().createElement(Wo,(r=((e,t)=>{for(var n in t||(t={}))qc.call(t,n)&&Jc(e,n,t[n]);if(Kc)for(var n of Kc(t))Yc.call(t,n)&&Jc(e,n,t[n]);return e})({},e),s={onChange:e=>{const{onChange:t}=n;t((0,X.fromJS)(e))},value:n.value?n.value.toJS():n.value,error:(()=>{const{touched:e,error:t,warning:n}=i;let r=null;return e&&t&&o[t]?r=o[t]:e&&n&&(r="warning"),r})()},Vc(r,Gc(s))));var r,s};Qc.propTypes={meta:r().instanceOf(Object),input:r().instanceOf(Object),validationmessages:r().instanceOf(Object)};const Xc=Qc;var Zc=Object.defineProperty,eu=Object.defineProperties,tu=Object.getOwnPropertyDescriptors,nu=Object.getOwnPropertySymbols,iu=Object.prototype.hasOwnProperty,ou=Object.prototype.propertyIsEnumerable,ru=(e,t,n)=>t in e?Zc(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;const su=e=>{const n=e,{input:i,meta:o,validationmessages:r}=n,s=((e,t)=>{var n={};for(var i in e)iu.call(e,i)&&t.indexOf(i)<0&&(n[i]=e[i]);if(null!=e&&nu)for(var i of nu(e))t.indexOf(i)<0&&ou.call(e,i)&&(n[i]=e[i]);return n})(n,["input","meta","validationmessages"]);return t().createElement(hr,(a=((e,t)=>{for(var n in t||(t={}))iu.call(t,n)&&ru(e,n,t[n]);if(nu)for(var n of nu(t))ou.call(t,n)&&ru(e,n,t[n]);return e})({},s),l={onChange:e=>{const{onChange:t}=i;t((0,X.fromJS)(e))},value:i.value?i.value.toJS():i.value,error:(()=>{const{touched:e,error:t}=o;let n=null;return e&&t&&r[t]&&(n=r[t]),n})()},eu(a,tu(l))));var a,l};su.propTypes={meta:r().instanceOf(Object),input:r().instanceOf(Object),validationmessages:r().instanceOf(Object)};const au=su;var lu=Object.defineProperty,cu=Object.defineProperties,uu=Object.getOwnPropertyDescriptors,hu=Object.getOwnPropertySymbols,du=Object.prototype.hasOwnProperty,pu=Object.prototype.propertyIsEnumerable,gu=(e,t,n)=>t in e?lu(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;class mu extends e.Component{constructor(e){super(e),this.handleOnChange=this.handleOnChange.bind(this)}getEditableListError(){const{meta:e,validationmessages:t}=this.props,{touched:n,error:i}=e;let o=null;return n&&i&&t[i]&&(o=t[i]),o}handleOnChange(e){const{input:t}=this.props,{onChange:n}=t;n((0,X.fromJS)(e))}render(){const e=((e,t)=>{var n={};for(var i in e)du.call(e,i)&&t.indexOf(i)<0&&(n[i]=e[i]);if(null!=e&&hu)for(var i of hu(e))t.indexOf(i)<0&&pu.call(e,i)&&(n[i]=e[i]);return n})(this.props,[]);return t().createElement(bs,(n=((e,t)=>{for(var n in t||(t={}))du.call(t,n)&&gu(e,n,t[n]);if(hu)for(var n of hu(t))pu.call(t,n)&&gu(e,n,t[n]);return e})({},e),i={onChange:this.handleOnChange,value:e.input.value?e.input.value.toJS():null,error:this.getEditableListError()},cu(n,uu(i))));var n,i}}((e,t,n)=>{gu(e,t+"",n)})(mu,"propTypes",{input:r().instanceOf(Object),meta:r().instanceOf(Object),validationmessages:r().instanceOf(Object)});var fu=Object.defineProperty,yu=Object.defineProperties,bu=Object.getOwnPropertyDescriptors,vu=Object.getOwnPropertySymbols,wu=Object.prototype.hasOwnProperty,Au=Object.prototype.propertyIsEnumerable,Cu=(e,t,n)=>t in e?fu(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,ku=(e,t)=>{for(var n in t||(t={}))wu.call(t,n)&&Cu(e,n,t[n]);if(vu)for(var n of vu(t))Au.call(t,n)&&Cu(e,n,t[n]);return e};class xu extends e.Component{getInputError(){const{meta:e,validationmessages:t}=this.props,{touched:n,error:i,warning:o}=e;let r=null;return n&&i&&t[i]?r=t[i]:n&&o&&(r="warning"),r}render(){const e=this.props,{input:n}=e,i=((e,t)=>{var n={};for(var i in e)wu.call(e,i)&&t.indexOf(i)<0&&(n[i]=e[i]);if(null!=e&&vu)for(var i of vu(e))t.indexOf(i)<0&&Au.call(e,i)&&(n[i]=e[i]);return n})(e,["input"]);return t().createElement(Ys,(o=ku(ku({},n),i),r={error:this.getInputError()},yu(o,bu(r))));var o,r}}((e,t,n)=>{Cu(e,t+"",n)})(xu,"propTypes",{input:r().instanceOf(Object),meta:r().instanceOf(Object),validationmessages:r().instanceOf(Object)});var Su=Object.defineProperty,$u=Object.defineProperties,Eu=Object.getOwnPropertyDescriptors,Ou=Object.getOwnPropertySymbols,Tu=Object.prototype.hasOwnProperty,_u=Object.prototype.propertyIsEnumerable,Ru=(e,t,n)=>t in e?Su(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Mu=(e,t)=>{for(var n in t||(t={}))Tu.call(t,n)&&Ru(e,n,t[n]);if(Ou)for(var n of Ou(t))_u.call(t,n)&&Ru(e,n,t[n]);return e};class Lu extends e.Component{getInputError(){const{meta:e,validationmessages:t}=this.props,{touched:n,error:i,warning:o}=e;let r=null;return n&&i&&t[i]?r=t[i]:n&&o&&(r="warning"),r}render(){const e=this.props,{input:n}=e,i=((e,t)=>{var n={};for(var i in e)Tu.call(e,i)&&t.indexOf(i)<0&&(n[i]=e[i]);if(null!=e&&Ou)for(var i of Ou(e))t.indexOf(i)<0&&_u.call(e,i)&&(n[i]=e[i]);return n})(e,["input"]);return t().createElement(oa,(o=Mu(Mu({},n),i),r={isfield:!0,error:this.getInputError()},$u(o,Eu(r))));var o,r}}((e,t,n)=>{Ru(e,t+"",n)})(Lu,"propTypes",{meta:r().instanceOf(Object),input:r().instanceOf(Object),validationmessages:r().instanceOf(Object)});var Bu=Object.defineProperty,Nu=Object.defineProperties,Iu=Object.getOwnPropertyDescriptors,Pu=Object.getOwnPropertySymbols,Du=Object.prototype.hasOwnProperty,Fu=Object.prototype.propertyIsEnumerable,Wu=(e,t,n)=>t in e?Bu(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;class Hu extends e.Component{constructor(e){super(e),this.handleOnChange=this.handleOnChange.bind(this)}getMultiselectError(){const{meta:e,validationmessages:t}=this.props,{touched:n,error:i,warning:o}=e;let r=null;return n&&i&&t[i]?r=t[i]:n&&o&&(r="warning"),r}handleOnChange(e){const{input:t}=this.props,{onChange:n}=t;n((0,X.fromJS)(e))}render(){const e=((e,t)=>{var n={};for(var i in e)Du.call(e,i)&&t.indexOf(i)<0&&(n[i]=e[i]);if(null!=e&&Pu)for(var i of Pu(e))t.indexOf(i)<0&&Fu.call(e,i)&&(n[i]=e[i]);return n})(this.props,[]);return t().createElement(Ea,(n=((e,t)=>{for(var n in t||(t={}))Du.call(t,n)&&Wu(e,n,t[n]);if(Pu)for(var n of Pu(t))Fu.call(t,n)&&Wu(e,n,t[n]);return e})({},e),i={onChange:this.handleOnChange,value:e.input.value?e.input.value.toJS():e.input.value,error:this.getMultiselectError()},Nu(n,Iu(i))));var n,i}}((e,t,n)=>{Wu(e,t+"",n)})(Hu,"propTypes",{input:r().instanceOf(Object),meta:r().instanceOf(Object),validationmessages:r().instanceOf(Object)});var ju=Object.defineProperty,zu=Object.defineProperties,Uu=Object.getOwnPropertyDescriptors,Vu=Object.getOwnPropertySymbols,Gu=Object.prototype.hasOwnProperty,Ku=Object.prototype.propertyIsEnumerable,qu=(e,t,n)=>t in e?ju(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Yu=(e,t)=>{for(var n in t||(t={}))Gu.call(t,n)&&qu(e,n,t[n]);if(Vu)for(var n of Vu(t))Ku.call(t,n)&&qu(e,n,t[n]);return e};class Ju extends e.Component{constructor(e){super(e),this.handleEvent=this.handleEvent.bind(this)}getSelectError(){const{meta:e,validationmessages:t}=this.props,{touched:n,error:i,warning:o}=e;let r=null;return n&&i&&t[i]?r=t[i]:n&&o&&(r="warning"),r}handleEvent(e){const{input:t}=this.props,{onChange:n,value:i}=t;n((0,X.fromJS)(void 0!==e?e:i))}render(){const e=this.props,{input:n}=e,i=((e,t)=>{var n={};for(var i in e)Gu.call(e,i)&&t.indexOf(i)<0&&(n[i]=e[i]);if(null!=e&&Vu)for(var i of Vu(e))t.indexOf(i)<0&&Ku.call(e,i)&&(n[i]=e[i]);return n})(e,["input"]);return t().createElement(Ua,(o=Yu(Yu({},n),i),r={isfield:!0,error:this.getSelectError(),onChange:this.handleEvent,onBlur:this.handleEvent,value:n.value?n.value.toJS():n.value},zu(o,Uu(r))));var o,r}}((e,t,n)=>{qu(e,t+"",n)})(Ju,"propTypes",{input:r().instanceOf(Object),meta:r().instanceOf(Object),validationmessages:r().instanceOf(Object)});var Qu=Object.defineProperty,Xu=Object.defineProperties,Zu=Object.getOwnPropertyDescriptors,eh=Object.getOwnPropertySymbols,th=Object.prototype.hasOwnProperty,nh=Object.prototype.propertyIsEnumerable,ih=(e,t,n)=>t in e?Qu(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;class oh extends e.Component{constructor(e){super(e),this.handleOnChange=this.handleOnChange.bind(this)}handleOnChange(e){const{input:t}=this.props;t.onChange((0,X.fromJS)(e))}render(){const e=this.props,{children:n}=e,i=((e,t)=>{var n={};for(var i in e)th.call(e,i)&&t.indexOf(i)<0&&(n[i]=e[i]);if(null!=e&&eh)for(var i of eh(e))t.indexOf(i)<0&&nh.call(e,i)&&(n[i]=e[i]);return n})(e,["children"]);return t().createElement(Za,(o=((e,t)=>{for(var n in t||(t={}))th.call(t,n)&&ih(e,n,t[n]);if(eh)for(var n of eh(t))nh.call(t,n)&&ih(e,n,t[n]);return e})({},i),r={onChange:this.handleOnChange,value:i.input.value?i.input.value.toJS():[]},Xu(o,Zu(r))));var o,r}}((e,t,n)=>{ih(e,t+"",n)})(oh,"propTypes",{children:r().oneOfType([r().node]),onChange:r().func,input:r().instanceOf(Object)});var rh=Object.defineProperty,sh=Object.defineProperties,ah=Object.getOwnPropertyDescriptors,lh=Object.getOwnPropertySymbols,ch=Object.prototype.hasOwnProperty,uh=Object.prototype.propertyIsEnumerable,hh=(e,t,n)=>t in e?rh(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;class dh extends e.Component{constructor(e){super(e),this.handleOnChange=this.handleOnChange.bind(this)}handleOnChange(e){const{input:t}=this.props;t.onChange((0,X.fromJS)(e))}render(){const e=this.props,{children:n}=e,i=((e,t)=>{var n={};for(var i in e)ch.call(e,i)&&t.indexOf(i)<0&&(n[i]=e[i]);if(null!=e&&lh)for(var i of lh(e))t.indexOf(i)<0&&uh.call(e,i)&&(n[i]=e[i]);return n})(e,["children"]);return t().createElement(Al,(o=((e,t)=>{for(var n in t||(t={}))ch.call(t,n)&&hh(e,n,t[n]);if(lh)for(var n of lh(t))uh.call(t,n)&&hh(e,n,t[n]);return e})({},i),r={onChange:this.handleOnChange,value:i.input.value},sh(o,ah(r))),n);var o,r}}((e,t,n)=>{hh(e,t+"",n)})(dh,"propTypes",{children:r().oneOfType([r().node]),onChange:r().func,input:r().instanceOf(Object)})})(),module.exports=i})(); //# sourceMappingURL=tyk-ui.js.map \ No newline at end of file diff --git a/lib/tyk-ui.js.LICENSE.txt b/lib/tyk-ui.js.LICENSE.txt new file mode 100644 index 00000000..01d56f9f --- /dev/null +++ b/lib/tyk-ui.js.LICENSE.txt @@ -0,0 +1,38 @@ +/* + * based on code from: + * + * @license RequireJS text 0.25.0 Copyright (c) 2010-2011, The Dojo Foundation All Rights Reserved. + * Available via the MIT or new BSD license. + * see: http://github.com/jrburke/requirejs for details + */ + +/*! @license +========================================================================== +SproutCore -- JavaScript Application Framework +copyright 2006-2009, Sprout Systems Inc., Apple Inc. and contributors. + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the "Software"), +to deal in the Software without restriction, including without limitation +the rights to use, copy, modify, merge, publish, distribute, sublicense, +and/or sell copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. + +SproutCore and the SproutCore logo are trademarks of Sprout Systems, Inc. + +For more information about SproutCore, visit http://www.sproutcore.com + + +========================================================================== +@license */ diff --git a/lib/tyk-ui.js.map b/lib/tyk-ui.js.map index 71c02e4e..41eb0411 100644 --- a/lib/tyk-ui.js.map +++ b/lib/tyk-ui.js.map @@ -1 +1 @@ -{"version":3,"file":"tyk-ui.js","mappings":";;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA,2BAA2B,cAAc;AACzC,8DAA8D;;;AAG9D;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA,2CAA2C,OAAO;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,CAAC;;AAED,iGAAiG;AACjG;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,0BAA0B;AACtD;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,SAAS;AACjC;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,wBAAwB,SAAS;AACjC;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA,CAAC;;AAED,0HAA0H;AAC1H;AACA;;AAEA,CAAC;;AAED,kGAAkG;AAClG;AACA;AACA;AACA;AACA;AACA,0BAA0B,kBAAkB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,iHAAiH;AACjH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,OAAO;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,gBAAgB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,mBAAmB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC;AAClC;AACA;AACA,0CAA0C,uBAAuB,uBAAuB,uBAAuB;AAC/G;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,kGAAkG;AAClG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iEAAiE;AACjE,2DAA2D,qCAAqC;AAChG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,gHAAgH;AAChH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,gBAAgB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,gBAAgB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,8BAA8B;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,0GAA0G;AAC1G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,4FAA4F;AAC5F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,sGAAsG;AACtG;AACA,oCAAoC;AACpC,mCAAmC;AACnC;AACA;AACA,wDAAwD;AACxD,4DAA4D;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,sBAAsB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C;AAC9C;AACA;AACA;AACA,oBAAoB,sBAAsB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,6CAA6C;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,qGAAqG;AACrG;AACA;AACA;AACA;AACA,6BAA6B,UAAU;AACvC;;AAEA,CAAC;;AAED,gKAAgK;AAChK;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iFAAiF;AACjF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;;AAEA,CAAC;;AAED,uGAAuG,uCAAuC,wBAAwB,gBAAgB,GAAG,+BAA+B,eAAe,wBAAwB,GAAG,uBAAuB,gCAAgC,GAAG,aAAa,8BAA8B,iBAAiB,GAAG,yBAAyB,iBAAiB,GAAG,oCAAoC,8BAA8B,GAAG,iDAAiD,gBAAgB,GAAG,2BAA2B,2BAA2B,GAAG,uCAAuC,4BAA4B,GAAG,wCAAwC,4BAA4B,GAAG,uCAAuC,2BAA2B,GAAG,0BAA0B,2CAA2C,eAAe,GAAG,uCAAuC,4BAA4B,GAAG,uCAAuC,2BAA2B,GAAG,oEAAoE,8BAA8B,GAAG,uCAAuC,8BAA8B,GAAG,yBAAyB,0BAA0B,GAAG,0BAA0B,6BAA6B,GAAG,kCAAkC,4BAA4B,GAAG,0CAA0C,8BAA8B,GAAG,uCAAuC,0BAA0B,GAAG,2BAA2B,6BAA6B,GAAG,yBAAyB,6BAA6B,GAAG,+CAA+C,mBAAmB,GAAG,4BAA4B,2BAA2B,GAAG,uBAAuB,2BAA2B,GAAG,+BAA+B,0BAA0B,GAAG,mCAAmC,4BAA4B,8CAA8C,mCAAmC,GAAG,oDAAoD,kCAAkC,GAAG,uCAAuC,iCAAiC,GAAG,0CAA0C,mCAAmC,GAAG,4CAA4C,0BAA0B,yCAAyC,GAAG,gDAAgD,oCAAoC,GAAG,qCAAqC,iCAAiC,GAAG,kDAAkD,mCAAmC,yCAAyC,GAAG,+BAA+B,qCAAqC,kIAAkI,GAAG,sCAAsC,qCAAqC,8NAA8N,GAAG;;AAE9nG,CAAC;;AAED,0IAA0I;AAC1I;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,gLAAgL;AAChL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,kCAAkC;AACjF;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,CAAC;;AAED;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;;AAEA,QAAQ,IAA4B;AACpC,qBAAqB,wBAAM;AAC3B;AACA,WAAW;;AAEX;AACA;AACA;AACA,gGAAgG,wBAAM;;AAEtG;AACA;AACA,8EAA8E;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,kBAAkB;AACpC;;AAEA;AACA;AACA;;AAEA;AACA,2CAA2C,OAAO;AAClD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,kDAAkD,0BAA0B;AAC5E;AACA,CAAC;;AAED,0FAA0F;AAC1F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA,wBAAwB;AACxB;AACA,0BAA0B;AAC1B;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,2GAA2G;AAC3G;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,sDAAsD;AACtD;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,IAAI;AACnD;AACA;AACA,aAAa;AACb;AACA,KAAK;AACL;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,iIAAiI;AACjI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2EAA2E;AAC3E;AACA,0CAA0C;AAC1C;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,eAAe;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,8FAA8F;AAC9F;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA,CAAC;;AAED,oNAAoN;AACpN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,iBAAiB;AAC3C;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,gCAAgC,qBAAqB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,qBAAqB;AAC1C;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,wBAAwB,uDAAuD;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,aAAa;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C;AAC3C,yCAAyC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,2BAA2B;AACrE;AACA;AACA;AACA;AACA;AACA,6DAA6D;AAC7D,6CAA6C;AAC7C,oHAAoH;AACpH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,+HAA+H;AAC/H;AACA,qBAAqB;AACrB,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;;AAEA,CAAC;;AAED,sIAAsI;AACtI;AACA;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,iCAAiC;AAC5E;AACA;AACA,iEAAiE,UAAU;AAC3E;AACA;AACA;AACA,oIAAoI,yBAAyB;AAC7J;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,QAAQ;AACxC;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,QAAQ;AAChC;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;AAEA,CAAC;;AAED,0KAA0K;AAC1K;AACA;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,+CAA+C;AACxE,2BAA2B,mDAAmD;AAC9E,wBAAwB;AACxB;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA,2BAA2B;AAC3B;AACA;AACA,sCAAsC;AACtC;AACA,kCAAkC,mBAAmB;AACrD;AACA;AACA,gCAAgC,wCAAwC;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC;AACnC;AACA,wBAAwB,4BAA4B;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oHAAoH,2BAA2B;AAC/I;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,QAAQ;AAChC;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA,CAAC;AACD;;AAEA,CAAC;;AAED,0IAA0I;AAC1I;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;AAEA,CAAC;;AAED,6JAA6J;AAC7J;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,kBAAkB,mBAAmB;AAC/E;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;;AAEA,CAAC;;AAED,8JAA8J;AAC9J;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,iDAAiD;AACzF,uCAAuC,4CAA4C;AACnF,uCAAuC,2CAA2C;AAClF,wCAAwC,6CAA6C;AACrF,sCAAsC,4CAA4C;AAClF,2BAA2B,4CAA4C;AACvE,2BAA2B,0DAA0D;AACrF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,aAAa;AACb;AACA,uBAAuB,4CAA4C;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA,CAAC;;AAED,wSAAwS;AACxS;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,mBAAmB;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,WAAW,iBAAiB;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA,mBAAmB,iBAAiB;AACpC,iBAAiB,2CAA2C;AAC5D,mBAAmB,oBAAoB;AACvC,oBAAoB,iBAAiB;AACrC,2BAA2B;AAC3B,CAAC;AACD;;AAEA,CAAC;;AAED,qHAAqH;AACrH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D,iCAAiC;AAChG;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,CAAC;AACD;;AAEA,CAAC;;AAED,uIAAuI;AACvI;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,4CAA4C,IAAI;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;AAEA,CAAC;;AAED,iGAAiG;AACjG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,SAAS;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,UAAU;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,QAAQ;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,QAAQ;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,SAAS;AAC7B;AACA;AACA,oCAAoC,QAAQ;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,SAAS;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,8BAA8B;AAClD;AACA;AACA;AACA,oBAAoB,kCAAkC,OAAO;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,8BAA8B;AAClD;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,oBAAoB,iBAAiB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,qCAAqC;AACzD;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,kIAAkI;AAClI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kEAAkE,mBAAmB;AACrF;AACA;AACA;AACA,4CAA4C,qBAAqB;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,eAAe;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,wBAAwB;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,sDAAsD;AACxF;AACA;AACA;AACA;AACA;AACA,8BAA8B,sDAAsD;AACpF;AACA;AACA,4BAA4B,uBAAuB;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;AAEA,CAAC;;AAED,+JAA+J;AAC/J;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,IAAI;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,IAAI;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,qHAAqH;AACrH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD;AACtD;AACA;AACA,4BAA4B,kBAAkB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,yBAAyB;AAC/C;AACA,0CAA0C,OAAO;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,OAAO;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yFAAyF,uBAAuB;AAChH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;AACA,4BAA4B,sBAAsB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B,oCAAoC,iBAAiB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;;AAEA,CAAC;;AAED,kIAAkI;AAClI;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,kBAAkB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,mBAAmB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,mBAAmB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,kBAAkB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kEAAkE,kBAAkB;AACpF;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D,iBAAiB;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,IAAI;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,iCAAiC;AACjC,iCAAiC;AACjC;AACA;AACA;AACA;AACA,CAAC;AACD;;AAEA,CAAC;;AAED,mGAAmG;AACnG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,mBAAmB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;AAEA,CAAC;;AAED,+GAA+G;AAC/G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;AAEA,CAAC;;AAED,iLAAiL;AACjL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA,kDAAkD;AAClD,yDAAyD,KAAK;AAC9D;AACA;AACA,0BAA0B;AAC1B,wEAAwE;AACxE;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA,yEAAyE;AACzE;AACA,gCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA,+BAA+B;AAC/B,6DAA6D,KAAK,4CAA4C;AAC9G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C;AAC9C;AACA;AACA;AACA,gCAAgC;AAChC,iEAAiE,4CAA4C,IAAI;AACjH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,kDAAkD;AAClD;AACA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kEAAkE,4CAA4C;AAC9G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kEAAkE,4CAA4C;AAC9G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC,2CAA2C,GAAG;AAC9C,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,4FAA4F;AAC5F;AACA;AACA;AACA,gBAAgB,sBAAsB;AACtC;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,qPAAqP;AACrP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,6BAA6B;AACpE,uCAAuC,2BAA2B;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,mBAAmB;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,2BAA2B;AACtE;AACA,2CAA2C,2BAA2B;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,aAAa;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,wBAAwB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,yBAAyB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,OAAO;AAC3D;AACA;AACA;AACA;AACA;AACA,2EAA2E,aAAa;AACxF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,CAAC;AACD;;AAEA,CAAC;;AAED,gGAAgG;AAChG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,iIAAiI;AACjI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,oCAAoC;AACtF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2DAA2D;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,8KAA8K;AAC9K;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,mBAAmB;AACxD;AACA;AACA,0BAA0B,mBAAmB;AAC7C;AACA;AACA;AACA;AACA;AACA,sBAAsB,mBAAmB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,0BAA0B;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,wBAAwB;AACnE,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,wBAAwB;AACnE,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,mBAAmB;AAC3C;AACA;AACA;AACA;AACA,wCAAwC,QAAQ;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,UAAU;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,sDAAsD,OAAO;AAC7D;AACA;AACA,yBAAyB;AACzB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,SAAS;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;;AAEA,CAAC;;AAED,+IAA+I;AAC/I;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,YAAY;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;;AAEA,CAAC;;AAED,gIAAgI;AAChI;AACA;AACA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,UAAU;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,wCAAwC,IAAI;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;;AAEA,CAAC;;AAED,4GAA4G;AAC5G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,IAAI;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,IAAI;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,IAAI;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,sBAAsB,IAAI;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,IAAI;AACjC,wBAAwB,gBAAgB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,IAAI;AACvC;AACA,wBAAwB,qBAAqB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,sBAAsB;AAC1C;AACA,wBAAwB,mBAAmB;AAC3C;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,uHAAuH;AACvH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,kBAAkB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,uBAAuB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,kBAAkB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,kBAAkB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,wBAAwB,uBAAuB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;AAEA,CAAC;;AAED,2GAA2G;AAC3G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,iBAAiB;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,IAAI;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,wBAAwB,iBAAiB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,0BAA0B;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,0BAA0B;AACrE;AACA;AACA,yCAAyC,wBAAwB;AACjE;AACA;AACA;AACA,iCAAiC,cAAc;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,OAAO;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,OAAO;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,OAAO;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,OAAO;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;;AAEA,CAAC;;AAED,uHAAuH;AACvH;AACA;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,0BAA0B;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,0BAA0B;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,UAAU;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,uNAAuN;AACvN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,kBAAkB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,sBAAsB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,kBAAkB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,sBAAsB;AAC9C,4BAA4B,+BAA+B;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA,wBAAwB,2BAA2B;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,qBAAqB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,qBAAqB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,qBAAqB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,wBAAwB,qBAAqB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,2BAA2B;AAChE;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,8BAA8B;AACnE;AACA;AACA;AACA,wBAAwB,kBAAkB;AAC1C;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D,4CAA4C;AACzG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;AACA,oBAAoB;AACpB;AACA;AACA,iCAAiC,cAAc;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,mBAAmB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,gJAAgJ;AAChJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,WAAW;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,WAAW;AACzD;AACA;AACA,oBAAoB;AACpB,8CAA8C,WAAW;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,WAAW;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,KAAK;AACf,UAAU,KAAK;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sLAAsL;AACtL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C;AAC7C;AACA,qMAAqM;AACrM;AACA;AACA;AACA;AACA,uMAAuM;AACvM;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uEAAuE;AACvE;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mFAAmF;AACnF;AACA;AACA;AACA;AACA;AACA,2KAA2K;AAC3K;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C;AAC7C;AACA,oMAAoM;AACpM;AACA;AACA,kCAAkC;AAClC,kMAAkM;AAClM;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,eAAe;AACnD;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,gXAAgX;AAChX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,mBAAmB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C;AAC3C;AACA;AACA;AACA,2CAA2C;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,iBAAiB;AACzC;AACA;AACA,2CAA2C;AAC3C;AACA;AACA;AACA,2CAA2C;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C;AAC3C;AACA;AACA;AACA,2CAA2C;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gEAAgE;AAChE,uDAAuD;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,8BAA8B;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,SAAS;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,SAAS;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,mBAAmB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,mBAAmB;AAC3C;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,iCAAiC,eAAe;AAChD,oCAAoC,qBAAqB;AACzD;AACA;AACA;AACA;AACA;AACA,yCAAyC,uBAAuB;AAChE;AACA;AACA;AACA,4BAA4B,UAAU;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,wBAAwB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,wBAAwB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,uBAAuB;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,mBAAmB;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,eAAe;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,wBAAwB;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,uBAAuB;AACnD;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,gBAAgB;AACxC;AACA;AACA;AACA;AACA,gCAAgC,aAAa;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,qBAAqB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,qBAAqB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,qBAAqB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,yBAAyB;AACzB,yBAAyB;AACzB,4BAA4B;AAC5B,4BAA4B;AAC5B,0BAA0B;AAC1B,wBAAwB;AACxB,iCAAiC;AACjC,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA,2BAA2B,mCAAmC;AAC9D;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL,mBAAmB,oBAAoB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL,8BAA8B,qBAAqB;AACnD;AACA,8BAA8B,yBAAyB;AACvD;AACA,KAAK;AACL;AACA,8BAA8B,kCAAkC;AAChE;AACA,KAAK;AACL;AACA,8BAA8B,+BAA+B;AAC7D,2BAA2B,mCAAmC;AAC9D;AACA,KAAK;AACL;AACA,8BAA8B,oBAAoB;AAClD,2BAA2B,sBAAsB;AACjD;AACA;AACA,CAAC;AACD;;AAEA,CAAC;;AAED,oIAAoI;AACpI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,eAAe;AACjE,gCAAgC,SAAS;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,kBAAkB;AAC9C;AACA,gCAAgC,oBAAoB;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,OAAO;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D,IAAI;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,6EAA6E,EAAE;AACjI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,kBAAkB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,iBAAiB;AAC7C;AACA;AACA;AACA;AACA,0DAA0D,iBAAiB;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,gBAAgB;AACpD;AACA;AACA;AACA;AACA,0DAA0D,gBAAgB;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,SAAS;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,QAAQ;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,CAAC;AACD;AACA;AACA;AACA,oCAAoC;AACpC,+FAA+F,EAAE,IAAI,EAAE;AACvG;AACA;AACA;AACA,wCAAwC,EAAE,IAAI,EAAE;AAChD,iCAAiC,EAAE,IAAI,EAAE;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,6IAA6I;AAC7I;AACA;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,wDAAwD;AAC7F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,qBAAqB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,sFAAsF,WAAW;AACjG;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,qBAAqB;AACrB;AACA,mCAAmC,IAAI;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA,2EAA2E;AAC3E;AACA,qCAAqC;AACrC;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,+KAA+K;AAC/K;AACA;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD;AAClD;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,yCAAyC,IAAI;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,CAAC;AACD;AACA;;AAEA,CAAC;;AAED,sJAAsJ;AACtJ;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,qBAAqB;AACvD;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,2BAA2B;AAC7D;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,mBAAmB;AAC/C,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA,kCAAkC,mCAAmC;AACrE;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,kCAAkC,kCAAkC;AACpE;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,oCAAoC;AACtE;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,wCAAwC;AAC1E;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,2BAA2B;AAC7D;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,mCAAmC;AACrE;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,0BAA0B;AAC5D;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,oBAAoB;AACtD;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,wBAAwB;AAC1D;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,kEAAkE,mBAAmB;AACrF,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,2BAA2B;AAC7D;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,0CAA0C;AAC5E;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,6BAA6B;AAC/D;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,mCAAmC;AACrE;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,wCAAwC,gCAAgC;AACxE;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,wCAAwC;AAC1E;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,2BAA2B;AAC7D;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,qCAAqC;AACvE;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,wCAAwC,kCAAkC;AAC1E;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,yCAAyC;AAC3E;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,4BAA4B;AAC9D;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,0CAA0C;AAC5E;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,6BAA6B;AAC/D;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,qCAAqC;AACvE;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,wCAAwC,kCAAkC;AAC1E;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,0CAA0C;AAC5E;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,6BAA6B;AAC/D;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,wCAAwC;AAC1E;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,2BAA2B;AAC7D;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,sCAAsC;AACxE;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,wCAAwC,mCAAmC;AAC3E;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,0BAA0B;AAC5D;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,0BAA0B;AAC5D;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,wBAAwB;AAC1D;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,wBAAwB;AAC1D;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,wBAAwB;AAC1D;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,sBAAsB;AACxD;AACA,KAAK;AACL;AACA;AACA;AACA,6BAA6B,iEAAiE;AAC9F;AACA,KAAK;AACL;AACA;AACA;AACA,6BAA6B,gEAAgE;AAC7F;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,0CAA0C;AAC5E;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,wCAAwC;AAC1E;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,0CAA0C;AAC5E;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,iCAAiC;AACnE;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,0BAA0B;AAC5D;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,8BAA8B;AAChE;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,oCAAoC;AACtE;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,uBAAuB;AACzD;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,8BAA8B;AAChE;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,qBAAqB;AACvD;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,8BAA8B;AAChE;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,8BAA8B;AAChE;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,yBAAyB;AAC3D;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,0BAA0B;AAC5D;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,kEAAkE,yBAAyB;AAC3F;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC;AAClC,KAAK;AACL;AACA;AACA;AACA,kCAAkC;AAClC,KAAK;AACL;AACA;AACA;AACA,kCAAkC,uBAAuB;AACzD;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,uBAAuB;AACzD;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,yBAAyB;AAC3D;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,yBAAyB;AAC3D;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,yBAAyB;AAC3D;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,wBAAwB;AAC1D;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,6BAA6B;AAC/D;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,2BAA2B;AAC7D;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,0BAA0B;AAC5D;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,2BAA2B;AAC7D;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,wBAAwB;AAC1D;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,kBAAkB;AACpD;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,wBAAwB;AAC1D;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,uBAAuB;AACzD;AACA;AACA,KAAK;AACL;AACA;AACA,uCAAuC,qBAAqB;AAC5D;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,qBAAqB;AACvD;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,4BAA4B;AAC9D,+CAA+C,gCAAgC;AAC/E;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,uBAAuB;AACzD;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,uBAAuB;AACzD;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,sBAAsB;AACxD;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,kCAAkC;AAClC,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,2BAA2B;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,mBAAmB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,sBAAsB;AAClD;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,4BAA4B,mBAAmB;AAC/C,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,4BAA4B,mBAAmB;AAC/C,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,4BAA4B,gBAAgB;AAC5C,SAAS;AACT;AACA,KAAK;AACL,gBAAgB,OAAO;AACvB;AACA;AACA;AACA;AACA,kCAAkC,yCAAyC;AAC3E;AACA;AACA,KAAK;AACL;;AAEA,CAAC;;AAED,+GAA+G;AAC/G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,SAAS;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,QAAQ,SAAS,gBAAgB;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,QAAQ,SAAS,gBAAgB;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,2BAA2B;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,QAAQ,SAAS,cAAc;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,WAAW;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D,mBAAmB;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;AAEA,CAAC;;AAED,8JAA8J;AAC9J;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,4BAA4B;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;AAEA,CAAC;;AAED,kgBAAkgB;AAClgB;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA,qEAAqE;AACrE;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,2DAA2D,iBAAiB;AAC5E,qDAAqD,cAAc;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,mBAAmB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,yCAAyC;AAC1E;AACA;AACA;AACA;AACA;AACA,iCAAiC,iCAAiC;AAClE,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,IAAI;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD;AACnD;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,gCAAgC;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,eAAe;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,qBAAqB;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,WAAW,wBAAwB;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,gBAAgB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,iCAAiC,gBAAgB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,wBAAwB,sBAAsB;AAC9C;AACA,4BAA4B,QAAQ;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4FAA4F,qBAAqB;AACjH;AACA;AACA;AACA;AACA,wDAAwD;AACxD;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,QAAQ;AAChC;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,OAAO;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,KAAK;AACnB,cAAc,KAAK;AACnB;AACA;AACA,sCAAsC;AACtC,uBAAuB,kCAAkC;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,0CAA0C;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,QAAQ;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,gBAAgB;AAC/C;AACA;AACA;AACA,+BAA+B,cAAc;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,qCAAqC;AACzD;AACA;AACA,6BAA6B,oCAAoC;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,aAAa;AAChE,SAAS;AACT;AACA,KAAK;AACL;AACA,2BAA2B,oCAAoC;AAC/D;AACA,KAAK;AACL;AACA,0CAA0C,4BAA4B;AACtE;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA,8BAA8B,2BAA2B;AACzD;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL,yBAAyB,oBAAoB;AAC7C,6BAA6B,oBAAoB;AACjD,wBAAwB,oBAAoB;AAC5C;AACA,8BAA8B;AAC9B,KAAK;AACL;AACA,8BAA8B,+BAA+B;AAC7D,2BAA2B,4BAA4B;AACvD;AACA,KAAK;AACL;AACA,8BAA8B,6BAA6B;AAC3D,2BAA2B,yBAAyB;AACpD;AACA;AACA,KAAK;AACL;AACA,8BAA8B,uBAAuB;AACrD,2BAA2B,sBAAsB;AACjD;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,8GAA8G;AAC9G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,iBAAiB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,iBAAiB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;AAEA,CAAC;;AAED,mMAAmM;AACnM;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,wBAAwB;AAChD;AACA;AACA;AACA;AACA,qDAAqD;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,kBAAkB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oGAAoG,SAAS;AAC7G;AACA;AACA,oFAAoF,SAAS;AAC7F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,mBAAmB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,WAAW;AAC/C,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,2HAA2H;AAC3H;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,YAAY;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4EAA4E,aAAa,uBAAuB,oBAAoB;AACpI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mEAAmE;AACnE,uCAAuC;AACvC,mCAAmC;AACnC,wCAAwC;AACxC;AACA;AACA;AACA;AACA;AACA;AACA,gGAAgG;AAChG,qBAAqB;AACrB,+BAA+B;AAC/B,oCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD;AACjD,mCAAmC;AACnC,+BAA+B;AAC/B,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA,qDAAqD;AACrD,wEAAwE;AACxE,mCAAmC;AACnC,2DAA2D;AAC3D,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD;AACjD,+BAA+B;AAC/B,oBAAoB,QAAQ;AAC5B;AACA;AACA;AACA;AACA,iDAAiD;AACjD,+BAA+B;AAC/B,oBAAoB,QAAQ;AAC5B;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,oGAAoG;AACpG;AACA;AACA;AACA;;AAEA,CAAC;;AAED,uNAAuN;AACvN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,iBAAiB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,aAAa;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oGAAoG,SAAS;AAC7G;AACA;AACA,kGAAkG,SAAS;AAC3G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,WAAW;AACvC;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,UAAU;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,mBAAmB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,kBAAkB;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,kBAAkB;AAC1C;AACA;AACA;AACA,gCAAgC,uBAAuB;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,kBAAkB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,QAAQ;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,mBAAmB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,mBAAmB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,+GAA+G;AAC/G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,IAAI;AACzC;AACA;AACA;AACA;AACA,qCAAqC,IAAI;AACzC;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,cAAc;AAC1C;AACA,+CAA+C,OAAO;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;;AAEA,CAAC;;AAED,kKAAkK;AAClK;AACA;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,sBAAsB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,uBAAuB;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,gCAAgC;AAChC,iCAAiC;AACjC,iCAAiC;AACjC;AACA;;AAEA,CAAC;;AAED,yKAAyK;AACzK;AACA;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,0EAA0E,uBAAuB,yCAAyC,gCAAgC,2BAA2B,2BAA2B,uBAAuB,eAAe,GAAG,gDAAgD,uBAAuB,eAAe,qBAAqB,+BAA+B,GAAG,yBAAyB,eAAe,aAAa,WAAW,gBAAgB,GAAG,6BAA6B,eAAe,aAAa,gBAAgB,GAAG,yBAAyB,cAAc,YAAY,iBAAiB,GAAG,6BAA6B,cAAc,iBAAiB,GAAG,+BAA+B,eAAe,qBAAqB,GAAG;AACjwB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,iBAAiB;AACxD;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,uCAAuC;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,sBAAsB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,kBAAkB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,0CAA0C;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,uBAAuB;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,gCAAgC;AAChC,iCAAiC;AACjC,iCAAiC;AACjC;AACA;;AAEA,CAAC;;AAED,+GAA+G;AAC/G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;AAEA,CAAC;;AAED,8MAA8M;AAC9M;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,YAAY;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,gBAAgB,iBAAiB;AAChF,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B,6BAA6B;AAC7B,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,yCAAyC;AACzC;AACA;;AAEA,CAAC;;AAED,mGAAmG;AACnG;AACA,gBAAgB,QAAQ;AACxB,kCAAkC;AAClC;AACA;AACA,0DAA0D;AAC1D,KAAK,gCAAgC;AACrC;AACA;AACA;AACA,8BAA8B,iCAAiC,YAAY,iCAAiC,YAAY,iCAAiC,iCAAiC,YAAY,iCAAiC,YAAY,iCAAiC,iCAAiC,YAAY,iCAAiC,iCAAiC,YAAY,iCAAiC,iCAAiC,iCAAiC,YAAY,iCAAiC,YAAY,iCAAiC,iCAAiC,YAAY,iCAAiC,iCAAiC,YAAY,iCAAiC,iCAAiC,iCAAiC,YAAY,iCAAiC,iCAAiC,YA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B,GAAG,4BAA4B,6BAA6B,gBAAgB,GAAG,6BAA6B,6BAA6B,GAAG,sBAAsB,yBAAyB,4BAA4B,6BAA6B,uBAAuB,mBAAmB,qBAAqB,GAAG,qBAAqB,mBAAmB,yBAAyB,uBAAuB,GAAG,4BAA4B,wBAAwB,oBAAoB,eAAe,gBAAgB,iBAAiB,sBAAsB,GAAG;;AAE15sB,CAAC;;AAED,yJAAyJ;AACzJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,4BAA4B,wBAAwB;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,qBAAqB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;;AAEA,CAAC;;AAED,ubAAub;AACvb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,OAAO;AAC3B;AACA;AACA;AACA;AACA,uDAAuD,sBAAsB;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,mBAAmB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,iCAAiC,cAAc,gCAAgC;AACzH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,cAAc;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,eAAe;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,sBAAsB,qBAAqB;AAC3C;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA,2BAA2B,4BAA4B;AACvD;AACA,KAAK;AACL;AACA,2BAA2B,4BAA4B;AACvD;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA,8BAA8B,qBAAqB;AACnD,2BAA2B,qCAAqC;AAChE;AACA;AACA,KAAK;AACL,wBAAwB;AACxB;AACA;AACA;AACA,CAAC;AACD;;AAEA,CAAC;;AAED;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,qEAAqE;AACrE;AACA,mCAAmC,iCAAiC;AACpE,MAAM,YAAY;AAClB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAiB,0BAA0B;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA,wCAAwC,eAAe;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,kCAAkC,yBAAyB;AAC3D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iCAAiC;AACjC,0DAA0D,qBAAqB,iBAAiB;AAChG;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV,iCAAiC,QAAQ;AACzC;;AAEA,CAAC;;;AAGD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL,+CAA+C;;AAE/C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,gCAAgC,UAAU;AAC1C;AACA;AACA,0BAA0B,yCAAyC;AACnE;AACA;AACA,0BAA0B,sCAAsC;AAChE;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;;;AAGA,CAAC;;AAED,kJAAkJ;AAClJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,wGAAwG;AACxG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,wBAAwB,wBAAwB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,QAAQ;AAC7D;AACA,mCAAmC;AACnC;AACA;AACA;AACA;AACA,qDAAqD,QAAQ;AAC7D;AACA,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,IAAI;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,IAAI;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,mBAAmB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;;AAEA,CAAC;;AAED,mJAAmJ;AACnJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,oBAAoB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,wBAAwB;AACxE;AACA;AACA;AACA;;AAEA,CAAC;;AAED,+IAA+I;AAC/I;AACA;AACA;AACA,kCAAkC,6BAA6B;AAC/D,mBAAmB,wCAAwC;AAC3D;AACA;AACA,KAAK;AACL;AACA;AACA,kCAAkC,4BAA4B;AAC9D,mBAAmB,4CAA4C;AAC/D;AACA;AACA,KAAK;AACL;AACA;AACA,kCAAkC,mCAAmC;AACrE,mBAAmB,oDAAoD;AACvE;AACA;AACA,KAAK;AACL;AACA;AACA,kCAAkC,kCAAkC;AACpE,mBAAmB,wDAAwD;AAC3E;AACA;AACA,KAAK;AACL;AACA;AACA,kCAAkC,wBAAwB;AAC1D,mBAAmB,4CAA4C;AAC/D;AACA;AACA,KAAK;AACL;AACA;AACA,kCAAkC,uBAAuB;AACzD,mBAAmB,8CAA8C;AACjE;AACA;AACA,KAAK;AACL;AACA;AACA,kCAAkC,8BAA8B;AAChE,mBAAmB,wDAAwD;AAC3E;AACA;AACA,KAAK;AACL;AACA;AACA,kCAAkC,6BAA6B;AAC/D,mBAAmB,0DAA0D;AAC7E;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,mBAAmB,sCAAsC;AACzD;AACA,KAAK;AACL;AACA;AACA,kCAAkC,sCAAsC;AACxE;AACA,KAAK;AACL;AACA;AACA,kCAAkC,wBAAwB;AAC1D,mBAAmB,sCAAsC;AACzD;AACA,KAAK;AACL;AACA;AACA,kCAAkC,mBAAmB;AACrD,mBAAmB,sCAAsC;AACzD;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,kCAAkC,+BAA+B;AACjE;AACA;AACA,yCAAyC;AACzC,KAAK;AACL;AACA;;AAEA,CAAC;;AAED,6SAA6S;AAC7S;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,cAAc;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,IAAI;AACzC;AACA;AACA;AACA,sCAAsC,iBAAiB;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,mBAAmB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,IAAI;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,eAAe;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,YAAY;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD;AACtD;AACA;AACA,mEAAmE;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD,wBAAwB;AAC/E;AACA;AACA;AACA;AACA,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gEAAgE,wBAAwB;AACxF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,mBAAmB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,IAAI;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,IAAI;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,IAAI;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,oBAAoB;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,CAAC;;AAED,CAAC;;AAED,uHAAuH;AACvH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED,CAAC;;AAED,+JAA+J;AAC/J;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,sBAAsB;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,2BAA2B;AACjF;AACA,kDAAkD,8BAA8B,yBAAyB,4BAA4B,qBAAqB,gCAAgC,mCAAmC,wBAAwB,6BAA6B,gCAAgC,OAAO,6DAA6D,sCAAsC,iEAAiE,sCAAsC,2DAA2D,sCAAsC,uDAAuD,sCAAsC,2BAA2B,6BAA6B,4BAA4B,kDAAkD,oDAAoD,mDAAmD,oBAAoB,OAAO;;AAEz8B,CAAC;;AAED,gYAAgY;AAChY;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC;AACzC,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC,cAAc;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,kFAAkF;AAClF,8EAA8E;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,KAAuD;AAC/E;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;;;;;;;;ACjipBA,sHAAsH;AACtH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wGAAwG;AACxG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,eAAe;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA,iDAAiD;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD;AACjD;AACA;AACA,8DAA8D;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,uCAAuC;AACzF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8EAA8E;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,eAAe;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,YAAY;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD;AAClD,gCAAgC,kBAAkB;AAClD;AACA,qDAAqD;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;;AAEL,CAAC,kBAAkB;AACnB;AACA,4BAA4B,KAAuD;AACnF;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB;;;;;;;;ACzUA,sGAAsG,wPAAwP,6BAA6B,kBAAkB,gCAAgC,yBAAyB,uBAAuB,gBAAgB,6BAA6B,yBAAyB,aAAa,kBAAkB,0BAA0B,GAAG,oBAAoB,0BAA0B,qCAAqC,cAAc,GAAG,qBAAqB,qCAAqC,2BAA2B,eAAe,GAAG,yCAAyC,2BAA2B,uBAAuB,uBAAuB,GAAG,qBAAqB,sBAAsB,GAAG,gCAAgC,6BAA6B,GAAG,uBAAuB,iCAAiC,8BAA8B,mBAAmB,gCAAgC,2BAA2B,iBAAiB,iBAAiB,yBAAyB,gBAAgB,2BAA2B,qBAAqB,sBAAsB,0BAA0B,wBAAwB,8BAA8B,GAAG,kBAAkB,gCAAgC,2BAA2B,4BAA4B,qBAAqB,uBAAuB,2BAA2B,qCAAqC,sBAAsB,gBAAgB,yBAAyB,kBAAkB,GAAG,6BAA6B,iCAAiC,sCAAsC,GAAG,2BAA2B,uBAAuB,sBAAsB,GAAG,wBAAwB,gCAAgC,GAAG,4CAA4C,4BAA4B,wDAAwD,qBAAqB,8BAA8B,oBAAoB,qBAAqB,kCAAkC,4BAA4B,iCAAiC,GAAG,6BAA6B,kCAAkC,GAAG,wBAAwB,qCAAqC,iPAAiP,yBAAyB,qBAAqB,qBAAqB,sBAAsB,4BAA4B,iBAAiB,mBAAmB,kBAAkB,eAAe,iBAAiB,yBAAyB,GAAG,8BAA8B,gCAAgC,oCAAoC,mBAAmB,GAAG,iBAAiB,uBAAuB,sBAAsB,gCAAgC,6BAA6B,2BAA2B,4BAA4B,wBAAwB,uBAAuB,mBAAmB,+CAA+C,mBAAmB,0CAA0C,mBAAmB,GAAG,uBAAuB,6BAA6B,gBAAgB,GAAG,sBAAsB,6BAA6B,GAAG,yBAAyB,4BAA4B,gBAAgB,GAAG,wBAAwB,yBAAyB,wBAAwB,gCAAgC,6BAA6B,2BAA2B,4BAA4B,wBAAwB,kBAAkB,GAAG,yBAAyB,kBAAkB,yBAAyB,qBAAqB,GAAG;;AAEzzH,CAAC;;AAED,+NAA+N;AAC/N;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,2BAA2B;AAC1D,uBAAuB,8CAA8C;AACrE,sBAAsB,0BAA0B;AAChD,4BAA4B,gFAAgF;AAC5G,2BAA2B,iDAAiD;AAC5E,2BAA2B,iDAAiD;AAC5E,2BAA2B,+DAA+D;AAC1F;AACA,sBAAsB,2BAA2B;AACjD,4BAA4B,kFAAkF;AAC9G,2BAA2B,sDAAsD;AACjF,2BAA2B,8CAA8C;AACzE;AACA,sBAAsB,6BAA6B;AACnD,2BAA2B;AAC3B,2CAA2C,gBAAgB,cAAc,GAAG;AAC5E,2BAA2B,6BAA6B;AACxD,2BAA2B,8EAA8E;AACzG,2BAA2B,wFAAwF;AACnH,2BAA2B,kFAAkF;AAC7G,2BAA2B,qFAAqF;AAChH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,6CAA6C,iBAAiB;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,6CAA6C,iBAAiB;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA,iCAAiC,YAAY;AAC7C,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,CAAC;AACD;AACA;AACA,mBAAmB,kDAAkD;AACrE;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,mBAAmB,kDAAkD;AACrE;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,mBAAmB,kDAAkD;AACrE;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC,kBAAkB;AACnB;AACA,4BAA4B,KAAuD;AACnF;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB;;;;;;;;ACtVA,0KAA0K;AAC1K;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,aAAa;AACb;AACA,2BAA2B;AAC3B;AACA,aAAa;AACb;AACA,2BAA2B;AAC3B,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA,2BAA2B;AAC3B;AACA,aAAa;AACb;AACA,2BAA2B;AAC3B;AACA,aAAa;AACb;AACA,yBAAyB;AACzB;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,qBAAqB;AACrB,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA,2BAA2B;AAC3B,aAAa;AACb;AACA,2BAA2B;AAC3B;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA,kCAAkC,EAAE;AACpC,aAAa;AACb;AACA,kCAAkC,EAAE;AACpC,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,qBAAqB;AACrB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,qBAAqB;AACrB;AACA;AACA;AACA,qBAAqB;AACrB;AACA,qBAAqB;AACrB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,qBAAqB;AACrB;AACA;AACA;AACA,qBAAqB;AACrB;AACA,qBAAqB;AACrB,aAAa;AACb;AACA;AACA,sCAAsC,IAAI;AAC1C,aAAa;AACb;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,4HAA4H;AAC5H;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA,uCAAuC;AACvC;AACA;AACA;AACA,qDAAqD,0BAA0B;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;AAEA,CAAC;;AAED,yGAAyG;AACzG;AACA,oBAAoB,UAAU;AAC9B,0BAA0B,wCAAwC;AAClE,0BAA0B,iBAAiB;AAC3C,2BAA2B,yEAAyE;AACpG,6BAA6B,yEAAyE;AACtG,+BAA+B,yBAAyB;AACxD,yBAAyB,0BAA0B;AACnD,yBAAyB,qDAAqD;AAC9E,2BAA2B,qDAAqD;AAChF,gBAAgB,yDAAyD;AACzE,sBAAsB,UAAU;AAChC,sBAAsB,4IAA4I;AAClK,yBAAyB,8BAA8B;AACvD,gBAAgB,0BAA0B;AAC1C,eAAe,6CAA6C;AAC5D,eAAe,8BAA8B;AAC7C,gBAAgB,mNAAmN;AACnO,iBAAiB,wEAAwE;AACzF,qBAAqB,sBAAsB;AAC3C,eAAe,kCAAkC;AACjD,qBAAqB,iNAAiN;AACtO,mBAAmB,0BAA0B;AAC7C,qBAAqB,wBAAwB;AAC7C,oBAAoB,0BAA0B;AAC9C,sBAAsB,8BAA8B;AACpD,gBAAgB,0BAA0B;AAC1C,cAAc,0BAA0B;AACxC,wBAAwB,aAAa;AACrC,qBAAqB,aAAa;AAClC,yBAAyB,sOAAsO;AAC/P,gBAAgB,0BAA0B;AAC1C,sBAAsB,0BAA0B;AAChD,qBAAqB,0BAA0B;AAC/C,oBAAoB,0BAA0B;AAC9C,uBAAuB,0BAA0B;AACjD,oBAAoB,0BAA0B;AAC9C,mBAAmB,0BAA0B;AAC7C,oBAAoB,0BAA0B;AAC9C,mBAAmB,0BAA0B;AAC7C,kBAAkB,mDAAmD;AACrE,oBAAoB,mDAAmD;AACvE,oBAAoB,mDAAmD;AACvE,iBAAiB,0BAA0B;AAC3C,qBAAqB,0BAA0B;AAC/C,uBAAuB,0BAA0B;AACjD,wBAAwB,0BAA0B;AAClD,sBAAsB,0BAA0B;AAChD,0BAA0B,2DAA2D;AACrF,2BAA2B,2DAA2D;AACtF,kBAAkB,uDAAuD;AACzE,eAAe,0BAA0B;AACzC,sBAAsB,uBAAuB;AAC7C,yBAAyB,0DAA0D;AACnF,oBAAoB,kDAAkD;AACtE,wBAAwB,4DAA4D;AACpF,aAAa,0BAA0B;AACvC,wBAAwB,uBAAuB;AAC/C,oBAAoB,2BAA2B;AAC/C,qBAAqB,kEAAkE;AACvF,eAAe,0BAA0B;AACzC,sBAAsB,aAAa;AACnC,gBAAgB,2BAA2B;AAC3C,qBAAqB,yBAAyB;AAC9C,uBAAuB,8CAA8C;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,wCAAwC;AAC3D,wBAAwB,wCAAwC;AAChE,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAqE;AACrE;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,2DAA2D;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,CAAC;AACD;;AAEA,CAAC;;AAED,2LAA2L;AAC3L;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,uBAAuB;AACvB;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,uBAAuB,EAAE;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA,CAAC;;AAED,+JAA+J;AAC/J;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,UAAU;AAC7C,qCAAqC,QAAQ;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED,CAAC;;AAED,qSAAqS;AACrS;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,CAAC;AACD;;AAEA,CAAC,kBAAkB;AACnB;AACA,4BAA4B,KAAuD;AACnF;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB;;;;;;;;ACpnBA,mKAAmK;AACnK;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,qMAAqM;AACrM;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,uCAAuC,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE;AAC9D;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA,6BAA6B;AAC7B;AACA;AACA,iBAAiB;AACjB;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA,uCAAuC;AACvC,aAAa;AACb;AACA,4BAA4B;AAC5B,aAAa;AACb;AACA,8BAA8B;AAC9B,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,4HAA4H;AAC5H;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA,uCAAuC;AACvC;AACA;AACA;AACA,qDAAqD,0BAA0B;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;AAEA,CAAC;;AAED,+JAA+J;AAC/J;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,UAAU;AAC7C,qCAAqC,QAAQ;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED,CAAC;;AAED,4NAA4N;AAC5N;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C;AAC1C;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;AAEA,CAAC,kBAAkB;AACnB;AACA,4BAA4B,KAAuD;AACnF;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB;;;;;;;;ACpVA,qKAAqK;AACrK;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iGAAiG;AACjG;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA,6BAA6B;AAC7B;AACA,yCAAyC;AACzC;AACA;AACA;AACA,qBAAqB;AACrB;AACA,kCAAkC;AAClC;AACA,qBAAqB;AACrB;AACA,iCAAiC;AACjC;AACA,qBAAqB;AACrB;AACA,qBAAqB;AACrB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,yFAAyF;AACzF;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA,6BAA6B;AAC7B;AACA,yCAAyC;AACzC;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iCAAiC;AACjC;AACA,qBAAqB;AACrB;AACA,qBAAqB;AACrB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,2MAA2M;AAC3M;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,yCAAyC,EAAE;AAC3C,sBAAsB,EAAE;AACxB,WAAW,YAAY,KAAK;AAC5B,oBAAoB,IAAI;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA,mCAAmC,EAAE;AACrC;AACA,aAAa;AACb;AACA,6BAA6B;AAC7B;AACA,aAAa;AACb;AACA,6BAA6B;AAC7B;AACA,aAAa;AACb;AACA,6BAA6B;AAC7B,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,EAAE,cAAc,EAAE;AAC9D,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA,0BAA0B,YAAY,4BAA4B,GAAG;AACrE,aAAa;AACb;AACA,uCAAuC,YAAY;AACnD,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,EAAE,cAAc,EAAE;AAC9D,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB,qCAAqC;AACrC,6BAA6B;AAC7B;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,+BAA+B;AAC/B;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,wBAAwB,EAAE;AAC1B,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,sBAAsB;AAChC,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,gCAAgC;AAC1D,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,kBAAkB,8DAA8D;AAChF,kBAAkB,sBAAsB;AACxC,kBAAkB;AAClB;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,kBAAkB,8DAA8D;AAChF,kBAAkB,sBAAsB;AACxC,kBAAkB;AAClB;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,gCAAgC,qBAAqB,yBAAyB;AAC9E,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,wDAAwD;AAC1E,kBAAkB;AAClB;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,kBAAkB,qDAAqD;AACvE,kBAAkB;AAClB;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,4HAA4H;AAC5H;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA,uCAAuC;AACvC;AACA;AACA;AACA,qDAAqD,0BAA0B;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;AAEA,CAAC;;AAED,+JAA+J;AAC/J;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,UAAU;AAC7C,qCAAqC,QAAQ;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED,CAAC;;AAED,2RAA2R;AAC3R;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,CAAC;AACD;;AAEA,CAAC,kBAAkB;AACnB;AACA,4BAA4B,KAAuD;AACnF;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB;;;;;;;;ACp3BA,4JAA4J;AAC5J;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA,4BAA4B;AAC5B,aAAa;AACb;AACA,8BAA8B;AAC9B,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,EAAE,cAAc,EAAE;AAC5D,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,4HAA4H;AAC5H;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA,uCAAuC;AACvC;AACA;AACA;AACA,qDAAqD,0BAA0B;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;AAEA,CAAC;;AAED,+JAA+J;AAC/J;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,UAAU;AAC7C,qCAAqC,QAAQ;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED,CAAC;;AAED,mPAAmP;AACnP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA,0CAA0C;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,CAAC;AACD;;AAEA,CAAC,kBAAkB;AACnB;AACA,4BAA4B,KAAuD;AACnF;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB;;;;;;;;AClRA,mKAAmK;AACnK;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,iNAAiN;AACjN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,gGAAgG;AAChG,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA,uCAAuC;AACvC,aAAa;AACb;AACA,4BAA4B;AAC5B,aAAa;AACb;AACA,8BAA8B;AAC9B,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,4HAA4H;AAC5H;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA,uCAAuC;AACvC;AACA;AACA;AACA,qDAAqD,0BAA0B;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;AAEA,CAAC;;AAED,+JAA+J;AAC/J;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,UAAU;AAC7C,qCAAqC,QAAQ;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED,CAAC;;AAED,sNAAsN;AACtN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;AAEA,CAAC,kBAAkB;AACnB;AACA,4BAA4B,KAAuD;AACnF;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB;;;;;;;;ACjVA,8JAA8J;AAC9J;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,EAAE,OAAO,EAAE,+BAA+B,EAAE,cAAc,EAAE;AACtG;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,mCAAmC,EAAE;AACrC;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA,mCAAmC,EAAE;AACrC;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA,sCAAsC,EAAE;AACxC;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA,sCAAsC,EAAE;AACxC;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA,yCAAyC,EAAE;AAC3C;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA,yCAAyC,EAAE;AAC3C;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA,4CAA4C,EAAE;AAC9C;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA,4CAA4C,EAAE;AAC9C;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA,6BAA6B;AAC7B,aAAa;AACb;AACA,kCAAkC;AAClC,aAAa;AACb;AACA,kCAAkC;AAClC,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA,0BAA0B,EAAE;AAC5B;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA,0BAA0B,EAAE;AAC5B;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,0BAA0B,EAAE;AAC5B;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,0BAA0B,EAAE;AAC5B;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA,0BAA0B,EAAE;AAC5B;AACA,aAAa;AACb;AACA,yBAAyB;AACzB;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA,0BAA0B,EAAE;AAC5B;AACA,aAAa;AACb;AACA,yBAAyB;AACzB;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA,yBAAyB;AACzB;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA,yBAAyB;AACzB;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,0BAA0B,EAAE;AAC5B;AACA,aAAa;AACb;AACA,yBAAyB;AACzB;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,0BAA0B,EAAE;AAC5B;AACA,aAAa;AACb;AACA,yBAAyB;AACzB;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA,yBAAyB;AACzB;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,yBAAyB;AACzB;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,yBAAyB;AACzB;AACA,aAAa;AACb;AACA,yBAAyB;AACzB;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,qJAAqJ;AACrJ;AACA;AACA;AACA,gDAAgD;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED,CAAC;;AAED,wMAAwM;AACxM;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;AAEA,CAAC,kBAAkB;AACnB;AACA,4BAA4B,KAAuD;AACnF;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB;;;;;;;;AC3dA,2JAA2J;AAC3J;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,oEAAoE;AAClF;AACA;AACA;AACA,aAAa;AACb,cAAc,8DAA8D;AAC5E;AACA;AACA;AACA,aAAa;AACb,cAAc,gBAAgB;AAC9B,cAAc,6CAA6C;AAC3D,cAAc,wCAAwC;AACtD,cAAc,sBAAsB;AACpC,cAAc;AACd;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA,cAAc,uBAAuB;AACrC,cAAc,mBAAmB;AACjC,cAAc,wDAAwD;AACtE,cAAc,+CAA+C;AAC7D,cAAc;AACd;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,qBAAqB;AACrB,sBAAsB,mBAAmB;AACzC,aAAa;AACb;AACA,cAAc,4DAA4D;AAC1E,cAAc,kCAAkC;AAChD,cAAc;AACd;AACA;AACA,cAAc,uDAAuD;AACrE,cAAc;AACd;AACA;AACA;AACA,oCAAoC,qBAAqB,yBAAyB;AAClF,aAAa;AACb;AACA;AACA,oCAAoC,qBAAqB,yBAAyB;AAClF,aAAa;AACb;AACA;AACA;AACA;AACA,sBAAsB,uBAAuB;AAC7C,sBAAsB;AACtB;AACA,aAAa;AACb;AACA,cAAc;AACd;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA,sBAAsB,8CAA8C;AACpE,sBAAsB;AACtB;AACA,aAAa;AACb;AACA;AACA;AACA,sBAAsB,8CAA8C;AACpE,sBAAsB;AACtB;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,sBAAsB,8DAA8D;AACpF,sBAAsB,2BAA2B;AACjD,sBAAsB;AACtB;AACA,aAAa;AACb;AACA;AACA;AACA,sBAAsB,8DAA8D;AACpF,sBAAsB,2BAA2B;AACjD,sBAAsB;AACtB;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,uBAAuB;AACzC,kBAAkB;AAClB;AACA,SAAS;AACT;AACA,cAAc,uBAAuB;AACrC,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA,CAAC;AACD;AACA;;AAEA,CAAC;;AAED,8KAA8K;AAC9K;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA,CAAC;;AAED,4JAA4J;AAC5J;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,mBAAmB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,mBAAmB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA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AAQ,mBAAO,CAAC,GAAW;AAC3B,IAAI,IAAqC;AACzC,EAAE,SAAkB;AACpB,EAAE,yBAAmB;AACrB,EAAE,KAAK,UAkBN;;;;;;;;ACxBD;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,uBAAuB,UAAU;AACjC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,uBAAuB,UAAU;AACjC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,qBAAqB,UAAU;AAC/B;AACA;;AAEA;AACA;AACA;;AAEA;AACA,qBAAqB,UAAU;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC1Ia;;AAEb;AACA;AACA;AACA,kBAAkB,wBAAwB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,iBAAiB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,4BAA4B;AAChD;AACA;AACA;AACA;AACA;AACA,qBAAqB,6BAA6B;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACnFa;;AAEb;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACjCa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACTa;;AAEb;AACA;AACA,cAAc,KAAwC,GAAG,sBAAiB,GAAG,CAAI;AACjF;AACA;AACA;AACA;AACA;;;;;;;;ACTa;;AAEb;AACA;AACA;AACA;AACA,kDAAkD;AAClD;AACA;AACA,0CAA0C;AAC1C;AACA;AACA;AACA,iFAAiF;AACjF;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,yDAAyD;AACzD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC5Da;;AAEb;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACbA;;;;;;UCAA;UACA;;UAEA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;;UAEA;UACA;;UAEA;UACA;;UAEA;UACA;UACA;;;;;WCzBA;WACA;WACA;;;;;WCFA;WACA;WACA;WACA;WACA;WACA,iCAAiC,WAAW;WAC5C;WACA;;;;;WCPA;WACA;WACA;WACA;WACA,yCAAyC,wCAAwC;WACjF;WACA;WACA;;;;;WCPA;;;;;WCAA;WACA;WACA;WACA,uDAAuD,iBAAiB;WACxE;WACA,gDAAgD,aAAa;WAC7D;;;;;WCNA;WACA;WACA;WACA;WACA;;;;;WCJA;;;;;WCAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA,MAAM,8BAA4B;;;ACAlC,MAAM,mCAA4B;;;ACAJ;AAE9B,MAAM,mBAAmB,gDAAa,CAAC;AAEvC,0DAAe,gBAAgB,EAAC;;;ACJF;AAE9B,MAAM,uBAAuB,gDAAa,CAAC;AAE3C,8DAAe,oBAAoB,EAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACJlB;AACI;AAEtB,SAAS,KAAK,IAKX;AALW,eACZ;AAAA;AAAA,IACA;AAAA,IACA;AAAA,EANF,IAGc,IAIT,iBAJS,IAIT;AAAA,IAHH;AAAA,IACA;AAAA,IACA;AAAA;AAGA,WAAS,gBAAgB;AACvB,UAAM,aAAa,UAAU;AAE7B,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA,GAAG,UAAU,IAAI,IAAI;AAAA,MACrB;AAAA,IACF,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AAAA,EAC5B;AAEA,SAAO,uDAAC,sBAAE,WAAW,cAAc,KAAO,KAAM;AAClD;AAEA,KAAK,YAAY;AAAA,EACf,WAAW,sCAAgB;AAAN,EACrB,QAAQ,sCAAgB;AAAN,EAClB,MAAM,sCAAgB,CAAC;AACzB;AAEA,sDAAe,IAAI,EAAC;;;AC7Bc;AACZ;AAEL;AACgB;AAEjC,SAAS,YAAY,EAAE,KAAK,GAAG;AAC7B,QAAM,EAAE,WAAW,UAAU,aAAa,IAAI,6CAAU,CAAC,uBAAoB;AAE7E,QAAM,WAAW,YAAY,iBAAiB;AAC9C,QAAM,UAAU;AAAA,IACd;AAAA,IACA,YAAY;AAAA,EACd,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AAC1B,QAAM,UACJ;AAAA,IAAC;AAAA;AAAA,MACC,WAAW;AAAA,MACX,SAAS;AAAA,MACT,MAAK;AAAA;AAAA,IAEL,uDAAC,eAAI,IAAC,WAAU,sBAAqB,MAAM,UAAU;AAAA,EACvD;AAGF,SAAO,OACH,uDAAC,SAAI,WAAU,oCAAkC,OAAQ,IACzD;AACN;AAEA,YAAY,YAAY;AAAA,EACtB,MAAM,oCAAc;AACtB;AAEA,2DAAe,WAAW,EAAC;;;AC/BpB;AACe;AAEO;AACI;AACT;AAExB,SAAS,cAAc;AAAA,EACrB,WAAW;AAAA,EACX;AAAA,EACA;AAAA,EACA;AACF,GAAG,KAAK;AACN,QAAM,EAAE,MAAM,IAAI,6CAAU,CAAC,mBAAgB;AAC7C,QAAM,CAAC,WAAW,YAAY,IAAI,2CAAQ,CAAC,aAAa;AAExD,QAAM,eAAe,MAAM;AACzB,QAAI,UAAU;AACZ;AAAA,IACF;AAEA,iBAAa,CAAC,SAAS;AAAA,EACzB;AAEA,QAAM,UAAU,0CAAO,CAAC,MAAM;AAAA,IAC5B;AAAA,IACA,MAAM,kBACF,yCAAyC,MAAM,QAAQ,KACvD;AAAA,IACJ;AAAA,IACA,cAAc,SAAS;AAAA,EACzB,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG,GAAG,CAAC,OAAO,WAAW,SAAS,CAAC;AAE1D,QAAM,eAAe,0CAAO,CAAC,OAAO;AAAA,IAClC;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI,CAAC,WAAW,UAAU,YAAY,CAAC;AAEvC,SACE,uDAAC,SAAI,KAAU,WAAW,WACxB,uDAAC,uBAAoB,CAAC,UAArB,EAA8B,OAAO,gBACnC,MAAM,mBACL,uDAAC,oBAAW,IAAC,MAAI,MAAC,GAEnB,QACH,CACF;AAEJ;AAEA,cAAc,YAAY;AAAA,EACxB,UAAU,uCAAmB,CAAC;AAAA,IAC5B,qCAAiB,CAAC,oCAAc;AAAA,IAChC,oCAAc;AAAJ,IACV,uCAAiB;AAAP,IACV,sCAAgB;AAAN,EACZ,CAAC;AAAA,EACD,WAAW,oCAAc;AAAJ,EACrB,WAAW,sCAAgB;AAAN,EACrB,UAAU,oCAAc;AAC1B;AAEA,cAAc,eAAe;AAAA,EAC3B,WAAW;AACb;AAEA,uDAAe,6CAAU,CAAC,aAAa,CAAC,EAAC;;;ACrEP;AACZ;AAEL;AACY;AACI;AACT;AAExB,SAAS,oBAAoB,EAAE,WAAW,SAAS,GAAG;AACpD,QAAM,EAAE,WAAW,UAAU,aAAa,IAAI,6CAAU,CAAC,uBAAoB;AAC7E,QAAM,EAAE,mBAAmB,MAAM,IAAI,6CAAU,CAAC,mBAAgB;AAChE,QAAM,WAAW,YAAY,iBAAiB;AAC9C,QAAM,UAAU;AAAA,IACd;AAAA,IACA,qBAAqB;AAAA,IACrB;AAAA,EACF,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AAE1B,SACE,uDAAC,SAAI,WAAW,WAEZ,CAAC,oBAEG;AAAA,IAAC;AAAA;AAAA,MACC,WAAW,WAAW,qCAAqC;AAAA,MAC3D,SAAS;AAAA,MACT,MAAK;AAAA;AAAA,IAEL,uDAAC,cAAM,QAAS;AAAA,IAChB,uDAAC,eAAI,IAAC,WAAU,sBAAqB,MAAM,UAAU;AAAA,EACvD,IAGA,kGACG,CAAC,MAAM,mBAAmB,MAAM,aAAa,UAC5C,uDAAC,oBAAW,MAAC,GAEf,uDAAC,aAAK,QAAS,GACd,CAAC,MAAM,mBAAmB,MAAM,aAAa,WAC5C,uDAAC,oBAAW,MAAC,CAEjB,CAGR;AAEJ;AAEA,oBAAoB,YAAY;AAAA,EAC9B,UAAU,uCAAmB,CAAC;AAAA,IAC5B,qCAAiB,CAAC,oCAAc;AAAA,IAChC,oCAAc;AAAJ,IACV,uCAAiB;AAAP,IACV,sCAAgB;AAAN,EACZ,CAAC;AAAA,EACD,WAAW,sCAAgB;AAC7B;AAEA,6DAAe,mBAAmB,EAAC;;;AC1DnC,MAAM,+CAA4B;;ACAA;AAElC,MAAM,cAAc,CAAC,UAAU;AAC7B,QAAM,MAAM,yCAAM,CAAC;AACnB,8CAAS,CAAC,MAAM;AACd,QAAI,UAAU;AAAA,EAChB,GAAG,CAAC,KAAK,CAAC;AACV,SAAO,IAAI;AACb;AAGA,wDAAe,WAAW,EAAC;;;ACXO;AAElC,MAAM,aAAa,CAAC,UAAU,UAAU;AACtC,QAAM,gBAAgB,yCAAM,CAAC;AAE7B,8CAAS;AAAT,IAAU,MAAM;AACd,oBAAc,UAAU;AAAA,IAC1B;AAAA,IACA,CAAC,QAAQ;AAAA,EAAC;AAEV,8CAAS;AAAT,IAAU,MAAM;AACd,eAAS,OAAO;AACd,sBAAc,QAAQ;AAAA,MACxB;AACA,UAAI,UAAU,MAAM;AAClB,cAAM,KAAK,WAAW,MAAM,KAAK;AACjC,eAAO,MAAM,aAAa,EAAE;AAAA,MAC9B;AAEA,aAAO,MAAM;AAAA,MAAC;AAAA,IAChB;AAAA,IACA,CAAC,KAAK;AAAA,EAAC;AACT;AAGA,uDAAe,UAAU,EAAC;;;ACzBQ;AAGnB,SAAS,YAAY,UAAU,UAAU,MAAM;AAC5D,QAAM,gBAAgB,yCAAM,CAAC;AAE7B,8CAAS,CAAC,MAAM;AACd,kBAAc,UAAU;AAAA,EAC1B,GAAG,CAAC,QAAQ,CAAC;AAGb,8CAAS,CAAC,MAAM;AACd,aAAS,OAAO;AACd,oBAAc,QAAQ,GAAG,IAAI;AAAA,IAC/B;AACA,QAAI,UAAU,QAAQ,UAAU,QAAW;AACzC,YAAM,KAAK,YAAY,MAAM,KAAK;AAClC,aAAO,MAAM,cAAc,EAAE;AAAA,IAC/B;AAAA,EACF,GAAG,CAAC,KAAK,CAAC;AAEZ;;;ACrBkC;AAElC,MAAM,mBAAmB,CAAC,WAAW,SAAS,YAAY;AACxD,QAAM,eAAe,yCAAM,CAAC;AAC5B,8CAAS,CAAC,MAAM;AACd,iBAAa,UAAU;AAAA,EACzB,GAAG,CAAC,OAAO,CAAC;AAEZ,8CAAS,CAAC,MAAM;AACd,UAAM,cAAc,mCAAS;AAC7B,QAAI,CAAC,aAAa;AAEhB;AAAA,IACF;AAEA,UAAM,gBAAgB,CAAC,UAAU,aAAa,QAAQ,KAAK;AAC3D,YAAQ,iBAAiB,WAAW,aAAa;AAGjD,WAAO,MAAM;AACX,cAAQ,oBAAoB,WAAW,aAAa;AAAA,IACtD;AAAA,EACF,GAAG,CAAC,WAAW,OAAO,CAAC;AACzB;AAGA,6DAAe,gBAAgB,EAAC;;;AC1BuB;AAEvD,MAAM,UAAU,CAAC,OAAO;AACtB,MAAI,CAAC,IAAI;AACP,WAAO;AAAA,MACL,OAAO;AAAA,MACP,QAAQ;AAAA,IACV;AAAA,EACF;AAEA,SAAO;AAAA,IACL,OAAO,GAAG;AAAA,IACV,QAAQ,GAAG;AAAA,EACb;AACF;AAEA,MAAM,mBAAmB,CAAC,QAAQ;AAChC,QAAM,CAAC,eAAe,gBAAgB,IAAI,2CAAQ,CAAC,QAAQ,MAAM,IAAI,UAAU,CAAC,CAAC,CAAC;AAClF,QAAM,eAAe,8CAAW,CAAC,MAAM;AACrC,QAAI,IAAI,SAAS;AACf,uBAAiB,QAAQ,IAAI,OAAO,CAAC;AAAA,IACvC;AAAA,EACF,GAAG,CAAC,GAAG,CAAC;AAER,oDAAe,CAAC,MAAM;AACpB,iBAAa;AAEb,QAAI,iBAAiB,IAAI,eAAe,MAAM;AAC5C,mBAAa;AAAA,IACf,CAAC;AACD,mBAAe,QAAQ,IAAI,OAAO;AAElC,WAAO,MAAM;AACX,qBAAe,WAAW,IAAI,OAAO;AACrC,uBAAiB;AAAA,IACnB;AAAA,EACF,GAAG,CAAC,IAAI,OAAO,CAAC;AAEhB,SAAO;AACT;AAGA,6DAAe,gBAAgB,EAAC;;;AC1CO;AACD;AACC;AACK;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACFrC;AACe;AACQ;AACqB;AAKnD,SAAS,YAAY,IAKlB;AALkB,eACnB;AAAA;AAAA,IACA;AAAA,IACA;AAAA,EAbF,IAUqB,IAIhB,2BAJgB,IAIhB;AAAA,IAHH;AAAA,IACA;AAAA,IACA;AAAA;AAGA,QAAM,mBAAmB,yCAAM,CAAC,IAAI;AACpC,QAAM,kBAAkB,yCAAM,CAAC,IAAI;AACnC,QAAM,mBAAmB,sBAAgB,CAAC,gBAAgB;AAC1D,QAAM,CAAC,uBAAuB,wBAAwB,IAAI,2CAAQ,CAAC;AAAA;AAAA,IAEjE,QAAS,YAAa,IAAI;AAAA,EAC5B,CAAC;AAED,QAAM,YAAY,CAAC,WAAW;AAC5B,6BAAyB;AAAA,MACvB,QAAQ,GAAG,MAAM;AAAA,IACnB,CAAC;AAAA,EACH;AAEA,QAAM,YAAY,MAAO,iBAAiB,UAAU,iBAAiB,QAAQ,eAAe;AAE5F,QAAM,UAAU,MAAM;AACpB,cAAU,UAAU,CAAC;AAAA,EACvB;AAEA,QAAM,SAAS,MAAM;AACnB,cAAU,CAAC;AAAA,EACb;AAEA,8CAAS,CAAC,MAAM;AACd,QAAI,CAAC,cACA,qDAAkB,WAClB,sBAAsB,YAAW,qDAAkB,SACtD;AACA,gBAAU,iBAAiB,MAAM;AAAA,IACnC;AAAA,EACF,GAAG,CAAC,iBAAiB,MAAM,CAAC;AAE5B,QAAM,iBAAiB,8CAAW,CAAC,MAAM;AACvC,QAAI,CAAC,aAAa,iBAAiB,SAAS;AAC1C,gBAAU,UAAU,CAAC;AACrB,sBAAgB,QAAQ,MAAM,SAAS,GAAG,UAAU,CAAC;AAAA,IACvD;AAAA,EACF,GAAG,CAAC,WAAW,iBAAiB,OAAO,CAAC;AAExC,wBAAgB,CAAC,UAAU,gBAAgB,MAAM;AAEjD,SACE;AAAA,IAAC,6DAAa;AAAb;AAAA,MACC;AAAA,MACA;AAAA,MACA,IAAI,CAAC;AAAA,MACL,SAAS;AAAA,MACT,YAAW;AAAA;AAAA,IAEX;AAAA,MAAC;AAAA;AAAA,QACC,WAAU;AAAA,QACV,KAAK;AAAA,QACL,OAAO;AAAA;AAAA,MAEP;AAAA,QAAC;AAAA,mDACK,OADL;AAAA,UAEC;AAAA,UACA,KAAK;AAAA;AAAA,QAEH;AAAA,MACJ;AAAA,IACF;AAAA,EACF;AAEJ;AAEA,YAAY,YAAY;AAAA,EACtB,UAAU,uCAAmB,CAAC;AAAA,IAC5B,uCAAiB;AAAP,IACV,oCAAc;AAAJ,IACV,sCAAgB;AAAN,EACZ,CAAC;AAAA;AAAA,EAED,WAAW,oCAAc;AAAJ;AAAA,EAErB,WAAW,sCAAgB;AAC7B;AAEA,6DAAe,WAAW,EAAC;;;AC/FO;AACZ;AAEE;AACS;AAEjC,SAAS,qBAAqB,EAAE,UAAU,UAAU,GAAG;AACrD,QAAM,EAAE,UAAU,IAAI,6CAAU,CAAC,uBAAoB;AAErD,QAAM,UAAU;AAAA,IACd;AAAA,IACA;AAAA,EACF,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AAE1B,SACE,uDAAC,SAAI,WAAW,WACd,uDAAC,sBAAW,IAAC,aACT,QACJ,CACF;AAEJ;AAEA,qBAAqB,YAAY;AAAA,EAC/B,UAAU,uCAAmB,CAAC;AAAA,IAC5B,qCAAiB,CAAC,oCAAc;AAAA,IAChC,oCAAc;AAAJ,IACV,uCAAiB;AAAP,IACV,sCAAgB;AAAN,EACZ,CAAC;AAAA,EACD,WAAW,sCAAgB;AAC7B;AAEA,8DAAe,oBAAoB,EAAC;;;ACjCL;AACT;AACI;AACM;AACC;AACJ;AAE7B,SAAS,UAAU;AAAA,EACjB;AAAA,EACA;AAAA,EACA;AAAA,EACA,QAAQ,EAAE,UAAU,SAAS,iBAAiB,MAAM;AACtD,GAAG;AACD,QAAM,UAAU;AAAA,IACd;AAAA,IACA;AAAA,EACF,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AAE1B,QAAM,eAAe,0CAAO,CAAC,OAAO;AAAA,IAClC;AAAA,IACA;AAAA,EACF,IAAI,CAAC,mBAAmB,KAAK,CAAC;AAE9B,SACE,uDAAC,SAAI,WAAW,WACd,uDAAC,mBAAgB,CAAC,UAAjB,EAA0B,OAAO,gBAC/B,QACH,CACF;AAEJ;AAEA,UAAU,YAAY;AAAA,EACpB,UAAU,uCAAmB,CAAC;AAAA,IAC5B,qCAAiB,CAAC,oCAAc;AAAA,IAChC,oCAAc;AAAJ,IACV,uCAAiB;AAAP,IACV,sCAAgB;AAAN,EACZ,CAAC;AAAA,EACD,WAAW,sCAAgB;AAAN,EACrB,mBAAmB,oCAAc;AAAJ,EAC7B,OAAO,mCAAe,CAAC;AAAA,IACrB,UAAU,mCAAe,CAAC,CAAC,QAAQ,OAAO,CAAC;AAAA,IAC3C,iBAAiB,oCAAc;AAAJ,EAC7B,CAAC;AACH;AAEA,UAAU,eAAe;AAAA,EACvB,mBAAmB;AACrB;AAGA,UAAU,OAAO,gBAAa;AAC9B,UAAU,KAAK,SAAS,sBAAmB;AAC3C,UAAU,KAAK,UAAU,uBAAoB;AAG7C,2DAAe,SAAS,EAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACzDqB;AACxB;AAEL;AAKjB,MAAM,SAAS,mCAAgB,CAAC,CAAC,OAAO,QAAQ;AAC9C,QAkBI,YAjBF;AAAA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAzBJ,IA2BM,IADC,sBACD,IADC;AAAA,IAhBH;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAIF,QAAM,gBAAgB,MAAM;AAC1B,UAAM,aAAa,CAAC,YAAY,EAAE,OAAO,YAAY,UAAU,MAAM,GAAG,IAAI,CAAC,CAAC;AAC9E,UAAM,YAAa,OAAQ,eAAe,IAAI,KAAK;AACnD,UAAM,gBAAiB,WAAY,aAAa;AAChD,UAAM,eAAe,WAAW;AAChC,UAAM,aAAa,QAAQ,eAAe,KAAK,KAAK;AACpD,UAAM,gBAAgB,WAAW,0BAA0B;AAC3D,UAAM,eAAe,UAAU,yBAAyB;AAExD,eAAW,KAAK,aAAa;AAC7B,eAAW,KAAK,UAAU;AAC1B,eAAW,KAAK,SAAS;AACzB,eAAW,KAAK,aAAa;AAC7B,eAAW,KAAK,YAAY;AAC5B,eAAW,KAAK,YAAY;AAE5B,QAAI,UAAU;AACZ,iBAAW,KAAK,QAAQ,gBAAgB,MAAM,EAAE;AAAA,IAClD;AAEA,WAAO,WAAW,KAAK,GAAG;AAAA,EAC5B;AAEA,QAAM,gBAAgB,CAAC,aAAa;AAClC,UAAM,OAAO,gBAAgB;AAE7B,WACG,YAAY,SAAS,WAClB,uDAAC,eAAI,IAAC,QAAQ,YAAY,MAAM,UAAU,IAC1C;AAAA,EAER;AAEA,QAAM,gBAAgB,MAAM;AAC1B,QAAI;AAEJ,QAAI,cAAc;AAChB,aACE,uDAAC,uCAAQ,QACL,+CAAY,CAAC,cAAc;AAAA,QAC3B,WAAW,cAAc;AAAA,QACzB;AAAA,MACF,CAAC,CAEH;AAAA,IAEJ;AAEA,QAAI,MAAM;AACR,mBACE;AAAA,QAAC;AAAA;AAAA,UACC;AAAA,UACA,WAAW,cAAc;AAAA,UACzB;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,WACI;AAAA,QAEF,cAAc,MAAM;AAAA,QACpB;AAAA,QACA,cAAc,OAAO;AAAA,MACzB;AAAA,IAEJ,OAAO;AACL;AAAA,MAEE;AAAA,QAAC;AAAA;AAAA,UACC;AAAA,UACA,WAAW,cAAc;AAAA,UACzB;AAAA,UACA;AAAA,UACA,MAAM,QAAQ;AAAA,UACd;AAAA,WACI;AAAA,QAEF,cAAc,MAAM;AAAA,QACpB,YAAY,uDAAC,cAAM,QAAS;AAAA,QAC5B,cAAc,OAAO;AAAA,MACzB;AAAA,IAEJ;AAEA,WAAO;AAAA,EACT;AAGA,SACE,cAAc;AAElB,CAAC;AAED,OAAO,YAAY;AAAA;AAAA;AAAA;AAAA,EAIjB,UAAU,uCAAmB,CAAC;AAAA,IAC5B,qCAAiB,CAAC,oCAAc;AAAA,IAChC,oCAAc;AAAJ,IACV,uCAAiB;AAAP,IACV,sCAAgB;AAAN,EACZ,CAAC;AAAA,EACD,cAAc,uCAAmB,CAAC;AAAA,IAChC,qCAAiB,CAAC,oCAAc;AAAA,IAChC,oCAAc;AAAJ,IACV,uCAAiB;AAAP,EACZ,CAAC;AAAA,EACD,WAAW,sCAAgB;AAAN;AAAA;AAAA;AAAA,EAIrB,SAAS,sCAAgB;AAAN;AAAA;AAAA;AAAA,EAInB,UAAU,oCAAc;AAAJ;AAAA;AAAA;AAAA,EAIpB,IAAI,sCAAgB;AAAN,EACd,MAAM,sCAAgB;AAAN,EAChB,cAAc,sCAAgB;AAAN;AAAA,EACxB,YAAY,sCAAgB;AAAN,EACtB,UAAU,oCAAc;AAAJ,EACpB,UAAU,sCAAgB;AAAN,EACpB,SAAS,oCAAc;AAAJ;AAAA;AAAA;AAAA,EAInB,SAAS,oCAAc;AAAJ;AAAA;AAAA;AAAA,EAInB,OAAO,sCAAgB;AAAN;AAAA;AAAA;AAAA,EAIjB,MAAM,sCAAgB;AAAN;AAAA;AAAA;AAAA,EAIhB,MAAM,sCAAgB;AACxB;AAEA,OAAO,eAAe;AAAA,EACpB,OAAO;AAAA,EACP,MAAM;AACR;AAEA,wDAAe,MAAM,EAAC;;;AClLJ;AACI;AAKtB,SAAS,YAAY;AAAA,EACnB;AAAA,EACA;AAAA,EACA;AACF,GAAG;AACD,SACE,uDAAC,SAAI,WAAW,6BAA6B,SAAS,MACnD,QAAQ,KAAK,KACZ,uDAAC,eAAO,KAAM,GAEhB,uDAAC,SAAI,WAAU,sBACZ,QACH,CACF;AAEJ;AAEA,YAAY,YAAY;AAAA,EACtB,UAAU,uCAAmB,CAAC;AAAA,IAC5B,qCAAiB,CAAC,oCAAc;AAAA,IAChC,oCAAc;AAAJ,IACV,uCAAiB;AAAP,IACV,sCAAgB;AAAN,EACZ,CAAC;AAAA,EACD,WAAW,sCAAgB;AAAN;AAAA;AAAA;AAAA,EAIrB,OAAO,sCAAgB;AACzB;AAEA,6DAAe,WAAW,EAAC;;;ACrC3B,MAAM,gCAA4B;;ACAlC,MAAM,kCAA4B;;ACAlC,+CAAe,CAAC,MAAM,MAAM,cAAc;AACxC,MAAI;AACJ,SAAO,SAAS,aAAa,MAAM;AACjC,UAAM,UAAU;AAChB,UAAM,QAAQ,MAAM;AAClB,gBAAU;AACV,UAAI,CAAC,WAAW;AACd,aAAK,MAAM,SAAS,IAAI;AAAA,MAC1B;AAAA,IACF;AACA,UAAM,UAAU,aAAa,CAAC;AAC9B,iBAAa,OAAO;AACpB,cAAU,WAAW,OAAO,IAAI;AAChC,QAAI,SAAS;AACX,WAAK,MAAM,SAAS,IAAI;AAAA,IAC1B;AAAA,EACF;AACF,CAAC,EAAC;;;ACjBgB;AACI;AAEtB,SAAS,OAAO,EAAE,WAAW,WAAW,YAAY,iBAAiB,MAAM,GAAG;AAC5E,QAAM,UAAU;AAAA,IACd;AAAA,IACA;AAAA,IACA;AAAA,EACF,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AAE1B,QAAM,SACJ,uDAAC,SAAI,WAAW,WACd,uDAAC,SAAI,WAAU,eAAc,GAC7B,uDAAC,SAAI,WAAU,eAAc,GAC7B,uDAAC,SAAI,WAAU,eAAc,GAC7B,uDAAC,SAAI,WAAU,eAAc,CAC/B;AAGF,SAAO,iBACH,uDAAC,SAAI,WAAU,0BAAwB,MAAO,IAC9C;AACN;AAEA,OAAO,YAAY;AAAA;AAAA,EAEjB,WAAW,sCAAgB;AAAN;AAAA,EAErB,UAAU,sCAAgB;AAAN;AAAA,EAEpB,gBAAgB,oCAAc;AAChC;AAEA,wDAAe,MAAM,EAAC;;;ACjCJ;AACI;AAEL;AAQjB,SAAS,QAAQ;AAAA,EACf;AAAA,EAAU;AAAA,EAAO;AAAA,EAAS;AAAA,EAAU;AACtC,GAAG;AACD,WAAS,gBAAgB;AACvB,WAAO;AAAA,MACL;AAAA,MACA,gBAAgB,SAAS,MAAM;AAAA,MAC/B,YAAY;AAAA,MACZ;AAAA,IACF,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AAAA,EAC5B;AAEA,QAAM,WAAW,UAAU,YAAY,UAAU;AAEjD,SACE,uDAAC,SAAI,WAAW,cAAc,KAC5B,uDAAC,eAAI,IAAC,QAAO,SAAQ,MAAM,UAAU,GACrC,uDAAC,SAAI,WAAU,0BACX,QACJ,GACC,WACC,uDAAC,eAAI,IAAC,QAAO,SAAQ,MAAK,KAAI,SAAS,SAAS,CAEpD;AAEJ;AAEA,QAAQ,YAAY;AAAA;AAAA,EAElB,OAAO,sCAAgB;AAAN,EACjB,UAAU,uCAAmB,CAAC;AAAA,IAC5B,uCAAiB;AAAP,IACV,oCAAc;AAAJ,IACV,sCAAgB;AAAN,EACZ,CAAC;AAAA;AAAA,EAED,WAAW,sCAAgB;AAAN;AAAA,EAErB,UAAU,oCAAc;AAAJ;AAAA,EAEpB,SAAS,oCAAc;AACzB;AAEA,yDAAe,OAAO,EAAC;;;;;ACpDhB;AACe;AACG;AACF;AAEF;AACO;AACT;AACC;AACC;AAErB,4CAAmB,CAAC,SAAS,qBAAQ;AAErC,MAAM,QAAQ,CAAC,UAAU;AACvB,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,eAAe,CAAC;AAAA,IAChB,kBAAkB;AAAA,IAClB;AAAA,EACF,IAAI;AACJ,QAAM,CAAC,kBAAkB,mBAAmB,IAAI,2CAAQ,CAAC,IAAI;AAC7D,QAAM,kBAAkB,yCAAM,CAAC,IAAI;AACnC,QAAM,WAAW,MAAM;AACrB,QAAI,kBAAkB;AACpB,uBAAiB,OAAO;AAAA,IAC1B;AAAA,EACF;AAEA,QAAM,eAAe;AAAA,IACnB,aAAa,6CAAM,CAAC;AAAA,MAClB,OAAO;AAAA,QACL,MAAM;AAAA,QACN,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,MACA,OAAO,CAAC;AAAA,MACR,SAAS;AAAA,QACP,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,UAAU;AAAA,QACV,WAAW;AAAA,QACX,SAAS;AAAA,MACX;AAAA,MACA,UAAU,CAAC;AAAA,QACT,MAAM;AAAA,QACN,OAAO;AAAA,QACP,KAAK;AAAA,QACL,QAAQ;AAAA,QACR,gBAAgB;AAAA,UACd,WAAW;AAAA,YACT,QAAO,yCAAY,cAAa;AAAA,UAClC;AAAA,UACA,WAAW;AAAA,YACT,QAAO,yCAAY,cAAa;AAAA,UAClC;AAAA,QACF;AAAA,QACA,aAAa;AAAA,UACX,QAAO,yCAAY,gBAAe;AAAA,QACpC;AAAA,QACA,WAAW;AAAA,UACT,QAAO,yCAAY,cAAa;AAAA,QAClC;AAAA,QACA,aAAa;AAAA,QACb,cAAa,yCAAY,gBAAe;AAAA,MAC1C,CAAC;AAAA,MACD,QAAQ;AAAA,QACN,MAAM;AAAA;AAAA;AAAA,MAGR;AAAA,MACA,SAAS;AAAA,QACP,SAAS;AAAA,QACT,aAAa;AAAA,UACX,MAAM;AAAA,QACR;AAAA,MACF;AAAA,MACA,MAAM;AAAA,QACJ,MAAM;AAAA,QACN,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,KAAK;AAAA,QACL,cAAc;AAAA,MAChB;AAAA,MACA,OAAO;AAAA,QACL,aAAa;AAAA,QACb,MAAM;AAAA,QACN,WAAW;AAAA,UACT,MAAM;AAAA,UACN,WAAW;AAAA,YACT,MAAM;AAAA,YACN,OAAO;AAAA,UACT;AAAA,QACF;AAAA,QACA,UAAU;AAAA,UACR,MAAM;AAAA,QACR;AAAA,QACA,UAAU;AAAA,UACR,MAAM;AAAA,QACR;AAAA,QACA,MAAM,CAAC;AAAA,MACT;AAAA,MACA,OAAO;AAAA,QACL,KAAK;AAAA,QACL,aAAa;AAAA,QACb,aAAa;AAAA,UACX,MAAM;AAAA,QACR;AAAA,QACA,WAAW;AAAA,UACT,WAAW;AAAA,YACT,MAAM;AAAA,YACN,OAAO;AAAA,UACT;AAAA,UACA,MAAM;AAAA,QACR;AAAA,QACA,WAAW;AAAA,UACT,MAAM;AAAA,QACR;AAAA,QACA,UAAU;AAAA,UACR,MAAM;AAAA,QACR;AAAA,QACA,UAAU;AAAA,UACR,MAAM;AAAA,QACR;AAAA,QACA,MAAM;AAAA,MACR;AAAA,MACA,WAAW;AAAA,QACT,OAAO;AAAA,MACT;AAAA,MACA,QAAQ,CAAC;AAAA,MACT,iBAAiB;AAAA,IACnB,CAAC;AAAA,IACD,eAAe,6CAAM,CAAC;AAAA,MACpB,MAAM,CAAC;AAAA,MACP,MAAM;AAAA,MACN,WAAW;AAAA,QACT,SAAS;AAAA,QACT,OAAO,kBAAkB,IAAI,wCAAe,CAAC;AAAA,UAAe;AAAA,UAAG;AAAA,UAAG;AAAA,UAAG;AAAA,UACnE,gBAAgB,IAAI,CAAC,OAAO,WAAW;AAAA,YACrC,QAAQ;AAAA,YACR;AAAA,UACF,EAAE;AAAA,QAAC,IAAI,CAAC;AAAA,MACZ;AAAA,MACA,QAAQ;AAAA,MACR,YAAY;AAAA,MACZ,MAAM;AAAA,IACR,CAAC;AAAA,EACH;AAEA,QAAM,WAAW;AAAA,IACf,aAAa,6CAAM,CAAC;AAAA,MAClB,SAAS;AAAA,QACP,SAAS;AAAA,QACT,WAAW;AAAA,MACb;AAAA,MACA,QAAQ;AAAA,QACN,QAAQ;AAAA,QACR,GAAG;AAAA,QACH,GAAG;AAAA,QACH,MAAM,CAAC;AAAA,MACT;AAAA,MACA,OAAO,CAAC;AAAA,MACR,QAAQ,CAAC;AAAA,IACX,CAAC;AAAA,IACD,eAAe,6CAAM,CAAC;AAAA,MACpB,MAAM;AAAA,MACN,QAAQ;AAAA,QACN;AAAA,QACA;AAAA,MACF;AAAA,MACA,QAAQ;AAAA,QACN;AAAA,QACA;AAAA,MACF;AAAA,MACA,mBAAmB;AAAA,MACnB,eAAe;AAAA,MACf,iBAAiB;AAAA,MACjB,WAAW;AAAA,QACT,QAAQ;AAAA,UACN,MAAM;AAAA,UACN,QAAQ;AAAA,UACR,QAAQ;AAAA,UACR,SAAS;AAAA,QACX;AAAA,MACF;AAAA,MACA,MAAM,CAAC;AAAA,IACT,CAAC;AAAA,EACH;AAEA,QAAM,WAAW;AAAA,IACf,aAAa,6CAAM,CAAC;AAAA,MAClB,QAAQ,CAAC;AAAA,IACX,CAAC;AAAA,IACD,eAAe,6CAAM,CAAC;AAAA,MACpB,MAAM;AAAA,MACN,MAAM,CAAC;AAAA,IACT,CAAC;AAAA,EACH;AAEA,QAAM,oBAAoB,CAAC,cAAc,iBAAiB,mBAAmB;AAC3E,QAAI,YAAY,CAAC;AACjB,YAAQ,cAAc;AAAA,MACpB,KAAK,OAAO;AACV,oBAAY,SAAS,YAAY,UAAU,6CAAM,CAAC,eAAe,CAAC,EAAE,KAAK;AAEzE,uBAAe,QAAQ,CAAC,UAAU;AAChC,oBAAU,OAAO,KAAK,SAAS,cAAc,UAAU,6CAAM,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC;AAAA,QAC9E,CAAC;AAED;AAAA,MACF;AAAA,MAEA,KAAK,OAAO;AACV,oBAAY,SAAS,YAAY,UAAU,6CAAM,CAAC,eAAe,CAAC,EAAE,KAAK;AAEzE,uBAAe,QAAQ,CAAC,UAAU;AAChC,oBAAU,OAAO,KAAK,SAAS,cAAc,UAAU,6CAAM,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC;AAAA,QAC9E,CAAC;AAED;AAAA,MACF;AAAA,MAEA,SAAS;AACP,oBAAY,aAAa,YAAY,UAAU,6CAAM,CAAC,eAAe,CAAC,EAAE,KAAK;AAC7E,YAAI,MAAM,QAAQ,gBAAgB,KAAK,GAAG;AACxC,oBAAU,QAAQ,gBAAgB;AAAA,QACpC;AAEA,uBAAe,QAAQ,CAAC,OAAO,UAAU;AACvC,gBAAM,aAAa,OAAO;AAAA,YACxB,CAAC;AAAA,YACD,aAAa,cAAc,KAAK;AAAA,YAChC,aAAa,KAAK;AAAA,YAAG;AAAA,UACvB;AACA,oBAAU,OAAO,KAAK,UAAU;AAAA,QAClC,CAAC;AACD;AAAA,MACF;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAEA,8CAAS,CAAC,MAAM;AACd,WAAO,iBAAiB,UAAU,QAAQ;AAE1C,WAAO,MAAM;AACX,aAAO,oBAAoB,UAAU,QAAQ;AAAA,IAC/C;AAAA,EACF,GAAG,CAAC,gBAAgB,CAAC;AAErB,8CAAS,CAAC,MAAM;AAEd,QAAI,EAAC,mDAAiB,UAAS;AAC7B;AAAA,IACF;AAEA,wBAAoB,qCAAY,CAAC,gBAAgB,OAAO,CAAC;AACzD,WAAO,MAAM;AACX,UAAI,kBAAkB;AACpB,yBAAiB,QAAQ;AAAA,MAC3B;AAAA,IACF;AAAA,EACF,GAAG,CAAC,gBAAgB,OAAO,CAAC;AAE5B,QAAM,gBAAgB,CAAC,MAAM;AAC3B,QAAI,UAAU;AACZ,eAAS,CAAC;AAAA,IACZ;AAAA,EACF;AAEA,8CAAS,CAAC,MAAM;AACd,QAAI;AACJ,QAAI,kBAAkB;AACpB,wBAAkB,QAAQ,CAAC,eAAe,GAAG;AAC7C,uBAAiB,GAAG,YAAY,eAAe;AAC/C,uBAAiB,GAAG,WAAW,eAAe;AAC9C,uBAAiB,GAAG,SAAS,eAAe;AAE5C,uBAAiB,GAAG,aAAa,CAAC,WAAW;AAC3C,YAAI,OAAO,MAAM;AACf,2BAAiB,MAAM,EAAE,eAAe,SAAS;AAAA,QACnD;AAAA,MACF,CAAC;AAAA,IACH;AAEA,WAAO,MAAM;AACX,UAAI,kBAAkB;AACpB,yBAAiB,IAAI,YAAY,eAAe;AAChD,yBAAiB,IAAI,WAAW,eAAe;AAC/C,yBAAiB,IAAI,SAAS,eAAe;AAAA,MAC/C;AAAA,IACF;AAAA,EACF,GAAG,CAAC,kBAAkB,QAAQ,CAAC;AAE/B,QAAM,eAAe,iBAAW,CAAC,gBAAgB;AACjD,QAAM,aAAa,iBAAW,CAAC,MAAM;AACrC,QAAM,WAAW,iBAAW,CAAC,IAAI;AACjC,QAAM,aAAa,iBAAW,CAAC,MAAM;AACrC,8CAAS,CAAC,MAAM;AArTlB;AAsTI,QACE,qBAEE,GAAC,wDAAM,CAAC,YAAY,MAAnB,mBAAsB,WAAtB,4BAA+B,6CAAM,CAAC,gBAAgB,OACpD,GAAC,wDAAM,CAAC,UAAU,MAAjB,mBAAoB,WAApB,4BAA6B,6CAAM,CAAC,MAAM,OAC1C,aAAa,QACd,GAAC,wDAAM,CAAC,UAAU,GAAE,WAAnB,4BAA4B,6CAAM,CAAC,MAAM,MAE/C;AACA,uBAAiB,MAAM;AACvB,uBAAiB,UAAU,kBAAkB,MAAM,QAAQ,MAAM,CAAC;AAClE,uBAAiB,eAAe;AAAA,QAC9B,MAAM;AAAA,QACN,KAAK;AAAA,QACL,sBAAsB;AAAA,MACxB,CAAC;AAAA,IACH;AAAA,EACF,GAAG,CAAC,kBAAkB,QAAQ,QAAQ,IAAI,CAAC;AAE3C,8CAAS,CAAC,MAAM;AACd,QAAI,oBAAoB,WAAW;AACjC,uBAAiB,eAAe;AAAA,QAC9B,MAAM;AAAA,QACN,aAAa,UAAU;AAAA,QACvB,WAAW,UAAU;AAAA,MACvB,CAAC;AACD,uBAAiB,eAAe;AAAA,QAC9B,MAAM;AAAA,QACN,aAAa,UAAU;AAAA,QACvB,WAAW,UAAU;AAAA,MACvB,CAAC;AAAA,IACH;AAAA,EACF,GAAG,CAAC,SAAS,CAAC;AAGd,QAAM,gBAAgB,iBAAW,CAAC,SAAS;AAC3C,QAAM,cAAc,iBAAW,CAAC,OAAO;AACvC,8CAAS,CAAC,MAAM;AACd,QACE,oBACG,cAAc,MACd,YAAY,OAEb,kBAAkB,aACf,gBAAgB,UAErB;AACA,uBAAiB,eAAe;AAAA,QAC9B,MAAM;AAAA,QACN,YAAY;AAAA,QACZ,UAAU;AAAA,MACZ,CAAC;AAAA,IACH;AAAA,EACF,GAAG,CAAC,WAAW,OAAO,CAAC;AAEvB,QAAM,WAAW,MAAM;AACrB,UAAM,EAAE,MAAM,IAAI;AAClB,UAAM,YAAY,SAAS,CAAC;AAE5B,QAAI,CAAC,UAAU,QAAQ;AACrB,gBAAU,SAAS;AAAA,IACrB;AACA,QAAI,CAAC,UAAU,OAAO;AACpB,gBAAU,QAAQ;AAAA,IACpB;AACA,WAAO;AAAA,EACT;AAEA,QAAM,eAAe,MAClB,eAAe,YAAY,SAAS,YAAY,QAAS,UAAU;AAGtE,QAAM,gBAAgB,MAAM;AAC1B,UAAM,aAAa,CAAC,WAAW;AAE/B,QAAI,CAAC,YAAY;AACf,iBAAW,KAAK,0BAA0B;AAAA,IAC5C;AAEA,QAAI,CAAC,aAAa,GAAG;AACnB,iBAAW,KAAK,oBAAoB;AAAA,IACtC;AAEA,WAAO,WAAW,KAAK,GAAG;AAAA,EAC5B;AAEA,SACE;AAAA,IAAC;AAAA,MAAI,WAAU;AAAA,IAEX,CAAC,aACG,uDAAC,iBAAM,MAAC,IACR;AAAA,IAEN;AAAA,MAAC;AAAA;AAAA,QACC,WAAW,cAAc;AAAA,QACzB,OAAO,SAAS;AAAA,QAChB,KAAK;AAAA;AAAA,IACP;AAAA;AAAA,IAGE,aAAa,IACT,OACA,kBACE,gBAAgB,IAEhB,uDAAC,kBAAO,IAAC,OAAM,UAAO,oBAEtB;AAAA,EAGV;AAEJ;AAEA,MAAM,YAAY;AAAA,EAChB,iBAAiB,wCAAoB,CAAC,KAAK;AAAA,EAC3C,YAAY,oCAAc;AAAJ,EACtB,SAAS,oCAAc;AAAJ,EACnB,WAAW,uCAAmB,CAAC;AAAA,IAC7B,sCAAgB;AAAN,IACV,sCAAgB;AAAN,IACV,wCAAoB,CAAC,KAAK;AAAA,EAC5B,CAAC;AAAA,EACD,iBAAiB,oCAAc;AAAJ,EAC3B,WAAW,sCAAgB;AAAN,EACrB,SAAS,sCAAgB;AAAN,EACnB,YAAY,wCAAoB,CAAC,MAAM;AAAA,EACvC,QAAQ,wCAAoB,CAAC,MAAM;AAAA,EACnC,UAAU,oCAAc;AAAJ,EACpB,OAAO,wCAAoB,CAAC,MAAM;AAAA,EAClC,MAAM,sCAAgB;AAAN,EAChB,OAAO,sCAAgB;AAAN,EACjB,QAAQ,wCAAoB,CAAC,KAAK;AAAA,EAClC,cAAc,wCAAoB,CAAC,MAAM;AAC3C;AAEA,uDAAe,uCAAI,CAAC,KAAK,CAAC,EAAC;;;;;AC9bT;AACI;AAEF;AACO;AAE3B,MAAM,eAAe,CAAC,UAAU;AAC9B,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI;AACJ,QAAM,OAAO,OAAO,OAAO;AAAA,IACzB,OAAO;AAAA,IACP,OAAO;AAAA,EACT,GAAG,OAAO;AACV,MAAI;AAEJ,QAAM,cAAc,CAAC,cAAc;AACjC,YAAQ,SAAS;AACjB,iBAAa,KAAK;AAAA,EACpB;AAEA,kBAAU,CAAC,MAAM,YAAY,KAAK,GAAG,KAAK,KAAK;AAE/C,SACE;AAAA,IAAC,kBAAO;AAAP;AAAA,MACC,WAAU;AAAA,MACV,OAAO,KAAK;AAAA,MACZ,SAAS,MAAM,YAAY,KAAK;AAAA;AAAA,IAE/B;AAAA,EACH;AAEJ;AAEA,aAAa,YAAY;AAAA,EACvB,UAAU,uCAAmB,CAAC;AAAA,IAC5B,uCAAiB;AAAP,IACV,oCAAc;AAAJ,IACV,sCAAgB;AAAN,EACZ,CAAC;AAAA,EACD,SAAS,wCAAoB,CAAC,MAAM;AAAA,EACpC,SAAS,oCAAc;AAAJ,EACnB,OAAO,sCAAgB;AACzB;AAEA,sDAAe,YAAY,EAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC9CrB;AACe;AAEG;AAEzB,MAAM,iBAAiB,CAAC,UAAU;AAChC,QAAM,CAAC,UAAU,WAAW,IAAI,2CAAQ,CAAC,CAAC,CAAC;AAC3C,QAAM;AAAA,IACJ;AAAA,EACF,IAAI;AAEJ,QAAM,sBAAsB,CAAC,SAAS,YAAY;AAChD,UAAM,QAAQ,KAAK,MAAM,KAAK,OAAO,IAAI,GAAO;AAEhD,gBAAY,CAAC,iBAAkB,2DAC1B,eAD0B;AAAA,MAE7B,CAAC,KAAK,GAAG;AAAA,QACP;AAAA,QACA;AAAA,MACF;AAAA,IACF,EAAE;AAAA,EACJ;AAEA,8CAAS,CAAC,MAAM;AACd,WAAO,mBAAmB;AAAA,EAC5B,GAAG,CAAC,QAAQ,CAAC;AAEb,QAAM,kBAAkB,CAAC,UAAU;AACjC,UAAM,eAAe,gCAAI;AACzB,WAAO,aAAa,KAAK;AACzB,gBAAY,CAAC,iBAAiB;AAC5B,YAAyD,mBAAhD,EAjCf,CAiCe,QAAQ,mBAjCvB,IAiC+D,IAAjB,sCAAiB,IAAjB,CAA/B;AACT,aAAO;AAAA,IACT,CAAC;AAAA,EACH;AAEA,SACE,uDAAC,SAAI,WAAU,0BAEX,OAAO,KAAK,QAAQ,EAAE,IAAI,CAAC,UACzB,SAAS,KAAK,IAEV;AAAA,IAAC,eAAY;AAAZ;AAAA,MACC,SAAS,SAAS,KAAK,EAAE;AAAA,MAEzB,SAAS,gBAAgB,KAAK,MAAM,KAAK;AAAA,MACzC,OAAO;AAAA,MAEP,KAAK;AAAA;AAAA,IAEJ,SAAS,KAAK,EAAE;AAAA,EACnB,IAEA,IACL,CAEL;AAEJ;AAEA,eAAe,YAAY;AAAA,EACzB,QAAQ,oCAAc;AACxB;AAEA,wDAAe,cAAc,EAAC;;;;;;;;;;;;;;;;;;;;;;;;;;AClEZ;AACS;AACA;AAS3B,MAAM,aAAa;AAAA,EACjB,cAAc;AAQd,sCAAa,CAAC,OAAO;AACnB,WAAK,qBAAqB;AAAA,IAC5B;AATE,UAAM,KAAK,SAAS,cAAc,KAAK;AACvC,OAAG,YAAY;AACf,aAAS,KAAK,YAAY,EAAE;AAC5B,UAAM,OAAO,4BAAU,CAAC,EAAE;AAC1B,SAAK,OAAO,uDAAC,iBAAc,IAAC,QAAQ,KAAK,YAAY,CAAE;AAAA,EACzD;AAAA,EAMA,OAAO,SAAS,SAAS;AACvB,QAAI,KAAK,oBAAoB;AAC3B,WAAK,mBAAmB,SAAS,OAAO;AAAA,IAC1C;AAAA,EACF;AAAA,EAEA,OAAO,SAAS,SAAS;AACvB,SAAK,OAAO,SAAS,yCAAK,UAAL,EAAc,OAAO,SAAS,EAAC;AAAA,EACtD;AAAA,EAEA,QAAQ,SAAS,SAAS;AACxB,SAAK,OAAO,SAAS,yCAAK,UAAL,EAAc,OAAO,UAAU,EAAC;AAAA,EACvD;AAAA,EAEA,QAAQ,SAAS,SAAS;AACxB,SAAK,OAAO,SAAS,yCAAK,UAAL,EAAc,OAAO,UAAU,EAAC;AAAA,EACvD;AAAA,EAEA,KAAK,SAAS,SAAS;AACrB,SAAK,OAAO,SAAS,yCAAK,UAAL,EAAc,OAAO,OAAO,EAAC;AAAA,EACpD;AACF;AAEA,MAAM,QAAQ,IAAI,aAAa;AAE/B,4CAAe,KAAK,EAAC;;;;;;;;;;;;;;;;;;;ACjDmC;AAClC;AAEJ;AAOlB,MAAM,kBAAkB,CAAC,UAAU;AACjC,QAAM;AAAA,IACJ;AAAA,IAAS;AAAA,IAAM;AAAA,IAAU;AAAA,EAC3B,IAAI;AACJ,QAAM,SAAS,4CAAS,CAAC;AACzB,QAAM,cAAc,8CAAW,CAAC,MAAM;AACpC,QAAI,QAAQ;AACV,aAAO;AAAA,IACT;AAEA,QAAI,CAAC,OAAO,UAAU,WAAW;AAC/B,aAAO,QAAQ,OAAO;AACtB,eAAS,YAAY,MAAM;AAC3B,WAAK,CAAC,OAAO,UAAU,EAAE,OAAO,UAAU,CAAC;AAC3C;AAAA,IACF;AACA,WAAO,UAAU,UAAU,UAAU,IAAI;AACzC,SAAK,CAAC,OAAO,UAAU,EAAE,OAAO,UAAU,CAAC;AAAA,EAC7C,GAAG,CAAC,QAAQ,MAAM,CAAC;AAEnB,SACE,uDAAC,uCAAQ,QACP,uDAAC,MAAM,SAAN,+BAAc,SAAS,aAAa,SAAS,eAAiB,QAC5D,YAAY,OACf,GACC,CAAC,OAAO,UAAU,YACjB,uDAAC,cAAS,KAAK,QAAQ,WAAU,yBAAwB,MAAK,QAAO,OAAO,QACzE,IACH,IACE,IACN;AAEJ;AAEA,gBAAgB,YAAY;AAAA;AAAA,EAE1B,QAAQ,oCAAc;AAAJ;AAAA,EAElB,MAAM,sCAAgB,CAAC;AAAA;AAAA,EAEvB,SAAS,sCAAgB;AAAN;AAAA,EAEnB,UAAU,uCAAmB,CAAC;AAAA,IAC5B,uCAAiB;AAAP,IACV,sCAAgB;AAAN,IACV,sCAAgB;AAAN,IACV,oCAAc;AAAJ,EACZ,CAAC;AACH;AAEA,iEAAe,eAAe,EAAC;;;;;;AC5Db;AACI;AAEtB,SAAS,YAAY,EAAE,SAAS,GAAG;AACjC,SACE,uDAAC,SAAI,WAAU,uBACX,QACJ;AAEJ;AAEA,YAAY,YAAY;AAAA,EACtB,UAAU,uCAAmB,CAAC;AAAA,IAC5B,uCAAiB;AAAP,IACV,oCAAc;AAAJ,IACV,sCAAgB;AAAN,EACZ,CAAC;AACH;AAEA,qDAAe,WAAW,EAAC;;;ACnBT;AACI;AAEtB,SAAS,UAAU,EAAE,SAAS,GAAG;AAC/B,SACE,uDAAC,SAAI,WAAU,qBACX,QACJ;AAEJ;AAEA,UAAU,YAAY;AAAA,EACpB,UAAU,uCAAmB,CAAC;AAAA,IAC5B,uCAAiB;AAAP,IACV,oCAAc;AAAJ,IACV,sCAAgB;AAAN,EACZ,CAAC;AACH;AAEA,mDAAe,SAAS,EAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACnBP;AACG;AACC;AACQ;AAEb;AACO;AACF;AAOtB,SAAS,MAAM,IAUZ;AAVY,eACb;AAAA;AAAA,IACA,QAAQ;AAAA,IACR,uBAAuB;AAAA,IACvB,SAAS;AAAA,IACT,UAAU,MAAM;AAAA,IAAC;AAAA,IACjB,OAAO;AAAA,IACP,YAAY;AAAA,IACZ,eAAe;AAAA,EAtBjB,IAce,IASV,0BATU,IASV;AAAA,IARH;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAGA,QAAM,eAAe;AAAA,IACnB;AAAA,IACA,oBAAoB,KAAK;AAAA,IACzB,UAAU;AAAA,EACZ,EAAE,OAAO,UAAU,MAAM,GAAG,CAAC,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AAEvD,QAAM,kBAAkB;AAAA,IACtB;AAAA,IACA,UAAU;AAAA,EACZ,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AAE1B,QAAM,YAAY;AAAA,IAChB,SAAS;AAAA,IACT,SAAS;AAAA,IACT,QAAQ;AAAA,EACV,EAAE,KAAK;AAEP,SACE,kGAEI,yCAAqB;AAAZ,IACP;AAAA,MAAC,6DAAa;AAAb;AAAA,QACC,IAAI;AAAA,QACJ,SAAS;AAAA,QACT,YAAW;AAAA;AAAA,MAEX,uDAAC,4BAAI,WAAW,gBAAkB,YAChC,uDAAC,SAAI,WAAW,gCAAgC,IAAI,MAClD,uDAAC,SAAI,WAAU,wBACZ,UAAU,UACT,uDAAC,SAAI,WAAU,6BACb,uDAAC,eAAI,IAAC,QAAO,SAAQ,MAAM,WAAW,CACxC,GAEA,QACJ,CACF,CACF;AAAA,IACF;AAAA,IACA,SAAS,cAAc,MAAM;AAAA,EAC/B,GAED,gBAAgB,yCAAqB;AAAZ,IACxB;AAAA,MAAC,6DAAa;AAAb;AAAA,QACC,IAAI;AAAA,QACJ,SAAS;AAAA,QACT,YAAW;AAAA;AAAA,MAEX;AAAA,QAAC;AAAA;AAAA,UACC,WAAW;AAAA,UACX,SAAS,MAAM,CAAC,wBAAwB,QAAQ;AAAA,UAChD,WAAW,MAAM;AAAA,UAAC;AAAA,UAClB,MAAK;AAAA,UACL,cAAW;AAAA;AAAA,MACb;AAAA,IACF;AAAA,IACA,SAAS,cAAc,MAAM;AAAA,EAC/B,CACF;AAEJ;AAEA,MAAM,OAAO,YAAS;AACtB,MAAM,SAAS,cAAW;AAE1B,MAAM,SAAS,CAAC,EAAE,SAAS,MAAM;AAC/B,UAAQ,KAAK,mCAAmC,qBAAqB,EAAE;AACvE,SACE,uDAAC,SAAI,WAAU,uBACX,QACJ;AAEJ;AAEA,MAAM,QAAQ,CAAC,EAAE,SAAS,MAAM;AAC9B,UAAQ,KAAK,kCAAkC,qBAAqB,EAAE;AACtE,SACE,uDAAC,QAAG,WAAU,sBACV,QACJ;AAEJ;AAEA,MAAM,YAAY;AAAA,EAChB,UAAU,uCAAmB,CAAC;AAAA,IAC5B,uCAAiB;AAAP,IACV,oCAAc;AAAJ,IACV,sCAAgB;AAAN,EACZ,CAAC;AAAA,EACD,WAAW,sCAAgB;AAAN;AAAA,EAErB,OAAO,sCAAgB;AAAN;AAAA,EAEjB,sBAAsB,oCAAc;AAAJ;AAAA,EAEhC,QAAQ,oCAAc;AAAJ;AAAA,EAElB,SAAS,oCAAc;AAAJ;AAAA,EAEnB,MAAM,sCAAgB;AAAN,EAChB,cAAc,oCAAc;AAC9B;AAEA,uDAAe,KAAK,EAAC;;;AChIW;AACV;AAEH;AACD;AAKlB,SAAS,QAAQ,OAAO;AACtB,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA,iBAAiB;AAAA,IACjB,gBAAgB;AAAA,EAClB,IAAI;AACJ,QAAM,CAAC,MAAM,OAAO,IAAI,2CAAQ,CAAC,KAAK;AACtC,QAAM,CAAC,UAAU,WAAW,IAAI,2CAAQ,CAAC,IAAI;AAC7C,QAAM,CAAC,gBAAgB,iBAAiB,IAAI,2CAAQ,CAAC,IAAI;AAEzD,QAAM,OAAO,CAAC,cAAc,oBAAoB,mBAAmB,IAAI,SAAS;AAC9E,QAAI,gBAAgB;AAClB,qBAAe,GAAG,IAAI;AAAA,IACxB;AACA,YAAQ,IAAI;AACZ,gBAAY,MAAM,MAAM,aAAa,GAAG,IAAI,CAAC;AAC7C,QAAI,oBAAoB;AACtB,wBAAkB,MAAM,MAAM,mBAAmB,GAAG,IAAI,CAAC;AAAA,IAC3D;AAAA,EACF;AAEA,QAAM,OAAO,MAAM;AACjB,YAAQ,KAAK;AACb,gBAAY,IAAI;AAChB,sBAAkB,IAAI;AAAA,EACxB;AAEA,QAAM,SAAS,MAAM;AACnB,QAAI,gBAAgB;AAClB,qBAAe;AAAA,IACjB;AACA,SAAK;AAAA,EACP;AAEA,QAAM,UAAU,MAAM;AACpB,aAAS;AACT,SAAK;AAAA,EACP;AAEA,SACE,kGACG,SAAS,IAAI,GACd;AAAA,IAAC,gBAAK;AAAL;AAAA,MACC,QAAQ;AAAA,MACR,SAAS;AAAA;AAAA,IAET,uDAAC,gBAAK,CAAC,MAAN,MACC,uDAAC,YAAI,KAAM,GACV,WACH;AAAA,IACA,uDAAC,gBAAK,CAAC,QAAN,MACC;AAAA,MAAC,iBAAM;AAAN;AAAA,QACG,SAAS;AAAA,QACT,OAAM;AAAA;AAAA,MAEP;AAAA,IACH,GACA;AAAA,MAAC,iBAAM;AAAN;AAAA,QACC,SAAS;AAAA,QACT,OAAM;AAAA;AAAA,MAEL;AAAA,IACH,CACF;AAAA,EACF,CACF;AAEJ;AAEA,QAAQ,YAAY;AAAA;AAAA,EAElB,gBAAgB,sCAAgB;AAAN;AAAA,EAE1B,eAAe,sCAAgB;AAAN;AAAA,EAEzB,OAAO,sCAAgB;AAAN;AAAA,EAEjB,aAAa,sCAAgB;AAAN,EACvB,UAAU,uCAAmB,CAAC;AAAA,IAC5B,uCAAiB;AAAP,IACV,sCAAgB;AAAN,IACV,sCAAgB;AAAN,IACV,oCAAc;AAAJ,IACV,oCAAc;AAAJ,EACZ,CAAC;AACH;AAEA,yDAAe,OAAO,EAAC;;;AClG+B;AAChC;AAED;AAMrB,SAAS,aAAa,EAAE,UAAU,WAAW,WAAW,GAAG;AACzD,QAAM,kBAAkB,yCAAM,CAAC,IAAI;AAEnC,QAAM,eAAe,8CAAW,CAAC,MAAM;AACrC,UAAM,UAAU,gBAAgB;AAEhC,QAAI,CAAC,SAAS;AACZ;AAAA,IACF;AAEA,QAAI,OAAO,SAAS;AAClB,cAAQ,UAAU,IAAI,6BAA6B;AAAA,IACrD,OAAO;AACL,cAAQ,UAAU,OAAO,6BAA6B;AAAA,IACxD;AAAA,EACF,GAAG,CAAC,gBAAgB,OAAO,CAAC;AAE5B,QAAM,wBAAwB,8CAAW,CAAC,QAAQ,CAAC,cAAc,GAAG,GAAG,CAAC,YAAY,CAAC;AAErF,8CAAS,CAAC,MAAM;AACd,QAAI,YAAY;AACd,aAAO,iBAAiB,UAAU,qBAAqB;AAAA,IACzD;AAEA,WAAO,MAAM;AACX,aAAO,oBAAoB,UAAU,qBAAqB;AAAA,IAC5D;AAAA,EACF,GAAG,CAAC,uBAAuB,UAAU,CAAC;AAEtC,SACE,uDAAC,SAAI,WAAW,qBAAqB,SAAS,IAAI,KAAK,mBACnD,QACJ;AAEJ;AAEA,aAAa,YAAY;AAAA,EACvB,UAAU,uCAAmB,CAAC;AAAA,IAC5B,uCAAiB;AAAP,IACV,oCAAc;AAAJ,IACV,sCAAgB;AAAN,EACZ,CAAC;AAAA;AAAA,EAED,WAAW,sCAAgB;AAAN;AAAA;AAAA;AAAA,EAIrB,YAAY,oCAAc;AAC5B;AAEA,aAAa,eAAe;AAAA,EAC1B,WAAW;AACb;AAEA,8DAAe,YAAY,EAAC;;;AC7DrB;AACmB;AAEL;AACyB;AAC3B;AAEnB,SAAS,iBAAiB;AAAA,EACxB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAG;AACD,QAAM,CAAC,YAAY,aAAa,IAAI,2CAAQ,CAAC,KAAK;AAClD,QAAM,eAAe,yCAAM,CAAC,IAAI;AAChC,QAAM,eAAe,sBAAgB,CAAC,QAAQ;AAE9C,8CAAS,CAAC,MAAM;AACd,QAAI,eAAe,OAAO,aAAa,YAAY;AACjD,oBAAc,KAAK;AACnB,eAAS,UAAU;AAAA,IACrB;AAAA,EACF,GAAG,CAAC,WAAW,CAAC;AAEhB,QAAM,aAAa,8CAAW,CAAC,MAAM;AACnC,QAAI,CAAC,aAAa;AAAS,aAAO;AAClC,UAAM,EAAE,cAAc,UAAU,IAAI,aAAa;AAEjD,WACE,YAEG,eAAe,KAAK,MAAM,SAAS,MAAM,aAAa,UACnD,gBAAgB,aAAa;AAAA,EAGvC,GAAG,CAAC,cAAc,aAAa,MAAM,CAAC;AAEtC,QAAM,eAAe,8CAAW,CAAC,MAAM;AACrC,QAAI,WAAW,OAAO,aAAa,YAAY;AAC7C,eAAS,aAAa,CAAC;AACvB,oBAAc,IAAI;AAAA,IACpB,OAAO;AACL,oBAAc,KAAK;AAAA,IACrB;AAAA,EACF,GAAG,CAAC,SAAS,UAAU,CAAC;AAExB,QAAM,iBAAiB,iBAAW,CAAC,UAAU;AAC7C,QAAM,gBAAgB,8CAAW,CAAC,QAAQ,CAAC,MAAM;AAC/C,QAAI,WAAW,KAAK,kBAAkB,YAAY;AAChD,mBAAa;AAAA,IACf;AAAA,EACF,GAAG,GAAG,GAAG,CAAC,cAAc,UAAU,CAAC;AAEnC,8CAAS,CAAC,MAAM;AAzDlB;AA0DI,uBAAa,YAAb,mBAAsB,iBAAiB,UAAU;AACjD,WAAO,MAAG;AA3Dd,UAAAA;AA2DiB,cAAAA,MAAA,aAAa,YAAb,gBAAAA,IAAsB,oBAAoB,UAAU;AAAA;AAAA,EACnE,GAAG,CAAC,cAAc,aAAa,CAAC;AAGhC,8CAAS,CAAC,MAAM;AACd,QAAI,iBAAiB,KAAK,eAAe,GAAG;AAC1C,mBAAa,QAAQ,YAAY;AAAA,IACnC;AAAA,EACF,GAAG,CAAC,cAAc,UAAU,CAAC;AAE7B,QAAM,mBAAmB,iBAAW,CAAC,YAAY;AACjD,8CAAS,CAAC,MAAM;AACd,QACE,gBAAgB,oBACb,aAAa,WAAW,iBAAiB,UACzC,eAAe,MAClB;AACA,oBAAc,KAAK;AAAA,IACrB;AAAA,EACF,GAAG,CAAC,YAAY,aAAa,MAAM,CAAC;AAEpC,8CAAS,CAAC,MAAM;AACd,QACE,YAAY,aAAa,SAAS,aAAa,QAAQ,gBACpD,aAAa,UACb,SACH;AACA,mBAAa;AAAA,IACf;AAAA,EACF,GAAG,CAAC,cAAc,cAAc,UAAU,OAAO,CAAC;AAElD,SACE,uDAAC,SAAI,WAAU,2BACb;AAAA,IAAC;AAAA;AAAA,MACC,WAAU;AAAA,MACV,KAAK;AAAA;AAAA,IAEH;AAAA,EACJ,GACC,cACC,uDAAC,iBAAM,IAAC,UAAS,YAAW,CAEhC;AAEJ;AAEA,iBAAiB,YAAY;AAAA,EAC3B,UAAU,6CAAS,CAAC,UAAU;AAAA,IAC5B,6CAAS,CAAC,QAAQ,6CAAS,CAAC,IAAI;AAAA,IAChC,6CAAS,CAAC;AAAA,IACV,6CAAS,CAAC;AAAA,IACV,6CAAS,CAAC;AAAA,EACZ,CAAC;AAAA,EACD,SAAS,6CAAS,CAAC;AAAA,EACnB,aAAa,6CAAS,CAAC;AAAA,EACvB,YAAY,6CAAS,CAAC;AAAA,EACtB,UAAU,6CAAS,CAAC;AAAA,EACpB,UAAU,6CAAS,CAAC,WAAW,MAAM;AACvC;AAEA,iBAAiB,eAAe;AAAA,EAC9B,SAAS;AACX;AAEA,kEAAe,gBAAgB,EAAC;;;;;;;;;;;;;;;;;;;ACzHzB;AACsB;AACP;AACO;AAM7B,SAAS,kBAAkB;AAAA,EACzB;AAAA,EACA,OAAO;AAAA,EACP,eAAe;AAAA,EACf,cAAc;AAAA,EACd;AAAA,EACA,SAAS;AAAA,EACT;AAAA,EACA;AAAA,EACA;AACF,GAAG,KAAK;AACN,QAAM,WAAW,yCAAM,CAAC,IAAI;AAC5B,QAAM,uBAAuB,OAAO;AACpC,QAAM,oBAAoB,yCAAM,CAAC,IAAI;AAErC,WAAS,mBAAmB;AAC1B,UAAM,SAAS,QAAQ;AACvB,UAAM,YAAY,qBAAqB;AACvC,QAAI,CAAC;AAAW,cAAO,gDAAqB,gBAAgB,cAAa,WAAW;AAEpF,UAAM,EAAE,MAAM,IAAI,IAAI,OAAO,sBAAsB;AACnD,UAAM,WAAW;AACjB,UAAM,cAAc,OAAO,cAAc,MAAM,OAAO;AACtD,UAAM,YAAY;AAClB,UAAM,aAAa,OAAO,aAAa,OAAO,OAAO;AACrD,UAAM,cAAc,WAAW,UAAU;AACzC,UAAM,iBAAiB,cAAc,UAAU;AAC/C,UAAM,eAAe,YAAY,UAAU;AAC3C,UAAM,gBAAgB,aAAa,UAAU;AAC7C,UAAM,qCAAqC,OAAO,OAAO,cAAc,IAAI,UAAU,cAAc,IAAI;AACvG,UAAM,uCAAuC,MAAM,OAAO,eAAe,IAAI,UAAU,eAAe,IAAI;AAE1G,QACE,gBAAgB,cAEd,gBAAgB,WACZ,eAAe,mBAChB,oCAEL;AACA,UAAI,sBAAsB,SAAS;AAAa,eAAO;AACvD,UAAI,sBAAsB,YAAY;AAAgB,eAAO;AAC7D,aAAO,kBAAkB,cAAc,WAAW,WAAW;AAAA,IAC/D;AAEA,QAAI,gBAAgB,cAAc;AAChC,UAAI,sBAAsB,UAAU;AAAc,eAAO;AACzD,UAAI,sBAAsB,WAAW;AAAc,eAAO;AAC1D,aAAO,iBAAiB,aAAa,YAAY,UAAU;AAAA,IAC7D;AAEA,QAAI,eAAe;AAAoC,aAAO;AAC9D,QAAI,kBAAkB;AAAoC,aAAO;AACjE,QAAI,iBAAiB;AAAsC,aAAO;AAClE,QAAI,gBAAgB;AAAsC,aAAO;AACjE,WAAO,gDAAqB;AAAA,EAC9B;AAEA,WAAS,iBAAiB;AACxB,UAAM,UAAU,iBAAiB,SAAS,eAAe,iBAAiB;AAC1E,UAAM,SAAS,QAAQ;AACvB,UAAM,YAAY,qBAAqB;AAEvC,QAAI,CAAC,UAAU,CAAC;AAAW;AAE3B,UAAM,iBAAiB,OAAO,sBAAsB;AAEpD,QAAI,YAAY,OAAO;AACrB,YAAM,SAAS,eAAe,MAAM,UAAU,eAAe;AAC7D,gBAAU,MAAM,MAAM,GAAG,MAAM;AAC/B,gBAAU,MAAM,OAAQ,SAAS,SAC7B,GAAG,eAAe,OAAO,OAAO,cAAc,IAAI,UAAU,cAAc,CAAC,OAC3E,GAAG,eAAe,IAAI;AAE1B,UAAI,SAAS,gBAAgB;AAC3B,kBAAU,MAAM,QAAQ,GAAG,OAAO,WAAW;AAAA,MAC/C,WAAW,OAAO,SAAS,YAAY;AACrC,kBAAU,MAAM,QAAQ,GAAG,KAAK,OAAO,WAAW,CAAC;AAAA,MACrD;AACA,gBAAU,MAAM,YAAY,GAAG,eAAe,MAAM,MAAM;AAAA,IAC5D;AAEA,QAAI,YAAY,UAAU;AACxB,gBAAU,MAAM,MAAM,GAAG,eAAe,SAAS,MAAM;AACvD,gBAAU,MAAM,OAAO,SAAS,SAC5B,GAAG,eAAe,OAAO,OAAO,cAAc,IAAI,UAAU,cAAc,CAAC,OAC3E,GAAG,eAAe,IAAI;AAC1B,UAAI,SAAS,gBAAgB;AAC3B,kBAAU,MAAM,QAAQ,GAAG,OAAO,WAAW;AAAA,MAC/C,WAAW,OAAO,SAAS,YAAY;AACrC,kBAAU,MAAM,QAAQ,GAAG,KAAK,OAAO,WAAW,CAAC;AAAA,MACrD;AACA,gBAAU,MAAM,YAAY,GAAG,OAAO,cAAc,eAAe,SAAS,MAAM;AAAA,IACpF;AAEA,QAAI,YAAY,QAAQ;AACtB,YAAM,SAAS,eAAe,MAAM,OAAO,eAAe,IAAI,UAAU,eAAe;AACvF,gBAAU,MAAM,MAAM,SAAS,SAC3B,GAAG,MAAM,OACT,GAAG,eAAe,GAAG;AACzB,gBAAU,MAAM,OAAO,GAAG,eAAe,OAAO,UAAU,cAAc,MAAM;AAC9E,UAAI,SAAS,gBAAgB;AAC3B,kBAAU,MAAM,SAAS,GAAG,OAAO,YAAY;AAAA,MACjD,WAAW,OAAO,SAAS,YAAY;AACrC,kBAAU,MAAM,SAAS,GAAG,KAAK,OAAO,YAAY,CAAC;AAAA,MACvD;AACA,gBAAU,MAAM,WAAW,GAAG,eAAe,OAAO,MAAM;AAAA,IAC5D;AAEA,QAAI,YAAY,SAAS;AACvB,YAAM,SAAS,eAAe,MAAM,OAAO,eAAe,IAAI,UAAU,eAAe;AACvF,gBAAU,MAAM,MAAM,SAAS,SAC3B,GAAG,MAAM,OACT,GAAG,eAAe,GAAG;AACzB,gBAAU,MAAM,OAAO,GAAG,eAAe,OAAO,OAAO,cAAc,MAAM;AAC3E,UAAI,SAAS,gBAAgB;AAC3B,kBAAU,MAAM,SAAS,GAAG,OAAO,YAAY;AAAA,MACjD,WAAW,OAAO,SAAS,YAAY;AACrC,kBAAU,MAAM,SAAS,GAAG,KAAK,OAAO,YAAY,CAAC;AAAA,MACvD;AACA,gBAAU,MAAM,WAAW,GAAG,OAAO,aAAa,eAAe,OAAO,OAAO,cAAc,MAAM;AAAA,IACrG;AAAA,EACF;AAEA,8CAAS,CAAC,MAAM;AACd,WAAO,sBAAsB,SAAS,yBAAyB;AAC7D,qBAAe;AACf,aAAO,sBAAsB,sBAAsB;AAAA,IACrD,CAAC;AAAA,EACH,GAAG,CAAC,CAAC;AAEL,SAAO,oCAAY;AAAZ,IACL;AAAA,MAAC;AAAA;AAAA,QACC,WAAW,sBAAsB,aAAa,EAAE;AAAA,QAChD,KAAK;AAAA;AAAA,MAEL;AAAA,QAAC,2BAAgB;AAAhB;AAAA,UACC,UAAU;AAAA,WACN;AAAA,QAEJ;AAAA,UAAC;AAAA;AAAA,YACC,WAAU;AAAA,YACV,KAAK;AAAA;AAAA,UAEJ;AAAA,QACH;AAAA,MACF;AAAA,IACF;AAAA,IACA,SAAS,cAAc,MAAM;AAAA,EAC/B;AACF;AAEA,kBAAkB,YAAY;AAAA;AAAA,EAE5B,SAAS,wCAAoB,CAAC,MAAM;AAAA,EACpC,WAAW,sCAAgB;AAAN;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQrB,MAAM,uCAAmB,CAAC;AAAA,IACxB,mCAAe,CAAC,CAAC,QAAQ,cAAc,CAAC;AAAA,IACxC,oCAAc;AAAJ,EACZ,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA,EAKD,QAAQ,sCAAgB;AAAN;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOlB,cAAc,mCAAe,CAAC,CAAC,QAAQ,OAAO,UAAU,QAAQ,OAAO,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA,EAKxE,aAAa,mCAAe,CAAC,CAAC,QAAQ,YAAY,YAAY,CAAC;AAAA;AAAA;AAAA;AAAA,EAI/D,mBAAmB,mCAAe,CAAC,CAAC,OAAO,UAAU,QAAQ,OAAO,CAAC;AAAA;AAAA;AAAA;AAAA,EAIrE,wBAAwB,wCAAoB,CAAC,MAAM;AACrD;AAEA,mEAAe,6CAAU,CAAC,iBAAiB,CAAC,EAAC;;;AC7M3B;AACI;AAEF;AAEpB,SAAS,SAAS,EAAE,SAAS,GAAG;AAC9B,SACE,uDAAC,SAAI,WAAU,mBACb,uDAAC,kBAAO,IAAC,OAAM,UACX,QACJ,CACF;AAEJ;AAEA,SAAS,YAAY;AAAA,EACnB,UAAU,uCAAmB,CAAC;AAAA,IAC5B,uCAAiB;AAAP,IACV,oCAAc;AAAJ,IACV,sCAAgB;AAAN,EACZ,CAAC;AACH;AAEA,0DAAe,QAAQ,EAAC;;;ACvBN;AACI;AAEtB,MAAM,WAAW,CAAC,UAAU;AAC1B,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,EACF,IAAI;AAEJ,SACE,uDAAC,QAAG,aACD,QACH;AAEJ;AAEA,SAAS,YAAY;AAAA,EACnB,UAAU,uCAAmB,CAAC;AAAA,IAC5B,qCAAiB,CAAC,oCAAc;AAAA,IAChC,oCAAc;AAAJ,IACV,uCAAiB;AAAP,IACV,sCAAgB;AAAN,EACZ,CAAC;AAAA,EACD,WAAW,sCAAgB;AAC7B;AAEA,SAAS,eAAe;AAAA,EACtB,WAAW;AACb;AAEA,kDAAe,QAAQ,EAAC;;;AC9BN;AACI;AACC;AACF;AAErB,MAAM,OAAO,CAAC,UAAU;AACtB,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI;AAEJ,QAAM,gBAAgB,MAAM;AAC1B,QAAI,aAAa,CAAC,UAAU;AAE5B,QAAI,OAAO;AACT,iBAAW,KAAK,aAAa,KAAK,EAAE;AAAA,IACtC;AAEA,QAAI,WAAW;AACb,mBAAa,WAAW,OAAO,UAAU,MAAM,GAAG,CAAC;AAAA,IACrD;AAEA,WAAO,WAAW,KAAK,GAAG;AAAA,EAC5B;AAEA,QAAM,eAAe,MAAM;AACzB,UAAM,YAAY,6CAAM,CAAC,KAAK,EAAE,KAAK;AACrC,QAAI,YAAY;AACd,gBAAU,YAAY,eAAe,UAAU;AAAA,IACjD;AAEA,WAAO;AAAA,EACT;AAEA,SACE,uDAAC,SAAI,WAAW,qBAAqB,aAAa,gCAAgC,EAAE,MAEhF,UAAU,SAEN;AAAA,IAAC;AAAA;AAAA,MAAM,OAAO;AAAA,QACZ,WAAW,cAAc;AAAA,MAC3B;AAAA;AAAA,IAEI;AAAA,EACJ,IAEA,MAEN,uDAAC,QAAG,WAAW,cAAc,GAAG,OAAO,aAAa,KACjD,QACH,CACF;AAEJ;AAEA,KAAK,YAAY;AAAA,EACf,UAAU,uCAAmB,CAAC;AAAA,IAC5B,qCAAiB,CAAC,oCAAc;AAAA,IAChC,oCAAc;AAAJ,IACV,uCAAiB;AAAP,IACV,sCAAgB;AAAN,EACZ,CAAC;AAAA,EACD,WAAW,sCAAgB;AAAN,EACrB,OAAO,sCAAgB;AAAN,EACjB,YAAY,sCAAgB;AAAN,EACtB,OAAO,sCAAgB;AAAN,EACjB,OAAO,wCAAoB,CAAC,MAAM;AACpC;AAEA,KAAK,eAAe;AAAA,EAClB,OAAO;AAAA,EACP,OAAO,CAAC;AACV;AAGA,KAAK,OAAO,WAAQ;AAGpB,sDAAe,IAAI,EAAC;;;AClFF;AACI;AAEtB,SAAS,OAAO;AAAA,EACd,QAAQ;AAAA,EACR;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAG;AACD,QAAM,kBAAkB,WAAW,uDAAC,OAAE,WAAU,wBAAuB,QAAU,IAAO;AACxF,SACE,uDAAC,aAAQ,WAAW,eAAe,WAAW,2BAA2B,EAAE,MACzE,uDAAC,SAAI,WAAW,2CAA2C,KAAK,MAC7D,OACC,uDAAC,SAAI,WAAU,sBAAoB,GAAI,GAGvC,QAEI,uDAAC,aACC,uDAAC,YAAK,KAAO,GACX,eACJ,IAEA,iBAEN,uDAAC,SAAI,WAAU,4BACZ,QACC,uDAAC,SAAI,WAAU,uBAAsB,IAAM,GAE5C,SACC,uDAAC,SAAI,WAAU,wBAAuB,KAAO,CAEjD,CACF,GACE,QACJ;AAEJ;AAEA,OAAO,YAAY;AAAA,EACjB,OAAO,sCAAgB;AAAN,EACjB,UAAU,uCAAmB,CAAC;AAAA,IAC5B,qCAAiB,CAAC,oCAAc;AAAA,IAChC,oCAAc;AAAJ,IACV,uCAAiB;AAAP,IACV,sCAAgB;AAAN,EACZ,CAAC;AAAA,EACD,OAAO,sCAAgB;AAAN,EACjB,UAAU,sCAAgB;AAAN,EACpB,KAAK,uCAAmB,CAAC;AAAA,IACvB,uCAAiB;AAAP,IACV,oCAAc;AAAJ,EACZ,CAAC;AAAA,EACD,MAAM,uCAAmB,CAAC;AAAA,IACxB,uCAAiB;AAAP,IACV,oCAAc;AAAJ,EACZ,CAAC;AAAA,EACD,OAAO,uCAAmB,CAAC;AAAA,IACzB,uCAAiB;AAAP,IACV,oCAAc;AAAJ,EACZ,CAAC;AAAA,EACD,UAAU,oCAAc;AAC1B;AAEA,wDAAe,MAAM,EAAC;;;ACrEJ;AACI;AAEtB,SAAS,eAAe,EAAE,SAAS,GAAG;AACpC,SACE,uDAAC,QAAG,WAAU,yBACX,QACH;AAEJ;AAEA,eAAe,YAAY;AAAA,EACzB,UAAU,uCAAmB,CAAC;AAAA,IAC5B,qCAAiB,CAAC,oCAAc;AAAA,IAChC,oCAAc;AAAJ,IACV,uCAAiB;AAAP,IACV,sCAAgB;AAAN,EACZ,CAAC;AACH;AAEA,wDAAe,cAAc,EAAC;;;ACpBZ;AACI;AACK;AAE3B,SAAS,WAAW,EAAE,SAAS,GAAG;AAChC,SACE,uDAAC,QAAG,WAAU,oBACX,QACH;AAEJ;AAEA,WAAW,YAAY;AAAA,EACrB,UAAU,uCAAmB,CAAC;AAAA,IAC5B,qCAAiB,CAAC,oCAAc;AAAA,IAChC,oCAAc;AAAJ,IACV,uCAAiB;AAAP,IACV,sCAAgB;AAAN,EACZ,CAAC;AACH;AAEA,WAAW,OAAO,iBAAc;AAEhC,4DAAe,UAAU,EAAC;;;ACvBI;AAEvB,MAAM,gBAAgB,gDAAa,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACFR;AACb;AAEE;AACM;AAE9B,SAAS,UAAU,IAKhB;AALgB,eACjB;AAAA;AAAA,IACA;AAAA,IACA;AAAA,EATF,IAMmB,IAId,yBAJc,IAId;AAAA,IAHH;AAAA,IACA;AAAA,IACA;AAAA;AAGA,QAAM,gBAAgB,8CAAW;AAAX,IACpB,MAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA,aAAa;AAAA,IACf,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AAAA,IAC1B,CAAC,WAAW,SAAS;AAAA,EACvB;AAEA,SACE,uDAAC,aAAa,CAAC,UAAd,MAEG,CAAC,kBACC,cAAc,cAEV;AAAA,IAAC,sBAAW;AAAX,qDACK,OADL;AAAA,MAEC,WAAW,cAAc;AAAA,MACzB,WAAW,cAAc;AAAA;AAAA,IAEvB;AAAA,EACJ,IAGA;AAAA,IAAC;AAAA,qDACK,OADL;AAAA,MAEC,WAAW,cAAc;AAAA;AAAA,IAEvB;AAAA,EACJ,CAIV;AAEJ;AAEA,UAAU,YAAY;AAAA,EACpB,UAAU,uCAAmB,CAAC;AAAA,IAC5B,uCAAiB;AAAP,IACV,oCAAc;AAAJ,IACV,sCAAgB;AAAN,EACZ,CAAC;AAAA,EACD,WAAW,oCAAc;AAAJ,EACrB,WAAW,sCAAgB;AAC7B;AAEA,mDAAe,SAAS,EAAC;;;AC3DP;AACI;AAEtB,MAAM,cAAc,CAAC,UAAU;AAC7B,QAAM,EAAE,SAAS,IAAI;AACrB,SACE,uDAAC,SAAI,WAAU,uBACX,QACJ;AAEJ;AAEA,YAAY,YAAY;AAAA,EACtB,UAAU,uCAAmB,CAAC;AAAA,IAC5B,uCAAiB;AAAP,IACV,oCAAc;AAAJ,IACV,sCAAgB;AAAN,EACZ,CAAC;AACH;AAEA,qDAAe,WAAW,EAAC;;;;;;;;;ACpBM;AACX;AAEL;AACa;AAEf,MAAM,oBAAoB,wCAAS,CAAC;AAAA,EAUjD,cAAc,OAAO;AACnB,UAAM,EAAE,UAAU,IAAI,KAAK;AAC3B,QAAI,aAAa,CAAC,mBAAmB;AAErC,QAAI,MAAM,aAAa;AACrB,iBAAW,KAAK,aAAa;AAAA,IAC/B;AAEA,QAAI,WAAW;AACb,mBAAa,WAAW,OAAO,UAAU,MAAM,GAAG,CAAC;AAAA,IACrD;AAEA,WAAO,WAAW,KAAK,GAAG;AAAA,EAC5B;AAAA,EAEA,SAAS;AACP,UAAM;AAAA,MACJ;AAAA,IACF,IAAI,KAAK;AAET,WACE,uDAAC,aAAa,CAAC,UAAd,MAEG,CAAC,kBAAkB;AACjB,YAAM,YAAY,cAAc,UAAU,UAAU,OAAO;AAC3D,YAAM,WAAW,cAAc,YAAY,iBAAiB;AAE5D,aACE;AAAA,QAAC;AAAA;AAAA,UACC,WAAW,KAAK,cAAc,aAAa;AAAA,UAC3C,SAAS,cAAc,cAAc,cAAc,WAAW;AAAA;AAAA,QAE5D;AAAA,QAEA,cAAc,cACV,uDAAC,SAAI,WAAW,sBAAsB,cAAc,uBAAuB,MAAI,uDAAC,eAAI,IAAC,MAAM,UAAU,CAAE,IACvG;AAAA,MAER;AAAA,IAEJ,CAEJ;AAAA,EAEJ;AACF;AAtDE,wBADmB,aACZ,aAAY;AAAA,EACjB,UAAU,uCAAmB,CAAC;AAAA,IAC5B,uCAAiB;AAAP,IACV,oCAAc;AAAJ,IACV,sCAAgB;AAAN,EACZ,CAAC,EAAE;AAAA,EACH,WAAW,sCAAgB;AAC7B;;;ACdyC;AACrB;AACA;AACE;AACA;AAGM;AAG9B,MAAM,QAAQ,CAAC,UAAU;AACvB,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,0BAA0B;AAAA,EAC5B,IAAI;AACJ,QAAM,CAAC,gBAAgB,iBAAiB,IAAI,2CAAQ,CAAC,aAAa,KAAK;AAEvE,8CAAS,CAAC,MAAM;AACd,QAAI,cAAc,gBAAgB;AAChC,wBAAkB,SAAS;AAAA,IAC7B;AAAA,EACF,GAAG,CAAC,SAAS,CAAC;AAEd,QAAM,gBAAgB,MAAM;AAC1B,QAAI,aAAa,CAAC,WAAW;AAC7B,UAAM,aAAa,cAAc,SAAS,SAAS;AACnD,UAAM,yBAAyB,6BAA6B,uBAAuB;AAEnF,eAAW,KAAK,UAAU;AAC1B,eAAW,KAAK,sBAAsB;AAEtC,QAAI,WAAW;AACb,mBAAa,WAAW,OAAO,UAAU,MAAM,GAAG,CAAC;AAAA,IACrD;AAEA,QAAI,gBAAgB;AAClB,iBAAW,KAAK,sBAAsB;AAAA,IACxC;AAEA,WAAO,WAAW,KAAK,GAAG;AAAA,EAC5B;AAEA,QAAM,eAAe,MAAM;AACzB,sBAAkB,CAAC,cAAc;AAEjC,QAAI,kBAAkB;AACpB,uBAAiB,CAAC,cAAc;AAAA,IAClC;AAAA,EACF;AAEA,SACE,uDAAC,SAAI,WAAW,cAAc,KAC5B;AAAA,IAAC,aAAa,CAAC;AAAA,IAAd;AAAA,MACC,OAAO;AAAA,QACL;AAAA,QACA,WAAW;AAAA,QACX,UAAU;AAAA,QACV;AAAA,QACA;AAAA,MACF;AAAA;AAAA,IAGG,OAAO,aAAa,aACjB,SAAS;AAAA,MACT,gBAAgB;AAAA,IAClB,CAAC,IACC;AAAA,EAER,CACF;AAEJ;AAEA,MAAM,YAAY;AAAA,EAChB,UAAU,uCAAmB,CAAC;AAAA,IAC5B,oCAAc;AAAJ,IACV,uCAAiB;AAAP,IACV,oCAAc;AAAJ,IACV,sCAAgB;AAAN,EACZ,CAAC;AAAA,EACD,WAAW,sCAAgB;AAAN,EACrB,aAAa,oCAAc;AAAJ,EACvB,yBAAyB,sCAAgB;AAAN,EACnC,WAAW,oCAAc;AAAJ,EACrB,OAAO,sCAAgB;AAAN,EACjB,kBAAkB,oCAAc;AAClC;AAGA,MAAM,OAAO,YAAS;AACtB,MAAM,SAAS,cAAW;AAC1B,MAAM,SAAS,WAAW;AAE1B,uDAAe,KAAK,EAAC;;;AClGH;AACI;AAKtB,MAAM,OAAO,CAAC,UAAU;AACtB,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI;AAEJ,QAAM,gBAAgB,MAAM;AAC1B,QAAI,aAAa,CAAC,YAAY,GAAG,MAAM,MAAM,GAAG,EAAE,IAAI,OAAK,aAAa,CAAC,EAAE,CAAC;AAE5E,QAAI,WAAW;AACb,mBAAa,WAAW,OAAO,SAAS;AAAA,IAC1C;AAEA,WAAO,WAAW,KAAK,GAAG;AAAA,EAC5B;AAEA,SACE,uDAAC,SAAI,WAAW,cAAc,KAC3B,QACH;AAEJ;AAEA,KAAK,YAAY;AAAA,EACf,UAAU,uCAAmB,CAAC;AAAA,IAC5B,qCAAiB,CAAC,oCAAc;AAAA,IAChC,oCAAc;AAAJ,IACV,uCAAiB;AAAP,IACV,sCAAgB;AAAN,EACZ,CAAC;AAAA;AAAA,EAED,WAAW,sCAAgB;AAAN;AAAA,EAErB,OAAO,sCAAgB;AACzB;AAEA,KAAK,eAAe;AAAA,EAClB,OAAO;AACT;AAEA,sDAAe,IAAI,EAAC;;;;;;;;;;;;;;;;;;;;;AC/CpB;AAAuB;AAOvB,MAAM,mBAAmB;AAAA,EAAzB;AACE,+BAAS;AAET;AAAA,+BAAS;AAET;AAAA,gCAAU;AAEV;AAAA,iCAAW;AAEX;AAAA,iDAA2B,CAAC;AAE5B;AAAA,8CAAwB,CAAC;AAEzB;AAAA,4CAAsB,CAAC;AAEvB;AAAA,qCAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMf,GAAG,WAAW,UAAU;AACtB,QAAI,OAAO;AACX,QAAI,cAAc,kBAAkB;AAClC,aAAO,mBAAK;AAAA,IACd,WAAW,cAAc,eAAe;AACtC,aAAO,mBAAK;AAAA,IACd,WAAW,cAAc,aAAa;AACpC,aAAO,mBAAK;AAAA,IACd;AAEA,QAAI,MAAM;AACR,WAAK,YAAY,MAAM,QAAQ;AAAA,IACjC;AAAA,EACF;AAAA,EAEA,IAAI,WAAW,UAAU;AACvB,QAAI,OAAO;AACX,QAAI,cAAc,kBAAkB;AAClC,aAAO,mBAAK;AAAA,IACd,WAAW,cAAc,eAAe;AACtC,aAAO,mBAAK;AAAA,IACd,WAAW,cAAc,aAAa;AACpC,aAAO,mBAAK;AAAA,IACd;AAEA,QAAI,MAAM;AACR,WAAK,eAAe,MAAM,QAAQ;AAAA,IACpC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,QAAQ,SAAS,OAAO,QAAQ;AAC9B,QAAI,mBAAK,WAAU,mBAAK,YAAW,mBAAK,WAAU;AAChD,WAAK,aAAa;AAAA,IACpB;AACA,uBAAK,UAAW;AAChB,uBAAK,QAAS;AACd,uBAAK,SAAU;AACf,uBAAK,QAAS;AACd,SAAK,WAAW;AAAA,EAClB;AAAA;AAAA;AAAA;AAAA,EAKA,aAAa;AACX,SAAK,WAAW,YAAY;AAC5B,uBAAK,SAAQ,iBAAiB,aAAa,KAAK,YAAY,KAAK,IAAI,CAAC;AACtE,aAAS,iBAAiB,aAAa,KAAK,YAAY,KAAK,IAAI,CAAC;AAClE,aAAS,iBAAiB,WAAW,KAAK,UAAU,KAAK,IAAI,CAAC;AAAA,EAChE;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,YAAY;AACV,SAAK,WAAW,WAAW;AAC3B,UAAM,OAAO,mBAAK,QAAO,sBAAsB;AAC/C,WAAO,KAAK;AAAA,EACd;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,YAAY,GAAG;AACb,SAAK,WAAW,aAAa;AAC7B,uBAAK,QAAS;AAAA,MACZ,WAAW;AAAA,MACX,aAAa,mBAAK,QAAO,sBAAsB;AAAA,MAC/C,cAAc;AAAA,IAChB;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,YAAY,GAAG;AACb,SAAK,WAAW,aAAa;AAE7B,QAAI,CAAC,mBAAK,SAAQ;AAChB;AAAA,IACF;AAEA,UAAM,eAAe,KAAK,yBAAyB,CAAC;AACpD,QAAI,CAAC,cAAc;AACjB,WAAK,UAAU;AACf;AAAA,IACF;AAEA,QAAI,CAAC,mBAAK,eAAc;AACtB,yBAAK,cAAe;AACpB,WAAK,YAAY,KAAK,IAAI,EAAE;AAAA,IAC9B;AAEA,UAAM,OAAO,mBAAK,QAAO,aAAa,IAAI,EAAE;AAC5C,UAAM,cAAc,KAAK,KAAK,mBAAK,QAAO,YAAY,SAAS,IAAI;AACnE,SAAK,UAAU,GAAG,WAAW,MAAM,WAAW;AAAA,EAChD;AAAA;AAAA,EAGA,gBAAgB,MAAM,OAAO;AAC3B,QAAI,QAAQ,MAAM,QAAQ,IAAI,KAAK,KAAK,QAAQ;AAC9C,WAAK,QAAQ,CAAC,OAAO;AACnB,YAAI,OAAO,OAAO,YAAY;AAC5B,aAAG,KAAK;AAAA,QACV;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF;AAAA;AAAA,EAGA,YAAY,MAAM,UAAU;AAC1B,QAAI,QAAQ,MAAM,QAAQ,IAAI,KAAK,OAAO,aAAa,YAAY;AACjE,WAAK,KAAK,QAAQ;AAAA,IACpB;AAAA,EACF;AAAA;AAAA,EAGA,eAAe,MAAM,UAAU;AAC7B,QAAI,QAAQ,MAAM,QAAQ,IAAI,KAAK,OAAO,aAAa,cAAc,KAAK,QAAQ;AAChF,YAAM,QAAQ,KAAK,QAAQ,QAAQ;AAEnC,UAAI,QAAQ,IAAI;AACd,aAAK,OAAO,OAAO,CAAC;AAAA,MACtB;AAAA,IACF;AAAA,EACF;AAAA,EAEA,YAAY;AACV,QAAI,mBAAK,eAAc;AACrB,WAAK,gBAAgB,mBAAK,sBAAqB,KAAK,UAAU,CAAC;AAAA,IACjE;AAAA,EACF;AAAA,EAEA,cAAc;AACZ,SAAK,gBAAgB,mBAAK,wBAAuB,KAAK,UAAU,CAAC;AAAA,EACnE;AAAA;AAAA,EAGA,yBAAyB,GAAG;AAC1B,UAAM,QAAQ,EAAE,YAAY,SAAY,EAAE,UAAU,EAAE;AAEtD,UAAM,SAAS,UAAU;AACzB,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAKA,YAAY;AACV,uBAAK,QAAS;AACd,SAAK,UAAU,KAAK,IAAI,EAAE;AAC1B,uBAAK,cAAe;AAAA,EACtB;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,UAAU,QAAQ;AAChB,QAAI,YAAY;AAChB,SAAK,WAAW,WAAW;AAE3B,QAAI,OAAO,cAAc,UAAU;AACjC,mBAAa;AAAA,IACf;AAEA,uBAAK,QAAO,MAAM,SAAS;AAE3B,SAAK,gBAAgB,mBAAK,2BAA0B,KAAK,UAAU,CAAC;AAAA,EACtE;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,WAAW,QAAQ;AACjB,QAAI,CAAC,mBAAK,WAAU,CAAC,mBAAK,YAAW,CAAC,mBAAK,WAAU;AACnD,YAAM,IAAI;AAAA,QACR,GAAG,MAAM;AAAA,MACX;AAAA,IACF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,WAAW;AACT,SAAK,WAAW,UAAU;AAC1B,WAAO,mBAAK,UAAS,MAAM,eAAe;AAAA,EAC5C;AAAA;AAAA;AAAA;AAAA,EAKA,OAAO;AACL,SAAK,WAAW,MAAM;AACtB,uBAAK,UAAS,MAAM,aAAa;AAAA,EACnC;AAAA;AAAA;AAAA;AAAA,EAKA,OAAO;AACL,SAAK,WAAW,MAAM;AACtB,uBAAK,UAAS,MAAM,aAAa;AAAA,EACnC;AAAA;AAAA;AAAA;AAAA,EAKA,eAAe;AACb,uBAAK,0BAA2B,CAAC;AACjC,uBAAK,uBAAwB,CAAC;AAC9B,uBAAK,qBAAsB,CAAC;AAC5B,uBAAK,SAAQ,oBAAoB,aAAa,KAAK,YAAY,KAAK,IAAI,CAAC;AACzE,aAAS,oBAAoB,aAAa,KAAK,YAAY,KAAK,IAAI,CAAC;AACrE,aAAS,oBAAoB,WAAW,KAAK,UAAU,KAAK,IAAI,CAAC;AAAA,EACnE;AAAA,EAEA,SAAS;AACP,SAAK,aAAa;AAAA,EACpB;AACF;AA5PE;AAEA;AAEA;AAEA;AAEA;AAEA;AAEA;AAEA;AAgPK,MAAM,wBAAwB,MAAM;AACzC,QAAM,wBAAwB,yCAAM,CAAC,IAAI,mBAAmB,CAAC;AAC7D,SAAO,sBAAsB;AAC/B;;;ACpQO;AACe;AACO;AACS;AAEtC,SAAS,sBAAsB,EAAE,SAAS,GAAG;AAE3C,SAAO,kGAAG,QAAS;AACrB;AAEA,sBAAsB,YAAY;AAAA,EAChC,UAAU,wCAAoB,CAAC,CAAC,CAAC;AACnC;AAEA,SAAS,uBAAuB,EAAE,SAAS,GAAG;AAE5C,SAAO,kGAAG,QAAS;AACrB;AAEA,uBAAuB,YAAY;AAAA,EACjC,UAAU,wCAAoB,CAAC,CAAC,CAAC;AACnC;AAEA,MAAM,eAAe,IAAI,eAAe,WAAW,IAAI,CAAC,QAAQ,MAAM,IAAI,KAAK,CAAC,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AAE1G,MAAM,cAAc,6CAAU,CAAC,CAAC;AAAA,EAC9B;AAAA,EACA;AAAA,EACA,iBAAiB;AAAA,EACjB,cAAc;AAAA,EACd,YAAY;AAAA,EACZ,QAAQ;AAAA,EACR,iBAAiB;AAAA,EACjB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAEF,GAAG,QAAQ;AACT,QAAM,WAAW,yCAAM,CAAC,IAAI;AAC5B,QAAM,YAAY,yCAAM,CAAC,IAAI;AAC7B,QAAM,aAAa,yCAAM,CAAC,IAAI;AAE9B,QAAM,eAAe,qBAAqB,CAAC;AAE3C,8CAAS,CAAC,MAAM;AACd,QAAI,CAAC,SAAS,WAAW,CAAC,UAAU,WAAW,CAAC,WAAW,SAAS;AAClE;AAAA,IACF;AAEA,QAAI,CAAC,cAAc;AACjB;AAAA,IACF;AAEA,iBAAa,QAAQ,WAAW,SAAS,SAAS,SAAS,UAAU,OAAO;AAC5E,iBAAa,GAAG,kBAAkB,cAAc;AAChD,iBAAa,GAAG,eAAe,WAAW;AAC1C,iBAAa,GAAG,aAAa,SAAS;AACtC,iBAAa,UAAU,QAAQ,YAAY;AAG3C,WAAO,MAAM;AACX,mBAAa,aAAa;AAAA,IAC5B;AAAA,EACF,GAAG,CAAC,CAAC;AAEL,wDAAmB;AAAnB,IACE;AAAA,IACA,MAAM;AAEJ,YAAM,OAAO,CAAC,SAAS,KAAK,KAAK,YAAY;AAE7C,aAAO;AAAA,QACL,WAAW,KAAK,aAAa,SAAS;AAAA,QACtC,WAAW,KAAK,aAAa,SAAS;AAAA,QACtC,MAAM,KAAK,aAAa,IAAI;AAAA,QAC5B,MAAM,KAAK,aAAa,IAAI;AAAA,QAC5B,UAAU,KAAK,aAAa,QAAQ;AAAA,QACpC,QAAQ,KAAK,aAAa,MAAM;AAAA,QAChC,IAAI,KAAK,aAAa,EAAE;AAAA,QACxB,KAAK,KAAK,aAAa,GAAG;AAAA,MAC5B;AAAA,IACF;AAAA,IACA,CAAC;AAAA,EACH;AAEA,MAAI,aAAa;AACjB,MAAI,cAAc;AAClB,QAAM,WAAW,CAAC;AAElB,mCAAc,CAAC,QAAQ,UAAU,CAAC,UAAU;AAC1C,QAAI,SAAS,uCAAoB,CAAC,KAAK,GAAG;AACxC,UAAI,MAAM,SAAS,uBAAuB;AACxC,qBAAa;AAAA,MACf,WAAW,MAAM,SAAS,wBAAwB;AAChD,sBAAc;AAAA,MAChB,OAAO;AACL,iBAAS,KAAK,KAAK;AAAA,MACrB;AAAA,IACF;AAAA,EACF,CAAC;AAED,QAAM,UACJ,uDAAC,SAAI,WAAW,aAAa,yBAAyB,oBAAoB,KAAK,GAAG,KAAK,YAAY,SACjG,uDAAC,SAAI,WAAU,+BAA8B,GAC7C,uDAAC,SAAI,KAAK,WAAW,WAAW,aAAa,iCAAiC,eAAe,KAE3F,uDAAC,SAAI,WAAU,+CAA6C,UAAW,GACvE,uDAAC,SAAI,WAAU,yCAAsC,GAAC,GACtD,uDAAC,SAAI,WAAU,gDAA8C,WAAY,CAE3E,GACA,uDAAC,SAAI,KAAK,UAAU,WAAW,aAAa,gCAAgC,gBAAgB,GAAG,OAAO,gBACnG,QACH,CACF;AAGF,MAAI,gBAAgB;AAClB,WAAO,oCAAY,CAAC,SAAS,SAAS,cAAc,cAAc,CAAC;AAAA,EACrE;AACF,CAAC;AAED,YAAY,YAAY;AAAA,EACtB,UAAU,wCAAoB,CAAC,CAAC,CAAC;AAAA,EACjC,QAAQ,sCAAgB;AAAN,EAClB,gBAAgB,oCAAc;AAAJ,EAC1B,aAAa,oCAAc;AAAJ,EACvB,WAAW,oCAAc;AAAJ,EACrB,gBAAgB,sCAAgB;AAAN,EAC1B,OAAO,wCAAoB,CAAC,CAAC,CAAC;AAAA,EAC9B,cAAc,wCAAoB,CAAC,CAAC,CAAC;AAAA,EACrC,kBAAkB,sCAAgB;AAAN,EAC5B,iBAAiB,sCAAgB;AAAN,EAC3B,kBAAkB,sCAAgB;AACpC;AAEA,YAAY,aAAa;AACzB,YAAY,cAAc;AAE1B,6DAAe,WAAW,EAAC;;;ACjJG;AAEvB,MAAM,cAAc,gDAAa,CAAC;;;ACFX;AAE9B,iDAAe,gDAAa,CAAC,CAAC,EAAC;;;;;;;;;;;;;;;;;;;ACFW;AACpB;AAEC;AACK;AAE5B,MAAM,aAAa,CAAC,UAAU;AAC5B,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI;AAEJ,8CAAS,CAAC,MAAM;AACd,UAAM,cAAc,4BAAK;AAEzB,QAAI,CAAC,UAAU,IAAI,GAAG;AACpB,aAAO,aAAa,IAAI;AAAA,IAC1B;AAAA,EACF,GAAG,CAAC,SAAS,IAAI,CAAC;AAElB,QAAM,cAAc,iBAAW,CAAC,OAAO;AACvC,8CAAS,CAAC,MAAM;AACd,QACE,UAAU,IAAI,MAAK,mCAAS,YACxB,2CAAa,YAAU,mCAAS,UAAS,YAAY,aAAa,QAAQ,WAC9E;AACA,YAAM,cAAc,4BAAK;AACzB,gBAAU,aAAa,IAAI;AAAA,IAC7B;AAAA,EACF,GAAG,CAAC,SAAS,MAAM,aAAa,IAAI,CAAC;AAErC,8CAAS,CAAC,MAAM;AACd,YAAQ,IAAI;AACZ,WAAO,MAAM,QAAQ,IAAI;AAAA,EAC3B,GAAG,CAAC,CAAC;AAEL,QAAM,eAAe,0CAAO,CAAC,MAAM;AACjC,QAAI,CAAC,OAAO,KAAK,IAAI,EAAE,QAAQ;AAC7B,aAAO;AAAA,IACT;AAEA,QAAI,kBAAkB,KAAK,QAAQ,EAAE,EAAE,SAAS,OAAO;AACrD,aAAO;AAAA,IACT;AAEA,QAAI,CAAC,UAAU;AACb,aAAO,UAAU,IAAI;AAAA,IACvB;AACA,WAAO,gBAAgB,aAAa,QAAQ,QAAQ,EAAE,IAAI;AAAA,EAC5D,GAAG,CAAC,gBAAgB,UAAU,cAAc,SAAS,IAAI,CAAC;AAE1D,SAEI,eAEI,uDAAC,SAAI,KAAK,QAAQ,IAAI,WAAU,oBAAmB,OAAO,EAAE,SAAS,gBAAgB,aAAa,QAAQ,QAAQ,EAAE,IAAI,KAAK,UAAU,OAAO,KAC5I;AAAA,IAAC,UAAU,CAAC;AAAA,IAAX;AAAA,MACC,OAAO;AAAA,QACL;AAAA,QACA;AAAA,MACF;AAAA;AAAA,IAEC;AAAA,EACH,CACF,IAEA;AAGV;AAEA,WAAW,YAAY;AAAA,EACrB,QAAQ,oCAAc;AAAJ,EAClB,WAAW,oCAAc;AAAJ,EACrB,SAAS,oCAAc;AAAJ,EACnB,SAAS,oCAAc;AAAJ,EACnB,UAAU,uCAAmB,CAAC;AAAA,IAC5B,qCAAiB,CAAC,oCAAc;AAAA,IAChC,oCAAc;AAAJ,IACV,uCAAiB;AAAP,IACV,sCAAgB;AAAN,EACZ,CAAC;AAAA,EACD,MAAM,wCAAoB,CAAC,KAAK;AAAA,EAChC,gBAAgB,oCAAc;AAAJ,EAC1B,UAAU,oCAAc;AAAJ,EACpB,cAAc,wCAAoB,CAAC,KAAK;AAAA,EACxC,WAAW,oCAAc;AAAJ,EACrB,QAAQ,sCAAgB;AAAN,EAClB,SAAS,wCAAoB,CAAC,MAAM;AAAA,EACpC,MAAM,wCAAoB,CAAC,MAAM;AACnC;AAEA,oDAAe,UAAU,EAAC;;;ACrGnB;AACe;AACM;AACL;AACA;AAEvB,MAAM,MAAM,CAAC,UAAU;AACrB,QAAM,EAAE,GAAG,IAAI;AACf,QAAM,cAAc,6CAAU,CAAC,WAAW;AAC1C,QAAM,aAAa,6CAAU,CAAC,UAAU;AACxC,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI;AACJ,QAAM;AAAA,IACJ;AAAA,EACF,IAAI;AACJ,QAAM,CAAC,MAAM,OAAO,IAAI,2CAAQ,CAAC,EAAE;AAEnC,8CAAS,CAAC,MAAM;AACd,QAAI;AACJ,QAAI,cAAc,MAAM;AACtB,UAAI,WAAW,WAAW,YAAY,IAAI;AACxC,mBAAW,WAAW,KAAK,OAAO,CAAC,EAAE,CAAC;AAAA,MACxC,OAAO;AACL,mBAAW,CAAC,EAAE;AAAA,MAChB;AAAA,IACF,OAAO;AACL,iBAAW,CAAC,EAAE;AAAA,IAChB;AACA,YAAQ,QAAQ;AAAA,EAClB,GAAG,CAAC,UAAU,CAAC;AAEf,MAAI,CAAC,MAAM;AACT,WAAO;AAAA,EACT;AAEA,SACE,uDAAC,uCAAQ,QACP;AAAA,IAAC,aAAU;AAAV;AAAA,MACC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,SAAS;AAAA,MACT;AAAA,MACA,QAAQ,YAAY;AAAA,MACpB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;AAAA,IAEC;AAAA,EACH,CACF;AAEJ;AAEA,IAAI,YAAY;AAAA,EACd,UAAU,uCAAmB,CAAC;AAAA,IAC5B,qCAAiB,CAAC,oCAAc;AAAA,IAChC,oCAAc;AAAJ,IACV,uCAAiB;AAAP,IACV,sCAAgB;AAAN,EACZ,CAAC;AAAA,EACD,IAAI,sCAAgB;AACtB;AAEA,IAAI,eAAe,CAAC;AAEpB,6CAAe,GAAG,EAAC;;;;;;;;;;;;;;;;;;;AC7EZ;AACe;AACN;AAEQ;AACP;AACW;AAE5B,MAAM,OAAO,CAAC,UAAU;AACtB,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI;AACJ,QAAM,CAAC,MAAM,OAAO,IAAI,2CAAQ,CAAC,CAAC,CAAC;AACnC,QAAM,CAAC,cAAc,eAAe,IAAI,2CAAQ,CAAC,CAAC,CAAC;AACnD,QAAM,CAAC,UAAU,WAAW,IAAI,2CAAQ,CAAC,KAAK;AAC9C,QAAM,CAAC,aAAa,cAAc,IAAI,2CAAQ,CAAC,IAAI;AAEnD,8CAAS,CAAC,MAAM;AACd,oBAAgB,WAAW;AAAA,EAC7B,GAAG,CAAC,WAAW,CAAC;AAEhB,QAAM,iBAAiB,CAAC,WAAW,MAAM,YAAY;AACnD,QAAI,gBAAgB,OAAO,OAAO,CAAC,GAAG,SAAS;AAC/C,UAAM,cAAc,OAAO,OAAO,CAAC,GAAG,OAAO;AAC7C,UAAM,WAAW,KAAK,MAAM,CAAC;AAE7B,WAAO,SAAS,SAAS,GAAG;AAC1B,sBAAgB,cAAc,SAAS,MAAM,CAAC;AAE9C,UAAI,CAAC,eAAe;AAClB,wBAAgB,CAAC;AAAA,MACnB;AAAA,IACF;AAEA,gBAAY,WAAW;AACvB,kBAAc,SAAS,MAAM,CAAC,IAAI;AAElC,WAAO;AAAA,EACT;AAEA,QAAM,YAAY,CAAC,WAAW,SAAS;AACrC,QAAI,gBAAgB,OAAO,OAAO,CAAC,GAAG,SAAS;AAC/C,UAAM,WAAW,KAAK,MAAM,CAAC;AAE7B,WAAO,SAAS,SAAS,GAAG;AAC1B,sBAAgB,cAAc,SAAS,MAAM,CAAC;AAAA,IAChD;AAEA,UAAM,MAAM,SAAS,MAAM;AAC3B,QAAI,cAAc,GAAG,EAAE,cAAc,QAAW;AAC9C,oBAAc,GAAG,EAAE,YAAY;AAAA,IACjC,OAAO;AACL,oBAAc,GAAG,EAAE,YAAY,CAAC,cAAc,GAAG,EAAE;AAAA,IACrD;AAEA,WAAO;AAAA,EACT;AAEA,QAAM,gBAAgB,MAAM;AAC1B,QAAI,aAAa,CAAC,UAAU;AAE5B,eAAW,KAAK,aAAa,QAAQ,SAAS,EAAE;AAEhD,QAAI,WAAW;AACb,mBAAa,WAAW,OAAO,UAAU,MAAM,GAAG,CAAC;AAAA,IACrD;AAEA,WAAO,WAAW,KAAK,GAAG;AAAA,EAC5B;AAEA,QAAM,yBAAyB,CAAC,MAAM,YAAY;AAChD,UAAM,WAAW,KAAK,MAAM,CAAC;AAC7B,QAAI,eAAe;AAEnB,QAAI,QAAQ,aAAa;AACvB,eAAS,KAAK,OAAO,KAAK,QAAQ,IAAI,EAAE,CAAC,CAAC;AAC1C,qBAAe;AAAA,IACjB;AAEA,YAAQ,CAAC,aAAa;AACpB,UAAI,WAAW,OAAO,OAAO,CAAC,GAAG,QAAQ;AAEzC,iBAAW,UAAU,UAAU,IAAI;AAEnC,aAAO;AAAA,IACT,CAAC;AACD,oBAAgB,QAAQ;AACxB,gBAAY,YAAY;AAExB,QAAI,aAAa;AACf,kBAAY,OAAO;AAAA,IACrB;AAAA,EACF;AAEA,QAAM,iBAAiB,CAAC,UAAU;AAChC,UAAM,aAAa,CAAC;AAEpB,QAAI,gBAAgB,aAAa,QAAQ,KAAK,IAAI,IAAI;AACpD,iBAAW,KAAK,QAAQ;AAAA,IAC1B;AAEA,WAAO,WAAW,KAAK,GAAG;AAAA,EAC5B;AAEA,QAAM,UAAU,CAAC,aAAa,SAAS;AACrC,QAAI,CAAC,aAAa;AAChB,aAAO;AAAA,IACT;AAEA,WACE,uDAAC,YAEG,OAAO,KAAK,WAAW,EAAE,IAAI,CAAC,OAAO,UAAU;AAC7C,YAAM,WAAW,OAAO,KAAK,OAAO,CAAC,YAAY,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,KAAK,EAAE,EAAE;AACrF,YAAM,WAAW,YAAY,KAAK,EAAE,YAAY,eAAe;AAE/D,UAAI,YAAY,KAAK,EAAE,SAAS,OAAO;AACrC,eAAO;AAAA,MACT;AAEA,aACE,uDAAC,QAAG,WAAW,eAAe,YAAY,KAAK,EAAE,EAAE,GAAG,KAAK,YAAY,KAAK,EAAE,MAC5E;AAAA,QAAC;AAAA;AAAA,UACC,MAAK;AAAA,UACL,SAAS,uBAAuB,KAAK,MAAM,UAAU,YAAY,KAAK,CAAC;AAAA,UACvE,WAAW,uBAAuB,KAAK,MAAM,UAAU,YAAY,KAAK,CAAC;AAAA,UACzE,UAAU;AAAA;AAAA,QAER,YAAY,KAAK,EAAE;AAAA,QAEnB,YAAY,KAAK,EAAE,cACf,uDAAC,eAAI,IAAC,WAAU,qBAAoB,MAAM,UAAU,IACpD;AAAA,MAER,GAEE,YAAY,KAAK,EAAE,cAEf;AAAA,QAAC,sBAAW;AAAX;AAAA,UACC,WAAW,YAAY,KAAK,EAAE;AAAA;AAAA,QAE7B,QAAQ,YAAY,KAAK,EAAE,MAAM,QAAQ;AAAA,MAC5C,IAEA,QAAQ,YAAY,KAAK,EAAE,MAAM,QAAQ,CAEjD;AAAA,IAEJ,CAAC,CAEL;AAAA,EAEJ;AAEA,QAAM,SAAS,CAAC,SAAS,SAAS;AAChC,YAAQ,cAAY,eAAe,sBAAK,WAAY,MAAM,OAAO,CAAC;AAElE,QAAI,QAAQ,UAAU;AACpB,qBAAe,IAAI;AAAA,IACrB;AAAA,EACF;AAEA,QAAM,YAAY,CAAC,SAAS,SAAS;AACnC,YAAQ,CAAC,aAAa;AACpB,YAAM,WAAW,sBAAK;AACtB,eAAS,QAAQ,EAAE,IAAI;AACvB,aAAO;AAAA,IACT,CAAC;AAED,QAAI,QAAQ,UAAU;AACpB,6BAAuB,MAAM,OAAO;AAAA,IACtC;AAAA,EACF;AAEA,QAAM,UAAU,CAAC,SAAS;AACxB,YAAQ,CAAC,aAAa;AACpB,YAAM,WAAW,sBAAK;AACtB,eAAS,IAAI,EAAE,OAAO;AAEtB,aAAO;AAAA,IACT,CAAC;AAAA,EACH;AAEA,QAAM,UAAU,CAAC,SAAS;AACxB,YAAQ,CAAC,aAAa;AACpB,YAAM,WAAW,sBAAK;AAEtB,eAAS,IAAI,EAAE,OAAO;AAEtB,aAAO;AAAA,IACT,CAAC;AAAA,EACH;AAEA,QAAM,YAAY,CAAC,SAAS;AAC1B,QAAI,WAAW,sBAAK;AACpB,UAAM,WAAW,KAAK,MAAM,CAAC;AAC7B,WAAO,SAAS,SAAS,GAAG;AAC1B,iBAAW,SAAS,SAAS,MAAM,CAAC;AAAA,IACtC;AAEA,UAAM,MAAM,SAAS,MAAM;AAE3B,WAAO,CAAC,EAAE,YAAY,SAAS,GAAG;AAAA,EACpC;AAEA,SACE,uDAAC,SAAI,WAAW,cAAc,KAC3B,QAAQ,IAAI,GACb;AAAA,IAAC,WAAW,CAAC;AAAA,IAAZ;AAAA,MACC,OAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA;AAAA,IAGG,OAAO,aAAa,aACjB,SAAS;AAAA,MACT;AAAA,MACA;AAAA,IACF,CAAC,IACC;AAAA,EAER,CACF;AAEJ;AAEA,KAAK,YAAY;AAAA,EACf,WAAW,sCAAgB;AAAN,EACrB,UAAU,uCAAmB,CAAC;AAAA,IAC5B,qCAAiB,CAAC,oCAAc;AAAA,IAChC,oCAAc;AAAJ,IACV,uCAAiB;AAAP,IACV,sCAAgB;AAAN,EACZ,CAAC;AAAA,EACD,gBAAgB,oCAAc;AAAJ,EAC1B,IAAI,sCAAgB;AAAN,EACd,aAAa,oCAAc;AAAJ,EACvB,MAAM,sCAAgB;AACxB;AAGA,KAAK,MAAM,MAAG;AAEd,sDAAe,IAAI,EAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AClQb;AACe;AAEQ;AACb;AAEjB,SAAS,QAAQ,IAWd;AAXc,eACf;AAAA;AAAA,IACA;AAAA,IACA;AAAA,IACA,WAAW;AAAA,IACX;AAAA,IACA,OAAO;AAAA,IACP;AAAA,IACA,WAAW;AAAA,IACX,yBAAyB,CAAC;AAAA,EAjB5B,IAQiB,IAUZ,wBAVY,IAUZ;AAAA,IATH;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAGA,QAAM,CAAC,UAAU,WAAW,IAAI,2CAAQ,CAAC,KAAK;AAC9C,QAAM,aAAa,yCAAM,CAAC,IAAI;AAC9B,QAAM,aAAa,yCAAM,CAAC,IAAI;AAC9B,QAAM,eAAe,WACjB;AAAA,IACA,SAAS,MAAM,YAAY,IAAI;AAAA,EACjC,IACE;AAAA,IACA,cAAc,MAAM,YAAY,IAAI;AAAA,IACpC,cAAc,MAAM,YAAY,KAAK;AAAA,IACrC,SAAS,MAAM,YAAY,IAAI;AAAA,IAC/B,QAAQ,MAAM,YAAY,KAAK;AAAA,EACjC;AAEF,QAAM,sBAAsB,8CAAW,CAAC,CAAC,MAAM;AAC7C,QAAI,CAAC,GAAG,wBAAwB,WAAW,OAAO,EAAE,KAAK,CAAC,MAAG;AAnCjE,UAAAA;AAmCoE,cAAAA,MAAA,uBAAG,aAAH,gBAAAA,IAAA,QAAc,EAAE;AAAA,KAAO,GAAG;AACxF;AAAA,IACF;AACA,gBAAY,KAAK;AAAA,EACnB,GAAG,CAAC,sBAAsB,CAAC;AAE3B,8CAAS,CAAC,MAAM;AACd,aAAS,iBAAiB,SAAS,qBAAqB,IAAI;AAC5D,WAAO,MAAM,SAAS,oBAAoB,SAAS,qBAAqB,IAAI;AAAA,EAC9E,GAAG,CAAC,mBAAmB,CAAC;AAExB,8CAAS,CAAC,MAAM;AACd,gBAAY,QAAQ;AAAA,EACtB,GAAG,CAAC,QAAQ,CAAC;AAEb,QAAM,UAAU,CAAC,eAAe,SAAS,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AACnE,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAU;AAAA,MACV,OAAO,uBAAE,SAAS,kBAAmB;AAAA,MACrC,KAAK;AAAA,OACD,eACA;AAAA,IAEH;AAAA,IACA,YACC;AAAA,MAAC,4BAAiB;AAAjB;AAAA,QACC,SAAS;AAAA,QACT,cAAc;AAAA,QACd,mBAAkB;AAAA,QAClB,QAAQ;AAAA;AAAA,MAER,uDAAC,SAAI,WAAW,SAAS,KAAK,cAC3B,SACC,SAAS,OACP,uDAAC,eAAI,IAAC,QAAO,SAAQ,MAAK,QAAO,IAEjC,OAGJ,uDAAC,SAAI,WAAU,0BACZ,MACH,GACC,YACC;AAAA,QAAC,eAAI;AAAJ;AAAA,UACC,QAAO;AAAA,UACP,MAAK;AAAA,UACL,SAAS,CAAC,MAAM;AACd,cAAE,gBAAgB;AAClB,wBAAY,KAAK;AAAA,UACnB;AAAA;AAAA,MACF,CAEJ;AAAA,IACF;AAAA,EAEJ;AAEJ;AAEA,QAAQ,YAAY;AAAA,EAClB,UAAU,oCAAc,CAAC;AAAA;AAAA,EAEzB,OAAO,wCAAoB,CAAC,MAAM;AAAA;AAAA;AAAA;AAAA,EAIlC,UAAU,sCAAgB;AAAN;AAAA,EAEpB,QAAQ,uCAAmB,CAAC;AAAA,IAC1B,oCAAc;AAAJ,IACV,sCAAgB;AAAN,EACZ,CAAC;AAAA;AAAA,EAED,WAAW,sCAAgB;AAAN;AAAA;AAAA;AAAA,EAIrB,MAAM,uCAAmB,CAAC;AAAA,IACxB,oCAAc;AAAJ,IACV,oCAAc;AAAJ,EACZ,CAAC;AAAA;AAAA;AAAA;AAAA,EAID,UAAU,oCAAc;AAAJ;AAAA,EAEpB,UAAU,oCAAc;AAAJ;AAAA;AAAA;AAAA;AAAA,EAKpB,wBAAwB,wCAAoB,CAAC,KAAK;AACpD;AAEA,yDAAe,OAAO,EAAC;;;AClIL;AACI;AACF;AAOpB,SAAS,aAAa,EAAE,MAAM,OAAO,SAAS,GAAG;AAC/C,SACE,KAAK,SAAS,QAEV,uDAAC,kBAAO,IAAC,QAAQ,MAAM,YACpB,KAAK,UAAU,GAAG,KAAK,GAAE,KAE5B,IAEA;AAER;AAEA,aAAa,YAAY;AAAA;AAAA,EAEvB,MAAM,sCAAgB;AAAN;AAAA,EAEhB,OAAO,sCAAgB;AAAN;AAAA,EAEjB,UAAU,sCAAgB;AAC5B;AAEA,8DAAe,YAAY,EAAC;;;;;;;;;AC/Be;AACrB;AAEtB,MAAM,iBAAiB,CAAC,WAAW,QAAQ,mBAAmB;AAC5D,QAAM,aAAa;AACnB,QAAM,mBAAmB;AAEzB,MAAI,iBAAiB,kBAAkB;AACrC,WAAO;AAAA,EACT;AAEA,MACE,SAAS,cACN,YAAY,YACf;AACA,WAAO;AAAA,EACT;AAEA,MACE,SAAS,iBAAiB,cACvB,YAAY,iBAAiB,YAChC;AACA,WAAO;AAAA,EACT;AAEA,MACE,aAAa,SAAS,KACnB,aAAa,SAAS,GACzB;AACA,WAAO;AAAA,EACT;AAEA,MAAI,CAAC,GAAG,GAAG,iBAAiB,GAAG,cAAc,EAAE,QAAQ,SAAS,IAAI,IAAI;AACtE,WAAO;AAAA,EACT;AAEA,SAAO;AACT;AAEA,MAAM,cAAc,CAAC,WAAW,iBAAiB;AAC/C,MAAI;AAAG,QACL,WAAW,CAAC;AAEd,OAAK,IAAI,GAAG,KAAK,WAAW,KAAK,GAAG;AAClC,QAAI,eAAe,GAAG,cAAc,SAAS,GAAG;AAC9C,UAAI,IAAI,SAAS,SAAS,SAAS,CAAC,GAAG;AACrC,iBAAS,KAAK,KAAK;AAAA,MACrB;AACA,eAAS,KAAK,IAAI,CAAC;AAAA,IACrB;AAAA,EACF;AAEA,SAAO;AACT;AAEe,MAAM,mBAAmB,wCAAS,CAAC;AAAA,EAOhD,YAAY,OAAO;AACjB,UAAM,KAAK;AACX,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,IACF,IAAI,KAAK;AAET,SAAK,QAAQ;AAAA,MACX,WAAW,KAAK;AAAA,MAChB,cAAc,SAAS;AAAA,MACvB,YAAY,YAAY,gBAAgB,KAAK;AAAA,IAC/C;AAEA,SAAK,UAAU;AAAA,EACjB;AAAA,EAEA,OAAO,yBAAyB,WAAW,WAAW;AACpD,QACE,UAAU,UAAU,UAAU,UAAU,SACrC,UAAU,mBAAmB,UAAU,UAAU,gBACpD;AACA,aAAO;AAAA,QACL,cAAc,UAAU;AAAA,QACxB,YAAY,YAAY,UAAU,gBAAgB,UAAU,KAAK;AAAA,MACnE;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AAAA,EAEA,gBAAgB,QAAQ;AACtB,UAAM,EAAE,aAAa,IAAI,KAAK;AAC9B,UAAM,aAAa,CAAC;AAEpB,QAAI,iBAAiB,QAAQ;AAC3B,iBAAW,KAAK,QAAQ;AAAA,IAC1B;AAEA,WAAO,WAAW,KAAK,GAAG;AAAA,EAC5B;AAAA,EAEA,aAAa;AACX,SAAK,WAAW;AAEhB,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,SAAS,QAAQ;AACf,UAAM,EAAE,UAAU,eAAe,IAAI,KAAK;AAC1C,SAAK,SAAS;AAAA,MACZ,cAAc;AAAA,MACd,YAAY,YAAY,gBAAgB,MAAM;AAAA,IAChD,GAAG,MAAM;AACP,UAAI,UAAU;AACZ,iBAAS,MAAM;AAAA,MACjB;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAEA,SAAS;AACP,UAAM,EAAE,eAAe,IAAI,KAAK;AAChC,UAAM,EAAE,YAAY,aAAa,IAAI,KAAK;AAE1C,WACE,uDAAC,uCAAQ,QAEL,iBAEI,uDAAC,QAAG,WAAU,oBAEV,eAAe,KAAK,iBAAiB,IAEjC,uDAAC,YACC,uDAAC,YAAO,SAAS,KAAK,SAAS,KAAK,MAAM,eAAe,CAAC,GAAG,MAAK,YAAS,UAAQ,CACrF,IAEA,MAGJ,WAAW,IAAI,YACb,uDAAC,QAAG,KAAK,KAAK,WAAW,GAAG,WAAW,KAAK,gBAAgB,SAAS,CAAC,KAElE,WAAW,QACP,uDAAC,YAAO,SAAS,KAAK,SAAS,KAAK,MAAM,SAAS,CAAC,GAAG,MAAK,YAAW,MAAQ,IAC/E,uDAAC,cAAO,MAAQ,CAExB,CACD,GAGD,eAAe,kBAAkB,iBAAiB,IAE9C,uDAAC,YACC,uDAAC,YAAO,SAAS,KAAK,SAAS,KAAK,MAAM,eAAe,CAAC,GAAG,MAAK,YAAS,MAAI,CACjF,IAEA,IAER,IAEA,IAER;AAAA,EAEJ;AACF;AA/GE,uBADmB,YACZ,aAAY;AAAA,EACjB,OAAO,sCAAgB;AAAN,EACjB,gBAAgB,sCAAgB;AAAN,EAC1B,UAAU,oCAAc;AAC1B;;;AC5D4B;AAEvB,MAAM,eAAe,gDAAa,CAAC;;;ACFE;AACtB;AAEO;AACZ;AAEV,MAAM,aAAa,CAAC,EAAE,OAAO,MAAM;AACxC,QAAM,EAAE,SAAS,IAAI;AACrB,QAAM,CAAC,WAAW,YAAY,IAAI,2CAAQ,EAAC,qCAAU,YAAW,KAAK;AACrE,QAAM,EAAE,OAAO,YAAY,IAAI,6CAAU,CAAC,YAAY;AACtD,SACE;AAAA,IAAC;AAAA;AAAA,MACC,KAAK,OAAO;AAAA,MACZ,SAAS,WAAW,MAAM;AACxB,oBAAY,QAAQ,EAAE,QAAQ,UAAU,CAAC;AACzC,qBAAa,cAAc,QAAQ,SAAS,KAAK;AAAA,MACnD,IAAI;AAAA,MACJ,WAAW,MAAM,YAAY,iBAAiB;AAAA;AAAA,IAE7C,OAAO;AAAA,IACP,OAAO,YACN,uDAAC,UAAK,WAAU,iBACd,uDAAC,eAAI,IAAC,QAAO,SAAQ,MAAK,aAAY,CACxC;AAAA,EAEJ;AAEJ;AAEA,WAAW,YAAY;AAAA,EACrB,QAAQ,wCAAoB,CAAC,MAAM;AACrC;;;;;;;;;;;;;;;;;;;;;;AC/B4C;AACjB;AACE;AAEtB,MAAM,SAAS,MAAM;AAC1B,QAAM,CAAC,WAAW,YAAY,IAAI,2CAAQ,CAAC,KAAK;AAChD,QAAM,EAAE,OAAO,YAAY,IAAI,6CAAU,CAAC,YAAY;AACtD,QAAM,EAAE,SAAS,WAAW,IAAI;AAEhC,QAAM,kBAAkB,MAAM,QAAQ,IAAI,YACxC;AAAA,IAAC,UAAU;AAAV;AAAA,MACC,KAAK,OAAO;AAAA,MACZ;AAAA;AAAA,EACF,CACD;AAED,QAAM,qBAAqB,MAAM;AAhBnC;AAiBI,QAAI,CAAC,YAAY;AACf;AAAA,IACF;AACA,UAAM,YAAY,WAAW;AAE7B,WACE;AAAA,MAAC;AAAA;AAAA,QACC,WAAW,MAAM,YAAY,iBAAiB;AAAA;AAAA,OAE7C,yCAAY,kBACX,uDAAC,SAAI,WAAW,yCAAY,SAC1B;AAAA,QAAC;AAAA,mDACK,WAAW,SADhB;AAAA,UAEC,SAAS,MAAM;AACb,yBAAa,CAAC,SAAS;AACvB,wBAAY,0BAA0B,SAAS;AAAA,UACjD;AAAA,UACA,UAAU,CAAC,MAAM;AACf,wBAAY,2BAA2B,CAAC;AAAA,UAC1C;AAAA;AAAA,SAEC,gBAAW,WAAX,mBAAmB;AAAA,MACtB,CACF,IAEA,WAAW,QAAQ;AAAA,IAEvB;AAAA,EAEJ;AAEA,SACE,uDAAC,eACC,uDAAC,YACE,cAAc,WAAW,aAAa,UAAU,mBAAmB,GACnE,gBAAgB,GAChB,cAAc,WAAW,aAAa,WAAW,mBAAmB,CACvE,CACF;AAEJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACzDiC;AACX;AAQP,MAAM,iBAAiB,wCAAS,CAAC;AAAA,EA4C9C,gBAAgB;AACd,UAAM;AAAA,MACJ;AAAA,MAAQ;AAAA,MAAU;AAAA,MAAU,QAAQ;AAAA,MAAI,mBAAmB;AAAA,IAC7D,IAAI,KAAK;AAET,UAAM,aAAa,CAAC,gBAAgB;AAEpC,eAAW,KAAK,cAAc;AAE9B,QAAI,QAAQ;AACV,iBAAW,KAAK,sBAAsB;AAAA,IACxC;AAEA,QAAI,MAAM,KAAK,GAAG;AAChB,iBAAW,KAAK,GAAG,MAAM,MAAM,GAAG,EAAE,IAAI,OAAK,uBAAuB,CAAC,EAAE,CAAC;AAAA,IAC1E;AAEA,QAAI,YAAY,UAAU;AACxB,iBAAW,KAAK,2BAA2B;AAAA,IAC7C;AAEA,WAAO,WAAW,KAAK,GAAG;AAAA,EAC5B;AAAA,EAEA,eAAe;AACb,UAAM,EAAE,MAAM,IAAI,KAAK;AACvB,QAAI,CAAC;AAAO,aAAO;AAEnB,WACE,uDAAC,OAAE,WAAU,qCACV,KACH;AAAA,EAEJ;AAAA,EAEA,cAAc;AACZ,UAAM,EAAE,KAAK,IAAI,KAAK;AACtB,QAAI,CAAC;AAAM,aAAO;AAElB,WACE,uDAAC,OAAE,WAAU,kCACV,IACH;AAAA,EAEJ;AAAA,EAEA,SAAS;AACP,UAEI,UAAK,OADP;AAAA;AAAA,MAAO;AAAA,MAAO;AAAA,IArGpB,IAsGQ,IADsB,wBACtB,IADsB;AAAA,MAAxB;AAAA,MAAO;AAAA,MAAO;AAAA;AAEhB,WACE;AAAA,MAAC;AAAA;AAAA,QACC,WAAW,KAAK,cAAc;AAAA;AAAA,MAE9B,uDAAC,SAAI,WAAU,+BACb,uDAAC,eACC;AAAA,QAAC;AAAA;AAAA,UACC,SAAS,QAAQ,MAAM,QAAQ;AAAA,WAC3B,QACA,OAHL;AAAA,UAIC,MAAK;AAAA;AAAA,MACP,GACC,KACH,GACC,KAAK,YAAY,GACjB,KAAK,aAAa,CACrB;AAAA,IACF;AAAA,EAEJ;AACF;AAjHE,qBADmB,UACZ,aAAY;AAAA;AAAA,EAEjB,UAAU,oCAAc;AAAJ;AAAA,EAEpB,UAAU,oCAAc;AAAJ;AAAA,EAEpB,QAAQ,oCAAc;AAAJ;AAAA,EAElB,OAAO,sCAAgB;AAAN;AAAA,EAEjB,OAAO,uCAAmB,CAAC;AAAA,IACzB,sCAAgB;AAAN,IACV,oCAAc;AAAJ,EACZ,CAAC;AAAA;AAAA,EAED,MAAM,sCAAgB;AAAN,EAChB,OAAO,wCAAoB,CAAC,MAAM;AAAA;AAAA,EAElC,OAAO,uCAAmB,CAAC;AAAA,IACzB,qCAAiB,CAAC,oCAAc;AAAA,IAChC,oCAAc;AAAJ,IACV,uCAAiB;AAAP,IACV,oCAAc;AAAJ,IACV,sCAAgB;AAAN,EACZ,CAAC;AAAA;AAAA,EAED,MAAM,sCAAgB;AAAN;AAAA,EAEhB,OAAO,uCAAmB,CAAC;AAAA,IACzB,sCAAgB;AAAN,IACV,oCAAc;AAAJ,EACZ,CAAC;AAAA;AAAA,EAED,SAAS,uCAAmB,CAAC;AAAA,IAC3B,sCAAgB;AAAN,IACV,oCAAc;AAAJ,EACZ,CAAC;AAAA;AAAA,EAED,UAAU,oCAAc;AAAJ;AAAA,EAEpB,kBAAkB,sCAAgB;AACpC;;;;;;;;;;;;;;;;;;;ACnDgB;AACI;AAEf,MAAM,OAAO,CAAC,EAAE,KAAK,IAAI,MAAM;AAHtC;AAIE,MAAI,CAAC,IAAI,OAAO,IAAI,EAAE,GAAG;AACvB,WAAO,uDAAC,UAAG;AAAA,EACb;AAEA,MAAI,IAAI,SAAS,UAAU;AACzB;AAAA;AAAA,MAEE;AAAA,QAAC;AAAA;AAAA,UACC,aAAW,SAAI,OAAO,IAAI,EAAE,EAAE,YAAnB,mBAA4B,cAAa;AAAA,YAChD,gCAAK,OAAO,IAAI,QAAhB,mBAAqB;AAAA,SAExB,SAAI,OAAO,IAAI,EAAE,MAAjB,mBAAoB;AAAA,MACvB;AAAA;AAAA,EAEJ;AACA,QAAM,YAAY,IAAI;AACtB,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAW,SAAI,OAAO,IAAI,EAAE,EAAE,YAAnB,mBAA4B,cAAa;AAAA,QAChD,gCAAK,OAAO,IAAI,QAAhB,mBAAqB;AAAA,IAEzB;AAAA,MAAC;AAAA,4BACK,IAAI,OAAO,IAAI,EAAE,EAAE;AAAA,MAEtB,IAAI,OAAO,IAAI,EAAE,EAAE,WAAW,IAAI,OAAO,IAAI,EAAE,EAAE,WAAW;AAAA,IAC/D;AAAA,EACF;AAEJ;AAEA,KAAK,YAAY;AAAA,EACf,KAAK,wCAAoB,CAAC,MAAM;AAAA,EAChC,KAAK,wCAAoB,CAAC,MAAM;AAAA,EAChC,OAAO,sCAAgB;AACzB;;;ACtCkC;AACZ;AACD;AACA;AACQ;AAEtB,MAAM,MAAM,CAAC,EAAE,KAAK,MAAM,MAAM;AANvC;AAOE,QAAM,EAAE,OAAO,YAAY,IAAI,6CAAU,CAAC,YAAY;AACtD,QAAM,EAAE,SAAS,WAAW,IAAI;AAEhC,QAAM,qBAAqB,MACzB,uDAAC,YACC;AAAA,IAAC,QAAQ;AAAR;AAAA,MACC,gBAAgB,IAAI;AAAA,MACpB,UAAU,OAAK,YAAY,gBAAgB,EAAE,OAAO,UAAU,EAAE,CAAC;AAAA;AAAA,EACnE,CACF;AAGF,SACE;AAAA,IAAC;AAAA;AAAA,MACC,UAAS,SAAI,WAAJ,mBAAY;AAAA,MACrB,YAAW,SAAI,YAAJ,mBAAa;AAAA;AAAA,IAEvB,cAAc,WAAW,aAAa,UAAU,mBAAmB;AAAA,IACnE,QAAQ,IAAI,SACX,uDAAC,IAAI,IAAC,KAAK,IAAI,IAAI,KAAU,KAAU,OAAc,CACtD;AAAA,IACA,cAAc,WAAW,aAAa,WAAW,mBAAmB;AAAA,EACvE;AAEJ;AAEA,IAAI,YAAY;AAAA,EACd,KAAK,wCAAoB,CAAC,MAAM;AAAA,EAChC,OAAO,sCAAgB;AACzB;;;ACpCkC;AACL;AACT;AAGb,MAAM,OAAO,MAAM;AACxB,QAAM,EAAE,MAAM,IAAI,6CAAU,CAAC,YAAY;AACzC,QAAM,EAAE,KAAK,IAAI;AAEjB,SACE;AAAA,IAAC;AAAA;AAAA;AAAA,IAGG,KAAK,IAAI,CAAC,KAAK,MAAM,uDAAC,GAAG,IAAC,KAAK,GAAG,KAAU,OAAO,GAAG,CAAE;AAAA,EAE5D;AAEJ;;;;;;;;;;;;;;;;;;;;;;ACjBmD;AAC7B;AACF;AACG;AACJ;AACU;AACN;AACF;AACQ;AAO7B,SAAS,MAAM;AAAA,EACb;AAAA,EAAO;AAAA,EAAU;AAAA,EAAe;AAAA,EAAS;AAC3C,GAAG;AAjBH;AAkBE,QAAM,CAAC,OAAO,QAAQ,IAAI,2CAAQ,CAAC,IAAI;AACvC,QAAM,CAAC,aAAa,cAAc,IAAI,2CAAQ,CAAC,KAAK;AACpD,QAAM,eAAe,yCAAM,CAAC,IAAI;AAChC,QAAM,WAAW,CAAC,KAAK,cAAc;AACnC,aAAS,yCACJ,QADI;AAAA,MAEP,MAAM;AAAA,QACJ,OAAO;AAAA,QACP;AAAA,MACF;AAAA,IACF,EAAC;AAAA,EACH;AAEA,QAAM,gBAAgB,CAAC,SAAS;AAC9B,aAAS,yCACJ,QADI;AAAA,MAEP,MAAM,MAAM,KAAK,IAAI,CAAC,QAAS,yCAAK,MAAL,EAAU,UAAU,KAAK,EAAE;AAAA,IAC5D,EAAC;AAAA,EACH;AAEA,QAAM,YAAY,CAAC,SAAS;AAC1B,UAAM,EAAE,OAAO,SAAS,IAAI;AAC5B,UAAM,cAAc,MAAM,KAAK,KAAK;AAEpC,aAAS,yCACJ,QADI;AAAA,MAEP,MAAM;AAAA,QACJ,GAAG,MAAM,KAAK,MAAM,GAAG,KAAK;AAAA,QAC5B,yCAAK,cAAL,EAAkB,SAAS;AAAA,QAC3B,GAAG,MAAM,KAAK,MAAM,QAAQ,CAAC;AAAA,MAC/B;AAAA,IACF,EAAC;AAAA,EACH;AAEA,QAAM,gBAAgB,CAAC,SAAS;AAC9B,aAAS,yCACJ,QADI;AAAA,MAEP,YAAY,yCACP,MAAM,aADC;AAAA,QAEV,SAAS,OAAO;AAAA,MAClB;AAAA,IACF,EAAC;AAAA,EACH;AAEA,QAAM,MAAM;AAAA,IACV,UAAU,MAAM;AAAA,IAChB,UAAU,CAAC,aAAa,SAAS,QAAQ;AAAA,EAC3C;AAEA,QAAM,cAAc,CAAC,SAAS,SAAS;AACrC,mBAAe,OAAO;AACtB,QAAI,YAAY,QAAQ;AACtB,eAAS,KAAK,OAAO,IAAI,KAAK,SAAS;AAAA,IACzC;AAEA,QAAI,YAAY,0BAA0B;AACxC,oBAAc,IAAI;AAAA,IACpB;AAEA,QAAI,YAAY,2BAA2B;AACzC,oBAAc,IAAI;AAAA,IACpB;AAEA,QAAI,YAAY,gBAAgB;AAC9B,gBAAU,IAAI;AAAA,IAChB;AAEA,QAAI,YAAY,qBAAqB;AACnC,oBAAc,IAAI;AAAA,IACpB;AAAA,EACF;AAEA,8CAAS,CAAC,MAAM,SAAS,KAAK,GAAG,CAAC,KAAK,CAAC;AACxC,8CAAS,CAAC,MAAM;AACd,QAAI,UAAU;AACZ,eAAS,aAAa,OAAO,GAAG;AAAA,IAClC;AACA,mBAAe,KAAK;AAAA,EACtB,GAAG,CAAC,KAAK,CAAC;AAEV,MAAI,CAAC,OAAO;AACV,WAAO,uDAAC,iBAAM,IAAC,UAAS,YAAW;AAAA,EACrC;AAEA,MAAI,MAAM,QAAQ,GAAG;AACnB,WAAO,uDAAC,kBAAO,IAAC,OAAM,UAAQ,iBAAiB,mBAAoB;AAAA,EACrE;AAEA,QAAM,WAAW,MACf,uDAAC,WAAM,WAAU,aAAY,KAAK,gBAChC,uDAAC,MAAM,MAAC,GACR,uDAAC,IAAI,MAAC,CACR;AAIF,SACE,uDAAC,YAAY,CAAC,UAAb,EAAsB,OAAO,EAAE,OAAO,YAAY,KACjD,uDAAC,SAAI,WAAW,gBAAc,WAAM,YAAN,mBAAe,cAAa,EAAE,IAAI,OAAO,EAAE,QAAQ,MAAM,YAAY,MAAM,YAAY,QAAQ,UAAU,WAAW,KAE9I,WAAW,uDAAC,iBAAM,IAAC,UAAS,YAAW,gBAAc,MAAC,GAGtD,qBAAqB,MAAM,aAEvB;AAAA,IAAC,2BAAgB;AAAhB;AAAA,MACC,UAAU;AAAA,MACV,SAAS,MAAM,WAAW,aAAa,MAAM,WAAW;AAAA,MACxD,UAAU,CAAC,QAAQ,YAAY,qBAAqB,GAAG;AAAA,MACvD,YAAY,MAAM,WAAW,UAAU;AAAA,MACvC,aAAa;AAAA;AAAA,IAEX,SAAS;AAAA,EACb,IAEA,SAAS,CAEjB,GACC,MAAM,cAAc,CAAC,qBACpB,uDAAC,SAAI,WAAU,0BACb;AAAA,IAAC,UAAU;AAAV;AAAA,MACC,OAAO,MAAM,WAAW,UAAU;AAAA,MAClC,eAAe,MAAM,WAAW,UAAU;AAAA,MAC1C,gBAAgB,MAAM,WAAW,aAAa;AAAA,MAC9C,UAAU,CAAC,QAAQ,YAAY,qBAAqB,GAAG;AAAA;AAAA,EACzD,CACF,CAEJ;AAEJ;AAEA,MAAM,YAAY;AAAA;AAAA,EAEhB,OAAO,mCAAe,CAAC;AAAA;AAAA,IAErB,SAAS,qCAAiB,CAAC,mCAAe,CAAC;AAAA;AAAA,MAEzC,IAAI,sCAAgB,CAAC;AAAA;AAAA,MAErB,MAAM,sCAAgB;AAAN;AAAA,MAEhB,MAAM,uCAAmB,CAAC;AAAA;AAAA,QAExB,sCAAgB;AAAN;AAAA,QAEV,uCAAiB;AAAP;AAAA,QAEV,oCAAc;AAAJ,MACZ,CAAC;AAAA,MACD,UAAU,uCAAmB,CAAC;AAAA;AAAA,QAE5B,oCAAc;AAAJ;AAAA,QAEV,mCAAe,CAAC;AAAA;AAAA,UAEd,SAAS,sCAAgB;AAAN,QACrB,CAAC;AAAA,MACH,CAAC;AAAA,IACH,CAAC,CAAC;AAAA;AAAA,IAEF,MAAM,qCAAiB,CAAC,mCAAe,CAAC,CAAC,CAAC,CAAC;AAAA;AAAA,IAE3C,YAAY,mCAAe,CAAC,CAAC,CAAC;AAAA;AAAA,IAE9B,YAAY,mCAAe,CAAC,CAAC,CAAC;AAAA;AAAA,IAE9B,WAAW,sCAAgB;AAAN;AAAA,IAErB,SAAS,mCAAe,CAAC;AAAA;AAAA,MAEvB,WAAW,sCAAgB;AAAN,IACvB,CAAC;AAAA,EACH,CAAC,EAAE;AAAA;AAAA,EAEH,UAAU,oCAAc;AAAJ;AAAA,EAEpB,eAAe,sCAAgB;AAAN;AAAA,EAEzB,SAAS,oCAAc;AAAJ;AAAA,EAEnB,mBAAmB,oCAAc;AACnC;AAEA,MAAM,eAAe;AAAA,EACnB,SAAS;AAAA,EACT,mBAAmB;AAAA,EACnB,eAAe;AAAA,EACf,UAAU;AACZ;AAEA,uDAAe,KAAK,EAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACjNgB;AACf;AAKtB,MAAM,eAAe,4CAAa,CAAC;AAAA,EA6BjC,gBAAgB;AACd,UAAM;AAAA,MACJ;AAAA,MAAO;AAAA,MAAW;AAAA,MAAQ;AAAA,IAC5B,IAAI,KAAK;AACT,UAAM,UAAU,KAAK,MAAM,GAAG;AAC9B,UAAM,aAAa,SAAS,OAAO,MAAM,GAAG,IAAI,CAAC;AAEjD,QAAI,aAAa,QAAQ,IAAI,WAAS,YAAY,KAAK,EAAE;AACzD,UAAM,UAAU,WAAW,IAAI,aAAW,mBAAmB,OAAO,EAAE;AAEtE,QAAI,OAAO;AACT,iBAAW,KAAK,kBAAkB,KAAK,EAAE;AAAA,IAC3C;AAEA,QAAI,WAAW;AACb,mBAAa,WAAW,OAAO,UAAU,MAAM,GAAG,CAAC;AAAA,IACrD;AAEA,eAAW,KAAK,SAAS;AACzB,iBAAa,WAAW,OAAO,WAAW,CAAC,CAAC;AAE5C,WAAO,WAAW,KAAK,GAAG;AAAA,EAC5B;AAAA,EAEA,SAAS;AACP,UAAmC,UAAK,OAAhC,YAAU,GA5DtB,IA4DuC,IAAV,uBAAU,IAAV,CAAjB,YAAU;AAElB,WACE,uDAAC,kDAAQ,QAAR,EAAe,WAAW,KAAK,cAAc,GAAG,OAC7C,QACJ;AAAA,EAEJ;AACF;AA7DE,mBADI,QACG,aAAY;AAAA;AAAA;AAAA;AAAA;AAAA,EAKjB,OAAO,sCAAgB;AAAN;AAAA,EAEjB,WAAW,sCAAgB;AAAN;AAAA;AAAA;AAAA,EAIrB,IAAI,sCAAgB;AAAN;AAAA;AAAA;AAAA,EAId,MAAM,sCAAgB,CAAC;AAAA;AAAA;AAAA;AAAA,EAIvB,QAAQ,sCAAgB;AAAN,EAClB,UAAU,uCAAmB,CAAC;AAAA,IAC5B,uCAAiB;AAAP,IACV,sCAAgB;AAAN,IACV,sCAAgB;AAAN,IACV,oCAAc;AAAJ,EACZ,CAAC;AACH;AAqCF,oDAAe,MAAM,EAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACtEe;AACf;AAIP,MAAM,OAAG,SAAS,4CAAa,CAAC;AAAA,EAY7C,gBAAgB;AACd,UAAM,EAAE,WAAW,UAAU,IAAI,KAAK;AACtC,QAAI,WAAW,CAAC,SAAS;AAEzB,QAAI,WAAW;AACb,eAAS,KAAK,YAAY;AAC1B,eAAS,KAAK,qBAAqB;AAAA,IACrC;AAEA,QAAI,WAAW;AACb,iBAAW,SAAS,OAAO,UAAU,MAAM,GAAG,CAAC;AAAA,IACjD;AAEA,WAAO,SAAS,KAAK,GAAG;AAAA,EAC1B;AAAA,EAEA,SAAS;AACP,UAII,UAAK,OAHP;AAAA;AAAA,MACA;AAAA,IApCN,IAsCQ,IADC,mBACD,IADC;AAAA,MAFH;AAAA,MACA;AAAA;AAIF,WACE,uDAAC,4CAAQ,OAAR,EAAc,WAAW,KAAK,cAAc,MACzC,QACJ;AAAA,EAEJ;AACF;AAxCE,gBADmB,OAAG,EACf,aAAY;AAAA,EACjB,UAAU,uCAAmB,CAAC;AAAA,IAC5B,uCAAiB;AAAP,IACV,oCAAc;AAAJ,EACZ,CAAC;AAAA;AAAA,EAED,WAAW,sCAAgB;AAAN;AAAA,EAErB,WAAW,oCAAc;AAC3B;;;ACf4B;AAEvB,MAAM,kBAAkB,gDAAa,CAAC;;;ACFI;AAC3B;AAEU;AACf;AAEjB,SAAS,aAAa,OAAO;AAC3B,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI;AACJ,QAAM,oBAAoB,8CAAW,CAAC,CAAC,iBAAiB,cAAc;AACpE,oBAAgB,aAAa,UAAU,SAAS;AAEhD,QAAI;AAAS,cAAQ,QAAQ;AAAA,EAC/B,GAAG,CAAC,CAAC;AAEL,SACE,uDAAC,eAAe,CAAC,UAAhB,MAEG,CAAC,oBACC;AAAA,IAAC;AAAA;AAAA,MACC,SAAS,MAAM,kBAAkB,iBAAiB,KAAK;AAAA,MACvD,SAAS,MAAM;AAAA,MAAC;AAAA;AAAA,IAGd,qBACI,+CAAY,CAAC,oBAAoB,CAAC,CAAC,IAEnC,uDAAC,OAAE,MAAY,UAEX,YACG,gBAAgB,iBAAiB,YACjC,gBAAgB,gBACf,uDAAC,eAAI,IAAC,MAAK,SAAQ,IACnB,MAEN,uDAAC,cACE,SAAS,QACZ,CACF;AAAA,EAGR,CAGN;AAEJ;AAEA,aAAa,YAAY;AAAA,EACvB,UAAU,uCAAmB,CAAC;AAAA,IAC5B,uCAAiB;AAAP,IACV,oCAAc;AAAJ,IACV,sCAAgB;AAAN,EACZ,CAAC;AAAA,EACD,oBAAoB,uCAAmB,CAAC;AAAA,IACtC,qCAAiB,CAAC,oCAAc;AAAA,IAChC,oCAAc;AAAJ,IACV,uCAAiB;AAAP,EACZ,CAAC;AAAA,EACD,UAAU,sCAAgB;AAAN,EACpB,MAAM,sCAAgB;AAAN,EAChB,QAAQ,sCAAgB;AAAN,EAClB,SAAS,oCAAc;AAAJ,EACnB,OAAO,sCAAgB;AACzB;AAEA,sDAAe,YAAY,EAAC;;;;;;;;;;;;;;;;;;;ACvErB;AACc;AACC;AACG;AACN;AACa;AAEhC,MAAM,iBAAiB,wCAAS,CAAC;AAAA,EAC/B,OAAO,kBAAkB,IAAI,eAAe;AAC1C,UAAM,cAAc,OAAO;AAC3B,UAAM,SAAS,GAAG,sBAAsB;AACxC,UAAM,YAAY,OAAO,OAAO;AAEhC,WAAO,aAAa;AAAA,EACtB;AAAA,EAEA,OAAO,mBAAmB,IAAI,gBAAgB;AAC5C,UAAM,eAAe,OAAO;AAC5B,UAAM,SAAS,GAAG,sBAAsB;AACxC,UAAM,WAAW,GAAG;AACpB,UAAM,aAAa,OAAO,MAAM,WAAW;AAE3C,WAAO,cAAc;AAAA,EACvB;AAAA,EAEA,YAAY,OAAO;AACjB,UAAM,KAAK;AAEX,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,IACF,IAAI,KAAK;AAET,SAAK,QAAQ;AAAA,MACX,QAAQ;AAAA,MACR,cAAc,gBAAgB;AAAA,IAChC;AAEA,SAAK,cAAc,4CAAS,CAAC;AAC7B,SAAK,kBAAkB,4CAAS,CAAC;AACjC,SAAK,oBAAoB,4CAAS,CAAC;AACnC,SAAK,eAAe,KAAK,aAAa,KAAK,IAAI;AAC/C,SAAK,iBAAiB,KAAK,eAAe,KAAK,IAAI;AACnD,SAAK,qBAAqB,KAAK,mBAAmB,KAAK,IAAI;AAAA,EAC7D;AAAA,EAEA,oBAAoB;AAClB,aAAS,iBAAiB,aAAa,KAAK,kBAAkB;AAE9D,QAAI,KAAK,gBAAgB,SAAS;AAChC,WAAK,UAAU;AAAA,IACjB;AAAA,EACF;AAAA,EAEA,mBAAmB,WAAW;AAC5B,UAAM;AAAA,MACJ;AAAA,IACF,IAAI,KAAK;AACT,UAAM;AAAA,MACJ;AAAA,IACF,IAAI,KAAK;AAET,QAAI,KAAK,gBAAgB,SAAS;AAChC,WAAK,UAAU;AAAA,IACjB;AAEA,QACE,CAAC,UAAU,QACR,SAAS,QACT,CAAC,QACJ;AACA,WAAK,eAAe;AAAA,IACtB;AAEA,QACE,UAAU,QACP,SAAS,SACT,QACH;AACA,WAAK,cAAc;AAAA,IACrB;AAAA,EACF;AAAA,EAEA,uBAAuB;AACrB,aAAS,oBAAoB,aAAa,KAAK,kBAAkB;AAAA,EACnE;AAAA,EAEA,mBAAmB,OAAO;AACxB,QACE,KAAK,gBAAgB,WAAW,CAAC,KAAK,gBAAgB,QAAQ,SAAS,MAAM,MAAM,KAChF,KAAK,YAAY,WAAW,CAAC,KAAK,YAAY,QAAQ,SAAS,MAAM,MAAM,GAC9E;AACA,WAAK,cAAc;AAAA,IACrB;AAAA,EACF;AAAA,EAEA,aAAa,QAAQ,WAAW;AAC9B,UAAM,EAAE,eAAe,SAAS,IAAI,KAAK;AACzC,UAAM,UAAU;AAAA,MACd,cAAc;AAAA,MACd,mBAAmB;AAAA,IACrB;AAEA,QAAI,eAAe;AACjB,cAAQ,SAAS;AAAA,IACnB;AAEA,SAAK,SAAS,OAAO;AAErB,QAAI,YAAY,OAAO,aAAa,YAAY;AAC9C,eAAS,MAAM;AAAA,IACjB;AAAA,EACF;AAAA,EAEA,YAAY;AACV,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,IACF,IAAI,KAAK;AAET,UAAM,aAAa,KAAK,gBAAgB;AAExC,QAAI,QAAQ;AACV,iBAAW,MAAM,MAAM,GAAG,OAAO,GAAG;AACpC,iBAAW,MAAM,OAAO,GAAG,OAAO,IAAI;AACtC;AAAA,IACF;AAEA,UAAM,YAAY,KAAK;AAAA,MACrB,SAAS,gBAAgB;AAAA,MACzB,SAAS,KAAK;AAAA,MACd,OAAO;AAAA,IACT;AACA,UAAM,KAAK,KAAK,YAAY;AAC5B,UAAM,WAAW,GAAG;AACpB,UAAM,iBAAiB,aAAa,WAAW,eAAe;AAC9D,UAAM,gBAAgB,aAAa,WAAW,cAAc;AAC5D,UAAM,iBAAiB,GAAG,sBAAsB;AAChD,UAAM,EAAE,MAAM,IAAI,IAAI;AACtB,QAAI,YAAY;AAChB,QAAI,aAAa;AAGjB,QAAI,SAAS,mBAAmB,IAAI,cAAc,GAAG;AACnD,kBAAY,MAAM,YAAY;AAAA,IAChC,OAAO;AACL,kBAAY,MAAM,YAAY,iBAAiB;AAAA,IACjD;AAEA,QAAI,SAAS,kBAAkB,IAAI,aAAa,GAAG;AACjD,mBAAa;AAAA,IACf,OAAO;AACL,mBAAa,OAAO,GAAG,cAAc;AAAA,IACvC;AAEA,QAAI,aAAa,YAAY;AAC3B,iBAAW,MAAM,MAAM,GAAG,SAAS;AACnC,UAAI,YAAY,SAAS;AACvB,mBAAW,MAAM,OAAO,GAAG,UAAU;AAAA,MACvC;AAAA,IACF;AACA,QAAI,YAAY,SAAS;AACvB,iBAAW,MAAM,WAAW,GAAG,KAAK,kBAAkB,QAAQ,WAAW;AAAA,IAC3E;AAAA,EACF;AAAA,EAEA,uBAAuB;AACrB,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,mBAAmB;AAAA,IACrB,IAAI,KAAK;AACT,QAAI,aAAa,CAAC,kBAAkB,cAAc;AAElD,eAAW,KAAK,SAAS,YAAY,SAAS,EAAE;AAEhD,QAAI,WAAW;AACb,mBAAa,WAAW,OAAO,UAAU,MAAM,GAAG,CAAC;AAAA,IACrD;AAEA,QAAI,UAAU;AACZ,iBAAW,KAAK,kBAAkB;AAClC,iBAAW,KAAK,eAAe,qBAAqB,YAAY,KAAK,sBAAsB;AAAA,IAC7F;AAEA,WAAO,WAAW,KAAK,GAAG;AAAA,EAC5B;AAAA,EAEA,gBAAgB;AACd,UAAM;AAAA,MACJ;AAAA,IACF,IAAI,KAAK;AACT,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,IAAI,KAAK;AACT,QAAI,aAAa,CAAC,qBAAqB,cAAc;AAErD,QAAI,WAAW;AACb,iBAAW,KAAK,0BAA0B;AAAA,IAC5C;AAEA,QAAI,QAAQ;AACV,iBAAW,KAAK,QAAQ;AAAA,IAC1B;AAEA,QAAI,gBAAgB;AAClB,mBAAa,WAAW,OAAO,eAAe,MAAM,GAAG,CAAC;AAAA,IAC1D;AAEA,QAAI,SAAS;AACX,iBAAW,KAAK,qBAAqB;AAAA,IACvC;AAEA,QAAI,kBAAkB;AACpB,iBAAW,KAAK,sBAAsB;AAAA,IACxC;AAEA,QAAI,aAAa,YAAY;AAC3B,iBAAW,KAAK,wBAAwB;AAAA,IAC1C;AAEA,WAAO,WAAW,KAAK,GAAG;AAAA,EAC5B;AAAA,EAEA,cAAc;AACZ,UAAM,EAAE,UAAU,qBAAqB,IAAI,KAAK;AAChD,UAAM,EAAE,kBAAkB,IAAI,KAAK;AAEnC,QAAI,CAAC,wBAAwB,qBAAqB,kBAAkB,OAAO;AACzE,aAAO,kBAAkB;AAAA,IAC3B;AAEA,WAAO;AAAA,EACT;AAAA,EAEA,gBAAgB;AACd,UAAM,EAAE,QAAQ,IAAI,KAAK;AAEzB,SAAK,SAAS;AAAA,MACZ,QAAQ;AAAA,IACV,GAAG,MAAM;AACP,UAAI,SAAS;AACX,gBAAQ;AAAA,MACV;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAEA,iBAAiB;AACf,UAAM;AAAA,MACJ;AAAA,IACF,IAAI,KAAK;AACT,QAAI,QAAQ;AACV,WAAK,cAAc;AAEnB;AAAA,IACF;AAEA,SAAK,SAAS;AAAA,MACZ,QAAQ;AAAA,IACV,CAAC;AAAA,EACH;AAAA,EAEA,SAAS;AACP,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,WAAW;AAAA,MACX;AAAA,IACF,IAAI,KAAK;AACT,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,IACF,IAAI,KAAK;AACT,UAAM,qBAAqB,mBAAmB,QAAQ;AACtD,WACE;AAAA,MAAC;AAAA;AAAA,QACC,WAAW,KAAK,qBAAqB;AAAA,QACrC,KAAK,KAAK;AAAA;AAAA,MAGR,QAEI,uDAAC,WAAM,WAAU,wBACd,KACH,IAEA;AAAA,MAGJ,oBAEI;AAAA,QAAC,iBAAM;AAAN;AAAA,UACC,WAAW,yBAA0B,SAAU,mCAAmC,GAAG,IAAI,YAAY;AAAA,UACrG,OAAO,YAAY;AAAA,UACnB,SAAS,KAAK;AAAA,UACd,UAAU,mBAAmB,iBAAiB;AAAA,UAC9C,cAAa;AAAA,UACb,MAAM,WAAW;AAAA,UACjB,MAAK;AAAA,UACL;AAAA,UACA,KAAK,KAAK;AAAA;AAAA,QAER,kBAAkB,KAAK,YAAY;AAAA,MACvC,IAEA;AAAA,MAGJ,SACI,yCAAqB;AAAZ,QACT;AAAA,UAAC,eAAe,CAAC;AAAA,UAAhB;AAAA,YACC,OAAO;AAAA,cACL,cAAc,KAAK;AAAA,cACnB;AAAA,cACA;AAAA,YACF;AAAA;AAAA,UAGE,SAEI;AAAA,YAAC;AAAA;AAAA,cACC,WAAW,KAAK,cAAc;AAAA,cAC9B,KAAK,KAAK;AAAA,eAEL,aAAa;AAAA,cACd,OAAO;AAAA,gBACL;AAAA,cACF;AAAA,YACF;AAAA,YAIC,OAAO,aAAa,aACjB,SAAS;AAAA,cACT,eAAe,KAAK,cAAc,KAAK,IAAI;AAAA,YAC7C,CAAC,IACC;AAAA,UAER,IAEA;AAAA,QAER;AAAA,QACA,SAAS,cAAc,YAAY,MAAM;AAAA,MAC3C,IACE;AAAA,IAER;AAAA,EAEJ;AACF;AAEA,SAAS,YAAY;AAAA,EACnB,UAAU,sCAAgB;AAAN,EACpB,UAAU,uCAAmB,CAAC;AAAA,IAC5B,uCAAiB;AAAP,IACV,oCAAc;AAAJ,IACV,sCAAgB;AAAN,IACV,oCAAc;AAAJ,EACZ,CAAC;AAAA,EACD,eAAe,oCAAc;AAAJ,EACzB,cAAc,sCAAgB;AAAN,EACxB,SAAS,sCAAgB;AAAN,EACnB,cAAc,sCAAgB;AAAN,EACxB,UAAU,sCAAgB;AAAN,EACpB,UAAU,uCAAmB,CAAC;AAAA,IAC5B,oCAAc;AAAJ,IACV,uCAAiB;AAAP,IACV,sCAAgB;AAAN,EACZ,CAAC;AAAA,EACD,gBAAgB,uCAAmB,CAAC;AAAA,IAClC,oCAAc;AAAJ,IACV,uCAAiB;AAAP,IACV,sCAAgB;AAAN,EACZ,CAAC;AAAA,EACD,UAAU,oCAAc;AAAJ,EACpB,WAAW,sCAAgB;AAAN,EACrB,SAAS,sCAAgB;AAAN,EACnB,UAAU,oCAAc;AAAJ,EACpB,kBAAkB,oCAAc;AAAJ,EAC5B,OAAO,uCAAmB,CAAC;AAAA,IACzB,qCAAiB,CAAC,oCAAc;AAAA,IAChC,oCAAc;AAAJ,IACV,uCAAiB;AAAP,IACV,oCAAc;AAAJ,IACV,sCAAgB;AAAN,EACZ,CAAC;AAAA,EACD,gBAAgB,sCAAgB;AAAN,EAC1B,SAAS,oCAAc;AAAJ,EACnB,UAAU,oCAAc;AAAJ,EACpB,MAAM,oCAAc;AAAJ,EAChB,QAAQ,wCAAoB,CAAC,MAAM;AAAA,EACnC,UAAU,sCAAgB;AAAN,EACpB,cAAc,sCAAgB;AAAN,EACxB,kBAAkB,oCAAc;AAAJ,EAC5B,sBAAsB,oCAAc;AAAJ,EAChC,mBAAmB,oCAAc;AAAJ,EAC7B,eAAe,oCAAc;AAAJ,EACzB,WAAW,sCAAgB;AAAN,EACrB,kBAAkB,sCAAgB;AACpC;AAEA,SAAS,eAAe;AAAA,EACtB,eAAe;AAAA,EACf,kBAAkB;AAAA,EAClB,mBAAmB;AAAA,EACnB,eAAe;AAAA,EACf,MAAM;AACR;AAEA,SAAS,OAAO,eAAY;AAE5B,0DAAe,QAAQ,EAAC;;;;;;AC9axB,MAAM,kCAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAC;AACb;AAEN;AACM;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACgB;AAEvB,oBAAU,CAAC,aAAa,wBAAwB,2BAAU;AAE1D,SAAS,WAAW,OAAO;AACzB,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI;AACJ,QAAM,UAAU;AAAA,IACd;AAAA,IACA;AAAA,IACA,GAAI,QAAQ,MAAM,MAAM,GAAG,EAAE,IAAI,CAAC,MAAM,mBAAmB,CAAC,EAAE,IAAI,CAAC;AAAA,IACnE,cAAc;AAAA,IACd,SAAS;AAAA,EACX,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AAE1B,QAAM,kBAAkB,oDACnB,aACA,qBAAqB,EAAE,WAAW,MAAM;AAG7C,QAAM,qBAAqB,8CAAW,CAAC,MACrC,SAAS,UAAU,UAAU,UAAU,UAEnC,uDAAC,OAAE,WAAU,qCACV,KACH,IAEA,MACH,CAAC,KAAK,CAAC;AAEV,QAAM,iBAAiB,8CAAW,CAAC,MAAM;AACvC,QAAI;AAAY,aAAO,EAAE,WAAW,WAAW;AAC/C,WAAO,CAAC;AAAA,EACV,GAAG,CAAC,UAAU,CAAC;AAEf,QAAM,mBAAmB,8CAAW,CAAC,MAAM;AACzC,QAAI;AAAY,aAAO,EAAE,WAAW,eAAe,UAAU,WAAW;AACxE,WAAO,CAAC;AAAA,EACV,GAAG,CAAC,UAAU,CAAC;AAEf,QAAM,iBAAiB,8CAAW,CAAC,CAAC,aAAa;AAC/C,QAAI;AAAU,eAAS,QAAQ;AAAA,EACjC,GAAG,CAAC,QAAQ,CAAC;AAEb,QAAM,eAAe,8CAAW,CAAC,MAAM;AACrC,QAAI;AAAQ,aAAO,KAAK;AAAA,EAC1B,GAAG,CAAC,QAAQ,KAAK,CAAC;AAElB,SACE,uDAAC,SAAI,WAAW,WAEZ,QACI,uDAAC,WAAM,SAAS,IAAI,OAAO,eAAe,KAAK,KAAO,IACtD,MAEN,uDAAC,SAAI,WAAU,6BAA4B,OAAO,iBAAiB,KACjE;AAAA,IAAC,8BAAS;AAAT;AAAA,MACC,WAAU;AAAA,OACN,QAFL;AAAA,MAGC,UAAU;AAAA,MACV,QAAQ;AAAA,MACR,OAAM;AAAA,MACN,aAAa,EAAE,iBAAiB,KAAK;AAAA,MACrC,UAAU,YAAY;AAAA,MACtB,QAAQ,CAAC,mBAAmB;AAE1B,uBAAe,UAAU,MAAM,SAAS;AAExC,iBAAS,iBAAiB,WAAW,MACnC,eAAe,OAAO,CACvB;AAAA,MACH;AAAA,MACA,YAAY;AAAA;AAAA,EACd,GAEE,OACI,uDAAC,OAAE,WAAU,kCAAiC,IAAM,IACpD,MAEJ,mBAAmB,CACvB,CACF;AAEJ;AAEA,WAAW,YAAY;AAAA,EACrB,UAAU,oCAAc;AAAJ,EACpB,UAAU,oCAAc;AAAJ,EACpB,mBAAmB,oCAAc;AAAJ,EAC7B,IAAI,sCAAgB;AAAN,EACd,OAAO,uCAAmB,CAAC;AAAA,IACzB,sCAAgB;AAAN,IACV,oCAAc;AAAJ,EACZ,CAAC;AAAA,EACD,OAAO,uCAAmB,CAAC;AAAA,IACzB,qCAAiB,CAAC,oCAAc;AAAA,IAChC,oCAAc;AAAJ,IACV,uCAAiB;AAAP,IACV,oCAAc;AAAJ,IACV,sCAAgB;AAAN,EACZ,CAAC;AAAA,EACD,YAAY,sCAAgB;AAAN,EACtB,MAAM,sCAAgB;AAAN,EAChB,MAAM,sCAAgB;AAAN,EAChB,MAAM,sCAAgB;AAAN,EAChB,QAAQ,oCAAc;AAAJ,EAClB,UAAU,oCAAc;AAAJ,EACpB,OAAO,sCAAgB;AAAN,EACjB,OAAO,sCAAgB;AAAN,EACjB,YAAY,wCAAoB,CAAC,MAAM;AAAA,EACvC,kBAAkB,sCAAgB;AACpC;AAEA,4DAAe,UAAU,EAAC;;;;;;;;;;;;;;;;;;;;;;;;;;AC9I4B;AACjC;AACC;AAEL;AACE;AAEnB,MAAM,yBAAyB,CAAC,UAAU,MAAM,UAAU;AACxD,MAAI,CAAC,OAAO;AACV,WAAQ,YAAY,OAAQ,CAAC,IAAI;AAAA,EACnC;AAEA,SAAO;AACT;AAEA,MAAqB,YAArB,MAAqB,kBAAiB,wCAAS,CAAC;AAAA,EAC9C,OAAO,YAAY;AACjB,WAAO;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,IACV;AAAA,EACF;AAAA,EAEA,OAAO,WAAW;AAChB,WAAO;AAAA,MACL,QAAQ;AAAA,IACV;AAAA,EACF;AAAA,EAEA,OAAO,aAAa,WAAW,YAAY;AACzC,WAAO,UAAU,KAAK,YAAY,EAAE,QAAQ,UAAU,IAAI;AAAA,EAC5D;AAAA,EAwCA,YAAY,OAAO;AACjB,UAAM,KAAK;AACX,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,IACF,IAAI;AAEJ,SAAK,QAAQ;AAAA,MACX,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,cAAc;AAAA,MACd,qBAAqB,uBAAuB,UAAU,MAAM,KAAK;AAAA,MACjE,YAAY;AAAA,MACZ;AAAA,IACF;AAEA,SAAK,cAAc,4CAAS,CAAC;AAC7B,SAAK,gBAAgB,4CAAS,CAAC;AAC/B,SAAK,WAAW,4CAAS,CAAC;AAC1B,SAAK,UAAU,4CAAS,CAAC;AAEzB,SAAK,aAAa,KAAK,WAAW,KAAK,IAAI;AAC3C,SAAK,UAAU,KAAK,QAAQ,KAAK,IAAI;AACrC,cAAS,WAAW,UAAS,SAAS,KAAK,IAAI;AAC/C,SAAK,qBAAqB,KAAK,mBAAmB,KAAK,IAAI;AAC3D,SAAK,wBAAwB,KAAK,sBAAsB,KAAK,IAAI;AACjE,SAAK,8BAA8B,KAAK,4BAA4B,KAAK,IAAI;AAC7E,SAAK,sBAAsB,KAAK,oBAAoB,KAAK,IAAI;AAC7D,SAAK,wBAAwB,KAAK,sBAAsB,KAAK,IAAI;AACjE,SAAK,qBAAqB,KAAK,mBAAmB,KAAK,IAAI;AAAA,EAC7D;AAAA,EAEA,oBAAoB;AAClB,UAAM,EAAE,KAAK,IAAI,KAAK;AAEtB,QAAI,MAAM;AACR,WAAK,cAAc;AAAA,IACrB;AAEA,SAAK,WAAW;AAAA,EAClB;AAAA,EAEA,uBAAuB;AACrB,SAAK,aAAa;AAAA,EACpB;AAAA,EAEA,OAAO,yBAAyB,WAAW,WAAW;AACpD,QACE,KAAK,UAAU,UAAU,KAAK,MAAM,KAAK,UAAU,UAAU,YAAY,KACtE,UAAU,SAAS,UAAU,MAChC;AACA,aAAO;AAAA,QACL,cAAc,UAAU;AAAA,QACxB,qBAAqB;AAAA,UACnB,UAAU;AAAA,UACV,UAAU;AAAA,UACV,UAAU;AAAA,QACZ;AAAA,QACA,MAAM,UAAU;AAAA,MAClB;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AAAA,EAEA,QAAQ,GAAG;AACT,UAAM,EAAE,MAAM,kBAAkB,IAAI,KAAK;AACzC,UAAM,EAAE,QAAQ,OAAO,IAAI,KAAK;AAChC,UAAM,iBAAiB,KAAK,aAAa;AACzC,QAAI,YAAY,OAAO,OAAO,CAAC,GAAG,KAAK,cAAc,CAAC;AAEtD,QAAI,QAAQ,EAAE,QAAQ,UAAU;AAC9B,kBAAY,OAAO,OAAO,CAAC,GAAG,WAAW,KAAK,cAAc,CAAC;AAAA,IAC/D;AAEA,QAAI,EAAE,QAAQ,SAAS;AACrB,YAAM,aAAc,OAAQ,uBAAuB;AACnD,kBAAY,OAAO,OAAO,CAAC,GAAG,WAAW,KAAK,UAAU,EAAE,MAAM,CAAC;AAAA,IACnE;AAEA,QAAI,qBAAqB,CAAC,EAAE,QAAQ,OAAO,MAAM;AAC/C,kBAAY,OAAO,OAAO,CAAC,GAAG,WAAW,KAAK,mBAAmB,CAAC;AAAA,IACpE;AAEA,QACE,CAAC,UACI,KAAK,SAAS,QAAQ,SACtB,kBACA,eAAe,UACf,EAAE,QAAQ,UACf;AACA,kBAAY,OAAO,OAAO,CAAC,GAAG,WAAW,UAAS,SAAS,CAAC;AAAA,IAC9D;AAEA,QAAI,EAAE,QAAQ,YAAY,QAAQ;AAChC,kBAAY,OAAO,OAAO,CAAC,GAAG,WAAW,UAAS,UAAU,CAAC;AAAA,IAC/D;AAEA,QAAI,UAAU,kBAAkB,CAAC,eAAe,QAAQ;AACtD,kBAAY,OAAO,OAAO,CAAC,GAAG,WAAW,UAAS,UAAU,CAAC;AAAA,IAC/D;AAEA,SAAK,SAAS,mBAAiB,OAAO,OAAO,CAAC,GAAG,eAAe,SAAS,CAAC;AAAA,EAC5E;AAAA,EAEA,iBAAiB;AACf,UAAM,EAAE,WAAW,IAAI,KAAK;AAC5B,UAAM,SAAS,CAAC;AAEhB,QAAI,YAAY;AACd,aAAO,YAAY;AAAA,IACrB;AAEA,WAAO;AAAA,EACT;AAAA,EAEA,mBAAmB;AACjB,UAAM,EAAE,WAAW,IAAI,KAAK;AAC5B,UAAM,SAAS,CAAC;AAEhB,QAAI,YAAY;AACd,aAAO,YAAY,eAAe,UAAU;AAAA,IAC9C;AAEA,WAAO;AAAA,EACT;AAAA,EAEA,gBAAgB;AACd,WAAO;AAAA,MACL,OAAO,KAAK,KAAK,QAAQ,QAAQ;AAAA,IACnC;AAAA,EACF;AAAA,EAEA,iBAAiB,OAAO;AACtB,UAAM,EAAE,oBAAoB,IAAI,KAAK;AACrC,QAAI,WAAW;AAEf,QAAI,MAAM,QAAQ,mBAAmB,GAAG;AACtC,0BAAoB,QAAQ,CAAC,MAAM,UAAU;AAC3C,YAAI,KAAK,OAAO,MAAM,IAAI;AACxB,qBAAW;AAAA,QACb;AAAA,MACF,CAAC;AAAA,IACH,WAAW,qBAAqB;AAC9B,UAAI,oBAAoB,OAAO,MAAM,IAAI;AACvC,mBAAW;AAAA,MACb;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AAAA,EAEA,gBAAgB;AACd,WAAO;AAAA,MACL,YAAY,KAAK,SAAS,QAAQ;AAAA,IACpC;AAAA,EACF;AAAA,EAEA,sBAAsB,OAAO,OAAO;AAClC,UAAM,aAAa,CAAC;AACpB,UAAM;AAAA,MACJ;AAAA,IACF,IAAI,KAAK;AAET,QAAI,WAAW,OAAO;AACpB,iBAAW,KAAK,QAAQ;AAAA,IAC1B;AAEA,QAAI,MAAM,UAAU;AAClB,iBAAW,KAAK,UAAU;AAAA,IAC5B;AAEA,WAAO,WAAW,KAAK,GAAG;AAAA,EAC5B;AAAA,EAEA,0BAA0B;AACxB,UAAM,EAAE,OAAO,IAAI,KAAK;AACxB,UAAM,EAAE,MAAM,MAAM,IAAI,KAAK;AAC7B,UAAM,SAAS,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC;AAE3C,UAAM,aAAa,CAAC,oBAAoB;AAExC,QAAI,QAAQ;AACV,iBAAW,KAAK,4BAA4B;AAAA,IAC9C;AAEA,QAAI,MAAM;AACR,iBAAW,KAAK,8BAA8B;AAAA,IAChD;AAEA,QAAI,OAAO,QAAQ;AACjB,aAAO,QAAQ,CAAC,WAAW;AACzB,mBAAW,KAAK,mBAAmB,MAAM,EAAE;AAAA,MAC7C,CAAC;AAAA,IACH;AAEA,WAAO,WAAW,KAAK,GAAG;AAAA,EAC5B;AAAA,EAEA,gBAAgB;AACd,UAAM;AAAA,MACJ;AAAA,MAAO;AAAA,MAAU;AAAA,MAAO;AAAA,IAC1B,IAAI,KAAK;AACT,UAAM,aAAa,CAAC,kBAAkB,cAAc;AACpD,UAAM,SAAS,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC;AAE3C,QAAI,OAAO;AACT,iBAAW,KAAK,WAAW;AAAA,IAC7B;AAEA,QAAI,YAAY;AACd,iBAAW,KAAK,iCAAiC;AAAA,IACnD;AAEA,QAAI,OAAO,QAAQ;AACjB,aAAO,QAAQ,CAAC,WAAW;AACzB,mBAAW,KAAK,mBAAmB,MAAM,EAAE;AAAA,MAC7C,CAAC;AAAA,IACH;AAEA,QAAI,UAAU;AACZ,iBAAW,KAAK,UAAU;AAAA,IAC5B;AAEA,WAAO,WAAW,KAAK,GAAG;AAAA,EAC5B;AAAA,EAEA,gBAAgB;AACd,UAAM,EAAE,MAAM,IAAI,KAAK;AAEvB,WAAQ,SAAS,UAAU,UAAU,UAAU,UAE3C;AAAA,MAAC;AAAA;AAAA,QACC,WAAU;AAAA;AAAA,MAER;AAAA,IACJ,IAEA;AAAA,EACN;AAAA,EAEA,YAAY;AACV,UAAM,EAAE,UAAU,IAAI,SAAS;AAC/B,UAAM,KAAK,KAAK,YAAY;AAC5B,UAAM,WAAW,GAAG;AACpB,UAAM,UAAU,GAAG;AAEnB,UAAM,SAAS,GAAG,sBAAsB;AACxC,UAAM,EAAE,KAAK,IAAI;AACjB,QAAI,MAAM;AAEV,UAAM,OAAO,MAAM,YAAY;AAE/B,WAAO;AAAA,MACL,KAAK,GAAG,MAAM,CAAC;AAAA,MACf,MAAM,GAAG,IAAI;AAAA,MACb,OAAO,GAAG,OAAO;AAAA,IACnB;AAAA,EACF;AAAA,EAEA,yBAAyB;AACvB,UAAM,EAAE,oBAAoB,IAAI,KAAK;AACrC,UAAM,EAAE,UAAU,aAAa,OAAO,IAAI,KAAK;AAE/C,QAAI,CAAC,qBAAqB;AACxB,aAAO;AAAA,IACT;AAEA,QAAI,uBAAuB,MAAM,QAAQ,mBAAmB,KAAK,CAAC,oBAAoB,QAAQ;AAC5F,aAAO;AAAA,IACT;AAEA,QAAI,uBAAuB,CAAC,MAAM,QAAQ,mBAAmB,KAAK,CAAC,oBAAoB,IAAI;AACzF,aAAO;AAAA,IACT;AAEA,QAAI,MAAM,QAAQ,mBAAmB,KAAK,UAAU;AAClD,aAAO,oBAAoB,OAAO,CAAC,WAAW,OAAO,UAAU,YAAY,MAAM,QAAS,UAAU,oBAAoB,SAAS,IAAK,OAAO,KAAK,EAAE;AAAA,IACtJ;AAEA,QACE,UACG,OAAO,UACP,CAAC,MAAM,QAAQ,mBAAmB,KAAK,CAAC,oBAAoB,MAC/D;AACA,aAAO,OAAO,OAAO,WAAS,MAAM,OAAO,oBAAoB,EAAE,EAAE,CAAC,EAAE;AAAA,IACxE;AAEA,WAAO,oBAAoB;AAAA,EAC7B;AAAA,EAEA,mBAAmB,OAAO;AACxB,UAAM,EAAE,KAAK,kBAAkB,IAAI,KAAK;AACxC,UAAM,EAAE,oBAAoB,IAAI,KAAK;AACrC,UAAM,iBAAiB,KAAK,aAAa;AACzC,UAAM,QAAQ,EAAE,IAAI,KAAK,SAAS,QAAQ,OAAO,MAAM,KAAK,SAAS,QAAQ,MAAM;AAEnF,QAAI,sBAAsB,SAAS,UAAU,IAAI;AAC/C,aAAO;AAAA,IACT;AAEA,UAAM,YAAY,eAAe,KAAK,KAAK;AAC3C,UAAM,gBAAgB,KAAK,iBAAiB,SAAS;AACrD,QAAI,iBAAiB,CAAC;AAEtB,SAAK,SAAS,QAAQ,QAAQ;AAE9B,QAAI,gBAAgB,MAAM,KAAK,kBAAkB,SAAS,GAAG;AAC3D,uBAAiB,KAAK,oBAAoB,aAAa;AAAA,IACzD,WAAW,kBAAkB,IAAI;AAC/B,UAAI,OAAO,oBAAoB,UAAU,KAAK;AAC5C,eAAO;AAAA,MACT;AACA,uBAAiB,KAAK,iBAAiB,SAAS;AAAA,IAClD;AAEA,WAAO;AAAA,EACT;AAAA,EAEA,qBAAqB,OAAO;AAC1B,UAAM,EAAE,oBAAoB,IAAI,KAAK;AACrC,UAAM;AAAA,MACJ;AAAA,MAAU;AAAA,MAAU;AAAA,IACtB,IAAI,KAAK;AACT,UAAM,iBAAiB,KAAK,aAAa;AACzC,UAAM,qBAAqB,eAAe,KAAK;AAC/C,QAAI;AACJ,UAAM,gBAAgB,KAAK,iBAAiB,kBAAkB;AAE9D,QAAI,sBAAsB,UAAU;AAClC,UAAI,gBAAgB,IAAI;AACtB,yBAAiB,KAAK,oBAAoB,aAAa;AAAA,MACzD,OAAO;AACL,YAAI,OAAO,oBAAoB,UAAU,KAAK;AAC5C,iBAAO;AAAA,QACT;AACA,yBAAiB,KAAK,iBAAiB,eAAe,KAAK,CAAC;AAAA,MAC9D;AAAA,IAGF,OAAO;AACL,uBAAiB;AAAA,QACf,qBAAsB,kBAAkB,KAAM,qBAAqB,EAAE,IAAI,KAAK;AAAA,MAChF;AAEA,UAAI,YAAY,OAAO,aAAa,YAAY;AAC9C,iBAAU,kBAAkB,KAAM,qBAAqB,IAAI;AAAA,MAC7D;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AAAA,EAEA,oBAAoB,OAAO;AACzB,UAAM,EAAE,oBAAoB,IAAI,KAAK;AACrC,UAAM,EAAE,SAAS,IAAI,KAAK;AAC1B,UAAM,0BAA0B,KAAK,MAAM,KAAK,UAAU,mBAAmB,CAAC;AAE9E,4BAAwB,OAAO,OAAO,CAAC;AAEvC,QAAI,YAAY,OAAO,aAAa,YAAY;AAC9C,eAAS,wBAAwB,SAAS,0BAA0B,IAAI;AAAA,IAC1E;AAEA,WAAO;AAAA,MACL,qBAAqB;AAAA,MACrB,YAAY;AAAA,IACd;AAAA,EACF;AAAA,EAEA,iBAAiB,OAAO;AACtB,UAAM,EAAE,oBAAoB,IAAI,KAAK;AACrC,UAAM,EAAE,SAAS,IAAI,KAAK;AAC1B,UAAM,0BAA0B,KAAK,MAAM,KAAK,UAAU,mBAAmB,CAAC;AAE9E,4BAAwB,KAAK,KAAK;AAElC,QAAI,YAAY,OAAO,aAAa,YAAY;AAC9C,eAAS,wBAAwB,SAAS,0BAA0B,IAAI;AAAA,IAC1E;AAEA,WAAO;AAAA,MACL,qBAAqB;AAAA,MACrB,YAAY;AAAA,IACd;AAAA,EACF;AAAA,EAEA,kBAAkB,OAAO;AACvB,UAAM,EAAE,OAAO,IAAI,KAAK;AACxB,QAAI,KAAK;AAET,WAAO,QAAQ,CAAC,SAAS;AACvB,UAAI,MAAM,OAAO,KAAK,IAAI;AACxB,aAAK;AAAA,MACP;AAAA,IACF,CAAC;AAED,WAAO;AAAA,EACT;AAAA,EAEA,eAAe;AACb,UAAM,EAAE,QAAQ,WAAW,IAAI,KAAK;AAEpC,QAAI,CAAC,KAAK,SAAS,SAAS;AAC1B,aAAO;AAAA,IACT;AAEA,UAAM,MAAM,OACT;AAAA,MACC,WAAU,aACN,WAAW,OAAO,KAAK,SAAS,QAAQ,MAAM,YAAY,CAAC,IAC3D,UAAS,aAAa,OAAO,KAAK,SAAS,QAAQ,MAAM,YAAY,CAAC;AAAA,IAC5E;AAEF,WAAO;AAAA,EACT;AAAA,EAEA,aAAa;AACX,aAAS,iBAAiB,aAAa,KAAK,kBAAkB;AAAA,EAChE;AAAA,EAEA,eAAe;AACb,aAAS,oBAAoB,aAAa,KAAK,kBAAkB;AAAA,EACnE;AAAA,EAEA,sBAAsB,GAAG;AACvB,UAAM,EAAE,KAAK,IAAI,KAAK;AACtB,QAAI,CAAC,aAAa,SAAS,EAAE,QAAQ,EAAE,GAAG,MAAM,IAAI;AAClD;AAAA,IACF;AAEA,UAAM,EAAE,OAAO,IAAI,KAAK;AACxB,UAAM,iBAAiB,KAAK,aAAa;AACzC,QAAI;AAEJ,MAAE,eAAe;AAEjB,QAAI,EAAE,QAAQ,aAAa;AACzB,UAAI,WAAW,MAAM,WAAW,eAAe,SAAS,GAAG;AACzD,qBAAa;AAAA,MACf,WAAW,SAAS,eAAe,SAAS,GAAG;AAC7C,qBAAa,SAAS;AAAA,MACxB;AAAA,IACF;AAEA,QAAI,EAAE,QAAQ,WAAW;AACvB,UAAI,SAAS,GAAG;AACd,qBAAa,SAAS;AAAA,MACxB,OAAO;AACL,qBAAa,eAAe,SAAS;AAAA,MACvC;AAAA,IACF;AAEA,QAAI,KAAK,cAAc,WAAW,aAAa,GAAG;AAChD,YAAM,aAAa,aAAa,KAAK;AAErC,WAAK,cAAc,QAAQ,YAAa,CAAC,OAAQ,KAAK,YAAY;AAAA,IACpE,WAAW,KAAK,cAAc,SAAS;AACrC,WAAK,cAAc,QAAQ,YAAY;AAAA,IACzC;AAEA,SAAK,SAAS,mBAAkB,+CAC3B,gBAD2B;AAAA,MAE9B,QAAQ;AAAA,MACR,QAAQ;AAAA,IACV,EAAE;AAAA,EACJ;AAAA,EAEA,oBAAoB,OAAO;AAEzB,UAAM,eAAe,KAAK,MAAM,OAAO,KAAK;AAC5C,QAAI,aAAa;AAAU;AAE3B,UAAM,EAAE,UAAU,KAAK,IAAI,KAAK;AAEhC,UAAM,aAAc,OAAQ,uBAAuB;AACnD,UAAM,YAAY,OAAO,OAAO,CAAC,GAAG,KAAK,OAAO,KAAK,UAAU,EAAE,KAAK,CAAC;AAEvE,SAAK,SAAS,CAAC,kBAAkB;AAC/B,UAAI,CAAC,YAAY,CAAC,MAAM;AACtB,kBAAU,SAAS;AAAA,MACrB;AAEA,aAAO,OAAO,OAAO,CAAC,GAAG,eAAe,SAAS;AAAA,IACnD,CAAC;AAAA,EACH;AAAA,EAEA,sBAAsB,OAAO;AAC3B,UAAM,EAAE,SAAS,IAAI,KAAK;AAE1B,QAAI,UAAU;AACZ;AAAA,IACF;AAEA,UAAM,YAAY,KAAK,oBAAoB,KAAK;AAEhD,SAAK,SAAS,mBAAiB,OAAO,OAAO,CAAC,GAAG,eAAe,SAAS,CAAC;AAAA,EAC5E;AAAA,EAEA,mBAAmB,OAAO;AACxB,QACE,KAAK,cAAc,WAAW,CAAC,KAAK,cAAc,QAAQ,SAAS,MAAM,MAAM,KAC5E,KAAK,YAAY,WAAW,CAAC,KAAK,YAAY,QAAQ,SAAS,MAAM,MAAM,GAC9E;AACA,WAAK,SAAS,mBAAiB,OAAO,OAAO,CAAC,GAAG,eAAe,UAAS,UAAU,CAAC,CAAC;AAAA,IACvF;AAAA,EACF;AAAA,EAEA,8BAA8B;AAC5B,UAAM,EAAE,SAAS,IAAI,KAAK;AAE1B,QAAI,UAAU;AACZ;AAAA,IACF;AAEA,SAAK,SAAS,mBAAiB,OAAO,OAAO,CAAC,GAAG,eAAe,UAAS,SAAS,CAAC,CAAC;AAAA,EACtF;AAAA,EAEA,QAAQ;AACN,UAAM,EAAE,UAAU,MAAM,MAAM,IAAI,KAAK;AAEvC,SAAK,SAAS;AAAA,MACZ,qBAAqB,uBAAuB,UAAU,MAAM,KAAK;AAAA,IACnE,CAAC;AAAA,EACH;AAAA,EAEA,aAAa;AACX,QAAI,KAAK,SAAS,SAAS;AACzB,WAAK,SAAS,QAAQ,MAAM;AAAA,IAC9B;AAAA,EACF;AAAA,EAEA,SAAS;AACP,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,IAAI,KAAK;AACT,UAAM;AAAA,MACJ;AAAA,MAAO;AAAA,MAAQ;AAAA,MAAY;AAAA,IAC7B,IAAI,KAAK;AAET,UAAM,iBAAiB,KAAK,aAAa;AAEzC,WACE;AAAA,MAAC,uCAAQ;AAAR;AAAA,MACC,uDAAC,SAAI,WAAW,KAAK,cAAc,KAE/B,QACI,uDAAC,WAAM,SAAS,IAAI,OAAO,KAAK,eAAe,KAAK,KAAO,IAC3D,MAEN;AAAA,QAAC;AAAA;AAAA,UACC,WAAU;AAAA,UACV,OAAO,KAAK,iBAAiB;AAAA;AAAA,QAE7B;AAAA,UAAC;AAAA;AAAA,YACC,WAAW,mBAAoB,OAAQ,iCAAiC,EAAE;AAAA,YAC1E,SAAS,KAAK;AAAA,YACd,WAAW,MAAM;AAAA,YAAC;AAAA,YAClB,KAAK,KAAK;AAAA;AAAA,UAGR,OAEI,uDAAC,uCAAQ,SAEJ,uBAAuB,CAAC,GAAG,IAAI,CAAC,OAAO,UACtC,uDAAC,QAAG,WAAU,QAAO,KAAK,MAAM,MAC9B,uDAAC,YAAO,MAAK,UAAS,SAAS,KAAK,sBAAsB,KAAK,MAAM,KAAK,KACxE,uDAAC,eAAI,IAAC,MAAK,SAAQ,CACrB,GACA,uDAAC,cAAO,MAAM,IAAM,CACtB,CACD,GAEH;AAAA,YAAC;AAAA;AAAA,cACC,WAAU;AAAA,cACV,OAAO;AAAA,gBACL,OAAQ,CAAC,uBAAuB,CAAC,oBAAoB,SAAU,SAAS;AAAA,cAC1E;AAAA;AAAA,aAEE,QAAQ,WAAa,2DAAqB,UAAS,QACnD,kGACE;AAAA,cAAC;AAAA;AAAA,gBACC,WAAU;AAAA,gBACV;AAAA,gBACA,YAAY,CAAC,MAAM;AACjB,sBAAI,EAAE,QAAQ,SAAS;AACrB,sBAAE,eAAe;AAAA,kBACnB;AAAA,gBACF;AAAA,gBACA,SAAS,KAAK;AAAA,gBACd,WAAW,KAAK;AAAA,gBAChB,aAAc,CAAC,uBAAuB,CAAC,oBAAoB,SAAU,cAAc;AAAA,gBACnF,KAAK,KAAK;AAAA,gBACV,OAAO;AAAA,kBACL,OAAQ,CAAC,uBAAuB,CAAC,oBAAoB,SAAU,SAAS,GAAG,KAAK;AAAA,gBAClF;AAAA;AAAA,YACF,GACA;AAAA,cAAC;AAAA;AAAA,gBACC,KAAK,KAAK;AAAA,gBACV,OAAO;AAAA,kBACL,WAAW;AAAA,kBACX,UAAU;AAAA,kBACV,KAAK;AAAA,gBACP;AAAA;AAAA,cAEE;AAAA,YACJ,CACF;AAAA,YAGA,eAAe,SAEX;AAAA,cAAC,iBAAM;AAAN;AAAA,gBACC,WAAU;AAAA,gBACV,UAAS;AAAA,gBACT,UAAQ;AAAA,gBACR,SAAS,KAAK;AAAA;AAAA,YAChB,IAEA;AAAA,UAER,CACF,IAGA;AAAA,YAAC;AAAA;AAAA,cACC,WAAU;AAAA,cACV,SAAS,KAAK;AAAA,cACd,WAAW,MAAM;AAAA,cAAC;AAAA;AAAA,YAEhB,KAAK,uBAAuB;AAAA,YAC9B,uDAAC,eAAI,IAAC,QAAO,SAAQ,MAAK,aAAY;AAAA,UACxC;AAAA,QAGR;AAAA,QAEE,OACI,uDAAC,OAAE,WAAU,kCAAiC,IAAM,IACpD;AAAA,QAEJ,KAAK,cAAc;AAAA,MACvB,CACF;AAAA;AAAA,MAGE,CAAC,sBACG,UAAU,eAAe,SACvB,yCAAqB;AAAZ,QACT;AAAA,UAAC;AAAA;AAAA,YACC,WAAW,KAAK,wBAAwB;AAAA,YACxC,KAAK,KAAK;AAAA,YACV,OAAO,KAAK,UAAU;AAAA;AAAA,UAGpB,CAAC,OAEG,uDAAC,QAAG,WAAU,gCACZ;AAAA,YAAC;AAAA;AAAA,cACC,WAAW;AAAA,cACX,WAAU;AAAA,cACV,SAAS,KAAK;AAAA,cACd,WAAW,KAAK;AAAA,cAChB,KAAI;AAAA,cACJ,KAAK,KAAK;AAAA;AAAA,UACZ,CACF,IAEA;AAAA,UAGJ,eACG,IAAI,CAAC,OAAO,UACX;AAAA,YAAC;AAAA;AAAA,cACC,WAAW,KAAK,sBAAsB,OAAO,KAAK;AAAA,cAClD,SAAS,KAAK,oBAAoB,KAAK,MAAM,KAAK;AAAA,cAClD,WAAW,MAAM;AAAA,cAAC;AAAA,cAClB,KAAK,MAAM;AAAA;AAAA,YAGR,KAAK,iBAAiB,KAAK,IAAI,KAC5B,uDAAC,eAAI,IAAC,MAAK,SAAQ,IACnB;AAAA,YAEN,uDAAC,cACE,KACC,MAAM,IACV;AAAA,UACF,CACD;AAAA,QAEP;AAAA,QACA,SAAS,cAAc,MAAM;AAAA,MAC/B,IACE,OAEF;AAAA,QAAC;AAAA;AAAA,UACC,KAAK,KAAK;AAAA,UACV,WAAW,KAAK,wBAAwB;AAAA,UAExC,uBAAuB,KAAK,sBAAsB,KAAK,IAAI;AAAA,UAE3D,kBAAkB,KAAK,iBAAiB,KAAK,IAAI;AAAA,UACjD;AAAA,UAEA,qBAAqB,KAAK,oBAAoB,KAAK,IAAI;AAAA;AAAA,MACzD;AAAA,IAGR;AAAA,EAEJ;AACF;AAxvBE,qBAlBmB,WAkBZ,aAAY;AAAA,EACjB,mBAAmB,oCAAc;AAAJ,EAC7B,qBAAqB,2CAAqB;AAAX,EAC/B,YAAY,oCAAc;AAAJ,EACtB,UAAU,oCAAc;AAAJ,EACpB,OAAO,sCAAgB;AAAN,EACjB,IAAI,sCAAgB;AAAN,EACd,OAAO,uCAAmB,CAAC;AAAA,IACzB,qCAAiB,CAAC,oCAAc;AAAA,IAChC,oCAAc;AAAJ,IACV,uCAAiB;AAAP,IACV,oCAAc;AAAJ,IACV,sCAAgB;AAAN,EACZ,CAAC;AAAA,EACD,YAAY,sCAAgB;AAAN,EACtB,UAAU,oCAAc;AAAJ,EACpB,KAAK,sCAAgB;AAAN,EACf,MAAM,uCAAmB,CAAC;AAAA,IACxB,oCAAc;AAAJ,IACV,uCAAiB;AAAP,IACV,sCAAgB;AAAN,EACZ,CAAC;AAAA,EACD,UAAU,oCAAc;AAAJ,EACpB,aAAa,sCAAgB;AAAN,EACvB,MAAM,oCAAc;AAAJ,EAChB,OAAO,sCAAgB;AAAN,EACjB,OAAO,uCAAmB,CAAC;AAAA,IACzB,sCAAgB;AAAN,IACV,wCAAoB,CAAC,MAAM;AAAA,IAC3B,wCAAoB,CAAC,KAAK;AAAA,EAC5B,CAAC;AAAA,EACD,QAAQ,wCAAoB,CAAC,KAAK;AACpC;AAEA,qBApDmB,WAoDZ,gBAAe;AAAA,EACpB,mBAAmB;AACrB;AAtDF,IAAqB,WAArB;AAfA;;;ACAmD;AAClC;AACA;AAEjB,SAAS,MAAM,OAAO;AACpB,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,WAAW;AAAA,IACX;AAAA,EACF,IAAI;AACJ,QAAM,kBAAkB;AACxB,QAAM,WAAW,yCAAM,CAAC,IAAI;AAC5B,QAAM,kBAAkB,yCAAM,CAAC,IAAI;AACnC,QAAM,CAAC,YAAY,aAAa,IAAI,2CAAQ,CAAC,EAAE;AAC/C,QAAM,CAAC,YAAY,aAAa,IAAI,2CAAQ,CAAC,GAAG,kBAAkB,EAAE,IAAI;AAExE,WAAS,mBAAmB,KAAK;AAC/B,QAAI,cAAc,KAAK,QAAM,IAAI,MAAM,EAAE,MAAM,EAAE;AAAG;AACpD,UAAM,QAAQ,gBAAgB;AAC9B,UAAM,YAAY;AAClB,kBAAc,GAAG,KAAK,IAAI,MAAM,aAAa,eAAe,IAAI,EAAE,IAAI;AACtE,kBAAc,GAAG;AACjB,gBAAY,oBAAoB,GAAG;AAAA,EACrC;AAEA,WAAS,oBAAoB,KAAK,KAAK;AACrC,QAAI,CAAC;AAAM;AACX,QAAI,QAAQ,MAAM,QAAQ,eAAe,MAAM,QAAQ;AACrD,kBAAY,cAAc,MAAM,MAAM,SAAS,CAAC,EAAE,EAAE;AACpD;AAAA,IACF;AACA,QAAI,QAAQ,SAAS;AACnB,kBAAY,mBAAmB,GAAG;AAClC,yBAAmB,EAAE;AACrB;AAAA,IACF;AACA,QAAI,QAAQ,WAAW;AACrB,kBAAY,mBAAmB;AAC/B;AAAA,IACF;AACA,QAAI,QAAQ,aAAa;AACvB,kBAAY,qBAAqB;AACjC;AAAA,IACF;AACA,QAAI,QAAQ,UAAU;AACpB,kBAAY,kBAAkB;AAC9B;AAAA,IACF;AACA,QAAI,cAAc,SAAS,GAAG,GAAG;AAC/B,kBAAY,WAAW,GAAG;AAC1B,yBAAmB,EAAE;AAAA,IACvB;AAAA,EACF;AAEA,WAAS,gBAAgB;AACvB,gBAAY,kBAAkB;AAAA,EAChC;AAEA,WAAS,UAAU,KAAK,gBAAgB,OAAO;AAC7C,QAAI;AAAU,aAAO,OAAO;AAE5B,UAAM,UAAU;AAAA,MACd;AAAA,MACA,YAAY,aAAa;AAAA,MACzB,iBAAiB;AAAA,IACnB,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AAC1B,WACE;AAAA,MAAC;AAAA;AAAA,QACC,WAAW;AAAA,QACX,OAAO,kBAAkB,WAAW,MAAM;AAAA,QAC1C,MAAK;AAAA,QACL,UAAU,WAAW,OAAO;AAAA,QAC5B,SAAS;AAAA,QACT,YAAY;AAAA;AAAA,MAEX;AAAA,IACH;AAAA,EAEJ;AAEA,WAAS,kBAAkB,GAAG;AAC5B,UAAM,SAAS;AAAA,MACb;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AACA,WAAO,YAAY,GAAG,MAAM;AAAA,EAC9B;AAEA,WAAS,UAAU,GAAG;AACpB,QAAI;AAAa,aAAO,kBAAkB,CAAC;AAE3C,WACE;AAAA,MAAC,eAAI;AAAJ;AAAA,QACC,KAAK,EAAE;AAAA,QACP,OAAM;AAAA;AAAA,MAEN;AAAA,QAAC;AAAA;AAAA,UACC,MAAK;AAAA,UACL,SAAS,CAAC,MAAM;AACd,cAAE,gBAAgB;AAClB,wBAAY,cAAc,EAAE,EAAE;AAAA,UAChC;AAAA;AAAA,QAEA,uDAAC,eAAI,IAAC,MAAK,SAAQ;AAAA,MACrB;AAAA,MACA,uDAAC,UAAK,OAAO,EAAE,QAAQ,EAAE,IAAM;AAAA,IACjC;AAAA,EAEJ;AAEA,WAAS,UAAU;AACjB,WACE,kGACG,MAAM,IAAI,SAAS,GACnB,MAAM,SAAS,OACd,kGACE;AAAA,MAAC;AAAA;AAAA,QACC,WAAU;AAAA,QACV,KAAK;AAAA,QACL,aAAa,MAAM,SAAS,KAAK;AAAA,QACjC;AAAA,QACA,OAAO;AAAA,QACP,OAAO,EAAE,OAAO,MAAM,SAAS,aAAa,OAAO;AAAA,QACnD,UAAU,OAAK,mBAAmB,EAAE,OAAO,KAAK;AAAA,QAChD,WAAW,CAAC,MAAM;AAChB,cAAI,EAAE,QAAQ;AAAS,cAAE,eAAe;AACxC,8BAAoB,EAAE,KAAK,EAAE,OAAO,KAAK;AAAA,QAC3C;AAAA,QACA,SAAS,MAAM,YAAY,iBAAiB;AAAA,QAC5C,QAAQ,CAAC,MAAM;AACb,sBAAY,kBAAkB,EAAE,OAAO,KAAK;AAC5C,cAAI;AAAc,+BAAmB,EAAE;AAAA,QACzC;AAAA;AAAA,IACF,GACA;AAAA,MAAC;AAAA;AAAA,QACC,KAAK;AAAA,QACL,OAAO;AAAA,UACL,WAAW;AAAA,UACX,UAAU;AAAA,UACV,KAAK;AAAA,QACP;AAAA;AAAA,IACF,CACF,CAEJ;AAAA,EAEJ;AAEA,8CAAS,CAAC,MAAM;AACd,QAAI,SAAS,SAAS;AAAS,eAAS,QAAQ,MAAM;AAAA,EACxD,GAAG,CAAC,KAAK,CAAC;AAEV,MAAI,UAAU;AACZ,WAAO,uDAAC,SAAI,WAAU,gCAA8B,UAAU,MAAM,IAAI,OAAK,EAAE,IAAI,EAAE,KAAK,IAAI,CAAC,CAAE;AAAA,EACnG;AAEA,MAAI;AAAM,WAAO,QAAQ;AACzB,MAAI,aAAa;AACf,WAAO,MAAM,WAAW,IAAI,UAAU,aAAa,IAAI,IAAI,MAAM,IAAI,iBAAiB;AAAA,EACxF;AACA,SAAO,MAAM,WAAW,IACpB,UAAU,aAAa,IAAI,IAC3B,UAAU,MAAM,IAAI,OAAK,EAAE,IAAI,EAAE,KAAK,IAAI,CAAC;AACjD;AAEA,+CAAe,KAAK,EAAC;;;AClLY;AACX;AACL;AAEjB,SAAS,SAAI,CAAC,OAAO;AACnB,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,WAAW;AAAA,IACX;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI;AAEJ,8CAAS,CAAC,MAAM;AACd,QAAI,CAAC,QAAQ;AAAS;AACtB,UAAM,gBAAgB,QAAQ,QAAQ,cAAc,SAAS;AAC7D,QAAI;AAAe,oBAAc,eAAe,EAAE,OAAO,MAAM,CAAC;AAAA,EAClE,GAAG,CAAC,UAAU,CAAC;AAEf,WAAS,WAAW,MAAM;AACxB,QAAI,gBAAgB;AAClB,aAAO,eAAe,MAAM;AAAA,QAC1B;AAAA,QAAM;AAAA,QAAa;AAAA,QAAa;AAAA,MAClC,CAAC;AAAA,IACH;AAEA,WACE;AAAA,MAAC;AAAA;AAAA,QACC,KAAK,KAAK;AAAA,QACV,OAAO,KAAK;AAAA,QACZ,WAAW;AAAA,UACT,KAAK,YAAY;AAAA,UACjB,cAAc,KAAK,OAAO,WAAW,MAAM;AAAA,QAC7C,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AAAA,QAC1B,SAAS,MAAM,CAAC,KAAK,YAAY,YAAY,gBAAgB,EAAE,KAAK,CAAC;AAAA,QACrE,YAAY,MAAM;AAAA,QAAC;AAAA;AAAA,MAElB,KAAK,YAAY,uDAAC,eAAI,IAAC,MAAK,SAAQ;AAAA,MACrC,uDAAC,UAAK,WAAU,eAAa,KAAK,IAAK;AAAA,IACzC;AAAA,EAEJ;AAEA,WAAS,wBAAwB;AA/CnC;AAgDI,UAAM,gBAAgB,OAAO,MAAM,OAAK,EAAE,QAAQ;AAClD,UAAM,iBAAiB,OAAO,MAAM,OAAK,CAAC,EAAE,QAAQ;AACpD,UAAM,SAAQ,4CAAW,UAAX,YAAoB;AAClC,UAAM,QAAO,4CAAW,SAAX,YAAmB;AAChC,UAAM,QAAO,4CAAW,SAAX,YAAmB;AAChC,UAAM,SAAS,uCAAW;AAE1B,UAAM,qBAAqB,SAAS,aAAa,SAAS,WAAW,CAAC,gBAAgB,CAAC;AACvF,QAAI,CAAC;AAAoB,aAAO;AAEhC,QAAI,QAAQ;AACV,aAAO,OAAO;AAAA,QACZ;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,GAAG,WAAW;AAAA,IAChB;AACA,WACE;AAAA,MAAC;AAAA;AAAA,QACC,SAAS,MAAM,YAAY,oBAAoB,SAAS,WAAW,CAAC,gBAAgB,cAAc;AAAA,QAClG,WAAW,MAAM;AAAA,QAAC;AAAA;AAAA,OAEhB,SAAS,WAAW,gBAAgB,mBAAmB,uDAAC,eAAI,IAAC,MAAK,SAAQ;AAAA,MAC3E;AAAA,IACH;AAAA,EAEJ;AAEA,SACE,kGACG,CAAC,QAAQ,cACR,uDAAC,SAAI,WAAU,oCACb;AAAA,IAAC;AAAA;AAAA,MACC,WAAS;AAAA,MACT,WAAU;AAAA,MACV,OAAO;AAAA,MACP,UAAU,OAAK,YAAY,iBAAiB,EAAE,OAAO,KAAK;AAAA,MAC1D,WAAW,CAAC,MAAM;AAChB,YAAI,EAAE,QAAQ;AAAU,sBAAY,eAAe;AACnD,YAAI,EAAE,QAAQ;AAAW,sBAAY,gBAAgB;AACrD,YAAI,EAAE,QAAQ;AAAa,sBAAY,kBAAkB;AACzD,YAAI,EAAE,QAAQ;AAAS,sBAAY,cAAc;AAAA,MACnD;AAAA;AAAA,EACF,CACF,GAED,OAAO,SAAS,KACf,uDAAC,QAAG,KAAK,SAAS,WAAU,kCACzB,QAAQ,SAAS,KAChB,sBAAsB,GAEvB,OAAO,IAAI,UAAU,CACxB,CAEJ;AAEJ;AAEA,SAAI,CAAC,YAAY;AAAA,EACf,SAAS,wCAAoB,CAAC,MAAM;AAAA,EACpC,MAAM,oCAAc;AAAJ,EAChB,QAAQ,wCAAoB,CAAC,KAAK;AAAA,EAClC,aAAa,sCAAgB;AAAN,EACvB,YAAY,wCAAoB,CAAC,MAAM;AAAA,EACvC,WAAW,oCAAc;AAAJ,EACrB,gBAAgB,oCAAc;AAAJ,EAC1B,WAAW,uCAAmB,CAAC;AAAA,IAC7B,oCAAc;AAAJ,IACV,mCAAe,CAAC;AAAA,MACd,OAAO,uCAAmB,CAAC;AAAA,QACzB,qCAAiB,CAAC,oCAAc;AAAA,QAChC,oCAAc;AAAJ,QACV,uCAAiB;AAAP,QACV,oCAAc;AAAJ,QACV,sCAAgB;AAAN,MACZ,CAAC;AAAA,MACD,MAAM,mCAAe,CAAC,CAAC,UAAU,UAAU,CAAC;AAAA,MAC5C,MAAM,mCAAe,CAAC,CAAC,UAAU,cAAc,CAAC;AAAA,MAChD,QAAQ,oCAAc;AAAJ,IACpB,CAAC;AAAA,EACH,CAAC;AAAA,EACD,YAAY,oCAAc;AAC5B;AAEA,8CAAe,SAAI,EAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACtI+B;AAC7B;AAEL;AACa;AAEZ;AACD;AAEjB,SAAS,eAAe,OAAO,QAAQ;AACrC,MAAI,IAAI;AACR,MAAI,OAAO,UAAU;AAAU,QAAI,EAAE,IAAI,OAAO,MAAM,MAAM;AAAA,WACnD,CAAC,MAAM,eAAe,MAAM;AAAG,QAAI,iDAAK,QAAL,EAAY,MAAM,MAAM,GAAG;AACvE,MAAI,CAAC;AAAQ,WAAO;AACpB,QAAM,cAAc,OAAO,KAAK,CAAC,OAAO,GAAG,OAAO,EAAE,EAAE;AACtD,SAAO,cAAc,kDAAK,IAAM,eAAgB;AAClD;AAEA,SAAS,iBAAiB,OAAO,QAAQ;AACvC,MAAI,CAAC;AAAO,WAAO,CAAC;AACpB,MAAI,MAAM,QAAQ,KAAK;AAAG,WAAO,MAAM,IAAI,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC;AAC3E,SAAO,CAAC,eAAe,OAAO,MAAM,CAAC;AACvC;AAOA,SAAS,UAAU,IAoChB;AApCgB,eACjB;AAAA,WAAO;AAAA,IACP,QAAQ,aAAa,CAAC;AAAA,IACtB,gBAAgB;AAAA,IAChB,QAAQ;AAAA,IACR;AAAA,IACA,OAAO;AAAA,IACP,gBAAgB,CAAC,KAAK,OAAO;AAAA,IAC7B,eAAe;AAAA,IACf,KAAK;AAAA,IACL,WAAW;AAAA,IACX,cAAc;AAAA,IACd;AAAA,IACA,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,WAAW;AAAA,IACX,oBAAoB;AAAA,IACpB,YAAY;AAAA,IACZ;AAAA,IACA;AAAA,IACA,YAAY;AAAA,IACZ;AAAA,IACA,iBAAiB,MAAM;AAAA,IACvB,WAAW,MAAM;AAAA,IAAC;AAAA,IAClB;AAAA,IACA;AAAA,IACA;AAAA,IACA,yBAAyB;AAAA,IACzB;AAAA,IACA;AAAA,IACA,aAAa;AAAA,IACb,WAAW;AAAA,IACX,mBAAmB,MAAM;AAAA,IAAC;AAAA,IAC1B,mBAAmB;AAAA,EA/DrB,IA6BmB,IAmCd,8BAnCc,IAmCd;AAAA,IAlCH;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAGA,QAAM,MAAM,WAAW,WAAW,YAAY,OAAO,WAAW;AAChE,QAAM,aAAa,sBACf,CAACC,SAAQ,EAAE,YAAY,MACvB;AAAA,IAAC;AAAA;AAAA,MACC,gBAAgBA;AAAA,MAChB,qBAAqB,CAAC,UAAU,YAAY,gBAAgB,EAAE,MAAMA,QAAO,KAAK,EAAE,CAAC;AAAA,MACnF,uBAAuB,MAAM;AAAA,MAAC;AAAA;AAAA,EAChC,IAEA;AAEJ,QAAM,UAAU,yCAAM,CAAC,IAAI;AAC3B,QAAM,qBAAqB,yCAAM,CAAC,IAAI;AACtC,QAAM,cAAc,yCAAM,CAAC,IAAI;AAC/B,QAAM,UAAU,yCAAM,CAAC,IAAI;AAE3B,QAAM,CAAC,OAAO,QAAQ,IAAI,2CAAQ,CAAC,iBAAiB,WAAW,UAAU,CAAC;AAC1E,QAAM,CAAC,QAAQ,SAAS,IAAI,2CAAQ,CAAC,WAAW,IAAI,CAAC,MAAM,eAAe,CAAC,CAAC,CAAC;AAC7E,QAAM,CAAC,aAAa,cAAc,IAAI,2CAAQ,CAAC,EAAE;AACjD,QAAM,CAAC,YAAY,aAAa,IAAI,2CAAQ,CAAC,IAAI;AACjD,QAAM,CAAC,UAAU,WAAW,IAAI,2CAAQ,CAAC,KAAK;AAC9C,QAAM,CAAC,gBAAgB,iBAAiB,IAAI,2CAAQ,CAAC,KAAK;AAC1D,QAAM,CAAC,sBAAsB,uBAAuB,IAAI,2CAAQ,CAAC,EAAE;AAEnE,WAAS,kBAAkB;AACzB,UAAM,SAAS,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC;AAC3C,WAAO,OAAO,IAAI,CAAC,WAAW,mBAAmB,MAAM,EAAE;AAAA,EAC3D;AAEA,WAAS,gBAAgB;AACvB,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA,GAAG,gBAAgB;AAAA,OAClB,SAAS,yBAAyB;AAAA,MACnC,cAAc;AAAA,MACd,YAAY;AAAA,MACZ,cAAc;AAAA,IAChB,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AAAA,EAC5B;AAEA,WAAS,oBAAoB;AAC3B,UAAM,YAAY,CAAC,GAAG,MAAG;AA7G7B,UAAAD,KAAAE;AA6GgC,cAAAA,OAAAF,MAAA,uBAAG,SAAH,gBAAAA,IAAS,kBAAT,gBAAAE,IAAwB,SAAS;AAAA;AAC7D,UAAM,KAAK,eAAe;AAC1B,UAAMC,kBAAiB,OAAO,OAAO,CAAC,MAAM,GAAG,GAAG,YAAY,YAAY,CAAC,CAAC;AAC5E,WAAOA;AAAA,EACT;AAEA,WAAS,eAAe;AACtB,gBAAY,IAAI;AAAA,EAClB;AAEA,WAAS,gBAAgB;AACvB,gBAAY,KAAK;AACjB,QAAI,CAAC;AAAM,wBAAkB,EAAE;AAC/B,kBAAc,IAAI;AAAA,EACpB;AAEA,WAAS,kBAAkB,gBAAgB;AACzC,mBAAe,cAAc;AAC7B,QAAI,cAAc,kBAAkB,EAAE,MAAM,CAAC,OAAO,GAAG,OAAO,WAAW,EAAE,GAAG;AAC5E,oBAAc,IAAI;AAAA,IACpB;AACA,QAAI,kBAAkB,CAAC;AAAU,mBAAa;AAAA,EAChD;AAEA,WAAS,aAAa,WAAW,WAAW;AAC1C,UAAM,aAAa,iBAAiB,WAAW,SAAS;AACxD,4BAAwB,UAAU;AAClC,WAAO,eAAe;AAAA,EACxB;AAEA,WAAS,YAAY,WAAW;AAC9B,aAAS,SAAS;AAClB,aAAS,QAAQ,KAAK,CAAC,OAAQ,UAAU,CAAC,KAAK,OAAQ,SAAS;AAAA,EAClE;AAEA,WAAS,OAAO,KAAK;AACnB,QAAI,CAAC;AAAK;AACV,QAAI,MAAM,UAAU;AAAK;AACzB,QAAI,MAAM,KAAK,CAAC,EAAE,KAAK,MAAM,SAAS,GAAG;AAAG;AAE5C,UAAM,iBAAiB,OAAO,UAAU,CAAC,OAAO,GAAG,SAAS,GAAG;AAC/D,QAAI;AACJ,QAAI,aAAa,CAAC,GAAG,KAAK;AAC1B,QAAI;AAEJ,QAAI,mBAAmB,IAAI;AACzB,UAAI,mBAAmB;AACrB,mBAAW,EAAE,IAAI,KAAK,MAAM,IAAI;AAChC,qBAAa,CAAC,GAAG,OAAO,QAAQ;AAAA,MAClC;AAAA,IACF,OAAO;AACL,uBAAiB;AAAA,QACf,GAAG,OAAO,MAAM,GAAG,cAAc;AAAA,QACjC,iDAAK,OAAO,cAAc,IAA1B,EAA6B,UAAU,KAAK;AAAA,QAC5C,GAAG,OAAO,MAAM,iBAAiB,CAAC;AAAA,MACpC;AACA,iBAAW,OAAO,cAAc;AAChC,mBAAa,CAAC,GAAG,OAAO,OAAO,cAAc,CAAC;AAAA,IAChD;AAEA,QAAI,aAAa,YAAY,QAAQ,KAAK,eAAe,OAAO,UAAU,GAAG;AAC3E,UAAI,gBAAgB;AAClB,kBAAU,cAAc;AAAA,MAC1B;AACA,kBAAY,UAAU;AAAA,IACxB;AAAA,EACF;AAEA,WAAS,UAAU,IAAI;AACrB,QAAI,YAAY,QAAQ;AAAG;AAE3B,UAAM,iBAAiB,OAAO,UAAU,CAAC,OAAO,GAAG,OAAO,EAAE;AAC5D,UAAM,WAAW,MAAM,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE;AAEhD,QAAI,CAAC,eAAe,OAAO,QAAQ;AAAG;AAEtC,QAAI,mBAAmB,IAAI;AACzB,gBAAU;AAAA,QACR,GAAG,OAAO,MAAM,GAAG,cAAc;AAAA,QACjC,iDAAK,OAAO,cAAc,IAA1B,EAA6B,UAAU,MAAM;AAAA,QAC7C,GAAG,OAAO,MAAM,iBAAiB,CAAC;AAAA,MACpC,CAAC;AAAA,IACH;AACA,gBAAY,QAAQ;AAAA,EACtB;AAEA,WAAS,YAAY,EAAE,GAAG,GAAG;AAC3B,UAAM,MAAM,OAAO,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE;AAC1C,QAAI,aAAa;AACjB,QAAI,iBAAiB;AAErB,QAAI,IAAI,UAAU;AAChB,UAAI,CAAC,YAAY,QAAQ,GAAG;AAC1B,qBAAa,MAAM,OAAO,CAAC,MAAM,EAAE,OAAO,IAAI,EAAE;AAChD,yBAAiB,OAAO,IAAI,CAAC,MAAO,EAAE,OAAO,IAAI,KAAK,iDAAK,IAAL,EAAQ,UAAU,MAAM,KAAI,CAAE;AAAA,MACtF;AAAA,IACF,WAAW,MAAM,SAAS,KAAK;AAC7B,mBAAa,CAAC,GAAG,OAAO,GAAG;AAC3B,uBAAiB,OAAO,IAAI,CAAC,MAAO,EAAE,OAAO,IAAI,KAAK,iDAAK,IAAL,EAAQ,UAAU,KAAK,KAAI,CAAE;AAAA,IACrF,WAAW,QAAQ,GAAG;AACpB,mBAAa,CAAC,GAAG;AACjB,uBAAiB,OAAO,IAAI,CAAC,MAAO,iDAAK,IAAL,EAAQ,UAAU,EAAE,OAAO,IAAI,GAAG,EAAE;AAAA,IAC1E;AAEA,QAAI,aAAa,YAAY,GAAG,KAAK,eAAe,OAAO,UAAU,GAAG;AACtE,kBAAY,UAAU;AACtB,gBAAU,cAAc;AAAA,IAC1B;AAEA,QAAI,QAAQ,KAAK,eAAe;AAC9B,oBAAc;AAAA,IAChB;AAAA,EACF;AAEA,WAAS,gBAAgB,UAAU;AACjC,QAAI,OAAO,SAAS;AAAK;AACzB,UAAM,WAAW,WAAW,CAAC,GAAG,MAAM,IAAI,CAAC;AAE3C,QAAI,CAAC,eAAe,OAAO,QAAQ;AAAG;AAEtC,gBAAY,QAAQ;AACpB,cAAU,OAAO,IAAI,CAAC,MAAO,iDAAK,IAAL,EAAQ,SAAS,EAAE,CAAC;AACjD,QAAI;AAAe,oBAAc;AAAA,EACnC;AAEA,WAAS,mBAAmB;AAC1B,UAAM,eAAe,kBAAkB,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,QAAQ;AAClE,QAAI,aAAa,WAAW;AAAG;AAC/B,QAAI,eAAe,QAAQ,aAAa,WAAW,GAAG;AACpD,oBAAc,aAAa,aAAa,SAAS,CAAC,CAAC;AACnD;AAAA,IACF;AACA,UAAM,cAAc,aAAa,UAAU,CAAC,MAAM,EAAE,OAAO,WAAW,EAAE;AACxE,kBAAc,aAAa,cAAc,IAAI,cAAc,IAAI,aAAa,SAAS,CAAC,CAAC;AAAA,EACzF;AAEA,WAAS,qBAAqB;AAC5B,UAAM,eAAe,kBAAkB,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,QAAQ;AAClE,QAAI,aAAa,WAAW;AAAG;AAC/B,QAAI,eAAe,QAAQ,aAAa,WAAW,GAAG;AACpD,oBAAc,aAAa,CAAC,CAAC;AAC7B;AAAA,IACF;AACA,UAAM,cAAc,aAAa,UAAU,CAAC,MAAM,EAAE,OAAO,WAAW,EAAE;AACxE,kBAAc,aAAa,cAAc,aAAa,SAAS,IAAI,cAAc,IAAI,CAAC,CAAC;AAAA,EACzF;AAEA,WAAS,uBAAuB;AAC9B,QAAI,YAAY;AACd,wBAAkB,CAAC,cAAc;AAAA,IACnC,OAAO;AACL,mBAAa;AAAA,IACf;AAAA,EACF;AAEA,WAAS,oBAAoB,GAAG;AAC9B,UAAM,gBAAiB,QAAQ,WAAW,QAAQ,QAAQ,SAAS,EAAE,MAAM,KACrE,YAAY,WAAW,YAAY,QAAQ,SAAS,EAAE,MAAM;AAClE,QAAI,CAAC,eAAe;AAClB,oBAAc;AAAA,IAChB;AAAA,EACF;AAEA,WAAS,eAAe,GAAG;AACzB,QAAI,CAAC;AAAU;AACf,QAAI,CAAC,YAAY;AACf,QAAE,gBAAgB;AAClB;AAAA,IACF;AAEA,UAAM,iBAAiB,QAAQ,QAAQ,cAAc,0CAA0C;AAC/F,QAAI,CAAC;AAAgB;AAErB,UAAM,mBAAmB,mBAAmB,EAAE,UAAU,eAAe,SAAS,EAAE,MAAM;AACxF,QAAI,CAAC;AAAkB,QAAE,gBAAgB;AAAA,EAC3C;AAEA,WAAS,aAAa,SAAS,MAAM;AACnC,QAAI,YAAY,OAAO;AACrB,aAAO,IAAI;AACX,wBAAkB,EAAE;AAAA,IACtB;AAEA,QAAI,YAAY;AAAU,gBAAU,IAAI;AAExC,QAAI,YAAY;AAAgB,wBAAkB,IAAI;AAEtD,QAAI,YAAY,eAAe;AAC7B,UAAI,YAAY;AACd,oBAAY,UAAU;AAAA,MACxB,WAAW,cAAc,SAAS,OAAO,GAAG;AAC1C,eAAO,IAAI;AACX,0BAAkB,EAAE;AAAA,MACtB;AAAA,IACF;AAEA,QAAI,YAAY,iBAAiB;AAC/B,mBAAa;AACb,uBAAiB;AAAA,IACnB;AAEA,QAAI,YAAY,mBAAmB;AACjC,mBAAa;AACb,yBAAmB;AAAA,IACrB;AAEA,QAAI,YAAY;AAAgB,oBAAc;AAE9C,QAAI,YAAY,gBAAgB,cAAc;AAC5C,aAAO,IAAI;AACX,wBAAkB,EAAE;AAAA,IACtB;AAEA,QAAI,YAAY,eAAe;AAC7B,mBAAa;AAAA,IACf;AAAA,EACF;AAEA,WAAS,UAAU,SAAS,MAAM;AAChC,QAAI,QAAQ,WAAW,MAAM;AAAG,mBAAa,QAAQ,MAAM,CAAC,GAAG,IAAI;AAEnE,QAAI,YAAY;AAAgB,kBAAY,KAAK,IAAI;AAErD,QAAI,YAAY;AAAoB,sBAAgB,IAAI;AAExD,QAAI,YAAY;AAAoB,mBAAa;AAEjD,QAAI,YAAY;AAAiB,wBAAkB,IAAI;AAEvD,QAAI,YAAY;AAAiB,oBAAc;AAE/C,QAAI,YAAY;AAAkB,uBAAiB;AAEnD,QAAI,YAAY;AAAoB,yBAAmB;AAEvD,QAAI,YAAY,gBAAgB;AAC9B,UAAI;AAAY,oBAAY,UAAU;AAAA,IACxC;AAAA,EACF;AAEA,8CAAS,CAAC,MAAM;AACd,WAAO,iBAAiB,SAAS,qBAAqB,IAAI;AAC1D,WAAO,MAAM,OAAO,oBAAoB,SAAS,qBAAqB,IAAI;AAAA,EAC5E,GAAG,CAAC,CAAC;AAEL,8CAAS,CAAC,MAAM;AACd,QAAI,WAAW,QAAQ;AACrB,YAAM,YAAY,WAAW,IAAI,CAAC,MAAO,iDACpC,eAAe,CAAC,IADoB;AAAA,QAEvC,UAAU,MAAM,KAAK,CAAC,OAAO,GAAG,OAAO,EAAE,EAAE;AAAA,MAC7C,EAAE;AACF,gBAAU,SAAS;AACnB,eAAS,CAAC,QAAQ,IAAI,IAAI,CAAC,MAAM,UAAU,KAAK,CAAC,OAAO,GAAG,OAAO,EAAE,EAAE,KAAK,CAAC,CAAC;AAAA,IAC/E,WAAW,OAAO,QAAQ;AACxB,gBAAU,CAAC,CAAC;AAAA,IACd;AAAA,EACF,GAAG,CAAC,UAAU,CAAC;AAEf,8CAAS,CAAC,MAAM;AACd,UAAM,WAAW,iBAAiB,WAAW,MAAM;AACnD,aAAS,QAAQ;AACjB,cAAU,CAAC,SAAS,KAAK,IAAI,CAAC,MAAO,iDAChC,eAAe,CAAC,IADgB;AAAA,MAEnC,UAAU,SAAS,KAAK,CAAC,OAAO,GAAG,OAAO,EAAE,EAAE;AAAA,IAChD,EAAE,CAAC;AAAA,EACL,GAAG,CAAC,SAAS,CAAC;AAEd,8CAAS,CAAC,MAAM;AACd,QAAI,CAAC;AAAY,aAAO,MAAM;AAAA,MAAC;AAE/B,UAAM,gBAAgB,mBAAmB,QAAQ,cAAc,gCAAgC;AAC/F,UAAM,eAAe,MAAM;AACzB,oBAAc,YAAY,cAAc;AAAA,IAC1C;AAEA,UAAM,YAAY,IAAI,iBAAiB,YAAY;AACnD,UAAM,YAAY,IAAI,eAAe,YAAY;AAEjD,cAAU,QAAQ,eAAe,EAAE,YAAY,MAAM,WAAW,MAAM,SAAS,KAAK,CAAC;AACrF,cAAU,QAAQ,aAAa;AAE/B,WAAO,MAAM;AACX,gBAAU,WAAW;AACrB,gBAAU,WAAW;AAAA,IACvB;AAAA,EACF,CAAC;AAED,QAAM,iBAAiB,kBAAkB;AACzC,QAAM,uBAAuB;AAAA,IAC3B;AAAA,IACA,cAAc;AAAA,IACd,kCAAkC,iBAAiB,aAAa,WAAW;AAAA,EAC7E,EAAE,KAAK,GAAG;AACV,SACE;AAAA,IAAC;AAAA;AAAA,MACC,KAAK;AAAA,MACL,UAAU,WAAW,OAAO;AAAA,MAC5B;AAAA,OACI,YAJL;AAAA,MAKC,WAAW,cAAc;AAAA;AAAA,IAExB,SACC,uDAAC,WAAM,OAAO,EAAE,WAAW,cAAc,OAAO,KAAI,KAAM;AAAA,IAE3D,CAAC,YACA;AAAA,MAAC;AAAA;AAAA,QACC,WAAU;AAAA,QACV,OAAO,EAAE,WAAW,eAAe,UAAU,WAAW;AAAA;AAAA,MAExD,uDAAC,SAAI,WAAU,oBAAmB,KAAK,sBACrC;AAAA,QAAC;AAAA;AAAA,UACC,WAAW;AAAA,UACX,SAAS;AAAA,UACT,MAAK;AAAA;AAAA,QAEL;AAAA,UAAC,QAAK;AAAL;AAAA,YACC;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA,OAAO;AAAA,YACP;AAAA,YACA;AAAA;AAAA,QACF;AAAA,MACF,GACC,0BACC;AAAA,QAAC;AAAA;AAAA,UACC,WAAW,0CAA0C,iBAAiB,uDAAuD,EAAE;AAAA,UAC/H,MAAK;AAAA,UACL,UAAU,WAAW,KAAK;AAAA,UAC1B,SAAS;AAAA,UACT,YAAY;AAAA;AAAA,QAEX,aAEG,uDAAC,eAAI,IAAC,MAAM,iBAAiB,wBAAwB,qBAAqB,IAG1E,uDAAC,eAAI,IAAC,QAAO,SAAQ,MAAK,aAAY;AAAA,MAE5C,CAEJ;AAAA,MACC,aAAa,CAAC,QAAQ,eAAe,SAAS,MAC7C;AAAA,QAAC,4BAAiB;AAAjB;AAAA,UACC,SAAS;AAAA,UACT,MAAK;AAAA,UACL,WAAW,mDAAmD,gBAAgB,EAAE,KAAK,GAAG,CAAC;AAAA,UACzF,KAAK;AAAA,UACL,aAAY;AAAA,WACR,0BANL;AAAA,UAOC;AAAA;AAAA,QAEC,aACC,WAAW,gBAAgB;AAAA,UACzB;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA,aAAa;AAAA,QACf,CAAC,IAED;AAAA,UAAC,OAAI;AAAJ;AAAA,YACC;AAAA,YACA;AAAA,YACA,QAAQ;AAAA,YACR;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA;AAAA,QACF;AAAA,MAEJ;AAAA,MAED,QACC,uDAAC,OAAE,WAAU,kCAAgC,IAAK;AAAA,OAEjD,SAAS,UAAU,UAAU,UAAU,WAAY,QAAQ,oBAAoB,MAChF,uDAAC,OAAE,WAAU,qCAAmC,SAAS,oBAAqB;AAAA,IAElF;AAAA,IAED,YACC,uDAAC,aACC;AAAA,MAAC,QAAK;AAAL;AAAA,QACC;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA;AAAA,IACF,CACF;AAAA,EAEJ;AAEJ;AAEA,UAAU,YAAY;AAAA;AAAA,EAEpB,mBAAmB,oCAAc;AAAJ;AAAA;AAAA,EAG7B,qBAAqB,2CAAqB;AAAX;AAAA,EAE/B,YAAY,oCAAc;AAAJ;AAAA,EAEtB,aAAa,oCAAc;AAAJ;AAAA,EAEvB,gBAAgB,oCAAc;AAAJ;AAAA,EAE1B,YAAY,oCAAc;AAAJ,EACtB,UAAU,oCAAc;AAAJ;AAAA,EAEpB,UAAU,oCAAc;AAAJ,EACpB,OAAO,sCAAgB;AAAN,EACjB,OAAO,uCAAmB,CAAC;AAAA,IACzB,qCAAiB,CAAC,oCAAc;AAAA,IAChC,oCAAc;AAAJ,IACV,uCAAiB;AAAP,IACV,oCAAc;AAAJ,IACV,sCAAgB;AAAN,EACZ,CAAC;AAAA,EACD,YAAY,sCAAgB;AAAN;AAAA,EAEtB,KAAK,sCAAgB;AAAN;AAAA,EAEf,UAAU,oCAAc;AAAJ,EACpB,MAAM,uCAAmB,CAAC;AAAA,IACxB,oCAAc;AAAJ,IACV,uCAAiB;AAAP,IACV,sCAAgB;AAAN,EACZ,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA,EAKD,gBAAgB,oCAAc;AAAJ,EAC1B,UAAU,oCAAc;AAAJ,EACpB,aAAa,sCAAgB;AAAN;AAAA;AAAA,EAGvB,MAAM,oCAAc;AAAJ;AAAA,EAEhB,eAAe,qCAAiB,CAAC,sCAAgB;AAAA;AAAA;AAAA,EAGjD,cAAc,oCAAc;AAAJ,EACxB,OAAO,sCAAgB;AAAN;AAAA;AAAA,EAGjB,OAAO,uCAAmB,CAAC;AAAA,IACzB,sCAAgB;AAAN,IACV,wCAAoB,CAAC,KAAK;AAAA,IAC1B,wCAAoB,CAAC,MAAM;AAAA,EAC7B,CAAC;AAAA;AAAA,EAED,QAAQ,wCAAoB,CAAC,KAAK;AAAA;AAAA,EAElC,yBAAyB,wCAAoB,CAAC,MAAM;AAAA;AAAA;AAAA,EAGpD,eAAe,mCAAe,CAAC,CAAC,UAAU,UAAU,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMrD,YAAY,oCAAc;AAAJ;AAAA,EAEtB,wBAAwB,wCAAoB,CAAC,MAAM;AAAA;AAAA,EAEnD,wBAAwB,oCAAc;AAAJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAelC,WAAW,uCAAmB,CAAC;AAAA,IAC7B,oCAAc;AAAJ,IACV,mCAAe,CAAC;AAAA,MACd,OAAO,uCAAmB,CAAC;AAAA,QACzB,qCAAiB,CAAC,oCAAc;AAAA,QAChC,oCAAc;AAAJ,QACV,uCAAiB;AAAP,QACV,oCAAc;AAAJ,QACV,sCAAgB;AAAN,MACZ,CAAC;AAAA,MACD,MAAM,mCAAe,CAAC,CAAC,UAAU,UAAU,CAAC;AAAA,MAC5C,MAAM,mCAAe,CAAC,CAAC,UAAU,cAAc,CAAC;AAAA,MAChD,QAAQ,oCAAc;AAAJ,IACpB,CAAC;AAAA,EACH,CAAC;AAAA;AAAA,EAED,eAAe,oCAAc;AAAJ;AAAA,EAEzB,YAAY,oCAAc;AAAJ;AAAA;AAAA,EAGtB,UAAU,oCAAc;AAAJ;AAAA;AAAA;AAAA,EAIpB,kBAAkB,oCAAc;AAAJ,EAC5B,kBAAkB,sCAAgB;AACpC;AAEA,2DAAe,SAAS,EAAC;;;ACvnBzB,MAAM,kCAA4B;;;;;;;;;;;;;;;;;;;;;;;;ACClC,MAAqF;AACrF,MAA2E;AAC3E,MAAkF;AAClF,MAAqG;AACrG,MAA8F;AAC9F,MAA8F;AAC9F,MAAiG;AACjG;AACA;;AAEA;;AAEA,4BAA4B,6BAAmB;AAC/C,wBAAwB,0CAAa;;AAErC,uBAAuB,+BAAa;AACpC;AACA,iBAAiB,uBAAM;AACvB,6BAA6B,8BAAkB;;AAE/C,aAAa,kCAAG,CAAC,4BAAO;;;;AAI2C;AACnE,OAAO,yDAAe,4BAAO,IAAI,4BAAO,UAAU,4BAAO,mBAAmB,EAAC;;;;;;;;;;;;;;;;;;;;;;ACxBtE;AACe;AACA;AACf;AAEU;AACW;AAE5B,SAAS,WAAW;AAAA,EAClB;AAAA,EACA;AAAA,EACA,WAAW;AAAA,EACX;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,SAAS,CAAC;AAAA,EACV;AAAA,EACA,mBAAmB;AACrB,GAAG;AACD,QAAM,CAAC,gBAAgB,iBAAiB,IAAI,2CAAQ,CAAC,IAAI;AACzD,QAAM,UAAU,yCAAM,CAAC,IAAI;AAE3B,QAAM,YAAY,iBAAW,CAAC,KAAK;AAEnC,QAAM,kBAAkB,8CAAW,CAAC,CAAC,UAAU,gBAAgB;AAC7D,QAAI,CAAC;AAAU,aAAO;AACtB,QAAI,CAAC,MAAM,QAAQ,WAAW;AAAG,aAAO,SAAS,QAAQ,MAAM,YAAY,QAAQ;AAEnF,QAAI,YAAY;AAEhB,QAAI,YAAY,YAAY,UAAU,SAAS,QAAQ;AACrD,kBAAY,YAAY,OAAO,CAAC,MAAM,UAAU,KAAK,QAAQ,MAAM,SAAS,KAAK,EAAE,QAAQ,CAAC;AAE5F,aAAO,UAAU,SAAS;AAAA,IAC5B;AAEA,WAAO,YAAY,SAAS;AAAA,EAC9B,GAAG,CAAC,CAAC;AAEL,QAAM,eAAe,8CAAW,CAAC,CAAC,cAAc;AAC9C,UAAM,aAAa,OAAO,SAAS,UAAU,YAAY,UAAU,CAAC,KAAK;AAEzE,QAAI,CAAC;AAAU;AAEf,QAAI,OAAO,SAAS,SAAS;AAC3B,UAAI,WAAW,WAAW,KAAK,gBAAgB,WAAW,UAAU,GAAG;AACrE,iBAAS,UAAU;AAAA,MACrB;AAAA,IACF,OAAO;AACL,eAAS,UAAU;AAAA,IACrB;AAAA,EACF,GAAG,CAAC,WAAW,UAAU,eAAe,CAAC;AAEzC,8CAAS,CAAC,MAAM;AACd,QAAI,WAAW,QAAQ,WAAW,CAAC,gBAAgB;AACjD,YAAM,WAAW,4BAAS,CAAC,QAAQ,SAAS,mDACvC,SADuC;AAAA,QAC/B,aAAa;AAAA,QAAO,UAAU;AAAA,QAAc;AAAA,QAAS;AAAA,MAClE,EAAC;AACD,wBAAkB,QAAQ;AAAA,IAC5B;AAEA,WAAO,MAAM;AACX,UAAI,gBAAgB;AAClB,uBAAe,QAAQ;AAAA,MACzB;AAAA,IACF;AAAA,EACF,GAAG,CAAC,QAAQ,SAAS,cAAc,CAAC;AAEpC,8CAAS,CAAC,MAAM;AACd,QAAI,gBAAgB;AAClB,UAAI,YAAY;AAEhB,UAAI,OAAO,UAAU,UAAU;AAC7B,oBAAY,IAAI,KAAK,KAAK;AAAA,MAC5B,WAAW,MAAM,QAAQ,KAAK,GAAG;AAC/B,oBAAY,MAAM,IAAI,CAAC,SAAU,OAAO,SAAS,WAAW,IAAI,KAAK,IAAI,IAAI,IAAK;AAAA,MACpF;AAEA,UAAI,gBAAgB,WAAW,SAAS,GAAG;AACzC,uBAAe,IAAI,YAAY,YAAY;AAC3C,YAAI,OAAO,SAAS,SAAS;AAC3B,cAAI,aAAa,UAAU,WAAW,GAAG;AACvC,2BAAe,QAAQ,WAAW,IAAI;AAAA,UACxC;AAAA,QACF,OAAO;AACL,yBAAe,QAAQ,WAAW,IAAI;AAAA,QACxC;AAAA,MACF;AAAA,IACF;AAAA,EACF,GAAG,CAAC,WAAW,OAAO,cAAc,CAAC;AAErC,QAAM,UAAU;AAAA,IACd;AAAA,IACA;AAAA,IACA;AAAA,IACA,GAAI,QAAQ,MAAM,MAAM,GAAG,EAAE,IAAI,CAAC,MAAM,mBAAmB,CAAC,EAAE,IAAI,CAAC;AAAA,IACnE,cAAc;AAAA,IACd,SAAS;AAAA,EACX,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AAE1B,QAAM,iBAAiB,MAAM;AAC3B,QAAI;AAAY,aAAO,EAAE,WAAW,WAAW;AAC/C,WAAO,CAAC;AAAA,EACV;AAEA,QAAM,mBAAmB,MAAM;AAC7B,QAAI;AAAY,aAAO,EAAE,WAAW,eAAe,UAAU,WAAW;AACxE,WAAO,CAAC;AAAA,EACV;AAEA,QAAM,eAAe,8CAAW,CAAC,MAAM;AACrC,QAAI,CAAC;AAAgB;AAErB,mBAAe,KAAK;AAAA,EACtB,GAAG,CAAC,cAAc,CAAC;AAEnB,QAAM,gBAAgB,MACnB,SAAS,UAAU,UAAU,UAAU,UAEpC,uDAAC,OAAE,WAAU,qCACT,KACJ,IAEA;AAGN,QAAM,gBAAgB,MAAM;AAC1B,QAAI,aAAa,CAAC;AAClB,QAAI,aAAa,CAAC;AAElB,QAAI,UAAU,OAAO,QAAQ;AAC3B,mBAAa;AAAA,QACX,QAAQ;AAAA,QACR,SAAS;AAAA,QACT,OAAO;AAAA,QACP,YAAY;AAAA,MACd;AAEA,mBAAa;AAAA,QACX,SAAS;AAAA,MACX;AAAA,IACF;AACA,WACE,kGACE;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,WAAU;AAAA,QACV,cAAU;AAAA,QACV,MAAK;AAAA,QACL,KAAK;AAAA,QACL,OAAO;AAAA;AAAA,IACT,GACA;AAAA,MAAC;AAAA;AAAA,QACC,WAAU;AAAA,QACV,SAAS;AAAA,QACT,MAAK;AAAA,QACL,SAAS,MAAM;AAAA,QAAC;AAAA,QAChB,UAAU;AAAA,QACV,OAAO;AAAA;AAAA,MAEP,uDAAC,eAAI,IAAC,MAAK,YAAW;AAAA,IACxB,CACF;AAAA,EAEJ;AAEA,SACE,kGAEI,YAAY,SAAS,SACjB,SAAS,EAAE,cAAc,KAAK,QAAQ,CAAC,IAEvC,uDAAC,SAAI,WAAW,WAEZ,QACI,uDAAC,WAAM,SAAS,IAAI,OAAO,eAAe,KAAK,KAAO,IACtD,MAEL,CAAC,YACA;AAAA,IAAC;AAAA;AAAA,MACC,WAAU;AAAA,MACV,OAAO,iBAAiB;AAAA;AAAA,IAExB,uDAAC,SAAI,WAAU,qBACZ,cAAc,CACjB;AAAA,IAEE,OACI,uDAAC,OAAE,WAAU,kCAAiC,IAAM,IACpD;AAAA,IAEJ,cAAc;AAAA,EAClB,CAEJ,GAGN,uDAAC,SAAI,WAAU,gCACZ,YAAY,CAAC,SAAS,KACtB,YAAY,SAAS,uCAAoB,CAAC,OAAO,OAAO,cAAc,OAAO,CAChF,CACF;AAEJ;AAEA,WAAW,YAAY;AAAA,EACrB,QAAQ,wCAAoB,CAAC,MAAM;AAAA,EACnC,UAAU,uCAAmB,CAAC;AAAA,IAC5B,uCAAiB;AAAP,IACV,oCAAc;AAAJ,IACV,sCAAgB;AAAN,IACV,oCAAc;AAAJ,EACZ,CAAC;AAAA,EACD,UAAU,oCAAc;AAAJ,EACpB,UAAU,oCAAc;AAAJ,EACpB,IAAI,sCAAgB;AAAN,EACd,OAAO,uCAAmB,CAAC;AAAA,IACzB,qCAAiB,CAAC,oCAAc;AAAA,IAChC,oCAAc;AAAJ,IACV,uCAAiB;AAAP,IACV,oCAAc;AAAJ,IACV,sCAAgB;AAAN,EACZ,CAAC;AAAA,EACD,YAAY,sCAAgB;AAAN,EACtB,MAAM,sCAAgB;AAAN,EAChB,UAAU,uCAAmB,CAAC;AAAA,IAC5B,oCAAc;AAAJ,IACV,wCAAoB,CAAC,KAAK;AAAA,EAC5B,CAAC;AAAA,EACD,SAAS,uCAAmB,CAAC;AAAA,IAC3B,oCAAc;AAAJ,IACV,wCAAoB,CAAC,KAAK;AAAA,EAC5B,CAAC;AAAA,EACD,QAAQ,uCAAmB,CAAC;AAAA,IAC1B,oCAAc;AAAJ,IACV,wCAAoB,CAAC,KAAK;AAAA,EAC5B,CAAC;AAAA,EACD,OAAO,sCAAgB;AAAN,EACjB,OAAO,sCAAgB;AAAN,EACjB,OAAO,uCAAmB,CAAC;AAAA,IACzB,wCAAoB,CAAC,KAAK;AAAA,IAC1B,wCAAoB,CAAC,MAAM;AAAA,IAC3B,sCAAgB;AAAN,EACZ,CAAC;AAAA,EACD,kBAAkB,sCAAgB;AACpC;AAEA,4DAAe,UAAU,EAAC;;;AC/PX;AACf;;AAEA;AACA;AACA,IAAI;AACJ;AACA,GAAG;AACH;;ACRe;AACf;AACA;AACA;AACA;;ACJwD;AACC;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa,SAAS;AACtB,YAAY,WAAW;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACe;AACf,EAAE,YAAY;AACd,kCAAkC,OAAO;AACzC;;ACrCwD;AACC;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,aAAa,MAAM;AACnB,YAAY,WAAW;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe;AACf,EAAE,YAAY;AACd;;AAEA;AACA,kCAAkC,OAAO;AACzC;AACA;AACA,IAAI;AACJ;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnDwC;AACA;AACiB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8DAA8D;AAC9D;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa,SAAS;AACtB,YAAY,WAAW;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe;AACf,EAAE,YAAY;AACd,OAAO,MAAM;AACb;AACA;AACA,aAAa,MAAM;AACnB;AACA;;ACzCe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACTmD;AACX;AACiB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,WAAW,QAAQ;AACnB,aAAa,MAAM;AACnB,YAAY,WAAW;AACvB;AACA;AACA;AACA;AACA;AACA;AACe;AACf,EAAE,YAAY;AACd,kBAAkB,MAAM;AACxB,eAAe,SAAS;AACxB;AACA;;AC1B0D;AACD;AACN;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,WAAW,QAAQ;AACnB,aAAa,MAAM;AACnB,YAAY,WAAW;AACvB;AACA;AACA;AACA;AACA;AACA;AACe;AACf,EAAE,YAAY;AACd,eAAe,SAAS;AACxB,SAAS,eAAe;AACxB;;ACzB2C;AACS;AACpD;AACe;AACf,EAAE,YAAY;AACd,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;;ACZ2C;AACS;AACrC;AACf,EAAE,YAAY;AACd;AACA,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;;ACX2C;AACS;AACU;AAC/C;AACf,EAAE,YAAY;AACd,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA,wBAAwB,iBAAiB;AACzC;AACA;AACA;AACA,wBAAwB,iBAAiB;AACzC;AACA;AACA,IAAI;AACJ;AACA,IAAI;AACJ;AACA;AACA;;ACtB8D;AACA;AACV;AACrC;AACf,EAAE,YAAY;AACd,aAAa,iBAAiB;AAC9B;AACA;AACA;AACA,aAAa,iBAAiB;AAC9B;AACA;;ACX2C;AACmB;AACQ;AAClB;AACpD;AACe;AACf,EAAE,YAAY;AACd,aAAa,MAAM;AACnB,aAAa,iBAAiB,mBAAmB,qBAAqB;;AAEtE;AACA;AACA;AACA;AACA;;ACdA;AACO;AACP;AACA;AACO;AACP;AACA;;ACN2C;AACS;AACN;AACiB;AAChD;AACf;AACA,EAAE,YAAY;AACd,uBAAuB,iBAAiB;AACxC,qBAAqB,SAAS;;AAE9B;AACA;AACA;AACA;AACA,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;;ACpB2C;AACS;AACI;AACV;AACiB;AAChD;AACf;AACA,EAAE,YAAY;AACd,aAAa,MAAM;AACnB;AACA,uBAAuB,iBAAiB;AACxC,8BAA8B,SAAS;;AAEvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,cAAc;AACtC;AACA;AACA;AACA,wBAAwB,cAAc;AACtC;AACA;AACA,IAAI;AACJ;AACA,IAAI;AACJ;AACA;AACA;;AChCwD;AACJ;AACI;AACV;AACiB;AAChD;AACf;AACA,EAAE,YAAY;AACd,uBAAuB,iBAAiB;AACxC,8BAA8B,SAAS;AACvC,aAAa,cAAc;AAC3B;AACA;AACA;AACA,aAAa,cAAc;AAC3B;AACA;;AChB2C;AACa;AACQ;AACZ;AACpD,IAAI,+BAAoB;AACT;AACf,EAAE,YAAY;AACd,aAAa,MAAM;AACnB,aAAa,cAAc,4BAA4B,kBAAkB;;AAEzE;AACA;AACA;AACA,2BAA2B,+BAAoB;AAC/C;;ACde;AACf;AACA;AACA;AACA;AACA;AACA;AACA;;ACP6D;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,eAAe;AAC1B,GAAG;AACH;AACA;AACA;AACA,+CAA+C,eAAe;AAC9D,GAAG;AACH;AACA;AACA,WAAW,eAAe;AAC1B,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,WAAW,eAAe;AAC1B,GAAG;AACH;AACA;AACA,WAAW,eAAe;AAC1B,GAAG;AACH;AACA;AACA,WAAW,eAAe;AAC1B,GAAG;AACH;AACA;AACA,WAAW,eAAe;AAC1B,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,WAAW,eAAe;AAC1B;AACA;AACA,sDAAe,UAAU;;AC/E4C;AACJ;AACQ;AACd;AACQ;AACN;AACH;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,IAAI,qBAAU;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,WAAW,eAAe;AAC1B,GAAG;AACH;AACA;AACA,yBAAyB,cAAc;AACvC;AACA;;AAEA;AACA;AACA;AACA,aAAa,eAAe;AAC5B;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA,WAAW,eAAe;AAC1B,GAAG;AACH;AACA;AACA,sBAAsB,iBAAiB;;AAEvC;AACA,WAAW,eAAe;AAC1B,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,eAAe;AAC1B,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,eAAe;AAC9B;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,qCAAqC;AACrC;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,eAAe;AAC9B;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,qCAAqC;AACrC;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,eAAe;AAC9B;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,eAAe;AAC9B;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,GAAG;AACH;AACA;AACA,eAAe,UAAU;AACzB;AACA;AACA;AACA,OAAO;AACP;AACA,WAAW,eAAe;AAC1B,GAAG;AACH;AACA;AACA,kBAAkB,aAAa;AAC/B;AACA;AACA;AACA,OAAO;AACP;AACA,WAAW,eAAe;AAC1B,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,WAAW,eAAe;AAC1B,GAAG;AACH;AACA;AACA,oBAAoB,eAAe;AACnC;AACA;AACA;AACA,OAAO;AACP;AACA,WAAW,eAAe;AAC1B,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,eAAe;AAC9B;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,eAAe;AAC9B;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,eAAe;AAC9B;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,WAAW,eAAe;AAC1B,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,WAAW,eAAe;AAC1B,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,WAAW,eAAe;AAC1B,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,WAAW,eAAe;AAC1B,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,WAAW,eAAe;AAC1B,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,WAAW,eAAe;AAC1B,GAAG;AACH;AACA;AACA,WAAW,eAAe;AAC1B,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,WAAW,eAAe;AAC1B,GAAG;AACH;AACA;AACA;AACA;AACA,WAAW,eAAe;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,eAAe;AAC3D;AACA;AACA;AACA;AACA,kBAAkB,eAAe;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,eAAe;AAC7B,gBAAgB,eAAe;AAC/B;AACA;AACA,wDAAe,qBAAU;;ACnwBzB;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,mCAAmC,MAAM,0DAA0D,MAAM;AACzG;AACA;AACA;AACA;AACA;AACA,4DAAe,cAAc;;AC/E7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe;AACf;AACA;AACA;AACA;;ACfA;AACA;AACO;AACP;AACA;AACO;AACP;AACA;AACO;AACP;AACA,yIAAyI;AACzI,IAAI;AACJ,qIAAqI;AACrI,IAAI;AACJ,+IAA+I;AAC/I,IAAI;AACJ,iJAAiJ;AACjJ;AACA;;AClBA;AACA;AACA;AACA,wBAAwB,QAAQ;AAChC,GAAG;AACH;AACA;AACA,cAAc,QAAQ;AACtB,GAAG;AACH;AACA;AACA;AACA,wBAAwB,QAAQ;AAChC,GAAG;AACH;AACA;AACA,cAAc,QAAQ;AACtB,GAAG;AACH;AACA;AACA,oBAAoB,QAAQ;AAC5B,GAAG;AACH;AACA;AACA,cAAc,QAAQ;AACtB,GAAG;AACH;AACA;AACA,cAAc,QAAQ;AACtB,GAAG;AACH;AACA;AACA,oBAAoB,QAAQ;AAC5B,GAAG;AACH;AACA;AACA,cAAc,QAAQ;AACtB,GAAG;AACH;AACA;AACA,oBAAoB,QAAQ;AAC5B,GAAG;AACH;AACA;AACA,cAAc,QAAQ;AACtB,GAAG;AACH;AACA;AACA,oBAAoB,QAAQ;AAC5B,GAAG;AACH;AACA;AACA,cAAc,QAAQ;AACtB,GAAG;AACH;AACA;AACA,mBAAmB,QAAQ;AAC3B,GAAG;AACH;AACA;AACA,qBAAqB,QAAQ;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA,IAAI;AACJ,yCAAyC,OAAO;AAChD;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA,0DAAe,cAAc;;AClFd;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACRyE;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO,OAAO,MAAM;AAC/B,WAAW,OAAO,OAAO,MAAM;AAC/B,aAAa,MAAM,IAAI,MAAM;AAC7B,YAAY,MAAM,IAAI,MAAM;AAC5B;AACA;AACA,QAAQ,iBAAiB;AACzB;AACA;AACA,GAAG;AACH,QAAQ,iBAAiB;AACzB;AACA;AACA,GAAG;AACH,YAAY,iBAAiB;AAC7B;AACA;AACA,GAAG;AACH;AACA,sDAAe,UAAU;;ACjCzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAAe,cAAc;;ACXd;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBqE;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,eAAe;AACtB;AACA;AACA,GAAG;AACH,WAAW,eAAe;AAC1B;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,SAAS,eAAe;AACxB;AACA;AACA,GAAG;AACH,OAAO,eAAe;AACtB;AACA;AACA,GAAG;AACH,aAAa,eAAe;AAC5B;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,oDAAe,QAAQ;;AC9IR;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,oBAAoB;AACxC;AACA;AACA;AACA;AACA;AACA;;ACzCe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChB+D;AACc;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,mBAAmB;AACpC;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,OAAO,YAAY;AACnB;AACA;AACA;AACA;AACA,GAAG;AACH,WAAW,YAAY;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,SAAS,YAAY;AACrB;AACA;AACA;AACA;AACA,GAAG;AACH,OAAO,YAAY;AACnB;AACA;AACA;AACA;AACA,GAAG;AACH,aAAa,YAAY;AACzB;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,iDAAe,KAAK;;ACjGwC;AACR;AACQ;AACZ;AACN;AAC1C;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,oCAAoC;AACpC,mCAAmC;AACnC;AACA;AACA;AACA,kBAAkB,mBAAc;AAChC,cAAc,eAAU;AACxB,kBAAkB,mBAAc;AAChC,YAAY,aAAQ;AACpB,SAAS,UAAK;AACd;AACA;AACA;AACA;AACA;AACA,4CAAe,MAAM;;AC1BmC;AACxD,oDAAe,KAAa;;ACDc;AACgB;AAClB;AACoB;AACQ;AAC2B;AAC6B;AACzE;AACM;AACW;AACT,CAAC;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,WAAW;AAC5D;AACA,iDAAiD,WAAW;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oEAAoE;AACpE,wBAAwB,4CAA4C;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,QAAQ,iEAAiE;AACpF,WAAW,eAAe;AAC1B,WAAW,QAAQ;AACnB,WAAW,SAAS;AACpB;AACA,WAAW,SAAS;AACpB;AACA,aAAa,QAAQ;AACrB,YAAY,WAAW;AACvB,YAAY,YAAY;AACxB,YAAY,YAAY;AACxB,YAAY,YAAY;AACxB,YAAY,YAAY;AACxB,YAAY,YAAY;AACxB,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eAAe,OAAO;AACpB,UAAM,EAAE,MAAM,IAAI,KAAK;AAEvB,UAAM,SAAS,6CAAM,CAAC,KAAK,CAAC;AAAA,EAC9B;AAAA,EAEA,SAAS;AACP,UAA+B,UAAK,OAA5B,WA5BZ,IA4BmC,IAAV,4BAAU,IAAV,CAAb;AAER,WACE;AAAA,MAAC,iBAAM;AAAN,2DACK,QADL;AAAA,QAEC,UAAU,KAAK;AAAA,QACf,OAAO,MAAM,MAAM;AAAA;AAAA,MAElB;AAAA,IACH;AAAA,EAEJ;AACF;AAjCE,wBADmB,aACZ,aAAY;AAAA,EACjB,UAAU,uCAAmB,CAAC;AAAA,IAC5B,oCAAc;AAAJ,EACZ,CAAC;AAAA,EACD,UAAU,oCAAc;AAAJ,EACpB,OAAO,wCAAoB,CAAC,MAAM;AACpC;;;ACbK;AAG8B;AACH;AACK;AACA;AACN;AACU;AACR;AACK;AACK;AACb;AACY;AACR;AACJ;AACE;AACC;AACF;AACC;AACI;AACL;AACD;AACO;AACP;AACQ;AACP;AACE;AACF;AAGC;AACH;AAGK;AACA;AACE;AACF;AACC;AACC;AACE;AACC;AACJ;AACJ;AACC;AACK;AACN;AACC;AACQ;AACN;AACF;AACI;AACG;AAIC;AACE;AACF;AACC;AACC;AACE;AACC;AACJ;AACJ;AACC;AACK;AACN;AACC;AACQ;AACN;AACF;AACO;AACN;AAIE;AACF;AACA;AACE;AACD;AACC;AACE;AACH;AACJ;AACM;AACL;AACQ;AACR;AAGA;AACD;AACC;AACK;AACA;AAClB","sources":["webpack://@tyk-technologies/tyk-ui/./node_modules/ace-builds/src-noconflict/ace.js","webpack://@tyk-technologies/tyk-ui/./node_modules/ace-builds/src-noconflict/ext-beautify.js","webpack://@tyk-technologies/tyk-ui/./node_modules/ace-builds/src-noconflict/ext-searchbox.js","webpack://@tyk-technologies/tyk-ui/./node_modules/ace-builds/src-noconflict/mode-css.js","webpack://@tyk-technologies/tyk-ui/./node_modules/ace-builds/src-noconflict/mode-golang.js","webpack://@tyk-technologies/tyk-ui/./node_modules/ace-builds/src-noconflict/mode-javascript.js","webpack://@tyk-technologies/tyk-ui/./node_modules/ace-builds/src-noconflict/mode-json.js","webpack://@tyk-technologies/tyk-ui/./node_modules/ace-builds/src-noconflict/mode-jsx.js","webpack://@tyk-technologies/tyk-ui/./node_modules/ace-builds/src-noconflict/mode-python.js","webpack://@tyk-technologies/tyk-ui/./node_modules/ace-builds/src-noconflict/mode-xml.js","webpack://@tyk-technologies/tyk-ui/./node_modules/ace-builds/src-noconflict/theme-github.js","webpack://@tyk-technologies/tyk-ui/./node_modules/flatpickr/dist/flatpickr.min.css","webpack://@tyk-technologies/tyk-ui/./node_modules/css-loader/dist/runtime/api.js","webpack://@tyk-technologies/tyk-ui/./node_modules/css-loader/dist/runtime/sourceMaps.js","webpack://@tyk-technologies/tyk-ui/./node_modules/react-dom/client.js","webpack://@tyk-technologies/tyk-ui/./node_modules/react-fast-compare/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js","webpack://@tyk-technologies/tyk-ui/./node_modules/style-loader/dist/runtime/insertBySelector.js","webpack://@tyk-technologies/tyk-ui/./node_modules/style-loader/dist/runtime/insertStyleElement.js","webpack://@tyk-technologies/tyk-ui/./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js","webpack://@tyk-technologies/tyk-ui/./node_modules/style-loader/dist/runtime/styleDomAPI.js","webpack://@tyk-technologies/tyk-ui/./node_modules/style-loader/dist/runtime/styleTagTransform.js","webpack://@tyk-technologies/tyk-ui/external commonjs2 \"react-dom\"","webpack://@tyk-technologies/tyk-ui/webpack/bootstrap","webpack://@tyk-technologies/tyk-ui/webpack/runtime/amd define","webpack://@tyk-technologies/tyk-ui/webpack/runtime/compat get default export","webpack://@tyk-technologies/tyk-ui/webpack/runtime/define property getters","webpack://@tyk-technologies/tyk-ui/webpack/runtime/hasOwnProperty shorthand","webpack://@tyk-technologies/tyk-ui/webpack/runtime/make namespace object","webpack://@tyk-technologies/tyk-ui/webpack/runtime/node module decorator","webpack://@tyk-technologies/tyk-ui/webpack/runtime/publicPath","webpack://@tyk-technologies/tyk-ui/webpack/runtime/nonce","webpack://@tyk-technologies/tyk-ui/external commonjs2 \"react\"","webpack://@tyk-technologies/tyk-ui/external commonjs2 \"prop-types\"","webpack://@tyk-technologies/tyk-ui/./src/components/Accordion/js/AccordionContext.js","webpack://@tyk-technologies/tyk-ui/./src/components/Accordion/js/AccordionItemContext.js","webpack://@tyk-technologies/tyk-ui/./src/components/Icon/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Accordion/js/AccordionItemTrigger.js","webpack://@tyk-technologies/tyk-ui/./src/components/Accordion/js/AccordionItem.js","webpack://@tyk-technologies/tyk-ui/./src/components/Accordion/js/AccordionItemHeader.js","webpack://@tyk-technologies/tyk-ui/external commonjs2 \"react-transition-group\"","webpack://@tyk-technologies/tyk-ui/./src/hooks/usePrevious/index.js","webpack://@tyk-technologies/tyk-ui/./src/hooks/useTimeout/index.js","webpack://@tyk-technologies/tyk-ui/./src/hooks/useInterval/index.js","webpack://@tyk-technologies/tyk-ui/./src/hooks/useEventListener/index.js","webpack://@tyk-technologies/tyk-ui/./src/hooks/useComponentSize/index.js","webpack://@tyk-technologies/tyk-ui/./src/hooks/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Collapsible/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Accordion/js/AccordionItemContent.js","webpack://@tyk-technologies/tyk-ui/./src/components/Accordion/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Button/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/ButtonGroup/index.js","webpack://@tyk-technologies/tyk-ui/external commonjs2 \"echarts\"","webpack://@tyk-technologies/tyk-ui/external commonjs2 \"immutable\"","webpack://@tyk-technologies/tyk-ui/./src/utils/debounce/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Loader/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Message/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Chart/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Toast/js/ToastMessage.js","webpack://@tyk-technologies/tyk-ui/./src/components/Toast/js/ToastContainer.js","webpack://@tyk-technologies/tyk-ui/./src/components/Toast/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/CopyToClipboard/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Modal/js/ModalFooter.js","webpack://@tyk-technologies/tyk-ui/./src/components/Modal/js/ModalBody.js","webpack://@tyk-technologies/tyk-ui/./src/components/Modal/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Confirm/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/FixedWrapper/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/InfiniteScroller/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/FloatingContainer/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/InfoNote/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/List/js/ListItem.js","webpack://@tyk-technologies/tyk-ui/./src/components/List/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/NavBar/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Navigation/js/NavigationItem.js","webpack://@tyk-technologies/tyk-ui/./src/components/Navigation/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Panel/panel-context.js","webpack://@tyk-technologies/tyk-ui/./src/components/Panel/js/PanelBody.js","webpack://@tyk-technologies/tyk-ui/./src/components/Panel/js/PanelFooter.js","webpack://@tyk-technologies/tyk-ui/./src/components/Panel/js/PanelHeader.js","webpack://@tyk-technologies/tyk-ui/./src/components/Panel/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Pill/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/RevealPanel/js/RevealPanelService.js","webpack://@tyk-technologies/tyk-ui/./src/components/RevealPanel/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Tabs/tabs-context.js","webpack://@tyk-technologies/tyk-ui/./src/components/Tabs/js/TabContext.js","webpack://@tyk-technologies/tyk-ui/./src/components/Tabs/js/TabContent.js","webpack://@tyk-technologies/tyk-ui/./src/components/Tabs/js/Tab.js","webpack://@tyk-technologies/tyk-ui/./src/components/Tabs/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Tooltip/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/TextEllipsis/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Pagination/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Table/tableContext.js","webpack://@tyk-technologies/tyk-ui/./src/components/Table/js/header-cell.js","webpack://@tyk-technologies/tyk-ui/./src/components/Table/js/header.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Checkbox/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Table/js/cell.js","webpack://@tyk-technologies/tyk-ui/./src/components/Table/js/row.js","webpack://@tyk-technologies/tyk-ui/./src/components/Table/js/body.js","webpack://@tyk-technologies/tyk-ui/./src/components/Table/index.js","webpack://@tyk-technologies/tyk-ui/./src/layout/Column/index.js","webpack://@tyk-technologies/tyk-ui/./src/layout/Row/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Dropdown/dropdown-context.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Dropdown/js/DropdownItem.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Dropdown/index.js","webpack://@tyk-technologies/tyk-ui/external commonjs2 \"react-ace\"","webpack://@tyk-technologies/tyk-ui/./src/form/components/CodeEditor/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Combobox/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Combobox2/js/Value.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Combobox2/js/List.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Combobox2/index.js","webpack://@tyk-technologies/tyk-ui/external commonjs2 \"flatpickr\"","webpack://@tyk-technologies/tyk-ui/./node_modules/flatpickr/dist/flatpickr.min.css?e03b","webpack://@tyk-technologies/tyk-ui/./src/form/components/DatePicker/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/@babel/runtime/helpers/esm/typeof.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/requiredArgs/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/isDate/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/toDate/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/isValid/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/toInteger/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/addMilliseconds/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/subMilliseconds/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/getUTCDayOfYear/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/startOfUTCISOWeek/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/getUTCISOWeekYear/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/startOfUTCISOWeekYear/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/getUTCISOWeek/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/defaultOptions/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/startOfUTCWeek/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/getUTCWeekYear/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/startOfUTCWeekYear/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/getUTCWeek/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/addLeadingZeros/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/format/lightFormatters/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/format/formatters/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/format/longFormatters/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/getTimezoneOffsetInMilliseconds/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/protectedTokens/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/locale/en-US/_lib/formatDistance/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/locale/_lib/buildFormatLongFn/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/locale/en-US/_lib/formatLong/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/locale/en-US/_lib/formatRelative/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/locale/_lib/buildLocalizeFn/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/locale/en-US/_lib/localize/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/locale/_lib/buildMatchFn/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/locale/_lib/buildMatchPatternFn/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/locale/en-US/_lib/match/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/locale/en-US/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/defaultLocale/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/format/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/EditableList/js/EditableListForm.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/EditableList/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/EditableList2/Header.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/EditableList2/ListHeader.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/EditableList2/FieldsList.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/EditableList2/validate-values.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/EditableList2/with-validation.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/EditableList2/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/FileInput/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Input/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Input2/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Multiselect/js/MultiselectContext.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Multiselect/js/MultiselectItem.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Multiselect/js/MultiselectPanel.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Multiselect/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Radio/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Select/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/SelectableList/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Textarea/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Toggle/js/ToggleContext.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Toggle/js/ToggleItem.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Toggle/js/ToggleItemWrapper.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Toggle/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/StringBuilder/js/service.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/StringBuilder/js/string-input.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/StringBuilder/js/invalid-token.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/StringBuilder/js/tokenized-string.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/StringBuilder/js/options-list.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/StringBuilder/js/string-builder-footer.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/StringBuilder/index.js","webpack://@tyk-technologies/tyk-ui/./src/utils/config/config.js","webpack://@tyk-technologies/tyk-ui/./src/utils/formik/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikCheckbox/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikCodeEditor/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikCombobox/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikCombobox2/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikDatePicker/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikEditableList/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikEditableList2/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikFileInput/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikInput/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikInput2/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikMultiselect/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikRadio/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikSelect/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikSelectableList/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikTextarea/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikToggle/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikStringBuilder/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/redux-form/FieldCodeEditor/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/redux-form/FieldCombobox/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/redux-form/FieldDropdown/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/redux-form/FieldPagination/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/redux-form/FieldCombobox2/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/redux-form/FieldDatePicker/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/redux-form/FieldEditableList/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/redux-form/FieldFileInput/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/redux-form/FieldInput/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/redux-form/FieldMultiselect/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/redux-form/FieldSelect/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/redux-form/FieldSelectableList/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/redux-form/FieldToggle/index.js","webpack://@tyk-technologies/tyk-ui/./src/index.js"],"sourcesContent":["/* ***** BEGIN LICENSE BLOCK *****\n * Distributed under the BSD license:\n *\n * Copyright (c) 2010, Ajax.org B.V.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright\n * notice, this list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright\n * notice, this list of conditions and the following disclaimer in the\n * documentation and/or other materials provided with the distribution.\n * * Neither the name of Ajax.org B.V. nor the\n * names of its contributors may be used to endorse or promote products\n * derived from this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\n * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY\n * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\n * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *\n * ***** END LICENSE BLOCK ***** */\n\n/**\n * Define a module along with a payload\n * @param module a name for the payload\n * @param payload a function to call with (require, exports, module) params\n */\n\n(function() {\n\nvar ACE_NAMESPACE = \"ace\";\n\nvar global = (function() { return this; })();\nif (!global && typeof window != \"undefined\") global = window; // strict mode\n\n\nif (!ACE_NAMESPACE && typeof requirejs !== \"undefined\")\n return;\n\n\nvar define = function(module, deps, payload) {\n if (typeof module !== \"string\") {\n if (define.original)\n define.original.apply(this, arguments);\n else {\n console.error(\"dropping module because define wasn\\'t a string.\");\n console.trace();\n }\n return;\n }\n if (arguments.length == 2)\n payload = deps;\n if (!define.modules[module]) {\n define.payloads[module] = payload;\n define.modules[module] = null;\n }\n};\n\ndefine.modules = {};\ndefine.payloads = {};\n\n/**\n * Get at functionality define()ed using the function above\n */\nvar _require = function(parentId, module, callback) {\n if (typeof module === \"string\") {\n var payload = lookup(parentId, module);\n if (payload != undefined) {\n callback && callback();\n return payload;\n }\n } else if (Object.prototype.toString.call(module) === \"[object Array]\") {\n var params = [];\n for (var i = 0, l = module.length; i < l; ++i) {\n var dep = lookup(parentId, module[i]);\n if (dep == undefined && require.original)\n return;\n params.push(dep);\n }\n return callback && callback.apply(null, params) || true;\n }\n};\n\nvar require = function(module, callback) {\n var packagedModule = _require(\"\", module, callback);\n if (packagedModule == undefined && require.original)\n return require.original.apply(this, arguments);\n return packagedModule;\n};\n\nvar normalizeModule = function(parentId, moduleName) {\n // normalize plugin requires\n if (moduleName.indexOf(\"!\") !== -1) {\n var chunks = moduleName.split(\"!\");\n return normalizeModule(parentId, chunks[0]) + \"!\" + normalizeModule(parentId, chunks[1]);\n }\n // normalize relative requires\n if (moduleName.charAt(0) == \".\") {\n var base = parentId.split(\"/\").slice(0, -1).join(\"/\");\n moduleName = base + \"/\" + moduleName;\n\n while(moduleName.indexOf(\".\") !== -1 && previous != moduleName) {\n var previous = moduleName;\n moduleName = moduleName.replace(/\\/\\.\\//, \"/\").replace(/[^\\/]+\\/\\.\\.\\//, \"\");\n }\n }\n return moduleName;\n};\n\n/**\n * Internal function to lookup moduleNames and resolve them by calling the\n * definition function if needed.\n */\nvar lookup = function(parentId, moduleName) {\n moduleName = normalizeModule(parentId, moduleName);\n\n var module = define.modules[moduleName];\n if (!module) {\n module = define.payloads[moduleName];\n if (typeof module === 'function') {\n var exports = {};\n var mod = {\n id: moduleName,\n uri: '',\n exports: exports,\n packaged: true\n };\n\n var req = function(module, callback) {\n return _require(moduleName, module, callback);\n };\n\n var returnValue = module(req, exports, mod);\n exports = returnValue || mod.exports;\n define.modules[moduleName] = exports;\n delete define.payloads[moduleName];\n }\n module = define.modules[moduleName] = exports || module;\n }\n return module;\n};\n\nfunction exportAce(ns) {\n var root = global;\n if (ns) {\n if (!global[ns])\n global[ns] = {};\n root = global[ns];\n }\n\n if (!root.define || !root.define.packaged) {\n define.original = root.define;\n root.define = define;\n root.define.packaged = true;\n }\n\n if (!root.require || !root.require.packaged) {\n require.original = root.require;\n root.require = require;\n root.require.packaged = true;\n }\n}\n\nexportAce(ACE_NAMESPACE);\n\n})();\n\nace.define(\"ace/lib/es6-shim\",[\"require\",\"exports\",\"module\"], function(require, exports, module){function defineProp(obj, name, val) {\n Object.defineProperty(obj, name, {\n value: val,\n enumerable: false,\n writable: true,\n configurable: true\n });\n}\nif (!String.prototype.startsWith) {\n defineProp(String.prototype, \"startsWith\", function (searchString, position) {\n position = position || 0;\n return this.lastIndexOf(searchString, position) === position;\n });\n}\nif (!String.prototype.endsWith) {\n defineProp(String.prototype, \"endsWith\", function (searchString, position) {\n var subjectString = this;\n if (position === undefined || position > subjectString.length) {\n position = subjectString.length;\n }\n position -= searchString.length;\n var lastIndex = subjectString.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n });\n}\nif (!String.prototype.repeat) {\n defineProp(String.prototype, \"repeat\", function (count) {\n var result = \"\";\n var string = this;\n while (count > 0) {\n if (count & 1)\n result += string;\n if ((count >>= 1))\n string += string;\n }\n return result;\n });\n}\nif (!String.prototype.includes) {\n defineProp(String.prototype, \"includes\", function (str, position) {\n return this.indexOf(str, position) != -1;\n });\n}\nif (!Object.assign) {\n Object.assign = function (target) {\n if (target === undefined || target === null) {\n throw new TypeError(\"Cannot convert undefined or null to object\");\n }\n var output = Object(target);\n for (var index = 1; index < arguments.length; index++) {\n var source = arguments[index];\n if (source !== undefined && source !== null) {\n Object.keys(source).forEach(function (key) {\n output[key] = source[key];\n });\n }\n }\n return output;\n };\n}\nif (!Object.values) {\n Object.values = function (o) {\n return Object.keys(o).map(function (k) {\n return o[k];\n });\n };\n}\nif (!Array.prototype.find) {\n defineProp(Array.prototype, \"find\", function (predicate) {\n var len = this.length;\n var thisArg = arguments[1];\n for (var k = 0; k < len; k++) {\n var kValue = this[k];\n if (predicate.call(thisArg, kValue, k, this)) {\n return kValue;\n }\n }\n });\n}\nif (!Array.prototype.findIndex) {\n defineProp(Array.prototype, \"findIndex\", function (predicate) {\n var len = this.length;\n var thisArg = arguments[1];\n for (var k = 0; k < len; k++) {\n var kValue = this[k];\n if (predicate.call(thisArg, kValue, k, this)) {\n return k;\n }\n }\n });\n}\nif (!Array.prototype.includes) {\n defineProp(Array.prototype, \"includes\", function (item, position) {\n return this.indexOf(item, position) != -1;\n });\n}\nif (!Array.prototype.fill) {\n defineProp(Array.prototype, \"fill\", function (value) {\n var O = this;\n var len = O.length >>> 0;\n var start = arguments[1];\n var relativeStart = start >> 0;\n var k = relativeStart < 0\n ? Math.max(len + relativeStart, 0)\n : Math.min(relativeStart, len);\n var end = arguments[2];\n var relativeEnd = end === undefined ? len : end >> 0;\n var final = relativeEnd < 0\n ? Math.max(len + relativeEnd, 0)\n : Math.min(relativeEnd, len);\n while (k < final) {\n O[k] = value;\n k++;\n }\n return O;\n });\n}\nif (!Array.of) {\n defineProp(Array, \"of\", function () {\n return Array.prototype.slice.call(arguments);\n });\n}\n\n});\n\nace.define(\"ace/lib/fixoldbrowsers\",[\"require\",\"exports\",\"module\",\"ace/lib/es6-shim\"], function(require, exports, module){// vim:set ts=4 sts=4 sw=4 st:\n\"use strict\";\nrequire(\"./es6-shim\");\n\n});\n\nace.define(\"ace/lib/deep_copy\",[\"require\",\"exports\",\"module\"], function(require, exports, module){exports.deepCopy = function deepCopy(obj) {\n if (typeof obj !== \"object\" || !obj)\n return obj;\n var copy;\n if (Array.isArray(obj)) {\n copy = [];\n for (var key = 0; key < obj.length; key++) {\n copy[key] = deepCopy(obj[key]);\n }\n return copy;\n }\n if (Object.prototype.toString.call(obj) !== \"[object Object]\")\n return obj;\n copy = {};\n for (var key in obj)\n copy[key] = deepCopy(obj[key]);\n return copy;\n};\n\n});\n\nace.define(\"ace/lib/lang\",[\"require\",\"exports\",\"module\",\"ace/lib/deep_copy\"], function(require, exports, module){\"use strict\";\nexports.last = function (a) {\n return a[a.length - 1];\n};\nexports.stringReverse = function (string) {\n return string.split(\"\").reverse().join(\"\");\n};\nexports.stringRepeat = function (string, count) {\n var result = '';\n while (count > 0) {\n if (count & 1)\n result += string;\n if (count >>= 1)\n string += string;\n }\n return result;\n};\nvar trimBeginRegexp = /^\\s\\s*/;\nvar trimEndRegexp = /\\s\\s*$/;\nexports.stringTrimLeft = function (string) {\n return string.replace(trimBeginRegexp, '');\n};\nexports.stringTrimRight = function (string) {\n return string.replace(trimEndRegexp, '');\n};\nexports.copyObject = function (obj) {\n var copy = {};\n for (var key in obj) {\n copy[key] = obj[key];\n }\n return copy;\n};\nexports.copyArray = function (array) {\n var copy = [];\n for (var i = 0, l = array.length; i < l; i++) {\n if (array[i] && typeof array[i] == \"object\")\n copy[i] = this.copyObject(array[i]);\n else\n copy[i] = array[i];\n }\n return copy;\n};\nexports.deepCopy = require(\"./deep_copy\").deepCopy;\nexports.arrayToMap = function (arr) {\n var map = {};\n for (var i = 0; i < arr.length; i++) {\n map[arr[i]] = 1;\n }\n return map;\n};\nexports.createMap = function (props) {\n var map = Object.create(null);\n for (var i in props) {\n map[i] = props[i];\n }\n return map;\n};\nexports.arrayRemove = function (array, value) {\n for (var i = 0; i <= array.length; i++) {\n if (value === array[i]) {\n array.splice(i, 1);\n }\n }\n};\nexports.escapeRegExp = function (str) {\n return str.replace(/([.*+?^${}()|[\\]\\/\\\\])/g, '\\\\$1');\n};\nexports.escapeHTML = function (str) {\n return (\"\" + str).replace(/&/g, \"&\").replace(/\"/g, \""\").replace(/'/g, \"'\").replace(/ 0xffff ? 2 : 1;\n};\n\n});\n\nace.define(\"ace/lib/useragent\",[\"require\",\"exports\",\"module\"], function(require, exports, module){\"use strict\";\nexports.OS = {\n LINUX: \"LINUX\",\n MAC: \"MAC\",\n WINDOWS: \"WINDOWS\"\n};\nexports.getOS = function () {\n if (exports.isMac) {\n return exports.OS.MAC;\n }\n else if (exports.isLinux) {\n return exports.OS.LINUX;\n }\n else {\n return exports.OS.WINDOWS;\n }\n};\nvar _navigator = typeof navigator == \"object\" ? navigator : {};\nvar os = (/mac|win|linux/i.exec(_navigator.platform) || [\"other\"])[0].toLowerCase();\nvar ua = _navigator.userAgent || \"\";\nvar appName = _navigator.appName || \"\";\nexports.isWin = (os == \"win\");\nexports.isMac = (os == \"mac\");\nexports.isLinux = (os == \"linux\");\nexports.isIE =\n (appName == \"Microsoft Internet Explorer\" || appName.indexOf(\"MSAppHost\") >= 0)\n ? parseFloat((ua.match(/(?:MSIE |Trident\\/[0-9]+[\\.0-9]+;.*rv:)([0-9]+[\\.0-9]+)/) || [])[1])\n : parseFloat((ua.match(/(?:Trident\\/[0-9]+[\\.0-9]+;.*rv:)([0-9]+[\\.0-9]+)/) || [])[1]); // for ie\nexports.isOldIE = exports.isIE && exports.isIE < 9;\nexports.isGecko = exports.isMozilla = ua.match(/ Gecko\\/\\d+/);\nexports.isOpera = typeof opera == \"object\" && Object.prototype.toString.call(window.opera) == \"[object Opera]\";\nexports.isWebKit = parseFloat(ua.split(\"WebKit/\")[1]) || undefined;\nexports.isChrome = parseFloat(ua.split(\" Chrome/\")[1]) || undefined;\nexports.isSafari = parseFloat(ua.split(\" Safari/\")[1]) && !exports.isChrome || undefined;\nexports.isEdge = parseFloat(ua.split(\" Edge/\")[1]) || undefined;\nexports.isAIR = ua.indexOf(\"AdobeAIR\") >= 0;\nexports.isAndroid = ua.indexOf(\"Android\") >= 0;\nexports.isChromeOS = ua.indexOf(\" CrOS \") >= 0;\nexports.isIOS = /iPad|iPhone|iPod/.test(ua) && !window.MSStream;\nif (exports.isIOS)\n exports.isMac = true;\nexports.isMobile = exports.isIOS || exports.isAndroid;\n\n});\n\nace.define(\"ace/lib/dom\",[\"require\",\"exports\",\"module\",\"ace/lib/useragent\"], function(require, exports, module){\"use strict\";\nvar useragent = require(\"./useragent\");\nvar XHTML_NS = \"http://www.w3.org/1999/xhtml\";\nexports.buildDom = function buildDom(arr, parent, refs) {\n if (typeof arr == \"string\" && arr) {\n var txt = document.createTextNode(arr);\n if (parent)\n parent.appendChild(txt);\n return txt;\n }\n if (!Array.isArray(arr)) {\n if (arr && arr.appendChild && parent)\n parent.appendChild(arr);\n return arr;\n }\n if (typeof arr[0] != \"string\" || !arr[0]) {\n var els = [];\n for (var i = 0; i < arr.length; i++) {\n var ch = buildDom(arr[i], parent, refs);\n ch && els.push(ch);\n }\n return els;\n }\n var el = document.createElement(arr[0]);\n var options = arr[1];\n var childIndex = 1;\n if (options && typeof options == \"object\" && !Array.isArray(options))\n childIndex = 2;\n for (var i = childIndex; i < arr.length; i++)\n buildDom(arr[i], el, refs);\n if (childIndex == 2) {\n Object.keys(options).forEach(function (n) {\n var val = options[n];\n if (n === \"class\") {\n el.className = Array.isArray(val) ? val.join(\" \") : val;\n }\n else if (typeof val == \"function\" || n == \"value\" || n[0] == \"$\") {\n el[n] = val;\n }\n else if (n === \"ref\") {\n if (refs)\n refs[val] = el;\n }\n else if (n === \"style\") {\n if (typeof val == \"string\")\n el.style.cssText = val;\n }\n else if (val != null) {\n el.setAttribute(n, val);\n }\n });\n }\n if (parent)\n parent.appendChild(el);\n return el;\n};\nexports.getDocumentHead = function (doc) {\n if (!doc)\n doc = document;\n return doc.head || doc.getElementsByTagName(\"head\")[0] || doc.documentElement;\n};\nexports.createElement = function (tag, ns) {\n return document.createElementNS ?\n document.createElementNS(ns || XHTML_NS, tag) :\n document.createElement(tag);\n};\nexports.removeChildren = function (element) {\n element.innerHTML = \"\";\n};\nexports.createTextNode = function (textContent, element) {\n var doc = element ? element.ownerDocument : document;\n return doc.createTextNode(textContent);\n};\nexports.createFragment = function (element) {\n var doc = element ? element.ownerDocument : document;\n return doc.createDocumentFragment();\n};\nexports.hasCssClass = function (el, name) {\n var classes = (el.className + \"\").split(/\\s+/g);\n return classes.indexOf(name) !== -1;\n};\nexports.addCssClass = function (el, name) {\n if (!exports.hasCssClass(el, name)) {\n el.className += \" \" + name;\n }\n};\nexports.removeCssClass = function (el, name) {\n var classes = el.className.split(/\\s+/g);\n while (true) {\n var index = classes.indexOf(name);\n if (index == -1) {\n break;\n }\n classes.splice(index, 1);\n }\n el.className = classes.join(\" \");\n};\nexports.toggleCssClass = function (el, name) {\n var classes = el.className.split(/\\s+/g), add = true;\n while (true) {\n var index = classes.indexOf(name);\n if (index == -1) {\n break;\n }\n add = false;\n classes.splice(index, 1);\n }\n if (add)\n classes.push(name);\n el.className = classes.join(\" \");\n return add;\n};\nexports.setCssClass = function (node, className, include) {\n if (include) {\n exports.addCssClass(node, className);\n }\n else {\n exports.removeCssClass(node, className);\n }\n};\nexports.hasCssString = function (id, doc) {\n var index = 0, sheets;\n doc = doc || document;\n if ((sheets = doc.querySelectorAll(\"style\"))) {\n while (index < sheets.length) {\n if (sheets[index++].id === id) {\n return true;\n }\n }\n }\n};\nexports.removeElementById = function (id, doc) {\n doc = doc || document;\n if (doc.getElementById(id)) {\n doc.getElementById(id).remove();\n }\n};\nvar strictCSP;\nvar cssCache = [];\nexports.useStrictCSP = function (value) {\n strictCSP = value;\n if (value == false)\n insertPendingStyles();\n else if (!cssCache)\n cssCache = [];\n};\nfunction insertPendingStyles() {\n var cache = cssCache;\n cssCache = null;\n cache && cache.forEach(function (item) {\n importCssString(item[0], item[1]);\n });\n}\nfunction importCssString(cssText, id, target) {\n if (typeof document == \"undefined\")\n return;\n if (cssCache) {\n if (target) {\n insertPendingStyles();\n }\n else if (target === false) {\n return cssCache.push([cssText, id]);\n }\n }\n if (strictCSP)\n return;\n var container = target;\n if (!target || !target.getRootNode) {\n container = document;\n }\n else {\n container = target.getRootNode();\n if (!container || container == target)\n container = document;\n }\n var doc = container.ownerDocument || container;\n if (id && exports.hasCssString(id, container))\n return null;\n if (id)\n cssText += \"\\n/*# sourceURL=ace/css/\" + id + \" */\";\n var style = exports.createElement(\"style\");\n style.appendChild(doc.createTextNode(cssText));\n if (id)\n style.id = id;\n if (container == doc)\n container = exports.getDocumentHead(doc);\n container.insertBefore(style, container.firstChild);\n}\nexports.importCssString = importCssString;\nexports.importCssStylsheet = function (uri, doc) {\n exports.buildDom([\"link\", { rel: \"stylesheet\", href: uri }], exports.getDocumentHead(doc));\n};\nexports.scrollbarWidth = function (doc) {\n var inner = exports.createElement(\"ace_inner\");\n inner.style.width = \"100%\";\n inner.style.minWidth = \"0px\";\n inner.style.height = \"200px\";\n inner.style.display = \"block\";\n var outer = exports.createElement(\"ace_outer\");\n var style = outer.style;\n style.position = \"absolute\";\n style.left = \"-10000px\";\n style.overflow = \"hidden\";\n style.width = \"200px\";\n style.minWidth = \"0px\";\n style.height = \"150px\";\n style.display = \"block\";\n outer.appendChild(inner);\n var body = (doc && doc.documentElement) || (document && document.documentElement);\n if (!body)\n return 0;\n body.appendChild(outer);\n var noScrollbar = inner.offsetWidth;\n style.overflow = \"scroll\";\n var withScrollbar = inner.offsetWidth;\n if (noScrollbar === withScrollbar) {\n withScrollbar = outer.clientWidth;\n }\n body.removeChild(outer);\n return noScrollbar - withScrollbar;\n};\nexports.computedStyle = function (element, style) {\n return window.getComputedStyle(element, \"\") || {};\n};\nexports.setStyle = function (styles, property, value) {\n if (styles[property] !== value) {\n styles[property] = value;\n }\n};\nexports.HAS_CSS_ANIMATION = false;\nexports.HAS_CSS_TRANSFORMS = false;\nexports.HI_DPI = useragent.isWin\n ? typeof window !== \"undefined\" && window.devicePixelRatio >= 1.5\n : true;\nif (useragent.isChromeOS)\n exports.HI_DPI = false;\nif (typeof document !== \"undefined\") {\n var div = document.createElement(\"div\");\n if (exports.HI_DPI && div.style.transform !== undefined)\n exports.HAS_CSS_TRANSFORMS = true;\n if (!useragent.isEdge && typeof div.style.animationName !== \"undefined\")\n exports.HAS_CSS_ANIMATION = true;\n div = null;\n}\nif (exports.HAS_CSS_TRANSFORMS) {\n exports.translate = function (element, tx, ty) {\n element.style.transform = \"translate(\" + Math.round(tx) + \"px, \" + Math.round(ty) + \"px)\";\n };\n}\nelse {\n exports.translate = function (element, tx, ty) {\n element.style.top = Math.round(ty) + \"px\";\n element.style.left = Math.round(tx) + \"px\";\n };\n}\n\n});\n\nace.define(\"ace/lib/net\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"], function(require, exports, module){/*\n * based on code from:\n *\n * @license RequireJS text 0.25.0 Copyright (c) 2010-2011, The Dojo Foundation All Rights Reserved.\n * Available via the MIT or new BSD license.\n * see: http://github.com/jrburke/requirejs for details\n */\n\"use strict\";\nvar dom = require(\"./dom\");\nexports.get = function (url, callback) {\n var xhr = new XMLHttpRequest();\n xhr.open('GET', url, true);\n xhr.onreadystatechange = function () {\n if (xhr.readyState === 4) {\n callback(xhr.responseText);\n }\n };\n xhr.send(null);\n};\nexports.loadScript = function (path, callback) {\n var head = dom.getDocumentHead();\n var s = document.createElement('script');\n s.src = path;\n head.appendChild(s);\n s.onload = s.onreadystatechange = function (_, isAbort) {\n if (isAbort || !s.readyState || s.readyState == \"loaded\" || s.readyState == \"complete\") {\n s = s.onload = s.onreadystatechange = null;\n if (!isAbort)\n callback();\n }\n };\n};\nexports.qualifyURL = function (url) {\n var a = document.createElement('a');\n a.href = url;\n return a.href;\n};\n\n});\n\nace.define(\"ace/lib/oop\",[\"require\",\"exports\",\"module\"], function(require, exports, module){\"use strict\";\nexports.inherits = function (ctor, superCtor) {\n ctor.super_ = superCtor;\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n};\nexports.mixin = function (obj, mixin) {\n for (var key in mixin) {\n obj[key] = mixin[key];\n }\n return obj;\n};\nexports.implement = function (proto, mixin) {\n exports.mixin(proto, mixin);\n};\n\n});\n\nace.define(\"ace/lib/event_emitter\",[\"require\",\"exports\",\"module\"], function(require, exports, module){\"use strict\";\nvar EventEmitter = {};\nvar stopPropagation = function () { this.propagationStopped = true; };\nvar preventDefault = function () { this.defaultPrevented = true; };\nEventEmitter._emit =\n EventEmitter._dispatchEvent = function (eventName, e) {\n this._eventRegistry || (this._eventRegistry = {});\n this._defaultHandlers || (this._defaultHandlers = {});\n var listeners = this._eventRegistry[eventName] || [];\n var defaultHandler = this._defaultHandlers[eventName];\n if (!listeners.length && !defaultHandler)\n return;\n if (typeof e != \"object\" || !e)\n e = {};\n if (!e.type)\n e.type = eventName;\n if (!e.stopPropagation)\n e.stopPropagation = stopPropagation;\n if (!e.preventDefault)\n e.preventDefault = preventDefault;\n listeners = listeners.slice();\n for (var i = 0; i < listeners.length; i++) {\n listeners[i](e, this);\n if (e.propagationStopped)\n break;\n }\n if (defaultHandler && !e.defaultPrevented)\n return defaultHandler(e, this);\n };\nEventEmitter._signal = function (eventName, e) {\n var listeners = (this._eventRegistry || {})[eventName];\n if (!listeners)\n return;\n listeners = listeners.slice();\n for (var i = 0; i < listeners.length; i++)\n listeners[i](e, this);\n};\nEventEmitter.once = function (eventName, callback) {\n var _self = this;\n this.on(eventName, function newCallback() {\n _self.off(eventName, newCallback);\n callback.apply(null, arguments);\n });\n if (!callback) {\n return new Promise(function (resolve) {\n callback = resolve;\n });\n }\n};\nEventEmitter.setDefaultHandler = function (eventName, callback) {\n var handlers = this._defaultHandlers;\n if (!handlers)\n handlers = this._defaultHandlers = { _disabled_: {} };\n if (handlers[eventName]) {\n var old = handlers[eventName];\n var disabled = handlers._disabled_[eventName];\n if (!disabled)\n handlers._disabled_[eventName] = disabled = [];\n disabled.push(old);\n var i = disabled.indexOf(callback);\n if (i != -1)\n disabled.splice(i, 1);\n }\n handlers[eventName] = callback;\n};\nEventEmitter.removeDefaultHandler = function (eventName, callback) {\n var handlers = this._defaultHandlers;\n if (!handlers)\n return;\n var disabled = handlers._disabled_[eventName];\n if (handlers[eventName] == callback) {\n if (disabled)\n this.setDefaultHandler(eventName, disabled.pop());\n }\n else if (disabled) {\n var i = disabled.indexOf(callback);\n if (i != -1)\n disabled.splice(i, 1);\n }\n};\nEventEmitter.on =\n EventEmitter.addEventListener = function (eventName, callback, capturing) {\n this._eventRegistry = this._eventRegistry || {};\n var listeners = this._eventRegistry[eventName];\n if (!listeners)\n listeners = this._eventRegistry[eventName] = [];\n if (listeners.indexOf(callback) == -1)\n listeners[capturing ? \"unshift\" : \"push\"](callback);\n return callback;\n };\nEventEmitter.off =\n EventEmitter.removeListener =\n EventEmitter.removeEventListener = function (eventName, callback) {\n this._eventRegistry = this._eventRegistry || {};\n var listeners = this._eventRegistry[eventName];\n if (!listeners)\n return;\n var index = listeners.indexOf(callback);\n if (index !== -1)\n listeners.splice(index, 1);\n };\nEventEmitter.removeAllListeners = function (eventName) {\n if (!eventName)\n this._eventRegistry = this._defaultHandlers = undefined;\n if (this._eventRegistry)\n this._eventRegistry[eventName] = undefined;\n if (this._defaultHandlers)\n this._defaultHandlers[eventName] = undefined;\n};\nexports.EventEmitter = EventEmitter;\n\n});\n\nace.define(\"ace/lib/report_error\",[\"require\",\"exports\",\"module\"], function(require, exports, module){exports.reportError = function reportError(msg, data) {\n var e = new Error(msg);\n e.data = data;\n if (typeof console == \"object\" && console.error)\n console.error(e);\n setTimeout(function () { throw e; });\n};\n\n});\n\nace.define(\"ace/lib/app_config\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/event_emitter\",\"ace/lib/report_error\"], function(require, exports, module){\"no use strict\";\nvar oop = require(\"./oop\");\nvar EventEmitter = require(\"./event_emitter\").EventEmitter;\nvar reportError = require(\"./report_error\").reportError;\nvar optionsProvider = {\n setOptions: function (optList) {\n Object.keys(optList).forEach(function (key) {\n this.setOption(key, optList[key]);\n }, this);\n },\n getOptions: function (optionNames) {\n var result = {};\n if (!optionNames) {\n var options = this.$options;\n optionNames = Object.keys(options).filter(function (key) {\n return !options[key].hidden;\n });\n }\n else if (!Array.isArray(optionNames)) {\n result = optionNames;\n optionNames = Object.keys(result);\n }\n optionNames.forEach(function (key) {\n result[key] = this.getOption(key);\n }, this);\n return result;\n },\n setOption: function (name, value) {\n if (this[\"$\" + name] === value)\n return;\n var opt = this.$options[name];\n if (!opt) {\n return warn('misspelled option \"' + name + '\"');\n }\n if (opt.forwardTo)\n return this[opt.forwardTo] && this[opt.forwardTo].setOption(name, value);\n if (!opt.handlesSet)\n this[\"$\" + name] = value;\n if (opt && opt.set)\n opt.set.call(this, value);\n },\n getOption: function (name) {\n var opt = this.$options[name];\n if (!opt) {\n return warn('misspelled option \"' + name + '\"');\n }\n if (opt.forwardTo)\n return this[opt.forwardTo] && this[opt.forwardTo].getOption(name);\n return opt && opt.get ? opt.get.call(this) : this[\"$\" + name];\n }\n};\nfunction warn(message) {\n if (typeof console != \"undefined\" && console.warn)\n console.warn.apply(console, arguments);\n}\nvar messages;\nvar AppConfig = /** @class */ (function () {\n function AppConfig() {\n this.$defaultOptions = {};\n }\n AppConfig.prototype.defineOptions = function (obj, path, options) {\n if (!obj.$options)\n this.$defaultOptions[path] = obj.$options = {};\n Object.keys(options).forEach(function (key) {\n var opt = options[key];\n if (typeof opt == \"string\")\n opt = { forwardTo: opt };\n opt.name || (opt.name = key);\n obj.$options[opt.name] = opt;\n if (\"initialValue\" in opt)\n obj[\"$\" + opt.name] = opt.initialValue;\n });\n oop.implement(obj, optionsProvider);\n return this;\n };\n AppConfig.prototype.resetOptions = function (obj) {\n Object.keys(obj.$options).forEach(function (key) {\n var opt = obj.$options[key];\n if (\"value\" in opt)\n obj.setOption(key, opt.value);\n });\n };\n AppConfig.prototype.setDefaultValue = function (path, name, value) {\n if (!path) {\n for (path in this.$defaultOptions)\n if (this.$defaultOptions[path][name])\n break;\n if (!this.$defaultOptions[path][name])\n return false;\n }\n var opts = this.$defaultOptions[path] || (this.$defaultOptions[path] = {});\n if (opts[name]) {\n if (opts.forwardTo)\n this.setDefaultValue(opts.forwardTo, name, value);\n else\n opts[name].value = value;\n }\n };\n AppConfig.prototype.setDefaultValues = function (path, optionHash) {\n Object.keys(optionHash).forEach(function (key) {\n this.setDefaultValue(path, key, optionHash[key]);\n }, this);\n };\n AppConfig.prototype.setMessages = function (value) {\n messages = value;\n };\n AppConfig.prototype.nls = function (string, params) {\n if (messages && !messages[string]) {\n warn(\"No message found for '\" + string + \"' in the provided messages, falling back to default English message.\");\n }\n var translated = messages && messages[string] || string;\n if (params) {\n translated = translated.replace(/\\$(\\$|[\\d]+)/g, function (_, name) {\n if (name == \"$\")\n return \"$\";\n return params[name];\n });\n }\n return translated;\n };\n return AppConfig;\n}());\nAppConfig.prototype.warn = warn;\nAppConfig.prototype.reportError = reportError;\noop.implement(AppConfig.prototype, EventEmitter);\nexports.AppConfig = AppConfig;\n\n});\n\nace.define(\"ace/theme/textmate-css\",[\"require\",\"exports\",\"module\"], function(require, exports, module){module.exports = \".ace-tm .ace_gutter {\\n background: #f0f0f0;\\n color: #333;\\n}\\n\\n.ace-tm .ace_print-margin {\\n width: 1px;\\n background: #e8e8e8;\\n}\\n\\n.ace-tm .ace_fold {\\n background-color: #6B72E6;\\n}\\n\\n.ace-tm {\\n background-color: #FFFFFF;\\n color: black;\\n}\\n\\n.ace-tm .ace_cursor {\\n color: black;\\n}\\n \\n.ace-tm .ace_invisible {\\n color: rgb(191, 191, 191);\\n}\\n\\n.ace-tm .ace_storage,\\n.ace-tm .ace_keyword {\\n color: blue;\\n}\\n\\n.ace-tm .ace_constant {\\n color: rgb(197, 6, 11);\\n}\\n\\n.ace-tm .ace_constant.ace_buildin {\\n color: rgb(88, 72, 246);\\n}\\n\\n.ace-tm .ace_constant.ace_language {\\n color: rgb(88, 92, 246);\\n}\\n\\n.ace-tm .ace_constant.ace_library {\\n color: rgb(6, 150, 14);\\n}\\n\\n.ace-tm .ace_invalid {\\n background-color: rgba(255, 0, 0, 0.1);\\n color: red;\\n}\\n\\n.ace-tm .ace_support.ace_function {\\n color: rgb(60, 76, 114);\\n}\\n\\n.ace-tm .ace_support.ace_constant {\\n color: rgb(6, 150, 14);\\n}\\n\\n.ace-tm .ace_support.ace_type,\\n.ace-tm .ace_support.ace_class {\\n color: rgb(109, 121, 222);\\n}\\n\\n.ace-tm .ace_keyword.ace_operator {\\n color: rgb(104, 118, 135);\\n}\\n\\n.ace-tm .ace_string {\\n color: rgb(3, 106, 7);\\n}\\n\\n.ace-tm .ace_comment {\\n color: rgb(76, 136, 107);\\n}\\n\\n.ace-tm .ace_comment.ace_doc {\\n color: rgb(0, 102, 255);\\n}\\n\\n.ace-tm .ace_comment.ace_doc.ace_tag {\\n color: rgb(128, 159, 191);\\n}\\n\\n.ace-tm .ace_constant.ace_numeric {\\n color: rgb(0, 0, 205);\\n}\\n\\n.ace-tm .ace_variable {\\n color: rgb(49, 132, 149);\\n}\\n\\n.ace-tm .ace_xml-pe {\\n color: rgb(104, 104, 91);\\n}\\n\\n.ace-tm .ace_entity.ace_name.ace_function {\\n color: #0000A2;\\n}\\n\\n\\n.ace-tm .ace_heading {\\n color: rgb(12, 7, 255);\\n}\\n\\n.ace-tm .ace_list {\\n color:rgb(185, 6, 144);\\n}\\n\\n.ace-tm .ace_meta.ace_tag {\\n color:rgb(0, 22, 142);\\n}\\n\\n.ace-tm .ace_string.ace_regex {\\n color: rgb(255, 0, 0)\\n}\\n\\n.ace-tm .ace_marker-layer .ace_selection {\\n background: rgb(181, 213, 255);\\n}\\n.ace-tm.ace_multiselect .ace_selection.ace_start {\\n box-shadow: 0 0 3px 0px white;\\n}\\n.ace-tm .ace_marker-layer .ace_step {\\n background: rgb(252, 255, 0);\\n}\\n\\n.ace-tm .ace_marker-layer .ace_stack {\\n background: rgb(164, 229, 101);\\n}\\n\\n.ace-tm .ace_marker-layer .ace_bracket {\\n margin: -1px 0 0 -1px;\\n border: 1px solid rgb(192, 192, 192);\\n}\\n\\n.ace-tm .ace_marker-layer .ace_active-line {\\n background: rgba(0, 0, 0, 0.07);\\n}\\n\\n.ace-tm .ace_gutter-active-line {\\n background-color : #dcdcdc;\\n}\\n\\n.ace-tm .ace_marker-layer .ace_selected-word {\\n background: rgb(250, 250, 255);\\n border: 1px solid rgb(200, 200, 250);\\n}\\n\\n.ace-tm .ace_indent-guide {\\n background: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==\\\") right repeat-y;\\n}\\n\\n.ace-tm .ace_indent-guide-active {\\n background: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAAZSURBVHjaYvj///9/hivKyv8BAAAA//8DACLqBhbvk+/eAAAAAElFTkSuQmCC\\\") right repeat-y;\\n}\\n\";\n\n});\n\nace.define(\"ace/theme/textmate\",[\"require\",\"exports\",\"module\",\"ace/theme/textmate-css\",\"ace/lib/dom\"], function(require, exports, module){\"use strict\";\nexports.isDark = false;\nexports.cssClass = \"ace-tm\";\nexports.cssText = require(\"./textmate-css\");\nexports.$id = \"ace/theme/textmate\";\nvar dom = require(\"../lib/dom\");\ndom.importCssString(exports.cssText, exports.cssClass, false);\n\n});\n\nace.define(\"ace/config\",[\"require\",\"exports\",\"module\",\"ace/lib/lang\",\"ace/lib/net\",\"ace/lib/dom\",\"ace/lib/app_config\",\"ace/theme/textmate\"], function(require, exports, module){\"no use strict\";\nvar lang = require(\"./lib/lang\");\nvar net = require(\"./lib/net\");\nvar dom = require(\"./lib/dom\");\nvar AppConfig = require(\"./lib/app_config\").AppConfig;\nmodule.exports = exports = new AppConfig();\nvar options = {\n packaged: false,\n workerPath: null,\n modePath: null,\n themePath: null,\n basePath: \"\",\n suffix: \".js\",\n $moduleUrls: {},\n loadWorkerFromBlob: true,\n sharedPopups: false,\n useStrictCSP: null\n};\nexports.get = function (key) {\n if (!options.hasOwnProperty(key))\n throw new Error(\"Unknown config key: \" + key);\n return options[key];\n};\nexports.set = function (key, value) {\n if (options.hasOwnProperty(key))\n options[key] = value;\n else if (this.setDefaultValue(\"\", key, value) == false)\n throw new Error(\"Unknown config key: \" + key);\n if (key == \"useStrictCSP\")\n dom.useStrictCSP(value);\n};\nexports.all = function () {\n return lang.copyObject(options);\n};\nexports.$modes = {};\nexports.moduleUrl = function (name, component) {\n if (options.$moduleUrls[name])\n return options.$moduleUrls[name];\n var parts = name.split(\"/\");\n component = component || parts[parts.length - 2] || \"\";\n var sep = component == \"snippets\" ? \"/\" : \"-\";\n var base = parts[parts.length - 1];\n if (component == \"worker\" && sep == \"-\") {\n var re = new RegExp(\"^\" + component + \"[\\\\-_]|[\\\\-_]\" + component + \"$\", \"g\");\n base = base.replace(re, \"\");\n }\n if ((!base || base == component) && parts.length > 1)\n base = parts[parts.length - 2];\n var path = options[component + \"Path\"];\n if (path == null) {\n path = options.basePath;\n }\n else if (sep == \"/\") {\n component = sep = \"\";\n }\n if (path && path.slice(-1) != \"/\")\n path += \"/\";\n return path + component + sep + base + this.get(\"suffix\");\n};\nexports.setModuleUrl = function (name, subst) {\n return options.$moduleUrls[name] = subst;\n};\nvar loader = function (moduleName, cb) {\n if (moduleName === \"ace/theme/textmate\" || moduleName === \"./theme/textmate\")\n return cb(null, require(\"./theme/textmate\"));\n if (customLoader)\n return customLoader(moduleName, cb);\n console.error(\"loader is not configured\");\n};\nvar customLoader;\nexports.setLoader = function (cb) {\n customLoader = cb;\n};\nexports.dynamicModules = Object.create(null);\nexports.$loading = {};\nexports.$loaded = {};\nexports.loadModule = function (moduleName, onLoad) {\n var loadedModule, moduleType;\n if (Array.isArray(moduleName)) {\n moduleType = moduleName[0];\n moduleName = moduleName[1];\n }\n var load = function (module) {\n if (module && !exports.$loading[moduleName])\n return onLoad && onLoad(module);\n if (!exports.$loading[moduleName])\n exports.$loading[moduleName] = [];\n exports.$loading[moduleName].push(onLoad);\n if (exports.$loading[moduleName].length > 1)\n return;\n var afterLoad = function () {\n loader(moduleName, function (err, module) {\n if (module)\n exports.$loaded[moduleName] = module;\n exports._emit(\"load.module\", { name: moduleName, module: module });\n var listeners = exports.$loading[moduleName];\n exports.$loading[moduleName] = null;\n listeners.forEach(function (onLoad) {\n onLoad && onLoad(module);\n });\n });\n };\n if (!exports.get(\"packaged\"))\n return afterLoad();\n net.loadScript(exports.moduleUrl(moduleName, moduleType), afterLoad);\n reportErrorIfPathIsNotConfigured();\n };\n if (exports.dynamicModules[moduleName]) {\n exports.dynamicModules[moduleName]().then(function (module) {\n if (module.default) {\n load(module.default);\n }\n else {\n load(module);\n }\n });\n }\n else {\n try {\n loadedModule = this.$require(moduleName);\n }\n catch (e) { }\n load(loadedModule || exports.$loaded[moduleName]);\n }\n};\nexports.$require = function (moduleName) {\n if (typeof module.require == \"function\") {\n var req = \"require\";\n return module[req](moduleName);\n }\n};\nexports.setModuleLoader = function (moduleName, onLoad) {\n exports.dynamicModules[moduleName] = onLoad;\n};\nvar reportErrorIfPathIsNotConfigured = function () {\n if (!options.basePath && !options.workerPath\n && !options.modePath && !options.themePath\n && !Object.keys(options.$moduleUrls).length) {\n console.error(\"Unable to infer path to ace from script src,\", \"use ace.config.set('basePath', 'path') to enable dynamic loading of modes and themes\", \"or with webpack use ace/webpack-resolver\");\n reportErrorIfPathIsNotConfigured = function () { };\n }\n};\nexports.version = \"1.32.0\";\n\n});\n\nace.define(\"ace/loader_build\",[\"require\",\"exports\",\"module\",\"ace/lib/fixoldbrowsers\",\"ace/config\"], function(require, exports, module) {\n\"use strict\";\n\nrequire(\"./lib/fixoldbrowsers\");\nvar config = require(\"./config\");\nconfig.setLoader(function(moduleName, cb) {\n require([moduleName], function(module) {\n cb(null, module);\n });\n});\n\nvar global = (function() {\n return this || typeof window != \"undefined\" && window;\n})();\n\nmodule.exports = function(ace) {\n config.init = init;\n config.$require = require;\n ace.require = require;\n\n if (typeof define === \"function\")\n ace.define = define;\n};\ninit(true);function init(packaged) {\n\n if (!global || !global.document)\n return;\n \n config.set(\"packaged\", packaged || require.packaged || module.packaged || (global.define && define.packaged));\n\n var scriptOptions = {};\n var scriptUrl = \"\";\n var currentScript = (document.currentScript || document._currentScript ); // native or polyfill\n var currentDocument = currentScript && currentScript.ownerDocument || document;\n \n if (currentScript && currentScript.src) {\n scriptUrl = currentScript.src.split(/[?#]/)[0].split(\"/\").slice(0, -1).join(\"/\") || \"\";\n }\n \n var scripts = currentDocument.getElementsByTagName(\"script\");\n for (var i=0; i [\" + this.end.row + \"/\" + this.end.column + \"]\");\n };\n Range.prototype.contains = function (row, column) {\n return this.compare(row, column) == 0;\n };\n Range.prototype.compareRange = function (range) {\n var cmp, end = range.end, start = range.start;\n cmp = this.compare(end.row, end.column);\n if (cmp == 1) {\n cmp = this.compare(start.row, start.column);\n if (cmp == 1) {\n return 2;\n }\n else if (cmp == 0) {\n return 1;\n }\n else {\n return 0;\n }\n }\n else if (cmp == -1) {\n return -2;\n }\n else {\n cmp = this.compare(start.row, start.column);\n if (cmp == -1) {\n return -1;\n }\n else if (cmp == 1) {\n return 42;\n }\n else {\n return 0;\n }\n }\n };\n Range.prototype.comparePoint = function (p) {\n return this.compare(p.row, p.column);\n };\n Range.prototype.containsRange = function (range) {\n return this.comparePoint(range.start) == 0 && this.comparePoint(range.end) == 0;\n };\n Range.prototype.intersects = function (range) {\n var cmp = this.compareRange(range);\n return (cmp == -1 || cmp == 0 || cmp == 1);\n };\n Range.prototype.isEnd = function (row, column) {\n return this.end.row == row && this.end.column == column;\n };\n Range.prototype.isStart = function (row, column) {\n return this.start.row == row && this.start.column == column;\n };\n Range.prototype.setStart = function (row, column) {\n if (typeof row == \"object\") {\n this.start.column = row.column;\n this.start.row = row.row;\n }\n else {\n this.start.row = row;\n this.start.column = column;\n }\n };\n Range.prototype.setEnd = function (row, column) {\n if (typeof row == \"object\") {\n this.end.column = row.column;\n this.end.row = row.row;\n }\n else {\n this.end.row = row;\n this.end.column = column;\n }\n };\n Range.prototype.inside = function (row, column) {\n if (this.compare(row, column) == 0) {\n if (this.isEnd(row, column) || this.isStart(row, column)) {\n return false;\n }\n else {\n return true;\n }\n }\n return false;\n };\n Range.prototype.insideStart = function (row, column) {\n if (this.compare(row, column) == 0) {\n if (this.isEnd(row, column)) {\n return false;\n }\n else {\n return true;\n }\n }\n return false;\n };\n Range.prototype.insideEnd = function (row, column) {\n if (this.compare(row, column) == 0) {\n if (this.isStart(row, column)) {\n return false;\n }\n else {\n return true;\n }\n }\n return false;\n };\n Range.prototype.compare = function (row, column) {\n if (!this.isMultiLine()) {\n if (row === this.start.row) {\n return column < this.start.column ? -1 : (column > this.end.column ? 1 : 0);\n }\n }\n if (row < this.start.row)\n return -1;\n if (row > this.end.row)\n return 1;\n if (this.start.row === row)\n return column >= this.start.column ? 0 : -1;\n if (this.end.row === row)\n return column <= this.end.column ? 0 : 1;\n return 0;\n };\n Range.prototype.compareStart = function (row, column) {\n if (this.start.row == row && this.start.column == column) {\n return -1;\n }\n else {\n return this.compare(row, column);\n }\n };\n Range.prototype.compareEnd = function (row, column) {\n if (this.end.row == row && this.end.column == column) {\n return 1;\n }\n else {\n return this.compare(row, column);\n }\n };\n Range.prototype.compareInside = function (row, column) {\n if (this.end.row == row && this.end.column == column) {\n return 1;\n }\n else if (this.start.row == row && this.start.column == column) {\n return -1;\n }\n else {\n return this.compare(row, column);\n }\n };\n Range.prototype.clipRows = function (firstRow, lastRow) {\n if (this.end.row > lastRow)\n var end = { row: lastRow + 1, column: 0 };\n else if (this.end.row < firstRow)\n var end = { row: firstRow, column: 0 };\n if (this.start.row > lastRow)\n var start = { row: lastRow + 1, column: 0 };\n else if (this.start.row < firstRow)\n var start = { row: firstRow, column: 0 };\n return Range.fromPoints(start || this.start, end || this.end);\n };\n Range.prototype.extend = function (row, column) {\n var cmp = this.compare(row, column);\n if (cmp == 0)\n return this;\n else if (cmp == -1)\n var start = { row: row, column: column };\n else\n var end = { row: row, column: column };\n return Range.fromPoints(start || this.start, end || this.end);\n };\n Range.prototype.isEmpty = function () {\n return (this.start.row === this.end.row && this.start.column === this.end.column);\n };\n Range.prototype.isMultiLine = function () {\n return (this.start.row !== this.end.row);\n };\n Range.prototype.clone = function () {\n return Range.fromPoints(this.start, this.end);\n };\n Range.prototype.collapseRows = function () {\n if (this.end.column == 0)\n return new Range(this.start.row, 0, Math.max(this.start.row, this.end.row - 1), 0);\n else\n return new Range(this.start.row, 0, this.end.row, 0);\n };\n Range.prototype.toScreenRange = function (session) {\n var screenPosStart = session.documentToScreenPosition(this.start);\n var screenPosEnd = session.documentToScreenPosition(this.end);\n return new Range(screenPosStart.row, screenPosStart.column, screenPosEnd.row, screenPosEnd.column);\n };\n Range.prototype.moveBy = function (row, column) {\n this.start.row += row;\n this.start.column += column;\n this.end.row += row;\n this.end.column += column;\n };\n return Range;\n}());\nRange.fromPoints = function (start, end) {\n return new Range(start.row, start.column, end.row, end.column);\n};\nRange.comparePoints = comparePoints;\nRange.comparePoints = function (p1, p2) {\n return p1.row - p2.row || p1.column - p2.column;\n};\nexports.Range = Range;\n\n});\n\nace.define(\"ace/lib/keys\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\"], function(require, exports, module){/*! @license\n==========================================================================\nSproutCore -- JavaScript Application Framework\ncopyright 2006-2009, Sprout Systems Inc., Apple Inc. and contributors.\n\nPermission is hereby granted, free of charge, to any person obtaining a\ncopy of this software and associated documentation files (the \"Software\"),\nto deal in the Software without restriction, including without limitation\nthe rights to use, copy, modify, merge, publish, distribute, sublicense,\nand/or sell copies of the Software, and to permit persons to whom the\nSoftware is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\nFROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n\nSproutCore and the SproutCore logo are trademarks of Sprout Systems, Inc.\n\nFor more information about SproutCore, visit http://www.sproutcore.com\n\n\n==========================================================================\n@license */\n\"use strict\";\nvar oop = require(\"./oop\");\nvar Keys = (function () {\n var ret = {\n MODIFIER_KEYS: {\n 16: 'Shift', 17: 'Ctrl', 18: 'Alt', 224: 'Meta',\n 91: 'MetaLeft', 92: 'MetaRight', 93: 'ContextMenu'\n },\n KEY_MODS: {\n \"ctrl\": 1, \"alt\": 2, \"option\": 2, \"shift\": 4,\n \"super\": 8, \"meta\": 8, \"command\": 8, \"cmd\": 8,\n \"control\": 1\n },\n FUNCTION_KEYS: {\n 8: \"Backspace\",\n 9: \"Tab\",\n 13: \"Return\",\n 19: \"Pause\",\n 27: \"Esc\",\n 32: \"Space\",\n 33: \"PageUp\",\n 34: \"PageDown\",\n 35: \"End\",\n 36: \"Home\",\n 37: \"Left\",\n 38: \"Up\",\n 39: \"Right\",\n 40: \"Down\",\n 44: \"Print\",\n 45: \"Insert\",\n 46: \"Delete\",\n 96: \"Numpad0\",\n 97: \"Numpad1\",\n 98: \"Numpad2\",\n 99: \"Numpad3\",\n 100: \"Numpad4\",\n 101: \"Numpad5\",\n 102: \"Numpad6\",\n 103: \"Numpad7\",\n 104: \"Numpad8\",\n 105: \"Numpad9\",\n '-13': \"NumpadEnter\",\n 112: \"F1\",\n 113: \"F2\",\n 114: \"F3\",\n 115: \"F4\",\n 116: \"F5\",\n 117: \"F6\",\n 118: \"F7\",\n 119: \"F8\",\n 120: \"F9\",\n 121: \"F10\",\n 122: \"F11\",\n 123: \"F12\",\n 144: \"Numlock\",\n 145: \"Scrolllock\"\n },\n PRINTABLE_KEYS: {\n 32: ' ', 48: '0', 49: '1', 50: '2', 51: '3', 52: '4', 53: '5',\n 54: '6', 55: '7', 56: '8', 57: '9', 59: ';', 61: '=', 65: 'a',\n 66: 'b', 67: 'c', 68: 'd', 69: 'e', 70: 'f', 71: 'g', 72: 'h',\n 73: 'i', 74: 'j', 75: 'k', 76: 'l', 77: 'm', 78: 'n', 79: 'o',\n 80: 'p', 81: 'q', 82: 'r', 83: 's', 84: 't', 85: 'u', 86: 'v',\n 87: 'w', 88: 'x', 89: 'y', 90: 'z', 107: '+', 109: '-', 110: '.',\n 186: ';', 187: '=', 188: ',', 189: '-', 190: '.', 191: '/', 192: '`',\n 219: '[', 220: '\\\\', 221: ']', 222: \"'\", 111: '/', 106: '*'\n }\n };\n ret.PRINTABLE_KEYS[173] = '-';\n var name, i;\n for (i in ret.FUNCTION_KEYS) {\n name = ret.FUNCTION_KEYS[i].toLowerCase();\n ret[name] = parseInt(i, 10);\n }\n for (i in ret.PRINTABLE_KEYS) {\n name = ret.PRINTABLE_KEYS[i].toLowerCase();\n ret[name] = parseInt(i, 10);\n }\n oop.mixin(ret, ret.MODIFIER_KEYS);\n oop.mixin(ret, ret.PRINTABLE_KEYS);\n oop.mixin(ret, ret.FUNCTION_KEYS);\n ret.enter = ret[\"return\"];\n ret.escape = ret.esc;\n ret.del = ret[\"delete\"];\n (function () {\n var mods = [\"cmd\", \"ctrl\", \"alt\", \"shift\"];\n for (var i = Math.pow(2, mods.length); i--;) {\n ret.KEY_MODS[i] = mods.filter(function (x) {\n return i & ret.KEY_MODS[x];\n }).join(\"-\") + \"-\";\n }\n })();\n ret.KEY_MODS[0] = \"\";\n ret.KEY_MODS[-1] = \"input-\";\n return ret;\n})();\noop.mixin(exports, Keys);\nexports.default = exports;\nexports.keyCodeToString = function (keyCode) {\n var keyString = Keys[keyCode];\n if (typeof keyString != \"string\")\n keyString = String.fromCharCode(keyCode);\n return keyString.toLowerCase();\n};\n\n});\n\nace.define(\"ace/lib/event\",[\"require\",\"exports\",\"module\",\"ace/lib/keys\",\"ace/lib/useragent\"], function(require, exports, module){\"use strict\";\nvar keys = require(\"./keys\");\nvar useragent = require(\"./useragent\");\nvar pressedKeys = null;\nvar ts = 0;\nvar activeListenerOptions;\nfunction detectListenerOptionsSupport() {\n activeListenerOptions = false;\n try {\n document.createComment(\"\").addEventListener(\"test\", function () { }, {\n get passive() {\n activeListenerOptions = { passive: false };\n }\n });\n }\n catch (e) { }\n}\nfunction getListenerOptions() {\n if (activeListenerOptions == undefined)\n detectListenerOptionsSupport();\n return activeListenerOptions;\n}\nfunction EventListener(elem, type, callback) {\n this.elem = elem;\n this.type = type;\n this.callback = callback;\n}\nEventListener.prototype.destroy = function () {\n removeListener(this.elem, this.type, this.callback);\n this.elem = this.type = this.callback = undefined;\n};\nvar addListener = exports.addListener = function (elem, type, callback, destroyer) {\n elem.addEventListener(type, callback, getListenerOptions());\n if (destroyer)\n destroyer.$toDestroy.push(new EventListener(elem, type, callback));\n};\nvar removeListener = exports.removeListener = function (elem, type, callback) {\n elem.removeEventListener(type, callback, getListenerOptions());\n};\nexports.stopEvent = function (e) {\n exports.stopPropagation(e);\n exports.preventDefault(e);\n return false;\n};\nexports.stopPropagation = function (e) {\n if (e.stopPropagation)\n e.stopPropagation();\n};\nexports.preventDefault = function (e) {\n if (e.preventDefault)\n e.preventDefault();\n};\nexports.getButton = function (e) {\n if (e.type == \"dblclick\")\n return 0;\n if (e.type == \"contextmenu\" || (useragent.isMac && (e.ctrlKey && !e.altKey && !e.shiftKey)))\n return 2;\n return e.button;\n};\nexports.capture = function (el, eventHandler, releaseCaptureHandler) {\n var ownerDocument = el && el.ownerDocument || document;\n function onMouseUp(e) {\n eventHandler && eventHandler(e);\n releaseCaptureHandler && releaseCaptureHandler(e);\n removeListener(ownerDocument, \"mousemove\", eventHandler);\n removeListener(ownerDocument, \"mouseup\", onMouseUp);\n removeListener(ownerDocument, \"dragstart\", onMouseUp);\n }\n addListener(ownerDocument, \"mousemove\", eventHandler);\n addListener(ownerDocument, \"mouseup\", onMouseUp);\n addListener(ownerDocument, \"dragstart\", onMouseUp);\n return onMouseUp;\n};\nexports.addMouseWheelListener = function (el, callback, destroyer) {\n addListener(el, \"wheel\", function (e) {\n var factor = 0.15;\n var deltaX = e.deltaX || 0;\n var deltaY = e.deltaY || 0;\n switch (e.deltaMode) {\n case e.DOM_DELTA_PIXEL:\n e.wheelX = deltaX * factor;\n e.wheelY = deltaY * factor;\n break;\n case e.DOM_DELTA_LINE:\n var linePixels = 15;\n e.wheelX = deltaX * linePixels;\n e.wheelY = deltaY * linePixels;\n break;\n case e.DOM_DELTA_PAGE:\n var pagePixels = 150;\n e.wheelX = deltaX * pagePixels;\n e.wheelY = deltaY * pagePixels;\n break;\n }\n callback(e);\n }, destroyer);\n};\nexports.addMultiMouseDownListener = function (elements, timeouts, eventHandler, callbackName, destroyer) {\n var clicks = 0;\n var startX, startY, timer;\n var eventNames = {\n 2: \"dblclick\",\n 3: \"tripleclick\",\n 4: \"quadclick\"\n };\n function onMousedown(e) {\n if (exports.getButton(e) !== 0) {\n clicks = 0;\n }\n else if (e.detail > 1) {\n clicks++;\n if (clicks > 4)\n clicks = 1;\n }\n else {\n clicks = 1;\n }\n if (useragent.isIE) {\n var isNewClick = Math.abs(e.clientX - startX) > 5 || Math.abs(e.clientY - startY) > 5;\n if (!timer || isNewClick)\n clicks = 1;\n if (timer)\n clearTimeout(timer);\n timer = setTimeout(function () { timer = null; }, timeouts[clicks - 1] || 600);\n if (clicks == 1) {\n startX = e.clientX;\n startY = e.clientY;\n }\n }\n e._clicks = clicks;\n eventHandler[callbackName](\"mousedown\", e);\n if (clicks > 4)\n clicks = 0;\n else if (clicks > 1)\n return eventHandler[callbackName](eventNames[clicks], e);\n }\n if (!Array.isArray(elements))\n elements = [elements];\n elements.forEach(function (el) {\n addListener(el, \"mousedown\", onMousedown, destroyer);\n });\n};\nvar getModifierHash = function (e) {\n return 0 | (e.ctrlKey ? 1 : 0) | (e.altKey ? 2 : 0) | (e.shiftKey ? 4 : 0) | (e.metaKey ? 8 : 0);\n};\nexports.getModifierString = function (e) {\n return keys.KEY_MODS[getModifierHash(e)];\n};\nfunction normalizeCommandKeys(callback, e, keyCode) {\n var hashId = getModifierHash(e);\n if (!useragent.isMac && pressedKeys) {\n if (e.getModifierState && (e.getModifierState(\"OS\") || e.getModifierState(\"Win\")))\n hashId |= 8;\n if (pressedKeys.altGr) {\n if ((3 & hashId) != 3)\n pressedKeys.altGr = 0;\n else\n return;\n }\n if (keyCode === 18 || keyCode === 17) {\n var location = \"location\" in e ? e.location : e.keyLocation;\n if (keyCode === 17 && location === 1) {\n if (pressedKeys[keyCode] == 1)\n ts = e.timeStamp;\n }\n else if (keyCode === 18 && hashId === 3 && location === 2) {\n var dt = e.timeStamp - ts;\n if (dt < 50)\n pressedKeys.altGr = true;\n }\n }\n }\n if (keyCode in keys.MODIFIER_KEYS) {\n keyCode = -1;\n }\n if (!hashId && keyCode === 13) {\n var location = \"location\" in e ? e.location : e.keyLocation;\n if (location === 3) {\n callback(e, hashId, -keyCode);\n if (e.defaultPrevented)\n return;\n }\n }\n if (useragent.isChromeOS && hashId & 8) {\n callback(e, hashId, keyCode);\n if (e.defaultPrevented)\n return;\n else\n hashId &= ~8;\n }\n if (!hashId && !(keyCode in keys.FUNCTION_KEYS) && !(keyCode in keys.PRINTABLE_KEYS)) {\n return false;\n }\n return callback(e, hashId, keyCode);\n}\nexports.addCommandKeyListener = function (el, callback, destroyer) {\n if (useragent.isOldGecko || (useragent.isOpera && !(\"KeyboardEvent\" in window))) {\n var lastKeyDownKeyCode = null;\n addListener(el, \"keydown\", function (e) {\n lastKeyDownKeyCode = e.keyCode;\n }, destroyer);\n addListener(el, \"keypress\", function (e) {\n return normalizeCommandKeys(callback, e, lastKeyDownKeyCode);\n }, destroyer);\n }\n else {\n var lastDefaultPrevented = null;\n addListener(el, \"keydown\", function (e) {\n pressedKeys[e.keyCode] = (pressedKeys[e.keyCode] || 0) + 1;\n var result = normalizeCommandKeys(callback, e, e.keyCode);\n lastDefaultPrevented = e.defaultPrevented;\n return result;\n }, destroyer);\n addListener(el, \"keypress\", function (e) {\n if (lastDefaultPrevented && (e.ctrlKey || e.altKey || e.shiftKey || e.metaKey)) {\n exports.stopEvent(e);\n lastDefaultPrevented = null;\n }\n }, destroyer);\n addListener(el, \"keyup\", function (e) {\n pressedKeys[e.keyCode] = null;\n }, destroyer);\n if (!pressedKeys) {\n resetPressedKeys();\n addListener(window, \"focus\", resetPressedKeys);\n }\n }\n};\nfunction resetPressedKeys() {\n pressedKeys = Object.create(null);\n}\nif (typeof window == \"object\" && window.postMessage && !useragent.isOldIE) {\n var postMessageId = 1;\n exports.nextTick = function (callback, win) {\n win = win || window;\n var messageName = \"zero-timeout-message-\" + (postMessageId++);\n var listener = function (e) {\n if (e.data == messageName) {\n exports.stopPropagation(e);\n removeListener(win, \"message\", listener);\n callback();\n }\n };\n addListener(win, \"message\", listener);\n win.postMessage(messageName, \"*\");\n };\n}\nexports.$idleBlocked = false;\nexports.onIdle = function (cb, timeout) {\n return setTimeout(function handler() {\n if (!exports.$idleBlocked) {\n cb();\n }\n else {\n setTimeout(handler, 100);\n }\n }, timeout);\n};\nexports.$idleBlockId = null;\nexports.blockIdle = function (delay) {\n if (exports.$idleBlockId)\n clearTimeout(exports.$idleBlockId);\n exports.$idleBlocked = true;\n exports.$idleBlockId = setTimeout(function () {\n exports.$idleBlocked = false;\n }, delay || 100);\n};\nexports.nextFrame = typeof window == \"object\" && (window.requestAnimationFrame\n || window.mozRequestAnimationFrame\n || window.webkitRequestAnimationFrame\n || window.msRequestAnimationFrame\n || window.oRequestAnimationFrame);\nif (exports.nextFrame)\n exports.nextFrame = exports.nextFrame.bind(window);\nelse\n exports.nextFrame = function (callback) {\n setTimeout(callback, 17);\n };\n\n});\n\nace.define(\"ace/clipboard\",[\"require\",\"exports\",\"module\"], function(require, exports, module){\"use strict\";\nvar $cancelT;\nmodule.exports = {\n lineMode: false,\n pasteCancelled: function () {\n if ($cancelT && $cancelT > Date.now() - 50)\n return true;\n return $cancelT = false;\n },\n cancel: function () {\n $cancelT = Date.now();\n }\n};\n\n});\n\nace.define(\"ace/keyboard/textinput\",[\"require\",\"exports\",\"module\",\"ace/lib/event\",\"ace/config\",\"ace/lib/useragent\",\"ace/lib/dom\",\"ace/lib/lang\",\"ace/clipboard\",\"ace/lib/keys\"], function(require, exports, module){\"use strict\";\nvar event = require(\"../lib/event\");\nvar nls = require(\"../config\").nls;\nvar useragent = require(\"../lib/useragent\");\nvar dom = require(\"../lib/dom\");\nvar lang = require(\"../lib/lang\");\nvar clipboard = require(\"../clipboard\");\nvar BROKEN_SETDATA = useragent.isChrome < 18;\nvar USE_IE_MIME_TYPE = useragent.isIE;\nvar HAS_FOCUS_ARGS = useragent.isChrome > 63;\nvar MAX_LINE_LENGTH = 400;\nvar KEYS = require(\"../lib/keys\");\nvar MODS = KEYS.KEY_MODS;\nvar isIOS = useragent.isIOS;\nvar valueResetRegex = isIOS ? /\\s/ : /\\n/;\nvar isMobile = useragent.isMobile;\nvar TextInput = function (parentNode, host) {\n var text = dom.createElement(\"textarea\");\n text.className = \"ace_text-input\";\n text.setAttribute(\"wrap\", \"off\");\n text.setAttribute(\"autocorrect\", \"off\");\n text.setAttribute(\"autocapitalize\", \"off\");\n text.setAttribute(\"spellcheck\", false);\n text.style.opacity = \"0\";\n parentNode.insertBefore(text, parentNode.firstChild);\n var copied = false;\n var pasted = false;\n var inComposition = false;\n var sendingText = false;\n var tempStyle = '';\n if (!isMobile)\n text.style.fontSize = \"1px\";\n var commandMode = false;\n var ignoreFocusEvents = false;\n var lastValue = \"\";\n var lastSelectionStart = 0;\n var lastSelectionEnd = 0;\n var lastRestoreEnd = 0;\n var rowStart = Number.MAX_SAFE_INTEGER;\n var rowEnd = Number.MIN_SAFE_INTEGER;\n var numberOfExtraLines = 0;\n try {\n var isFocused = document.activeElement === text;\n }\n catch (e) { }\n this.setNumberOfExtraLines = function (number) {\n rowStart = Number.MAX_SAFE_INTEGER;\n rowEnd = Number.MIN_SAFE_INTEGER;\n if (number < 0) {\n numberOfExtraLines = 0;\n return;\n }\n numberOfExtraLines = number;\n };\n this.setAriaOptions = function (options) {\n if (options.activeDescendant) {\n text.setAttribute(\"aria-haspopup\", \"true\");\n text.setAttribute(\"aria-autocomplete\", options.inline ? \"both\" : \"list\");\n text.setAttribute(\"aria-activedescendant\", options.activeDescendant);\n }\n else {\n text.setAttribute(\"aria-haspopup\", \"false\");\n text.setAttribute(\"aria-autocomplete\", \"both\");\n text.removeAttribute(\"aria-activedescendant\");\n }\n if (options.role) {\n text.setAttribute(\"role\", options.role);\n }\n if (options.setLabel) {\n text.setAttribute(\"aria-roledescription\", nls(\"editor\"));\n if (host.session) {\n var row = host.session.selection.cursor.row;\n text.setAttribute(\"aria-label\", nls(\"Cursor at row $0\", [row + 1]));\n }\n }\n };\n this.setAriaOptions({ role: \"textbox\" });\n event.addListener(text, \"blur\", function (e) {\n if (ignoreFocusEvents)\n return;\n host.onBlur(e);\n isFocused = false;\n }, host);\n event.addListener(text, \"focus\", function (e) {\n if (ignoreFocusEvents)\n return;\n isFocused = true;\n if (useragent.isEdge) {\n try {\n if (!document.hasFocus())\n return;\n }\n catch (e) { }\n }\n host.onFocus(e);\n if (useragent.isEdge)\n setTimeout(resetSelection);\n else\n resetSelection();\n }, host);\n this.$focusScroll = false;\n this.focus = function () {\n this.setAriaOptions({\n setLabel: host.renderer.enableKeyboardAccessibility\n });\n if (tempStyle || HAS_FOCUS_ARGS || this.$focusScroll == \"browser\")\n return text.focus({ preventScroll: true });\n var top = text.style.top;\n text.style.position = \"fixed\";\n text.style.top = \"0px\";\n try {\n var isTransformed = text.getBoundingClientRect().top != 0;\n }\n catch (e) {\n return;\n }\n var ancestors = [];\n if (isTransformed) {\n var t = text.parentElement;\n while (t && t.nodeType == 1) {\n ancestors.push(t);\n t.setAttribute(\"ace_nocontext\", true);\n if (!t.parentElement && t.getRootNode)\n t = t.getRootNode().host;\n else\n t = t.parentElement;\n }\n }\n text.focus({ preventScroll: true });\n if (isTransformed) {\n ancestors.forEach(function (p) {\n p.removeAttribute(\"ace_nocontext\");\n });\n }\n setTimeout(function () {\n text.style.position = \"\";\n if (text.style.top == \"0px\")\n text.style.top = top;\n }, 0);\n };\n this.blur = function () {\n text.blur();\n };\n this.isFocused = function () {\n return isFocused;\n };\n host.on(\"beforeEndOperation\", function () {\n var curOp = host.curOp;\n var commandName = curOp && curOp.command && curOp.command.name;\n if (commandName == \"insertstring\")\n return;\n var isUserAction = commandName && (curOp.docChanged || curOp.selectionChanged);\n if (inComposition && isUserAction) {\n lastValue = text.value = \"\";\n onCompositionEnd();\n }\n resetSelection();\n });\n var positionToSelection = function (row, column) {\n var selection = column;\n for (var i = 1; i <= row - rowStart && i < 2 * numberOfExtraLines + 1; i++) {\n selection += host.session.getLine(row - i).length + 1;\n }\n return selection;\n };\n var resetSelection = isIOS\n ? function (value) {\n if (!isFocused || (copied && !value) || sendingText)\n return;\n if (!value)\n value = \"\";\n var newValue = \"\\n ab\" + value + \"cde fg\\n\";\n if (newValue != text.value)\n text.value = lastValue = newValue;\n var selectionStart = 4;\n var selectionEnd = 4 + (value.length || (host.selection.isEmpty() ? 0 : 1));\n if (lastSelectionStart != selectionStart || lastSelectionEnd != selectionEnd) {\n text.setSelectionRange(selectionStart, selectionEnd);\n }\n lastSelectionStart = selectionStart;\n lastSelectionEnd = selectionEnd;\n }\n : function () {\n if (inComposition || sendingText)\n return;\n if (!isFocused && !afterContextMenu)\n return;\n inComposition = true;\n var selectionStart = 0;\n var selectionEnd = 0;\n var line = \"\";\n if (host.session) {\n var selection = host.selection;\n var range = selection.getRange();\n var row = selection.cursor.row;\n if (row === rowEnd + 1) {\n rowStart = rowEnd + 1;\n rowEnd = rowStart + 2 * numberOfExtraLines;\n }\n else if (row === rowStart - 1) {\n rowEnd = rowStart - 1;\n rowStart = rowEnd - 2 * numberOfExtraLines;\n }\n else if (row < rowStart - 1 || row > rowEnd + 1) {\n rowStart = row > numberOfExtraLines ? row - numberOfExtraLines : 0;\n rowEnd = row > numberOfExtraLines ? row + numberOfExtraLines : 2 * numberOfExtraLines;\n }\n var lines = [];\n for (var i = rowStart; i <= rowEnd; i++) {\n lines.push(host.session.getLine(i));\n }\n line = lines.join('\\n');\n selectionStart = positionToSelection(range.start.row, range.start.column);\n selectionEnd = positionToSelection(range.end.row, range.end.column);\n if (range.start.row < rowStart) {\n var prevLine = host.session.getLine(rowStart - 1);\n selectionStart = range.start.row < rowStart - 1 ? 0 : selectionStart;\n selectionEnd += prevLine.length + 1;\n line = prevLine + \"\\n\" + line;\n }\n else if (range.end.row > rowEnd) {\n var nextLine = host.session.getLine(rowEnd + 1);\n selectionEnd = range.end.row > rowEnd + 1 ? nextLine.length : range.end.column;\n selectionEnd += line.length + 1;\n line = line + \"\\n\" + nextLine;\n }\n else if (isMobile && row > 0) {\n line = \"\\n\" + line;\n selectionEnd += 1;\n selectionStart += 1;\n }\n if (line.length > MAX_LINE_LENGTH) {\n if (selectionStart < MAX_LINE_LENGTH && selectionEnd < MAX_LINE_LENGTH) {\n line = line.slice(0, MAX_LINE_LENGTH);\n }\n else {\n line = \"\\n\";\n if (selectionStart == selectionEnd) {\n selectionStart = selectionEnd = 0;\n }\n else {\n selectionStart = 0;\n selectionEnd = 1;\n }\n }\n }\n var newValue = line + \"\\n\\n\";\n if (newValue != lastValue) {\n text.value = lastValue = newValue;\n lastSelectionStart = lastSelectionEnd = newValue.length;\n }\n }\n if (afterContextMenu) {\n lastSelectionStart = text.selectionStart;\n lastSelectionEnd = text.selectionEnd;\n }\n if (lastSelectionEnd != selectionEnd\n || lastSelectionStart != selectionStart\n || text.selectionEnd != lastSelectionEnd // on ie edge selectionEnd changes silently after the initialization\n ) {\n try {\n text.setSelectionRange(selectionStart, selectionEnd);\n lastSelectionStart = selectionStart;\n lastSelectionEnd = selectionEnd;\n }\n catch (e) { }\n }\n inComposition = false;\n };\n this.resetSelection = resetSelection;\n if (isFocused)\n host.onFocus();\n var isAllSelected = function (text) {\n return text.selectionStart === 0 && text.selectionEnd >= lastValue.length\n && text.value === lastValue && lastValue\n && text.selectionEnd !== lastSelectionEnd;\n };\n var onSelect = function (e) {\n if (inComposition)\n return;\n if (copied) {\n copied = false;\n }\n else if (isAllSelected(text)) {\n host.selectAll();\n resetSelection();\n }\n else if (isMobile && text.selectionStart != lastSelectionStart) {\n resetSelection();\n }\n };\n var inputHandler = null;\n this.setInputHandler = function (cb) { inputHandler = cb; };\n this.getInputHandler = function () { return inputHandler; };\n var afterContextMenu = false;\n var sendText = function (value, fromInput) {\n if (afterContextMenu)\n afterContextMenu = false;\n if (pasted) {\n resetSelection();\n if (value)\n host.onPaste(value);\n pasted = false;\n return \"\";\n }\n else {\n var selectionStart = text.selectionStart;\n var selectionEnd = text.selectionEnd;\n var extendLeft = lastSelectionStart;\n var extendRight = lastValue.length - lastSelectionEnd;\n var inserted = value;\n var restoreStart = value.length - selectionStart;\n var restoreEnd = value.length - selectionEnd;\n var i = 0;\n while (extendLeft > 0 && lastValue[i] == value[i]) {\n i++;\n extendLeft--;\n }\n inserted = inserted.slice(i);\n i = 1;\n while (extendRight > 0 && lastValue.length - i > lastSelectionStart - 1 && lastValue[lastValue.length - i] == value[value.length - i]) {\n i++;\n extendRight--;\n }\n restoreStart -= i - 1;\n restoreEnd -= i - 1;\n var endIndex = inserted.length - i + 1;\n if (endIndex < 0) {\n extendLeft = -endIndex;\n endIndex = 0;\n }\n inserted = inserted.slice(0, endIndex);\n if (!fromInput && !inserted && !restoreStart && !extendLeft && !extendRight && !restoreEnd)\n return \"\";\n sendingText = true;\n var shouldReset = false;\n if (useragent.isAndroid && inserted == \". \") {\n inserted = \" \";\n shouldReset = true;\n }\n if (inserted && !extendLeft && !extendRight && !restoreStart && !restoreEnd || commandMode) {\n host.onTextInput(inserted);\n }\n else {\n host.onTextInput(inserted, {\n extendLeft: extendLeft,\n extendRight: extendRight,\n restoreStart: restoreStart,\n restoreEnd: restoreEnd\n });\n }\n sendingText = false;\n lastValue = value;\n lastSelectionStart = selectionStart;\n lastSelectionEnd = selectionEnd;\n lastRestoreEnd = restoreEnd;\n return shouldReset ? \"\\n\" : inserted;\n }\n };\n var onInput = function (e) {\n if (inComposition)\n return onCompositionUpdate();\n if (e && e.inputType) {\n if (e.inputType == \"historyUndo\")\n return host.execCommand(\"undo\");\n if (e.inputType == \"historyRedo\")\n return host.execCommand(\"redo\");\n }\n var data = text.value;\n var inserted = sendText(data, true);\n if (data.length > MAX_LINE_LENGTH + 100\n || valueResetRegex.test(inserted)\n || isMobile && lastSelectionStart < 1 && lastSelectionStart == lastSelectionEnd) {\n resetSelection();\n }\n };\n var handleClipboardData = function (e, data, forceIEMime) {\n var clipboardData = e.clipboardData || window.clipboardData;\n if (!clipboardData || BROKEN_SETDATA)\n return;\n var mime = USE_IE_MIME_TYPE || forceIEMime ? \"Text\" : \"text/plain\";\n try {\n if (data) {\n return clipboardData.setData(mime, data) !== false;\n }\n else {\n return clipboardData.getData(mime);\n }\n }\n catch (e) {\n if (!forceIEMime)\n return handleClipboardData(e, data, true);\n }\n };\n var doCopy = function (e, isCut) {\n var data = host.getCopyText();\n if (!data)\n return event.preventDefault(e);\n if (handleClipboardData(e, data)) {\n if (isIOS) {\n resetSelection(data);\n copied = data;\n setTimeout(function () {\n copied = false;\n }, 10);\n }\n isCut ? host.onCut() : host.onCopy();\n event.preventDefault(e);\n }\n else {\n copied = true;\n text.value = data;\n text.select();\n setTimeout(function () {\n copied = false;\n resetSelection();\n isCut ? host.onCut() : host.onCopy();\n });\n }\n };\n var onCut = function (e) {\n doCopy(e, true);\n };\n var onCopy = function (e) {\n doCopy(e, false);\n };\n var onPaste = function (e) {\n var data = handleClipboardData(e);\n if (clipboard.pasteCancelled())\n return;\n if (typeof data == \"string\") {\n if (data)\n host.onPaste(data, e);\n if (useragent.isIE)\n setTimeout(resetSelection);\n event.preventDefault(e);\n }\n else {\n text.value = \"\";\n pasted = true;\n }\n };\n event.addCommandKeyListener(text, host.onCommandKey.bind(host), host);\n event.addListener(text, \"select\", onSelect, host);\n event.addListener(text, \"input\", onInput, host);\n event.addListener(text, \"cut\", onCut, host);\n event.addListener(text, \"copy\", onCopy, host);\n event.addListener(text, \"paste\", onPaste, host);\n if (!('oncut' in text) || !('oncopy' in text) || !('onpaste' in text)) {\n event.addListener(parentNode, \"keydown\", function (e) {\n if ((useragent.isMac && !e.metaKey) || !e.ctrlKey)\n return;\n switch (e.keyCode) {\n case 67:\n onCopy(e);\n break;\n case 86:\n onPaste(e);\n break;\n case 88:\n onCut(e);\n break;\n }\n }, host);\n }\n var onCompositionStart = function (e) {\n if (inComposition || !host.onCompositionStart || host.$readOnly)\n return;\n inComposition = {};\n if (commandMode)\n return;\n if (e.data)\n inComposition.useTextareaForIME = false;\n setTimeout(onCompositionUpdate, 0);\n host._signal(\"compositionStart\");\n host.on(\"mousedown\", cancelComposition);\n var range = host.getSelectionRange();\n range.end.row = range.start.row;\n range.end.column = range.start.column;\n inComposition.markerRange = range;\n inComposition.selectionStart = lastSelectionStart;\n host.onCompositionStart(inComposition);\n if (inComposition.useTextareaForIME) {\n lastValue = text.value = \"\";\n lastSelectionStart = 0;\n lastSelectionEnd = 0;\n }\n else {\n if (text.msGetInputContext)\n inComposition.context = text.msGetInputContext();\n if (text.getInputContext)\n inComposition.context = text.getInputContext();\n }\n };\n var onCompositionUpdate = function () {\n if (!inComposition || !host.onCompositionUpdate || host.$readOnly)\n return;\n if (commandMode)\n return cancelComposition();\n if (inComposition.useTextareaForIME) {\n host.onCompositionUpdate(text.value);\n }\n else {\n var data = text.value;\n sendText(data);\n if (inComposition.markerRange) {\n if (inComposition.context) {\n inComposition.markerRange.start.column = inComposition.selectionStart\n = inComposition.context.compositionStartOffset;\n }\n inComposition.markerRange.end.column = inComposition.markerRange.start.column\n + lastSelectionEnd - inComposition.selectionStart + lastRestoreEnd;\n }\n }\n };\n var onCompositionEnd = function (e) {\n if (!host.onCompositionEnd || host.$readOnly)\n return;\n inComposition = false;\n host.onCompositionEnd();\n host.off(\"mousedown\", cancelComposition);\n if (e)\n onInput();\n };\n function cancelComposition() {\n ignoreFocusEvents = true;\n text.blur();\n text.focus();\n ignoreFocusEvents = false;\n }\n var syncComposition = lang.delayedCall(onCompositionUpdate, 50).schedule.bind(null, null);\n function onKeyup(e) {\n if (e.keyCode == 27 && text.value.length < text.selectionStart) {\n if (!inComposition)\n lastValue = text.value;\n lastSelectionStart = lastSelectionEnd = -1;\n resetSelection();\n }\n syncComposition();\n }\n event.addListener(text, \"compositionstart\", onCompositionStart, host);\n event.addListener(text, \"compositionupdate\", onCompositionUpdate, host);\n event.addListener(text, \"keyup\", onKeyup, host);\n event.addListener(text, \"keydown\", syncComposition, host);\n event.addListener(text, \"compositionend\", onCompositionEnd, host);\n this.getElement = function () {\n return text;\n };\n this.setCommandMode = function (value) {\n commandMode = value;\n text.readOnly = false;\n };\n this.setReadOnly = function (readOnly) {\n if (!commandMode)\n text.readOnly = readOnly;\n };\n this.setCopyWithEmptySelection = function (value) {\n };\n this.onContextMenu = function (e) {\n afterContextMenu = true;\n resetSelection();\n host._emit(\"nativecontextmenu\", { target: host, domEvent: e });\n this.moveToMouse(e, true);\n };\n this.moveToMouse = function (e, bringToFront) {\n if (!tempStyle)\n tempStyle = text.style.cssText;\n text.style.cssText = (bringToFront ? \"z-index:100000;\" : \"\")\n + (useragent.isIE ? \"opacity:0.1;\" : \"\")\n + \"text-indent: -\" + (lastSelectionStart + lastSelectionEnd) * host.renderer.characterWidth * 0.5 + \"px;\";\n var rect = host.container.getBoundingClientRect();\n var style = dom.computedStyle(host.container);\n var top = rect.top + (parseInt(style.borderTopWidth) || 0);\n var left = rect.left + (parseInt(rect.borderLeftWidth) || 0);\n var maxTop = rect.bottom - top - text.clientHeight - 2;\n var move = function (e) {\n dom.translate(text, e.clientX - left - 2, Math.min(e.clientY - top - 2, maxTop));\n };\n move(e);\n if (e.type != \"mousedown\")\n return;\n host.renderer.$isMousePressed = true;\n clearTimeout(closeTimeout);\n if (useragent.isWin)\n event.capture(host.container, move, onContextMenuClose);\n };\n this.onContextMenuClose = onContextMenuClose;\n var closeTimeout;\n function onContextMenuClose() {\n clearTimeout(closeTimeout);\n closeTimeout = setTimeout(function () {\n if (tempStyle) {\n text.style.cssText = tempStyle;\n tempStyle = '';\n }\n host.renderer.$isMousePressed = false;\n if (host.renderer.$keepTextAreaAtCursor)\n host.renderer.$moveTextAreaToCursor();\n }, 0);\n }\n var onContextMenu = function (e) {\n host.textInput.onContextMenu(e);\n onContextMenuClose();\n };\n event.addListener(text, \"mouseup\", onContextMenu, host);\n event.addListener(text, \"mousedown\", function (e) {\n e.preventDefault();\n onContextMenuClose();\n }, host);\n event.addListener(host.renderer.scroller, \"contextmenu\", onContextMenu, host);\n event.addListener(text, \"contextmenu\", onContextMenu, host);\n if (isIOS)\n addIosSelectionHandler(parentNode, host, text);\n function addIosSelectionHandler(parentNode, host, text) {\n var typingResetTimeout = null;\n var typing = false;\n text.addEventListener(\"keydown\", function (e) {\n if (typingResetTimeout)\n clearTimeout(typingResetTimeout);\n typing = true;\n }, true);\n text.addEventListener(\"keyup\", function (e) {\n typingResetTimeout = setTimeout(function () {\n typing = false;\n }, 100);\n }, true);\n var detectArrowKeys = function (e) {\n if (document.activeElement !== text)\n return;\n if (typing || inComposition || host.$mouseHandler.isMousePressed)\n return;\n if (copied) {\n return;\n }\n var selectionStart = text.selectionStart;\n var selectionEnd = text.selectionEnd;\n var key = null;\n var modifier = 0;\n if (selectionStart == 0) {\n key = KEYS.up;\n }\n else if (selectionStart == 1) {\n key = KEYS.home;\n }\n else if (selectionEnd > lastSelectionEnd && lastValue[selectionEnd] == \"\\n\") {\n key = KEYS.end;\n }\n else if (selectionStart < lastSelectionStart && lastValue[selectionStart - 1] == \" \") {\n key = KEYS.left;\n modifier = MODS.option;\n }\n else if (selectionStart < lastSelectionStart\n || (selectionStart == lastSelectionStart\n && lastSelectionEnd != lastSelectionStart\n && selectionStart == selectionEnd)) {\n key = KEYS.left;\n }\n else if (selectionEnd > lastSelectionEnd && lastValue.slice(0, selectionEnd).split(\"\\n\").length > 2) {\n key = KEYS.down;\n }\n else if (selectionEnd > lastSelectionEnd && lastValue[selectionEnd - 1] == \" \") {\n key = KEYS.right;\n modifier = MODS.option;\n }\n else if (selectionEnd > lastSelectionEnd\n || (selectionEnd == lastSelectionEnd\n && lastSelectionEnd != lastSelectionStart\n && selectionStart == selectionEnd)) {\n key = KEYS.right;\n }\n if (selectionStart !== selectionEnd)\n modifier |= MODS.shift;\n if (key) {\n var result = host.onCommandKey({}, modifier, key);\n if (!result && host.commands) {\n key = KEYS.keyCodeToString(key);\n var command = host.commands.findKeyCommand(modifier, key);\n if (command)\n host.execCommand(command);\n }\n lastSelectionStart = selectionStart;\n lastSelectionEnd = selectionEnd;\n resetSelection(\"\");\n }\n };\n document.addEventListener(\"selectionchange\", detectArrowKeys);\n host.on(\"destroy\", function () {\n document.removeEventListener(\"selectionchange\", detectArrowKeys);\n });\n }\n this.destroy = function () {\n if (text.parentElement)\n text.parentElement.removeChild(text);\n };\n};\nexports.TextInput = TextInput;\nexports.$setUserAgentForTests = function (_isMobile, _isIOS) {\n isMobile = _isMobile;\n isIOS = _isIOS;\n};\n\n});\n\nace.define(\"ace/mouse/default_handlers\",[\"require\",\"exports\",\"module\",\"ace/lib/useragent\"], function(require, exports, module){\"use strict\";\nvar useragent = require(\"../lib/useragent\");\nvar DRAG_OFFSET = 0; // pixels\nvar SCROLL_COOLDOWN_T = 550; // milliseconds\nvar DefaultHandlers = /** @class */ (function () {\n function DefaultHandlers(mouseHandler) {\n mouseHandler.$clickSelection = null;\n var editor = mouseHandler.editor;\n editor.setDefaultHandler(\"mousedown\", this.onMouseDown.bind(mouseHandler));\n editor.setDefaultHandler(\"dblclick\", this.onDoubleClick.bind(mouseHandler));\n editor.setDefaultHandler(\"tripleclick\", this.onTripleClick.bind(mouseHandler));\n editor.setDefaultHandler(\"quadclick\", this.onQuadClick.bind(mouseHandler));\n editor.setDefaultHandler(\"mousewheel\", this.onMouseWheel.bind(mouseHandler));\n var exports = [\"select\", \"startSelect\", \"selectEnd\", \"selectAllEnd\", \"selectByWordsEnd\",\n \"selectByLinesEnd\", \"dragWait\", \"dragWaitEnd\", \"focusWait\"];\n exports.forEach(function (x) {\n mouseHandler[x] = this[x];\n }, this);\n mouseHandler.selectByLines = this.extendSelectionBy.bind(mouseHandler, \"getLineRange\");\n mouseHandler.selectByWords = this.extendSelectionBy.bind(mouseHandler, \"getWordRange\");\n }\n DefaultHandlers.prototype.onMouseDown = function (ev) {\n var inSelection = ev.inSelection();\n var pos = ev.getDocumentPosition();\n this.mousedownEvent = ev;\n var editor = this.editor;\n var button = ev.getButton();\n if (button !== 0) {\n var selectionRange = editor.getSelectionRange();\n var selectionEmpty = selectionRange.isEmpty();\n if (selectionEmpty || button == 1)\n editor.selection.moveToPosition(pos);\n if (button == 2) {\n editor.textInput.onContextMenu(ev.domEvent);\n if (!useragent.isMozilla)\n ev.preventDefault();\n }\n return;\n }\n this.mousedownEvent.time = Date.now();\n if (inSelection && !editor.isFocused()) {\n editor.focus();\n if (this.$focusTimeout && !this.$clickSelection && !editor.inMultiSelectMode) {\n this.setState(\"focusWait\");\n this.captureMouse(ev);\n return;\n }\n }\n this.captureMouse(ev);\n this.startSelect(pos, ev.domEvent._clicks > 1);\n return ev.preventDefault();\n };\n DefaultHandlers.prototype.startSelect = function (pos, waitForClickSelection) {\n pos = pos || this.editor.renderer.screenToTextCoordinates(this.x, this.y);\n var editor = this.editor;\n if (!this.mousedownEvent)\n return;\n if (this.mousedownEvent.getShiftKey())\n editor.selection.selectToPosition(pos);\n else if (!waitForClickSelection)\n editor.selection.moveToPosition(pos);\n if (!waitForClickSelection)\n this.select();\n editor.setStyle(\"ace_selecting\");\n this.setState(\"select\");\n };\n DefaultHandlers.prototype.select = function () {\n var anchor, editor = this.editor;\n var cursor = editor.renderer.screenToTextCoordinates(this.x, this.y);\n if (this.$clickSelection) {\n var cmp = this.$clickSelection.comparePoint(cursor);\n if (cmp == -1) {\n anchor = this.$clickSelection.end;\n }\n else if (cmp == 1) {\n anchor = this.$clickSelection.start;\n }\n else {\n var orientedRange = calcRangeOrientation(this.$clickSelection, cursor);\n cursor = orientedRange.cursor;\n anchor = orientedRange.anchor;\n }\n editor.selection.setSelectionAnchor(anchor.row, anchor.column);\n }\n editor.selection.selectToPosition(cursor);\n editor.renderer.scrollCursorIntoView();\n };\n DefaultHandlers.prototype.extendSelectionBy = function (unitName) {\n var anchor, editor = this.editor;\n var cursor = editor.renderer.screenToTextCoordinates(this.x, this.y);\n var range = editor.selection[unitName](cursor.row, cursor.column);\n if (this.$clickSelection) {\n var cmpStart = this.$clickSelection.comparePoint(range.start);\n var cmpEnd = this.$clickSelection.comparePoint(range.end);\n if (cmpStart == -1 && cmpEnd <= 0) {\n anchor = this.$clickSelection.end;\n if (range.end.row != cursor.row || range.end.column != cursor.column)\n cursor = range.start;\n }\n else if (cmpEnd == 1 && cmpStart >= 0) {\n anchor = this.$clickSelection.start;\n if (range.start.row != cursor.row || range.start.column != cursor.column)\n cursor = range.end;\n }\n else if (cmpStart == -1 && cmpEnd == 1) {\n cursor = range.end;\n anchor = range.start;\n }\n else {\n var orientedRange = calcRangeOrientation(this.$clickSelection, cursor);\n cursor = orientedRange.cursor;\n anchor = orientedRange.anchor;\n }\n editor.selection.setSelectionAnchor(anchor.row, anchor.column);\n }\n editor.selection.selectToPosition(cursor);\n editor.renderer.scrollCursorIntoView();\n };\n DefaultHandlers.prototype.selectByLinesEnd = function () {\n this.$clickSelection = null;\n this.editor.unsetStyle(\"ace_selecting\");\n };\n DefaultHandlers.prototype.focusWait = function () {\n var distance = calcDistance(this.mousedownEvent.x, this.mousedownEvent.y, this.x, this.y);\n var time = Date.now();\n if (distance > DRAG_OFFSET || time - this.mousedownEvent.time > this.$focusTimeout)\n this.startSelect(this.mousedownEvent.getDocumentPosition());\n };\n DefaultHandlers.prototype.onDoubleClick = function (ev) {\n var pos = ev.getDocumentPosition();\n var editor = this.editor;\n var session = editor.session;\n var range = session.getBracketRange(pos);\n if (range) {\n if (range.isEmpty()) {\n range.start.column--;\n range.end.column++;\n }\n this.setState(\"select\");\n }\n else {\n range = editor.selection.getWordRange(pos.row, pos.column);\n this.setState(\"selectByWords\");\n }\n this.$clickSelection = range;\n this.select();\n };\n DefaultHandlers.prototype.onTripleClick = function (ev) {\n var pos = ev.getDocumentPosition();\n var editor = this.editor;\n this.setState(\"selectByLines\");\n var range = editor.getSelectionRange();\n if (range.isMultiLine() && range.contains(pos.row, pos.column)) {\n this.$clickSelection = editor.selection.getLineRange(range.start.row);\n this.$clickSelection.end = editor.selection.getLineRange(range.end.row).end;\n }\n else {\n this.$clickSelection = editor.selection.getLineRange(pos.row);\n }\n this.select();\n };\n DefaultHandlers.prototype.onQuadClick = function (ev) {\n var editor = this.editor;\n editor.selectAll();\n this.$clickSelection = editor.getSelectionRange();\n this.setState(\"selectAll\");\n };\n DefaultHandlers.prototype.onMouseWheel = function (ev) {\n if (ev.getAccelKey())\n return;\n if (ev.getShiftKey() && ev.wheelY && !ev.wheelX) {\n ev.wheelX = ev.wheelY;\n ev.wheelY = 0;\n }\n var editor = this.editor;\n if (!this.$lastScroll)\n this.$lastScroll = { t: 0, vx: 0, vy: 0, allowed: 0 };\n var prevScroll = this.$lastScroll;\n var t = ev.domEvent.timeStamp;\n var dt = t - prevScroll.t;\n var vx = dt ? ev.wheelX / dt : prevScroll.vx;\n var vy = dt ? ev.wheelY / dt : prevScroll.vy;\n if (dt < SCROLL_COOLDOWN_T) {\n vx = (vx + prevScroll.vx) / 2;\n vy = (vy + prevScroll.vy) / 2;\n }\n var direction = Math.abs(vx / vy);\n var canScroll = false;\n if (direction >= 1 && editor.renderer.isScrollableBy(ev.wheelX * ev.speed, 0))\n canScroll = true;\n if (direction <= 1 && editor.renderer.isScrollableBy(0, ev.wheelY * ev.speed))\n canScroll = true;\n if (canScroll) {\n prevScroll.allowed = t;\n }\n else if (t - prevScroll.allowed < SCROLL_COOLDOWN_T) {\n var isSlower = Math.abs(vx) <= 1.5 * Math.abs(prevScroll.vx)\n && Math.abs(vy) <= 1.5 * Math.abs(prevScroll.vy);\n if (isSlower) {\n canScroll = true;\n prevScroll.allowed = t;\n }\n else {\n prevScroll.allowed = 0;\n }\n }\n prevScroll.t = t;\n prevScroll.vx = vx;\n prevScroll.vy = vy;\n if (canScroll) {\n editor.renderer.scrollBy(ev.wheelX * ev.speed, ev.wheelY * ev.speed);\n return ev.stop();\n }\n };\n return DefaultHandlers;\n}());\nDefaultHandlers.prototype.selectEnd = DefaultHandlers.prototype.selectByLinesEnd;\nDefaultHandlers.prototype.selectAllEnd = DefaultHandlers.prototype.selectByLinesEnd;\nDefaultHandlers.prototype.selectByWordsEnd = DefaultHandlers.prototype.selectByLinesEnd;\nexports.DefaultHandlers = DefaultHandlers;\nfunction calcDistance(ax, ay, bx, by) {\n return Math.sqrt(Math.pow(bx - ax, 2) + Math.pow(by - ay, 2));\n}\nfunction calcRangeOrientation(range, cursor) {\n if (range.start.row == range.end.row)\n var cmp = 2 * cursor.column - range.start.column - range.end.column;\n else if (range.start.row == range.end.row - 1 && !range.start.column && !range.end.column)\n var cmp = cursor.column - 4;\n else\n var cmp = 2 * cursor.row - range.start.row - range.end.row;\n if (cmp < 0)\n return { cursor: range.start, anchor: range.end };\n else\n return { cursor: range.end, anchor: range.start };\n}\n\n});\n\nace.define(\"ace/tooltip\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\",\"ace/lib/event\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar dom = require(\"./lib/dom\");\nvar event = require(\"./lib/event\");\nvar Range = require(\"./range\").Range;\nvar CLASSNAME = \"ace_tooltip\";\nvar Tooltip = /** @class */ (function () {\n function Tooltip(parentNode) {\n this.isOpen = false;\n this.$element = null;\n this.$parentNode = parentNode;\n }\n Tooltip.prototype.$init = function () {\n this.$element = dom.createElement(\"div\");\n this.$element.className = CLASSNAME;\n this.$element.style.display = \"none\";\n this.$parentNode.appendChild(this.$element);\n return this.$element;\n };\n Tooltip.prototype.getElement = function () {\n return this.$element || this.$init();\n };\n Tooltip.prototype.setText = function (text) {\n this.getElement().textContent = text;\n };\n Tooltip.prototype.setHtml = function (html) {\n this.getElement().innerHTML = html;\n };\n Tooltip.prototype.setPosition = function (x, y) {\n this.getElement().style.left = x + \"px\";\n this.getElement().style.top = y + \"px\";\n };\n Tooltip.prototype.setClassName = function (className) {\n dom.addCssClass(this.getElement(), className);\n };\n Tooltip.prototype.setTheme = function (theme) {\n this.$element.className = CLASSNAME + \" \" +\n (theme.isDark ? \"ace_dark \" : \"\") + (theme.cssClass || \"\");\n };\n Tooltip.prototype.show = function (text, x, y) {\n if (text != null)\n this.setText(text);\n if (x != null && y != null)\n this.setPosition(x, y);\n if (!this.isOpen) {\n this.getElement().style.display = \"block\";\n this.isOpen = true;\n }\n };\n Tooltip.prototype.hide = function () {\n if (this.isOpen) {\n this.getElement().style.display = \"none\";\n this.getElement().className = CLASSNAME;\n this.isOpen = false;\n }\n };\n Tooltip.prototype.getHeight = function () {\n return this.getElement().offsetHeight;\n };\n Tooltip.prototype.getWidth = function () {\n return this.getElement().offsetWidth;\n };\n Tooltip.prototype.destroy = function () {\n this.isOpen = false;\n if (this.$element && this.$element.parentNode) {\n this.$element.parentNode.removeChild(this.$element);\n }\n };\n return Tooltip;\n}());\nvar PopupManager = /** @class */ (function () {\n function PopupManager() {\n this.popups = [];\n }\n PopupManager.prototype.addPopup = function (popup) {\n this.popups.push(popup);\n this.updatePopups();\n };\n PopupManager.prototype.removePopup = function (popup) {\n var index = this.popups.indexOf(popup);\n if (index !== -1) {\n this.popups.splice(index, 1);\n this.updatePopups();\n }\n };\n PopupManager.prototype.updatePopups = function () {\n var e_1, _a, e_2, _b;\n this.popups.sort(function (a, b) { return b.priority - a.priority; });\n var visiblepopups = [];\n try {\n for (var _c = __values(this.popups), _d = _c.next(); !_d.done; _d = _c.next()) {\n var popup = _d.value;\n var shouldDisplay = true;\n try {\n for (var visiblepopups_1 = (e_2 = void 0, __values(visiblepopups)), visiblepopups_1_1 = visiblepopups_1.next(); !visiblepopups_1_1.done; visiblepopups_1_1 = visiblepopups_1.next()) {\n var visiblePopup = visiblepopups_1_1.value;\n if (this.doPopupsOverlap(visiblePopup, popup)) {\n shouldDisplay = false;\n break;\n }\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (visiblepopups_1_1 && !visiblepopups_1_1.done && (_b = visiblepopups_1.return)) _b.call(visiblepopups_1);\n }\n finally { if (e_2) throw e_2.error; }\n }\n if (shouldDisplay) {\n visiblepopups.push(popup);\n }\n else {\n popup.hide();\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_d && !_d.done && (_a = _c.return)) _a.call(_c);\n }\n finally { if (e_1) throw e_1.error; }\n }\n };\n PopupManager.prototype.doPopupsOverlap = function (popupA, popupB) {\n var rectA = popupA.getElement().getBoundingClientRect();\n var rectB = popupB.getElement().getBoundingClientRect();\n return (rectA.left < rectB.right && rectA.right > rectB.left && rectA.top < rectB.bottom && rectA.bottom\n > rectB.top);\n };\n return PopupManager;\n}());\nvar popupManager = new PopupManager();\nexports.popupManager = popupManager;\nexports.Tooltip = Tooltip;\nvar HoverTooltip = /** @class */ (function (_super) {\n __extends(HoverTooltip, _super);\n function HoverTooltip(parentNode) {\n if (parentNode === void 0) { parentNode = document.body; }\n var _this = _super.call(this, parentNode) || this;\n _this.timeout = undefined;\n _this.lastT = 0;\n _this.idleTime = 350;\n _this.lastEvent = undefined;\n _this.onMouseOut = _this.onMouseOut.bind(_this);\n _this.onMouseMove = _this.onMouseMove.bind(_this);\n _this.waitForHover = _this.waitForHover.bind(_this);\n _this.hide = _this.hide.bind(_this);\n var el = _this.getElement();\n el.style.whiteSpace = \"pre-wrap\";\n el.style.pointerEvents = \"auto\";\n el.addEventListener(\"mouseout\", _this.onMouseOut);\n el.tabIndex = -1;\n el.addEventListener(\"blur\", function () {\n if (!el.contains(document.activeElement))\n this.hide();\n }.bind(_this));\n el.addEventListener(\"wheel\", event.stopPropagation);\n return _this;\n }\n HoverTooltip.prototype.addToEditor = function (editor) {\n editor.on(\"mousemove\", this.onMouseMove);\n editor.on(\"mousedown\", this.hide);\n editor.renderer.getMouseEventTarget().addEventListener(\"mouseout\", this.onMouseOut, true);\n };\n HoverTooltip.prototype.removeFromEditor = function (editor) {\n editor.off(\"mousemove\", this.onMouseMove);\n editor.off(\"mousedown\", this.hide);\n editor.renderer.getMouseEventTarget().removeEventListener(\"mouseout\", this.onMouseOut, true);\n if (this.timeout) {\n clearTimeout(this.timeout);\n this.timeout = null;\n }\n };\n HoverTooltip.prototype.onMouseMove = function (e, editor) {\n this.lastEvent = e;\n this.lastT = Date.now();\n var isMousePressed = editor.$mouseHandler.isMousePressed;\n if (this.isOpen) {\n var pos = this.lastEvent && this.lastEvent.getDocumentPosition();\n if (!this.range\n || !this.range.contains(pos.row, pos.column)\n || isMousePressed\n || this.isOutsideOfText(this.lastEvent)) {\n this.hide();\n }\n }\n if (this.timeout || isMousePressed)\n return;\n this.lastEvent = e;\n this.timeout = setTimeout(this.waitForHover, this.idleTime);\n };\n HoverTooltip.prototype.waitForHover = function () {\n if (this.timeout)\n clearTimeout(this.timeout);\n var dt = Date.now() - this.lastT;\n if (this.idleTime - dt > 10) {\n this.timeout = setTimeout(this.waitForHover, this.idleTime - dt);\n return;\n }\n this.timeout = null;\n if (this.lastEvent && !this.isOutsideOfText(this.lastEvent)) {\n this.$gatherData(this.lastEvent, this.lastEvent.editor);\n }\n };\n HoverTooltip.prototype.isOutsideOfText = function (e) {\n var editor = e.editor;\n var docPos = e.getDocumentPosition();\n var line = editor.session.getLine(docPos.row);\n if (docPos.column == line.length) {\n var screenPos = editor.renderer.pixelToScreenCoordinates(e.clientX, e.clientY);\n var clippedPos = editor.session.documentToScreenPosition(docPos.row, docPos.column);\n if (clippedPos.column != screenPos.column\n || clippedPos.row != screenPos.row) {\n return true;\n }\n }\n return false;\n };\n HoverTooltip.prototype.setDataProvider = function (value) {\n this.$gatherData = value;\n };\n HoverTooltip.prototype.showForRange = function (editor, range, domNode, startingEvent) {\n var MARGIN = 10;\n if (startingEvent && startingEvent != this.lastEvent)\n return;\n if (this.isOpen && document.activeElement == this.getElement())\n return;\n var renderer = editor.renderer;\n if (!this.isOpen) {\n popupManager.addPopup(this);\n this.$registerCloseEvents();\n this.setTheme(renderer.theme);\n }\n this.isOpen = true;\n this.addMarker(range, editor.session);\n this.range = Range.fromPoints(range.start, range.end);\n var position = renderer.textToScreenCoordinates(range.start.row, range.start.column);\n var rect = renderer.scroller.getBoundingClientRect();\n if (position.pageX < rect.left)\n position.pageX = rect.left;\n var element = this.getElement();\n element.innerHTML = \"\";\n element.appendChild(domNode);\n element.style.maxHeight = \"\";\n element.style.display = \"block\";\n var labelHeight = element.clientHeight;\n var labelWidth = element.clientWidth;\n var spaceBelow = window.innerHeight - position.pageY - renderer.lineHeight;\n var isAbove = true;\n if (position.pageY - labelHeight < 0 && position.pageY < spaceBelow) {\n isAbove = false;\n }\n element.style.maxHeight = (isAbove ? position.pageY : spaceBelow) - MARGIN + \"px\";\n element.style.top = isAbove ? \"\" : position.pageY + renderer.lineHeight + \"px\";\n element.style.bottom = isAbove ? window.innerHeight - position.pageY + \"px\" : \"\";\n element.style.left = Math.min(position.pageX, window.innerWidth - labelWidth - MARGIN) + \"px\";\n };\n HoverTooltip.prototype.addMarker = function (range, session) {\n if (this.marker) {\n this.$markerSession.removeMarker(this.marker);\n }\n this.$markerSession = session;\n this.marker = session && session.addMarker(range, \"ace_highlight-marker\", \"text\");\n };\n HoverTooltip.prototype.hide = function (e) {\n if (!e && document.activeElement == this.getElement())\n return;\n if (e && e.target && (e.type != \"keydown\" || e.ctrlKey || e.metaKey) && this.$element.contains(e.target))\n return;\n this.lastEvent = null;\n if (this.timeout)\n clearTimeout(this.timeout);\n this.timeout = null;\n this.addMarker(null);\n if (this.isOpen) {\n this.$removeCloseEvents();\n this.getElement().style.display = \"none\";\n this.isOpen = false;\n popupManager.removePopup(this);\n }\n };\n HoverTooltip.prototype.$registerCloseEvents = function () {\n window.addEventListener(\"keydown\", this.hide, true);\n window.addEventListener(\"wheel\", this.hide, true);\n window.addEventListener(\"mousedown\", this.hide, true);\n };\n HoverTooltip.prototype.$removeCloseEvents = function () {\n window.removeEventListener(\"keydown\", this.hide, true);\n window.removeEventListener(\"wheel\", this.hide, true);\n window.removeEventListener(\"mousedown\", this.hide, true);\n };\n HoverTooltip.prototype.onMouseOut = function (e) {\n if (this.timeout) {\n clearTimeout(this.timeout);\n this.timeout = null;\n }\n this.lastEvent = null;\n if (!this.isOpen)\n return;\n if (!e.relatedTarget || this.getElement().contains(e.relatedTarget))\n return;\n if (e && e.currentTarget.contains(e.relatedTarget))\n return;\n if (!e.relatedTarget.classList.contains(\"ace_content\"))\n this.hide();\n };\n return HoverTooltip;\n}(Tooltip));\nexports.HoverTooltip = HoverTooltip;\n\n});\n\nace.define(\"ace/mouse/default_gutter_handler\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\",\"ace/lib/event\",\"ace/tooltip\",\"ace/config\"], function(require, exports, module){\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar dom = require(\"../lib/dom\");\nvar event = require(\"../lib/event\");\nvar Tooltip = require(\"../tooltip\").Tooltip;\nvar nls = require(\"../config\").nls;\nfunction GutterHandler(mouseHandler) {\n var editor = mouseHandler.editor;\n var gutter = editor.renderer.$gutterLayer;\n var tooltip = new GutterTooltip(editor);\n mouseHandler.editor.setDefaultHandler(\"guttermousedown\", function (e) {\n if (!editor.isFocused() || e.getButton() != 0)\n return;\n var gutterRegion = gutter.getRegion(e);\n if (gutterRegion == \"foldWidgets\")\n return;\n var row = e.getDocumentPosition().row;\n var selection = editor.session.selection;\n if (e.getShiftKey())\n selection.selectTo(row, 0);\n else {\n if (e.domEvent.detail == 2) {\n editor.selectAll();\n return e.preventDefault();\n }\n mouseHandler.$clickSelection = editor.selection.getLineRange(row);\n }\n mouseHandler.setState(\"selectByLines\");\n mouseHandler.captureMouse(e);\n return e.preventDefault();\n });\n var tooltipTimeout, mouseEvent;\n function showTooltip() {\n var row = mouseEvent.getDocumentPosition().row;\n var maxRow = editor.session.getLength();\n if (row == maxRow) {\n var screenRow = editor.renderer.pixelToScreenCoordinates(0, mouseEvent.y).row;\n var pos = mouseEvent.$pos;\n if (screenRow > editor.session.documentToScreenRow(pos.row, pos.column))\n return hideTooltip();\n }\n tooltip.showTooltip(row);\n if (!tooltip.isOpen)\n return;\n editor.on(\"mousewheel\", hideTooltip);\n if (mouseHandler.$tooltipFollowsMouse) {\n moveTooltip(mouseEvent);\n }\n else {\n var gutterRow = mouseEvent.getGutterRow();\n var gutterCell = gutter.$lines.get(gutterRow);\n if (gutterCell) {\n var gutterElement = gutterCell.element.querySelector(\".ace_gutter_annotation\");\n var rect = gutterElement.getBoundingClientRect();\n var style = tooltip.getElement().style;\n style.left = rect.right + \"px\";\n style.top = rect.bottom + \"px\";\n }\n else {\n moveTooltip(mouseEvent);\n }\n }\n }\n function hideTooltip() {\n if (tooltipTimeout)\n tooltipTimeout = clearTimeout(tooltipTimeout);\n if (tooltip.isOpen) {\n tooltip.hideTooltip();\n editor.off(\"mousewheel\", hideTooltip);\n }\n }\n function moveTooltip(e) {\n tooltip.setPosition(e.x, e.y);\n }\n mouseHandler.editor.setDefaultHandler(\"guttermousemove\", function (e) {\n var target = e.domEvent.target || e.domEvent.srcElement;\n if (dom.hasCssClass(target, \"ace_fold-widget\"))\n return hideTooltip();\n if (tooltip.isOpen && mouseHandler.$tooltipFollowsMouse)\n moveTooltip(e);\n mouseEvent = e;\n if (tooltipTimeout)\n return;\n tooltipTimeout = setTimeout(function () {\n tooltipTimeout = null;\n if (mouseEvent && !mouseHandler.isMousePressed)\n showTooltip();\n else\n hideTooltip();\n }, 50);\n });\n event.addListener(editor.renderer.$gutter, \"mouseout\", function (e) {\n mouseEvent = null;\n if (!tooltip.isOpen || tooltipTimeout)\n return;\n tooltipTimeout = setTimeout(function () {\n tooltipTimeout = null;\n hideTooltip();\n }, 50);\n }, editor);\n editor.on(\"changeSession\", hideTooltip);\n editor.on(\"input\", hideTooltip);\n}\nexports.GutterHandler = GutterHandler;\nvar GutterTooltip = /** @class */ (function (_super) {\n __extends(GutterTooltip, _super);\n function GutterTooltip(editor) {\n var _this = _super.call(this, editor.container) || this;\n _this.editor = editor;\n return _this;\n }\n GutterTooltip.prototype.setPosition = function (x, y) {\n var windowWidth = window.innerWidth || document.documentElement.clientWidth;\n var windowHeight = window.innerHeight || document.documentElement.clientHeight;\n var width = this.getWidth();\n var height = this.getHeight();\n x += 15;\n y += 15;\n if (x + width > windowWidth) {\n x -= (x + width) - windowWidth;\n }\n if (y + height > windowHeight) {\n y -= 20 + height;\n }\n Tooltip.prototype.setPosition.call(this, x, y);\n };\n Object.defineProperty(GutterTooltip, \"annotationLabels\", {\n get: function () {\n return {\n error: { singular: nls(\"error\"), plural: nls(\"errors\") },\n warning: { singular: nls(\"warning\"), plural: nls(\"warnings\") },\n info: { singular: nls(\"information message\"), plural: nls(\"information messages\") }\n };\n },\n enumerable: false,\n configurable: true\n });\n GutterTooltip.prototype.showTooltip = function (row) {\n var gutter = this.editor.renderer.$gutterLayer;\n var annotationsInRow = gutter.$annotations[row];\n var annotation;\n if (annotationsInRow)\n annotation = { text: Array.from(annotationsInRow.text), type: Array.from(annotationsInRow.type) };\n else\n annotation = { text: [], type: [] };\n var fold = gutter.session.getFoldLine(row);\n if (fold && gutter.$showFoldedAnnotations) {\n var annotationsInFold = { error: [], warning: [], info: [] };\n var mostSevereAnnotationInFoldType;\n for (var i = row + 1; i <= fold.end.row; i++) {\n if (!gutter.$annotations[i])\n continue;\n for (var j = 0; j < gutter.$annotations[i].text.length; j++) {\n var annotationType = gutter.$annotations[i].type[j];\n annotationsInFold[annotationType].push(gutter.$annotations[i].text[j]);\n if (annotationType === \"error\") {\n mostSevereAnnotationInFoldType = \"error_fold\";\n continue;\n }\n if (annotationType === \"warning\") {\n mostSevereAnnotationInFoldType = \"warning_fold\";\n continue;\n }\n }\n }\n if (mostSevereAnnotationInFoldType === \"error_fold\" || mostSevereAnnotationInFoldType === \"warning_fold\") {\n var summaryFoldedAnnotations = \"\".concat(GutterTooltip.annotationsToSummaryString(annotationsInFold), \" in folded code.\");\n annotation.text.push(summaryFoldedAnnotations);\n annotation.type.push(mostSevereAnnotationInFoldType);\n }\n }\n if (annotation.text.length === 0)\n return this.hide();\n var annotationMessages = { error: [], warning: [], info: [] };\n var iconClassName = gutter.$useSvgGutterIcons ? \"ace_icon_svg\" : \"ace_icon\";\n for (var i = 0; i < annotation.text.length; i++) {\n var line = \" \").concat(annotation.text[i]);\n annotationMessages[annotation.type[i].replace(\"_fold\", \"\")].push(line);\n }\n var tooltipContent = [].concat(annotationMessages.error, annotationMessages.warning, annotationMessages.info).join(\"
    \");\n this.setHtml(tooltipContent);\n this.$element.setAttribute(\"aria-live\", \"polite\");\n if (!this.isOpen) {\n this.setTheme(this.editor.renderer.theme);\n this.setClassName(\"ace_gutter-tooltip\");\n }\n this.show();\n this.editor._signal(\"showGutterTooltip\", this);\n };\n GutterTooltip.prototype.hideTooltip = function () {\n this.$element.removeAttribute(\"aria-live\");\n this.hide();\n this.editor._signal(\"hideGutterTooltip\", this);\n };\n GutterTooltip.annotationsToSummaryString = function (annotations) {\n var e_1, _a;\n var summary = [];\n var annotationTypes = ['error', 'warning', 'info'];\n try {\n for (var annotationTypes_1 = __values(annotationTypes), annotationTypes_1_1 = annotationTypes_1.next(); !annotationTypes_1_1.done; annotationTypes_1_1 = annotationTypes_1.next()) {\n var annotationType = annotationTypes_1_1.value;\n if (!annotations[annotationType].length)\n continue;\n var label = annotations[annotationType].length === 1 ? GutterTooltip.annotationLabels[annotationType].singular : GutterTooltip.annotationLabels[annotationType].plural;\n summary.push(\"\".concat(annotations[annotationType].length, \" \").concat(label));\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (annotationTypes_1_1 && !annotationTypes_1_1.done && (_a = annotationTypes_1.return)) _a.call(annotationTypes_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return summary.join(\", \");\n };\n return GutterTooltip;\n}(Tooltip));\nexports.GutterTooltip = GutterTooltip;\n\n});\n\nace.define(\"ace/mouse/mouse_event\",[\"require\",\"exports\",\"module\",\"ace/lib/event\",\"ace/lib/useragent\"], function(require, exports, module){\"use strict\";\nvar event = require(\"../lib/event\");\nvar useragent = require(\"../lib/useragent\");\nvar MouseEvent = /** @class */ (function () {\n function MouseEvent(domEvent, editor) {\n this.domEvent = domEvent;\n this.editor = editor;\n this.x = this.clientX = domEvent.clientX;\n this.y = this.clientY = domEvent.clientY;\n this.$pos = null;\n this.$inSelection = null;\n this.propagationStopped = false;\n this.defaultPrevented = false;\n }\n MouseEvent.prototype.stopPropagation = function () {\n event.stopPropagation(this.domEvent);\n this.propagationStopped = true;\n };\n MouseEvent.prototype.preventDefault = function () {\n event.preventDefault(this.domEvent);\n this.defaultPrevented = true;\n };\n MouseEvent.prototype.stop = function () {\n this.stopPropagation();\n this.preventDefault();\n };\n MouseEvent.prototype.getDocumentPosition = function () {\n if (this.$pos)\n return this.$pos;\n this.$pos = this.editor.renderer.screenToTextCoordinates(this.clientX, this.clientY);\n return this.$pos;\n };\n MouseEvent.prototype.getGutterRow = function () {\n var documentRow = this.getDocumentPosition().row;\n var screenRow = this.editor.session.documentToScreenRow(documentRow, 0);\n var screenTopRow = this.editor.session.documentToScreenRow(this.editor.renderer.$gutterLayer.$lines.get(0).row, 0);\n return screenRow - screenTopRow;\n };\n MouseEvent.prototype.inSelection = function () {\n if (this.$inSelection !== null)\n return this.$inSelection;\n var editor = this.editor;\n var selectionRange = editor.getSelectionRange();\n if (selectionRange.isEmpty())\n this.$inSelection = false;\n else {\n var pos = this.getDocumentPosition();\n this.$inSelection = selectionRange.contains(pos.row, pos.column);\n }\n return this.$inSelection;\n };\n MouseEvent.prototype.getButton = function () {\n return event.getButton(this.domEvent);\n };\n MouseEvent.prototype.getShiftKey = function () {\n return this.domEvent.shiftKey;\n };\n MouseEvent.prototype.getAccelKey = function () {\n return useragent.isMac ? this.domEvent.metaKey : this.domEvent.ctrlKey;\n };\n return MouseEvent;\n}());\nexports.MouseEvent = MouseEvent;\n\n});\n\nace.define(\"ace/mouse/dragdrop_handler\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\",\"ace/lib/event\",\"ace/lib/useragent\"], function(require, exports, module){\"use strict\";\nvar dom = require(\"../lib/dom\");\nvar event = require(\"../lib/event\");\nvar useragent = require(\"../lib/useragent\");\nvar AUTOSCROLL_DELAY = 200;\nvar SCROLL_CURSOR_DELAY = 200;\nvar SCROLL_CURSOR_HYSTERESIS = 5;\nfunction DragdropHandler(mouseHandler) {\n var editor = mouseHandler.editor;\n var dragImage = dom.createElement(\"div\");\n dragImage.style.cssText = \"top:-100px;position:absolute;z-index:2147483647;opacity:0.5\";\n dragImage.textContent = \"\\xa0\";\n var exports = [\"dragWait\", \"dragWaitEnd\", \"startDrag\", \"dragReadyEnd\", \"onMouseDrag\"];\n exports.forEach(function (x) {\n mouseHandler[x] = this[x];\n }, this);\n editor.on(\"mousedown\", this.onMouseDown.bind(mouseHandler));\n var mouseTarget = editor.container;\n var dragSelectionMarker, x, y;\n var timerId, range;\n var dragCursor, counter = 0;\n var dragOperation;\n var isInternal;\n var autoScrollStartTime;\n var cursorMovedTime;\n var cursorPointOnCaretMoved;\n this.onDragStart = function (e) {\n if (this.cancelDrag || !mouseTarget.draggable) {\n var self = this;\n setTimeout(function () {\n self.startSelect();\n self.captureMouse(e);\n }, 0);\n return e.preventDefault();\n }\n range = editor.getSelectionRange();\n var dataTransfer = e.dataTransfer;\n dataTransfer.effectAllowed = editor.getReadOnly() ? \"copy\" : \"copyMove\";\n editor.container.appendChild(dragImage);\n dataTransfer.setDragImage && dataTransfer.setDragImage(dragImage, 0, 0);\n setTimeout(function () {\n editor.container.removeChild(dragImage);\n });\n dataTransfer.clearData();\n dataTransfer.setData(\"Text\", editor.session.getTextRange());\n isInternal = true;\n this.setState(\"drag\");\n };\n this.onDragEnd = function (e) {\n mouseTarget.draggable = false;\n isInternal = false;\n this.setState(null);\n if (!editor.getReadOnly()) {\n var dropEffect = e.dataTransfer.dropEffect;\n if (!dragOperation && dropEffect == \"move\")\n editor.session.remove(editor.getSelectionRange());\n editor.$resetCursorStyle();\n }\n this.editor.unsetStyle(\"ace_dragging\");\n this.editor.renderer.setCursorStyle(\"\");\n };\n this.onDragEnter = function (e) {\n if (editor.getReadOnly() || !canAccept(e.dataTransfer))\n return;\n x = e.clientX;\n y = e.clientY;\n if (!dragSelectionMarker)\n addDragMarker();\n counter++;\n e.dataTransfer.dropEffect = dragOperation = getDropEffect(e);\n return event.preventDefault(e);\n };\n this.onDragOver = function (e) {\n if (editor.getReadOnly() || !canAccept(e.dataTransfer))\n return;\n x = e.clientX;\n y = e.clientY;\n if (!dragSelectionMarker) {\n addDragMarker();\n counter++;\n }\n if (onMouseMoveTimer !== null)\n onMouseMoveTimer = null;\n e.dataTransfer.dropEffect = dragOperation = getDropEffect(e);\n return event.preventDefault(e);\n };\n this.onDragLeave = function (e) {\n counter--;\n if (counter <= 0 && dragSelectionMarker) {\n clearDragMarker();\n dragOperation = null;\n return event.preventDefault(e);\n }\n };\n this.onDrop = function (e) {\n if (!dragCursor)\n return;\n var dataTransfer = e.dataTransfer;\n if (isInternal) {\n switch (dragOperation) {\n case \"move\":\n if (range.contains(dragCursor.row, dragCursor.column)) {\n range = {\n start: dragCursor,\n end: dragCursor\n };\n }\n else {\n range = editor.moveText(range, dragCursor);\n }\n break;\n case \"copy\":\n range = editor.moveText(range, dragCursor, true);\n break;\n }\n }\n else {\n var dropData = dataTransfer.getData('Text');\n range = {\n start: dragCursor,\n end: editor.session.insert(dragCursor, dropData)\n };\n editor.focus();\n dragOperation = null;\n }\n clearDragMarker();\n return event.preventDefault(e);\n };\n event.addListener(mouseTarget, \"dragstart\", this.onDragStart.bind(mouseHandler), editor);\n event.addListener(mouseTarget, \"dragend\", this.onDragEnd.bind(mouseHandler), editor);\n event.addListener(mouseTarget, \"dragenter\", this.onDragEnter.bind(mouseHandler), editor);\n event.addListener(mouseTarget, \"dragover\", this.onDragOver.bind(mouseHandler), editor);\n event.addListener(mouseTarget, \"dragleave\", this.onDragLeave.bind(mouseHandler), editor);\n event.addListener(mouseTarget, \"drop\", this.onDrop.bind(mouseHandler), editor);\n function scrollCursorIntoView(cursor, prevCursor) {\n var now = Date.now();\n var vMovement = !prevCursor || cursor.row != prevCursor.row;\n var hMovement = !prevCursor || cursor.column != prevCursor.column;\n if (!cursorMovedTime || vMovement || hMovement) {\n editor.moveCursorToPosition(cursor);\n cursorMovedTime = now;\n cursorPointOnCaretMoved = { x: x, y: y };\n }\n else {\n var distance = calcDistance(cursorPointOnCaretMoved.x, cursorPointOnCaretMoved.y, x, y);\n if (distance > SCROLL_CURSOR_HYSTERESIS) {\n cursorMovedTime = null;\n }\n else if (now - cursorMovedTime >= SCROLL_CURSOR_DELAY) {\n editor.renderer.scrollCursorIntoView();\n cursorMovedTime = null;\n }\n }\n }\n function autoScroll(cursor, prevCursor) {\n var now = Date.now();\n var lineHeight = editor.renderer.layerConfig.lineHeight;\n var characterWidth = editor.renderer.layerConfig.characterWidth;\n var editorRect = editor.renderer.scroller.getBoundingClientRect();\n var offsets = {\n x: {\n left: x - editorRect.left,\n right: editorRect.right - x\n },\n y: {\n top: y - editorRect.top,\n bottom: editorRect.bottom - y\n }\n };\n var nearestXOffset = Math.min(offsets.x.left, offsets.x.right);\n var nearestYOffset = Math.min(offsets.y.top, offsets.y.bottom);\n var scrollCursor = { row: cursor.row, column: cursor.column };\n if (nearestXOffset / characterWidth <= 2) {\n scrollCursor.column += (offsets.x.left < offsets.x.right ? -3 : +2);\n }\n if (nearestYOffset / lineHeight <= 1) {\n scrollCursor.row += (offsets.y.top < offsets.y.bottom ? -1 : +1);\n }\n var vScroll = cursor.row != scrollCursor.row;\n var hScroll = cursor.column != scrollCursor.column;\n var vMovement = !prevCursor || cursor.row != prevCursor.row;\n if (vScroll || (hScroll && !vMovement)) {\n if (!autoScrollStartTime)\n autoScrollStartTime = now;\n else if (now - autoScrollStartTime >= AUTOSCROLL_DELAY)\n editor.renderer.scrollCursorIntoView(scrollCursor);\n }\n else {\n autoScrollStartTime = null;\n }\n }\n function onDragInterval() {\n var prevCursor = dragCursor;\n dragCursor = editor.renderer.screenToTextCoordinates(x, y);\n scrollCursorIntoView(dragCursor, prevCursor);\n autoScroll(dragCursor, prevCursor);\n }\n function addDragMarker() {\n range = editor.selection.toOrientedRange();\n dragSelectionMarker = editor.session.addMarker(range, \"ace_selection\", editor.getSelectionStyle());\n editor.clearSelection();\n if (editor.isFocused())\n editor.renderer.$cursorLayer.setBlinking(false);\n clearInterval(timerId);\n onDragInterval();\n timerId = setInterval(onDragInterval, 20);\n counter = 0;\n event.addListener(document, \"mousemove\", onMouseMove);\n }\n function clearDragMarker() {\n clearInterval(timerId);\n editor.session.removeMarker(dragSelectionMarker);\n dragSelectionMarker = null;\n editor.selection.fromOrientedRange(range);\n if (editor.isFocused() && !isInternal)\n editor.$resetCursorStyle();\n range = null;\n dragCursor = null;\n counter = 0;\n autoScrollStartTime = null;\n cursorMovedTime = null;\n event.removeListener(document, \"mousemove\", onMouseMove);\n }\n var onMouseMoveTimer = null;\n function onMouseMove() {\n if (onMouseMoveTimer == null) {\n onMouseMoveTimer = setTimeout(function () {\n if (onMouseMoveTimer != null && dragSelectionMarker)\n clearDragMarker();\n }, 20);\n }\n }\n function canAccept(dataTransfer) {\n var types = dataTransfer.types;\n return !types || Array.prototype.some.call(types, function (type) {\n return type == 'text/plain' || type == 'Text';\n });\n }\n function getDropEffect(e) {\n var copyAllowed = ['copy', 'copymove', 'all', 'uninitialized'];\n var moveAllowed = ['move', 'copymove', 'linkmove', 'all', 'uninitialized'];\n var copyModifierState = useragent.isMac ? e.altKey : e.ctrlKey;\n var effectAllowed = \"uninitialized\";\n try {\n effectAllowed = e.dataTransfer.effectAllowed.toLowerCase();\n }\n catch (e) { }\n var dropEffect = \"none\";\n if (copyModifierState && copyAllowed.indexOf(effectAllowed) >= 0)\n dropEffect = \"copy\";\n else if (moveAllowed.indexOf(effectAllowed) >= 0)\n dropEffect = \"move\";\n else if (copyAllowed.indexOf(effectAllowed) >= 0)\n dropEffect = \"copy\";\n return dropEffect;\n }\n}\n(function () {\n this.dragWait = function () {\n var interval = Date.now() - this.mousedownEvent.time;\n if (interval > this.editor.getDragDelay())\n this.startDrag();\n };\n this.dragWaitEnd = function () {\n var target = this.editor.container;\n target.draggable = false;\n this.startSelect(this.mousedownEvent.getDocumentPosition());\n this.selectEnd();\n };\n this.dragReadyEnd = function (e) {\n this.editor.$resetCursorStyle();\n this.editor.unsetStyle(\"ace_dragging\");\n this.editor.renderer.setCursorStyle(\"\");\n this.dragWaitEnd();\n };\n this.startDrag = function () {\n this.cancelDrag = false;\n var editor = this.editor;\n var target = editor.container;\n target.draggable = true;\n editor.renderer.$cursorLayer.setBlinking(false);\n editor.setStyle(\"ace_dragging\");\n var cursorStyle = useragent.isWin ? \"default\" : \"move\";\n editor.renderer.setCursorStyle(cursorStyle);\n this.setState(\"dragReady\");\n };\n this.onMouseDrag = function (e) {\n var target = this.editor.container;\n if (useragent.isIE && this.state == \"dragReady\") {\n var distance = calcDistance(this.mousedownEvent.x, this.mousedownEvent.y, this.x, this.y);\n if (distance > 3)\n target.dragDrop();\n }\n if (this.state === \"dragWait\") {\n var distance = calcDistance(this.mousedownEvent.x, this.mousedownEvent.y, this.x, this.y);\n if (distance > 0) {\n target.draggable = false;\n this.startSelect(this.mousedownEvent.getDocumentPosition());\n }\n }\n };\n this.onMouseDown = function (e) {\n if (!this.$dragEnabled)\n return;\n this.mousedownEvent = e;\n var editor = this.editor;\n var inSelection = e.inSelection();\n var button = e.getButton();\n var clickCount = e.domEvent.detail || 1;\n if (clickCount === 1 && button === 0 && inSelection) {\n if (e.editor.inMultiSelectMode && (e.getAccelKey() || e.getShiftKey()))\n return;\n this.mousedownEvent.time = Date.now();\n var eventTarget = e.domEvent.target || e.domEvent.srcElement;\n if (\"unselectable\" in eventTarget)\n eventTarget.unselectable = \"on\";\n if (editor.getDragDelay()) {\n if (useragent.isWebKit) {\n this.cancelDrag = true;\n var mouseTarget = editor.container;\n mouseTarget.draggable = true;\n }\n this.setState(\"dragWait\");\n }\n else {\n this.startDrag();\n }\n this.captureMouse(e, this.onMouseDrag.bind(this));\n e.defaultPrevented = true;\n }\n };\n}).call(DragdropHandler.prototype);\nfunction calcDistance(ax, ay, bx, by) {\n return Math.sqrt(Math.pow(bx - ax, 2) + Math.pow(by - ay, 2));\n}\nexports.DragdropHandler = DragdropHandler;\n\n});\n\nace.define(\"ace/mouse/touch_handler\",[\"require\",\"exports\",\"module\",\"ace/mouse/mouse_event\",\"ace/lib/event\",\"ace/lib/dom\"], function(require, exports, module){\"use strict\";\nvar MouseEvent = require(\"./mouse_event\").MouseEvent;\nvar event = require(\"../lib/event\");\nvar dom = require(\"../lib/dom\");\nexports.addTouchListeners = function (el, editor) {\n var mode = \"scroll\";\n var startX;\n var startY;\n var touchStartT;\n var lastT;\n var longTouchTimer;\n var animationTimer;\n var animationSteps = 0;\n var pos;\n var clickCount = 0;\n var vX = 0;\n var vY = 0;\n var pressed;\n var contextMenu;\n function createContextMenu() {\n var clipboard = window.navigator && window.navigator.clipboard;\n var isOpen = false;\n var updateMenu = function () {\n var selected = editor.getCopyText();\n var hasUndo = editor.session.getUndoManager().hasUndo();\n contextMenu.replaceChild(dom.buildDom(isOpen ? [\"span\",\n !selected && [\"span\", { class: \"ace_mobile-button\", action: \"selectall\" }, \"Select All\"],\n selected && [\"span\", { class: \"ace_mobile-button\", action: \"copy\" }, \"Copy\"],\n selected && [\"span\", { class: \"ace_mobile-button\", action: \"cut\" }, \"Cut\"],\n clipboard && [\"span\", { class: \"ace_mobile-button\", action: \"paste\" }, \"Paste\"],\n hasUndo && [\"span\", { class: \"ace_mobile-button\", action: \"undo\" }, \"Undo\"],\n [\"span\", { class: \"ace_mobile-button\", action: \"find\" }, \"Find\"],\n [\"span\", { class: \"ace_mobile-button\", action: \"openCommandPalette\" }, \"Palette\"]\n ] : [\"span\"]), contextMenu.firstChild);\n };\n var handleClick = function (e) {\n var action = e.target.getAttribute(\"action\");\n if (action == \"more\" || !isOpen) {\n isOpen = !isOpen;\n return updateMenu();\n }\n if (action == \"paste\") {\n clipboard.readText().then(function (text) {\n editor.execCommand(action, text);\n });\n }\n else if (action) {\n if (action == \"cut\" || action == \"copy\") {\n if (clipboard)\n clipboard.writeText(editor.getCopyText());\n else\n document.execCommand(\"copy\");\n }\n editor.execCommand(action);\n }\n contextMenu.firstChild.style.display = \"none\";\n isOpen = false;\n if (action != \"openCommandPalette\")\n editor.focus();\n };\n contextMenu = dom.buildDom([\"div\",\n {\n class: \"ace_mobile-menu\",\n ontouchstart: function (e) {\n mode = \"menu\";\n e.stopPropagation();\n e.preventDefault();\n editor.textInput.focus();\n },\n ontouchend: function (e) {\n e.stopPropagation();\n e.preventDefault();\n handleClick(e);\n },\n onclick: handleClick\n },\n [\"span\"],\n [\"span\", { class: \"ace_mobile-button\", action: \"more\" }, \"...\"]\n ], editor.container);\n }\n function showContextMenu() {\n if (!contextMenu)\n createContextMenu();\n var cursor = editor.selection.cursor;\n var pagePos = editor.renderer.textToScreenCoordinates(cursor.row, cursor.column);\n var leftOffset = editor.renderer.textToScreenCoordinates(0, 0).pageX;\n var scrollLeft = editor.renderer.scrollLeft;\n var rect = editor.container.getBoundingClientRect();\n contextMenu.style.top = pagePos.pageY - rect.top - 3 + \"px\";\n if (pagePos.pageX - rect.left < rect.width - 70) {\n contextMenu.style.left = \"\";\n contextMenu.style.right = \"10px\";\n }\n else {\n contextMenu.style.right = \"\";\n contextMenu.style.left = leftOffset + scrollLeft - rect.left + \"px\";\n }\n contextMenu.style.display = \"\";\n contextMenu.firstChild.style.display = \"none\";\n editor.on(\"input\", hideContextMenu);\n }\n function hideContextMenu(e) {\n if (contextMenu)\n contextMenu.style.display = \"none\";\n editor.off(\"input\", hideContextMenu);\n }\n function handleLongTap() {\n longTouchTimer = null;\n clearTimeout(longTouchTimer);\n var range = editor.selection.getRange();\n var inSelection = range.contains(pos.row, pos.column);\n if (range.isEmpty() || !inSelection) {\n editor.selection.moveToPosition(pos);\n editor.selection.selectWord();\n }\n mode = \"wait\";\n showContextMenu();\n }\n function switchToSelectionMode() {\n longTouchTimer = null;\n clearTimeout(longTouchTimer);\n editor.selection.moveToPosition(pos);\n var range = clickCount >= 2\n ? editor.selection.getLineRange(pos.row)\n : editor.session.getBracketRange(pos);\n if (range && !range.isEmpty()) {\n editor.selection.setRange(range);\n }\n else {\n editor.selection.selectWord();\n }\n mode = \"wait\";\n }\n event.addListener(el, \"contextmenu\", function (e) {\n if (!pressed)\n return;\n var textarea = editor.textInput.getElement();\n textarea.focus();\n }, editor);\n event.addListener(el, \"touchstart\", function (e) {\n var touches = e.touches;\n if (longTouchTimer || touches.length > 1) {\n clearTimeout(longTouchTimer);\n longTouchTimer = null;\n touchStartT = -1;\n mode = \"zoom\";\n return;\n }\n pressed = editor.$mouseHandler.isMousePressed = true;\n var h = editor.renderer.layerConfig.lineHeight;\n var w = editor.renderer.layerConfig.lineHeight;\n var t = e.timeStamp;\n lastT = t;\n var touchObj = touches[0];\n var x = touchObj.clientX;\n var y = touchObj.clientY;\n if (Math.abs(startX - x) + Math.abs(startY - y) > h)\n touchStartT = -1;\n startX = e.clientX = x;\n startY = e.clientY = y;\n vX = vY = 0;\n var ev = new MouseEvent(e, editor);\n pos = ev.getDocumentPosition();\n if (t - touchStartT < 500 && touches.length == 1 && !animationSteps) {\n clickCount++;\n e.preventDefault();\n e.button = 0;\n switchToSelectionMode();\n }\n else {\n clickCount = 0;\n var cursor = editor.selection.cursor;\n var anchor = editor.selection.isEmpty() ? cursor : editor.selection.anchor;\n var cursorPos = editor.renderer.$cursorLayer.getPixelPosition(cursor, true);\n var anchorPos = editor.renderer.$cursorLayer.getPixelPosition(anchor, true);\n var rect = editor.renderer.scroller.getBoundingClientRect();\n var offsetTop = editor.renderer.layerConfig.offset;\n var offsetLeft = editor.renderer.scrollLeft;\n var weightedDistance = function (x, y) {\n x = x / w;\n y = y / h - 0.75;\n return x * x + y * y;\n };\n if (e.clientX < rect.left) {\n mode = \"zoom\";\n return;\n }\n var diff1 = weightedDistance(e.clientX - rect.left - cursorPos.left + offsetLeft, e.clientY - rect.top - cursorPos.top + offsetTop);\n var diff2 = weightedDistance(e.clientX - rect.left - anchorPos.left + offsetLeft, e.clientY - rect.top - anchorPos.top + offsetTop);\n if (diff1 < 3.5 && diff2 < 3.5)\n mode = diff1 > diff2 ? \"cursor\" : \"anchor\";\n if (diff2 < 3.5)\n mode = \"anchor\";\n else if (diff1 < 3.5)\n mode = \"cursor\";\n else\n mode = \"scroll\";\n longTouchTimer = setTimeout(handleLongTap, 450);\n }\n touchStartT = t;\n }, editor);\n event.addListener(el, \"touchend\", function (e) {\n pressed = editor.$mouseHandler.isMousePressed = false;\n if (animationTimer)\n clearInterval(animationTimer);\n if (mode == \"zoom\") {\n mode = \"\";\n animationSteps = 0;\n }\n else if (longTouchTimer) {\n editor.selection.moveToPosition(pos);\n animationSteps = 0;\n showContextMenu();\n }\n else if (mode == \"scroll\") {\n animate();\n hideContextMenu();\n }\n else {\n showContextMenu();\n }\n clearTimeout(longTouchTimer);\n longTouchTimer = null;\n }, editor);\n event.addListener(el, \"touchmove\", function (e) {\n if (longTouchTimer) {\n clearTimeout(longTouchTimer);\n longTouchTimer = null;\n }\n var touches = e.touches;\n if (touches.length > 1 || mode == \"zoom\")\n return;\n var touchObj = touches[0];\n var wheelX = startX - touchObj.clientX;\n var wheelY = startY - touchObj.clientY;\n if (mode == \"wait\") {\n if (wheelX * wheelX + wheelY * wheelY > 4)\n mode = \"cursor\";\n else\n return e.preventDefault();\n }\n startX = touchObj.clientX;\n startY = touchObj.clientY;\n e.clientX = touchObj.clientX;\n e.clientY = touchObj.clientY;\n var t = e.timeStamp;\n var dt = t - lastT;\n lastT = t;\n if (mode == \"scroll\") {\n var mouseEvent = new MouseEvent(e, editor);\n mouseEvent.speed = 1;\n mouseEvent.wheelX = wheelX;\n mouseEvent.wheelY = wheelY;\n if (10 * Math.abs(wheelX) < Math.abs(wheelY))\n wheelX = 0;\n if (10 * Math.abs(wheelY) < Math.abs(wheelX))\n wheelY = 0;\n if (dt != 0) {\n vX = wheelX / dt;\n vY = wheelY / dt;\n }\n editor._emit(\"mousewheel\", mouseEvent);\n if (!mouseEvent.propagationStopped) {\n vX = vY = 0;\n }\n }\n else {\n var ev = new MouseEvent(e, editor);\n var pos = ev.getDocumentPosition();\n if (mode == \"cursor\")\n editor.selection.moveCursorToPosition(pos);\n else if (mode == \"anchor\")\n editor.selection.setSelectionAnchor(pos.row, pos.column);\n editor.renderer.scrollCursorIntoView(pos);\n e.preventDefault();\n }\n }, editor);\n function animate() {\n animationSteps += 60;\n animationTimer = setInterval(function () {\n if (animationSteps-- <= 0) {\n clearInterval(animationTimer);\n animationTimer = null;\n }\n if (Math.abs(vX) < 0.01)\n vX = 0;\n if (Math.abs(vY) < 0.01)\n vY = 0;\n if (animationSteps < 20)\n vX = 0.9 * vX;\n if (animationSteps < 20)\n vY = 0.9 * vY;\n var oldScrollTop = editor.session.getScrollTop();\n editor.renderer.scrollBy(10 * vX, 10 * vY);\n if (oldScrollTop == editor.session.getScrollTop())\n animationSteps = 0;\n }, 10);\n }\n};\n\n});\n\nace.define(\"ace/mouse/mouse_handler\",[\"require\",\"exports\",\"module\",\"ace/lib/event\",\"ace/lib/useragent\",\"ace/mouse/default_handlers\",\"ace/mouse/default_gutter_handler\",\"ace/mouse/mouse_event\",\"ace/mouse/dragdrop_handler\",\"ace/mouse/touch_handler\",\"ace/config\"], function(require, exports, module){\"use strict\";\nvar event = require(\"../lib/event\");\nvar useragent = require(\"../lib/useragent\");\nvar DefaultHandlers = require(\"./default_handlers\").DefaultHandlers;\nvar DefaultGutterHandler = require(\"./default_gutter_handler\").GutterHandler;\nvar MouseEvent = require(\"./mouse_event\").MouseEvent;\nvar DragdropHandler = require(\"./dragdrop_handler\").DragdropHandler;\nvar addTouchListeners = require(\"./touch_handler\").addTouchListeners;\nvar config = require(\"../config\");\nvar MouseHandler = /** @class */ (function () {\n function MouseHandler(editor) {\n var _self = this;\n this.editor = editor;\n new DefaultHandlers(this);\n new DefaultGutterHandler(this);\n new DragdropHandler(this);\n var focusEditor = function (e) {\n var windowBlurred = !document.hasFocus || !document.hasFocus()\n || !editor.isFocused() && document.activeElement == (editor.textInput && editor.textInput.getElement());\n if (windowBlurred)\n window.focus();\n editor.focus();\n setTimeout(function () {\n if (!editor.isFocused())\n editor.focus();\n });\n };\n var mouseTarget = editor.renderer.getMouseEventTarget();\n event.addListener(mouseTarget, \"click\", this.onMouseEvent.bind(this, \"click\"), editor);\n event.addListener(mouseTarget, \"mousemove\", this.onMouseMove.bind(this, \"mousemove\"), editor);\n event.addMultiMouseDownListener([\n mouseTarget,\n editor.renderer.scrollBarV && editor.renderer.scrollBarV.inner,\n editor.renderer.scrollBarH && editor.renderer.scrollBarH.inner,\n editor.textInput && editor.textInput.getElement()\n ].filter(Boolean), [400, 300, 250], this, \"onMouseEvent\", editor);\n event.addMouseWheelListener(editor.container, this.onMouseWheel.bind(this, \"mousewheel\"), editor);\n addTouchListeners(editor.container, editor);\n var gutterEl = editor.renderer.$gutter;\n event.addListener(gutterEl, \"mousedown\", this.onMouseEvent.bind(this, \"guttermousedown\"), editor);\n event.addListener(gutterEl, \"click\", this.onMouseEvent.bind(this, \"gutterclick\"), editor);\n event.addListener(gutterEl, \"dblclick\", this.onMouseEvent.bind(this, \"gutterdblclick\"), editor);\n event.addListener(gutterEl, \"mousemove\", this.onMouseEvent.bind(this, \"guttermousemove\"), editor);\n event.addListener(mouseTarget, \"mousedown\", focusEditor, editor);\n event.addListener(gutterEl, \"mousedown\", focusEditor, editor);\n if (useragent.isIE && editor.renderer.scrollBarV) {\n event.addListener(editor.renderer.scrollBarV.element, \"mousedown\", focusEditor, editor);\n event.addListener(editor.renderer.scrollBarH.element, \"mousedown\", focusEditor, editor);\n }\n editor.on(\"mousemove\", function (e) {\n if (_self.state || _self.$dragDelay || !_self.$dragEnabled)\n return;\n var character = editor.renderer.screenToTextCoordinates(e.x, e.y);\n var range = editor.session.selection.getRange();\n var renderer = editor.renderer;\n if (!range.isEmpty() && range.insideStart(character.row, character.column)) {\n renderer.setCursorStyle(\"default\");\n }\n else {\n renderer.setCursorStyle(\"\");\n }\n }, editor);\n }\n MouseHandler.prototype.onMouseEvent = function (name, e) {\n if (!this.editor.session)\n return;\n this.editor._emit(name, new MouseEvent(e, this.editor));\n };\n MouseHandler.prototype.onMouseMove = function (name, e) {\n var listeners = this.editor._eventRegistry && this.editor._eventRegistry.mousemove;\n if (!listeners || !listeners.length)\n return;\n this.editor._emit(name, new MouseEvent(e, this.editor));\n };\n MouseHandler.prototype.onMouseWheel = function (name, e) {\n var mouseEvent = new MouseEvent(e, this.editor);\n mouseEvent.speed = this.$scrollSpeed * 2;\n mouseEvent.wheelX = e.wheelX;\n mouseEvent.wheelY = e.wheelY;\n this.editor._emit(name, mouseEvent);\n };\n MouseHandler.prototype.setState = function (state) {\n this.state = state;\n };\n MouseHandler.prototype.captureMouse = function (ev, mouseMoveHandler) {\n this.x = ev.x;\n this.y = ev.y;\n this.isMousePressed = true;\n var editor = this.editor;\n var renderer = this.editor.renderer;\n renderer.$isMousePressed = true;\n var self = this;\n var onMouseMove = function (e) {\n if (!e)\n return;\n if (useragent.isWebKit && !e.which && self.releaseMouse)\n return self.releaseMouse();\n self.x = e.clientX;\n self.y = e.clientY;\n mouseMoveHandler && mouseMoveHandler(e);\n self.mouseEvent = new MouseEvent(e, self.editor);\n self.$mouseMoved = true;\n };\n var onCaptureEnd = function (e) {\n editor.off(\"beforeEndOperation\", onOperationEnd);\n clearInterval(timerId);\n if (editor.session)\n onCaptureInterval();\n self[self.state + \"End\"] && self[self.state + \"End\"](e);\n self.state = \"\";\n self.isMousePressed = renderer.$isMousePressed = false;\n if (renderer.$keepTextAreaAtCursor)\n renderer.$moveTextAreaToCursor();\n self.$onCaptureMouseMove = self.releaseMouse = null;\n e && self.onMouseEvent(\"mouseup\", e);\n editor.endOperation();\n };\n var onCaptureInterval = function () {\n self[self.state] && self[self.state]();\n self.$mouseMoved = false;\n };\n if (useragent.isOldIE && ev.domEvent.type == \"dblclick\") {\n return setTimeout(function () { onCaptureEnd(ev); });\n }\n var onOperationEnd = function (e) {\n if (!self.releaseMouse)\n return;\n if (editor.curOp.command.name && editor.curOp.selectionChanged) {\n self[self.state + \"End\"] && self[self.state + \"End\"]();\n self.state = \"\";\n self.releaseMouse();\n }\n };\n editor.on(\"beforeEndOperation\", onOperationEnd);\n editor.startOperation({ command: { name: \"mouse\" } });\n self.$onCaptureMouseMove = onMouseMove;\n self.releaseMouse = event.capture(this.editor.container, onMouseMove, onCaptureEnd);\n var timerId = setInterval(onCaptureInterval, 20);\n };\n MouseHandler.prototype.cancelContextMenu = function () {\n var stop = function (e) {\n if (e && e.domEvent && e.domEvent.type != \"contextmenu\")\n return;\n this.editor.off(\"nativecontextmenu\", stop);\n if (e && e.domEvent)\n event.stopEvent(e.domEvent);\n }.bind(this);\n setTimeout(stop, 10);\n this.editor.on(\"nativecontextmenu\", stop);\n };\n MouseHandler.prototype.destroy = function () {\n if (this.releaseMouse)\n this.releaseMouse();\n };\n return MouseHandler;\n}());\nMouseHandler.prototype.releaseMouse = null;\nconfig.defineOptions(MouseHandler.prototype, \"mouseHandler\", {\n scrollSpeed: { initialValue: 2 },\n dragDelay: { initialValue: (useragent.isMac ? 150 : 0) },\n dragEnabled: { initialValue: true },\n focusTimeout: { initialValue: 0 },\n tooltipFollowsMouse: { initialValue: true }\n});\nexports.MouseHandler = MouseHandler;\n\n});\n\nace.define(\"ace/mouse/fold_handler\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"], function(require, exports, module){\"use strict\";\nvar dom = require(\"../lib/dom\");\nvar FoldHandler = /** @class */ (function () {\n function FoldHandler(editor) {\n editor.on(\"click\", function (e) {\n var position = e.getDocumentPosition();\n var session = editor.session;\n var fold = session.getFoldAt(position.row, position.column, 1);\n if (fold) {\n if (e.getAccelKey())\n session.removeFold(fold);\n else\n session.expandFold(fold);\n e.stop();\n }\n var target = e.domEvent && e.domEvent.target;\n if (target && dom.hasCssClass(target, \"ace_inline_button\")) {\n if (dom.hasCssClass(target, \"ace_toggle_wrap\")) {\n session.setOption(\"wrap\", !session.getUseWrapMode());\n editor.renderer.scrollCursorIntoView();\n }\n }\n });\n editor.on(\"gutterclick\", function (e) {\n var gutterRegion = editor.renderer.$gutterLayer.getRegion(e);\n if (gutterRegion == \"foldWidgets\") {\n var row = e.getDocumentPosition().row;\n var session = editor.session;\n if (session.foldWidgets && session.foldWidgets[row])\n editor.session.onFoldWidgetClick(row, e);\n if (!editor.isFocused())\n editor.focus();\n e.stop();\n }\n });\n editor.on(\"gutterdblclick\", function (e) {\n var gutterRegion = editor.renderer.$gutterLayer.getRegion(e);\n if (gutterRegion == \"foldWidgets\") {\n var row = e.getDocumentPosition().row;\n var session = editor.session;\n var data = session.getParentFoldRangeData(row, true);\n var range = data.range || data.firstRange;\n if (range) {\n row = range.start.row;\n var fold = session.getFoldAt(row, session.getLine(row).length, 1);\n if (fold) {\n session.removeFold(fold);\n }\n else {\n session.addFold(\"...\", range);\n editor.renderer.scrollCursorIntoView({ row: range.start.row, column: 0 });\n }\n }\n e.stop();\n }\n });\n }\n return FoldHandler;\n}());\nexports.FoldHandler = FoldHandler;\n\n});\n\nace.define(\"ace/keyboard/keybinding\",[\"require\",\"exports\",\"module\",\"ace/lib/keys\",\"ace/lib/event\"], function(require, exports, module){\"use strict\";\nvar keyUtil = require(\"../lib/keys\");\nvar event = require(\"../lib/event\");\nvar KeyBinding = /** @class */ (function () {\n function KeyBinding(editor) {\n this.$editor = editor;\n this.$data = { editor: editor };\n this.$handlers = [];\n this.setDefaultHandler(editor.commands);\n }\n KeyBinding.prototype.setDefaultHandler = function (kb) {\n this.removeKeyboardHandler(this.$defaultHandler);\n this.$defaultHandler = kb;\n this.addKeyboardHandler(kb, 0);\n };\n KeyBinding.prototype.setKeyboardHandler = function (kb) {\n var h = this.$handlers;\n if (h[h.length - 1] == kb)\n return;\n while (h[h.length - 1] && h[h.length - 1] != this.$defaultHandler)\n this.removeKeyboardHandler(h[h.length - 1]);\n this.addKeyboardHandler(kb, 1);\n };\n KeyBinding.prototype.addKeyboardHandler = function (kb, pos) {\n if (!kb)\n return;\n if (typeof kb == \"function\" && !kb.handleKeyboard)\n kb.handleKeyboard = kb;\n var i = this.$handlers.indexOf(kb);\n if (i != -1)\n this.$handlers.splice(i, 1);\n if (pos == undefined)\n this.$handlers.push(kb);\n else\n this.$handlers.splice(pos, 0, kb);\n if (i == -1 && kb.attach)\n kb.attach(this.$editor);\n };\n KeyBinding.prototype.removeKeyboardHandler = function (kb) {\n var i = this.$handlers.indexOf(kb);\n if (i == -1)\n return false;\n this.$handlers.splice(i, 1);\n kb.detach && kb.detach(this.$editor);\n return true;\n };\n KeyBinding.prototype.getKeyboardHandler = function () {\n return this.$handlers[this.$handlers.length - 1];\n };\n KeyBinding.prototype.getStatusText = function () {\n var data = this.$data;\n var editor = data.editor;\n return this.$handlers.map(function (h) {\n return h.getStatusText && h.getStatusText(editor, data) || \"\";\n }).filter(Boolean).join(\" \");\n };\n KeyBinding.prototype.$callKeyboardHandlers = function (hashId, keyString, keyCode, e) {\n var toExecute;\n var success = false;\n var commands = this.$editor.commands;\n for (var i = this.$handlers.length; i--;) {\n toExecute = this.$handlers[i].handleKeyboard(this.$data, hashId, keyString, keyCode, e);\n if (!toExecute || !toExecute.command)\n continue;\n if (toExecute.command == \"null\") {\n success = true;\n }\n else {\n success = commands.exec(toExecute.command, this.$editor, toExecute.args, e);\n }\n if (success && e && hashId != -1 &&\n toExecute.passEvent != true && toExecute.command.passEvent != true) {\n event.stopEvent(e);\n }\n if (success)\n break;\n }\n if (!success && hashId == -1) {\n toExecute = { command: \"insertstring\" };\n success = commands.exec(\"insertstring\", this.$editor, keyString);\n }\n if (success && this.$editor._signal)\n this.$editor._signal(\"keyboardActivity\", toExecute);\n return success;\n };\n KeyBinding.prototype.onCommandKey = function (e, hashId, keyCode) {\n var keyString = keyUtil.keyCodeToString(keyCode);\n return this.$callKeyboardHandlers(hashId, keyString, keyCode, e);\n };\n KeyBinding.prototype.onTextInput = function (text) {\n return this.$callKeyboardHandlers(-1, text);\n };\n return KeyBinding;\n}());\nexports.KeyBinding = KeyBinding;\n\n});\n\nace.define(\"ace/lib/bidiutil\",[\"require\",\"exports\",\"module\"], function(require, exports, module){\"use strict\";\nvar ArabicAlefBetIntervalsBegine = ['\\u0621', '\\u0641'];\nvar ArabicAlefBetIntervalsEnd = ['\\u063A', '\\u064a'];\nvar dir = 0, hiLevel = 0;\nvar lastArabic = false, hasUBAT_AL = false, hasUBAT_B = false, hasUBAT_S = false, hasBlockSep = false, hasSegSep = false;\nvar impTab_LTR = [ [0, 3, 0, 1, 0, 0, 0], [0, 3, 0, 1, 2, 2, 0], [0, 3, 0, 0x11, 2, 0, 1], [0, 3, 5, 5, 4, 1, 0], [0, 3, 0x15, 0x15, 4, 0, 1], [0, 3, 5, 5, 4, 2, 0]\n];\nvar impTab_RTL = [ [2, 0, 1, 1, 0, 1, 0], [2, 0, 1, 1, 0, 2, 0], [2, 0, 2, 1, 3, 2, 0], [2, 0, 2, 0x21, 3, 1, 1]\n];\nvar LTR = 0, RTL = 1;\nvar L = 0;\nvar R = 1;\nvar EN = 2;\nvar AN = 3;\nvar ON = 4;\nvar B = 5;\nvar S = 6;\nvar AL = 7;\nvar WS = 8;\nvar CS = 9;\nvar ES = 10;\nvar ET = 11;\nvar NSM = 12;\nvar LRE = 13;\nvar RLE = 14;\nvar PDF = 15;\nvar LRO = 16;\nvar RLO = 17;\nvar BN = 18;\nvar UnicodeTBL00 = [\n BN, BN, BN, BN, BN, BN, BN, BN, BN, S, B, S, WS, B, BN, BN,\n BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, B, B, B, S,\n WS, ON, ON, ET, ET, ET, ON, ON, ON, ON, ON, ES, CS, ES, CS, CS,\n EN, EN, EN, EN, EN, EN, EN, EN, EN, EN, CS, ON, ON, ON, ON, ON,\n ON, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L,\n L, L, L, L, L, L, L, L, L, L, L, ON, ON, ON, ON, ON,\n ON, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L,\n L, L, L, L, L, L, L, L, L, L, L, ON, ON, ON, ON, BN,\n BN, BN, BN, BN, BN, B, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN,\n BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN,\n CS, ON, ET, ET, ET, ET, ON, ON, ON, ON, L, ON, ON, BN, ON, ON,\n ET, ET, EN, EN, ON, L, ON, ON, ON, EN, L, ON, ON, ON, ON, ON\n];\nvar UnicodeTBL20 = [\n WS, WS, WS, WS, WS, WS, WS, WS, WS, WS, WS, BN, BN, BN, L, R,\n ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON,\n ON, ON, ON, ON, ON, ON, ON, ON, WS, B, LRE, RLE, PDF, LRO, RLO, CS,\n ET, ET, ET, ET, ET, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON,\n ON, ON, ON, ON, CS, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON,\n ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, WS\n];\nfunction _computeLevels(chars, levels, len, charTypes) {\n var impTab = dir ? impTab_RTL : impTab_LTR, prevState = null, newClass = null, newLevel = null, newState = 0, action = null, cond = null, condPos = -1, i = null, ix = null, classes = [];\n if (!charTypes) {\n for (i = 0, charTypes = []; i < len; i++) {\n charTypes[i] = _getCharacterType(chars[i]);\n }\n }\n hiLevel = dir;\n lastArabic = false;\n hasUBAT_AL = false;\n hasUBAT_B = false;\n hasUBAT_S = false;\n for (ix = 0; ix < len; ix++) {\n prevState = newState;\n classes[ix] = newClass = _getCharClass(chars, charTypes, classes, ix);\n newState = impTab[prevState][newClass];\n action = newState & 0xF0;\n newState &= 0x0F;\n levels[ix] = newLevel = impTab[newState][5];\n if (action > 0) {\n if (action == 0x10) {\n for (i = condPos; i < ix; i++) {\n levels[i] = 1;\n }\n condPos = -1;\n }\n else {\n condPos = -1;\n }\n }\n cond = impTab[newState][6];\n if (cond) {\n if (condPos == -1) {\n condPos = ix;\n }\n }\n else {\n if (condPos > -1) {\n for (i = condPos; i < ix; i++) {\n levels[i] = newLevel;\n }\n condPos = -1;\n }\n }\n if (charTypes[ix] == B) {\n levels[ix] = 0;\n }\n hiLevel |= newLevel;\n }\n if (hasUBAT_S) {\n for (i = 0; i < len; i++) {\n if (charTypes[i] == S) {\n levels[i] = dir;\n for (var j = i - 1; j >= 0; j--) {\n if (charTypes[j] == WS) {\n levels[j] = dir;\n }\n else {\n break;\n }\n }\n }\n }\n }\n}\nfunction _invertLevel(lev, levels, _array) {\n if (hiLevel < lev) {\n return;\n }\n if (lev == 1 && dir == RTL && !hasUBAT_B) {\n _array.reverse();\n return;\n }\n var len = _array.length, start = 0, end, lo, hi, tmp;\n while (start < len) {\n if (levels[start] >= lev) {\n end = start + 1;\n while (end < len && levels[end] >= lev) {\n end++;\n }\n for (lo = start, hi = end - 1; lo < hi; lo++, hi--) {\n tmp = _array[lo];\n _array[lo] = _array[hi];\n _array[hi] = tmp;\n }\n start = end;\n }\n start++;\n }\n}\nfunction _getCharClass(chars, types, classes, ix) {\n var cType = types[ix], wType, nType, len, i;\n switch (cType) {\n case L:\n case R:\n lastArabic = false;\n case ON:\n case AN:\n return cType;\n case EN:\n return lastArabic ? AN : EN;\n case AL:\n lastArabic = true;\n hasUBAT_AL = true;\n return R;\n case WS:\n return ON;\n case CS:\n if (ix < 1 || (ix + 1) >= types.length ||\n ((wType = classes[ix - 1]) != EN && wType != AN) ||\n ((nType = types[ix + 1]) != EN && nType != AN)) {\n return ON;\n }\n if (lastArabic) {\n nType = AN;\n }\n return nType == wType ? nType : ON;\n case ES:\n wType = ix > 0 ? classes[ix - 1] : B;\n if (wType == EN && (ix + 1) < types.length && types[ix + 1] == EN) {\n return EN;\n }\n return ON;\n case ET:\n if (ix > 0 && classes[ix - 1] == EN) {\n return EN;\n }\n if (lastArabic) {\n return ON;\n }\n i = ix + 1;\n len = types.length;\n while (i < len && types[i] == ET) {\n i++;\n }\n if (i < len && types[i] == EN) {\n return EN;\n }\n return ON;\n case NSM:\n len = types.length;\n i = ix + 1;\n while (i < len && types[i] == NSM) {\n i++;\n }\n if (i < len) {\n var c = chars[ix], rtlCandidate = (c >= 0x0591 && c <= 0x08FF) || c == 0xFB1E;\n wType = types[i];\n if (rtlCandidate && (wType == R || wType == AL)) {\n return R;\n }\n }\n if (ix < 1 || (wType = types[ix - 1]) == B) {\n return ON;\n }\n return classes[ix - 1];\n case B:\n lastArabic = false;\n hasUBAT_B = true;\n return dir;\n case S:\n hasUBAT_S = true;\n return ON;\n case LRE:\n case RLE:\n case LRO:\n case RLO:\n case PDF:\n lastArabic = false;\n case BN:\n return ON;\n }\n}\nfunction _getCharacterType(ch) {\n var uc = ch.charCodeAt(0), hi = uc >> 8;\n if (hi == 0) {\n return ((uc > 0x00BF) ? L : UnicodeTBL00[uc]);\n }\n else if (hi == 5) {\n return (/[\\u0591-\\u05f4]/.test(ch) ? R : L);\n }\n else if (hi == 6) {\n if (/[\\u0610-\\u061a\\u064b-\\u065f\\u06d6-\\u06e4\\u06e7-\\u06ed]/.test(ch))\n return NSM;\n else if (/[\\u0660-\\u0669\\u066b-\\u066c]/.test(ch))\n return AN;\n else if (uc == 0x066A)\n return ET;\n else if (/[\\u06f0-\\u06f9]/.test(ch))\n return EN;\n else\n return AL;\n }\n else if (hi == 0x20 && uc <= 0x205F) {\n return UnicodeTBL20[uc & 0xFF];\n }\n else if (hi == 0xFE) {\n return (uc >= 0xFE70 ? AL : ON);\n }\n return ON;\n}\nfunction _isArabicDiacritics(ch) {\n return (ch >= '\\u064b' && ch <= '\\u0655');\n}\nexports.L = L;\nexports.R = R;\nexports.EN = EN;\nexports.ON_R = 3;\nexports.AN = 4;\nexports.R_H = 5;\nexports.B = 6;\nexports.RLE = 7;\nexports.DOT = \"\\xB7\";\nexports.doBidiReorder = function (text, textCharTypes, isRtl) {\n if (text.length < 2)\n return {};\n var chars = text.split(\"\"), logicalFromVisual = new Array(chars.length), bidiLevels = new Array(chars.length), levels = [];\n dir = isRtl ? RTL : LTR;\n _computeLevels(chars, levels, chars.length, textCharTypes);\n for (var i = 0; i < logicalFromVisual.length; logicalFromVisual[i] = i, i++)\n ;\n _invertLevel(2, levels, logicalFromVisual);\n _invertLevel(1, levels, logicalFromVisual);\n for (var i = 0; i < logicalFromVisual.length - 1; i++) { //fix levels to reflect character width\n if (textCharTypes[i] === AN) {\n levels[i] = exports.AN;\n }\n else if (levels[i] === R && ((textCharTypes[i] > AL && textCharTypes[i] < LRE)\n || textCharTypes[i] === ON || textCharTypes[i] === BN)) {\n levels[i] = exports.ON_R;\n }\n else if ((i > 0 && chars[i - 1] === '\\u0644') && /\\u0622|\\u0623|\\u0625|\\u0627/.test(chars[i])) {\n levels[i - 1] = levels[i] = exports.R_H;\n i++;\n }\n }\n if (chars[chars.length - 1] === exports.DOT)\n levels[chars.length - 1] = exports.B;\n if (chars[0] === '\\u202B')\n levels[0] = exports.RLE;\n for (var i = 0; i < logicalFromVisual.length; i++) {\n bidiLevels[i] = levels[logicalFromVisual[i]];\n }\n return { 'logicalFromVisual': logicalFromVisual, 'bidiLevels': bidiLevels };\n};\nexports.hasBidiCharacters = function (text, textCharTypes) {\n var ret = false;\n for (var i = 0; i < text.length; i++) {\n textCharTypes[i] = _getCharacterType(text.charAt(i));\n if (!ret && (textCharTypes[i] == R || textCharTypes[i] == AL || textCharTypes[i] == AN))\n ret = true;\n }\n return ret;\n};\nexports.getVisualFromLogicalIdx = function (logIdx, rowMap) {\n for (var i = 0; i < rowMap.logicalFromVisual.length; i++) {\n if (rowMap.logicalFromVisual[i] == logIdx)\n return i;\n }\n return 0;\n};\n\n});\n\nace.define(\"ace/bidihandler\",[\"require\",\"exports\",\"module\",\"ace/lib/bidiutil\",\"ace/lib/lang\"], function(require, exports, module){\"use strict\";\nvar bidiUtil = require(\"./lib/bidiutil\");\nvar lang = require(\"./lib/lang\");\nvar bidiRE = /[\\u0590-\\u05f4\\u0600-\\u06ff\\u0700-\\u08ac\\u202B]/;\nvar BidiHandler = /** @class */ (function () {\n function BidiHandler(session) {\n this.session = session;\n this.bidiMap = {};\n this.currentRow = null;\n this.bidiUtil = bidiUtil;\n this.charWidths = [];\n this.EOL = \"\\xAC\";\n this.showInvisibles = true;\n this.isRtlDir = false;\n this.$isRtl = false;\n this.line = \"\";\n this.wrapIndent = 0;\n this.EOF = \"\\xB6\";\n this.RLE = \"\\u202B\";\n this.contentWidth = 0;\n this.fontMetrics = null;\n this.rtlLineOffset = 0;\n this.wrapOffset = 0;\n this.isMoveLeftOperation = false;\n this.seenBidi = bidiRE.test(session.getValue());\n }\n BidiHandler.prototype.isBidiRow = function (screenRow, docRow, splitIndex) {\n if (!this.seenBidi)\n return false;\n if (screenRow !== this.currentRow) {\n this.currentRow = screenRow;\n this.updateRowLine(docRow, splitIndex);\n this.updateBidiMap();\n }\n return this.bidiMap.bidiLevels;\n };\n BidiHandler.prototype.onChange = function (delta) {\n if (!this.seenBidi) {\n if (delta.action == \"insert\" && bidiRE.test(delta.lines.join(\"\\n\"))) {\n this.seenBidi = true;\n this.currentRow = null;\n }\n }\n else {\n this.currentRow = null;\n }\n };\n BidiHandler.prototype.getDocumentRow = function () {\n var docRow = 0;\n var rowCache = this.session.$screenRowCache;\n if (rowCache.length) {\n var index = this.session.$getRowCacheIndex(rowCache, this.currentRow);\n if (index >= 0)\n docRow = this.session.$docRowCache[index];\n }\n return docRow;\n };\n BidiHandler.prototype.getSplitIndex = function () {\n var splitIndex = 0;\n var rowCache = this.session.$screenRowCache;\n if (rowCache.length) {\n var currentIndex, prevIndex = this.session.$getRowCacheIndex(rowCache, this.currentRow);\n while (this.currentRow - splitIndex > 0) {\n currentIndex = this.session.$getRowCacheIndex(rowCache, this.currentRow - splitIndex - 1);\n if (currentIndex !== prevIndex)\n break;\n prevIndex = currentIndex;\n splitIndex++;\n }\n }\n else {\n splitIndex = this.currentRow;\n }\n return splitIndex;\n };\n BidiHandler.prototype.updateRowLine = function (docRow, splitIndex) {\n if (docRow === undefined)\n docRow = this.getDocumentRow();\n var isLastRow = (docRow === this.session.getLength() - 1), endOfLine = isLastRow ? this.EOF : this.EOL;\n this.wrapIndent = 0;\n this.line = this.session.getLine(docRow);\n this.isRtlDir = this.$isRtl || this.line.charAt(0) === this.RLE;\n if (this.session.$useWrapMode) {\n var splits = this.session.$wrapData[docRow];\n if (splits) {\n if (splitIndex === undefined)\n splitIndex = this.getSplitIndex();\n if (splitIndex > 0 && splits.length) {\n this.wrapIndent = splits.indent;\n this.wrapOffset = this.wrapIndent * this.charWidths[bidiUtil.L];\n this.line = (splitIndex < splits.length) ?\n this.line.substring(splits[splitIndex - 1], splits[splitIndex]) :\n this.line.substring(splits[splits.length - 1]);\n }\n else {\n this.line = this.line.substring(0, splits[splitIndex]);\n }\n if (splitIndex == splits.length) {\n this.line += (this.showInvisibles) ? endOfLine : bidiUtil.DOT;\n }\n }\n }\n else {\n this.line += this.showInvisibles ? endOfLine : bidiUtil.DOT;\n }\n var session = this.session, shift = 0, size;\n this.line = this.line.replace(/\\t|[\\u1100-\\u2029, \\u202F-\\uFFE6]/g, function (ch, i) {\n if (ch === '\\t' || session.isFullWidth(ch.charCodeAt(0))) {\n size = (ch === '\\t') ? session.getScreenTabSize(i + shift) : 2;\n shift += size - 1;\n return lang.stringRepeat(bidiUtil.DOT, size);\n }\n return ch;\n });\n if (this.isRtlDir) {\n this.fontMetrics.$main.textContent = (this.line.charAt(this.line.length - 1) == bidiUtil.DOT) ? this.line.substr(0, this.line.length - 1) : this.line;\n this.rtlLineOffset = this.contentWidth - this.fontMetrics.$main.getBoundingClientRect().width;\n }\n };\n BidiHandler.prototype.updateBidiMap = function () {\n var textCharTypes = [];\n if (bidiUtil.hasBidiCharacters(this.line, textCharTypes) || this.isRtlDir) {\n this.bidiMap = bidiUtil.doBidiReorder(this.line, textCharTypes, this.isRtlDir);\n }\n else {\n this.bidiMap = {};\n }\n };\n BidiHandler.prototype.markAsDirty = function () {\n this.currentRow = null;\n };\n BidiHandler.prototype.updateCharacterWidths = function (fontMetrics) {\n if (this.characterWidth === fontMetrics.$characterSize.width)\n return;\n this.fontMetrics = fontMetrics;\n var characterWidth = this.characterWidth = fontMetrics.$characterSize.width;\n var bidiCharWidth = fontMetrics.$measureCharWidth(\"\\u05d4\");\n this.charWidths[bidiUtil.L] = this.charWidths[bidiUtil.EN] = this.charWidths[bidiUtil.ON_R] = characterWidth;\n this.charWidths[bidiUtil.R] = this.charWidths[bidiUtil.AN] = bidiCharWidth;\n this.charWidths[bidiUtil.R_H] = bidiCharWidth * 0.45;\n this.charWidths[bidiUtil.B] = this.charWidths[bidiUtil.RLE] = 0;\n this.currentRow = null;\n };\n BidiHandler.prototype.setShowInvisibles = function (showInvisibles) {\n this.showInvisibles = showInvisibles;\n this.currentRow = null;\n };\n BidiHandler.prototype.setEolChar = function (eolChar) {\n this.EOL = eolChar;\n };\n BidiHandler.prototype.setContentWidth = function (width) {\n this.contentWidth = width;\n };\n BidiHandler.prototype.isRtlLine = function (row) {\n if (this.$isRtl)\n return true;\n if (row != undefined)\n return (this.session.getLine(row).charAt(0) == this.RLE);\n else\n return this.isRtlDir;\n };\n BidiHandler.prototype.setRtlDirection = function (editor, isRtlDir) {\n var cursor = editor.getCursorPosition();\n for (var row = editor.selection.getSelectionAnchor().row; row <= cursor.row; row++) {\n if (!isRtlDir && editor.session.getLine(row).charAt(0) === editor.session.$bidiHandler.RLE)\n editor.session.doc.removeInLine(row, 0, 1);\n else if (isRtlDir && editor.session.getLine(row).charAt(0) !== editor.session.$bidiHandler.RLE)\n editor.session.doc.insert({ column: 0, row: row }, editor.session.$bidiHandler.RLE);\n }\n };\n BidiHandler.prototype.getPosLeft = function (col) {\n col -= this.wrapIndent;\n var leftBoundary = (this.line.charAt(0) === this.RLE) ? 1 : 0;\n var logicalIdx = (col > leftBoundary) ? (this.session.getOverwrite() ? col : col - 1) : leftBoundary;\n var visualIdx = bidiUtil.getVisualFromLogicalIdx(logicalIdx, this.bidiMap), levels = this.bidiMap.bidiLevels, left = 0;\n if (!this.session.getOverwrite() && col <= leftBoundary && levels[visualIdx] % 2 !== 0)\n visualIdx++;\n for (var i = 0; i < visualIdx; i++) {\n left += this.charWidths[levels[i]];\n }\n if (!this.session.getOverwrite() && (col > leftBoundary) && (levels[visualIdx] % 2 === 0))\n left += this.charWidths[levels[visualIdx]];\n if (this.wrapIndent)\n left += this.isRtlDir ? (-1 * this.wrapOffset) : this.wrapOffset;\n if (this.isRtlDir)\n left += this.rtlLineOffset;\n return left;\n };\n BidiHandler.prototype.getSelections = function (startCol, endCol) {\n var map = this.bidiMap, levels = map.bidiLevels, level, selections = [], offset = 0, selColMin = Math.min(startCol, endCol) - this.wrapIndent, selColMax = Math.max(startCol, endCol) - this.wrapIndent, isSelected = false, isSelectedPrev = false, selectionStart = 0;\n if (this.wrapIndent)\n offset += this.isRtlDir ? (-1 * this.wrapOffset) : this.wrapOffset;\n for (var logIdx, visIdx = 0; visIdx < levels.length; visIdx++) {\n logIdx = map.logicalFromVisual[visIdx];\n level = levels[visIdx];\n isSelected = (logIdx >= selColMin) && (logIdx < selColMax);\n if (isSelected && !isSelectedPrev) {\n selectionStart = offset;\n }\n else if (!isSelected && isSelectedPrev) {\n selections.push({ left: selectionStart, width: offset - selectionStart });\n }\n offset += this.charWidths[level];\n isSelectedPrev = isSelected;\n }\n if (isSelected && (visIdx === levels.length)) {\n selections.push({ left: selectionStart, width: offset - selectionStart });\n }\n if (this.isRtlDir) {\n for (var i = 0; i < selections.length; i++) {\n selections[i].left += this.rtlLineOffset;\n }\n }\n return selections;\n };\n BidiHandler.prototype.offsetToCol = function (posX) {\n if (this.isRtlDir)\n posX -= this.rtlLineOffset;\n var logicalIdx = 0, posX = Math.max(posX, 0), offset = 0, visualIdx = 0, levels = this.bidiMap.bidiLevels, charWidth = this.charWidths[levels[visualIdx]];\n if (this.wrapIndent)\n posX -= this.isRtlDir ? (-1 * this.wrapOffset) : this.wrapOffset;\n while (posX > offset + charWidth / 2) {\n offset += charWidth;\n if (visualIdx === levels.length - 1) {\n charWidth = 0;\n break;\n }\n charWidth = this.charWidths[levels[++visualIdx]];\n }\n if (visualIdx > 0 && (levels[visualIdx - 1] % 2 !== 0) && (levels[visualIdx] % 2 === 0)) {\n if (posX < offset)\n visualIdx--;\n logicalIdx = this.bidiMap.logicalFromVisual[visualIdx];\n }\n else if (visualIdx > 0 && (levels[visualIdx - 1] % 2 === 0) && (levels[visualIdx] % 2 !== 0)) {\n logicalIdx = 1 + ((posX > offset) ? this.bidiMap.logicalFromVisual[visualIdx]\n : this.bidiMap.logicalFromVisual[visualIdx - 1]);\n }\n else if ((this.isRtlDir && visualIdx === levels.length - 1 && charWidth === 0 && (levels[visualIdx - 1] % 2 === 0))\n || (!this.isRtlDir && visualIdx === 0 && (levels[visualIdx] % 2 !== 0))) {\n logicalIdx = 1 + this.bidiMap.logicalFromVisual[visualIdx];\n }\n else {\n if (visualIdx > 0 && (levels[visualIdx - 1] % 2 !== 0) && charWidth !== 0)\n visualIdx--;\n logicalIdx = this.bidiMap.logicalFromVisual[visualIdx];\n }\n if (logicalIdx === 0 && this.isRtlDir)\n logicalIdx++;\n return (logicalIdx + this.wrapIndent);\n };\n return BidiHandler;\n}());\nexports.BidiHandler = BidiHandler;\n\n});\n\nace.define(\"ace/selection\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/lib/event_emitter\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"./lib/oop\");\nvar lang = require(\"./lib/lang\");\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar Range = require(\"./range\").Range;\nvar Selection = /** @class */ (function () {\n function Selection(session) {\n this.session = session;\n this.doc = session.getDocument();\n this.clearSelection();\n this.cursor = this.lead = this.doc.createAnchor(0, 0);\n this.anchor = this.doc.createAnchor(0, 0);\n this.$silent = false;\n var self = this;\n this.cursor.on(\"change\", function (e) {\n self.$cursorChanged = true;\n if (!self.$silent)\n self._emit(\"changeCursor\");\n if (!self.$isEmpty && !self.$silent)\n self._emit(\"changeSelection\");\n if (!self.$keepDesiredColumnOnChange && e.old.column != e.value.column)\n self.$desiredColumn = null;\n });\n this.anchor.on(\"change\", function () {\n self.$anchorChanged = true;\n if (!self.$isEmpty && !self.$silent)\n self._emit(\"changeSelection\");\n });\n }\n Selection.prototype.isEmpty = function () {\n return this.$isEmpty || (this.anchor.row == this.lead.row &&\n this.anchor.column == this.lead.column);\n };\n Selection.prototype.isMultiLine = function () {\n return !this.$isEmpty && this.anchor.row != this.cursor.row;\n };\n Selection.prototype.getCursor = function () {\n return this.lead.getPosition();\n };\n Selection.prototype.setAnchor = function (row, column) {\n this.$isEmpty = false;\n this.anchor.setPosition(row, column);\n };\n Selection.prototype.getAnchor = function () {\n if (this.$isEmpty)\n return this.getSelectionLead();\n return this.anchor.getPosition();\n };\n Selection.prototype.getSelectionLead = function () {\n return this.lead.getPosition();\n };\n Selection.prototype.isBackwards = function () {\n var anchor = this.anchor;\n var lead = this.lead;\n return (anchor.row > lead.row || (anchor.row == lead.row && anchor.column > lead.column));\n };\n Selection.prototype.getRange = function () {\n var anchor = this.anchor;\n var lead = this.lead;\n if (this.$isEmpty)\n return Range.fromPoints(lead, lead);\n return this.isBackwards()\n ? Range.fromPoints(lead, anchor)\n : Range.fromPoints(anchor, lead);\n };\n Selection.prototype.clearSelection = function () {\n if (!this.$isEmpty) {\n this.$isEmpty = true;\n this._emit(\"changeSelection\");\n }\n };\n Selection.prototype.selectAll = function () {\n this.$setSelection(0, 0, Number.MAX_VALUE, Number.MAX_VALUE);\n };\n Selection.prototype.setRange = function (range, reverse) {\n var start = reverse ? range.end : range.start;\n var end = reverse ? range.start : range.end;\n this.$setSelection(start.row, start.column, end.row, end.column);\n };\n Selection.prototype.$setSelection = function (anchorRow, anchorColumn, cursorRow, cursorColumn) {\n if (this.$silent)\n return;\n var wasEmpty = this.$isEmpty;\n var wasMultiselect = this.inMultiSelectMode;\n this.$silent = true;\n this.$cursorChanged = this.$anchorChanged = false;\n this.anchor.setPosition(anchorRow, anchorColumn);\n this.cursor.setPosition(cursorRow, cursorColumn);\n this.$isEmpty = !Range.comparePoints(this.anchor, this.cursor);\n this.$silent = false;\n if (this.$cursorChanged)\n this._emit(\"changeCursor\");\n if (this.$cursorChanged || this.$anchorChanged || wasEmpty != this.$isEmpty || wasMultiselect)\n this._emit(\"changeSelection\");\n };\n Selection.prototype.$moveSelection = function (mover) {\n var lead = this.lead;\n if (this.$isEmpty)\n this.setSelectionAnchor(lead.row, lead.column);\n mover.call(this);\n };\n Selection.prototype.selectTo = function (row, column) {\n this.$moveSelection(function () {\n this.moveCursorTo(row, column);\n });\n };\n Selection.prototype.selectToPosition = function (pos) {\n this.$moveSelection(function () {\n this.moveCursorToPosition(pos);\n });\n };\n Selection.prototype.moveTo = function (row, column) {\n this.clearSelection();\n this.moveCursorTo(row, column);\n };\n Selection.prototype.moveToPosition = function (pos) {\n this.clearSelection();\n this.moveCursorToPosition(pos);\n };\n Selection.prototype.selectUp = function () {\n this.$moveSelection(this.moveCursorUp);\n };\n Selection.prototype.selectDown = function () {\n this.$moveSelection(this.moveCursorDown);\n };\n Selection.prototype.selectRight = function () {\n this.$moveSelection(this.moveCursorRight);\n };\n Selection.prototype.selectLeft = function () {\n this.$moveSelection(this.moveCursorLeft);\n };\n Selection.prototype.selectLineStart = function () {\n this.$moveSelection(this.moveCursorLineStart);\n };\n Selection.prototype.selectLineEnd = function () {\n this.$moveSelection(this.moveCursorLineEnd);\n };\n Selection.prototype.selectFileEnd = function () {\n this.$moveSelection(this.moveCursorFileEnd);\n };\n Selection.prototype.selectFileStart = function () {\n this.$moveSelection(this.moveCursorFileStart);\n };\n Selection.prototype.selectWordRight = function () {\n this.$moveSelection(this.moveCursorWordRight);\n };\n Selection.prototype.selectWordLeft = function () {\n this.$moveSelection(this.moveCursorWordLeft);\n };\n Selection.prototype.getWordRange = function (row, column) {\n if (typeof column == \"undefined\") {\n var cursor = row || this.lead;\n row = cursor.row;\n column = cursor.column;\n }\n return this.session.getWordRange(row, column);\n };\n Selection.prototype.selectWord = function () {\n this.setSelectionRange(this.getWordRange());\n };\n Selection.prototype.selectAWord = function () {\n var cursor = this.getCursor();\n var range = this.session.getAWordRange(cursor.row, cursor.column);\n this.setSelectionRange(range);\n };\n Selection.prototype.getLineRange = function (row, excludeLastChar) {\n var rowStart = typeof row == \"number\" ? row : this.lead.row;\n var rowEnd;\n var foldLine = this.session.getFoldLine(rowStart);\n if (foldLine) {\n rowStart = foldLine.start.row;\n rowEnd = foldLine.end.row;\n }\n else {\n rowEnd = rowStart;\n }\n if (excludeLastChar === true)\n return new Range(rowStart, 0, rowEnd, this.session.getLine(rowEnd).length);\n else\n return new Range(rowStart, 0, rowEnd + 1, 0);\n };\n Selection.prototype.selectLine = function () {\n this.setSelectionRange(this.getLineRange());\n };\n Selection.prototype.moveCursorUp = function () {\n this.moveCursorBy(-1, 0);\n };\n Selection.prototype.moveCursorDown = function () {\n this.moveCursorBy(1, 0);\n };\n Selection.prototype.wouldMoveIntoSoftTab = function (cursor, tabSize, direction) {\n var start = cursor.column;\n var end = cursor.column + tabSize;\n if (direction < 0) {\n start = cursor.column - tabSize;\n end = cursor.column;\n }\n return this.session.isTabStop(cursor) && this.doc.getLine(cursor.row).slice(start, end).split(\" \").length - 1 == tabSize;\n };\n Selection.prototype.moveCursorLeft = function () {\n var cursor = this.lead.getPosition(), fold;\n if (fold = this.session.getFoldAt(cursor.row, cursor.column, -1)) {\n this.moveCursorTo(fold.start.row, fold.start.column);\n }\n else if (cursor.column === 0) {\n if (cursor.row > 0) {\n this.moveCursorTo(cursor.row - 1, this.doc.getLine(cursor.row - 1).length);\n }\n }\n else {\n var tabSize = this.session.getTabSize();\n if (this.wouldMoveIntoSoftTab(cursor, tabSize, -1) && !this.session.getNavigateWithinSoftTabs()) {\n this.moveCursorBy(0, -tabSize);\n }\n else {\n this.moveCursorBy(0, -1);\n }\n }\n };\n Selection.prototype.moveCursorRight = function () {\n var cursor = this.lead.getPosition(), fold;\n if (fold = this.session.getFoldAt(cursor.row, cursor.column, 1)) {\n this.moveCursorTo(fold.end.row, fold.end.column);\n }\n else if (this.lead.column == this.doc.getLine(this.lead.row).length) {\n if (this.lead.row < this.doc.getLength() - 1) {\n this.moveCursorTo(this.lead.row + 1, 0);\n }\n }\n else {\n var tabSize = this.session.getTabSize();\n var cursor = this.lead;\n if (this.wouldMoveIntoSoftTab(cursor, tabSize, 1) && !this.session.getNavigateWithinSoftTabs()) {\n this.moveCursorBy(0, tabSize);\n }\n else {\n this.moveCursorBy(0, 1);\n }\n }\n };\n Selection.prototype.moveCursorLineStart = function () {\n var row = this.lead.row;\n var column = this.lead.column;\n var screenRow = this.session.documentToScreenRow(row, column);\n var firstColumnPosition = this.session.screenToDocumentPosition(screenRow, 0);\n var beforeCursor = this.session.getDisplayLine(row, null, firstColumnPosition.row, firstColumnPosition.column);\n var leadingSpace = beforeCursor.match(/^\\s*/);\n if (leadingSpace[0].length != column && !this.session.$useEmacsStyleLineStart)\n firstColumnPosition.column += leadingSpace[0].length;\n this.moveCursorToPosition(firstColumnPosition);\n };\n Selection.prototype.moveCursorLineEnd = function () {\n var lead = this.lead;\n var lineEnd = this.session.getDocumentLastRowColumnPosition(lead.row, lead.column);\n if (this.lead.column == lineEnd.column) {\n var line = this.session.getLine(lineEnd.row);\n if (lineEnd.column == line.length) {\n var textEnd = line.search(/\\s+$/);\n if (textEnd > 0)\n lineEnd.column = textEnd;\n }\n }\n this.moveCursorTo(lineEnd.row, lineEnd.column);\n };\n Selection.prototype.moveCursorFileEnd = function () {\n var row = this.doc.getLength() - 1;\n var column = this.doc.getLine(row).length;\n this.moveCursorTo(row, column);\n };\n Selection.prototype.moveCursorFileStart = function () {\n this.moveCursorTo(0, 0);\n };\n Selection.prototype.moveCursorLongWordRight = function () {\n var row = this.lead.row;\n var column = this.lead.column;\n var line = this.doc.getLine(row);\n var rightOfCursor = line.substring(column);\n this.session.nonTokenRe.lastIndex = 0;\n this.session.tokenRe.lastIndex = 0;\n var fold = this.session.getFoldAt(row, column, 1);\n if (fold) {\n this.moveCursorTo(fold.end.row, fold.end.column);\n return;\n }\n if (this.session.nonTokenRe.exec(rightOfCursor)) {\n column += this.session.nonTokenRe.lastIndex;\n this.session.nonTokenRe.lastIndex = 0;\n rightOfCursor = line.substring(column);\n }\n if (column >= line.length) {\n this.moveCursorTo(row, line.length);\n this.moveCursorRight();\n if (row < this.doc.getLength() - 1)\n this.moveCursorWordRight();\n return;\n }\n if (this.session.tokenRe.exec(rightOfCursor)) {\n column += this.session.tokenRe.lastIndex;\n this.session.tokenRe.lastIndex = 0;\n }\n this.moveCursorTo(row, column);\n };\n Selection.prototype.moveCursorLongWordLeft = function () {\n var row = this.lead.row;\n var column = this.lead.column;\n var fold;\n if (fold = this.session.getFoldAt(row, column, -1)) {\n this.moveCursorTo(fold.start.row, fold.start.column);\n return;\n }\n var str = this.session.getFoldStringAt(row, column, -1);\n if (str == null) {\n str = this.doc.getLine(row).substring(0, column);\n }\n var leftOfCursor = lang.stringReverse(str);\n this.session.nonTokenRe.lastIndex = 0;\n this.session.tokenRe.lastIndex = 0;\n if (this.session.nonTokenRe.exec(leftOfCursor)) {\n column -= this.session.nonTokenRe.lastIndex;\n leftOfCursor = leftOfCursor.slice(this.session.nonTokenRe.lastIndex);\n this.session.nonTokenRe.lastIndex = 0;\n }\n if (column <= 0) {\n this.moveCursorTo(row, 0);\n this.moveCursorLeft();\n if (row > 0)\n this.moveCursorWordLeft();\n return;\n }\n if (this.session.tokenRe.exec(leftOfCursor)) {\n column -= this.session.tokenRe.lastIndex;\n this.session.tokenRe.lastIndex = 0;\n }\n this.moveCursorTo(row, column);\n };\n Selection.prototype.$shortWordEndIndex = function (rightOfCursor) {\n var index = 0, ch;\n var whitespaceRe = /\\s/;\n var tokenRe = this.session.tokenRe;\n tokenRe.lastIndex = 0;\n if (this.session.tokenRe.exec(rightOfCursor)) {\n index = this.session.tokenRe.lastIndex;\n }\n else {\n while ((ch = rightOfCursor[index]) && whitespaceRe.test(ch))\n index++;\n if (index < 1) {\n tokenRe.lastIndex = 0;\n while ((ch = rightOfCursor[index]) && !tokenRe.test(ch)) {\n tokenRe.lastIndex = 0;\n index++;\n if (whitespaceRe.test(ch)) {\n if (index > 2) {\n index--;\n break;\n }\n else {\n while ((ch = rightOfCursor[index]) && whitespaceRe.test(ch))\n index++;\n if (index > 2)\n break;\n }\n }\n }\n }\n }\n tokenRe.lastIndex = 0;\n return index;\n };\n Selection.prototype.moveCursorShortWordRight = function () {\n var row = this.lead.row;\n var column = this.lead.column;\n var line = this.doc.getLine(row);\n var rightOfCursor = line.substring(column);\n var fold = this.session.getFoldAt(row, column, 1);\n if (fold)\n return this.moveCursorTo(fold.end.row, fold.end.column);\n if (column == line.length) {\n var l = this.doc.getLength();\n do {\n row++;\n rightOfCursor = this.doc.getLine(row);\n } while (row < l && /^\\s*$/.test(rightOfCursor));\n if (!/^\\s+/.test(rightOfCursor))\n rightOfCursor = \"\";\n column = 0;\n }\n var index = this.$shortWordEndIndex(rightOfCursor);\n this.moveCursorTo(row, column + index);\n };\n Selection.prototype.moveCursorShortWordLeft = function () {\n var row = this.lead.row;\n var column = this.lead.column;\n var fold;\n if (fold = this.session.getFoldAt(row, column, -1))\n return this.moveCursorTo(fold.start.row, fold.start.column);\n var line = this.session.getLine(row).substring(0, column);\n if (column === 0) {\n do {\n row--;\n line = this.doc.getLine(row);\n } while (row > 0 && /^\\s*$/.test(line));\n column = line.length;\n if (!/\\s+$/.test(line))\n line = \"\";\n }\n var leftOfCursor = lang.stringReverse(line);\n var index = this.$shortWordEndIndex(leftOfCursor);\n return this.moveCursorTo(row, column - index);\n };\n Selection.prototype.moveCursorWordRight = function () {\n if (this.session.$selectLongWords)\n this.moveCursorLongWordRight();\n else\n this.moveCursorShortWordRight();\n };\n Selection.prototype.moveCursorWordLeft = function () {\n if (this.session.$selectLongWords)\n this.moveCursorLongWordLeft();\n else\n this.moveCursorShortWordLeft();\n };\n Selection.prototype.moveCursorBy = function (rows, chars) {\n var screenPos = this.session.documentToScreenPosition(this.lead.row, this.lead.column);\n var offsetX;\n if (chars === 0) {\n if (rows !== 0) {\n if (this.session.$bidiHandler.isBidiRow(screenPos.row, this.lead.row)) {\n offsetX = this.session.$bidiHandler.getPosLeft(screenPos.column);\n screenPos.column = Math.round(offsetX / this.session.$bidiHandler.charWidths[0]);\n }\n else {\n offsetX = screenPos.column * this.session.$bidiHandler.charWidths[0];\n }\n }\n if (this.$desiredColumn)\n screenPos.column = this.$desiredColumn;\n else\n this.$desiredColumn = screenPos.column;\n }\n if (rows != 0 && this.session.lineWidgets && this.session.lineWidgets[this.lead.row]) {\n var widget = this.session.lineWidgets[this.lead.row];\n if (rows < 0)\n rows -= widget.rowsAbove || 0;\n else if (rows > 0)\n rows += widget.rowCount - (widget.rowsAbove || 0);\n }\n var docPos = this.session.screenToDocumentPosition(screenPos.row + rows, screenPos.column, offsetX);\n if (rows !== 0 && chars === 0 && docPos.row === this.lead.row && docPos.column === this.lead.column) {\n }\n this.moveCursorTo(docPos.row, docPos.column + chars, chars === 0);\n };\n Selection.prototype.moveCursorToPosition = function (position) {\n this.moveCursorTo(position.row, position.column);\n };\n Selection.prototype.moveCursorTo = function (row, column, keepDesiredColumn) {\n var fold = this.session.getFoldAt(row, column, 1);\n if (fold) {\n row = fold.start.row;\n column = fold.start.column;\n }\n this.$keepDesiredColumnOnChange = true;\n var line = this.session.getLine(row);\n if (/[\\uDC00-\\uDFFF]/.test(line.charAt(column)) && line.charAt(column - 1)) {\n if (this.lead.row == row && this.lead.column == column + 1)\n column = column - 1;\n else\n column = column + 1;\n }\n this.lead.setPosition(row, column);\n this.$keepDesiredColumnOnChange = false;\n if (!keepDesiredColumn)\n this.$desiredColumn = null;\n };\n Selection.prototype.moveCursorToScreen = function (row, column, keepDesiredColumn) {\n var pos = this.session.screenToDocumentPosition(row, column);\n this.moveCursorTo(pos.row, pos.column, keepDesiredColumn);\n };\n Selection.prototype.detach = function () {\n this.lead.detach();\n this.anchor.detach();\n };\n Selection.prototype.fromOrientedRange = function (range) {\n this.setSelectionRange(range, range.cursor == range.start);\n this.$desiredColumn = range.desiredColumn || this.$desiredColumn;\n };\n Selection.prototype.toOrientedRange = function (range) {\n var r = this.getRange();\n if (range) {\n range.start.column = r.start.column;\n range.start.row = r.start.row;\n range.end.column = r.end.column;\n range.end.row = r.end.row;\n }\n else {\n range = r;\n }\n range.cursor = this.isBackwards() ? range.start : range.end;\n range.desiredColumn = this.$desiredColumn;\n return range;\n };\n Selection.prototype.getRangeOfMovements = function (func) {\n var start = this.getCursor();\n try {\n func(this);\n var end = this.getCursor();\n return Range.fromPoints(start, end);\n }\n catch (e) {\n return Range.fromPoints(start, start);\n }\n finally {\n this.moveCursorToPosition(start);\n }\n };\n Selection.prototype.toJSON = function () {\n if (this.rangeCount) {\n var data = this.ranges.map(function (r) {\n var r1 = r.clone();\n r1.isBackwards = r.cursor == r.start;\n return r1;\n });\n }\n else {\n var data = this.getRange();\n data.isBackwards = this.isBackwards();\n }\n return data;\n };\n Selection.prototype.fromJSON = function (data) {\n if (data.start == undefined) {\n if (this.rangeList && data.length > 1) {\n this.toSingleRange(data[0]);\n for (var i = data.length; i--;) {\n var r = Range.fromPoints(data[i].start, data[i].end);\n if (data[i].isBackwards)\n r.cursor = r.start;\n this.addRange(r, true);\n }\n return;\n }\n else {\n data = data[0];\n }\n }\n if (this.rangeList)\n this.toSingleRange(data);\n this.setSelectionRange(data, data.isBackwards);\n };\n Selection.prototype.isEqual = function (data) {\n if ((data.length || this.rangeCount) && data.length != this.rangeCount)\n return false;\n if (!data.length || !this.ranges)\n return this.getRange().isEqual(data);\n for (var i = this.ranges.length; i--;) {\n if (!this.ranges[i].isEqual(data[i]))\n return false;\n }\n return true;\n };\n return Selection;\n}());\nSelection.prototype.setSelectionAnchor = Selection.prototype.setAnchor;\nSelection.prototype.getSelectionAnchor = Selection.prototype.getAnchor;\nSelection.prototype.setSelectionRange = Selection.prototype.setRange;\noop.implement(Selection.prototype, EventEmitter);\nexports.Selection = Selection;\n\n});\n\nace.define(\"ace/tokenizer\",[\"require\",\"exports\",\"module\",\"ace/lib/report_error\"], function(require, exports, module){\"use strict\";\nvar reportError = require(\"./lib/report_error\").reportError;\nvar MAX_TOKEN_COUNT = 2000;\nvar Tokenizer = /** @class */ (function () {\n function Tokenizer(rules) {\n this.states = rules;\n this.regExps = {};\n this.matchMappings = {};\n for (var key in this.states) {\n var state = this.states[key];\n var ruleRegExps = [];\n var matchTotal = 0;\n var mapping = this.matchMappings[key] = { defaultToken: \"text\" };\n var flag = \"g\";\n var splitterRurles = [];\n for (var i = 0; i < state.length; i++) {\n var rule = state[i];\n if (rule.defaultToken)\n mapping.defaultToken = rule.defaultToken;\n if (rule.caseInsensitive && flag.indexOf(\"i\") === -1)\n flag += \"i\";\n if (rule.unicode && flag.indexOf(\"u\") === -1)\n flag += \"u\";\n if (rule.regex == null)\n continue;\n if (rule.regex instanceof RegExp)\n rule.regex = rule.regex.toString().slice(1, -1);\n var adjustedregex = rule.regex;\n var matchcount = new RegExp(\"(?:(\" + adjustedregex + \")|(.))\").exec(\"a\").length - 2;\n if (Array.isArray(rule.token)) {\n if (rule.token.length == 1 || matchcount == 1) {\n rule.token = rule.token[0];\n }\n else if (matchcount - 1 != rule.token.length) {\n this.reportError(\"number of classes and regexp groups doesn't match\", {\n rule: rule,\n groupCount: matchcount - 1\n });\n rule.token = rule.token[0];\n }\n else {\n rule.tokenArray = rule.token;\n rule.token = null;\n rule.onMatch = this.$arrayTokens;\n }\n }\n else if (typeof rule.token == \"function\" && !rule.onMatch) {\n if (matchcount > 1)\n rule.onMatch = this.$applyToken;\n else\n rule.onMatch = rule.token;\n }\n if (matchcount > 1) {\n if (/\\\\\\d/.test(rule.regex)) {\n adjustedregex = rule.regex.replace(/\\\\([0-9]+)/g, function (match, digit) {\n return \"\\\\\" + (parseInt(digit, 10) + matchTotal + 1);\n });\n }\n else {\n matchcount = 1;\n adjustedregex = this.removeCapturingGroups(rule.regex);\n }\n if (!rule.splitRegex && typeof rule.token != \"string\")\n splitterRurles.push(rule); // flag will be known only at the very end\n }\n mapping[matchTotal] = i;\n matchTotal += matchcount;\n ruleRegExps.push(adjustedregex);\n if (!rule.onMatch)\n rule.onMatch = null;\n }\n if (!ruleRegExps.length) {\n mapping[0] = 0;\n ruleRegExps.push(\"$\");\n }\n splitterRurles.forEach(function (rule) {\n rule.splitRegex = this.createSplitterRegexp(rule.regex, flag);\n }, this);\n this.regExps[key] = new RegExp(\"(\" + ruleRegExps.join(\")|(\") + \")|($)\", flag);\n }\n }\n Tokenizer.prototype.$setMaxTokenCount = function (m) {\n MAX_TOKEN_COUNT = m | 0;\n };\n Tokenizer.prototype.$applyToken = function (str) {\n var values = this.splitRegex.exec(str).slice(1);\n var types = this.token.apply(this, values);\n if (typeof types === \"string\")\n return [{ type: types, value: str }];\n var tokens = [];\n for (var i = 0, l = types.length; i < l; i++) {\n if (values[i])\n tokens[tokens.length] = {\n type: types[i],\n value: values[i]\n };\n }\n return tokens;\n };\n Tokenizer.prototype.$arrayTokens = function (str) {\n if (!str)\n return [];\n var values = this.splitRegex.exec(str);\n if (!values)\n return \"text\";\n var tokens = [];\n var types = this.tokenArray;\n for (var i = 0, l = types.length; i < l; i++) {\n if (values[i + 1])\n tokens[tokens.length] = {\n type: types[i],\n value: values[i + 1]\n };\n }\n return tokens;\n };\n Tokenizer.prototype.removeCapturingGroups = function (src) {\n var r = src.replace(/\\\\.|\\[(?:\\\\.|[^\\\\\\]])*|\\(\\?[:=!<]|(\\()/g, function (x, y) { return y ? \"(?:\" : x; });\n return r;\n };\n Tokenizer.prototype.createSplitterRegexp = function (src, flag) {\n if (src.indexOf(\"(?=\") != -1) {\n var stack = 0;\n var inChClass = false;\n var lastCapture = {};\n src.replace(/(\\\\.)|(\\((?:\\?[=!])?)|(\\))|([\\[\\]])/g, function (m, esc, parenOpen, parenClose, square, index) {\n if (inChClass) {\n inChClass = square != \"]\";\n }\n else if (square) {\n inChClass = true;\n }\n else if (parenClose) {\n if (stack == lastCapture.stack) {\n lastCapture.end = index + 1;\n lastCapture.stack = -1;\n }\n stack--;\n }\n else if (parenOpen) {\n stack++;\n if (parenOpen.length != 1) {\n lastCapture.stack = stack;\n lastCapture.start = index;\n }\n }\n return m;\n });\n if (lastCapture.end != null && /^\\)*$/.test(src.substr(lastCapture.end)))\n src = src.substring(0, lastCapture.start) + src.substr(lastCapture.end);\n }\n if (src.charAt(0) != \"^\")\n src = \"^\" + src;\n if (src.charAt(src.length - 1) != \"$\")\n src += \"$\";\n return new RegExp(src, (flag || \"\").replace(\"g\", \"\"));\n };\n Tokenizer.prototype.getLineTokens = function (line, startState) {\n if (startState && typeof startState != \"string\") {\n var stack = startState.slice(0);\n startState = stack[0];\n if (startState === \"#tmp\") {\n stack.shift();\n startState = stack.shift();\n }\n }\n else\n var stack = [];\n var currentState = startState || \"start\";\n var state = this.states[currentState];\n if (!state) {\n currentState = \"start\";\n state = this.states[currentState];\n }\n var mapping = this.matchMappings[currentState];\n var re = this.regExps[currentState];\n re.lastIndex = 0;\n var match, tokens = [];\n var lastIndex = 0;\n var matchAttempts = 0;\n var token = { type: null, value: \"\" };\n while (match = re.exec(line)) {\n var type = mapping.defaultToken;\n var rule = null;\n var value = match[0];\n var index = re.lastIndex;\n if (index - value.length > lastIndex) {\n var skipped = line.substring(lastIndex, index - value.length);\n if (token.type == type) {\n token.value += skipped;\n }\n else {\n if (token.type)\n tokens.push(token);\n token = { type: type, value: skipped };\n }\n }\n for (var i = 0; i < match.length - 2; i++) {\n if (match[i + 1] === undefined)\n continue;\n rule = state[mapping[i]];\n if (rule.onMatch)\n type = rule.onMatch(value, currentState, stack, line);\n else\n type = rule.token;\n if (rule.next) {\n if (typeof rule.next == \"string\") {\n currentState = rule.next;\n }\n else {\n currentState = rule.next(currentState, stack);\n }\n state = this.states[currentState];\n if (!state) {\n this.reportError(\"state doesn't exist\", currentState);\n currentState = \"start\";\n state = this.states[currentState];\n }\n mapping = this.matchMappings[currentState];\n lastIndex = index;\n re = this.regExps[currentState];\n re.lastIndex = index;\n }\n if (rule.consumeLineEnd)\n lastIndex = index;\n break;\n }\n if (value) {\n if (typeof type === \"string\") {\n if ((!rule || rule.merge !== false) && token.type === type) {\n token.value += value;\n }\n else {\n if (token.type)\n tokens.push(token);\n token = { type: type, value: value };\n }\n }\n else if (type) {\n if (token.type)\n tokens.push(token);\n token = { type: null, value: \"\" };\n for (var i = 0; i < type.length; i++)\n tokens.push(type[i]);\n }\n }\n if (lastIndex == line.length)\n break;\n lastIndex = index;\n if (matchAttempts++ > MAX_TOKEN_COUNT) {\n if (matchAttempts > 2 * line.length) {\n this.reportError(\"infinite loop with in ace tokenizer\", {\n startState: startState,\n line: line\n });\n }\n while (lastIndex < line.length) {\n if (token.type)\n tokens.push(token);\n token = {\n value: line.substring(lastIndex, lastIndex += 500),\n type: \"overflow\"\n };\n }\n currentState = \"start\";\n stack = [];\n break;\n }\n }\n if (token.type)\n tokens.push(token);\n if (stack.length > 1) {\n if (stack[0] !== currentState)\n stack.unshift(\"#tmp\", currentState);\n }\n return {\n tokens: tokens,\n state: stack.length ? stack : currentState\n };\n };\n return Tokenizer;\n}());\nTokenizer.prototype.reportError = reportError;\nexports.Tokenizer = Tokenizer;\n\n});\n\nace.define(\"ace/mode/text_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/deep_copy\"], function(require, exports, module){\"use strict\";\nvar deepCopy = require(\"../lib/deep_copy\").deepCopy;\nvar TextHighlightRules = function () {\n this.$rules = {\n \"start\": [{\n token: \"empty_line\",\n regex: '^$'\n }, {\n defaultToken: \"text\"\n }]\n };\n};\n(function () {\n this.addRules = function (rules, prefix) {\n if (!prefix) {\n for (var key in rules)\n this.$rules[key] = rules[key];\n return;\n }\n for (var key in rules) {\n var state = rules[key];\n for (var i = 0; i < state.length; i++) {\n var rule = state[i];\n if (rule.next || rule.onMatch) {\n if (typeof rule.next == \"string\") {\n if (rule.next.indexOf(prefix) !== 0)\n rule.next = prefix + rule.next;\n }\n if (rule.nextState && rule.nextState.indexOf(prefix) !== 0)\n rule.nextState = prefix + rule.nextState;\n }\n }\n this.$rules[prefix + key] = state;\n }\n };\n this.getRules = function () {\n return this.$rules;\n };\n this.embedRules = function (HighlightRules, prefix, escapeRules, states, append) {\n var embedRules = typeof HighlightRules == \"function\"\n ? new HighlightRules().getRules()\n : HighlightRules;\n if (states) {\n for (var i = 0; i < states.length; i++)\n states[i] = prefix + states[i];\n }\n else {\n states = [];\n for (var key in embedRules)\n states.push(prefix + key);\n }\n this.addRules(embedRules, prefix);\n if (escapeRules) {\n var addRules = Array.prototype[append ? \"push\" : \"unshift\"];\n for (var i = 0; i < states.length; i++)\n addRules.apply(this.$rules[states[i]], deepCopy(escapeRules));\n }\n if (!this.$embeds)\n this.$embeds = [];\n this.$embeds.push(prefix);\n };\n this.getEmbeds = function () {\n return this.$embeds;\n };\n var pushState = function (currentState, stack) {\n if (currentState != \"start\" || stack.length)\n stack.unshift(this.nextState, currentState);\n return this.nextState;\n };\n var popState = function (currentState, stack) {\n stack.shift();\n return stack.shift() || \"start\";\n };\n this.normalizeRules = function () {\n var id = 0;\n var rules = this.$rules;\n function processState(key) {\n var state = rules[key];\n state.processed = true;\n for (var i = 0; i < state.length; i++) {\n var rule = state[i];\n var toInsert = null;\n if (Array.isArray(rule)) {\n toInsert = rule;\n rule = {};\n }\n if (!rule.regex && rule.start) {\n rule.regex = rule.start;\n if (!rule.next)\n rule.next = [];\n rule.next.push({\n defaultToken: rule.token\n }, {\n token: rule.token + \".end\",\n regex: rule.end || rule.start,\n next: \"pop\"\n });\n rule.token = rule.token + \".start\";\n rule.push = true;\n }\n var next = rule.next || rule.push;\n if (next && Array.isArray(next)) {\n var stateName = rule.stateName;\n if (!stateName) {\n stateName = rule.token;\n if (typeof stateName != \"string\")\n stateName = stateName[0] || \"\";\n if (rules[stateName])\n stateName += id++;\n }\n rules[stateName] = next;\n rule.next = stateName;\n processState(stateName);\n }\n else if (next == \"pop\") {\n rule.next = popState;\n }\n if (rule.push) {\n rule.nextState = rule.next || rule.push;\n rule.next = pushState;\n delete rule.push;\n }\n if (rule.rules) {\n for (var r in rule.rules) {\n if (rules[r]) {\n if (rules[r].push)\n rules[r].push.apply(rules[r], rule.rules[r]);\n }\n else {\n rules[r] = rule.rules[r];\n }\n }\n }\n var includeName = typeof rule == \"string\" ? rule : rule.include;\n if (includeName) {\n if (includeName === \"$self\")\n includeName = \"start\";\n if (Array.isArray(includeName))\n toInsert = includeName.map(function (x) { return rules[x]; });\n else\n toInsert = rules[includeName];\n }\n if (toInsert) {\n var args = [i, 1].concat(toInsert);\n if (rule.noEscape)\n args = args.filter(function (x) { return !x.next; });\n state.splice.apply(state, args);\n i--;\n }\n if (rule.keywordMap) {\n rule.token = this.createKeywordMapper(rule.keywordMap, rule.defaultToken || \"text\", rule.caseInsensitive);\n delete rule.defaultToken;\n }\n }\n }\n Object.keys(rules).forEach(processState, this);\n };\n this.createKeywordMapper = function (map, defaultToken, ignoreCase, splitChar) {\n var keywords = Object.create(null);\n this.$keywordList = [];\n Object.keys(map).forEach(function (className) {\n var a = map[className];\n var list = a.split(splitChar || \"|\");\n for (var i = list.length; i--;) {\n var word = list[i];\n this.$keywordList.push(word);\n if (ignoreCase)\n word = word.toLowerCase();\n keywords[word] = className;\n }\n }, this);\n map = null;\n return ignoreCase\n ? function (value) { return keywords[value.toLowerCase()] || defaultToken; }\n : function (value) { return keywords[value] || defaultToken; };\n };\n this.getKeywords = function () {\n return this.$keywords;\n };\n}).call(TextHighlightRules.prototype);\nexports.TextHighlightRules = TextHighlightRules;\n\n});\n\nace.define(\"ace/mode/behaviour\",[\"require\",\"exports\",\"module\"], function(require, exports, module){\"use strict\";\nvar Behaviour = function () {\n this.$behaviours = {};\n};\n(function () {\n this.add = function (name, action, callback) {\n switch (undefined) {\n case this.$behaviours:\n this.$behaviours = {};\n case this.$behaviours[name]:\n this.$behaviours[name] = {};\n }\n this.$behaviours[name][action] = callback;\n };\n this.addBehaviours = function (behaviours) {\n for (var key in behaviours) {\n for (var action in behaviours[key]) {\n this.add(key, action, behaviours[key][action]);\n }\n }\n };\n this.remove = function (name) {\n if (this.$behaviours && this.$behaviours[name]) {\n delete this.$behaviours[name];\n }\n };\n this.inherit = function (mode, filter) {\n if (typeof mode === \"function\") {\n var behaviours = new mode().getBehaviours(filter);\n }\n else {\n var behaviours = mode.getBehaviours(filter);\n }\n this.addBehaviours(behaviours);\n };\n this.getBehaviours = function (filter) {\n if (!filter) {\n return this.$behaviours;\n }\n else {\n var ret = {};\n for (var i = 0; i < filter.length; i++) {\n if (this.$behaviours[filter[i]]) {\n ret[filter[i]] = this.$behaviours[filter[i]];\n }\n }\n return ret;\n }\n };\n}).call(Behaviour.prototype);\nexports.Behaviour = Behaviour;\n\n});\n\nace.define(\"ace/token_iterator\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar Range = require(\"./range\").Range;\nvar TokenIterator = /** @class */ (function () {\n function TokenIterator(session, initialRow, initialColumn) {\n this.$session = session;\n this.$row = initialRow;\n this.$rowTokens = session.getTokens(initialRow);\n var token = session.getTokenAt(initialRow, initialColumn);\n this.$tokenIndex = token ? token.index : -1;\n }\n TokenIterator.prototype.stepBackward = function () {\n this.$tokenIndex -= 1;\n while (this.$tokenIndex < 0) {\n this.$row -= 1;\n if (this.$row < 0) {\n this.$row = 0;\n return null;\n }\n this.$rowTokens = this.$session.getTokens(this.$row);\n this.$tokenIndex = this.$rowTokens.length - 1;\n }\n return this.$rowTokens[this.$tokenIndex];\n };\n TokenIterator.prototype.stepForward = function () {\n this.$tokenIndex += 1;\n var rowCount;\n while (this.$tokenIndex >= this.$rowTokens.length) {\n this.$row += 1;\n if (!rowCount)\n rowCount = this.$session.getLength();\n if (this.$row >= rowCount) {\n this.$row = rowCount - 1;\n return null;\n }\n this.$rowTokens = this.$session.getTokens(this.$row);\n this.$tokenIndex = 0;\n }\n return this.$rowTokens[this.$tokenIndex];\n };\n TokenIterator.prototype.getCurrentToken = function () {\n return this.$rowTokens[this.$tokenIndex];\n };\n TokenIterator.prototype.getCurrentTokenRow = function () {\n return this.$row;\n };\n TokenIterator.prototype.getCurrentTokenColumn = function () {\n var rowTokens = this.$rowTokens;\n var tokenIndex = this.$tokenIndex;\n var column = rowTokens[tokenIndex].start;\n if (column !== undefined)\n return column;\n column = 0;\n while (tokenIndex > 0) {\n tokenIndex -= 1;\n column += rowTokens[tokenIndex].value.length;\n }\n return column;\n };\n TokenIterator.prototype.getCurrentTokenPosition = function () {\n return { row: this.$row, column: this.getCurrentTokenColumn() };\n };\n TokenIterator.prototype.getCurrentTokenRange = function () {\n var token = this.$rowTokens[this.$tokenIndex];\n var column = this.getCurrentTokenColumn();\n return new Range(this.$row, column, this.$row, column + token.value.length);\n };\n return TokenIterator;\n}());\nexports.TokenIterator = TokenIterator;\n\n});\n\nace.define(\"ace/mode/behaviour/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/behaviour\",\"ace/token_iterator\",\"ace/lib/lang\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../../lib/oop\");\nvar Behaviour = require(\"../behaviour\").Behaviour;\nvar TokenIterator = require(\"../../token_iterator\").TokenIterator;\nvar lang = require(\"../../lib/lang\");\nvar SAFE_INSERT_IN_TOKENS = [\"text\", \"paren.rparen\", \"rparen\", \"paren\", \"punctuation.operator\"];\nvar SAFE_INSERT_BEFORE_TOKENS = [\"text\", \"paren.rparen\", \"rparen\", \"paren\", \"punctuation.operator\", \"comment\"];\nvar context;\nvar contextCache = {};\nvar defaultQuotes = { '\"': '\"', \"'\": \"'\" };\nvar initContext = function (editor) {\n var id = -1;\n if (editor.multiSelect) {\n id = editor.selection.index;\n if (contextCache.rangeCount != editor.multiSelect.rangeCount)\n contextCache = { rangeCount: editor.multiSelect.rangeCount };\n }\n if (contextCache[id])\n return context = contextCache[id];\n context = contextCache[id] = {\n autoInsertedBrackets: 0,\n autoInsertedRow: -1,\n autoInsertedLineEnd: \"\",\n maybeInsertedBrackets: 0,\n maybeInsertedRow: -1,\n maybeInsertedLineStart: \"\",\n maybeInsertedLineEnd: \"\"\n };\n};\nvar getWrapped = function (selection, selected, opening, closing) {\n var rowDiff = selection.end.row - selection.start.row;\n return {\n text: opening + selected + closing,\n selection: [\n 0,\n selection.start.column + 1,\n rowDiff,\n selection.end.column + (rowDiff ? 0 : 1)\n ]\n };\n};\nvar CstyleBehaviour = function (options) {\n options = options || {};\n this.add(\"braces\", \"insertion\", function (state, action, editor, session, text) {\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n if (text == '{') {\n initContext(editor);\n var selection = editor.getSelectionRange();\n var selected = session.doc.getTextRange(selection);\n if (selected !== \"\" && selected !== \"{\" && editor.getWrapBehavioursEnabled()) {\n return getWrapped(selection, selected, '{', '}');\n }\n else if (CstyleBehaviour.isSaneInsertion(editor, session)) {\n if (/[\\]\\}\\)]/.test(line[cursor.column]) || editor.inMultiSelectMode || options.braces) {\n CstyleBehaviour.recordAutoInsert(editor, session, \"}\");\n return {\n text: '{}',\n selection: [1, 1]\n };\n }\n else {\n CstyleBehaviour.recordMaybeInsert(editor, session, \"{\");\n return {\n text: '{',\n selection: [1, 1]\n };\n }\n }\n }\n else if (text == '}') {\n initContext(editor);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n if (rightChar == '}') {\n var matching = session.$findOpeningBracket('}', { column: cursor.column + 1, row: cursor.row });\n if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) {\n CstyleBehaviour.popAutoInsertedClosing();\n return {\n text: '',\n selection: [1, 1]\n };\n }\n }\n }\n else if (text == \"\\n\" || text == \"\\r\\n\") {\n initContext(editor);\n var closing = \"\";\n if (CstyleBehaviour.isMaybeInsertedClosing(cursor, line)) {\n closing = lang.stringRepeat(\"}\", context.maybeInsertedBrackets);\n CstyleBehaviour.clearMaybeInsertedClosing();\n }\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n if (rightChar === '}') {\n var openBracePos = session.findMatchingBracket({ row: cursor.row, column: cursor.column + 1 }, '}');\n if (!openBracePos)\n return null;\n var next_indent = this.$getIndent(session.getLine(openBracePos.row));\n }\n else if (closing) {\n var next_indent = this.$getIndent(line);\n }\n else {\n CstyleBehaviour.clearMaybeInsertedClosing();\n return;\n }\n var indent = next_indent + session.getTabString();\n return {\n text: '\\n' + indent + '\\n' + next_indent + closing,\n selection: [1, indent.length, 1, indent.length]\n };\n }\n else {\n CstyleBehaviour.clearMaybeInsertedClosing();\n }\n });\n this.add(\"braces\", \"deletion\", function (state, action, editor, session, range) {\n var selected = session.doc.getTextRange(range);\n if (!range.isMultiLine() && selected == '{') {\n initContext(editor);\n var line = session.doc.getLine(range.start.row);\n var rightChar = line.substring(range.end.column, range.end.column + 1);\n if (rightChar == '}') {\n range.end.column++;\n return range;\n }\n else {\n context.maybeInsertedBrackets--;\n }\n }\n });\n this.add(\"parens\", \"insertion\", function (state, action, editor, session, text) {\n if (text == '(') {\n initContext(editor);\n var selection = editor.getSelectionRange();\n var selected = session.doc.getTextRange(selection);\n if (selected !== \"\" && editor.getWrapBehavioursEnabled()) {\n return getWrapped(selection, selected, '(', ')');\n }\n else if (CstyleBehaviour.isSaneInsertion(editor, session)) {\n CstyleBehaviour.recordAutoInsert(editor, session, \")\");\n return {\n text: '()',\n selection: [1, 1]\n };\n }\n }\n else if (text == ')') {\n initContext(editor);\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n if (rightChar == ')') {\n var matching = session.$findOpeningBracket(')', { column: cursor.column + 1, row: cursor.row });\n if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) {\n CstyleBehaviour.popAutoInsertedClosing();\n return {\n text: '',\n selection: [1, 1]\n };\n }\n }\n }\n });\n this.add(\"parens\", \"deletion\", function (state, action, editor, session, range) {\n var selected = session.doc.getTextRange(range);\n if (!range.isMultiLine() && selected == '(') {\n initContext(editor);\n var line = session.doc.getLine(range.start.row);\n var rightChar = line.substring(range.start.column + 1, range.start.column + 2);\n if (rightChar == ')') {\n range.end.column++;\n return range;\n }\n }\n });\n this.add(\"brackets\", \"insertion\", function (state, action, editor, session, text) {\n if (text == '[') {\n initContext(editor);\n var selection = editor.getSelectionRange();\n var selected = session.doc.getTextRange(selection);\n if (selected !== \"\" && editor.getWrapBehavioursEnabled()) {\n return getWrapped(selection, selected, '[', ']');\n }\n else if (CstyleBehaviour.isSaneInsertion(editor, session)) {\n CstyleBehaviour.recordAutoInsert(editor, session, \"]\");\n return {\n text: '[]',\n selection: [1, 1]\n };\n }\n }\n else if (text == ']') {\n initContext(editor);\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n if (rightChar == ']') {\n var matching = session.$findOpeningBracket(']', { column: cursor.column + 1, row: cursor.row });\n if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) {\n CstyleBehaviour.popAutoInsertedClosing();\n return {\n text: '',\n selection: [1, 1]\n };\n }\n }\n }\n });\n this.add(\"brackets\", \"deletion\", function (state, action, editor, session, range) {\n var selected = session.doc.getTextRange(range);\n if (!range.isMultiLine() && selected == '[') {\n initContext(editor);\n var line = session.doc.getLine(range.start.row);\n var rightChar = line.substring(range.start.column + 1, range.start.column + 2);\n if (rightChar == ']') {\n range.end.column++;\n return range;\n }\n }\n });\n this.add(\"string_dquotes\", \"insertion\", function (state, action, editor, session, text) {\n var quotes = session.$mode.$quotes || defaultQuotes;\n if (text.length == 1 && quotes[text]) {\n if (this.lineCommentStart && this.lineCommentStart.indexOf(text) != -1)\n return;\n initContext(editor);\n var quote = text;\n var selection = editor.getSelectionRange();\n var selected = session.doc.getTextRange(selection);\n if (selected !== \"\" && (selected.length != 1 || !quotes[selected]) && editor.getWrapBehavioursEnabled()) {\n return getWrapped(selection, selected, quote, quote);\n }\n else if (!selected) {\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n var leftChar = line.substring(cursor.column - 1, cursor.column);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n var token = session.getTokenAt(cursor.row, cursor.column);\n var rightToken = session.getTokenAt(cursor.row, cursor.column + 1);\n if (leftChar == \"\\\\\" && token && /escape/.test(token.type))\n return null;\n var stringBefore = token && /string|escape/.test(token.type);\n var stringAfter = !rightToken || /string|escape/.test(rightToken.type);\n var pair;\n if (rightChar == quote) {\n pair = stringBefore !== stringAfter;\n if (pair && /string\\.end/.test(rightToken.type))\n pair = false;\n }\n else {\n if (stringBefore && !stringAfter)\n return null; // wrap string with different quote\n if (stringBefore && stringAfter)\n return null; // do not pair quotes inside strings\n var wordRe = session.$mode.tokenRe;\n wordRe.lastIndex = 0;\n var isWordBefore = wordRe.test(leftChar);\n wordRe.lastIndex = 0;\n var isWordAfter = wordRe.test(rightChar);\n var pairQuotesAfter = session.$mode.$pairQuotesAfter;\n var shouldPairQuotes = pairQuotesAfter && pairQuotesAfter[quote] && pairQuotesAfter[quote].test(leftChar);\n if ((!shouldPairQuotes && isWordBefore) || isWordAfter)\n return null; // before or after alphanumeric\n if (rightChar && !/[\\s;,.})\\]\\\\]/.test(rightChar))\n return null; // there is rightChar and it isn't closing\n var charBefore = line[cursor.column - 2];\n if (leftChar == quote && (charBefore == quote || wordRe.test(charBefore)))\n return null;\n pair = true;\n }\n return {\n text: pair ? quote + quote : \"\",\n selection: [1, 1]\n };\n }\n }\n });\n this.add(\"string_dquotes\", \"deletion\", function (state, action, editor, session, range) {\n var quotes = session.$mode.$quotes || defaultQuotes;\n var selected = session.doc.getTextRange(range);\n if (!range.isMultiLine() && quotes.hasOwnProperty(selected)) {\n initContext(editor);\n var line = session.doc.getLine(range.start.row);\n var rightChar = line.substring(range.start.column + 1, range.start.column + 2);\n if (rightChar == selected) {\n range.end.column++;\n return range;\n }\n }\n });\n if (options.closeDocComment !== false) {\n this.add(\"doc comment end\", \"insertion\", function (state, action, editor, session, text) {\n if (state === \"doc-start\" && (text === \"\\n\" || text === \"\\r\\n\") && editor.selection.isEmpty()) {\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n var nextLine = session.doc.getLine(cursor.row + 1);\n var indent = this.$getIndent(line);\n if (/\\s*\\*/.test(nextLine)) {\n if (/^\\s*\\*/.test(line)) {\n return {\n text: text + indent + \"* \",\n selection: [1, 3 + indent.length, 1, 3 + indent.length]\n };\n }\n else {\n return {\n text: text + indent + \" * \",\n selection: [1, 3 + indent.length, 1, 3 + indent.length]\n };\n }\n }\n if (/\\/\\*\\*/.test(line.substring(0, cursor.column))) {\n return {\n text: text + indent + \" * \" + text + \" \" + indent + \"*/\",\n selection: [1, 4 + indent.length, 1, 4 + indent.length]\n };\n }\n }\n });\n }\n};\nCstyleBehaviour.isSaneInsertion = function (editor, session) {\n var cursor = editor.getCursorPosition();\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n if (!this.$matchTokenType(iterator.getCurrentToken() || \"text\", SAFE_INSERT_IN_TOKENS)) {\n if (/[)}\\]]/.test(editor.session.getLine(cursor.row)[cursor.column]))\n return true;\n var iterator2 = new TokenIterator(session, cursor.row, cursor.column + 1);\n if (!this.$matchTokenType(iterator2.getCurrentToken() || \"text\", SAFE_INSERT_IN_TOKENS))\n return false;\n }\n iterator.stepForward();\n return iterator.getCurrentTokenRow() !== cursor.row ||\n this.$matchTokenType(iterator.getCurrentToken() || \"text\", SAFE_INSERT_BEFORE_TOKENS);\n};\nCstyleBehaviour.$matchTokenType = function (token, types) {\n return types.indexOf(token.type || token) > -1;\n};\nCstyleBehaviour.recordAutoInsert = function (editor, session, bracket) {\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n if (!this.isAutoInsertedClosing(cursor, line, context.autoInsertedLineEnd[0]))\n context.autoInsertedBrackets = 0;\n context.autoInsertedRow = cursor.row;\n context.autoInsertedLineEnd = bracket + line.substr(cursor.column);\n context.autoInsertedBrackets++;\n};\nCstyleBehaviour.recordMaybeInsert = function (editor, session, bracket) {\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n if (!this.isMaybeInsertedClosing(cursor, line))\n context.maybeInsertedBrackets = 0;\n context.maybeInsertedRow = cursor.row;\n context.maybeInsertedLineStart = line.substr(0, cursor.column) + bracket;\n context.maybeInsertedLineEnd = line.substr(cursor.column);\n context.maybeInsertedBrackets++;\n};\nCstyleBehaviour.isAutoInsertedClosing = function (cursor, line, bracket) {\n return context.autoInsertedBrackets > 0 &&\n cursor.row === context.autoInsertedRow &&\n bracket === context.autoInsertedLineEnd[0] &&\n line.substr(cursor.column) === context.autoInsertedLineEnd;\n};\nCstyleBehaviour.isMaybeInsertedClosing = function (cursor, line) {\n return context.maybeInsertedBrackets > 0 &&\n cursor.row === context.maybeInsertedRow &&\n line.substr(cursor.column) === context.maybeInsertedLineEnd &&\n line.substr(0, cursor.column) == context.maybeInsertedLineStart;\n};\nCstyleBehaviour.popAutoInsertedClosing = function () {\n context.autoInsertedLineEnd = context.autoInsertedLineEnd.substr(1);\n context.autoInsertedBrackets--;\n};\nCstyleBehaviour.clearMaybeInsertedClosing = function () {\n if (context) {\n context.maybeInsertedBrackets = 0;\n context.maybeInsertedRow = -1;\n }\n};\noop.inherits(CstyleBehaviour, Behaviour);\nexports.CstyleBehaviour = CstyleBehaviour;\n\n});\n\nace.define(\"ace/unicode\",[\"require\",\"exports\",\"module\"], function(require, exports, module){\"use strict\";\nvar wordChars = [48, 9, 8, 25, 5, 0, 2, 25, 48, 0, 11, 0, 5, 0, 6, 22, 2, 30, 2, 457, 5, 11, 15, 4, 8, 0, 2, 0, 18, 116, 2, 1, 3, 3, 9, 0, 2, 2, 2, 0, 2, 19, 2, 82, 2, 138, 2, 4, 3, 155, 12, 37, 3, 0, 8, 38, 10, 44, 2, 0, 2, 1, 2, 1, 2, 0, 9, 26, 6, 2, 30, 10, 7, 61, 2, 9, 5, 101, 2, 7, 3, 9, 2, 18, 3, 0, 17, 58, 3, 100, 15, 53, 5, 0, 6, 45, 211, 57, 3, 18, 2, 5, 3, 11, 3, 9, 2, 1, 7, 6, 2, 2, 2, 7, 3, 1, 3, 21, 2, 6, 2, 0, 4, 3, 3, 8, 3, 1, 3, 3, 9, 0, 5, 1, 2, 4, 3, 11, 16, 2, 2, 5, 5, 1, 3, 21, 2, 6, 2, 1, 2, 1, 2, 1, 3, 0, 2, 4, 5, 1, 3, 2, 4, 0, 8, 3, 2, 0, 8, 15, 12, 2, 2, 8, 2, 2, 2, 21, 2, 6, 2, 1, 2, 4, 3, 9, 2, 2, 2, 2, 3, 0, 16, 3, 3, 9, 18, 2, 2, 7, 3, 1, 3, 21, 2, 6, 2, 1, 2, 4, 3, 8, 3, 1, 3, 2, 9, 1, 5, 1, 2, 4, 3, 9, 2, 0, 17, 1, 2, 5, 4, 2, 2, 3, 4, 1, 2, 0, 2, 1, 4, 1, 4, 2, 4, 11, 5, 4, 4, 2, 2, 3, 3, 0, 7, 0, 15, 9, 18, 2, 2, 7, 2, 2, 2, 22, 2, 9, 2, 4, 4, 7, 2, 2, 2, 3, 8, 1, 2, 1, 7, 3, 3, 9, 19, 1, 2, 7, 2, 2, 2, 22, 2, 9, 2, 4, 3, 8, 2, 2, 2, 3, 8, 1, 8, 0, 2, 3, 3, 9, 19, 1, 2, 7, 2, 2, 2, 22, 2, 15, 4, 7, 2, 2, 2, 3, 10, 0, 9, 3, 3, 9, 11, 5, 3, 1, 2, 17, 4, 23, 2, 8, 2, 0, 3, 6, 4, 0, 5, 5, 2, 0, 2, 7, 19, 1, 14, 57, 6, 14, 2, 9, 40, 1, 2, 0, 3, 1, 2, 0, 3, 0, 7, 3, 2, 6, 2, 2, 2, 0, 2, 0, 3, 1, 2, 12, 2, 2, 3, 4, 2, 0, 2, 5, 3, 9, 3, 1, 35, 0, 24, 1, 7, 9, 12, 0, 2, 0, 2, 0, 5, 9, 2, 35, 5, 19, 2, 5, 5, 7, 2, 35, 10, 0, 58, 73, 7, 77, 3, 37, 11, 42, 2, 0, 4, 328, 2, 3, 3, 6, 2, 0, 2, 3, 3, 40, 2, 3, 3, 32, 2, 3, 3, 6, 2, 0, 2, 3, 3, 14, 2, 56, 2, 3, 3, 66, 5, 0, 33, 15, 17, 84, 13, 619, 3, 16, 2, 25, 6, 74, 22, 12, 2, 6, 12, 20, 12, 19, 13, 12, 2, 2, 2, 1, 13, 51, 3, 29, 4, 0, 5, 1, 3, 9, 34, 2, 3, 9, 7, 87, 9, 42, 6, 69, 11, 28, 4, 11, 5, 11, 11, 39, 3, 4, 12, 43, 5, 25, 7, 10, 38, 27, 5, 62, 2, 28, 3, 10, 7, 9, 14, 0, 89, 75, 5, 9, 18, 8, 13, 42, 4, 11, 71, 55, 9, 9, 4, 48, 83, 2, 2, 30, 14, 230, 23, 280, 3, 5, 3, 37, 3, 5, 3, 7, 2, 0, 2, 0, 2, 0, 2, 30, 3, 52, 2, 6, 2, 0, 4, 2, 2, 6, 4, 3, 3, 5, 5, 12, 6, 2, 2, 6, 67, 1, 20, 0, 29, 0, 14, 0, 17, 4, 60, 12, 5, 0, 4, 11, 18, 0, 5, 0, 3, 9, 2, 0, 4, 4, 7, 0, 2, 0, 2, 0, 2, 3, 2, 10, 3, 3, 6, 4, 5, 0, 53, 1, 2684, 46, 2, 46, 2, 132, 7, 6, 15, 37, 11, 53, 10, 0, 17, 22, 10, 6, 2, 6, 2, 6, 2, 6, 2, 6, 2, 6, 2, 6, 2, 6, 2, 31, 48, 0, 470, 1, 36, 5, 2, 4, 6, 1, 5, 85, 3, 1, 3, 2, 2, 89, 2, 3, 6, 40, 4, 93, 18, 23, 57, 15, 513, 6581, 75, 20939, 53, 1164, 68, 45, 3, 268, 4, 27, 21, 31, 3, 13, 13, 1, 2, 24, 9, 69, 11, 1, 38, 8, 3, 102, 3, 1, 111, 44, 25, 51, 13, 68, 12, 9, 7, 23, 4, 0, 5, 45, 3, 35, 13, 28, 4, 64, 15, 10, 39, 54, 10, 13, 3, 9, 7, 22, 4, 1, 5, 66, 25, 2, 227, 42, 2, 1, 3, 9, 7, 11171, 13, 22, 5, 48, 8453, 301, 3, 61, 3, 105, 39, 6, 13, 4, 6, 11, 2, 12, 2, 4, 2, 0, 2, 1, 2, 1, 2, 107, 34, 362, 19, 63, 3, 53, 41, 11, 5, 15, 17, 6, 13, 1, 25, 2, 33, 4, 2, 134, 20, 9, 8, 25, 5, 0, 2, 25, 12, 88, 4, 5, 3, 5, 3, 5, 3, 2];\nvar code = 0;\nvar str = [];\nfor (var i = 0; i < wordChars.length; i += 2) {\n str.push(code += wordChars[i]);\n if (wordChars[i + 1])\n str.push(45, code += wordChars[i + 1]);\n}\nexports.wordChars = String.fromCharCode.apply(null, str);\n\n});\n\nace.define(\"ace/mode/text\",[\"require\",\"exports\",\"module\",\"ace/config\",\"ace/tokenizer\",\"ace/mode/text_highlight_rules\",\"ace/mode/behaviour/cstyle\",\"ace/unicode\",\"ace/lib/lang\",\"ace/token_iterator\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar config = require(\"../config\");\nvar Tokenizer = require(\"../tokenizer\").Tokenizer;\nvar TextHighlightRules = require(\"./text_highlight_rules\").TextHighlightRules;\nvar CstyleBehaviour = require(\"./behaviour/cstyle\").CstyleBehaviour;\nvar unicode = require(\"../unicode\");\nvar lang = require(\"../lib/lang\");\nvar TokenIterator = require(\"../token_iterator\").TokenIterator;\nvar Range = require(\"../range\").Range;\nvar Mode = function () {\n this.HighlightRules = TextHighlightRules;\n};\n(function () {\n this.$defaultBehaviour = new CstyleBehaviour();\n this.tokenRe = new RegExp(\"^[\" + unicode.wordChars + \"\\\\$_]+\", \"g\");\n this.nonTokenRe = new RegExp(\"^(?:[^\" + unicode.wordChars + \"\\\\$_]|\\\\s])+\", \"g\");\n this.getTokenizer = function () {\n if (!this.$tokenizer) {\n this.$highlightRules = this.$highlightRules || new this.HighlightRules(this.$highlightRuleConfig);\n this.$tokenizer = new Tokenizer(this.$highlightRules.getRules());\n }\n return this.$tokenizer;\n };\n this.lineCommentStart = \"\";\n this.blockComment = \"\";\n this.toggleCommentLines = function (state, session, startRow, endRow) {\n var doc = session.doc;\n var ignoreBlankLines = true;\n var shouldRemove = true;\n var minIndent = Infinity;\n var tabSize = session.getTabSize();\n var insertAtTabStop = false;\n if (!this.lineCommentStart) {\n if (!this.blockComment)\n return false;\n var lineCommentStart = this.blockComment.start;\n var lineCommentEnd = this.blockComment.end;\n var regexpStart = new RegExp(\"^(\\\\s*)(?:\" + lang.escapeRegExp(lineCommentStart) + \")\");\n var regexpEnd = new RegExp(\"(?:\" + lang.escapeRegExp(lineCommentEnd) + \")\\\\s*$\");\n var comment = function (line, i) {\n if (testRemove(line, i))\n return;\n if (!ignoreBlankLines || /\\S/.test(line)) {\n doc.insertInLine({ row: i, column: line.length }, lineCommentEnd);\n doc.insertInLine({ row: i, column: minIndent }, lineCommentStart);\n }\n };\n var uncomment = function (line, i) {\n var m;\n if (m = line.match(regexpEnd))\n doc.removeInLine(i, line.length - m[0].length, line.length);\n if (m = line.match(regexpStart))\n doc.removeInLine(i, m[1].length, m[0].length);\n };\n var testRemove = function (line, row) {\n if (regexpStart.test(line))\n return true;\n var tokens = session.getTokens(row);\n for (var i = 0; i < tokens.length; i++) {\n if (tokens[i].type === \"comment\")\n return true;\n }\n };\n }\n else {\n if (Array.isArray(this.lineCommentStart)) {\n var regexpStart = this.lineCommentStart.map(lang.escapeRegExp).join(\"|\");\n var lineCommentStart = this.lineCommentStart[0];\n }\n else {\n var regexpStart = lang.escapeRegExp(this.lineCommentStart);\n var lineCommentStart = this.lineCommentStart;\n }\n regexpStart = new RegExp(\"^(\\\\s*)(?:\" + regexpStart + \") ?\");\n insertAtTabStop = session.getUseSoftTabs();\n var uncomment = function (line, i) {\n var m = line.match(regexpStart);\n if (!m)\n return;\n var start = m[1].length, end = m[0].length;\n if (!shouldInsertSpace(line, start, end) && m[0][end - 1] == \" \")\n end--;\n doc.removeInLine(i, start, end);\n };\n var commentWithSpace = lineCommentStart + \" \";\n var comment = function (line, i) {\n if (!ignoreBlankLines || /\\S/.test(line)) {\n if (shouldInsertSpace(line, minIndent, minIndent))\n doc.insertInLine({ row: i, column: minIndent }, commentWithSpace);\n else\n doc.insertInLine({ row: i, column: minIndent }, lineCommentStart);\n }\n };\n var testRemove = function (line, i) {\n return regexpStart.test(line);\n };\n var shouldInsertSpace = function (line, before, after) {\n var spaces = 0;\n while (before-- && line.charAt(before) == \" \")\n spaces++;\n if (spaces % tabSize != 0)\n return false;\n var spaces = 0;\n while (line.charAt(after++) == \" \")\n spaces++;\n if (tabSize > 2)\n return spaces % tabSize != tabSize - 1;\n else\n return spaces % tabSize == 0;\n };\n }\n function iter(fun) {\n for (var i = startRow; i <= endRow; i++)\n fun(doc.getLine(i), i);\n }\n var minEmptyLength = Infinity;\n iter(function (line, i) {\n var indent = line.search(/\\S/);\n if (indent !== -1) {\n if (indent < minIndent)\n minIndent = indent;\n if (shouldRemove && !testRemove(line, i))\n shouldRemove = false;\n }\n else if (minEmptyLength > line.length) {\n minEmptyLength = line.length;\n }\n });\n if (minIndent == Infinity) {\n minIndent = minEmptyLength;\n ignoreBlankLines = false;\n shouldRemove = false;\n }\n if (insertAtTabStop && minIndent % tabSize != 0)\n minIndent = Math.floor(minIndent / tabSize) * tabSize;\n iter(shouldRemove ? uncomment : comment);\n };\n this.toggleBlockComment = function (state, session, range, cursor) {\n var comment = this.blockComment;\n if (!comment)\n return;\n if (!comment.start && comment[0])\n comment = comment[0];\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n var token = iterator.getCurrentToken();\n var sel = session.selection;\n var initialRange = session.selection.toOrientedRange();\n var startRow, colDiff;\n if (token && /comment/.test(token.type)) {\n var startRange, endRange;\n while (token && /comment/.test(token.type)) {\n var i = token.value.indexOf(comment.start);\n if (i != -1) {\n var row = iterator.getCurrentTokenRow();\n var column = iterator.getCurrentTokenColumn() + i;\n startRange = new Range(row, column, row, column + comment.start.length);\n break;\n }\n token = iterator.stepBackward();\n }\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n var token = iterator.getCurrentToken();\n while (token && /comment/.test(token.type)) {\n var i = token.value.indexOf(comment.end);\n if (i != -1) {\n var row = iterator.getCurrentTokenRow();\n var column = iterator.getCurrentTokenColumn() + i;\n endRange = new Range(row, column, row, column + comment.end.length);\n break;\n }\n token = iterator.stepForward();\n }\n if (endRange)\n session.remove(endRange);\n if (startRange) {\n session.remove(startRange);\n startRow = startRange.start.row;\n colDiff = -comment.start.length;\n }\n }\n else {\n colDiff = comment.start.length;\n startRow = range.start.row;\n session.insert(range.end, comment.end);\n session.insert(range.start, comment.start);\n }\n if (initialRange.start.row == startRow)\n initialRange.start.column += colDiff;\n if (initialRange.end.row == startRow)\n initialRange.end.column += colDiff;\n session.selection.fromOrientedRange(initialRange);\n };\n this.getNextLineIndent = function (state, line, tab) {\n return this.$getIndent(line);\n };\n this.checkOutdent = function (state, line, input) {\n return false;\n };\n this.autoOutdent = function (state, doc, row) {\n };\n this.$getIndent = function (line) {\n return line.match(/^\\s*/)[0];\n };\n this.createWorker = function (session) {\n return null;\n };\n this.createModeDelegates = function (mapping) {\n this.$embeds = [];\n this.$modes = {};\n for (var i in mapping) {\n if (mapping[i]) {\n var Mode = mapping[i];\n var id = Mode.prototype.$id;\n var mode = config.$modes[id];\n if (!mode)\n config.$modes[id] = mode = new Mode();\n if (!config.$modes[i])\n config.$modes[i] = mode;\n this.$embeds.push(i);\n this.$modes[i] = mode;\n }\n }\n var delegations = [\"toggleBlockComment\", \"toggleCommentLines\", \"getNextLineIndent\",\n \"checkOutdent\", \"autoOutdent\", \"transformAction\", \"getCompletions\"];\n for (var i = 0; i < delegations.length; i++) {\n (function (scope) {\n var functionName = delegations[i];\n var defaultHandler = scope[functionName];\n scope[delegations[i]] = function () {\n return this.$delegator(functionName, arguments, defaultHandler);\n };\n }(this));\n }\n };\n this.$delegator = function (method, args, defaultHandler) {\n var state = args[0] || \"start\";\n if (typeof state != \"string\") {\n if (Array.isArray(state[2])) {\n var language = state[2][state[2].length - 1];\n var mode = this.$modes[language];\n if (mode)\n return mode[method].apply(mode, [state[1]].concat([].slice.call(args, 1)));\n }\n state = state[0] || \"start\";\n }\n for (var i = 0; i < this.$embeds.length; i++) {\n if (!this.$modes[this.$embeds[i]])\n continue;\n var split = state.split(this.$embeds[i]);\n if (!split[0] && split[1]) {\n args[0] = split[1];\n var mode = this.$modes[this.$embeds[i]];\n return mode[method].apply(mode, args);\n }\n }\n var ret = defaultHandler.apply(this, args);\n return defaultHandler ? ret : undefined;\n };\n this.transformAction = function (state, action, editor, session, param) {\n if (this.$behaviour) {\n var behaviours = this.$behaviour.getBehaviours();\n for (var key in behaviours) {\n if (behaviours[key][action]) {\n var ret = behaviours[key][action].apply(this, arguments);\n if (ret) {\n return ret;\n }\n }\n }\n }\n };\n this.getKeywords = function (append) {\n if (!this.completionKeywords) {\n var rules = this.$tokenizer.rules;\n var completionKeywords = [];\n for (var rule in rules) {\n var ruleItr = rules[rule];\n for (var r = 0, l = ruleItr.length; r < l; r++) {\n if (typeof ruleItr[r].token === \"string\") {\n if (/keyword|support|storage/.test(ruleItr[r].token))\n completionKeywords.push(ruleItr[r].regex);\n }\n else if (typeof ruleItr[r].token === \"object\") {\n for (var a = 0, aLength = ruleItr[r].token.length; a < aLength; a++) {\n if (/keyword|support|storage/.test(ruleItr[r].token[a])) {\n var rule = ruleItr[r].regex.match(/\\(.+?\\)/g)[a];\n completionKeywords.push(rule.substr(1, rule.length - 2));\n }\n }\n }\n }\n }\n this.completionKeywords = completionKeywords;\n }\n if (!append)\n return this.$keywordList;\n return completionKeywords.concat(this.$keywordList || []);\n };\n this.$createKeywordList = function () {\n if (!this.$highlightRules)\n this.getTokenizer();\n return this.$keywordList = this.$highlightRules.$keywordList || [];\n };\n this.getCompletions = function (state, session, pos, prefix) {\n var keywords = this.$keywordList || this.$createKeywordList();\n return keywords.map(function (word) {\n return {\n name: word,\n value: word,\n score: 0,\n meta: \"keyword\"\n };\n });\n };\n this.$id = \"ace/mode/text\";\n}).call(Mode.prototype);\nexports.Mode = Mode;\n\n});\n\nace.define(\"ace/apply_delta\",[\"require\",\"exports\",\"module\"], function(require, exports, module){\"use strict\";\nfunction throwDeltaError(delta, errorText) {\n console.log(\"Invalid Delta:\", delta);\n throw \"Invalid Delta: \" + errorText;\n}\nfunction positionInDocument(docLines, position) {\n return position.row >= 0 && position.row < docLines.length &&\n position.column >= 0 && position.column <= docLines[position.row].length;\n}\nfunction validateDelta(docLines, delta) {\n if (delta.action != \"insert\" && delta.action != \"remove\")\n throwDeltaError(delta, \"delta.action must be 'insert' or 'remove'\");\n if (!(delta.lines instanceof Array))\n throwDeltaError(delta, \"delta.lines must be an Array\");\n if (!delta.start || !delta.end)\n throwDeltaError(delta, \"delta.start/end must be an present\");\n var start = delta.start;\n if (!positionInDocument(docLines, delta.start))\n throwDeltaError(delta, \"delta.start must be contained in document\");\n var end = delta.end;\n if (delta.action == \"remove\" && !positionInDocument(docLines, end))\n throwDeltaError(delta, \"delta.end must contained in document for 'remove' actions\");\n var numRangeRows = end.row - start.row;\n var numRangeLastLineChars = (end.column - (numRangeRows == 0 ? start.column : 0));\n if (numRangeRows != delta.lines.length - 1 || delta.lines[numRangeRows].length != numRangeLastLineChars)\n throwDeltaError(delta, \"delta.range must match delta lines\");\n}\nexports.applyDelta = function (docLines, delta, doNotValidate) {\n var row = delta.start.row;\n var startColumn = delta.start.column;\n var line = docLines[row] || \"\";\n switch (delta.action) {\n case \"insert\":\n var lines = delta.lines;\n if (lines.length === 1) {\n docLines[row] = line.substring(0, startColumn) + delta.lines[0] + line.substring(startColumn);\n }\n else {\n var args = [row, 1].concat(delta.lines);\n docLines.splice.apply(docLines, args);\n docLines[row] = line.substring(0, startColumn) + docLines[row];\n docLines[row + delta.lines.length - 1] += line.substring(startColumn);\n }\n break;\n case \"remove\":\n var endColumn = delta.end.column;\n var endRow = delta.end.row;\n if (row === endRow) {\n docLines[row] = line.substring(0, startColumn) + line.substring(endColumn);\n }\n else {\n docLines.splice(row, endRow - row + 1, line.substring(0, startColumn) + docLines[endRow].substring(endColumn));\n }\n break;\n }\n};\n\n});\n\nace.define(\"ace/anchor\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/event_emitter\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"./lib/oop\");\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar Anchor = /** @class */ (function () {\n function Anchor(doc, row, column) {\n this.$onChange = this.onChange.bind(this);\n this.attach(doc);\n if (typeof column == \"undefined\")\n this.setPosition(row.row, row.column);\n else\n this.setPosition(row, column);\n }\n Anchor.prototype.getPosition = function () {\n return this.$clipPositionToDocument(this.row, this.column);\n };\n Anchor.prototype.getDocument = function () {\n return this.document;\n };\n Anchor.prototype.onChange = function (delta) {\n if (delta.start.row == delta.end.row && delta.start.row != this.row)\n return;\n if (delta.start.row > this.row)\n return;\n var point = $getTransformedPoint(delta, { row: this.row, column: this.column }, this.$insertRight);\n this.setPosition(point.row, point.column, true);\n };\n Anchor.prototype.setPosition = function (row, column, noClip) {\n var pos;\n if (noClip) {\n pos = {\n row: row,\n column: column\n };\n }\n else {\n pos = this.$clipPositionToDocument(row, column);\n }\n if (this.row == pos.row && this.column == pos.column)\n return;\n var old = {\n row: this.row,\n column: this.column\n };\n this.row = pos.row;\n this.column = pos.column;\n this._signal(\"change\", {\n old: old,\n value: pos\n });\n };\n Anchor.prototype.detach = function () {\n this.document.off(\"change\", this.$onChange);\n };\n Anchor.prototype.attach = function (doc) {\n this.document = doc || this.document;\n this.document.on(\"change\", this.$onChange);\n };\n Anchor.prototype.$clipPositionToDocument = function (row, column) {\n var pos = {};\n if (row >= this.document.getLength()) {\n pos.row = Math.max(0, this.document.getLength() - 1);\n pos.column = this.document.getLine(pos.row).length;\n }\n else if (row < 0) {\n pos.row = 0;\n pos.column = 0;\n }\n else {\n pos.row = row;\n pos.column = Math.min(this.document.getLine(pos.row).length, Math.max(0, column));\n }\n if (column < 0)\n pos.column = 0;\n return pos;\n };\n return Anchor;\n}());\nAnchor.prototype.$insertRight = false;\noop.implement(Anchor.prototype, EventEmitter);\nfunction $pointsInOrder(point1, point2, equalPointsInOrder) {\n var bColIsAfter = equalPointsInOrder ? point1.column <= point2.column : point1.column < point2.column;\n return (point1.row < point2.row) || (point1.row == point2.row && bColIsAfter);\n}\nfunction $getTransformedPoint(delta, point, moveIfEqual) {\n var deltaIsInsert = delta.action == \"insert\";\n var deltaRowShift = (deltaIsInsert ? 1 : -1) * (delta.end.row - delta.start.row);\n var deltaColShift = (deltaIsInsert ? 1 : -1) * (delta.end.column - delta.start.column);\n var deltaStart = delta.start;\n var deltaEnd = deltaIsInsert ? deltaStart : delta.end; // Collapse insert range.\n if ($pointsInOrder(point, deltaStart, moveIfEqual)) {\n return {\n row: point.row,\n column: point.column\n };\n }\n if ($pointsInOrder(deltaEnd, point, !moveIfEqual)) {\n return {\n row: point.row + deltaRowShift,\n column: point.column + (point.row == deltaEnd.row ? deltaColShift : 0)\n };\n }\n return {\n row: deltaStart.row,\n column: deltaStart.column\n };\n}\nexports.Anchor = Anchor;\n\n});\n\nace.define(\"ace/document\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/apply_delta\",\"ace/lib/event_emitter\",\"ace/range\",\"ace/anchor\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"./lib/oop\");\nvar applyDelta = require(\"./apply_delta\").applyDelta;\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar Range = require(\"./range\").Range;\nvar Anchor = require(\"./anchor\").Anchor;\nvar Document = /** @class */ (function () {\n function Document(textOrLines) {\n this.$lines = [\"\"];\n if (textOrLines.length === 0) {\n this.$lines = [\"\"];\n }\n else if (Array.isArray(textOrLines)) {\n this.insertMergedLines({ row: 0, column: 0 }, textOrLines);\n }\n else {\n this.insert({ row: 0, column: 0 }, textOrLines);\n }\n }\n Document.prototype.setValue = function (text) {\n var len = this.getLength() - 1;\n this.remove(new Range(0, 0, len, this.getLine(len).length));\n this.insert({ row: 0, column: 0 }, text || \"\");\n };\n Document.prototype.getValue = function () {\n return this.getAllLines().join(this.getNewLineCharacter());\n };\n Document.prototype.createAnchor = function (row, column) {\n return new Anchor(this, row, column);\n };\n Document.prototype.$detectNewLine = function (text) {\n var match = text.match(/^.*?(\\r\\n|\\r|\\n)/m);\n this.$autoNewLine = match ? match[1] : \"\\n\";\n this._signal(\"changeNewLineMode\");\n };\n Document.prototype.getNewLineCharacter = function () {\n switch (this.$newLineMode) {\n case \"windows\":\n return \"\\r\\n\";\n case \"unix\":\n return \"\\n\";\n default:\n return this.$autoNewLine || \"\\n\";\n }\n };\n Document.prototype.setNewLineMode = function (newLineMode) {\n if (this.$newLineMode === newLineMode)\n return;\n this.$newLineMode = newLineMode;\n this._signal(\"changeNewLineMode\");\n };\n Document.prototype.getNewLineMode = function () {\n return this.$newLineMode;\n };\n Document.prototype.isNewLine = function (text) {\n return (text == \"\\r\\n\" || text == \"\\r\" || text == \"\\n\");\n };\n Document.prototype.getLine = function (row) {\n return this.$lines[row] || \"\";\n };\n Document.prototype.getLines = function (firstRow, lastRow) {\n return this.$lines.slice(firstRow, lastRow + 1);\n };\n Document.prototype.getAllLines = function () {\n return this.getLines(0, this.getLength());\n };\n Document.prototype.getLength = function () {\n return this.$lines.length;\n };\n Document.prototype.getTextRange = function (range) {\n return this.getLinesForRange(range).join(this.getNewLineCharacter());\n };\n Document.prototype.getLinesForRange = function (range) {\n var lines;\n if (range.start.row === range.end.row) {\n lines = [this.getLine(range.start.row).substring(range.start.column, range.end.column)];\n }\n else {\n lines = this.getLines(range.start.row, range.end.row);\n lines[0] = (lines[0] || \"\").substring(range.start.column);\n var l = lines.length - 1;\n if (range.end.row - range.start.row == l)\n lines[l] = lines[l].substring(0, range.end.column);\n }\n return lines;\n };\n Document.prototype.insertLines = function (row, lines) {\n console.warn(\"Use of document.insertLines is deprecated. Use the insertFullLines method instead.\");\n return this.insertFullLines(row, lines);\n };\n Document.prototype.removeLines = function (firstRow, lastRow) {\n console.warn(\"Use of document.removeLines is deprecated. Use the removeFullLines method instead.\");\n return this.removeFullLines(firstRow, lastRow);\n };\n Document.prototype.insertNewLine = function (position) {\n console.warn(\"Use of document.insertNewLine is deprecated. Use insertMergedLines(position, ['', '']) instead.\");\n return this.insertMergedLines(position, [\"\", \"\"]);\n };\n Document.prototype.insert = function (position, text) {\n if (this.getLength() <= 1)\n this.$detectNewLine(text);\n return this.insertMergedLines(position, this.$split(text));\n };\n Document.prototype.insertInLine = function (position, text) {\n var start = this.clippedPos(position.row, position.column);\n var end = this.pos(position.row, position.column + text.length);\n this.applyDelta({\n start: start,\n end: end,\n action: \"insert\",\n lines: [text]\n }, true);\n return this.clonePos(end);\n };\n Document.prototype.clippedPos = function (row, column) {\n var length = this.getLength();\n if (row === undefined) {\n row = length;\n }\n else if (row < 0) {\n row = 0;\n }\n else if (row >= length) {\n row = length - 1;\n column = undefined;\n }\n var line = this.getLine(row);\n if (column == undefined)\n column = line.length;\n column = Math.min(Math.max(column, 0), line.length);\n return { row: row, column: column };\n };\n Document.prototype.clonePos = function (pos) {\n return { row: pos.row, column: pos.column };\n };\n Document.prototype.pos = function (row, column) {\n return { row: row, column: column };\n };\n Document.prototype.$clipPosition = function (position) {\n var length = this.getLength();\n if (position.row >= length) {\n position.row = Math.max(0, length - 1);\n position.column = this.getLine(length - 1).length;\n }\n else {\n position.row = Math.max(0, position.row);\n position.column = Math.min(Math.max(position.column, 0), this.getLine(position.row).length);\n }\n return position;\n };\n Document.prototype.insertFullLines = function (row, lines) {\n row = Math.min(Math.max(row, 0), this.getLength());\n var column = 0;\n if (row < this.getLength()) {\n lines = lines.concat([\"\"]);\n column = 0;\n }\n else {\n lines = [\"\"].concat(lines);\n row--;\n column = this.$lines[row].length;\n }\n this.insertMergedLines({ row: row, column: column }, lines);\n };\n Document.prototype.insertMergedLines = function (position, lines) {\n var start = this.clippedPos(position.row, position.column);\n var end = {\n row: start.row + lines.length - 1,\n column: (lines.length == 1 ? start.column : 0) + lines[lines.length - 1].length\n };\n this.applyDelta({\n start: start,\n end: end,\n action: \"insert\",\n lines: lines\n });\n return this.clonePos(end);\n };\n Document.prototype.remove = function (range) {\n var start = this.clippedPos(range.start.row, range.start.column);\n var end = this.clippedPos(range.end.row, range.end.column);\n this.applyDelta({\n start: start,\n end: end,\n action: \"remove\",\n lines: this.getLinesForRange({ start: start, end: end })\n });\n return this.clonePos(start);\n };\n Document.prototype.removeInLine = function (row, startColumn, endColumn) {\n var start = this.clippedPos(row, startColumn);\n var end = this.clippedPos(row, endColumn);\n this.applyDelta({\n start: start,\n end: end,\n action: \"remove\",\n lines: this.getLinesForRange({ start: start, end: end })\n }, true);\n return this.clonePos(start);\n };\n Document.prototype.removeFullLines = function (firstRow, lastRow) {\n firstRow = Math.min(Math.max(0, firstRow), this.getLength() - 1);\n lastRow = Math.min(Math.max(0, lastRow), this.getLength() - 1);\n var deleteFirstNewLine = lastRow == this.getLength() - 1 && firstRow > 0;\n var deleteLastNewLine = lastRow < this.getLength() - 1;\n var startRow = (deleteFirstNewLine ? firstRow - 1 : firstRow);\n var startCol = (deleteFirstNewLine ? this.getLine(startRow).length : 0);\n var endRow = (deleteLastNewLine ? lastRow + 1 : lastRow);\n var endCol = (deleteLastNewLine ? 0 : this.getLine(endRow).length);\n var range = new Range(startRow, startCol, endRow, endCol);\n var deletedLines = this.$lines.slice(firstRow, lastRow + 1);\n this.applyDelta({\n start: range.start,\n end: range.end,\n action: \"remove\",\n lines: this.getLinesForRange(range)\n });\n return deletedLines;\n };\n Document.prototype.removeNewLine = function (row) {\n if (row < this.getLength() - 1 && row >= 0) {\n this.applyDelta({\n start: this.pos(row, this.getLine(row).length),\n end: this.pos(row + 1, 0),\n action: \"remove\",\n lines: [\"\", \"\"]\n });\n }\n };\n Document.prototype.replace = function (range, text) {\n if (!(range instanceof Range))\n range = Range.fromPoints(range.start, range.end);\n if (text.length === 0 && range.isEmpty())\n return range.start;\n if (text == this.getTextRange(range))\n return range.end;\n this.remove(range);\n var end;\n if (text) {\n end = this.insert(range.start, text);\n }\n else {\n end = range.start;\n }\n return end;\n };\n Document.prototype.applyDeltas = function (deltas) {\n for (var i = 0; i < deltas.length; i++) {\n this.applyDelta(deltas[i]);\n }\n };\n Document.prototype.revertDeltas = function (deltas) {\n for (var i = deltas.length - 1; i >= 0; i--) {\n this.revertDelta(deltas[i]);\n }\n };\n Document.prototype.applyDelta = function (delta, doNotValidate) {\n var isInsert = delta.action == \"insert\";\n if (isInsert ? delta.lines.length <= 1 && !delta.lines[0]\n : !Range.comparePoints(delta.start, delta.end)) {\n return;\n }\n if (isInsert && delta.lines.length > 20000) {\n this.$splitAndapplyLargeDelta(delta, 20000);\n }\n else {\n applyDelta(this.$lines, delta, doNotValidate);\n this._signal(\"change\", delta);\n }\n };\n Document.prototype.$safeApplyDelta = function (delta) {\n var docLength = this.$lines.length;\n if (delta.action == \"remove\" && delta.start.row < docLength && delta.end.row < docLength\n || delta.action == \"insert\" && delta.start.row <= docLength) {\n this.applyDelta(delta);\n }\n };\n Document.prototype.$splitAndapplyLargeDelta = function (delta, MAX) {\n var lines = delta.lines;\n var l = lines.length - MAX + 1;\n var row = delta.start.row;\n var column = delta.start.column;\n for (var from = 0, to = 0; from < l; from = to) {\n to += MAX - 1;\n var chunk = lines.slice(from, to);\n chunk.push(\"\");\n this.applyDelta({\n start: this.pos(row + from, column),\n end: this.pos(row + to, column = 0),\n action: delta.action,\n lines: chunk\n }, true);\n }\n delta.lines = lines.slice(from);\n delta.start.row = row + from;\n delta.start.column = column;\n this.applyDelta(delta, true);\n };\n Document.prototype.revertDelta = function (delta) {\n this.$safeApplyDelta({\n start: this.clonePos(delta.start),\n end: this.clonePos(delta.end),\n action: (delta.action == \"insert\" ? \"remove\" : \"insert\"),\n lines: delta.lines.slice()\n });\n };\n Document.prototype.indexToPosition = function (index, startRow) {\n var lines = this.$lines || this.getAllLines();\n var newlineLength = this.getNewLineCharacter().length;\n for (var i = startRow || 0, l = lines.length; i < l; i++) {\n index -= lines[i].length + newlineLength;\n if (index < 0)\n return { row: i, column: index + lines[i].length + newlineLength };\n }\n return { row: l - 1, column: index + lines[l - 1].length + newlineLength };\n };\n Document.prototype.positionToIndex = function (pos, startRow) {\n var lines = this.$lines || this.getAllLines();\n var newlineLength = this.getNewLineCharacter().length;\n var index = 0;\n var row = Math.min(pos.row, lines.length);\n for (var i = startRow || 0; i < row; ++i)\n index += lines[i].length + newlineLength;\n return index + pos.column;\n };\n Document.prototype.$split = function (text) {\n return text.split(/\\r\\n|\\r|\\n/);\n };\n return Document;\n}());\nDocument.prototype.$autoNewLine = \"\";\nDocument.prototype.$newLineMode = \"auto\";\noop.implement(Document.prototype, EventEmitter);\nexports.Document = Document;\n\n});\n\nace.define(\"ace/background_tokenizer\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/event_emitter\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"./lib/oop\");\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar BackgroundTokenizer = /** @class */ (function () {\n function BackgroundTokenizer(tokenizer, editor) {\n this.running = false;\n this.lines = [];\n this.states = [];\n this.currentLine = 0;\n this.tokenizer = tokenizer;\n var self = this;\n this.$worker = function () {\n if (!self.running) {\n return;\n }\n var workerStart = new Date();\n var currentLine = self.currentLine;\n var endLine = -1;\n var doc = self.doc;\n var startLine = currentLine;\n while (self.lines[currentLine])\n currentLine++;\n var len = doc.getLength();\n var processedLines = 0;\n self.running = false;\n while (currentLine < len) {\n self.$tokenizeRow(currentLine);\n endLine = currentLine;\n do {\n currentLine++;\n } while (self.lines[currentLine]);\n processedLines++;\n if ((processedLines % 5 === 0) && (new Date() - workerStart) > 20) {\n self.running = setTimeout(self.$worker, 20);\n break;\n }\n }\n self.currentLine = currentLine;\n if (endLine == -1)\n endLine = currentLine;\n if (startLine <= endLine)\n self.fireUpdateEvent(startLine, endLine);\n };\n }\n BackgroundTokenizer.prototype.setTokenizer = function (tokenizer) {\n this.tokenizer = tokenizer;\n this.lines = [];\n this.states = [];\n this.start(0);\n };\n BackgroundTokenizer.prototype.setDocument = function (doc) {\n this.doc = doc;\n this.lines = [];\n this.states = [];\n this.stop();\n };\n BackgroundTokenizer.prototype.fireUpdateEvent = function (firstRow, lastRow) {\n var data = {\n first: firstRow,\n last: lastRow\n };\n this._signal(\"update\", { data: data });\n };\n BackgroundTokenizer.prototype.start = function (startRow) {\n this.currentLine = Math.min(startRow || 0, this.currentLine, this.doc.getLength());\n this.lines.splice(this.currentLine, this.lines.length);\n this.states.splice(this.currentLine, this.states.length);\n this.stop();\n this.running = setTimeout(this.$worker, 700);\n };\n BackgroundTokenizer.prototype.scheduleStart = function () {\n if (!this.running)\n this.running = setTimeout(this.$worker, 700);\n };\n BackgroundTokenizer.prototype.$updateOnChange = function (delta) {\n var startRow = delta.start.row;\n var len = delta.end.row - startRow;\n if (len === 0) {\n this.lines[startRow] = null;\n }\n else if (delta.action == \"remove\") {\n this.lines.splice(startRow, len + 1, null);\n this.states.splice(startRow, len + 1, null);\n }\n else {\n var args = Array(len + 1);\n args.unshift(startRow, 1);\n this.lines.splice.apply(this.lines, args);\n this.states.splice.apply(this.states, args);\n }\n this.currentLine = Math.min(startRow, this.currentLine, this.doc.getLength());\n this.stop();\n };\n BackgroundTokenizer.prototype.stop = function () {\n if (this.running)\n clearTimeout(this.running);\n this.running = false;\n };\n BackgroundTokenizer.prototype.getTokens = function (row) {\n return this.lines[row] || this.$tokenizeRow(row);\n };\n BackgroundTokenizer.prototype.getState = function (row) {\n if (this.currentLine == row)\n this.$tokenizeRow(row);\n return this.states[row] || \"start\";\n };\n BackgroundTokenizer.prototype.$tokenizeRow = function (row) {\n var line = this.doc.getLine(row);\n var state = this.states[row - 1];\n var data = this.tokenizer.getLineTokens(line, state, row);\n if (this.states[row] + \"\" !== data.state + \"\") {\n this.states[row] = data.state;\n this.lines[row + 1] = null;\n if (this.currentLine > row + 1)\n this.currentLine = row + 1;\n }\n else if (this.currentLine == row) {\n this.currentLine = row + 1;\n }\n return this.lines[row] = data.tokens;\n };\n BackgroundTokenizer.prototype.cleanup = function () {\n this.running = false;\n this.lines = [];\n this.states = [];\n this.currentLine = 0;\n this.removeAllListeners();\n };\n return BackgroundTokenizer;\n}());\noop.implement(BackgroundTokenizer.prototype, EventEmitter);\nexports.BackgroundTokenizer = BackgroundTokenizer;\n\n});\n\nace.define(\"ace/search_highlight\",[\"require\",\"exports\",\"module\",\"ace/lib/lang\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar lang = require(\"./lib/lang\");\nvar Range = require(\"./range\").Range;\nvar SearchHighlight = /** @class */ (function () {\n function SearchHighlight(regExp, clazz, type) {\n if (type === void 0) { type = \"text\"; }\n this.setRegexp(regExp);\n this.clazz = clazz;\n this.type = type;\n }\n SearchHighlight.prototype.setRegexp = function (regExp) {\n if (this.regExp + \"\" == regExp + \"\")\n return;\n this.regExp = regExp;\n this.cache = [];\n };\n SearchHighlight.prototype.update = function (html, markerLayer, session, config) {\n if (!this.regExp)\n return;\n var start = config.firstRow, end = config.lastRow;\n var renderedMarkerRanges = {};\n for (var i = start; i <= end; i++) {\n var ranges = this.cache[i];\n if (ranges == null) {\n ranges = lang.getMatchOffsets(session.getLine(i), this.regExp);\n if (ranges.length > this.MAX_RANGES)\n ranges = ranges.slice(0, this.MAX_RANGES);\n ranges = ranges.map(function (match) {\n return new Range(i, match.offset, i, match.offset + match.length);\n });\n this.cache[i] = ranges.length ? ranges : \"\";\n }\n for (var j = ranges.length; j--;) {\n var rangeToAddMarkerTo = ranges[j].toScreenRange(session);\n var rangeAsString = rangeToAddMarkerTo.toString();\n if (renderedMarkerRanges[rangeAsString])\n continue;\n renderedMarkerRanges[rangeAsString] = true;\n markerLayer.drawSingleLineMarker(html, rangeToAddMarkerTo, this.clazz, config);\n }\n }\n };\n return SearchHighlight;\n}());\nSearchHighlight.prototype.MAX_RANGES = 500;\nexports.SearchHighlight = SearchHighlight;\n\n});\n\nace.define(\"ace/undomanager\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar UndoManager = /** @class */ (function () {\n function UndoManager() {\n this.$maxRev = 0;\n this.$fromUndo = false;\n this.$undoDepth = Infinity;\n this.reset();\n }\n UndoManager.prototype.addSession = function (session) {\n this.$session = session;\n };\n UndoManager.prototype.add = function (delta, allowMerge, session) {\n if (this.$fromUndo)\n return;\n if (delta == this.$lastDelta)\n return;\n if (!this.$keepRedoStack)\n this.$redoStack.length = 0;\n if (allowMerge === false || !this.lastDeltas) {\n this.lastDeltas = [];\n var undoStackLength = this.$undoStack.length;\n if (undoStackLength > this.$undoDepth - 1) {\n this.$undoStack.splice(0, undoStackLength - this.$undoDepth + 1);\n }\n this.$undoStack.push(this.lastDeltas);\n delta.id = this.$rev = ++this.$maxRev;\n }\n if (delta.action == \"remove\" || delta.action == \"insert\")\n this.$lastDelta = delta;\n this.lastDeltas.push(delta);\n };\n UndoManager.prototype.addSelection = function (selection, rev) {\n this.selections.push({\n value: selection,\n rev: rev || this.$rev\n });\n };\n UndoManager.prototype.startNewGroup = function () {\n this.lastDeltas = null;\n return this.$rev;\n };\n UndoManager.prototype.markIgnored = function (from, to) {\n if (to == null)\n to = this.$rev + 1;\n var stack = this.$undoStack;\n for (var i = stack.length; i--;) {\n var delta = stack[i][0];\n if (delta.id <= from)\n break;\n if (delta.id < to)\n delta.ignore = true;\n }\n this.lastDeltas = null;\n };\n UndoManager.prototype.getSelection = function (rev, after) {\n var stack = this.selections;\n for (var i = stack.length; i--;) {\n var selection = stack[i];\n if (selection.rev < rev) {\n if (after)\n selection = stack[i + 1];\n return selection;\n }\n }\n };\n UndoManager.prototype.getRevision = function () {\n return this.$rev;\n };\n UndoManager.prototype.getDeltas = function (from, to) {\n if (to == null)\n to = this.$rev + 1;\n var stack = this.$undoStack;\n var end = null, start = 0;\n for (var i = stack.length; i--;) {\n var delta = stack[i][0];\n if (delta.id < to && !end)\n end = i + 1;\n if (delta.id <= from) {\n start = i + 1;\n break;\n }\n }\n return stack.slice(start, end);\n };\n UndoManager.prototype.getChangedRanges = function (from, to) {\n if (to == null)\n to = this.$rev + 1;\n };\n UndoManager.prototype.getChangedLines = function (from, to) {\n if (to == null)\n to = this.$rev + 1;\n };\n UndoManager.prototype.undo = function (session, dontSelect) {\n this.lastDeltas = null;\n var stack = this.$undoStack;\n if (!rearrangeUndoStack(stack, stack.length))\n return;\n if (!session)\n session = this.$session;\n if (this.$redoStackBaseRev !== this.$rev && this.$redoStack.length)\n this.$redoStack = [];\n this.$fromUndo = true;\n var deltaSet = stack.pop();\n var undoSelectionRange = null;\n if (deltaSet) {\n undoSelectionRange = session.undoChanges(deltaSet, dontSelect);\n this.$redoStack.push(deltaSet);\n this.$syncRev();\n }\n this.$fromUndo = false;\n return undoSelectionRange;\n };\n UndoManager.prototype.redo = function (session, dontSelect) {\n this.lastDeltas = null;\n if (!session)\n session = this.$session;\n this.$fromUndo = true;\n if (this.$redoStackBaseRev != this.$rev) {\n var diff = this.getDeltas(this.$redoStackBaseRev, this.$rev + 1);\n rebaseRedoStack(this.$redoStack, diff);\n this.$redoStackBaseRev = this.$rev;\n this.$redoStack.forEach(function (x) {\n x[0].id = ++this.$maxRev;\n }, this);\n }\n var deltaSet = this.$redoStack.pop();\n var redoSelectionRange = null;\n if (deltaSet) {\n redoSelectionRange = session.redoChanges(deltaSet, dontSelect);\n this.$undoStack.push(deltaSet);\n this.$syncRev();\n }\n this.$fromUndo = false;\n return redoSelectionRange;\n };\n UndoManager.prototype.$syncRev = function () {\n var stack = this.$undoStack;\n var nextDelta = stack[stack.length - 1];\n var id = nextDelta && nextDelta[0].id || 0;\n this.$redoStackBaseRev = id;\n this.$rev = id;\n };\n UndoManager.prototype.reset = function () {\n this.lastDeltas = null;\n this.$lastDelta = null;\n this.$undoStack = [];\n this.$redoStack = [];\n this.$rev = 0;\n this.mark = 0;\n this.$redoStackBaseRev = this.$rev;\n this.selections = [];\n };\n UndoManager.prototype.canUndo = function () {\n return this.$undoStack.length > 0;\n };\n UndoManager.prototype.canRedo = function () {\n return this.$redoStack.length > 0;\n };\n UndoManager.prototype.bookmark = function (rev) {\n if (rev == undefined)\n rev = this.$rev;\n this.mark = rev;\n };\n UndoManager.prototype.isAtBookmark = function () {\n return this.$rev === this.mark;\n };\n UndoManager.prototype.toJSON = function () {\n return {\n $redoStack: this.$redoStack,\n $undoStack: this.$undoStack\n };\n };\n UndoManager.prototype.fromJSON = function (json) {\n this.reset();\n this.$undoStack = json.$undoStack;\n this.$redoStack = json.$redoStack;\n };\n UndoManager.prototype.$prettyPrint = function (delta) {\n if (delta)\n return stringifyDelta(delta);\n return stringifyDelta(this.$undoStack) + \"\\n---\\n\" + stringifyDelta(this.$redoStack);\n };\n return UndoManager;\n}());\nUndoManager.prototype.hasUndo = UndoManager.prototype.canUndo;\nUndoManager.prototype.hasRedo = UndoManager.prototype.canRedo;\nUndoManager.prototype.isClean = UndoManager.prototype.isAtBookmark;\nUndoManager.prototype.markClean = UndoManager.prototype.bookmark;\nfunction rearrangeUndoStack(stack, pos) {\n for (var i = pos; i--;) {\n var deltaSet = stack[i];\n if (deltaSet && !deltaSet[0].ignore) {\n while (i < pos - 1) {\n var swapped = swapGroups(stack[i], stack[i + 1]);\n stack[i] = swapped[0];\n stack[i + 1] = swapped[1];\n i++;\n }\n return true;\n }\n }\n}\nvar Range = require(\"./range\").Range;\nvar cmp = Range.comparePoints;\nvar comparePoints = Range.comparePoints;\nfunction $updateMarkers(delta) {\n var isInsert = delta.action == \"insert\";\n var start = delta.start;\n var end = delta.end;\n var rowShift = (end.row - start.row) * (isInsert ? 1 : -1);\n var colShift = (end.column - start.column) * (isInsert ? 1 : -1);\n if (isInsert)\n end = start;\n for (var i in this.marks) {\n var point = this.marks[i];\n var cmp = comparePoints(point, start);\n if (cmp < 0) {\n continue; // delta starts after the range\n }\n if (cmp === 0) {\n if (isInsert) {\n if (point.bias == 1) {\n cmp = 1;\n }\n else {\n point.bias == -1;\n continue;\n }\n }\n }\n var cmp2 = isInsert ? cmp : comparePoints(point, end);\n if (cmp2 > 0) {\n point.row += rowShift;\n point.column += point.row == end.row ? colShift : 0;\n continue;\n }\n if (!isInsert && cmp2 <= 0) {\n point.row = start.row;\n point.column = start.column;\n if (cmp2 === 0)\n point.bias = 1;\n }\n }\n}\nfunction clonePos(pos) {\n return { row: pos.row, column: pos.column };\n}\nfunction cloneDelta(d) {\n return {\n start: clonePos(d.start),\n end: clonePos(d.end),\n action: d.action,\n lines: d.lines.slice()\n };\n}\nfunction stringifyDelta(d) {\n d = d || this;\n if (Array.isArray(d)) {\n return d.map(stringifyDelta).join(\"\\n\");\n }\n var type = \"\";\n if (d.action) {\n type = d.action == \"insert\" ? \"+\" : \"-\";\n type += \"[\" + d.lines + \"]\";\n }\n else if (d.value) {\n if (Array.isArray(d.value)) {\n type = d.value.map(stringifyRange).join(\"\\n\");\n }\n else {\n type = stringifyRange(d.value);\n }\n }\n if (d.start) {\n type += stringifyRange(d);\n }\n if (d.id || d.rev) {\n type += \"\\t(\" + (d.id || d.rev) + \")\";\n }\n return type;\n}\nfunction stringifyRange(r) {\n return r.start.row + \":\" + r.start.column\n + \"=>\" + r.end.row + \":\" + r.end.column;\n}\nfunction swap(d1, d2) {\n var i1 = d1.action == \"insert\";\n var i2 = d2.action == \"insert\";\n if (i1 && i2) {\n if (cmp(d2.start, d1.end) >= 0) {\n shift(d2, d1, -1);\n }\n else if (cmp(d2.start, d1.start) <= 0) {\n shift(d1, d2, +1);\n }\n else {\n return null;\n }\n }\n else if (i1 && !i2) {\n if (cmp(d2.start, d1.end) >= 0) {\n shift(d2, d1, -1);\n }\n else if (cmp(d2.end, d1.start) <= 0) {\n shift(d1, d2, -1);\n }\n else {\n return null;\n }\n }\n else if (!i1 && i2) {\n if (cmp(d2.start, d1.start) >= 0) {\n shift(d2, d1, +1);\n }\n else if (cmp(d2.start, d1.start) <= 0) {\n shift(d1, d2, +1);\n }\n else {\n return null;\n }\n }\n else if (!i1 && !i2) {\n if (cmp(d2.start, d1.start) >= 0) {\n shift(d2, d1, +1);\n }\n else if (cmp(d2.end, d1.start) <= 0) {\n shift(d1, d2, -1);\n }\n else {\n return null;\n }\n }\n return [d2, d1];\n}\nfunction swapGroups(ds1, ds2) {\n for (var i = ds1.length; i--;) {\n for (var j = 0; j < ds2.length; j++) {\n if (!swap(ds1[i], ds2[j])) {\n while (i < ds1.length) {\n while (j--) {\n swap(ds2[j], ds1[i]);\n }\n j = ds2.length;\n i++;\n }\n return [ds1, ds2];\n }\n }\n }\n ds1.selectionBefore = ds2.selectionBefore =\n ds1.selectionAfter = ds2.selectionAfter = null;\n return [ds2, ds1];\n}\nfunction xform(d1, c1) {\n var i1 = d1.action == \"insert\";\n var i2 = c1.action == \"insert\";\n if (i1 && i2) {\n if (cmp(d1.start, c1.start) < 0) {\n shift(c1, d1, 1);\n }\n else {\n shift(d1, c1, 1);\n }\n }\n else if (i1 && !i2) {\n if (cmp(d1.start, c1.end) >= 0) {\n shift(d1, c1, -1);\n }\n else if (cmp(d1.start, c1.start) <= 0) {\n shift(c1, d1, +1);\n }\n else {\n shift(d1, Range.fromPoints(c1.start, d1.start), -1);\n shift(c1, d1, +1);\n }\n }\n else if (!i1 && i2) {\n if (cmp(c1.start, d1.end) >= 0) {\n shift(c1, d1, -1);\n }\n else if (cmp(c1.start, d1.start) <= 0) {\n shift(d1, c1, +1);\n }\n else {\n shift(c1, Range.fromPoints(d1.start, c1.start), -1);\n shift(d1, c1, +1);\n }\n }\n else if (!i1 && !i2) {\n if (cmp(c1.start, d1.end) >= 0) {\n shift(c1, d1, -1);\n }\n else if (cmp(c1.end, d1.start) <= 0) {\n shift(d1, c1, -1);\n }\n else {\n var before, after;\n if (cmp(d1.start, c1.start) < 0) {\n before = d1;\n d1 = splitDelta(d1, c1.start);\n }\n if (cmp(d1.end, c1.end) > 0) {\n after = splitDelta(d1, c1.end);\n }\n shiftPos(c1.end, d1.start, d1.end, -1);\n if (after && !before) {\n d1.lines = after.lines;\n d1.start = after.start;\n d1.end = after.end;\n after = d1;\n }\n return [c1, before, after].filter(Boolean);\n }\n }\n return [c1, d1];\n}\nfunction shift(d1, d2, dir) {\n shiftPos(d1.start, d2.start, d2.end, dir);\n shiftPos(d1.end, d2.start, d2.end, dir);\n}\nfunction shiftPos(pos, start, end, dir) {\n if (pos.row == (dir == 1 ? start : end).row) {\n pos.column += dir * (end.column - start.column);\n }\n pos.row += dir * (end.row - start.row);\n}\nfunction splitDelta(c, pos) {\n var lines = c.lines;\n var end = c.end;\n c.end = clonePos(pos);\n var rowsBefore = c.end.row - c.start.row;\n var otherLines = lines.splice(rowsBefore, lines.length);\n var col = rowsBefore ? pos.column : pos.column - c.start.column;\n lines.push(otherLines[0].substring(0, col));\n otherLines[0] = otherLines[0].substr(col);\n var rest = {\n start: clonePos(pos),\n end: end,\n lines: otherLines,\n action: c.action\n };\n return rest;\n}\nfunction moveDeltasByOne(redoStack, d) {\n d = cloneDelta(d);\n for (var j = redoStack.length; j--;) {\n var deltaSet = redoStack[j];\n for (var i = 0; i < deltaSet.length; i++) {\n var x = deltaSet[i];\n var xformed = xform(x, d);\n d = xformed[0];\n if (xformed.length != 2) {\n if (xformed[2]) {\n deltaSet.splice(i + 1, 1, xformed[1], xformed[2]);\n i++;\n }\n else if (!xformed[1]) {\n deltaSet.splice(i, 1);\n i--;\n }\n }\n }\n if (!deltaSet.length) {\n redoStack.splice(j, 1);\n }\n }\n return redoStack;\n}\nfunction rebaseRedoStack(redoStack, deltaSets) {\n for (var i = 0; i < deltaSets.length; i++) {\n var deltas = deltaSets[i];\n for (var j = 0; j < deltas.length; j++) {\n moveDeltasByOne(redoStack, deltas[j]);\n }\n }\n}\nexports.UndoManager = UndoManager;\n\n});\n\nace.define(\"ace/edit_session/fold_line\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar Range = require(\"../range\").Range;\nvar FoldLine = /** @class */ (function () {\n function FoldLine(foldData, folds) {\n this.foldData = foldData;\n if (Array.isArray(folds)) {\n this.folds = folds;\n }\n else {\n folds = this.folds = [folds];\n }\n var last = folds[folds.length - 1];\n this.range = new Range(folds[0].start.row, folds[0].start.column, last.end.row, last.end.column);\n this.start = this.range.start;\n this.end = this.range.end;\n this.folds.forEach(function (fold) {\n fold.setFoldLine(this);\n }, this);\n }\n FoldLine.prototype.shiftRow = function (shift) {\n this.start.row += shift;\n this.end.row += shift;\n this.folds.forEach(function (fold) {\n fold.start.row += shift;\n fold.end.row += shift;\n });\n };\n FoldLine.prototype.addFold = function (fold) {\n if (fold.sameRow) {\n if (fold.start.row < this.startRow || fold.endRow > this.endRow) {\n throw new Error(\"Can't add a fold to this FoldLine as it has no connection\");\n }\n this.folds.push(fold);\n this.folds.sort(function (a, b) {\n return -a.range.compareEnd(b.start.row, b.start.column);\n });\n if (this.range.compareEnd(fold.start.row, fold.start.column) > 0) {\n this.end.row = fold.end.row;\n this.end.column = fold.end.column;\n }\n else if (this.range.compareStart(fold.end.row, fold.end.column) < 0) {\n this.start.row = fold.start.row;\n this.start.column = fold.start.column;\n }\n }\n else if (fold.start.row == this.end.row) {\n this.folds.push(fold);\n this.end.row = fold.end.row;\n this.end.column = fold.end.column;\n }\n else if (fold.end.row == this.start.row) {\n this.folds.unshift(fold);\n this.start.row = fold.start.row;\n this.start.column = fold.start.column;\n }\n else {\n throw new Error(\"Trying to add fold to FoldRow that doesn't have a matching row\");\n }\n fold.foldLine = this;\n };\n FoldLine.prototype.containsRow = function (row) {\n return row >= this.start.row && row <= this.end.row;\n };\n FoldLine.prototype.walk = function (callback, endRow, endColumn) {\n var lastEnd = 0, folds = this.folds, fold, cmp, stop, isNewRow = true;\n if (endRow == null) {\n endRow = this.end.row;\n endColumn = this.end.column;\n }\n for (var i = 0; i < folds.length; i++) {\n fold = folds[i];\n cmp = fold.range.compareStart(endRow, endColumn);\n if (cmp == -1) {\n callback(null, endRow, endColumn, lastEnd, isNewRow);\n return;\n }\n stop = callback(null, fold.start.row, fold.start.column, lastEnd, isNewRow);\n stop = !stop && callback(fold.placeholder, fold.start.row, fold.start.column, lastEnd);\n if (stop || cmp === 0) {\n return;\n }\n isNewRow = !fold.sameRow;\n lastEnd = fold.end.column;\n }\n callback(null, endRow, endColumn, lastEnd, isNewRow);\n };\n FoldLine.prototype.getNextFoldTo = function (row, column) {\n var fold, cmp;\n for (var i = 0; i < this.folds.length; i++) {\n fold = this.folds[i];\n cmp = fold.range.compareEnd(row, column);\n if (cmp == -1) {\n return {\n fold: fold,\n kind: \"after\"\n };\n }\n else if (cmp === 0) {\n return {\n fold: fold,\n kind: \"inside\"\n };\n }\n }\n return null;\n };\n FoldLine.prototype.addRemoveChars = function (row, column, len) {\n var ret = this.getNextFoldTo(row, column), fold, folds;\n if (ret) {\n fold = ret.fold;\n if (ret.kind == \"inside\"\n && fold.start.column != column\n && fold.start.row != row) {\n window.console && window.console.log(row, column, fold);\n }\n else if (fold.start.row == row) {\n folds = this.folds;\n var i = folds.indexOf(fold);\n if (i === 0) {\n this.start.column += len;\n }\n for (i; i < folds.length; i++) {\n fold = folds[i];\n fold.start.column += len;\n if (!fold.sameRow) {\n return;\n }\n fold.end.column += len;\n }\n this.end.column += len;\n }\n }\n };\n FoldLine.prototype.split = function (row, column) {\n var pos = this.getNextFoldTo(row, column);\n if (!pos || pos.kind == \"inside\")\n return null;\n var fold = pos.fold;\n var folds = this.folds;\n var foldData = this.foldData;\n var i = folds.indexOf(fold);\n var foldBefore = folds[i - 1];\n this.end.row = foldBefore.end.row;\n this.end.column = foldBefore.end.column;\n folds = folds.splice(i, folds.length - i);\n var newFoldLine = new FoldLine(foldData, folds);\n foldData.splice(foldData.indexOf(this) + 1, 0, newFoldLine);\n return newFoldLine;\n };\n FoldLine.prototype.merge = function (foldLineNext) {\n var folds = foldLineNext.folds;\n for (var i = 0; i < folds.length; i++) {\n this.addFold(folds[i]);\n }\n var foldData = this.foldData;\n foldData.splice(foldData.indexOf(foldLineNext), 1);\n };\n FoldLine.prototype.toString = function () {\n var ret = [this.range.toString() + \": [\"];\n this.folds.forEach(function (fold) {\n ret.push(\" \" + fold.toString());\n });\n ret.push(\"]\");\n return ret.join(\"\\n\");\n };\n FoldLine.prototype.idxToPosition = function (idx) {\n var lastFoldEndColumn = 0;\n for (var i = 0; i < this.folds.length; i++) {\n var fold = this.folds[i];\n idx -= fold.start.column - lastFoldEndColumn;\n if (idx < 0) {\n return {\n row: fold.start.row,\n column: fold.start.column + idx\n };\n }\n idx -= fold.placeholder.length;\n if (idx < 0) {\n return fold.start;\n }\n lastFoldEndColumn = fold.end.column;\n }\n return {\n row: this.end.row,\n column: this.end.column + idx\n };\n };\n return FoldLine;\n}());\nexports.FoldLine = FoldLine;\n\n});\n\nace.define(\"ace/range_list\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar Range = require(\"./range\").Range;\nvar comparePoints = Range.comparePoints;\nvar RangeList = /** @class */ (function () {\n function RangeList() {\n this.ranges = [];\n this.$bias = 1;\n }\n RangeList.prototype.pointIndex = function (pos, excludeEdges, startIndex) {\n var list = this.ranges;\n for (var i = startIndex || 0; i < list.length; i++) {\n var range = list[i];\n var cmpEnd = comparePoints(pos, range.end);\n if (cmpEnd > 0)\n continue;\n var cmpStart = comparePoints(pos, range.start);\n if (cmpEnd === 0)\n return excludeEdges && cmpStart !== 0 ? -i - 2 : i;\n if (cmpStart > 0 || (cmpStart === 0 && !excludeEdges))\n return i;\n return -i - 1;\n }\n return -i - 1;\n };\n RangeList.prototype.add = function (range) {\n var excludeEdges = !range.isEmpty();\n var startIndex = this.pointIndex(range.start, excludeEdges);\n if (startIndex < 0)\n startIndex = -startIndex - 1;\n var endIndex = this.pointIndex(range.end, excludeEdges, startIndex);\n if (endIndex < 0)\n endIndex = -endIndex - 1;\n else\n endIndex++;\n return this.ranges.splice(startIndex, endIndex - startIndex, range);\n };\n RangeList.prototype.addList = function (list) {\n var removed = [];\n for (var i = list.length; i--;) {\n removed.push.apply(removed, this.add(list[i]));\n }\n return removed;\n };\n RangeList.prototype.substractPoint = function (pos) {\n var i = this.pointIndex(pos);\n if (i >= 0)\n return this.ranges.splice(i, 1);\n };\n RangeList.prototype.merge = function () {\n var removed = [];\n var list = this.ranges;\n list = list.sort(function (a, b) {\n return comparePoints(a.start, b.start);\n });\n var next = list[0], range;\n for (var i = 1; i < list.length; i++) {\n range = next;\n next = list[i];\n var cmp = comparePoints(range.end, next.start);\n if (cmp < 0)\n continue;\n if (cmp == 0 && !range.isEmpty() && !next.isEmpty())\n continue;\n if (comparePoints(range.end, next.end) < 0) {\n range.end.row = next.end.row;\n range.end.column = next.end.column;\n }\n list.splice(i, 1);\n removed.push(next);\n next = range;\n i--;\n }\n this.ranges = list;\n return removed;\n };\n RangeList.prototype.contains = function (row, column) {\n return this.pointIndex({ row: row, column: column }) >= 0;\n };\n RangeList.prototype.containsPoint = function (pos) {\n return this.pointIndex(pos) >= 0;\n };\n RangeList.prototype.rangeAtPoint = function (pos) {\n var i = this.pointIndex(pos);\n if (i >= 0)\n return this.ranges[i];\n };\n RangeList.prototype.clipRows = function (startRow, endRow) {\n var list = this.ranges;\n if (list[0].start.row > endRow || list[list.length - 1].start.row < startRow)\n return [];\n var startIndex = this.pointIndex({ row: startRow, column: 0 });\n if (startIndex < 0)\n startIndex = -startIndex - 1;\n var endIndex = this.pointIndex({ row: endRow, column: 0 }, startIndex);\n if (endIndex < 0)\n endIndex = -endIndex - 1;\n var clipped = [];\n for (var i = startIndex; i < endIndex; i++) {\n clipped.push(list[i]);\n }\n return clipped;\n };\n RangeList.prototype.removeAll = function () {\n return this.ranges.splice(0, this.ranges.length);\n };\n RangeList.prototype.attach = function (session) {\n if (this.session)\n this.detach();\n this.session = session;\n this.onChange = this.$onChange.bind(this);\n this.session.on('change', this.onChange);\n };\n RangeList.prototype.detach = function () {\n if (!this.session)\n return;\n this.session.removeListener('change', this.onChange);\n this.session = null;\n };\n RangeList.prototype.$onChange = function (delta) {\n var start = delta.start;\n var end = delta.end;\n var startRow = start.row;\n var endRow = end.row;\n var ranges = this.ranges;\n for (var i = 0, n = ranges.length; i < n; i++) {\n var r = ranges[i];\n if (r.end.row >= startRow)\n break;\n }\n if (delta.action == \"insert\") {\n var lineDif = endRow - startRow;\n var colDiff = -start.column + end.column;\n for (; i < n; i++) {\n var r = ranges[i];\n if (r.start.row > startRow)\n break;\n if (r.start.row == startRow && r.start.column >= start.column) {\n if (r.start.column == start.column && this.$bias <= 0) {\n }\n else {\n r.start.column += colDiff;\n r.start.row += lineDif;\n }\n }\n if (r.end.row == startRow && r.end.column >= start.column) {\n if (r.end.column == start.column && this.$bias < 0) {\n continue;\n }\n if (r.end.column == start.column && colDiff > 0 && i < n - 1) {\n if (r.end.column > r.start.column && r.end.column == ranges[i + 1].start.column)\n r.end.column -= colDiff;\n }\n r.end.column += colDiff;\n r.end.row += lineDif;\n }\n }\n }\n else {\n var lineDif = startRow - endRow;\n var colDiff = start.column - end.column;\n for (; i < n; i++) {\n var r = ranges[i];\n if (r.start.row > endRow)\n break;\n if (r.end.row < endRow\n && (startRow < r.end.row\n || startRow == r.end.row && start.column < r.end.column)) {\n r.end.row = startRow;\n r.end.column = start.column;\n }\n else if (r.end.row == endRow) {\n if (r.end.column <= end.column) {\n if (lineDif || r.end.column > start.column) {\n r.end.column = start.column;\n r.end.row = start.row;\n }\n }\n else {\n r.end.column += colDiff;\n r.end.row += lineDif;\n }\n }\n else if (r.end.row > endRow) {\n r.end.row += lineDif;\n }\n if (r.start.row < endRow\n && (startRow < r.start.row\n || startRow == r.start.row && start.column < r.start.column)) {\n r.start.row = startRow;\n r.start.column = start.column;\n }\n else if (r.start.row == endRow) {\n if (r.start.column <= end.column) {\n if (lineDif || r.start.column > start.column) {\n r.start.column = start.column;\n r.start.row = start.row;\n }\n }\n else {\n r.start.column += colDiff;\n r.start.row += lineDif;\n }\n }\n else if (r.start.row > endRow) {\n r.start.row += lineDif;\n }\n }\n }\n if (lineDif != 0 && i < n) {\n for (; i < n; i++) {\n var r = ranges[i];\n r.start.row += lineDif;\n r.end.row += lineDif;\n }\n }\n };\n return RangeList;\n}());\nRangeList.prototype.comparePoints = comparePoints;\nexports.RangeList = RangeList;\n\n});\n\nace.define(\"ace/edit_session/fold\",[\"require\",\"exports\",\"module\",\"ace/range_list\"], function(require, exports, module){\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar RangeList = require(\"../range_list\").RangeList;\nvar Fold = /** @class */ (function (_super) {\n __extends(Fold, _super);\n function Fold(range, placeholder) {\n var _this = _super.call(this) || this;\n _this.foldLine = null;\n _this.placeholder = placeholder;\n _this.range = range;\n _this.start = range.start;\n _this.end = range.end;\n _this.sameRow = range.start.row == range.end.row;\n _this.subFolds = _this.ranges = [];\n return _this;\n }\n Fold.prototype.toString = function () {\n return '\"' + this.placeholder + '\" ' + this.range.toString();\n };\n Fold.prototype.setFoldLine = function (foldLine) {\n this.foldLine = foldLine;\n this.subFolds.forEach(function (fold) {\n fold.setFoldLine(foldLine);\n });\n };\n Fold.prototype.clone = function () {\n var range = this.range.clone();\n var fold = new Fold(range, this.placeholder);\n this.subFolds.forEach(function (subFold) {\n fold.subFolds.push(subFold.clone());\n });\n fold.collapseChildren = this.collapseChildren;\n return fold;\n };\n Fold.prototype.addSubFold = function (fold) {\n if (this.range.isEqual(fold))\n return;\n consumeRange(fold, this.start);\n var row = fold.start.row, column = fold.start.column;\n for (var i = 0, cmp = -1; i < this.subFolds.length; i++) {\n cmp = this.subFolds[i].range.compare(row, column);\n if (cmp != 1)\n break;\n }\n var afterStart = this.subFolds[i];\n var firstConsumed = 0;\n if (cmp == 0) {\n if (afterStart.range.containsRange(fold))\n return afterStart.addSubFold(fold);\n else\n firstConsumed = 1;\n }\n var row = fold.range.end.row, column = fold.range.end.column;\n for (var j = i, cmp = -1; j < this.subFolds.length; j++) {\n cmp = this.subFolds[j].range.compare(row, column);\n if (cmp != 1)\n break;\n }\n if (cmp == 0)\n j++;\n var consumedFolds = this.subFolds.splice(i, j - i, fold);\n var last = cmp == 0 ? consumedFolds.length - 1 : consumedFolds.length;\n for (var k = firstConsumed; k < last; k++) {\n fold.addSubFold(consumedFolds[k]);\n }\n fold.setFoldLine(this.foldLine);\n return fold;\n };\n Fold.prototype.restoreRange = function (range) {\n return restoreRange(range, this.start);\n };\n return Fold;\n}(RangeList));\nfunction consumePoint(point, anchor) {\n point.row -= anchor.row;\n if (point.row == 0)\n point.column -= anchor.column;\n}\nfunction consumeRange(range, anchor) {\n consumePoint(range.start, anchor);\n consumePoint(range.end, anchor);\n}\nfunction restorePoint(point, anchor) {\n if (point.row == 0)\n point.column += anchor.column;\n point.row += anchor.row;\n}\nfunction restoreRange(range, anchor) {\n restorePoint(range.start, anchor);\n restorePoint(range.end, anchor);\n}\nexports.Fold = Fold;\n\n});\n\nace.define(\"ace/edit_session/folding\",[\"require\",\"exports\",\"module\",\"ace/range\",\"ace/edit_session/fold_line\",\"ace/edit_session/fold\",\"ace/token_iterator\",\"ace/mouse/mouse_event\"], function(require, exports, module){\"use strict\";\nvar Range = require(\"../range\").Range;\nvar FoldLine = require(\"./fold_line\").FoldLine;\nvar Fold = require(\"./fold\").Fold;\nvar TokenIterator = require(\"../token_iterator\").TokenIterator;\nvar MouseEvent = require(\"../mouse/mouse_event\").MouseEvent;\nfunction Folding() {\n this.getFoldAt = function (row, column, side) {\n var foldLine = this.getFoldLine(row);\n if (!foldLine)\n return null;\n var folds = foldLine.folds;\n for (var i = 0; i < folds.length; i++) {\n var range = folds[i].range;\n if (range.contains(row, column)) {\n if (side == 1 && range.isEnd(row, column) && !range.isEmpty()) {\n continue;\n }\n else if (side == -1 && range.isStart(row, column) && !range.isEmpty()) {\n continue;\n }\n return folds[i];\n }\n }\n };\n this.getFoldsInRange = function (range) {\n var start = range.start;\n var end = range.end;\n var foldLines = this.$foldData;\n var foundFolds = [];\n start.column += 1;\n end.column -= 1;\n for (var i = 0; i < foldLines.length; i++) {\n var cmp = foldLines[i].range.compareRange(range);\n if (cmp == 2) {\n continue;\n }\n else if (cmp == -2) {\n break;\n }\n var folds = foldLines[i].folds;\n for (var j = 0; j < folds.length; j++) {\n var fold = folds[j];\n cmp = fold.range.compareRange(range);\n if (cmp == -2) {\n break;\n }\n else if (cmp == 2) {\n continue;\n }\n else \n if (cmp == 42) {\n break;\n }\n foundFolds.push(fold);\n }\n }\n start.column -= 1;\n end.column += 1;\n return foundFolds;\n };\n this.getFoldsInRangeList = function (ranges) {\n if (Array.isArray(ranges)) {\n var folds = [];\n ranges.forEach(function (range) {\n folds = folds.concat(this.getFoldsInRange(range));\n }, this);\n }\n else {\n var folds = this.getFoldsInRange(ranges);\n }\n return folds;\n };\n this.getAllFolds = function () {\n var folds = [];\n var foldLines = this.$foldData;\n for (var i = 0; i < foldLines.length; i++)\n for (var j = 0; j < foldLines[i].folds.length; j++)\n folds.push(foldLines[i].folds[j]);\n return folds;\n };\n this.getFoldStringAt = function (row, column, trim, foldLine) {\n foldLine = foldLine || this.getFoldLine(row);\n if (!foldLine)\n return null;\n var lastFold = {\n end: { column: 0 }\n };\n var str, fold;\n for (var i = 0; i < foldLine.folds.length; i++) {\n fold = foldLine.folds[i];\n var cmp = fold.range.compareEnd(row, column);\n if (cmp == -1) {\n str = this\n .getLine(fold.start.row)\n .substring(lastFold.end.column, fold.start.column);\n break;\n }\n else if (cmp === 0) {\n return null;\n }\n lastFold = fold;\n }\n if (!str)\n str = this.getLine(fold.start.row).substring(lastFold.end.column);\n if (trim == -1)\n return str.substring(0, column - lastFold.end.column);\n else if (trim == 1)\n return str.substring(column - lastFold.end.column);\n else\n return str;\n };\n this.getFoldLine = function (docRow, startFoldLine) {\n var foldData = this.$foldData;\n var i = 0;\n if (startFoldLine)\n i = foldData.indexOf(startFoldLine);\n if (i == -1)\n i = 0;\n for (i; i < foldData.length; i++) {\n var foldLine = foldData[i];\n if (foldLine.start.row <= docRow && foldLine.end.row >= docRow) {\n return foldLine;\n }\n else if (foldLine.end.row > docRow) {\n return null;\n }\n }\n return null;\n };\n this.getNextFoldLine = function (docRow, startFoldLine) {\n var foldData = this.$foldData;\n var i = 0;\n if (startFoldLine)\n i = foldData.indexOf(startFoldLine);\n if (i == -1)\n i = 0;\n for (i; i < foldData.length; i++) {\n var foldLine = foldData[i];\n if (foldLine.end.row >= docRow) {\n return foldLine;\n }\n }\n return null;\n };\n this.getFoldedRowCount = function (first, last) {\n var foldData = this.$foldData, rowCount = last - first + 1;\n for (var i = 0; i < foldData.length; i++) {\n var foldLine = foldData[i], end = foldLine.end.row, start = foldLine.start.row;\n if (end >= last) {\n if (start < last) {\n if (start >= first)\n rowCount -= last - start;\n else\n rowCount = 0; // in one fold\n }\n break;\n }\n else if (end >= first) {\n if (start >= first) // fold inside range\n rowCount -= end - start;\n else\n rowCount -= end - first + 1;\n }\n }\n return rowCount;\n };\n this.$addFoldLine = function (foldLine) {\n this.$foldData.push(foldLine);\n this.$foldData.sort(function (a, b) {\n return a.start.row - b.start.row;\n });\n return foldLine;\n };\n this.addFold = function (placeholder, range) {\n var foldData = this.$foldData;\n var added = false;\n var fold;\n if (placeholder instanceof Fold)\n fold = placeholder;\n else {\n fold = new Fold(range, placeholder);\n fold.collapseChildren = range.collapseChildren;\n }\n this.$clipRangeToDocument(fold.range);\n var startRow = fold.start.row;\n var startColumn = fold.start.column;\n var endRow = fold.end.row;\n var endColumn = fold.end.column;\n var startFold = this.getFoldAt(startRow, startColumn, 1);\n var endFold = this.getFoldAt(endRow, endColumn, -1);\n if (startFold && endFold == startFold)\n return startFold.addSubFold(fold);\n if (startFold && !startFold.range.isStart(startRow, startColumn))\n this.removeFold(startFold);\n if (endFold && !endFold.range.isEnd(endRow, endColumn))\n this.removeFold(endFold);\n var folds = this.getFoldsInRange(fold.range);\n if (folds.length > 0) {\n this.removeFolds(folds);\n if (!fold.collapseChildren) {\n folds.forEach(function (subFold) {\n fold.addSubFold(subFold);\n });\n }\n }\n for (var i = 0; i < foldData.length; i++) {\n var foldLine = foldData[i];\n if (endRow == foldLine.start.row) {\n foldLine.addFold(fold);\n added = true;\n break;\n }\n else if (startRow == foldLine.end.row) {\n foldLine.addFold(fold);\n added = true;\n if (!fold.sameRow) {\n var foldLineNext = foldData[i + 1];\n if (foldLineNext && foldLineNext.start.row == endRow) {\n foldLine.merge(foldLineNext);\n break;\n }\n }\n break;\n }\n else if (endRow <= foldLine.start.row) {\n break;\n }\n }\n if (!added)\n foldLine = this.$addFoldLine(new FoldLine(this.$foldData, fold));\n if (this.$useWrapMode)\n this.$updateWrapData(foldLine.start.row, foldLine.start.row);\n else\n this.$updateRowLengthCache(foldLine.start.row, foldLine.start.row);\n this.$modified = true;\n this._signal(\"changeFold\", { data: fold, action: \"add\" });\n return fold;\n };\n this.addFolds = function (folds) {\n folds.forEach(function (fold) {\n this.addFold(fold);\n }, this);\n };\n this.removeFold = function (fold) {\n var foldLine = fold.foldLine;\n var startRow = foldLine.start.row;\n var endRow = foldLine.end.row;\n var foldLines = this.$foldData;\n var folds = foldLine.folds;\n if (folds.length == 1) {\n foldLines.splice(foldLines.indexOf(foldLine), 1);\n }\n else \n if (foldLine.range.isEnd(fold.end.row, fold.end.column)) {\n folds.pop();\n foldLine.end.row = folds[folds.length - 1].end.row;\n foldLine.end.column = folds[folds.length - 1].end.column;\n }\n else \n if (foldLine.range.isStart(fold.start.row, fold.start.column)) {\n folds.shift();\n foldLine.start.row = folds[0].start.row;\n foldLine.start.column = folds[0].start.column;\n }\n else \n if (fold.sameRow) {\n folds.splice(folds.indexOf(fold), 1);\n }\n else \n {\n var newFoldLine = foldLine.split(fold.start.row, fold.start.column);\n folds = newFoldLine.folds;\n folds.shift();\n newFoldLine.start.row = folds[0].start.row;\n newFoldLine.start.column = folds[0].start.column;\n }\n if (!this.$updating) {\n if (this.$useWrapMode)\n this.$updateWrapData(startRow, endRow);\n else\n this.$updateRowLengthCache(startRow, endRow);\n }\n this.$modified = true;\n this._signal(\"changeFold\", { data: fold, action: \"remove\" });\n };\n this.removeFolds = function (folds) {\n var cloneFolds = [];\n for (var i = 0; i < folds.length; i++) {\n cloneFolds.push(folds[i]);\n }\n cloneFolds.forEach(function (fold) {\n this.removeFold(fold);\n }, this);\n this.$modified = true;\n };\n this.expandFold = function (fold) {\n this.removeFold(fold);\n fold.subFolds.forEach(function (subFold) {\n fold.restoreRange(subFold);\n this.addFold(subFold);\n }, this);\n if (fold.collapseChildren > 0) {\n this.foldAll(fold.start.row + 1, fold.end.row, fold.collapseChildren - 1);\n }\n fold.subFolds = [];\n };\n this.expandFolds = function (folds) {\n folds.forEach(function (fold) {\n this.expandFold(fold);\n }, this);\n };\n this.unfold = function (location, expandInner) {\n var range, folds;\n if (location == null) {\n range = new Range(0, 0, this.getLength(), 0);\n if (expandInner == null)\n expandInner = true;\n }\n else if (typeof location == \"number\") {\n range = new Range(location, 0, location, this.getLine(location).length);\n }\n else if (\"row\" in location) {\n range = Range.fromPoints(location, location);\n }\n else if (Array.isArray(location)) {\n folds = [];\n location.forEach(function (range) {\n folds = folds.concat(this.unfold(range));\n }, this);\n return folds;\n }\n else {\n range = location;\n }\n folds = this.getFoldsInRangeList(range);\n var outermostFolds = folds;\n while (folds.length == 1\n && Range.comparePoints(folds[0].start, range.start) < 0\n && Range.comparePoints(folds[0].end, range.end) > 0) {\n this.expandFolds(folds);\n folds = this.getFoldsInRangeList(range);\n }\n if (expandInner != false) {\n this.removeFolds(folds);\n }\n else {\n this.expandFolds(folds);\n }\n if (outermostFolds.length)\n return outermostFolds;\n };\n this.isRowFolded = function (docRow, startFoldRow) {\n return !!this.getFoldLine(docRow, startFoldRow);\n };\n this.getRowFoldEnd = function (docRow, startFoldRow) {\n var foldLine = this.getFoldLine(docRow, startFoldRow);\n return foldLine ? foldLine.end.row : docRow;\n };\n this.getRowFoldStart = function (docRow, startFoldRow) {\n var foldLine = this.getFoldLine(docRow, startFoldRow);\n return foldLine ? foldLine.start.row : docRow;\n };\n this.getFoldDisplayLine = function (foldLine, endRow, endColumn, startRow, startColumn) {\n if (startRow == null)\n startRow = foldLine.start.row;\n if (startColumn == null)\n startColumn = 0;\n if (endRow == null)\n endRow = foldLine.end.row;\n if (endColumn == null)\n endColumn = this.getLine(endRow).length;\n var doc = this.doc;\n var textLine = \"\";\n foldLine.walk(function (placeholder, row, column, lastColumn) {\n if (row < startRow)\n return;\n if (row == startRow) {\n if (column < startColumn)\n return;\n lastColumn = Math.max(startColumn, lastColumn);\n }\n if (placeholder != null) {\n textLine += placeholder;\n }\n else {\n textLine += doc.getLine(row).substring(lastColumn, column);\n }\n }, endRow, endColumn);\n return textLine;\n };\n this.getDisplayLine = function (row, endColumn, startRow, startColumn) {\n var foldLine = this.getFoldLine(row);\n if (!foldLine) {\n var line;\n line = this.doc.getLine(row);\n return line.substring(startColumn || 0, endColumn || line.length);\n }\n else {\n return this.getFoldDisplayLine(foldLine, row, endColumn, startRow, startColumn);\n }\n };\n this.$cloneFoldData = function () {\n var fd = [];\n fd = this.$foldData.map(function (foldLine) {\n var folds = foldLine.folds.map(function (fold) {\n return fold.clone();\n });\n return new FoldLine(fd, folds);\n });\n return fd;\n };\n this.toggleFold = function (tryToUnfold) {\n var selection = this.selection;\n var range = selection.getRange();\n var fold;\n var bracketPos;\n if (range.isEmpty()) {\n var cursor = range.start;\n fold = this.getFoldAt(cursor.row, cursor.column);\n if (fold) {\n this.expandFold(fold);\n return;\n }\n else if (bracketPos = this.findMatchingBracket(cursor)) {\n if (range.comparePoint(bracketPos) == 1) {\n range.end = bracketPos;\n }\n else {\n range.start = bracketPos;\n range.start.column++;\n range.end.column--;\n }\n }\n else if (bracketPos = this.findMatchingBracket({ row: cursor.row, column: cursor.column + 1 })) {\n if (range.comparePoint(bracketPos) == 1)\n range.end = bracketPos;\n else\n range.start = bracketPos;\n range.start.column++;\n }\n else {\n range = this.getCommentFoldRange(cursor.row, cursor.column) || range;\n }\n }\n else {\n var folds = this.getFoldsInRange(range);\n if (tryToUnfold && folds.length) {\n this.expandFolds(folds);\n return;\n }\n else if (folds.length == 1) {\n fold = folds[0];\n }\n }\n if (!fold)\n fold = this.getFoldAt(range.start.row, range.start.column);\n if (fold && fold.range.toString() == range.toString()) {\n this.expandFold(fold);\n return;\n }\n var placeholder = \"...\";\n if (!range.isMultiLine()) {\n placeholder = this.getTextRange(range);\n if (placeholder.length < 4)\n return;\n placeholder = placeholder.trim().substring(0, 2) + \"..\";\n }\n this.addFold(placeholder, range);\n };\n this.getCommentFoldRange = function (row, column, dir) {\n var iterator = new TokenIterator(this, row, column);\n var token = iterator.getCurrentToken();\n var type = token && token.type;\n if (token && /^comment|string/.test(type)) {\n type = type.match(/comment|string/)[0];\n if (type == \"comment\")\n type += \"|doc-start|\\\\.doc\";\n var re = new RegExp(type);\n var range = new Range();\n if (dir != 1) {\n do {\n token = iterator.stepBackward();\n } while (token && re.test(token.type) && !/^comment.end/.test(token.type));\n token = iterator.stepForward();\n }\n range.start.row = iterator.getCurrentTokenRow();\n range.start.column = iterator.getCurrentTokenColumn() + (/^comment.start/.test(token.type) ? token.value.length : 2);\n iterator = new TokenIterator(this, row, column);\n if (dir != -1) {\n var lastRow = -1;\n do {\n token = iterator.stepForward();\n if (lastRow == -1) {\n var state = this.getState(iterator.$row);\n if (!re.test(state))\n lastRow = iterator.$row;\n }\n else if (iterator.$row > lastRow) {\n break;\n }\n } while (token && re.test(token.type) && !/^comment.start/.test(token.type));\n token = iterator.stepBackward();\n }\n else\n token = iterator.getCurrentToken();\n range.end.row = iterator.getCurrentTokenRow();\n range.end.column = iterator.getCurrentTokenColumn();\n if (!/^comment.end/.test(token.type)) {\n range.end.column += token.value.length - 2;\n }\n return range;\n }\n };\n this.foldAll = function (startRow, endRow, depth, test) {\n if (depth == undefined)\n depth = 100000; // JSON.stringify doesn't hanle Infinity\n var foldWidgets = this.foldWidgets;\n if (!foldWidgets)\n return; // mode doesn't support folding\n endRow = endRow || this.getLength();\n startRow = startRow || 0;\n for (var row = startRow; row < endRow; row++) {\n if (foldWidgets[row] == null)\n foldWidgets[row] = this.getFoldWidget(row);\n if (foldWidgets[row] != \"start\")\n continue;\n if (test && !test(row))\n continue;\n var range = this.getFoldWidgetRange(row);\n if (range && range.isMultiLine()\n && range.end.row <= endRow\n && range.start.row >= startRow) {\n row = range.end.row;\n range.collapseChildren = depth;\n this.addFold(\"...\", range);\n }\n }\n };\n this.foldToLevel = function (level) {\n this.foldAll();\n while (level-- > 0)\n this.unfold(null, false);\n };\n this.foldAllComments = function () {\n var session = this;\n this.foldAll(null, null, null, function (row) {\n var tokens = session.getTokens(row);\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n if (token.type == \"text\" && /^\\s+$/.test(token.value))\n continue;\n if (/comment/.test(token.type))\n return true;\n return false;\n }\n });\n };\n this.$foldStyles = {\n \"manual\": 1,\n \"markbegin\": 1,\n \"markbeginend\": 1\n };\n this.$foldStyle = \"markbegin\";\n this.setFoldStyle = function (style) {\n if (!this.$foldStyles[style])\n throw new Error(\"invalid fold style: \" + style + \"[\" + Object.keys(this.$foldStyles).join(\", \") + \"]\");\n if (this.$foldStyle == style)\n return;\n this.$foldStyle = style;\n if (style == \"manual\")\n this.unfold();\n var mode = this.$foldMode;\n this.$setFolding(null);\n this.$setFolding(mode);\n };\n this.$setFolding = function (foldMode) {\n if (this.$foldMode == foldMode)\n return;\n this.$foldMode = foldMode;\n this.off('change', this.$updateFoldWidgets);\n this.off('tokenizerUpdate', this.$tokenizerUpdateFoldWidgets);\n this._signal(\"changeAnnotation\");\n if (!foldMode || this.$foldStyle == \"manual\") {\n this.foldWidgets = null;\n return;\n }\n this.foldWidgets = [];\n this.getFoldWidget = foldMode.getFoldWidget.bind(foldMode, this, this.$foldStyle);\n this.getFoldWidgetRange = foldMode.getFoldWidgetRange.bind(foldMode, this, this.$foldStyle);\n this.$updateFoldWidgets = this.updateFoldWidgets.bind(this);\n this.$tokenizerUpdateFoldWidgets = this.tokenizerUpdateFoldWidgets.bind(this);\n this.on('change', this.$updateFoldWidgets);\n this.on('tokenizerUpdate', this.$tokenizerUpdateFoldWidgets);\n };\n this.getParentFoldRangeData = function (row, ignoreCurrent) {\n var fw = this.foldWidgets;\n if (!fw || (ignoreCurrent && fw[row]))\n return {};\n var i = row - 1, firstRange;\n while (i >= 0) {\n var c = fw[i];\n if (c == null)\n c = fw[i] = this.getFoldWidget(i);\n if (c == \"start\") {\n var range = this.getFoldWidgetRange(i);\n if (!firstRange)\n firstRange = range;\n if (range && range.end.row >= row)\n break;\n }\n i--;\n }\n return {\n range: i !== -1 && range,\n firstRange: firstRange\n };\n };\n this.onFoldWidgetClick = function (row, e) {\n if (e instanceof MouseEvent)\n e = e.domEvent;\n var options = {\n children: e.shiftKey,\n all: e.ctrlKey || e.metaKey,\n siblings: e.altKey\n };\n var range = this.$toggleFoldWidget(row, options);\n if (!range) {\n var el = (e.target || e.srcElement);\n if (el && /ace_fold-widget/.test(el.className))\n el.className += \" ace_invalid\";\n }\n };\n this.$toggleFoldWidget = function (row, options) {\n if (!this.getFoldWidget)\n return;\n var type = this.getFoldWidget(row);\n var line = this.getLine(row);\n var dir = type === \"end\" ? -1 : 1;\n var fold = this.getFoldAt(row, dir === -1 ? 0 : line.length, dir);\n if (fold) {\n if (options.children || options.all)\n this.removeFold(fold);\n else\n this.expandFold(fold);\n return fold;\n }\n var range = this.getFoldWidgetRange(row, true);\n if (range && !range.isMultiLine()) {\n fold = this.getFoldAt(range.start.row, range.start.column, 1);\n if (fold && range.isEqual(fold.range)) {\n this.removeFold(fold);\n return fold;\n }\n }\n if (options.siblings) {\n var data = this.getParentFoldRangeData(row);\n if (data.range) {\n var startRow = data.range.start.row + 1;\n var endRow = data.range.end.row;\n }\n this.foldAll(startRow, endRow, options.all ? 10000 : 0);\n }\n else if (options.children) {\n endRow = range ? range.end.row : this.getLength();\n this.foldAll(row + 1, endRow, options.all ? 10000 : 0);\n }\n else if (range) {\n if (options.all)\n range.collapseChildren = 10000;\n this.addFold(\"...\", range);\n }\n return range;\n };\n this.toggleFoldWidget = function (toggleParent) {\n var row = this.selection.getCursor().row;\n row = this.getRowFoldStart(row);\n var range = this.$toggleFoldWidget(row, {});\n if (range)\n return;\n var data = this.getParentFoldRangeData(row, true);\n range = data.range || data.firstRange;\n if (range) {\n row = range.start.row;\n var fold = this.getFoldAt(row, this.getLine(row).length, 1);\n if (fold) {\n this.removeFold(fold);\n }\n else {\n this.addFold(\"...\", range);\n }\n }\n };\n this.updateFoldWidgets = function (delta) {\n var firstRow = delta.start.row;\n var len = delta.end.row - firstRow;\n if (len === 0) {\n this.foldWidgets[firstRow] = null;\n }\n else if (delta.action == 'remove') {\n this.foldWidgets.splice(firstRow, len + 1, null);\n }\n else {\n var args = Array(len + 1);\n args.unshift(firstRow, 1);\n this.foldWidgets.splice.apply(this.foldWidgets, args);\n }\n };\n this.tokenizerUpdateFoldWidgets = function (e) {\n var rows = e.data;\n if (rows.first != rows.last) {\n if (this.foldWidgets.length > rows.first)\n this.foldWidgets.splice(rows.first, this.foldWidgets.length);\n }\n };\n}\nexports.Folding = Folding;\n\n});\n\nace.define(\"ace/edit_session/bracket_match\",[\"require\",\"exports\",\"module\",\"ace/token_iterator\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar TokenIterator = require(\"../token_iterator\").TokenIterator;\nvar Range = require(\"../range\").Range;\nfunction BracketMatch() {\n this.findMatchingBracket = function (position, chr) {\n if (position.column == 0)\n return null;\n var charBeforeCursor = chr || this.getLine(position.row).charAt(position.column - 1);\n if (charBeforeCursor == \"\")\n return null;\n var match = charBeforeCursor.match(/([\\(\\[\\{])|([\\)\\]\\}])/);\n if (!match)\n return null;\n if (match[1])\n return this.$findClosingBracket(match[1], position);\n else\n return this.$findOpeningBracket(match[2], position);\n };\n this.getBracketRange = function (pos) {\n var line = this.getLine(pos.row);\n var before = true, range;\n var chr = line.charAt(pos.column - 1);\n var match = chr && chr.match(/([\\(\\[\\{])|([\\)\\]\\}])/);\n if (!match) {\n chr = line.charAt(pos.column);\n pos = { row: pos.row, column: pos.column + 1 };\n match = chr && chr.match(/([\\(\\[\\{])|([\\)\\]\\}])/);\n before = false;\n }\n if (!match)\n return null;\n if (match[1]) {\n var bracketPos = this.$findClosingBracket(match[1], pos);\n if (!bracketPos)\n return null;\n range = Range.fromPoints(pos, bracketPos);\n if (!before) {\n range.end.column++;\n range.start.column--;\n }\n range.cursor = range.end;\n }\n else {\n var bracketPos = this.$findOpeningBracket(match[2], pos);\n if (!bracketPos)\n return null;\n range = Range.fromPoints(bracketPos, pos);\n if (!before) {\n range.start.column++;\n range.end.column--;\n }\n range.cursor = range.start;\n }\n return range;\n };\n this.getMatchingBracketRanges = function (pos, isBackwards) {\n var line = this.getLine(pos.row);\n var bracketsRegExp = /([\\(\\[\\{])|([\\)\\]\\}])/;\n var chr = !isBackwards && line.charAt(pos.column - 1);\n var match = chr && chr.match(bracketsRegExp);\n if (!match) {\n chr = (isBackwards === undefined || isBackwards) && line.charAt(pos.column);\n pos = {\n row: pos.row,\n column: pos.column + 1\n };\n match = chr && chr.match(bracketsRegExp);\n }\n if (!match)\n return null;\n var startRange = new Range(pos.row, pos.column - 1, pos.row, pos.column);\n var bracketPos = match[1] ? this.$findClosingBracket(match[1], pos)\n : this.$findOpeningBracket(match[2], pos);\n if (!bracketPos)\n return [startRange];\n var endRange = new Range(bracketPos.row, bracketPos.column, bracketPos.row, bracketPos.column + 1);\n return [startRange, endRange];\n };\n this.$brackets = {\n \")\": \"(\",\n \"(\": \")\",\n \"]\": \"[\",\n \"[\": \"]\",\n \"{\": \"}\",\n \"}\": \"{\",\n \"<\": \">\",\n \">\": \"<\"\n };\n this.$findOpeningBracket = function (bracket, position, typeRe) {\n var openBracket = this.$brackets[bracket];\n var depth = 1;\n var iterator = new TokenIterator(this, position.row, position.column);\n var token = iterator.getCurrentToken();\n if (!token)\n token = iterator.stepForward();\n if (!token)\n return;\n if (!typeRe) {\n typeRe = new RegExp(\"(\\\\.?\" +\n token.type.replace(\".\", \"\\\\.\").replace(\"rparen\", \".paren\")\n .replace(/\\b(?:end)\\b/, \"(?:start|begin|end)\")\n .replace(/-close\\b/, \"-(close|open)\")\n + \")+\");\n }\n var valueIndex = position.column - iterator.getCurrentTokenColumn() - 2;\n var value = token.value;\n while (true) {\n while (valueIndex >= 0) {\n var chr = value.charAt(valueIndex);\n if (chr == openBracket) {\n depth -= 1;\n if (depth == 0) {\n return { row: iterator.getCurrentTokenRow(),\n column: valueIndex + iterator.getCurrentTokenColumn() };\n }\n }\n else if (chr == bracket) {\n depth += 1;\n }\n valueIndex -= 1;\n }\n do {\n token = iterator.stepBackward();\n } while (token && !typeRe.test(token.type));\n if (token == null)\n break;\n value = token.value;\n valueIndex = value.length - 1;\n }\n return null;\n };\n this.$findClosingBracket = function (bracket, position, typeRe) {\n var closingBracket = this.$brackets[bracket];\n var depth = 1;\n var iterator = new TokenIterator(this, position.row, position.column);\n var token = iterator.getCurrentToken();\n if (!token)\n token = iterator.stepForward();\n if (!token)\n return;\n if (!typeRe) {\n typeRe = new RegExp(\"(\\\\.?\" +\n token.type.replace(\".\", \"\\\\.\").replace(\"lparen\", \".paren\")\n .replace(/\\b(?:start|begin)\\b/, \"(?:start|begin|end)\")\n .replace(/-open\\b/, \"-(close|open)\")\n + \")+\");\n }\n var valueIndex = position.column - iterator.getCurrentTokenColumn();\n while (true) {\n var value = token.value;\n var valueLength = value.length;\n while (valueIndex < valueLength) {\n var chr = value.charAt(valueIndex);\n if (chr == closingBracket) {\n depth -= 1;\n if (depth == 0) {\n return { row: iterator.getCurrentTokenRow(),\n column: valueIndex + iterator.getCurrentTokenColumn() };\n }\n }\n else if (chr == bracket) {\n depth += 1;\n }\n valueIndex += 1;\n }\n do {\n token = iterator.stepForward();\n } while (token && !typeRe.test(token.type));\n if (token == null)\n break;\n valueIndex = 0;\n }\n return null;\n };\n this.getMatchingTags = function (pos) {\n var iterator = new TokenIterator(this, pos.row, pos.column);\n var token = this.$findTagName(iterator);\n if (!token)\n return;\n var prevToken = iterator.stepBackward();\n if (prevToken.value === '<') {\n return this.$findClosingTag(iterator, token);\n }\n else {\n return this.$findOpeningTag(iterator, token);\n }\n };\n this.$findTagName = function (iterator) {\n var token = iterator.getCurrentToken();\n var found = false;\n var backward = false;\n if (token && token.type.indexOf('tag-name') === -1) {\n do {\n if (backward)\n token = iterator.stepBackward();\n else\n token = iterator.stepForward();\n if (token) {\n if (token.value === \"/>\") {\n backward = true;\n }\n else if (token.type.indexOf('tag-name') !== -1) {\n found = true;\n }\n }\n } while (token && !found);\n }\n return token;\n };\n this.$findClosingTag = function (iterator, token) {\n var prevToken;\n var currentTag = token.value;\n var tag = token.value;\n var depth = 0;\n var openTagStart = new Range(iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn(), iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() + 1);\n token = iterator.stepForward();\n var openTagName = new Range(iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn(), iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() + token.value.length);\n var foundOpenTagEnd = false;\n do {\n prevToken = token;\n token = iterator.stepForward();\n if (token) {\n if (token.value === '>' && !foundOpenTagEnd) {\n var openTagEnd = new Range(iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn(), iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() + 1); //Range for `>`\n foundOpenTagEnd = true;\n }\n if (token.type.indexOf('tag-name') !== -1) {\n currentTag = token.value;\n if (tag === currentTag) {\n if (prevToken.value === '<') {\n depth++;\n }\n else if (prevToken.value === '') {\n var closeTagEnd = new Range(iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn(), iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() + 1); //Range for >\n }\n else {\n return;\n }\n }\n }\n }\n }\n else if (tag === currentTag && token.value === '/>') { // self-closing tag\n depth--;\n if (depth < 0) { //found self-closing tag end\n var closeTagStart = new Range(iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn(), iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() + 2);\n var closeTagName = closeTagStart;\n var closeTagEnd = closeTagName;\n var openTagEnd = new Range(openTagName.end.row, openTagName.end.column, openTagName.end.row, openTagName.end.column + 1);\n }\n }\n }\n } while (token && depth >= 0);\n if (openTagStart && openTagEnd && closeTagStart && closeTagEnd && openTagName && closeTagName) {\n return {\n openTag: new Range(openTagStart.start.row, openTagStart.start.column, openTagEnd.end.row, openTagEnd.end.column),\n closeTag: new Range(closeTagStart.start.row, closeTagStart.start.column, closeTagEnd.end.row, closeTagEnd.end.column),\n openTagName: openTagName,\n closeTagName: closeTagName\n };\n }\n };\n this.$findOpeningTag = function (iterator, token) {\n var prevToken = iterator.getCurrentToken();\n var tag = token.value;\n var depth = 0;\n var startRow = iterator.getCurrentTokenRow();\n var startColumn = iterator.getCurrentTokenColumn();\n var endColumn = startColumn + 2;\n var closeTagStart = new Range(startRow, startColumn, startRow, endColumn); //Range for \")\n return;\n var closeTagEnd = new Range(iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn(), iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() + 1); //Range for >\n iterator.stepBackward();\n iterator.stepBackward();\n do {\n token = prevToken;\n startRow = iterator.getCurrentTokenRow();\n startColumn = iterator.getCurrentTokenColumn();\n endColumn = startColumn + token.value.length;\n prevToken = iterator.stepBackward();\n if (token) {\n if (token.type.indexOf('tag-name') !== -1) {\n if (tag === token.value) {\n if (prevToken.value === '<') {\n depth++;\n if (depth > 0) { //found opening tag\n var openTagName = new Range(startRow, startColumn, startRow, endColumn);\n var openTagStart = new Range(iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn(), iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() + 1); //Range for <\n do {\n token = iterator.stepForward();\n } while (token && token.value !== '>');\n var openTagEnd = new Range(iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn(), iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() + 1); //Range for >\n }\n }\n else if (prevToken.value === '') { // self-closing tag\n var stepCount = 0;\n var tmpToken = prevToken;\n while (tmpToken) {\n if (tmpToken.type.indexOf('tag-name') !== -1 && tmpToken.value === tag) {\n depth--;\n break;\n }\n else if (tmpToken.value === '<') {\n break;\n }\n tmpToken = iterator.stepBackward();\n stepCount++;\n }\n for (var i = 0; i < stepCount; i++) {\n iterator.stepForward();\n }\n }\n }\n } while (prevToken && depth <= 0);\n if (openTagStart && openTagEnd && closeTagStart && closeTagEnd && openTagName && closeTagName) {\n return {\n openTag: new Range(openTagStart.start.row, openTagStart.start.column, openTagEnd.end.row, openTagEnd.end.column),\n closeTag: new Range(closeTagStart.start.row, closeTagStart.start.column, closeTagEnd.end.row, closeTagEnd.end.column),\n openTagName: openTagName,\n closeTagName: closeTagName\n };\n }\n };\n}\nexports.BracketMatch = BracketMatch;\n\n});\n\nace.define(\"ace/edit_session\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/bidihandler\",\"ace/config\",\"ace/lib/event_emitter\",\"ace/selection\",\"ace/mode/text\",\"ace/range\",\"ace/document\",\"ace/background_tokenizer\",\"ace/search_highlight\",\"ace/undomanager\",\"ace/edit_session/folding\",\"ace/edit_session/bracket_match\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"./lib/oop\");\nvar lang = require(\"./lib/lang\");\nvar BidiHandler = require(\"./bidihandler\").BidiHandler;\nvar config = require(\"./config\");\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar Selection = require(\"./selection\").Selection;\nvar TextMode = require(\"./mode/text\").Mode;\nvar Range = require(\"./range\").Range;\nvar Document = require(\"./document\").Document;\nvar BackgroundTokenizer = require(\"./background_tokenizer\").BackgroundTokenizer;\nvar SearchHighlight = require(\"./search_highlight\").SearchHighlight;\nvar UndoManager = require(\"./undomanager\").UndoManager;\nvar EditSession = /** @class */ (function () {\n function EditSession(text, mode) {\n this.$breakpoints = [];\n this.$decorations = [];\n this.$frontMarkers = {};\n this.$backMarkers = {};\n this.$markerId = 1;\n this.$undoSelect = true;\n this.$foldData = [];\n this.id = \"session\" + (++EditSession.$uid);\n this.$foldData.toString = function () {\n return this.join(\"\\n\");\n };\n this.bgTokenizer = new BackgroundTokenizer((new TextMode()).getTokenizer(), this);\n var _self = this;\n this.bgTokenizer.on(\"update\", function (e) {\n _self._signal(\"tokenizerUpdate\", e);\n });\n this.on(\"changeFold\", this.onChangeFold.bind(this));\n this.$onChange = this.onChange.bind(this);\n if (typeof text != \"object\" || !text.getLine)\n text = new Document(text);\n this.setDocument(text);\n this.selection = new Selection(this);\n this.$bidiHandler = new BidiHandler(this);\n config.resetOptions(this);\n this.setMode(mode);\n config._signal(\"session\", this);\n this.destroyed = false;\n }\n EditSession.prototype.setDocument = function (doc) {\n if (this.doc)\n this.doc.off(\"change\", this.$onChange);\n this.doc = doc;\n doc.on(\"change\", this.$onChange, true);\n this.bgTokenizer.setDocument(this.getDocument());\n this.resetCaches();\n };\n EditSession.prototype.getDocument = function () {\n return this.doc;\n };\n EditSession.prototype.$resetRowCache = function (docRow) {\n if (!docRow) {\n this.$docRowCache = [];\n this.$screenRowCache = [];\n return;\n }\n var l = this.$docRowCache.length;\n var i = this.$getRowCacheIndex(this.$docRowCache, docRow) + 1;\n if (l > i) {\n this.$docRowCache.splice(i, l);\n this.$screenRowCache.splice(i, l);\n }\n };\n EditSession.prototype.$getRowCacheIndex = function (cacheArray, val) {\n var low = 0;\n var hi = cacheArray.length - 1;\n while (low <= hi) {\n var mid = (low + hi) >> 1;\n var c = cacheArray[mid];\n if (val > c)\n low = mid + 1;\n else if (val < c)\n hi = mid - 1;\n else\n return mid;\n }\n return low - 1;\n };\n EditSession.prototype.resetCaches = function () {\n this.$modified = true;\n this.$wrapData = [];\n this.$rowLengthCache = [];\n this.$resetRowCache(0);\n if (!this.destroyed)\n this.bgTokenizer.start(0);\n };\n EditSession.prototype.onChangeFold = function (e) {\n var fold = e.data;\n this.$resetRowCache(fold.start.row);\n };\n EditSession.prototype.onChange = function (delta) {\n this.$modified = true;\n this.$bidiHandler.onChange(delta);\n this.$resetRowCache(delta.start.row);\n var removedFolds = this.$updateInternalDataOnChange(delta);\n if (!this.$fromUndo && this.$undoManager) {\n if (removedFolds && removedFolds.length) {\n this.$undoManager.add({\n action: \"removeFolds\",\n folds: removedFolds\n }, this.mergeUndoDeltas);\n this.mergeUndoDeltas = true;\n }\n this.$undoManager.add(delta, this.mergeUndoDeltas);\n this.mergeUndoDeltas = true;\n this.$informUndoManager.schedule();\n }\n this.bgTokenizer.$updateOnChange(delta);\n this._signal(\"change\", delta);\n };\n EditSession.prototype.setValue = function (text) {\n this.doc.setValue(text);\n this.selection.moveTo(0, 0);\n this.$resetRowCache(0);\n this.setUndoManager(this.$undoManager);\n this.getUndoManager().reset();\n };\n EditSession.fromJSON = function (session) {\n session = JSON.parse(session);\n var undoManager = new UndoManager();\n undoManager.$undoStack = session.history.undo;\n undoManager.$redoStack = session.history.redo;\n undoManager.mark = session.history.mark;\n undoManager.$rev = session.history.rev;\n var editSession = new EditSession(session.value);\n session.folds.forEach(function (fold) {\n editSession.addFold(\"...\", Range.fromPoints(fold.start, fold.end));\n });\n editSession.setAnnotations(session.annotations);\n editSession.setBreakpoints(session.breakpoints);\n editSession.setMode(session.mode);\n editSession.setScrollLeft(session.scrollLeft);\n editSession.setScrollTop(session.scrollTop);\n editSession.setUndoManager(undoManager);\n editSession.selection.fromJSON(session.selection);\n return editSession;\n };\n EditSession.prototype.toJSON = function () {\n return {\n annotations: this.$annotations,\n breakpoints: this.$breakpoints,\n folds: this.getAllFolds().map(function (fold) {\n return fold.range;\n }),\n history: this.getUndoManager(),\n mode: this.$mode.$id,\n scrollLeft: this.$scrollLeft,\n scrollTop: this.$scrollTop,\n selection: this.selection.toJSON(),\n value: this.doc.getValue()\n };\n };\n EditSession.prototype.toString = function () {\n return this.doc.getValue();\n };\n EditSession.prototype.getSelection = function () {\n return this.selection;\n };\n EditSession.prototype.getState = function (row) {\n return this.bgTokenizer.getState(row);\n };\n EditSession.prototype.getTokens = function (row) {\n return this.bgTokenizer.getTokens(row);\n };\n EditSession.prototype.getTokenAt = function (row, column) {\n var tokens = this.bgTokenizer.getTokens(row);\n var token, c = 0;\n if (column == null) {\n var i = tokens.length - 1;\n c = this.getLine(row).length;\n }\n else {\n for (var i = 0; i < tokens.length; i++) {\n c += tokens[i].value.length;\n if (c >= column)\n break;\n }\n }\n token = tokens[i];\n if (!token)\n return null;\n token.index = i;\n token.start = c - token.value.length;\n return token;\n };\n EditSession.prototype.setUndoManager = function (undoManager) {\n this.$undoManager = undoManager;\n if (this.$informUndoManager)\n this.$informUndoManager.cancel();\n if (undoManager) {\n var self = this;\n undoManager.addSession(this);\n this.$syncInformUndoManager = function () {\n self.$informUndoManager.cancel();\n self.mergeUndoDeltas = false;\n };\n this.$informUndoManager = lang.delayedCall(this.$syncInformUndoManager);\n }\n else {\n this.$syncInformUndoManager = function () { };\n }\n };\n EditSession.prototype.markUndoGroup = function () {\n if (this.$syncInformUndoManager)\n this.$syncInformUndoManager();\n };\n EditSession.prototype.getUndoManager = function () {\n return this.$undoManager || this.$defaultUndoManager;\n };\n EditSession.prototype.getTabString = function () {\n if (this.getUseSoftTabs()) {\n return lang.stringRepeat(\" \", this.getTabSize());\n }\n else {\n return \"\\t\";\n }\n };\n EditSession.prototype.setUseSoftTabs = function (val) {\n this.setOption(\"useSoftTabs\", val);\n };\n EditSession.prototype.getUseSoftTabs = function () {\n return this.$useSoftTabs && !this.$mode.$indentWithTabs;\n };\n EditSession.prototype.setTabSize = function (tabSize) {\n this.setOption(\"tabSize\", tabSize);\n };\n EditSession.prototype.getTabSize = function () {\n return this.$tabSize;\n };\n EditSession.prototype.isTabStop = function (position) {\n return this.$useSoftTabs && (position.column % this.$tabSize === 0);\n };\n EditSession.prototype.setNavigateWithinSoftTabs = function (navigateWithinSoftTabs) {\n this.setOption(\"navigateWithinSoftTabs\", navigateWithinSoftTabs);\n };\n EditSession.prototype.getNavigateWithinSoftTabs = function () {\n return this.$navigateWithinSoftTabs;\n };\n EditSession.prototype.setOverwrite = function (overwrite) {\n this.setOption(\"overwrite\", overwrite);\n };\n EditSession.prototype.getOverwrite = function () {\n return this.$overwrite;\n };\n EditSession.prototype.toggleOverwrite = function () {\n this.setOverwrite(!this.$overwrite);\n };\n EditSession.prototype.addGutterDecoration = function (row, className) {\n if (!this.$decorations[row])\n this.$decorations[row] = \"\";\n this.$decorations[row] += \" \" + className;\n this._signal(\"changeBreakpoint\", {});\n };\n EditSession.prototype.removeGutterDecoration = function (row, className) {\n this.$decorations[row] = (this.$decorations[row] || \"\").replace(\" \" + className, \"\");\n this._signal(\"changeBreakpoint\", {});\n };\n EditSession.prototype.getBreakpoints = function () {\n return this.$breakpoints;\n };\n EditSession.prototype.setBreakpoints = function (rows) {\n this.$breakpoints = [];\n for (var i = 0; i < rows.length; i++) {\n this.$breakpoints[rows[i]] = \"ace_breakpoint\";\n }\n this._signal(\"changeBreakpoint\", {});\n };\n EditSession.prototype.clearBreakpoints = function () {\n this.$breakpoints = [];\n this._signal(\"changeBreakpoint\", {});\n };\n EditSession.prototype.setBreakpoint = function (row, className) {\n if (className === undefined)\n className = \"ace_breakpoint\";\n if (className)\n this.$breakpoints[row] = className;\n else\n delete this.$breakpoints[row];\n this._signal(\"changeBreakpoint\", {});\n };\n EditSession.prototype.clearBreakpoint = function (row) {\n delete this.$breakpoints[row];\n this._signal(\"changeBreakpoint\", {});\n };\n EditSession.prototype.addMarker = function (range, clazz, type, inFront) {\n var id = this.$markerId++;\n var marker = {\n range: range,\n type: type || \"line\",\n renderer: typeof type == \"function\" ? type : null,\n clazz: clazz,\n inFront: !!inFront,\n id: id\n };\n if (inFront) {\n this.$frontMarkers[id] = marker;\n this._signal(\"changeFrontMarker\");\n }\n else {\n this.$backMarkers[id] = marker;\n this._signal(\"changeBackMarker\");\n }\n return id;\n };\n EditSession.prototype.addDynamicMarker = function (marker, inFront) {\n if (!marker.update)\n return;\n var id = this.$markerId++;\n marker.id = id;\n marker.inFront = !!inFront;\n if (inFront) {\n this.$frontMarkers[id] = marker;\n this._signal(\"changeFrontMarker\");\n }\n else {\n this.$backMarkers[id] = marker;\n this._signal(\"changeBackMarker\");\n }\n return marker;\n };\n EditSession.prototype.removeMarker = function (markerId) {\n var marker = this.$frontMarkers[markerId] || this.$backMarkers[markerId];\n if (!marker)\n return;\n var markers = marker.inFront ? this.$frontMarkers : this.$backMarkers;\n delete (markers[markerId]);\n this._signal(marker.inFront ? \"changeFrontMarker\" : \"changeBackMarker\");\n };\n EditSession.prototype.getMarkers = function (inFront) {\n return inFront ? this.$frontMarkers : this.$backMarkers;\n };\n EditSession.prototype.highlight = function (re) {\n if (!this.$searchHighlight) {\n var highlight = new SearchHighlight(null, \"ace_selected-word\", \"text\");\n this.$searchHighlight = this.addDynamicMarker(highlight);\n }\n this.$searchHighlight.setRegexp(re);\n };\n EditSession.prototype.highlightLines = function (startRow, endRow, clazz, inFront) {\n if (typeof endRow != \"number\") {\n clazz = endRow;\n endRow = startRow;\n }\n if (!clazz)\n clazz = \"ace_step\";\n var range = new Range(startRow, 0, endRow, Infinity);\n range.id = this.addMarker(range, clazz, \"fullLine\", inFront);\n return range;\n };\n EditSession.prototype.setAnnotations = function (annotations) {\n this.$annotations = annotations;\n this._signal(\"changeAnnotation\", {});\n };\n EditSession.prototype.getAnnotations = function () {\n return this.$annotations || [];\n };\n EditSession.prototype.clearAnnotations = function () {\n this.setAnnotations([]);\n };\n EditSession.prototype.$detectNewLine = function (text) {\n var match = text.match(/^.*?(\\r?\\n)/m);\n if (match) {\n this.$autoNewLine = match[1];\n }\n else {\n this.$autoNewLine = \"\\n\";\n }\n };\n EditSession.prototype.getWordRange = function (row, column) {\n var line = this.getLine(row);\n var inToken = false;\n if (column > 0)\n inToken = !!line.charAt(column - 1).match(this.tokenRe);\n if (!inToken)\n inToken = !!line.charAt(column).match(this.tokenRe);\n if (inToken)\n var re = this.tokenRe;\n else if (/^\\s+$/.test(line.slice(column - 1, column + 1)))\n var re = /\\s/;\n else\n var re = this.nonTokenRe;\n var start = column;\n if (start > 0) {\n do {\n start--;\n } while (start >= 0 && line.charAt(start).match(re));\n start++;\n }\n var end = column;\n while (end < line.length && line.charAt(end).match(re)) {\n end++;\n }\n return new Range(row, start, row, end);\n };\n EditSession.prototype.getAWordRange = function (row, column) {\n var wordRange = this.getWordRange(row, column);\n var line = this.getLine(wordRange.end.row);\n while (line.charAt(wordRange.end.column).match(/[ \\t]/)) {\n wordRange.end.column += 1;\n }\n return wordRange;\n };\n EditSession.prototype.setNewLineMode = function (newLineMode) {\n this.doc.setNewLineMode(newLineMode);\n };\n EditSession.prototype.getNewLineMode = function () {\n return this.doc.getNewLineMode();\n };\n EditSession.prototype.setUseWorker = function (useWorker) { this.setOption(\"useWorker\", useWorker); };\n EditSession.prototype.getUseWorker = function () { return this.$useWorker; };\n EditSession.prototype.onReloadTokenizer = function (e) {\n var rows = e.data;\n this.bgTokenizer.start(rows.first);\n this._signal(\"tokenizerUpdate\", e);\n };\n EditSession.prototype.setMode = function (mode, cb) {\n if (mode && typeof mode === \"object\") {\n if (mode.getTokenizer)\n return this.$onChangeMode(mode);\n var options = mode;\n var path = options.path;\n }\n else {\n path = mode || \"ace/mode/text\";\n }\n if (!this.$modes[\"ace/mode/text\"])\n this.$modes[\"ace/mode/text\"] = new TextMode();\n if (this.$modes[path] && !options) {\n this.$onChangeMode(this.$modes[path]);\n cb && cb();\n return;\n }\n this.$modeId = path;\n config.loadModule([\"mode\", path], function (m) {\n if (this.$modeId !== path)\n return cb && cb();\n if (this.$modes[path] && !options) {\n this.$onChangeMode(this.$modes[path]);\n }\n else if (m && m.Mode) {\n m = new m.Mode(options);\n if (!options) {\n this.$modes[path] = m;\n m.$id = path;\n }\n this.$onChangeMode(m);\n }\n cb && cb();\n }.bind(this));\n if (!this.$mode)\n this.$onChangeMode(this.$modes[\"ace/mode/text\"], true);\n };\n EditSession.prototype.$onChangeMode = function (mode, $isPlaceholder) {\n if (!$isPlaceholder)\n this.$modeId = mode.$id;\n if (this.$mode === mode)\n return;\n var oldMode = this.$mode;\n this.$mode = mode;\n this.$stopWorker();\n if (this.$useWorker)\n this.$startWorker();\n var tokenizer = mode.getTokenizer();\n if (tokenizer.on !== undefined) {\n var onReloadTokenizer = this.onReloadTokenizer.bind(this);\n tokenizer.on(\"update\", onReloadTokenizer);\n }\n this.bgTokenizer.setTokenizer(tokenizer);\n this.bgTokenizer.setDocument(this.getDocument());\n this.tokenRe = mode.tokenRe;\n this.nonTokenRe = mode.nonTokenRe;\n if (!$isPlaceholder) {\n if (mode.attachToSession)\n mode.attachToSession(this);\n this.$options.wrapMethod.set.call(this, this.$wrapMethod);\n this.$setFolding(mode.foldingRules);\n this.bgTokenizer.start(0);\n this._emit(\"changeMode\", { oldMode: oldMode, mode: mode });\n }\n };\n EditSession.prototype.$stopWorker = function () {\n if (this.$worker) {\n this.$worker.terminate();\n this.$worker = null;\n }\n };\n EditSession.prototype.$startWorker = function () {\n try {\n this.$worker = this.$mode.createWorker(this);\n }\n catch (e) {\n config.warn(\"Could not load worker\", e);\n this.$worker = null;\n }\n };\n EditSession.prototype.getMode = function () {\n return this.$mode;\n };\n EditSession.prototype.setScrollTop = function (scrollTop) {\n if (this.$scrollTop === scrollTop || isNaN(scrollTop))\n return;\n this.$scrollTop = scrollTop;\n this._signal(\"changeScrollTop\", scrollTop);\n };\n EditSession.prototype.getScrollTop = function () {\n return this.$scrollTop;\n };\n EditSession.prototype.setScrollLeft = function (scrollLeft) {\n if (this.$scrollLeft === scrollLeft || isNaN(scrollLeft))\n return;\n this.$scrollLeft = scrollLeft;\n this._signal(\"changeScrollLeft\", scrollLeft);\n };\n EditSession.prototype.getScrollLeft = function () {\n return this.$scrollLeft;\n };\n EditSession.prototype.getScreenWidth = function () {\n this.$computeWidth();\n if (this.lineWidgets)\n return Math.max(this.getLineWidgetMaxWidth(), this.screenWidth);\n return this.screenWidth;\n };\n EditSession.prototype.getLineWidgetMaxWidth = function () {\n if (this.lineWidgetsWidth != null)\n return this.lineWidgetsWidth;\n var width = 0;\n this.lineWidgets.forEach(function (w) {\n if (w && w.screenWidth > width)\n width = w.screenWidth;\n });\n return this.lineWidgetWidth = width;\n };\n EditSession.prototype.$computeWidth = function (force) {\n if (this.$modified || force) {\n this.$modified = false;\n if (this.$useWrapMode)\n return this.screenWidth = this.$wrapLimit;\n var lines = this.doc.getAllLines();\n var cache = this.$rowLengthCache;\n var longestScreenLine = 0;\n var foldIndex = 0;\n var foldLine = this.$foldData[foldIndex];\n var foldStart = foldLine ? foldLine.start.row : Infinity;\n var len = lines.length;\n for (var i = 0; i < len; i++) {\n if (i > foldStart) {\n i = foldLine.end.row + 1;\n if (i >= len)\n break;\n foldLine = this.$foldData[foldIndex++];\n foldStart = foldLine ? foldLine.start.row : Infinity;\n }\n if (cache[i] == null)\n cache[i] = this.$getStringScreenWidth(lines[i])[0];\n if (cache[i] > longestScreenLine)\n longestScreenLine = cache[i];\n }\n this.screenWidth = longestScreenLine;\n }\n };\n EditSession.prototype.getLine = function (row) {\n return this.doc.getLine(row);\n };\n EditSession.prototype.getLines = function (firstRow, lastRow) {\n return this.doc.getLines(firstRow, lastRow);\n };\n EditSession.prototype.getLength = function () {\n return this.doc.getLength();\n };\n EditSession.prototype.getTextRange = function (range) {\n return this.doc.getTextRange(range || this.selection.getRange());\n };\n EditSession.prototype.insert = function (position, text) {\n return this.doc.insert(position, text);\n };\n EditSession.prototype.remove = function (range) {\n return this.doc.remove(range);\n };\n EditSession.prototype.removeFullLines = function (firstRow, lastRow) {\n return this.doc.removeFullLines(firstRow, lastRow);\n };\n EditSession.prototype.undoChanges = function (deltas, dontSelect) {\n if (!deltas.length)\n return;\n this.$fromUndo = true;\n for (var i = deltas.length - 1; i != -1; i--) {\n var delta = deltas[i];\n if (delta.action == \"insert\" || delta.action == \"remove\") {\n this.doc.revertDelta(delta);\n }\n else if (delta.folds) {\n this.addFolds(delta.folds);\n }\n }\n if (!dontSelect && this.$undoSelect) {\n if (deltas.selectionBefore)\n this.selection.fromJSON(deltas.selectionBefore);\n else\n this.selection.setRange(this.$getUndoSelection(deltas, true));\n }\n this.$fromUndo = false;\n };\n EditSession.prototype.redoChanges = function (deltas, dontSelect) {\n if (!deltas.length)\n return;\n this.$fromUndo = true;\n for (var i = 0; i < deltas.length; i++) {\n var delta = deltas[i];\n if (delta.action == \"insert\" || delta.action == \"remove\") {\n this.doc.$safeApplyDelta(delta);\n }\n }\n if (!dontSelect && this.$undoSelect) {\n if (deltas.selectionAfter)\n this.selection.fromJSON(deltas.selectionAfter);\n else\n this.selection.setRange(this.$getUndoSelection(deltas, false));\n }\n this.$fromUndo = false;\n };\n EditSession.prototype.setUndoSelect = function (enable) {\n this.$undoSelect = enable;\n };\n EditSession.prototype.$getUndoSelection = function (deltas, isUndo) {\n function isInsert(delta) {\n return isUndo ? delta.action !== \"insert\" : delta.action === \"insert\";\n }\n var range, point;\n for (var i = 0; i < deltas.length; i++) {\n var delta = deltas[i];\n if (!delta.start)\n continue; // skip folds\n if (!range) {\n if (isInsert(delta)) {\n range = Range.fromPoints(delta.start, delta.end);\n }\n else {\n range = Range.fromPoints(delta.start, delta.start);\n }\n continue;\n }\n if (isInsert(delta)) {\n point = delta.start;\n if (range.compare(point.row, point.column) == -1) {\n range.setStart(point);\n }\n point = delta.end;\n if (range.compare(point.row, point.column) == 1) {\n range.setEnd(point);\n }\n }\n else {\n point = delta.start;\n if (range.compare(point.row, point.column) == -1) {\n range = Range.fromPoints(delta.start, delta.start);\n }\n }\n }\n return range;\n };\n EditSession.prototype.replace = function (range, text) {\n return this.doc.replace(range, text);\n };\n EditSession.prototype.moveText = function (fromRange, toPosition, copy) {\n var text = this.getTextRange(fromRange);\n var folds = this.getFoldsInRange(fromRange);\n var toRange = Range.fromPoints(toPosition, toPosition);\n if (!copy) {\n this.remove(fromRange);\n var rowDiff = fromRange.start.row - fromRange.end.row;\n var collDiff = rowDiff ? -fromRange.end.column : fromRange.start.column - fromRange.end.column;\n if (collDiff) {\n if (toRange.start.row == fromRange.end.row && toRange.start.column > fromRange.end.column)\n toRange.start.column += collDiff;\n if (toRange.end.row == fromRange.end.row && toRange.end.column > fromRange.end.column)\n toRange.end.column += collDiff;\n }\n if (rowDiff && toRange.start.row >= fromRange.end.row) {\n toRange.start.row += rowDiff;\n toRange.end.row += rowDiff;\n }\n }\n toRange.end = this.insert(toRange.start, text);\n if (folds.length) {\n var oldStart = fromRange.start;\n var newStart = toRange.start;\n var rowDiff = newStart.row - oldStart.row;\n var collDiff = newStart.column - oldStart.column;\n this.addFolds(folds.map(function (x) {\n x = x.clone();\n if (x.start.row == oldStart.row)\n x.start.column += collDiff;\n if (x.end.row == oldStart.row)\n x.end.column += collDiff;\n x.start.row += rowDiff;\n x.end.row += rowDiff;\n return x;\n }));\n }\n return toRange;\n };\n EditSession.prototype.indentRows = function (startRow, endRow, indentString) {\n indentString = indentString.replace(/\\t/g, this.getTabString());\n for (var row = startRow; row <= endRow; row++)\n this.doc.insertInLine({ row: row, column: 0 }, indentString);\n };\n EditSession.prototype.outdentRows = function (range) {\n var rowRange = range.collapseRows();\n var deleteRange = new Range(0, 0, 0, 0);\n var size = this.getTabSize();\n for (var i = rowRange.start.row; i <= rowRange.end.row; ++i) {\n var line = this.getLine(i);\n deleteRange.start.row = i;\n deleteRange.end.row = i;\n for (var j = 0; j < size; ++j)\n if (line.charAt(j) != ' ')\n break;\n if (j < size && line.charAt(j) == '\\t') {\n deleteRange.start.column = j;\n deleteRange.end.column = j + 1;\n }\n else {\n deleteRange.start.column = 0;\n deleteRange.end.column = j;\n }\n this.remove(deleteRange);\n }\n };\n EditSession.prototype.$moveLines = function (firstRow, lastRow, dir) {\n firstRow = this.getRowFoldStart(firstRow);\n lastRow = this.getRowFoldEnd(lastRow);\n if (dir < 0) {\n var row = this.getRowFoldStart(firstRow + dir);\n if (row < 0)\n return 0;\n var diff = row - firstRow;\n }\n else if (dir > 0) {\n var row = this.getRowFoldEnd(lastRow + dir);\n if (row > this.doc.getLength() - 1)\n return 0;\n var diff = row - lastRow;\n }\n else {\n firstRow = this.$clipRowToDocument(firstRow);\n lastRow = this.$clipRowToDocument(lastRow);\n var diff = lastRow - firstRow + 1;\n }\n var range = new Range(firstRow, 0, lastRow, Number.MAX_VALUE);\n var folds = this.getFoldsInRange(range).map(function (x) {\n x = x.clone();\n x.start.row += diff;\n x.end.row += diff;\n return x;\n });\n var lines = dir == 0\n ? this.doc.getLines(firstRow, lastRow)\n : this.doc.removeFullLines(firstRow, lastRow);\n this.doc.insertFullLines(firstRow + diff, lines);\n folds.length && this.addFolds(folds);\n return diff;\n };\n EditSession.prototype.moveLinesUp = function (firstRow, lastRow) {\n return this.$moveLines(firstRow, lastRow, -1);\n };\n EditSession.prototype.moveLinesDown = function (firstRow, lastRow) {\n return this.$moveLines(firstRow, lastRow, 1);\n };\n EditSession.prototype.duplicateLines = function (firstRow, lastRow) {\n return this.$moveLines(firstRow, lastRow, 0);\n };\n EditSession.prototype.$clipRowToDocument = function (row) {\n return Math.max(0, Math.min(row, this.doc.getLength() - 1));\n };\n EditSession.prototype.$clipColumnToRow = function (row, column) {\n if (column < 0)\n return 0;\n return Math.min(this.doc.getLine(row).length, column);\n };\n EditSession.prototype.$clipPositionToDocument = function (row, column) {\n column = Math.max(0, column);\n if (row < 0) {\n row = 0;\n column = 0;\n }\n else {\n var len = this.doc.getLength();\n if (row >= len) {\n row = len - 1;\n column = this.doc.getLine(len - 1).length;\n }\n else {\n column = Math.min(this.doc.getLine(row).length, column);\n }\n }\n return {\n row: row,\n column: column\n };\n };\n EditSession.prototype.$clipRangeToDocument = function (range) {\n if (range.start.row < 0) {\n range.start.row = 0;\n range.start.column = 0;\n }\n else {\n range.start.column = this.$clipColumnToRow(range.start.row, range.start.column);\n }\n var len = this.doc.getLength() - 1;\n if (range.end.row > len) {\n range.end.row = len;\n range.end.column = this.doc.getLine(len).length;\n }\n else {\n range.end.column = this.$clipColumnToRow(range.end.row, range.end.column);\n }\n return range;\n };\n EditSession.prototype.setUseWrapMode = function (useWrapMode) {\n if (useWrapMode != this.$useWrapMode) {\n this.$useWrapMode = useWrapMode;\n this.$modified = true;\n this.$resetRowCache(0);\n if (useWrapMode) {\n var len = this.getLength();\n this.$wrapData = Array(len);\n this.$updateWrapData(0, len - 1);\n }\n this._signal(\"changeWrapMode\");\n }\n };\n EditSession.prototype.getUseWrapMode = function () {\n return this.$useWrapMode;\n };\n EditSession.prototype.setWrapLimitRange = function (min, max) {\n if (this.$wrapLimitRange.min !== min || this.$wrapLimitRange.max !== max) {\n this.$wrapLimitRange = { min: min, max: max };\n this.$modified = true;\n this.$bidiHandler.markAsDirty();\n if (this.$useWrapMode)\n this._signal(\"changeWrapMode\");\n }\n };\n EditSession.prototype.adjustWrapLimit = function (desiredLimit, $printMargin) {\n var limits = this.$wrapLimitRange;\n if (limits.max < 0)\n limits = { min: $printMargin, max: $printMargin };\n var wrapLimit = this.$constrainWrapLimit(desiredLimit, limits.min, limits.max);\n if (wrapLimit != this.$wrapLimit && wrapLimit > 1) {\n this.$wrapLimit = wrapLimit;\n this.$modified = true;\n if (this.$useWrapMode) {\n this.$updateWrapData(0, this.getLength() - 1);\n this.$resetRowCache(0);\n this._signal(\"changeWrapLimit\");\n }\n return true;\n }\n return false;\n };\n EditSession.prototype.$constrainWrapLimit = function (wrapLimit, min, max) {\n if (min)\n wrapLimit = Math.max(min, wrapLimit);\n if (max)\n wrapLimit = Math.min(max, wrapLimit);\n return wrapLimit;\n };\n EditSession.prototype.getWrapLimit = function () {\n return this.$wrapLimit;\n };\n EditSession.prototype.setWrapLimit = function (limit) {\n this.setWrapLimitRange(limit, limit);\n };\n EditSession.prototype.getWrapLimitRange = function () {\n return {\n min: this.$wrapLimitRange.min,\n max: this.$wrapLimitRange.max\n };\n };\n EditSession.prototype.$updateInternalDataOnChange = function (delta) {\n var useWrapMode = this.$useWrapMode;\n var action = delta.action;\n var start = delta.start;\n var end = delta.end;\n var firstRow = start.row;\n var lastRow = end.row;\n var len = lastRow - firstRow;\n var removedFolds = null;\n this.$updating = true;\n if (len != 0) {\n if (action === \"remove\") {\n this[useWrapMode ? \"$wrapData\" : \"$rowLengthCache\"].splice(firstRow, len);\n var foldLines = this.$foldData;\n removedFolds = this.getFoldsInRange(delta);\n this.removeFolds(removedFolds);\n var foldLine = this.getFoldLine(end.row);\n var idx = 0;\n if (foldLine) {\n foldLine.addRemoveChars(end.row, end.column, start.column - end.column);\n foldLine.shiftRow(-len);\n var foldLineBefore = this.getFoldLine(firstRow);\n if (foldLineBefore && foldLineBefore !== foldLine) {\n foldLineBefore.merge(foldLine);\n foldLine = foldLineBefore;\n }\n idx = foldLines.indexOf(foldLine) + 1;\n }\n for (idx; idx < foldLines.length; idx++) {\n var foldLine = foldLines[idx];\n if (foldLine.start.row >= end.row) {\n foldLine.shiftRow(-len);\n }\n }\n lastRow = firstRow;\n }\n else {\n var args = Array(len);\n args.unshift(firstRow, 0);\n var arr = useWrapMode ? this.$wrapData : this.$rowLengthCache;\n arr.splice.apply(arr, args);\n var foldLines = this.$foldData;\n var foldLine = this.getFoldLine(firstRow);\n var idx = 0;\n if (foldLine) {\n var cmp = foldLine.range.compareInside(start.row, start.column);\n if (cmp == 0) {\n foldLine = foldLine.split(start.row, start.column);\n if (foldLine) {\n foldLine.shiftRow(len);\n foldLine.addRemoveChars(lastRow, 0, end.column - start.column);\n }\n }\n else \n if (cmp == -1) {\n foldLine.addRemoveChars(firstRow, 0, end.column - start.column);\n foldLine.shiftRow(len);\n }\n idx = foldLines.indexOf(foldLine) + 1;\n }\n for (idx; idx < foldLines.length; idx++) {\n var foldLine = foldLines[idx];\n if (foldLine.start.row >= firstRow) {\n foldLine.shiftRow(len);\n }\n }\n }\n }\n else {\n len = Math.abs(delta.start.column - delta.end.column);\n if (action === \"remove\") {\n removedFolds = this.getFoldsInRange(delta);\n this.removeFolds(removedFolds);\n len = -len;\n }\n var foldLine = this.getFoldLine(firstRow);\n if (foldLine) {\n foldLine.addRemoveChars(firstRow, start.column, len);\n }\n }\n if (useWrapMode && this.$wrapData.length != this.doc.getLength()) {\n console.error(\"doc.getLength() and $wrapData.length have to be the same!\");\n }\n this.$updating = false;\n if (useWrapMode)\n this.$updateWrapData(firstRow, lastRow);\n else\n this.$updateRowLengthCache(firstRow, lastRow);\n return removedFolds;\n };\n EditSession.prototype.$updateRowLengthCache = function (firstRow, lastRow, b) {\n this.$rowLengthCache[firstRow] = null;\n this.$rowLengthCache[lastRow] = null;\n };\n EditSession.prototype.$updateWrapData = function (firstRow, lastRow) {\n var lines = this.doc.getAllLines();\n var tabSize = this.getTabSize();\n var wrapData = this.$wrapData;\n var wrapLimit = this.$wrapLimit;\n var tokens;\n var foldLine;\n var row = firstRow;\n lastRow = Math.min(lastRow, lines.length - 1);\n while (row <= lastRow) {\n foldLine = this.getFoldLine(row, foldLine);\n if (!foldLine) {\n tokens = this.$getDisplayTokens(lines[row]);\n wrapData[row] = this.$computeWrapSplits(tokens, wrapLimit, tabSize);\n row++;\n }\n else {\n tokens = [];\n foldLine.walk(function (placeholder, row, column, lastColumn) {\n var walkTokens;\n if (placeholder != null) {\n walkTokens = this.$getDisplayTokens(placeholder, tokens.length);\n walkTokens[0] = PLACEHOLDER_START;\n for (var i = 1; i < walkTokens.length; i++) {\n walkTokens[i] = PLACEHOLDER_BODY;\n }\n }\n else {\n walkTokens = this.$getDisplayTokens(lines[row].substring(lastColumn, column), tokens.length);\n }\n tokens = tokens.concat(walkTokens);\n }.bind(this), foldLine.end.row, lines[foldLine.end.row].length + 1);\n wrapData[foldLine.start.row] = this.$computeWrapSplits(tokens, wrapLimit, tabSize);\n row = foldLine.end.row + 1;\n }\n }\n };\n EditSession.prototype.$computeWrapSplits = function (tokens, wrapLimit, tabSize) {\n if (tokens.length == 0) {\n return [];\n }\n var splits = [];\n var displayLength = tokens.length;\n var lastSplit = 0, lastDocSplit = 0;\n var isCode = this.$wrapAsCode;\n var indentedSoftWrap = this.$indentedSoftWrap;\n var maxIndent = wrapLimit <= Math.max(2 * tabSize, 8)\n || indentedSoftWrap === false ? 0 : Math.floor(wrapLimit / 2);\n function getWrapIndent() {\n var indentation = 0;\n if (maxIndent === 0)\n return indentation;\n if (indentedSoftWrap) {\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n if (token == SPACE)\n indentation += 1;\n else if (token == TAB)\n indentation += tabSize;\n else if (token == TAB_SPACE)\n continue;\n else\n break;\n }\n }\n if (isCode && indentedSoftWrap !== false)\n indentation += tabSize;\n return Math.min(indentation, maxIndent);\n }\n function addSplit(screenPos) {\n var len = screenPos - lastSplit;\n for (var i = lastSplit; i < screenPos; i++) {\n var ch = tokens[i];\n if (ch === 12 || ch === 2)\n len -= 1;\n }\n if (!splits.length) {\n indent = getWrapIndent();\n splits.indent = indent;\n }\n lastDocSplit += len;\n splits.push(lastDocSplit);\n lastSplit = screenPos;\n }\n var indent = 0;\n while (displayLength - lastSplit > wrapLimit - indent) {\n var split = lastSplit + wrapLimit - indent;\n if (tokens[split - 1] >= SPACE && tokens[split] >= SPACE) {\n addSplit(split);\n continue;\n }\n if (tokens[split] == PLACEHOLDER_START || tokens[split] == PLACEHOLDER_BODY) {\n for (split; split != lastSplit - 1; split--) {\n if (tokens[split] == PLACEHOLDER_START) {\n break;\n }\n }\n if (split > lastSplit) {\n addSplit(split);\n continue;\n }\n split = lastSplit + wrapLimit;\n for (split; split < tokens.length; split++) {\n if (tokens[split] != PLACEHOLDER_BODY) {\n break;\n }\n }\n if (split == tokens.length) {\n break; // Breaks the while-loop.\n }\n addSplit(split);\n continue;\n }\n var minSplit = Math.max(split - (wrapLimit - (wrapLimit >> 2)), lastSplit - 1);\n while (split > minSplit && tokens[split] < PLACEHOLDER_START) {\n split--;\n }\n if (isCode) {\n while (split > minSplit && tokens[split] < PLACEHOLDER_START) {\n split--;\n }\n while (split > minSplit && tokens[split] == PUNCTUATION) {\n split--;\n }\n }\n else {\n while (split > minSplit && tokens[split] < SPACE) {\n split--;\n }\n }\n if (split > minSplit) {\n addSplit(++split);\n continue;\n }\n split = lastSplit + wrapLimit;\n if (tokens[split] == CHAR_EXT)\n split--;\n addSplit(split - indent);\n }\n return splits;\n };\n EditSession.prototype.$getDisplayTokens = function (str, offset) {\n var arr = [];\n var tabSize;\n offset = offset || 0;\n for (var i = 0; i < str.length; i++) {\n var c = str.charCodeAt(i);\n if (c == 9) {\n tabSize = this.getScreenTabSize(arr.length + offset);\n arr.push(TAB);\n for (var n = 1; n < tabSize; n++) {\n arr.push(TAB_SPACE);\n }\n }\n else if (c == 32) {\n arr.push(SPACE);\n }\n else if ((c > 39 && c < 48) || (c > 57 && c < 64)) {\n arr.push(PUNCTUATION);\n }\n else if (c >= 0x1100 && isFullWidth(c)) {\n arr.push(CHAR, CHAR_EXT);\n }\n else {\n arr.push(CHAR);\n }\n }\n return arr;\n };\n EditSession.prototype.$getStringScreenWidth = function (str, maxScreenColumn, screenColumn) {\n if (maxScreenColumn == 0)\n return [0, 0];\n if (maxScreenColumn == null)\n maxScreenColumn = Infinity;\n screenColumn = screenColumn || 0;\n var c, column;\n for (column = 0; column < str.length; column++) {\n c = str.charCodeAt(column);\n if (c == 9) {\n screenColumn += this.getScreenTabSize(screenColumn);\n }\n else if (c >= 0x1100 && isFullWidth(c)) {\n screenColumn += 2;\n }\n else {\n screenColumn += 1;\n }\n if (screenColumn > maxScreenColumn) {\n break;\n }\n }\n return [screenColumn, column];\n };\n EditSession.prototype.getRowLength = function (row) {\n var h = 1;\n if (this.lineWidgets)\n h += this.lineWidgets[row] && this.lineWidgets[row].rowCount || 0;\n if (!this.$useWrapMode || !this.$wrapData[row])\n return h;\n else\n return this.$wrapData[row].length + h;\n };\n EditSession.prototype.getRowLineCount = function (row) {\n if (!this.$useWrapMode || !this.$wrapData[row]) {\n return 1;\n }\n else {\n return this.$wrapData[row].length + 1;\n }\n };\n EditSession.prototype.getRowWrapIndent = function (screenRow) {\n if (this.$useWrapMode) {\n var pos = this.screenToDocumentPosition(screenRow, Number.MAX_VALUE);\n var splits = this.$wrapData[pos.row];\n return splits.length && splits[0] < pos.column ? splits.indent : 0;\n }\n else {\n return 0;\n }\n };\n EditSession.prototype.getScreenLastRowColumn = function (screenRow) {\n var pos = this.screenToDocumentPosition(screenRow, Number.MAX_VALUE);\n return this.documentToScreenColumn(pos.row, pos.column);\n };\n EditSession.prototype.getDocumentLastRowColumn = function (docRow, docColumn) {\n var screenRow = this.documentToScreenRow(docRow, docColumn);\n return this.getScreenLastRowColumn(screenRow);\n };\n EditSession.prototype.getDocumentLastRowColumnPosition = function (docRow, docColumn) {\n var screenRow = this.documentToScreenRow(docRow, docColumn);\n return this.screenToDocumentPosition(screenRow, Number.MAX_VALUE / 10);\n };\n EditSession.prototype.getRowSplitData = function (row) {\n if (!this.$useWrapMode) {\n return undefined;\n }\n else {\n return this.$wrapData[row];\n }\n };\n EditSession.prototype.getScreenTabSize = function (screenColumn) {\n return this.$tabSize - (screenColumn % this.$tabSize | 0);\n };\n EditSession.prototype.screenToDocumentRow = function (screenRow, screenColumn) {\n return this.screenToDocumentPosition(screenRow, screenColumn).row;\n };\n EditSession.prototype.screenToDocumentColumn = function (screenRow, screenColumn) {\n return this.screenToDocumentPosition(screenRow, screenColumn).column;\n };\n EditSession.prototype.screenToDocumentPosition = function (screenRow, screenColumn, offsetX) {\n if (screenRow < 0)\n return { row: 0, column: 0 };\n var line;\n var docRow = 0;\n var docColumn = 0;\n var column;\n var row = 0;\n var rowLength = 0;\n var rowCache = this.$screenRowCache;\n var i = this.$getRowCacheIndex(rowCache, screenRow);\n var l = rowCache.length;\n if (l && i >= 0) {\n var row = rowCache[i];\n var docRow = this.$docRowCache[i];\n var doCache = screenRow > rowCache[l - 1];\n }\n else {\n var doCache = !l;\n }\n var maxRow = this.getLength() - 1;\n var foldLine = this.getNextFoldLine(docRow);\n var foldStart = foldLine ? foldLine.start.row : Infinity;\n while (row <= screenRow) {\n rowLength = this.getRowLength(docRow);\n if (row + rowLength > screenRow || docRow >= maxRow) {\n break;\n }\n else {\n row += rowLength;\n docRow++;\n if (docRow > foldStart) {\n docRow = foldLine.end.row + 1;\n foldLine = this.getNextFoldLine(docRow, foldLine);\n foldStart = foldLine ? foldLine.start.row : Infinity;\n }\n }\n if (doCache) {\n this.$docRowCache.push(docRow);\n this.$screenRowCache.push(row);\n }\n }\n if (foldLine && foldLine.start.row <= docRow) {\n line = this.getFoldDisplayLine(foldLine);\n docRow = foldLine.start.row;\n }\n else if (row + rowLength <= screenRow || docRow > maxRow) {\n return {\n row: maxRow,\n column: this.getLine(maxRow).length\n };\n }\n else {\n line = this.getLine(docRow);\n foldLine = null;\n }\n var wrapIndent = 0, splitIndex = Math.floor(screenRow - row);\n if (this.$useWrapMode) {\n var splits = this.$wrapData[docRow];\n if (splits) {\n column = splits[splitIndex];\n if (splitIndex > 0 && splits.length) {\n wrapIndent = splits.indent;\n docColumn = splits[splitIndex - 1] || splits[splits.length - 1];\n line = line.substring(docColumn);\n }\n }\n }\n if (offsetX !== undefined && this.$bidiHandler.isBidiRow(row + splitIndex, docRow, splitIndex))\n screenColumn = this.$bidiHandler.offsetToCol(offsetX);\n docColumn += this.$getStringScreenWidth(line, screenColumn - wrapIndent)[1];\n if (this.$useWrapMode && docColumn >= column)\n docColumn = column - 1;\n if (foldLine)\n return foldLine.idxToPosition(docColumn);\n return { row: docRow, column: docColumn };\n };\n EditSession.prototype.documentToScreenPosition = function (docRow, docColumn) {\n if (typeof docColumn === \"undefined\")\n var pos = this.$clipPositionToDocument(docRow.row, docRow.column);\n else\n pos = this.$clipPositionToDocument(docRow, docColumn);\n docRow = pos.row;\n docColumn = pos.column;\n var screenRow = 0;\n var foldStartRow = null;\n var fold = null;\n fold = this.getFoldAt(docRow, docColumn, 1);\n if (fold) {\n docRow = fold.start.row;\n docColumn = fold.start.column;\n }\n var rowEnd, row = 0;\n var rowCache = this.$docRowCache;\n var i = this.$getRowCacheIndex(rowCache, docRow);\n var l = rowCache.length;\n if (l && i >= 0) {\n var row = rowCache[i];\n var screenRow = this.$screenRowCache[i];\n var doCache = docRow > rowCache[l - 1];\n }\n else {\n var doCache = !l;\n }\n var foldLine = this.getNextFoldLine(row);\n var foldStart = foldLine ? foldLine.start.row : Infinity;\n while (row < docRow) {\n if (row >= foldStart) {\n rowEnd = foldLine.end.row + 1;\n if (rowEnd > docRow)\n break;\n foldLine = this.getNextFoldLine(rowEnd, foldLine);\n foldStart = foldLine ? foldLine.start.row : Infinity;\n }\n else {\n rowEnd = row + 1;\n }\n screenRow += this.getRowLength(row);\n row = rowEnd;\n if (doCache) {\n this.$docRowCache.push(row);\n this.$screenRowCache.push(screenRow);\n }\n }\n var textLine = \"\";\n if (foldLine && row >= foldStart) {\n textLine = this.getFoldDisplayLine(foldLine, docRow, docColumn);\n foldStartRow = foldLine.start.row;\n }\n else {\n textLine = this.getLine(docRow).substring(0, docColumn);\n foldStartRow = docRow;\n }\n var wrapIndent = 0;\n if (this.$useWrapMode) {\n var wrapRow = this.$wrapData[foldStartRow];\n if (wrapRow) {\n var screenRowOffset = 0;\n while (textLine.length >= wrapRow[screenRowOffset]) {\n screenRow++;\n screenRowOffset++;\n }\n textLine = textLine.substring(wrapRow[screenRowOffset - 1] || 0, textLine.length);\n wrapIndent = screenRowOffset > 0 ? wrapRow.indent : 0;\n }\n }\n if (this.lineWidgets && this.lineWidgets[row] && this.lineWidgets[row].rowsAbove)\n screenRow += this.lineWidgets[row].rowsAbove;\n return {\n row: screenRow,\n column: wrapIndent + this.$getStringScreenWidth(textLine)[0]\n };\n };\n EditSession.prototype.documentToScreenColumn = function (row, docColumn) {\n return this.documentToScreenPosition(row, docColumn).column;\n };\n EditSession.prototype.documentToScreenRow = function (docRow, docColumn) {\n return this.documentToScreenPosition(docRow, docColumn).row;\n };\n EditSession.prototype.getScreenLength = function () {\n var screenRows = 0;\n var fold = null;\n if (!this.$useWrapMode) {\n screenRows = this.getLength();\n var foldData = this.$foldData;\n for (var i = 0; i < foldData.length; i++) {\n fold = foldData[i];\n screenRows -= fold.end.row - fold.start.row;\n }\n }\n else {\n var lastRow = this.$wrapData.length;\n var row = 0, i = 0;\n var fold = this.$foldData[i++];\n var foldStart = fold ? fold.start.row : Infinity;\n while (row < lastRow) {\n var splits = this.$wrapData[row];\n screenRows += splits ? splits.length + 1 : 1;\n row++;\n if (row > foldStart) {\n row = fold.end.row + 1;\n fold = this.$foldData[i++];\n foldStart = fold ? fold.start.row : Infinity;\n }\n }\n }\n if (this.lineWidgets)\n screenRows += this.$getWidgetScreenLength();\n return screenRows;\n };\n EditSession.prototype.$setFontMetrics = function (fm) {\n if (!this.$enableVarChar)\n return;\n this.$getStringScreenWidth = function (str, maxScreenColumn, screenColumn) {\n if (maxScreenColumn === 0)\n return [0, 0];\n if (!maxScreenColumn)\n maxScreenColumn = Infinity;\n screenColumn = screenColumn || 0;\n var c, column;\n for (column = 0; column < str.length; column++) {\n c = str.charAt(column);\n if (c === \"\\t\") {\n screenColumn += this.getScreenTabSize(screenColumn);\n }\n else {\n screenColumn += fm.getCharacterWidth(c);\n }\n if (screenColumn > maxScreenColumn) {\n break;\n }\n }\n return [screenColumn, column];\n };\n };\n EditSession.prototype.destroy = function () {\n if (!this.destroyed) {\n this.bgTokenizer.setDocument(null);\n this.bgTokenizer.cleanup();\n this.destroyed = true;\n }\n this.$stopWorker();\n this.removeAllListeners();\n if (this.doc) {\n this.doc.off(\"change\", this.$onChange);\n }\n this.selection.detach();\n };\n return EditSession;\n}());\nEditSession.$uid = 0;\nEditSession.prototype.$modes = config.$modes;\nEditSession.prototype.getValue = EditSession.prototype.toString;\nEditSession.prototype.$defaultUndoManager = {\n undo: function () { },\n redo: function () { },\n hasUndo: function () { },\n hasRedo: function () { },\n reset: function () { },\n add: function () { },\n addSelection: function () { },\n startNewGroup: function () { },\n addSession: function () { }\n};\nEditSession.prototype.$overwrite = false;\nEditSession.prototype.$mode = null;\nEditSession.prototype.$modeId = null;\nEditSession.prototype.$scrollTop = 0;\nEditSession.prototype.$scrollLeft = 0;\nEditSession.prototype.$wrapLimit = 80;\nEditSession.prototype.$useWrapMode = false;\nEditSession.prototype.$wrapLimitRange = {\n min: null,\n max: null\n};\nEditSession.prototype.lineWidgets = null;\nEditSession.prototype.isFullWidth = isFullWidth;\noop.implement(EditSession.prototype, EventEmitter);\nvar CHAR = 1, CHAR_EXT = 2, PLACEHOLDER_START = 3, PLACEHOLDER_BODY = 4, PUNCTUATION = 9, SPACE = 10, TAB = 11, TAB_SPACE = 12;\nfunction isFullWidth(c) {\n if (c < 0x1100)\n return false;\n return c >= 0x1100 && c <= 0x115F ||\n c >= 0x11A3 && c <= 0x11A7 ||\n c >= 0x11FA && c <= 0x11FF ||\n c >= 0x2329 && c <= 0x232A ||\n c >= 0x2E80 && c <= 0x2E99 ||\n c >= 0x2E9B && c <= 0x2EF3 ||\n c >= 0x2F00 && c <= 0x2FD5 ||\n c >= 0x2FF0 && c <= 0x2FFB ||\n c >= 0x3000 && c <= 0x303E ||\n c >= 0x3041 && c <= 0x3096 ||\n c >= 0x3099 && c <= 0x30FF ||\n c >= 0x3105 && c <= 0x312D ||\n c >= 0x3131 && c <= 0x318E ||\n c >= 0x3190 && c <= 0x31BA ||\n c >= 0x31C0 && c <= 0x31E3 ||\n c >= 0x31F0 && c <= 0x321E ||\n c >= 0x3220 && c <= 0x3247 ||\n c >= 0x3250 && c <= 0x32FE ||\n c >= 0x3300 && c <= 0x4DBF ||\n c >= 0x4E00 && c <= 0xA48C ||\n c >= 0xA490 && c <= 0xA4C6 ||\n c >= 0xA960 && c <= 0xA97C ||\n c >= 0xAC00 && c <= 0xD7A3 ||\n c >= 0xD7B0 && c <= 0xD7C6 ||\n c >= 0xD7CB && c <= 0xD7FB ||\n c >= 0xF900 && c <= 0xFAFF ||\n c >= 0xFE10 && c <= 0xFE19 ||\n c >= 0xFE30 && c <= 0xFE52 ||\n c >= 0xFE54 && c <= 0xFE66 ||\n c >= 0xFE68 && c <= 0xFE6B ||\n c >= 0xFF01 && c <= 0xFF60 ||\n c >= 0xFFE0 && c <= 0xFFE6;\n}\nrequire(\"./edit_session/folding\").Folding.call(EditSession.prototype);\nrequire(\"./edit_session/bracket_match\").BracketMatch.call(EditSession.prototype);\nconfig.defineOptions(EditSession.prototype, \"session\", {\n wrap: {\n set: function (value) {\n if (!value || value == \"off\")\n value = false;\n else if (value == \"free\")\n value = true;\n else if (value == \"printMargin\")\n value = -1;\n else if (typeof value == \"string\")\n value = parseInt(value, 10) || false;\n if (this.$wrap == value)\n return;\n this.$wrap = value;\n if (!value) {\n this.setUseWrapMode(false);\n }\n else {\n var col = typeof value == \"number\" ? value : null;\n this.setWrapLimitRange(col, col);\n this.setUseWrapMode(true);\n }\n },\n get: function () {\n if (this.getUseWrapMode()) {\n if (this.$wrap == -1)\n return \"printMargin\";\n if (!this.getWrapLimitRange().min)\n return \"free\";\n return this.$wrap;\n }\n return \"off\";\n },\n handlesSet: true\n },\n wrapMethod: {\n set: function (val) {\n val = val == \"auto\"\n ? this.$mode.type != \"text\"\n : val != \"text\";\n if (val != this.$wrapAsCode) {\n this.$wrapAsCode = val;\n if (this.$useWrapMode) {\n this.$useWrapMode = false;\n this.setUseWrapMode(true);\n }\n }\n },\n initialValue: \"auto\"\n },\n indentedSoftWrap: {\n set: function () {\n if (this.$useWrapMode) {\n this.$useWrapMode = false;\n this.setUseWrapMode(true);\n }\n },\n initialValue: true\n },\n firstLineNumber: {\n set: function () { this._signal(\"changeBreakpoint\"); },\n initialValue: 1\n },\n useWorker: {\n set: function (useWorker) {\n this.$useWorker = useWorker;\n this.$stopWorker();\n if (useWorker)\n this.$startWorker();\n },\n initialValue: true\n },\n useSoftTabs: { initialValue: true },\n tabSize: {\n set: function (tabSize) {\n tabSize = parseInt(tabSize);\n if (tabSize > 0 && this.$tabSize !== tabSize) {\n this.$modified = true;\n this.$rowLengthCache = [];\n this.$tabSize = tabSize;\n this._signal(\"changeTabSize\");\n }\n },\n initialValue: 4,\n handlesSet: true\n },\n navigateWithinSoftTabs: { initialValue: false },\n foldStyle: {\n set: function (val) { this.setFoldStyle(val); },\n handlesSet: true\n },\n overwrite: {\n set: function (val) { this._signal(\"changeOverwrite\"); },\n initialValue: false\n },\n newLineMode: {\n set: function (val) { this.doc.setNewLineMode(val); },\n get: function () { return this.doc.getNewLineMode(); },\n handlesSet: true\n },\n mode: {\n set: function (val) { this.setMode(val); },\n get: function () { return this.$modeId; },\n handlesSet: true\n }\n});\nexports.EditSession = EditSession;\n\n});\n\nace.define(\"ace/search\",[\"require\",\"exports\",\"module\",\"ace/lib/lang\",\"ace/lib/oop\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar lang = require(\"./lib/lang\");\nvar oop = require(\"./lib/oop\");\nvar Range = require(\"./range\").Range;\nvar Search = /** @class */ (function () {\n function Search() {\n this.$options = {};\n }\n Search.prototype.set = function (options) {\n oop.mixin(this.$options, options);\n return this;\n };\n Search.prototype.getOptions = function () {\n return lang.copyObject(this.$options);\n };\n Search.prototype.setOptions = function (options) {\n this.$options = options;\n };\n Search.prototype.find = function (session) {\n var options = this.$options;\n var iterator = this.$matchIterator(session, options);\n if (!iterator)\n return false;\n var firstRange = null;\n iterator.forEach(function (sr, sc, er, ec) {\n firstRange = new Range(sr, sc, er, ec);\n if (sc == ec && options.start && options.start.start\n && options.skipCurrent != false && firstRange.isEqual(options.start)) {\n firstRange = null;\n return false;\n }\n return true;\n });\n return firstRange;\n };\n Search.prototype.findAll = function (session) {\n var options = this.$options;\n if (!options.needle)\n return [];\n this.$assembleRegExp(options);\n var range = options.range;\n var lines = range\n ? session.getLines(range.start.row, range.end.row)\n : session.doc.getAllLines();\n var ranges = [];\n var re = options.re;\n if (options.$isMultiLine) {\n var len = re.length;\n var maxRow = lines.length - len;\n var prevRange;\n outer: for (var row = re.offset || 0; row <= maxRow; row++) {\n for (var j = 0; j < len; j++)\n if (lines[row + j].search(re[j]) == -1)\n continue outer;\n var startLine = lines[row];\n var line = lines[row + len - 1];\n var startIndex = startLine.length - startLine.match(re[0])[0].length;\n var endIndex = line.match(re[len - 1])[0].length;\n if (prevRange && prevRange.end.row === row &&\n prevRange.end.column > startIndex) {\n continue;\n }\n ranges.push(prevRange = new Range(row, startIndex, row + len - 1, endIndex));\n if (len > 2)\n row = row + len - 2;\n }\n }\n else {\n for (var i = 0; i < lines.length; i++) {\n var matches = lang.getMatchOffsets(lines[i], re);\n for (var j = 0; j < matches.length; j++) {\n var match = matches[j];\n ranges.push(new Range(i, match.offset, i, match.offset + match.length));\n }\n }\n }\n if (range) {\n var startColumn = range.start.column;\n var endColumn = range.end.column;\n var i = 0, j = ranges.length - 1;\n while (i < j && ranges[i].start.column < startColumn && ranges[i].start.row == 0)\n i++;\n var endRow = range.end.row - range.start.row;\n while (i < j && ranges[j].end.column > endColumn && ranges[j].end.row == endRow)\n j--;\n ranges = ranges.slice(i, j + 1);\n for (i = 0, j = ranges.length; i < j; i++) {\n ranges[i].start.row += range.start.row;\n ranges[i].end.row += range.start.row;\n }\n }\n return ranges;\n };\n Search.prototype.replace = function (input, replacement) {\n var options = this.$options;\n var re = this.$assembleRegExp(options);\n if (options.$isMultiLine)\n return replacement;\n if (!re)\n return;\n var match = re.exec(input);\n if (!match || match[0].length != input.length)\n return null;\n replacement = input.replace(re, replacement);\n if (options.preserveCase) {\n replacement = replacement.split(\"\");\n for (var i = Math.min(input.length, input.length); i--;) {\n var ch = input[i];\n if (ch && ch.toLowerCase() != ch)\n replacement[i] = replacement[i].toUpperCase();\n else\n replacement[i] = replacement[i].toLowerCase();\n }\n replacement = replacement.join(\"\");\n }\n return replacement;\n };\n Search.prototype.$assembleRegExp = function (options, $disableFakeMultiline) {\n if (options.needle instanceof RegExp)\n return options.re = options.needle;\n var needle = options.needle;\n if (!options.needle)\n return options.re = false;\n if (!options.regExp)\n needle = lang.escapeRegExp(needle);\n var modifier = options.caseSensitive ? \"gm\" : \"gmi\";\n try {\n new RegExp(needle, \"u\");\n options.$supportsUnicodeFlag = true;\n modifier += \"u\";\n }\n catch (e) {\n options.$supportsUnicodeFlag = false; //left for backward compatibility with previous versions for cases like /ab\\{2}/gu\n }\n if (options.wholeWord)\n needle = addWordBoundary(needle, options);\n options.$isMultiLine = !$disableFakeMultiline && /[\\n\\r]/.test(needle);\n if (options.$isMultiLine)\n return options.re = this.$assembleMultilineRegExp(needle, modifier);\n try {\n var re = new RegExp(needle, modifier);\n }\n catch (e) {\n re = false;\n }\n return options.re = re;\n };\n Search.prototype.$assembleMultilineRegExp = function (needle, modifier) {\n var parts = needle.replace(/\\r\\n|\\r|\\n/g, \"$\\n^\").split(\"\\n\");\n var re = [];\n for (var i = 0; i < parts.length; i++)\n try {\n re.push(new RegExp(parts[i], modifier));\n }\n catch (e) {\n return false;\n }\n return re;\n };\n Search.prototype.$matchIterator = function (session, options) {\n var re = this.$assembleRegExp(options);\n if (!re)\n return false;\n var backwards = options.backwards == true;\n var skipCurrent = options.skipCurrent != false;\n var supportsUnicodeFlag = re.unicode;\n var range = options.range;\n var start = options.start;\n if (!start)\n start = range ? range[backwards ? \"end\" : \"start\"] : session.selection.getRange();\n if (start.start)\n start = start[skipCurrent != backwards ? \"end\" : \"start\"];\n var firstRow = range ? range.start.row : 0;\n var lastRow = range ? range.end.row : session.getLength() - 1;\n if (backwards) {\n var forEach = function (callback) {\n var row = start.row;\n if (forEachInLine(row, start.column, callback))\n return;\n for (row--; row >= firstRow; row--)\n if (forEachInLine(row, Number.MAX_VALUE, callback))\n return;\n if (options.wrap == false)\n return;\n for (row = lastRow, firstRow = start.row; row >= firstRow; row--)\n if (forEachInLine(row, Number.MAX_VALUE, callback))\n return;\n };\n }\n else {\n var forEach = function (callback) {\n var row = start.row;\n if (forEachInLine(row, start.column, callback))\n return;\n for (row = row + 1; row <= lastRow; row++)\n if (forEachInLine(row, 0, callback))\n return;\n if (options.wrap == false)\n return;\n for (row = firstRow, lastRow = start.row; row <= lastRow; row++)\n if (forEachInLine(row, 0, callback))\n return;\n };\n }\n if (options.$isMultiLine) {\n var len = re.length;\n var forEachInLine = function (row, offset, callback) {\n var startRow = backwards ? row - len + 1 : row;\n if (startRow < 0 || startRow + len > session.getLength())\n return;\n var line = session.getLine(startRow);\n var startIndex = line.search(re[0]);\n if (!backwards && startIndex < offset || startIndex === -1)\n return;\n for (var i = 1; i < len; i++) {\n line = session.getLine(startRow + i);\n if (line.search(re[i]) == -1)\n return;\n }\n var endIndex = line.match(re[len - 1])[0].length;\n if (backwards && endIndex > offset)\n return;\n if (callback(startRow, startIndex, startRow + len - 1, endIndex))\n return true;\n };\n }\n else if (backwards) {\n var forEachInLine = function (row, endIndex, callback) {\n var line = session.getLine(row);\n var matches = [];\n var m, last = 0;\n re.lastIndex = 0;\n while ((m = re.exec(line))) {\n var length = m[0].length;\n last = m.index;\n if (!length) {\n if (last >= line.length)\n break;\n re.lastIndex = last += lang.skipEmptyMatch(line, last, supportsUnicodeFlag);\n }\n if (m.index + length > endIndex)\n break;\n matches.push(m.index, length);\n }\n for (var i = matches.length - 1; i >= 0; i -= 2) {\n var column = matches[i - 1];\n var length = matches[i];\n if (callback(row, column, row, column + length))\n return true;\n }\n };\n }\n else {\n var forEachInLine = function (row, startIndex, callback) {\n var line = session.getLine(row);\n var last;\n var m;\n re.lastIndex = startIndex;\n while ((m = re.exec(line))) {\n var length = m[0].length;\n last = m.index;\n if (callback(row, last, row, last + length))\n return true;\n if (!length) {\n re.lastIndex = last += lang.skipEmptyMatch(line, last, supportsUnicodeFlag);\n if (last >= line.length)\n return false;\n }\n }\n };\n }\n return { forEach: forEach };\n };\n return Search;\n}());\nfunction addWordBoundary(needle, options) {\n var supportsLookbehind = lang.supportsLookbehind();\n function wordBoundary(c, firstChar) {\n if (firstChar === void 0) { firstChar = true; }\n var wordRegExp = supportsLookbehind && options.$supportsUnicodeFlag ? new RegExp(\"[\\\\p{L}\\\\p{N}_]\", \"u\") : new RegExp(\"\\\\w\");\n if (wordRegExp.test(c) || options.regExp) {\n if (supportsLookbehind && options.$supportsUnicodeFlag) {\n if (firstChar)\n return \"(?<=^|[^\\\\p{L}\\\\p{N}_])\";\n return \"(?=[^\\\\p{L}\\\\p{N}_]|$)\";\n }\n return \"\\\\b\";\n }\n return \"\";\n }\n var needleArray = Array.from(needle);\n var firstChar = needleArray[0];\n var lastChar = needleArray[needleArray.length - 1];\n return wordBoundary(firstChar) + needle + wordBoundary(lastChar, false);\n}\nexports.Search = Search;\n\n});\n\nace.define(\"ace/keyboard/hash_handler\",[\"require\",\"exports\",\"module\",\"ace/lib/keys\",\"ace/lib/useragent\"], function(require, exports, module){\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar keyUtil = require(\"../lib/keys\");\nvar useragent = require(\"../lib/useragent\");\nvar KEY_MODS = keyUtil.KEY_MODS;\nvar MultiHashHandler = /** @class */ (function () {\n function MultiHashHandler(config, platform) {\n this.$init(config, platform, false);\n }\n MultiHashHandler.prototype.$init = function (config, platform, $singleCommand) {\n this.platform = platform || (useragent.isMac ? \"mac\" : \"win\");\n this.commands = {};\n this.commandKeyBinding = {};\n this.addCommands(config);\n this.$singleCommand = $singleCommand;\n };\n MultiHashHandler.prototype.addCommand = function (command) {\n if (this.commands[command.name])\n this.removeCommand(command);\n this.commands[command.name] = command;\n if (command.bindKey)\n this._buildKeyHash(command);\n };\n MultiHashHandler.prototype.removeCommand = function (command, keepCommand) {\n var name = command && (typeof command === 'string' ? command : command.name);\n command = this.commands[name];\n if (!keepCommand)\n delete this.commands[name];\n var ckb = this.commandKeyBinding;\n for (var keyId in ckb) {\n var cmdGroup = ckb[keyId];\n if (cmdGroup == command) {\n delete ckb[keyId];\n }\n else if (Array.isArray(cmdGroup)) {\n var i = cmdGroup.indexOf(command);\n if (i != -1) {\n cmdGroup.splice(i, 1);\n if (cmdGroup.length == 1)\n ckb[keyId] = cmdGroup[0];\n }\n }\n }\n };\n MultiHashHandler.prototype.bindKey = function (key, command, position) {\n if (typeof key == \"object\" && key) {\n if (position == undefined)\n position = key.position;\n key = key[this.platform];\n }\n if (!key)\n return;\n if (typeof command == \"function\")\n return this.addCommand({ exec: command, bindKey: key, name: command.name || key });\n key.split(\"|\").forEach(function (keyPart) {\n var chain = \"\";\n if (keyPart.indexOf(\" \") != -1) {\n var parts = keyPart.split(/\\s+/);\n keyPart = parts.pop();\n parts.forEach(function (keyPart) {\n var binding = this.parseKeys(keyPart);\n var id = KEY_MODS[binding.hashId] + binding.key;\n chain += (chain ? \" \" : \"\") + id;\n this._addCommandToBinding(chain, \"chainKeys\");\n }, this);\n chain += \" \";\n }\n var binding = this.parseKeys(keyPart);\n var id = KEY_MODS[binding.hashId] + binding.key;\n this._addCommandToBinding(chain + id, command, position);\n }, this);\n };\n MultiHashHandler.prototype._addCommandToBinding = function (keyId, command, position) {\n var ckb = this.commandKeyBinding, i;\n if (!command) {\n delete ckb[keyId];\n }\n else if (!ckb[keyId] || this.$singleCommand) {\n ckb[keyId] = command;\n }\n else {\n if (!Array.isArray(ckb[keyId])) {\n ckb[keyId] = [ckb[keyId]];\n }\n else if ((i = ckb[keyId].indexOf(command)) != -1) {\n ckb[keyId].splice(i, 1);\n }\n if (typeof position != \"number\") {\n position = getPosition(command);\n }\n var commands = ckb[keyId];\n for (i = 0; i < commands.length; i++) {\n var other = commands[i];\n var otherPos = getPosition(other);\n if (otherPos > position)\n break;\n }\n commands.splice(i, 0, command);\n }\n };\n MultiHashHandler.prototype.addCommands = function (commands) {\n commands && Object.keys(commands).forEach(function (name) {\n var command = commands[name];\n if (!command)\n return;\n if (typeof command === \"string\")\n return this.bindKey(command, name);\n if (typeof command === \"function\")\n command = { exec: command };\n if (typeof command !== \"object\")\n return;\n if (!command.name)\n command.name = name;\n this.addCommand(command);\n }, this);\n };\n MultiHashHandler.prototype.removeCommands = function (commands) {\n Object.keys(commands).forEach(function (name) {\n this.removeCommand(commands[name]);\n }, this);\n };\n MultiHashHandler.prototype.bindKeys = function (keyList) {\n Object.keys(keyList).forEach(function (key) {\n this.bindKey(key, keyList[key]);\n }, this);\n };\n MultiHashHandler.prototype._buildKeyHash = function (command) {\n this.bindKey(command.bindKey, command);\n };\n MultiHashHandler.prototype.parseKeys = function (keys) {\n var parts = keys.toLowerCase().split(/[\\-\\+]([\\-\\+])?/).filter(function (x) { return x; });\n var key = parts.pop();\n var keyCode = keyUtil[key];\n if (keyUtil.FUNCTION_KEYS[keyCode])\n key = keyUtil.FUNCTION_KEYS[keyCode].toLowerCase();\n else if (!parts.length)\n return { key: key, hashId: -1 };\n else if (parts.length == 1 && parts[0] == \"shift\")\n return { key: key.toUpperCase(), hashId: -1 };\n var hashId = 0;\n for (var i = parts.length; i--;) {\n var modifier = keyUtil.KEY_MODS[parts[i]];\n if (modifier == null) {\n if (typeof console != \"undefined\")\n console.error(\"invalid modifier \" + parts[i] + \" in \" + keys);\n return false;\n }\n hashId |= modifier;\n }\n return { key: key, hashId: hashId };\n };\n MultiHashHandler.prototype.findKeyCommand = function (hashId, keyString) {\n var key = KEY_MODS[hashId] + keyString;\n return this.commandKeyBinding[key];\n };\n MultiHashHandler.prototype.handleKeyboard = function (data, hashId, keyString, keyCode) {\n if (keyCode < 0)\n return;\n var key = KEY_MODS[hashId] + keyString;\n var command = this.commandKeyBinding[key];\n if (data.$keyChain) {\n data.$keyChain += \" \" + key;\n command = this.commandKeyBinding[data.$keyChain] || command;\n }\n if (command) {\n if (command == \"chainKeys\" || command[command.length - 1] == \"chainKeys\") {\n data.$keyChain = data.$keyChain || key;\n return { command: \"null\" };\n }\n }\n if (data.$keyChain) {\n if ((!hashId || hashId == 4) && keyString.length == 1)\n data.$keyChain = data.$keyChain.slice(0, -key.length - 1); // wait for input\n else if (hashId == -1 || keyCode > 0)\n data.$keyChain = \"\"; // reset keyChain\n }\n return { command: command };\n };\n MultiHashHandler.prototype.getStatusText = function (editor, data) {\n return data.$keyChain || \"\";\n };\n return MultiHashHandler;\n}());\nfunction getPosition(command) {\n return typeof command == \"object\" && command.bindKey\n && command.bindKey.position\n || (command.isDefault ? -100 : 0);\n}\nvar HashHandler = /** @class */ (function (_super) {\n __extends(HashHandler, _super);\n function HashHandler(config, platform) {\n var _this = _super.call(this, config, platform) || this;\n _this.$singleCommand = true;\n return _this;\n }\n return HashHandler;\n}(MultiHashHandler));\nHashHandler.call = function (thisArg, config, platform) {\n MultiHashHandler.prototype.$init.call(thisArg, config, platform, true);\n};\nMultiHashHandler.call = function (thisArg, config, platform) {\n MultiHashHandler.prototype.$init.call(thisArg, config, platform, false);\n};\nexports.HashHandler = HashHandler;\nexports.MultiHashHandler = MultiHashHandler;\n\n});\n\nace.define(\"ace/commands/command_manager\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/keyboard/hash_handler\",\"ace/lib/event_emitter\"], function(require, exports, module){\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar oop = require(\"../lib/oop\");\nvar MultiHashHandler = require(\"../keyboard/hash_handler\").MultiHashHandler;\nvar EventEmitter = require(\"../lib/event_emitter\").EventEmitter;\nvar CommandManager = /** @class */ (function (_super) {\n __extends(CommandManager, _super);\n function CommandManager(platform, commands) {\n var _this = _super.call(this, commands, platform) || this;\n _this.byName = _this.commands;\n _this.setDefaultHandler(\"exec\", function (e) {\n if (!e.args) {\n return e.command.exec(e.editor, {}, e.event, true);\n }\n return e.command.exec(e.editor, e.args, e.event, false);\n });\n return _this;\n }\n CommandManager.prototype.exec = function (command, editor, args) {\n if (Array.isArray(command)) {\n for (var i = command.length; i--;) {\n if (this.exec(command[i], editor, args))\n return true;\n }\n return false;\n }\n if (typeof command === \"string\")\n command = this.commands[command];\n if (!command)\n return false;\n if (editor && editor.$readOnly && !command.readOnly)\n return false;\n if (this.$checkCommandState != false && command.isAvailable && !command.isAvailable(editor))\n return false;\n var e = { editor: editor, command: command, args: args };\n e.returnValue = this._emit(\"exec\", e);\n this._signal(\"afterExec\", e);\n return e.returnValue === false ? false : true;\n };\n CommandManager.prototype.toggleRecording = function (editor) {\n if (this.$inReplay)\n return;\n editor && editor._emit(\"changeStatus\");\n if (this.recording) {\n this.macro.pop();\n this.off(\"exec\", this.$addCommandToMacro);\n if (!this.macro.length)\n this.macro = this.oldMacro;\n return this.recording = false;\n }\n if (!this.$addCommandToMacro) {\n this.$addCommandToMacro = function (e) {\n this.macro.push([e.command, e.args]);\n }.bind(this);\n }\n this.oldMacro = this.macro;\n this.macro = [];\n this.on(\"exec\", this.$addCommandToMacro);\n return this.recording = true;\n };\n CommandManager.prototype.replay = function (editor) {\n if (this.$inReplay || !this.macro)\n return;\n if (this.recording)\n return this.toggleRecording(editor);\n try {\n this.$inReplay = true;\n this.macro.forEach(function (x) {\n if (typeof x == \"string\")\n this.exec(x, editor);\n else\n this.exec(x[0], editor, x[1]);\n }, this);\n }\n finally {\n this.$inReplay = false;\n }\n };\n CommandManager.prototype.trimMacro = function (m) {\n return m.map(function (x) {\n if (typeof x[0] != \"string\")\n x[0] = x[0].name;\n if (!x[1])\n x = x[0];\n return x;\n });\n };\n return CommandManager;\n}(MultiHashHandler));\noop.implement(CommandManager.prototype, EventEmitter);\nexports.CommandManager = CommandManager;\n\n});\n\nace.define(\"ace/commands/default_commands\",[\"require\",\"exports\",\"module\",\"ace/lib/lang\",\"ace/config\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar lang = require(\"../lib/lang\");\nvar config = require(\"../config\");\nvar Range = require(\"../range\").Range;\nfunction bindKey(win, mac) {\n return { win: win, mac: mac };\n}\nexports.commands = [{\n name: \"showSettingsMenu\",\n description: \"Show settings menu\",\n bindKey: bindKey(\"Ctrl-,\", \"Command-,\"),\n exec: function (editor) {\n config.loadModule(\"ace/ext/settings_menu\", function (module) {\n module.init(editor);\n editor.showSettingsMenu();\n });\n },\n readOnly: true\n }, {\n name: \"goToNextError\",\n description: \"Go to next error\",\n bindKey: bindKey(\"Alt-E\", \"F4\"),\n exec: function (editor) {\n config.loadModule(\"ace/ext/error_marker\", function (module) {\n module.showErrorMarker(editor, 1);\n });\n },\n scrollIntoView: \"animate\",\n readOnly: true\n }, {\n name: \"goToPreviousError\",\n description: \"Go to previous error\",\n bindKey: bindKey(\"Alt-Shift-E\", \"Shift-F4\"),\n exec: function (editor) {\n config.loadModule(\"ace/ext/error_marker\", function (module) {\n module.showErrorMarker(editor, -1);\n });\n },\n scrollIntoView: \"animate\",\n readOnly: true\n }, {\n name: \"selectall\",\n description: \"Select all\",\n bindKey: bindKey(\"Ctrl-A\", \"Command-A\"),\n exec: function (editor) { editor.selectAll(); },\n readOnly: true\n }, {\n name: \"centerselection\",\n description: \"Center selection\",\n bindKey: bindKey(null, \"Ctrl-L\"),\n exec: function (editor) { editor.centerSelection(); },\n readOnly: true\n }, {\n name: \"gotoline\",\n description: \"Go to line...\",\n bindKey: bindKey(\"Ctrl-L\", \"Command-L\"),\n exec: function (editor, line) {\n if (typeof line === \"number\" && !isNaN(line))\n editor.gotoLine(line);\n editor.prompt({ $type: \"gotoLine\" });\n },\n readOnly: true\n }, {\n name: \"fold\",\n bindKey: bindKey(\"Alt-L|Ctrl-F1\", \"Command-Alt-L|Command-F1\"),\n exec: function (editor) { editor.session.toggleFold(false); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"center\",\n readOnly: true\n }, {\n name: \"unfold\",\n bindKey: bindKey(\"Alt-Shift-L|Ctrl-Shift-F1\", \"Command-Alt-Shift-L|Command-Shift-F1\"),\n exec: function (editor) { editor.session.toggleFold(true); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"center\",\n readOnly: true\n }, {\n name: \"toggleFoldWidget\",\n description: \"Toggle fold widget\",\n bindKey: bindKey(\"F2\", \"F2\"),\n exec: function (editor) { editor.session.toggleFoldWidget(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"center\",\n readOnly: true\n }, {\n name: \"toggleParentFoldWidget\",\n description: \"Toggle parent fold widget\",\n bindKey: bindKey(\"Alt-F2\", \"Alt-F2\"),\n exec: function (editor) { editor.session.toggleFoldWidget(true); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"center\",\n readOnly: true\n }, {\n name: \"foldall\",\n description: \"Fold all\",\n bindKey: bindKey(null, \"Ctrl-Command-Option-0\"),\n exec: function (editor) { editor.session.foldAll(); },\n scrollIntoView: \"center\",\n readOnly: true\n }, {\n name: \"foldAllComments\",\n description: \"Fold all comments\",\n bindKey: bindKey(null, \"Ctrl-Command-Option-0\"),\n exec: function (editor) { editor.session.foldAllComments(); },\n scrollIntoView: \"center\",\n readOnly: true\n }, {\n name: \"foldOther\",\n description: \"Fold other\",\n bindKey: bindKey(\"Alt-0\", \"Command-Option-0\"),\n exec: function (editor) {\n editor.session.foldAll();\n editor.session.unfold(editor.selection.getAllRanges());\n },\n scrollIntoView: \"center\",\n readOnly: true\n }, {\n name: \"unfoldall\",\n description: \"Unfold all\",\n bindKey: bindKey(\"Alt-Shift-0\", \"Command-Option-Shift-0\"),\n exec: function (editor) { editor.session.unfold(); },\n scrollIntoView: \"center\",\n readOnly: true\n }, {\n name: \"findnext\",\n description: \"Find next\",\n bindKey: bindKey(\"Ctrl-K\", \"Command-G\"),\n exec: function (editor) { editor.findNext(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"center\",\n readOnly: true\n }, {\n name: \"findprevious\",\n description: \"Find previous\",\n bindKey: bindKey(\"Ctrl-Shift-K\", \"Command-Shift-G\"),\n exec: function (editor) { editor.findPrevious(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"center\",\n readOnly: true\n }, {\n name: \"selectOrFindNext\",\n description: \"Select or find next\",\n bindKey: bindKey(\"Alt-K\", \"Ctrl-G\"),\n exec: function (editor) {\n if (editor.selection.isEmpty())\n editor.selection.selectWord();\n else\n editor.findNext();\n },\n readOnly: true\n }, {\n name: \"selectOrFindPrevious\",\n description: \"Select or find previous\",\n bindKey: bindKey(\"Alt-Shift-K\", \"Ctrl-Shift-G\"),\n exec: function (editor) {\n if (editor.selection.isEmpty())\n editor.selection.selectWord();\n else\n editor.findPrevious();\n },\n readOnly: true\n }, {\n name: \"find\",\n description: \"Find\",\n bindKey: bindKey(\"Ctrl-F\", \"Command-F\"),\n exec: function (editor) {\n config.loadModule(\"ace/ext/searchbox\", function (e) { e.Search(editor); });\n },\n readOnly: true\n }, {\n name: \"overwrite\",\n description: \"Overwrite\",\n bindKey: \"Insert\",\n exec: function (editor) { editor.toggleOverwrite(); },\n readOnly: true\n }, {\n name: \"selecttostart\",\n description: \"Select to start\",\n bindKey: bindKey(\"Ctrl-Shift-Home\", \"Command-Shift-Home|Command-Shift-Up\"),\n exec: function (editor) { editor.getSelection().selectFileStart(); },\n multiSelectAction: \"forEach\",\n readOnly: true,\n scrollIntoView: \"animate\",\n aceCommandGroup: \"fileJump\"\n }, {\n name: \"gotostart\",\n description: \"Go to start\",\n bindKey: bindKey(\"Ctrl-Home\", \"Command-Home|Command-Up\"),\n exec: function (editor) { editor.navigateFileStart(); },\n multiSelectAction: \"forEach\",\n readOnly: true,\n scrollIntoView: \"animate\",\n aceCommandGroup: \"fileJump\"\n }, {\n name: \"selectup\",\n description: \"Select up\",\n bindKey: bindKey(\"Shift-Up\", \"Shift-Up|Ctrl-Shift-P\"),\n exec: function (editor) { editor.getSelection().selectUp(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"golineup\",\n description: \"Go line up\",\n bindKey: bindKey(\"Up\", \"Up|Ctrl-P\"),\n exec: function (editor, args) { editor.navigateUp(args.times); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"selecttoend\",\n description: \"Select to end\",\n bindKey: bindKey(\"Ctrl-Shift-End\", \"Command-Shift-End|Command-Shift-Down\"),\n exec: function (editor) { editor.getSelection().selectFileEnd(); },\n multiSelectAction: \"forEach\",\n readOnly: true,\n scrollIntoView: \"animate\",\n aceCommandGroup: \"fileJump\"\n }, {\n name: \"gotoend\",\n description: \"Go to end\",\n bindKey: bindKey(\"Ctrl-End\", \"Command-End|Command-Down\"),\n exec: function (editor) { editor.navigateFileEnd(); },\n multiSelectAction: \"forEach\",\n readOnly: true,\n scrollIntoView: \"animate\",\n aceCommandGroup: \"fileJump\"\n }, {\n name: \"selectdown\",\n description: \"Select down\",\n bindKey: bindKey(\"Shift-Down\", \"Shift-Down|Ctrl-Shift-N\"),\n exec: function (editor) { editor.getSelection().selectDown(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"golinedown\",\n description: \"Go line down\",\n bindKey: bindKey(\"Down\", \"Down|Ctrl-N\"),\n exec: function (editor, args) { editor.navigateDown(args.times); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"selectwordleft\",\n description: \"Select word left\",\n bindKey: bindKey(\"Ctrl-Shift-Left\", \"Option-Shift-Left\"),\n exec: function (editor) { editor.getSelection().selectWordLeft(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"gotowordleft\",\n description: \"Go to word left\",\n bindKey: bindKey(\"Ctrl-Left\", \"Option-Left\"),\n exec: function (editor) { editor.navigateWordLeft(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"selecttolinestart\",\n description: \"Select to line start\",\n bindKey: bindKey(\"Alt-Shift-Left\", \"Command-Shift-Left|Ctrl-Shift-A\"),\n exec: function (editor) { editor.getSelection().selectLineStart(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"gotolinestart\",\n description: \"Go to line start\",\n bindKey: bindKey(\"Alt-Left|Home\", \"Command-Left|Home|Ctrl-A\"),\n exec: function (editor) { editor.navigateLineStart(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"selectleft\",\n description: \"Select left\",\n bindKey: bindKey(\"Shift-Left\", \"Shift-Left|Ctrl-Shift-B\"),\n exec: function (editor) { editor.getSelection().selectLeft(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"gotoleft\",\n description: \"Go to left\",\n bindKey: bindKey(\"Left\", \"Left|Ctrl-B\"),\n exec: function (editor, args) { editor.navigateLeft(args.times); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"selectwordright\",\n description: \"Select word right\",\n bindKey: bindKey(\"Ctrl-Shift-Right\", \"Option-Shift-Right\"),\n exec: function (editor) { editor.getSelection().selectWordRight(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"gotowordright\",\n description: \"Go to word right\",\n bindKey: bindKey(\"Ctrl-Right\", \"Option-Right\"),\n exec: function (editor) { editor.navigateWordRight(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"selecttolineend\",\n description: \"Select to line end\",\n bindKey: bindKey(\"Alt-Shift-Right\", \"Command-Shift-Right|Shift-End|Ctrl-Shift-E\"),\n exec: function (editor) { editor.getSelection().selectLineEnd(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"gotolineend\",\n description: \"Go to line end\",\n bindKey: bindKey(\"Alt-Right|End\", \"Command-Right|End|Ctrl-E\"),\n exec: function (editor) { editor.navigateLineEnd(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"selectright\",\n description: \"Select right\",\n bindKey: bindKey(\"Shift-Right\", \"Shift-Right\"),\n exec: function (editor) { editor.getSelection().selectRight(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"gotoright\",\n description: \"Go to right\",\n bindKey: bindKey(\"Right\", \"Right|Ctrl-F\"),\n exec: function (editor, args) { editor.navigateRight(args.times); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"selectpagedown\",\n description: \"Select page down\",\n bindKey: \"Shift-PageDown\",\n exec: function (editor) { editor.selectPageDown(); },\n readOnly: true\n }, {\n name: \"pagedown\",\n description: \"Page down\",\n bindKey: bindKey(null, \"Option-PageDown\"),\n exec: function (editor) { editor.scrollPageDown(); },\n readOnly: true\n }, {\n name: \"gotopagedown\",\n description: \"Go to page down\",\n bindKey: bindKey(\"PageDown\", \"PageDown|Ctrl-V\"),\n exec: function (editor) { editor.gotoPageDown(); },\n readOnly: true\n }, {\n name: \"selectpageup\",\n description: \"Select page up\",\n bindKey: \"Shift-PageUp\",\n exec: function (editor) { editor.selectPageUp(); },\n readOnly: true\n }, {\n name: \"pageup\",\n description: \"Page up\",\n bindKey: bindKey(null, \"Option-PageUp\"),\n exec: function (editor) { editor.scrollPageUp(); },\n readOnly: true\n }, {\n name: \"gotopageup\",\n description: \"Go to page up\",\n bindKey: \"PageUp\",\n exec: function (editor) { editor.gotoPageUp(); },\n readOnly: true\n }, {\n name: \"scrollup\",\n description: \"Scroll up\",\n bindKey: bindKey(\"Ctrl-Up\", null),\n exec: function (e) { e.renderer.scrollBy(0, -2 * e.renderer.layerConfig.lineHeight); },\n readOnly: true\n }, {\n name: \"scrolldown\",\n description: \"Scroll down\",\n bindKey: bindKey(\"Ctrl-Down\", null),\n exec: function (e) { e.renderer.scrollBy(0, 2 * e.renderer.layerConfig.lineHeight); },\n readOnly: true\n }, {\n name: \"selectlinestart\",\n description: \"Select line start\",\n bindKey: \"Shift-Home\",\n exec: function (editor) { editor.getSelection().selectLineStart(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"selectlineend\",\n description: \"Select line end\",\n bindKey: \"Shift-End\",\n exec: function (editor) { editor.getSelection().selectLineEnd(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"togglerecording\",\n description: \"Toggle recording\",\n bindKey: bindKey(\"Ctrl-Alt-E\", \"Command-Option-E\"),\n exec: function (editor) { editor.commands.toggleRecording(editor); },\n readOnly: true\n }, {\n name: \"replaymacro\",\n description: \"Replay macro\",\n bindKey: bindKey(\"Ctrl-Shift-E\", \"Command-Shift-E\"),\n exec: function (editor) { editor.commands.replay(editor); },\n readOnly: true\n }, {\n name: \"jumptomatching\",\n description: \"Jump to matching\",\n bindKey: bindKey(\"Ctrl-\\\\|Ctrl-P\", \"Command-\\\\\"),\n exec: function (editor) { editor.jumpToMatching(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"animate\",\n readOnly: true\n }, {\n name: \"selecttomatching\",\n description: \"Select to matching\",\n bindKey: bindKey(\"Ctrl-Shift-\\\\|Ctrl-Shift-P\", \"Command-Shift-\\\\\"),\n exec: function (editor) { editor.jumpToMatching(true); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"animate\",\n readOnly: true\n }, {\n name: \"expandToMatching\",\n description: \"Expand to matching\",\n bindKey: bindKey(\"Ctrl-Shift-M\", \"Ctrl-Shift-M\"),\n exec: function (editor) { editor.jumpToMatching(true, true); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"animate\",\n readOnly: true\n }, {\n name: \"passKeysToBrowser\",\n description: \"Pass keys to browser\",\n bindKey: bindKey(null, null),\n exec: function () { },\n passEvent: true,\n readOnly: true\n }, {\n name: \"copy\",\n description: \"Copy\",\n exec: function (editor) {\n },\n readOnly: true\n },\n {\n name: \"cut\",\n description: \"Cut\",\n exec: function (editor) {\n var cutLine = editor.$copyWithEmptySelection && editor.selection.isEmpty();\n var range = cutLine ? editor.selection.getLineRange() : editor.selection.getRange();\n editor._emit(\"cut\", range);\n if (!range.isEmpty())\n editor.session.remove(range);\n editor.clearSelection();\n },\n scrollIntoView: \"cursor\",\n multiSelectAction: \"forEach\"\n }, {\n name: \"paste\",\n description: \"Paste\",\n exec: function (editor, args) {\n editor.$handlePaste(args);\n },\n scrollIntoView: \"cursor\"\n }, {\n name: \"removeline\",\n description: \"Remove line\",\n bindKey: bindKey(\"Ctrl-D\", \"Command-D\"),\n exec: function (editor) { editor.removeLines(); },\n scrollIntoView: \"cursor\",\n multiSelectAction: \"forEachLine\"\n }, {\n name: \"duplicateSelection\",\n description: \"Duplicate selection\",\n bindKey: bindKey(\"Ctrl-Shift-D\", \"Command-Shift-D\"),\n exec: function (editor) { editor.duplicateSelection(); },\n scrollIntoView: \"cursor\",\n multiSelectAction: \"forEach\"\n }, {\n name: \"sortlines\",\n description: \"Sort lines\",\n bindKey: bindKey(\"Ctrl-Alt-S\", \"Command-Alt-S\"),\n exec: function (editor) { editor.sortLines(); },\n scrollIntoView: \"selection\",\n multiSelectAction: \"forEachLine\"\n }, {\n name: \"togglecomment\",\n description: \"Toggle comment\",\n bindKey: bindKey(\"Ctrl-/\", \"Command-/\"),\n exec: function (editor) { editor.toggleCommentLines(); },\n multiSelectAction: \"forEachLine\",\n scrollIntoView: \"selectionPart\"\n }, {\n name: \"toggleBlockComment\",\n description: \"Toggle block comment\",\n bindKey: bindKey(\"Ctrl-Shift-/\", \"Command-Shift-/\"),\n exec: function (editor) { editor.toggleBlockComment(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"selectionPart\"\n }, {\n name: \"modifyNumberUp\",\n description: \"Modify number up\",\n bindKey: bindKey(\"Ctrl-Shift-Up\", \"Alt-Shift-Up\"),\n exec: function (editor) { editor.modifyNumber(1); },\n scrollIntoView: \"cursor\",\n multiSelectAction: \"forEach\"\n }, {\n name: \"modifyNumberDown\",\n description: \"Modify number down\",\n bindKey: bindKey(\"Ctrl-Shift-Down\", \"Alt-Shift-Down\"),\n exec: function (editor) { editor.modifyNumber(-1); },\n scrollIntoView: \"cursor\",\n multiSelectAction: \"forEach\"\n }, {\n name: \"replace\",\n description: \"Replace\",\n bindKey: bindKey(\"Ctrl-H\", \"Command-Option-F\"),\n exec: function (editor) {\n config.loadModule(\"ace/ext/searchbox\", function (e) { e.Search(editor, true); });\n }\n }, {\n name: \"undo\",\n description: \"Undo\",\n bindKey: bindKey(\"Ctrl-Z\", \"Command-Z\"),\n exec: function (editor) { editor.undo(); }\n }, {\n name: \"redo\",\n description: \"Redo\",\n bindKey: bindKey(\"Ctrl-Shift-Z|Ctrl-Y\", \"Command-Shift-Z|Command-Y\"),\n exec: function (editor) { editor.redo(); }\n }, {\n name: \"copylinesup\",\n description: \"Copy lines up\",\n bindKey: bindKey(\"Alt-Shift-Up\", \"Command-Option-Up\"),\n exec: function (editor) { editor.copyLinesUp(); },\n scrollIntoView: \"cursor\"\n }, {\n name: \"movelinesup\",\n description: \"Move lines up\",\n bindKey: bindKey(\"Alt-Up\", \"Option-Up\"),\n exec: function (editor) { editor.moveLinesUp(); },\n scrollIntoView: \"cursor\"\n }, {\n name: \"copylinesdown\",\n description: \"Copy lines down\",\n bindKey: bindKey(\"Alt-Shift-Down\", \"Command-Option-Down\"),\n exec: function (editor) { editor.copyLinesDown(); },\n scrollIntoView: \"cursor\"\n }, {\n name: \"movelinesdown\",\n description: \"Move lines down\",\n bindKey: bindKey(\"Alt-Down\", \"Option-Down\"),\n exec: function (editor) { editor.moveLinesDown(); },\n scrollIntoView: \"cursor\"\n }, {\n name: \"del\",\n description: \"Delete\",\n bindKey: bindKey(\"Delete\", \"Delete|Ctrl-D|Shift-Delete\"),\n exec: function (editor) { editor.remove(\"right\"); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"backspace\",\n description: \"Backspace\",\n bindKey: bindKey(\"Shift-Backspace|Backspace\", \"Ctrl-Backspace|Shift-Backspace|Backspace|Ctrl-H\"),\n exec: function (editor) { editor.remove(\"left\"); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"cut_or_delete\",\n description: \"Cut or delete\",\n bindKey: bindKey(\"Shift-Delete\", null),\n exec: function (editor) {\n if (editor.selection.isEmpty()) {\n editor.remove(\"left\");\n }\n else {\n return false;\n }\n },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"removetolinestart\",\n description: \"Remove to line start\",\n bindKey: bindKey(\"Alt-Backspace\", \"Command-Backspace\"),\n exec: function (editor) { editor.removeToLineStart(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"removetolineend\",\n description: \"Remove to line end\",\n bindKey: bindKey(\"Alt-Delete\", \"Ctrl-K|Command-Delete\"),\n exec: function (editor) { editor.removeToLineEnd(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"removetolinestarthard\",\n description: \"Remove to line start hard\",\n bindKey: bindKey(\"Ctrl-Shift-Backspace\", null),\n exec: function (editor) {\n var range = editor.selection.getRange();\n range.start.column = 0;\n editor.session.remove(range);\n },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"removetolineendhard\",\n description: \"Remove to line end hard\",\n bindKey: bindKey(\"Ctrl-Shift-Delete\", null),\n exec: function (editor) {\n var range = editor.selection.getRange();\n range.end.column = Number.MAX_VALUE;\n editor.session.remove(range);\n },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"removewordleft\",\n description: \"Remove word left\",\n bindKey: bindKey(\"Ctrl-Backspace\", \"Alt-Backspace|Ctrl-Alt-Backspace\"),\n exec: function (editor) { editor.removeWordLeft(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"removewordright\",\n description: \"Remove word right\",\n bindKey: bindKey(\"Ctrl-Delete\", \"Alt-Delete\"),\n exec: function (editor) { editor.removeWordRight(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"outdent\",\n description: \"Outdent\",\n bindKey: bindKey(\"Shift-Tab\", \"Shift-Tab\"),\n exec: function (editor) { editor.blockOutdent(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"selectionPart\"\n }, {\n name: \"indent\",\n description: \"Indent\",\n bindKey: bindKey(\"Tab\", \"Tab\"),\n exec: function (editor) { editor.indent(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"selectionPart\"\n }, {\n name: \"blockoutdent\",\n description: \"Block outdent\",\n bindKey: bindKey(\"Ctrl-[\", \"Ctrl-[\"),\n exec: function (editor) { editor.blockOutdent(); },\n multiSelectAction: \"forEachLine\",\n scrollIntoView: \"selectionPart\"\n }, {\n name: \"blockindent\",\n description: \"Block indent\",\n bindKey: bindKey(\"Ctrl-]\", \"Ctrl-]\"),\n exec: function (editor) { editor.blockIndent(); },\n multiSelectAction: \"forEachLine\",\n scrollIntoView: \"selectionPart\"\n }, {\n name: \"insertstring\",\n description: \"Insert string\",\n exec: function (editor, str) { editor.insert(str); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"inserttext\",\n description: \"Insert text\",\n exec: function (editor, args) {\n editor.insert(lang.stringRepeat(args.text || \"\", args.times || 1));\n },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"splitline\",\n description: \"Split line\",\n bindKey: bindKey(null, \"Ctrl-O\"),\n exec: function (editor) { editor.splitLine(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"transposeletters\",\n description: \"Transpose letters\",\n bindKey: bindKey(\"Alt-Shift-X\", \"Ctrl-T\"),\n exec: function (editor) { editor.transposeLetters(); },\n multiSelectAction: function (editor) { editor.transposeSelections(1); },\n scrollIntoView: \"cursor\"\n }, {\n name: \"touppercase\",\n description: \"To uppercase\",\n bindKey: bindKey(\"Ctrl-U\", \"Ctrl-U\"),\n exec: function (editor) { editor.toUpperCase(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"tolowercase\",\n description: \"To lowercase\",\n bindKey: bindKey(\"Ctrl-Shift-U\", \"Ctrl-Shift-U\"),\n exec: function (editor) { editor.toLowerCase(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"autoindent\",\n description: \"Auto Indent\",\n bindKey: bindKey(null, null),\n exec: function (editor) { editor.autoIndent(); },\n multiSelectAction: \"forEachLine\",\n scrollIntoView: \"animate\"\n }, {\n name: \"expandtoline\",\n description: \"Expand to line\",\n bindKey: bindKey(\"Ctrl-Shift-L\", \"Command-Shift-L\"),\n exec: function (editor) {\n var range = editor.selection.getRange();\n range.start.column = range.end.column = 0;\n range.end.row++;\n editor.selection.setRange(range, false);\n },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"openlink\",\n bindKey: bindKey(\"Ctrl+F3\", \"F3\"),\n exec: function (editor) { editor.openLink(); }\n }, {\n name: \"joinlines\",\n description: \"Join lines\",\n bindKey: bindKey(null, null),\n exec: function (editor) {\n var isBackwards = editor.selection.isBackwards();\n var selectionStart = isBackwards ? editor.selection.getSelectionLead() : editor.selection.getSelectionAnchor();\n var selectionEnd = isBackwards ? editor.selection.getSelectionAnchor() : editor.selection.getSelectionLead();\n var firstLineEndCol = editor.session.doc.getLine(selectionStart.row).length;\n var selectedText = editor.session.doc.getTextRange(editor.selection.getRange());\n var selectedCount = selectedText.replace(/\\n\\s*/, \" \").length;\n var insertLine = editor.session.doc.getLine(selectionStart.row);\n for (var i = selectionStart.row + 1; i <= selectionEnd.row + 1; i++) {\n var curLine = lang.stringTrimLeft(lang.stringTrimRight(editor.session.doc.getLine(i)));\n if (curLine.length !== 0) {\n curLine = \" \" + curLine;\n }\n insertLine += curLine;\n }\n if (selectionEnd.row + 1 < (editor.session.doc.getLength() - 1)) {\n insertLine += editor.session.doc.getNewLineCharacter();\n }\n editor.clearSelection();\n editor.session.doc.replace(new Range(selectionStart.row, 0, selectionEnd.row + 2, 0), insertLine);\n if (selectedCount > 0) {\n editor.selection.moveCursorTo(selectionStart.row, selectionStart.column);\n editor.selection.selectTo(selectionStart.row, selectionStart.column + selectedCount);\n }\n else {\n firstLineEndCol = editor.session.doc.getLine(selectionStart.row).length > firstLineEndCol ? (firstLineEndCol + 1) : firstLineEndCol;\n editor.selection.moveCursorTo(selectionStart.row, firstLineEndCol);\n }\n },\n multiSelectAction: \"forEach\",\n readOnly: true\n }, {\n name: \"invertSelection\",\n description: \"Invert selection\",\n bindKey: bindKey(null, null),\n exec: function (editor) {\n var endRow = editor.session.doc.getLength() - 1;\n var endCol = editor.session.doc.getLine(endRow).length;\n var ranges = editor.selection.rangeList.ranges;\n var newRanges = [];\n if (ranges.length < 1) {\n ranges = [editor.selection.getRange()];\n }\n for (var i = 0; i < ranges.length; i++) {\n if (i == (ranges.length - 1)) {\n if (!(ranges[i].end.row === endRow && ranges[i].end.column === endCol)) {\n newRanges.push(new Range(ranges[i].end.row, ranges[i].end.column, endRow, endCol));\n }\n }\n if (i === 0) {\n if (!(ranges[i].start.row === 0 && ranges[i].start.column === 0)) {\n newRanges.push(new Range(0, 0, ranges[i].start.row, ranges[i].start.column));\n }\n }\n else {\n newRanges.push(new Range(ranges[i - 1].end.row, ranges[i - 1].end.column, ranges[i].start.row, ranges[i].start.column));\n }\n }\n editor.exitMultiSelectMode();\n editor.clearSelection();\n for (var i = 0; i < newRanges.length; i++) {\n editor.selection.addRange(newRanges[i], false);\n }\n },\n readOnly: true,\n scrollIntoView: \"none\"\n }, {\n name: \"addLineAfter\",\n description: \"Add new line after the current line\",\n exec: function (editor) {\n editor.selection.clearSelection();\n editor.navigateLineEnd();\n editor.insert(\"\\n\");\n },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"addLineBefore\",\n description: \"Add new line before the current line\",\n exec: function (editor) {\n editor.selection.clearSelection();\n var cursor = editor.getCursorPosition();\n editor.selection.moveTo(cursor.row - 1, Number.MAX_VALUE);\n editor.insert(\"\\n\");\n if (cursor.row === 0)\n editor.navigateUp();\n },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"openCommandPallete\",\n exec: function (editor) {\n console.warn(\"This is an obsolete command. Please use `openCommandPalette` instead.\");\n editor.prompt({ $type: \"commands\" });\n },\n readOnly: true\n }, {\n name: \"openCommandPalette\",\n description: \"Open command palette\",\n bindKey: bindKey(\"F1\", \"F1\"),\n exec: function (editor) {\n editor.prompt({ $type: \"commands\" });\n },\n readOnly: true\n }, {\n name: \"modeSelect\",\n description: \"Change language mode...\",\n bindKey: bindKey(null, null),\n exec: function (editor) {\n editor.prompt({ $type: \"modes\" });\n },\n readOnly: true\n }];\nfor (var i = 1; i < 9; i++) {\n exports.commands.push({\n name: \"foldToLevel\" + i,\n description: \"Fold To Level \" + i,\n level: i,\n exec: function (editor) { editor.session.foldToLevel(this.level); },\n scrollIntoView: \"center\",\n readOnly: true\n });\n}\n\n});\n\nace.define(\"ace/line_widgets\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"], function(require, exports, module){\"use strict\";\nvar dom = require(\"./lib/dom\");\nvar LineWidgets = /** @class */ (function () {\n function LineWidgets(session) {\n this.session = session;\n this.session.widgetManager = this;\n this.session.getRowLength = this.getRowLength;\n this.session.$getWidgetScreenLength = this.$getWidgetScreenLength;\n this.updateOnChange = this.updateOnChange.bind(this);\n this.renderWidgets = this.renderWidgets.bind(this);\n this.measureWidgets = this.measureWidgets.bind(this);\n this.session._changedWidgets = [];\n this.$onChangeEditor = this.$onChangeEditor.bind(this);\n this.session.on(\"change\", this.updateOnChange);\n this.session.on(\"changeFold\", this.updateOnFold);\n this.session.on(\"changeEditor\", this.$onChangeEditor);\n }\n LineWidgets.prototype.getRowLength = function (row) {\n var h;\n if (this.lineWidgets)\n h = this.lineWidgets[row] && this.lineWidgets[row].rowCount || 0;\n else\n h = 0;\n if (!this.$useWrapMode || !this.$wrapData[row]) {\n return 1 + h;\n }\n else {\n return this.$wrapData[row].length + 1 + h;\n }\n };\n LineWidgets.prototype.$getWidgetScreenLength = function () {\n var screenRows = 0;\n this.lineWidgets.forEach(function (w) {\n if (w && w.rowCount && !w.hidden)\n screenRows += w.rowCount;\n });\n return screenRows;\n };\n LineWidgets.prototype.$onChangeEditor = function (e) {\n this.attach(e.editor);\n };\n LineWidgets.prototype.attach = function (editor) {\n if (editor && editor.widgetManager && editor.widgetManager != this)\n editor.widgetManager.detach();\n if (this.editor == editor)\n return;\n this.detach();\n this.editor = editor;\n if (editor) {\n editor.widgetManager = this;\n editor.renderer.on(\"beforeRender\", this.measureWidgets);\n editor.renderer.on(\"afterRender\", this.renderWidgets);\n }\n };\n LineWidgets.prototype.detach = function (e) {\n var editor = this.editor;\n if (!editor)\n return;\n this.editor = null;\n editor.widgetManager = null;\n editor.renderer.off(\"beforeRender\", this.measureWidgets);\n editor.renderer.off(\"afterRender\", this.renderWidgets);\n var lineWidgets = this.session.lineWidgets;\n lineWidgets && lineWidgets.forEach(function (w) {\n if (w && w.el && w.el.parentNode) {\n w._inDocument = false;\n w.el.parentNode.removeChild(w.el);\n }\n });\n };\n LineWidgets.prototype.updateOnFold = function (e, session) {\n var lineWidgets = session.lineWidgets;\n if (!lineWidgets || !e.action)\n return;\n var fold = e.data;\n var start = fold.start.row;\n var end = fold.end.row;\n var hide = e.action == \"add\";\n for (var i = start + 1; i < end; i++) {\n if (lineWidgets[i])\n lineWidgets[i].hidden = hide;\n }\n if (lineWidgets[end]) {\n if (hide) {\n if (!lineWidgets[start])\n lineWidgets[start] = lineWidgets[end];\n else\n lineWidgets[end].hidden = hide;\n }\n else {\n if (lineWidgets[start] == lineWidgets[end])\n lineWidgets[start] = undefined;\n lineWidgets[end].hidden = hide;\n }\n }\n };\n LineWidgets.prototype.updateOnChange = function (delta) {\n var lineWidgets = this.session.lineWidgets;\n if (!lineWidgets)\n return;\n var startRow = delta.start.row;\n var len = delta.end.row - startRow;\n if (len === 0) {\n }\n else if (delta.action == \"remove\") {\n var removed = lineWidgets.splice(startRow + 1, len);\n if (!lineWidgets[startRow] && removed[removed.length - 1]) {\n lineWidgets[startRow] = removed.pop();\n }\n removed.forEach(function (w) {\n w && this.removeLineWidget(w);\n }, this);\n this.$updateRows();\n }\n else {\n var args = new Array(len);\n if (lineWidgets[startRow] && lineWidgets[startRow].column != null) {\n if (delta.start.column > lineWidgets[startRow].column)\n startRow++;\n }\n args.unshift(startRow, 0);\n lineWidgets.splice.apply(lineWidgets, args);\n this.$updateRows();\n }\n };\n LineWidgets.prototype.$updateRows = function () {\n var lineWidgets = this.session.lineWidgets;\n if (!lineWidgets)\n return;\n var noWidgets = true;\n lineWidgets.forEach(function (w, i) {\n if (w) {\n noWidgets = false;\n w.row = i;\n while (w.$oldWidget) {\n w.$oldWidget.row = i;\n w = w.$oldWidget;\n }\n }\n });\n if (noWidgets)\n this.session.lineWidgets = null;\n };\n LineWidgets.prototype.$registerLineWidget = function (w) {\n if (!this.session.lineWidgets)\n this.session.lineWidgets = new Array(this.session.getLength());\n var old = this.session.lineWidgets[w.row];\n if (old) {\n w.$oldWidget = old;\n if (old.el && old.el.parentNode) {\n old.el.parentNode.removeChild(old.el);\n old._inDocument = false;\n }\n }\n this.session.lineWidgets[w.row] = w;\n return w;\n };\n LineWidgets.prototype.addLineWidget = function (w) {\n this.$registerLineWidget(w);\n w.session = this.session;\n if (!this.editor)\n return w;\n var renderer = this.editor.renderer;\n if (w.html && !w.el) {\n w.el = dom.createElement(\"div\");\n w.el.innerHTML = w.html;\n }\n if (w.text && !w.el) {\n w.el = dom.createElement(\"div\");\n w.el.textContent = w.text;\n }\n if (w.el) {\n dom.addCssClass(w.el, \"ace_lineWidgetContainer\");\n if (w.className) {\n dom.addCssClass(w.el, w.className);\n }\n w.el.style.position = \"absolute\";\n w.el.style.zIndex = 5;\n renderer.container.appendChild(w.el);\n w._inDocument = true;\n if (!w.coverGutter) {\n w.el.style.zIndex = 3;\n }\n if (w.pixelHeight == null) {\n w.pixelHeight = w.el.offsetHeight;\n }\n }\n if (w.rowCount == null) {\n w.rowCount = w.pixelHeight / renderer.layerConfig.lineHeight;\n }\n var fold = this.session.getFoldAt(w.row, 0);\n w.$fold = fold;\n if (fold) {\n var lineWidgets = this.session.lineWidgets;\n if (w.row == fold.end.row && !lineWidgets[fold.start.row])\n lineWidgets[fold.start.row] = w;\n else\n w.hidden = true;\n }\n this.session._emit(\"changeFold\", { data: { start: { row: w.row } } });\n this.$updateRows();\n this.renderWidgets(null, renderer);\n this.onWidgetChanged(w);\n return w;\n };\n LineWidgets.prototype.removeLineWidget = function (w) {\n w._inDocument = false;\n w.session = null;\n if (w.el && w.el.parentNode)\n w.el.parentNode.removeChild(w.el);\n if (w.editor && w.editor.destroy)\n try {\n w.editor.destroy();\n }\n catch (e) { }\n if (this.session.lineWidgets) {\n var w1 = this.session.lineWidgets[w.row];\n if (w1 == w) {\n this.session.lineWidgets[w.row] = w.$oldWidget;\n if (w.$oldWidget)\n this.onWidgetChanged(w.$oldWidget);\n }\n else {\n while (w1) {\n if (w1.$oldWidget == w) {\n w1.$oldWidget = w.$oldWidget;\n break;\n }\n w1 = w1.$oldWidget;\n }\n }\n }\n this.session._emit(\"changeFold\", { data: { start: { row: w.row } } });\n this.$updateRows();\n };\n LineWidgets.prototype.getWidgetsAtRow = function (row) {\n var lineWidgets = this.session.lineWidgets;\n var w = lineWidgets && lineWidgets[row];\n var list = [];\n while (w) {\n list.push(w);\n w = w.$oldWidget;\n }\n return list;\n };\n LineWidgets.prototype.onWidgetChanged = function (w) {\n this.session._changedWidgets.push(w);\n this.editor && this.editor.renderer.updateFull();\n };\n LineWidgets.prototype.measureWidgets = function (e, renderer) {\n var changedWidgets = this.session._changedWidgets;\n var config = renderer.layerConfig;\n if (!changedWidgets || !changedWidgets.length)\n return;\n var min = Infinity;\n for (var i = 0; i < changedWidgets.length; i++) {\n var w = changedWidgets[i];\n if (!w || !w.el)\n continue;\n if (w.session != this.session)\n continue;\n if (!w._inDocument) {\n if (this.session.lineWidgets[w.row] != w)\n continue;\n w._inDocument = true;\n renderer.container.appendChild(w.el);\n }\n w.h = w.el.offsetHeight;\n if (!w.fixedWidth) {\n w.w = w.el.offsetWidth;\n w.screenWidth = Math.ceil(w.w / config.characterWidth);\n }\n var rowCount = w.h / config.lineHeight;\n if (w.coverLine) {\n rowCount -= this.session.getRowLineCount(w.row);\n if (rowCount < 0)\n rowCount = 0;\n }\n if (w.rowCount != rowCount) {\n w.rowCount = rowCount;\n if (w.row < min)\n min = w.row;\n }\n }\n if (min != Infinity) {\n this.session._emit(\"changeFold\", { data: { start: { row: min } } });\n this.session.lineWidgetWidth = null;\n }\n this.session._changedWidgets = [];\n };\n LineWidgets.prototype.renderWidgets = function (e, renderer) {\n var config = renderer.layerConfig;\n var lineWidgets = this.session.lineWidgets;\n if (!lineWidgets)\n return;\n var first = Math.min(this.firstRow, config.firstRow);\n var last = Math.max(this.lastRow, config.lastRow, lineWidgets.length);\n while (first > 0 && !lineWidgets[first])\n first--;\n this.firstRow = config.firstRow;\n this.lastRow = config.lastRow;\n renderer.$cursorLayer.config = config;\n for (var i = first; i <= last; i++) {\n var w = lineWidgets[i];\n if (!w || !w.el)\n continue;\n if (w.hidden) {\n w.el.style.top = -100 - (w.pixelHeight || 0) + \"px\";\n continue;\n }\n if (!w._inDocument) {\n w._inDocument = true;\n renderer.container.appendChild(w.el);\n }\n var top = renderer.$cursorLayer.getPixelPosition({ row: i, column: 0 }, true).top;\n if (!w.coverLine)\n top += config.lineHeight * this.session.getRowLineCount(w.row);\n w.el.style.top = top - config.offset + \"px\";\n var left = w.coverGutter ? 0 : renderer.gutterWidth;\n if (!w.fixedWidth)\n left -= renderer.scrollLeft;\n w.el.style.left = left + \"px\";\n if (w.fullWidth && w.screenWidth) {\n w.el.style.minWidth = config.width + 2 * config.padding + \"px\";\n }\n if (w.fixedWidth) {\n w.el.style.right = renderer.scrollBar.getWidth() + \"px\";\n }\n else {\n w.el.style.right = \"\";\n }\n }\n };\n return LineWidgets;\n}());\nexports.LineWidgets = LineWidgets;\n\n});\n\nace.define(\"ace/keyboard/gutter_handler\",[\"require\",\"exports\",\"module\",\"ace/lib/keys\",\"ace/mouse/default_gutter_handler\"], function(require, exports, module){\"use strict\";\nvar keys = require('../lib/keys');\nvar GutterTooltip = require(\"../mouse/default_gutter_handler\").GutterTooltip;\nvar GutterKeyboardHandler = /** @class */ (function () {\n function GutterKeyboardHandler(editor) {\n this.editor = editor;\n this.gutterLayer = editor.renderer.$gutterLayer;\n this.element = editor.renderer.$gutter;\n this.lines = editor.renderer.$gutterLayer.$lines;\n this.activeRowIndex = null;\n this.activeLane = null;\n this.annotationTooltip = new GutterTooltip(this.editor);\n }\n GutterKeyboardHandler.prototype.addListener = function () {\n this.element.addEventListener(\"keydown\", this.$onGutterKeyDown.bind(this));\n this.element.addEventListener(\"focusout\", this.$blurGutter.bind(this));\n this.editor.on(\"mousewheel\", this.$blurGutter.bind(this));\n };\n GutterKeyboardHandler.prototype.removeListener = function () {\n this.element.removeEventListener(\"keydown\", this.$onGutterKeyDown.bind(this));\n this.element.removeEventListener(\"focusout\", this.$blurGutter.bind(this));\n this.editor.off(\"mousewheel\", this.$blurGutter.bind(this));\n };\n GutterKeyboardHandler.prototype.$onGutterKeyDown = function (e) {\n if (this.annotationTooltip.isOpen) {\n e.preventDefault();\n if (e.keyCode === keys[\"escape\"])\n this.annotationTooltip.hideTooltip();\n return;\n }\n if (e.target === this.element) {\n if (e.keyCode != keys[\"enter\"]) {\n return;\n }\n e.preventDefault();\n var row = this.editor.getCursorPosition().row;\n if (!this.editor.isRowVisible(row))\n this.editor.scrollToLine(row, true, true);\n setTimeout(function () {\n var index = this.$rowToRowIndex(this.gutterLayer.$cursorCell.row);\n var nearestFoldIndex = this.$findNearestFoldWidget(index);\n var nearestAnnotationIndex = this.$findNearestAnnotation(index);\n if (nearestFoldIndex === null && nearestAnnotationIndex === null)\n return;\n if (nearestFoldIndex === null && nearestAnnotationIndex !== null) {\n this.activeRowIndex = nearestAnnotationIndex;\n this.activeLane = \"annotation\";\n this.$focusAnnotation(this.activeRowIndex);\n return;\n }\n if (nearestFoldIndex !== null && nearestAnnotationIndex === null) {\n this.activeRowIndex = nearestFoldIndex;\n this.activeLane = \"fold\";\n this.$focusFoldWidget(this.activeRowIndex);\n return;\n }\n if (Math.abs(nearestAnnotationIndex - index) < Math.abs(nearestFoldIndex - index)) {\n this.activeRowIndex = nearestAnnotationIndex;\n this.activeLane = \"annotation\";\n this.$focusAnnotation(this.activeRowIndex);\n return;\n }\n else {\n this.activeRowIndex = nearestFoldIndex;\n this.activeLane = \"fold\";\n this.$focusFoldWidget(this.activeRowIndex);\n return;\n }\n }.bind(this), 10);\n return;\n }\n this.$handleGutterKeyboardInteraction(e);\n setTimeout(function () {\n this.editor._signal(\"gutterkeydown\", new GutterKeyboardEvent(e, this));\n }.bind(this), 10);\n };\n GutterKeyboardHandler.prototype.$handleGutterKeyboardInteraction = function (e) {\n if (e.keyCode === keys[\"tab\"]) {\n e.preventDefault();\n return;\n }\n if (e.keyCode === keys[\"escape\"]) {\n e.preventDefault();\n this.$blurGutter();\n this.element.focus();\n this.lane = null;\n return;\n }\n if (e.keyCode === keys[\"up\"]) {\n e.preventDefault();\n switch (this.activeLane) {\n case \"fold\":\n this.$moveFoldWidgetUp();\n break;\n case \"annotation\":\n this.$moveAnnotationUp();\n break;\n }\n return;\n }\n if (e.keyCode === keys[\"down\"]) {\n e.preventDefault();\n switch (this.activeLane) {\n case \"fold\":\n this.$moveFoldWidgetDown();\n break;\n case \"annotation\":\n this.$moveAnnotationDown();\n break;\n }\n return;\n }\n if (e.keyCode === keys[\"left\"]) {\n e.preventDefault();\n this.$switchLane(\"annotation\");\n return;\n }\n if (e.keyCode === keys[\"right\"]) {\n e.preventDefault();\n this.$switchLane(\"fold\");\n return;\n }\n if (e.keyCode === keys[\"enter\"] || e.keyCode === keys[\"space\"]) {\n e.preventDefault();\n switch (this.activeLane) {\n case \"fold\":\n if (this.gutterLayer.session.foldWidgets[this.$rowIndexToRow(this.activeRowIndex)] === 'start') {\n var rowFoldingWidget = this.$rowIndexToRow(this.activeRowIndex);\n this.editor.session.onFoldWidgetClick(this.$rowIndexToRow(this.activeRowIndex), e);\n setTimeout(function () {\n if (this.$rowIndexToRow(this.activeRowIndex) !== rowFoldingWidget) {\n this.$blurFoldWidget(this.activeRowIndex);\n this.activeRowIndex = this.$rowToRowIndex(rowFoldingWidget);\n this.$focusFoldWidget(this.activeRowIndex);\n }\n }.bind(this), 10);\n break;\n }\n else if (this.gutterLayer.session.foldWidgets[this.$rowIndexToRow(this.activeRowIndex)] === 'end') {\n break;\n }\n return;\n case \"annotation\":\n var gutterElement = this.lines.cells[this.activeRowIndex].element.childNodes[2];\n var rect = gutterElement.getBoundingClientRect();\n var style = this.annotationTooltip.getElement().style;\n style.left = rect.right + \"px\";\n style.top = rect.bottom + \"px\";\n this.annotationTooltip.showTooltip(this.$rowIndexToRow(this.activeRowIndex));\n break;\n }\n return;\n }\n };\n GutterKeyboardHandler.prototype.$blurGutter = function () {\n if (this.activeRowIndex !== null) {\n switch (this.activeLane) {\n case \"fold\":\n this.$blurFoldWidget(this.activeRowIndex);\n break;\n case \"annotation\":\n this.$blurAnnotation(this.activeRowIndex);\n break;\n }\n }\n if (this.annotationTooltip.isOpen)\n this.annotationTooltip.hideTooltip();\n return;\n };\n GutterKeyboardHandler.prototype.$isFoldWidgetVisible = function (index) {\n var isRowFullyVisible = this.editor.isRowFullyVisible(this.$rowIndexToRow(index));\n var isIconVisible = this.$getFoldWidget(index).style.display !== \"none\";\n return isRowFullyVisible && isIconVisible;\n };\n GutterKeyboardHandler.prototype.$isAnnotationVisible = function (index) {\n var isRowFullyVisible = this.editor.isRowFullyVisible(this.$rowIndexToRow(index));\n var isIconVisible = this.$getAnnotation(index).style.display !== \"none\";\n return isRowFullyVisible && isIconVisible;\n };\n GutterKeyboardHandler.prototype.$getFoldWidget = function (index) {\n var cell = this.lines.get(index);\n var element = cell.element;\n return element.childNodes[1];\n };\n GutterKeyboardHandler.prototype.$getAnnotation = function (index) {\n var cell = this.lines.get(index);\n var element = cell.element;\n return element.childNodes[2];\n };\n GutterKeyboardHandler.prototype.$findNearestFoldWidget = function (index) {\n if (this.$isFoldWidgetVisible(index))\n return index;\n var i = 0;\n while (index - i > 0 || index + i < this.lines.getLength() - 1) {\n i++;\n if (index - i >= 0 && this.$isFoldWidgetVisible(index - i))\n return index - i;\n if (index + i <= this.lines.getLength() - 1 && this.$isFoldWidgetVisible(index + i))\n return index + i;\n }\n return null;\n };\n GutterKeyboardHandler.prototype.$findNearestAnnotation = function (index) {\n if (this.$isAnnotationVisible(index))\n return index;\n var i = 0;\n while (index - i > 0 || index + i < this.lines.getLength() - 1) {\n i++;\n if (index - i >= 0 && this.$isAnnotationVisible(index - i))\n return index - i;\n if (index + i <= this.lines.getLength() - 1 && this.$isAnnotationVisible(index + i))\n return index + i;\n }\n return null;\n };\n GutterKeyboardHandler.prototype.$focusFoldWidget = function (index) {\n if (index == null)\n return;\n var foldWidget = this.$getFoldWidget(index);\n foldWidget.classList.add(this.editor.renderer.keyboardFocusClassName);\n foldWidget.focus();\n };\n GutterKeyboardHandler.prototype.$focusAnnotation = function (index) {\n if (index == null)\n return;\n var annotation = this.$getAnnotation(index);\n annotation.classList.add(this.editor.renderer.keyboardFocusClassName);\n annotation.focus();\n };\n GutterKeyboardHandler.prototype.$blurFoldWidget = function (index) {\n var foldWidget = this.$getFoldWidget(index);\n foldWidget.classList.remove(this.editor.renderer.keyboardFocusClassName);\n foldWidget.blur();\n };\n GutterKeyboardHandler.prototype.$blurAnnotation = function (index) {\n var annotation = this.$getAnnotation(index);\n annotation.classList.remove(this.editor.renderer.keyboardFocusClassName);\n annotation.blur();\n };\n GutterKeyboardHandler.prototype.$moveFoldWidgetUp = function () {\n var index = this.activeRowIndex;\n while (index > 0) {\n index--;\n if (this.$isFoldWidgetVisible(index)) {\n this.$blurFoldWidget(this.activeRowIndex);\n this.activeRowIndex = index;\n this.$focusFoldWidget(this.activeRowIndex);\n return;\n }\n }\n return;\n };\n GutterKeyboardHandler.prototype.$moveFoldWidgetDown = function () {\n var index = this.activeRowIndex;\n while (index < this.lines.getLength() - 1) {\n index++;\n if (this.$isFoldWidgetVisible(index)) {\n this.$blurFoldWidget(this.activeRowIndex);\n this.activeRowIndex = index;\n this.$focusFoldWidget(this.activeRowIndex);\n return;\n }\n }\n return;\n };\n GutterKeyboardHandler.prototype.$moveAnnotationUp = function () {\n var index = this.activeRowIndex;\n while (index > 0) {\n index--;\n if (this.$isAnnotationVisible(index)) {\n this.$blurAnnotation(this.activeRowIndex);\n this.activeRowIndex = index;\n this.$focusAnnotation(this.activeRowIndex);\n return;\n }\n }\n return;\n };\n GutterKeyboardHandler.prototype.$moveAnnotationDown = function () {\n var index = this.activeRowIndex;\n while (index < this.lines.getLength() - 1) {\n index++;\n if (this.$isAnnotationVisible(index)) {\n this.$blurAnnotation(this.activeRowIndex);\n this.activeRowIndex = index;\n this.$focusAnnotation(this.activeRowIndex);\n return;\n }\n }\n return;\n };\n GutterKeyboardHandler.prototype.$switchLane = function (desinationLane) {\n switch (desinationLane) {\n case \"annotation\":\n if (this.activeLane === \"annotation\") {\n break;\n }\n var annotationIndex = this.$findNearestAnnotation(this.activeRowIndex);\n if (annotationIndex == null) {\n break;\n }\n this.activeLane = \"annotation\";\n this.$blurFoldWidget(this.activeRowIndex);\n this.activeRowIndex = annotationIndex;\n this.$focusAnnotation(this.activeRowIndex);\n break;\n case \"fold\":\n if (this.activeLane === \"fold\") {\n break;\n }\n var foldWidgetIndex = this.$findNearestFoldWidget(this.activeRowIndex);\n if (foldWidgetIndex == null) {\n break;\n }\n this.activeLane = \"fold\";\n this.$blurAnnotation(this.activeRowIndex);\n this.activeRowIndex = foldWidgetIndex;\n this.$focusFoldWidget(this.activeRowIndex);\n break;\n }\n return;\n };\n GutterKeyboardHandler.prototype.$rowIndexToRow = function (index) {\n var cell = this.lines.get(index);\n if (cell)\n return cell.row;\n return null;\n };\n GutterKeyboardHandler.prototype.$rowToRowIndex = function (row) {\n for (var i = 0; i < this.lines.getLength(); i++) {\n var cell = this.lines.get(i);\n if (cell.row == row)\n return i;\n }\n return null;\n };\n return GutterKeyboardHandler;\n}());\nexports.GutterKeyboardHandler = GutterKeyboardHandler;\nvar GutterKeyboardEvent = /** @class */ (function () {\n function GutterKeyboardEvent(domEvent, gutterKeyboardHandler) {\n this.gutterKeyboardHandler = gutterKeyboardHandler;\n this.domEvent = domEvent;\n }\n GutterKeyboardEvent.prototype.getKey = function () {\n return keys.keyCodeToString(this.domEvent.keyCode);\n };\n GutterKeyboardEvent.prototype.getRow = function () {\n return this.gutterKeyboardHandler.$rowIndexToRow(this.gutterKeyboardHandler.activeRowIndex);\n };\n GutterKeyboardEvent.prototype.isInAnnotationLane = function () {\n return this.gutterKeyboardHandler.activeLane === \"annotation\";\n };\n GutterKeyboardEvent.prototype.isInFoldLane = function () {\n return this.gutterKeyboardHandler.activeLane === \"fold\";\n };\n return GutterKeyboardEvent;\n}());\nexports.GutterKeyboardEvent = GutterKeyboardEvent;\n\n});\n\nace.define(\"ace/editor\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/dom\",\"ace/lib/lang\",\"ace/lib/useragent\",\"ace/keyboard/textinput\",\"ace/mouse/mouse_handler\",\"ace/mouse/fold_handler\",\"ace/keyboard/keybinding\",\"ace/edit_session\",\"ace/search\",\"ace/range\",\"ace/lib/event_emitter\",\"ace/commands/command_manager\",\"ace/commands/default_commands\",\"ace/config\",\"ace/token_iterator\",\"ace/line_widgets\",\"ace/keyboard/gutter_handler\",\"ace/config\",\"ace/clipboard\",\"ace/lib/keys\"], function(require, exports, module){\"use strict\";\nvar __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar oop = require(\"./lib/oop\");\nvar dom = require(\"./lib/dom\");\nvar lang = require(\"./lib/lang\");\nvar useragent = require(\"./lib/useragent\");\nvar TextInput = require(\"./keyboard/textinput\").TextInput;\nvar MouseHandler = require(\"./mouse/mouse_handler\").MouseHandler;\nvar FoldHandler = require(\"./mouse/fold_handler\").FoldHandler;\nvar KeyBinding = require(\"./keyboard/keybinding\").KeyBinding;\nvar EditSession = require(\"./edit_session\").EditSession;\nvar Search = require(\"./search\").Search;\nvar Range = require(\"./range\").Range;\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar CommandManager = require(\"./commands/command_manager\").CommandManager;\nvar defaultCommands = require(\"./commands/default_commands\").commands;\nvar config = require(\"./config\");\nvar TokenIterator = require(\"./token_iterator\").TokenIterator;\nvar LineWidgets = require(\"./line_widgets\").LineWidgets;\nvar GutterKeyboardHandler = require(\"./keyboard/gutter_handler\").GutterKeyboardHandler;\nvar nls = require(\"./config\").nls;\nvar clipboard = require(\"./clipboard\");\nvar keys = require('./lib/keys');\nvar Editor = /** @class */ (function () {\n function Editor(renderer, session, options) {\n this.$toDestroy = [];\n var container = renderer.getContainerElement();\n this.container = container;\n this.renderer = renderer;\n this.id = \"editor\" + (++Editor.$uid);\n this.commands = new CommandManager(useragent.isMac ? \"mac\" : \"win\", defaultCommands);\n if (typeof document == \"object\") {\n this.textInput = new TextInput(renderer.getTextAreaContainer(), this);\n this.renderer.textarea = this.textInput.getElement();\n this.$mouseHandler = new MouseHandler(this);\n new FoldHandler(this);\n }\n this.keyBinding = new KeyBinding(this);\n this.$search = new Search().set({\n wrap: true\n });\n this.$historyTracker = this.$historyTracker.bind(this);\n this.commands.on(\"exec\", this.$historyTracker);\n this.$initOperationListeners();\n this._$emitInputEvent = lang.delayedCall(function () {\n this._signal(\"input\", {});\n if (this.session && !this.session.destroyed)\n this.session.bgTokenizer.scheduleStart();\n }.bind(this));\n this.on(\"change\", function (_, _self) {\n _self._$emitInputEvent.schedule(31);\n });\n this.setSession(session || options && options.session || new EditSession(\"\"));\n config.resetOptions(this);\n if (options)\n this.setOptions(options);\n config._signal(\"editor\", this);\n }\n Editor.prototype.$initOperationListeners = function () {\n this.commands.on(\"exec\", this.startOperation.bind(this), true);\n this.commands.on(\"afterExec\", this.endOperation.bind(this), true);\n this.$opResetTimer = lang.delayedCall(this.endOperation.bind(this, true));\n this.on(\"change\", function () {\n if (!this.curOp) {\n this.startOperation();\n this.curOp.selectionBefore = this.$lastSel;\n }\n this.curOp.docChanged = true;\n }.bind(this), true);\n this.on(\"changeSelection\", function () {\n if (!this.curOp) {\n this.startOperation();\n this.curOp.selectionBefore = this.$lastSel;\n }\n this.curOp.selectionChanged = true;\n }.bind(this), true);\n };\n Editor.prototype.startOperation = function (commandEvent) {\n if (this.curOp) {\n if (!commandEvent || this.curOp.command)\n return;\n this.prevOp = this.curOp;\n }\n if (!commandEvent) {\n this.previousCommand = null;\n commandEvent = {};\n }\n this.$opResetTimer.schedule();\n this.curOp = this.session.curOp = {\n command: commandEvent.command || {},\n args: commandEvent.args,\n scrollTop: this.renderer.scrollTop\n };\n this.curOp.selectionBefore = this.selection.toJSON();\n };\n Editor.prototype.endOperation = function (e) {\n if (this.curOp && this.session) {\n if (e && e.returnValue === false || !this.session)\n return (this.curOp = null);\n if (e == true && this.curOp.command && this.curOp.command.name == \"mouse\")\n return;\n this._signal(\"beforeEndOperation\");\n if (!this.curOp)\n return;\n var command = this.curOp.command;\n var scrollIntoView = command && command.scrollIntoView;\n if (scrollIntoView) {\n switch (scrollIntoView) {\n case \"center-animate\":\n scrollIntoView = \"animate\";\n case \"center\":\n this.renderer.scrollCursorIntoView(null, 0.5);\n break;\n case \"animate\":\n case \"cursor\":\n this.renderer.scrollCursorIntoView();\n break;\n case \"selectionPart\":\n var range = this.selection.getRange();\n var config = this.renderer.layerConfig;\n if (range.start.row >= config.lastRow || range.end.row <= config.firstRow) {\n this.renderer.scrollSelectionIntoView(this.selection.anchor, this.selection.lead);\n }\n break;\n default:\n break;\n }\n if (scrollIntoView == \"animate\")\n this.renderer.animateScrolling(this.curOp.scrollTop);\n }\n var sel = this.selection.toJSON();\n this.curOp.selectionAfter = sel;\n this.$lastSel = this.selection.toJSON();\n this.session.getUndoManager().addSelection(sel);\n this.prevOp = this.curOp;\n this.curOp = null;\n }\n };\n Editor.prototype.$historyTracker = function (e) {\n if (!this.$mergeUndoDeltas)\n return;\n var prev = this.prevOp;\n var mergeableCommands = this.$mergeableCommands;\n var shouldMerge = prev.command && (e.command.name == prev.command.name);\n if (e.command.name == \"insertstring\") {\n var text = e.args;\n if (this.mergeNextCommand === undefined)\n this.mergeNextCommand = true;\n shouldMerge = shouldMerge\n && this.mergeNextCommand // previous command allows to coalesce with\n && (!/\\s/.test(text) || /\\s/.test(prev.args)); // previous insertion was of same type\n this.mergeNextCommand = true;\n }\n else {\n shouldMerge = shouldMerge\n && mergeableCommands.indexOf(e.command.name) !== -1; // the command is mergeable\n }\n if (this.$mergeUndoDeltas != \"always\"\n && Date.now() - this.sequenceStartTime > 2000) {\n shouldMerge = false; // the sequence is too long\n }\n if (shouldMerge)\n this.session.mergeUndoDeltas = true;\n else if (mergeableCommands.indexOf(e.command.name) !== -1)\n this.sequenceStartTime = Date.now();\n };\n Editor.prototype.setKeyboardHandler = function (keyboardHandler, cb) {\n if (keyboardHandler && typeof keyboardHandler === \"string\" && keyboardHandler != \"ace\") {\n this.$keybindingId = keyboardHandler;\n var _self = this;\n config.loadModule([\"keybinding\", keyboardHandler], function (module) {\n if (_self.$keybindingId == keyboardHandler)\n _self.keyBinding.setKeyboardHandler(module && module.handler);\n cb && cb();\n });\n }\n else {\n this.$keybindingId = null;\n this.keyBinding.setKeyboardHandler(keyboardHandler);\n cb && cb();\n }\n };\n Editor.prototype.getKeyboardHandler = function () {\n return this.keyBinding.getKeyboardHandler();\n };\n Editor.prototype.setSession = function (session) {\n if (this.session == session)\n return;\n if (this.curOp)\n this.endOperation();\n this.curOp = {};\n var oldSession = this.session;\n if (oldSession) {\n this.session.off(\"change\", this.$onDocumentChange);\n this.session.off(\"changeMode\", this.$onChangeMode);\n this.session.off(\"tokenizerUpdate\", this.$onTokenizerUpdate);\n this.session.off(\"changeTabSize\", this.$onChangeTabSize);\n this.session.off(\"changeWrapLimit\", this.$onChangeWrapLimit);\n this.session.off(\"changeWrapMode\", this.$onChangeWrapMode);\n this.session.off(\"changeFold\", this.$onChangeFold);\n this.session.off(\"changeFrontMarker\", this.$onChangeFrontMarker);\n this.session.off(\"changeBackMarker\", this.$onChangeBackMarker);\n this.session.off(\"changeBreakpoint\", this.$onChangeBreakpoint);\n this.session.off(\"changeAnnotation\", this.$onChangeAnnotation);\n this.session.off(\"changeOverwrite\", this.$onCursorChange);\n this.session.off(\"changeScrollTop\", this.$onScrollTopChange);\n this.session.off(\"changeScrollLeft\", this.$onScrollLeftChange);\n var selection = this.session.getSelection();\n selection.off(\"changeCursor\", this.$onCursorChange);\n selection.off(\"changeSelection\", this.$onSelectionChange);\n }\n this.session = session;\n if (session) {\n this.$onDocumentChange = this.onDocumentChange.bind(this);\n session.on(\"change\", this.$onDocumentChange);\n this.renderer.setSession(session);\n this.$onChangeMode = this.onChangeMode.bind(this);\n session.on(\"changeMode\", this.$onChangeMode);\n this.$onTokenizerUpdate = this.onTokenizerUpdate.bind(this);\n session.on(\"tokenizerUpdate\", this.$onTokenizerUpdate);\n this.$onChangeTabSize = this.renderer.onChangeTabSize.bind(this.renderer);\n session.on(\"changeTabSize\", this.$onChangeTabSize);\n this.$onChangeWrapLimit = this.onChangeWrapLimit.bind(this);\n session.on(\"changeWrapLimit\", this.$onChangeWrapLimit);\n this.$onChangeWrapMode = this.onChangeWrapMode.bind(this);\n session.on(\"changeWrapMode\", this.$onChangeWrapMode);\n this.$onChangeFold = this.onChangeFold.bind(this);\n session.on(\"changeFold\", this.$onChangeFold);\n this.$onChangeFrontMarker = this.onChangeFrontMarker.bind(this);\n this.session.on(\"changeFrontMarker\", this.$onChangeFrontMarker);\n this.$onChangeBackMarker = this.onChangeBackMarker.bind(this);\n this.session.on(\"changeBackMarker\", this.$onChangeBackMarker);\n this.$onChangeBreakpoint = this.onChangeBreakpoint.bind(this);\n this.session.on(\"changeBreakpoint\", this.$onChangeBreakpoint);\n this.$onChangeAnnotation = this.onChangeAnnotation.bind(this);\n this.session.on(\"changeAnnotation\", this.$onChangeAnnotation);\n this.$onCursorChange = this.onCursorChange.bind(this);\n this.session.on(\"changeOverwrite\", this.$onCursorChange);\n this.$onScrollTopChange = this.onScrollTopChange.bind(this);\n this.session.on(\"changeScrollTop\", this.$onScrollTopChange);\n this.$onScrollLeftChange = this.onScrollLeftChange.bind(this);\n this.session.on(\"changeScrollLeft\", this.$onScrollLeftChange);\n this.selection = session.getSelection();\n this.selection.on(\"changeCursor\", this.$onCursorChange);\n this.$onSelectionChange = this.onSelectionChange.bind(this);\n this.selection.on(\"changeSelection\", this.$onSelectionChange);\n this.onChangeMode();\n this.onCursorChange();\n this.onScrollTopChange();\n this.onScrollLeftChange();\n this.onSelectionChange();\n this.onChangeFrontMarker();\n this.onChangeBackMarker();\n this.onChangeBreakpoint();\n this.onChangeAnnotation();\n this.session.getUseWrapMode() && this.renderer.adjustWrapLimit();\n this.renderer.updateFull();\n }\n else {\n this.selection = null;\n this.renderer.setSession(session);\n }\n this._signal(\"changeSession\", {\n session: session,\n oldSession: oldSession\n });\n this.curOp = null;\n oldSession && oldSession._signal(\"changeEditor\", { oldEditor: this });\n session && session._signal(\"changeEditor\", { editor: this });\n if (session && !session.destroyed)\n session.bgTokenizer.scheduleStart();\n };\n Editor.prototype.getSession = function () {\n return this.session;\n };\n Editor.prototype.setValue = function (val, cursorPos) {\n this.session.doc.setValue(val);\n if (!cursorPos)\n this.selectAll();\n else if (cursorPos == 1)\n this.navigateFileEnd();\n else if (cursorPos == -1)\n this.navigateFileStart();\n return val;\n };\n Editor.prototype.getValue = function () {\n return this.session.getValue();\n };\n Editor.prototype.getSelection = function () {\n return this.selection;\n };\n Editor.prototype.resize = function (force) {\n this.renderer.onResize(force);\n };\n Editor.prototype.setTheme = function (theme, cb) {\n this.renderer.setTheme(theme, cb);\n };\n Editor.prototype.getTheme = function () {\n return this.renderer.getTheme();\n };\n Editor.prototype.setStyle = function (style) {\n this.renderer.setStyle(style);\n };\n Editor.prototype.unsetStyle = function (style) {\n this.renderer.unsetStyle(style);\n };\n Editor.prototype.getFontSize = function () {\n return this.getOption(\"fontSize\") ||\n dom.computedStyle(this.container).fontSize;\n };\n Editor.prototype.setFontSize = function (size) {\n this.setOption(\"fontSize\", size);\n };\n Editor.prototype.$highlightBrackets = function () {\n if (this.$highlightPending) {\n return;\n }\n var self = this;\n this.$highlightPending = true;\n setTimeout(function () {\n self.$highlightPending = false;\n var session = self.session;\n if (!session || session.destroyed)\n return;\n if (session.$bracketHighlight) {\n session.$bracketHighlight.markerIds.forEach(function (id) {\n session.removeMarker(id);\n });\n session.$bracketHighlight = null;\n }\n var pos = self.getCursorPosition();\n var handler = self.getKeyboardHandler();\n var isBackwards = handler && handler.$getDirectionForHighlight && handler.$getDirectionForHighlight(self);\n var ranges = session.getMatchingBracketRanges(pos, isBackwards);\n if (!ranges) {\n var iterator = new TokenIterator(session, pos.row, pos.column);\n var token = iterator.getCurrentToken();\n if (token && /\\b(?:tag-open|tag-name)/.test(token.type)) {\n var tagNamesRanges = session.getMatchingTags(pos);\n if (tagNamesRanges)\n ranges = [tagNamesRanges.openTagName, tagNamesRanges.closeTagName];\n }\n }\n if (!ranges && session.$mode.getMatching)\n ranges = session.$mode.getMatching(self.session);\n if (!ranges) {\n if (self.getHighlightIndentGuides())\n self.renderer.$textLayer.$highlightIndentGuide();\n return;\n }\n var markerType = \"ace_bracket\";\n if (!Array.isArray(ranges)) {\n ranges = [ranges];\n }\n else if (ranges.length == 1) {\n markerType = \"ace_error_bracket\";\n }\n if (ranges.length == 2) {\n if (Range.comparePoints(ranges[0].end, ranges[1].start) == 0)\n ranges = [Range.fromPoints(ranges[0].start, ranges[1].end)];\n else if (Range.comparePoints(ranges[0].start, ranges[1].end) == 0)\n ranges = [Range.fromPoints(ranges[1].start, ranges[0].end)];\n }\n session.$bracketHighlight = {\n ranges: ranges,\n markerIds: ranges.map(function (range) {\n return session.addMarker(range, markerType, \"text\");\n })\n };\n if (self.getHighlightIndentGuides())\n self.renderer.$textLayer.$highlightIndentGuide();\n }, 50);\n };\n Editor.prototype.focus = function () {\n this.textInput.focus();\n };\n Editor.prototype.isFocused = function () {\n return this.textInput.isFocused();\n };\n Editor.prototype.blur = function () {\n this.textInput.blur();\n };\n Editor.prototype.onFocus = function (e) {\n if (this.$isFocused)\n return;\n this.$isFocused = true;\n this.renderer.showCursor();\n this.renderer.visualizeFocus();\n this._emit(\"focus\", e);\n };\n Editor.prototype.onBlur = function (e) {\n if (!this.$isFocused)\n return;\n this.$isFocused = false;\n this.renderer.hideCursor();\n this.renderer.visualizeBlur();\n this._emit(\"blur\", e);\n };\n Editor.prototype.$cursorChange = function () {\n this.renderer.updateCursor();\n this.$highlightBrackets();\n this.$updateHighlightActiveLine();\n };\n Editor.prototype.onDocumentChange = function (delta) {\n var wrap = this.session.$useWrapMode;\n var lastRow = (delta.start.row == delta.end.row ? delta.end.row : Infinity);\n this.renderer.updateLines(delta.start.row, lastRow, wrap);\n this._signal(\"change\", delta);\n this.$cursorChange();\n };\n Editor.prototype.onTokenizerUpdate = function (e) {\n var rows = e.data;\n this.renderer.updateLines(rows.first, rows.last);\n };\n Editor.prototype.onScrollTopChange = function () {\n this.renderer.scrollToY(this.session.getScrollTop());\n };\n Editor.prototype.onScrollLeftChange = function () {\n this.renderer.scrollToX(this.session.getScrollLeft());\n };\n Editor.prototype.onCursorChange = function () {\n this.$cursorChange();\n this._signal(\"changeSelection\");\n };\n Editor.prototype.$updateHighlightActiveLine = function () {\n var session = this.getSession();\n var highlight;\n if (this.$highlightActiveLine) {\n if (this.$selectionStyle != \"line\" || !this.selection.isMultiLine())\n highlight = this.getCursorPosition();\n if (this.renderer.theme && this.renderer.theme.$selectionColorConflict && !this.selection.isEmpty())\n highlight = false;\n if (this.renderer.$maxLines && this.session.getLength() === 1 && !(this.renderer.$minLines > 1))\n highlight = false;\n }\n if (session.$highlightLineMarker && !highlight) {\n session.removeMarker(session.$highlightLineMarker.id);\n session.$highlightLineMarker = null;\n }\n else if (!session.$highlightLineMarker && highlight) {\n var range = new Range(highlight.row, highlight.column, highlight.row, Infinity);\n range.id = session.addMarker(range, \"ace_active-line\", \"screenLine\");\n session.$highlightLineMarker = range;\n }\n else if (highlight) {\n session.$highlightLineMarker.start.row = highlight.row;\n session.$highlightLineMarker.end.row = highlight.row;\n session.$highlightLineMarker.start.column = highlight.column;\n session._signal(\"changeBackMarker\");\n }\n };\n Editor.prototype.onSelectionChange = function (e) {\n var session = this.session;\n if (session.$selectionMarker) {\n session.removeMarker(session.$selectionMarker);\n }\n session.$selectionMarker = null;\n if (!this.selection.isEmpty()) {\n var range = this.selection.getRange();\n var style = this.getSelectionStyle();\n session.$selectionMarker = session.addMarker(range, \"ace_selection\", style);\n }\n else {\n this.$updateHighlightActiveLine();\n }\n var re = this.$highlightSelectedWord && this.$getSelectionHighLightRegexp();\n this.session.highlight(re);\n this._signal(\"changeSelection\");\n };\n Editor.prototype.$getSelectionHighLightRegexp = function () {\n var session = this.session;\n var selection = this.getSelectionRange();\n if (selection.isEmpty() || selection.isMultiLine())\n return;\n var startColumn = selection.start.column;\n var endColumn = selection.end.column;\n var line = session.getLine(selection.start.row);\n var needle = line.substring(startColumn, endColumn);\n if (needle.length > 5000 || !/[\\w\\d]/.test(needle))\n return;\n var re = this.$search.$assembleRegExp({\n wholeWord: true,\n caseSensitive: true,\n needle: needle\n });\n var wordWithBoundary = line.substring(startColumn - 1, endColumn + 1);\n if (!re.test(wordWithBoundary))\n return;\n return re;\n };\n Editor.prototype.onChangeFrontMarker = function () {\n this.renderer.updateFrontMarkers();\n };\n Editor.prototype.onChangeBackMarker = function () {\n this.renderer.updateBackMarkers();\n };\n Editor.prototype.onChangeBreakpoint = function () {\n this.renderer.updateBreakpoints();\n };\n Editor.prototype.onChangeAnnotation = function () {\n this.renderer.setAnnotations(this.session.getAnnotations());\n };\n Editor.prototype.onChangeMode = function (e) {\n this.renderer.updateText();\n this._emit(\"changeMode\", e);\n };\n Editor.prototype.onChangeWrapLimit = function () {\n this.renderer.updateFull();\n };\n Editor.prototype.onChangeWrapMode = function () {\n this.renderer.onResize(true);\n };\n Editor.prototype.onChangeFold = function () {\n this.$updateHighlightActiveLine();\n this.renderer.updateFull();\n };\n Editor.prototype.getSelectedText = function () {\n return this.session.getTextRange(this.getSelectionRange());\n };\n Editor.prototype.getCopyText = function () {\n var text = this.getSelectedText();\n var nl = this.session.doc.getNewLineCharacter();\n var copyLine = false;\n if (!text && this.$copyWithEmptySelection) {\n copyLine = true;\n var ranges = this.selection.getAllRanges();\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i];\n if (i && ranges[i - 1].start.row == range.start.row)\n continue;\n text += this.session.getLine(range.start.row) + nl;\n }\n }\n var e = { text: text };\n this._signal(\"copy\", e);\n clipboard.lineMode = copyLine ? e.text : false;\n return e.text;\n };\n Editor.prototype.onCopy = function () {\n this.commands.exec(\"copy\", this);\n };\n Editor.prototype.onCut = function () {\n this.commands.exec(\"cut\", this);\n };\n Editor.prototype.onPaste = function (text, event) {\n var e = { text: text, event: event };\n this.commands.exec(\"paste\", this, e);\n };\n Editor.prototype.$handlePaste = function (e) {\n if (typeof e == \"string\")\n e = { text: e };\n this._signal(\"paste\", e);\n var text = e.text;\n var lineMode = text === clipboard.lineMode;\n var session = this.session;\n if (!this.inMultiSelectMode || this.inVirtualSelectionMode) {\n if (lineMode)\n session.insert({ row: this.selection.lead.row, column: 0 }, text);\n else\n this.insert(text);\n }\n else if (lineMode) {\n this.selection.rangeList.ranges.forEach(function (range) {\n session.insert({ row: range.start.row, column: 0 }, text);\n });\n }\n else {\n var lines = text.split(/\\r\\n|\\r|\\n/);\n var ranges = this.selection.rangeList.ranges;\n var isFullLine = lines.length == 2 && (!lines[0] || !lines[1]);\n if (lines.length != ranges.length || isFullLine)\n return this.commands.exec(\"insertstring\", this, text);\n for (var i = ranges.length; i--;) {\n var range = ranges[i];\n if (!range.isEmpty())\n session.remove(range);\n session.insert(range.start, lines[i]);\n }\n }\n };\n Editor.prototype.execCommand = function (command, args) {\n return this.commands.exec(command, this, args);\n };\n Editor.prototype.insert = function (text, pasted) {\n var session = this.session;\n var mode = session.getMode();\n var cursor = this.getCursorPosition();\n if (this.getBehavioursEnabled() && !pasted) {\n var transform = mode.transformAction(session.getState(cursor.row), 'insertion', this, session, text);\n if (transform) {\n if (text !== transform.text) {\n if (!this.inVirtualSelectionMode) {\n this.session.mergeUndoDeltas = false;\n this.mergeNextCommand = false;\n }\n }\n text = transform.text;\n }\n }\n if (text == \"\\t\")\n text = this.session.getTabString();\n if (!this.selection.isEmpty()) {\n var range = this.getSelectionRange();\n cursor = this.session.remove(range);\n this.clearSelection();\n }\n else if (this.session.getOverwrite() && text.indexOf(\"\\n\") == -1) {\n var range = new Range.fromPoints(cursor, cursor);\n range.end.column += text.length;\n this.session.remove(range);\n }\n if (text == \"\\n\" || text == \"\\r\\n\") {\n var line = session.getLine(cursor.row);\n if (cursor.column > line.search(/\\S|$/)) {\n var d = line.substr(cursor.column).search(/\\S|$/);\n session.doc.removeInLine(cursor.row, cursor.column, cursor.column + d);\n }\n }\n this.clearSelection();\n var start = cursor.column;\n var lineState = session.getState(cursor.row);\n var line = session.getLine(cursor.row);\n var shouldOutdent = mode.checkOutdent(lineState, line, text);\n session.insert(cursor, text);\n if (transform && transform.selection) {\n if (transform.selection.length == 2) { // Transform relative to the current column\n this.selection.setSelectionRange(new Range(cursor.row, start + transform.selection[0], cursor.row, start + transform.selection[1]));\n }\n else { // Transform relative to the current row.\n this.selection.setSelectionRange(new Range(cursor.row + transform.selection[0], transform.selection[1], cursor.row + transform.selection[2], transform.selection[3]));\n }\n }\n if (this.$enableAutoIndent) {\n if (session.getDocument().isNewLine(text)) {\n var lineIndent = mode.getNextLineIndent(lineState, line.slice(0, cursor.column), session.getTabString());\n session.insert({ row: cursor.row + 1, column: 0 }, lineIndent);\n }\n if (shouldOutdent)\n mode.autoOutdent(lineState, session, cursor.row);\n }\n };\n Editor.prototype.autoIndent = function () {\n var session = this.session;\n var mode = session.getMode();\n var startRow, endRow;\n if (this.selection.isEmpty()) {\n startRow = 0;\n endRow = session.doc.getLength() - 1;\n }\n else {\n var selectedRange = this.getSelectionRange();\n startRow = selectedRange.start.row;\n endRow = selectedRange.end.row;\n }\n var prevLineState = \"\";\n var prevLine = \"\";\n var lineIndent = \"\";\n var line, currIndent, range;\n var tab = session.getTabString();\n for (var row = startRow; row <= endRow; row++) {\n if (row > 0) {\n prevLineState = session.getState(row - 1);\n prevLine = session.getLine(row - 1);\n lineIndent = mode.getNextLineIndent(prevLineState, prevLine, tab);\n }\n line = session.getLine(row);\n currIndent = mode.$getIndent(line);\n if (lineIndent !== currIndent) {\n if (currIndent.length > 0) {\n range = new Range(row, 0, row, currIndent.length);\n session.remove(range);\n }\n if (lineIndent.length > 0) {\n session.insert({ row: row, column: 0 }, lineIndent);\n }\n }\n mode.autoOutdent(prevLineState, session, row);\n }\n };\n Editor.prototype.onTextInput = function (text, composition) {\n if (!composition)\n return this.keyBinding.onTextInput(text);\n this.startOperation({ command: { name: \"insertstring\" } });\n var applyComposition = this.applyComposition.bind(this, text, composition);\n if (this.selection.rangeCount)\n this.forEachSelection(applyComposition);\n else\n applyComposition();\n this.endOperation();\n };\n Editor.prototype.applyComposition = function (text, composition) {\n if (composition.extendLeft || composition.extendRight) {\n var r = this.selection.getRange();\n r.start.column -= composition.extendLeft;\n r.end.column += composition.extendRight;\n if (r.start.column < 0) {\n r.start.row--;\n r.start.column += this.session.getLine(r.start.row).length + 1;\n }\n this.selection.setRange(r);\n if (!text && !r.isEmpty())\n this.remove();\n }\n if (text || !this.selection.isEmpty())\n this.insert(text, true);\n if (composition.restoreStart || composition.restoreEnd) {\n var r = this.selection.getRange();\n r.start.column -= composition.restoreStart;\n r.end.column -= composition.restoreEnd;\n this.selection.setRange(r);\n }\n };\n Editor.prototype.onCommandKey = function (e, hashId, keyCode) {\n return this.keyBinding.onCommandKey(e, hashId, keyCode);\n };\n Editor.prototype.setOverwrite = function (overwrite) {\n this.session.setOverwrite(overwrite);\n };\n Editor.prototype.getOverwrite = function () {\n return this.session.getOverwrite();\n };\n Editor.prototype.toggleOverwrite = function () {\n this.session.toggleOverwrite();\n };\n Editor.prototype.setScrollSpeed = function (speed) {\n this.setOption(\"scrollSpeed\", speed);\n };\n Editor.prototype.getScrollSpeed = function () {\n return this.getOption(\"scrollSpeed\");\n };\n Editor.prototype.setDragDelay = function (dragDelay) {\n this.setOption(\"dragDelay\", dragDelay);\n };\n Editor.prototype.getDragDelay = function () {\n return this.getOption(\"dragDelay\");\n };\n Editor.prototype.setSelectionStyle = function (val) {\n this.setOption(\"selectionStyle\", val);\n };\n Editor.prototype.getSelectionStyle = function () {\n return this.getOption(\"selectionStyle\");\n };\n Editor.prototype.setHighlightActiveLine = function (shouldHighlight) {\n this.setOption(\"highlightActiveLine\", shouldHighlight);\n };\n Editor.prototype.getHighlightActiveLine = function () {\n return this.getOption(\"highlightActiveLine\");\n };\n Editor.prototype.setHighlightGutterLine = function (shouldHighlight) {\n this.setOption(\"highlightGutterLine\", shouldHighlight);\n };\n Editor.prototype.getHighlightGutterLine = function () {\n return this.getOption(\"highlightGutterLine\");\n };\n Editor.prototype.setHighlightSelectedWord = function (shouldHighlight) {\n this.setOption(\"highlightSelectedWord\", shouldHighlight);\n };\n Editor.prototype.getHighlightSelectedWord = function () {\n return this.$highlightSelectedWord;\n };\n Editor.prototype.setAnimatedScroll = function (shouldAnimate) {\n this.renderer.setAnimatedScroll(shouldAnimate);\n };\n Editor.prototype.getAnimatedScroll = function () {\n return this.renderer.getAnimatedScroll();\n };\n Editor.prototype.setShowInvisibles = function (showInvisibles) {\n this.renderer.setShowInvisibles(showInvisibles);\n };\n Editor.prototype.getShowInvisibles = function () {\n return this.renderer.getShowInvisibles();\n };\n Editor.prototype.setDisplayIndentGuides = function (display) {\n this.renderer.setDisplayIndentGuides(display);\n };\n Editor.prototype.getDisplayIndentGuides = function () {\n return this.renderer.getDisplayIndentGuides();\n };\n Editor.prototype.setHighlightIndentGuides = function (highlight) {\n this.renderer.setHighlightIndentGuides(highlight);\n };\n Editor.prototype.getHighlightIndentGuides = function () {\n return this.renderer.getHighlightIndentGuides();\n };\n Editor.prototype.setShowPrintMargin = function (showPrintMargin) {\n this.renderer.setShowPrintMargin(showPrintMargin);\n };\n Editor.prototype.getShowPrintMargin = function () {\n return this.renderer.getShowPrintMargin();\n };\n Editor.prototype.setPrintMarginColumn = function (showPrintMargin) {\n this.renderer.setPrintMarginColumn(showPrintMargin);\n };\n Editor.prototype.getPrintMarginColumn = function () {\n return this.renderer.getPrintMarginColumn();\n };\n Editor.prototype.setReadOnly = function (readOnly) {\n this.setOption(\"readOnly\", readOnly);\n };\n Editor.prototype.getReadOnly = function () {\n return this.getOption(\"readOnly\");\n };\n Editor.prototype.setBehavioursEnabled = function (enabled) {\n this.setOption(\"behavioursEnabled\", enabled);\n };\n Editor.prototype.getBehavioursEnabled = function () {\n return this.getOption(\"behavioursEnabled\");\n };\n Editor.prototype.setWrapBehavioursEnabled = function (enabled) {\n this.setOption(\"wrapBehavioursEnabled\", enabled);\n };\n Editor.prototype.getWrapBehavioursEnabled = function () {\n return this.getOption(\"wrapBehavioursEnabled\");\n };\n Editor.prototype.setShowFoldWidgets = function (show) {\n this.setOption(\"showFoldWidgets\", show);\n };\n Editor.prototype.getShowFoldWidgets = function () {\n return this.getOption(\"showFoldWidgets\");\n };\n Editor.prototype.setFadeFoldWidgets = function (fade) {\n this.setOption(\"fadeFoldWidgets\", fade);\n };\n Editor.prototype.getFadeFoldWidgets = function () {\n return this.getOption(\"fadeFoldWidgets\");\n };\n Editor.prototype.remove = function (dir) {\n if (this.selection.isEmpty()) {\n if (dir == \"left\")\n this.selection.selectLeft();\n else\n this.selection.selectRight();\n }\n var range = this.getSelectionRange();\n if (this.getBehavioursEnabled()) {\n var session = this.session;\n var state = session.getState(range.start.row);\n var new_range = session.getMode().transformAction(state, 'deletion', this, session, range);\n if (range.end.column === 0) {\n var text = session.getTextRange(range);\n if (text[text.length - 1] == \"\\n\") {\n var line = session.getLine(range.end.row);\n if (/^\\s+$/.test(line)) {\n range.end.column = line.length;\n }\n }\n }\n if (new_range)\n range = new_range;\n }\n this.session.remove(range);\n this.clearSelection();\n };\n Editor.prototype.removeWordRight = function () {\n if (this.selection.isEmpty())\n this.selection.selectWordRight();\n this.session.remove(this.getSelectionRange());\n this.clearSelection();\n };\n Editor.prototype.removeWordLeft = function () {\n if (this.selection.isEmpty())\n this.selection.selectWordLeft();\n this.session.remove(this.getSelectionRange());\n this.clearSelection();\n };\n Editor.prototype.removeToLineStart = function () {\n if (this.selection.isEmpty())\n this.selection.selectLineStart();\n if (this.selection.isEmpty())\n this.selection.selectLeft();\n this.session.remove(this.getSelectionRange());\n this.clearSelection();\n };\n Editor.prototype.removeToLineEnd = function () {\n if (this.selection.isEmpty())\n this.selection.selectLineEnd();\n var range = this.getSelectionRange();\n if (range.start.column == range.end.column && range.start.row == range.end.row) {\n range.end.column = 0;\n range.end.row++;\n }\n this.session.remove(range);\n this.clearSelection();\n };\n Editor.prototype.splitLine = function () {\n if (!this.selection.isEmpty()) {\n this.session.remove(this.getSelectionRange());\n this.clearSelection();\n }\n var cursor = this.getCursorPosition();\n this.insert(\"\\n\");\n this.moveCursorToPosition(cursor);\n };\n Editor.prototype.setGhostText = function (text, position) {\n if (!this.session.widgetManager) {\n this.session.widgetManager = new LineWidgets(this.session);\n this.session.widgetManager.attach(this);\n }\n this.renderer.setGhostText(text, position);\n };\n Editor.prototype.removeGhostText = function () {\n if (!this.session.widgetManager)\n return;\n this.renderer.removeGhostText();\n };\n Editor.prototype.transposeLetters = function () {\n if (!this.selection.isEmpty()) {\n return;\n }\n var cursor = this.getCursorPosition();\n var column = cursor.column;\n if (column === 0)\n return;\n var line = this.session.getLine(cursor.row);\n var swap, range;\n if (column < line.length) {\n swap = line.charAt(column) + line.charAt(column - 1);\n range = new Range(cursor.row, column - 1, cursor.row, column + 1);\n }\n else {\n swap = line.charAt(column - 1) + line.charAt(column - 2);\n range = new Range(cursor.row, column - 2, cursor.row, column);\n }\n this.session.replace(range, swap);\n this.session.selection.moveToPosition(range.end);\n };\n Editor.prototype.toLowerCase = function () {\n var originalRange = this.getSelectionRange();\n if (this.selection.isEmpty()) {\n this.selection.selectWord();\n }\n var range = this.getSelectionRange();\n var text = this.session.getTextRange(range);\n this.session.replace(range, text.toLowerCase());\n this.selection.setSelectionRange(originalRange);\n };\n Editor.prototype.toUpperCase = function () {\n var originalRange = this.getSelectionRange();\n if (this.selection.isEmpty()) {\n this.selection.selectWord();\n }\n var range = this.getSelectionRange();\n var text = this.session.getTextRange(range);\n this.session.replace(range, text.toUpperCase());\n this.selection.setSelectionRange(originalRange);\n };\n Editor.prototype.indent = function () {\n var session = this.session;\n var range = this.getSelectionRange();\n if (range.start.row < range.end.row) {\n var rows = this.$getSelectedRows();\n session.indentRows(rows.first, rows.last, \"\\t\");\n return;\n }\n else if (range.start.column < range.end.column) {\n var text = session.getTextRange(range);\n if (!/^\\s+$/.test(text)) {\n var rows = this.$getSelectedRows();\n session.indentRows(rows.first, rows.last, \"\\t\");\n return;\n }\n }\n var line = session.getLine(range.start.row);\n var position = range.start;\n var size = session.getTabSize();\n var column = session.documentToScreenColumn(position.row, position.column);\n if (this.session.getUseSoftTabs()) {\n var count = (size - column % size);\n var indentString = lang.stringRepeat(\" \", count);\n }\n else {\n var count = column % size;\n while (line[range.start.column - 1] == \" \" && count) {\n range.start.column--;\n count--;\n }\n this.selection.setSelectionRange(range);\n indentString = \"\\t\";\n }\n return this.insert(indentString);\n };\n Editor.prototype.blockIndent = function () {\n var rows = this.$getSelectedRows();\n this.session.indentRows(rows.first, rows.last, \"\\t\");\n };\n Editor.prototype.blockOutdent = function () {\n var selection = this.session.getSelection();\n this.session.outdentRows(selection.getRange());\n };\n Editor.prototype.sortLines = function () {\n var rows = this.$getSelectedRows();\n var session = this.session;\n var lines = [];\n for (var i = rows.first; i <= rows.last; i++)\n lines.push(session.getLine(i));\n lines.sort(function (a, b) {\n if (a.toLowerCase() < b.toLowerCase())\n return -1;\n if (a.toLowerCase() > b.toLowerCase())\n return 1;\n return 0;\n });\n var deleteRange = new Range(0, 0, 0, 0);\n for (var i = rows.first; i <= rows.last; i++) {\n var line = session.getLine(i);\n deleteRange.start.row = i;\n deleteRange.end.row = i;\n deleteRange.end.column = line.length;\n session.replace(deleteRange, lines[i - rows.first]);\n }\n };\n Editor.prototype.toggleCommentLines = function () {\n var state = this.session.getState(this.getCursorPosition().row);\n var rows = this.$getSelectedRows();\n this.session.getMode().toggleCommentLines(state, this.session, rows.first, rows.last);\n };\n Editor.prototype.toggleBlockComment = function () {\n var cursor = this.getCursorPosition();\n var state = this.session.getState(cursor.row);\n var range = this.getSelectionRange();\n this.session.getMode().toggleBlockComment(state, this.session, range, cursor);\n };\n Editor.prototype.getNumberAt = function (row, column) {\n var _numberRx = /[\\-]?[0-9]+(?:\\.[0-9]+)?/g;\n _numberRx.lastIndex = 0;\n var s = this.session.getLine(row);\n while (_numberRx.lastIndex < column) {\n var m = _numberRx.exec(s);\n if (m.index <= column && m.index + m[0].length >= column) {\n var number = {\n value: m[0],\n start: m.index,\n end: m.index + m[0].length\n };\n return number;\n }\n }\n return null;\n };\n Editor.prototype.modifyNumber = function (amount) {\n var row = this.selection.getCursor().row;\n var column = this.selection.getCursor().column;\n var charRange = new Range(row, column - 1, row, column);\n var c = this.session.getTextRange(charRange);\n if (!isNaN(parseFloat(c)) && isFinite(c)) {\n var nr = this.getNumberAt(row, column);\n if (nr) {\n var fp = nr.value.indexOf(\".\") >= 0 ? nr.start + nr.value.indexOf(\".\") + 1 : nr.end;\n var decimals = nr.start + nr.value.length - fp;\n var t = parseFloat(nr.value);\n t *= Math.pow(10, decimals);\n if (fp !== nr.end && column < fp) {\n amount *= Math.pow(10, nr.end - column - 1);\n }\n else {\n amount *= Math.pow(10, nr.end - column);\n }\n t += amount;\n t /= Math.pow(10, decimals);\n var nnr = t.toFixed(decimals);\n var replaceRange = new Range(row, nr.start, row, nr.end);\n this.session.replace(replaceRange, nnr);\n this.moveCursorTo(row, Math.max(nr.start + 1, column + nnr.length - nr.value.length));\n }\n }\n else {\n this.toggleWord();\n }\n };\n Editor.prototype.toggleWord = function () {\n var row = this.selection.getCursor().row;\n var column = this.selection.getCursor().column;\n this.selection.selectWord();\n var currentState = this.getSelectedText();\n var currWordStart = this.selection.getWordRange().start.column;\n var wordParts = currentState.replace(/([a-z]+|[A-Z]+)(?=[A-Z_]|$)/g, '$1 ').split(/\\s/);\n var delta = column - currWordStart - 1;\n if (delta < 0)\n delta = 0;\n var curLength = 0, itLength = 0;\n var that = this;\n if (currentState.match(/[A-Za-z0-9_]+/)) {\n wordParts.forEach(function (item, i) {\n itLength = curLength + item.length;\n if (delta >= curLength && delta <= itLength) {\n currentState = item;\n that.selection.clearSelection();\n that.moveCursorTo(row, curLength + currWordStart);\n that.selection.selectTo(row, itLength + currWordStart);\n }\n curLength = itLength;\n });\n }\n var wordPairs = this.$toggleWordPairs;\n var reg;\n for (var i = 0; i < wordPairs.length; i++) {\n var item = wordPairs[i];\n for (var j = 0; j <= 1; j++) {\n var negate = +!j;\n var firstCondition = currentState.match(new RegExp('^\\\\s?_?(' + lang.escapeRegExp(item[j]) + ')\\\\s?$', 'i'));\n if (firstCondition) {\n var secondCondition = currentState.match(new RegExp('([_]|^|\\\\s)(' + lang.escapeRegExp(firstCondition[1]) + ')($|\\\\s)', 'g'));\n if (secondCondition) {\n reg = currentState.replace(new RegExp(lang.escapeRegExp(item[j]), 'i'), function (result) {\n var res = item[negate];\n if (result.toUpperCase() == result) {\n res = res.toUpperCase();\n }\n else if (result.charAt(0).toUpperCase() == result.charAt(0)) {\n res = res.substr(0, 0) + item[negate].charAt(0).toUpperCase() + res.substr(1);\n }\n return res;\n });\n this.insert(reg);\n reg = \"\";\n }\n }\n }\n }\n };\n Editor.prototype.findLinkAt = function (row, column) {\n var e_1, _a;\n var line = this.session.getLine(row);\n var wordParts = line.split(/((?:https?|ftp):\\/\\/[\\S]+)/);\n var columnPosition = column;\n if (columnPosition < 0)\n columnPosition = 0;\n var previousPosition = 0, currentPosition = 0, match;\n try {\n for (var wordParts_1 = __values(wordParts), wordParts_1_1 = wordParts_1.next(); !wordParts_1_1.done; wordParts_1_1 = wordParts_1.next()) {\n var item = wordParts_1_1.value;\n currentPosition = previousPosition + item.length;\n if (columnPosition >= previousPosition && columnPosition <= currentPosition) {\n if (item.match(/((?:https?|ftp):\\/\\/[\\S]+)/)) {\n match = item.replace(/[\\s:.,'\";}\\]]+$/, \"\");\n break;\n }\n }\n previousPosition = currentPosition;\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (wordParts_1_1 && !wordParts_1_1.done && (_a = wordParts_1.return)) _a.call(wordParts_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return match;\n };\n Editor.prototype.openLink = function () {\n var cursor = this.selection.getCursor();\n var url = this.findLinkAt(cursor.row, cursor.column);\n if (url)\n window.open(url, '_blank');\n return url != null;\n };\n Editor.prototype.removeLines = function () {\n var rows = this.$getSelectedRows();\n this.session.removeFullLines(rows.first, rows.last);\n this.clearSelection();\n };\n Editor.prototype.duplicateSelection = function () {\n var sel = this.selection;\n var doc = this.session;\n var range = sel.getRange();\n var reverse = sel.isBackwards();\n if (range.isEmpty()) {\n var row = range.start.row;\n doc.duplicateLines(row, row);\n }\n else {\n var point = reverse ? range.start : range.end;\n var endPoint = doc.insert(point, doc.getTextRange(range), false);\n range.start = point;\n range.end = endPoint;\n sel.setSelectionRange(range, reverse);\n }\n };\n Editor.prototype.moveLinesDown = function () {\n this.$moveLines(1, false);\n };\n Editor.prototype.moveLinesUp = function () {\n this.$moveLines(-1, false);\n };\n Editor.prototype.moveText = function (range, toPosition, copy) {\n return this.session.moveText(range, toPosition, copy);\n };\n Editor.prototype.copyLinesUp = function () {\n this.$moveLines(-1, true);\n };\n Editor.prototype.copyLinesDown = function () {\n this.$moveLines(1, true);\n };\n Editor.prototype.$moveLines = function (dir, copy) {\n var rows, moved;\n var selection = this.selection;\n if (!selection.inMultiSelectMode || this.inVirtualSelectionMode) {\n var range = selection.toOrientedRange();\n rows = this.$getSelectedRows(range);\n moved = this.session.$moveLines(rows.first, rows.last, copy ? 0 : dir);\n if (copy && dir == -1)\n moved = 0;\n range.moveBy(moved, 0);\n selection.fromOrientedRange(range);\n }\n else {\n var ranges = selection.rangeList.ranges;\n selection.rangeList.detach(this.session);\n this.inVirtualSelectionMode = true;\n var diff = 0;\n var totalDiff = 0;\n var l = ranges.length;\n for (var i = 0; i < l; i++) {\n var rangeIndex = i;\n ranges[i].moveBy(diff, 0);\n rows = this.$getSelectedRows(ranges[i]);\n var first = rows.first;\n var last = rows.last;\n while (++i < l) {\n if (totalDiff)\n ranges[i].moveBy(totalDiff, 0);\n var subRows = this.$getSelectedRows(ranges[i]);\n if (copy && subRows.first != last)\n break;\n else if (!copy && subRows.first > last + 1)\n break;\n last = subRows.last;\n }\n i--;\n diff = this.session.$moveLines(first, last, copy ? 0 : dir);\n if (copy && dir == -1)\n rangeIndex = i + 1;\n while (rangeIndex <= i) {\n ranges[rangeIndex].moveBy(diff, 0);\n rangeIndex++;\n }\n if (!copy)\n diff = 0;\n totalDiff += diff;\n }\n selection.fromOrientedRange(selection.ranges[0]);\n selection.rangeList.attach(this.session);\n this.inVirtualSelectionMode = false;\n }\n };\n Editor.prototype.$getSelectedRows = function (range) {\n range = (range || this.getSelectionRange()).collapseRows();\n return {\n first: this.session.getRowFoldStart(range.start.row),\n last: this.session.getRowFoldEnd(range.end.row)\n };\n };\n Editor.prototype.onCompositionStart = function (compositionState) {\n this.renderer.showComposition(compositionState);\n };\n Editor.prototype.onCompositionUpdate = function (text) {\n this.renderer.setCompositionText(text);\n };\n Editor.prototype.onCompositionEnd = function () {\n this.renderer.hideComposition();\n };\n Editor.prototype.getFirstVisibleRow = function () {\n return this.renderer.getFirstVisibleRow();\n };\n Editor.prototype.getLastVisibleRow = function () {\n return this.renderer.getLastVisibleRow();\n };\n Editor.prototype.isRowVisible = function (row) {\n return (row >= this.getFirstVisibleRow() && row <= this.getLastVisibleRow());\n };\n Editor.prototype.isRowFullyVisible = function (row) {\n return (row >= this.renderer.getFirstFullyVisibleRow() && row <= this.renderer.getLastFullyVisibleRow());\n };\n Editor.prototype.$getVisibleRowCount = function () {\n return this.renderer.getScrollBottomRow() - this.renderer.getScrollTopRow() + 1;\n };\n Editor.prototype.$moveByPage = function (dir, select) {\n var renderer = this.renderer;\n var config = this.renderer.layerConfig;\n var rows = dir * Math.floor(config.height / config.lineHeight);\n if (select === true) {\n this.selection.$moveSelection(function () {\n this.moveCursorBy(rows, 0);\n });\n }\n else if (select === false) {\n this.selection.moveCursorBy(rows, 0);\n this.selection.clearSelection();\n }\n var scrollTop = renderer.scrollTop;\n renderer.scrollBy(0, rows * config.lineHeight);\n if (select != null)\n renderer.scrollCursorIntoView(null, 0.5);\n renderer.animateScrolling(scrollTop);\n };\n Editor.prototype.selectPageDown = function () {\n this.$moveByPage(1, true);\n };\n Editor.prototype.selectPageUp = function () {\n this.$moveByPage(-1, true);\n };\n Editor.prototype.gotoPageDown = function () {\n this.$moveByPage(1, false);\n };\n Editor.prototype.gotoPageUp = function () {\n this.$moveByPage(-1, false);\n };\n Editor.prototype.scrollPageDown = function () {\n this.$moveByPage(1);\n };\n Editor.prototype.scrollPageUp = function () {\n this.$moveByPage(-1);\n };\n Editor.prototype.scrollToRow = function (row) {\n this.renderer.scrollToRow(row);\n };\n Editor.prototype.scrollToLine = function (line, center, animate, callback) {\n this.renderer.scrollToLine(line, center, animate, callback);\n };\n Editor.prototype.centerSelection = function () {\n var range = this.getSelectionRange();\n var pos = {\n row: Math.floor(range.start.row + (range.end.row - range.start.row) / 2),\n column: Math.floor(range.start.column + (range.end.column - range.start.column) / 2)\n };\n this.renderer.alignCursor(pos, 0.5);\n };\n Editor.prototype.getCursorPosition = function () {\n return this.selection.getCursor();\n };\n Editor.prototype.getCursorPositionScreen = function () {\n return this.session.documentToScreenPosition(this.getCursorPosition());\n };\n Editor.prototype.getSelectionRange = function () {\n return this.selection.getRange();\n };\n Editor.prototype.selectAll = function () {\n this.selection.selectAll();\n };\n Editor.prototype.clearSelection = function () {\n this.selection.clearSelection();\n };\n Editor.prototype.moveCursorTo = function (row, column) {\n this.selection.moveCursorTo(row, column);\n };\n Editor.prototype.moveCursorToPosition = function (pos) {\n this.selection.moveCursorToPosition(pos);\n };\n Editor.prototype.jumpToMatching = function (select, expand) {\n var cursor = this.getCursorPosition();\n var iterator = new TokenIterator(this.session, cursor.row, cursor.column);\n var prevToken = iterator.getCurrentToken();\n var tokenCount = 0;\n if (prevToken && prevToken.type.indexOf('tag-name') !== -1) {\n prevToken = iterator.stepBackward();\n }\n var token = prevToken || iterator.stepForward();\n if (!token)\n return;\n var matchType;\n var found = false;\n var depth = {};\n var i = cursor.column - token.start;\n var bracketType;\n var brackets = {\n \")\": \"(\",\n \"(\": \"(\",\n \"]\": \"[\",\n \"[\": \"[\",\n \"{\": \"{\",\n \"}\": \"{\"\n };\n do {\n if (token.value.match(/[{}()\\[\\]]/g)) {\n for (; i < token.value.length && !found; i++) {\n if (!brackets[token.value[i]]) {\n continue;\n }\n bracketType = brackets[token.value[i]] + '.' + token.type.replace(\"rparen\", \"lparen\");\n if (isNaN(depth[bracketType])) {\n depth[bracketType] = 0;\n }\n switch (token.value[i]) {\n case '(':\n case '[':\n case '{':\n depth[bracketType]++;\n break;\n case ')':\n case ']':\n case '}':\n depth[bracketType]--;\n if (depth[bracketType] === -1) {\n matchType = 'bracket';\n found = true;\n }\n break;\n }\n }\n }\n else if (token.type.indexOf('tag-name') !== -1) {\n if (isNaN(depth[token.value])) {\n depth[token.value] = 0;\n }\n if (prevToken.value === '<' && tokenCount > 1) {\n depth[token.value]++;\n }\n else if (prevToken.value === '= 0; --i) {\n if (this.$tryReplace(ranges[i], replacement)) {\n replaced++;\n }\n }\n this.selection.setSelectionRange(selection);\n return replaced;\n };\n Editor.prototype.$tryReplace = function (range, replacement) {\n var input = this.session.getTextRange(range);\n replacement = this.$search.replace(input, replacement);\n if (replacement !== null) {\n range.end = this.session.replace(range, replacement);\n return range;\n }\n else {\n return null;\n }\n };\n Editor.prototype.getLastSearchOptions = function () {\n return this.$search.getOptions();\n };\n Editor.prototype.find = function (needle, options, animate) {\n if (!options)\n options = {};\n if (typeof needle == \"string\" || needle instanceof RegExp)\n options.needle = needle;\n else if (typeof needle == \"object\")\n oop.mixin(options, needle);\n var range = this.selection.getRange();\n if (options.needle == null) {\n needle = this.session.getTextRange(range)\n || this.$search.$options.needle;\n if (!needle) {\n range = this.session.getWordRange(range.start.row, range.start.column);\n needle = this.session.getTextRange(range);\n }\n this.$search.set({ needle: needle });\n }\n this.$search.set(options);\n if (!options.start)\n this.$search.set({ start: range });\n var newRange = this.$search.find(this.session);\n if (options.preventScroll)\n return newRange;\n if (newRange) {\n this.revealRange(newRange, animate);\n return newRange;\n }\n if (options.backwards)\n range.start = range.end;\n else\n range.end = range.start;\n this.selection.setRange(range);\n };\n Editor.prototype.findNext = function (options, animate) {\n this.find({ skipCurrent: true, backwards: false }, options, animate);\n };\n Editor.prototype.findPrevious = function (options, animate) {\n this.find(options, { skipCurrent: true, backwards: true }, animate);\n };\n Editor.prototype.revealRange = function (range, animate) {\n this.session.unfold(range);\n this.selection.setSelectionRange(range);\n var scrollTop = this.renderer.scrollTop;\n this.renderer.scrollSelectionIntoView(range.start, range.end, 0.5);\n if (animate !== false)\n this.renderer.animateScrolling(scrollTop);\n };\n Editor.prototype.undo = function () {\n this.session.getUndoManager().undo(this.session);\n this.renderer.scrollCursorIntoView(null, 0.5);\n };\n Editor.prototype.redo = function () {\n this.session.getUndoManager().redo(this.session);\n this.renderer.scrollCursorIntoView(null, 0.5);\n };\n Editor.prototype.destroy = function () {\n if (this.$toDestroy) {\n this.$toDestroy.forEach(function (el) {\n el.destroy();\n });\n this.$toDestroy = null;\n }\n if (this.$mouseHandler)\n this.$mouseHandler.destroy();\n this.renderer.destroy();\n this._signal(\"destroy\", this);\n if (this.session)\n this.session.destroy();\n if (this._$emitInputEvent)\n this._$emitInputEvent.cancel();\n this.removeAllListeners();\n };\n Editor.prototype.setAutoScrollEditorIntoView = function (enable) {\n if (!enable)\n return;\n var rect;\n var self = this;\n var shouldScroll = false;\n if (!this.$scrollAnchor)\n this.$scrollAnchor = document.createElement(\"div\");\n var scrollAnchor = this.$scrollAnchor;\n scrollAnchor.style.cssText = \"position:absolute\";\n this.container.insertBefore(scrollAnchor, this.container.firstChild);\n var onChangeSelection = this.on(\"changeSelection\", function () {\n shouldScroll = true;\n });\n var onBeforeRender = this.renderer.on(\"beforeRender\", function () {\n if (shouldScroll)\n rect = self.renderer.container.getBoundingClientRect();\n });\n var onAfterRender = this.renderer.on(\"afterRender\", function () {\n if (shouldScroll && rect && (self.isFocused()\n || self.searchBox && self.searchBox.isFocused())) {\n var renderer = self.renderer;\n var pos = renderer.$cursorLayer.$pixelPos;\n var config = renderer.layerConfig;\n var top = pos.top - config.offset;\n if (pos.top >= 0 && top + rect.top < 0) {\n shouldScroll = true;\n }\n else if (pos.top < config.height &&\n pos.top + rect.top + config.lineHeight > window.innerHeight) {\n shouldScroll = false;\n }\n else {\n shouldScroll = null;\n }\n if (shouldScroll != null) {\n scrollAnchor.style.top = top + \"px\";\n scrollAnchor.style.left = pos.left + \"px\";\n scrollAnchor.style.height = config.lineHeight + \"px\";\n scrollAnchor.scrollIntoView(shouldScroll);\n }\n shouldScroll = rect = null;\n }\n });\n this.setAutoScrollEditorIntoView = function (enable) {\n if (enable)\n return;\n delete this.setAutoScrollEditorIntoView;\n this.off(\"changeSelection\", onChangeSelection);\n this.renderer.off(\"afterRender\", onAfterRender);\n this.renderer.off(\"beforeRender\", onBeforeRender);\n };\n };\n Editor.prototype.$resetCursorStyle = function () {\n var style = this.$cursorStyle || \"ace\";\n var cursorLayer = this.renderer.$cursorLayer;\n if (!cursorLayer)\n return;\n cursorLayer.setSmoothBlinking(/smooth/.test(style));\n cursorLayer.isBlinking = !this.$readOnly && style != \"wide\";\n dom.setCssClass(cursorLayer.element, \"ace_slim-cursors\", /slim/.test(style));\n };\n Editor.prototype.prompt = function (message, options, callback) {\n var editor = this;\n config.loadModule(\"ace/ext/prompt\", function (module) {\n module.prompt(editor, message, options, callback);\n });\n };\n return Editor;\n}());\nEditor.$uid = 0;\nEditor.prototype.curOp = null;\nEditor.prototype.prevOp = {};\nEditor.prototype.$mergeableCommands = [\"backspace\", \"del\", \"insertstring\"];\nEditor.prototype.$toggleWordPairs = [\n [\"first\", \"last\"],\n [\"true\", \"false\"],\n [\"yes\", \"no\"],\n [\"width\", \"height\"],\n [\"top\", \"bottom\"],\n [\"right\", \"left\"],\n [\"on\", \"off\"],\n [\"x\", \"y\"],\n [\"get\", \"set\"],\n [\"max\", \"min\"],\n [\"horizontal\", \"vertical\"],\n [\"show\", \"hide\"],\n [\"add\", \"remove\"],\n [\"up\", \"down\"],\n [\"before\", \"after\"],\n [\"even\", \"odd\"],\n [\"in\", \"out\"],\n [\"inside\", \"outside\"],\n [\"next\", \"previous\"],\n [\"increase\", \"decrease\"],\n [\"attach\", \"detach\"],\n [\"&&\", \"||\"],\n [\"==\", \"!=\"]\n];\noop.implement(Editor.prototype, EventEmitter);\nconfig.defineOptions(Editor.prototype, \"editor\", {\n selectionStyle: {\n set: function (style) {\n this.onSelectionChange();\n this._signal(\"changeSelectionStyle\", { data: style });\n },\n initialValue: \"line\"\n },\n highlightActiveLine: {\n set: function () { this.$updateHighlightActiveLine(); },\n initialValue: true\n },\n highlightSelectedWord: {\n set: function (shouldHighlight) { this.$onSelectionChange(); },\n initialValue: true\n },\n readOnly: {\n set: function (readOnly) {\n this.textInput.setReadOnly(readOnly);\n this.$resetCursorStyle();\n },\n initialValue: false\n },\n copyWithEmptySelection: {\n set: function (value) {\n this.textInput.setCopyWithEmptySelection(value);\n },\n initialValue: false\n },\n cursorStyle: {\n set: function (val) { this.$resetCursorStyle(); },\n values: [\"ace\", \"slim\", \"smooth\", \"wide\"],\n initialValue: \"ace\"\n },\n mergeUndoDeltas: {\n values: [false, true, \"always\"],\n initialValue: true\n },\n behavioursEnabled: { initialValue: true },\n wrapBehavioursEnabled: { initialValue: true },\n enableAutoIndent: { initialValue: true },\n autoScrollEditorIntoView: {\n set: function (val) { this.setAutoScrollEditorIntoView(val); }\n },\n keyboardHandler: {\n set: function (val) { this.setKeyboardHandler(val); },\n get: function () { return this.$keybindingId; },\n handlesSet: true\n },\n value: {\n set: function (val) { this.session.setValue(val); },\n get: function () { return this.getValue(); },\n handlesSet: true,\n hidden: true\n },\n session: {\n set: function (val) { this.setSession(val); },\n get: function () { return this.session; },\n handlesSet: true,\n hidden: true\n },\n showLineNumbers: {\n set: function (show) {\n this.renderer.$gutterLayer.setShowLineNumbers(show);\n this.renderer.$loop.schedule(this.renderer.CHANGE_GUTTER);\n if (show && this.$relativeLineNumbers)\n relativeNumberRenderer.attach(this);\n else\n relativeNumberRenderer.detach(this);\n },\n initialValue: true\n },\n relativeLineNumbers: {\n set: function (value) {\n if (this.$showLineNumbers && value)\n relativeNumberRenderer.attach(this);\n else\n relativeNumberRenderer.detach(this);\n }\n },\n placeholder: {\n set: function (message) {\n if (!this.$updatePlaceholder) {\n this.$updatePlaceholder = function () {\n var hasValue = this.session && (this.renderer.$composition ||\n this.session.getLength() > 1 || this.session.getLine(0).length > 0);\n if (hasValue && this.renderer.placeholderNode) {\n this.renderer.off(\"afterRender\", this.$updatePlaceholder);\n dom.removeCssClass(this.container, \"ace_hasPlaceholder\");\n this.renderer.placeholderNode.remove();\n this.renderer.placeholderNode = null;\n }\n else if (!hasValue && !this.renderer.placeholderNode) {\n this.renderer.on(\"afterRender\", this.$updatePlaceholder);\n dom.addCssClass(this.container, \"ace_hasPlaceholder\");\n var el = dom.createElement(\"div\");\n el.className = \"ace_placeholder\";\n el.textContent = this.$placeholder || \"\";\n this.renderer.placeholderNode = el;\n this.renderer.content.appendChild(this.renderer.placeholderNode);\n }\n else if (!hasValue && this.renderer.placeholderNode) {\n this.renderer.placeholderNode.textContent = this.$placeholder || \"\";\n }\n }.bind(this);\n this.on(\"input\", this.$updatePlaceholder);\n }\n this.$updatePlaceholder();\n }\n },\n enableKeyboardAccessibility: {\n set: function (value) {\n var blurCommand = {\n name: \"blurTextInput\",\n description: \"Set focus to the editor content div to allow tabbing through the page\",\n bindKey: \"Esc\",\n exec: function (editor) {\n editor.blur();\n editor.renderer.scroller.focus();\n },\n readOnly: true\n };\n var focusOnEnterKeyup = function (e) {\n if (e.target == this.renderer.scroller && e.keyCode === keys['enter']) {\n e.preventDefault();\n var row = this.getCursorPosition().row;\n if (!this.isRowVisible(row))\n this.scrollToLine(row, true, true);\n this.focus();\n }\n };\n var gutterKeyboardHandler;\n if (value) {\n this.renderer.enableKeyboardAccessibility = true;\n this.renderer.keyboardFocusClassName = \"ace_keyboard-focus\";\n this.textInput.getElement().setAttribute(\"tabindex\", -1);\n this.textInput.setNumberOfExtraLines(useragent.isWin ? 3 : 0);\n this.renderer.scroller.setAttribute(\"tabindex\", 0);\n this.renderer.scroller.setAttribute(\"role\", \"group\");\n this.renderer.scroller.setAttribute(\"aria-roledescription\", nls(\"editor\"));\n this.renderer.scroller.classList.add(this.renderer.keyboardFocusClassName);\n this.renderer.scroller.setAttribute(\"aria-label\", nls(\"Editor content, press Enter to start editing, press Escape to exit\"));\n this.renderer.scroller.addEventListener(\"keyup\", focusOnEnterKeyup.bind(this));\n this.commands.addCommand(blurCommand);\n this.renderer.$gutter.setAttribute(\"tabindex\", 0);\n this.renderer.$gutter.setAttribute(\"aria-hidden\", false);\n this.renderer.$gutter.setAttribute(\"role\", \"group\");\n this.renderer.$gutter.setAttribute(\"aria-roledescription\", nls(\"editor\"));\n this.renderer.$gutter.setAttribute(\"aria-label\", nls(\"Editor gutter, press Enter to interact with controls using arrow keys, press Escape to exit\"));\n this.renderer.$gutter.classList.add(this.renderer.keyboardFocusClassName);\n this.renderer.content.setAttribute(\"aria-hidden\", true);\n if (!gutterKeyboardHandler)\n gutterKeyboardHandler = new GutterKeyboardHandler(this);\n gutterKeyboardHandler.addListener();\n }\n else {\n this.renderer.enableKeyboardAccessibility = false;\n this.textInput.getElement().setAttribute(\"tabindex\", 0);\n this.textInput.setNumberOfExtraLines(0);\n this.renderer.scroller.setAttribute(\"tabindex\", -1);\n this.renderer.scroller.removeAttribute(\"role\");\n this.renderer.scroller.removeAttribute(\"aria-roledescription\");\n this.renderer.scroller.classList.remove(this.renderer.keyboardFocusClassName);\n this.renderer.scroller.removeAttribute(\"aria-label\");\n this.renderer.scroller.removeEventListener(\"keyup\", focusOnEnterKeyup.bind(this));\n this.commands.removeCommand(blurCommand);\n this.renderer.content.removeAttribute(\"aria-hidden\");\n this.renderer.$gutter.setAttribute(\"tabindex\", -1);\n this.renderer.$gutter.setAttribute(\"aria-hidden\", true);\n this.renderer.$gutter.removeAttribute(\"role\");\n this.renderer.$gutter.removeAttribute(\"aria-roledescription\");\n this.renderer.$gutter.removeAttribute(\"aria-label\");\n this.renderer.$gutter.classList.remove(this.renderer.keyboardFocusClassName);\n if (gutterKeyboardHandler)\n gutterKeyboardHandler.removeListener();\n }\n },\n initialValue: false\n },\n customScrollbar: \"renderer\",\n hScrollBarAlwaysVisible: \"renderer\",\n vScrollBarAlwaysVisible: \"renderer\",\n highlightGutterLine: \"renderer\",\n animatedScroll: \"renderer\",\n showInvisibles: \"renderer\",\n showPrintMargin: \"renderer\",\n printMarginColumn: \"renderer\",\n printMargin: \"renderer\",\n fadeFoldWidgets: \"renderer\",\n showFoldWidgets: \"renderer\",\n displayIndentGuides: \"renderer\",\n highlightIndentGuides: \"renderer\",\n showGutter: \"renderer\",\n fontSize: \"renderer\",\n fontFamily: \"renderer\",\n maxLines: \"renderer\",\n minLines: \"renderer\",\n scrollPastEnd: \"renderer\",\n fixedWidthGutter: \"renderer\",\n theme: \"renderer\",\n hasCssTransforms: \"renderer\",\n maxPixelHeight: \"renderer\",\n useTextareaForIME: \"renderer\",\n useResizeObserver: \"renderer\",\n useSvgGutterIcons: \"renderer\",\n showFoldedAnnotations: \"renderer\",\n scrollSpeed: \"$mouseHandler\",\n dragDelay: \"$mouseHandler\",\n dragEnabled: \"$mouseHandler\",\n focusTimeout: \"$mouseHandler\",\n tooltipFollowsMouse: \"$mouseHandler\",\n firstLineNumber: \"session\",\n overwrite: \"session\",\n newLineMode: \"session\",\n useWorker: \"session\",\n useSoftTabs: \"session\",\n navigateWithinSoftTabs: \"session\",\n tabSize: \"session\",\n wrap: \"session\",\n indentedSoftWrap: \"session\",\n foldStyle: \"session\",\n mode: \"session\"\n});\nvar relativeNumberRenderer = {\n getText: function (session, row) {\n return (Math.abs(session.selection.lead.row - row) || (row + 1 + (row < 9 ? \"\\xb7\" : \"\"))) + \"\";\n },\n getWidth: function (session, lastLineNumber, config) {\n return Math.max(lastLineNumber.toString().length, (config.lastRow + 1).toString().length, 2) * config.characterWidth;\n },\n update: function (e, editor) {\n editor.renderer.$loop.schedule(editor.renderer.CHANGE_GUTTER);\n },\n attach: function (editor) {\n editor.renderer.$gutterLayer.$renderer = this;\n editor.on(\"changeSelection\", this.update);\n this.update(null, editor);\n },\n detach: function (editor) {\n if (editor.renderer.$gutterLayer.$renderer == this)\n editor.renderer.$gutterLayer.$renderer = null;\n editor.off(\"changeSelection\", this.update);\n this.update(null, editor);\n }\n};\nexports.Editor = Editor;\n\n});\n\nace.define(\"ace/layer/lines\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"], function(require, exports, module){\"use strict\";\nvar dom = require(\"../lib/dom\");\nvar Lines = /** @class */ (function () {\n function Lines(element, canvasHeight) {\n this.element = element;\n this.canvasHeight = canvasHeight || 500000;\n this.element.style.height = (this.canvasHeight * 2) + \"px\";\n this.cells = [];\n this.cellCache = [];\n this.$offsetCoefficient = 0;\n }\n Lines.prototype.moveContainer = function (config) {\n dom.translate(this.element, 0, -((config.firstRowScreen * config.lineHeight) % this.canvasHeight) - config.offset * this.$offsetCoefficient);\n };\n Lines.prototype.pageChanged = function (oldConfig, newConfig) {\n return (Math.floor((oldConfig.firstRowScreen * oldConfig.lineHeight) / this.canvasHeight) !==\n Math.floor((newConfig.firstRowScreen * newConfig.lineHeight) / this.canvasHeight));\n };\n Lines.prototype.computeLineTop = function (row, config, session) {\n var screenTop = config.firstRowScreen * config.lineHeight;\n var screenPage = Math.floor(screenTop / this.canvasHeight);\n var lineTop = session.documentToScreenRow(row, 0) * config.lineHeight;\n return lineTop - (screenPage * this.canvasHeight);\n };\n Lines.prototype.computeLineHeight = function (row, config, session) {\n return config.lineHeight * session.getRowLineCount(row);\n };\n Lines.prototype.getLength = function () {\n return this.cells.length;\n };\n Lines.prototype.get = function (index) {\n return this.cells[index];\n };\n Lines.prototype.shift = function () {\n this.$cacheCell(this.cells.shift());\n };\n Lines.prototype.pop = function () {\n this.$cacheCell(this.cells.pop());\n };\n Lines.prototype.push = function (cell) {\n if (Array.isArray(cell)) {\n this.cells.push.apply(this.cells, cell);\n var fragment = dom.createFragment(this.element);\n for (var i = 0; i < cell.length; i++) {\n fragment.appendChild(cell[i].element);\n }\n this.element.appendChild(fragment);\n }\n else {\n this.cells.push(cell);\n this.element.appendChild(cell.element);\n }\n };\n Lines.prototype.unshift = function (cell) {\n if (Array.isArray(cell)) {\n this.cells.unshift.apply(this.cells, cell);\n var fragment = dom.createFragment(this.element);\n for (var i = 0; i < cell.length; i++) {\n fragment.appendChild(cell[i].element);\n }\n if (this.element.firstChild)\n this.element.insertBefore(fragment, this.element.firstChild);\n else\n this.element.appendChild(fragment);\n }\n else {\n this.cells.unshift(cell);\n this.element.insertAdjacentElement(\"afterbegin\", cell.element);\n }\n };\n Lines.prototype.last = function () {\n if (this.cells.length)\n return this.cells[this.cells.length - 1];\n else\n return null;\n };\n Lines.prototype.$cacheCell = function (cell) {\n if (!cell)\n return;\n cell.element.remove();\n this.cellCache.push(cell);\n };\n Lines.prototype.createCell = function (row, config, session, initElement) {\n var cell = this.cellCache.pop();\n if (!cell) {\n var element = dom.createElement(\"div\");\n if (initElement)\n initElement(element);\n this.element.appendChild(element);\n cell = {\n element: element,\n text: \"\",\n row: row\n };\n }\n cell.row = row;\n return cell;\n };\n return Lines;\n}());\nexports.Lines = Lines;\n\n});\n\nace.define(\"ace/layer/gutter\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/lib/event_emitter\",\"ace/layer/lines\",\"ace/config\"], function(require, exports, module){\"use strict\";\nvar dom = require(\"../lib/dom\");\nvar oop = require(\"../lib/oop\");\nvar lang = require(\"../lib/lang\");\nvar EventEmitter = require(\"../lib/event_emitter\").EventEmitter;\nvar Lines = require(\"./lines\").Lines;\nvar nls = require(\"../config\").nls;\nvar Gutter = /** @class */ (function () {\n function Gutter(parentEl) {\n this.element = dom.createElement(\"div\");\n this.element.className = \"ace_layer ace_gutter-layer\";\n parentEl.appendChild(this.element);\n this.setShowFoldWidgets(this.$showFoldWidgets);\n this.gutterWidth = 0;\n this.$annotations = [];\n this.$updateAnnotations = this.$updateAnnotations.bind(this);\n this.$lines = new Lines(this.element);\n this.$lines.$offsetCoefficient = 1;\n }\n Gutter.prototype.setSession = function (session) {\n if (this.session)\n this.session.off(\"change\", this.$updateAnnotations);\n this.session = session;\n if (session)\n session.on(\"change\", this.$updateAnnotations);\n };\n Gutter.prototype.addGutterDecoration = function (row, className) {\n if (window.console)\n console.warn && console.warn(\"deprecated use session.addGutterDecoration\");\n this.session.addGutterDecoration(row, className);\n };\n Gutter.prototype.removeGutterDecoration = function (row, className) {\n if (window.console)\n console.warn && console.warn(\"deprecated use session.removeGutterDecoration\");\n this.session.removeGutterDecoration(row, className);\n };\n Gutter.prototype.setAnnotations = function (annotations) {\n this.$annotations = [];\n for (var i = 0; i < annotations.length; i++) {\n var annotation = annotations[i];\n var row = annotation.row;\n var rowInfo = this.$annotations[row];\n if (!rowInfo)\n rowInfo = this.$annotations[row] = { text: [], type: [] };\n var annoText = annotation.text;\n var annoType = annotation.type;\n annoText = annoText ? lang.escapeHTML(annoText) : annotation.html || \"\";\n if (rowInfo.text.indexOf(annoText) === -1) {\n rowInfo.text.push(annoText);\n rowInfo.type.push(annoType);\n }\n var className = annotation.className;\n if (className)\n rowInfo.className = className;\n else if (annoType == \"error\")\n rowInfo.className = \" ace_error\";\n else if (annoType == \"warning\" && rowInfo.className != \" ace_error\")\n rowInfo.className = \" ace_warning\";\n else if (annoType == \"info\" && (!rowInfo.className))\n rowInfo.className = \" ace_info\";\n }\n };\n Gutter.prototype.$updateAnnotations = function (delta) {\n if (!this.$annotations.length)\n return;\n var firstRow = delta.start.row;\n var len = delta.end.row - firstRow;\n if (len === 0) {\n }\n else if (delta.action == 'remove') {\n this.$annotations.splice(firstRow, len + 1, null);\n }\n else {\n var args = new Array(len + 1);\n args.unshift(firstRow, 1);\n this.$annotations.splice.apply(this.$annotations, args);\n }\n };\n Gutter.prototype.update = function (config) {\n this.config = config;\n var session = this.session;\n var firstRow = config.firstRow;\n var lastRow = Math.min(config.lastRow + config.gutterOffset, // needed to compensate for hor scollbar\n session.getLength() - 1);\n this.oldLastRow = lastRow;\n this.config = config;\n this.$lines.moveContainer(config);\n this.$updateCursorRow();\n var fold = session.getNextFoldLine(firstRow);\n var foldStart = fold ? fold.start.row : Infinity;\n var cell = null;\n var index = -1;\n var row = firstRow;\n while (true) {\n if (row > foldStart) {\n row = fold.end.row + 1;\n fold = session.getNextFoldLine(row, fold);\n foldStart = fold ? fold.start.row : Infinity;\n }\n if (row > lastRow) {\n while (this.$lines.getLength() > index + 1)\n this.$lines.pop();\n break;\n }\n cell = this.$lines.get(++index);\n if (cell) {\n cell.row = row;\n }\n else {\n cell = this.$lines.createCell(row, config, this.session, onCreateCell);\n this.$lines.push(cell);\n }\n this.$renderCell(cell, config, fold, row);\n row++;\n }\n this._signal(\"afterRender\");\n this.$updateGutterWidth(config);\n };\n Gutter.prototype.$updateGutterWidth = function (config) {\n var session = this.session;\n var gutterRenderer = session.gutterRenderer || this.$renderer;\n var firstLineNumber = session.$firstLineNumber;\n var lastLineText = this.$lines.last() ? this.$lines.last().text : \"\";\n if (this.$fixedWidth || session.$useWrapMode)\n lastLineText = session.getLength() + firstLineNumber - 1;\n var gutterWidth = gutterRenderer\n ? gutterRenderer.getWidth(session, lastLineText, config)\n : lastLineText.toString().length * config.characterWidth;\n var padding = this.$padding || this.$computePadding();\n gutterWidth += padding.left + padding.right;\n if (gutterWidth !== this.gutterWidth && !isNaN(gutterWidth)) {\n this.gutterWidth = gutterWidth;\n this.element.parentNode.style.width =\n this.element.style.width = Math.ceil(this.gutterWidth) + \"px\";\n this._signal(\"changeGutterWidth\", gutterWidth);\n }\n };\n Gutter.prototype.$updateCursorRow = function () {\n if (!this.$highlightGutterLine)\n return;\n var position = this.session.selection.getCursor();\n if (this.$cursorRow === position.row)\n return;\n this.$cursorRow = position.row;\n };\n Gutter.prototype.updateLineHighlight = function () {\n if (!this.$highlightGutterLine)\n return;\n var row = this.session.selection.cursor.row;\n this.$cursorRow = row;\n if (this.$cursorCell && this.$cursorCell.row == row)\n return;\n if (this.$cursorCell)\n this.$cursorCell.element.className = this.$cursorCell.element.className.replace(\"ace_gutter-active-line \", \"\");\n var cells = this.$lines.cells;\n this.$cursorCell = null;\n for (var i = 0; i < cells.length; i++) {\n var cell = cells[i];\n if (cell.row >= this.$cursorRow) {\n if (cell.row > this.$cursorRow) {\n var fold = this.session.getFoldLine(this.$cursorRow);\n if (i > 0 && fold && fold.start.row == cells[i - 1].row)\n cell = cells[i - 1];\n else\n break;\n }\n cell.element.className = \"ace_gutter-active-line \" + cell.element.className;\n this.$cursorCell = cell;\n break;\n }\n }\n };\n Gutter.prototype.scrollLines = function (config) {\n var oldConfig = this.config;\n this.config = config;\n this.$updateCursorRow();\n if (this.$lines.pageChanged(oldConfig, config))\n return this.update(config);\n this.$lines.moveContainer(config);\n var lastRow = Math.min(config.lastRow + config.gutterOffset, // needed to compensate for hor scollbar\n this.session.getLength() - 1);\n var oldLastRow = this.oldLastRow;\n this.oldLastRow = lastRow;\n if (!oldConfig || oldLastRow < config.firstRow)\n return this.update(config);\n if (lastRow < oldConfig.firstRow)\n return this.update(config);\n if (oldConfig.firstRow < config.firstRow)\n for (var row = this.session.getFoldedRowCount(oldConfig.firstRow, config.firstRow - 1); row > 0; row--)\n this.$lines.shift();\n if (oldLastRow > lastRow)\n for (var row = this.session.getFoldedRowCount(lastRow + 1, oldLastRow); row > 0; row--)\n this.$lines.pop();\n if (config.firstRow < oldConfig.firstRow) {\n this.$lines.unshift(this.$renderLines(config, config.firstRow, oldConfig.firstRow - 1));\n }\n if (lastRow > oldLastRow) {\n this.$lines.push(this.$renderLines(config, oldLastRow + 1, lastRow));\n }\n this.updateLineHighlight();\n this._signal(\"afterRender\");\n this.$updateGutterWidth(config);\n };\n Gutter.prototype.$renderLines = function (config, firstRow, lastRow) {\n var fragment = [];\n var row = firstRow;\n var foldLine = this.session.getNextFoldLine(row);\n var foldStart = foldLine ? foldLine.start.row : Infinity;\n while (true) {\n if (row > foldStart) {\n row = foldLine.end.row + 1;\n foldLine = this.session.getNextFoldLine(row, foldLine);\n foldStart = foldLine ? foldLine.start.row : Infinity;\n }\n if (row > lastRow)\n break;\n var cell = this.$lines.createCell(row, config, this.session, onCreateCell);\n this.$renderCell(cell, config, foldLine, row);\n fragment.push(cell);\n row++;\n }\n return fragment;\n };\n Gutter.prototype.$renderCell = function (cell, config, fold, row) {\n var element = cell.element;\n var session = this.session;\n var textNode = element.childNodes[0];\n var foldWidget = element.childNodes[1];\n var annotationNode = element.childNodes[2];\n var annotationIconNode = annotationNode.firstChild;\n var firstLineNumber = session.$firstLineNumber;\n var breakpoints = session.$breakpoints;\n var decorations = session.$decorations;\n var gutterRenderer = session.gutterRenderer || this.$renderer;\n var foldWidgets = this.$showFoldWidgets && session.foldWidgets;\n var foldStart = fold ? fold.start.row : Number.MAX_VALUE;\n var lineHeight = config.lineHeight + \"px\";\n var className = this.$useSvgGutterIcons ? \"ace_gutter-cell_svg-icons \" : \"ace_gutter-cell \";\n var iconClassName = this.$useSvgGutterIcons ? \"ace_icon_svg\" : \"ace_icon\";\n var rowText = (gutterRenderer\n ? gutterRenderer.getText(session, row)\n : row + firstLineNumber).toString();\n if (this.$highlightGutterLine) {\n if (row == this.$cursorRow || (fold && row < this.$cursorRow && row >= foldStart && this.$cursorRow <= fold.end.row)) {\n className += \"ace_gutter-active-line \";\n if (this.$cursorCell != cell) {\n if (this.$cursorCell)\n this.$cursorCell.element.className = this.$cursorCell.element.className.replace(\"ace_gutter-active-line \", \"\");\n this.$cursorCell = cell;\n }\n }\n }\n if (breakpoints[row])\n className += breakpoints[row];\n if (decorations[row])\n className += decorations[row];\n if (this.$annotations[row] && row !== foldStart)\n className += this.$annotations[row].className;\n if (foldWidgets) {\n var c = foldWidgets[row];\n if (c == null)\n c = foldWidgets[row] = session.getFoldWidget(row);\n }\n if (c) {\n var foldClass = \"ace_fold-widget ace_\" + c;\n var isClosedFold = c == \"start\" && row == foldStart && row < fold.end.row;\n if (isClosedFold) {\n foldClass += \" ace_closed\";\n var foldAnnotationClass = '';\n var annotationInFold = false;\n for (var i = row + 1; i <= fold.end.row; i++) {\n if (!this.$annotations[i])\n continue;\n if (this.$annotations[i].className === \" ace_error\") {\n annotationInFold = true;\n foldAnnotationClass = \" ace_error_fold\";\n break;\n }\n if (this.$annotations[i].className === \" ace_warning\") {\n annotationInFold = true;\n foldAnnotationClass = \" ace_warning_fold\";\n continue;\n }\n }\n className += foldAnnotationClass;\n }\n else\n foldClass += \" ace_open\";\n if (foldWidget.className != foldClass)\n foldWidget.className = foldClass;\n dom.setStyle(foldWidget.style, \"height\", lineHeight);\n dom.setStyle(foldWidget.style, \"display\", \"inline-block\");\n foldWidget.setAttribute(\"role\", \"button\");\n foldWidget.setAttribute(\"tabindex\", \"-1\");\n var foldRange = session.getFoldWidgetRange(row);\n if (foldRange)\n foldWidget.setAttribute(\"aria-label\", nls(\"Toggle code folding, rows $0 through $1\", [foldRange.start.row + 1, foldRange.end.row + 1]));\n else {\n if (fold)\n foldWidget.setAttribute(\"aria-label\", nls(\"Toggle code folding, rows $0 through $1\", [fold.start.row + 1, fold.end.row + 1]));\n else\n foldWidget.setAttribute(\"aria-label\", nls(\"Toggle code folding, row $0\", [row + 1]));\n }\n if (isClosedFold) {\n foldWidget.setAttribute(\"aria-expanded\", \"false\");\n foldWidget.setAttribute(\"title\", nls(\"Unfold code\"));\n }\n else {\n foldWidget.setAttribute(\"aria-expanded\", \"true\");\n foldWidget.setAttribute(\"title\", nls(\"Fold code\"));\n }\n }\n else {\n if (foldWidget) {\n dom.setStyle(foldWidget.style, \"display\", \"none\");\n foldWidget.setAttribute(\"tabindex\", \"0\");\n foldWidget.removeAttribute(\"role\");\n foldWidget.removeAttribute(\"aria-label\");\n }\n }\n if (annotationInFold && this.$showFoldedAnnotations) {\n annotationNode.className = \"ace_gutter_annotation\";\n annotationIconNode.className = iconClassName;\n annotationIconNode.className += foldAnnotationClass;\n dom.setStyle(annotationIconNode.style, \"height\", lineHeight);\n dom.setStyle(annotationNode.style, \"display\", \"block\");\n dom.setStyle(annotationNode.style, \"height\", lineHeight);\n annotationNode.setAttribute(\"aria-label\", nls(\"Read annotations row $0\", [rowText]));\n annotationNode.setAttribute(\"tabindex\", \"-1\");\n annotationNode.setAttribute(\"role\", \"button\");\n }\n else if (this.$annotations[row]) {\n annotationNode.className = \"ace_gutter_annotation\";\n annotationIconNode.className = iconClassName;\n if (this.$useSvgGutterIcons)\n annotationIconNode.className += this.$annotations[row].className;\n else\n element.classList.add(this.$annotations[row].className.replace(\" \", \"\"));\n dom.setStyle(annotationIconNode.style, \"height\", lineHeight);\n dom.setStyle(annotationNode.style, \"display\", \"block\");\n dom.setStyle(annotationNode.style, \"height\", lineHeight);\n annotationNode.setAttribute(\"aria-label\", nls(\"Read annotations row $0\", [rowText]));\n annotationNode.setAttribute(\"tabindex\", \"-1\");\n annotationNode.setAttribute(\"role\", \"button\");\n }\n else {\n dom.setStyle(annotationNode.style, \"display\", \"none\");\n annotationNode.removeAttribute(\"aria-label\");\n annotationNode.removeAttribute(\"role\");\n annotationNode.setAttribute(\"tabindex\", \"0\");\n }\n if (rowText !== textNode.data) {\n textNode.data = rowText;\n }\n if (element.className != className)\n element.className = className;\n dom.setStyle(cell.element.style, \"height\", this.$lines.computeLineHeight(row, config, session) + \"px\");\n dom.setStyle(cell.element.style, \"top\", this.$lines.computeLineTop(row, config, session) + \"px\");\n cell.text = rowText;\n if (annotationNode.style.display === \"none\" && foldWidget.style.display === \"none\")\n cell.element.setAttribute(\"aria-hidden\", true);\n else\n cell.element.setAttribute(\"aria-hidden\", false);\n return cell;\n };\n Gutter.prototype.setHighlightGutterLine = function (highlightGutterLine) {\n this.$highlightGutterLine = highlightGutterLine;\n };\n Gutter.prototype.setShowLineNumbers = function (show) {\n this.$renderer = !show && {\n getWidth: function () { return 0; },\n getText: function () { return \"\"; }\n };\n };\n Gutter.prototype.getShowLineNumbers = function () {\n return this.$showLineNumbers;\n };\n Gutter.prototype.setShowFoldWidgets = function (show) {\n if (show)\n dom.addCssClass(this.element, \"ace_folding-enabled\");\n else\n dom.removeCssClass(this.element, \"ace_folding-enabled\");\n this.$showFoldWidgets = show;\n this.$padding = null;\n };\n Gutter.prototype.getShowFoldWidgets = function () {\n return this.$showFoldWidgets;\n };\n Gutter.prototype.$computePadding = function () {\n if (!this.element.firstChild)\n return { left: 0, right: 0 };\n var style = dom.computedStyle(this.element.firstChild);\n this.$padding = {};\n this.$padding.left = (parseInt(style.borderLeftWidth) || 0)\n + (parseInt(style.paddingLeft) || 0) + 1;\n this.$padding.right = (parseInt(style.borderRightWidth) || 0)\n + (parseInt(style.paddingRight) || 0);\n return this.$padding;\n };\n Gutter.prototype.getRegion = function (point) {\n var padding = this.$padding || this.$computePadding();\n var rect = this.element.getBoundingClientRect();\n if (point.x < padding.left + rect.left)\n return \"markers\";\n if (this.$showFoldWidgets && point.x > rect.right - padding.right)\n return \"foldWidgets\";\n };\n return Gutter;\n}());\nGutter.prototype.$fixedWidth = false;\nGutter.prototype.$highlightGutterLine = true;\nGutter.prototype.$renderer = \"\";\nGutter.prototype.$showLineNumbers = true;\nGutter.prototype.$showFoldWidgets = true;\noop.implement(Gutter.prototype, EventEmitter);\nfunction onCreateCell(element) {\n var textNode = document.createTextNode('');\n element.appendChild(textNode);\n var foldWidget = dom.createElement(\"span\");\n element.appendChild(foldWidget);\n var annotationNode = dom.createElement(\"span\");\n element.appendChild(annotationNode);\n var annotationIconNode = dom.createElement(\"span\");\n annotationNode.appendChild(annotationIconNode);\n return element;\n}\nexports.Gutter = Gutter;\n\n});\n\nace.define(\"ace/layer/marker\",[\"require\",\"exports\",\"module\",\"ace/range\",\"ace/lib/dom\"], function(require, exports, module){\"use strict\";\nvar Range = require(\"../range\").Range;\nvar dom = require(\"../lib/dom\");\nvar Marker = /** @class */ (function () {\n function Marker(parentEl) {\n this.element = dom.createElement(\"div\");\n this.element.className = \"ace_layer ace_marker-layer\";\n parentEl.appendChild(this.element);\n }\n Marker.prototype.setPadding = function (padding) {\n this.$padding = padding;\n };\n Marker.prototype.setSession = function (session) {\n this.session = session;\n };\n Marker.prototype.setMarkers = function (markers) {\n this.markers = markers;\n };\n Marker.prototype.elt = function (className, css) {\n var x = this.i != -1 && this.element.childNodes[this.i];\n if (!x) {\n x = document.createElement(\"div\");\n this.element.appendChild(x);\n this.i = -1;\n }\n else {\n this.i++;\n }\n x.style.cssText = css;\n x.className = className;\n };\n Marker.prototype.update = function (config) {\n if (!config)\n return;\n this.config = config;\n this.i = 0;\n var html;\n for (var key in this.markers) {\n var marker = this.markers[key];\n if (!marker.range) {\n marker.update(html, this, this.session, config);\n continue;\n }\n var range = marker.range.clipRows(config.firstRow, config.lastRow);\n if (range.isEmpty())\n continue;\n range = range.toScreenRange(this.session);\n if (marker.renderer) {\n var top = this.$getTop(range.start.row, config);\n var left = this.$padding + range.start.column * config.characterWidth;\n marker.renderer(html, range, left, top, config);\n }\n else if (marker.type == \"fullLine\") {\n this.drawFullLineMarker(html, range, marker.clazz, config);\n }\n else if (marker.type == \"screenLine\") {\n this.drawScreenLineMarker(html, range, marker.clazz, config);\n }\n else if (range.isMultiLine()) {\n if (marker.type == \"text\")\n this.drawTextMarker(html, range, marker.clazz, config);\n else\n this.drawMultiLineMarker(html, range, marker.clazz, config);\n }\n else {\n this.drawSingleLineMarker(html, range, marker.clazz + \" ace_start\" + \" ace_br15\", config);\n }\n }\n if (this.i != -1) {\n while (this.i < this.element.childElementCount)\n this.element.removeChild(this.element.lastChild);\n }\n };\n Marker.prototype.$getTop = function (row, layerConfig) {\n return (row - layerConfig.firstRowScreen) * layerConfig.lineHeight;\n };\n Marker.prototype.drawTextMarker = function (stringBuilder, range, clazz, layerConfig, extraStyle) {\n var session = this.session;\n var start = range.start.row;\n var end = range.end.row;\n var row = start;\n var prev = 0;\n var curr = 0;\n var next = session.getScreenLastRowColumn(row);\n var lineRange = new Range(row, range.start.column, row, curr);\n for (; row <= end; row++) {\n lineRange.start.row = lineRange.end.row = row;\n lineRange.start.column = row == start ? range.start.column : session.getRowWrapIndent(row);\n lineRange.end.column = next;\n prev = curr;\n curr = next;\n next = row + 1 < end ? session.getScreenLastRowColumn(row + 1) : row == end ? 0 : range.end.column;\n this.drawSingleLineMarker(stringBuilder, lineRange, clazz + (row == start ? \" ace_start\" : \"\") + \" ace_br\"\n + getBorderClass(row == start || row == start + 1 && range.start.column, prev < curr, curr > next, row == end), layerConfig, row == end ? 0 : 1, extraStyle);\n }\n };\n Marker.prototype.drawMultiLineMarker = function (stringBuilder, range, clazz, config, extraStyle) {\n var padding = this.$padding;\n var height = config.lineHeight;\n var top = this.$getTop(range.start.row, config);\n var left = padding + range.start.column * config.characterWidth;\n extraStyle = extraStyle || \"\";\n if (this.session.$bidiHandler.isBidiRow(range.start.row)) {\n var range1 = range.clone();\n range1.end.row = range1.start.row;\n range1.end.column = this.session.getLine(range1.start.row).length;\n this.drawBidiSingleLineMarker(stringBuilder, range1, clazz + \" ace_br1 ace_start\", config, null, extraStyle);\n }\n else {\n this.elt(clazz + \" ace_br1 ace_start\", \"height:\" + height + \"px;\" + \"right:0;\" + \"top:\" + top + \"px;left:\" + left + \"px;\" + (extraStyle || \"\"));\n }\n if (this.session.$bidiHandler.isBidiRow(range.end.row)) {\n var range1 = range.clone();\n range1.start.row = range1.end.row;\n range1.start.column = 0;\n this.drawBidiSingleLineMarker(stringBuilder, range1, clazz + \" ace_br12\", config, null, extraStyle);\n }\n else {\n top = this.$getTop(range.end.row, config);\n var width = range.end.column * config.characterWidth;\n this.elt(clazz + \" ace_br12\", \"height:\" + height + \"px;\" +\n \"width:\" + width + \"px;\" +\n \"top:\" + top + \"px;\" +\n \"left:\" + padding + \"px;\" + (extraStyle || \"\"));\n }\n height = (range.end.row - range.start.row - 1) * config.lineHeight;\n if (height <= 0)\n return;\n top = this.$getTop(range.start.row + 1, config);\n var radiusClass = (range.start.column ? 1 : 0) | (range.end.column ? 0 : 8);\n this.elt(clazz + (radiusClass ? \" ace_br\" + radiusClass : \"\"), \"height:\" + height + \"px;\" +\n \"right:0;\" +\n \"top:\" + top + \"px;\" +\n \"left:\" + padding + \"px;\" + (extraStyle || \"\"));\n };\n Marker.prototype.drawSingleLineMarker = function (stringBuilder, range, clazz, config, extraLength, extraStyle) {\n if (this.session.$bidiHandler.isBidiRow(range.start.row))\n return this.drawBidiSingleLineMarker(stringBuilder, range, clazz, config, extraLength, extraStyle);\n var height = config.lineHeight;\n var width = (range.end.column + (extraLength || 0) - range.start.column) * config.characterWidth;\n var top = this.$getTop(range.start.row, config);\n var left = this.$padding + range.start.column * config.characterWidth;\n this.elt(clazz, \"height:\" + height + \"px;\" +\n \"width:\" + width + \"px;\" +\n \"top:\" + top + \"px;\" +\n \"left:\" + left + \"px;\" + (extraStyle || \"\"));\n };\n Marker.prototype.drawBidiSingleLineMarker = function (stringBuilder, range, clazz, config, extraLength, extraStyle) {\n var height = config.lineHeight, top = this.$getTop(range.start.row, config), padding = this.$padding;\n var selections = this.session.$bidiHandler.getSelections(range.start.column, range.end.column);\n selections.forEach(function (selection) {\n this.elt(clazz, \"height:\" + height + \"px;\" +\n \"width:\" + (selection.width + (extraLength || 0)) + \"px;\" +\n \"top:\" + top + \"px;\" +\n \"left:\" + (padding + selection.left) + \"px;\" + (extraStyle || \"\"));\n }, this);\n };\n Marker.prototype.drawFullLineMarker = function (stringBuilder, range, clazz, config, extraStyle) {\n var top = this.$getTop(range.start.row, config);\n var height = config.lineHeight;\n if (range.start.row != range.end.row)\n height += this.$getTop(range.end.row, config) - top;\n this.elt(clazz, \"height:\" + height + \"px;\" +\n \"top:\" + top + \"px;\" +\n \"left:0;right:0;\" + (extraStyle || \"\"));\n };\n Marker.prototype.drawScreenLineMarker = function (stringBuilder, range, clazz, config, extraStyle) {\n var top = this.$getTop(range.start.row, config);\n var height = config.lineHeight;\n this.elt(clazz, \"height:\" + height + \"px;\" +\n \"top:\" + top + \"px;\" +\n \"left:0;right:0;\" + (extraStyle || \"\"));\n };\n return Marker;\n}());\nMarker.prototype.$padding = 0;\nfunction getBorderClass(tl, tr, br, bl) {\n return (tl ? 1 : 0) | (tr ? 2 : 0) | (br ? 4 : 0) | (bl ? 8 : 0);\n}\nexports.Marker = Marker;\n\n});\n\nace.define(\"ace/layer/text_util\",[\"require\",\"exports\",\"module\"], function(require, exports, module){// Tokens for which Ace just uses a simple TextNode and does not add any special className.\nvar textTokens = new Set([\"text\", \"rparen\", \"lparen\"]);\nexports.isTextToken = function (tokenType) {\n return textTokens.has(tokenType);\n};\n\n});\n\nace.define(\"ace/layer/text\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/dom\",\"ace/lib/lang\",\"ace/layer/lines\",\"ace/lib/event_emitter\",\"ace/config\",\"ace/layer/text_util\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar dom = require(\"../lib/dom\");\nvar lang = require(\"../lib/lang\");\nvar Lines = require(\"./lines\").Lines;\nvar EventEmitter = require(\"../lib/event_emitter\").EventEmitter;\nvar nls = require(\"../config\").nls;\nvar isTextToken = require(\"./text_util\").isTextToken;\nvar Text = /** @class */ (function () {\n function Text(parentEl) {\n this.dom = dom;\n this.element = this.dom.createElement(\"div\");\n this.element.className = \"ace_layer ace_text-layer\";\n parentEl.appendChild(this.element);\n this.$updateEolChar = this.$updateEolChar.bind(this);\n this.$lines = new Lines(this.element);\n }\n Text.prototype.$updateEolChar = function () {\n var doc = this.session.doc;\n var unixMode = doc.getNewLineCharacter() == \"\\n\" && doc.getNewLineMode() != \"windows\";\n var EOL_CHAR = unixMode ? this.EOL_CHAR_LF : this.EOL_CHAR_CRLF;\n if (this.EOL_CHAR != EOL_CHAR) {\n this.EOL_CHAR = EOL_CHAR;\n return true;\n }\n };\n Text.prototype.setPadding = function (padding) {\n this.$padding = padding;\n this.element.style.margin = \"0 \" + padding + \"px\";\n };\n Text.prototype.getLineHeight = function () {\n return this.$fontMetrics.$characterSize.height || 0;\n };\n Text.prototype.getCharacterWidth = function () {\n return this.$fontMetrics.$characterSize.width || 0;\n };\n Text.prototype.$setFontMetrics = function (measure) {\n this.$fontMetrics = measure;\n this.$fontMetrics.on(\"changeCharacterSize\", function (e) {\n this._signal(\"changeCharacterSize\", e);\n }.bind(this));\n this.$pollSizeChanges();\n };\n Text.prototype.checkForSizeChanges = function () {\n this.$fontMetrics.checkForSizeChanges();\n };\n Text.prototype.$pollSizeChanges = function () {\n return this.$pollSizeChangesTimer = this.$fontMetrics.$pollSizeChanges();\n };\n Text.prototype.setSession = function (session) {\n this.session = session;\n if (session)\n this.$computeTabString();\n };\n Text.prototype.setShowInvisibles = function (showInvisibles) {\n if (this.showInvisibles == showInvisibles)\n return false;\n this.showInvisibles = showInvisibles;\n if (typeof showInvisibles == \"string\") {\n this.showSpaces = /tab/i.test(showInvisibles);\n this.showTabs = /space/i.test(showInvisibles);\n this.showEOL = /eol/i.test(showInvisibles);\n }\n else {\n this.showSpaces = this.showTabs = this.showEOL = showInvisibles;\n }\n this.$computeTabString();\n return true;\n };\n Text.prototype.setDisplayIndentGuides = function (display) {\n if (this.displayIndentGuides == display)\n return false;\n this.displayIndentGuides = display;\n this.$computeTabString();\n return true;\n };\n Text.prototype.setHighlightIndentGuides = function (highlight) {\n if (this.$highlightIndentGuides === highlight)\n return false;\n this.$highlightIndentGuides = highlight;\n return highlight;\n };\n Text.prototype.$computeTabString = function () {\n var tabSize = this.session.getTabSize();\n this.tabSize = tabSize;\n var tabStr = this.$tabStrings = [0];\n for (var i = 1; i < tabSize + 1; i++) {\n if (this.showTabs) {\n var span = this.dom.createElement(\"span\");\n span.className = \"ace_invisible ace_invisible_tab\";\n span.textContent = lang.stringRepeat(this.TAB_CHAR, i);\n tabStr.push(span);\n }\n else {\n tabStr.push(this.dom.createTextNode(lang.stringRepeat(\" \", i), this.element));\n }\n }\n if (this.displayIndentGuides) {\n this.$indentGuideRe = /\\s\\S| \\t|\\t |\\s$/;\n var className = \"ace_indent-guide\";\n var spaceClass = this.showSpaces ? \" ace_invisible ace_invisible_space\" : \"\";\n var spaceContent = this.showSpaces\n ? lang.stringRepeat(this.SPACE_CHAR, this.tabSize)\n : lang.stringRepeat(\" \", this.tabSize);\n var tabClass = this.showTabs ? \" ace_invisible ace_invisible_tab\" : \"\";\n var tabContent = this.showTabs\n ? lang.stringRepeat(this.TAB_CHAR, this.tabSize)\n : spaceContent;\n var span = this.dom.createElement(\"span\");\n span.className = className + spaceClass;\n span.textContent = spaceContent;\n this.$tabStrings[\" \"] = span;\n var span = this.dom.createElement(\"span\");\n span.className = className + tabClass;\n span.textContent = tabContent;\n this.$tabStrings[\"\\t\"] = span;\n }\n };\n Text.prototype.updateLines = function (config, firstRow, lastRow) {\n if (this.config.lastRow != config.lastRow ||\n this.config.firstRow != config.firstRow) {\n return this.update(config);\n }\n this.config = config;\n var first = Math.max(firstRow, config.firstRow);\n var last = Math.min(lastRow, config.lastRow);\n var lineElements = this.element.childNodes;\n var lineElementsIdx = 0;\n for (var row = config.firstRow; row < first; row++) {\n var foldLine = this.session.getFoldLine(row);\n if (foldLine) {\n if (foldLine.containsRow(first)) {\n first = foldLine.start.row;\n break;\n }\n else {\n row = foldLine.end.row;\n }\n }\n lineElementsIdx++;\n }\n var heightChanged = false;\n var row = first;\n var foldLine = this.session.getNextFoldLine(row);\n var foldStart = foldLine ? foldLine.start.row : Infinity;\n while (true) {\n if (row > foldStart) {\n row = foldLine.end.row + 1;\n foldLine = this.session.getNextFoldLine(row, foldLine);\n foldStart = foldLine ? foldLine.start.row : Infinity;\n }\n if (row > last)\n break;\n var lineElement = lineElements[lineElementsIdx++];\n if (lineElement) {\n this.dom.removeChildren(lineElement);\n this.$renderLine(lineElement, row, row == foldStart ? foldLine : false);\n if (heightChanged)\n lineElement.style.top = this.$lines.computeLineTop(row, config, this.session) + \"px\";\n var height = (config.lineHeight * this.session.getRowLength(row)) + \"px\";\n if (lineElement.style.height != height) {\n heightChanged = true;\n lineElement.style.height = height;\n }\n }\n row++;\n }\n if (heightChanged) {\n while (lineElementsIdx < this.$lines.cells.length) {\n var cell = this.$lines.cells[lineElementsIdx++];\n cell.element.style.top = this.$lines.computeLineTop(cell.row, config, this.session) + \"px\";\n }\n }\n };\n Text.prototype.scrollLines = function (config) {\n var oldConfig = this.config;\n this.config = config;\n if (this.$lines.pageChanged(oldConfig, config))\n return this.update(config);\n this.$lines.moveContainer(config);\n var lastRow = config.lastRow;\n var oldLastRow = oldConfig ? oldConfig.lastRow : -1;\n if (!oldConfig || oldLastRow < config.firstRow)\n return this.update(config);\n if (lastRow < oldConfig.firstRow)\n return this.update(config);\n if (!oldConfig || oldConfig.lastRow < config.firstRow)\n return this.update(config);\n if (config.lastRow < oldConfig.firstRow)\n return this.update(config);\n if (oldConfig.firstRow < config.firstRow)\n for (var row = this.session.getFoldedRowCount(oldConfig.firstRow, config.firstRow - 1); row > 0; row--)\n this.$lines.shift();\n if (oldConfig.lastRow > config.lastRow)\n for (var row = this.session.getFoldedRowCount(config.lastRow + 1, oldConfig.lastRow); row > 0; row--)\n this.$lines.pop();\n if (config.firstRow < oldConfig.firstRow) {\n this.$lines.unshift(this.$renderLinesFragment(config, config.firstRow, oldConfig.firstRow - 1));\n }\n if (config.lastRow > oldConfig.lastRow) {\n this.$lines.push(this.$renderLinesFragment(config, oldConfig.lastRow + 1, config.lastRow));\n }\n this.$highlightIndentGuide();\n };\n Text.prototype.$renderLinesFragment = function (config, firstRow, lastRow) {\n var fragment = [];\n var row = firstRow;\n var foldLine = this.session.getNextFoldLine(row);\n var foldStart = foldLine ? foldLine.start.row : Infinity;\n while (true) {\n if (row > foldStart) {\n row = foldLine.end.row + 1;\n foldLine = this.session.getNextFoldLine(row, foldLine);\n foldStart = foldLine ? foldLine.start.row : Infinity;\n }\n if (row > lastRow)\n break;\n var line = this.$lines.createCell(row, config, this.session);\n var lineEl = line.element;\n this.dom.removeChildren(lineEl);\n dom.setStyle(lineEl.style, \"height\", this.$lines.computeLineHeight(row, config, this.session) + \"px\");\n dom.setStyle(lineEl.style, \"top\", this.$lines.computeLineTop(row, config, this.session) + \"px\");\n this.$renderLine(lineEl, row, row == foldStart ? foldLine : false);\n if (this.$useLineGroups()) {\n lineEl.className = \"ace_line_group\";\n }\n else {\n lineEl.className = \"ace_line\";\n }\n fragment.push(line);\n row++;\n }\n return fragment;\n };\n Text.prototype.update = function (config) {\n this.$lines.moveContainer(config);\n this.config = config;\n var firstRow = config.firstRow;\n var lastRow = config.lastRow;\n var lines = this.$lines;\n while (lines.getLength())\n lines.pop();\n lines.push(this.$renderLinesFragment(config, firstRow, lastRow));\n };\n Text.prototype.$renderToken = function (parent, screenColumn, token, value) {\n var self = this;\n var re = /(\\t)|( +)|([\\x00-\\x1f\\x80-\\xa0\\xad\\u1680\\u180E\\u2000-\\u200f\\u2028\\u2029\\u202F\\u205F\\uFEFF\\uFFF9-\\uFFFC\\u2066\\u2067\\u2068\\u202A\\u202B\\u202D\\u202E\\u202C\\u2069]+)|(\\u3000)|([\\u1100-\\u115F\\u11A3-\\u11A7\\u11FA-\\u11FF\\u2329-\\u232A\\u2E80-\\u2E99\\u2E9B-\\u2EF3\\u2F00-\\u2FD5\\u2FF0-\\u2FFB\\u3001-\\u303E\\u3041-\\u3096\\u3099-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u3190-\\u31BA\\u31C0-\\u31E3\\u31F0-\\u321E\\u3220-\\u3247\\u3250-\\u32FE\\u3300-\\u4DBF\\u4E00-\\uA48C\\uA490-\\uA4C6\\uA960-\\uA97C\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFAFF\\uFE10-\\uFE19\\uFE30-\\uFE52\\uFE54-\\uFE66\\uFE68-\\uFE6B\\uFF01-\\uFF60\\uFFE0-\\uFFE6]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF])/g;\n var valueFragment = this.dom.createFragment(this.element);\n var m;\n var i = 0;\n while (m = re.exec(value)) {\n var tab = m[1];\n var simpleSpace = m[2];\n var controlCharacter = m[3];\n var cjkSpace = m[4];\n var cjk = m[5];\n if (!self.showSpaces && simpleSpace)\n continue;\n var before = i != m.index ? value.slice(i, m.index) : \"\";\n i = m.index + m[0].length;\n if (before) {\n valueFragment.appendChild(this.dom.createTextNode(before, this.element));\n }\n if (tab) {\n var tabSize = self.session.getScreenTabSize(screenColumn + m.index);\n valueFragment.appendChild(self.$tabStrings[tabSize].cloneNode(true));\n screenColumn += tabSize - 1;\n }\n else if (simpleSpace) {\n if (self.showSpaces) {\n var span = this.dom.createElement(\"span\");\n span.className = \"ace_invisible ace_invisible_space\";\n span.textContent = lang.stringRepeat(self.SPACE_CHAR, simpleSpace.length);\n valueFragment.appendChild(span);\n }\n else {\n valueFragment.appendChild(this.dom.createTextNode(simpleSpace, this.element));\n }\n }\n else if (controlCharacter) {\n var span = this.dom.createElement(\"span\");\n span.className = \"ace_invisible ace_invisible_space ace_invalid\";\n span.textContent = lang.stringRepeat(self.SPACE_CHAR, controlCharacter.length);\n valueFragment.appendChild(span);\n }\n else if (cjkSpace) {\n screenColumn += 1;\n var span = this.dom.createElement(\"span\");\n span.style.width = (self.config.characterWidth * 2) + \"px\";\n span.className = self.showSpaces ? \"ace_cjk ace_invisible ace_invisible_space\" : \"ace_cjk\";\n span.textContent = self.showSpaces ? self.SPACE_CHAR : cjkSpace;\n valueFragment.appendChild(span);\n }\n else if (cjk) {\n screenColumn += 1;\n var span = this.dom.createElement(\"span\");\n span.style.width = (self.config.characterWidth * 2) + \"px\";\n span.className = \"ace_cjk\";\n span.textContent = cjk;\n valueFragment.appendChild(span);\n }\n }\n valueFragment.appendChild(this.dom.createTextNode(i ? value.slice(i) : value, this.element));\n if (!isTextToken(token.type)) {\n var classes = \"ace_\" + token.type.replace(/\\./g, \" ace_\");\n var span = this.dom.createElement(\"span\");\n if (token.type == \"fold\") {\n span.style.width = (token.value.length * this.config.characterWidth) + \"px\";\n span.setAttribute(\"title\", nls(\"Unfold code\"));\n }\n span.className = classes;\n span.appendChild(valueFragment);\n parent.appendChild(span);\n }\n else {\n parent.appendChild(valueFragment);\n }\n return screenColumn + value.length;\n };\n Text.prototype.renderIndentGuide = function (parent, value, max) {\n var cols = value.search(this.$indentGuideRe);\n if (cols <= 0 || cols >= max)\n return value;\n if (value[0] == \" \") {\n cols -= cols % this.tabSize;\n var count = cols / this.tabSize;\n for (var i = 0; i < count; i++) {\n parent.appendChild(this.$tabStrings[\" \"].cloneNode(true));\n }\n this.$highlightIndentGuide();\n return value.substr(cols);\n }\n else if (value[0] == \"\\t\") {\n for (var i = 0; i < cols; i++) {\n parent.appendChild(this.$tabStrings[\"\\t\"].cloneNode(true));\n }\n this.$highlightIndentGuide();\n return value.substr(cols);\n }\n this.$highlightIndentGuide();\n return value;\n };\n Text.prototype.$highlightIndentGuide = function () {\n if (!this.$highlightIndentGuides || !this.displayIndentGuides)\n return;\n this.$highlightIndentGuideMarker = {\n indentLevel: undefined,\n start: undefined,\n end: undefined,\n dir: undefined\n };\n var lines = this.session.doc.$lines;\n if (!lines)\n return;\n var cursor = this.session.selection.getCursor();\n var initialIndent = /^\\s*/.exec(this.session.doc.getLine(cursor.row))[0].length;\n var elementIndentLevel = Math.floor(initialIndent / this.tabSize);\n this.$highlightIndentGuideMarker = {\n indentLevel: elementIndentLevel,\n start: cursor.row\n };\n var bracketHighlight = this.session.$bracketHighlight;\n if (bracketHighlight) {\n var ranges = this.session.$bracketHighlight.ranges;\n for (var i = 0; i < ranges.length; i++) {\n if (cursor.row !== ranges[i].start.row) {\n this.$highlightIndentGuideMarker.end = ranges[i].start.row;\n if (cursor.row > ranges[i].start.row) {\n this.$highlightIndentGuideMarker.dir = -1;\n }\n else {\n this.$highlightIndentGuideMarker.dir = 1;\n }\n break;\n }\n }\n }\n if (!this.$highlightIndentGuideMarker.end) {\n if (lines[cursor.row] !== '' && cursor.column === lines[cursor.row].length) {\n this.$highlightIndentGuideMarker.dir = 1;\n for (var i = cursor.row + 1; i < lines.length; i++) {\n var line = lines[i];\n var currentIndent = /^\\s*/.exec(line)[0].length;\n if (line !== '') {\n this.$highlightIndentGuideMarker.end = i;\n if (currentIndent <= initialIndent)\n break;\n }\n }\n }\n }\n this.$renderHighlightIndentGuide();\n };\n Text.prototype.$clearActiveIndentGuide = function () {\n var cells = this.$lines.cells;\n for (var i = 0; i < cells.length; i++) {\n var cell = cells[i];\n var childNodes = cell.element.childNodes;\n if (childNodes.length > 0) {\n for (var j = 0; j < childNodes.length; j++) {\n if (childNodes[j].classList && childNodes[j].classList.contains(\"ace_indent-guide-active\")) {\n childNodes[j].classList.remove(\"ace_indent-guide-active\");\n break;\n }\n }\n }\n }\n };\n Text.prototype.$setIndentGuideActive = function (cell, indentLevel) {\n var line = this.session.doc.getLine(cell.row);\n if (line !== \"\") {\n var childNodes = cell.element.childNodes;\n if (childNodes) {\n var node = childNodes[indentLevel - 1];\n if (node && node.classList && node.classList.contains(\"ace_indent-guide\"))\n node.classList.add(\"ace_indent-guide-active\");\n }\n }\n };\n Text.prototype.$renderHighlightIndentGuide = function () {\n if (!this.$lines)\n return;\n var cells = this.$lines.cells;\n this.$clearActiveIndentGuide();\n var indentLevel = this.$highlightIndentGuideMarker.indentLevel;\n if (indentLevel !== 0) {\n if (this.$highlightIndentGuideMarker.dir === 1) {\n for (var i = 0; i < cells.length; i++) {\n var cell = cells[i];\n if (this.$highlightIndentGuideMarker.end && cell.row >= this.$highlightIndentGuideMarker.start\n + 1) {\n if (cell.row >= this.$highlightIndentGuideMarker.end)\n break;\n this.$setIndentGuideActive(cell, indentLevel);\n }\n }\n }\n else {\n for (var i = cells.length - 1; i >= 0; i--) {\n var cell = cells[i];\n if (this.$highlightIndentGuideMarker.end && cell.row < this.$highlightIndentGuideMarker.start) {\n if (cell.row <= this.$highlightIndentGuideMarker.end)\n break;\n this.$setIndentGuideActive(cell, indentLevel);\n }\n }\n }\n }\n };\n Text.prototype.$createLineElement = function (parent) {\n var lineEl = this.dom.createElement(\"div\");\n lineEl.className = \"ace_line\";\n lineEl.style.height = this.config.lineHeight + \"px\";\n return lineEl;\n };\n Text.prototype.$renderWrappedLine = function (parent, tokens, splits) {\n var chars = 0;\n var split = 0;\n var splitChars = splits[0];\n var screenColumn = 0;\n var lineEl = this.$createLineElement();\n parent.appendChild(lineEl);\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n var value = token.value;\n if (i == 0 && this.displayIndentGuides) {\n chars = value.length;\n value = this.renderIndentGuide(lineEl, value, splitChars);\n if (!value)\n continue;\n chars -= value.length;\n }\n if (chars + value.length < splitChars) {\n screenColumn = this.$renderToken(lineEl, screenColumn, token, value);\n chars += value.length;\n }\n else {\n while (chars + value.length >= splitChars) {\n screenColumn = this.$renderToken(lineEl, screenColumn, token, value.substring(0, splitChars - chars));\n value = value.substring(splitChars - chars);\n chars = splitChars;\n lineEl = this.$createLineElement();\n parent.appendChild(lineEl);\n lineEl.appendChild(this.dom.createTextNode(lang.stringRepeat(\"\\xa0\", splits.indent), this.element));\n split++;\n screenColumn = 0;\n splitChars = splits[split] || Number.MAX_VALUE;\n }\n if (value.length != 0) {\n chars += value.length;\n screenColumn = this.$renderToken(lineEl, screenColumn, token, value);\n }\n }\n }\n if (splits[splits.length - 1] > this.MAX_LINE_LENGTH)\n this.$renderOverflowMessage(lineEl, screenColumn, null, \"\", true);\n };\n Text.prototype.$renderSimpleLine = function (parent, tokens) {\n var screenColumn = 0;\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n var value = token.value;\n if (i == 0 && this.displayIndentGuides) {\n value = this.renderIndentGuide(parent, value);\n if (!value)\n continue;\n }\n if (screenColumn + value.length > this.MAX_LINE_LENGTH)\n return this.$renderOverflowMessage(parent, screenColumn, token, value);\n screenColumn = this.$renderToken(parent, screenColumn, token, value);\n }\n };\n Text.prototype.$renderOverflowMessage = function (parent, screenColumn, token, value, hide) {\n token && this.$renderToken(parent, screenColumn, token, value.slice(0, this.MAX_LINE_LENGTH - screenColumn));\n var overflowEl = this.dom.createElement(\"span\");\n overflowEl.className = \"ace_inline_button ace_keyword ace_toggle_wrap\";\n overflowEl.textContent = hide ? \"\" : \"\";\n parent.appendChild(overflowEl);\n };\n Text.prototype.$renderLine = function (parent, row, foldLine) {\n if (!foldLine && foldLine != false)\n foldLine = this.session.getFoldLine(row);\n if (foldLine)\n var tokens = this.$getFoldLineTokens(row, foldLine);\n else\n var tokens = this.session.getTokens(row);\n var lastLineEl = parent;\n if (tokens.length) {\n var splits = this.session.getRowSplitData(row);\n if (splits && splits.length) {\n this.$renderWrappedLine(parent, tokens, splits);\n var lastLineEl = parent.lastChild;\n }\n else {\n var lastLineEl = parent;\n if (this.$useLineGroups()) {\n lastLineEl = this.$createLineElement();\n parent.appendChild(lastLineEl);\n }\n this.$renderSimpleLine(lastLineEl, tokens);\n }\n }\n else if (this.$useLineGroups()) {\n lastLineEl = this.$createLineElement();\n parent.appendChild(lastLineEl);\n }\n if (this.showEOL && lastLineEl) {\n if (foldLine)\n row = foldLine.end.row;\n var invisibleEl = this.dom.createElement(\"span\");\n invisibleEl.className = \"ace_invisible ace_invisible_eol\";\n invisibleEl.textContent = row == this.session.getLength() - 1 ? this.EOF_CHAR : this.EOL_CHAR;\n lastLineEl.appendChild(invisibleEl);\n }\n };\n Text.prototype.$getFoldLineTokens = function (row, foldLine) {\n var session = this.session;\n var renderTokens = [];\n function addTokens(tokens, from, to) {\n var idx = 0, col = 0;\n while ((col + tokens[idx].value.length) < from) {\n col += tokens[idx].value.length;\n idx++;\n if (idx == tokens.length)\n return;\n }\n if (col != from) {\n var value = tokens[idx].value.substring(from - col);\n if (value.length > (to - from))\n value = value.substring(0, to - from);\n renderTokens.push({\n type: tokens[idx].type,\n value: value\n });\n col = from + value.length;\n idx += 1;\n }\n while (col < to && idx < tokens.length) {\n var value = tokens[idx].value;\n if (value.length + col > to) {\n renderTokens.push({\n type: tokens[idx].type,\n value: value.substring(0, to - col)\n });\n }\n else\n renderTokens.push(tokens[idx]);\n col += value.length;\n idx += 1;\n }\n }\n var tokens = session.getTokens(row);\n foldLine.walk(function (placeholder, row, column, lastColumn, isNewRow) {\n if (placeholder != null) {\n renderTokens.push({\n type: \"fold\",\n value: placeholder\n });\n }\n else {\n if (isNewRow)\n tokens = session.getTokens(row);\n if (tokens.length)\n addTokens(tokens, lastColumn, column);\n }\n }, foldLine.end.row, this.session.getLine(foldLine.end.row).length);\n return renderTokens;\n };\n Text.prototype.$useLineGroups = function () {\n return this.session.getUseWrapMode();\n };\n return Text;\n}());\nText.prototype.EOF_CHAR = \"\\xB6\";\nText.prototype.EOL_CHAR_LF = \"\\xAC\";\nText.prototype.EOL_CHAR_CRLF = \"\\xa4\";\nText.prototype.EOL_CHAR = Text.prototype.EOL_CHAR_LF;\nText.prototype.TAB_CHAR = \"\\u2014\"; //\"\\u21E5\";\nText.prototype.SPACE_CHAR = \"\\xB7\";\nText.prototype.$padding = 0;\nText.prototype.MAX_LINE_LENGTH = 10000;\nText.prototype.showInvisibles = false;\nText.prototype.showSpaces = false;\nText.prototype.showTabs = false;\nText.prototype.showEOL = false;\nText.prototype.displayIndentGuides = true;\nText.prototype.$highlightIndentGuides = true;\nText.prototype.$tabStrings = [];\nText.prototype.destroy = {};\nText.prototype.onChangeTabSize = Text.prototype.$computeTabString;\noop.implement(Text.prototype, EventEmitter);\nexports.Text = Text;\n\n});\n\nace.define(\"ace/layer/cursor\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"], function(require, exports, module){\"use strict\";\nvar dom = require(\"../lib/dom\");\nvar Cursor = /** @class */ (function () {\n function Cursor(parentEl) {\n this.element = dom.createElement(\"div\");\n this.element.className = \"ace_layer ace_cursor-layer\";\n parentEl.appendChild(this.element);\n this.isVisible = false;\n this.isBlinking = true;\n this.blinkInterval = 1000;\n this.smoothBlinking = false;\n this.cursors = [];\n this.cursor = this.addCursor();\n dom.addCssClass(this.element, \"ace_hidden-cursors\");\n this.$updateCursors = this.$updateOpacity.bind(this);\n }\n Cursor.prototype.$updateOpacity = function (val) {\n var cursors = this.cursors;\n for (var i = cursors.length; i--;)\n dom.setStyle(cursors[i].style, \"opacity\", val ? \"\" : \"0\");\n };\n Cursor.prototype.$startCssAnimation = function () {\n var cursors = this.cursors;\n for (var i = cursors.length; i--;)\n cursors[i].style.animationDuration = this.blinkInterval + \"ms\";\n this.$isAnimating = true;\n setTimeout(function () {\n if (this.$isAnimating) {\n dom.addCssClass(this.element, \"ace_animate-blinking\");\n }\n }.bind(this));\n };\n Cursor.prototype.$stopCssAnimation = function () {\n this.$isAnimating = false;\n dom.removeCssClass(this.element, \"ace_animate-blinking\");\n };\n Cursor.prototype.setPadding = function (padding) {\n this.$padding = padding;\n };\n Cursor.prototype.setSession = function (session) {\n this.session = session;\n };\n Cursor.prototype.setBlinking = function (blinking) {\n if (blinking != this.isBlinking) {\n this.isBlinking = blinking;\n this.restartTimer();\n }\n };\n Cursor.prototype.setBlinkInterval = function (blinkInterval) {\n if (blinkInterval != this.blinkInterval) {\n this.blinkInterval = blinkInterval;\n this.restartTimer();\n }\n };\n Cursor.prototype.setSmoothBlinking = function (smoothBlinking) {\n if (smoothBlinking != this.smoothBlinking) {\n this.smoothBlinking = smoothBlinking;\n dom.setCssClass(this.element, \"ace_smooth-blinking\", smoothBlinking);\n this.$updateCursors(true);\n this.restartTimer();\n }\n };\n Cursor.prototype.addCursor = function () {\n var el = dom.createElement(\"div\");\n el.className = \"ace_cursor\";\n this.element.appendChild(el);\n this.cursors.push(el);\n return el;\n };\n Cursor.prototype.removeCursor = function () {\n if (this.cursors.length > 1) {\n var el = this.cursors.pop();\n el.parentNode.removeChild(el);\n return el;\n }\n };\n Cursor.prototype.hideCursor = function () {\n this.isVisible = false;\n dom.addCssClass(this.element, \"ace_hidden-cursors\");\n this.restartTimer();\n };\n Cursor.prototype.showCursor = function () {\n this.isVisible = true;\n dom.removeCssClass(this.element, \"ace_hidden-cursors\");\n this.restartTimer();\n };\n Cursor.prototype.restartTimer = function () {\n var update = this.$updateCursors;\n clearInterval(this.intervalId);\n clearTimeout(this.timeoutId);\n this.$stopCssAnimation();\n if (this.smoothBlinking) {\n this.$isSmoothBlinking = false;\n dom.removeCssClass(this.element, \"ace_smooth-blinking\");\n }\n update(true);\n if (!this.isBlinking || !this.blinkInterval || !this.isVisible) {\n this.$stopCssAnimation();\n return;\n }\n if (this.smoothBlinking) {\n this.$isSmoothBlinking = true;\n setTimeout(function () {\n if (this.$isSmoothBlinking) {\n dom.addCssClass(this.element, \"ace_smooth-blinking\");\n }\n }.bind(this));\n }\n if (dom.HAS_CSS_ANIMATION) {\n this.$startCssAnimation();\n }\n else {\n var blink = function () {\n this.timeoutId = setTimeout(function () {\n update(false);\n }, 0.6 * this.blinkInterval);\n }.bind(this);\n this.intervalId = setInterval(function () {\n update(true);\n blink();\n }, this.blinkInterval);\n blink();\n }\n };\n Cursor.prototype.getPixelPosition = function (position, onScreen) {\n if (!this.config || !this.session)\n return { left: 0, top: 0 };\n if (!position)\n position = this.session.selection.getCursor();\n var pos = this.session.documentToScreenPosition(position);\n var cursorLeft = this.$padding + (this.session.$bidiHandler.isBidiRow(pos.row, position.row)\n ? this.session.$bidiHandler.getPosLeft(pos.column)\n : pos.column * this.config.characterWidth);\n var cursorTop = (pos.row - (onScreen ? this.config.firstRowScreen : 0)) *\n this.config.lineHeight;\n return { left: cursorLeft, top: cursorTop };\n };\n Cursor.prototype.isCursorInView = function (pixelPos, config) {\n return pixelPos.top >= 0 && pixelPos.top < config.maxHeight;\n };\n Cursor.prototype.update = function (config) {\n this.config = config;\n var selections = this.session.$selectionMarkers;\n var i = 0, cursorIndex = 0;\n if (selections === undefined || selections.length === 0) {\n selections = [{ cursor: null }];\n }\n for (var i = 0, n = selections.length; i < n; i++) {\n var pixelPos = this.getPixelPosition(selections[i].cursor, true);\n if ((pixelPos.top > config.height + config.offset ||\n pixelPos.top < 0) && i > 1) {\n continue;\n }\n var element = this.cursors[cursorIndex++] || this.addCursor();\n var style = element.style;\n if (!this.drawCursor) {\n if (!this.isCursorInView(pixelPos, config)) {\n dom.setStyle(style, \"display\", \"none\");\n }\n else {\n dom.setStyle(style, \"display\", \"block\");\n dom.translate(element, pixelPos.left, pixelPos.top);\n dom.setStyle(style, \"width\", Math.round(config.characterWidth) + \"px\");\n dom.setStyle(style, \"height\", config.lineHeight + \"px\");\n }\n }\n else {\n this.drawCursor(element, pixelPos, config, selections[i], this.session);\n }\n }\n while (this.cursors.length > cursorIndex)\n this.removeCursor();\n var overwrite = this.session.getOverwrite();\n this.$setOverwrite(overwrite);\n this.$pixelPos = pixelPos;\n this.restartTimer();\n };\n Cursor.prototype.$setOverwrite = function (overwrite) {\n if (overwrite != this.overwrite) {\n this.overwrite = overwrite;\n if (overwrite)\n dom.addCssClass(this.element, \"ace_overwrite-cursors\");\n else\n dom.removeCssClass(this.element, \"ace_overwrite-cursors\");\n }\n };\n Cursor.prototype.destroy = function () {\n clearInterval(this.intervalId);\n clearTimeout(this.timeoutId);\n };\n return Cursor;\n}());\nCursor.prototype.$padding = 0;\nCursor.prototype.drawCursor = null;\nexports.Cursor = Cursor;\n\n});\n\nace.define(\"ace/scrollbar\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/dom\",\"ace/lib/event\",\"ace/lib/event_emitter\"], function(require, exports, module){\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar oop = require(\"./lib/oop\");\nvar dom = require(\"./lib/dom\");\nvar event = require(\"./lib/event\");\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar MAX_SCROLL_H = 0x8000;\nvar Scrollbar = /** @class */ (function () {\n function Scrollbar(parent, classSuffix) {\n this.element = dom.createElement(\"div\");\n this.element.className = \"ace_scrollbar ace_scrollbar\" + classSuffix;\n this.inner = dom.createElement(\"div\");\n this.inner.className = \"ace_scrollbar-inner\";\n this.inner.textContent = \"\\xa0\";\n this.element.appendChild(this.inner);\n parent.appendChild(this.element);\n this.setVisible(false);\n this.skipEvent = false;\n event.addListener(this.element, \"scroll\", this.onScroll.bind(this));\n event.addListener(this.element, \"mousedown\", event.preventDefault);\n }\n Scrollbar.prototype.setVisible = function (isVisible) {\n this.element.style.display = isVisible ? \"\" : \"none\";\n this.isVisible = isVisible;\n this.coeff = 1;\n };\n return Scrollbar;\n}());\noop.implement(Scrollbar.prototype, EventEmitter);\nvar VScrollBar = /** @class */ (function (_super) {\n __extends(VScrollBar, _super);\n function VScrollBar(parent, renderer) {\n var _this = _super.call(this, parent, '-v') || this;\n _this.scrollTop = 0;\n _this.scrollHeight = 0;\n renderer.$scrollbarWidth =\n _this.width = dom.scrollbarWidth(parent.ownerDocument);\n _this.inner.style.width =\n _this.element.style.width = (_this.width || 15) + 5 + \"px\";\n _this.$minWidth = 0;\n return _this;\n }\n VScrollBar.prototype.onScroll = function () {\n if (!this.skipEvent) {\n this.scrollTop = this.element.scrollTop;\n if (this.coeff != 1) {\n var h = this.element.clientHeight / this.scrollHeight;\n this.scrollTop = this.scrollTop * (1 - h) / (this.coeff - h);\n }\n this._emit(\"scroll\", { data: this.scrollTop });\n }\n this.skipEvent = false;\n };\n VScrollBar.prototype.getWidth = function () {\n return Math.max(this.isVisible ? this.width : 0, this.$minWidth || 0);\n };\n VScrollBar.prototype.setHeight = function (height) {\n this.element.style.height = height + \"px\";\n };\n VScrollBar.prototype.setScrollHeight = function (height) {\n this.scrollHeight = height;\n if (height > MAX_SCROLL_H) {\n this.coeff = MAX_SCROLL_H / height;\n height = MAX_SCROLL_H;\n }\n else if (this.coeff != 1) {\n this.coeff = 1;\n }\n this.inner.style.height = height + \"px\";\n };\n VScrollBar.prototype.setScrollTop = function (scrollTop) {\n if (this.scrollTop != scrollTop) {\n this.skipEvent = true;\n this.scrollTop = scrollTop;\n this.element.scrollTop = scrollTop * this.coeff;\n }\n };\n return VScrollBar;\n}(Scrollbar));\nVScrollBar.prototype.setInnerHeight = VScrollBar.prototype.setScrollHeight;\nvar HScrollBar = /** @class */ (function (_super) {\n __extends(HScrollBar, _super);\n function HScrollBar(parent, renderer) {\n var _this = _super.call(this, parent, '-h') || this;\n _this.scrollLeft = 0;\n _this.height = renderer.$scrollbarWidth;\n _this.inner.style.height =\n _this.element.style.height = (_this.height || 15) + 5 + \"px\";\n return _this;\n }\n HScrollBar.prototype.onScroll = function () {\n if (!this.skipEvent) {\n this.scrollLeft = this.element.scrollLeft;\n this._emit(\"scroll\", { data: this.scrollLeft });\n }\n this.skipEvent = false;\n };\n HScrollBar.prototype.getHeight = function () {\n return this.isVisible ? this.height : 0;\n };\n HScrollBar.prototype.setWidth = function (width) {\n this.element.style.width = width + \"px\";\n };\n HScrollBar.prototype.setInnerWidth = function (width) {\n this.inner.style.width = width + \"px\";\n };\n HScrollBar.prototype.setScrollWidth = function (width) {\n this.inner.style.width = width + \"px\";\n };\n HScrollBar.prototype.setScrollLeft = function (scrollLeft) {\n if (this.scrollLeft != scrollLeft) {\n this.skipEvent = true;\n this.scrollLeft = this.element.scrollLeft = scrollLeft;\n }\n };\n return HScrollBar;\n}(Scrollbar));\nexports.ScrollBar = VScrollBar; // backward compatibility\nexports.ScrollBarV = VScrollBar; // backward compatibility\nexports.ScrollBarH = HScrollBar; // backward compatibility\nexports.VScrollBar = VScrollBar;\nexports.HScrollBar = HScrollBar;\n\n});\n\nace.define(\"ace/scrollbar_custom\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/dom\",\"ace/lib/event\",\"ace/lib/event_emitter\"], function(require, exports, module){\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar oop = require(\"./lib/oop\");\nvar dom = require(\"./lib/dom\");\nvar event = require(\"./lib/event\");\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\ndom.importCssString(\".ace_editor>.ace_sb-v div, .ace_editor>.ace_sb-h div{\\n position: absolute;\\n background: rgba(128, 128, 128, 0.6);\\n -moz-box-sizing: border-box;\\n box-sizing: border-box;\\n border: 1px solid #bbb;\\n border-radius: 2px;\\n z-index: 8;\\n}\\n.ace_editor>.ace_sb-v, .ace_editor>.ace_sb-h {\\n position: absolute;\\n z-index: 6;\\n background: none;\\n overflow: hidden!important;\\n}\\n.ace_editor>.ace_sb-v {\\n z-index: 6;\\n right: 0;\\n top: 0;\\n width: 12px;\\n}\\n.ace_editor>.ace_sb-v div {\\n z-index: 8;\\n right: 0;\\n width: 100%;\\n}\\n.ace_editor>.ace_sb-h {\\n bottom: 0;\\n left: 0;\\n height: 12px;\\n}\\n.ace_editor>.ace_sb-h div {\\n bottom: 0;\\n height: 100%;\\n}\\n.ace_editor>.ace_sb_grabbed {\\n z-index: 8;\\n background: #000;\\n}\", \"ace_scrollbar.css\", false);\nvar ScrollBar = /** @class */ (function () {\n function ScrollBar(parent, classSuffix) {\n this.element = dom.createElement(\"div\");\n this.element.className = \"ace_sb\" + classSuffix;\n this.inner = dom.createElement(\"div\");\n this.inner.className = \"\";\n this.element.appendChild(this.inner);\n this.VScrollWidth = 12;\n this.HScrollHeight = 12;\n parent.appendChild(this.element);\n this.setVisible(false);\n this.skipEvent = false;\n event.addMultiMouseDownListener(this.element, [500, 300, 300], this, \"onMouseDown\");\n }\n ScrollBar.prototype.setVisible = function (isVisible) {\n this.element.style.display = isVisible ? \"\" : \"none\";\n this.isVisible = isVisible;\n this.coeff = 1;\n };\n return ScrollBar;\n}());\noop.implement(ScrollBar.prototype, EventEmitter);\nvar VScrollBar = /** @class */ (function (_super) {\n __extends(VScrollBar, _super);\n function VScrollBar(parent, renderer) {\n var _this = _super.call(this, parent, '-v') || this;\n _this.scrollTop = 0;\n _this.scrollHeight = 0;\n _this.parent = parent;\n _this.width = _this.VScrollWidth;\n _this.renderer = renderer;\n _this.inner.style.width = _this.element.style.width = (_this.width || 15) + \"px\";\n _this.$minWidth = 0;\n return _this;\n }\n VScrollBar.prototype.onMouseDown = function (eType, e) {\n if (eType !== \"mousedown\")\n return;\n if (event.getButton(e) !== 0 || e.detail === 2) {\n return;\n }\n if (e.target === this.inner) {\n var self = this;\n var mousePageY = e.clientY;\n var onMouseMove = function (e) {\n mousePageY = e.clientY;\n };\n var onMouseUp = function () {\n clearInterval(timerId);\n };\n var startY = e.clientY;\n var startTop = this.thumbTop;\n var onScrollInterval = function () {\n if (mousePageY === undefined)\n return;\n var scrollTop = self.scrollTopFromThumbTop(startTop + mousePageY - startY);\n if (scrollTop === self.scrollTop)\n return;\n self._emit(\"scroll\", { data: scrollTop });\n };\n event.capture(this.inner, onMouseMove, onMouseUp);\n var timerId = setInterval(onScrollInterval, 20);\n return event.preventDefault(e);\n }\n var top = e.clientY - this.element.getBoundingClientRect().top - this.thumbHeight / 2;\n this._emit(\"scroll\", { data: this.scrollTopFromThumbTop(top) });\n return event.preventDefault(e);\n };\n VScrollBar.prototype.getHeight = function () {\n return this.height;\n };\n VScrollBar.prototype.scrollTopFromThumbTop = function (thumbTop) {\n var scrollTop = thumbTop * (this.pageHeight - this.viewHeight) / (this.slideHeight - this.thumbHeight);\n scrollTop = scrollTop >> 0;\n if (scrollTop < 0) {\n scrollTop = 0;\n }\n else if (scrollTop > this.pageHeight - this.viewHeight) {\n scrollTop = this.pageHeight - this.viewHeight;\n }\n return scrollTop;\n };\n VScrollBar.prototype.getWidth = function () {\n return Math.max(this.isVisible ? this.width : 0, this.$minWidth || 0);\n };\n VScrollBar.prototype.setHeight = function (height) {\n this.height = Math.max(0, height);\n this.slideHeight = this.height;\n this.viewHeight = this.height;\n this.setScrollHeight(this.pageHeight, true);\n };\n VScrollBar.prototype.setScrollHeight = function (height, force) {\n if (this.pageHeight === height && !force)\n return;\n this.pageHeight = height;\n this.thumbHeight = this.slideHeight * this.viewHeight / this.pageHeight;\n if (this.thumbHeight > this.slideHeight)\n this.thumbHeight = this.slideHeight;\n if (this.thumbHeight < 15)\n this.thumbHeight = 15;\n this.inner.style.height = this.thumbHeight + \"px\";\n if (this.scrollTop > (this.pageHeight - this.viewHeight)) {\n this.scrollTop = (this.pageHeight - this.viewHeight);\n if (this.scrollTop < 0)\n this.scrollTop = 0;\n this._emit(\"scroll\", { data: this.scrollTop });\n }\n };\n VScrollBar.prototype.setScrollTop = function (scrollTop) {\n this.scrollTop = scrollTop;\n if (scrollTop < 0)\n scrollTop = 0;\n this.thumbTop = scrollTop * (this.slideHeight - this.thumbHeight) / (this.pageHeight - this.viewHeight);\n this.inner.style.top = this.thumbTop + \"px\";\n };\n return VScrollBar;\n}(ScrollBar));\nVScrollBar.prototype.setInnerHeight = VScrollBar.prototype.setScrollHeight;\nvar HScrollBar = /** @class */ (function (_super) {\n __extends(HScrollBar, _super);\n function HScrollBar(parent, renderer) {\n var _this = _super.call(this, parent, '-h') || this;\n _this.scrollLeft = 0;\n _this.scrollWidth = 0;\n _this.height = _this.HScrollHeight;\n _this.inner.style.height = _this.element.style.height = (_this.height || 12) + \"px\";\n _this.renderer = renderer;\n return _this;\n }\n HScrollBar.prototype.onMouseDown = function (eType, e) {\n if (eType !== \"mousedown\")\n return;\n if (event.getButton(e) !== 0 || e.detail === 2) {\n return;\n }\n if (e.target === this.inner) {\n var self = this;\n var mousePageX = e.clientX;\n var onMouseMove = function (e) {\n mousePageX = e.clientX;\n };\n var onMouseUp = function () {\n clearInterval(timerId);\n };\n var startX = e.clientX;\n var startLeft = this.thumbLeft;\n var onScrollInterval = function () {\n if (mousePageX === undefined)\n return;\n var scrollLeft = self.scrollLeftFromThumbLeft(startLeft + mousePageX - startX);\n if (scrollLeft === self.scrollLeft)\n return;\n self._emit(\"scroll\", { data: scrollLeft });\n };\n event.capture(this.inner, onMouseMove, onMouseUp);\n var timerId = setInterval(onScrollInterval, 20);\n return event.preventDefault(e);\n }\n var left = e.clientX - this.element.getBoundingClientRect().left - this.thumbWidth / 2;\n this._emit(\"scroll\", { data: this.scrollLeftFromThumbLeft(left) });\n return event.preventDefault(e);\n };\n HScrollBar.prototype.getHeight = function () {\n return this.isVisible ? this.height : 0;\n };\n HScrollBar.prototype.scrollLeftFromThumbLeft = function (thumbLeft) {\n var scrollLeft = thumbLeft * (this.pageWidth - this.viewWidth) / (this.slideWidth - this.thumbWidth);\n scrollLeft = scrollLeft >> 0;\n if (scrollLeft < 0) {\n scrollLeft = 0;\n }\n else if (scrollLeft > this.pageWidth - this.viewWidth) {\n scrollLeft = this.pageWidth - this.viewWidth;\n }\n return scrollLeft;\n };\n HScrollBar.prototype.setWidth = function (width) {\n this.width = Math.max(0, width);\n this.element.style.width = this.width + \"px\";\n this.slideWidth = this.width;\n this.viewWidth = this.width;\n this.setScrollWidth(this.pageWidth, true);\n };\n HScrollBar.prototype.setScrollWidth = function (width, force) {\n if (this.pageWidth === width && !force)\n return;\n this.pageWidth = width;\n this.thumbWidth = this.slideWidth * this.viewWidth / this.pageWidth;\n if (this.thumbWidth > this.slideWidth)\n this.thumbWidth = this.slideWidth;\n if (this.thumbWidth < 15)\n this.thumbWidth = 15;\n this.inner.style.width = this.thumbWidth + \"px\";\n if (this.scrollLeft > (this.pageWidth - this.viewWidth)) {\n this.scrollLeft = (this.pageWidth - this.viewWidth);\n if (this.scrollLeft < 0)\n this.scrollLeft = 0;\n this._emit(\"scroll\", { data: this.scrollLeft });\n }\n };\n HScrollBar.prototype.setScrollLeft = function (scrollLeft) {\n this.scrollLeft = scrollLeft;\n if (scrollLeft < 0)\n scrollLeft = 0;\n this.thumbLeft = scrollLeft * (this.slideWidth - this.thumbWidth) / (this.pageWidth - this.viewWidth);\n this.inner.style.left = (this.thumbLeft) + \"px\";\n };\n return HScrollBar;\n}(ScrollBar));\nHScrollBar.prototype.setInnerWidth = HScrollBar.prototype.setScrollWidth;\nexports.ScrollBar = VScrollBar; // backward compatibility\nexports.ScrollBarV = VScrollBar; // backward compatibility\nexports.ScrollBarH = HScrollBar; // backward compatibility\nexports.VScrollBar = VScrollBar;\nexports.HScrollBar = HScrollBar;\n\n});\n\nace.define(\"ace/renderloop\",[\"require\",\"exports\",\"module\",\"ace/lib/event\"], function(require, exports, module){\"use strict\";\nvar event = require(\"./lib/event\");\nvar RenderLoop = /** @class */ (function () {\n function RenderLoop(onRender, win) {\n this.onRender = onRender;\n this.pending = false;\n this.changes = 0;\n this.$recursionLimit = 2;\n this.window = win || window;\n var _self = this;\n this._flush = function (ts) {\n _self.pending = false;\n var changes = _self.changes;\n if (changes) {\n event.blockIdle(100);\n _self.changes = 0;\n _self.onRender(changes);\n }\n if (_self.changes) {\n if (_self.$recursionLimit-- < 0)\n return;\n _self.schedule();\n }\n else {\n _self.$recursionLimit = 2;\n }\n };\n }\n RenderLoop.prototype.schedule = function (change) {\n this.changes = this.changes | change;\n if (this.changes && !this.pending) {\n event.nextFrame(this._flush);\n this.pending = true;\n }\n };\n RenderLoop.prototype.clear = function (change) {\n var changes = this.changes;\n this.changes = 0;\n return changes;\n };\n return RenderLoop;\n}());\nexports.RenderLoop = RenderLoop;\n\n});\n\nace.define(\"ace/layer/font_metrics\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/dom\",\"ace/lib/lang\",\"ace/lib/event\",\"ace/lib/useragent\",\"ace/lib/event_emitter\"], function(require, exports, module){var oop = require(\"../lib/oop\");\nvar dom = require(\"../lib/dom\");\nvar lang = require(\"../lib/lang\");\nvar event = require(\"../lib/event\");\nvar useragent = require(\"../lib/useragent\");\nvar EventEmitter = require(\"../lib/event_emitter\").EventEmitter;\nvar CHAR_COUNT = 512;\nvar USE_OBSERVER = typeof ResizeObserver == \"function\";\nvar L = 200;\nvar FontMetrics = /** @class */ (function () {\n function FontMetrics(parentEl) {\n this.el = dom.createElement(\"div\");\n this.$setMeasureNodeStyles(this.el.style, true);\n this.$main = dom.createElement(\"div\");\n this.$setMeasureNodeStyles(this.$main.style);\n this.$measureNode = dom.createElement(\"div\");\n this.$setMeasureNodeStyles(this.$measureNode.style);\n this.el.appendChild(this.$main);\n this.el.appendChild(this.$measureNode);\n parentEl.appendChild(this.el);\n this.$measureNode.textContent = lang.stringRepeat(\"X\", CHAR_COUNT);\n this.$characterSize = { width: 0, height: 0 };\n if (USE_OBSERVER)\n this.$addObserver();\n else\n this.checkForSizeChanges();\n }\n FontMetrics.prototype.$setMeasureNodeStyles = function (style, isRoot) {\n style.width = style.height = \"auto\";\n style.left = style.top = \"0px\";\n style.visibility = \"hidden\";\n style.position = \"absolute\";\n style.whiteSpace = \"pre\";\n if (useragent.isIE < 8) {\n style[\"font-family\"] = \"inherit\";\n }\n else {\n style.font = \"inherit\";\n }\n style.overflow = isRoot ? \"hidden\" : \"visible\";\n };\n FontMetrics.prototype.checkForSizeChanges = function (size) {\n if (size === undefined)\n size = this.$measureSizes();\n if (size && (this.$characterSize.width !== size.width || this.$characterSize.height !== size.height)) {\n this.$measureNode.style.fontWeight = \"bold\";\n var boldSize = this.$measureSizes();\n this.$measureNode.style.fontWeight = \"\";\n this.$characterSize = size;\n this.charSizes = Object.create(null);\n this.allowBoldFonts = boldSize && boldSize.width === size.width && boldSize.height === size.height;\n this._emit(\"changeCharacterSize\", { data: size });\n }\n };\n FontMetrics.prototype.$addObserver = function () {\n var self = this;\n this.$observer = new window.ResizeObserver(function (e) {\n self.checkForSizeChanges();\n });\n this.$observer.observe(this.$measureNode);\n };\n FontMetrics.prototype.$pollSizeChanges = function () {\n if (this.$pollSizeChangesTimer || this.$observer)\n return this.$pollSizeChangesTimer;\n var self = this;\n return this.$pollSizeChangesTimer = event.onIdle(function cb() {\n self.checkForSizeChanges();\n event.onIdle(cb, 500);\n }, 500);\n };\n FontMetrics.prototype.setPolling = function (val) {\n if (val) {\n this.$pollSizeChanges();\n }\n else if (this.$pollSizeChangesTimer) {\n clearInterval(this.$pollSizeChangesTimer);\n this.$pollSizeChangesTimer = 0;\n }\n };\n FontMetrics.prototype.$measureSizes = function (node) {\n var size = {\n height: (node || this.$measureNode).clientHeight,\n width: (node || this.$measureNode).clientWidth / CHAR_COUNT\n };\n if (size.width === 0 || size.height === 0)\n return null;\n return size;\n };\n FontMetrics.prototype.$measureCharWidth = function (ch) {\n this.$main.textContent = lang.stringRepeat(ch, CHAR_COUNT);\n var rect = this.$main.getBoundingClientRect();\n return rect.width / CHAR_COUNT;\n };\n FontMetrics.prototype.getCharacterWidth = function (ch) {\n var w = this.charSizes[ch];\n if (w === undefined) {\n w = this.charSizes[ch] = this.$measureCharWidth(ch) / this.$characterSize.width;\n }\n return w;\n };\n FontMetrics.prototype.destroy = function () {\n clearInterval(this.$pollSizeChangesTimer);\n if (this.$observer)\n this.$observer.disconnect();\n if (this.el && this.el.parentNode)\n this.el.parentNode.removeChild(this.el);\n };\n FontMetrics.prototype.$getZoom = function (element) {\n if (!element || !element.parentElement)\n return 1;\n return (window.getComputedStyle(element).zoom || 1) * this.$getZoom(element.parentElement);\n };\n FontMetrics.prototype.$initTransformMeasureNodes = function () {\n var t = function (t, l) {\n return [\"div\", {\n style: \"position: absolute;top:\" + t + \"px;left:\" + l + \"px;\"\n }];\n };\n this.els = dom.buildDom([t(0, 0), t(L, 0), t(0, L), t(L, L)], this.el);\n };\n FontMetrics.prototype.transformCoordinates = function (clientPos, elPos) {\n if (clientPos) {\n var zoom = this.$getZoom(this.el);\n clientPos = mul(1 / zoom, clientPos);\n }\n function solve(l1, l2, r) {\n var det = l1[1] * l2[0] - l1[0] * l2[1];\n return [\n (-l2[1] * r[0] + l2[0] * r[1]) / det,\n (+l1[1] * r[0] - l1[0] * r[1]) / det\n ];\n }\n function sub(a, b) { return [a[0] - b[0], a[1] - b[1]]; }\n function add(a, b) { return [a[0] + b[0], a[1] + b[1]]; }\n function mul(a, b) { return [a * b[0], a * b[1]]; }\n if (!this.els)\n this.$initTransformMeasureNodes();\n function p(el) {\n var r = el.getBoundingClientRect();\n return [r.left, r.top];\n }\n var a = p(this.els[0]);\n var b = p(this.els[1]);\n var c = p(this.els[2]);\n var d = p(this.els[3]);\n var h = solve(sub(d, b), sub(d, c), sub(add(b, c), add(d, a)));\n var m1 = mul(1 + h[0], sub(b, a));\n var m2 = mul(1 + h[1], sub(c, a));\n if (elPos) {\n var x = elPos;\n var k = h[0] * x[0] / L + h[1] * x[1] / L + 1;\n var ut = add(mul(x[0], m1), mul(x[1], m2));\n return add(mul(1 / k / L, ut), a);\n }\n var u = sub(clientPos, a);\n var f = solve(sub(m1, mul(h[0], u)), sub(m2, mul(h[1], u)), u);\n return mul(L, f);\n };\n return FontMetrics;\n}());\nFontMetrics.prototype.$characterSize = { width: 0, height: 0 };\noop.implement(FontMetrics.prototype, EventEmitter);\nexports.FontMetrics = FontMetrics;\n\n});\n\nace.define(\"ace/css/editor-css\",[\"require\",\"exports\",\"module\"], function(require, exports, module){/*\nstyles = []\nfor (var i = 1; i < 16; i++) {\n styles.push(\".ace_br\" + i + \"{\" + (\n [\"top-left\", \"top-right\", \"bottom-right\", \"bottom-left\"]\n ).map(function(x, j) {\n return i & (1< .ace_line, .ace_text-layer > .ace_line_group {\\n contain: style size layout;\\n position: absolute;\\n top: 0;\\n left: 0;\\n right: 0;\\n}\\n\\n.ace_hidpi .ace_text-layer,\\n.ace_hidpi .ace_gutter-layer,\\n.ace_hidpi .ace_content,\\n.ace_hidpi .ace_gutter {\\n contain: strict;\\n}\\n.ace_hidpi .ace_text-layer > .ace_line, \\n.ace_hidpi .ace_text-layer > .ace_line_group {\\n contain: strict;\\n}\\n\\n.ace_cjk {\\n display: inline-block;\\n text-align: center;\\n}\\n\\n.ace_cursor-layer {\\n z-index: 4;\\n}\\n\\n.ace_cursor {\\n z-index: 4;\\n position: absolute;\\n box-sizing: border-box;\\n border-left: 2px solid;\\n /* workaround for smooth cursor repaintng whole screen in chrome */\\n transform: translatez(0);\\n}\\n\\n.ace_multiselect .ace_cursor {\\n border-left-width: 1px;\\n}\\n\\n.ace_slim-cursors .ace_cursor {\\n border-left-width: 1px;\\n}\\n\\n.ace_overwrite-cursors .ace_cursor {\\n border-left-width: 0;\\n border-bottom: 1px solid;\\n}\\n\\n.ace_hidden-cursors .ace_cursor {\\n opacity: 0.2;\\n}\\n\\n.ace_hasPlaceholder .ace_hidden-cursors .ace_cursor {\\n opacity: 0;\\n}\\n\\n.ace_smooth-blinking .ace_cursor {\\n transition: opacity 0.18s;\\n}\\n\\n.ace_animate-blinking .ace_cursor {\\n animation-duration: 1000ms;\\n animation-timing-function: step-end;\\n animation-name: blink-ace-animate;\\n animation-iteration-count: infinite;\\n}\\n\\n.ace_animate-blinking.ace_smooth-blinking .ace_cursor {\\n animation-duration: 1000ms;\\n animation-timing-function: ease-in-out;\\n animation-name: blink-ace-animate-smooth;\\n}\\n \\n@keyframes blink-ace-animate {\\n from, to { opacity: 1; }\\n 60% { opacity: 0; }\\n}\\n\\n@keyframes blink-ace-animate-smooth {\\n from, to { opacity: 1; }\\n 45% { opacity: 1; }\\n 60% { opacity: 0; }\\n 85% { opacity: 0; }\\n}\\n\\n.ace_marker-layer .ace_step, .ace_marker-layer .ace_stack {\\n position: absolute;\\n z-index: 3;\\n}\\n\\n.ace_marker-layer .ace_selection {\\n position: absolute;\\n z-index: 5;\\n}\\n\\n.ace_marker-layer .ace_bracket {\\n position: absolute;\\n z-index: 6;\\n}\\n\\n.ace_marker-layer .ace_error_bracket {\\n position: absolute;\\n border-bottom: 1px solid #DE5555;\\n border-radius: 0;\\n}\\n\\n.ace_marker-layer .ace_active-line {\\n position: absolute;\\n z-index: 2;\\n}\\n\\n.ace_marker-layer .ace_selected-word {\\n position: absolute;\\n z-index: 4;\\n box-sizing: border-box;\\n}\\n\\n.ace_line .ace_fold {\\n box-sizing: border-box;\\n\\n display: inline-block;\\n height: 11px;\\n margin-top: -2px;\\n vertical-align: middle;\\n\\n background-image:\\n url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII=\\\"),\\n url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACJJREFUeNpi+P//fxgTAwPDBxDxD078RSX+YeEyDFMCIMAAI3INmXiwf2YAAAAASUVORK5CYII=\\\");\\n background-repeat: no-repeat, repeat-x;\\n background-position: center center, top left;\\n color: transparent;\\n\\n border: 1px solid black;\\n border-radius: 2px;\\n\\n cursor: pointer;\\n pointer-events: auto;\\n}\\n\\n.ace_dark .ace_fold {\\n}\\n\\n.ace_fold:hover{\\n background-image:\\n url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII=\\\"),\\n url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACBJREFUeNpi+P//fz4TAwPDZxDxD5X4i5fLMEwJgAADAEPVDbjNw87ZAAAAAElFTkSuQmCC\\\");\\n}\\n\\n.ace_tooltip {\\n background-color: #f5f5f5;\\n border: 1px solid gray;\\n border-radius: 1px;\\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);\\n color: black;\\n max-width: 100%;\\n padding: 3px 4px;\\n position: fixed;\\n z-index: 999999;\\n box-sizing: border-box;\\n cursor: default;\\n white-space: pre-wrap;\\n word-wrap: break-word;\\n line-height: normal;\\n font-style: normal;\\n font-weight: normal;\\n letter-spacing: normal;\\n pointer-events: none;\\n overflow: auto;\\n max-width: min(60em, 66vw);\\n}\\n.ace_tooltip pre {\\n white-space: pre-wrap;\\n}\\n\\n.ace_tooltip.ace_dark {\\n background-color: #636363;\\n color: #fff;\\n}\\n\\n.ace_tooltip:focus {\\n outline: 1px solid #5E9ED6;\\n}\\n\\n.ace_icon {\\n display: inline-block;\\n width: 18px;\\n vertical-align: top;\\n}\\n\\n.ace_icon_svg {\\n display: inline-block;\\n width: 12px;\\n vertical-align: top;\\n -webkit-mask-repeat: no-repeat;\\n -webkit-mask-size: 12px;\\n -webkit-mask-position: center;\\n}\\n\\n.ace_folding-enabled > .ace_gutter-cell, .ace_folding-enabled > .ace_gutter-cell_svg-icons {\\n padding-right: 13px;\\n}\\n\\n.ace_fold-widget {\\n box-sizing: border-box;\\n\\n margin: 0 -12px 0 1px;\\n display: none;\\n width: 11px;\\n vertical-align: top;\\n\\n background-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42mWKsQ0AMAzC8ixLlrzQjzmBiEjp0A6WwBCSPgKAXoLkqSot7nN3yMwR7pZ32NzpKkVoDBUxKAAAAABJRU5ErkJggg==\\\");\\n background-repeat: no-repeat;\\n background-position: center;\\n\\n border-radius: 3px;\\n \\n border: 1px solid transparent;\\n cursor: pointer;\\n}\\n\\n.ace_folding-enabled .ace_fold-widget {\\n display: inline-block; \\n}\\n\\n.ace_fold-widget.ace_end {\\n background-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42m3HwQkAMAhD0YzsRchFKI7sAikeWkrxwScEB0nh5e7KTPWimZki4tYfVbX+MNl4pyZXejUO1QAAAABJRU5ErkJggg==\\\");\\n}\\n\\n.ace_fold-widget.ace_closed {\\n background-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAGCAYAAAAG5SQMAAAAOUlEQVR42jXKwQkAMAgDwKwqKD4EwQ26sSOkVWjgIIHAzPiCgaqiqnJHZnKICBERHN194O5b9vbLuAVRL+l0YWnZAAAAAElFTkSuQmCCXA==\\\");\\n}\\n\\n.ace_fold-widget:hover {\\n border: 1px solid rgba(0, 0, 0, 0.3);\\n background-color: rgba(255, 255, 255, 0.2);\\n box-shadow: 0 1px 1px rgba(255, 255, 255, 0.7);\\n}\\n\\n.ace_fold-widget:active {\\n border: 1px solid rgba(0, 0, 0, 0.4);\\n background-color: rgba(0, 0, 0, 0.05);\\n box-shadow: 0 1px 1px rgba(255, 255, 255, 0.8);\\n}\\n/**\\n * Dark version for fold widgets\\n */\\n.ace_dark .ace_fold-widget {\\n background-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHklEQVQIW2P4//8/AzoGEQ7oGCaLLAhWiSwB146BAQCSTPYocqT0AAAAAElFTkSuQmCC\\\");\\n}\\n.ace_dark .ace_fold-widget.ace_end {\\n background-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAH0lEQVQIW2P4//8/AxQ7wNjIAjDMgC4AxjCVKBirIAAF0kz2rlhxpAAAAABJRU5ErkJggg==\\\");\\n}\\n.ace_dark .ace_fold-widget.ace_closed {\\n background-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAFCAYAAACAcVaiAAAAHElEQVQIW2P4//+/AxAzgDADlOOAznHAKgPWAwARji8UIDTfQQAAAABJRU5ErkJggg==\\\");\\n}\\n.ace_dark .ace_fold-widget:hover {\\n box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);\\n background-color: rgba(255, 255, 255, 0.1);\\n}\\n.ace_dark .ace_fold-widget:active {\\n box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);\\n}\\n\\n.ace_inline_button {\\n border: 1px solid lightgray;\\n display: inline-block;\\n margin: -1px 8px;\\n padding: 0 5px;\\n pointer-events: auto;\\n cursor: pointer;\\n}\\n.ace_inline_button:hover {\\n border-color: gray;\\n background: rgba(200,200,200,0.2);\\n display: inline-block;\\n pointer-events: auto;\\n}\\n\\n.ace_fold-widget.ace_invalid {\\n background-color: #FFB4B4;\\n border-color: #DE5555;\\n}\\n\\n.ace_fade-fold-widgets .ace_fold-widget {\\n transition: opacity 0.4s ease 0.05s;\\n opacity: 0;\\n}\\n\\n.ace_fade-fold-widgets:hover .ace_fold-widget {\\n transition: opacity 0.05s ease 0.05s;\\n opacity:1;\\n}\\n\\n.ace_underline {\\n text-decoration: underline;\\n}\\n\\n.ace_bold {\\n font-weight: bold;\\n}\\n\\n.ace_nobold .ace_bold {\\n font-weight: normal;\\n}\\n\\n.ace_italic {\\n font-style: italic;\\n}\\n\\n\\n.ace_error-marker {\\n background-color: rgba(255, 0, 0,0.2);\\n position: absolute;\\n z-index: 9;\\n}\\n\\n.ace_highlight-marker {\\n background-color: rgba(255, 255, 0,0.2);\\n position: absolute;\\n z-index: 8;\\n}\\n\\n.ace_mobile-menu {\\n position: absolute;\\n line-height: 1.5;\\n border-radius: 4px;\\n -ms-user-select: none;\\n -moz-user-select: none;\\n -webkit-user-select: none;\\n user-select: none;\\n background: white;\\n box-shadow: 1px 3px 2px grey;\\n border: 1px solid #dcdcdc;\\n color: black;\\n}\\n.ace_dark > .ace_mobile-menu {\\n background: #333;\\n color: #ccc;\\n box-shadow: 1px 3px 2px grey;\\n border: 1px solid #444;\\n\\n}\\n.ace_mobile-button {\\n padding: 2px;\\n cursor: pointer;\\n overflow: hidden;\\n}\\n.ace_mobile-button:hover {\\n background-color: #eee;\\n opacity:1;\\n}\\n.ace_mobile-button:active {\\n background-color: #ddd;\\n}\\n\\n.ace_placeholder {\\n font-family: arial;\\n transform: scale(0.9);\\n transform-origin: left;\\n white-space: pre;\\n opacity: 0.7;\\n margin: 0 10px;\\n}\\n\\n.ace_ghost_text {\\n opacity: 0.5;\\n font-style: italic;\\n white-space: pre;\\n}\\n\\n.ace_screenreader-only {\\n position:absolute;\\n left:-10000px;\\n top:auto;\\n width:1px;\\n height:1px;\\n overflow:hidden;\\n}\";\n\n});\n\nace.define(\"ace/layer/decorators\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\",\"ace/lib/oop\",\"ace/lib/event_emitter\"], function(require, exports, module){\"use strict\";\nvar dom = require(\"../lib/dom\");\nvar oop = require(\"../lib/oop\");\nvar EventEmitter = require(\"../lib/event_emitter\").EventEmitter;\nvar Decorator = /** @class */ (function () {\n function Decorator(parent, renderer) {\n this.canvas = dom.createElement(\"canvas\");\n this.renderer = renderer;\n this.pixelRatio = 1;\n this.maxHeight = renderer.layerConfig.maxHeight;\n this.lineHeight = renderer.layerConfig.lineHeight;\n this.canvasHeight = parent.parent.scrollHeight;\n this.heightRatio = this.canvasHeight / this.maxHeight;\n this.canvasWidth = parent.width;\n this.minDecorationHeight = (2 * this.pixelRatio) | 0;\n this.halfMinDecorationHeight = (this.minDecorationHeight / 2) | 0;\n this.canvas.width = this.canvasWidth;\n this.canvas.height = this.canvasHeight;\n this.canvas.style.top = 0 + \"px\";\n this.canvas.style.right = 0 + \"px\";\n this.canvas.style.zIndex = 7 + \"px\";\n this.canvas.style.position = \"absolute\";\n this.colors = {};\n this.colors.dark = {\n \"error\": \"rgba(255, 18, 18, 1)\",\n \"warning\": \"rgba(18, 136, 18, 1)\",\n \"info\": \"rgba(18, 18, 136, 1)\"\n };\n this.colors.light = {\n \"error\": \"rgb(255,51,51)\",\n \"warning\": \"rgb(32,133,72)\",\n \"info\": \"rgb(35,68,138)\"\n };\n parent.element.appendChild(this.canvas);\n }\n Decorator.prototype.$updateDecorators = function (config) {\n var colors = (this.renderer.theme.isDark === true) ? this.colors.dark : this.colors.light;\n if (config) {\n this.maxHeight = config.maxHeight;\n this.lineHeight = config.lineHeight;\n this.canvasHeight = config.height;\n var allLineHeight = (config.lastRow + 1) * this.lineHeight;\n if (allLineHeight < this.canvasHeight) {\n this.heightRatio = 1;\n }\n else {\n this.heightRatio = this.canvasHeight / this.maxHeight;\n }\n }\n var ctx = this.canvas.getContext(\"2d\");\n function compare(a, b) {\n if (a.priority < b.priority)\n return -1;\n if (a.priority > b.priority)\n return 1;\n return 0;\n }\n var annotations = this.renderer.session.$annotations;\n ctx.clearRect(0, 0, this.canvas.width, this.canvas.height);\n if (annotations) {\n var priorities = {\n \"info\": 1,\n \"warning\": 2,\n \"error\": 3\n };\n annotations.forEach(function (item) {\n item.priority = priorities[item.type] || null;\n });\n annotations = annotations.sort(compare);\n var foldData = this.renderer.session.$foldData;\n for (var i = 0; i < annotations.length; i++) {\n var row = annotations[i].row;\n var compensateFold = this.compensateFoldRows(row, foldData);\n var currentY = Math.round((row - compensateFold) * this.lineHeight * this.heightRatio);\n var y1 = Math.round(((row - compensateFold) * this.lineHeight * this.heightRatio));\n var y2 = Math.round((((row - compensateFold) * this.lineHeight + this.lineHeight) * this.heightRatio));\n var height = y2 - y1;\n if (height < this.minDecorationHeight) {\n var yCenter = ((y1 + y2) / 2) | 0;\n if (yCenter < this.halfMinDecorationHeight) {\n yCenter = this.halfMinDecorationHeight;\n }\n else if (yCenter + this.halfMinDecorationHeight > this.canvasHeight) {\n yCenter = this.canvasHeight - this.halfMinDecorationHeight;\n }\n y1 = Math.round(yCenter - this.halfMinDecorationHeight);\n y2 = Math.round(yCenter + this.halfMinDecorationHeight);\n }\n ctx.fillStyle = colors[annotations[i].type] || null;\n ctx.fillRect(0, currentY, this.canvasWidth, y2 - y1);\n }\n }\n var cursor = this.renderer.session.selection.getCursor();\n if (cursor) {\n var compensateFold = this.compensateFoldRows(cursor.row, foldData);\n var currentY = Math.round((cursor.row - compensateFold) * this.lineHeight * this.heightRatio);\n ctx.fillStyle = \"rgba(0, 0, 0, 0.5)\";\n ctx.fillRect(0, currentY, this.canvasWidth, 2);\n }\n };\n Decorator.prototype.compensateFoldRows = function (row, foldData) {\n var compensateFold = 0;\n if (foldData && foldData.length > 0) {\n for (var j = 0; j < foldData.length; j++) {\n if (row > foldData[j].start.row && row < foldData[j].end.row) {\n compensateFold += row - foldData[j].start.row;\n }\n else if (row >= foldData[j].end.row) {\n compensateFold += foldData[j].end.row - foldData[j].start.row;\n }\n }\n }\n return compensateFold;\n };\n return Decorator;\n}());\noop.implement(Decorator.prototype, EventEmitter);\nexports.Decorator = Decorator;\n\n});\n\nace.define(\"ace/virtual_renderer\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/dom\",\"ace/lib/lang\",\"ace/config\",\"ace/layer/gutter\",\"ace/layer/marker\",\"ace/layer/text\",\"ace/layer/cursor\",\"ace/scrollbar\",\"ace/scrollbar\",\"ace/scrollbar_custom\",\"ace/scrollbar_custom\",\"ace/renderloop\",\"ace/layer/font_metrics\",\"ace/lib/event_emitter\",\"ace/css/editor-css\",\"ace/layer/decorators\",\"ace/lib/useragent\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"./lib/oop\");\nvar dom = require(\"./lib/dom\");\nvar lang = require(\"./lib/lang\");\nvar config = require(\"./config\");\nvar GutterLayer = require(\"./layer/gutter\").Gutter;\nvar MarkerLayer = require(\"./layer/marker\").Marker;\nvar TextLayer = require(\"./layer/text\").Text;\nvar CursorLayer = require(\"./layer/cursor\").Cursor;\nvar HScrollBar = require(\"./scrollbar\").HScrollBar;\nvar VScrollBar = require(\"./scrollbar\").VScrollBar;\nvar HScrollBarCustom = require(\"./scrollbar_custom\").HScrollBar;\nvar VScrollBarCustom = require(\"./scrollbar_custom\").VScrollBar;\nvar RenderLoop = require(\"./renderloop\").RenderLoop;\nvar FontMetrics = require(\"./layer/font_metrics\").FontMetrics;\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar editorCss = require(\"./css/editor-css\");\nvar Decorator = require(\"./layer/decorators\").Decorator;\nvar useragent = require(\"./lib/useragent\");\ndom.importCssString(editorCss, \"ace_editor.css\", false);\nvar VirtualRenderer = /** @class */ (function () {\n function VirtualRenderer(container, theme) {\n var _self = this;\n this.container = container || dom.createElement(\"div\");\n dom.addCssClass(this.container, \"ace_editor\");\n if (dom.HI_DPI)\n dom.addCssClass(this.container, \"ace_hidpi\");\n this.setTheme(theme);\n if (config.get(\"useStrictCSP\") == null)\n config.set(\"useStrictCSP\", false);\n this.$gutter = dom.createElement(\"div\");\n this.$gutter.className = \"ace_gutter\";\n this.container.appendChild(this.$gutter);\n this.$gutter.setAttribute(\"aria-hidden\", true);\n this.scroller = dom.createElement(\"div\");\n this.scroller.className = \"ace_scroller\";\n this.container.appendChild(this.scroller);\n this.content = dom.createElement(\"div\");\n this.content.className = \"ace_content\";\n this.scroller.appendChild(this.content);\n this.$gutterLayer = new GutterLayer(this.$gutter);\n this.$gutterLayer.on(\"changeGutterWidth\", this.onGutterResize.bind(this));\n this.$markerBack = new MarkerLayer(this.content);\n var textLayer = this.$textLayer = new TextLayer(this.content);\n this.canvas = textLayer.element;\n this.$markerFront = new MarkerLayer(this.content);\n this.$cursorLayer = new CursorLayer(this.content);\n this.$horizScroll = false;\n this.$vScroll = false;\n this.scrollBar =\n this.scrollBarV = new VScrollBar(this.container, this);\n this.scrollBarH = new HScrollBar(this.container, this);\n this.scrollBarV.on(\"scroll\", function (e) {\n if (!_self.$scrollAnimation)\n _self.session.setScrollTop(e.data - _self.scrollMargin.top);\n });\n this.scrollBarH.on(\"scroll\", function (e) {\n if (!_self.$scrollAnimation)\n _self.session.setScrollLeft(e.data - _self.scrollMargin.left);\n });\n this.scrollTop = 0;\n this.scrollLeft = 0;\n this.cursorPos = {\n row: 0,\n column: 0\n };\n this.$fontMetrics = new FontMetrics(this.container);\n this.$textLayer.$setFontMetrics(this.$fontMetrics);\n this.$textLayer.on(\"changeCharacterSize\", function (e) {\n _self.updateCharacterSize();\n _self.onResize(true, _self.gutterWidth, _self.$size.width, _self.$size.height);\n _self._signal(\"changeCharacterSize\", e);\n });\n this.$size = {\n width: 0,\n height: 0,\n scrollerHeight: 0,\n scrollerWidth: 0,\n $dirty: true\n };\n this.layerConfig = {\n width: 1,\n padding: 0,\n firstRow: 0,\n firstRowScreen: 0,\n lastRow: 0,\n lineHeight: 0,\n characterWidth: 0,\n minHeight: 1,\n maxHeight: 1,\n offset: 0,\n height: 1,\n gutterOffset: 1\n };\n this.scrollMargin = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0,\n v: 0,\n h: 0\n };\n this.margin = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0,\n v: 0,\n h: 0\n };\n this.$keepTextAreaAtCursor = !useragent.isIOS;\n this.$loop = new RenderLoop(this.$renderChanges.bind(this), this.container.ownerDocument.defaultView);\n this.$loop.schedule(this.CHANGE_FULL);\n this.updateCharacterSize();\n this.setPadding(4);\n this.$addResizeObserver();\n config.resetOptions(this);\n config._signal(\"renderer\", this);\n }\n VirtualRenderer.prototype.updateCharacterSize = function () {\n if (this.$textLayer.allowBoldFonts != this.$allowBoldFonts) {\n this.$allowBoldFonts = this.$textLayer.allowBoldFonts;\n this.setStyle(\"ace_nobold\", !this.$allowBoldFonts);\n }\n this.layerConfig.characterWidth =\n this.characterWidth = this.$textLayer.getCharacterWidth();\n this.layerConfig.lineHeight =\n this.lineHeight = this.$textLayer.getLineHeight();\n this.$updatePrintMargin();\n dom.setStyle(this.scroller.style, \"line-height\", this.lineHeight + \"px\");\n };\n VirtualRenderer.prototype.setSession = function (session) {\n if (this.session)\n this.session.doc.off(\"changeNewLineMode\", this.onChangeNewLineMode);\n this.session = session;\n if (session && this.scrollMargin.top && session.getScrollTop() <= 0)\n session.setScrollTop(-this.scrollMargin.top);\n this.$cursorLayer.setSession(session);\n this.$markerBack.setSession(session);\n this.$markerFront.setSession(session);\n this.$gutterLayer.setSession(session);\n this.$textLayer.setSession(session);\n if (!session)\n return;\n this.$loop.schedule(this.CHANGE_FULL);\n this.session.$setFontMetrics(this.$fontMetrics);\n this.scrollBarH.scrollLeft = this.scrollBarV.scrollTop = null;\n this.onChangeNewLineMode = this.onChangeNewLineMode.bind(this);\n this.onChangeNewLineMode();\n this.session.doc.on(\"changeNewLineMode\", this.onChangeNewLineMode);\n };\n VirtualRenderer.prototype.updateLines = function (firstRow, lastRow, force) {\n if (lastRow === undefined)\n lastRow = Infinity;\n if (!this.$changedLines) {\n this.$changedLines = {\n firstRow: firstRow,\n lastRow: lastRow\n };\n }\n else {\n if (this.$changedLines.firstRow > firstRow)\n this.$changedLines.firstRow = firstRow;\n if (this.$changedLines.lastRow < lastRow)\n this.$changedLines.lastRow = lastRow;\n }\n if (this.$changedLines.lastRow < this.layerConfig.firstRow) {\n if (force)\n this.$changedLines.lastRow = this.layerConfig.lastRow;\n else\n return;\n }\n if (this.$changedLines.firstRow > this.layerConfig.lastRow)\n return;\n this.$loop.schedule(this.CHANGE_LINES);\n };\n VirtualRenderer.prototype.onChangeNewLineMode = function () {\n this.$loop.schedule(this.CHANGE_TEXT);\n this.$textLayer.$updateEolChar();\n this.session.$bidiHandler.setEolChar(this.$textLayer.EOL_CHAR);\n };\n VirtualRenderer.prototype.onChangeTabSize = function () {\n this.$loop.schedule(this.CHANGE_TEXT | this.CHANGE_MARKER);\n this.$textLayer.onChangeTabSize();\n };\n VirtualRenderer.prototype.updateText = function () {\n this.$loop.schedule(this.CHANGE_TEXT);\n };\n VirtualRenderer.prototype.updateFull = function (force) {\n if (force)\n this.$renderChanges(this.CHANGE_FULL, true);\n else\n this.$loop.schedule(this.CHANGE_FULL);\n };\n VirtualRenderer.prototype.updateFontSize = function () {\n this.$textLayer.checkForSizeChanges();\n };\n VirtualRenderer.prototype.$updateSizeAsync = function () {\n if (this.$loop.pending)\n this.$size.$dirty = true;\n else\n this.onResize();\n };\n VirtualRenderer.prototype.onResize = function (force, gutterWidth, width, height) {\n if (this.resizing > 2)\n return;\n else if (this.resizing > 0)\n this.resizing++;\n else\n this.resizing = force ? 1 : 0;\n var el = this.container;\n if (!height)\n height = el.clientHeight || el.scrollHeight;\n if (!width)\n width = el.clientWidth || el.scrollWidth;\n var changes = this.$updateCachedSize(force, gutterWidth, width, height);\n if (this.$resizeTimer)\n this.$resizeTimer.cancel();\n if (!this.$size.scrollerHeight || (!width && !height))\n return this.resizing = 0;\n if (force)\n this.$gutterLayer.$padding = null;\n if (force)\n this.$renderChanges(changes | this.$changes, true);\n else\n this.$loop.schedule(changes | this.$changes);\n if (this.resizing)\n this.resizing = 0;\n this.scrollBarH.scrollLeft = this.scrollBarV.scrollTop = null;\n if (this.$customScrollbar) {\n this.$updateCustomScrollbar(true);\n }\n };\n VirtualRenderer.prototype.$updateCachedSize = function (force, gutterWidth, width, height) {\n height -= (this.$extraHeight || 0);\n var changes = 0;\n var size = this.$size;\n var oldSize = {\n width: size.width,\n height: size.height,\n scrollerHeight: size.scrollerHeight,\n scrollerWidth: size.scrollerWidth\n };\n if (height && (force || size.height != height)) {\n size.height = height;\n changes |= this.CHANGE_SIZE;\n size.scrollerHeight = size.height;\n if (this.$horizScroll)\n size.scrollerHeight -= this.scrollBarH.getHeight();\n this.scrollBarV.setHeight(size.scrollerHeight);\n this.scrollBarV.element.style.bottom = this.scrollBarH.getHeight() + \"px\";\n changes = changes | this.CHANGE_SCROLL;\n }\n if (width && (force || size.width != width)) {\n changes |= this.CHANGE_SIZE;\n size.width = width;\n if (gutterWidth == null)\n gutterWidth = this.$showGutter ? this.$gutter.offsetWidth : 0;\n this.gutterWidth = gutterWidth;\n dom.setStyle(this.scrollBarH.element.style, \"left\", gutterWidth + \"px\");\n dom.setStyle(this.scroller.style, \"left\", gutterWidth + this.margin.left + \"px\");\n size.scrollerWidth = Math.max(0, width - gutterWidth - this.scrollBarV.getWidth() - this.margin.h);\n dom.setStyle(this.$gutter.style, \"left\", this.margin.left + \"px\");\n var right = this.scrollBarV.getWidth() + \"px\";\n dom.setStyle(this.scrollBarH.element.style, \"right\", right);\n dom.setStyle(this.scroller.style, \"right\", right);\n dom.setStyle(this.scroller.style, \"bottom\", this.scrollBarH.getHeight());\n this.scrollBarH.setWidth(size.scrollerWidth);\n if (this.session && this.session.getUseWrapMode() && this.adjustWrapLimit() || force) {\n changes |= this.CHANGE_FULL;\n }\n }\n size.$dirty = !width || !height;\n if (changes)\n this._signal(\"resize\", oldSize);\n return changes;\n };\n VirtualRenderer.prototype.onGutterResize = function (width) {\n var gutterWidth = this.$showGutter ? width : 0;\n if (gutterWidth != this.gutterWidth)\n this.$changes |= this.$updateCachedSize(true, gutterWidth, this.$size.width, this.$size.height);\n if (this.session.getUseWrapMode() && this.adjustWrapLimit()) {\n this.$loop.schedule(this.CHANGE_FULL);\n }\n else if (this.$size.$dirty) {\n this.$loop.schedule(this.CHANGE_FULL);\n }\n else {\n this.$computeLayerConfig();\n }\n };\n VirtualRenderer.prototype.adjustWrapLimit = function () {\n var availableWidth = this.$size.scrollerWidth - this.$padding * 2;\n var limit = Math.floor(availableWidth / this.characterWidth);\n return this.session.adjustWrapLimit(limit, this.$showPrintMargin && this.$printMarginColumn);\n };\n VirtualRenderer.prototype.setAnimatedScroll = function (shouldAnimate) {\n this.setOption(\"animatedScroll\", shouldAnimate);\n };\n VirtualRenderer.prototype.getAnimatedScroll = function () {\n return this.$animatedScroll;\n };\n VirtualRenderer.prototype.setShowInvisibles = function (showInvisibles) {\n this.setOption(\"showInvisibles\", showInvisibles);\n this.session.$bidiHandler.setShowInvisibles(showInvisibles);\n };\n VirtualRenderer.prototype.getShowInvisibles = function () {\n return this.getOption(\"showInvisibles\");\n };\n VirtualRenderer.prototype.getDisplayIndentGuides = function () {\n return this.getOption(\"displayIndentGuides\");\n };\n VirtualRenderer.prototype.setDisplayIndentGuides = function (display) {\n this.setOption(\"displayIndentGuides\", display);\n };\n VirtualRenderer.prototype.getHighlightIndentGuides = function () {\n return this.getOption(\"highlightIndentGuides\");\n };\n VirtualRenderer.prototype.setHighlightIndentGuides = function (highlight) {\n this.setOption(\"highlightIndentGuides\", highlight);\n };\n VirtualRenderer.prototype.setShowPrintMargin = function (showPrintMargin) {\n this.setOption(\"showPrintMargin\", showPrintMargin);\n };\n VirtualRenderer.prototype.getShowPrintMargin = function () {\n return this.getOption(\"showPrintMargin\");\n };\n VirtualRenderer.prototype.setPrintMarginColumn = function (showPrintMargin) {\n this.setOption(\"printMarginColumn\", showPrintMargin);\n };\n VirtualRenderer.prototype.getPrintMarginColumn = function () {\n return this.getOption(\"printMarginColumn\");\n };\n VirtualRenderer.prototype.getShowGutter = function () {\n return this.getOption(\"showGutter\");\n };\n VirtualRenderer.prototype.setShowGutter = function (show) {\n return this.setOption(\"showGutter\", show);\n };\n VirtualRenderer.prototype.getFadeFoldWidgets = function () {\n return this.getOption(\"fadeFoldWidgets\");\n };\n VirtualRenderer.prototype.setFadeFoldWidgets = function (show) {\n this.setOption(\"fadeFoldWidgets\", show);\n };\n VirtualRenderer.prototype.setHighlightGutterLine = function (shouldHighlight) {\n this.setOption(\"highlightGutterLine\", shouldHighlight);\n };\n VirtualRenderer.prototype.getHighlightGutterLine = function () {\n return this.getOption(\"highlightGutterLine\");\n };\n VirtualRenderer.prototype.$updatePrintMargin = function () {\n if (!this.$showPrintMargin && !this.$printMarginEl)\n return;\n if (!this.$printMarginEl) {\n var containerEl = dom.createElement(\"div\");\n containerEl.className = \"ace_layer ace_print-margin-layer\";\n this.$printMarginEl = dom.createElement(\"div\");\n this.$printMarginEl.className = \"ace_print-margin\";\n containerEl.appendChild(this.$printMarginEl);\n this.content.insertBefore(containerEl, this.content.firstChild);\n }\n var style = this.$printMarginEl.style;\n style.left = Math.round(this.characterWidth * this.$printMarginColumn + this.$padding) + \"px\";\n style.visibility = this.$showPrintMargin ? \"visible\" : \"hidden\";\n if (this.session && this.session.$wrap == -1)\n this.adjustWrapLimit();\n };\n VirtualRenderer.prototype.getContainerElement = function () {\n return this.container;\n };\n VirtualRenderer.prototype.getMouseEventTarget = function () {\n return this.scroller;\n };\n VirtualRenderer.prototype.getTextAreaContainer = function () {\n return this.container;\n };\n VirtualRenderer.prototype.$moveTextAreaToCursor = function () {\n if (this.$isMousePressed)\n return;\n var style = this.textarea.style;\n var composition = this.$composition;\n if (!this.$keepTextAreaAtCursor && !composition) {\n dom.translate(this.textarea, -100, 0);\n return;\n }\n var pixelPos = this.$cursorLayer.$pixelPos;\n if (!pixelPos)\n return;\n if (composition && composition.markerRange)\n pixelPos = this.$cursorLayer.getPixelPosition(composition.markerRange.start, true);\n var config = this.layerConfig;\n var posTop = pixelPos.top;\n var posLeft = pixelPos.left;\n posTop -= config.offset;\n var h = composition && composition.useTextareaForIME || useragent.isMobile ? this.lineHeight : 1;\n if (posTop < 0 || posTop > config.height - h) {\n dom.translate(this.textarea, 0, 0);\n return;\n }\n var w = 1;\n var maxTop = this.$size.height - h;\n if (!composition) {\n posTop += this.lineHeight;\n }\n else {\n if (composition.useTextareaForIME) {\n var val = this.textarea.value;\n w = this.characterWidth * (this.session.$getStringScreenWidth(val)[0]);\n }\n else {\n posTop += this.lineHeight + 2;\n }\n }\n posLeft -= this.scrollLeft;\n if (posLeft > this.$size.scrollerWidth - w)\n posLeft = this.$size.scrollerWidth - w;\n posLeft += this.gutterWidth + this.margin.left;\n dom.setStyle(style, \"height\", h + \"px\");\n dom.setStyle(style, \"width\", w + \"px\");\n dom.translate(this.textarea, Math.min(posLeft, this.$size.scrollerWidth - w), Math.min(posTop, maxTop));\n };\n VirtualRenderer.prototype.getFirstVisibleRow = function () {\n return this.layerConfig.firstRow;\n };\n VirtualRenderer.prototype.getFirstFullyVisibleRow = function () {\n return this.layerConfig.firstRow + (this.layerConfig.offset === 0 ? 0 : 1);\n };\n VirtualRenderer.prototype.getLastFullyVisibleRow = function () {\n var config = this.layerConfig;\n var lastRow = config.lastRow;\n var top = this.session.documentToScreenRow(lastRow, 0) * config.lineHeight;\n if (top - this.session.getScrollTop() > config.height - config.lineHeight)\n return lastRow - 1;\n return lastRow;\n };\n VirtualRenderer.prototype.getLastVisibleRow = function () {\n return this.layerConfig.lastRow;\n };\n VirtualRenderer.prototype.setPadding = function (padding) {\n this.$padding = padding;\n this.$textLayer.setPadding(padding);\n this.$cursorLayer.setPadding(padding);\n this.$markerFront.setPadding(padding);\n this.$markerBack.setPadding(padding);\n this.$loop.schedule(this.CHANGE_FULL);\n this.$updatePrintMargin();\n };\n VirtualRenderer.prototype.setScrollMargin = function (top, bottom, left, right) {\n var sm = this.scrollMargin;\n sm.top = top | 0;\n sm.bottom = bottom | 0;\n sm.right = right | 0;\n sm.left = left | 0;\n sm.v = sm.top + sm.bottom;\n sm.h = sm.left + sm.right;\n if (sm.top && this.scrollTop <= 0 && this.session)\n this.session.setScrollTop(-sm.top);\n this.updateFull();\n };\n VirtualRenderer.prototype.setMargin = function (top, bottom, left, right) {\n var sm = this.margin;\n sm.top = top | 0;\n sm.bottom = bottom | 0;\n sm.right = right | 0;\n sm.left = left | 0;\n sm.v = sm.top + sm.bottom;\n sm.h = sm.left + sm.right;\n this.$updateCachedSize(true, this.gutterWidth, this.$size.width, this.$size.height);\n this.updateFull();\n };\n VirtualRenderer.prototype.getHScrollBarAlwaysVisible = function () {\n return this.$hScrollBarAlwaysVisible;\n };\n VirtualRenderer.prototype.setHScrollBarAlwaysVisible = function (alwaysVisible) {\n this.setOption(\"hScrollBarAlwaysVisible\", alwaysVisible);\n };\n VirtualRenderer.prototype.getVScrollBarAlwaysVisible = function () {\n return this.$vScrollBarAlwaysVisible;\n };\n VirtualRenderer.prototype.setVScrollBarAlwaysVisible = function (alwaysVisible) {\n this.setOption(\"vScrollBarAlwaysVisible\", alwaysVisible);\n };\n VirtualRenderer.prototype.$updateScrollBarV = function () {\n var scrollHeight = this.layerConfig.maxHeight;\n var scrollerHeight = this.$size.scrollerHeight;\n if (!this.$maxLines && this.$scrollPastEnd) {\n scrollHeight -= (scrollerHeight - this.lineHeight) * this.$scrollPastEnd;\n if (this.scrollTop > scrollHeight - scrollerHeight) {\n scrollHeight = this.scrollTop + scrollerHeight;\n this.scrollBarV.scrollTop = null;\n }\n }\n this.scrollBarV.setScrollHeight(scrollHeight + this.scrollMargin.v);\n this.scrollBarV.setScrollTop(this.scrollTop + this.scrollMargin.top);\n };\n VirtualRenderer.prototype.$updateScrollBarH = function () {\n this.scrollBarH.setScrollWidth(this.layerConfig.width + 2 * this.$padding + this.scrollMargin.h);\n this.scrollBarH.setScrollLeft(this.scrollLeft + this.scrollMargin.left);\n };\n VirtualRenderer.prototype.freeze = function () {\n this.$frozen = true;\n };\n VirtualRenderer.prototype.unfreeze = function () {\n this.$frozen = false;\n };\n VirtualRenderer.prototype.$renderChanges = function (changes, force) {\n if (this.$changes) {\n changes |= this.$changes;\n this.$changes = 0;\n }\n if ((!this.session || !this.container.offsetWidth || this.$frozen) || (!changes && !force)) {\n this.$changes |= changes;\n return;\n }\n if (this.$size.$dirty) {\n this.$changes |= changes;\n return this.onResize(true);\n }\n if (!this.lineHeight) {\n this.$textLayer.checkForSizeChanges();\n }\n this._signal(\"beforeRender\", changes);\n if (this.session && this.session.$bidiHandler)\n this.session.$bidiHandler.updateCharacterWidths(this.$fontMetrics);\n var config = this.layerConfig;\n if (changes & this.CHANGE_FULL ||\n changes & this.CHANGE_SIZE ||\n changes & this.CHANGE_TEXT ||\n changes & this.CHANGE_LINES ||\n changes & this.CHANGE_SCROLL ||\n changes & this.CHANGE_H_SCROLL) {\n changes |= this.$computeLayerConfig() | this.$loop.clear();\n if (config.firstRow != this.layerConfig.firstRow && config.firstRowScreen == this.layerConfig.firstRowScreen) {\n var st = this.scrollTop + (config.firstRow - Math.max(this.layerConfig.firstRow, 0)) * this.lineHeight;\n if (st > 0) {\n this.scrollTop = st;\n changes = changes | this.CHANGE_SCROLL;\n changes |= this.$computeLayerConfig() | this.$loop.clear();\n }\n }\n config = this.layerConfig;\n this.$updateScrollBarV();\n if (changes & this.CHANGE_H_SCROLL)\n this.$updateScrollBarH();\n dom.translate(this.content, -this.scrollLeft, -config.offset);\n var width = config.width + 2 * this.$padding + \"px\";\n var height = config.minHeight + \"px\";\n dom.setStyle(this.content.style, \"width\", width);\n dom.setStyle(this.content.style, \"height\", height);\n }\n if (changes & this.CHANGE_H_SCROLL) {\n dom.translate(this.content, -this.scrollLeft, -config.offset);\n this.scroller.className = this.scrollLeft <= 0 ? \"ace_scroller \" : \"ace_scroller ace_scroll-left \";\n if (this.enableKeyboardAccessibility)\n this.scroller.className += this.keyboardFocusClassName;\n }\n if (changes & this.CHANGE_FULL) {\n this.$changedLines = null;\n this.$textLayer.update(config);\n if (this.$showGutter)\n this.$gutterLayer.update(config);\n if (this.$customScrollbar) {\n this.$scrollDecorator.$updateDecorators(config);\n }\n this.$markerBack.update(config);\n this.$markerFront.update(config);\n this.$cursorLayer.update(config);\n this.$moveTextAreaToCursor();\n this._signal(\"afterRender\", changes);\n return;\n }\n if (changes & this.CHANGE_SCROLL) {\n this.$changedLines = null;\n if (changes & this.CHANGE_TEXT || changes & this.CHANGE_LINES)\n this.$textLayer.update(config);\n else\n this.$textLayer.scrollLines(config);\n if (this.$showGutter) {\n if (changes & this.CHANGE_GUTTER || changes & this.CHANGE_LINES)\n this.$gutterLayer.update(config);\n else\n this.$gutterLayer.scrollLines(config);\n }\n if (this.$customScrollbar) {\n this.$scrollDecorator.$updateDecorators(config);\n }\n this.$markerBack.update(config);\n this.$markerFront.update(config);\n this.$cursorLayer.update(config);\n this.$moveTextAreaToCursor();\n this._signal(\"afterRender\", changes);\n return;\n }\n if (changes & this.CHANGE_TEXT) {\n this.$changedLines = null;\n this.$textLayer.update(config);\n if (this.$showGutter)\n this.$gutterLayer.update(config);\n if (this.$customScrollbar) {\n this.$scrollDecorator.$updateDecorators(config);\n }\n }\n else if (changes & this.CHANGE_LINES) {\n if (this.$updateLines() || (changes & this.CHANGE_GUTTER) && this.$showGutter)\n this.$gutterLayer.update(config);\n if (this.$customScrollbar) {\n this.$scrollDecorator.$updateDecorators(config);\n }\n }\n else if (changes & this.CHANGE_TEXT || changes & this.CHANGE_GUTTER) {\n if (this.$showGutter)\n this.$gutterLayer.update(config);\n if (this.$customScrollbar) {\n this.$scrollDecorator.$updateDecorators(config);\n }\n }\n else if (changes & this.CHANGE_CURSOR) {\n if (this.$highlightGutterLine)\n this.$gutterLayer.updateLineHighlight(config);\n if (this.$customScrollbar) {\n this.$scrollDecorator.$updateDecorators(config);\n }\n }\n if (changes & this.CHANGE_CURSOR) {\n this.$cursorLayer.update(config);\n this.$moveTextAreaToCursor();\n }\n if (changes & (this.CHANGE_MARKER | this.CHANGE_MARKER_FRONT)) {\n this.$markerFront.update(config);\n }\n if (changes & (this.CHANGE_MARKER | this.CHANGE_MARKER_BACK)) {\n this.$markerBack.update(config);\n }\n this._signal(\"afterRender\", changes);\n };\n VirtualRenderer.prototype.$autosize = function () {\n var height = this.session.getScreenLength() * this.lineHeight;\n var maxHeight = this.$maxLines * this.lineHeight;\n var desiredHeight = Math.min(maxHeight, Math.max((this.$minLines || 1) * this.lineHeight, height)) + this.scrollMargin.v + (this.$extraHeight || 0);\n if (this.$horizScroll)\n desiredHeight += this.scrollBarH.getHeight();\n if (this.$maxPixelHeight && desiredHeight > this.$maxPixelHeight)\n desiredHeight = this.$maxPixelHeight;\n var hideScrollbars = desiredHeight <= 2 * this.lineHeight;\n var vScroll = !hideScrollbars && height > maxHeight;\n if (desiredHeight != this.desiredHeight ||\n this.$size.height != this.desiredHeight || vScroll != this.$vScroll) {\n if (vScroll != this.$vScroll) {\n this.$vScroll = vScroll;\n this.scrollBarV.setVisible(vScroll);\n }\n var w = this.container.clientWidth;\n this.container.style.height = desiredHeight + \"px\";\n this.$updateCachedSize(true, this.$gutterWidth, w, desiredHeight);\n this.desiredHeight = desiredHeight;\n this._signal(\"autosize\");\n }\n };\n VirtualRenderer.prototype.$computeLayerConfig = function () {\n var session = this.session;\n var size = this.$size;\n var hideScrollbars = size.height <= 2 * this.lineHeight;\n var screenLines = this.session.getScreenLength();\n var maxHeight = screenLines * this.lineHeight;\n var longestLine = this.$getLongestLine();\n var horizScroll = !hideScrollbars && (this.$hScrollBarAlwaysVisible ||\n size.scrollerWidth - longestLine - 2 * this.$padding < 0);\n var hScrollChanged = this.$horizScroll !== horizScroll;\n if (hScrollChanged) {\n this.$horizScroll = horizScroll;\n this.scrollBarH.setVisible(horizScroll);\n }\n var vScrollBefore = this.$vScroll; // autosize can change vscroll value in which case we need to update longestLine\n if (this.$maxLines && this.lineHeight > 1)\n this.$autosize();\n var minHeight = size.scrollerHeight + this.lineHeight;\n var scrollPastEnd = !this.$maxLines && this.$scrollPastEnd\n ? (size.scrollerHeight - this.lineHeight) * this.$scrollPastEnd\n : 0;\n maxHeight += scrollPastEnd;\n var sm = this.scrollMargin;\n this.session.setScrollTop(Math.max(-sm.top, Math.min(this.scrollTop, maxHeight - size.scrollerHeight + sm.bottom)));\n this.session.setScrollLeft(Math.max(-sm.left, Math.min(this.scrollLeft, longestLine + 2 * this.$padding - size.scrollerWidth + sm.right)));\n var vScroll = !hideScrollbars && (this.$vScrollBarAlwaysVisible ||\n size.scrollerHeight - maxHeight + scrollPastEnd < 0 || this.scrollTop > sm.top);\n var vScrollChanged = vScrollBefore !== vScroll;\n if (vScrollChanged) {\n this.$vScroll = vScroll;\n this.scrollBarV.setVisible(vScroll);\n }\n var offset = this.scrollTop % this.lineHeight;\n var lineCount = Math.ceil(minHeight / this.lineHeight) - 1;\n var firstRow = Math.max(0, Math.round((this.scrollTop - offset) / this.lineHeight));\n var lastRow = firstRow + lineCount;\n var firstRowScreen, firstRowHeight;\n var lineHeight = this.lineHeight;\n firstRow = session.screenToDocumentRow(firstRow, 0);\n var foldLine = session.getFoldLine(firstRow);\n if (foldLine) {\n firstRow = foldLine.start.row;\n }\n firstRowScreen = session.documentToScreenRow(firstRow, 0);\n firstRowHeight = session.getRowLength(firstRow) * lineHeight;\n lastRow = Math.min(session.screenToDocumentRow(lastRow, 0), session.getLength() - 1);\n minHeight = size.scrollerHeight + session.getRowLength(lastRow) * lineHeight +\n firstRowHeight;\n offset = this.scrollTop - firstRowScreen * lineHeight;\n var changes = 0;\n if (this.layerConfig.width != longestLine || hScrollChanged)\n changes = this.CHANGE_H_SCROLL;\n if (hScrollChanged || vScrollChanged) {\n changes |= this.$updateCachedSize(true, this.gutterWidth, size.width, size.height);\n this._signal(\"scrollbarVisibilityChanged\");\n if (vScrollChanged)\n longestLine = this.$getLongestLine();\n }\n this.layerConfig = {\n width: longestLine,\n padding: this.$padding,\n firstRow: firstRow,\n firstRowScreen: firstRowScreen,\n lastRow: lastRow,\n lineHeight: lineHeight,\n characterWidth: this.characterWidth,\n minHeight: minHeight,\n maxHeight: maxHeight,\n offset: offset,\n gutterOffset: lineHeight ? Math.max(0, Math.ceil((offset + size.height - size.scrollerHeight) / lineHeight)) : 0,\n height: this.$size.scrollerHeight\n };\n if (this.session.$bidiHandler)\n this.session.$bidiHandler.setContentWidth(longestLine - this.$padding);\n return changes;\n };\n VirtualRenderer.prototype.$updateLines = function () {\n if (!this.$changedLines)\n return;\n var firstRow = this.$changedLines.firstRow;\n var lastRow = this.$changedLines.lastRow;\n this.$changedLines = null;\n var layerConfig = this.layerConfig;\n if (firstRow > layerConfig.lastRow + 1) {\n return;\n }\n if (lastRow < layerConfig.firstRow) {\n return;\n }\n if (lastRow === Infinity) {\n if (this.$showGutter)\n this.$gutterLayer.update(layerConfig);\n this.$textLayer.update(layerConfig);\n return;\n }\n this.$textLayer.updateLines(layerConfig, firstRow, lastRow);\n return true;\n };\n VirtualRenderer.prototype.$getLongestLine = function () {\n var charCount = this.session.getScreenWidth();\n if (this.showInvisibles && !this.session.$useWrapMode)\n charCount += 1;\n if (this.$textLayer && charCount > this.$textLayer.MAX_LINE_LENGTH)\n charCount = this.$textLayer.MAX_LINE_LENGTH + 30;\n return Math.max(this.$size.scrollerWidth - 2 * this.$padding, Math.round(charCount * this.characterWidth));\n };\n VirtualRenderer.prototype.updateFrontMarkers = function () {\n this.$markerFront.setMarkers(this.session.getMarkers(true));\n this.$loop.schedule(this.CHANGE_MARKER_FRONT);\n };\n VirtualRenderer.prototype.updateBackMarkers = function () {\n this.$markerBack.setMarkers(this.session.getMarkers());\n this.$loop.schedule(this.CHANGE_MARKER_BACK);\n };\n VirtualRenderer.prototype.addGutterDecoration = function (row, className) {\n this.$gutterLayer.addGutterDecoration(row, className);\n };\n VirtualRenderer.prototype.removeGutterDecoration = function (row, className) {\n this.$gutterLayer.removeGutterDecoration(row, className);\n };\n VirtualRenderer.prototype.updateBreakpoints = function (rows) {\n this.$loop.schedule(this.CHANGE_GUTTER);\n };\n VirtualRenderer.prototype.setAnnotations = function (annotations) {\n this.$gutterLayer.setAnnotations(annotations);\n this.$loop.schedule(this.CHANGE_GUTTER);\n };\n VirtualRenderer.prototype.updateCursor = function () {\n this.$loop.schedule(this.CHANGE_CURSOR);\n };\n VirtualRenderer.prototype.hideCursor = function () {\n this.$cursorLayer.hideCursor();\n };\n VirtualRenderer.prototype.showCursor = function () {\n this.$cursorLayer.showCursor();\n };\n VirtualRenderer.prototype.scrollSelectionIntoView = function (anchor, lead, offset) {\n this.scrollCursorIntoView(anchor, offset);\n this.scrollCursorIntoView(lead, offset);\n };\n VirtualRenderer.prototype.scrollCursorIntoView = function (cursor, offset, $viewMargin) {\n if (this.$size.scrollerHeight === 0)\n return;\n var pos = this.$cursorLayer.getPixelPosition(cursor);\n var newLeft = pos.left;\n var newTop = pos.top;\n var topMargin = $viewMargin && $viewMargin.top || 0;\n var bottomMargin = $viewMargin && $viewMargin.bottom || 0;\n if (this.$scrollAnimation) {\n this.$stopAnimation = true;\n }\n var currentTop = this.$scrollAnimation ? this.session.getScrollTop() : this.scrollTop;\n if (currentTop + topMargin > newTop) {\n if (offset && currentTop + topMargin > newTop + this.lineHeight)\n newTop -= offset * this.$size.scrollerHeight;\n if (newTop === 0)\n newTop = -this.scrollMargin.top;\n this.session.setScrollTop(newTop);\n }\n else if (currentTop + this.$size.scrollerHeight - bottomMargin < newTop + this.lineHeight) {\n if (offset && currentTop + this.$size.scrollerHeight - bottomMargin < newTop - this.lineHeight)\n newTop += offset * this.$size.scrollerHeight;\n this.session.setScrollTop(newTop + this.lineHeight + bottomMargin - this.$size.scrollerHeight);\n }\n var currentLeft = this.scrollLeft;\n var twoCharsWidth = 2 * this.layerConfig.characterWidth;\n if (newLeft - twoCharsWidth < currentLeft) {\n newLeft -= twoCharsWidth;\n if (newLeft < this.$padding + twoCharsWidth) {\n newLeft = -this.scrollMargin.left;\n }\n this.session.setScrollLeft(newLeft);\n }\n else {\n newLeft += twoCharsWidth;\n if (currentLeft + this.$size.scrollerWidth < newLeft + this.characterWidth) {\n this.session.setScrollLeft(Math.round(newLeft + this.characterWidth - this.$size.scrollerWidth));\n }\n else if (currentLeft <= this.$padding && newLeft - currentLeft < this.characterWidth) {\n this.session.setScrollLeft(0);\n }\n }\n };\n VirtualRenderer.prototype.getScrollTop = function () {\n return this.session.getScrollTop();\n };\n VirtualRenderer.prototype.getScrollLeft = function () {\n return this.session.getScrollLeft();\n };\n VirtualRenderer.prototype.getScrollTopRow = function () {\n return this.scrollTop / this.lineHeight;\n };\n VirtualRenderer.prototype.getScrollBottomRow = function () {\n return Math.max(0, Math.floor((this.scrollTop + this.$size.scrollerHeight) / this.lineHeight) - 1);\n };\n VirtualRenderer.prototype.scrollToRow = function (row) {\n this.session.setScrollTop(row * this.lineHeight);\n };\n VirtualRenderer.prototype.alignCursor = function (cursor, alignment) {\n if (typeof cursor == \"number\")\n cursor = { row: cursor, column: 0 };\n var pos = this.$cursorLayer.getPixelPosition(cursor);\n var h = this.$size.scrollerHeight - this.lineHeight;\n var offset = pos.top - h * (alignment || 0);\n this.session.setScrollTop(offset);\n return offset;\n };\n VirtualRenderer.prototype.$calcSteps = function (fromValue, toValue) {\n var i = 0;\n var l = this.STEPS;\n var steps = [];\n var func = function (t, x_min, dx) {\n return dx * (Math.pow(t - 1, 3) + 1) + x_min;\n };\n for (i = 0; i < l; ++i)\n steps.push(func(i / this.STEPS, fromValue, toValue - fromValue));\n return steps;\n };\n VirtualRenderer.prototype.scrollToLine = function (line, center, animate, callback) {\n var pos = this.$cursorLayer.getPixelPosition({ row: line, column: 0 });\n var offset = pos.top;\n if (center)\n offset -= this.$size.scrollerHeight / 2;\n var initialScroll = this.scrollTop;\n this.session.setScrollTop(offset);\n if (animate !== false)\n this.animateScrolling(initialScroll, callback);\n };\n VirtualRenderer.prototype.animateScrolling = function (fromValue, callback) {\n var toValue = this.scrollTop;\n if (!this.$animatedScroll)\n return;\n var _self = this;\n if (fromValue == toValue)\n return;\n if (this.$scrollAnimation) {\n var oldSteps = this.$scrollAnimation.steps;\n if (oldSteps.length) {\n fromValue = oldSteps[0];\n if (fromValue == toValue)\n return;\n }\n }\n var steps = _self.$calcSteps(fromValue, toValue);\n this.$scrollAnimation = { from: fromValue, to: toValue, steps: steps };\n clearInterval(this.$timer);\n _self.session.setScrollTop(steps.shift());\n _self.session.$scrollTop = toValue;\n function endAnimation() {\n _self.$timer = clearInterval(_self.$timer);\n _self.$scrollAnimation = null;\n _self.$stopAnimation = false;\n callback && callback();\n }\n this.$timer = setInterval(function () {\n if (_self.$stopAnimation) {\n endAnimation();\n return;\n }\n if (!_self.session)\n return clearInterval(_self.$timer);\n if (steps.length) {\n _self.session.setScrollTop(steps.shift());\n _self.session.$scrollTop = toValue;\n }\n else if (toValue != null) {\n _self.session.$scrollTop = -1;\n _self.session.setScrollTop(toValue);\n toValue = null;\n }\n else {\n endAnimation();\n }\n }, 10);\n };\n VirtualRenderer.prototype.scrollToY = function (scrollTop) {\n if (this.scrollTop !== scrollTop) {\n this.$loop.schedule(this.CHANGE_SCROLL);\n this.scrollTop = scrollTop;\n }\n };\n VirtualRenderer.prototype.scrollToX = function (scrollLeft) {\n if (this.scrollLeft !== scrollLeft)\n this.scrollLeft = scrollLeft;\n this.$loop.schedule(this.CHANGE_H_SCROLL);\n };\n VirtualRenderer.prototype.scrollTo = function (x, y) {\n this.session.setScrollTop(y);\n this.session.setScrollLeft(x);\n };\n VirtualRenderer.prototype.scrollBy = function (deltaX, deltaY) {\n deltaY && this.session.setScrollTop(this.session.getScrollTop() + deltaY);\n deltaX && this.session.setScrollLeft(this.session.getScrollLeft() + deltaX);\n };\n VirtualRenderer.prototype.isScrollableBy = function (deltaX, deltaY) {\n if (deltaY < 0 && this.session.getScrollTop() >= 1 - this.scrollMargin.top)\n return true;\n if (deltaY > 0 && this.session.getScrollTop() + this.$size.scrollerHeight\n - this.layerConfig.maxHeight < -1 + this.scrollMargin.bottom)\n return true;\n if (deltaX < 0 && this.session.getScrollLeft() >= 1 - this.scrollMargin.left)\n return true;\n if (deltaX > 0 && this.session.getScrollLeft() + this.$size.scrollerWidth\n - this.layerConfig.width < -1 + this.scrollMargin.right)\n return true;\n };\n VirtualRenderer.prototype.pixelToScreenCoordinates = function (x, y) {\n var canvasPos;\n if (this.$hasCssTransforms) {\n canvasPos = { top: 0, left: 0 };\n var p = this.$fontMetrics.transformCoordinates([x, y]);\n x = p[1] - this.gutterWidth - this.margin.left;\n y = p[0];\n }\n else {\n canvasPos = this.scroller.getBoundingClientRect();\n }\n var offsetX = x + this.scrollLeft - canvasPos.left - this.$padding;\n var offset = offsetX / this.characterWidth;\n var row = Math.floor((y + this.scrollTop - canvasPos.top) / this.lineHeight);\n var col = this.$blockCursor ? Math.floor(offset) : Math.round(offset);\n return { row: row, column: col, side: offset - col > 0 ? 1 : -1, offsetX: offsetX };\n };\n VirtualRenderer.prototype.screenToTextCoordinates = function (x, y) {\n var canvasPos;\n if (this.$hasCssTransforms) {\n canvasPos = { top: 0, left: 0 };\n var p = this.$fontMetrics.transformCoordinates([x, y]);\n x = p[1] - this.gutterWidth - this.margin.left;\n y = p[0];\n }\n else {\n canvasPos = this.scroller.getBoundingClientRect();\n }\n var offsetX = x + this.scrollLeft - canvasPos.left - this.$padding;\n var offset = offsetX / this.characterWidth;\n var col = this.$blockCursor ? Math.floor(offset) : Math.round(offset);\n var row = Math.floor((y + this.scrollTop - canvasPos.top) / this.lineHeight);\n return this.session.screenToDocumentPosition(row, Math.max(col, 0), offsetX);\n };\n VirtualRenderer.prototype.textToScreenCoordinates = function (row, column) {\n var canvasPos = this.scroller.getBoundingClientRect();\n var pos = this.session.documentToScreenPosition(row, column);\n var x = this.$padding + (this.session.$bidiHandler.isBidiRow(pos.row, row)\n ? this.session.$bidiHandler.getPosLeft(pos.column)\n : Math.round(pos.column * this.characterWidth));\n var y = pos.row * this.lineHeight;\n return {\n pageX: canvasPos.left + x - this.scrollLeft,\n pageY: canvasPos.top + y - this.scrollTop\n };\n };\n VirtualRenderer.prototype.visualizeFocus = function () {\n dom.addCssClass(this.container, \"ace_focus\");\n };\n VirtualRenderer.prototype.visualizeBlur = function () {\n dom.removeCssClass(this.container, \"ace_focus\");\n };\n VirtualRenderer.prototype.showComposition = function (composition) {\n this.$composition = composition;\n if (!composition.cssText) {\n composition.cssText = this.textarea.style.cssText;\n }\n if (composition.useTextareaForIME == undefined)\n composition.useTextareaForIME = this.$useTextareaForIME;\n if (this.$useTextareaForIME) {\n dom.addCssClass(this.textarea, \"ace_composition\");\n this.textarea.style.cssText = \"\";\n this.$moveTextAreaToCursor();\n this.$cursorLayer.element.style.display = \"none\";\n }\n else {\n composition.markerId = this.session.addMarker(composition.markerRange, \"ace_composition_marker\", \"text\");\n }\n };\n VirtualRenderer.prototype.setCompositionText = function (text) {\n var cursor = this.session.selection.cursor;\n this.addToken(text, \"composition_placeholder\", cursor.row, cursor.column);\n this.$moveTextAreaToCursor();\n };\n VirtualRenderer.prototype.hideComposition = function () {\n if (!this.$composition)\n return;\n if (this.$composition.markerId)\n this.session.removeMarker(this.$composition.markerId);\n dom.removeCssClass(this.textarea, \"ace_composition\");\n this.textarea.style.cssText = this.$composition.cssText;\n var cursor = this.session.selection.cursor;\n this.removeExtraToken(cursor.row, cursor.column);\n this.$composition = null;\n this.$cursorLayer.element.style.display = \"\";\n };\n VirtualRenderer.prototype.setGhostText = function (text, position) {\n var cursor = this.session.selection.cursor;\n var insertPosition = position || { row: cursor.row, column: cursor.column };\n this.removeGhostText();\n var textLines = text.split(\"\\n\");\n this.addToken(textLines[0], \"ghost_text\", insertPosition.row, insertPosition.column);\n this.$ghostText = {\n text: text,\n position: {\n row: insertPosition.row,\n column: insertPosition.column\n }\n };\n if (textLines.length > 1) {\n this.$ghostTextWidget = {\n text: textLines.slice(1).join(\"\\n\"),\n row: insertPosition.row,\n column: insertPosition.column,\n className: \"ace_ghost_text\"\n };\n this.session.widgetManager.addLineWidget(this.$ghostTextWidget);\n var pixelPosition = this.$cursorLayer.getPixelPosition(insertPosition, true);\n var el = this.container;\n var height = el.getBoundingClientRect().height;\n var ghostTextHeight = textLines.length * this.lineHeight;\n var fitsY = ghostTextHeight < height - pixelPosition.top;\n if (fitsY)\n return;\n if (ghostTextHeight < height) {\n this.scrollBy(0, (textLines.length - 1) * this.lineHeight);\n }\n else {\n this.scrollBy(0, pixelPosition.top);\n }\n }\n };\n VirtualRenderer.prototype.removeGhostText = function () {\n if (!this.$ghostText)\n return;\n var position = this.$ghostText.position;\n this.removeExtraToken(position.row, position.column);\n if (this.$ghostTextWidget) {\n this.session.widgetManager.removeLineWidget(this.$ghostTextWidget);\n this.$ghostTextWidget = null;\n }\n this.$ghostText = null;\n };\n VirtualRenderer.prototype.addToken = function (text, type, row, column) {\n var session = this.session;\n session.bgTokenizer.lines[row] = null;\n var newToken = { type: type, value: text };\n var tokens = session.getTokens(row);\n if (column == null || !tokens.length) {\n tokens.push(newToken);\n }\n else {\n var l = 0;\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n l += token.value.length;\n if (column <= l) {\n var diff = token.value.length - (l - column);\n var before = token.value.slice(0, diff);\n var after = token.value.slice(diff);\n tokens.splice(i, 1, { type: token.type, value: before }, newToken, { type: token.type, value: after });\n break;\n }\n }\n }\n this.updateLines(row, row);\n };\n VirtualRenderer.prototype.removeExtraToken = function (row, column) {\n this.session.bgTokenizer.lines[row] = null;\n this.updateLines(row, row);\n };\n VirtualRenderer.prototype.setTheme = function (theme, cb) {\n var _self = this;\n this.$themeId = theme;\n _self._dispatchEvent('themeChange', { theme: theme });\n if (!theme || typeof theme == \"string\") {\n var moduleName = theme || this.$options.theme.initialValue;\n config.loadModule([\"theme\", moduleName], afterLoad);\n }\n else {\n afterLoad(theme);\n }\n function afterLoad(module) {\n if (_self.$themeId != theme)\n return cb && cb();\n if (!module || !module.cssClass)\n throw new Error(\"couldn't load module \" + theme + \" or it didn't call define\");\n if (module.$id)\n _self.$themeId = module.$id;\n dom.importCssString(module.cssText, module.cssClass, _self.container);\n if (_self.theme)\n dom.removeCssClass(_self.container, _self.theme.cssClass);\n var padding = \"padding\" in module ? module.padding\n : \"padding\" in (_self.theme || {}) ? 4 : _self.$padding;\n if (_self.$padding && padding != _self.$padding)\n _self.setPadding(padding);\n _self.$theme = module.cssClass;\n _self.theme = module;\n dom.addCssClass(_self.container, module.cssClass);\n dom.setCssClass(_self.container, \"ace_dark\", module.isDark);\n if (_self.$size) {\n _self.$size.width = 0;\n _self.$updateSizeAsync();\n }\n _self._dispatchEvent('themeLoaded', { theme: module });\n cb && cb();\n }\n };\n VirtualRenderer.prototype.getTheme = function () {\n return this.$themeId;\n };\n VirtualRenderer.prototype.setStyle = function (style, include) {\n dom.setCssClass(this.container, style, include !== false);\n };\n VirtualRenderer.prototype.unsetStyle = function (style) {\n dom.removeCssClass(this.container, style);\n };\n VirtualRenderer.prototype.setCursorStyle = function (style) {\n dom.setStyle(this.scroller.style, \"cursor\", style);\n };\n VirtualRenderer.prototype.setMouseCursor = function (cursorStyle) {\n dom.setStyle(this.scroller.style, \"cursor\", cursorStyle);\n };\n VirtualRenderer.prototype.attachToShadowRoot = function () {\n dom.importCssString(editorCss, \"ace_editor.css\", this.container);\n };\n VirtualRenderer.prototype.destroy = function () {\n this.freeze();\n this.$fontMetrics.destroy();\n this.$cursorLayer.destroy();\n this.removeAllListeners();\n this.container.textContent = \"\";\n this.setOption(\"useResizeObserver\", false);\n };\n VirtualRenderer.prototype.$updateCustomScrollbar = function (val) {\n var _self = this;\n this.$horizScroll = this.$vScroll = null;\n this.scrollBarV.element.remove();\n this.scrollBarH.element.remove();\n if (this.$scrollDecorator) {\n delete this.$scrollDecorator;\n }\n if (val === true) {\n this.scrollBarV = new VScrollBarCustom(this.container, this);\n this.scrollBarH = new HScrollBarCustom(this.container, this);\n this.scrollBarV.setHeight(this.$size.scrollerHeight);\n this.scrollBarH.setWidth(this.$size.scrollerWidth);\n this.scrollBarV.addEventListener(\"scroll\", function (e) {\n if (!_self.$scrollAnimation)\n _self.session.setScrollTop(e.data - _self.scrollMargin.top);\n });\n this.scrollBarH.addEventListener(\"scroll\", function (e) {\n if (!_self.$scrollAnimation)\n _self.session.setScrollLeft(e.data - _self.scrollMargin.left);\n });\n this.$scrollDecorator = new Decorator(this.scrollBarV, this);\n this.$scrollDecorator.$updateDecorators();\n }\n else {\n this.scrollBarV = new VScrollBar(this.container, this);\n this.scrollBarH = new HScrollBar(this.container, this);\n this.scrollBarV.addEventListener(\"scroll\", function (e) {\n if (!_self.$scrollAnimation)\n _self.session.setScrollTop(e.data - _self.scrollMargin.top);\n });\n this.scrollBarH.addEventListener(\"scroll\", function (e) {\n if (!_self.$scrollAnimation)\n _self.session.setScrollLeft(e.data - _self.scrollMargin.left);\n });\n }\n };\n VirtualRenderer.prototype.$addResizeObserver = function () {\n if (!window.ResizeObserver || this.$resizeObserver)\n return;\n var self = this;\n this.$resizeTimer = lang.delayedCall(function () {\n if (!self.destroyed)\n self.onResize();\n }, 50);\n this.$resizeObserver = new window.ResizeObserver(function (e) {\n var w = e[0].contentRect.width;\n var h = e[0].contentRect.height;\n if (Math.abs(self.$size.width - w) > 1\n || Math.abs(self.$size.height - h) > 1) {\n self.$resizeTimer.delay();\n }\n else {\n self.$resizeTimer.cancel();\n }\n });\n this.$resizeObserver.observe(this.container);\n };\n return VirtualRenderer;\n}());\nVirtualRenderer.prototype.CHANGE_CURSOR = 1;\nVirtualRenderer.prototype.CHANGE_MARKER = 2;\nVirtualRenderer.prototype.CHANGE_GUTTER = 4;\nVirtualRenderer.prototype.CHANGE_SCROLL = 8;\nVirtualRenderer.prototype.CHANGE_LINES = 16;\nVirtualRenderer.prototype.CHANGE_TEXT = 32;\nVirtualRenderer.prototype.CHANGE_SIZE = 64;\nVirtualRenderer.prototype.CHANGE_MARKER_BACK = 128;\nVirtualRenderer.prototype.CHANGE_MARKER_FRONT = 256;\nVirtualRenderer.prototype.CHANGE_FULL = 512;\nVirtualRenderer.prototype.CHANGE_H_SCROLL = 1024;\nVirtualRenderer.prototype.$changes = 0;\nVirtualRenderer.prototype.$padding = null;\nVirtualRenderer.prototype.$frozen = false;\nVirtualRenderer.prototype.STEPS = 8;\noop.implement(VirtualRenderer.prototype, EventEmitter);\nconfig.defineOptions(VirtualRenderer.prototype, \"renderer\", {\n useResizeObserver: {\n set: function (value) {\n if (!value && this.$resizeObserver) {\n this.$resizeObserver.disconnect();\n this.$resizeTimer.cancel();\n this.$resizeTimer = this.$resizeObserver = null;\n }\n else if (value && !this.$resizeObserver) {\n this.$addResizeObserver();\n }\n }\n },\n animatedScroll: { initialValue: false },\n showInvisibles: {\n set: function (value) {\n if (this.$textLayer.setShowInvisibles(value))\n this.$loop.schedule(this.CHANGE_TEXT);\n },\n initialValue: false\n },\n showPrintMargin: {\n set: function () { this.$updatePrintMargin(); },\n initialValue: true\n },\n printMarginColumn: {\n set: function () { this.$updatePrintMargin(); },\n initialValue: 80\n },\n printMargin: {\n set: function (val) {\n if (typeof val == \"number\")\n this.$printMarginColumn = val;\n this.$showPrintMargin = !!val;\n this.$updatePrintMargin();\n },\n get: function () {\n return this.$showPrintMargin && this.$printMarginColumn;\n }\n },\n showGutter: {\n set: function (show) {\n this.$gutter.style.display = show ? \"block\" : \"none\";\n this.$loop.schedule(this.CHANGE_FULL);\n this.onGutterResize();\n },\n initialValue: true\n },\n useSvgGutterIcons: {\n set: function (value) {\n this.$gutterLayer.$useSvgGutterIcons = value;\n },\n initialValue: false\n },\n showFoldedAnnotations: {\n set: function (value) {\n this.$gutterLayer.$showFoldedAnnotations = value;\n },\n initialValue: false\n },\n fadeFoldWidgets: {\n set: function (show) {\n dom.setCssClass(this.$gutter, \"ace_fade-fold-widgets\", show);\n },\n initialValue: false\n },\n showFoldWidgets: {\n set: function (show) {\n this.$gutterLayer.setShowFoldWidgets(show);\n this.$loop.schedule(this.CHANGE_GUTTER);\n },\n initialValue: true\n },\n displayIndentGuides: {\n set: function (show) {\n if (this.$textLayer.setDisplayIndentGuides(show))\n this.$loop.schedule(this.CHANGE_TEXT);\n },\n initialValue: true\n },\n highlightIndentGuides: {\n set: function (show) {\n if (this.$textLayer.setHighlightIndentGuides(show) == true) {\n this.$textLayer.$highlightIndentGuide();\n }\n else {\n this.$textLayer.$clearActiveIndentGuide(this.$textLayer.$lines.cells);\n }\n },\n initialValue: true\n },\n highlightGutterLine: {\n set: function (shouldHighlight) {\n this.$gutterLayer.setHighlightGutterLine(shouldHighlight);\n this.$loop.schedule(this.CHANGE_GUTTER);\n },\n initialValue: true\n },\n hScrollBarAlwaysVisible: {\n set: function (val) {\n if (!this.$hScrollBarAlwaysVisible || !this.$horizScroll)\n this.$loop.schedule(this.CHANGE_SCROLL);\n },\n initialValue: false\n },\n vScrollBarAlwaysVisible: {\n set: function (val) {\n if (!this.$vScrollBarAlwaysVisible || !this.$vScroll)\n this.$loop.schedule(this.CHANGE_SCROLL);\n },\n initialValue: false\n },\n fontSize: {\n set: function (size) {\n if (typeof size == \"number\")\n size = size + \"px\";\n this.container.style.fontSize = size;\n this.updateFontSize();\n },\n initialValue: 12\n },\n fontFamily: {\n set: function (name) {\n this.container.style.fontFamily = name;\n this.updateFontSize();\n }\n },\n maxLines: {\n set: function (val) {\n this.updateFull();\n }\n },\n minLines: {\n set: function (val) {\n if (!(this.$minLines < 0x1ffffffffffff))\n this.$minLines = 0;\n this.updateFull();\n }\n },\n maxPixelHeight: {\n set: function (val) {\n this.updateFull();\n },\n initialValue: 0\n },\n scrollPastEnd: {\n set: function (val) {\n val = +val || 0;\n if (this.$scrollPastEnd == val)\n return;\n this.$scrollPastEnd = val;\n this.$loop.schedule(this.CHANGE_SCROLL);\n },\n initialValue: 0,\n handlesSet: true\n },\n fixedWidthGutter: {\n set: function (val) {\n this.$gutterLayer.$fixedWidth = !!val;\n this.$loop.schedule(this.CHANGE_GUTTER);\n }\n },\n customScrollbar: {\n set: function (val) {\n this.$updateCustomScrollbar(val);\n },\n initialValue: false\n },\n theme: {\n set: function (val) { this.setTheme(val); },\n get: function () { return this.$themeId || this.theme; },\n initialValue: \"./theme/textmate\",\n handlesSet: true\n },\n hasCssTransforms: {},\n useTextareaForIME: {\n initialValue: !useragent.isMobile && !useragent.isIE\n }\n});\nexports.VirtualRenderer = VirtualRenderer;\n\n});\n\nace.define(\"ace/worker/worker_client\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/net\",\"ace/lib/event_emitter\",\"ace/config\"], function(require, exports, module) {\n\"use strict\";\n\nvar oop = require(\"../lib/oop\");\nvar net = require(\"../lib/net\");\nvar EventEmitter = require(\"../lib/event_emitter\").EventEmitter;\nvar config = require(\"../config\");\n\nfunction $workerBlob(workerUrl) {\n var script = \"importScripts('\" + net.qualifyURL(workerUrl) + \"');\";\n try {\n return new Blob([script], {\"type\": \"application/javascript\"});\n } catch (e) { // Backwards-compatibility\n var BlobBuilder = window.BlobBuilder || window.WebKitBlobBuilder || window.MozBlobBuilder;\n var blobBuilder = new BlobBuilder();\n blobBuilder.append(script);\n return blobBuilder.getBlob(\"application/javascript\");\n }\n}\n\nfunction createWorker(workerUrl) {\n if (typeof Worker == \"undefined\")\n return { postMessage: function() {}, terminate: function() {} };\n if (config.get(\"loadWorkerFromBlob\")) {\n var blob = $workerBlob(workerUrl);\n var URL = window.URL || window.webkitURL;\n var blobURL = URL.createObjectURL(blob);\n return new Worker(blobURL);\n }\n return new Worker(workerUrl);\n}\n\nvar WorkerClient = function(worker) {\n if (!worker.postMessage)\n worker = this.$createWorkerFromOldConfig.apply(this, arguments);\n\n this.$worker = worker;\n this.$sendDeltaQueue = this.$sendDeltaQueue.bind(this);\n this.changeListener = this.changeListener.bind(this);\n this.onMessage = this.onMessage.bind(this);\n\n this.callbackId = 1;\n this.callbacks = {};\n\n this.$worker.onmessage = this.onMessage;\n};\n\n(function(){\n\n oop.implement(this, EventEmitter);\n\n this.$createWorkerFromOldConfig = function(topLevelNamespaces, mod, classname, workerUrl, importScripts) {\n if (require.nameToUrl && !require.toUrl)\n require.toUrl = require.nameToUrl;\n\n if (config.get(\"packaged\") || !require.toUrl) {\n workerUrl = workerUrl || config.moduleUrl(mod, \"worker\");\n } else {\n var normalizePath = this.$normalizePath;\n workerUrl = workerUrl || normalizePath(require.toUrl(\"ace/worker/worker.js\", null, \"_\"));\n\n var tlns = {};\n topLevelNamespaces.forEach(function(ns) {\n tlns[ns] = normalizePath(require.toUrl(ns, null, \"_\").replace(/(\\.js)?(\\?.*)?$/, \"\"));\n });\n }\n\n this.$worker = createWorker(workerUrl);\n if (importScripts) {\n this.send(\"importScripts\", importScripts);\n }\n this.$worker.postMessage({\n init : true,\n tlns : tlns,\n module : mod,\n classname : classname\n });\n return this.$worker;\n };\n\n this.onMessage = function(e) {\n var msg = e.data;\n switch (msg.type) {\n case \"event\":\n this._signal(msg.name, {data: msg.data});\n break;\n case \"call\":\n var callback = this.callbacks[msg.id];\n if (callback) {\n callback(msg.data);\n delete this.callbacks[msg.id];\n }\n break;\n case \"error\":\n this.reportError(msg.data);\n break;\n case \"log\":\n window.console && console.log && console.log.apply(console, msg.data);\n break;\n }\n };\n \n this.reportError = function(err) {\n window.console && console.error && console.error(err);\n };\n\n this.$normalizePath = function(path) {\n return net.qualifyURL(path);\n };\n\n this.terminate = function() {\n this._signal(\"terminate\", {});\n this.deltaQueue = null;\n this.$worker.terminate();\n this.$worker.onerror = function(e) {\n e.preventDefault();\n };\n this.$worker = null;\n if (this.$doc)\n this.$doc.off(\"change\", this.changeListener);\n this.$doc = null;\n };\n\n this.send = function(cmd, args) {\n this.$worker.postMessage({command: cmd, args: args});\n };\n\n this.call = function(cmd, args, callback) {\n if (callback) {\n var id = this.callbackId++;\n this.callbacks[id] = callback;\n args.push(id);\n }\n this.send(cmd, args);\n };\n\n this.emit = function(event, data) {\n try {\n if (data.data && data.data.err)\n data.data.err = {message: data.data.err.message, stack: data.data.err.stack, code: data.data.err.code};\n this.$worker && this.$worker.postMessage({event: event, data: {data: data.data}});\n }\n catch(ex) {\n console.error(ex.stack);\n }\n };\n\n this.attachToDocument = function(doc) {\n if (this.$doc)\n this.terminate();\n\n this.$doc = doc;\n this.call(\"setValue\", [doc.getValue()]);\n doc.on(\"change\", this.changeListener, true);\n };\n\n this.changeListener = function(delta) {\n if (!this.deltaQueue) {\n this.deltaQueue = [];\n setTimeout(this.$sendDeltaQueue, 0);\n }\n if (delta.action == \"insert\")\n this.deltaQueue.push(delta.start, delta.lines);\n else\n this.deltaQueue.push(delta.start, delta.end);\n };\n\n this.$sendDeltaQueue = function() {\n var q = this.deltaQueue;\n if (!q) return;\n this.deltaQueue = null;\n if (q.length > 50 && q.length > this.$doc.getLength() >> 1) {\n this.call(\"setValue\", [this.$doc.getValue()]);\n } else\n this.emit(\"change\", {data: q});\n };\n\n}).call(WorkerClient.prototype);\n\n\nvar UIWorkerClient = function(topLevelNamespaces, mod, classname) {\n var main = null;\n var emitSync = false;\n var sender = Object.create(EventEmitter);\n\n var messageBuffer = [];\n var workerClient = new WorkerClient({\n messageBuffer: messageBuffer,\n terminate: function() {},\n postMessage: function(e) {\n messageBuffer.push(e);\n if (!main) return;\n if (emitSync)\n setTimeout(processNext);\n else\n processNext();\n }\n });\n\n workerClient.setEmitSync = function(val) { emitSync = val; };\n\n var processNext = function() {\n var msg = messageBuffer.shift();\n if (msg.command)\n main[msg.command].apply(main, msg.args);\n else if (msg.event)\n sender._signal(msg.event, msg.data);\n };\n\n sender.postMessage = function(msg) {\n workerClient.onMessage({data: msg});\n };\n sender.callback = function(data, callbackId) {\n this.postMessage({type: \"call\", id: callbackId, data: data});\n };\n sender.emit = function(name, data) {\n this.postMessage({type: \"event\", name: name, data: data});\n };\n\n config.loadModule([\"worker\", mod], function(Main) {\n main = new Main[classname](sender);\n while (messageBuffer.length)\n processNext();\n });\n\n return workerClient;\n};\n\nexports.UIWorkerClient = UIWorkerClient;\nexports.WorkerClient = WorkerClient;\nexports.createWorker = createWorker;\n\n\n});\n\nace.define(\"ace/placeholder\",[\"require\",\"exports\",\"module\",\"ace/range\",\"ace/lib/event_emitter\",\"ace/lib/oop\"], function(require, exports, module){\"use strict\";\nvar Range = require(\"./range\").Range;\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar oop = require(\"./lib/oop\");\nvar PlaceHolder = /** @class */ (function () {\n function PlaceHolder(session, length, pos, others, mainClass, othersClass) {\n var _self = this;\n this.length = length;\n this.session = session;\n this.doc = session.getDocument();\n this.mainClass = mainClass;\n this.othersClass = othersClass;\n this.$onUpdate = this.onUpdate.bind(this);\n this.doc.on(\"change\", this.$onUpdate, true);\n this.$others = others;\n this.$onCursorChange = function () {\n setTimeout(function () {\n _self.onCursorChange();\n });\n };\n this.$pos = pos;\n var undoStack = session.getUndoManager().$undoStack || session.getUndoManager().$undostack || { length: -1 };\n this.$undoStackDepth = undoStack.length;\n this.setup();\n session.selection.on(\"changeCursor\", this.$onCursorChange);\n }\n PlaceHolder.prototype.setup = function () {\n var _self = this;\n var doc = this.doc;\n var session = this.session;\n this.selectionBefore = session.selection.toJSON();\n if (session.selection.inMultiSelectMode)\n session.selection.toSingleRange();\n this.pos = doc.createAnchor(this.$pos.row, this.$pos.column);\n var pos = this.pos;\n pos.$insertRight = true;\n pos.detach();\n pos.markerId = session.addMarker(new Range(pos.row, pos.column, pos.row, pos.column + this.length), this.mainClass, null, false);\n this.others = [];\n this.$others.forEach(function (other) {\n var anchor = doc.createAnchor(other.row, other.column);\n anchor.$insertRight = true;\n anchor.detach();\n _self.others.push(anchor);\n });\n session.setUndoSelect(false);\n };\n PlaceHolder.prototype.showOtherMarkers = function () {\n if (this.othersActive)\n return;\n var session = this.session;\n var _self = this;\n this.othersActive = true;\n this.others.forEach(function (anchor) {\n anchor.markerId = session.addMarker(new Range(anchor.row, anchor.column, anchor.row, anchor.column + _self.length), _self.othersClass, null, false);\n });\n };\n PlaceHolder.prototype.hideOtherMarkers = function () {\n if (!this.othersActive)\n return;\n this.othersActive = false;\n for (var i = 0; i < this.others.length; i++) {\n this.session.removeMarker(this.others[i].markerId);\n }\n };\n PlaceHolder.prototype.onUpdate = function (delta) {\n if (this.$updating)\n return this.updateAnchors(delta);\n var range = delta;\n if (range.start.row !== range.end.row)\n return;\n if (range.start.row !== this.pos.row)\n return;\n this.$updating = true;\n var lengthDiff = delta.action === \"insert\" ? range.end.column - range.start.column : range.start.column - range.end.column;\n var inMainRange = range.start.column >= this.pos.column && range.start.column <= this.pos.column + this.length + 1;\n var distanceFromStart = range.start.column - this.pos.column;\n this.updateAnchors(delta);\n if (inMainRange)\n this.length += lengthDiff;\n if (inMainRange && !this.session.$fromUndo) {\n if (delta.action === 'insert') {\n for (var i = this.others.length - 1; i >= 0; i--) {\n var otherPos = this.others[i];\n var newPos = { row: otherPos.row, column: otherPos.column + distanceFromStart };\n this.doc.insertMergedLines(newPos, delta.lines);\n }\n }\n else if (delta.action === 'remove') {\n for (var i = this.others.length - 1; i >= 0; i--) {\n var otherPos = this.others[i];\n var newPos = { row: otherPos.row, column: otherPos.column + distanceFromStart };\n this.doc.remove(new Range(newPos.row, newPos.column, newPos.row, newPos.column - lengthDiff));\n }\n }\n }\n this.$updating = false;\n this.updateMarkers();\n };\n PlaceHolder.prototype.updateAnchors = function (delta) {\n this.pos.onChange(delta);\n for (var i = this.others.length; i--;)\n this.others[i].onChange(delta);\n this.updateMarkers();\n };\n PlaceHolder.prototype.updateMarkers = function () {\n if (this.$updating)\n return;\n var _self = this;\n var session = this.session;\n var updateMarker = function (pos, className) {\n session.removeMarker(pos.markerId);\n pos.markerId = session.addMarker(new Range(pos.row, pos.column, pos.row, pos.column + _self.length), className, null, false);\n };\n updateMarker(this.pos, this.mainClass);\n for (var i = this.others.length; i--;)\n updateMarker(this.others[i], this.othersClass);\n };\n PlaceHolder.prototype.onCursorChange = function (event) {\n if (this.$updating || !this.session)\n return;\n var pos = this.session.selection.getCursor();\n if (pos.row === this.pos.row && pos.column >= this.pos.column && pos.column <= this.pos.column + this.length) {\n this.showOtherMarkers();\n this._emit(\"cursorEnter\", event);\n }\n else {\n this.hideOtherMarkers();\n this._emit(\"cursorLeave\", event);\n }\n };\n PlaceHolder.prototype.detach = function () {\n this.session.removeMarker(this.pos && this.pos.markerId);\n this.hideOtherMarkers();\n this.doc.off(\"change\", this.$onUpdate);\n this.session.selection.off(\"changeCursor\", this.$onCursorChange);\n this.session.setUndoSelect(true);\n this.session = null;\n };\n PlaceHolder.prototype.cancel = function () {\n if (this.$undoStackDepth === -1)\n return;\n var undoManager = this.session.getUndoManager();\n var undosRequired = (undoManager.$undoStack || undoManager.$undostack).length - this.$undoStackDepth;\n for (var i = 0; i < undosRequired; i++) {\n undoManager.undo(this.session, true);\n }\n if (this.selectionBefore)\n this.session.selection.fromJSON(this.selectionBefore);\n };\n return PlaceHolder;\n}());\noop.implement(PlaceHolder.prototype, EventEmitter);\nexports.PlaceHolder = PlaceHolder;\n\n});\n\nace.define(\"ace/mouse/multi_select_handler\",[\"require\",\"exports\",\"module\",\"ace/lib/event\",\"ace/lib/useragent\"], function(require, exports, module){var event = require(\"../lib/event\");\nvar useragent = require(\"../lib/useragent\");\nfunction isSamePoint(p1, p2) {\n return p1.row == p2.row && p1.column == p2.column;\n}\nfunction onMouseDown(e) {\n var ev = e.domEvent;\n var alt = ev.altKey;\n var shift = ev.shiftKey;\n var ctrl = ev.ctrlKey;\n var accel = e.getAccelKey();\n var button = e.getButton();\n if (ctrl && useragent.isMac)\n button = ev.button;\n if (e.editor.inMultiSelectMode && button == 2) {\n e.editor.textInput.onContextMenu(e.domEvent);\n return;\n }\n if (!ctrl && !alt && !accel) {\n if (button === 0 && e.editor.inMultiSelectMode)\n e.editor.exitMultiSelectMode();\n return;\n }\n if (button !== 0)\n return;\n var editor = e.editor;\n var selection = editor.selection;\n var isMultiSelect = editor.inMultiSelectMode;\n var pos = e.getDocumentPosition();\n var cursor = selection.getCursor();\n var inSelection = e.inSelection() || (selection.isEmpty() && isSamePoint(pos, cursor));\n var mouseX = e.x, mouseY = e.y;\n var onMouseSelection = function (e) {\n mouseX = e.clientX;\n mouseY = e.clientY;\n };\n var session = editor.session;\n var screenAnchor = editor.renderer.pixelToScreenCoordinates(mouseX, mouseY);\n var screenCursor = screenAnchor;\n var selectionMode;\n if (editor.$mouseHandler.$enableJumpToDef) {\n if (ctrl && alt || accel && alt)\n selectionMode = shift ? \"block\" : \"add\";\n else if (alt && editor.$blockSelectEnabled)\n selectionMode = \"block\";\n }\n else {\n if (accel && !alt) {\n selectionMode = \"add\";\n if (!isMultiSelect && shift)\n return;\n }\n else if (alt && editor.$blockSelectEnabled) {\n selectionMode = \"block\";\n }\n }\n if (selectionMode && useragent.isMac && ev.ctrlKey) {\n editor.$mouseHandler.cancelContextMenu();\n }\n if (selectionMode == \"add\") {\n if (!isMultiSelect && inSelection)\n return; // dragging\n if (!isMultiSelect) {\n var range = selection.toOrientedRange();\n editor.addSelectionMarker(range);\n }\n var oldRange = selection.rangeList.rangeAtPoint(pos);\n editor.inVirtualSelectionMode = true;\n if (shift) {\n oldRange = null;\n range = selection.ranges[0] || range;\n editor.removeSelectionMarker(range);\n }\n editor.once(\"mouseup\", function () {\n var tmpSel = selection.toOrientedRange();\n if (oldRange && tmpSel.isEmpty() && isSamePoint(oldRange.cursor, tmpSel.cursor))\n selection.substractPoint(tmpSel.cursor);\n else {\n if (shift) {\n selection.substractPoint(range.cursor);\n }\n else if (range) {\n editor.removeSelectionMarker(range);\n selection.addRange(range);\n }\n selection.addRange(tmpSel);\n }\n editor.inVirtualSelectionMode = false;\n });\n }\n else if (selectionMode == \"block\") {\n e.stop();\n editor.inVirtualSelectionMode = true;\n var initialRange;\n var rectSel = [];\n var blockSelect = function () {\n var newCursor = editor.renderer.pixelToScreenCoordinates(mouseX, mouseY);\n var cursor = session.screenToDocumentPosition(newCursor.row, newCursor.column, newCursor.offsetX);\n if (isSamePoint(screenCursor, newCursor) && isSamePoint(cursor, selection.lead))\n return;\n screenCursor = newCursor;\n editor.selection.moveToPosition(cursor);\n editor.renderer.scrollCursorIntoView();\n editor.removeSelectionMarkers(rectSel);\n rectSel = selection.rectangularRangeBlock(screenCursor, screenAnchor);\n if (editor.$mouseHandler.$clickSelection && rectSel.length == 1 && rectSel[0].isEmpty())\n rectSel[0] = editor.$mouseHandler.$clickSelection.clone();\n rectSel.forEach(editor.addSelectionMarker, editor);\n editor.updateSelectionMarkers();\n };\n if (isMultiSelect && !accel) {\n selection.toSingleRange();\n }\n else if (!isMultiSelect && accel) {\n initialRange = selection.toOrientedRange();\n editor.addSelectionMarker(initialRange);\n }\n if (shift)\n screenAnchor = session.documentToScreenPosition(selection.lead);\n else\n selection.moveToPosition(pos);\n screenCursor = { row: -1, column: -1 };\n var onMouseSelectionEnd = function (e) {\n blockSelect();\n clearInterval(timerId);\n editor.removeSelectionMarkers(rectSel);\n if (!rectSel.length)\n rectSel = [selection.toOrientedRange()];\n if (initialRange) {\n editor.removeSelectionMarker(initialRange);\n selection.toSingleRange(initialRange);\n }\n for (var i = 0; i < rectSel.length; i++)\n selection.addRange(rectSel[i]);\n editor.inVirtualSelectionMode = false;\n editor.$mouseHandler.$clickSelection = null;\n };\n var onSelectionInterval = blockSelect;\n event.capture(editor.container, onMouseSelection, onMouseSelectionEnd);\n var timerId = setInterval(function () { onSelectionInterval(); }, 20);\n return e.preventDefault();\n }\n}\nexports.onMouseDown = onMouseDown;\n\n});\n\nace.define(\"ace/commands/multi_select_commands\",[\"require\",\"exports\",\"module\",\"ace/keyboard/hash_handler\"], function(require, exports, module){// commands to enter multiselect mode\nexports.defaultCommands = [{\n name: \"addCursorAbove\",\n description: \"Add cursor above\",\n exec: function (editor) { editor.selectMoreLines(-1); },\n bindKey: { win: \"Ctrl-Alt-Up\", mac: \"Ctrl-Alt-Up\" },\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"addCursorBelow\",\n description: \"Add cursor below\",\n exec: function (editor) { editor.selectMoreLines(1); },\n bindKey: { win: \"Ctrl-Alt-Down\", mac: \"Ctrl-Alt-Down\" },\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"addCursorAboveSkipCurrent\",\n description: \"Add cursor above (skip current)\",\n exec: function (editor) { editor.selectMoreLines(-1, true); },\n bindKey: { win: \"Ctrl-Alt-Shift-Up\", mac: \"Ctrl-Alt-Shift-Up\" },\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"addCursorBelowSkipCurrent\",\n description: \"Add cursor below (skip current)\",\n exec: function (editor) { editor.selectMoreLines(1, true); },\n bindKey: { win: \"Ctrl-Alt-Shift-Down\", mac: \"Ctrl-Alt-Shift-Down\" },\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"selectMoreBefore\",\n description: \"Select more before\",\n exec: function (editor) { editor.selectMore(-1); },\n bindKey: { win: \"Ctrl-Alt-Left\", mac: \"Ctrl-Alt-Left\" },\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"selectMoreAfter\",\n description: \"Select more after\",\n exec: function (editor) { editor.selectMore(1); },\n bindKey: { win: \"Ctrl-Alt-Right\", mac: \"Ctrl-Alt-Right\" },\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"selectNextBefore\",\n description: \"Select next before\",\n exec: function (editor) { editor.selectMore(-1, true); },\n bindKey: { win: \"Ctrl-Alt-Shift-Left\", mac: \"Ctrl-Alt-Shift-Left\" },\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"selectNextAfter\",\n description: \"Select next after\",\n exec: function (editor) { editor.selectMore(1, true); },\n bindKey: { win: \"Ctrl-Alt-Shift-Right\", mac: \"Ctrl-Alt-Shift-Right\" },\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"toggleSplitSelectionIntoLines\",\n description: \"Split selection into lines\",\n exec: function (editor) {\n if (editor.multiSelect.rangeCount > 1)\n editor.multiSelect.joinSelections();\n else\n editor.multiSelect.splitIntoLines();\n },\n bindKey: { win: \"Ctrl-Alt-L\", mac: \"Ctrl-Alt-L\" },\n readOnly: true\n }, {\n name: \"splitSelectionIntoLines\",\n description: \"Split into lines\",\n exec: function (editor) { editor.multiSelect.splitIntoLines(); },\n readOnly: true\n }, {\n name: \"alignCursors\",\n description: \"Align cursors\",\n exec: function (editor) { editor.alignCursors(); },\n bindKey: { win: \"Ctrl-Alt-A\", mac: \"Ctrl-Alt-A\" },\n scrollIntoView: \"cursor\"\n }, {\n name: \"findAll\",\n description: \"Find all\",\n exec: function (editor) { editor.findAll(); },\n bindKey: { win: \"Ctrl-Alt-K\", mac: \"Ctrl-Alt-G\" },\n scrollIntoView: \"cursor\",\n readOnly: true\n }];\nexports.multiSelectCommands = [{\n name: \"singleSelection\",\n description: \"Single selection\",\n bindKey: \"esc\",\n exec: function (editor) { editor.exitMultiSelectMode(); },\n scrollIntoView: \"cursor\",\n readOnly: true,\n isAvailable: function (editor) { return editor && editor.inMultiSelectMode; }\n }];\nvar HashHandler = require(\"../keyboard/hash_handler\").HashHandler;\nexports.keyboardHandler = new HashHandler(exports.multiSelectCommands);\n\n});\n\nace.define(\"ace/multi_select\",[\"require\",\"exports\",\"module\",\"ace/range_list\",\"ace/range\",\"ace/selection\",\"ace/mouse/multi_select_handler\",\"ace/lib/event\",\"ace/lib/lang\",\"ace/commands/multi_select_commands\",\"ace/search\",\"ace/edit_session\",\"ace/editor\",\"ace/config\"], function(require, exports, module){var RangeList = require(\"./range_list\").RangeList;\nvar Range = require(\"./range\").Range;\nvar Selection = require(\"./selection\").Selection;\nvar onMouseDown = require(\"./mouse/multi_select_handler\").onMouseDown;\nvar event = require(\"./lib/event\");\nvar lang = require(\"./lib/lang\");\nvar commands = require(\"./commands/multi_select_commands\");\nexports.commands = commands.defaultCommands.concat(commands.multiSelectCommands);\nvar Search = require(\"./search\").Search;\nvar search = new Search();\nfunction find(session, needle, dir) {\n search.$options.wrap = true;\n search.$options.needle = needle;\n search.$options.backwards = dir == -1;\n return search.find(session);\n}\nvar EditSession = require(\"./edit_session\").EditSession;\n(function () {\n this.getSelectionMarkers = function () {\n return this.$selectionMarkers;\n };\n}).call(EditSession.prototype);\n(function () {\n this.ranges = null;\n this.rangeList = null;\n this.addRange = function (range, $blockChangeEvents) {\n if (!range)\n return;\n if (!this.inMultiSelectMode && this.rangeCount === 0) {\n var oldRange = this.toOrientedRange();\n this.rangeList.add(oldRange);\n this.rangeList.add(range);\n if (this.rangeList.ranges.length != 2) {\n this.rangeList.removeAll();\n return $blockChangeEvents || this.fromOrientedRange(range);\n }\n this.rangeList.removeAll();\n this.rangeList.add(oldRange);\n this.$onAddRange(oldRange);\n }\n if (!range.cursor)\n range.cursor = range.end;\n var removed = this.rangeList.add(range);\n this.$onAddRange(range);\n if (removed.length)\n this.$onRemoveRange(removed);\n if (this.rangeCount > 1 && !this.inMultiSelectMode) {\n this._signal(\"multiSelect\");\n this.inMultiSelectMode = true;\n this.session.$undoSelect = false;\n this.rangeList.attach(this.session);\n }\n return $blockChangeEvents || this.fromOrientedRange(range);\n };\n this.toSingleRange = function (range) {\n range = range || this.ranges[0];\n var removed = this.rangeList.removeAll();\n if (removed.length)\n this.$onRemoveRange(removed);\n range && this.fromOrientedRange(range);\n };\n this.substractPoint = function (pos) {\n var removed = this.rangeList.substractPoint(pos);\n if (removed) {\n this.$onRemoveRange(removed);\n return removed[0];\n }\n };\n this.mergeOverlappingRanges = function () {\n var removed = this.rangeList.merge();\n if (removed.length)\n this.$onRemoveRange(removed);\n };\n this.$onAddRange = function (range) {\n this.rangeCount = this.rangeList.ranges.length;\n this.ranges.unshift(range);\n this._signal(\"addRange\", { range: range });\n };\n this.$onRemoveRange = function (removed) {\n this.rangeCount = this.rangeList.ranges.length;\n if (this.rangeCount == 1 && this.inMultiSelectMode) {\n var lastRange = this.rangeList.ranges.pop();\n removed.push(lastRange);\n this.rangeCount = 0;\n }\n for (var i = removed.length; i--;) {\n var index = this.ranges.indexOf(removed[i]);\n this.ranges.splice(index, 1);\n }\n this._signal(\"removeRange\", { ranges: removed });\n if (this.rangeCount === 0 && this.inMultiSelectMode) {\n this.inMultiSelectMode = false;\n this._signal(\"singleSelect\");\n this.session.$undoSelect = true;\n this.rangeList.detach(this.session);\n }\n lastRange = lastRange || this.ranges[0];\n if (lastRange && !lastRange.isEqual(this.getRange()))\n this.fromOrientedRange(lastRange);\n };\n this.$initRangeList = function () {\n if (this.rangeList)\n return;\n this.rangeList = new RangeList();\n this.ranges = [];\n this.rangeCount = 0;\n };\n this.getAllRanges = function () {\n return this.rangeCount ? this.rangeList.ranges.concat() : [this.getRange()];\n };\n this.splitIntoLines = function () {\n var ranges = this.ranges.length ? this.ranges : [this.getRange()];\n var newRanges = [];\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i];\n var row = range.start.row;\n var endRow = range.end.row;\n if (row === endRow) {\n newRanges.push(range.clone());\n }\n else {\n newRanges.push(new Range(row, range.start.column, row, this.session.getLine(row).length));\n while (++row < endRow)\n newRanges.push(this.getLineRange(row, true));\n newRanges.push(new Range(endRow, 0, endRow, range.end.column));\n }\n if (i == 0 && !this.isBackwards())\n newRanges = newRanges.reverse();\n }\n this.toSingleRange();\n for (var i = newRanges.length; i--;)\n this.addRange(newRanges[i]);\n };\n this.joinSelections = function () {\n var ranges = this.rangeList.ranges;\n var lastRange = ranges[ranges.length - 1];\n var range = Range.fromPoints(ranges[0].start, lastRange.end);\n this.toSingleRange();\n this.setSelectionRange(range, lastRange.cursor == lastRange.start);\n };\n this.toggleBlockSelection = function () {\n if (this.rangeCount > 1) {\n var ranges = this.rangeList.ranges;\n var lastRange = ranges[ranges.length - 1];\n var range = Range.fromPoints(ranges[0].start, lastRange.end);\n this.toSingleRange();\n this.setSelectionRange(range, lastRange.cursor == lastRange.start);\n }\n else {\n var cursor = this.session.documentToScreenPosition(this.cursor);\n var anchor = this.session.documentToScreenPosition(this.anchor);\n var rectSel = this.rectangularRangeBlock(cursor, anchor);\n rectSel.forEach(this.addRange, this);\n }\n };\n this.rectangularRangeBlock = function (screenCursor, screenAnchor, includeEmptyLines) {\n var rectSel = [];\n var xBackwards = screenCursor.column < screenAnchor.column;\n if (xBackwards) {\n var startColumn = screenCursor.column;\n var endColumn = screenAnchor.column;\n var startOffsetX = screenCursor.offsetX;\n var endOffsetX = screenAnchor.offsetX;\n }\n else {\n var startColumn = screenAnchor.column;\n var endColumn = screenCursor.column;\n var startOffsetX = screenAnchor.offsetX;\n var endOffsetX = screenCursor.offsetX;\n }\n var yBackwards = screenCursor.row < screenAnchor.row;\n if (yBackwards) {\n var startRow = screenCursor.row;\n var endRow = screenAnchor.row;\n }\n else {\n var startRow = screenAnchor.row;\n var endRow = screenCursor.row;\n }\n if (startColumn < 0)\n startColumn = 0;\n if (startRow < 0)\n startRow = 0;\n if (startRow == endRow)\n includeEmptyLines = true;\n var docEnd;\n for (var row = startRow; row <= endRow; row++) {\n var range = Range.fromPoints(this.session.screenToDocumentPosition(row, startColumn, startOffsetX), this.session.screenToDocumentPosition(row, endColumn, endOffsetX));\n if (range.isEmpty()) {\n if (docEnd && isSamePoint(range.end, docEnd))\n break;\n docEnd = range.end;\n }\n range.cursor = xBackwards ? range.start : range.end;\n rectSel.push(range);\n }\n if (yBackwards)\n rectSel.reverse();\n if (!includeEmptyLines) {\n var end = rectSel.length - 1;\n while (rectSel[end].isEmpty() && end > 0)\n end--;\n if (end > 0) {\n var start = 0;\n while (rectSel[start].isEmpty())\n start++;\n }\n for (var i = end; i >= start; i--) {\n if (rectSel[i].isEmpty())\n rectSel.splice(i, 1);\n }\n }\n return rectSel;\n };\n}).call(Selection.prototype);\nvar Editor = require(\"./editor\").Editor;\n(function () {\n this.updateSelectionMarkers = function () {\n this.renderer.updateCursor();\n this.renderer.updateBackMarkers();\n };\n this.addSelectionMarker = function (orientedRange) {\n if (!orientedRange.cursor)\n orientedRange.cursor = orientedRange.end;\n var style = this.getSelectionStyle();\n orientedRange.marker = this.session.addMarker(orientedRange, \"ace_selection\", style);\n this.session.$selectionMarkers.push(orientedRange);\n this.session.selectionMarkerCount = this.session.$selectionMarkers.length;\n return orientedRange;\n };\n this.removeSelectionMarker = function (range) {\n if (!range.marker)\n return;\n this.session.removeMarker(range.marker);\n var index = this.session.$selectionMarkers.indexOf(range);\n if (index != -1)\n this.session.$selectionMarkers.splice(index, 1);\n this.session.selectionMarkerCount = this.session.$selectionMarkers.length;\n };\n this.removeSelectionMarkers = function (ranges) {\n var markerList = this.session.$selectionMarkers;\n for (var i = ranges.length; i--;) {\n var range = ranges[i];\n if (!range.marker)\n continue;\n this.session.removeMarker(range.marker);\n var index = markerList.indexOf(range);\n if (index != -1)\n markerList.splice(index, 1);\n }\n this.session.selectionMarkerCount = markerList.length;\n };\n this.$onAddRange = function (e) {\n this.addSelectionMarker(e.range);\n this.renderer.updateCursor();\n this.renderer.updateBackMarkers();\n };\n this.$onRemoveRange = function (e) {\n this.removeSelectionMarkers(e.ranges);\n this.renderer.updateCursor();\n this.renderer.updateBackMarkers();\n };\n this.$onMultiSelect = function (e) {\n if (this.inMultiSelectMode)\n return;\n this.inMultiSelectMode = true;\n this.setStyle(\"ace_multiselect\");\n this.keyBinding.addKeyboardHandler(commands.keyboardHandler);\n this.commands.setDefaultHandler(\"exec\", this.$onMultiSelectExec);\n this.renderer.updateCursor();\n this.renderer.updateBackMarkers();\n };\n this.$onSingleSelect = function (e) {\n if (this.session.multiSelect.inVirtualMode)\n return;\n this.inMultiSelectMode = false;\n this.unsetStyle(\"ace_multiselect\");\n this.keyBinding.removeKeyboardHandler(commands.keyboardHandler);\n this.commands.removeDefaultHandler(\"exec\", this.$onMultiSelectExec);\n this.renderer.updateCursor();\n this.renderer.updateBackMarkers();\n this._emit(\"changeSelection\");\n };\n this.$onMultiSelectExec = function (e) {\n var command = e.command;\n var editor = e.editor;\n if (!editor.multiSelect)\n return;\n if (!command.multiSelectAction) {\n var result = command.exec(editor, e.args || {});\n editor.multiSelect.addRange(editor.multiSelect.toOrientedRange());\n editor.multiSelect.mergeOverlappingRanges();\n }\n else if (command.multiSelectAction == \"forEach\") {\n result = editor.forEachSelection(command, e.args);\n }\n else if (command.multiSelectAction == \"forEachLine\") {\n result = editor.forEachSelection(command, e.args, true);\n }\n else if (command.multiSelectAction == \"single\") {\n editor.exitMultiSelectMode();\n result = command.exec(editor, e.args || {});\n }\n else {\n result = command.multiSelectAction(editor, e.args || {});\n }\n return result;\n };\n this.forEachSelection = function (cmd, args, options) {\n if (this.inVirtualSelectionMode)\n return;\n var keepOrder = options && options.keepOrder;\n var $byLines = options == true || options && options.$byLines;\n var session = this.session;\n var selection = this.selection;\n var rangeList = selection.rangeList;\n var ranges = (keepOrder ? selection : rangeList).ranges;\n var result;\n if (!ranges.length)\n return cmd.exec ? cmd.exec(this, args || {}) : cmd(this, args || {});\n var reg = selection._eventRegistry;\n selection._eventRegistry = {};\n var tmpSel = new Selection(session);\n this.inVirtualSelectionMode = true;\n for (var i = ranges.length; i--;) {\n if ($byLines) {\n while (i > 0 && ranges[i].start.row == ranges[i - 1].end.row)\n i--;\n }\n tmpSel.fromOrientedRange(ranges[i]);\n tmpSel.index = i;\n this.selection = session.selection = tmpSel;\n var cmdResult = cmd.exec ? cmd.exec(this, args || {}) : cmd(this, args || {});\n if (!result && cmdResult !== undefined)\n result = cmdResult;\n tmpSel.toOrientedRange(ranges[i]);\n }\n tmpSel.detach();\n this.selection = session.selection = selection;\n this.inVirtualSelectionMode = false;\n selection._eventRegistry = reg;\n selection.mergeOverlappingRanges();\n if (selection.ranges[0])\n selection.fromOrientedRange(selection.ranges[0]);\n var anim = this.renderer.$scrollAnimation;\n this.onCursorChange();\n this.onSelectionChange();\n if (anim && anim.from == anim.to)\n this.renderer.animateScrolling(anim.from);\n return result;\n };\n this.exitMultiSelectMode = function () {\n if (!this.inMultiSelectMode || this.inVirtualSelectionMode)\n return;\n this.multiSelect.toSingleRange();\n };\n this.getSelectedText = function () {\n var text = \"\";\n if (this.inMultiSelectMode && !this.inVirtualSelectionMode) {\n var ranges = this.multiSelect.rangeList.ranges;\n var buf = [];\n for (var i = 0; i < ranges.length; i++) {\n buf.push(this.session.getTextRange(ranges[i]));\n }\n var nl = this.session.getDocument().getNewLineCharacter();\n text = buf.join(nl);\n if (text.length == (buf.length - 1) * nl.length)\n text = \"\";\n }\n else if (!this.selection.isEmpty()) {\n text = this.session.getTextRange(this.getSelectionRange());\n }\n return text;\n };\n this.$checkMultiselectChange = function (e, anchor) {\n if (this.inMultiSelectMode && !this.inVirtualSelectionMode) {\n var range = this.multiSelect.ranges[0];\n if (this.multiSelect.isEmpty() && anchor == this.multiSelect.anchor)\n return;\n var pos = anchor == this.multiSelect.anchor\n ? range.cursor == range.start ? range.end : range.start\n : range.cursor;\n if (pos.row != anchor.row\n || this.session.$clipPositionToDocument(pos.row, pos.column).column != anchor.column)\n this.multiSelect.toSingleRange(this.multiSelect.toOrientedRange());\n else\n this.multiSelect.mergeOverlappingRanges();\n }\n };\n this.findAll = function (needle, options, additive) {\n options = options || {};\n options.needle = needle || options.needle;\n if (options.needle == undefined) {\n var range = this.selection.isEmpty()\n ? this.selection.getWordRange()\n : this.selection.getRange();\n options.needle = this.session.getTextRange(range);\n }\n this.$search.set(options);\n var ranges = this.$search.findAll(this.session);\n if (!ranges.length)\n return 0;\n var selection = this.multiSelect;\n if (!additive)\n selection.toSingleRange(ranges[0]);\n for (var i = ranges.length; i--;)\n selection.addRange(ranges[i], true);\n if (range && selection.rangeList.rangeAtPoint(range.start))\n selection.addRange(range, true);\n return ranges.length;\n };\n this.selectMoreLines = function (dir, skip) {\n var range = this.selection.toOrientedRange();\n var isBackwards = range.cursor == range.end;\n var screenLead = this.session.documentToScreenPosition(range.cursor);\n if (this.selection.$desiredColumn)\n screenLead.column = this.selection.$desiredColumn;\n var lead = this.session.screenToDocumentPosition(screenLead.row + dir, screenLead.column);\n if (!range.isEmpty()) {\n var screenAnchor = this.session.documentToScreenPosition(isBackwards ? range.end : range.start);\n var anchor = this.session.screenToDocumentPosition(screenAnchor.row + dir, screenAnchor.column);\n }\n else {\n var anchor = lead;\n }\n if (isBackwards) {\n var newRange = Range.fromPoints(lead, anchor);\n newRange.cursor = newRange.start;\n }\n else {\n var newRange = Range.fromPoints(anchor, lead);\n newRange.cursor = newRange.end;\n }\n newRange.desiredColumn = screenLead.column;\n if (!this.selection.inMultiSelectMode) {\n this.selection.addRange(range);\n }\n else {\n if (skip)\n var toRemove = range.cursor;\n }\n this.selection.addRange(newRange);\n if (toRemove)\n this.selection.substractPoint(toRemove);\n };\n this.transposeSelections = function (dir) {\n var session = this.session;\n var sel = session.multiSelect;\n var all = sel.ranges;\n for (var i = all.length; i--;) {\n var range = all[i];\n if (range.isEmpty()) {\n var tmp = session.getWordRange(range.start.row, range.start.column);\n range.start.row = tmp.start.row;\n range.start.column = tmp.start.column;\n range.end.row = tmp.end.row;\n range.end.column = tmp.end.column;\n }\n }\n sel.mergeOverlappingRanges();\n var words = [];\n for (var i = all.length; i--;) {\n var range = all[i];\n words.unshift(session.getTextRange(range));\n }\n if (dir < 0)\n words.unshift(words.pop());\n else\n words.push(words.shift());\n for (var i = all.length; i--;) {\n var range = all[i];\n var tmp = range.clone();\n session.replace(range, words[i]);\n range.start.row = tmp.start.row;\n range.start.column = tmp.start.column;\n }\n sel.fromOrientedRange(sel.ranges[0]);\n };\n this.selectMore = function (dir, skip, stopAtFirst) {\n var session = this.session;\n var sel = session.multiSelect;\n var range = sel.toOrientedRange();\n if (range.isEmpty()) {\n range = session.getWordRange(range.start.row, range.start.column);\n range.cursor = dir == -1 ? range.start : range.end;\n this.multiSelect.addRange(range);\n if (stopAtFirst)\n return;\n }\n var needle = session.getTextRange(range);\n var newRange = find(session, needle, dir);\n if (newRange) {\n newRange.cursor = dir == -1 ? newRange.start : newRange.end;\n this.session.unfold(newRange);\n this.multiSelect.addRange(newRange);\n this.renderer.scrollCursorIntoView(null, 0.5);\n }\n if (skip)\n this.multiSelect.substractPoint(range.cursor);\n };\n this.alignCursors = function () {\n var session = this.session;\n var sel = session.multiSelect;\n var ranges = sel.ranges;\n var row = -1;\n var sameRowRanges = ranges.filter(function (r) {\n if (r.cursor.row == row)\n return true;\n row = r.cursor.row;\n });\n if (!ranges.length || sameRowRanges.length == ranges.length - 1) {\n var range = this.selection.getRange();\n var fr = range.start.row, lr = range.end.row;\n var guessRange = fr == lr;\n if (guessRange) {\n var max = this.session.getLength();\n var line;\n do {\n line = this.session.getLine(lr);\n } while (/[=:]/.test(line) && ++lr < max);\n do {\n line = this.session.getLine(fr);\n } while (/[=:]/.test(line) && --fr > 0);\n if (fr < 0)\n fr = 0;\n if (lr >= max)\n lr = max - 1;\n }\n var lines = this.session.removeFullLines(fr, lr);\n lines = this.$reAlignText(lines, guessRange);\n this.session.insert({ row: fr, column: 0 }, lines.join(\"\\n\") + \"\\n\");\n if (!guessRange) {\n range.start.column = 0;\n range.end.column = lines[lines.length - 1].length;\n }\n this.selection.setRange(range);\n }\n else {\n sameRowRanges.forEach(function (r) {\n sel.substractPoint(r.cursor);\n });\n var maxCol = 0;\n var minSpace = Infinity;\n var spaceOffsets = ranges.map(function (r) {\n var p = r.cursor;\n var line = session.getLine(p.row);\n var spaceOffset = line.substr(p.column).search(/\\S/g);\n if (spaceOffset == -1)\n spaceOffset = 0;\n if (p.column > maxCol)\n maxCol = p.column;\n if (spaceOffset < minSpace)\n minSpace = spaceOffset;\n return spaceOffset;\n });\n ranges.forEach(function (r, i) {\n var p = r.cursor;\n var l = maxCol - p.column;\n var d = spaceOffsets[i] - minSpace;\n if (l > d)\n session.insert(p, lang.stringRepeat(\" \", l - d));\n else\n session.remove(new Range(p.row, p.column, p.row, p.column - l + d));\n r.start.column = r.end.column = maxCol;\n r.start.row = r.end.row = p.row;\n r.cursor = r.end;\n });\n sel.fromOrientedRange(ranges[0]);\n this.renderer.updateCursor();\n this.renderer.updateBackMarkers();\n }\n };\n this.$reAlignText = function (lines, forceLeft) {\n var isLeftAligned = true, isRightAligned = true;\n var startW, textW, endW;\n return lines.map(function (line) {\n var m = line.match(/(\\s*)(.*?)(\\s*)([=:].*)/);\n if (!m)\n return [line];\n if (startW == null) {\n startW = m[1].length;\n textW = m[2].length;\n endW = m[3].length;\n return m;\n }\n if (startW + textW + endW != m[1].length + m[2].length + m[3].length)\n isRightAligned = false;\n if (startW != m[1].length)\n isLeftAligned = false;\n if (startW > m[1].length)\n startW = m[1].length;\n if (textW < m[2].length)\n textW = m[2].length;\n if (endW > m[3].length)\n endW = m[3].length;\n return m;\n }).map(forceLeft ? alignLeft :\n isLeftAligned ? isRightAligned ? alignRight : alignLeft : unAlign);\n function spaces(n) {\n return lang.stringRepeat(\" \", n);\n }\n function alignLeft(m) {\n return !m[2] ? m[0] : spaces(startW) + m[2]\n + spaces(textW - m[2].length + endW)\n + m[4].replace(/^([=:])\\s+/, \"$1 \");\n }\n function alignRight(m) {\n return !m[2] ? m[0] : spaces(startW + textW - m[2].length) + m[2]\n + spaces(endW)\n + m[4].replace(/^([=:])\\s+/, \"$1 \");\n }\n function unAlign(m) {\n return !m[2] ? m[0] : spaces(startW) + m[2]\n + spaces(endW)\n + m[4].replace(/^([=:])\\s+/, \"$1 \");\n }\n };\n}).call(Editor.prototype);\nfunction isSamePoint(p1, p2) {\n return p1.row == p2.row && p1.column == p2.column;\n}\nexports.onSessionChange = function (e) {\n var session = e.session;\n if (session && !session.multiSelect) {\n session.$selectionMarkers = [];\n session.selection.$initRangeList();\n session.multiSelect = session.selection;\n }\n this.multiSelect = session && session.multiSelect;\n var oldSession = e.oldSession;\n if (oldSession) {\n oldSession.multiSelect.off(\"addRange\", this.$onAddRange);\n oldSession.multiSelect.off(\"removeRange\", this.$onRemoveRange);\n oldSession.multiSelect.off(\"multiSelect\", this.$onMultiSelect);\n oldSession.multiSelect.off(\"singleSelect\", this.$onSingleSelect);\n oldSession.multiSelect.lead.off(\"change\", this.$checkMultiselectChange);\n oldSession.multiSelect.anchor.off(\"change\", this.$checkMultiselectChange);\n }\n if (session) {\n session.multiSelect.on(\"addRange\", this.$onAddRange);\n session.multiSelect.on(\"removeRange\", this.$onRemoveRange);\n session.multiSelect.on(\"multiSelect\", this.$onMultiSelect);\n session.multiSelect.on(\"singleSelect\", this.$onSingleSelect);\n session.multiSelect.lead.on(\"change\", this.$checkMultiselectChange);\n session.multiSelect.anchor.on(\"change\", this.$checkMultiselectChange);\n }\n if (session && this.inMultiSelectMode != session.selection.inMultiSelectMode) {\n if (session.selection.inMultiSelectMode)\n this.$onMultiSelect();\n else\n this.$onSingleSelect();\n }\n};\nfunction MultiSelect(editor) {\n if (editor.$multiselectOnSessionChange)\n return;\n editor.$onAddRange = editor.$onAddRange.bind(editor);\n editor.$onRemoveRange = editor.$onRemoveRange.bind(editor);\n editor.$onMultiSelect = editor.$onMultiSelect.bind(editor);\n editor.$onSingleSelect = editor.$onSingleSelect.bind(editor);\n editor.$multiselectOnSessionChange = exports.onSessionChange.bind(editor);\n editor.$checkMultiselectChange = editor.$checkMultiselectChange.bind(editor);\n editor.$multiselectOnSessionChange(editor);\n editor.on(\"changeSession\", editor.$multiselectOnSessionChange);\n editor.on(\"mousedown\", onMouseDown);\n editor.commands.addCommands(commands.defaultCommands);\n addAltCursorListeners(editor);\n}\nfunction addAltCursorListeners(editor) {\n if (!editor.textInput)\n return;\n var el = editor.textInput.getElement();\n var altCursor = false;\n event.addListener(el, \"keydown\", function (e) {\n var altDown = e.keyCode == 18 && !(e.ctrlKey || e.shiftKey || e.metaKey);\n if (editor.$blockSelectEnabled && altDown) {\n if (!altCursor) {\n editor.renderer.setMouseCursor(\"crosshair\");\n altCursor = true;\n }\n }\n else if (altCursor) {\n reset();\n }\n }, editor);\n event.addListener(el, \"keyup\", reset, editor);\n event.addListener(el, \"blur\", reset, editor);\n function reset(e) {\n if (altCursor) {\n editor.renderer.setMouseCursor(\"\");\n altCursor = false;\n }\n }\n}\nexports.MultiSelect = MultiSelect;\nrequire(\"./config\").defineOptions(Editor.prototype, \"editor\", {\n enableMultiselect: {\n set: function (val) {\n MultiSelect(this);\n if (val) {\n this.on(\"mousedown\", onMouseDown);\n }\n else {\n this.off(\"mousedown\", onMouseDown);\n }\n },\n value: true\n },\n enableBlockSelect: {\n set: function (val) {\n this.$blockSelectEnabled = val;\n },\n value: true\n }\n});\n\n});\n\nace.define(\"ace/mode/folding/fold_mode\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar Range = require(\"../../range\").Range;\nvar FoldMode = exports.FoldMode = function () { };\n(function () {\n this.foldingStartMarker = null;\n this.foldingStopMarker = null;\n this.getFoldWidget = function (session, foldStyle, row) {\n var line = session.getLine(row);\n if (this.foldingStartMarker.test(line))\n return \"start\";\n if (foldStyle == \"markbeginend\"\n && this.foldingStopMarker\n && this.foldingStopMarker.test(line))\n return \"end\";\n return \"\";\n };\n this.getFoldWidgetRange = function (session, foldStyle, row) {\n return null;\n };\n this.indentationBlock = function (session, row, column) {\n var re = /\\S/;\n var line = session.getLine(row);\n var startLevel = line.search(re);\n if (startLevel == -1)\n return;\n var startColumn = column || line.length;\n var maxRow = session.getLength();\n var startRow = row;\n var endRow = row;\n while (++row < maxRow) {\n var level = session.getLine(row).search(re);\n if (level == -1)\n continue;\n if (level <= startLevel) {\n var token = session.getTokenAt(row, 0);\n if (!token || token.type !== \"string\")\n break;\n }\n endRow = row;\n }\n if (endRow > startRow) {\n var endColumn = session.getLine(endRow).length;\n return new Range(startRow, startColumn, endRow, endColumn);\n }\n };\n this.openingBracketBlock = function (session, bracket, row, column, typeRe) {\n var start = { row: row, column: column + 1 };\n var end = session.$findClosingBracket(bracket, start, typeRe);\n if (!end)\n return;\n var fw = session.foldWidgets[end.row];\n if (fw == null)\n fw = session.getFoldWidget(end.row);\n if (fw == \"start\" && end.row > start.row) {\n end.row--;\n end.column = session.getLine(end.row).length;\n }\n return Range.fromPoints(start, end);\n };\n this.closingBracketBlock = function (session, bracket, row, column, typeRe) {\n var end = { row: row, column: column };\n var start = session.$findOpeningBracket(bracket, end);\n if (!start)\n return;\n start.column++;\n end.column--;\n return Range.fromPoints(start, end);\n };\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/ext/error_marker\",[\"require\",\"exports\",\"module\",\"ace/line_widgets\",\"ace/lib/dom\",\"ace/range\",\"ace/config\"], function(require, exports, module){\"use strict\";\nvar LineWidgets = require(\"../line_widgets\").LineWidgets;\nvar dom = require(\"../lib/dom\");\nvar Range = require(\"../range\").Range;\nvar nls = require(\"../config\").nls;\nfunction binarySearch(array, needle, comparator) {\n var first = 0;\n var last = array.length - 1;\n while (first <= last) {\n var mid = (first + last) >> 1;\n var c = comparator(needle, array[mid]);\n if (c > 0)\n first = mid + 1;\n else if (c < 0)\n last = mid - 1;\n else\n return mid;\n }\n return -(first + 1);\n}\nfunction findAnnotations(session, row, dir) {\n var annotations = session.getAnnotations().sort(Range.comparePoints);\n if (!annotations.length)\n return;\n var i = binarySearch(annotations, { row: row, column: -1 }, Range.comparePoints);\n if (i < 0)\n i = -i - 1;\n if (i >= annotations.length)\n i = dir > 0 ? 0 : annotations.length - 1;\n else if (i === 0 && dir < 0)\n i = annotations.length - 1;\n var annotation = annotations[i];\n if (!annotation || !dir)\n return;\n if (annotation.row === row) {\n do {\n annotation = annotations[i += dir];\n } while (annotation && annotation.row === row);\n if (!annotation)\n return annotations.slice();\n }\n var matched = [];\n row = annotation.row;\n do {\n matched[dir < 0 ? \"unshift\" : \"push\"](annotation);\n annotation = annotations[i += dir];\n } while (annotation && annotation.row == row);\n return matched.length && matched;\n}\nexports.showErrorMarker = function (editor, dir) {\n var session = editor.session;\n if (!session.widgetManager) {\n session.widgetManager = new LineWidgets(session);\n session.widgetManager.attach(editor);\n }\n var pos = editor.getCursorPosition();\n var row = pos.row;\n var oldWidget = session.widgetManager.getWidgetsAtRow(row).filter(function (w) {\n return w.type == \"errorMarker\";\n })[0];\n if (oldWidget) {\n oldWidget.destroy();\n }\n else {\n row -= dir;\n }\n var annotations = findAnnotations(session, row, dir);\n var gutterAnno;\n if (annotations) {\n var annotation = annotations[0];\n pos.column = (annotation.pos && typeof annotation.column != \"number\"\n ? annotation.pos.sc\n : annotation.column) || 0;\n pos.row = annotation.row;\n gutterAnno = editor.renderer.$gutterLayer.$annotations[pos.row];\n }\n else if (oldWidget) {\n return;\n }\n else {\n gutterAnno = {\n text: [nls(\"Looks good!\")],\n className: \"ace_ok\"\n };\n }\n editor.session.unfold(pos.row);\n editor.selection.moveToPosition(pos);\n var w = {\n row: pos.row,\n fixedWidth: true,\n coverGutter: true,\n el: dom.createElement(\"div\"),\n type: \"errorMarker\"\n };\n var el = w.el.appendChild(dom.createElement(\"div\"));\n var arrow = w.el.appendChild(dom.createElement(\"div\"));\n arrow.className = \"error_widget_arrow \" + gutterAnno.className;\n var left = editor.renderer.$cursorLayer\n .getPixelPosition(pos).left;\n arrow.style.left = left + editor.renderer.gutterWidth - 5 + \"px\";\n w.el.className = \"error_widget_wrapper\";\n el.className = \"error_widget \" + gutterAnno.className;\n el.innerHTML = gutterAnno.text.join(\"
    \");\n el.appendChild(dom.createElement(\"div\"));\n var kb = function (_, hashId, keyString) {\n if (hashId === 0 && (keyString === \"esc\" || keyString === \"return\")) {\n w.destroy();\n return { command: \"null\" };\n }\n };\n w.destroy = function () {\n if (editor.$mouseHandler.isMousePressed)\n return;\n editor.keyBinding.removeKeyboardHandler(kb);\n session.widgetManager.removeLineWidget(w);\n editor.off(\"changeSelection\", w.destroy);\n editor.off(\"changeSession\", w.destroy);\n editor.off(\"mouseup\", w.destroy);\n editor.off(\"change\", w.destroy);\n };\n editor.keyBinding.addKeyboardHandler(kb);\n editor.on(\"changeSelection\", w.destroy);\n editor.on(\"changeSession\", w.destroy);\n editor.on(\"mouseup\", w.destroy);\n editor.on(\"change\", w.destroy);\n editor.session.widgetManager.addLineWidget(w);\n w.el.onmousedown = editor.focus.bind(editor);\n editor.renderer.scrollCursorIntoView(null, 0.5, { bottom: w.el.offsetHeight });\n};\ndom.importCssString(\"\\n .error_widget_wrapper {\\n background: inherit;\\n color: inherit;\\n border:none\\n }\\n .error_widget {\\n border-top: solid 2px;\\n border-bottom: solid 2px;\\n margin: 5px 0;\\n padding: 10px 40px;\\n white-space: pre-wrap;\\n }\\n .error_widget.ace_error, .error_widget_arrow.ace_error{\\n border-color: #ff5a5a\\n }\\n .error_widget.ace_warning, .error_widget_arrow.ace_warning{\\n border-color: #F1D817\\n }\\n .error_widget.ace_info, .error_widget_arrow.ace_info{\\n border-color: #5a5a5a\\n }\\n .error_widget.ace_ok, .error_widget_arrow.ace_ok{\\n border-color: #5aaa5a\\n }\\n .error_widget_arrow {\\n position: absolute;\\n border: solid 5px;\\n border-top-color: transparent!important;\\n border-right-color: transparent!important;\\n border-left-color: transparent!important;\\n top: -5px;\\n }\\n\", \"error_marker.css\", false);\n\n});\n\nace.define(\"ace/ace\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\",\"ace/range\",\"ace/editor\",\"ace/edit_session\",\"ace/undomanager\",\"ace/virtual_renderer\",\"ace/worker/worker_client\",\"ace/keyboard/hash_handler\",\"ace/placeholder\",\"ace/multi_select\",\"ace/mode/folding/fold_mode\",\"ace/theme/textmate\",\"ace/ext/error_marker\",\"ace/config\",\"ace/loader_build\"], function(require, exports, module){/**\n * The main class required to set up an Ace instance in the browser.\n *\n * @class Ace\n **/\n\"use strict\";\nrequire(\"./loader_build\")(exports)\nvar dom = require(\"./lib/dom\");\nvar Range = require(\"./range\").Range;\nvar Editor = require(\"./editor\").Editor;\nvar EditSession = require(\"./edit_session\").EditSession;\nvar UndoManager = require(\"./undomanager\").UndoManager;\nvar Renderer = require(\"./virtual_renderer\").VirtualRenderer;\nrequire(\"./worker/worker_client\");\nrequire(\"./keyboard/hash_handler\");\nrequire(\"./placeholder\");\nrequire(\"./multi_select\");\nrequire(\"./mode/folding/fold_mode\");\nrequire(\"./theme/textmate\");\nrequire(\"./ext/error_marker\");\nexports.config = require(\"./config\");\nexports.edit = function (el, options) {\n if (typeof el == \"string\") {\n var _id = el;\n el = document.getElementById(_id);\n if (!el)\n throw new Error(\"ace.edit can't find div #\" + _id);\n }\n if (el && el.env && el.env.editor instanceof Editor)\n return el.env.editor;\n var value = \"\";\n if (el && /input|textarea/i.test(el.tagName)) {\n var oldNode = el;\n value = oldNode.value;\n el = dom.createElement(\"pre\");\n oldNode.parentNode.replaceChild(el, oldNode);\n }\n else if (el) {\n value = el.textContent;\n el.innerHTML = \"\";\n }\n var doc = exports.createEditSession(value);\n var editor = new Editor(new Renderer(el), doc, options);\n var env = {\n document: doc,\n editor: editor,\n onResize: editor.resize.bind(editor, null)\n };\n if (oldNode)\n env.textarea = oldNode;\n editor.on(\"destroy\", function () {\n env.editor.container.env = null; // prevent memory leak on old ie\n });\n editor.container.env = editor.env = env;\n return editor;\n};\nexports.createEditSession = function (text, mode) {\n var doc = new EditSession(text, mode);\n doc.setUndoManager(new UndoManager());\n return doc;\n};\nexports.Range = Range;\nexports.Editor = Editor;\nexports.EditSession = EditSession;\nexports.UndoManager = UndoManager;\nexports.VirtualRenderer = Renderer;\nexports.version = exports.config.version;\n\n}); (function() {\n ace.require([\"ace/ace\"], function(a) {\n if (a) {\n a.config.init(true);\n a.define = ace.define;\n }\n var global = (function () {\n return this;\n })();\n if (!global && typeof window != \"undefined\") global = window; // can happen in strict mode\n if (!global && typeof self != \"undefined\") global = self; // can happen in webworker\n \n if (!global.ace)\n global.ace = a;\n for (var key in a) if (a.hasOwnProperty(key))\n global.ace[key] = a[key];\n global.ace[\"default\"] = global.ace;\n if (typeof module == \"object\" && typeof exports == \"object\" && module) {\n module.exports = global.ace;\n }\n });\n })();\n ","ace.define(\"ace/ext/beautify\",[\"require\",\"exports\",\"module\",\"ace/token_iterator\"], function(require, exports, module){// [WIP]\n\"use strict\";\nvar TokenIterator = require(\"../token_iterator\").TokenIterator;\nfunction is(token, type) {\n return token.type.lastIndexOf(type + \".xml\") > -1;\n}\nexports.singletonTags = [\"area\", \"base\", \"br\", \"col\", \"command\", \"embed\", \"hr\", \"html\", \"img\", \"input\", \"keygen\", \"link\", \"meta\", \"param\", \"source\", \"track\", \"wbr\"];\nexports.blockTags = [\"article\", \"aside\", \"blockquote\", \"body\", \"div\", \"dl\", \"fieldset\", \"footer\", \"form\", \"head\", \"header\", \"html\", \"nav\", \"ol\", \"p\", \"script\", \"section\", \"style\", \"table\", \"tbody\", \"tfoot\", \"thead\", \"ul\"];\nexports.formatOptions = {\n lineBreaksAfterCommasInCurlyBlock: true\n};\nexports.beautify = function (session) {\n var iterator = new TokenIterator(session, 0, 0);\n var token = iterator.getCurrentToken();\n var tabString = session.getTabString();\n var singletonTags = exports.singletonTags;\n var blockTags = exports.blockTags;\n var formatOptions = exports.formatOptions || {};\n var nextToken;\n var breakBefore = false;\n var spaceBefore = false;\n var spaceAfter = false;\n var code = \"\";\n var value = \"\";\n var tagName = \"\";\n var depth = 0;\n var lastDepth = 0;\n var lastIndent = 0;\n var indent = 0;\n var unindent = 0;\n var roundDepth = 0;\n var curlyDepth = 0;\n var row;\n var curRow = 0;\n var rowsToAdd = 0;\n var rowTokens = [];\n var abort = false;\n var i;\n var indentNextLine = false;\n var inTag = false;\n var inCSS = false;\n var inBlock = false;\n var levels = { 0: 0 };\n var parents = [];\n var caseBody = false;\n var trimNext = function () {\n if (nextToken && nextToken.value && nextToken.type !== 'string.regexp')\n nextToken.value = nextToken.value.replace(/^\\s*/, \"\");\n };\n var trimLine = function () {\n var end = code.length - 1;\n while (true) {\n if (end == 0)\n break;\n if (code[end] !== \" \")\n break;\n end = end - 1;\n }\n code = code.slice(0, end + 1);\n };\n var trimCode = function () {\n code = code.trimRight();\n breakBefore = false;\n };\n while (token !== null) {\n curRow = iterator.getCurrentTokenRow();\n rowTokens = iterator.$rowTokens;\n nextToken = iterator.stepForward();\n if (typeof token !== \"undefined\") {\n value = token.value;\n unindent = 0;\n inCSS = (tagName === \"style\" || session.$modeId === \"ace/mode/css\");\n if (is(token, \"tag-open\")) {\n inTag = true;\n if (nextToken)\n inBlock = (blockTags.indexOf(nextToken.value) !== -1);\n if (value === \" 0; rowsToAdd--)\n code += \"\\n\";\n breakBefore = true;\n if (!is(token, \"comment\") && !token.type.match(/^(comment|string)$/))\n value = value.trimLeft();\n }\n if (value) {\n if (token.type === \"keyword\" && value.match(/^(if|else|elseif|for|foreach|while|switch)$/)) {\n parents[depth] = value;\n trimNext();\n spaceAfter = true;\n if (value.match(/^(else|elseif)$/)) {\n if (code.match(/\\}[\\s]*$/)) {\n trimCode();\n spaceBefore = true;\n }\n }\n }\n else if (token.type === \"paren.lparen\") {\n trimNext();\n if (value.substr(-1) === \"{\") {\n spaceAfter = true;\n indentNextLine = false;\n if (!inTag)\n rowsToAdd = 1;\n }\n if (value.substr(0, 1) === \"{\") {\n spaceBefore = true;\n if (code.substr(-1) !== '[' && code.trimRight().substr(-1) === '[') {\n trimCode();\n spaceBefore = false;\n }\n else if (code.trimRight().substr(-1) === ')') {\n trimCode();\n }\n else {\n trimLine();\n }\n }\n }\n else if (token.type === \"paren.rparen\") {\n unindent = 1;\n if (value.substr(0, 1) === \"}\") {\n if (parents[depth - 1] === 'case')\n unindent++;\n if (code.trimRight().substr(-1) === '{') {\n trimCode();\n }\n else {\n spaceBefore = true;\n if (inCSS)\n rowsToAdd += 2;\n }\n }\n if (value.substr(0, 1) === \"]\") {\n if (code.substr(-1) !== '}' && code.trimRight().substr(-1) === '}') {\n spaceBefore = false;\n indent++;\n trimCode();\n }\n }\n if (value.substr(0, 1) === \")\") {\n if (code.substr(-1) !== '(' && code.trimRight().substr(-1) === '(') {\n spaceBefore = false;\n indent++;\n trimCode();\n }\n }\n trimLine();\n }\n else if ((token.type === \"keyword.operator\" || token.type === \"keyword\") && value.match(/^(=|==|===|!=|!==|&&|\\|\\||and|or|xor|\\+=|.=|>|>=|<|<=|=>)$/)) {\n trimCode();\n trimNext();\n spaceBefore = true;\n spaceAfter = true;\n }\n else if (token.type === \"punctuation.operator\" && value === ';') {\n trimCode();\n trimNext();\n spaceAfter = true;\n if (inCSS)\n rowsToAdd++;\n }\n else if (token.type === \"punctuation.operator\" && value.match(/^(:|,)$/)) {\n trimCode();\n trimNext();\n if (value.match(/^(,)$/) && curlyDepth > 0 && roundDepth === 0 && formatOptions.lineBreaksAfterCommasInCurlyBlock) {\n rowsToAdd++;\n }\n else {\n spaceAfter = true;\n breakBefore = false;\n }\n }\n else if (token.type === \"support.php_tag\" && value === \"?>\" && !breakBefore) {\n trimCode();\n spaceBefore = true;\n }\n else if (is(token, \"attribute-name\") && code.substr(-1).match(/^\\s$/)) {\n spaceBefore = true;\n }\n else if (is(token, \"attribute-equals\")) {\n trimLine();\n trimNext();\n }\n else if (is(token, \"tag-close\")) {\n trimLine();\n if (value === \"/>\")\n spaceBefore = true;\n }\n else if (token.type === \"keyword\" && value.match(/^(case|default)$/)) {\n if (caseBody)\n unindent = 1;\n }\n if (breakBefore && !(token.type.match(/^(comment)$/) && !value.substr(0, 1).match(/^[/#]$/)) && !(token.type.match(/^(string)$/) && !value.substr(0, 1).match(/^['\"@]$/))) {\n indent = lastIndent;\n if (depth > lastDepth) {\n indent++;\n for (i = depth; i > lastDepth; i--)\n levels[i] = indent;\n }\n else if (depth < lastDepth)\n indent = levels[depth];\n lastDepth = depth;\n lastIndent = indent;\n if (unindent)\n indent -= unindent;\n if (indentNextLine && !roundDepth) {\n indent++;\n indentNextLine = false;\n }\n for (i = 0; i < indent; i++)\n code += tabString;\n }\n if (token.type === \"keyword\" && value.match(/^(case|default)$/)) {\n if (caseBody === false) {\n parents[depth] = value;\n depth++;\n caseBody = true;\n }\n }\n else if (token.type === \"keyword\" && value.match(/^(break)$/)) {\n if (parents[depth - 1] && parents[depth - 1].match(/^(case|default)$/)) {\n depth--;\n caseBody = false;\n }\n }\n if (token.type === \"paren.lparen\") {\n roundDepth += (value.match(/\\(/g) || []).length;\n curlyDepth += (value.match(/\\{/g) || []).length;\n depth += value.length;\n }\n if (token.type === \"keyword\" && value.match(/^(if|else|elseif|for|while)$/)) {\n indentNextLine = true;\n roundDepth = 0;\n }\n else if (!roundDepth && value.trim() && token.type !== \"comment\")\n indentNextLine = false;\n if (token.type === \"paren.rparen\") {\n roundDepth -= (value.match(/\\)/g) || []).length;\n curlyDepth -= (value.match(/\\}/g) || []).length;\n for (i = 0; i < value.length; i++) {\n depth--;\n if (value.substr(i, 1) === '}' && parents[depth] === 'case') {\n depth--;\n }\n }\n }\n if (token.type == \"text\")\n value = value.replace(/\\s+$/, \" \");\n if (spaceBefore && !breakBefore) {\n trimLine();\n if (code.substr(-1) !== \"\\n\")\n code += \" \";\n }\n code += value;\n if (spaceAfter)\n code += \" \";\n breakBefore = false;\n spaceBefore = false;\n spaceAfter = false;\n if ((is(token, \"tag-close\") && (inBlock || blockTags.indexOf(tagName) !== -1)) || (is(token, \"doctype\") && value === \">\")) {\n if (inBlock && nextToken && nextToken.value === \"\") {\n depth--;\n }\n }\n if (is(token, \"tag-name\")) {\n tagName = value;\n }\n row = curRow;\n }\n }\n token = nextToken;\n }\n code = code.trim();\n session.doc.setValue(code);\n};\nexports.commands = [{\n name: \"beautify\",\n description: \"Format selection (Beautify)\",\n exec: function (editor) {\n exports.beautify(editor.session);\n },\n bindKey: \"Ctrl-Shift-B\"\n }];\n\n}); (function() {\n ace.require([\"ace/ext/beautify\"], function(m) {\n if (typeof module == \"object\" && typeof exports == \"object\" && module) {\n module.exports = m;\n }\n });\n })();\n ","ace.define(\"ace/ext/searchbox-css\",[\"require\",\"exports\",\"module\"], function(require, exports, module){module.exports = \"\\n\\n/* ------------------------------------------------------------------------------------------\\n * Editor Search Form\\n * --------------------------------------------------------------------------------------- */\\n.ace_search {\\n background-color: #ddd;\\n color: #666;\\n border: 1px solid #cbcbcb;\\n border-top: 0 none;\\n overflow: hidden;\\n margin: 0;\\n padding: 4px 6px 0 4px;\\n position: absolute;\\n top: 0;\\n z-index: 99;\\n white-space: normal;\\n}\\n.ace_search.left {\\n border-left: 0 none;\\n border-radius: 0px 0px 5px 0px;\\n left: 0;\\n}\\n.ace_search.right {\\n border-radius: 0px 0px 0px 5px;\\n border-right: 0 none;\\n right: 0;\\n}\\n\\n.ace_search_form, .ace_replace_form {\\n margin: 0 20px 4px 0;\\n overflow: hidden;\\n line-height: 1.9;\\n}\\n.ace_replace_form {\\n margin-right: 0;\\n}\\n.ace_search_form.ace_nomatch {\\n outline: 1px solid red;\\n}\\n\\n.ace_search_field {\\n border-radius: 3px 0 0 3px;\\n background-color: white;\\n color: black;\\n border: 1px solid #cbcbcb;\\n border-right: 0 none;\\n outline: 0;\\n padding: 0;\\n font-size: inherit;\\n margin: 0;\\n line-height: inherit;\\n padding: 0 6px;\\n min-width: 17em;\\n vertical-align: top;\\n min-height: 1.8em;\\n box-sizing: content-box;\\n}\\n.ace_searchbtn {\\n border: 1px solid #cbcbcb;\\n line-height: inherit;\\n display: inline-block;\\n padding: 0 6px;\\n background: #fff;\\n border-right: 0 none;\\n border-left: 1px solid #dcdcdc;\\n cursor: pointer;\\n margin: 0;\\n position: relative;\\n color: #666;\\n}\\n.ace_searchbtn:last-child {\\n border-radius: 0 3px 3px 0;\\n border-right: 1px solid #cbcbcb;\\n}\\n.ace_searchbtn:disabled {\\n background: none;\\n cursor: default;\\n}\\n.ace_searchbtn:hover {\\n background-color: #eef1f6;\\n}\\n.ace_searchbtn.prev, .ace_searchbtn.next {\\n padding: 0px 0.7em\\n}\\n.ace_searchbtn.prev:after, .ace_searchbtn.next:after {\\n content: \\\"\\\";\\n border: solid 2px #888;\\n width: 0.5em;\\n height: 0.5em;\\n border-width: 2px 0 0 2px;\\n display:inline-block;\\n transform: rotate(-45deg);\\n}\\n.ace_searchbtn.next:after {\\n border-width: 0 2px 2px 0 ;\\n}\\n.ace_searchbtn_close {\\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAcCAYAAABRVo5BAAAAZ0lEQVR42u2SUQrAMAhDvazn8OjZBilCkYVVxiis8H4CT0VrAJb4WHT3C5xU2a2IQZXJjiQIRMdkEoJ5Q2yMqpfDIo+XY4k6h+YXOyKqTIj5REaxloNAd0xiKmAtsTHqW8sR2W5f7gCu5nWFUpVjZwAAAABJRU5ErkJggg==) no-repeat 50% 0;\\n border-radius: 50%;\\n border: 0 none;\\n color: #656565;\\n cursor: pointer;\\n font: 16px/16px Arial;\\n padding: 0;\\n height: 14px;\\n width: 14px;\\n top: 9px;\\n right: 7px;\\n position: absolute;\\n}\\n.ace_searchbtn_close:hover {\\n background-color: #656565;\\n background-position: 50% 100%;\\n color: white;\\n}\\n\\n.ace_button {\\n margin-left: 2px;\\n cursor: pointer;\\n -webkit-user-select: none;\\n -moz-user-select: none;\\n -o-user-select: none;\\n -ms-user-select: none;\\n user-select: none;\\n overflow: hidden;\\n opacity: 0.7;\\n border: 1px solid rgba(100,100,100,0.23);\\n padding: 1px;\\n box-sizing: border-box!important;\\n color: black;\\n}\\n\\n.ace_button:hover {\\n background-color: #eee;\\n opacity:1;\\n}\\n.ace_button:active {\\n background-color: #ddd;\\n}\\n\\n.ace_button.checked {\\n border-color: #3399ff;\\n opacity:1;\\n}\\n\\n.ace_search_options{\\n margin-bottom: 3px;\\n text-align: right;\\n -webkit-user-select: none;\\n -moz-user-select: none;\\n -o-user-select: none;\\n -ms-user-select: none;\\n user-select: none;\\n clear: both;\\n}\\n\\n.ace_search_counter {\\n float: left;\\n font-family: arial;\\n padding: 0 8px;\\n}\";\n\n});\n\nace.define(\"ace/ext/searchbox\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\",\"ace/lib/lang\",\"ace/lib/event\",\"ace/ext/searchbox-css\",\"ace/keyboard/hash_handler\",\"ace/lib/keys\",\"ace/config\"], function(require, exports, module){\"use strict\";\nvar dom = require(\"../lib/dom\");\nvar lang = require(\"../lib/lang\");\nvar event = require(\"../lib/event\");\nvar searchboxCss = require(\"./searchbox-css\");\nvar HashHandler = require(\"../keyboard/hash_handler\").HashHandler;\nvar keyUtil = require(\"../lib/keys\");\nvar nls = require(\"../config\").nls;\nvar MAX_COUNT = 999;\ndom.importCssString(searchboxCss, \"ace_searchbox\", false);\nvar SearchBox = /** @class */ (function () {\n function SearchBox(editor, range, showReplaceForm) {\n var div = dom.createElement(\"div\");\n dom.buildDom([\"div\", { class: \"ace_search right\" },\n [\"span\", { action: \"hide\", class: \"ace_searchbtn_close\" }],\n [\"div\", { class: \"ace_search_form\" },\n [\"input\", { class: \"ace_search_field\", placeholder: nls(\"Search for\"), spellcheck: \"false\" }],\n [\"span\", { action: \"findPrev\", class: \"ace_searchbtn prev\" }, \"\\u200b\"],\n [\"span\", { action: \"findNext\", class: \"ace_searchbtn next\" }, \"\\u200b\"],\n [\"span\", { action: \"findAll\", class: \"ace_searchbtn\", title: \"Alt-Enter\" }, nls(\"All\")]\n ],\n [\"div\", { class: \"ace_replace_form\" },\n [\"input\", { class: \"ace_search_field\", placeholder: nls(\"Replace with\"), spellcheck: \"false\" }],\n [\"span\", { action: \"replaceAndFindNext\", class: \"ace_searchbtn\" }, nls(\"Replace\")],\n [\"span\", { action: \"replaceAll\", class: \"ace_searchbtn\" }, nls(\"All\")]\n ],\n [\"div\", { class: \"ace_search_options\" },\n [\"span\", { action: \"toggleReplace\", class: \"ace_button\", title: nls(\"Toggle Replace mode\"),\n style: \"float:left;margin-top:-2px;padding:0 5px;\" }, \"+\"],\n [\"span\", { class: \"ace_search_counter\" }],\n [\"span\", { action: \"toggleRegexpMode\", class: \"ace_button\", title: nls(\"RegExp Search\") }, \".*\"],\n [\"span\", { action: \"toggleCaseSensitive\", class: \"ace_button\", title: nls(\"CaseSensitive Search\") }, \"Aa\"],\n [\"span\", { action: \"toggleWholeWords\", class: \"ace_button\", title: nls(\"Whole Word Search\") }, \"\\\\b\"],\n [\"span\", { action: \"searchInSelection\", class: \"ace_button\", title: nls(\"Search In Selection\") }, \"S\"]\n ]\n ], div);\n this.element = div.firstChild;\n this.setSession = this.setSession.bind(this);\n this.$init();\n this.setEditor(editor);\n dom.importCssString(searchboxCss, \"ace_searchbox\", editor.container);\n }\n SearchBox.prototype.setEditor = function (editor) {\n editor.searchBox = this;\n editor.renderer.scroller.appendChild(this.element);\n this.editor = editor;\n };\n SearchBox.prototype.setSession = function (e) {\n this.searchRange = null;\n this.$syncOptions(true);\n };\n SearchBox.prototype.$initElements = function (sb) {\n this.searchBox = sb.querySelector(\".ace_search_form\");\n this.replaceBox = sb.querySelector(\".ace_replace_form\");\n this.searchOption = sb.querySelector(\"[action=searchInSelection]\");\n this.replaceOption = sb.querySelector(\"[action=toggleReplace]\");\n this.regExpOption = sb.querySelector(\"[action=toggleRegexpMode]\");\n this.caseSensitiveOption = sb.querySelector(\"[action=toggleCaseSensitive]\");\n this.wholeWordOption = sb.querySelector(\"[action=toggleWholeWords]\");\n this.searchInput = this.searchBox.querySelector(\".ace_search_field\");\n this.replaceInput = this.replaceBox.querySelector(\".ace_search_field\");\n this.searchCounter = sb.querySelector(\".ace_search_counter\");\n };\n SearchBox.prototype.$init = function () {\n var sb = this.element;\n this.$initElements(sb);\n var _this = this;\n event.addListener(sb, \"mousedown\", function (e) {\n setTimeout(function () {\n _this.activeInput.focus();\n }, 0);\n event.stopPropagation(e);\n });\n event.addListener(sb, \"click\", function (e) {\n var t = e.target || e.srcElement;\n var action = t.getAttribute(\"action\");\n if (action && _this[action])\n _this[action]();\n else if (_this.$searchBarKb.commands[action])\n _this.$searchBarKb.commands[action].exec(_this);\n event.stopPropagation(e);\n });\n event.addCommandKeyListener(sb, function (e, hashId, keyCode) {\n var keyString = keyUtil.keyCodeToString(keyCode);\n var command = _this.$searchBarKb.findKeyCommand(hashId, keyString);\n if (command && command.exec) {\n command.exec(_this);\n event.stopEvent(e);\n }\n });\n this.$onChange = lang.delayedCall(function () {\n _this.find(false, false);\n });\n event.addListener(this.searchInput, \"input\", function () {\n _this.$onChange.schedule(20);\n });\n event.addListener(this.searchInput, \"focus\", function () {\n _this.activeInput = _this.searchInput;\n _this.searchInput.value && _this.highlight();\n });\n event.addListener(this.replaceInput, \"focus\", function () {\n _this.activeInput = _this.replaceInput;\n _this.searchInput.value && _this.highlight();\n });\n };\n SearchBox.prototype.setSearchRange = function (range) {\n this.searchRange = range;\n if (range) {\n this.searchRangeMarker = this.editor.session.addMarker(range, \"ace_active-line\");\n }\n else if (this.searchRangeMarker) {\n this.editor.session.removeMarker(this.searchRangeMarker);\n this.searchRangeMarker = null;\n }\n };\n SearchBox.prototype.$syncOptions = function (preventScroll) {\n dom.setCssClass(this.replaceOption, \"checked\", this.searchRange);\n dom.setCssClass(this.searchOption, \"checked\", this.searchOption.checked);\n this.replaceOption.textContent = this.replaceOption.checked ? \"-\" : \"+\";\n dom.setCssClass(this.regExpOption, \"checked\", this.regExpOption.checked);\n dom.setCssClass(this.wholeWordOption, \"checked\", this.wholeWordOption.checked);\n dom.setCssClass(this.caseSensitiveOption, \"checked\", this.caseSensitiveOption.checked);\n var readOnly = this.editor.getReadOnly();\n this.replaceOption.style.display = readOnly ? \"none\" : \"\";\n this.replaceBox.style.display = this.replaceOption.checked && !readOnly ? \"\" : \"none\";\n this.find(false, false, preventScroll);\n };\n SearchBox.prototype.highlight = function (re) {\n this.editor.session.highlight(re || this.editor.$search.$options.re);\n this.editor.renderer.updateBackMarkers();\n };\n SearchBox.prototype.find = function (skipCurrent, backwards, preventScroll) {\n var range = this.editor.find(this.searchInput.value, {\n skipCurrent: skipCurrent,\n backwards: backwards,\n wrap: true,\n regExp: this.regExpOption.checked,\n caseSensitive: this.caseSensitiveOption.checked,\n wholeWord: this.wholeWordOption.checked,\n preventScroll: preventScroll,\n range: this.searchRange\n });\n var noMatch = !range && this.searchInput.value;\n dom.setCssClass(this.searchBox, \"ace_nomatch\", noMatch);\n this.editor._emit(\"findSearchBox\", { match: !noMatch });\n this.highlight();\n this.updateCounter();\n };\n SearchBox.prototype.updateCounter = function () {\n var editor = this.editor;\n var regex = editor.$search.$options.re;\n var supportsUnicodeFlag = regex.unicode;\n var all = 0;\n var before = 0;\n if (regex) {\n var value = this.searchRange\n ? editor.session.getTextRange(this.searchRange)\n : editor.getValue();\n var offset = editor.session.doc.positionToIndex(editor.selection.anchor);\n if (this.searchRange)\n offset -= editor.session.doc.positionToIndex(this.searchRange.start);\n var last = regex.lastIndex = 0;\n var m;\n while ((m = regex.exec(value))) {\n all++;\n last = m.index;\n if (last <= offset)\n before++;\n if (all > MAX_COUNT)\n break;\n if (!m[0]) {\n regex.lastIndex = last += lang.skipEmptyMatch(value, last, supportsUnicodeFlag);\n if (last >= value.length)\n break;\n }\n }\n }\n this.searchCounter.textContent = nls(\"$0 of $1\", [before, (all > MAX_COUNT ? MAX_COUNT + \"+\" : all)]);\n };\n SearchBox.prototype.findNext = function () {\n this.find(true, false);\n };\n SearchBox.prototype.findPrev = function () {\n this.find(true, true);\n };\n SearchBox.prototype.findAll = function () {\n var range = this.editor.findAll(this.searchInput.value, {\n regExp: this.regExpOption.checked,\n caseSensitive: this.caseSensitiveOption.checked,\n wholeWord: this.wholeWordOption.checked\n });\n var noMatch = !range && this.searchInput.value;\n dom.setCssClass(this.searchBox, \"ace_nomatch\", noMatch);\n this.editor._emit(\"findSearchBox\", { match: !noMatch });\n this.highlight();\n this.hide();\n };\n SearchBox.prototype.replace = function () {\n if (!this.editor.getReadOnly())\n this.editor.replace(this.replaceInput.value);\n };\n SearchBox.prototype.replaceAndFindNext = function () {\n if (!this.editor.getReadOnly()) {\n this.editor.replace(this.replaceInput.value);\n this.findNext();\n }\n };\n SearchBox.prototype.replaceAll = function () {\n if (!this.editor.getReadOnly())\n this.editor.replaceAll(this.replaceInput.value);\n };\n SearchBox.prototype.hide = function () {\n this.active = false;\n this.setSearchRange(null);\n this.editor.off(\"changeSession\", this.setSession);\n this.element.style.display = \"none\";\n this.editor.keyBinding.removeKeyboardHandler(this.$closeSearchBarKb);\n this.editor.focus();\n };\n SearchBox.prototype.show = function (value, isReplace) {\n this.active = true;\n this.editor.on(\"changeSession\", this.setSession);\n this.element.style.display = \"\";\n this.replaceOption.checked = isReplace;\n if (value)\n this.searchInput.value = value;\n this.searchInput.focus();\n this.searchInput.select();\n this.editor.keyBinding.addKeyboardHandler(this.$closeSearchBarKb);\n this.$syncOptions(true);\n };\n SearchBox.prototype.isFocused = function () {\n var el = document.activeElement;\n return el == this.searchInput || el == this.replaceInput;\n };\n return SearchBox;\n}());\nvar $searchBarKb = new HashHandler();\n$searchBarKb.bindKeys({\n \"Ctrl-f|Command-f\": function (sb) {\n var isReplace = sb.isReplace = !sb.isReplace;\n sb.replaceBox.style.display = isReplace ? \"\" : \"none\";\n sb.replaceOption.checked = false;\n sb.$syncOptions();\n sb.searchInput.focus();\n },\n \"Ctrl-H|Command-Option-F\": function (sb) {\n if (sb.editor.getReadOnly())\n return;\n sb.replaceOption.checked = true;\n sb.$syncOptions();\n sb.replaceInput.focus();\n },\n \"Ctrl-G|Command-G\": function (sb) {\n sb.findNext();\n },\n \"Ctrl-Shift-G|Command-Shift-G\": function (sb) {\n sb.findPrev();\n },\n \"esc\": function (sb) {\n setTimeout(function () { sb.hide(); });\n },\n \"Return\": function (sb) {\n if (sb.activeInput == sb.replaceInput)\n sb.replace();\n sb.findNext();\n },\n \"Shift-Return\": function (sb) {\n if (sb.activeInput == sb.replaceInput)\n sb.replace();\n sb.findPrev();\n },\n \"Alt-Return\": function (sb) {\n if (sb.activeInput == sb.replaceInput)\n sb.replaceAll();\n sb.findAll();\n },\n \"Tab\": function (sb) {\n (sb.activeInput == sb.replaceInput ? sb.searchInput : sb.replaceInput).focus();\n }\n});\n$searchBarKb.addCommands([{\n name: \"toggleRegexpMode\",\n bindKey: { win: \"Alt-R|Alt-/\", mac: \"Ctrl-Alt-R|Ctrl-Alt-/\" },\n exec: function (sb) {\n sb.regExpOption.checked = !sb.regExpOption.checked;\n sb.$syncOptions();\n }\n }, {\n name: \"toggleCaseSensitive\",\n bindKey: { win: \"Alt-C|Alt-I\", mac: \"Ctrl-Alt-R|Ctrl-Alt-I\" },\n exec: function (sb) {\n sb.caseSensitiveOption.checked = !sb.caseSensitiveOption.checked;\n sb.$syncOptions();\n }\n }, {\n name: \"toggleWholeWords\",\n bindKey: { win: \"Alt-B|Alt-W\", mac: \"Ctrl-Alt-B|Ctrl-Alt-W\" },\n exec: function (sb) {\n sb.wholeWordOption.checked = !sb.wholeWordOption.checked;\n sb.$syncOptions();\n }\n }, {\n name: \"toggleReplace\",\n exec: function (sb) {\n sb.replaceOption.checked = !sb.replaceOption.checked;\n sb.$syncOptions();\n }\n }, {\n name: \"searchInSelection\",\n exec: function (sb) {\n sb.searchOption.checked = !sb.searchRange;\n sb.setSearchRange(sb.searchOption.checked && sb.editor.getSelectionRange());\n sb.$syncOptions();\n }\n }]);\nvar $closeSearchBarKb = new HashHandler([{\n bindKey: \"Esc\",\n name: \"closeSearchBar\",\n exec: function (editor) {\n editor.searchBox.hide();\n }\n }]);\nSearchBox.prototype.$searchBarKb = $searchBarKb;\nSearchBox.prototype.$closeSearchBarKb = $closeSearchBarKb;\nexports.SearchBox = SearchBox;\nexports.Search = function (editor, isReplace) {\n var sb = editor.searchBox || new SearchBox(editor);\n sb.show(editor.session.getTextRange(), isReplace);\n};\n\n}); (function() {\n ace.require([\"ace/ext/searchbox\"], function(m) {\n if (typeof module == \"object\" && typeof exports == \"object\" && module) {\n module.exports = m;\n }\n });\n })();\n ","ace.define(\"ace/mode/css_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/mode/text_highlight_rules\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar lang = require(\"../lib/lang\");\nvar TextHighlightRules = require(\"./text_highlight_rules\").TextHighlightRules;\nvar supportType = exports.supportType = \"align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index\";\nvar supportFunction = exports.supportFunction = \"rgb|rgba|url|attr|counter|counters\";\nvar supportConstant = exports.supportConstant = \"absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|flex-end|flex-start|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom\";\nvar supportConstantColor = exports.supportConstantColor = \"aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|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|green|greenyellow|grey|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|magenta|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|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen\";\nvar supportConstantFonts = exports.supportConstantFonts = \"arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace\";\nvar numRe = exports.numRe = \"\\\\-?(?:(?:[0-9]+(?:\\\\.[0-9]+)?)|(?:\\\\.[0-9]+))\";\nvar pseudoElements = exports.pseudoElements = \"(\\\\:+)\\\\b(after|before|first-letter|first-line|moz-selection|selection)\\\\b\";\nvar pseudoClasses = exports.pseudoClasses = \"(:)\\\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\\\b\";\nvar CssHighlightRules = function () {\n var keywordMapper = this.createKeywordMapper({\n \"support.function\": supportFunction,\n \"support.constant\": supportConstant,\n \"support.type\": supportType,\n \"support.constant.color\": supportConstantColor,\n \"support.constant.fonts\": supportConstantFonts\n }, \"text\", true);\n this.$rules = {\n \"start\": [{\n include: [\"strings\", \"url\", \"comments\"]\n }, {\n token: \"paren.lparen\",\n regex: \"\\\\{\",\n next: \"ruleset\"\n }, {\n token: \"paren.rparen\",\n regex: \"\\\\}\"\n }, {\n token: \"string\",\n regex: \"@(?!viewport)\",\n next: \"media\"\n }, {\n token: \"keyword\",\n regex: \"#[a-z0-9-_]+\"\n }, {\n token: \"keyword\",\n regex: \"%\"\n }, {\n token: \"variable\",\n regex: \"\\\\.[a-z0-9-_]+\"\n }, {\n token: \"string\",\n regex: \":[a-z0-9-_]+\"\n }, {\n token: \"constant.numeric\",\n regex: numRe\n }, {\n token: \"constant\",\n regex: \"[a-z0-9-_]+\"\n }, {\n caseInsensitive: true\n }],\n \"media\": [{\n include: [\"strings\", \"url\", \"comments\"]\n }, {\n token: \"paren.lparen\",\n regex: \"\\\\{\",\n next: \"start\"\n }, {\n token: \"paren.rparen\",\n regex: \"\\\\}\",\n next: \"start\"\n }, {\n token: \"string\",\n regex: \";\",\n next: \"start\"\n }, {\n token: \"keyword\",\n regex: \"(?:media|supports|document|charset|import|namespace|media|supports|document\"\n + \"|page|font|keyframes|viewport|counter-style|font-feature-values\"\n + \"|swash|ornaments|annotation|stylistic|styleset|character-variant)\"\n }],\n \"comments\": [{\n token: \"comment\",\n regex: \"\\\\/\\\\*\",\n push: [{\n token: \"comment\",\n regex: \"\\\\*\\\\/\",\n next: \"pop\"\n }, {\n defaultToken: \"comment\"\n }]\n }],\n \"ruleset\": [{\n regex: \"-(webkit|ms|moz|o)-\",\n token: \"text\"\n }, {\n token: \"punctuation.operator\",\n regex: \"[:;]\"\n }, {\n token: \"paren.rparen\",\n regex: \"\\\\}\",\n next: \"start\"\n }, {\n include: [\"strings\", \"url\", \"comments\"]\n }, {\n token: [\"constant.numeric\", \"keyword\"],\n regex: \"(\" + numRe + \")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)\"\n }, {\n token: \"constant.numeric\",\n regex: numRe\n }, {\n token: \"constant.numeric\",\n regex: \"#[a-f0-9]{6}\"\n }, {\n token: \"constant.numeric\",\n regex: \"#[a-f0-9]{3}\"\n }, {\n token: [\"punctuation\", \"entity.other.attribute-name.pseudo-element.css\"],\n regex: pseudoElements\n }, {\n token: [\"punctuation\", \"entity.other.attribute-name.pseudo-class.css\"],\n regex: pseudoClasses\n }, {\n include: \"url\"\n }, {\n token: keywordMapper,\n regex: \"\\\\-?[a-zA-Z_][a-zA-Z0-9_\\\\-]*\"\n }, {\n caseInsensitive: true\n }],\n url: [{\n token: \"support.function\",\n regex: \"(?:url(:?-prefix)?|domain|regexp)\\\\(\",\n push: [{\n token: \"support.function\",\n regex: \"\\\\)\",\n next: \"pop\"\n }, {\n defaultToken: \"string\"\n }]\n }],\n strings: [{\n token: \"string.start\",\n regex: \"'\",\n push: [{\n token: \"string.end\",\n regex: \"'|$\",\n next: \"pop\"\n }, {\n include: \"escapes\"\n }, {\n token: \"constant.language.escape\",\n regex: /\\\\$/,\n consumeLineEnd: true\n }, {\n defaultToken: \"string\"\n }]\n }, {\n token: \"string.start\",\n regex: '\"',\n push: [{\n token: \"string.end\",\n regex: '\"|$',\n next: \"pop\"\n }, {\n include: \"escapes\"\n }, {\n token: \"constant.language.escape\",\n regex: /\\\\$/,\n consumeLineEnd: true\n }, {\n defaultToken: \"string\"\n }]\n }],\n escapes: [{\n token: \"constant.language.escape\",\n regex: /\\\\([a-fA-F\\d]{1,6}|[^a-fA-F\\d])/\n }]\n };\n this.normalizeRules();\n};\noop.inherits(CssHighlightRules, TextHighlightRules);\nexports.CssHighlightRules = CssHighlightRules;\n\n});\n\nace.define(\"ace/mode/matching_brace_outdent\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar Range = require(\"../range\").Range;\nvar MatchingBraceOutdent = function () { };\n(function () {\n this.checkOutdent = function (line, input) {\n if (!/^\\s+$/.test(line))\n return false;\n return /^\\s*\\}/.test(input);\n };\n this.autoOutdent = function (doc, row) {\n var line = doc.getLine(row);\n var match = line.match(/^(\\s*\\})/);\n if (!match)\n return 0;\n var column = match[1].length;\n var openBracePos = doc.findMatchingBracket({ row: row, column: column });\n if (!openBracePos || openBracePos.row == row)\n return 0;\n var indent = this.$getIndent(doc.getLine(openBracePos.row));\n doc.replace(new Range(row, 0, row, column - 1), indent);\n };\n this.$getIndent = function (line) {\n return line.match(/^\\s*/)[0];\n };\n}).call(MatchingBraceOutdent.prototype);\nexports.MatchingBraceOutdent = MatchingBraceOutdent;\n\n});\n\nace.define(\"ace/mode/css_completions\",[\"require\",\"exports\",\"module\"], function(require, exports, module){\"use strict\";\nvar propertyMap = {\n \"background\": { \"#$0\": 1 },\n \"background-color\": { \"#$0\": 1, \"transparent\": 1, \"fixed\": 1 },\n \"background-image\": { \"url('/$0')\": 1 },\n \"background-repeat\": { \"repeat\": 1, \"repeat-x\": 1, \"repeat-y\": 1, \"no-repeat\": 1, \"inherit\": 1 },\n \"background-position\": { \"bottom\": 2, \"center\": 2, \"left\": 2, \"right\": 2, \"top\": 2, \"inherit\": 2 },\n \"background-attachment\": { \"scroll\": 1, \"fixed\": 1 },\n \"background-size\": { \"cover\": 1, \"contain\": 1 },\n \"background-clip\": { \"border-box\": 1, \"padding-box\": 1, \"content-box\": 1 },\n \"background-origin\": { \"border-box\": 1, \"padding-box\": 1, \"content-box\": 1 },\n \"border\": { \"solid $0\": 1, \"dashed $0\": 1, \"dotted $0\": 1, \"#$0\": 1 },\n \"border-color\": { \"#$0\": 1 },\n \"border-style\": { \"solid\": 2, \"dashed\": 2, \"dotted\": 2, \"double\": 2, \"groove\": 2, \"hidden\": 2, \"inherit\": 2, \"inset\": 2, \"none\": 2, \"outset\": 2, \"ridged\": 2 },\n \"border-collapse\": { \"collapse\": 1, \"separate\": 1 },\n \"bottom\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"clear\": { \"left\": 1, \"right\": 1, \"both\": 1, \"none\": 1 },\n \"color\": { \"#$0\": 1, \"rgb(#$00,0,0)\": 1 },\n \"cursor\": { \"default\": 1, \"pointer\": 1, \"move\": 1, \"text\": 1, \"wait\": 1, \"help\": 1, \"progress\": 1, \"n-resize\": 1, \"ne-resize\": 1, \"e-resize\": 1, \"se-resize\": 1, \"s-resize\": 1, \"sw-resize\": 1, \"w-resize\": 1, \"nw-resize\": 1 },\n \"display\": { \"none\": 1, \"block\": 1, \"inline\": 1, \"inline-block\": 1, \"table-cell\": 1 },\n \"empty-cells\": { \"show\": 1, \"hide\": 1 },\n \"float\": { \"left\": 1, \"right\": 1, \"none\": 1 },\n \"font-family\": { \"Arial\": 2, \"Comic Sans MS\": 2, \"Consolas\": 2, \"Courier New\": 2, \"Courier\": 2, \"Georgia\": 2, \"Monospace\": 2, \"Sans-Serif\": 2, \"Segoe UI\": 2, \"Tahoma\": 2, \"Times New Roman\": 2, \"Trebuchet MS\": 2, \"Verdana\": 1 },\n \"font-size\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"font-weight\": { \"bold\": 1, \"normal\": 1 },\n \"font-style\": { \"italic\": 1, \"normal\": 1 },\n \"font-variant\": { \"normal\": 1, \"small-caps\": 1 },\n \"height\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"left\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"letter-spacing\": { \"normal\": 1 },\n \"line-height\": { \"normal\": 1 },\n \"list-style-type\": { \"none\": 1, \"disc\": 1, \"circle\": 1, \"square\": 1, \"decimal\": 1, \"decimal-leading-zero\": 1, \"lower-roman\": 1, \"upper-roman\": 1, \"lower-greek\": 1, \"lower-latin\": 1, \"upper-latin\": 1, \"georgian\": 1, \"lower-alpha\": 1, \"upper-alpha\": 1 },\n \"margin\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"margin-right\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"margin-left\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"margin-top\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"margin-bottom\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"max-height\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"max-width\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"min-height\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"min-width\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"overflow\": { \"hidden\": 1, \"visible\": 1, \"auto\": 1, \"scroll\": 1 },\n \"overflow-x\": { \"hidden\": 1, \"visible\": 1, \"auto\": 1, \"scroll\": 1 },\n \"overflow-y\": { \"hidden\": 1, \"visible\": 1, \"auto\": 1, \"scroll\": 1 },\n \"padding\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"padding-top\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"padding-right\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"padding-bottom\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"padding-left\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"page-break-after\": { \"auto\": 1, \"always\": 1, \"avoid\": 1, \"left\": 1, \"right\": 1 },\n \"page-break-before\": { \"auto\": 1, \"always\": 1, \"avoid\": 1, \"left\": 1, \"right\": 1 },\n \"position\": { \"absolute\": 1, \"relative\": 1, \"fixed\": 1, \"static\": 1 },\n \"right\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"table-layout\": { \"fixed\": 1, \"auto\": 1 },\n \"text-decoration\": { \"none\": 1, \"underline\": 1, \"line-through\": 1, \"blink\": 1 },\n \"text-align\": { \"left\": 1, \"right\": 1, \"center\": 1, \"justify\": 1 },\n \"text-transform\": { \"capitalize\": 1, \"uppercase\": 1, \"lowercase\": 1, \"none\": 1 },\n \"top\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"vertical-align\": { \"top\": 1, \"bottom\": 1 },\n \"visibility\": { \"hidden\": 1, \"visible\": 1 },\n \"white-space\": { \"nowrap\": 1, \"normal\": 1, \"pre\": 1, \"pre-line\": 1, \"pre-wrap\": 1 },\n \"width\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"word-spacing\": { \"normal\": 1 },\n \"filter\": { \"alpha(opacity=$0100)\": 1 },\n \"text-shadow\": { \"$02px 2px 2px #777\": 1 },\n \"text-overflow\": { \"ellipsis-word\": 1, \"clip\": 1, \"ellipsis\": 1 },\n \"-moz-border-radius\": 1,\n \"-moz-border-radius-topright\": 1,\n \"-moz-border-radius-bottomright\": 1,\n \"-moz-border-radius-topleft\": 1,\n \"-moz-border-radius-bottomleft\": 1,\n \"-webkit-border-radius\": 1,\n \"-webkit-border-top-right-radius\": 1,\n \"-webkit-border-top-left-radius\": 1,\n \"-webkit-border-bottom-right-radius\": 1,\n \"-webkit-border-bottom-left-radius\": 1,\n \"-moz-box-shadow\": 1,\n \"-webkit-box-shadow\": 1,\n \"transform\": { \"rotate($00deg)\": 1, \"skew($00deg)\": 1 },\n \"-moz-transform\": { \"rotate($00deg)\": 1, \"skew($00deg)\": 1 },\n \"-webkit-transform\": { \"rotate($00deg)\": 1, \"skew($00deg)\": 1 }\n};\nvar CssCompletions = function () {\n};\n(function () {\n this.completionsDefined = false;\n this.defineCompletions = function () {\n if (document) {\n var style = document.createElement('c').style;\n for (var i in style) {\n if (typeof style[i] !== 'string')\n continue;\n var name = i.replace(/[A-Z]/g, function (x) {\n return '-' + x.toLowerCase();\n });\n if (!propertyMap.hasOwnProperty(name))\n propertyMap[name] = 1;\n }\n }\n this.completionsDefined = true;\n };\n this.getCompletions = function (state, session, pos, prefix) {\n if (!this.completionsDefined) {\n this.defineCompletions();\n }\n if (state === 'ruleset' || session.$mode.$id == \"ace/mode/scss\") {\n var line = session.getLine(pos.row).substr(0, pos.column);\n var inParens = /\\([^)]*$/.test(line);\n if (inParens) {\n line = line.substr(line.lastIndexOf('(') + 1);\n }\n if (/:[^;]+$/.test(line)) {\n /([\\w\\-]+):[^:]*$/.test(line);\n return this.getPropertyValueCompletions(state, session, pos, prefix);\n }\n else {\n return this.getPropertyCompletions(state, session, pos, prefix, inParens);\n }\n }\n return [];\n };\n this.getPropertyCompletions = function (state, session, pos, prefix, skipSemicolon) {\n skipSemicolon = skipSemicolon || false;\n var properties = Object.keys(propertyMap);\n return properties.map(function (property) {\n return {\n caption: property,\n snippet: property + ': $0' + (skipSemicolon ? '' : ';'),\n meta: \"property\",\n score: 1000000\n };\n });\n };\n this.getPropertyValueCompletions = function (state, session, pos, prefix) {\n var line = session.getLine(pos.row).substr(0, pos.column);\n var property = (/([\\w\\-]+):[^:]*$/.exec(line) || {})[1];\n if (!property)\n return [];\n var values = [];\n if (property in propertyMap && typeof propertyMap[property] === \"object\") {\n values = Object.keys(propertyMap[property]);\n }\n return values.map(function (value) {\n return {\n caption: value,\n snippet: value,\n meta: \"property value\",\n score: 1000000\n };\n });\n };\n}).call(CssCompletions.prototype);\nexports.CssCompletions = CssCompletions;\n\n});\n\nace.define(\"ace/mode/behaviour/css\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/behaviour\",\"ace/mode/behaviour/cstyle\",\"ace/token_iterator\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../../lib/oop\");\nvar Behaviour = require(\"../behaviour\").Behaviour;\nvar CstyleBehaviour = require(\"./cstyle\").CstyleBehaviour;\nvar TokenIterator = require(\"../../token_iterator\").TokenIterator;\nvar CssBehaviour = function () {\n this.inherit(CstyleBehaviour);\n this.add(\"colon\", \"insertion\", function (state, action, editor, session, text) {\n if (text === ':' && editor.selection.isEmpty()) {\n var cursor = editor.getCursorPosition();\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n var token = iterator.getCurrentToken();\n if (token && token.value.match(/\\s+/)) {\n token = iterator.stepBackward();\n }\n if (token && token.type === 'support.type') {\n var line = session.doc.getLine(cursor.row);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n if (rightChar === ':') {\n return {\n text: '',\n selection: [1, 1]\n };\n }\n if (/^(\\s+[^;]|\\s*$)/.test(line.substring(cursor.column))) {\n return {\n text: ':;',\n selection: [1, 1]\n };\n }\n }\n }\n });\n this.add(\"colon\", \"deletion\", function (state, action, editor, session, range) {\n var selected = session.doc.getTextRange(range);\n if (!range.isMultiLine() && selected === ':') {\n var cursor = editor.getCursorPosition();\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n var token = iterator.getCurrentToken();\n if (token && token.value.match(/\\s+/)) {\n token = iterator.stepBackward();\n }\n if (token && token.type === 'support.type') {\n var line = session.doc.getLine(range.start.row);\n var rightChar = line.substring(range.end.column, range.end.column + 1);\n if (rightChar === ';') {\n range.end.column++;\n return range;\n }\n }\n }\n });\n this.add(\"semicolon\", \"insertion\", function (state, action, editor, session, text) {\n if (text === ';' && editor.selection.isEmpty()) {\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n if (rightChar === ';') {\n return {\n text: '',\n selection: [1, 1]\n };\n }\n }\n });\n this.add(\"!important\", \"insertion\", function (state, action, editor, session, text) {\n if (text === '!' && editor.selection.isEmpty()) {\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n if (/^\\s*(;|}|$)/.test(line.substring(cursor.column))) {\n return {\n text: '!important',\n selection: [10, 10]\n };\n }\n }\n });\n};\noop.inherits(CssBehaviour, CstyleBehaviour);\nexports.CssBehaviour = CssBehaviour;\n\n});\n\nace.define(\"ace/mode/folding/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/range\",\"ace/mode/folding/fold_mode\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../../lib/oop\");\nvar Range = require(\"../../range\").Range;\nvar BaseFoldMode = require(\"./fold_mode\").FoldMode;\nvar FoldMode = exports.FoldMode = function (commentRegex) {\n if (commentRegex) {\n this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.start));\n this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.end));\n }\n};\noop.inherits(FoldMode, BaseFoldMode);\n(function () {\n this.foldingStartMarker = /([\\{\\[\\(])[^\\}\\]\\)]*$|^\\s*(\\/\\*)/;\n this.foldingStopMarker = /^[^\\[\\{\\(]*([\\}\\]\\)])|^[\\s\\*]*(\\*\\/)/;\n this.singleLineBlockCommentRe = /^\\s*(\\/\\*).*\\*\\/\\s*$/;\n this.tripleStarBlockCommentRe = /^\\s*(\\/\\*\\*\\*).*\\*\\/\\s*$/;\n this.startRegionRe = /^\\s*(\\/\\*|\\/\\/)#?region\\b/;\n this._getFoldWidgetBase = this.getFoldWidget;\n this.getFoldWidget = function (session, foldStyle, row) {\n var line = session.getLine(row);\n if (this.singleLineBlockCommentRe.test(line)) {\n if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line))\n return \"\";\n }\n var fw = this._getFoldWidgetBase(session, foldStyle, row);\n if (!fw && this.startRegionRe.test(line))\n return \"start\"; // lineCommentRegionStart\n return fw;\n };\n this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) {\n var line = session.getLine(row);\n if (this.startRegionRe.test(line))\n return this.getCommentRegionBlock(session, line, row);\n var match = line.match(this.foldingStartMarker);\n if (match) {\n var i = match.index;\n if (match[1])\n return this.openingBracketBlock(session, match[1], row, i);\n var range = session.getCommentFoldRange(row, i + match[0].length, 1);\n if (range && !range.isMultiLine()) {\n if (forceMultiline) {\n range = this.getSectionRange(session, row);\n }\n else if (foldStyle != \"all\")\n range = null;\n }\n return range;\n }\n if (foldStyle === \"markbegin\")\n return;\n var match = line.match(this.foldingStopMarker);\n if (match) {\n var i = match.index + match[0].length;\n if (match[1])\n return this.closingBracketBlock(session, match[1], row, i);\n return session.getCommentFoldRange(row, i, -1);\n }\n };\n this.getSectionRange = function (session, row) {\n var line = session.getLine(row);\n var startIndent = line.search(/\\S/);\n var startRow = row;\n var startColumn = line.length;\n row = row + 1;\n var endRow = row;\n var maxRow = session.getLength();\n while (++row < maxRow) {\n line = session.getLine(row);\n var indent = line.search(/\\S/);\n if (indent === -1)\n continue;\n if (startIndent > indent)\n break;\n var subRange = this.getFoldWidgetRange(session, \"all\", row);\n if (subRange) {\n if (subRange.start.row <= startRow) {\n break;\n }\n else if (subRange.isMultiLine()) {\n row = subRange.end.row;\n }\n else if (startIndent == indent) {\n break;\n }\n }\n endRow = row;\n }\n return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);\n };\n this.getCommentRegionBlock = function (session, line, row) {\n var startColumn = line.search(/\\s*$/);\n var maxRow = session.getLength();\n var startRow = row;\n var re = /^\\s*(?:\\/\\*|\\/\\/|--)#?(end)?region\\b/;\n var depth = 1;\n while (++row < maxRow) {\n line = session.getLine(row);\n var m = re.exec(line);\n if (!m)\n continue;\n if (m[1])\n depth--;\n else\n depth++;\n if (!depth)\n break;\n }\n var endRow = row;\n if (endRow > startRow) {\n return new Range(startRow, startColumn, endRow, line.length);\n }\n };\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/css\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/css_highlight_rules\",\"ace/mode/matching_brace_outdent\",\"ace/worker/worker_client\",\"ace/mode/css_completions\",\"ace/mode/behaviour/css\",\"ace/mode/folding/cstyle\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar TextMode = require(\"./text\").Mode;\nvar CssHighlightRules = require(\"./css_highlight_rules\").CssHighlightRules;\nvar MatchingBraceOutdent = require(\"./matching_brace_outdent\").MatchingBraceOutdent;\nvar WorkerClient = require(\"../worker/worker_client\").WorkerClient;\nvar CssCompletions = require(\"./css_completions\").CssCompletions;\nvar CssBehaviour = require(\"./behaviour/css\").CssBehaviour;\nvar CStyleFoldMode = require(\"./folding/cstyle\").FoldMode;\nvar Mode = function () {\n this.HighlightRules = CssHighlightRules;\n this.$outdent = new MatchingBraceOutdent();\n this.$behaviour = new CssBehaviour();\n this.$completer = new CssCompletions();\n this.foldingRules = new CStyleFoldMode();\n};\noop.inherits(Mode, TextMode);\n(function () {\n this.foldingRules = \"cStyle\";\n this.blockComment = { start: \"/*\", end: \"*/\" };\n this.getNextLineIndent = function (state, line, tab) {\n var indent = this.$getIndent(line);\n var tokens = this.getTokenizer().getLineTokens(line, state).tokens;\n if (tokens.length && tokens[tokens.length - 1].type == \"comment\") {\n return indent;\n }\n var match = line.match(/^.*\\{\\s*$/);\n if (match) {\n indent += tab;\n }\n return indent;\n };\n this.checkOutdent = function (state, line, input) {\n return this.$outdent.checkOutdent(line, input);\n };\n this.autoOutdent = function (state, doc, row) {\n this.$outdent.autoOutdent(doc, row);\n };\n this.getCompletions = function (state, session, pos, prefix) {\n return this.$completer.getCompletions(state, session, pos, prefix);\n };\n this.createWorker = function (session) {\n var worker = new WorkerClient([\"ace\"], \"ace/mode/css_worker\", \"Worker\");\n worker.attachToDocument(session.getDocument());\n worker.on(\"annotate\", function (e) {\n session.setAnnotations(e.data);\n });\n worker.on(\"terminate\", function () {\n session.clearAnnotations();\n });\n return worker;\n };\n this.$id = \"ace/mode/css\";\n this.snippetFileId = \"ace/snippets/css\";\n}).call(Mode.prototype);\nexports.Mode = Mode;\n\n}); (function() {\n ace.require([\"ace/mode/css\"], function(m) {\n if (typeof module == \"object\" && typeof exports == \"object\" && module) {\n module.exports = m;\n }\n });\n })();\n ","ace.define(\"ace/mode/doc_comment_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar TextHighlightRules = require(\"./text_highlight_rules\").TextHighlightRules;\nvar DocCommentHighlightRules = function () {\n this.$rules = {\n \"start\": [\n {\n token: \"comment.doc.tag\",\n regex: \"@\\\\w+(?=\\\\s|$)\"\n }, DocCommentHighlightRules.getTagRule(), {\n defaultToken: \"comment.doc\",\n caseInsensitive: true\n }\n ]\n };\n};\noop.inherits(DocCommentHighlightRules, TextHighlightRules);\nDocCommentHighlightRules.getTagRule = function (start) {\n return {\n token: \"comment.doc.tag.storage.type\",\n regex: \"\\\\b(?:TODO|FIXME|XXX|HACK)\\\\b\"\n };\n};\nDocCommentHighlightRules.getStartRule = function (start) {\n return {\n token: \"comment.doc\",\n regex: \"\\\\/\\\\*(?=\\\\*)\",\n next: start\n };\n};\nDocCommentHighlightRules.getEndRule = function (start) {\n return {\n token: \"comment.doc\",\n regex: \"\\\\*\\\\/\",\n next: start\n };\n};\nexports.DocCommentHighlightRules = DocCommentHighlightRules;\n\n});\n\nace.define(\"ace/mode/golang_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/doc_comment_highlight_rules\",\"ace/mode/text_highlight_rules\"], function(require, exports, module){var oop = require(\"../lib/oop\");\nvar DocCommentHighlightRules = require(\"./doc_comment_highlight_rules\").DocCommentHighlightRules;\nvar TextHighlightRules = require(\"./text_highlight_rules\").TextHighlightRules;\nvar GolangHighlightRules = function () {\n var keywords = (\"else|break|case|return|goto|if|const|select|\" +\n \"continue|struct|default|switch|for|range|\" +\n \"func|import|package|chan|defer|fallthrough|go|interface|map|range|\" +\n \"select|type|var\");\n var builtinTypes = (\"string|uint8|uint16|uint32|uint64|int8|int16|int32|int64|float32|\" +\n \"float64|complex64|complex128|byte|rune|uint|int|uintptr|bool|error\");\n var builtinFunctions = (\"new|close|cap|copy|panic|panicln|print|println|len|make|delete|real|recover|imag|append\");\n var builtinConstants = (\"nil|true|false|iota\");\n var keywordMapper = this.createKeywordMapper({\n \"keyword\": keywords,\n \"constant.language\": builtinConstants,\n \"support.function\": builtinFunctions,\n \"support.type\": builtinTypes\n }, \"\");\n var stringEscapeRe = \"\\\\\\\\(?:[0-7]{3}|x\\\\h{2}|u{4}|U\\\\h{6}|[abfnrtv'\\\"\\\\\\\\])\".replace(/\\\\h/g, \"[a-fA-F\\\\d]\");\n this.$rules = {\n \"start\": [\n {\n token: \"comment\",\n regex: \"\\\\/\\\\/.*$\"\n },\n DocCommentHighlightRules.getStartRule(\"doc-start\"),\n {\n token: \"comment.start\",\n regex: \"\\\\/\\\\*\",\n next: \"comment\"\n }, {\n token: \"string\",\n regex: /\"(?:[^\"\\\\]|\\\\.)*?\"/\n }, {\n token: \"string\",\n regex: '`',\n next: \"bqstring\"\n }, {\n token: \"constant.numeric\",\n regex: \"'(?:[^\\\\'\\uD800-\\uDBFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|\" + stringEscapeRe.replace('\"', '') + \")'\"\n }, {\n token: \"constant.numeric\",\n regex: \"0[xX][0-9a-fA-F]+\\\\b\"\n }, {\n token: \"constant.numeric\",\n regex: \"[+-]?\\\\d+(?:(?:\\\\.\\\\d*)?(?:[eE][+-]?\\\\d+)?)?\\\\b\"\n }, {\n token: [\"keyword\", \"text\", \"entity.name.function\"],\n regex: \"(func)(\\\\s+)([a-zA-Z_$][a-zA-Z0-9_$]*)\\\\b\"\n }, {\n token: function (val) {\n if (val[val.length - 1] == \"(\") {\n return [{\n type: keywordMapper(val.slice(0, -1)) || \"support.function\",\n value: val.slice(0, -1)\n }, {\n type: \"paren.lparen\",\n value: val.slice(-1)\n }];\n }\n return keywordMapper(val) || \"identifier\";\n },\n regex: \"[a-zA-Z_$][a-zA-Z0-9_$]*\\\\b\\\\(?\"\n }, {\n token: \"keyword.operator\",\n regex: \"!|\\\\$|%|&|\\\\*|\\\\-\\\\-|\\\\-|\\\\+\\\\+|\\\\+|~|==|=|!=|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\\\|\\\\||\\\\?\\\\:|\\\\*=|%=|\\\\+=|\\\\-=|&=|\\\\^=\"\n }, {\n token: \"punctuation.operator\",\n regex: \"\\\\?|\\\\:|\\\\,|\\\\;|\\\\.\"\n }, {\n token: \"paren.lparen\",\n regex: \"[[({]\"\n }, {\n token: \"paren.rparen\",\n regex: \"[\\\\])}]\"\n }, {\n token: \"text\",\n regex: \"\\\\s+\"\n }\n ],\n \"comment\": [\n {\n token: \"comment.end\",\n regex: \"\\\\*\\\\/\",\n next: \"start\"\n }, {\n defaultToken: \"comment\"\n }\n ],\n \"bqstring\": [\n {\n token: \"string\",\n regex: '`',\n next: \"start\"\n }, {\n defaultToken: \"string\"\n }\n ]\n };\n this.embedRules(DocCommentHighlightRules, \"doc-\", [DocCommentHighlightRules.getEndRule(\"start\")]);\n};\noop.inherits(GolangHighlightRules, TextHighlightRules);\nexports.GolangHighlightRules = GolangHighlightRules;\n\n});\n\nace.define(\"ace/mode/matching_brace_outdent\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar Range = require(\"../range\").Range;\nvar MatchingBraceOutdent = function () { };\n(function () {\n this.checkOutdent = function (line, input) {\n if (!/^\\s+$/.test(line))\n return false;\n return /^\\s*\\}/.test(input);\n };\n this.autoOutdent = function (doc, row) {\n var line = doc.getLine(row);\n var match = line.match(/^(\\s*\\})/);\n if (!match)\n return 0;\n var column = match[1].length;\n var openBracePos = doc.findMatchingBracket({ row: row, column: column });\n if (!openBracePos || openBracePos.row == row)\n return 0;\n var indent = this.$getIndent(doc.getLine(openBracePos.row));\n doc.replace(new Range(row, 0, row, column - 1), indent);\n };\n this.$getIndent = function (line) {\n return line.match(/^\\s*/)[0];\n };\n}).call(MatchingBraceOutdent.prototype);\nexports.MatchingBraceOutdent = MatchingBraceOutdent;\n\n});\n\nace.define(\"ace/mode/folding/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/range\",\"ace/mode/folding/fold_mode\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../../lib/oop\");\nvar Range = require(\"../../range\").Range;\nvar BaseFoldMode = require(\"./fold_mode\").FoldMode;\nvar FoldMode = exports.FoldMode = function (commentRegex) {\n if (commentRegex) {\n this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.start));\n this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.end));\n }\n};\noop.inherits(FoldMode, BaseFoldMode);\n(function () {\n this.foldingStartMarker = /([\\{\\[\\(])[^\\}\\]\\)]*$|^\\s*(\\/\\*)/;\n this.foldingStopMarker = /^[^\\[\\{\\(]*([\\}\\]\\)])|^[\\s\\*]*(\\*\\/)/;\n this.singleLineBlockCommentRe = /^\\s*(\\/\\*).*\\*\\/\\s*$/;\n this.tripleStarBlockCommentRe = /^\\s*(\\/\\*\\*\\*).*\\*\\/\\s*$/;\n this.startRegionRe = /^\\s*(\\/\\*|\\/\\/)#?region\\b/;\n this._getFoldWidgetBase = this.getFoldWidget;\n this.getFoldWidget = function (session, foldStyle, row) {\n var line = session.getLine(row);\n if (this.singleLineBlockCommentRe.test(line)) {\n if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line))\n return \"\";\n }\n var fw = this._getFoldWidgetBase(session, foldStyle, row);\n if (!fw && this.startRegionRe.test(line))\n return \"start\"; // lineCommentRegionStart\n return fw;\n };\n this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) {\n var line = session.getLine(row);\n if (this.startRegionRe.test(line))\n return this.getCommentRegionBlock(session, line, row);\n var match = line.match(this.foldingStartMarker);\n if (match) {\n var i = match.index;\n if (match[1])\n return this.openingBracketBlock(session, match[1], row, i);\n var range = session.getCommentFoldRange(row, i + match[0].length, 1);\n if (range && !range.isMultiLine()) {\n if (forceMultiline) {\n range = this.getSectionRange(session, row);\n }\n else if (foldStyle != \"all\")\n range = null;\n }\n return range;\n }\n if (foldStyle === \"markbegin\")\n return;\n var match = line.match(this.foldingStopMarker);\n if (match) {\n var i = match.index + match[0].length;\n if (match[1])\n return this.closingBracketBlock(session, match[1], row, i);\n return session.getCommentFoldRange(row, i, -1);\n }\n };\n this.getSectionRange = function (session, row) {\n var line = session.getLine(row);\n var startIndent = line.search(/\\S/);\n var startRow = row;\n var startColumn = line.length;\n row = row + 1;\n var endRow = row;\n var maxRow = session.getLength();\n while (++row < maxRow) {\n line = session.getLine(row);\n var indent = line.search(/\\S/);\n if (indent === -1)\n continue;\n if (startIndent > indent)\n break;\n var subRange = this.getFoldWidgetRange(session, \"all\", row);\n if (subRange) {\n if (subRange.start.row <= startRow) {\n break;\n }\n else if (subRange.isMultiLine()) {\n row = subRange.end.row;\n }\n else if (startIndent == indent) {\n break;\n }\n }\n endRow = row;\n }\n return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);\n };\n this.getCommentRegionBlock = function (session, line, row) {\n var startColumn = line.search(/\\s*$/);\n var maxRow = session.getLength();\n var startRow = row;\n var re = /^\\s*(?:\\/\\*|\\/\\/|--)#?(end)?region\\b/;\n var depth = 1;\n while (++row < maxRow) {\n line = session.getLine(row);\n var m = re.exec(line);\n if (!m)\n continue;\n if (m[1])\n depth--;\n else\n depth++;\n if (!depth)\n break;\n }\n var endRow = row;\n if (endRow > startRow) {\n return new Range(startRow, startColumn, endRow, line.length);\n }\n };\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/golang\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/golang_highlight_rules\",\"ace/mode/matching_brace_outdent\",\"ace/mode/folding/cstyle\"], function(require, exports, module){var oop = require(\"../lib/oop\");\nvar TextMode = require(\"./text\").Mode;\nvar GolangHighlightRules = require(\"./golang_highlight_rules\").GolangHighlightRules;\nvar MatchingBraceOutdent = require(\"./matching_brace_outdent\").MatchingBraceOutdent;\nvar CStyleFoldMode = require(\"./folding/cstyle\").FoldMode;\nvar Mode = function () {\n this.HighlightRules = GolangHighlightRules;\n this.$outdent = new MatchingBraceOutdent();\n this.foldingRules = new CStyleFoldMode();\n this.$behaviour = this.$defaultBehaviour;\n};\noop.inherits(Mode, TextMode);\n(function () {\n this.lineCommentStart = \"//\";\n this.blockComment = { start: \"/*\", end: \"*/\" };\n this.getNextLineIndent = function (state, line, tab) {\n var indent = this.$getIndent(line);\n var tokenizedLine = this.getTokenizer().getLineTokens(line, state);\n var tokens = tokenizedLine.tokens;\n var endState = tokenizedLine.state;\n if (tokens.length && tokens[tokens.length - 1].type == \"comment\") {\n return indent;\n }\n if (state == \"start\") {\n var match = line.match(/^.*[\\{\\(\\[]\\s*$/);\n if (match) {\n indent += tab;\n }\n }\n return indent;\n }; //end getNextLineIndent\n this.checkOutdent = function (state, line, input) {\n return this.$outdent.checkOutdent(line, input);\n };\n this.autoOutdent = function (state, doc, row) {\n this.$outdent.autoOutdent(doc, row);\n };\n this.$id = \"ace/mode/golang\";\n}).call(Mode.prototype);\nexports.Mode = Mode;\n\n}); (function() {\n ace.require([\"ace/mode/golang\"], function(m) {\n if (typeof module == \"object\" && typeof exports == \"object\" && module) {\n module.exports = m;\n }\n });\n })();\n ","ace.define(\"ace/mode/jsdoc_comment_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar TextHighlightRules = require(\"./text_highlight_rules\").TextHighlightRules;\nvar JsDocCommentHighlightRules = function () {\n this.$rules = {\n \"start\": [\n {\n token: [\"comment.doc.tag\", \"comment.doc.text\", \"lparen.doc\"],\n regex: \"(@(?:param|member|typedef|property|namespace|var|const|callback))(\\\\s*)({)\",\n push: [\n {\n token: \"lparen.doc\",\n regex: \"{\",\n push: [\n {\n include: \"doc-syntax\"\n }, {\n token: \"rparen.doc\",\n regex: \"}|(?=$)\",\n next: \"pop\"\n }\n ]\n }, {\n token: [\"rparen.doc\", \"text.doc\", \"variable.parameter.doc\", \"lparen.doc\", \"variable.parameter.doc\", \"rparen.doc\"],\n regex: /(})(\\s*)(?:([\\w=:\\/\\.]+)|(?:(\\[)([\\w=:\\/\\.]+)(\\])))/,\n next: \"pop\"\n }, {\n token: \"rparen.doc\",\n regex: \"}|(?=$)\",\n next: \"pop\"\n }, {\n include: \"doc-syntax\"\n }, {\n defaultToken: \"text.doc\"\n }\n ]\n }, {\n token: [\"comment.doc.tag\", \"text.doc\", \"lparen.doc\"],\n regex: \"(@(?:returns?|yields|type|this|suppress|public|protected|private|package|modifies|\"\n + \"implements|external|exception|throws|enum|define|extends))(\\\\s*)({)\",\n push: [\n {\n token: \"lparen.doc\",\n regex: \"{\",\n push: [\n {\n include: \"doc-syntax\"\n }, {\n token: \"rparen.doc\",\n regex: \"}|(?=$)\",\n next: \"pop\"\n }\n ]\n }, {\n token: \"rparen.doc\",\n regex: \"}|(?=$)\",\n next: \"pop\"\n }, {\n include: \"doc-syntax\"\n }, {\n defaultToken: \"text.doc\"\n }\n ]\n }, {\n token: [\"comment.doc.tag\", \"text.doc\", \"variable.parameter.doc\"],\n regex: \"(@(?:alias|memberof|instance|module|name|lends|namespace|external|this|template|\"\n + \"requires|param|implements|function|extends|typedef|mixes|constructor|var|\"\n + \"memberof\\\\!|event|listens|exports|class|constructs|interface|emits|fires|\"\n + \"throws|const|callback|borrows|augments))(\\\\s+)(\\\\w[\\\\w#\\.:\\/~\\\"\\\\-]*)?\"\n }, {\n token: [\"comment.doc.tag\", \"text.doc\", \"variable.parameter.doc\"],\n regex: \"(@method)(\\\\s+)(\\\\w[\\\\w\\.\\\\(\\\\)]*)\"\n }, {\n token: \"comment.doc.tag\",\n regex: \"@access\\\\s+(?:private|public|protected)\"\n }, {\n token: \"comment.doc.tag\",\n regex: \"@kind\\\\s+(?:class|constant|event|external|file|function|member|mixin|module|namespace|typedef)\"\n }, {\n token: \"comment.doc.tag\",\n regex: \"@\\\\w+(?=\\\\s|$)\"\n },\n JsDocCommentHighlightRules.getTagRule(),\n {\n defaultToken: \"comment.doc\",\n caseInsensitive: true\n }\n ],\n \"doc-syntax\": [{\n token: \"operator.doc\",\n regex: /[|:]/\n }, {\n token: \"paren.doc\",\n regex: /[\\[\\]]/\n }]\n };\n this.normalizeRules();\n};\noop.inherits(JsDocCommentHighlightRules, TextHighlightRules);\nJsDocCommentHighlightRules.getTagRule = function (start) {\n return {\n token: \"comment.doc.tag.storage.type\",\n regex: \"\\\\b(?:TODO|FIXME|XXX|HACK)\\\\b\"\n };\n};\nJsDocCommentHighlightRules.getStartRule = function (start) {\n return {\n token: \"comment.doc\",\n regex: \"\\\\/\\\\*(?=\\\\*)\",\n next: start\n };\n};\nJsDocCommentHighlightRules.getEndRule = function (start) {\n return {\n token: \"comment.doc\",\n regex: \"\\\\*\\\\/\",\n next: start\n };\n};\nexports.JsDocCommentHighlightRules = JsDocCommentHighlightRules;\n\n});\n\nace.define(\"ace/mode/javascript_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/jsdoc_comment_highlight_rules\",\"ace/mode/text_highlight_rules\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar DocCommentHighlightRules = require(\"./jsdoc_comment_highlight_rules\").JsDocCommentHighlightRules;\nvar TextHighlightRules = require(\"./text_highlight_rules\").TextHighlightRules;\nvar identifierRe = \"[a-zA-Z\\\\$_\\u00a1-\\uffff][a-zA-Z\\\\d\\\\$_\\u00a1-\\uffff]*\";\nvar JavaScriptHighlightRules = function (options) {\n var keywordMapper = this.createKeywordMapper({\n \"variable.language\": \"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Symbol|\" + // Constructors\n \"Namespace|QName|XML|XMLList|\" + // E4X\n \"ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|\" +\n \"Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|\" +\n \"Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|\" + // Errors\n \"SyntaxError|TypeError|URIError|\" +\n \"decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|\" + // Non-constructor functions\n \"isNaN|parseFloat|parseInt|\" +\n \"JSON|Math|\" + // Other\n \"this|arguments|prototype|window|document\",\n \"keyword\": \"const|yield|import|get|set|async|await|\" +\n \"break|case|catch|continue|default|delete|do|else|finally|for|function|\" +\n \"if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|\" +\n \"__parent__|__count__|escape|unescape|with|__proto__|\" +\n \"class|enum|extends|super|export|implements|private|public|interface|package|protected|static|constructor\",\n \"storage.type\": \"const|let|var|function\",\n \"constant.language\": \"null|Infinity|NaN|undefined\",\n \"support.function\": \"alert\",\n \"constant.language.boolean\": \"true|false\"\n }, \"identifier\");\n var kwBeforeRe = \"case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void\";\n var escapedRe = \"\\\\\\\\(?:x[0-9a-fA-F]{2}|\" + // hex\n \"u[0-9a-fA-F]{4}|\" + // unicode\n \"u{[0-9a-fA-F]{1,6}}|\" + // es6 unicode\n \"[0-2][0-7]{0,2}|\" + // oct\n \"3[0-7][0-7]?|\" + // oct\n \"[4-7][0-7]?|\" + //oct\n \".)\";\n this.$rules = {\n \"no_regex\": [\n DocCommentHighlightRules.getStartRule(\"doc-start\"),\n comments(\"no_regex\"),\n {\n token: \"string\",\n regex: \"'(?=.)\",\n next: \"qstring\"\n }, {\n token: \"string\",\n regex: '\"(?=.)',\n next: \"qqstring\"\n }, {\n token: \"constant.numeric\",\n regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\\b/\n }, {\n token: \"constant.numeric\",\n regex: /(?:\\d\\d*(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+\\b)?/\n }, {\n token: [\n \"storage.type\", \"punctuation.operator\", \"support.function\",\n \"punctuation.operator\", \"entity.name.function\", \"text\", \"keyword.operator\"\n ],\n regex: \"(\" + identifierRe + \")(\\\\.)(prototype)(\\\\.)(\" + identifierRe + \")(\\\\s*)(=)\",\n next: \"function_arguments\"\n }, {\n token: [\n \"storage.type\", \"punctuation.operator\", \"entity.name.function\", \"text\",\n \"keyword.operator\", \"text\", \"storage.type\", \"text\", \"paren.lparen\"\n ],\n regex: \"(\" + identifierRe + \")(\\\\.)(\" + identifierRe + \")(\\\\s*)(=)(\\\\s*)(function\\\\*?)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token: [\n \"entity.name.function\", \"text\", \"keyword.operator\", \"text\", \"storage.type\",\n \"text\", \"paren.lparen\"\n ],\n regex: \"(\" + identifierRe + \")(\\\\s*)(=)(\\\\s*)(function\\\\*?)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token: [\n \"storage.type\", \"punctuation.operator\", \"entity.name.function\", \"text\",\n \"keyword.operator\", \"text\",\n \"storage.type\", \"text\", \"entity.name.function\", \"text\", \"paren.lparen\"\n ],\n regex: \"(\" + identifierRe + \")(\\\\.)(\" + identifierRe + \")(\\\\s*)(=)(\\\\s*)(function\\\\*?)(\\\\s+)(\\\\w+)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token: [\n \"storage.type\", \"text\", \"entity.name.function\", \"text\", \"paren.lparen\"\n ],\n regex: \"(function\\\\*?)(\\\\s+)(\" + identifierRe + \")(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token: [\n \"entity.name.function\", \"text\", \"punctuation.operator\",\n \"text\", \"storage.type\", \"text\", \"paren.lparen\"\n ],\n regex: \"(\" + identifierRe + \")(\\\\s*)(:)(\\\\s*)(function\\\\*?)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token: [\n \"text\", \"text\", \"storage.type\", \"text\", \"paren.lparen\"\n ],\n regex: \"(:)(\\\\s*)(function\\\\*?)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token: \"keyword\",\n regex: \"from(?=\\\\s*('|\\\"))\"\n }, {\n token: \"keyword\",\n regex: \"(?:\" + kwBeforeRe + \")\\\\b\",\n next: \"start\"\n }, {\n token: \"support.constant\",\n regex: /that\\b/\n }, {\n token: [\"storage.type\", \"punctuation.operator\", \"support.function.firebug\"],\n regex: /(console)(\\.)(warn|info|log|error|time|trace|timeEnd|assert)\\b/\n }, {\n token: keywordMapper,\n regex: identifierRe\n }, {\n token: \"punctuation.operator\",\n regex: /[.](?![.])/,\n next: \"property\"\n }, {\n token: \"storage.type\",\n regex: /=>/,\n next: \"start\"\n }, {\n token: \"keyword.operator\",\n regex: /--|\\+\\+|\\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\\|\\||\\?:|[!$%&*+\\-~\\/^]=?/,\n next: \"start\"\n }, {\n token: \"punctuation.operator\",\n regex: /[?:,;.]/,\n next: \"start\"\n }, {\n token: \"paren.lparen\",\n regex: /[\\[({]/,\n next: \"start\"\n }, {\n token: \"paren.rparen\",\n regex: /[\\])}]/\n }, {\n token: \"comment\",\n regex: /^#!.*$/\n }\n ],\n property: [{\n token: \"text\",\n regex: \"\\\\s+\"\n }, {\n token: [\n \"storage.type\", \"punctuation.operator\", \"entity.name.function\", \"text\",\n \"keyword.operator\", \"text\",\n \"storage.type\", \"text\", \"entity.name.function\", \"text\", \"paren.lparen\"\n ],\n regex: \"(\" + identifierRe + \")(\\\\.)(\" + identifierRe + \")(\\\\s*)(=)(\\\\s*)(function\\\\*?)(?:(\\\\s+)(\\\\w+))?(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token: \"punctuation.operator\",\n regex: /[.](?![.])/\n }, {\n token: \"support.function\",\n regex: /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|lter|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward|rEach)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\\b(?=\\()/\n }, {\n token: \"support.function.dom\",\n regex: /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\\b(?=\\()/\n }, {\n token: \"support.constant\",\n regex: /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\\b/\n }, {\n token: \"identifier\",\n regex: identifierRe\n }, {\n regex: \"\",\n token: \"empty\",\n next: \"no_regex\"\n }\n ],\n \"start\": [\n DocCommentHighlightRules.getStartRule(\"doc-start\"),\n comments(\"start\"),\n {\n token: \"string.regexp\",\n regex: \"\\\\/\",\n next: \"regex\"\n }, {\n token: \"text\",\n regex: \"\\\\s+|^$\",\n next: \"start\"\n }, {\n token: \"empty\",\n regex: \"\",\n next: \"no_regex\"\n }\n ],\n \"regex\": [\n {\n token: \"regexp.keyword.operator\",\n regex: \"\\\\\\\\(?:u[\\\\da-fA-F]{4}|x[\\\\da-fA-F]{2}|.)\"\n }, {\n token: \"string.regexp\",\n regex: \"/[sxngimy]*\",\n next: \"no_regex\"\n }, {\n token: \"invalid\",\n regex: /\\{\\d+\\b,?\\d*\\}[+*]|[+*$^?][+*]|[$^][?]|\\?{3,}/\n }, {\n token: \"constant.language.escape\",\n regex: /\\(\\?[:=!]|\\)|\\{\\d+\\b,?\\d*\\}|[+*]\\?|[()$^+*?.]/\n }, {\n token: \"constant.language.delimiter\",\n regex: /\\|/\n }, {\n token: \"constant.language.escape\",\n regex: /\\[\\^?/,\n next: \"regex_character_class\"\n }, {\n token: \"empty\",\n regex: \"$\",\n next: \"no_regex\"\n }, {\n defaultToken: \"string.regexp\"\n }\n ],\n \"regex_character_class\": [\n {\n token: \"regexp.charclass.keyword.operator\",\n regex: \"\\\\\\\\(?:u[\\\\da-fA-F]{4}|x[\\\\da-fA-F]{2}|.)\"\n }, {\n token: \"constant.language.escape\",\n regex: \"]\",\n next: \"regex\"\n }, {\n token: \"constant.language.escape\",\n regex: \"-\"\n }, {\n token: \"empty\",\n regex: \"$\",\n next: \"no_regex\"\n }, {\n defaultToken: \"string.regexp.charachterclass\"\n }\n ],\n \"default_parameter\": [\n {\n token: \"string\",\n regex: \"'(?=.)\",\n push: [\n {\n token: \"string\",\n regex: \"'|$\",\n next: \"pop\"\n }, {\n include: \"qstring\"\n }\n ]\n }, {\n token: \"string\",\n regex: '\"(?=.)',\n push: [\n {\n token: \"string\",\n regex: '\"|$',\n next: \"pop\"\n }, {\n include: \"qqstring\"\n }\n ]\n }, {\n token: \"constant.language\",\n regex: \"null|Infinity|NaN|undefined\"\n }, {\n token: \"constant.numeric\",\n regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\\b/\n }, {\n token: \"constant.numeric\",\n regex: /(?:\\d\\d*(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+\\b)?/\n }, {\n token: \"punctuation.operator\",\n regex: \",\",\n next: \"function_arguments\"\n }, {\n token: \"text\",\n regex: \"\\\\s+\"\n }, {\n token: \"punctuation.operator\",\n regex: \"$\"\n }, {\n token: \"empty\",\n regex: \"\",\n next: \"no_regex\"\n }\n ],\n \"function_arguments\": [\n comments(\"function_arguments\"),\n {\n token: \"variable.parameter\",\n regex: identifierRe\n }, {\n token: \"punctuation.operator\",\n regex: \",\"\n }, {\n token: \"text\",\n regex: \"\\\\s+\"\n }, {\n token: \"punctuation.operator\",\n regex: \"$\"\n }, {\n token: \"empty\",\n regex: \"\",\n next: \"no_regex\"\n }\n ],\n \"qqstring\": [\n {\n token: \"constant.language.escape\",\n regex: escapedRe\n }, {\n token: \"string\",\n regex: \"\\\\\\\\$\",\n consumeLineEnd: true\n }, {\n token: \"string\",\n regex: '\"|$',\n next: \"no_regex\"\n }, {\n defaultToken: \"string\"\n }\n ],\n \"qstring\": [\n {\n token: \"constant.language.escape\",\n regex: escapedRe\n }, {\n token: \"string\",\n regex: \"\\\\\\\\$\",\n consumeLineEnd: true\n }, {\n token: \"string\",\n regex: \"'|$\",\n next: \"no_regex\"\n }, {\n defaultToken: \"string\"\n }\n ]\n };\n if (!options || !options.noES6) {\n this.$rules.no_regex.unshift({\n regex: \"[{}]\", onMatch: function (val, state, stack) {\n this.next = val == \"{\" ? this.nextState : \"\";\n if (val == \"{\" && stack.length) {\n stack.unshift(\"start\", state);\n }\n else if (val == \"}\" && stack.length) {\n stack.shift();\n this.next = stack.shift();\n if (this.next.indexOf(\"string\") != -1 || this.next.indexOf(\"jsx\") != -1)\n return \"paren.quasi.end\";\n }\n return val == \"{\" ? \"paren.lparen\" : \"paren.rparen\";\n },\n nextState: \"start\"\n }, {\n token: \"string.quasi.start\",\n regex: /`/,\n push: [{\n token: \"constant.language.escape\",\n regex: escapedRe\n }, {\n token: \"paren.quasi.start\",\n regex: /\\${/,\n push: \"start\"\n }, {\n token: \"string.quasi.end\",\n regex: /`/,\n next: \"pop\"\n }, {\n defaultToken: \"string.quasi\"\n }]\n }, {\n token: [\"variable.parameter\", \"text\"],\n regex: \"(\" + identifierRe + \")(\\\\s*)(?=\\\\=>)\"\n }, {\n token: \"paren.lparen\",\n regex: \"(\\\\()(?=.+\\\\s*=>)\",\n next: \"function_arguments\"\n }, {\n token: \"variable.language\",\n regex: \"(?:(?:(?:Weak)?(?:Set|Map))|Promise)\\\\b\"\n });\n this.$rules[\"function_arguments\"].unshift({\n token: \"keyword.operator\",\n regex: \"=\",\n next: \"default_parameter\"\n }, {\n token: \"keyword.operator\",\n regex: \"\\\\.{3}\"\n });\n this.$rules[\"property\"].unshift({\n token: \"support.function\",\n regex: \"(findIndex|repeat|startsWith|endsWith|includes|isSafeInteger|trunc|cbrt|log2|log10|sign|then|catch|\"\n + \"finally|resolve|reject|race|any|all|allSettled|keys|entries|isInteger)\\\\b(?=\\\\()\"\n }, {\n token: \"constant.language\",\n regex: \"(?:MAX_SAFE_INTEGER|MIN_SAFE_INTEGER|EPSILON)\\\\b\"\n });\n if (!options || options.jsx != false)\n JSX.call(this);\n }\n this.embedRules(DocCommentHighlightRules, \"doc-\", [DocCommentHighlightRules.getEndRule(\"no_regex\")]);\n this.normalizeRules();\n};\noop.inherits(JavaScriptHighlightRules, TextHighlightRules);\nfunction JSX() {\n var tagRegex = identifierRe.replace(\"\\\\d\", \"\\\\d\\\\-\");\n var jsxTag = {\n onMatch: function (val, state, stack) {\n var offset = val.charAt(1) == \"/\" ? 2 : 1;\n if (offset == 1) {\n if (state != this.nextState)\n stack.unshift(this.next, this.nextState, 0);\n else\n stack.unshift(this.next);\n stack[2]++;\n }\n else if (offset == 2) {\n if (state == this.nextState) {\n stack[1]--;\n if (!stack[1] || stack[1] < 0) {\n stack.shift();\n stack.shift();\n }\n }\n }\n return [{\n type: \"meta.tag.punctuation.\" + (offset == 1 ? \"\" : \"end-\") + \"tag-open.xml\",\n value: val.slice(0, offset)\n }, {\n type: \"meta.tag.tag-name.xml\",\n value: val.substr(offset)\n }];\n },\n regex: \"\",\n onMatch: function (value, currentState, stack) {\n if (currentState == stack[0])\n stack.shift();\n if (value.length == 2) {\n if (stack[0] == this.nextState)\n stack[1]--;\n if (!stack[1] || stack[1] < 0) {\n stack.splice(0, 2);\n }\n }\n this.next = stack[0] || \"start\";\n return [{ type: this.token, value: value }];\n },\n nextState: \"jsx\"\n },\n jsxJsRule,\n comments(\"jsxAttributes\"),\n {\n token: \"entity.other.attribute-name.xml\",\n regex: tagRegex\n }, {\n token: \"keyword.operator.attribute-equals.xml\",\n regex: \"=\"\n }, {\n token: \"text.tag-whitespace.xml\",\n regex: \"\\\\s+\"\n }, {\n token: \"string.attribute-value.xml\",\n regex: \"'\",\n stateName: \"jsx_attr_q\",\n push: [\n { token: \"string.attribute-value.xml\", regex: \"'\", next: \"pop\" },\n { include: \"reference\" },\n { defaultToken: \"string.attribute-value.xml\" }\n ]\n }, {\n token: \"string.attribute-value.xml\",\n regex: '\"',\n stateName: \"jsx_attr_qq\",\n push: [\n { token: \"string.attribute-value.xml\", regex: '\"', next: \"pop\" },\n { include: \"reference\" },\n { defaultToken: \"string.attribute-value.xml\" }\n ]\n },\n jsxTag\n ];\n this.$rules.reference = [{\n token: \"constant.language.escape.reference.xml\",\n regex: \"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\\\.-]+;)\"\n }];\n}\nfunction comments(next) {\n return [\n {\n token: \"comment\",\n regex: /\\/\\*/,\n next: [\n DocCommentHighlightRules.getTagRule(),\n { token: \"comment\", regex: \"\\\\*\\\\/\", next: next || \"pop\" },\n { defaultToken: \"comment\", caseInsensitive: true }\n ]\n }, {\n token: \"comment\",\n regex: \"\\\\/\\\\/\",\n next: [\n DocCommentHighlightRules.getTagRule(),\n { token: \"comment\", regex: \"$|^\", next: next || \"pop\" },\n { defaultToken: \"comment\", caseInsensitive: true }\n ]\n }\n ];\n}\nexports.JavaScriptHighlightRules = JavaScriptHighlightRules;\n\n});\n\nace.define(\"ace/mode/matching_brace_outdent\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar Range = require(\"../range\").Range;\nvar MatchingBraceOutdent = function () { };\n(function () {\n this.checkOutdent = function (line, input) {\n if (!/^\\s+$/.test(line))\n return false;\n return /^\\s*\\}/.test(input);\n };\n this.autoOutdent = function (doc, row) {\n var line = doc.getLine(row);\n var match = line.match(/^(\\s*\\})/);\n if (!match)\n return 0;\n var column = match[1].length;\n var openBracePos = doc.findMatchingBracket({ row: row, column: column });\n if (!openBracePos || openBracePos.row == row)\n return 0;\n var indent = this.$getIndent(doc.getLine(openBracePos.row));\n doc.replace(new Range(row, 0, row, column - 1), indent);\n };\n this.$getIndent = function (line) {\n return line.match(/^\\s*/)[0];\n };\n}).call(MatchingBraceOutdent.prototype);\nexports.MatchingBraceOutdent = MatchingBraceOutdent;\n\n});\n\nace.define(\"ace/mode/folding/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/range\",\"ace/mode/folding/fold_mode\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../../lib/oop\");\nvar Range = require(\"../../range\").Range;\nvar BaseFoldMode = require(\"./fold_mode\").FoldMode;\nvar FoldMode = exports.FoldMode = function (commentRegex) {\n if (commentRegex) {\n this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.start));\n this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.end));\n }\n};\noop.inherits(FoldMode, BaseFoldMode);\n(function () {\n this.foldingStartMarker = /([\\{\\[\\(])[^\\}\\]\\)]*$|^\\s*(\\/\\*)/;\n this.foldingStopMarker = /^[^\\[\\{\\(]*([\\}\\]\\)])|^[\\s\\*]*(\\*\\/)/;\n this.singleLineBlockCommentRe = /^\\s*(\\/\\*).*\\*\\/\\s*$/;\n this.tripleStarBlockCommentRe = /^\\s*(\\/\\*\\*\\*).*\\*\\/\\s*$/;\n this.startRegionRe = /^\\s*(\\/\\*|\\/\\/)#?region\\b/;\n this._getFoldWidgetBase = this.getFoldWidget;\n this.getFoldWidget = function (session, foldStyle, row) {\n var line = session.getLine(row);\n if (this.singleLineBlockCommentRe.test(line)) {\n if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line))\n return \"\";\n }\n var fw = this._getFoldWidgetBase(session, foldStyle, row);\n if (!fw && this.startRegionRe.test(line))\n return \"start\"; // lineCommentRegionStart\n return fw;\n };\n this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) {\n var line = session.getLine(row);\n if (this.startRegionRe.test(line))\n return this.getCommentRegionBlock(session, line, row);\n var match = line.match(this.foldingStartMarker);\n if (match) {\n var i = match.index;\n if (match[1])\n return this.openingBracketBlock(session, match[1], row, i);\n var range = session.getCommentFoldRange(row, i + match[0].length, 1);\n if (range && !range.isMultiLine()) {\n if (forceMultiline) {\n range = this.getSectionRange(session, row);\n }\n else if (foldStyle != \"all\")\n range = null;\n }\n return range;\n }\n if (foldStyle === \"markbegin\")\n return;\n var match = line.match(this.foldingStopMarker);\n if (match) {\n var i = match.index + match[0].length;\n if (match[1])\n return this.closingBracketBlock(session, match[1], row, i);\n return session.getCommentFoldRange(row, i, -1);\n }\n };\n this.getSectionRange = function (session, row) {\n var line = session.getLine(row);\n var startIndent = line.search(/\\S/);\n var startRow = row;\n var startColumn = line.length;\n row = row + 1;\n var endRow = row;\n var maxRow = session.getLength();\n while (++row < maxRow) {\n line = session.getLine(row);\n var indent = line.search(/\\S/);\n if (indent === -1)\n continue;\n if (startIndent > indent)\n break;\n var subRange = this.getFoldWidgetRange(session, \"all\", row);\n if (subRange) {\n if (subRange.start.row <= startRow) {\n break;\n }\n else if (subRange.isMultiLine()) {\n row = subRange.end.row;\n }\n else if (startIndent == indent) {\n break;\n }\n }\n endRow = row;\n }\n return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);\n };\n this.getCommentRegionBlock = function (session, line, row) {\n var startColumn = line.search(/\\s*$/);\n var maxRow = session.getLength();\n var startRow = row;\n var re = /^\\s*(?:\\/\\*|\\/\\/|--)#?(end)?region\\b/;\n var depth = 1;\n while (++row < maxRow) {\n line = session.getLine(row);\n var m = re.exec(line);\n if (!m)\n continue;\n if (m[1])\n depth--;\n else\n depth++;\n if (!depth)\n break;\n }\n var endRow = row;\n if (endRow > startRow) {\n return new Range(startRow, startColumn, endRow, line.length);\n }\n };\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/javascript\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/javascript_highlight_rules\",\"ace/mode/matching_brace_outdent\",\"ace/worker/worker_client\",\"ace/mode/behaviour/cstyle\",\"ace/mode/folding/cstyle\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar TextMode = require(\"./text\").Mode;\nvar JavaScriptHighlightRules = require(\"./javascript_highlight_rules\").JavaScriptHighlightRules;\nvar MatchingBraceOutdent = require(\"./matching_brace_outdent\").MatchingBraceOutdent;\nvar WorkerClient = require(\"../worker/worker_client\").WorkerClient;\nvar CstyleBehaviour = require(\"./behaviour/cstyle\").CstyleBehaviour;\nvar CStyleFoldMode = require(\"./folding/cstyle\").FoldMode;\nvar Mode = function () {\n this.HighlightRules = JavaScriptHighlightRules;\n this.$outdent = new MatchingBraceOutdent();\n this.$behaviour = new CstyleBehaviour();\n this.foldingRules = new CStyleFoldMode();\n};\noop.inherits(Mode, TextMode);\n(function () {\n this.lineCommentStart = \"//\";\n this.blockComment = { start: \"/*\", end: \"*/\" };\n this.$quotes = { '\"': '\"', \"'\": \"'\", \"`\": \"`\" };\n this.$pairQuotesAfter = {\n \"`\": /\\w/\n };\n this.getNextLineIndent = function (state, line, tab) {\n var indent = this.$getIndent(line);\n var tokenizedLine = this.getTokenizer().getLineTokens(line, state);\n var tokens = tokenizedLine.tokens;\n var endState = tokenizedLine.state;\n if (tokens.length && tokens[tokens.length - 1].type == \"comment\") {\n return indent;\n }\n if (state == \"start\" || state == \"no_regex\") {\n var match = line.match(/^.*(?:\\bcase\\b.*:|[\\{\\(\\[])\\s*$/);\n if (match) {\n indent += tab;\n }\n }\n else if (state == \"doc-start\") {\n if (endState == \"start\" || endState == \"no_regex\") {\n return \"\";\n }\n var match = line.match(/^\\s*(\\/?)\\*/);\n if (match) {\n if (match[1]) {\n indent += \" \";\n }\n indent += \"* \";\n }\n }\n return indent;\n };\n this.checkOutdent = function (state, line, input) {\n return this.$outdent.checkOutdent(line, input);\n };\n this.autoOutdent = function (state, doc, row) {\n this.$outdent.autoOutdent(doc, row);\n };\n this.createWorker = function (session) {\n var worker = new WorkerClient([\"ace\"], \"ace/mode/javascript_worker\", \"JavaScriptWorker\");\n worker.attachToDocument(session.getDocument());\n worker.on(\"annotate\", function (results) {\n session.setAnnotations(results.data);\n });\n worker.on(\"terminate\", function () {\n session.clearAnnotations();\n });\n return worker;\n };\n this.$id = \"ace/mode/javascript\";\n this.snippetFileId = \"ace/snippets/javascript\";\n}).call(Mode.prototype);\nexports.Mode = Mode;\n\n}); (function() {\n ace.require([\"ace/mode/javascript\"], function(m) {\n if (typeof module == \"object\" && typeof exports == \"object\" && module) {\n module.exports = m;\n }\n });\n })();\n ","ace.define(\"ace/mode/json_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar TextHighlightRules = require(\"./text_highlight_rules\").TextHighlightRules;\nvar JsonHighlightRules = function () {\n this.$rules = {\n \"start\": [\n {\n token: \"variable\",\n regex: '[\"](?:(?:\\\\\\\\.)|(?:[^\"\\\\\\\\]))*?[\"]\\\\s*(?=:)'\n }, {\n token: \"string\",\n regex: '\"',\n next: \"string\"\n }, {\n token: \"constant.numeric\",\n regex: \"0[xX][0-9a-fA-F]+\\\\b\"\n }, {\n token: \"constant.numeric\",\n regex: \"[+-]?\\\\d+(?:(?:\\\\.\\\\d*)?(?:[eE][+-]?\\\\d+)?)?\\\\b\"\n }, {\n token: \"constant.language.boolean\",\n regex: \"(?:true|false)\\\\b\"\n }, {\n token: \"text\",\n regex: \"['](?:(?:\\\\\\\\.)|(?:[^'\\\\\\\\]))*?[']\"\n }, {\n token: \"comment\",\n regex: \"\\\\/\\\\/.*$\"\n }, {\n token: \"comment.start\",\n regex: \"\\\\/\\\\*\",\n next: \"comment\"\n }, {\n token: \"paren.lparen\",\n regex: \"[[({]\"\n }, {\n token: \"paren.rparen\",\n regex: \"[\\\\])}]\"\n }, {\n token: \"punctuation.operator\",\n regex: /[,]/\n }, {\n token: \"text\",\n regex: \"\\\\s+\"\n }\n ],\n \"string\": [\n {\n token: \"constant.language.escape\",\n regex: /\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|[\"\\\\\\/bfnrt])/\n }, {\n token: \"string\",\n regex: '\"|$',\n next: \"start\"\n }, {\n defaultToken: \"string\"\n }\n ],\n \"comment\": [\n {\n token: \"comment.end\",\n regex: \"\\\\*\\\\/\",\n next: \"start\"\n }, {\n defaultToken: \"comment\"\n }\n ]\n };\n};\noop.inherits(JsonHighlightRules, TextHighlightRules);\nexports.JsonHighlightRules = JsonHighlightRules;\n\n});\n\nace.define(\"ace/mode/matching_brace_outdent\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar Range = require(\"../range\").Range;\nvar MatchingBraceOutdent = function () { };\n(function () {\n this.checkOutdent = function (line, input) {\n if (!/^\\s+$/.test(line))\n return false;\n return /^\\s*\\}/.test(input);\n };\n this.autoOutdent = function (doc, row) {\n var line = doc.getLine(row);\n var match = line.match(/^(\\s*\\})/);\n if (!match)\n return 0;\n var column = match[1].length;\n var openBracePos = doc.findMatchingBracket({ row: row, column: column });\n if (!openBracePos || openBracePos.row == row)\n return 0;\n var indent = this.$getIndent(doc.getLine(openBracePos.row));\n doc.replace(new Range(row, 0, row, column - 1), indent);\n };\n this.$getIndent = function (line) {\n return line.match(/^\\s*/)[0];\n };\n}).call(MatchingBraceOutdent.prototype);\nexports.MatchingBraceOutdent = MatchingBraceOutdent;\n\n});\n\nace.define(\"ace/mode/folding/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/range\",\"ace/mode/folding/fold_mode\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../../lib/oop\");\nvar Range = require(\"../../range\").Range;\nvar BaseFoldMode = require(\"./fold_mode\").FoldMode;\nvar FoldMode = exports.FoldMode = function (commentRegex) {\n if (commentRegex) {\n this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.start));\n this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.end));\n }\n};\noop.inherits(FoldMode, BaseFoldMode);\n(function () {\n this.foldingStartMarker = /([\\{\\[\\(])[^\\}\\]\\)]*$|^\\s*(\\/\\*)/;\n this.foldingStopMarker = /^[^\\[\\{\\(]*([\\}\\]\\)])|^[\\s\\*]*(\\*\\/)/;\n this.singleLineBlockCommentRe = /^\\s*(\\/\\*).*\\*\\/\\s*$/;\n this.tripleStarBlockCommentRe = /^\\s*(\\/\\*\\*\\*).*\\*\\/\\s*$/;\n this.startRegionRe = /^\\s*(\\/\\*|\\/\\/)#?region\\b/;\n this._getFoldWidgetBase = this.getFoldWidget;\n this.getFoldWidget = function (session, foldStyle, row) {\n var line = session.getLine(row);\n if (this.singleLineBlockCommentRe.test(line)) {\n if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line))\n return \"\";\n }\n var fw = this._getFoldWidgetBase(session, foldStyle, row);\n if (!fw && this.startRegionRe.test(line))\n return \"start\"; // lineCommentRegionStart\n return fw;\n };\n this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) {\n var line = session.getLine(row);\n if (this.startRegionRe.test(line))\n return this.getCommentRegionBlock(session, line, row);\n var match = line.match(this.foldingStartMarker);\n if (match) {\n var i = match.index;\n if (match[1])\n return this.openingBracketBlock(session, match[1], row, i);\n var range = session.getCommentFoldRange(row, i + match[0].length, 1);\n if (range && !range.isMultiLine()) {\n if (forceMultiline) {\n range = this.getSectionRange(session, row);\n }\n else if (foldStyle != \"all\")\n range = null;\n }\n return range;\n }\n if (foldStyle === \"markbegin\")\n return;\n var match = line.match(this.foldingStopMarker);\n if (match) {\n var i = match.index + match[0].length;\n if (match[1])\n return this.closingBracketBlock(session, match[1], row, i);\n return session.getCommentFoldRange(row, i, -1);\n }\n };\n this.getSectionRange = function (session, row) {\n var line = session.getLine(row);\n var startIndent = line.search(/\\S/);\n var startRow = row;\n var startColumn = line.length;\n row = row + 1;\n var endRow = row;\n var maxRow = session.getLength();\n while (++row < maxRow) {\n line = session.getLine(row);\n var indent = line.search(/\\S/);\n if (indent === -1)\n continue;\n if (startIndent > indent)\n break;\n var subRange = this.getFoldWidgetRange(session, \"all\", row);\n if (subRange) {\n if (subRange.start.row <= startRow) {\n break;\n }\n else if (subRange.isMultiLine()) {\n row = subRange.end.row;\n }\n else if (startIndent == indent) {\n break;\n }\n }\n endRow = row;\n }\n return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);\n };\n this.getCommentRegionBlock = function (session, line, row) {\n var startColumn = line.search(/\\s*$/);\n var maxRow = session.getLength();\n var startRow = row;\n var re = /^\\s*(?:\\/\\*|\\/\\/|--)#?(end)?region\\b/;\n var depth = 1;\n while (++row < maxRow) {\n line = session.getLine(row);\n var m = re.exec(line);\n if (!m)\n continue;\n if (m[1])\n depth--;\n else\n depth++;\n if (!depth)\n break;\n }\n var endRow = row;\n if (endRow > startRow) {\n return new Range(startRow, startColumn, endRow, line.length);\n }\n };\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/json\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/json_highlight_rules\",\"ace/mode/matching_brace_outdent\",\"ace/mode/folding/cstyle\",\"ace/worker/worker_client\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar TextMode = require(\"./text\").Mode;\nvar HighlightRules = require(\"./json_highlight_rules\").JsonHighlightRules;\nvar MatchingBraceOutdent = require(\"./matching_brace_outdent\").MatchingBraceOutdent;\nvar CStyleFoldMode = require(\"./folding/cstyle\").FoldMode;\nvar WorkerClient = require(\"../worker/worker_client\").WorkerClient;\nvar Mode = function () {\n this.HighlightRules = HighlightRules;\n this.$outdent = new MatchingBraceOutdent();\n this.$behaviour = this.$defaultBehaviour;\n this.foldingRules = new CStyleFoldMode();\n};\noop.inherits(Mode, TextMode);\n(function () {\n this.lineCommentStart = \"//\";\n this.blockComment = { start: \"/*\", end: \"*/\" };\n this.getNextLineIndent = function (state, line, tab) {\n var indent = this.$getIndent(line);\n if (state == \"start\") {\n var match = line.match(/^.*[\\{\\(\\[]\\s*$/);\n if (match) {\n indent += tab;\n }\n }\n return indent;\n };\n this.checkOutdent = function (state, line, input) {\n return this.$outdent.checkOutdent(line, input);\n };\n this.autoOutdent = function (state, doc, row) {\n this.$outdent.autoOutdent(doc, row);\n };\n this.createWorker = function (session) {\n var worker = new WorkerClient([\"ace\"], \"ace/mode/json_worker\", \"JsonWorker\");\n worker.attachToDocument(session.getDocument());\n worker.on(\"annotate\", function (e) {\n session.setAnnotations(e.data);\n });\n worker.on(\"terminate\", function () {\n session.clearAnnotations();\n });\n return worker;\n };\n this.$id = \"ace/mode/json\";\n}).call(Mode.prototype);\nexports.Mode = Mode;\n\n}); (function() {\n ace.require([\"ace/mode/json\"], function(m) {\n if (typeof module == \"object\" && typeof exports == \"object\" && module) {\n module.exports = m;\n }\n });\n })();\n ","ace.define(\"ace/mode/doc_comment_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar TextHighlightRules = require(\"./text_highlight_rules\").TextHighlightRules;\nvar DocCommentHighlightRules = function () {\n this.$rules = {\n \"start\": [\n {\n token: \"comment.doc.tag\",\n regex: \"@\\\\w+(?=\\\\s|$)\"\n }, DocCommentHighlightRules.getTagRule(), {\n defaultToken: \"comment.doc\",\n caseInsensitive: true\n }\n ]\n };\n};\noop.inherits(DocCommentHighlightRules, TextHighlightRules);\nDocCommentHighlightRules.getTagRule = function (start) {\n return {\n token: \"comment.doc.tag.storage.type\",\n regex: \"\\\\b(?:TODO|FIXME|XXX|HACK)\\\\b\"\n };\n};\nDocCommentHighlightRules.getStartRule = function (start) {\n return {\n token: \"comment.doc\",\n regex: \"\\\\/\\\\*(?=\\\\*)\",\n next: start\n };\n};\nDocCommentHighlightRules.getEndRule = function (start) {\n return {\n token: \"comment.doc\",\n regex: \"\\\\*\\\\/\",\n next: start\n };\n};\nexports.DocCommentHighlightRules = DocCommentHighlightRules;\n\n});\n\nace.define(\"ace/mode/jsx_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/mode/doc_comment_highlight_rules\",\"ace/mode/text_highlight_rules\"], function(require, exports, module){var oop = require(\"../lib/oop\");\nvar lang = require(\"../lib/lang\");\nvar DocCommentHighlightRules = require(\"./doc_comment_highlight_rules\").DocCommentHighlightRules;\nvar TextHighlightRules = require(\"./text_highlight_rules\").TextHighlightRules;\nvar JsxHighlightRules = function () {\n var keywords = lang.arrayToMap((\"break|do|instanceof|typeof|case|else|new|var|catch|finally|return|void|continue|for|switch|default|while|function|this|\" +\n \"if|throw|\" +\n \"delete|in|try|\" +\n \"class|extends|super|import|from|into|implements|interface|static|mixin|override|abstract|final|\" +\n \"number|int|string|boolean|variant|\" +\n \"log|assert\").split(\"|\"));\n var buildinConstants = lang.arrayToMap((\"null|true|false|NaN|Infinity|__FILE__|__LINE__|undefined\").split(\"|\"));\n var reserved = lang.arrayToMap((\"debugger|with|\" +\n \"const|export|\" +\n \"let|private|public|yield|protected|\" +\n \"extern|native|as|operator|__fake__|__readonly__\").split(\"|\"));\n var identifierRe = \"[a-zA-Z_][a-zA-Z0-9_]*\\\\b\";\n this.$rules = {\n \"start\": [\n {\n token: \"comment\",\n regex: \"\\\\/\\\\/.*$\"\n },\n DocCommentHighlightRules.getStartRule(\"doc-start\"),\n {\n token: \"comment\",\n regex: \"\\\\/\\\\*\",\n next: \"comment\"\n }, {\n token: \"string.regexp\",\n regex: \"[/](?:(?:\\\\[(?:\\\\\\\\]|[^\\\\]])+\\\\])|(?:\\\\\\\\/|[^\\\\]/]))*[/]\\\\w*\\\\s*(?=[).,;]|$)\"\n }, {\n token: \"string\",\n regex: '[\"](?:(?:\\\\\\\\.)|(?:[^\"\\\\\\\\]))*?[\"]'\n }, {\n token: \"string\",\n regex: \"['](?:(?:\\\\\\\\.)|(?:[^'\\\\\\\\]))*?[']\"\n }, {\n token: \"constant.numeric\",\n regex: \"0[xX][0-9a-fA-F]+\\\\b\"\n }, {\n token: \"constant.numeric\",\n regex: \"[+-]?\\\\d+(?:(?:\\\\.\\\\d*)?(?:[eE][+-]?\\\\d+)?)?\\\\b\"\n }, {\n token: \"constant.language.boolean\",\n regex: \"(?:true|false)\\\\b\"\n }, {\n token: [\n \"storage.type\",\n \"text\",\n \"entity.name.function\"\n ],\n regex: \"(function)(\\\\s+)(\" + identifierRe + \")\"\n }, {\n token: function (value) {\n if (value == \"this\")\n return \"variable.language\";\n else if (value == \"function\")\n return \"storage.type\";\n else if (keywords.hasOwnProperty(value) || reserved.hasOwnProperty(value))\n return \"keyword\";\n else if (buildinConstants.hasOwnProperty(value))\n return \"constant.language\";\n else if (/^_?[A-Z][a-zA-Z0-9_]*$/.test(value))\n return \"language.support.class\";\n else\n return \"identifier\";\n },\n regex: identifierRe\n }, {\n token: \"keyword.operator\",\n regex: \"!|%|&|\\\\*|\\\\-\\\\-|\\\\-|\\\\+\\\\+|\\\\+|~|==|=|!=|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\\\|\\\\||\\\\?\\\\:|\\\\*=|%=|\\\\+=|\\\\-=|&=|\\\\^=|\\\\b(?:in|instanceof|new|delete|typeof|void)\"\n }, {\n token: \"punctuation.operator\",\n regex: \"\\\\?|\\\\:|\\\\,|\\\\;|\\\\.\"\n }, {\n token: \"paren.lparen\",\n regex: \"[[({<]\"\n }, {\n token: \"paren.rparen\",\n regex: \"[\\\\])}>]\"\n }, {\n token: \"text\",\n regex: \"\\\\s+\"\n }\n ],\n \"comment\": [\n {\n token: \"comment\",\n regex: \"\\\\*\\\\/\",\n next: \"start\"\n }, {\n defaultToken: \"comment\"\n }\n ]\n };\n this.embedRules(DocCommentHighlightRules, \"doc-\", [DocCommentHighlightRules.getEndRule(\"start\")]);\n};\noop.inherits(JsxHighlightRules, TextHighlightRules);\nexports.JsxHighlightRules = JsxHighlightRules;\n\n});\n\nace.define(\"ace/mode/matching_brace_outdent\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar Range = require(\"../range\").Range;\nvar MatchingBraceOutdent = function () { };\n(function () {\n this.checkOutdent = function (line, input) {\n if (!/^\\s+$/.test(line))\n return false;\n return /^\\s*\\}/.test(input);\n };\n this.autoOutdent = function (doc, row) {\n var line = doc.getLine(row);\n var match = line.match(/^(\\s*\\})/);\n if (!match)\n return 0;\n var column = match[1].length;\n var openBracePos = doc.findMatchingBracket({ row: row, column: column });\n if (!openBracePos || openBracePos.row == row)\n return 0;\n var indent = this.$getIndent(doc.getLine(openBracePos.row));\n doc.replace(new Range(row, 0, row, column - 1), indent);\n };\n this.$getIndent = function (line) {\n return line.match(/^\\s*/)[0];\n };\n}).call(MatchingBraceOutdent.prototype);\nexports.MatchingBraceOutdent = MatchingBraceOutdent;\n\n});\n\nace.define(\"ace/mode/folding/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/range\",\"ace/mode/folding/fold_mode\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../../lib/oop\");\nvar Range = require(\"../../range\").Range;\nvar BaseFoldMode = require(\"./fold_mode\").FoldMode;\nvar FoldMode = exports.FoldMode = function (commentRegex) {\n if (commentRegex) {\n this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.start));\n this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.end));\n }\n};\noop.inherits(FoldMode, BaseFoldMode);\n(function () {\n this.foldingStartMarker = /([\\{\\[\\(])[^\\}\\]\\)]*$|^\\s*(\\/\\*)/;\n this.foldingStopMarker = /^[^\\[\\{\\(]*([\\}\\]\\)])|^[\\s\\*]*(\\*\\/)/;\n this.singleLineBlockCommentRe = /^\\s*(\\/\\*).*\\*\\/\\s*$/;\n this.tripleStarBlockCommentRe = /^\\s*(\\/\\*\\*\\*).*\\*\\/\\s*$/;\n this.startRegionRe = /^\\s*(\\/\\*|\\/\\/)#?region\\b/;\n this._getFoldWidgetBase = this.getFoldWidget;\n this.getFoldWidget = function (session, foldStyle, row) {\n var line = session.getLine(row);\n if (this.singleLineBlockCommentRe.test(line)) {\n if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line))\n return \"\";\n }\n var fw = this._getFoldWidgetBase(session, foldStyle, row);\n if (!fw && this.startRegionRe.test(line))\n return \"start\"; // lineCommentRegionStart\n return fw;\n };\n this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) {\n var line = session.getLine(row);\n if (this.startRegionRe.test(line))\n return this.getCommentRegionBlock(session, line, row);\n var match = line.match(this.foldingStartMarker);\n if (match) {\n var i = match.index;\n if (match[1])\n return this.openingBracketBlock(session, match[1], row, i);\n var range = session.getCommentFoldRange(row, i + match[0].length, 1);\n if (range && !range.isMultiLine()) {\n if (forceMultiline) {\n range = this.getSectionRange(session, row);\n }\n else if (foldStyle != \"all\")\n range = null;\n }\n return range;\n }\n if (foldStyle === \"markbegin\")\n return;\n var match = line.match(this.foldingStopMarker);\n if (match) {\n var i = match.index + match[0].length;\n if (match[1])\n return this.closingBracketBlock(session, match[1], row, i);\n return session.getCommentFoldRange(row, i, -1);\n }\n };\n this.getSectionRange = function (session, row) {\n var line = session.getLine(row);\n var startIndent = line.search(/\\S/);\n var startRow = row;\n var startColumn = line.length;\n row = row + 1;\n var endRow = row;\n var maxRow = session.getLength();\n while (++row < maxRow) {\n line = session.getLine(row);\n var indent = line.search(/\\S/);\n if (indent === -1)\n continue;\n if (startIndent > indent)\n break;\n var subRange = this.getFoldWidgetRange(session, \"all\", row);\n if (subRange) {\n if (subRange.start.row <= startRow) {\n break;\n }\n else if (subRange.isMultiLine()) {\n row = subRange.end.row;\n }\n else if (startIndent == indent) {\n break;\n }\n }\n endRow = row;\n }\n return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);\n };\n this.getCommentRegionBlock = function (session, line, row) {\n var startColumn = line.search(/\\s*$/);\n var maxRow = session.getLength();\n var startRow = row;\n var re = /^\\s*(?:\\/\\*|\\/\\/|--)#?(end)?region\\b/;\n var depth = 1;\n while (++row < maxRow) {\n line = session.getLine(row);\n var m = re.exec(line);\n if (!m)\n continue;\n if (m[1])\n depth--;\n else\n depth++;\n if (!depth)\n break;\n }\n var endRow = row;\n if (endRow > startRow) {\n return new Range(startRow, startColumn, endRow, line.length);\n }\n };\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/jsx\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/jsx_highlight_rules\",\"ace/mode/matching_brace_outdent\",\"ace/mode/folding/cstyle\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar TextMode = require(\"./text\").Mode;\nvar JsxHighlightRules = require(\"./jsx_highlight_rules\").JsxHighlightRules;\nvar MatchingBraceOutdent = require(\"./matching_brace_outdent\").MatchingBraceOutdent;\nvar CStyleFoldMode = require(\"./folding/cstyle\").FoldMode;\nfunction Mode() {\n this.HighlightRules = JsxHighlightRules;\n this.$outdent = new MatchingBraceOutdent();\n this.$behaviour = this.$defaultBehaviour;\n this.foldingRules = new CStyleFoldMode();\n}\noop.inherits(Mode, TextMode);\n(function () {\n this.lineCommentStart = \"//\";\n this.blockComment = { start: \"/*\", end: \"*/\" };\n this.getNextLineIndent = function (state, line, tab) {\n var indent = this.$getIndent(line);\n var tokenizedLine = this.getTokenizer().getLineTokens(line, state);\n var tokens = tokenizedLine.tokens;\n if (tokens.length && tokens[tokens.length - 1].type == \"comment\") {\n return indent;\n }\n if (state == \"start\") {\n var match = line.match(/^.*[\\{\\(\\[]\\s*$/);\n if (match) {\n indent += tab;\n }\n }\n return indent;\n };\n this.checkOutdent = function (state, line, input) {\n return this.$outdent.checkOutdent(line, input);\n };\n this.autoOutdent = function (state, doc, row) {\n this.$outdent.autoOutdent(doc, row);\n };\n this.$id = \"ace/mode/jsx\";\n}).call(Mode.prototype);\nexports.Mode = Mode;\n\n}); (function() {\n ace.require([\"ace/mode/jsx\"], function(m) {\n if (typeof module == \"object\" && typeof exports == \"object\" && module) {\n module.exports = m;\n }\n });\n })();\n ","ace.define(\"ace/mode/python_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(require, exports, module){/*\n * TODO: python delimiters\n */\n\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar TextHighlightRules = require(\"./text_highlight_rules\").TextHighlightRules;\nvar PythonHighlightRules = function () {\n var keywords = (\"and|as|assert|break|class|continue|def|del|elif|else|except|exec|\" +\n \"finally|for|from|global|if|import|in|is|lambda|not|or|pass|print|\" +\n \"raise|return|try|while|with|yield|async|await|nonlocal\");\n var builtinConstants = (\"True|False|None|NotImplemented|Ellipsis|__debug__\");\n var builtinFunctions = (\"abs|divmod|input|open|staticmethod|all|enumerate|int|ord|str|any|\" +\n \"eval|isinstance|pow|sum|basestring|execfile|issubclass|print|super|\" +\n \"binfile|bin|iter|property|tuple|bool|filter|len|range|type|bytearray|\" +\n \"float|list|raw_input|unichr|callable|format|locals|reduce|unicode|\" +\n \"chr|frozenset|long|reload|vars|classmethod|getattr|map|repr|xrange|\" +\n \"cmp|globals|max|reversed|zip|compile|hasattr|memoryview|round|\" +\n \"__import__|complex|hash|min|apply|delattr|help|next|setattr|set|\" +\n \"buffer|dict|hex|object|slice|coerce|dir|id|oct|sorted|intern|\" +\n \"ascii|breakpoint|bytes\");\n var keywordMapper = this.createKeywordMapper({\n \"invalid.deprecated\": \"debugger\",\n \"support.function\": builtinFunctions,\n \"variable.language\": \"self|cls\",\n \"constant.language\": builtinConstants,\n \"keyword\": keywords\n }, \"identifier\");\n var strPre = \"[uU]?\";\n var strRawPre = \"[rR]\";\n var strFormatPre = \"[fF]\";\n var strRawFormatPre = \"(?:[rR][fF]|[fF][rR])\";\n var decimalInteger = \"(?:(?:[1-9]\\\\d*)|(?:0))\";\n var octInteger = \"(?:0[oO]?[0-7]+)\";\n var hexInteger = \"(?:0[xX][\\\\dA-Fa-f]+)\";\n var binInteger = \"(?:0[bB][01]+)\";\n var integer = \"(?:\" + decimalInteger + \"|\" + octInteger + \"|\" + hexInteger + \"|\" + binInteger + \")\";\n var exponent = \"(?:[eE][+-]?\\\\d+)\";\n var fraction = \"(?:\\\\.\\\\d+)\";\n var intPart = \"(?:\\\\d+)\";\n var pointFloat = \"(?:(?:\" + intPart + \"?\" + fraction + \")|(?:\" + intPart + \"\\\\.))\";\n var exponentFloat = \"(?:(?:\" + pointFloat + \"|\" + intPart + \")\" + exponent + \")\";\n var floatNumber = \"(?:\" + exponentFloat + \"|\" + pointFloat + \")\";\n var stringEscape = \"\\\\\\\\(x[0-9A-Fa-f]{2}|[0-7]{3}|[\\\\\\\\abfnrtv'\\\"]|U[0-9A-Fa-f]{8}|u[0-9A-Fa-f]{4})\";\n this.$rules = {\n \"start\": [{\n token: \"comment\",\n regex: \"#.*$\"\n }, {\n token: \"string\",\n regex: strPre + '\"{3}',\n next: \"qqstring3\"\n }, {\n token: \"string\",\n regex: strPre + '\"(?=.)',\n next: \"qqstring\"\n }, {\n token: \"string\",\n regex: strPre + \"'{3}\",\n next: \"qstring3\"\n }, {\n token: \"string\",\n regex: strPre + \"'(?=.)\",\n next: \"qstring\"\n }, {\n token: \"string\",\n regex: strRawPre + '\"{3}',\n next: \"rawqqstring3\"\n }, {\n token: \"string\",\n regex: strRawPre + '\"(?=.)',\n next: \"rawqqstring\"\n }, {\n token: \"string\",\n regex: strRawPre + \"'{3}\",\n next: \"rawqstring3\"\n }, {\n token: \"string\",\n regex: strRawPre + \"'(?=.)\",\n next: \"rawqstring\"\n }, {\n token: \"string\",\n regex: strFormatPre + '\"{3}',\n next: \"fqqstring3\"\n }, {\n token: \"string\",\n regex: strFormatPre + '\"(?=.)',\n next: \"fqqstring\"\n }, {\n token: \"string\",\n regex: strFormatPre + \"'{3}\",\n next: \"fqstring3\"\n }, {\n token: \"string\",\n regex: strFormatPre + \"'(?=.)\",\n next: \"fqstring\"\n }, {\n token: \"string\",\n regex: strRawFormatPre + '\"{3}',\n next: \"rfqqstring3\"\n }, {\n token: \"string\",\n regex: strRawFormatPre + '\"(?=.)',\n next: \"rfqqstring\"\n }, {\n token: \"string\",\n regex: strRawFormatPre + \"'{3}\",\n next: \"rfqstring3\"\n }, {\n token: \"string\",\n regex: strRawFormatPre + \"'(?=.)\",\n next: \"rfqstring\"\n }, {\n token: \"keyword.operator\",\n regex: \"\\\\+|\\\\-|\\\\*|\\\\*\\\\*|\\\\/|\\\\/\\\\/|%|@|<<|>>|&|\\\\||\\\\^|~|<|>|<=|=>|==|!=|<>|=\"\n }, {\n token: \"punctuation\",\n regex: \",|:|;|\\\\->|\\\\+=|\\\\-=|\\\\*=|\\\\/=|\\\\/\\\\/=|%=|@=|&=|\\\\|=|^=|>>=|<<=|\\\\*\\\\*=\"\n }, {\n token: \"paren.lparen\",\n regex: \"[\\\\[\\\\(\\\\{]\"\n }, {\n token: \"paren.rparen\",\n regex: \"[\\\\]\\\\)\\\\}]\"\n }, {\n token: [\"keyword\", \"text\", \"entity.name.function\"],\n regex: \"(def|class)(\\\\s+)([\\\\u00BF-\\\\u1FFF\\\\u2C00-\\\\uD7FF\\\\w]+)\"\n }, {\n token: \"text\",\n regex: \"\\\\s+\"\n }, {\n include: \"constants\"\n }],\n \"qqstring3\": [{\n token: \"constant.language.escape\",\n regex: stringEscape\n }, {\n token: \"string\",\n regex: '\"{3}',\n next: \"start\"\n }, {\n defaultToken: \"string\"\n }],\n \"qstring3\": [{\n token: \"constant.language.escape\",\n regex: stringEscape\n }, {\n token: \"string\",\n regex: \"'{3}\",\n next: \"start\"\n }, {\n defaultToken: \"string\"\n }],\n \"qqstring\": [{\n token: \"constant.language.escape\",\n regex: stringEscape\n }, {\n token: \"string\",\n regex: \"\\\\\\\\$\",\n next: \"qqstring\"\n }, {\n token: \"string\",\n regex: '\"|$',\n next: \"start\"\n }, {\n defaultToken: \"string\"\n }],\n \"qstring\": [{\n token: \"constant.language.escape\",\n regex: stringEscape\n }, {\n token: \"string\",\n regex: \"\\\\\\\\$\",\n next: \"qstring\"\n }, {\n token: \"string\",\n regex: \"'|$\",\n next: \"start\"\n }, {\n defaultToken: \"string\"\n }],\n \"rawqqstring3\": [{\n token: \"string\",\n regex: '\"{3}',\n next: \"start\"\n }, {\n defaultToken: \"string\"\n }],\n \"rawqstring3\": [{\n token: \"string\",\n regex: \"'{3}\",\n next: \"start\"\n }, {\n defaultToken: \"string\"\n }],\n \"rawqqstring\": [{\n token: \"string\",\n regex: \"\\\\\\\\$\",\n next: \"rawqqstring\"\n }, {\n token: \"string\",\n regex: '\"|$',\n next: \"start\"\n }, {\n defaultToken: \"string\"\n }],\n \"rawqstring\": [{\n token: \"string\",\n regex: \"\\\\\\\\$\",\n next: \"rawqstring\"\n }, {\n token: \"string\",\n regex: \"'|$\",\n next: \"start\"\n }, {\n defaultToken: \"string\"\n }],\n \"fqqstring3\": [{\n token: \"constant.language.escape\",\n regex: stringEscape\n }, {\n token: \"string\",\n regex: '\"{3}',\n next: \"start\"\n }, {\n token: \"paren.lparen\",\n regex: \"{\",\n push: \"fqstringParRules\"\n }, {\n defaultToken: \"string\"\n }],\n \"fqstring3\": [{\n token: \"constant.language.escape\",\n regex: stringEscape\n }, {\n token: \"string\",\n regex: \"'{3}\",\n next: \"start\"\n }, {\n token: \"paren.lparen\",\n regex: \"{\",\n push: \"fqstringParRules\"\n }, {\n defaultToken: \"string\"\n }],\n \"fqqstring\": [{\n token: \"constant.language.escape\",\n regex: stringEscape\n }, {\n token: \"string\",\n regex: \"\\\\\\\\$\",\n next: \"fqqstring\"\n }, {\n token: \"string\",\n regex: '\"|$',\n next: \"start\"\n }, {\n token: \"paren.lparen\",\n regex: \"{\",\n push: \"fqstringParRules\"\n }, {\n defaultToken: \"string\"\n }],\n \"fqstring\": [{\n token: \"constant.language.escape\",\n regex: stringEscape\n }, {\n token: \"string\",\n regex: \"'|$\",\n next: \"start\"\n }, {\n token: \"paren.lparen\",\n regex: \"{\",\n push: \"fqstringParRules\"\n }, {\n defaultToken: \"string\"\n }],\n \"rfqqstring3\": [{\n token: \"string\",\n regex: '\"{3}',\n next: \"start\"\n }, {\n token: \"paren.lparen\",\n regex: \"{\",\n push: \"fqstringParRules\"\n }, {\n defaultToken: \"string\"\n }],\n \"rfqstring3\": [{\n token: \"string\",\n regex: \"'{3}\",\n next: \"start\"\n }, {\n token: \"paren.lparen\",\n regex: \"{\",\n push: \"fqstringParRules\"\n }, {\n defaultToken: \"string\"\n }],\n \"rfqqstring\": [{\n token: \"string\",\n regex: \"\\\\\\\\$\",\n next: \"rfqqstring\"\n }, {\n token: \"string\",\n regex: '\"|$',\n next: \"start\"\n }, {\n token: \"paren.lparen\",\n regex: \"{\",\n push: \"fqstringParRules\"\n }, {\n defaultToken: \"string\"\n }],\n \"rfqstring\": [{\n token: \"string\",\n regex: \"'|$\",\n next: \"start\"\n }, {\n token: \"paren.lparen\",\n regex: \"{\",\n push: \"fqstringParRules\"\n }, {\n defaultToken: \"string\"\n }],\n \"fqstringParRules\": [{\n token: \"paren.lparen\",\n regex: \"[\\\\[\\\\(]\"\n }, {\n token: \"paren.rparen\",\n regex: \"[\\\\]\\\\)]\"\n }, {\n token: \"string\",\n regex: \"\\\\s+\"\n }, {\n token: \"string\",\n regex: \"'[^']*'\"\n }, {\n token: \"string\",\n regex: '\"[^\"]*\"'\n }, {\n token: \"function.support\",\n regex: \"(!s|!r|!a)\"\n }, {\n include: \"constants\"\n }, {\n token: 'paren.rparen',\n regex: \"}\",\n next: 'pop'\n }, {\n token: 'paren.lparen',\n regex: \"{\",\n push: \"fqstringParRules\"\n }],\n \"constants\": [{\n token: \"constant.numeric\",\n regex: \"(?:\" + floatNumber + \"|\\\\d+)[jJ]\\\\b\"\n }, {\n token: \"constant.numeric\",\n regex: floatNumber\n }, {\n token: \"constant.numeric\",\n regex: integer + \"[lL]\\\\b\"\n }, {\n token: \"constant.numeric\",\n regex: integer + \"\\\\b\"\n }, {\n token: [\"punctuation\", \"function.support\"],\n regex: \"(\\\\.)([a-zA-Z_]+)\\\\b\"\n }, {\n token: keywordMapper,\n regex: \"[a-zA-Z_$][a-zA-Z0-9_$]*\\\\b\"\n }]\n };\n this.normalizeRules();\n};\noop.inherits(PythonHighlightRules, TextHighlightRules);\nexports.PythonHighlightRules = PythonHighlightRules;\n\n});\n\nace.define(\"ace/mode/folding/pythonic\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/folding/fold_mode\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../../lib/oop\");\nvar BaseFoldMode = require(\"./fold_mode\").FoldMode;\nvar FoldMode = exports.FoldMode = function (markers) {\n this.foldingStartMarker = new RegExp(\"([\\\\[{])(?:\\\\s*)$|(\" + markers + \")(?:\\\\s*)(?:#.*)?$\");\n};\noop.inherits(FoldMode, BaseFoldMode);\n(function () {\n this.getFoldWidgetRange = function (session, foldStyle, row) {\n var line = session.getLine(row);\n var match = line.match(this.foldingStartMarker);\n if (match) {\n if (match[1])\n return this.openingBracketBlock(session, match[1], row, match.index);\n if (match[2])\n return this.indentationBlock(session, row, match.index + match[2].length);\n return this.indentationBlock(session, row);\n }\n };\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/python\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/python_highlight_rules\",\"ace/mode/folding/pythonic\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar TextMode = require(\"./text\").Mode;\nvar PythonHighlightRules = require(\"./python_highlight_rules\").PythonHighlightRules;\nvar PythonFoldMode = require(\"./folding/pythonic\").FoldMode;\nvar Range = require(\"../range\").Range;\nvar Mode = function () {\n this.HighlightRules = PythonHighlightRules;\n this.foldingRules = new PythonFoldMode(\"\\\\:\");\n this.$behaviour = this.$defaultBehaviour;\n};\noop.inherits(Mode, TextMode);\n(function () {\n this.lineCommentStart = \"#\";\n this.$pairQuotesAfter = {\n \"'\": /[ruf]/i,\n '\"': /[ruf]/i\n };\n this.getNextLineIndent = function (state, line, tab) {\n var indent = this.$getIndent(line);\n var tokenizedLine = this.getTokenizer().getLineTokens(line, state);\n var tokens = tokenizedLine.tokens;\n if (tokens.length && tokens[tokens.length - 1].type == \"comment\") {\n return indent;\n }\n if (state == \"start\") {\n var match = line.match(/^.*[\\{\\(\\[:]\\s*$/);\n if (match) {\n indent += tab;\n }\n }\n return indent;\n };\n var outdents = {\n \"pass\": 1,\n \"return\": 1,\n \"raise\": 1,\n \"break\": 1,\n \"continue\": 1\n };\n this.checkOutdent = function (state, line, input) {\n if (input !== \"\\r\\n\" && input !== \"\\r\" && input !== \"\\n\")\n return false;\n var tokens = this.getTokenizer().getLineTokens(line.trim(), state).tokens;\n if (!tokens)\n return false;\n do {\n var last = tokens.pop();\n } while (last && (last.type == \"comment\" || (last.type == \"text\" && last.value.match(/^\\s+$/))));\n if (!last)\n return false;\n return (last.type == \"keyword\" && outdents[last.value]);\n };\n this.autoOutdent = function (state, doc, row) {\n row += 1;\n var indent = this.$getIndent(doc.getLine(row));\n var tab = doc.getTabString();\n if (indent.slice(-tab.length) == tab)\n doc.remove(new Range(row, indent.length - tab.length, row, indent.length));\n };\n this.$id = \"ace/mode/python\";\n this.snippetFileId = \"ace/snippets/python\";\n}).call(Mode.prototype);\nexports.Mode = Mode;\n\n}); (function() {\n ace.require([\"ace/mode/python\"], function(m) {\n if (typeof module == \"object\" && typeof exports == \"object\" && module) {\n module.exports = m;\n }\n });\n })();\n ","ace.define(\"ace/mode/xml_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar TextHighlightRules = require(\"./text_highlight_rules\").TextHighlightRules;\nvar XmlHighlightRules = function (normalize) {\n var tagRegex = \"[_:a-zA-Z\\xc0-\\uffff][-_:.a-zA-Z0-9\\xc0-\\uffff]*\";\n this.$rules = {\n start: [\n { token: \"string.cdata.xml\", regex: \"<\\\\!\\\\[CDATA\\\\[\", next: \"cdata\" },\n {\n token: [\"punctuation.instruction.xml\", \"keyword.instruction.xml\"],\n regex: \"(<\\\\?)(\" + tagRegex + \")\", next: \"processing_instruction\"\n },\n { token: \"comment.start.xml\", regex: \"<\\\\!--\", next: \"comment\" },\n {\n token: [\"xml-pe.doctype.xml\", \"xml-pe.doctype.xml\"],\n regex: \"(<\\\\!)(DOCTYPE)(?=[\\\\s])\", next: \"doctype\", caseInsensitive: true\n },\n { include: \"tag\" },\n { token: \"text.end-tag-open.xml\", regex: \"\",\n next: \"start\"\n }],\n doctype: [\n { include: \"whitespace\" },\n { include: \"string\" },\n { token: \"xml-pe.doctype.xml\", regex: \">\", next: \"start\" },\n { token: \"xml-pe.xml\", regex: \"[-_a-zA-Z0-9:]+\" },\n { token: \"punctuation.int-subset\", regex: \"\\\\[\", push: \"int_subset\" }\n ],\n int_subset: [{\n token: \"text.xml\",\n regex: \"\\\\s+\"\n }, {\n token: \"punctuation.int-subset.xml\",\n regex: \"]\",\n next: \"pop\"\n }, {\n token: [\"punctuation.markup-decl.xml\", \"keyword.markup-decl.xml\"],\n regex: \"(<\\\\!)(\" + tagRegex + \")\",\n push: [{\n token: \"text\",\n regex: \"\\\\s+\"\n },\n {\n token: \"punctuation.markup-decl.xml\",\n regex: \">\",\n next: \"pop\"\n },\n { include: \"string\" }]\n }],\n cdata: [\n { token: \"string.cdata.xml\", regex: \"\\\\]\\\\]>\", next: \"start\" },\n { token: \"text.xml\", regex: \"\\\\s+\" },\n { token: \"text.xml\", regex: \"(?:[^\\\\]]|\\\\](?!\\\\]>))+\" }\n ],\n comment: [\n { token: \"comment.end.xml\", regex: \"-->\", next: \"start\" },\n { defaultToken: \"comment.xml\" }\n ],\n reference: [{\n token: \"constant.language.escape.reference.xml\",\n regex: \"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\\\.-]+;)\"\n }],\n attr_reference: [{\n token: \"constant.language.escape.reference.attribute-value.xml\",\n regex: \"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\\\.-]+;)\"\n }],\n tag: [{\n token: [\"meta.tag.punctuation.tag-open.xml\", \"meta.tag.punctuation.end-tag-open.xml\", \"meta.tag.tag-name.xml\"],\n regex: \"(?:(<)|(\", next: \"start\" }\n ]\n }],\n tag_whitespace: [\n { token: \"text.tag-whitespace.xml\", regex: \"\\\\s+\" }\n ],\n whitespace: [\n { token: \"text.whitespace.xml\", regex: \"\\\\s+\" }\n ],\n string: [{\n token: \"string.xml\",\n regex: \"'\",\n push: [\n { token: \"string.xml\", regex: \"'\", next: \"pop\" },\n { defaultToken: \"string.xml\" }\n ]\n }, {\n token: \"string.xml\",\n regex: '\"',\n push: [\n { token: \"string.xml\", regex: '\"', next: \"pop\" },\n { defaultToken: \"string.xml\" }\n ]\n }],\n attributes: [{\n token: \"entity.other.attribute-name.xml\",\n regex: tagRegex\n }, {\n token: \"keyword.operator.attribute-equals.xml\",\n regex: \"=\"\n }, {\n include: \"tag_whitespace\"\n }, {\n include: \"attribute_value\"\n }],\n attribute_value: [{\n token: \"string.attribute-value.xml\",\n regex: \"'\",\n push: [\n { token: \"string.attribute-value.xml\", regex: \"'\", next: \"pop\" },\n { include: \"attr_reference\" },\n { defaultToken: \"string.attribute-value.xml\" }\n ]\n }, {\n token: \"string.attribute-value.xml\",\n regex: '\"',\n push: [\n { token: \"string.attribute-value.xml\", regex: '\"', next: \"pop\" },\n { include: \"attr_reference\" },\n { defaultToken: \"string.attribute-value.xml\" }\n ]\n }]\n };\n if (this.constructor === XmlHighlightRules)\n this.normalizeRules();\n};\n(function () {\n this.embedTagRules = function (HighlightRules, prefix, tag) {\n this.$rules.tag.unshift({\n token: [\"meta.tag.punctuation.tag-open.xml\", \"meta.tag.\" + tag + \".tag-name.xml\"],\n regex: \"(<)(\" + tag + \"(?=\\\\s|>|$))\",\n next: [\n { include: \"attributes\" },\n { token: \"meta.tag.punctuation.tag-close.xml\", regex: \"/?>\", next: prefix + \"start\" }\n ]\n });\n this.$rules[tag + \"-end\"] = [\n { include: \"attributes\" },\n { token: \"meta.tag.punctuation.tag-close.xml\", regex: \"/?>\", next: \"start\",\n onMatch: function (value, currentState, stack) {\n stack.splice(0);\n return this.token;\n } }\n ];\n this.embedRules(HighlightRules, prefix, [{\n token: [\"meta.tag.punctuation.end-tag-open.xml\", \"meta.tag.\" + tag + \".tag-name.xml\"],\n regex: \"(|$))\",\n next: tag + \"-end\"\n }, {\n token: \"string.cdata.xml\",\n regex: \"<\\\\!\\\\[CDATA\\\\[\"\n }, {\n token: \"string.cdata.xml\",\n regex: \"\\\\]\\\\]>\"\n }]);\n };\n}).call(TextHighlightRules.prototype);\noop.inherits(XmlHighlightRules, TextHighlightRules);\nexports.XmlHighlightRules = XmlHighlightRules;\n\n});\n\nace.define(\"ace/mode/behaviour/xml\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/behaviour\",\"ace/token_iterator\",\"ace/lib/lang\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../../lib/oop\");\nvar Behaviour = require(\"../behaviour\").Behaviour;\nvar TokenIterator = require(\"../../token_iterator\").TokenIterator;\nvar lang = require(\"../../lib/lang\");\nfunction is(token, type) {\n return token && token.type.lastIndexOf(type + \".xml\") > -1;\n}\nvar XmlBehaviour = function () {\n this.add(\"string_dquotes\", \"insertion\", function (state, action, editor, session, text) {\n if (text == '\"' || text == \"'\") {\n var quote = text;\n var selected = session.doc.getTextRange(editor.getSelectionRange());\n if (selected !== \"\" && selected !== \"'\" && selected != '\"' && editor.getWrapBehavioursEnabled()) {\n return {\n text: quote + selected + quote,\n selection: false\n };\n }\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n var token = iterator.getCurrentToken();\n if (rightChar == quote && (is(token, \"attribute-value\") || is(token, \"string\"))) {\n return {\n text: \"\",\n selection: [1, 1]\n };\n }\n if (!token)\n token = iterator.stepBackward();\n if (!token)\n return;\n while (is(token, \"tag-whitespace\") || is(token, \"whitespace\")) {\n token = iterator.stepBackward();\n }\n var rightSpace = !rightChar || rightChar.match(/\\s/);\n if (is(token, \"attribute-equals\") && (rightSpace || rightChar == '>') || (is(token, \"decl-attribute-equals\") && (rightSpace || rightChar == '?'))) {\n return {\n text: quote + quote,\n selection: [1, 1]\n };\n }\n }\n });\n this.add(\"string_dquotes\", \"deletion\", function (state, action, editor, session, range) {\n var selected = session.doc.getTextRange(range);\n if (!range.isMultiLine() && (selected == '\"' || selected == \"'\")) {\n var line = session.doc.getLine(range.start.row);\n var rightChar = line.substring(range.start.column + 1, range.start.column + 2);\n if (rightChar == selected) {\n range.end.column++;\n return range;\n }\n }\n });\n this.add(\"autoclosing\", \"insertion\", function (state, action, editor, session, text) {\n if (text == '>') {\n var position = editor.getSelectionRange().start;\n var iterator = new TokenIterator(session, position.row, position.column);\n var token = iterator.getCurrentToken() || iterator.stepBackward();\n if (!token || !(is(token, \"tag-name\") || is(token, \"tag-whitespace\") || is(token, \"attribute-name\") || is(token, \"attribute-equals\") || is(token, \"attribute-value\")))\n return;\n if (is(token, \"reference.attribute-value\"))\n return;\n if (is(token, \"attribute-value\")) {\n var tokenEndColumn = iterator.getCurrentTokenColumn() + token.value.length;\n if (position.column < tokenEndColumn)\n return;\n if (position.column == tokenEndColumn) {\n var nextToken = iterator.stepForward();\n if (nextToken && is(nextToken, \"attribute-value\"))\n return;\n iterator.stepBackward();\n }\n }\n if (/^\\s*>/.test(session.getLine(position.row).slice(position.column)))\n return;\n while (!is(token, \"tag-name\")) {\n token = iterator.stepBackward();\n if (token.value == \"<\") {\n token = iterator.stepForward();\n break;\n }\n }\n var tokenRow = iterator.getCurrentTokenRow();\n var tokenColumn = iterator.getCurrentTokenColumn();\n if (is(iterator.stepBackward(), \"end-tag-open\"))\n return;\n var element = token.value;\n if (tokenRow == position.row)\n element = element.substring(0, position.column - tokenColumn);\n if (this.voidElements.hasOwnProperty(element.toLowerCase()))\n return;\n return {\n text: \">\" + \"\",\n selection: [1, 1]\n };\n }\n });\n this.add(\"autoindent\", \"insertion\", function (state, action, editor, session, text) {\n if (text == \"\\n\") {\n var cursor = editor.getCursorPosition();\n var line = session.getLine(cursor.row);\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n var token = iterator.getCurrentToken();\n if (token && token.type.indexOf(\"tag-close\") !== -1) {\n if (token.value == \"/>\")\n return;\n while (token && token.type.indexOf(\"tag-name\") === -1) {\n token = iterator.stepBackward();\n }\n if (!token) {\n return;\n }\n var tag = token.value;\n var row = iterator.getCurrentTokenRow();\n token = iterator.stepBackward();\n if (!token || token.type.indexOf(\"end-tag\") !== -1) {\n return;\n }\n if (this.voidElements && !this.voidElements[tag]) {\n var nextToken = session.getTokenAt(cursor.row, cursor.column + 1);\n var line = session.getLine(row);\n var nextIndent = this.$getIndent(line);\n var indent = nextIndent + session.getTabString();\n if (nextToken && nextToken.value === \" -1;\n}\n(function () {\n this.getFoldWidget = function (session, foldStyle, row) {\n var tag = this._getFirstTagInLine(session, row);\n if (!tag)\n return this.getCommentFoldWidget(session, row);\n if (tag.closing || (!tag.tagName && tag.selfClosing))\n return foldStyle === \"markbeginend\" ? \"end\" : \"\";\n if (!tag.tagName || tag.selfClosing || this.voidElements.hasOwnProperty(tag.tagName.toLowerCase()))\n return \"\";\n if (this._findEndTagInLine(session, row, tag.tagName, tag.end.column))\n return \"\";\n return \"start\";\n };\n this.getCommentFoldWidget = function (session, row) {\n if (/comment/.test(session.getState(row)) && /';\n break;\n }\n }\n return tag;\n }\n else if (is(token, \"tag-close\")) {\n tag.selfClosing = token.value == '/>';\n return tag;\n }\n tag.start.column += token.value.length;\n }\n return null;\n };\n this._findEndTagInLine = function (session, row, tagName, startColumn) {\n var tokens = session.getTokens(row);\n var column = 0;\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n column += token.value.length;\n if (column < startColumn)\n continue;\n if (is(token, \"end-tag-open\")) {\n token = tokens[i + 1];\n if (token && token.value == tagName)\n return true;\n }\n }\n return false;\n };\n this.getFoldWidgetRange = function (session, foldStyle, row) {\n var tags = session.getMatchingTags({ row: row, column: 0 });\n if (tags) {\n return new Range(tags.openTag.end.row, tags.openTag.end.column, tags.closeTag.start.row, tags.closeTag.start.column);\n }\n else {\n return this.getCommentFoldWidget(session, row)\n && session.getCommentFoldRange(row, session.getLine(row).length);\n }\n };\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/xml\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/mode/text\",\"ace/mode/xml_highlight_rules\",\"ace/mode/behaviour/xml\",\"ace/mode/folding/xml\",\"ace/worker/worker_client\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar lang = require(\"../lib/lang\");\nvar TextMode = require(\"./text\").Mode;\nvar XmlHighlightRules = require(\"./xml_highlight_rules\").XmlHighlightRules;\nvar XmlBehaviour = require(\"./behaviour/xml\").XmlBehaviour;\nvar XmlFoldMode = require(\"./folding/xml\").FoldMode;\nvar WorkerClient = require(\"../worker/worker_client\").WorkerClient;\nvar Mode = function () {\n this.HighlightRules = XmlHighlightRules;\n this.$behaviour = new XmlBehaviour();\n this.foldingRules = new XmlFoldMode();\n};\noop.inherits(Mode, TextMode);\n(function () {\n this.voidElements = lang.arrayToMap([]);\n this.blockComment = { start: \"\" };\n this.createWorker = function (session) {\n var worker = new WorkerClient([\"ace\"], \"ace/mode/xml_worker\", \"Worker\");\n worker.attachToDocument(session.getDocument());\n worker.on(\"error\", function (e) {\n session.setAnnotations(e.data);\n });\n worker.on(\"terminate\", function () {\n session.clearAnnotations();\n });\n return worker;\n };\n this.$id = \"ace/mode/xml\";\n}).call(Mode.prototype);\nexports.Mode = Mode;\n\n}); (function() {\n ace.require([\"ace/mode/xml\"], function(m) {\n if (typeof module == \"object\" && typeof exports == \"object\" && module) {\n module.exports = m;\n }\n });\n })();\n ","ace.define(\"ace/theme/github-css\",[\"require\",\"exports\",\"module\"], function(require, exports, module){module.exports = \"/* CSS style content from github's default pygments highlighter template.\\n Cursor and selection styles from textmate.css. */\\n.ace-github .ace_gutter {\\n background: #e8e8e8;\\n color: #AAA;\\n}\\n\\n.ace-github {\\n background: #fff;\\n color: #000;\\n}\\n\\n.ace-github .ace_keyword {\\n font-weight: bold;\\n}\\n\\n.ace-github .ace_string {\\n color: #D14;\\n}\\n\\n.ace-github .ace_variable.ace_class {\\n color: teal;\\n}\\n\\n.ace-github .ace_constant.ace_numeric {\\n color: #099;\\n}\\n\\n.ace-github .ace_constant.ace_buildin {\\n color: #0086B3;\\n}\\n\\n.ace-github .ace_support.ace_function {\\n color: #0086B3;\\n}\\n\\n.ace-github .ace_comment {\\n color: #998;\\n font-style: italic;\\n}\\n\\n.ace-github .ace_variable.ace_language {\\n color: #0086B3;\\n}\\n\\n.ace-github .ace_paren {\\n font-weight: bold;\\n}\\n\\n.ace-github .ace_boolean {\\n font-weight: bold;\\n}\\n\\n.ace-github .ace_string.ace_regexp {\\n color: #009926;\\n font-weight: normal;\\n}\\n\\n.ace-github .ace_variable.ace_instance {\\n color: teal;\\n}\\n\\n.ace-github .ace_constant.ace_language {\\n font-weight: bold;\\n}\\n\\n.ace-github .ace_cursor {\\n color: black;\\n}\\n\\n.ace-github.ace_focus .ace_marker-layer .ace_active-line {\\n background: rgb(255, 255, 204);\\n}\\n.ace-github .ace_marker-layer .ace_active-line {\\n background: rgb(245, 245, 245);\\n}\\n\\n.ace-github .ace_marker-layer .ace_selection {\\n background: rgb(181, 213, 255);\\n}\\n\\n.ace-github.ace_multiselect .ace_selection.ace_start {\\n box-shadow: 0 0 3px 0px white;\\n}\\n/* bold keywords cause cursor issues for some fonts */\\n/* this disables bold style for editor and keeps for static highlighter */\\n.ace-github.ace_nobold .ace_line > span {\\n font-weight: normal !important;\\n}\\n\\n.ace-github .ace_marker-layer .ace_step {\\n background: rgb(252, 255, 0);\\n}\\n\\n.ace-github .ace_marker-layer .ace_stack {\\n background: rgb(164, 229, 101);\\n}\\n\\n.ace-github .ace_marker-layer .ace_bracket {\\n margin: -1px 0 0 -1px;\\n border: 1px solid rgb(192, 192, 192);\\n}\\n\\n.ace-github .ace_gutter-active-line {\\n background-color : rgba(0, 0, 0, 0.07);\\n}\\n\\n.ace-github .ace_marker-layer .ace_selected-word {\\n background: rgb(250, 250, 255);\\n border: 1px solid rgb(200, 200, 250);\\n}\\n\\n.ace-github .ace_invisible {\\n color: #BFBFBF\\n}\\n\\n.ace-github .ace_print-margin {\\n width: 1px;\\n background: #e8e8e8;\\n}\\n\\n.ace-github .ace_indent-guide {\\n background: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==\\\") right repeat-y;\\n}\\n\\n.ace-github .ace_indent-guide-active {\\n background: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAAZSURBVHjaYvj///9/hivKyv8BAAAA//8DACLqBhbvk+/eAAAAAElFTkSuQmCC\\\") right repeat-y;\\n}\\n\";\n\n});\n\nace.define(\"ace/theme/github\",[\"require\",\"exports\",\"module\",\"ace/theme/github-css\",\"ace/lib/dom\"], function(require, exports, module){exports.isDark = false;\nexports.cssClass = \"ace-github\";\nexports.cssText = require(\"./github-css\");\nvar dom = require(\"../lib/dom\");\ndom.importCssString(exports.cssText, exports.cssClass, false);\n\n}); (function() {\n ace.require([\"ace/theme/github\"], function(m) {\n if (typeof module == \"object\" && typeof exports == \"object\" && module) {\n module.exports = m;\n }\n });\n })();\n ","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.flatpickr-calendar{background:transparent;opacity:0;display:none;text-align:center;visibility:hidden;padding:0;-webkit-animation:none;animation:none;direction:ltr;border:0;font-size:14px;line-height:24px;border-radius:5px;position:absolute;width:307.875px;-webkit-box-sizing:border-box;box-sizing:border-box;-ms-touch-action:manipulation;touch-action:manipulation;background:#fff;-webkit-box-shadow:1px 0 0 #e6e6e6,-1px 0 0 #e6e6e6,0 1px 0 #e6e6e6,0 -1px 0 #e6e6e6,0 3px 13px rgba(0,0,0,0.08);box-shadow:1px 0 0 #e6e6e6,-1px 0 0 #e6e6e6,0 1px 0 #e6e6e6,0 -1px 0 #e6e6e6,0 3px 13px rgba(0,0,0,0.08)}.flatpickr-calendar.open,.flatpickr-calendar.inline{opacity:1;max-height:640px;visibility:visible}.flatpickr-calendar.open{display:inline-block;z-index:99999}.flatpickr-calendar.animate.open{-webkit-animation:fpFadeInDown 300ms cubic-bezier(.23,1,.32,1);animation:fpFadeInDown 300ms cubic-bezier(.23,1,.32,1)}.flatpickr-calendar.inline{display:block;position:relative;top:2px}.flatpickr-calendar.static{position:absolute;top:calc(100% + 2px)}.flatpickr-calendar.static.open{z-index:999;display:block}.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+1) .flatpickr-day.inRange:nth-child(7n+7){-webkit-box-shadow:none !important;box-shadow:none !important}.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+2) .flatpickr-day.inRange:nth-child(7n+1){-webkit-box-shadow:-2px 0 0 #e6e6e6,5px 0 0 #e6e6e6;box-shadow:-2px 0 0 #e6e6e6,5px 0 0 #e6e6e6}.flatpickr-calendar .hasWeeks .dayContainer,.flatpickr-calendar .hasTime .dayContainer{border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.flatpickr-calendar .hasWeeks .dayContainer{border-left:0}.flatpickr-calendar.hasTime .flatpickr-time{height:40px;border-top:1px solid #e6e6e6}.flatpickr-calendar.noCalendar.hasTime .flatpickr-time{height:auto}.flatpickr-calendar:before,.flatpickr-calendar:after{position:absolute;display:block;pointer-events:none;border:solid transparent;content:'';height:0;width:0;left:22px}.flatpickr-calendar.rightMost:before,.flatpickr-calendar.arrowRight:before,.flatpickr-calendar.rightMost:after,.flatpickr-calendar.arrowRight:after{left:auto;right:22px}.flatpickr-calendar.arrowCenter:before,.flatpickr-calendar.arrowCenter:after{left:50%;right:50%}.flatpickr-calendar:before{border-width:5px;margin:0 -5px}.flatpickr-calendar:after{border-width:4px;margin:0 -4px}.flatpickr-calendar.arrowTop:before,.flatpickr-calendar.arrowTop:after{bottom:100%}.flatpickr-calendar.arrowTop:before{border-bottom-color:#e6e6e6}.flatpickr-calendar.arrowTop:after{border-bottom-color:#fff}.flatpickr-calendar.arrowBottom:before,.flatpickr-calendar.arrowBottom:after{top:100%}.flatpickr-calendar.arrowBottom:before{border-top-color:#e6e6e6}.flatpickr-calendar.arrowBottom:after{border-top-color:#fff}.flatpickr-calendar:focus{outline:0}.flatpickr-wrapper{position:relative;display:inline-block}.flatpickr-months{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.flatpickr-months .flatpickr-month{background:transparent;color:rgba(0,0,0,0.9);fill:rgba(0,0,0,0.9);height:34px;line-height:1;text-align:center;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:hidden;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}.flatpickr-months .flatpickr-prev-month,.flatpickr-months .flatpickr-next-month{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;text-decoration:none;cursor:pointer;position:absolute;top:0;height:34px;padding:10px;z-index:3;color:rgba(0,0,0,0.9);fill:rgba(0,0,0,0.9)}.flatpickr-months .flatpickr-prev-month.flatpickr-disabled,.flatpickr-months .flatpickr-next-month.flatpickr-disabled{display:none}.flatpickr-months .flatpickr-prev-month i,.flatpickr-months .flatpickr-next-month i{position:relative}.flatpickr-months .flatpickr-prev-month.flatpickr-prev-month,.flatpickr-months .flatpickr-next-month.flatpickr-prev-month{/*\n /*rtl:begin:ignore*/left:0/*\n /*rtl:end:ignore*/}/*\n /*rtl:begin:ignore*/\n/*\n /*rtl:end:ignore*/\n.flatpickr-months .flatpickr-prev-month.flatpickr-next-month,.flatpickr-months .flatpickr-next-month.flatpickr-next-month{/*\n /*rtl:begin:ignore*/right:0/*\n /*rtl:end:ignore*/}/*\n /*rtl:begin:ignore*/\n/*\n /*rtl:end:ignore*/\n.flatpickr-months .flatpickr-prev-month:hover,.flatpickr-months .flatpickr-next-month:hover{color:#959ea9}.flatpickr-months .flatpickr-prev-month:hover svg,.flatpickr-months .flatpickr-next-month:hover svg{fill:#f64747}.flatpickr-months .flatpickr-prev-month svg,.flatpickr-months .flatpickr-next-month svg{width:14px;height:14px}.flatpickr-months .flatpickr-prev-month svg path,.flatpickr-months .flatpickr-next-month svg path{-webkit-transition:fill .1s;transition:fill .1s;fill:inherit}.numInputWrapper{position:relative;height:auto}.numInputWrapper input,.numInputWrapper span{display:inline-block}.numInputWrapper input{width:100%}.numInputWrapper input::-ms-clear{display:none}.numInputWrapper input::-webkit-outer-spin-button,.numInputWrapper input::-webkit-inner-spin-button{margin:0;-webkit-appearance:none}.numInputWrapper span{position:absolute;right:0;width:14px;padding:0 4px 0 2px;height:50%;line-height:50%;opacity:0;cursor:pointer;border:1px solid rgba(57,57,57,0.15);-webkit-box-sizing:border-box;box-sizing:border-box}.numInputWrapper span:hover{background:rgba(0,0,0,0.1)}.numInputWrapper span:active{background:rgba(0,0,0,0.2)}.numInputWrapper span:after{display:block;content:\"\";position:absolute}.numInputWrapper span.arrowUp{top:0;border-bottom:0}.numInputWrapper span.arrowUp:after{border-left:4px solid transparent;border-right:4px solid transparent;border-bottom:4px solid rgba(57,57,57,0.6);top:26%}.numInputWrapper span.arrowDown{top:50%}.numInputWrapper span.arrowDown:after{border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px solid rgba(57,57,57,0.6);top:40%}.numInputWrapper span svg{width:inherit;height:auto}.numInputWrapper span svg path{fill:rgba(0,0,0,0.5)}.numInputWrapper:hover{background:rgba(0,0,0,0.05)}.numInputWrapper:hover span{opacity:1}.flatpickr-current-month{font-size:135%;line-height:inherit;font-weight:300;color:inherit;position:absolute;width:75%;left:12.5%;padding:7.48px 0 0 0;line-height:1;height:34px;display:inline-block;text-align:center;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.flatpickr-current-month span.cur-month{font-family:inherit;font-weight:700;color:inherit;display:inline-block;margin-left:.5ch;padding:0}.flatpickr-current-month span.cur-month:hover{background:rgba(0,0,0,0.05)}.flatpickr-current-month .numInputWrapper{width:6ch;width:7ch\\\\0;display:inline-block}.flatpickr-current-month .numInputWrapper span.arrowUp:after{border-bottom-color:rgba(0,0,0,0.9)}.flatpickr-current-month .numInputWrapper span.arrowDown:after{border-top-color:rgba(0,0,0,0.9)}.flatpickr-current-month input.cur-year{background:transparent;-webkit-box-sizing:border-box;box-sizing:border-box;color:inherit;cursor:text;padding:0 0 0 .5ch;margin:0;display:inline-block;font-size:inherit;font-family:inherit;font-weight:300;line-height:inherit;height:auto;border:0;border-radius:0;vertical-align:initial;-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.flatpickr-current-month input.cur-year:focus{outline:0}.flatpickr-current-month input.cur-year[disabled],.flatpickr-current-month input.cur-year[disabled]:hover{font-size:100%;color:rgba(0,0,0,0.5);background:transparent;pointer-events:none}.flatpickr-current-month .flatpickr-monthDropdown-months{appearance:menulist;background:transparent;border:none;border-radius:0;box-sizing:border-box;color:inherit;cursor:pointer;font-size:inherit;font-family:inherit;font-weight:300;height:auto;line-height:inherit;margin:-1px 0 0 0;outline:none;padding:0 0 0 .5ch;position:relative;vertical-align:initial;-webkit-box-sizing:border-box;-webkit-appearance:menulist;-moz-appearance:menulist;width:auto}.flatpickr-current-month .flatpickr-monthDropdown-months:focus,.flatpickr-current-month .flatpickr-monthDropdown-months:active{outline:none}.flatpickr-current-month .flatpickr-monthDropdown-months:hover{background:rgba(0,0,0,0.05)}.flatpickr-current-month .flatpickr-monthDropdown-months .flatpickr-monthDropdown-month{background-color:transparent;outline:none;padding:0}.flatpickr-weekdays{background:transparent;text-align:center;overflow:hidden;width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;height:28px}.flatpickr-weekdays .flatpickr-weekdaycontainer{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}span.flatpickr-weekday{cursor:default;font-size:90%;background:transparent;color:rgba(0,0,0,0.54);line-height:1;margin:0;text-align:center;display:block;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;font-weight:bolder}.dayContainer,.flatpickr-weeks{padding:1px 0 0 0}.flatpickr-days{position:relative;overflow:hidden;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:flex-start;width:307.875px}.flatpickr-days:focus{outline:0}.dayContainer{padding:0;outline:0;text-align:left;width:307.875px;min-width:307.875px;max-width:307.875px;-webkit-box-sizing:border-box;box-sizing:border-box;display:inline-block;display:-ms-flexbox;display:-webkit-box;display:-webkit-flex;display:flex;-webkit-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-wrap:wrap;-ms-flex-pack:justify;-webkit-justify-content:space-around;justify-content:space-around;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}.dayContainer + .dayContainer{-webkit-box-shadow:-1px 0 0 #e6e6e6;box-shadow:-1px 0 0 #e6e6e6}.flatpickr-day{background:none;border:1px solid transparent;border-radius:150px;-webkit-box-sizing:border-box;box-sizing:border-box;color:#393939;cursor:pointer;font-weight:400;width:14.2857143%;-webkit-flex-basis:14.2857143%;-ms-flex-preferred-size:14.2857143%;flex-basis:14.2857143%;max-width:39px;height:39px;line-height:39px;margin:0;display:inline-block;position:relative;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;text-align:center}.flatpickr-day.inRange,.flatpickr-day.prevMonthDay.inRange,.flatpickr-day.nextMonthDay.inRange,.flatpickr-day.today.inRange,.flatpickr-day.prevMonthDay.today.inRange,.flatpickr-day.nextMonthDay.today.inRange,.flatpickr-day:hover,.flatpickr-day.prevMonthDay:hover,.flatpickr-day.nextMonthDay:hover,.flatpickr-day:focus,.flatpickr-day.prevMonthDay:focus,.flatpickr-day.nextMonthDay:focus{cursor:pointer;outline:0;background:#e6e6e6;border-color:#e6e6e6}.flatpickr-day.today{border-color:#959ea9}.flatpickr-day.today:hover,.flatpickr-day.today:focus{border-color:#959ea9;background:#959ea9;color:#fff}.flatpickr-day.selected,.flatpickr-day.startRange,.flatpickr-day.endRange,.flatpickr-day.selected.inRange,.flatpickr-day.startRange.inRange,.flatpickr-day.endRange.inRange,.flatpickr-day.selected:focus,.flatpickr-day.startRange:focus,.flatpickr-day.endRange:focus,.flatpickr-day.selected:hover,.flatpickr-day.startRange:hover,.flatpickr-day.endRange:hover,.flatpickr-day.selected.prevMonthDay,.flatpickr-day.startRange.prevMonthDay,.flatpickr-day.endRange.prevMonthDay,.flatpickr-day.selected.nextMonthDay,.flatpickr-day.startRange.nextMonthDay,.flatpickr-day.endRange.nextMonthDay{background:#569ff7;-webkit-box-shadow:none;box-shadow:none;color:#fff;border-color:#569ff7}.flatpickr-day.selected.startRange,.flatpickr-day.startRange.startRange,.flatpickr-day.endRange.startRange{border-radius:50px 0 0 50px}.flatpickr-day.selected.endRange,.flatpickr-day.startRange.endRange,.flatpickr-day.endRange.endRange{border-radius:0 50px 50px 0}.flatpickr-day.selected.startRange + .endRange:not(:nth-child(7n+1)),.flatpickr-day.startRange.startRange + .endRange:not(:nth-child(7n+1)),.flatpickr-day.endRange.startRange + .endRange:not(:nth-child(7n+1)){-webkit-box-shadow:-10px 0 0 #569ff7;box-shadow:-10px 0 0 #569ff7}.flatpickr-day.selected.startRange.endRange,.flatpickr-day.startRange.startRange.endRange,.flatpickr-day.endRange.startRange.endRange{border-radius:50px}.flatpickr-day.inRange{border-radius:0;-webkit-box-shadow:-5px 0 0 #e6e6e6,5px 0 0 #e6e6e6;box-shadow:-5px 0 0 #e6e6e6,5px 0 0 #e6e6e6}.flatpickr-day.flatpickr-disabled,.flatpickr-day.flatpickr-disabled:hover,.flatpickr-day.prevMonthDay,.flatpickr-day.nextMonthDay,.flatpickr-day.notAllowed,.flatpickr-day.notAllowed.prevMonthDay,.flatpickr-day.notAllowed.nextMonthDay{color:rgba(57,57,57,0.3);background:transparent;border-color:transparent;cursor:default}.flatpickr-day.flatpickr-disabled,.flatpickr-day.flatpickr-disabled:hover{cursor:not-allowed;color:rgba(57,57,57,0.1)}.flatpickr-day.week.selected{border-radius:0;-webkit-box-shadow:-5px 0 0 #569ff7,5px 0 0 #569ff7;box-shadow:-5px 0 0 #569ff7,5px 0 0 #569ff7}.flatpickr-day.hidden{visibility:hidden}.rangeMode .flatpickr-day{margin-top:1px}.flatpickr-weekwrapper{float:left}.flatpickr-weekwrapper .flatpickr-weeks{padding:0 12px;-webkit-box-shadow:1px 0 0 #e6e6e6;box-shadow:1px 0 0 #e6e6e6}.flatpickr-weekwrapper .flatpickr-weekday{float:none;width:100%;line-height:28px}.flatpickr-weekwrapper span.flatpickr-day,.flatpickr-weekwrapper span.flatpickr-day:hover{display:block;width:100%;max-width:none;color:rgba(57,57,57,0.3);background:transparent;cursor:default;border:none}.flatpickr-innerContainer{display:block;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden}.flatpickr-rContainer{display:inline-block;padding:0;-webkit-box-sizing:border-box;box-sizing:border-box}.flatpickr-time{text-align:center;outline:0;display:block;height:0;line-height:40px;max-height:40px;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.flatpickr-time:after{content:\"\";display:table;clear:both}.flatpickr-time .numInputWrapper{-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;width:40%;height:40px;float:left}.flatpickr-time .numInputWrapper span.arrowUp:after{border-bottom-color:#393939}.flatpickr-time .numInputWrapper span.arrowDown:after{border-top-color:#393939}.flatpickr-time.hasSeconds .numInputWrapper{width:26%}.flatpickr-time.time24hr .numInputWrapper{width:49%}.flatpickr-time input{background:transparent;-webkit-box-shadow:none;box-shadow:none;border:0;border-radius:0;text-align:center;margin:0;padding:0;height:inherit;line-height:inherit;color:#393939;font-size:14px;position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.flatpickr-time input.flatpickr-hour{font-weight:bold}.flatpickr-time input.flatpickr-minute,.flatpickr-time input.flatpickr-second{font-weight:400}.flatpickr-time input:focus{outline:0;border:0}.flatpickr-time .flatpickr-time-separator,.flatpickr-time .flatpickr-am-pm{height:inherit;float:left;line-height:inherit;color:#393939;font-weight:bold;width:2%;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-align-self:center;-ms-flex-item-align:center;align-self:center}.flatpickr-time .flatpickr-am-pm{outline:0;width:18%;cursor:pointer;text-align:center;font-weight:400}.flatpickr-time input:hover,.flatpickr-time .flatpickr-am-pm:hover,.flatpickr-time input:focus,.flatpickr-time .flatpickr-am-pm:focus{background:#eee}.flatpickr-input[readonly]{cursor:pointer}@-webkit-keyframes fpFadeInDown{from{opacity:0;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@keyframes fpFadeInDown{from{opacity:0;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/flatpickr/dist/flatpickr.min.css\"],\"names\":[],\"mappings\":\"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\",\"sourcesContent\":[\".flatpickr-calendar{background:transparent;opacity:0;display:none;text-align:center;visibility:hidden;padding:0;-webkit-animation:none;animation:none;direction:ltr;border:0;font-size:14px;line-height:24px;border-radius:5px;position:absolute;width:307.875px;-webkit-box-sizing:border-box;box-sizing:border-box;-ms-touch-action:manipulation;touch-action:manipulation;background:#fff;-webkit-box-shadow:1px 0 0 #e6e6e6,-1px 0 0 #e6e6e6,0 1px 0 #e6e6e6,0 -1px 0 #e6e6e6,0 3px 13px rgba(0,0,0,0.08);box-shadow:1px 0 0 #e6e6e6,-1px 0 0 #e6e6e6,0 1px 0 #e6e6e6,0 -1px 0 #e6e6e6,0 3px 13px rgba(0,0,0,0.08)}.flatpickr-calendar.open,.flatpickr-calendar.inline{opacity:1;max-height:640px;visibility:visible}.flatpickr-calendar.open{display:inline-block;z-index:99999}.flatpickr-calendar.animate.open{-webkit-animation:fpFadeInDown 300ms cubic-bezier(.23,1,.32,1);animation:fpFadeInDown 300ms cubic-bezier(.23,1,.32,1)}.flatpickr-calendar.inline{display:block;position:relative;top:2px}.flatpickr-calendar.static{position:absolute;top:calc(100% + 2px)}.flatpickr-calendar.static.open{z-index:999;display:block}.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+1) .flatpickr-day.inRange:nth-child(7n+7){-webkit-box-shadow:none !important;box-shadow:none !important}.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+2) .flatpickr-day.inRange:nth-child(7n+1){-webkit-box-shadow:-2px 0 0 #e6e6e6,5px 0 0 #e6e6e6;box-shadow:-2px 0 0 #e6e6e6,5px 0 0 #e6e6e6}.flatpickr-calendar .hasWeeks .dayContainer,.flatpickr-calendar .hasTime .dayContainer{border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.flatpickr-calendar .hasWeeks .dayContainer{border-left:0}.flatpickr-calendar.hasTime .flatpickr-time{height:40px;border-top:1px solid #e6e6e6}.flatpickr-calendar.noCalendar.hasTime .flatpickr-time{height:auto}.flatpickr-calendar:before,.flatpickr-calendar:after{position:absolute;display:block;pointer-events:none;border:solid transparent;content:'';height:0;width:0;left:22px}.flatpickr-calendar.rightMost:before,.flatpickr-calendar.arrowRight:before,.flatpickr-calendar.rightMost:after,.flatpickr-calendar.arrowRight:after{left:auto;right:22px}.flatpickr-calendar.arrowCenter:before,.flatpickr-calendar.arrowCenter:after{left:50%;right:50%}.flatpickr-calendar:before{border-width:5px;margin:0 -5px}.flatpickr-calendar:after{border-width:4px;margin:0 -4px}.flatpickr-calendar.arrowTop:before,.flatpickr-calendar.arrowTop:after{bottom:100%}.flatpickr-calendar.arrowTop:before{border-bottom-color:#e6e6e6}.flatpickr-calendar.arrowTop:after{border-bottom-color:#fff}.flatpickr-calendar.arrowBottom:before,.flatpickr-calendar.arrowBottom:after{top:100%}.flatpickr-calendar.arrowBottom:before{border-top-color:#e6e6e6}.flatpickr-calendar.arrowBottom:after{border-top-color:#fff}.flatpickr-calendar:focus{outline:0}.flatpickr-wrapper{position:relative;display:inline-block}.flatpickr-months{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.flatpickr-months .flatpickr-month{background:transparent;color:rgba(0,0,0,0.9);fill:rgba(0,0,0,0.9);height:34px;line-height:1;text-align:center;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:hidden;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}.flatpickr-months .flatpickr-prev-month,.flatpickr-months .flatpickr-next-month{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;text-decoration:none;cursor:pointer;position:absolute;top:0;height:34px;padding:10px;z-index:3;color:rgba(0,0,0,0.9);fill:rgba(0,0,0,0.9)}.flatpickr-months .flatpickr-prev-month.flatpickr-disabled,.flatpickr-months .flatpickr-next-month.flatpickr-disabled{display:none}.flatpickr-months .flatpickr-prev-month i,.flatpickr-months .flatpickr-next-month i{position:relative}.flatpickr-months .flatpickr-prev-month.flatpickr-prev-month,.flatpickr-months .flatpickr-next-month.flatpickr-prev-month{/*\\n /*rtl:begin:ignore*/left:0/*\\n /*rtl:end:ignore*/}/*\\n /*rtl:begin:ignore*/\\n/*\\n /*rtl:end:ignore*/\\n.flatpickr-months .flatpickr-prev-month.flatpickr-next-month,.flatpickr-months .flatpickr-next-month.flatpickr-next-month{/*\\n /*rtl:begin:ignore*/right:0/*\\n /*rtl:end:ignore*/}/*\\n /*rtl:begin:ignore*/\\n/*\\n /*rtl:end:ignore*/\\n.flatpickr-months .flatpickr-prev-month:hover,.flatpickr-months .flatpickr-next-month:hover{color:#959ea9}.flatpickr-months .flatpickr-prev-month:hover svg,.flatpickr-months .flatpickr-next-month:hover svg{fill:#f64747}.flatpickr-months .flatpickr-prev-month svg,.flatpickr-months .flatpickr-next-month svg{width:14px;height:14px}.flatpickr-months .flatpickr-prev-month svg path,.flatpickr-months .flatpickr-next-month svg path{-webkit-transition:fill .1s;transition:fill .1s;fill:inherit}.numInputWrapper{position:relative;height:auto}.numInputWrapper input,.numInputWrapper span{display:inline-block}.numInputWrapper input{width:100%}.numInputWrapper input::-ms-clear{display:none}.numInputWrapper input::-webkit-outer-spin-button,.numInputWrapper input::-webkit-inner-spin-button{margin:0;-webkit-appearance:none}.numInputWrapper span{position:absolute;right:0;width:14px;padding:0 4px 0 2px;height:50%;line-height:50%;opacity:0;cursor:pointer;border:1px solid rgba(57,57,57,0.15);-webkit-box-sizing:border-box;box-sizing:border-box}.numInputWrapper span:hover{background:rgba(0,0,0,0.1)}.numInputWrapper span:active{background:rgba(0,0,0,0.2)}.numInputWrapper span:after{display:block;content:\\\"\\\";position:absolute}.numInputWrapper span.arrowUp{top:0;border-bottom:0}.numInputWrapper span.arrowUp:after{border-left:4px solid transparent;border-right:4px solid transparent;border-bottom:4px solid rgba(57,57,57,0.6);top:26%}.numInputWrapper span.arrowDown{top:50%}.numInputWrapper span.arrowDown:after{border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px solid rgba(57,57,57,0.6);top:40%}.numInputWrapper span svg{width:inherit;height:auto}.numInputWrapper span svg path{fill:rgba(0,0,0,0.5)}.numInputWrapper:hover{background:rgba(0,0,0,0.05)}.numInputWrapper:hover span{opacity:1}.flatpickr-current-month{font-size:135%;line-height:inherit;font-weight:300;color:inherit;position:absolute;width:75%;left:12.5%;padding:7.48px 0 0 0;line-height:1;height:34px;display:inline-block;text-align:center;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.flatpickr-current-month span.cur-month{font-family:inherit;font-weight:700;color:inherit;display:inline-block;margin-left:.5ch;padding:0}.flatpickr-current-month span.cur-month:hover{background:rgba(0,0,0,0.05)}.flatpickr-current-month .numInputWrapper{width:6ch;width:7ch\\\\0;display:inline-block}.flatpickr-current-month .numInputWrapper span.arrowUp:after{border-bottom-color:rgba(0,0,0,0.9)}.flatpickr-current-month .numInputWrapper span.arrowDown:after{border-top-color:rgba(0,0,0,0.9)}.flatpickr-current-month input.cur-year{background:transparent;-webkit-box-sizing:border-box;box-sizing:border-box;color:inherit;cursor:text;padding:0 0 0 .5ch;margin:0;display:inline-block;font-size:inherit;font-family:inherit;font-weight:300;line-height:inherit;height:auto;border:0;border-radius:0;vertical-align:initial;-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.flatpickr-current-month input.cur-year:focus{outline:0}.flatpickr-current-month input.cur-year[disabled],.flatpickr-current-month input.cur-year[disabled]:hover{font-size:100%;color:rgba(0,0,0,0.5);background:transparent;pointer-events:none}.flatpickr-current-month .flatpickr-monthDropdown-months{appearance:menulist;background:transparent;border:none;border-radius:0;box-sizing:border-box;color:inherit;cursor:pointer;font-size:inherit;font-family:inherit;font-weight:300;height:auto;line-height:inherit;margin:-1px 0 0 0;outline:none;padding:0 0 0 .5ch;position:relative;vertical-align:initial;-webkit-box-sizing:border-box;-webkit-appearance:menulist;-moz-appearance:menulist;width:auto}.flatpickr-current-month .flatpickr-monthDropdown-months:focus,.flatpickr-current-month .flatpickr-monthDropdown-months:active{outline:none}.flatpickr-current-month .flatpickr-monthDropdown-months:hover{background:rgba(0,0,0,0.05)}.flatpickr-current-month .flatpickr-monthDropdown-months .flatpickr-monthDropdown-month{background-color:transparent;outline:none;padding:0}.flatpickr-weekdays{background:transparent;text-align:center;overflow:hidden;width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;height:28px}.flatpickr-weekdays .flatpickr-weekdaycontainer{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}span.flatpickr-weekday{cursor:default;font-size:90%;background:transparent;color:rgba(0,0,0,0.54);line-height:1;margin:0;text-align:center;display:block;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;font-weight:bolder}.dayContainer,.flatpickr-weeks{padding:1px 0 0 0}.flatpickr-days{position:relative;overflow:hidden;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:flex-start;width:307.875px}.flatpickr-days:focus{outline:0}.dayContainer{padding:0;outline:0;text-align:left;width:307.875px;min-width:307.875px;max-width:307.875px;-webkit-box-sizing:border-box;box-sizing:border-box;display:inline-block;display:-ms-flexbox;display:-webkit-box;display:-webkit-flex;display:flex;-webkit-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-wrap:wrap;-ms-flex-pack:justify;-webkit-justify-content:space-around;justify-content:space-around;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}.dayContainer + .dayContainer{-webkit-box-shadow:-1px 0 0 #e6e6e6;box-shadow:-1px 0 0 #e6e6e6}.flatpickr-day{background:none;border:1px solid transparent;border-radius:150px;-webkit-box-sizing:border-box;box-sizing:border-box;color:#393939;cursor:pointer;font-weight:400;width:14.2857143%;-webkit-flex-basis:14.2857143%;-ms-flex-preferred-size:14.2857143%;flex-basis:14.2857143%;max-width:39px;height:39px;line-height:39px;margin:0;display:inline-block;position:relative;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;text-align:center}.flatpickr-day.inRange,.flatpickr-day.prevMonthDay.inRange,.flatpickr-day.nextMonthDay.inRange,.flatpickr-day.today.inRange,.flatpickr-day.prevMonthDay.today.inRange,.flatpickr-day.nextMonthDay.today.inRange,.flatpickr-day:hover,.flatpickr-day.prevMonthDay:hover,.flatpickr-day.nextMonthDay:hover,.flatpickr-day:focus,.flatpickr-day.prevMonthDay:focus,.flatpickr-day.nextMonthDay:focus{cursor:pointer;outline:0;background:#e6e6e6;border-color:#e6e6e6}.flatpickr-day.today{border-color:#959ea9}.flatpickr-day.today:hover,.flatpickr-day.today:focus{border-color:#959ea9;background:#959ea9;color:#fff}.flatpickr-day.selected,.flatpickr-day.startRange,.flatpickr-day.endRange,.flatpickr-day.selected.inRange,.flatpickr-day.startRange.inRange,.flatpickr-day.endRange.inRange,.flatpickr-day.selected:focus,.flatpickr-day.startRange:focus,.flatpickr-day.endRange:focus,.flatpickr-day.selected:hover,.flatpickr-day.startRange:hover,.flatpickr-day.endRange:hover,.flatpickr-day.selected.prevMonthDay,.flatpickr-day.startRange.prevMonthDay,.flatpickr-day.endRange.prevMonthDay,.flatpickr-day.selected.nextMonthDay,.flatpickr-day.startRange.nextMonthDay,.flatpickr-day.endRange.nextMonthDay{background:#569ff7;-webkit-box-shadow:none;box-shadow:none;color:#fff;border-color:#569ff7}.flatpickr-day.selected.startRange,.flatpickr-day.startRange.startRange,.flatpickr-day.endRange.startRange{border-radius:50px 0 0 50px}.flatpickr-day.selected.endRange,.flatpickr-day.startRange.endRange,.flatpickr-day.endRange.endRange{border-radius:0 50px 50px 0}.flatpickr-day.selected.startRange + .endRange:not(:nth-child(7n+1)),.flatpickr-day.startRange.startRange + .endRange:not(:nth-child(7n+1)),.flatpickr-day.endRange.startRange + .endRange:not(:nth-child(7n+1)){-webkit-box-shadow:-10px 0 0 #569ff7;box-shadow:-10px 0 0 #569ff7}.flatpickr-day.selected.startRange.endRange,.flatpickr-day.startRange.startRange.endRange,.flatpickr-day.endRange.startRange.endRange{border-radius:50px}.flatpickr-day.inRange{border-radius:0;-webkit-box-shadow:-5px 0 0 #e6e6e6,5px 0 0 #e6e6e6;box-shadow:-5px 0 0 #e6e6e6,5px 0 0 #e6e6e6}.flatpickr-day.flatpickr-disabled,.flatpickr-day.flatpickr-disabled:hover,.flatpickr-day.prevMonthDay,.flatpickr-day.nextMonthDay,.flatpickr-day.notAllowed,.flatpickr-day.notAllowed.prevMonthDay,.flatpickr-day.notAllowed.nextMonthDay{color:rgba(57,57,57,0.3);background:transparent;border-color:transparent;cursor:default}.flatpickr-day.flatpickr-disabled,.flatpickr-day.flatpickr-disabled:hover{cursor:not-allowed;color:rgba(57,57,57,0.1)}.flatpickr-day.week.selected{border-radius:0;-webkit-box-shadow:-5px 0 0 #569ff7,5px 0 0 #569ff7;box-shadow:-5px 0 0 #569ff7,5px 0 0 #569ff7}.flatpickr-day.hidden{visibility:hidden}.rangeMode .flatpickr-day{margin-top:1px}.flatpickr-weekwrapper{float:left}.flatpickr-weekwrapper .flatpickr-weeks{padding:0 12px;-webkit-box-shadow:1px 0 0 #e6e6e6;box-shadow:1px 0 0 #e6e6e6}.flatpickr-weekwrapper .flatpickr-weekday{float:none;width:100%;line-height:28px}.flatpickr-weekwrapper span.flatpickr-day,.flatpickr-weekwrapper span.flatpickr-day:hover{display:block;width:100%;max-width:none;color:rgba(57,57,57,0.3);background:transparent;cursor:default;border:none}.flatpickr-innerContainer{display:block;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden}.flatpickr-rContainer{display:inline-block;padding:0;-webkit-box-sizing:border-box;box-sizing:border-box}.flatpickr-time{text-align:center;outline:0;display:block;height:0;line-height:40px;max-height:40px;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.flatpickr-time:after{content:\\\"\\\";display:table;clear:both}.flatpickr-time .numInputWrapper{-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;width:40%;height:40px;float:left}.flatpickr-time .numInputWrapper span.arrowUp:after{border-bottom-color:#393939}.flatpickr-time .numInputWrapper span.arrowDown:after{border-top-color:#393939}.flatpickr-time.hasSeconds .numInputWrapper{width:26%}.flatpickr-time.time24hr .numInputWrapper{width:49%}.flatpickr-time input{background:transparent;-webkit-box-shadow:none;box-shadow:none;border:0;border-radius:0;text-align:center;margin:0;padding:0;height:inherit;line-height:inherit;color:#393939;font-size:14px;position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.flatpickr-time input.flatpickr-hour{font-weight:bold}.flatpickr-time input.flatpickr-minute,.flatpickr-time input.flatpickr-second{font-weight:400}.flatpickr-time input:focus{outline:0;border:0}.flatpickr-time .flatpickr-time-separator,.flatpickr-time .flatpickr-am-pm{height:inherit;float:left;line-height:inherit;color:#393939;font-weight:bold;width:2%;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-align-self:center;-ms-flex-item-align:center;align-self:center}.flatpickr-time .flatpickr-am-pm{outline:0;width:18%;cursor:pointer;text-align:center;font-weight:400}.flatpickr-time input:hover,.flatpickr-time .flatpickr-am-pm:hover,.flatpickr-time input:focus,.flatpickr-time .flatpickr-am-pm:focus{background:#eee}.flatpickr-input[readonly]{cursor:pointer}@-webkit-keyframes fpFadeInDown{from{opacity:0;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@keyframes fpFadeInDown{from{opacity:0;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","\"use strict\";\n\n/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n*/\nmodule.exports = function (cssWithMappingToString) {\n var list = [];\n\n // return the list of modules as css string\n list.toString = function toString() {\n return this.map(function (item) {\n var content = \"\";\n var needLayer = typeof item[5] !== \"undefined\";\n if (item[4]) {\n content += \"@supports (\".concat(item[4], \") {\");\n }\n if (item[2]) {\n content += \"@media \".concat(item[2], \" {\");\n }\n if (needLayer) {\n content += \"@layer\".concat(item[5].length > 0 ? \" \".concat(item[5]) : \"\", \" {\");\n }\n content += cssWithMappingToString(item);\n if (needLayer) {\n content += \"}\";\n }\n if (item[2]) {\n content += \"}\";\n }\n if (item[4]) {\n content += \"}\";\n }\n return content;\n }).join(\"\");\n };\n\n // import a list of modules into the list\n list.i = function i(modules, media, dedupe, supports, layer) {\n if (typeof modules === \"string\") {\n modules = [[null, modules, undefined]];\n }\n var alreadyImportedModules = {};\n if (dedupe) {\n for (var k = 0; k < this.length; k++) {\n var id = this[k][0];\n if (id != null) {\n alreadyImportedModules[id] = true;\n }\n }\n }\n for (var _k = 0; _k < modules.length; _k++) {\n var item = [].concat(modules[_k]);\n if (dedupe && alreadyImportedModules[item[0]]) {\n continue;\n }\n if (typeof layer !== \"undefined\") {\n if (typeof item[5] === \"undefined\") {\n item[5] = layer;\n } else {\n item[1] = \"@layer\".concat(item[5].length > 0 ? \" \".concat(item[5]) : \"\", \" {\").concat(item[1], \"}\");\n item[5] = layer;\n }\n }\n if (media) {\n if (!item[2]) {\n item[2] = media;\n } else {\n item[1] = \"@media \".concat(item[2], \" {\").concat(item[1], \"}\");\n item[2] = media;\n }\n }\n if (supports) {\n if (!item[4]) {\n item[4] = \"\".concat(supports);\n } else {\n item[1] = \"@supports (\".concat(item[4], \") {\").concat(item[1], \"}\");\n item[4] = supports;\n }\n }\n list.push(item);\n }\n };\n return list;\n};","\"use strict\";\n\nmodule.exports = function (item) {\n var content = item[1];\n var cssMapping = item[3];\n if (!cssMapping) {\n return content;\n }\n if (typeof btoa === \"function\") {\n var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(cssMapping))));\n var data = \"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(base64);\n var sourceMapping = \"/*# \".concat(data, \" */\");\n return [content].concat([sourceMapping]).join(\"\\n\");\n }\n return [content].join(\"\\n\");\n};","'use strict';\n\nvar m = require('react-dom');\nif (process.env.NODE_ENV === 'production') {\n exports.createRoot = m.createRoot;\n exports.hydrateRoot = m.hydrateRoot;\n} else {\n var i = m.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\n exports.createRoot = function(c, o) {\n i.usingClientEntryPoint = true;\n try {\n return m.createRoot(c, o);\n } finally {\n i.usingClientEntryPoint = false;\n }\n };\n exports.hydrateRoot = function(c, h, o) {\n i.usingClientEntryPoint = true;\n try {\n return m.hydrateRoot(c, h, o);\n } finally {\n i.usingClientEntryPoint = false;\n }\n };\n}\n","/* global Map:readonly, Set:readonly, ArrayBuffer:readonly */\n\nvar hasElementType = typeof Element !== 'undefined';\nvar hasMap = typeof Map === 'function';\nvar hasSet = typeof Set === 'function';\nvar hasArrayBuffer = typeof ArrayBuffer === 'function' && !!ArrayBuffer.isView;\n\n// Note: We **don't** need `envHasBigInt64Array` in fde es6/index.js\n\nfunction equal(a, b) {\n // START: fast-deep-equal es6/index.js 3.1.3\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n // START: Modifications:\n // 1. Extra `has &&` helpers in initial condition allow es6 code\n // to co-exist with es5.\n // 2. Replace `for of` with es5 compliant iteration using `for`.\n // Basically, take:\n //\n // ```js\n // for (i of a.entries())\n // if (!b.has(i[0])) return false;\n // ```\n //\n // ... and convert to:\n //\n // ```js\n // it = a.entries();\n // while (!(i = it.next()).done)\n // if (!b.has(i.value[0])) return false;\n // ```\n //\n // **Note**: `i` access switches to `i.value`.\n var it;\n if (hasMap && (a instanceof Map) && (b instanceof Map)) {\n if (a.size !== b.size) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!b.has(i.value[0])) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!equal(i.value[1], b.get(i.value[0]))) return false;\n return true;\n }\n\n if (hasSet && (a instanceof Set) && (b instanceof Set)) {\n if (a.size !== b.size) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!b.has(i.value[0])) return false;\n return true;\n }\n // END: Modifications\n\n if (hasArrayBuffer && ArrayBuffer.isView(a) && ArrayBuffer.isView(b)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (a[i] !== b[i]) return false;\n return true;\n }\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n // START: Modifications:\n // Apply guards for `Object.create(null)` handling. See:\n // - https://github.com/FormidableLabs/react-fast-compare/issues/64\n // - https://github.com/epoberezkin/fast-deep-equal/issues/49\n if (a.valueOf !== Object.prototype.valueOf && typeof a.valueOf === 'function' && typeof b.valueOf === 'function') return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString && typeof a.toString === 'function' && typeof b.toString === 'function') return a.toString() === b.toString();\n // END: Modifications\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n // END: fast-deep-equal\n\n // START: react-fast-compare\n // custom handling for DOM elements\n if (hasElementType && a instanceof Element) return false;\n\n // custom handling for React/Preact\n for (i = length; i-- !== 0;) {\n if ((keys[i] === '_owner' || keys[i] === '__v' || keys[i] === '__o') && a.$$typeof) {\n // React-specific: avoid traversing React elements' _owner\n // Preact-specific: avoid traversing Preact elements' __v and __o\n // __v = $_original / $_vnode\n // __o = $_owner\n // These properties contain circular references and are not needed when\n // comparing the actual elements (and not their owners)\n // .$$typeof and ._store on just reasonable markers of elements\n\n continue;\n }\n\n // all other properties should be traversed as usual\n if (!equal(a[keys[i]], b[keys[i]])) return false;\n }\n // END: react-fast-compare\n\n // START: fast-deep-equal\n return true;\n }\n\n return a !== a && b !== b;\n}\n// end fast-deep-equal\n\nmodule.exports = function isEqual(a, b) {\n try {\n return equal(a, b);\n } catch (error) {\n if (((error.message || '').match(/stack|recursion/i))) {\n // warn on circular references, don't crash\n // browsers give this different errors name and messages:\n // chrome/safari: \"RangeError\", \"Maximum call stack size exceeded\"\n // firefox: \"InternalError\", too much recursion\"\n // edge: \"Error\", \"Out of stack space\"\n console.warn('react-fast-compare cannot handle circular refs');\n return false;\n }\n // some other error. we should definitely know about these\n throw error;\n }\n};\n","\"use strict\";\n\nvar stylesInDOM = [];\nfunction getIndexByIdentifier(identifier) {\n var result = -1;\n for (var i = 0; i < stylesInDOM.length; i++) {\n if (stylesInDOM[i].identifier === identifier) {\n result = i;\n break;\n }\n }\n return result;\n}\nfunction modulesToDom(list, options) {\n var idCountMap = {};\n var identifiers = [];\n for (var i = 0; i < list.length; i++) {\n var item = list[i];\n var id = options.base ? item[0] + options.base : item[0];\n var count = idCountMap[id] || 0;\n var identifier = \"\".concat(id, \" \").concat(count);\n idCountMap[id] = count + 1;\n var indexByIdentifier = getIndexByIdentifier(identifier);\n var obj = {\n css: item[1],\n media: item[2],\n sourceMap: item[3],\n supports: item[4],\n layer: item[5]\n };\n if (indexByIdentifier !== -1) {\n stylesInDOM[indexByIdentifier].references++;\n stylesInDOM[indexByIdentifier].updater(obj);\n } else {\n var updater = addElementStyle(obj, options);\n options.byIndex = i;\n stylesInDOM.splice(i, 0, {\n identifier: identifier,\n updater: updater,\n references: 1\n });\n }\n identifiers.push(identifier);\n }\n return identifiers;\n}\nfunction addElementStyle(obj, options) {\n var api = options.domAPI(options);\n api.update(obj);\n var updater = function updater(newObj) {\n if (newObj) {\n if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap && newObj.supports === obj.supports && newObj.layer === obj.layer) {\n return;\n }\n api.update(obj = newObj);\n } else {\n api.remove();\n }\n };\n return updater;\n}\nmodule.exports = function (list, options) {\n options = options || {};\n list = list || [];\n var lastIdentifiers = modulesToDom(list, options);\n return function update(newList) {\n newList = newList || [];\n for (var i = 0; i < lastIdentifiers.length; i++) {\n var identifier = lastIdentifiers[i];\n var index = getIndexByIdentifier(identifier);\n stylesInDOM[index].references--;\n }\n var newLastIdentifiers = modulesToDom(newList, options);\n for (var _i = 0; _i < lastIdentifiers.length; _i++) {\n var _identifier = lastIdentifiers[_i];\n var _index = getIndexByIdentifier(_identifier);\n if (stylesInDOM[_index].references === 0) {\n stylesInDOM[_index].updater();\n stylesInDOM.splice(_index, 1);\n }\n }\n lastIdentifiers = newLastIdentifiers;\n };\n};","\"use strict\";\n\nvar memo = {};\n\n/* istanbul ignore next */\nfunction getTarget(target) {\n if (typeof memo[target] === \"undefined\") {\n var styleTarget = document.querySelector(target);\n\n // Special case to return head of iframe instead of iframe itself\n if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {\n try {\n // This will throw an exception if access to iframe is blocked\n // due to cross-origin restrictions\n styleTarget = styleTarget.contentDocument.head;\n } catch (e) {\n // istanbul ignore next\n styleTarget = null;\n }\n }\n memo[target] = styleTarget;\n }\n return memo[target];\n}\n\n/* istanbul ignore next */\nfunction insertBySelector(insert, style) {\n var target = getTarget(insert);\n if (!target) {\n throw new Error(\"Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.\");\n }\n target.appendChild(style);\n}\nmodule.exports = insertBySelector;","\"use strict\";\n\n/* istanbul ignore next */\nfunction insertStyleElement(options) {\n var element = document.createElement(\"style\");\n options.setAttributes(element, options.attributes);\n options.insert(element, options.options);\n return element;\n}\nmodule.exports = insertStyleElement;","\"use strict\";\n\n/* istanbul ignore next */\nfunction setAttributesWithoutAttributes(styleElement) {\n var nonce = typeof __webpack_nonce__ !== \"undefined\" ? __webpack_nonce__ : null;\n if (nonce) {\n styleElement.setAttribute(\"nonce\", nonce);\n }\n}\nmodule.exports = setAttributesWithoutAttributes;","\"use strict\";\n\n/* istanbul ignore next */\nfunction apply(styleElement, options, obj) {\n var css = \"\";\n if (obj.supports) {\n css += \"@supports (\".concat(obj.supports, \") {\");\n }\n if (obj.media) {\n css += \"@media \".concat(obj.media, \" {\");\n }\n var needLayer = typeof obj.layer !== \"undefined\";\n if (needLayer) {\n css += \"@layer\".concat(obj.layer.length > 0 ? \" \".concat(obj.layer) : \"\", \" {\");\n }\n css += obj.css;\n if (needLayer) {\n css += \"}\";\n }\n if (obj.media) {\n css += \"}\";\n }\n if (obj.supports) {\n css += \"}\";\n }\n var sourceMap = obj.sourceMap;\n if (sourceMap && typeof btoa !== \"undefined\") {\n css += \"\\n/*# sourceMappingURL=data:application/json;base64,\".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), \" */\");\n }\n\n // For old IE\n /* istanbul ignore if */\n options.styleTagTransform(css, styleElement, options.options);\n}\nfunction removeStyleElement(styleElement) {\n // istanbul ignore if\n if (styleElement.parentNode === null) {\n return false;\n }\n styleElement.parentNode.removeChild(styleElement);\n}\n\n/* istanbul ignore next */\nfunction domAPI(options) {\n if (typeof document === \"undefined\") {\n return {\n update: function update() {},\n remove: function remove() {}\n };\n }\n var styleElement = options.insertStyleElement(options);\n return {\n update: function update(obj) {\n apply(styleElement, options, obj);\n },\n remove: function remove() {\n removeStyleElement(styleElement);\n }\n };\n}\nmodule.exports = domAPI;","\"use strict\";\n\n/* istanbul ignore next */\nfunction styleTagTransform(css, styleElement) {\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}\nmodule.exports = styleTagTransform;","module.exports = require(\"react-dom\");","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","__webpack_require__.amdD = function () {\n\tthrow new Error('define cannot be used indirect');\n};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.p = \"\";","__webpack_require__.nc = undefined;","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"react\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"prop-types\");","import { createContext } from 'react';\n\nconst AccordionContext = createContext();\n\nexport default AccordionContext;\n","import { createContext } from 'react';\n\nconst AccordionItemContext = createContext();\n\nexport default AccordionItemContext;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nfunction Icon({\n className,\n family,\n type,\n ...rest\n}) {\n function getCSSClasses() {\n const fontFamily = family || 'fa';\n\n return [\n 'tyk-icon',\n fontFamily,\n `${fontFamily}-${type}`,\n className,\n ].filter(Boolean).join(' ');\n }\n\n return ;\n}\n\nIcon.propTypes = {\n className: PropTypes.string,\n family: PropTypes.string,\n type: PropTypes.string.isRequired,\n};\n\nexport default Icon;\n","import React, { useContext } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Icon from '../../Icon';\nimport AccordionItemContext from './AccordionItemContext';\n\nfunction ItemTrigger({ wrap }) {\n const { collapsed, disabled, toggleChange } = useContext(AccordionItemContext);\n\n const iconType = collapsed ? 'chevron-down' : 'chevron-up';\n const classes = [\n 'tyk-accordion__trigger',\n disabled && 'tyk-accordion__trigger--disabled',\n ].filter(Boolean).join(' ');\n const trigger = (\n \n \n \n );\n\n return wrap\n ?
    {trigger}
    \n : trigger;\n}\n\nItemTrigger.propTypes = {\n wrap: PropTypes.bool,\n};\n\nexport default ItemTrigger;\n","import React, {\n useMemo, useState, useContext, forwardRef,\n} from 'react';\nimport PropTypes from 'prop-types';\n\nimport AccordionContext from './AccordionContext';\nimport AccordionItemContext from './AccordionItemContext';\nimport ItemTrigger from './AccordionItemTrigger';\n\nfunction AccordionItem({\n collapsed: collapsedProp,\n children,\n className,\n disabled,\n}, ref) {\n const { arrow } = useContext(AccordionContext);\n const [collapsed, setCollapsed] = useState(collapsedProp);\n\n const toggleChange = () => {\n if (disabled) {\n return;\n }\n\n setCollapsed(!collapsed);\n };\n\n const classes = useMemo(() => [\n 'tyk-accordion__item',\n arrow.expandToContent\n ? `tyk-accordion__item--trigger-position-${arrow.position}`\n : 'tyk-accordion__item--trigger-in-header',\n className,\n collapsed === false && 'tyk-accordion__item--active',\n ].filter(Boolean).join(' '), [arrow, className, collapsed]);\n\n const contextValue = useMemo(() => ({\n collapsed,\n disabled,\n toggleChange,\n }), [collapsed, disabled, toggleChange]);\n\n return (\n
    \n \n {arrow.expandToContent && (\n \n )}\n {children}\n \n
    \n );\n}\n\nAccordionItem.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n collapsed: PropTypes.bool,\n className: PropTypes.string,\n disabled: PropTypes.bool,\n};\n\nAccordionItem.defaultProps = {\n collapsed: false,\n};\n\nexport default forwardRef(AccordionItem);\n","import React, { useContext } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Icon from '../../Icon';\nimport AccordionContext from './AccordionContext';\nimport AccordionItemContext from './AccordionItemContext';\nimport ItemTrigger from './AccordionItemTrigger';\n\nfunction AccordionItemHeader({ className, children }) {\n const { collapsed, disabled, toggleChange } = useContext(AccordionItemContext);\n const { usearrowastrigger, arrow } = useContext(AccordionContext);\n const iconType = collapsed ? 'chevron-down' : 'chevron-up';\n const classes = [\n 'tyk-accordion__item-header',\n usearrowastrigger && 'tyk-accordion__arrow-trigger',\n className,\n ].filter(Boolean).join(' ');\n\n return (\n
    \n {\n !usearrowastrigger\n ? (\n \n {children}\n \n \n )\n : (\n <>\n {!arrow.expandToContent && arrow.position === 'left' && (\n \n )}\n
    {children}
    \n {!arrow.expandToContent && arrow.position === 'right' && (\n \n )}\n \n )\n }\n
    \n );\n}\n\nAccordionItemHeader.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n className: PropTypes.string,\n};\n\nexport default AccordionItemHeader;\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"react-transition-group\");","import { useEffect, useRef } from 'react';\n\nconst usePrevious = (value) => {\n const ref = useRef();\n useEffect(() => {\n ref.current = value;\n }, [value]);\n return ref.current;\n};\n\n/** @component */\nexport default usePrevious;\n","import { useEffect, useRef } from 'react';\n\nconst useTimeout = (callback, delay) => {\n const savedCallback = useRef();\n\n useEffect(() => {\n savedCallback.current = callback;\n },\n [callback]);\n\n useEffect(() => {\n function tick() {\n savedCallback.current();\n }\n if (delay !== null) {\n const id = setTimeout(tick, delay);\n return () => clearTimeout(id);\n }\n\n return () => {};\n },\n [delay]);\n};\n\n/** @component */\nexport default useTimeout;\n","import { useEffect, useRef } from 'react';\n\n/** @component */\nexport default function useInterval(callback, delay, ...args) {\n const savedCallback = useRef();\n\n useEffect(() => {\n savedCallback.current = callback;\n }, [callback]);\n\n /* eslint-disable consistent-return */\n useEffect(() => {\n function tick() {\n savedCallback.current(...args);\n }\n if (delay !== null && delay !== undefined) {\n const id = setInterval(tick, delay);\n return () => clearInterval(id);\n }\n }, [delay]);\n /* eslint-disable consistent-return */\n}\n","import { useEffect, useRef } from 'react';\n\nconst useEventListener = (eventName, handler, element) => {\n const savedHandler = useRef();\n useEffect(() => {\n savedHandler.current = handler;\n }, [handler]);\n\n useEffect(() => {\n const isSupported = element?.addEventListener;\n if (!isSupported) {\n // eslint-disable-next-line consistent-return\n return;\n }\n\n const eventListener = (event) => savedHandler.current(event);\n element.addEventListener(eventName, eventListener);\n\n // eslint-disable-next-line consistent-return\n return () => {\n element.removeEventListener(eventName, eventListener);\n };\n }, [eventName, element]);\n};\n\n/** @component */\nexport default useEventListener;\n","import { useCallback, useState, useLayoutEffect } from 'react';\n\nconst getSize = (el) => {\n if (!el) {\n return {\n width: 0,\n height: 0,\n };\n }\n\n return {\n width: el.offsetWidth,\n height: el.offsetHeight,\n };\n};\n\nconst useComponentSize = (ref) => {\n const [ComponentSize, setComponentSize] = useState(getSize(ref ? ref.current : {}));\n const handleResize = useCallback(() => {\n if (ref.current) {\n setComponentSize(getSize(ref.current));\n }\n }, [ref]);\n\n useLayoutEffect(() => {\n handleResize();\n\n let resizeObserver = new ResizeObserver(() => {\n handleResize();\n });\n resizeObserver.observe(ref.current);\n\n return () => {\n resizeObserver.disconnect(ref.current);\n resizeObserver = null;\n };\n }, [ref.current]);\n\n return ComponentSize;\n};\n\n/** @component */\nexport default useComponentSize;\n","export { default as usePrevious } from './usePrevious';\nexport { default as useTimeout } from './useTimeout';\nexport { default as useInterval } from './useInterval';\nexport { default as useEventListener } from './useEventListener';\nexport { default as useComponentSize } from './useComponentSize';\n","import React, {\n useRef, useState, useCallback, useEffect,\n} from 'react';\nimport PropTypes from 'prop-types';\nimport { CSSTransition } from 'react-transition-group';\nimport { useEventListener, useComponentSize } from '../../hooks';\n\n/**\n * Collapsible is a component that helps you to collapse/expand any type of content\n */\nfunction Collapsible({\n className,\n collapsed,\n children,\n ...rest\n}) {\n const contentContainer = useRef(null);\n const collapseWrapper = useRef(null);\n const refContainerSize = useComponentSize(contentContainer);\n const [contentContainerStyle, setContentContainerStyle] = useState({\n // eslint-disable-next-line\n height: (collapsed) ? 0 : 'auto',\n });\n\n const setHeight = (height) => {\n setContentContainerStyle({\n height: `${height}px`,\n });\n };\n\n const getHeight = () => (contentContainer.current ? contentContainer.current.clientHeight : 0);\n\n const onEnter = () => {\n setHeight(getHeight());\n };\n\n const onExit = () => {\n setHeight(0);\n };\n\n useEffect(() => {\n if (!collapsed\n && refContainerSize?.height\n && contentContainerStyle.height !== refContainerSize?.height\n ) {\n setHeight(refContainerSize.height);\n }\n }, [refContainerSize.height]);\n\n const onWindowResize = useCallback(() => {\n if (!collapsed && contentContainer.current) {\n setHeight(getHeight());\n collapseWrapper.current.style.height = `${getHeight()}px`;\n }\n }, [collapsed, contentContainer.current]);\n\n useEventListener('resize', onWindowResize, window);\n\n return (\n \n \n \n { children }\n \n \n \n );\n}\n\nCollapsible.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]),\n /** Describes if the content of Collapsible should be hidden or not */\n collapsed: PropTypes.bool,\n /** CSS classes that can be passed to the Collapsible element */\n className: PropTypes.string,\n};\n\nexport default Collapsible;\n","import React, { useContext } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Collapsible from '../../Collapsible';\nimport AccordionItemContext from './AccordionItemContext';\n\nfunction AccordionItemContent({ children, className }) {\n const { collapsed } = useContext(AccordionItemContext);\n\n const classes = [\n 'tyk-accordion__item-content',\n className,\n ].filter(Boolean).join(' ');\n\n return (\n
    \n \n { children }\n \n
    \n );\n}\n\nAccordionItemContent.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n className: PropTypes.string,\n};\n\nexport default AccordionItemContent;\n","import React, { useMemo } from 'react';\nimport PropTypes from 'prop-types';\nimport AccordionItem from './js/AccordionItem';\nimport AccordionItemHeader from './js/AccordionItemHeader';\nimport AccordionItemContent from './js/AccordionItemContent';\nimport AccordionContext from './js/AccordionContext';\n\nfunction Accordion({\n className,\n children,\n usearrowastrigger,\n arrow = { position: 'right', expandToContent: false },\n}) {\n const classes = [\n 'tyk-accordion',\n className,\n ].filter(Boolean).join(' ');\n\n const contextValue = useMemo(() => ({\n usearrowastrigger,\n arrow,\n }), [usearrowastrigger, arrow]);\n\n return (\n
    \n \n {children}\n \n
    \n );\n}\n\nAccordion.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n className: PropTypes.string,\n usearrowastrigger: PropTypes.bool,\n arrow: PropTypes.shape({\n position: PropTypes.oneOf(['left', 'right']),\n expandToContent: PropTypes.bool,\n }),\n};\n\nAccordion.defaultProps = {\n usearrowastrigger: false,\n};\n\n// For Readme.md : Start\nAccordion.Item = AccordionItem;\nAccordion.Item.Header = AccordionItemHeader;\nAccordion.Item.Content = AccordionItemContent;\n// For Readme.md : End\n\nexport default Accordion;\n","import React, { Fragment, cloneElement } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Icon from '../Icon';\n\n/**\n * Button component.\n */\nconst Button = React.forwardRef((props, ref) => {\n const {\n customButton,\n children,\n iconType,\n iconFamily,\n iconPosition,\n iconOnly,\n id,\n className,\n disabled,\n display,\n href,\n onClick,\n noStyle,\n size,\n theme,\n type,\n ...rest\n } = props;\n\n const getCssClasses = () => {\n const cssClasses = ['tyk-button'].concat(className ? className.split(' ') : []);\n const sizeClass = (size) ? `tyk-button--${size}` : 'tyk-button--md';\n const disabledClass = (disabled) ? 'disabled' : '';\n const displayClass = display || '';\n const themeClass = theme ? `tyk-button--${theme}` : '';\n const iconOnlyClass = iconOnly ? 'tyk-button--icon-only' : '';\n const noStyleClass = noStyle ? 'tyk-button--no-style' : '';\n\n cssClasses.push(iconOnlyClass);\n cssClasses.push(themeClass);\n cssClasses.push(sizeClass);\n cssClasses.push(disabledClass);\n cssClasses.push(displayClass);\n cssClasses.push(noStyleClass);\n\n if (iconType) {\n cssClasses.push(`icon-${iconPosition || 'left'}`);\n }\n\n return cssClasses.join(' ');\n };\n\n const getButtonIcon = (position) => {\n const iPos = iconPosition || 'left';\n\n return (\n (iconType && iPos === position)\n ? \n : null\n );\n };\n\n const getButtonType = () => {\n let buttonType;\n\n if (customButton) {\n return (\n \n { cloneElement(customButton, {\n className: getCssClasses(),\n disabled,\n })\n }\n \n );\n }\n\n if (href) {\n buttonType = (\n \n { getButtonIcon('left') }\n { children }\n { getButtonIcon('right') }\n \n );\n } else {\n buttonType = (\n // eslint-disable-next-line react/button-has-type\n \n { getButtonIcon('left') }\n { children && {children} }\n { getButtonIcon('right') }\n \n );\n }\n\n return buttonType;\n };\n\n\n return (\n getButtonType()\n );\n});\n\nButton.propTypes = {\n /**\n * Content of a button. Can be a DOM element or a React component\n */\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n customButton: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n ]),\n className: PropTypes.string,\n /**\n * Display type: inline/block. Default is inline\n */\n display: PropTypes.string,\n /**\n * Sets the button disabled state\n */\n disabled: PropTypes.bool,\n /**\n * Having this property set the button will become a link\n */\n id: PropTypes.string,\n href: PropTypes.string,\n iconPosition: PropTypes.string, // left or right\n iconFamily: PropTypes.string,\n iconOnly: PropTypes.bool,\n iconType: PropTypes.string,\n noStyle: PropTypes.bool,\n /**\n * Callback function, called when the button si clicked\n */\n onClick: PropTypes.func,\n /**\n * Describes the appearence of the button (ex: primary, danger, primary-outline etc.)\n */\n theme: PropTypes.string,\n /**\n * Type of the button (ex: button, submit etc.)\n */\n type: PropTypes.string,\n /**\n * Describes the size of the button (sm, md, lg). Default one is md\n */\n size: PropTypes.string,\n};\n\nButton.defaultProps = {\n theme: '',\n type: 'button',\n};\n\nexport default Button;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\n/**\n * Tyk button component.\n */\nfunction ButtonGroup({\n className,\n children,\n label,\n}) {\n return (\n
    \n {Boolean(label) && (\n \n )}\n
    \n {children}\n
    \n
    \n );\n}\n\nButtonGroup.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n className: PropTypes.string,\n /**\n * Label that will sit above the button group\n */\n label: PropTypes.string,\n};\n\nexport default ButtonGroup;\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"echarts\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"immutable\");","export default (func, wait, immediate) => {\n let timeout;\n return function debouncer(...args) {\n const context = this;\n const later = () => {\n timeout = null;\n if (!immediate) {\n func.apply(context, args);\n }\n };\n const callNow = immediate && !timeout;\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n if (callNow) {\n func.apply(context, args);\n }\n };\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nfunction Loader({ className, position = 'relative', withbackground = false }) {\n const classes = [\n 'loading',\n position,\n className,\n ].filter(Boolean).join(' ');\n\n const loader = (\n
    \n
    \n
    \n
    \n
    \n
    \n );\n\n return withbackground\n ?
    {loader}
    \n : loader;\n}\n\nLoader.propTypes = {\n /** add a class to loader */\n className: PropTypes.string,\n /** position of loader (absolute / relative) */\n position: PropTypes.string,\n /** defines weather loader should be renders with or without background */\n withbackground: PropTypes.bool,\n};\n\nexport default Loader;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport Icon from '../Icon';\n\n/**\n * The Message component is used to highlight important content to the users.\n *\n * If the content you are displaying needs immediate attention or is a feedback,\n * consider using `toast` instead\n */\nfunction Message({\n children, theme, onClose, noMargin, className,\n}) {\n function getCssClasses() {\n return [\n 'tyk-message',\n `tyk-message--${theme || 'info'}`,\n noMargin && 'no-margin',\n className,\n ].filter(Boolean).join(' ');\n }\n\n const iconType = theme === 'success' ? 'check' : 'warning';\n\n return (\n
    \n \n
    \n { children }\n
    \n {onClose && (\n \n )}\n
    \n );\n}\n\nMessage.propTypes = {\n /** Set theme for message (eg. default, success, danger, etc) */\n theme: PropTypes.string,\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]),\n /** add a class to loader */\n className: PropTypes.string,\n /** Removes margins by adding `no-margin` class */\n noMargin: PropTypes.bool,\n /** Callback for clicking on the \"x\" */\n onClose: PropTypes.func,\n};\n\nexport default Message;\n","import React, {\n useState, useEffect, useRef, memo,\n} from 'react';\nimport PropTypes from 'prop-types';\nimport * as echarts from 'echarts';\nimport { fromJS } from 'immutable';\n\nimport debounce from '../../utils/debounce';\nimport { usePrevious } from '../../hooks';\nimport Loader from '../Loader';\nimport Message from '../Message';\nimport worldMap from './maps/world.json';\n\necharts.registerMap('world', worldMap);\n\nconst Chart = (props) => {\n const {\n areaStyleColors,\n dataLoaded,\n hasData,\n highlight,\n type,\n option,\n series,\n onChange,\n zoomStart,\n zoomEnd,\n title,\n seriesConfig = [],\n noDataComponent = null,\n zoomColors,\n } = props;\n const [tykChartInstance, setTykChartInstance] = useState(null);\n const chartWrapperRef = useRef(null);\n const onResize = () => {\n if (tykChartInstance) {\n tykChartInstance.resize();\n }\n };\n\n const lineBarChart = {\n defaultOpts: fromJS({\n title: {\n show: true,\n text: title,\n left: 0,\n },\n color: [],\n toolbox: {\n right: '0',\n orient: 'horizontal',\n itemSize: 15,\n showTitle: true,\n feature: null,\n },\n dataZoom: [{\n show: true,\n start: 0,\n end: 100,\n orient: 'horizontal',\n dataBackground: {\n lineStyle: {\n color: zoomColors?.lineStyle || '#368493',\n },\n areaStyle: {\n color: zoomColors?.areaStyle || '#368493',\n },\n },\n handleStyle: {\n color: zoomColors?.handleStyle || '#368493',\n },\n textStyle: {\n color: zoomColors?.textStyle || '#368493',\n },\n borderColor: 'transparent',\n fillerColor: zoomColors?.fillerColor || 'rgba(54, 132, 147, 0.1)',\n }],\n legend: {\n show: false,\n // data: [],\n // right: '1%',\n },\n tooltip: {\n trigger: 'axis',\n axisPointer: {\n type: 'cross',\n },\n },\n grid: {\n left: '1%',\n right: '1%',\n bottom: '50px',\n top: '40px',\n containLabel: true,\n },\n xAxis: {\n boundaryGap: false,\n type: 'category',\n splitLine: {\n show: true,\n lineStyle: {\n type: 'dotted',\n color: '#F0F0F0',\n },\n },\n axisLine: {\n show: false,\n },\n axisTick: {\n show: false,\n },\n data: [],\n },\n yAxis: {\n min: 'dataMin',\n boundaryGap: true,\n axisPointer: {\n show: true,\n },\n splitLine: {\n lineStyle: {\n type: 'dotted',\n color: '#F0F0F0',\n },\n show: true,\n },\n axisLabel: {\n show: true,\n },\n axisLine: {\n show: true,\n },\n axisTick: {\n show: false,\n },\n type: 'value',\n },\n textStyle: {\n color: '#5a5a68',\n },\n series: [],\n animationEasing: 'elasticOut',\n }),\n seriesDefault: fromJS({\n data: [],\n type: 'line',\n areaStyle: {\n opacity: 1,\n color: areaStyleColors ? new echarts.graphic.LinearGradient(0, 0, 1, 1,\n areaStyleColors.map((color, index) => ({\n offset: index,\n color,\n }))) : [],\n },\n smooth: false,\n symbolSize: 7,\n name: '',\n }),\n };\n\n const pieChart = {\n defaultOpts: fromJS({\n tooltip: {\n trigger: 'axis',\n formatter: '{b}: {c} ({d}%)',\n },\n legend: {\n orient: 'horizontal',\n x: 'left',\n y: 'top',\n data: [],\n },\n color: [],\n series: [],\n }),\n seriesDefault: fromJS({\n type: 'pie',\n center: [\n '50%',\n '55%',\n ],\n radius: [\n '50%',\n '75%',\n ],\n avoidLabelOverlap: false,\n animationType: 'scale',\n animationEasing: 'elasticOut',\n labelLine: {\n normal: {\n show: true,\n smooth: 0.2,\n length: 6,\n length2: 6,\n },\n },\n data: [],\n }),\n };\n\n const geoChart = {\n defaultOpts: fromJS({\n series: [],\n }),\n seriesDefault: fromJS({\n type: 'map',\n data: [],\n }),\n };\n\n const buildChartOptions = (selectedType, selectedOptions, selectedSeries) => {\n let finalOpts = {};\n switch (selectedType) {\n case 'pie': {\n finalOpts = pieChart.defaultOpts.mergeDeep(fromJS(selectedOptions)).toJS();\n\n selectedSeries.forEach((entry) => {\n finalOpts.series.push(pieChart.seriesDefault.mergeDeep(fromJS(entry)).toJS());\n });\n\n break;\n }\n\n case 'geo': {\n finalOpts = geoChart.defaultOpts.mergeDeep(fromJS(selectedOptions)).toJS();\n\n selectedSeries.forEach((entry) => {\n finalOpts.series.push(geoChart.seriesDefault.mergeDeep(fromJS(entry)).toJS());\n });\n\n break;\n }\n\n default: {\n finalOpts = lineBarChart.defaultOpts.mergeDeep(fromJS(selectedOptions)).toJS();\n if (Array.isArray(selectedOptions.yAxis)) {\n finalOpts.yAxis = selectedOptions.yAxis;\n }\n\n selectedSeries.forEach((entry, index) => {\n const seriesData = Object.assign(\n {},\n lineBarChart.seriesDefault.toJS(),\n seriesConfig[index], entry,\n );\n finalOpts.series.push(seriesData);\n });\n break;\n }\n }\n return finalOpts;\n };\n\n useEffect(() => {\n window.addEventListener('resize', onResize);\n\n return () => {\n window.removeEventListener('resize', onResize);\n };\n }, [tykChartInstance]);\n\n useEffect(() => {\n\n if (!chartWrapperRef?.current) {\n return;\n }\n\n setTykChartInstance(echarts.init(chartWrapperRef.current));\n return () => {\n if (tykChartInstance) {\n tykChartInstance.dispose();\n }\n };\n }, [chartWrapperRef.current]);\n\n const eventCallBack = (e) => {\n if (onChange) {\n onChange(e);\n }\n };\n\n useEffect(() => {\n let debouncedMethod;\n if (tykChartInstance) {\n debouncedMethod = debounce(eventCallBack, 500);\n tykChartInstance.on('dataZoom', debouncedMethod);\n tykChartInstance.on('restore', debouncedMethod);\n tykChartInstance.on('click', debouncedMethod);\n\n tykChartInstance.on('mousemove', (params) => {\n if (params.data) {\n tykChartInstance.getZr().setCursorStyle('pointer');\n }\n });\n }\n\n return () => {\n if (tykChartInstance) {\n tykChartInstance.off('dataZoom', debouncedMethod);\n tykChartInstance.off('restore', debouncedMethod);\n tykChartInstance.off('click', debouncedMethod);\n }\n };\n }, [tykChartInstance, onChange]);\n\n const prevInstance = usePrevious(tykChartInstance);\n const prevOption = usePrevious(option);\n const prevType = usePrevious(type);\n const prevSeries = usePrevious(series);\n useEffect(() => {\n if (\n tykChartInstance\n && (\n !fromJS(prevInstance)?.equals?.(fromJS(tykChartInstance))\n || !fromJS(prevOption)?.equals?.(fromJS(option))\n || (prevType !== type)\n || !fromJS(prevSeries).equals?.(fromJS(series))\n )\n ) {\n tykChartInstance.clear();\n tykChartInstance.setOption(buildChartOptions(type, option, series));\n tykChartInstance.dispatchAction({\n type: 'takeGlobalCursor',\n key: 'dataZoomSelect',\n dataZoomSelectActive: true,\n });\n }\n }, [tykChartInstance, option, series, type]);\n\n useEffect(() => {\n if (tykChartInstance && highlight) {\n tykChartInstance.dispatchAction({\n type: 'highlight',\n seriesIndex: highlight.seriesIndex,\n dataIndex: highlight.dataIndex,\n });\n tykChartInstance.dispatchAction({\n type: 'showTip',\n seriesIndex: highlight.seriesIndex,\n dataIndex: highlight.dataIndex,\n });\n }\n }, [highlight]);\n\n\n const prevZoomStart = usePrevious(zoomStart);\n const prevZoomEnd = usePrevious(zoomEnd);\n useEffect(() => {\n if (\n tykChartInstance\n && zoomStart !== -1\n && zoomEnd !== -1\n && (\n prevZoomStart !== zoomStart\n || prevZoomEnd !== zoomEnd\n )\n ) {\n tykChartInstance.dispatchAction({\n type: 'dataZoom',\n startValue: zoomStart,\n endValue: zoomEnd,\n });\n }\n }, [zoomStart, zoomEnd]);\n\n const getStyle = () => {\n const { style } = props;\n const tempStyle = style || {};\n\n if (!tempStyle.height) {\n tempStyle.height = '300px';\n }\n if (!tempStyle.width) {\n tempStyle.width = '100%';\n }\n return tempStyle;\n };\n\n const chartHasData = () => (\n (dataLoaded && (hasData === false || hasData === true)) ? hasData : true\n );\n\n const getCssClasses = () => {\n const cssClasses = ['tyk-chart'];\n\n if (!dataLoaded) {\n cssClasses.push('tyk-chart--loading-chart');\n }\n\n if (!chartHasData()) {\n cssClasses.push('tyk-chart--no-data');\n }\n\n return cssClasses.join(' ');\n };\n\n return (\n
    \n {\n !dataLoaded\n ? \n : null\n }\n \n {\n /* eslint-disable-next-line no-nested-ternary */\n chartHasData()\n ? null\n : noDataComponent\n ? noDataComponent()\n : (\n \n No data to display\n \n )\n }\n
    \n );\n};\n\nChart.propTypes = {\n areaStyleColors: PropTypes.instanceOf(Array),\n dataLoaded: PropTypes.bool,\n hasData: PropTypes.bool,\n highlight: PropTypes.oneOfType([\n PropTypes.number,\n PropTypes.string,\n PropTypes.instanceOf(Array),\n ]),\n noDataComponent: PropTypes.func,\n zoomStart: PropTypes.number,\n zoomEnd: PropTypes.number,\n zoomColors: PropTypes.instanceOf(Object),\n option: PropTypes.instanceOf(Object),\n onChange: PropTypes.func,\n style: PropTypes.instanceOf(Object),\n type: PropTypes.string,\n title: PropTypes.string,\n series: PropTypes.instanceOf(Array),\n seriesConfig: PropTypes.instanceOf(Object),\n};\n\nexport default memo(Chart);\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport Message from '../../Message';\nimport { useTimeout } from '../../../hooks';\n\nconst ToastMessage = (props) => {\n const {\n children,\n options,\n onClose,\n index,\n } = props;\n const opts = Object.assign({\n theme: 'success',\n delay: 3000,\n }, options);\n let timer;\n\n const handleClose = (itemIndex) => {\n onClose(itemIndex);\n clearTimeout(timer);\n };\n\n useTimeout(() => handleClose(index), opts.delay);\n\n return (\n handleClose(index)}\n >\n {children}\n \n );\n};\n\nToastMessage.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]),\n options: PropTypes.instanceOf(Object),\n onClose: PropTypes.func,\n index: PropTypes.number,\n};\n\nexport default ToastMessage;\n","import React, {\n useEffect, useState,\n} from 'react';\nimport PropTypes from 'prop-types';\n\nimport ToastMessage from './ToastMessage';\n\nconst ToastContainer = (props) => {\n const [messages, setMessages] = useState({});\n const {\n notify,\n } = props;\n\n const updateNotifications = (message, options) => {\n const msgID = Math.floor(Math.random() * 1000000);\n \n setMessages((prevMessages) => ({\n ...prevMessages,\n [msgID]: {\n message,\n options,\n }\n }));\n };\n\n useEffect(() => {\n notify(updateNotifications);\n }, [messages]);\n\n const onMessageClosed = (index) => {\n const tempMessages = {...messages};\n delete tempMessages[index];\n setMessages((prevMessages) => {\n const { [index]: messageToBeRemoved, ...restMessages } = prevMessages;\n return restMessages;\n });\n };\n\n return (\n
    \n {\n Object.keys(messages).map((msgID) => (\n messages[msgID]\n ? (\n \n {messages[msgID].message}\n \n )\n : null\n ))\n }\n
    \n );\n};\n\nToastContainer.propTypes = {\n notify: PropTypes.func,\n};\n\nexport default ToastContainer;\n","import React from 'react';\nimport { createRoot } from 'react-dom/client';\nimport ToastContainer from './js/ToastContainer';\n/**\n * Toast is a service that displays dialogs\n * on the bottom right part of the screen.\n *\n * The dialogs can have one of the Tyk UI themes, so that\n * it would match it's purpose (i.e success message, error message)\n *\n */\nclass ToastCreator {\n constructor() {\n const el = document.createElement('div');\n el.className = 'tyk-toast';\n document.body.appendChild(el);\n const root = createRoot(el);\n root.render();\n }\n\n bindNotify = (fn) => {\n this.createNotification = fn;\n };\n\n notify(message, options) {\n if (this.createNotification) {\n this.createNotification(message, options);\n }\n }\n\n danger(message, options) {\n this.notify(message, { ...options, theme: 'danger' });\n }\n\n success(message, options) {\n this.notify(message, { ...options, theme: 'success' });\n }\n\n warning(message, options) {\n this.notify(message, { ...options, theme: 'warning' });\n }\n\n info(message, options) {\n this.notify(message, { ...options, theme: 'info' });\n }\n}\n\nconst toast = new ToastCreator();\n\nexport default toast;\n","import React, { Fragment, createRef, useCallback } from 'react';\nimport PropTypes from 'prop-types';\n\nimport toast from '../Toast';\n\n/**\n * - CopyToClipboard is used to copy string for a user.\n * - Can be used normally with a text or a custom components (Eg. Button, Icon, etc)\n */\n\nconst CopyToClipboard = (props) => {\n const {\n display, copy, children, onCopy,\n } = props;\n const txtRef = createRef();\n const handleClick = useCallback(() => {\n if (onCopy) {\n onCopy();\n }\n\n if (!window.navigator.clipboard) {\n txtRef.current.select();\n document.execCommand('copy');\n toast.notify('copied', { theme: 'success' });\n return;\n }\n window.navigator.clipboard.writeText(copy);\n toast.notify('copied', { theme: 'success' });\n }, [onCopy, txtRef]);\n\n return (\n \n \n {children || display}\n \n {!window.navigator.clipboard ? (\n \n ) : null}\n \n );\n};\n\nCopyToClipboard.propTypes = {\n /** Callback function executed after text is copied */\n onCopy: PropTypes.func,\n /** Text to be copied */\n copy: PropTypes.string.isRequired,\n /** Text to be displayed */\n display: PropTypes.string,\n /** Children of custom element if you are using any custom element */\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.string,\n PropTypes.object,\n PropTypes.node,\n ]),\n};\n\nexport default CopyToClipboard;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nfunction ModalFooter({ children }) {\n return (\n
    \n { children }\n
    \n );\n}\n\nModalFooter.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]),\n};\n\nexport default ModalFooter;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nfunction ModalBody({ children }) {\n return (\n
    \n { children }\n
    \n );\n}\n\nModalBody.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]),\n};\n\nexport default ModalBody;\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport { CSSTransition } from 'react-transition-group';\n\nimport Icon from '../Icon';\nimport ModalFooter from './js/ModalFooter';\nimport ModalBody from './js/ModalBody';\n\n/**\n * Modals add dialogs confirmation boxes, notifications, or completely custom content\n * - only one Modal can be opened at a time\n * - are unmounted when Modal is closed\n */\nfunction Modal({\n children,\n theme = 'none',\n disableCloseCommands = false,\n opened = false,\n onClose = () => {},\n size = 'md',\n className = '',\n showBackdrop = true,\n ...restProps\n}) {\n const modalClasses = [\n 'tyk-modal',\n `tyk-modal--theme-${theme}`,\n opened && 'opened',\n ].concat(className.split(' ')).filter(Boolean).join(' ');\n\n const backdropClasses = [\n 'tyk-modal__backdrop',\n opened && 'opened',\n ].filter(Boolean).join(' ');\n\n const themeIcon = {\n success: 'check',\n warning: 'warning',\n danger: 'delete',\n }[theme];\n\n return (\n <>\n {\n ReactDOM.createPortal(\n \n
    \n
    \n
    \n {theme !== 'none' && (\n
    \n \n
    \n )}\n { children }\n
    \n
    \n
    \n ,\n document.querySelector('body'),\n )\n }\n {showBackdrop && ReactDOM.createPortal(\n \n !disableCloseCommands && onClose()}\n onKeyDown={() => {}}\n type=\"button\"\n aria-label=\"Close\"\n />\n ,\n document.querySelector('body'),\n )}\n \n );\n}\n\nModal.Body = ModalBody;\nModal.Footer = ModalFooter;\n/* eslint-disable-next-line */\nModal.Header = ({ children }) => {\n console.warn('%cModal.Header%c is deprecated.', 'font-weight: bold', '');\n return (\n
    \n { children }\n
    \n );\n};\n/* eslint-disable-next-line */\nModal.Title = ({ children }) => {\n console.warn('%cModal.Title%c is deprecated.', 'font-weight: bold', '');\n return (\n

    \n { children }\n

    \n );\n};\n\nModal.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]),\n className: PropTypes.string,\n /** one of \"success\", \"warning\", \"danger\", \"none\"; default is \"none\" */\n theme: PropTypes.string,\n /** If set on true, the Modal won't close when clicking on the overlay or by pressing ESC key */\n disableCloseCommands: PropTypes.bool,\n /** If true the Modal will be by default opened */\n opened: PropTypes.bool,\n /** Callback method when the Modal is closed */\n onClose: PropTypes.func,\n /** Width of the Moda: md or lg */\n size: PropTypes.string,\n showBackdrop: PropTypes.bool,\n};\n\nexport default Modal;\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Button from '../Button';\nimport Modal from '../Modal';\n\n/**\n * Confirm component can be used to open a dialog () before a specific action\n */\nfunction Confirm(props) {\n const {\n children,\n title,\n description,\n confirmBtnText = 'Confirm',\n cancelBtnText = 'Cancel',\n } = props;\n const [open, setOpen] = useState(false);\n const [callback, setCallback] = useState(null);\n const [cancelCallback, setCancelCallback] = useState(null);\n\n const show = (callbackFunc, cancelCallbackFunc, beforeCallback) => (...args) => {\n if (beforeCallback) {\n beforeCallback(...args);\n }\n setOpen(true);\n setCallback(() => () => callbackFunc(...args));\n if (cancelCallbackFunc) {\n setCancelCallback(() => () => cancelCallbackFunc(...args));\n }\n };\n\n const hide = () => {\n setOpen(false);\n setCallback(null);\n setCancelCallback(null);\n };\n\n const cancel = () => {\n if (cancelCallback) {\n cancelCallback();\n }\n hide();\n };\n\n const confirm = () => {\n callback();\n hide();\n };\n\n return (\n <>\n {children(show)}\n \n \n

    {title}

    \n {description}\n
    \n \n \n {cancelBtnText}\n \n \n {confirmBtnText}\n \n \n
    \n \n );\n}\n\nConfirm.propTypes = {\n /** Sets the text for primary / confirmation button on opened modal */\n confirmBtnText: PropTypes.string,\n /** Sets the text for danger / abort button on opened modal */\n cancelBtnText: PropTypes.string,\n /** Sets the title for the opened modal */\n title: PropTypes.string,\n /** Sets the description for the opened modal */\n description: PropTypes.string,\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.string,\n PropTypes.object,\n PropTypes.node,\n PropTypes.func,\n ]),\n};\n\nexport default Confirm;\n","import React, { useCallback, useEffect, useRef } from 'react';\nimport PropTypes from 'prop-types';\n\nimport debounce from '../../utils/debounce';\n/**\n * FixedWrapper component, keeps all its children in a fix position on the page,\n * even if the scroll position changes\n * i.e: The top navigation bar of a page sits within FixedWrapper component\n */\nfunction FixedWrapper({ children, className, showShadow }) {\n const fixedWrapperRef = useRef(null);\n\n const attachShadow = useCallback(() => {\n const element = fixedWrapperRef.current;\n\n if (!element) {\n return;\n }\n\n if (window.scrollY) {\n element.classList.add('tyk-fixed-wrapper--scrolled');\n } else {\n element.classList.remove('tyk-fixed-wrapper--scrolled');\n }\n }, [fixedWrapperRef.current]);\n\n const debouncedAttachShadow = useCallback(debounce(attachShadow, 100), [attachShadow]);\n\n useEffect(() => {\n if (showShadow) {\n window.addEventListener('scroll', debouncedAttachShadow);\n }\n\n return () => {\n window.removeEventListener('scroll', debouncedAttachShadow);\n };\n }, [debouncedAttachShadow, showShadow]);\n\n return (\n
    \n { children }\n
    \n );\n}\n\nFixedWrapper.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]),\n /** Css classes that can be passed to the FixedWraper element */\n className: PropTypes.string,\n /** If true, bottom shadow on the FixedWrapper component\n * is being displayed when scroll happens\n */\n showShadow: PropTypes.bool,\n};\n\nFixedWrapper.defaultProps = {\n className: '',\n};\n\nexport default FixedWrapper;\n","import React, {\n useEffect, useState, useRef, useCallback,\n} from 'react';\nimport { PropTypes } from 'prop-types';\n\nimport debounce from '../../utils/debounce';\nimport { usePrevious, useComponentSize } from '../../hooks';\nimport Loader from '../Loader';\n\nfunction InfiniteScroller({\n children,\n hasMore,\n initialLoad,\n loadMore,\n pageNumber,\n refChild,\n}) {\n const [showLoader, setShowLoader] = useState(false);\n const containerRef = useRef(null);\n const refChildSize = useComponentSize(refChild);\n\n useEffect(() => {\n if (initialLoad && typeof loadMore === 'function') {\n setShowLoader(false);\n loadMore(pageNumber);\n }\n }, [initialLoad]);\n\n const shouldLoad = useCallback(() => {\n if (!containerRef.current) return false;\n const { clientHeight, scrollTop } = containerRef.current;\n\n return (\n hasMore\n && (\n (clientHeight + Math.round(scrollTop) === refChildSize.height)\n || (clientHeight >= refChildSize.height)\n )\n );\n }, [containerRef, refChildSize.height]);\n\n const loadMoreData = useCallback(() => {\n if (hasMore && typeof loadMore === 'function') {\n loadMore(pageNumber + 1);\n setShowLoader(true);\n } else {\n setShowLoader(false);\n }\n }, [hasMore, pageNumber]);\n\n const prevPageNumber = usePrevious(pageNumber);\n const scrollHandler = useCallback(debounce(() => {\n if (shouldLoad() && prevPageNumber <= pageNumber) {\n loadMoreData();\n }\n }, 200), [loadMoreData, shouldLoad]);\n\n useEffect(() => {\n containerRef.current?.addEventListener('scroll', scrollHandler);\n return () => containerRef.current?.removeEventListener('scroll', scrollHandler);\n }, [containerRef, scrollHandler]);\n\n // if content resets (page number resets) scroll to top\n useEffect(() => {\n if (prevPageNumber > 0 && pageNumber === 0) {\n containerRef.current.scrollTop = 0;\n }\n }, [containerRef, pageNumber]);\n\n const prevRefChildSize = usePrevious(refChildSize);\n useEffect(() => {\n if (\n refChildSize && prevRefChildSize\n && refChildSize.height !== prevRefChildSize.height\n && showLoader === true\n ) {\n setShowLoader(false);\n }\n }, [showLoader, refChildSize.height]);\n\n useEffect(() => {\n if (\n refChild && refChildSize.height < containerRef.current.clientHeight\n && refChildSize.height\n && hasMore\n ) {\n loadMoreData();\n }\n }, [containerRef, refChildSize, refChild, hasMore]);\n\n return (\n
    \n \n { children }\n
    \n {showLoader && (\n \n )}\n
    \n );\n}\n\nInfiniteScroller.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n hasMore: PropTypes.bool,\n initialLoad: PropTypes.bool,\n pageNumber: PropTypes.number,\n loadMore: PropTypes.func,\n refChild: PropTypes.instanceOf(Object),\n};\n\nInfiniteScroller.defaultProps = {\n hasMore: true,\n};\n\nexport default InfiniteScroller;\n","import React, {\n useEffect, useRef, forwardRef,\n} from 'react';\nimport { createPortal } from 'react-dom';\nimport PropTypes from 'prop-types';\nimport InfiniteScroller from '../InfiniteScroller';\n\n/**\n * It displays a container relative to another element.\n * Meant to be used for dropdowns, tooltips, and other similar components.\n */\nfunction FloatingContainer({\n element,\n size = 'auto',\n forceDisplay = 'auto',\n displayAxis = 'auto',\n preferredPosition,\n offset = 0,\n className,\n children,\n infiniteScrollerConfig,\n}, ref) {\n const localRef = useRef(null);\n const floatingContainerRef = ref || localRef;\n const contentWrapperRef = useRef(null);\n\n function determineDisplay() {\n const target = element.current;\n const container = floatingContainerRef.current;\n if (!container) return preferredPosition ?? displayAxis === 'vertical' ? 'bottom' : 'right';\n\n const { left, top } = target.getBoundingClientRect();\n const topSpace = top;\n const bottomSpace = window.innerHeight - top - target.offsetHeight;\n const leftSpace = left;\n const rightSpace = window.innerWidth - left - target.offsetWidth;\n const hasTopSpace = topSpace > container.scrollHeight;\n const hasBottomSpace = bottomSpace > container.scrollHeight;\n const hasLeftSpace = leftSpace > container.offsetWidth;\n const hasRightSpace = rightSpace > container.offsetWidth;\n const positionedVerticallyFitsInViewport = left + target.offsetWidth / 2 - container.offsetWidth / 2 > 0; // eslint-disable-line max-len\n const positionedHorizontallyFitsInViewport = top + target.offsetHeight / 2 - container.scrollHeight / 2 > 0; // eslint-disable-line max-len\n\n if (\n displayAxis === 'vertical'\n || (\n displayAxis === 'auto'\n && (hasTopSpace || hasBottomSpace)\n && positionedVerticallyFitsInViewport\n )\n ) {\n if (preferredPosition === 'top' && hasTopSpace) return 'top';\n if (preferredPosition === 'bottom' && hasBottomSpace) return 'bottom';\n return hasBottomSpace || bottomSpace > topSpace ? 'bottom' : 'top';\n }\n\n if (displayAxis === 'horizontal') {\n if (preferredPosition === 'left' && hasLeftSpace) return 'left';\n if (preferredPosition === 'right' && hasLeftSpace) return 'right';\n return hasRightSpace || rightSpace > leftSpace ? 'right' : 'left';\n }\n\n if (hasTopSpace && positionedVerticallyFitsInViewport) return 'top';\n if (hasBottomSpace && positionedVerticallyFitsInViewport) return 'bottom';\n if (hasRightSpace && positionedHorizontallyFitsInViewport) return 'right';\n if (hasLeftSpace && positionedHorizontallyFitsInViewport) return 'left';\n return preferredPosition ?? 'bottom';\n }\n\n function adjustPosition() {\n const display = forceDisplay !== 'auto' ? forceDisplay : determineDisplay();\n const target = element.current;\n const container = floatingContainerRef.current;\n\n if (!target || !container) return;\n\n const targetPosition = target.getBoundingClientRect();\n\n if (display === 'top') {\n const topPos = targetPosition.top - container.offsetHeight - offset;\n container.style.top = `${topPos}px`;\n container.style.left = (size === 'auto'\n ? `${targetPosition.left + target.offsetWidth / 2 - container.offsetWidth / 2}px`\n : `${targetPosition.left}px`);\n\n if (size === 'matchElement') {\n container.style.width = `${target.offsetWidth}px`;\n } else if (typeof size === 'function') {\n container.style.width = `${size(target.offsetWidth)}px`;\n }\n container.style.maxHeight = `${targetPosition.top - offset}px`;\n }\n\n if (display === 'bottom') {\n container.style.top = `${targetPosition.bottom + offset}px`;\n container.style.left = size === 'auto'\n ? `${targetPosition.left + target.offsetWidth / 2 - container.offsetWidth / 2}px`\n : `${targetPosition.left}px`;\n if (size === 'matchElement') {\n container.style.width = `${target.offsetWidth}px`;\n } else if (typeof size === 'function') {\n container.style.width = `${size(target.offsetWidth)}px`;\n }\n container.style.maxHeight = `${window.innerHeight - targetPosition.bottom - offset}px`;\n }\n\n if (display === 'left') {\n const topPos = targetPosition.top + target.offsetHeight / 2 - container.offsetHeight / 2;\n container.style.top = size === 'auto'\n ? `${topPos}px`\n : `${targetPosition.top}px`;\n container.style.left = `${targetPosition.left - container.offsetWidth - offset}px`;\n if (size === 'matchElement') {\n container.style.height = `${target.offsetHeight}px`;\n } else if (typeof size === 'function') {\n container.style.height = `${size(target.offsetHeight)}px`;\n }\n container.style.maxWidth = `${targetPosition.left - offset}px`;\n }\n\n if (display === 'right') {\n const topPos = targetPosition.top + target.offsetHeight / 2 - container.offsetHeight / 2;\n container.style.top = size === 'auto'\n ? `${topPos}px`\n : `${targetPosition.top}px`;\n container.style.left = `${targetPosition.left + target.offsetWidth + offset}px`;\n if (size === 'matchElement') {\n container.style.height = `${target.offsetHeight}px`;\n } else if (typeof size === 'function') {\n container.style.height = `${size(target.offsetHeight)}px`;\n }\n container.style.maxWidth = `${window.innerWidth - targetPosition.left - target.offsetWidth - offset}px`;\n }\n }\n\n useEffect(() => {\n window.requestAnimationFrame(function schedulePositionUpdate() {\n adjustPosition();\n window.requestAnimationFrame(schedulePositionUpdate);\n });\n }, []);\n\n return createPortal(\n \n \n \n {children}\n
    \n \n
    ,\n document.querySelector('body'),\n );\n}\n\nFloatingContainer.propTypes = {\n /** A DOM element that the floating container will be displayed relative to. */\n element: PropTypes.instanceOf(Object),\n className: PropTypes.string,\n /** The size of the container.\n * If `auto` the size will be determined by its contents.\n * If `matchElement` it will take the width or the height of the element depending\n * on the `displayAxis` prop.\n * It can also be a function that returns a number representing the width\n * or the height in pixels.\n */\n size: PropTypes.oneOfType([\n PropTypes.oneOf(['auto', 'matchElement']),\n PropTypes.func,\n ]),\n /**\n * The distance between the element and the floating container.\n * It can be positive or negative.\n */\n offset: PropTypes.number,\n /**\n * If `auto` the component will try to determine where to display the container relative to the\n * element (top, bottom, left, right).\n * It can also be one of top, bottom, left, right, to force the floating container to always be\n * displayed in that position.\n */\n forceDisplay: PropTypes.oneOf(['auto', 'top', 'bottom', 'left', 'right']),\n /**\n * It can be `auto`, `vertical` or `horizontal`. It specifies the axis where\n * it will be displayed when `forceDisplay` is `auto`.\n */\n displayAxis: PropTypes.oneOf(['auto', 'vertical', 'horizontal']),\n /**\n * If there is space on both sides of the axis preffer this side.\n */\n preferredPosition: PropTypes.oneOf(['top', 'bottom', 'left', 'right']),\n /**\n * Configuration object that will be passed to the infinite scroller component.\n */\n infiniteScrollerConfig: PropTypes.instanceOf(Object),\n};\n\nexport default forwardRef(FloatingContainer);\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport Message from '../Message';\n\nfunction InfoNote({ children }) {\n return (\n
    \n \n { children }\n \n
    \n );\n}\n\nInfoNote.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]),\n};\n\nexport default InfoNote;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nconst ListItem = (props) => {\n const {\n className,\n children,\n } = props;\n\n return (\n
  • \n {children}\n
  • \n );\n};\n\nListItem.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n className: PropTypes.string,\n};\n\nListItem.defaultProps = {\n className: '',\n};\n\nexport default ListItem;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { fromJS } from 'immutable';\nimport ListItem from './js/ListItem';\n\nconst List = (props) => {\n const {\n className,\n children,\n label,\n labelwidth,\n theme,\n style,\n } = props;\n\n const getCssClasses = () => {\n let cssClasses = ['tyk-list'];\n\n if (theme) {\n cssClasses.push(`tyk-list--${theme}`);\n }\n\n if (className) {\n cssClasses = cssClasses.concat(className.split(' '));\n }\n\n return cssClasses.join(' ');\n };\n\n const getListStyle = () => {\n const styleCopy = fromJS(style).toJS();\n if (labelwidth) {\n styleCopy.flexBasis = `calc(100% - ${labelwidth} - 20px)`;\n }\n\n return styleCopy;\n };\n\n return (\n
    \n {\n label !== undefined\n ? (\n \n )\n : null\n }\n
      \n {children}\n
    \n
    \n );\n};\n\nList.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n className: PropTypes.string,\n label: PropTypes.string,\n labelwidth: PropTypes.string,\n theme: PropTypes.string,\n style: PropTypes.instanceOf(Object),\n};\n\nList.defaultProps = {\n theme: 'default',\n style: {},\n};\n\n\nList.Item = ListItem;\n\n\nexport default List;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nfunction NavBar({\n align = 'center',\n children,\n left,\n right,\n title,\n pre,\n subtitle,\n withTabs,\n}) {\n const subtitleContent = subtitle ?

    { subtitle }

    : null;\n return (\n
    \n
    \n {pre && (\n
    {pre}
    \n )}\n {\n title\n ? (\n
    \n

    { title }

    \n { subtitleContent }\n
    \n )\n : subtitleContent\n }\n
    \n {left && (\n
    { left }
    \n )}\n {right && (\n
    { right }
    \n )}\n
    \n
    \n { children }\n
    \n );\n}\n\nNavBar.propTypes = {\n align: PropTypes.string,\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n title: PropTypes.string,\n subtitle: PropTypes.string,\n pre: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n ]),\n left: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n ]),\n right: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n ]),\n withTabs: PropTypes.bool,\n};\n\nexport default NavBar;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nfunction NavigationItem({ children }) {\n return (\n
  • \n {children}\n
  • \n );\n}\n\nNavigationItem.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n};\n\nexport default NavigationItem;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport NavigationItem from './js/NavigationItem';\n\nfunction Navigation({ children }) {\n return (\n
      \n {children}\n
    \n );\n}\n\nNavigation.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n};\n\nNavigation.Item = NavigationItem;\n\nexport default Navigation;\n","import { createContext } from 'react';\n\nexport const PortalContext = createContext();\n","import React, { useCallback } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Collapsible from '../../Collapsible';\nimport { PortalContext } from '../panel-context';\n\nfunction PanelBody({\n children,\n noPadding,\n className,\n ...rest\n}) {\n const getCssClasses = useCallback(\n () => [\n 'tyk-panel__body',\n className,\n noPadding && 'no-padding',\n ].filter(Boolean).join(' '),\n [className, noPadding],\n );\n\n return (\n \n {\n (portalContext) => (\n portalContext.collapsable\n ? (\n \n { children }\n \n )\n : (\n \n { children }\n
    \n )\n )\n }\n \n );\n}\n\nPanelBody.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]),\n noPadding: PropTypes.bool,\n className: PropTypes.string,\n};\n\nexport default PanelBody;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nconst PanelFooter = (props) => {\n const { children } = props;\n return (\n
    \n { children }\n
    \n );\n};\n\nPanelFooter.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]),\n};\n\nexport default PanelFooter;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Icon from '../../Icon';\nimport { PortalContext } from '../panel-context';\n\nexport default class PanelHeader extends Component {\n static propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]).isRequired,\n className: PropTypes.string,\n }\n\n getCssClasses(props) {\n const { className } = this.props;\n let cssClasses = ['tyk-panel__header'];\n\n if (props.collapsable) {\n cssClasses.push('collapsable');\n }\n\n if (className) {\n cssClasses = cssClasses.concat(className.split(' '));\n }\n\n return cssClasses.join(' ');\n }\n\n render() {\n const {\n children,\n } = this.props;\n\n return (\n \n {\n (portalContext) => {\n const HeaderTag = portalContext.theme === 'blank' ? 'h3' : 'div';\n const iconType = portalContext.collapsed ? 'chevron-down' : 'chevron-up';\n\n return (\n \n { children }\n {\n portalContext.collapsable\n ?
    \n : null\n }\n \n );\n }\n }\n
    \n );\n }\n}\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport PanelBody from './js/PanelBody';\nimport PanelFooter from './js/PanelFooter';\nimport PanelHeader from './js/PanelHeader';\n\n\nimport { PortalContext } from './panel-context';\n\n\nconst Panel = (props) => {\n const {\n children,\n className,\n collapsed,\n collapsable,\n theme,\n onToggleCollapse,\n collapsibleIconPosition = 'right',\n } = props;\n const [collapsedState, setCollapsedState] = useState(collapsed || false);\n\n useEffect(() => {\n if (collapsed !== collapsedState) {\n setCollapsedState(collapsed);\n }\n }, [collapsed]);\n\n const getCssClasses = () => {\n let cssClasses = ['tyk-panel'];\n const panelTheme = `tyk-panel--${theme || 'default'}`;\n const collapsbleIconPosition = `tyk-panel__icon-collapse--${collapsibleIconPosition}`;\n\n cssClasses.push(panelTheme);\n cssClasses.push(collapsbleIconPosition);\n\n if (className) {\n cssClasses = cssClasses.concat(className.split(' '));\n }\n\n if (collapsedState) {\n cssClasses.push('tyk-panel--collapsed');\n }\n\n return cssClasses.join(' ');\n };\n\n const handleToggle = () => {\n setCollapsedState(!collapsedState);\n\n if (onToggleCollapse) {\n onToggleCollapse(!collapsedState);\n }\n };\n\n return (\n
    \n \n {\n (typeof children === 'function')\n ? children({\n toggleCollapse: handleToggle,\n })\n : children\n }\n \n
    \n );\n};\n\nPanel.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.func,\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]),\n className: PropTypes.string,\n collapsable: PropTypes.bool,\n collapsibleIconPosition: PropTypes.string,\n collapsed: PropTypes.bool,\n theme: PropTypes.string,\n onToggleCollapse: PropTypes.func,\n};\n\n\nPanel.Body = PanelBody;\nPanel.Footer = PanelFooter;\nPanel.Header = PanelHeader;\n\nexport default Panel;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n/**\n * Pill\n *\n */\nconst Pill = (props) => {\n const {\n children,\n className,\n theme,\n } = props;\n\n const getCssClasses = () => {\n let cssClasses = ['tyk-pill', ...theme.split(' ').map(t => `tyk-pill--${t}`)];\n\n if (className) {\n cssClasses = cssClasses.concat(className);\n }\n\n return cssClasses.join(' ');\n };\n\n return (\n
    \n {children}\n
    \n );\n};\n\nPill.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n /** Css classes that can be passed to the Pill element */\n className: PropTypes.string,\n /** Theme that can be applied to a Pill */\n theme: PropTypes.string,\n};\n\nPill.defaultProps = {\n theme: 'default',\n};\n\nexport default Pill;\n","import { useRef } from 'react';\n\n/**\n * RevealPanelService is a class that manages the resizing of a panel element.\n * It provides methods to set the panel's height, hide and show it, and attach\n * event listeners for resizing.\n */\nclass RevealPanelService {\n #state = null; // Private state for mouse interactions.\n\n #panel = null; // The panel element to be resized.\n\n #gutter = null; // The gutter element used for resizing.\n\n #wrapper = null; // The wrapper element that contains the panel and gutter.\n\n #onHeightChangeCallbacks = []; // Callback function to be executed when the panel is resized.\n\n #onDragStartCallbacks = []; // Callback function to be executed when the panel is resized.\n\n #onDragEndCallbacks = []; // Callback function to be executed when the panel is resized.\n\n #dragStarted = false;\n /**\n * Sets a callback function to be executed when the panel is resized.\n * @param {function} callback - The callback function to be called on panel resize.\n */\n\n on(eventName, listener) {\n let list = null;\n if (eventName === 'onHeightChange') {\n list = this.#onHeightChangeCallbacks;\n } else if (eventName === 'onDragStart') {\n list = this.#onDragStartCallbacks;\n } else if (eventName === 'onDragEnd') {\n list = this.#onDragEndCallbacks;\n }\n\n if (list) {\n this.addListener(list, listener);\n }\n }\n\n off(eventName, listener) {\n let list = null;\n if (eventName === 'onHeightChange') {\n list = this.#onHeightChangeCallbacks;\n } else if (eventName === 'onDragStart') {\n list = this.#onDragStartCallbacks;\n } else if (eventName === 'onDragEnd') {\n list = this.#onDragEndCallbacks;\n }\n\n if (list) {\n this.removeListener(list, listener);\n }\n }\n\n /**\n * Sets the panel, gutter, and wrapper elements to be controlled by this class.\n * @param {HTMLElement} wrapper - The wrapper element containing the panel and gutter.\n * @param {HTMLElement} panel - The panel element to be resized.\n * @param {HTMLElement} gutter - The gutter element used for resizing.\n */\n setRefs(wrapper, panel, gutter) {\n if (this.#panel || this.#gutter || this.#wrapper) {\n this.unbindEvents();\n }\n this.#wrapper = wrapper;\n this.#panel = panel;\n this.#gutter = gutter;\n this.#state = null;\n this.bindEvents();\n }\n\n /**\n * Attaches event listeners for panel resizing.\n */\n bindEvents() {\n this.ensureRefs('bindEvents');\n this.#gutter.addEventListener('mousedown', this.onMouseDown.bind(this));\n document.addEventListener('mousemove', this.onMouseMove.bind(this));\n document.addEventListener('mouseup', this.onMouseUp.bind(this));\n }\n\n /**\n * Gets the current height of the panel.\n * @returns {number} - The height of the panel in pixels.\n */\n getHeight() {\n this.ensureRefs('getHeight');\n const size = this.#panel.getBoundingClientRect();\n return size.height;\n }\n\n /**\n * Handles the mouse down event, initiating the resizing process.\n * @param {MouseEvent} e - The mouse event object.\n */\n onMouseDown(e) {\n this.ensureRefs('onMouseDown');\n this.#state = {\n mouseDown: true,\n initialRect: this.#panel.getBoundingClientRect(),\n initialEvent: e,\n };\n }\n\n /**\n * Handles the mouse move event, adjusting the panel's height during resizing.\n * @param {MouseEvent} e - The mouse event object.\n */\n onMouseMove(e) {\n this.ensureRefs('onMouseMove');\n\n if (!this.#state) {\n return;\n }\n\n const isButtonDown = this.isPrimaryMouseButtonDown(e);\n if (!isButtonDown) {\n this.onMouseUp();\n return;\n }\n\n if (!this.#dragStarted) {\n this.#dragStarted = true;\n this.onDragStart.bind(this)();\n }\n\n const newY = this.#state.initialEvent.y - e.y;\n const finalHeight = Math.ceil(this.#state.initialRect.height + newY);\n this.setHeight(`${finalHeight}px`, 'mousemove');\n }\n\n // eslint-disable-next-line class-methods-use-this\n notifyListeners(list, value) {\n if (list && Array.isArray(list) && list.length) {\n list.forEach((fn) => {\n if (typeof fn === 'function') {\n fn(value);\n }\n });\n }\n }\n\n // eslint-disable-next-line class-methods-use-this\n addListener(list, listener) {\n if (list && Array.isArray(list) && typeof listener === 'function') {\n list.push(listener);\n }\n }\n\n // eslint-disable-next-line class-methods-use-this\n removeListener(list, listener) {\n if (list && Array.isArray(list) && typeof listener === 'function' && list.length) {\n const index = list.indexOf(listener);\n\n if (index > -1) {\n list.splice(index, 1);\n }\n }\n }\n\n onDragEnd() {\n if (this.#dragStarted) {\n this.notifyListeners(this.#onDragEndCallbacks, this.getHeight());\n }\n }\n\n onDragStart() {\n this.notifyListeners(this.#onDragStartCallbacks, this.getHeight());\n }\n\n // eslint-disable-next-line class-methods-use-this\n isPrimaryMouseButtonDown(e) {\n const flags = e.buttons !== undefined ? e.buttons : e.which;\n // eslint-disable-next-line no-bitwise\n const isDown = flags === 1;\n return isDown;\n }\n\n /**\n * Resets the state after the mouse up event, ending the resizing process.\n */\n onMouseUp() {\n this.#state = null;\n this.onDragEnd.bind(this)();\n this.#dragStarted = false;\n }\n\n /**\n * Sets the height of the panel.\n * @param {string} height - The new height value as a CSS string (e.g., \"100px\").\n */\n setHeight(height) {\n let heightVal = height;\n this.ensureRefs('setHeight');\n\n if (typeof heightVal === 'number') {\n heightVal += 'px';\n }\n\n this.#panel.style.height = heightVal;\n\n this.notifyListeners(this.#onHeightChangeCallbacks, this.getHeight());\n }\n\n /**\n * Ensures that the required elements (wrapper, panel, and gutter) are set.\n * Throws an error if they are missing.\n */\n ensureRefs(reason) {\n if (!this.#panel || !this.#gutter || !this.#wrapper) {\n throw new Error(\n `${reason}: Wrapper, panel, and gutter elements are required. Use setRefs method first.`,\n );\n }\n }\n\n /**\n * Checks if the panel is hidden.\n * @returns {boolean} - True if the panel is hidden; false otherwise.\n */\n isHidden() {\n this.ensureRefs('isHidden');\n return this.#wrapper.style.visibility === 'hidden';\n }\n\n /**\n * Hides the panel by setting its visibility to \"hidden\".\n */\n hide() {\n this.ensureRefs('hide');\n this.#wrapper.style.visibility = 'hidden';\n }\n\n /**\n * Shows the panel by setting its visibility to \"visible\".\n */\n show() {\n this.ensureRefs('show');\n this.#wrapper.style.visibility = 'visible';\n }\n\n /**\n * Unbinds the event listeners added for resizing.\n */\n unbindEvents() {\n this.#onHeightChangeCallbacks = [];\n this.#onDragStartCallbacks = [];\n this.#onDragEndCallbacks = [];\n this.#gutter.removeEventListener('mousedown', this.onMouseDown.bind(this));\n document.removeEventListener('mousemove', this.onMouseMove.bind(this));\n document.removeEventListener('mouseup', this.onMouseUp.bind(this));\n }\n\n deinit() {\n this.unbindEvents();\n }\n}\n\nexport const useRevealPanelService = () => {\n const revealPanelServiceRef = useRef(new RevealPanelService());\n return revealPanelServiceRef.current;\n};\n","import React, {\n useEffect,\n useRef,\n useImperativeHandle,\n forwardRef,\n} from 'react';\nimport PropTypes from 'prop-types';\nimport { createPortal } from 'react-dom';\nimport { useRevealPanelService } from './js/RevealPanelService';\n\nfunction RevealPanelHeaderLeft({ children }) {\n // eslint-disable-next-line react/jsx-no-useless-fragment\n return <>{children};\n}\n\nRevealPanelHeaderLeft.propTypes = {\n children: PropTypes.instanceOf({}),\n};\n\nfunction RevealPanelHeaderRight({ children }) {\n // eslint-disable-next-line react/jsx-no-useless-fragment\n return <>{children};\n}\n\nRevealPanelHeaderRight.propTypes = {\n children: PropTypes.instanceOf({}),\n};\n\nconst mergeClasses = (...classNames) => classNames.map((it) => (it || '').trim()).filter(Boolean).join(' ');\n\nconst RevealPanel = forwardRef(({\n children,\n height,\n onHeightChange = null,\n onDragStart = null,\n onDragEnd = null,\n style = null,\n parentSelector = null,\n contentStyle,\n contentClassName,\n gutterClassName,\n wrapperClassName,\n// eslint-disable-next-line consistent-return\n}, ref) => {\n const panelRef = useRef(null);\n const gutterRef = useRef(null);\n const wrapperRef = useRef(null);\n\n const panelService = useRevealPanelService();\n\n useEffect(() => {\n if (!panelRef.current || !gutterRef.current || !wrapperRef.current) {\n return;\n }\n\n if (!panelService) {\n return;\n }\n\n panelService.setRefs(wrapperRef.current, panelRef.current, gutterRef.current);\n panelService.on('onHeightChange', onHeightChange);\n panelService.on('onDragStart', onDragStart);\n panelService.on('onDragEnd', onDragEnd);\n panelService.setHeight(height, 'initialize');\n\n // eslint-disable-next-line consistent-return\n return () => {\n panelService.unbindEvents();\n };\n }, []);\n\n useImperativeHandle(\n ref,\n () => {\n // bind this context\n const bind = (func) => func.bind(panelService);\n\n return {\n getHeight: bind(panelService.getHeight),\n setHeight: bind(panelService.setHeight),\n hide: bind(panelService.hide),\n show: bind(panelService.show),\n isHidden: bind(panelService.isHidden),\n deinit: bind(panelService.deinit),\n on: bind(panelService.on),\n off: bind(panelService.off),\n };\n },\n [],\n );\n\n let headerLeft = null;\n let headerRight = null;\n const contents = [];\n\n React.Children.forEach(children, (child) => {\n if (child && React.isValidElement(child)) {\n if (child.type === RevealPanelHeaderLeft) {\n headerLeft = child;\n } else if (child.type === RevealPanelHeaderRight) {\n headerRight = child;\n } else {\n contents.push(child);\n }\n }\n });\n\n const element = (\n
    \n
    \n
    \n\n
    {headerLeft}
    \n
    \n
    {headerRight}
    \n\n
    \n
    \n {contents}\n
    \n
    \n );\n\n if (parentSelector) {\n return createPortal(element, document.querySelector(parentSelector));\n }\n});\n\nRevealPanel.propTypes = {\n children: PropTypes.instanceOf({}),\n height: PropTypes.string,\n onHeightChange: PropTypes.func,\n onDragStart: PropTypes.func,\n onDragEnd: PropTypes.func,\n parentSelector: PropTypes.string,\n style: PropTypes.instanceOf({}),\n contentStyle: PropTypes.instanceOf({}),\n contentClassName: PropTypes.string,\n gutterClassName: PropTypes.string,\n wrapperClassName: PropTypes.string,\n};\n\nRevealPanel.HeaderLeft = RevealPanelHeaderLeft;\nRevealPanel.HeaderRight = RevealPanelHeaderRight;\n\nexport default RevealPanel;\n","import { createContext } from 'react';\n\nexport const TabsContext = createContext();\n","import { createContext } from 'react';\n\nexport default createContext();\n","import React, { useEffect, useMemo } from 'react';\nimport PropTypes from 'prop-types';\n\nimport TabContext from './TabContext';\nimport { usePrevious } from '../../../hooks';\n\nconst TabContent = (props) => {\n const {\n addTab,\n hideTab,\n updateTab,\n showTab,\n children,\n selectedPath,\n tabData,\n tabsId,\n tabExists,\n path,\n rendered,\n hideTabContent,\n tabs,\n } = props;\n\n useEffect(() => {\n const tempTabData = { ...tabData };\n\n if (!tabExists(path)) {\n addTab(tempTabData, path);\n }\n }, [tabData, path]);\n\n const prevTabData = usePrevious(tabData);\n useEffect(() => {\n if (\n tabExists(path) && tabData?.title\n && (prevTabData?.title !== tabData?.title || prevTabData.selected !== tabData.selected)\n ) {\n const tempTabData = { ...tabData };\n updateTab(tempTabData, path);\n }\n }, [tabData, path, prevTabData, tabs]);\n\n useEffect(() => {\n showTab(path);\n return () => hideTab(path);\n }, []);\n\n const shouldRender = useMemo(() => {\n if (!Object.keys(tabs).length) {\n return false;\n }\n\n if (hideTabContent || tabs[tabData.id].show === false) {\n return false;\n }\n\n if (!rendered) {\n return tabExists(path);\n }\n return selectedPath && selectedPath.indexOf(tabData.id) > -1;\n }, [hideTabContent, rendered, selectedPath, tabData, tabs]);\n\n return (\n (\n shouldRender\n ? (\n
    -1 ? 'block' : 'none' }}>\n \n {children}\n \n
    \n )\n : null\n )\n );\n};\n\nTabContent.propTypes = {\n addTab: PropTypes.func,\n updateTab: PropTypes.func,\n hideTab: PropTypes.func,\n showTab: PropTypes.func,\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n path: PropTypes.instanceOf(Array),\n hideTabContent: PropTypes.bool,\n rendered: PropTypes.bool,\n selectedPath: PropTypes.instanceOf(Array),\n tabExists: PropTypes.func,\n tabsId: PropTypes.string,\n tabData: PropTypes.instanceOf(Object),\n tabs: PropTypes.instanceOf(Object),\n};\n\nexport default TabContent;\n","import React, {\n Fragment, useContext, useEffect, useState,\n} from 'react';\nimport PropTypes from 'prop-types';\nimport { TabsContext } from '../tabs-context';\nimport TabContext from './TabContext';\nimport TabContent from './TabContent';\n\nconst Tab = (props) => {\n const { id } = props;\n const tabsContext = useContext(TabsContext);\n const tabContext = useContext(TabContext);\n const {\n tabExists,\n selectedPath,\n addTab,\n updateTab,\n hideTab,\n showTab,\n rendered,\n hideTabContent,\n tabs,\n } = tabsContext;\n const {\n children,\n } = props;\n const [path, setPath] = useState('');\n\n useEffect(() => {\n let tempPath;\n if (tabContext && path) {\n if (tabContext.tabsId === tabsContext.id) {\n tempPath = tabContext.path.concat([id]);\n } else {\n tempPath = [id];\n }\n } else {\n tempPath = [id];\n }\n setPath(tempPath);\n }, [tabContext]);\n\n if (!path) {\n return null;\n }\n\n return (\n \n \n {children}\n \n \n );\n};\n\nTab.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n id: PropTypes.string,\n};\n\nTab.defaultProps = {};\n\nexport default Tab;\n","\nimport React, {\n useEffect, useState,\n} from 'react';\nimport PropTypes from 'prop-types';\nimport Tab from './js/Tab';\n\nimport Collapsible from '../Collapsible';\nimport Icon from '../Icon';\nimport { TabsContext } from './tabs-context';\n\nconst Tabs = (props) => {\n const {\n children,\n className,\n id,\n onTabChange,\n type,\n hideTabContent,\n } = props;\n const [tabs, setTabs] = useState({});\n const [selectedPath, setSelectedPath] = useState([]);\n const [rendered, setRendered] = useState(false);\n const [initialPath, setInitialPath] = useState(null);\n\n useEffect(() => {\n setSelectedPath(initialPath);\n }, [initialPath]);\n\n const updateTabsList = (tabsState, path, tabData) => {\n let tempTabsState = Object.assign({}, tabsState);\n const tempTabData = Object.assign({}, tabData);\n const tempPath = path.slice(0);\n\n while (tempPath.length > 1) {\n tempTabsState = tempTabsState[tempPath.shift()];\n\n if (!tempTabsState) {\n tempTabsState = {};\n }\n }\n\n tempTabData.tempPath = tempPath;\n tempTabsState[tempPath.shift()] = tempTabData;\n\n return tempTabsState;\n };\n\n const toggleTab = (tabsState, path) => {\n let tempTabsState = Object.assign({}, tabsState);\n const tempPath = path.slice(0);\n\n while (tempPath.length > 1) {\n tempTabsState = tempTabsState[tempPath.shift()];\n }\n\n const key = tempPath.shift();\n if (tempTabsState[key].collapsed === undefined) {\n tempTabsState[key].collapsed = true;\n } else {\n tempTabsState[key].collapsed = !tempTabsState[key].collapsed;\n }\n\n return tempTabsState;\n };\n\n const getCssClasses = () => {\n let cssClasses = ['tyk-tabs'];\n\n cssClasses.push(`tyk-tabs--${type || 'default'}`);\n\n if (className) {\n cssClasses = cssClasses.concat(className.split(' '));\n }\n\n return cssClasses.join(' ');\n };\n\n const setCurrentSelectedPath = (path, tabData) => {\n const tempPath = path.slice(0);\n let tempRendered = true;\n\n if (tabData.collapsible) {\n tempPath.push(Object.keys(tabData.tabs)[0]);\n tempRendered = false;\n }\n\n setTabs((prevTabs) => {\n let tempTabs = Object.assign({}, prevTabs);\n\n tempTabs = toggleTab(tempTabs, path);\n\n return tempTabs;\n });\n setSelectedPath(tempPath);\n setRendered(tempRendered);\n\n if (onTabChange) {\n onTabChange(tabData);\n }\n };\n\n const getTabCssClass = (tabId) => {\n const cssClasses = [];\n\n if (selectedPath && selectedPath.indexOf(tabId) > -1) {\n cssClasses.push('active');\n }\n\n return cssClasses.join(' ');\n };\n\n const genTabs = (currentTabs, path) => {\n if (!currentTabs) {\n return null;\n }\n\n return (\n
      \n {\n Object.keys(currentTabs).map((tabId, index) => {\n const tempPath = path ? path.concat([currentTabs[tabId].id]) : [currentTabs[tabId].id];\n const iconType = currentTabs[tabId].collapsed ? 'chevron-up' : 'chevron-down';\n\n if (currentTabs[tabId].show === false) {\n return null;\n }\n\n return (\n
    • \n \n { currentTabs[tabId].title }\n {\n currentTabs[tabId].collapsible\n ? \n : null\n }\n \n {\n currentTabs[tabId].collapsible\n ? (\n \n {genTabs(currentTabs[tabId].tabs, tempPath)}\n \n )\n : genTabs(currentTabs[tabId].tabs, tempPath)\n }\n
    • \n );\n })\n }\n
    \n );\n };\n\n const addTab = (tabData, path) => {\n setTabs(prevTabs => updateTabsList({ ...prevTabs }, path, tabData));\n\n if (tabData.selected) {\n setInitialPath(path);\n }\n };\n\n const updateTab = (tabData, path) => {\n setTabs((prevTabs) => {\n const tempTabs = { ...prevTabs };\n tempTabs[tabData.id] = tabData;\n return tempTabs;\n });\n\n if (tabData.selected) {\n setCurrentSelectedPath(path, tabData);\n }\n };\n\n const hideTab = (path) => {\n setTabs((prevTabs) => {\n const tempTabs = { ...prevTabs };\n tempTabs[path].show = false;\n\n return tempTabs;\n });\n };\n\n const showTab = (path) => {\n setTabs((prevTabs) => {\n const tempTabs = { ...prevTabs };\n\n tempTabs[path].show = true;\n\n return tempTabs;\n });\n };\n\n const tabExists = (path) => {\n let tempTabs = { ...tabs };\n const tempPath = path.slice(0);\n while (tempPath.length > 1) {\n tempTabs = tempTabs[tempPath.shift()];\n }\n\n const key = tempPath.shift();\n\n return !!(tempTabs && tempTabs[key]);\n };\n\n return (\n
    \n {genTabs(tabs)}\n \n {\n (typeof children === 'function')\n ? children({\n hideTab,\n showTab,\n })\n : children\n }\n \n
    \n );\n};\n\nTabs.propTypes = {\n className: PropTypes.string,\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n hideTabContent: PropTypes.bool,\n id: PropTypes.string,\n onTabChange: PropTypes.func,\n type: PropTypes.string,\n};\n\n\nTabs.Tab = Tab;\n\nexport default Tabs;\n","import React, {\n useCallback, useEffect, useRef, useState,\n} from 'react';\nimport PropTypes from 'prop-types';\n\nimport FloatingContainer from '../FloatingContainer';\nimport Icon from '../Icon';\n\nfunction Tooltip({\n render,\n className,\n children,\n position = 'auto',\n style,\n icon = false,\n closable,\n isOpened = false,\n additionalClickParents = [],\n ...props\n}) {\n const [isActive, setIsActive] = useState(false);\n const wrapperRef = useRef(null);\n const tooltipRef = useRef(null);\n const activeEvents = closable\n ? {\n onClick: () => setIsActive(true),\n }\n : {\n onMouseEnter: () => setIsActive(true),\n onMouseLeave: () => setIsActive(false),\n onFocus: () => setIsActive(true),\n onBlur: () => setIsActive(false),\n };\n\n const handleDocumentClick = useCallback((e) => {\n if ([...additionalClickParents, tooltipRef.current].some((p) => p?.contains?.(e.target))) {\n return;\n }\n setIsActive(false);\n }, [additionalClickParents]);\n\n useEffect(() => {\n document.addEventListener('click', handleDocumentClick, true);\n return () => document.removeEventListener('click', handleDocumentClick, true);\n }, [handleDocumentClick]);\n\n useEffect(() => {\n setIsActive(isOpened);\n }, [isOpened]);\n\n const classes = ['tyk-tooltip', className].filter(Boolean).join(' ');\n return (\n \n {children}\n {isActive && (\n \n
    \n {icon && (\n icon === true ? (\n \n ) : (\n icon\n )\n )}\n
    \n {render}\n
    \n {closable && (\n {\n e.stopPropagation();\n setIsActive(false);\n }}\n />\n )}\n
    \n \n )}\n
    \n );\n}\n\nTooltip.propTypes = {\n children: PropTypes.node.isRequired,\n /** custom styles to apply on hovered element */\n style: PropTypes.instanceOf(Object),\n /** describes where the tooltip should be displayed in relation\n * whith the hovered element: top, bottom, left, right\n */\n position: PropTypes.string,\n /** content of the tooltip, can be a string or a React node element */\n render: PropTypes.oneOfType([\n PropTypes.node,\n PropTypes.string,\n ]),\n /** additional tooltip classes */\n className: PropTypes.string,\n /** if `true` displays the \"question mark\" icon;\n * optionally you can pass a different icon\n */\n icon: PropTypes.oneOfType([\n PropTypes.bool,\n PropTypes.node,\n ]),\n /** if `true` the tooltip is activated on click and an \"x\" is displayed to close it;\n * if `false` the tooltip is activated on hover and it closes when no longer hovering\n */\n closable: PropTypes.bool,\n /** handles the `isActive` state of the tooltip from outside */\n isOpened: PropTypes.bool,\n /** Additional dom elements to check if the document click was inside of them.\n * Useful when you want to open the tooltip after an interaction\n * with an element not inside the tooltip root.\n */\n additionalClickParents: PropTypes.instanceOf(Array),\n};\n\nexport default Tooltip;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Tooltip from '../Tooltip';\n/**\n * TextEllipsis component helps you to hide a part of a text,\n * but displaying it when it's being hovered.\n * The entire text is displayed with the help of Tooltip component\n */\n\nfunction TextEllipsis({ text, limit, position }) {\n return (\n text.length > limit\n ? (\n \n {text.substring(0, limit)}\n ...\n \n )\n : text\n );\n}\n\nTextEllipsis.propTypes = {\n /** Text to be shrinked by TextEllipsis */\n text: PropTypes.string,\n /** Number of characters that TextEllipsis would leave visible */\n limit: PropTypes.number,\n /** tooltip position */\n position: PropTypes.string,\n};\n\nexport default TextEllipsis;\n","import React, { Component, Fragment } from 'react';\nimport PropTypes from 'prop-types';\n\nconst shouldShowPage = (currentNr, pageNr, totalNrOfPages) => {\n const basePageNr = 5;\n const minimumNrOfPages = 10;\n\n if (totalNrOfPages < minimumNrOfPages) {\n return true;\n }\n\n if (\n pageNr < basePageNr\n && currentNr < basePageNr\n ) {\n return true;\n }\n\n if (\n pageNr > totalNrOfPages - basePageNr\n && currentNr > totalNrOfPages - basePageNr\n ) {\n return true;\n }\n\n if (\n currentNr >= pageNr - 2\n && currentNr <= pageNr + 2\n ) {\n return true;\n }\n\n if ([0, 1, totalNrOfPages - 1, totalNrOfPages].indexOf(currentNr) > -1) {\n return true;\n }\n\n return false;\n};\n\nconst getPagesArr = (nrOfPages, selectedPage) => {\n let i; const\n pagesArr = [];\n\n for (i = 0; i <= nrOfPages; i += 1) {\n if (shouldShowPage(i, selectedPage, nrOfPages)) {\n if (i > pagesArr[pagesArr.length - 1]) {\n pagesArr.push('...');\n }\n pagesArr.push(i + 1);\n }\n }\n\n return pagesArr;\n};\n\nexport default class Pagination extends Component {\n static propTypes = {\n value: PropTypes.number,\n totalNrOfPages: PropTypes.number,\n onChange: PropTypes.func,\n };\n\n constructor(props) {\n super(props);\n const {\n value,\n totalNrOfPages,\n } = this.props;\n\n this.state = {\n prevProps: this.props,\n selectedPage: value || 0,\n pagesArray: getPagesArr(totalNrOfPages, value),\n };\n\n this.pageKey = 0;\n }\n\n static getDerivedStateFromProps(nextProps, prevState) {\n if (\n nextProps.value !== prevState.prevProps.value\n || nextProps.totalNrOfPages !== prevState.prevProps.totalNrOfPages\n ) {\n return {\n selectedPage: nextProps.value,\n pagesArray: getPagesArr(nextProps.totalNrOfPages, nextProps.value),\n };\n }\n\n return null;\n }\n\n getPageCssClass(pageNr) {\n const { selectedPage } = this.state;\n const cssClasses = [];\n\n if (selectedPage === pageNr) {\n cssClasses.push('active');\n }\n\n return cssClasses.join(' ');\n }\n\n getPageKey() {\n this.pageKey += 1;\n\n return this.pageKey;\n }\n\n goToPage(pageNr) {\n const { onChange, totalNrOfPages } = this.props;\n this.setState({\n selectedPage: pageNr,\n pagesArray: getPagesArr(totalNrOfPages, pageNr),\n }, () => {\n if (onChange) {\n onChange(pageNr);\n }\n });\n }\n\n render() {\n const { totalNrOfPages } = this.props;\n const { pagesArray, selectedPage } = this.state;\n\n return (\n \n {\n totalNrOfPages\n ? (\n
      \n {\n selectedPage > 0 && totalNrOfPages > 5\n ? (\n
    • \n \n
    • \n )\n : null\n }\n {\n pagesArray.map(pageNr => (\n
    • \n {\n pageNr !== '...'\n ? \n : { pageNr }\n }\n
    • \n ))\n }\n {\n selectedPage < totalNrOfPages && totalNrOfPages > 5\n ? (\n
    • \n \n
    • \n )\n : null\n }\n
    \n )\n : null\n }\n
    \n );\n }\n}\n","import { createContext } from 'react';\n\nexport const tableContext = createContext();\n","import React, { useState, useContext } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { tableContext } from '../tableContext';\nimport Icon from '../../Icon';\n\nexport const HeaderCell = ({ column }) => {\n const { sortable } = column;\n const [sortOrder, setSortOrder] = useState(sortable?.default || 'ASC');\n const { state, sendMessage } = useContext(tableContext);\n return (\n {\n sendMessage('sort', { column, sortOrder });\n setSortOrder(sortOrder === 'ASC' ? 'DESC' : 'ASC');\n } : null}\n className={state.maxHeight ? 'fixed-header' : ''}\n >\n {column.name}\n {column.sortable && (\n \n \n \n )}\n \n );\n};\n\nHeaderCell.propTypes = {\n column: PropTypes.instanceOf(Object),\n};\n","import React, { useContext, useState } from 'react';\nimport { HeaderCell } from './header-cell';\nimport { tableContext } from '../tableContext';\n\nexport const Header = () => {\n const [selectAll, setSelectAll] = useState(false);\n const { state, sendMessage } = useContext(tableContext);\n const { columns, selectable } = state;\n\n const generateHeaders = () => columns.map(column => (\n \n ));\n\n const generateSelectable = () => {\n if (!selectable) {\n return;\n }\n const Component = selectable.type;\n // eslint-disable-next-line consistent-return\n return (\n \n {selectable?.allowSelectAll ? (\n
    \n {\n setSelectAll(!selectAll);\n sendMessage('header.selectAll.click', selectAll);\n }}\n onChange={(v) => {\n sendMessage('header.selectAll.change', v);\n }}\n >\n {selectable.values?.value}\n \n
    \n ) : (\n selectable.name || 'Select'\n )}\n \n );\n };\n\n return (\n \n \n {selectable && selectable.position === 'LEFT' && generateSelectable()}\n {generateHeaders()}\n {selectable && selectable.position === 'RIGHT' && generateSelectable()}\n \n \n );\n};\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\n\n/**\n * - Checkboxes are used when a user needs to select one or more values from a series of options.\n * - They can be also be used as a binary toggle but consider radio instead.\n * - Can be used with Formik respectively (FormikCheckbox)\n */\nexport default class Checkbox extends Component {\n static propTypes = {\n /** Disable a checkbox */\n disabled: PropTypes.bool,\n /** Readonly prop behaves the same as disable on checkboxes */\n readOnly: PropTypes.bool,\n /** Align checkbox with in same line with other elements */\n inline: PropTypes.bool,\n /** Set a theme for checkbox */\n theme: PropTypes.string,\n /** Set an error state for checkbox if boolean will show just icon without message */\n error: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.bool,\n ]),\n /** Adds additional information under the checkbox element */\n note: PropTypes.string,\n input: PropTypes.instanceOf(Object),\n /** Adds a label to checkbox */\n label: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.func,\n PropTypes.string,\n ]),\n /** Set a name for checkbox */\n name: PropTypes.string,\n /** Set initial value for checkbox */\n value: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.bool,\n ]),\n /** Make checkbox checked by default */\n checked: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.bool,\n ]),\n /** Callback function executed on change of checkbox */\n onChange: PropTypes.func,\n /** CSS classes added to the wrapper of the component */\n wrapperClassName: PropTypes.string,\n };\n\n getCssClasses() {\n const {\n inline, disabled, readOnly, theme = '', wrapperClassName = '',\n } = this.props;\n\n const cssClasses = [wrapperClassName];\n\n cssClasses.push('tyk-checkbox');\n\n if (inline) {\n cssClasses.push('tyk-checkbox--inline');\n }\n\n if (theme.trim()) {\n cssClasses.push(...theme.split(' ').map(t => `tyk-checkbox--theme-${t}`));\n }\n\n if (disabled || readOnly) {\n cssClasses.push('tyk-checkbox--is-disabled');\n }\n\n return cssClasses.join(' ');\n }\n\n displayError() {\n const { error } = this.props;\n if (!error) return null;\n\n return (\n

    \n {error}\n

    \n );\n }\n\n displayNote() {\n const { note } = this.props;\n if (!note) return null;\n\n return (\n

    \n {note}\n

    \n );\n }\n\n render() {\n const {\n input, value, label, ...rest\n } = this.props;\n return (\n \n
    \n \n {this.displayNote()}\n {this.displayError()}\n
    \n \n );\n }\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nexport const Cell = ({ col, row }) => {\n if (!row.values[col.id]) {\n return ;\n }\n\n if (col.type === 'string') {\n return (\n // eslint-disable-next-line jsx-a11y/click-events-have-key-events\n \n {row.values[col.id]?.value}\n \n );\n }\n const Component = col.type;\n return (\n \n \n {row.values[col.id].children ? row.values[col.id].children : null}\n
    \n \n );\n};\n\nCell.propTypes = {\n col: PropTypes.instanceOf(Object),\n row: PropTypes.instanceOf(Object),\n index: PropTypes.number,\n};\n","import React, { useContext } from 'react';\nimport PropTypes from 'prop-types';\nimport Checkbox from '../../../form/components/Checkbox';\nimport { Cell } from './cell';\nimport { tableContext } from '../tableContext';\n\nexport const Row = ({ row, index }) => {\n const { state, sendMessage } = useContext(tableContext);\n const { columns, selectable } = state;\n\n const SelectableCheckbox = () => (\n \n sendMessage('row.selected', { index, selected: v })}\n />\n \n );\n\n return (\n \n {selectable && selectable.position === 'LEFT' && SelectableCheckbox()}\n {columns.map(col => (\n \n ))}\n {selectable && selectable.position === 'RIGHT' && SelectableCheckbox()}\n \n );\n};\n\nRow.propTypes = {\n row: PropTypes.instanceOf(Object),\n index: PropTypes.number,\n};\n","import React, { useContext } from 'react';\nimport { tableContext } from '../tableContext';\nimport { Row } from './row';\n\n\nexport const Body = () => {\n const { state } = useContext(tableContext);\n const { rows } = state;\n\n return (\n \n {\n // eslint-disable-next-line react/no-array-index-key\n rows.map((row, i) => )\n }\n \n );\n};\n","import React, { useState, useEffect, useRef } from 'react';\nimport PropTypes from 'prop-types';\nimport Message from '../Message';\nimport Pagination from '../../form/components/Pagination';\nimport Loader from '../Loader';\nimport InfiniteScroller from '../InfiniteScroller';\nimport { Header } from './js/header';\nimport { Body } from './js/body';\nimport { tableContext } from './tableContext';\n\n/**\n * This is tyk's table component used to render a data in a tabular view.\n * See the example configuration object below to understand how to hydrate the table component\n */\n\nfunction Table({\n value, onChange, noDataMessage, loading, infiniteScrolling,\n}) {\n const [state, setState] = useState(null);\n const [onChangeMsg, setOnChangeMsg] = useState('api');\n const itemsListRef = useRef(null);\n const sortRows = (col, sortOrder) => {\n setState({\n ...state,\n sort: {\n order: sortOrder,\n col,\n },\n });\n };\n\n const selectAllRows = (data) => {\n setState({\n ...state,\n rows: state.rows.map((row) => ({ ...row, selected: data })),\n });\n };\n\n const selectRow = (data) => {\n const { index, selected } = data;\n const selectedRow = state.rows[index];\n \n setState({\n ...state,\n rows: [\n ...state.rows.slice(0, index),\n { ...selectedRow, selected },\n ...state.rows.slice(index + 1),\n ],\n });\n };\n\n const setPagination = (data) => {\n setState({\n ...state,\n pagination: {\n ...state.pagination,\n current: data + 1,\n },\n });\n };\n\n const api = {\n getState: () => state,\n setState: (newState) => setState(newState),\n };\n\n const sendMessage = (message, data) => {\n setOnChangeMsg(message);\n if (message === 'sort') {\n sortRows(data.column.id, data.sortOrder);\n }\n\n if (message === 'header.selectAll.click') {\n selectAllRows(data);\n }\n\n if (message === 'header.selectAll.change') {\n selectAllRows(data);\n }\n\n if (message === 'row.selected') {\n selectRow(data);\n }\n\n if (message === 'pagination.change') {\n setPagination(data);\n }\n };\n\n useEffect(() => setState(value), [value]);\n useEffect(() => {\n if (onChange) {\n onChange(onChangeMsg, state, api);\n }\n setOnChangeMsg('api');\n }, [state]);\n\n if (!state) {\n return ;\n }\n\n if (state.rows <= 0) {\n return {noDataMessage || 'No Data Available'};\n }\n\n const getTable = () => (\n \n
    \n \n
    \n );\n\n\n return (\n \n
    \n {\n loading && \n }\n {\n infiniteScrolling && state.pagination\n ? (\n state.pagination.current}\n loadMore={(num) => sendMessage('pagination.change', num)}\n pageNumber={state.pagination.current - 1}\n initialLoad={false}\n >\n { getTable() }\n \n )\n : getTable()\n }\n
    \n {state.pagination && !infiniteScrolling && (\n
    \n sendMessage('pagination.change', num)}\n />\n
    \n )}\n
    \n );\n}\n\nTable.propTypes = {\n /** Configuration object used to render the component */\n value: PropTypes.shape({\n /** Configuration for table columns */\n columns: PropTypes.arrayOf(PropTypes.shape({\n /** Unique id of the column */\n id: PropTypes.string.isRequired,\n /** Name of the column */\n name: PropTypes.string,\n /** Type of column, String by default */\n type: PropTypes.oneOfType([\n /** Just renders cell data of type strings */\n PropTypes.string,\n /** Render cell of elements (eg. Input / Button) */\n PropTypes.element,\n /** Render a custom function/component */\n PropTypes.func,\n ]),\n sortable: PropTypes.oneOfType([\n /** Make Column sortable */\n PropTypes.bool,\n /** Configure sorting behaviour */\n PropTypes.shape({\n /** Set default sorting direction ASC / DESC */\n default: PropTypes.string,\n }),\n ]),\n })),\n /** Configuration for table rows */\n rows: PropTypes.arrayOf(PropTypes.shape({})),\n /** Configuration to make table rows selectable */\n selectable: PropTypes.shape({}),\n /** Renders pagination for table if the object is missing / empty no pagination is rendered. */\n pagination: PropTypes.shape({}),\n /** Sets maximum height for table container. */\n maxHeight: PropTypes.string,\n /** Styling for the table container. */\n styling: PropTypes.shape({\n /** It's recommended to add styles to a class and pass the class in this object */\n className: PropTypes.string,\n }),\n }).isRequired,\n /** Callback executed with message and value when there are changes on table */\n onChange: PropTypes.func,\n /** Renders a component with the given message when `config.rows` is empty */\n noDataMessage: PropTypes.string,\n /** Show placeholder loader */\n loading: PropTypes.bool,\n /** Adds infinite scroller on page and calls `onChange` with `pagination.change` message */\n infiniteScrolling: PropTypes.bool,\n};\n\nTable.defaultProps = {\n loading: false,\n infiniteScrolling: false,\n noDataMessage: 'No Data Available',\n onChange: null,\n};\n\nexport default Table;\n","import React, { PureComponent } from 'react';\nimport PropTypes from 'prop-types';\n\n/**\n * Column component.\n */\nclass Column extends PureComponent {\n static propTypes = {\n /**\n * This property describes how the column element will be aligned vertically\n * within a Row: bottom, center, top\n */\n align: PropTypes.string,\n /** Css classes that can be passed to the column element */\n className: PropTypes.string,\n /**\n * ID that can be passed to the column element\n */\n id: PropTypes.string,\n /**\n * Specifies the size of the column within a Row (values must be between 1 - 12)\n */\n size: PropTypes.string.isRequired,\n /**\n * Specifies the left gap a column can have within a Row (values must be between 1 - 12)\n */\n offset: PropTypes.string,\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.string,\n PropTypes.object,\n PropTypes.node,\n ]),\n };\n\n getCssClasses() {\n const {\n align, className, offset, size,\n } = this.props;\n const colSize = size.split(' ');\n const colOffsets = offset ? offset.split(' ') : [];\n\n let cssClasses = colSize.map(cSize => `tyk-col--${cSize}`);\n const offsets = colOffsets.map(cOffset => `tyk-col--offset-${cOffset}`);\n\n if (align) {\n cssClasses.push(`tyk-col--align-${align}`);\n }\n\n if (className) {\n cssClasses = cssClasses.concat(className.split(' '));\n }\n\n cssClasses.push('tyk-col');\n cssClasses = cssClasses.concat(offsets || []);\n\n return cssClasses.join(' ');\n }\n\n render() {\n const { children, id, ...props } = this.props;\n\n return (\n
    \n { children }\n
    \n );\n }\n}\n\nexport default Column;\n","import React, { PureComponent } from 'react';\nimport PropTypes from 'prop-types';\n\n\n/** Row component which must be always present as a wrapper for Columns */\nexport default class Row extends PureComponent {\n static propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n ]),\n /** Css classes that can be passed to the Row element */\n className: PropTypes.string,\n /** Removes all the spaces between column */\n nogutters: PropTypes.bool,\n }\n\n getCssClasses() {\n const { className, nogutters } = this.props;\n let cssClass = ['tyk-row'];\n\n if (nogutters) {\n cssClass.push('no-gutters');\n cssClass.push('tyk-row--gutterless');\n }\n\n if (className) {\n cssClass = cssClass.concat(className.split(' '));\n }\n\n return cssClass.join(' ');\n }\n\n render() {\n const {\n children,\n nogutters,\n ...rest\n } = this.props;\n\n return (\n
    \n { children }\n
    \n );\n }\n}\n","import { createContext } from 'react';\n\nexport const DropdownContext = createContext();\n","import React, { cloneElement, useCallback } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { DropdownContext } from '../dropdown-context';\nimport Icon from '../../../../components/Icon';\n\nfunction DropdownItem(props) {\n const {\n customdropdownitem,\n children,\n eventKey,\n href,\n target,\n title,\n onClick,\n } = props;\n const dropdownItemCLick = useCallback((dropdownContext, itemProps) => {\n dropdownContext.onSelectItem(eventKey, itemProps);\n\n if (onClick) onClick(eventKey);\n }, []);\n\n return (\n \n {\n (dropdownContext) => (\n dropdownItemCLick(dropdownContext, props)}\n onKeyUp={() => {}}\n >\n {\n customdropdownitem\n ? cloneElement(customdropdownitem, {})\n : (\n \n {\n eventKey\n && dropdownContext.selectedItem === eventKey\n && dropdownContext.showCheckmark\n ? \n : null\n }\n \n {title || children}\n \n \n )\n }\n \n )\n }\n \n );\n}\n\nDropdownItem.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]),\n customdropdownitem: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n ]),\n eventKey: PropTypes.string,\n href: PropTypes.string,\n target: PropTypes.string,\n onClick: PropTypes.func,\n title: PropTypes.string,\n};\n\nexport default DropdownItem;\n","import React, {\n Component, createRef,\n} from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport DropdownItem from './js/DropdownItem';\nimport Button from '../../../components/Button';\nimport { DropdownContext } from './dropdown-context';\n\nclass Dropdown extends Component {\n static isElemInRightView(el, dropdownWidth) {\n const windowWidth = window.innerWidth;\n const offset = el.getBoundingClientRect();\n const elemRight = offset.left + dropdownWidth;\n\n return elemRight <= windowWidth;\n }\n\n static isElemInBottomView(el, dropdownHeight) {\n const windowHeight = window.innerHeight;\n const offset = el.getBoundingClientRect();\n const elHeight = el.clientHeight;\n const elemBottom = offset.top + elHeight + dropdownHeight;\n\n return elemBottom <= windowHeight;\n }\n\n constructor(props) {\n super(props);\n\n const {\n selectedItem,\n open,\n } = this.props;\n\n this.state = {\n opened: open,\n selectedItem: selectedItem || null,\n };\n\n this.dropdownRef = createRef();\n this.dropdownListRef = createRef();\n this.dropdownButtonRef = createRef();\n this.onSelectItem = this.onSelectItem.bind(this);\n this.toggleDropdown = this.toggleDropdown.bind(this);\n this.handleClickOutside = this.handleClickOutside.bind(this);\n }\n\n componentDidMount() {\n document.addEventListener('mousedown', this.handleClickOutside);\n\n if (this.dropdownListRef.current) {\n this.getStyles();\n }\n }\n\n componentDidUpdate(prevProps) {\n const {\n open,\n } = this.props;\n const {\n opened,\n } = this.state;\n\n if (this.dropdownListRef.current) {\n this.getStyles();\n }\n\n if (\n !prevProps.open\n && open === true\n && !opened\n ) {\n this.toggleDropdown();\n }\n\n if (\n prevProps.open\n && open === false\n && opened\n ) {\n this.closeDropdown();\n }\n }\n\n componentWillUnmount() {\n document.removeEventListener('mousedown', this.handleClickOutside);\n }\n\n handleClickOutside(event) {\n if (\n this.dropdownListRef.current && !this.dropdownListRef.current.contains(event.target)\n && this.dropdownRef.current && !this.dropdownRef.current.contains(event.target)\n ) {\n this.closeDropdown();\n }\n }\n\n onSelectItem(itemId, itemProps) {\n const { closeOnSelect, onSelect } = this.props;\n const changes = {\n selectedItem: itemId,\n selectedItemProps: itemProps,\n };\n\n if (closeOnSelect) {\n changes.opened = false;\n }\n\n this.setState(changes);\n\n if (onSelect && typeof onSelect === 'function') {\n onSelect(itemId);\n }\n }\n\n getStyles() {\n const {\n display,\n position,\n offset,\n } = this.props;\n\n const dropdownEl = this.dropdownListRef.current;\n\n if (offset) {\n dropdownEl.style.top = `${offset.top}`;\n dropdownEl.style.left = `${offset.left}`;\n return;\n }\n\n const scrollTop = Math.max(\n document.documentElement.scrollTop,\n document.body.scrollTop,\n window.scrollY,\n );\n const el = this.dropdownRef.current;\n const elHeight = el.clientHeight;\n const dropdownHeight = dropdownEl ? dropdownEl.clientHeight : 0;\n const dropdownWidth = dropdownEl ? dropdownEl.clientWidth : 0;\n const offsetPosition = el.getBoundingClientRect();\n const { left, top } = offsetPosition;\n let customTop = 0;\n let customLeft = left;\n\n // calculate top position, depending on the element position on the page\n if (Dropdown.isElemInBottomView(el, dropdownHeight)) {\n customTop = top + scrollTop + elHeight;\n } else {\n customTop = top + scrollTop - dropdownHeight - 5;\n }\n\n if (Dropdown.isElemInRightView(el, dropdownWidth)) {\n customLeft = left;\n } else {\n customLeft = left + el.clientWidth - dropdownWidth;\n }\n\n if (position !== 'relative') {\n dropdownEl.style.top = `${customTop}px`;\n if (display !== 'block') {\n dropdownEl.style.left = `${customLeft}px`;\n }\n }\n if (display !== 'block') {\n dropdownEl.style.minWidth = `${this.dropdownButtonRef.current.clientWidth}px`;\n }\n }\n\n getWrapperCssClasses() {\n const {\n btnGroup,\n btnGroupSize,\n className,\n btnTheme,\n wrapperClassName = '',\n } = this.props;\n let cssClasses = [wrapperClassName, 'tyk-dropdown'];\n\n cssClasses.push(`theme-${btnTheme || 'default'}`);\n\n if (className) {\n cssClasses = cssClasses.concat(className.split(' '));\n }\n\n if (btnGroup) {\n cssClasses.push('tyk-button-group');\n cssClasses.push(btnGroupSize ? `tyk-button-group--${btnGroupSize}` : 'tyk-button-group--md');\n }\n\n return cssClasses.join(' ');\n }\n\n getCssClasses() {\n const {\n opened,\n } = this.state;\n const {\n hasCustomContent,\n display,\n listclassnames,\n position,\n maxHeight,\n } = this.props;\n let cssClasses = ['tyk-dropdown-menu', 'tyk-dropdown'];\n\n if (maxHeight) {\n cssClasses.push('tyk-dropdown--scrollable');\n }\n\n if (opened) {\n cssClasses.push('opened');\n }\n\n if (listclassnames) {\n cssClasses = cssClasses.concat(listclassnames.split(' '));\n }\n\n if (display) {\n cssClasses.push('tyk-dropdown--block');\n }\n\n if (hasCustomContent) {\n cssClasses.push('tyk-dropdown--custom');\n }\n\n if (position === 'relative') {\n cssClasses.push('tyk-dropdown--relative');\n }\n\n return cssClasses.join(' ');\n }\n\n getBtnTitle() {\n const { btnTitle, stopButtonTextChange } = this.props;\n const { selectedItemProps } = this.state;\n\n if (!stopButtonTextChange && selectedItemProps && selectedItemProps.title) {\n return selectedItemProps.title;\n }\n\n return btnTitle;\n }\n\n closeDropdown() {\n const { onClose } = this.props;\n\n this.setState({\n opened: false,\n }, () => {\n if (onClose) {\n onClose();\n }\n });\n }\n\n toggleDropdown() {\n const {\n opened,\n } = this.state;\n if (opened) {\n this.closeDropdown();\n\n return;\n }\n\n this.setState({\n opened: true,\n });\n }\n\n render() {\n const {\n appendTo,\n btnClassName,\n btnSize,\n customBtnTitle,\n hasCustomContent,\n btnTheme,\n children,\n label,\n showDropdownIcon,\n showTriggerButton,\n showCheckmark,\n disabled = false,\n maxHeight,\n } = this.props;\n const {\n selectedItem,\n opened,\n } = this.state;\n const DropdownWrapperTag = hasCustomContent ? 'div' : 'ul';\n return (\n \n {\n label\n ? (\n \n )\n : null\n }\n {\n showTriggerButton\n ? (\n \n { customBtnTitle || this.getBtnTitle() }\n \n )\n : null\n }\n {\n opened\n ? ReactDOM.createPortal(\n \n {\n opened\n ? (\n \n {\n (typeof children === 'function')\n ? children({\n closeDropdown: this.closeDropdown.bind(this),\n })\n : children\n }\n \n )\n : null\n }\n ,\n document.querySelector(appendTo || 'body'),\n )\n : null\n }\n \n );\n }\n}\n\nDropdown.propTypes = {\n appendTo: PropTypes.string,\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n PropTypes.func,\n ]),\n closeOnSelect: PropTypes.bool,\n btnClassName: PropTypes.string,\n btnSize: PropTypes.string,\n btnGroupSize: PropTypes.string,\n btnTheme: PropTypes.string,\n btnTitle: PropTypes.oneOfType([\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n customBtnTitle: PropTypes.oneOfType([\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n btnGroup: PropTypes.bool,\n className: PropTypes.string,\n display: PropTypes.string,\n disabled: PropTypes.bool,\n hasCustomContent: PropTypes.bool,\n label: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.func,\n PropTypes.string,\n ]),\n listclassnames: PropTypes.string,\n onClose: PropTypes.func,\n onSelect: PropTypes.func,\n open: PropTypes.bool,\n offset: PropTypes.instanceOf(Object),\n position: PropTypes.string,\n selectedItem: PropTypes.string,\n showDropdownIcon: PropTypes.bool,\n stopButtonTextChange: PropTypes.bool,\n showTriggerButton: PropTypes.bool,\n showCheckmark: PropTypes.bool,\n maxHeight: PropTypes.string,\n wrapperClassName: PropTypes.string,\n};\n\nDropdown.defaultProps = {\n closeOnSelect: false,\n showDropdownIcon: true,\n showTriggerButton: true,\n showCheckmark: true,\n open: false,\n};\n\nDropdown.Item = DropdownItem;\n\nexport default Dropdown;\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"react-ace\");","import React, { useCallback } from 'react';\nimport PropTypes from 'prop-types';\n\nimport ace from 'ace-builds/src-noconflict/ace';\nimport AceEditor from 'react-ace';\nimport 'ace-builds/src-noconflict/mode-javascript';\nimport 'ace-builds/src-noconflict/mode-golang';\nimport 'ace-builds/src-noconflict/mode-python';\nimport 'ace-builds/src-noconflict/mode-css';\nimport 'ace-builds/src-noconflict/mode-json';\nimport 'ace-builds/src-noconflict/mode-xml';\nimport 'ace-builds/src-noconflict/mode-jsx';\nimport 'ace-builds/src-noconflict/ext-searchbox';\nimport 'ace-builds/src-noconflict/ext-beautify';\nimport 'ace-builds/src-noconflict/theme-github';\nimport jsonWorker from 'ace-builds/src-noconflict/worker-json';\n\nace.config.setModuleUrl('ace/mode/json_worker', jsonWorker);\n\nfunction CodeEditor(props) {\n const {\n disabled,\n readOnly,\n disableValidation,\n id,\n error,\n label,\n labelwidth,\n note,\n onBlur,\n onChange,\n theme,\n value,\n setOptions,\n wrapperClassName,\n } = props;\n const classes = [\n 'tyk-form-group',\n wrapperClassName,\n ...(theme ? theme.split(' ').map((t) => `tyk-form-group--${t}`) : []),\n labelwidth && 'tyk-form-group--label-has-width',\n error && 'has-error',\n ].filter(Boolean).join(' ');\n\n const finalSetOptions = {\n ...setOptions,\n ...disableValidation && { useWorker: false },\n };\n\n const getCodeEditorError = useCallback(() => (\n error && error !== 'true' && error !== 'false'\n ? (\n

    \n {error}\n

    \n )\n : null\n ), [error]);\n\n const getLabelStyles = useCallback(() => {\n if (labelwidth) return { flexBasis: labelwidth };\n return {};\n }, [labelwidth]);\n\n const getNonLabelWidth = useCallback(() => {\n if (labelwidth) return { flexBasis: `calc(100% - ${labelwidth} - 20px)` };\n return {};\n }, [labelwidth]);\n\n const handleOnChange = useCallback((newValue) => {\n if (onChange) onChange(newValue);\n }, [onChange]);\n\n const handleOnBlur = useCallback(() => {\n if (onBlur) onBlur(value);\n }, [onBlur, value]);\n\n return (\n
    \n {\n label\n ? \n : null\n }\n
    \n {\n // eslint-disable-next-line\n editorInstance.container.style.resize = 'both';\n // mouseup = css resize end\n document.addEventListener('mouseup', () => (\n editorInstance.resize()\n ));\n }}\n setOptions={finalSetOptions}\n />\n {\n note\n ?

    { note }

    \n : null\n }\n { getCodeEditorError() }\n
    \n
    \n );\n}\n\nCodeEditor.propTypes = {\n disabled: PropTypes.bool,\n readOnly: PropTypes.bool,\n disableValidation: PropTypes.bool,\n id: PropTypes.string,\n error: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.bool,\n ]),\n label: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.func,\n PropTypes.string,\n ]),\n labelwidth: PropTypes.string,\n mode: PropTypes.string,\n name: PropTypes.string,\n note: PropTypes.string,\n onBlur: PropTypes.func,\n onChange: PropTypes.func,\n theme: PropTypes.string,\n value: PropTypes.string,\n setOptions: PropTypes.instanceOf(Object),\n wrapperClassName: PropTypes.string,\n};\n\nexport default CodeEditor;\n","import React, { Component, Fragment, createRef } from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\n\nimport Icon from '../../../components/Icon';\nimport Button from '../../../components/Button';\n\nconst getStateSelectedValues = (multiple, tags, value) => {\n if (!value) {\n return (multiple || tags) ? [] : null;\n }\n\n return value;\n};\n\nexport default class Combobox extends Component {\n static closeList() {\n return {\n cursor: -1,\n opened: false,\n };\n }\n\n static openList() {\n return {\n opened: true,\n };\n }\n\n static filterByName(itemValue, inputValue) {\n return itemValue.name.toLowerCase().indexOf(inputValue) > -1;\n }\n\n static propTypes = {\n allowCustomValues: PropTypes.bool,\n CustomListComponent: PropTypes.elementType,\n searchItem: PropTypes.func,\n disabled: PropTypes.bool,\n error: PropTypes.string,\n id: PropTypes.string,\n label: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.func,\n PropTypes.string,\n ]),\n labelwidth: PropTypes.string,\n multiple: PropTypes.bool,\n max: PropTypes.number,\n note: PropTypes.oneOfType([\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n onChange: PropTypes.func,\n placeholder: PropTypes.string,\n tags: PropTypes.bool,\n theme: PropTypes.string,\n value: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.instanceOf(Object),\n PropTypes.instanceOf(Array),\n ]),\n values: PropTypes.instanceOf(Array),\n };\n\n static defaultProps = {\n allowCustomValues: true,\n };\n\n constructor(props) {\n super(props);\n const {\n multiple,\n tags,\n value,\n } = props;\n\n this.state = {\n cursor: -1,\n opened: false,\n width: 50,\n initialValue: value,\n stateSelectedValues: getStateSelectedValues(multiple, tags, value),\n searchText: '',\n tags,\n };\n\n this.comboboxRef = createRef();\n this.valuesListRef = createRef();\n this.inputRef = createRef();\n this.textRef = createRef();\n\n this.focusInput = this.focusInput.bind(this);\n this.onKeyUp = this.onKeyUp.bind(this);\n Combobox.openList = Combobox.openList.bind(this);\n this.handleClickOutside = this.handleClickOutside.bind(this);\n this.handleItemsNavigation = this.handleItemsNavigation.bind(this);\n this.handleComboboxDropdownClick = this.handleComboboxDropdownClick.bind(this);\n this.handleListItemClick = this.handleListItemClick.bind(this);\n this.handlePillRemoveClick = this.handlePillRemoveClick.bind(this);\n this.manageSelectedTags = this.manageSelectedTags.bind(this);\n }\n\n componentDidMount() {\n const { tags } = this.props;\n\n if (tags) {\n this.setInputWidth();\n }\n\n this.bindEvents();\n }\n\n componentWillUnmount() {\n this.unBindEvents();\n }\n\n static getDerivedStateFromProps(nextProps, prevState) {\n if (\n JSON.stringify(nextProps.value) !== JSON.stringify(prevState.initialValue)\n || nextProps.tags !== prevState.tags\n ) {\n return {\n initialValue: nextProps.value,\n stateSelectedValues: getStateSelectedValues(\n nextProps.multiple,\n nextProps.tags,\n nextProps.value,\n ),\n tags: nextProps.tags,\n };\n }\n\n return null;\n }\n\n onKeyUp(e) {\n const { tags, allowCustomValues } = this.props;\n const { cursor, opened } = this.state;\n const filteredValues = this.filterValues();\n let tempState = Object.assign({}, this.getSearchText());\n\n if (tags && e.key !== 'Escape') {\n tempState = Object.assign({}, tempState, this.setInputWidth());\n }\n\n if (e.key === 'Enter') {\n const methodName = (tags) ? 'manageSelectedTags' : 'manageSelectedValues';\n tempState = Object.assign({}, tempState, this[methodName](cursor));\n }\n\n if (allowCustomValues && !e.key === ' ' && tags) {\n tempState = Object.assign({}, tempState, this.manageSelectedTags());\n }\n\n if (\n !opened\n && this.inputRef.current.value\n && filteredValues\n && filteredValues.length\n && e.key !== 'Escape'\n ) {\n tempState = Object.assign({}, tempState, Combobox.openList());\n }\n\n if (e.key === 'Escape' && opened) {\n tempState = Object.assign({}, tempState, Combobox.closeList());\n }\n\n if (opened && filteredValues && !filteredValues.length) {\n tempState = Object.assign({}, tempState, Combobox.closeList());\n }\n\n this.setState(previousState => Object.assign({}, previousState, tempState));\n }\n\n getLabelStyles() {\n const { labelwidth } = this.props;\n const styles = {};\n\n if (labelwidth) {\n styles.flexBasis = labelwidth;\n }\n\n return styles;\n }\n\n getNonLabelWidth() {\n const { labelwidth } = this.props;\n const styles = {};\n\n if (labelwidth) {\n styles.flexBasis = `calc(100% - ${labelwidth} - 20px)`;\n }\n\n return styles;\n }\n\n setInputWidth() {\n return {\n width: 50 + this.textRef.current.offsetWidth,\n };\n }\n\n getSelectedIndex(value) {\n const { stateSelectedValues } = this.state;\n let position = -1;\n\n if (Array.isArray(stateSelectedValues)) {\n stateSelectedValues.forEach((item, index) => {\n if (item.id === value.id) {\n position = index;\n }\n });\n } else if (stateSelectedValues) {\n if (stateSelectedValues.id === value.id) {\n position = 0;\n }\n }\n\n return position;\n }\n\n getSearchText() {\n return {\n searchText: this.inputRef.current.value,\n };\n }\n\n getListItemCssClasses(value, index) {\n const cssClasses = [];\n const {\n cursor,\n } = this.state;\n\n if (cursor === index) {\n cssClasses.push('active');\n }\n\n if (value.disabled) {\n cssClasses.push('disabled');\n }\n\n return cssClasses.join(' ');\n }\n\n getComboboxListCssClass() {\n const { opened } = this.state;\n const { tags, theme } = this.props;\n const themes = theme ? theme.split(' ') : [];\n\n const cssClasses = ['tyk-combobox__list'];\n\n if (opened) {\n cssClasses.push('tyk-combobox__list--opened');\n }\n\n if (tags) {\n cssClasses.push('tyk-combobox__list--has-tags');\n }\n\n if (themes.length) {\n themes.forEach((iTheme) => {\n cssClasses.push(`tyk-form-group--${iTheme}`);\n });\n }\n\n return cssClasses.join(' ');\n }\n\n getCssClasses() {\n const {\n error, disabled, theme, labelwidth,\n } = this.props;\n const cssClasses = ['tyk-form-group', 'tyk-combobox'];\n const themes = theme ? theme.split(' ') : [];\n\n if (error) {\n cssClasses.push('has-error');\n }\n\n if (labelwidth) {\n cssClasses.push('tyk-form-group--label-has-width');\n }\n\n if (themes.length) {\n themes.forEach((iTheme) => {\n cssClasses.push(`tyk-form-group--${iTheme}`);\n });\n }\n\n if (disabled) {\n cssClasses.push('disabled');\n }\n\n return cssClasses.join(' ');\n }\n\n getInputError() {\n const { error } = this.props;\n\n return (error && error !== 'true' && error !== 'false')\n ? (\n \n { error }\n

    \n )\n : null;\n }\n\n getStyles() {\n const { scrollTop } = document.documentElement;\n const el = this.comboboxRef.current;\n const elHeight = el.offsetHeight;\n const elWidth = el.offsetWidth;\n\n const offset = el.getBoundingClientRect();\n const { left } = offset;\n let top = 0;\n\n top = offset.top + scrollTop + elHeight;\n\n return {\n top: `${top - 1}px`,\n left: `${left}px`,\n width: `${elWidth}px`,\n };\n }\n\n getComboboxDisplayData() {\n const { stateSelectedValues } = this.state;\n const { multiple, placeholder, values } = this.props;\n\n if (!stateSelectedValues) {\n return placeholder;\n }\n\n if (stateSelectedValues && Array.isArray(stateSelectedValues) && !stateSelectedValues.length) {\n return placeholder;\n }\n\n if (stateSelectedValues && !Array.isArray(stateSelectedValues) && !stateSelectedValues.id) {\n return placeholder;\n }\n\n if (Array.isArray(stateSelectedValues) && multiple) {\n return stateSelectedValues.reduce((prevValue, value, index) => prevValue + value.name + ((index !== stateSelectedValues.length - 1) ? ', ' : ''), '');\n }\n\n if (\n values\n && values.length\n && !Array.isArray(stateSelectedValues) && !stateSelectedValues.name\n ) {\n return values.filter(value => value.id === stateSelectedValues.id)[0].name;\n }\n\n return stateSelectedValues.name;\n }\n\n manageSelectedTags(index) {\n const { max, allowCustomValues } = this.props;\n const { stateSelectedValues } = this.state;\n const filteredValues = this.filterValues();\n const value = { id: this.inputRef.current.value, name: this.inputRef.current.value };\n\n if (allowCustomValues === false && index === -1) {\n return null;\n }\n\n const tempValue = filteredValues[index] || value;\n const selectedIndex = this.getSelectedIndex(tempValue);\n let selectedValues = {};\n\n this.inputRef.current.value = '';\n\n if (selectedIndex > -1 && this.isInInitialValues(tempValue)) {\n selectedValues = this.removeSelectedValue(selectedIndex);\n } else if (selectedIndex === -1) {\n if (max && stateSelectedValues.length >= max) {\n return selectedValues;\n }\n selectedValues = this.addSelectedValue(tempValue);\n }\n\n return selectedValues;\n }\n\n manageSelectedValues(index) {\n const { stateSelectedValues } = this.state;\n const {\n multiple, onChange, max,\n } = this.props;\n const filteredValues = this.filterValues();\n const tempSelectedValues = filteredValues[index];\n let selectedValues;\n const selectedIndex = this.getSelectedIndex(tempSelectedValues);\n\n if (tempSelectedValues && multiple) {\n if (selectedIndex > -1) {\n selectedValues = this.removeSelectedValue(selectedIndex);\n } else {\n if (max && stateSelectedValues.length >= max) {\n return selectedValues;\n }\n selectedValues = this.addSelectedValue(filteredValues[index]);\n }\n\n // tempSelectedValues = stateSelectedValues;\n } else {\n selectedValues = {\n stateSelectedValues: (selectedIndex === -1) ? tempSelectedValues : { id: null },\n };\n\n if (onChange && typeof onChange === 'function') {\n onChange((selectedIndex === -1) ? tempSelectedValues : null);\n }\n }\n\n return selectedValues;\n }\n\n removeSelectedValue(index) {\n const { stateSelectedValues } = this.state;\n const { onChange } = this.props;\n const tempStateSelectedValues = JSON.parse(JSON.stringify(stateSelectedValues));\n\n tempStateSelectedValues.splice(index, 1);\n\n if (onChange && typeof onChange === 'function') {\n onChange(tempStateSelectedValues.length ? tempStateSelectedValues : null);\n }\n\n return {\n stateSelectedValues: tempStateSelectedValues,\n searchText: '',\n };\n }\n\n addSelectedValue(value) {\n const { stateSelectedValues } = this.state;\n const { onChange } = this.props;\n const tempStateSelectedValues = JSON.parse(JSON.stringify(stateSelectedValues));\n\n tempStateSelectedValues.push(value);\n\n if (onChange && typeof onChange === 'function') {\n onChange(tempStateSelectedValues.length ? tempStateSelectedValues : null);\n }\n\n return {\n stateSelectedValues: tempStateSelectedValues,\n searchText: '',\n };\n }\n\n isInInitialValues(value) {\n const { values } = this.props;\n let ok = false;\n\n values.forEach((item) => {\n if (value.id === item.id) {\n ok = true;\n }\n });\n\n return ok;\n }\n\n filterValues() {\n const { values, searchItem } = this.props;\n\n if (!this.inputRef.current) {\n return values;\n }\n\n const arr = values\n .filter(\n value => (searchItem\n ? searchItem(value, this.inputRef.current.value.toLowerCase())\n : Combobox.filterByName(value, this.inputRef.current.value.toLowerCase())),\n );\n\n return arr;\n }\n\n bindEvents() {\n document.addEventListener('mousedown', this.handleClickOutside);\n }\n\n unBindEvents() {\n document.removeEventListener('mousedown', this.handleClickOutside);\n }\n\n handleItemsNavigation(e) {\n const { tags } = this.props;\n if (['ArrowDown', 'ArrowUp'].indexOf(e.key) === -1) {\n return;\n }\n\n const { cursor } = this.state;\n const filteredValues = this.filterValues();\n let cursorNext;\n\n e.preventDefault();\n\n if (e.key === 'ArrowDown') {\n if (cursor === -1 || cursor === filteredValues.length - 1) {\n cursorNext = 0;\n } else if (cursor < filteredValues.length - 1) {\n cursorNext = cursor + 1;\n }\n }\n\n if (e.key === 'ArrowUp') {\n if (cursor > 0) {\n cursorNext = cursor - 1;\n } else {\n cursorNext = filteredValues.length - 1;\n }\n }\n\n if (this.valuesListRef.current && cursorNext > 4) {\n const scrollTop = (cursorNext - 4) * 38;\n\n this.valuesListRef.current.scrollTop = (!tags) ? 60 + scrollTop : scrollTop;\n } else if (this.valuesListRef.current) {\n this.valuesListRef.current.scrollTop = 0;\n }\n\n this.setState(previousState => ({\n ...previousState,\n opened: true,\n cursor: cursorNext,\n }));\n }\n\n handleListItemClick(index) {\n // eslint-disable-next-line react/destructuring-assignment\n const clickedValue = this.props.values[index];\n if (clickedValue.disabled) return;\n\n const { multiple, tags } = this.props;\n\n const methodName = (tags) ? 'manageSelectedTags' : 'manageSelectedValues';\n const tempState = Object.assign({}, this.state, this[methodName](index));\n\n this.setState((previousState) => {\n if (!multiple && !tags) {\n tempState.opened = false;\n }\n\n return Object.assign({}, previousState, tempState);\n });\n }\n\n handlePillRemoveClick(index) {\n const { disabled } = this.props;\n\n if (disabled) {\n return;\n }\n\n const tempState = this.removeSelectedValue(index);\n\n this.setState(previousState => Object.assign({}, previousState, tempState));\n }\n\n handleClickOutside(event) {\n if (\n this.valuesListRef.current && !this.valuesListRef.current.contains(event.target)\n && this.comboboxRef.current && !this.comboboxRef.current.contains(event.target)\n ) {\n this.setState(previousState => Object.assign({}, previousState, Combobox.closeList()));\n }\n }\n\n handleComboboxDropdownClick() {\n const { disabled } = this.props;\n\n if (disabled) {\n return;\n }\n\n this.setState(previousState => Object.assign({}, previousState, Combobox.openList()));\n }\n\n reset() {\n const { multiple, tags, value } = this.props;\n\n this.setState({\n stateSelectedValues: getStateSelectedValues(multiple, tags, value),\n });\n }\n\n focusInput() {\n if (this.inputRef.current) {\n this.inputRef.current.focus();\n }\n }\n\n render() {\n const {\n CustomListComponent,\n disabled,\n id,\n label,\n note,\n tags,\n max,\n placeholder,\n } = this.props;\n const {\n width, opened, searchText, stateSelectedValues,\n } = this.state;\n\n const filteredValues = this.filterValues();\n\n return (\n \n
    \n {\n label\n ? \n : null\n }\n \n {}}\n ref={this.comboboxRef}\n >\n {\n tags\n ? (\n \n {\n (stateSelectedValues || []).map((value, index) => (\n
  • \n \n { value.name }\n
  • \n ))\n }\n \n {(max === undefined || stateSelectedValues?.length < max) && (\n <>\n {\n if (e.key === 'Enter') {\n e.preventDefault();\n }\n }}\n onKeyUp={this.onKeyUp}\n onKeyDown={this.handleItemsNavigation}\n placeholder={(!stateSelectedValues || !stateSelectedValues.length) ? placeholder : ''}\n ref={this.inputRef}\n style={{\n width: (!stateSelectedValues || !stateSelectedValues.length) ? '100%' : `${width}px`,\n }}\n />\n \n { searchText }\n \n \n )}\n {\n filteredValues.length\n ? (\n \n )\n : null\n }\n \n
    \n )\n : (\n {}}\n >\n { this.getComboboxDisplayData() }\n \n \n )\n }\n \n {\n note\n ?

    { note }

    \n : null\n }\n { this.getInputError() }\n
    \n \n {\n // eslint-disable-next-line no-nested-ternary\n !CustomListComponent\n ? opened && filteredValues.length\n ? ReactDOM.createPortal(\n \n {\n !tags\n ? (\n
  • \n \n
  • \n )\n : null\n }\n {\n filteredValues\n .map((value, index) => (\n {}}\n key={value.id}\n >\n {\n (this.getSelectedIndex(value) > -1)\n ? \n : null\n }\n \n {' '}\n { value.name }\n \n \n ))\n }\n ,\n document.querySelector('body'),\n )\n : null\n : (\n \n )\n }\n
    \n );\n }\n}\n","import React, { useState, useRef, useEffect } from 'react';\nimport Icon from '../../../../components/Icon';\nimport Pill from '../../../../components/Pill';\n\nfunction Value(props) {\n const {\n value,\n max,\n tags,\n tagSeparators,\n addTagOnBlur,\n placeholder,\n disabled,\n renderValue,\n valueOverflow,\n focus,\n onMessage: sendMessage,\n readOnly,\n } = props;\n const INPUT_MIN_WIDTH = 60;\n const inputRef = useRef(null);\n const dummyElementRef = useRef(null);\n const [inputValue, setInputValue] = useState('');\n const [inputWidth, setInputWidth] = useState(`${INPUT_MIN_WIDTH + 10}px`);\n\n function entryFieldOnChange(val) {\n if (tagSeparators.some(ts => val.slice(-1) === ts)) return;\n const dummy = dummyElementRef.current;\n dummy.innerHTML = val;\n setInputWidth(`${Math.max(dummy.clientWidth, INPUT_MIN_WIDTH) + 10}px`);\n setInputValue(val);\n sendMessage('tag.input.change', val);\n }\n\n function entryFieldOnKeyDown(key, val) {\n if (!tags) return;\n if (val === '' && key === 'Backspace' && value.length) {\n sendMessage('tag.remove', value[value.length - 1].id);\n return;\n }\n if (key === 'Enter') {\n sendMessage('tag.input.enter', val);\n entryFieldOnChange('');\n return;\n }\n if (key === 'ArrowUp') {\n sendMessage('tag.input.arrowUp');\n return;\n }\n if (key === 'ArrowDown') {\n sendMessage('tag.input.arrowDown');\n return;\n }\n if (key === 'Escape') {\n sendMessage('tag.input.escape');\n return;\n }\n if (tagSeparators.includes(key)) {\n sendMessage('tag.add', val);\n entryFieldOnChange('');\n }\n }\n\n function triggerAction() {\n sendMessage('text-value.click');\n }\n\n function textValue(val, isPlaceholder = false) {\n if (readOnly) return val || '-';\n\n const classes = [\n 'tyk-combobox2__text-value',\n `overflow-${valueOverflow}`,\n isPlaceholder && 'is-placeholder',\n ].filter(Boolean).join(' ');\n return (\n \n {val}\n \n );\n }\n\n function renderCustomValue(v) {\n const config = {\n tags,\n tagSeparators,\n placeholder,\n disabled,\n renderValue,\n sendMessage,\n };\n return renderValue(v, config);\n }\n\n function renderTag(v) {\n if (renderValue) return renderCustomValue(v);\n\n return (\n \n {\n e.stopPropagation();\n sendMessage('tag.remove', v.id);\n }}\n >\n \n \n { v.name }\n \n );\n }\n\n function getTags() {\n return (\n <>\n {value.map(renderTag)}\n {value.length < max && (\n <>\n entryFieldOnChange(e.target.value)}\n onKeyDown={(e) => {\n if (e.key === 'Enter') e.preventDefault();\n entryFieldOnKeyDown(e.key, e.target.value);\n }}\n onFocus={() => sendMessage('tag.input.focus')}\n onBlur={(e) => {\n sendMessage('tag.input.blur', e.target.value);\n if (addTagOnBlur) entryFieldOnChange('');\n }}\n />\n \n \n )}\n \n );\n }\n\n useEffect(() => {\n if (focus && inputRef.current) inputRef.current.focus();\n }, [focus]);\n\n if (readOnly) {\n return
    {textValue(value.map(v => v.name).join(', '))}
    ;\n }\n\n if (tags) return getTags();\n if (renderValue) {\n return value.length === 0 ? textValue(placeholder, true) : value.map(renderCustomValue);\n }\n return value.length === 0\n ? textValue(placeholder, true)\n : textValue(value.map(v => v.name).join(', '));\n}\n\nexport default Value;\n","import React, { useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport Icon from '../../../../components/Icon';\n\nfunction List(props) {\n const {\n listRef,\n tags,\n values,\n searchValue,\n activeItem,\n onMessage: sendMessage,\n renderListItem,\n selectAll,\n showSearch,\n } = props;\n\n useEffect(() => {\n if (!listRef.current) return;\n const activeElement = listRef.current.querySelector('.active');\n if (activeElement) activeElement.scrollIntoView({ block: 'end' });\n }, [activeItem]);\n\n function renderItem(item) {\n if (renderListItem) {\n return renderListItem(item, {\n tags, searchValue, sendMessage, activeItem,\n });\n }\n\n return (\n !item.disabled && sendMessage('value.select', { item })}\n onKeyPress={() => {}}\n >\n {item.selected && }\n {item.name}\n \n );\n }\n\n function renderSelectAllOption() {\n const isAllSelected = values.every(v => v.selected);\n const isNoneSelected = values.every(v => !v.selected);\n const label = selectAll?.label ?? 'Select All';\n const mode = selectAll?.mode ?? 'select';\n const show = selectAll?.show ?? 'always';\n const render = selectAll?.render;\n\n const shouldRenderOption = show === 'always' || (mode === 'select' ? !isAllSelected : !isNoneSelected);\n if (!shouldRenderOption) return null;\n\n if (render) {\n return render({\n label,\n mode,\n show,\n isAllSelected,\n isNoneSelected,\n }, sendMessage);\n }\n return (\n sendMessage('value.select-all', mode === 'select' ? !isAllSelected : isNoneSelected)}\n onKeyDown={() => {}}\n >\n {(mode === 'select' ? isAllSelected : isNoneSelected) && }\n {label}\n \n );\n }\n\n return (\n <>\n {!tags && showSearch && (\n
    \n sendMessage('search.change', e.target.value)}\n onKeyDown={(e) => {\n if (e.key === 'Escape') sendMessage('search.escape');\n if (e.key === 'ArrowUp') sendMessage('search.arrowUp');\n if (e.key === 'ArrowDown') sendMessage('search.arrowDown');\n if (e.key === 'Enter') sendMessage('search.enter');\n }}\n />\n
    \n )}\n {values.length > 0 && (\n
      \n {Boolean(selectAll) && (\n renderSelectAllOption()\n )}\n {values.map(renderItem)}\n
    \n )}\n \n );\n}\n\nList.propTypes = {\n listRef: PropTypes.instanceOf(Object),\n tags: PropTypes.bool,\n values: PropTypes.instanceOf(Array),\n searchValue: PropTypes.string,\n activeItem: PropTypes.instanceOf(Object),\n onMessage: PropTypes.func,\n renderListItem: PropTypes.func,\n selectAll: PropTypes.oneOfType([\n PropTypes.bool,\n PropTypes.shape({\n label: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.func,\n PropTypes.string,\n ]),\n mode: PropTypes.oneOf(['select', 'unselect']),\n show: PropTypes.oneOf(['always', 'notSameState']),\n render: PropTypes.func,\n }),\n ]),\n showSearch: PropTypes.bool,\n};\n\nexport default List;\n","import React, { useState, useRef, useEffect } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Icon from '../../../components/Icon';\nimport FloatingContainer from '../../../components/FloatingContainer';\n\nimport Value from './js/Value';\nimport List from './js/List';\n\nfunction normalizeValue(value, values) {\n let v = value;\n if (typeof value === 'string') v = { id: value, name: value };\n else if (!value.hasOwnProperty('name')) v = { ...value, name: value.id }; // eslint-disable-line no-prototype-builtins\n if (!values) return v;\n const existingVal = values.find((ev) => ev.id === v.id);\n return existingVal ? { ...v, ...existingVal } : v;\n}\n\nfunction getValueFromProp(value, values) {\n if (!value) return [];\n if (Array.isArray(value)) return value.map((v) => normalizeValue(v, values));\n return [normalizeValue(value, values)];\n}\n\n/**\n * Dropdown-like component that can display selected values as regular text,\n * tags, or in a custom way.\n * You can select values from a list or type in new ones.\n */\nfunction Combobox2({\n value: propValue,\n values: propValues = [],\n valueOverflow = 'single',\n label = '',\n labelwidth,\n tags = false,\n tagSeparators = [' ', 'Enter'],\n addTagOnBlur = false,\n max: maxProp,\n multiple = false,\n placeholder = '',\n theme,\n note = '',\n error = '',\n disabled = false,\n readOnly = false,\n allowCustomValues = true,\n searchItem: matchItemFn,\n renderValue,\n renderListItem,\n renderList: renderListProp,\n CustomListComponent,\n onBeforeChange = () => true,\n onChange = () => {},\n floatingContainerConfig,\n expandMode,\n infiniteScrollerConfig,\n displayDropdownTrigger = true,\n selectAll,\n closeOnSelect,\n showSearch = false,\n required = false,\n validateOnChange = () => {},\n wrapperClassName = '',\n ...restProps\n}) {\n const max = multiple ? Infinity : maxProp || (tags ? Infinity : 1);\n const renderList = CustomListComponent\n ? (values, { sendMessage }) => (\n sendMessage('value.select', { item: values[index] })}\n getListItemCssClasses={() => {}}\n />\n )\n : renderListProp;\n\n const rootRef = useRef(null);\n const comboboxControlRef = useRef(null);\n const dropdownRef = useRef(null);\n const listRef = useRef(null);\n\n const [value, setValue] = useState(getValueFromProp(propValue, propValues));\n const [values, setValues] = useState(propValues.map((v) => normalizeValue(v)));\n const [searchValue, setSearchValue] = useState('');\n const [activeItem, setActiveItem] = useState(null);\n const [isOpened, setIsOpened] = useState(false);\n const [valuesExpanded, setValuesExpanded] = useState(false);\n const [localValidationError, setLocalValidationError] = useState('');\n\n function getThemeClasses() {\n const themes = theme ? theme.split(' ') : [];\n return themes.map((iTheme) => `tyk-form-group--${iTheme}`);\n }\n\n function getCssClasses() {\n return [\n wrapperClassName,\n 'tyk-form-group',\n 'tyk-combobox2',\n ...getThemeClasses(),\n (error || localValidationError) && 'has-error',\n labelwidth && 'tyk-form-group--label-has-width',\n disabled && 'disabled',\n expandMode && 'is-expand-mode',\n ].filter(Boolean).join(' ');\n }\n\n function getFilteredValues() {\n const defaultFn = (v, s) => v?.name?.toLowerCase()?.includes(s);\n const fn = matchItemFn || defaultFn;\n const filteredValues = values.filter((v) => fn(v, searchValue.toLowerCase()));\n return filteredValues;\n }\n\n function openDropdown() {\n setIsOpened(true);\n }\n\n function closeDropdown() {\n setIsOpened(false);\n if (!tags) updateSearchValue('');\n setActiveItem(null);\n }\n\n function updateSearchValue(newSearchValue) {\n setSearchValue(newSearchValue);\n if (activeItem && getFilteredValues().every((fv) => fv.id !== activeItem.id)) {\n setActiveItem(null);\n }\n if (newSearchValue && !isOpened) openDropdown();\n }\n\n function isValidValue(newValues, lastValue) {\n const localError = validateOnChange(newValues, lastValue);\n setLocalValidationError(localError);\n return localError === undefined;\n }\n\n function updateValue(newValues) {\n setValue(newValues);\n onChange(max === 1 && !tags ? (newValues[0] || null) : newValues);\n }\n\n function addTag(val) {\n if (!val) return;\n if (value.length >= max) return;\n if (value.some(({ name }) => name === val)) return;\n\n const listValueIndex = values.findIndex((lv) => lv.name === val);\n let newValue;\n let finalValue = [...value];\n let selectedValues;\n\n if (listValueIndex === -1) {\n if (allowCustomValues) {\n newValue = { id: val, name: val };\n finalValue = [...value, newValue];\n }\n } else {\n selectedValues = [\n ...values.slice(0, listValueIndex),\n { ...values[listValueIndex], selected: true },\n ...values.slice(listValueIndex + 1),\n ];\n newValue = values[listValueIndex];\n finalValue = [...value, values[listValueIndex]];\n }\n\n if (isValidValue(finalValue, newValue) && onBeforeChange(value, finalValue)) {\n if (selectedValues) {\n setValues(selectedValues);\n }\n updateValue(finalValue);\n }\n }\n\n function removeTag(id) {\n if (required && max === 1) return;\n\n const listValueIndex = values.findIndex((lv) => lv.id === id);\n const newValue = value.filter((v) => v.id !== id);\n\n if (!onBeforeChange(value, newValue)) return;\n\n if (listValueIndex !== -1) {\n setValues([\n ...values.slice(0, listValueIndex),\n { ...values[listValueIndex], selected: false },\n ...values.slice(listValueIndex + 1),\n ]);\n }\n updateValue(newValue);\n }\n\n function selectValue({ id }) {\n const val = values.find((v) => v.id === id);\n let finalValue = value;\n let selectedValues = values;\n\n if (val.selected) {\n if (!required || max !== 1) {\n finalValue = value.filter((v) => v.id !== val.id);\n selectedValues = values.map((v) => (v.id === val.id ? { ...v, selected: false } : v));\n }\n } else if (value.length < max) {\n finalValue = [...value, val];\n selectedValues = values.map((v) => (v.id === val.id ? { ...v, selected: true } : v));\n } else if (max === 1) {\n finalValue = [val];\n selectedValues = values.map((v) => ({ ...v, selected: v.id === val.id }));\n }\n\n if (isValidValue(finalValue, val) && onBeforeChange(value, finalValue)) {\n updateValue(finalValue);\n setValues(selectedValues);\n }\n\n if (max === 1 || closeOnSelect) {\n closeDropdown();\n }\n }\n\n function selectAllValues(selected) {\n if (values.length > max) return;\n const newValue = selected ? [...values] : [];\n\n if (!onBeforeChange(value, newValue)) return;\n\n updateValue(newValue);\n setValues(values.map((v) => ({ ...v, selected })));\n if (closeOnSelect) closeDropdown();\n }\n\n function moveUpActiveItem() {\n const visibleItems = getFilteredValues().filter((v) => !v.disabled);\n if (visibleItems.length === 0) return;\n if (activeItem === null || visibleItems.length === 1) {\n setActiveItem(visibleItems[visibleItems.length - 1]);\n return;\n }\n const activeIndex = visibleItems.findIndex((v) => v.id === activeItem.id);\n setActiveItem(visibleItems[activeIndex > 0 ? activeIndex - 1 : visibleItems.length - 1]);\n }\n\n function moveDownActiveItem() {\n const visibleItems = getFilteredValues().filter((v) => !v.disabled);\n if (visibleItems.length === 0) return;\n if (activeItem === null || visibleItems.length === 1) {\n setActiveItem(visibleItems[0]);\n return;\n }\n const activeIndex = visibleItems.findIndex((v) => v.id === activeItem.id);\n setActiveItem(visibleItems[activeIndex < visibleItems.length - 1 ? activeIndex + 1 : 0]);\n }\n\n function executeTriggerAction() {\n if (expandMode) {\n setValuesExpanded(!valuesExpanded);\n } else {\n openDropdown();\n }\n }\n\n function handleDocumentClick(e) {\n const isClickInside = (rootRef.current && rootRef.current.contains(e.target))\n || (dropdownRef.current && dropdownRef.current.contains(e.target));\n if (!isClickInside) {\n closeDropdown();\n }\n }\n\n function onClickCapture(e) {\n if (!disabled) return;\n if (!expandMode) {\n e.stopPropagation();\n return;\n }\n\n const triggerElement = rootRef.current.querySelector('.tyk-combobox2__values-container-trigger');\n if (!triggerElement) return;\n\n const isClickOnTrigger = triggerElement === e.target || triggerElement.contains(e.target);\n if (!isClickOnTrigger) e.stopPropagation();\n }\n\n function onTagMessage(message, data) {\n if (message === 'add') {\n addTag(data);\n updateSearchValue('');\n }\n\n if (message === 'remove') removeTag(data);\n\n if (message === 'input.change') updateSearchValue(data);\n\n if (message === 'input.enter') {\n if (activeItem) {\n selectValue(activeItem);\n } else if (tagSeparators.includes('Enter')) {\n addTag(data);\n updateSearchValue('');\n }\n }\n\n if (message === 'input.arrowUp') {\n openDropdown();\n moveUpActiveItem();\n }\n\n if (message === 'input.arrowDown') {\n openDropdown();\n moveDownActiveItem();\n }\n\n if (message === 'input.escape') closeDropdown();\n\n if (message === 'input.blur' && addTagOnBlur) {\n addTag(data);\n updateSearchValue('');\n }\n\n if (message === 'input.focus') {\n openDropdown();\n }\n }\n\n function onMessage(message, data) {\n if (message.startsWith('tag.')) onTagMessage(message.slice(4), data);\n\n if (message === 'value.select') selectValue(data.item);\n\n if (message === 'value.select-all') selectAllValues(data);\n\n if (message === 'text-value.click') openDropdown();\n\n if (message === 'search.change') updateSearchValue(data);\n\n if (message === 'search.escape') closeDropdown();\n\n if (message === 'search.arrowUp') moveUpActiveItem();\n\n if (message === 'search.arrowDown') moveDownActiveItem();\n\n if (message === 'search.enter') {\n if (activeItem) selectValue(activeItem);\n }\n }\n\n useEffect(() => {\n window.addEventListener('click', handleDocumentClick, true);\n return () => window.removeEventListener('click', handleDocumentClick, true);\n }, []);\n\n useEffect(() => {\n if (propValues.length) {\n const newValues = propValues.map((v) => ({\n ...normalizeValue(v),\n selected: value.some((sv) => sv.id === v.id),\n }));\n setValues(newValues);\n setValue((val) => val.map((v) => newValues.find((nv) => nv.id === v.id) || v));\n } else if (values.length) {\n setValues([]);\n }\n }, [propValues]);\n\n useEffect(() => {\n const newValue = getValueFromProp(propValue, values);\n setValue(newValue);\n setValues((vals) => vals.map((v) => ({\n ...normalizeValue(v),\n selected: newValue.some((nv) => nv.id === v.id),\n })));\n }, [propValue]);\n\n useEffect(() => {\n if (!expandMode) return () => {};\n\n const valuesElement = comboboxControlRef.current.querySelector('.tyk-combobox2__current-values');\n const updateScroll = () => {\n valuesElement.scrollTop = valuesElement.scrollHeight;\n };\n /* eslint-disable-next-line no-undef */\n const mobserver = new MutationObserver(updateScroll);\n const robserver = new ResizeObserver(updateScroll);\n\n mobserver.observe(valuesElement, { attributes: true, childList: true, subtree: true });\n robserver.observe(valuesElement);\n\n return () => {\n mobserver.disconnect();\n robserver.disconnect();\n };\n });\n\n const filteredValues = getFilteredValues();\n const currentValuesClasses = [\n 'tyk-combobox2__current-values',\n expandMode && 'expand-mode',\n `tyk-combobox2__current-values--${valuesExpanded ? 'expanded' : 'collapsed'}`,\n ].join(' ');\n return (\n \n {label && (\n \n )}\n {!readOnly && (\n \n
    \n \n \n
    \n {displayDropdownTrigger && (\n \n {expandMode\n ? (\n \n )\n : (\n \n )}\n \n )}\n \n {isOpened && (!tags || filteredValues.length > 0) && (\n \n {renderList ? (\n renderList(filteredValues, {\n tags,\n searchValue,\n activeItem,\n listRef,\n sendMessage: onMessage,\n })\n ) : (\n \n )}\n \n )}\n {note && (\n

    {note}

    \n )}\n {((error && error !== 'true' && error !== 'false') || Boolean(localValidationError)) && (\n

    {error || localValidationError}

    \n )}\n \n )}\n {readOnly && (\n
    \n \n
    \n )}\n \n );\n}\n\nCombobox2.propTypes = {\n /** If `true` it allows entering values that are not in the list. */\n allowCustomValues: PropTypes.bool,\n /** Alias for `renderList`\n * used for backwards compatibility with the old Combobox component. */\n CustomListComponent: PropTypes.elementType,\n /** A function used for filtering elements displayed in the list when typing in. */\n searchItem: PropTypes.func,\n /** A custom component that will be used to display a value. */\n renderValue: PropTypes.func,\n /** A custom component that will be used to display an item in the dropdown list. */\n renderListItem: PropTypes.func,\n /** A custom component that will be used to display the entire content of the dropdown. */\n renderList: PropTypes.func,\n disabled: PropTypes.bool,\n /** hides the UI form element and displayes just the value as text */\n readOnly: PropTypes.bool,\n error: PropTypes.string,\n label: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.func,\n PropTypes.string,\n ]),\n labelwidth: PropTypes.string,\n /** The maximum number of values that can be selected/added. */\n max: PropTypes.number,\n /** Shorthand for max=Infinity */\n multiple: PropTypes.bool,\n note: PropTypes.oneOfType([\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n /**\n * Callback called before changing the value of the component.\n * The value change will succeed only if the callback's return value is truthy.\n * The callback is called with two arguments: 1) the previous value, 2) the next value */\n onBeforeChange: PropTypes.func,\n onChange: PropTypes.func,\n placeholder: PropTypes.string,\n /** Enables the display of values as `Pill` components that can be\n * removed without opening the dropdown. */\n tags: PropTypes.bool,\n /** A list of characters that will trigger the creation of a tag when typed. */\n tagSeparators: PropTypes.arrayOf(PropTypes.string),\n /** If set to true a tag will be created whenever the component loses focus\n * and there is something typed in. */\n addTagOnBlur: PropTypes.bool,\n theme: PropTypes.string,\n /** The value of the component. It can be a string, an array,\n * or an object with an `id` property. */\n value: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.instanceOf(Array),\n PropTypes.instanceOf(Object),\n ]),\n /** An array of selectable values. */\n values: PropTypes.instanceOf(Array),\n /** Config object passed to the internal floating container component. */\n floatingContainerConfig: PropTypes.instanceOf(Object),\n /** If set to `single` it will display the values on a single line\n * with an ellipsis at the end. */\n valueOverflow: PropTypes.oneOf(['single', 'multiple']),\n /**\n * If set to `true` whenever the user clicks on the dropdown trigger\n * the selected values container\n * will expand to show all selected values instead of opening the dropdown.\n */\n expandMode: PropTypes.bool,\n /** Config object passed to the internal infinite scroller component. */\n infiniteScrollerConfig: PropTypes.instanceOf(Object),\n /** Toggles the display of the dropdown trigger. */\n displayDropdownTrigger: PropTypes.bool,\n /**\n * If a boolean it will toggle the select all functionality from the dropdown.\n * It can also be an object with the shape `{ label, show, mode, render }`.\n * label - A string displayed as the select all option\n * show - It can be one of `['always', 'notSameState']`.\n * `always` means the option will always be displayed.\n * `notSameState` means it will be displayed only if the list items are\n * not all with the same state (depending on the `mode` value)\n * mode - It can be one of `['select', 'unselect']` and makes sense only\n * when the `show` property is `notSameState`\n * `select` means the select all option will only be displayed if not all\n * items are selected\n * `unselect` means the option will be displayed if no items are selected\n */\n selectAll: PropTypes.oneOfType([\n PropTypes.bool,\n PropTypes.shape({\n label: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.func,\n PropTypes.string,\n ]),\n mode: PropTypes.oneOf(['select', 'unselect']),\n show: PropTypes.oneOf(['always', 'notSameState']),\n render: PropTypes.func,\n }),\n ]),\n /** It `true` the dropdown will close after selecting a value. */\n closeOnSelect: PropTypes.bool,\n /** Toggles the display of the search input from the dropdown. */\n showSearch: PropTypes.bool,\n /** If it is required and can only select one value once you have something\n * selected you will not be able to deselect */\n required: PropTypes.bool,\n /** Validates newly added value before adding it to the selected values.\n * Returns an error string in case of error otherwise it returns undefined\n */\n validateOnChange: PropTypes.func,\n wrapperClassName: PropTypes.string,\n};\n\nexport default Combobox2;\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"flatpickr\");","\n import API from \"!../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../css-loader/dist/cjs.js!./flatpickr.min.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../css-loader/dist/cjs.js!./flatpickr.min.css\";\n export default content && content.locals ? content.locals : undefined;\n","import React, {\n useEffect, useState, useRef, useCallback,\n} from 'react';\nimport PropTypes from 'prop-types';\nimport flatpickr from 'flatpickr';\nimport 'flatpickr/dist/flatpickr.min.css';\n\nimport Icon from '../../../components/Icon';\nimport { usePrevious } from '../../../hooks';\n\nfunction DatePicker({\n children,\n disabled,\n readOnly = false,\n error,\n id,\n label,\n labelwidth,\n note,\n onClose,\n onChange,\n onOpen,\n theme,\n config = {},\n value,\n wrapperClassName = '',\n}) {\n const [pickerInstance, setPickerInstance] = useState(null);\n const dateRef = useRef(null);\n\n const prevValue = usePrevious(value);\n\n const hasValueChanged = useCallback((prevDate, currentDate) => {\n if (!prevDate) return true;\n if (!Array.isArray(currentDate)) return prevDate.getTime() !== currentDate.getTime();\n\n let diffDates = currentDate;\n\n if (prevDate && currentDate.length && prevDate.length) {\n diffDates = currentDate.filter((date, index) => date.getTime() !== prevDate[index].getTime());\n\n return diffDates.length > 0;\n }\n\n return currentDate.length > 0;\n }, []);\n\n const onDateChange = useCallback((dateValue) => {\n const finalValue = config.mode === 'range' ? dateValue : dateValue[0] || null;\n\n if (!onChange) return;\n\n if (config.mode === 'range') {\n if (finalValue.length === 2 && hasValueChanged(prevValue, finalValue)) {\n onChange(finalValue);\n }\n } else {\n onChange(finalValue);\n }\n }, [prevValue, onChange, hasValueChanged]);\n\n useEffect(() => {\n if (dateRef && dateRef.current && !pickerInstance) {\n const instance = flatpickr(dateRef.current, {\n ...config, defaultDate: value, onChange: onDateChange, onClose, onOpen,\n });\n setPickerInstance(instance);\n }\n\n return () => {\n if (pickerInstance) {\n pickerInstance.destroy();\n }\n };\n }, [dateRef.current, pickerInstance]);\n\n useEffect(() => {\n if (pickerInstance) {\n let tempValue = value;\n\n if (typeof value === 'string') {\n tempValue = new Date(value);\n } else if (Array.isArray(value)) {\n tempValue = value.map((date) => (typeof date === 'string' ? new Date(date) : date));\n }\n\n if (hasValueChanged(prevValue, tempValue)) {\n pickerInstance.set('onChange', onDateChange);\n if (config.mode === 'range') {\n if (tempValue && tempValue.length === 2) {\n pickerInstance.setDate(tempValue, true);\n }\n } else {\n pickerInstance.setDate(tempValue, true);\n }\n }\n }\n }, [prevValue, value, pickerInstance]);\n\n const classes = [\n 'tyk-form-group',\n 'tyk-form-group--addon-right',\n wrapperClassName,\n ...(theme ? theme.split(' ').map((t) => `tyk-form-group--${t}`) : []),\n labelwidth && 'tyk-form-group--label-has-width',\n error && 'has-error',\n ].filter(Boolean).join(' ');\n\n const getLabelStyles = () => {\n if (labelwidth) return { flexBasis: labelwidth };\n return {};\n };\n\n const getNonLabelWidth = () => {\n if (labelwidth) return { flexBasis: `calc(100% - ${labelwidth} - 20px)` };\n return {};\n };\n\n const openCalendar = useCallback(() => {\n if (!pickerInstance) return;\n\n pickerInstance.open();\n }, [pickerInstance]);\n\n const getInputError = () => (\n (error && error !== 'true' && error !== 'false')\n ? (\n

    \n { error }\n

    \n )\n : null\n );\n\n const getInputField = () => {\n let inputStyle = {};\n let addonStyle = {};\n\n if (config && config.inline) {\n inputStyle = {\n height: 0,\n padding: 0,\n width: 0,\n visibility: 'hidden',\n };\n\n addonStyle = {\n display: 'none',\n };\n }\n return (\n <>\n \n {}}\n tabIndex={0}\n style={addonStyle}\n >\n \n \n \n );\n };\n\n return (\n <>\n {\n children && children.length\n ? children({ openCalendar, ref: dateRef })\n : (\n
    \n {\n label\n ? \n : null\n }\n {!readOnly && (\n \n
    \n {getInputField()}\n
    \n {\n note\n ?

    { note }

    \n : null\n }\n { getInputError() }\n
    \n )}\n \n )\n }\n
    \n {readOnly && !value && '-'}\n {readOnly && value && flatpickr.formatDate(value, config.dateFormat || 'd/m/Y')}\n
    \n \n );\n}\n\nDatePicker.propTypes = {\n config: PropTypes.instanceOf(Object),\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n PropTypes.func,\n ]),\n disabled: PropTypes.bool,\n readOnly: PropTypes.bool,\n id: PropTypes.string,\n label: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.func,\n PropTypes.string,\n ]),\n labelwidth: PropTypes.string,\n note: PropTypes.string,\n onChange: PropTypes.oneOfType([\n PropTypes.func,\n PropTypes.instanceOf(Array),\n ]),\n onClose: PropTypes.oneOfType([\n PropTypes.func,\n PropTypes.instanceOf(Array),\n ]),\n onOpen: PropTypes.oneOfType([\n PropTypes.func,\n PropTypes.instanceOf(Array),\n ]),\n theme: PropTypes.string,\n error: PropTypes.string,\n value: PropTypes.oneOfType([\n PropTypes.instanceOf(Array),\n PropTypes.instanceOf(Object),\n PropTypes.string,\n ]),\n wrapperClassName: PropTypes.string,\n};\n\nexport default DatePicker;\n","export default function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}","export default function requiredArgs(required, args) {\n if (args.length < required) {\n throw new TypeError(required + ' argument' + (required > 1 ? 's' : '') + ' required, but only ' + args.length + ' present');\n }\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isDate\n * @category Common Helpers\n * @summary Is the given value a date?\n *\n * @description\n * Returns true if the given value is an instance of Date. The function works for dates transferred across iframes.\n *\n * @param {*} value - the value to check\n * @returns {boolean} true if the given value is a date\n * @throws {TypeError} 1 arguments required\n *\n * @example\n * // For a valid date:\n * const result = isDate(new Date())\n * //=> true\n *\n * @example\n * // For an invalid date:\n * const result = isDate(new Date(NaN))\n * //=> true\n *\n * @example\n * // For some value:\n * const result = isDate('2014-02-31')\n * //=> false\n *\n * @example\n * // For an object:\n * const result = isDate({})\n * //=> false\n */\nexport default function isDate(value) {\n requiredArgs(1, arguments);\n return value instanceof Date || _typeof(value) === 'object' && Object.prototype.toString.call(value) === '[object Date]';\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n *\n * @param {Date|Number} argument - the value to convert\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Clone the date:\n * const result = toDate(new Date(2014, 1, 11, 11, 30, 30))\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert the timestamp to date:\n * const result = toDate(1392098430000)\n * //=> Tue Feb 11 2014 11:30:30\n */\nexport default function toDate(argument) {\n requiredArgs(1, arguments);\n var argStr = Object.prototype.toString.call(argument);\n\n // Clone the date\n if (argument instanceof Date || _typeof(argument) === 'object' && argStr === '[object Date]') {\n // Prevent the date to lose the milliseconds when passed to new Date() in IE10\n return new Date(argument.getTime());\n } else if (typeof argument === 'number' || argStr === '[object Number]') {\n return new Date(argument);\n } else {\n if ((typeof argument === 'string' || argStr === '[object String]') && typeof console !== 'undefined') {\n // eslint-disable-next-line no-console\n console.warn(\"Starting with v2.0.0-beta.1 date-fns doesn't accept strings as date arguments. Please use `parseISO` to parse strings. See: https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#string-arguments\");\n // eslint-disable-next-line no-console\n console.warn(new Error().stack);\n }\n return new Date(NaN);\n }\n}","import isDate from \"../isDate/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isValid\n * @category Common Helpers\n * @summary Is the given date valid?\n *\n * @description\n * Returns false if argument is Invalid Date and true otherwise.\n * Argument is converted to Date using `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * Invalid Date is a Date, whose time value is NaN.\n *\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @param {*} date - the date to check\n * @returns {Boolean} the date is valid\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // For the valid date:\n * const result = isValid(new Date(2014, 1, 31))\n * //=> true\n *\n * @example\n * // For the value, convertable into a date:\n * const result = isValid(1393804800000)\n * //=> true\n *\n * @example\n * // For the invalid date:\n * const result = isValid(new Date(''))\n * //=> false\n */\nexport default function isValid(dirtyDate) {\n requiredArgs(1, arguments);\n if (!isDate(dirtyDate) && typeof dirtyDate !== 'number') {\n return false;\n }\n var date = toDate(dirtyDate);\n return !isNaN(Number(date));\n}","export default function toInteger(dirtyNumber) {\n if (dirtyNumber === null || dirtyNumber === true || dirtyNumber === false) {\n return NaN;\n }\n var number = Number(dirtyNumber);\n if (isNaN(number)) {\n return number;\n }\n return number < 0 ? Math.ceil(number) : Math.floor(number);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addMilliseconds\n * @category Millisecond Helpers\n * @summary Add the specified number of milliseconds to the given date.\n *\n * @description\n * Add the specified number of milliseconds to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the milliseconds added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 750 milliseconds to 10 July 2014 12:45:30.000:\n * const result = addMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:30.750\n */\nexport default function addMilliseconds(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var timestamp = toDate(dirtyDate).getTime();\n var amount = toInteger(dirtyAmount);\n return new Date(timestamp + amount);\n}","import addMilliseconds from \"../addMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\n/**\n * @name subMilliseconds\n * @category Millisecond Helpers\n * @summary Subtract the specified number of milliseconds from the given date.\n *\n * @description\n * Subtract the specified number of milliseconds from the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the milliseconds subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 750 milliseconds from 10 July 2014 12:45:30.000:\n * const result = subMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:29.250\n */\nexport default function subMilliseconds(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMilliseconds(dirtyDate, -amount);\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_DAY = 86400000;\nexport default function getUTCDayOfYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var timestamp = date.getTime();\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n var startOfYearTimestamp = date.getTime();\n var difference = timestamp - startOfYearTimestamp;\n return Math.floor(difference / MILLISECONDS_IN_DAY) + 1;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nexport default function startOfUTCISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n var weekStartsOn = 1;\n var date = toDate(dirtyDate);\n var day = date.getUTCDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setUTCDate(date.getUTCDate() - diff);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nexport default function getUTCISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getUTCFullYear();\n var fourthOfJanuaryOfNextYear = new Date(0);\n fourthOfJanuaryOfNextYear.setUTCFullYear(year + 1, 0, 4);\n fourthOfJanuaryOfNextYear.setUTCHours(0, 0, 0, 0);\n var startOfNextYear = startOfUTCISOWeek(fourthOfJanuaryOfNextYear);\n var fourthOfJanuaryOfThisYear = new Date(0);\n fourthOfJanuaryOfThisYear.setUTCFullYear(year, 0, 4);\n fourthOfJanuaryOfThisYear.setUTCHours(0, 0, 0, 0);\n var startOfThisYear = startOfUTCISOWeek(fourthOfJanuaryOfThisYear);\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}","import getUTCISOWeekYear from \"../getUTCISOWeekYear/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nexport default function startOfUTCISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var year = getUTCISOWeekYear(dirtyDate);\n var fourthOfJanuary = new Date(0);\n fourthOfJanuary.setUTCFullYear(year, 0, 4);\n fourthOfJanuary.setUTCHours(0, 0, 0, 0);\n var date = startOfUTCISOWeek(fourthOfJanuary);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nimport startOfUTCISOWeekYear from \"../startOfUTCISOWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000;\nexport default function getUTCISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var diff = startOfUTCISOWeek(date).getTime() - startOfUTCISOWeekYear(date).getTime();\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","var defaultOptions = {};\nexport function getDefaultOptions() {\n return defaultOptions;\n}\nexport function setDefaultOptions(newOptions) {\n defaultOptions = newOptions;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nimport { getDefaultOptions } from \"../defaultOptions/index.js\";\nexport default function startOfUTCWeek(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$weekStartsOn, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(1, arguments);\n var defaultOptions = getDefaultOptions();\n var weekStartsOn = toInteger((_ref = (_ref2 = (_ref3 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.weekStartsOn) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.weekStartsOn) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.weekStartsOn) !== null && _ref !== void 0 ? _ref : 0);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n var date = toDate(dirtyDate);\n var day = date.getUTCDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setUTCDate(date.getUTCDate() - diff);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nimport { getDefaultOptions } from \"../defaultOptions/index.js\";\nexport default function getUTCWeekYear(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$firstWeekCon, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getUTCFullYear();\n var defaultOptions = getDefaultOptions();\n var firstWeekContainsDate = toInteger((_ref = (_ref2 = (_ref3 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref !== void 0 ? _ref : 1);\n\n // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n var firstWeekOfNextYear = new Date(0);\n firstWeekOfNextYear.setUTCFullYear(year + 1, 0, firstWeekContainsDate);\n firstWeekOfNextYear.setUTCHours(0, 0, 0, 0);\n var startOfNextYear = startOfUTCWeek(firstWeekOfNextYear, options);\n var firstWeekOfThisYear = new Date(0);\n firstWeekOfThisYear.setUTCFullYear(year, 0, firstWeekContainsDate);\n firstWeekOfThisYear.setUTCHours(0, 0, 0, 0);\n var startOfThisYear = startOfUTCWeek(firstWeekOfThisYear, options);\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}","import getUTCWeekYear from \"../getUTCWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nimport { getDefaultOptions } from \"../defaultOptions/index.js\";\nexport default function startOfUTCWeekYear(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$firstWeekCon, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(1, arguments);\n var defaultOptions = getDefaultOptions();\n var firstWeekContainsDate = toInteger((_ref = (_ref2 = (_ref3 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref !== void 0 ? _ref : 1);\n var year = getUTCWeekYear(dirtyDate, options);\n var firstWeek = new Date(0);\n firstWeek.setUTCFullYear(year, 0, firstWeekContainsDate);\n firstWeek.setUTCHours(0, 0, 0, 0);\n var date = startOfUTCWeek(firstWeek, options);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport startOfUTCWeekYear from \"../startOfUTCWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000;\nexport default function getUTCWeek(dirtyDate, options) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var diff = startOfUTCWeek(date, options).getTime() - startOfUTCWeekYear(date, options).getTime();\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","export default function addLeadingZeros(number, targetLength) {\n var sign = number < 0 ? '-' : '';\n var output = Math.abs(number).toString();\n while (output.length < targetLength) {\n output = '0' + output;\n }\n return sign + output;\n}","import addLeadingZeros from \"../../addLeadingZeros/index.js\";\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | |\n * | d | Day of month | D | |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | m | Minute | M | Month |\n * | s | Second | S | Fraction of second |\n * | y | Year (abs) | Y | |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n */\nvar formatters = {\n // Year\n y: function y(date, token) {\n // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_tokens\n // | Year | y | yy | yyy | yyyy | yyyyy |\n // |----------|-------|----|-------|-------|-------|\n // | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n // | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n // | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n // | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n\n var signedYear = date.getUTCFullYear();\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n var year = signedYear > 0 ? signedYear : 1 - signedYear;\n return addLeadingZeros(token === 'yy' ? year % 100 : year, token.length);\n },\n // Month\n M: function M(date, token) {\n var month = date.getUTCMonth();\n return token === 'M' ? String(month + 1) : addLeadingZeros(month + 1, 2);\n },\n // Day of the month\n d: function d(date, token) {\n return addLeadingZeros(date.getUTCDate(), token.length);\n },\n // AM or PM\n a: function a(date, token) {\n var dayPeriodEnumValue = date.getUTCHours() / 12 >= 1 ? 'pm' : 'am';\n switch (token) {\n case 'a':\n case 'aa':\n return dayPeriodEnumValue.toUpperCase();\n case 'aaa':\n return dayPeriodEnumValue;\n case 'aaaaa':\n return dayPeriodEnumValue[0];\n case 'aaaa':\n default:\n return dayPeriodEnumValue === 'am' ? 'a.m.' : 'p.m.';\n }\n },\n // Hour [1-12]\n h: function h(date, token) {\n return addLeadingZeros(date.getUTCHours() % 12 || 12, token.length);\n },\n // Hour [0-23]\n H: function H(date, token) {\n return addLeadingZeros(date.getUTCHours(), token.length);\n },\n // Minute\n m: function m(date, token) {\n return addLeadingZeros(date.getUTCMinutes(), token.length);\n },\n // Second\n s: function s(date, token) {\n return addLeadingZeros(date.getUTCSeconds(), token.length);\n },\n // Fraction of second\n S: function S(date, token) {\n var numberOfDigits = token.length;\n var milliseconds = date.getUTCMilliseconds();\n var fractionalSeconds = Math.floor(milliseconds * Math.pow(10, numberOfDigits - 3));\n return addLeadingZeros(fractionalSeconds, token.length);\n }\n};\nexport default formatters;","import getUTCDayOfYear from \"../../../_lib/getUTCDayOfYear/index.js\";\nimport getUTCISOWeek from \"../../../_lib/getUTCISOWeek/index.js\";\nimport getUTCISOWeekYear from \"../../../_lib/getUTCISOWeekYear/index.js\";\nimport getUTCWeek from \"../../../_lib/getUTCWeek/index.js\";\nimport getUTCWeekYear from \"../../../_lib/getUTCWeekYear/index.js\";\nimport addLeadingZeros from \"../../addLeadingZeros/index.js\";\nimport lightFormatters from \"../lightFormatters/index.js\";\nvar dayPeriodEnum = {\n am: 'am',\n pm: 'pm',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n};\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O | Timezone (GMT) |\n * | p! | Long localized time | P! | Long localized date |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `format` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n * - `P` is long localized date format\n * - `p` is long localized time format\n */\n\nvar formatters = {\n // Era\n G: function G(date, token, localize) {\n var era = date.getUTCFullYear() > 0 ? 1 : 0;\n switch (token) {\n // AD, BC\n case 'G':\n case 'GG':\n case 'GGG':\n return localize.era(era, {\n width: 'abbreviated'\n });\n // A, B\n case 'GGGGG':\n return localize.era(era, {\n width: 'narrow'\n });\n // Anno Domini, Before Christ\n case 'GGGG':\n default:\n return localize.era(era, {\n width: 'wide'\n });\n }\n },\n // Year\n y: function y(date, token, localize) {\n // Ordinal number\n if (token === 'yo') {\n var signedYear = date.getUTCFullYear();\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n var year = signedYear > 0 ? signedYear : 1 - signedYear;\n return localize.ordinalNumber(year, {\n unit: 'year'\n });\n }\n return lightFormatters.y(date, token);\n },\n // Local week-numbering year\n Y: function Y(date, token, localize, options) {\n var signedWeekYear = getUTCWeekYear(date, options);\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n var weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear;\n\n // Two digit year\n if (token === 'YY') {\n var twoDigitYear = weekYear % 100;\n return addLeadingZeros(twoDigitYear, 2);\n }\n\n // Ordinal number\n if (token === 'Yo') {\n return localize.ordinalNumber(weekYear, {\n unit: 'year'\n });\n }\n\n // Padding\n return addLeadingZeros(weekYear, token.length);\n },\n // ISO week-numbering year\n R: function R(date, token) {\n var isoWeekYear = getUTCISOWeekYear(date);\n\n // Padding\n return addLeadingZeros(isoWeekYear, token.length);\n },\n // Extended year. This is a single number designating the year of this calendar system.\n // The main difference between `y` and `u` localizers are B.C. years:\n // | Year | `y` | `u` |\n // |------|-----|-----|\n // | AC 1 | 1 | 1 |\n // | BC 1 | 1 | 0 |\n // | BC 2 | 2 | -1 |\n // Also `yy` always returns the last two digits of a year,\n // while `uu` pads single digit years to 2 characters and returns other years unchanged.\n u: function u(date, token) {\n var year = date.getUTCFullYear();\n return addLeadingZeros(year, token.length);\n },\n // Quarter\n Q: function Q(date, token, localize) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case 'Q':\n return String(quarter);\n // 01, 02, 03, 04\n case 'QQ':\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n case 'Qo':\n return localize.ordinalNumber(quarter, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n case 'QQQ':\n return localize.quarter(quarter, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case 'QQQQQ':\n return localize.quarter(quarter, {\n width: 'narrow',\n context: 'formatting'\n });\n // 1st quarter, 2nd quarter, ...\n case 'QQQQ':\n default:\n return localize.quarter(quarter, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone quarter\n q: function q(date, token, localize) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case 'q':\n return String(quarter);\n // 01, 02, 03, 04\n case 'qq':\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n case 'qo':\n return localize.ordinalNumber(quarter, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n case 'qqq':\n return localize.quarter(quarter, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case 'qqqqq':\n return localize.quarter(quarter, {\n width: 'narrow',\n context: 'standalone'\n });\n // 1st quarter, 2nd quarter, ...\n case 'qqqq':\n default:\n return localize.quarter(quarter, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // Month\n M: function M(date, token, localize) {\n var month = date.getUTCMonth();\n switch (token) {\n case 'M':\n case 'MM':\n return lightFormatters.M(date, token);\n // 1st, 2nd, ..., 12th\n case 'Mo':\n return localize.ordinalNumber(month + 1, {\n unit: 'month'\n });\n // Jan, Feb, ..., Dec\n case 'MMM':\n return localize.month(month, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // J, F, ..., D\n case 'MMMMM':\n return localize.month(month, {\n width: 'narrow',\n context: 'formatting'\n });\n // January, February, ..., December\n case 'MMMM':\n default:\n return localize.month(month, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone month\n L: function L(date, token, localize) {\n var month = date.getUTCMonth();\n switch (token) {\n // 1, 2, ..., 12\n case 'L':\n return String(month + 1);\n // 01, 02, ..., 12\n case 'LL':\n return addLeadingZeros(month + 1, 2);\n // 1st, 2nd, ..., 12th\n case 'Lo':\n return localize.ordinalNumber(month + 1, {\n unit: 'month'\n });\n // Jan, Feb, ..., Dec\n case 'LLL':\n return localize.month(month, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // J, F, ..., D\n case 'LLLLL':\n return localize.month(month, {\n width: 'narrow',\n context: 'standalone'\n });\n // January, February, ..., December\n case 'LLLL':\n default:\n return localize.month(month, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // Local week of year\n w: function w(date, token, localize, options) {\n var week = getUTCWeek(date, options);\n if (token === 'wo') {\n return localize.ordinalNumber(week, {\n unit: 'week'\n });\n }\n return addLeadingZeros(week, token.length);\n },\n // ISO week of year\n I: function I(date, token, localize) {\n var isoWeek = getUTCISOWeek(date);\n if (token === 'Io') {\n return localize.ordinalNumber(isoWeek, {\n unit: 'week'\n });\n }\n return addLeadingZeros(isoWeek, token.length);\n },\n // Day of the month\n d: function d(date, token, localize) {\n if (token === 'do') {\n return localize.ordinalNumber(date.getUTCDate(), {\n unit: 'date'\n });\n }\n return lightFormatters.d(date, token);\n },\n // Day of year\n D: function D(date, token, localize) {\n var dayOfYear = getUTCDayOfYear(date);\n if (token === 'Do') {\n return localize.ordinalNumber(dayOfYear, {\n unit: 'dayOfYear'\n });\n }\n return addLeadingZeros(dayOfYear, token.length);\n },\n // Day of week\n E: function E(date, token, localize) {\n var dayOfWeek = date.getUTCDay();\n switch (token) {\n // Tue\n case 'E':\n case 'EE':\n case 'EEE':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n case 'EEEEE':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n case 'EEEEEE':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n case 'EEEE':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Local day of week\n e: function e(date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n switch (token) {\n // Numerical value (Nth day of week with current locale or weekStartsOn)\n case 'e':\n return String(localDayOfWeek);\n // Padded numerical value\n case 'ee':\n return addLeadingZeros(localDayOfWeek, 2);\n // 1st, 2nd, ..., 7th\n case 'eo':\n return localize.ordinalNumber(localDayOfWeek, {\n unit: 'day'\n });\n case 'eee':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n case 'eeeee':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n case 'eeeeee':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n case 'eeee':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone local day of week\n c: function c(date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n switch (token) {\n // Numerical value (same as in `e`)\n case 'c':\n return String(localDayOfWeek);\n // Padded numerical value\n case 'cc':\n return addLeadingZeros(localDayOfWeek, token.length);\n // 1st, 2nd, ..., 7th\n case 'co':\n return localize.ordinalNumber(localDayOfWeek, {\n unit: 'day'\n });\n case 'ccc':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // T\n case 'ccccc':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'standalone'\n });\n // Tu\n case 'cccccc':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'standalone'\n });\n // Tuesday\n case 'cccc':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // ISO day of week\n i: function i(date, token, localize) {\n var dayOfWeek = date.getUTCDay();\n var isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek;\n switch (token) {\n // 2\n case 'i':\n return String(isoDayOfWeek);\n // 02\n case 'ii':\n return addLeadingZeros(isoDayOfWeek, token.length);\n // 2nd\n case 'io':\n return localize.ordinalNumber(isoDayOfWeek, {\n unit: 'day'\n });\n // Tue\n case 'iii':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n case 'iiiii':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n case 'iiiiii':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n case 'iiii':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // AM or PM\n a: function a(date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n switch (token) {\n case 'a':\n case 'aa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n case 'aaa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n }).toLowerCase();\n case 'aaaaa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'aaaa':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // AM, PM, midnight, noon\n b: function b(date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue;\n if (hours === 12) {\n dayPeriodEnumValue = dayPeriodEnum.noon;\n } else if (hours === 0) {\n dayPeriodEnumValue = dayPeriodEnum.midnight;\n } else {\n dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n }\n switch (token) {\n case 'b':\n case 'bb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n case 'bbb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n }).toLowerCase();\n case 'bbbbb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'bbbb':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // in the morning, in the afternoon, in the evening, at night\n B: function B(date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue;\n if (hours >= 17) {\n dayPeriodEnumValue = dayPeriodEnum.evening;\n } else if (hours >= 12) {\n dayPeriodEnumValue = dayPeriodEnum.afternoon;\n } else if (hours >= 4) {\n dayPeriodEnumValue = dayPeriodEnum.morning;\n } else {\n dayPeriodEnumValue = dayPeriodEnum.night;\n }\n switch (token) {\n case 'B':\n case 'BB':\n case 'BBB':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n case 'BBBBB':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'BBBB':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Hour [1-12]\n h: function h(date, token, localize) {\n if (token === 'ho') {\n var hours = date.getUTCHours() % 12;\n if (hours === 0) hours = 12;\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n return lightFormatters.h(date, token);\n },\n // Hour [0-23]\n H: function H(date, token, localize) {\n if (token === 'Ho') {\n return localize.ordinalNumber(date.getUTCHours(), {\n unit: 'hour'\n });\n }\n return lightFormatters.H(date, token);\n },\n // Hour [0-11]\n K: function K(date, token, localize) {\n var hours = date.getUTCHours() % 12;\n if (token === 'Ko') {\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n return addLeadingZeros(hours, token.length);\n },\n // Hour [1-24]\n k: function k(date, token, localize) {\n var hours = date.getUTCHours();\n if (hours === 0) hours = 24;\n if (token === 'ko') {\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n return addLeadingZeros(hours, token.length);\n },\n // Minute\n m: function m(date, token, localize) {\n if (token === 'mo') {\n return localize.ordinalNumber(date.getUTCMinutes(), {\n unit: 'minute'\n });\n }\n return lightFormatters.m(date, token);\n },\n // Second\n s: function s(date, token, localize) {\n if (token === 'so') {\n return localize.ordinalNumber(date.getUTCSeconds(), {\n unit: 'second'\n });\n }\n return lightFormatters.s(date, token);\n },\n // Fraction of second\n S: function S(date, token) {\n return lightFormatters.S(date, token);\n },\n // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)\n X: function X(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n if (timezoneOffset === 0) {\n return 'Z';\n }\n switch (token) {\n // Hours and optional minutes\n case 'X':\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XX`\n case 'XXXX':\n case 'XX':\n // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XXX`\n case 'XXXXX':\n case 'XXX': // Hours and minutes with `:` delimiter\n default:\n return formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)\n x: function x(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n switch (token) {\n // Hours and optional minutes\n case 'x':\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xx`\n case 'xxxx':\n case 'xx':\n // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xxx`\n case 'xxxxx':\n case 'xxx': // Hours and minutes with `:` delimiter\n default:\n return formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (GMT)\n O: function O(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n switch (token) {\n // Short\n case 'O':\n case 'OO':\n case 'OOO':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n // Long\n case 'OOOO':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (specific non-location)\n z: function z(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n switch (token) {\n // Short\n case 'z':\n case 'zz':\n case 'zzz':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n // Long\n case 'zzzz':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':');\n }\n },\n // Seconds timestamp\n t: function t(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timestamp = Math.floor(originalDate.getTime() / 1000);\n return addLeadingZeros(timestamp, token.length);\n },\n // Milliseconds timestamp\n T: function T(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timestamp = originalDate.getTime();\n return addLeadingZeros(timestamp, token.length);\n }\n};\nfunction formatTimezoneShort(offset, dirtyDelimiter) {\n var sign = offset > 0 ? '-' : '+';\n var absOffset = Math.abs(offset);\n var hours = Math.floor(absOffset / 60);\n var minutes = absOffset % 60;\n if (minutes === 0) {\n return sign + String(hours);\n }\n var delimiter = dirtyDelimiter || '';\n return sign + String(hours) + delimiter + addLeadingZeros(minutes, 2);\n}\nfunction formatTimezoneWithOptionalMinutes(offset, dirtyDelimiter) {\n if (offset % 60 === 0) {\n var sign = offset > 0 ? '-' : '+';\n return sign + addLeadingZeros(Math.abs(offset) / 60, 2);\n }\n return formatTimezone(offset, dirtyDelimiter);\n}\nfunction formatTimezone(offset, dirtyDelimiter) {\n var delimiter = dirtyDelimiter || '';\n var sign = offset > 0 ? '-' : '+';\n var absOffset = Math.abs(offset);\n var hours = addLeadingZeros(Math.floor(absOffset / 60), 2);\n var minutes = addLeadingZeros(absOffset % 60, 2);\n return sign + hours + delimiter + minutes;\n}\nexport default formatters;","var dateLongFormatter = function dateLongFormatter(pattern, formatLong) {\n switch (pattern) {\n case 'P':\n return formatLong.date({\n width: 'short'\n });\n case 'PP':\n return formatLong.date({\n width: 'medium'\n });\n case 'PPP':\n return formatLong.date({\n width: 'long'\n });\n case 'PPPP':\n default:\n return formatLong.date({\n width: 'full'\n });\n }\n};\nvar timeLongFormatter = function timeLongFormatter(pattern, formatLong) {\n switch (pattern) {\n case 'p':\n return formatLong.time({\n width: 'short'\n });\n case 'pp':\n return formatLong.time({\n width: 'medium'\n });\n case 'ppp':\n return formatLong.time({\n width: 'long'\n });\n case 'pppp':\n default:\n return formatLong.time({\n width: 'full'\n });\n }\n};\nvar dateTimeLongFormatter = function dateTimeLongFormatter(pattern, formatLong) {\n var matchResult = pattern.match(/(P+)(p+)?/) || [];\n var datePattern = matchResult[1];\n var timePattern = matchResult[2];\n if (!timePattern) {\n return dateLongFormatter(pattern, formatLong);\n }\n var dateTimeFormat;\n switch (datePattern) {\n case 'P':\n dateTimeFormat = formatLong.dateTime({\n width: 'short'\n });\n break;\n case 'PP':\n dateTimeFormat = formatLong.dateTime({\n width: 'medium'\n });\n break;\n case 'PPP':\n dateTimeFormat = formatLong.dateTime({\n width: 'long'\n });\n break;\n case 'PPPP':\n default:\n dateTimeFormat = formatLong.dateTime({\n width: 'full'\n });\n break;\n }\n return dateTimeFormat.replace('{{date}}', dateLongFormatter(datePattern, formatLong)).replace('{{time}}', timeLongFormatter(timePattern, formatLong));\n};\nvar longFormatters = {\n p: timeLongFormatter,\n P: dateTimeLongFormatter\n};\nexport default longFormatters;","/**\n * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds.\n * They usually appear for dates that denote time before the timezones were introduced\n * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891\n * and GMT+01:00:00 after that date)\n *\n * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above,\n * which would lead to incorrect calculations.\n *\n * This function returns the timezone offset in milliseconds that takes seconds in account.\n */\nexport default function getTimezoneOffsetInMilliseconds(date) {\n var utcDate = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds()));\n utcDate.setUTCFullYear(date.getFullYear());\n return date.getTime() - utcDate.getTime();\n}","var protectedDayOfYearTokens = ['D', 'DD'];\nvar protectedWeekYearTokens = ['YY', 'YYYY'];\nexport function isProtectedDayOfYearToken(token) {\n return protectedDayOfYearTokens.indexOf(token) !== -1;\n}\nexport function isProtectedWeekYearToken(token) {\n return protectedWeekYearTokens.indexOf(token) !== -1;\n}\nexport function throwProtectedError(token, format, input) {\n if (token === 'YYYY') {\n throw new RangeError(\"Use `yyyy` instead of `YYYY` (in `\".concat(format, \"`) for formatting years to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n } else if (token === 'YY') {\n throw new RangeError(\"Use `yy` instead of `YY` (in `\".concat(format, \"`) for formatting years to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n } else if (token === 'D') {\n throw new RangeError(\"Use `d` instead of `D` (in `\".concat(format, \"`) for formatting days of the month to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n } else if (token === 'DD') {\n throw new RangeError(\"Use `dd` instead of `DD` (in `\".concat(format, \"`) for formatting days of the month to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n }\n}","var formatDistanceLocale = {\n lessThanXSeconds: {\n one: 'less than a second',\n other: 'less than {{count}} seconds'\n },\n xSeconds: {\n one: '1 second',\n other: '{{count}} seconds'\n },\n halfAMinute: 'half a minute',\n lessThanXMinutes: {\n one: 'less than a minute',\n other: 'less than {{count}} minutes'\n },\n xMinutes: {\n one: '1 minute',\n other: '{{count}} minutes'\n },\n aboutXHours: {\n one: 'about 1 hour',\n other: 'about {{count}} hours'\n },\n xHours: {\n one: '1 hour',\n other: '{{count}} hours'\n },\n xDays: {\n one: '1 day',\n other: '{{count}} days'\n },\n aboutXWeeks: {\n one: 'about 1 week',\n other: 'about {{count}} weeks'\n },\n xWeeks: {\n one: '1 week',\n other: '{{count}} weeks'\n },\n aboutXMonths: {\n one: 'about 1 month',\n other: 'about {{count}} months'\n },\n xMonths: {\n one: '1 month',\n other: '{{count}} months'\n },\n aboutXYears: {\n one: 'about 1 year',\n other: 'about {{count}} years'\n },\n xYears: {\n one: '1 year',\n other: '{{count}} years'\n },\n overXYears: {\n one: 'over 1 year',\n other: 'over {{count}} years'\n },\n almostXYears: {\n one: 'almost 1 year',\n other: 'almost {{count}} years'\n }\n};\nvar formatDistance = function formatDistance(token, count, options) {\n var result;\n var tokenValue = formatDistanceLocale[token];\n if (typeof tokenValue === 'string') {\n result = tokenValue;\n } else if (count === 1) {\n result = tokenValue.one;\n } else {\n result = tokenValue.other.replace('{{count}}', count.toString());\n }\n if (options !== null && options !== void 0 && options.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return 'in ' + result;\n } else {\n return result + ' ago';\n }\n }\n return result;\n};\nexport default formatDistance;","export default function buildFormatLongFn(args) {\n return function () {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n // TODO: Remove String()\n var width = options.width ? String(options.width) : args.defaultWidth;\n var format = args.formats[width] || args.formats[args.defaultWidth];\n return format;\n };\n}","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\nvar dateFormats = {\n full: 'EEEE, MMMM do, y',\n long: 'MMMM do, y',\n medium: 'MMM d, y',\n short: 'MM/dd/yyyy'\n};\nvar timeFormats = {\n full: 'h:mm:ss a zzzz',\n long: 'h:mm:ss a z',\n medium: 'h:mm:ss a',\n short: 'h:mm a'\n};\nvar dateTimeFormats = {\n full: \"{{date}} 'at' {{time}}\",\n long: \"{{date}} 'at' {{time}}\",\n medium: '{{date}}, {{time}}',\n short: '{{date}}, {{time}}'\n};\nvar formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: 'full'\n }),\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: 'full'\n }),\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: 'full'\n })\n};\nexport default formatLong;","var formatRelativeLocale = {\n lastWeek: \"'last' eeee 'at' p\",\n yesterday: \"'yesterday at' p\",\n today: \"'today at' p\",\n tomorrow: \"'tomorrow at' p\",\n nextWeek: \"eeee 'at' p\",\n other: 'P'\n};\nvar formatRelative = function formatRelative(token, _date, _baseDate, _options) {\n return formatRelativeLocale[token];\n};\nexport default formatRelative;","export default function buildLocalizeFn(args) {\n return function (dirtyIndex, options) {\n var context = options !== null && options !== void 0 && options.context ? String(options.context) : 'standalone';\n var valuesArray;\n if (context === 'formatting' && args.formattingValues) {\n var defaultWidth = args.defaultFormattingWidth || args.defaultWidth;\n var width = options !== null && options !== void 0 && options.width ? String(options.width) : defaultWidth;\n valuesArray = args.formattingValues[width] || args.formattingValues[defaultWidth];\n } else {\n var _defaultWidth = args.defaultWidth;\n var _width = options !== null && options !== void 0 && options.width ? String(options.width) : args.defaultWidth;\n valuesArray = args.values[_width] || args.values[_defaultWidth];\n }\n var index = args.argumentCallback ? args.argumentCallback(dirtyIndex) : dirtyIndex;\n // @ts-ignore: For some reason TypeScript just don't want to match it, no matter how hard we try. I challenge you to try to remove it!\n return valuesArray[index];\n };\n}","import buildLocalizeFn from \"../../../_lib/buildLocalizeFn/index.js\";\nvar eraValues = {\n narrow: ['B', 'A'],\n abbreviated: ['BC', 'AD'],\n wide: ['Before Christ', 'Anno Domini']\n};\nvar quarterValues = {\n narrow: ['1', '2', '3', '4'],\n abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'],\n wide: ['1st quarter', '2nd quarter', '3rd quarter', '4th quarter']\n};\n\n// Note: in English, the names of days of the week and months are capitalized.\n// If you are making a new locale based on this one, check if the same is true for the language you're working on.\n// Generally, formatted dates should look like they are in the middle of a sentence,\n// e.g. in Spanish language the weekdays and months should be in the lowercase.\nvar monthValues = {\n narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],\n abbreviated: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n wide: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']\n};\nvar dayValues = {\n narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],\n short: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n abbreviated: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n wide: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']\n};\nvar dayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n }\n};\nvar formattingDayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n }\n};\nvar ordinalNumber = function ordinalNumber(dirtyNumber, _options) {\n var number = Number(dirtyNumber);\n\n // If ordinal numbers depend on context, for example,\n // if they are different for different grammatical genders,\n // use `options.unit`.\n //\n // `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',\n // 'day', 'hour', 'minute', 'second'.\n\n var rem100 = number % 100;\n if (rem100 > 20 || rem100 < 10) {\n switch (rem100 % 10) {\n case 1:\n return number + 'st';\n case 2:\n return number + 'nd';\n case 3:\n return number + 'rd';\n }\n }\n return number + 'th';\n};\nvar localize = {\n ordinalNumber: ordinalNumber,\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: 'wide'\n }),\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: 'wide',\n argumentCallback: function argumentCallback(quarter) {\n return quarter - 1;\n }\n }),\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: 'wide'\n }),\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: 'wide'\n }),\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: 'wide',\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: 'wide'\n })\n};\nexport default localize;","export default function buildMatchFn(args) {\n return function (string) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var width = options.width;\n var matchPattern = width && args.matchPatterns[width] || args.matchPatterns[args.defaultMatchWidth];\n var matchResult = string.match(matchPattern);\n if (!matchResult) {\n return null;\n }\n var matchedString = matchResult[0];\n var parsePatterns = width && args.parsePatterns[width] || args.parsePatterns[args.defaultParseWidth];\n var key = Array.isArray(parsePatterns) ? findIndex(parsePatterns, function (pattern) {\n return pattern.test(matchedString);\n }) : findKey(parsePatterns, function (pattern) {\n return pattern.test(matchedString);\n });\n var value;\n value = args.valueCallback ? args.valueCallback(key) : key;\n value = options.valueCallback ? options.valueCallback(value) : value;\n var rest = string.slice(matchedString.length);\n return {\n value: value,\n rest: rest\n };\n };\n}\nfunction findKey(object, predicate) {\n for (var key in object) {\n if (object.hasOwnProperty(key) && predicate(object[key])) {\n return key;\n }\n }\n return undefined;\n}\nfunction findIndex(array, predicate) {\n for (var key = 0; key < array.length; key++) {\n if (predicate(array[key])) {\n return key;\n }\n }\n return undefined;\n}","export default function buildMatchPatternFn(args) {\n return function (string) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var matchResult = string.match(args.matchPattern);\n if (!matchResult) return null;\n var matchedString = matchResult[0];\n var parseResult = string.match(args.parsePattern);\n if (!parseResult) return null;\n var value = args.valueCallback ? args.valueCallback(parseResult[0]) : parseResult[0];\n value = options.valueCallback ? options.valueCallback(value) : value;\n var rest = string.slice(matchedString.length);\n return {\n value: value,\n rest: rest\n };\n };\n}","import buildMatchFn from \"../../../_lib/buildMatchFn/index.js\";\nimport buildMatchPatternFn from \"../../../_lib/buildMatchPatternFn/index.js\";\nvar matchOrdinalNumberPattern = /^(\\d+)(th|st|nd|rd)?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n narrow: /^(b|a)/i,\n abbreviated: /^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)/i,\n wide: /^(before christ|before common era|anno domini|common era)/i\n};\nvar parseEraPatterns = {\n any: [/^b/i, /^(a|c)/i]\n};\nvar matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^q[1234]/i,\n wide: /^[1234](th|st|nd|rd)? quarter/i\n};\nvar parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i]\n};\nvar matchMonthPatterns = {\n narrow: /^[jfmasond]/i,\n abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,\n wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i\n};\nvar parseMonthPatterns = {\n narrow: [/^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],\n any: [/^ja/i, /^f/i, /^mar/i, /^ap/i, /^may/i, /^jun/i, /^jul/i, /^au/i, /^s/i, /^o/i, /^n/i, /^d/i]\n};\nvar matchDayPatterns = {\n narrow: /^[smtwf]/i,\n short: /^(su|mo|tu|we|th|fr|sa)/i,\n abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,\n wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i\n};\nvar parseDayPatterns = {\n narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],\n any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i]\n};\nvar matchDayPeriodPatterns = {\n narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,\n any: /^([ap]\\.?\\s?m\\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i\n};\nvar parseDayPeriodPatterns = {\n any: {\n am: /^a/i,\n pm: /^p/i,\n midnight: /^mi/i,\n noon: /^no/i,\n morning: /morning/i,\n afternoon: /afternoon/i,\n evening: /evening/i,\n night: /night/i\n }\n};\nvar match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: function valueCallback(value) {\n return parseInt(value, 10);\n }\n }),\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseEraPatterns,\n defaultParseWidth: 'any'\n }),\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: 'any',\n valueCallback: function valueCallback(index) {\n return index + 1;\n }\n }),\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: 'any'\n }),\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseDayPatterns,\n defaultParseWidth: 'any'\n }),\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: 'any',\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: 'any'\n })\n};\nexport default match;","import formatDistance from \"./_lib/formatDistance/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\nimport formatRelative from \"./_lib/formatRelative/index.js\";\nimport localize from \"./_lib/localize/index.js\";\nimport match from \"./_lib/match/index.js\";\n/**\n * @type {Locale}\n * @category Locales\n * @summary English locale (United States).\n * @language English\n * @iso-639-2 eng\n * @author Sasha Koss [@kossnocorp]{@link https://github.com/kossnocorp}\n * @author Lesha Koss [@leshakoss]{@link https://github.com/leshakoss}\n */\nvar locale = {\n code: 'en-US',\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 0 /* Sunday */,\n firstWeekContainsDate: 1\n }\n};\nexport default locale;","import defaultLocale from \"../../locale/en-US/index.js\";\nexport default defaultLocale;","import isValid from \"../isValid/index.js\";\nimport subMilliseconds from \"../subMilliseconds/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport formatters from \"../_lib/format/formatters/index.js\";\nimport longFormatters from \"../_lib/format/longFormatters/index.js\";\nimport getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport { isProtectedDayOfYearToken, isProtectedWeekYearToken, throwProtectedError } from \"../_lib/protectedTokens/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getDefaultOptions } from \"../_lib/defaultOptions/index.js\";\nimport defaultLocale from \"../_lib/defaultLocale/index.js\"; // This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\nvar formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g;\n\n// This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\nvar longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\nvar escapedStringRegExp = /^'([^]*?)'?$/;\nvar doubleQuoteRegExp = /''/g;\nvar unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n\n/**\n * @name format\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format. The result may vary by locale.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * The characters wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n * (see the last example)\n *\n * Format of the string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 7 below the table).\n *\n * Accepted patterns:\n * | Unit | Pattern | Result examples | Notes |\n * |---------------------------------|---------|-----------------------------------|-------|\n * | Era | G..GGG | AD, BC | |\n * | | GGGG | Anno Domini, Before Christ | 2 |\n * | | GGGGG | A, B | |\n * | Calendar year | y | 44, 1, 1900, 2017 | 5 |\n * | | yo | 44th, 1st, 0th, 17th | 5,7 |\n * | | yy | 44, 01, 00, 17 | 5 |\n * | | yyy | 044, 001, 1900, 2017 | 5 |\n * | | yyyy | 0044, 0001, 1900, 2017 | 5 |\n * | | yyyyy | ... | 3,5 |\n * | Local week-numbering year | Y | 44, 1, 1900, 2017 | 5 |\n * | | Yo | 44th, 1st, 1900th, 2017th | 5,7 |\n * | | YY | 44, 01, 00, 17 | 5,8 |\n * | | YYY | 044, 001, 1900, 2017 | 5 |\n * | | YYYY | 0044, 0001, 1900, 2017 | 5,8 |\n * | | YYYYY | ... | 3,5 |\n * | ISO week-numbering year | R | -43, 0, 1, 1900, 2017 | 5,7 |\n * | | RR | -43, 00, 01, 1900, 2017 | 5,7 |\n * | | RRR | -043, 000, 001, 1900, 2017 | 5,7 |\n * | | RRRR | -0043, 0000, 0001, 1900, 2017 | 5,7 |\n * | | RRRRR | ... | 3,5,7 |\n * | Extended year | u | -43, 0, 1, 1900, 2017 | 5 |\n * | | uu | -43, 01, 1900, 2017 | 5 |\n * | | uuu | -043, 001, 1900, 2017 | 5 |\n * | | uuuu | -0043, 0001, 1900, 2017 | 5 |\n * | | uuuuu | ... | 3,5 |\n * | Quarter (formatting) | Q | 1, 2, 3, 4 | |\n * | | Qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | QQ | 01, 02, 03, 04 | |\n * | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | q | 1, 2, 3, 4 | |\n * | | qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | qq | 01, 02, 03, 04 | |\n * | | qqq | Q1, Q2, Q3, Q4 | |\n * | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | qqqqq | 1, 2, 3, 4 | 4 |\n * | Month (formatting) | M | 1, 2, ..., 12 | |\n * | | Mo | 1st, 2nd, ..., 12th | 7 |\n * | | MM | 01, 02, ..., 12 | |\n * | | MMM | Jan, Feb, ..., Dec | |\n * | | MMMM | January, February, ..., December | 2 |\n * | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | L | 1, 2, ..., 12 | |\n * | | Lo | 1st, 2nd, ..., 12th | 7 |\n * | | LL | 01, 02, ..., 12 | |\n * | | LLL | Jan, Feb, ..., Dec | |\n * | | LLLL | January, February, ..., December | 2 |\n * | | LLLLL | J, F, ..., D | |\n * | Local week of year | w | 1, 2, ..., 53 | |\n * | | wo | 1st, 2nd, ..., 53th | 7 |\n * | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | I | 1, 2, ..., 53 | 7 |\n * | | Io | 1st, 2nd, ..., 53th | 7 |\n * | | II | 01, 02, ..., 53 | 7 |\n * | Day of month | d | 1, 2, ..., 31 | |\n * | | do | 1st, 2nd, ..., 31st | 7 |\n * | | dd | 01, 02, ..., 31 | |\n * | Day of year | D | 1, 2, ..., 365, 366 | 9 |\n * | | Do | 1st, 2nd, ..., 365th, 366th | 7 |\n * | | DD | 01, 02, ..., 365, 366 | 9 |\n * | | DDD | 001, 002, ..., 365, 366 | |\n * | | DDDD | ... | 3 |\n * | Day of week (formatting) | E..EEE | Mon, Tue, Wed, ..., Sun | |\n * | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | EEEEE | M, T, W, T, F, S, S | |\n * | | EEEEEE | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | ISO day of week (formatting) | i | 1, 2, 3, ..., 7 | 7 |\n * | | io | 1st, 2nd, ..., 7th | 7 |\n * | | ii | 01, 02, ..., 07 | 7 |\n * | | iii | Mon, Tue, Wed, ..., Sun | 7 |\n * | | iiii | Monday, Tuesday, ..., Sunday | 2,7 |\n * | | iiiii | M, T, W, T, F, S, S | 7 |\n * | | iiiiii | Mo, Tu, We, Th, Fr, Sa, Su | 7 |\n * | Local day of week (formatting) | e | 2, 3, 4, ..., 1 | |\n * | | eo | 2nd, 3rd, ..., 1st | 7 |\n * | | ee | 02, 03, ..., 01 | |\n * | | eee | Mon, Tue, Wed, ..., Sun | |\n * | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | eeeee | M, T, W, T, F, S, S | |\n * | | eeeeee | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | Local day of week (stand-alone) | c | 2, 3, 4, ..., 1 | |\n * | | co | 2nd, 3rd, ..., 1st | 7 |\n * | | cc | 02, 03, ..., 01 | |\n * | | ccc | Mon, Tue, Wed, ..., Sun | |\n * | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | ccccc | M, T, W, T, F, S, S | |\n * | | cccccc | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | AM, PM | a..aa | AM, PM | |\n * | | aaa | am, pm | |\n * | | aaaa | a.m., p.m. | 2 |\n * | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | b..bb | AM, PM, noon, midnight | |\n * | | bbb | am, pm, noon, midnight | |\n * | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | bbbbb | a, p, n, mi | |\n * | Flexible day period | B..BBB | at night, in the morning, ... | |\n * | | BBBB | at night, in the morning, ... | 2 |\n * | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | h | 1, 2, ..., 11, 12 | |\n * | | ho | 1st, 2nd, ..., 11th, 12th | 7 |\n * | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | H | 0, 1, 2, ..., 23 | |\n * | | Ho | 0th, 1st, 2nd, ..., 23rd | 7 |\n * | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | K | 1, 2, ..., 11, 0 | |\n * | | Ko | 1st, 2nd, ..., 11th, 0th | 7 |\n * | | KK | 01, 02, ..., 11, 00 | |\n * | Hour [1-24] | k | 24, 1, 2, ..., 23 | |\n * | | ko | 24th, 1st, 2nd, ..., 23rd | 7 |\n * | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | m | 0, 1, ..., 59 | |\n * | | mo | 0th, 1st, ..., 59th | 7 |\n * | | mm | 00, 01, ..., 59 | |\n * | Second | s | 0, 1, ..., 59 | |\n * | | so | 0th, 1st, ..., 59th | 7 |\n * | | ss | 00, 01, ..., 59 | |\n * | Fraction of second | S | 0, 1, ..., 9 | |\n * | | SS | 00, 01, ..., 99 | |\n * | | SSS | 000, 001, ..., 999 | |\n * | | SSSS | ... | 3 |\n * | Timezone (ISO-8601 w/ Z) | X | -08, +0530, Z | |\n * | | XX | -0800, +0530, Z | |\n * | | XXX | -08:00, +05:30, Z | |\n * | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | x | -08, +0530, +00 | |\n * | | xx | -0800, +0530, +0000 | |\n * | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Timezone (GMT) | O...OOO | GMT-8, GMT+5:30, GMT+0 | |\n * | | OOOO | GMT-08:00, GMT+05:30, GMT+00:00 | 2 |\n * | Timezone (specific non-locat.) | z...zzz | GMT-8, GMT+5:30, GMT+0 | 6 |\n * | | zzzz | GMT-08:00, GMT+05:30, GMT+00:00 | 2,6 |\n * | Seconds timestamp | t | 512969520 | 7 |\n * | | tt | ... | 3,7 |\n * | Milliseconds timestamp | T | 512969520900 | 7 |\n * | | TT | ... | 3,7 |\n * | Long localized date | P | 04/29/1453 | 7 |\n * | | PP | Apr 29, 1453 | 7 |\n * | | PPP | April 29th, 1453 | 7 |\n * | | PPPP | Friday, April 29th, 1453 | 2,7 |\n * | Long localized time | p | 12:00 AM | 7 |\n * | | pp | 12:00:00 AM | 7 |\n * | | ppp | 12:00:00 AM GMT+2 | 7 |\n * | | pppp | 12:00:00 AM GMT+02:00 | 2,7 |\n * | Combination of date and time | Pp | 04/29/1453, 12:00 AM | 7 |\n * | | PPpp | Apr 29, 1453, 12:00:00 AM | 7 |\n * | | PPPppp | April 29th, 1453 at ... | 7 |\n * | | PPPPpppp| Friday, April 29th, 1453 at ... | 2,7 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table (e.g. `EEEEEEEEEEE`)\n * the output will be the same as default pattern for this unit, usually\n * the longest one (in case of ISO weekdays, `EEEE`). Default patterns for units\n * are marked with \"2\" in the last column of the table.\n *\n * `format(new Date(2017, 10, 6), 'MMM') //=> 'Nov'`\n *\n * `format(new Date(2017, 10, 6), 'MMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMM') //=> 'N'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMMM') //=> 'November'`\n *\n * 3. Some patterns could be unlimited length (such as `yyyyyyyy`).\n * The output will be padded with zeros to match the length of the pattern.\n *\n * `format(new Date(2017, 10, 6), 'yyyyyyyy') //=> '00002017'`\n *\n * 4. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 5. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` always returns the last two digits of a year,\n * while `uu` pads single digit years to 2 characters and returns other years unchanged:\n *\n * | Year | `yy` | `uu` |\n * |------|------|------|\n * | 1 | 01 | 01 |\n * | 14 | 14 | 14 |\n * | 376 | 76 | 376 |\n * | 1453 | 53 | 1453 |\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [getISOWeekYear]{@link https://date-fns.org/docs/getISOWeekYear}\n * and [getWeekYear]{@link https://date-fns.org/docs/getWeekYear}).\n *\n * 6. Specific non-location timezones are currently unavailable in `date-fns`,\n * so right now these tokens fall back to GMT timezones.\n *\n * 7. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `t`: seconds timestamp\n * - `T`: milliseconds timestamp\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 8. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n * You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 9. `D` and `DD` tokens represent days of the year but they are often confused with days of the month.\n * You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * @param {Date|Number} date - the original date\n * @param {String} format - the string of tokens\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {Number} [options.firstWeekContainsDate=1] - the day of January, which is\n * @param {Boolean} [options.useAdditionalWeekYearTokens=false] - if true, allows usage of the week-numbering year tokens `YY` and `YYYY`;\n * see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @param {Boolean} [options.useAdditionalDayOfYearTokens=false] - if true, allows usage of the day of year tokens `D` and `DD`;\n * see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @returns {String} the formatted date string\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `options.locale` must contain `localize` property\n * @throws {RangeError} `options.locale` must contain `formatLong` property\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} format string contains an unescaped latin alphabet character\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * const result = format(new Date(2014, 1, 11), 'MM/dd/yyyy')\n * //=> '02/11/2014'\n *\n * @example\n * // Represent 2 July 2014 in Esperanto:\n * import { eoLocale } from 'date-fns/locale/eo'\n * const result = format(new Date(2014, 6, 2), \"do 'de' MMMM yyyy\", {\n * locale: eoLocale\n * })\n * //=> '2-a de julio 2014'\n *\n * @example\n * // Escape string by single quote characters:\n * const result = format(new Date(2014, 6, 2, 15), \"h 'o''clock'\")\n * //=> \"3 o'clock\"\n */\n\nexport default function format(dirtyDate, dirtyFormatStr, options) {\n var _ref, _options$locale, _ref2, _ref3, _ref4, _options$firstWeekCon, _options$locale2, _options$locale2$opti, _defaultOptions$local, _defaultOptions$local2, _ref5, _ref6, _ref7, _options$weekStartsOn, _options$locale3, _options$locale3$opti, _defaultOptions$local3, _defaultOptions$local4;\n requiredArgs(2, arguments);\n var formatStr = String(dirtyFormatStr);\n var defaultOptions = getDefaultOptions();\n var locale = (_ref = (_options$locale = options === null || options === void 0 ? void 0 : options.locale) !== null && _options$locale !== void 0 ? _options$locale : defaultOptions.locale) !== null && _ref !== void 0 ? _ref : defaultLocale;\n var firstWeekContainsDate = toInteger((_ref2 = (_ref3 = (_ref4 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale2 = options.locale) === null || _options$locale2 === void 0 ? void 0 : (_options$locale2$opti = _options$locale2.options) === null || _options$locale2$opti === void 0 ? void 0 : _options$locale2$opti.firstWeekContainsDate) !== null && _ref4 !== void 0 ? _ref4 : defaultOptions.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : 1);\n\n // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n var weekStartsOn = toInteger((_ref5 = (_ref6 = (_ref7 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale3 = options.locale) === null || _options$locale3 === void 0 ? void 0 : (_options$locale3$opti = _options$locale3.options) === null || _options$locale3$opti === void 0 ? void 0 : _options$locale3$opti.weekStartsOn) !== null && _ref7 !== void 0 ? _ref7 : defaultOptions.weekStartsOn) !== null && _ref6 !== void 0 ? _ref6 : (_defaultOptions$local3 = defaultOptions.locale) === null || _defaultOptions$local3 === void 0 ? void 0 : (_defaultOptions$local4 = _defaultOptions$local3.options) === null || _defaultOptions$local4 === void 0 ? void 0 : _defaultOptions$local4.weekStartsOn) !== null && _ref5 !== void 0 ? _ref5 : 0);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n if (!locale.localize) {\n throw new RangeError('locale must contain localize property');\n }\n if (!locale.formatLong) {\n throw new RangeError('locale must contain formatLong property');\n }\n var originalDate = toDate(dirtyDate);\n if (!isValid(originalDate)) {\n throw new RangeError('Invalid time value');\n }\n\n // Convert the date in system timezone to the same date in UTC+00:00 timezone.\n // This ensures that when UTC functions will be implemented, locales will be compatible with them.\n // See an issue about UTC functions: https://github.com/date-fns/date-fns/issues/376\n var timezoneOffset = getTimezoneOffsetInMilliseconds(originalDate);\n var utcDate = subMilliseconds(originalDate, timezoneOffset);\n var formatterOptions = {\n firstWeekContainsDate: firstWeekContainsDate,\n weekStartsOn: weekStartsOn,\n locale: locale,\n _originalDate: originalDate\n };\n var result = formatStr.match(longFormattingTokensRegExp).map(function (substring) {\n var firstCharacter = substring[0];\n if (firstCharacter === 'p' || firstCharacter === 'P') {\n var longFormatter = longFormatters[firstCharacter];\n return longFormatter(substring, locale.formatLong);\n }\n return substring;\n }).join('').match(formattingTokensRegExp).map(function (substring) {\n // Replace two single quote characters with one single quote character\n if (substring === \"''\") {\n return \"'\";\n }\n var firstCharacter = substring[0];\n if (firstCharacter === \"'\") {\n return cleanEscapedString(substring);\n }\n var formatter = formatters[firstCharacter];\n if (formatter) {\n if (!(options !== null && options !== void 0 && options.useAdditionalWeekYearTokens) && isProtectedWeekYearToken(substring)) {\n throwProtectedError(substring, dirtyFormatStr, String(dirtyDate));\n }\n if (!(options !== null && options !== void 0 && options.useAdditionalDayOfYearTokens) && isProtectedDayOfYearToken(substring)) {\n throwProtectedError(substring, dirtyFormatStr, String(dirtyDate));\n }\n return formatter(utcDate, substring, locale.localize, formatterOptions);\n }\n if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n throw new RangeError('Format string contains an unescaped latin alphabet character `' + firstCharacter + '`');\n }\n return substring;\n }).join('');\n return result;\n}\nfunction cleanEscapedString(input) {\n var matched = input.match(escapedStringRegExp);\n if (!matched) {\n return input;\n }\n return matched[1].replace(doubleQuoteRegExp, \"'\");\n}","import React, { Component, createRef } from 'react';\nimport isEqual from 'react-fast-compare';\nimport PropTypes from 'prop-types';\n\nimport Column from '../../../../layout/Column';\nimport Row from '../../../../layout/Row';\nimport Button from '../../../../components/Button';\n\nexport default class EditableListForm extends Component {\n static propTypes = {\n addValueOnFieldChange: PropTypes.bool,\n noLabels: PropTypes.bool,\n buttonName: PropTypes.string,\n buttonStyle: PropTypes.string,\n components: PropTypes.instanceOf(Array),\n displayType: PropTypes.string,\n disabled: PropTypes.bool,\n getMainFormButtonWidth: PropTypes.func,\n error: PropTypes.string,\n errorPersist: PropTypes.bool,\n onSubmit: PropTypes.func,\n validate: PropTypes.func,\n validationmessage: PropTypes.string,\n };\n\n static getMainFormValue(components) {\n const mainFormValue = new Array(components.length);\n\n components.forEach((component, index) => {\n mainFormValue[index] = component.props.value || undefined;\n });\n\n return mainFormValue;\n }\n\n constructor(props) {\n super(props);\n const {\n components,\n } = props;\n\n this.submitButtonRef = createRef();\n this.handleOnChange = this.handleOnChange.bind(this);\n this.submitForm = this.submitForm.bind(this);\n\n this.state = {\n components,\n errors: {},\n mainError: null,\n mainFormValue: EditableListForm.getMainFormValue(components),\n refs: [],\n };\n }\n\n componentDidMount() {\n const {\n addValueOnFieldChange,\n getMainFormButtonWidth,\n } = this.props;\n this.createRefs();\n\n if (getMainFormButtonWidth) {\n getMainFormButtonWidth(\n !addValueOnFieldChange\n ? this.submitButtonRef.current.clientWidth\n : 0,\n );\n }\n }\n\n static getDerivedStateFromProps(nextProps, prevState) {\n const state = {};\n const {\n components: propsComponents,\n } = nextProps;\n\n const {\n components: stateComponents,\n } = prevState;\n if (\n !isEqual(propsComponents, stateComponents)\n && !isEqual(\n EditableListForm.getMainFormValue(propsComponents),\n EditableListForm.getMainFormValue(stateComponents),\n )\n ) {\n state.mainFormValue = EditableListForm.getMainFormValue(propsComponents);\n state.components = propsComponents;\n }\n\n return state;\n }\n\n getFormCssClasses() {\n const { noLabels } = this.props;\n const cssClasses = ['tyk-editable-list__form'];\n\n if (noLabels) {\n cssClasses.push('no-labels');\n }\n\n return cssClasses.join(' ');\n }\n\n getButtonClassName() {\n const { buttonStyle, displayType } = this.props;\n const cssClasses = [];\n\n if (buttonStyle) {\n cssClasses.push(buttonStyle);\n }\n\n if (displayType) {\n cssClasses.push(displayType);\n }\n\n return cssClasses.join(' ');\n }\n\n getComponentsError(component) {\n const {\n error,\n errors,\n mainError,\n } = this.state;\n\n if (error || mainError) {\n errors[component.props.name] = 'true';\n } else if (!(error || mainError) && errors[component.props.name] === 'true') {\n delete errors[component.props.name];\n }\n\n return errors[component.props.name] ? errors[component.props.name].toString() : undefined;\n }\n\n createRefs() {\n const { components } = this.props;\n const refs = [];\n\n components.forEach(() => {\n refs.push(createRef());\n });\n\n this.setState({\n refs,\n });\n }\n\n validateValue(value, props) {\n const { mainError, errors } = this.state;\n const { error, errorPersist } = this.props;\n\n const validatorsNames = props.validate ? Object.keys(props.validate) : [];\n // if there is a general form error don't take field errors into consideration\n const tempState = {\n errors: (error || mainError) ? {} : Object.assign({}, errors),\n };\n let ok = true;\n\n // if the error should stay after changing fields values don't take actions\n if (errorPersist) {\n return tempState;\n }\n\n // validate each field from the form\n for (let i = 0; i < validatorsNames.length; i += 1) {\n const validator = props.validate[validatorsNames[i]];\n if (validator(value)) {\n tempState.errors[props.name] = props.validationmessages[validatorsNames[i]];\n ok = false;\n break;\n }\n }\n\n // if the field is ok delete its error\n if (ok) {\n delete tempState.errors[props.name];\n }\n\n tempState.mainError = null;\n\n return tempState;\n }\n\n hasMainFormErrors(errors) {\n const { components, errorPersist } = this.props;\n const { mainFormValue } = this.state;\n const tempState = {\n errors: Object.assign({}, errors),\n };\n\n if (errorPersist && mainFormValue.indexOf(undefined) === -1) {\n return false;\n }\n\n if (Object.keys(tempState.errors).length > 0) {\n return true;\n }\n\n components.forEach((component, index) => {\n tempState.errors = Object.assign(\n {},\n tempState.errors,\n this.validateValue(mainFormValue[index], component.props).errors,\n );\n });\n\n return Object.keys(tempState.errors).length > 0;\n }\n\n handleOnChange(component, index, value) {\n const { addValueOnFieldChange } = this.props;\n let tempState = this.state;\n\n tempState = Object.assign({}, tempState, this.validateValue(value, component.props));\n\n if (!tempState.errors[component.props.name]) {\n tempState.mainFormValue[index] = value;\n\n if (component.props.onChange) {\n component.props.onChange(value);\n }\n }\n\n this.setState(previousState => Object.assign({}, previousState, tempState), () => {\n if (addValueOnFieldChange) {\n this.submitForm();\n }\n });\n }\n\n resetForm() {\n const { refs } = this.state;\n const {\n components,\n } = this.props;\n\n refs.forEach((ref) => {\n if (ref.current?.reset) {\n ref.current.reset();\n }\n });\n\n this.setState({\n errors: {},\n mainError: null,\n mainFormValue: EditableListForm.getMainFormValue(components),\n });\n }\n\n showMainError(error) {\n this.setState({\n mainError: error,\n });\n }\n\n submitForm() {\n const { errors, mainFormValue } = this.state;\n const {\n errorPersist, onSubmit, validate, validationmessage,\n } = this.props;\n\n if (errorPersist) {\n onSubmit(mainFormValue);\n this.resetForm();\n }\n\n if (\n Object.keys(errors).length === 0\n && (onSubmit && typeof onSubmit === 'function')\n ) {\n if (validate) {\n if (validate(mainFormValue)) {\n this.showMainError(validationmessage);\n } else {\n onSubmit(mainFormValue);\n this.resetForm();\n }\n } else {\n onSubmit(mainFormValue);\n this.resetForm();\n }\n }\n }\n\n render() {\n const {\n addValueOnFieldChange, components, buttonName, disabled, displayType, error,\n } = this.props;\n const {\n mainError, refs, errors,\n } = this.state;\n\n return (\n
    \n
    \n \n {\n components.map((component, index) => {\n const ComponentName = component.name;\n const {\n onChange, value, ...rest\n } = component.props;\n\n return (\n \n \n \n );\n })\n }\n \n {\n !addValueOnFieldChange\n ? (\n \n \n { buttonName || 'ADD' }\n \n \n )\n : null\n }\n
    \n {\n error || mainError\n ? (\n
    \n

    \n { error || mainError }\n

    \n
    \n )\n : null\n }\n
    \n );\n }\n}\n","import React, { Component, Fragment, createRef } from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport { fromJS } from 'immutable';\n\nimport format from 'date-fns/format';\nimport isDate from 'date-fns/isDate';\n\nimport EditableListForm from './js/EditableListForm';\nimport Column from '../../../layout/Column';\nimport Icon from '../../../components/Icon';\nimport Row from '../../../layout/Row';\n\nexport default class EditableList extends Component {\n static propTypes = {\n addValueOnFieldChange: PropTypes.bool,\n disabled: PropTypes.bool,\n error: PropTypes.string,\n config: PropTypes.instanceOf(Object),\n onChange: PropTypes.func,\n label: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.func,\n PropTypes.string,\n ]),\n value: PropTypes.oneOfType([\n PropTypes.instanceOf(Array),\n PropTypes.instanceOf(Object),\n ]),\n };\n\n static getItemListValue(itemValue) {\n let tempValue = null;\n\n if (typeof itemValue === 'string') {\n tempValue = itemValue;\n }\n\n if (Object.prototype.toString.call(itemValue) === '[object Object]') {\n tempValue = itemValue.name;\n }\n\n if (isDate(itemValue)) {\n tempValue = format(itemValue, 'dd/MM/yyyy');\n }\n\n return tempValue;\n }\n\n static getListItemCssClass(displayType) {\n const cssClasses = [];\n\n if (displayType === 'inline') {\n cssClasses.push('tyk-editable-list-item--inline');\n }\n\n return cssClasses.join(' ');\n }\n\n constructor(props) {\n super(props);\n const {\n value,\n } = this.props;\n\n this.state = {\n initialValue: value || '',\n value: value || [],\n buttonWidth: 0,\n };\n\n this.startIndex = 1;\n\n this.handleFormSubmit = this.handleFormSubmit.bind(this);\n this.getMainFormButtonWidth = this.getMainFormButtonWidth.bind(this);\n this.dropdownListItemRef = createRef();\n }\n\n static getDerivedStateFromProps(nextProps, prevState) {\n const state = {};\n\n if (\n nextProps.value && JSON.stringify(nextProps.value)\n !== JSON.stringify(prevState.initialValue)\n ) {\n state.value = nextProps.value || [];\n state.initialValue = nextProps.value || '';\n }\n\n return state.value ? state : null;\n }\n\n getListItemsCssClass(displayType) {\n const { config } = this.props;\n const cssClasses = ['tyk-editable-list-items'];\n\n cssClasses.push(config.displayType || 'table');\n\n if (displayType === 'inline') {\n cssClasses.push('tyk-editable-list-items--inline');\n }\n\n return cssClasses.join(' ');\n }\n\n getFormInputKey() {\n this.startIndex += 1;\n return this.startIndex;\n }\n\n // generate list item value's based on the display types\n // table, inline, list\n getListItemText(itemData) {\n const { config } = this.props;\n let value = null;\n\n switch (config.displayType) {\n case 'list':\n case 'inline': {\n const itemText = itemData.value.reduce((prevValue, itemValue, index) => {\n const tempValue = EditableList.getItemListValue(itemValue);\n let separator = ', ';\n\n if (index === itemData.value.length - 1) {\n separator = '';\n }\n\n return prevValue + tempValue + separator;\n }, '');\n\n value = itemText;\n\n break;\n }\n default:\n value = (\n \n {\n config.components.map((component, index) => (\n \n { EditableList.getItemListValue(itemData.value[index]) }\n \n ))\n }\n \n );\n\n break;\n }\n\n return value;\n }\n\n getMainFormButtonWidth(value) {\n this.setState({\n buttonWidth: value,\n });\n }\n\n setItemEditMode(index) {\n const newValues = this.closeListItems();\n\n this.setState((previousState) => {\n const tempState = Object.assign({}, previousState);\n tempState.value = newValues;\n tempState.value[index].editMode = !tempState.value[index].editMode;\n\n return tempState;\n });\n }\n\n isInList(index, itemValue) {\n const { value } = this.state;\n let ok = false;\n\n value.forEach((item, itemIndex) => {\n if (JSON.stringify(item.value) === JSON.stringify(itemValue)) {\n if (index >= 0 && itemIndex === index) {\n ok = false;\n } else {\n ok = true;\n }\n }\n });\n\n return ok;\n }\n\n addValues(newValue) {\n const { value } = this.state;\n const { config } = this.props;\n const itemValue = {\n editMode: false,\n value: newValue,\n };\n const tempState = {\n value: value.slice(0),\n };\n\n if (config.children) {\n itemValue.children = [];\n }\n\n tempState.value.push(itemValue);\n\n return tempState;\n }\n\n removeListItem(index) {\n let removedItem;\n this.setState((previousState) => {\n const valueArr = previousState.value.slice(0);\n removedItem = valueArr.splice(index, 1);\n\n return {\n value: valueArr,\n };\n }, () => {\n this.triggerOnChange(index, removedItem, null);\n });\n }\n\n handleFormSubmit(value) {\n const tempState = this.addValues(value);\n this.setState(previousState => Object.assign({}, previousState, tempState), () => {\n this.triggerOnChange(tempState.value.length - 1, null, value);\n });\n }\n\n handleItemUpdate(index, value) {\n let prevValue;\n this.setState((previousState) => {\n const tempState = Object.assign({}, previousState);\n prevValue = fromJS(tempState.value[index].value).toJS();\n tempState.value[index].value = value;\n tempState.value[index].editMode = false;\n\n return tempState;\n }, () => {\n this.triggerOnChange(index, prevValue, value);\n });\n }\n\n handleChildrenOnChange(index, value) {\n let prevValue;\n this.setState((previousState) => {\n const tempState = Object.assign({}, previousState);\n prevValue = fromJS(tempState.value[index].children).toJS();\n tempState.value[index].children = value;\n\n return tempState;\n }, () => {\n this.triggerOnChange(index, prevValue, value);\n });\n }\n\n closeListItems() {\n const { value } = this.state;\n\n const newValues = value.map((itemValue) => {\n const tempItemValue = Object.assign({}, itemValue);\n\n if (tempItemValue.editMode) {\n tempItemValue.editMode = false;\n return tempItemValue;\n }\n\n return tempItemValue;\n });\n\n return newValues;\n }\n\n triggerOnChange(index, prevValue, nextValue) {\n const { onChange } = this.props;\n const { value } = this.state;\n\n if (onChange && typeof onChange === 'function') {\n onChange(((value.length) ? value : null), index, prevValue, nextValue);\n }\n }\n\n genListItem(itemData, index) {\n const { config, disabled } = this.props;\n const { buttonWidth, value } = this.state;\n\n const clonedComponents = fromJS(config.components).toJS();\n\n itemData.value.forEach((itemValue, itemIndex) => {\n clonedComponents[itemIndex].props.value = itemValue;\n });\n\n return (\n \n \n {\n !itemData.editMode\n ? (\n \n { this.getListItemText(itemData, index) }\n \n \n \n \n \n )\n : (\n \n \n \n \n )\n }\n \n {\n config.children\n ? (\n \n )\n : null\n }\n \n );\n }\n\n genList() {\n const { config } = this.props;\n const { buttonWidth, value } = this.state;\n\n if (!value || value.length === 0) {\n return null;\n }\n\n return (\n \n {\n config.displayType === 'table' || !config.displayType\n ? (\n \n \n {\n config.components.map((component, index) => (\n \n { component.props.label }\n \n ))\n }\n \n \n )\n : null\n }\n
      \n {\n value.map((itemData, index) => this.genListItem(itemData, index))\n }\n
    \n
    \n );\n }\n\n render() {\n const {\n addValueOnFieldChange, config, error, disabled, label,\n } = this.props;\n const appendToElement = document.querySelector(config.appendTo) || document.querySelector('body');\n\n return (\n
    \n {\n label\n ? \n : null\n }\n \n {\n config.appendTo\n ? ReactDOM.createPortal(\n this.genList(),\n appendToElement,\n )\n : this.genList()\n }\n
    \n );\n }\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport Button from '../../../components/Button';\n\nconst Header = ({\n label, addButtonName, onAddRow, disabled, readOnly,\n}) => (\n
    \n {\n label\n ? \n : null\n }\n {!disabled && !readOnly && (\n \n {addButtonName || 'Add'}\n \n )}\n
    \n);\n\nHeader.propTypes = {\n disabled: PropTypes.bool,\n readOnly: PropTypes.bool,\n onAddRow: PropTypes.func,\n addButtonName: PropTypes.string,\n label: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.element,\n PropTypes.node,\n ]),\n};\n\nexport default Header;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nconst ListHeader = ({\n fields,\n readOnly,\n}) => (\n
  • \n {\n fields.map(field => (\n
    {field?.props?.label}
    \n ))\n }\n
    Delete
    \n
  • \n);\n\nListHeader.propTypes = {\n fields: PropTypes.instanceOf(Array),\n readOnly: PropTypes.bool,\n};\n\nexport default ListHeader;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Button from '../../../components/Button';\n\nconst FieldsList = ({\n fields,\n disabled,\n readOnly,\n errors,\n components,\n onChange,\n onDelete,\n value,\n rowIndex,\n}) => (\n
  • \n {\n components.map((Component, index) => {\n let field = fields[index];\n let tempField = typeof field === 'function' ? field(rowIndex, index) : field;\n return (\n /* eslint-disable-next-line */\n
    \n \n
    \n );\n })\n }\n
    \n \n
    \n
  • \n);\n\nFieldsList.propTypes = {\n disabled: PropTypes.bool,\n readOnly: PropTypes.bool,\n rowIndex: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number,\n ]),\n fields: PropTypes.instanceOf(Array),\n errors: PropTypes.instanceOf(Array),\n components: PropTypes.instanceOf(Array),\n value: PropTypes.instanceOf(Array),\n onChange: PropTypes.func,\n onDelete: PropTypes.func,\n};\n\nexport default FieldsList;\n","const validateValues = (fields, rowValues) => (rowValues || [[undefined, undefined]])?.map(\n colValue => colValue?.map(\n (value, index) => fields?.[index]?.props?.validate\n && fields[index].props.validate(value),\n ),\n);\n\nexport default validateValues;\n","import React, { useCallback, useState } from 'react';\n\nconst withValidation = Component => ({\n onChange,\n validate,\n error,\n ...rest\n}) => {\n const [internalError, setInternalError] = useState(null);\n const onFieldChange = useCallback((event) => {\n /* eslint-disable-next-line */\n const value = event?.target\n ? ['radio', 'checkbox'].includes(event.target.type)\n ? event.target.checked\n : event?.target.value\n : event;\n\n let isValid = true;\n if (validate && typeof validate === 'function') {\n const errorMsg = validate(value);\n isValid = !errorMsg;\n setInternalError(errorMsg);\n }\n\n onChange(value, isValid);\n }, [validate, onChange]);\n\n return ;\n};\n\nexport default withValidation;\n","import React, { useMemo, useState } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Header from './Header';\nimport ListHeader from './ListHeader';\nimport FieldsList from './FieldsList';\nimport validateValues from './validate-values';\nimport withValidation from './with-validation';\n\nlet id = 1;\n/* eslint-disable-next-line */\nconst getUID = prefix => `${prefix}-${id++}`;\n\n/**\n * Editable list is a component, that lists rows of form elements (can have n elements on a row),\n * and stores the values of all the rows in an Array list\n */\nconst EditableList2 = ({\n addButtonName,\n disabled,\n readOnly,\n fields,\n label,\n error,\n value = [],\n onChange = () => {},\n hideOnEmpty = true,\n wrapperClassName = '',\n}) => {\n const [internalErrors, setInteranlErrors] = useState(null);\n\n const updateRowValue = (rowIndex, fieldIndex, componentValue, isValid) => {\n const tempValueArr = !value ? [] : [...value];\n\n if (!value) {\n tempValueArr[rowIndex] = [...new Array(fields.length)];\n tempValueArr[rowIndex][fieldIndex] = componentValue;\n } else {\n const tempValue = [...tempValueArr[rowIndex]];\n tempValue[fieldIndex] = componentValue;\n tempValueArr[rowIndex] = tempValue;\n tempValueArr[rowIndex].id = value[rowIndex].id;\n }\n\n if (internalErrors?.[rowIndex]?.[fieldIndex] && isValid) {\n const tempErrors = [...internalErrors];\n const tempFieldError = [...tempErrors[rowIndex]];\n tempFieldError[fieldIndex] = null;\n tempErrors[rowIndex] = tempFieldError;\n setInteranlErrors(tempErrors);\n }\n onChange(tempValueArr);\n };\n\n const hasErrors = errors => Boolean(errors?.flat()?.filter(Boolean).length);\n\n const Components = useMemo(\n () => fields.map(field => {\n let tempField = typeof field === 'function' ? field() : field;\n\n return withValidation(tempField?.component || <>)\n }),\n [],\n );\n\n const onAddRow = () => {\n const errors = validateValues(fields, value);\n\n if (hasErrors(errors)) {\n setInteranlErrors(errors);\n return;\n }\n\n const newValue = [...new Array(fields.length)];\n newValue.id = getUID('row');\n\n onChange([\n ...value && value,\n newValue,\n ]);\n };\n\n const deleteRow = (index) => {\n if (!value) {\n return;\n }\n const tempValue = [...value];\n tempValue.splice(index, 1);\n onChange(tempValue);\n };\n\n return (\n
    \n \n {value?.length || !hideOnEmpty ? (\n
      \n {(value || [[]]).map((v, i) => (\n <>\n \n \n ))}\n \n
    \n ) : null}\n {error && error !== 'true' && error !== 'false' ? (\n

    {error}

    \n ) : null}\n
    \n );\n};\n\nEditableList2.propTypes = {\n /** Sets Editable list in edit mode.\n * If enabled all fields are disabled, the add button is hidden and delete button is disabled\n * */\n disabled: PropTypes.bool,\n /** Sets Editable list in read only mode.\n * If enabled all fields are displaying just the value,\n * the add button is hidden and delete button is disabled\n */\n readOnly: PropTypes.bool,\n /** Name of the Add button. By default has 'Add value' */\n addButtonName: PropTypes.string,\n /** Label of Editable list, is displayed above the list and inline with the Add button */\n label: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.element,\n PropTypes.node,\n ]),\n /** Array of form elements that you want the list to have\n * Each field is an object points to the Form element component that you want to use,\n * the props you want to apply on it,\n * and the size (as in width, it's like columns system, between 1 and 12)\n * Example:\n * ...\n * fields={[\n {\n component: Input2,\n styles: {\n width: \"200px\",\n },\n size: 4,\n props: {\n name: 'input',\n label: 'Claim name',\n theme: 'default rounded-corners',\n placeholder: 'Enter claim name',\n validate: formikRequired('This field is required')\n }\n },\n {\n component: Combobox2,\n size: 8,\n props: comboboxProps\n }\n ]}\n */\n fields: PropTypes.instanceOf(Array),\n /** onChange function is called everytime the value of editable list changes */\n onChange: PropTypes.func,\n /** value of editable list, wich is an Array (List of row values)\n * of Arrays (List of column values,\n * each column will have the value format depending on the component type)\n */\n value: PropTypes.oneOfType([\n PropTypes.instanceOf(Object),\n PropTypes.instanceOf(Array),\n ]),\n error: PropTypes.string,\n hideOnEmpty: PropTypes.bool,\n wrapperClassName: PropTypes.string,\n};\n\nexport default EditableList2;\n","import React, { Component, Fragment, createRef } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Icon from '../../../components/Icon';\n\nexport default class FileInput extends Component {\n static propTypes = {\n accept: PropTypes.string,\n disabled: PropTypes.bool,\n id: PropTypes.string,\n error: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.bool,\n ]),\n label: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.func,\n PropTypes.string,\n ]),\n labelwidth: PropTypes.string,\n name: PropTypes.string,\n note: PropTypes.string,\n onChange: PropTypes.func,\n placeholder: PropTypes.string,\n theme: PropTypes.string,\n value: PropTypes.instanceOf(Object),\n wrapperClassName: PropTypes.string,\n }\n\n constructor(props) {\n super(props);\n\n this.handleOnChange = this.handleOnChange.bind(this);\n this.clearValue = this.clearValue.bind(this);\n this.fileInputRef = createRef();\n }\n\n getCssClasses() {\n const {\n error, theme, labelwidth, wrapperClassName = '',\n } = this.props;\n const cssClasses = [wrapperClassName, 'tyk-form-group'];\n const themes = theme ? theme.split(' ') : [];\n\n if (themes.length) {\n themes.forEach((iTheme) => {\n cssClasses.push(`tyk-form-group--${iTheme}`);\n });\n }\n\n if (labelwidth) {\n cssClasses.push('tyk-form-group--label-has-width');\n }\n\n if (error) {\n cssClasses.push('has-error');\n }\n\n return cssClasses.join(' ');\n }\n\n getLabelStyles() {\n const { labelwidth } = this.props;\n const styles = {};\n\n if (labelwidth) {\n styles.flexBasis = labelwidth;\n }\n\n return styles;\n }\n\n getNonLabelWidth() {\n const { labelwidth } = this.props;\n const styles = {};\n\n if (labelwidth) {\n styles.flexBasis = `calc(100% - ${labelwidth} - 20px)`;\n }\n\n return styles;\n }\n\n getFileInputError() {\n const { error } = this.props;\n\n return (error && error !== 'true' && error !== 'false')\n ? (\n \n { error }\n

    \n )\n : null;\n }\n\n getFileInputComponent() {\n const {\n accept, value: omitValue, onChange, ...rest\n } = this.props;\n\n return (\n \n \n {\n this.fileInputRef.current && this.fileInputRef.current.files.length > 0\n ? (\n \n \n \n )\n : null\n }\n \n );\n }\n\n clearValue() {\n const { onChange } = this.props;\n this.fileInputRef.current.value = '';\n onChange('');\n }\n\n handleOnChange(e) {\n const { onChange } = this.props;\n\n onChange(e.target.files);\n }\n\n // eslint-disable-next-line class-methods-use-this\n reset() {}\n\n render() {\n const {\n id,\n label,\n note,\n } = this.props;\n\n return (\n \n
    \n {\n label\n ? \n : null\n }\n
    \n { this.getFileInputComponent() }\n {\n note\n ?

    { note }

    \n : null\n }\n
    \n { this.getFileInputError() }\n
    \n
    \n );\n }\n}\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\nexport default class Input extends Component {\n static propTypes = {\n disabled: PropTypes.bool,\n readOnly: PropTypes.bool,\n id: PropTypes.string,\n isfield: PropTypes.bool,\n error: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.bool,\n ]),\n inputgroupaddonleft: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]),\n inputgroupaddonright: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]),\n label: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.element,\n PropTypes.node,\n ]),\n labelwidth: PropTypes.string,\n name: PropTypes.string,\n note: PropTypes.string,\n onChange: PropTypes.func,\n placeholder: PropTypes.string,\n theme: PropTypes.string,\n value: PropTypes.oneOfType([\n PropTypes.number,\n PropTypes.string,\n ]),\n }\n\n static getAddon(content) {\n return (\n
    \n { content }\n
    \n );\n }\n\n constructor(props) {\n super(props);\n const {\n value,\n } = this.props;\n\n this.state = {\n initValue: value,\n stateValue: value,\n };\n\n this.handleOnChange = this.handleOnChange.bind(this);\n }\n\n componentDidUpdate(prevProps) {\n const {\n isfield,\n value,\n onChange,\n } = this.props;\n\n if (!isfield && prevProps.value !== value) {\n /* eslint-disable react/no-did-update-set-state */\n this.setState({\n stateValue: value,\n }, () => {\n if (onChange) {\n onChange(value);\n }\n });\n }\n }\n\n getLabelStyles() {\n const { labelwidth } = this.props;\n const styles = {};\n\n if (labelwidth) {\n styles.flexBasis = labelwidth;\n }\n\n return styles;\n }\n\n getNonLabelWidth() {\n const { labelwidth } = this.props;\n const styles = {};\n\n if (labelwidth) {\n styles.flexBasis = `calc(100% - ${labelwidth} - 20px)`;\n }\n\n return styles;\n }\n\n getInputError() {\n const { error } = this.props;\n\n return (error && error !== 'true' && error !== 'false')\n ? (\n \n { error }\n

    \n )\n : null;\n }\n\n getCssClasses() {\n const {\n error,\n theme,\n labelwidth,\n inputgroupaddonleft,\n inputgroupaddonright,\n } = this.props;\n const cssClasses = ['tyk-form-group'];\n const themes = theme ? theme.split(' ') : [];\n\n if (themes.length) {\n themes.forEach((iTheme) => {\n cssClasses.push(`tyk-form-group--${iTheme}`);\n });\n }\n\n if (inputgroupaddonleft) {\n cssClasses.push('tyk-form-group--addon-left');\n }\n\n if (inputgroupaddonright) {\n cssClasses.push('tyk-form-group--addon-right');\n }\n\n if (labelwidth) {\n cssClasses.push('tyk-form-group--label-has-width');\n }\n\n if (error) {\n cssClasses.push('has-error');\n }\n\n return cssClasses.join(' ');\n }\n\n getInputGroupAddon() {\n const {\n inputgroupaddonleft,\n inputgroupaddonright,\n } = this.props;\n\n return (\n
    \n {\n inputgroupaddonleft\n ? Input.getAddon(inputgroupaddonleft)\n : null\n }\n { this.getInputComponent() }\n {\n inputgroupaddonright\n ? Input.getAddon(inputgroupaddonright)\n : null\n }\n
    \n );\n }\n\n getInputComponent() {\n const {\n isfield, onChange, value, ...rest\n } = this.props;\n const { stateValue } = this.state;\n return (\n \n );\n }\n\n reset() {\n const { initValue } = this.state;\n\n this.setState({\n stateValue: initValue,\n });\n }\n\n handleOnChange(e) {\n const { onChange, isfield } = this.props;\n const inputValue = e.target.value;\n\n if (!isfield) {\n this.setState({\n stateValue: inputValue,\n }, () => {\n if (onChange) {\n onChange(inputValue);\n }\n });\n } else {\n onChange(inputValue);\n }\n }\n\n render() {\n const {\n label,\n id,\n inputgroupaddonleft,\n inputgroupaddonright,\n note,\n readOnly,\n value,\n } = this.props;\n\n return (\n
    \n {\n label\n ? \n : null\n }\n {!readOnly && (\n \n {\n inputgroupaddonleft || inputgroupaddonright\n ? this.getInputGroupAddon()\n : this.getInputComponent()\n }\n {\n note\n ?

    { note }

    \n : null\n }\n { this.getInputError() }\n
    \n )}\n {\n readOnly &&
    {value || '-'}
    \n }\n \n );\n }\n}\n","import React, { useImperativeHandle, useRef, forwardRef } from 'react';\nimport PropTypes from 'prop-types';\n\nconst Input2 = forwardRef(({\n error,\n onChange,\n readOnly,\n id,\n inputgroupaddonleft,\n inputgroupaddonright,\n label,\n labelwidth,\n note,\n theme,\n value,\n wrapperClassName = '',\n ...rest\n}, ref) => {\n const inputRef = useRef();\n\n useImperativeHandle(ref, () => ({\n focus: () => {\n inputRef.current.focus();\n },\n }));\n\n const getAddon = content => (\n
    \n { content }\n
    \n );\n\n const getLabelStyles = () => ({\n ...labelwidth && {\n flexBasis: labelwidth,\n },\n });\n\n const getNonLabelWidth = () => ({\n ...labelwidth && {\n flexBasis: `calc(100% - ${labelwidth} - 20px)`,\n },\n });\n\n const getInputError = () => (\n (error && error !== 'true' && error !== 'false')\n ? (\n \n { error }\n

    \n )\n : null\n );\n\n const getCssClasses = () => {\n const cssClasses = [wrapperClassName, 'tyk-form-group'];\n const themes = theme ? theme.split(' ') : [];\n\n if (themes.length) {\n themes.forEach((iTheme) => {\n cssClasses.push(`tyk-form-group--${iTheme}`);\n });\n }\n\n if (inputgroupaddonleft) {\n cssClasses.push('tyk-form-group--addon-left');\n }\n\n if (inputgroupaddonright) {\n cssClasses.push('tyk-form-group--addon-right');\n }\n\n if (labelwidth) {\n cssClasses.push('tyk-form-group--label-has-width');\n }\n\n if (error) {\n cssClasses.push('has-error');\n }\n\n return cssClasses.join(' ');\n };\n\n const handleOnChange = (e) => {\n onChange(e, e.target.value);\n };\n\n const getInputElement = () => (\n \n );\n\n const getInputGroupAddon = () => (\n
    \n {\n inputgroupaddonleft\n ? getAddon(inputgroupaddonleft)\n : null\n }\n { getInputElement() }\n {\n inputgroupaddonright\n ? getAddon(inputgroupaddonright)\n : null\n }\n
    \n );\n\n return (\n
    \n {\n label\n ? \n : null\n }\n {!readOnly && (\n \n {\n inputgroupaddonleft || inputgroupaddonright\n ? getInputGroupAddon()\n : getInputElement()\n }\n {\n note\n ?

    { note }

    \n : null\n }\n { getInputError() }\n
    \n )}\n {\n readOnly && (\n
    \n {value || '-'}\n
    \n )\n }\n \n );\n});\n\nInput2.propTypes = {\n disabled: PropTypes.bool,\n readOnly: PropTypes.bool,\n id: PropTypes.string,\n error: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.bool,\n ]),\n inputgroupaddonleft: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]),\n inputgroupaddonright: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]),\n label: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.element,\n PropTypes.node,\n ]),\n labelwidth: PropTypes.string,\n name: PropTypes.string,\n note: PropTypes.string,\n onChange: PropTypes.func,\n placeholder: PropTypes.string,\n theme: PropTypes.string,\n value: PropTypes.oneOfType([\n PropTypes.number,\n PropTypes.string,\n ]),\n wrapperClassName: PropTypes.string,\n};\n\nexport default Input2;\n","import { createContext } from 'react';\n\nconst MultiselectContext = createContext();\n\nexport default MultiselectContext;\n","import React, { Component, Fragment } from 'react';\nimport PropTypes from 'prop-types';\n\nimport MultiselectContext from './MultiselectContext';\nimport Button from '../../../../components/Button';\nimport Collapsible from '../../../../components/Collapsible';\nimport Loader from '../../../../components/Loader';\n\nconst getItemContent = (context, item) => (\n context.detailsDisplayTemplate\n ? context.detailsDisplayTemplate(item)\n : JSON.stringify(item.details)\n);\n\nconst getItemLoader = (context, item) => {\n const { opened } = context;\n\n return opened[item.id]\n ? \n : null;\n};\n\nclass MultiselectItem extends Component {\n static propTypes = {\n item: PropTypes.instanceOf(Object),\n itemType: PropTypes.string,\n searchValue: PropTypes.string,\n onChange: PropTypes.func,\n };\n\n isInSearchValue(fieldsToSearchOn) {\n const { searchValue, item } = this.props;\n\n if (fieldsToSearchOn && fieldsToSearchOn.length > 0) {\n let fields = fieldsToSearchOn.slice(0);\n\n fields = fields.filter(key => item[key] && item[key].search(searchValue) > -1);\n\n return fields.length > 0;\n }\n\n return JSON.stringify(item).search(searchValue) > -1;\n }\n\n render() {\n const {\n item,\n itemType,\n onChange,\n } = this.props;\n\n return (\n \n \n {\n context => (\n this.isInSearchValue(context.fieldsToSearchOn)\n ? (\n
  • \n
    \n \n {\n context.itemDisplayTemplate\n ? context.itemDisplayTemplate(item)\n : JSON.stringify(item)\n }\n \n \n \n \n \n
    \n {\n item.details\n ? (\n \n {getItemContent(context, item)}\n \n )\n : getItemLoader(context, item)\n }\n
  • \n )\n : null\n )\n }\n
    \n
    \n );\n }\n}\n\nexport default MultiselectItem;\n","import React, { Component, createRef } from 'react';\nimport PropTypes from 'prop-types';\nimport { fromJS } from 'immutable';\n\nimport Input from '../../Input';\nimport Icon from '../../../../components/Icon';\nimport Message from '../../../../components/Message';\nimport InfiniteScroller from '../../../../components/InfiniteScroller';\nimport MultiselectItem from './MultiselectItem';\n\nclass MultiselectPanel extends Component {\n static propTypes = {\n customSearch: PropTypes.bool,\n onCustomSearch: PropTypes.func,\n panelType: PropTypes.string,\n onChange: PropTypes.func,\n items: PropTypes.instanceOf(Array),\n itemsPageNumber: PropTypes.number,\n itemsNrPages: PropTypes.number,\n inputPlaceholder: PropTypes.string,\n loadMoreItems: PropTypes.func,\n noItemsMessage: PropTypes.string,\n serverLoad: PropTypes.bool,\n };\n\n state = {\n searchValue: '',\n };\n\n constructor(props) {\n super(props);\n\n this.searchOnChange = this.searchOnChange.bind(this);\n this.itemChanged = this.itemChanged.bind(this);\n this.itemIndex = 0;\n this.itemsListRef = createRef();\n }\n\n getItemIndex() {\n this.itemIndex += 1;\n\n return this.itemIndex;\n }\n\n getItemsList() {\n const {\n itemsPageNumber,\n itemsNrPages,\n loadMoreItems,\n serverLoad,\n } = this.props;\n\n return (\n serverLoad\n ? (\n itemsPageNumber}\n loadMore={loadMoreItems}\n pageNumber={itemsPageNumber}\n >\n { this.renderListItems() }\n \n )\n : this.renderListItems()\n );\n }\n\n searchOnChange(value) {\n const { onCustomSearch } = this.props;\n\n if (!onCustomSearch) {\n this.setState({\n searchValue: value,\n });\n } else {\n onCustomSearch(value);\n }\n }\n\n itemChanged(item) {\n const { items, onChange } = this.props;\n\n let cloneItems = fromJS(items).toJS();\n cloneItems = cloneItems.filter(clonedItem => item.id !== clonedItem.id);\n\n onChange(cloneItems, item);\n }\n\n renderListItems() {\n const {\n customSearch, items, panelType, serverLoad,\n } = this.props;\n const { searchValue } = this.state;\n return (\n \n {\n items.map(item => (\n \n ))\n }\n \n );\n }\n\n render() {\n const {\n inputPlaceholder,\n noItemsMessage,\n items,\n } = this.props;\n const { searchValue } = this.state;\n\n return (\n
    \n \n }\n name=\"search\"\n onChange={this.searchOnChange}\n placeholder={inputPlaceholder}\n value={searchValue}\n />\n {\n items.length\n ? this.getItemsList()\n : (\n \n { noItemsMessage }\n \n )\n }\n
    \n );\n }\n}\n\nexport default MultiselectPanel;\n","import React, { Component, Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport { fromJS } from 'immutable';\n\nimport MultiselectPanel from './js/MultiselectPanel';\nimport MultiselectContext from './js/MultiselectContext';\n\nconst diffObjects = (value, items) => {\n const newItems = items.filter((item) => {\n const isCommon = value.filter(selectedItem => selectedItem.id === item.id).length > 0;\n\n return !isCommon;\n });\n\n return newItems;\n};\n\nclass Multiselect extends Component {\n static propTypes = {\n customSearch: PropTypes.func,\n disabled: PropTypes.bool,\n error: PropTypes.string,\n entityNamePlural: PropTypes.string,\n items: PropTypes.instanceOf(Array),\n itemDisplayTemplate: PropTypes.func,\n detailsDisplayTemplate: PropTypes.func,\n fieldsToSearchOn: PropTypes.instanceOf(Array),\n onChange: PropTypes.func,\n getItemDetails: PropTypes.func,\n itemsPageNumber: PropTypes.number,\n itemsNrPages: PropTypes.number,\n loadMoreItems: PropTypes.func,\n note: PropTypes.string,\n maxSelections: PropTypes.number,\n value: PropTypes.instanceOf(Array),\n wrapperClassName: PropTypes.string,\n };\n\n state = {\n opened: {},\n };\n\n constructor(props) {\n super(props);\n\n this.valueChange = this.valueChange.bind(this);\n this.itemsChange = this.itemsChange.bind(this);\n }\n\n onGetItemDetails(item) {\n const { getItemDetails } = this.props;\n\n this.setState((prevState) => {\n const tempState = Object.assign({}, prevState);\n tempState.opened[item.id] = !tempState.opened[item.id];\n\n return tempState;\n }, () => {\n if (getItemDetails) {\n getItemDetails(item);\n }\n });\n }\n\n getMultiselectError() {\n const { error } = this.props;\n\n return (error && error !== 'true' && error !== 'false')\n ? (\n \n { error }\n

    \n )\n : null;\n }\n\n getCssClasses() {\n const { error, wrapperClassName = '' } = this.props;\n const cssClasses = [wrapperClassName, 'tyk-multiselect'];\n\n if (error) {\n cssClasses.push('has-error');\n }\n\n return cssClasses.join(' ');\n }\n\n itemsChange(allItems, item) {\n const { value, onChange } = this.props;\n const valueClone = fromJS(value).toJS();\n\n valueClone.unshift(item);\n\n onChange(valueClone, item, 'added');\n }\n\n valueChange(value, item) {\n const { items, onChange } = this.props;\n const allItemsClone = fromJS(items).toJS();\n\n allItemsClone.unshift(item);\n\n onChange(value, item, 'removed');\n }\n\n render() {\n const {\n customSearch,\n entityNamePlural,\n disabled,\n itemDisplayTemplate,\n detailsDisplayTemplate,\n fieldsToSearchOn,\n items,\n itemsPageNumber,\n itemsNrPages,\n loadMoreItems,\n maxSelections,\n note,\n value,\n } = this.props;\n const { opened } = this.state;\n\n return (\n \n
    \n \n
    \n
    \n { value.length }\n {' '}\n Selected\n {' '}\n { entityNamePlural }\n
    \n
    \n Select from existing\n { entityNamePlural }\n
    \n
    \n
    \n \n \n
    \n \n
    \n
    \n {\n note\n ?

    { note }

    \n : null\n }\n
    \n { this.getMultiselectError() }\n
    \n );\n }\n}\n\nexport default Multiselect;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\n\n/**\n * Radio can be used when a user needs to select at most one value from a multiple options.\n */\nexport default class Radio extends Component {\n static propTypes = {\n /** Used to disable the element */\n disabled: PropTypes.bool,\n /** Readonly prop behaves the same as disabled on radio elements */\n readOnly: PropTypes.bool,\n /** Align radio with in same line with other elements */\n inline: PropTypes.bool,\n /** Set a theme for radio */\n theme: PropTypes.string,\n input: PropTypes.instanceOf(Object),\n /** Adds label to the radio input */\n label: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.func,\n PropTypes.string,\n ]),\n /** Set name for the radio input */\n name: PropTypes.string,\n /** If set to true removes margin by adding `no-margin` class */\n nospace: PropTypes.bool,\n /** Set initial value for the radio input */\n value: PropTypes.string,\n /** Add note at the bottom of the radio input */\n note: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.element,\n PropTypes.node,\n ]),\n wrapperClassName: PropTypes.string,\n };\n\n getCssClasses() {\n const {\n inline, nospace, theme = '', disabled, readOnly, wrapperClassName = '',\n } = this.props;\n const cssClasses = [wrapperClassName];\n\n if (inline) {\n cssClasses.push('tyk-radio--inline');\n } else {\n cssClasses.push('tyk-radio');\n }\n\n if (nospace) {\n cssClasses.push('no-margin');\n }\n\n if (theme.trim()) {\n cssClasses.push(...theme.split(' ').map(t => `tyk-radio--theme-${t}`));\n }\n\n if (readOnly || disabled) {\n cssClasses.push('tyk-radio--is-disabled');\n }\n\n return cssClasses.join(' ');\n }\n\n render() {\n const {\n input, label, note, disabled, readOnly, ...rest\n } = this.props;\n return (\n \n \n

    {note}

    \n \n );\n }\n}\n","import React, { Component, Fragment } from 'react';\nimport PropTypes from 'prop-types';\n\nexport default class Select extends Component {\n static propTypes = {\n disabled: PropTypes.bool,\n readOnly: PropTypes.bool,\n id: PropTypes.string,\n isfield: PropTypes.bool,\n error: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.bool,\n ]),\n options: PropTypes.instanceOf(Array),\n label: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.func,\n PropTypes.string,\n ]),\n labelwidth: PropTypes.string,\n name: PropTypes.string,\n note: PropTypes.string,\n onBlur: PropTypes.func,\n onChange: PropTypes.func,\n placeholder: PropTypes.string,\n theme: PropTypes.string,\n value: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.object,\n ]),\n wrapperClassName: PropTypes.string,\n }\n\n constructor(props) {\n super(props);\n const {\n value,\n } = this.props;\n\n this.state = {\n initValue: value,\n stateValue: value,\n };\n\n this.handleOnChange = this.handleOnChange.bind(this);\n this.handleOnBlur = this.handleOnBlur.bind(this);\n }\n\n componentDidUpdate(prevProps) {\n const {\n isfield,\n value,\n onChange,\n } = this.props;\n\n if (!isfield && prevProps.value !== value) {\n /* eslint-disable react/no-did-update-set-state */\n this.setState({\n stateValue: value,\n }, () => {\n if (onChange) {\n onChange(value);\n }\n });\n }\n }\n\n getSelectComponent() {\n const {\n isfield, options, onChange, onBlur, value, ...rest\n } = this.props;\n const {\n stateValue,\n } = this.state;\n\n let selectValue = '';\n\n if (isfield && value) {\n selectValue = value;\n } else if (stateValue) {\n selectValue = stateValue;\n }\n\n return (\n \n {\n options.map(option => )\n }\n \n );\n }\n\n getSelectError() {\n const { error } = this.props;\n\n return (error && error !== 'true' && error !== 'false')\n ? (\n \n { error }\n

    \n )\n : null;\n }\n\n getCssClasses() {\n const {\n error, labelwidth, theme, wrapperClassName = '',\n } = this.props;\n const cssClasses = [wrapperClassName, 'tyk-form-group'];\n const themes = theme ? theme.split(' ') : [];\n\n if (themes.length) {\n themes.forEach((iTheme) => {\n cssClasses.push(`tyk-form-group--${iTheme}`);\n });\n }\n\n if (labelwidth) {\n cssClasses.push('tyk-form-group--label-has-width');\n }\n\n if (error) {\n cssClasses.push('has-error');\n }\n\n return cssClasses.join(' ');\n }\n\n getLabelStyles() {\n const { labelwidth } = this.props;\n const styles = {};\n\n if (labelwidth) {\n styles.flexBasis = labelwidth;\n }\n\n return styles;\n }\n\n getNonLabelWidth() {\n const { labelwidth } = this.props;\n const styles = {};\n\n if (labelwidth) {\n styles.flexBasis = `calc(100% - ${labelwidth} - 20px)`;\n }\n\n return styles;\n }\n\n handleOnBlur() {\n const { value, onBlur } = this.props;\n\n if (onBlur) {\n onBlur(value);\n }\n }\n\n handleOnChange(e) {\n const {\n onChange,\n isfield,\n options,\n } = this.props;\n let selectedValue = null;\n\n selectedValue = options.filter(option => option.id === e.target.value);\n [selectedValue] = selectedValue;\n\n if (!isfield) {\n this.setState({\n stateValue: selectedValue,\n }, () => {\n onChange(selectedValue.id ? selectedValue : null);\n });\n } else {\n onChange(selectedValue.id ? selectedValue : null);\n }\n }\n\n reset() {\n const { initValue } = this.state;\n\n this.setState({\n stateValue: initValue,\n });\n }\n\n render() {\n const {\n label,\n id,\n note,\n readOnly,\n value,\n } = this.props;\n\n return (\n \n
    \n {\n label\n ? \n : null\n }\n {!readOnly && (\n \n {\n this.getSelectComponent()\n }\n {\n note\n ?

    { note }

    \n : null\n }\n { this.getSelectError() }\n
    \n )}\n {readOnly &&
    {value || '-'}
    }\n \n
    \n );\n }\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport Message from '../../../components/Message';\nimport List from '../../../components/List';\nimport Icon from '../../../components/Icon';\n\nfunction SelectableList(props) {\n const {\n checkboxalticon,\n items,\n itemTemplate,\n value,\n noItemsMessage = 'No items in the list',\n onChange,\n theme,\n primaryKey,\n wrapperClassName = '',\n } = props;\n\n const handleOnSelect = (event) => {\n const newSelectedItems = structuredClone(value);\n const elemPosition = newSelectedItems.findIndex(\n (id) => JSON.stringify(id) === JSON.stringify(\n Array.isArray(id)\n ? event.target.value.split(',')\n : event.target.value,\n ),\n );\n\n if (event.target.checked && elemPosition === -1) {\n const tempValue = event.target.value.split(',');\n const finalValue = tempValue.length > 1 ? tempValue : event.target.value;\n\n newSelectedItems.push(finalValue);\n } else if (!event.target.checked && elemPosition > -1) {\n newSelectedItems.splice(elemPosition, 1);\n }\n\n if (onChange) {\n onChange(newSelectedItems);\n }\n };\n\n const getListItemCssClassName = (isActive) => {\n const cssClasses = [];\n\n if (checkboxalticon) {\n cssClasses.push('tyk-selectable-list__item--with-icon');\n }\n\n if (isActive) {\n cssClasses.push('tyk-selectable-list__item--active');\n }\n\n return cssClasses.join(' ');\n };\n\n const isChecked = (inputValue, itemValue) => Boolean(\n inputValue.find((tvalue) => JSON.stringify(itemValue) === JSON.stringify(tvalue)),\n );\n\n return (\n \n {\n !items.length\n ? (\n
  • \n \n {noItemsMessage}\n \n
  • \n )\n : items.map((item, index) => (\n \n \n \n ))\n }\n
    \n );\n}\n\nSelectableList.propTypes = {\n items: PropTypes.instanceOf(Array),\n itemTemplate: PropTypes.oneOfType([\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n PropTypes.func,\n ]),\n value: PropTypes.instanceOf(Array),\n onChange: PropTypes.func,\n primaryKey: PropTypes.string,\n noItemsMessage: PropTypes.string,\n checkboxalticon: PropTypes.oneOfType([\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n theme: PropTypes.string,\n wrapperClassName: PropTypes.string,\n};\n\nSelectableList.defaultProps = {\n items: [],\n primaryKey: 'id',\n value: [],\n};\n\nexport default SelectableList;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nfunction Textarea({\n id,\n input,\n label,\n note,\n error,\n theme,\n labelwidth,\n value,\n readOnly,\n wrapperClassName,\n ...rest\n}) {\n const classes = [\n 'tyk-form-group',\n wrapperClassName,\n ...(theme ? theme.split(' ').map((t) => `tyk-form-group--${t}`) : []),\n labelwidth && 'tyk-form-group--label-has-width',\n error && 'has-error',\n ].filter(Boolean).join(' ');\n\n const getLabelStyles = () => {\n if (labelwidth) return { flexBasis: labelwidth };\n return {};\n };\n\n const getNonLabelWidth = () => {\n if (labelwidth) return { flexBasis: `calc(100% - ${labelwidth} - 20px)` };\n return {};\n };\n\n function getTextareaError() {\n return (error && error !== 'true' && error !== 'false')\n ? (\n

    \n { error }\n

    \n )\n : null;\n }\n\n return (\n
    \n {\n label\n ? \n : null\n }\n {!readOnly && (\n \n \n { value }\n \n {\n note\n ?

    { note }

    \n : null\n }\n {getTextareaError()}\n
    \n )}\n {readOnly &&
    {value || '-'}
    }\n \n );\n}\n\nTextarea.propTypes = {\n /** Disable the component */\n disabled: PropTypes.bool,\n /** Displays only the text value of the component, or \"-\" if no value is set */\n readOnly: PropTypes.bool,\n input: PropTypes.instanceOf(Object),\n /** Set an error message for the component and the component is rendered in the error state */\n error: PropTypes.string,\n /** Adds a label to the component */\n label: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.func,\n PropTypes.string,\n ]),\n /** Sets the width of the label */\n labelwidth: PropTypes.string,\n /** Set a name for the component */\n name: PropTypes.string,\n /** Adds additional information under the component */\n note: PropTypes.string,\n /** Callback function executed on value change */\n onChange: PropTypes.func,\n id: PropTypes.string,\n /** Set a theme for the component */\n theme: PropTypes.string,\n /** Set the value of the component */\n value: PropTypes.string,\n /** CSS classes added to the wrapper of the component */\n wrapperClassName: PropTypes.string,\n};\n\nexport default Textarea;\n","import { createContext } from 'react';\n\nconst ToggleContext = createContext();\n\nexport default ToggleContext;\n","import React, { Component, createRef } from 'react';\nimport PropTypes from 'prop-types';\n\nclass ToggleItem extends Component {\n static getNotchCssClasses(context) {\n return ['tyk-toggle__item-notch', `tyk-toggle__item-notch--${context.type}`].join(' ');\n }\n\n constructor(props) {\n super(props);\n\n this.itemRef = createRef();\n }\n\n componentDidMount() {\n const { context, value } = this.props;\n\n if (context.value === value) {\n context.saveSelectedRef(this.itemRef);\n }\n }\n\n componentDidUpdate(prevProps) {\n const { context, value } = this.props;\n\n if (prevProps.context.value !== context.value && context.value === value) {\n context.saveSelectedRef(this.itemRef);\n }\n }\n\n onChange(event) {\n const { context, value } = this.props;\n const { disabled, readOnly } = context;\n\n if (disabled || readOnly) {\n return;\n }\n\n context.onItemSelected(context.type === 'single' ? !context.value : value, event);\n }\n\n render() {\n const {\n context, label, name, value,\n } = this.props;\n return (\n
  • \n \n
  • \n );\n }\n}\n\nToggleItem.propTypes = {\n context: PropTypes.instanceOf(Object),\n label: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.func,\n PropTypes.string,\n ]),\n name: PropTypes.string,\n value: PropTypes.string,\n};\n\nexport default ToggleItem;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport ToggleContext from './ToggleContext';\nimport ToggleItem from './ToggleItem';\n\nconst ToggleItemWrapper = React.forwardRef((props, ref) => (\n \n {(context) => (\n \n {props.children}\n \n )}\n \n));\n\nToggleItemWrapper.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n};\n\nexport default ToggleItemWrapper;\n","import React, {\n useCallback, useMemo, useRef, useState,\n} from 'react';\nimport PropTypes from 'prop-types';\n\nimport ToggleContext from './js/ToggleContext';\nimport ToggleItemWrapper from './js/ToggleItemWrapper';\n\nfunction Toggle({\n className,\n disabled,\n readOnly,\n size,\n theme,\n direction,\n onDark,\n wrapperClassName = '',\n onChange,\n labelwidth,\n label,\n separated,\n children,\n type,\n value,\n error,\n}) {\n const [selectedRef, setSelectedRef] = useState(null);\n const notchRef = useRef();\n const toggleRef = useRef();\n\n const classes = [\n wrapperClassName,\n className,\n 'tyk-toggle',\n `tyk-toggle--disabled-${readOnly || disabled}`,\n `tyk-toggle--${size || 'md'}`,\n `tyk-toggle--${theme}`,\n `tyk-toggle--${direction}`,\n onDark && 'tyk-toggle--on-dark',\n ].filter(Boolean).join(' ');\n\n const onItemSelected = useCallback((itemValue, event) => {\n if (!onChange) return;\n onChange(itemValue, event);\n }, [onChange]);\n\n const getLabelStyles = useCallback(() => {\n if (labelwidth) return { flexBasis: labelwidth };\n return {};\n }, [labelwidth]);\n\n const positionNotch = useCallback(() => {\n if (!selectedRef || separated) {\n return {};\n }\n\n const selectedWidth = selectedRef.current.offsetWidth;\n const selectedOffset = selectedRef.current.getBoundingClientRect().left;\n const toggleOffset = toggleRef.current.getBoundingClientRect().left;\n const left = selectedOffset - toggleOffset;\n\n return {\n left: `${left + 4}px`,\n width: `${selectedWidth - 8}px`,\n };\n }, [selectedRef, separated]);\n\n const contextValue = useMemo(() => ({\n disabled,\n readOnly,\n onItemSelected,\n saveSelectedRef: setSelectedRef,\n separated,\n type,\n value,\n }), [disabled, readOnly, onItemSelected, separated, type, value]);\n\n return (\n <>\n
    \n \n {\n label\n ? \n : null\n }\n
      \n { children }\n {\n type === 'multiple' && !separated\n ?
    • \n : null\n }\n
    \n \n
    \n {\n error && (\n

    \n { error }\n

    \n )\n }\n \n );\n}\n\nToggle.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n className: PropTypes.string,\n disabled: PropTypes.bool,\n readOnly: PropTypes.bool,\n error: PropTypes.string,\n onChange: PropTypes.func,\n label: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.func,\n PropTypes.string,\n ]),\n labelwidth: PropTypes.string,\n theme: PropTypes.string,\n type: PropTypes.string, // single || multiple\n size: PropTypes.string,\n separated: PropTypes.bool,\n direction: PropTypes.string,\n value: PropTypes.oneOfType([\n PropTypes.bool,\n PropTypes.string,\n ]),\n onDark: PropTypes.bool,\n wrapperClassName: PropTypes.string,\n};\n\nToggle.defaultProps = {\n separated: false,\n theme: 'primary',\n type: 'single',\n direction: 'row',\n};\n\nToggle.Item = ToggleItemWrapper;\n\nexport default Toggle;\n","export const stringToTokenString = (value, options) => {\n let tempStr = value;\n options.forEach((option) => {\n tempStr = tempStr.replaceAll(option.id, `__TOKEN__${option.id}__TOKEN__`);\n });\n return tempStr;\n};\n\n\nexport const setCursorPos = (ref, pos) => {\n setTimeout(() => {\n ref.current.setSelectionRange(pos, pos);\n }, 20);\n};\n","import React, { useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { stringToTokenString, setCursorPos } from './service';\n\nfunction StringInput({\n setShowOptions,\n tokenValue,\n disabled,\n placeholder,\n tokens,\n dropdownTriggerKey,\n setStringBuilderHeight,\n stringBuilderHeight,\n setTokenString,\n tokenString,\n showOptions,\n options,\n setTokenValue,\n inputRef,\n setInputInFocus,\n invalidTokenRegex,\n name,\n contextMaxLength,\n}) {\n const [isPasteEvent, setIsPasteEvent] = useState(false);\n\n useEffect(() => {\n // Set height if initial value exists\n if (tokenValue) {\n const tokenLen = tokenValue.length > 50 ? tokenValue.length / 5 : 0;\n setStringBuilderHeight(inputRef.current.scrollHeight + tokenLen);\n }\n }, []);\n\n /**\n *\n * @param {*} e : Event\n * Handle delete event (fn + delete on mac)\n */\n\n const handleDelete = (e) => {\n const { selectionEnd } = e.target;\n if (selectionEnd === tokenValue.length) {\n // - Cursor is at the end of input\n return;\n }\n\n const stringBeforeCursor = tokenValue.substring(0, selectionEnd);\n const stringAfterCursor = tokenValue.slice(selectionEnd);\n\n const tokenStringForStringAfterCursor = stringToTokenString(\n stringAfterCursor,\n options,\n );\n if (tokenStringForStringAfterCursor.startsWith('__TOKEN__')) {\n // If string before delete is a token\n const splitTokens = tokenStringForStringAfterCursor.split(/__TOKEN__(.*?)__TOKEN__/g).filter((t) => t !== '');\n const firstToken = splitTokens[0];\n const newTokenValue = `${stringBeforeCursor}${stringAfterCursor.substr(firstToken.length)}`;\n const newTokenizedString = stringToTokenString(newTokenValue, options);\n setTokenString(newTokenizedString);\n setCursorPos(inputRef, selectionEnd);\n return;\n }\n const newTokenValue = `${stringBeforeCursor}${stringAfterCursor.substr(1)}`;\n const newTokenizedString = stringToTokenString(newTokenValue, options);\n setTokenString(newTokenizedString);\n setCursorPos(inputRef, selectionEnd);\n };\n\n /**\n *\n * @param {*} e : Event\n * Handle backspace event\n * - If the last thing added by user was a token prevent default and\n * remove the entire token instead of single character, else continue with default behaviour\n * - Also handles if the string is manipulated from middle\n */\n const handleBackSpace = (e) => {\n const { selectionEnd } = e.target;\n\n // -- START :: Handle backspacing when cursor is at the end of the string\n if (selectionEnd === tokenValue.length) {\n const lastToken = tokens[tokens?.length - 2];\n const lastCharsInString = tokenValue.slice(-lastToken?.length);\n if (lastToken === lastCharsInString) {\n e.preventDefault();\n setTokenString(\n tokenString.slice(0, -`__TOKEN__${lastCharsInString}__TOKEN__`.length),\n );\n return;\n }\n if (tokenValue.endsWith(' ')) {\n const invalidToken = tokenValue.match(invalidTokenRegex);\n const newTokenValue = tokenValue.slice(0, -` ${invalidToken[invalidToken.length - 1]} `.length);\n const newTokenStr = stringToTokenString(newTokenValue, options);\n setTokenString(newTokenStr);\n return;\n }\n setTokenString(tokenString.slice(0, -1));\n return;\n }\n // -- END :: Handle backspacing when cursor is at the end of the string\n\n // -- START :: Handle backspacing when cursor is in between\n const stringBeforeCursor = tokenValue.substring(0, selectionEnd);\n const stringAfterCursor = tokenValue.slice(selectionEnd);\n\n const tokenStringForStringBeforeCursor = stringToTokenString(stringBeforeCursor, options);\n\n // -- IF the string before cursor is a token\n if (tokenStringForStringBeforeCursor.endsWith('__TOKEN__')) {\n e.preventDefault();\n const splitTokens = tokenStringForStringBeforeCursor.split(/__TOKEN__(.*?)__TOKEN__/g);\n const lastToken = splitTokens[splitTokens.length - 2];\n const newTokenValue = `${stringBeforeCursor.slice(0, -(lastToken.length))}${stringAfterCursor}`;\n const newTokenizedString = stringToTokenString(newTokenValue, options);\n setTokenString(newTokenizedString);\n setCursorPos(inputRef, selectionEnd - lastToken.length);\n return;\n }\n\n const invalidToken = stringBeforeCursor.match(invalidTokenRegex);\n // If Token is Invalid Token\n if (invalidToken?.[0] && invalidToken.length === 1) {\n e.preventDefault();\n const newTokenValue = `${stringBeforeCursor.replaceAll(invalidTokenRegex, '').trim()}${stringAfterCursor}`;\n const newTokenizedString = stringToTokenString(newTokenValue, options);\n setTokenString(newTokenizedString);\n setCursorPos(inputRef, selectionEnd - ` ${invalidToken[0]} `.length);\n return;\n }\n\n const newTokenValue = `${stringBeforeCursor.slice(\n 0,\n -1,\n )}${stringAfterCursor}`;\n const newTokenizedString = stringToTokenString(newTokenValue, options);\n setTokenString(newTokenizedString);\n setCursorPos(inputRef, selectionEnd - 1);\n // -- END :: Handle backspacing when cursor is in between\n };\n\n const addCharacterToTokenString = (text, selectionStart) => {\n // Cursor is at end\n if (selectionStart - 1 === tokenValue.length) {\n setTokenString(`${tokenString}${text}`);\n return;\n }\n\n // Cursor is in middle of string\n const newTokenValue = tokenValue.slice(0, selectionStart - 1)\n + text\n + tokenValue.slice(selectionStart - 1);\n\n const newTokenizedString = stringToTokenString(newTokenValue, options);\n setTokenString(newTokenizedString);\n };\n\n // -- START :: Handle highlighted text deletion / replacement\n const handleTextSelection = (e, selectedText, key) => {\n const allowedKeys = ['Delete', 'Backspace'];\n if (key.length > 1 && allowedKeys.indexOf(key) === -1) {\n return;\n }\n const { selectionEnd, selectionStart } = e.target;\n const substitute = key.length > 1 ? '' : key;\n if (selectedText.length > 1) {\n const newStr = tokenValue.substring(0, selectionStart)\n + substitute\n + tokenValue.substring(selectionEnd);\n const newTokenStr = stringToTokenString(newStr, options);\n setTokenString(newTokenStr);\n setCursorPos(inputRef, substitute.length ? selectionStart + 1 : selectionStart);\n }\n };\n // -- END :: Handle highlighted text deletion / replacement\n\n const handleKeyDown = (e) => {\n const { key } = e;\n const { selectionEnd, selectionStart, value } = e.target;\n const selectedText = value.substring(selectionStart, selectionEnd);\n\n if (key === dropdownTriggerKey && !showOptions) {\n e.preventDefault();\n setShowOptions(true);\n return;\n }\n if (key === 'Enter') {\n e.preventDefault();\n return;\n }\n if (key === 'Backspace') {\n e.preventDefault();\n handleBackSpace(e);\n }\n if (key === 'Delete') {\n e.preventDefault();\n handleDelete(e);\n }\n if (e.metaKey && key === 'x') {\n setTokenString('');\n }\n if (selectedText) {\n e.preventDefault();\n handleTextSelection(e, selectedText, key);\n }\n };\n\n const handleOnChange = (e) => {\n const { target } = e;\n const { selectionStart, value } = target;\n\n if (showOptions) {\n setShowOptions(false);\n }\n setTokenValue(value);\n if (value && !isPasteEvent) {\n const text = value.charAt(selectionStart - 1);\n addCharacterToTokenString(text, selectionStart);\n }\n setIsPasteEvent(false);\n };\n\n const handlePasteEvent = (e) => {\n e.preventDefault();\n const { clipboardData } = e;\n const { selectionStart, selectionEnd } = e.target;\n setIsPasteEvent(true);\n let pasteString = clipboardData.getData('text/plain');\n if (selectionStart !== selectionEnd) {\n pasteString = tokenValue.slice(0, selectionStart)\n + pasteString\n + tokenValue.slice(selectionEnd, tokenValue.length);\n const newTokenString = stringToTokenString(pasteString, options);\n setTokenString(newTokenString);\n return;\n }\n const newTokenString = stringToTokenString(pasteString, options);\n addCharacterToTokenString(newTokenString, selectionStart);\n };\n\n const handleOnFocus = () => {\n setInputInFocus(true);\n };\n\n return (\n handleOnChange(e)}\n onKeyDown={(e) => handleKeyDown(e)}\n placeholder={placeholder}\n name={name}\n ref={inputRef}\n style={{ height: `${stringBuilderHeight}px` }}\n maxLength={contextMaxLength}\n onPaste={handlePasteEvent}\n onFocus={handleOnFocus}\n onBlur={() => setInputInFocus(false)}\n />\n );\n}\n\nStringInput.propTypes = {\n setShowOptions: PropTypes.func,\n tokenValue: PropTypes.string,\n disabled: PropTypes.bool,\n placeholder: PropTypes.string,\n tokenString: PropTypes.string,\n stringBuilderHeight: PropTypes.number,\n dropdownTriggerKey: PropTypes.string,\n setStringBuilderHeight: PropTypes.func,\n setTokenString: PropTypes.func,\n setTokenValue: PropTypes.func,\n setInputInFocus: PropTypes.func,\n showOptions: PropTypes.bool,\n tokens: PropTypes.arrayOf(PropTypes.string),\n options: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.string.isRequired,\n name: PropTypes.string.isRequired,\n className: PropTypes.string,\n desc: PropTypes.string,\n }),\n ),\n inputRef: PropTypes.instanceOf(Object),\n invalidTokenRegex: PropTypes.instanceOf(RegExp),\n name: PropTypes.string,\n contextMaxLength: PropTypes.number,\n};\n\nexport { StringInput };\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Tooltip from '../../../../components/Tooltip';\nimport Icon from '../../../../components/Icon';\n\n\nconst InvalidToken = (props) => {\n const { token, findInvalidTokenSubstitute } = props;\n return (\n findInvalidTokenSubstitute(token)}\n onKeyDown={() => {}}\n >\n \n \n {`${token}`}\n \n \n \n \n );\n};\n\nInvalidToken.propTypes = {\n token: PropTypes.string,\n findInvalidTokenSubstitute: PropTypes.func,\n};\n\nexport default InvalidToken;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport InvalidToken from './invalid-token';\n\nexport const TokenizedString = (props) => {\n const {\n tokens,\n options,\n disabled,\n invalidTokenRegex,\n findInvalidTokenSubstitute,\n } = props;\n\n /**\n * hasDuplicates : used to avoid duplicate keys in map :\n * having duplicate tokens causes invalid unpredictable react renders.\n * eg: http://alpaha.com/{{.agruments.id}}/id={{.arguments.id}}\n * `{{.arguments.id}}` is repeated twice : maybe edge case but quite possible\n */\n\n const hasDuplicates = new Set(tokens).size !== tokens.length;\n\n const allTokens = tokens\n && tokens.map((token) => {\n if (options) {\n const matchedOption = options.find(option => option.id === token);\n // if invalid token\n if (invalidTokenRegex && !matchedOption) {\n const matchedTokens = token.replaceAll(' ', '').split(invalidTokenRegex);\n if (matchedTokens?.length > 1) {\n return (\n \n {matchedTokens.map((tkn) => {\n if (tkn.match(invalidTokenRegex)) {\n return (\n \n );\n }\n return ({`${tkn} `});\n })}\n \n );\n }\n }\n // if token matches option\n\n if (matchedOption) {\n return (\n \n {matchedOption.id}\n \n );\n }\n }\n return (\n {token}\n );\n });\n return (\n \n {allTokens}\n \n );\n};\n\nTokenizedString.propTypes = {\n tokens: PropTypes.arrayOf(PropTypes.string),\n options: PropTypes.arrayOf(PropTypes.instanceOf(Object)),\n disabled: PropTypes.bool,\n invalidTokenRegex: PropTypes.instanceOf(RegExp),\n findInvalidTokenSubstitute: PropTypes.func,\n};\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\n\nimport FloatingContainer from '../../../../components/FloatingContainer';\n\nexport const OptionsList = ({\n options,\n showOptions,\n handleOptionSelection,\n containerRef,\n getThemeClasses,\n setShowOptions,\n allowSearch,\n initialSearchValue,\n}) => {\n const [filterValue, setFilterValue] = useState(initialSearchValue);\n const [filteredOptions, setFilteredOptions] = useState(options);\n\n useEffect(() => {\n setFilterValue(initialSearchValue);\n }, [initialSearchValue]);\n\n useEffect(() => {\n if (filterValue === '') {\n setFilteredOptions(options);\n return;\n }\n const newFilteredOptions = options.filter(\n option => option.name.toLowerCase().includes(filterValue.toLowerCase()),\n );\n setFilteredOptions(newFilteredOptions);\n }, [filterValue]);\n\n useEffect(() => {\n setFilteredOptions(options);\n }, [options]);\n\n if (!showOptions) {\n return null;\n }\n\n return (\n <>\n \n {allowSearch && (\n
    \n {\n setFilterValue(e.target.value);\n }}\n onKeyDown={(e) => {\n if (\n e.key === 'Escape'\n || e.key === 'ArrowUp'\n // || e.key === 'ArrowDown'\n || e.key === 'Enter'\n ) {\n setShowOptions(false);\n }\n }}\n />\n
    \n )}\n
      \n {filteredOptions.map(option => (\n handleOptionSelection(option)}\n >\n \n {option.name}\n \n {option.desc && (\n \n   :  \n {option.desc}\n \n )}\n \n ))}\n
    \n \n \n );\n};\n\nOptionsList.propTypes = {\n options: PropTypes.arrayOf(Object),\n showOptions: PropTypes.bool,\n handleOptionSelection: PropTypes.func,\n getThemeClasses: PropTypes.func,\n setShowOptions: PropTypes.func,\n containerRef: PropTypes.instanceOf(Object),\n allowSearch: PropTypes.bool,\n initialSearchValue: PropTypes.string,\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nexport const StringBuilderFooter = (props) => {\n const {\n note, error, inputInFocus, stringBuilderHeight, dropdownTriggerKey,\n } = props;\n return (\n \n {inputInFocus && !error && (\n

    \n \n Enter\n {dropdownTriggerKey}\n to add any parameter\n \n

    \n )}\n {note &&

    {note}

    }\n {error && error !== 'true' && error !== 'false' && (\n

    {error}

    \n )}\n \n );\n};\n\nStringBuilderFooter.propTypes = {\n note: PropTypes.string,\n error: PropTypes.string,\n dropdownTriggerKey: PropTypes.string,\n inputInFocus: PropTypes.bool,\n stringBuilderHeight: PropTypes.number,\n};\n","import React, { useEffect, useState, useRef } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { usePrevious } from '../../../hooks';\n\nimport { StringInput } from './js/string-input';\nimport { TokenizedString } from './js/tokenized-string';\nimport { OptionsList } from './js/options-list';\nimport { StringBuilderFooter } from './js/string-builder-footer';\nimport { stringToTokenString, setCursorPos } from './js/service';\n\n/**\n * - String builder component used to build one single string using the given options.\n * - This component can be useful from UX perspective,\n * when user needs to build any string which might contain complex values which are error prone.\n * - `` abstracts the complex values by supplying them\n * as selectable options in more user friendly format with description for user.\n * - Wire-frames : https://miro.com/app/board/o9J_kipLWwA=/\n */\n\nfunction StringBuilder(props) {\n const {\n options,\n onChange,\n value,\n theme,\n error,\n disabled,\n readOnly,\n note,\n label,\n labelwidth,\n placeholder,\n allowSearch,\n dropdownTriggerKey,\n invalidTokenRegex,\n name,\n wrapperClassName = '',\n } = props;\n const [tokenValue, setTokenValue] = useState(value);\n const [stringBuilderHeight, setStringBuilderHeight] = useState();\n const [showOptions, setShowOptions] = useState(false);\n const [tokenString, setTokenString] = useState(stringToTokenString(value, options));\n const [contextMaxLength, setContentMaxLength] = useState(\n tokenValue.length + 5,\n );\n const [tokens, setTokens] = useState([]);\n const [prevTokenValue, setPrevTokenValue] = useState();\n const [inputInFocus, setInputInFocus] = useState(false);\n const [initialSearchValue, setInitialSearchValue] = useState('');\n const [selectedInvalidToken, setSelectedInvalidToken] = useState(null);\n\n const prevTokenString = usePrevious(tokenString);\n\n const containerRef = useRef();\n const inputRef = useRef();\n\n // Execute callback on value change\n useEffect(() => {\n if (onChange) {\n onChange(tokenValue.replaceAll(' ', ''));\n }\n }, [tokenValue]);\n\n useEffect(() => {\n const tempVal = invalidTokenRegex ? value.replaceAll(invalidTokenRegex, ' $& ') : value;\n setTokenValue(() => tempVal);\n setTokenString(() => stringToTokenString(tempVal, options));\n }, [value]);\n\n /**\n * Split string into tokens and set string value w/o __TOKEN__\n * Tokens are used to render a styled tokens using ``\n */\n useEffect(() => {\n const splitTokens = tokenString.split(/__TOKEN__(.*?)__TOKEN__/g);\n const splitTokensStr = splitTokens.join('');\n setTokens(() => splitTokens);\n setTokenValue(() => splitTokensStr);\n setPrevTokenValue(() => splitTokensStr);\n }, [tokenString]);\n\n useEffect(() => {\n // Auto Grow Input\n if (contextMaxLength - 3 < tokenValue.length) {\n const newHeight = inputRef.current.scrollHeight + 3;\n setStringBuilderHeight(() => newHeight);\n setContentMaxLength(() => contextMaxLength + 25);\n }\n }, [tokenString, tokenValue]);\n\n /**\n *\n * @param {*} option : Option object for selected option from dropdown\n * When user selects an option append and prepend `__TOKEN__` to detect the token,\n * so they can be styled or manipulated later\n */\n const handleOptionSelection = (option) => {\n let newInput = '';\n const { selectionStart } = inputRef.current;\n if (prevTokenString && prevTokenString !== value && !selectedInvalidToken) {\n /* eslint prefer-destructuring: [\"error\", {VariableDeclarator: {object: true}}] */\n newInput = prevTokenString + tokenValue.split(prevTokenValue)[1];\n }\n let tokenizedString = '';\n // Adding token in Middle\n if (selectionStart !== tokenValue.length && !selectedInvalidToken) {\n const newTokenValue = tokenValue.slice(0, selectionStart)\n + option.id\n + tokenValue.slice(selectionStart);\n tokenizedString = stringToTokenString(newTokenValue, options);\n setCursorPos(inputRef, selectionStart + option.id.length);\n } else {\n tokenizedString = `${newInput || tokenValue}__TOKEN__${\n option.id\n }__TOKEN__`;\n }\n if (selectedInvalidToken) {\n tokenizedString = tokenString.replace(\n ` ${selectedInvalidToken} `,\n `__TOKEN__${option.id}__TOKEN__`,\n );\n setSelectedInvalidToken(() => null);\n setInitialSearchValue(() => '');\n }\n setTokenString(() => tokenizedString);\n setShowOptions(() => false);\n setTimeout(() => {\n inputRef.current.focus();\n }, 20);\n };\n\n const getThemeClasses = () => {\n const themes = theme ? theme.split(' ') : [];\n return themes.map((iTheme) => `tyk-form-group--${iTheme}`);\n };\n\n const getCssClasses = () => [\n 'tyk-form-group',\n ...getThemeClasses(),\n error && 'has-error',\n disabled && 'disabled',\n ]\n .filter(Boolean)\n .join(' ');\n\n const findInvalidTokenSubstitute = (invalidToken) => {\n setSelectedInvalidToken(() => invalidToken);\n setInitialSearchValue(() => invalidToken.replace(/[^a-zA-Z ]/g, ''));\n setShowOptions(() => true);\n };\n\n return (\n
    \n
    \n {label && (\n \n )}\n {!readOnly && (\n
    \n \n \n \n \n \n
    \n
    \n )}\n {\n readOnly &&
    {value || '-'}
    \n }\n
    \n \n );\n}\n\nStringBuilder.propTypes = {\n /** Options to render in the list */\n options: PropTypes.arrayOf(\n PropTypes.shape({\n /** id is the value that will be appended to the string on selection */\n id: PropTypes.string.isRequired,\n /** name of option (view) */\n name: PropTypes.string.isRequired,\n /** to style / highlight the token */\n className: PropTypes.string,\n /** description of option */\n desc: PropTypes.string,\n }),\n ),\n /** Callback executed on change of string value */\n onChange: PropTypes.func,\n /** Initial value */\n value: PropTypes.string,\n /** Disable input */\n disabled: PropTypes.bool,\n /** Read Only prop removes the form element and displays just the value */\n readOnly: PropTypes.bool,\n /** Show error state (w/ or w/o message) */\n error: PropTypes.string,\n /** Component theme */\n theme: PropTypes.string,\n /** Footnote for component */\n note: PropTypes.string,\n /** Label for component */\n label: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.func,\n PropTypes.string,\n ]),\n /** Label Width for component */\n labelwidth: PropTypes.string,\n /** Placeholder for component */\n placeholder: PropTypes.string,\n /** Key To trigger dropdown */\n dropdownTriggerKey: PropTypes.string,\n /** Regex to detect invalid tokens in the value */\n invalidTokenRegex: PropTypes.instanceOf(RegExp),\n /** Allow users to search from options */\n allowSearch: PropTypes.bool,\n name: PropTypes.string,\n wrapperClassName: PropTypes.string,\n};\n\nStringBuilder.defaultProps = {\n onChange: null,\n value: '',\n options: [],\n theme: 'default',\n};\n\nexport default StringBuilder;\n","const config = {\n FORM_DEBOUNCE: 200,\n};\n\nexport function setConfig(key, val) {\n config[key] = val;\n}\n\nexport default config;\n","import React, { useCallback, useEffect, useState } from 'react';\n\nimport config from '../config/config';\n\nfunction getValueFromPath(obj, path) {\n // turn 'aaa.qqq[2].bbb[5][3].mmm' into ['aaa', 'qqq', '2', 'bbb', '5', '3', 'mmm']\n const indexes = path.split(/[\\][.]/).filter(Boolean);\n return indexes.reduce((acc, v) => (acc ? acc[v] : acc), obj);\n}\n\nfunction debounce(f, limit) {\n let timeoutId;\n return (...args) => {\n clearTimeout(timeoutId);\n timeoutId = setTimeout(f, limit, ...args);\n };\n}\n\n/* eslint-disable react/prop-types, react/function-component-definition */\n/**\n * A wrapper function that \"prepares\" a tyk-ui form component to be used with the formik library.\n * It handles things like setting the value of the component, change events, error state,\n * and also has a default debounce time for when the change event is triggered.\n */\nconst wrapper = (Component, options) => ({ field, form, ...properties }) => {\n const DEFAULT_DEBOUNCE_TIME_MS = typeof config.FORM_DEBOUNCE === 'number' ? config.FORM_DEBOUNCE : 200;\n const [myValue, setMyValue] = useState(field.value);\n const opts = {\n getOnChangeProps: () => ({}),\n hasIsFieldProp: false,\n ...options,\n };\n\n const executeDebounced = useCallback((() => {\n const fn = (f) => f();\n if (\n properties.debounce === false\n || (config.FORM_DEBOUNCE === false && !properties.debounce)\n ) {\n return fn;\n }\n const timeout = typeof properties.debounce === 'number'\n ? properties.debounce\n : DEFAULT_DEBOUNCE_TIME_MS;\n return debounce(fn, timeout);\n })(), []);\n\n const getValue = (v) => {\n if (v && v.target) {\n if (v.target.nodeName === 'INPUT' && (v.target.type === 'checkbox' || v.target.type === 'radio')) {\n return v.target.checked;\n }\n return v.target.value;\n }\n return v;\n };\n\n const onChange = (valueOrEvent) => {\n const value = getValue(valueOrEvent);\n const onChangeProps = opts.getOnChangeProps(value, field, form, properties);\n\n const newValue = onChangeProps.value || properties.value || value;\n executeDebounced(() => {\n if (typeof properties.onChange === 'function') {\n properties.onChange(newValue);\n }\n field.onChange({ target: { name: field.name, value: newValue, ...onChangeProps } });\n });\n setMyValue(newValue);\n };\n\n const formError = (getValueFromPath(form.touched, field.name) || Boolean(form.submitCount))\n && getValueFromPath(form.errors, field.name);\n const error = typeof formError === 'string' ? formError : '';\n\n useEffect(() => {\n setMyValue(field.value);\n }, [field.value]);\n\n // eslint-disable-next-line no-param-reassign\n if (form.status?.disabled) properties.disabled = true;\n\n const componentProps = { ...properties };\n delete componentProps.debounce;\n\n return (\n \n );\n};\n\nexport default wrapper;\n","import wrapper from '../../../utils/formik';\nimport Checkbox from '../../components/Checkbox';\n\nexport default wrapper(Checkbox, {\n getOnChangeProps: (value) => ({\n checked: value,\n }),\n});\n","import wrapper from '../../../utils/formik';\nimport CodeEditor from '../../components/CodeEditor';\n\nexport default wrapper(CodeEditor);\n","import wrapper from '../../../utils/formik';\nimport Combobox from '../../components/Combobox';\n\nexport default wrapper(Combobox);\n","import wrapper from '../../../utils/formik';\nimport Combobox2 from '../../components/Combobox2';\n\nexport default wrapper(Combobox2);\n","import wrapper from '../../../utils/formik';\nimport DatePicker from '../../components/DatePicker';\n\nexport default wrapper(DatePicker);\n","import wrapper from '../../../utils/formik';\nimport EditableList from '../../components/EditableList';\n\nexport default wrapper(EditableList, {\n getOnChangeProps: value => ({ value: value || [] }),\n});\n","import wrapper from '../../../utils/formik';\nimport EditableList2 from '../../components/EditableList2';\n\nexport default wrapper(EditableList2);\n","import wrapper from '../../../utils/formik';\nimport FileInput from '../../components/FileInput';\n\nexport default wrapper(FileInput);\n","import wrapper from '../../../utils/formik';\nimport Input from '../../components/Input';\n\nexport default wrapper(Input, { hasIsFieldProp: true });\n","import wrapper from '../../../utils/formik';\nimport Input2 from '../../components/Input2';\n\nexport default wrapper(Input2);\n","import wrapper from '../../../utils/formik';\nimport MultiSelect from '../../components/Multiselect';\n\nexport default wrapper(MultiSelect);\n","import wrapper from '../../../utils/formik';\nimport Radio from '../../components/Radio';\n\nexport default wrapper(Radio, {\n getOnChangeProps: (value, field, form, properties) => ({\n checked: value === properties.value,\n value: properties.value,\n }),\n});\n","import wrapper from '../../../utils/formik';\nimport Select from '../../components/Select';\n\nexport default wrapper(Select, { hasIsFieldProp: true });\n","import wrapper from '../../../utils/formik';\nimport SelectableList from '../../components/SelectableList';\n\nexport default wrapper(SelectableList);\n","import wrapper from '../../../utils/formik';\nimport Textarea from '../../components/Textarea';\n\nexport default wrapper(Textarea);\n","import wrapper from '../../../utils/formik';\nimport Toggle from '../../components/Toggle';\n\nexport default wrapper(Toggle);\n","import wrapper from '../../../utils/formik';\nimport StringBuilder from '../../components/StringBuilder';\n\nexport default wrapper(StringBuilder);\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { fromJS } from 'immutable';\n\nimport CodeEditor from '../../components/CodeEditor';\n\nexport default class FieldCodeEditor extends Component {\n static propTypes = {\n input: PropTypes.instanceOf(Object),\n meta: PropTypes.instanceOf(Object),\n validationmessages: PropTypes.instanceOf(Object),\n };\n\n constructor(props) {\n super(props);\n\n this.handleOnChange = this.handleOnChange.bind(this);\n }\n\n getInputError() {\n const { meta, validationmessages } = this.props;\n const { touched, error, warning } = meta;\n let message = null;\n\n if (touched && error && validationmessages[error]) {\n message = validationmessages[error];\n } else if (touched && warning) {\n message = 'warning';\n }\n\n return message;\n }\n\n handleOnChange(value) {\n const { input } = this.prop;\n const { onChange } = input;\n\n onChange(fromJS(value));\n }\n\n render() {\n const { input, ...rest } = this.props;\n\n return (\n \n );\n }\n}\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { fromJS } from 'immutable';\n\nimport Combobox from '../../components/Combobox';\n\nexport default class FieldCombobox extends Component {\n static propTypes = {\n meta: PropTypes.instanceOf(Object),\n input: PropTypes.instanceOf(Object),\n validationmessages: PropTypes.instanceOf(Object),\n }\n\n constructor(props) {\n super(props);\n\n this.handleOnChange = this.handleOnChange.bind(this);\n }\n\n getComboboxError() {\n const { meta, validationmessages } = this.props;\n const { touched, error, warning } = meta;\n let message = null;\n\n if (touched && error && validationmessages[error]) {\n message = validationmessages[error];\n } else if (touched && warning) {\n message = 'warning';\n }\n\n return message;\n }\n\n handleOnChange(value) {\n const { input } = this.props;\n const { onChange } = input;\n\n onChange(fromJS(value));\n }\n\n render() {\n const { ...props } = this.props;\n\n return (\n \n );\n }\n}\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { fromJS } from 'immutable';\n\nimport Dropdown from '../../components/Dropdown';\n\nexport default class FieldDropdown extends Component {\n static propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n input: PropTypes.instanceOf(Object),\n };\n\n constructor(props) {\n super(props);\n\n this.handleOnChange = this.handleOnChange.bind(this);\n }\n\n handleOnChange(value) {\n const { input } = this.props;\n const { onChange } = input;\n\n onChange(fromJS(value));\n }\n\n render() {\n const {\n children,\n input,\n ...rest\n } = this.props;\n\n return (\n \n {children}\n \n );\n }\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport Pagination from '../../components/Pagination';\n\nconst FieldPagination = (props) => {\n const { input, ...rest } = props;\n\n return (\n \n );\n};\n\nFieldPagination.propTypes = {\n input: PropTypes.instanceOf(Object),\n};\n\nexport default FieldPagination;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { fromJS } from 'immutable';\n\nimport Combobox2 from '../../components/Combobox2';\n\nconst FieldCombobox2 = (props) => {\n const { input, meta, validationmessages } = props;\n\n const getComboboxError = () => {\n const { touched, error, warning } = meta;\n let message = null;\n\n if (touched && error && validationmessages[error]) {\n message = validationmessages[error];\n } else if (touched && warning) {\n message = 'warning';\n }\n return message;\n };\n\n const handleOnChange = (value) => {\n const { onChange } = input;\n onChange(fromJS(value));\n };\n\n return (\n \n );\n};\n\nFieldCombobox2.propTypes = {\n meta: PropTypes.instanceOf(Object),\n input: PropTypes.instanceOf(Object),\n validationmessages: PropTypes.instanceOf(Object),\n};\n\nexport default FieldCombobox2;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { fromJS } from 'immutable';\n\nimport DatePicker from '../../components/DatePicker';\n\nconst FormDatePicker = (props) => {\n const {\n input,\n meta,\n validationmessages,\n ...rest\n } = props;\n\n const getDatePickerError = () => {\n const { touched, error } = meta;\n let message = null;\n\n if (touched && error && validationmessages[error]) {\n message = validationmessages[error];\n }\n\n return message;\n };\n\n const handleOnChange = (value) => {\n const { onChange } = input;\n\n onChange(fromJS(value));\n };\n\n return (\n \n );\n};\n\nFormDatePicker.propTypes = {\n meta: PropTypes.instanceOf(Object),\n input: PropTypes.instanceOf(Object),\n validationmessages: PropTypes.instanceOf(Object),\n};\n\nexport default FormDatePicker;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { fromJS } from 'immutable';\n\nimport EditableList from '../../components/EditableList';\n\nexport default class FieldEditableList extends Component {\n static propTypes = {\n input: PropTypes.instanceOf(Object),\n meta: PropTypes.instanceOf(Object),\n validationmessages: PropTypes.instanceOf(Object),\n };\n\n constructor(props) {\n super(props);\n\n this.handleOnChange = this.handleOnChange.bind(this);\n }\n\n getEditableListError() {\n const { meta, validationmessages } = this.props;\n const { touched, error } = meta;\n let message = null;\n\n if (touched && error && validationmessages[error]) {\n message = validationmessages[error];\n }\n\n return message;\n }\n\n handleOnChange(value) {\n const { input } = this.props;\n const { onChange } = input;\n\n onChange(fromJS(value));\n }\n\n render() {\n const { ...props } = this.props;\n\n return (\n \n );\n }\n}\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\nimport FileInput from '../../components/FileInput';\n\nexport default class FieldFileInput extends Component {\n static propTypes = {\n input: PropTypes.instanceOf(Object),\n meta: PropTypes.instanceOf(Object),\n validationmessages: PropTypes.instanceOf(Object),\n };\n\n getInputError() {\n const { meta, validationmessages } = this.props;\n const { touched, error, warning } = meta;\n let message = null;\n\n if (touched && error && validationmessages[error]) {\n message = validationmessages[error];\n } else if (touched && warning) {\n message = 'warning';\n }\n\n return message;\n }\n\n render() {\n const { input, ...rest } = this.props;\n\n return (\n \n );\n }\n}\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Input from '../../components/Input';\n\nexport default class FieldInput extends Component {\n static propTypes = {\n meta: PropTypes.instanceOf(Object),\n input: PropTypes.instanceOf(Object),\n validationmessages: PropTypes.instanceOf(Object),\n }\n\n getInputError() {\n const { meta, validationmessages } = this.props;\n const { touched, error, warning } = meta;\n let message = null;\n\n if (touched && error && validationmessages[error]) {\n message = validationmessages[error];\n } else if (touched && warning) {\n message = 'warning';\n }\n\n return message;\n }\n\n render() {\n const { input, ...rest } = this.props;\n\n return (\n \n );\n }\n}\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { fromJS } from 'immutable';\n\nimport Multiselect from '../../components/Multiselect';\n\nexport default class FieldMultiselect extends Component {\n static propTypes = {\n input: PropTypes.instanceOf(Object),\n meta: PropTypes.instanceOf(Object),\n validationmessages: PropTypes.instanceOf(Object),\n }\n\n constructor(props) {\n super(props);\n\n this.handleOnChange = this.handleOnChange.bind(this);\n }\n\n getMultiselectError() {\n const { meta, validationmessages } = this.props;\n const { touched, error, warning } = meta;\n let message = null;\n\n if (touched && error && validationmessages[error]) {\n message = validationmessages[error];\n } else if (touched && warning) {\n message = 'warning';\n }\n\n return message;\n }\n\n handleOnChange(value) {\n const { input } = this.props;\n const { onChange } = input;\n\n onChange(fromJS(value));\n }\n\n render() {\n const { ...props } = this.props;\n\n return (\n \n );\n }\n}\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { fromJS } from 'immutable';\n\nimport Select from '../../components/Select';\n\nexport default class FieldSelect extends Component {\n static propTypes = {\n input: PropTypes.instanceOf(Object),\n meta: PropTypes.instanceOf(Object),\n validationmessages: PropTypes.instanceOf(Object),\n };\n\n constructor(props) {\n super(props);\n\n this.handleEvent = this.handleEvent.bind(this);\n }\n\n getSelectError() {\n const { meta, validationmessages } = this.props;\n const { touched, error, warning } = meta;\n let message = null;\n\n if (touched && error && validationmessages[error]) {\n message = validationmessages[error];\n } else if (touched && warning) {\n message = 'warning';\n }\n\n return message;\n }\n\n handleEvent(selectValue) {\n const { input } = this.props;\n const { onChange, value } = input;\n\n onChange(fromJS(selectValue !== undefined ? selectValue : value));\n }\n\n render() {\n const { input, ...rest } = this.props;\n\n return (\n \n );\n }\n}\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { fromJS } from 'immutable';\n\nimport SelectableList from '../../components/SelectableList';\n\nexport default class FieldSelectableList extends Component {\n static propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.node,\n ]),\n onChange: PropTypes.func,\n input: PropTypes.instanceOf(Object),\n };\n\n constructor(props) {\n super(props);\n\n this.handleOnChange = this.handleOnChange.bind(this);\n }\n\n handleOnChange(value) {\n const { input } = this.props;\n\n input.onChange(fromJS(value));\n }\n\n render() {\n const { children, ...props } = this.props;\n\n return (\n \n );\n }\n}\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { fromJS } from 'immutable';\n\nimport Toggle from '../../components/Toggle';\n\nexport default class FieldToggle extends Component {\n static propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.node,\n ]),\n onChange: PropTypes.func,\n input: PropTypes.instanceOf(Object),\n };\n\n constructor(props) {\n super(props);\n\n this.handleOnChange = this.handleOnChange.bind(this);\n }\n\n handleOnChange(value) {\n const { input } = this.props;\n\n input.onChange(fromJS(value));\n }\n\n render() {\n const { children, ...props } = this.props;\n\n return (\n \n {children}\n \n );\n }\n}\n","import './index.scss';\n\n// -- Components\nexport { default as Accordion } from './components/Accordion';\nexport { default as Button } from './components/Button';\nexport { default as ButtonGroup } from './components/ButtonGroup';\nexport { default as Collapsible } from './components/Collapsible';\nexport { default as Chart } from './components/Chart';\nexport { default as CopyToClipboard } from './components/CopyToClipboard';\nexport { default as Confirm } from './components/Confirm';\nexport { default as FixedWrapper } from './components/FixedWrapper';\nexport { default as FloatingContainer } from './components/FloatingContainer';\nexport { default as Icon } from './components/Icon';\nexport { default as InfiniteScroller } from './components/InfiniteScroller';\nexport { default as InfoNote } from './components/InfoNote';\nexport { default as List } from './components/List';\nexport { default as Loader } from './components/Loader';\nexport { default as Message } from './components/Message';\nexport { default as Modal } from './components/Modal';\nexport { default as NavBar } from './components/NavBar';\nexport { default as Navigation } from './components/Navigation';\nexport { default as Panel } from './components/Panel';\nexport { default as Pill } from './components/Pill';\nexport { default as RevealPanel } from './components/RevealPanel';\nexport { default as Tabs } from './components/Tabs';\nexport { default as TextEllipsis } from './components/TextEllipsis';\nexport { default as toast } from './components/Toast';\nexport { default as Tooltip } from './components/Tooltip';\nexport { default as Table } from './components/Table';\n\n// -- Layout\nexport { default as Column } from './layout/Column';\nexport { default as Row } from './layout/Row';\n\n// -- Form Components\nexport { default as Checkbox } from './form/components/Checkbox';\nexport { default as Dropdown } from './form/components/Dropdown';\nexport { default as CodeEditor } from './form/components/CodeEditor';\nexport { default as Combobox } from './form/components/Combobox';\nexport { default as Combobox2 } from './form/components/Combobox2';\nexport { default as DatePicker } from './form/components/DatePicker';\nexport { default as EditableList } from './form/components/EditableList';\nexport { default as EditableList2 } from './form/components/EditableList2';\nexport { default as FileInput } from './form/components/FileInput';\nexport { default as Input } from './form/components/Input';\nexport { default as Input2 } from './form/components/Input2';\nexport { default as Multiselect } from './form/components/Multiselect';\nexport { default as Radio } from './form/components/Radio';\nexport { default as Select } from './form/components/Select';\nexport { default as SelectableList } from './form/components/SelectableList';\nexport { default as Textarea } from './form/components/Textarea';\nexport { default as Toggle } from './form/components/Toggle';\nexport { default as Pagination } from './form/components/Pagination';\nexport { default as StringBuilder } from './form/components/StringBuilder';\n\n// -- Formik\n\nexport { default as FormikCheckbox } from './form/formik/FormikCheckbox';\nexport { default as FormikCodeEditor } from './form/formik/FormikCodeEditor';\nexport { default as FormikCombobox } from './form/formik/FormikCombobox';\nexport { default as FormikCombobox2 } from './form/formik/FormikCombobox2';\nexport { default as FormikDatePicker } from './form/formik/FormikDatePicker';\nexport { default as FormikEditableList } from './form/formik/FormikEditableList';\nexport { default as FormikEditableList2 } from './form/formik/FormikEditableList2';\nexport { default as FormikFileInput } from './form/formik/FormikFileInput';\nexport { default as FormikInput } from './form/formik/FormikInput';\nexport { default as FormikInput2 } from './form/formik/FormikInput2';\nexport { default as FormikMultiselect } from './form/formik/FormikMultiselect';\nexport { default as FormikRadio } from './form/formik/FormikRadio';\nexport { default as FormikSelect } from './form/formik/FormikSelect';\nexport { default as FormikSelectableList } from './form/formik/FormikSelectableList';\nexport { default as FormikTextarea } from './form/formik/FormikTextarea';\nexport { default as FormikToggle } from './form/formik/FormikToggle';\nexport { default as FormikStringBuilder } from './form/formik/FormikStringBuilder';\nexport { default as FormikWrapper } from './utils/formik';\n\n// Redux - Form\n\nexport { default as FieldCodeEditor } from './form/redux-form/FieldCodeEditor';\nexport { default as FieldCombobox } from './form/redux-form/FieldCombobox';\nexport { default as FieldDropdown } from './form/redux-form/FieldDropdown';\nexport { default as FieldPagination } from './form/redux-form/FieldPagination';\nexport { default as FieldCombobox2 } from './form/redux-form/FieldCombobox2';\nexport { default as FieldDatePicker } from './form/redux-form/FieldDatePicker';\nexport { default as FieldEditableList } from './form/redux-form/FieldEditableList';\nexport { default as FieldFileInput } from './form/redux-form/FieldFileInput';\nexport { default as FieldInput } from './form/redux-form/FieldInput';\nexport { default as FieldMultiselect } from './form/redux-form/FieldMultiselect';\nexport { default as FieldSelect } from './form/redux-form/FieldSelect';\nexport { default as FieldSelectableList } from './form/redux-form/FieldSelectableList';\nexport { default as FieldToggle } from './form/redux-form/FieldToggle';\n\n// -- Utils\nexport { default as usePrevious } from './hooks/usePrevious';\nexport { default as useTimeout } from './hooks/useTimeout';\nexport { default as useInterval } from './hooks/useInterval';\nexport { default as useEventListener } from './hooks/useEventListener';\nexport { default as useComponentSize } from './hooks/useComponentSize';\nexport { setConfig } from './utils/config/config';\n"],"names":["_a","values","_b","filteredValues","newTokenValue","newTokenizedString","invalidToken","newTokenString"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"tyk-ui.js","mappings":"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EAAG,EAAG,IAAK,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,IAAK,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,IAAK,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,IAAK,GAAI,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,KAAM,GAAI,EAAG,GAAI,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,IAAK,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,KAAM,GAAI,MAAO,GAAI,KAAM,GAAI,GAAI,EAAG,IAAK,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,IAAK,EAAG,EAAG,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,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ACCG,MAAO,CAAC,eAAgB,uBAAwB,4BAChDH,MAAO,kEACR,CACCG,MAAOqyD,EACPxyD,MAAO80D,GACR,CACC30D,MAAO,uBACPH,MAAO,aACPpkB,KAAM,YACP,CACCukB,MAAO,eACPH,MAAO,KACPpkB,KAAM,SACP,CACCukB,MAAO,mBACPH,MAAO,yEACPpkB,KAAM,SACP,CACCukB,MAAO,uBACPH,MAAO,UACPpkB,KAAM,SACP,CACCukB,MAAO,eACPH,MAAO,SACPpkB,KAAM,SACP,CACCukB,MAAO,eACPH,MAAO,UACR,CACCG,MAAO,UACPH,MAAO,WAGf7mC,SAAU,CAAC,CACHgnC,MAAO,OACPH,MAAO,QACR,CACCG,MAAO,CACH,eAAgB,uBAAwB,uBAAwB,OAChE,mBAAoB,OACpB,eAAgB,OAAQ,uBAAwB,OAAQ,gBAE5DH,MAAO,IAAM80D,EAAe,UAAYA,EAAe,6DACvDl5E,KAAM,sBACP,CACCukB,MAAO,uBACPH,MAAO,cACR,CACCG,MAAO,mBACPH,MAAO,gwDACR,CACCG,MAAO,uBACPH,MAAO,+lBACR,CACCG,MAAO,mBACPH,MAAO,y2DACR,CACCG,MAAO,aACPH,MAAO80D,GACR,CACC90D,MAAO,GACPG,MAAO,QACPvkB,KAAM,aAGd,MAAS,CACL04E,EAAyBE,aAAa,aACtCS,EAAS,SACT,CACI90D,MAAO,gBACPH,MAAO,MACPpkB,KAAM,SACP,CACCukB,MAAO,OACPH,MAAO,UACPpkB,KAAM,SACP,CACCukB,MAAO,QACPH,MAAO,GACPpkB,KAAM,aAGd,MAAS,CACL,CACIukB,MAAO,0BACPH,MAAO,6CACR,CACCG,MAAO,gBACPH,MAAO,cACPpkB,KAAM,YACP,CACCukB,MAAO,UACPH,MAAO,iDACR,CACCG,MAAO,2BACPH,MAAO,iDACR,CACCG,MAAO,8BACPH,MAAO,MACR,CACCG,MAAO,2BACPH,MAAO,QACPpkB,KAAM,yBACP,CACCukB,MAAO,QACPH,MAAO,IACPpkB,KAAM,YACP,CACC8jB,aAAc,kBAGtB,sBAAyB,CACrB,CACIS,MAAO,oCACPH,MAAO,6CACR,CACCG,MAAO,2BACPH,MAAO,IACPpkB,KAAM,SACP,CACCukB,MAAO,2BACPH,MAAO,KACR,CACCG,MAAO,QACPH,MAAO,IACPpkB,KAAM,YACP,CACC8jB,aAAc,kCAGtB,kBAAqB,CACjB,CACIS,MAAO,SACPH,MAAO,SACP11C,KAAM,CACF,CACI61C,MAAO,SACPH,MAAO,MACPpkB,KAAM,OACP,CACC/kB,QAAS,aAGlB,CACCspC,MAAO,SACPH,MAAO,SACP11C,KAAM,CACF,CACI61C,MAAO,SACPH,MAAO,MACPpkB,KAAM,OACP,CACC/kB,QAAS,cAGlB,CACCspC,MAAO,oBACPH,MAAO,+BACR,CACCG,MAAO,mBACPH,MAAO,gDACR,CACCG,MAAO,mBACPH,MAAO,gDACR,CACCG,MAAO,uBACPH,MAAO,IACPpkB,KAAM,sBACP,CACCukB,MAAO,OACPH,MAAO,QACR,CACCG,MAAO,uBACPH,MAAO,KACR,CACCG,MAAO,QACPH,MAAO,GACPpkB,KAAM,aAGd,mBAAsB,CAClBq5E,EAAS,sBACT,CACI90D,MAAO,qBACPH,MAAO80D,GACR,CACC30D,MAAO,uBACPH,MAAO,KACR,CACCG,MAAO,OACPH,MAAO,QACR,CACCG,MAAO,uBACPH,MAAO,KACR,CACCG,MAAO,QACPH,MAAO,GACPpkB,KAAM,aAGd,SAAY,CACR,CACIukB,MAAO,2BACPH,MAAOg1D,GACR,CACC70D,MAAO,SACPH,MAAO,QACP0B,gBAAgB,GACjB,CACCvB,MAAO,SACPH,MAAO,MACPpkB,KAAM,YACP,CACC8jB,aAAc,WAGtB,QAAW,CACP,CACIS,MAAO,2BACPH,MAAOg1D,GACR,CACC70D,MAAO,SACPH,MAAO,QACP0B,gBAAgB,GACjB,CACCvB,MAAO,SACPH,MAAO,MACPpkB,KAAM,YACP,CACC8jB,aAAc,YAIrB1qC,GAAYA,EAAQkgG,QACrB3sG,KAAKu5C,OAAOqzD,SAASvzD,QAAQ,CACzB5B,MAAO,OAAQM,QAAS,SAAU30C,EAAK+9B,EAAOqX,GAE1C,GADAx4C,KAAKqzB,KAAc,KAAPjwB,EAAa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,OACnBv6E,KAAM,eACP,CACCukB,MAAO,SACPH,MAAOm2D,EAAY,SACnBv6E,KAAM,cACP,CACCukB,MAAO,SACPH,MAAOo2D,EAAe,OACtBx6E,KAAM,cACP,CACCukB,MAAO,SACPH,MAAOo2D,EAAe,SACtBx6E,KAAM,aACP,CACCukB,MAAO,SACPH,MAAOo2D,EAAe,OACtBx6E,KAAM,aACP,CACCukB,MAAO,SACPH,MAAOo2D,EAAe,SACtBx6E,KAAM,YACP,CACCukB,MAAO,SACPH,MAAOq2D,EAAkB,OACzBz6E,KAAM,eACP,CACCukB,MAAO,SACPH,MAAOq2D,EAAkB,SACzBz6E,KAAM,cACP,CACCukB,MAAO,SACPH,MAAOq2D,EAAkB,OACzBz6E,KAAM,cACP,CACCukB,MAAO,SACPH,MAAOq2D,EAAkB,SACzBz6E,KAAM,aACP,CACCukB,MAAO,mBACPH,MAAO,4EACR,CACCG,MAAO,cACPH,MAAO,2EACR,CACCG,MAAO,eACPH,MAAO,eACR,CACCG,MAAO,eACPH,MAAO,eACR,CACCG,MAAO,CAAC,UAAW,OAAQ,wBAC3BH,MAAO,2DACR,CACCG,MAAO,OACPH,MAAO,QACR,CACCnpC,QAAS,cAEjB,UAAa,CAAC,CACNspC,MAAO,2BACPH,MAAO02D,GACR,CACCv2D,MAAO,SACPH,MAAO,OACPpkB,KAAM,SACP,CACC8jB,aAAc,WAEtB,SAAY,CAAC,CACLS,MAAO,2BACPH,MAAO02D,GACR,CACCv2D,MAAO,SACPH,MAAO,OACPpkB,KAAM,SACP,CACC8jB,aAAc,WAEtB,SAAY,CAAC,CACLS,MAAO,2BACPH,MAAO02D,GACR,CACCv2D,MAAO,SACPH,MAAO,QACPpkB,KAAM,YACP,CACCukB,MAAO,SACPH,MAAO,MACPpkB,KAAM,SACP,CACC8jB,aAAc,WAEtB,QAAW,CAAC,CACJS,MAAO,2BACPH,MAAO02D,GACR,CACCv2D,MAAO,SACPH,MAAO,QACPpkB,KAAM,WACP,CACCukB,MAAO,SACPH,MAAO,MACPpkB,KAAM,SACP,CACC8jB,aAAc,WAEtB,aAAgB,CAAC,CACTS,MAAO,SACPH,MAAO,OACPpkB,KAAM,SACP,CACC8jB,aAAc,WAEtB,YAAe,CAAC,CACRS,MAAO,SACPH,MAAO,OACPpkB,KAAM,SACP,CACC8jB,aAAc,WAEtB,YAAe,CAAC,CACRS,MAAO,SACPH,MAAO,QACPpkB,KAAM,eACP,CACCukB,MAAO,SACPH,MAAO,MACPpkB,KAAM,SACP,CACC8jB,aAAc,WAEtB,WAAc,CAAC,CACPS,MAAO,SACPH,MAAO,QACPpkB,KAAM,cACP,CACCukB,MAAO,SACPH,MAAO,MACPpkB,KAAM,SACP,CACC8jB,aAAc,WAEtB,WAAc,CAAC,CACPS,MAAO,2BACPH,MAAO02D,GACR,CACCv2D,MAAO,SACPH,MAAO,OACPpkB,KAAM,SACP,CACCukB,MAAO,eACPH,MAAO,IACP11C,KAAM,oBACP,CACCo1C,aAAc,WAEtB,UAAa,CAAC,CACNS,MAAO,2BACPH,MAAO02D,GACR,CACCv2D,MAAO,SACPH,MAAO,OACPpkB,KAAM,SACP,CACCukB,MAAO,eACPH,MAAO,IACP11C,KAAM,oBACP,CACCo1C,aAAc,WAEtB,UAAa,CAAC,CACNS,MAAO,2BACPH,MAAO02D,GACR,CACCv2D,MAAO,SACPH,MAAO,QACPpkB,KAAM,aACP,CACCukB,MAAO,SACPH,MAAO,MACPpkB,KAAM,SACP,CACCukB,MAAO,eACPH,MAAO,IACP11C,KAAM,oBACP,CACCo1C,aAAc,WAEtB,SAAY,CAAC,CACLS,MAAO,2BACPH,MAAO02D,GACR,CACCv2D,MAAO,SACPH,MAAO,MACPpkB,KAAM,SACP,CACCukB,MAAO,eACPH,MAAO,IACP11C,KAAM,oBACP,CACCo1C,aAAc,WAEtB,YAAe,CAAC,CACRS,MAAO,SACPH,MAAO,OACPpkB,KAAM,SACP,CACCukB,MAAO,eACPH,MAAO,IACP11C,KAAM,oBACP,CACCo1C,aAAc,WAEtB,WAAc,CAAC,CACPS,MAAO,SACPH,MAAO,OACPpkB,KAAM,SACP,CACCukB,MAAO,eACPH,MAAO,IACP11C,KAAM,oBACP,CACCo1C,aAAc,WAEtB,WAAc,CAAC,CA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","sources":["webpack://@tyk-technologies/tyk-ui/./node_modules/ace-builds/src-noconflict/ace.js","webpack://@tyk-technologies/tyk-ui/./node_modules/ace-builds/src-noconflict/ext-beautify.js","webpack://@tyk-technologies/tyk-ui/./node_modules/ace-builds/src-noconflict/ext-searchbox.js","webpack://@tyk-technologies/tyk-ui/./node_modules/ace-builds/src-noconflict/mode-css.js","webpack://@tyk-technologies/tyk-ui/./node_modules/ace-builds/src-noconflict/mode-golang.js","webpack://@tyk-technologies/tyk-ui/./node_modules/ace-builds/src-noconflict/mode-javascript.js","webpack://@tyk-technologies/tyk-ui/./node_modules/ace-builds/src-noconflict/mode-json.js","webpack://@tyk-technologies/tyk-ui/./node_modules/ace-builds/src-noconflict/mode-jsx.js","webpack://@tyk-technologies/tyk-ui/./node_modules/ace-builds/src-noconflict/mode-python.js","webpack://@tyk-technologies/tyk-ui/./node_modules/ace-builds/src-noconflict/mode-xml.js","webpack://@tyk-technologies/tyk-ui/./node_modules/ace-builds/src-noconflict/theme-github.js","webpack://@tyk-technologies/tyk-ui/./node_modules/flatpickr/dist/flatpickr.min.css","webpack://@tyk-technologies/tyk-ui/./node_modules/css-loader/dist/runtime/api.js","webpack://@tyk-technologies/tyk-ui/./node_modules/css-loader/dist/runtime/sourceMaps.js","webpack://@tyk-technologies/tyk-ui/./node_modules/react-dom/client.js","webpack://@tyk-technologies/tyk-ui/./node_modules/react-fast-compare/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js","webpack://@tyk-technologies/tyk-ui/./node_modules/style-loader/dist/runtime/insertBySelector.js","webpack://@tyk-technologies/tyk-ui/./node_modules/style-loader/dist/runtime/insertStyleElement.js","webpack://@tyk-technologies/tyk-ui/./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js","webpack://@tyk-technologies/tyk-ui/./node_modules/style-loader/dist/runtime/styleDomAPI.js","webpack://@tyk-technologies/tyk-ui/./node_modules/style-loader/dist/runtime/styleTagTransform.js","webpack://@tyk-technologies/tyk-ui/external commonjs2 \"react-dom\"","webpack://@tyk-technologies/tyk-ui/webpack/bootstrap","webpack://@tyk-technologies/tyk-ui/webpack/runtime/amd define","webpack://@tyk-technologies/tyk-ui/webpack/runtime/compat get default export","webpack://@tyk-technologies/tyk-ui/webpack/runtime/define property getters","webpack://@tyk-technologies/tyk-ui/webpack/runtime/hasOwnProperty shorthand","webpack://@tyk-technologies/tyk-ui/webpack/runtime/make namespace object","webpack://@tyk-technologies/tyk-ui/webpack/runtime/node module decorator","webpack://@tyk-technologies/tyk-ui/webpack/runtime/publicPath","webpack://@tyk-technologies/tyk-ui/webpack/runtime/nonce","webpack://@tyk-technologies/tyk-ui/external commonjs2 \"react\"","webpack://@tyk-technologies/tyk-ui/external commonjs2 \"prop-types\"","webpack://@tyk-technologies/tyk-ui/./src/components/Accordion/js/AccordionContext.js","webpack://@tyk-technologies/tyk-ui/./src/components/Accordion/js/AccordionItemContext.js","webpack://@tyk-technologies/tyk-ui/./src/components/Icon/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Accordion/js/AccordionItemTrigger.js","webpack://@tyk-technologies/tyk-ui/./src/components/Accordion/js/AccordionItem.js","webpack://@tyk-technologies/tyk-ui/./src/components/Accordion/js/AccordionItemHeader.js","webpack://@tyk-technologies/tyk-ui/external commonjs2 \"react-transition-group\"","webpack://@tyk-technologies/tyk-ui/./src/hooks/usePrevious/index.js","webpack://@tyk-technologies/tyk-ui/./src/hooks/useTimeout/index.js","webpack://@tyk-technologies/tyk-ui/./src/hooks/useInterval/index.js","webpack://@tyk-technologies/tyk-ui/./src/hooks/useEventListener/index.js","webpack://@tyk-technologies/tyk-ui/./src/hooks/useComponentSize/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Collapsible/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Accordion/js/AccordionItemContent.js","webpack://@tyk-technologies/tyk-ui/./src/components/Accordion/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Button/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/ButtonGroup/index.js","webpack://@tyk-technologies/tyk-ui/external commonjs2 \"echarts\"","webpack://@tyk-technologies/tyk-ui/external commonjs2 \"immutable\"","webpack://@tyk-technologies/tyk-ui/./src/utils/debounce/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Loader/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Message/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Chart/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Toast/js/ToastMessage.js","webpack://@tyk-technologies/tyk-ui/./src/components/Toast/js/ToastContainer.js","webpack://@tyk-technologies/tyk-ui/./src/components/Toast/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/CopyToClipboard/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Modal/js/ModalFooter.js","webpack://@tyk-technologies/tyk-ui/./src/components/Modal/js/ModalBody.js","webpack://@tyk-technologies/tyk-ui/./src/components/Modal/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Confirm/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/FixedWrapper/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/InfiniteScroller/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/FloatingContainer/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/InfoNote/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/List/js/ListItem.js","webpack://@tyk-technologies/tyk-ui/./src/components/List/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/NavBar/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Navigation/js/NavigationItem.js","webpack://@tyk-technologies/tyk-ui/./src/components/Navigation/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Panel/panel-context.js","webpack://@tyk-technologies/tyk-ui/./src/components/Panel/js/PanelBody.js","webpack://@tyk-technologies/tyk-ui/./src/components/Panel/js/PanelFooter.js","webpack://@tyk-technologies/tyk-ui/./src/components/Panel/js/PanelHeader.js","webpack://@tyk-technologies/tyk-ui/./src/components/Panel/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Pill/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/RevealPanel/js/RevealPanelService.js","webpack://@tyk-technologies/tyk-ui/./src/components/RevealPanel/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Tabs/tabs-context.js","webpack://@tyk-technologies/tyk-ui/./src/components/Tabs/js/TabContext.js","webpack://@tyk-technologies/tyk-ui/./src/components/Tabs/js/TabContent.js","webpack://@tyk-technologies/tyk-ui/./src/components/Tabs/js/Tab.js","webpack://@tyk-technologies/tyk-ui/./src/components/Tabs/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Tooltip/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/TextEllipsis/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Pagination/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Table/tableContext.js","webpack://@tyk-technologies/tyk-ui/./src/components/Table/js/header-cell.js","webpack://@tyk-technologies/tyk-ui/./src/components/Table/js/header.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Checkbox/index.js","webpack://@tyk-technologies/tyk-ui/./src/components/Table/js/cell.js","webpack://@tyk-technologies/tyk-ui/./src/components/Table/js/row.js","webpack://@tyk-technologies/tyk-ui/./src/components/Table/js/body.js","webpack://@tyk-technologies/tyk-ui/./src/components/Table/index.js","webpack://@tyk-technologies/tyk-ui/./src/layout/Column/index.js","webpack://@tyk-technologies/tyk-ui/./src/layout/Row/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Dropdown/dropdown-context.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Dropdown/js/DropdownItem.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Dropdown/index.js","webpack://@tyk-technologies/tyk-ui/external commonjs2 \"react-ace\"","webpack://@tyk-technologies/tyk-ui/./src/form/components/CodeEditor/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Combobox/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Combobox2/js/Value.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Combobox2/js/List.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Combobox2/index.js","webpack://@tyk-technologies/tyk-ui/external commonjs2 \"flatpickr\"","webpack://@tyk-technologies/tyk-ui/./node_modules/flatpickr/dist/flatpickr.min.css?e03b","webpack://@tyk-technologies/tyk-ui/./src/form/components/DatePicker/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/@babel/runtime/helpers/esm/typeof.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/requiredArgs/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/isDate/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/toDate/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/toInteger/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/startOfUTCISOWeek/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/getUTCISOWeekYear/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/defaultOptions/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/startOfUTCWeek/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/getUTCWeekYear/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/addLeadingZeros/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/format/lightFormatters/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/format/formatters/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/getUTCWeek/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/startOfUTCWeekYear/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/getUTCISOWeek/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/startOfUTCISOWeekYear/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/getUTCDayOfYear/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/format/longFormatters/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/protectedTokens/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/locale/en-US/_lib/formatDistance/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/locale/_lib/buildFormatLongFn/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/locale/en-US/_lib/formatLong/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/locale/en-US/_lib/formatRelative/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/locale/_lib/buildLocalizeFn/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/locale/en-US/_lib/localize/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/locale/_lib/buildMatchFn/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/locale/en-US/_lib/match/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/locale/_lib/buildMatchPatternFn/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/locale/en-US/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/defaultLocale/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/format/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/isValid/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/_lib/getTimezoneOffsetInMilliseconds/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/subMilliseconds/index.js","webpack://@tyk-technologies/tyk-ui/./node_modules/date-fns/esm/addMilliseconds/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/EditableList/js/EditableListForm.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/EditableList/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/EditableList2/Header.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/EditableList2/ListHeader.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/EditableList2/FieldsList.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/EditableList2/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/EditableList2/with-validation.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/EditableList2/validate-values.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/FileInput/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Input/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Input2/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Multiselect/js/MultiselectContext.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Multiselect/js/MultiselectItem.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Multiselect/js/MultiselectPanel.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Multiselect/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Radio/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Select/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/SelectableList/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Textarea/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Toggle/js/ToggleContext.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Toggle/js/ToggleItem.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Toggle/js/ToggleItemWrapper.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/Toggle/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/StringBuilder/js/service.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/StringBuilder/js/string-input.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/StringBuilder/js/invalid-token.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/StringBuilder/js/tokenized-string.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/StringBuilder/js/options-list.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/StringBuilder/js/string-builder-footer.js","webpack://@tyk-technologies/tyk-ui/./src/form/components/StringBuilder/index.js","webpack://@tyk-technologies/tyk-ui/./src/utils/config/config.js","webpack://@tyk-technologies/tyk-ui/./src/utils/formik/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikCheckbox/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikCodeEditor/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikCombobox/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikCombobox2/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikDatePicker/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikEditableList/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikEditableList2/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikFileInput/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikInput/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikInput2/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikMultiselect/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikRadio/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikSelect/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikSelectableList/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikTextarea/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikToggle/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/formik/FormikStringBuilder/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/redux-form/FieldCodeEditor/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/redux-form/FieldCombobox/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/redux-form/FieldDropdown/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/redux-form/FieldPagination/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/redux-form/FieldCombobox2/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/redux-form/FieldDatePicker/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/redux-form/FieldEditableList/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/redux-form/FieldFileInput/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/redux-form/FieldInput/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/redux-form/FieldMultiselect/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/redux-form/FieldSelect/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/redux-form/FieldSelectableList/index.js","webpack://@tyk-technologies/tyk-ui/./src/form/redux-form/FieldToggle/index.js"],"sourcesContent":["/* ***** BEGIN LICENSE BLOCK *****\n * Distributed under the BSD license:\n *\n * Copyright (c) 2010, Ajax.org B.V.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright\n * notice, this list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright\n * notice, this list of conditions and the following disclaimer in the\n * documentation and/or other materials provided with the distribution.\n * * Neither the name of Ajax.org B.V. nor the\n * names of its contributors may be used to endorse or promote products\n * derived from this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\n * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY\n * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\n * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *\n * ***** END LICENSE BLOCK ***** */\n\n/**\n * Define a module along with a payload\n * @param module a name for the payload\n * @param payload a function to call with (require, exports, module) params\n */\n\n(function() {\n\nvar ACE_NAMESPACE = \"ace\";\n\nvar global = (function() { return this; })();\nif (!global && typeof window != \"undefined\") global = window; // strict mode\n\n\nif (!ACE_NAMESPACE && typeof requirejs !== \"undefined\")\n return;\n\n\nvar define = function(module, deps, payload) {\n if (typeof module !== \"string\") {\n if (define.original)\n define.original.apply(this, arguments);\n else {\n console.error(\"dropping module because define wasn\\'t a string.\");\n console.trace();\n }\n return;\n }\n if (arguments.length == 2)\n payload = deps;\n if (!define.modules[module]) {\n define.payloads[module] = payload;\n define.modules[module] = null;\n }\n};\n\ndefine.modules = {};\ndefine.payloads = {};\n\n/**\n * Get at functionality define()ed using the function above\n */\nvar _require = function(parentId, module, callback) {\n if (typeof module === \"string\") {\n var payload = lookup(parentId, module);\n if (payload != undefined) {\n callback && callback();\n return payload;\n }\n } else if (Object.prototype.toString.call(module) === \"[object Array]\") {\n var params = [];\n for (var i = 0, l = module.length; i < l; ++i) {\n var dep = lookup(parentId, module[i]);\n if (dep == undefined && require.original)\n return;\n params.push(dep);\n }\n return callback && callback.apply(null, params) || true;\n }\n};\n\nvar require = function(module, callback) {\n var packagedModule = _require(\"\", module, callback);\n if (packagedModule == undefined && require.original)\n return require.original.apply(this, arguments);\n return packagedModule;\n};\n\nvar normalizeModule = function(parentId, moduleName) {\n // normalize plugin requires\n if (moduleName.indexOf(\"!\") !== -1) {\n var chunks = moduleName.split(\"!\");\n return normalizeModule(parentId, chunks[0]) + \"!\" + normalizeModule(parentId, chunks[1]);\n }\n // normalize relative requires\n if (moduleName.charAt(0) == \".\") {\n var base = parentId.split(\"/\").slice(0, -1).join(\"/\");\n moduleName = base + \"/\" + moduleName;\n\n while(moduleName.indexOf(\".\") !== -1 && previous != moduleName) {\n var previous = moduleName;\n moduleName = moduleName.replace(/\\/\\.\\//, \"/\").replace(/[^\\/]+\\/\\.\\.\\//, \"\");\n }\n }\n return moduleName;\n};\n\n/**\n * Internal function to lookup moduleNames and resolve them by calling the\n * definition function if needed.\n */\nvar lookup = function(parentId, moduleName) {\n moduleName = normalizeModule(parentId, moduleName);\n\n var module = define.modules[moduleName];\n if (!module) {\n module = define.payloads[moduleName];\n if (typeof module === 'function') {\n var exports = {};\n var mod = {\n id: moduleName,\n uri: '',\n exports: exports,\n packaged: true\n };\n\n var req = function(module, callback) {\n return _require(moduleName, module, callback);\n };\n\n var returnValue = module(req, exports, mod);\n exports = returnValue || mod.exports;\n define.modules[moduleName] = exports;\n delete define.payloads[moduleName];\n }\n module = define.modules[moduleName] = exports || module;\n }\n return module;\n};\n\nfunction exportAce(ns) {\n var root = global;\n if (ns) {\n if (!global[ns])\n global[ns] = {};\n root = global[ns];\n }\n\n if (!root.define || !root.define.packaged) {\n define.original = root.define;\n root.define = define;\n root.define.packaged = true;\n }\n\n if (!root.require || !root.require.packaged) {\n require.original = root.require;\n root.require = require;\n root.require.packaged = true;\n }\n}\n\nexportAce(ACE_NAMESPACE);\n\n})();\n\nace.define(\"ace/lib/es6-shim\",[\"require\",\"exports\",\"module\"], function(require, exports, module){function defineProp(obj, name, val) {\n Object.defineProperty(obj, name, {\n value: val,\n enumerable: false,\n writable: true,\n configurable: true\n });\n}\nif (!String.prototype.startsWith) {\n defineProp(String.prototype, \"startsWith\", function (searchString, position) {\n position = position || 0;\n return this.lastIndexOf(searchString, position) === position;\n });\n}\nif (!String.prototype.endsWith) {\n defineProp(String.prototype, \"endsWith\", function (searchString, position) {\n var subjectString = this;\n if (position === undefined || position > subjectString.length) {\n position = subjectString.length;\n }\n position -= searchString.length;\n var lastIndex = subjectString.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n });\n}\nif (!String.prototype.repeat) {\n defineProp(String.prototype, \"repeat\", function (count) {\n var result = \"\";\n var string = this;\n while (count > 0) {\n if (count & 1)\n result += string;\n if ((count >>= 1))\n string += string;\n }\n return result;\n });\n}\nif (!String.prototype.includes) {\n defineProp(String.prototype, \"includes\", function (str, position) {\n return this.indexOf(str, position) != -1;\n });\n}\nif (!Object.assign) {\n Object.assign = function (target) {\n if (target === undefined || target === null) {\n throw new TypeError(\"Cannot convert undefined or null to object\");\n }\n var output = Object(target);\n for (var index = 1; index < arguments.length; index++) {\n var source = arguments[index];\n if (source !== undefined && source !== null) {\n Object.keys(source).forEach(function (key) {\n output[key] = source[key];\n });\n }\n }\n return output;\n };\n}\nif (!Object.values) {\n Object.values = function (o) {\n return Object.keys(o).map(function (k) {\n return o[k];\n });\n };\n}\nif (!Array.prototype.find) {\n defineProp(Array.prototype, \"find\", function (predicate) {\n var len = this.length;\n var thisArg = arguments[1];\n for (var k = 0; k < len; k++) {\n var kValue = this[k];\n if (predicate.call(thisArg, kValue, k, this)) {\n return kValue;\n }\n }\n });\n}\nif (!Array.prototype.findIndex) {\n defineProp(Array.prototype, \"findIndex\", function (predicate) {\n var len = this.length;\n var thisArg = arguments[1];\n for (var k = 0; k < len; k++) {\n var kValue = this[k];\n if (predicate.call(thisArg, kValue, k, this)) {\n return k;\n }\n }\n });\n}\nif (!Array.prototype.includes) {\n defineProp(Array.prototype, \"includes\", function (item, position) {\n return this.indexOf(item, position) != -1;\n });\n}\nif (!Array.prototype.fill) {\n defineProp(Array.prototype, \"fill\", function (value) {\n var O = this;\n var len = O.length >>> 0;\n var start = arguments[1];\n var relativeStart = start >> 0;\n var k = relativeStart < 0\n ? Math.max(len + relativeStart, 0)\n : Math.min(relativeStart, len);\n var end = arguments[2];\n var relativeEnd = end === undefined ? len : end >> 0;\n var final = relativeEnd < 0\n ? Math.max(len + relativeEnd, 0)\n : Math.min(relativeEnd, len);\n while (k < final) {\n O[k] = value;\n k++;\n }\n return O;\n });\n}\nif (!Array.of) {\n defineProp(Array, \"of\", function () {\n return Array.prototype.slice.call(arguments);\n });\n}\n\n});\n\nace.define(\"ace/lib/fixoldbrowsers\",[\"require\",\"exports\",\"module\",\"ace/lib/es6-shim\"], function(require, exports, module){// vim:set ts=4 sts=4 sw=4 st:\n\"use strict\";\nrequire(\"./es6-shim\");\n\n});\n\nace.define(\"ace/lib/deep_copy\",[\"require\",\"exports\",\"module\"], function(require, exports, module){exports.deepCopy = function deepCopy(obj) {\n if (typeof obj !== \"object\" || !obj)\n return obj;\n var copy;\n if (Array.isArray(obj)) {\n copy = [];\n for (var key = 0; key < obj.length; key++) {\n copy[key] = deepCopy(obj[key]);\n }\n return copy;\n }\n if (Object.prototype.toString.call(obj) !== \"[object Object]\")\n return obj;\n copy = {};\n for (var key in obj)\n copy[key] = deepCopy(obj[key]);\n return copy;\n};\n\n});\n\nace.define(\"ace/lib/lang\",[\"require\",\"exports\",\"module\",\"ace/lib/deep_copy\"], function(require, exports, module){\"use strict\";\nexports.last = function (a) {\n return a[a.length - 1];\n};\nexports.stringReverse = function (string) {\n return string.split(\"\").reverse().join(\"\");\n};\nexports.stringRepeat = function (string, count) {\n var result = '';\n while (count > 0) {\n if (count & 1)\n result += string;\n if (count >>= 1)\n string += string;\n }\n return result;\n};\nvar trimBeginRegexp = /^\\s\\s*/;\nvar trimEndRegexp = /\\s\\s*$/;\nexports.stringTrimLeft = function (string) {\n return string.replace(trimBeginRegexp, '');\n};\nexports.stringTrimRight = function (string) {\n return string.replace(trimEndRegexp, '');\n};\nexports.copyObject = function (obj) {\n var copy = {};\n for (var key in obj) {\n copy[key] = obj[key];\n }\n return copy;\n};\nexports.copyArray = function (array) {\n var copy = [];\n for (var i = 0, l = array.length; i < l; i++) {\n if (array[i] && typeof array[i] == \"object\")\n copy[i] = this.copyObject(array[i]);\n else\n copy[i] = array[i];\n }\n return copy;\n};\nexports.deepCopy = require(\"./deep_copy\").deepCopy;\nexports.arrayToMap = function (arr) {\n var map = {};\n for (var i = 0; i < arr.length; i++) {\n map[arr[i]] = 1;\n }\n return map;\n};\nexports.createMap = function (props) {\n var map = Object.create(null);\n for (var i in props) {\n map[i] = props[i];\n }\n return map;\n};\nexports.arrayRemove = function (array, value) {\n for (var i = 0; i <= array.length; i++) {\n if (value === array[i]) {\n array.splice(i, 1);\n }\n }\n};\nexports.escapeRegExp = function (str) {\n return str.replace(/([.*+?^${}()|[\\]\\/\\\\])/g, '\\\\$1');\n};\nexports.escapeHTML = function (str) {\n return (\"\" + str).replace(/&/g, \"&\").replace(/\"/g, \""\").replace(/'/g, \"'\").replace(/ 0xffff ? 2 : 1;\n};\n\n});\n\nace.define(\"ace/lib/useragent\",[\"require\",\"exports\",\"module\"], function(require, exports, module){\"use strict\";\nexports.OS = {\n LINUX: \"LINUX\",\n MAC: \"MAC\",\n WINDOWS: \"WINDOWS\"\n};\nexports.getOS = function () {\n if (exports.isMac) {\n return exports.OS.MAC;\n }\n else if (exports.isLinux) {\n return exports.OS.LINUX;\n }\n else {\n return exports.OS.WINDOWS;\n }\n};\nvar _navigator = typeof navigator == \"object\" ? navigator : {};\nvar os = (/mac|win|linux/i.exec(_navigator.platform) || [\"other\"])[0].toLowerCase();\nvar ua = _navigator.userAgent || \"\";\nvar appName = _navigator.appName || \"\";\nexports.isWin = (os == \"win\");\nexports.isMac = (os == \"mac\");\nexports.isLinux = (os == \"linux\");\nexports.isIE =\n (appName == \"Microsoft Internet Explorer\" || appName.indexOf(\"MSAppHost\") >= 0)\n ? parseFloat((ua.match(/(?:MSIE |Trident\\/[0-9]+[\\.0-9]+;.*rv:)([0-9]+[\\.0-9]+)/) || [])[1])\n : parseFloat((ua.match(/(?:Trident\\/[0-9]+[\\.0-9]+;.*rv:)([0-9]+[\\.0-9]+)/) || [])[1]); // for ie\nexports.isOldIE = exports.isIE && exports.isIE < 9;\nexports.isGecko = exports.isMozilla = ua.match(/ Gecko\\/\\d+/);\nexports.isOpera = typeof opera == \"object\" && Object.prototype.toString.call(window.opera) == \"[object Opera]\";\nexports.isWebKit = parseFloat(ua.split(\"WebKit/\")[1]) || undefined;\nexports.isChrome = parseFloat(ua.split(\" Chrome/\")[1]) || undefined;\nexports.isSafari = parseFloat(ua.split(\" Safari/\")[1]) && !exports.isChrome || undefined;\nexports.isEdge = parseFloat(ua.split(\" Edge/\")[1]) || undefined;\nexports.isAIR = ua.indexOf(\"AdobeAIR\") >= 0;\nexports.isAndroid = ua.indexOf(\"Android\") >= 0;\nexports.isChromeOS = ua.indexOf(\" CrOS \") >= 0;\nexports.isIOS = /iPad|iPhone|iPod/.test(ua) && !window.MSStream;\nif (exports.isIOS)\n exports.isMac = true;\nexports.isMobile = exports.isIOS || exports.isAndroid;\n\n});\n\nace.define(\"ace/lib/dom\",[\"require\",\"exports\",\"module\",\"ace/lib/useragent\"], function(require, exports, module){\"use strict\";\nvar useragent = require(\"./useragent\");\nvar XHTML_NS = \"http://www.w3.org/1999/xhtml\";\nexports.buildDom = function buildDom(arr, parent, refs) {\n if (typeof arr == \"string\" && arr) {\n var txt = document.createTextNode(arr);\n if (parent)\n parent.appendChild(txt);\n return txt;\n }\n if (!Array.isArray(arr)) {\n if (arr && arr.appendChild && parent)\n parent.appendChild(arr);\n return arr;\n }\n if (typeof arr[0] != \"string\" || !arr[0]) {\n var els = [];\n for (var i = 0; i < arr.length; i++) {\n var ch = buildDom(arr[i], parent, refs);\n ch && els.push(ch);\n }\n return els;\n }\n var el = document.createElement(arr[0]);\n var options = arr[1];\n var childIndex = 1;\n if (options && typeof options == \"object\" && !Array.isArray(options))\n childIndex = 2;\n for (var i = childIndex; i < arr.length; i++)\n buildDom(arr[i], el, refs);\n if (childIndex == 2) {\n Object.keys(options).forEach(function (n) {\n var val = options[n];\n if (n === \"class\") {\n el.className = Array.isArray(val) ? val.join(\" \") : val;\n }\n else if (typeof val == \"function\" || n == \"value\" || n[0] == \"$\") {\n el[n] = val;\n }\n else if (n === \"ref\") {\n if (refs)\n refs[val] = el;\n }\n else if (n === \"style\") {\n if (typeof val == \"string\")\n el.style.cssText = val;\n }\n else if (val != null) {\n el.setAttribute(n, val);\n }\n });\n }\n if (parent)\n parent.appendChild(el);\n return el;\n};\nexports.getDocumentHead = function (doc) {\n if (!doc)\n doc = document;\n return doc.head || doc.getElementsByTagName(\"head\")[0] || doc.documentElement;\n};\nexports.createElement = function (tag, ns) {\n return document.createElementNS ?\n document.createElementNS(ns || XHTML_NS, tag) :\n document.createElement(tag);\n};\nexports.removeChildren = function (element) {\n element.innerHTML = \"\";\n};\nexports.createTextNode = function (textContent, element) {\n var doc = element ? element.ownerDocument : document;\n return doc.createTextNode(textContent);\n};\nexports.createFragment = function (element) {\n var doc = element ? element.ownerDocument : document;\n return doc.createDocumentFragment();\n};\nexports.hasCssClass = function (el, name) {\n var classes = (el.className + \"\").split(/\\s+/g);\n return classes.indexOf(name) !== -1;\n};\nexports.addCssClass = function (el, name) {\n if (!exports.hasCssClass(el, name)) {\n el.className += \" \" + name;\n }\n};\nexports.removeCssClass = function (el, name) {\n var classes = el.className.split(/\\s+/g);\n while (true) {\n var index = classes.indexOf(name);\n if (index == -1) {\n break;\n }\n classes.splice(index, 1);\n }\n el.className = classes.join(\" \");\n};\nexports.toggleCssClass = function (el, name) {\n var classes = el.className.split(/\\s+/g), add = true;\n while (true) {\n var index = classes.indexOf(name);\n if (index == -1) {\n break;\n }\n add = false;\n classes.splice(index, 1);\n }\n if (add)\n classes.push(name);\n el.className = classes.join(\" \");\n return add;\n};\nexports.setCssClass = function (node, className, include) {\n if (include) {\n exports.addCssClass(node, className);\n }\n else {\n exports.removeCssClass(node, className);\n }\n};\nexports.hasCssString = function (id, doc) {\n var index = 0, sheets;\n doc = doc || document;\n if ((sheets = doc.querySelectorAll(\"style\"))) {\n while (index < sheets.length) {\n if (sheets[index++].id === id) {\n return true;\n }\n }\n }\n};\nexports.removeElementById = function (id, doc) {\n doc = doc || document;\n if (doc.getElementById(id)) {\n doc.getElementById(id).remove();\n }\n};\nvar strictCSP;\nvar cssCache = [];\nexports.useStrictCSP = function (value) {\n strictCSP = value;\n if (value == false)\n insertPendingStyles();\n else if (!cssCache)\n cssCache = [];\n};\nfunction insertPendingStyles() {\n var cache = cssCache;\n cssCache = null;\n cache && cache.forEach(function (item) {\n importCssString(item[0], item[1]);\n });\n}\nfunction importCssString(cssText, id, target) {\n if (typeof document == \"undefined\")\n return;\n if (cssCache) {\n if (target) {\n insertPendingStyles();\n }\n else if (target === false) {\n return cssCache.push([cssText, id]);\n }\n }\n if (strictCSP)\n return;\n var container = target;\n if (!target || !target.getRootNode) {\n container = document;\n }\n else {\n container = target.getRootNode();\n if (!container || container == target)\n container = document;\n }\n var doc = container.ownerDocument || container;\n if (id && exports.hasCssString(id, container))\n return null;\n if (id)\n cssText += \"\\n/*# sourceURL=ace/css/\" + id + \" */\";\n var style = exports.createElement(\"style\");\n style.appendChild(doc.createTextNode(cssText));\n if (id)\n style.id = id;\n if (container == doc)\n container = exports.getDocumentHead(doc);\n container.insertBefore(style, container.firstChild);\n}\nexports.importCssString = importCssString;\nexports.importCssStylsheet = function (uri, doc) {\n exports.buildDom([\"link\", { rel: \"stylesheet\", href: uri }], exports.getDocumentHead(doc));\n};\nexports.scrollbarWidth = function (doc) {\n var inner = exports.createElement(\"ace_inner\");\n inner.style.width = \"100%\";\n inner.style.minWidth = \"0px\";\n inner.style.height = \"200px\";\n inner.style.display = \"block\";\n var outer = exports.createElement(\"ace_outer\");\n var style = outer.style;\n style.position = \"absolute\";\n style.left = \"-10000px\";\n style.overflow = \"hidden\";\n style.width = \"200px\";\n style.minWidth = \"0px\";\n style.height = \"150px\";\n style.display = \"block\";\n outer.appendChild(inner);\n var body = (doc && doc.documentElement) || (document && document.documentElement);\n if (!body)\n return 0;\n body.appendChild(outer);\n var noScrollbar = inner.offsetWidth;\n style.overflow = \"scroll\";\n var withScrollbar = inner.offsetWidth;\n if (noScrollbar === withScrollbar) {\n withScrollbar = outer.clientWidth;\n }\n body.removeChild(outer);\n return noScrollbar - withScrollbar;\n};\nexports.computedStyle = function (element, style) {\n return window.getComputedStyle(element, \"\") || {};\n};\nexports.setStyle = function (styles, property, value) {\n if (styles[property] !== value) {\n styles[property] = value;\n }\n};\nexports.HAS_CSS_ANIMATION = false;\nexports.HAS_CSS_TRANSFORMS = false;\nexports.HI_DPI = useragent.isWin\n ? typeof window !== \"undefined\" && window.devicePixelRatio >= 1.5\n : true;\nif (useragent.isChromeOS)\n exports.HI_DPI = false;\nif (typeof document !== \"undefined\") {\n var div = document.createElement(\"div\");\n if (exports.HI_DPI && div.style.transform !== undefined)\n exports.HAS_CSS_TRANSFORMS = true;\n if (!useragent.isEdge && typeof div.style.animationName !== \"undefined\")\n exports.HAS_CSS_ANIMATION = true;\n div = null;\n}\nif (exports.HAS_CSS_TRANSFORMS) {\n exports.translate = function (element, tx, ty) {\n element.style.transform = \"translate(\" + Math.round(tx) + \"px, \" + Math.round(ty) + \"px)\";\n };\n}\nelse {\n exports.translate = function (element, tx, ty) {\n element.style.top = Math.round(ty) + \"px\";\n element.style.left = Math.round(tx) + \"px\";\n };\n}\n\n});\n\nace.define(\"ace/lib/net\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"], function(require, exports, module){/*\n * based on code from:\n *\n * @license RequireJS text 0.25.0 Copyright (c) 2010-2011, The Dojo Foundation All Rights Reserved.\n * Available via the MIT or new BSD license.\n * see: http://github.com/jrburke/requirejs for details\n */\n\"use strict\";\nvar dom = require(\"./dom\");\nexports.get = function (url, callback) {\n var xhr = new XMLHttpRequest();\n xhr.open('GET', url, true);\n xhr.onreadystatechange = function () {\n if (xhr.readyState === 4) {\n callback(xhr.responseText);\n }\n };\n xhr.send(null);\n};\nexports.loadScript = function (path, callback) {\n var head = dom.getDocumentHead();\n var s = document.createElement('script');\n s.src = path;\n head.appendChild(s);\n s.onload = s.onreadystatechange = function (_, isAbort) {\n if (isAbort || !s.readyState || s.readyState == \"loaded\" || s.readyState == \"complete\") {\n s = s.onload = s.onreadystatechange = null;\n if (!isAbort)\n callback();\n }\n };\n};\nexports.qualifyURL = function (url) {\n var a = document.createElement('a');\n a.href = url;\n return a.href;\n};\n\n});\n\nace.define(\"ace/lib/oop\",[\"require\",\"exports\",\"module\"], function(require, exports, module){\"use strict\";\nexports.inherits = function (ctor, superCtor) {\n ctor.super_ = superCtor;\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n};\nexports.mixin = function (obj, mixin) {\n for (var key in mixin) {\n obj[key] = mixin[key];\n }\n return obj;\n};\nexports.implement = function (proto, mixin) {\n exports.mixin(proto, mixin);\n};\n\n});\n\nace.define(\"ace/lib/event_emitter\",[\"require\",\"exports\",\"module\"], function(require, exports, module){\"use strict\";\nvar EventEmitter = {};\nvar stopPropagation = function () { this.propagationStopped = true; };\nvar preventDefault = function () { this.defaultPrevented = true; };\nEventEmitter._emit =\n EventEmitter._dispatchEvent = function (eventName, e) {\n this._eventRegistry || (this._eventRegistry = {});\n this._defaultHandlers || (this._defaultHandlers = {});\n var listeners = this._eventRegistry[eventName] || [];\n var defaultHandler = this._defaultHandlers[eventName];\n if (!listeners.length && !defaultHandler)\n return;\n if (typeof e != \"object\" || !e)\n e = {};\n if (!e.type)\n e.type = eventName;\n if (!e.stopPropagation)\n e.stopPropagation = stopPropagation;\n if (!e.preventDefault)\n e.preventDefault = preventDefault;\n listeners = listeners.slice();\n for (var i = 0; i < listeners.length; i++) {\n listeners[i](e, this);\n if (e.propagationStopped)\n break;\n }\n if (defaultHandler && !e.defaultPrevented)\n return defaultHandler(e, this);\n };\nEventEmitter._signal = function (eventName, e) {\n var listeners = (this._eventRegistry || {})[eventName];\n if (!listeners)\n return;\n listeners = listeners.slice();\n for (var i = 0; i < listeners.length; i++)\n listeners[i](e, this);\n};\nEventEmitter.once = function (eventName, callback) {\n var _self = this;\n this.on(eventName, function newCallback() {\n _self.off(eventName, newCallback);\n callback.apply(null, arguments);\n });\n if (!callback) {\n return new Promise(function (resolve) {\n callback = resolve;\n });\n }\n};\nEventEmitter.setDefaultHandler = function (eventName, callback) {\n var handlers = this._defaultHandlers;\n if (!handlers)\n handlers = this._defaultHandlers = { _disabled_: {} };\n if (handlers[eventName]) {\n var old = handlers[eventName];\n var disabled = handlers._disabled_[eventName];\n if (!disabled)\n handlers._disabled_[eventName] = disabled = [];\n disabled.push(old);\n var i = disabled.indexOf(callback);\n if (i != -1)\n disabled.splice(i, 1);\n }\n handlers[eventName] = callback;\n};\nEventEmitter.removeDefaultHandler = function (eventName, callback) {\n var handlers = this._defaultHandlers;\n if (!handlers)\n return;\n var disabled = handlers._disabled_[eventName];\n if (handlers[eventName] == callback) {\n if (disabled)\n this.setDefaultHandler(eventName, disabled.pop());\n }\n else if (disabled) {\n var i = disabled.indexOf(callback);\n if (i != -1)\n disabled.splice(i, 1);\n }\n};\nEventEmitter.on =\n EventEmitter.addEventListener = function (eventName, callback, capturing) {\n this._eventRegistry = this._eventRegistry || {};\n var listeners = this._eventRegistry[eventName];\n if (!listeners)\n listeners = this._eventRegistry[eventName] = [];\n if (listeners.indexOf(callback) == -1)\n listeners[capturing ? \"unshift\" : \"push\"](callback);\n return callback;\n };\nEventEmitter.off =\n EventEmitter.removeListener =\n EventEmitter.removeEventListener = function (eventName, callback) {\n this._eventRegistry = this._eventRegistry || {};\n var listeners = this._eventRegistry[eventName];\n if (!listeners)\n return;\n var index = listeners.indexOf(callback);\n if (index !== -1)\n listeners.splice(index, 1);\n };\nEventEmitter.removeAllListeners = function (eventName) {\n if (!eventName)\n this._eventRegistry = this._defaultHandlers = undefined;\n if (this._eventRegistry)\n this._eventRegistry[eventName] = undefined;\n if (this._defaultHandlers)\n this._defaultHandlers[eventName] = undefined;\n};\nexports.EventEmitter = EventEmitter;\n\n});\n\nace.define(\"ace/lib/report_error\",[\"require\",\"exports\",\"module\"], function(require, exports, module){exports.reportError = function reportError(msg, data) {\n var e = new Error(msg);\n e.data = data;\n if (typeof console == \"object\" && console.error)\n console.error(e);\n setTimeout(function () { throw e; });\n};\n\n});\n\nace.define(\"ace/lib/app_config\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/event_emitter\",\"ace/lib/report_error\"], function(require, exports, module){\"no use strict\";\nvar oop = require(\"./oop\");\nvar EventEmitter = require(\"./event_emitter\").EventEmitter;\nvar reportError = require(\"./report_error\").reportError;\nvar optionsProvider = {\n setOptions: function (optList) {\n Object.keys(optList).forEach(function (key) {\n this.setOption(key, optList[key]);\n }, this);\n },\n getOptions: function (optionNames) {\n var result = {};\n if (!optionNames) {\n var options = this.$options;\n optionNames = Object.keys(options).filter(function (key) {\n return !options[key].hidden;\n });\n }\n else if (!Array.isArray(optionNames)) {\n result = optionNames;\n optionNames = Object.keys(result);\n }\n optionNames.forEach(function (key) {\n result[key] = this.getOption(key);\n }, this);\n return result;\n },\n setOption: function (name, value) {\n if (this[\"$\" + name] === value)\n return;\n var opt = this.$options[name];\n if (!opt) {\n return warn('misspelled option \"' + name + '\"');\n }\n if (opt.forwardTo)\n return this[opt.forwardTo] && this[opt.forwardTo].setOption(name, value);\n if (!opt.handlesSet)\n this[\"$\" + name] = value;\n if (opt && opt.set)\n opt.set.call(this, value);\n },\n getOption: function (name) {\n var opt = this.$options[name];\n if (!opt) {\n return warn('misspelled option \"' + name + '\"');\n }\n if (opt.forwardTo)\n return this[opt.forwardTo] && this[opt.forwardTo].getOption(name);\n return opt && opt.get ? opt.get.call(this) : this[\"$\" + name];\n }\n};\nfunction warn(message) {\n if (typeof console != \"undefined\" && console.warn)\n console.warn.apply(console, arguments);\n}\nvar messages;\nvar AppConfig = /** @class */ (function () {\n function AppConfig() {\n this.$defaultOptions = {};\n }\n AppConfig.prototype.defineOptions = function (obj, path, options) {\n if (!obj.$options)\n this.$defaultOptions[path] = obj.$options = {};\n Object.keys(options).forEach(function (key) {\n var opt = options[key];\n if (typeof opt == \"string\")\n opt = { forwardTo: opt };\n opt.name || (opt.name = key);\n obj.$options[opt.name] = opt;\n if (\"initialValue\" in opt)\n obj[\"$\" + opt.name] = opt.initialValue;\n });\n oop.implement(obj, optionsProvider);\n return this;\n };\n AppConfig.prototype.resetOptions = function (obj) {\n Object.keys(obj.$options).forEach(function (key) {\n var opt = obj.$options[key];\n if (\"value\" in opt)\n obj.setOption(key, opt.value);\n });\n };\n AppConfig.prototype.setDefaultValue = function (path, name, value) {\n if (!path) {\n for (path in this.$defaultOptions)\n if (this.$defaultOptions[path][name])\n break;\n if (!this.$defaultOptions[path][name])\n return false;\n }\n var opts = this.$defaultOptions[path] || (this.$defaultOptions[path] = {});\n if (opts[name]) {\n if (opts.forwardTo)\n this.setDefaultValue(opts.forwardTo, name, value);\n else\n opts[name].value = value;\n }\n };\n AppConfig.prototype.setDefaultValues = function (path, optionHash) {\n Object.keys(optionHash).forEach(function (key) {\n this.setDefaultValue(path, key, optionHash[key]);\n }, this);\n };\n AppConfig.prototype.setMessages = function (value) {\n messages = value;\n };\n AppConfig.prototype.nls = function (string, params) {\n if (messages && !messages[string]) {\n warn(\"No message found for '\" + string + \"' in the provided messages, falling back to default English message.\");\n }\n var translated = messages && messages[string] || string;\n if (params) {\n translated = translated.replace(/\\$(\\$|[\\d]+)/g, function (_, name) {\n if (name == \"$\")\n return \"$\";\n return params[name];\n });\n }\n return translated;\n };\n return AppConfig;\n}());\nAppConfig.prototype.warn = warn;\nAppConfig.prototype.reportError = reportError;\noop.implement(AppConfig.prototype, EventEmitter);\nexports.AppConfig = AppConfig;\n\n});\n\nace.define(\"ace/theme/textmate-css\",[\"require\",\"exports\",\"module\"], function(require, exports, module){module.exports = \".ace-tm .ace_gutter {\\n background: #f0f0f0;\\n color: #333;\\n}\\n\\n.ace-tm .ace_print-margin {\\n width: 1px;\\n background: #e8e8e8;\\n}\\n\\n.ace-tm .ace_fold {\\n background-color: #6B72E6;\\n}\\n\\n.ace-tm {\\n background-color: #FFFFFF;\\n color: black;\\n}\\n\\n.ace-tm .ace_cursor {\\n color: black;\\n}\\n \\n.ace-tm .ace_invisible {\\n color: rgb(191, 191, 191);\\n}\\n\\n.ace-tm .ace_storage,\\n.ace-tm .ace_keyword {\\n color: blue;\\n}\\n\\n.ace-tm .ace_constant {\\n color: rgb(197, 6, 11);\\n}\\n\\n.ace-tm .ace_constant.ace_buildin {\\n color: rgb(88, 72, 246);\\n}\\n\\n.ace-tm .ace_constant.ace_language {\\n color: rgb(88, 92, 246);\\n}\\n\\n.ace-tm .ace_constant.ace_library {\\n color: rgb(6, 150, 14);\\n}\\n\\n.ace-tm .ace_invalid {\\n background-color: rgba(255, 0, 0, 0.1);\\n color: red;\\n}\\n\\n.ace-tm .ace_support.ace_function {\\n color: rgb(60, 76, 114);\\n}\\n\\n.ace-tm .ace_support.ace_constant {\\n color: rgb(6, 150, 14);\\n}\\n\\n.ace-tm .ace_support.ace_type,\\n.ace-tm .ace_support.ace_class {\\n color: rgb(109, 121, 222);\\n}\\n\\n.ace-tm .ace_keyword.ace_operator {\\n color: rgb(104, 118, 135);\\n}\\n\\n.ace-tm .ace_string {\\n color: rgb(3, 106, 7);\\n}\\n\\n.ace-tm .ace_comment {\\n color: rgb(76, 136, 107);\\n}\\n\\n.ace-tm .ace_comment.ace_doc {\\n color: rgb(0, 102, 255);\\n}\\n\\n.ace-tm .ace_comment.ace_doc.ace_tag {\\n color: rgb(128, 159, 191);\\n}\\n\\n.ace-tm .ace_constant.ace_numeric {\\n color: rgb(0, 0, 205);\\n}\\n\\n.ace-tm .ace_variable {\\n color: rgb(49, 132, 149);\\n}\\n\\n.ace-tm .ace_xml-pe {\\n color: rgb(104, 104, 91);\\n}\\n\\n.ace-tm .ace_entity.ace_name.ace_function {\\n color: #0000A2;\\n}\\n\\n\\n.ace-tm .ace_heading {\\n color: rgb(12, 7, 255);\\n}\\n\\n.ace-tm .ace_list {\\n color:rgb(185, 6, 144);\\n}\\n\\n.ace-tm .ace_meta.ace_tag {\\n color:rgb(0, 22, 142);\\n}\\n\\n.ace-tm .ace_string.ace_regex {\\n color: rgb(255, 0, 0)\\n}\\n\\n.ace-tm .ace_marker-layer .ace_selection {\\n background: rgb(181, 213, 255);\\n}\\n.ace-tm.ace_multiselect .ace_selection.ace_start {\\n box-shadow: 0 0 3px 0px white;\\n}\\n.ace-tm .ace_marker-layer .ace_step {\\n background: rgb(252, 255, 0);\\n}\\n\\n.ace-tm .ace_marker-layer .ace_stack {\\n background: rgb(164, 229, 101);\\n}\\n\\n.ace-tm .ace_marker-layer .ace_bracket {\\n margin: -1px 0 0 -1px;\\n border: 1px solid rgb(192, 192, 192);\\n}\\n\\n.ace-tm .ace_marker-layer .ace_active-line {\\n background: rgba(0, 0, 0, 0.07);\\n}\\n\\n.ace-tm .ace_gutter-active-line {\\n background-color : #dcdcdc;\\n}\\n\\n.ace-tm .ace_marker-layer .ace_selected-word {\\n background: rgb(250, 250, 255);\\n border: 1px solid rgb(200, 200, 250);\\n}\\n\\n.ace-tm .ace_indent-guide {\\n background: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==\\\") right repeat-y;\\n}\\n\\n.ace-tm .ace_indent-guide-active {\\n background: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAAZSURBVHjaYvj///9/hivKyv8BAAAA//8DACLqBhbvk+/eAAAAAElFTkSuQmCC\\\") right repeat-y;\\n}\\n\";\n\n});\n\nace.define(\"ace/theme/textmate\",[\"require\",\"exports\",\"module\",\"ace/theme/textmate-css\",\"ace/lib/dom\"], function(require, exports, module){\"use strict\";\nexports.isDark = false;\nexports.cssClass = \"ace-tm\";\nexports.cssText = require(\"./textmate-css\");\nexports.$id = \"ace/theme/textmate\";\nvar dom = require(\"../lib/dom\");\ndom.importCssString(exports.cssText, exports.cssClass, false);\n\n});\n\nace.define(\"ace/config\",[\"require\",\"exports\",\"module\",\"ace/lib/lang\",\"ace/lib/net\",\"ace/lib/dom\",\"ace/lib/app_config\",\"ace/theme/textmate\"], function(require, exports, module){\"no use strict\";\nvar lang = require(\"./lib/lang\");\nvar net = require(\"./lib/net\");\nvar dom = require(\"./lib/dom\");\nvar AppConfig = require(\"./lib/app_config\").AppConfig;\nmodule.exports = exports = new AppConfig();\nvar options = {\n packaged: false,\n workerPath: null,\n modePath: null,\n themePath: null,\n basePath: \"\",\n suffix: \".js\",\n $moduleUrls: {},\n loadWorkerFromBlob: true,\n sharedPopups: false,\n useStrictCSP: null\n};\nexports.get = function (key) {\n if (!options.hasOwnProperty(key))\n throw new Error(\"Unknown config key: \" + key);\n return options[key];\n};\nexports.set = function (key, value) {\n if (options.hasOwnProperty(key))\n options[key] = value;\n else if (this.setDefaultValue(\"\", key, value) == false)\n throw new Error(\"Unknown config key: \" + key);\n if (key == \"useStrictCSP\")\n dom.useStrictCSP(value);\n};\nexports.all = function () {\n return lang.copyObject(options);\n};\nexports.$modes = {};\nexports.moduleUrl = function (name, component) {\n if (options.$moduleUrls[name])\n return options.$moduleUrls[name];\n var parts = name.split(\"/\");\n component = component || parts[parts.length - 2] || \"\";\n var sep = component == \"snippets\" ? \"/\" : \"-\";\n var base = parts[parts.length - 1];\n if (component == \"worker\" && sep == \"-\") {\n var re = new RegExp(\"^\" + component + \"[\\\\-_]|[\\\\-_]\" + component + \"$\", \"g\");\n base = base.replace(re, \"\");\n }\n if ((!base || base == component) && parts.length > 1)\n base = parts[parts.length - 2];\n var path = options[component + \"Path\"];\n if (path == null) {\n path = options.basePath;\n }\n else if (sep == \"/\") {\n component = sep = \"\";\n }\n if (path && path.slice(-1) != \"/\")\n path += \"/\";\n return path + component + sep + base + this.get(\"suffix\");\n};\nexports.setModuleUrl = function (name, subst) {\n return options.$moduleUrls[name] = subst;\n};\nvar loader = function (moduleName, cb) {\n if (moduleName === \"ace/theme/textmate\" || moduleName === \"./theme/textmate\")\n return cb(null, require(\"./theme/textmate\"));\n if (customLoader)\n return customLoader(moduleName, cb);\n console.error(\"loader is not configured\");\n};\nvar customLoader;\nexports.setLoader = function (cb) {\n customLoader = cb;\n};\nexports.dynamicModules = Object.create(null);\nexports.$loading = {};\nexports.$loaded = {};\nexports.loadModule = function (moduleName, onLoad) {\n var loadedModule, moduleType;\n if (Array.isArray(moduleName)) {\n moduleType = moduleName[0];\n moduleName = moduleName[1];\n }\n var load = function (module) {\n if (module && !exports.$loading[moduleName])\n return onLoad && onLoad(module);\n if (!exports.$loading[moduleName])\n exports.$loading[moduleName] = [];\n exports.$loading[moduleName].push(onLoad);\n if (exports.$loading[moduleName].length > 1)\n return;\n var afterLoad = function () {\n loader(moduleName, function (err, module) {\n if (module)\n exports.$loaded[moduleName] = module;\n exports._emit(\"load.module\", { name: moduleName, module: module });\n var listeners = exports.$loading[moduleName];\n exports.$loading[moduleName] = null;\n listeners.forEach(function (onLoad) {\n onLoad && onLoad(module);\n });\n });\n };\n if (!exports.get(\"packaged\"))\n return afterLoad();\n net.loadScript(exports.moduleUrl(moduleName, moduleType), afterLoad);\n reportErrorIfPathIsNotConfigured();\n };\n if (exports.dynamicModules[moduleName]) {\n exports.dynamicModules[moduleName]().then(function (module) {\n if (module.default) {\n load(module.default);\n }\n else {\n load(module);\n }\n });\n }\n else {\n try {\n loadedModule = this.$require(moduleName);\n }\n catch (e) { }\n load(loadedModule || exports.$loaded[moduleName]);\n }\n};\nexports.$require = function (moduleName) {\n if (typeof module.require == \"function\") {\n var req = \"require\";\n return module[req](moduleName);\n }\n};\nexports.setModuleLoader = function (moduleName, onLoad) {\n exports.dynamicModules[moduleName] = onLoad;\n};\nvar reportErrorIfPathIsNotConfigured = function () {\n if (!options.basePath && !options.workerPath\n && !options.modePath && !options.themePath\n && !Object.keys(options.$moduleUrls).length) {\n console.error(\"Unable to infer path to ace from script src,\", \"use ace.config.set('basePath', 'path') to enable dynamic loading of modes and themes\", \"or with webpack use ace/webpack-resolver\");\n reportErrorIfPathIsNotConfigured = function () { };\n }\n};\nexports.version = \"1.32.0\";\n\n});\n\nace.define(\"ace/loader_build\",[\"require\",\"exports\",\"module\",\"ace/lib/fixoldbrowsers\",\"ace/config\"], function(require, exports, module) {\n\"use strict\";\n\nrequire(\"./lib/fixoldbrowsers\");\nvar config = require(\"./config\");\nconfig.setLoader(function(moduleName, cb) {\n require([moduleName], function(module) {\n cb(null, module);\n });\n});\n\nvar global = (function() {\n return this || typeof window != \"undefined\" && window;\n})();\n\nmodule.exports = function(ace) {\n config.init = init;\n config.$require = require;\n ace.require = require;\n\n if (typeof define === \"function\")\n ace.define = define;\n};\ninit(true);function init(packaged) {\n\n if (!global || !global.document)\n return;\n \n config.set(\"packaged\", packaged || require.packaged || module.packaged || (global.define && define.packaged));\n\n var scriptOptions = {};\n var scriptUrl = \"\";\n var currentScript = (document.currentScript || document._currentScript ); // native or polyfill\n var currentDocument = currentScript && currentScript.ownerDocument || document;\n \n if (currentScript && currentScript.src) {\n scriptUrl = currentScript.src.split(/[?#]/)[0].split(\"/\").slice(0, -1).join(\"/\") || \"\";\n }\n \n var scripts = currentDocument.getElementsByTagName(\"script\");\n for (var i=0; i [\" + this.end.row + \"/\" + this.end.column + \"]\");\n };\n Range.prototype.contains = function (row, column) {\n return this.compare(row, column) == 0;\n };\n Range.prototype.compareRange = function (range) {\n var cmp, end = range.end, start = range.start;\n cmp = this.compare(end.row, end.column);\n if (cmp == 1) {\n cmp = this.compare(start.row, start.column);\n if (cmp == 1) {\n return 2;\n }\n else if (cmp == 0) {\n return 1;\n }\n else {\n return 0;\n }\n }\n else if (cmp == -1) {\n return -2;\n }\n else {\n cmp = this.compare(start.row, start.column);\n if (cmp == -1) {\n return -1;\n }\n else if (cmp == 1) {\n return 42;\n }\n else {\n return 0;\n }\n }\n };\n Range.prototype.comparePoint = function (p) {\n return this.compare(p.row, p.column);\n };\n Range.prototype.containsRange = function (range) {\n return this.comparePoint(range.start) == 0 && this.comparePoint(range.end) == 0;\n };\n Range.prototype.intersects = function (range) {\n var cmp = this.compareRange(range);\n return (cmp == -1 || cmp == 0 || cmp == 1);\n };\n Range.prototype.isEnd = function (row, column) {\n return this.end.row == row && this.end.column == column;\n };\n Range.prototype.isStart = function (row, column) {\n return this.start.row == row && this.start.column == column;\n };\n Range.prototype.setStart = function (row, column) {\n if (typeof row == \"object\") {\n this.start.column = row.column;\n this.start.row = row.row;\n }\n else {\n this.start.row = row;\n this.start.column = column;\n }\n };\n Range.prototype.setEnd = function (row, column) {\n if (typeof row == \"object\") {\n this.end.column = row.column;\n this.end.row = row.row;\n }\n else {\n this.end.row = row;\n this.end.column = column;\n }\n };\n Range.prototype.inside = function (row, column) {\n if (this.compare(row, column) == 0) {\n if (this.isEnd(row, column) || this.isStart(row, column)) {\n return false;\n }\n else {\n return true;\n }\n }\n return false;\n };\n Range.prototype.insideStart = function (row, column) {\n if (this.compare(row, column) == 0) {\n if (this.isEnd(row, column)) {\n return false;\n }\n else {\n return true;\n }\n }\n return false;\n };\n Range.prototype.insideEnd = function (row, column) {\n if (this.compare(row, column) == 0) {\n if (this.isStart(row, column)) {\n return false;\n }\n else {\n return true;\n }\n }\n return false;\n };\n Range.prototype.compare = function (row, column) {\n if (!this.isMultiLine()) {\n if (row === this.start.row) {\n return column < this.start.column ? -1 : (column > this.end.column ? 1 : 0);\n }\n }\n if (row < this.start.row)\n return -1;\n if (row > this.end.row)\n return 1;\n if (this.start.row === row)\n return column >= this.start.column ? 0 : -1;\n if (this.end.row === row)\n return column <= this.end.column ? 0 : 1;\n return 0;\n };\n Range.prototype.compareStart = function (row, column) {\n if (this.start.row == row && this.start.column == column) {\n return -1;\n }\n else {\n return this.compare(row, column);\n }\n };\n Range.prototype.compareEnd = function (row, column) {\n if (this.end.row == row && this.end.column == column) {\n return 1;\n }\n else {\n return this.compare(row, column);\n }\n };\n Range.prototype.compareInside = function (row, column) {\n if (this.end.row == row && this.end.column == column) {\n return 1;\n }\n else if (this.start.row == row && this.start.column == column) {\n return -1;\n }\n else {\n return this.compare(row, column);\n }\n };\n Range.prototype.clipRows = function (firstRow, lastRow) {\n if (this.end.row > lastRow)\n var end = { row: lastRow + 1, column: 0 };\n else if (this.end.row < firstRow)\n var end = { row: firstRow, column: 0 };\n if (this.start.row > lastRow)\n var start = { row: lastRow + 1, column: 0 };\n else if (this.start.row < firstRow)\n var start = { row: firstRow, column: 0 };\n return Range.fromPoints(start || this.start, end || this.end);\n };\n Range.prototype.extend = function (row, column) {\n var cmp = this.compare(row, column);\n if (cmp == 0)\n return this;\n else if (cmp == -1)\n var start = { row: row, column: column };\n else\n var end = { row: row, column: column };\n return Range.fromPoints(start || this.start, end || this.end);\n };\n Range.prototype.isEmpty = function () {\n return (this.start.row === this.end.row && this.start.column === this.end.column);\n };\n Range.prototype.isMultiLine = function () {\n return (this.start.row !== this.end.row);\n };\n Range.prototype.clone = function () {\n return Range.fromPoints(this.start, this.end);\n };\n Range.prototype.collapseRows = function () {\n if (this.end.column == 0)\n return new Range(this.start.row, 0, Math.max(this.start.row, this.end.row - 1), 0);\n else\n return new Range(this.start.row, 0, this.end.row, 0);\n };\n Range.prototype.toScreenRange = function (session) {\n var screenPosStart = session.documentToScreenPosition(this.start);\n var screenPosEnd = session.documentToScreenPosition(this.end);\n return new Range(screenPosStart.row, screenPosStart.column, screenPosEnd.row, screenPosEnd.column);\n };\n Range.prototype.moveBy = function (row, column) {\n this.start.row += row;\n this.start.column += column;\n this.end.row += row;\n this.end.column += column;\n };\n return Range;\n}());\nRange.fromPoints = function (start, end) {\n return new Range(start.row, start.column, end.row, end.column);\n};\nRange.comparePoints = comparePoints;\nRange.comparePoints = function (p1, p2) {\n return p1.row - p2.row || p1.column - p2.column;\n};\nexports.Range = Range;\n\n});\n\nace.define(\"ace/lib/keys\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\"], function(require, exports, module){/*! @license\n==========================================================================\nSproutCore -- JavaScript Application Framework\ncopyright 2006-2009, Sprout Systems Inc., Apple Inc. and contributors.\n\nPermission is hereby granted, free of charge, to any person obtaining a\ncopy of this software and associated documentation files (the \"Software\"),\nto deal in the Software without restriction, including without limitation\nthe rights to use, copy, modify, merge, publish, distribute, sublicense,\nand/or sell copies of the Software, and to permit persons to whom the\nSoftware is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\nFROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n\nSproutCore and the SproutCore logo are trademarks of Sprout Systems, Inc.\n\nFor more information about SproutCore, visit http://www.sproutcore.com\n\n\n==========================================================================\n@license */\n\"use strict\";\nvar oop = require(\"./oop\");\nvar Keys = (function () {\n var ret = {\n MODIFIER_KEYS: {\n 16: 'Shift', 17: 'Ctrl', 18: 'Alt', 224: 'Meta',\n 91: 'MetaLeft', 92: 'MetaRight', 93: 'ContextMenu'\n },\n KEY_MODS: {\n \"ctrl\": 1, \"alt\": 2, \"option\": 2, \"shift\": 4,\n \"super\": 8, \"meta\": 8, \"command\": 8, \"cmd\": 8,\n \"control\": 1\n },\n FUNCTION_KEYS: {\n 8: \"Backspace\",\n 9: \"Tab\",\n 13: \"Return\",\n 19: \"Pause\",\n 27: \"Esc\",\n 32: \"Space\",\n 33: \"PageUp\",\n 34: \"PageDown\",\n 35: \"End\",\n 36: \"Home\",\n 37: \"Left\",\n 38: \"Up\",\n 39: \"Right\",\n 40: \"Down\",\n 44: \"Print\",\n 45: \"Insert\",\n 46: \"Delete\",\n 96: \"Numpad0\",\n 97: \"Numpad1\",\n 98: \"Numpad2\",\n 99: \"Numpad3\",\n 100: \"Numpad4\",\n 101: \"Numpad5\",\n 102: \"Numpad6\",\n 103: \"Numpad7\",\n 104: \"Numpad8\",\n 105: \"Numpad9\",\n '-13': \"NumpadEnter\",\n 112: \"F1\",\n 113: \"F2\",\n 114: \"F3\",\n 115: \"F4\",\n 116: \"F5\",\n 117: \"F6\",\n 118: \"F7\",\n 119: \"F8\",\n 120: \"F9\",\n 121: \"F10\",\n 122: \"F11\",\n 123: \"F12\",\n 144: \"Numlock\",\n 145: \"Scrolllock\"\n },\n PRINTABLE_KEYS: {\n 32: ' ', 48: '0', 49: '1', 50: '2', 51: '3', 52: '4', 53: '5',\n 54: '6', 55: '7', 56: '8', 57: '9', 59: ';', 61: '=', 65: 'a',\n 66: 'b', 67: 'c', 68: 'd', 69: 'e', 70: 'f', 71: 'g', 72: 'h',\n 73: 'i', 74: 'j', 75: 'k', 76: 'l', 77: 'm', 78: 'n', 79: 'o',\n 80: 'p', 81: 'q', 82: 'r', 83: 's', 84: 't', 85: 'u', 86: 'v',\n 87: 'w', 88: 'x', 89: 'y', 90: 'z', 107: '+', 109: '-', 110: '.',\n 186: ';', 187: '=', 188: ',', 189: '-', 190: '.', 191: '/', 192: '`',\n 219: '[', 220: '\\\\', 221: ']', 222: \"'\", 111: '/', 106: '*'\n }\n };\n ret.PRINTABLE_KEYS[173] = '-';\n var name, i;\n for (i in ret.FUNCTION_KEYS) {\n name = ret.FUNCTION_KEYS[i].toLowerCase();\n ret[name] = parseInt(i, 10);\n }\n for (i in ret.PRINTABLE_KEYS) {\n name = ret.PRINTABLE_KEYS[i].toLowerCase();\n ret[name] = parseInt(i, 10);\n }\n oop.mixin(ret, ret.MODIFIER_KEYS);\n oop.mixin(ret, ret.PRINTABLE_KEYS);\n oop.mixin(ret, ret.FUNCTION_KEYS);\n ret.enter = ret[\"return\"];\n ret.escape = ret.esc;\n ret.del = ret[\"delete\"];\n (function () {\n var mods = [\"cmd\", \"ctrl\", \"alt\", \"shift\"];\n for (var i = Math.pow(2, mods.length); i--;) {\n ret.KEY_MODS[i] = mods.filter(function (x) {\n return i & ret.KEY_MODS[x];\n }).join(\"-\") + \"-\";\n }\n })();\n ret.KEY_MODS[0] = \"\";\n ret.KEY_MODS[-1] = \"input-\";\n return ret;\n})();\noop.mixin(exports, Keys);\nexports.default = exports;\nexports.keyCodeToString = function (keyCode) {\n var keyString = Keys[keyCode];\n if (typeof keyString != \"string\")\n keyString = String.fromCharCode(keyCode);\n return keyString.toLowerCase();\n};\n\n});\n\nace.define(\"ace/lib/event\",[\"require\",\"exports\",\"module\",\"ace/lib/keys\",\"ace/lib/useragent\"], function(require, exports, module){\"use strict\";\nvar keys = require(\"./keys\");\nvar useragent = require(\"./useragent\");\nvar pressedKeys = null;\nvar ts = 0;\nvar activeListenerOptions;\nfunction detectListenerOptionsSupport() {\n activeListenerOptions = false;\n try {\n document.createComment(\"\").addEventListener(\"test\", function () { }, {\n get passive() {\n activeListenerOptions = { passive: false };\n }\n });\n }\n catch (e) { }\n}\nfunction getListenerOptions() {\n if (activeListenerOptions == undefined)\n detectListenerOptionsSupport();\n return activeListenerOptions;\n}\nfunction EventListener(elem, type, callback) {\n this.elem = elem;\n this.type = type;\n this.callback = callback;\n}\nEventListener.prototype.destroy = function () {\n removeListener(this.elem, this.type, this.callback);\n this.elem = this.type = this.callback = undefined;\n};\nvar addListener = exports.addListener = function (elem, type, callback, destroyer) {\n elem.addEventListener(type, callback, getListenerOptions());\n if (destroyer)\n destroyer.$toDestroy.push(new EventListener(elem, type, callback));\n};\nvar removeListener = exports.removeListener = function (elem, type, callback) {\n elem.removeEventListener(type, callback, getListenerOptions());\n};\nexports.stopEvent = function (e) {\n exports.stopPropagation(e);\n exports.preventDefault(e);\n return false;\n};\nexports.stopPropagation = function (e) {\n if (e.stopPropagation)\n e.stopPropagation();\n};\nexports.preventDefault = function (e) {\n if (e.preventDefault)\n e.preventDefault();\n};\nexports.getButton = function (e) {\n if (e.type == \"dblclick\")\n return 0;\n if (e.type == \"contextmenu\" || (useragent.isMac && (e.ctrlKey && !e.altKey && !e.shiftKey)))\n return 2;\n return e.button;\n};\nexports.capture = function (el, eventHandler, releaseCaptureHandler) {\n var ownerDocument = el && el.ownerDocument || document;\n function onMouseUp(e) {\n eventHandler && eventHandler(e);\n releaseCaptureHandler && releaseCaptureHandler(e);\n removeListener(ownerDocument, \"mousemove\", eventHandler);\n removeListener(ownerDocument, \"mouseup\", onMouseUp);\n removeListener(ownerDocument, \"dragstart\", onMouseUp);\n }\n addListener(ownerDocument, \"mousemove\", eventHandler);\n addListener(ownerDocument, \"mouseup\", onMouseUp);\n addListener(ownerDocument, \"dragstart\", onMouseUp);\n return onMouseUp;\n};\nexports.addMouseWheelListener = function (el, callback, destroyer) {\n addListener(el, \"wheel\", function (e) {\n var factor = 0.15;\n var deltaX = e.deltaX || 0;\n var deltaY = e.deltaY || 0;\n switch (e.deltaMode) {\n case e.DOM_DELTA_PIXEL:\n e.wheelX = deltaX * factor;\n e.wheelY = deltaY * factor;\n break;\n case e.DOM_DELTA_LINE:\n var linePixels = 15;\n e.wheelX = deltaX * linePixels;\n e.wheelY = deltaY * linePixels;\n break;\n case e.DOM_DELTA_PAGE:\n var pagePixels = 150;\n e.wheelX = deltaX * pagePixels;\n e.wheelY = deltaY * pagePixels;\n break;\n }\n callback(e);\n }, destroyer);\n};\nexports.addMultiMouseDownListener = function (elements, timeouts, eventHandler, callbackName, destroyer) {\n var clicks = 0;\n var startX, startY, timer;\n var eventNames = {\n 2: \"dblclick\",\n 3: \"tripleclick\",\n 4: \"quadclick\"\n };\n function onMousedown(e) {\n if (exports.getButton(e) !== 0) {\n clicks = 0;\n }\n else if (e.detail > 1) {\n clicks++;\n if (clicks > 4)\n clicks = 1;\n }\n else {\n clicks = 1;\n }\n if (useragent.isIE) {\n var isNewClick = Math.abs(e.clientX - startX) > 5 || Math.abs(e.clientY - startY) > 5;\n if (!timer || isNewClick)\n clicks = 1;\n if (timer)\n clearTimeout(timer);\n timer = setTimeout(function () { timer = null; }, timeouts[clicks - 1] || 600);\n if (clicks == 1) {\n startX = e.clientX;\n startY = e.clientY;\n }\n }\n e._clicks = clicks;\n eventHandler[callbackName](\"mousedown\", e);\n if (clicks > 4)\n clicks = 0;\n else if (clicks > 1)\n return eventHandler[callbackName](eventNames[clicks], e);\n }\n if (!Array.isArray(elements))\n elements = [elements];\n elements.forEach(function (el) {\n addListener(el, \"mousedown\", onMousedown, destroyer);\n });\n};\nvar getModifierHash = function (e) {\n return 0 | (e.ctrlKey ? 1 : 0) | (e.altKey ? 2 : 0) | (e.shiftKey ? 4 : 0) | (e.metaKey ? 8 : 0);\n};\nexports.getModifierString = function (e) {\n return keys.KEY_MODS[getModifierHash(e)];\n};\nfunction normalizeCommandKeys(callback, e, keyCode) {\n var hashId = getModifierHash(e);\n if (!useragent.isMac && pressedKeys) {\n if (e.getModifierState && (e.getModifierState(\"OS\") || e.getModifierState(\"Win\")))\n hashId |= 8;\n if (pressedKeys.altGr) {\n if ((3 & hashId) != 3)\n pressedKeys.altGr = 0;\n else\n return;\n }\n if (keyCode === 18 || keyCode === 17) {\n var location = \"location\" in e ? e.location : e.keyLocation;\n if (keyCode === 17 && location === 1) {\n if (pressedKeys[keyCode] == 1)\n ts = e.timeStamp;\n }\n else if (keyCode === 18 && hashId === 3 && location === 2) {\n var dt = e.timeStamp - ts;\n if (dt < 50)\n pressedKeys.altGr = true;\n }\n }\n }\n if (keyCode in keys.MODIFIER_KEYS) {\n keyCode = -1;\n }\n if (!hashId && keyCode === 13) {\n var location = \"location\" in e ? e.location : e.keyLocation;\n if (location === 3) {\n callback(e, hashId, -keyCode);\n if (e.defaultPrevented)\n return;\n }\n }\n if (useragent.isChromeOS && hashId & 8) {\n callback(e, hashId, keyCode);\n if (e.defaultPrevented)\n return;\n else\n hashId &= ~8;\n }\n if (!hashId && !(keyCode in keys.FUNCTION_KEYS) && !(keyCode in keys.PRINTABLE_KEYS)) {\n return false;\n }\n return callback(e, hashId, keyCode);\n}\nexports.addCommandKeyListener = function (el, callback, destroyer) {\n if (useragent.isOldGecko || (useragent.isOpera && !(\"KeyboardEvent\" in window))) {\n var lastKeyDownKeyCode = null;\n addListener(el, \"keydown\", function (e) {\n lastKeyDownKeyCode = e.keyCode;\n }, destroyer);\n addListener(el, \"keypress\", function (e) {\n return normalizeCommandKeys(callback, e, lastKeyDownKeyCode);\n }, destroyer);\n }\n else {\n var lastDefaultPrevented = null;\n addListener(el, \"keydown\", function (e) {\n pressedKeys[e.keyCode] = (pressedKeys[e.keyCode] || 0) + 1;\n var result = normalizeCommandKeys(callback, e, e.keyCode);\n lastDefaultPrevented = e.defaultPrevented;\n return result;\n }, destroyer);\n addListener(el, \"keypress\", function (e) {\n if (lastDefaultPrevented && (e.ctrlKey || e.altKey || e.shiftKey || e.metaKey)) {\n exports.stopEvent(e);\n lastDefaultPrevented = null;\n }\n }, destroyer);\n addListener(el, \"keyup\", function (e) {\n pressedKeys[e.keyCode] = null;\n }, destroyer);\n if (!pressedKeys) {\n resetPressedKeys();\n addListener(window, \"focus\", resetPressedKeys);\n }\n }\n};\nfunction resetPressedKeys() {\n pressedKeys = Object.create(null);\n}\nif (typeof window == \"object\" && window.postMessage && !useragent.isOldIE) {\n var postMessageId = 1;\n exports.nextTick = function (callback, win) {\n win = win || window;\n var messageName = \"zero-timeout-message-\" + (postMessageId++);\n var listener = function (e) {\n if (e.data == messageName) {\n exports.stopPropagation(e);\n removeListener(win, \"message\", listener);\n callback();\n }\n };\n addListener(win, \"message\", listener);\n win.postMessage(messageName, \"*\");\n };\n}\nexports.$idleBlocked = false;\nexports.onIdle = function (cb, timeout) {\n return setTimeout(function handler() {\n if (!exports.$idleBlocked) {\n cb();\n }\n else {\n setTimeout(handler, 100);\n }\n }, timeout);\n};\nexports.$idleBlockId = null;\nexports.blockIdle = function (delay) {\n if (exports.$idleBlockId)\n clearTimeout(exports.$idleBlockId);\n exports.$idleBlocked = true;\n exports.$idleBlockId = setTimeout(function () {\n exports.$idleBlocked = false;\n }, delay || 100);\n};\nexports.nextFrame = typeof window == \"object\" && (window.requestAnimationFrame\n || window.mozRequestAnimationFrame\n || window.webkitRequestAnimationFrame\n || window.msRequestAnimationFrame\n || window.oRequestAnimationFrame);\nif (exports.nextFrame)\n exports.nextFrame = exports.nextFrame.bind(window);\nelse\n exports.nextFrame = function (callback) {\n setTimeout(callback, 17);\n };\n\n});\n\nace.define(\"ace/clipboard\",[\"require\",\"exports\",\"module\"], function(require, exports, module){\"use strict\";\nvar $cancelT;\nmodule.exports = {\n lineMode: false,\n pasteCancelled: function () {\n if ($cancelT && $cancelT > Date.now() - 50)\n return true;\n return $cancelT = false;\n },\n cancel: function () {\n $cancelT = Date.now();\n }\n};\n\n});\n\nace.define(\"ace/keyboard/textinput\",[\"require\",\"exports\",\"module\",\"ace/lib/event\",\"ace/config\",\"ace/lib/useragent\",\"ace/lib/dom\",\"ace/lib/lang\",\"ace/clipboard\",\"ace/lib/keys\"], function(require, exports, module){\"use strict\";\nvar event = require(\"../lib/event\");\nvar nls = require(\"../config\").nls;\nvar useragent = require(\"../lib/useragent\");\nvar dom = require(\"../lib/dom\");\nvar lang = require(\"../lib/lang\");\nvar clipboard = require(\"../clipboard\");\nvar BROKEN_SETDATA = useragent.isChrome < 18;\nvar USE_IE_MIME_TYPE = useragent.isIE;\nvar HAS_FOCUS_ARGS = useragent.isChrome > 63;\nvar MAX_LINE_LENGTH = 400;\nvar KEYS = require(\"../lib/keys\");\nvar MODS = KEYS.KEY_MODS;\nvar isIOS = useragent.isIOS;\nvar valueResetRegex = isIOS ? /\\s/ : /\\n/;\nvar isMobile = useragent.isMobile;\nvar TextInput = function (parentNode, host) {\n var text = dom.createElement(\"textarea\");\n text.className = \"ace_text-input\";\n text.setAttribute(\"wrap\", \"off\");\n text.setAttribute(\"autocorrect\", \"off\");\n text.setAttribute(\"autocapitalize\", \"off\");\n text.setAttribute(\"spellcheck\", false);\n text.style.opacity = \"0\";\n parentNode.insertBefore(text, parentNode.firstChild);\n var copied = false;\n var pasted = false;\n var inComposition = false;\n var sendingText = false;\n var tempStyle = '';\n if (!isMobile)\n text.style.fontSize = \"1px\";\n var commandMode = false;\n var ignoreFocusEvents = false;\n var lastValue = \"\";\n var lastSelectionStart = 0;\n var lastSelectionEnd = 0;\n var lastRestoreEnd = 0;\n var rowStart = Number.MAX_SAFE_INTEGER;\n var rowEnd = Number.MIN_SAFE_INTEGER;\n var numberOfExtraLines = 0;\n try {\n var isFocused = document.activeElement === text;\n }\n catch (e) { }\n this.setNumberOfExtraLines = function (number) {\n rowStart = Number.MAX_SAFE_INTEGER;\n rowEnd = Number.MIN_SAFE_INTEGER;\n if (number < 0) {\n numberOfExtraLines = 0;\n return;\n }\n numberOfExtraLines = number;\n };\n this.setAriaOptions = function (options) {\n if (options.activeDescendant) {\n text.setAttribute(\"aria-haspopup\", \"true\");\n text.setAttribute(\"aria-autocomplete\", options.inline ? \"both\" : \"list\");\n text.setAttribute(\"aria-activedescendant\", options.activeDescendant);\n }\n else {\n text.setAttribute(\"aria-haspopup\", \"false\");\n text.setAttribute(\"aria-autocomplete\", \"both\");\n text.removeAttribute(\"aria-activedescendant\");\n }\n if (options.role) {\n text.setAttribute(\"role\", options.role);\n }\n if (options.setLabel) {\n text.setAttribute(\"aria-roledescription\", nls(\"editor\"));\n if (host.session) {\n var row = host.session.selection.cursor.row;\n text.setAttribute(\"aria-label\", nls(\"Cursor at row $0\", [row + 1]));\n }\n }\n };\n this.setAriaOptions({ role: \"textbox\" });\n event.addListener(text, \"blur\", function (e) {\n if (ignoreFocusEvents)\n return;\n host.onBlur(e);\n isFocused = false;\n }, host);\n event.addListener(text, \"focus\", function (e) {\n if (ignoreFocusEvents)\n return;\n isFocused = true;\n if (useragent.isEdge) {\n try {\n if (!document.hasFocus())\n return;\n }\n catch (e) { }\n }\n host.onFocus(e);\n if (useragent.isEdge)\n setTimeout(resetSelection);\n else\n resetSelection();\n }, host);\n this.$focusScroll = false;\n this.focus = function () {\n this.setAriaOptions({\n setLabel: host.renderer.enableKeyboardAccessibility\n });\n if (tempStyle || HAS_FOCUS_ARGS || this.$focusScroll == \"browser\")\n return text.focus({ preventScroll: true });\n var top = text.style.top;\n text.style.position = \"fixed\";\n text.style.top = \"0px\";\n try {\n var isTransformed = text.getBoundingClientRect().top != 0;\n }\n catch (e) {\n return;\n }\n var ancestors = [];\n if (isTransformed) {\n var t = text.parentElement;\n while (t && t.nodeType == 1) {\n ancestors.push(t);\n t.setAttribute(\"ace_nocontext\", true);\n if (!t.parentElement && t.getRootNode)\n t = t.getRootNode().host;\n else\n t = t.parentElement;\n }\n }\n text.focus({ preventScroll: true });\n if (isTransformed) {\n ancestors.forEach(function (p) {\n p.removeAttribute(\"ace_nocontext\");\n });\n }\n setTimeout(function () {\n text.style.position = \"\";\n if (text.style.top == \"0px\")\n text.style.top = top;\n }, 0);\n };\n this.blur = function () {\n text.blur();\n };\n this.isFocused = function () {\n return isFocused;\n };\n host.on(\"beforeEndOperation\", function () {\n var curOp = host.curOp;\n var commandName = curOp && curOp.command && curOp.command.name;\n if (commandName == \"insertstring\")\n return;\n var isUserAction = commandName && (curOp.docChanged || curOp.selectionChanged);\n if (inComposition && isUserAction) {\n lastValue = text.value = \"\";\n onCompositionEnd();\n }\n resetSelection();\n });\n var positionToSelection = function (row, column) {\n var selection = column;\n for (var i = 1; i <= row - rowStart && i < 2 * numberOfExtraLines + 1; i++) {\n selection += host.session.getLine(row - i).length + 1;\n }\n return selection;\n };\n var resetSelection = isIOS\n ? function (value) {\n if (!isFocused || (copied && !value) || sendingText)\n return;\n if (!value)\n value = \"\";\n var newValue = \"\\n ab\" + value + \"cde fg\\n\";\n if (newValue != text.value)\n text.value = lastValue = newValue;\n var selectionStart = 4;\n var selectionEnd = 4 + (value.length || (host.selection.isEmpty() ? 0 : 1));\n if (lastSelectionStart != selectionStart || lastSelectionEnd != selectionEnd) {\n text.setSelectionRange(selectionStart, selectionEnd);\n }\n lastSelectionStart = selectionStart;\n lastSelectionEnd = selectionEnd;\n }\n : function () {\n if (inComposition || sendingText)\n return;\n if (!isFocused && !afterContextMenu)\n return;\n inComposition = true;\n var selectionStart = 0;\n var selectionEnd = 0;\n var line = \"\";\n if (host.session) {\n var selection = host.selection;\n var range = selection.getRange();\n var row = selection.cursor.row;\n if (row === rowEnd + 1) {\n rowStart = rowEnd + 1;\n rowEnd = rowStart + 2 * numberOfExtraLines;\n }\n else if (row === rowStart - 1) {\n rowEnd = rowStart - 1;\n rowStart = rowEnd - 2 * numberOfExtraLines;\n }\n else if (row < rowStart - 1 || row > rowEnd + 1) {\n rowStart = row > numberOfExtraLines ? row - numberOfExtraLines : 0;\n rowEnd = row > numberOfExtraLines ? row + numberOfExtraLines : 2 * numberOfExtraLines;\n }\n var lines = [];\n for (var i = rowStart; i <= rowEnd; i++) {\n lines.push(host.session.getLine(i));\n }\n line = lines.join('\\n');\n selectionStart = positionToSelection(range.start.row, range.start.column);\n selectionEnd = positionToSelection(range.end.row, range.end.column);\n if (range.start.row < rowStart) {\n var prevLine = host.session.getLine(rowStart - 1);\n selectionStart = range.start.row < rowStart - 1 ? 0 : selectionStart;\n selectionEnd += prevLine.length + 1;\n line = prevLine + \"\\n\" + line;\n }\n else if (range.end.row > rowEnd) {\n var nextLine = host.session.getLine(rowEnd + 1);\n selectionEnd = range.end.row > rowEnd + 1 ? nextLine.length : range.end.column;\n selectionEnd += line.length + 1;\n line = line + \"\\n\" + nextLine;\n }\n else if (isMobile && row > 0) {\n line = \"\\n\" + line;\n selectionEnd += 1;\n selectionStart += 1;\n }\n if (line.length > MAX_LINE_LENGTH) {\n if (selectionStart < MAX_LINE_LENGTH && selectionEnd < MAX_LINE_LENGTH) {\n line = line.slice(0, MAX_LINE_LENGTH);\n }\n else {\n line = \"\\n\";\n if (selectionStart == selectionEnd) {\n selectionStart = selectionEnd = 0;\n }\n else {\n selectionStart = 0;\n selectionEnd = 1;\n }\n }\n }\n var newValue = line + \"\\n\\n\";\n if (newValue != lastValue) {\n text.value = lastValue = newValue;\n lastSelectionStart = lastSelectionEnd = newValue.length;\n }\n }\n if (afterContextMenu) {\n lastSelectionStart = text.selectionStart;\n lastSelectionEnd = text.selectionEnd;\n }\n if (lastSelectionEnd != selectionEnd\n || lastSelectionStart != selectionStart\n || text.selectionEnd != lastSelectionEnd // on ie edge selectionEnd changes silently after the initialization\n ) {\n try {\n text.setSelectionRange(selectionStart, selectionEnd);\n lastSelectionStart = selectionStart;\n lastSelectionEnd = selectionEnd;\n }\n catch (e) { }\n }\n inComposition = false;\n };\n this.resetSelection = resetSelection;\n if (isFocused)\n host.onFocus();\n var isAllSelected = function (text) {\n return text.selectionStart === 0 && text.selectionEnd >= lastValue.length\n && text.value === lastValue && lastValue\n && text.selectionEnd !== lastSelectionEnd;\n };\n var onSelect = function (e) {\n if (inComposition)\n return;\n if (copied) {\n copied = false;\n }\n else if (isAllSelected(text)) {\n host.selectAll();\n resetSelection();\n }\n else if (isMobile && text.selectionStart != lastSelectionStart) {\n resetSelection();\n }\n };\n var inputHandler = null;\n this.setInputHandler = function (cb) { inputHandler = cb; };\n this.getInputHandler = function () { return inputHandler; };\n var afterContextMenu = false;\n var sendText = function (value, fromInput) {\n if (afterContextMenu)\n afterContextMenu = false;\n if (pasted) {\n resetSelection();\n if (value)\n host.onPaste(value);\n pasted = false;\n return \"\";\n }\n else {\n var selectionStart = text.selectionStart;\n var selectionEnd = text.selectionEnd;\n var extendLeft = lastSelectionStart;\n var extendRight = lastValue.length - lastSelectionEnd;\n var inserted = value;\n var restoreStart = value.length - selectionStart;\n var restoreEnd = value.length - selectionEnd;\n var i = 0;\n while (extendLeft > 0 && lastValue[i] == value[i]) {\n i++;\n extendLeft--;\n }\n inserted = inserted.slice(i);\n i = 1;\n while (extendRight > 0 && lastValue.length - i > lastSelectionStart - 1 && lastValue[lastValue.length - i] == value[value.length - i]) {\n i++;\n extendRight--;\n }\n restoreStart -= i - 1;\n restoreEnd -= i - 1;\n var endIndex = inserted.length - i + 1;\n if (endIndex < 0) {\n extendLeft = -endIndex;\n endIndex = 0;\n }\n inserted = inserted.slice(0, endIndex);\n if (!fromInput && !inserted && !restoreStart && !extendLeft && !extendRight && !restoreEnd)\n return \"\";\n sendingText = true;\n var shouldReset = false;\n if (useragent.isAndroid && inserted == \". \") {\n inserted = \" \";\n shouldReset = true;\n }\n if (inserted && !extendLeft && !extendRight && !restoreStart && !restoreEnd || commandMode) {\n host.onTextInput(inserted);\n }\n else {\n host.onTextInput(inserted, {\n extendLeft: extendLeft,\n extendRight: extendRight,\n restoreStart: restoreStart,\n restoreEnd: restoreEnd\n });\n }\n sendingText = false;\n lastValue = value;\n lastSelectionStart = selectionStart;\n lastSelectionEnd = selectionEnd;\n lastRestoreEnd = restoreEnd;\n return shouldReset ? \"\\n\" : inserted;\n }\n };\n var onInput = function (e) {\n if (inComposition)\n return onCompositionUpdate();\n if (e && e.inputType) {\n if (e.inputType == \"historyUndo\")\n return host.execCommand(\"undo\");\n if (e.inputType == \"historyRedo\")\n return host.execCommand(\"redo\");\n }\n var data = text.value;\n var inserted = sendText(data, true);\n if (data.length > MAX_LINE_LENGTH + 100\n || valueResetRegex.test(inserted)\n || isMobile && lastSelectionStart < 1 && lastSelectionStart == lastSelectionEnd) {\n resetSelection();\n }\n };\n var handleClipboardData = function (e, data, forceIEMime) {\n var clipboardData = e.clipboardData || window.clipboardData;\n if (!clipboardData || BROKEN_SETDATA)\n return;\n var mime = USE_IE_MIME_TYPE || forceIEMime ? \"Text\" : \"text/plain\";\n try {\n if (data) {\n return clipboardData.setData(mime, data) !== false;\n }\n else {\n return clipboardData.getData(mime);\n }\n }\n catch (e) {\n if (!forceIEMime)\n return handleClipboardData(e, data, true);\n }\n };\n var doCopy = function (e, isCut) {\n var data = host.getCopyText();\n if (!data)\n return event.preventDefault(e);\n if (handleClipboardData(e, data)) {\n if (isIOS) {\n resetSelection(data);\n copied = data;\n setTimeout(function () {\n copied = false;\n }, 10);\n }\n isCut ? host.onCut() : host.onCopy();\n event.preventDefault(e);\n }\n else {\n copied = true;\n text.value = data;\n text.select();\n setTimeout(function () {\n copied = false;\n resetSelection();\n isCut ? host.onCut() : host.onCopy();\n });\n }\n };\n var onCut = function (e) {\n doCopy(e, true);\n };\n var onCopy = function (e) {\n doCopy(e, false);\n };\n var onPaste = function (e) {\n var data = handleClipboardData(e);\n if (clipboard.pasteCancelled())\n return;\n if (typeof data == \"string\") {\n if (data)\n host.onPaste(data, e);\n if (useragent.isIE)\n setTimeout(resetSelection);\n event.preventDefault(e);\n }\n else {\n text.value = \"\";\n pasted = true;\n }\n };\n event.addCommandKeyListener(text, host.onCommandKey.bind(host), host);\n event.addListener(text, \"select\", onSelect, host);\n event.addListener(text, \"input\", onInput, host);\n event.addListener(text, \"cut\", onCut, host);\n event.addListener(text, \"copy\", onCopy, host);\n event.addListener(text, \"paste\", onPaste, host);\n if (!('oncut' in text) || !('oncopy' in text) || !('onpaste' in text)) {\n event.addListener(parentNode, \"keydown\", function (e) {\n if ((useragent.isMac && !e.metaKey) || !e.ctrlKey)\n return;\n switch (e.keyCode) {\n case 67:\n onCopy(e);\n break;\n case 86:\n onPaste(e);\n break;\n case 88:\n onCut(e);\n break;\n }\n }, host);\n }\n var onCompositionStart = function (e) {\n if (inComposition || !host.onCompositionStart || host.$readOnly)\n return;\n inComposition = {};\n if (commandMode)\n return;\n if (e.data)\n inComposition.useTextareaForIME = false;\n setTimeout(onCompositionUpdate, 0);\n host._signal(\"compositionStart\");\n host.on(\"mousedown\", cancelComposition);\n var range = host.getSelectionRange();\n range.end.row = range.start.row;\n range.end.column = range.start.column;\n inComposition.markerRange = range;\n inComposition.selectionStart = lastSelectionStart;\n host.onCompositionStart(inComposition);\n if (inComposition.useTextareaForIME) {\n lastValue = text.value = \"\";\n lastSelectionStart = 0;\n lastSelectionEnd = 0;\n }\n else {\n if (text.msGetInputContext)\n inComposition.context = text.msGetInputContext();\n if (text.getInputContext)\n inComposition.context = text.getInputContext();\n }\n };\n var onCompositionUpdate = function () {\n if (!inComposition || !host.onCompositionUpdate || host.$readOnly)\n return;\n if (commandMode)\n return cancelComposition();\n if (inComposition.useTextareaForIME) {\n host.onCompositionUpdate(text.value);\n }\n else {\n var data = text.value;\n sendText(data);\n if (inComposition.markerRange) {\n if (inComposition.context) {\n inComposition.markerRange.start.column = inComposition.selectionStart\n = inComposition.context.compositionStartOffset;\n }\n inComposition.markerRange.end.column = inComposition.markerRange.start.column\n + lastSelectionEnd - inComposition.selectionStart + lastRestoreEnd;\n }\n }\n };\n var onCompositionEnd = function (e) {\n if (!host.onCompositionEnd || host.$readOnly)\n return;\n inComposition = false;\n host.onCompositionEnd();\n host.off(\"mousedown\", cancelComposition);\n if (e)\n onInput();\n };\n function cancelComposition() {\n ignoreFocusEvents = true;\n text.blur();\n text.focus();\n ignoreFocusEvents = false;\n }\n var syncComposition = lang.delayedCall(onCompositionUpdate, 50).schedule.bind(null, null);\n function onKeyup(e) {\n if (e.keyCode == 27 && text.value.length < text.selectionStart) {\n if (!inComposition)\n lastValue = text.value;\n lastSelectionStart = lastSelectionEnd = -1;\n resetSelection();\n }\n syncComposition();\n }\n event.addListener(text, \"compositionstart\", onCompositionStart, host);\n event.addListener(text, \"compositionupdate\", onCompositionUpdate, host);\n event.addListener(text, \"keyup\", onKeyup, host);\n event.addListener(text, \"keydown\", syncComposition, host);\n event.addListener(text, \"compositionend\", onCompositionEnd, host);\n this.getElement = function () {\n return text;\n };\n this.setCommandMode = function (value) {\n commandMode = value;\n text.readOnly = false;\n };\n this.setReadOnly = function (readOnly) {\n if (!commandMode)\n text.readOnly = readOnly;\n };\n this.setCopyWithEmptySelection = function (value) {\n };\n this.onContextMenu = function (e) {\n afterContextMenu = true;\n resetSelection();\n host._emit(\"nativecontextmenu\", { target: host, domEvent: e });\n this.moveToMouse(e, true);\n };\n this.moveToMouse = function (e, bringToFront) {\n if (!tempStyle)\n tempStyle = text.style.cssText;\n text.style.cssText = (bringToFront ? \"z-index:100000;\" : \"\")\n + (useragent.isIE ? \"opacity:0.1;\" : \"\")\n + \"text-indent: -\" + (lastSelectionStart + lastSelectionEnd) * host.renderer.characterWidth * 0.5 + \"px;\";\n var rect = host.container.getBoundingClientRect();\n var style = dom.computedStyle(host.container);\n var top = rect.top + (parseInt(style.borderTopWidth) || 0);\n var left = rect.left + (parseInt(rect.borderLeftWidth) || 0);\n var maxTop = rect.bottom - top - text.clientHeight - 2;\n var move = function (e) {\n dom.translate(text, e.clientX - left - 2, Math.min(e.clientY - top - 2, maxTop));\n };\n move(e);\n if (e.type != \"mousedown\")\n return;\n host.renderer.$isMousePressed = true;\n clearTimeout(closeTimeout);\n if (useragent.isWin)\n event.capture(host.container, move, onContextMenuClose);\n };\n this.onContextMenuClose = onContextMenuClose;\n var closeTimeout;\n function onContextMenuClose() {\n clearTimeout(closeTimeout);\n closeTimeout = setTimeout(function () {\n if (tempStyle) {\n text.style.cssText = tempStyle;\n tempStyle = '';\n }\n host.renderer.$isMousePressed = false;\n if (host.renderer.$keepTextAreaAtCursor)\n host.renderer.$moveTextAreaToCursor();\n }, 0);\n }\n var onContextMenu = function (e) {\n host.textInput.onContextMenu(e);\n onContextMenuClose();\n };\n event.addListener(text, \"mouseup\", onContextMenu, host);\n event.addListener(text, \"mousedown\", function (e) {\n e.preventDefault();\n onContextMenuClose();\n }, host);\n event.addListener(host.renderer.scroller, \"contextmenu\", onContextMenu, host);\n event.addListener(text, \"contextmenu\", onContextMenu, host);\n if (isIOS)\n addIosSelectionHandler(parentNode, host, text);\n function addIosSelectionHandler(parentNode, host, text) {\n var typingResetTimeout = null;\n var typing = false;\n text.addEventListener(\"keydown\", function (e) {\n if (typingResetTimeout)\n clearTimeout(typingResetTimeout);\n typing = true;\n }, true);\n text.addEventListener(\"keyup\", function (e) {\n typingResetTimeout = setTimeout(function () {\n typing = false;\n }, 100);\n }, true);\n var detectArrowKeys = function (e) {\n if (document.activeElement !== text)\n return;\n if (typing || inComposition || host.$mouseHandler.isMousePressed)\n return;\n if (copied) {\n return;\n }\n var selectionStart = text.selectionStart;\n var selectionEnd = text.selectionEnd;\n var key = null;\n var modifier = 0;\n if (selectionStart == 0) {\n key = KEYS.up;\n }\n else if (selectionStart == 1) {\n key = KEYS.home;\n }\n else if (selectionEnd > lastSelectionEnd && lastValue[selectionEnd] == \"\\n\") {\n key = KEYS.end;\n }\n else if (selectionStart < lastSelectionStart && lastValue[selectionStart - 1] == \" \") {\n key = KEYS.left;\n modifier = MODS.option;\n }\n else if (selectionStart < lastSelectionStart\n || (selectionStart == lastSelectionStart\n && lastSelectionEnd != lastSelectionStart\n && selectionStart == selectionEnd)) {\n key = KEYS.left;\n }\n else if (selectionEnd > lastSelectionEnd && lastValue.slice(0, selectionEnd).split(\"\\n\").length > 2) {\n key = KEYS.down;\n }\n else if (selectionEnd > lastSelectionEnd && lastValue[selectionEnd - 1] == \" \") {\n key = KEYS.right;\n modifier = MODS.option;\n }\n else if (selectionEnd > lastSelectionEnd\n || (selectionEnd == lastSelectionEnd\n && lastSelectionEnd != lastSelectionStart\n && selectionStart == selectionEnd)) {\n key = KEYS.right;\n }\n if (selectionStart !== selectionEnd)\n modifier |= MODS.shift;\n if (key) {\n var result = host.onCommandKey({}, modifier, key);\n if (!result && host.commands) {\n key = KEYS.keyCodeToString(key);\n var command = host.commands.findKeyCommand(modifier, key);\n if (command)\n host.execCommand(command);\n }\n lastSelectionStart = selectionStart;\n lastSelectionEnd = selectionEnd;\n resetSelection(\"\");\n }\n };\n document.addEventListener(\"selectionchange\", detectArrowKeys);\n host.on(\"destroy\", function () {\n document.removeEventListener(\"selectionchange\", detectArrowKeys);\n });\n }\n this.destroy = function () {\n if (text.parentElement)\n text.parentElement.removeChild(text);\n };\n};\nexports.TextInput = TextInput;\nexports.$setUserAgentForTests = function (_isMobile, _isIOS) {\n isMobile = _isMobile;\n isIOS = _isIOS;\n};\n\n});\n\nace.define(\"ace/mouse/default_handlers\",[\"require\",\"exports\",\"module\",\"ace/lib/useragent\"], function(require, exports, module){\"use strict\";\nvar useragent = require(\"../lib/useragent\");\nvar DRAG_OFFSET = 0; // pixels\nvar SCROLL_COOLDOWN_T = 550; // milliseconds\nvar DefaultHandlers = /** @class */ (function () {\n function DefaultHandlers(mouseHandler) {\n mouseHandler.$clickSelection = null;\n var editor = mouseHandler.editor;\n editor.setDefaultHandler(\"mousedown\", this.onMouseDown.bind(mouseHandler));\n editor.setDefaultHandler(\"dblclick\", this.onDoubleClick.bind(mouseHandler));\n editor.setDefaultHandler(\"tripleclick\", this.onTripleClick.bind(mouseHandler));\n editor.setDefaultHandler(\"quadclick\", this.onQuadClick.bind(mouseHandler));\n editor.setDefaultHandler(\"mousewheel\", this.onMouseWheel.bind(mouseHandler));\n var exports = [\"select\", \"startSelect\", \"selectEnd\", \"selectAllEnd\", \"selectByWordsEnd\",\n \"selectByLinesEnd\", \"dragWait\", \"dragWaitEnd\", \"focusWait\"];\n exports.forEach(function (x) {\n mouseHandler[x] = this[x];\n }, this);\n mouseHandler.selectByLines = this.extendSelectionBy.bind(mouseHandler, \"getLineRange\");\n mouseHandler.selectByWords = this.extendSelectionBy.bind(mouseHandler, \"getWordRange\");\n }\n DefaultHandlers.prototype.onMouseDown = function (ev) {\n var inSelection = ev.inSelection();\n var pos = ev.getDocumentPosition();\n this.mousedownEvent = ev;\n var editor = this.editor;\n var button = ev.getButton();\n if (button !== 0) {\n var selectionRange = editor.getSelectionRange();\n var selectionEmpty = selectionRange.isEmpty();\n if (selectionEmpty || button == 1)\n editor.selection.moveToPosition(pos);\n if (button == 2) {\n editor.textInput.onContextMenu(ev.domEvent);\n if (!useragent.isMozilla)\n ev.preventDefault();\n }\n return;\n }\n this.mousedownEvent.time = Date.now();\n if (inSelection && !editor.isFocused()) {\n editor.focus();\n if (this.$focusTimeout && !this.$clickSelection && !editor.inMultiSelectMode) {\n this.setState(\"focusWait\");\n this.captureMouse(ev);\n return;\n }\n }\n this.captureMouse(ev);\n this.startSelect(pos, ev.domEvent._clicks > 1);\n return ev.preventDefault();\n };\n DefaultHandlers.prototype.startSelect = function (pos, waitForClickSelection) {\n pos = pos || this.editor.renderer.screenToTextCoordinates(this.x, this.y);\n var editor = this.editor;\n if (!this.mousedownEvent)\n return;\n if (this.mousedownEvent.getShiftKey())\n editor.selection.selectToPosition(pos);\n else if (!waitForClickSelection)\n editor.selection.moveToPosition(pos);\n if (!waitForClickSelection)\n this.select();\n editor.setStyle(\"ace_selecting\");\n this.setState(\"select\");\n };\n DefaultHandlers.prototype.select = function () {\n var anchor, editor = this.editor;\n var cursor = editor.renderer.screenToTextCoordinates(this.x, this.y);\n if (this.$clickSelection) {\n var cmp = this.$clickSelection.comparePoint(cursor);\n if (cmp == -1) {\n anchor = this.$clickSelection.end;\n }\n else if (cmp == 1) {\n anchor = this.$clickSelection.start;\n }\n else {\n var orientedRange = calcRangeOrientation(this.$clickSelection, cursor);\n cursor = orientedRange.cursor;\n anchor = orientedRange.anchor;\n }\n editor.selection.setSelectionAnchor(anchor.row, anchor.column);\n }\n editor.selection.selectToPosition(cursor);\n editor.renderer.scrollCursorIntoView();\n };\n DefaultHandlers.prototype.extendSelectionBy = function (unitName) {\n var anchor, editor = this.editor;\n var cursor = editor.renderer.screenToTextCoordinates(this.x, this.y);\n var range = editor.selection[unitName](cursor.row, cursor.column);\n if (this.$clickSelection) {\n var cmpStart = this.$clickSelection.comparePoint(range.start);\n var cmpEnd = this.$clickSelection.comparePoint(range.end);\n if (cmpStart == -1 && cmpEnd <= 0) {\n anchor = this.$clickSelection.end;\n if (range.end.row != cursor.row || range.end.column != cursor.column)\n cursor = range.start;\n }\n else if (cmpEnd == 1 && cmpStart >= 0) {\n anchor = this.$clickSelection.start;\n if (range.start.row != cursor.row || range.start.column != cursor.column)\n cursor = range.end;\n }\n else if (cmpStart == -1 && cmpEnd == 1) {\n cursor = range.end;\n anchor = range.start;\n }\n else {\n var orientedRange = calcRangeOrientation(this.$clickSelection, cursor);\n cursor = orientedRange.cursor;\n anchor = orientedRange.anchor;\n }\n editor.selection.setSelectionAnchor(anchor.row, anchor.column);\n }\n editor.selection.selectToPosition(cursor);\n editor.renderer.scrollCursorIntoView();\n };\n DefaultHandlers.prototype.selectByLinesEnd = function () {\n this.$clickSelection = null;\n this.editor.unsetStyle(\"ace_selecting\");\n };\n DefaultHandlers.prototype.focusWait = function () {\n var distance = calcDistance(this.mousedownEvent.x, this.mousedownEvent.y, this.x, this.y);\n var time = Date.now();\n if (distance > DRAG_OFFSET || time - this.mousedownEvent.time > this.$focusTimeout)\n this.startSelect(this.mousedownEvent.getDocumentPosition());\n };\n DefaultHandlers.prototype.onDoubleClick = function (ev) {\n var pos = ev.getDocumentPosition();\n var editor = this.editor;\n var session = editor.session;\n var range = session.getBracketRange(pos);\n if (range) {\n if (range.isEmpty()) {\n range.start.column--;\n range.end.column++;\n }\n this.setState(\"select\");\n }\n else {\n range = editor.selection.getWordRange(pos.row, pos.column);\n this.setState(\"selectByWords\");\n }\n this.$clickSelection = range;\n this.select();\n };\n DefaultHandlers.prototype.onTripleClick = function (ev) {\n var pos = ev.getDocumentPosition();\n var editor = this.editor;\n this.setState(\"selectByLines\");\n var range = editor.getSelectionRange();\n if (range.isMultiLine() && range.contains(pos.row, pos.column)) {\n this.$clickSelection = editor.selection.getLineRange(range.start.row);\n this.$clickSelection.end = editor.selection.getLineRange(range.end.row).end;\n }\n else {\n this.$clickSelection = editor.selection.getLineRange(pos.row);\n }\n this.select();\n };\n DefaultHandlers.prototype.onQuadClick = function (ev) {\n var editor = this.editor;\n editor.selectAll();\n this.$clickSelection = editor.getSelectionRange();\n this.setState(\"selectAll\");\n };\n DefaultHandlers.prototype.onMouseWheel = function (ev) {\n if (ev.getAccelKey())\n return;\n if (ev.getShiftKey() && ev.wheelY && !ev.wheelX) {\n ev.wheelX = ev.wheelY;\n ev.wheelY = 0;\n }\n var editor = this.editor;\n if (!this.$lastScroll)\n this.$lastScroll = { t: 0, vx: 0, vy: 0, allowed: 0 };\n var prevScroll = this.$lastScroll;\n var t = ev.domEvent.timeStamp;\n var dt = t - prevScroll.t;\n var vx = dt ? ev.wheelX / dt : prevScroll.vx;\n var vy = dt ? ev.wheelY / dt : prevScroll.vy;\n if (dt < SCROLL_COOLDOWN_T) {\n vx = (vx + prevScroll.vx) / 2;\n vy = (vy + prevScroll.vy) / 2;\n }\n var direction = Math.abs(vx / vy);\n var canScroll = false;\n if (direction >= 1 && editor.renderer.isScrollableBy(ev.wheelX * ev.speed, 0))\n canScroll = true;\n if (direction <= 1 && editor.renderer.isScrollableBy(0, ev.wheelY * ev.speed))\n canScroll = true;\n if (canScroll) {\n prevScroll.allowed = t;\n }\n else if (t - prevScroll.allowed < SCROLL_COOLDOWN_T) {\n var isSlower = Math.abs(vx) <= 1.5 * Math.abs(prevScroll.vx)\n && Math.abs(vy) <= 1.5 * Math.abs(prevScroll.vy);\n if (isSlower) {\n canScroll = true;\n prevScroll.allowed = t;\n }\n else {\n prevScroll.allowed = 0;\n }\n }\n prevScroll.t = t;\n prevScroll.vx = vx;\n prevScroll.vy = vy;\n if (canScroll) {\n editor.renderer.scrollBy(ev.wheelX * ev.speed, ev.wheelY * ev.speed);\n return ev.stop();\n }\n };\n return DefaultHandlers;\n}());\nDefaultHandlers.prototype.selectEnd = DefaultHandlers.prototype.selectByLinesEnd;\nDefaultHandlers.prototype.selectAllEnd = DefaultHandlers.prototype.selectByLinesEnd;\nDefaultHandlers.prototype.selectByWordsEnd = DefaultHandlers.prototype.selectByLinesEnd;\nexports.DefaultHandlers = DefaultHandlers;\nfunction calcDistance(ax, ay, bx, by) {\n return Math.sqrt(Math.pow(bx - ax, 2) + Math.pow(by - ay, 2));\n}\nfunction calcRangeOrientation(range, cursor) {\n if (range.start.row == range.end.row)\n var cmp = 2 * cursor.column - range.start.column - range.end.column;\n else if (range.start.row == range.end.row - 1 && !range.start.column && !range.end.column)\n var cmp = cursor.column - 4;\n else\n var cmp = 2 * cursor.row - range.start.row - range.end.row;\n if (cmp < 0)\n return { cursor: range.start, anchor: range.end };\n else\n return { cursor: range.end, anchor: range.start };\n}\n\n});\n\nace.define(\"ace/tooltip\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\",\"ace/lib/event\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar dom = require(\"./lib/dom\");\nvar event = require(\"./lib/event\");\nvar Range = require(\"./range\").Range;\nvar CLASSNAME = \"ace_tooltip\";\nvar Tooltip = /** @class */ (function () {\n function Tooltip(parentNode) {\n this.isOpen = false;\n this.$element = null;\n this.$parentNode = parentNode;\n }\n Tooltip.prototype.$init = function () {\n this.$element = dom.createElement(\"div\");\n this.$element.className = CLASSNAME;\n this.$element.style.display = \"none\";\n this.$parentNode.appendChild(this.$element);\n return this.$element;\n };\n Tooltip.prototype.getElement = function () {\n return this.$element || this.$init();\n };\n Tooltip.prototype.setText = function (text) {\n this.getElement().textContent = text;\n };\n Tooltip.prototype.setHtml = function (html) {\n this.getElement().innerHTML = html;\n };\n Tooltip.prototype.setPosition = function (x, y) {\n this.getElement().style.left = x + \"px\";\n this.getElement().style.top = y + \"px\";\n };\n Tooltip.prototype.setClassName = function (className) {\n dom.addCssClass(this.getElement(), className);\n };\n Tooltip.prototype.setTheme = function (theme) {\n this.$element.className = CLASSNAME + \" \" +\n (theme.isDark ? \"ace_dark \" : \"\") + (theme.cssClass || \"\");\n };\n Tooltip.prototype.show = function (text, x, y) {\n if (text != null)\n this.setText(text);\n if (x != null && y != null)\n this.setPosition(x, y);\n if (!this.isOpen) {\n this.getElement().style.display = \"block\";\n this.isOpen = true;\n }\n };\n Tooltip.prototype.hide = function () {\n if (this.isOpen) {\n this.getElement().style.display = \"none\";\n this.getElement().className = CLASSNAME;\n this.isOpen = false;\n }\n };\n Tooltip.prototype.getHeight = function () {\n return this.getElement().offsetHeight;\n };\n Tooltip.prototype.getWidth = function () {\n return this.getElement().offsetWidth;\n };\n Tooltip.prototype.destroy = function () {\n this.isOpen = false;\n if (this.$element && this.$element.parentNode) {\n this.$element.parentNode.removeChild(this.$element);\n }\n };\n return Tooltip;\n}());\nvar PopupManager = /** @class */ (function () {\n function PopupManager() {\n this.popups = [];\n }\n PopupManager.prototype.addPopup = function (popup) {\n this.popups.push(popup);\n this.updatePopups();\n };\n PopupManager.prototype.removePopup = function (popup) {\n var index = this.popups.indexOf(popup);\n if (index !== -1) {\n this.popups.splice(index, 1);\n this.updatePopups();\n }\n };\n PopupManager.prototype.updatePopups = function () {\n var e_1, _a, e_2, _b;\n this.popups.sort(function (a, b) { return b.priority - a.priority; });\n var visiblepopups = [];\n try {\n for (var _c = __values(this.popups), _d = _c.next(); !_d.done; _d = _c.next()) {\n var popup = _d.value;\n var shouldDisplay = true;\n try {\n for (var visiblepopups_1 = (e_2 = void 0, __values(visiblepopups)), visiblepopups_1_1 = visiblepopups_1.next(); !visiblepopups_1_1.done; visiblepopups_1_1 = visiblepopups_1.next()) {\n var visiblePopup = visiblepopups_1_1.value;\n if (this.doPopupsOverlap(visiblePopup, popup)) {\n shouldDisplay = false;\n break;\n }\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (visiblepopups_1_1 && !visiblepopups_1_1.done && (_b = visiblepopups_1.return)) _b.call(visiblepopups_1);\n }\n finally { if (e_2) throw e_2.error; }\n }\n if (shouldDisplay) {\n visiblepopups.push(popup);\n }\n else {\n popup.hide();\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_d && !_d.done && (_a = _c.return)) _a.call(_c);\n }\n finally { if (e_1) throw e_1.error; }\n }\n };\n PopupManager.prototype.doPopupsOverlap = function (popupA, popupB) {\n var rectA = popupA.getElement().getBoundingClientRect();\n var rectB = popupB.getElement().getBoundingClientRect();\n return (rectA.left < rectB.right && rectA.right > rectB.left && rectA.top < rectB.bottom && rectA.bottom\n > rectB.top);\n };\n return PopupManager;\n}());\nvar popupManager = new PopupManager();\nexports.popupManager = popupManager;\nexports.Tooltip = Tooltip;\nvar HoverTooltip = /** @class */ (function (_super) {\n __extends(HoverTooltip, _super);\n function HoverTooltip(parentNode) {\n if (parentNode === void 0) { parentNode = document.body; }\n var _this = _super.call(this, parentNode) || this;\n _this.timeout = undefined;\n _this.lastT = 0;\n _this.idleTime = 350;\n _this.lastEvent = undefined;\n _this.onMouseOut = _this.onMouseOut.bind(_this);\n _this.onMouseMove = _this.onMouseMove.bind(_this);\n _this.waitForHover = _this.waitForHover.bind(_this);\n _this.hide = _this.hide.bind(_this);\n var el = _this.getElement();\n el.style.whiteSpace = \"pre-wrap\";\n el.style.pointerEvents = \"auto\";\n el.addEventListener(\"mouseout\", _this.onMouseOut);\n el.tabIndex = -1;\n el.addEventListener(\"blur\", function () {\n if (!el.contains(document.activeElement))\n this.hide();\n }.bind(_this));\n el.addEventListener(\"wheel\", event.stopPropagation);\n return _this;\n }\n HoverTooltip.prototype.addToEditor = function (editor) {\n editor.on(\"mousemove\", this.onMouseMove);\n editor.on(\"mousedown\", this.hide);\n editor.renderer.getMouseEventTarget().addEventListener(\"mouseout\", this.onMouseOut, true);\n };\n HoverTooltip.prototype.removeFromEditor = function (editor) {\n editor.off(\"mousemove\", this.onMouseMove);\n editor.off(\"mousedown\", this.hide);\n editor.renderer.getMouseEventTarget().removeEventListener(\"mouseout\", this.onMouseOut, true);\n if (this.timeout) {\n clearTimeout(this.timeout);\n this.timeout = null;\n }\n };\n HoverTooltip.prototype.onMouseMove = function (e, editor) {\n this.lastEvent = e;\n this.lastT = Date.now();\n var isMousePressed = editor.$mouseHandler.isMousePressed;\n if (this.isOpen) {\n var pos = this.lastEvent && this.lastEvent.getDocumentPosition();\n if (!this.range\n || !this.range.contains(pos.row, pos.column)\n || isMousePressed\n || this.isOutsideOfText(this.lastEvent)) {\n this.hide();\n }\n }\n if (this.timeout || isMousePressed)\n return;\n this.lastEvent = e;\n this.timeout = setTimeout(this.waitForHover, this.idleTime);\n };\n HoverTooltip.prototype.waitForHover = function () {\n if (this.timeout)\n clearTimeout(this.timeout);\n var dt = Date.now() - this.lastT;\n if (this.idleTime - dt > 10) {\n this.timeout = setTimeout(this.waitForHover, this.idleTime - dt);\n return;\n }\n this.timeout = null;\n if (this.lastEvent && !this.isOutsideOfText(this.lastEvent)) {\n this.$gatherData(this.lastEvent, this.lastEvent.editor);\n }\n };\n HoverTooltip.prototype.isOutsideOfText = function (e) {\n var editor = e.editor;\n var docPos = e.getDocumentPosition();\n var line = editor.session.getLine(docPos.row);\n if (docPos.column == line.length) {\n var screenPos = editor.renderer.pixelToScreenCoordinates(e.clientX, e.clientY);\n var clippedPos = editor.session.documentToScreenPosition(docPos.row, docPos.column);\n if (clippedPos.column != screenPos.column\n || clippedPos.row != screenPos.row) {\n return true;\n }\n }\n return false;\n };\n HoverTooltip.prototype.setDataProvider = function (value) {\n this.$gatherData = value;\n };\n HoverTooltip.prototype.showForRange = function (editor, range, domNode, startingEvent) {\n var MARGIN = 10;\n if (startingEvent && startingEvent != this.lastEvent)\n return;\n if (this.isOpen && document.activeElement == this.getElement())\n return;\n var renderer = editor.renderer;\n if (!this.isOpen) {\n popupManager.addPopup(this);\n this.$registerCloseEvents();\n this.setTheme(renderer.theme);\n }\n this.isOpen = true;\n this.addMarker(range, editor.session);\n this.range = Range.fromPoints(range.start, range.end);\n var position = renderer.textToScreenCoordinates(range.start.row, range.start.column);\n var rect = renderer.scroller.getBoundingClientRect();\n if (position.pageX < rect.left)\n position.pageX = rect.left;\n var element = this.getElement();\n element.innerHTML = \"\";\n element.appendChild(domNode);\n element.style.maxHeight = \"\";\n element.style.display = \"block\";\n var labelHeight = element.clientHeight;\n var labelWidth = element.clientWidth;\n var spaceBelow = window.innerHeight - position.pageY - renderer.lineHeight;\n var isAbove = true;\n if (position.pageY - labelHeight < 0 && position.pageY < spaceBelow) {\n isAbove = false;\n }\n element.style.maxHeight = (isAbove ? position.pageY : spaceBelow) - MARGIN + \"px\";\n element.style.top = isAbove ? \"\" : position.pageY + renderer.lineHeight + \"px\";\n element.style.bottom = isAbove ? window.innerHeight - position.pageY + \"px\" : \"\";\n element.style.left = Math.min(position.pageX, window.innerWidth - labelWidth - MARGIN) + \"px\";\n };\n HoverTooltip.prototype.addMarker = function (range, session) {\n if (this.marker) {\n this.$markerSession.removeMarker(this.marker);\n }\n this.$markerSession = session;\n this.marker = session && session.addMarker(range, \"ace_highlight-marker\", \"text\");\n };\n HoverTooltip.prototype.hide = function (e) {\n if (!e && document.activeElement == this.getElement())\n return;\n if (e && e.target && (e.type != \"keydown\" || e.ctrlKey || e.metaKey) && this.$element.contains(e.target))\n return;\n this.lastEvent = null;\n if (this.timeout)\n clearTimeout(this.timeout);\n this.timeout = null;\n this.addMarker(null);\n if (this.isOpen) {\n this.$removeCloseEvents();\n this.getElement().style.display = \"none\";\n this.isOpen = false;\n popupManager.removePopup(this);\n }\n };\n HoverTooltip.prototype.$registerCloseEvents = function () {\n window.addEventListener(\"keydown\", this.hide, true);\n window.addEventListener(\"wheel\", this.hide, true);\n window.addEventListener(\"mousedown\", this.hide, true);\n };\n HoverTooltip.prototype.$removeCloseEvents = function () {\n window.removeEventListener(\"keydown\", this.hide, true);\n window.removeEventListener(\"wheel\", this.hide, true);\n window.removeEventListener(\"mousedown\", this.hide, true);\n };\n HoverTooltip.prototype.onMouseOut = function (e) {\n if (this.timeout) {\n clearTimeout(this.timeout);\n this.timeout = null;\n }\n this.lastEvent = null;\n if (!this.isOpen)\n return;\n if (!e.relatedTarget || this.getElement().contains(e.relatedTarget))\n return;\n if (e && e.currentTarget.contains(e.relatedTarget))\n return;\n if (!e.relatedTarget.classList.contains(\"ace_content\"))\n this.hide();\n };\n return HoverTooltip;\n}(Tooltip));\nexports.HoverTooltip = HoverTooltip;\n\n});\n\nace.define(\"ace/mouse/default_gutter_handler\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\",\"ace/lib/event\",\"ace/tooltip\",\"ace/config\"], function(require, exports, module){\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar dom = require(\"../lib/dom\");\nvar event = require(\"../lib/event\");\nvar Tooltip = require(\"../tooltip\").Tooltip;\nvar nls = require(\"../config\").nls;\nfunction GutterHandler(mouseHandler) {\n var editor = mouseHandler.editor;\n var gutter = editor.renderer.$gutterLayer;\n var tooltip = new GutterTooltip(editor);\n mouseHandler.editor.setDefaultHandler(\"guttermousedown\", function (e) {\n if (!editor.isFocused() || e.getButton() != 0)\n return;\n var gutterRegion = gutter.getRegion(e);\n if (gutterRegion == \"foldWidgets\")\n return;\n var row = e.getDocumentPosition().row;\n var selection = editor.session.selection;\n if (e.getShiftKey())\n selection.selectTo(row, 0);\n else {\n if (e.domEvent.detail == 2) {\n editor.selectAll();\n return e.preventDefault();\n }\n mouseHandler.$clickSelection = editor.selection.getLineRange(row);\n }\n mouseHandler.setState(\"selectByLines\");\n mouseHandler.captureMouse(e);\n return e.preventDefault();\n });\n var tooltipTimeout, mouseEvent;\n function showTooltip() {\n var row = mouseEvent.getDocumentPosition().row;\n var maxRow = editor.session.getLength();\n if (row == maxRow) {\n var screenRow = editor.renderer.pixelToScreenCoordinates(0, mouseEvent.y).row;\n var pos = mouseEvent.$pos;\n if (screenRow > editor.session.documentToScreenRow(pos.row, pos.column))\n return hideTooltip();\n }\n tooltip.showTooltip(row);\n if (!tooltip.isOpen)\n return;\n editor.on(\"mousewheel\", hideTooltip);\n if (mouseHandler.$tooltipFollowsMouse) {\n moveTooltip(mouseEvent);\n }\n else {\n var gutterRow = mouseEvent.getGutterRow();\n var gutterCell = gutter.$lines.get(gutterRow);\n if (gutterCell) {\n var gutterElement = gutterCell.element.querySelector(\".ace_gutter_annotation\");\n var rect = gutterElement.getBoundingClientRect();\n var style = tooltip.getElement().style;\n style.left = rect.right + \"px\";\n style.top = rect.bottom + \"px\";\n }\n else {\n moveTooltip(mouseEvent);\n }\n }\n }\n function hideTooltip() {\n if (tooltipTimeout)\n tooltipTimeout = clearTimeout(tooltipTimeout);\n if (tooltip.isOpen) {\n tooltip.hideTooltip();\n editor.off(\"mousewheel\", hideTooltip);\n }\n }\n function moveTooltip(e) {\n tooltip.setPosition(e.x, e.y);\n }\n mouseHandler.editor.setDefaultHandler(\"guttermousemove\", function (e) {\n var target = e.domEvent.target || e.domEvent.srcElement;\n if (dom.hasCssClass(target, \"ace_fold-widget\"))\n return hideTooltip();\n if (tooltip.isOpen && mouseHandler.$tooltipFollowsMouse)\n moveTooltip(e);\n mouseEvent = e;\n if (tooltipTimeout)\n return;\n tooltipTimeout = setTimeout(function () {\n tooltipTimeout = null;\n if (mouseEvent && !mouseHandler.isMousePressed)\n showTooltip();\n else\n hideTooltip();\n }, 50);\n });\n event.addListener(editor.renderer.$gutter, \"mouseout\", function (e) {\n mouseEvent = null;\n if (!tooltip.isOpen || tooltipTimeout)\n return;\n tooltipTimeout = setTimeout(function () {\n tooltipTimeout = null;\n hideTooltip();\n }, 50);\n }, editor);\n editor.on(\"changeSession\", hideTooltip);\n editor.on(\"input\", hideTooltip);\n}\nexports.GutterHandler = GutterHandler;\nvar GutterTooltip = /** @class */ (function (_super) {\n __extends(GutterTooltip, _super);\n function GutterTooltip(editor) {\n var _this = _super.call(this, editor.container) || this;\n _this.editor = editor;\n return _this;\n }\n GutterTooltip.prototype.setPosition = function (x, y) {\n var windowWidth = window.innerWidth || document.documentElement.clientWidth;\n var windowHeight = window.innerHeight || document.documentElement.clientHeight;\n var width = this.getWidth();\n var height = this.getHeight();\n x += 15;\n y += 15;\n if (x + width > windowWidth) {\n x -= (x + width) - windowWidth;\n }\n if (y + height > windowHeight) {\n y -= 20 + height;\n }\n Tooltip.prototype.setPosition.call(this, x, y);\n };\n Object.defineProperty(GutterTooltip, \"annotationLabels\", {\n get: function () {\n return {\n error: { singular: nls(\"error\"), plural: nls(\"errors\") },\n warning: { singular: nls(\"warning\"), plural: nls(\"warnings\") },\n info: { singular: nls(\"information message\"), plural: nls(\"information messages\") }\n };\n },\n enumerable: false,\n configurable: true\n });\n GutterTooltip.prototype.showTooltip = function (row) {\n var gutter = this.editor.renderer.$gutterLayer;\n var annotationsInRow = gutter.$annotations[row];\n var annotation;\n if (annotationsInRow)\n annotation = { text: Array.from(annotationsInRow.text), type: Array.from(annotationsInRow.type) };\n else\n annotation = { text: [], type: [] };\n var fold = gutter.session.getFoldLine(row);\n if (fold && gutter.$showFoldedAnnotations) {\n var annotationsInFold = { error: [], warning: [], info: [] };\n var mostSevereAnnotationInFoldType;\n for (var i = row + 1; i <= fold.end.row; i++) {\n if (!gutter.$annotations[i])\n continue;\n for (var j = 0; j < gutter.$annotations[i].text.length; j++) {\n var annotationType = gutter.$annotations[i].type[j];\n annotationsInFold[annotationType].push(gutter.$annotations[i].text[j]);\n if (annotationType === \"error\") {\n mostSevereAnnotationInFoldType = \"error_fold\";\n continue;\n }\n if (annotationType === \"warning\") {\n mostSevereAnnotationInFoldType = \"warning_fold\";\n continue;\n }\n }\n }\n if (mostSevereAnnotationInFoldType === \"error_fold\" || mostSevereAnnotationInFoldType === \"warning_fold\") {\n var summaryFoldedAnnotations = \"\".concat(GutterTooltip.annotationsToSummaryString(annotationsInFold), \" in folded code.\");\n annotation.text.push(summaryFoldedAnnotations);\n annotation.type.push(mostSevereAnnotationInFoldType);\n }\n }\n if (annotation.text.length === 0)\n return this.hide();\n var annotationMessages = { error: [], warning: [], info: [] };\n var iconClassName = gutter.$useSvgGutterIcons ? \"ace_icon_svg\" : \"ace_icon\";\n for (var i = 0; i < annotation.text.length; i++) {\n var line = \" \").concat(annotation.text[i]);\n annotationMessages[annotation.type[i].replace(\"_fold\", \"\")].push(line);\n }\n var tooltipContent = [].concat(annotationMessages.error, annotationMessages.warning, annotationMessages.info).join(\"
    \");\n this.setHtml(tooltipContent);\n this.$element.setAttribute(\"aria-live\", \"polite\");\n if (!this.isOpen) {\n this.setTheme(this.editor.renderer.theme);\n this.setClassName(\"ace_gutter-tooltip\");\n }\n this.show();\n this.editor._signal(\"showGutterTooltip\", this);\n };\n GutterTooltip.prototype.hideTooltip = function () {\n this.$element.removeAttribute(\"aria-live\");\n this.hide();\n this.editor._signal(\"hideGutterTooltip\", this);\n };\n GutterTooltip.annotationsToSummaryString = function (annotations) {\n var e_1, _a;\n var summary = [];\n var annotationTypes = ['error', 'warning', 'info'];\n try {\n for (var annotationTypes_1 = __values(annotationTypes), annotationTypes_1_1 = annotationTypes_1.next(); !annotationTypes_1_1.done; annotationTypes_1_1 = annotationTypes_1.next()) {\n var annotationType = annotationTypes_1_1.value;\n if (!annotations[annotationType].length)\n continue;\n var label = annotations[annotationType].length === 1 ? GutterTooltip.annotationLabels[annotationType].singular : GutterTooltip.annotationLabels[annotationType].plural;\n summary.push(\"\".concat(annotations[annotationType].length, \" \").concat(label));\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (annotationTypes_1_1 && !annotationTypes_1_1.done && (_a = annotationTypes_1.return)) _a.call(annotationTypes_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return summary.join(\", \");\n };\n return GutterTooltip;\n}(Tooltip));\nexports.GutterTooltip = GutterTooltip;\n\n});\n\nace.define(\"ace/mouse/mouse_event\",[\"require\",\"exports\",\"module\",\"ace/lib/event\",\"ace/lib/useragent\"], function(require, exports, module){\"use strict\";\nvar event = require(\"../lib/event\");\nvar useragent = require(\"../lib/useragent\");\nvar MouseEvent = /** @class */ (function () {\n function MouseEvent(domEvent, editor) {\n this.domEvent = domEvent;\n this.editor = editor;\n this.x = this.clientX = domEvent.clientX;\n this.y = this.clientY = domEvent.clientY;\n this.$pos = null;\n this.$inSelection = null;\n this.propagationStopped = false;\n this.defaultPrevented = false;\n }\n MouseEvent.prototype.stopPropagation = function () {\n event.stopPropagation(this.domEvent);\n this.propagationStopped = true;\n };\n MouseEvent.prototype.preventDefault = function () {\n event.preventDefault(this.domEvent);\n this.defaultPrevented = true;\n };\n MouseEvent.prototype.stop = function () {\n this.stopPropagation();\n this.preventDefault();\n };\n MouseEvent.prototype.getDocumentPosition = function () {\n if (this.$pos)\n return this.$pos;\n this.$pos = this.editor.renderer.screenToTextCoordinates(this.clientX, this.clientY);\n return this.$pos;\n };\n MouseEvent.prototype.getGutterRow = function () {\n var documentRow = this.getDocumentPosition().row;\n var screenRow = this.editor.session.documentToScreenRow(documentRow, 0);\n var screenTopRow = this.editor.session.documentToScreenRow(this.editor.renderer.$gutterLayer.$lines.get(0).row, 0);\n return screenRow - screenTopRow;\n };\n MouseEvent.prototype.inSelection = function () {\n if (this.$inSelection !== null)\n return this.$inSelection;\n var editor = this.editor;\n var selectionRange = editor.getSelectionRange();\n if (selectionRange.isEmpty())\n this.$inSelection = false;\n else {\n var pos = this.getDocumentPosition();\n this.$inSelection = selectionRange.contains(pos.row, pos.column);\n }\n return this.$inSelection;\n };\n MouseEvent.prototype.getButton = function () {\n return event.getButton(this.domEvent);\n };\n MouseEvent.prototype.getShiftKey = function () {\n return this.domEvent.shiftKey;\n };\n MouseEvent.prototype.getAccelKey = function () {\n return useragent.isMac ? this.domEvent.metaKey : this.domEvent.ctrlKey;\n };\n return MouseEvent;\n}());\nexports.MouseEvent = MouseEvent;\n\n});\n\nace.define(\"ace/mouse/dragdrop_handler\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\",\"ace/lib/event\",\"ace/lib/useragent\"], function(require, exports, module){\"use strict\";\nvar dom = require(\"../lib/dom\");\nvar event = require(\"../lib/event\");\nvar useragent = require(\"../lib/useragent\");\nvar AUTOSCROLL_DELAY = 200;\nvar SCROLL_CURSOR_DELAY = 200;\nvar SCROLL_CURSOR_HYSTERESIS = 5;\nfunction DragdropHandler(mouseHandler) {\n var editor = mouseHandler.editor;\n var dragImage = dom.createElement(\"div\");\n dragImage.style.cssText = \"top:-100px;position:absolute;z-index:2147483647;opacity:0.5\";\n dragImage.textContent = \"\\xa0\";\n var exports = [\"dragWait\", \"dragWaitEnd\", \"startDrag\", \"dragReadyEnd\", \"onMouseDrag\"];\n exports.forEach(function (x) {\n mouseHandler[x] = this[x];\n }, this);\n editor.on(\"mousedown\", this.onMouseDown.bind(mouseHandler));\n var mouseTarget = editor.container;\n var dragSelectionMarker, x, y;\n var timerId, range;\n var dragCursor, counter = 0;\n var dragOperation;\n var isInternal;\n var autoScrollStartTime;\n var cursorMovedTime;\n var cursorPointOnCaretMoved;\n this.onDragStart = function (e) {\n if (this.cancelDrag || !mouseTarget.draggable) {\n var self = this;\n setTimeout(function () {\n self.startSelect();\n self.captureMouse(e);\n }, 0);\n return e.preventDefault();\n }\n range = editor.getSelectionRange();\n var dataTransfer = e.dataTransfer;\n dataTransfer.effectAllowed = editor.getReadOnly() ? \"copy\" : \"copyMove\";\n editor.container.appendChild(dragImage);\n dataTransfer.setDragImage && dataTransfer.setDragImage(dragImage, 0, 0);\n setTimeout(function () {\n editor.container.removeChild(dragImage);\n });\n dataTransfer.clearData();\n dataTransfer.setData(\"Text\", editor.session.getTextRange());\n isInternal = true;\n this.setState(\"drag\");\n };\n this.onDragEnd = function (e) {\n mouseTarget.draggable = false;\n isInternal = false;\n this.setState(null);\n if (!editor.getReadOnly()) {\n var dropEffect = e.dataTransfer.dropEffect;\n if (!dragOperation && dropEffect == \"move\")\n editor.session.remove(editor.getSelectionRange());\n editor.$resetCursorStyle();\n }\n this.editor.unsetStyle(\"ace_dragging\");\n this.editor.renderer.setCursorStyle(\"\");\n };\n this.onDragEnter = function (e) {\n if (editor.getReadOnly() || !canAccept(e.dataTransfer))\n return;\n x = e.clientX;\n y = e.clientY;\n if (!dragSelectionMarker)\n addDragMarker();\n counter++;\n e.dataTransfer.dropEffect = dragOperation = getDropEffect(e);\n return event.preventDefault(e);\n };\n this.onDragOver = function (e) {\n if (editor.getReadOnly() || !canAccept(e.dataTransfer))\n return;\n x = e.clientX;\n y = e.clientY;\n if (!dragSelectionMarker) {\n addDragMarker();\n counter++;\n }\n if (onMouseMoveTimer !== null)\n onMouseMoveTimer = null;\n e.dataTransfer.dropEffect = dragOperation = getDropEffect(e);\n return event.preventDefault(e);\n };\n this.onDragLeave = function (e) {\n counter--;\n if (counter <= 0 && dragSelectionMarker) {\n clearDragMarker();\n dragOperation = null;\n return event.preventDefault(e);\n }\n };\n this.onDrop = function (e) {\n if (!dragCursor)\n return;\n var dataTransfer = e.dataTransfer;\n if (isInternal) {\n switch (dragOperation) {\n case \"move\":\n if (range.contains(dragCursor.row, dragCursor.column)) {\n range = {\n start: dragCursor,\n end: dragCursor\n };\n }\n else {\n range = editor.moveText(range, dragCursor);\n }\n break;\n case \"copy\":\n range = editor.moveText(range, dragCursor, true);\n break;\n }\n }\n else {\n var dropData = dataTransfer.getData('Text');\n range = {\n start: dragCursor,\n end: editor.session.insert(dragCursor, dropData)\n };\n editor.focus();\n dragOperation = null;\n }\n clearDragMarker();\n return event.preventDefault(e);\n };\n event.addListener(mouseTarget, \"dragstart\", this.onDragStart.bind(mouseHandler), editor);\n event.addListener(mouseTarget, \"dragend\", this.onDragEnd.bind(mouseHandler), editor);\n event.addListener(mouseTarget, \"dragenter\", this.onDragEnter.bind(mouseHandler), editor);\n event.addListener(mouseTarget, \"dragover\", this.onDragOver.bind(mouseHandler), editor);\n event.addListener(mouseTarget, \"dragleave\", this.onDragLeave.bind(mouseHandler), editor);\n event.addListener(mouseTarget, \"drop\", this.onDrop.bind(mouseHandler), editor);\n function scrollCursorIntoView(cursor, prevCursor) {\n var now = Date.now();\n var vMovement = !prevCursor || cursor.row != prevCursor.row;\n var hMovement = !prevCursor || cursor.column != prevCursor.column;\n if (!cursorMovedTime || vMovement || hMovement) {\n editor.moveCursorToPosition(cursor);\n cursorMovedTime = now;\n cursorPointOnCaretMoved = { x: x, y: y };\n }\n else {\n var distance = calcDistance(cursorPointOnCaretMoved.x, cursorPointOnCaretMoved.y, x, y);\n if (distance > SCROLL_CURSOR_HYSTERESIS) {\n cursorMovedTime = null;\n }\n else if (now - cursorMovedTime >= SCROLL_CURSOR_DELAY) {\n editor.renderer.scrollCursorIntoView();\n cursorMovedTime = null;\n }\n }\n }\n function autoScroll(cursor, prevCursor) {\n var now = Date.now();\n var lineHeight = editor.renderer.layerConfig.lineHeight;\n var characterWidth = editor.renderer.layerConfig.characterWidth;\n var editorRect = editor.renderer.scroller.getBoundingClientRect();\n var offsets = {\n x: {\n left: x - editorRect.left,\n right: editorRect.right - x\n },\n y: {\n top: y - editorRect.top,\n bottom: editorRect.bottom - y\n }\n };\n var nearestXOffset = Math.min(offsets.x.left, offsets.x.right);\n var nearestYOffset = Math.min(offsets.y.top, offsets.y.bottom);\n var scrollCursor = { row: cursor.row, column: cursor.column };\n if (nearestXOffset / characterWidth <= 2) {\n scrollCursor.column += (offsets.x.left < offsets.x.right ? -3 : +2);\n }\n if (nearestYOffset / lineHeight <= 1) {\n scrollCursor.row += (offsets.y.top < offsets.y.bottom ? -1 : +1);\n }\n var vScroll = cursor.row != scrollCursor.row;\n var hScroll = cursor.column != scrollCursor.column;\n var vMovement = !prevCursor || cursor.row != prevCursor.row;\n if (vScroll || (hScroll && !vMovement)) {\n if (!autoScrollStartTime)\n autoScrollStartTime = now;\n else if (now - autoScrollStartTime >= AUTOSCROLL_DELAY)\n editor.renderer.scrollCursorIntoView(scrollCursor);\n }\n else {\n autoScrollStartTime = null;\n }\n }\n function onDragInterval() {\n var prevCursor = dragCursor;\n dragCursor = editor.renderer.screenToTextCoordinates(x, y);\n scrollCursorIntoView(dragCursor, prevCursor);\n autoScroll(dragCursor, prevCursor);\n }\n function addDragMarker() {\n range = editor.selection.toOrientedRange();\n dragSelectionMarker = editor.session.addMarker(range, \"ace_selection\", editor.getSelectionStyle());\n editor.clearSelection();\n if (editor.isFocused())\n editor.renderer.$cursorLayer.setBlinking(false);\n clearInterval(timerId);\n onDragInterval();\n timerId = setInterval(onDragInterval, 20);\n counter = 0;\n event.addListener(document, \"mousemove\", onMouseMove);\n }\n function clearDragMarker() {\n clearInterval(timerId);\n editor.session.removeMarker(dragSelectionMarker);\n dragSelectionMarker = null;\n editor.selection.fromOrientedRange(range);\n if (editor.isFocused() && !isInternal)\n editor.$resetCursorStyle();\n range = null;\n dragCursor = null;\n counter = 0;\n autoScrollStartTime = null;\n cursorMovedTime = null;\n event.removeListener(document, \"mousemove\", onMouseMove);\n }\n var onMouseMoveTimer = null;\n function onMouseMove() {\n if (onMouseMoveTimer == null) {\n onMouseMoveTimer = setTimeout(function () {\n if (onMouseMoveTimer != null && dragSelectionMarker)\n clearDragMarker();\n }, 20);\n }\n }\n function canAccept(dataTransfer) {\n var types = dataTransfer.types;\n return !types || Array.prototype.some.call(types, function (type) {\n return type == 'text/plain' || type == 'Text';\n });\n }\n function getDropEffect(e) {\n var copyAllowed = ['copy', 'copymove', 'all', 'uninitialized'];\n var moveAllowed = ['move', 'copymove', 'linkmove', 'all', 'uninitialized'];\n var copyModifierState = useragent.isMac ? e.altKey : e.ctrlKey;\n var effectAllowed = \"uninitialized\";\n try {\n effectAllowed = e.dataTransfer.effectAllowed.toLowerCase();\n }\n catch (e) { }\n var dropEffect = \"none\";\n if (copyModifierState && copyAllowed.indexOf(effectAllowed) >= 0)\n dropEffect = \"copy\";\n else if (moveAllowed.indexOf(effectAllowed) >= 0)\n dropEffect = \"move\";\n else if (copyAllowed.indexOf(effectAllowed) >= 0)\n dropEffect = \"copy\";\n return dropEffect;\n }\n}\n(function () {\n this.dragWait = function () {\n var interval = Date.now() - this.mousedownEvent.time;\n if (interval > this.editor.getDragDelay())\n this.startDrag();\n };\n this.dragWaitEnd = function () {\n var target = this.editor.container;\n target.draggable = false;\n this.startSelect(this.mousedownEvent.getDocumentPosition());\n this.selectEnd();\n };\n this.dragReadyEnd = function (e) {\n this.editor.$resetCursorStyle();\n this.editor.unsetStyle(\"ace_dragging\");\n this.editor.renderer.setCursorStyle(\"\");\n this.dragWaitEnd();\n };\n this.startDrag = function () {\n this.cancelDrag = false;\n var editor = this.editor;\n var target = editor.container;\n target.draggable = true;\n editor.renderer.$cursorLayer.setBlinking(false);\n editor.setStyle(\"ace_dragging\");\n var cursorStyle = useragent.isWin ? \"default\" : \"move\";\n editor.renderer.setCursorStyle(cursorStyle);\n this.setState(\"dragReady\");\n };\n this.onMouseDrag = function (e) {\n var target = this.editor.container;\n if (useragent.isIE && this.state == \"dragReady\") {\n var distance = calcDistance(this.mousedownEvent.x, this.mousedownEvent.y, this.x, this.y);\n if (distance > 3)\n target.dragDrop();\n }\n if (this.state === \"dragWait\") {\n var distance = calcDistance(this.mousedownEvent.x, this.mousedownEvent.y, this.x, this.y);\n if (distance > 0) {\n target.draggable = false;\n this.startSelect(this.mousedownEvent.getDocumentPosition());\n }\n }\n };\n this.onMouseDown = function (e) {\n if (!this.$dragEnabled)\n return;\n this.mousedownEvent = e;\n var editor = this.editor;\n var inSelection = e.inSelection();\n var button = e.getButton();\n var clickCount = e.domEvent.detail || 1;\n if (clickCount === 1 && button === 0 && inSelection) {\n if (e.editor.inMultiSelectMode && (e.getAccelKey() || e.getShiftKey()))\n return;\n this.mousedownEvent.time = Date.now();\n var eventTarget = e.domEvent.target || e.domEvent.srcElement;\n if (\"unselectable\" in eventTarget)\n eventTarget.unselectable = \"on\";\n if (editor.getDragDelay()) {\n if (useragent.isWebKit) {\n this.cancelDrag = true;\n var mouseTarget = editor.container;\n mouseTarget.draggable = true;\n }\n this.setState(\"dragWait\");\n }\n else {\n this.startDrag();\n }\n this.captureMouse(e, this.onMouseDrag.bind(this));\n e.defaultPrevented = true;\n }\n };\n}).call(DragdropHandler.prototype);\nfunction calcDistance(ax, ay, bx, by) {\n return Math.sqrt(Math.pow(bx - ax, 2) + Math.pow(by - ay, 2));\n}\nexports.DragdropHandler = DragdropHandler;\n\n});\n\nace.define(\"ace/mouse/touch_handler\",[\"require\",\"exports\",\"module\",\"ace/mouse/mouse_event\",\"ace/lib/event\",\"ace/lib/dom\"], function(require, exports, module){\"use strict\";\nvar MouseEvent = require(\"./mouse_event\").MouseEvent;\nvar event = require(\"../lib/event\");\nvar dom = require(\"../lib/dom\");\nexports.addTouchListeners = function (el, editor) {\n var mode = \"scroll\";\n var startX;\n var startY;\n var touchStartT;\n var lastT;\n var longTouchTimer;\n var animationTimer;\n var animationSteps = 0;\n var pos;\n var clickCount = 0;\n var vX = 0;\n var vY = 0;\n var pressed;\n var contextMenu;\n function createContextMenu() {\n var clipboard = window.navigator && window.navigator.clipboard;\n var isOpen = false;\n var updateMenu = function () {\n var selected = editor.getCopyText();\n var hasUndo = editor.session.getUndoManager().hasUndo();\n contextMenu.replaceChild(dom.buildDom(isOpen ? [\"span\",\n !selected && [\"span\", { class: \"ace_mobile-button\", action: \"selectall\" }, \"Select All\"],\n selected && [\"span\", { class: \"ace_mobile-button\", action: \"copy\" }, \"Copy\"],\n selected && [\"span\", { class: \"ace_mobile-button\", action: \"cut\" }, \"Cut\"],\n clipboard && [\"span\", { class: \"ace_mobile-button\", action: \"paste\" }, \"Paste\"],\n hasUndo && [\"span\", { class: \"ace_mobile-button\", action: \"undo\" }, \"Undo\"],\n [\"span\", { class: \"ace_mobile-button\", action: \"find\" }, \"Find\"],\n [\"span\", { class: \"ace_mobile-button\", action: \"openCommandPalette\" }, \"Palette\"]\n ] : [\"span\"]), contextMenu.firstChild);\n };\n var handleClick = function (e) {\n var action = e.target.getAttribute(\"action\");\n if (action == \"more\" || !isOpen) {\n isOpen = !isOpen;\n return updateMenu();\n }\n if (action == \"paste\") {\n clipboard.readText().then(function (text) {\n editor.execCommand(action, text);\n });\n }\n else if (action) {\n if (action == \"cut\" || action == \"copy\") {\n if (clipboard)\n clipboard.writeText(editor.getCopyText());\n else\n document.execCommand(\"copy\");\n }\n editor.execCommand(action);\n }\n contextMenu.firstChild.style.display = \"none\";\n isOpen = false;\n if (action != \"openCommandPalette\")\n editor.focus();\n };\n contextMenu = dom.buildDom([\"div\",\n {\n class: \"ace_mobile-menu\",\n ontouchstart: function (e) {\n mode = \"menu\";\n e.stopPropagation();\n e.preventDefault();\n editor.textInput.focus();\n },\n ontouchend: function (e) {\n e.stopPropagation();\n e.preventDefault();\n handleClick(e);\n },\n onclick: handleClick\n },\n [\"span\"],\n [\"span\", { class: \"ace_mobile-button\", action: \"more\" }, \"...\"]\n ], editor.container);\n }\n function showContextMenu() {\n if (!contextMenu)\n createContextMenu();\n var cursor = editor.selection.cursor;\n var pagePos = editor.renderer.textToScreenCoordinates(cursor.row, cursor.column);\n var leftOffset = editor.renderer.textToScreenCoordinates(0, 0).pageX;\n var scrollLeft = editor.renderer.scrollLeft;\n var rect = editor.container.getBoundingClientRect();\n contextMenu.style.top = pagePos.pageY - rect.top - 3 + \"px\";\n if (pagePos.pageX - rect.left < rect.width - 70) {\n contextMenu.style.left = \"\";\n contextMenu.style.right = \"10px\";\n }\n else {\n contextMenu.style.right = \"\";\n contextMenu.style.left = leftOffset + scrollLeft - rect.left + \"px\";\n }\n contextMenu.style.display = \"\";\n contextMenu.firstChild.style.display = \"none\";\n editor.on(\"input\", hideContextMenu);\n }\n function hideContextMenu(e) {\n if (contextMenu)\n contextMenu.style.display = \"none\";\n editor.off(\"input\", hideContextMenu);\n }\n function handleLongTap() {\n longTouchTimer = null;\n clearTimeout(longTouchTimer);\n var range = editor.selection.getRange();\n var inSelection = range.contains(pos.row, pos.column);\n if (range.isEmpty() || !inSelection) {\n editor.selection.moveToPosition(pos);\n editor.selection.selectWord();\n }\n mode = \"wait\";\n showContextMenu();\n }\n function switchToSelectionMode() {\n longTouchTimer = null;\n clearTimeout(longTouchTimer);\n editor.selection.moveToPosition(pos);\n var range = clickCount >= 2\n ? editor.selection.getLineRange(pos.row)\n : editor.session.getBracketRange(pos);\n if (range && !range.isEmpty()) {\n editor.selection.setRange(range);\n }\n else {\n editor.selection.selectWord();\n }\n mode = \"wait\";\n }\n event.addListener(el, \"contextmenu\", function (e) {\n if (!pressed)\n return;\n var textarea = editor.textInput.getElement();\n textarea.focus();\n }, editor);\n event.addListener(el, \"touchstart\", function (e) {\n var touches = e.touches;\n if (longTouchTimer || touches.length > 1) {\n clearTimeout(longTouchTimer);\n longTouchTimer = null;\n touchStartT = -1;\n mode = \"zoom\";\n return;\n }\n pressed = editor.$mouseHandler.isMousePressed = true;\n var h = editor.renderer.layerConfig.lineHeight;\n var w = editor.renderer.layerConfig.lineHeight;\n var t = e.timeStamp;\n lastT = t;\n var touchObj = touches[0];\n var x = touchObj.clientX;\n var y = touchObj.clientY;\n if (Math.abs(startX - x) + Math.abs(startY - y) > h)\n touchStartT = -1;\n startX = e.clientX = x;\n startY = e.clientY = y;\n vX = vY = 0;\n var ev = new MouseEvent(e, editor);\n pos = ev.getDocumentPosition();\n if (t - touchStartT < 500 && touches.length == 1 && !animationSteps) {\n clickCount++;\n e.preventDefault();\n e.button = 0;\n switchToSelectionMode();\n }\n else {\n clickCount = 0;\n var cursor = editor.selection.cursor;\n var anchor = editor.selection.isEmpty() ? cursor : editor.selection.anchor;\n var cursorPos = editor.renderer.$cursorLayer.getPixelPosition(cursor, true);\n var anchorPos = editor.renderer.$cursorLayer.getPixelPosition(anchor, true);\n var rect = editor.renderer.scroller.getBoundingClientRect();\n var offsetTop = editor.renderer.layerConfig.offset;\n var offsetLeft = editor.renderer.scrollLeft;\n var weightedDistance = function (x, y) {\n x = x / w;\n y = y / h - 0.75;\n return x * x + y * y;\n };\n if (e.clientX < rect.left) {\n mode = \"zoom\";\n return;\n }\n var diff1 = weightedDistance(e.clientX - rect.left - cursorPos.left + offsetLeft, e.clientY - rect.top - cursorPos.top + offsetTop);\n var diff2 = weightedDistance(e.clientX - rect.left - anchorPos.left + offsetLeft, e.clientY - rect.top - anchorPos.top + offsetTop);\n if (diff1 < 3.5 && diff2 < 3.5)\n mode = diff1 > diff2 ? \"cursor\" : \"anchor\";\n if (diff2 < 3.5)\n mode = \"anchor\";\n else if (diff1 < 3.5)\n mode = \"cursor\";\n else\n mode = \"scroll\";\n longTouchTimer = setTimeout(handleLongTap, 450);\n }\n touchStartT = t;\n }, editor);\n event.addListener(el, \"touchend\", function (e) {\n pressed = editor.$mouseHandler.isMousePressed = false;\n if (animationTimer)\n clearInterval(animationTimer);\n if (mode == \"zoom\") {\n mode = \"\";\n animationSteps = 0;\n }\n else if (longTouchTimer) {\n editor.selection.moveToPosition(pos);\n animationSteps = 0;\n showContextMenu();\n }\n else if (mode == \"scroll\") {\n animate();\n hideContextMenu();\n }\n else {\n showContextMenu();\n }\n clearTimeout(longTouchTimer);\n longTouchTimer = null;\n }, editor);\n event.addListener(el, \"touchmove\", function (e) {\n if (longTouchTimer) {\n clearTimeout(longTouchTimer);\n longTouchTimer = null;\n }\n var touches = e.touches;\n if (touches.length > 1 || mode == \"zoom\")\n return;\n var touchObj = touches[0];\n var wheelX = startX - touchObj.clientX;\n var wheelY = startY - touchObj.clientY;\n if (mode == \"wait\") {\n if (wheelX * wheelX + wheelY * wheelY > 4)\n mode = \"cursor\";\n else\n return e.preventDefault();\n }\n startX = touchObj.clientX;\n startY = touchObj.clientY;\n e.clientX = touchObj.clientX;\n e.clientY = touchObj.clientY;\n var t = e.timeStamp;\n var dt = t - lastT;\n lastT = t;\n if (mode == \"scroll\") {\n var mouseEvent = new MouseEvent(e, editor);\n mouseEvent.speed = 1;\n mouseEvent.wheelX = wheelX;\n mouseEvent.wheelY = wheelY;\n if (10 * Math.abs(wheelX) < Math.abs(wheelY))\n wheelX = 0;\n if (10 * Math.abs(wheelY) < Math.abs(wheelX))\n wheelY = 0;\n if (dt != 0) {\n vX = wheelX / dt;\n vY = wheelY / dt;\n }\n editor._emit(\"mousewheel\", mouseEvent);\n if (!mouseEvent.propagationStopped) {\n vX = vY = 0;\n }\n }\n else {\n var ev = new MouseEvent(e, editor);\n var pos = ev.getDocumentPosition();\n if (mode == \"cursor\")\n editor.selection.moveCursorToPosition(pos);\n else if (mode == \"anchor\")\n editor.selection.setSelectionAnchor(pos.row, pos.column);\n editor.renderer.scrollCursorIntoView(pos);\n e.preventDefault();\n }\n }, editor);\n function animate() {\n animationSteps += 60;\n animationTimer = setInterval(function () {\n if (animationSteps-- <= 0) {\n clearInterval(animationTimer);\n animationTimer = null;\n }\n if (Math.abs(vX) < 0.01)\n vX = 0;\n if (Math.abs(vY) < 0.01)\n vY = 0;\n if (animationSteps < 20)\n vX = 0.9 * vX;\n if (animationSteps < 20)\n vY = 0.9 * vY;\n var oldScrollTop = editor.session.getScrollTop();\n editor.renderer.scrollBy(10 * vX, 10 * vY);\n if (oldScrollTop == editor.session.getScrollTop())\n animationSteps = 0;\n }, 10);\n }\n};\n\n});\n\nace.define(\"ace/mouse/mouse_handler\",[\"require\",\"exports\",\"module\",\"ace/lib/event\",\"ace/lib/useragent\",\"ace/mouse/default_handlers\",\"ace/mouse/default_gutter_handler\",\"ace/mouse/mouse_event\",\"ace/mouse/dragdrop_handler\",\"ace/mouse/touch_handler\",\"ace/config\"], function(require, exports, module){\"use strict\";\nvar event = require(\"../lib/event\");\nvar useragent = require(\"../lib/useragent\");\nvar DefaultHandlers = require(\"./default_handlers\").DefaultHandlers;\nvar DefaultGutterHandler = require(\"./default_gutter_handler\").GutterHandler;\nvar MouseEvent = require(\"./mouse_event\").MouseEvent;\nvar DragdropHandler = require(\"./dragdrop_handler\").DragdropHandler;\nvar addTouchListeners = require(\"./touch_handler\").addTouchListeners;\nvar config = require(\"../config\");\nvar MouseHandler = /** @class */ (function () {\n function MouseHandler(editor) {\n var _self = this;\n this.editor = editor;\n new DefaultHandlers(this);\n new DefaultGutterHandler(this);\n new DragdropHandler(this);\n var focusEditor = function (e) {\n var windowBlurred = !document.hasFocus || !document.hasFocus()\n || !editor.isFocused() && document.activeElement == (editor.textInput && editor.textInput.getElement());\n if (windowBlurred)\n window.focus();\n editor.focus();\n setTimeout(function () {\n if (!editor.isFocused())\n editor.focus();\n });\n };\n var mouseTarget = editor.renderer.getMouseEventTarget();\n event.addListener(mouseTarget, \"click\", this.onMouseEvent.bind(this, \"click\"), editor);\n event.addListener(mouseTarget, \"mousemove\", this.onMouseMove.bind(this, \"mousemove\"), editor);\n event.addMultiMouseDownListener([\n mouseTarget,\n editor.renderer.scrollBarV && editor.renderer.scrollBarV.inner,\n editor.renderer.scrollBarH && editor.renderer.scrollBarH.inner,\n editor.textInput && editor.textInput.getElement()\n ].filter(Boolean), [400, 300, 250], this, \"onMouseEvent\", editor);\n event.addMouseWheelListener(editor.container, this.onMouseWheel.bind(this, \"mousewheel\"), editor);\n addTouchListeners(editor.container, editor);\n var gutterEl = editor.renderer.$gutter;\n event.addListener(gutterEl, \"mousedown\", this.onMouseEvent.bind(this, \"guttermousedown\"), editor);\n event.addListener(gutterEl, \"click\", this.onMouseEvent.bind(this, \"gutterclick\"), editor);\n event.addListener(gutterEl, \"dblclick\", this.onMouseEvent.bind(this, \"gutterdblclick\"), editor);\n event.addListener(gutterEl, \"mousemove\", this.onMouseEvent.bind(this, \"guttermousemove\"), editor);\n event.addListener(mouseTarget, \"mousedown\", focusEditor, editor);\n event.addListener(gutterEl, \"mousedown\", focusEditor, editor);\n if (useragent.isIE && editor.renderer.scrollBarV) {\n event.addListener(editor.renderer.scrollBarV.element, \"mousedown\", focusEditor, editor);\n event.addListener(editor.renderer.scrollBarH.element, \"mousedown\", focusEditor, editor);\n }\n editor.on(\"mousemove\", function (e) {\n if (_self.state || _self.$dragDelay || !_self.$dragEnabled)\n return;\n var character = editor.renderer.screenToTextCoordinates(e.x, e.y);\n var range = editor.session.selection.getRange();\n var renderer = editor.renderer;\n if (!range.isEmpty() && range.insideStart(character.row, character.column)) {\n renderer.setCursorStyle(\"default\");\n }\n else {\n renderer.setCursorStyle(\"\");\n }\n }, editor);\n }\n MouseHandler.prototype.onMouseEvent = function (name, e) {\n if (!this.editor.session)\n return;\n this.editor._emit(name, new MouseEvent(e, this.editor));\n };\n MouseHandler.prototype.onMouseMove = function (name, e) {\n var listeners = this.editor._eventRegistry && this.editor._eventRegistry.mousemove;\n if (!listeners || !listeners.length)\n return;\n this.editor._emit(name, new MouseEvent(e, this.editor));\n };\n MouseHandler.prototype.onMouseWheel = function (name, e) {\n var mouseEvent = new MouseEvent(e, this.editor);\n mouseEvent.speed = this.$scrollSpeed * 2;\n mouseEvent.wheelX = e.wheelX;\n mouseEvent.wheelY = e.wheelY;\n this.editor._emit(name, mouseEvent);\n };\n MouseHandler.prototype.setState = function (state) {\n this.state = state;\n };\n MouseHandler.prototype.captureMouse = function (ev, mouseMoveHandler) {\n this.x = ev.x;\n this.y = ev.y;\n this.isMousePressed = true;\n var editor = this.editor;\n var renderer = this.editor.renderer;\n renderer.$isMousePressed = true;\n var self = this;\n var onMouseMove = function (e) {\n if (!e)\n return;\n if (useragent.isWebKit && !e.which && self.releaseMouse)\n return self.releaseMouse();\n self.x = e.clientX;\n self.y = e.clientY;\n mouseMoveHandler && mouseMoveHandler(e);\n self.mouseEvent = new MouseEvent(e, self.editor);\n self.$mouseMoved = true;\n };\n var onCaptureEnd = function (e) {\n editor.off(\"beforeEndOperation\", onOperationEnd);\n clearInterval(timerId);\n if (editor.session)\n onCaptureInterval();\n self[self.state + \"End\"] && self[self.state + \"End\"](e);\n self.state = \"\";\n self.isMousePressed = renderer.$isMousePressed = false;\n if (renderer.$keepTextAreaAtCursor)\n renderer.$moveTextAreaToCursor();\n self.$onCaptureMouseMove = self.releaseMouse = null;\n e && self.onMouseEvent(\"mouseup\", e);\n editor.endOperation();\n };\n var onCaptureInterval = function () {\n self[self.state] && self[self.state]();\n self.$mouseMoved = false;\n };\n if (useragent.isOldIE && ev.domEvent.type == \"dblclick\") {\n return setTimeout(function () { onCaptureEnd(ev); });\n }\n var onOperationEnd = function (e) {\n if (!self.releaseMouse)\n return;\n if (editor.curOp.command.name && editor.curOp.selectionChanged) {\n self[self.state + \"End\"] && self[self.state + \"End\"]();\n self.state = \"\";\n self.releaseMouse();\n }\n };\n editor.on(\"beforeEndOperation\", onOperationEnd);\n editor.startOperation({ command: { name: \"mouse\" } });\n self.$onCaptureMouseMove = onMouseMove;\n self.releaseMouse = event.capture(this.editor.container, onMouseMove, onCaptureEnd);\n var timerId = setInterval(onCaptureInterval, 20);\n };\n MouseHandler.prototype.cancelContextMenu = function () {\n var stop = function (e) {\n if (e && e.domEvent && e.domEvent.type != \"contextmenu\")\n return;\n this.editor.off(\"nativecontextmenu\", stop);\n if (e && e.domEvent)\n event.stopEvent(e.domEvent);\n }.bind(this);\n setTimeout(stop, 10);\n this.editor.on(\"nativecontextmenu\", stop);\n };\n MouseHandler.prototype.destroy = function () {\n if (this.releaseMouse)\n this.releaseMouse();\n };\n return MouseHandler;\n}());\nMouseHandler.prototype.releaseMouse = null;\nconfig.defineOptions(MouseHandler.prototype, \"mouseHandler\", {\n scrollSpeed: { initialValue: 2 },\n dragDelay: { initialValue: (useragent.isMac ? 150 : 0) },\n dragEnabled: { initialValue: true },\n focusTimeout: { initialValue: 0 },\n tooltipFollowsMouse: { initialValue: true }\n});\nexports.MouseHandler = MouseHandler;\n\n});\n\nace.define(\"ace/mouse/fold_handler\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"], function(require, exports, module){\"use strict\";\nvar dom = require(\"../lib/dom\");\nvar FoldHandler = /** @class */ (function () {\n function FoldHandler(editor) {\n editor.on(\"click\", function (e) {\n var position = e.getDocumentPosition();\n var session = editor.session;\n var fold = session.getFoldAt(position.row, position.column, 1);\n if (fold) {\n if (e.getAccelKey())\n session.removeFold(fold);\n else\n session.expandFold(fold);\n e.stop();\n }\n var target = e.domEvent && e.domEvent.target;\n if (target && dom.hasCssClass(target, \"ace_inline_button\")) {\n if (dom.hasCssClass(target, \"ace_toggle_wrap\")) {\n session.setOption(\"wrap\", !session.getUseWrapMode());\n editor.renderer.scrollCursorIntoView();\n }\n }\n });\n editor.on(\"gutterclick\", function (e) {\n var gutterRegion = editor.renderer.$gutterLayer.getRegion(e);\n if (gutterRegion == \"foldWidgets\") {\n var row = e.getDocumentPosition().row;\n var session = editor.session;\n if (session.foldWidgets && session.foldWidgets[row])\n editor.session.onFoldWidgetClick(row, e);\n if (!editor.isFocused())\n editor.focus();\n e.stop();\n }\n });\n editor.on(\"gutterdblclick\", function (e) {\n var gutterRegion = editor.renderer.$gutterLayer.getRegion(e);\n if (gutterRegion == \"foldWidgets\") {\n var row = e.getDocumentPosition().row;\n var session = editor.session;\n var data = session.getParentFoldRangeData(row, true);\n var range = data.range || data.firstRange;\n if (range) {\n row = range.start.row;\n var fold = session.getFoldAt(row, session.getLine(row).length, 1);\n if (fold) {\n session.removeFold(fold);\n }\n else {\n session.addFold(\"...\", range);\n editor.renderer.scrollCursorIntoView({ row: range.start.row, column: 0 });\n }\n }\n e.stop();\n }\n });\n }\n return FoldHandler;\n}());\nexports.FoldHandler = FoldHandler;\n\n});\n\nace.define(\"ace/keyboard/keybinding\",[\"require\",\"exports\",\"module\",\"ace/lib/keys\",\"ace/lib/event\"], function(require, exports, module){\"use strict\";\nvar keyUtil = require(\"../lib/keys\");\nvar event = require(\"../lib/event\");\nvar KeyBinding = /** @class */ (function () {\n function KeyBinding(editor) {\n this.$editor = editor;\n this.$data = { editor: editor };\n this.$handlers = [];\n this.setDefaultHandler(editor.commands);\n }\n KeyBinding.prototype.setDefaultHandler = function (kb) {\n this.removeKeyboardHandler(this.$defaultHandler);\n this.$defaultHandler = kb;\n this.addKeyboardHandler(kb, 0);\n };\n KeyBinding.prototype.setKeyboardHandler = function (kb) {\n var h = this.$handlers;\n if (h[h.length - 1] == kb)\n return;\n while (h[h.length - 1] && h[h.length - 1] != this.$defaultHandler)\n this.removeKeyboardHandler(h[h.length - 1]);\n this.addKeyboardHandler(kb, 1);\n };\n KeyBinding.prototype.addKeyboardHandler = function (kb, pos) {\n if (!kb)\n return;\n if (typeof kb == \"function\" && !kb.handleKeyboard)\n kb.handleKeyboard = kb;\n var i = this.$handlers.indexOf(kb);\n if (i != -1)\n this.$handlers.splice(i, 1);\n if (pos == undefined)\n this.$handlers.push(kb);\n else\n this.$handlers.splice(pos, 0, kb);\n if (i == -1 && kb.attach)\n kb.attach(this.$editor);\n };\n KeyBinding.prototype.removeKeyboardHandler = function (kb) {\n var i = this.$handlers.indexOf(kb);\n if (i == -1)\n return false;\n this.$handlers.splice(i, 1);\n kb.detach && kb.detach(this.$editor);\n return true;\n };\n KeyBinding.prototype.getKeyboardHandler = function () {\n return this.$handlers[this.$handlers.length - 1];\n };\n KeyBinding.prototype.getStatusText = function () {\n var data = this.$data;\n var editor = data.editor;\n return this.$handlers.map(function (h) {\n return h.getStatusText && h.getStatusText(editor, data) || \"\";\n }).filter(Boolean).join(\" \");\n };\n KeyBinding.prototype.$callKeyboardHandlers = function (hashId, keyString, keyCode, e) {\n var toExecute;\n var success = false;\n var commands = this.$editor.commands;\n for (var i = this.$handlers.length; i--;) {\n toExecute = this.$handlers[i].handleKeyboard(this.$data, hashId, keyString, keyCode, e);\n if (!toExecute || !toExecute.command)\n continue;\n if (toExecute.command == \"null\") {\n success = true;\n }\n else {\n success = commands.exec(toExecute.command, this.$editor, toExecute.args, e);\n }\n if (success && e && hashId != -1 &&\n toExecute.passEvent != true && toExecute.command.passEvent != true) {\n event.stopEvent(e);\n }\n if (success)\n break;\n }\n if (!success && hashId == -1) {\n toExecute = { command: \"insertstring\" };\n success = commands.exec(\"insertstring\", this.$editor, keyString);\n }\n if (success && this.$editor._signal)\n this.$editor._signal(\"keyboardActivity\", toExecute);\n return success;\n };\n KeyBinding.prototype.onCommandKey = function (e, hashId, keyCode) {\n var keyString = keyUtil.keyCodeToString(keyCode);\n return this.$callKeyboardHandlers(hashId, keyString, keyCode, e);\n };\n KeyBinding.prototype.onTextInput = function (text) {\n return this.$callKeyboardHandlers(-1, text);\n };\n return KeyBinding;\n}());\nexports.KeyBinding = KeyBinding;\n\n});\n\nace.define(\"ace/lib/bidiutil\",[\"require\",\"exports\",\"module\"], function(require, exports, module){\"use strict\";\nvar ArabicAlefBetIntervalsBegine = ['\\u0621', '\\u0641'];\nvar ArabicAlefBetIntervalsEnd = ['\\u063A', '\\u064a'];\nvar dir = 0, hiLevel = 0;\nvar lastArabic = false, hasUBAT_AL = false, hasUBAT_B = false, hasUBAT_S = false, hasBlockSep = false, hasSegSep = false;\nvar impTab_LTR = [ [0, 3, 0, 1, 0, 0, 0], [0, 3, 0, 1, 2, 2, 0], [0, 3, 0, 0x11, 2, 0, 1], [0, 3, 5, 5, 4, 1, 0], [0, 3, 0x15, 0x15, 4, 0, 1], [0, 3, 5, 5, 4, 2, 0]\n];\nvar impTab_RTL = [ [2, 0, 1, 1, 0, 1, 0], [2, 0, 1, 1, 0, 2, 0], [2, 0, 2, 1, 3, 2, 0], [2, 0, 2, 0x21, 3, 1, 1]\n];\nvar LTR = 0, RTL = 1;\nvar L = 0;\nvar R = 1;\nvar EN = 2;\nvar AN = 3;\nvar ON = 4;\nvar B = 5;\nvar S = 6;\nvar AL = 7;\nvar WS = 8;\nvar CS = 9;\nvar ES = 10;\nvar ET = 11;\nvar NSM = 12;\nvar LRE = 13;\nvar RLE = 14;\nvar PDF = 15;\nvar LRO = 16;\nvar RLO = 17;\nvar BN = 18;\nvar UnicodeTBL00 = [\n BN, BN, BN, BN, BN, BN, BN, BN, BN, S, B, S, WS, B, BN, BN,\n BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, B, B, B, S,\n WS, ON, ON, ET, ET, ET, ON, ON, ON, ON, ON, ES, CS, ES, CS, CS,\n EN, EN, EN, EN, EN, EN, EN, EN, EN, EN, CS, ON, ON, ON, ON, ON,\n ON, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L,\n L, L, L, L, L, L, L, L, L, L, L, ON, ON, ON, ON, ON,\n ON, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L,\n L, L, L, L, L, L, L, L, L, L, L, ON, ON, ON, ON, BN,\n BN, BN, BN, BN, BN, B, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN,\n BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN,\n CS, ON, ET, ET, ET, ET, ON, ON, ON, ON, L, ON, ON, BN, ON, ON,\n ET, ET, EN, EN, ON, L, ON, ON, ON, EN, L, ON, ON, ON, ON, ON\n];\nvar UnicodeTBL20 = [\n WS, WS, WS, WS, WS, WS, WS, WS, WS, WS, WS, BN, BN, BN, L, R,\n ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON,\n ON, ON, ON, ON, ON, ON, ON, ON, WS, B, LRE, RLE, PDF, LRO, RLO, CS,\n ET, ET, ET, ET, ET, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON,\n ON, ON, ON, ON, CS, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON,\n ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, WS\n];\nfunction _computeLevels(chars, levels, len, charTypes) {\n var impTab = dir ? impTab_RTL : impTab_LTR, prevState = null, newClass = null, newLevel = null, newState = 0, action = null, cond = null, condPos = -1, i = null, ix = null, classes = [];\n if (!charTypes) {\n for (i = 0, charTypes = []; i < len; i++) {\n charTypes[i] = _getCharacterType(chars[i]);\n }\n }\n hiLevel = dir;\n lastArabic = false;\n hasUBAT_AL = false;\n hasUBAT_B = false;\n hasUBAT_S = false;\n for (ix = 0; ix < len; ix++) {\n prevState = newState;\n classes[ix] = newClass = _getCharClass(chars, charTypes, classes, ix);\n newState = impTab[prevState][newClass];\n action = newState & 0xF0;\n newState &= 0x0F;\n levels[ix] = newLevel = impTab[newState][5];\n if (action > 0) {\n if (action == 0x10) {\n for (i = condPos; i < ix; i++) {\n levels[i] = 1;\n }\n condPos = -1;\n }\n else {\n condPos = -1;\n }\n }\n cond = impTab[newState][6];\n if (cond) {\n if (condPos == -1) {\n condPos = ix;\n }\n }\n else {\n if (condPos > -1) {\n for (i = condPos; i < ix; i++) {\n levels[i] = newLevel;\n }\n condPos = -1;\n }\n }\n if (charTypes[ix] == B) {\n levels[ix] = 0;\n }\n hiLevel |= newLevel;\n }\n if (hasUBAT_S) {\n for (i = 0; i < len; i++) {\n if (charTypes[i] == S) {\n levels[i] = dir;\n for (var j = i - 1; j >= 0; j--) {\n if (charTypes[j] == WS) {\n levels[j] = dir;\n }\n else {\n break;\n }\n }\n }\n }\n }\n}\nfunction _invertLevel(lev, levels, _array) {\n if (hiLevel < lev) {\n return;\n }\n if (lev == 1 && dir == RTL && !hasUBAT_B) {\n _array.reverse();\n return;\n }\n var len = _array.length, start = 0, end, lo, hi, tmp;\n while (start < len) {\n if (levels[start] >= lev) {\n end = start + 1;\n while (end < len && levels[end] >= lev) {\n end++;\n }\n for (lo = start, hi = end - 1; lo < hi; lo++, hi--) {\n tmp = _array[lo];\n _array[lo] = _array[hi];\n _array[hi] = tmp;\n }\n start = end;\n }\n start++;\n }\n}\nfunction _getCharClass(chars, types, classes, ix) {\n var cType = types[ix], wType, nType, len, i;\n switch (cType) {\n case L:\n case R:\n lastArabic = false;\n case ON:\n case AN:\n return cType;\n case EN:\n return lastArabic ? AN : EN;\n case AL:\n lastArabic = true;\n hasUBAT_AL = true;\n return R;\n case WS:\n return ON;\n case CS:\n if (ix < 1 || (ix + 1) >= types.length ||\n ((wType = classes[ix - 1]) != EN && wType != AN) ||\n ((nType = types[ix + 1]) != EN && nType != AN)) {\n return ON;\n }\n if (lastArabic) {\n nType = AN;\n }\n return nType == wType ? nType : ON;\n case ES:\n wType = ix > 0 ? classes[ix - 1] : B;\n if (wType == EN && (ix + 1) < types.length && types[ix + 1] == EN) {\n return EN;\n }\n return ON;\n case ET:\n if (ix > 0 && classes[ix - 1] == EN) {\n return EN;\n }\n if (lastArabic) {\n return ON;\n }\n i = ix + 1;\n len = types.length;\n while (i < len && types[i] == ET) {\n i++;\n }\n if (i < len && types[i] == EN) {\n return EN;\n }\n return ON;\n case NSM:\n len = types.length;\n i = ix + 1;\n while (i < len && types[i] == NSM) {\n i++;\n }\n if (i < len) {\n var c = chars[ix], rtlCandidate = (c >= 0x0591 && c <= 0x08FF) || c == 0xFB1E;\n wType = types[i];\n if (rtlCandidate && (wType == R || wType == AL)) {\n return R;\n }\n }\n if (ix < 1 || (wType = types[ix - 1]) == B) {\n return ON;\n }\n return classes[ix - 1];\n case B:\n lastArabic = false;\n hasUBAT_B = true;\n return dir;\n case S:\n hasUBAT_S = true;\n return ON;\n case LRE:\n case RLE:\n case LRO:\n case RLO:\n case PDF:\n lastArabic = false;\n case BN:\n return ON;\n }\n}\nfunction _getCharacterType(ch) {\n var uc = ch.charCodeAt(0), hi = uc >> 8;\n if (hi == 0) {\n return ((uc > 0x00BF) ? L : UnicodeTBL00[uc]);\n }\n else if (hi == 5) {\n return (/[\\u0591-\\u05f4]/.test(ch) ? R : L);\n }\n else if (hi == 6) {\n if (/[\\u0610-\\u061a\\u064b-\\u065f\\u06d6-\\u06e4\\u06e7-\\u06ed]/.test(ch))\n return NSM;\n else if (/[\\u0660-\\u0669\\u066b-\\u066c]/.test(ch))\n return AN;\n else if (uc == 0x066A)\n return ET;\n else if (/[\\u06f0-\\u06f9]/.test(ch))\n return EN;\n else\n return AL;\n }\n else if (hi == 0x20 && uc <= 0x205F) {\n return UnicodeTBL20[uc & 0xFF];\n }\n else if (hi == 0xFE) {\n return (uc >= 0xFE70 ? AL : ON);\n }\n return ON;\n}\nfunction _isArabicDiacritics(ch) {\n return (ch >= '\\u064b' && ch <= '\\u0655');\n}\nexports.L = L;\nexports.R = R;\nexports.EN = EN;\nexports.ON_R = 3;\nexports.AN = 4;\nexports.R_H = 5;\nexports.B = 6;\nexports.RLE = 7;\nexports.DOT = \"\\xB7\";\nexports.doBidiReorder = function (text, textCharTypes, isRtl) {\n if (text.length < 2)\n return {};\n var chars = text.split(\"\"), logicalFromVisual = new Array(chars.length), bidiLevels = new Array(chars.length), levels = [];\n dir = isRtl ? RTL : LTR;\n _computeLevels(chars, levels, chars.length, textCharTypes);\n for (var i = 0; i < logicalFromVisual.length; logicalFromVisual[i] = i, i++)\n ;\n _invertLevel(2, levels, logicalFromVisual);\n _invertLevel(1, levels, logicalFromVisual);\n for (var i = 0; i < logicalFromVisual.length - 1; i++) { //fix levels to reflect character width\n if (textCharTypes[i] === AN) {\n levels[i] = exports.AN;\n }\n else if (levels[i] === R && ((textCharTypes[i] > AL && textCharTypes[i] < LRE)\n || textCharTypes[i] === ON || textCharTypes[i] === BN)) {\n levels[i] = exports.ON_R;\n }\n else if ((i > 0 && chars[i - 1] === '\\u0644') && /\\u0622|\\u0623|\\u0625|\\u0627/.test(chars[i])) {\n levels[i - 1] = levels[i] = exports.R_H;\n i++;\n }\n }\n if (chars[chars.length - 1] === exports.DOT)\n levels[chars.length - 1] = exports.B;\n if (chars[0] === '\\u202B')\n levels[0] = exports.RLE;\n for (var i = 0; i < logicalFromVisual.length; i++) {\n bidiLevels[i] = levels[logicalFromVisual[i]];\n }\n return { 'logicalFromVisual': logicalFromVisual, 'bidiLevels': bidiLevels };\n};\nexports.hasBidiCharacters = function (text, textCharTypes) {\n var ret = false;\n for (var i = 0; i < text.length; i++) {\n textCharTypes[i] = _getCharacterType(text.charAt(i));\n if (!ret && (textCharTypes[i] == R || textCharTypes[i] == AL || textCharTypes[i] == AN))\n ret = true;\n }\n return ret;\n};\nexports.getVisualFromLogicalIdx = function (logIdx, rowMap) {\n for (var i = 0; i < rowMap.logicalFromVisual.length; i++) {\n if (rowMap.logicalFromVisual[i] == logIdx)\n return i;\n }\n return 0;\n};\n\n});\n\nace.define(\"ace/bidihandler\",[\"require\",\"exports\",\"module\",\"ace/lib/bidiutil\",\"ace/lib/lang\"], function(require, exports, module){\"use strict\";\nvar bidiUtil = require(\"./lib/bidiutil\");\nvar lang = require(\"./lib/lang\");\nvar bidiRE = /[\\u0590-\\u05f4\\u0600-\\u06ff\\u0700-\\u08ac\\u202B]/;\nvar BidiHandler = /** @class */ (function () {\n function BidiHandler(session) {\n this.session = session;\n this.bidiMap = {};\n this.currentRow = null;\n this.bidiUtil = bidiUtil;\n this.charWidths = [];\n this.EOL = \"\\xAC\";\n this.showInvisibles = true;\n this.isRtlDir = false;\n this.$isRtl = false;\n this.line = \"\";\n this.wrapIndent = 0;\n this.EOF = \"\\xB6\";\n this.RLE = \"\\u202B\";\n this.contentWidth = 0;\n this.fontMetrics = null;\n this.rtlLineOffset = 0;\n this.wrapOffset = 0;\n this.isMoveLeftOperation = false;\n this.seenBidi = bidiRE.test(session.getValue());\n }\n BidiHandler.prototype.isBidiRow = function (screenRow, docRow, splitIndex) {\n if (!this.seenBidi)\n return false;\n if (screenRow !== this.currentRow) {\n this.currentRow = screenRow;\n this.updateRowLine(docRow, splitIndex);\n this.updateBidiMap();\n }\n return this.bidiMap.bidiLevels;\n };\n BidiHandler.prototype.onChange = function (delta) {\n if (!this.seenBidi) {\n if (delta.action == \"insert\" && bidiRE.test(delta.lines.join(\"\\n\"))) {\n this.seenBidi = true;\n this.currentRow = null;\n }\n }\n else {\n this.currentRow = null;\n }\n };\n BidiHandler.prototype.getDocumentRow = function () {\n var docRow = 0;\n var rowCache = this.session.$screenRowCache;\n if (rowCache.length) {\n var index = this.session.$getRowCacheIndex(rowCache, this.currentRow);\n if (index >= 0)\n docRow = this.session.$docRowCache[index];\n }\n return docRow;\n };\n BidiHandler.prototype.getSplitIndex = function () {\n var splitIndex = 0;\n var rowCache = this.session.$screenRowCache;\n if (rowCache.length) {\n var currentIndex, prevIndex = this.session.$getRowCacheIndex(rowCache, this.currentRow);\n while (this.currentRow - splitIndex > 0) {\n currentIndex = this.session.$getRowCacheIndex(rowCache, this.currentRow - splitIndex - 1);\n if (currentIndex !== prevIndex)\n break;\n prevIndex = currentIndex;\n splitIndex++;\n }\n }\n else {\n splitIndex = this.currentRow;\n }\n return splitIndex;\n };\n BidiHandler.prototype.updateRowLine = function (docRow, splitIndex) {\n if (docRow === undefined)\n docRow = this.getDocumentRow();\n var isLastRow = (docRow === this.session.getLength() - 1), endOfLine = isLastRow ? this.EOF : this.EOL;\n this.wrapIndent = 0;\n this.line = this.session.getLine(docRow);\n this.isRtlDir = this.$isRtl || this.line.charAt(0) === this.RLE;\n if (this.session.$useWrapMode) {\n var splits = this.session.$wrapData[docRow];\n if (splits) {\n if (splitIndex === undefined)\n splitIndex = this.getSplitIndex();\n if (splitIndex > 0 && splits.length) {\n this.wrapIndent = splits.indent;\n this.wrapOffset = this.wrapIndent * this.charWidths[bidiUtil.L];\n this.line = (splitIndex < splits.length) ?\n this.line.substring(splits[splitIndex - 1], splits[splitIndex]) :\n this.line.substring(splits[splits.length - 1]);\n }\n else {\n this.line = this.line.substring(0, splits[splitIndex]);\n }\n if (splitIndex == splits.length) {\n this.line += (this.showInvisibles) ? endOfLine : bidiUtil.DOT;\n }\n }\n }\n else {\n this.line += this.showInvisibles ? endOfLine : bidiUtil.DOT;\n }\n var session = this.session, shift = 0, size;\n this.line = this.line.replace(/\\t|[\\u1100-\\u2029, \\u202F-\\uFFE6]/g, function (ch, i) {\n if (ch === '\\t' || session.isFullWidth(ch.charCodeAt(0))) {\n size = (ch === '\\t') ? session.getScreenTabSize(i + shift) : 2;\n shift += size - 1;\n return lang.stringRepeat(bidiUtil.DOT, size);\n }\n return ch;\n });\n if (this.isRtlDir) {\n this.fontMetrics.$main.textContent = (this.line.charAt(this.line.length - 1) == bidiUtil.DOT) ? this.line.substr(0, this.line.length - 1) : this.line;\n this.rtlLineOffset = this.contentWidth - this.fontMetrics.$main.getBoundingClientRect().width;\n }\n };\n BidiHandler.prototype.updateBidiMap = function () {\n var textCharTypes = [];\n if (bidiUtil.hasBidiCharacters(this.line, textCharTypes) || this.isRtlDir) {\n this.bidiMap = bidiUtil.doBidiReorder(this.line, textCharTypes, this.isRtlDir);\n }\n else {\n this.bidiMap = {};\n }\n };\n BidiHandler.prototype.markAsDirty = function () {\n this.currentRow = null;\n };\n BidiHandler.prototype.updateCharacterWidths = function (fontMetrics) {\n if (this.characterWidth === fontMetrics.$characterSize.width)\n return;\n this.fontMetrics = fontMetrics;\n var characterWidth = this.characterWidth = fontMetrics.$characterSize.width;\n var bidiCharWidth = fontMetrics.$measureCharWidth(\"\\u05d4\");\n this.charWidths[bidiUtil.L] = this.charWidths[bidiUtil.EN] = this.charWidths[bidiUtil.ON_R] = characterWidth;\n this.charWidths[bidiUtil.R] = this.charWidths[bidiUtil.AN] = bidiCharWidth;\n this.charWidths[bidiUtil.R_H] = bidiCharWidth * 0.45;\n this.charWidths[bidiUtil.B] = this.charWidths[bidiUtil.RLE] = 0;\n this.currentRow = null;\n };\n BidiHandler.prototype.setShowInvisibles = function (showInvisibles) {\n this.showInvisibles = showInvisibles;\n this.currentRow = null;\n };\n BidiHandler.prototype.setEolChar = function (eolChar) {\n this.EOL = eolChar;\n };\n BidiHandler.prototype.setContentWidth = function (width) {\n this.contentWidth = width;\n };\n BidiHandler.prototype.isRtlLine = function (row) {\n if (this.$isRtl)\n return true;\n if (row != undefined)\n return (this.session.getLine(row).charAt(0) == this.RLE);\n else\n return this.isRtlDir;\n };\n BidiHandler.prototype.setRtlDirection = function (editor, isRtlDir) {\n var cursor = editor.getCursorPosition();\n for (var row = editor.selection.getSelectionAnchor().row; row <= cursor.row; row++) {\n if (!isRtlDir && editor.session.getLine(row).charAt(0) === editor.session.$bidiHandler.RLE)\n editor.session.doc.removeInLine(row, 0, 1);\n else if (isRtlDir && editor.session.getLine(row).charAt(0) !== editor.session.$bidiHandler.RLE)\n editor.session.doc.insert({ column: 0, row: row }, editor.session.$bidiHandler.RLE);\n }\n };\n BidiHandler.prototype.getPosLeft = function (col) {\n col -= this.wrapIndent;\n var leftBoundary = (this.line.charAt(0) === this.RLE) ? 1 : 0;\n var logicalIdx = (col > leftBoundary) ? (this.session.getOverwrite() ? col : col - 1) : leftBoundary;\n var visualIdx = bidiUtil.getVisualFromLogicalIdx(logicalIdx, this.bidiMap), levels = this.bidiMap.bidiLevels, left = 0;\n if (!this.session.getOverwrite() && col <= leftBoundary && levels[visualIdx] % 2 !== 0)\n visualIdx++;\n for (var i = 0; i < visualIdx; i++) {\n left += this.charWidths[levels[i]];\n }\n if (!this.session.getOverwrite() && (col > leftBoundary) && (levels[visualIdx] % 2 === 0))\n left += this.charWidths[levels[visualIdx]];\n if (this.wrapIndent)\n left += this.isRtlDir ? (-1 * this.wrapOffset) : this.wrapOffset;\n if (this.isRtlDir)\n left += this.rtlLineOffset;\n return left;\n };\n BidiHandler.prototype.getSelections = function (startCol, endCol) {\n var map = this.bidiMap, levels = map.bidiLevels, level, selections = [], offset = 0, selColMin = Math.min(startCol, endCol) - this.wrapIndent, selColMax = Math.max(startCol, endCol) - this.wrapIndent, isSelected = false, isSelectedPrev = false, selectionStart = 0;\n if (this.wrapIndent)\n offset += this.isRtlDir ? (-1 * this.wrapOffset) : this.wrapOffset;\n for (var logIdx, visIdx = 0; visIdx < levels.length; visIdx++) {\n logIdx = map.logicalFromVisual[visIdx];\n level = levels[visIdx];\n isSelected = (logIdx >= selColMin) && (logIdx < selColMax);\n if (isSelected && !isSelectedPrev) {\n selectionStart = offset;\n }\n else if (!isSelected && isSelectedPrev) {\n selections.push({ left: selectionStart, width: offset - selectionStart });\n }\n offset += this.charWidths[level];\n isSelectedPrev = isSelected;\n }\n if (isSelected && (visIdx === levels.length)) {\n selections.push({ left: selectionStart, width: offset - selectionStart });\n }\n if (this.isRtlDir) {\n for (var i = 0; i < selections.length; i++) {\n selections[i].left += this.rtlLineOffset;\n }\n }\n return selections;\n };\n BidiHandler.prototype.offsetToCol = function (posX) {\n if (this.isRtlDir)\n posX -= this.rtlLineOffset;\n var logicalIdx = 0, posX = Math.max(posX, 0), offset = 0, visualIdx = 0, levels = this.bidiMap.bidiLevels, charWidth = this.charWidths[levels[visualIdx]];\n if (this.wrapIndent)\n posX -= this.isRtlDir ? (-1 * this.wrapOffset) : this.wrapOffset;\n while (posX > offset + charWidth / 2) {\n offset += charWidth;\n if (visualIdx === levels.length - 1) {\n charWidth = 0;\n break;\n }\n charWidth = this.charWidths[levels[++visualIdx]];\n }\n if (visualIdx > 0 && (levels[visualIdx - 1] % 2 !== 0) && (levels[visualIdx] % 2 === 0)) {\n if (posX < offset)\n visualIdx--;\n logicalIdx = this.bidiMap.logicalFromVisual[visualIdx];\n }\n else if (visualIdx > 0 && (levels[visualIdx - 1] % 2 === 0) && (levels[visualIdx] % 2 !== 0)) {\n logicalIdx = 1 + ((posX > offset) ? this.bidiMap.logicalFromVisual[visualIdx]\n : this.bidiMap.logicalFromVisual[visualIdx - 1]);\n }\n else if ((this.isRtlDir && visualIdx === levels.length - 1 && charWidth === 0 && (levels[visualIdx - 1] % 2 === 0))\n || (!this.isRtlDir && visualIdx === 0 && (levels[visualIdx] % 2 !== 0))) {\n logicalIdx = 1 + this.bidiMap.logicalFromVisual[visualIdx];\n }\n else {\n if (visualIdx > 0 && (levels[visualIdx - 1] % 2 !== 0) && charWidth !== 0)\n visualIdx--;\n logicalIdx = this.bidiMap.logicalFromVisual[visualIdx];\n }\n if (logicalIdx === 0 && this.isRtlDir)\n logicalIdx++;\n return (logicalIdx + this.wrapIndent);\n };\n return BidiHandler;\n}());\nexports.BidiHandler = BidiHandler;\n\n});\n\nace.define(\"ace/selection\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/lib/event_emitter\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"./lib/oop\");\nvar lang = require(\"./lib/lang\");\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar Range = require(\"./range\").Range;\nvar Selection = /** @class */ (function () {\n function Selection(session) {\n this.session = session;\n this.doc = session.getDocument();\n this.clearSelection();\n this.cursor = this.lead = this.doc.createAnchor(0, 0);\n this.anchor = this.doc.createAnchor(0, 0);\n this.$silent = false;\n var self = this;\n this.cursor.on(\"change\", function (e) {\n self.$cursorChanged = true;\n if (!self.$silent)\n self._emit(\"changeCursor\");\n if (!self.$isEmpty && !self.$silent)\n self._emit(\"changeSelection\");\n if (!self.$keepDesiredColumnOnChange && e.old.column != e.value.column)\n self.$desiredColumn = null;\n });\n this.anchor.on(\"change\", function () {\n self.$anchorChanged = true;\n if (!self.$isEmpty && !self.$silent)\n self._emit(\"changeSelection\");\n });\n }\n Selection.prototype.isEmpty = function () {\n return this.$isEmpty || (this.anchor.row == this.lead.row &&\n this.anchor.column == this.lead.column);\n };\n Selection.prototype.isMultiLine = function () {\n return !this.$isEmpty && this.anchor.row != this.cursor.row;\n };\n Selection.prototype.getCursor = function () {\n return this.lead.getPosition();\n };\n Selection.prototype.setAnchor = function (row, column) {\n this.$isEmpty = false;\n this.anchor.setPosition(row, column);\n };\n Selection.prototype.getAnchor = function () {\n if (this.$isEmpty)\n return this.getSelectionLead();\n return this.anchor.getPosition();\n };\n Selection.prototype.getSelectionLead = function () {\n return this.lead.getPosition();\n };\n Selection.prototype.isBackwards = function () {\n var anchor = this.anchor;\n var lead = this.lead;\n return (anchor.row > lead.row || (anchor.row == lead.row && anchor.column > lead.column));\n };\n Selection.prototype.getRange = function () {\n var anchor = this.anchor;\n var lead = this.lead;\n if (this.$isEmpty)\n return Range.fromPoints(lead, lead);\n return this.isBackwards()\n ? Range.fromPoints(lead, anchor)\n : Range.fromPoints(anchor, lead);\n };\n Selection.prototype.clearSelection = function () {\n if (!this.$isEmpty) {\n this.$isEmpty = true;\n this._emit(\"changeSelection\");\n }\n };\n Selection.prototype.selectAll = function () {\n this.$setSelection(0, 0, Number.MAX_VALUE, Number.MAX_VALUE);\n };\n Selection.prototype.setRange = function (range, reverse) {\n var start = reverse ? range.end : range.start;\n var end = reverse ? range.start : range.end;\n this.$setSelection(start.row, start.column, end.row, end.column);\n };\n Selection.prototype.$setSelection = function (anchorRow, anchorColumn, cursorRow, cursorColumn) {\n if (this.$silent)\n return;\n var wasEmpty = this.$isEmpty;\n var wasMultiselect = this.inMultiSelectMode;\n this.$silent = true;\n this.$cursorChanged = this.$anchorChanged = false;\n this.anchor.setPosition(anchorRow, anchorColumn);\n this.cursor.setPosition(cursorRow, cursorColumn);\n this.$isEmpty = !Range.comparePoints(this.anchor, this.cursor);\n this.$silent = false;\n if (this.$cursorChanged)\n this._emit(\"changeCursor\");\n if (this.$cursorChanged || this.$anchorChanged || wasEmpty != this.$isEmpty || wasMultiselect)\n this._emit(\"changeSelection\");\n };\n Selection.prototype.$moveSelection = function (mover) {\n var lead = this.lead;\n if (this.$isEmpty)\n this.setSelectionAnchor(lead.row, lead.column);\n mover.call(this);\n };\n Selection.prototype.selectTo = function (row, column) {\n this.$moveSelection(function () {\n this.moveCursorTo(row, column);\n });\n };\n Selection.prototype.selectToPosition = function (pos) {\n this.$moveSelection(function () {\n this.moveCursorToPosition(pos);\n });\n };\n Selection.prototype.moveTo = function (row, column) {\n this.clearSelection();\n this.moveCursorTo(row, column);\n };\n Selection.prototype.moveToPosition = function (pos) {\n this.clearSelection();\n this.moveCursorToPosition(pos);\n };\n Selection.prototype.selectUp = function () {\n this.$moveSelection(this.moveCursorUp);\n };\n Selection.prototype.selectDown = function () {\n this.$moveSelection(this.moveCursorDown);\n };\n Selection.prototype.selectRight = function () {\n this.$moveSelection(this.moveCursorRight);\n };\n Selection.prototype.selectLeft = function () {\n this.$moveSelection(this.moveCursorLeft);\n };\n Selection.prototype.selectLineStart = function () {\n this.$moveSelection(this.moveCursorLineStart);\n };\n Selection.prototype.selectLineEnd = function () {\n this.$moveSelection(this.moveCursorLineEnd);\n };\n Selection.prototype.selectFileEnd = function () {\n this.$moveSelection(this.moveCursorFileEnd);\n };\n Selection.prototype.selectFileStart = function () {\n this.$moveSelection(this.moveCursorFileStart);\n };\n Selection.prototype.selectWordRight = function () {\n this.$moveSelection(this.moveCursorWordRight);\n };\n Selection.prototype.selectWordLeft = function () {\n this.$moveSelection(this.moveCursorWordLeft);\n };\n Selection.prototype.getWordRange = function (row, column) {\n if (typeof column == \"undefined\") {\n var cursor = row || this.lead;\n row = cursor.row;\n column = cursor.column;\n }\n return this.session.getWordRange(row, column);\n };\n Selection.prototype.selectWord = function () {\n this.setSelectionRange(this.getWordRange());\n };\n Selection.prototype.selectAWord = function () {\n var cursor = this.getCursor();\n var range = this.session.getAWordRange(cursor.row, cursor.column);\n this.setSelectionRange(range);\n };\n Selection.prototype.getLineRange = function (row, excludeLastChar) {\n var rowStart = typeof row == \"number\" ? row : this.lead.row;\n var rowEnd;\n var foldLine = this.session.getFoldLine(rowStart);\n if (foldLine) {\n rowStart = foldLine.start.row;\n rowEnd = foldLine.end.row;\n }\n else {\n rowEnd = rowStart;\n }\n if (excludeLastChar === true)\n return new Range(rowStart, 0, rowEnd, this.session.getLine(rowEnd).length);\n else\n return new Range(rowStart, 0, rowEnd + 1, 0);\n };\n Selection.prototype.selectLine = function () {\n this.setSelectionRange(this.getLineRange());\n };\n Selection.prototype.moveCursorUp = function () {\n this.moveCursorBy(-1, 0);\n };\n Selection.prototype.moveCursorDown = function () {\n this.moveCursorBy(1, 0);\n };\n Selection.prototype.wouldMoveIntoSoftTab = function (cursor, tabSize, direction) {\n var start = cursor.column;\n var end = cursor.column + tabSize;\n if (direction < 0) {\n start = cursor.column - tabSize;\n end = cursor.column;\n }\n return this.session.isTabStop(cursor) && this.doc.getLine(cursor.row).slice(start, end).split(\" \").length - 1 == tabSize;\n };\n Selection.prototype.moveCursorLeft = function () {\n var cursor = this.lead.getPosition(), fold;\n if (fold = this.session.getFoldAt(cursor.row, cursor.column, -1)) {\n this.moveCursorTo(fold.start.row, fold.start.column);\n }\n else if (cursor.column === 0) {\n if (cursor.row > 0) {\n this.moveCursorTo(cursor.row - 1, this.doc.getLine(cursor.row - 1).length);\n }\n }\n else {\n var tabSize = this.session.getTabSize();\n if (this.wouldMoveIntoSoftTab(cursor, tabSize, -1) && !this.session.getNavigateWithinSoftTabs()) {\n this.moveCursorBy(0, -tabSize);\n }\n else {\n this.moveCursorBy(0, -1);\n }\n }\n };\n Selection.prototype.moveCursorRight = function () {\n var cursor = this.lead.getPosition(), fold;\n if (fold = this.session.getFoldAt(cursor.row, cursor.column, 1)) {\n this.moveCursorTo(fold.end.row, fold.end.column);\n }\n else if (this.lead.column == this.doc.getLine(this.lead.row).length) {\n if (this.lead.row < this.doc.getLength() - 1) {\n this.moveCursorTo(this.lead.row + 1, 0);\n }\n }\n else {\n var tabSize = this.session.getTabSize();\n var cursor = this.lead;\n if (this.wouldMoveIntoSoftTab(cursor, tabSize, 1) && !this.session.getNavigateWithinSoftTabs()) {\n this.moveCursorBy(0, tabSize);\n }\n else {\n this.moveCursorBy(0, 1);\n }\n }\n };\n Selection.prototype.moveCursorLineStart = function () {\n var row = this.lead.row;\n var column = this.lead.column;\n var screenRow = this.session.documentToScreenRow(row, column);\n var firstColumnPosition = this.session.screenToDocumentPosition(screenRow, 0);\n var beforeCursor = this.session.getDisplayLine(row, null, firstColumnPosition.row, firstColumnPosition.column);\n var leadingSpace = beforeCursor.match(/^\\s*/);\n if (leadingSpace[0].length != column && !this.session.$useEmacsStyleLineStart)\n firstColumnPosition.column += leadingSpace[0].length;\n this.moveCursorToPosition(firstColumnPosition);\n };\n Selection.prototype.moveCursorLineEnd = function () {\n var lead = this.lead;\n var lineEnd = this.session.getDocumentLastRowColumnPosition(lead.row, lead.column);\n if (this.lead.column == lineEnd.column) {\n var line = this.session.getLine(lineEnd.row);\n if (lineEnd.column == line.length) {\n var textEnd = line.search(/\\s+$/);\n if (textEnd > 0)\n lineEnd.column = textEnd;\n }\n }\n this.moveCursorTo(lineEnd.row, lineEnd.column);\n };\n Selection.prototype.moveCursorFileEnd = function () {\n var row = this.doc.getLength() - 1;\n var column = this.doc.getLine(row).length;\n this.moveCursorTo(row, column);\n };\n Selection.prototype.moveCursorFileStart = function () {\n this.moveCursorTo(0, 0);\n };\n Selection.prototype.moveCursorLongWordRight = function () {\n var row = this.lead.row;\n var column = this.lead.column;\n var line = this.doc.getLine(row);\n var rightOfCursor = line.substring(column);\n this.session.nonTokenRe.lastIndex = 0;\n this.session.tokenRe.lastIndex = 0;\n var fold = this.session.getFoldAt(row, column, 1);\n if (fold) {\n this.moveCursorTo(fold.end.row, fold.end.column);\n return;\n }\n if (this.session.nonTokenRe.exec(rightOfCursor)) {\n column += this.session.nonTokenRe.lastIndex;\n this.session.nonTokenRe.lastIndex = 0;\n rightOfCursor = line.substring(column);\n }\n if (column >= line.length) {\n this.moveCursorTo(row, line.length);\n this.moveCursorRight();\n if (row < this.doc.getLength() - 1)\n this.moveCursorWordRight();\n return;\n }\n if (this.session.tokenRe.exec(rightOfCursor)) {\n column += this.session.tokenRe.lastIndex;\n this.session.tokenRe.lastIndex = 0;\n }\n this.moveCursorTo(row, column);\n };\n Selection.prototype.moveCursorLongWordLeft = function () {\n var row = this.lead.row;\n var column = this.lead.column;\n var fold;\n if (fold = this.session.getFoldAt(row, column, -1)) {\n this.moveCursorTo(fold.start.row, fold.start.column);\n return;\n }\n var str = this.session.getFoldStringAt(row, column, -1);\n if (str == null) {\n str = this.doc.getLine(row).substring(0, column);\n }\n var leftOfCursor = lang.stringReverse(str);\n this.session.nonTokenRe.lastIndex = 0;\n this.session.tokenRe.lastIndex = 0;\n if (this.session.nonTokenRe.exec(leftOfCursor)) {\n column -= this.session.nonTokenRe.lastIndex;\n leftOfCursor = leftOfCursor.slice(this.session.nonTokenRe.lastIndex);\n this.session.nonTokenRe.lastIndex = 0;\n }\n if (column <= 0) {\n this.moveCursorTo(row, 0);\n this.moveCursorLeft();\n if (row > 0)\n this.moveCursorWordLeft();\n return;\n }\n if (this.session.tokenRe.exec(leftOfCursor)) {\n column -= this.session.tokenRe.lastIndex;\n this.session.tokenRe.lastIndex = 0;\n }\n this.moveCursorTo(row, column);\n };\n Selection.prototype.$shortWordEndIndex = function (rightOfCursor) {\n var index = 0, ch;\n var whitespaceRe = /\\s/;\n var tokenRe = this.session.tokenRe;\n tokenRe.lastIndex = 0;\n if (this.session.tokenRe.exec(rightOfCursor)) {\n index = this.session.tokenRe.lastIndex;\n }\n else {\n while ((ch = rightOfCursor[index]) && whitespaceRe.test(ch))\n index++;\n if (index < 1) {\n tokenRe.lastIndex = 0;\n while ((ch = rightOfCursor[index]) && !tokenRe.test(ch)) {\n tokenRe.lastIndex = 0;\n index++;\n if (whitespaceRe.test(ch)) {\n if (index > 2) {\n index--;\n break;\n }\n else {\n while ((ch = rightOfCursor[index]) && whitespaceRe.test(ch))\n index++;\n if (index > 2)\n break;\n }\n }\n }\n }\n }\n tokenRe.lastIndex = 0;\n return index;\n };\n Selection.prototype.moveCursorShortWordRight = function () {\n var row = this.lead.row;\n var column = this.lead.column;\n var line = this.doc.getLine(row);\n var rightOfCursor = line.substring(column);\n var fold = this.session.getFoldAt(row, column, 1);\n if (fold)\n return this.moveCursorTo(fold.end.row, fold.end.column);\n if (column == line.length) {\n var l = this.doc.getLength();\n do {\n row++;\n rightOfCursor = this.doc.getLine(row);\n } while (row < l && /^\\s*$/.test(rightOfCursor));\n if (!/^\\s+/.test(rightOfCursor))\n rightOfCursor = \"\";\n column = 0;\n }\n var index = this.$shortWordEndIndex(rightOfCursor);\n this.moveCursorTo(row, column + index);\n };\n Selection.prototype.moveCursorShortWordLeft = function () {\n var row = this.lead.row;\n var column = this.lead.column;\n var fold;\n if (fold = this.session.getFoldAt(row, column, -1))\n return this.moveCursorTo(fold.start.row, fold.start.column);\n var line = this.session.getLine(row).substring(0, column);\n if (column === 0) {\n do {\n row--;\n line = this.doc.getLine(row);\n } while (row > 0 && /^\\s*$/.test(line));\n column = line.length;\n if (!/\\s+$/.test(line))\n line = \"\";\n }\n var leftOfCursor = lang.stringReverse(line);\n var index = this.$shortWordEndIndex(leftOfCursor);\n return this.moveCursorTo(row, column - index);\n };\n Selection.prototype.moveCursorWordRight = function () {\n if (this.session.$selectLongWords)\n this.moveCursorLongWordRight();\n else\n this.moveCursorShortWordRight();\n };\n Selection.prototype.moveCursorWordLeft = function () {\n if (this.session.$selectLongWords)\n this.moveCursorLongWordLeft();\n else\n this.moveCursorShortWordLeft();\n };\n Selection.prototype.moveCursorBy = function (rows, chars) {\n var screenPos = this.session.documentToScreenPosition(this.lead.row, this.lead.column);\n var offsetX;\n if (chars === 0) {\n if (rows !== 0) {\n if (this.session.$bidiHandler.isBidiRow(screenPos.row, this.lead.row)) {\n offsetX = this.session.$bidiHandler.getPosLeft(screenPos.column);\n screenPos.column = Math.round(offsetX / this.session.$bidiHandler.charWidths[0]);\n }\n else {\n offsetX = screenPos.column * this.session.$bidiHandler.charWidths[0];\n }\n }\n if (this.$desiredColumn)\n screenPos.column = this.$desiredColumn;\n else\n this.$desiredColumn = screenPos.column;\n }\n if (rows != 0 && this.session.lineWidgets && this.session.lineWidgets[this.lead.row]) {\n var widget = this.session.lineWidgets[this.lead.row];\n if (rows < 0)\n rows -= widget.rowsAbove || 0;\n else if (rows > 0)\n rows += widget.rowCount - (widget.rowsAbove || 0);\n }\n var docPos = this.session.screenToDocumentPosition(screenPos.row + rows, screenPos.column, offsetX);\n if (rows !== 0 && chars === 0 && docPos.row === this.lead.row && docPos.column === this.lead.column) {\n }\n this.moveCursorTo(docPos.row, docPos.column + chars, chars === 0);\n };\n Selection.prototype.moveCursorToPosition = function (position) {\n this.moveCursorTo(position.row, position.column);\n };\n Selection.prototype.moveCursorTo = function (row, column, keepDesiredColumn) {\n var fold = this.session.getFoldAt(row, column, 1);\n if (fold) {\n row = fold.start.row;\n column = fold.start.column;\n }\n this.$keepDesiredColumnOnChange = true;\n var line = this.session.getLine(row);\n if (/[\\uDC00-\\uDFFF]/.test(line.charAt(column)) && line.charAt(column - 1)) {\n if (this.lead.row == row && this.lead.column == column + 1)\n column = column - 1;\n else\n column = column + 1;\n }\n this.lead.setPosition(row, column);\n this.$keepDesiredColumnOnChange = false;\n if (!keepDesiredColumn)\n this.$desiredColumn = null;\n };\n Selection.prototype.moveCursorToScreen = function (row, column, keepDesiredColumn) {\n var pos = this.session.screenToDocumentPosition(row, column);\n this.moveCursorTo(pos.row, pos.column, keepDesiredColumn);\n };\n Selection.prototype.detach = function () {\n this.lead.detach();\n this.anchor.detach();\n };\n Selection.prototype.fromOrientedRange = function (range) {\n this.setSelectionRange(range, range.cursor == range.start);\n this.$desiredColumn = range.desiredColumn || this.$desiredColumn;\n };\n Selection.prototype.toOrientedRange = function (range) {\n var r = this.getRange();\n if (range) {\n range.start.column = r.start.column;\n range.start.row = r.start.row;\n range.end.column = r.end.column;\n range.end.row = r.end.row;\n }\n else {\n range = r;\n }\n range.cursor = this.isBackwards() ? range.start : range.end;\n range.desiredColumn = this.$desiredColumn;\n return range;\n };\n Selection.prototype.getRangeOfMovements = function (func) {\n var start = this.getCursor();\n try {\n func(this);\n var end = this.getCursor();\n return Range.fromPoints(start, end);\n }\n catch (e) {\n return Range.fromPoints(start, start);\n }\n finally {\n this.moveCursorToPosition(start);\n }\n };\n Selection.prototype.toJSON = function () {\n if (this.rangeCount) {\n var data = this.ranges.map(function (r) {\n var r1 = r.clone();\n r1.isBackwards = r.cursor == r.start;\n return r1;\n });\n }\n else {\n var data = this.getRange();\n data.isBackwards = this.isBackwards();\n }\n return data;\n };\n Selection.prototype.fromJSON = function (data) {\n if (data.start == undefined) {\n if (this.rangeList && data.length > 1) {\n this.toSingleRange(data[0]);\n for (var i = data.length; i--;) {\n var r = Range.fromPoints(data[i].start, data[i].end);\n if (data[i].isBackwards)\n r.cursor = r.start;\n this.addRange(r, true);\n }\n return;\n }\n else {\n data = data[0];\n }\n }\n if (this.rangeList)\n this.toSingleRange(data);\n this.setSelectionRange(data, data.isBackwards);\n };\n Selection.prototype.isEqual = function (data) {\n if ((data.length || this.rangeCount) && data.length != this.rangeCount)\n return false;\n if (!data.length || !this.ranges)\n return this.getRange().isEqual(data);\n for (var i = this.ranges.length; i--;) {\n if (!this.ranges[i].isEqual(data[i]))\n return false;\n }\n return true;\n };\n return Selection;\n}());\nSelection.prototype.setSelectionAnchor = Selection.prototype.setAnchor;\nSelection.prototype.getSelectionAnchor = Selection.prototype.getAnchor;\nSelection.prototype.setSelectionRange = Selection.prototype.setRange;\noop.implement(Selection.prototype, EventEmitter);\nexports.Selection = Selection;\n\n});\n\nace.define(\"ace/tokenizer\",[\"require\",\"exports\",\"module\",\"ace/lib/report_error\"], function(require, exports, module){\"use strict\";\nvar reportError = require(\"./lib/report_error\").reportError;\nvar MAX_TOKEN_COUNT = 2000;\nvar Tokenizer = /** @class */ (function () {\n function Tokenizer(rules) {\n this.states = rules;\n this.regExps = {};\n this.matchMappings = {};\n for (var key in this.states) {\n var state = this.states[key];\n var ruleRegExps = [];\n var matchTotal = 0;\n var mapping = this.matchMappings[key] = { defaultToken: \"text\" };\n var flag = \"g\";\n var splitterRurles = [];\n for (var i = 0; i < state.length; i++) {\n var rule = state[i];\n if (rule.defaultToken)\n mapping.defaultToken = rule.defaultToken;\n if (rule.caseInsensitive && flag.indexOf(\"i\") === -1)\n flag += \"i\";\n if (rule.unicode && flag.indexOf(\"u\") === -1)\n flag += \"u\";\n if (rule.regex == null)\n continue;\n if (rule.regex instanceof RegExp)\n rule.regex = rule.regex.toString().slice(1, -1);\n var adjustedregex = rule.regex;\n var matchcount = new RegExp(\"(?:(\" + adjustedregex + \")|(.))\").exec(\"a\").length - 2;\n if (Array.isArray(rule.token)) {\n if (rule.token.length == 1 || matchcount == 1) {\n rule.token = rule.token[0];\n }\n else if (matchcount - 1 != rule.token.length) {\n this.reportError(\"number of classes and regexp groups doesn't match\", {\n rule: rule,\n groupCount: matchcount - 1\n });\n rule.token = rule.token[0];\n }\n else {\n rule.tokenArray = rule.token;\n rule.token = null;\n rule.onMatch = this.$arrayTokens;\n }\n }\n else if (typeof rule.token == \"function\" && !rule.onMatch) {\n if (matchcount > 1)\n rule.onMatch = this.$applyToken;\n else\n rule.onMatch = rule.token;\n }\n if (matchcount > 1) {\n if (/\\\\\\d/.test(rule.regex)) {\n adjustedregex = rule.regex.replace(/\\\\([0-9]+)/g, function (match, digit) {\n return \"\\\\\" + (parseInt(digit, 10) + matchTotal + 1);\n });\n }\n else {\n matchcount = 1;\n adjustedregex = this.removeCapturingGroups(rule.regex);\n }\n if (!rule.splitRegex && typeof rule.token != \"string\")\n splitterRurles.push(rule); // flag will be known only at the very end\n }\n mapping[matchTotal] = i;\n matchTotal += matchcount;\n ruleRegExps.push(adjustedregex);\n if (!rule.onMatch)\n rule.onMatch = null;\n }\n if (!ruleRegExps.length) {\n mapping[0] = 0;\n ruleRegExps.push(\"$\");\n }\n splitterRurles.forEach(function (rule) {\n rule.splitRegex = this.createSplitterRegexp(rule.regex, flag);\n }, this);\n this.regExps[key] = new RegExp(\"(\" + ruleRegExps.join(\")|(\") + \")|($)\", flag);\n }\n }\n Tokenizer.prototype.$setMaxTokenCount = function (m) {\n MAX_TOKEN_COUNT = m | 0;\n };\n Tokenizer.prototype.$applyToken = function (str) {\n var values = this.splitRegex.exec(str).slice(1);\n var types = this.token.apply(this, values);\n if (typeof types === \"string\")\n return [{ type: types, value: str }];\n var tokens = [];\n for (var i = 0, l = types.length; i < l; i++) {\n if (values[i])\n tokens[tokens.length] = {\n type: types[i],\n value: values[i]\n };\n }\n return tokens;\n };\n Tokenizer.prototype.$arrayTokens = function (str) {\n if (!str)\n return [];\n var values = this.splitRegex.exec(str);\n if (!values)\n return \"text\";\n var tokens = [];\n var types = this.tokenArray;\n for (var i = 0, l = types.length; i < l; i++) {\n if (values[i + 1])\n tokens[tokens.length] = {\n type: types[i],\n value: values[i + 1]\n };\n }\n return tokens;\n };\n Tokenizer.prototype.removeCapturingGroups = function (src) {\n var r = src.replace(/\\\\.|\\[(?:\\\\.|[^\\\\\\]])*|\\(\\?[:=!<]|(\\()/g, function (x, y) { return y ? \"(?:\" : x; });\n return r;\n };\n Tokenizer.prototype.createSplitterRegexp = function (src, flag) {\n if (src.indexOf(\"(?=\") != -1) {\n var stack = 0;\n var inChClass = false;\n var lastCapture = {};\n src.replace(/(\\\\.)|(\\((?:\\?[=!])?)|(\\))|([\\[\\]])/g, function (m, esc, parenOpen, parenClose, square, index) {\n if (inChClass) {\n inChClass = square != \"]\";\n }\n else if (square) {\n inChClass = true;\n }\n else if (parenClose) {\n if (stack == lastCapture.stack) {\n lastCapture.end = index + 1;\n lastCapture.stack = -1;\n }\n stack--;\n }\n else if (parenOpen) {\n stack++;\n if (parenOpen.length != 1) {\n lastCapture.stack = stack;\n lastCapture.start = index;\n }\n }\n return m;\n });\n if (lastCapture.end != null && /^\\)*$/.test(src.substr(lastCapture.end)))\n src = src.substring(0, lastCapture.start) + src.substr(lastCapture.end);\n }\n if (src.charAt(0) != \"^\")\n src = \"^\" + src;\n if (src.charAt(src.length - 1) != \"$\")\n src += \"$\";\n return new RegExp(src, (flag || \"\").replace(\"g\", \"\"));\n };\n Tokenizer.prototype.getLineTokens = function (line, startState) {\n if (startState && typeof startState != \"string\") {\n var stack = startState.slice(0);\n startState = stack[0];\n if (startState === \"#tmp\") {\n stack.shift();\n startState = stack.shift();\n }\n }\n else\n var stack = [];\n var currentState = startState || \"start\";\n var state = this.states[currentState];\n if (!state) {\n currentState = \"start\";\n state = this.states[currentState];\n }\n var mapping = this.matchMappings[currentState];\n var re = this.regExps[currentState];\n re.lastIndex = 0;\n var match, tokens = [];\n var lastIndex = 0;\n var matchAttempts = 0;\n var token = { type: null, value: \"\" };\n while (match = re.exec(line)) {\n var type = mapping.defaultToken;\n var rule = null;\n var value = match[0];\n var index = re.lastIndex;\n if (index - value.length > lastIndex) {\n var skipped = line.substring(lastIndex, index - value.length);\n if (token.type == type) {\n token.value += skipped;\n }\n else {\n if (token.type)\n tokens.push(token);\n token = { type: type, value: skipped };\n }\n }\n for (var i = 0; i < match.length - 2; i++) {\n if (match[i + 1] === undefined)\n continue;\n rule = state[mapping[i]];\n if (rule.onMatch)\n type = rule.onMatch(value, currentState, stack, line);\n else\n type = rule.token;\n if (rule.next) {\n if (typeof rule.next == \"string\") {\n currentState = rule.next;\n }\n else {\n currentState = rule.next(currentState, stack);\n }\n state = this.states[currentState];\n if (!state) {\n this.reportError(\"state doesn't exist\", currentState);\n currentState = \"start\";\n state = this.states[currentState];\n }\n mapping = this.matchMappings[currentState];\n lastIndex = index;\n re = this.regExps[currentState];\n re.lastIndex = index;\n }\n if (rule.consumeLineEnd)\n lastIndex = index;\n break;\n }\n if (value) {\n if (typeof type === \"string\") {\n if ((!rule || rule.merge !== false) && token.type === type) {\n token.value += value;\n }\n else {\n if (token.type)\n tokens.push(token);\n token = { type: type, value: value };\n }\n }\n else if (type) {\n if (token.type)\n tokens.push(token);\n token = { type: null, value: \"\" };\n for (var i = 0; i < type.length; i++)\n tokens.push(type[i]);\n }\n }\n if (lastIndex == line.length)\n break;\n lastIndex = index;\n if (matchAttempts++ > MAX_TOKEN_COUNT) {\n if (matchAttempts > 2 * line.length) {\n this.reportError(\"infinite loop with in ace tokenizer\", {\n startState: startState,\n line: line\n });\n }\n while (lastIndex < line.length) {\n if (token.type)\n tokens.push(token);\n token = {\n value: line.substring(lastIndex, lastIndex += 500),\n type: \"overflow\"\n };\n }\n currentState = \"start\";\n stack = [];\n break;\n }\n }\n if (token.type)\n tokens.push(token);\n if (stack.length > 1) {\n if (stack[0] !== currentState)\n stack.unshift(\"#tmp\", currentState);\n }\n return {\n tokens: tokens,\n state: stack.length ? stack : currentState\n };\n };\n return Tokenizer;\n}());\nTokenizer.prototype.reportError = reportError;\nexports.Tokenizer = Tokenizer;\n\n});\n\nace.define(\"ace/mode/text_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/deep_copy\"], function(require, exports, module){\"use strict\";\nvar deepCopy = require(\"../lib/deep_copy\").deepCopy;\nvar TextHighlightRules = function () {\n this.$rules = {\n \"start\": [{\n token: \"empty_line\",\n regex: '^$'\n }, {\n defaultToken: \"text\"\n }]\n };\n};\n(function () {\n this.addRules = function (rules, prefix) {\n if (!prefix) {\n for (var key in rules)\n this.$rules[key] = rules[key];\n return;\n }\n for (var key in rules) {\n var state = rules[key];\n for (var i = 0; i < state.length; i++) {\n var rule = state[i];\n if (rule.next || rule.onMatch) {\n if (typeof rule.next == \"string\") {\n if (rule.next.indexOf(prefix) !== 0)\n rule.next = prefix + rule.next;\n }\n if (rule.nextState && rule.nextState.indexOf(prefix) !== 0)\n rule.nextState = prefix + rule.nextState;\n }\n }\n this.$rules[prefix + key] = state;\n }\n };\n this.getRules = function () {\n return this.$rules;\n };\n this.embedRules = function (HighlightRules, prefix, escapeRules, states, append) {\n var embedRules = typeof HighlightRules == \"function\"\n ? new HighlightRules().getRules()\n : HighlightRules;\n if (states) {\n for (var i = 0; i < states.length; i++)\n states[i] = prefix + states[i];\n }\n else {\n states = [];\n for (var key in embedRules)\n states.push(prefix + key);\n }\n this.addRules(embedRules, prefix);\n if (escapeRules) {\n var addRules = Array.prototype[append ? \"push\" : \"unshift\"];\n for (var i = 0; i < states.length; i++)\n addRules.apply(this.$rules[states[i]], deepCopy(escapeRules));\n }\n if (!this.$embeds)\n this.$embeds = [];\n this.$embeds.push(prefix);\n };\n this.getEmbeds = function () {\n return this.$embeds;\n };\n var pushState = function (currentState, stack) {\n if (currentState != \"start\" || stack.length)\n stack.unshift(this.nextState, currentState);\n return this.nextState;\n };\n var popState = function (currentState, stack) {\n stack.shift();\n return stack.shift() || \"start\";\n };\n this.normalizeRules = function () {\n var id = 0;\n var rules = this.$rules;\n function processState(key) {\n var state = rules[key];\n state.processed = true;\n for (var i = 0; i < state.length; i++) {\n var rule = state[i];\n var toInsert = null;\n if (Array.isArray(rule)) {\n toInsert = rule;\n rule = {};\n }\n if (!rule.regex && rule.start) {\n rule.regex = rule.start;\n if (!rule.next)\n rule.next = [];\n rule.next.push({\n defaultToken: rule.token\n }, {\n token: rule.token + \".end\",\n regex: rule.end || rule.start,\n next: \"pop\"\n });\n rule.token = rule.token + \".start\";\n rule.push = true;\n }\n var next = rule.next || rule.push;\n if (next && Array.isArray(next)) {\n var stateName = rule.stateName;\n if (!stateName) {\n stateName = rule.token;\n if (typeof stateName != \"string\")\n stateName = stateName[0] || \"\";\n if (rules[stateName])\n stateName += id++;\n }\n rules[stateName] = next;\n rule.next = stateName;\n processState(stateName);\n }\n else if (next == \"pop\") {\n rule.next = popState;\n }\n if (rule.push) {\n rule.nextState = rule.next || rule.push;\n rule.next = pushState;\n delete rule.push;\n }\n if (rule.rules) {\n for (var r in rule.rules) {\n if (rules[r]) {\n if (rules[r].push)\n rules[r].push.apply(rules[r], rule.rules[r]);\n }\n else {\n rules[r] = rule.rules[r];\n }\n }\n }\n var includeName = typeof rule == \"string\" ? rule : rule.include;\n if (includeName) {\n if (includeName === \"$self\")\n includeName = \"start\";\n if (Array.isArray(includeName))\n toInsert = includeName.map(function (x) { return rules[x]; });\n else\n toInsert = rules[includeName];\n }\n if (toInsert) {\n var args = [i, 1].concat(toInsert);\n if (rule.noEscape)\n args = args.filter(function (x) { return !x.next; });\n state.splice.apply(state, args);\n i--;\n }\n if (rule.keywordMap) {\n rule.token = this.createKeywordMapper(rule.keywordMap, rule.defaultToken || \"text\", rule.caseInsensitive);\n delete rule.defaultToken;\n }\n }\n }\n Object.keys(rules).forEach(processState, this);\n };\n this.createKeywordMapper = function (map, defaultToken, ignoreCase, splitChar) {\n var keywords = Object.create(null);\n this.$keywordList = [];\n Object.keys(map).forEach(function (className) {\n var a = map[className];\n var list = a.split(splitChar || \"|\");\n for (var i = list.length; i--;) {\n var word = list[i];\n this.$keywordList.push(word);\n if (ignoreCase)\n word = word.toLowerCase();\n keywords[word] = className;\n }\n }, this);\n map = null;\n return ignoreCase\n ? function (value) { return keywords[value.toLowerCase()] || defaultToken; }\n : function (value) { return keywords[value] || defaultToken; };\n };\n this.getKeywords = function () {\n return this.$keywords;\n };\n}).call(TextHighlightRules.prototype);\nexports.TextHighlightRules = TextHighlightRules;\n\n});\n\nace.define(\"ace/mode/behaviour\",[\"require\",\"exports\",\"module\"], function(require, exports, module){\"use strict\";\nvar Behaviour = function () {\n this.$behaviours = {};\n};\n(function () {\n this.add = function (name, action, callback) {\n switch (undefined) {\n case this.$behaviours:\n this.$behaviours = {};\n case this.$behaviours[name]:\n this.$behaviours[name] = {};\n }\n this.$behaviours[name][action] = callback;\n };\n this.addBehaviours = function (behaviours) {\n for (var key in behaviours) {\n for (var action in behaviours[key]) {\n this.add(key, action, behaviours[key][action]);\n }\n }\n };\n this.remove = function (name) {\n if (this.$behaviours && this.$behaviours[name]) {\n delete this.$behaviours[name];\n }\n };\n this.inherit = function (mode, filter) {\n if (typeof mode === \"function\") {\n var behaviours = new mode().getBehaviours(filter);\n }\n else {\n var behaviours = mode.getBehaviours(filter);\n }\n this.addBehaviours(behaviours);\n };\n this.getBehaviours = function (filter) {\n if (!filter) {\n return this.$behaviours;\n }\n else {\n var ret = {};\n for (var i = 0; i < filter.length; i++) {\n if (this.$behaviours[filter[i]]) {\n ret[filter[i]] = this.$behaviours[filter[i]];\n }\n }\n return ret;\n }\n };\n}).call(Behaviour.prototype);\nexports.Behaviour = Behaviour;\n\n});\n\nace.define(\"ace/token_iterator\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar Range = require(\"./range\").Range;\nvar TokenIterator = /** @class */ (function () {\n function TokenIterator(session, initialRow, initialColumn) {\n this.$session = session;\n this.$row = initialRow;\n this.$rowTokens = session.getTokens(initialRow);\n var token = session.getTokenAt(initialRow, initialColumn);\n this.$tokenIndex = token ? token.index : -1;\n }\n TokenIterator.prototype.stepBackward = function () {\n this.$tokenIndex -= 1;\n while (this.$tokenIndex < 0) {\n this.$row -= 1;\n if (this.$row < 0) {\n this.$row = 0;\n return null;\n }\n this.$rowTokens = this.$session.getTokens(this.$row);\n this.$tokenIndex = this.$rowTokens.length - 1;\n }\n return this.$rowTokens[this.$tokenIndex];\n };\n TokenIterator.prototype.stepForward = function () {\n this.$tokenIndex += 1;\n var rowCount;\n while (this.$tokenIndex >= this.$rowTokens.length) {\n this.$row += 1;\n if (!rowCount)\n rowCount = this.$session.getLength();\n if (this.$row >= rowCount) {\n this.$row = rowCount - 1;\n return null;\n }\n this.$rowTokens = this.$session.getTokens(this.$row);\n this.$tokenIndex = 0;\n }\n return this.$rowTokens[this.$tokenIndex];\n };\n TokenIterator.prototype.getCurrentToken = function () {\n return this.$rowTokens[this.$tokenIndex];\n };\n TokenIterator.prototype.getCurrentTokenRow = function () {\n return this.$row;\n };\n TokenIterator.prototype.getCurrentTokenColumn = function () {\n var rowTokens = this.$rowTokens;\n var tokenIndex = this.$tokenIndex;\n var column = rowTokens[tokenIndex].start;\n if (column !== undefined)\n return column;\n column = 0;\n while (tokenIndex > 0) {\n tokenIndex -= 1;\n column += rowTokens[tokenIndex].value.length;\n }\n return column;\n };\n TokenIterator.prototype.getCurrentTokenPosition = function () {\n return { row: this.$row, column: this.getCurrentTokenColumn() };\n };\n TokenIterator.prototype.getCurrentTokenRange = function () {\n var token = this.$rowTokens[this.$tokenIndex];\n var column = this.getCurrentTokenColumn();\n return new Range(this.$row, column, this.$row, column + token.value.length);\n };\n return TokenIterator;\n}());\nexports.TokenIterator = TokenIterator;\n\n});\n\nace.define(\"ace/mode/behaviour/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/behaviour\",\"ace/token_iterator\",\"ace/lib/lang\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../../lib/oop\");\nvar Behaviour = require(\"../behaviour\").Behaviour;\nvar TokenIterator = require(\"../../token_iterator\").TokenIterator;\nvar lang = require(\"../../lib/lang\");\nvar SAFE_INSERT_IN_TOKENS = [\"text\", \"paren.rparen\", \"rparen\", \"paren\", \"punctuation.operator\"];\nvar SAFE_INSERT_BEFORE_TOKENS = [\"text\", \"paren.rparen\", \"rparen\", \"paren\", \"punctuation.operator\", \"comment\"];\nvar context;\nvar contextCache = {};\nvar defaultQuotes = { '\"': '\"', \"'\": \"'\" };\nvar initContext = function (editor) {\n var id = -1;\n if (editor.multiSelect) {\n id = editor.selection.index;\n if (contextCache.rangeCount != editor.multiSelect.rangeCount)\n contextCache = { rangeCount: editor.multiSelect.rangeCount };\n }\n if (contextCache[id])\n return context = contextCache[id];\n context = contextCache[id] = {\n autoInsertedBrackets: 0,\n autoInsertedRow: -1,\n autoInsertedLineEnd: \"\",\n maybeInsertedBrackets: 0,\n maybeInsertedRow: -1,\n maybeInsertedLineStart: \"\",\n maybeInsertedLineEnd: \"\"\n };\n};\nvar getWrapped = function (selection, selected, opening, closing) {\n var rowDiff = selection.end.row - selection.start.row;\n return {\n text: opening + selected + closing,\n selection: [\n 0,\n selection.start.column + 1,\n rowDiff,\n selection.end.column + (rowDiff ? 0 : 1)\n ]\n };\n};\nvar CstyleBehaviour = function (options) {\n options = options || {};\n this.add(\"braces\", \"insertion\", function (state, action, editor, session, text) {\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n if (text == '{') {\n initContext(editor);\n var selection = editor.getSelectionRange();\n var selected = session.doc.getTextRange(selection);\n if (selected !== \"\" && selected !== \"{\" && editor.getWrapBehavioursEnabled()) {\n return getWrapped(selection, selected, '{', '}');\n }\n else if (CstyleBehaviour.isSaneInsertion(editor, session)) {\n if (/[\\]\\}\\)]/.test(line[cursor.column]) || editor.inMultiSelectMode || options.braces) {\n CstyleBehaviour.recordAutoInsert(editor, session, \"}\");\n return {\n text: '{}',\n selection: [1, 1]\n };\n }\n else {\n CstyleBehaviour.recordMaybeInsert(editor, session, \"{\");\n return {\n text: '{',\n selection: [1, 1]\n };\n }\n }\n }\n else if (text == '}') {\n initContext(editor);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n if (rightChar == '}') {\n var matching = session.$findOpeningBracket('}', { column: cursor.column + 1, row: cursor.row });\n if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) {\n CstyleBehaviour.popAutoInsertedClosing();\n return {\n text: '',\n selection: [1, 1]\n };\n }\n }\n }\n else if (text == \"\\n\" || text == \"\\r\\n\") {\n initContext(editor);\n var closing = \"\";\n if (CstyleBehaviour.isMaybeInsertedClosing(cursor, line)) {\n closing = lang.stringRepeat(\"}\", context.maybeInsertedBrackets);\n CstyleBehaviour.clearMaybeInsertedClosing();\n }\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n if (rightChar === '}') {\n var openBracePos = session.findMatchingBracket({ row: cursor.row, column: cursor.column + 1 }, '}');\n if (!openBracePos)\n return null;\n var next_indent = this.$getIndent(session.getLine(openBracePos.row));\n }\n else if (closing) {\n var next_indent = this.$getIndent(line);\n }\n else {\n CstyleBehaviour.clearMaybeInsertedClosing();\n return;\n }\n var indent = next_indent + session.getTabString();\n return {\n text: '\\n' + indent + '\\n' + next_indent + closing,\n selection: [1, indent.length, 1, indent.length]\n };\n }\n else {\n CstyleBehaviour.clearMaybeInsertedClosing();\n }\n });\n this.add(\"braces\", \"deletion\", function (state, action, editor, session, range) {\n var selected = session.doc.getTextRange(range);\n if (!range.isMultiLine() && selected == '{') {\n initContext(editor);\n var line = session.doc.getLine(range.start.row);\n var rightChar = line.substring(range.end.column, range.end.column + 1);\n if (rightChar == '}') {\n range.end.column++;\n return range;\n }\n else {\n context.maybeInsertedBrackets--;\n }\n }\n });\n this.add(\"parens\", \"insertion\", function (state, action, editor, session, text) {\n if (text == '(') {\n initContext(editor);\n var selection = editor.getSelectionRange();\n var selected = session.doc.getTextRange(selection);\n if (selected !== \"\" && editor.getWrapBehavioursEnabled()) {\n return getWrapped(selection, selected, '(', ')');\n }\n else if (CstyleBehaviour.isSaneInsertion(editor, session)) {\n CstyleBehaviour.recordAutoInsert(editor, session, \")\");\n return {\n text: '()',\n selection: [1, 1]\n };\n }\n }\n else if (text == ')') {\n initContext(editor);\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n if (rightChar == ')') {\n var matching = session.$findOpeningBracket(')', { column: cursor.column + 1, row: cursor.row });\n if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) {\n CstyleBehaviour.popAutoInsertedClosing();\n return {\n text: '',\n selection: [1, 1]\n };\n }\n }\n }\n });\n this.add(\"parens\", \"deletion\", function (state, action, editor, session, range) {\n var selected = session.doc.getTextRange(range);\n if (!range.isMultiLine() && selected == '(') {\n initContext(editor);\n var line = session.doc.getLine(range.start.row);\n var rightChar = line.substring(range.start.column + 1, range.start.column + 2);\n if (rightChar == ')') {\n range.end.column++;\n return range;\n }\n }\n });\n this.add(\"brackets\", \"insertion\", function (state, action, editor, session, text) {\n if (text == '[') {\n initContext(editor);\n var selection = editor.getSelectionRange();\n var selected = session.doc.getTextRange(selection);\n if (selected !== \"\" && editor.getWrapBehavioursEnabled()) {\n return getWrapped(selection, selected, '[', ']');\n }\n else if (CstyleBehaviour.isSaneInsertion(editor, session)) {\n CstyleBehaviour.recordAutoInsert(editor, session, \"]\");\n return {\n text: '[]',\n selection: [1, 1]\n };\n }\n }\n else if (text == ']') {\n initContext(editor);\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n if (rightChar == ']') {\n var matching = session.$findOpeningBracket(']', { column: cursor.column + 1, row: cursor.row });\n if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) {\n CstyleBehaviour.popAutoInsertedClosing();\n return {\n text: '',\n selection: [1, 1]\n };\n }\n }\n }\n });\n this.add(\"brackets\", \"deletion\", function (state, action, editor, session, range) {\n var selected = session.doc.getTextRange(range);\n if (!range.isMultiLine() && selected == '[') {\n initContext(editor);\n var line = session.doc.getLine(range.start.row);\n var rightChar = line.substring(range.start.column + 1, range.start.column + 2);\n if (rightChar == ']') {\n range.end.column++;\n return range;\n }\n }\n });\n this.add(\"string_dquotes\", \"insertion\", function (state, action, editor, session, text) {\n var quotes = session.$mode.$quotes || defaultQuotes;\n if (text.length == 1 && quotes[text]) {\n if (this.lineCommentStart && this.lineCommentStart.indexOf(text) != -1)\n return;\n initContext(editor);\n var quote = text;\n var selection = editor.getSelectionRange();\n var selected = session.doc.getTextRange(selection);\n if (selected !== \"\" && (selected.length != 1 || !quotes[selected]) && editor.getWrapBehavioursEnabled()) {\n return getWrapped(selection, selected, quote, quote);\n }\n else if (!selected) {\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n var leftChar = line.substring(cursor.column - 1, cursor.column);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n var token = session.getTokenAt(cursor.row, cursor.column);\n var rightToken = session.getTokenAt(cursor.row, cursor.column + 1);\n if (leftChar == \"\\\\\" && token && /escape/.test(token.type))\n return null;\n var stringBefore = token && /string|escape/.test(token.type);\n var stringAfter = !rightToken || /string|escape/.test(rightToken.type);\n var pair;\n if (rightChar == quote) {\n pair = stringBefore !== stringAfter;\n if (pair && /string\\.end/.test(rightToken.type))\n pair = false;\n }\n else {\n if (stringBefore && !stringAfter)\n return null; // wrap string with different quote\n if (stringBefore && stringAfter)\n return null; // do not pair quotes inside strings\n var wordRe = session.$mode.tokenRe;\n wordRe.lastIndex = 0;\n var isWordBefore = wordRe.test(leftChar);\n wordRe.lastIndex = 0;\n var isWordAfter = wordRe.test(rightChar);\n var pairQuotesAfter = session.$mode.$pairQuotesAfter;\n var shouldPairQuotes = pairQuotesAfter && pairQuotesAfter[quote] && pairQuotesAfter[quote].test(leftChar);\n if ((!shouldPairQuotes && isWordBefore) || isWordAfter)\n return null; // before or after alphanumeric\n if (rightChar && !/[\\s;,.})\\]\\\\]/.test(rightChar))\n return null; // there is rightChar and it isn't closing\n var charBefore = line[cursor.column - 2];\n if (leftChar == quote && (charBefore == quote || wordRe.test(charBefore)))\n return null;\n pair = true;\n }\n return {\n text: pair ? quote + quote : \"\",\n selection: [1, 1]\n };\n }\n }\n });\n this.add(\"string_dquotes\", \"deletion\", function (state, action, editor, session, range) {\n var quotes = session.$mode.$quotes || defaultQuotes;\n var selected = session.doc.getTextRange(range);\n if (!range.isMultiLine() && quotes.hasOwnProperty(selected)) {\n initContext(editor);\n var line = session.doc.getLine(range.start.row);\n var rightChar = line.substring(range.start.column + 1, range.start.column + 2);\n if (rightChar == selected) {\n range.end.column++;\n return range;\n }\n }\n });\n if (options.closeDocComment !== false) {\n this.add(\"doc comment end\", \"insertion\", function (state, action, editor, session, text) {\n if (state === \"doc-start\" && (text === \"\\n\" || text === \"\\r\\n\") && editor.selection.isEmpty()) {\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n var nextLine = session.doc.getLine(cursor.row + 1);\n var indent = this.$getIndent(line);\n if (/\\s*\\*/.test(nextLine)) {\n if (/^\\s*\\*/.test(line)) {\n return {\n text: text + indent + \"* \",\n selection: [1, 3 + indent.length, 1, 3 + indent.length]\n };\n }\n else {\n return {\n text: text + indent + \" * \",\n selection: [1, 3 + indent.length, 1, 3 + indent.length]\n };\n }\n }\n if (/\\/\\*\\*/.test(line.substring(0, cursor.column))) {\n return {\n text: text + indent + \" * \" + text + \" \" + indent + \"*/\",\n selection: [1, 4 + indent.length, 1, 4 + indent.length]\n };\n }\n }\n });\n }\n};\nCstyleBehaviour.isSaneInsertion = function (editor, session) {\n var cursor = editor.getCursorPosition();\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n if (!this.$matchTokenType(iterator.getCurrentToken() || \"text\", SAFE_INSERT_IN_TOKENS)) {\n if (/[)}\\]]/.test(editor.session.getLine(cursor.row)[cursor.column]))\n return true;\n var iterator2 = new TokenIterator(session, cursor.row, cursor.column + 1);\n if (!this.$matchTokenType(iterator2.getCurrentToken() || \"text\", SAFE_INSERT_IN_TOKENS))\n return false;\n }\n iterator.stepForward();\n return iterator.getCurrentTokenRow() !== cursor.row ||\n this.$matchTokenType(iterator.getCurrentToken() || \"text\", SAFE_INSERT_BEFORE_TOKENS);\n};\nCstyleBehaviour.$matchTokenType = function (token, types) {\n return types.indexOf(token.type || token) > -1;\n};\nCstyleBehaviour.recordAutoInsert = function (editor, session, bracket) {\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n if (!this.isAutoInsertedClosing(cursor, line, context.autoInsertedLineEnd[0]))\n context.autoInsertedBrackets = 0;\n context.autoInsertedRow = cursor.row;\n context.autoInsertedLineEnd = bracket + line.substr(cursor.column);\n context.autoInsertedBrackets++;\n};\nCstyleBehaviour.recordMaybeInsert = function (editor, session, bracket) {\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n if (!this.isMaybeInsertedClosing(cursor, line))\n context.maybeInsertedBrackets = 0;\n context.maybeInsertedRow = cursor.row;\n context.maybeInsertedLineStart = line.substr(0, cursor.column) + bracket;\n context.maybeInsertedLineEnd = line.substr(cursor.column);\n context.maybeInsertedBrackets++;\n};\nCstyleBehaviour.isAutoInsertedClosing = function (cursor, line, bracket) {\n return context.autoInsertedBrackets > 0 &&\n cursor.row === context.autoInsertedRow &&\n bracket === context.autoInsertedLineEnd[0] &&\n line.substr(cursor.column) === context.autoInsertedLineEnd;\n};\nCstyleBehaviour.isMaybeInsertedClosing = function (cursor, line) {\n return context.maybeInsertedBrackets > 0 &&\n cursor.row === context.maybeInsertedRow &&\n line.substr(cursor.column) === context.maybeInsertedLineEnd &&\n line.substr(0, cursor.column) == context.maybeInsertedLineStart;\n};\nCstyleBehaviour.popAutoInsertedClosing = function () {\n context.autoInsertedLineEnd = context.autoInsertedLineEnd.substr(1);\n context.autoInsertedBrackets--;\n};\nCstyleBehaviour.clearMaybeInsertedClosing = function () {\n if (context) {\n context.maybeInsertedBrackets = 0;\n context.maybeInsertedRow = -1;\n }\n};\noop.inherits(CstyleBehaviour, Behaviour);\nexports.CstyleBehaviour = CstyleBehaviour;\n\n});\n\nace.define(\"ace/unicode\",[\"require\",\"exports\",\"module\"], function(require, exports, module){\"use strict\";\nvar wordChars = [48, 9, 8, 25, 5, 0, 2, 25, 48, 0, 11, 0, 5, 0, 6, 22, 2, 30, 2, 457, 5, 11, 15, 4, 8, 0, 2, 0, 18, 116, 2, 1, 3, 3, 9, 0, 2, 2, 2, 0, 2, 19, 2, 82, 2, 138, 2, 4, 3, 155, 12, 37, 3, 0, 8, 38, 10, 44, 2, 0, 2, 1, 2, 1, 2, 0, 9, 26, 6, 2, 30, 10, 7, 61, 2, 9, 5, 101, 2, 7, 3, 9, 2, 18, 3, 0, 17, 58, 3, 100, 15, 53, 5, 0, 6, 45, 211, 57, 3, 18, 2, 5, 3, 11, 3, 9, 2, 1, 7, 6, 2, 2, 2, 7, 3, 1, 3, 21, 2, 6, 2, 0, 4, 3, 3, 8, 3, 1, 3, 3, 9, 0, 5, 1, 2, 4, 3, 11, 16, 2, 2, 5, 5, 1, 3, 21, 2, 6, 2, 1, 2, 1, 2, 1, 3, 0, 2, 4, 5, 1, 3, 2, 4, 0, 8, 3, 2, 0, 8, 15, 12, 2, 2, 8, 2, 2, 2, 21, 2, 6, 2, 1, 2, 4, 3, 9, 2, 2, 2, 2, 3, 0, 16, 3, 3, 9, 18, 2, 2, 7, 3, 1, 3, 21, 2, 6, 2, 1, 2, 4, 3, 8, 3, 1, 3, 2, 9, 1, 5, 1, 2, 4, 3, 9, 2, 0, 17, 1, 2, 5, 4, 2, 2, 3, 4, 1, 2, 0, 2, 1, 4, 1, 4, 2, 4, 11, 5, 4, 4, 2, 2, 3, 3, 0, 7, 0, 15, 9, 18, 2, 2, 7, 2, 2, 2, 22, 2, 9, 2, 4, 4, 7, 2, 2, 2, 3, 8, 1, 2, 1, 7, 3, 3, 9, 19, 1, 2, 7, 2, 2, 2, 22, 2, 9, 2, 4, 3, 8, 2, 2, 2, 3, 8, 1, 8, 0, 2, 3, 3, 9, 19, 1, 2, 7, 2, 2, 2, 22, 2, 15, 4, 7, 2, 2, 2, 3, 10, 0, 9, 3, 3, 9, 11, 5, 3, 1, 2, 17, 4, 23, 2, 8, 2, 0, 3, 6, 4, 0, 5, 5, 2, 0, 2, 7, 19, 1, 14, 57, 6, 14, 2, 9, 40, 1, 2, 0, 3, 1, 2, 0, 3, 0, 7, 3, 2, 6, 2, 2, 2, 0, 2, 0, 3, 1, 2, 12, 2, 2, 3, 4, 2, 0, 2, 5, 3, 9, 3, 1, 35, 0, 24, 1, 7, 9, 12, 0, 2, 0, 2, 0, 5, 9, 2, 35, 5, 19, 2, 5, 5, 7, 2, 35, 10, 0, 58, 73, 7, 77, 3, 37, 11, 42, 2, 0, 4, 328, 2, 3, 3, 6, 2, 0, 2, 3, 3, 40, 2, 3, 3, 32, 2, 3, 3, 6, 2, 0, 2, 3, 3, 14, 2, 56, 2, 3, 3, 66, 5, 0, 33, 15, 17, 84, 13, 619, 3, 16, 2, 25, 6, 74, 22, 12, 2, 6, 12, 20, 12, 19, 13, 12, 2, 2, 2, 1, 13, 51, 3, 29, 4, 0, 5, 1, 3, 9, 34, 2, 3, 9, 7, 87, 9, 42, 6, 69, 11, 28, 4, 11, 5, 11, 11, 39, 3, 4, 12, 43, 5, 25, 7, 10, 38, 27, 5, 62, 2, 28, 3, 10, 7, 9, 14, 0, 89, 75, 5, 9, 18, 8, 13, 42, 4, 11, 71, 55, 9, 9, 4, 48, 83, 2, 2, 30, 14, 230, 23, 280, 3, 5, 3, 37, 3, 5, 3, 7, 2, 0, 2, 0, 2, 0, 2, 30, 3, 52, 2, 6, 2, 0, 4, 2, 2, 6, 4, 3, 3, 5, 5, 12, 6, 2, 2, 6, 67, 1, 20, 0, 29, 0, 14, 0, 17, 4, 60, 12, 5, 0, 4, 11, 18, 0, 5, 0, 3, 9, 2, 0, 4, 4, 7, 0, 2, 0, 2, 0, 2, 3, 2, 10, 3, 3, 6, 4, 5, 0, 53, 1, 2684, 46, 2, 46, 2, 132, 7, 6, 15, 37, 11, 53, 10, 0, 17, 22, 10, 6, 2, 6, 2, 6, 2, 6, 2, 6, 2, 6, 2, 6, 2, 6, 2, 31, 48, 0, 470, 1, 36, 5, 2, 4, 6, 1, 5, 85, 3, 1, 3, 2, 2, 89, 2, 3, 6, 40, 4, 93, 18, 23, 57, 15, 513, 6581, 75, 20939, 53, 1164, 68, 45, 3, 268, 4, 27, 21, 31, 3, 13, 13, 1, 2, 24, 9, 69, 11, 1, 38, 8, 3, 102, 3, 1, 111, 44, 25, 51, 13, 68, 12, 9, 7, 23, 4, 0, 5, 45, 3, 35, 13, 28, 4, 64, 15, 10, 39, 54, 10, 13, 3, 9, 7, 22, 4, 1, 5, 66, 25, 2, 227, 42, 2, 1, 3, 9, 7, 11171, 13, 22, 5, 48, 8453, 301, 3, 61, 3, 105, 39, 6, 13, 4, 6, 11, 2, 12, 2, 4, 2, 0, 2, 1, 2, 1, 2, 107, 34, 362, 19, 63, 3, 53, 41, 11, 5, 15, 17, 6, 13, 1, 25, 2, 33, 4, 2, 134, 20, 9, 8, 25, 5, 0, 2, 25, 12, 88, 4, 5, 3, 5, 3, 5, 3, 2];\nvar code = 0;\nvar str = [];\nfor (var i = 0; i < wordChars.length; i += 2) {\n str.push(code += wordChars[i]);\n if (wordChars[i + 1])\n str.push(45, code += wordChars[i + 1]);\n}\nexports.wordChars = String.fromCharCode.apply(null, str);\n\n});\n\nace.define(\"ace/mode/text\",[\"require\",\"exports\",\"module\",\"ace/config\",\"ace/tokenizer\",\"ace/mode/text_highlight_rules\",\"ace/mode/behaviour/cstyle\",\"ace/unicode\",\"ace/lib/lang\",\"ace/token_iterator\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar config = require(\"../config\");\nvar Tokenizer = require(\"../tokenizer\").Tokenizer;\nvar TextHighlightRules = require(\"./text_highlight_rules\").TextHighlightRules;\nvar CstyleBehaviour = require(\"./behaviour/cstyle\").CstyleBehaviour;\nvar unicode = require(\"../unicode\");\nvar lang = require(\"../lib/lang\");\nvar TokenIterator = require(\"../token_iterator\").TokenIterator;\nvar Range = require(\"../range\").Range;\nvar Mode = function () {\n this.HighlightRules = TextHighlightRules;\n};\n(function () {\n this.$defaultBehaviour = new CstyleBehaviour();\n this.tokenRe = new RegExp(\"^[\" + unicode.wordChars + \"\\\\$_]+\", \"g\");\n this.nonTokenRe = new RegExp(\"^(?:[^\" + unicode.wordChars + \"\\\\$_]|\\\\s])+\", \"g\");\n this.getTokenizer = function () {\n if (!this.$tokenizer) {\n this.$highlightRules = this.$highlightRules || new this.HighlightRules(this.$highlightRuleConfig);\n this.$tokenizer = new Tokenizer(this.$highlightRules.getRules());\n }\n return this.$tokenizer;\n };\n this.lineCommentStart = \"\";\n this.blockComment = \"\";\n this.toggleCommentLines = function (state, session, startRow, endRow) {\n var doc = session.doc;\n var ignoreBlankLines = true;\n var shouldRemove = true;\n var minIndent = Infinity;\n var tabSize = session.getTabSize();\n var insertAtTabStop = false;\n if (!this.lineCommentStart) {\n if (!this.blockComment)\n return false;\n var lineCommentStart = this.blockComment.start;\n var lineCommentEnd = this.blockComment.end;\n var regexpStart = new RegExp(\"^(\\\\s*)(?:\" + lang.escapeRegExp(lineCommentStart) + \")\");\n var regexpEnd = new RegExp(\"(?:\" + lang.escapeRegExp(lineCommentEnd) + \")\\\\s*$\");\n var comment = function (line, i) {\n if (testRemove(line, i))\n return;\n if (!ignoreBlankLines || /\\S/.test(line)) {\n doc.insertInLine({ row: i, column: line.length }, lineCommentEnd);\n doc.insertInLine({ row: i, column: minIndent }, lineCommentStart);\n }\n };\n var uncomment = function (line, i) {\n var m;\n if (m = line.match(regexpEnd))\n doc.removeInLine(i, line.length - m[0].length, line.length);\n if (m = line.match(regexpStart))\n doc.removeInLine(i, m[1].length, m[0].length);\n };\n var testRemove = function (line, row) {\n if (regexpStart.test(line))\n return true;\n var tokens = session.getTokens(row);\n for (var i = 0; i < tokens.length; i++) {\n if (tokens[i].type === \"comment\")\n return true;\n }\n };\n }\n else {\n if (Array.isArray(this.lineCommentStart)) {\n var regexpStart = this.lineCommentStart.map(lang.escapeRegExp).join(\"|\");\n var lineCommentStart = this.lineCommentStart[0];\n }\n else {\n var regexpStart = lang.escapeRegExp(this.lineCommentStart);\n var lineCommentStart = this.lineCommentStart;\n }\n regexpStart = new RegExp(\"^(\\\\s*)(?:\" + regexpStart + \") ?\");\n insertAtTabStop = session.getUseSoftTabs();\n var uncomment = function (line, i) {\n var m = line.match(regexpStart);\n if (!m)\n return;\n var start = m[1].length, end = m[0].length;\n if (!shouldInsertSpace(line, start, end) && m[0][end - 1] == \" \")\n end--;\n doc.removeInLine(i, start, end);\n };\n var commentWithSpace = lineCommentStart + \" \";\n var comment = function (line, i) {\n if (!ignoreBlankLines || /\\S/.test(line)) {\n if (shouldInsertSpace(line, minIndent, minIndent))\n doc.insertInLine({ row: i, column: minIndent }, commentWithSpace);\n else\n doc.insertInLine({ row: i, column: minIndent }, lineCommentStart);\n }\n };\n var testRemove = function (line, i) {\n return regexpStart.test(line);\n };\n var shouldInsertSpace = function (line, before, after) {\n var spaces = 0;\n while (before-- && line.charAt(before) == \" \")\n spaces++;\n if (spaces % tabSize != 0)\n return false;\n var spaces = 0;\n while (line.charAt(after++) == \" \")\n spaces++;\n if (tabSize > 2)\n return spaces % tabSize != tabSize - 1;\n else\n return spaces % tabSize == 0;\n };\n }\n function iter(fun) {\n for (var i = startRow; i <= endRow; i++)\n fun(doc.getLine(i), i);\n }\n var minEmptyLength = Infinity;\n iter(function (line, i) {\n var indent = line.search(/\\S/);\n if (indent !== -1) {\n if (indent < minIndent)\n minIndent = indent;\n if (shouldRemove && !testRemove(line, i))\n shouldRemove = false;\n }\n else if (minEmptyLength > line.length) {\n minEmptyLength = line.length;\n }\n });\n if (minIndent == Infinity) {\n minIndent = minEmptyLength;\n ignoreBlankLines = false;\n shouldRemove = false;\n }\n if (insertAtTabStop && minIndent % tabSize != 0)\n minIndent = Math.floor(minIndent / tabSize) * tabSize;\n iter(shouldRemove ? uncomment : comment);\n };\n this.toggleBlockComment = function (state, session, range, cursor) {\n var comment = this.blockComment;\n if (!comment)\n return;\n if (!comment.start && comment[0])\n comment = comment[0];\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n var token = iterator.getCurrentToken();\n var sel = session.selection;\n var initialRange = session.selection.toOrientedRange();\n var startRow, colDiff;\n if (token && /comment/.test(token.type)) {\n var startRange, endRange;\n while (token && /comment/.test(token.type)) {\n var i = token.value.indexOf(comment.start);\n if (i != -1) {\n var row = iterator.getCurrentTokenRow();\n var column = iterator.getCurrentTokenColumn() + i;\n startRange = new Range(row, column, row, column + comment.start.length);\n break;\n }\n token = iterator.stepBackward();\n }\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n var token = iterator.getCurrentToken();\n while (token && /comment/.test(token.type)) {\n var i = token.value.indexOf(comment.end);\n if (i != -1) {\n var row = iterator.getCurrentTokenRow();\n var column = iterator.getCurrentTokenColumn() + i;\n endRange = new Range(row, column, row, column + comment.end.length);\n break;\n }\n token = iterator.stepForward();\n }\n if (endRange)\n session.remove(endRange);\n if (startRange) {\n session.remove(startRange);\n startRow = startRange.start.row;\n colDiff = -comment.start.length;\n }\n }\n else {\n colDiff = comment.start.length;\n startRow = range.start.row;\n session.insert(range.end, comment.end);\n session.insert(range.start, comment.start);\n }\n if (initialRange.start.row == startRow)\n initialRange.start.column += colDiff;\n if (initialRange.end.row == startRow)\n initialRange.end.column += colDiff;\n session.selection.fromOrientedRange(initialRange);\n };\n this.getNextLineIndent = function (state, line, tab) {\n return this.$getIndent(line);\n };\n this.checkOutdent = function (state, line, input) {\n return false;\n };\n this.autoOutdent = function (state, doc, row) {\n };\n this.$getIndent = function (line) {\n return line.match(/^\\s*/)[0];\n };\n this.createWorker = function (session) {\n return null;\n };\n this.createModeDelegates = function (mapping) {\n this.$embeds = [];\n this.$modes = {};\n for (var i in mapping) {\n if (mapping[i]) {\n var Mode = mapping[i];\n var id = Mode.prototype.$id;\n var mode = config.$modes[id];\n if (!mode)\n config.$modes[id] = mode = new Mode();\n if (!config.$modes[i])\n config.$modes[i] = mode;\n this.$embeds.push(i);\n this.$modes[i] = mode;\n }\n }\n var delegations = [\"toggleBlockComment\", \"toggleCommentLines\", \"getNextLineIndent\",\n \"checkOutdent\", \"autoOutdent\", \"transformAction\", \"getCompletions\"];\n for (var i = 0; i < delegations.length; i++) {\n (function (scope) {\n var functionName = delegations[i];\n var defaultHandler = scope[functionName];\n scope[delegations[i]] = function () {\n return this.$delegator(functionName, arguments, defaultHandler);\n };\n }(this));\n }\n };\n this.$delegator = function (method, args, defaultHandler) {\n var state = args[0] || \"start\";\n if (typeof state != \"string\") {\n if (Array.isArray(state[2])) {\n var language = state[2][state[2].length - 1];\n var mode = this.$modes[language];\n if (mode)\n return mode[method].apply(mode, [state[1]].concat([].slice.call(args, 1)));\n }\n state = state[0] || \"start\";\n }\n for (var i = 0; i < this.$embeds.length; i++) {\n if (!this.$modes[this.$embeds[i]])\n continue;\n var split = state.split(this.$embeds[i]);\n if (!split[0] && split[1]) {\n args[0] = split[1];\n var mode = this.$modes[this.$embeds[i]];\n return mode[method].apply(mode, args);\n }\n }\n var ret = defaultHandler.apply(this, args);\n return defaultHandler ? ret : undefined;\n };\n this.transformAction = function (state, action, editor, session, param) {\n if (this.$behaviour) {\n var behaviours = this.$behaviour.getBehaviours();\n for (var key in behaviours) {\n if (behaviours[key][action]) {\n var ret = behaviours[key][action].apply(this, arguments);\n if (ret) {\n return ret;\n }\n }\n }\n }\n };\n this.getKeywords = function (append) {\n if (!this.completionKeywords) {\n var rules = this.$tokenizer.rules;\n var completionKeywords = [];\n for (var rule in rules) {\n var ruleItr = rules[rule];\n for (var r = 0, l = ruleItr.length; r < l; r++) {\n if (typeof ruleItr[r].token === \"string\") {\n if (/keyword|support|storage/.test(ruleItr[r].token))\n completionKeywords.push(ruleItr[r].regex);\n }\n else if (typeof ruleItr[r].token === \"object\") {\n for (var a = 0, aLength = ruleItr[r].token.length; a < aLength; a++) {\n if (/keyword|support|storage/.test(ruleItr[r].token[a])) {\n var rule = ruleItr[r].regex.match(/\\(.+?\\)/g)[a];\n completionKeywords.push(rule.substr(1, rule.length - 2));\n }\n }\n }\n }\n }\n this.completionKeywords = completionKeywords;\n }\n if (!append)\n return this.$keywordList;\n return completionKeywords.concat(this.$keywordList || []);\n };\n this.$createKeywordList = function () {\n if (!this.$highlightRules)\n this.getTokenizer();\n return this.$keywordList = this.$highlightRules.$keywordList || [];\n };\n this.getCompletions = function (state, session, pos, prefix) {\n var keywords = this.$keywordList || this.$createKeywordList();\n return keywords.map(function (word) {\n return {\n name: word,\n value: word,\n score: 0,\n meta: \"keyword\"\n };\n });\n };\n this.$id = \"ace/mode/text\";\n}).call(Mode.prototype);\nexports.Mode = Mode;\n\n});\n\nace.define(\"ace/apply_delta\",[\"require\",\"exports\",\"module\"], function(require, exports, module){\"use strict\";\nfunction throwDeltaError(delta, errorText) {\n console.log(\"Invalid Delta:\", delta);\n throw \"Invalid Delta: \" + errorText;\n}\nfunction positionInDocument(docLines, position) {\n return position.row >= 0 && position.row < docLines.length &&\n position.column >= 0 && position.column <= docLines[position.row].length;\n}\nfunction validateDelta(docLines, delta) {\n if (delta.action != \"insert\" && delta.action != \"remove\")\n throwDeltaError(delta, \"delta.action must be 'insert' or 'remove'\");\n if (!(delta.lines instanceof Array))\n throwDeltaError(delta, \"delta.lines must be an Array\");\n if (!delta.start || !delta.end)\n throwDeltaError(delta, \"delta.start/end must be an present\");\n var start = delta.start;\n if (!positionInDocument(docLines, delta.start))\n throwDeltaError(delta, \"delta.start must be contained in document\");\n var end = delta.end;\n if (delta.action == \"remove\" && !positionInDocument(docLines, end))\n throwDeltaError(delta, \"delta.end must contained in document for 'remove' actions\");\n var numRangeRows = end.row - start.row;\n var numRangeLastLineChars = (end.column - (numRangeRows == 0 ? start.column : 0));\n if (numRangeRows != delta.lines.length - 1 || delta.lines[numRangeRows].length != numRangeLastLineChars)\n throwDeltaError(delta, \"delta.range must match delta lines\");\n}\nexports.applyDelta = function (docLines, delta, doNotValidate) {\n var row = delta.start.row;\n var startColumn = delta.start.column;\n var line = docLines[row] || \"\";\n switch (delta.action) {\n case \"insert\":\n var lines = delta.lines;\n if (lines.length === 1) {\n docLines[row] = line.substring(0, startColumn) + delta.lines[0] + line.substring(startColumn);\n }\n else {\n var args = [row, 1].concat(delta.lines);\n docLines.splice.apply(docLines, args);\n docLines[row] = line.substring(0, startColumn) + docLines[row];\n docLines[row + delta.lines.length - 1] += line.substring(startColumn);\n }\n break;\n case \"remove\":\n var endColumn = delta.end.column;\n var endRow = delta.end.row;\n if (row === endRow) {\n docLines[row] = line.substring(0, startColumn) + line.substring(endColumn);\n }\n else {\n docLines.splice(row, endRow - row + 1, line.substring(0, startColumn) + docLines[endRow].substring(endColumn));\n }\n break;\n }\n};\n\n});\n\nace.define(\"ace/anchor\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/event_emitter\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"./lib/oop\");\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar Anchor = /** @class */ (function () {\n function Anchor(doc, row, column) {\n this.$onChange = this.onChange.bind(this);\n this.attach(doc);\n if (typeof column == \"undefined\")\n this.setPosition(row.row, row.column);\n else\n this.setPosition(row, column);\n }\n Anchor.prototype.getPosition = function () {\n return this.$clipPositionToDocument(this.row, this.column);\n };\n Anchor.prototype.getDocument = function () {\n return this.document;\n };\n Anchor.prototype.onChange = function (delta) {\n if (delta.start.row == delta.end.row && delta.start.row != this.row)\n return;\n if (delta.start.row > this.row)\n return;\n var point = $getTransformedPoint(delta, { row: this.row, column: this.column }, this.$insertRight);\n this.setPosition(point.row, point.column, true);\n };\n Anchor.prototype.setPosition = function (row, column, noClip) {\n var pos;\n if (noClip) {\n pos = {\n row: row,\n column: column\n };\n }\n else {\n pos = this.$clipPositionToDocument(row, column);\n }\n if (this.row == pos.row && this.column == pos.column)\n return;\n var old = {\n row: this.row,\n column: this.column\n };\n this.row = pos.row;\n this.column = pos.column;\n this._signal(\"change\", {\n old: old,\n value: pos\n });\n };\n Anchor.prototype.detach = function () {\n this.document.off(\"change\", this.$onChange);\n };\n Anchor.prototype.attach = function (doc) {\n this.document = doc || this.document;\n this.document.on(\"change\", this.$onChange);\n };\n Anchor.prototype.$clipPositionToDocument = function (row, column) {\n var pos = {};\n if (row >= this.document.getLength()) {\n pos.row = Math.max(0, this.document.getLength() - 1);\n pos.column = this.document.getLine(pos.row).length;\n }\n else if (row < 0) {\n pos.row = 0;\n pos.column = 0;\n }\n else {\n pos.row = row;\n pos.column = Math.min(this.document.getLine(pos.row).length, Math.max(0, column));\n }\n if (column < 0)\n pos.column = 0;\n return pos;\n };\n return Anchor;\n}());\nAnchor.prototype.$insertRight = false;\noop.implement(Anchor.prototype, EventEmitter);\nfunction $pointsInOrder(point1, point2, equalPointsInOrder) {\n var bColIsAfter = equalPointsInOrder ? point1.column <= point2.column : point1.column < point2.column;\n return (point1.row < point2.row) || (point1.row == point2.row && bColIsAfter);\n}\nfunction $getTransformedPoint(delta, point, moveIfEqual) {\n var deltaIsInsert = delta.action == \"insert\";\n var deltaRowShift = (deltaIsInsert ? 1 : -1) * (delta.end.row - delta.start.row);\n var deltaColShift = (deltaIsInsert ? 1 : -1) * (delta.end.column - delta.start.column);\n var deltaStart = delta.start;\n var deltaEnd = deltaIsInsert ? deltaStart : delta.end; // Collapse insert range.\n if ($pointsInOrder(point, deltaStart, moveIfEqual)) {\n return {\n row: point.row,\n column: point.column\n };\n }\n if ($pointsInOrder(deltaEnd, point, !moveIfEqual)) {\n return {\n row: point.row + deltaRowShift,\n column: point.column + (point.row == deltaEnd.row ? deltaColShift : 0)\n };\n }\n return {\n row: deltaStart.row,\n column: deltaStart.column\n };\n}\nexports.Anchor = Anchor;\n\n});\n\nace.define(\"ace/document\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/apply_delta\",\"ace/lib/event_emitter\",\"ace/range\",\"ace/anchor\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"./lib/oop\");\nvar applyDelta = require(\"./apply_delta\").applyDelta;\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar Range = require(\"./range\").Range;\nvar Anchor = require(\"./anchor\").Anchor;\nvar Document = /** @class */ (function () {\n function Document(textOrLines) {\n this.$lines = [\"\"];\n if (textOrLines.length === 0) {\n this.$lines = [\"\"];\n }\n else if (Array.isArray(textOrLines)) {\n this.insertMergedLines({ row: 0, column: 0 }, textOrLines);\n }\n else {\n this.insert({ row: 0, column: 0 }, textOrLines);\n }\n }\n Document.prototype.setValue = function (text) {\n var len = this.getLength() - 1;\n this.remove(new Range(0, 0, len, this.getLine(len).length));\n this.insert({ row: 0, column: 0 }, text || \"\");\n };\n Document.prototype.getValue = function () {\n return this.getAllLines().join(this.getNewLineCharacter());\n };\n Document.prototype.createAnchor = function (row, column) {\n return new Anchor(this, row, column);\n };\n Document.prototype.$detectNewLine = function (text) {\n var match = text.match(/^.*?(\\r\\n|\\r|\\n)/m);\n this.$autoNewLine = match ? match[1] : \"\\n\";\n this._signal(\"changeNewLineMode\");\n };\n Document.prototype.getNewLineCharacter = function () {\n switch (this.$newLineMode) {\n case \"windows\":\n return \"\\r\\n\";\n case \"unix\":\n return \"\\n\";\n default:\n return this.$autoNewLine || \"\\n\";\n }\n };\n Document.prototype.setNewLineMode = function (newLineMode) {\n if (this.$newLineMode === newLineMode)\n return;\n this.$newLineMode = newLineMode;\n this._signal(\"changeNewLineMode\");\n };\n Document.prototype.getNewLineMode = function () {\n return this.$newLineMode;\n };\n Document.prototype.isNewLine = function (text) {\n return (text == \"\\r\\n\" || text == \"\\r\" || text == \"\\n\");\n };\n Document.prototype.getLine = function (row) {\n return this.$lines[row] || \"\";\n };\n Document.prototype.getLines = function (firstRow, lastRow) {\n return this.$lines.slice(firstRow, lastRow + 1);\n };\n Document.prototype.getAllLines = function () {\n return this.getLines(0, this.getLength());\n };\n Document.prototype.getLength = function () {\n return this.$lines.length;\n };\n Document.prototype.getTextRange = function (range) {\n return this.getLinesForRange(range).join(this.getNewLineCharacter());\n };\n Document.prototype.getLinesForRange = function (range) {\n var lines;\n if (range.start.row === range.end.row) {\n lines = [this.getLine(range.start.row).substring(range.start.column, range.end.column)];\n }\n else {\n lines = this.getLines(range.start.row, range.end.row);\n lines[0] = (lines[0] || \"\").substring(range.start.column);\n var l = lines.length - 1;\n if (range.end.row - range.start.row == l)\n lines[l] = lines[l].substring(0, range.end.column);\n }\n return lines;\n };\n Document.prototype.insertLines = function (row, lines) {\n console.warn(\"Use of document.insertLines is deprecated. Use the insertFullLines method instead.\");\n return this.insertFullLines(row, lines);\n };\n Document.prototype.removeLines = function (firstRow, lastRow) {\n console.warn(\"Use of document.removeLines is deprecated. Use the removeFullLines method instead.\");\n return this.removeFullLines(firstRow, lastRow);\n };\n Document.prototype.insertNewLine = function (position) {\n console.warn(\"Use of document.insertNewLine is deprecated. Use insertMergedLines(position, ['', '']) instead.\");\n return this.insertMergedLines(position, [\"\", \"\"]);\n };\n Document.prototype.insert = function (position, text) {\n if (this.getLength() <= 1)\n this.$detectNewLine(text);\n return this.insertMergedLines(position, this.$split(text));\n };\n Document.prototype.insertInLine = function (position, text) {\n var start = this.clippedPos(position.row, position.column);\n var end = this.pos(position.row, position.column + text.length);\n this.applyDelta({\n start: start,\n end: end,\n action: \"insert\",\n lines: [text]\n }, true);\n return this.clonePos(end);\n };\n Document.prototype.clippedPos = function (row, column) {\n var length = this.getLength();\n if (row === undefined) {\n row = length;\n }\n else if (row < 0) {\n row = 0;\n }\n else if (row >= length) {\n row = length - 1;\n column = undefined;\n }\n var line = this.getLine(row);\n if (column == undefined)\n column = line.length;\n column = Math.min(Math.max(column, 0), line.length);\n return { row: row, column: column };\n };\n Document.prototype.clonePos = function (pos) {\n return { row: pos.row, column: pos.column };\n };\n Document.prototype.pos = function (row, column) {\n return { row: row, column: column };\n };\n Document.prototype.$clipPosition = function (position) {\n var length = this.getLength();\n if (position.row >= length) {\n position.row = Math.max(0, length - 1);\n position.column = this.getLine(length - 1).length;\n }\n else {\n position.row = Math.max(0, position.row);\n position.column = Math.min(Math.max(position.column, 0), this.getLine(position.row).length);\n }\n return position;\n };\n Document.prototype.insertFullLines = function (row, lines) {\n row = Math.min(Math.max(row, 0), this.getLength());\n var column = 0;\n if (row < this.getLength()) {\n lines = lines.concat([\"\"]);\n column = 0;\n }\n else {\n lines = [\"\"].concat(lines);\n row--;\n column = this.$lines[row].length;\n }\n this.insertMergedLines({ row: row, column: column }, lines);\n };\n Document.prototype.insertMergedLines = function (position, lines) {\n var start = this.clippedPos(position.row, position.column);\n var end = {\n row: start.row + lines.length - 1,\n column: (lines.length == 1 ? start.column : 0) + lines[lines.length - 1].length\n };\n this.applyDelta({\n start: start,\n end: end,\n action: \"insert\",\n lines: lines\n });\n return this.clonePos(end);\n };\n Document.prototype.remove = function (range) {\n var start = this.clippedPos(range.start.row, range.start.column);\n var end = this.clippedPos(range.end.row, range.end.column);\n this.applyDelta({\n start: start,\n end: end,\n action: \"remove\",\n lines: this.getLinesForRange({ start: start, end: end })\n });\n return this.clonePos(start);\n };\n Document.prototype.removeInLine = function (row, startColumn, endColumn) {\n var start = this.clippedPos(row, startColumn);\n var end = this.clippedPos(row, endColumn);\n this.applyDelta({\n start: start,\n end: end,\n action: \"remove\",\n lines: this.getLinesForRange({ start: start, end: end })\n }, true);\n return this.clonePos(start);\n };\n Document.prototype.removeFullLines = function (firstRow, lastRow) {\n firstRow = Math.min(Math.max(0, firstRow), this.getLength() - 1);\n lastRow = Math.min(Math.max(0, lastRow), this.getLength() - 1);\n var deleteFirstNewLine = lastRow == this.getLength() - 1 && firstRow > 0;\n var deleteLastNewLine = lastRow < this.getLength() - 1;\n var startRow = (deleteFirstNewLine ? firstRow - 1 : firstRow);\n var startCol = (deleteFirstNewLine ? this.getLine(startRow).length : 0);\n var endRow = (deleteLastNewLine ? lastRow + 1 : lastRow);\n var endCol = (deleteLastNewLine ? 0 : this.getLine(endRow).length);\n var range = new Range(startRow, startCol, endRow, endCol);\n var deletedLines = this.$lines.slice(firstRow, lastRow + 1);\n this.applyDelta({\n start: range.start,\n end: range.end,\n action: \"remove\",\n lines: this.getLinesForRange(range)\n });\n return deletedLines;\n };\n Document.prototype.removeNewLine = function (row) {\n if (row < this.getLength() - 1 && row >= 0) {\n this.applyDelta({\n start: this.pos(row, this.getLine(row).length),\n end: this.pos(row + 1, 0),\n action: \"remove\",\n lines: [\"\", \"\"]\n });\n }\n };\n Document.prototype.replace = function (range, text) {\n if (!(range instanceof Range))\n range = Range.fromPoints(range.start, range.end);\n if (text.length === 0 && range.isEmpty())\n return range.start;\n if (text == this.getTextRange(range))\n return range.end;\n this.remove(range);\n var end;\n if (text) {\n end = this.insert(range.start, text);\n }\n else {\n end = range.start;\n }\n return end;\n };\n Document.prototype.applyDeltas = function (deltas) {\n for (var i = 0; i < deltas.length; i++) {\n this.applyDelta(deltas[i]);\n }\n };\n Document.prototype.revertDeltas = function (deltas) {\n for (var i = deltas.length - 1; i >= 0; i--) {\n this.revertDelta(deltas[i]);\n }\n };\n Document.prototype.applyDelta = function (delta, doNotValidate) {\n var isInsert = delta.action == \"insert\";\n if (isInsert ? delta.lines.length <= 1 && !delta.lines[0]\n : !Range.comparePoints(delta.start, delta.end)) {\n return;\n }\n if (isInsert && delta.lines.length > 20000) {\n this.$splitAndapplyLargeDelta(delta, 20000);\n }\n else {\n applyDelta(this.$lines, delta, doNotValidate);\n this._signal(\"change\", delta);\n }\n };\n Document.prototype.$safeApplyDelta = function (delta) {\n var docLength = this.$lines.length;\n if (delta.action == \"remove\" && delta.start.row < docLength && delta.end.row < docLength\n || delta.action == \"insert\" && delta.start.row <= docLength) {\n this.applyDelta(delta);\n }\n };\n Document.prototype.$splitAndapplyLargeDelta = function (delta, MAX) {\n var lines = delta.lines;\n var l = lines.length - MAX + 1;\n var row = delta.start.row;\n var column = delta.start.column;\n for (var from = 0, to = 0; from < l; from = to) {\n to += MAX - 1;\n var chunk = lines.slice(from, to);\n chunk.push(\"\");\n this.applyDelta({\n start: this.pos(row + from, column),\n end: this.pos(row + to, column = 0),\n action: delta.action,\n lines: chunk\n }, true);\n }\n delta.lines = lines.slice(from);\n delta.start.row = row + from;\n delta.start.column = column;\n this.applyDelta(delta, true);\n };\n Document.prototype.revertDelta = function (delta) {\n this.$safeApplyDelta({\n start: this.clonePos(delta.start),\n end: this.clonePos(delta.end),\n action: (delta.action == \"insert\" ? \"remove\" : \"insert\"),\n lines: delta.lines.slice()\n });\n };\n Document.prototype.indexToPosition = function (index, startRow) {\n var lines = this.$lines || this.getAllLines();\n var newlineLength = this.getNewLineCharacter().length;\n for (var i = startRow || 0, l = lines.length; i < l; i++) {\n index -= lines[i].length + newlineLength;\n if (index < 0)\n return { row: i, column: index + lines[i].length + newlineLength };\n }\n return { row: l - 1, column: index + lines[l - 1].length + newlineLength };\n };\n Document.prototype.positionToIndex = function (pos, startRow) {\n var lines = this.$lines || this.getAllLines();\n var newlineLength = this.getNewLineCharacter().length;\n var index = 0;\n var row = Math.min(pos.row, lines.length);\n for (var i = startRow || 0; i < row; ++i)\n index += lines[i].length + newlineLength;\n return index + pos.column;\n };\n Document.prototype.$split = function (text) {\n return text.split(/\\r\\n|\\r|\\n/);\n };\n return Document;\n}());\nDocument.prototype.$autoNewLine = \"\";\nDocument.prototype.$newLineMode = \"auto\";\noop.implement(Document.prototype, EventEmitter);\nexports.Document = Document;\n\n});\n\nace.define(\"ace/background_tokenizer\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/event_emitter\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"./lib/oop\");\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar BackgroundTokenizer = /** @class */ (function () {\n function BackgroundTokenizer(tokenizer, editor) {\n this.running = false;\n this.lines = [];\n this.states = [];\n this.currentLine = 0;\n this.tokenizer = tokenizer;\n var self = this;\n this.$worker = function () {\n if (!self.running) {\n return;\n }\n var workerStart = new Date();\n var currentLine = self.currentLine;\n var endLine = -1;\n var doc = self.doc;\n var startLine = currentLine;\n while (self.lines[currentLine])\n currentLine++;\n var len = doc.getLength();\n var processedLines = 0;\n self.running = false;\n while (currentLine < len) {\n self.$tokenizeRow(currentLine);\n endLine = currentLine;\n do {\n currentLine++;\n } while (self.lines[currentLine]);\n processedLines++;\n if ((processedLines % 5 === 0) && (new Date() - workerStart) > 20) {\n self.running = setTimeout(self.$worker, 20);\n break;\n }\n }\n self.currentLine = currentLine;\n if (endLine == -1)\n endLine = currentLine;\n if (startLine <= endLine)\n self.fireUpdateEvent(startLine, endLine);\n };\n }\n BackgroundTokenizer.prototype.setTokenizer = function (tokenizer) {\n this.tokenizer = tokenizer;\n this.lines = [];\n this.states = [];\n this.start(0);\n };\n BackgroundTokenizer.prototype.setDocument = function (doc) {\n this.doc = doc;\n this.lines = [];\n this.states = [];\n this.stop();\n };\n BackgroundTokenizer.prototype.fireUpdateEvent = function (firstRow, lastRow) {\n var data = {\n first: firstRow,\n last: lastRow\n };\n this._signal(\"update\", { data: data });\n };\n BackgroundTokenizer.prototype.start = function (startRow) {\n this.currentLine = Math.min(startRow || 0, this.currentLine, this.doc.getLength());\n this.lines.splice(this.currentLine, this.lines.length);\n this.states.splice(this.currentLine, this.states.length);\n this.stop();\n this.running = setTimeout(this.$worker, 700);\n };\n BackgroundTokenizer.prototype.scheduleStart = function () {\n if (!this.running)\n this.running = setTimeout(this.$worker, 700);\n };\n BackgroundTokenizer.prototype.$updateOnChange = function (delta) {\n var startRow = delta.start.row;\n var len = delta.end.row - startRow;\n if (len === 0) {\n this.lines[startRow] = null;\n }\n else if (delta.action == \"remove\") {\n this.lines.splice(startRow, len + 1, null);\n this.states.splice(startRow, len + 1, null);\n }\n else {\n var args = Array(len + 1);\n args.unshift(startRow, 1);\n this.lines.splice.apply(this.lines, args);\n this.states.splice.apply(this.states, args);\n }\n this.currentLine = Math.min(startRow, this.currentLine, this.doc.getLength());\n this.stop();\n };\n BackgroundTokenizer.prototype.stop = function () {\n if (this.running)\n clearTimeout(this.running);\n this.running = false;\n };\n BackgroundTokenizer.prototype.getTokens = function (row) {\n return this.lines[row] || this.$tokenizeRow(row);\n };\n BackgroundTokenizer.prototype.getState = function (row) {\n if (this.currentLine == row)\n this.$tokenizeRow(row);\n return this.states[row] || \"start\";\n };\n BackgroundTokenizer.prototype.$tokenizeRow = function (row) {\n var line = this.doc.getLine(row);\n var state = this.states[row - 1];\n var data = this.tokenizer.getLineTokens(line, state, row);\n if (this.states[row] + \"\" !== data.state + \"\") {\n this.states[row] = data.state;\n this.lines[row + 1] = null;\n if (this.currentLine > row + 1)\n this.currentLine = row + 1;\n }\n else if (this.currentLine == row) {\n this.currentLine = row + 1;\n }\n return this.lines[row] = data.tokens;\n };\n BackgroundTokenizer.prototype.cleanup = function () {\n this.running = false;\n this.lines = [];\n this.states = [];\n this.currentLine = 0;\n this.removeAllListeners();\n };\n return BackgroundTokenizer;\n}());\noop.implement(BackgroundTokenizer.prototype, EventEmitter);\nexports.BackgroundTokenizer = BackgroundTokenizer;\n\n});\n\nace.define(\"ace/search_highlight\",[\"require\",\"exports\",\"module\",\"ace/lib/lang\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar lang = require(\"./lib/lang\");\nvar Range = require(\"./range\").Range;\nvar SearchHighlight = /** @class */ (function () {\n function SearchHighlight(regExp, clazz, type) {\n if (type === void 0) { type = \"text\"; }\n this.setRegexp(regExp);\n this.clazz = clazz;\n this.type = type;\n }\n SearchHighlight.prototype.setRegexp = function (regExp) {\n if (this.regExp + \"\" == regExp + \"\")\n return;\n this.regExp = regExp;\n this.cache = [];\n };\n SearchHighlight.prototype.update = function (html, markerLayer, session, config) {\n if (!this.regExp)\n return;\n var start = config.firstRow, end = config.lastRow;\n var renderedMarkerRanges = {};\n for (var i = start; i <= end; i++) {\n var ranges = this.cache[i];\n if (ranges == null) {\n ranges = lang.getMatchOffsets(session.getLine(i), this.regExp);\n if (ranges.length > this.MAX_RANGES)\n ranges = ranges.slice(0, this.MAX_RANGES);\n ranges = ranges.map(function (match) {\n return new Range(i, match.offset, i, match.offset + match.length);\n });\n this.cache[i] = ranges.length ? ranges : \"\";\n }\n for (var j = ranges.length; j--;) {\n var rangeToAddMarkerTo = ranges[j].toScreenRange(session);\n var rangeAsString = rangeToAddMarkerTo.toString();\n if (renderedMarkerRanges[rangeAsString])\n continue;\n renderedMarkerRanges[rangeAsString] = true;\n markerLayer.drawSingleLineMarker(html, rangeToAddMarkerTo, this.clazz, config);\n }\n }\n };\n return SearchHighlight;\n}());\nSearchHighlight.prototype.MAX_RANGES = 500;\nexports.SearchHighlight = SearchHighlight;\n\n});\n\nace.define(\"ace/undomanager\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar UndoManager = /** @class */ (function () {\n function UndoManager() {\n this.$maxRev = 0;\n this.$fromUndo = false;\n this.$undoDepth = Infinity;\n this.reset();\n }\n UndoManager.prototype.addSession = function (session) {\n this.$session = session;\n };\n UndoManager.prototype.add = function (delta, allowMerge, session) {\n if (this.$fromUndo)\n return;\n if (delta == this.$lastDelta)\n return;\n if (!this.$keepRedoStack)\n this.$redoStack.length = 0;\n if (allowMerge === false || !this.lastDeltas) {\n this.lastDeltas = [];\n var undoStackLength = this.$undoStack.length;\n if (undoStackLength > this.$undoDepth - 1) {\n this.$undoStack.splice(0, undoStackLength - this.$undoDepth + 1);\n }\n this.$undoStack.push(this.lastDeltas);\n delta.id = this.$rev = ++this.$maxRev;\n }\n if (delta.action == \"remove\" || delta.action == \"insert\")\n this.$lastDelta = delta;\n this.lastDeltas.push(delta);\n };\n UndoManager.prototype.addSelection = function (selection, rev) {\n this.selections.push({\n value: selection,\n rev: rev || this.$rev\n });\n };\n UndoManager.prototype.startNewGroup = function () {\n this.lastDeltas = null;\n return this.$rev;\n };\n UndoManager.prototype.markIgnored = function (from, to) {\n if (to == null)\n to = this.$rev + 1;\n var stack = this.$undoStack;\n for (var i = stack.length; i--;) {\n var delta = stack[i][0];\n if (delta.id <= from)\n break;\n if (delta.id < to)\n delta.ignore = true;\n }\n this.lastDeltas = null;\n };\n UndoManager.prototype.getSelection = function (rev, after) {\n var stack = this.selections;\n for (var i = stack.length; i--;) {\n var selection = stack[i];\n if (selection.rev < rev) {\n if (after)\n selection = stack[i + 1];\n return selection;\n }\n }\n };\n UndoManager.prototype.getRevision = function () {\n return this.$rev;\n };\n UndoManager.prototype.getDeltas = function (from, to) {\n if (to == null)\n to = this.$rev + 1;\n var stack = this.$undoStack;\n var end = null, start = 0;\n for (var i = stack.length; i--;) {\n var delta = stack[i][0];\n if (delta.id < to && !end)\n end = i + 1;\n if (delta.id <= from) {\n start = i + 1;\n break;\n }\n }\n return stack.slice(start, end);\n };\n UndoManager.prototype.getChangedRanges = function (from, to) {\n if (to == null)\n to = this.$rev + 1;\n };\n UndoManager.prototype.getChangedLines = function (from, to) {\n if (to == null)\n to = this.$rev + 1;\n };\n UndoManager.prototype.undo = function (session, dontSelect) {\n this.lastDeltas = null;\n var stack = this.$undoStack;\n if (!rearrangeUndoStack(stack, stack.length))\n return;\n if (!session)\n session = this.$session;\n if (this.$redoStackBaseRev !== this.$rev && this.$redoStack.length)\n this.$redoStack = [];\n this.$fromUndo = true;\n var deltaSet = stack.pop();\n var undoSelectionRange = null;\n if (deltaSet) {\n undoSelectionRange = session.undoChanges(deltaSet, dontSelect);\n this.$redoStack.push(deltaSet);\n this.$syncRev();\n }\n this.$fromUndo = false;\n return undoSelectionRange;\n };\n UndoManager.prototype.redo = function (session, dontSelect) {\n this.lastDeltas = null;\n if (!session)\n session = this.$session;\n this.$fromUndo = true;\n if (this.$redoStackBaseRev != this.$rev) {\n var diff = this.getDeltas(this.$redoStackBaseRev, this.$rev + 1);\n rebaseRedoStack(this.$redoStack, diff);\n this.$redoStackBaseRev = this.$rev;\n this.$redoStack.forEach(function (x) {\n x[0].id = ++this.$maxRev;\n }, this);\n }\n var deltaSet = this.$redoStack.pop();\n var redoSelectionRange = null;\n if (deltaSet) {\n redoSelectionRange = session.redoChanges(deltaSet, dontSelect);\n this.$undoStack.push(deltaSet);\n this.$syncRev();\n }\n this.$fromUndo = false;\n return redoSelectionRange;\n };\n UndoManager.prototype.$syncRev = function () {\n var stack = this.$undoStack;\n var nextDelta = stack[stack.length - 1];\n var id = nextDelta && nextDelta[0].id || 0;\n this.$redoStackBaseRev = id;\n this.$rev = id;\n };\n UndoManager.prototype.reset = function () {\n this.lastDeltas = null;\n this.$lastDelta = null;\n this.$undoStack = [];\n this.$redoStack = [];\n this.$rev = 0;\n this.mark = 0;\n this.$redoStackBaseRev = this.$rev;\n this.selections = [];\n };\n UndoManager.prototype.canUndo = function () {\n return this.$undoStack.length > 0;\n };\n UndoManager.prototype.canRedo = function () {\n return this.$redoStack.length > 0;\n };\n UndoManager.prototype.bookmark = function (rev) {\n if (rev == undefined)\n rev = this.$rev;\n this.mark = rev;\n };\n UndoManager.prototype.isAtBookmark = function () {\n return this.$rev === this.mark;\n };\n UndoManager.prototype.toJSON = function () {\n return {\n $redoStack: this.$redoStack,\n $undoStack: this.$undoStack\n };\n };\n UndoManager.prototype.fromJSON = function (json) {\n this.reset();\n this.$undoStack = json.$undoStack;\n this.$redoStack = json.$redoStack;\n };\n UndoManager.prototype.$prettyPrint = function (delta) {\n if (delta)\n return stringifyDelta(delta);\n return stringifyDelta(this.$undoStack) + \"\\n---\\n\" + stringifyDelta(this.$redoStack);\n };\n return UndoManager;\n}());\nUndoManager.prototype.hasUndo = UndoManager.prototype.canUndo;\nUndoManager.prototype.hasRedo = UndoManager.prototype.canRedo;\nUndoManager.prototype.isClean = UndoManager.prototype.isAtBookmark;\nUndoManager.prototype.markClean = UndoManager.prototype.bookmark;\nfunction rearrangeUndoStack(stack, pos) {\n for (var i = pos; i--;) {\n var deltaSet = stack[i];\n if (deltaSet && !deltaSet[0].ignore) {\n while (i < pos - 1) {\n var swapped = swapGroups(stack[i], stack[i + 1]);\n stack[i] = swapped[0];\n stack[i + 1] = swapped[1];\n i++;\n }\n return true;\n }\n }\n}\nvar Range = require(\"./range\").Range;\nvar cmp = Range.comparePoints;\nvar comparePoints = Range.comparePoints;\nfunction $updateMarkers(delta) {\n var isInsert = delta.action == \"insert\";\n var start = delta.start;\n var end = delta.end;\n var rowShift = (end.row - start.row) * (isInsert ? 1 : -1);\n var colShift = (end.column - start.column) * (isInsert ? 1 : -1);\n if (isInsert)\n end = start;\n for (var i in this.marks) {\n var point = this.marks[i];\n var cmp = comparePoints(point, start);\n if (cmp < 0) {\n continue; // delta starts after the range\n }\n if (cmp === 0) {\n if (isInsert) {\n if (point.bias == 1) {\n cmp = 1;\n }\n else {\n point.bias == -1;\n continue;\n }\n }\n }\n var cmp2 = isInsert ? cmp : comparePoints(point, end);\n if (cmp2 > 0) {\n point.row += rowShift;\n point.column += point.row == end.row ? colShift : 0;\n continue;\n }\n if (!isInsert && cmp2 <= 0) {\n point.row = start.row;\n point.column = start.column;\n if (cmp2 === 0)\n point.bias = 1;\n }\n }\n}\nfunction clonePos(pos) {\n return { row: pos.row, column: pos.column };\n}\nfunction cloneDelta(d) {\n return {\n start: clonePos(d.start),\n end: clonePos(d.end),\n action: d.action,\n lines: d.lines.slice()\n };\n}\nfunction stringifyDelta(d) {\n d = d || this;\n if (Array.isArray(d)) {\n return d.map(stringifyDelta).join(\"\\n\");\n }\n var type = \"\";\n if (d.action) {\n type = d.action == \"insert\" ? \"+\" : \"-\";\n type += \"[\" + d.lines + \"]\";\n }\n else if (d.value) {\n if (Array.isArray(d.value)) {\n type = d.value.map(stringifyRange).join(\"\\n\");\n }\n else {\n type = stringifyRange(d.value);\n }\n }\n if (d.start) {\n type += stringifyRange(d);\n }\n if (d.id || d.rev) {\n type += \"\\t(\" + (d.id || d.rev) + \")\";\n }\n return type;\n}\nfunction stringifyRange(r) {\n return r.start.row + \":\" + r.start.column\n + \"=>\" + r.end.row + \":\" + r.end.column;\n}\nfunction swap(d1, d2) {\n var i1 = d1.action == \"insert\";\n var i2 = d2.action == \"insert\";\n if (i1 && i2) {\n if (cmp(d2.start, d1.end) >= 0) {\n shift(d2, d1, -1);\n }\n else if (cmp(d2.start, d1.start) <= 0) {\n shift(d1, d2, +1);\n }\n else {\n return null;\n }\n }\n else if (i1 && !i2) {\n if (cmp(d2.start, d1.end) >= 0) {\n shift(d2, d1, -1);\n }\n else if (cmp(d2.end, d1.start) <= 0) {\n shift(d1, d2, -1);\n }\n else {\n return null;\n }\n }\n else if (!i1 && i2) {\n if (cmp(d2.start, d1.start) >= 0) {\n shift(d2, d1, +1);\n }\n else if (cmp(d2.start, d1.start) <= 0) {\n shift(d1, d2, +1);\n }\n else {\n return null;\n }\n }\n else if (!i1 && !i2) {\n if (cmp(d2.start, d1.start) >= 0) {\n shift(d2, d1, +1);\n }\n else if (cmp(d2.end, d1.start) <= 0) {\n shift(d1, d2, -1);\n }\n else {\n return null;\n }\n }\n return [d2, d1];\n}\nfunction swapGroups(ds1, ds2) {\n for (var i = ds1.length; i--;) {\n for (var j = 0; j < ds2.length; j++) {\n if (!swap(ds1[i], ds2[j])) {\n while (i < ds1.length) {\n while (j--) {\n swap(ds2[j], ds1[i]);\n }\n j = ds2.length;\n i++;\n }\n return [ds1, ds2];\n }\n }\n }\n ds1.selectionBefore = ds2.selectionBefore =\n ds1.selectionAfter = ds2.selectionAfter = null;\n return [ds2, ds1];\n}\nfunction xform(d1, c1) {\n var i1 = d1.action == \"insert\";\n var i2 = c1.action == \"insert\";\n if (i1 && i2) {\n if (cmp(d1.start, c1.start) < 0) {\n shift(c1, d1, 1);\n }\n else {\n shift(d1, c1, 1);\n }\n }\n else if (i1 && !i2) {\n if (cmp(d1.start, c1.end) >= 0) {\n shift(d1, c1, -1);\n }\n else if (cmp(d1.start, c1.start) <= 0) {\n shift(c1, d1, +1);\n }\n else {\n shift(d1, Range.fromPoints(c1.start, d1.start), -1);\n shift(c1, d1, +1);\n }\n }\n else if (!i1 && i2) {\n if (cmp(c1.start, d1.end) >= 0) {\n shift(c1, d1, -1);\n }\n else if (cmp(c1.start, d1.start) <= 0) {\n shift(d1, c1, +1);\n }\n else {\n shift(c1, Range.fromPoints(d1.start, c1.start), -1);\n shift(d1, c1, +1);\n }\n }\n else if (!i1 && !i2) {\n if (cmp(c1.start, d1.end) >= 0) {\n shift(c1, d1, -1);\n }\n else if (cmp(c1.end, d1.start) <= 0) {\n shift(d1, c1, -1);\n }\n else {\n var before, after;\n if (cmp(d1.start, c1.start) < 0) {\n before = d1;\n d1 = splitDelta(d1, c1.start);\n }\n if (cmp(d1.end, c1.end) > 0) {\n after = splitDelta(d1, c1.end);\n }\n shiftPos(c1.end, d1.start, d1.end, -1);\n if (after && !before) {\n d1.lines = after.lines;\n d1.start = after.start;\n d1.end = after.end;\n after = d1;\n }\n return [c1, before, after].filter(Boolean);\n }\n }\n return [c1, d1];\n}\nfunction shift(d1, d2, dir) {\n shiftPos(d1.start, d2.start, d2.end, dir);\n shiftPos(d1.end, d2.start, d2.end, dir);\n}\nfunction shiftPos(pos, start, end, dir) {\n if (pos.row == (dir == 1 ? start : end).row) {\n pos.column += dir * (end.column - start.column);\n }\n pos.row += dir * (end.row - start.row);\n}\nfunction splitDelta(c, pos) {\n var lines = c.lines;\n var end = c.end;\n c.end = clonePos(pos);\n var rowsBefore = c.end.row - c.start.row;\n var otherLines = lines.splice(rowsBefore, lines.length);\n var col = rowsBefore ? pos.column : pos.column - c.start.column;\n lines.push(otherLines[0].substring(0, col));\n otherLines[0] = otherLines[0].substr(col);\n var rest = {\n start: clonePos(pos),\n end: end,\n lines: otherLines,\n action: c.action\n };\n return rest;\n}\nfunction moveDeltasByOne(redoStack, d) {\n d = cloneDelta(d);\n for (var j = redoStack.length; j--;) {\n var deltaSet = redoStack[j];\n for (var i = 0; i < deltaSet.length; i++) {\n var x = deltaSet[i];\n var xformed = xform(x, d);\n d = xformed[0];\n if (xformed.length != 2) {\n if (xformed[2]) {\n deltaSet.splice(i + 1, 1, xformed[1], xformed[2]);\n i++;\n }\n else if (!xformed[1]) {\n deltaSet.splice(i, 1);\n i--;\n }\n }\n }\n if (!deltaSet.length) {\n redoStack.splice(j, 1);\n }\n }\n return redoStack;\n}\nfunction rebaseRedoStack(redoStack, deltaSets) {\n for (var i = 0; i < deltaSets.length; i++) {\n var deltas = deltaSets[i];\n for (var j = 0; j < deltas.length; j++) {\n moveDeltasByOne(redoStack, deltas[j]);\n }\n }\n}\nexports.UndoManager = UndoManager;\n\n});\n\nace.define(\"ace/edit_session/fold_line\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar Range = require(\"../range\").Range;\nvar FoldLine = /** @class */ (function () {\n function FoldLine(foldData, folds) {\n this.foldData = foldData;\n if (Array.isArray(folds)) {\n this.folds = folds;\n }\n else {\n folds = this.folds = [folds];\n }\n var last = folds[folds.length - 1];\n this.range = new Range(folds[0].start.row, folds[0].start.column, last.end.row, last.end.column);\n this.start = this.range.start;\n this.end = this.range.end;\n this.folds.forEach(function (fold) {\n fold.setFoldLine(this);\n }, this);\n }\n FoldLine.prototype.shiftRow = function (shift) {\n this.start.row += shift;\n this.end.row += shift;\n this.folds.forEach(function (fold) {\n fold.start.row += shift;\n fold.end.row += shift;\n });\n };\n FoldLine.prototype.addFold = function (fold) {\n if (fold.sameRow) {\n if (fold.start.row < this.startRow || fold.endRow > this.endRow) {\n throw new Error(\"Can't add a fold to this FoldLine as it has no connection\");\n }\n this.folds.push(fold);\n this.folds.sort(function (a, b) {\n return -a.range.compareEnd(b.start.row, b.start.column);\n });\n if (this.range.compareEnd(fold.start.row, fold.start.column) > 0) {\n this.end.row = fold.end.row;\n this.end.column = fold.end.column;\n }\n else if (this.range.compareStart(fold.end.row, fold.end.column) < 0) {\n this.start.row = fold.start.row;\n this.start.column = fold.start.column;\n }\n }\n else if (fold.start.row == this.end.row) {\n this.folds.push(fold);\n this.end.row = fold.end.row;\n this.end.column = fold.end.column;\n }\n else if (fold.end.row == this.start.row) {\n this.folds.unshift(fold);\n this.start.row = fold.start.row;\n this.start.column = fold.start.column;\n }\n else {\n throw new Error(\"Trying to add fold to FoldRow that doesn't have a matching row\");\n }\n fold.foldLine = this;\n };\n FoldLine.prototype.containsRow = function (row) {\n return row >= this.start.row && row <= this.end.row;\n };\n FoldLine.prototype.walk = function (callback, endRow, endColumn) {\n var lastEnd = 0, folds = this.folds, fold, cmp, stop, isNewRow = true;\n if (endRow == null) {\n endRow = this.end.row;\n endColumn = this.end.column;\n }\n for (var i = 0; i < folds.length; i++) {\n fold = folds[i];\n cmp = fold.range.compareStart(endRow, endColumn);\n if (cmp == -1) {\n callback(null, endRow, endColumn, lastEnd, isNewRow);\n return;\n }\n stop = callback(null, fold.start.row, fold.start.column, lastEnd, isNewRow);\n stop = !stop && callback(fold.placeholder, fold.start.row, fold.start.column, lastEnd);\n if (stop || cmp === 0) {\n return;\n }\n isNewRow = !fold.sameRow;\n lastEnd = fold.end.column;\n }\n callback(null, endRow, endColumn, lastEnd, isNewRow);\n };\n FoldLine.prototype.getNextFoldTo = function (row, column) {\n var fold, cmp;\n for (var i = 0; i < this.folds.length; i++) {\n fold = this.folds[i];\n cmp = fold.range.compareEnd(row, column);\n if (cmp == -1) {\n return {\n fold: fold,\n kind: \"after\"\n };\n }\n else if (cmp === 0) {\n return {\n fold: fold,\n kind: \"inside\"\n };\n }\n }\n return null;\n };\n FoldLine.prototype.addRemoveChars = function (row, column, len) {\n var ret = this.getNextFoldTo(row, column), fold, folds;\n if (ret) {\n fold = ret.fold;\n if (ret.kind == \"inside\"\n && fold.start.column != column\n && fold.start.row != row) {\n window.console && window.console.log(row, column, fold);\n }\n else if (fold.start.row == row) {\n folds = this.folds;\n var i = folds.indexOf(fold);\n if (i === 0) {\n this.start.column += len;\n }\n for (i; i < folds.length; i++) {\n fold = folds[i];\n fold.start.column += len;\n if (!fold.sameRow) {\n return;\n }\n fold.end.column += len;\n }\n this.end.column += len;\n }\n }\n };\n FoldLine.prototype.split = function (row, column) {\n var pos = this.getNextFoldTo(row, column);\n if (!pos || pos.kind == \"inside\")\n return null;\n var fold = pos.fold;\n var folds = this.folds;\n var foldData = this.foldData;\n var i = folds.indexOf(fold);\n var foldBefore = folds[i - 1];\n this.end.row = foldBefore.end.row;\n this.end.column = foldBefore.end.column;\n folds = folds.splice(i, folds.length - i);\n var newFoldLine = new FoldLine(foldData, folds);\n foldData.splice(foldData.indexOf(this) + 1, 0, newFoldLine);\n return newFoldLine;\n };\n FoldLine.prototype.merge = function (foldLineNext) {\n var folds = foldLineNext.folds;\n for (var i = 0; i < folds.length; i++) {\n this.addFold(folds[i]);\n }\n var foldData = this.foldData;\n foldData.splice(foldData.indexOf(foldLineNext), 1);\n };\n FoldLine.prototype.toString = function () {\n var ret = [this.range.toString() + \": [\"];\n this.folds.forEach(function (fold) {\n ret.push(\" \" + fold.toString());\n });\n ret.push(\"]\");\n return ret.join(\"\\n\");\n };\n FoldLine.prototype.idxToPosition = function (idx) {\n var lastFoldEndColumn = 0;\n for (var i = 0; i < this.folds.length; i++) {\n var fold = this.folds[i];\n idx -= fold.start.column - lastFoldEndColumn;\n if (idx < 0) {\n return {\n row: fold.start.row,\n column: fold.start.column + idx\n };\n }\n idx -= fold.placeholder.length;\n if (idx < 0) {\n return fold.start;\n }\n lastFoldEndColumn = fold.end.column;\n }\n return {\n row: this.end.row,\n column: this.end.column + idx\n };\n };\n return FoldLine;\n}());\nexports.FoldLine = FoldLine;\n\n});\n\nace.define(\"ace/range_list\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar Range = require(\"./range\").Range;\nvar comparePoints = Range.comparePoints;\nvar RangeList = /** @class */ (function () {\n function RangeList() {\n this.ranges = [];\n this.$bias = 1;\n }\n RangeList.prototype.pointIndex = function (pos, excludeEdges, startIndex) {\n var list = this.ranges;\n for (var i = startIndex || 0; i < list.length; i++) {\n var range = list[i];\n var cmpEnd = comparePoints(pos, range.end);\n if (cmpEnd > 0)\n continue;\n var cmpStart = comparePoints(pos, range.start);\n if (cmpEnd === 0)\n return excludeEdges && cmpStart !== 0 ? -i - 2 : i;\n if (cmpStart > 0 || (cmpStart === 0 && !excludeEdges))\n return i;\n return -i - 1;\n }\n return -i - 1;\n };\n RangeList.prototype.add = function (range) {\n var excludeEdges = !range.isEmpty();\n var startIndex = this.pointIndex(range.start, excludeEdges);\n if (startIndex < 0)\n startIndex = -startIndex - 1;\n var endIndex = this.pointIndex(range.end, excludeEdges, startIndex);\n if (endIndex < 0)\n endIndex = -endIndex - 1;\n else\n endIndex++;\n return this.ranges.splice(startIndex, endIndex - startIndex, range);\n };\n RangeList.prototype.addList = function (list) {\n var removed = [];\n for (var i = list.length; i--;) {\n removed.push.apply(removed, this.add(list[i]));\n }\n return removed;\n };\n RangeList.prototype.substractPoint = function (pos) {\n var i = this.pointIndex(pos);\n if (i >= 0)\n return this.ranges.splice(i, 1);\n };\n RangeList.prototype.merge = function () {\n var removed = [];\n var list = this.ranges;\n list = list.sort(function (a, b) {\n return comparePoints(a.start, b.start);\n });\n var next = list[0], range;\n for (var i = 1; i < list.length; i++) {\n range = next;\n next = list[i];\n var cmp = comparePoints(range.end, next.start);\n if (cmp < 0)\n continue;\n if (cmp == 0 && !range.isEmpty() && !next.isEmpty())\n continue;\n if (comparePoints(range.end, next.end) < 0) {\n range.end.row = next.end.row;\n range.end.column = next.end.column;\n }\n list.splice(i, 1);\n removed.push(next);\n next = range;\n i--;\n }\n this.ranges = list;\n return removed;\n };\n RangeList.prototype.contains = function (row, column) {\n return this.pointIndex({ row: row, column: column }) >= 0;\n };\n RangeList.prototype.containsPoint = function (pos) {\n return this.pointIndex(pos) >= 0;\n };\n RangeList.prototype.rangeAtPoint = function (pos) {\n var i = this.pointIndex(pos);\n if (i >= 0)\n return this.ranges[i];\n };\n RangeList.prototype.clipRows = function (startRow, endRow) {\n var list = this.ranges;\n if (list[0].start.row > endRow || list[list.length - 1].start.row < startRow)\n return [];\n var startIndex = this.pointIndex({ row: startRow, column: 0 });\n if (startIndex < 0)\n startIndex = -startIndex - 1;\n var endIndex = this.pointIndex({ row: endRow, column: 0 }, startIndex);\n if (endIndex < 0)\n endIndex = -endIndex - 1;\n var clipped = [];\n for (var i = startIndex; i < endIndex; i++) {\n clipped.push(list[i]);\n }\n return clipped;\n };\n RangeList.prototype.removeAll = function () {\n return this.ranges.splice(0, this.ranges.length);\n };\n RangeList.prototype.attach = function (session) {\n if (this.session)\n this.detach();\n this.session = session;\n this.onChange = this.$onChange.bind(this);\n this.session.on('change', this.onChange);\n };\n RangeList.prototype.detach = function () {\n if (!this.session)\n return;\n this.session.removeListener('change', this.onChange);\n this.session = null;\n };\n RangeList.prototype.$onChange = function (delta) {\n var start = delta.start;\n var end = delta.end;\n var startRow = start.row;\n var endRow = end.row;\n var ranges = this.ranges;\n for (var i = 0, n = ranges.length; i < n; i++) {\n var r = ranges[i];\n if (r.end.row >= startRow)\n break;\n }\n if (delta.action == \"insert\") {\n var lineDif = endRow - startRow;\n var colDiff = -start.column + end.column;\n for (; i < n; i++) {\n var r = ranges[i];\n if (r.start.row > startRow)\n break;\n if (r.start.row == startRow && r.start.column >= start.column) {\n if (r.start.column == start.column && this.$bias <= 0) {\n }\n else {\n r.start.column += colDiff;\n r.start.row += lineDif;\n }\n }\n if (r.end.row == startRow && r.end.column >= start.column) {\n if (r.end.column == start.column && this.$bias < 0) {\n continue;\n }\n if (r.end.column == start.column && colDiff > 0 && i < n - 1) {\n if (r.end.column > r.start.column && r.end.column == ranges[i + 1].start.column)\n r.end.column -= colDiff;\n }\n r.end.column += colDiff;\n r.end.row += lineDif;\n }\n }\n }\n else {\n var lineDif = startRow - endRow;\n var colDiff = start.column - end.column;\n for (; i < n; i++) {\n var r = ranges[i];\n if (r.start.row > endRow)\n break;\n if (r.end.row < endRow\n && (startRow < r.end.row\n || startRow == r.end.row && start.column < r.end.column)) {\n r.end.row = startRow;\n r.end.column = start.column;\n }\n else if (r.end.row == endRow) {\n if (r.end.column <= end.column) {\n if (lineDif || r.end.column > start.column) {\n r.end.column = start.column;\n r.end.row = start.row;\n }\n }\n else {\n r.end.column += colDiff;\n r.end.row += lineDif;\n }\n }\n else if (r.end.row > endRow) {\n r.end.row += lineDif;\n }\n if (r.start.row < endRow\n && (startRow < r.start.row\n || startRow == r.start.row && start.column < r.start.column)) {\n r.start.row = startRow;\n r.start.column = start.column;\n }\n else if (r.start.row == endRow) {\n if (r.start.column <= end.column) {\n if (lineDif || r.start.column > start.column) {\n r.start.column = start.column;\n r.start.row = start.row;\n }\n }\n else {\n r.start.column += colDiff;\n r.start.row += lineDif;\n }\n }\n else if (r.start.row > endRow) {\n r.start.row += lineDif;\n }\n }\n }\n if (lineDif != 0 && i < n) {\n for (; i < n; i++) {\n var r = ranges[i];\n r.start.row += lineDif;\n r.end.row += lineDif;\n }\n }\n };\n return RangeList;\n}());\nRangeList.prototype.comparePoints = comparePoints;\nexports.RangeList = RangeList;\n\n});\n\nace.define(\"ace/edit_session/fold\",[\"require\",\"exports\",\"module\",\"ace/range_list\"], function(require, exports, module){\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar RangeList = require(\"../range_list\").RangeList;\nvar Fold = /** @class */ (function (_super) {\n __extends(Fold, _super);\n function Fold(range, placeholder) {\n var _this = _super.call(this) || this;\n _this.foldLine = null;\n _this.placeholder = placeholder;\n _this.range = range;\n _this.start = range.start;\n _this.end = range.end;\n _this.sameRow = range.start.row == range.end.row;\n _this.subFolds = _this.ranges = [];\n return _this;\n }\n Fold.prototype.toString = function () {\n return '\"' + this.placeholder + '\" ' + this.range.toString();\n };\n Fold.prototype.setFoldLine = function (foldLine) {\n this.foldLine = foldLine;\n this.subFolds.forEach(function (fold) {\n fold.setFoldLine(foldLine);\n });\n };\n Fold.prototype.clone = function () {\n var range = this.range.clone();\n var fold = new Fold(range, this.placeholder);\n this.subFolds.forEach(function (subFold) {\n fold.subFolds.push(subFold.clone());\n });\n fold.collapseChildren = this.collapseChildren;\n return fold;\n };\n Fold.prototype.addSubFold = function (fold) {\n if (this.range.isEqual(fold))\n return;\n consumeRange(fold, this.start);\n var row = fold.start.row, column = fold.start.column;\n for (var i = 0, cmp = -1; i < this.subFolds.length; i++) {\n cmp = this.subFolds[i].range.compare(row, column);\n if (cmp != 1)\n break;\n }\n var afterStart = this.subFolds[i];\n var firstConsumed = 0;\n if (cmp == 0) {\n if (afterStart.range.containsRange(fold))\n return afterStart.addSubFold(fold);\n else\n firstConsumed = 1;\n }\n var row = fold.range.end.row, column = fold.range.end.column;\n for (var j = i, cmp = -1; j < this.subFolds.length; j++) {\n cmp = this.subFolds[j].range.compare(row, column);\n if (cmp != 1)\n break;\n }\n if (cmp == 0)\n j++;\n var consumedFolds = this.subFolds.splice(i, j - i, fold);\n var last = cmp == 0 ? consumedFolds.length - 1 : consumedFolds.length;\n for (var k = firstConsumed; k < last; k++) {\n fold.addSubFold(consumedFolds[k]);\n }\n fold.setFoldLine(this.foldLine);\n return fold;\n };\n Fold.prototype.restoreRange = function (range) {\n return restoreRange(range, this.start);\n };\n return Fold;\n}(RangeList));\nfunction consumePoint(point, anchor) {\n point.row -= anchor.row;\n if (point.row == 0)\n point.column -= anchor.column;\n}\nfunction consumeRange(range, anchor) {\n consumePoint(range.start, anchor);\n consumePoint(range.end, anchor);\n}\nfunction restorePoint(point, anchor) {\n if (point.row == 0)\n point.column += anchor.column;\n point.row += anchor.row;\n}\nfunction restoreRange(range, anchor) {\n restorePoint(range.start, anchor);\n restorePoint(range.end, anchor);\n}\nexports.Fold = Fold;\n\n});\n\nace.define(\"ace/edit_session/folding\",[\"require\",\"exports\",\"module\",\"ace/range\",\"ace/edit_session/fold_line\",\"ace/edit_session/fold\",\"ace/token_iterator\",\"ace/mouse/mouse_event\"], function(require, exports, module){\"use strict\";\nvar Range = require(\"../range\").Range;\nvar FoldLine = require(\"./fold_line\").FoldLine;\nvar Fold = require(\"./fold\").Fold;\nvar TokenIterator = require(\"../token_iterator\").TokenIterator;\nvar MouseEvent = require(\"../mouse/mouse_event\").MouseEvent;\nfunction Folding() {\n this.getFoldAt = function (row, column, side) {\n var foldLine = this.getFoldLine(row);\n if (!foldLine)\n return null;\n var folds = foldLine.folds;\n for (var i = 0; i < folds.length; i++) {\n var range = folds[i].range;\n if (range.contains(row, column)) {\n if (side == 1 && range.isEnd(row, column) && !range.isEmpty()) {\n continue;\n }\n else if (side == -1 && range.isStart(row, column) && !range.isEmpty()) {\n continue;\n }\n return folds[i];\n }\n }\n };\n this.getFoldsInRange = function (range) {\n var start = range.start;\n var end = range.end;\n var foldLines = this.$foldData;\n var foundFolds = [];\n start.column += 1;\n end.column -= 1;\n for (var i = 0; i < foldLines.length; i++) {\n var cmp = foldLines[i].range.compareRange(range);\n if (cmp == 2) {\n continue;\n }\n else if (cmp == -2) {\n break;\n }\n var folds = foldLines[i].folds;\n for (var j = 0; j < folds.length; j++) {\n var fold = folds[j];\n cmp = fold.range.compareRange(range);\n if (cmp == -2) {\n break;\n }\n else if (cmp == 2) {\n continue;\n }\n else \n if (cmp == 42) {\n break;\n }\n foundFolds.push(fold);\n }\n }\n start.column -= 1;\n end.column += 1;\n return foundFolds;\n };\n this.getFoldsInRangeList = function (ranges) {\n if (Array.isArray(ranges)) {\n var folds = [];\n ranges.forEach(function (range) {\n folds = folds.concat(this.getFoldsInRange(range));\n }, this);\n }\n else {\n var folds = this.getFoldsInRange(ranges);\n }\n return folds;\n };\n this.getAllFolds = function () {\n var folds = [];\n var foldLines = this.$foldData;\n for (var i = 0; i < foldLines.length; i++)\n for (var j = 0; j < foldLines[i].folds.length; j++)\n folds.push(foldLines[i].folds[j]);\n return folds;\n };\n this.getFoldStringAt = function (row, column, trim, foldLine) {\n foldLine = foldLine || this.getFoldLine(row);\n if (!foldLine)\n return null;\n var lastFold = {\n end: { column: 0 }\n };\n var str, fold;\n for (var i = 0; i < foldLine.folds.length; i++) {\n fold = foldLine.folds[i];\n var cmp = fold.range.compareEnd(row, column);\n if (cmp == -1) {\n str = this\n .getLine(fold.start.row)\n .substring(lastFold.end.column, fold.start.column);\n break;\n }\n else if (cmp === 0) {\n return null;\n }\n lastFold = fold;\n }\n if (!str)\n str = this.getLine(fold.start.row).substring(lastFold.end.column);\n if (trim == -1)\n return str.substring(0, column - lastFold.end.column);\n else if (trim == 1)\n return str.substring(column - lastFold.end.column);\n else\n return str;\n };\n this.getFoldLine = function (docRow, startFoldLine) {\n var foldData = this.$foldData;\n var i = 0;\n if (startFoldLine)\n i = foldData.indexOf(startFoldLine);\n if (i == -1)\n i = 0;\n for (i; i < foldData.length; i++) {\n var foldLine = foldData[i];\n if (foldLine.start.row <= docRow && foldLine.end.row >= docRow) {\n return foldLine;\n }\n else if (foldLine.end.row > docRow) {\n return null;\n }\n }\n return null;\n };\n this.getNextFoldLine = function (docRow, startFoldLine) {\n var foldData = this.$foldData;\n var i = 0;\n if (startFoldLine)\n i = foldData.indexOf(startFoldLine);\n if (i == -1)\n i = 0;\n for (i; i < foldData.length; i++) {\n var foldLine = foldData[i];\n if (foldLine.end.row >= docRow) {\n return foldLine;\n }\n }\n return null;\n };\n this.getFoldedRowCount = function (first, last) {\n var foldData = this.$foldData, rowCount = last - first + 1;\n for (var i = 0; i < foldData.length; i++) {\n var foldLine = foldData[i], end = foldLine.end.row, start = foldLine.start.row;\n if (end >= last) {\n if (start < last) {\n if (start >= first)\n rowCount -= last - start;\n else\n rowCount = 0; // in one fold\n }\n break;\n }\n else if (end >= first) {\n if (start >= first) // fold inside range\n rowCount -= end - start;\n else\n rowCount -= end - first + 1;\n }\n }\n return rowCount;\n };\n this.$addFoldLine = function (foldLine) {\n this.$foldData.push(foldLine);\n this.$foldData.sort(function (a, b) {\n return a.start.row - b.start.row;\n });\n return foldLine;\n };\n this.addFold = function (placeholder, range) {\n var foldData = this.$foldData;\n var added = false;\n var fold;\n if (placeholder instanceof Fold)\n fold = placeholder;\n else {\n fold = new Fold(range, placeholder);\n fold.collapseChildren = range.collapseChildren;\n }\n this.$clipRangeToDocument(fold.range);\n var startRow = fold.start.row;\n var startColumn = fold.start.column;\n var endRow = fold.end.row;\n var endColumn = fold.end.column;\n var startFold = this.getFoldAt(startRow, startColumn, 1);\n var endFold = this.getFoldAt(endRow, endColumn, -1);\n if (startFold && endFold == startFold)\n return startFold.addSubFold(fold);\n if (startFold && !startFold.range.isStart(startRow, startColumn))\n this.removeFold(startFold);\n if (endFold && !endFold.range.isEnd(endRow, endColumn))\n this.removeFold(endFold);\n var folds = this.getFoldsInRange(fold.range);\n if (folds.length > 0) {\n this.removeFolds(folds);\n if (!fold.collapseChildren) {\n folds.forEach(function (subFold) {\n fold.addSubFold(subFold);\n });\n }\n }\n for (var i = 0; i < foldData.length; i++) {\n var foldLine = foldData[i];\n if (endRow == foldLine.start.row) {\n foldLine.addFold(fold);\n added = true;\n break;\n }\n else if (startRow == foldLine.end.row) {\n foldLine.addFold(fold);\n added = true;\n if (!fold.sameRow) {\n var foldLineNext = foldData[i + 1];\n if (foldLineNext && foldLineNext.start.row == endRow) {\n foldLine.merge(foldLineNext);\n break;\n }\n }\n break;\n }\n else if (endRow <= foldLine.start.row) {\n break;\n }\n }\n if (!added)\n foldLine = this.$addFoldLine(new FoldLine(this.$foldData, fold));\n if (this.$useWrapMode)\n this.$updateWrapData(foldLine.start.row, foldLine.start.row);\n else\n this.$updateRowLengthCache(foldLine.start.row, foldLine.start.row);\n this.$modified = true;\n this._signal(\"changeFold\", { data: fold, action: \"add\" });\n return fold;\n };\n this.addFolds = function (folds) {\n folds.forEach(function (fold) {\n this.addFold(fold);\n }, this);\n };\n this.removeFold = function (fold) {\n var foldLine = fold.foldLine;\n var startRow = foldLine.start.row;\n var endRow = foldLine.end.row;\n var foldLines = this.$foldData;\n var folds = foldLine.folds;\n if (folds.length == 1) {\n foldLines.splice(foldLines.indexOf(foldLine), 1);\n }\n else \n if (foldLine.range.isEnd(fold.end.row, fold.end.column)) {\n folds.pop();\n foldLine.end.row = folds[folds.length - 1].end.row;\n foldLine.end.column = folds[folds.length - 1].end.column;\n }\n else \n if (foldLine.range.isStart(fold.start.row, fold.start.column)) {\n folds.shift();\n foldLine.start.row = folds[0].start.row;\n foldLine.start.column = folds[0].start.column;\n }\n else \n if (fold.sameRow) {\n folds.splice(folds.indexOf(fold), 1);\n }\n else \n {\n var newFoldLine = foldLine.split(fold.start.row, fold.start.column);\n folds = newFoldLine.folds;\n folds.shift();\n newFoldLine.start.row = folds[0].start.row;\n newFoldLine.start.column = folds[0].start.column;\n }\n if (!this.$updating) {\n if (this.$useWrapMode)\n this.$updateWrapData(startRow, endRow);\n else\n this.$updateRowLengthCache(startRow, endRow);\n }\n this.$modified = true;\n this._signal(\"changeFold\", { data: fold, action: \"remove\" });\n };\n this.removeFolds = function (folds) {\n var cloneFolds = [];\n for (var i = 0; i < folds.length; i++) {\n cloneFolds.push(folds[i]);\n }\n cloneFolds.forEach(function (fold) {\n this.removeFold(fold);\n }, this);\n this.$modified = true;\n };\n this.expandFold = function (fold) {\n this.removeFold(fold);\n fold.subFolds.forEach(function (subFold) {\n fold.restoreRange(subFold);\n this.addFold(subFold);\n }, this);\n if (fold.collapseChildren > 0) {\n this.foldAll(fold.start.row + 1, fold.end.row, fold.collapseChildren - 1);\n }\n fold.subFolds = [];\n };\n this.expandFolds = function (folds) {\n folds.forEach(function (fold) {\n this.expandFold(fold);\n }, this);\n };\n this.unfold = function (location, expandInner) {\n var range, folds;\n if (location == null) {\n range = new Range(0, 0, this.getLength(), 0);\n if (expandInner == null)\n expandInner = true;\n }\n else if (typeof location == \"number\") {\n range = new Range(location, 0, location, this.getLine(location).length);\n }\n else if (\"row\" in location) {\n range = Range.fromPoints(location, location);\n }\n else if (Array.isArray(location)) {\n folds = [];\n location.forEach(function (range) {\n folds = folds.concat(this.unfold(range));\n }, this);\n return folds;\n }\n else {\n range = location;\n }\n folds = this.getFoldsInRangeList(range);\n var outermostFolds = folds;\n while (folds.length == 1\n && Range.comparePoints(folds[0].start, range.start) < 0\n && Range.comparePoints(folds[0].end, range.end) > 0) {\n this.expandFolds(folds);\n folds = this.getFoldsInRangeList(range);\n }\n if (expandInner != false) {\n this.removeFolds(folds);\n }\n else {\n this.expandFolds(folds);\n }\n if (outermostFolds.length)\n return outermostFolds;\n };\n this.isRowFolded = function (docRow, startFoldRow) {\n return !!this.getFoldLine(docRow, startFoldRow);\n };\n this.getRowFoldEnd = function (docRow, startFoldRow) {\n var foldLine = this.getFoldLine(docRow, startFoldRow);\n return foldLine ? foldLine.end.row : docRow;\n };\n this.getRowFoldStart = function (docRow, startFoldRow) {\n var foldLine = this.getFoldLine(docRow, startFoldRow);\n return foldLine ? foldLine.start.row : docRow;\n };\n this.getFoldDisplayLine = function (foldLine, endRow, endColumn, startRow, startColumn) {\n if (startRow == null)\n startRow = foldLine.start.row;\n if (startColumn == null)\n startColumn = 0;\n if (endRow == null)\n endRow = foldLine.end.row;\n if (endColumn == null)\n endColumn = this.getLine(endRow).length;\n var doc = this.doc;\n var textLine = \"\";\n foldLine.walk(function (placeholder, row, column, lastColumn) {\n if (row < startRow)\n return;\n if (row == startRow) {\n if (column < startColumn)\n return;\n lastColumn = Math.max(startColumn, lastColumn);\n }\n if (placeholder != null) {\n textLine += placeholder;\n }\n else {\n textLine += doc.getLine(row).substring(lastColumn, column);\n }\n }, endRow, endColumn);\n return textLine;\n };\n this.getDisplayLine = function (row, endColumn, startRow, startColumn) {\n var foldLine = this.getFoldLine(row);\n if (!foldLine) {\n var line;\n line = this.doc.getLine(row);\n return line.substring(startColumn || 0, endColumn || line.length);\n }\n else {\n return this.getFoldDisplayLine(foldLine, row, endColumn, startRow, startColumn);\n }\n };\n this.$cloneFoldData = function () {\n var fd = [];\n fd = this.$foldData.map(function (foldLine) {\n var folds = foldLine.folds.map(function (fold) {\n return fold.clone();\n });\n return new FoldLine(fd, folds);\n });\n return fd;\n };\n this.toggleFold = function (tryToUnfold) {\n var selection = this.selection;\n var range = selection.getRange();\n var fold;\n var bracketPos;\n if (range.isEmpty()) {\n var cursor = range.start;\n fold = this.getFoldAt(cursor.row, cursor.column);\n if (fold) {\n this.expandFold(fold);\n return;\n }\n else if (bracketPos = this.findMatchingBracket(cursor)) {\n if (range.comparePoint(bracketPos) == 1) {\n range.end = bracketPos;\n }\n else {\n range.start = bracketPos;\n range.start.column++;\n range.end.column--;\n }\n }\n else if (bracketPos = this.findMatchingBracket({ row: cursor.row, column: cursor.column + 1 })) {\n if (range.comparePoint(bracketPos) == 1)\n range.end = bracketPos;\n else\n range.start = bracketPos;\n range.start.column++;\n }\n else {\n range = this.getCommentFoldRange(cursor.row, cursor.column) || range;\n }\n }\n else {\n var folds = this.getFoldsInRange(range);\n if (tryToUnfold && folds.length) {\n this.expandFolds(folds);\n return;\n }\n else if (folds.length == 1) {\n fold = folds[0];\n }\n }\n if (!fold)\n fold = this.getFoldAt(range.start.row, range.start.column);\n if (fold && fold.range.toString() == range.toString()) {\n this.expandFold(fold);\n return;\n }\n var placeholder = \"...\";\n if (!range.isMultiLine()) {\n placeholder = this.getTextRange(range);\n if (placeholder.length < 4)\n return;\n placeholder = placeholder.trim().substring(0, 2) + \"..\";\n }\n this.addFold(placeholder, range);\n };\n this.getCommentFoldRange = function (row, column, dir) {\n var iterator = new TokenIterator(this, row, column);\n var token = iterator.getCurrentToken();\n var type = token && token.type;\n if (token && /^comment|string/.test(type)) {\n type = type.match(/comment|string/)[0];\n if (type == \"comment\")\n type += \"|doc-start|\\\\.doc\";\n var re = new RegExp(type);\n var range = new Range();\n if (dir != 1) {\n do {\n token = iterator.stepBackward();\n } while (token && re.test(token.type) && !/^comment.end/.test(token.type));\n token = iterator.stepForward();\n }\n range.start.row = iterator.getCurrentTokenRow();\n range.start.column = iterator.getCurrentTokenColumn() + (/^comment.start/.test(token.type) ? token.value.length : 2);\n iterator = new TokenIterator(this, row, column);\n if (dir != -1) {\n var lastRow = -1;\n do {\n token = iterator.stepForward();\n if (lastRow == -1) {\n var state = this.getState(iterator.$row);\n if (!re.test(state))\n lastRow = iterator.$row;\n }\n else if (iterator.$row > lastRow) {\n break;\n }\n } while (token && re.test(token.type) && !/^comment.start/.test(token.type));\n token = iterator.stepBackward();\n }\n else\n token = iterator.getCurrentToken();\n range.end.row = iterator.getCurrentTokenRow();\n range.end.column = iterator.getCurrentTokenColumn();\n if (!/^comment.end/.test(token.type)) {\n range.end.column += token.value.length - 2;\n }\n return range;\n }\n };\n this.foldAll = function (startRow, endRow, depth, test) {\n if (depth == undefined)\n depth = 100000; // JSON.stringify doesn't hanle Infinity\n var foldWidgets = this.foldWidgets;\n if (!foldWidgets)\n return; // mode doesn't support folding\n endRow = endRow || this.getLength();\n startRow = startRow || 0;\n for (var row = startRow; row < endRow; row++) {\n if (foldWidgets[row] == null)\n foldWidgets[row] = this.getFoldWidget(row);\n if (foldWidgets[row] != \"start\")\n continue;\n if (test && !test(row))\n continue;\n var range = this.getFoldWidgetRange(row);\n if (range && range.isMultiLine()\n && range.end.row <= endRow\n && range.start.row >= startRow) {\n row = range.end.row;\n range.collapseChildren = depth;\n this.addFold(\"...\", range);\n }\n }\n };\n this.foldToLevel = function (level) {\n this.foldAll();\n while (level-- > 0)\n this.unfold(null, false);\n };\n this.foldAllComments = function () {\n var session = this;\n this.foldAll(null, null, null, function (row) {\n var tokens = session.getTokens(row);\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n if (token.type == \"text\" && /^\\s+$/.test(token.value))\n continue;\n if (/comment/.test(token.type))\n return true;\n return false;\n }\n });\n };\n this.$foldStyles = {\n \"manual\": 1,\n \"markbegin\": 1,\n \"markbeginend\": 1\n };\n this.$foldStyle = \"markbegin\";\n this.setFoldStyle = function (style) {\n if (!this.$foldStyles[style])\n throw new Error(\"invalid fold style: \" + style + \"[\" + Object.keys(this.$foldStyles).join(\", \") + \"]\");\n if (this.$foldStyle == style)\n return;\n this.$foldStyle = style;\n if (style == \"manual\")\n this.unfold();\n var mode = this.$foldMode;\n this.$setFolding(null);\n this.$setFolding(mode);\n };\n this.$setFolding = function (foldMode) {\n if (this.$foldMode == foldMode)\n return;\n this.$foldMode = foldMode;\n this.off('change', this.$updateFoldWidgets);\n this.off('tokenizerUpdate', this.$tokenizerUpdateFoldWidgets);\n this._signal(\"changeAnnotation\");\n if (!foldMode || this.$foldStyle == \"manual\") {\n this.foldWidgets = null;\n return;\n }\n this.foldWidgets = [];\n this.getFoldWidget = foldMode.getFoldWidget.bind(foldMode, this, this.$foldStyle);\n this.getFoldWidgetRange = foldMode.getFoldWidgetRange.bind(foldMode, this, this.$foldStyle);\n this.$updateFoldWidgets = this.updateFoldWidgets.bind(this);\n this.$tokenizerUpdateFoldWidgets = this.tokenizerUpdateFoldWidgets.bind(this);\n this.on('change', this.$updateFoldWidgets);\n this.on('tokenizerUpdate', this.$tokenizerUpdateFoldWidgets);\n };\n this.getParentFoldRangeData = function (row, ignoreCurrent) {\n var fw = this.foldWidgets;\n if (!fw || (ignoreCurrent && fw[row]))\n return {};\n var i = row - 1, firstRange;\n while (i >= 0) {\n var c = fw[i];\n if (c == null)\n c = fw[i] = this.getFoldWidget(i);\n if (c == \"start\") {\n var range = this.getFoldWidgetRange(i);\n if (!firstRange)\n firstRange = range;\n if (range && range.end.row >= row)\n break;\n }\n i--;\n }\n return {\n range: i !== -1 && range,\n firstRange: firstRange\n };\n };\n this.onFoldWidgetClick = function (row, e) {\n if (e instanceof MouseEvent)\n e = e.domEvent;\n var options = {\n children: e.shiftKey,\n all: e.ctrlKey || e.metaKey,\n siblings: e.altKey\n };\n var range = this.$toggleFoldWidget(row, options);\n if (!range) {\n var el = (e.target || e.srcElement);\n if (el && /ace_fold-widget/.test(el.className))\n el.className += \" ace_invalid\";\n }\n };\n this.$toggleFoldWidget = function (row, options) {\n if (!this.getFoldWidget)\n return;\n var type = this.getFoldWidget(row);\n var line = this.getLine(row);\n var dir = type === \"end\" ? -1 : 1;\n var fold = this.getFoldAt(row, dir === -1 ? 0 : line.length, dir);\n if (fold) {\n if (options.children || options.all)\n this.removeFold(fold);\n else\n this.expandFold(fold);\n return fold;\n }\n var range = this.getFoldWidgetRange(row, true);\n if (range && !range.isMultiLine()) {\n fold = this.getFoldAt(range.start.row, range.start.column, 1);\n if (fold && range.isEqual(fold.range)) {\n this.removeFold(fold);\n return fold;\n }\n }\n if (options.siblings) {\n var data = this.getParentFoldRangeData(row);\n if (data.range) {\n var startRow = data.range.start.row + 1;\n var endRow = data.range.end.row;\n }\n this.foldAll(startRow, endRow, options.all ? 10000 : 0);\n }\n else if (options.children) {\n endRow = range ? range.end.row : this.getLength();\n this.foldAll(row + 1, endRow, options.all ? 10000 : 0);\n }\n else if (range) {\n if (options.all)\n range.collapseChildren = 10000;\n this.addFold(\"...\", range);\n }\n return range;\n };\n this.toggleFoldWidget = function (toggleParent) {\n var row = this.selection.getCursor().row;\n row = this.getRowFoldStart(row);\n var range = this.$toggleFoldWidget(row, {});\n if (range)\n return;\n var data = this.getParentFoldRangeData(row, true);\n range = data.range || data.firstRange;\n if (range) {\n row = range.start.row;\n var fold = this.getFoldAt(row, this.getLine(row).length, 1);\n if (fold) {\n this.removeFold(fold);\n }\n else {\n this.addFold(\"...\", range);\n }\n }\n };\n this.updateFoldWidgets = function (delta) {\n var firstRow = delta.start.row;\n var len = delta.end.row - firstRow;\n if (len === 0) {\n this.foldWidgets[firstRow] = null;\n }\n else if (delta.action == 'remove') {\n this.foldWidgets.splice(firstRow, len + 1, null);\n }\n else {\n var args = Array(len + 1);\n args.unshift(firstRow, 1);\n this.foldWidgets.splice.apply(this.foldWidgets, args);\n }\n };\n this.tokenizerUpdateFoldWidgets = function (e) {\n var rows = e.data;\n if (rows.first != rows.last) {\n if (this.foldWidgets.length > rows.first)\n this.foldWidgets.splice(rows.first, this.foldWidgets.length);\n }\n };\n}\nexports.Folding = Folding;\n\n});\n\nace.define(\"ace/edit_session/bracket_match\",[\"require\",\"exports\",\"module\",\"ace/token_iterator\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar TokenIterator = require(\"../token_iterator\").TokenIterator;\nvar Range = require(\"../range\").Range;\nfunction BracketMatch() {\n this.findMatchingBracket = function (position, chr) {\n if (position.column == 0)\n return null;\n var charBeforeCursor = chr || this.getLine(position.row).charAt(position.column - 1);\n if (charBeforeCursor == \"\")\n return null;\n var match = charBeforeCursor.match(/([\\(\\[\\{])|([\\)\\]\\}])/);\n if (!match)\n return null;\n if (match[1])\n return this.$findClosingBracket(match[1], position);\n else\n return this.$findOpeningBracket(match[2], position);\n };\n this.getBracketRange = function (pos) {\n var line = this.getLine(pos.row);\n var before = true, range;\n var chr = line.charAt(pos.column - 1);\n var match = chr && chr.match(/([\\(\\[\\{])|([\\)\\]\\}])/);\n if (!match) {\n chr = line.charAt(pos.column);\n pos = { row: pos.row, column: pos.column + 1 };\n match = chr && chr.match(/([\\(\\[\\{])|([\\)\\]\\}])/);\n before = false;\n }\n if (!match)\n return null;\n if (match[1]) {\n var bracketPos = this.$findClosingBracket(match[1], pos);\n if (!bracketPos)\n return null;\n range = Range.fromPoints(pos, bracketPos);\n if (!before) {\n range.end.column++;\n range.start.column--;\n }\n range.cursor = range.end;\n }\n else {\n var bracketPos = this.$findOpeningBracket(match[2], pos);\n if (!bracketPos)\n return null;\n range = Range.fromPoints(bracketPos, pos);\n if (!before) {\n range.start.column++;\n range.end.column--;\n }\n range.cursor = range.start;\n }\n return range;\n };\n this.getMatchingBracketRanges = function (pos, isBackwards) {\n var line = this.getLine(pos.row);\n var bracketsRegExp = /([\\(\\[\\{])|([\\)\\]\\}])/;\n var chr = !isBackwards && line.charAt(pos.column - 1);\n var match = chr && chr.match(bracketsRegExp);\n if (!match) {\n chr = (isBackwards === undefined || isBackwards) && line.charAt(pos.column);\n pos = {\n row: pos.row,\n column: pos.column + 1\n };\n match = chr && chr.match(bracketsRegExp);\n }\n if (!match)\n return null;\n var startRange = new Range(pos.row, pos.column - 1, pos.row, pos.column);\n var bracketPos = match[1] ? this.$findClosingBracket(match[1], pos)\n : this.$findOpeningBracket(match[2], pos);\n if (!bracketPos)\n return [startRange];\n var endRange = new Range(bracketPos.row, bracketPos.column, bracketPos.row, bracketPos.column + 1);\n return [startRange, endRange];\n };\n this.$brackets = {\n \")\": \"(\",\n \"(\": \")\",\n \"]\": \"[\",\n \"[\": \"]\",\n \"{\": \"}\",\n \"}\": \"{\",\n \"<\": \">\",\n \">\": \"<\"\n };\n this.$findOpeningBracket = function (bracket, position, typeRe) {\n var openBracket = this.$brackets[bracket];\n var depth = 1;\n var iterator = new TokenIterator(this, position.row, position.column);\n var token = iterator.getCurrentToken();\n if (!token)\n token = iterator.stepForward();\n if (!token)\n return;\n if (!typeRe) {\n typeRe = new RegExp(\"(\\\\.?\" +\n token.type.replace(\".\", \"\\\\.\").replace(\"rparen\", \".paren\")\n .replace(/\\b(?:end)\\b/, \"(?:start|begin|end)\")\n .replace(/-close\\b/, \"-(close|open)\")\n + \")+\");\n }\n var valueIndex = position.column - iterator.getCurrentTokenColumn() - 2;\n var value = token.value;\n while (true) {\n while (valueIndex >= 0) {\n var chr = value.charAt(valueIndex);\n if (chr == openBracket) {\n depth -= 1;\n if (depth == 0) {\n return { row: iterator.getCurrentTokenRow(),\n column: valueIndex + iterator.getCurrentTokenColumn() };\n }\n }\n else if (chr == bracket) {\n depth += 1;\n }\n valueIndex -= 1;\n }\n do {\n token = iterator.stepBackward();\n } while (token && !typeRe.test(token.type));\n if (token == null)\n break;\n value = token.value;\n valueIndex = value.length - 1;\n }\n return null;\n };\n this.$findClosingBracket = function (bracket, position, typeRe) {\n var closingBracket = this.$brackets[bracket];\n var depth = 1;\n var iterator = new TokenIterator(this, position.row, position.column);\n var token = iterator.getCurrentToken();\n if (!token)\n token = iterator.stepForward();\n if (!token)\n return;\n if (!typeRe) {\n typeRe = new RegExp(\"(\\\\.?\" +\n token.type.replace(\".\", \"\\\\.\").replace(\"lparen\", \".paren\")\n .replace(/\\b(?:start|begin)\\b/, \"(?:start|begin|end)\")\n .replace(/-open\\b/, \"-(close|open)\")\n + \")+\");\n }\n var valueIndex = position.column - iterator.getCurrentTokenColumn();\n while (true) {\n var value = token.value;\n var valueLength = value.length;\n while (valueIndex < valueLength) {\n var chr = value.charAt(valueIndex);\n if (chr == closingBracket) {\n depth -= 1;\n if (depth == 0) {\n return { row: iterator.getCurrentTokenRow(),\n column: valueIndex + iterator.getCurrentTokenColumn() };\n }\n }\n else if (chr == bracket) {\n depth += 1;\n }\n valueIndex += 1;\n }\n do {\n token = iterator.stepForward();\n } while (token && !typeRe.test(token.type));\n if (token == null)\n break;\n valueIndex = 0;\n }\n return null;\n };\n this.getMatchingTags = function (pos) {\n var iterator = new TokenIterator(this, pos.row, pos.column);\n var token = this.$findTagName(iterator);\n if (!token)\n return;\n var prevToken = iterator.stepBackward();\n if (prevToken.value === '<') {\n return this.$findClosingTag(iterator, token);\n }\n else {\n return this.$findOpeningTag(iterator, token);\n }\n };\n this.$findTagName = function (iterator) {\n var token = iterator.getCurrentToken();\n var found = false;\n var backward = false;\n if (token && token.type.indexOf('tag-name') === -1) {\n do {\n if (backward)\n token = iterator.stepBackward();\n else\n token = iterator.stepForward();\n if (token) {\n if (token.value === \"/>\") {\n backward = true;\n }\n else if (token.type.indexOf('tag-name') !== -1) {\n found = true;\n }\n }\n } while (token && !found);\n }\n return token;\n };\n this.$findClosingTag = function (iterator, token) {\n var prevToken;\n var currentTag = token.value;\n var tag = token.value;\n var depth = 0;\n var openTagStart = new Range(iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn(), iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() + 1);\n token = iterator.stepForward();\n var openTagName = new Range(iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn(), iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() + token.value.length);\n var foundOpenTagEnd = false;\n do {\n prevToken = token;\n token = iterator.stepForward();\n if (token) {\n if (token.value === '>' && !foundOpenTagEnd) {\n var openTagEnd = new Range(iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn(), iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() + 1); //Range for `>`\n foundOpenTagEnd = true;\n }\n if (token.type.indexOf('tag-name') !== -1) {\n currentTag = token.value;\n if (tag === currentTag) {\n if (prevToken.value === '<') {\n depth++;\n }\n else if (prevToken.value === '') {\n var closeTagEnd = new Range(iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn(), iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() + 1); //Range for >\n }\n else {\n return;\n }\n }\n }\n }\n }\n else if (tag === currentTag && token.value === '/>') { // self-closing tag\n depth--;\n if (depth < 0) { //found self-closing tag end\n var closeTagStart = new Range(iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn(), iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() + 2);\n var closeTagName = closeTagStart;\n var closeTagEnd = closeTagName;\n var openTagEnd = new Range(openTagName.end.row, openTagName.end.column, openTagName.end.row, openTagName.end.column + 1);\n }\n }\n }\n } while (token && depth >= 0);\n if (openTagStart && openTagEnd && closeTagStart && closeTagEnd && openTagName && closeTagName) {\n return {\n openTag: new Range(openTagStart.start.row, openTagStart.start.column, openTagEnd.end.row, openTagEnd.end.column),\n closeTag: new Range(closeTagStart.start.row, closeTagStart.start.column, closeTagEnd.end.row, closeTagEnd.end.column),\n openTagName: openTagName,\n closeTagName: closeTagName\n };\n }\n };\n this.$findOpeningTag = function (iterator, token) {\n var prevToken = iterator.getCurrentToken();\n var tag = token.value;\n var depth = 0;\n var startRow = iterator.getCurrentTokenRow();\n var startColumn = iterator.getCurrentTokenColumn();\n var endColumn = startColumn + 2;\n var closeTagStart = new Range(startRow, startColumn, startRow, endColumn); //Range for \")\n return;\n var closeTagEnd = new Range(iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn(), iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() + 1); //Range for >\n iterator.stepBackward();\n iterator.stepBackward();\n do {\n token = prevToken;\n startRow = iterator.getCurrentTokenRow();\n startColumn = iterator.getCurrentTokenColumn();\n endColumn = startColumn + token.value.length;\n prevToken = iterator.stepBackward();\n if (token) {\n if (token.type.indexOf('tag-name') !== -1) {\n if (tag === token.value) {\n if (prevToken.value === '<') {\n depth++;\n if (depth > 0) { //found opening tag\n var openTagName = new Range(startRow, startColumn, startRow, endColumn);\n var openTagStart = new Range(iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn(), iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() + 1); //Range for <\n do {\n token = iterator.stepForward();\n } while (token && token.value !== '>');\n var openTagEnd = new Range(iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn(), iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() + 1); //Range for >\n }\n }\n else if (prevToken.value === '') { // self-closing tag\n var stepCount = 0;\n var tmpToken = prevToken;\n while (tmpToken) {\n if (tmpToken.type.indexOf('tag-name') !== -1 && tmpToken.value === tag) {\n depth--;\n break;\n }\n else if (tmpToken.value === '<') {\n break;\n }\n tmpToken = iterator.stepBackward();\n stepCount++;\n }\n for (var i = 0; i < stepCount; i++) {\n iterator.stepForward();\n }\n }\n }\n } while (prevToken && depth <= 0);\n if (openTagStart && openTagEnd && closeTagStart && closeTagEnd && openTagName && closeTagName) {\n return {\n openTag: new Range(openTagStart.start.row, openTagStart.start.column, openTagEnd.end.row, openTagEnd.end.column),\n closeTag: new Range(closeTagStart.start.row, closeTagStart.start.column, closeTagEnd.end.row, closeTagEnd.end.column),\n openTagName: openTagName,\n closeTagName: closeTagName\n };\n }\n };\n}\nexports.BracketMatch = BracketMatch;\n\n});\n\nace.define(\"ace/edit_session\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/bidihandler\",\"ace/config\",\"ace/lib/event_emitter\",\"ace/selection\",\"ace/mode/text\",\"ace/range\",\"ace/document\",\"ace/background_tokenizer\",\"ace/search_highlight\",\"ace/undomanager\",\"ace/edit_session/folding\",\"ace/edit_session/bracket_match\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"./lib/oop\");\nvar lang = require(\"./lib/lang\");\nvar BidiHandler = require(\"./bidihandler\").BidiHandler;\nvar config = require(\"./config\");\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar Selection = require(\"./selection\").Selection;\nvar TextMode = require(\"./mode/text\").Mode;\nvar Range = require(\"./range\").Range;\nvar Document = require(\"./document\").Document;\nvar BackgroundTokenizer = require(\"./background_tokenizer\").BackgroundTokenizer;\nvar SearchHighlight = require(\"./search_highlight\").SearchHighlight;\nvar UndoManager = require(\"./undomanager\").UndoManager;\nvar EditSession = /** @class */ (function () {\n function EditSession(text, mode) {\n this.$breakpoints = [];\n this.$decorations = [];\n this.$frontMarkers = {};\n this.$backMarkers = {};\n this.$markerId = 1;\n this.$undoSelect = true;\n this.$foldData = [];\n this.id = \"session\" + (++EditSession.$uid);\n this.$foldData.toString = function () {\n return this.join(\"\\n\");\n };\n this.bgTokenizer = new BackgroundTokenizer((new TextMode()).getTokenizer(), this);\n var _self = this;\n this.bgTokenizer.on(\"update\", function (e) {\n _self._signal(\"tokenizerUpdate\", e);\n });\n this.on(\"changeFold\", this.onChangeFold.bind(this));\n this.$onChange = this.onChange.bind(this);\n if (typeof text != \"object\" || !text.getLine)\n text = new Document(text);\n this.setDocument(text);\n this.selection = new Selection(this);\n this.$bidiHandler = new BidiHandler(this);\n config.resetOptions(this);\n this.setMode(mode);\n config._signal(\"session\", this);\n this.destroyed = false;\n }\n EditSession.prototype.setDocument = function (doc) {\n if (this.doc)\n this.doc.off(\"change\", this.$onChange);\n this.doc = doc;\n doc.on(\"change\", this.$onChange, true);\n this.bgTokenizer.setDocument(this.getDocument());\n this.resetCaches();\n };\n EditSession.prototype.getDocument = function () {\n return this.doc;\n };\n EditSession.prototype.$resetRowCache = function (docRow) {\n if (!docRow) {\n this.$docRowCache = [];\n this.$screenRowCache = [];\n return;\n }\n var l = this.$docRowCache.length;\n var i = this.$getRowCacheIndex(this.$docRowCache, docRow) + 1;\n if (l > i) {\n this.$docRowCache.splice(i, l);\n this.$screenRowCache.splice(i, l);\n }\n };\n EditSession.prototype.$getRowCacheIndex = function (cacheArray, val) {\n var low = 0;\n var hi = cacheArray.length - 1;\n while (low <= hi) {\n var mid = (low + hi) >> 1;\n var c = cacheArray[mid];\n if (val > c)\n low = mid + 1;\n else if (val < c)\n hi = mid - 1;\n else\n return mid;\n }\n return low - 1;\n };\n EditSession.prototype.resetCaches = function () {\n this.$modified = true;\n this.$wrapData = [];\n this.$rowLengthCache = [];\n this.$resetRowCache(0);\n if (!this.destroyed)\n this.bgTokenizer.start(0);\n };\n EditSession.prototype.onChangeFold = function (e) {\n var fold = e.data;\n this.$resetRowCache(fold.start.row);\n };\n EditSession.prototype.onChange = function (delta) {\n this.$modified = true;\n this.$bidiHandler.onChange(delta);\n this.$resetRowCache(delta.start.row);\n var removedFolds = this.$updateInternalDataOnChange(delta);\n if (!this.$fromUndo && this.$undoManager) {\n if (removedFolds && removedFolds.length) {\n this.$undoManager.add({\n action: \"removeFolds\",\n folds: removedFolds\n }, this.mergeUndoDeltas);\n this.mergeUndoDeltas = true;\n }\n this.$undoManager.add(delta, this.mergeUndoDeltas);\n this.mergeUndoDeltas = true;\n this.$informUndoManager.schedule();\n }\n this.bgTokenizer.$updateOnChange(delta);\n this._signal(\"change\", delta);\n };\n EditSession.prototype.setValue = function (text) {\n this.doc.setValue(text);\n this.selection.moveTo(0, 0);\n this.$resetRowCache(0);\n this.setUndoManager(this.$undoManager);\n this.getUndoManager().reset();\n };\n EditSession.fromJSON = function (session) {\n session = JSON.parse(session);\n var undoManager = new UndoManager();\n undoManager.$undoStack = session.history.undo;\n undoManager.$redoStack = session.history.redo;\n undoManager.mark = session.history.mark;\n undoManager.$rev = session.history.rev;\n var editSession = new EditSession(session.value);\n session.folds.forEach(function (fold) {\n editSession.addFold(\"...\", Range.fromPoints(fold.start, fold.end));\n });\n editSession.setAnnotations(session.annotations);\n editSession.setBreakpoints(session.breakpoints);\n editSession.setMode(session.mode);\n editSession.setScrollLeft(session.scrollLeft);\n editSession.setScrollTop(session.scrollTop);\n editSession.setUndoManager(undoManager);\n editSession.selection.fromJSON(session.selection);\n return editSession;\n };\n EditSession.prototype.toJSON = function () {\n return {\n annotations: this.$annotations,\n breakpoints: this.$breakpoints,\n folds: this.getAllFolds().map(function (fold) {\n return fold.range;\n }),\n history: this.getUndoManager(),\n mode: this.$mode.$id,\n scrollLeft: this.$scrollLeft,\n scrollTop: this.$scrollTop,\n selection: this.selection.toJSON(),\n value: this.doc.getValue()\n };\n };\n EditSession.prototype.toString = function () {\n return this.doc.getValue();\n };\n EditSession.prototype.getSelection = function () {\n return this.selection;\n };\n EditSession.prototype.getState = function (row) {\n return this.bgTokenizer.getState(row);\n };\n EditSession.prototype.getTokens = function (row) {\n return this.bgTokenizer.getTokens(row);\n };\n EditSession.prototype.getTokenAt = function (row, column) {\n var tokens = this.bgTokenizer.getTokens(row);\n var token, c = 0;\n if (column == null) {\n var i = tokens.length - 1;\n c = this.getLine(row).length;\n }\n else {\n for (var i = 0; i < tokens.length; i++) {\n c += tokens[i].value.length;\n if (c >= column)\n break;\n }\n }\n token = tokens[i];\n if (!token)\n return null;\n token.index = i;\n token.start = c - token.value.length;\n return token;\n };\n EditSession.prototype.setUndoManager = function (undoManager) {\n this.$undoManager = undoManager;\n if (this.$informUndoManager)\n this.$informUndoManager.cancel();\n if (undoManager) {\n var self = this;\n undoManager.addSession(this);\n this.$syncInformUndoManager = function () {\n self.$informUndoManager.cancel();\n self.mergeUndoDeltas = false;\n };\n this.$informUndoManager = lang.delayedCall(this.$syncInformUndoManager);\n }\n else {\n this.$syncInformUndoManager = function () { };\n }\n };\n EditSession.prototype.markUndoGroup = function () {\n if (this.$syncInformUndoManager)\n this.$syncInformUndoManager();\n };\n EditSession.prototype.getUndoManager = function () {\n return this.$undoManager || this.$defaultUndoManager;\n };\n EditSession.prototype.getTabString = function () {\n if (this.getUseSoftTabs()) {\n return lang.stringRepeat(\" \", this.getTabSize());\n }\n else {\n return \"\\t\";\n }\n };\n EditSession.prototype.setUseSoftTabs = function (val) {\n this.setOption(\"useSoftTabs\", val);\n };\n EditSession.prototype.getUseSoftTabs = function () {\n return this.$useSoftTabs && !this.$mode.$indentWithTabs;\n };\n EditSession.prototype.setTabSize = function (tabSize) {\n this.setOption(\"tabSize\", tabSize);\n };\n EditSession.prototype.getTabSize = function () {\n return this.$tabSize;\n };\n EditSession.prototype.isTabStop = function (position) {\n return this.$useSoftTabs && (position.column % this.$tabSize === 0);\n };\n EditSession.prototype.setNavigateWithinSoftTabs = function (navigateWithinSoftTabs) {\n this.setOption(\"navigateWithinSoftTabs\", navigateWithinSoftTabs);\n };\n EditSession.prototype.getNavigateWithinSoftTabs = function () {\n return this.$navigateWithinSoftTabs;\n };\n EditSession.prototype.setOverwrite = function (overwrite) {\n this.setOption(\"overwrite\", overwrite);\n };\n EditSession.prototype.getOverwrite = function () {\n return this.$overwrite;\n };\n EditSession.prototype.toggleOverwrite = function () {\n this.setOverwrite(!this.$overwrite);\n };\n EditSession.prototype.addGutterDecoration = function (row, className) {\n if (!this.$decorations[row])\n this.$decorations[row] = \"\";\n this.$decorations[row] += \" \" + className;\n this._signal(\"changeBreakpoint\", {});\n };\n EditSession.prototype.removeGutterDecoration = function (row, className) {\n this.$decorations[row] = (this.$decorations[row] || \"\").replace(\" \" + className, \"\");\n this._signal(\"changeBreakpoint\", {});\n };\n EditSession.prototype.getBreakpoints = function () {\n return this.$breakpoints;\n };\n EditSession.prototype.setBreakpoints = function (rows) {\n this.$breakpoints = [];\n for (var i = 0; i < rows.length; i++) {\n this.$breakpoints[rows[i]] = \"ace_breakpoint\";\n }\n this._signal(\"changeBreakpoint\", {});\n };\n EditSession.prototype.clearBreakpoints = function () {\n this.$breakpoints = [];\n this._signal(\"changeBreakpoint\", {});\n };\n EditSession.prototype.setBreakpoint = function (row, className) {\n if (className === undefined)\n className = \"ace_breakpoint\";\n if (className)\n this.$breakpoints[row] = className;\n else\n delete this.$breakpoints[row];\n this._signal(\"changeBreakpoint\", {});\n };\n EditSession.prototype.clearBreakpoint = function (row) {\n delete this.$breakpoints[row];\n this._signal(\"changeBreakpoint\", {});\n };\n EditSession.prototype.addMarker = function (range, clazz, type, inFront) {\n var id = this.$markerId++;\n var marker = {\n range: range,\n type: type || \"line\",\n renderer: typeof type == \"function\" ? type : null,\n clazz: clazz,\n inFront: !!inFront,\n id: id\n };\n if (inFront) {\n this.$frontMarkers[id] = marker;\n this._signal(\"changeFrontMarker\");\n }\n else {\n this.$backMarkers[id] = marker;\n this._signal(\"changeBackMarker\");\n }\n return id;\n };\n EditSession.prototype.addDynamicMarker = function (marker, inFront) {\n if (!marker.update)\n return;\n var id = this.$markerId++;\n marker.id = id;\n marker.inFront = !!inFront;\n if (inFront) {\n this.$frontMarkers[id] = marker;\n this._signal(\"changeFrontMarker\");\n }\n else {\n this.$backMarkers[id] = marker;\n this._signal(\"changeBackMarker\");\n }\n return marker;\n };\n EditSession.prototype.removeMarker = function (markerId) {\n var marker = this.$frontMarkers[markerId] || this.$backMarkers[markerId];\n if (!marker)\n return;\n var markers = marker.inFront ? this.$frontMarkers : this.$backMarkers;\n delete (markers[markerId]);\n this._signal(marker.inFront ? \"changeFrontMarker\" : \"changeBackMarker\");\n };\n EditSession.prototype.getMarkers = function (inFront) {\n return inFront ? this.$frontMarkers : this.$backMarkers;\n };\n EditSession.prototype.highlight = function (re) {\n if (!this.$searchHighlight) {\n var highlight = new SearchHighlight(null, \"ace_selected-word\", \"text\");\n this.$searchHighlight = this.addDynamicMarker(highlight);\n }\n this.$searchHighlight.setRegexp(re);\n };\n EditSession.prototype.highlightLines = function (startRow, endRow, clazz, inFront) {\n if (typeof endRow != \"number\") {\n clazz = endRow;\n endRow = startRow;\n }\n if (!clazz)\n clazz = \"ace_step\";\n var range = new Range(startRow, 0, endRow, Infinity);\n range.id = this.addMarker(range, clazz, \"fullLine\", inFront);\n return range;\n };\n EditSession.prototype.setAnnotations = function (annotations) {\n this.$annotations = annotations;\n this._signal(\"changeAnnotation\", {});\n };\n EditSession.prototype.getAnnotations = function () {\n return this.$annotations || [];\n };\n EditSession.prototype.clearAnnotations = function () {\n this.setAnnotations([]);\n };\n EditSession.prototype.$detectNewLine = function (text) {\n var match = text.match(/^.*?(\\r?\\n)/m);\n if (match) {\n this.$autoNewLine = match[1];\n }\n else {\n this.$autoNewLine = \"\\n\";\n }\n };\n EditSession.prototype.getWordRange = function (row, column) {\n var line = this.getLine(row);\n var inToken = false;\n if (column > 0)\n inToken = !!line.charAt(column - 1).match(this.tokenRe);\n if (!inToken)\n inToken = !!line.charAt(column).match(this.tokenRe);\n if (inToken)\n var re = this.tokenRe;\n else if (/^\\s+$/.test(line.slice(column - 1, column + 1)))\n var re = /\\s/;\n else\n var re = this.nonTokenRe;\n var start = column;\n if (start > 0) {\n do {\n start--;\n } while (start >= 0 && line.charAt(start).match(re));\n start++;\n }\n var end = column;\n while (end < line.length && line.charAt(end).match(re)) {\n end++;\n }\n return new Range(row, start, row, end);\n };\n EditSession.prototype.getAWordRange = function (row, column) {\n var wordRange = this.getWordRange(row, column);\n var line = this.getLine(wordRange.end.row);\n while (line.charAt(wordRange.end.column).match(/[ \\t]/)) {\n wordRange.end.column += 1;\n }\n return wordRange;\n };\n EditSession.prototype.setNewLineMode = function (newLineMode) {\n this.doc.setNewLineMode(newLineMode);\n };\n EditSession.prototype.getNewLineMode = function () {\n return this.doc.getNewLineMode();\n };\n EditSession.prototype.setUseWorker = function (useWorker) { this.setOption(\"useWorker\", useWorker); };\n EditSession.prototype.getUseWorker = function () { return this.$useWorker; };\n EditSession.prototype.onReloadTokenizer = function (e) {\n var rows = e.data;\n this.bgTokenizer.start(rows.first);\n this._signal(\"tokenizerUpdate\", e);\n };\n EditSession.prototype.setMode = function (mode, cb) {\n if (mode && typeof mode === \"object\") {\n if (mode.getTokenizer)\n return this.$onChangeMode(mode);\n var options = mode;\n var path = options.path;\n }\n else {\n path = mode || \"ace/mode/text\";\n }\n if (!this.$modes[\"ace/mode/text\"])\n this.$modes[\"ace/mode/text\"] = new TextMode();\n if (this.$modes[path] && !options) {\n this.$onChangeMode(this.$modes[path]);\n cb && cb();\n return;\n }\n this.$modeId = path;\n config.loadModule([\"mode\", path], function (m) {\n if (this.$modeId !== path)\n return cb && cb();\n if (this.$modes[path] && !options) {\n this.$onChangeMode(this.$modes[path]);\n }\n else if (m && m.Mode) {\n m = new m.Mode(options);\n if (!options) {\n this.$modes[path] = m;\n m.$id = path;\n }\n this.$onChangeMode(m);\n }\n cb && cb();\n }.bind(this));\n if (!this.$mode)\n this.$onChangeMode(this.$modes[\"ace/mode/text\"], true);\n };\n EditSession.prototype.$onChangeMode = function (mode, $isPlaceholder) {\n if (!$isPlaceholder)\n this.$modeId = mode.$id;\n if (this.$mode === mode)\n return;\n var oldMode = this.$mode;\n this.$mode = mode;\n this.$stopWorker();\n if (this.$useWorker)\n this.$startWorker();\n var tokenizer = mode.getTokenizer();\n if (tokenizer.on !== undefined) {\n var onReloadTokenizer = this.onReloadTokenizer.bind(this);\n tokenizer.on(\"update\", onReloadTokenizer);\n }\n this.bgTokenizer.setTokenizer(tokenizer);\n this.bgTokenizer.setDocument(this.getDocument());\n this.tokenRe = mode.tokenRe;\n this.nonTokenRe = mode.nonTokenRe;\n if (!$isPlaceholder) {\n if (mode.attachToSession)\n mode.attachToSession(this);\n this.$options.wrapMethod.set.call(this, this.$wrapMethod);\n this.$setFolding(mode.foldingRules);\n this.bgTokenizer.start(0);\n this._emit(\"changeMode\", { oldMode: oldMode, mode: mode });\n }\n };\n EditSession.prototype.$stopWorker = function () {\n if (this.$worker) {\n this.$worker.terminate();\n this.$worker = null;\n }\n };\n EditSession.prototype.$startWorker = function () {\n try {\n this.$worker = this.$mode.createWorker(this);\n }\n catch (e) {\n config.warn(\"Could not load worker\", e);\n this.$worker = null;\n }\n };\n EditSession.prototype.getMode = function () {\n return this.$mode;\n };\n EditSession.prototype.setScrollTop = function (scrollTop) {\n if (this.$scrollTop === scrollTop || isNaN(scrollTop))\n return;\n this.$scrollTop = scrollTop;\n this._signal(\"changeScrollTop\", scrollTop);\n };\n EditSession.prototype.getScrollTop = function () {\n return this.$scrollTop;\n };\n EditSession.prototype.setScrollLeft = function (scrollLeft) {\n if (this.$scrollLeft === scrollLeft || isNaN(scrollLeft))\n return;\n this.$scrollLeft = scrollLeft;\n this._signal(\"changeScrollLeft\", scrollLeft);\n };\n EditSession.prototype.getScrollLeft = function () {\n return this.$scrollLeft;\n };\n EditSession.prototype.getScreenWidth = function () {\n this.$computeWidth();\n if (this.lineWidgets)\n return Math.max(this.getLineWidgetMaxWidth(), this.screenWidth);\n return this.screenWidth;\n };\n EditSession.prototype.getLineWidgetMaxWidth = function () {\n if (this.lineWidgetsWidth != null)\n return this.lineWidgetsWidth;\n var width = 0;\n this.lineWidgets.forEach(function (w) {\n if (w && w.screenWidth > width)\n width = w.screenWidth;\n });\n return this.lineWidgetWidth = width;\n };\n EditSession.prototype.$computeWidth = function (force) {\n if (this.$modified || force) {\n this.$modified = false;\n if (this.$useWrapMode)\n return this.screenWidth = this.$wrapLimit;\n var lines = this.doc.getAllLines();\n var cache = this.$rowLengthCache;\n var longestScreenLine = 0;\n var foldIndex = 0;\n var foldLine = this.$foldData[foldIndex];\n var foldStart = foldLine ? foldLine.start.row : Infinity;\n var len = lines.length;\n for (var i = 0; i < len; i++) {\n if (i > foldStart) {\n i = foldLine.end.row + 1;\n if (i >= len)\n break;\n foldLine = this.$foldData[foldIndex++];\n foldStart = foldLine ? foldLine.start.row : Infinity;\n }\n if (cache[i] == null)\n cache[i] = this.$getStringScreenWidth(lines[i])[0];\n if (cache[i] > longestScreenLine)\n longestScreenLine = cache[i];\n }\n this.screenWidth = longestScreenLine;\n }\n };\n EditSession.prototype.getLine = function (row) {\n return this.doc.getLine(row);\n };\n EditSession.prototype.getLines = function (firstRow, lastRow) {\n return this.doc.getLines(firstRow, lastRow);\n };\n EditSession.prototype.getLength = function () {\n return this.doc.getLength();\n };\n EditSession.prototype.getTextRange = function (range) {\n return this.doc.getTextRange(range || this.selection.getRange());\n };\n EditSession.prototype.insert = function (position, text) {\n return this.doc.insert(position, text);\n };\n EditSession.prototype.remove = function (range) {\n return this.doc.remove(range);\n };\n EditSession.prototype.removeFullLines = function (firstRow, lastRow) {\n return this.doc.removeFullLines(firstRow, lastRow);\n };\n EditSession.prototype.undoChanges = function (deltas, dontSelect) {\n if (!deltas.length)\n return;\n this.$fromUndo = true;\n for (var i = deltas.length - 1; i != -1; i--) {\n var delta = deltas[i];\n if (delta.action == \"insert\" || delta.action == \"remove\") {\n this.doc.revertDelta(delta);\n }\n else if (delta.folds) {\n this.addFolds(delta.folds);\n }\n }\n if (!dontSelect && this.$undoSelect) {\n if (deltas.selectionBefore)\n this.selection.fromJSON(deltas.selectionBefore);\n else\n this.selection.setRange(this.$getUndoSelection(deltas, true));\n }\n this.$fromUndo = false;\n };\n EditSession.prototype.redoChanges = function (deltas, dontSelect) {\n if (!deltas.length)\n return;\n this.$fromUndo = true;\n for (var i = 0; i < deltas.length; i++) {\n var delta = deltas[i];\n if (delta.action == \"insert\" || delta.action == \"remove\") {\n this.doc.$safeApplyDelta(delta);\n }\n }\n if (!dontSelect && this.$undoSelect) {\n if (deltas.selectionAfter)\n this.selection.fromJSON(deltas.selectionAfter);\n else\n this.selection.setRange(this.$getUndoSelection(deltas, false));\n }\n this.$fromUndo = false;\n };\n EditSession.prototype.setUndoSelect = function (enable) {\n this.$undoSelect = enable;\n };\n EditSession.prototype.$getUndoSelection = function (deltas, isUndo) {\n function isInsert(delta) {\n return isUndo ? delta.action !== \"insert\" : delta.action === \"insert\";\n }\n var range, point;\n for (var i = 0; i < deltas.length; i++) {\n var delta = deltas[i];\n if (!delta.start)\n continue; // skip folds\n if (!range) {\n if (isInsert(delta)) {\n range = Range.fromPoints(delta.start, delta.end);\n }\n else {\n range = Range.fromPoints(delta.start, delta.start);\n }\n continue;\n }\n if (isInsert(delta)) {\n point = delta.start;\n if (range.compare(point.row, point.column) == -1) {\n range.setStart(point);\n }\n point = delta.end;\n if (range.compare(point.row, point.column) == 1) {\n range.setEnd(point);\n }\n }\n else {\n point = delta.start;\n if (range.compare(point.row, point.column) == -1) {\n range = Range.fromPoints(delta.start, delta.start);\n }\n }\n }\n return range;\n };\n EditSession.prototype.replace = function (range, text) {\n return this.doc.replace(range, text);\n };\n EditSession.prototype.moveText = function (fromRange, toPosition, copy) {\n var text = this.getTextRange(fromRange);\n var folds = this.getFoldsInRange(fromRange);\n var toRange = Range.fromPoints(toPosition, toPosition);\n if (!copy) {\n this.remove(fromRange);\n var rowDiff = fromRange.start.row - fromRange.end.row;\n var collDiff = rowDiff ? -fromRange.end.column : fromRange.start.column - fromRange.end.column;\n if (collDiff) {\n if (toRange.start.row == fromRange.end.row && toRange.start.column > fromRange.end.column)\n toRange.start.column += collDiff;\n if (toRange.end.row == fromRange.end.row && toRange.end.column > fromRange.end.column)\n toRange.end.column += collDiff;\n }\n if (rowDiff && toRange.start.row >= fromRange.end.row) {\n toRange.start.row += rowDiff;\n toRange.end.row += rowDiff;\n }\n }\n toRange.end = this.insert(toRange.start, text);\n if (folds.length) {\n var oldStart = fromRange.start;\n var newStart = toRange.start;\n var rowDiff = newStart.row - oldStart.row;\n var collDiff = newStart.column - oldStart.column;\n this.addFolds(folds.map(function (x) {\n x = x.clone();\n if (x.start.row == oldStart.row)\n x.start.column += collDiff;\n if (x.end.row == oldStart.row)\n x.end.column += collDiff;\n x.start.row += rowDiff;\n x.end.row += rowDiff;\n return x;\n }));\n }\n return toRange;\n };\n EditSession.prototype.indentRows = function (startRow, endRow, indentString) {\n indentString = indentString.replace(/\\t/g, this.getTabString());\n for (var row = startRow; row <= endRow; row++)\n this.doc.insertInLine({ row: row, column: 0 }, indentString);\n };\n EditSession.prototype.outdentRows = function (range) {\n var rowRange = range.collapseRows();\n var deleteRange = new Range(0, 0, 0, 0);\n var size = this.getTabSize();\n for (var i = rowRange.start.row; i <= rowRange.end.row; ++i) {\n var line = this.getLine(i);\n deleteRange.start.row = i;\n deleteRange.end.row = i;\n for (var j = 0; j < size; ++j)\n if (line.charAt(j) != ' ')\n break;\n if (j < size && line.charAt(j) == '\\t') {\n deleteRange.start.column = j;\n deleteRange.end.column = j + 1;\n }\n else {\n deleteRange.start.column = 0;\n deleteRange.end.column = j;\n }\n this.remove(deleteRange);\n }\n };\n EditSession.prototype.$moveLines = function (firstRow, lastRow, dir) {\n firstRow = this.getRowFoldStart(firstRow);\n lastRow = this.getRowFoldEnd(lastRow);\n if (dir < 0) {\n var row = this.getRowFoldStart(firstRow + dir);\n if (row < 0)\n return 0;\n var diff = row - firstRow;\n }\n else if (dir > 0) {\n var row = this.getRowFoldEnd(lastRow + dir);\n if (row > this.doc.getLength() - 1)\n return 0;\n var diff = row - lastRow;\n }\n else {\n firstRow = this.$clipRowToDocument(firstRow);\n lastRow = this.$clipRowToDocument(lastRow);\n var diff = lastRow - firstRow + 1;\n }\n var range = new Range(firstRow, 0, lastRow, Number.MAX_VALUE);\n var folds = this.getFoldsInRange(range).map(function (x) {\n x = x.clone();\n x.start.row += diff;\n x.end.row += diff;\n return x;\n });\n var lines = dir == 0\n ? this.doc.getLines(firstRow, lastRow)\n : this.doc.removeFullLines(firstRow, lastRow);\n this.doc.insertFullLines(firstRow + diff, lines);\n folds.length && this.addFolds(folds);\n return diff;\n };\n EditSession.prototype.moveLinesUp = function (firstRow, lastRow) {\n return this.$moveLines(firstRow, lastRow, -1);\n };\n EditSession.prototype.moveLinesDown = function (firstRow, lastRow) {\n return this.$moveLines(firstRow, lastRow, 1);\n };\n EditSession.prototype.duplicateLines = function (firstRow, lastRow) {\n return this.$moveLines(firstRow, lastRow, 0);\n };\n EditSession.prototype.$clipRowToDocument = function (row) {\n return Math.max(0, Math.min(row, this.doc.getLength() - 1));\n };\n EditSession.prototype.$clipColumnToRow = function (row, column) {\n if (column < 0)\n return 0;\n return Math.min(this.doc.getLine(row).length, column);\n };\n EditSession.prototype.$clipPositionToDocument = function (row, column) {\n column = Math.max(0, column);\n if (row < 0) {\n row = 0;\n column = 0;\n }\n else {\n var len = this.doc.getLength();\n if (row >= len) {\n row = len - 1;\n column = this.doc.getLine(len - 1).length;\n }\n else {\n column = Math.min(this.doc.getLine(row).length, column);\n }\n }\n return {\n row: row,\n column: column\n };\n };\n EditSession.prototype.$clipRangeToDocument = function (range) {\n if (range.start.row < 0) {\n range.start.row = 0;\n range.start.column = 0;\n }\n else {\n range.start.column = this.$clipColumnToRow(range.start.row, range.start.column);\n }\n var len = this.doc.getLength() - 1;\n if (range.end.row > len) {\n range.end.row = len;\n range.end.column = this.doc.getLine(len).length;\n }\n else {\n range.end.column = this.$clipColumnToRow(range.end.row, range.end.column);\n }\n return range;\n };\n EditSession.prototype.setUseWrapMode = function (useWrapMode) {\n if (useWrapMode != this.$useWrapMode) {\n this.$useWrapMode = useWrapMode;\n this.$modified = true;\n this.$resetRowCache(0);\n if (useWrapMode) {\n var len = this.getLength();\n this.$wrapData = Array(len);\n this.$updateWrapData(0, len - 1);\n }\n this._signal(\"changeWrapMode\");\n }\n };\n EditSession.prototype.getUseWrapMode = function () {\n return this.$useWrapMode;\n };\n EditSession.prototype.setWrapLimitRange = function (min, max) {\n if (this.$wrapLimitRange.min !== min || this.$wrapLimitRange.max !== max) {\n this.$wrapLimitRange = { min: min, max: max };\n this.$modified = true;\n this.$bidiHandler.markAsDirty();\n if (this.$useWrapMode)\n this._signal(\"changeWrapMode\");\n }\n };\n EditSession.prototype.adjustWrapLimit = function (desiredLimit, $printMargin) {\n var limits = this.$wrapLimitRange;\n if (limits.max < 0)\n limits = { min: $printMargin, max: $printMargin };\n var wrapLimit = this.$constrainWrapLimit(desiredLimit, limits.min, limits.max);\n if (wrapLimit != this.$wrapLimit && wrapLimit > 1) {\n this.$wrapLimit = wrapLimit;\n this.$modified = true;\n if (this.$useWrapMode) {\n this.$updateWrapData(0, this.getLength() - 1);\n this.$resetRowCache(0);\n this._signal(\"changeWrapLimit\");\n }\n return true;\n }\n return false;\n };\n EditSession.prototype.$constrainWrapLimit = function (wrapLimit, min, max) {\n if (min)\n wrapLimit = Math.max(min, wrapLimit);\n if (max)\n wrapLimit = Math.min(max, wrapLimit);\n return wrapLimit;\n };\n EditSession.prototype.getWrapLimit = function () {\n return this.$wrapLimit;\n };\n EditSession.prototype.setWrapLimit = function (limit) {\n this.setWrapLimitRange(limit, limit);\n };\n EditSession.prototype.getWrapLimitRange = function () {\n return {\n min: this.$wrapLimitRange.min,\n max: this.$wrapLimitRange.max\n };\n };\n EditSession.prototype.$updateInternalDataOnChange = function (delta) {\n var useWrapMode = this.$useWrapMode;\n var action = delta.action;\n var start = delta.start;\n var end = delta.end;\n var firstRow = start.row;\n var lastRow = end.row;\n var len = lastRow - firstRow;\n var removedFolds = null;\n this.$updating = true;\n if (len != 0) {\n if (action === \"remove\") {\n this[useWrapMode ? \"$wrapData\" : \"$rowLengthCache\"].splice(firstRow, len);\n var foldLines = this.$foldData;\n removedFolds = this.getFoldsInRange(delta);\n this.removeFolds(removedFolds);\n var foldLine = this.getFoldLine(end.row);\n var idx = 0;\n if (foldLine) {\n foldLine.addRemoveChars(end.row, end.column, start.column - end.column);\n foldLine.shiftRow(-len);\n var foldLineBefore = this.getFoldLine(firstRow);\n if (foldLineBefore && foldLineBefore !== foldLine) {\n foldLineBefore.merge(foldLine);\n foldLine = foldLineBefore;\n }\n idx = foldLines.indexOf(foldLine) + 1;\n }\n for (idx; idx < foldLines.length; idx++) {\n var foldLine = foldLines[idx];\n if (foldLine.start.row >= end.row) {\n foldLine.shiftRow(-len);\n }\n }\n lastRow = firstRow;\n }\n else {\n var args = Array(len);\n args.unshift(firstRow, 0);\n var arr = useWrapMode ? this.$wrapData : this.$rowLengthCache;\n arr.splice.apply(arr, args);\n var foldLines = this.$foldData;\n var foldLine = this.getFoldLine(firstRow);\n var idx = 0;\n if (foldLine) {\n var cmp = foldLine.range.compareInside(start.row, start.column);\n if (cmp == 0) {\n foldLine = foldLine.split(start.row, start.column);\n if (foldLine) {\n foldLine.shiftRow(len);\n foldLine.addRemoveChars(lastRow, 0, end.column - start.column);\n }\n }\n else \n if (cmp == -1) {\n foldLine.addRemoveChars(firstRow, 0, end.column - start.column);\n foldLine.shiftRow(len);\n }\n idx = foldLines.indexOf(foldLine) + 1;\n }\n for (idx; idx < foldLines.length; idx++) {\n var foldLine = foldLines[idx];\n if (foldLine.start.row >= firstRow) {\n foldLine.shiftRow(len);\n }\n }\n }\n }\n else {\n len = Math.abs(delta.start.column - delta.end.column);\n if (action === \"remove\") {\n removedFolds = this.getFoldsInRange(delta);\n this.removeFolds(removedFolds);\n len = -len;\n }\n var foldLine = this.getFoldLine(firstRow);\n if (foldLine) {\n foldLine.addRemoveChars(firstRow, start.column, len);\n }\n }\n if (useWrapMode && this.$wrapData.length != this.doc.getLength()) {\n console.error(\"doc.getLength() and $wrapData.length have to be the same!\");\n }\n this.$updating = false;\n if (useWrapMode)\n this.$updateWrapData(firstRow, lastRow);\n else\n this.$updateRowLengthCache(firstRow, lastRow);\n return removedFolds;\n };\n EditSession.prototype.$updateRowLengthCache = function (firstRow, lastRow, b) {\n this.$rowLengthCache[firstRow] = null;\n this.$rowLengthCache[lastRow] = null;\n };\n EditSession.prototype.$updateWrapData = function (firstRow, lastRow) {\n var lines = this.doc.getAllLines();\n var tabSize = this.getTabSize();\n var wrapData = this.$wrapData;\n var wrapLimit = this.$wrapLimit;\n var tokens;\n var foldLine;\n var row = firstRow;\n lastRow = Math.min(lastRow, lines.length - 1);\n while (row <= lastRow) {\n foldLine = this.getFoldLine(row, foldLine);\n if (!foldLine) {\n tokens = this.$getDisplayTokens(lines[row]);\n wrapData[row] = this.$computeWrapSplits(tokens, wrapLimit, tabSize);\n row++;\n }\n else {\n tokens = [];\n foldLine.walk(function (placeholder, row, column, lastColumn) {\n var walkTokens;\n if (placeholder != null) {\n walkTokens = this.$getDisplayTokens(placeholder, tokens.length);\n walkTokens[0] = PLACEHOLDER_START;\n for (var i = 1; i < walkTokens.length; i++) {\n walkTokens[i] = PLACEHOLDER_BODY;\n }\n }\n else {\n walkTokens = this.$getDisplayTokens(lines[row].substring(lastColumn, column), tokens.length);\n }\n tokens = tokens.concat(walkTokens);\n }.bind(this), foldLine.end.row, lines[foldLine.end.row].length + 1);\n wrapData[foldLine.start.row] = this.$computeWrapSplits(tokens, wrapLimit, tabSize);\n row = foldLine.end.row + 1;\n }\n }\n };\n EditSession.prototype.$computeWrapSplits = function (tokens, wrapLimit, tabSize) {\n if (tokens.length == 0) {\n return [];\n }\n var splits = [];\n var displayLength = tokens.length;\n var lastSplit = 0, lastDocSplit = 0;\n var isCode = this.$wrapAsCode;\n var indentedSoftWrap = this.$indentedSoftWrap;\n var maxIndent = wrapLimit <= Math.max(2 * tabSize, 8)\n || indentedSoftWrap === false ? 0 : Math.floor(wrapLimit / 2);\n function getWrapIndent() {\n var indentation = 0;\n if (maxIndent === 0)\n return indentation;\n if (indentedSoftWrap) {\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n if (token == SPACE)\n indentation += 1;\n else if (token == TAB)\n indentation += tabSize;\n else if (token == TAB_SPACE)\n continue;\n else\n break;\n }\n }\n if (isCode && indentedSoftWrap !== false)\n indentation += tabSize;\n return Math.min(indentation, maxIndent);\n }\n function addSplit(screenPos) {\n var len = screenPos - lastSplit;\n for (var i = lastSplit; i < screenPos; i++) {\n var ch = tokens[i];\n if (ch === 12 || ch === 2)\n len -= 1;\n }\n if (!splits.length) {\n indent = getWrapIndent();\n splits.indent = indent;\n }\n lastDocSplit += len;\n splits.push(lastDocSplit);\n lastSplit = screenPos;\n }\n var indent = 0;\n while (displayLength - lastSplit > wrapLimit - indent) {\n var split = lastSplit + wrapLimit - indent;\n if (tokens[split - 1] >= SPACE && tokens[split] >= SPACE) {\n addSplit(split);\n continue;\n }\n if (tokens[split] == PLACEHOLDER_START || tokens[split] == PLACEHOLDER_BODY) {\n for (split; split != lastSplit - 1; split--) {\n if (tokens[split] == PLACEHOLDER_START) {\n break;\n }\n }\n if (split > lastSplit) {\n addSplit(split);\n continue;\n }\n split = lastSplit + wrapLimit;\n for (split; split < tokens.length; split++) {\n if (tokens[split] != PLACEHOLDER_BODY) {\n break;\n }\n }\n if (split == tokens.length) {\n break; // Breaks the while-loop.\n }\n addSplit(split);\n continue;\n }\n var minSplit = Math.max(split - (wrapLimit - (wrapLimit >> 2)), lastSplit - 1);\n while (split > minSplit && tokens[split] < PLACEHOLDER_START) {\n split--;\n }\n if (isCode) {\n while (split > minSplit && tokens[split] < PLACEHOLDER_START) {\n split--;\n }\n while (split > minSplit && tokens[split] == PUNCTUATION) {\n split--;\n }\n }\n else {\n while (split > minSplit && tokens[split] < SPACE) {\n split--;\n }\n }\n if (split > minSplit) {\n addSplit(++split);\n continue;\n }\n split = lastSplit + wrapLimit;\n if (tokens[split] == CHAR_EXT)\n split--;\n addSplit(split - indent);\n }\n return splits;\n };\n EditSession.prototype.$getDisplayTokens = function (str, offset) {\n var arr = [];\n var tabSize;\n offset = offset || 0;\n for (var i = 0; i < str.length; i++) {\n var c = str.charCodeAt(i);\n if (c == 9) {\n tabSize = this.getScreenTabSize(arr.length + offset);\n arr.push(TAB);\n for (var n = 1; n < tabSize; n++) {\n arr.push(TAB_SPACE);\n }\n }\n else if (c == 32) {\n arr.push(SPACE);\n }\n else if ((c > 39 && c < 48) || (c > 57 && c < 64)) {\n arr.push(PUNCTUATION);\n }\n else if (c >= 0x1100 && isFullWidth(c)) {\n arr.push(CHAR, CHAR_EXT);\n }\n else {\n arr.push(CHAR);\n }\n }\n return arr;\n };\n EditSession.prototype.$getStringScreenWidth = function (str, maxScreenColumn, screenColumn) {\n if (maxScreenColumn == 0)\n return [0, 0];\n if (maxScreenColumn == null)\n maxScreenColumn = Infinity;\n screenColumn = screenColumn || 0;\n var c, column;\n for (column = 0; column < str.length; column++) {\n c = str.charCodeAt(column);\n if (c == 9) {\n screenColumn += this.getScreenTabSize(screenColumn);\n }\n else if (c >= 0x1100 && isFullWidth(c)) {\n screenColumn += 2;\n }\n else {\n screenColumn += 1;\n }\n if (screenColumn > maxScreenColumn) {\n break;\n }\n }\n return [screenColumn, column];\n };\n EditSession.prototype.getRowLength = function (row) {\n var h = 1;\n if (this.lineWidgets)\n h += this.lineWidgets[row] && this.lineWidgets[row].rowCount || 0;\n if (!this.$useWrapMode || !this.$wrapData[row])\n return h;\n else\n return this.$wrapData[row].length + h;\n };\n EditSession.prototype.getRowLineCount = function (row) {\n if (!this.$useWrapMode || !this.$wrapData[row]) {\n return 1;\n }\n else {\n return this.$wrapData[row].length + 1;\n }\n };\n EditSession.prototype.getRowWrapIndent = function (screenRow) {\n if (this.$useWrapMode) {\n var pos = this.screenToDocumentPosition(screenRow, Number.MAX_VALUE);\n var splits = this.$wrapData[pos.row];\n return splits.length && splits[0] < pos.column ? splits.indent : 0;\n }\n else {\n return 0;\n }\n };\n EditSession.prototype.getScreenLastRowColumn = function (screenRow) {\n var pos = this.screenToDocumentPosition(screenRow, Number.MAX_VALUE);\n return this.documentToScreenColumn(pos.row, pos.column);\n };\n EditSession.prototype.getDocumentLastRowColumn = function (docRow, docColumn) {\n var screenRow = this.documentToScreenRow(docRow, docColumn);\n return this.getScreenLastRowColumn(screenRow);\n };\n EditSession.prototype.getDocumentLastRowColumnPosition = function (docRow, docColumn) {\n var screenRow = this.documentToScreenRow(docRow, docColumn);\n return this.screenToDocumentPosition(screenRow, Number.MAX_VALUE / 10);\n };\n EditSession.prototype.getRowSplitData = function (row) {\n if (!this.$useWrapMode) {\n return undefined;\n }\n else {\n return this.$wrapData[row];\n }\n };\n EditSession.prototype.getScreenTabSize = function (screenColumn) {\n return this.$tabSize - (screenColumn % this.$tabSize | 0);\n };\n EditSession.prototype.screenToDocumentRow = function (screenRow, screenColumn) {\n return this.screenToDocumentPosition(screenRow, screenColumn).row;\n };\n EditSession.prototype.screenToDocumentColumn = function (screenRow, screenColumn) {\n return this.screenToDocumentPosition(screenRow, screenColumn).column;\n };\n EditSession.prototype.screenToDocumentPosition = function (screenRow, screenColumn, offsetX) {\n if (screenRow < 0)\n return { row: 0, column: 0 };\n var line;\n var docRow = 0;\n var docColumn = 0;\n var column;\n var row = 0;\n var rowLength = 0;\n var rowCache = this.$screenRowCache;\n var i = this.$getRowCacheIndex(rowCache, screenRow);\n var l = rowCache.length;\n if (l && i >= 0) {\n var row = rowCache[i];\n var docRow = this.$docRowCache[i];\n var doCache = screenRow > rowCache[l - 1];\n }\n else {\n var doCache = !l;\n }\n var maxRow = this.getLength() - 1;\n var foldLine = this.getNextFoldLine(docRow);\n var foldStart = foldLine ? foldLine.start.row : Infinity;\n while (row <= screenRow) {\n rowLength = this.getRowLength(docRow);\n if (row + rowLength > screenRow || docRow >= maxRow) {\n break;\n }\n else {\n row += rowLength;\n docRow++;\n if (docRow > foldStart) {\n docRow = foldLine.end.row + 1;\n foldLine = this.getNextFoldLine(docRow, foldLine);\n foldStart = foldLine ? foldLine.start.row : Infinity;\n }\n }\n if (doCache) {\n this.$docRowCache.push(docRow);\n this.$screenRowCache.push(row);\n }\n }\n if (foldLine && foldLine.start.row <= docRow) {\n line = this.getFoldDisplayLine(foldLine);\n docRow = foldLine.start.row;\n }\n else if (row + rowLength <= screenRow || docRow > maxRow) {\n return {\n row: maxRow,\n column: this.getLine(maxRow).length\n };\n }\n else {\n line = this.getLine(docRow);\n foldLine = null;\n }\n var wrapIndent = 0, splitIndex = Math.floor(screenRow - row);\n if (this.$useWrapMode) {\n var splits = this.$wrapData[docRow];\n if (splits) {\n column = splits[splitIndex];\n if (splitIndex > 0 && splits.length) {\n wrapIndent = splits.indent;\n docColumn = splits[splitIndex - 1] || splits[splits.length - 1];\n line = line.substring(docColumn);\n }\n }\n }\n if (offsetX !== undefined && this.$bidiHandler.isBidiRow(row + splitIndex, docRow, splitIndex))\n screenColumn = this.$bidiHandler.offsetToCol(offsetX);\n docColumn += this.$getStringScreenWidth(line, screenColumn - wrapIndent)[1];\n if (this.$useWrapMode && docColumn >= column)\n docColumn = column - 1;\n if (foldLine)\n return foldLine.idxToPosition(docColumn);\n return { row: docRow, column: docColumn };\n };\n EditSession.prototype.documentToScreenPosition = function (docRow, docColumn) {\n if (typeof docColumn === \"undefined\")\n var pos = this.$clipPositionToDocument(docRow.row, docRow.column);\n else\n pos = this.$clipPositionToDocument(docRow, docColumn);\n docRow = pos.row;\n docColumn = pos.column;\n var screenRow = 0;\n var foldStartRow = null;\n var fold = null;\n fold = this.getFoldAt(docRow, docColumn, 1);\n if (fold) {\n docRow = fold.start.row;\n docColumn = fold.start.column;\n }\n var rowEnd, row = 0;\n var rowCache = this.$docRowCache;\n var i = this.$getRowCacheIndex(rowCache, docRow);\n var l = rowCache.length;\n if (l && i >= 0) {\n var row = rowCache[i];\n var screenRow = this.$screenRowCache[i];\n var doCache = docRow > rowCache[l - 1];\n }\n else {\n var doCache = !l;\n }\n var foldLine = this.getNextFoldLine(row);\n var foldStart = foldLine ? foldLine.start.row : Infinity;\n while (row < docRow) {\n if (row >= foldStart) {\n rowEnd = foldLine.end.row + 1;\n if (rowEnd > docRow)\n break;\n foldLine = this.getNextFoldLine(rowEnd, foldLine);\n foldStart = foldLine ? foldLine.start.row : Infinity;\n }\n else {\n rowEnd = row + 1;\n }\n screenRow += this.getRowLength(row);\n row = rowEnd;\n if (doCache) {\n this.$docRowCache.push(row);\n this.$screenRowCache.push(screenRow);\n }\n }\n var textLine = \"\";\n if (foldLine && row >= foldStart) {\n textLine = this.getFoldDisplayLine(foldLine, docRow, docColumn);\n foldStartRow = foldLine.start.row;\n }\n else {\n textLine = this.getLine(docRow).substring(0, docColumn);\n foldStartRow = docRow;\n }\n var wrapIndent = 0;\n if (this.$useWrapMode) {\n var wrapRow = this.$wrapData[foldStartRow];\n if (wrapRow) {\n var screenRowOffset = 0;\n while (textLine.length >= wrapRow[screenRowOffset]) {\n screenRow++;\n screenRowOffset++;\n }\n textLine = textLine.substring(wrapRow[screenRowOffset - 1] || 0, textLine.length);\n wrapIndent = screenRowOffset > 0 ? wrapRow.indent : 0;\n }\n }\n if (this.lineWidgets && this.lineWidgets[row] && this.lineWidgets[row].rowsAbove)\n screenRow += this.lineWidgets[row].rowsAbove;\n return {\n row: screenRow,\n column: wrapIndent + this.$getStringScreenWidth(textLine)[0]\n };\n };\n EditSession.prototype.documentToScreenColumn = function (row, docColumn) {\n return this.documentToScreenPosition(row, docColumn).column;\n };\n EditSession.prototype.documentToScreenRow = function (docRow, docColumn) {\n return this.documentToScreenPosition(docRow, docColumn).row;\n };\n EditSession.prototype.getScreenLength = function () {\n var screenRows = 0;\n var fold = null;\n if (!this.$useWrapMode) {\n screenRows = this.getLength();\n var foldData = this.$foldData;\n for (var i = 0; i < foldData.length; i++) {\n fold = foldData[i];\n screenRows -= fold.end.row - fold.start.row;\n }\n }\n else {\n var lastRow = this.$wrapData.length;\n var row = 0, i = 0;\n var fold = this.$foldData[i++];\n var foldStart = fold ? fold.start.row : Infinity;\n while (row < lastRow) {\n var splits = this.$wrapData[row];\n screenRows += splits ? splits.length + 1 : 1;\n row++;\n if (row > foldStart) {\n row = fold.end.row + 1;\n fold = this.$foldData[i++];\n foldStart = fold ? fold.start.row : Infinity;\n }\n }\n }\n if (this.lineWidgets)\n screenRows += this.$getWidgetScreenLength();\n return screenRows;\n };\n EditSession.prototype.$setFontMetrics = function (fm) {\n if (!this.$enableVarChar)\n return;\n this.$getStringScreenWidth = function (str, maxScreenColumn, screenColumn) {\n if (maxScreenColumn === 0)\n return [0, 0];\n if (!maxScreenColumn)\n maxScreenColumn = Infinity;\n screenColumn = screenColumn || 0;\n var c, column;\n for (column = 0; column < str.length; column++) {\n c = str.charAt(column);\n if (c === \"\\t\") {\n screenColumn += this.getScreenTabSize(screenColumn);\n }\n else {\n screenColumn += fm.getCharacterWidth(c);\n }\n if (screenColumn > maxScreenColumn) {\n break;\n }\n }\n return [screenColumn, column];\n };\n };\n EditSession.prototype.destroy = function () {\n if (!this.destroyed) {\n this.bgTokenizer.setDocument(null);\n this.bgTokenizer.cleanup();\n this.destroyed = true;\n }\n this.$stopWorker();\n this.removeAllListeners();\n if (this.doc) {\n this.doc.off(\"change\", this.$onChange);\n }\n this.selection.detach();\n };\n return EditSession;\n}());\nEditSession.$uid = 0;\nEditSession.prototype.$modes = config.$modes;\nEditSession.prototype.getValue = EditSession.prototype.toString;\nEditSession.prototype.$defaultUndoManager = {\n undo: function () { },\n redo: function () { },\n hasUndo: function () { },\n hasRedo: function () { },\n reset: function () { },\n add: function () { },\n addSelection: function () { },\n startNewGroup: function () { },\n addSession: function () { }\n};\nEditSession.prototype.$overwrite = false;\nEditSession.prototype.$mode = null;\nEditSession.prototype.$modeId = null;\nEditSession.prototype.$scrollTop = 0;\nEditSession.prototype.$scrollLeft = 0;\nEditSession.prototype.$wrapLimit = 80;\nEditSession.prototype.$useWrapMode = false;\nEditSession.prototype.$wrapLimitRange = {\n min: null,\n max: null\n};\nEditSession.prototype.lineWidgets = null;\nEditSession.prototype.isFullWidth = isFullWidth;\noop.implement(EditSession.prototype, EventEmitter);\nvar CHAR = 1, CHAR_EXT = 2, PLACEHOLDER_START = 3, PLACEHOLDER_BODY = 4, PUNCTUATION = 9, SPACE = 10, TAB = 11, TAB_SPACE = 12;\nfunction isFullWidth(c) {\n if (c < 0x1100)\n return false;\n return c >= 0x1100 && c <= 0x115F ||\n c >= 0x11A3 && c <= 0x11A7 ||\n c >= 0x11FA && c <= 0x11FF ||\n c >= 0x2329 && c <= 0x232A ||\n c >= 0x2E80 && c <= 0x2E99 ||\n c >= 0x2E9B && c <= 0x2EF3 ||\n c >= 0x2F00 && c <= 0x2FD5 ||\n c >= 0x2FF0 && c <= 0x2FFB ||\n c >= 0x3000 && c <= 0x303E ||\n c >= 0x3041 && c <= 0x3096 ||\n c >= 0x3099 && c <= 0x30FF ||\n c >= 0x3105 && c <= 0x312D ||\n c >= 0x3131 && c <= 0x318E ||\n c >= 0x3190 && c <= 0x31BA ||\n c >= 0x31C0 && c <= 0x31E3 ||\n c >= 0x31F0 && c <= 0x321E ||\n c >= 0x3220 && c <= 0x3247 ||\n c >= 0x3250 && c <= 0x32FE ||\n c >= 0x3300 && c <= 0x4DBF ||\n c >= 0x4E00 && c <= 0xA48C ||\n c >= 0xA490 && c <= 0xA4C6 ||\n c >= 0xA960 && c <= 0xA97C ||\n c >= 0xAC00 && c <= 0xD7A3 ||\n c >= 0xD7B0 && c <= 0xD7C6 ||\n c >= 0xD7CB && c <= 0xD7FB ||\n c >= 0xF900 && c <= 0xFAFF ||\n c >= 0xFE10 && c <= 0xFE19 ||\n c >= 0xFE30 && c <= 0xFE52 ||\n c >= 0xFE54 && c <= 0xFE66 ||\n c >= 0xFE68 && c <= 0xFE6B ||\n c >= 0xFF01 && c <= 0xFF60 ||\n c >= 0xFFE0 && c <= 0xFFE6;\n}\nrequire(\"./edit_session/folding\").Folding.call(EditSession.prototype);\nrequire(\"./edit_session/bracket_match\").BracketMatch.call(EditSession.prototype);\nconfig.defineOptions(EditSession.prototype, \"session\", {\n wrap: {\n set: function (value) {\n if (!value || value == \"off\")\n value = false;\n else if (value == \"free\")\n value = true;\n else if (value == \"printMargin\")\n value = -1;\n else if (typeof value == \"string\")\n value = parseInt(value, 10) || false;\n if (this.$wrap == value)\n return;\n this.$wrap = value;\n if (!value) {\n this.setUseWrapMode(false);\n }\n else {\n var col = typeof value == \"number\" ? value : null;\n this.setWrapLimitRange(col, col);\n this.setUseWrapMode(true);\n }\n },\n get: function () {\n if (this.getUseWrapMode()) {\n if (this.$wrap == -1)\n return \"printMargin\";\n if (!this.getWrapLimitRange().min)\n return \"free\";\n return this.$wrap;\n }\n return \"off\";\n },\n handlesSet: true\n },\n wrapMethod: {\n set: function (val) {\n val = val == \"auto\"\n ? this.$mode.type != \"text\"\n : val != \"text\";\n if (val != this.$wrapAsCode) {\n this.$wrapAsCode = val;\n if (this.$useWrapMode) {\n this.$useWrapMode = false;\n this.setUseWrapMode(true);\n }\n }\n },\n initialValue: \"auto\"\n },\n indentedSoftWrap: {\n set: function () {\n if (this.$useWrapMode) {\n this.$useWrapMode = false;\n this.setUseWrapMode(true);\n }\n },\n initialValue: true\n },\n firstLineNumber: {\n set: function () { this._signal(\"changeBreakpoint\"); },\n initialValue: 1\n },\n useWorker: {\n set: function (useWorker) {\n this.$useWorker = useWorker;\n this.$stopWorker();\n if (useWorker)\n this.$startWorker();\n },\n initialValue: true\n },\n useSoftTabs: { initialValue: true },\n tabSize: {\n set: function (tabSize) {\n tabSize = parseInt(tabSize);\n if (tabSize > 0 && this.$tabSize !== tabSize) {\n this.$modified = true;\n this.$rowLengthCache = [];\n this.$tabSize = tabSize;\n this._signal(\"changeTabSize\");\n }\n },\n initialValue: 4,\n handlesSet: true\n },\n navigateWithinSoftTabs: { initialValue: false },\n foldStyle: {\n set: function (val) { this.setFoldStyle(val); },\n handlesSet: true\n },\n overwrite: {\n set: function (val) { this._signal(\"changeOverwrite\"); },\n initialValue: false\n },\n newLineMode: {\n set: function (val) { this.doc.setNewLineMode(val); },\n get: function () { return this.doc.getNewLineMode(); },\n handlesSet: true\n },\n mode: {\n set: function (val) { this.setMode(val); },\n get: function () { return this.$modeId; },\n handlesSet: true\n }\n});\nexports.EditSession = EditSession;\n\n});\n\nace.define(\"ace/search\",[\"require\",\"exports\",\"module\",\"ace/lib/lang\",\"ace/lib/oop\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar lang = require(\"./lib/lang\");\nvar oop = require(\"./lib/oop\");\nvar Range = require(\"./range\").Range;\nvar Search = /** @class */ (function () {\n function Search() {\n this.$options = {};\n }\n Search.prototype.set = function (options) {\n oop.mixin(this.$options, options);\n return this;\n };\n Search.prototype.getOptions = function () {\n return lang.copyObject(this.$options);\n };\n Search.prototype.setOptions = function (options) {\n this.$options = options;\n };\n Search.prototype.find = function (session) {\n var options = this.$options;\n var iterator = this.$matchIterator(session, options);\n if (!iterator)\n return false;\n var firstRange = null;\n iterator.forEach(function (sr, sc, er, ec) {\n firstRange = new Range(sr, sc, er, ec);\n if (sc == ec && options.start && options.start.start\n && options.skipCurrent != false && firstRange.isEqual(options.start)) {\n firstRange = null;\n return false;\n }\n return true;\n });\n return firstRange;\n };\n Search.prototype.findAll = function (session) {\n var options = this.$options;\n if (!options.needle)\n return [];\n this.$assembleRegExp(options);\n var range = options.range;\n var lines = range\n ? session.getLines(range.start.row, range.end.row)\n : session.doc.getAllLines();\n var ranges = [];\n var re = options.re;\n if (options.$isMultiLine) {\n var len = re.length;\n var maxRow = lines.length - len;\n var prevRange;\n outer: for (var row = re.offset || 0; row <= maxRow; row++) {\n for (var j = 0; j < len; j++)\n if (lines[row + j].search(re[j]) == -1)\n continue outer;\n var startLine = lines[row];\n var line = lines[row + len - 1];\n var startIndex = startLine.length - startLine.match(re[0])[0].length;\n var endIndex = line.match(re[len - 1])[0].length;\n if (prevRange && prevRange.end.row === row &&\n prevRange.end.column > startIndex) {\n continue;\n }\n ranges.push(prevRange = new Range(row, startIndex, row + len - 1, endIndex));\n if (len > 2)\n row = row + len - 2;\n }\n }\n else {\n for (var i = 0; i < lines.length; i++) {\n var matches = lang.getMatchOffsets(lines[i], re);\n for (var j = 0; j < matches.length; j++) {\n var match = matches[j];\n ranges.push(new Range(i, match.offset, i, match.offset + match.length));\n }\n }\n }\n if (range) {\n var startColumn = range.start.column;\n var endColumn = range.end.column;\n var i = 0, j = ranges.length - 1;\n while (i < j && ranges[i].start.column < startColumn && ranges[i].start.row == 0)\n i++;\n var endRow = range.end.row - range.start.row;\n while (i < j && ranges[j].end.column > endColumn && ranges[j].end.row == endRow)\n j--;\n ranges = ranges.slice(i, j + 1);\n for (i = 0, j = ranges.length; i < j; i++) {\n ranges[i].start.row += range.start.row;\n ranges[i].end.row += range.start.row;\n }\n }\n return ranges;\n };\n Search.prototype.replace = function (input, replacement) {\n var options = this.$options;\n var re = this.$assembleRegExp(options);\n if (options.$isMultiLine)\n return replacement;\n if (!re)\n return;\n var match = re.exec(input);\n if (!match || match[0].length != input.length)\n return null;\n replacement = input.replace(re, replacement);\n if (options.preserveCase) {\n replacement = replacement.split(\"\");\n for (var i = Math.min(input.length, input.length); i--;) {\n var ch = input[i];\n if (ch && ch.toLowerCase() != ch)\n replacement[i] = replacement[i].toUpperCase();\n else\n replacement[i] = replacement[i].toLowerCase();\n }\n replacement = replacement.join(\"\");\n }\n return replacement;\n };\n Search.prototype.$assembleRegExp = function (options, $disableFakeMultiline) {\n if (options.needle instanceof RegExp)\n return options.re = options.needle;\n var needle = options.needle;\n if (!options.needle)\n return options.re = false;\n if (!options.regExp)\n needle = lang.escapeRegExp(needle);\n var modifier = options.caseSensitive ? \"gm\" : \"gmi\";\n try {\n new RegExp(needle, \"u\");\n options.$supportsUnicodeFlag = true;\n modifier += \"u\";\n }\n catch (e) {\n options.$supportsUnicodeFlag = false; //left for backward compatibility with previous versions for cases like /ab\\{2}/gu\n }\n if (options.wholeWord)\n needle = addWordBoundary(needle, options);\n options.$isMultiLine = !$disableFakeMultiline && /[\\n\\r]/.test(needle);\n if (options.$isMultiLine)\n return options.re = this.$assembleMultilineRegExp(needle, modifier);\n try {\n var re = new RegExp(needle, modifier);\n }\n catch (e) {\n re = false;\n }\n return options.re = re;\n };\n Search.prototype.$assembleMultilineRegExp = function (needle, modifier) {\n var parts = needle.replace(/\\r\\n|\\r|\\n/g, \"$\\n^\").split(\"\\n\");\n var re = [];\n for (var i = 0; i < parts.length; i++)\n try {\n re.push(new RegExp(parts[i], modifier));\n }\n catch (e) {\n return false;\n }\n return re;\n };\n Search.prototype.$matchIterator = function (session, options) {\n var re = this.$assembleRegExp(options);\n if (!re)\n return false;\n var backwards = options.backwards == true;\n var skipCurrent = options.skipCurrent != false;\n var supportsUnicodeFlag = re.unicode;\n var range = options.range;\n var start = options.start;\n if (!start)\n start = range ? range[backwards ? \"end\" : \"start\"] : session.selection.getRange();\n if (start.start)\n start = start[skipCurrent != backwards ? \"end\" : \"start\"];\n var firstRow = range ? range.start.row : 0;\n var lastRow = range ? range.end.row : session.getLength() - 1;\n if (backwards) {\n var forEach = function (callback) {\n var row = start.row;\n if (forEachInLine(row, start.column, callback))\n return;\n for (row--; row >= firstRow; row--)\n if (forEachInLine(row, Number.MAX_VALUE, callback))\n return;\n if (options.wrap == false)\n return;\n for (row = lastRow, firstRow = start.row; row >= firstRow; row--)\n if (forEachInLine(row, Number.MAX_VALUE, callback))\n return;\n };\n }\n else {\n var forEach = function (callback) {\n var row = start.row;\n if (forEachInLine(row, start.column, callback))\n return;\n for (row = row + 1; row <= lastRow; row++)\n if (forEachInLine(row, 0, callback))\n return;\n if (options.wrap == false)\n return;\n for (row = firstRow, lastRow = start.row; row <= lastRow; row++)\n if (forEachInLine(row, 0, callback))\n return;\n };\n }\n if (options.$isMultiLine) {\n var len = re.length;\n var forEachInLine = function (row, offset, callback) {\n var startRow = backwards ? row - len + 1 : row;\n if (startRow < 0 || startRow + len > session.getLength())\n return;\n var line = session.getLine(startRow);\n var startIndex = line.search(re[0]);\n if (!backwards && startIndex < offset || startIndex === -1)\n return;\n for (var i = 1; i < len; i++) {\n line = session.getLine(startRow + i);\n if (line.search(re[i]) == -1)\n return;\n }\n var endIndex = line.match(re[len - 1])[0].length;\n if (backwards && endIndex > offset)\n return;\n if (callback(startRow, startIndex, startRow + len - 1, endIndex))\n return true;\n };\n }\n else if (backwards) {\n var forEachInLine = function (row, endIndex, callback) {\n var line = session.getLine(row);\n var matches = [];\n var m, last = 0;\n re.lastIndex = 0;\n while ((m = re.exec(line))) {\n var length = m[0].length;\n last = m.index;\n if (!length) {\n if (last >= line.length)\n break;\n re.lastIndex = last += lang.skipEmptyMatch(line, last, supportsUnicodeFlag);\n }\n if (m.index + length > endIndex)\n break;\n matches.push(m.index, length);\n }\n for (var i = matches.length - 1; i >= 0; i -= 2) {\n var column = matches[i - 1];\n var length = matches[i];\n if (callback(row, column, row, column + length))\n return true;\n }\n };\n }\n else {\n var forEachInLine = function (row, startIndex, callback) {\n var line = session.getLine(row);\n var last;\n var m;\n re.lastIndex = startIndex;\n while ((m = re.exec(line))) {\n var length = m[0].length;\n last = m.index;\n if (callback(row, last, row, last + length))\n return true;\n if (!length) {\n re.lastIndex = last += lang.skipEmptyMatch(line, last, supportsUnicodeFlag);\n if (last >= line.length)\n return false;\n }\n }\n };\n }\n return { forEach: forEach };\n };\n return Search;\n}());\nfunction addWordBoundary(needle, options) {\n var supportsLookbehind = lang.supportsLookbehind();\n function wordBoundary(c, firstChar) {\n if (firstChar === void 0) { firstChar = true; }\n var wordRegExp = supportsLookbehind && options.$supportsUnicodeFlag ? new RegExp(\"[\\\\p{L}\\\\p{N}_]\", \"u\") : new RegExp(\"\\\\w\");\n if (wordRegExp.test(c) || options.regExp) {\n if (supportsLookbehind && options.$supportsUnicodeFlag) {\n if (firstChar)\n return \"(?<=^|[^\\\\p{L}\\\\p{N}_])\";\n return \"(?=[^\\\\p{L}\\\\p{N}_]|$)\";\n }\n return \"\\\\b\";\n }\n return \"\";\n }\n var needleArray = Array.from(needle);\n var firstChar = needleArray[0];\n var lastChar = needleArray[needleArray.length - 1];\n return wordBoundary(firstChar) + needle + wordBoundary(lastChar, false);\n}\nexports.Search = Search;\n\n});\n\nace.define(\"ace/keyboard/hash_handler\",[\"require\",\"exports\",\"module\",\"ace/lib/keys\",\"ace/lib/useragent\"], function(require, exports, module){\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar keyUtil = require(\"../lib/keys\");\nvar useragent = require(\"../lib/useragent\");\nvar KEY_MODS = keyUtil.KEY_MODS;\nvar MultiHashHandler = /** @class */ (function () {\n function MultiHashHandler(config, platform) {\n this.$init(config, platform, false);\n }\n MultiHashHandler.prototype.$init = function (config, platform, $singleCommand) {\n this.platform = platform || (useragent.isMac ? \"mac\" : \"win\");\n this.commands = {};\n this.commandKeyBinding = {};\n this.addCommands(config);\n this.$singleCommand = $singleCommand;\n };\n MultiHashHandler.prototype.addCommand = function (command) {\n if (this.commands[command.name])\n this.removeCommand(command);\n this.commands[command.name] = command;\n if (command.bindKey)\n this._buildKeyHash(command);\n };\n MultiHashHandler.prototype.removeCommand = function (command, keepCommand) {\n var name = command && (typeof command === 'string' ? command : command.name);\n command = this.commands[name];\n if (!keepCommand)\n delete this.commands[name];\n var ckb = this.commandKeyBinding;\n for (var keyId in ckb) {\n var cmdGroup = ckb[keyId];\n if (cmdGroup == command) {\n delete ckb[keyId];\n }\n else if (Array.isArray(cmdGroup)) {\n var i = cmdGroup.indexOf(command);\n if (i != -1) {\n cmdGroup.splice(i, 1);\n if (cmdGroup.length == 1)\n ckb[keyId] = cmdGroup[0];\n }\n }\n }\n };\n MultiHashHandler.prototype.bindKey = function (key, command, position) {\n if (typeof key == \"object\" && key) {\n if (position == undefined)\n position = key.position;\n key = key[this.platform];\n }\n if (!key)\n return;\n if (typeof command == \"function\")\n return this.addCommand({ exec: command, bindKey: key, name: command.name || key });\n key.split(\"|\").forEach(function (keyPart) {\n var chain = \"\";\n if (keyPart.indexOf(\" \") != -1) {\n var parts = keyPart.split(/\\s+/);\n keyPart = parts.pop();\n parts.forEach(function (keyPart) {\n var binding = this.parseKeys(keyPart);\n var id = KEY_MODS[binding.hashId] + binding.key;\n chain += (chain ? \" \" : \"\") + id;\n this._addCommandToBinding(chain, \"chainKeys\");\n }, this);\n chain += \" \";\n }\n var binding = this.parseKeys(keyPart);\n var id = KEY_MODS[binding.hashId] + binding.key;\n this._addCommandToBinding(chain + id, command, position);\n }, this);\n };\n MultiHashHandler.prototype._addCommandToBinding = function (keyId, command, position) {\n var ckb = this.commandKeyBinding, i;\n if (!command) {\n delete ckb[keyId];\n }\n else if (!ckb[keyId] || this.$singleCommand) {\n ckb[keyId] = command;\n }\n else {\n if (!Array.isArray(ckb[keyId])) {\n ckb[keyId] = [ckb[keyId]];\n }\n else if ((i = ckb[keyId].indexOf(command)) != -1) {\n ckb[keyId].splice(i, 1);\n }\n if (typeof position != \"number\") {\n position = getPosition(command);\n }\n var commands = ckb[keyId];\n for (i = 0; i < commands.length; i++) {\n var other = commands[i];\n var otherPos = getPosition(other);\n if (otherPos > position)\n break;\n }\n commands.splice(i, 0, command);\n }\n };\n MultiHashHandler.prototype.addCommands = function (commands) {\n commands && Object.keys(commands).forEach(function (name) {\n var command = commands[name];\n if (!command)\n return;\n if (typeof command === \"string\")\n return this.bindKey(command, name);\n if (typeof command === \"function\")\n command = { exec: command };\n if (typeof command !== \"object\")\n return;\n if (!command.name)\n command.name = name;\n this.addCommand(command);\n }, this);\n };\n MultiHashHandler.prototype.removeCommands = function (commands) {\n Object.keys(commands).forEach(function (name) {\n this.removeCommand(commands[name]);\n }, this);\n };\n MultiHashHandler.prototype.bindKeys = function (keyList) {\n Object.keys(keyList).forEach(function (key) {\n this.bindKey(key, keyList[key]);\n }, this);\n };\n MultiHashHandler.prototype._buildKeyHash = function (command) {\n this.bindKey(command.bindKey, command);\n };\n MultiHashHandler.prototype.parseKeys = function (keys) {\n var parts = keys.toLowerCase().split(/[\\-\\+]([\\-\\+])?/).filter(function (x) { return x; });\n var key = parts.pop();\n var keyCode = keyUtil[key];\n if (keyUtil.FUNCTION_KEYS[keyCode])\n key = keyUtil.FUNCTION_KEYS[keyCode].toLowerCase();\n else if (!parts.length)\n return { key: key, hashId: -1 };\n else if (parts.length == 1 && parts[0] == \"shift\")\n return { key: key.toUpperCase(), hashId: -1 };\n var hashId = 0;\n for (var i = parts.length; i--;) {\n var modifier = keyUtil.KEY_MODS[parts[i]];\n if (modifier == null) {\n if (typeof console != \"undefined\")\n console.error(\"invalid modifier \" + parts[i] + \" in \" + keys);\n return false;\n }\n hashId |= modifier;\n }\n return { key: key, hashId: hashId };\n };\n MultiHashHandler.prototype.findKeyCommand = function (hashId, keyString) {\n var key = KEY_MODS[hashId] + keyString;\n return this.commandKeyBinding[key];\n };\n MultiHashHandler.prototype.handleKeyboard = function (data, hashId, keyString, keyCode) {\n if (keyCode < 0)\n return;\n var key = KEY_MODS[hashId] + keyString;\n var command = this.commandKeyBinding[key];\n if (data.$keyChain) {\n data.$keyChain += \" \" + key;\n command = this.commandKeyBinding[data.$keyChain] || command;\n }\n if (command) {\n if (command == \"chainKeys\" || command[command.length - 1] == \"chainKeys\") {\n data.$keyChain = data.$keyChain || key;\n return { command: \"null\" };\n }\n }\n if (data.$keyChain) {\n if ((!hashId || hashId == 4) && keyString.length == 1)\n data.$keyChain = data.$keyChain.slice(0, -key.length - 1); // wait for input\n else if (hashId == -1 || keyCode > 0)\n data.$keyChain = \"\"; // reset keyChain\n }\n return { command: command };\n };\n MultiHashHandler.prototype.getStatusText = function (editor, data) {\n return data.$keyChain || \"\";\n };\n return MultiHashHandler;\n}());\nfunction getPosition(command) {\n return typeof command == \"object\" && command.bindKey\n && command.bindKey.position\n || (command.isDefault ? -100 : 0);\n}\nvar HashHandler = /** @class */ (function (_super) {\n __extends(HashHandler, _super);\n function HashHandler(config, platform) {\n var _this = _super.call(this, config, platform) || this;\n _this.$singleCommand = true;\n return _this;\n }\n return HashHandler;\n}(MultiHashHandler));\nHashHandler.call = function (thisArg, config, platform) {\n MultiHashHandler.prototype.$init.call(thisArg, config, platform, true);\n};\nMultiHashHandler.call = function (thisArg, config, platform) {\n MultiHashHandler.prototype.$init.call(thisArg, config, platform, false);\n};\nexports.HashHandler = HashHandler;\nexports.MultiHashHandler = MultiHashHandler;\n\n});\n\nace.define(\"ace/commands/command_manager\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/keyboard/hash_handler\",\"ace/lib/event_emitter\"], function(require, exports, module){\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar oop = require(\"../lib/oop\");\nvar MultiHashHandler = require(\"../keyboard/hash_handler\").MultiHashHandler;\nvar EventEmitter = require(\"../lib/event_emitter\").EventEmitter;\nvar CommandManager = /** @class */ (function (_super) {\n __extends(CommandManager, _super);\n function CommandManager(platform, commands) {\n var _this = _super.call(this, commands, platform) || this;\n _this.byName = _this.commands;\n _this.setDefaultHandler(\"exec\", function (e) {\n if (!e.args) {\n return e.command.exec(e.editor, {}, e.event, true);\n }\n return e.command.exec(e.editor, e.args, e.event, false);\n });\n return _this;\n }\n CommandManager.prototype.exec = function (command, editor, args) {\n if (Array.isArray(command)) {\n for (var i = command.length; i--;) {\n if (this.exec(command[i], editor, args))\n return true;\n }\n return false;\n }\n if (typeof command === \"string\")\n command = this.commands[command];\n if (!command)\n return false;\n if (editor && editor.$readOnly && !command.readOnly)\n return false;\n if (this.$checkCommandState != false && command.isAvailable && !command.isAvailable(editor))\n return false;\n var e = { editor: editor, command: command, args: args };\n e.returnValue = this._emit(\"exec\", e);\n this._signal(\"afterExec\", e);\n return e.returnValue === false ? false : true;\n };\n CommandManager.prototype.toggleRecording = function (editor) {\n if (this.$inReplay)\n return;\n editor && editor._emit(\"changeStatus\");\n if (this.recording) {\n this.macro.pop();\n this.off(\"exec\", this.$addCommandToMacro);\n if (!this.macro.length)\n this.macro = this.oldMacro;\n return this.recording = false;\n }\n if (!this.$addCommandToMacro) {\n this.$addCommandToMacro = function (e) {\n this.macro.push([e.command, e.args]);\n }.bind(this);\n }\n this.oldMacro = this.macro;\n this.macro = [];\n this.on(\"exec\", this.$addCommandToMacro);\n return this.recording = true;\n };\n CommandManager.prototype.replay = function (editor) {\n if (this.$inReplay || !this.macro)\n return;\n if (this.recording)\n return this.toggleRecording(editor);\n try {\n this.$inReplay = true;\n this.macro.forEach(function (x) {\n if (typeof x == \"string\")\n this.exec(x, editor);\n else\n this.exec(x[0], editor, x[1]);\n }, this);\n }\n finally {\n this.$inReplay = false;\n }\n };\n CommandManager.prototype.trimMacro = function (m) {\n return m.map(function (x) {\n if (typeof x[0] != \"string\")\n x[0] = x[0].name;\n if (!x[1])\n x = x[0];\n return x;\n });\n };\n return CommandManager;\n}(MultiHashHandler));\noop.implement(CommandManager.prototype, EventEmitter);\nexports.CommandManager = CommandManager;\n\n});\n\nace.define(\"ace/commands/default_commands\",[\"require\",\"exports\",\"module\",\"ace/lib/lang\",\"ace/config\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar lang = require(\"../lib/lang\");\nvar config = require(\"../config\");\nvar Range = require(\"../range\").Range;\nfunction bindKey(win, mac) {\n return { win: win, mac: mac };\n}\nexports.commands = [{\n name: \"showSettingsMenu\",\n description: \"Show settings menu\",\n bindKey: bindKey(\"Ctrl-,\", \"Command-,\"),\n exec: function (editor) {\n config.loadModule(\"ace/ext/settings_menu\", function (module) {\n module.init(editor);\n editor.showSettingsMenu();\n });\n },\n readOnly: true\n }, {\n name: \"goToNextError\",\n description: \"Go to next error\",\n bindKey: bindKey(\"Alt-E\", \"F4\"),\n exec: function (editor) {\n config.loadModule(\"ace/ext/error_marker\", function (module) {\n module.showErrorMarker(editor, 1);\n });\n },\n scrollIntoView: \"animate\",\n readOnly: true\n }, {\n name: \"goToPreviousError\",\n description: \"Go to previous error\",\n bindKey: bindKey(\"Alt-Shift-E\", \"Shift-F4\"),\n exec: function (editor) {\n config.loadModule(\"ace/ext/error_marker\", function (module) {\n module.showErrorMarker(editor, -1);\n });\n },\n scrollIntoView: \"animate\",\n readOnly: true\n }, {\n name: \"selectall\",\n description: \"Select all\",\n bindKey: bindKey(\"Ctrl-A\", \"Command-A\"),\n exec: function (editor) { editor.selectAll(); },\n readOnly: true\n }, {\n name: \"centerselection\",\n description: \"Center selection\",\n bindKey: bindKey(null, \"Ctrl-L\"),\n exec: function (editor) { editor.centerSelection(); },\n readOnly: true\n }, {\n name: \"gotoline\",\n description: \"Go to line...\",\n bindKey: bindKey(\"Ctrl-L\", \"Command-L\"),\n exec: function (editor, line) {\n if (typeof line === \"number\" && !isNaN(line))\n editor.gotoLine(line);\n editor.prompt({ $type: \"gotoLine\" });\n },\n readOnly: true\n }, {\n name: \"fold\",\n bindKey: bindKey(\"Alt-L|Ctrl-F1\", \"Command-Alt-L|Command-F1\"),\n exec: function (editor) { editor.session.toggleFold(false); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"center\",\n readOnly: true\n }, {\n name: \"unfold\",\n bindKey: bindKey(\"Alt-Shift-L|Ctrl-Shift-F1\", \"Command-Alt-Shift-L|Command-Shift-F1\"),\n exec: function (editor) { editor.session.toggleFold(true); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"center\",\n readOnly: true\n }, {\n name: \"toggleFoldWidget\",\n description: \"Toggle fold widget\",\n bindKey: bindKey(\"F2\", \"F2\"),\n exec: function (editor) { editor.session.toggleFoldWidget(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"center\",\n readOnly: true\n }, {\n name: \"toggleParentFoldWidget\",\n description: \"Toggle parent fold widget\",\n bindKey: bindKey(\"Alt-F2\", \"Alt-F2\"),\n exec: function (editor) { editor.session.toggleFoldWidget(true); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"center\",\n readOnly: true\n }, {\n name: \"foldall\",\n description: \"Fold all\",\n bindKey: bindKey(null, \"Ctrl-Command-Option-0\"),\n exec: function (editor) { editor.session.foldAll(); },\n scrollIntoView: \"center\",\n readOnly: true\n }, {\n name: \"foldAllComments\",\n description: \"Fold all comments\",\n bindKey: bindKey(null, \"Ctrl-Command-Option-0\"),\n exec: function (editor) { editor.session.foldAllComments(); },\n scrollIntoView: \"center\",\n readOnly: true\n }, {\n name: \"foldOther\",\n description: \"Fold other\",\n bindKey: bindKey(\"Alt-0\", \"Command-Option-0\"),\n exec: function (editor) {\n editor.session.foldAll();\n editor.session.unfold(editor.selection.getAllRanges());\n },\n scrollIntoView: \"center\",\n readOnly: true\n }, {\n name: \"unfoldall\",\n description: \"Unfold all\",\n bindKey: bindKey(\"Alt-Shift-0\", \"Command-Option-Shift-0\"),\n exec: function (editor) { editor.session.unfold(); },\n scrollIntoView: \"center\",\n readOnly: true\n }, {\n name: \"findnext\",\n description: \"Find next\",\n bindKey: bindKey(\"Ctrl-K\", \"Command-G\"),\n exec: function (editor) { editor.findNext(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"center\",\n readOnly: true\n }, {\n name: \"findprevious\",\n description: \"Find previous\",\n bindKey: bindKey(\"Ctrl-Shift-K\", \"Command-Shift-G\"),\n exec: function (editor) { editor.findPrevious(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"center\",\n readOnly: true\n }, {\n name: \"selectOrFindNext\",\n description: \"Select or find next\",\n bindKey: bindKey(\"Alt-K\", \"Ctrl-G\"),\n exec: function (editor) {\n if (editor.selection.isEmpty())\n editor.selection.selectWord();\n else\n editor.findNext();\n },\n readOnly: true\n }, {\n name: \"selectOrFindPrevious\",\n description: \"Select or find previous\",\n bindKey: bindKey(\"Alt-Shift-K\", \"Ctrl-Shift-G\"),\n exec: function (editor) {\n if (editor.selection.isEmpty())\n editor.selection.selectWord();\n else\n editor.findPrevious();\n },\n readOnly: true\n }, {\n name: \"find\",\n description: \"Find\",\n bindKey: bindKey(\"Ctrl-F\", \"Command-F\"),\n exec: function (editor) {\n config.loadModule(\"ace/ext/searchbox\", function (e) { e.Search(editor); });\n },\n readOnly: true\n }, {\n name: \"overwrite\",\n description: \"Overwrite\",\n bindKey: \"Insert\",\n exec: function (editor) { editor.toggleOverwrite(); },\n readOnly: true\n }, {\n name: \"selecttostart\",\n description: \"Select to start\",\n bindKey: bindKey(\"Ctrl-Shift-Home\", \"Command-Shift-Home|Command-Shift-Up\"),\n exec: function (editor) { editor.getSelection().selectFileStart(); },\n multiSelectAction: \"forEach\",\n readOnly: true,\n scrollIntoView: \"animate\",\n aceCommandGroup: \"fileJump\"\n }, {\n name: \"gotostart\",\n description: \"Go to start\",\n bindKey: bindKey(\"Ctrl-Home\", \"Command-Home|Command-Up\"),\n exec: function (editor) { editor.navigateFileStart(); },\n multiSelectAction: \"forEach\",\n readOnly: true,\n scrollIntoView: \"animate\",\n aceCommandGroup: \"fileJump\"\n }, {\n name: \"selectup\",\n description: \"Select up\",\n bindKey: bindKey(\"Shift-Up\", \"Shift-Up|Ctrl-Shift-P\"),\n exec: function (editor) { editor.getSelection().selectUp(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"golineup\",\n description: \"Go line up\",\n bindKey: bindKey(\"Up\", \"Up|Ctrl-P\"),\n exec: function (editor, args) { editor.navigateUp(args.times); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"selecttoend\",\n description: \"Select to end\",\n bindKey: bindKey(\"Ctrl-Shift-End\", \"Command-Shift-End|Command-Shift-Down\"),\n exec: function (editor) { editor.getSelection().selectFileEnd(); },\n multiSelectAction: \"forEach\",\n readOnly: true,\n scrollIntoView: \"animate\",\n aceCommandGroup: \"fileJump\"\n }, {\n name: \"gotoend\",\n description: \"Go to end\",\n bindKey: bindKey(\"Ctrl-End\", \"Command-End|Command-Down\"),\n exec: function (editor) { editor.navigateFileEnd(); },\n multiSelectAction: \"forEach\",\n readOnly: true,\n scrollIntoView: \"animate\",\n aceCommandGroup: \"fileJump\"\n }, {\n name: \"selectdown\",\n description: \"Select down\",\n bindKey: bindKey(\"Shift-Down\", \"Shift-Down|Ctrl-Shift-N\"),\n exec: function (editor) { editor.getSelection().selectDown(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"golinedown\",\n description: \"Go line down\",\n bindKey: bindKey(\"Down\", \"Down|Ctrl-N\"),\n exec: function (editor, args) { editor.navigateDown(args.times); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"selectwordleft\",\n description: \"Select word left\",\n bindKey: bindKey(\"Ctrl-Shift-Left\", \"Option-Shift-Left\"),\n exec: function (editor) { editor.getSelection().selectWordLeft(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"gotowordleft\",\n description: \"Go to word left\",\n bindKey: bindKey(\"Ctrl-Left\", \"Option-Left\"),\n exec: function (editor) { editor.navigateWordLeft(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"selecttolinestart\",\n description: \"Select to line start\",\n bindKey: bindKey(\"Alt-Shift-Left\", \"Command-Shift-Left|Ctrl-Shift-A\"),\n exec: function (editor) { editor.getSelection().selectLineStart(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"gotolinestart\",\n description: \"Go to line start\",\n bindKey: bindKey(\"Alt-Left|Home\", \"Command-Left|Home|Ctrl-A\"),\n exec: function (editor) { editor.navigateLineStart(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"selectleft\",\n description: \"Select left\",\n bindKey: bindKey(\"Shift-Left\", \"Shift-Left|Ctrl-Shift-B\"),\n exec: function (editor) { editor.getSelection().selectLeft(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"gotoleft\",\n description: \"Go to left\",\n bindKey: bindKey(\"Left\", \"Left|Ctrl-B\"),\n exec: function (editor, args) { editor.navigateLeft(args.times); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"selectwordright\",\n description: \"Select word right\",\n bindKey: bindKey(\"Ctrl-Shift-Right\", \"Option-Shift-Right\"),\n exec: function (editor) { editor.getSelection().selectWordRight(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"gotowordright\",\n description: \"Go to word right\",\n bindKey: bindKey(\"Ctrl-Right\", \"Option-Right\"),\n exec: function (editor) { editor.navigateWordRight(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"selecttolineend\",\n description: \"Select to line end\",\n bindKey: bindKey(\"Alt-Shift-Right\", \"Command-Shift-Right|Shift-End|Ctrl-Shift-E\"),\n exec: function (editor) { editor.getSelection().selectLineEnd(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"gotolineend\",\n description: \"Go to line end\",\n bindKey: bindKey(\"Alt-Right|End\", \"Command-Right|End|Ctrl-E\"),\n exec: function (editor) { editor.navigateLineEnd(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"selectright\",\n description: \"Select right\",\n bindKey: bindKey(\"Shift-Right\", \"Shift-Right\"),\n exec: function (editor) { editor.getSelection().selectRight(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"gotoright\",\n description: \"Go to right\",\n bindKey: bindKey(\"Right\", \"Right|Ctrl-F\"),\n exec: function (editor, args) { editor.navigateRight(args.times); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"selectpagedown\",\n description: \"Select page down\",\n bindKey: \"Shift-PageDown\",\n exec: function (editor) { editor.selectPageDown(); },\n readOnly: true\n }, {\n name: \"pagedown\",\n description: \"Page down\",\n bindKey: bindKey(null, \"Option-PageDown\"),\n exec: function (editor) { editor.scrollPageDown(); },\n readOnly: true\n }, {\n name: \"gotopagedown\",\n description: \"Go to page down\",\n bindKey: bindKey(\"PageDown\", \"PageDown|Ctrl-V\"),\n exec: function (editor) { editor.gotoPageDown(); },\n readOnly: true\n }, {\n name: \"selectpageup\",\n description: \"Select page up\",\n bindKey: \"Shift-PageUp\",\n exec: function (editor) { editor.selectPageUp(); },\n readOnly: true\n }, {\n name: \"pageup\",\n description: \"Page up\",\n bindKey: bindKey(null, \"Option-PageUp\"),\n exec: function (editor) { editor.scrollPageUp(); },\n readOnly: true\n }, {\n name: \"gotopageup\",\n description: \"Go to page up\",\n bindKey: \"PageUp\",\n exec: function (editor) { editor.gotoPageUp(); },\n readOnly: true\n }, {\n name: \"scrollup\",\n description: \"Scroll up\",\n bindKey: bindKey(\"Ctrl-Up\", null),\n exec: function (e) { e.renderer.scrollBy(0, -2 * e.renderer.layerConfig.lineHeight); },\n readOnly: true\n }, {\n name: \"scrolldown\",\n description: \"Scroll down\",\n bindKey: bindKey(\"Ctrl-Down\", null),\n exec: function (e) { e.renderer.scrollBy(0, 2 * e.renderer.layerConfig.lineHeight); },\n readOnly: true\n }, {\n name: \"selectlinestart\",\n description: \"Select line start\",\n bindKey: \"Shift-Home\",\n exec: function (editor) { editor.getSelection().selectLineStart(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"selectlineend\",\n description: \"Select line end\",\n bindKey: \"Shift-End\",\n exec: function (editor) { editor.getSelection().selectLineEnd(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"togglerecording\",\n description: \"Toggle recording\",\n bindKey: bindKey(\"Ctrl-Alt-E\", \"Command-Option-E\"),\n exec: function (editor) { editor.commands.toggleRecording(editor); },\n readOnly: true\n }, {\n name: \"replaymacro\",\n description: \"Replay macro\",\n bindKey: bindKey(\"Ctrl-Shift-E\", \"Command-Shift-E\"),\n exec: function (editor) { editor.commands.replay(editor); },\n readOnly: true\n }, {\n name: \"jumptomatching\",\n description: \"Jump to matching\",\n bindKey: bindKey(\"Ctrl-\\\\|Ctrl-P\", \"Command-\\\\\"),\n exec: function (editor) { editor.jumpToMatching(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"animate\",\n readOnly: true\n }, {\n name: \"selecttomatching\",\n description: \"Select to matching\",\n bindKey: bindKey(\"Ctrl-Shift-\\\\|Ctrl-Shift-P\", \"Command-Shift-\\\\\"),\n exec: function (editor) { editor.jumpToMatching(true); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"animate\",\n readOnly: true\n }, {\n name: \"expandToMatching\",\n description: \"Expand to matching\",\n bindKey: bindKey(\"Ctrl-Shift-M\", \"Ctrl-Shift-M\"),\n exec: function (editor) { editor.jumpToMatching(true, true); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"animate\",\n readOnly: true\n }, {\n name: \"passKeysToBrowser\",\n description: \"Pass keys to browser\",\n bindKey: bindKey(null, null),\n exec: function () { },\n passEvent: true,\n readOnly: true\n }, {\n name: \"copy\",\n description: \"Copy\",\n exec: function (editor) {\n },\n readOnly: true\n },\n {\n name: \"cut\",\n description: \"Cut\",\n exec: function (editor) {\n var cutLine = editor.$copyWithEmptySelection && editor.selection.isEmpty();\n var range = cutLine ? editor.selection.getLineRange() : editor.selection.getRange();\n editor._emit(\"cut\", range);\n if (!range.isEmpty())\n editor.session.remove(range);\n editor.clearSelection();\n },\n scrollIntoView: \"cursor\",\n multiSelectAction: \"forEach\"\n }, {\n name: \"paste\",\n description: \"Paste\",\n exec: function (editor, args) {\n editor.$handlePaste(args);\n },\n scrollIntoView: \"cursor\"\n }, {\n name: \"removeline\",\n description: \"Remove line\",\n bindKey: bindKey(\"Ctrl-D\", \"Command-D\"),\n exec: function (editor) { editor.removeLines(); },\n scrollIntoView: \"cursor\",\n multiSelectAction: \"forEachLine\"\n }, {\n name: \"duplicateSelection\",\n description: \"Duplicate selection\",\n bindKey: bindKey(\"Ctrl-Shift-D\", \"Command-Shift-D\"),\n exec: function (editor) { editor.duplicateSelection(); },\n scrollIntoView: \"cursor\",\n multiSelectAction: \"forEach\"\n }, {\n name: \"sortlines\",\n description: \"Sort lines\",\n bindKey: bindKey(\"Ctrl-Alt-S\", \"Command-Alt-S\"),\n exec: function (editor) { editor.sortLines(); },\n scrollIntoView: \"selection\",\n multiSelectAction: \"forEachLine\"\n }, {\n name: \"togglecomment\",\n description: \"Toggle comment\",\n bindKey: bindKey(\"Ctrl-/\", \"Command-/\"),\n exec: function (editor) { editor.toggleCommentLines(); },\n multiSelectAction: \"forEachLine\",\n scrollIntoView: \"selectionPart\"\n }, {\n name: \"toggleBlockComment\",\n description: \"Toggle block comment\",\n bindKey: bindKey(\"Ctrl-Shift-/\", \"Command-Shift-/\"),\n exec: function (editor) { editor.toggleBlockComment(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"selectionPart\"\n }, {\n name: \"modifyNumberUp\",\n description: \"Modify number up\",\n bindKey: bindKey(\"Ctrl-Shift-Up\", \"Alt-Shift-Up\"),\n exec: function (editor) { editor.modifyNumber(1); },\n scrollIntoView: \"cursor\",\n multiSelectAction: \"forEach\"\n }, {\n name: \"modifyNumberDown\",\n description: \"Modify number down\",\n bindKey: bindKey(\"Ctrl-Shift-Down\", \"Alt-Shift-Down\"),\n exec: function (editor) { editor.modifyNumber(-1); },\n scrollIntoView: \"cursor\",\n multiSelectAction: \"forEach\"\n }, {\n name: \"replace\",\n description: \"Replace\",\n bindKey: bindKey(\"Ctrl-H\", \"Command-Option-F\"),\n exec: function (editor) {\n config.loadModule(\"ace/ext/searchbox\", function (e) { e.Search(editor, true); });\n }\n }, {\n name: \"undo\",\n description: \"Undo\",\n bindKey: bindKey(\"Ctrl-Z\", \"Command-Z\"),\n exec: function (editor) { editor.undo(); }\n }, {\n name: \"redo\",\n description: \"Redo\",\n bindKey: bindKey(\"Ctrl-Shift-Z|Ctrl-Y\", \"Command-Shift-Z|Command-Y\"),\n exec: function (editor) { editor.redo(); }\n }, {\n name: \"copylinesup\",\n description: \"Copy lines up\",\n bindKey: bindKey(\"Alt-Shift-Up\", \"Command-Option-Up\"),\n exec: function (editor) { editor.copyLinesUp(); },\n scrollIntoView: \"cursor\"\n }, {\n name: \"movelinesup\",\n description: \"Move lines up\",\n bindKey: bindKey(\"Alt-Up\", \"Option-Up\"),\n exec: function (editor) { editor.moveLinesUp(); },\n scrollIntoView: \"cursor\"\n }, {\n name: \"copylinesdown\",\n description: \"Copy lines down\",\n bindKey: bindKey(\"Alt-Shift-Down\", \"Command-Option-Down\"),\n exec: function (editor) { editor.copyLinesDown(); },\n scrollIntoView: \"cursor\"\n }, {\n name: \"movelinesdown\",\n description: \"Move lines down\",\n bindKey: bindKey(\"Alt-Down\", \"Option-Down\"),\n exec: function (editor) { editor.moveLinesDown(); },\n scrollIntoView: \"cursor\"\n }, {\n name: \"del\",\n description: \"Delete\",\n bindKey: bindKey(\"Delete\", \"Delete|Ctrl-D|Shift-Delete\"),\n exec: function (editor) { editor.remove(\"right\"); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"backspace\",\n description: \"Backspace\",\n bindKey: bindKey(\"Shift-Backspace|Backspace\", \"Ctrl-Backspace|Shift-Backspace|Backspace|Ctrl-H\"),\n exec: function (editor) { editor.remove(\"left\"); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"cut_or_delete\",\n description: \"Cut or delete\",\n bindKey: bindKey(\"Shift-Delete\", null),\n exec: function (editor) {\n if (editor.selection.isEmpty()) {\n editor.remove(\"left\");\n }\n else {\n return false;\n }\n },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"removetolinestart\",\n description: \"Remove to line start\",\n bindKey: bindKey(\"Alt-Backspace\", \"Command-Backspace\"),\n exec: function (editor) { editor.removeToLineStart(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"removetolineend\",\n description: \"Remove to line end\",\n bindKey: bindKey(\"Alt-Delete\", \"Ctrl-K|Command-Delete\"),\n exec: function (editor) { editor.removeToLineEnd(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"removetolinestarthard\",\n description: \"Remove to line start hard\",\n bindKey: bindKey(\"Ctrl-Shift-Backspace\", null),\n exec: function (editor) {\n var range = editor.selection.getRange();\n range.start.column = 0;\n editor.session.remove(range);\n },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"removetolineendhard\",\n description: \"Remove to line end hard\",\n bindKey: bindKey(\"Ctrl-Shift-Delete\", null),\n exec: function (editor) {\n var range = editor.selection.getRange();\n range.end.column = Number.MAX_VALUE;\n editor.session.remove(range);\n },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"removewordleft\",\n description: \"Remove word left\",\n bindKey: bindKey(\"Ctrl-Backspace\", \"Alt-Backspace|Ctrl-Alt-Backspace\"),\n exec: function (editor) { editor.removeWordLeft(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"removewordright\",\n description: \"Remove word right\",\n bindKey: bindKey(\"Ctrl-Delete\", \"Alt-Delete\"),\n exec: function (editor) { editor.removeWordRight(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"outdent\",\n description: \"Outdent\",\n bindKey: bindKey(\"Shift-Tab\", \"Shift-Tab\"),\n exec: function (editor) { editor.blockOutdent(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"selectionPart\"\n }, {\n name: \"indent\",\n description: \"Indent\",\n bindKey: bindKey(\"Tab\", \"Tab\"),\n exec: function (editor) { editor.indent(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"selectionPart\"\n }, {\n name: \"blockoutdent\",\n description: \"Block outdent\",\n bindKey: bindKey(\"Ctrl-[\", \"Ctrl-[\"),\n exec: function (editor) { editor.blockOutdent(); },\n multiSelectAction: \"forEachLine\",\n scrollIntoView: \"selectionPart\"\n }, {\n name: \"blockindent\",\n description: \"Block indent\",\n bindKey: bindKey(\"Ctrl-]\", \"Ctrl-]\"),\n exec: function (editor) { editor.blockIndent(); },\n multiSelectAction: \"forEachLine\",\n scrollIntoView: \"selectionPart\"\n }, {\n name: \"insertstring\",\n description: \"Insert string\",\n exec: function (editor, str) { editor.insert(str); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"inserttext\",\n description: \"Insert text\",\n exec: function (editor, args) {\n editor.insert(lang.stringRepeat(args.text || \"\", args.times || 1));\n },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"splitline\",\n description: \"Split line\",\n bindKey: bindKey(null, \"Ctrl-O\"),\n exec: function (editor) { editor.splitLine(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"transposeletters\",\n description: \"Transpose letters\",\n bindKey: bindKey(\"Alt-Shift-X\", \"Ctrl-T\"),\n exec: function (editor) { editor.transposeLetters(); },\n multiSelectAction: function (editor) { editor.transposeSelections(1); },\n scrollIntoView: \"cursor\"\n }, {\n name: \"touppercase\",\n description: \"To uppercase\",\n bindKey: bindKey(\"Ctrl-U\", \"Ctrl-U\"),\n exec: function (editor) { editor.toUpperCase(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"tolowercase\",\n description: \"To lowercase\",\n bindKey: bindKey(\"Ctrl-Shift-U\", \"Ctrl-Shift-U\"),\n exec: function (editor) { editor.toLowerCase(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"autoindent\",\n description: \"Auto Indent\",\n bindKey: bindKey(null, null),\n exec: function (editor) { editor.autoIndent(); },\n multiSelectAction: \"forEachLine\",\n scrollIntoView: \"animate\"\n }, {\n name: \"expandtoline\",\n description: \"Expand to line\",\n bindKey: bindKey(\"Ctrl-Shift-L\", \"Command-Shift-L\"),\n exec: function (editor) {\n var range = editor.selection.getRange();\n range.start.column = range.end.column = 0;\n range.end.row++;\n editor.selection.setRange(range, false);\n },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"openlink\",\n bindKey: bindKey(\"Ctrl+F3\", \"F3\"),\n exec: function (editor) { editor.openLink(); }\n }, {\n name: \"joinlines\",\n description: \"Join lines\",\n bindKey: bindKey(null, null),\n exec: function (editor) {\n var isBackwards = editor.selection.isBackwards();\n var selectionStart = isBackwards ? editor.selection.getSelectionLead() : editor.selection.getSelectionAnchor();\n var selectionEnd = isBackwards ? editor.selection.getSelectionAnchor() : editor.selection.getSelectionLead();\n var firstLineEndCol = editor.session.doc.getLine(selectionStart.row).length;\n var selectedText = editor.session.doc.getTextRange(editor.selection.getRange());\n var selectedCount = selectedText.replace(/\\n\\s*/, \" \").length;\n var insertLine = editor.session.doc.getLine(selectionStart.row);\n for (var i = selectionStart.row + 1; i <= selectionEnd.row + 1; i++) {\n var curLine = lang.stringTrimLeft(lang.stringTrimRight(editor.session.doc.getLine(i)));\n if (curLine.length !== 0) {\n curLine = \" \" + curLine;\n }\n insertLine += curLine;\n }\n if (selectionEnd.row + 1 < (editor.session.doc.getLength() - 1)) {\n insertLine += editor.session.doc.getNewLineCharacter();\n }\n editor.clearSelection();\n editor.session.doc.replace(new Range(selectionStart.row, 0, selectionEnd.row + 2, 0), insertLine);\n if (selectedCount > 0) {\n editor.selection.moveCursorTo(selectionStart.row, selectionStart.column);\n editor.selection.selectTo(selectionStart.row, selectionStart.column + selectedCount);\n }\n else {\n firstLineEndCol = editor.session.doc.getLine(selectionStart.row).length > firstLineEndCol ? (firstLineEndCol + 1) : firstLineEndCol;\n editor.selection.moveCursorTo(selectionStart.row, firstLineEndCol);\n }\n },\n multiSelectAction: \"forEach\",\n readOnly: true\n }, {\n name: \"invertSelection\",\n description: \"Invert selection\",\n bindKey: bindKey(null, null),\n exec: function (editor) {\n var endRow = editor.session.doc.getLength() - 1;\n var endCol = editor.session.doc.getLine(endRow).length;\n var ranges = editor.selection.rangeList.ranges;\n var newRanges = [];\n if (ranges.length < 1) {\n ranges = [editor.selection.getRange()];\n }\n for (var i = 0; i < ranges.length; i++) {\n if (i == (ranges.length - 1)) {\n if (!(ranges[i].end.row === endRow && ranges[i].end.column === endCol)) {\n newRanges.push(new Range(ranges[i].end.row, ranges[i].end.column, endRow, endCol));\n }\n }\n if (i === 0) {\n if (!(ranges[i].start.row === 0 && ranges[i].start.column === 0)) {\n newRanges.push(new Range(0, 0, ranges[i].start.row, ranges[i].start.column));\n }\n }\n else {\n newRanges.push(new Range(ranges[i - 1].end.row, ranges[i - 1].end.column, ranges[i].start.row, ranges[i].start.column));\n }\n }\n editor.exitMultiSelectMode();\n editor.clearSelection();\n for (var i = 0; i < newRanges.length; i++) {\n editor.selection.addRange(newRanges[i], false);\n }\n },\n readOnly: true,\n scrollIntoView: \"none\"\n }, {\n name: \"addLineAfter\",\n description: \"Add new line after the current line\",\n exec: function (editor) {\n editor.selection.clearSelection();\n editor.navigateLineEnd();\n editor.insert(\"\\n\");\n },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"addLineBefore\",\n description: \"Add new line before the current line\",\n exec: function (editor) {\n editor.selection.clearSelection();\n var cursor = editor.getCursorPosition();\n editor.selection.moveTo(cursor.row - 1, Number.MAX_VALUE);\n editor.insert(\"\\n\");\n if (cursor.row === 0)\n editor.navigateUp();\n },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n }, {\n name: \"openCommandPallete\",\n exec: function (editor) {\n console.warn(\"This is an obsolete command. Please use `openCommandPalette` instead.\");\n editor.prompt({ $type: \"commands\" });\n },\n readOnly: true\n }, {\n name: \"openCommandPalette\",\n description: \"Open command palette\",\n bindKey: bindKey(\"F1\", \"F1\"),\n exec: function (editor) {\n editor.prompt({ $type: \"commands\" });\n },\n readOnly: true\n }, {\n name: \"modeSelect\",\n description: \"Change language mode...\",\n bindKey: bindKey(null, null),\n exec: function (editor) {\n editor.prompt({ $type: \"modes\" });\n },\n readOnly: true\n }];\nfor (var i = 1; i < 9; i++) {\n exports.commands.push({\n name: \"foldToLevel\" + i,\n description: \"Fold To Level \" + i,\n level: i,\n exec: function (editor) { editor.session.foldToLevel(this.level); },\n scrollIntoView: \"center\",\n readOnly: true\n });\n}\n\n});\n\nace.define(\"ace/line_widgets\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"], function(require, exports, module){\"use strict\";\nvar dom = require(\"./lib/dom\");\nvar LineWidgets = /** @class */ (function () {\n function LineWidgets(session) {\n this.session = session;\n this.session.widgetManager = this;\n this.session.getRowLength = this.getRowLength;\n this.session.$getWidgetScreenLength = this.$getWidgetScreenLength;\n this.updateOnChange = this.updateOnChange.bind(this);\n this.renderWidgets = this.renderWidgets.bind(this);\n this.measureWidgets = this.measureWidgets.bind(this);\n this.session._changedWidgets = [];\n this.$onChangeEditor = this.$onChangeEditor.bind(this);\n this.session.on(\"change\", this.updateOnChange);\n this.session.on(\"changeFold\", this.updateOnFold);\n this.session.on(\"changeEditor\", this.$onChangeEditor);\n }\n LineWidgets.prototype.getRowLength = function (row) {\n var h;\n if (this.lineWidgets)\n h = this.lineWidgets[row] && this.lineWidgets[row].rowCount || 0;\n else\n h = 0;\n if (!this.$useWrapMode || !this.$wrapData[row]) {\n return 1 + h;\n }\n else {\n return this.$wrapData[row].length + 1 + h;\n }\n };\n LineWidgets.prototype.$getWidgetScreenLength = function () {\n var screenRows = 0;\n this.lineWidgets.forEach(function (w) {\n if (w && w.rowCount && !w.hidden)\n screenRows += w.rowCount;\n });\n return screenRows;\n };\n LineWidgets.prototype.$onChangeEditor = function (e) {\n this.attach(e.editor);\n };\n LineWidgets.prototype.attach = function (editor) {\n if (editor && editor.widgetManager && editor.widgetManager != this)\n editor.widgetManager.detach();\n if (this.editor == editor)\n return;\n this.detach();\n this.editor = editor;\n if (editor) {\n editor.widgetManager = this;\n editor.renderer.on(\"beforeRender\", this.measureWidgets);\n editor.renderer.on(\"afterRender\", this.renderWidgets);\n }\n };\n LineWidgets.prototype.detach = function (e) {\n var editor = this.editor;\n if (!editor)\n return;\n this.editor = null;\n editor.widgetManager = null;\n editor.renderer.off(\"beforeRender\", this.measureWidgets);\n editor.renderer.off(\"afterRender\", this.renderWidgets);\n var lineWidgets = this.session.lineWidgets;\n lineWidgets && lineWidgets.forEach(function (w) {\n if (w && w.el && w.el.parentNode) {\n w._inDocument = false;\n w.el.parentNode.removeChild(w.el);\n }\n });\n };\n LineWidgets.prototype.updateOnFold = function (e, session) {\n var lineWidgets = session.lineWidgets;\n if (!lineWidgets || !e.action)\n return;\n var fold = e.data;\n var start = fold.start.row;\n var end = fold.end.row;\n var hide = e.action == \"add\";\n for (var i = start + 1; i < end; i++) {\n if (lineWidgets[i])\n lineWidgets[i].hidden = hide;\n }\n if (lineWidgets[end]) {\n if (hide) {\n if (!lineWidgets[start])\n lineWidgets[start] = lineWidgets[end];\n else\n lineWidgets[end].hidden = hide;\n }\n else {\n if (lineWidgets[start] == lineWidgets[end])\n lineWidgets[start] = undefined;\n lineWidgets[end].hidden = hide;\n }\n }\n };\n LineWidgets.prototype.updateOnChange = function (delta) {\n var lineWidgets = this.session.lineWidgets;\n if (!lineWidgets)\n return;\n var startRow = delta.start.row;\n var len = delta.end.row - startRow;\n if (len === 0) {\n }\n else if (delta.action == \"remove\") {\n var removed = lineWidgets.splice(startRow + 1, len);\n if (!lineWidgets[startRow] && removed[removed.length - 1]) {\n lineWidgets[startRow] = removed.pop();\n }\n removed.forEach(function (w) {\n w && this.removeLineWidget(w);\n }, this);\n this.$updateRows();\n }\n else {\n var args = new Array(len);\n if (lineWidgets[startRow] && lineWidgets[startRow].column != null) {\n if (delta.start.column > lineWidgets[startRow].column)\n startRow++;\n }\n args.unshift(startRow, 0);\n lineWidgets.splice.apply(lineWidgets, args);\n this.$updateRows();\n }\n };\n LineWidgets.prototype.$updateRows = function () {\n var lineWidgets = this.session.lineWidgets;\n if (!lineWidgets)\n return;\n var noWidgets = true;\n lineWidgets.forEach(function (w, i) {\n if (w) {\n noWidgets = false;\n w.row = i;\n while (w.$oldWidget) {\n w.$oldWidget.row = i;\n w = w.$oldWidget;\n }\n }\n });\n if (noWidgets)\n this.session.lineWidgets = null;\n };\n LineWidgets.prototype.$registerLineWidget = function (w) {\n if (!this.session.lineWidgets)\n this.session.lineWidgets = new Array(this.session.getLength());\n var old = this.session.lineWidgets[w.row];\n if (old) {\n w.$oldWidget = old;\n if (old.el && old.el.parentNode) {\n old.el.parentNode.removeChild(old.el);\n old._inDocument = false;\n }\n }\n this.session.lineWidgets[w.row] = w;\n return w;\n };\n LineWidgets.prototype.addLineWidget = function (w) {\n this.$registerLineWidget(w);\n w.session = this.session;\n if (!this.editor)\n return w;\n var renderer = this.editor.renderer;\n if (w.html && !w.el) {\n w.el = dom.createElement(\"div\");\n w.el.innerHTML = w.html;\n }\n if (w.text && !w.el) {\n w.el = dom.createElement(\"div\");\n w.el.textContent = w.text;\n }\n if (w.el) {\n dom.addCssClass(w.el, \"ace_lineWidgetContainer\");\n if (w.className) {\n dom.addCssClass(w.el, w.className);\n }\n w.el.style.position = \"absolute\";\n w.el.style.zIndex = 5;\n renderer.container.appendChild(w.el);\n w._inDocument = true;\n if (!w.coverGutter) {\n w.el.style.zIndex = 3;\n }\n if (w.pixelHeight == null) {\n w.pixelHeight = w.el.offsetHeight;\n }\n }\n if (w.rowCount == null) {\n w.rowCount = w.pixelHeight / renderer.layerConfig.lineHeight;\n }\n var fold = this.session.getFoldAt(w.row, 0);\n w.$fold = fold;\n if (fold) {\n var lineWidgets = this.session.lineWidgets;\n if (w.row == fold.end.row && !lineWidgets[fold.start.row])\n lineWidgets[fold.start.row] = w;\n else\n w.hidden = true;\n }\n this.session._emit(\"changeFold\", { data: { start: { row: w.row } } });\n this.$updateRows();\n this.renderWidgets(null, renderer);\n this.onWidgetChanged(w);\n return w;\n };\n LineWidgets.prototype.removeLineWidget = function (w) {\n w._inDocument = false;\n w.session = null;\n if (w.el && w.el.parentNode)\n w.el.parentNode.removeChild(w.el);\n if (w.editor && w.editor.destroy)\n try {\n w.editor.destroy();\n }\n catch (e) { }\n if (this.session.lineWidgets) {\n var w1 = this.session.lineWidgets[w.row];\n if (w1 == w) {\n this.session.lineWidgets[w.row] = w.$oldWidget;\n if (w.$oldWidget)\n this.onWidgetChanged(w.$oldWidget);\n }\n else {\n while (w1) {\n if (w1.$oldWidget == w) {\n w1.$oldWidget = w.$oldWidget;\n break;\n }\n w1 = w1.$oldWidget;\n }\n }\n }\n this.session._emit(\"changeFold\", { data: { start: { row: w.row } } });\n this.$updateRows();\n };\n LineWidgets.prototype.getWidgetsAtRow = function (row) {\n var lineWidgets = this.session.lineWidgets;\n var w = lineWidgets && lineWidgets[row];\n var list = [];\n while (w) {\n list.push(w);\n w = w.$oldWidget;\n }\n return list;\n };\n LineWidgets.prototype.onWidgetChanged = function (w) {\n this.session._changedWidgets.push(w);\n this.editor && this.editor.renderer.updateFull();\n };\n LineWidgets.prototype.measureWidgets = function (e, renderer) {\n var changedWidgets = this.session._changedWidgets;\n var config = renderer.layerConfig;\n if (!changedWidgets || !changedWidgets.length)\n return;\n var min = Infinity;\n for (var i = 0; i < changedWidgets.length; i++) {\n var w = changedWidgets[i];\n if (!w || !w.el)\n continue;\n if (w.session != this.session)\n continue;\n if (!w._inDocument) {\n if (this.session.lineWidgets[w.row] != w)\n continue;\n w._inDocument = true;\n renderer.container.appendChild(w.el);\n }\n w.h = w.el.offsetHeight;\n if (!w.fixedWidth) {\n w.w = w.el.offsetWidth;\n w.screenWidth = Math.ceil(w.w / config.characterWidth);\n }\n var rowCount = w.h / config.lineHeight;\n if (w.coverLine) {\n rowCount -= this.session.getRowLineCount(w.row);\n if (rowCount < 0)\n rowCount = 0;\n }\n if (w.rowCount != rowCount) {\n w.rowCount = rowCount;\n if (w.row < min)\n min = w.row;\n }\n }\n if (min != Infinity) {\n this.session._emit(\"changeFold\", { data: { start: { row: min } } });\n this.session.lineWidgetWidth = null;\n }\n this.session._changedWidgets = [];\n };\n LineWidgets.prototype.renderWidgets = function (e, renderer) {\n var config = renderer.layerConfig;\n var lineWidgets = this.session.lineWidgets;\n if (!lineWidgets)\n return;\n var first = Math.min(this.firstRow, config.firstRow);\n var last = Math.max(this.lastRow, config.lastRow, lineWidgets.length);\n while (first > 0 && !lineWidgets[first])\n first--;\n this.firstRow = config.firstRow;\n this.lastRow = config.lastRow;\n renderer.$cursorLayer.config = config;\n for (var i = first; i <= last; i++) {\n var w = lineWidgets[i];\n if (!w || !w.el)\n continue;\n if (w.hidden) {\n w.el.style.top = -100 - (w.pixelHeight || 0) + \"px\";\n continue;\n }\n if (!w._inDocument) {\n w._inDocument = true;\n renderer.container.appendChild(w.el);\n }\n var top = renderer.$cursorLayer.getPixelPosition({ row: i, column: 0 }, true).top;\n if (!w.coverLine)\n top += config.lineHeight * this.session.getRowLineCount(w.row);\n w.el.style.top = top - config.offset + \"px\";\n var left = w.coverGutter ? 0 : renderer.gutterWidth;\n if (!w.fixedWidth)\n left -= renderer.scrollLeft;\n w.el.style.left = left + \"px\";\n if (w.fullWidth && w.screenWidth) {\n w.el.style.minWidth = config.width + 2 * config.padding + \"px\";\n }\n if (w.fixedWidth) {\n w.el.style.right = renderer.scrollBar.getWidth() + \"px\";\n }\n else {\n w.el.style.right = \"\";\n }\n }\n };\n return LineWidgets;\n}());\nexports.LineWidgets = LineWidgets;\n\n});\n\nace.define(\"ace/keyboard/gutter_handler\",[\"require\",\"exports\",\"module\",\"ace/lib/keys\",\"ace/mouse/default_gutter_handler\"], function(require, exports, module){\"use strict\";\nvar keys = require('../lib/keys');\nvar GutterTooltip = require(\"../mouse/default_gutter_handler\").GutterTooltip;\nvar GutterKeyboardHandler = /** @class */ (function () {\n function GutterKeyboardHandler(editor) {\n this.editor = editor;\n this.gutterLayer = editor.renderer.$gutterLayer;\n this.element = editor.renderer.$gutter;\n this.lines = editor.renderer.$gutterLayer.$lines;\n this.activeRowIndex = null;\n this.activeLane = null;\n this.annotationTooltip = new GutterTooltip(this.editor);\n }\n GutterKeyboardHandler.prototype.addListener = function () {\n this.element.addEventListener(\"keydown\", this.$onGutterKeyDown.bind(this));\n this.element.addEventListener(\"focusout\", this.$blurGutter.bind(this));\n this.editor.on(\"mousewheel\", this.$blurGutter.bind(this));\n };\n GutterKeyboardHandler.prototype.removeListener = function () {\n this.element.removeEventListener(\"keydown\", this.$onGutterKeyDown.bind(this));\n this.element.removeEventListener(\"focusout\", this.$blurGutter.bind(this));\n this.editor.off(\"mousewheel\", this.$blurGutter.bind(this));\n };\n GutterKeyboardHandler.prototype.$onGutterKeyDown = function (e) {\n if (this.annotationTooltip.isOpen) {\n e.preventDefault();\n if (e.keyCode === keys[\"escape\"])\n this.annotationTooltip.hideTooltip();\n return;\n }\n if (e.target === this.element) {\n if (e.keyCode != keys[\"enter\"]) {\n return;\n }\n e.preventDefault();\n var row = this.editor.getCursorPosition().row;\n if (!this.editor.isRowVisible(row))\n this.editor.scrollToLine(row, true, true);\n setTimeout(function () {\n var index = this.$rowToRowIndex(this.gutterLayer.$cursorCell.row);\n var nearestFoldIndex = this.$findNearestFoldWidget(index);\n var nearestAnnotationIndex = this.$findNearestAnnotation(index);\n if (nearestFoldIndex === null && nearestAnnotationIndex === null)\n return;\n if (nearestFoldIndex === null && nearestAnnotationIndex !== null) {\n this.activeRowIndex = nearestAnnotationIndex;\n this.activeLane = \"annotation\";\n this.$focusAnnotation(this.activeRowIndex);\n return;\n }\n if (nearestFoldIndex !== null && nearestAnnotationIndex === null) {\n this.activeRowIndex = nearestFoldIndex;\n this.activeLane = \"fold\";\n this.$focusFoldWidget(this.activeRowIndex);\n return;\n }\n if (Math.abs(nearestAnnotationIndex - index) < Math.abs(nearestFoldIndex - index)) {\n this.activeRowIndex = nearestAnnotationIndex;\n this.activeLane = \"annotation\";\n this.$focusAnnotation(this.activeRowIndex);\n return;\n }\n else {\n this.activeRowIndex = nearestFoldIndex;\n this.activeLane = \"fold\";\n this.$focusFoldWidget(this.activeRowIndex);\n return;\n }\n }.bind(this), 10);\n return;\n }\n this.$handleGutterKeyboardInteraction(e);\n setTimeout(function () {\n this.editor._signal(\"gutterkeydown\", new GutterKeyboardEvent(e, this));\n }.bind(this), 10);\n };\n GutterKeyboardHandler.prototype.$handleGutterKeyboardInteraction = function (e) {\n if (e.keyCode === keys[\"tab\"]) {\n e.preventDefault();\n return;\n }\n if (e.keyCode === keys[\"escape\"]) {\n e.preventDefault();\n this.$blurGutter();\n this.element.focus();\n this.lane = null;\n return;\n }\n if (e.keyCode === keys[\"up\"]) {\n e.preventDefault();\n switch (this.activeLane) {\n case \"fold\":\n this.$moveFoldWidgetUp();\n break;\n case \"annotation\":\n this.$moveAnnotationUp();\n break;\n }\n return;\n }\n if (e.keyCode === keys[\"down\"]) {\n e.preventDefault();\n switch (this.activeLane) {\n case \"fold\":\n this.$moveFoldWidgetDown();\n break;\n case \"annotation\":\n this.$moveAnnotationDown();\n break;\n }\n return;\n }\n if (e.keyCode === keys[\"left\"]) {\n e.preventDefault();\n this.$switchLane(\"annotation\");\n return;\n }\n if (e.keyCode === keys[\"right\"]) {\n e.preventDefault();\n this.$switchLane(\"fold\");\n return;\n }\n if (e.keyCode === keys[\"enter\"] || e.keyCode === keys[\"space\"]) {\n e.preventDefault();\n switch (this.activeLane) {\n case \"fold\":\n if (this.gutterLayer.session.foldWidgets[this.$rowIndexToRow(this.activeRowIndex)] === 'start') {\n var rowFoldingWidget = this.$rowIndexToRow(this.activeRowIndex);\n this.editor.session.onFoldWidgetClick(this.$rowIndexToRow(this.activeRowIndex), e);\n setTimeout(function () {\n if (this.$rowIndexToRow(this.activeRowIndex) !== rowFoldingWidget) {\n this.$blurFoldWidget(this.activeRowIndex);\n this.activeRowIndex = this.$rowToRowIndex(rowFoldingWidget);\n this.$focusFoldWidget(this.activeRowIndex);\n }\n }.bind(this), 10);\n break;\n }\n else if (this.gutterLayer.session.foldWidgets[this.$rowIndexToRow(this.activeRowIndex)] === 'end') {\n break;\n }\n return;\n case \"annotation\":\n var gutterElement = this.lines.cells[this.activeRowIndex].element.childNodes[2];\n var rect = gutterElement.getBoundingClientRect();\n var style = this.annotationTooltip.getElement().style;\n style.left = rect.right + \"px\";\n style.top = rect.bottom + \"px\";\n this.annotationTooltip.showTooltip(this.$rowIndexToRow(this.activeRowIndex));\n break;\n }\n return;\n }\n };\n GutterKeyboardHandler.prototype.$blurGutter = function () {\n if (this.activeRowIndex !== null) {\n switch (this.activeLane) {\n case \"fold\":\n this.$blurFoldWidget(this.activeRowIndex);\n break;\n case \"annotation\":\n this.$blurAnnotation(this.activeRowIndex);\n break;\n }\n }\n if (this.annotationTooltip.isOpen)\n this.annotationTooltip.hideTooltip();\n return;\n };\n GutterKeyboardHandler.prototype.$isFoldWidgetVisible = function (index) {\n var isRowFullyVisible = this.editor.isRowFullyVisible(this.$rowIndexToRow(index));\n var isIconVisible = this.$getFoldWidget(index).style.display !== \"none\";\n return isRowFullyVisible && isIconVisible;\n };\n GutterKeyboardHandler.prototype.$isAnnotationVisible = function (index) {\n var isRowFullyVisible = this.editor.isRowFullyVisible(this.$rowIndexToRow(index));\n var isIconVisible = this.$getAnnotation(index).style.display !== \"none\";\n return isRowFullyVisible && isIconVisible;\n };\n GutterKeyboardHandler.prototype.$getFoldWidget = function (index) {\n var cell = this.lines.get(index);\n var element = cell.element;\n return element.childNodes[1];\n };\n GutterKeyboardHandler.prototype.$getAnnotation = function (index) {\n var cell = this.lines.get(index);\n var element = cell.element;\n return element.childNodes[2];\n };\n GutterKeyboardHandler.prototype.$findNearestFoldWidget = function (index) {\n if (this.$isFoldWidgetVisible(index))\n return index;\n var i = 0;\n while (index - i > 0 || index + i < this.lines.getLength() - 1) {\n i++;\n if (index - i >= 0 && this.$isFoldWidgetVisible(index - i))\n return index - i;\n if (index + i <= this.lines.getLength() - 1 && this.$isFoldWidgetVisible(index + i))\n return index + i;\n }\n return null;\n };\n GutterKeyboardHandler.prototype.$findNearestAnnotation = function (index) {\n if (this.$isAnnotationVisible(index))\n return index;\n var i = 0;\n while (index - i > 0 || index + i < this.lines.getLength() - 1) {\n i++;\n if (index - i >= 0 && this.$isAnnotationVisible(index - i))\n return index - i;\n if (index + i <= this.lines.getLength() - 1 && this.$isAnnotationVisible(index + i))\n return index + i;\n }\n return null;\n };\n GutterKeyboardHandler.prototype.$focusFoldWidget = function (index) {\n if (index == null)\n return;\n var foldWidget = this.$getFoldWidget(index);\n foldWidget.classList.add(this.editor.renderer.keyboardFocusClassName);\n foldWidget.focus();\n };\n GutterKeyboardHandler.prototype.$focusAnnotation = function (index) {\n if (index == null)\n return;\n var annotation = this.$getAnnotation(index);\n annotation.classList.add(this.editor.renderer.keyboardFocusClassName);\n annotation.focus();\n };\n GutterKeyboardHandler.prototype.$blurFoldWidget = function (index) {\n var foldWidget = this.$getFoldWidget(index);\n foldWidget.classList.remove(this.editor.renderer.keyboardFocusClassName);\n foldWidget.blur();\n };\n GutterKeyboardHandler.prototype.$blurAnnotation = function (index) {\n var annotation = this.$getAnnotation(index);\n annotation.classList.remove(this.editor.renderer.keyboardFocusClassName);\n annotation.blur();\n };\n GutterKeyboardHandler.prototype.$moveFoldWidgetUp = function () {\n var index = this.activeRowIndex;\n while (index > 0) {\n index--;\n if (this.$isFoldWidgetVisible(index)) {\n this.$blurFoldWidget(this.activeRowIndex);\n this.activeRowIndex = index;\n this.$focusFoldWidget(this.activeRowIndex);\n return;\n }\n }\n return;\n };\n GutterKeyboardHandler.prototype.$moveFoldWidgetDown = function () {\n var index = this.activeRowIndex;\n while (index < this.lines.getLength() - 1) {\n index++;\n if (this.$isFoldWidgetVisible(index)) {\n this.$blurFoldWidget(this.activeRowIndex);\n this.activeRowIndex = index;\n this.$focusFoldWidget(this.activeRowIndex);\n return;\n }\n }\n return;\n };\n GutterKeyboardHandler.prototype.$moveAnnotationUp = function () {\n var index = this.activeRowIndex;\n while (index > 0) {\n index--;\n if (this.$isAnnotationVisible(index)) {\n this.$blurAnnotation(this.activeRowIndex);\n this.activeRowIndex = index;\n this.$focusAnnotation(this.activeRowIndex);\n return;\n }\n }\n return;\n };\n GutterKeyboardHandler.prototype.$moveAnnotationDown = function () {\n var index = this.activeRowIndex;\n while (index < this.lines.getLength() - 1) {\n index++;\n if (this.$isAnnotationVisible(index)) {\n this.$blurAnnotation(this.activeRowIndex);\n this.activeRowIndex = index;\n this.$focusAnnotation(this.activeRowIndex);\n return;\n }\n }\n return;\n };\n GutterKeyboardHandler.prototype.$switchLane = function (desinationLane) {\n switch (desinationLane) {\n case \"annotation\":\n if (this.activeLane === \"annotation\") {\n break;\n }\n var annotationIndex = this.$findNearestAnnotation(this.activeRowIndex);\n if (annotationIndex == null) {\n break;\n }\n this.activeLane = \"annotation\";\n this.$blurFoldWidget(this.activeRowIndex);\n this.activeRowIndex = annotationIndex;\n this.$focusAnnotation(this.activeRowIndex);\n break;\n case \"fold\":\n if (this.activeLane === \"fold\") {\n break;\n }\n var foldWidgetIndex = this.$findNearestFoldWidget(this.activeRowIndex);\n if (foldWidgetIndex == null) {\n break;\n }\n this.activeLane = \"fold\";\n this.$blurAnnotation(this.activeRowIndex);\n this.activeRowIndex = foldWidgetIndex;\n this.$focusFoldWidget(this.activeRowIndex);\n break;\n }\n return;\n };\n GutterKeyboardHandler.prototype.$rowIndexToRow = function (index) {\n var cell = this.lines.get(index);\n if (cell)\n return cell.row;\n return null;\n };\n GutterKeyboardHandler.prototype.$rowToRowIndex = function (row) {\n for (var i = 0; i < this.lines.getLength(); i++) {\n var cell = this.lines.get(i);\n if (cell.row == row)\n return i;\n }\n return null;\n };\n return GutterKeyboardHandler;\n}());\nexports.GutterKeyboardHandler = GutterKeyboardHandler;\nvar GutterKeyboardEvent = /** @class */ (function () {\n function GutterKeyboardEvent(domEvent, gutterKeyboardHandler) {\n this.gutterKeyboardHandler = gutterKeyboardHandler;\n this.domEvent = domEvent;\n }\n GutterKeyboardEvent.prototype.getKey = function () {\n return keys.keyCodeToString(this.domEvent.keyCode);\n };\n GutterKeyboardEvent.prototype.getRow = function () {\n return this.gutterKeyboardHandler.$rowIndexToRow(this.gutterKeyboardHandler.activeRowIndex);\n };\n GutterKeyboardEvent.prototype.isInAnnotationLane = function () {\n return this.gutterKeyboardHandler.activeLane === \"annotation\";\n };\n GutterKeyboardEvent.prototype.isInFoldLane = function () {\n return this.gutterKeyboardHandler.activeLane === \"fold\";\n };\n return GutterKeyboardEvent;\n}());\nexports.GutterKeyboardEvent = GutterKeyboardEvent;\n\n});\n\nace.define(\"ace/editor\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/dom\",\"ace/lib/lang\",\"ace/lib/useragent\",\"ace/keyboard/textinput\",\"ace/mouse/mouse_handler\",\"ace/mouse/fold_handler\",\"ace/keyboard/keybinding\",\"ace/edit_session\",\"ace/search\",\"ace/range\",\"ace/lib/event_emitter\",\"ace/commands/command_manager\",\"ace/commands/default_commands\",\"ace/config\",\"ace/token_iterator\",\"ace/line_widgets\",\"ace/keyboard/gutter_handler\",\"ace/config\",\"ace/clipboard\",\"ace/lib/keys\"], function(require, exports, module){\"use strict\";\nvar __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar oop = require(\"./lib/oop\");\nvar dom = require(\"./lib/dom\");\nvar lang = require(\"./lib/lang\");\nvar useragent = require(\"./lib/useragent\");\nvar TextInput = require(\"./keyboard/textinput\").TextInput;\nvar MouseHandler = require(\"./mouse/mouse_handler\").MouseHandler;\nvar FoldHandler = require(\"./mouse/fold_handler\").FoldHandler;\nvar KeyBinding = require(\"./keyboard/keybinding\").KeyBinding;\nvar EditSession = require(\"./edit_session\").EditSession;\nvar Search = require(\"./search\").Search;\nvar Range = require(\"./range\").Range;\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar CommandManager = require(\"./commands/command_manager\").CommandManager;\nvar defaultCommands = require(\"./commands/default_commands\").commands;\nvar config = require(\"./config\");\nvar TokenIterator = require(\"./token_iterator\").TokenIterator;\nvar LineWidgets = require(\"./line_widgets\").LineWidgets;\nvar GutterKeyboardHandler = require(\"./keyboard/gutter_handler\").GutterKeyboardHandler;\nvar nls = require(\"./config\").nls;\nvar clipboard = require(\"./clipboard\");\nvar keys = require('./lib/keys');\nvar Editor = /** @class */ (function () {\n function Editor(renderer, session, options) {\n this.$toDestroy = [];\n var container = renderer.getContainerElement();\n this.container = container;\n this.renderer = renderer;\n this.id = \"editor\" + (++Editor.$uid);\n this.commands = new CommandManager(useragent.isMac ? \"mac\" : \"win\", defaultCommands);\n if (typeof document == \"object\") {\n this.textInput = new TextInput(renderer.getTextAreaContainer(), this);\n this.renderer.textarea = this.textInput.getElement();\n this.$mouseHandler = new MouseHandler(this);\n new FoldHandler(this);\n }\n this.keyBinding = new KeyBinding(this);\n this.$search = new Search().set({\n wrap: true\n });\n this.$historyTracker = this.$historyTracker.bind(this);\n this.commands.on(\"exec\", this.$historyTracker);\n this.$initOperationListeners();\n this._$emitInputEvent = lang.delayedCall(function () {\n this._signal(\"input\", {});\n if (this.session && !this.session.destroyed)\n this.session.bgTokenizer.scheduleStart();\n }.bind(this));\n this.on(\"change\", function (_, _self) {\n _self._$emitInputEvent.schedule(31);\n });\n this.setSession(session || options && options.session || new EditSession(\"\"));\n config.resetOptions(this);\n if (options)\n this.setOptions(options);\n config._signal(\"editor\", this);\n }\n Editor.prototype.$initOperationListeners = function () {\n this.commands.on(\"exec\", this.startOperation.bind(this), true);\n this.commands.on(\"afterExec\", this.endOperation.bind(this), true);\n this.$opResetTimer = lang.delayedCall(this.endOperation.bind(this, true));\n this.on(\"change\", function () {\n if (!this.curOp) {\n this.startOperation();\n this.curOp.selectionBefore = this.$lastSel;\n }\n this.curOp.docChanged = true;\n }.bind(this), true);\n this.on(\"changeSelection\", function () {\n if (!this.curOp) {\n this.startOperation();\n this.curOp.selectionBefore = this.$lastSel;\n }\n this.curOp.selectionChanged = true;\n }.bind(this), true);\n };\n Editor.prototype.startOperation = function (commandEvent) {\n if (this.curOp) {\n if (!commandEvent || this.curOp.command)\n return;\n this.prevOp = this.curOp;\n }\n if (!commandEvent) {\n this.previousCommand = null;\n commandEvent = {};\n }\n this.$opResetTimer.schedule();\n this.curOp = this.session.curOp = {\n command: commandEvent.command || {},\n args: commandEvent.args,\n scrollTop: this.renderer.scrollTop\n };\n this.curOp.selectionBefore = this.selection.toJSON();\n };\n Editor.prototype.endOperation = function (e) {\n if (this.curOp && this.session) {\n if (e && e.returnValue === false || !this.session)\n return (this.curOp = null);\n if (e == true && this.curOp.command && this.curOp.command.name == \"mouse\")\n return;\n this._signal(\"beforeEndOperation\");\n if (!this.curOp)\n return;\n var command = this.curOp.command;\n var scrollIntoView = command && command.scrollIntoView;\n if (scrollIntoView) {\n switch (scrollIntoView) {\n case \"center-animate\":\n scrollIntoView = \"animate\";\n case \"center\":\n this.renderer.scrollCursorIntoView(null, 0.5);\n break;\n case \"animate\":\n case \"cursor\":\n this.renderer.scrollCursorIntoView();\n break;\n case \"selectionPart\":\n var range = this.selection.getRange();\n var config = this.renderer.layerConfig;\n if (range.start.row >= config.lastRow || range.end.row <= config.firstRow) {\n this.renderer.scrollSelectionIntoView(this.selection.anchor, this.selection.lead);\n }\n break;\n default:\n break;\n }\n if (scrollIntoView == \"animate\")\n this.renderer.animateScrolling(this.curOp.scrollTop);\n }\n var sel = this.selection.toJSON();\n this.curOp.selectionAfter = sel;\n this.$lastSel = this.selection.toJSON();\n this.session.getUndoManager().addSelection(sel);\n this.prevOp = this.curOp;\n this.curOp = null;\n }\n };\n Editor.prototype.$historyTracker = function (e) {\n if (!this.$mergeUndoDeltas)\n return;\n var prev = this.prevOp;\n var mergeableCommands = this.$mergeableCommands;\n var shouldMerge = prev.command && (e.command.name == prev.command.name);\n if (e.command.name == \"insertstring\") {\n var text = e.args;\n if (this.mergeNextCommand === undefined)\n this.mergeNextCommand = true;\n shouldMerge = shouldMerge\n && this.mergeNextCommand // previous command allows to coalesce with\n && (!/\\s/.test(text) || /\\s/.test(prev.args)); // previous insertion was of same type\n this.mergeNextCommand = true;\n }\n else {\n shouldMerge = shouldMerge\n && mergeableCommands.indexOf(e.command.name) !== -1; // the command is mergeable\n }\n if (this.$mergeUndoDeltas != \"always\"\n && Date.now() - this.sequenceStartTime > 2000) {\n shouldMerge = false; // the sequence is too long\n }\n if (shouldMerge)\n this.session.mergeUndoDeltas = true;\n else if (mergeableCommands.indexOf(e.command.name) !== -1)\n this.sequenceStartTime = Date.now();\n };\n Editor.prototype.setKeyboardHandler = function (keyboardHandler, cb) {\n if (keyboardHandler && typeof keyboardHandler === \"string\" && keyboardHandler != \"ace\") {\n this.$keybindingId = keyboardHandler;\n var _self = this;\n config.loadModule([\"keybinding\", keyboardHandler], function (module) {\n if (_self.$keybindingId == keyboardHandler)\n _self.keyBinding.setKeyboardHandler(module && module.handler);\n cb && cb();\n });\n }\n else {\n this.$keybindingId = null;\n this.keyBinding.setKeyboardHandler(keyboardHandler);\n cb && cb();\n }\n };\n Editor.prototype.getKeyboardHandler = function () {\n return this.keyBinding.getKeyboardHandler();\n };\n Editor.prototype.setSession = function (session) {\n if (this.session == session)\n return;\n if (this.curOp)\n this.endOperation();\n this.curOp = {};\n var oldSession = this.session;\n if (oldSession) {\n this.session.off(\"change\", this.$onDocumentChange);\n this.session.off(\"changeMode\", this.$onChangeMode);\n this.session.off(\"tokenizerUpdate\", this.$onTokenizerUpdate);\n this.session.off(\"changeTabSize\", this.$onChangeTabSize);\n this.session.off(\"changeWrapLimit\", this.$onChangeWrapLimit);\n this.session.off(\"changeWrapMode\", this.$onChangeWrapMode);\n this.session.off(\"changeFold\", this.$onChangeFold);\n this.session.off(\"changeFrontMarker\", this.$onChangeFrontMarker);\n this.session.off(\"changeBackMarker\", this.$onChangeBackMarker);\n this.session.off(\"changeBreakpoint\", this.$onChangeBreakpoint);\n this.session.off(\"changeAnnotation\", this.$onChangeAnnotation);\n this.session.off(\"changeOverwrite\", this.$onCursorChange);\n this.session.off(\"changeScrollTop\", this.$onScrollTopChange);\n this.session.off(\"changeScrollLeft\", this.$onScrollLeftChange);\n var selection = this.session.getSelection();\n selection.off(\"changeCursor\", this.$onCursorChange);\n selection.off(\"changeSelection\", this.$onSelectionChange);\n }\n this.session = session;\n if (session) {\n this.$onDocumentChange = this.onDocumentChange.bind(this);\n session.on(\"change\", this.$onDocumentChange);\n this.renderer.setSession(session);\n this.$onChangeMode = this.onChangeMode.bind(this);\n session.on(\"changeMode\", this.$onChangeMode);\n this.$onTokenizerUpdate = this.onTokenizerUpdate.bind(this);\n session.on(\"tokenizerUpdate\", this.$onTokenizerUpdate);\n this.$onChangeTabSize = this.renderer.onChangeTabSize.bind(this.renderer);\n session.on(\"changeTabSize\", this.$onChangeTabSize);\n this.$onChangeWrapLimit = this.onChangeWrapLimit.bind(this);\n session.on(\"changeWrapLimit\", this.$onChangeWrapLimit);\n this.$onChangeWrapMode = this.onChangeWrapMode.bind(this);\n session.on(\"changeWrapMode\", this.$onChangeWrapMode);\n this.$onChangeFold = this.onChangeFold.bind(this);\n session.on(\"changeFold\", this.$onChangeFold);\n this.$onChangeFrontMarker = this.onChangeFrontMarker.bind(this);\n this.session.on(\"changeFrontMarker\", this.$onChangeFrontMarker);\n this.$onChangeBackMarker = this.onChangeBackMarker.bind(this);\n this.session.on(\"changeBackMarker\", this.$onChangeBackMarker);\n this.$onChangeBreakpoint = this.onChangeBreakpoint.bind(this);\n this.session.on(\"changeBreakpoint\", this.$onChangeBreakpoint);\n this.$onChangeAnnotation = this.onChangeAnnotation.bind(this);\n this.session.on(\"changeAnnotation\", this.$onChangeAnnotation);\n this.$onCursorChange = this.onCursorChange.bind(this);\n this.session.on(\"changeOverwrite\", this.$onCursorChange);\n this.$onScrollTopChange = this.onScrollTopChange.bind(this);\n this.session.on(\"changeScrollTop\", this.$onScrollTopChange);\n this.$onScrollLeftChange = this.onScrollLeftChange.bind(this);\n this.session.on(\"changeScrollLeft\", this.$onScrollLeftChange);\n this.selection = session.getSelection();\n this.selection.on(\"changeCursor\", this.$onCursorChange);\n this.$onSelectionChange = this.onSelectionChange.bind(this);\n this.selection.on(\"changeSelection\", this.$onSelectionChange);\n this.onChangeMode();\n this.onCursorChange();\n this.onScrollTopChange();\n this.onScrollLeftChange();\n this.onSelectionChange();\n this.onChangeFrontMarker();\n this.onChangeBackMarker();\n this.onChangeBreakpoint();\n this.onChangeAnnotation();\n this.session.getUseWrapMode() && this.renderer.adjustWrapLimit();\n this.renderer.updateFull();\n }\n else {\n this.selection = null;\n this.renderer.setSession(session);\n }\n this._signal(\"changeSession\", {\n session: session,\n oldSession: oldSession\n });\n this.curOp = null;\n oldSession && oldSession._signal(\"changeEditor\", { oldEditor: this });\n session && session._signal(\"changeEditor\", { editor: this });\n if (session && !session.destroyed)\n session.bgTokenizer.scheduleStart();\n };\n Editor.prototype.getSession = function () {\n return this.session;\n };\n Editor.prototype.setValue = function (val, cursorPos) {\n this.session.doc.setValue(val);\n if (!cursorPos)\n this.selectAll();\n else if (cursorPos == 1)\n this.navigateFileEnd();\n else if (cursorPos == -1)\n this.navigateFileStart();\n return val;\n };\n Editor.prototype.getValue = function () {\n return this.session.getValue();\n };\n Editor.prototype.getSelection = function () {\n return this.selection;\n };\n Editor.prototype.resize = function (force) {\n this.renderer.onResize(force);\n };\n Editor.prototype.setTheme = function (theme, cb) {\n this.renderer.setTheme(theme, cb);\n };\n Editor.prototype.getTheme = function () {\n return this.renderer.getTheme();\n };\n Editor.prototype.setStyle = function (style) {\n this.renderer.setStyle(style);\n };\n Editor.prototype.unsetStyle = function (style) {\n this.renderer.unsetStyle(style);\n };\n Editor.prototype.getFontSize = function () {\n return this.getOption(\"fontSize\") ||\n dom.computedStyle(this.container).fontSize;\n };\n Editor.prototype.setFontSize = function (size) {\n this.setOption(\"fontSize\", size);\n };\n Editor.prototype.$highlightBrackets = function () {\n if (this.$highlightPending) {\n return;\n }\n var self = this;\n this.$highlightPending = true;\n setTimeout(function () {\n self.$highlightPending = false;\n var session = self.session;\n if (!session || session.destroyed)\n return;\n if (session.$bracketHighlight) {\n session.$bracketHighlight.markerIds.forEach(function (id) {\n session.removeMarker(id);\n });\n session.$bracketHighlight = null;\n }\n var pos = self.getCursorPosition();\n var handler = self.getKeyboardHandler();\n var isBackwards = handler && handler.$getDirectionForHighlight && handler.$getDirectionForHighlight(self);\n var ranges = session.getMatchingBracketRanges(pos, isBackwards);\n if (!ranges) {\n var iterator = new TokenIterator(session, pos.row, pos.column);\n var token = iterator.getCurrentToken();\n if (token && /\\b(?:tag-open|tag-name)/.test(token.type)) {\n var tagNamesRanges = session.getMatchingTags(pos);\n if (tagNamesRanges)\n ranges = [tagNamesRanges.openTagName, tagNamesRanges.closeTagName];\n }\n }\n if (!ranges && session.$mode.getMatching)\n ranges = session.$mode.getMatching(self.session);\n if (!ranges) {\n if (self.getHighlightIndentGuides())\n self.renderer.$textLayer.$highlightIndentGuide();\n return;\n }\n var markerType = \"ace_bracket\";\n if (!Array.isArray(ranges)) {\n ranges = [ranges];\n }\n else if (ranges.length == 1) {\n markerType = \"ace_error_bracket\";\n }\n if (ranges.length == 2) {\n if (Range.comparePoints(ranges[0].end, ranges[1].start) == 0)\n ranges = [Range.fromPoints(ranges[0].start, ranges[1].end)];\n else if (Range.comparePoints(ranges[0].start, ranges[1].end) == 0)\n ranges = [Range.fromPoints(ranges[1].start, ranges[0].end)];\n }\n session.$bracketHighlight = {\n ranges: ranges,\n markerIds: ranges.map(function (range) {\n return session.addMarker(range, markerType, \"text\");\n })\n };\n if (self.getHighlightIndentGuides())\n self.renderer.$textLayer.$highlightIndentGuide();\n }, 50);\n };\n Editor.prototype.focus = function () {\n this.textInput.focus();\n };\n Editor.prototype.isFocused = function () {\n return this.textInput.isFocused();\n };\n Editor.prototype.blur = function () {\n this.textInput.blur();\n };\n Editor.prototype.onFocus = function (e) {\n if (this.$isFocused)\n return;\n this.$isFocused = true;\n this.renderer.showCursor();\n this.renderer.visualizeFocus();\n this._emit(\"focus\", e);\n };\n Editor.prototype.onBlur = function (e) {\n if (!this.$isFocused)\n return;\n this.$isFocused = false;\n this.renderer.hideCursor();\n this.renderer.visualizeBlur();\n this._emit(\"blur\", e);\n };\n Editor.prototype.$cursorChange = function () {\n this.renderer.updateCursor();\n this.$highlightBrackets();\n this.$updateHighlightActiveLine();\n };\n Editor.prototype.onDocumentChange = function (delta) {\n var wrap = this.session.$useWrapMode;\n var lastRow = (delta.start.row == delta.end.row ? delta.end.row : Infinity);\n this.renderer.updateLines(delta.start.row, lastRow, wrap);\n this._signal(\"change\", delta);\n this.$cursorChange();\n };\n Editor.prototype.onTokenizerUpdate = function (e) {\n var rows = e.data;\n this.renderer.updateLines(rows.first, rows.last);\n };\n Editor.prototype.onScrollTopChange = function () {\n this.renderer.scrollToY(this.session.getScrollTop());\n };\n Editor.prototype.onScrollLeftChange = function () {\n this.renderer.scrollToX(this.session.getScrollLeft());\n };\n Editor.prototype.onCursorChange = function () {\n this.$cursorChange();\n this._signal(\"changeSelection\");\n };\n Editor.prototype.$updateHighlightActiveLine = function () {\n var session = this.getSession();\n var highlight;\n if (this.$highlightActiveLine) {\n if (this.$selectionStyle != \"line\" || !this.selection.isMultiLine())\n highlight = this.getCursorPosition();\n if (this.renderer.theme && this.renderer.theme.$selectionColorConflict && !this.selection.isEmpty())\n highlight = false;\n if (this.renderer.$maxLines && this.session.getLength() === 1 && !(this.renderer.$minLines > 1))\n highlight = false;\n }\n if (session.$highlightLineMarker && !highlight) {\n session.removeMarker(session.$highlightLineMarker.id);\n session.$highlightLineMarker = null;\n }\n else if (!session.$highlightLineMarker && highlight) {\n var range = new Range(highlight.row, highlight.column, highlight.row, Infinity);\n range.id = session.addMarker(range, \"ace_active-line\", \"screenLine\");\n session.$highlightLineMarker = range;\n }\n else if (highlight) {\n session.$highlightLineMarker.start.row = highlight.row;\n session.$highlightLineMarker.end.row = highlight.row;\n session.$highlightLineMarker.start.column = highlight.column;\n session._signal(\"changeBackMarker\");\n }\n };\n Editor.prototype.onSelectionChange = function (e) {\n var session = this.session;\n if (session.$selectionMarker) {\n session.removeMarker(session.$selectionMarker);\n }\n session.$selectionMarker = null;\n if (!this.selection.isEmpty()) {\n var range = this.selection.getRange();\n var style = this.getSelectionStyle();\n session.$selectionMarker = session.addMarker(range, \"ace_selection\", style);\n }\n else {\n this.$updateHighlightActiveLine();\n }\n var re = this.$highlightSelectedWord && this.$getSelectionHighLightRegexp();\n this.session.highlight(re);\n this._signal(\"changeSelection\");\n };\n Editor.prototype.$getSelectionHighLightRegexp = function () {\n var session = this.session;\n var selection = this.getSelectionRange();\n if (selection.isEmpty() || selection.isMultiLine())\n return;\n var startColumn = selection.start.column;\n var endColumn = selection.end.column;\n var line = session.getLine(selection.start.row);\n var needle = line.substring(startColumn, endColumn);\n if (needle.length > 5000 || !/[\\w\\d]/.test(needle))\n return;\n var re = this.$search.$assembleRegExp({\n wholeWord: true,\n caseSensitive: true,\n needle: needle\n });\n var wordWithBoundary = line.substring(startColumn - 1, endColumn + 1);\n if (!re.test(wordWithBoundary))\n return;\n return re;\n };\n Editor.prototype.onChangeFrontMarker = function () {\n this.renderer.updateFrontMarkers();\n };\n Editor.prototype.onChangeBackMarker = function () {\n this.renderer.updateBackMarkers();\n };\n Editor.prototype.onChangeBreakpoint = function () {\n this.renderer.updateBreakpoints();\n };\n Editor.prototype.onChangeAnnotation = function () {\n this.renderer.setAnnotations(this.session.getAnnotations());\n };\n Editor.prototype.onChangeMode = function (e) {\n this.renderer.updateText();\n this._emit(\"changeMode\", e);\n };\n Editor.prototype.onChangeWrapLimit = function () {\n this.renderer.updateFull();\n };\n Editor.prototype.onChangeWrapMode = function () {\n this.renderer.onResize(true);\n };\n Editor.prototype.onChangeFold = function () {\n this.$updateHighlightActiveLine();\n this.renderer.updateFull();\n };\n Editor.prototype.getSelectedText = function () {\n return this.session.getTextRange(this.getSelectionRange());\n };\n Editor.prototype.getCopyText = function () {\n var text = this.getSelectedText();\n var nl = this.session.doc.getNewLineCharacter();\n var copyLine = false;\n if (!text && this.$copyWithEmptySelection) {\n copyLine = true;\n var ranges = this.selection.getAllRanges();\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i];\n if (i && ranges[i - 1].start.row == range.start.row)\n continue;\n text += this.session.getLine(range.start.row) + nl;\n }\n }\n var e = { text: text };\n this._signal(\"copy\", e);\n clipboard.lineMode = copyLine ? e.text : false;\n return e.text;\n };\n Editor.prototype.onCopy = function () {\n this.commands.exec(\"copy\", this);\n };\n Editor.prototype.onCut = function () {\n this.commands.exec(\"cut\", this);\n };\n Editor.prototype.onPaste = function (text, event) {\n var e = { text: text, event: event };\n this.commands.exec(\"paste\", this, e);\n };\n Editor.prototype.$handlePaste = function (e) {\n if (typeof e == \"string\")\n e = { text: e };\n this._signal(\"paste\", e);\n var text = e.text;\n var lineMode = text === clipboard.lineMode;\n var session = this.session;\n if (!this.inMultiSelectMode || this.inVirtualSelectionMode) {\n if (lineMode)\n session.insert({ row: this.selection.lead.row, column: 0 }, text);\n else\n this.insert(text);\n }\n else if (lineMode) {\n this.selection.rangeList.ranges.forEach(function (range) {\n session.insert({ row: range.start.row, column: 0 }, text);\n });\n }\n else {\n var lines = text.split(/\\r\\n|\\r|\\n/);\n var ranges = this.selection.rangeList.ranges;\n var isFullLine = lines.length == 2 && (!lines[0] || !lines[1]);\n if (lines.length != ranges.length || isFullLine)\n return this.commands.exec(\"insertstring\", this, text);\n for (var i = ranges.length; i--;) {\n var range = ranges[i];\n if (!range.isEmpty())\n session.remove(range);\n session.insert(range.start, lines[i]);\n }\n }\n };\n Editor.prototype.execCommand = function (command, args) {\n return this.commands.exec(command, this, args);\n };\n Editor.prototype.insert = function (text, pasted) {\n var session = this.session;\n var mode = session.getMode();\n var cursor = this.getCursorPosition();\n if (this.getBehavioursEnabled() && !pasted) {\n var transform = mode.transformAction(session.getState(cursor.row), 'insertion', this, session, text);\n if (transform) {\n if (text !== transform.text) {\n if (!this.inVirtualSelectionMode) {\n this.session.mergeUndoDeltas = false;\n this.mergeNextCommand = false;\n }\n }\n text = transform.text;\n }\n }\n if (text == \"\\t\")\n text = this.session.getTabString();\n if (!this.selection.isEmpty()) {\n var range = this.getSelectionRange();\n cursor = this.session.remove(range);\n this.clearSelection();\n }\n else if (this.session.getOverwrite() && text.indexOf(\"\\n\") == -1) {\n var range = new Range.fromPoints(cursor, cursor);\n range.end.column += text.length;\n this.session.remove(range);\n }\n if (text == \"\\n\" || text == \"\\r\\n\") {\n var line = session.getLine(cursor.row);\n if (cursor.column > line.search(/\\S|$/)) {\n var d = line.substr(cursor.column).search(/\\S|$/);\n session.doc.removeInLine(cursor.row, cursor.column, cursor.column + d);\n }\n }\n this.clearSelection();\n var start = cursor.column;\n var lineState = session.getState(cursor.row);\n var line = session.getLine(cursor.row);\n var shouldOutdent = mode.checkOutdent(lineState, line, text);\n session.insert(cursor, text);\n if (transform && transform.selection) {\n if (transform.selection.length == 2) { // Transform relative to the current column\n this.selection.setSelectionRange(new Range(cursor.row, start + transform.selection[0], cursor.row, start + transform.selection[1]));\n }\n else { // Transform relative to the current row.\n this.selection.setSelectionRange(new Range(cursor.row + transform.selection[0], transform.selection[1], cursor.row + transform.selection[2], transform.selection[3]));\n }\n }\n if (this.$enableAutoIndent) {\n if (session.getDocument().isNewLine(text)) {\n var lineIndent = mode.getNextLineIndent(lineState, line.slice(0, cursor.column), session.getTabString());\n session.insert({ row: cursor.row + 1, column: 0 }, lineIndent);\n }\n if (shouldOutdent)\n mode.autoOutdent(lineState, session, cursor.row);\n }\n };\n Editor.prototype.autoIndent = function () {\n var session = this.session;\n var mode = session.getMode();\n var startRow, endRow;\n if (this.selection.isEmpty()) {\n startRow = 0;\n endRow = session.doc.getLength() - 1;\n }\n else {\n var selectedRange = this.getSelectionRange();\n startRow = selectedRange.start.row;\n endRow = selectedRange.end.row;\n }\n var prevLineState = \"\";\n var prevLine = \"\";\n var lineIndent = \"\";\n var line, currIndent, range;\n var tab = session.getTabString();\n for (var row = startRow; row <= endRow; row++) {\n if (row > 0) {\n prevLineState = session.getState(row - 1);\n prevLine = session.getLine(row - 1);\n lineIndent = mode.getNextLineIndent(prevLineState, prevLine, tab);\n }\n line = session.getLine(row);\n currIndent = mode.$getIndent(line);\n if (lineIndent !== currIndent) {\n if (currIndent.length > 0) {\n range = new Range(row, 0, row, currIndent.length);\n session.remove(range);\n }\n if (lineIndent.length > 0) {\n session.insert({ row: row, column: 0 }, lineIndent);\n }\n }\n mode.autoOutdent(prevLineState, session, row);\n }\n };\n Editor.prototype.onTextInput = function (text, composition) {\n if (!composition)\n return this.keyBinding.onTextInput(text);\n this.startOperation({ command: { name: \"insertstring\" } });\n var applyComposition = this.applyComposition.bind(this, text, composition);\n if (this.selection.rangeCount)\n this.forEachSelection(applyComposition);\n else\n applyComposition();\n this.endOperation();\n };\n Editor.prototype.applyComposition = function (text, composition) {\n if (composition.extendLeft || composition.extendRight) {\n var r = this.selection.getRange();\n r.start.column -= composition.extendLeft;\n r.end.column += composition.extendRight;\n if (r.start.column < 0) {\n r.start.row--;\n r.start.column += this.session.getLine(r.start.row).length + 1;\n }\n this.selection.setRange(r);\n if (!text && !r.isEmpty())\n this.remove();\n }\n if (text || !this.selection.isEmpty())\n this.insert(text, true);\n if (composition.restoreStart || composition.restoreEnd) {\n var r = this.selection.getRange();\n r.start.column -= composition.restoreStart;\n r.end.column -= composition.restoreEnd;\n this.selection.setRange(r);\n }\n };\n Editor.prototype.onCommandKey = function (e, hashId, keyCode) {\n return this.keyBinding.onCommandKey(e, hashId, keyCode);\n };\n Editor.prototype.setOverwrite = function (overwrite) {\n this.session.setOverwrite(overwrite);\n };\n Editor.prototype.getOverwrite = function () {\n return this.session.getOverwrite();\n };\n Editor.prototype.toggleOverwrite = function () {\n this.session.toggleOverwrite();\n };\n Editor.prototype.setScrollSpeed = function (speed) {\n this.setOption(\"scrollSpeed\", speed);\n };\n Editor.prototype.getScrollSpeed = function () {\n return this.getOption(\"scrollSpeed\");\n };\n Editor.prototype.setDragDelay = function (dragDelay) {\n this.setOption(\"dragDelay\", dragDelay);\n };\n Editor.prototype.getDragDelay = function () {\n return this.getOption(\"dragDelay\");\n };\n Editor.prototype.setSelectionStyle = function (val) {\n this.setOption(\"selectionStyle\", val);\n };\n Editor.prototype.getSelectionStyle = function () {\n return this.getOption(\"selectionStyle\");\n };\n Editor.prototype.setHighlightActiveLine = function (shouldHighlight) {\n this.setOption(\"highlightActiveLine\", shouldHighlight);\n };\n Editor.prototype.getHighlightActiveLine = function () {\n return this.getOption(\"highlightActiveLine\");\n };\n Editor.prototype.setHighlightGutterLine = function (shouldHighlight) {\n this.setOption(\"highlightGutterLine\", shouldHighlight);\n };\n Editor.prototype.getHighlightGutterLine = function () {\n return this.getOption(\"highlightGutterLine\");\n };\n Editor.prototype.setHighlightSelectedWord = function (shouldHighlight) {\n this.setOption(\"highlightSelectedWord\", shouldHighlight);\n };\n Editor.prototype.getHighlightSelectedWord = function () {\n return this.$highlightSelectedWord;\n };\n Editor.prototype.setAnimatedScroll = function (shouldAnimate) {\n this.renderer.setAnimatedScroll(shouldAnimate);\n };\n Editor.prototype.getAnimatedScroll = function () {\n return this.renderer.getAnimatedScroll();\n };\n Editor.prototype.setShowInvisibles = function (showInvisibles) {\n this.renderer.setShowInvisibles(showInvisibles);\n };\n Editor.prototype.getShowInvisibles = function () {\n return this.renderer.getShowInvisibles();\n };\n Editor.prototype.setDisplayIndentGuides = function (display) {\n this.renderer.setDisplayIndentGuides(display);\n };\n Editor.prototype.getDisplayIndentGuides = function () {\n return this.renderer.getDisplayIndentGuides();\n };\n Editor.prototype.setHighlightIndentGuides = function (highlight) {\n this.renderer.setHighlightIndentGuides(highlight);\n };\n Editor.prototype.getHighlightIndentGuides = function () {\n return this.renderer.getHighlightIndentGuides();\n };\n Editor.prototype.setShowPrintMargin = function (showPrintMargin) {\n this.renderer.setShowPrintMargin(showPrintMargin);\n };\n Editor.prototype.getShowPrintMargin = function () {\n return this.renderer.getShowPrintMargin();\n };\n Editor.prototype.setPrintMarginColumn = function (showPrintMargin) {\n this.renderer.setPrintMarginColumn(showPrintMargin);\n };\n Editor.prototype.getPrintMarginColumn = function () {\n return this.renderer.getPrintMarginColumn();\n };\n Editor.prototype.setReadOnly = function (readOnly) {\n this.setOption(\"readOnly\", readOnly);\n };\n Editor.prototype.getReadOnly = function () {\n return this.getOption(\"readOnly\");\n };\n Editor.prototype.setBehavioursEnabled = function (enabled) {\n this.setOption(\"behavioursEnabled\", enabled);\n };\n Editor.prototype.getBehavioursEnabled = function () {\n return this.getOption(\"behavioursEnabled\");\n };\n Editor.prototype.setWrapBehavioursEnabled = function (enabled) {\n this.setOption(\"wrapBehavioursEnabled\", enabled);\n };\n Editor.prototype.getWrapBehavioursEnabled = function () {\n return this.getOption(\"wrapBehavioursEnabled\");\n };\n Editor.prototype.setShowFoldWidgets = function (show) {\n this.setOption(\"showFoldWidgets\", show);\n };\n Editor.prototype.getShowFoldWidgets = function () {\n return this.getOption(\"showFoldWidgets\");\n };\n Editor.prototype.setFadeFoldWidgets = function (fade) {\n this.setOption(\"fadeFoldWidgets\", fade);\n };\n Editor.prototype.getFadeFoldWidgets = function () {\n return this.getOption(\"fadeFoldWidgets\");\n };\n Editor.prototype.remove = function (dir) {\n if (this.selection.isEmpty()) {\n if (dir == \"left\")\n this.selection.selectLeft();\n else\n this.selection.selectRight();\n }\n var range = this.getSelectionRange();\n if (this.getBehavioursEnabled()) {\n var session = this.session;\n var state = session.getState(range.start.row);\n var new_range = session.getMode().transformAction(state, 'deletion', this, session, range);\n if (range.end.column === 0) {\n var text = session.getTextRange(range);\n if (text[text.length - 1] == \"\\n\") {\n var line = session.getLine(range.end.row);\n if (/^\\s+$/.test(line)) {\n range.end.column = line.length;\n }\n }\n }\n if (new_range)\n range = new_range;\n }\n this.session.remove(range);\n this.clearSelection();\n };\n Editor.prototype.removeWordRight = function () {\n if (this.selection.isEmpty())\n this.selection.selectWordRight();\n this.session.remove(this.getSelectionRange());\n this.clearSelection();\n };\n Editor.prototype.removeWordLeft = function () {\n if (this.selection.isEmpty())\n this.selection.selectWordLeft();\n this.session.remove(this.getSelectionRange());\n this.clearSelection();\n };\n Editor.prototype.removeToLineStart = function () {\n if (this.selection.isEmpty())\n this.selection.selectLineStart();\n if (this.selection.isEmpty())\n this.selection.selectLeft();\n this.session.remove(this.getSelectionRange());\n this.clearSelection();\n };\n Editor.prototype.removeToLineEnd = function () {\n if (this.selection.isEmpty())\n this.selection.selectLineEnd();\n var range = this.getSelectionRange();\n if (range.start.column == range.end.column && range.start.row == range.end.row) {\n range.end.column = 0;\n range.end.row++;\n }\n this.session.remove(range);\n this.clearSelection();\n };\n Editor.prototype.splitLine = function () {\n if (!this.selection.isEmpty()) {\n this.session.remove(this.getSelectionRange());\n this.clearSelection();\n }\n var cursor = this.getCursorPosition();\n this.insert(\"\\n\");\n this.moveCursorToPosition(cursor);\n };\n Editor.prototype.setGhostText = function (text, position) {\n if (!this.session.widgetManager) {\n this.session.widgetManager = new LineWidgets(this.session);\n this.session.widgetManager.attach(this);\n }\n this.renderer.setGhostText(text, position);\n };\n Editor.prototype.removeGhostText = function () {\n if (!this.session.widgetManager)\n return;\n this.renderer.removeGhostText();\n };\n Editor.prototype.transposeLetters = function () {\n if (!this.selection.isEmpty()) {\n return;\n }\n var cursor = this.getCursorPosition();\n var column = cursor.column;\n if (column === 0)\n return;\n var line = this.session.getLine(cursor.row);\n var swap, range;\n if (column < line.length) {\n swap = line.charAt(column) + line.charAt(column - 1);\n range = new Range(cursor.row, column - 1, cursor.row, column + 1);\n }\n else {\n swap = line.charAt(column - 1) + line.charAt(column - 2);\n range = new Range(cursor.row, column - 2, cursor.row, column);\n }\n this.session.replace(range, swap);\n this.session.selection.moveToPosition(range.end);\n };\n Editor.prototype.toLowerCase = function () {\n var originalRange = this.getSelectionRange();\n if (this.selection.isEmpty()) {\n this.selection.selectWord();\n }\n var range = this.getSelectionRange();\n var text = this.session.getTextRange(range);\n this.session.replace(range, text.toLowerCase());\n this.selection.setSelectionRange(originalRange);\n };\n Editor.prototype.toUpperCase = function () {\n var originalRange = this.getSelectionRange();\n if (this.selection.isEmpty()) {\n this.selection.selectWord();\n }\n var range = this.getSelectionRange();\n var text = this.session.getTextRange(range);\n this.session.replace(range, text.toUpperCase());\n this.selection.setSelectionRange(originalRange);\n };\n Editor.prototype.indent = function () {\n var session = this.session;\n var range = this.getSelectionRange();\n if (range.start.row < range.end.row) {\n var rows = this.$getSelectedRows();\n session.indentRows(rows.first, rows.last, \"\\t\");\n return;\n }\n else if (range.start.column < range.end.column) {\n var text = session.getTextRange(range);\n if (!/^\\s+$/.test(text)) {\n var rows = this.$getSelectedRows();\n session.indentRows(rows.first, rows.last, \"\\t\");\n return;\n }\n }\n var line = session.getLine(range.start.row);\n var position = range.start;\n var size = session.getTabSize();\n var column = session.documentToScreenColumn(position.row, position.column);\n if (this.session.getUseSoftTabs()) {\n var count = (size - column % size);\n var indentString = lang.stringRepeat(\" \", count);\n }\n else {\n var count = column % size;\n while (line[range.start.column - 1] == \" \" && count) {\n range.start.column--;\n count--;\n }\n this.selection.setSelectionRange(range);\n indentString = \"\\t\";\n }\n return this.insert(indentString);\n };\n Editor.prototype.blockIndent = function () {\n var rows = this.$getSelectedRows();\n this.session.indentRows(rows.first, rows.last, \"\\t\");\n };\n Editor.prototype.blockOutdent = function () {\n var selection = this.session.getSelection();\n this.session.outdentRows(selection.getRange());\n };\n Editor.prototype.sortLines = function () {\n var rows = this.$getSelectedRows();\n var session = this.session;\n var lines = [];\n for (var i = rows.first; i <= rows.last; i++)\n lines.push(session.getLine(i));\n lines.sort(function (a, b) {\n if (a.toLowerCase() < b.toLowerCase())\n return -1;\n if (a.toLowerCase() > b.toLowerCase())\n return 1;\n return 0;\n });\n var deleteRange = new Range(0, 0, 0, 0);\n for (var i = rows.first; i <= rows.last; i++) {\n var line = session.getLine(i);\n deleteRange.start.row = i;\n deleteRange.end.row = i;\n deleteRange.end.column = line.length;\n session.replace(deleteRange, lines[i - rows.first]);\n }\n };\n Editor.prototype.toggleCommentLines = function () {\n var state = this.session.getState(this.getCursorPosition().row);\n var rows = this.$getSelectedRows();\n this.session.getMode().toggleCommentLines(state, this.session, rows.first, rows.last);\n };\n Editor.prototype.toggleBlockComment = function () {\n var cursor = this.getCursorPosition();\n var state = this.session.getState(cursor.row);\n var range = this.getSelectionRange();\n this.session.getMode().toggleBlockComment(state, this.session, range, cursor);\n };\n Editor.prototype.getNumberAt = function (row, column) {\n var _numberRx = /[\\-]?[0-9]+(?:\\.[0-9]+)?/g;\n _numberRx.lastIndex = 0;\n var s = this.session.getLine(row);\n while (_numberRx.lastIndex < column) {\n var m = _numberRx.exec(s);\n if (m.index <= column && m.index + m[0].length >= column) {\n var number = {\n value: m[0],\n start: m.index,\n end: m.index + m[0].length\n };\n return number;\n }\n }\n return null;\n };\n Editor.prototype.modifyNumber = function (amount) {\n var row = this.selection.getCursor().row;\n var column = this.selection.getCursor().column;\n var charRange = new Range(row, column - 1, row, column);\n var c = this.session.getTextRange(charRange);\n if (!isNaN(parseFloat(c)) && isFinite(c)) {\n var nr = this.getNumberAt(row, column);\n if (nr) {\n var fp = nr.value.indexOf(\".\") >= 0 ? nr.start + nr.value.indexOf(\".\") + 1 : nr.end;\n var decimals = nr.start + nr.value.length - fp;\n var t = parseFloat(nr.value);\n t *= Math.pow(10, decimals);\n if (fp !== nr.end && column < fp) {\n amount *= Math.pow(10, nr.end - column - 1);\n }\n else {\n amount *= Math.pow(10, nr.end - column);\n }\n t += amount;\n t /= Math.pow(10, decimals);\n var nnr = t.toFixed(decimals);\n var replaceRange = new Range(row, nr.start, row, nr.end);\n this.session.replace(replaceRange, nnr);\n this.moveCursorTo(row, Math.max(nr.start + 1, column + nnr.length - nr.value.length));\n }\n }\n else {\n this.toggleWord();\n }\n };\n Editor.prototype.toggleWord = function () {\n var row = this.selection.getCursor().row;\n var column = this.selection.getCursor().column;\n this.selection.selectWord();\n var currentState = this.getSelectedText();\n var currWordStart = this.selection.getWordRange().start.column;\n var wordParts = currentState.replace(/([a-z]+|[A-Z]+)(?=[A-Z_]|$)/g, '$1 ').split(/\\s/);\n var delta = column - currWordStart - 1;\n if (delta < 0)\n delta = 0;\n var curLength = 0, itLength = 0;\n var that = this;\n if (currentState.match(/[A-Za-z0-9_]+/)) {\n wordParts.forEach(function (item, i) {\n itLength = curLength + item.length;\n if (delta >= curLength && delta <= itLength) {\n currentState = item;\n that.selection.clearSelection();\n that.moveCursorTo(row, curLength + currWordStart);\n that.selection.selectTo(row, itLength + currWordStart);\n }\n curLength = itLength;\n });\n }\n var wordPairs = this.$toggleWordPairs;\n var reg;\n for (var i = 0; i < wordPairs.length; i++) {\n var item = wordPairs[i];\n for (var j = 0; j <= 1; j++) {\n var negate = +!j;\n var firstCondition = currentState.match(new RegExp('^\\\\s?_?(' + lang.escapeRegExp(item[j]) + ')\\\\s?$', 'i'));\n if (firstCondition) {\n var secondCondition = currentState.match(new RegExp('([_]|^|\\\\s)(' + lang.escapeRegExp(firstCondition[1]) + ')($|\\\\s)', 'g'));\n if (secondCondition) {\n reg = currentState.replace(new RegExp(lang.escapeRegExp(item[j]), 'i'), function (result) {\n var res = item[negate];\n if (result.toUpperCase() == result) {\n res = res.toUpperCase();\n }\n else if (result.charAt(0).toUpperCase() == result.charAt(0)) {\n res = res.substr(0, 0) + item[negate].charAt(0).toUpperCase() + res.substr(1);\n }\n return res;\n });\n this.insert(reg);\n reg = \"\";\n }\n }\n }\n }\n };\n Editor.prototype.findLinkAt = function (row, column) {\n var e_1, _a;\n var line = this.session.getLine(row);\n var wordParts = line.split(/((?:https?|ftp):\\/\\/[\\S]+)/);\n var columnPosition = column;\n if (columnPosition < 0)\n columnPosition = 0;\n var previousPosition = 0, currentPosition = 0, match;\n try {\n for (var wordParts_1 = __values(wordParts), wordParts_1_1 = wordParts_1.next(); !wordParts_1_1.done; wordParts_1_1 = wordParts_1.next()) {\n var item = wordParts_1_1.value;\n currentPosition = previousPosition + item.length;\n if (columnPosition >= previousPosition && columnPosition <= currentPosition) {\n if (item.match(/((?:https?|ftp):\\/\\/[\\S]+)/)) {\n match = item.replace(/[\\s:.,'\";}\\]]+$/, \"\");\n break;\n }\n }\n previousPosition = currentPosition;\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (wordParts_1_1 && !wordParts_1_1.done && (_a = wordParts_1.return)) _a.call(wordParts_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return match;\n };\n Editor.prototype.openLink = function () {\n var cursor = this.selection.getCursor();\n var url = this.findLinkAt(cursor.row, cursor.column);\n if (url)\n window.open(url, '_blank');\n return url != null;\n };\n Editor.prototype.removeLines = function () {\n var rows = this.$getSelectedRows();\n this.session.removeFullLines(rows.first, rows.last);\n this.clearSelection();\n };\n Editor.prototype.duplicateSelection = function () {\n var sel = this.selection;\n var doc = this.session;\n var range = sel.getRange();\n var reverse = sel.isBackwards();\n if (range.isEmpty()) {\n var row = range.start.row;\n doc.duplicateLines(row, row);\n }\n else {\n var point = reverse ? range.start : range.end;\n var endPoint = doc.insert(point, doc.getTextRange(range), false);\n range.start = point;\n range.end = endPoint;\n sel.setSelectionRange(range, reverse);\n }\n };\n Editor.prototype.moveLinesDown = function () {\n this.$moveLines(1, false);\n };\n Editor.prototype.moveLinesUp = function () {\n this.$moveLines(-1, false);\n };\n Editor.prototype.moveText = function (range, toPosition, copy) {\n return this.session.moveText(range, toPosition, copy);\n };\n Editor.prototype.copyLinesUp = function () {\n this.$moveLines(-1, true);\n };\n Editor.prototype.copyLinesDown = function () {\n this.$moveLines(1, true);\n };\n Editor.prototype.$moveLines = function (dir, copy) {\n var rows, moved;\n var selection = this.selection;\n if (!selection.inMultiSelectMode || this.inVirtualSelectionMode) {\n var range = selection.toOrientedRange();\n rows = this.$getSelectedRows(range);\n moved = this.session.$moveLines(rows.first, rows.last, copy ? 0 : dir);\n if (copy && dir == -1)\n moved = 0;\n range.moveBy(moved, 0);\n selection.fromOrientedRange(range);\n }\n else {\n var ranges = selection.rangeList.ranges;\n selection.rangeList.detach(this.session);\n this.inVirtualSelectionMode = true;\n var diff = 0;\n var totalDiff = 0;\n var l = ranges.length;\n for (var i = 0; i < l; i++) {\n var rangeIndex = i;\n ranges[i].moveBy(diff, 0);\n rows = this.$getSelectedRows(ranges[i]);\n var first = rows.first;\n var last = rows.last;\n while (++i < l) {\n if (totalDiff)\n ranges[i].moveBy(totalDiff, 0);\n var subRows = this.$getSelectedRows(ranges[i]);\n if (copy && subRows.first != last)\n break;\n else if (!copy && subRows.first > last + 1)\n break;\n last = subRows.last;\n }\n i--;\n diff = this.session.$moveLines(first, last, copy ? 0 : dir);\n if (copy && dir == -1)\n rangeIndex = i + 1;\n while (rangeIndex <= i) {\n ranges[rangeIndex].moveBy(diff, 0);\n rangeIndex++;\n }\n if (!copy)\n diff = 0;\n totalDiff += diff;\n }\n selection.fromOrientedRange(selection.ranges[0]);\n selection.rangeList.attach(this.session);\n this.inVirtualSelectionMode = false;\n }\n };\n Editor.prototype.$getSelectedRows = function (range) {\n range = (range || this.getSelectionRange()).collapseRows();\n return {\n first: this.session.getRowFoldStart(range.start.row),\n last: this.session.getRowFoldEnd(range.end.row)\n };\n };\n Editor.prototype.onCompositionStart = function (compositionState) {\n this.renderer.showComposition(compositionState);\n };\n Editor.prototype.onCompositionUpdate = function (text) {\n this.renderer.setCompositionText(text);\n };\n Editor.prototype.onCompositionEnd = function () {\n this.renderer.hideComposition();\n };\n Editor.prototype.getFirstVisibleRow = function () {\n return this.renderer.getFirstVisibleRow();\n };\n Editor.prototype.getLastVisibleRow = function () {\n return this.renderer.getLastVisibleRow();\n };\n Editor.prototype.isRowVisible = function (row) {\n return (row >= this.getFirstVisibleRow() && row <= this.getLastVisibleRow());\n };\n Editor.prototype.isRowFullyVisible = function (row) {\n return (row >= this.renderer.getFirstFullyVisibleRow() && row <= this.renderer.getLastFullyVisibleRow());\n };\n Editor.prototype.$getVisibleRowCount = function () {\n return this.renderer.getScrollBottomRow() - this.renderer.getScrollTopRow() + 1;\n };\n Editor.prototype.$moveByPage = function (dir, select) {\n var renderer = this.renderer;\n var config = this.renderer.layerConfig;\n var rows = dir * Math.floor(config.height / config.lineHeight);\n if (select === true) {\n this.selection.$moveSelection(function () {\n this.moveCursorBy(rows, 0);\n });\n }\n else if (select === false) {\n this.selection.moveCursorBy(rows, 0);\n this.selection.clearSelection();\n }\n var scrollTop = renderer.scrollTop;\n renderer.scrollBy(0, rows * config.lineHeight);\n if (select != null)\n renderer.scrollCursorIntoView(null, 0.5);\n renderer.animateScrolling(scrollTop);\n };\n Editor.prototype.selectPageDown = function () {\n this.$moveByPage(1, true);\n };\n Editor.prototype.selectPageUp = function () {\n this.$moveByPage(-1, true);\n };\n Editor.prototype.gotoPageDown = function () {\n this.$moveByPage(1, false);\n };\n Editor.prototype.gotoPageUp = function () {\n this.$moveByPage(-1, false);\n };\n Editor.prototype.scrollPageDown = function () {\n this.$moveByPage(1);\n };\n Editor.prototype.scrollPageUp = function () {\n this.$moveByPage(-1);\n };\n Editor.prototype.scrollToRow = function (row) {\n this.renderer.scrollToRow(row);\n };\n Editor.prototype.scrollToLine = function (line, center, animate, callback) {\n this.renderer.scrollToLine(line, center, animate, callback);\n };\n Editor.prototype.centerSelection = function () {\n var range = this.getSelectionRange();\n var pos = {\n row: Math.floor(range.start.row + (range.end.row - range.start.row) / 2),\n column: Math.floor(range.start.column + (range.end.column - range.start.column) / 2)\n };\n this.renderer.alignCursor(pos, 0.5);\n };\n Editor.prototype.getCursorPosition = function () {\n return this.selection.getCursor();\n };\n Editor.prototype.getCursorPositionScreen = function () {\n return this.session.documentToScreenPosition(this.getCursorPosition());\n };\n Editor.prototype.getSelectionRange = function () {\n return this.selection.getRange();\n };\n Editor.prototype.selectAll = function () {\n this.selection.selectAll();\n };\n Editor.prototype.clearSelection = function () {\n this.selection.clearSelection();\n };\n Editor.prototype.moveCursorTo = function (row, column) {\n this.selection.moveCursorTo(row, column);\n };\n Editor.prototype.moveCursorToPosition = function (pos) {\n this.selection.moveCursorToPosition(pos);\n };\n Editor.prototype.jumpToMatching = function (select, expand) {\n var cursor = this.getCursorPosition();\n var iterator = new TokenIterator(this.session, cursor.row, cursor.column);\n var prevToken = iterator.getCurrentToken();\n var tokenCount = 0;\n if (prevToken && prevToken.type.indexOf('tag-name') !== -1) {\n prevToken = iterator.stepBackward();\n }\n var token = prevToken || iterator.stepForward();\n if (!token)\n return;\n var matchType;\n var found = false;\n var depth = {};\n var i = cursor.column - token.start;\n var bracketType;\n var brackets = {\n \")\": \"(\",\n \"(\": \"(\",\n \"]\": \"[\",\n \"[\": \"[\",\n \"{\": \"{\",\n \"}\": \"{\"\n };\n do {\n if (token.value.match(/[{}()\\[\\]]/g)) {\n for (; i < token.value.length && !found; i++) {\n if (!brackets[token.value[i]]) {\n continue;\n }\n bracketType = brackets[token.value[i]] + '.' + token.type.replace(\"rparen\", \"lparen\");\n if (isNaN(depth[bracketType])) {\n depth[bracketType] = 0;\n }\n switch (token.value[i]) {\n case '(':\n case '[':\n case '{':\n depth[bracketType]++;\n break;\n case ')':\n case ']':\n case '}':\n depth[bracketType]--;\n if (depth[bracketType] === -1) {\n matchType = 'bracket';\n found = true;\n }\n break;\n }\n }\n }\n else if (token.type.indexOf('tag-name') !== -1) {\n if (isNaN(depth[token.value])) {\n depth[token.value] = 0;\n }\n if (prevToken.value === '<' && tokenCount > 1) {\n depth[token.value]++;\n }\n else if (prevToken.value === '= 0; --i) {\n if (this.$tryReplace(ranges[i], replacement)) {\n replaced++;\n }\n }\n this.selection.setSelectionRange(selection);\n return replaced;\n };\n Editor.prototype.$tryReplace = function (range, replacement) {\n var input = this.session.getTextRange(range);\n replacement = this.$search.replace(input, replacement);\n if (replacement !== null) {\n range.end = this.session.replace(range, replacement);\n return range;\n }\n else {\n return null;\n }\n };\n Editor.prototype.getLastSearchOptions = function () {\n return this.$search.getOptions();\n };\n Editor.prototype.find = function (needle, options, animate) {\n if (!options)\n options = {};\n if (typeof needle == \"string\" || needle instanceof RegExp)\n options.needle = needle;\n else if (typeof needle == \"object\")\n oop.mixin(options, needle);\n var range = this.selection.getRange();\n if (options.needle == null) {\n needle = this.session.getTextRange(range)\n || this.$search.$options.needle;\n if (!needle) {\n range = this.session.getWordRange(range.start.row, range.start.column);\n needle = this.session.getTextRange(range);\n }\n this.$search.set({ needle: needle });\n }\n this.$search.set(options);\n if (!options.start)\n this.$search.set({ start: range });\n var newRange = this.$search.find(this.session);\n if (options.preventScroll)\n return newRange;\n if (newRange) {\n this.revealRange(newRange, animate);\n return newRange;\n }\n if (options.backwards)\n range.start = range.end;\n else\n range.end = range.start;\n this.selection.setRange(range);\n };\n Editor.prototype.findNext = function (options, animate) {\n this.find({ skipCurrent: true, backwards: false }, options, animate);\n };\n Editor.prototype.findPrevious = function (options, animate) {\n this.find(options, { skipCurrent: true, backwards: true }, animate);\n };\n Editor.prototype.revealRange = function (range, animate) {\n this.session.unfold(range);\n this.selection.setSelectionRange(range);\n var scrollTop = this.renderer.scrollTop;\n this.renderer.scrollSelectionIntoView(range.start, range.end, 0.5);\n if (animate !== false)\n this.renderer.animateScrolling(scrollTop);\n };\n Editor.prototype.undo = function () {\n this.session.getUndoManager().undo(this.session);\n this.renderer.scrollCursorIntoView(null, 0.5);\n };\n Editor.prototype.redo = function () {\n this.session.getUndoManager().redo(this.session);\n this.renderer.scrollCursorIntoView(null, 0.5);\n };\n Editor.prototype.destroy = function () {\n if (this.$toDestroy) {\n this.$toDestroy.forEach(function (el) {\n el.destroy();\n });\n this.$toDestroy = null;\n }\n if (this.$mouseHandler)\n this.$mouseHandler.destroy();\n this.renderer.destroy();\n this._signal(\"destroy\", this);\n if (this.session)\n this.session.destroy();\n if (this._$emitInputEvent)\n this._$emitInputEvent.cancel();\n this.removeAllListeners();\n };\n Editor.prototype.setAutoScrollEditorIntoView = function (enable) {\n if (!enable)\n return;\n var rect;\n var self = this;\n var shouldScroll = false;\n if (!this.$scrollAnchor)\n this.$scrollAnchor = document.createElement(\"div\");\n var scrollAnchor = this.$scrollAnchor;\n scrollAnchor.style.cssText = \"position:absolute\";\n this.container.insertBefore(scrollAnchor, this.container.firstChild);\n var onChangeSelection = this.on(\"changeSelection\", function () {\n shouldScroll = true;\n });\n var onBeforeRender = this.renderer.on(\"beforeRender\", function () {\n if (shouldScroll)\n rect = self.renderer.container.getBoundingClientRect();\n });\n var onAfterRender = this.renderer.on(\"afterRender\", function () {\n if (shouldScroll && rect && (self.isFocused()\n || self.searchBox && self.searchBox.isFocused())) {\n var renderer = self.renderer;\n var pos = renderer.$cursorLayer.$pixelPos;\n var config = renderer.layerConfig;\n var top = pos.top - config.offset;\n if (pos.top >= 0 && top + rect.top < 0) {\n shouldScroll = true;\n }\n else if (pos.top < config.height &&\n pos.top + rect.top + config.lineHeight > window.innerHeight) {\n shouldScroll = false;\n }\n else {\n shouldScroll = null;\n }\n if (shouldScroll != null) {\n scrollAnchor.style.top = top + \"px\";\n scrollAnchor.style.left = pos.left + \"px\";\n scrollAnchor.style.height = config.lineHeight + \"px\";\n scrollAnchor.scrollIntoView(shouldScroll);\n }\n shouldScroll = rect = null;\n }\n });\n this.setAutoScrollEditorIntoView = function (enable) {\n if (enable)\n return;\n delete this.setAutoScrollEditorIntoView;\n this.off(\"changeSelection\", onChangeSelection);\n this.renderer.off(\"afterRender\", onAfterRender);\n this.renderer.off(\"beforeRender\", onBeforeRender);\n };\n };\n Editor.prototype.$resetCursorStyle = function () {\n var style = this.$cursorStyle || \"ace\";\n var cursorLayer = this.renderer.$cursorLayer;\n if (!cursorLayer)\n return;\n cursorLayer.setSmoothBlinking(/smooth/.test(style));\n cursorLayer.isBlinking = !this.$readOnly && style != \"wide\";\n dom.setCssClass(cursorLayer.element, \"ace_slim-cursors\", /slim/.test(style));\n };\n Editor.prototype.prompt = function (message, options, callback) {\n var editor = this;\n config.loadModule(\"ace/ext/prompt\", function (module) {\n module.prompt(editor, message, options, callback);\n });\n };\n return Editor;\n}());\nEditor.$uid = 0;\nEditor.prototype.curOp = null;\nEditor.prototype.prevOp = {};\nEditor.prototype.$mergeableCommands = [\"backspace\", \"del\", \"insertstring\"];\nEditor.prototype.$toggleWordPairs = [\n [\"first\", \"last\"],\n [\"true\", \"false\"],\n [\"yes\", \"no\"],\n [\"width\", \"height\"],\n [\"top\", \"bottom\"],\n [\"right\", \"left\"],\n [\"on\", \"off\"],\n [\"x\", \"y\"],\n [\"get\", \"set\"],\n [\"max\", \"min\"],\n [\"horizontal\", \"vertical\"],\n [\"show\", \"hide\"],\n [\"add\", \"remove\"],\n [\"up\", \"down\"],\n [\"before\", \"after\"],\n [\"even\", \"odd\"],\n [\"in\", \"out\"],\n [\"inside\", \"outside\"],\n [\"next\", \"previous\"],\n [\"increase\", \"decrease\"],\n [\"attach\", \"detach\"],\n [\"&&\", \"||\"],\n [\"==\", \"!=\"]\n];\noop.implement(Editor.prototype, EventEmitter);\nconfig.defineOptions(Editor.prototype, \"editor\", {\n selectionStyle: {\n set: function (style) {\n this.onSelectionChange();\n this._signal(\"changeSelectionStyle\", { data: style });\n },\n initialValue: \"line\"\n },\n highlightActiveLine: {\n set: function () { this.$updateHighlightActiveLine(); },\n initialValue: true\n },\n highlightSelectedWord: {\n set: function (shouldHighlight) { this.$onSelectionChange(); },\n initialValue: true\n },\n readOnly: {\n set: function (readOnly) {\n this.textInput.setReadOnly(readOnly);\n this.$resetCursorStyle();\n },\n initialValue: false\n },\n copyWithEmptySelection: {\n set: function (value) {\n this.textInput.setCopyWithEmptySelection(value);\n },\n initialValue: false\n },\n cursorStyle: {\n set: function (val) { this.$resetCursorStyle(); },\n values: [\"ace\", \"slim\", \"smooth\", \"wide\"],\n initialValue: \"ace\"\n },\n mergeUndoDeltas: {\n values: [false, true, \"always\"],\n initialValue: true\n },\n behavioursEnabled: { initialValue: true },\n wrapBehavioursEnabled: { initialValue: true },\n enableAutoIndent: { initialValue: true },\n autoScrollEditorIntoView: {\n set: function (val) { this.setAutoScrollEditorIntoView(val); }\n },\n keyboardHandler: {\n set: function (val) { this.setKeyboardHandler(val); },\n get: function () { return this.$keybindingId; },\n handlesSet: true\n },\n value: {\n set: function (val) { this.session.setValue(val); },\n get: function () { return this.getValue(); },\n handlesSet: true,\n hidden: true\n },\n session: {\n set: function (val) { this.setSession(val); },\n get: function () { return this.session; },\n handlesSet: true,\n hidden: true\n },\n showLineNumbers: {\n set: function (show) {\n this.renderer.$gutterLayer.setShowLineNumbers(show);\n this.renderer.$loop.schedule(this.renderer.CHANGE_GUTTER);\n if (show && this.$relativeLineNumbers)\n relativeNumberRenderer.attach(this);\n else\n relativeNumberRenderer.detach(this);\n },\n initialValue: true\n },\n relativeLineNumbers: {\n set: function (value) {\n if (this.$showLineNumbers && value)\n relativeNumberRenderer.attach(this);\n else\n relativeNumberRenderer.detach(this);\n }\n },\n placeholder: {\n set: function (message) {\n if (!this.$updatePlaceholder) {\n this.$updatePlaceholder = function () {\n var hasValue = this.session && (this.renderer.$composition ||\n this.session.getLength() > 1 || this.session.getLine(0).length > 0);\n if (hasValue && this.renderer.placeholderNode) {\n this.renderer.off(\"afterRender\", this.$updatePlaceholder);\n dom.removeCssClass(this.container, \"ace_hasPlaceholder\");\n this.renderer.placeholderNode.remove();\n this.renderer.placeholderNode = null;\n }\n else if (!hasValue && !this.renderer.placeholderNode) {\n this.renderer.on(\"afterRender\", this.$updatePlaceholder);\n dom.addCssClass(this.container, \"ace_hasPlaceholder\");\n var el = dom.createElement(\"div\");\n el.className = \"ace_placeholder\";\n el.textContent = this.$placeholder || \"\";\n this.renderer.placeholderNode = el;\n this.renderer.content.appendChild(this.renderer.placeholderNode);\n }\n else if (!hasValue && this.renderer.placeholderNode) {\n this.renderer.placeholderNode.textContent = this.$placeholder || \"\";\n }\n }.bind(this);\n this.on(\"input\", this.$updatePlaceholder);\n }\n this.$updatePlaceholder();\n }\n },\n enableKeyboardAccessibility: {\n set: function (value) {\n var blurCommand = {\n name: \"blurTextInput\",\n description: \"Set focus to the editor content div to allow tabbing through the page\",\n bindKey: \"Esc\",\n exec: function (editor) {\n editor.blur();\n editor.renderer.scroller.focus();\n },\n readOnly: true\n };\n var focusOnEnterKeyup = function (e) {\n if (e.target == this.renderer.scroller && e.keyCode === keys['enter']) {\n e.preventDefault();\n var row = this.getCursorPosition().row;\n if (!this.isRowVisible(row))\n this.scrollToLine(row, true, true);\n this.focus();\n }\n };\n var gutterKeyboardHandler;\n if (value) {\n this.renderer.enableKeyboardAccessibility = true;\n this.renderer.keyboardFocusClassName = \"ace_keyboard-focus\";\n this.textInput.getElement().setAttribute(\"tabindex\", -1);\n this.textInput.setNumberOfExtraLines(useragent.isWin ? 3 : 0);\n this.renderer.scroller.setAttribute(\"tabindex\", 0);\n this.renderer.scroller.setAttribute(\"role\", \"group\");\n this.renderer.scroller.setAttribute(\"aria-roledescription\", nls(\"editor\"));\n this.renderer.scroller.classList.add(this.renderer.keyboardFocusClassName);\n this.renderer.scroller.setAttribute(\"aria-label\", nls(\"Editor content, press Enter to start editing, press Escape to exit\"));\n this.renderer.scroller.addEventListener(\"keyup\", focusOnEnterKeyup.bind(this));\n this.commands.addCommand(blurCommand);\n this.renderer.$gutter.setAttribute(\"tabindex\", 0);\n this.renderer.$gutter.setAttribute(\"aria-hidden\", false);\n this.renderer.$gutter.setAttribute(\"role\", \"group\");\n this.renderer.$gutter.setAttribute(\"aria-roledescription\", nls(\"editor\"));\n this.renderer.$gutter.setAttribute(\"aria-label\", nls(\"Editor gutter, press Enter to interact with controls using arrow keys, press Escape to exit\"));\n this.renderer.$gutter.classList.add(this.renderer.keyboardFocusClassName);\n this.renderer.content.setAttribute(\"aria-hidden\", true);\n if (!gutterKeyboardHandler)\n gutterKeyboardHandler = new GutterKeyboardHandler(this);\n gutterKeyboardHandler.addListener();\n }\n else {\n this.renderer.enableKeyboardAccessibility = false;\n this.textInput.getElement().setAttribute(\"tabindex\", 0);\n this.textInput.setNumberOfExtraLines(0);\n this.renderer.scroller.setAttribute(\"tabindex\", -1);\n this.renderer.scroller.removeAttribute(\"role\");\n this.renderer.scroller.removeAttribute(\"aria-roledescription\");\n this.renderer.scroller.classList.remove(this.renderer.keyboardFocusClassName);\n this.renderer.scroller.removeAttribute(\"aria-label\");\n this.renderer.scroller.removeEventListener(\"keyup\", focusOnEnterKeyup.bind(this));\n this.commands.removeCommand(blurCommand);\n this.renderer.content.removeAttribute(\"aria-hidden\");\n this.renderer.$gutter.setAttribute(\"tabindex\", -1);\n this.renderer.$gutter.setAttribute(\"aria-hidden\", true);\n this.renderer.$gutter.removeAttribute(\"role\");\n this.renderer.$gutter.removeAttribute(\"aria-roledescription\");\n this.renderer.$gutter.removeAttribute(\"aria-label\");\n this.renderer.$gutter.classList.remove(this.renderer.keyboardFocusClassName);\n if (gutterKeyboardHandler)\n gutterKeyboardHandler.removeListener();\n }\n },\n initialValue: false\n },\n customScrollbar: \"renderer\",\n hScrollBarAlwaysVisible: \"renderer\",\n vScrollBarAlwaysVisible: \"renderer\",\n highlightGutterLine: \"renderer\",\n animatedScroll: \"renderer\",\n showInvisibles: \"renderer\",\n showPrintMargin: \"renderer\",\n printMarginColumn: \"renderer\",\n printMargin: \"renderer\",\n fadeFoldWidgets: \"renderer\",\n showFoldWidgets: \"renderer\",\n displayIndentGuides: \"renderer\",\n highlightIndentGuides: \"renderer\",\n showGutter: \"renderer\",\n fontSize: \"renderer\",\n fontFamily: \"renderer\",\n maxLines: \"renderer\",\n minLines: \"renderer\",\n scrollPastEnd: \"renderer\",\n fixedWidthGutter: \"renderer\",\n theme: \"renderer\",\n hasCssTransforms: \"renderer\",\n maxPixelHeight: \"renderer\",\n useTextareaForIME: \"renderer\",\n useResizeObserver: \"renderer\",\n useSvgGutterIcons: \"renderer\",\n showFoldedAnnotations: \"renderer\",\n scrollSpeed: \"$mouseHandler\",\n dragDelay: \"$mouseHandler\",\n dragEnabled: \"$mouseHandler\",\n focusTimeout: \"$mouseHandler\",\n tooltipFollowsMouse: \"$mouseHandler\",\n firstLineNumber: \"session\",\n overwrite: \"session\",\n newLineMode: \"session\",\n useWorker: \"session\",\n useSoftTabs: \"session\",\n navigateWithinSoftTabs: \"session\",\n tabSize: \"session\",\n wrap: \"session\",\n indentedSoftWrap: \"session\",\n foldStyle: \"session\",\n mode: \"session\"\n});\nvar relativeNumberRenderer = {\n getText: function (session, row) {\n return (Math.abs(session.selection.lead.row - row) || (row + 1 + (row < 9 ? \"\\xb7\" : \"\"))) + \"\";\n },\n getWidth: function (session, lastLineNumber, config) {\n return Math.max(lastLineNumber.toString().length, (config.lastRow + 1).toString().length, 2) * config.characterWidth;\n },\n update: function (e, editor) {\n editor.renderer.$loop.schedule(editor.renderer.CHANGE_GUTTER);\n },\n attach: function (editor) {\n editor.renderer.$gutterLayer.$renderer = this;\n editor.on(\"changeSelection\", this.update);\n this.update(null, editor);\n },\n detach: function (editor) {\n if (editor.renderer.$gutterLayer.$renderer == this)\n editor.renderer.$gutterLayer.$renderer = null;\n editor.off(\"changeSelection\", this.update);\n this.update(null, editor);\n }\n};\nexports.Editor = Editor;\n\n});\n\nace.define(\"ace/layer/lines\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"], function(require, exports, module){\"use strict\";\nvar dom = require(\"../lib/dom\");\nvar Lines = /** @class */ (function () {\n function Lines(element, canvasHeight) {\n this.element = element;\n this.canvasHeight = canvasHeight || 500000;\n this.element.style.height = (this.canvasHeight * 2) + \"px\";\n this.cells = [];\n this.cellCache = [];\n this.$offsetCoefficient = 0;\n }\n Lines.prototype.moveContainer = function (config) {\n dom.translate(this.element, 0, -((config.firstRowScreen * config.lineHeight) % this.canvasHeight) - config.offset * this.$offsetCoefficient);\n };\n Lines.prototype.pageChanged = function (oldConfig, newConfig) {\n return (Math.floor((oldConfig.firstRowScreen * oldConfig.lineHeight) / this.canvasHeight) !==\n Math.floor((newConfig.firstRowScreen * newConfig.lineHeight) / this.canvasHeight));\n };\n Lines.prototype.computeLineTop = function (row, config, session) {\n var screenTop = config.firstRowScreen * config.lineHeight;\n var screenPage = Math.floor(screenTop / this.canvasHeight);\n var lineTop = session.documentToScreenRow(row, 0) * config.lineHeight;\n return lineTop - (screenPage * this.canvasHeight);\n };\n Lines.prototype.computeLineHeight = function (row, config, session) {\n return config.lineHeight * session.getRowLineCount(row);\n };\n Lines.prototype.getLength = function () {\n return this.cells.length;\n };\n Lines.prototype.get = function (index) {\n return this.cells[index];\n };\n Lines.prototype.shift = function () {\n this.$cacheCell(this.cells.shift());\n };\n Lines.prototype.pop = function () {\n this.$cacheCell(this.cells.pop());\n };\n Lines.prototype.push = function (cell) {\n if (Array.isArray(cell)) {\n this.cells.push.apply(this.cells, cell);\n var fragment = dom.createFragment(this.element);\n for (var i = 0; i < cell.length; i++) {\n fragment.appendChild(cell[i].element);\n }\n this.element.appendChild(fragment);\n }\n else {\n this.cells.push(cell);\n this.element.appendChild(cell.element);\n }\n };\n Lines.prototype.unshift = function (cell) {\n if (Array.isArray(cell)) {\n this.cells.unshift.apply(this.cells, cell);\n var fragment = dom.createFragment(this.element);\n for (var i = 0; i < cell.length; i++) {\n fragment.appendChild(cell[i].element);\n }\n if (this.element.firstChild)\n this.element.insertBefore(fragment, this.element.firstChild);\n else\n this.element.appendChild(fragment);\n }\n else {\n this.cells.unshift(cell);\n this.element.insertAdjacentElement(\"afterbegin\", cell.element);\n }\n };\n Lines.prototype.last = function () {\n if (this.cells.length)\n return this.cells[this.cells.length - 1];\n else\n return null;\n };\n Lines.prototype.$cacheCell = function (cell) {\n if (!cell)\n return;\n cell.element.remove();\n this.cellCache.push(cell);\n };\n Lines.prototype.createCell = function (row, config, session, initElement) {\n var cell = this.cellCache.pop();\n if (!cell) {\n var element = dom.createElement(\"div\");\n if (initElement)\n initElement(element);\n this.element.appendChild(element);\n cell = {\n element: element,\n text: \"\",\n row: row\n };\n }\n cell.row = row;\n return cell;\n };\n return Lines;\n}());\nexports.Lines = Lines;\n\n});\n\nace.define(\"ace/layer/gutter\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/lib/event_emitter\",\"ace/layer/lines\",\"ace/config\"], function(require, exports, module){\"use strict\";\nvar dom = require(\"../lib/dom\");\nvar oop = require(\"../lib/oop\");\nvar lang = require(\"../lib/lang\");\nvar EventEmitter = require(\"../lib/event_emitter\").EventEmitter;\nvar Lines = require(\"./lines\").Lines;\nvar nls = require(\"../config\").nls;\nvar Gutter = /** @class */ (function () {\n function Gutter(parentEl) {\n this.element = dom.createElement(\"div\");\n this.element.className = \"ace_layer ace_gutter-layer\";\n parentEl.appendChild(this.element);\n this.setShowFoldWidgets(this.$showFoldWidgets);\n this.gutterWidth = 0;\n this.$annotations = [];\n this.$updateAnnotations = this.$updateAnnotations.bind(this);\n this.$lines = new Lines(this.element);\n this.$lines.$offsetCoefficient = 1;\n }\n Gutter.prototype.setSession = function (session) {\n if (this.session)\n this.session.off(\"change\", this.$updateAnnotations);\n this.session = session;\n if (session)\n session.on(\"change\", this.$updateAnnotations);\n };\n Gutter.prototype.addGutterDecoration = function (row, className) {\n if (window.console)\n console.warn && console.warn(\"deprecated use session.addGutterDecoration\");\n this.session.addGutterDecoration(row, className);\n };\n Gutter.prototype.removeGutterDecoration = function (row, className) {\n if (window.console)\n console.warn && console.warn(\"deprecated use session.removeGutterDecoration\");\n this.session.removeGutterDecoration(row, className);\n };\n Gutter.prototype.setAnnotations = function (annotations) {\n this.$annotations = [];\n for (var i = 0; i < annotations.length; i++) {\n var annotation = annotations[i];\n var row = annotation.row;\n var rowInfo = this.$annotations[row];\n if (!rowInfo)\n rowInfo = this.$annotations[row] = { text: [], type: [] };\n var annoText = annotation.text;\n var annoType = annotation.type;\n annoText = annoText ? lang.escapeHTML(annoText) : annotation.html || \"\";\n if (rowInfo.text.indexOf(annoText) === -1) {\n rowInfo.text.push(annoText);\n rowInfo.type.push(annoType);\n }\n var className = annotation.className;\n if (className)\n rowInfo.className = className;\n else if (annoType == \"error\")\n rowInfo.className = \" ace_error\";\n else if (annoType == \"warning\" && rowInfo.className != \" ace_error\")\n rowInfo.className = \" ace_warning\";\n else if (annoType == \"info\" && (!rowInfo.className))\n rowInfo.className = \" ace_info\";\n }\n };\n Gutter.prototype.$updateAnnotations = function (delta) {\n if (!this.$annotations.length)\n return;\n var firstRow = delta.start.row;\n var len = delta.end.row - firstRow;\n if (len === 0) {\n }\n else if (delta.action == 'remove') {\n this.$annotations.splice(firstRow, len + 1, null);\n }\n else {\n var args = new Array(len + 1);\n args.unshift(firstRow, 1);\n this.$annotations.splice.apply(this.$annotations, args);\n }\n };\n Gutter.prototype.update = function (config) {\n this.config = config;\n var session = this.session;\n var firstRow = config.firstRow;\n var lastRow = Math.min(config.lastRow + config.gutterOffset, // needed to compensate for hor scollbar\n session.getLength() - 1);\n this.oldLastRow = lastRow;\n this.config = config;\n this.$lines.moveContainer(config);\n this.$updateCursorRow();\n var fold = session.getNextFoldLine(firstRow);\n var foldStart = fold ? fold.start.row : Infinity;\n var cell = null;\n var index = -1;\n var row = firstRow;\n while (true) {\n if (row > foldStart) {\n row = fold.end.row + 1;\n fold = session.getNextFoldLine(row, fold);\n foldStart = fold ? fold.start.row : Infinity;\n }\n if (row > lastRow) {\n while (this.$lines.getLength() > index + 1)\n this.$lines.pop();\n break;\n }\n cell = this.$lines.get(++index);\n if (cell) {\n cell.row = row;\n }\n else {\n cell = this.$lines.createCell(row, config, this.session, onCreateCell);\n this.$lines.push(cell);\n }\n this.$renderCell(cell, config, fold, row);\n row++;\n }\n this._signal(\"afterRender\");\n this.$updateGutterWidth(config);\n };\n Gutter.prototype.$updateGutterWidth = function (config) {\n var session = this.session;\n var gutterRenderer = session.gutterRenderer || this.$renderer;\n var firstLineNumber = session.$firstLineNumber;\n var lastLineText = this.$lines.last() ? this.$lines.last().text : \"\";\n if (this.$fixedWidth || session.$useWrapMode)\n lastLineText = session.getLength() + firstLineNumber - 1;\n var gutterWidth = gutterRenderer\n ? gutterRenderer.getWidth(session, lastLineText, config)\n : lastLineText.toString().length * config.characterWidth;\n var padding = this.$padding || this.$computePadding();\n gutterWidth += padding.left + padding.right;\n if (gutterWidth !== this.gutterWidth && !isNaN(gutterWidth)) {\n this.gutterWidth = gutterWidth;\n this.element.parentNode.style.width =\n this.element.style.width = Math.ceil(this.gutterWidth) + \"px\";\n this._signal(\"changeGutterWidth\", gutterWidth);\n }\n };\n Gutter.prototype.$updateCursorRow = function () {\n if (!this.$highlightGutterLine)\n return;\n var position = this.session.selection.getCursor();\n if (this.$cursorRow === position.row)\n return;\n this.$cursorRow = position.row;\n };\n Gutter.prototype.updateLineHighlight = function () {\n if (!this.$highlightGutterLine)\n return;\n var row = this.session.selection.cursor.row;\n this.$cursorRow = row;\n if (this.$cursorCell && this.$cursorCell.row == row)\n return;\n if (this.$cursorCell)\n this.$cursorCell.element.className = this.$cursorCell.element.className.replace(\"ace_gutter-active-line \", \"\");\n var cells = this.$lines.cells;\n this.$cursorCell = null;\n for (var i = 0; i < cells.length; i++) {\n var cell = cells[i];\n if (cell.row >= this.$cursorRow) {\n if (cell.row > this.$cursorRow) {\n var fold = this.session.getFoldLine(this.$cursorRow);\n if (i > 0 && fold && fold.start.row == cells[i - 1].row)\n cell = cells[i - 1];\n else\n break;\n }\n cell.element.className = \"ace_gutter-active-line \" + cell.element.className;\n this.$cursorCell = cell;\n break;\n }\n }\n };\n Gutter.prototype.scrollLines = function (config) {\n var oldConfig = this.config;\n this.config = config;\n this.$updateCursorRow();\n if (this.$lines.pageChanged(oldConfig, config))\n return this.update(config);\n this.$lines.moveContainer(config);\n var lastRow = Math.min(config.lastRow + config.gutterOffset, // needed to compensate for hor scollbar\n this.session.getLength() - 1);\n var oldLastRow = this.oldLastRow;\n this.oldLastRow = lastRow;\n if (!oldConfig || oldLastRow < config.firstRow)\n return this.update(config);\n if (lastRow < oldConfig.firstRow)\n return this.update(config);\n if (oldConfig.firstRow < config.firstRow)\n for (var row = this.session.getFoldedRowCount(oldConfig.firstRow, config.firstRow - 1); row > 0; row--)\n this.$lines.shift();\n if (oldLastRow > lastRow)\n for (var row = this.session.getFoldedRowCount(lastRow + 1, oldLastRow); row > 0; row--)\n this.$lines.pop();\n if (config.firstRow < oldConfig.firstRow) {\n this.$lines.unshift(this.$renderLines(config, config.firstRow, oldConfig.firstRow - 1));\n }\n if (lastRow > oldLastRow) {\n this.$lines.push(this.$renderLines(config, oldLastRow + 1, lastRow));\n }\n this.updateLineHighlight();\n this._signal(\"afterRender\");\n this.$updateGutterWidth(config);\n };\n Gutter.prototype.$renderLines = function (config, firstRow, lastRow) {\n var fragment = [];\n var row = firstRow;\n var foldLine = this.session.getNextFoldLine(row);\n var foldStart = foldLine ? foldLine.start.row : Infinity;\n while (true) {\n if (row > foldStart) {\n row = foldLine.end.row + 1;\n foldLine = this.session.getNextFoldLine(row, foldLine);\n foldStart = foldLine ? foldLine.start.row : Infinity;\n }\n if (row > lastRow)\n break;\n var cell = this.$lines.createCell(row, config, this.session, onCreateCell);\n this.$renderCell(cell, config, foldLine, row);\n fragment.push(cell);\n row++;\n }\n return fragment;\n };\n Gutter.prototype.$renderCell = function (cell, config, fold, row) {\n var element = cell.element;\n var session = this.session;\n var textNode = element.childNodes[0];\n var foldWidget = element.childNodes[1];\n var annotationNode = element.childNodes[2];\n var annotationIconNode = annotationNode.firstChild;\n var firstLineNumber = session.$firstLineNumber;\n var breakpoints = session.$breakpoints;\n var decorations = session.$decorations;\n var gutterRenderer = session.gutterRenderer || this.$renderer;\n var foldWidgets = this.$showFoldWidgets && session.foldWidgets;\n var foldStart = fold ? fold.start.row : Number.MAX_VALUE;\n var lineHeight = config.lineHeight + \"px\";\n var className = this.$useSvgGutterIcons ? \"ace_gutter-cell_svg-icons \" : \"ace_gutter-cell \";\n var iconClassName = this.$useSvgGutterIcons ? \"ace_icon_svg\" : \"ace_icon\";\n var rowText = (gutterRenderer\n ? gutterRenderer.getText(session, row)\n : row + firstLineNumber).toString();\n if (this.$highlightGutterLine) {\n if (row == this.$cursorRow || (fold && row < this.$cursorRow && row >= foldStart && this.$cursorRow <= fold.end.row)) {\n className += \"ace_gutter-active-line \";\n if (this.$cursorCell != cell) {\n if (this.$cursorCell)\n this.$cursorCell.element.className = this.$cursorCell.element.className.replace(\"ace_gutter-active-line \", \"\");\n this.$cursorCell = cell;\n }\n }\n }\n if (breakpoints[row])\n className += breakpoints[row];\n if (decorations[row])\n className += decorations[row];\n if (this.$annotations[row] && row !== foldStart)\n className += this.$annotations[row].className;\n if (foldWidgets) {\n var c = foldWidgets[row];\n if (c == null)\n c = foldWidgets[row] = session.getFoldWidget(row);\n }\n if (c) {\n var foldClass = \"ace_fold-widget ace_\" + c;\n var isClosedFold = c == \"start\" && row == foldStart && row < fold.end.row;\n if (isClosedFold) {\n foldClass += \" ace_closed\";\n var foldAnnotationClass = '';\n var annotationInFold = false;\n for (var i = row + 1; i <= fold.end.row; i++) {\n if (!this.$annotations[i])\n continue;\n if (this.$annotations[i].className === \" ace_error\") {\n annotationInFold = true;\n foldAnnotationClass = \" ace_error_fold\";\n break;\n }\n if (this.$annotations[i].className === \" ace_warning\") {\n annotationInFold = true;\n foldAnnotationClass = \" ace_warning_fold\";\n continue;\n }\n }\n className += foldAnnotationClass;\n }\n else\n foldClass += \" ace_open\";\n if (foldWidget.className != foldClass)\n foldWidget.className = foldClass;\n dom.setStyle(foldWidget.style, \"height\", lineHeight);\n dom.setStyle(foldWidget.style, \"display\", \"inline-block\");\n foldWidget.setAttribute(\"role\", \"button\");\n foldWidget.setAttribute(\"tabindex\", \"-1\");\n var foldRange = session.getFoldWidgetRange(row);\n if (foldRange)\n foldWidget.setAttribute(\"aria-label\", nls(\"Toggle code folding, rows $0 through $1\", [foldRange.start.row + 1, foldRange.end.row + 1]));\n else {\n if (fold)\n foldWidget.setAttribute(\"aria-label\", nls(\"Toggle code folding, rows $0 through $1\", [fold.start.row + 1, fold.end.row + 1]));\n else\n foldWidget.setAttribute(\"aria-label\", nls(\"Toggle code folding, row $0\", [row + 1]));\n }\n if (isClosedFold) {\n foldWidget.setAttribute(\"aria-expanded\", \"false\");\n foldWidget.setAttribute(\"title\", nls(\"Unfold code\"));\n }\n else {\n foldWidget.setAttribute(\"aria-expanded\", \"true\");\n foldWidget.setAttribute(\"title\", nls(\"Fold code\"));\n }\n }\n else {\n if (foldWidget) {\n dom.setStyle(foldWidget.style, \"display\", \"none\");\n foldWidget.setAttribute(\"tabindex\", \"0\");\n foldWidget.removeAttribute(\"role\");\n foldWidget.removeAttribute(\"aria-label\");\n }\n }\n if (annotationInFold && this.$showFoldedAnnotations) {\n annotationNode.className = \"ace_gutter_annotation\";\n annotationIconNode.className = iconClassName;\n annotationIconNode.className += foldAnnotationClass;\n dom.setStyle(annotationIconNode.style, \"height\", lineHeight);\n dom.setStyle(annotationNode.style, \"display\", \"block\");\n dom.setStyle(annotationNode.style, \"height\", lineHeight);\n annotationNode.setAttribute(\"aria-label\", nls(\"Read annotations row $0\", [rowText]));\n annotationNode.setAttribute(\"tabindex\", \"-1\");\n annotationNode.setAttribute(\"role\", \"button\");\n }\n else if (this.$annotations[row]) {\n annotationNode.className = \"ace_gutter_annotation\";\n annotationIconNode.className = iconClassName;\n if (this.$useSvgGutterIcons)\n annotationIconNode.className += this.$annotations[row].className;\n else\n element.classList.add(this.$annotations[row].className.replace(\" \", \"\"));\n dom.setStyle(annotationIconNode.style, \"height\", lineHeight);\n dom.setStyle(annotationNode.style, \"display\", \"block\");\n dom.setStyle(annotationNode.style, \"height\", lineHeight);\n annotationNode.setAttribute(\"aria-label\", nls(\"Read annotations row $0\", [rowText]));\n annotationNode.setAttribute(\"tabindex\", \"-1\");\n annotationNode.setAttribute(\"role\", \"button\");\n }\n else {\n dom.setStyle(annotationNode.style, \"display\", \"none\");\n annotationNode.removeAttribute(\"aria-label\");\n annotationNode.removeAttribute(\"role\");\n annotationNode.setAttribute(\"tabindex\", \"0\");\n }\n if (rowText !== textNode.data) {\n textNode.data = rowText;\n }\n if (element.className != className)\n element.className = className;\n dom.setStyle(cell.element.style, \"height\", this.$lines.computeLineHeight(row, config, session) + \"px\");\n dom.setStyle(cell.element.style, \"top\", this.$lines.computeLineTop(row, config, session) + \"px\");\n cell.text = rowText;\n if (annotationNode.style.display === \"none\" && foldWidget.style.display === \"none\")\n cell.element.setAttribute(\"aria-hidden\", true);\n else\n cell.element.setAttribute(\"aria-hidden\", false);\n return cell;\n };\n Gutter.prototype.setHighlightGutterLine = function (highlightGutterLine) {\n this.$highlightGutterLine = highlightGutterLine;\n };\n Gutter.prototype.setShowLineNumbers = function (show) {\n this.$renderer = !show && {\n getWidth: function () { return 0; },\n getText: function () { return \"\"; }\n };\n };\n Gutter.prototype.getShowLineNumbers = function () {\n return this.$showLineNumbers;\n };\n Gutter.prototype.setShowFoldWidgets = function (show) {\n if (show)\n dom.addCssClass(this.element, \"ace_folding-enabled\");\n else\n dom.removeCssClass(this.element, \"ace_folding-enabled\");\n this.$showFoldWidgets = show;\n this.$padding = null;\n };\n Gutter.prototype.getShowFoldWidgets = function () {\n return this.$showFoldWidgets;\n };\n Gutter.prototype.$computePadding = function () {\n if (!this.element.firstChild)\n return { left: 0, right: 0 };\n var style = dom.computedStyle(this.element.firstChild);\n this.$padding = {};\n this.$padding.left = (parseInt(style.borderLeftWidth) || 0)\n + (parseInt(style.paddingLeft) || 0) + 1;\n this.$padding.right = (parseInt(style.borderRightWidth) || 0)\n + (parseInt(style.paddingRight) || 0);\n return this.$padding;\n };\n Gutter.prototype.getRegion = function (point) {\n var padding = this.$padding || this.$computePadding();\n var rect = this.element.getBoundingClientRect();\n if (point.x < padding.left + rect.left)\n return \"markers\";\n if (this.$showFoldWidgets && point.x > rect.right - padding.right)\n return \"foldWidgets\";\n };\n return Gutter;\n}());\nGutter.prototype.$fixedWidth = false;\nGutter.prototype.$highlightGutterLine = true;\nGutter.prototype.$renderer = \"\";\nGutter.prototype.$showLineNumbers = true;\nGutter.prototype.$showFoldWidgets = true;\noop.implement(Gutter.prototype, EventEmitter);\nfunction onCreateCell(element) {\n var textNode = document.createTextNode('');\n element.appendChild(textNode);\n var foldWidget = dom.createElement(\"span\");\n element.appendChild(foldWidget);\n var annotationNode = dom.createElement(\"span\");\n element.appendChild(annotationNode);\n var annotationIconNode = dom.createElement(\"span\");\n annotationNode.appendChild(annotationIconNode);\n return element;\n}\nexports.Gutter = Gutter;\n\n});\n\nace.define(\"ace/layer/marker\",[\"require\",\"exports\",\"module\",\"ace/range\",\"ace/lib/dom\"], function(require, exports, module){\"use strict\";\nvar Range = require(\"../range\").Range;\nvar dom = require(\"../lib/dom\");\nvar Marker = /** @class */ (function () {\n function Marker(parentEl) {\n this.element = dom.createElement(\"div\");\n this.element.className = \"ace_layer ace_marker-layer\";\n parentEl.appendChild(this.element);\n }\n Marker.prototype.setPadding = function (padding) {\n this.$padding = padding;\n };\n Marker.prototype.setSession = function (session) {\n this.session = session;\n };\n Marker.prototype.setMarkers = function (markers) {\n this.markers = markers;\n };\n Marker.prototype.elt = function (className, css) {\n var x = this.i != -1 && this.element.childNodes[this.i];\n if (!x) {\n x = document.createElement(\"div\");\n this.element.appendChild(x);\n this.i = -1;\n }\n else {\n this.i++;\n }\n x.style.cssText = css;\n x.className = className;\n };\n Marker.prototype.update = function (config) {\n if (!config)\n return;\n this.config = config;\n this.i = 0;\n var html;\n for (var key in this.markers) {\n var marker = this.markers[key];\n if (!marker.range) {\n marker.update(html, this, this.session, config);\n continue;\n }\n var range = marker.range.clipRows(config.firstRow, config.lastRow);\n if (range.isEmpty())\n continue;\n range = range.toScreenRange(this.session);\n if (marker.renderer) {\n var top = this.$getTop(range.start.row, config);\n var left = this.$padding + range.start.column * config.characterWidth;\n marker.renderer(html, range, left, top, config);\n }\n else if (marker.type == \"fullLine\") {\n this.drawFullLineMarker(html, range, marker.clazz, config);\n }\n else if (marker.type == \"screenLine\") {\n this.drawScreenLineMarker(html, range, marker.clazz, config);\n }\n else if (range.isMultiLine()) {\n if (marker.type == \"text\")\n this.drawTextMarker(html, range, marker.clazz, config);\n else\n this.drawMultiLineMarker(html, range, marker.clazz, config);\n }\n else {\n this.drawSingleLineMarker(html, range, marker.clazz + \" ace_start\" + \" ace_br15\", config);\n }\n }\n if (this.i != -1) {\n while (this.i < this.element.childElementCount)\n this.element.removeChild(this.element.lastChild);\n }\n };\n Marker.prototype.$getTop = function (row, layerConfig) {\n return (row - layerConfig.firstRowScreen) * layerConfig.lineHeight;\n };\n Marker.prototype.drawTextMarker = function (stringBuilder, range, clazz, layerConfig, extraStyle) {\n var session = this.session;\n var start = range.start.row;\n var end = range.end.row;\n var row = start;\n var prev = 0;\n var curr = 0;\n var next = session.getScreenLastRowColumn(row);\n var lineRange = new Range(row, range.start.column, row, curr);\n for (; row <= end; row++) {\n lineRange.start.row = lineRange.end.row = row;\n lineRange.start.column = row == start ? range.start.column : session.getRowWrapIndent(row);\n lineRange.end.column = next;\n prev = curr;\n curr = next;\n next = row + 1 < end ? session.getScreenLastRowColumn(row + 1) : row == end ? 0 : range.end.column;\n this.drawSingleLineMarker(stringBuilder, lineRange, clazz + (row == start ? \" ace_start\" : \"\") + \" ace_br\"\n + getBorderClass(row == start || row == start + 1 && range.start.column, prev < curr, curr > next, row == end), layerConfig, row == end ? 0 : 1, extraStyle);\n }\n };\n Marker.prototype.drawMultiLineMarker = function (stringBuilder, range, clazz, config, extraStyle) {\n var padding = this.$padding;\n var height = config.lineHeight;\n var top = this.$getTop(range.start.row, config);\n var left = padding + range.start.column * config.characterWidth;\n extraStyle = extraStyle || \"\";\n if (this.session.$bidiHandler.isBidiRow(range.start.row)) {\n var range1 = range.clone();\n range1.end.row = range1.start.row;\n range1.end.column = this.session.getLine(range1.start.row).length;\n this.drawBidiSingleLineMarker(stringBuilder, range1, clazz + \" ace_br1 ace_start\", config, null, extraStyle);\n }\n else {\n this.elt(clazz + \" ace_br1 ace_start\", \"height:\" + height + \"px;\" + \"right:0;\" + \"top:\" + top + \"px;left:\" + left + \"px;\" + (extraStyle || \"\"));\n }\n if (this.session.$bidiHandler.isBidiRow(range.end.row)) {\n var range1 = range.clone();\n range1.start.row = range1.end.row;\n range1.start.column = 0;\n this.drawBidiSingleLineMarker(stringBuilder, range1, clazz + \" ace_br12\", config, null, extraStyle);\n }\n else {\n top = this.$getTop(range.end.row, config);\n var width = range.end.column * config.characterWidth;\n this.elt(clazz + \" ace_br12\", \"height:\" + height + \"px;\" +\n \"width:\" + width + \"px;\" +\n \"top:\" + top + \"px;\" +\n \"left:\" + padding + \"px;\" + (extraStyle || \"\"));\n }\n height = (range.end.row - range.start.row - 1) * config.lineHeight;\n if (height <= 0)\n return;\n top = this.$getTop(range.start.row + 1, config);\n var radiusClass = (range.start.column ? 1 : 0) | (range.end.column ? 0 : 8);\n this.elt(clazz + (radiusClass ? \" ace_br\" + radiusClass : \"\"), \"height:\" + height + \"px;\" +\n \"right:0;\" +\n \"top:\" + top + \"px;\" +\n \"left:\" + padding + \"px;\" + (extraStyle || \"\"));\n };\n Marker.prototype.drawSingleLineMarker = function (stringBuilder, range, clazz, config, extraLength, extraStyle) {\n if (this.session.$bidiHandler.isBidiRow(range.start.row))\n return this.drawBidiSingleLineMarker(stringBuilder, range, clazz, config, extraLength, extraStyle);\n var height = config.lineHeight;\n var width = (range.end.column + (extraLength || 0) - range.start.column) * config.characterWidth;\n var top = this.$getTop(range.start.row, config);\n var left = this.$padding + range.start.column * config.characterWidth;\n this.elt(clazz, \"height:\" + height + \"px;\" +\n \"width:\" + width + \"px;\" +\n \"top:\" + top + \"px;\" +\n \"left:\" + left + \"px;\" + (extraStyle || \"\"));\n };\n Marker.prototype.drawBidiSingleLineMarker = function (stringBuilder, range, clazz, config, extraLength, extraStyle) {\n var height = config.lineHeight, top = this.$getTop(range.start.row, config), padding = this.$padding;\n var selections = this.session.$bidiHandler.getSelections(range.start.column, range.end.column);\n selections.forEach(function (selection) {\n this.elt(clazz, \"height:\" + height + \"px;\" +\n \"width:\" + (selection.width + (extraLength || 0)) + \"px;\" +\n \"top:\" + top + \"px;\" +\n \"left:\" + (padding + selection.left) + \"px;\" + (extraStyle || \"\"));\n }, this);\n };\n Marker.prototype.drawFullLineMarker = function (stringBuilder, range, clazz, config, extraStyle) {\n var top = this.$getTop(range.start.row, config);\n var height = config.lineHeight;\n if (range.start.row != range.end.row)\n height += this.$getTop(range.end.row, config) - top;\n this.elt(clazz, \"height:\" + height + \"px;\" +\n \"top:\" + top + \"px;\" +\n \"left:0;right:0;\" + (extraStyle || \"\"));\n };\n Marker.prototype.drawScreenLineMarker = function (stringBuilder, range, clazz, config, extraStyle) {\n var top = this.$getTop(range.start.row, config);\n var height = config.lineHeight;\n this.elt(clazz, \"height:\" + height + \"px;\" +\n \"top:\" + top + \"px;\" +\n \"left:0;right:0;\" + (extraStyle || \"\"));\n };\n return Marker;\n}());\nMarker.prototype.$padding = 0;\nfunction getBorderClass(tl, tr, br, bl) {\n return (tl ? 1 : 0) | (tr ? 2 : 0) | (br ? 4 : 0) | (bl ? 8 : 0);\n}\nexports.Marker = Marker;\n\n});\n\nace.define(\"ace/layer/text_util\",[\"require\",\"exports\",\"module\"], function(require, exports, module){// Tokens for which Ace just uses a simple TextNode and does not add any special className.\nvar textTokens = new Set([\"text\", \"rparen\", \"lparen\"]);\nexports.isTextToken = function (tokenType) {\n return textTokens.has(tokenType);\n};\n\n});\n\nace.define(\"ace/layer/text\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/dom\",\"ace/lib/lang\",\"ace/layer/lines\",\"ace/lib/event_emitter\",\"ace/config\",\"ace/layer/text_util\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar dom = require(\"../lib/dom\");\nvar lang = require(\"../lib/lang\");\nvar Lines = require(\"./lines\").Lines;\nvar EventEmitter = require(\"../lib/event_emitter\").EventEmitter;\nvar nls = require(\"../config\").nls;\nvar isTextToken = require(\"./text_util\").isTextToken;\nvar Text = /** @class */ (function () {\n function Text(parentEl) {\n this.dom = dom;\n this.element = this.dom.createElement(\"div\");\n this.element.className = \"ace_layer ace_text-layer\";\n parentEl.appendChild(this.element);\n this.$updateEolChar = this.$updateEolChar.bind(this);\n this.$lines = new Lines(this.element);\n }\n Text.prototype.$updateEolChar = function () {\n var doc = this.session.doc;\n var unixMode = doc.getNewLineCharacter() == \"\\n\" && doc.getNewLineMode() != \"windows\";\n var EOL_CHAR = unixMode ? this.EOL_CHAR_LF : this.EOL_CHAR_CRLF;\n if (this.EOL_CHAR != EOL_CHAR) {\n this.EOL_CHAR = EOL_CHAR;\n return true;\n }\n };\n Text.prototype.setPadding = function (padding) {\n this.$padding = padding;\n this.element.style.margin = \"0 \" + padding + \"px\";\n };\n Text.prototype.getLineHeight = function () {\n return this.$fontMetrics.$characterSize.height || 0;\n };\n Text.prototype.getCharacterWidth = function () {\n return this.$fontMetrics.$characterSize.width || 0;\n };\n Text.prototype.$setFontMetrics = function (measure) {\n this.$fontMetrics = measure;\n this.$fontMetrics.on(\"changeCharacterSize\", function (e) {\n this._signal(\"changeCharacterSize\", e);\n }.bind(this));\n this.$pollSizeChanges();\n };\n Text.prototype.checkForSizeChanges = function () {\n this.$fontMetrics.checkForSizeChanges();\n };\n Text.prototype.$pollSizeChanges = function () {\n return this.$pollSizeChangesTimer = this.$fontMetrics.$pollSizeChanges();\n };\n Text.prototype.setSession = function (session) {\n this.session = session;\n if (session)\n this.$computeTabString();\n };\n Text.prototype.setShowInvisibles = function (showInvisibles) {\n if (this.showInvisibles == showInvisibles)\n return false;\n this.showInvisibles = showInvisibles;\n if (typeof showInvisibles == \"string\") {\n this.showSpaces = /tab/i.test(showInvisibles);\n this.showTabs = /space/i.test(showInvisibles);\n this.showEOL = /eol/i.test(showInvisibles);\n }\n else {\n this.showSpaces = this.showTabs = this.showEOL = showInvisibles;\n }\n this.$computeTabString();\n return true;\n };\n Text.prototype.setDisplayIndentGuides = function (display) {\n if (this.displayIndentGuides == display)\n return false;\n this.displayIndentGuides = display;\n this.$computeTabString();\n return true;\n };\n Text.prototype.setHighlightIndentGuides = function (highlight) {\n if (this.$highlightIndentGuides === highlight)\n return false;\n this.$highlightIndentGuides = highlight;\n return highlight;\n };\n Text.prototype.$computeTabString = function () {\n var tabSize = this.session.getTabSize();\n this.tabSize = tabSize;\n var tabStr = this.$tabStrings = [0];\n for (var i = 1; i < tabSize + 1; i++) {\n if (this.showTabs) {\n var span = this.dom.createElement(\"span\");\n span.className = \"ace_invisible ace_invisible_tab\";\n span.textContent = lang.stringRepeat(this.TAB_CHAR, i);\n tabStr.push(span);\n }\n else {\n tabStr.push(this.dom.createTextNode(lang.stringRepeat(\" \", i), this.element));\n }\n }\n if (this.displayIndentGuides) {\n this.$indentGuideRe = /\\s\\S| \\t|\\t |\\s$/;\n var className = \"ace_indent-guide\";\n var spaceClass = this.showSpaces ? \" ace_invisible ace_invisible_space\" : \"\";\n var spaceContent = this.showSpaces\n ? lang.stringRepeat(this.SPACE_CHAR, this.tabSize)\n : lang.stringRepeat(\" \", this.tabSize);\n var tabClass = this.showTabs ? \" ace_invisible ace_invisible_tab\" : \"\";\n var tabContent = this.showTabs\n ? lang.stringRepeat(this.TAB_CHAR, this.tabSize)\n : spaceContent;\n var span = this.dom.createElement(\"span\");\n span.className = className + spaceClass;\n span.textContent = spaceContent;\n this.$tabStrings[\" \"] = span;\n var span = this.dom.createElement(\"span\");\n span.className = className + tabClass;\n span.textContent = tabContent;\n this.$tabStrings[\"\\t\"] = span;\n }\n };\n Text.prototype.updateLines = function (config, firstRow, lastRow) {\n if (this.config.lastRow != config.lastRow ||\n this.config.firstRow != config.firstRow) {\n return this.update(config);\n }\n this.config = config;\n var first = Math.max(firstRow, config.firstRow);\n var last = Math.min(lastRow, config.lastRow);\n var lineElements = this.element.childNodes;\n var lineElementsIdx = 0;\n for (var row = config.firstRow; row < first; row++) {\n var foldLine = this.session.getFoldLine(row);\n if (foldLine) {\n if (foldLine.containsRow(first)) {\n first = foldLine.start.row;\n break;\n }\n else {\n row = foldLine.end.row;\n }\n }\n lineElementsIdx++;\n }\n var heightChanged = false;\n var row = first;\n var foldLine = this.session.getNextFoldLine(row);\n var foldStart = foldLine ? foldLine.start.row : Infinity;\n while (true) {\n if (row > foldStart) {\n row = foldLine.end.row + 1;\n foldLine = this.session.getNextFoldLine(row, foldLine);\n foldStart = foldLine ? foldLine.start.row : Infinity;\n }\n if (row > last)\n break;\n var lineElement = lineElements[lineElementsIdx++];\n if (lineElement) {\n this.dom.removeChildren(lineElement);\n this.$renderLine(lineElement, row, row == foldStart ? foldLine : false);\n if (heightChanged)\n lineElement.style.top = this.$lines.computeLineTop(row, config, this.session) + \"px\";\n var height = (config.lineHeight * this.session.getRowLength(row)) + \"px\";\n if (lineElement.style.height != height) {\n heightChanged = true;\n lineElement.style.height = height;\n }\n }\n row++;\n }\n if (heightChanged) {\n while (lineElementsIdx < this.$lines.cells.length) {\n var cell = this.$lines.cells[lineElementsIdx++];\n cell.element.style.top = this.$lines.computeLineTop(cell.row, config, this.session) + \"px\";\n }\n }\n };\n Text.prototype.scrollLines = function (config) {\n var oldConfig = this.config;\n this.config = config;\n if (this.$lines.pageChanged(oldConfig, config))\n return this.update(config);\n this.$lines.moveContainer(config);\n var lastRow = config.lastRow;\n var oldLastRow = oldConfig ? oldConfig.lastRow : -1;\n if (!oldConfig || oldLastRow < config.firstRow)\n return this.update(config);\n if (lastRow < oldConfig.firstRow)\n return this.update(config);\n if (!oldConfig || oldConfig.lastRow < config.firstRow)\n return this.update(config);\n if (config.lastRow < oldConfig.firstRow)\n return this.update(config);\n if (oldConfig.firstRow < config.firstRow)\n for (var row = this.session.getFoldedRowCount(oldConfig.firstRow, config.firstRow - 1); row > 0; row--)\n this.$lines.shift();\n if (oldConfig.lastRow > config.lastRow)\n for (var row = this.session.getFoldedRowCount(config.lastRow + 1, oldConfig.lastRow); row > 0; row--)\n this.$lines.pop();\n if (config.firstRow < oldConfig.firstRow) {\n this.$lines.unshift(this.$renderLinesFragment(config, config.firstRow, oldConfig.firstRow - 1));\n }\n if (config.lastRow > oldConfig.lastRow) {\n this.$lines.push(this.$renderLinesFragment(config, oldConfig.lastRow + 1, config.lastRow));\n }\n this.$highlightIndentGuide();\n };\n Text.prototype.$renderLinesFragment = function (config, firstRow, lastRow) {\n var fragment = [];\n var row = firstRow;\n var foldLine = this.session.getNextFoldLine(row);\n var foldStart = foldLine ? foldLine.start.row : Infinity;\n while (true) {\n if (row > foldStart) {\n row = foldLine.end.row + 1;\n foldLine = this.session.getNextFoldLine(row, foldLine);\n foldStart = foldLine ? foldLine.start.row : Infinity;\n }\n if (row > lastRow)\n break;\n var line = this.$lines.createCell(row, config, this.session);\n var lineEl = line.element;\n this.dom.removeChildren(lineEl);\n dom.setStyle(lineEl.style, \"height\", this.$lines.computeLineHeight(row, config, this.session) + \"px\");\n dom.setStyle(lineEl.style, \"top\", this.$lines.computeLineTop(row, config, this.session) + \"px\");\n this.$renderLine(lineEl, row, row == foldStart ? foldLine : false);\n if (this.$useLineGroups()) {\n lineEl.className = \"ace_line_group\";\n }\n else {\n lineEl.className = \"ace_line\";\n }\n fragment.push(line);\n row++;\n }\n return fragment;\n };\n Text.prototype.update = function (config) {\n this.$lines.moveContainer(config);\n this.config = config;\n var firstRow = config.firstRow;\n var lastRow = config.lastRow;\n var lines = this.$lines;\n while (lines.getLength())\n lines.pop();\n lines.push(this.$renderLinesFragment(config, firstRow, lastRow));\n };\n Text.prototype.$renderToken = function (parent, screenColumn, token, value) {\n var self = this;\n var re = /(\\t)|( +)|([\\x00-\\x1f\\x80-\\xa0\\xad\\u1680\\u180E\\u2000-\\u200f\\u2028\\u2029\\u202F\\u205F\\uFEFF\\uFFF9-\\uFFFC\\u2066\\u2067\\u2068\\u202A\\u202B\\u202D\\u202E\\u202C\\u2069]+)|(\\u3000)|([\\u1100-\\u115F\\u11A3-\\u11A7\\u11FA-\\u11FF\\u2329-\\u232A\\u2E80-\\u2E99\\u2E9B-\\u2EF3\\u2F00-\\u2FD5\\u2FF0-\\u2FFB\\u3001-\\u303E\\u3041-\\u3096\\u3099-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u3190-\\u31BA\\u31C0-\\u31E3\\u31F0-\\u321E\\u3220-\\u3247\\u3250-\\u32FE\\u3300-\\u4DBF\\u4E00-\\uA48C\\uA490-\\uA4C6\\uA960-\\uA97C\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFAFF\\uFE10-\\uFE19\\uFE30-\\uFE52\\uFE54-\\uFE66\\uFE68-\\uFE6B\\uFF01-\\uFF60\\uFFE0-\\uFFE6]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF])/g;\n var valueFragment = this.dom.createFragment(this.element);\n var m;\n var i = 0;\n while (m = re.exec(value)) {\n var tab = m[1];\n var simpleSpace = m[2];\n var controlCharacter = m[3];\n var cjkSpace = m[4];\n var cjk = m[5];\n if (!self.showSpaces && simpleSpace)\n continue;\n var before = i != m.index ? value.slice(i, m.index) : \"\";\n i = m.index + m[0].length;\n if (before) {\n valueFragment.appendChild(this.dom.createTextNode(before, this.element));\n }\n if (tab) {\n var tabSize = self.session.getScreenTabSize(screenColumn + m.index);\n valueFragment.appendChild(self.$tabStrings[tabSize].cloneNode(true));\n screenColumn += tabSize - 1;\n }\n else if (simpleSpace) {\n if (self.showSpaces) {\n var span = this.dom.createElement(\"span\");\n span.className = \"ace_invisible ace_invisible_space\";\n span.textContent = lang.stringRepeat(self.SPACE_CHAR, simpleSpace.length);\n valueFragment.appendChild(span);\n }\n else {\n valueFragment.appendChild(this.dom.createTextNode(simpleSpace, this.element));\n }\n }\n else if (controlCharacter) {\n var span = this.dom.createElement(\"span\");\n span.className = \"ace_invisible ace_invisible_space ace_invalid\";\n span.textContent = lang.stringRepeat(self.SPACE_CHAR, controlCharacter.length);\n valueFragment.appendChild(span);\n }\n else if (cjkSpace) {\n screenColumn += 1;\n var span = this.dom.createElement(\"span\");\n span.style.width = (self.config.characterWidth * 2) + \"px\";\n span.className = self.showSpaces ? \"ace_cjk ace_invisible ace_invisible_space\" : \"ace_cjk\";\n span.textContent = self.showSpaces ? self.SPACE_CHAR : cjkSpace;\n valueFragment.appendChild(span);\n }\n else if (cjk) {\n screenColumn += 1;\n var span = this.dom.createElement(\"span\");\n span.style.width = (self.config.characterWidth * 2) + \"px\";\n span.className = \"ace_cjk\";\n span.textContent = cjk;\n valueFragment.appendChild(span);\n }\n }\n valueFragment.appendChild(this.dom.createTextNode(i ? value.slice(i) : value, this.element));\n if (!isTextToken(token.type)) {\n var classes = \"ace_\" + token.type.replace(/\\./g, \" ace_\");\n var span = this.dom.createElement(\"span\");\n if (token.type == \"fold\") {\n span.style.width = (token.value.length * this.config.characterWidth) + \"px\";\n span.setAttribute(\"title\", nls(\"Unfold code\"));\n }\n span.className = classes;\n span.appendChild(valueFragment);\n parent.appendChild(span);\n }\n else {\n parent.appendChild(valueFragment);\n }\n return screenColumn + value.length;\n };\n Text.prototype.renderIndentGuide = function (parent, value, max) {\n var cols = value.search(this.$indentGuideRe);\n if (cols <= 0 || cols >= max)\n return value;\n if (value[0] == \" \") {\n cols -= cols % this.tabSize;\n var count = cols / this.tabSize;\n for (var i = 0; i < count; i++) {\n parent.appendChild(this.$tabStrings[\" \"].cloneNode(true));\n }\n this.$highlightIndentGuide();\n return value.substr(cols);\n }\n else if (value[0] == \"\\t\") {\n for (var i = 0; i < cols; i++) {\n parent.appendChild(this.$tabStrings[\"\\t\"].cloneNode(true));\n }\n this.$highlightIndentGuide();\n return value.substr(cols);\n }\n this.$highlightIndentGuide();\n return value;\n };\n Text.prototype.$highlightIndentGuide = function () {\n if (!this.$highlightIndentGuides || !this.displayIndentGuides)\n return;\n this.$highlightIndentGuideMarker = {\n indentLevel: undefined,\n start: undefined,\n end: undefined,\n dir: undefined\n };\n var lines = this.session.doc.$lines;\n if (!lines)\n return;\n var cursor = this.session.selection.getCursor();\n var initialIndent = /^\\s*/.exec(this.session.doc.getLine(cursor.row))[0].length;\n var elementIndentLevel = Math.floor(initialIndent / this.tabSize);\n this.$highlightIndentGuideMarker = {\n indentLevel: elementIndentLevel,\n start: cursor.row\n };\n var bracketHighlight = this.session.$bracketHighlight;\n if (bracketHighlight) {\n var ranges = this.session.$bracketHighlight.ranges;\n for (var i = 0; i < ranges.length; i++) {\n if (cursor.row !== ranges[i].start.row) {\n this.$highlightIndentGuideMarker.end = ranges[i].start.row;\n if (cursor.row > ranges[i].start.row) {\n this.$highlightIndentGuideMarker.dir = -1;\n }\n else {\n this.$highlightIndentGuideMarker.dir = 1;\n }\n break;\n }\n }\n }\n if (!this.$highlightIndentGuideMarker.end) {\n if (lines[cursor.row] !== '' && cursor.column === lines[cursor.row].length) {\n this.$highlightIndentGuideMarker.dir = 1;\n for (var i = cursor.row + 1; i < lines.length; i++) {\n var line = lines[i];\n var currentIndent = /^\\s*/.exec(line)[0].length;\n if (line !== '') {\n this.$highlightIndentGuideMarker.end = i;\n if (currentIndent <= initialIndent)\n break;\n }\n }\n }\n }\n this.$renderHighlightIndentGuide();\n };\n Text.prototype.$clearActiveIndentGuide = function () {\n var cells = this.$lines.cells;\n for (var i = 0; i < cells.length; i++) {\n var cell = cells[i];\n var childNodes = cell.element.childNodes;\n if (childNodes.length > 0) {\n for (var j = 0; j < childNodes.length; j++) {\n if (childNodes[j].classList && childNodes[j].classList.contains(\"ace_indent-guide-active\")) {\n childNodes[j].classList.remove(\"ace_indent-guide-active\");\n break;\n }\n }\n }\n }\n };\n Text.prototype.$setIndentGuideActive = function (cell, indentLevel) {\n var line = this.session.doc.getLine(cell.row);\n if (line !== \"\") {\n var childNodes = cell.element.childNodes;\n if (childNodes) {\n var node = childNodes[indentLevel - 1];\n if (node && node.classList && node.classList.contains(\"ace_indent-guide\"))\n node.classList.add(\"ace_indent-guide-active\");\n }\n }\n };\n Text.prototype.$renderHighlightIndentGuide = function () {\n if (!this.$lines)\n return;\n var cells = this.$lines.cells;\n this.$clearActiveIndentGuide();\n var indentLevel = this.$highlightIndentGuideMarker.indentLevel;\n if (indentLevel !== 0) {\n if (this.$highlightIndentGuideMarker.dir === 1) {\n for (var i = 0; i < cells.length; i++) {\n var cell = cells[i];\n if (this.$highlightIndentGuideMarker.end && cell.row >= this.$highlightIndentGuideMarker.start\n + 1) {\n if (cell.row >= this.$highlightIndentGuideMarker.end)\n break;\n this.$setIndentGuideActive(cell, indentLevel);\n }\n }\n }\n else {\n for (var i = cells.length - 1; i >= 0; i--) {\n var cell = cells[i];\n if (this.$highlightIndentGuideMarker.end && cell.row < this.$highlightIndentGuideMarker.start) {\n if (cell.row <= this.$highlightIndentGuideMarker.end)\n break;\n this.$setIndentGuideActive(cell, indentLevel);\n }\n }\n }\n }\n };\n Text.prototype.$createLineElement = function (parent) {\n var lineEl = this.dom.createElement(\"div\");\n lineEl.className = \"ace_line\";\n lineEl.style.height = this.config.lineHeight + \"px\";\n return lineEl;\n };\n Text.prototype.$renderWrappedLine = function (parent, tokens, splits) {\n var chars = 0;\n var split = 0;\n var splitChars = splits[0];\n var screenColumn = 0;\n var lineEl = this.$createLineElement();\n parent.appendChild(lineEl);\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n var value = token.value;\n if (i == 0 && this.displayIndentGuides) {\n chars = value.length;\n value = this.renderIndentGuide(lineEl, value, splitChars);\n if (!value)\n continue;\n chars -= value.length;\n }\n if (chars + value.length < splitChars) {\n screenColumn = this.$renderToken(lineEl, screenColumn, token, value);\n chars += value.length;\n }\n else {\n while (chars + value.length >= splitChars) {\n screenColumn = this.$renderToken(lineEl, screenColumn, token, value.substring(0, splitChars - chars));\n value = value.substring(splitChars - chars);\n chars = splitChars;\n lineEl = this.$createLineElement();\n parent.appendChild(lineEl);\n lineEl.appendChild(this.dom.createTextNode(lang.stringRepeat(\"\\xa0\", splits.indent), this.element));\n split++;\n screenColumn = 0;\n splitChars = splits[split] || Number.MAX_VALUE;\n }\n if (value.length != 0) {\n chars += value.length;\n screenColumn = this.$renderToken(lineEl, screenColumn, token, value);\n }\n }\n }\n if (splits[splits.length - 1] > this.MAX_LINE_LENGTH)\n this.$renderOverflowMessage(lineEl, screenColumn, null, \"\", true);\n };\n Text.prototype.$renderSimpleLine = function (parent, tokens) {\n var screenColumn = 0;\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n var value = token.value;\n if (i == 0 && this.displayIndentGuides) {\n value = this.renderIndentGuide(parent, value);\n if (!value)\n continue;\n }\n if (screenColumn + value.length > this.MAX_LINE_LENGTH)\n return this.$renderOverflowMessage(parent, screenColumn, token, value);\n screenColumn = this.$renderToken(parent, screenColumn, token, value);\n }\n };\n Text.prototype.$renderOverflowMessage = function (parent, screenColumn, token, value, hide) {\n token && this.$renderToken(parent, screenColumn, token, value.slice(0, this.MAX_LINE_LENGTH - screenColumn));\n var overflowEl = this.dom.createElement(\"span\");\n overflowEl.className = \"ace_inline_button ace_keyword ace_toggle_wrap\";\n overflowEl.textContent = hide ? \"\" : \"\";\n parent.appendChild(overflowEl);\n };\n Text.prototype.$renderLine = function (parent, row, foldLine) {\n if (!foldLine && foldLine != false)\n foldLine = this.session.getFoldLine(row);\n if (foldLine)\n var tokens = this.$getFoldLineTokens(row, foldLine);\n else\n var tokens = this.session.getTokens(row);\n var lastLineEl = parent;\n if (tokens.length) {\n var splits = this.session.getRowSplitData(row);\n if (splits && splits.length) {\n this.$renderWrappedLine(parent, tokens, splits);\n var lastLineEl = parent.lastChild;\n }\n else {\n var lastLineEl = parent;\n if (this.$useLineGroups()) {\n lastLineEl = this.$createLineElement();\n parent.appendChild(lastLineEl);\n }\n this.$renderSimpleLine(lastLineEl, tokens);\n }\n }\n else if (this.$useLineGroups()) {\n lastLineEl = this.$createLineElement();\n parent.appendChild(lastLineEl);\n }\n if (this.showEOL && lastLineEl) {\n if (foldLine)\n row = foldLine.end.row;\n var invisibleEl = this.dom.createElement(\"span\");\n invisibleEl.className = \"ace_invisible ace_invisible_eol\";\n invisibleEl.textContent = row == this.session.getLength() - 1 ? this.EOF_CHAR : this.EOL_CHAR;\n lastLineEl.appendChild(invisibleEl);\n }\n };\n Text.prototype.$getFoldLineTokens = function (row, foldLine) {\n var session = this.session;\n var renderTokens = [];\n function addTokens(tokens, from, to) {\n var idx = 0, col = 0;\n while ((col + tokens[idx].value.length) < from) {\n col += tokens[idx].value.length;\n idx++;\n if (idx == tokens.length)\n return;\n }\n if (col != from) {\n var value = tokens[idx].value.substring(from - col);\n if (value.length > (to - from))\n value = value.substring(0, to - from);\n renderTokens.push({\n type: tokens[idx].type,\n value: value\n });\n col = from + value.length;\n idx += 1;\n }\n while (col < to && idx < tokens.length) {\n var value = tokens[idx].value;\n if (value.length + col > to) {\n renderTokens.push({\n type: tokens[idx].type,\n value: value.substring(0, to - col)\n });\n }\n else\n renderTokens.push(tokens[idx]);\n col += value.length;\n idx += 1;\n }\n }\n var tokens = session.getTokens(row);\n foldLine.walk(function (placeholder, row, column, lastColumn, isNewRow) {\n if (placeholder != null) {\n renderTokens.push({\n type: \"fold\",\n value: placeholder\n });\n }\n else {\n if (isNewRow)\n tokens = session.getTokens(row);\n if (tokens.length)\n addTokens(tokens, lastColumn, column);\n }\n }, foldLine.end.row, this.session.getLine(foldLine.end.row).length);\n return renderTokens;\n };\n Text.prototype.$useLineGroups = function () {\n return this.session.getUseWrapMode();\n };\n return Text;\n}());\nText.prototype.EOF_CHAR = \"\\xB6\";\nText.prototype.EOL_CHAR_LF = \"\\xAC\";\nText.prototype.EOL_CHAR_CRLF = \"\\xa4\";\nText.prototype.EOL_CHAR = Text.prototype.EOL_CHAR_LF;\nText.prototype.TAB_CHAR = \"\\u2014\"; //\"\\u21E5\";\nText.prototype.SPACE_CHAR = \"\\xB7\";\nText.prototype.$padding = 0;\nText.prototype.MAX_LINE_LENGTH = 10000;\nText.prototype.showInvisibles = false;\nText.prototype.showSpaces = false;\nText.prototype.showTabs = false;\nText.prototype.showEOL = false;\nText.prototype.displayIndentGuides = true;\nText.prototype.$highlightIndentGuides = true;\nText.prototype.$tabStrings = [];\nText.prototype.destroy = {};\nText.prototype.onChangeTabSize = Text.prototype.$computeTabString;\noop.implement(Text.prototype, EventEmitter);\nexports.Text = Text;\n\n});\n\nace.define(\"ace/layer/cursor\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"], function(require, exports, module){\"use strict\";\nvar dom = require(\"../lib/dom\");\nvar Cursor = /** @class */ (function () {\n function Cursor(parentEl) {\n this.element = dom.createElement(\"div\");\n this.element.className = \"ace_layer ace_cursor-layer\";\n parentEl.appendChild(this.element);\n this.isVisible = false;\n this.isBlinking = true;\n this.blinkInterval = 1000;\n this.smoothBlinking = false;\n this.cursors = [];\n this.cursor = this.addCursor();\n dom.addCssClass(this.element, \"ace_hidden-cursors\");\n this.$updateCursors = this.$updateOpacity.bind(this);\n }\n Cursor.prototype.$updateOpacity = function (val) {\n var cursors = this.cursors;\n for (var i = cursors.length; i--;)\n dom.setStyle(cursors[i].style, \"opacity\", val ? \"\" : \"0\");\n };\n Cursor.prototype.$startCssAnimation = function () {\n var cursors = this.cursors;\n for (var i = cursors.length; i--;)\n cursors[i].style.animationDuration = this.blinkInterval + \"ms\";\n this.$isAnimating = true;\n setTimeout(function () {\n if (this.$isAnimating) {\n dom.addCssClass(this.element, \"ace_animate-blinking\");\n }\n }.bind(this));\n };\n Cursor.prototype.$stopCssAnimation = function () {\n this.$isAnimating = false;\n dom.removeCssClass(this.element, \"ace_animate-blinking\");\n };\n Cursor.prototype.setPadding = function (padding) {\n this.$padding = padding;\n };\n Cursor.prototype.setSession = function (session) {\n this.session = session;\n };\n Cursor.prototype.setBlinking = function (blinking) {\n if (blinking != this.isBlinking) {\n this.isBlinking = blinking;\n this.restartTimer();\n }\n };\n Cursor.prototype.setBlinkInterval = function (blinkInterval) {\n if (blinkInterval != this.blinkInterval) {\n this.blinkInterval = blinkInterval;\n this.restartTimer();\n }\n };\n Cursor.prototype.setSmoothBlinking = function (smoothBlinking) {\n if (smoothBlinking != this.smoothBlinking) {\n this.smoothBlinking = smoothBlinking;\n dom.setCssClass(this.element, \"ace_smooth-blinking\", smoothBlinking);\n this.$updateCursors(true);\n this.restartTimer();\n }\n };\n Cursor.prototype.addCursor = function () {\n var el = dom.createElement(\"div\");\n el.className = \"ace_cursor\";\n this.element.appendChild(el);\n this.cursors.push(el);\n return el;\n };\n Cursor.prototype.removeCursor = function () {\n if (this.cursors.length > 1) {\n var el = this.cursors.pop();\n el.parentNode.removeChild(el);\n return el;\n }\n };\n Cursor.prototype.hideCursor = function () {\n this.isVisible = false;\n dom.addCssClass(this.element, \"ace_hidden-cursors\");\n this.restartTimer();\n };\n Cursor.prototype.showCursor = function () {\n this.isVisible = true;\n dom.removeCssClass(this.element, \"ace_hidden-cursors\");\n this.restartTimer();\n };\n Cursor.prototype.restartTimer = function () {\n var update = this.$updateCursors;\n clearInterval(this.intervalId);\n clearTimeout(this.timeoutId);\n this.$stopCssAnimation();\n if (this.smoothBlinking) {\n this.$isSmoothBlinking = false;\n dom.removeCssClass(this.element, \"ace_smooth-blinking\");\n }\n update(true);\n if (!this.isBlinking || !this.blinkInterval || !this.isVisible) {\n this.$stopCssAnimation();\n return;\n }\n if (this.smoothBlinking) {\n this.$isSmoothBlinking = true;\n setTimeout(function () {\n if (this.$isSmoothBlinking) {\n dom.addCssClass(this.element, \"ace_smooth-blinking\");\n }\n }.bind(this));\n }\n if (dom.HAS_CSS_ANIMATION) {\n this.$startCssAnimation();\n }\n else {\n var blink = function () {\n this.timeoutId = setTimeout(function () {\n update(false);\n }, 0.6 * this.blinkInterval);\n }.bind(this);\n this.intervalId = setInterval(function () {\n update(true);\n blink();\n }, this.blinkInterval);\n blink();\n }\n };\n Cursor.prototype.getPixelPosition = function (position, onScreen) {\n if (!this.config || !this.session)\n return { left: 0, top: 0 };\n if (!position)\n position = this.session.selection.getCursor();\n var pos = this.session.documentToScreenPosition(position);\n var cursorLeft = this.$padding + (this.session.$bidiHandler.isBidiRow(pos.row, position.row)\n ? this.session.$bidiHandler.getPosLeft(pos.column)\n : pos.column * this.config.characterWidth);\n var cursorTop = (pos.row - (onScreen ? this.config.firstRowScreen : 0)) *\n this.config.lineHeight;\n return { left: cursorLeft, top: cursorTop };\n };\n Cursor.prototype.isCursorInView = function (pixelPos, config) {\n return pixelPos.top >= 0 && pixelPos.top < config.maxHeight;\n };\n Cursor.prototype.update = function (config) {\n this.config = config;\n var selections = this.session.$selectionMarkers;\n var i = 0, cursorIndex = 0;\n if (selections === undefined || selections.length === 0) {\n selections = [{ cursor: null }];\n }\n for (var i = 0, n = selections.length; i < n; i++) {\n var pixelPos = this.getPixelPosition(selections[i].cursor, true);\n if ((pixelPos.top > config.height + config.offset ||\n pixelPos.top < 0) && i > 1) {\n continue;\n }\n var element = this.cursors[cursorIndex++] || this.addCursor();\n var style = element.style;\n if (!this.drawCursor) {\n if (!this.isCursorInView(pixelPos, config)) {\n dom.setStyle(style, \"display\", \"none\");\n }\n else {\n dom.setStyle(style, \"display\", \"block\");\n dom.translate(element, pixelPos.left, pixelPos.top);\n dom.setStyle(style, \"width\", Math.round(config.characterWidth) + \"px\");\n dom.setStyle(style, \"height\", config.lineHeight + \"px\");\n }\n }\n else {\n this.drawCursor(element, pixelPos, config, selections[i], this.session);\n }\n }\n while (this.cursors.length > cursorIndex)\n this.removeCursor();\n var overwrite = this.session.getOverwrite();\n this.$setOverwrite(overwrite);\n this.$pixelPos = pixelPos;\n this.restartTimer();\n };\n Cursor.prototype.$setOverwrite = function (overwrite) {\n if (overwrite != this.overwrite) {\n this.overwrite = overwrite;\n if (overwrite)\n dom.addCssClass(this.element, \"ace_overwrite-cursors\");\n else\n dom.removeCssClass(this.element, \"ace_overwrite-cursors\");\n }\n };\n Cursor.prototype.destroy = function () {\n clearInterval(this.intervalId);\n clearTimeout(this.timeoutId);\n };\n return Cursor;\n}());\nCursor.prototype.$padding = 0;\nCursor.prototype.drawCursor = null;\nexports.Cursor = Cursor;\n\n});\n\nace.define(\"ace/scrollbar\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/dom\",\"ace/lib/event\",\"ace/lib/event_emitter\"], function(require, exports, module){\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar oop = require(\"./lib/oop\");\nvar dom = require(\"./lib/dom\");\nvar event = require(\"./lib/event\");\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar MAX_SCROLL_H = 0x8000;\nvar Scrollbar = /** @class */ (function () {\n function Scrollbar(parent, classSuffix) {\n this.element = dom.createElement(\"div\");\n this.element.className = \"ace_scrollbar ace_scrollbar\" + classSuffix;\n this.inner = dom.createElement(\"div\");\n this.inner.className = \"ace_scrollbar-inner\";\n this.inner.textContent = \"\\xa0\";\n this.element.appendChild(this.inner);\n parent.appendChild(this.element);\n this.setVisible(false);\n this.skipEvent = false;\n event.addListener(this.element, \"scroll\", this.onScroll.bind(this));\n event.addListener(this.element, \"mousedown\", event.preventDefault);\n }\n Scrollbar.prototype.setVisible = function (isVisible) {\n this.element.style.display = isVisible ? \"\" : \"none\";\n this.isVisible = isVisible;\n this.coeff = 1;\n };\n return Scrollbar;\n}());\noop.implement(Scrollbar.prototype, EventEmitter);\nvar VScrollBar = /** @class */ (function (_super) {\n __extends(VScrollBar, _super);\n function VScrollBar(parent, renderer) {\n var _this = _super.call(this, parent, '-v') || this;\n _this.scrollTop = 0;\n _this.scrollHeight = 0;\n renderer.$scrollbarWidth =\n _this.width = dom.scrollbarWidth(parent.ownerDocument);\n _this.inner.style.width =\n _this.element.style.width = (_this.width || 15) + 5 + \"px\";\n _this.$minWidth = 0;\n return _this;\n }\n VScrollBar.prototype.onScroll = function () {\n if (!this.skipEvent) {\n this.scrollTop = this.element.scrollTop;\n if (this.coeff != 1) {\n var h = this.element.clientHeight / this.scrollHeight;\n this.scrollTop = this.scrollTop * (1 - h) / (this.coeff - h);\n }\n this._emit(\"scroll\", { data: this.scrollTop });\n }\n this.skipEvent = false;\n };\n VScrollBar.prototype.getWidth = function () {\n return Math.max(this.isVisible ? this.width : 0, this.$minWidth || 0);\n };\n VScrollBar.prototype.setHeight = function (height) {\n this.element.style.height = height + \"px\";\n };\n VScrollBar.prototype.setScrollHeight = function (height) {\n this.scrollHeight = height;\n if (height > MAX_SCROLL_H) {\n this.coeff = MAX_SCROLL_H / height;\n height = MAX_SCROLL_H;\n }\n else if (this.coeff != 1) {\n this.coeff = 1;\n }\n this.inner.style.height = height + \"px\";\n };\n VScrollBar.prototype.setScrollTop = function (scrollTop) {\n if (this.scrollTop != scrollTop) {\n this.skipEvent = true;\n this.scrollTop = scrollTop;\n this.element.scrollTop = scrollTop * this.coeff;\n }\n };\n return VScrollBar;\n}(Scrollbar));\nVScrollBar.prototype.setInnerHeight = VScrollBar.prototype.setScrollHeight;\nvar HScrollBar = /** @class */ (function (_super) {\n __extends(HScrollBar, _super);\n function HScrollBar(parent, renderer) {\n var _this = _super.call(this, parent, '-h') || this;\n _this.scrollLeft = 0;\n _this.height = renderer.$scrollbarWidth;\n _this.inner.style.height =\n _this.element.style.height = (_this.height || 15) + 5 + \"px\";\n return _this;\n }\n HScrollBar.prototype.onScroll = function () {\n if (!this.skipEvent) {\n this.scrollLeft = this.element.scrollLeft;\n this._emit(\"scroll\", { data: this.scrollLeft });\n }\n this.skipEvent = false;\n };\n HScrollBar.prototype.getHeight = function () {\n return this.isVisible ? this.height : 0;\n };\n HScrollBar.prototype.setWidth = function (width) {\n this.element.style.width = width + \"px\";\n };\n HScrollBar.prototype.setInnerWidth = function (width) {\n this.inner.style.width = width + \"px\";\n };\n HScrollBar.prototype.setScrollWidth = function (width) {\n this.inner.style.width = width + \"px\";\n };\n HScrollBar.prototype.setScrollLeft = function (scrollLeft) {\n if (this.scrollLeft != scrollLeft) {\n this.skipEvent = true;\n this.scrollLeft = this.element.scrollLeft = scrollLeft;\n }\n };\n return HScrollBar;\n}(Scrollbar));\nexports.ScrollBar = VScrollBar; // backward compatibility\nexports.ScrollBarV = VScrollBar; // backward compatibility\nexports.ScrollBarH = HScrollBar; // backward compatibility\nexports.VScrollBar = VScrollBar;\nexports.HScrollBar = HScrollBar;\n\n});\n\nace.define(\"ace/scrollbar_custom\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/dom\",\"ace/lib/event\",\"ace/lib/event_emitter\"], function(require, exports, module){\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar oop = require(\"./lib/oop\");\nvar dom = require(\"./lib/dom\");\nvar event = require(\"./lib/event\");\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\ndom.importCssString(\".ace_editor>.ace_sb-v div, .ace_editor>.ace_sb-h div{\\n position: absolute;\\n background: rgba(128, 128, 128, 0.6);\\n -moz-box-sizing: border-box;\\n box-sizing: border-box;\\n border: 1px solid #bbb;\\n border-radius: 2px;\\n z-index: 8;\\n}\\n.ace_editor>.ace_sb-v, .ace_editor>.ace_sb-h {\\n position: absolute;\\n z-index: 6;\\n background: none;\\n overflow: hidden!important;\\n}\\n.ace_editor>.ace_sb-v {\\n z-index: 6;\\n right: 0;\\n top: 0;\\n width: 12px;\\n}\\n.ace_editor>.ace_sb-v div {\\n z-index: 8;\\n right: 0;\\n width: 100%;\\n}\\n.ace_editor>.ace_sb-h {\\n bottom: 0;\\n left: 0;\\n height: 12px;\\n}\\n.ace_editor>.ace_sb-h div {\\n bottom: 0;\\n height: 100%;\\n}\\n.ace_editor>.ace_sb_grabbed {\\n z-index: 8;\\n background: #000;\\n}\", \"ace_scrollbar.css\", false);\nvar ScrollBar = /** @class */ (function () {\n function ScrollBar(parent, classSuffix) {\n this.element = dom.createElement(\"div\");\n this.element.className = \"ace_sb\" + classSuffix;\n this.inner = dom.createElement(\"div\");\n this.inner.className = \"\";\n this.element.appendChild(this.inner);\n this.VScrollWidth = 12;\n this.HScrollHeight = 12;\n parent.appendChild(this.element);\n this.setVisible(false);\n this.skipEvent = false;\n event.addMultiMouseDownListener(this.element, [500, 300, 300], this, \"onMouseDown\");\n }\n ScrollBar.prototype.setVisible = function (isVisible) {\n this.element.style.display = isVisible ? \"\" : \"none\";\n this.isVisible = isVisible;\n this.coeff = 1;\n };\n return ScrollBar;\n}());\noop.implement(ScrollBar.prototype, EventEmitter);\nvar VScrollBar = /** @class */ (function (_super) {\n __extends(VScrollBar, _super);\n function VScrollBar(parent, renderer) {\n var _this = _super.call(this, parent, '-v') || this;\n _this.scrollTop = 0;\n _this.scrollHeight = 0;\n _this.parent = parent;\n _this.width = _this.VScrollWidth;\n _this.renderer = renderer;\n _this.inner.style.width = _this.element.style.width = (_this.width || 15) + \"px\";\n _this.$minWidth = 0;\n return _this;\n }\n VScrollBar.prototype.onMouseDown = function (eType, e) {\n if (eType !== \"mousedown\")\n return;\n if (event.getButton(e) !== 0 || e.detail === 2) {\n return;\n }\n if (e.target === this.inner) {\n var self = this;\n var mousePageY = e.clientY;\n var onMouseMove = function (e) {\n mousePageY = e.clientY;\n };\n var onMouseUp = function () {\n clearInterval(timerId);\n };\n var startY = e.clientY;\n var startTop = this.thumbTop;\n var onScrollInterval = function () {\n if (mousePageY === undefined)\n return;\n var scrollTop = self.scrollTopFromThumbTop(startTop + mousePageY - startY);\n if (scrollTop === self.scrollTop)\n return;\n self._emit(\"scroll\", { data: scrollTop });\n };\n event.capture(this.inner, onMouseMove, onMouseUp);\n var timerId = setInterval(onScrollInterval, 20);\n return event.preventDefault(e);\n }\n var top = e.clientY - this.element.getBoundingClientRect().top - this.thumbHeight / 2;\n this._emit(\"scroll\", { data: this.scrollTopFromThumbTop(top) });\n return event.preventDefault(e);\n };\n VScrollBar.prototype.getHeight = function () {\n return this.height;\n };\n VScrollBar.prototype.scrollTopFromThumbTop = function (thumbTop) {\n var scrollTop = thumbTop * (this.pageHeight - this.viewHeight) / (this.slideHeight - this.thumbHeight);\n scrollTop = scrollTop >> 0;\n if (scrollTop < 0) {\n scrollTop = 0;\n }\n else if (scrollTop > this.pageHeight - this.viewHeight) {\n scrollTop = this.pageHeight - this.viewHeight;\n }\n return scrollTop;\n };\n VScrollBar.prototype.getWidth = function () {\n return Math.max(this.isVisible ? this.width : 0, this.$minWidth || 0);\n };\n VScrollBar.prototype.setHeight = function (height) {\n this.height = Math.max(0, height);\n this.slideHeight = this.height;\n this.viewHeight = this.height;\n this.setScrollHeight(this.pageHeight, true);\n };\n VScrollBar.prototype.setScrollHeight = function (height, force) {\n if (this.pageHeight === height && !force)\n return;\n this.pageHeight = height;\n this.thumbHeight = this.slideHeight * this.viewHeight / this.pageHeight;\n if (this.thumbHeight > this.slideHeight)\n this.thumbHeight = this.slideHeight;\n if (this.thumbHeight < 15)\n this.thumbHeight = 15;\n this.inner.style.height = this.thumbHeight + \"px\";\n if (this.scrollTop > (this.pageHeight - this.viewHeight)) {\n this.scrollTop = (this.pageHeight - this.viewHeight);\n if (this.scrollTop < 0)\n this.scrollTop = 0;\n this._emit(\"scroll\", { data: this.scrollTop });\n }\n };\n VScrollBar.prototype.setScrollTop = function (scrollTop) {\n this.scrollTop = scrollTop;\n if (scrollTop < 0)\n scrollTop = 0;\n this.thumbTop = scrollTop * (this.slideHeight - this.thumbHeight) / (this.pageHeight - this.viewHeight);\n this.inner.style.top = this.thumbTop + \"px\";\n };\n return VScrollBar;\n}(ScrollBar));\nVScrollBar.prototype.setInnerHeight = VScrollBar.prototype.setScrollHeight;\nvar HScrollBar = /** @class */ (function (_super) {\n __extends(HScrollBar, _super);\n function HScrollBar(parent, renderer) {\n var _this = _super.call(this, parent, '-h') || this;\n _this.scrollLeft = 0;\n _this.scrollWidth = 0;\n _this.height = _this.HScrollHeight;\n _this.inner.style.height = _this.element.style.height = (_this.height || 12) + \"px\";\n _this.renderer = renderer;\n return _this;\n }\n HScrollBar.prototype.onMouseDown = function (eType, e) {\n if (eType !== \"mousedown\")\n return;\n if (event.getButton(e) !== 0 || e.detail === 2) {\n return;\n }\n if (e.target === this.inner) {\n var self = this;\n var mousePageX = e.clientX;\n var onMouseMove = function (e) {\n mousePageX = e.clientX;\n };\n var onMouseUp = function () {\n clearInterval(timerId);\n };\n var startX = e.clientX;\n var startLeft = this.thumbLeft;\n var onScrollInterval = function () {\n if (mousePageX === undefined)\n return;\n var scrollLeft = self.scrollLeftFromThumbLeft(startLeft + mousePageX - startX);\n if (scrollLeft === self.scrollLeft)\n return;\n self._emit(\"scroll\", { data: scrollLeft });\n };\n event.capture(this.inner, onMouseMove, onMouseUp);\n var timerId = setInterval(onScrollInterval, 20);\n return event.preventDefault(e);\n }\n var left = e.clientX - this.element.getBoundingClientRect().left - this.thumbWidth / 2;\n this._emit(\"scroll\", { data: this.scrollLeftFromThumbLeft(left) });\n return event.preventDefault(e);\n };\n HScrollBar.prototype.getHeight = function () {\n return this.isVisible ? this.height : 0;\n };\n HScrollBar.prototype.scrollLeftFromThumbLeft = function (thumbLeft) {\n var scrollLeft = thumbLeft * (this.pageWidth - this.viewWidth) / (this.slideWidth - this.thumbWidth);\n scrollLeft = scrollLeft >> 0;\n if (scrollLeft < 0) {\n scrollLeft = 0;\n }\n else if (scrollLeft > this.pageWidth - this.viewWidth) {\n scrollLeft = this.pageWidth - this.viewWidth;\n }\n return scrollLeft;\n };\n HScrollBar.prototype.setWidth = function (width) {\n this.width = Math.max(0, width);\n this.element.style.width = this.width + \"px\";\n this.slideWidth = this.width;\n this.viewWidth = this.width;\n this.setScrollWidth(this.pageWidth, true);\n };\n HScrollBar.prototype.setScrollWidth = function (width, force) {\n if (this.pageWidth === width && !force)\n return;\n this.pageWidth = width;\n this.thumbWidth = this.slideWidth * this.viewWidth / this.pageWidth;\n if (this.thumbWidth > this.slideWidth)\n this.thumbWidth = this.slideWidth;\n if (this.thumbWidth < 15)\n this.thumbWidth = 15;\n this.inner.style.width = this.thumbWidth + \"px\";\n if (this.scrollLeft > (this.pageWidth - this.viewWidth)) {\n this.scrollLeft = (this.pageWidth - this.viewWidth);\n if (this.scrollLeft < 0)\n this.scrollLeft = 0;\n this._emit(\"scroll\", { data: this.scrollLeft });\n }\n };\n HScrollBar.prototype.setScrollLeft = function (scrollLeft) {\n this.scrollLeft = scrollLeft;\n if (scrollLeft < 0)\n scrollLeft = 0;\n this.thumbLeft = scrollLeft * (this.slideWidth - this.thumbWidth) / (this.pageWidth - this.viewWidth);\n this.inner.style.left = (this.thumbLeft) + \"px\";\n };\n return HScrollBar;\n}(ScrollBar));\nHScrollBar.prototype.setInnerWidth = HScrollBar.prototype.setScrollWidth;\nexports.ScrollBar = VScrollBar; // backward compatibility\nexports.ScrollBarV = VScrollBar; // backward compatibility\nexports.ScrollBarH = HScrollBar; // backward compatibility\nexports.VScrollBar = VScrollBar;\nexports.HScrollBar = HScrollBar;\n\n});\n\nace.define(\"ace/renderloop\",[\"require\",\"exports\",\"module\",\"ace/lib/event\"], function(require, exports, module){\"use strict\";\nvar event = require(\"./lib/event\");\nvar RenderLoop = /** @class */ (function () {\n function RenderLoop(onRender, win) {\n this.onRender = onRender;\n this.pending = false;\n this.changes = 0;\n this.$recursionLimit = 2;\n this.window = win || window;\n var _self = this;\n this._flush = function (ts) {\n _self.pending = false;\n var changes = _self.changes;\n if (changes) {\n event.blockIdle(100);\n _self.changes = 0;\n _self.onRender(changes);\n }\n if (_self.changes) {\n if (_self.$recursionLimit-- < 0)\n return;\n _self.schedule();\n }\n else {\n _self.$recursionLimit = 2;\n }\n };\n }\n RenderLoop.prototype.schedule = function (change) {\n this.changes = this.changes | change;\n if (this.changes && !this.pending) {\n event.nextFrame(this._flush);\n this.pending = true;\n }\n };\n RenderLoop.prototype.clear = function (change) {\n var changes = this.changes;\n this.changes = 0;\n return changes;\n };\n return RenderLoop;\n}());\nexports.RenderLoop = RenderLoop;\n\n});\n\nace.define(\"ace/layer/font_metrics\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/dom\",\"ace/lib/lang\",\"ace/lib/event\",\"ace/lib/useragent\",\"ace/lib/event_emitter\"], function(require, exports, module){var oop = require(\"../lib/oop\");\nvar dom = require(\"../lib/dom\");\nvar lang = require(\"../lib/lang\");\nvar event = require(\"../lib/event\");\nvar useragent = require(\"../lib/useragent\");\nvar EventEmitter = require(\"../lib/event_emitter\").EventEmitter;\nvar CHAR_COUNT = 512;\nvar USE_OBSERVER = typeof ResizeObserver == \"function\";\nvar L = 200;\nvar FontMetrics = /** @class */ (function () {\n function FontMetrics(parentEl) {\n this.el = dom.createElement(\"div\");\n this.$setMeasureNodeStyles(this.el.style, true);\n this.$main = dom.createElement(\"div\");\n this.$setMeasureNodeStyles(this.$main.style);\n this.$measureNode = dom.createElement(\"div\");\n this.$setMeasureNodeStyles(this.$measureNode.style);\n this.el.appendChild(this.$main);\n this.el.appendChild(this.$measureNode);\n parentEl.appendChild(this.el);\n this.$measureNode.textContent = lang.stringRepeat(\"X\", CHAR_COUNT);\n this.$characterSize = { width: 0, height: 0 };\n if (USE_OBSERVER)\n this.$addObserver();\n else\n this.checkForSizeChanges();\n }\n FontMetrics.prototype.$setMeasureNodeStyles = function (style, isRoot) {\n style.width = style.height = \"auto\";\n style.left = style.top = \"0px\";\n style.visibility = \"hidden\";\n style.position = \"absolute\";\n style.whiteSpace = \"pre\";\n if (useragent.isIE < 8) {\n style[\"font-family\"] = \"inherit\";\n }\n else {\n style.font = \"inherit\";\n }\n style.overflow = isRoot ? \"hidden\" : \"visible\";\n };\n FontMetrics.prototype.checkForSizeChanges = function (size) {\n if (size === undefined)\n size = this.$measureSizes();\n if (size && (this.$characterSize.width !== size.width || this.$characterSize.height !== size.height)) {\n this.$measureNode.style.fontWeight = \"bold\";\n var boldSize = this.$measureSizes();\n this.$measureNode.style.fontWeight = \"\";\n this.$characterSize = size;\n this.charSizes = Object.create(null);\n this.allowBoldFonts = boldSize && boldSize.width === size.width && boldSize.height === size.height;\n this._emit(\"changeCharacterSize\", { data: size });\n }\n };\n FontMetrics.prototype.$addObserver = function () {\n var self = this;\n this.$observer = new window.ResizeObserver(function (e) {\n self.checkForSizeChanges();\n });\n this.$observer.observe(this.$measureNode);\n };\n FontMetrics.prototype.$pollSizeChanges = function () {\n if (this.$pollSizeChangesTimer || this.$observer)\n return this.$pollSizeChangesTimer;\n var self = this;\n return this.$pollSizeChangesTimer = event.onIdle(function cb() {\n self.checkForSizeChanges();\n event.onIdle(cb, 500);\n }, 500);\n };\n FontMetrics.prototype.setPolling = function (val) {\n if (val) {\n this.$pollSizeChanges();\n }\n else if (this.$pollSizeChangesTimer) {\n clearInterval(this.$pollSizeChangesTimer);\n this.$pollSizeChangesTimer = 0;\n }\n };\n FontMetrics.prototype.$measureSizes = function (node) {\n var size = {\n height: (node || this.$measureNode).clientHeight,\n width: (node || this.$measureNode).clientWidth / CHAR_COUNT\n };\n if (size.width === 0 || size.height === 0)\n return null;\n return size;\n };\n FontMetrics.prototype.$measureCharWidth = function (ch) {\n this.$main.textContent = lang.stringRepeat(ch, CHAR_COUNT);\n var rect = this.$main.getBoundingClientRect();\n return rect.width / CHAR_COUNT;\n };\n FontMetrics.prototype.getCharacterWidth = function (ch) {\n var w = this.charSizes[ch];\n if (w === undefined) {\n w = this.charSizes[ch] = this.$measureCharWidth(ch) / this.$characterSize.width;\n }\n return w;\n };\n FontMetrics.prototype.destroy = function () {\n clearInterval(this.$pollSizeChangesTimer);\n if (this.$observer)\n this.$observer.disconnect();\n if (this.el && this.el.parentNode)\n this.el.parentNode.removeChild(this.el);\n };\n FontMetrics.prototype.$getZoom = function (element) {\n if (!element || !element.parentElement)\n return 1;\n return (window.getComputedStyle(element).zoom || 1) * this.$getZoom(element.parentElement);\n };\n FontMetrics.prototype.$initTransformMeasureNodes = function () {\n var t = function (t, l) {\n return [\"div\", {\n style: \"position: absolute;top:\" + t + \"px;left:\" + l + \"px;\"\n }];\n };\n this.els = dom.buildDom([t(0, 0), t(L, 0), t(0, L), t(L, L)], this.el);\n };\n FontMetrics.prototype.transformCoordinates = function (clientPos, elPos) {\n if (clientPos) {\n var zoom = this.$getZoom(this.el);\n clientPos = mul(1 / zoom, clientPos);\n }\n function solve(l1, l2, r) {\n var det = l1[1] * l2[0] - l1[0] * l2[1];\n return [\n (-l2[1] * r[0] + l2[0] * r[1]) / det,\n (+l1[1] * r[0] - l1[0] * r[1]) / det\n ];\n }\n function sub(a, b) { return [a[0] - b[0], a[1] - b[1]]; }\n function add(a, b) { return [a[0] + b[0], a[1] + b[1]]; }\n function mul(a, b) { return [a * b[0], a * b[1]]; }\n if (!this.els)\n this.$initTransformMeasureNodes();\n function p(el) {\n var r = el.getBoundingClientRect();\n return [r.left, r.top];\n }\n var a = p(this.els[0]);\n var b = p(this.els[1]);\n var c = p(this.els[2]);\n var d = p(this.els[3]);\n var h = solve(sub(d, b), sub(d, c), sub(add(b, c), add(d, a)));\n var m1 = mul(1 + h[0], sub(b, a));\n var m2 = mul(1 + h[1], sub(c, a));\n if (elPos) {\n var x = elPos;\n var k = h[0] * x[0] / L + h[1] * x[1] / L + 1;\n var ut = add(mul(x[0], m1), mul(x[1], m2));\n return add(mul(1 / k / L, ut), a);\n }\n var u = sub(clientPos, a);\n var f = solve(sub(m1, mul(h[0], u)), sub(m2, mul(h[1], u)), u);\n return mul(L, f);\n };\n return FontMetrics;\n}());\nFontMetrics.prototype.$characterSize = { width: 0, height: 0 };\noop.implement(FontMetrics.prototype, EventEmitter);\nexports.FontMetrics = FontMetrics;\n\n});\n\nace.define(\"ace/css/editor-css\",[\"require\",\"exports\",\"module\"], function(require, exports, module){/*\nstyles = []\nfor (var i = 1; i < 16; i++) {\n styles.push(\".ace_br\" + i + \"{\" + (\n [\"top-left\", \"top-right\", \"bottom-right\", \"bottom-left\"]\n ).map(function(x, j) {\n return i & (1< .ace_line, .ace_text-layer > .ace_line_group {\\n contain: style size layout;\\n position: absolute;\\n top: 0;\\n left: 0;\\n right: 0;\\n}\\n\\n.ace_hidpi .ace_text-layer,\\n.ace_hidpi .ace_gutter-layer,\\n.ace_hidpi .ace_content,\\n.ace_hidpi .ace_gutter {\\n contain: strict;\\n}\\n.ace_hidpi .ace_text-layer > .ace_line, \\n.ace_hidpi .ace_text-layer > .ace_line_group {\\n contain: strict;\\n}\\n\\n.ace_cjk {\\n display: inline-block;\\n text-align: center;\\n}\\n\\n.ace_cursor-layer {\\n z-index: 4;\\n}\\n\\n.ace_cursor {\\n z-index: 4;\\n position: absolute;\\n box-sizing: border-box;\\n border-left: 2px solid;\\n /* workaround for smooth cursor repaintng whole screen in chrome */\\n transform: translatez(0);\\n}\\n\\n.ace_multiselect .ace_cursor {\\n border-left-width: 1px;\\n}\\n\\n.ace_slim-cursors .ace_cursor {\\n border-left-width: 1px;\\n}\\n\\n.ace_overwrite-cursors .ace_cursor {\\n border-left-width: 0;\\n border-bottom: 1px solid;\\n}\\n\\n.ace_hidden-cursors .ace_cursor {\\n opacity: 0.2;\\n}\\n\\n.ace_hasPlaceholder .ace_hidden-cursors .ace_cursor {\\n opacity: 0;\\n}\\n\\n.ace_smooth-blinking .ace_cursor {\\n transition: opacity 0.18s;\\n}\\n\\n.ace_animate-blinking .ace_cursor {\\n animation-duration: 1000ms;\\n animation-timing-function: step-end;\\n animation-name: blink-ace-animate;\\n animation-iteration-count: infinite;\\n}\\n\\n.ace_animate-blinking.ace_smooth-blinking .ace_cursor {\\n animation-duration: 1000ms;\\n animation-timing-function: ease-in-out;\\n animation-name: blink-ace-animate-smooth;\\n}\\n \\n@keyframes blink-ace-animate {\\n from, to { opacity: 1; }\\n 60% { opacity: 0; }\\n}\\n\\n@keyframes blink-ace-animate-smooth {\\n from, to { opacity: 1; }\\n 45% { opacity: 1; }\\n 60% { opacity: 0; }\\n 85% { opacity: 0; }\\n}\\n\\n.ace_marker-layer .ace_step, .ace_marker-layer .ace_stack {\\n position: absolute;\\n z-index: 3;\\n}\\n\\n.ace_marker-layer .ace_selection {\\n position: absolute;\\n z-index: 5;\\n}\\n\\n.ace_marker-layer .ace_bracket {\\n position: absolute;\\n z-index: 6;\\n}\\n\\n.ace_marker-layer .ace_error_bracket {\\n position: absolute;\\n border-bottom: 1px solid #DE5555;\\n border-radius: 0;\\n}\\n\\n.ace_marker-layer .ace_active-line {\\n position: absolute;\\n z-index: 2;\\n}\\n\\n.ace_marker-layer .ace_selected-word {\\n position: absolute;\\n z-index: 4;\\n box-sizing: border-box;\\n}\\n\\n.ace_line .ace_fold {\\n box-sizing: border-box;\\n\\n display: inline-block;\\n height: 11px;\\n margin-top: -2px;\\n vertical-align: middle;\\n\\n background-image:\\n url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII=\\\"),\\n url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACJJREFUeNpi+P//fxgTAwPDBxDxD078RSX+YeEyDFMCIMAAI3INmXiwf2YAAAAASUVORK5CYII=\\\");\\n background-repeat: no-repeat, repeat-x;\\n background-position: center center, top left;\\n color: transparent;\\n\\n border: 1px solid black;\\n border-radius: 2px;\\n\\n cursor: pointer;\\n pointer-events: auto;\\n}\\n\\n.ace_dark .ace_fold {\\n}\\n\\n.ace_fold:hover{\\n background-image:\\n url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII=\\\"),\\n url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACBJREFUeNpi+P//fz4TAwPDZxDxD5X4i5fLMEwJgAADAEPVDbjNw87ZAAAAAElFTkSuQmCC\\\");\\n}\\n\\n.ace_tooltip {\\n background-color: #f5f5f5;\\n border: 1px solid gray;\\n border-radius: 1px;\\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);\\n color: black;\\n max-width: 100%;\\n padding: 3px 4px;\\n position: fixed;\\n z-index: 999999;\\n box-sizing: border-box;\\n cursor: default;\\n white-space: pre-wrap;\\n word-wrap: break-word;\\n line-height: normal;\\n font-style: normal;\\n font-weight: normal;\\n letter-spacing: normal;\\n pointer-events: none;\\n overflow: auto;\\n max-width: min(60em, 66vw);\\n}\\n.ace_tooltip pre {\\n white-space: pre-wrap;\\n}\\n\\n.ace_tooltip.ace_dark {\\n background-color: #636363;\\n color: #fff;\\n}\\n\\n.ace_tooltip:focus {\\n outline: 1px solid #5E9ED6;\\n}\\n\\n.ace_icon {\\n display: inline-block;\\n width: 18px;\\n vertical-align: top;\\n}\\n\\n.ace_icon_svg {\\n display: inline-block;\\n width: 12px;\\n vertical-align: top;\\n -webkit-mask-repeat: no-repeat;\\n -webkit-mask-size: 12px;\\n -webkit-mask-position: center;\\n}\\n\\n.ace_folding-enabled > .ace_gutter-cell, .ace_folding-enabled > .ace_gutter-cell_svg-icons {\\n padding-right: 13px;\\n}\\n\\n.ace_fold-widget {\\n box-sizing: border-box;\\n\\n margin: 0 -12px 0 1px;\\n display: none;\\n width: 11px;\\n vertical-align: top;\\n\\n background-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42mWKsQ0AMAzC8ixLlrzQjzmBiEjp0A6WwBCSPgKAXoLkqSot7nN3yMwR7pZ32NzpKkVoDBUxKAAAAABJRU5ErkJggg==\\\");\\n background-repeat: no-repeat;\\n background-position: center;\\n\\n border-radius: 3px;\\n \\n border: 1px solid transparent;\\n cursor: pointer;\\n}\\n\\n.ace_folding-enabled .ace_fold-widget {\\n display: inline-block; \\n}\\n\\n.ace_fold-widget.ace_end {\\n background-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42m3HwQkAMAhD0YzsRchFKI7sAikeWkrxwScEB0nh5e7KTPWimZki4tYfVbX+MNl4pyZXejUO1QAAAABJRU5ErkJggg==\\\");\\n}\\n\\n.ace_fold-widget.ace_closed {\\n background-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAGCAYAAAAG5SQMAAAAOUlEQVR42jXKwQkAMAgDwKwqKD4EwQ26sSOkVWjgIIHAzPiCgaqiqnJHZnKICBERHN194O5b9vbLuAVRL+l0YWnZAAAAAElFTkSuQmCCXA==\\\");\\n}\\n\\n.ace_fold-widget:hover {\\n border: 1px solid rgba(0, 0, 0, 0.3);\\n background-color: rgba(255, 255, 255, 0.2);\\n box-shadow: 0 1px 1px rgba(255, 255, 255, 0.7);\\n}\\n\\n.ace_fold-widget:active {\\n border: 1px solid rgba(0, 0, 0, 0.4);\\n background-color: rgba(0, 0, 0, 0.05);\\n box-shadow: 0 1px 1px rgba(255, 255, 255, 0.8);\\n}\\n/**\\n * Dark version for fold widgets\\n */\\n.ace_dark .ace_fold-widget {\\n background-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHklEQVQIW2P4//8/AzoGEQ7oGCaLLAhWiSwB146BAQCSTPYocqT0AAAAAElFTkSuQmCC\\\");\\n}\\n.ace_dark .ace_fold-widget.ace_end {\\n background-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAH0lEQVQIW2P4//8/AxQ7wNjIAjDMgC4AxjCVKBirIAAF0kz2rlhxpAAAAABJRU5ErkJggg==\\\");\\n}\\n.ace_dark .ace_fold-widget.ace_closed {\\n background-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAFCAYAAACAcVaiAAAAHElEQVQIW2P4//+/AxAzgDADlOOAznHAKgPWAwARji8UIDTfQQAAAABJRU5ErkJggg==\\\");\\n}\\n.ace_dark .ace_fold-widget:hover {\\n box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);\\n background-color: rgba(255, 255, 255, 0.1);\\n}\\n.ace_dark .ace_fold-widget:active {\\n box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);\\n}\\n\\n.ace_inline_button {\\n border: 1px solid lightgray;\\n display: inline-block;\\n margin: -1px 8px;\\n padding: 0 5px;\\n pointer-events: auto;\\n cursor: pointer;\\n}\\n.ace_inline_button:hover {\\n border-color: gray;\\n background: rgba(200,200,200,0.2);\\n display: inline-block;\\n pointer-events: auto;\\n}\\n\\n.ace_fold-widget.ace_invalid {\\n background-color: #FFB4B4;\\n border-color: #DE5555;\\n}\\n\\n.ace_fade-fold-widgets .ace_fold-widget {\\n transition: opacity 0.4s ease 0.05s;\\n opacity: 0;\\n}\\n\\n.ace_fade-fold-widgets:hover .ace_fold-widget {\\n transition: opacity 0.05s ease 0.05s;\\n opacity:1;\\n}\\n\\n.ace_underline {\\n text-decoration: underline;\\n}\\n\\n.ace_bold {\\n font-weight: bold;\\n}\\n\\n.ace_nobold .ace_bold {\\n font-weight: normal;\\n}\\n\\n.ace_italic {\\n font-style: italic;\\n}\\n\\n\\n.ace_error-marker {\\n background-color: rgba(255, 0, 0,0.2);\\n position: absolute;\\n z-index: 9;\\n}\\n\\n.ace_highlight-marker {\\n background-color: rgba(255, 255, 0,0.2);\\n position: absolute;\\n z-index: 8;\\n}\\n\\n.ace_mobile-menu {\\n position: absolute;\\n line-height: 1.5;\\n border-radius: 4px;\\n -ms-user-select: none;\\n -moz-user-select: none;\\n -webkit-user-select: none;\\n user-select: none;\\n background: white;\\n box-shadow: 1px 3px 2px grey;\\n border: 1px solid #dcdcdc;\\n color: black;\\n}\\n.ace_dark > .ace_mobile-menu {\\n background: #333;\\n color: #ccc;\\n box-shadow: 1px 3px 2px grey;\\n border: 1px solid #444;\\n\\n}\\n.ace_mobile-button {\\n padding: 2px;\\n cursor: pointer;\\n overflow: hidden;\\n}\\n.ace_mobile-button:hover {\\n background-color: #eee;\\n opacity:1;\\n}\\n.ace_mobile-button:active {\\n background-color: #ddd;\\n}\\n\\n.ace_placeholder {\\n font-family: arial;\\n transform: scale(0.9);\\n transform-origin: left;\\n white-space: pre;\\n opacity: 0.7;\\n margin: 0 10px;\\n}\\n\\n.ace_ghost_text {\\n opacity: 0.5;\\n font-style: italic;\\n white-space: pre;\\n}\\n\\n.ace_screenreader-only {\\n position:absolute;\\n left:-10000px;\\n top:auto;\\n width:1px;\\n height:1px;\\n overflow:hidden;\\n}\";\n\n});\n\nace.define(\"ace/layer/decorators\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\",\"ace/lib/oop\",\"ace/lib/event_emitter\"], function(require, exports, module){\"use strict\";\nvar dom = require(\"../lib/dom\");\nvar oop = require(\"../lib/oop\");\nvar EventEmitter = require(\"../lib/event_emitter\").EventEmitter;\nvar Decorator = /** @class */ (function () {\n function Decorator(parent, renderer) {\n this.canvas = dom.createElement(\"canvas\");\n this.renderer = renderer;\n this.pixelRatio = 1;\n this.maxHeight = renderer.layerConfig.maxHeight;\n this.lineHeight = renderer.layerConfig.lineHeight;\n this.canvasHeight = parent.parent.scrollHeight;\n this.heightRatio = this.canvasHeight / this.maxHeight;\n this.canvasWidth = parent.width;\n this.minDecorationHeight = (2 * this.pixelRatio) | 0;\n this.halfMinDecorationHeight = (this.minDecorationHeight / 2) | 0;\n this.canvas.width = this.canvasWidth;\n this.canvas.height = this.canvasHeight;\n this.canvas.style.top = 0 + \"px\";\n this.canvas.style.right = 0 + \"px\";\n this.canvas.style.zIndex = 7 + \"px\";\n this.canvas.style.position = \"absolute\";\n this.colors = {};\n this.colors.dark = {\n \"error\": \"rgba(255, 18, 18, 1)\",\n \"warning\": \"rgba(18, 136, 18, 1)\",\n \"info\": \"rgba(18, 18, 136, 1)\"\n };\n this.colors.light = {\n \"error\": \"rgb(255,51,51)\",\n \"warning\": \"rgb(32,133,72)\",\n \"info\": \"rgb(35,68,138)\"\n };\n parent.element.appendChild(this.canvas);\n }\n Decorator.prototype.$updateDecorators = function (config) {\n var colors = (this.renderer.theme.isDark === true) ? this.colors.dark : this.colors.light;\n if (config) {\n this.maxHeight = config.maxHeight;\n this.lineHeight = config.lineHeight;\n this.canvasHeight = config.height;\n var allLineHeight = (config.lastRow + 1) * this.lineHeight;\n if (allLineHeight < this.canvasHeight) {\n this.heightRatio = 1;\n }\n else {\n this.heightRatio = this.canvasHeight / this.maxHeight;\n }\n }\n var ctx = this.canvas.getContext(\"2d\");\n function compare(a, b) {\n if (a.priority < b.priority)\n return -1;\n if (a.priority > b.priority)\n return 1;\n return 0;\n }\n var annotations = this.renderer.session.$annotations;\n ctx.clearRect(0, 0, this.canvas.width, this.canvas.height);\n if (annotations) {\n var priorities = {\n \"info\": 1,\n \"warning\": 2,\n \"error\": 3\n };\n annotations.forEach(function (item) {\n item.priority = priorities[item.type] || null;\n });\n annotations = annotations.sort(compare);\n var foldData = this.renderer.session.$foldData;\n for (var i = 0; i < annotations.length; i++) {\n var row = annotations[i].row;\n var compensateFold = this.compensateFoldRows(row, foldData);\n var currentY = Math.round((row - compensateFold) * this.lineHeight * this.heightRatio);\n var y1 = Math.round(((row - compensateFold) * this.lineHeight * this.heightRatio));\n var y2 = Math.round((((row - compensateFold) * this.lineHeight + this.lineHeight) * this.heightRatio));\n var height = y2 - y1;\n if (height < this.minDecorationHeight) {\n var yCenter = ((y1 + y2) / 2) | 0;\n if (yCenter < this.halfMinDecorationHeight) {\n yCenter = this.halfMinDecorationHeight;\n }\n else if (yCenter + this.halfMinDecorationHeight > this.canvasHeight) {\n yCenter = this.canvasHeight - this.halfMinDecorationHeight;\n }\n y1 = Math.round(yCenter - this.halfMinDecorationHeight);\n y2 = Math.round(yCenter + this.halfMinDecorationHeight);\n }\n ctx.fillStyle = colors[annotations[i].type] || null;\n ctx.fillRect(0, currentY, this.canvasWidth, y2 - y1);\n }\n }\n var cursor = this.renderer.session.selection.getCursor();\n if (cursor) {\n var compensateFold = this.compensateFoldRows(cursor.row, foldData);\n var currentY = Math.round((cursor.row - compensateFold) * this.lineHeight * this.heightRatio);\n ctx.fillStyle = \"rgba(0, 0, 0, 0.5)\";\n ctx.fillRect(0, currentY, this.canvasWidth, 2);\n }\n };\n Decorator.prototype.compensateFoldRows = function (row, foldData) {\n var compensateFold = 0;\n if (foldData && foldData.length > 0) {\n for (var j = 0; j < foldData.length; j++) {\n if (row > foldData[j].start.row && row < foldData[j].end.row) {\n compensateFold += row - foldData[j].start.row;\n }\n else if (row >= foldData[j].end.row) {\n compensateFold += foldData[j].end.row - foldData[j].start.row;\n }\n }\n }\n return compensateFold;\n };\n return Decorator;\n}());\noop.implement(Decorator.prototype, EventEmitter);\nexports.Decorator = Decorator;\n\n});\n\nace.define(\"ace/virtual_renderer\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/dom\",\"ace/lib/lang\",\"ace/config\",\"ace/layer/gutter\",\"ace/layer/marker\",\"ace/layer/text\",\"ace/layer/cursor\",\"ace/scrollbar\",\"ace/scrollbar\",\"ace/scrollbar_custom\",\"ace/scrollbar_custom\",\"ace/renderloop\",\"ace/layer/font_metrics\",\"ace/lib/event_emitter\",\"ace/css/editor-css\",\"ace/layer/decorators\",\"ace/lib/useragent\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"./lib/oop\");\nvar dom = require(\"./lib/dom\");\nvar lang = require(\"./lib/lang\");\nvar config = require(\"./config\");\nvar GutterLayer = require(\"./layer/gutter\").Gutter;\nvar MarkerLayer = require(\"./layer/marker\").Marker;\nvar TextLayer = require(\"./layer/text\").Text;\nvar CursorLayer = require(\"./layer/cursor\").Cursor;\nvar HScrollBar = require(\"./scrollbar\").HScrollBar;\nvar VScrollBar = require(\"./scrollbar\").VScrollBar;\nvar HScrollBarCustom = require(\"./scrollbar_custom\").HScrollBar;\nvar VScrollBarCustom = require(\"./scrollbar_custom\").VScrollBar;\nvar RenderLoop = require(\"./renderloop\").RenderLoop;\nvar FontMetrics = require(\"./layer/font_metrics\").FontMetrics;\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar editorCss = require(\"./css/editor-css\");\nvar Decorator = require(\"./layer/decorators\").Decorator;\nvar useragent = require(\"./lib/useragent\");\ndom.importCssString(editorCss, \"ace_editor.css\", false);\nvar VirtualRenderer = /** @class */ (function () {\n function VirtualRenderer(container, theme) {\n var _self = this;\n this.container = container || dom.createElement(\"div\");\n dom.addCssClass(this.container, \"ace_editor\");\n if (dom.HI_DPI)\n dom.addCssClass(this.container, \"ace_hidpi\");\n this.setTheme(theme);\n if (config.get(\"useStrictCSP\") == null)\n config.set(\"useStrictCSP\", false);\n this.$gutter = dom.createElement(\"div\");\n this.$gutter.className = \"ace_gutter\";\n this.container.appendChild(this.$gutter);\n this.$gutter.setAttribute(\"aria-hidden\", true);\n this.scroller = dom.createElement(\"div\");\n this.scroller.className = \"ace_scroller\";\n this.container.appendChild(this.scroller);\n this.content = dom.createElement(\"div\");\n this.content.className = \"ace_content\";\n this.scroller.appendChild(this.content);\n this.$gutterLayer = new GutterLayer(this.$gutter);\n this.$gutterLayer.on(\"changeGutterWidth\", this.onGutterResize.bind(this));\n this.$markerBack = new MarkerLayer(this.content);\n var textLayer = this.$textLayer = new TextLayer(this.content);\n this.canvas = textLayer.element;\n this.$markerFront = new MarkerLayer(this.content);\n this.$cursorLayer = new CursorLayer(this.content);\n this.$horizScroll = false;\n this.$vScroll = false;\n this.scrollBar =\n this.scrollBarV = new VScrollBar(this.container, this);\n this.scrollBarH = new HScrollBar(this.container, this);\n this.scrollBarV.on(\"scroll\", function (e) {\n if (!_self.$scrollAnimation)\n _self.session.setScrollTop(e.data - _self.scrollMargin.top);\n });\n this.scrollBarH.on(\"scroll\", function (e) {\n if (!_self.$scrollAnimation)\n _self.session.setScrollLeft(e.data - _self.scrollMargin.left);\n });\n this.scrollTop = 0;\n this.scrollLeft = 0;\n this.cursorPos = {\n row: 0,\n column: 0\n };\n this.$fontMetrics = new FontMetrics(this.container);\n this.$textLayer.$setFontMetrics(this.$fontMetrics);\n this.$textLayer.on(\"changeCharacterSize\", function (e) {\n _self.updateCharacterSize();\n _self.onResize(true, _self.gutterWidth, _self.$size.width, _self.$size.height);\n _self._signal(\"changeCharacterSize\", e);\n });\n this.$size = {\n width: 0,\n height: 0,\n scrollerHeight: 0,\n scrollerWidth: 0,\n $dirty: true\n };\n this.layerConfig = {\n width: 1,\n padding: 0,\n firstRow: 0,\n firstRowScreen: 0,\n lastRow: 0,\n lineHeight: 0,\n characterWidth: 0,\n minHeight: 1,\n maxHeight: 1,\n offset: 0,\n height: 1,\n gutterOffset: 1\n };\n this.scrollMargin = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0,\n v: 0,\n h: 0\n };\n this.margin = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0,\n v: 0,\n h: 0\n };\n this.$keepTextAreaAtCursor = !useragent.isIOS;\n this.$loop = new RenderLoop(this.$renderChanges.bind(this), this.container.ownerDocument.defaultView);\n this.$loop.schedule(this.CHANGE_FULL);\n this.updateCharacterSize();\n this.setPadding(4);\n this.$addResizeObserver();\n config.resetOptions(this);\n config._signal(\"renderer\", this);\n }\n VirtualRenderer.prototype.updateCharacterSize = function () {\n if (this.$textLayer.allowBoldFonts != this.$allowBoldFonts) {\n this.$allowBoldFonts = this.$textLayer.allowBoldFonts;\n this.setStyle(\"ace_nobold\", !this.$allowBoldFonts);\n }\n this.layerConfig.characterWidth =\n this.characterWidth = this.$textLayer.getCharacterWidth();\n this.layerConfig.lineHeight =\n this.lineHeight = this.$textLayer.getLineHeight();\n this.$updatePrintMargin();\n dom.setStyle(this.scroller.style, \"line-height\", this.lineHeight + \"px\");\n };\n VirtualRenderer.prototype.setSession = function (session) {\n if (this.session)\n this.session.doc.off(\"changeNewLineMode\", this.onChangeNewLineMode);\n this.session = session;\n if (session && this.scrollMargin.top && session.getScrollTop() <= 0)\n session.setScrollTop(-this.scrollMargin.top);\n this.$cursorLayer.setSession(session);\n this.$markerBack.setSession(session);\n this.$markerFront.setSession(session);\n this.$gutterLayer.setSession(session);\n this.$textLayer.setSession(session);\n if (!session)\n return;\n this.$loop.schedule(this.CHANGE_FULL);\n this.session.$setFontMetrics(this.$fontMetrics);\n this.scrollBarH.scrollLeft = this.scrollBarV.scrollTop = null;\n this.onChangeNewLineMode = this.onChangeNewLineMode.bind(this);\n this.onChangeNewLineMode();\n this.session.doc.on(\"changeNewLineMode\", this.onChangeNewLineMode);\n };\n VirtualRenderer.prototype.updateLines = function (firstRow, lastRow, force) {\n if (lastRow === undefined)\n lastRow = Infinity;\n if (!this.$changedLines) {\n this.$changedLines = {\n firstRow: firstRow,\n lastRow: lastRow\n };\n }\n else {\n if (this.$changedLines.firstRow > firstRow)\n this.$changedLines.firstRow = firstRow;\n if (this.$changedLines.lastRow < lastRow)\n this.$changedLines.lastRow = lastRow;\n }\n if (this.$changedLines.lastRow < this.layerConfig.firstRow) {\n if (force)\n this.$changedLines.lastRow = this.layerConfig.lastRow;\n else\n return;\n }\n if (this.$changedLines.firstRow > this.layerConfig.lastRow)\n return;\n this.$loop.schedule(this.CHANGE_LINES);\n };\n VirtualRenderer.prototype.onChangeNewLineMode = function () {\n this.$loop.schedule(this.CHANGE_TEXT);\n this.$textLayer.$updateEolChar();\n this.session.$bidiHandler.setEolChar(this.$textLayer.EOL_CHAR);\n };\n VirtualRenderer.prototype.onChangeTabSize = function () {\n this.$loop.schedule(this.CHANGE_TEXT | this.CHANGE_MARKER);\n this.$textLayer.onChangeTabSize();\n };\n VirtualRenderer.prototype.updateText = function () {\n this.$loop.schedule(this.CHANGE_TEXT);\n };\n VirtualRenderer.prototype.updateFull = function (force) {\n if (force)\n this.$renderChanges(this.CHANGE_FULL, true);\n else\n this.$loop.schedule(this.CHANGE_FULL);\n };\n VirtualRenderer.prototype.updateFontSize = function () {\n this.$textLayer.checkForSizeChanges();\n };\n VirtualRenderer.prototype.$updateSizeAsync = function () {\n if (this.$loop.pending)\n this.$size.$dirty = true;\n else\n this.onResize();\n };\n VirtualRenderer.prototype.onResize = function (force, gutterWidth, width, height) {\n if (this.resizing > 2)\n return;\n else if (this.resizing > 0)\n this.resizing++;\n else\n this.resizing = force ? 1 : 0;\n var el = this.container;\n if (!height)\n height = el.clientHeight || el.scrollHeight;\n if (!width)\n width = el.clientWidth || el.scrollWidth;\n var changes = this.$updateCachedSize(force, gutterWidth, width, height);\n if (this.$resizeTimer)\n this.$resizeTimer.cancel();\n if (!this.$size.scrollerHeight || (!width && !height))\n return this.resizing = 0;\n if (force)\n this.$gutterLayer.$padding = null;\n if (force)\n this.$renderChanges(changes | this.$changes, true);\n else\n this.$loop.schedule(changes | this.$changes);\n if (this.resizing)\n this.resizing = 0;\n this.scrollBarH.scrollLeft = this.scrollBarV.scrollTop = null;\n if (this.$customScrollbar) {\n this.$updateCustomScrollbar(true);\n }\n };\n VirtualRenderer.prototype.$updateCachedSize = function (force, gutterWidth, width, height) {\n height -= (this.$extraHeight || 0);\n var changes = 0;\n var size = this.$size;\n var oldSize = {\n width: size.width,\n height: size.height,\n scrollerHeight: size.scrollerHeight,\n scrollerWidth: size.scrollerWidth\n };\n if (height && (force || size.height != height)) {\n size.height = height;\n changes |= this.CHANGE_SIZE;\n size.scrollerHeight = size.height;\n if (this.$horizScroll)\n size.scrollerHeight -= this.scrollBarH.getHeight();\n this.scrollBarV.setHeight(size.scrollerHeight);\n this.scrollBarV.element.style.bottom = this.scrollBarH.getHeight() + \"px\";\n changes = changes | this.CHANGE_SCROLL;\n }\n if (width && (force || size.width != width)) {\n changes |= this.CHANGE_SIZE;\n size.width = width;\n if (gutterWidth == null)\n gutterWidth = this.$showGutter ? this.$gutter.offsetWidth : 0;\n this.gutterWidth = gutterWidth;\n dom.setStyle(this.scrollBarH.element.style, \"left\", gutterWidth + \"px\");\n dom.setStyle(this.scroller.style, \"left\", gutterWidth + this.margin.left + \"px\");\n size.scrollerWidth = Math.max(0, width - gutterWidth - this.scrollBarV.getWidth() - this.margin.h);\n dom.setStyle(this.$gutter.style, \"left\", this.margin.left + \"px\");\n var right = this.scrollBarV.getWidth() + \"px\";\n dom.setStyle(this.scrollBarH.element.style, \"right\", right);\n dom.setStyle(this.scroller.style, \"right\", right);\n dom.setStyle(this.scroller.style, \"bottom\", this.scrollBarH.getHeight());\n this.scrollBarH.setWidth(size.scrollerWidth);\n if (this.session && this.session.getUseWrapMode() && this.adjustWrapLimit() || force) {\n changes |= this.CHANGE_FULL;\n }\n }\n size.$dirty = !width || !height;\n if (changes)\n this._signal(\"resize\", oldSize);\n return changes;\n };\n VirtualRenderer.prototype.onGutterResize = function (width) {\n var gutterWidth = this.$showGutter ? width : 0;\n if (gutterWidth != this.gutterWidth)\n this.$changes |= this.$updateCachedSize(true, gutterWidth, this.$size.width, this.$size.height);\n if (this.session.getUseWrapMode() && this.adjustWrapLimit()) {\n this.$loop.schedule(this.CHANGE_FULL);\n }\n else if (this.$size.$dirty) {\n this.$loop.schedule(this.CHANGE_FULL);\n }\n else {\n this.$computeLayerConfig();\n }\n };\n VirtualRenderer.prototype.adjustWrapLimit = function () {\n var availableWidth = this.$size.scrollerWidth - this.$padding * 2;\n var limit = Math.floor(availableWidth / this.characterWidth);\n return this.session.adjustWrapLimit(limit, this.$showPrintMargin && this.$printMarginColumn);\n };\n VirtualRenderer.prototype.setAnimatedScroll = function (shouldAnimate) {\n this.setOption(\"animatedScroll\", shouldAnimate);\n };\n VirtualRenderer.prototype.getAnimatedScroll = function () {\n return this.$animatedScroll;\n };\n VirtualRenderer.prototype.setShowInvisibles = function (showInvisibles) {\n this.setOption(\"showInvisibles\", showInvisibles);\n this.session.$bidiHandler.setShowInvisibles(showInvisibles);\n };\n VirtualRenderer.prototype.getShowInvisibles = function () {\n return this.getOption(\"showInvisibles\");\n };\n VirtualRenderer.prototype.getDisplayIndentGuides = function () {\n return this.getOption(\"displayIndentGuides\");\n };\n VirtualRenderer.prototype.setDisplayIndentGuides = function (display) {\n this.setOption(\"displayIndentGuides\", display);\n };\n VirtualRenderer.prototype.getHighlightIndentGuides = function () {\n return this.getOption(\"highlightIndentGuides\");\n };\n VirtualRenderer.prototype.setHighlightIndentGuides = function (highlight) {\n this.setOption(\"highlightIndentGuides\", highlight);\n };\n VirtualRenderer.prototype.setShowPrintMargin = function (showPrintMargin) {\n this.setOption(\"showPrintMargin\", showPrintMargin);\n };\n VirtualRenderer.prototype.getShowPrintMargin = function () {\n return this.getOption(\"showPrintMargin\");\n };\n VirtualRenderer.prototype.setPrintMarginColumn = function (showPrintMargin) {\n this.setOption(\"printMarginColumn\", showPrintMargin);\n };\n VirtualRenderer.prototype.getPrintMarginColumn = function () {\n return this.getOption(\"printMarginColumn\");\n };\n VirtualRenderer.prototype.getShowGutter = function () {\n return this.getOption(\"showGutter\");\n };\n VirtualRenderer.prototype.setShowGutter = function (show) {\n return this.setOption(\"showGutter\", show);\n };\n VirtualRenderer.prototype.getFadeFoldWidgets = function () {\n return this.getOption(\"fadeFoldWidgets\");\n };\n VirtualRenderer.prototype.setFadeFoldWidgets = function (show) {\n this.setOption(\"fadeFoldWidgets\", show);\n };\n VirtualRenderer.prototype.setHighlightGutterLine = function (shouldHighlight) {\n this.setOption(\"highlightGutterLine\", shouldHighlight);\n };\n VirtualRenderer.prototype.getHighlightGutterLine = function () {\n return this.getOption(\"highlightGutterLine\");\n };\n VirtualRenderer.prototype.$updatePrintMargin = function () {\n if (!this.$showPrintMargin && !this.$printMarginEl)\n return;\n if (!this.$printMarginEl) {\n var containerEl = dom.createElement(\"div\");\n containerEl.className = \"ace_layer ace_print-margin-layer\";\n this.$printMarginEl = dom.createElement(\"div\");\n this.$printMarginEl.className = \"ace_print-margin\";\n containerEl.appendChild(this.$printMarginEl);\n this.content.insertBefore(containerEl, this.content.firstChild);\n }\n var style = this.$printMarginEl.style;\n style.left = Math.round(this.characterWidth * this.$printMarginColumn + this.$padding) + \"px\";\n style.visibility = this.$showPrintMargin ? \"visible\" : \"hidden\";\n if (this.session && this.session.$wrap == -1)\n this.adjustWrapLimit();\n };\n VirtualRenderer.prototype.getContainerElement = function () {\n return this.container;\n };\n VirtualRenderer.prototype.getMouseEventTarget = function () {\n return this.scroller;\n };\n VirtualRenderer.prototype.getTextAreaContainer = function () {\n return this.container;\n };\n VirtualRenderer.prototype.$moveTextAreaToCursor = function () {\n if (this.$isMousePressed)\n return;\n var style = this.textarea.style;\n var composition = this.$composition;\n if (!this.$keepTextAreaAtCursor && !composition) {\n dom.translate(this.textarea, -100, 0);\n return;\n }\n var pixelPos = this.$cursorLayer.$pixelPos;\n if (!pixelPos)\n return;\n if (composition && composition.markerRange)\n pixelPos = this.$cursorLayer.getPixelPosition(composition.markerRange.start, true);\n var config = this.layerConfig;\n var posTop = pixelPos.top;\n var posLeft = pixelPos.left;\n posTop -= config.offset;\n var h = composition && composition.useTextareaForIME || useragent.isMobile ? this.lineHeight : 1;\n if (posTop < 0 || posTop > config.height - h) {\n dom.translate(this.textarea, 0, 0);\n return;\n }\n var w = 1;\n var maxTop = this.$size.height - h;\n if (!composition) {\n posTop += this.lineHeight;\n }\n else {\n if (composition.useTextareaForIME) {\n var val = this.textarea.value;\n w = this.characterWidth * (this.session.$getStringScreenWidth(val)[0]);\n }\n else {\n posTop += this.lineHeight + 2;\n }\n }\n posLeft -= this.scrollLeft;\n if (posLeft > this.$size.scrollerWidth - w)\n posLeft = this.$size.scrollerWidth - w;\n posLeft += this.gutterWidth + this.margin.left;\n dom.setStyle(style, \"height\", h + \"px\");\n dom.setStyle(style, \"width\", w + \"px\");\n dom.translate(this.textarea, Math.min(posLeft, this.$size.scrollerWidth - w), Math.min(posTop, maxTop));\n };\n VirtualRenderer.prototype.getFirstVisibleRow = function () {\n return this.layerConfig.firstRow;\n };\n VirtualRenderer.prototype.getFirstFullyVisibleRow = function () {\n return this.layerConfig.firstRow + (this.layerConfig.offset === 0 ? 0 : 1);\n };\n VirtualRenderer.prototype.getLastFullyVisibleRow = function () {\n var config = this.layerConfig;\n var lastRow = config.lastRow;\n var top = this.session.documentToScreenRow(lastRow, 0) * config.lineHeight;\n if (top - this.session.getScrollTop() > config.height - config.lineHeight)\n return lastRow - 1;\n return lastRow;\n };\n VirtualRenderer.prototype.getLastVisibleRow = function () {\n return this.layerConfig.lastRow;\n };\n VirtualRenderer.prototype.setPadding = function (padding) {\n this.$padding = padding;\n this.$textLayer.setPadding(padding);\n this.$cursorLayer.setPadding(padding);\n this.$markerFront.setPadding(padding);\n this.$markerBack.setPadding(padding);\n this.$loop.schedule(this.CHANGE_FULL);\n this.$updatePrintMargin();\n };\n VirtualRenderer.prototype.setScrollMargin = function (top, bottom, left, right) {\n var sm = this.scrollMargin;\n sm.top = top | 0;\n sm.bottom = bottom | 0;\n sm.right = right | 0;\n sm.left = left | 0;\n sm.v = sm.top + sm.bottom;\n sm.h = sm.left + sm.right;\n if (sm.top && this.scrollTop <= 0 && this.session)\n this.session.setScrollTop(-sm.top);\n this.updateFull();\n };\n VirtualRenderer.prototype.setMargin = function (top, bottom, left, right) {\n var sm = this.margin;\n sm.top = top | 0;\n sm.bottom = bottom | 0;\n sm.right = right | 0;\n sm.left = left | 0;\n sm.v = sm.top + sm.bottom;\n sm.h = sm.left + sm.right;\n this.$updateCachedSize(true, this.gutterWidth, this.$size.width, this.$size.height);\n this.updateFull();\n };\n VirtualRenderer.prototype.getHScrollBarAlwaysVisible = function () {\n return this.$hScrollBarAlwaysVisible;\n };\n VirtualRenderer.prototype.setHScrollBarAlwaysVisible = function (alwaysVisible) {\n this.setOption(\"hScrollBarAlwaysVisible\", alwaysVisible);\n };\n VirtualRenderer.prototype.getVScrollBarAlwaysVisible = function () {\n return this.$vScrollBarAlwaysVisible;\n };\n VirtualRenderer.prototype.setVScrollBarAlwaysVisible = function (alwaysVisible) {\n this.setOption(\"vScrollBarAlwaysVisible\", alwaysVisible);\n };\n VirtualRenderer.prototype.$updateScrollBarV = function () {\n var scrollHeight = this.layerConfig.maxHeight;\n var scrollerHeight = this.$size.scrollerHeight;\n if (!this.$maxLines && this.$scrollPastEnd) {\n scrollHeight -= (scrollerHeight - this.lineHeight) * this.$scrollPastEnd;\n if (this.scrollTop > scrollHeight - scrollerHeight) {\n scrollHeight = this.scrollTop + scrollerHeight;\n this.scrollBarV.scrollTop = null;\n }\n }\n this.scrollBarV.setScrollHeight(scrollHeight + this.scrollMargin.v);\n this.scrollBarV.setScrollTop(this.scrollTop + this.scrollMargin.top);\n };\n VirtualRenderer.prototype.$updateScrollBarH = function () {\n this.scrollBarH.setScrollWidth(this.layerConfig.width + 2 * this.$padding + this.scrollMargin.h);\n this.scrollBarH.setScrollLeft(this.scrollLeft + this.scrollMargin.left);\n };\n VirtualRenderer.prototype.freeze = function () {\n this.$frozen = true;\n };\n VirtualRenderer.prototype.unfreeze = function () {\n this.$frozen = false;\n };\n VirtualRenderer.prototype.$renderChanges = function (changes, force) {\n if (this.$changes) {\n changes |= this.$changes;\n this.$changes = 0;\n }\n if ((!this.session || !this.container.offsetWidth || this.$frozen) || (!changes && !force)) {\n this.$changes |= changes;\n return;\n }\n if (this.$size.$dirty) {\n this.$changes |= changes;\n return this.onResize(true);\n }\n if (!this.lineHeight) {\n this.$textLayer.checkForSizeChanges();\n }\n this._signal(\"beforeRender\", changes);\n if (this.session && this.session.$bidiHandler)\n this.session.$bidiHandler.updateCharacterWidths(this.$fontMetrics);\n var config = this.layerConfig;\n if (changes & this.CHANGE_FULL ||\n changes & this.CHANGE_SIZE ||\n changes & this.CHANGE_TEXT ||\n changes & this.CHANGE_LINES ||\n changes & this.CHANGE_SCROLL ||\n changes & this.CHANGE_H_SCROLL) {\n changes |= this.$computeLayerConfig() | this.$loop.clear();\n if (config.firstRow != this.layerConfig.firstRow && config.firstRowScreen == this.layerConfig.firstRowScreen) {\n var st = this.scrollTop + (config.firstRow - Math.max(this.layerConfig.firstRow, 0)) * this.lineHeight;\n if (st > 0) {\n this.scrollTop = st;\n changes = changes | this.CHANGE_SCROLL;\n changes |= this.$computeLayerConfig() | this.$loop.clear();\n }\n }\n config = this.layerConfig;\n this.$updateScrollBarV();\n if (changes & this.CHANGE_H_SCROLL)\n this.$updateScrollBarH();\n dom.translate(this.content, -this.scrollLeft, -config.offset);\n var width = config.width + 2 * this.$padding + \"px\";\n var height = config.minHeight + \"px\";\n dom.setStyle(this.content.style, \"width\", width);\n dom.setStyle(this.content.style, \"height\", height);\n }\n if (changes & this.CHANGE_H_SCROLL) {\n dom.translate(this.content, -this.scrollLeft, -config.offset);\n this.scroller.className = this.scrollLeft <= 0 ? \"ace_scroller \" : \"ace_scroller ace_scroll-left \";\n if (this.enableKeyboardAccessibility)\n this.scroller.className += this.keyboardFocusClassName;\n }\n if (changes & this.CHANGE_FULL) {\n this.$changedLines = null;\n this.$textLayer.update(config);\n if (this.$showGutter)\n this.$gutterLayer.update(config);\n if (this.$customScrollbar) {\n this.$scrollDecorator.$updateDecorators(config);\n }\n this.$markerBack.update(config);\n this.$markerFront.update(config);\n this.$cursorLayer.update(config);\n this.$moveTextAreaToCursor();\n this._signal(\"afterRender\", changes);\n return;\n }\n if (changes & this.CHANGE_SCROLL) {\n this.$changedLines = null;\n if (changes & this.CHANGE_TEXT || changes & this.CHANGE_LINES)\n this.$textLayer.update(config);\n else\n this.$textLayer.scrollLines(config);\n if (this.$showGutter) {\n if (changes & this.CHANGE_GUTTER || changes & this.CHANGE_LINES)\n this.$gutterLayer.update(config);\n else\n this.$gutterLayer.scrollLines(config);\n }\n if (this.$customScrollbar) {\n this.$scrollDecorator.$updateDecorators(config);\n }\n this.$markerBack.update(config);\n this.$markerFront.update(config);\n this.$cursorLayer.update(config);\n this.$moveTextAreaToCursor();\n this._signal(\"afterRender\", changes);\n return;\n }\n if (changes & this.CHANGE_TEXT) {\n this.$changedLines = null;\n this.$textLayer.update(config);\n if (this.$showGutter)\n this.$gutterLayer.update(config);\n if (this.$customScrollbar) {\n this.$scrollDecorator.$updateDecorators(config);\n }\n }\n else if (changes & this.CHANGE_LINES) {\n if (this.$updateLines() || (changes & this.CHANGE_GUTTER) && this.$showGutter)\n this.$gutterLayer.update(config);\n if (this.$customScrollbar) {\n this.$scrollDecorator.$updateDecorators(config);\n }\n }\n else if (changes & this.CHANGE_TEXT || changes & this.CHANGE_GUTTER) {\n if (this.$showGutter)\n this.$gutterLayer.update(config);\n if (this.$customScrollbar) {\n this.$scrollDecorator.$updateDecorators(config);\n }\n }\n else if (changes & this.CHANGE_CURSOR) {\n if (this.$highlightGutterLine)\n this.$gutterLayer.updateLineHighlight(config);\n if (this.$customScrollbar) {\n this.$scrollDecorator.$updateDecorators(config);\n }\n }\n if (changes & this.CHANGE_CURSOR) {\n this.$cursorLayer.update(config);\n this.$moveTextAreaToCursor();\n }\n if (changes & (this.CHANGE_MARKER | this.CHANGE_MARKER_FRONT)) {\n this.$markerFront.update(config);\n }\n if (changes & (this.CHANGE_MARKER | this.CHANGE_MARKER_BACK)) {\n this.$markerBack.update(config);\n }\n this._signal(\"afterRender\", changes);\n };\n VirtualRenderer.prototype.$autosize = function () {\n var height = this.session.getScreenLength() * this.lineHeight;\n var maxHeight = this.$maxLines * this.lineHeight;\n var desiredHeight = Math.min(maxHeight, Math.max((this.$minLines || 1) * this.lineHeight, height)) + this.scrollMargin.v + (this.$extraHeight || 0);\n if (this.$horizScroll)\n desiredHeight += this.scrollBarH.getHeight();\n if (this.$maxPixelHeight && desiredHeight > this.$maxPixelHeight)\n desiredHeight = this.$maxPixelHeight;\n var hideScrollbars = desiredHeight <= 2 * this.lineHeight;\n var vScroll = !hideScrollbars && height > maxHeight;\n if (desiredHeight != this.desiredHeight ||\n this.$size.height != this.desiredHeight || vScroll != this.$vScroll) {\n if (vScroll != this.$vScroll) {\n this.$vScroll = vScroll;\n this.scrollBarV.setVisible(vScroll);\n }\n var w = this.container.clientWidth;\n this.container.style.height = desiredHeight + \"px\";\n this.$updateCachedSize(true, this.$gutterWidth, w, desiredHeight);\n this.desiredHeight = desiredHeight;\n this._signal(\"autosize\");\n }\n };\n VirtualRenderer.prototype.$computeLayerConfig = function () {\n var session = this.session;\n var size = this.$size;\n var hideScrollbars = size.height <= 2 * this.lineHeight;\n var screenLines = this.session.getScreenLength();\n var maxHeight = screenLines * this.lineHeight;\n var longestLine = this.$getLongestLine();\n var horizScroll = !hideScrollbars && (this.$hScrollBarAlwaysVisible ||\n size.scrollerWidth - longestLine - 2 * this.$padding < 0);\n var hScrollChanged = this.$horizScroll !== horizScroll;\n if (hScrollChanged) {\n this.$horizScroll = horizScroll;\n this.scrollBarH.setVisible(horizScroll);\n }\n var vScrollBefore = this.$vScroll; // autosize can change vscroll value in which case we need to update longestLine\n if (this.$maxLines && this.lineHeight > 1)\n this.$autosize();\n var minHeight = size.scrollerHeight + this.lineHeight;\n var scrollPastEnd = !this.$maxLines && this.$scrollPastEnd\n ? (size.scrollerHeight - this.lineHeight) * this.$scrollPastEnd\n : 0;\n maxHeight += scrollPastEnd;\n var sm = this.scrollMargin;\n this.session.setScrollTop(Math.max(-sm.top, Math.min(this.scrollTop, maxHeight - size.scrollerHeight + sm.bottom)));\n this.session.setScrollLeft(Math.max(-sm.left, Math.min(this.scrollLeft, longestLine + 2 * this.$padding - size.scrollerWidth + sm.right)));\n var vScroll = !hideScrollbars && (this.$vScrollBarAlwaysVisible ||\n size.scrollerHeight - maxHeight + scrollPastEnd < 0 || this.scrollTop > sm.top);\n var vScrollChanged = vScrollBefore !== vScroll;\n if (vScrollChanged) {\n this.$vScroll = vScroll;\n this.scrollBarV.setVisible(vScroll);\n }\n var offset = this.scrollTop % this.lineHeight;\n var lineCount = Math.ceil(minHeight / this.lineHeight) - 1;\n var firstRow = Math.max(0, Math.round((this.scrollTop - offset) / this.lineHeight));\n var lastRow = firstRow + lineCount;\n var firstRowScreen, firstRowHeight;\n var lineHeight = this.lineHeight;\n firstRow = session.screenToDocumentRow(firstRow, 0);\n var foldLine = session.getFoldLine(firstRow);\n if (foldLine) {\n firstRow = foldLine.start.row;\n }\n firstRowScreen = session.documentToScreenRow(firstRow, 0);\n firstRowHeight = session.getRowLength(firstRow) * lineHeight;\n lastRow = Math.min(session.screenToDocumentRow(lastRow, 0), session.getLength() - 1);\n minHeight = size.scrollerHeight + session.getRowLength(lastRow) * lineHeight +\n firstRowHeight;\n offset = this.scrollTop - firstRowScreen * lineHeight;\n var changes = 0;\n if (this.layerConfig.width != longestLine || hScrollChanged)\n changes = this.CHANGE_H_SCROLL;\n if (hScrollChanged || vScrollChanged) {\n changes |= this.$updateCachedSize(true, this.gutterWidth, size.width, size.height);\n this._signal(\"scrollbarVisibilityChanged\");\n if (vScrollChanged)\n longestLine = this.$getLongestLine();\n }\n this.layerConfig = {\n width: longestLine,\n padding: this.$padding,\n firstRow: firstRow,\n firstRowScreen: firstRowScreen,\n lastRow: lastRow,\n lineHeight: lineHeight,\n characterWidth: this.characterWidth,\n minHeight: minHeight,\n maxHeight: maxHeight,\n offset: offset,\n gutterOffset: lineHeight ? Math.max(0, Math.ceil((offset + size.height - size.scrollerHeight) / lineHeight)) : 0,\n height: this.$size.scrollerHeight\n };\n if (this.session.$bidiHandler)\n this.session.$bidiHandler.setContentWidth(longestLine - this.$padding);\n return changes;\n };\n VirtualRenderer.prototype.$updateLines = function () {\n if (!this.$changedLines)\n return;\n var firstRow = this.$changedLines.firstRow;\n var lastRow = this.$changedLines.lastRow;\n this.$changedLines = null;\n var layerConfig = this.layerConfig;\n if (firstRow > layerConfig.lastRow + 1) {\n return;\n }\n if (lastRow < layerConfig.firstRow) {\n return;\n }\n if (lastRow === Infinity) {\n if (this.$showGutter)\n this.$gutterLayer.update(layerConfig);\n this.$textLayer.update(layerConfig);\n return;\n }\n this.$textLayer.updateLines(layerConfig, firstRow, lastRow);\n return true;\n };\n VirtualRenderer.prototype.$getLongestLine = function () {\n var charCount = this.session.getScreenWidth();\n if (this.showInvisibles && !this.session.$useWrapMode)\n charCount += 1;\n if (this.$textLayer && charCount > this.$textLayer.MAX_LINE_LENGTH)\n charCount = this.$textLayer.MAX_LINE_LENGTH + 30;\n return Math.max(this.$size.scrollerWidth - 2 * this.$padding, Math.round(charCount * this.characterWidth));\n };\n VirtualRenderer.prototype.updateFrontMarkers = function () {\n this.$markerFront.setMarkers(this.session.getMarkers(true));\n this.$loop.schedule(this.CHANGE_MARKER_FRONT);\n };\n VirtualRenderer.prototype.updateBackMarkers = function () {\n this.$markerBack.setMarkers(this.session.getMarkers());\n this.$loop.schedule(this.CHANGE_MARKER_BACK);\n };\n VirtualRenderer.prototype.addGutterDecoration = function (row, className) {\n this.$gutterLayer.addGutterDecoration(row, className);\n };\n VirtualRenderer.prototype.removeGutterDecoration = function (row, className) {\n this.$gutterLayer.removeGutterDecoration(row, className);\n };\n VirtualRenderer.prototype.updateBreakpoints = function (rows) {\n this.$loop.schedule(this.CHANGE_GUTTER);\n };\n VirtualRenderer.prototype.setAnnotations = function (annotations) {\n this.$gutterLayer.setAnnotations(annotations);\n this.$loop.schedule(this.CHANGE_GUTTER);\n };\n VirtualRenderer.prototype.updateCursor = function () {\n this.$loop.schedule(this.CHANGE_CURSOR);\n };\n VirtualRenderer.prototype.hideCursor = function () {\n this.$cursorLayer.hideCursor();\n };\n VirtualRenderer.prototype.showCursor = function () {\n this.$cursorLayer.showCursor();\n };\n VirtualRenderer.prototype.scrollSelectionIntoView = function (anchor, lead, offset) {\n this.scrollCursorIntoView(anchor, offset);\n this.scrollCursorIntoView(lead, offset);\n };\n VirtualRenderer.prototype.scrollCursorIntoView = function (cursor, offset, $viewMargin) {\n if (this.$size.scrollerHeight === 0)\n return;\n var pos = this.$cursorLayer.getPixelPosition(cursor);\n var newLeft = pos.left;\n var newTop = pos.top;\n var topMargin = $viewMargin && $viewMargin.top || 0;\n var bottomMargin = $viewMargin && $viewMargin.bottom || 0;\n if (this.$scrollAnimation) {\n this.$stopAnimation = true;\n }\n var currentTop = this.$scrollAnimation ? this.session.getScrollTop() : this.scrollTop;\n if (currentTop + topMargin > newTop) {\n if (offset && currentTop + topMargin > newTop + this.lineHeight)\n newTop -= offset * this.$size.scrollerHeight;\n if (newTop === 0)\n newTop = -this.scrollMargin.top;\n this.session.setScrollTop(newTop);\n }\n else if (currentTop + this.$size.scrollerHeight - bottomMargin < newTop + this.lineHeight) {\n if (offset && currentTop + this.$size.scrollerHeight - bottomMargin < newTop - this.lineHeight)\n newTop += offset * this.$size.scrollerHeight;\n this.session.setScrollTop(newTop + this.lineHeight + bottomMargin - this.$size.scrollerHeight);\n }\n var currentLeft = this.scrollLeft;\n var twoCharsWidth = 2 * this.layerConfig.characterWidth;\n if (newLeft - twoCharsWidth < currentLeft) {\n newLeft -= twoCharsWidth;\n if (newLeft < this.$padding + twoCharsWidth) {\n newLeft = -this.scrollMargin.left;\n }\n this.session.setScrollLeft(newLeft);\n }\n else {\n newLeft += twoCharsWidth;\n if (currentLeft + this.$size.scrollerWidth < newLeft + this.characterWidth) {\n this.session.setScrollLeft(Math.round(newLeft + this.characterWidth - this.$size.scrollerWidth));\n }\n else if (currentLeft <= this.$padding && newLeft - currentLeft < this.characterWidth) {\n this.session.setScrollLeft(0);\n }\n }\n };\n VirtualRenderer.prototype.getScrollTop = function () {\n return this.session.getScrollTop();\n };\n VirtualRenderer.prototype.getScrollLeft = function () {\n return this.session.getScrollLeft();\n };\n VirtualRenderer.prototype.getScrollTopRow = function () {\n return this.scrollTop / this.lineHeight;\n };\n VirtualRenderer.prototype.getScrollBottomRow = function () {\n return Math.max(0, Math.floor((this.scrollTop + this.$size.scrollerHeight) / this.lineHeight) - 1);\n };\n VirtualRenderer.prototype.scrollToRow = function (row) {\n this.session.setScrollTop(row * this.lineHeight);\n };\n VirtualRenderer.prototype.alignCursor = function (cursor, alignment) {\n if (typeof cursor == \"number\")\n cursor = { row: cursor, column: 0 };\n var pos = this.$cursorLayer.getPixelPosition(cursor);\n var h = this.$size.scrollerHeight - this.lineHeight;\n var offset = pos.top - h * (alignment || 0);\n this.session.setScrollTop(offset);\n return offset;\n };\n VirtualRenderer.prototype.$calcSteps = function (fromValue, toValue) {\n var i = 0;\n var l = this.STEPS;\n var steps = [];\n var func = function (t, x_min, dx) {\n return dx * (Math.pow(t - 1, 3) + 1) + x_min;\n };\n for (i = 0; i < l; ++i)\n steps.push(func(i / this.STEPS, fromValue, toValue - fromValue));\n return steps;\n };\n VirtualRenderer.prototype.scrollToLine = function (line, center, animate, callback) {\n var pos = this.$cursorLayer.getPixelPosition({ row: line, column: 0 });\n var offset = pos.top;\n if (center)\n offset -= this.$size.scrollerHeight / 2;\n var initialScroll = this.scrollTop;\n this.session.setScrollTop(offset);\n if (animate !== false)\n this.animateScrolling(initialScroll, callback);\n };\n VirtualRenderer.prototype.animateScrolling = function (fromValue, callback) {\n var toValue = this.scrollTop;\n if (!this.$animatedScroll)\n return;\n var _self = this;\n if (fromValue == toValue)\n return;\n if (this.$scrollAnimation) {\n var oldSteps = this.$scrollAnimation.steps;\n if (oldSteps.length) {\n fromValue = oldSteps[0];\n if (fromValue == toValue)\n return;\n }\n }\n var steps = _self.$calcSteps(fromValue, toValue);\n this.$scrollAnimation = { from: fromValue, to: toValue, steps: steps };\n clearInterval(this.$timer);\n _self.session.setScrollTop(steps.shift());\n _self.session.$scrollTop = toValue;\n function endAnimation() {\n _self.$timer = clearInterval(_self.$timer);\n _self.$scrollAnimation = null;\n _self.$stopAnimation = false;\n callback && callback();\n }\n this.$timer = setInterval(function () {\n if (_self.$stopAnimation) {\n endAnimation();\n return;\n }\n if (!_self.session)\n return clearInterval(_self.$timer);\n if (steps.length) {\n _self.session.setScrollTop(steps.shift());\n _self.session.$scrollTop = toValue;\n }\n else if (toValue != null) {\n _self.session.$scrollTop = -1;\n _self.session.setScrollTop(toValue);\n toValue = null;\n }\n else {\n endAnimation();\n }\n }, 10);\n };\n VirtualRenderer.prototype.scrollToY = function (scrollTop) {\n if (this.scrollTop !== scrollTop) {\n this.$loop.schedule(this.CHANGE_SCROLL);\n this.scrollTop = scrollTop;\n }\n };\n VirtualRenderer.prototype.scrollToX = function (scrollLeft) {\n if (this.scrollLeft !== scrollLeft)\n this.scrollLeft = scrollLeft;\n this.$loop.schedule(this.CHANGE_H_SCROLL);\n };\n VirtualRenderer.prototype.scrollTo = function (x, y) {\n this.session.setScrollTop(y);\n this.session.setScrollLeft(x);\n };\n VirtualRenderer.prototype.scrollBy = function (deltaX, deltaY) {\n deltaY && this.session.setScrollTop(this.session.getScrollTop() + deltaY);\n deltaX && this.session.setScrollLeft(this.session.getScrollLeft() + deltaX);\n };\n VirtualRenderer.prototype.isScrollableBy = function (deltaX, deltaY) {\n if (deltaY < 0 && this.session.getScrollTop() >= 1 - this.scrollMargin.top)\n return true;\n if (deltaY > 0 && this.session.getScrollTop() + this.$size.scrollerHeight\n - this.layerConfig.maxHeight < -1 + this.scrollMargin.bottom)\n return true;\n if (deltaX < 0 && this.session.getScrollLeft() >= 1 - this.scrollMargin.left)\n return true;\n if (deltaX > 0 && this.session.getScrollLeft() + this.$size.scrollerWidth\n - this.layerConfig.width < -1 + this.scrollMargin.right)\n return true;\n };\n VirtualRenderer.prototype.pixelToScreenCoordinates = function (x, y) {\n var canvasPos;\n if (this.$hasCssTransforms) {\n canvasPos = { top: 0, left: 0 };\n var p = this.$fontMetrics.transformCoordinates([x, y]);\n x = p[1] - this.gutterWidth - this.margin.left;\n y = p[0];\n }\n else {\n canvasPos = this.scroller.getBoundingClientRect();\n }\n var offsetX = x + this.scrollLeft - canvasPos.left - this.$padding;\n var offset = offsetX / this.characterWidth;\n var row = Math.floor((y + this.scrollTop - canvasPos.top) / this.lineHeight);\n var col = this.$blockCursor ? Math.floor(offset) : Math.round(offset);\n return { row: row, column: col, side: offset - col > 0 ? 1 : -1, offsetX: offsetX };\n };\n VirtualRenderer.prototype.screenToTextCoordinates = function (x, y) {\n var canvasPos;\n if (this.$hasCssTransforms) {\n canvasPos = { top: 0, left: 0 };\n var p = this.$fontMetrics.transformCoordinates([x, y]);\n x = p[1] - this.gutterWidth - this.margin.left;\n y = p[0];\n }\n else {\n canvasPos = this.scroller.getBoundingClientRect();\n }\n var offsetX = x + this.scrollLeft - canvasPos.left - this.$padding;\n var offset = offsetX / this.characterWidth;\n var col = this.$blockCursor ? Math.floor(offset) : Math.round(offset);\n var row = Math.floor((y + this.scrollTop - canvasPos.top) / this.lineHeight);\n return this.session.screenToDocumentPosition(row, Math.max(col, 0), offsetX);\n };\n VirtualRenderer.prototype.textToScreenCoordinates = function (row, column) {\n var canvasPos = this.scroller.getBoundingClientRect();\n var pos = this.session.documentToScreenPosition(row, column);\n var x = this.$padding + (this.session.$bidiHandler.isBidiRow(pos.row, row)\n ? this.session.$bidiHandler.getPosLeft(pos.column)\n : Math.round(pos.column * this.characterWidth));\n var y = pos.row * this.lineHeight;\n return {\n pageX: canvasPos.left + x - this.scrollLeft,\n pageY: canvasPos.top + y - this.scrollTop\n };\n };\n VirtualRenderer.prototype.visualizeFocus = function () {\n dom.addCssClass(this.container, \"ace_focus\");\n };\n VirtualRenderer.prototype.visualizeBlur = function () {\n dom.removeCssClass(this.container, \"ace_focus\");\n };\n VirtualRenderer.prototype.showComposition = function (composition) {\n this.$composition = composition;\n if (!composition.cssText) {\n composition.cssText = this.textarea.style.cssText;\n }\n if (composition.useTextareaForIME == undefined)\n composition.useTextareaForIME = this.$useTextareaForIME;\n if (this.$useTextareaForIME) {\n dom.addCssClass(this.textarea, \"ace_composition\");\n this.textarea.style.cssText = \"\";\n this.$moveTextAreaToCursor();\n this.$cursorLayer.element.style.display = \"none\";\n }\n else {\n composition.markerId = this.session.addMarker(composition.markerRange, \"ace_composition_marker\", \"text\");\n }\n };\n VirtualRenderer.prototype.setCompositionText = function (text) {\n var cursor = this.session.selection.cursor;\n this.addToken(text, \"composition_placeholder\", cursor.row, cursor.column);\n this.$moveTextAreaToCursor();\n };\n VirtualRenderer.prototype.hideComposition = function () {\n if (!this.$composition)\n return;\n if (this.$composition.markerId)\n this.session.removeMarker(this.$composition.markerId);\n dom.removeCssClass(this.textarea, \"ace_composition\");\n this.textarea.style.cssText = this.$composition.cssText;\n var cursor = this.session.selection.cursor;\n this.removeExtraToken(cursor.row, cursor.column);\n this.$composition = null;\n this.$cursorLayer.element.style.display = \"\";\n };\n VirtualRenderer.prototype.setGhostText = function (text, position) {\n var cursor = this.session.selection.cursor;\n var insertPosition = position || { row: cursor.row, column: cursor.column };\n this.removeGhostText();\n var textLines = text.split(\"\\n\");\n this.addToken(textLines[0], \"ghost_text\", insertPosition.row, insertPosition.column);\n this.$ghostText = {\n text: text,\n position: {\n row: insertPosition.row,\n column: insertPosition.column\n }\n };\n if (textLines.length > 1) {\n this.$ghostTextWidget = {\n text: textLines.slice(1).join(\"\\n\"),\n row: insertPosition.row,\n column: insertPosition.column,\n className: \"ace_ghost_text\"\n };\n this.session.widgetManager.addLineWidget(this.$ghostTextWidget);\n var pixelPosition = this.$cursorLayer.getPixelPosition(insertPosition, true);\n var el = this.container;\n var height = el.getBoundingClientRect().height;\n var ghostTextHeight = textLines.length * this.lineHeight;\n var fitsY = ghostTextHeight < height - pixelPosition.top;\n if (fitsY)\n return;\n if (ghostTextHeight < height) {\n this.scrollBy(0, (textLines.length - 1) * this.lineHeight);\n }\n else {\n this.scrollBy(0, pixelPosition.top);\n }\n }\n };\n VirtualRenderer.prototype.removeGhostText = function () {\n if (!this.$ghostText)\n return;\n var position = this.$ghostText.position;\n this.removeExtraToken(position.row, position.column);\n if (this.$ghostTextWidget) {\n this.session.widgetManager.removeLineWidget(this.$ghostTextWidget);\n this.$ghostTextWidget = null;\n }\n this.$ghostText = null;\n };\n VirtualRenderer.prototype.addToken = function (text, type, row, column) {\n var session = this.session;\n session.bgTokenizer.lines[row] = null;\n var newToken = { type: type, value: text };\n var tokens = session.getTokens(row);\n if (column == null || !tokens.length) {\n tokens.push(newToken);\n }\n else {\n var l = 0;\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n l += token.value.length;\n if (column <= l) {\n var diff = token.value.length - (l - column);\n var before = token.value.slice(0, diff);\n var after = token.value.slice(diff);\n tokens.splice(i, 1, { type: token.type, value: before }, newToken, { type: token.type, value: after });\n break;\n }\n }\n }\n this.updateLines(row, row);\n };\n VirtualRenderer.prototype.removeExtraToken = function (row, column) {\n this.session.bgTokenizer.lines[row] = null;\n this.updateLines(row, row);\n };\n VirtualRenderer.prototype.setTheme = function (theme, cb) {\n var _self = this;\n this.$themeId = theme;\n _self._dispatchEvent('themeChange', { theme: theme });\n if (!theme || typeof theme == \"string\") {\n var moduleName = theme || this.$options.theme.initialValue;\n config.loadModule([\"theme\", moduleName], afterLoad);\n }\n else {\n afterLoad(theme);\n }\n function afterLoad(module) {\n if (_self.$themeId != theme)\n return cb && cb();\n if (!module || !module.cssClass)\n throw new Error(\"couldn't load module \" + theme + \" or it didn't call define\");\n if (module.$id)\n _self.$themeId = module.$id;\n dom.importCssString(module.cssText, module.cssClass, _self.container);\n if (_self.theme)\n dom.removeCssClass(_self.container, _self.theme.cssClass);\n var padding = \"padding\" in module ? module.padding\n : \"padding\" in (_self.theme || {}) ? 4 : _self.$padding;\n if (_self.$padding && padding != _self.$padding)\n _self.setPadding(padding);\n _self.$theme = module.cssClass;\n _self.theme = module;\n dom.addCssClass(_self.container, module.cssClass);\n dom.setCssClass(_self.container, \"ace_dark\", module.isDark);\n if (_self.$size) {\n _self.$size.width = 0;\n _self.$updateSizeAsync();\n }\n _self._dispatchEvent('themeLoaded', { theme: module });\n cb && cb();\n }\n };\n VirtualRenderer.prototype.getTheme = function () {\n return this.$themeId;\n };\n VirtualRenderer.prototype.setStyle = function (style, include) {\n dom.setCssClass(this.container, style, include !== false);\n };\n VirtualRenderer.prototype.unsetStyle = function (style) {\n dom.removeCssClass(this.container, style);\n };\n VirtualRenderer.prototype.setCursorStyle = function (style) {\n dom.setStyle(this.scroller.style, \"cursor\", style);\n };\n VirtualRenderer.prototype.setMouseCursor = function (cursorStyle) {\n dom.setStyle(this.scroller.style, \"cursor\", cursorStyle);\n };\n VirtualRenderer.prototype.attachToShadowRoot = function () {\n dom.importCssString(editorCss, \"ace_editor.css\", this.container);\n };\n VirtualRenderer.prototype.destroy = function () {\n this.freeze();\n this.$fontMetrics.destroy();\n this.$cursorLayer.destroy();\n this.removeAllListeners();\n this.container.textContent = \"\";\n this.setOption(\"useResizeObserver\", false);\n };\n VirtualRenderer.prototype.$updateCustomScrollbar = function (val) {\n var _self = this;\n this.$horizScroll = this.$vScroll = null;\n this.scrollBarV.element.remove();\n this.scrollBarH.element.remove();\n if (this.$scrollDecorator) {\n delete this.$scrollDecorator;\n }\n if (val === true) {\n this.scrollBarV = new VScrollBarCustom(this.container, this);\n this.scrollBarH = new HScrollBarCustom(this.container, this);\n this.scrollBarV.setHeight(this.$size.scrollerHeight);\n this.scrollBarH.setWidth(this.$size.scrollerWidth);\n this.scrollBarV.addEventListener(\"scroll\", function (e) {\n if (!_self.$scrollAnimation)\n _self.session.setScrollTop(e.data - _self.scrollMargin.top);\n });\n this.scrollBarH.addEventListener(\"scroll\", function (e) {\n if (!_self.$scrollAnimation)\n _self.session.setScrollLeft(e.data - _self.scrollMargin.left);\n });\n this.$scrollDecorator = new Decorator(this.scrollBarV, this);\n this.$scrollDecorator.$updateDecorators();\n }\n else {\n this.scrollBarV = new VScrollBar(this.container, this);\n this.scrollBarH = new HScrollBar(this.container, this);\n this.scrollBarV.addEventListener(\"scroll\", function (e) {\n if (!_self.$scrollAnimation)\n _self.session.setScrollTop(e.data - _self.scrollMargin.top);\n });\n this.scrollBarH.addEventListener(\"scroll\", function (e) {\n if (!_self.$scrollAnimation)\n _self.session.setScrollLeft(e.data - _self.scrollMargin.left);\n });\n }\n };\n VirtualRenderer.prototype.$addResizeObserver = function () {\n if (!window.ResizeObserver || this.$resizeObserver)\n return;\n var self = this;\n this.$resizeTimer = lang.delayedCall(function () {\n if (!self.destroyed)\n self.onResize();\n }, 50);\n this.$resizeObserver = new window.ResizeObserver(function (e) {\n var w = e[0].contentRect.width;\n var h = e[0].contentRect.height;\n if (Math.abs(self.$size.width - w) > 1\n || Math.abs(self.$size.height - h) > 1) {\n self.$resizeTimer.delay();\n }\n else {\n self.$resizeTimer.cancel();\n }\n });\n this.$resizeObserver.observe(this.container);\n };\n return VirtualRenderer;\n}());\nVirtualRenderer.prototype.CHANGE_CURSOR = 1;\nVirtualRenderer.prototype.CHANGE_MARKER = 2;\nVirtualRenderer.prototype.CHANGE_GUTTER = 4;\nVirtualRenderer.prototype.CHANGE_SCROLL = 8;\nVirtualRenderer.prototype.CHANGE_LINES = 16;\nVirtualRenderer.prototype.CHANGE_TEXT = 32;\nVirtualRenderer.prototype.CHANGE_SIZE = 64;\nVirtualRenderer.prototype.CHANGE_MARKER_BACK = 128;\nVirtualRenderer.prototype.CHANGE_MARKER_FRONT = 256;\nVirtualRenderer.prototype.CHANGE_FULL = 512;\nVirtualRenderer.prototype.CHANGE_H_SCROLL = 1024;\nVirtualRenderer.prototype.$changes = 0;\nVirtualRenderer.prototype.$padding = null;\nVirtualRenderer.prototype.$frozen = false;\nVirtualRenderer.prototype.STEPS = 8;\noop.implement(VirtualRenderer.prototype, EventEmitter);\nconfig.defineOptions(VirtualRenderer.prototype, \"renderer\", {\n useResizeObserver: {\n set: function (value) {\n if (!value && this.$resizeObserver) {\n this.$resizeObserver.disconnect();\n this.$resizeTimer.cancel();\n this.$resizeTimer = this.$resizeObserver = null;\n }\n else if (value && !this.$resizeObserver) {\n this.$addResizeObserver();\n }\n }\n },\n animatedScroll: { initialValue: false },\n showInvisibles: {\n set: function (value) {\n if (this.$textLayer.setShowInvisibles(value))\n this.$loop.schedule(this.CHANGE_TEXT);\n },\n initialValue: false\n },\n showPrintMargin: {\n set: function () { this.$updatePrintMargin(); },\n initialValue: true\n },\n printMarginColumn: {\n set: function () { this.$updatePrintMargin(); },\n initialValue: 80\n },\n printMargin: {\n set: function (val) {\n if (typeof val == \"number\")\n this.$printMarginColumn = val;\n this.$showPrintMargin = !!val;\n this.$updatePrintMargin();\n },\n get: function () {\n return this.$showPrintMargin && this.$printMarginColumn;\n }\n },\n showGutter: {\n set: function (show) {\n this.$gutter.style.display = show ? \"block\" : \"none\";\n this.$loop.schedule(this.CHANGE_FULL);\n this.onGutterResize();\n },\n initialValue: true\n },\n useSvgGutterIcons: {\n set: function (value) {\n this.$gutterLayer.$useSvgGutterIcons = value;\n },\n initialValue: false\n },\n showFoldedAnnotations: {\n set: function (value) {\n this.$gutterLayer.$showFoldedAnnotations = value;\n },\n initialValue: false\n },\n fadeFoldWidgets: {\n set: function (show) {\n dom.setCssClass(this.$gutter, \"ace_fade-fold-widgets\", show);\n },\n initialValue: false\n },\n showFoldWidgets: {\n set: function (show) {\n this.$gutterLayer.setShowFoldWidgets(show);\n this.$loop.schedule(this.CHANGE_GUTTER);\n },\n initialValue: true\n },\n displayIndentGuides: {\n set: function (show) {\n if (this.$textLayer.setDisplayIndentGuides(show))\n this.$loop.schedule(this.CHANGE_TEXT);\n },\n initialValue: true\n },\n highlightIndentGuides: {\n set: function (show) {\n if (this.$textLayer.setHighlightIndentGuides(show) == true) {\n this.$textLayer.$highlightIndentGuide();\n }\n else {\n this.$textLayer.$clearActiveIndentGuide(this.$textLayer.$lines.cells);\n }\n },\n initialValue: true\n },\n highlightGutterLine: {\n set: function (shouldHighlight) {\n this.$gutterLayer.setHighlightGutterLine(shouldHighlight);\n this.$loop.schedule(this.CHANGE_GUTTER);\n },\n initialValue: true\n },\n hScrollBarAlwaysVisible: {\n set: function (val) {\n if (!this.$hScrollBarAlwaysVisible || !this.$horizScroll)\n this.$loop.schedule(this.CHANGE_SCROLL);\n },\n initialValue: false\n },\n vScrollBarAlwaysVisible: {\n set: function (val) {\n if (!this.$vScrollBarAlwaysVisible || !this.$vScroll)\n this.$loop.schedule(this.CHANGE_SCROLL);\n },\n initialValue: false\n },\n fontSize: {\n set: function (size) {\n if (typeof size == \"number\")\n size = size + \"px\";\n this.container.style.fontSize = size;\n this.updateFontSize();\n },\n initialValue: 12\n },\n fontFamily: {\n set: function (name) {\n this.container.style.fontFamily = name;\n this.updateFontSize();\n }\n },\n maxLines: {\n set: function (val) {\n this.updateFull();\n }\n },\n minLines: {\n set: function (val) {\n if (!(this.$minLines < 0x1ffffffffffff))\n this.$minLines = 0;\n this.updateFull();\n }\n },\n maxPixelHeight: {\n set: function (val) {\n this.updateFull();\n },\n initialValue: 0\n },\n scrollPastEnd: {\n set: function (val) {\n val = +val || 0;\n if (this.$scrollPastEnd == val)\n return;\n this.$scrollPastEnd = val;\n this.$loop.schedule(this.CHANGE_SCROLL);\n },\n initialValue: 0,\n handlesSet: true\n },\n fixedWidthGutter: {\n set: function (val) {\n this.$gutterLayer.$fixedWidth = !!val;\n this.$loop.schedule(this.CHANGE_GUTTER);\n }\n },\n customScrollbar: {\n set: function (val) {\n this.$updateCustomScrollbar(val);\n },\n initialValue: false\n },\n theme: {\n set: function (val) { this.setTheme(val); },\n get: function () { return this.$themeId || this.theme; },\n initialValue: \"./theme/textmate\",\n handlesSet: true\n },\n hasCssTransforms: {},\n useTextareaForIME: {\n initialValue: !useragent.isMobile && !useragent.isIE\n }\n});\nexports.VirtualRenderer = VirtualRenderer;\n\n});\n\nace.define(\"ace/worker/worker_client\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/net\",\"ace/lib/event_emitter\",\"ace/config\"], function(require, exports, module) {\n\"use strict\";\n\nvar oop = require(\"../lib/oop\");\nvar net = require(\"../lib/net\");\nvar EventEmitter = require(\"../lib/event_emitter\").EventEmitter;\nvar config = require(\"../config\");\n\nfunction $workerBlob(workerUrl) {\n var script = \"importScripts('\" + net.qualifyURL(workerUrl) + \"');\";\n try {\n return new Blob([script], {\"type\": \"application/javascript\"});\n } catch (e) { // Backwards-compatibility\n var BlobBuilder = window.BlobBuilder || window.WebKitBlobBuilder || window.MozBlobBuilder;\n var blobBuilder = new BlobBuilder();\n blobBuilder.append(script);\n return blobBuilder.getBlob(\"application/javascript\");\n }\n}\n\nfunction createWorker(workerUrl) {\n if (typeof Worker == \"undefined\")\n return { postMessage: function() {}, terminate: function() {} };\n if (config.get(\"loadWorkerFromBlob\")) {\n var blob = $workerBlob(workerUrl);\n var URL = window.URL || window.webkitURL;\n var blobURL = URL.createObjectURL(blob);\n return new Worker(blobURL);\n }\n return new Worker(workerUrl);\n}\n\nvar WorkerClient = function(worker) {\n if (!worker.postMessage)\n worker = this.$createWorkerFromOldConfig.apply(this, arguments);\n\n this.$worker = worker;\n this.$sendDeltaQueue = this.$sendDeltaQueue.bind(this);\n this.changeListener = this.changeListener.bind(this);\n this.onMessage = this.onMessage.bind(this);\n\n this.callbackId = 1;\n this.callbacks = {};\n\n this.$worker.onmessage = this.onMessage;\n};\n\n(function(){\n\n oop.implement(this, EventEmitter);\n\n this.$createWorkerFromOldConfig = function(topLevelNamespaces, mod, classname, workerUrl, importScripts) {\n if (require.nameToUrl && !require.toUrl)\n require.toUrl = require.nameToUrl;\n\n if (config.get(\"packaged\") || !require.toUrl) {\n workerUrl = workerUrl || config.moduleUrl(mod, \"worker\");\n } else {\n var normalizePath = this.$normalizePath;\n workerUrl = workerUrl || normalizePath(require.toUrl(\"ace/worker/worker.js\", null, \"_\"));\n\n var tlns = {};\n topLevelNamespaces.forEach(function(ns) {\n tlns[ns] = normalizePath(require.toUrl(ns, null, \"_\").replace(/(\\.js)?(\\?.*)?$/, \"\"));\n });\n }\n\n this.$worker = createWorker(workerUrl);\n if (importScripts) {\n this.send(\"importScripts\", importScripts);\n }\n this.$worker.postMessage({\n init : true,\n tlns : tlns,\n module : mod,\n classname : classname\n });\n return this.$worker;\n };\n\n this.onMessage = function(e) {\n var msg = e.data;\n switch (msg.type) {\n case \"event\":\n this._signal(msg.name, {data: msg.data});\n break;\n case \"call\":\n var callback = this.callbacks[msg.id];\n if (callback) {\n callback(msg.data);\n delete this.callbacks[msg.id];\n }\n break;\n case \"error\":\n this.reportError(msg.data);\n break;\n case \"log\":\n window.console && console.log && console.log.apply(console, msg.data);\n break;\n }\n };\n \n this.reportError = function(err) {\n window.console && console.error && console.error(err);\n };\n\n this.$normalizePath = function(path) {\n return net.qualifyURL(path);\n };\n\n this.terminate = function() {\n this._signal(\"terminate\", {});\n this.deltaQueue = null;\n this.$worker.terminate();\n this.$worker.onerror = function(e) {\n e.preventDefault();\n };\n this.$worker = null;\n if (this.$doc)\n this.$doc.off(\"change\", this.changeListener);\n this.$doc = null;\n };\n\n this.send = function(cmd, args) {\n this.$worker.postMessage({command: cmd, args: args});\n };\n\n this.call = function(cmd, args, callback) {\n if (callback) {\n var id = this.callbackId++;\n this.callbacks[id] = callback;\n args.push(id);\n }\n this.send(cmd, args);\n };\n\n this.emit = function(event, data) {\n try {\n if (data.data && data.data.err)\n data.data.err = {message: data.data.err.message, stack: data.data.err.stack, code: data.data.err.code};\n this.$worker && this.$worker.postMessage({event: event, data: {data: data.data}});\n }\n catch(ex) {\n console.error(ex.stack);\n }\n };\n\n this.attachToDocument = function(doc) {\n if (this.$doc)\n this.terminate();\n\n this.$doc = doc;\n this.call(\"setValue\", [doc.getValue()]);\n doc.on(\"change\", this.changeListener, true);\n };\n\n this.changeListener = function(delta) {\n if (!this.deltaQueue) {\n this.deltaQueue = [];\n setTimeout(this.$sendDeltaQueue, 0);\n }\n if (delta.action == \"insert\")\n this.deltaQueue.push(delta.start, delta.lines);\n else\n this.deltaQueue.push(delta.start, delta.end);\n };\n\n this.$sendDeltaQueue = function() {\n var q = this.deltaQueue;\n if (!q) return;\n this.deltaQueue = null;\n if (q.length > 50 && q.length > this.$doc.getLength() >> 1) {\n this.call(\"setValue\", [this.$doc.getValue()]);\n } else\n this.emit(\"change\", {data: q});\n };\n\n}).call(WorkerClient.prototype);\n\n\nvar UIWorkerClient = function(topLevelNamespaces, mod, classname) {\n var main = null;\n var emitSync = false;\n var sender = Object.create(EventEmitter);\n\n var messageBuffer = [];\n var workerClient = new WorkerClient({\n messageBuffer: messageBuffer,\n terminate: function() {},\n postMessage: function(e) {\n messageBuffer.push(e);\n if (!main) return;\n if (emitSync)\n setTimeout(processNext);\n else\n processNext();\n }\n });\n\n workerClient.setEmitSync = function(val) { emitSync = val; };\n\n var processNext = function() {\n var msg = messageBuffer.shift();\n if (msg.command)\n main[msg.command].apply(main, msg.args);\n else if (msg.event)\n sender._signal(msg.event, msg.data);\n };\n\n sender.postMessage = function(msg) {\n workerClient.onMessage({data: msg});\n };\n sender.callback = function(data, callbackId) {\n this.postMessage({type: \"call\", id: callbackId, data: data});\n };\n sender.emit = function(name, data) {\n this.postMessage({type: \"event\", name: name, data: data});\n };\n\n config.loadModule([\"worker\", mod], function(Main) {\n main = new Main[classname](sender);\n while (messageBuffer.length)\n processNext();\n });\n\n return workerClient;\n};\n\nexports.UIWorkerClient = UIWorkerClient;\nexports.WorkerClient = WorkerClient;\nexports.createWorker = createWorker;\n\n\n});\n\nace.define(\"ace/placeholder\",[\"require\",\"exports\",\"module\",\"ace/range\",\"ace/lib/event_emitter\",\"ace/lib/oop\"], function(require, exports, module){\"use strict\";\nvar Range = require(\"./range\").Range;\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar oop = require(\"./lib/oop\");\nvar PlaceHolder = /** @class */ (function () {\n function PlaceHolder(session, length, pos, others, mainClass, othersClass) {\n var _self = this;\n this.length = length;\n this.session = session;\n this.doc = session.getDocument();\n this.mainClass = mainClass;\n this.othersClass = othersClass;\n this.$onUpdate = this.onUpdate.bind(this);\n this.doc.on(\"change\", this.$onUpdate, true);\n this.$others = others;\n this.$onCursorChange = function () {\n setTimeout(function () {\n _self.onCursorChange();\n });\n };\n this.$pos = pos;\n var undoStack = session.getUndoManager().$undoStack || session.getUndoManager().$undostack || { length: -1 };\n this.$undoStackDepth = undoStack.length;\n this.setup();\n session.selection.on(\"changeCursor\", this.$onCursorChange);\n }\n PlaceHolder.prototype.setup = function () {\n var _self = this;\n var doc = this.doc;\n var session = this.session;\n this.selectionBefore = session.selection.toJSON();\n if (session.selection.inMultiSelectMode)\n session.selection.toSingleRange();\n this.pos = doc.createAnchor(this.$pos.row, this.$pos.column);\n var pos = this.pos;\n pos.$insertRight = true;\n pos.detach();\n pos.markerId = session.addMarker(new Range(pos.row, pos.column, pos.row, pos.column + this.length), this.mainClass, null, false);\n this.others = [];\n this.$others.forEach(function (other) {\n var anchor = doc.createAnchor(other.row, other.column);\n anchor.$insertRight = true;\n anchor.detach();\n _self.others.push(anchor);\n });\n session.setUndoSelect(false);\n };\n PlaceHolder.prototype.showOtherMarkers = function () {\n if (this.othersActive)\n return;\n var session = this.session;\n var _self = this;\n this.othersActive = true;\n this.others.forEach(function (anchor) {\n anchor.markerId = session.addMarker(new Range(anchor.row, anchor.column, anchor.row, anchor.column + _self.length), _self.othersClass, null, false);\n });\n };\n PlaceHolder.prototype.hideOtherMarkers = function () {\n if (!this.othersActive)\n return;\n this.othersActive = false;\n for (var i = 0; i < this.others.length; i++) {\n this.session.removeMarker(this.others[i].markerId);\n }\n };\n PlaceHolder.prototype.onUpdate = function (delta) {\n if (this.$updating)\n return this.updateAnchors(delta);\n var range = delta;\n if (range.start.row !== range.end.row)\n return;\n if (range.start.row !== this.pos.row)\n return;\n this.$updating = true;\n var lengthDiff = delta.action === \"insert\" ? range.end.column - range.start.column : range.start.column - range.end.column;\n var inMainRange = range.start.column >= this.pos.column && range.start.column <= this.pos.column + this.length + 1;\n var distanceFromStart = range.start.column - this.pos.column;\n this.updateAnchors(delta);\n if (inMainRange)\n this.length += lengthDiff;\n if (inMainRange && !this.session.$fromUndo) {\n if (delta.action === 'insert') {\n for (var i = this.others.length - 1; i >= 0; i--) {\n var otherPos = this.others[i];\n var newPos = { row: otherPos.row, column: otherPos.column + distanceFromStart };\n this.doc.insertMergedLines(newPos, delta.lines);\n }\n }\n else if (delta.action === 'remove') {\n for (var i = this.others.length - 1; i >= 0; i--) {\n var otherPos = this.others[i];\n var newPos = { row: otherPos.row, column: otherPos.column + distanceFromStart };\n this.doc.remove(new Range(newPos.row, newPos.column, newPos.row, newPos.column - lengthDiff));\n }\n }\n }\n this.$updating = false;\n this.updateMarkers();\n };\n PlaceHolder.prototype.updateAnchors = function (delta) {\n this.pos.onChange(delta);\n for (var i = this.others.length; i--;)\n this.others[i].onChange(delta);\n this.updateMarkers();\n };\n PlaceHolder.prototype.updateMarkers = function () {\n if (this.$updating)\n return;\n var _self = this;\n var session = this.session;\n var updateMarker = function (pos, className) {\n session.removeMarker(pos.markerId);\n pos.markerId = session.addMarker(new Range(pos.row, pos.column, pos.row, pos.column + _self.length), className, null, false);\n };\n updateMarker(this.pos, this.mainClass);\n for (var i = this.others.length; i--;)\n updateMarker(this.others[i], this.othersClass);\n };\n PlaceHolder.prototype.onCursorChange = function (event) {\n if (this.$updating || !this.session)\n return;\n var pos = this.session.selection.getCursor();\n if (pos.row === this.pos.row && pos.column >= this.pos.column && pos.column <= this.pos.column + this.length) {\n this.showOtherMarkers();\n this._emit(\"cursorEnter\", event);\n }\n else {\n this.hideOtherMarkers();\n this._emit(\"cursorLeave\", event);\n }\n };\n PlaceHolder.prototype.detach = function () {\n this.session.removeMarker(this.pos && this.pos.markerId);\n this.hideOtherMarkers();\n this.doc.off(\"change\", this.$onUpdate);\n this.session.selection.off(\"changeCursor\", this.$onCursorChange);\n this.session.setUndoSelect(true);\n this.session = null;\n };\n PlaceHolder.prototype.cancel = function () {\n if (this.$undoStackDepth === -1)\n return;\n var undoManager = this.session.getUndoManager();\n var undosRequired = (undoManager.$undoStack || undoManager.$undostack).length - this.$undoStackDepth;\n for (var i = 0; i < undosRequired; i++) {\n undoManager.undo(this.session, true);\n }\n if (this.selectionBefore)\n this.session.selection.fromJSON(this.selectionBefore);\n };\n return PlaceHolder;\n}());\noop.implement(PlaceHolder.prototype, EventEmitter);\nexports.PlaceHolder = PlaceHolder;\n\n});\n\nace.define(\"ace/mouse/multi_select_handler\",[\"require\",\"exports\",\"module\",\"ace/lib/event\",\"ace/lib/useragent\"], function(require, exports, module){var event = require(\"../lib/event\");\nvar useragent = require(\"../lib/useragent\");\nfunction isSamePoint(p1, p2) {\n return p1.row == p2.row && p1.column == p2.column;\n}\nfunction onMouseDown(e) {\n var ev = e.domEvent;\n var alt = ev.altKey;\n var shift = ev.shiftKey;\n var ctrl = ev.ctrlKey;\n var accel = e.getAccelKey();\n var button = e.getButton();\n if (ctrl && useragent.isMac)\n button = ev.button;\n if (e.editor.inMultiSelectMode && button == 2) {\n e.editor.textInput.onContextMenu(e.domEvent);\n return;\n }\n if (!ctrl && !alt && !accel) {\n if (button === 0 && e.editor.inMultiSelectMode)\n e.editor.exitMultiSelectMode();\n return;\n }\n if (button !== 0)\n return;\n var editor = e.editor;\n var selection = editor.selection;\n var isMultiSelect = editor.inMultiSelectMode;\n var pos = e.getDocumentPosition();\n var cursor = selection.getCursor();\n var inSelection = e.inSelection() || (selection.isEmpty() && isSamePoint(pos, cursor));\n var mouseX = e.x, mouseY = e.y;\n var onMouseSelection = function (e) {\n mouseX = e.clientX;\n mouseY = e.clientY;\n };\n var session = editor.session;\n var screenAnchor = editor.renderer.pixelToScreenCoordinates(mouseX, mouseY);\n var screenCursor = screenAnchor;\n var selectionMode;\n if (editor.$mouseHandler.$enableJumpToDef) {\n if (ctrl && alt || accel && alt)\n selectionMode = shift ? \"block\" : \"add\";\n else if (alt && editor.$blockSelectEnabled)\n selectionMode = \"block\";\n }\n else {\n if (accel && !alt) {\n selectionMode = \"add\";\n if (!isMultiSelect && shift)\n return;\n }\n else if (alt && editor.$blockSelectEnabled) {\n selectionMode = \"block\";\n }\n }\n if (selectionMode && useragent.isMac && ev.ctrlKey) {\n editor.$mouseHandler.cancelContextMenu();\n }\n if (selectionMode == \"add\") {\n if (!isMultiSelect && inSelection)\n return; // dragging\n if (!isMultiSelect) {\n var range = selection.toOrientedRange();\n editor.addSelectionMarker(range);\n }\n var oldRange = selection.rangeList.rangeAtPoint(pos);\n editor.inVirtualSelectionMode = true;\n if (shift) {\n oldRange = null;\n range = selection.ranges[0] || range;\n editor.removeSelectionMarker(range);\n }\n editor.once(\"mouseup\", function () {\n var tmpSel = selection.toOrientedRange();\n if (oldRange && tmpSel.isEmpty() && isSamePoint(oldRange.cursor, tmpSel.cursor))\n selection.substractPoint(tmpSel.cursor);\n else {\n if (shift) {\n selection.substractPoint(range.cursor);\n }\n else if (range) {\n editor.removeSelectionMarker(range);\n selection.addRange(range);\n }\n selection.addRange(tmpSel);\n }\n editor.inVirtualSelectionMode = false;\n });\n }\n else if (selectionMode == \"block\") {\n e.stop();\n editor.inVirtualSelectionMode = true;\n var initialRange;\n var rectSel = [];\n var blockSelect = function () {\n var newCursor = editor.renderer.pixelToScreenCoordinates(mouseX, mouseY);\n var cursor = session.screenToDocumentPosition(newCursor.row, newCursor.column, newCursor.offsetX);\n if (isSamePoint(screenCursor, newCursor) && isSamePoint(cursor, selection.lead))\n return;\n screenCursor = newCursor;\n editor.selection.moveToPosition(cursor);\n editor.renderer.scrollCursorIntoView();\n editor.removeSelectionMarkers(rectSel);\n rectSel = selection.rectangularRangeBlock(screenCursor, screenAnchor);\n if (editor.$mouseHandler.$clickSelection && rectSel.length == 1 && rectSel[0].isEmpty())\n rectSel[0] = editor.$mouseHandler.$clickSelection.clone();\n rectSel.forEach(editor.addSelectionMarker, editor);\n editor.updateSelectionMarkers();\n };\n if (isMultiSelect && !accel) {\n selection.toSingleRange();\n }\n else if (!isMultiSelect && accel) {\n initialRange = selection.toOrientedRange();\n editor.addSelectionMarker(initialRange);\n }\n if (shift)\n screenAnchor = session.documentToScreenPosition(selection.lead);\n else\n selection.moveToPosition(pos);\n screenCursor = { row: -1, column: -1 };\n var onMouseSelectionEnd = function (e) {\n blockSelect();\n clearInterval(timerId);\n editor.removeSelectionMarkers(rectSel);\n if (!rectSel.length)\n rectSel = [selection.toOrientedRange()];\n if (initialRange) {\n editor.removeSelectionMarker(initialRange);\n selection.toSingleRange(initialRange);\n }\n for (var i = 0; i < rectSel.length; i++)\n selection.addRange(rectSel[i]);\n editor.inVirtualSelectionMode = false;\n editor.$mouseHandler.$clickSelection = null;\n };\n var onSelectionInterval = blockSelect;\n event.capture(editor.container, onMouseSelection, onMouseSelectionEnd);\n var timerId = setInterval(function () { onSelectionInterval(); }, 20);\n return e.preventDefault();\n }\n}\nexports.onMouseDown = onMouseDown;\n\n});\n\nace.define(\"ace/commands/multi_select_commands\",[\"require\",\"exports\",\"module\",\"ace/keyboard/hash_handler\"], function(require, exports, module){// commands to enter multiselect mode\nexports.defaultCommands = [{\n name: \"addCursorAbove\",\n description: \"Add cursor above\",\n exec: function (editor) { editor.selectMoreLines(-1); },\n bindKey: { win: \"Ctrl-Alt-Up\", mac: \"Ctrl-Alt-Up\" },\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"addCursorBelow\",\n description: \"Add cursor below\",\n exec: function (editor) { editor.selectMoreLines(1); },\n bindKey: { win: \"Ctrl-Alt-Down\", mac: \"Ctrl-Alt-Down\" },\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"addCursorAboveSkipCurrent\",\n description: \"Add cursor above (skip current)\",\n exec: function (editor) { editor.selectMoreLines(-1, true); },\n bindKey: { win: \"Ctrl-Alt-Shift-Up\", mac: \"Ctrl-Alt-Shift-Up\" },\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"addCursorBelowSkipCurrent\",\n description: \"Add cursor below (skip current)\",\n exec: function (editor) { editor.selectMoreLines(1, true); },\n bindKey: { win: \"Ctrl-Alt-Shift-Down\", mac: \"Ctrl-Alt-Shift-Down\" },\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"selectMoreBefore\",\n description: \"Select more before\",\n exec: function (editor) { editor.selectMore(-1); },\n bindKey: { win: \"Ctrl-Alt-Left\", mac: \"Ctrl-Alt-Left\" },\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"selectMoreAfter\",\n description: \"Select more after\",\n exec: function (editor) { editor.selectMore(1); },\n bindKey: { win: \"Ctrl-Alt-Right\", mac: \"Ctrl-Alt-Right\" },\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"selectNextBefore\",\n description: \"Select next before\",\n exec: function (editor) { editor.selectMore(-1, true); },\n bindKey: { win: \"Ctrl-Alt-Shift-Left\", mac: \"Ctrl-Alt-Shift-Left\" },\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"selectNextAfter\",\n description: \"Select next after\",\n exec: function (editor) { editor.selectMore(1, true); },\n bindKey: { win: \"Ctrl-Alt-Shift-Right\", mac: \"Ctrl-Alt-Shift-Right\" },\n scrollIntoView: \"cursor\",\n readOnly: true\n }, {\n name: \"toggleSplitSelectionIntoLines\",\n description: \"Split selection into lines\",\n exec: function (editor) {\n if (editor.multiSelect.rangeCount > 1)\n editor.multiSelect.joinSelections();\n else\n editor.multiSelect.splitIntoLines();\n },\n bindKey: { win: \"Ctrl-Alt-L\", mac: \"Ctrl-Alt-L\" },\n readOnly: true\n }, {\n name: \"splitSelectionIntoLines\",\n description: \"Split into lines\",\n exec: function (editor) { editor.multiSelect.splitIntoLines(); },\n readOnly: true\n }, {\n name: \"alignCursors\",\n description: \"Align cursors\",\n exec: function (editor) { editor.alignCursors(); },\n bindKey: { win: \"Ctrl-Alt-A\", mac: \"Ctrl-Alt-A\" },\n scrollIntoView: \"cursor\"\n }, {\n name: \"findAll\",\n description: \"Find all\",\n exec: function (editor) { editor.findAll(); },\n bindKey: { win: \"Ctrl-Alt-K\", mac: \"Ctrl-Alt-G\" },\n scrollIntoView: \"cursor\",\n readOnly: true\n }];\nexports.multiSelectCommands = [{\n name: \"singleSelection\",\n description: \"Single selection\",\n bindKey: \"esc\",\n exec: function (editor) { editor.exitMultiSelectMode(); },\n scrollIntoView: \"cursor\",\n readOnly: true,\n isAvailable: function (editor) { return editor && editor.inMultiSelectMode; }\n }];\nvar HashHandler = require(\"../keyboard/hash_handler\").HashHandler;\nexports.keyboardHandler = new HashHandler(exports.multiSelectCommands);\n\n});\n\nace.define(\"ace/multi_select\",[\"require\",\"exports\",\"module\",\"ace/range_list\",\"ace/range\",\"ace/selection\",\"ace/mouse/multi_select_handler\",\"ace/lib/event\",\"ace/lib/lang\",\"ace/commands/multi_select_commands\",\"ace/search\",\"ace/edit_session\",\"ace/editor\",\"ace/config\"], function(require, exports, module){var RangeList = require(\"./range_list\").RangeList;\nvar Range = require(\"./range\").Range;\nvar Selection = require(\"./selection\").Selection;\nvar onMouseDown = require(\"./mouse/multi_select_handler\").onMouseDown;\nvar event = require(\"./lib/event\");\nvar lang = require(\"./lib/lang\");\nvar commands = require(\"./commands/multi_select_commands\");\nexports.commands = commands.defaultCommands.concat(commands.multiSelectCommands);\nvar Search = require(\"./search\").Search;\nvar search = new Search();\nfunction find(session, needle, dir) {\n search.$options.wrap = true;\n search.$options.needle = needle;\n search.$options.backwards = dir == -1;\n return search.find(session);\n}\nvar EditSession = require(\"./edit_session\").EditSession;\n(function () {\n this.getSelectionMarkers = function () {\n return this.$selectionMarkers;\n };\n}).call(EditSession.prototype);\n(function () {\n this.ranges = null;\n this.rangeList = null;\n this.addRange = function (range, $blockChangeEvents) {\n if (!range)\n return;\n if (!this.inMultiSelectMode && this.rangeCount === 0) {\n var oldRange = this.toOrientedRange();\n this.rangeList.add(oldRange);\n this.rangeList.add(range);\n if (this.rangeList.ranges.length != 2) {\n this.rangeList.removeAll();\n return $blockChangeEvents || this.fromOrientedRange(range);\n }\n this.rangeList.removeAll();\n this.rangeList.add(oldRange);\n this.$onAddRange(oldRange);\n }\n if (!range.cursor)\n range.cursor = range.end;\n var removed = this.rangeList.add(range);\n this.$onAddRange(range);\n if (removed.length)\n this.$onRemoveRange(removed);\n if (this.rangeCount > 1 && !this.inMultiSelectMode) {\n this._signal(\"multiSelect\");\n this.inMultiSelectMode = true;\n this.session.$undoSelect = false;\n this.rangeList.attach(this.session);\n }\n return $blockChangeEvents || this.fromOrientedRange(range);\n };\n this.toSingleRange = function (range) {\n range = range || this.ranges[0];\n var removed = this.rangeList.removeAll();\n if (removed.length)\n this.$onRemoveRange(removed);\n range && this.fromOrientedRange(range);\n };\n this.substractPoint = function (pos) {\n var removed = this.rangeList.substractPoint(pos);\n if (removed) {\n this.$onRemoveRange(removed);\n return removed[0];\n }\n };\n this.mergeOverlappingRanges = function () {\n var removed = this.rangeList.merge();\n if (removed.length)\n this.$onRemoveRange(removed);\n };\n this.$onAddRange = function (range) {\n this.rangeCount = this.rangeList.ranges.length;\n this.ranges.unshift(range);\n this._signal(\"addRange\", { range: range });\n };\n this.$onRemoveRange = function (removed) {\n this.rangeCount = this.rangeList.ranges.length;\n if (this.rangeCount == 1 && this.inMultiSelectMode) {\n var lastRange = this.rangeList.ranges.pop();\n removed.push(lastRange);\n this.rangeCount = 0;\n }\n for (var i = removed.length; i--;) {\n var index = this.ranges.indexOf(removed[i]);\n this.ranges.splice(index, 1);\n }\n this._signal(\"removeRange\", { ranges: removed });\n if (this.rangeCount === 0 && this.inMultiSelectMode) {\n this.inMultiSelectMode = false;\n this._signal(\"singleSelect\");\n this.session.$undoSelect = true;\n this.rangeList.detach(this.session);\n }\n lastRange = lastRange || this.ranges[0];\n if (lastRange && !lastRange.isEqual(this.getRange()))\n this.fromOrientedRange(lastRange);\n };\n this.$initRangeList = function () {\n if (this.rangeList)\n return;\n this.rangeList = new RangeList();\n this.ranges = [];\n this.rangeCount = 0;\n };\n this.getAllRanges = function () {\n return this.rangeCount ? this.rangeList.ranges.concat() : [this.getRange()];\n };\n this.splitIntoLines = function () {\n var ranges = this.ranges.length ? this.ranges : [this.getRange()];\n var newRanges = [];\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i];\n var row = range.start.row;\n var endRow = range.end.row;\n if (row === endRow) {\n newRanges.push(range.clone());\n }\n else {\n newRanges.push(new Range(row, range.start.column, row, this.session.getLine(row).length));\n while (++row < endRow)\n newRanges.push(this.getLineRange(row, true));\n newRanges.push(new Range(endRow, 0, endRow, range.end.column));\n }\n if (i == 0 && !this.isBackwards())\n newRanges = newRanges.reverse();\n }\n this.toSingleRange();\n for (var i = newRanges.length; i--;)\n this.addRange(newRanges[i]);\n };\n this.joinSelections = function () {\n var ranges = this.rangeList.ranges;\n var lastRange = ranges[ranges.length - 1];\n var range = Range.fromPoints(ranges[0].start, lastRange.end);\n this.toSingleRange();\n this.setSelectionRange(range, lastRange.cursor == lastRange.start);\n };\n this.toggleBlockSelection = function () {\n if (this.rangeCount > 1) {\n var ranges = this.rangeList.ranges;\n var lastRange = ranges[ranges.length - 1];\n var range = Range.fromPoints(ranges[0].start, lastRange.end);\n this.toSingleRange();\n this.setSelectionRange(range, lastRange.cursor == lastRange.start);\n }\n else {\n var cursor = this.session.documentToScreenPosition(this.cursor);\n var anchor = this.session.documentToScreenPosition(this.anchor);\n var rectSel = this.rectangularRangeBlock(cursor, anchor);\n rectSel.forEach(this.addRange, this);\n }\n };\n this.rectangularRangeBlock = function (screenCursor, screenAnchor, includeEmptyLines) {\n var rectSel = [];\n var xBackwards = screenCursor.column < screenAnchor.column;\n if (xBackwards) {\n var startColumn = screenCursor.column;\n var endColumn = screenAnchor.column;\n var startOffsetX = screenCursor.offsetX;\n var endOffsetX = screenAnchor.offsetX;\n }\n else {\n var startColumn = screenAnchor.column;\n var endColumn = screenCursor.column;\n var startOffsetX = screenAnchor.offsetX;\n var endOffsetX = screenCursor.offsetX;\n }\n var yBackwards = screenCursor.row < screenAnchor.row;\n if (yBackwards) {\n var startRow = screenCursor.row;\n var endRow = screenAnchor.row;\n }\n else {\n var startRow = screenAnchor.row;\n var endRow = screenCursor.row;\n }\n if (startColumn < 0)\n startColumn = 0;\n if (startRow < 0)\n startRow = 0;\n if (startRow == endRow)\n includeEmptyLines = true;\n var docEnd;\n for (var row = startRow; row <= endRow; row++) {\n var range = Range.fromPoints(this.session.screenToDocumentPosition(row, startColumn, startOffsetX), this.session.screenToDocumentPosition(row, endColumn, endOffsetX));\n if (range.isEmpty()) {\n if (docEnd && isSamePoint(range.end, docEnd))\n break;\n docEnd = range.end;\n }\n range.cursor = xBackwards ? range.start : range.end;\n rectSel.push(range);\n }\n if (yBackwards)\n rectSel.reverse();\n if (!includeEmptyLines) {\n var end = rectSel.length - 1;\n while (rectSel[end].isEmpty() && end > 0)\n end--;\n if (end > 0) {\n var start = 0;\n while (rectSel[start].isEmpty())\n start++;\n }\n for (var i = end; i >= start; i--) {\n if (rectSel[i].isEmpty())\n rectSel.splice(i, 1);\n }\n }\n return rectSel;\n };\n}).call(Selection.prototype);\nvar Editor = require(\"./editor\").Editor;\n(function () {\n this.updateSelectionMarkers = function () {\n this.renderer.updateCursor();\n this.renderer.updateBackMarkers();\n };\n this.addSelectionMarker = function (orientedRange) {\n if (!orientedRange.cursor)\n orientedRange.cursor = orientedRange.end;\n var style = this.getSelectionStyle();\n orientedRange.marker = this.session.addMarker(orientedRange, \"ace_selection\", style);\n this.session.$selectionMarkers.push(orientedRange);\n this.session.selectionMarkerCount = this.session.$selectionMarkers.length;\n return orientedRange;\n };\n this.removeSelectionMarker = function (range) {\n if (!range.marker)\n return;\n this.session.removeMarker(range.marker);\n var index = this.session.$selectionMarkers.indexOf(range);\n if (index != -1)\n this.session.$selectionMarkers.splice(index, 1);\n this.session.selectionMarkerCount = this.session.$selectionMarkers.length;\n };\n this.removeSelectionMarkers = function (ranges) {\n var markerList = this.session.$selectionMarkers;\n for (var i = ranges.length; i--;) {\n var range = ranges[i];\n if (!range.marker)\n continue;\n this.session.removeMarker(range.marker);\n var index = markerList.indexOf(range);\n if (index != -1)\n markerList.splice(index, 1);\n }\n this.session.selectionMarkerCount = markerList.length;\n };\n this.$onAddRange = function (e) {\n this.addSelectionMarker(e.range);\n this.renderer.updateCursor();\n this.renderer.updateBackMarkers();\n };\n this.$onRemoveRange = function (e) {\n this.removeSelectionMarkers(e.ranges);\n this.renderer.updateCursor();\n this.renderer.updateBackMarkers();\n };\n this.$onMultiSelect = function (e) {\n if (this.inMultiSelectMode)\n return;\n this.inMultiSelectMode = true;\n this.setStyle(\"ace_multiselect\");\n this.keyBinding.addKeyboardHandler(commands.keyboardHandler);\n this.commands.setDefaultHandler(\"exec\", this.$onMultiSelectExec);\n this.renderer.updateCursor();\n this.renderer.updateBackMarkers();\n };\n this.$onSingleSelect = function (e) {\n if (this.session.multiSelect.inVirtualMode)\n return;\n this.inMultiSelectMode = false;\n this.unsetStyle(\"ace_multiselect\");\n this.keyBinding.removeKeyboardHandler(commands.keyboardHandler);\n this.commands.removeDefaultHandler(\"exec\", this.$onMultiSelectExec);\n this.renderer.updateCursor();\n this.renderer.updateBackMarkers();\n this._emit(\"changeSelection\");\n };\n this.$onMultiSelectExec = function (e) {\n var command = e.command;\n var editor = e.editor;\n if (!editor.multiSelect)\n return;\n if (!command.multiSelectAction) {\n var result = command.exec(editor, e.args || {});\n editor.multiSelect.addRange(editor.multiSelect.toOrientedRange());\n editor.multiSelect.mergeOverlappingRanges();\n }\n else if (command.multiSelectAction == \"forEach\") {\n result = editor.forEachSelection(command, e.args);\n }\n else if (command.multiSelectAction == \"forEachLine\") {\n result = editor.forEachSelection(command, e.args, true);\n }\n else if (command.multiSelectAction == \"single\") {\n editor.exitMultiSelectMode();\n result = command.exec(editor, e.args || {});\n }\n else {\n result = command.multiSelectAction(editor, e.args || {});\n }\n return result;\n };\n this.forEachSelection = function (cmd, args, options) {\n if (this.inVirtualSelectionMode)\n return;\n var keepOrder = options && options.keepOrder;\n var $byLines = options == true || options && options.$byLines;\n var session = this.session;\n var selection = this.selection;\n var rangeList = selection.rangeList;\n var ranges = (keepOrder ? selection : rangeList).ranges;\n var result;\n if (!ranges.length)\n return cmd.exec ? cmd.exec(this, args || {}) : cmd(this, args || {});\n var reg = selection._eventRegistry;\n selection._eventRegistry = {};\n var tmpSel = new Selection(session);\n this.inVirtualSelectionMode = true;\n for (var i = ranges.length; i--;) {\n if ($byLines) {\n while (i > 0 && ranges[i].start.row == ranges[i - 1].end.row)\n i--;\n }\n tmpSel.fromOrientedRange(ranges[i]);\n tmpSel.index = i;\n this.selection = session.selection = tmpSel;\n var cmdResult = cmd.exec ? cmd.exec(this, args || {}) : cmd(this, args || {});\n if (!result && cmdResult !== undefined)\n result = cmdResult;\n tmpSel.toOrientedRange(ranges[i]);\n }\n tmpSel.detach();\n this.selection = session.selection = selection;\n this.inVirtualSelectionMode = false;\n selection._eventRegistry = reg;\n selection.mergeOverlappingRanges();\n if (selection.ranges[0])\n selection.fromOrientedRange(selection.ranges[0]);\n var anim = this.renderer.$scrollAnimation;\n this.onCursorChange();\n this.onSelectionChange();\n if (anim && anim.from == anim.to)\n this.renderer.animateScrolling(anim.from);\n return result;\n };\n this.exitMultiSelectMode = function () {\n if (!this.inMultiSelectMode || this.inVirtualSelectionMode)\n return;\n this.multiSelect.toSingleRange();\n };\n this.getSelectedText = function () {\n var text = \"\";\n if (this.inMultiSelectMode && !this.inVirtualSelectionMode) {\n var ranges = this.multiSelect.rangeList.ranges;\n var buf = [];\n for (var i = 0; i < ranges.length; i++) {\n buf.push(this.session.getTextRange(ranges[i]));\n }\n var nl = this.session.getDocument().getNewLineCharacter();\n text = buf.join(nl);\n if (text.length == (buf.length - 1) * nl.length)\n text = \"\";\n }\n else if (!this.selection.isEmpty()) {\n text = this.session.getTextRange(this.getSelectionRange());\n }\n return text;\n };\n this.$checkMultiselectChange = function (e, anchor) {\n if (this.inMultiSelectMode && !this.inVirtualSelectionMode) {\n var range = this.multiSelect.ranges[0];\n if (this.multiSelect.isEmpty() && anchor == this.multiSelect.anchor)\n return;\n var pos = anchor == this.multiSelect.anchor\n ? range.cursor == range.start ? range.end : range.start\n : range.cursor;\n if (pos.row != anchor.row\n || this.session.$clipPositionToDocument(pos.row, pos.column).column != anchor.column)\n this.multiSelect.toSingleRange(this.multiSelect.toOrientedRange());\n else\n this.multiSelect.mergeOverlappingRanges();\n }\n };\n this.findAll = function (needle, options, additive) {\n options = options || {};\n options.needle = needle || options.needle;\n if (options.needle == undefined) {\n var range = this.selection.isEmpty()\n ? this.selection.getWordRange()\n : this.selection.getRange();\n options.needle = this.session.getTextRange(range);\n }\n this.$search.set(options);\n var ranges = this.$search.findAll(this.session);\n if (!ranges.length)\n return 0;\n var selection = this.multiSelect;\n if (!additive)\n selection.toSingleRange(ranges[0]);\n for (var i = ranges.length; i--;)\n selection.addRange(ranges[i], true);\n if (range && selection.rangeList.rangeAtPoint(range.start))\n selection.addRange(range, true);\n return ranges.length;\n };\n this.selectMoreLines = function (dir, skip) {\n var range = this.selection.toOrientedRange();\n var isBackwards = range.cursor == range.end;\n var screenLead = this.session.documentToScreenPosition(range.cursor);\n if (this.selection.$desiredColumn)\n screenLead.column = this.selection.$desiredColumn;\n var lead = this.session.screenToDocumentPosition(screenLead.row + dir, screenLead.column);\n if (!range.isEmpty()) {\n var screenAnchor = this.session.documentToScreenPosition(isBackwards ? range.end : range.start);\n var anchor = this.session.screenToDocumentPosition(screenAnchor.row + dir, screenAnchor.column);\n }\n else {\n var anchor = lead;\n }\n if (isBackwards) {\n var newRange = Range.fromPoints(lead, anchor);\n newRange.cursor = newRange.start;\n }\n else {\n var newRange = Range.fromPoints(anchor, lead);\n newRange.cursor = newRange.end;\n }\n newRange.desiredColumn = screenLead.column;\n if (!this.selection.inMultiSelectMode) {\n this.selection.addRange(range);\n }\n else {\n if (skip)\n var toRemove = range.cursor;\n }\n this.selection.addRange(newRange);\n if (toRemove)\n this.selection.substractPoint(toRemove);\n };\n this.transposeSelections = function (dir) {\n var session = this.session;\n var sel = session.multiSelect;\n var all = sel.ranges;\n for (var i = all.length; i--;) {\n var range = all[i];\n if (range.isEmpty()) {\n var tmp = session.getWordRange(range.start.row, range.start.column);\n range.start.row = tmp.start.row;\n range.start.column = tmp.start.column;\n range.end.row = tmp.end.row;\n range.end.column = tmp.end.column;\n }\n }\n sel.mergeOverlappingRanges();\n var words = [];\n for (var i = all.length; i--;) {\n var range = all[i];\n words.unshift(session.getTextRange(range));\n }\n if (dir < 0)\n words.unshift(words.pop());\n else\n words.push(words.shift());\n for (var i = all.length; i--;) {\n var range = all[i];\n var tmp = range.clone();\n session.replace(range, words[i]);\n range.start.row = tmp.start.row;\n range.start.column = tmp.start.column;\n }\n sel.fromOrientedRange(sel.ranges[0]);\n };\n this.selectMore = function (dir, skip, stopAtFirst) {\n var session = this.session;\n var sel = session.multiSelect;\n var range = sel.toOrientedRange();\n if (range.isEmpty()) {\n range = session.getWordRange(range.start.row, range.start.column);\n range.cursor = dir == -1 ? range.start : range.end;\n this.multiSelect.addRange(range);\n if (stopAtFirst)\n return;\n }\n var needle = session.getTextRange(range);\n var newRange = find(session, needle, dir);\n if (newRange) {\n newRange.cursor = dir == -1 ? newRange.start : newRange.end;\n this.session.unfold(newRange);\n this.multiSelect.addRange(newRange);\n this.renderer.scrollCursorIntoView(null, 0.5);\n }\n if (skip)\n this.multiSelect.substractPoint(range.cursor);\n };\n this.alignCursors = function () {\n var session = this.session;\n var sel = session.multiSelect;\n var ranges = sel.ranges;\n var row = -1;\n var sameRowRanges = ranges.filter(function (r) {\n if (r.cursor.row == row)\n return true;\n row = r.cursor.row;\n });\n if (!ranges.length || sameRowRanges.length == ranges.length - 1) {\n var range = this.selection.getRange();\n var fr = range.start.row, lr = range.end.row;\n var guessRange = fr == lr;\n if (guessRange) {\n var max = this.session.getLength();\n var line;\n do {\n line = this.session.getLine(lr);\n } while (/[=:]/.test(line) && ++lr < max);\n do {\n line = this.session.getLine(fr);\n } while (/[=:]/.test(line) && --fr > 0);\n if (fr < 0)\n fr = 0;\n if (lr >= max)\n lr = max - 1;\n }\n var lines = this.session.removeFullLines(fr, lr);\n lines = this.$reAlignText(lines, guessRange);\n this.session.insert({ row: fr, column: 0 }, lines.join(\"\\n\") + \"\\n\");\n if (!guessRange) {\n range.start.column = 0;\n range.end.column = lines[lines.length - 1].length;\n }\n this.selection.setRange(range);\n }\n else {\n sameRowRanges.forEach(function (r) {\n sel.substractPoint(r.cursor);\n });\n var maxCol = 0;\n var minSpace = Infinity;\n var spaceOffsets = ranges.map(function (r) {\n var p = r.cursor;\n var line = session.getLine(p.row);\n var spaceOffset = line.substr(p.column).search(/\\S/g);\n if (spaceOffset == -1)\n spaceOffset = 0;\n if (p.column > maxCol)\n maxCol = p.column;\n if (spaceOffset < minSpace)\n minSpace = spaceOffset;\n return spaceOffset;\n });\n ranges.forEach(function (r, i) {\n var p = r.cursor;\n var l = maxCol - p.column;\n var d = spaceOffsets[i] - minSpace;\n if (l > d)\n session.insert(p, lang.stringRepeat(\" \", l - d));\n else\n session.remove(new Range(p.row, p.column, p.row, p.column - l + d));\n r.start.column = r.end.column = maxCol;\n r.start.row = r.end.row = p.row;\n r.cursor = r.end;\n });\n sel.fromOrientedRange(ranges[0]);\n this.renderer.updateCursor();\n this.renderer.updateBackMarkers();\n }\n };\n this.$reAlignText = function (lines, forceLeft) {\n var isLeftAligned = true, isRightAligned = true;\n var startW, textW, endW;\n return lines.map(function (line) {\n var m = line.match(/(\\s*)(.*?)(\\s*)([=:].*)/);\n if (!m)\n return [line];\n if (startW == null) {\n startW = m[1].length;\n textW = m[2].length;\n endW = m[3].length;\n return m;\n }\n if (startW + textW + endW != m[1].length + m[2].length + m[3].length)\n isRightAligned = false;\n if (startW != m[1].length)\n isLeftAligned = false;\n if (startW > m[1].length)\n startW = m[1].length;\n if (textW < m[2].length)\n textW = m[2].length;\n if (endW > m[3].length)\n endW = m[3].length;\n return m;\n }).map(forceLeft ? alignLeft :\n isLeftAligned ? isRightAligned ? alignRight : alignLeft : unAlign);\n function spaces(n) {\n return lang.stringRepeat(\" \", n);\n }\n function alignLeft(m) {\n return !m[2] ? m[0] : spaces(startW) + m[2]\n + spaces(textW - m[2].length + endW)\n + m[4].replace(/^([=:])\\s+/, \"$1 \");\n }\n function alignRight(m) {\n return !m[2] ? m[0] : spaces(startW + textW - m[2].length) + m[2]\n + spaces(endW)\n + m[4].replace(/^([=:])\\s+/, \"$1 \");\n }\n function unAlign(m) {\n return !m[2] ? m[0] : spaces(startW) + m[2]\n + spaces(endW)\n + m[4].replace(/^([=:])\\s+/, \"$1 \");\n }\n };\n}).call(Editor.prototype);\nfunction isSamePoint(p1, p2) {\n return p1.row == p2.row && p1.column == p2.column;\n}\nexports.onSessionChange = function (e) {\n var session = e.session;\n if (session && !session.multiSelect) {\n session.$selectionMarkers = [];\n session.selection.$initRangeList();\n session.multiSelect = session.selection;\n }\n this.multiSelect = session && session.multiSelect;\n var oldSession = e.oldSession;\n if (oldSession) {\n oldSession.multiSelect.off(\"addRange\", this.$onAddRange);\n oldSession.multiSelect.off(\"removeRange\", this.$onRemoveRange);\n oldSession.multiSelect.off(\"multiSelect\", this.$onMultiSelect);\n oldSession.multiSelect.off(\"singleSelect\", this.$onSingleSelect);\n oldSession.multiSelect.lead.off(\"change\", this.$checkMultiselectChange);\n oldSession.multiSelect.anchor.off(\"change\", this.$checkMultiselectChange);\n }\n if (session) {\n session.multiSelect.on(\"addRange\", this.$onAddRange);\n session.multiSelect.on(\"removeRange\", this.$onRemoveRange);\n session.multiSelect.on(\"multiSelect\", this.$onMultiSelect);\n session.multiSelect.on(\"singleSelect\", this.$onSingleSelect);\n session.multiSelect.lead.on(\"change\", this.$checkMultiselectChange);\n session.multiSelect.anchor.on(\"change\", this.$checkMultiselectChange);\n }\n if (session && this.inMultiSelectMode != session.selection.inMultiSelectMode) {\n if (session.selection.inMultiSelectMode)\n this.$onMultiSelect();\n else\n this.$onSingleSelect();\n }\n};\nfunction MultiSelect(editor) {\n if (editor.$multiselectOnSessionChange)\n return;\n editor.$onAddRange = editor.$onAddRange.bind(editor);\n editor.$onRemoveRange = editor.$onRemoveRange.bind(editor);\n editor.$onMultiSelect = editor.$onMultiSelect.bind(editor);\n editor.$onSingleSelect = editor.$onSingleSelect.bind(editor);\n editor.$multiselectOnSessionChange = exports.onSessionChange.bind(editor);\n editor.$checkMultiselectChange = editor.$checkMultiselectChange.bind(editor);\n editor.$multiselectOnSessionChange(editor);\n editor.on(\"changeSession\", editor.$multiselectOnSessionChange);\n editor.on(\"mousedown\", onMouseDown);\n editor.commands.addCommands(commands.defaultCommands);\n addAltCursorListeners(editor);\n}\nfunction addAltCursorListeners(editor) {\n if (!editor.textInput)\n return;\n var el = editor.textInput.getElement();\n var altCursor = false;\n event.addListener(el, \"keydown\", function (e) {\n var altDown = e.keyCode == 18 && !(e.ctrlKey || e.shiftKey || e.metaKey);\n if (editor.$blockSelectEnabled && altDown) {\n if (!altCursor) {\n editor.renderer.setMouseCursor(\"crosshair\");\n altCursor = true;\n }\n }\n else if (altCursor) {\n reset();\n }\n }, editor);\n event.addListener(el, \"keyup\", reset, editor);\n event.addListener(el, \"blur\", reset, editor);\n function reset(e) {\n if (altCursor) {\n editor.renderer.setMouseCursor(\"\");\n altCursor = false;\n }\n }\n}\nexports.MultiSelect = MultiSelect;\nrequire(\"./config\").defineOptions(Editor.prototype, \"editor\", {\n enableMultiselect: {\n set: function (val) {\n MultiSelect(this);\n if (val) {\n this.on(\"mousedown\", onMouseDown);\n }\n else {\n this.off(\"mousedown\", onMouseDown);\n }\n },\n value: true\n },\n enableBlockSelect: {\n set: function (val) {\n this.$blockSelectEnabled = val;\n },\n value: true\n }\n});\n\n});\n\nace.define(\"ace/mode/folding/fold_mode\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar Range = require(\"../../range\").Range;\nvar FoldMode = exports.FoldMode = function () { };\n(function () {\n this.foldingStartMarker = null;\n this.foldingStopMarker = null;\n this.getFoldWidget = function (session, foldStyle, row) {\n var line = session.getLine(row);\n if (this.foldingStartMarker.test(line))\n return \"start\";\n if (foldStyle == \"markbeginend\"\n && this.foldingStopMarker\n && this.foldingStopMarker.test(line))\n return \"end\";\n return \"\";\n };\n this.getFoldWidgetRange = function (session, foldStyle, row) {\n return null;\n };\n this.indentationBlock = function (session, row, column) {\n var re = /\\S/;\n var line = session.getLine(row);\n var startLevel = line.search(re);\n if (startLevel == -1)\n return;\n var startColumn = column || line.length;\n var maxRow = session.getLength();\n var startRow = row;\n var endRow = row;\n while (++row < maxRow) {\n var level = session.getLine(row).search(re);\n if (level == -1)\n continue;\n if (level <= startLevel) {\n var token = session.getTokenAt(row, 0);\n if (!token || token.type !== \"string\")\n break;\n }\n endRow = row;\n }\n if (endRow > startRow) {\n var endColumn = session.getLine(endRow).length;\n return new Range(startRow, startColumn, endRow, endColumn);\n }\n };\n this.openingBracketBlock = function (session, bracket, row, column, typeRe) {\n var start = { row: row, column: column + 1 };\n var end = session.$findClosingBracket(bracket, start, typeRe);\n if (!end)\n return;\n var fw = session.foldWidgets[end.row];\n if (fw == null)\n fw = session.getFoldWidget(end.row);\n if (fw == \"start\" && end.row > start.row) {\n end.row--;\n end.column = session.getLine(end.row).length;\n }\n return Range.fromPoints(start, end);\n };\n this.closingBracketBlock = function (session, bracket, row, column, typeRe) {\n var end = { row: row, column: column };\n var start = session.$findOpeningBracket(bracket, end);\n if (!start)\n return;\n start.column++;\n end.column--;\n return Range.fromPoints(start, end);\n };\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/ext/error_marker\",[\"require\",\"exports\",\"module\",\"ace/line_widgets\",\"ace/lib/dom\",\"ace/range\",\"ace/config\"], function(require, exports, module){\"use strict\";\nvar LineWidgets = require(\"../line_widgets\").LineWidgets;\nvar dom = require(\"../lib/dom\");\nvar Range = require(\"../range\").Range;\nvar nls = require(\"../config\").nls;\nfunction binarySearch(array, needle, comparator) {\n var first = 0;\n var last = array.length - 1;\n while (first <= last) {\n var mid = (first + last) >> 1;\n var c = comparator(needle, array[mid]);\n if (c > 0)\n first = mid + 1;\n else if (c < 0)\n last = mid - 1;\n else\n return mid;\n }\n return -(first + 1);\n}\nfunction findAnnotations(session, row, dir) {\n var annotations = session.getAnnotations().sort(Range.comparePoints);\n if (!annotations.length)\n return;\n var i = binarySearch(annotations, { row: row, column: -1 }, Range.comparePoints);\n if (i < 0)\n i = -i - 1;\n if (i >= annotations.length)\n i = dir > 0 ? 0 : annotations.length - 1;\n else if (i === 0 && dir < 0)\n i = annotations.length - 1;\n var annotation = annotations[i];\n if (!annotation || !dir)\n return;\n if (annotation.row === row) {\n do {\n annotation = annotations[i += dir];\n } while (annotation && annotation.row === row);\n if (!annotation)\n return annotations.slice();\n }\n var matched = [];\n row = annotation.row;\n do {\n matched[dir < 0 ? \"unshift\" : \"push\"](annotation);\n annotation = annotations[i += dir];\n } while (annotation && annotation.row == row);\n return matched.length && matched;\n}\nexports.showErrorMarker = function (editor, dir) {\n var session = editor.session;\n if (!session.widgetManager) {\n session.widgetManager = new LineWidgets(session);\n session.widgetManager.attach(editor);\n }\n var pos = editor.getCursorPosition();\n var row = pos.row;\n var oldWidget = session.widgetManager.getWidgetsAtRow(row).filter(function (w) {\n return w.type == \"errorMarker\";\n })[0];\n if (oldWidget) {\n oldWidget.destroy();\n }\n else {\n row -= dir;\n }\n var annotations = findAnnotations(session, row, dir);\n var gutterAnno;\n if (annotations) {\n var annotation = annotations[0];\n pos.column = (annotation.pos && typeof annotation.column != \"number\"\n ? annotation.pos.sc\n : annotation.column) || 0;\n pos.row = annotation.row;\n gutterAnno = editor.renderer.$gutterLayer.$annotations[pos.row];\n }\n else if (oldWidget) {\n return;\n }\n else {\n gutterAnno = {\n text: [nls(\"Looks good!\")],\n className: \"ace_ok\"\n };\n }\n editor.session.unfold(pos.row);\n editor.selection.moveToPosition(pos);\n var w = {\n row: pos.row,\n fixedWidth: true,\n coverGutter: true,\n el: dom.createElement(\"div\"),\n type: \"errorMarker\"\n };\n var el = w.el.appendChild(dom.createElement(\"div\"));\n var arrow = w.el.appendChild(dom.createElement(\"div\"));\n arrow.className = \"error_widget_arrow \" + gutterAnno.className;\n var left = editor.renderer.$cursorLayer\n .getPixelPosition(pos).left;\n arrow.style.left = left + editor.renderer.gutterWidth - 5 + \"px\";\n w.el.className = \"error_widget_wrapper\";\n el.className = \"error_widget \" + gutterAnno.className;\n el.innerHTML = gutterAnno.text.join(\"
    \");\n el.appendChild(dom.createElement(\"div\"));\n var kb = function (_, hashId, keyString) {\n if (hashId === 0 && (keyString === \"esc\" || keyString === \"return\")) {\n w.destroy();\n return { command: \"null\" };\n }\n };\n w.destroy = function () {\n if (editor.$mouseHandler.isMousePressed)\n return;\n editor.keyBinding.removeKeyboardHandler(kb);\n session.widgetManager.removeLineWidget(w);\n editor.off(\"changeSelection\", w.destroy);\n editor.off(\"changeSession\", w.destroy);\n editor.off(\"mouseup\", w.destroy);\n editor.off(\"change\", w.destroy);\n };\n editor.keyBinding.addKeyboardHandler(kb);\n editor.on(\"changeSelection\", w.destroy);\n editor.on(\"changeSession\", w.destroy);\n editor.on(\"mouseup\", w.destroy);\n editor.on(\"change\", w.destroy);\n editor.session.widgetManager.addLineWidget(w);\n w.el.onmousedown = editor.focus.bind(editor);\n editor.renderer.scrollCursorIntoView(null, 0.5, { bottom: w.el.offsetHeight });\n};\ndom.importCssString(\"\\n .error_widget_wrapper {\\n background: inherit;\\n color: inherit;\\n border:none\\n }\\n .error_widget {\\n border-top: solid 2px;\\n border-bottom: solid 2px;\\n margin: 5px 0;\\n padding: 10px 40px;\\n white-space: pre-wrap;\\n }\\n .error_widget.ace_error, .error_widget_arrow.ace_error{\\n border-color: #ff5a5a\\n }\\n .error_widget.ace_warning, .error_widget_arrow.ace_warning{\\n border-color: #F1D817\\n }\\n .error_widget.ace_info, .error_widget_arrow.ace_info{\\n border-color: #5a5a5a\\n }\\n .error_widget.ace_ok, .error_widget_arrow.ace_ok{\\n border-color: #5aaa5a\\n }\\n .error_widget_arrow {\\n position: absolute;\\n border: solid 5px;\\n border-top-color: transparent!important;\\n border-right-color: transparent!important;\\n border-left-color: transparent!important;\\n top: -5px;\\n }\\n\", \"error_marker.css\", false);\n\n});\n\nace.define(\"ace/ace\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\",\"ace/range\",\"ace/editor\",\"ace/edit_session\",\"ace/undomanager\",\"ace/virtual_renderer\",\"ace/worker/worker_client\",\"ace/keyboard/hash_handler\",\"ace/placeholder\",\"ace/multi_select\",\"ace/mode/folding/fold_mode\",\"ace/theme/textmate\",\"ace/ext/error_marker\",\"ace/config\",\"ace/loader_build\"], function(require, exports, module){/**\n * The main class required to set up an Ace instance in the browser.\n *\n * @class Ace\n **/\n\"use strict\";\nrequire(\"./loader_build\")(exports)\nvar dom = require(\"./lib/dom\");\nvar Range = require(\"./range\").Range;\nvar Editor = require(\"./editor\").Editor;\nvar EditSession = require(\"./edit_session\").EditSession;\nvar UndoManager = require(\"./undomanager\").UndoManager;\nvar Renderer = require(\"./virtual_renderer\").VirtualRenderer;\nrequire(\"./worker/worker_client\");\nrequire(\"./keyboard/hash_handler\");\nrequire(\"./placeholder\");\nrequire(\"./multi_select\");\nrequire(\"./mode/folding/fold_mode\");\nrequire(\"./theme/textmate\");\nrequire(\"./ext/error_marker\");\nexports.config = require(\"./config\");\nexports.edit = function (el, options) {\n if (typeof el == \"string\") {\n var _id = el;\n el = document.getElementById(_id);\n if (!el)\n throw new Error(\"ace.edit can't find div #\" + _id);\n }\n if (el && el.env && el.env.editor instanceof Editor)\n return el.env.editor;\n var value = \"\";\n if (el && /input|textarea/i.test(el.tagName)) {\n var oldNode = el;\n value = oldNode.value;\n el = dom.createElement(\"pre\");\n oldNode.parentNode.replaceChild(el, oldNode);\n }\n else if (el) {\n value = el.textContent;\n el.innerHTML = \"\";\n }\n var doc = exports.createEditSession(value);\n var editor = new Editor(new Renderer(el), doc, options);\n var env = {\n document: doc,\n editor: editor,\n onResize: editor.resize.bind(editor, null)\n };\n if (oldNode)\n env.textarea = oldNode;\n editor.on(\"destroy\", function () {\n env.editor.container.env = null; // prevent memory leak on old ie\n });\n editor.container.env = editor.env = env;\n return editor;\n};\nexports.createEditSession = function (text, mode) {\n var doc = new EditSession(text, mode);\n doc.setUndoManager(new UndoManager());\n return doc;\n};\nexports.Range = Range;\nexports.Editor = Editor;\nexports.EditSession = EditSession;\nexports.UndoManager = UndoManager;\nexports.VirtualRenderer = Renderer;\nexports.version = exports.config.version;\n\n}); (function() {\n ace.require([\"ace/ace\"], function(a) {\n if (a) {\n a.config.init(true);\n a.define = ace.define;\n }\n var global = (function () {\n return this;\n })();\n if (!global && typeof window != \"undefined\") global = window; // can happen in strict mode\n if (!global && typeof self != \"undefined\") global = self; // can happen in webworker\n \n if (!global.ace)\n global.ace = a;\n for (var key in a) if (a.hasOwnProperty(key))\n global.ace[key] = a[key];\n global.ace[\"default\"] = global.ace;\n if (typeof module == \"object\" && typeof exports == \"object\" && module) {\n module.exports = global.ace;\n }\n });\n })();\n ","ace.define(\"ace/ext/beautify\",[\"require\",\"exports\",\"module\",\"ace/token_iterator\"], function(require, exports, module){// [WIP]\n\"use strict\";\nvar TokenIterator = require(\"../token_iterator\").TokenIterator;\nfunction is(token, type) {\n return token.type.lastIndexOf(type + \".xml\") > -1;\n}\nexports.singletonTags = [\"area\", \"base\", \"br\", \"col\", \"command\", \"embed\", \"hr\", \"html\", \"img\", \"input\", \"keygen\", \"link\", \"meta\", \"param\", \"source\", \"track\", \"wbr\"];\nexports.blockTags = [\"article\", \"aside\", \"blockquote\", \"body\", \"div\", \"dl\", \"fieldset\", \"footer\", \"form\", \"head\", \"header\", \"html\", \"nav\", \"ol\", \"p\", \"script\", \"section\", \"style\", \"table\", \"tbody\", \"tfoot\", \"thead\", \"ul\"];\nexports.formatOptions = {\n lineBreaksAfterCommasInCurlyBlock: true\n};\nexports.beautify = function (session) {\n var iterator = new TokenIterator(session, 0, 0);\n var token = iterator.getCurrentToken();\n var tabString = session.getTabString();\n var singletonTags = exports.singletonTags;\n var blockTags = exports.blockTags;\n var formatOptions = exports.formatOptions || {};\n var nextToken;\n var breakBefore = false;\n var spaceBefore = false;\n var spaceAfter = false;\n var code = \"\";\n var value = \"\";\n var tagName = \"\";\n var depth = 0;\n var lastDepth = 0;\n var lastIndent = 0;\n var indent = 0;\n var unindent = 0;\n var roundDepth = 0;\n var curlyDepth = 0;\n var row;\n var curRow = 0;\n var rowsToAdd = 0;\n var rowTokens = [];\n var abort = false;\n var i;\n var indentNextLine = false;\n var inTag = false;\n var inCSS = false;\n var inBlock = false;\n var levels = { 0: 0 };\n var parents = [];\n var caseBody = false;\n var trimNext = function () {\n if (nextToken && nextToken.value && nextToken.type !== 'string.regexp')\n nextToken.value = nextToken.value.replace(/^\\s*/, \"\");\n };\n var trimLine = function () {\n var end = code.length - 1;\n while (true) {\n if (end == 0)\n break;\n if (code[end] !== \" \")\n break;\n end = end - 1;\n }\n code = code.slice(0, end + 1);\n };\n var trimCode = function () {\n code = code.trimRight();\n breakBefore = false;\n };\n while (token !== null) {\n curRow = iterator.getCurrentTokenRow();\n rowTokens = iterator.$rowTokens;\n nextToken = iterator.stepForward();\n if (typeof token !== \"undefined\") {\n value = token.value;\n unindent = 0;\n inCSS = (tagName === \"style\" || session.$modeId === \"ace/mode/css\");\n if (is(token, \"tag-open\")) {\n inTag = true;\n if (nextToken)\n inBlock = (blockTags.indexOf(nextToken.value) !== -1);\n if (value === \" 0; rowsToAdd--)\n code += \"\\n\";\n breakBefore = true;\n if (!is(token, \"comment\") && !token.type.match(/^(comment|string)$/))\n value = value.trimLeft();\n }\n if (value) {\n if (token.type === \"keyword\" && value.match(/^(if|else|elseif|for|foreach|while|switch)$/)) {\n parents[depth] = value;\n trimNext();\n spaceAfter = true;\n if (value.match(/^(else|elseif)$/)) {\n if (code.match(/\\}[\\s]*$/)) {\n trimCode();\n spaceBefore = true;\n }\n }\n }\n else if (token.type === \"paren.lparen\") {\n trimNext();\n if (value.substr(-1) === \"{\") {\n spaceAfter = true;\n indentNextLine = false;\n if (!inTag)\n rowsToAdd = 1;\n }\n if (value.substr(0, 1) === \"{\") {\n spaceBefore = true;\n if (code.substr(-1) !== '[' && code.trimRight().substr(-1) === '[') {\n trimCode();\n spaceBefore = false;\n }\n else if (code.trimRight().substr(-1) === ')') {\n trimCode();\n }\n else {\n trimLine();\n }\n }\n }\n else if (token.type === \"paren.rparen\") {\n unindent = 1;\n if (value.substr(0, 1) === \"}\") {\n if (parents[depth - 1] === 'case')\n unindent++;\n if (code.trimRight().substr(-1) === '{') {\n trimCode();\n }\n else {\n spaceBefore = true;\n if (inCSS)\n rowsToAdd += 2;\n }\n }\n if (value.substr(0, 1) === \"]\") {\n if (code.substr(-1) !== '}' && code.trimRight().substr(-1) === '}') {\n spaceBefore = false;\n indent++;\n trimCode();\n }\n }\n if (value.substr(0, 1) === \")\") {\n if (code.substr(-1) !== '(' && code.trimRight().substr(-1) === '(') {\n spaceBefore = false;\n indent++;\n trimCode();\n }\n }\n trimLine();\n }\n else if ((token.type === \"keyword.operator\" || token.type === \"keyword\") && value.match(/^(=|==|===|!=|!==|&&|\\|\\||and|or|xor|\\+=|.=|>|>=|<|<=|=>)$/)) {\n trimCode();\n trimNext();\n spaceBefore = true;\n spaceAfter = true;\n }\n else if (token.type === \"punctuation.operator\" && value === ';') {\n trimCode();\n trimNext();\n spaceAfter = true;\n if (inCSS)\n rowsToAdd++;\n }\n else if (token.type === \"punctuation.operator\" && value.match(/^(:|,)$/)) {\n trimCode();\n trimNext();\n if (value.match(/^(,)$/) && curlyDepth > 0 && roundDepth === 0 && formatOptions.lineBreaksAfterCommasInCurlyBlock) {\n rowsToAdd++;\n }\n else {\n spaceAfter = true;\n breakBefore = false;\n }\n }\n else if (token.type === \"support.php_tag\" && value === \"?>\" && !breakBefore) {\n trimCode();\n spaceBefore = true;\n }\n else if (is(token, \"attribute-name\") && code.substr(-1).match(/^\\s$/)) {\n spaceBefore = true;\n }\n else if (is(token, \"attribute-equals\")) {\n trimLine();\n trimNext();\n }\n else if (is(token, \"tag-close\")) {\n trimLine();\n if (value === \"/>\")\n spaceBefore = true;\n }\n else if (token.type === \"keyword\" && value.match(/^(case|default)$/)) {\n if (caseBody)\n unindent = 1;\n }\n if (breakBefore && !(token.type.match(/^(comment)$/) && !value.substr(0, 1).match(/^[/#]$/)) && !(token.type.match(/^(string)$/) && !value.substr(0, 1).match(/^['\"@]$/))) {\n indent = lastIndent;\n if (depth > lastDepth) {\n indent++;\n for (i = depth; i > lastDepth; i--)\n levels[i] = indent;\n }\n else if (depth < lastDepth)\n indent = levels[depth];\n lastDepth = depth;\n lastIndent = indent;\n if (unindent)\n indent -= unindent;\n if (indentNextLine && !roundDepth) {\n indent++;\n indentNextLine = false;\n }\n for (i = 0; i < indent; i++)\n code += tabString;\n }\n if (token.type === \"keyword\" && value.match(/^(case|default)$/)) {\n if (caseBody === false) {\n parents[depth] = value;\n depth++;\n caseBody = true;\n }\n }\n else if (token.type === \"keyword\" && value.match(/^(break)$/)) {\n if (parents[depth - 1] && parents[depth - 1].match(/^(case|default)$/)) {\n depth--;\n caseBody = false;\n }\n }\n if (token.type === \"paren.lparen\") {\n roundDepth += (value.match(/\\(/g) || []).length;\n curlyDepth += (value.match(/\\{/g) || []).length;\n depth += value.length;\n }\n if (token.type === \"keyword\" && value.match(/^(if|else|elseif|for|while)$/)) {\n indentNextLine = true;\n roundDepth = 0;\n }\n else if (!roundDepth && value.trim() && token.type !== \"comment\")\n indentNextLine = false;\n if (token.type === \"paren.rparen\") {\n roundDepth -= (value.match(/\\)/g) || []).length;\n curlyDepth -= (value.match(/\\}/g) || []).length;\n for (i = 0; i < value.length; i++) {\n depth--;\n if (value.substr(i, 1) === '}' && parents[depth] === 'case') {\n depth--;\n }\n }\n }\n if (token.type == \"text\")\n value = value.replace(/\\s+$/, \" \");\n if (spaceBefore && !breakBefore) {\n trimLine();\n if (code.substr(-1) !== \"\\n\")\n code += \" \";\n }\n code += value;\n if (spaceAfter)\n code += \" \";\n breakBefore = false;\n spaceBefore = false;\n spaceAfter = false;\n if ((is(token, \"tag-close\") && (inBlock || blockTags.indexOf(tagName) !== -1)) || (is(token, \"doctype\") && value === \">\")) {\n if (inBlock && nextToken && nextToken.value === \"\") {\n depth--;\n }\n }\n if (is(token, \"tag-name\")) {\n tagName = value;\n }\n row = curRow;\n }\n }\n token = nextToken;\n }\n code = code.trim();\n session.doc.setValue(code);\n};\nexports.commands = [{\n name: \"beautify\",\n description: \"Format selection (Beautify)\",\n exec: function (editor) {\n exports.beautify(editor.session);\n },\n bindKey: \"Ctrl-Shift-B\"\n }];\n\n}); (function() {\n ace.require([\"ace/ext/beautify\"], function(m) {\n if (typeof module == \"object\" && typeof exports == \"object\" && module) {\n module.exports = m;\n }\n });\n })();\n ","ace.define(\"ace/ext/searchbox-css\",[\"require\",\"exports\",\"module\"], function(require, exports, module){module.exports = \"\\n\\n/* ------------------------------------------------------------------------------------------\\n * Editor Search Form\\n * --------------------------------------------------------------------------------------- */\\n.ace_search {\\n background-color: #ddd;\\n color: #666;\\n border: 1px solid #cbcbcb;\\n border-top: 0 none;\\n overflow: hidden;\\n margin: 0;\\n padding: 4px 6px 0 4px;\\n position: absolute;\\n top: 0;\\n z-index: 99;\\n white-space: normal;\\n}\\n.ace_search.left {\\n border-left: 0 none;\\n border-radius: 0px 0px 5px 0px;\\n left: 0;\\n}\\n.ace_search.right {\\n border-radius: 0px 0px 0px 5px;\\n border-right: 0 none;\\n right: 0;\\n}\\n\\n.ace_search_form, .ace_replace_form {\\n margin: 0 20px 4px 0;\\n overflow: hidden;\\n line-height: 1.9;\\n}\\n.ace_replace_form {\\n margin-right: 0;\\n}\\n.ace_search_form.ace_nomatch {\\n outline: 1px solid red;\\n}\\n\\n.ace_search_field {\\n border-radius: 3px 0 0 3px;\\n background-color: white;\\n color: black;\\n border: 1px solid #cbcbcb;\\n border-right: 0 none;\\n outline: 0;\\n padding: 0;\\n font-size: inherit;\\n margin: 0;\\n line-height: inherit;\\n padding: 0 6px;\\n min-width: 17em;\\n vertical-align: top;\\n min-height: 1.8em;\\n box-sizing: content-box;\\n}\\n.ace_searchbtn {\\n border: 1px solid #cbcbcb;\\n line-height: inherit;\\n display: inline-block;\\n padding: 0 6px;\\n background: #fff;\\n border-right: 0 none;\\n border-left: 1px solid #dcdcdc;\\n cursor: pointer;\\n margin: 0;\\n position: relative;\\n color: #666;\\n}\\n.ace_searchbtn:last-child {\\n border-radius: 0 3px 3px 0;\\n border-right: 1px solid #cbcbcb;\\n}\\n.ace_searchbtn:disabled {\\n background: none;\\n cursor: default;\\n}\\n.ace_searchbtn:hover {\\n background-color: #eef1f6;\\n}\\n.ace_searchbtn.prev, .ace_searchbtn.next {\\n padding: 0px 0.7em\\n}\\n.ace_searchbtn.prev:after, .ace_searchbtn.next:after {\\n content: \\\"\\\";\\n border: solid 2px #888;\\n width: 0.5em;\\n height: 0.5em;\\n border-width: 2px 0 0 2px;\\n display:inline-block;\\n transform: rotate(-45deg);\\n}\\n.ace_searchbtn.next:after {\\n border-width: 0 2px 2px 0 ;\\n}\\n.ace_searchbtn_close {\\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAcCAYAAABRVo5BAAAAZ0lEQVR42u2SUQrAMAhDvazn8OjZBilCkYVVxiis8H4CT0VrAJb4WHT3C5xU2a2IQZXJjiQIRMdkEoJ5Q2yMqpfDIo+XY4k6h+YXOyKqTIj5REaxloNAd0xiKmAtsTHqW8sR2W5f7gCu5nWFUpVjZwAAAABJRU5ErkJggg==) no-repeat 50% 0;\\n border-radius: 50%;\\n border: 0 none;\\n color: #656565;\\n cursor: pointer;\\n font: 16px/16px Arial;\\n padding: 0;\\n height: 14px;\\n width: 14px;\\n top: 9px;\\n right: 7px;\\n position: absolute;\\n}\\n.ace_searchbtn_close:hover {\\n background-color: #656565;\\n background-position: 50% 100%;\\n color: white;\\n}\\n\\n.ace_button {\\n margin-left: 2px;\\n cursor: pointer;\\n -webkit-user-select: none;\\n -moz-user-select: none;\\n -o-user-select: none;\\n -ms-user-select: none;\\n user-select: none;\\n overflow: hidden;\\n opacity: 0.7;\\n border: 1px solid rgba(100,100,100,0.23);\\n padding: 1px;\\n box-sizing: border-box!important;\\n color: black;\\n}\\n\\n.ace_button:hover {\\n background-color: #eee;\\n opacity:1;\\n}\\n.ace_button:active {\\n background-color: #ddd;\\n}\\n\\n.ace_button.checked {\\n border-color: #3399ff;\\n opacity:1;\\n}\\n\\n.ace_search_options{\\n margin-bottom: 3px;\\n text-align: right;\\n -webkit-user-select: none;\\n -moz-user-select: none;\\n -o-user-select: none;\\n -ms-user-select: none;\\n user-select: none;\\n clear: both;\\n}\\n\\n.ace_search_counter {\\n float: left;\\n font-family: arial;\\n padding: 0 8px;\\n}\";\n\n});\n\nace.define(\"ace/ext/searchbox\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\",\"ace/lib/lang\",\"ace/lib/event\",\"ace/ext/searchbox-css\",\"ace/keyboard/hash_handler\",\"ace/lib/keys\",\"ace/config\"], function(require, exports, module){\"use strict\";\nvar dom = require(\"../lib/dom\");\nvar lang = require(\"../lib/lang\");\nvar event = require(\"../lib/event\");\nvar searchboxCss = require(\"./searchbox-css\");\nvar HashHandler = require(\"../keyboard/hash_handler\").HashHandler;\nvar keyUtil = require(\"../lib/keys\");\nvar nls = require(\"../config\").nls;\nvar MAX_COUNT = 999;\ndom.importCssString(searchboxCss, \"ace_searchbox\", false);\nvar SearchBox = /** @class */ (function () {\n function SearchBox(editor, range, showReplaceForm) {\n var div = dom.createElement(\"div\");\n dom.buildDom([\"div\", { class: \"ace_search right\" },\n [\"span\", { action: \"hide\", class: \"ace_searchbtn_close\" }],\n [\"div\", { class: \"ace_search_form\" },\n [\"input\", { class: \"ace_search_field\", placeholder: nls(\"Search for\"), spellcheck: \"false\" }],\n [\"span\", { action: \"findPrev\", class: \"ace_searchbtn prev\" }, \"\\u200b\"],\n [\"span\", { action: \"findNext\", class: \"ace_searchbtn next\" }, \"\\u200b\"],\n [\"span\", { action: \"findAll\", class: \"ace_searchbtn\", title: \"Alt-Enter\" }, nls(\"All\")]\n ],\n [\"div\", { class: \"ace_replace_form\" },\n [\"input\", { class: \"ace_search_field\", placeholder: nls(\"Replace with\"), spellcheck: \"false\" }],\n [\"span\", { action: \"replaceAndFindNext\", class: \"ace_searchbtn\" }, nls(\"Replace\")],\n [\"span\", { action: \"replaceAll\", class: \"ace_searchbtn\" }, nls(\"All\")]\n ],\n [\"div\", { class: \"ace_search_options\" },\n [\"span\", { action: \"toggleReplace\", class: \"ace_button\", title: nls(\"Toggle Replace mode\"),\n style: \"float:left;margin-top:-2px;padding:0 5px;\" }, \"+\"],\n [\"span\", { class: \"ace_search_counter\" }],\n [\"span\", { action: \"toggleRegexpMode\", class: \"ace_button\", title: nls(\"RegExp Search\") }, \".*\"],\n [\"span\", { action: \"toggleCaseSensitive\", class: \"ace_button\", title: nls(\"CaseSensitive Search\") }, \"Aa\"],\n [\"span\", { action: \"toggleWholeWords\", class: \"ace_button\", title: nls(\"Whole Word Search\") }, \"\\\\b\"],\n [\"span\", { action: \"searchInSelection\", class: \"ace_button\", title: nls(\"Search In Selection\") }, \"S\"]\n ]\n ], div);\n this.element = div.firstChild;\n this.setSession = this.setSession.bind(this);\n this.$init();\n this.setEditor(editor);\n dom.importCssString(searchboxCss, \"ace_searchbox\", editor.container);\n }\n SearchBox.prototype.setEditor = function (editor) {\n editor.searchBox = this;\n editor.renderer.scroller.appendChild(this.element);\n this.editor = editor;\n };\n SearchBox.prototype.setSession = function (e) {\n this.searchRange = null;\n this.$syncOptions(true);\n };\n SearchBox.prototype.$initElements = function (sb) {\n this.searchBox = sb.querySelector(\".ace_search_form\");\n this.replaceBox = sb.querySelector(\".ace_replace_form\");\n this.searchOption = sb.querySelector(\"[action=searchInSelection]\");\n this.replaceOption = sb.querySelector(\"[action=toggleReplace]\");\n this.regExpOption = sb.querySelector(\"[action=toggleRegexpMode]\");\n this.caseSensitiveOption = sb.querySelector(\"[action=toggleCaseSensitive]\");\n this.wholeWordOption = sb.querySelector(\"[action=toggleWholeWords]\");\n this.searchInput = this.searchBox.querySelector(\".ace_search_field\");\n this.replaceInput = this.replaceBox.querySelector(\".ace_search_field\");\n this.searchCounter = sb.querySelector(\".ace_search_counter\");\n };\n SearchBox.prototype.$init = function () {\n var sb = this.element;\n this.$initElements(sb);\n var _this = this;\n event.addListener(sb, \"mousedown\", function (e) {\n setTimeout(function () {\n _this.activeInput.focus();\n }, 0);\n event.stopPropagation(e);\n });\n event.addListener(sb, \"click\", function (e) {\n var t = e.target || e.srcElement;\n var action = t.getAttribute(\"action\");\n if (action && _this[action])\n _this[action]();\n else if (_this.$searchBarKb.commands[action])\n _this.$searchBarKb.commands[action].exec(_this);\n event.stopPropagation(e);\n });\n event.addCommandKeyListener(sb, function (e, hashId, keyCode) {\n var keyString = keyUtil.keyCodeToString(keyCode);\n var command = _this.$searchBarKb.findKeyCommand(hashId, keyString);\n if (command && command.exec) {\n command.exec(_this);\n event.stopEvent(e);\n }\n });\n this.$onChange = lang.delayedCall(function () {\n _this.find(false, false);\n });\n event.addListener(this.searchInput, \"input\", function () {\n _this.$onChange.schedule(20);\n });\n event.addListener(this.searchInput, \"focus\", function () {\n _this.activeInput = _this.searchInput;\n _this.searchInput.value && _this.highlight();\n });\n event.addListener(this.replaceInput, \"focus\", function () {\n _this.activeInput = _this.replaceInput;\n _this.searchInput.value && _this.highlight();\n });\n };\n SearchBox.prototype.setSearchRange = function (range) {\n this.searchRange = range;\n if (range) {\n this.searchRangeMarker = this.editor.session.addMarker(range, \"ace_active-line\");\n }\n else if (this.searchRangeMarker) {\n this.editor.session.removeMarker(this.searchRangeMarker);\n this.searchRangeMarker = null;\n }\n };\n SearchBox.prototype.$syncOptions = function (preventScroll) {\n dom.setCssClass(this.replaceOption, \"checked\", this.searchRange);\n dom.setCssClass(this.searchOption, \"checked\", this.searchOption.checked);\n this.replaceOption.textContent = this.replaceOption.checked ? \"-\" : \"+\";\n dom.setCssClass(this.regExpOption, \"checked\", this.regExpOption.checked);\n dom.setCssClass(this.wholeWordOption, \"checked\", this.wholeWordOption.checked);\n dom.setCssClass(this.caseSensitiveOption, \"checked\", this.caseSensitiveOption.checked);\n var readOnly = this.editor.getReadOnly();\n this.replaceOption.style.display = readOnly ? \"none\" : \"\";\n this.replaceBox.style.display = this.replaceOption.checked && !readOnly ? \"\" : \"none\";\n this.find(false, false, preventScroll);\n };\n SearchBox.prototype.highlight = function (re) {\n this.editor.session.highlight(re || this.editor.$search.$options.re);\n this.editor.renderer.updateBackMarkers();\n };\n SearchBox.prototype.find = function (skipCurrent, backwards, preventScroll) {\n var range = this.editor.find(this.searchInput.value, {\n skipCurrent: skipCurrent,\n backwards: backwards,\n wrap: true,\n regExp: this.regExpOption.checked,\n caseSensitive: this.caseSensitiveOption.checked,\n wholeWord: this.wholeWordOption.checked,\n preventScroll: preventScroll,\n range: this.searchRange\n });\n var noMatch = !range && this.searchInput.value;\n dom.setCssClass(this.searchBox, \"ace_nomatch\", noMatch);\n this.editor._emit(\"findSearchBox\", { match: !noMatch });\n this.highlight();\n this.updateCounter();\n };\n SearchBox.prototype.updateCounter = function () {\n var editor = this.editor;\n var regex = editor.$search.$options.re;\n var supportsUnicodeFlag = regex.unicode;\n var all = 0;\n var before = 0;\n if (regex) {\n var value = this.searchRange\n ? editor.session.getTextRange(this.searchRange)\n : editor.getValue();\n var offset = editor.session.doc.positionToIndex(editor.selection.anchor);\n if (this.searchRange)\n offset -= editor.session.doc.positionToIndex(this.searchRange.start);\n var last = regex.lastIndex = 0;\n var m;\n while ((m = regex.exec(value))) {\n all++;\n last = m.index;\n if (last <= offset)\n before++;\n if (all > MAX_COUNT)\n break;\n if (!m[0]) {\n regex.lastIndex = last += lang.skipEmptyMatch(value, last, supportsUnicodeFlag);\n if (last >= value.length)\n break;\n }\n }\n }\n this.searchCounter.textContent = nls(\"$0 of $1\", [before, (all > MAX_COUNT ? MAX_COUNT + \"+\" : all)]);\n };\n SearchBox.prototype.findNext = function () {\n this.find(true, false);\n };\n SearchBox.prototype.findPrev = function () {\n this.find(true, true);\n };\n SearchBox.prototype.findAll = function () {\n var range = this.editor.findAll(this.searchInput.value, {\n regExp: this.regExpOption.checked,\n caseSensitive: this.caseSensitiveOption.checked,\n wholeWord: this.wholeWordOption.checked\n });\n var noMatch = !range && this.searchInput.value;\n dom.setCssClass(this.searchBox, \"ace_nomatch\", noMatch);\n this.editor._emit(\"findSearchBox\", { match: !noMatch });\n this.highlight();\n this.hide();\n };\n SearchBox.prototype.replace = function () {\n if (!this.editor.getReadOnly())\n this.editor.replace(this.replaceInput.value);\n };\n SearchBox.prototype.replaceAndFindNext = function () {\n if (!this.editor.getReadOnly()) {\n this.editor.replace(this.replaceInput.value);\n this.findNext();\n }\n };\n SearchBox.prototype.replaceAll = function () {\n if (!this.editor.getReadOnly())\n this.editor.replaceAll(this.replaceInput.value);\n };\n SearchBox.prototype.hide = function () {\n this.active = false;\n this.setSearchRange(null);\n this.editor.off(\"changeSession\", this.setSession);\n this.element.style.display = \"none\";\n this.editor.keyBinding.removeKeyboardHandler(this.$closeSearchBarKb);\n this.editor.focus();\n };\n SearchBox.prototype.show = function (value, isReplace) {\n this.active = true;\n this.editor.on(\"changeSession\", this.setSession);\n this.element.style.display = \"\";\n this.replaceOption.checked = isReplace;\n if (value)\n this.searchInput.value = value;\n this.searchInput.focus();\n this.searchInput.select();\n this.editor.keyBinding.addKeyboardHandler(this.$closeSearchBarKb);\n this.$syncOptions(true);\n };\n SearchBox.prototype.isFocused = function () {\n var el = document.activeElement;\n return el == this.searchInput || el == this.replaceInput;\n };\n return SearchBox;\n}());\nvar $searchBarKb = new HashHandler();\n$searchBarKb.bindKeys({\n \"Ctrl-f|Command-f\": function (sb) {\n var isReplace = sb.isReplace = !sb.isReplace;\n sb.replaceBox.style.display = isReplace ? \"\" : \"none\";\n sb.replaceOption.checked = false;\n sb.$syncOptions();\n sb.searchInput.focus();\n },\n \"Ctrl-H|Command-Option-F\": function (sb) {\n if (sb.editor.getReadOnly())\n return;\n sb.replaceOption.checked = true;\n sb.$syncOptions();\n sb.replaceInput.focus();\n },\n \"Ctrl-G|Command-G\": function (sb) {\n sb.findNext();\n },\n \"Ctrl-Shift-G|Command-Shift-G\": function (sb) {\n sb.findPrev();\n },\n \"esc\": function (sb) {\n setTimeout(function () { sb.hide(); });\n },\n \"Return\": function (sb) {\n if (sb.activeInput == sb.replaceInput)\n sb.replace();\n sb.findNext();\n },\n \"Shift-Return\": function (sb) {\n if (sb.activeInput == sb.replaceInput)\n sb.replace();\n sb.findPrev();\n },\n \"Alt-Return\": function (sb) {\n if (sb.activeInput == sb.replaceInput)\n sb.replaceAll();\n sb.findAll();\n },\n \"Tab\": function (sb) {\n (sb.activeInput == sb.replaceInput ? sb.searchInput : sb.replaceInput).focus();\n }\n});\n$searchBarKb.addCommands([{\n name: \"toggleRegexpMode\",\n bindKey: { win: \"Alt-R|Alt-/\", mac: \"Ctrl-Alt-R|Ctrl-Alt-/\" },\n exec: function (sb) {\n sb.regExpOption.checked = !sb.regExpOption.checked;\n sb.$syncOptions();\n }\n }, {\n name: \"toggleCaseSensitive\",\n bindKey: { win: \"Alt-C|Alt-I\", mac: \"Ctrl-Alt-R|Ctrl-Alt-I\" },\n exec: function (sb) {\n sb.caseSensitiveOption.checked = !sb.caseSensitiveOption.checked;\n sb.$syncOptions();\n }\n }, {\n name: \"toggleWholeWords\",\n bindKey: { win: \"Alt-B|Alt-W\", mac: \"Ctrl-Alt-B|Ctrl-Alt-W\" },\n exec: function (sb) {\n sb.wholeWordOption.checked = !sb.wholeWordOption.checked;\n sb.$syncOptions();\n }\n }, {\n name: \"toggleReplace\",\n exec: function (sb) {\n sb.replaceOption.checked = !sb.replaceOption.checked;\n sb.$syncOptions();\n }\n }, {\n name: \"searchInSelection\",\n exec: function (sb) {\n sb.searchOption.checked = !sb.searchRange;\n sb.setSearchRange(sb.searchOption.checked && sb.editor.getSelectionRange());\n sb.$syncOptions();\n }\n }]);\nvar $closeSearchBarKb = new HashHandler([{\n bindKey: \"Esc\",\n name: \"closeSearchBar\",\n exec: function (editor) {\n editor.searchBox.hide();\n }\n }]);\nSearchBox.prototype.$searchBarKb = $searchBarKb;\nSearchBox.prototype.$closeSearchBarKb = $closeSearchBarKb;\nexports.SearchBox = SearchBox;\nexports.Search = function (editor, isReplace) {\n var sb = editor.searchBox || new SearchBox(editor);\n sb.show(editor.session.getTextRange(), isReplace);\n};\n\n}); (function() {\n ace.require([\"ace/ext/searchbox\"], function(m) {\n if (typeof module == \"object\" && typeof exports == \"object\" && module) {\n module.exports = m;\n }\n });\n })();\n ","ace.define(\"ace/mode/css_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/mode/text_highlight_rules\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar lang = require(\"../lib/lang\");\nvar TextHighlightRules = require(\"./text_highlight_rules\").TextHighlightRules;\nvar supportType = exports.supportType = \"align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index\";\nvar supportFunction = exports.supportFunction = \"rgb|rgba|url|attr|counter|counters\";\nvar supportConstant = exports.supportConstant = \"absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|flex-end|flex-start|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom\";\nvar supportConstantColor = exports.supportConstantColor = \"aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|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|green|greenyellow|grey|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|magenta|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|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen\";\nvar supportConstantFonts = exports.supportConstantFonts = \"arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace\";\nvar numRe = exports.numRe = \"\\\\-?(?:(?:[0-9]+(?:\\\\.[0-9]+)?)|(?:\\\\.[0-9]+))\";\nvar pseudoElements = exports.pseudoElements = \"(\\\\:+)\\\\b(after|before|first-letter|first-line|moz-selection|selection)\\\\b\";\nvar pseudoClasses = exports.pseudoClasses = \"(:)\\\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\\\b\";\nvar CssHighlightRules = function () {\n var keywordMapper = this.createKeywordMapper({\n \"support.function\": supportFunction,\n \"support.constant\": supportConstant,\n \"support.type\": supportType,\n \"support.constant.color\": supportConstantColor,\n \"support.constant.fonts\": supportConstantFonts\n }, \"text\", true);\n this.$rules = {\n \"start\": [{\n include: [\"strings\", \"url\", \"comments\"]\n }, {\n token: \"paren.lparen\",\n regex: \"\\\\{\",\n next: \"ruleset\"\n }, {\n token: \"paren.rparen\",\n regex: \"\\\\}\"\n }, {\n token: \"string\",\n regex: \"@(?!viewport)\",\n next: \"media\"\n }, {\n token: \"keyword\",\n regex: \"#[a-z0-9-_]+\"\n }, {\n token: \"keyword\",\n regex: \"%\"\n }, {\n token: \"variable\",\n regex: \"\\\\.[a-z0-9-_]+\"\n }, {\n token: \"string\",\n regex: \":[a-z0-9-_]+\"\n }, {\n token: \"constant.numeric\",\n regex: numRe\n }, {\n token: \"constant\",\n regex: \"[a-z0-9-_]+\"\n }, {\n caseInsensitive: true\n }],\n \"media\": [{\n include: [\"strings\", \"url\", \"comments\"]\n }, {\n token: \"paren.lparen\",\n regex: \"\\\\{\",\n next: \"start\"\n }, {\n token: \"paren.rparen\",\n regex: \"\\\\}\",\n next: \"start\"\n }, {\n token: \"string\",\n regex: \";\",\n next: \"start\"\n }, {\n token: \"keyword\",\n regex: \"(?:media|supports|document|charset|import|namespace|media|supports|document\"\n + \"|page|font|keyframes|viewport|counter-style|font-feature-values\"\n + \"|swash|ornaments|annotation|stylistic|styleset|character-variant)\"\n }],\n \"comments\": [{\n token: \"comment\",\n regex: \"\\\\/\\\\*\",\n push: [{\n token: \"comment\",\n regex: \"\\\\*\\\\/\",\n next: \"pop\"\n }, {\n defaultToken: \"comment\"\n }]\n }],\n \"ruleset\": [{\n regex: \"-(webkit|ms|moz|o)-\",\n token: \"text\"\n }, {\n token: \"punctuation.operator\",\n regex: \"[:;]\"\n }, {\n token: \"paren.rparen\",\n regex: \"\\\\}\",\n next: \"start\"\n }, {\n include: [\"strings\", \"url\", \"comments\"]\n }, {\n token: [\"constant.numeric\", \"keyword\"],\n regex: \"(\" + numRe + \")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)\"\n }, {\n token: \"constant.numeric\",\n regex: numRe\n }, {\n token: \"constant.numeric\",\n regex: \"#[a-f0-9]{6}\"\n }, {\n token: \"constant.numeric\",\n regex: \"#[a-f0-9]{3}\"\n }, {\n token: [\"punctuation\", \"entity.other.attribute-name.pseudo-element.css\"],\n regex: pseudoElements\n }, {\n token: [\"punctuation\", \"entity.other.attribute-name.pseudo-class.css\"],\n regex: pseudoClasses\n }, {\n include: \"url\"\n }, {\n token: keywordMapper,\n regex: \"\\\\-?[a-zA-Z_][a-zA-Z0-9_\\\\-]*\"\n }, {\n caseInsensitive: true\n }],\n url: [{\n token: \"support.function\",\n regex: \"(?:url(:?-prefix)?|domain|regexp)\\\\(\",\n push: [{\n token: \"support.function\",\n regex: \"\\\\)\",\n next: \"pop\"\n }, {\n defaultToken: \"string\"\n }]\n }],\n strings: [{\n token: \"string.start\",\n regex: \"'\",\n push: [{\n token: \"string.end\",\n regex: \"'|$\",\n next: \"pop\"\n }, {\n include: \"escapes\"\n }, {\n token: \"constant.language.escape\",\n regex: /\\\\$/,\n consumeLineEnd: true\n }, {\n defaultToken: \"string\"\n }]\n }, {\n token: \"string.start\",\n regex: '\"',\n push: [{\n token: \"string.end\",\n regex: '\"|$',\n next: \"pop\"\n }, {\n include: \"escapes\"\n }, {\n token: \"constant.language.escape\",\n regex: /\\\\$/,\n consumeLineEnd: true\n }, {\n defaultToken: \"string\"\n }]\n }],\n escapes: [{\n token: \"constant.language.escape\",\n regex: /\\\\([a-fA-F\\d]{1,6}|[^a-fA-F\\d])/\n }]\n };\n this.normalizeRules();\n};\noop.inherits(CssHighlightRules, TextHighlightRules);\nexports.CssHighlightRules = CssHighlightRules;\n\n});\n\nace.define(\"ace/mode/matching_brace_outdent\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar Range = require(\"../range\").Range;\nvar MatchingBraceOutdent = function () { };\n(function () {\n this.checkOutdent = function (line, input) {\n if (!/^\\s+$/.test(line))\n return false;\n return /^\\s*\\}/.test(input);\n };\n this.autoOutdent = function (doc, row) {\n var line = doc.getLine(row);\n var match = line.match(/^(\\s*\\})/);\n if (!match)\n return 0;\n var column = match[1].length;\n var openBracePos = doc.findMatchingBracket({ row: row, column: column });\n if (!openBracePos || openBracePos.row == row)\n return 0;\n var indent = this.$getIndent(doc.getLine(openBracePos.row));\n doc.replace(new Range(row, 0, row, column - 1), indent);\n };\n this.$getIndent = function (line) {\n return line.match(/^\\s*/)[0];\n };\n}).call(MatchingBraceOutdent.prototype);\nexports.MatchingBraceOutdent = MatchingBraceOutdent;\n\n});\n\nace.define(\"ace/mode/css_completions\",[\"require\",\"exports\",\"module\"], function(require, exports, module){\"use strict\";\nvar propertyMap = {\n \"background\": { \"#$0\": 1 },\n \"background-color\": { \"#$0\": 1, \"transparent\": 1, \"fixed\": 1 },\n \"background-image\": { \"url('/$0')\": 1 },\n \"background-repeat\": { \"repeat\": 1, \"repeat-x\": 1, \"repeat-y\": 1, \"no-repeat\": 1, \"inherit\": 1 },\n \"background-position\": { \"bottom\": 2, \"center\": 2, \"left\": 2, \"right\": 2, \"top\": 2, \"inherit\": 2 },\n \"background-attachment\": { \"scroll\": 1, \"fixed\": 1 },\n \"background-size\": { \"cover\": 1, \"contain\": 1 },\n \"background-clip\": { \"border-box\": 1, \"padding-box\": 1, \"content-box\": 1 },\n \"background-origin\": { \"border-box\": 1, \"padding-box\": 1, \"content-box\": 1 },\n \"border\": { \"solid $0\": 1, \"dashed $0\": 1, \"dotted $0\": 1, \"#$0\": 1 },\n \"border-color\": { \"#$0\": 1 },\n \"border-style\": { \"solid\": 2, \"dashed\": 2, \"dotted\": 2, \"double\": 2, \"groove\": 2, \"hidden\": 2, \"inherit\": 2, \"inset\": 2, \"none\": 2, \"outset\": 2, \"ridged\": 2 },\n \"border-collapse\": { \"collapse\": 1, \"separate\": 1 },\n \"bottom\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"clear\": { \"left\": 1, \"right\": 1, \"both\": 1, \"none\": 1 },\n \"color\": { \"#$0\": 1, \"rgb(#$00,0,0)\": 1 },\n \"cursor\": { \"default\": 1, \"pointer\": 1, \"move\": 1, \"text\": 1, \"wait\": 1, \"help\": 1, \"progress\": 1, \"n-resize\": 1, \"ne-resize\": 1, \"e-resize\": 1, \"se-resize\": 1, \"s-resize\": 1, \"sw-resize\": 1, \"w-resize\": 1, \"nw-resize\": 1 },\n \"display\": { \"none\": 1, \"block\": 1, \"inline\": 1, \"inline-block\": 1, \"table-cell\": 1 },\n \"empty-cells\": { \"show\": 1, \"hide\": 1 },\n \"float\": { \"left\": 1, \"right\": 1, \"none\": 1 },\n \"font-family\": { \"Arial\": 2, \"Comic Sans MS\": 2, \"Consolas\": 2, \"Courier New\": 2, \"Courier\": 2, \"Georgia\": 2, \"Monospace\": 2, \"Sans-Serif\": 2, \"Segoe UI\": 2, \"Tahoma\": 2, \"Times New Roman\": 2, \"Trebuchet MS\": 2, \"Verdana\": 1 },\n \"font-size\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"font-weight\": { \"bold\": 1, \"normal\": 1 },\n \"font-style\": { \"italic\": 1, \"normal\": 1 },\n \"font-variant\": { \"normal\": 1, \"small-caps\": 1 },\n \"height\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"left\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"letter-spacing\": { \"normal\": 1 },\n \"line-height\": { \"normal\": 1 },\n \"list-style-type\": { \"none\": 1, \"disc\": 1, \"circle\": 1, \"square\": 1, \"decimal\": 1, \"decimal-leading-zero\": 1, \"lower-roman\": 1, \"upper-roman\": 1, \"lower-greek\": 1, \"lower-latin\": 1, \"upper-latin\": 1, \"georgian\": 1, \"lower-alpha\": 1, \"upper-alpha\": 1 },\n \"margin\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"margin-right\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"margin-left\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"margin-top\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"margin-bottom\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"max-height\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"max-width\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"min-height\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"min-width\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"overflow\": { \"hidden\": 1, \"visible\": 1, \"auto\": 1, \"scroll\": 1 },\n \"overflow-x\": { \"hidden\": 1, \"visible\": 1, \"auto\": 1, \"scroll\": 1 },\n \"overflow-y\": { \"hidden\": 1, \"visible\": 1, \"auto\": 1, \"scroll\": 1 },\n \"padding\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"padding-top\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"padding-right\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"padding-bottom\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"padding-left\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"page-break-after\": { \"auto\": 1, \"always\": 1, \"avoid\": 1, \"left\": 1, \"right\": 1 },\n \"page-break-before\": { \"auto\": 1, \"always\": 1, \"avoid\": 1, \"left\": 1, \"right\": 1 },\n \"position\": { \"absolute\": 1, \"relative\": 1, \"fixed\": 1, \"static\": 1 },\n \"right\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"table-layout\": { \"fixed\": 1, \"auto\": 1 },\n \"text-decoration\": { \"none\": 1, \"underline\": 1, \"line-through\": 1, \"blink\": 1 },\n \"text-align\": { \"left\": 1, \"right\": 1, \"center\": 1, \"justify\": 1 },\n \"text-transform\": { \"capitalize\": 1, \"uppercase\": 1, \"lowercase\": 1, \"none\": 1 },\n \"top\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"vertical-align\": { \"top\": 1, \"bottom\": 1 },\n \"visibility\": { \"hidden\": 1, \"visible\": 1 },\n \"white-space\": { \"nowrap\": 1, \"normal\": 1, \"pre\": 1, \"pre-line\": 1, \"pre-wrap\": 1 },\n \"width\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n \"word-spacing\": { \"normal\": 1 },\n \"filter\": { \"alpha(opacity=$0100)\": 1 },\n \"text-shadow\": { \"$02px 2px 2px #777\": 1 },\n \"text-overflow\": { \"ellipsis-word\": 1, \"clip\": 1, \"ellipsis\": 1 },\n \"-moz-border-radius\": 1,\n \"-moz-border-radius-topright\": 1,\n \"-moz-border-radius-bottomright\": 1,\n \"-moz-border-radius-topleft\": 1,\n \"-moz-border-radius-bottomleft\": 1,\n \"-webkit-border-radius\": 1,\n \"-webkit-border-top-right-radius\": 1,\n \"-webkit-border-top-left-radius\": 1,\n \"-webkit-border-bottom-right-radius\": 1,\n \"-webkit-border-bottom-left-radius\": 1,\n \"-moz-box-shadow\": 1,\n \"-webkit-box-shadow\": 1,\n \"transform\": { \"rotate($00deg)\": 1, \"skew($00deg)\": 1 },\n \"-moz-transform\": { \"rotate($00deg)\": 1, \"skew($00deg)\": 1 },\n \"-webkit-transform\": { \"rotate($00deg)\": 1, \"skew($00deg)\": 1 }\n};\nvar CssCompletions = function () {\n};\n(function () {\n this.completionsDefined = false;\n this.defineCompletions = function () {\n if (document) {\n var style = document.createElement('c').style;\n for (var i in style) {\n if (typeof style[i] !== 'string')\n continue;\n var name = i.replace(/[A-Z]/g, function (x) {\n return '-' + x.toLowerCase();\n });\n if (!propertyMap.hasOwnProperty(name))\n propertyMap[name] = 1;\n }\n }\n this.completionsDefined = true;\n };\n this.getCompletions = function (state, session, pos, prefix) {\n if (!this.completionsDefined) {\n this.defineCompletions();\n }\n if (state === 'ruleset' || session.$mode.$id == \"ace/mode/scss\") {\n var line = session.getLine(pos.row).substr(0, pos.column);\n var inParens = /\\([^)]*$/.test(line);\n if (inParens) {\n line = line.substr(line.lastIndexOf('(') + 1);\n }\n if (/:[^;]+$/.test(line)) {\n /([\\w\\-]+):[^:]*$/.test(line);\n return this.getPropertyValueCompletions(state, session, pos, prefix);\n }\n else {\n return this.getPropertyCompletions(state, session, pos, prefix, inParens);\n }\n }\n return [];\n };\n this.getPropertyCompletions = function (state, session, pos, prefix, skipSemicolon) {\n skipSemicolon = skipSemicolon || false;\n var properties = Object.keys(propertyMap);\n return properties.map(function (property) {\n return {\n caption: property,\n snippet: property + ': $0' + (skipSemicolon ? '' : ';'),\n meta: \"property\",\n score: 1000000\n };\n });\n };\n this.getPropertyValueCompletions = function (state, session, pos, prefix) {\n var line = session.getLine(pos.row).substr(0, pos.column);\n var property = (/([\\w\\-]+):[^:]*$/.exec(line) || {})[1];\n if (!property)\n return [];\n var values = [];\n if (property in propertyMap && typeof propertyMap[property] === \"object\") {\n values = Object.keys(propertyMap[property]);\n }\n return values.map(function (value) {\n return {\n caption: value,\n snippet: value,\n meta: \"property value\",\n score: 1000000\n };\n });\n };\n}).call(CssCompletions.prototype);\nexports.CssCompletions = CssCompletions;\n\n});\n\nace.define(\"ace/mode/behaviour/css\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/behaviour\",\"ace/mode/behaviour/cstyle\",\"ace/token_iterator\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../../lib/oop\");\nvar Behaviour = require(\"../behaviour\").Behaviour;\nvar CstyleBehaviour = require(\"./cstyle\").CstyleBehaviour;\nvar TokenIterator = require(\"../../token_iterator\").TokenIterator;\nvar CssBehaviour = function () {\n this.inherit(CstyleBehaviour);\n this.add(\"colon\", \"insertion\", function (state, action, editor, session, text) {\n if (text === ':' && editor.selection.isEmpty()) {\n var cursor = editor.getCursorPosition();\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n var token = iterator.getCurrentToken();\n if (token && token.value.match(/\\s+/)) {\n token = iterator.stepBackward();\n }\n if (token && token.type === 'support.type') {\n var line = session.doc.getLine(cursor.row);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n if (rightChar === ':') {\n return {\n text: '',\n selection: [1, 1]\n };\n }\n if (/^(\\s+[^;]|\\s*$)/.test(line.substring(cursor.column))) {\n return {\n text: ':;',\n selection: [1, 1]\n };\n }\n }\n }\n });\n this.add(\"colon\", \"deletion\", function (state, action, editor, session, range) {\n var selected = session.doc.getTextRange(range);\n if (!range.isMultiLine() && selected === ':') {\n var cursor = editor.getCursorPosition();\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n var token = iterator.getCurrentToken();\n if (token && token.value.match(/\\s+/)) {\n token = iterator.stepBackward();\n }\n if (token && token.type === 'support.type') {\n var line = session.doc.getLine(range.start.row);\n var rightChar = line.substring(range.end.column, range.end.column + 1);\n if (rightChar === ';') {\n range.end.column++;\n return range;\n }\n }\n }\n });\n this.add(\"semicolon\", \"insertion\", function (state, action, editor, session, text) {\n if (text === ';' && editor.selection.isEmpty()) {\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n if (rightChar === ';') {\n return {\n text: '',\n selection: [1, 1]\n };\n }\n }\n });\n this.add(\"!important\", \"insertion\", function (state, action, editor, session, text) {\n if (text === '!' && editor.selection.isEmpty()) {\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n if (/^\\s*(;|}|$)/.test(line.substring(cursor.column))) {\n return {\n text: '!important',\n selection: [10, 10]\n };\n }\n }\n });\n};\noop.inherits(CssBehaviour, CstyleBehaviour);\nexports.CssBehaviour = CssBehaviour;\n\n});\n\nace.define(\"ace/mode/folding/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/range\",\"ace/mode/folding/fold_mode\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../../lib/oop\");\nvar Range = require(\"../../range\").Range;\nvar BaseFoldMode = require(\"./fold_mode\").FoldMode;\nvar FoldMode = exports.FoldMode = function (commentRegex) {\n if (commentRegex) {\n this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.start));\n this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.end));\n }\n};\noop.inherits(FoldMode, BaseFoldMode);\n(function () {\n this.foldingStartMarker = /([\\{\\[\\(])[^\\}\\]\\)]*$|^\\s*(\\/\\*)/;\n this.foldingStopMarker = /^[^\\[\\{\\(]*([\\}\\]\\)])|^[\\s\\*]*(\\*\\/)/;\n this.singleLineBlockCommentRe = /^\\s*(\\/\\*).*\\*\\/\\s*$/;\n this.tripleStarBlockCommentRe = /^\\s*(\\/\\*\\*\\*).*\\*\\/\\s*$/;\n this.startRegionRe = /^\\s*(\\/\\*|\\/\\/)#?region\\b/;\n this._getFoldWidgetBase = this.getFoldWidget;\n this.getFoldWidget = function (session, foldStyle, row) {\n var line = session.getLine(row);\n if (this.singleLineBlockCommentRe.test(line)) {\n if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line))\n return \"\";\n }\n var fw = this._getFoldWidgetBase(session, foldStyle, row);\n if (!fw && this.startRegionRe.test(line))\n return \"start\"; // lineCommentRegionStart\n return fw;\n };\n this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) {\n var line = session.getLine(row);\n if (this.startRegionRe.test(line))\n return this.getCommentRegionBlock(session, line, row);\n var match = line.match(this.foldingStartMarker);\n if (match) {\n var i = match.index;\n if (match[1])\n return this.openingBracketBlock(session, match[1], row, i);\n var range = session.getCommentFoldRange(row, i + match[0].length, 1);\n if (range && !range.isMultiLine()) {\n if (forceMultiline) {\n range = this.getSectionRange(session, row);\n }\n else if (foldStyle != \"all\")\n range = null;\n }\n return range;\n }\n if (foldStyle === \"markbegin\")\n return;\n var match = line.match(this.foldingStopMarker);\n if (match) {\n var i = match.index + match[0].length;\n if (match[1])\n return this.closingBracketBlock(session, match[1], row, i);\n return session.getCommentFoldRange(row, i, -1);\n }\n };\n this.getSectionRange = function (session, row) {\n var line = session.getLine(row);\n var startIndent = line.search(/\\S/);\n var startRow = row;\n var startColumn = line.length;\n row = row + 1;\n var endRow = row;\n var maxRow = session.getLength();\n while (++row < maxRow) {\n line = session.getLine(row);\n var indent = line.search(/\\S/);\n if (indent === -1)\n continue;\n if (startIndent > indent)\n break;\n var subRange = this.getFoldWidgetRange(session, \"all\", row);\n if (subRange) {\n if (subRange.start.row <= startRow) {\n break;\n }\n else if (subRange.isMultiLine()) {\n row = subRange.end.row;\n }\n else if (startIndent == indent) {\n break;\n }\n }\n endRow = row;\n }\n return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);\n };\n this.getCommentRegionBlock = function (session, line, row) {\n var startColumn = line.search(/\\s*$/);\n var maxRow = session.getLength();\n var startRow = row;\n var re = /^\\s*(?:\\/\\*|\\/\\/|--)#?(end)?region\\b/;\n var depth = 1;\n while (++row < maxRow) {\n line = session.getLine(row);\n var m = re.exec(line);\n if (!m)\n continue;\n if (m[1])\n depth--;\n else\n depth++;\n if (!depth)\n break;\n }\n var endRow = row;\n if (endRow > startRow) {\n return new Range(startRow, startColumn, endRow, line.length);\n }\n };\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/css\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/css_highlight_rules\",\"ace/mode/matching_brace_outdent\",\"ace/worker/worker_client\",\"ace/mode/css_completions\",\"ace/mode/behaviour/css\",\"ace/mode/folding/cstyle\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar TextMode = require(\"./text\").Mode;\nvar CssHighlightRules = require(\"./css_highlight_rules\").CssHighlightRules;\nvar MatchingBraceOutdent = require(\"./matching_brace_outdent\").MatchingBraceOutdent;\nvar WorkerClient = require(\"../worker/worker_client\").WorkerClient;\nvar CssCompletions = require(\"./css_completions\").CssCompletions;\nvar CssBehaviour = require(\"./behaviour/css\").CssBehaviour;\nvar CStyleFoldMode = require(\"./folding/cstyle\").FoldMode;\nvar Mode = function () {\n this.HighlightRules = CssHighlightRules;\n this.$outdent = new MatchingBraceOutdent();\n this.$behaviour = new CssBehaviour();\n this.$completer = new CssCompletions();\n this.foldingRules = new CStyleFoldMode();\n};\noop.inherits(Mode, TextMode);\n(function () {\n this.foldingRules = \"cStyle\";\n this.blockComment = { start: \"/*\", end: \"*/\" };\n this.getNextLineIndent = function (state, line, tab) {\n var indent = this.$getIndent(line);\n var tokens = this.getTokenizer().getLineTokens(line, state).tokens;\n if (tokens.length && tokens[tokens.length - 1].type == \"comment\") {\n return indent;\n }\n var match = line.match(/^.*\\{\\s*$/);\n if (match) {\n indent += tab;\n }\n return indent;\n };\n this.checkOutdent = function (state, line, input) {\n return this.$outdent.checkOutdent(line, input);\n };\n this.autoOutdent = function (state, doc, row) {\n this.$outdent.autoOutdent(doc, row);\n };\n this.getCompletions = function (state, session, pos, prefix) {\n return this.$completer.getCompletions(state, session, pos, prefix);\n };\n this.createWorker = function (session) {\n var worker = new WorkerClient([\"ace\"], \"ace/mode/css_worker\", \"Worker\");\n worker.attachToDocument(session.getDocument());\n worker.on(\"annotate\", function (e) {\n session.setAnnotations(e.data);\n });\n worker.on(\"terminate\", function () {\n session.clearAnnotations();\n });\n return worker;\n };\n this.$id = \"ace/mode/css\";\n this.snippetFileId = \"ace/snippets/css\";\n}).call(Mode.prototype);\nexports.Mode = Mode;\n\n}); (function() {\n ace.require([\"ace/mode/css\"], function(m) {\n if (typeof module == \"object\" && typeof exports == \"object\" && module) {\n module.exports = m;\n }\n });\n })();\n ","ace.define(\"ace/mode/doc_comment_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar TextHighlightRules = require(\"./text_highlight_rules\").TextHighlightRules;\nvar DocCommentHighlightRules = function () {\n this.$rules = {\n \"start\": [\n {\n token: \"comment.doc.tag\",\n regex: \"@\\\\w+(?=\\\\s|$)\"\n }, DocCommentHighlightRules.getTagRule(), {\n defaultToken: \"comment.doc\",\n caseInsensitive: true\n }\n ]\n };\n};\noop.inherits(DocCommentHighlightRules, TextHighlightRules);\nDocCommentHighlightRules.getTagRule = function (start) {\n return {\n token: \"comment.doc.tag.storage.type\",\n regex: \"\\\\b(?:TODO|FIXME|XXX|HACK)\\\\b\"\n };\n};\nDocCommentHighlightRules.getStartRule = function (start) {\n return {\n token: \"comment.doc\",\n regex: \"\\\\/\\\\*(?=\\\\*)\",\n next: start\n };\n};\nDocCommentHighlightRules.getEndRule = function (start) {\n return {\n token: \"comment.doc\",\n regex: \"\\\\*\\\\/\",\n next: start\n };\n};\nexports.DocCommentHighlightRules = DocCommentHighlightRules;\n\n});\n\nace.define(\"ace/mode/golang_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/doc_comment_highlight_rules\",\"ace/mode/text_highlight_rules\"], function(require, exports, module){var oop = require(\"../lib/oop\");\nvar DocCommentHighlightRules = require(\"./doc_comment_highlight_rules\").DocCommentHighlightRules;\nvar TextHighlightRules = require(\"./text_highlight_rules\").TextHighlightRules;\nvar GolangHighlightRules = function () {\n var keywords = (\"else|break|case|return|goto|if|const|select|\" +\n \"continue|struct|default|switch|for|range|\" +\n \"func|import|package|chan|defer|fallthrough|go|interface|map|range|\" +\n \"select|type|var\");\n var builtinTypes = (\"string|uint8|uint16|uint32|uint64|int8|int16|int32|int64|float32|\" +\n \"float64|complex64|complex128|byte|rune|uint|int|uintptr|bool|error\");\n var builtinFunctions = (\"new|close|cap|copy|panic|panicln|print|println|len|make|delete|real|recover|imag|append\");\n var builtinConstants = (\"nil|true|false|iota\");\n var keywordMapper = this.createKeywordMapper({\n \"keyword\": keywords,\n \"constant.language\": builtinConstants,\n \"support.function\": builtinFunctions,\n \"support.type\": builtinTypes\n }, \"\");\n var stringEscapeRe = \"\\\\\\\\(?:[0-7]{3}|x\\\\h{2}|u{4}|U\\\\h{6}|[abfnrtv'\\\"\\\\\\\\])\".replace(/\\\\h/g, \"[a-fA-F\\\\d]\");\n this.$rules = {\n \"start\": [\n {\n token: \"comment\",\n regex: \"\\\\/\\\\/.*$\"\n },\n DocCommentHighlightRules.getStartRule(\"doc-start\"),\n {\n token: \"comment.start\",\n regex: \"\\\\/\\\\*\",\n next: \"comment\"\n }, {\n token: \"string\",\n regex: /\"(?:[^\"\\\\]|\\\\.)*?\"/\n }, {\n token: \"string\",\n regex: '`',\n next: \"bqstring\"\n }, {\n token: \"constant.numeric\",\n regex: \"'(?:[^\\\\'\\uD800-\\uDBFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|\" + stringEscapeRe.replace('\"', '') + \")'\"\n }, {\n token: \"constant.numeric\",\n regex: \"0[xX][0-9a-fA-F]+\\\\b\"\n }, {\n token: \"constant.numeric\",\n regex: \"[+-]?\\\\d+(?:(?:\\\\.\\\\d*)?(?:[eE][+-]?\\\\d+)?)?\\\\b\"\n }, {\n token: [\"keyword\", \"text\", \"entity.name.function\"],\n regex: \"(func)(\\\\s+)([a-zA-Z_$][a-zA-Z0-9_$]*)\\\\b\"\n }, {\n token: function (val) {\n if (val[val.length - 1] == \"(\") {\n return [{\n type: keywordMapper(val.slice(0, -1)) || \"support.function\",\n value: val.slice(0, -1)\n }, {\n type: \"paren.lparen\",\n value: val.slice(-1)\n }];\n }\n return keywordMapper(val) || \"identifier\";\n },\n regex: \"[a-zA-Z_$][a-zA-Z0-9_$]*\\\\b\\\\(?\"\n }, {\n token: \"keyword.operator\",\n regex: \"!|\\\\$|%|&|\\\\*|\\\\-\\\\-|\\\\-|\\\\+\\\\+|\\\\+|~|==|=|!=|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\\\|\\\\||\\\\?\\\\:|\\\\*=|%=|\\\\+=|\\\\-=|&=|\\\\^=\"\n }, {\n token: \"punctuation.operator\",\n regex: \"\\\\?|\\\\:|\\\\,|\\\\;|\\\\.\"\n }, {\n token: \"paren.lparen\",\n regex: \"[[({]\"\n }, {\n token: \"paren.rparen\",\n regex: \"[\\\\])}]\"\n }, {\n token: \"text\",\n regex: \"\\\\s+\"\n }\n ],\n \"comment\": [\n {\n token: \"comment.end\",\n regex: \"\\\\*\\\\/\",\n next: \"start\"\n }, {\n defaultToken: \"comment\"\n }\n ],\n \"bqstring\": [\n {\n token: \"string\",\n regex: '`',\n next: \"start\"\n }, {\n defaultToken: \"string\"\n }\n ]\n };\n this.embedRules(DocCommentHighlightRules, \"doc-\", [DocCommentHighlightRules.getEndRule(\"start\")]);\n};\noop.inherits(GolangHighlightRules, TextHighlightRules);\nexports.GolangHighlightRules = GolangHighlightRules;\n\n});\n\nace.define(\"ace/mode/matching_brace_outdent\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar Range = require(\"../range\").Range;\nvar MatchingBraceOutdent = function () { };\n(function () {\n this.checkOutdent = function (line, input) {\n if (!/^\\s+$/.test(line))\n return false;\n return /^\\s*\\}/.test(input);\n };\n this.autoOutdent = function (doc, row) {\n var line = doc.getLine(row);\n var match = line.match(/^(\\s*\\})/);\n if (!match)\n return 0;\n var column = match[1].length;\n var openBracePos = doc.findMatchingBracket({ row: row, column: column });\n if (!openBracePos || openBracePos.row == row)\n return 0;\n var indent = this.$getIndent(doc.getLine(openBracePos.row));\n doc.replace(new Range(row, 0, row, column - 1), indent);\n };\n this.$getIndent = function (line) {\n return line.match(/^\\s*/)[0];\n };\n}).call(MatchingBraceOutdent.prototype);\nexports.MatchingBraceOutdent = MatchingBraceOutdent;\n\n});\n\nace.define(\"ace/mode/folding/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/range\",\"ace/mode/folding/fold_mode\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../../lib/oop\");\nvar Range = require(\"../../range\").Range;\nvar BaseFoldMode = require(\"./fold_mode\").FoldMode;\nvar FoldMode = exports.FoldMode = function (commentRegex) {\n if (commentRegex) {\n this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.start));\n this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.end));\n }\n};\noop.inherits(FoldMode, BaseFoldMode);\n(function () {\n this.foldingStartMarker = /([\\{\\[\\(])[^\\}\\]\\)]*$|^\\s*(\\/\\*)/;\n this.foldingStopMarker = /^[^\\[\\{\\(]*([\\}\\]\\)])|^[\\s\\*]*(\\*\\/)/;\n this.singleLineBlockCommentRe = /^\\s*(\\/\\*).*\\*\\/\\s*$/;\n this.tripleStarBlockCommentRe = /^\\s*(\\/\\*\\*\\*).*\\*\\/\\s*$/;\n this.startRegionRe = /^\\s*(\\/\\*|\\/\\/)#?region\\b/;\n this._getFoldWidgetBase = this.getFoldWidget;\n this.getFoldWidget = function (session, foldStyle, row) {\n var line = session.getLine(row);\n if (this.singleLineBlockCommentRe.test(line)) {\n if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line))\n return \"\";\n }\n var fw = this._getFoldWidgetBase(session, foldStyle, row);\n if (!fw && this.startRegionRe.test(line))\n return \"start\"; // lineCommentRegionStart\n return fw;\n };\n this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) {\n var line = session.getLine(row);\n if (this.startRegionRe.test(line))\n return this.getCommentRegionBlock(session, line, row);\n var match = line.match(this.foldingStartMarker);\n if (match) {\n var i = match.index;\n if (match[1])\n return this.openingBracketBlock(session, match[1], row, i);\n var range = session.getCommentFoldRange(row, i + match[0].length, 1);\n if (range && !range.isMultiLine()) {\n if (forceMultiline) {\n range = this.getSectionRange(session, row);\n }\n else if (foldStyle != \"all\")\n range = null;\n }\n return range;\n }\n if (foldStyle === \"markbegin\")\n return;\n var match = line.match(this.foldingStopMarker);\n if (match) {\n var i = match.index + match[0].length;\n if (match[1])\n return this.closingBracketBlock(session, match[1], row, i);\n return session.getCommentFoldRange(row, i, -1);\n }\n };\n this.getSectionRange = function (session, row) {\n var line = session.getLine(row);\n var startIndent = line.search(/\\S/);\n var startRow = row;\n var startColumn = line.length;\n row = row + 1;\n var endRow = row;\n var maxRow = session.getLength();\n while (++row < maxRow) {\n line = session.getLine(row);\n var indent = line.search(/\\S/);\n if (indent === -1)\n continue;\n if (startIndent > indent)\n break;\n var subRange = this.getFoldWidgetRange(session, \"all\", row);\n if (subRange) {\n if (subRange.start.row <= startRow) {\n break;\n }\n else if (subRange.isMultiLine()) {\n row = subRange.end.row;\n }\n else if (startIndent == indent) {\n break;\n }\n }\n endRow = row;\n }\n return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);\n };\n this.getCommentRegionBlock = function (session, line, row) {\n var startColumn = line.search(/\\s*$/);\n var maxRow = session.getLength();\n var startRow = row;\n var re = /^\\s*(?:\\/\\*|\\/\\/|--)#?(end)?region\\b/;\n var depth = 1;\n while (++row < maxRow) {\n line = session.getLine(row);\n var m = re.exec(line);\n if (!m)\n continue;\n if (m[1])\n depth--;\n else\n depth++;\n if (!depth)\n break;\n }\n var endRow = row;\n if (endRow > startRow) {\n return new Range(startRow, startColumn, endRow, line.length);\n }\n };\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/golang\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/golang_highlight_rules\",\"ace/mode/matching_brace_outdent\",\"ace/mode/folding/cstyle\"], function(require, exports, module){var oop = require(\"../lib/oop\");\nvar TextMode = require(\"./text\").Mode;\nvar GolangHighlightRules = require(\"./golang_highlight_rules\").GolangHighlightRules;\nvar MatchingBraceOutdent = require(\"./matching_brace_outdent\").MatchingBraceOutdent;\nvar CStyleFoldMode = require(\"./folding/cstyle\").FoldMode;\nvar Mode = function () {\n this.HighlightRules = GolangHighlightRules;\n this.$outdent = new MatchingBraceOutdent();\n this.foldingRules = new CStyleFoldMode();\n this.$behaviour = this.$defaultBehaviour;\n};\noop.inherits(Mode, TextMode);\n(function () {\n this.lineCommentStart = \"//\";\n this.blockComment = { start: \"/*\", end: \"*/\" };\n this.getNextLineIndent = function (state, line, tab) {\n var indent = this.$getIndent(line);\n var tokenizedLine = this.getTokenizer().getLineTokens(line, state);\n var tokens = tokenizedLine.tokens;\n var endState = tokenizedLine.state;\n if (tokens.length && tokens[tokens.length - 1].type == \"comment\") {\n return indent;\n }\n if (state == \"start\") {\n var match = line.match(/^.*[\\{\\(\\[]\\s*$/);\n if (match) {\n indent += tab;\n }\n }\n return indent;\n }; //end getNextLineIndent\n this.checkOutdent = function (state, line, input) {\n return this.$outdent.checkOutdent(line, input);\n };\n this.autoOutdent = function (state, doc, row) {\n this.$outdent.autoOutdent(doc, row);\n };\n this.$id = \"ace/mode/golang\";\n}).call(Mode.prototype);\nexports.Mode = Mode;\n\n}); (function() {\n ace.require([\"ace/mode/golang\"], function(m) {\n if (typeof module == \"object\" && typeof exports == \"object\" && module) {\n module.exports = m;\n }\n });\n })();\n ","ace.define(\"ace/mode/jsdoc_comment_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar TextHighlightRules = require(\"./text_highlight_rules\").TextHighlightRules;\nvar JsDocCommentHighlightRules = function () {\n this.$rules = {\n \"start\": [\n {\n token: [\"comment.doc.tag\", \"comment.doc.text\", \"lparen.doc\"],\n regex: \"(@(?:param|member|typedef|property|namespace|var|const|callback))(\\\\s*)({)\",\n push: [\n {\n token: \"lparen.doc\",\n regex: \"{\",\n push: [\n {\n include: \"doc-syntax\"\n }, {\n token: \"rparen.doc\",\n regex: \"}|(?=$)\",\n next: \"pop\"\n }\n ]\n }, {\n token: [\"rparen.doc\", \"text.doc\", \"variable.parameter.doc\", \"lparen.doc\", \"variable.parameter.doc\", \"rparen.doc\"],\n regex: /(})(\\s*)(?:([\\w=:\\/\\.]+)|(?:(\\[)([\\w=:\\/\\.]+)(\\])))/,\n next: \"pop\"\n }, {\n token: \"rparen.doc\",\n regex: \"}|(?=$)\",\n next: \"pop\"\n }, {\n include: \"doc-syntax\"\n }, {\n defaultToken: \"text.doc\"\n }\n ]\n }, {\n token: [\"comment.doc.tag\", \"text.doc\", \"lparen.doc\"],\n regex: \"(@(?:returns?|yields|type|this|suppress|public|protected|private|package|modifies|\"\n + \"implements|external|exception|throws|enum|define|extends))(\\\\s*)({)\",\n push: [\n {\n token: \"lparen.doc\",\n regex: \"{\",\n push: [\n {\n include: \"doc-syntax\"\n }, {\n token: \"rparen.doc\",\n regex: \"}|(?=$)\",\n next: \"pop\"\n }\n ]\n }, {\n token: \"rparen.doc\",\n regex: \"}|(?=$)\",\n next: \"pop\"\n }, {\n include: \"doc-syntax\"\n }, {\n defaultToken: \"text.doc\"\n }\n ]\n }, {\n token: [\"comment.doc.tag\", \"text.doc\", \"variable.parameter.doc\"],\n regex: \"(@(?:alias|memberof|instance|module|name|lends|namespace|external|this|template|\"\n + \"requires|param|implements|function|extends|typedef|mixes|constructor|var|\"\n + \"memberof\\\\!|event|listens|exports|class|constructs|interface|emits|fires|\"\n + \"throws|const|callback|borrows|augments))(\\\\s+)(\\\\w[\\\\w#\\.:\\/~\\\"\\\\-]*)?\"\n }, {\n token: [\"comment.doc.tag\", \"text.doc\", \"variable.parameter.doc\"],\n regex: \"(@method)(\\\\s+)(\\\\w[\\\\w\\.\\\\(\\\\)]*)\"\n }, {\n token: \"comment.doc.tag\",\n regex: \"@access\\\\s+(?:private|public|protected)\"\n }, {\n token: \"comment.doc.tag\",\n regex: \"@kind\\\\s+(?:class|constant|event|external|file|function|member|mixin|module|namespace|typedef)\"\n }, {\n token: \"comment.doc.tag\",\n regex: \"@\\\\w+(?=\\\\s|$)\"\n },\n JsDocCommentHighlightRules.getTagRule(),\n {\n defaultToken: \"comment.doc\",\n caseInsensitive: true\n }\n ],\n \"doc-syntax\": [{\n token: \"operator.doc\",\n regex: /[|:]/\n }, {\n token: \"paren.doc\",\n regex: /[\\[\\]]/\n }]\n };\n this.normalizeRules();\n};\noop.inherits(JsDocCommentHighlightRules, TextHighlightRules);\nJsDocCommentHighlightRules.getTagRule = function (start) {\n return {\n token: \"comment.doc.tag.storage.type\",\n regex: \"\\\\b(?:TODO|FIXME|XXX|HACK)\\\\b\"\n };\n};\nJsDocCommentHighlightRules.getStartRule = function (start) {\n return {\n token: \"comment.doc\",\n regex: \"\\\\/\\\\*(?=\\\\*)\",\n next: start\n };\n};\nJsDocCommentHighlightRules.getEndRule = function (start) {\n return {\n token: \"comment.doc\",\n regex: \"\\\\*\\\\/\",\n next: start\n };\n};\nexports.JsDocCommentHighlightRules = JsDocCommentHighlightRules;\n\n});\n\nace.define(\"ace/mode/javascript_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/jsdoc_comment_highlight_rules\",\"ace/mode/text_highlight_rules\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar DocCommentHighlightRules = require(\"./jsdoc_comment_highlight_rules\").JsDocCommentHighlightRules;\nvar TextHighlightRules = require(\"./text_highlight_rules\").TextHighlightRules;\nvar identifierRe = \"[a-zA-Z\\\\$_\\u00a1-\\uffff][a-zA-Z\\\\d\\\\$_\\u00a1-\\uffff]*\";\nvar JavaScriptHighlightRules = function (options) {\n var keywordMapper = this.createKeywordMapper({\n \"variable.language\": \"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Symbol|\" + // Constructors\n \"Namespace|QName|XML|XMLList|\" + // E4X\n \"ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|\" +\n \"Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|\" +\n \"Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|\" + // Errors\n \"SyntaxError|TypeError|URIError|\" +\n \"decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|\" + // Non-constructor functions\n \"isNaN|parseFloat|parseInt|\" +\n \"JSON|Math|\" + // Other\n \"this|arguments|prototype|window|document\",\n \"keyword\": \"const|yield|import|get|set|async|await|\" +\n \"break|case|catch|continue|default|delete|do|else|finally|for|function|\" +\n \"if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|\" +\n \"__parent__|__count__|escape|unescape|with|__proto__|\" +\n \"class|enum|extends|super|export|implements|private|public|interface|package|protected|static|constructor\",\n \"storage.type\": \"const|let|var|function\",\n \"constant.language\": \"null|Infinity|NaN|undefined\",\n \"support.function\": \"alert\",\n \"constant.language.boolean\": \"true|false\"\n }, \"identifier\");\n var kwBeforeRe = \"case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void\";\n var escapedRe = \"\\\\\\\\(?:x[0-9a-fA-F]{2}|\" + // hex\n \"u[0-9a-fA-F]{4}|\" + // unicode\n \"u{[0-9a-fA-F]{1,6}}|\" + // es6 unicode\n \"[0-2][0-7]{0,2}|\" + // oct\n \"3[0-7][0-7]?|\" + // oct\n \"[4-7][0-7]?|\" + //oct\n \".)\";\n this.$rules = {\n \"no_regex\": [\n DocCommentHighlightRules.getStartRule(\"doc-start\"),\n comments(\"no_regex\"),\n {\n token: \"string\",\n regex: \"'(?=.)\",\n next: \"qstring\"\n }, {\n token: \"string\",\n regex: '\"(?=.)',\n next: \"qqstring\"\n }, {\n token: \"constant.numeric\",\n regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\\b/\n }, {\n token: \"constant.numeric\",\n regex: /(?:\\d\\d*(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+\\b)?/\n }, {\n token: [\n \"storage.type\", \"punctuation.operator\", \"support.function\",\n \"punctuation.operator\", \"entity.name.function\", \"text\", \"keyword.operator\"\n ],\n regex: \"(\" + identifierRe + \")(\\\\.)(prototype)(\\\\.)(\" + identifierRe + \")(\\\\s*)(=)\",\n next: \"function_arguments\"\n }, {\n token: [\n \"storage.type\", \"punctuation.operator\", \"entity.name.function\", \"text\",\n \"keyword.operator\", \"text\", \"storage.type\", \"text\", \"paren.lparen\"\n ],\n regex: \"(\" + identifierRe + \")(\\\\.)(\" + identifierRe + \")(\\\\s*)(=)(\\\\s*)(function\\\\*?)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token: [\n \"entity.name.function\", \"text\", \"keyword.operator\", \"text\", \"storage.type\",\n \"text\", \"paren.lparen\"\n ],\n regex: \"(\" + identifierRe + \")(\\\\s*)(=)(\\\\s*)(function\\\\*?)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token: [\n \"storage.type\", \"punctuation.operator\", \"entity.name.function\", \"text\",\n \"keyword.operator\", \"text\",\n \"storage.type\", \"text\", \"entity.name.function\", \"text\", \"paren.lparen\"\n ],\n regex: \"(\" + identifierRe + \")(\\\\.)(\" + identifierRe + \")(\\\\s*)(=)(\\\\s*)(function\\\\*?)(\\\\s+)(\\\\w+)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token: [\n \"storage.type\", \"text\", \"entity.name.function\", \"text\", \"paren.lparen\"\n ],\n regex: \"(function\\\\*?)(\\\\s+)(\" + identifierRe + \")(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token: [\n \"entity.name.function\", \"text\", \"punctuation.operator\",\n \"text\", \"storage.type\", \"text\", \"paren.lparen\"\n ],\n regex: \"(\" + identifierRe + \")(\\\\s*)(:)(\\\\s*)(function\\\\*?)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token: [\n \"text\", \"text\", \"storage.type\", \"text\", \"paren.lparen\"\n ],\n regex: \"(:)(\\\\s*)(function\\\\*?)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token: \"keyword\",\n regex: \"from(?=\\\\s*('|\\\"))\"\n }, {\n token: \"keyword\",\n regex: \"(?:\" + kwBeforeRe + \")\\\\b\",\n next: \"start\"\n }, {\n token: \"support.constant\",\n regex: /that\\b/\n }, {\n token: [\"storage.type\", \"punctuation.operator\", \"support.function.firebug\"],\n regex: /(console)(\\.)(warn|info|log|error|time|trace|timeEnd|assert)\\b/\n }, {\n token: keywordMapper,\n regex: identifierRe\n }, {\n token: \"punctuation.operator\",\n regex: /[.](?![.])/,\n next: \"property\"\n }, {\n token: \"storage.type\",\n regex: /=>/,\n next: \"start\"\n }, {\n token: \"keyword.operator\",\n regex: /--|\\+\\+|\\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\\|\\||\\?:|[!$%&*+\\-~\\/^]=?/,\n next: \"start\"\n }, {\n token: \"punctuation.operator\",\n regex: /[?:,;.]/,\n next: \"start\"\n }, {\n token: \"paren.lparen\",\n regex: /[\\[({]/,\n next: \"start\"\n }, {\n token: \"paren.rparen\",\n regex: /[\\])}]/\n }, {\n token: \"comment\",\n regex: /^#!.*$/\n }\n ],\n property: [{\n token: \"text\",\n regex: \"\\\\s+\"\n }, {\n token: [\n \"storage.type\", \"punctuation.operator\", \"entity.name.function\", \"text\",\n \"keyword.operator\", \"text\",\n \"storage.type\", \"text\", \"entity.name.function\", \"text\", \"paren.lparen\"\n ],\n regex: \"(\" + identifierRe + \")(\\\\.)(\" + identifierRe + \")(\\\\s*)(=)(\\\\s*)(function\\\\*?)(?:(\\\\s+)(\\\\w+))?(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token: \"punctuation.operator\",\n regex: /[.](?![.])/\n }, {\n token: \"support.function\",\n regex: /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|lter|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward|rEach)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\\b(?=\\()/\n }, {\n token: \"support.function.dom\",\n regex: /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\\b(?=\\()/\n }, {\n token: \"support.constant\",\n regex: /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\\b/\n }, {\n token: \"identifier\",\n regex: identifierRe\n }, {\n regex: \"\",\n token: \"empty\",\n next: \"no_regex\"\n }\n ],\n \"start\": [\n DocCommentHighlightRules.getStartRule(\"doc-start\"),\n comments(\"start\"),\n {\n token: \"string.regexp\",\n regex: \"\\\\/\",\n next: \"regex\"\n }, {\n token: \"text\",\n regex: \"\\\\s+|^$\",\n next: \"start\"\n }, {\n token: \"empty\",\n regex: \"\",\n next: \"no_regex\"\n }\n ],\n \"regex\": [\n {\n token: \"regexp.keyword.operator\",\n regex: \"\\\\\\\\(?:u[\\\\da-fA-F]{4}|x[\\\\da-fA-F]{2}|.)\"\n }, {\n token: \"string.regexp\",\n regex: \"/[sxngimy]*\",\n next: \"no_regex\"\n }, {\n token: \"invalid\",\n regex: /\\{\\d+\\b,?\\d*\\}[+*]|[+*$^?][+*]|[$^][?]|\\?{3,}/\n }, {\n token: \"constant.language.escape\",\n regex: /\\(\\?[:=!]|\\)|\\{\\d+\\b,?\\d*\\}|[+*]\\?|[()$^+*?.]/\n }, {\n token: \"constant.language.delimiter\",\n regex: /\\|/\n }, {\n token: \"constant.language.escape\",\n regex: /\\[\\^?/,\n next: \"regex_character_class\"\n }, {\n token: \"empty\",\n regex: \"$\",\n next: \"no_regex\"\n }, {\n defaultToken: \"string.regexp\"\n }\n ],\n \"regex_character_class\": [\n {\n token: \"regexp.charclass.keyword.operator\",\n regex: \"\\\\\\\\(?:u[\\\\da-fA-F]{4}|x[\\\\da-fA-F]{2}|.)\"\n }, {\n token: \"constant.language.escape\",\n regex: \"]\",\n next: \"regex\"\n }, {\n token: \"constant.language.escape\",\n regex: \"-\"\n }, {\n token: \"empty\",\n regex: \"$\",\n next: \"no_regex\"\n }, {\n defaultToken: \"string.regexp.charachterclass\"\n }\n ],\n \"default_parameter\": [\n {\n token: \"string\",\n regex: \"'(?=.)\",\n push: [\n {\n token: \"string\",\n regex: \"'|$\",\n next: \"pop\"\n }, {\n include: \"qstring\"\n }\n ]\n }, {\n token: \"string\",\n regex: '\"(?=.)',\n push: [\n {\n token: \"string\",\n regex: '\"|$',\n next: \"pop\"\n }, {\n include: \"qqstring\"\n }\n ]\n }, {\n token: \"constant.language\",\n regex: \"null|Infinity|NaN|undefined\"\n }, {\n token: \"constant.numeric\",\n regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\\b/\n }, {\n token: \"constant.numeric\",\n regex: /(?:\\d\\d*(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+\\b)?/\n }, {\n token: \"punctuation.operator\",\n regex: \",\",\n next: \"function_arguments\"\n }, {\n token: \"text\",\n regex: \"\\\\s+\"\n }, {\n token: \"punctuation.operator\",\n regex: \"$\"\n }, {\n token: \"empty\",\n regex: \"\",\n next: \"no_regex\"\n }\n ],\n \"function_arguments\": [\n comments(\"function_arguments\"),\n {\n token: \"variable.parameter\",\n regex: identifierRe\n }, {\n token: \"punctuation.operator\",\n regex: \",\"\n }, {\n token: \"text\",\n regex: \"\\\\s+\"\n }, {\n token: \"punctuation.operator\",\n regex: \"$\"\n }, {\n token: \"empty\",\n regex: \"\",\n next: \"no_regex\"\n }\n ],\n \"qqstring\": [\n {\n token: \"constant.language.escape\",\n regex: escapedRe\n }, {\n token: \"string\",\n regex: \"\\\\\\\\$\",\n consumeLineEnd: true\n }, {\n token: \"string\",\n regex: '\"|$',\n next: \"no_regex\"\n }, {\n defaultToken: \"string\"\n }\n ],\n \"qstring\": [\n {\n token: \"constant.language.escape\",\n regex: escapedRe\n }, {\n token: \"string\",\n regex: \"\\\\\\\\$\",\n consumeLineEnd: true\n }, {\n token: \"string\",\n regex: \"'|$\",\n next: \"no_regex\"\n }, {\n defaultToken: \"string\"\n }\n ]\n };\n if (!options || !options.noES6) {\n this.$rules.no_regex.unshift({\n regex: \"[{}]\", onMatch: function (val, state, stack) {\n this.next = val == \"{\" ? this.nextState : \"\";\n if (val == \"{\" && stack.length) {\n stack.unshift(\"start\", state);\n }\n else if (val == \"}\" && stack.length) {\n stack.shift();\n this.next = stack.shift();\n if (this.next.indexOf(\"string\") != -1 || this.next.indexOf(\"jsx\") != -1)\n return \"paren.quasi.end\";\n }\n return val == \"{\" ? \"paren.lparen\" : \"paren.rparen\";\n },\n nextState: \"start\"\n }, {\n token: \"string.quasi.start\",\n regex: /`/,\n push: [{\n token: \"constant.language.escape\",\n regex: escapedRe\n }, {\n token: \"paren.quasi.start\",\n regex: /\\${/,\n push: \"start\"\n }, {\n token: \"string.quasi.end\",\n regex: /`/,\n next: \"pop\"\n }, {\n defaultToken: \"string.quasi\"\n }]\n }, {\n token: [\"variable.parameter\", \"text\"],\n regex: \"(\" + identifierRe + \")(\\\\s*)(?=\\\\=>)\"\n }, {\n token: \"paren.lparen\",\n regex: \"(\\\\()(?=.+\\\\s*=>)\",\n next: \"function_arguments\"\n }, {\n token: \"variable.language\",\n regex: \"(?:(?:(?:Weak)?(?:Set|Map))|Promise)\\\\b\"\n });\n this.$rules[\"function_arguments\"].unshift({\n token: \"keyword.operator\",\n regex: \"=\",\n next: \"default_parameter\"\n }, {\n token: \"keyword.operator\",\n regex: \"\\\\.{3}\"\n });\n this.$rules[\"property\"].unshift({\n token: \"support.function\",\n regex: \"(findIndex|repeat|startsWith|endsWith|includes|isSafeInteger|trunc|cbrt|log2|log10|sign|then|catch|\"\n + \"finally|resolve|reject|race|any|all|allSettled|keys|entries|isInteger)\\\\b(?=\\\\()\"\n }, {\n token: \"constant.language\",\n regex: \"(?:MAX_SAFE_INTEGER|MIN_SAFE_INTEGER|EPSILON)\\\\b\"\n });\n if (!options || options.jsx != false)\n JSX.call(this);\n }\n this.embedRules(DocCommentHighlightRules, \"doc-\", [DocCommentHighlightRules.getEndRule(\"no_regex\")]);\n this.normalizeRules();\n};\noop.inherits(JavaScriptHighlightRules, TextHighlightRules);\nfunction JSX() {\n var tagRegex = identifierRe.replace(\"\\\\d\", \"\\\\d\\\\-\");\n var jsxTag = {\n onMatch: function (val, state, stack) {\n var offset = val.charAt(1) == \"/\" ? 2 : 1;\n if (offset == 1) {\n if (state != this.nextState)\n stack.unshift(this.next, this.nextState, 0);\n else\n stack.unshift(this.next);\n stack[2]++;\n }\n else if (offset == 2) {\n if (state == this.nextState) {\n stack[1]--;\n if (!stack[1] || stack[1] < 0) {\n stack.shift();\n stack.shift();\n }\n }\n }\n return [{\n type: \"meta.tag.punctuation.\" + (offset == 1 ? \"\" : \"end-\") + \"tag-open.xml\",\n value: val.slice(0, offset)\n }, {\n type: \"meta.tag.tag-name.xml\",\n value: val.substr(offset)\n }];\n },\n regex: \"\",\n onMatch: function (value, currentState, stack) {\n if (currentState == stack[0])\n stack.shift();\n if (value.length == 2) {\n if (stack[0] == this.nextState)\n stack[1]--;\n if (!stack[1] || stack[1] < 0) {\n stack.splice(0, 2);\n }\n }\n this.next = stack[0] || \"start\";\n return [{ type: this.token, value: value }];\n },\n nextState: \"jsx\"\n },\n jsxJsRule,\n comments(\"jsxAttributes\"),\n {\n token: \"entity.other.attribute-name.xml\",\n regex: tagRegex\n }, {\n token: \"keyword.operator.attribute-equals.xml\",\n regex: \"=\"\n }, {\n token: \"text.tag-whitespace.xml\",\n regex: \"\\\\s+\"\n }, {\n token: \"string.attribute-value.xml\",\n regex: \"'\",\n stateName: \"jsx_attr_q\",\n push: [\n { token: \"string.attribute-value.xml\", regex: \"'\", next: \"pop\" },\n { include: \"reference\" },\n { defaultToken: \"string.attribute-value.xml\" }\n ]\n }, {\n token: \"string.attribute-value.xml\",\n regex: '\"',\n stateName: \"jsx_attr_qq\",\n push: [\n { token: \"string.attribute-value.xml\", regex: '\"', next: \"pop\" },\n { include: \"reference\" },\n { defaultToken: \"string.attribute-value.xml\" }\n ]\n },\n jsxTag\n ];\n this.$rules.reference = [{\n token: \"constant.language.escape.reference.xml\",\n regex: \"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\\\.-]+;)\"\n }];\n}\nfunction comments(next) {\n return [\n {\n token: \"comment\",\n regex: /\\/\\*/,\n next: [\n DocCommentHighlightRules.getTagRule(),\n { token: \"comment\", regex: \"\\\\*\\\\/\", next: next || \"pop\" },\n { defaultToken: \"comment\", caseInsensitive: true }\n ]\n }, {\n token: \"comment\",\n regex: \"\\\\/\\\\/\",\n next: [\n DocCommentHighlightRules.getTagRule(),\n { token: \"comment\", regex: \"$|^\", next: next || \"pop\" },\n { defaultToken: \"comment\", caseInsensitive: true }\n ]\n }\n ];\n}\nexports.JavaScriptHighlightRules = JavaScriptHighlightRules;\n\n});\n\nace.define(\"ace/mode/matching_brace_outdent\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar Range = require(\"../range\").Range;\nvar MatchingBraceOutdent = function () { };\n(function () {\n this.checkOutdent = function (line, input) {\n if (!/^\\s+$/.test(line))\n return false;\n return /^\\s*\\}/.test(input);\n };\n this.autoOutdent = function (doc, row) {\n var line = doc.getLine(row);\n var match = line.match(/^(\\s*\\})/);\n if (!match)\n return 0;\n var column = match[1].length;\n var openBracePos = doc.findMatchingBracket({ row: row, column: column });\n if (!openBracePos || openBracePos.row == row)\n return 0;\n var indent = this.$getIndent(doc.getLine(openBracePos.row));\n doc.replace(new Range(row, 0, row, column - 1), indent);\n };\n this.$getIndent = function (line) {\n return line.match(/^\\s*/)[0];\n };\n}).call(MatchingBraceOutdent.prototype);\nexports.MatchingBraceOutdent = MatchingBraceOutdent;\n\n});\n\nace.define(\"ace/mode/folding/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/range\",\"ace/mode/folding/fold_mode\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../../lib/oop\");\nvar Range = require(\"../../range\").Range;\nvar BaseFoldMode = require(\"./fold_mode\").FoldMode;\nvar FoldMode = exports.FoldMode = function (commentRegex) {\n if (commentRegex) {\n this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.start));\n this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.end));\n }\n};\noop.inherits(FoldMode, BaseFoldMode);\n(function () {\n this.foldingStartMarker = /([\\{\\[\\(])[^\\}\\]\\)]*$|^\\s*(\\/\\*)/;\n this.foldingStopMarker = /^[^\\[\\{\\(]*([\\}\\]\\)])|^[\\s\\*]*(\\*\\/)/;\n this.singleLineBlockCommentRe = /^\\s*(\\/\\*).*\\*\\/\\s*$/;\n this.tripleStarBlockCommentRe = /^\\s*(\\/\\*\\*\\*).*\\*\\/\\s*$/;\n this.startRegionRe = /^\\s*(\\/\\*|\\/\\/)#?region\\b/;\n this._getFoldWidgetBase = this.getFoldWidget;\n this.getFoldWidget = function (session, foldStyle, row) {\n var line = session.getLine(row);\n if (this.singleLineBlockCommentRe.test(line)) {\n if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line))\n return \"\";\n }\n var fw = this._getFoldWidgetBase(session, foldStyle, row);\n if (!fw && this.startRegionRe.test(line))\n return \"start\"; // lineCommentRegionStart\n return fw;\n };\n this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) {\n var line = session.getLine(row);\n if (this.startRegionRe.test(line))\n return this.getCommentRegionBlock(session, line, row);\n var match = line.match(this.foldingStartMarker);\n if (match) {\n var i = match.index;\n if (match[1])\n return this.openingBracketBlock(session, match[1], row, i);\n var range = session.getCommentFoldRange(row, i + match[0].length, 1);\n if (range && !range.isMultiLine()) {\n if (forceMultiline) {\n range = this.getSectionRange(session, row);\n }\n else if (foldStyle != \"all\")\n range = null;\n }\n return range;\n }\n if (foldStyle === \"markbegin\")\n return;\n var match = line.match(this.foldingStopMarker);\n if (match) {\n var i = match.index + match[0].length;\n if (match[1])\n return this.closingBracketBlock(session, match[1], row, i);\n return session.getCommentFoldRange(row, i, -1);\n }\n };\n this.getSectionRange = function (session, row) {\n var line = session.getLine(row);\n var startIndent = line.search(/\\S/);\n var startRow = row;\n var startColumn = line.length;\n row = row + 1;\n var endRow = row;\n var maxRow = session.getLength();\n while (++row < maxRow) {\n line = session.getLine(row);\n var indent = line.search(/\\S/);\n if (indent === -1)\n continue;\n if (startIndent > indent)\n break;\n var subRange = this.getFoldWidgetRange(session, \"all\", row);\n if (subRange) {\n if (subRange.start.row <= startRow) {\n break;\n }\n else if (subRange.isMultiLine()) {\n row = subRange.end.row;\n }\n else if (startIndent == indent) {\n break;\n }\n }\n endRow = row;\n }\n return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);\n };\n this.getCommentRegionBlock = function (session, line, row) {\n var startColumn = line.search(/\\s*$/);\n var maxRow = session.getLength();\n var startRow = row;\n var re = /^\\s*(?:\\/\\*|\\/\\/|--)#?(end)?region\\b/;\n var depth = 1;\n while (++row < maxRow) {\n line = session.getLine(row);\n var m = re.exec(line);\n if (!m)\n continue;\n if (m[1])\n depth--;\n else\n depth++;\n if (!depth)\n break;\n }\n var endRow = row;\n if (endRow > startRow) {\n return new Range(startRow, startColumn, endRow, line.length);\n }\n };\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/javascript\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/javascript_highlight_rules\",\"ace/mode/matching_brace_outdent\",\"ace/worker/worker_client\",\"ace/mode/behaviour/cstyle\",\"ace/mode/folding/cstyle\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar TextMode = require(\"./text\").Mode;\nvar JavaScriptHighlightRules = require(\"./javascript_highlight_rules\").JavaScriptHighlightRules;\nvar MatchingBraceOutdent = require(\"./matching_brace_outdent\").MatchingBraceOutdent;\nvar WorkerClient = require(\"../worker/worker_client\").WorkerClient;\nvar CstyleBehaviour = require(\"./behaviour/cstyle\").CstyleBehaviour;\nvar CStyleFoldMode = require(\"./folding/cstyle\").FoldMode;\nvar Mode = function () {\n this.HighlightRules = JavaScriptHighlightRules;\n this.$outdent = new MatchingBraceOutdent();\n this.$behaviour = new CstyleBehaviour();\n this.foldingRules = new CStyleFoldMode();\n};\noop.inherits(Mode, TextMode);\n(function () {\n this.lineCommentStart = \"//\";\n this.blockComment = { start: \"/*\", end: \"*/\" };\n this.$quotes = { '\"': '\"', \"'\": \"'\", \"`\": \"`\" };\n this.$pairQuotesAfter = {\n \"`\": /\\w/\n };\n this.getNextLineIndent = function (state, line, tab) {\n var indent = this.$getIndent(line);\n var tokenizedLine = this.getTokenizer().getLineTokens(line, state);\n var tokens = tokenizedLine.tokens;\n var endState = tokenizedLine.state;\n if (tokens.length && tokens[tokens.length - 1].type == \"comment\") {\n return indent;\n }\n if (state == \"start\" || state == \"no_regex\") {\n var match = line.match(/^.*(?:\\bcase\\b.*:|[\\{\\(\\[])\\s*$/);\n if (match) {\n indent += tab;\n }\n }\n else if (state == \"doc-start\") {\n if (endState == \"start\" || endState == \"no_regex\") {\n return \"\";\n }\n var match = line.match(/^\\s*(\\/?)\\*/);\n if (match) {\n if (match[1]) {\n indent += \" \";\n }\n indent += \"* \";\n }\n }\n return indent;\n };\n this.checkOutdent = function (state, line, input) {\n return this.$outdent.checkOutdent(line, input);\n };\n this.autoOutdent = function (state, doc, row) {\n this.$outdent.autoOutdent(doc, row);\n };\n this.createWorker = function (session) {\n var worker = new WorkerClient([\"ace\"], \"ace/mode/javascript_worker\", \"JavaScriptWorker\");\n worker.attachToDocument(session.getDocument());\n worker.on(\"annotate\", function (results) {\n session.setAnnotations(results.data);\n });\n worker.on(\"terminate\", function () {\n session.clearAnnotations();\n });\n return worker;\n };\n this.$id = \"ace/mode/javascript\";\n this.snippetFileId = \"ace/snippets/javascript\";\n}).call(Mode.prototype);\nexports.Mode = Mode;\n\n}); (function() {\n ace.require([\"ace/mode/javascript\"], function(m) {\n if (typeof module == \"object\" && typeof exports == \"object\" && module) {\n module.exports = m;\n }\n });\n })();\n ","ace.define(\"ace/mode/json_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar TextHighlightRules = require(\"./text_highlight_rules\").TextHighlightRules;\nvar JsonHighlightRules = function () {\n this.$rules = {\n \"start\": [\n {\n token: \"variable\",\n regex: '[\"](?:(?:\\\\\\\\.)|(?:[^\"\\\\\\\\]))*?[\"]\\\\s*(?=:)'\n }, {\n token: \"string\",\n regex: '\"',\n next: \"string\"\n }, {\n token: \"constant.numeric\",\n regex: \"0[xX][0-9a-fA-F]+\\\\b\"\n }, {\n token: \"constant.numeric\",\n regex: \"[+-]?\\\\d+(?:(?:\\\\.\\\\d*)?(?:[eE][+-]?\\\\d+)?)?\\\\b\"\n }, {\n token: \"constant.language.boolean\",\n regex: \"(?:true|false)\\\\b\"\n }, {\n token: \"text\",\n regex: \"['](?:(?:\\\\\\\\.)|(?:[^'\\\\\\\\]))*?[']\"\n }, {\n token: \"comment\",\n regex: \"\\\\/\\\\/.*$\"\n }, {\n token: \"comment.start\",\n regex: \"\\\\/\\\\*\",\n next: \"comment\"\n }, {\n token: \"paren.lparen\",\n regex: \"[[({]\"\n }, {\n token: \"paren.rparen\",\n regex: \"[\\\\])}]\"\n }, {\n token: \"punctuation.operator\",\n regex: /[,]/\n }, {\n token: \"text\",\n regex: \"\\\\s+\"\n }\n ],\n \"string\": [\n {\n token: \"constant.language.escape\",\n regex: /\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|[\"\\\\\\/bfnrt])/\n }, {\n token: \"string\",\n regex: '\"|$',\n next: \"start\"\n }, {\n defaultToken: \"string\"\n }\n ],\n \"comment\": [\n {\n token: \"comment.end\",\n regex: \"\\\\*\\\\/\",\n next: \"start\"\n }, {\n defaultToken: \"comment\"\n }\n ]\n };\n};\noop.inherits(JsonHighlightRules, TextHighlightRules);\nexports.JsonHighlightRules = JsonHighlightRules;\n\n});\n\nace.define(\"ace/mode/matching_brace_outdent\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar Range = require(\"../range\").Range;\nvar MatchingBraceOutdent = function () { };\n(function () {\n this.checkOutdent = function (line, input) {\n if (!/^\\s+$/.test(line))\n return false;\n return /^\\s*\\}/.test(input);\n };\n this.autoOutdent = function (doc, row) {\n var line = doc.getLine(row);\n var match = line.match(/^(\\s*\\})/);\n if (!match)\n return 0;\n var column = match[1].length;\n var openBracePos = doc.findMatchingBracket({ row: row, column: column });\n if (!openBracePos || openBracePos.row == row)\n return 0;\n var indent = this.$getIndent(doc.getLine(openBracePos.row));\n doc.replace(new Range(row, 0, row, column - 1), indent);\n };\n this.$getIndent = function (line) {\n return line.match(/^\\s*/)[0];\n };\n}).call(MatchingBraceOutdent.prototype);\nexports.MatchingBraceOutdent = MatchingBraceOutdent;\n\n});\n\nace.define(\"ace/mode/folding/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/range\",\"ace/mode/folding/fold_mode\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../../lib/oop\");\nvar Range = require(\"../../range\").Range;\nvar BaseFoldMode = require(\"./fold_mode\").FoldMode;\nvar FoldMode = exports.FoldMode = function (commentRegex) {\n if (commentRegex) {\n this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.start));\n this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.end));\n }\n};\noop.inherits(FoldMode, BaseFoldMode);\n(function () {\n this.foldingStartMarker = /([\\{\\[\\(])[^\\}\\]\\)]*$|^\\s*(\\/\\*)/;\n this.foldingStopMarker = /^[^\\[\\{\\(]*([\\}\\]\\)])|^[\\s\\*]*(\\*\\/)/;\n this.singleLineBlockCommentRe = /^\\s*(\\/\\*).*\\*\\/\\s*$/;\n this.tripleStarBlockCommentRe = /^\\s*(\\/\\*\\*\\*).*\\*\\/\\s*$/;\n this.startRegionRe = /^\\s*(\\/\\*|\\/\\/)#?region\\b/;\n this._getFoldWidgetBase = this.getFoldWidget;\n this.getFoldWidget = function (session, foldStyle, row) {\n var line = session.getLine(row);\n if (this.singleLineBlockCommentRe.test(line)) {\n if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line))\n return \"\";\n }\n var fw = this._getFoldWidgetBase(session, foldStyle, row);\n if (!fw && this.startRegionRe.test(line))\n return \"start\"; // lineCommentRegionStart\n return fw;\n };\n this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) {\n var line = session.getLine(row);\n if (this.startRegionRe.test(line))\n return this.getCommentRegionBlock(session, line, row);\n var match = line.match(this.foldingStartMarker);\n if (match) {\n var i = match.index;\n if (match[1])\n return this.openingBracketBlock(session, match[1], row, i);\n var range = session.getCommentFoldRange(row, i + match[0].length, 1);\n if (range && !range.isMultiLine()) {\n if (forceMultiline) {\n range = this.getSectionRange(session, row);\n }\n else if (foldStyle != \"all\")\n range = null;\n }\n return range;\n }\n if (foldStyle === \"markbegin\")\n return;\n var match = line.match(this.foldingStopMarker);\n if (match) {\n var i = match.index + match[0].length;\n if (match[1])\n return this.closingBracketBlock(session, match[1], row, i);\n return session.getCommentFoldRange(row, i, -1);\n }\n };\n this.getSectionRange = function (session, row) {\n var line = session.getLine(row);\n var startIndent = line.search(/\\S/);\n var startRow = row;\n var startColumn = line.length;\n row = row + 1;\n var endRow = row;\n var maxRow = session.getLength();\n while (++row < maxRow) {\n line = session.getLine(row);\n var indent = line.search(/\\S/);\n if (indent === -1)\n continue;\n if (startIndent > indent)\n break;\n var subRange = this.getFoldWidgetRange(session, \"all\", row);\n if (subRange) {\n if (subRange.start.row <= startRow) {\n break;\n }\n else if (subRange.isMultiLine()) {\n row = subRange.end.row;\n }\n else if (startIndent == indent) {\n break;\n }\n }\n endRow = row;\n }\n return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);\n };\n this.getCommentRegionBlock = function (session, line, row) {\n var startColumn = line.search(/\\s*$/);\n var maxRow = session.getLength();\n var startRow = row;\n var re = /^\\s*(?:\\/\\*|\\/\\/|--)#?(end)?region\\b/;\n var depth = 1;\n while (++row < maxRow) {\n line = session.getLine(row);\n var m = re.exec(line);\n if (!m)\n continue;\n if (m[1])\n depth--;\n else\n depth++;\n if (!depth)\n break;\n }\n var endRow = row;\n if (endRow > startRow) {\n return new Range(startRow, startColumn, endRow, line.length);\n }\n };\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/json\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/json_highlight_rules\",\"ace/mode/matching_brace_outdent\",\"ace/mode/folding/cstyle\",\"ace/worker/worker_client\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar TextMode = require(\"./text\").Mode;\nvar HighlightRules = require(\"./json_highlight_rules\").JsonHighlightRules;\nvar MatchingBraceOutdent = require(\"./matching_brace_outdent\").MatchingBraceOutdent;\nvar CStyleFoldMode = require(\"./folding/cstyle\").FoldMode;\nvar WorkerClient = require(\"../worker/worker_client\").WorkerClient;\nvar Mode = function () {\n this.HighlightRules = HighlightRules;\n this.$outdent = new MatchingBraceOutdent();\n this.$behaviour = this.$defaultBehaviour;\n this.foldingRules = new CStyleFoldMode();\n};\noop.inherits(Mode, TextMode);\n(function () {\n this.lineCommentStart = \"//\";\n this.blockComment = { start: \"/*\", end: \"*/\" };\n this.getNextLineIndent = function (state, line, tab) {\n var indent = this.$getIndent(line);\n if (state == \"start\") {\n var match = line.match(/^.*[\\{\\(\\[]\\s*$/);\n if (match) {\n indent += tab;\n }\n }\n return indent;\n };\n this.checkOutdent = function (state, line, input) {\n return this.$outdent.checkOutdent(line, input);\n };\n this.autoOutdent = function (state, doc, row) {\n this.$outdent.autoOutdent(doc, row);\n };\n this.createWorker = function (session) {\n var worker = new WorkerClient([\"ace\"], \"ace/mode/json_worker\", \"JsonWorker\");\n worker.attachToDocument(session.getDocument());\n worker.on(\"annotate\", function (e) {\n session.setAnnotations(e.data);\n });\n worker.on(\"terminate\", function () {\n session.clearAnnotations();\n });\n return worker;\n };\n this.$id = \"ace/mode/json\";\n}).call(Mode.prototype);\nexports.Mode = Mode;\n\n}); (function() {\n ace.require([\"ace/mode/json\"], function(m) {\n if (typeof module == \"object\" && typeof exports == \"object\" && module) {\n module.exports = m;\n }\n });\n })();\n ","ace.define(\"ace/mode/doc_comment_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar TextHighlightRules = require(\"./text_highlight_rules\").TextHighlightRules;\nvar DocCommentHighlightRules = function () {\n this.$rules = {\n \"start\": [\n {\n token: \"comment.doc.tag\",\n regex: \"@\\\\w+(?=\\\\s|$)\"\n }, DocCommentHighlightRules.getTagRule(), {\n defaultToken: \"comment.doc\",\n caseInsensitive: true\n }\n ]\n };\n};\noop.inherits(DocCommentHighlightRules, TextHighlightRules);\nDocCommentHighlightRules.getTagRule = function (start) {\n return {\n token: \"comment.doc.tag.storage.type\",\n regex: \"\\\\b(?:TODO|FIXME|XXX|HACK)\\\\b\"\n };\n};\nDocCommentHighlightRules.getStartRule = function (start) {\n return {\n token: \"comment.doc\",\n regex: \"\\\\/\\\\*(?=\\\\*)\",\n next: start\n };\n};\nDocCommentHighlightRules.getEndRule = function (start) {\n return {\n token: \"comment.doc\",\n regex: \"\\\\*\\\\/\",\n next: start\n };\n};\nexports.DocCommentHighlightRules = DocCommentHighlightRules;\n\n});\n\nace.define(\"ace/mode/jsx_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/mode/doc_comment_highlight_rules\",\"ace/mode/text_highlight_rules\"], function(require, exports, module){var oop = require(\"../lib/oop\");\nvar lang = require(\"../lib/lang\");\nvar DocCommentHighlightRules = require(\"./doc_comment_highlight_rules\").DocCommentHighlightRules;\nvar TextHighlightRules = require(\"./text_highlight_rules\").TextHighlightRules;\nvar JsxHighlightRules = function () {\n var keywords = lang.arrayToMap((\"break|do|instanceof|typeof|case|else|new|var|catch|finally|return|void|continue|for|switch|default|while|function|this|\" +\n \"if|throw|\" +\n \"delete|in|try|\" +\n \"class|extends|super|import|from|into|implements|interface|static|mixin|override|abstract|final|\" +\n \"number|int|string|boolean|variant|\" +\n \"log|assert\").split(\"|\"));\n var buildinConstants = lang.arrayToMap((\"null|true|false|NaN|Infinity|__FILE__|__LINE__|undefined\").split(\"|\"));\n var reserved = lang.arrayToMap((\"debugger|with|\" +\n \"const|export|\" +\n \"let|private|public|yield|protected|\" +\n \"extern|native|as|operator|__fake__|__readonly__\").split(\"|\"));\n var identifierRe = \"[a-zA-Z_][a-zA-Z0-9_]*\\\\b\";\n this.$rules = {\n \"start\": [\n {\n token: \"comment\",\n regex: \"\\\\/\\\\/.*$\"\n },\n DocCommentHighlightRules.getStartRule(\"doc-start\"),\n {\n token: \"comment\",\n regex: \"\\\\/\\\\*\",\n next: \"comment\"\n }, {\n token: \"string.regexp\",\n regex: \"[/](?:(?:\\\\[(?:\\\\\\\\]|[^\\\\]])+\\\\])|(?:\\\\\\\\/|[^\\\\]/]))*[/]\\\\w*\\\\s*(?=[).,;]|$)\"\n }, {\n token: \"string\",\n regex: '[\"](?:(?:\\\\\\\\.)|(?:[^\"\\\\\\\\]))*?[\"]'\n }, {\n token: \"string\",\n regex: \"['](?:(?:\\\\\\\\.)|(?:[^'\\\\\\\\]))*?[']\"\n }, {\n token: \"constant.numeric\",\n regex: \"0[xX][0-9a-fA-F]+\\\\b\"\n }, {\n token: \"constant.numeric\",\n regex: \"[+-]?\\\\d+(?:(?:\\\\.\\\\d*)?(?:[eE][+-]?\\\\d+)?)?\\\\b\"\n }, {\n token: \"constant.language.boolean\",\n regex: \"(?:true|false)\\\\b\"\n }, {\n token: [\n \"storage.type\",\n \"text\",\n \"entity.name.function\"\n ],\n regex: \"(function)(\\\\s+)(\" + identifierRe + \")\"\n }, {\n token: function (value) {\n if (value == \"this\")\n return \"variable.language\";\n else if (value == \"function\")\n return \"storage.type\";\n else if (keywords.hasOwnProperty(value) || reserved.hasOwnProperty(value))\n return \"keyword\";\n else if (buildinConstants.hasOwnProperty(value))\n return \"constant.language\";\n else if (/^_?[A-Z][a-zA-Z0-9_]*$/.test(value))\n return \"language.support.class\";\n else\n return \"identifier\";\n },\n regex: identifierRe\n }, {\n token: \"keyword.operator\",\n regex: \"!|%|&|\\\\*|\\\\-\\\\-|\\\\-|\\\\+\\\\+|\\\\+|~|==|=|!=|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\\\|\\\\||\\\\?\\\\:|\\\\*=|%=|\\\\+=|\\\\-=|&=|\\\\^=|\\\\b(?:in|instanceof|new|delete|typeof|void)\"\n }, {\n token: \"punctuation.operator\",\n regex: \"\\\\?|\\\\:|\\\\,|\\\\;|\\\\.\"\n }, {\n token: \"paren.lparen\",\n regex: \"[[({<]\"\n }, {\n token: \"paren.rparen\",\n regex: \"[\\\\])}>]\"\n }, {\n token: \"text\",\n regex: \"\\\\s+\"\n }\n ],\n \"comment\": [\n {\n token: \"comment\",\n regex: \"\\\\*\\\\/\",\n next: \"start\"\n }, {\n defaultToken: \"comment\"\n }\n ]\n };\n this.embedRules(DocCommentHighlightRules, \"doc-\", [DocCommentHighlightRules.getEndRule(\"start\")]);\n};\noop.inherits(JsxHighlightRules, TextHighlightRules);\nexports.JsxHighlightRules = JsxHighlightRules;\n\n});\n\nace.define(\"ace/mode/matching_brace_outdent\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar Range = require(\"../range\").Range;\nvar MatchingBraceOutdent = function () { };\n(function () {\n this.checkOutdent = function (line, input) {\n if (!/^\\s+$/.test(line))\n return false;\n return /^\\s*\\}/.test(input);\n };\n this.autoOutdent = function (doc, row) {\n var line = doc.getLine(row);\n var match = line.match(/^(\\s*\\})/);\n if (!match)\n return 0;\n var column = match[1].length;\n var openBracePos = doc.findMatchingBracket({ row: row, column: column });\n if (!openBracePos || openBracePos.row == row)\n return 0;\n var indent = this.$getIndent(doc.getLine(openBracePos.row));\n doc.replace(new Range(row, 0, row, column - 1), indent);\n };\n this.$getIndent = function (line) {\n return line.match(/^\\s*/)[0];\n };\n}).call(MatchingBraceOutdent.prototype);\nexports.MatchingBraceOutdent = MatchingBraceOutdent;\n\n});\n\nace.define(\"ace/mode/folding/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/range\",\"ace/mode/folding/fold_mode\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../../lib/oop\");\nvar Range = require(\"../../range\").Range;\nvar BaseFoldMode = require(\"./fold_mode\").FoldMode;\nvar FoldMode = exports.FoldMode = function (commentRegex) {\n if (commentRegex) {\n this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.start));\n this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.end));\n }\n};\noop.inherits(FoldMode, BaseFoldMode);\n(function () {\n this.foldingStartMarker = /([\\{\\[\\(])[^\\}\\]\\)]*$|^\\s*(\\/\\*)/;\n this.foldingStopMarker = /^[^\\[\\{\\(]*([\\}\\]\\)])|^[\\s\\*]*(\\*\\/)/;\n this.singleLineBlockCommentRe = /^\\s*(\\/\\*).*\\*\\/\\s*$/;\n this.tripleStarBlockCommentRe = /^\\s*(\\/\\*\\*\\*).*\\*\\/\\s*$/;\n this.startRegionRe = /^\\s*(\\/\\*|\\/\\/)#?region\\b/;\n this._getFoldWidgetBase = this.getFoldWidget;\n this.getFoldWidget = function (session, foldStyle, row) {\n var line = session.getLine(row);\n if (this.singleLineBlockCommentRe.test(line)) {\n if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line))\n return \"\";\n }\n var fw = this._getFoldWidgetBase(session, foldStyle, row);\n if (!fw && this.startRegionRe.test(line))\n return \"start\"; // lineCommentRegionStart\n return fw;\n };\n this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) {\n var line = session.getLine(row);\n if (this.startRegionRe.test(line))\n return this.getCommentRegionBlock(session, line, row);\n var match = line.match(this.foldingStartMarker);\n if (match) {\n var i = match.index;\n if (match[1])\n return this.openingBracketBlock(session, match[1], row, i);\n var range = session.getCommentFoldRange(row, i + match[0].length, 1);\n if (range && !range.isMultiLine()) {\n if (forceMultiline) {\n range = this.getSectionRange(session, row);\n }\n else if (foldStyle != \"all\")\n range = null;\n }\n return range;\n }\n if (foldStyle === \"markbegin\")\n return;\n var match = line.match(this.foldingStopMarker);\n if (match) {\n var i = match.index + match[0].length;\n if (match[1])\n return this.closingBracketBlock(session, match[1], row, i);\n return session.getCommentFoldRange(row, i, -1);\n }\n };\n this.getSectionRange = function (session, row) {\n var line = session.getLine(row);\n var startIndent = line.search(/\\S/);\n var startRow = row;\n var startColumn = line.length;\n row = row + 1;\n var endRow = row;\n var maxRow = session.getLength();\n while (++row < maxRow) {\n line = session.getLine(row);\n var indent = line.search(/\\S/);\n if (indent === -1)\n continue;\n if (startIndent > indent)\n break;\n var subRange = this.getFoldWidgetRange(session, \"all\", row);\n if (subRange) {\n if (subRange.start.row <= startRow) {\n break;\n }\n else if (subRange.isMultiLine()) {\n row = subRange.end.row;\n }\n else if (startIndent == indent) {\n break;\n }\n }\n endRow = row;\n }\n return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);\n };\n this.getCommentRegionBlock = function (session, line, row) {\n var startColumn = line.search(/\\s*$/);\n var maxRow = session.getLength();\n var startRow = row;\n var re = /^\\s*(?:\\/\\*|\\/\\/|--)#?(end)?region\\b/;\n var depth = 1;\n while (++row < maxRow) {\n line = session.getLine(row);\n var m = re.exec(line);\n if (!m)\n continue;\n if (m[1])\n depth--;\n else\n depth++;\n if (!depth)\n break;\n }\n var endRow = row;\n if (endRow > startRow) {\n return new Range(startRow, startColumn, endRow, line.length);\n }\n };\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/jsx\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/jsx_highlight_rules\",\"ace/mode/matching_brace_outdent\",\"ace/mode/folding/cstyle\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar TextMode = require(\"./text\").Mode;\nvar JsxHighlightRules = require(\"./jsx_highlight_rules\").JsxHighlightRules;\nvar MatchingBraceOutdent = require(\"./matching_brace_outdent\").MatchingBraceOutdent;\nvar CStyleFoldMode = require(\"./folding/cstyle\").FoldMode;\nfunction Mode() {\n this.HighlightRules = JsxHighlightRules;\n this.$outdent = new MatchingBraceOutdent();\n this.$behaviour = this.$defaultBehaviour;\n this.foldingRules = new CStyleFoldMode();\n}\noop.inherits(Mode, TextMode);\n(function () {\n this.lineCommentStart = \"//\";\n this.blockComment = { start: \"/*\", end: \"*/\" };\n this.getNextLineIndent = function (state, line, tab) {\n var indent = this.$getIndent(line);\n var tokenizedLine = this.getTokenizer().getLineTokens(line, state);\n var tokens = tokenizedLine.tokens;\n if (tokens.length && tokens[tokens.length - 1].type == \"comment\") {\n return indent;\n }\n if (state == \"start\") {\n var match = line.match(/^.*[\\{\\(\\[]\\s*$/);\n if (match) {\n indent += tab;\n }\n }\n return indent;\n };\n this.checkOutdent = function (state, line, input) {\n return this.$outdent.checkOutdent(line, input);\n };\n this.autoOutdent = function (state, doc, row) {\n this.$outdent.autoOutdent(doc, row);\n };\n this.$id = \"ace/mode/jsx\";\n}).call(Mode.prototype);\nexports.Mode = Mode;\n\n}); (function() {\n ace.require([\"ace/mode/jsx\"], function(m) {\n if (typeof module == \"object\" && typeof exports == \"object\" && module) {\n module.exports = m;\n }\n });\n })();\n ","ace.define(\"ace/mode/python_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(require, exports, module){/*\n * TODO: python delimiters\n */\n\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar TextHighlightRules = require(\"./text_highlight_rules\").TextHighlightRules;\nvar PythonHighlightRules = function () {\n var keywords = (\"and|as|assert|break|class|continue|def|del|elif|else|except|exec|\" +\n \"finally|for|from|global|if|import|in|is|lambda|not|or|pass|print|\" +\n \"raise|return|try|while|with|yield|async|await|nonlocal\");\n var builtinConstants = (\"True|False|None|NotImplemented|Ellipsis|__debug__\");\n var builtinFunctions = (\"abs|divmod|input|open|staticmethod|all|enumerate|int|ord|str|any|\" +\n \"eval|isinstance|pow|sum|basestring|execfile|issubclass|print|super|\" +\n \"binfile|bin|iter|property|tuple|bool|filter|len|range|type|bytearray|\" +\n \"float|list|raw_input|unichr|callable|format|locals|reduce|unicode|\" +\n \"chr|frozenset|long|reload|vars|classmethod|getattr|map|repr|xrange|\" +\n \"cmp|globals|max|reversed|zip|compile|hasattr|memoryview|round|\" +\n \"__import__|complex|hash|min|apply|delattr|help|next|setattr|set|\" +\n \"buffer|dict|hex|object|slice|coerce|dir|id|oct|sorted|intern|\" +\n \"ascii|breakpoint|bytes\");\n var keywordMapper = this.createKeywordMapper({\n \"invalid.deprecated\": \"debugger\",\n \"support.function\": builtinFunctions,\n \"variable.language\": \"self|cls\",\n \"constant.language\": builtinConstants,\n \"keyword\": keywords\n }, \"identifier\");\n var strPre = \"[uU]?\";\n var strRawPre = \"[rR]\";\n var strFormatPre = \"[fF]\";\n var strRawFormatPre = \"(?:[rR][fF]|[fF][rR])\";\n var decimalInteger = \"(?:(?:[1-9]\\\\d*)|(?:0))\";\n var octInteger = \"(?:0[oO]?[0-7]+)\";\n var hexInteger = \"(?:0[xX][\\\\dA-Fa-f]+)\";\n var binInteger = \"(?:0[bB][01]+)\";\n var integer = \"(?:\" + decimalInteger + \"|\" + octInteger + \"|\" + hexInteger + \"|\" + binInteger + \")\";\n var exponent = \"(?:[eE][+-]?\\\\d+)\";\n var fraction = \"(?:\\\\.\\\\d+)\";\n var intPart = \"(?:\\\\d+)\";\n var pointFloat = \"(?:(?:\" + intPart + \"?\" + fraction + \")|(?:\" + intPart + \"\\\\.))\";\n var exponentFloat = \"(?:(?:\" + pointFloat + \"|\" + intPart + \")\" + exponent + \")\";\n var floatNumber = \"(?:\" + exponentFloat + \"|\" + pointFloat + \")\";\n var stringEscape = \"\\\\\\\\(x[0-9A-Fa-f]{2}|[0-7]{3}|[\\\\\\\\abfnrtv'\\\"]|U[0-9A-Fa-f]{8}|u[0-9A-Fa-f]{4})\";\n this.$rules = {\n \"start\": [{\n token: \"comment\",\n regex: \"#.*$\"\n }, {\n token: \"string\",\n regex: strPre + '\"{3}',\n next: \"qqstring3\"\n }, {\n token: \"string\",\n regex: strPre + '\"(?=.)',\n next: \"qqstring\"\n }, {\n token: \"string\",\n regex: strPre + \"'{3}\",\n next: \"qstring3\"\n }, {\n token: \"string\",\n regex: strPre + \"'(?=.)\",\n next: \"qstring\"\n }, {\n token: \"string\",\n regex: strRawPre + '\"{3}',\n next: \"rawqqstring3\"\n }, {\n token: \"string\",\n regex: strRawPre + '\"(?=.)',\n next: \"rawqqstring\"\n }, {\n token: \"string\",\n regex: strRawPre + \"'{3}\",\n next: \"rawqstring3\"\n }, {\n token: \"string\",\n regex: strRawPre + \"'(?=.)\",\n next: \"rawqstring\"\n }, {\n token: \"string\",\n regex: strFormatPre + '\"{3}',\n next: \"fqqstring3\"\n }, {\n token: \"string\",\n regex: strFormatPre + '\"(?=.)',\n next: \"fqqstring\"\n }, {\n token: \"string\",\n regex: strFormatPre + \"'{3}\",\n next: \"fqstring3\"\n }, {\n token: \"string\",\n regex: strFormatPre + \"'(?=.)\",\n next: \"fqstring\"\n }, {\n token: \"string\",\n regex: strRawFormatPre + '\"{3}',\n next: \"rfqqstring3\"\n }, {\n token: \"string\",\n regex: strRawFormatPre + '\"(?=.)',\n next: \"rfqqstring\"\n }, {\n token: \"string\",\n regex: strRawFormatPre + \"'{3}\",\n next: \"rfqstring3\"\n }, {\n token: \"string\",\n regex: strRawFormatPre + \"'(?=.)\",\n next: \"rfqstring\"\n }, {\n token: \"keyword.operator\",\n regex: \"\\\\+|\\\\-|\\\\*|\\\\*\\\\*|\\\\/|\\\\/\\\\/|%|@|<<|>>|&|\\\\||\\\\^|~|<|>|<=|=>|==|!=|<>|=\"\n }, {\n token: \"punctuation\",\n regex: \",|:|;|\\\\->|\\\\+=|\\\\-=|\\\\*=|\\\\/=|\\\\/\\\\/=|%=|@=|&=|\\\\|=|^=|>>=|<<=|\\\\*\\\\*=\"\n }, {\n token: \"paren.lparen\",\n regex: \"[\\\\[\\\\(\\\\{]\"\n }, {\n token: \"paren.rparen\",\n regex: \"[\\\\]\\\\)\\\\}]\"\n }, {\n token: [\"keyword\", \"text\", \"entity.name.function\"],\n regex: \"(def|class)(\\\\s+)([\\\\u00BF-\\\\u1FFF\\\\u2C00-\\\\uD7FF\\\\w]+)\"\n }, {\n token: \"text\",\n regex: \"\\\\s+\"\n }, {\n include: \"constants\"\n }],\n \"qqstring3\": [{\n token: \"constant.language.escape\",\n regex: stringEscape\n }, {\n token: \"string\",\n regex: '\"{3}',\n next: \"start\"\n }, {\n defaultToken: \"string\"\n }],\n \"qstring3\": [{\n token: \"constant.language.escape\",\n regex: stringEscape\n }, {\n token: \"string\",\n regex: \"'{3}\",\n next: \"start\"\n }, {\n defaultToken: \"string\"\n }],\n \"qqstring\": [{\n token: \"constant.language.escape\",\n regex: stringEscape\n }, {\n token: \"string\",\n regex: \"\\\\\\\\$\",\n next: \"qqstring\"\n }, {\n token: \"string\",\n regex: '\"|$',\n next: \"start\"\n }, {\n defaultToken: \"string\"\n }],\n \"qstring\": [{\n token: \"constant.language.escape\",\n regex: stringEscape\n }, {\n token: \"string\",\n regex: \"\\\\\\\\$\",\n next: \"qstring\"\n }, {\n token: \"string\",\n regex: \"'|$\",\n next: \"start\"\n }, {\n defaultToken: \"string\"\n }],\n \"rawqqstring3\": [{\n token: \"string\",\n regex: '\"{3}',\n next: \"start\"\n }, {\n defaultToken: \"string\"\n }],\n \"rawqstring3\": [{\n token: \"string\",\n regex: \"'{3}\",\n next: \"start\"\n }, {\n defaultToken: \"string\"\n }],\n \"rawqqstring\": [{\n token: \"string\",\n regex: \"\\\\\\\\$\",\n next: \"rawqqstring\"\n }, {\n token: \"string\",\n regex: '\"|$',\n next: \"start\"\n }, {\n defaultToken: \"string\"\n }],\n \"rawqstring\": [{\n token: \"string\",\n regex: \"\\\\\\\\$\",\n next: \"rawqstring\"\n }, {\n token: \"string\",\n regex: \"'|$\",\n next: \"start\"\n }, {\n defaultToken: \"string\"\n }],\n \"fqqstring3\": [{\n token: \"constant.language.escape\",\n regex: stringEscape\n }, {\n token: \"string\",\n regex: '\"{3}',\n next: \"start\"\n }, {\n token: \"paren.lparen\",\n regex: \"{\",\n push: \"fqstringParRules\"\n }, {\n defaultToken: \"string\"\n }],\n \"fqstring3\": [{\n token: \"constant.language.escape\",\n regex: stringEscape\n }, {\n token: \"string\",\n regex: \"'{3}\",\n next: \"start\"\n }, {\n token: \"paren.lparen\",\n regex: \"{\",\n push: \"fqstringParRules\"\n }, {\n defaultToken: \"string\"\n }],\n \"fqqstring\": [{\n token: \"constant.language.escape\",\n regex: stringEscape\n }, {\n token: \"string\",\n regex: \"\\\\\\\\$\",\n next: \"fqqstring\"\n }, {\n token: \"string\",\n regex: '\"|$',\n next: \"start\"\n }, {\n token: \"paren.lparen\",\n regex: \"{\",\n push: \"fqstringParRules\"\n }, {\n defaultToken: \"string\"\n }],\n \"fqstring\": [{\n token: \"constant.language.escape\",\n regex: stringEscape\n }, {\n token: \"string\",\n regex: \"'|$\",\n next: \"start\"\n }, {\n token: \"paren.lparen\",\n regex: \"{\",\n push: \"fqstringParRules\"\n }, {\n defaultToken: \"string\"\n }],\n \"rfqqstring3\": [{\n token: \"string\",\n regex: '\"{3}',\n next: \"start\"\n }, {\n token: \"paren.lparen\",\n regex: \"{\",\n push: \"fqstringParRules\"\n }, {\n defaultToken: \"string\"\n }],\n \"rfqstring3\": [{\n token: \"string\",\n regex: \"'{3}\",\n next: \"start\"\n }, {\n token: \"paren.lparen\",\n regex: \"{\",\n push: \"fqstringParRules\"\n }, {\n defaultToken: \"string\"\n }],\n \"rfqqstring\": [{\n token: \"string\",\n regex: \"\\\\\\\\$\",\n next: \"rfqqstring\"\n }, {\n token: \"string\",\n regex: '\"|$',\n next: \"start\"\n }, {\n token: \"paren.lparen\",\n regex: \"{\",\n push: \"fqstringParRules\"\n }, {\n defaultToken: \"string\"\n }],\n \"rfqstring\": [{\n token: \"string\",\n regex: \"'|$\",\n next: \"start\"\n }, {\n token: \"paren.lparen\",\n regex: \"{\",\n push: \"fqstringParRules\"\n }, {\n defaultToken: \"string\"\n }],\n \"fqstringParRules\": [{\n token: \"paren.lparen\",\n regex: \"[\\\\[\\\\(]\"\n }, {\n token: \"paren.rparen\",\n regex: \"[\\\\]\\\\)]\"\n }, {\n token: \"string\",\n regex: \"\\\\s+\"\n }, {\n token: \"string\",\n regex: \"'[^']*'\"\n }, {\n token: \"string\",\n regex: '\"[^\"]*\"'\n }, {\n token: \"function.support\",\n regex: \"(!s|!r|!a)\"\n }, {\n include: \"constants\"\n }, {\n token: 'paren.rparen',\n regex: \"}\",\n next: 'pop'\n }, {\n token: 'paren.lparen',\n regex: \"{\",\n push: \"fqstringParRules\"\n }],\n \"constants\": [{\n token: \"constant.numeric\",\n regex: \"(?:\" + floatNumber + \"|\\\\d+)[jJ]\\\\b\"\n }, {\n token: \"constant.numeric\",\n regex: floatNumber\n }, {\n token: \"constant.numeric\",\n regex: integer + \"[lL]\\\\b\"\n }, {\n token: \"constant.numeric\",\n regex: integer + \"\\\\b\"\n }, {\n token: [\"punctuation\", \"function.support\"],\n regex: \"(\\\\.)([a-zA-Z_]+)\\\\b\"\n }, {\n token: keywordMapper,\n regex: \"[a-zA-Z_$][a-zA-Z0-9_$]*\\\\b\"\n }]\n };\n this.normalizeRules();\n};\noop.inherits(PythonHighlightRules, TextHighlightRules);\nexports.PythonHighlightRules = PythonHighlightRules;\n\n});\n\nace.define(\"ace/mode/folding/pythonic\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/folding/fold_mode\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../../lib/oop\");\nvar BaseFoldMode = require(\"./fold_mode\").FoldMode;\nvar FoldMode = exports.FoldMode = function (markers) {\n this.foldingStartMarker = new RegExp(\"([\\\\[{])(?:\\\\s*)$|(\" + markers + \")(?:\\\\s*)(?:#.*)?$\");\n};\noop.inherits(FoldMode, BaseFoldMode);\n(function () {\n this.getFoldWidgetRange = function (session, foldStyle, row) {\n var line = session.getLine(row);\n var match = line.match(this.foldingStartMarker);\n if (match) {\n if (match[1])\n return this.openingBracketBlock(session, match[1], row, match.index);\n if (match[2])\n return this.indentationBlock(session, row, match.index + match[2].length);\n return this.indentationBlock(session, row);\n }\n };\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/python\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/python_highlight_rules\",\"ace/mode/folding/pythonic\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar TextMode = require(\"./text\").Mode;\nvar PythonHighlightRules = require(\"./python_highlight_rules\").PythonHighlightRules;\nvar PythonFoldMode = require(\"./folding/pythonic\").FoldMode;\nvar Range = require(\"../range\").Range;\nvar Mode = function () {\n this.HighlightRules = PythonHighlightRules;\n this.foldingRules = new PythonFoldMode(\"\\\\:\");\n this.$behaviour = this.$defaultBehaviour;\n};\noop.inherits(Mode, TextMode);\n(function () {\n this.lineCommentStart = \"#\";\n this.$pairQuotesAfter = {\n \"'\": /[ruf]/i,\n '\"': /[ruf]/i\n };\n this.getNextLineIndent = function (state, line, tab) {\n var indent = this.$getIndent(line);\n var tokenizedLine = this.getTokenizer().getLineTokens(line, state);\n var tokens = tokenizedLine.tokens;\n if (tokens.length && tokens[tokens.length - 1].type == \"comment\") {\n return indent;\n }\n if (state == \"start\") {\n var match = line.match(/^.*[\\{\\(\\[:]\\s*$/);\n if (match) {\n indent += tab;\n }\n }\n return indent;\n };\n var outdents = {\n \"pass\": 1,\n \"return\": 1,\n \"raise\": 1,\n \"break\": 1,\n \"continue\": 1\n };\n this.checkOutdent = function (state, line, input) {\n if (input !== \"\\r\\n\" && input !== \"\\r\" && input !== \"\\n\")\n return false;\n var tokens = this.getTokenizer().getLineTokens(line.trim(), state).tokens;\n if (!tokens)\n return false;\n do {\n var last = tokens.pop();\n } while (last && (last.type == \"comment\" || (last.type == \"text\" && last.value.match(/^\\s+$/))));\n if (!last)\n return false;\n return (last.type == \"keyword\" && outdents[last.value]);\n };\n this.autoOutdent = function (state, doc, row) {\n row += 1;\n var indent = this.$getIndent(doc.getLine(row));\n var tab = doc.getTabString();\n if (indent.slice(-tab.length) == tab)\n doc.remove(new Range(row, indent.length - tab.length, row, indent.length));\n };\n this.$id = \"ace/mode/python\";\n this.snippetFileId = \"ace/snippets/python\";\n}).call(Mode.prototype);\nexports.Mode = Mode;\n\n}); (function() {\n ace.require([\"ace/mode/python\"], function(m) {\n if (typeof module == \"object\" && typeof exports == \"object\" && module) {\n module.exports = m;\n }\n });\n })();\n ","ace.define(\"ace/mode/xml_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar TextHighlightRules = require(\"./text_highlight_rules\").TextHighlightRules;\nvar XmlHighlightRules = function (normalize) {\n var tagRegex = \"[_:a-zA-Z\\xc0-\\uffff][-_:.a-zA-Z0-9\\xc0-\\uffff]*\";\n this.$rules = {\n start: [\n { token: \"string.cdata.xml\", regex: \"<\\\\!\\\\[CDATA\\\\[\", next: \"cdata\" },\n {\n token: [\"punctuation.instruction.xml\", \"keyword.instruction.xml\"],\n regex: \"(<\\\\?)(\" + tagRegex + \")\", next: \"processing_instruction\"\n },\n { token: \"comment.start.xml\", regex: \"<\\\\!--\", next: \"comment\" },\n {\n token: [\"xml-pe.doctype.xml\", \"xml-pe.doctype.xml\"],\n regex: \"(<\\\\!)(DOCTYPE)(?=[\\\\s])\", next: \"doctype\", caseInsensitive: true\n },\n { include: \"tag\" },\n { token: \"text.end-tag-open.xml\", regex: \"\",\n next: \"start\"\n }],\n doctype: [\n { include: \"whitespace\" },\n { include: \"string\" },\n { token: \"xml-pe.doctype.xml\", regex: \">\", next: \"start\" },\n { token: \"xml-pe.xml\", regex: \"[-_a-zA-Z0-9:]+\" },\n { token: \"punctuation.int-subset\", regex: \"\\\\[\", push: \"int_subset\" }\n ],\n int_subset: [{\n token: \"text.xml\",\n regex: \"\\\\s+\"\n }, {\n token: \"punctuation.int-subset.xml\",\n regex: \"]\",\n next: \"pop\"\n }, {\n token: [\"punctuation.markup-decl.xml\", \"keyword.markup-decl.xml\"],\n regex: \"(<\\\\!)(\" + tagRegex + \")\",\n push: [{\n token: \"text\",\n regex: \"\\\\s+\"\n },\n {\n token: \"punctuation.markup-decl.xml\",\n regex: \">\",\n next: \"pop\"\n },\n { include: \"string\" }]\n }],\n cdata: [\n { token: \"string.cdata.xml\", regex: \"\\\\]\\\\]>\", next: \"start\" },\n { token: \"text.xml\", regex: \"\\\\s+\" },\n { token: \"text.xml\", regex: \"(?:[^\\\\]]|\\\\](?!\\\\]>))+\" }\n ],\n comment: [\n { token: \"comment.end.xml\", regex: \"-->\", next: \"start\" },\n { defaultToken: \"comment.xml\" }\n ],\n reference: [{\n token: \"constant.language.escape.reference.xml\",\n regex: \"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\\\.-]+;)\"\n }],\n attr_reference: [{\n token: \"constant.language.escape.reference.attribute-value.xml\",\n regex: \"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\\\.-]+;)\"\n }],\n tag: [{\n token: [\"meta.tag.punctuation.tag-open.xml\", \"meta.tag.punctuation.end-tag-open.xml\", \"meta.tag.tag-name.xml\"],\n regex: \"(?:(<)|(\", next: \"start\" }\n ]\n }],\n tag_whitespace: [\n { token: \"text.tag-whitespace.xml\", regex: \"\\\\s+\" }\n ],\n whitespace: [\n { token: \"text.whitespace.xml\", regex: \"\\\\s+\" }\n ],\n string: [{\n token: \"string.xml\",\n regex: \"'\",\n push: [\n { token: \"string.xml\", regex: \"'\", next: \"pop\" },\n { defaultToken: \"string.xml\" }\n ]\n }, {\n token: \"string.xml\",\n regex: '\"',\n push: [\n { token: \"string.xml\", regex: '\"', next: \"pop\" },\n { defaultToken: \"string.xml\" }\n ]\n }],\n attributes: [{\n token: \"entity.other.attribute-name.xml\",\n regex: tagRegex\n }, {\n token: \"keyword.operator.attribute-equals.xml\",\n regex: \"=\"\n }, {\n include: \"tag_whitespace\"\n }, {\n include: \"attribute_value\"\n }],\n attribute_value: [{\n token: \"string.attribute-value.xml\",\n regex: \"'\",\n push: [\n { token: \"string.attribute-value.xml\", regex: \"'\", next: \"pop\" },\n { include: \"attr_reference\" },\n { defaultToken: \"string.attribute-value.xml\" }\n ]\n }, {\n token: \"string.attribute-value.xml\",\n regex: '\"',\n push: [\n { token: \"string.attribute-value.xml\", regex: '\"', next: \"pop\" },\n { include: \"attr_reference\" },\n { defaultToken: \"string.attribute-value.xml\" }\n ]\n }]\n };\n if (this.constructor === XmlHighlightRules)\n this.normalizeRules();\n};\n(function () {\n this.embedTagRules = function (HighlightRules, prefix, tag) {\n this.$rules.tag.unshift({\n token: [\"meta.tag.punctuation.tag-open.xml\", \"meta.tag.\" + tag + \".tag-name.xml\"],\n regex: \"(<)(\" + tag + \"(?=\\\\s|>|$))\",\n next: [\n { include: \"attributes\" },\n { token: \"meta.tag.punctuation.tag-close.xml\", regex: \"/?>\", next: prefix + \"start\" }\n ]\n });\n this.$rules[tag + \"-end\"] = [\n { include: \"attributes\" },\n { token: \"meta.tag.punctuation.tag-close.xml\", regex: \"/?>\", next: \"start\",\n onMatch: function (value, currentState, stack) {\n stack.splice(0);\n return this.token;\n } }\n ];\n this.embedRules(HighlightRules, prefix, [{\n token: [\"meta.tag.punctuation.end-tag-open.xml\", \"meta.tag.\" + tag + \".tag-name.xml\"],\n regex: \"(|$))\",\n next: tag + \"-end\"\n }, {\n token: \"string.cdata.xml\",\n regex: \"<\\\\!\\\\[CDATA\\\\[\"\n }, {\n token: \"string.cdata.xml\",\n regex: \"\\\\]\\\\]>\"\n }]);\n };\n}).call(TextHighlightRules.prototype);\noop.inherits(XmlHighlightRules, TextHighlightRules);\nexports.XmlHighlightRules = XmlHighlightRules;\n\n});\n\nace.define(\"ace/mode/behaviour/xml\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/behaviour\",\"ace/token_iterator\",\"ace/lib/lang\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../../lib/oop\");\nvar Behaviour = require(\"../behaviour\").Behaviour;\nvar TokenIterator = require(\"../../token_iterator\").TokenIterator;\nvar lang = require(\"../../lib/lang\");\nfunction is(token, type) {\n return token && token.type.lastIndexOf(type + \".xml\") > -1;\n}\nvar XmlBehaviour = function () {\n this.add(\"string_dquotes\", \"insertion\", function (state, action, editor, session, text) {\n if (text == '\"' || text == \"'\") {\n var quote = text;\n var selected = session.doc.getTextRange(editor.getSelectionRange());\n if (selected !== \"\" && selected !== \"'\" && selected != '\"' && editor.getWrapBehavioursEnabled()) {\n return {\n text: quote + selected + quote,\n selection: false\n };\n }\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n var token = iterator.getCurrentToken();\n if (rightChar == quote && (is(token, \"attribute-value\") || is(token, \"string\"))) {\n return {\n text: \"\",\n selection: [1, 1]\n };\n }\n if (!token)\n token = iterator.stepBackward();\n if (!token)\n return;\n while (is(token, \"tag-whitespace\") || is(token, \"whitespace\")) {\n token = iterator.stepBackward();\n }\n var rightSpace = !rightChar || rightChar.match(/\\s/);\n if (is(token, \"attribute-equals\") && (rightSpace || rightChar == '>') || (is(token, \"decl-attribute-equals\") && (rightSpace || rightChar == '?'))) {\n return {\n text: quote + quote,\n selection: [1, 1]\n };\n }\n }\n });\n this.add(\"string_dquotes\", \"deletion\", function (state, action, editor, session, range) {\n var selected = session.doc.getTextRange(range);\n if (!range.isMultiLine() && (selected == '\"' || selected == \"'\")) {\n var line = session.doc.getLine(range.start.row);\n var rightChar = line.substring(range.start.column + 1, range.start.column + 2);\n if (rightChar == selected) {\n range.end.column++;\n return range;\n }\n }\n });\n this.add(\"autoclosing\", \"insertion\", function (state, action, editor, session, text) {\n if (text == '>') {\n var position = editor.getSelectionRange().start;\n var iterator = new TokenIterator(session, position.row, position.column);\n var token = iterator.getCurrentToken() || iterator.stepBackward();\n if (!token || !(is(token, \"tag-name\") || is(token, \"tag-whitespace\") || is(token, \"attribute-name\") || is(token, \"attribute-equals\") || is(token, \"attribute-value\")))\n return;\n if (is(token, \"reference.attribute-value\"))\n return;\n if (is(token, \"attribute-value\")) {\n var tokenEndColumn = iterator.getCurrentTokenColumn() + token.value.length;\n if (position.column < tokenEndColumn)\n return;\n if (position.column == tokenEndColumn) {\n var nextToken = iterator.stepForward();\n if (nextToken && is(nextToken, \"attribute-value\"))\n return;\n iterator.stepBackward();\n }\n }\n if (/^\\s*>/.test(session.getLine(position.row).slice(position.column)))\n return;\n while (!is(token, \"tag-name\")) {\n token = iterator.stepBackward();\n if (token.value == \"<\") {\n token = iterator.stepForward();\n break;\n }\n }\n var tokenRow = iterator.getCurrentTokenRow();\n var tokenColumn = iterator.getCurrentTokenColumn();\n if (is(iterator.stepBackward(), \"end-tag-open\"))\n return;\n var element = token.value;\n if (tokenRow == position.row)\n element = element.substring(0, position.column - tokenColumn);\n if (this.voidElements.hasOwnProperty(element.toLowerCase()))\n return;\n return {\n text: \">\" + \"\",\n selection: [1, 1]\n };\n }\n });\n this.add(\"autoindent\", \"insertion\", function (state, action, editor, session, text) {\n if (text == \"\\n\") {\n var cursor = editor.getCursorPosition();\n var line = session.getLine(cursor.row);\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n var token = iterator.getCurrentToken();\n if (token && token.type.indexOf(\"tag-close\") !== -1) {\n if (token.value == \"/>\")\n return;\n while (token && token.type.indexOf(\"tag-name\") === -1) {\n token = iterator.stepBackward();\n }\n if (!token) {\n return;\n }\n var tag = token.value;\n var row = iterator.getCurrentTokenRow();\n token = iterator.stepBackward();\n if (!token || token.type.indexOf(\"end-tag\") !== -1) {\n return;\n }\n if (this.voidElements && !this.voidElements[tag]) {\n var nextToken = session.getTokenAt(cursor.row, cursor.column + 1);\n var line = session.getLine(row);\n var nextIndent = this.$getIndent(line);\n var indent = nextIndent + session.getTabString();\n if (nextToken && nextToken.value === \" -1;\n}\n(function () {\n this.getFoldWidget = function (session, foldStyle, row) {\n var tag = this._getFirstTagInLine(session, row);\n if (!tag)\n return this.getCommentFoldWidget(session, row);\n if (tag.closing || (!tag.tagName && tag.selfClosing))\n return foldStyle === \"markbeginend\" ? \"end\" : \"\";\n if (!tag.tagName || tag.selfClosing || this.voidElements.hasOwnProperty(tag.tagName.toLowerCase()))\n return \"\";\n if (this._findEndTagInLine(session, row, tag.tagName, tag.end.column))\n return \"\";\n return \"start\";\n };\n this.getCommentFoldWidget = function (session, row) {\n if (/comment/.test(session.getState(row)) && /';\n break;\n }\n }\n return tag;\n }\n else if (is(token, \"tag-close\")) {\n tag.selfClosing = token.value == '/>';\n return tag;\n }\n tag.start.column += token.value.length;\n }\n return null;\n };\n this._findEndTagInLine = function (session, row, tagName, startColumn) {\n var tokens = session.getTokens(row);\n var column = 0;\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n column += token.value.length;\n if (column < startColumn)\n continue;\n if (is(token, \"end-tag-open\")) {\n token = tokens[i + 1];\n if (token && token.value == tagName)\n return true;\n }\n }\n return false;\n };\n this.getFoldWidgetRange = function (session, foldStyle, row) {\n var tags = session.getMatchingTags({ row: row, column: 0 });\n if (tags) {\n return new Range(tags.openTag.end.row, tags.openTag.end.column, tags.closeTag.start.row, tags.closeTag.start.column);\n }\n else {\n return this.getCommentFoldWidget(session, row)\n && session.getCommentFoldRange(row, session.getLine(row).length);\n }\n };\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/xml\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/mode/text\",\"ace/mode/xml_highlight_rules\",\"ace/mode/behaviour/xml\",\"ace/mode/folding/xml\",\"ace/worker/worker_client\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar lang = require(\"../lib/lang\");\nvar TextMode = require(\"./text\").Mode;\nvar XmlHighlightRules = require(\"./xml_highlight_rules\").XmlHighlightRules;\nvar XmlBehaviour = require(\"./behaviour/xml\").XmlBehaviour;\nvar XmlFoldMode = require(\"./folding/xml\").FoldMode;\nvar WorkerClient = require(\"../worker/worker_client\").WorkerClient;\nvar Mode = function () {\n this.HighlightRules = XmlHighlightRules;\n this.$behaviour = new XmlBehaviour();\n this.foldingRules = new XmlFoldMode();\n};\noop.inherits(Mode, TextMode);\n(function () {\n this.voidElements = lang.arrayToMap([]);\n this.blockComment = { start: \"\" };\n this.createWorker = function (session) {\n var worker = new WorkerClient([\"ace\"], \"ace/mode/xml_worker\", \"Worker\");\n worker.attachToDocument(session.getDocument());\n worker.on(\"error\", function (e) {\n session.setAnnotations(e.data);\n });\n worker.on(\"terminate\", function () {\n session.clearAnnotations();\n });\n return worker;\n };\n this.$id = \"ace/mode/xml\";\n}).call(Mode.prototype);\nexports.Mode = Mode;\n\n}); (function() {\n ace.require([\"ace/mode/xml\"], function(m) {\n if (typeof module == \"object\" && typeof exports == \"object\" && module) {\n module.exports = m;\n }\n });\n })();\n ","ace.define(\"ace/theme/github-css\",[\"require\",\"exports\",\"module\"], function(require, exports, module){module.exports = \"/* CSS style content from github's default pygments highlighter template.\\n Cursor and selection styles from textmate.css. */\\n.ace-github .ace_gutter {\\n background: #e8e8e8;\\n color: #AAA;\\n}\\n\\n.ace-github {\\n background: #fff;\\n color: #000;\\n}\\n\\n.ace-github .ace_keyword {\\n font-weight: bold;\\n}\\n\\n.ace-github .ace_string {\\n color: #D14;\\n}\\n\\n.ace-github .ace_variable.ace_class {\\n color: teal;\\n}\\n\\n.ace-github .ace_constant.ace_numeric {\\n color: #099;\\n}\\n\\n.ace-github .ace_constant.ace_buildin {\\n color: #0086B3;\\n}\\n\\n.ace-github .ace_support.ace_function {\\n color: #0086B3;\\n}\\n\\n.ace-github .ace_comment {\\n color: #998;\\n font-style: italic;\\n}\\n\\n.ace-github .ace_variable.ace_language {\\n color: #0086B3;\\n}\\n\\n.ace-github .ace_paren {\\n font-weight: bold;\\n}\\n\\n.ace-github .ace_boolean {\\n font-weight: bold;\\n}\\n\\n.ace-github .ace_string.ace_regexp {\\n color: #009926;\\n font-weight: normal;\\n}\\n\\n.ace-github .ace_variable.ace_instance {\\n color: teal;\\n}\\n\\n.ace-github .ace_constant.ace_language {\\n font-weight: bold;\\n}\\n\\n.ace-github .ace_cursor {\\n color: black;\\n}\\n\\n.ace-github.ace_focus .ace_marker-layer .ace_active-line {\\n background: rgb(255, 255, 204);\\n}\\n.ace-github .ace_marker-layer .ace_active-line {\\n background: rgb(245, 245, 245);\\n}\\n\\n.ace-github .ace_marker-layer .ace_selection {\\n background: rgb(181, 213, 255);\\n}\\n\\n.ace-github.ace_multiselect .ace_selection.ace_start {\\n box-shadow: 0 0 3px 0px white;\\n}\\n/* bold keywords cause cursor issues for some fonts */\\n/* this disables bold style for editor and keeps for static highlighter */\\n.ace-github.ace_nobold .ace_line > span {\\n font-weight: normal !important;\\n}\\n\\n.ace-github .ace_marker-layer .ace_step {\\n background: rgb(252, 255, 0);\\n}\\n\\n.ace-github .ace_marker-layer .ace_stack {\\n background: rgb(164, 229, 101);\\n}\\n\\n.ace-github .ace_marker-layer .ace_bracket {\\n margin: -1px 0 0 -1px;\\n border: 1px solid rgb(192, 192, 192);\\n}\\n\\n.ace-github .ace_gutter-active-line {\\n background-color : rgba(0, 0, 0, 0.07);\\n}\\n\\n.ace-github .ace_marker-layer .ace_selected-word {\\n background: rgb(250, 250, 255);\\n border: 1px solid rgb(200, 200, 250);\\n}\\n\\n.ace-github .ace_invisible {\\n color: #BFBFBF\\n}\\n\\n.ace-github .ace_print-margin {\\n width: 1px;\\n background: #e8e8e8;\\n}\\n\\n.ace-github .ace_indent-guide {\\n background: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==\\\") right repeat-y;\\n}\\n\\n.ace-github .ace_indent-guide-active {\\n background: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAAZSURBVHjaYvj///9/hivKyv8BAAAA//8DACLqBhbvk+/eAAAAAElFTkSuQmCC\\\") right repeat-y;\\n}\\n\";\n\n});\n\nace.define(\"ace/theme/github\",[\"require\",\"exports\",\"module\",\"ace/theme/github-css\",\"ace/lib/dom\"], function(require, exports, module){exports.isDark = false;\nexports.cssClass = \"ace-github\";\nexports.cssText = require(\"./github-css\");\nvar dom = require(\"../lib/dom\");\ndom.importCssString(exports.cssText, exports.cssClass, false);\n\n}); (function() {\n ace.require([\"ace/theme/github\"], function(m) {\n if (typeof module == \"object\" && typeof exports == \"object\" && module) {\n module.exports = m;\n }\n });\n })();\n ","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.flatpickr-calendar{background:transparent;opacity:0;display:none;text-align:center;visibility:hidden;padding:0;-webkit-animation:none;animation:none;direction:ltr;border:0;font-size:14px;line-height:24px;border-radius:5px;position:absolute;width:307.875px;-webkit-box-sizing:border-box;box-sizing:border-box;-ms-touch-action:manipulation;touch-action:manipulation;background:#fff;-webkit-box-shadow:1px 0 0 #e6e6e6,-1px 0 0 #e6e6e6,0 1px 0 #e6e6e6,0 -1px 0 #e6e6e6,0 3px 13px rgba(0,0,0,0.08);box-shadow:1px 0 0 #e6e6e6,-1px 0 0 #e6e6e6,0 1px 0 #e6e6e6,0 -1px 0 #e6e6e6,0 3px 13px rgba(0,0,0,0.08)}.flatpickr-calendar.open,.flatpickr-calendar.inline{opacity:1;max-height:640px;visibility:visible}.flatpickr-calendar.open{display:inline-block;z-index:99999}.flatpickr-calendar.animate.open{-webkit-animation:fpFadeInDown 300ms cubic-bezier(.23,1,.32,1);animation:fpFadeInDown 300ms cubic-bezier(.23,1,.32,1)}.flatpickr-calendar.inline{display:block;position:relative;top:2px}.flatpickr-calendar.static{position:absolute;top:calc(100% + 2px)}.flatpickr-calendar.static.open{z-index:999;display:block}.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+1) .flatpickr-day.inRange:nth-child(7n+7){-webkit-box-shadow:none !important;box-shadow:none !important}.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+2) .flatpickr-day.inRange:nth-child(7n+1){-webkit-box-shadow:-2px 0 0 #e6e6e6,5px 0 0 #e6e6e6;box-shadow:-2px 0 0 #e6e6e6,5px 0 0 #e6e6e6}.flatpickr-calendar .hasWeeks .dayContainer,.flatpickr-calendar .hasTime .dayContainer{border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.flatpickr-calendar .hasWeeks .dayContainer{border-left:0}.flatpickr-calendar.hasTime .flatpickr-time{height:40px;border-top:1px solid #e6e6e6}.flatpickr-calendar.noCalendar.hasTime .flatpickr-time{height:auto}.flatpickr-calendar:before,.flatpickr-calendar:after{position:absolute;display:block;pointer-events:none;border:solid transparent;content:'';height:0;width:0;left:22px}.flatpickr-calendar.rightMost:before,.flatpickr-calendar.arrowRight:before,.flatpickr-calendar.rightMost:after,.flatpickr-calendar.arrowRight:after{left:auto;right:22px}.flatpickr-calendar.arrowCenter:before,.flatpickr-calendar.arrowCenter:after{left:50%;right:50%}.flatpickr-calendar:before{border-width:5px;margin:0 -5px}.flatpickr-calendar:after{border-width:4px;margin:0 -4px}.flatpickr-calendar.arrowTop:before,.flatpickr-calendar.arrowTop:after{bottom:100%}.flatpickr-calendar.arrowTop:before{border-bottom-color:#e6e6e6}.flatpickr-calendar.arrowTop:after{border-bottom-color:#fff}.flatpickr-calendar.arrowBottom:before,.flatpickr-calendar.arrowBottom:after{top:100%}.flatpickr-calendar.arrowBottom:before{border-top-color:#e6e6e6}.flatpickr-calendar.arrowBottom:after{border-top-color:#fff}.flatpickr-calendar:focus{outline:0}.flatpickr-wrapper{position:relative;display:inline-block}.flatpickr-months{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.flatpickr-months .flatpickr-month{background:transparent;color:rgba(0,0,0,0.9);fill:rgba(0,0,0,0.9);height:34px;line-height:1;text-align:center;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:hidden;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}.flatpickr-months .flatpickr-prev-month,.flatpickr-months .flatpickr-next-month{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;text-decoration:none;cursor:pointer;position:absolute;top:0;height:34px;padding:10px;z-index:3;color:rgba(0,0,0,0.9);fill:rgba(0,0,0,0.9)}.flatpickr-months .flatpickr-prev-month.flatpickr-disabled,.flatpickr-months .flatpickr-next-month.flatpickr-disabled{display:none}.flatpickr-months .flatpickr-prev-month i,.flatpickr-months .flatpickr-next-month i{position:relative}.flatpickr-months .flatpickr-prev-month.flatpickr-prev-month,.flatpickr-months .flatpickr-next-month.flatpickr-prev-month{/*\n /*rtl:begin:ignore*/left:0/*\n /*rtl:end:ignore*/}/*\n /*rtl:begin:ignore*/\n/*\n /*rtl:end:ignore*/\n.flatpickr-months .flatpickr-prev-month.flatpickr-next-month,.flatpickr-months .flatpickr-next-month.flatpickr-next-month{/*\n /*rtl:begin:ignore*/right:0/*\n /*rtl:end:ignore*/}/*\n /*rtl:begin:ignore*/\n/*\n /*rtl:end:ignore*/\n.flatpickr-months .flatpickr-prev-month:hover,.flatpickr-months .flatpickr-next-month:hover{color:#959ea9}.flatpickr-months .flatpickr-prev-month:hover svg,.flatpickr-months .flatpickr-next-month:hover svg{fill:#f64747}.flatpickr-months .flatpickr-prev-month svg,.flatpickr-months .flatpickr-next-month svg{width:14px;height:14px}.flatpickr-months .flatpickr-prev-month svg path,.flatpickr-months .flatpickr-next-month svg path{-webkit-transition:fill .1s;transition:fill .1s;fill:inherit}.numInputWrapper{position:relative;height:auto}.numInputWrapper input,.numInputWrapper span{display:inline-block}.numInputWrapper input{width:100%}.numInputWrapper input::-ms-clear{display:none}.numInputWrapper input::-webkit-outer-spin-button,.numInputWrapper input::-webkit-inner-spin-button{margin:0;-webkit-appearance:none}.numInputWrapper span{position:absolute;right:0;width:14px;padding:0 4px 0 2px;height:50%;line-height:50%;opacity:0;cursor:pointer;border:1px solid rgba(57,57,57,0.15);-webkit-box-sizing:border-box;box-sizing:border-box}.numInputWrapper span:hover{background:rgba(0,0,0,0.1)}.numInputWrapper span:active{background:rgba(0,0,0,0.2)}.numInputWrapper span:after{display:block;content:\"\";position:absolute}.numInputWrapper span.arrowUp{top:0;border-bottom:0}.numInputWrapper span.arrowUp:after{border-left:4px solid transparent;border-right:4px solid transparent;border-bottom:4px solid rgba(57,57,57,0.6);top:26%}.numInputWrapper span.arrowDown{top:50%}.numInputWrapper span.arrowDown:after{border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px solid rgba(57,57,57,0.6);top:40%}.numInputWrapper span svg{width:inherit;height:auto}.numInputWrapper span svg path{fill:rgba(0,0,0,0.5)}.numInputWrapper:hover{background:rgba(0,0,0,0.05)}.numInputWrapper:hover span{opacity:1}.flatpickr-current-month{font-size:135%;line-height:inherit;font-weight:300;color:inherit;position:absolute;width:75%;left:12.5%;padding:7.48px 0 0 0;line-height:1;height:34px;display:inline-block;text-align:center;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.flatpickr-current-month span.cur-month{font-family:inherit;font-weight:700;color:inherit;display:inline-block;margin-left:.5ch;padding:0}.flatpickr-current-month span.cur-month:hover{background:rgba(0,0,0,0.05)}.flatpickr-current-month .numInputWrapper{width:6ch;width:7ch\\\\0;display:inline-block}.flatpickr-current-month .numInputWrapper span.arrowUp:after{border-bottom-color:rgba(0,0,0,0.9)}.flatpickr-current-month .numInputWrapper span.arrowDown:after{border-top-color:rgba(0,0,0,0.9)}.flatpickr-current-month input.cur-year{background:transparent;-webkit-box-sizing:border-box;box-sizing:border-box;color:inherit;cursor:text;padding:0 0 0 .5ch;margin:0;display:inline-block;font-size:inherit;font-family:inherit;font-weight:300;line-height:inherit;height:auto;border:0;border-radius:0;vertical-align:initial;-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.flatpickr-current-month input.cur-year:focus{outline:0}.flatpickr-current-month input.cur-year[disabled],.flatpickr-current-month input.cur-year[disabled]:hover{font-size:100%;color:rgba(0,0,0,0.5);background:transparent;pointer-events:none}.flatpickr-current-month .flatpickr-monthDropdown-months{appearance:menulist;background:transparent;border:none;border-radius:0;box-sizing:border-box;color:inherit;cursor:pointer;font-size:inherit;font-family:inherit;font-weight:300;height:auto;line-height:inherit;margin:-1px 0 0 0;outline:none;padding:0 0 0 .5ch;position:relative;vertical-align:initial;-webkit-box-sizing:border-box;-webkit-appearance:menulist;-moz-appearance:menulist;width:auto}.flatpickr-current-month .flatpickr-monthDropdown-months:focus,.flatpickr-current-month .flatpickr-monthDropdown-months:active{outline:none}.flatpickr-current-month .flatpickr-monthDropdown-months:hover{background:rgba(0,0,0,0.05)}.flatpickr-current-month .flatpickr-monthDropdown-months .flatpickr-monthDropdown-month{background-color:transparent;outline:none;padding:0}.flatpickr-weekdays{background:transparent;text-align:center;overflow:hidden;width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;height:28px}.flatpickr-weekdays .flatpickr-weekdaycontainer{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}span.flatpickr-weekday{cursor:default;font-size:90%;background:transparent;color:rgba(0,0,0,0.54);line-height:1;margin:0;text-align:center;display:block;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;font-weight:bolder}.dayContainer,.flatpickr-weeks{padding:1px 0 0 0}.flatpickr-days{position:relative;overflow:hidden;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:flex-start;width:307.875px}.flatpickr-days:focus{outline:0}.dayContainer{padding:0;outline:0;text-align:left;width:307.875px;min-width:307.875px;max-width:307.875px;-webkit-box-sizing:border-box;box-sizing:border-box;display:inline-block;display:-ms-flexbox;display:-webkit-box;display:-webkit-flex;display:flex;-webkit-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-wrap:wrap;-ms-flex-pack:justify;-webkit-justify-content:space-around;justify-content:space-around;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}.dayContainer + .dayContainer{-webkit-box-shadow:-1px 0 0 #e6e6e6;box-shadow:-1px 0 0 #e6e6e6}.flatpickr-day{background:none;border:1px solid transparent;border-radius:150px;-webkit-box-sizing:border-box;box-sizing:border-box;color:#393939;cursor:pointer;font-weight:400;width:14.2857143%;-webkit-flex-basis:14.2857143%;-ms-flex-preferred-size:14.2857143%;flex-basis:14.2857143%;max-width:39px;height:39px;line-height:39px;margin:0;display:inline-block;position:relative;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;text-align:center}.flatpickr-day.inRange,.flatpickr-day.prevMonthDay.inRange,.flatpickr-day.nextMonthDay.inRange,.flatpickr-day.today.inRange,.flatpickr-day.prevMonthDay.today.inRange,.flatpickr-day.nextMonthDay.today.inRange,.flatpickr-day:hover,.flatpickr-day.prevMonthDay:hover,.flatpickr-day.nextMonthDay:hover,.flatpickr-day:focus,.flatpickr-day.prevMonthDay:focus,.flatpickr-day.nextMonthDay:focus{cursor:pointer;outline:0;background:#e6e6e6;border-color:#e6e6e6}.flatpickr-day.today{border-color:#959ea9}.flatpickr-day.today:hover,.flatpickr-day.today:focus{border-color:#959ea9;background:#959ea9;color:#fff}.flatpickr-day.selected,.flatpickr-day.startRange,.flatpickr-day.endRange,.flatpickr-day.selected.inRange,.flatpickr-day.startRange.inRange,.flatpickr-day.endRange.inRange,.flatpickr-day.selected:focus,.flatpickr-day.startRange:focus,.flatpickr-day.endRange:focus,.flatpickr-day.selected:hover,.flatpickr-day.startRange:hover,.flatpickr-day.endRange:hover,.flatpickr-day.selected.prevMonthDay,.flatpickr-day.startRange.prevMonthDay,.flatpickr-day.endRange.prevMonthDay,.flatpickr-day.selected.nextMonthDay,.flatpickr-day.startRange.nextMonthDay,.flatpickr-day.endRange.nextMonthDay{background:#569ff7;-webkit-box-shadow:none;box-shadow:none;color:#fff;border-color:#569ff7}.flatpickr-day.selected.startRange,.flatpickr-day.startRange.startRange,.flatpickr-day.endRange.startRange{border-radius:50px 0 0 50px}.flatpickr-day.selected.endRange,.flatpickr-day.startRange.endRange,.flatpickr-day.endRange.endRange{border-radius:0 50px 50px 0}.flatpickr-day.selected.startRange + .endRange:not(:nth-child(7n+1)),.flatpickr-day.startRange.startRange + .endRange:not(:nth-child(7n+1)),.flatpickr-day.endRange.startRange + .endRange:not(:nth-child(7n+1)){-webkit-box-shadow:-10px 0 0 #569ff7;box-shadow:-10px 0 0 #569ff7}.flatpickr-day.selected.startRange.endRange,.flatpickr-day.startRange.startRange.endRange,.flatpickr-day.endRange.startRange.endRange{border-radius:50px}.flatpickr-day.inRange{border-radius:0;-webkit-box-shadow:-5px 0 0 #e6e6e6,5px 0 0 #e6e6e6;box-shadow:-5px 0 0 #e6e6e6,5px 0 0 #e6e6e6}.flatpickr-day.flatpickr-disabled,.flatpickr-day.flatpickr-disabled:hover,.flatpickr-day.prevMonthDay,.flatpickr-day.nextMonthDay,.flatpickr-day.notAllowed,.flatpickr-day.notAllowed.prevMonthDay,.flatpickr-day.notAllowed.nextMonthDay{color:rgba(57,57,57,0.3);background:transparent;border-color:transparent;cursor:default}.flatpickr-day.flatpickr-disabled,.flatpickr-day.flatpickr-disabled:hover{cursor:not-allowed;color:rgba(57,57,57,0.1)}.flatpickr-day.week.selected{border-radius:0;-webkit-box-shadow:-5px 0 0 #569ff7,5px 0 0 #569ff7;box-shadow:-5px 0 0 #569ff7,5px 0 0 #569ff7}.flatpickr-day.hidden{visibility:hidden}.rangeMode .flatpickr-day{margin-top:1px}.flatpickr-weekwrapper{float:left}.flatpickr-weekwrapper .flatpickr-weeks{padding:0 12px;-webkit-box-shadow:1px 0 0 #e6e6e6;box-shadow:1px 0 0 #e6e6e6}.flatpickr-weekwrapper .flatpickr-weekday{float:none;width:100%;line-height:28px}.flatpickr-weekwrapper span.flatpickr-day,.flatpickr-weekwrapper span.flatpickr-day:hover{display:block;width:100%;max-width:none;color:rgba(57,57,57,0.3);background:transparent;cursor:default;border:none}.flatpickr-innerContainer{display:block;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden}.flatpickr-rContainer{display:inline-block;padding:0;-webkit-box-sizing:border-box;box-sizing:border-box}.flatpickr-time{text-align:center;outline:0;display:block;height:0;line-height:40px;max-height:40px;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.flatpickr-time:after{content:\"\";display:table;clear:both}.flatpickr-time .numInputWrapper{-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;width:40%;height:40px;float:left}.flatpickr-time .numInputWrapper span.arrowUp:after{border-bottom-color:#393939}.flatpickr-time .numInputWrapper span.arrowDown:after{border-top-color:#393939}.flatpickr-time.hasSeconds .numInputWrapper{width:26%}.flatpickr-time.time24hr .numInputWrapper{width:49%}.flatpickr-time input{background:transparent;-webkit-box-shadow:none;box-shadow:none;border:0;border-radius:0;text-align:center;margin:0;padding:0;height:inherit;line-height:inherit;color:#393939;font-size:14px;position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.flatpickr-time input.flatpickr-hour{font-weight:bold}.flatpickr-time input.flatpickr-minute,.flatpickr-time input.flatpickr-second{font-weight:400}.flatpickr-time input:focus{outline:0;border:0}.flatpickr-time .flatpickr-time-separator,.flatpickr-time .flatpickr-am-pm{height:inherit;float:left;line-height:inherit;color:#393939;font-weight:bold;width:2%;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-align-self:center;-ms-flex-item-align:center;align-self:center}.flatpickr-time .flatpickr-am-pm{outline:0;width:18%;cursor:pointer;text-align:center;font-weight:400}.flatpickr-time input:hover,.flatpickr-time .flatpickr-am-pm:hover,.flatpickr-time input:focus,.flatpickr-time .flatpickr-am-pm:focus{background:#eee}.flatpickr-input[readonly]{cursor:pointer}@-webkit-keyframes fpFadeInDown{from{opacity:0;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@keyframes fpFadeInDown{from{opacity:0;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/flatpickr/dist/flatpickr.min.css\"],\"names\":[],\"mappings\":\"AAAA,oBAAoB,sBAAsB,CAAC,SAAS,CAAC,YAAY,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,SAAS,CAAC,sBAAsB,CAAC,cAAc,CAAC,aAAa,CAAC,QAAQ,CAAC,cAAc,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,eAAe,CAAC,6BAA6B,CAAC,qBAAqB,CAAC,6BAA6B,CAAC,yBAAyB,CAAC,eAAe,CAAC,gHAAgH,CAAC,wGAAwG,CAAC,oDAAoD,SAAS,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,yBAAyB,oBAAoB,CAAC,aAAa,CAAC,iCAAiC,8DAA8D,CAAC,sDAAsD,CAAC,2BAA2B,aAAa,CAAC,iBAAiB,CAAC,OAAO,CAAC,2BAA2B,iBAAiB,CAAC,oBAAoB,CAAC,gCAAgC,WAAW,CAAC,aAAa,CAAC,mHAAmH,kCAAkC,CAAC,0BAA0B,CAAC,mHAAmH,mDAAmD,CAAC,2CAA2C,CAAC,uFAAuF,eAAe,CAAC,4BAA4B,CAAC,2BAA2B,CAAC,4CAA4C,aAAa,CAAC,4CAA4C,WAAW,CAAC,4BAA4B,CAAC,uDAAuD,WAAW,CAAC,qDAAqD,iBAAiB,CAAC,aAAa,CAAC,mBAAmB,CAAC,wBAAwB,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,oJAAoJ,SAAS,CAAC,UAAU,CAAC,6EAA6E,QAAQ,CAAC,SAAS,CAAC,2BAA2B,gBAAgB,CAAC,aAAa,CAAC,0BAA0B,gBAAgB,CAAC,aAAa,CAAC,uEAAuE,WAAW,CAAC,oCAAoC,2BAA2B,CAAC,mCAAmC,wBAAwB,CAAC,6EAA6E,QAAQ,CAAC,uCAAuC,wBAAwB,CAAC,sCAAsC,qBAAqB,CAAC,0BAA0B,SAAS,CAAC,mBAAmB,iBAAiB,CAAC,oBAAoB,CAAC,kBAAkB,mBAAmB,CAAC,oBAAoB,CAAC,mBAAmB,CAAC,YAAY,CAAC,mCAAmC,sBAAsB,CAAC,qBAAqB,CAAC,oBAAoB,CAAC,WAAW,CAAC,aAAa,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,wBAAwB,CAAC,qBAAqB,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,eAAe,CAAC,kBAAkB,CAAC,cAAc,CAAC,UAAU,CAAC,MAAM,CAAC,gFAAgF,wBAAwB,CAAC,qBAAqB,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,cAAc,CAAC,iBAAiB,CAAC,KAAK,CAAC,WAAW,CAAC,YAAY,CAAC,SAAS,CAAC,qBAAqB,CAAC,oBAAoB,CAAC,sHAAsH,YAAY,CAAC,oFAAoF,iBAAiB,CAAC,0HAA0H;yBACr3H,CAAC,KAAK,CAAC;uBACT,CAAC,CAAC;yBACA;AACzB;uBACuB;AACvB,0HAA0H;yBACjG,CAAC,MAAM,CAAC;uBACV,CAAC,CAAC;yBACA;AACzB;uBACuB;AACvB,4FAA4F,aAAa,CAAC,oGAAoG,YAAY,CAAC,wFAAwF,UAAU,CAAC,WAAW,CAAC,kGAAkG,2BAA2B,CAAC,mBAAmB,CAAC,YAAY,CAAC,iBAAiB,iBAAiB,CAAC,WAAW,CAAC,6CAA6C,oBAAoB,CAAC,uBAAuB,UAAU,CAAC,kCAAkC,YAAY,CAAC,oGAAoG,QAAQ,CAAC,uBAAuB,CAAC,sBAAsB,iBAAiB,CAAC,OAAO,CAAC,UAAU,CAAC,mBAAmB,CAAC,UAAU,CAAC,eAAe,CAAC,SAAS,CAAC,cAAc,CAAC,oCAAoC,CAAC,6BAA6B,CAAC,qBAAqB,CAAC,4BAA4B,0BAA0B,CAAC,6BAA6B,0BAA0B,CAAC,4BAA4B,aAAa,CAAC,UAAU,CAAC,iBAAiB,CAAC,8BAA8B,KAAK,CAAC,eAAe,CAAC,oCAAoC,iCAAiC,CAAC,kCAAkC,CAAC,0CAA0C,CAAC,OAAO,CAAC,gCAAgC,OAAO,CAAC,sCAAsC,iCAAiC,CAAC,kCAAkC,CAAC,uCAAuC,CAAC,OAAO,CAAC,0BAA0B,aAAa,CAAC,WAAW,CAAC,+BAA+B,oBAAoB,CAAC,uBAAuB,2BAA2B,CAAC,4BAA4B,SAAS,CAAC,yBAAyB,cAAc,CAAC,mBAAmB,CAAC,eAAe,CAAC,aAAa,CAAC,iBAAiB,CAAC,SAAS,CAAC,UAAU,CAAC,oBAAoB,CAAC,aAAa,CAAC,WAAW,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,oCAAoC,CAAC,4BAA4B,CAAC,wCAAwC,mBAAmB,CAAC,eAAe,CAAC,aAAa,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,SAAS,CAAC,8CAA8C,2BAA2B,CAAC,0CAA0C,SAAS,CAAC,WAAW,CAAC,oBAAoB,CAAC,6DAA6D,mCAAmC,CAAC,+DAA+D,gCAAgC,CAAC,wCAAwC,sBAAsB,CAAC,6BAA6B,CAAC,qBAAqB,CAAC,aAAa,CAAC,WAAW,CAAC,kBAAkB,CAAC,QAAQ,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,eAAe,CAAC,mBAAmB,CAAC,WAAW,CAAC,QAAQ,CAAC,eAAe,CAAC,sBAAsB,CAAC,4BAA4B,CAAC,yBAAyB,CAAC,oBAAoB,CAAC,8CAA8C,SAAS,CAAC,0GAA0G,cAAc,CAAC,qBAAqB,CAAC,sBAAsB,CAAC,mBAAmB,CAAC,yDAAyD,mBAAmB,CAAC,sBAAsB,CAAC,WAAW,CAAC,eAAe,CAAC,qBAAqB,CAAC,aAAa,CAAC,cAAc,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,eAAe,CAAC,WAAW,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,YAAY,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,sBAAsB,CAAC,6BAA6B,CAAC,2BAA2B,CAAC,wBAAwB,CAAC,UAAU,CAAC,+HAA+H,YAAY,CAAC,+DAA+D,2BAA2B,CAAC,wFAAwF,4BAA4B,CAAC,YAAY,CAAC,SAAS,CAAC,oBAAoB,sBAAsB,CAAC,iBAAiB,CAAC,eAAe,CAAC,UAAU,CAAC,mBAAmB,CAAC,oBAAoB,CAAC,mBAAmB,CAAC,YAAY,CAAC,wBAAwB,CAAC,0BAA0B,CAAC,qBAAqB,CAAC,kBAAkB,CAAC,WAAW,CAAC,gDAAgD,mBAAmB,CAAC,oBAAoB,CAAC,mBAAmB,CAAC,YAAY,CAAC,kBAAkB,CAAC,cAAc,CAAC,UAAU,CAAC,MAAM,CAAC,uBAAuB,cAAc,CAAC,aAAa,CAAC,sBAAsB,CAAC,sBAAsB,CAAC,aAAa,CAAC,QAAQ,CAAC,iBAAiB,CAAC,aAAa,CAAC,kBAAkB,CAAC,cAAc,CAAC,UAAU,CAAC,MAAM,CAAC,kBAAkB,CAAC,+BAA+B,iBAAiB,CAAC,gBAAgB,iBAAiB,CAAC,eAAe,CAAC,mBAAmB,CAAC,oBAAoB,CAAC,mBAAmB,CAAC,YAAY,CAAC,uBAAuB,CAAC,8BAA8B,CAAC,oBAAoB,CAAC,sBAAsB,CAAC,eAAe,CAAC,sBAAsB,SAAS,CAAC,cAAc,SAAS,CAAC,SAAS,CAAC,eAAe,CAAC,eAAe,CAAC,mBAAmB,CAAC,mBAAmB,CAAC,6BAA6B,CAAC,qBAAqB,CAAC,oBAAoB,CAAC,mBAAmB,CAAC,mBAAmB,CAAC,oBAAoB,CAAC,YAAY,CAAC,sBAAsB,CAAC,cAAc,CAAC,kBAAkB,CAAC,qBAAqB,CAAC,oCAAoC,CAAC,4BAA4B,CAAC,oCAAoC,CAAC,4BAA4B,CAAC,SAAS,CAAC,8BAA8B,mCAAmC,CAAC,2BAA2B,CAAC,eAAe,eAAe,CAAC,4BAA4B,CAAC,mBAAmB,CAAC,6BAA6B,CAAC,qBAAqB,CAAC,aAAa,CAAC,cAAc,CAAC,eAAe,CAAC,iBAAiB,CAAC,8BAA8B,CAAC,mCAAmC,CAAC,sBAAsB,CAAC,cAAc,CAAC,WAAW,CAAC,gBAAgB,CAAC,QAAQ,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,uBAAuB,CAAC,8BAA8B,CAAC,oBAAoB,CAAC,sBAAsB,CAAC,iBAAiB,CAAC,kYAAkY,cAAc,CAAC,SAAS,CAAC,kBAAkB,CAAC,oBAAoB,CAAC,qBAAqB,oBAAoB,CAAC,sDAAsD,oBAAoB,CAAC,kBAAkB,CAAC,UAAU,CAAC,skBAAskB,kBAAkB,CAAC,uBAAuB,CAAC,eAAe,CAAC,UAAU,CAAC,oBAAoB,CAAC,2GAA2G,2BAA2B,CAAC,qGAAqG,2BAA2B,CAAC,iNAAiN,oCAAoC,CAAC,4BAA4B,CAAC,sIAAsI,kBAAkB,CAAC,uBAAuB,eAAe,CAAC,mDAAmD,CAAC,2CAA2C,CAAC,0OAA0O,wBAAwB,CAAC,sBAAsB,CAAC,wBAAwB,CAAC,cAAc,CAAC,0EAA0E,kBAAkB,CAAC,wBAAwB,CAAC,6BAA6B,eAAe,CAAC,mDAAmD,CAAC,2CAA2C,CAAC,sBAAsB,iBAAiB,CAAC,0BAA0B,cAAc,CAAC,uBAAuB,UAAU,CAAC,wCAAwC,cAAc,CAAC,kCAAkC,CAAC,0BAA0B,CAAC,0CAA0C,UAAU,CAAC,UAAU,CAAC,gBAAgB,CAAC,0FAA0F,aAAa,CAAC,UAAU,CAAC,cAAc,CAAC,wBAAwB,CAAC,sBAAsB,CAAC,cAAc,CAAC,WAAW,CAAC,0BAA0B,aAAa,CAAC,mBAAmB,CAAC,oBAAoB,CAAC,mBAAmB,CAAC,YAAY,CAAC,6BAA6B,CAAC,qBAAqB,CAAC,eAAe,CAAC,sBAAsB,oBAAoB,CAAC,SAAS,CAAC,6BAA6B,CAAC,qBAAqB,CAAC,gBAAgB,iBAAiB,CAAC,SAAS,CAAC,aAAa,CAAC,QAAQ,CAAC,gBAAgB,CAAC,eAAe,CAAC,6BAA6B,CAAC,qBAAqB,CAAC,eAAe,CAAC,mBAAmB,CAAC,oBAAoB,CAAC,mBAAmB,CAAC,YAAY,CAAC,sBAAsB,UAAU,CAAC,aAAa,CAAC,UAAU,CAAC,iCAAiC,kBAAkB,CAAC,cAAc,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,UAAU,CAAC,oDAAoD,2BAA2B,CAAC,sDAAsD,wBAAwB,CAAC,4CAA4C,SAAS,CAAC,0CAA0C,SAAS,CAAC,sBAAsB,sBAAsB,CAAC,uBAAuB,CAAC,eAAe,CAAC,QAAQ,CAAC,eAAe,CAAC,iBAAiB,CAAC,QAAQ,CAAC,SAAS,CAAC,cAAc,CAAC,mBAAmB,CAAC,aAAa,CAAC,cAAc,CAAC,iBAAiB,CAAC,6BAA6B,CAAC,qBAAqB,CAAC,4BAA4B,CAAC,yBAAyB,CAAC,oBAAoB,CAAC,qCAAqC,gBAAgB,CAAC,8EAA8E,eAAe,CAAC,4BAA4B,SAAS,CAAC,QAAQ,CAAC,2EAA2E,cAAc,CAAC,UAAU,CAAC,mBAAmB,CAAC,aAAa,CAAC,gBAAgB,CAAC,QAAQ,CAAC,wBAAwB,CAAC,qBAAqB,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,yBAAyB,CAAC,0BAA0B,CAAC,iBAAiB,CAAC,iCAAiC,SAAS,CAAC,SAAS,CAAC,cAAc,CAAC,iBAAiB,CAAC,eAAe,CAAC,sIAAsI,eAAe,CAAC,2BAA2B,cAAc,CAAC,gCAAgC,KAAK,SAAS,CAAC,wCAAwC,CAAC,gCAAgC,CAAC,GAAG,SAAS,CAAC,oCAAoC,CAAC,4BAA4B,CAAC,CAAC,wBAAwB,KAAK,SAAS,CAAC,wCAAwC,CAAC,gCAAgC,CAAC,GAAG,SAAS,CAAC,oCAAoC,CAAC,4BAA4B,CAAC\",\"sourcesContent\":[\".flatpickr-calendar{background:transparent;opacity:0;display:none;text-align:center;visibility:hidden;padding:0;-webkit-animation:none;animation:none;direction:ltr;border:0;font-size:14px;line-height:24px;border-radius:5px;position:absolute;width:307.875px;-webkit-box-sizing:border-box;box-sizing:border-box;-ms-touch-action:manipulation;touch-action:manipulation;background:#fff;-webkit-box-shadow:1px 0 0 #e6e6e6,-1px 0 0 #e6e6e6,0 1px 0 #e6e6e6,0 -1px 0 #e6e6e6,0 3px 13px rgba(0,0,0,0.08);box-shadow:1px 0 0 #e6e6e6,-1px 0 0 #e6e6e6,0 1px 0 #e6e6e6,0 -1px 0 #e6e6e6,0 3px 13px rgba(0,0,0,0.08)}.flatpickr-calendar.open,.flatpickr-calendar.inline{opacity:1;max-height:640px;visibility:visible}.flatpickr-calendar.open{display:inline-block;z-index:99999}.flatpickr-calendar.animate.open{-webkit-animation:fpFadeInDown 300ms cubic-bezier(.23,1,.32,1);animation:fpFadeInDown 300ms cubic-bezier(.23,1,.32,1)}.flatpickr-calendar.inline{display:block;position:relative;top:2px}.flatpickr-calendar.static{position:absolute;top:calc(100% + 2px)}.flatpickr-calendar.static.open{z-index:999;display:block}.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+1) .flatpickr-day.inRange:nth-child(7n+7){-webkit-box-shadow:none !important;box-shadow:none !important}.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+2) .flatpickr-day.inRange:nth-child(7n+1){-webkit-box-shadow:-2px 0 0 #e6e6e6,5px 0 0 #e6e6e6;box-shadow:-2px 0 0 #e6e6e6,5px 0 0 #e6e6e6}.flatpickr-calendar .hasWeeks .dayContainer,.flatpickr-calendar .hasTime .dayContainer{border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.flatpickr-calendar .hasWeeks .dayContainer{border-left:0}.flatpickr-calendar.hasTime .flatpickr-time{height:40px;border-top:1px solid #e6e6e6}.flatpickr-calendar.noCalendar.hasTime .flatpickr-time{height:auto}.flatpickr-calendar:before,.flatpickr-calendar:after{position:absolute;display:block;pointer-events:none;border:solid transparent;content:'';height:0;width:0;left:22px}.flatpickr-calendar.rightMost:before,.flatpickr-calendar.arrowRight:before,.flatpickr-calendar.rightMost:after,.flatpickr-calendar.arrowRight:after{left:auto;right:22px}.flatpickr-calendar.arrowCenter:before,.flatpickr-calendar.arrowCenter:after{left:50%;right:50%}.flatpickr-calendar:before{border-width:5px;margin:0 -5px}.flatpickr-calendar:after{border-width:4px;margin:0 -4px}.flatpickr-calendar.arrowTop:before,.flatpickr-calendar.arrowTop:after{bottom:100%}.flatpickr-calendar.arrowTop:before{border-bottom-color:#e6e6e6}.flatpickr-calendar.arrowTop:after{border-bottom-color:#fff}.flatpickr-calendar.arrowBottom:before,.flatpickr-calendar.arrowBottom:after{top:100%}.flatpickr-calendar.arrowBottom:before{border-top-color:#e6e6e6}.flatpickr-calendar.arrowBottom:after{border-top-color:#fff}.flatpickr-calendar:focus{outline:0}.flatpickr-wrapper{position:relative;display:inline-block}.flatpickr-months{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.flatpickr-months .flatpickr-month{background:transparent;color:rgba(0,0,0,0.9);fill:rgba(0,0,0,0.9);height:34px;line-height:1;text-align:center;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:hidden;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}.flatpickr-months .flatpickr-prev-month,.flatpickr-months .flatpickr-next-month{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;text-decoration:none;cursor:pointer;position:absolute;top:0;height:34px;padding:10px;z-index:3;color:rgba(0,0,0,0.9);fill:rgba(0,0,0,0.9)}.flatpickr-months .flatpickr-prev-month.flatpickr-disabled,.flatpickr-months .flatpickr-next-month.flatpickr-disabled{display:none}.flatpickr-months .flatpickr-prev-month i,.flatpickr-months .flatpickr-next-month i{position:relative}.flatpickr-months .flatpickr-prev-month.flatpickr-prev-month,.flatpickr-months .flatpickr-next-month.flatpickr-prev-month{/*\\n /*rtl:begin:ignore*/left:0/*\\n /*rtl:end:ignore*/}/*\\n /*rtl:begin:ignore*/\\n/*\\n /*rtl:end:ignore*/\\n.flatpickr-months .flatpickr-prev-month.flatpickr-next-month,.flatpickr-months .flatpickr-next-month.flatpickr-next-month{/*\\n /*rtl:begin:ignore*/right:0/*\\n /*rtl:end:ignore*/}/*\\n /*rtl:begin:ignore*/\\n/*\\n /*rtl:end:ignore*/\\n.flatpickr-months .flatpickr-prev-month:hover,.flatpickr-months .flatpickr-next-month:hover{color:#959ea9}.flatpickr-months .flatpickr-prev-month:hover svg,.flatpickr-months .flatpickr-next-month:hover svg{fill:#f64747}.flatpickr-months .flatpickr-prev-month svg,.flatpickr-months .flatpickr-next-month svg{width:14px;height:14px}.flatpickr-months .flatpickr-prev-month svg path,.flatpickr-months .flatpickr-next-month svg path{-webkit-transition:fill .1s;transition:fill .1s;fill:inherit}.numInputWrapper{position:relative;height:auto}.numInputWrapper input,.numInputWrapper span{display:inline-block}.numInputWrapper input{width:100%}.numInputWrapper input::-ms-clear{display:none}.numInputWrapper input::-webkit-outer-spin-button,.numInputWrapper input::-webkit-inner-spin-button{margin:0;-webkit-appearance:none}.numInputWrapper span{position:absolute;right:0;width:14px;padding:0 4px 0 2px;height:50%;line-height:50%;opacity:0;cursor:pointer;border:1px solid rgba(57,57,57,0.15);-webkit-box-sizing:border-box;box-sizing:border-box}.numInputWrapper span:hover{background:rgba(0,0,0,0.1)}.numInputWrapper span:active{background:rgba(0,0,0,0.2)}.numInputWrapper span:after{display:block;content:\\\"\\\";position:absolute}.numInputWrapper span.arrowUp{top:0;border-bottom:0}.numInputWrapper span.arrowUp:after{border-left:4px solid transparent;border-right:4px solid transparent;border-bottom:4px solid rgba(57,57,57,0.6);top:26%}.numInputWrapper span.arrowDown{top:50%}.numInputWrapper span.arrowDown:after{border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px solid rgba(57,57,57,0.6);top:40%}.numInputWrapper span svg{width:inherit;height:auto}.numInputWrapper span svg path{fill:rgba(0,0,0,0.5)}.numInputWrapper:hover{background:rgba(0,0,0,0.05)}.numInputWrapper:hover span{opacity:1}.flatpickr-current-month{font-size:135%;line-height:inherit;font-weight:300;color:inherit;position:absolute;width:75%;left:12.5%;padding:7.48px 0 0 0;line-height:1;height:34px;display:inline-block;text-align:center;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.flatpickr-current-month span.cur-month{font-family:inherit;font-weight:700;color:inherit;display:inline-block;margin-left:.5ch;padding:0}.flatpickr-current-month span.cur-month:hover{background:rgba(0,0,0,0.05)}.flatpickr-current-month .numInputWrapper{width:6ch;width:7ch\\\\0;display:inline-block}.flatpickr-current-month .numInputWrapper span.arrowUp:after{border-bottom-color:rgba(0,0,0,0.9)}.flatpickr-current-month .numInputWrapper span.arrowDown:after{border-top-color:rgba(0,0,0,0.9)}.flatpickr-current-month input.cur-year{background:transparent;-webkit-box-sizing:border-box;box-sizing:border-box;color:inherit;cursor:text;padding:0 0 0 .5ch;margin:0;display:inline-block;font-size:inherit;font-family:inherit;font-weight:300;line-height:inherit;height:auto;border:0;border-radius:0;vertical-align:initial;-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.flatpickr-current-month input.cur-year:focus{outline:0}.flatpickr-current-month input.cur-year[disabled],.flatpickr-current-month input.cur-year[disabled]:hover{font-size:100%;color:rgba(0,0,0,0.5);background:transparent;pointer-events:none}.flatpickr-current-month .flatpickr-monthDropdown-months{appearance:menulist;background:transparent;border:none;border-radius:0;box-sizing:border-box;color:inherit;cursor:pointer;font-size:inherit;font-family:inherit;font-weight:300;height:auto;line-height:inherit;margin:-1px 0 0 0;outline:none;padding:0 0 0 .5ch;position:relative;vertical-align:initial;-webkit-box-sizing:border-box;-webkit-appearance:menulist;-moz-appearance:menulist;width:auto}.flatpickr-current-month .flatpickr-monthDropdown-months:focus,.flatpickr-current-month .flatpickr-monthDropdown-months:active{outline:none}.flatpickr-current-month .flatpickr-monthDropdown-months:hover{background:rgba(0,0,0,0.05)}.flatpickr-current-month .flatpickr-monthDropdown-months .flatpickr-monthDropdown-month{background-color:transparent;outline:none;padding:0}.flatpickr-weekdays{background:transparent;text-align:center;overflow:hidden;width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;height:28px}.flatpickr-weekdays .flatpickr-weekdaycontainer{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}span.flatpickr-weekday{cursor:default;font-size:90%;background:transparent;color:rgba(0,0,0,0.54);line-height:1;margin:0;text-align:center;display:block;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;font-weight:bolder}.dayContainer,.flatpickr-weeks{padding:1px 0 0 0}.flatpickr-days{position:relative;overflow:hidden;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:flex-start;width:307.875px}.flatpickr-days:focus{outline:0}.dayContainer{padding:0;outline:0;text-align:left;width:307.875px;min-width:307.875px;max-width:307.875px;-webkit-box-sizing:border-box;box-sizing:border-box;display:inline-block;display:-ms-flexbox;display:-webkit-box;display:-webkit-flex;display:flex;-webkit-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-wrap:wrap;-ms-flex-pack:justify;-webkit-justify-content:space-around;justify-content:space-around;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}.dayContainer + .dayContainer{-webkit-box-shadow:-1px 0 0 #e6e6e6;box-shadow:-1px 0 0 #e6e6e6}.flatpickr-day{background:none;border:1px solid transparent;border-radius:150px;-webkit-box-sizing:border-box;box-sizing:border-box;color:#393939;cursor:pointer;font-weight:400;width:14.2857143%;-webkit-flex-basis:14.2857143%;-ms-flex-preferred-size:14.2857143%;flex-basis:14.2857143%;max-width:39px;height:39px;line-height:39px;margin:0;display:inline-block;position:relative;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;text-align:center}.flatpickr-day.inRange,.flatpickr-day.prevMonthDay.inRange,.flatpickr-day.nextMonthDay.inRange,.flatpickr-day.today.inRange,.flatpickr-day.prevMonthDay.today.inRange,.flatpickr-day.nextMonthDay.today.inRange,.flatpickr-day:hover,.flatpickr-day.prevMonthDay:hover,.flatpickr-day.nextMonthDay:hover,.flatpickr-day:focus,.flatpickr-day.prevMonthDay:focus,.flatpickr-day.nextMonthDay:focus{cursor:pointer;outline:0;background:#e6e6e6;border-color:#e6e6e6}.flatpickr-day.today{border-color:#959ea9}.flatpickr-day.today:hover,.flatpickr-day.today:focus{border-color:#959ea9;background:#959ea9;color:#fff}.flatpickr-day.selected,.flatpickr-day.startRange,.flatpickr-day.endRange,.flatpickr-day.selected.inRange,.flatpickr-day.startRange.inRange,.flatpickr-day.endRange.inRange,.flatpickr-day.selected:focus,.flatpickr-day.startRange:focus,.flatpickr-day.endRange:focus,.flatpickr-day.selected:hover,.flatpickr-day.startRange:hover,.flatpickr-day.endRange:hover,.flatpickr-day.selected.prevMonthDay,.flatpickr-day.startRange.prevMonthDay,.flatpickr-day.endRange.prevMonthDay,.flatpickr-day.selected.nextMonthDay,.flatpickr-day.startRange.nextMonthDay,.flatpickr-day.endRange.nextMonthDay{background:#569ff7;-webkit-box-shadow:none;box-shadow:none;color:#fff;border-color:#569ff7}.flatpickr-day.selected.startRange,.flatpickr-day.startRange.startRange,.flatpickr-day.endRange.startRange{border-radius:50px 0 0 50px}.flatpickr-day.selected.endRange,.flatpickr-day.startRange.endRange,.flatpickr-day.endRange.endRange{border-radius:0 50px 50px 0}.flatpickr-day.selected.startRange + .endRange:not(:nth-child(7n+1)),.flatpickr-day.startRange.startRange + .endRange:not(:nth-child(7n+1)),.flatpickr-day.endRange.startRange + .endRange:not(:nth-child(7n+1)){-webkit-box-shadow:-10px 0 0 #569ff7;box-shadow:-10px 0 0 #569ff7}.flatpickr-day.selected.startRange.endRange,.flatpickr-day.startRange.startRange.endRange,.flatpickr-day.endRange.startRange.endRange{border-radius:50px}.flatpickr-day.inRange{border-radius:0;-webkit-box-shadow:-5px 0 0 #e6e6e6,5px 0 0 #e6e6e6;box-shadow:-5px 0 0 #e6e6e6,5px 0 0 #e6e6e6}.flatpickr-day.flatpickr-disabled,.flatpickr-day.flatpickr-disabled:hover,.flatpickr-day.prevMonthDay,.flatpickr-day.nextMonthDay,.flatpickr-day.notAllowed,.flatpickr-day.notAllowed.prevMonthDay,.flatpickr-day.notAllowed.nextMonthDay{color:rgba(57,57,57,0.3);background:transparent;border-color:transparent;cursor:default}.flatpickr-day.flatpickr-disabled,.flatpickr-day.flatpickr-disabled:hover{cursor:not-allowed;color:rgba(57,57,57,0.1)}.flatpickr-day.week.selected{border-radius:0;-webkit-box-shadow:-5px 0 0 #569ff7,5px 0 0 #569ff7;box-shadow:-5px 0 0 #569ff7,5px 0 0 #569ff7}.flatpickr-day.hidden{visibility:hidden}.rangeMode .flatpickr-day{margin-top:1px}.flatpickr-weekwrapper{float:left}.flatpickr-weekwrapper .flatpickr-weeks{padding:0 12px;-webkit-box-shadow:1px 0 0 #e6e6e6;box-shadow:1px 0 0 #e6e6e6}.flatpickr-weekwrapper .flatpickr-weekday{float:none;width:100%;line-height:28px}.flatpickr-weekwrapper span.flatpickr-day,.flatpickr-weekwrapper span.flatpickr-day:hover{display:block;width:100%;max-width:none;color:rgba(57,57,57,0.3);background:transparent;cursor:default;border:none}.flatpickr-innerContainer{display:block;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden}.flatpickr-rContainer{display:inline-block;padding:0;-webkit-box-sizing:border-box;box-sizing:border-box}.flatpickr-time{text-align:center;outline:0;display:block;height:0;line-height:40px;max-height:40px;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.flatpickr-time:after{content:\\\"\\\";display:table;clear:both}.flatpickr-time .numInputWrapper{-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;width:40%;height:40px;float:left}.flatpickr-time .numInputWrapper span.arrowUp:after{border-bottom-color:#393939}.flatpickr-time .numInputWrapper span.arrowDown:after{border-top-color:#393939}.flatpickr-time.hasSeconds .numInputWrapper{width:26%}.flatpickr-time.time24hr .numInputWrapper{width:49%}.flatpickr-time input{background:transparent;-webkit-box-shadow:none;box-shadow:none;border:0;border-radius:0;text-align:center;margin:0;padding:0;height:inherit;line-height:inherit;color:#393939;font-size:14px;position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.flatpickr-time input.flatpickr-hour{font-weight:bold}.flatpickr-time input.flatpickr-minute,.flatpickr-time input.flatpickr-second{font-weight:400}.flatpickr-time input:focus{outline:0;border:0}.flatpickr-time .flatpickr-time-separator,.flatpickr-time .flatpickr-am-pm{height:inherit;float:left;line-height:inherit;color:#393939;font-weight:bold;width:2%;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-align-self:center;-ms-flex-item-align:center;align-self:center}.flatpickr-time .flatpickr-am-pm{outline:0;width:18%;cursor:pointer;text-align:center;font-weight:400}.flatpickr-time input:hover,.flatpickr-time .flatpickr-am-pm:hover,.flatpickr-time input:focus,.flatpickr-time .flatpickr-am-pm:focus{background:#eee}.flatpickr-input[readonly]{cursor:pointer}@-webkit-keyframes fpFadeInDown{from{opacity:0;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@keyframes fpFadeInDown{from{opacity:0;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","\"use strict\";\n\n/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n*/\nmodule.exports = function (cssWithMappingToString) {\n var list = [];\n\n // return the list of modules as css string\n list.toString = function toString() {\n return this.map(function (item) {\n var content = \"\";\n var needLayer = typeof item[5] !== \"undefined\";\n if (item[4]) {\n content += \"@supports (\".concat(item[4], \") {\");\n }\n if (item[2]) {\n content += \"@media \".concat(item[2], \" {\");\n }\n if (needLayer) {\n content += \"@layer\".concat(item[5].length > 0 ? \" \".concat(item[5]) : \"\", \" {\");\n }\n content += cssWithMappingToString(item);\n if (needLayer) {\n content += \"}\";\n }\n if (item[2]) {\n content += \"}\";\n }\n if (item[4]) {\n content += \"}\";\n }\n return content;\n }).join(\"\");\n };\n\n // import a list of modules into the list\n list.i = function i(modules, media, dedupe, supports, layer) {\n if (typeof modules === \"string\") {\n modules = [[null, modules, undefined]];\n }\n var alreadyImportedModules = {};\n if (dedupe) {\n for (var k = 0; k < this.length; k++) {\n var id = this[k][0];\n if (id != null) {\n alreadyImportedModules[id] = true;\n }\n }\n }\n for (var _k = 0; _k < modules.length; _k++) {\n var item = [].concat(modules[_k]);\n if (dedupe && alreadyImportedModules[item[0]]) {\n continue;\n }\n if (typeof layer !== \"undefined\") {\n if (typeof item[5] === \"undefined\") {\n item[5] = layer;\n } else {\n item[1] = \"@layer\".concat(item[5].length > 0 ? \" \".concat(item[5]) : \"\", \" {\").concat(item[1], \"}\");\n item[5] = layer;\n }\n }\n if (media) {\n if (!item[2]) {\n item[2] = media;\n } else {\n item[1] = \"@media \".concat(item[2], \" {\").concat(item[1], \"}\");\n item[2] = media;\n }\n }\n if (supports) {\n if (!item[4]) {\n item[4] = \"\".concat(supports);\n } else {\n item[1] = \"@supports (\".concat(item[4], \") {\").concat(item[1], \"}\");\n item[4] = supports;\n }\n }\n list.push(item);\n }\n };\n return list;\n};","\"use strict\";\n\nmodule.exports = function (item) {\n var content = item[1];\n var cssMapping = item[3];\n if (!cssMapping) {\n return content;\n }\n if (typeof btoa === \"function\") {\n var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(cssMapping))));\n var data = \"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(base64);\n var sourceMapping = \"/*# \".concat(data, \" */\");\n return [content].concat([sourceMapping]).join(\"\\n\");\n }\n return [content].join(\"\\n\");\n};","'use strict';\n\nvar m = require('react-dom');\nif (process.env.NODE_ENV === 'production') {\n exports.createRoot = m.createRoot;\n exports.hydrateRoot = m.hydrateRoot;\n} else {\n var i = m.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\n exports.createRoot = function(c, o) {\n i.usingClientEntryPoint = true;\n try {\n return m.createRoot(c, o);\n } finally {\n i.usingClientEntryPoint = false;\n }\n };\n exports.hydrateRoot = function(c, h, o) {\n i.usingClientEntryPoint = true;\n try {\n return m.hydrateRoot(c, h, o);\n } finally {\n i.usingClientEntryPoint = false;\n }\n };\n}\n","/* global Map:readonly, Set:readonly, ArrayBuffer:readonly */\n\nvar hasElementType = typeof Element !== 'undefined';\nvar hasMap = typeof Map === 'function';\nvar hasSet = typeof Set === 'function';\nvar hasArrayBuffer = typeof ArrayBuffer === 'function' && !!ArrayBuffer.isView;\n\n// Note: We **don't** need `envHasBigInt64Array` in fde es6/index.js\n\nfunction equal(a, b) {\n // START: fast-deep-equal es6/index.js 3.1.3\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n // START: Modifications:\n // 1. Extra `has &&` helpers in initial condition allow es6 code\n // to co-exist with es5.\n // 2. Replace `for of` with es5 compliant iteration using `for`.\n // Basically, take:\n //\n // ```js\n // for (i of a.entries())\n // if (!b.has(i[0])) return false;\n // ```\n //\n // ... and convert to:\n //\n // ```js\n // it = a.entries();\n // while (!(i = it.next()).done)\n // if (!b.has(i.value[0])) return false;\n // ```\n //\n // **Note**: `i` access switches to `i.value`.\n var it;\n if (hasMap && (a instanceof Map) && (b instanceof Map)) {\n if (a.size !== b.size) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!b.has(i.value[0])) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!equal(i.value[1], b.get(i.value[0]))) return false;\n return true;\n }\n\n if (hasSet && (a instanceof Set) && (b instanceof Set)) {\n if (a.size !== b.size) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!b.has(i.value[0])) return false;\n return true;\n }\n // END: Modifications\n\n if (hasArrayBuffer && ArrayBuffer.isView(a) && ArrayBuffer.isView(b)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (a[i] !== b[i]) return false;\n return true;\n }\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n // START: Modifications:\n // Apply guards for `Object.create(null)` handling. See:\n // - https://github.com/FormidableLabs/react-fast-compare/issues/64\n // - https://github.com/epoberezkin/fast-deep-equal/issues/49\n if (a.valueOf !== Object.prototype.valueOf && typeof a.valueOf === 'function' && typeof b.valueOf === 'function') return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString && typeof a.toString === 'function' && typeof b.toString === 'function') return a.toString() === b.toString();\n // END: Modifications\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n // END: fast-deep-equal\n\n // START: react-fast-compare\n // custom handling for DOM elements\n if (hasElementType && a instanceof Element) return false;\n\n // custom handling for React/Preact\n for (i = length; i-- !== 0;) {\n if ((keys[i] === '_owner' || keys[i] === '__v' || keys[i] === '__o') && a.$$typeof) {\n // React-specific: avoid traversing React elements' _owner\n // Preact-specific: avoid traversing Preact elements' __v and __o\n // __v = $_original / $_vnode\n // __o = $_owner\n // These properties contain circular references and are not needed when\n // comparing the actual elements (and not their owners)\n // .$$typeof and ._store on just reasonable markers of elements\n\n continue;\n }\n\n // all other properties should be traversed as usual\n if (!equal(a[keys[i]], b[keys[i]])) return false;\n }\n // END: react-fast-compare\n\n // START: fast-deep-equal\n return true;\n }\n\n return a !== a && b !== b;\n}\n// end fast-deep-equal\n\nmodule.exports = function isEqual(a, b) {\n try {\n return equal(a, b);\n } catch (error) {\n if (((error.message || '').match(/stack|recursion/i))) {\n // warn on circular references, don't crash\n // browsers give this different errors name and messages:\n // chrome/safari: \"RangeError\", \"Maximum call stack size exceeded\"\n // firefox: \"InternalError\", too much recursion\"\n // edge: \"Error\", \"Out of stack space\"\n console.warn('react-fast-compare cannot handle circular refs');\n return false;\n }\n // some other error. we should definitely know about these\n throw error;\n }\n};\n","\"use strict\";\n\nvar stylesInDOM = [];\nfunction getIndexByIdentifier(identifier) {\n var result = -1;\n for (var i = 0; i < stylesInDOM.length; i++) {\n if (stylesInDOM[i].identifier === identifier) {\n result = i;\n break;\n }\n }\n return result;\n}\nfunction modulesToDom(list, options) {\n var idCountMap = {};\n var identifiers = [];\n for (var i = 0; i < list.length; i++) {\n var item = list[i];\n var id = options.base ? item[0] + options.base : item[0];\n var count = idCountMap[id] || 0;\n var identifier = \"\".concat(id, \" \").concat(count);\n idCountMap[id] = count + 1;\n var indexByIdentifier = getIndexByIdentifier(identifier);\n var obj = {\n css: item[1],\n media: item[2],\n sourceMap: item[3],\n supports: item[4],\n layer: item[5]\n };\n if (indexByIdentifier !== -1) {\n stylesInDOM[indexByIdentifier].references++;\n stylesInDOM[indexByIdentifier].updater(obj);\n } else {\n var updater = addElementStyle(obj, options);\n options.byIndex = i;\n stylesInDOM.splice(i, 0, {\n identifier: identifier,\n updater: updater,\n references: 1\n });\n }\n identifiers.push(identifier);\n }\n return identifiers;\n}\nfunction addElementStyle(obj, options) {\n var api = options.domAPI(options);\n api.update(obj);\n var updater = function updater(newObj) {\n if (newObj) {\n if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap && newObj.supports === obj.supports && newObj.layer === obj.layer) {\n return;\n }\n api.update(obj = newObj);\n } else {\n api.remove();\n }\n };\n return updater;\n}\nmodule.exports = function (list, options) {\n options = options || {};\n list = list || [];\n var lastIdentifiers = modulesToDom(list, options);\n return function update(newList) {\n newList = newList || [];\n for (var i = 0; i < lastIdentifiers.length; i++) {\n var identifier = lastIdentifiers[i];\n var index = getIndexByIdentifier(identifier);\n stylesInDOM[index].references--;\n }\n var newLastIdentifiers = modulesToDom(newList, options);\n for (var _i = 0; _i < lastIdentifiers.length; _i++) {\n var _identifier = lastIdentifiers[_i];\n var _index = getIndexByIdentifier(_identifier);\n if (stylesInDOM[_index].references === 0) {\n stylesInDOM[_index].updater();\n stylesInDOM.splice(_index, 1);\n }\n }\n lastIdentifiers = newLastIdentifiers;\n };\n};","\"use strict\";\n\nvar memo = {};\n\n/* istanbul ignore next */\nfunction getTarget(target) {\n if (typeof memo[target] === \"undefined\") {\n var styleTarget = document.querySelector(target);\n\n // Special case to return head of iframe instead of iframe itself\n if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {\n try {\n // This will throw an exception if access to iframe is blocked\n // due to cross-origin restrictions\n styleTarget = styleTarget.contentDocument.head;\n } catch (e) {\n // istanbul ignore next\n styleTarget = null;\n }\n }\n memo[target] = styleTarget;\n }\n return memo[target];\n}\n\n/* istanbul ignore next */\nfunction insertBySelector(insert, style) {\n var target = getTarget(insert);\n if (!target) {\n throw new Error(\"Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.\");\n }\n target.appendChild(style);\n}\nmodule.exports = insertBySelector;","\"use strict\";\n\n/* istanbul ignore next */\nfunction insertStyleElement(options) {\n var element = document.createElement(\"style\");\n options.setAttributes(element, options.attributes);\n options.insert(element, options.options);\n return element;\n}\nmodule.exports = insertStyleElement;","\"use strict\";\n\n/* istanbul ignore next */\nfunction setAttributesWithoutAttributes(styleElement) {\n var nonce = typeof __webpack_nonce__ !== \"undefined\" ? __webpack_nonce__ : null;\n if (nonce) {\n styleElement.setAttribute(\"nonce\", nonce);\n }\n}\nmodule.exports = setAttributesWithoutAttributes;","\"use strict\";\n\n/* istanbul ignore next */\nfunction apply(styleElement, options, obj) {\n var css = \"\";\n if (obj.supports) {\n css += \"@supports (\".concat(obj.supports, \") {\");\n }\n if (obj.media) {\n css += \"@media \".concat(obj.media, \" {\");\n }\n var needLayer = typeof obj.layer !== \"undefined\";\n if (needLayer) {\n css += \"@layer\".concat(obj.layer.length > 0 ? \" \".concat(obj.layer) : \"\", \" {\");\n }\n css += obj.css;\n if (needLayer) {\n css += \"}\";\n }\n if (obj.media) {\n css += \"}\";\n }\n if (obj.supports) {\n css += \"}\";\n }\n var sourceMap = obj.sourceMap;\n if (sourceMap && typeof btoa !== \"undefined\") {\n css += \"\\n/*# sourceMappingURL=data:application/json;base64,\".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), \" */\");\n }\n\n // For old IE\n /* istanbul ignore if */\n options.styleTagTransform(css, styleElement, options.options);\n}\nfunction removeStyleElement(styleElement) {\n // istanbul ignore if\n if (styleElement.parentNode === null) {\n return false;\n }\n styleElement.parentNode.removeChild(styleElement);\n}\n\n/* istanbul ignore next */\nfunction domAPI(options) {\n if (typeof document === \"undefined\") {\n return {\n update: function update() {},\n remove: function remove() {}\n };\n }\n var styleElement = options.insertStyleElement(options);\n return {\n update: function update(obj) {\n apply(styleElement, options, obj);\n },\n remove: function remove() {\n removeStyleElement(styleElement);\n }\n };\n}\nmodule.exports = domAPI;","\"use strict\";\n\n/* istanbul ignore next */\nfunction styleTagTransform(css, styleElement) {\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}\nmodule.exports = styleTagTransform;","module.exports = require(\"react-dom\");","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","__webpack_require__.amdD = function () {\n\tthrow new Error('define cannot be used indirect');\n};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.p = \"\";","__webpack_require__.nc = undefined;","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"react\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"prop-types\");","import { createContext } from 'react';\n\nconst AccordionContext = createContext();\n\nexport default AccordionContext;\n","import { createContext } from 'react';\n\nconst AccordionItemContext = createContext();\n\nexport default AccordionItemContext;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nfunction Icon({\n className,\n family,\n type,\n ...rest\n}) {\n function getCSSClasses() {\n const fontFamily = family || 'fa';\n\n return [\n 'tyk-icon',\n fontFamily,\n `${fontFamily}-${type}`,\n className,\n ].filter(Boolean).join(' ');\n }\n\n return ;\n}\n\nIcon.propTypes = {\n className: PropTypes.string,\n family: PropTypes.string,\n type: PropTypes.string.isRequired,\n};\n\nexport default Icon;\n","import React, { useContext } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Icon from '../../Icon';\nimport AccordionItemContext from './AccordionItemContext';\n\nfunction ItemTrigger({ wrap }) {\n const { collapsed, disabled, toggleChange } = useContext(AccordionItemContext);\n\n const iconType = collapsed ? 'chevron-down' : 'chevron-up';\n const classes = [\n 'tyk-accordion__trigger',\n disabled && 'tyk-accordion__trigger--disabled',\n ].filter(Boolean).join(' ');\n const trigger = (\n \n \n \n );\n\n return wrap\n ?
    {trigger}
    \n : trigger;\n}\n\nItemTrigger.propTypes = {\n wrap: PropTypes.bool,\n};\n\nexport default ItemTrigger;\n","import React, {\n useMemo, useState, useContext, forwardRef,\n} from 'react';\nimport PropTypes from 'prop-types';\n\nimport AccordionContext from './AccordionContext';\nimport AccordionItemContext from './AccordionItemContext';\nimport ItemTrigger from './AccordionItemTrigger';\n\nfunction AccordionItem({\n collapsed: collapsedProp,\n children,\n className,\n disabled,\n}, ref) {\n const { arrow } = useContext(AccordionContext);\n const [collapsed, setCollapsed] = useState(collapsedProp);\n\n const toggleChange = () => {\n if (disabled) {\n return;\n }\n\n setCollapsed(!collapsed);\n };\n\n const classes = useMemo(() => [\n 'tyk-accordion__item',\n arrow.expandToContent\n ? `tyk-accordion__item--trigger-position-${arrow.position}`\n : 'tyk-accordion__item--trigger-in-header',\n className,\n collapsed === false && 'tyk-accordion__item--active',\n ].filter(Boolean).join(' '), [arrow, className, collapsed]);\n\n const contextValue = useMemo(() => ({\n collapsed,\n disabled,\n toggleChange,\n }), [collapsed, disabled, toggleChange]);\n\n return (\n
    \n \n {arrow.expandToContent && (\n \n )}\n {children}\n \n
    \n );\n}\n\nAccordionItem.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n collapsed: PropTypes.bool,\n className: PropTypes.string,\n disabled: PropTypes.bool,\n};\n\nAccordionItem.defaultProps = {\n collapsed: false,\n};\n\nexport default forwardRef(AccordionItem);\n","import React, { useContext } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Icon from '../../Icon';\nimport AccordionContext from './AccordionContext';\nimport AccordionItemContext from './AccordionItemContext';\nimport ItemTrigger from './AccordionItemTrigger';\n\nfunction AccordionItemHeader({ className, children }) {\n const { collapsed, disabled, toggleChange } = useContext(AccordionItemContext);\n const { usearrowastrigger, arrow } = useContext(AccordionContext);\n const iconType = collapsed ? 'chevron-down' : 'chevron-up';\n const classes = [\n 'tyk-accordion__item-header',\n usearrowastrigger && 'tyk-accordion__arrow-trigger',\n className,\n ].filter(Boolean).join(' ');\n\n return (\n
    \n {\n !usearrowastrigger\n ? (\n \n {children}\n \n \n )\n : (\n <>\n {!arrow.expandToContent && arrow.position === 'left' && (\n \n )}\n
    {children}
    \n {!arrow.expandToContent && arrow.position === 'right' && (\n \n )}\n \n )\n }\n
    \n );\n}\n\nAccordionItemHeader.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n className: PropTypes.string,\n};\n\nexport default AccordionItemHeader;\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"react-transition-group\");","import { useEffect, useRef } from 'react';\n\nconst usePrevious = (value) => {\n const ref = useRef();\n useEffect(() => {\n ref.current = value;\n }, [value]);\n return ref.current;\n};\n\n/** @component */\nexport default usePrevious;\n","import { useEffect, useRef } from 'react';\n\nconst useTimeout = (callback, delay) => {\n const savedCallback = useRef();\n\n useEffect(() => {\n savedCallback.current = callback;\n },\n [callback]);\n\n useEffect(() => {\n function tick() {\n savedCallback.current();\n }\n if (delay !== null) {\n const id = setTimeout(tick, delay);\n return () => clearTimeout(id);\n }\n\n return () => {};\n },\n [delay]);\n};\n\n/** @component */\nexport default useTimeout;\n","import { useEffect, useRef } from 'react';\n\n/** @component */\nexport default function useInterval(callback, delay, ...args) {\n const savedCallback = useRef();\n\n useEffect(() => {\n savedCallback.current = callback;\n }, [callback]);\n\n /* eslint-disable consistent-return */\n useEffect(() => {\n function tick() {\n savedCallback.current(...args);\n }\n if (delay !== null && delay !== undefined) {\n const id = setInterval(tick, delay);\n return () => clearInterval(id);\n }\n }, [delay]);\n /* eslint-disable consistent-return */\n}\n","import { useEffect, useRef } from 'react';\n\nconst useEventListener = (eventName, handler, element) => {\n const savedHandler = useRef();\n useEffect(() => {\n savedHandler.current = handler;\n }, [handler]);\n\n useEffect(() => {\n const isSupported = element?.addEventListener;\n if (!isSupported) {\n // eslint-disable-next-line consistent-return\n return;\n }\n\n const eventListener = (event) => savedHandler.current(event);\n element.addEventListener(eventName, eventListener);\n\n // eslint-disable-next-line consistent-return\n return () => {\n element.removeEventListener(eventName, eventListener);\n };\n }, [eventName, element]);\n};\n\n/** @component */\nexport default useEventListener;\n","import { useCallback, useState, useLayoutEffect } from 'react';\n\nconst getSize = (el) => {\n if (!el) {\n return {\n width: 0,\n height: 0,\n };\n }\n\n return {\n width: el.offsetWidth,\n height: el.offsetHeight,\n };\n};\n\nconst useComponentSize = (ref) => {\n const [ComponentSize, setComponentSize] = useState(getSize(ref ? ref.current : {}));\n const handleResize = useCallback(() => {\n if (ref.current) {\n setComponentSize(getSize(ref.current));\n }\n }, [ref]);\n\n useLayoutEffect(() => {\n handleResize();\n\n let resizeObserver = new ResizeObserver(() => {\n handleResize();\n });\n resizeObserver.observe(ref.current);\n\n return () => {\n resizeObserver.disconnect(ref.current);\n resizeObserver = null;\n };\n }, [ref.current]);\n\n return ComponentSize;\n};\n\n/** @component */\nexport default useComponentSize;\n","import React, {\n useRef, useState, useCallback, useEffect,\n} from 'react';\nimport PropTypes from 'prop-types';\nimport { CSSTransition } from 'react-transition-group';\nimport { useEventListener, useComponentSize } from '../../hooks';\n\n/**\n * Collapsible is a component that helps you to collapse/expand any type of content\n */\nfunction Collapsible({\n className,\n collapsed,\n children,\n ...rest\n}) {\n const contentContainer = useRef(null);\n const collapseWrapper = useRef(null);\n const refContainerSize = useComponentSize(contentContainer);\n const [contentContainerStyle, setContentContainerStyle] = useState({\n // eslint-disable-next-line\n height: (collapsed) ? 0 : 'auto',\n });\n\n const setHeight = (height) => {\n setContentContainerStyle({\n height: `${height}px`,\n });\n };\n\n const getHeight = () => (contentContainer.current ? contentContainer.current.clientHeight : 0);\n\n const onEnter = () => {\n setHeight(getHeight());\n };\n\n const onExit = () => {\n setHeight(0);\n };\n\n useEffect(() => {\n if (!collapsed\n && refContainerSize?.height\n && contentContainerStyle.height !== refContainerSize?.height\n ) {\n setHeight(refContainerSize.height);\n }\n }, [refContainerSize.height]);\n\n const onWindowResize = useCallback(() => {\n if (!collapsed && contentContainer.current) {\n setHeight(getHeight());\n collapseWrapper.current.style.height = `${getHeight()}px`;\n }\n }, [collapsed, contentContainer.current]);\n\n useEventListener('resize', onWindowResize, window);\n\n return (\n \n \n \n { children }\n \n \n \n );\n}\n\nCollapsible.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]),\n /** Describes if the content of Collapsible should be hidden or not */\n collapsed: PropTypes.bool,\n /** CSS classes that can be passed to the Collapsible element */\n className: PropTypes.string,\n};\n\nexport default Collapsible;\n","import React, { useContext } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Collapsible from '../../Collapsible';\nimport AccordionItemContext from './AccordionItemContext';\n\nfunction AccordionItemContent({ children, className }) {\n const { collapsed } = useContext(AccordionItemContext);\n\n const classes = [\n 'tyk-accordion__item-content',\n className,\n ].filter(Boolean).join(' ');\n\n return (\n
    \n \n { children }\n \n
    \n );\n}\n\nAccordionItemContent.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n className: PropTypes.string,\n};\n\nexport default AccordionItemContent;\n","import React, { useMemo } from 'react';\nimport PropTypes from 'prop-types';\nimport AccordionItem from './js/AccordionItem';\nimport AccordionItemHeader from './js/AccordionItemHeader';\nimport AccordionItemContent from './js/AccordionItemContent';\nimport AccordionContext from './js/AccordionContext';\n\nfunction Accordion({\n className,\n children,\n usearrowastrigger,\n arrow = { position: 'right', expandToContent: false },\n}) {\n const classes = [\n 'tyk-accordion',\n className,\n ].filter(Boolean).join(' ');\n\n const contextValue = useMemo(() => ({\n usearrowastrigger,\n arrow,\n }), [usearrowastrigger, arrow]);\n\n return (\n
    \n \n {children}\n \n
    \n );\n}\n\nAccordion.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n className: PropTypes.string,\n usearrowastrigger: PropTypes.bool,\n arrow: PropTypes.shape({\n position: PropTypes.oneOf(['left', 'right']),\n expandToContent: PropTypes.bool,\n }),\n};\n\nAccordion.defaultProps = {\n usearrowastrigger: false,\n};\n\n// For Readme.md : Start\nAccordion.Item = AccordionItem;\nAccordion.Item.Header = AccordionItemHeader;\nAccordion.Item.Content = AccordionItemContent;\n// For Readme.md : End\n\nexport default Accordion;\n","import React, { Fragment, cloneElement } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Icon from '../Icon';\n\n/**\n * Button component.\n */\nconst Button = React.forwardRef((props, ref) => {\n const {\n customButton,\n children,\n iconType,\n iconFamily,\n iconPosition,\n iconOnly,\n id,\n className,\n disabled,\n display,\n href,\n onClick,\n noStyle,\n size,\n theme,\n type,\n ...rest\n } = props;\n\n const getCssClasses = () => {\n const cssClasses = ['tyk-button'].concat(className ? className.split(' ') : []);\n const sizeClass = (size) ? `tyk-button--${size}` : 'tyk-button--md';\n const disabledClass = (disabled) ? 'disabled' : '';\n const displayClass = display || '';\n const themeClass = theme ? `tyk-button--${theme}` : '';\n const iconOnlyClass = iconOnly ? 'tyk-button--icon-only' : '';\n const noStyleClass = noStyle ? 'tyk-button--no-style' : '';\n\n cssClasses.push(iconOnlyClass);\n cssClasses.push(themeClass);\n cssClasses.push(sizeClass);\n cssClasses.push(disabledClass);\n cssClasses.push(displayClass);\n cssClasses.push(noStyleClass);\n\n if (iconType) {\n cssClasses.push(`icon-${iconPosition || 'left'}`);\n }\n\n return cssClasses.join(' ');\n };\n\n const getButtonIcon = (position) => {\n const iPos = iconPosition || 'left';\n\n return (\n (iconType && iPos === position)\n ? \n : null\n );\n };\n\n const getButtonType = () => {\n let buttonType;\n\n if (customButton) {\n return (\n \n { cloneElement(customButton, {\n className: getCssClasses(),\n disabled,\n })\n }\n \n );\n }\n\n if (href) {\n buttonType = (\n \n { getButtonIcon('left') }\n { children }\n { getButtonIcon('right') }\n \n );\n } else {\n buttonType = (\n // eslint-disable-next-line react/button-has-type\n \n { getButtonIcon('left') }\n { children && {children} }\n { getButtonIcon('right') }\n \n );\n }\n\n return buttonType;\n };\n\n\n return (\n getButtonType()\n );\n});\n\nButton.propTypes = {\n /**\n * Content of a button. Can be a DOM element or a React component\n */\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n customButton: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n ]),\n className: PropTypes.string,\n /**\n * Display type: inline/block. Default is inline\n */\n display: PropTypes.string,\n /**\n * Sets the button disabled state\n */\n disabled: PropTypes.bool,\n /**\n * Having this property set the button will become a link\n */\n id: PropTypes.string,\n href: PropTypes.string,\n iconPosition: PropTypes.string, // left or right\n iconFamily: PropTypes.string,\n iconOnly: PropTypes.bool,\n iconType: PropTypes.string,\n noStyle: PropTypes.bool,\n /**\n * Callback function, called when the button si clicked\n */\n onClick: PropTypes.func,\n /**\n * Describes the appearence of the button (ex: primary, danger, primary-outline etc.)\n */\n theme: PropTypes.string,\n /**\n * Type of the button (ex: button, submit etc.)\n */\n type: PropTypes.string,\n /**\n * Describes the size of the button (sm, md, lg). Default one is md\n */\n size: PropTypes.string,\n};\n\nButton.defaultProps = {\n theme: '',\n type: 'button',\n};\n\nexport default Button;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\n/**\n * Tyk button component.\n */\nfunction ButtonGroup({\n className,\n children,\n label,\n}) {\n return (\n
    \n {Boolean(label) && (\n \n )}\n
    \n {children}\n
    \n
    \n );\n}\n\nButtonGroup.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n className: PropTypes.string,\n /**\n * Label that will sit above the button group\n */\n label: PropTypes.string,\n};\n\nexport default ButtonGroup;\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"echarts\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"immutable\");","export default (func, wait, immediate) => {\n let timeout;\n return function debouncer(...args) {\n const context = this;\n const later = () => {\n timeout = null;\n if (!immediate) {\n func.apply(context, args);\n }\n };\n const callNow = immediate && !timeout;\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n if (callNow) {\n func.apply(context, args);\n }\n };\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nfunction Loader({ className, position = 'relative', withbackground = false }) {\n const classes = [\n 'loading',\n position,\n className,\n ].filter(Boolean).join(' ');\n\n const loader = (\n
    \n
    \n
    \n
    \n
    \n
    \n );\n\n return withbackground\n ?
    {loader}
    \n : loader;\n}\n\nLoader.propTypes = {\n /** add a class to loader */\n className: PropTypes.string,\n /** position of loader (absolute / relative) */\n position: PropTypes.string,\n /** defines weather loader should be renders with or without background */\n withbackground: PropTypes.bool,\n};\n\nexport default Loader;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport Icon from '../Icon';\n\n/**\n * The Message component is used to highlight important content to the users.\n *\n * If the content you are displaying needs immediate attention or is a feedback,\n * consider using `toast` instead\n */\nfunction Message({\n children, theme, onClose, noMargin, className,\n}) {\n function getCssClasses() {\n return [\n 'tyk-message',\n `tyk-message--${theme || 'info'}`,\n noMargin && 'no-margin',\n className,\n ].filter(Boolean).join(' ');\n }\n\n const iconType = theme === 'success' ? 'check' : 'warning';\n\n return (\n
    \n \n
    \n { children }\n
    \n {onClose && (\n \n )}\n
    \n );\n}\n\nMessage.propTypes = {\n /** Set theme for message (eg. default, success, danger, etc) */\n theme: PropTypes.string,\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]),\n /** add a class to loader */\n className: PropTypes.string,\n /** Removes margins by adding `no-margin` class */\n noMargin: PropTypes.bool,\n /** Callback for clicking on the \"x\" */\n onClose: PropTypes.func,\n};\n\nexport default Message;\n","import React, {\n useState, useEffect, useRef, memo,\n} from 'react';\nimport PropTypes from 'prop-types';\nimport * as echarts from 'echarts';\nimport { fromJS } from 'immutable';\n\nimport debounce from '../../utils/debounce';\nimport { usePrevious } from '../../hooks';\nimport Loader from '../Loader';\nimport Message from '../Message';\nimport worldMap from './maps/world.json';\n\necharts.registerMap('world', worldMap);\n\nconst Chart = (props) => {\n const {\n areaStyleColors,\n dataLoaded,\n hasData,\n highlight,\n type,\n option,\n series,\n onChange,\n zoomStart,\n zoomEnd,\n title,\n seriesConfig = [],\n noDataComponent = null,\n zoomColors,\n } = props;\n const [tykChartInstance, setTykChartInstance] = useState(null);\n const chartWrapperRef = useRef(null);\n const onResize = () => {\n if (tykChartInstance) {\n tykChartInstance.resize();\n }\n };\n\n const lineBarChart = {\n defaultOpts: fromJS({\n title: {\n show: true,\n text: title,\n left: 0,\n },\n color: [],\n toolbox: {\n right: '0',\n orient: 'horizontal',\n itemSize: 15,\n showTitle: true,\n feature: null,\n },\n dataZoom: [{\n show: true,\n start: 0,\n end: 100,\n orient: 'horizontal',\n dataBackground: {\n lineStyle: {\n color: zoomColors?.lineStyle || '#368493',\n },\n areaStyle: {\n color: zoomColors?.areaStyle || '#368493',\n },\n },\n handleStyle: {\n color: zoomColors?.handleStyle || '#368493',\n },\n textStyle: {\n color: zoomColors?.textStyle || '#368493',\n },\n borderColor: 'transparent',\n fillerColor: zoomColors?.fillerColor || 'rgba(54, 132, 147, 0.1)',\n }],\n legend: {\n show: false,\n // data: [],\n // right: '1%',\n },\n tooltip: {\n trigger: 'axis',\n axisPointer: {\n type: 'cross',\n },\n },\n grid: {\n left: '1%',\n right: '1%',\n bottom: '50px',\n top: '40px',\n containLabel: true,\n },\n xAxis: {\n boundaryGap: false,\n type: 'category',\n splitLine: {\n show: true,\n lineStyle: {\n type: 'dotted',\n color: '#F0F0F0',\n },\n },\n axisLine: {\n show: false,\n },\n axisTick: {\n show: false,\n },\n data: [],\n },\n yAxis: {\n min: 'dataMin',\n boundaryGap: true,\n axisPointer: {\n show: true,\n },\n splitLine: {\n lineStyle: {\n type: 'dotted',\n color: '#F0F0F0',\n },\n show: true,\n },\n axisLabel: {\n show: true,\n },\n axisLine: {\n show: true,\n },\n axisTick: {\n show: false,\n },\n type: 'value',\n },\n textStyle: {\n color: '#5a5a68',\n },\n series: [],\n animationEasing: 'elasticOut',\n }),\n seriesDefault: fromJS({\n data: [],\n type: 'line',\n areaStyle: {\n opacity: 1,\n color: areaStyleColors ? new echarts.graphic.LinearGradient(0, 0, 1, 1,\n areaStyleColors.map((color, index) => ({\n offset: index,\n color,\n }))) : [],\n },\n smooth: false,\n symbolSize: 7,\n name: '',\n }),\n };\n\n const pieChart = {\n defaultOpts: fromJS({\n tooltip: {\n trigger: 'axis',\n formatter: '{b}: {c} ({d}%)',\n },\n legend: {\n orient: 'horizontal',\n x: 'left',\n y: 'top',\n data: [],\n },\n color: [],\n series: [],\n }),\n seriesDefault: fromJS({\n type: 'pie',\n center: [\n '50%',\n '55%',\n ],\n radius: [\n '50%',\n '75%',\n ],\n avoidLabelOverlap: false,\n animationType: 'scale',\n animationEasing: 'elasticOut',\n labelLine: {\n normal: {\n show: true,\n smooth: 0.2,\n length: 6,\n length2: 6,\n },\n },\n data: [],\n }),\n };\n\n const geoChart = {\n defaultOpts: fromJS({\n series: [],\n }),\n seriesDefault: fromJS({\n type: 'map',\n data: [],\n }),\n };\n\n const buildChartOptions = (selectedType, selectedOptions, selectedSeries) => {\n let finalOpts = {};\n switch (selectedType) {\n case 'pie': {\n finalOpts = pieChart.defaultOpts.mergeDeep(fromJS(selectedOptions)).toJS();\n\n selectedSeries.forEach((entry) => {\n finalOpts.series.push(pieChart.seriesDefault.mergeDeep(fromJS(entry)).toJS());\n });\n\n break;\n }\n\n case 'geo': {\n finalOpts = geoChart.defaultOpts.mergeDeep(fromJS(selectedOptions)).toJS();\n\n selectedSeries.forEach((entry) => {\n finalOpts.series.push(geoChart.seriesDefault.mergeDeep(fromJS(entry)).toJS());\n });\n\n break;\n }\n\n default: {\n finalOpts = lineBarChart.defaultOpts.mergeDeep(fromJS(selectedOptions)).toJS();\n if (Array.isArray(selectedOptions.yAxis)) {\n finalOpts.yAxis = selectedOptions.yAxis;\n }\n\n selectedSeries.forEach((entry, index) => {\n const seriesData = Object.assign(\n {},\n lineBarChart.seriesDefault.toJS(),\n seriesConfig[index], entry,\n );\n finalOpts.series.push(seriesData);\n });\n break;\n }\n }\n return finalOpts;\n };\n\n useEffect(() => {\n window.addEventListener('resize', onResize);\n\n return () => {\n window.removeEventListener('resize', onResize);\n };\n }, [tykChartInstance]);\n\n useEffect(() => {\n\n if (!chartWrapperRef?.current) {\n return;\n }\n\n setTykChartInstance(echarts.init(chartWrapperRef.current));\n return () => {\n if (tykChartInstance) {\n tykChartInstance.dispose();\n }\n };\n }, [chartWrapperRef.current]);\n\n const eventCallBack = (e) => {\n if (onChange) {\n onChange(e);\n }\n };\n\n useEffect(() => {\n let debouncedMethod;\n if (tykChartInstance) {\n debouncedMethod = debounce(eventCallBack, 500);\n tykChartInstance.on('dataZoom', debouncedMethod);\n tykChartInstance.on('restore', debouncedMethod);\n tykChartInstance.on('click', debouncedMethod);\n\n tykChartInstance.on('mousemove', (params) => {\n if (params.data) {\n tykChartInstance.getZr().setCursorStyle('pointer');\n }\n });\n }\n\n return () => {\n if (tykChartInstance) {\n tykChartInstance.off('dataZoom', debouncedMethod);\n tykChartInstance.off('restore', debouncedMethod);\n tykChartInstance.off('click', debouncedMethod);\n }\n };\n }, [tykChartInstance, onChange]);\n\n const prevInstance = usePrevious(tykChartInstance);\n const prevOption = usePrevious(option);\n const prevType = usePrevious(type);\n const prevSeries = usePrevious(series);\n useEffect(() => {\n if (\n tykChartInstance\n && (\n !fromJS(prevInstance)?.equals?.(fromJS(tykChartInstance))\n || !fromJS(prevOption)?.equals?.(fromJS(option))\n || (prevType !== type)\n || !fromJS(prevSeries).equals?.(fromJS(series))\n )\n ) {\n tykChartInstance.clear();\n tykChartInstance.setOption(buildChartOptions(type, option, series));\n tykChartInstance.dispatchAction({\n type: 'takeGlobalCursor',\n key: 'dataZoomSelect',\n dataZoomSelectActive: true,\n });\n }\n }, [tykChartInstance, option, series, type]);\n\n useEffect(() => {\n if (tykChartInstance && highlight) {\n tykChartInstance.dispatchAction({\n type: 'highlight',\n seriesIndex: highlight.seriesIndex,\n dataIndex: highlight.dataIndex,\n });\n tykChartInstance.dispatchAction({\n type: 'showTip',\n seriesIndex: highlight.seriesIndex,\n dataIndex: highlight.dataIndex,\n });\n }\n }, [highlight]);\n\n\n const prevZoomStart = usePrevious(zoomStart);\n const prevZoomEnd = usePrevious(zoomEnd);\n useEffect(() => {\n if (\n tykChartInstance\n && zoomStart !== -1\n && zoomEnd !== -1\n && (\n prevZoomStart !== zoomStart\n || prevZoomEnd !== zoomEnd\n )\n ) {\n tykChartInstance.dispatchAction({\n type: 'dataZoom',\n startValue: zoomStart,\n endValue: zoomEnd,\n });\n }\n }, [zoomStart, zoomEnd]);\n\n const getStyle = () => {\n const { style } = props;\n const tempStyle = style || {};\n\n if (!tempStyle.height) {\n tempStyle.height = '300px';\n }\n if (!tempStyle.width) {\n tempStyle.width = '100%';\n }\n return tempStyle;\n };\n\n const chartHasData = () => (\n (dataLoaded && (hasData === false || hasData === true)) ? hasData : true\n );\n\n const getCssClasses = () => {\n const cssClasses = ['tyk-chart'];\n\n if (!dataLoaded) {\n cssClasses.push('tyk-chart--loading-chart');\n }\n\n if (!chartHasData()) {\n cssClasses.push('tyk-chart--no-data');\n }\n\n return cssClasses.join(' ');\n };\n\n return (\n
    \n {\n !dataLoaded\n ? \n : null\n }\n \n {\n /* eslint-disable-next-line no-nested-ternary */\n chartHasData()\n ? null\n : noDataComponent\n ? noDataComponent()\n : (\n \n No data to display\n \n )\n }\n
    \n );\n};\n\nChart.propTypes = {\n areaStyleColors: PropTypes.instanceOf(Array),\n dataLoaded: PropTypes.bool,\n hasData: PropTypes.bool,\n highlight: PropTypes.oneOfType([\n PropTypes.number,\n PropTypes.string,\n PropTypes.instanceOf(Array),\n ]),\n noDataComponent: PropTypes.func,\n zoomStart: PropTypes.number,\n zoomEnd: PropTypes.number,\n zoomColors: PropTypes.instanceOf(Object),\n option: PropTypes.instanceOf(Object),\n onChange: PropTypes.func,\n style: PropTypes.instanceOf(Object),\n type: PropTypes.string,\n title: PropTypes.string,\n series: PropTypes.instanceOf(Array),\n seriesConfig: PropTypes.instanceOf(Object),\n};\n\nexport default memo(Chart);\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport Message from '../../Message';\nimport { useTimeout } from '../../../hooks';\n\nconst ToastMessage = (props) => {\n const {\n children,\n options,\n onClose,\n index,\n } = props;\n const opts = Object.assign({\n theme: 'success',\n delay: 3000,\n }, options);\n let timer;\n\n const handleClose = (itemIndex) => {\n onClose(itemIndex);\n clearTimeout(timer);\n };\n\n useTimeout(() => handleClose(index), opts.delay);\n\n return (\n handleClose(index)}\n >\n {children}\n \n );\n};\n\nToastMessage.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]),\n options: PropTypes.instanceOf(Object),\n onClose: PropTypes.func,\n index: PropTypes.number,\n};\n\nexport default ToastMessage;\n","import React, {\n useEffect, useState,\n} from 'react';\nimport PropTypes from 'prop-types';\n\nimport ToastMessage from './ToastMessage';\n\nconst ToastContainer = (props) => {\n const [messages, setMessages] = useState({});\n const {\n notify,\n } = props;\n\n const updateNotifications = (message, options) => {\n const msgID = Math.floor(Math.random() * 1000000);\n \n setMessages((prevMessages) => ({\n ...prevMessages,\n [msgID]: {\n message,\n options,\n }\n }));\n };\n\n useEffect(() => {\n notify(updateNotifications);\n }, [messages]);\n\n const onMessageClosed = (index) => {\n const tempMessages = {...messages};\n delete tempMessages[index];\n setMessages((prevMessages) => {\n const { [index]: messageToBeRemoved, ...restMessages } = prevMessages;\n return restMessages;\n });\n };\n\n return (\n
    \n {\n Object.keys(messages).map((msgID) => (\n messages[msgID]\n ? (\n \n {messages[msgID].message}\n \n )\n : null\n ))\n }\n
    \n );\n};\n\nToastContainer.propTypes = {\n notify: PropTypes.func,\n};\n\nexport default ToastContainer;\n","import React from 'react';\nimport { createRoot } from 'react-dom/client';\nimport ToastContainer from './js/ToastContainer';\n/**\n * Toast is a service that displays dialogs\n * on the bottom right part of the screen.\n *\n * The dialogs can have one of the Tyk UI themes, so that\n * it would match it's purpose (i.e success message, error message)\n *\n */\nclass ToastCreator {\n constructor() {\n const el = document.createElement('div');\n el.className = 'tyk-toast';\n document.body.appendChild(el);\n const root = createRoot(el);\n root.render();\n }\n\n bindNotify = (fn) => {\n this.createNotification = fn;\n };\n\n notify(message, options) {\n if (this.createNotification) {\n this.createNotification(message, options);\n }\n }\n\n danger(message, options) {\n this.notify(message, { ...options, theme: 'danger' });\n }\n\n success(message, options) {\n this.notify(message, { ...options, theme: 'success' });\n }\n\n warning(message, options) {\n this.notify(message, { ...options, theme: 'warning' });\n }\n\n info(message, options) {\n this.notify(message, { ...options, theme: 'info' });\n }\n}\n\nconst toast = new ToastCreator();\n\nexport default toast;\n","import React, { Fragment, createRef, useCallback } from 'react';\nimport PropTypes from 'prop-types';\n\nimport toast from '../Toast';\n\n/**\n * - CopyToClipboard is used to copy string for a user.\n * - Can be used normally with a text or a custom components (Eg. Button, Icon, etc)\n */\n\nconst CopyToClipboard = (props) => {\n const {\n display, copy, children, onCopy,\n } = props;\n const txtRef = createRef();\n const handleClick = useCallback(() => {\n if (onCopy) {\n onCopy();\n }\n\n if (!window.navigator.clipboard) {\n txtRef.current.select();\n document.execCommand('copy');\n toast.notify('copied', { theme: 'success' });\n return;\n }\n window.navigator.clipboard.writeText(copy);\n toast.notify('copied', { theme: 'success' });\n }, [onCopy, txtRef]);\n\n return (\n \n \n {children || display}\n \n {!window.navigator.clipboard ? (\n \n ) : null}\n \n );\n};\n\nCopyToClipboard.propTypes = {\n /** Callback function executed after text is copied */\n onCopy: PropTypes.func,\n /** Text to be copied */\n copy: PropTypes.string.isRequired,\n /** Text to be displayed */\n display: PropTypes.string,\n /** Children of custom element if you are using any custom element */\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.string,\n PropTypes.object,\n PropTypes.node,\n ]),\n};\n\nexport default CopyToClipboard;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nfunction ModalFooter({ children }) {\n return (\n
    \n { children }\n
    \n );\n}\n\nModalFooter.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]),\n};\n\nexport default ModalFooter;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nfunction ModalBody({ children }) {\n return (\n
    \n { children }\n
    \n );\n}\n\nModalBody.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]),\n};\n\nexport default ModalBody;\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport { CSSTransition } from 'react-transition-group';\n\nimport Icon from '../Icon';\nimport ModalFooter from './js/ModalFooter';\nimport ModalBody from './js/ModalBody';\n\n/**\n * Modals add dialogs confirmation boxes, notifications, or completely custom content\n * - only one Modal can be opened at a time\n * - are unmounted when Modal is closed\n */\nfunction Modal({\n children,\n theme = 'none',\n disableCloseCommands = false,\n opened = false,\n onClose = () => {},\n size = 'md',\n className = '',\n showBackdrop = true,\n ...restProps\n}) {\n const modalClasses = [\n 'tyk-modal',\n `tyk-modal--theme-${theme}`,\n opened && 'opened',\n ].concat(className.split(' ')).filter(Boolean).join(' ');\n\n const backdropClasses = [\n 'tyk-modal__backdrop',\n opened && 'opened',\n ].filter(Boolean).join(' ');\n\n const themeIcon = {\n success: 'check',\n warning: 'warning',\n danger: 'delete',\n }[theme];\n\n return (\n <>\n {\n ReactDOM.createPortal(\n \n
    \n
    \n
    \n {theme !== 'none' && (\n
    \n \n
    \n )}\n { children }\n
    \n
    \n
    \n ,\n document.querySelector('body'),\n )\n }\n {showBackdrop && ReactDOM.createPortal(\n \n !disableCloseCommands && onClose()}\n onKeyDown={() => {}}\n type=\"button\"\n aria-label=\"Close\"\n />\n ,\n document.querySelector('body'),\n )}\n \n );\n}\n\nModal.Body = ModalBody;\nModal.Footer = ModalFooter;\n/* eslint-disable-next-line */\nModal.Header = ({ children }) => {\n console.warn('%cModal.Header%c is deprecated.', 'font-weight: bold', '');\n return (\n
    \n { children }\n
    \n );\n};\n/* eslint-disable-next-line */\nModal.Title = ({ children }) => {\n console.warn('%cModal.Title%c is deprecated.', 'font-weight: bold', '');\n return (\n

    \n { children }\n

    \n );\n};\n\nModal.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]),\n className: PropTypes.string,\n /** one of \"success\", \"warning\", \"danger\", \"none\"; default is \"none\" */\n theme: PropTypes.string,\n /** If set on true, the Modal won't close when clicking on the overlay or by pressing ESC key */\n disableCloseCommands: PropTypes.bool,\n /** If true the Modal will be by default opened */\n opened: PropTypes.bool,\n /** Callback method when the Modal is closed */\n onClose: PropTypes.func,\n /** Width of the Moda: md or lg */\n size: PropTypes.string,\n showBackdrop: PropTypes.bool,\n};\n\nexport default Modal;\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Button from '../Button';\nimport Modal from '../Modal';\n\n/**\n * Confirm component can be used to open a dialog () before a specific action\n */\nfunction Confirm(props) {\n const {\n children,\n title,\n description,\n confirmBtnText = 'Confirm',\n cancelBtnText = 'Cancel',\n } = props;\n const [open, setOpen] = useState(false);\n const [callback, setCallback] = useState(null);\n const [cancelCallback, setCancelCallback] = useState(null);\n\n const show = (callbackFunc, cancelCallbackFunc, beforeCallback) => (...args) => {\n if (beforeCallback) {\n beforeCallback(...args);\n }\n setOpen(true);\n setCallback(() => () => callbackFunc(...args));\n if (cancelCallbackFunc) {\n setCancelCallback(() => () => cancelCallbackFunc(...args));\n }\n };\n\n const hide = () => {\n setOpen(false);\n setCallback(null);\n setCancelCallback(null);\n };\n\n const cancel = () => {\n if (cancelCallback) {\n cancelCallback();\n }\n hide();\n };\n\n const confirm = () => {\n callback();\n hide();\n };\n\n return (\n <>\n {children(show)}\n \n \n

    {title}

    \n {description}\n
    \n \n \n {cancelBtnText}\n \n \n {confirmBtnText}\n \n \n
    \n \n );\n}\n\nConfirm.propTypes = {\n /** Sets the text for primary / confirmation button on opened modal */\n confirmBtnText: PropTypes.string,\n /** Sets the text for danger / abort button on opened modal */\n cancelBtnText: PropTypes.string,\n /** Sets the title for the opened modal */\n title: PropTypes.string,\n /** Sets the description for the opened modal */\n description: PropTypes.string,\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.string,\n PropTypes.object,\n PropTypes.node,\n PropTypes.func,\n ]),\n};\n\nexport default Confirm;\n","import React, { useCallback, useEffect, useRef } from 'react';\nimport PropTypes from 'prop-types';\n\nimport debounce from '../../utils/debounce';\n/**\n * FixedWrapper component, keeps all its children in a fix position on the page,\n * even if the scroll position changes\n * i.e: The top navigation bar of a page sits within FixedWrapper component\n */\nfunction FixedWrapper({ children, className, showShadow }) {\n const fixedWrapperRef = useRef(null);\n\n const attachShadow = useCallback(() => {\n const element = fixedWrapperRef.current;\n\n if (!element) {\n return;\n }\n\n if (window.scrollY) {\n element.classList.add('tyk-fixed-wrapper--scrolled');\n } else {\n element.classList.remove('tyk-fixed-wrapper--scrolled');\n }\n }, [fixedWrapperRef.current]);\n\n const debouncedAttachShadow = useCallback(debounce(attachShadow, 100), [attachShadow]);\n\n useEffect(() => {\n if (showShadow) {\n window.addEventListener('scroll', debouncedAttachShadow);\n }\n\n return () => {\n window.removeEventListener('scroll', debouncedAttachShadow);\n };\n }, [debouncedAttachShadow, showShadow]);\n\n return (\n
    \n { children }\n
    \n );\n}\n\nFixedWrapper.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]),\n /** Css classes that can be passed to the FixedWraper element */\n className: PropTypes.string,\n /** If true, bottom shadow on the FixedWrapper component\n * is being displayed when scroll happens\n */\n showShadow: PropTypes.bool,\n};\n\nFixedWrapper.defaultProps = {\n className: '',\n};\n\nexport default FixedWrapper;\n","import React, {\n useEffect, useState, useRef, useCallback,\n} from 'react';\nimport { PropTypes } from 'prop-types';\n\nimport debounce from '../../utils/debounce';\nimport { usePrevious, useComponentSize } from '../../hooks';\nimport Loader from '../Loader';\n\nfunction InfiniteScroller({\n children,\n hasMore,\n initialLoad,\n loadMore,\n pageNumber,\n refChild,\n}) {\n const [showLoader, setShowLoader] = useState(false);\n const containerRef = useRef(null);\n const refChildSize = useComponentSize(refChild);\n\n useEffect(() => {\n if (initialLoad && typeof loadMore === 'function') {\n setShowLoader(false);\n loadMore(pageNumber);\n }\n }, [initialLoad]);\n\n const shouldLoad = useCallback(() => {\n if (!containerRef.current) return false;\n const { clientHeight, scrollTop } = containerRef.current;\n\n return (\n hasMore\n && (\n (clientHeight + Math.round(scrollTop) === refChildSize.height)\n || (clientHeight >= refChildSize.height)\n )\n );\n }, [containerRef, refChildSize.height]);\n\n const loadMoreData = useCallback(() => {\n if (hasMore && typeof loadMore === 'function') {\n loadMore(pageNumber + 1);\n setShowLoader(true);\n } else {\n setShowLoader(false);\n }\n }, [hasMore, pageNumber]);\n\n const prevPageNumber = usePrevious(pageNumber);\n const scrollHandler = useCallback(debounce(() => {\n if (shouldLoad() && prevPageNumber <= pageNumber) {\n loadMoreData();\n }\n }, 200), [loadMoreData, shouldLoad]);\n\n useEffect(() => {\n containerRef.current?.addEventListener('scroll', scrollHandler);\n return () => containerRef.current?.removeEventListener('scroll', scrollHandler);\n }, [containerRef, scrollHandler]);\n\n // if content resets (page number resets) scroll to top\n useEffect(() => {\n if (prevPageNumber > 0 && pageNumber === 0) {\n containerRef.current.scrollTop = 0;\n }\n }, [containerRef, pageNumber]);\n\n const prevRefChildSize = usePrevious(refChildSize);\n useEffect(() => {\n if (\n refChildSize && prevRefChildSize\n && refChildSize.height !== prevRefChildSize.height\n && showLoader === true\n ) {\n setShowLoader(false);\n }\n }, [showLoader, refChildSize.height]);\n\n useEffect(() => {\n if (\n refChild && refChildSize.height < containerRef.current.clientHeight\n && refChildSize.height\n && hasMore\n ) {\n loadMoreData();\n }\n }, [containerRef, refChildSize, refChild, hasMore]);\n\n return (\n
    \n \n { children }\n
    \n {showLoader && (\n \n )}\n
    \n );\n}\n\nInfiniteScroller.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n hasMore: PropTypes.bool,\n initialLoad: PropTypes.bool,\n pageNumber: PropTypes.number,\n loadMore: PropTypes.func,\n refChild: PropTypes.instanceOf(Object),\n};\n\nInfiniteScroller.defaultProps = {\n hasMore: true,\n};\n\nexport default InfiniteScroller;\n","import React, {\n useEffect, useRef, forwardRef,\n} from 'react';\nimport { createPortal } from 'react-dom';\nimport PropTypes from 'prop-types';\nimport InfiniteScroller from '../InfiniteScroller';\n\n/**\n * It displays a container relative to another element.\n * Meant to be used for dropdowns, tooltips, and other similar components.\n */\nfunction FloatingContainer({\n element,\n size = 'auto',\n forceDisplay = 'auto',\n displayAxis = 'auto',\n preferredPosition,\n offset = 0,\n className,\n children,\n infiniteScrollerConfig,\n}, ref) {\n const localRef = useRef(null);\n const floatingContainerRef = ref || localRef;\n const contentWrapperRef = useRef(null);\n\n function determineDisplay() {\n const target = element.current;\n const container = floatingContainerRef.current;\n if (!container) return preferredPosition ?? displayAxis === 'vertical' ? 'bottom' : 'right';\n\n const { left, top } = target.getBoundingClientRect();\n const topSpace = top;\n const bottomSpace = window.innerHeight - top - target.offsetHeight;\n const leftSpace = left;\n const rightSpace = window.innerWidth - left - target.offsetWidth;\n const hasTopSpace = topSpace > container.scrollHeight;\n const hasBottomSpace = bottomSpace > container.scrollHeight;\n const hasLeftSpace = leftSpace > container.offsetWidth;\n const hasRightSpace = rightSpace > container.offsetWidth;\n const positionedVerticallyFitsInViewport = left + target.offsetWidth / 2 - container.offsetWidth / 2 > 0; // eslint-disable-line max-len\n const positionedHorizontallyFitsInViewport = top + target.offsetHeight / 2 - container.scrollHeight / 2 > 0; // eslint-disable-line max-len\n\n if (\n displayAxis === 'vertical'\n || (\n displayAxis === 'auto'\n && (hasTopSpace || hasBottomSpace)\n && positionedVerticallyFitsInViewport\n )\n ) {\n if (preferredPosition === 'top' && hasTopSpace) return 'top';\n if (preferredPosition === 'bottom' && hasBottomSpace) return 'bottom';\n return hasBottomSpace || bottomSpace > topSpace ? 'bottom' : 'top';\n }\n\n if (displayAxis === 'horizontal') {\n if (preferredPosition === 'left' && hasLeftSpace) return 'left';\n if (preferredPosition === 'right' && hasLeftSpace) return 'right';\n return hasRightSpace || rightSpace > leftSpace ? 'right' : 'left';\n }\n\n if (hasTopSpace && positionedVerticallyFitsInViewport) return 'top';\n if (hasBottomSpace && positionedVerticallyFitsInViewport) return 'bottom';\n if (hasRightSpace && positionedHorizontallyFitsInViewport) return 'right';\n if (hasLeftSpace && positionedHorizontallyFitsInViewport) return 'left';\n return preferredPosition ?? 'bottom';\n }\n\n function adjustPosition() {\n const display = forceDisplay !== 'auto' ? forceDisplay : determineDisplay();\n const target = element.current;\n const container = floatingContainerRef.current;\n\n if (!target || !container) return;\n\n const targetPosition = target.getBoundingClientRect();\n\n if (display === 'top') {\n const topPos = targetPosition.top - container.offsetHeight - offset;\n container.style.top = `${topPos}px`;\n container.style.left = (size === 'auto'\n ? `${targetPosition.left + target.offsetWidth / 2 - container.offsetWidth / 2}px`\n : `${targetPosition.left}px`);\n\n if (size === 'matchElement') {\n container.style.width = `${target.offsetWidth}px`;\n } else if (typeof size === 'function') {\n container.style.width = `${size(target.offsetWidth)}px`;\n }\n container.style.maxHeight = `${targetPosition.top - offset}px`;\n }\n\n if (display === 'bottom') {\n container.style.top = `${targetPosition.bottom + offset}px`;\n container.style.left = size === 'auto'\n ? `${targetPosition.left + target.offsetWidth / 2 - container.offsetWidth / 2}px`\n : `${targetPosition.left}px`;\n if (size === 'matchElement') {\n container.style.width = `${target.offsetWidth}px`;\n } else if (typeof size === 'function') {\n container.style.width = `${size(target.offsetWidth)}px`;\n }\n container.style.maxHeight = `${window.innerHeight - targetPosition.bottom - offset}px`;\n }\n\n if (display === 'left') {\n const topPos = targetPosition.top + target.offsetHeight / 2 - container.offsetHeight / 2;\n container.style.top = size === 'auto'\n ? `${topPos}px`\n : `${targetPosition.top}px`;\n container.style.left = `${targetPosition.left - container.offsetWidth - offset}px`;\n if (size === 'matchElement') {\n container.style.height = `${target.offsetHeight}px`;\n } else if (typeof size === 'function') {\n container.style.height = `${size(target.offsetHeight)}px`;\n }\n container.style.maxWidth = `${targetPosition.left - offset}px`;\n }\n\n if (display === 'right') {\n const topPos = targetPosition.top + target.offsetHeight / 2 - container.offsetHeight / 2;\n container.style.top = size === 'auto'\n ? `${topPos}px`\n : `${targetPosition.top}px`;\n container.style.left = `${targetPosition.left + target.offsetWidth + offset}px`;\n if (size === 'matchElement') {\n container.style.height = `${target.offsetHeight}px`;\n } else if (typeof size === 'function') {\n container.style.height = `${size(target.offsetHeight)}px`;\n }\n container.style.maxWidth = `${window.innerWidth - targetPosition.left - target.offsetWidth - offset}px`;\n }\n }\n\n useEffect(() => {\n window.requestAnimationFrame(function schedulePositionUpdate() {\n adjustPosition();\n window.requestAnimationFrame(schedulePositionUpdate);\n });\n }, []);\n\n return createPortal(\n \n \n \n {children}\n
    \n \n
    ,\n document.querySelector('body'),\n );\n}\n\nFloatingContainer.propTypes = {\n /** A DOM element that the floating container will be displayed relative to. */\n element: PropTypes.instanceOf(Object),\n className: PropTypes.string,\n /** The size of the container.\n * If `auto` the size will be determined by its contents.\n * If `matchElement` it will take the width or the height of the element depending\n * on the `displayAxis` prop.\n * It can also be a function that returns a number representing the width\n * or the height in pixels.\n */\n size: PropTypes.oneOfType([\n PropTypes.oneOf(['auto', 'matchElement']),\n PropTypes.func,\n ]),\n /**\n * The distance between the element and the floating container.\n * It can be positive or negative.\n */\n offset: PropTypes.number,\n /**\n * If `auto` the component will try to determine where to display the container relative to the\n * element (top, bottom, left, right).\n * It can also be one of top, bottom, left, right, to force the floating container to always be\n * displayed in that position.\n */\n forceDisplay: PropTypes.oneOf(['auto', 'top', 'bottom', 'left', 'right']),\n /**\n * It can be `auto`, `vertical` or `horizontal`. It specifies the axis where\n * it will be displayed when `forceDisplay` is `auto`.\n */\n displayAxis: PropTypes.oneOf(['auto', 'vertical', 'horizontal']),\n /**\n * If there is space on both sides of the axis preffer this side.\n */\n preferredPosition: PropTypes.oneOf(['top', 'bottom', 'left', 'right']),\n /**\n * Configuration object that will be passed to the infinite scroller component.\n */\n infiniteScrollerConfig: PropTypes.instanceOf(Object),\n};\n\nexport default forwardRef(FloatingContainer);\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport Message from '../Message';\n\nfunction InfoNote({ children }) {\n return (\n
    \n \n { children }\n \n
    \n );\n}\n\nInfoNote.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]),\n};\n\nexport default InfoNote;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nconst ListItem = (props) => {\n const {\n className,\n children,\n } = props;\n\n return (\n
  • \n {children}\n
  • \n );\n};\n\nListItem.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n className: PropTypes.string,\n};\n\nListItem.defaultProps = {\n className: '',\n};\n\nexport default ListItem;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { fromJS } from 'immutable';\nimport ListItem from './js/ListItem';\n\nconst List = (props) => {\n const {\n className,\n children,\n label,\n labelwidth,\n theme,\n style,\n } = props;\n\n const getCssClasses = () => {\n let cssClasses = ['tyk-list'];\n\n if (theme) {\n cssClasses.push(`tyk-list--${theme}`);\n }\n\n if (className) {\n cssClasses = cssClasses.concat(className.split(' '));\n }\n\n return cssClasses.join(' ');\n };\n\n const getListStyle = () => {\n const styleCopy = fromJS(style).toJS();\n if (labelwidth) {\n styleCopy.flexBasis = `calc(100% - ${labelwidth} - 20px)`;\n }\n\n return styleCopy;\n };\n\n return (\n
    \n {\n label !== undefined\n ? (\n \n )\n : null\n }\n
      \n {children}\n
    \n
    \n );\n};\n\nList.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n className: PropTypes.string,\n label: PropTypes.string,\n labelwidth: PropTypes.string,\n theme: PropTypes.string,\n style: PropTypes.instanceOf(Object),\n};\n\nList.defaultProps = {\n theme: 'default',\n style: {},\n};\n\n\nList.Item = ListItem;\n\n\nexport default List;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nfunction NavBar({\n align = 'center',\n children,\n left,\n right,\n title,\n pre,\n subtitle,\n withTabs,\n}) {\n const subtitleContent = subtitle ?

    { subtitle }

    : null;\n return (\n
    \n
    \n {pre && (\n
    {pre}
    \n )}\n {\n title\n ? (\n
    \n

    { title }

    \n { subtitleContent }\n
    \n )\n : subtitleContent\n }\n
    \n {left && (\n
    { left }
    \n )}\n {right && (\n
    { right }
    \n )}\n
    \n
    \n { children }\n
    \n );\n}\n\nNavBar.propTypes = {\n align: PropTypes.string,\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n title: PropTypes.string,\n subtitle: PropTypes.string,\n pre: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n ]),\n left: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n ]),\n right: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n ]),\n withTabs: PropTypes.bool,\n};\n\nexport default NavBar;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nfunction NavigationItem({ children }) {\n return (\n
  • \n {children}\n
  • \n );\n}\n\nNavigationItem.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n};\n\nexport default NavigationItem;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport NavigationItem from './js/NavigationItem';\n\nfunction Navigation({ children }) {\n return (\n
      \n {children}\n
    \n );\n}\n\nNavigation.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n};\n\nNavigation.Item = NavigationItem;\n\nexport default Navigation;\n","import { createContext } from 'react';\n\nexport const PortalContext = createContext();\n","import React, { useCallback } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Collapsible from '../../Collapsible';\nimport { PortalContext } from '../panel-context';\n\nfunction PanelBody({\n children,\n noPadding,\n className,\n ...rest\n}) {\n const getCssClasses = useCallback(\n () => [\n 'tyk-panel__body',\n className,\n noPadding && 'no-padding',\n ].filter(Boolean).join(' '),\n [className, noPadding],\n );\n\n return (\n \n {\n (portalContext) => (\n portalContext.collapsable\n ? (\n \n { children }\n \n )\n : (\n \n { children }\n
    \n )\n )\n }\n \n );\n}\n\nPanelBody.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]),\n noPadding: PropTypes.bool,\n className: PropTypes.string,\n};\n\nexport default PanelBody;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nconst PanelFooter = (props) => {\n const { children } = props;\n return (\n
    \n { children }\n
    \n );\n};\n\nPanelFooter.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]),\n};\n\nexport default PanelFooter;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Icon from '../../Icon';\nimport { PortalContext } from '../panel-context';\n\nexport default class PanelHeader extends Component {\n static propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]).isRequired,\n className: PropTypes.string,\n }\n\n getCssClasses(props) {\n const { className } = this.props;\n let cssClasses = ['tyk-panel__header'];\n\n if (props.collapsable) {\n cssClasses.push('collapsable');\n }\n\n if (className) {\n cssClasses = cssClasses.concat(className.split(' '));\n }\n\n return cssClasses.join(' ');\n }\n\n render() {\n const {\n children,\n } = this.props;\n\n return (\n \n {\n (portalContext) => {\n const HeaderTag = portalContext.theme === 'blank' ? 'h3' : 'div';\n const iconType = portalContext.collapsed ? 'chevron-down' : 'chevron-up';\n\n return (\n \n { children }\n {\n portalContext.collapsable\n ?
    \n : null\n }\n \n );\n }\n }\n
    \n );\n }\n}\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport PanelBody from './js/PanelBody';\nimport PanelFooter from './js/PanelFooter';\nimport PanelHeader from './js/PanelHeader';\n\n\nimport { PortalContext } from './panel-context';\n\n\nconst Panel = (props) => {\n const {\n children,\n className,\n collapsed,\n collapsable,\n theme,\n onToggleCollapse,\n collapsibleIconPosition = 'right',\n } = props;\n const [collapsedState, setCollapsedState] = useState(collapsed || false);\n\n useEffect(() => {\n if (collapsed !== collapsedState) {\n setCollapsedState(collapsed);\n }\n }, [collapsed]);\n\n const getCssClasses = () => {\n let cssClasses = ['tyk-panel'];\n const panelTheme = `tyk-panel--${theme || 'default'}`;\n const collapsbleIconPosition = `tyk-panel__icon-collapse--${collapsibleIconPosition}`;\n\n cssClasses.push(panelTheme);\n cssClasses.push(collapsbleIconPosition);\n\n if (className) {\n cssClasses = cssClasses.concat(className.split(' '));\n }\n\n if (collapsedState) {\n cssClasses.push('tyk-panel--collapsed');\n }\n\n return cssClasses.join(' ');\n };\n\n const handleToggle = () => {\n setCollapsedState(!collapsedState);\n\n if (onToggleCollapse) {\n onToggleCollapse(!collapsedState);\n }\n };\n\n return (\n
    \n \n {\n (typeof children === 'function')\n ? children({\n toggleCollapse: handleToggle,\n })\n : children\n }\n \n
    \n );\n};\n\nPanel.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.func,\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]),\n className: PropTypes.string,\n collapsable: PropTypes.bool,\n collapsibleIconPosition: PropTypes.string,\n collapsed: PropTypes.bool,\n theme: PropTypes.string,\n onToggleCollapse: PropTypes.func,\n};\n\n\nPanel.Body = PanelBody;\nPanel.Footer = PanelFooter;\nPanel.Header = PanelHeader;\n\nexport default Panel;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n/**\n * Pill\n *\n */\nconst Pill = (props) => {\n const {\n children,\n className,\n theme,\n } = props;\n\n const getCssClasses = () => {\n let cssClasses = ['tyk-pill', ...theme.split(' ').map(t => `tyk-pill--${t}`)];\n\n if (className) {\n cssClasses = cssClasses.concat(className);\n }\n\n return cssClasses.join(' ');\n };\n\n return (\n
    \n {children}\n
    \n );\n};\n\nPill.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n /** Css classes that can be passed to the Pill element */\n className: PropTypes.string,\n /** Theme that can be applied to a Pill */\n theme: PropTypes.string,\n};\n\nPill.defaultProps = {\n theme: 'default',\n};\n\nexport default Pill;\n","import { useRef } from 'react';\n\n/**\n * RevealPanelService is a class that manages the resizing of a panel element.\n * It provides methods to set the panel's height, hide and show it, and attach\n * event listeners for resizing.\n */\nclass RevealPanelService {\n #state = null; // Private state for mouse interactions.\n\n #panel = null; // The panel element to be resized.\n\n #gutter = null; // The gutter element used for resizing.\n\n #wrapper = null; // The wrapper element that contains the panel and gutter.\n\n #onHeightChangeCallbacks = []; // Callback function to be executed when the panel is resized.\n\n #onDragStartCallbacks = []; // Callback function to be executed when the panel is resized.\n\n #onDragEndCallbacks = []; // Callback function to be executed when the panel is resized.\n\n #dragStarted = false;\n /**\n * Sets a callback function to be executed when the panel is resized.\n * @param {function} callback - The callback function to be called on panel resize.\n */\n\n on(eventName, listener) {\n let list = null;\n if (eventName === 'onHeightChange') {\n list = this.#onHeightChangeCallbacks;\n } else if (eventName === 'onDragStart') {\n list = this.#onDragStartCallbacks;\n } else if (eventName === 'onDragEnd') {\n list = this.#onDragEndCallbacks;\n }\n\n if (list) {\n this.addListener(list, listener);\n }\n }\n\n off(eventName, listener) {\n let list = null;\n if (eventName === 'onHeightChange') {\n list = this.#onHeightChangeCallbacks;\n } else if (eventName === 'onDragStart') {\n list = this.#onDragStartCallbacks;\n } else if (eventName === 'onDragEnd') {\n list = this.#onDragEndCallbacks;\n }\n\n if (list) {\n this.removeListener(list, listener);\n }\n }\n\n /**\n * Sets the panel, gutter, and wrapper elements to be controlled by this class.\n * @param {HTMLElement} wrapper - The wrapper element containing the panel and gutter.\n * @param {HTMLElement} panel - The panel element to be resized.\n * @param {HTMLElement} gutter - The gutter element used for resizing.\n */\n setRefs(wrapper, panel, gutter) {\n if (this.#panel || this.#gutter || this.#wrapper) {\n this.unbindEvents();\n }\n this.#wrapper = wrapper;\n this.#panel = panel;\n this.#gutter = gutter;\n this.#state = null;\n this.bindEvents();\n }\n\n /**\n * Attaches event listeners for panel resizing.\n */\n bindEvents() {\n this.ensureRefs('bindEvents');\n this.#gutter.addEventListener('mousedown', this.onMouseDown.bind(this));\n document.addEventListener('mousemove', this.onMouseMove.bind(this));\n document.addEventListener('mouseup', this.onMouseUp.bind(this));\n }\n\n /**\n * Gets the current height of the panel.\n * @returns {number} - The height of the panel in pixels.\n */\n getHeight() {\n this.ensureRefs('getHeight');\n const size = this.#panel.getBoundingClientRect();\n return size.height;\n }\n\n /**\n * Handles the mouse down event, initiating the resizing process.\n * @param {MouseEvent} e - The mouse event object.\n */\n onMouseDown(e) {\n this.ensureRefs('onMouseDown');\n this.#state = {\n mouseDown: true,\n initialRect: this.#panel.getBoundingClientRect(),\n initialEvent: e,\n };\n }\n\n /**\n * Handles the mouse move event, adjusting the panel's height during resizing.\n * @param {MouseEvent} e - The mouse event object.\n */\n onMouseMove(e) {\n this.ensureRefs('onMouseMove');\n\n if (!this.#state) {\n return;\n }\n\n const isButtonDown = this.isPrimaryMouseButtonDown(e);\n if (!isButtonDown) {\n this.onMouseUp();\n return;\n }\n\n if (!this.#dragStarted) {\n this.#dragStarted = true;\n this.onDragStart.bind(this)();\n }\n\n const newY = this.#state.initialEvent.y - e.y;\n const finalHeight = Math.ceil(this.#state.initialRect.height + newY);\n this.setHeight(`${finalHeight}px`, 'mousemove');\n }\n\n // eslint-disable-next-line class-methods-use-this\n notifyListeners(list, value) {\n if (list && Array.isArray(list) && list.length) {\n list.forEach((fn) => {\n if (typeof fn === 'function') {\n fn(value);\n }\n });\n }\n }\n\n // eslint-disable-next-line class-methods-use-this\n addListener(list, listener) {\n if (list && Array.isArray(list) && typeof listener === 'function') {\n list.push(listener);\n }\n }\n\n // eslint-disable-next-line class-methods-use-this\n removeListener(list, listener) {\n if (list && Array.isArray(list) && typeof listener === 'function' && list.length) {\n const index = list.indexOf(listener);\n\n if (index > -1) {\n list.splice(index, 1);\n }\n }\n }\n\n onDragEnd() {\n if (this.#dragStarted) {\n this.notifyListeners(this.#onDragEndCallbacks, this.getHeight());\n }\n }\n\n onDragStart() {\n this.notifyListeners(this.#onDragStartCallbacks, this.getHeight());\n }\n\n // eslint-disable-next-line class-methods-use-this\n isPrimaryMouseButtonDown(e) {\n const flags = e.buttons !== undefined ? e.buttons : e.which;\n // eslint-disable-next-line no-bitwise\n const isDown = flags === 1;\n return isDown;\n }\n\n /**\n * Resets the state after the mouse up event, ending the resizing process.\n */\n onMouseUp() {\n this.#state = null;\n this.onDragEnd.bind(this)();\n this.#dragStarted = false;\n }\n\n /**\n * Sets the height of the panel.\n * @param {string} height - The new height value as a CSS string (e.g., \"100px\").\n */\n setHeight(height) {\n let heightVal = height;\n this.ensureRefs('setHeight');\n\n if (typeof heightVal === 'number') {\n heightVal += 'px';\n }\n\n this.#panel.style.height = heightVal;\n\n this.notifyListeners(this.#onHeightChangeCallbacks, this.getHeight());\n }\n\n /**\n * Ensures that the required elements (wrapper, panel, and gutter) are set.\n * Throws an error if they are missing.\n */\n ensureRefs(reason) {\n if (!this.#panel || !this.#gutter || !this.#wrapper) {\n throw new Error(\n `${reason}: Wrapper, panel, and gutter elements are required. Use setRefs method first.`,\n );\n }\n }\n\n /**\n * Checks if the panel is hidden.\n * @returns {boolean} - True if the panel is hidden; false otherwise.\n */\n isHidden() {\n this.ensureRefs('isHidden');\n return this.#wrapper.style.visibility === 'hidden';\n }\n\n /**\n * Hides the panel by setting its visibility to \"hidden\".\n */\n hide() {\n this.ensureRefs('hide');\n this.#wrapper.style.visibility = 'hidden';\n }\n\n /**\n * Shows the panel by setting its visibility to \"visible\".\n */\n show() {\n this.ensureRefs('show');\n this.#wrapper.style.visibility = 'visible';\n }\n\n /**\n * Unbinds the event listeners added for resizing.\n */\n unbindEvents() {\n this.#onHeightChangeCallbacks = [];\n this.#onDragStartCallbacks = [];\n this.#onDragEndCallbacks = [];\n this.#gutter.removeEventListener('mousedown', this.onMouseDown.bind(this));\n document.removeEventListener('mousemove', this.onMouseMove.bind(this));\n document.removeEventListener('mouseup', this.onMouseUp.bind(this));\n }\n\n deinit() {\n this.unbindEvents();\n }\n}\n\nexport const useRevealPanelService = () => {\n const revealPanelServiceRef = useRef(new RevealPanelService());\n return revealPanelServiceRef.current;\n};\n","import React, {\n useEffect,\n useRef,\n useImperativeHandle,\n forwardRef,\n} from 'react';\nimport PropTypes from 'prop-types';\nimport { createPortal } from 'react-dom';\nimport { useRevealPanelService } from './js/RevealPanelService';\n\nfunction RevealPanelHeaderLeft({ children }) {\n // eslint-disable-next-line react/jsx-no-useless-fragment\n return <>{children};\n}\n\nRevealPanelHeaderLeft.propTypes = {\n children: PropTypes.instanceOf({}),\n};\n\nfunction RevealPanelHeaderRight({ children }) {\n // eslint-disable-next-line react/jsx-no-useless-fragment\n return <>{children};\n}\n\nRevealPanelHeaderRight.propTypes = {\n children: PropTypes.instanceOf({}),\n};\n\nconst mergeClasses = (...classNames) => classNames.map((it) => (it || '').trim()).filter(Boolean).join(' ');\n\nconst RevealPanel = forwardRef(({\n children,\n height,\n onHeightChange = null,\n onDragStart = null,\n onDragEnd = null,\n style = null,\n parentSelector = null,\n contentStyle,\n contentClassName,\n gutterClassName,\n wrapperClassName,\n// eslint-disable-next-line consistent-return\n}, ref) => {\n const panelRef = useRef(null);\n const gutterRef = useRef(null);\n const wrapperRef = useRef(null);\n\n const panelService = useRevealPanelService();\n\n useEffect(() => {\n if (!panelRef.current || !gutterRef.current || !wrapperRef.current) {\n return;\n }\n\n if (!panelService) {\n return;\n }\n\n panelService.setRefs(wrapperRef.current, panelRef.current, gutterRef.current);\n panelService.on('onHeightChange', onHeightChange);\n panelService.on('onDragStart', onDragStart);\n panelService.on('onDragEnd', onDragEnd);\n panelService.setHeight(height, 'initialize');\n\n // eslint-disable-next-line consistent-return\n return () => {\n panelService.unbindEvents();\n };\n }, []);\n\n useImperativeHandle(\n ref,\n () => {\n // bind this context\n const bind = (func) => func.bind(panelService);\n\n return {\n getHeight: bind(panelService.getHeight),\n setHeight: bind(panelService.setHeight),\n hide: bind(panelService.hide),\n show: bind(panelService.show),\n isHidden: bind(panelService.isHidden),\n deinit: bind(panelService.deinit),\n on: bind(panelService.on),\n off: bind(panelService.off),\n };\n },\n [],\n );\n\n let headerLeft = null;\n let headerRight = null;\n const contents = [];\n\n React.Children.forEach(children, (child) => {\n if (child && React.isValidElement(child)) {\n if (child.type === RevealPanelHeaderLeft) {\n headerLeft = child;\n } else if (child.type === RevealPanelHeaderRight) {\n headerRight = child;\n } else {\n contents.push(child);\n }\n }\n });\n\n const element = (\n
    \n
    \n
    \n\n
    {headerLeft}
    \n
    \n
    {headerRight}
    \n\n
    \n
    \n {contents}\n
    \n
    \n );\n\n if (parentSelector) {\n return createPortal(element, document.querySelector(parentSelector));\n }\n});\n\nRevealPanel.propTypes = {\n children: PropTypes.instanceOf({}),\n height: PropTypes.string,\n onHeightChange: PropTypes.func,\n onDragStart: PropTypes.func,\n onDragEnd: PropTypes.func,\n parentSelector: PropTypes.string,\n style: PropTypes.instanceOf({}),\n contentStyle: PropTypes.instanceOf({}),\n contentClassName: PropTypes.string,\n gutterClassName: PropTypes.string,\n wrapperClassName: PropTypes.string,\n};\n\nRevealPanel.HeaderLeft = RevealPanelHeaderLeft;\nRevealPanel.HeaderRight = RevealPanelHeaderRight;\n\nexport default RevealPanel;\n","import { createContext } from 'react';\n\nexport const TabsContext = createContext();\n","import { createContext } from 'react';\n\nexport default createContext();\n","import React, { useEffect, useMemo } from 'react';\nimport PropTypes from 'prop-types';\n\nimport TabContext from './TabContext';\nimport { usePrevious } from '../../../hooks';\n\nconst TabContent = (props) => {\n const {\n addTab,\n hideTab,\n updateTab,\n showTab,\n children,\n selectedPath,\n tabData,\n tabsId,\n tabExists,\n path,\n rendered,\n hideTabContent,\n tabs,\n } = props;\n\n useEffect(() => {\n const tempTabData = { ...tabData };\n\n if (!tabExists(path)) {\n addTab(tempTabData, path);\n }\n }, [tabData, path]);\n\n const prevTabData = usePrevious(tabData);\n useEffect(() => {\n if (\n tabExists(path) && tabData?.title\n && (prevTabData?.title !== tabData?.title || prevTabData.selected !== tabData.selected)\n ) {\n const tempTabData = { ...tabData };\n updateTab(tempTabData, path);\n }\n }, [tabData, path, prevTabData, tabs]);\n\n useEffect(() => {\n showTab(path);\n return () => hideTab(path);\n }, []);\n\n const shouldRender = useMemo(() => {\n if (!Object.keys(tabs).length) {\n return false;\n }\n\n if (hideTabContent || tabs[tabData.id].show === false) {\n return false;\n }\n\n if (!rendered) {\n return tabExists(path);\n }\n return selectedPath && selectedPath.indexOf(tabData.id) > -1;\n }, [hideTabContent, rendered, selectedPath, tabData, tabs]);\n\n return (\n (\n shouldRender\n ? (\n
    -1 ? 'block' : 'none' }}>\n \n {children}\n \n
    \n )\n : null\n )\n );\n};\n\nTabContent.propTypes = {\n addTab: PropTypes.func,\n updateTab: PropTypes.func,\n hideTab: PropTypes.func,\n showTab: PropTypes.func,\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n path: PropTypes.instanceOf(Array),\n hideTabContent: PropTypes.bool,\n rendered: PropTypes.bool,\n selectedPath: PropTypes.instanceOf(Array),\n tabExists: PropTypes.func,\n tabsId: PropTypes.string,\n tabData: PropTypes.instanceOf(Object),\n tabs: PropTypes.instanceOf(Object),\n};\n\nexport default TabContent;\n","import React, {\n Fragment, useContext, useEffect, useState,\n} from 'react';\nimport PropTypes from 'prop-types';\nimport { TabsContext } from '../tabs-context';\nimport TabContext from './TabContext';\nimport TabContent from './TabContent';\n\nconst Tab = (props) => {\n const { id } = props;\n const tabsContext = useContext(TabsContext);\n const tabContext = useContext(TabContext);\n const {\n tabExists,\n selectedPath,\n addTab,\n updateTab,\n hideTab,\n showTab,\n rendered,\n hideTabContent,\n tabs,\n } = tabsContext;\n const {\n children,\n } = props;\n const [path, setPath] = useState('');\n\n useEffect(() => {\n let tempPath;\n if (tabContext && path) {\n if (tabContext.tabsId === tabsContext.id) {\n tempPath = tabContext.path.concat([id]);\n } else {\n tempPath = [id];\n }\n } else {\n tempPath = [id];\n }\n setPath(tempPath);\n }, [tabContext]);\n\n if (!path) {\n return null;\n }\n\n return (\n \n \n {children}\n \n \n );\n};\n\nTab.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n id: PropTypes.string,\n};\n\nTab.defaultProps = {};\n\nexport default Tab;\n","\nimport React, {\n useEffect, useState,\n} from 'react';\nimport PropTypes from 'prop-types';\nimport Tab from './js/Tab';\n\nimport Collapsible from '../Collapsible';\nimport Icon from '../Icon';\nimport { TabsContext } from './tabs-context';\n\nconst Tabs = (props) => {\n const {\n children,\n className,\n id,\n onTabChange,\n type,\n hideTabContent,\n } = props;\n const [tabs, setTabs] = useState({});\n const [selectedPath, setSelectedPath] = useState([]);\n const [rendered, setRendered] = useState(false);\n const [initialPath, setInitialPath] = useState(null);\n\n useEffect(() => {\n setSelectedPath(initialPath);\n }, [initialPath]);\n\n const updateTabsList = (tabsState, path, tabData) => {\n let tempTabsState = Object.assign({}, tabsState);\n const tempTabData = Object.assign({}, tabData);\n const tempPath = path.slice(0);\n\n while (tempPath.length > 1) {\n tempTabsState = tempTabsState[tempPath.shift()];\n\n if (!tempTabsState) {\n tempTabsState = {};\n }\n }\n\n tempTabData.tempPath = tempPath;\n tempTabsState[tempPath.shift()] = tempTabData;\n\n return tempTabsState;\n };\n\n const toggleTab = (tabsState, path) => {\n let tempTabsState = Object.assign({}, tabsState);\n const tempPath = path.slice(0);\n\n while (tempPath.length > 1) {\n tempTabsState = tempTabsState[tempPath.shift()];\n }\n\n const key = tempPath.shift();\n if (tempTabsState[key].collapsed === undefined) {\n tempTabsState[key].collapsed = true;\n } else {\n tempTabsState[key].collapsed = !tempTabsState[key].collapsed;\n }\n\n return tempTabsState;\n };\n\n const getCssClasses = () => {\n let cssClasses = ['tyk-tabs'];\n\n cssClasses.push(`tyk-tabs--${type || 'default'}`);\n\n if (className) {\n cssClasses = cssClasses.concat(className.split(' '));\n }\n\n return cssClasses.join(' ');\n };\n\n const setCurrentSelectedPath = (path, tabData) => {\n const tempPath = path.slice(0);\n let tempRendered = true;\n\n if (tabData.collapsible) {\n tempPath.push(Object.keys(tabData.tabs)[0]);\n tempRendered = false;\n }\n\n setTabs((prevTabs) => {\n let tempTabs = Object.assign({}, prevTabs);\n\n tempTabs = toggleTab(tempTabs, path);\n\n return tempTabs;\n });\n setSelectedPath(tempPath);\n setRendered(tempRendered);\n\n if (onTabChange) {\n onTabChange(tabData);\n }\n };\n\n const getTabCssClass = (tabId) => {\n const cssClasses = [];\n\n if (selectedPath && selectedPath.indexOf(tabId) > -1) {\n cssClasses.push('active');\n }\n\n return cssClasses.join(' ');\n };\n\n const genTabs = (currentTabs, path) => {\n if (!currentTabs) {\n return null;\n }\n\n return (\n
      \n {\n Object.keys(currentTabs).map((tabId, index) => {\n const tempPath = path ? path.concat([currentTabs[tabId].id]) : [currentTabs[tabId].id];\n const iconType = currentTabs[tabId].collapsed ? 'chevron-up' : 'chevron-down';\n\n if (currentTabs[tabId].show === false) {\n return null;\n }\n\n return (\n
    • \n \n { currentTabs[tabId].title }\n {\n currentTabs[tabId].collapsible\n ? \n : null\n }\n \n {\n currentTabs[tabId].collapsible\n ? (\n \n {genTabs(currentTabs[tabId].tabs, tempPath)}\n \n )\n : genTabs(currentTabs[tabId].tabs, tempPath)\n }\n
    • \n );\n })\n }\n
    \n );\n };\n\n const addTab = (tabData, path) => {\n setTabs(prevTabs => updateTabsList({ ...prevTabs }, path, tabData));\n\n if (tabData.selected) {\n setInitialPath(path);\n }\n };\n\n const updateTab = (tabData, path) => {\n setTabs((prevTabs) => {\n const tempTabs = { ...prevTabs };\n tempTabs[tabData.id] = tabData;\n return tempTabs;\n });\n\n if (tabData.selected) {\n setCurrentSelectedPath(path, tabData);\n }\n };\n\n const hideTab = (path) => {\n setTabs((prevTabs) => {\n const tempTabs = { ...prevTabs };\n tempTabs[path].show = false;\n\n return tempTabs;\n });\n };\n\n const showTab = (path) => {\n setTabs((prevTabs) => {\n const tempTabs = { ...prevTabs };\n\n tempTabs[path].show = true;\n\n return tempTabs;\n });\n };\n\n const tabExists = (path) => {\n let tempTabs = { ...tabs };\n const tempPath = path.slice(0);\n while (tempPath.length > 1) {\n tempTabs = tempTabs[tempPath.shift()];\n }\n\n const key = tempPath.shift();\n\n return !!(tempTabs && tempTabs[key]);\n };\n\n return (\n
    \n {genTabs(tabs)}\n \n {\n (typeof children === 'function')\n ? children({\n hideTab,\n showTab,\n })\n : children\n }\n \n
    \n );\n};\n\nTabs.propTypes = {\n className: PropTypes.string,\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n hideTabContent: PropTypes.bool,\n id: PropTypes.string,\n onTabChange: PropTypes.func,\n type: PropTypes.string,\n};\n\n\nTabs.Tab = Tab;\n\nexport default Tabs;\n","import React, {\n useCallback, useEffect, useRef, useState,\n} from 'react';\nimport PropTypes from 'prop-types';\n\nimport FloatingContainer from '../FloatingContainer';\nimport Icon from '../Icon';\n\nfunction Tooltip({\n render,\n className,\n children,\n position = 'auto',\n style,\n icon = false,\n closable,\n isOpened = false,\n additionalClickParents = [],\n ...props\n}) {\n const [isActive, setIsActive] = useState(false);\n const wrapperRef = useRef(null);\n const tooltipRef = useRef(null);\n const activeEvents = closable\n ? {\n onClick: () => setIsActive(true),\n }\n : {\n onMouseEnter: () => setIsActive(true),\n onMouseLeave: () => setIsActive(false),\n onFocus: () => setIsActive(true),\n onBlur: () => setIsActive(false),\n };\n\n const handleDocumentClick = useCallback((e) => {\n if ([...additionalClickParents, tooltipRef.current].some((p) => p?.contains?.(e.target))) {\n return;\n }\n setIsActive(false);\n }, [additionalClickParents]);\n\n useEffect(() => {\n document.addEventListener('click', handleDocumentClick, true);\n return () => document.removeEventListener('click', handleDocumentClick, true);\n }, [handleDocumentClick]);\n\n useEffect(() => {\n setIsActive(isOpened);\n }, [isOpened]);\n\n const classes = ['tyk-tooltip', className].filter(Boolean).join(' ');\n return (\n \n {children}\n {isActive && (\n \n
    \n {icon && (\n icon === true ? (\n \n ) : (\n icon\n )\n )}\n
    \n {render}\n
    \n {closable && (\n {\n e.stopPropagation();\n setIsActive(false);\n }}\n />\n )}\n
    \n \n )}\n
    \n );\n}\n\nTooltip.propTypes = {\n children: PropTypes.node.isRequired,\n /** custom styles to apply on hovered element */\n style: PropTypes.instanceOf(Object),\n /** describes where the tooltip should be displayed in relation\n * whith the hovered element: top, bottom, left, right\n */\n position: PropTypes.string,\n /** content of the tooltip, can be a string or a React node element */\n render: PropTypes.oneOfType([\n PropTypes.node,\n PropTypes.string,\n ]),\n /** additional tooltip classes */\n className: PropTypes.string,\n /** if `true` displays the \"question mark\" icon;\n * optionally you can pass a different icon\n */\n icon: PropTypes.oneOfType([\n PropTypes.bool,\n PropTypes.node,\n ]),\n /** if `true` the tooltip is activated on click and an \"x\" is displayed to close it;\n * if `false` the tooltip is activated on hover and it closes when no longer hovering\n */\n closable: PropTypes.bool,\n /** handles the `isActive` state of the tooltip from outside */\n isOpened: PropTypes.bool,\n /** Additional dom elements to check if the document click was inside of them.\n * Useful when you want to open the tooltip after an interaction\n * with an element not inside the tooltip root.\n */\n additionalClickParents: PropTypes.instanceOf(Array),\n};\n\nexport default Tooltip;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Tooltip from '../Tooltip';\n/**\n * TextEllipsis component helps you to hide a part of a text,\n * but displaying it when it's being hovered.\n * The entire text is displayed with the help of Tooltip component\n */\n\nfunction TextEllipsis({ text, limit, position }) {\n return (\n text.length > limit\n ? (\n \n {text.substring(0, limit)}\n ...\n \n )\n : text\n );\n}\n\nTextEllipsis.propTypes = {\n /** Text to be shrinked by TextEllipsis */\n text: PropTypes.string,\n /** Number of characters that TextEllipsis would leave visible */\n limit: PropTypes.number,\n /** tooltip position */\n position: PropTypes.string,\n};\n\nexport default TextEllipsis;\n","import React, { Component, Fragment } from 'react';\nimport PropTypes from 'prop-types';\n\nconst shouldShowPage = (currentNr, pageNr, totalNrOfPages) => {\n const basePageNr = 5;\n const minimumNrOfPages = 10;\n\n if (totalNrOfPages < minimumNrOfPages) {\n return true;\n }\n\n if (\n pageNr < basePageNr\n && currentNr < basePageNr\n ) {\n return true;\n }\n\n if (\n pageNr > totalNrOfPages - basePageNr\n && currentNr > totalNrOfPages - basePageNr\n ) {\n return true;\n }\n\n if (\n currentNr >= pageNr - 2\n && currentNr <= pageNr + 2\n ) {\n return true;\n }\n\n if ([0, 1, totalNrOfPages - 1, totalNrOfPages].indexOf(currentNr) > -1) {\n return true;\n }\n\n return false;\n};\n\nconst getPagesArr = (nrOfPages, selectedPage) => {\n let i; const\n pagesArr = [];\n\n for (i = 0; i <= nrOfPages; i += 1) {\n if (shouldShowPage(i, selectedPage, nrOfPages)) {\n if (i > pagesArr[pagesArr.length - 1]) {\n pagesArr.push('...');\n }\n pagesArr.push(i + 1);\n }\n }\n\n return pagesArr;\n};\n\nexport default class Pagination extends Component {\n static propTypes = {\n value: PropTypes.number,\n totalNrOfPages: PropTypes.number,\n onChange: PropTypes.func,\n };\n\n constructor(props) {\n super(props);\n const {\n value,\n totalNrOfPages,\n } = this.props;\n\n this.state = {\n prevProps: this.props,\n selectedPage: value || 0,\n pagesArray: getPagesArr(totalNrOfPages, value),\n };\n\n this.pageKey = 0;\n }\n\n static getDerivedStateFromProps(nextProps, prevState) {\n if (\n nextProps.value !== prevState.prevProps.value\n || nextProps.totalNrOfPages !== prevState.prevProps.totalNrOfPages\n ) {\n return {\n selectedPage: nextProps.value,\n pagesArray: getPagesArr(nextProps.totalNrOfPages, nextProps.value),\n };\n }\n\n return null;\n }\n\n getPageCssClass(pageNr) {\n const { selectedPage } = this.state;\n const cssClasses = [];\n\n if (selectedPage === pageNr) {\n cssClasses.push('active');\n }\n\n return cssClasses.join(' ');\n }\n\n getPageKey() {\n this.pageKey += 1;\n\n return this.pageKey;\n }\n\n goToPage(pageNr) {\n const { onChange, totalNrOfPages } = this.props;\n this.setState({\n selectedPage: pageNr,\n pagesArray: getPagesArr(totalNrOfPages, pageNr),\n }, () => {\n if (onChange) {\n onChange(pageNr);\n }\n });\n }\n\n render() {\n const { totalNrOfPages } = this.props;\n const { pagesArray, selectedPage } = this.state;\n\n return (\n \n {\n totalNrOfPages\n ? (\n
      \n {\n selectedPage > 0 && totalNrOfPages > 5\n ? (\n
    • \n \n
    • \n )\n : null\n }\n {\n pagesArray.map(pageNr => (\n
    • \n {\n pageNr !== '...'\n ? \n : { pageNr }\n }\n
    • \n ))\n }\n {\n selectedPage < totalNrOfPages && totalNrOfPages > 5\n ? (\n
    • \n \n
    • \n )\n : null\n }\n
    \n )\n : null\n }\n
    \n );\n }\n}\n","import { createContext } from 'react';\n\nexport const tableContext = createContext();\n","import React, { useState, useContext } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { tableContext } from '../tableContext';\nimport Icon from '../../Icon';\n\nexport const HeaderCell = ({ column }) => {\n const { sortable } = column;\n const [sortOrder, setSortOrder] = useState(sortable?.default || 'ASC');\n const { state, sendMessage } = useContext(tableContext);\n return (\n {\n sendMessage('sort', { column, sortOrder });\n setSortOrder(sortOrder === 'ASC' ? 'DESC' : 'ASC');\n } : null}\n className={state.maxHeight ? 'fixed-header' : ''}\n >\n {column.name}\n {column.sortable && (\n \n \n \n )}\n \n );\n};\n\nHeaderCell.propTypes = {\n column: PropTypes.instanceOf(Object),\n};\n","import React, { useContext, useState } from 'react';\nimport { HeaderCell } from './header-cell';\nimport { tableContext } from '../tableContext';\n\nexport const Header = () => {\n const [selectAll, setSelectAll] = useState(false);\n const { state, sendMessage } = useContext(tableContext);\n const { columns, selectable } = state;\n\n const generateHeaders = () => columns.map(column => (\n \n ));\n\n const generateSelectable = () => {\n if (!selectable) {\n return;\n }\n const Component = selectable.type;\n // eslint-disable-next-line consistent-return\n return (\n \n {selectable?.allowSelectAll ? (\n
    \n {\n setSelectAll(!selectAll);\n sendMessage('header.selectAll.click', selectAll);\n }}\n onChange={(v) => {\n sendMessage('header.selectAll.change', v);\n }}\n >\n {selectable.values?.value}\n \n
    \n ) : (\n selectable.name || 'Select'\n )}\n \n );\n };\n\n return (\n \n \n {selectable && selectable.position === 'LEFT' && generateSelectable()}\n {generateHeaders()}\n {selectable && selectable.position === 'RIGHT' && generateSelectable()}\n \n \n );\n};\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\n\n/**\n * - Checkboxes are used when a user needs to select one or more values from a series of options.\n * - They can be also be used as a binary toggle but consider radio instead.\n * - Can be used with Formik respectively (FormikCheckbox)\n */\nexport default class Checkbox extends Component {\n static propTypes = {\n /** Disable a checkbox */\n disabled: PropTypes.bool,\n /** Readonly prop behaves the same as disable on checkboxes */\n readOnly: PropTypes.bool,\n /** Align checkbox with in same line with other elements */\n inline: PropTypes.bool,\n /** Set a theme for checkbox */\n theme: PropTypes.string,\n /** Set an error state for checkbox if boolean will show just icon without message */\n error: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.bool,\n ]),\n /** Adds additional information under the checkbox element */\n note: PropTypes.string,\n input: PropTypes.instanceOf(Object),\n /** Adds a label to checkbox */\n label: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.func,\n PropTypes.string,\n ]),\n /** Set a name for checkbox */\n name: PropTypes.string,\n /** Set initial value for checkbox */\n value: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.bool,\n ]),\n /** Make checkbox checked by default */\n checked: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.bool,\n ]),\n /** Callback function executed on change of checkbox */\n onChange: PropTypes.func,\n /** CSS classes added to the wrapper of the component */\n wrapperClassName: PropTypes.string,\n };\n\n getCssClasses() {\n const {\n inline, disabled, readOnly, theme = '', wrapperClassName = '',\n } = this.props;\n\n const cssClasses = [wrapperClassName];\n\n cssClasses.push('tyk-checkbox');\n\n if (inline) {\n cssClasses.push('tyk-checkbox--inline');\n }\n\n if (theme.trim()) {\n cssClasses.push(...theme.split(' ').map(t => `tyk-checkbox--theme-${t}`));\n }\n\n if (disabled || readOnly) {\n cssClasses.push('tyk-checkbox--is-disabled');\n }\n\n return cssClasses.join(' ');\n }\n\n displayError() {\n const { error } = this.props;\n if (!error) return null;\n\n return (\n

    \n {error}\n

    \n );\n }\n\n displayNote() {\n const { note } = this.props;\n if (!note) return null;\n\n return (\n

    \n {note}\n

    \n );\n }\n\n render() {\n const {\n input, value, label, ...rest\n } = this.props;\n return (\n \n
    \n \n {this.displayNote()}\n {this.displayError()}\n
    \n \n );\n }\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nexport const Cell = ({ col, row }) => {\n if (!row.values[col.id]) {\n return ;\n }\n\n if (col.type === 'string') {\n return (\n // eslint-disable-next-line jsx-a11y/click-events-have-key-events\n \n {row.values[col.id]?.value}\n \n );\n }\n const Component = col.type;\n return (\n \n \n {row.values[col.id].children ? row.values[col.id].children : null}\n
    \n \n );\n};\n\nCell.propTypes = {\n col: PropTypes.instanceOf(Object),\n row: PropTypes.instanceOf(Object),\n index: PropTypes.number,\n};\n","import React, { useContext } from 'react';\nimport PropTypes from 'prop-types';\nimport Checkbox from '../../../form/components/Checkbox';\nimport { Cell } from './cell';\nimport { tableContext } from '../tableContext';\n\nexport const Row = ({ row, index }) => {\n const { state, sendMessage } = useContext(tableContext);\n const { columns, selectable } = state;\n\n const SelectableCheckbox = () => (\n \n sendMessage('row.selected', { index, selected: v })}\n />\n \n );\n\n return (\n \n {selectable && selectable.position === 'LEFT' && SelectableCheckbox()}\n {columns.map(col => (\n \n ))}\n {selectable && selectable.position === 'RIGHT' && SelectableCheckbox()}\n \n );\n};\n\nRow.propTypes = {\n row: PropTypes.instanceOf(Object),\n index: PropTypes.number,\n};\n","import React, { useContext } from 'react';\nimport { tableContext } from '../tableContext';\nimport { Row } from './row';\n\n\nexport const Body = () => {\n const { state } = useContext(tableContext);\n const { rows } = state;\n\n return (\n \n {\n // eslint-disable-next-line react/no-array-index-key\n rows.map((row, i) => )\n }\n \n );\n};\n","import React, { useState, useEffect, useRef } from 'react';\nimport PropTypes from 'prop-types';\nimport Message from '../Message';\nimport Pagination from '../../form/components/Pagination';\nimport Loader from '../Loader';\nimport InfiniteScroller from '../InfiniteScroller';\nimport { Header } from './js/header';\nimport { Body } from './js/body';\nimport { tableContext } from './tableContext';\n\n/**\n * This is tyk's table component used to render a data in a tabular view.\n * See the example configuration object below to understand how to hydrate the table component\n */\n\nfunction Table({\n value, onChange, noDataMessage, loading, infiniteScrolling,\n}) {\n const [state, setState] = useState(null);\n const [onChangeMsg, setOnChangeMsg] = useState('api');\n const itemsListRef = useRef(null);\n const sortRows = (col, sortOrder) => {\n setState({\n ...state,\n sort: {\n order: sortOrder,\n col,\n },\n });\n };\n\n const selectAllRows = (data) => {\n setState({\n ...state,\n rows: state.rows.map((row) => ({ ...row, selected: data })),\n });\n };\n\n const selectRow = (data) => {\n const { index, selected } = data;\n const selectedRow = state.rows[index];\n \n setState({\n ...state,\n rows: [\n ...state.rows.slice(0, index),\n { ...selectedRow, selected },\n ...state.rows.slice(index + 1),\n ],\n });\n };\n\n const setPagination = (data) => {\n setState({\n ...state,\n pagination: {\n ...state.pagination,\n current: data + 1,\n },\n });\n };\n\n const api = {\n getState: () => state,\n setState: (newState) => setState(newState),\n };\n\n const sendMessage = (message, data) => {\n setOnChangeMsg(message);\n if (message === 'sort') {\n sortRows(data.column.id, data.sortOrder);\n }\n\n if (message === 'header.selectAll.click') {\n selectAllRows(data);\n }\n\n if (message === 'header.selectAll.change') {\n selectAllRows(data);\n }\n\n if (message === 'row.selected') {\n selectRow(data);\n }\n\n if (message === 'pagination.change') {\n setPagination(data);\n }\n };\n\n useEffect(() => setState(value), [value]);\n useEffect(() => {\n if (onChange) {\n onChange(onChangeMsg, state, api);\n }\n setOnChangeMsg('api');\n }, [state]);\n\n if (!state) {\n return ;\n }\n\n if (state.rows <= 0) {\n return {noDataMessage || 'No Data Available'};\n }\n\n const getTable = () => (\n \n
    \n \n
    \n );\n\n\n return (\n \n
    \n {\n loading && \n }\n {\n infiniteScrolling && state.pagination\n ? (\n state.pagination.current}\n loadMore={(num) => sendMessage('pagination.change', num)}\n pageNumber={state.pagination.current - 1}\n initialLoad={false}\n >\n { getTable() }\n \n )\n : getTable()\n }\n
    \n {state.pagination && !infiniteScrolling && (\n
    \n sendMessage('pagination.change', num)}\n />\n
    \n )}\n
    \n );\n}\n\nTable.propTypes = {\n /** Configuration object used to render the component */\n value: PropTypes.shape({\n /** Configuration for table columns */\n columns: PropTypes.arrayOf(PropTypes.shape({\n /** Unique id of the column */\n id: PropTypes.string.isRequired,\n /** Name of the column */\n name: PropTypes.string,\n /** Type of column, String by default */\n type: PropTypes.oneOfType([\n /** Just renders cell data of type strings */\n PropTypes.string,\n /** Render cell of elements (eg. Input / Button) */\n PropTypes.element,\n /** Render a custom function/component */\n PropTypes.func,\n ]),\n sortable: PropTypes.oneOfType([\n /** Make Column sortable */\n PropTypes.bool,\n /** Configure sorting behaviour */\n PropTypes.shape({\n /** Set default sorting direction ASC / DESC */\n default: PropTypes.string,\n }),\n ]),\n })),\n /** Configuration for table rows */\n rows: PropTypes.arrayOf(PropTypes.shape({})),\n /** Configuration to make table rows selectable */\n selectable: PropTypes.shape({}),\n /** Renders pagination for table if the object is missing / empty no pagination is rendered. */\n pagination: PropTypes.shape({}),\n /** Sets maximum height for table container. */\n maxHeight: PropTypes.string,\n /** Styling for the table container. */\n styling: PropTypes.shape({\n /** It's recommended to add styles to a class and pass the class in this object */\n className: PropTypes.string,\n }),\n }).isRequired,\n /** Callback executed with message and value when there are changes on table */\n onChange: PropTypes.func,\n /** Renders a component with the given message when `config.rows` is empty */\n noDataMessage: PropTypes.string,\n /** Show placeholder loader */\n loading: PropTypes.bool,\n /** Adds infinite scroller on page and calls `onChange` with `pagination.change` message */\n infiniteScrolling: PropTypes.bool,\n};\n\nTable.defaultProps = {\n loading: false,\n infiniteScrolling: false,\n noDataMessage: 'No Data Available',\n onChange: null,\n};\n\nexport default Table;\n","import React, { PureComponent } from 'react';\nimport PropTypes from 'prop-types';\n\n/**\n * Column component.\n */\nclass Column extends PureComponent {\n static propTypes = {\n /**\n * This property describes how the column element will be aligned vertically\n * within a Row: bottom, center, top\n */\n align: PropTypes.string,\n /** Css classes that can be passed to the column element */\n className: PropTypes.string,\n /**\n * ID that can be passed to the column element\n */\n id: PropTypes.string,\n /**\n * Specifies the size of the column within a Row (values must be between 1 - 12)\n */\n size: PropTypes.string.isRequired,\n /**\n * Specifies the left gap a column can have within a Row (values must be between 1 - 12)\n */\n offset: PropTypes.string,\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.string,\n PropTypes.object,\n PropTypes.node,\n ]),\n };\n\n getCssClasses() {\n const {\n align, className, offset, size,\n } = this.props;\n const colSize = size.split(' ');\n const colOffsets = offset ? offset.split(' ') : [];\n\n let cssClasses = colSize.map(cSize => `tyk-col--${cSize}`);\n const offsets = colOffsets.map(cOffset => `tyk-col--offset-${cOffset}`);\n\n if (align) {\n cssClasses.push(`tyk-col--align-${align}`);\n }\n\n if (className) {\n cssClasses = cssClasses.concat(className.split(' '));\n }\n\n cssClasses.push('tyk-col');\n cssClasses = cssClasses.concat(offsets || []);\n\n return cssClasses.join(' ');\n }\n\n render() {\n const { children, id, ...props } = this.props;\n\n return (\n
    \n { children }\n
    \n );\n }\n}\n\nexport default Column;\n","import React, { PureComponent } from 'react';\nimport PropTypes from 'prop-types';\n\n\n/** Row component which must be always present as a wrapper for Columns */\nexport default class Row extends PureComponent {\n static propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n ]),\n /** Css classes that can be passed to the Row element */\n className: PropTypes.string,\n /** Removes all the spaces between column */\n nogutters: PropTypes.bool,\n }\n\n getCssClasses() {\n const { className, nogutters } = this.props;\n let cssClass = ['tyk-row'];\n\n if (nogutters) {\n cssClass.push('no-gutters');\n cssClass.push('tyk-row--gutterless');\n }\n\n if (className) {\n cssClass = cssClass.concat(className.split(' '));\n }\n\n return cssClass.join(' ');\n }\n\n render() {\n const {\n children,\n nogutters,\n ...rest\n } = this.props;\n\n return (\n
    \n { children }\n
    \n );\n }\n}\n","import { createContext } from 'react';\n\nexport const DropdownContext = createContext();\n","import React, { cloneElement, useCallback } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { DropdownContext } from '../dropdown-context';\nimport Icon from '../../../../components/Icon';\n\nfunction DropdownItem(props) {\n const {\n customdropdownitem,\n children,\n eventKey,\n href,\n target,\n title,\n onClick,\n } = props;\n const dropdownItemCLick = useCallback((dropdownContext, itemProps) => {\n dropdownContext.onSelectItem(eventKey, itemProps);\n\n if (onClick) onClick(eventKey);\n }, []);\n\n return (\n \n {\n (dropdownContext) => (\n dropdownItemCLick(dropdownContext, props)}\n onKeyUp={() => {}}\n >\n {\n customdropdownitem\n ? cloneElement(customdropdownitem, {})\n : (\n \n {\n eventKey\n && dropdownContext.selectedItem === eventKey\n && dropdownContext.showCheckmark\n ? \n : null\n }\n \n {title || children}\n \n \n )\n }\n \n )\n }\n \n );\n}\n\nDropdownItem.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]),\n customdropdownitem: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n ]),\n eventKey: PropTypes.string,\n href: PropTypes.string,\n target: PropTypes.string,\n onClick: PropTypes.func,\n title: PropTypes.string,\n};\n\nexport default DropdownItem;\n","import React, {\n Component, createRef,\n} from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport DropdownItem from './js/DropdownItem';\nimport Button from '../../../components/Button';\nimport { DropdownContext } from './dropdown-context';\n\nclass Dropdown extends Component {\n static isElemInRightView(el, dropdownWidth) {\n const windowWidth = window.innerWidth;\n const offset = el.getBoundingClientRect();\n const elemRight = offset.left + dropdownWidth;\n\n return elemRight <= windowWidth;\n }\n\n static isElemInBottomView(el, dropdownHeight) {\n const windowHeight = window.innerHeight;\n const offset = el.getBoundingClientRect();\n const elHeight = el.clientHeight;\n const elemBottom = offset.top + elHeight + dropdownHeight;\n\n return elemBottom <= windowHeight;\n }\n\n constructor(props) {\n super(props);\n\n const {\n selectedItem,\n open,\n } = this.props;\n\n this.state = {\n opened: open,\n selectedItem: selectedItem || null,\n };\n\n this.dropdownRef = createRef();\n this.dropdownListRef = createRef();\n this.dropdownButtonRef = createRef();\n this.onSelectItem = this.onSelectItem.bind(this);\n this.toggleDropdown = this.toggleDropdown.bind(this);\n this.handleClickOutside = this.handleClickOutside.bind(this);\n }\n\n componentDidMount() {\n document.addEventListener('mousedown', this.handleClickOutside);\n\n if (this.dropdownListRef.current) {\n this.getStyles();\n }\n }\n\n componentDidUpdate(prevProps) {\n const {\n open,\n } = this.props;\n const {\n opened,\n } = this.state;\n\n if (this.dropdownListRef.current) {\n this.getStyles();\n }\n\n if (\n !prevProps.open\n && open === true\n && !opened\n ) {\n this.toggleDropdown();\n }\n\n if (\n prevProps.open\n && open === false\n && opened\n ) {\n this.closeDropdown();\n }\n }\n\n componentWillUnmount() {\n document.removeEventListener('mousedown', this.handleClickOutside);\n }\n\n handleClickOutside(event) {\n if (\n this.dropdownListRef.current && !this.dropdownListRef.current.contains(event.target)\n && this.dropdownRef.current && !this.dropdownRef.current.contains(event.target)\n ) {\n this.closeDropdown();\n }\n }\n\n onSelectItem(itemId, itemProps) {\n const { closeOnSelect, onSelect } = this.props;\n const changes = {\n selectedItem: itemId,\n selectedItemProps: itemProps,\n };\n\n if (closeOnSelect) {\n changes.opened = false;\n }\n\n this.setState(changes);\n\n if (onSelect && typeof onSelect === 'function') {\n onSelect(itemId);\n }\n }\n\n getStyles() {\n const {\n display,\n position,\n offset,\n } = this.props;\n\n const dropdownEl = this.dropdownListRef.current;\n\n if (offset) {\n dropdownEl.style.top = `${offset.top}`;\n dropdownEl.style.left = `${offset.left}`;\n return;\n }\n\n const scrollTop = Math.max(\n document.documentElement.scrollTop,\n document.body.scrollTop,\n window.scrollY,\n );\n const el = this.dropdownRef.current;\n const elHeight = el.clientHeight;\n const dropdownHeight = dropdownEl ? dropdownEl.clientHeight : 0;\n const dropdownWidth = dropdownEl ? dropdownEl.clientWidth : 0;\n const offsetPosition = el.getBoundingClientRect();\n const { left, top } = offsetPosition;\n let customTop = 0;\n let customLeft = left;\n\n // calculate top position, depending on the element position on the page\n if (Dropdown.isElemInBottomView(el, dropdownHeight)) {\n customTop = top + scrollTop + elHeight;\n } else {\n customTop = top + scrollTop - dropdownHeight - 5;\n }\n\n if (Dropdown.isElemInRightView(el, dropdownWidth)) {\n customLeft = left;\n } else {\n customLeft = left + el.clientWidth - dropdownWidth;\n }\n\n if (position !== 'relative') {\n dropdownEl.style.top = `${customTop}px`;\n if (display !== 'block') {\n dropdownEl.style.left = `${customLeft}px`;\n }\n }\n if (display !== 'block') {\n dropdownEl.style.minWidth = `${this.dropdownButtonRef.current.clientWidth}px`;\n }\n }\n\n getWrapperCssClasses() {\n const {\n btnGroup,\n btnGroupSize,\n className,\n btnTheme,\n wrapperClassName = '',\n } = this.props;\n let cssClasses = [wrapperClassName, 'tyk-dropdown'];\n\n cssClasses.push(`theme-${btnTheme || 'default'}`);\n\n if (className) {\n cssClasses = cssClasses.concat(className.split(' '));\n }\n\n if (btnGroup) {\n cssClasses.push('tyk-button-group');\n cssClasses.push(btnGroupSize ? `tyk-button-group--${btnGroupSize}` : 'tyk-button-group--md');\n }\n\n return cssClasses.join(' ');\n }\n\n getCssClasses() {\n const {\n opened,\n } = this.state;\n const {\n hasCustomContent,\n display,\n listclassnames,\n position,\n maxHeight,\n } = this.props;\n let cssClasses = ['tyk-dropdown-menu', 'tyk-dropdown'];\n\n if (maxHeight) {\n cssClasses.push('tyk-dropdown--scrollable');\n }\n\n if (opened) {\n cssClasses.push('opened');\n }\n\n if (listclassnames) {\n cssClasses = cssClasses.concat(listclassnames.split(' '));\n }\n\n if (display) {\n cssClasses.push('tyk-dropdown--block');\n }\n\n if (hasCustomContent) {\n cssClasses.push('tyk-dropdown--custom');\n }\n\n if (position === 'relative') {\n cssClasses.push('tyk-dropdown--relative');\n }\n\n return cssClasses.join(' ');\n }\n\n getBtnTitle() {\n const { btnTitle, stopButtonTextChange } = this.props;\n const { selectedItemProps } = this.state;\n\n if (!stopButtonTextChange && selectedItemProps && selectedItemProps.title) {\n return selectedItemProps.title;\n }\n\n return btnTitle;\n }\n\n closeDropdown() {\n const { onClose } = this.props;\n\n this.setState({\n opened: false,\n }, () => {\n if (onClose) {\n onClose();\n }\n });\n }\n\n toggleDropdown() {\n const {\n opened,\n } = this.state;\n if (opened) {\n this.closeDropdown();\n\n return;\n }\n\n this.setState({\n opened: true,\n });\n }\n\n render() {\n const {\n appendTo,\n btnClassName,\n btnSize,\n customBtnTitle,\n hasCustomContent,\n btnTheme,\n children,\n label,\n showDropdownIcon,\n showTriggerButton,\n showCheckmark,\n disabled = false,\n maxHeight,\n } = this.props;\n const {\n selectedItem,\n opened,\n } = this.state;\n const DropdownWrapperTag = hasCustomContent ? 'div' : 'ul';\n return (\n \n {\n label\n ? (\n \n )\n : null\n }\n {\n showTriggerButton\n ? (\n \n { customBtnTitle || this.getBtnTitle() }\n \n )\n : null\n }\n {\n opened\n ? ReactDOM.createPortal(\n \n {\n opened\n ? (\n \n {\n (typeof children === 'function')\n ? children({\n closeDropdown: this.closeDropdown.bind(this),\n })\n : children\n }\n \n )\n : null\n }\n ,\n document.querySelector(appendTo || 'body'),\n )\n : null\n }\n \n );\n }\n}\n\nDropdown.propTypes = {\n appendTo: PropTypes.string,\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n PropTypes.func,\n ]),\n closeOnSelect: PropTypes.bool,\n btnClassName: PropTypes.string,\n btnSize: PropTypes.string,\n btnGroupSize: PropTypes.string,\n btnTheme: PropTypes.string,\n btnTitle: PropTypes.oneOfType([\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n customBtnTitle: PropTypes.oneOfType([\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n btnGroup: PropTypes.bool,\n className: PropTypes.string,\n display: PropTypes.string,\n disabled: PropTypes.bool,\n hasCustomContent: PropTypes.bool,\n label: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.func,\n PropTypes.string,\n ]),\n listclassnames: PropTypes.string,\n onClose: PropTypes.func,\n onSelect: PropTypes.func,\n open: PropTypes.bool,\n offset: PropTypes.instanceOf(Object),\n position: PropTypes.string,\n selectedItem: PropTypes.string,\n showDropdownIcon: PropTypes.bool,\n stopButtonTextChange: PropTypes.bool,\n showTriggerButton: PropTypes.bool,\n showCheckmark: PropTypes.bool,\n maxHeight: PropTypes.string,\n wrapperClassName: PropTypes.string,\n};\n\nDropdown.defaultProps = {\n closeOnSelect: false,\n showDropdownIcon: true,\n showTriggerButton: true,\n showCheckmark: true,\n open: false,\n};\n\nDropdown.Item = DropdownItem;\n\nexport default Dropdown;\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"react-ace\");","import React, { useCallback } from 'react';\nimport PropTypes from 'prop-types';\n\nimport ace from 'ace-builds/src-noconflict/ace';\nimport AceEditor from 'react-ace';\nimport 'ace-builds/src-noconflict/mode-javascript';\nimport 'ace-builds/src-noconflict/mode-golang';\nimport 'ace-builds/src-noconflict/mode-python';\nimport 'ace-builds/src-noconflict/mode-css';\nimport 'ace-builds/src-noconflict/mode-json';\nimport 'ace-builds/src-noconflict/mode-xml';\nimport 'ace-builds/src-noconflict/mode-jsx';\nimport 'ace-builds/src-noconflict/ext-searchbox';\nimport 'ace-builds/src-noconflict/ext-beautify';\nimport 'ace-builds/src-noconflict/theme-github';\nimport jsonWorker from 'ace-builds/src-noconflict/worker-json';\n\nace.config.setModuleUrl('ace/mode/json_worker', jsonWorker);\n\nfunction CodeEditor(props) {\n const {\n disabled,\n readOnly,\n disableValidation,\n id,\n error,\n label,\n labelwidth,\n note,\n onBlur,\n onChange,\n theme,\n value,\n setOptions,\n wrapperClassName,\n } = props;\n const classes = [\n 'tyk-form-group',\n wrapperClassName,\n ...(theme ? theme.split(' ').map((t) => `tyk-form-group--${t}`) : []),\n labelwidth && 'tyk-form-group--label-has-width',\n error && 'has-error',\n ].filter(Boolean).join(' ');\n\n const finalSetOptions = {\n ...setOptions,\n ...disableValidation && { useWorker: false },\n };\n\n const getCodeEditorError = useCallback(() => (\n error && error !== 'true' && error !== 'false'\n ? (\n

    \n {error}\n

    \n )\n : null\n ), [error]);\n\n const getLabelStyles = useCallback(() => {\n if (labelwidth) return { flexBasis: labelwidth };\n return {};\n }, [labelwidth]);\n\n const getNonLabelWidth = useCallback(() => {\n if (labelwidth) return { flexBasis: `calc(100% - ${labelwidth} - 20px)` };\n return {};\n }, [labelwidth]);\n\n const handleOnChange = useCallback((newValue) => {\n if (onChange) onChange(newValue);\n }, [onChange]);\n\n const handleOnBlur = useCallback(() => {\n if (onBlur) onBlur(value);\n }, [onBlur, value]);\n\n return (\n
    \n {\n label\n ? \n : null\n }\n
    \n {\n // eslint-disable-next-line\n editorInstance.container.style.resize = 'both';\n // mouseup = css resize end\n document.addEventListener('mouseup', () => (\n editorInstance.resize()\n ));\n }}\n setOptions={finalSetOptions}\n />\n {\n note\n ?

    { note }

    \n : null\n }\n { getCodeEditorError() }\n
    \n
    \n );\n}\n\nCodeEditor.propTypes = {\n disabled: PropTypes.bool,\n readOnly: PropTypes.bool,\n disableValidation: PropTypes.bool,\n id: PropTypes.string,\n error: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.bool,\n ]),\n label: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.func,\n PropTypes.string,\n ]),\n labelwidth: PropTypes.string,\n mode: PropTypes.string,\n name: PropTypes.string,\n note: PropTypes.string,\n onBlur: PropTypes.func,\n onChange: PropTypes.func,\n theme: PropTypes.string,\n value: PropTypes.string,\n setOptions: PropTypes.instanceOf(Object),\n wrapperClassName: PropTypes.string,\n};\n\nexport default CodeEditor;\n","import React, { Component, Fragment, createRef } from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\n\nimport Icon from '../../../components/Icon';\nimport Button from '../../../components/Button';\n\nconst getStateSelectedValues = (multiple, tags, value) => {\n if (!value) {\n return (multiple || tags) ? [] : null;\n }\n\n return value;\n};\n\nexport default class Combobox extends Component {\n static closeList() {\n return {\n cursor: -1,\n opened: false,\n };\n }\n\n static openList() {\n return {\n opened: true,\n };\n }\n\n static filterByName(itemValue, inputValue) {\n return itemValue.name.toLowerCase().indexOf(inputValue) > -1;\n }\n\n static propTypes = {\n allowCustomValues: PropTypes.bool,\n CustomListComponent: PropTypes.elementType,\n searchItem: PropTypes.func,\n disabled: PropTypes.bool,\n error: PropTypes.string,\n id: PropTypes.string,\n label: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.func,\n PropTypes.string,\n ]),\n labelwidth: PropTypes.string,\n multiple: PropTypes.bool,\n max: PropTypes.number,\n note: PropTypes.oneOfType([\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n onChange: PropTypes.func,\n placeholder: PropTypes.string,\n tags: PropTypes.bool,\n theme: PropTypes.string,\n value: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.instanceOf(Object),\n PropTypes.instanceOf(Array),\n ]),\n values: PropTypes.instanceOf(Array),\n };\n\n static defaultProps = {\n allowCustomValues: true,\n };\n\n constructor(props) {\n super(props);\n const {\n multiple,\n tags,\n value,\n } = props;\n\n this.state = {\n cursor: -1,\n opened: false,\n width: 50,\n initialValue: value,\n stateSelectedValues: getStateSelectedValues(multiple, tags, value),\n searchText: '',\n tags,\n };\n\n this.comboboxRef = createRef();\n this.valuesListRef = createRef();\n this.inputRef = createRef();\n this.textRef = createRef();\n\n this.focusInput = this.focusInput.bind(this);\n this.onKeyUp = this.onKeyUp.bind(this);\n Combobox.openList = Combobox.openList.bind(this);\n this.handleClickOutside = this.handleClickOutside.bind(this);\n this.handleItemsNavigation = this.handleItemsNavigation.bind(this);\n this.handleComboboxDropdownClick = this.handleComboboxDropdownClick.bind(this);\n this.handleListItemClick = this.handleListItemClick.bind(this);\n this.handlePillRemoveClick = this.handlePillRemoveClick.bind(this);\n this.manageSelectedTags = this.manageSelectedTags.bind(this);\n }\n\n componentDidMount() {\n const { tags } = this.props;\n\n if (tags) {\n this.setInputWidth();\n }\n\n this.bindEvents();\n }\n\n componentWillUnmount() {\n this.unBindEvents();\n }\n\n static getDerivedStateFromProps(nextProps, prevState) {\n if (\n JSON.stringify(nextProps.value) !== JSON.stringify(prevState.initialValue)\n || nextProps.tags !== prevState.tags\n ) {\n return {\n initialValue: nextProps.value,\n stateSelectedValues: getStateSelectedValues(\n nextProps.multiple,\n nextProps.tags,\n nextProps.value,\n ),\n tags: nextProps.tags,\n };\n }\n\n return null;\n }\n\n onKeyUp(e) {\n const { tags, allowCustomValues } = this.props;\n const { cursor, opened } = this.state;\n const filteredValues = this.filterValues();\n let tempState = Object.assign({}, this.getSearchText());\n\n if (tags && e.key !== 'Escape') {\n tempState = Object.assign({}, tempState, this.setInputWidth());\n }\n\n if (e.key === 'Enter') {\n const methodName = (tags) ? 'manageSelectedTags' : 'manageSelectedValues';\n tempState = Object.assign({}, tempState, this[methodName](cursor));\n }\n\n if (allowCustomValues && !e.key === ' ' && tags) {\n tempState = Object.assign({}, tempState, this.manageSelectedTags());\n }\n\n if (\n !opened\n && this.inputRef.current.value\n && filteredValues\n && filteredValues.length\n && e.key !== 'Escape'\n ) {\n tempState = Object.assign({}, tempState, Combobox.openList());\n }\n\n if (e.key === 'Escape' && opened) {\n tempState = Object.assign({}, tempState, Combobox.closeList());\n }\n\n if (opened && filteredValues && !filteredValues.length) {\n tempState = Object.assign({}, tempState, Combobox.closeList());\n }\n\n this.setState(previousState => Object.assign({}, previousState, tempState));\n }\n\n getLabelStyles() {\n const { labelwidth } = this.props;\n const styles = {};\n\n if (labelwidth) {\n styles.flexBasis = labelwidth;\n }\n\n return styles;\n }\n\n getNonLabelWidth() {\n const { labelwidth } = this.props;\n const styles = {};\n\n if (labelwidth) {\n styles.flexBasis = `calc(100% - ${labelwidth} - 20px)`;\n }\n\n return styles;\n }\n\n setInputWidth() {\n return {\n width: 50 + this.textRef.current.offsetWidth,\n };\n }\n\n getSelectedIndex(value) {\n const { stateSelectedValues } = this.state;\n let position = -1;\n\n if (Array.isArray(stateSelectedValues)) {\n stateSelectedValues.forEach((item, index) => {\n if (item.id === value.id) {\n position = index;\n }\n });\n } else if (stateSelectedValues) {\n if (stateSelectedValues.id === value.id) {\n position = 0;\n }\n }\n\n return position;\n }\n\n getSearchText() {\n return {\n searchText: this.inputRef.current.value,\n };\n }\n\n getListItemCssClasses(value, index) {\n const cssClasses = [];\n const {\n cursor,\n } = this.state;\n\n if (cursor === index) {\n cssClasses.push('active');\n }\n\n if (value.disabled) {\n cssClasses.push('disabled');\n }\n\n return cssClasses.join(' ');\n }\n\n getComboboxListCssClass() {\n const { opened } = this.state;\n const { tags, theme } = this.props;\n const themes = theme ? theme.split(' ') : [];\n\n const cssClasses = ['tyk-combobox__list'];\n\n if (opened) {\n cssClasses.push('tyk-combobox__list--opened');\n }\n\n if (tags) {\n cssClasses.push('tyk-combobox__list--has-tags');\n }\n\n if (themes.length) {\n themes.forEach((iTheme) => {\n cssClasses.push(`tyk-form-group--${iTheme}`);\n });\n }\n\n return cssClasses.join(' ');\n }\n\n getCssClasses() {\n const {\n error, disabled, theme, labelwidth,\n } = this.props;\n const cssClasses = ['tyk-form-group', 'tyk-combobox'];\n const themes = theme ? theme.split(' ') : [];\n\n if (error) {\n cssClasses.push('has-error');\n }\n\n if (labelwidth) {\n cssClasses.push('tyk-form-group--label-has-width');\n }\n\n if (themes.length) {\n themes.forEach((iTheme) => {\n cssClasses.push(`tyk-form-group--${iTheme}`);\n });\n }\n\n if (disabled) {\n cssClasses.push('disabled');\n }\n\n return cssClasses.join(' ');\n }\n\n getInputError() {\n const { error } = this.props;\n\n return (error && error !== 'true' && error !== 'false')\n ? (\n \n { error }\n

    \n )\n : null;\n }\n\n getStyles() {\n const { scrollTop } = document.documentElement;\n const el = this.comboboxRef.current;\n const elHeight = el.offsetHeight;\n const elWidth = el.offsetWidth;\n\n const offset = el.getBoundingClientRect();\n const { left } = offset;\n let top = 0;\n\n top = offset.top + scrollTop + elHeight;\n\n return {\n top: `${top - 1}px`,\n left: `${left}px`,\n width: `${elWidth}px`,\n };\n }\n\n getComboboxDisplayData() {\n const { stateSelectedValues } = this.state;\n const { multiple, placeholder, values } = this.props;\n\n if (!stateSelectedValues) {\n return placeholder;\n }\n\n if (stateSelectedValues && Array.isArray(stateSelectedValues) && !stateSelectedValues.length) {\n return placeholder;\n }\n\n if (stateSelectedValues && !Array.isArray(stateSelectedValues) && !stateSelectedValues.id) {\n return placeholder;\n }\n\n if (Array.isArray(stateSelectedValues) && multiple) {\n return stateSelectedValues.reduce((prevValue, value, index) => prevValue + value.name + ((index !== stateSelectedValues.length - 1) ? ', ' : ''), '');\n }\n\n if (\n values\n && values.length\n && !Array.isArray(stateSelectedValues) && !stateSelectedValues.name\n ) {\n return values.filter(value => value.id === stateSelectedValues.id)[0].name;\n }\n\n return stateSelectedValues.name;\n }\n\n manageSelectedTags(index) {\n const { max, allowCustomValues } = this.props;\n const { stateSelectedValues } = this.state;\n const filteredValues = this.filterValues();\n const value = { id: this.inputRef.current.value, name: this.inputRef.current.value };\n\n if (allowCustomValues === false && index === -1) {\n return null;\n }\n\n const tempValue = filteredValues[index] || value;\n const selectedIndex = this.getSelectedIndex(tempValue);\n let selectedValues = {};\n\n this.inputRef.current.value = '';\n\n if (selectedIndex > -1 && this.isInInitialValues(tempValue)) {\n selectedValues = this.removeSelectedValue(selectedIndex);\n } else if (selectedIndex === -1) {\n if (max && stateSelectedValues.length >= max) {\n return selectedValues;\n }\n selectedValues = this.addSelectedValue(tempValue);\n }\n\n return selectedValues;\n }\n\n manageSelectedValues(index) {\n const { stateSelectedValues } = this.state;\n const {\n multiple, onChange, max,\n } = this.props;\n const filteredValues = this.filterValues();\n const tempSelectedValues = filteredValues[index];\n let selectedValues;\n const selectedIndex = this.getSelectedIndex(tempSelectedValues);\n\n if (tempSelectedValues && multiple) {\n if (selectedIndex > -1) {\n selectedValues = this.removeSelectedValue(selectedIndex);\n } else {\n if (max && stateSelectedValues.length >= max) {\n return selectedValues;\n }\n selectedValues = this.addSelectedValue(filteredValues[index]);\n }\n\n // tempSelectedValues = stateSelectedValues;\n } else {\n selectedValues = {\n stateSelectedValues: (selectedIndex === -1) ? tempSelectedValues : { id: null },\n };\n\n if (onChange && typeof onChange === 'function') {\n onChange((selectedIndex === -1) ? tempSelectedValues : null);\n }\n }\n\n return selectedValues;\n }\n\n removeSelectedValue(index) {\n const { stateSelectedValues } = this.state;\n const { onChange } = this.props;\n const tempStateSelectedValues = JSON.parse(JSON.stringify(stateSelectedValues));\n\n tempStateSelectedValues.splice(index, 1);\n\n if (onChange && typeof onChange === 'function') {\n onChange(tempStateSelectedValues.length ? tempStateSelectedValues : null);\n }\n\n return {\n stateSelectedValues: tempStateSelectedValues,\n searchText: '',\n };\n }\n\n addSelectedValue(value) {\n const { stateSelectedValues } = this.state;\n const { onChange } = this.props;\n const tempStateSelectedValues = JSON.parse(JSON.stringify(stateSelectedValues));\n\n tempStateSelectedValues.push(value);\n\n if (onChange && typeof onChange === 'function') {\n onChange(tempStateSelectedValues.length ? tempStateSelectedValues : null);\n }\n\n return {\n stateSelectedValues: tempStateSelectedValues,\n searchText: '',\n };\n }\n\n isInInitialValues(value) {\n const { values } = this.props;\n let ok = false;\n\n values.forEach((item) => {\n if (value.id === item.id) {\n ok = true;\n }\n });\n\n return ok;\n }\n\n filterValues() {\n const { values, searchItem } = this.props;\n\n if (!this.inputRef.current) {\n return values;\n }\n\n const arr = values\n .filter(\n value => (searchItem\n ? searchItem(value, this.inputRef.current.value.toLowerCase())\n : Combobox.filterByName(value, this.inputRef.current.value.toLowerCase())),\n );\n\n return arr;\n }\n\n bindEvents() {\n document.addEventListener('mousedown', this.handleClickOutside);\n }\n\n unBindEvents() {\n document.removeEventListener('mousedown', this.handleClickOutside);\n }\n\n handleItemsNavigation(e) {\n const { tags } = this.props;\n if (['ArrowDown', 'ArrowUp'].indexOf(e.key) === -1) {\n return;\n }\n\n const { cursor } = this.state;\n const filteredValues = this.filterValues();\n let cursorNext;\n\n e.preventDefault();\n\n if (e.key === 'ArrowDown') {\n if (cursor === -1 || cursor === filteredValues.length - 1) {\n cursorNext = 0;\n } else if (cursor < filteredValues.length - 1) {\n cursorNext = cursor + 1;\n }\n }\n\n if (e.key === 'ArrowUp') {\n if (cursor > 0) {\n cursorNext = cursor - 1;\n } else {\n cursorNext = filteredValues.length - 1;\n }\n }\n\n if (this.valuesListRef.current && cursorNext > 4) {\n const scrollTop = (cursorNext - 4) * 38;\n\n this.valuesListRef.current.scrollTop = (!tags) ? 60 + scrollTop : scrollTop;\n } else if (this.valuesListRef.current) {\n this.valuesListRef.current.scrollTop = 0;\n }\n\n this.setState(previousState => ({\n ...previousState,\n opened: true,\n cursor: cursorNext,\n }));\n }\n\n handleListItemClick(index) {\n // eslint-disable-next-line react/destructuring-assignment\n const clickedValue = this.props.values[index];\n if (clickedValue.disabled) return;\n\n const { multiple, tags } = this.props;\n\n const methodName = (tags) ? 'manageSelectedTags' : 'manageSelectedValues';\n const tempState = Object.assign({}, this.state, this[methodName](index));\n\n this.setState((previousState) => {\n if (!multiple && !tags) {\n tempState.opened = false;\n }\n\n return Object.assign({}, previousState, tempState);\n });\n }\n\n handlePillRemoveClick(index) {\n const { disabled } = this.props;\n\n if (disabled) {\n return;\n }\n\n const tempState = this.removeSelectedValue(index);\n\n this.setState(previousState => Object.assign({}, previousState, tempState));\n }\n\n handleClickOutside(event) {\n if (\n this.valuesListRef.current && !this.valuesListRef.current.contains(event.target)\n && this.comboboxRef.current && !this.comboboxRef.current.contains(event.target)\n ) {\n this.setState(previousState => Object.assign({}, previousState, Combobox.closeList()));\n }\n }\n\n handleComboboxDropdownClick() {\n const { disabled } = this.props;\n\n if (disabled) {\n return;\n }\n\n this.setState(previousState => Object.assign({}, previousState, Combobox.openList()));\n }\n\n reset() {\n const { multiple, tags, value } = this.props;\n\n this.setState({\n stateSelectedValues: getStateSelectedValues(multiple, tags, value),\n });\n }\n\n focusInput() {\n if (this.inputRef.current) {\n this.inputRef.current.focus();\n }\n }\n\n render() {\n const {\n CustomListComponent,\n disabled,\n id,\n label,\n note,\n tags,\n max,\n placeholder,\n } = this.props;\n const {\n width, opened, searchText, stateSelectedValues,\n } = this.state;\n\n const filteredValues = this.filterValues();\n\n return (\n \n
    \n {\n label\n ? \n : null\n }\n \n {}}\n ref={this.comboboxRef}\n >\n {\n tags\n ? (\n \n {\n (stateSelectedValues || []).map((value, index) => (\n
  • \n \n { value.name }\n
  • \n ))\n }\n \n {(max === undefined || stateSelectedValues?.length < max) && (\n <>\n {\n if (e.key === 'Enter') {\n e.preventDefault();\n }\n }}\n onKeyUp={this.onKeyUp}\n onKeyDown={this.handleItemsNavigation}\n placeholder={(!stateSelectedValues || !stateSelectedValues.length) ? placeholder : ''}\n ref={this.inputRef}\n style={{\n width: (!stateSelectedValues || !stateSelectedValues.length) ? '100%' : `${width}px`,\n }}\n />\n \n { searchText }\n \n \n )}\n {\n filteredValues.length\n ? (\n \n )\n : null\n }\n \n
    \n )\n : (\n {}}\n >\n { this.getComboboxDisplayData() }\n \n \n )\n }\n \n {\n note\n ?

    { note }

    \n : null\n }\n { this.getInputError() }\n
    \n \n {\n // eslint-disable-next-line no-nested-ternary\n !CustomListComponent\n ? opened && filteredValues.length\n ? ReactDOM.createPortal(\n \n {\n !tags\n ? (\n
  • \n \n
  • \n )\n : null\n }\n {\n filteredValues\n .map((value, index) => (\n {}}\n key={value.id}\n >\n {\n (this.getSelectedIndex(value) > -1)\n ? \n : null\n }\n \n {' '}\n { value.name }\n \n \n ))\n }\n ,\n document.querySelector('body'),\n )\n : null\n : (\n \n )\n }\n
    \n );\n }\n}\n","import React, { useState, useRef, useEffect } from 'react';\nimport Icon from '../../../../components/Icon';\nimport Pill from '../../../../components/Pill';\n\nfunction Value(props) {\n const {\n value,\n max,\n tags,\n tagSeparators,\n addTagOnBlur,\n placeholder,\n disabled,\n renderValue,\n valueOverflow,\n focus,\n onMessage: sendMessage,\n readOnly,\n } = props;\n const INPUT_MIN_WIDTH = 60;\n const inputRef = useRef(null);\n const dummyElementRef = useRef(null);\n const [inputValue, setInputValue] = useState('');\n const [inputWidth, setInputWidth] = useState(`${INPUT_MIN_WIDTH + 10}px`);\n\n function entryFieldOnChange(val) {\n if (tagSeparators.some(ts => val.slice(-1) === ts)) return;\n const dummy = dummyElementRef.current;\n dummy.innerHTML = val;\n setInputWidth(`${Math.max(dummy.clientWidth, INPUT_MIN_WIDTH) + 10}px`);\n setInputValue(val);\n sendMessage('tag.input.change', val);\n }\n\n function entryFieldOnKeyDown(key, val) {\n if (!tags) return;\n if (val === '' && key === 'Backspace' && value.length) {\n sendMessage('tag.remove', value[value.length - 1].id);\n return;\n }\n if (key === 'Enter') {\n sendMessage('tag.input.enter', val);\n entryFieldOnChange('');\n return;\n }\n if (key === 'ArrowUp') {\n sendMessage('tag.input.arrowUp');\n return;\n }\n if (key === 'ArrowDown') {\n sendMessage('tag.input.arrowDown');\n return;\n }\n if (key === 'Escape') {\n sendMessage('tag.input.escape');\n return;\n }\n if (tagSeparators.includes(key)) {\n sendMessage('tag.add', val);\n entryFieldOnChange('');\n }\n }\n\n function triggerAction() {\n sendMessage('text-value.click');\n }\n\n function textValue(val, isPlaceholder = false) {\n if (readOnly) return val || '-';\n\n const classes = [\n 'tyk-combobox2__text-value',\n `overflow-${valueOverflow}`,\n isPlaceholder && 'is-placeholder',\n ].filter(Boolean).join(' ');\n return (\n \n {val}\n \n );\n }\n\n function renderCustomValue(v) {\n const config = {\n tags,\n tagSeparators,\n placeholder,\n disabled,\n renderValue,\n sendMessage,\n };\n return renderValue(v, config);\n }\n\n function renderTag(v) {\n if (renderValue) return renderCustomValue(v);\n\n return (\n \n {\n e.stopPropagation();\n sendMessage('tag.remove', v.id);\n }}\n >\n \n \n { v.name }\n \n );\n }\n\n function getTags() {\n return (\n <>\n {value.map(renderTag)}\n {value.length < max && (\n <>\n entryFieldOnChange(e.target.value)}\n onKeyDown={(e) => {\n if (e.key === 'Enter') e.preventDefault();\n entryFieldOnKeyDown(e.key, e.target.value);\n }}\n onFocus={() => sendMessage('tag.input.focus')}\n onBlur={(e) => {\n sendMessage('tag.input.blur', e.target.value);\n if (addTagOnBlur) entryFieldOnChange('');\n }}\n />\n \n \n )}\n \n );\n }\n\n useEffect(() => {\n if (focus && inputRef.current) inputRef.current.focus();\n }, [focus]);\n\n if (readOnly) {\n return
    {textValue(value.map(v => v.name).join(', '))}
    ;\n }\n\n if (tags) return getTags();\n if (renderValue) {\n return value.length === 0 ? textValue(placeholder, true) : value.map(renderCustomValue);\n }\n return value.length === 0\n ? textValue(placeholder, true)\n : textValue(value.map(v => v.name).join(', '));\n}\n\nexport default Value;\n","import React, { useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport Icon from '../../../../components/Icon';\n\nfunction List(props) {\n const {\n listRef,\n tags,\n values,\n searchValue,\n activeItem,\n onMessage: sendMessage,\n renderListItem,\n selectAll,\n showSearch,\n } = props;\n\n useEffect(() => {\n if (!listRef.current) return;\n const activeElement = listRef.current.querySelector('.active');\n if (activeElement) activeElement.scrollIntoView({ block: 'end' });\n }, [activeItem]);\n\n function renderItem(item) {\n if (renderListItem) {\n return renderListItem(item, {\n tags, searchValue, sendMessage, activeItem,\n });\n }\n\n return (\n !item.disabled && sendMessage('value.select', { item })}\n onKeyPress={() => {}}\n >\n {item.selected && }\n {item.name}\n \n );\n }\n\n function renderSelectAllOption() {\n const isAllSelected = values.every(v => v.selected);\n const isNoneSelected = values.every(v => !v.selected);\n const label = selectAll?.label ?? 'Select All';\n const mode = selectAll?.mode ?? 'select';\n const show = selectAll?.show ?? 'always';\n const render = selectAll?.render;\n\n const shouldRenderOption = show === 'always' || (mode === 'select' ? !isAllSelected : !isNoneSelected);\n if (!shouldRenderOption) return null;\n\n if (render) {\n return render({\n label,\n mode,\n show,\n isAllSelected,\n isNoneSelected,\n }, sendMessage);\n }\n return (\n sendMessage('value.select-all', mode === 'select' ? !isAllSelected : isNoneSelected)}\n onKeyDown={() => {}}\n >\n {(mode === 'select' ? isAllSelected : isNoneSelected) && }\n {label}\n \n );\n }\n\n return (\n <>\n {!tags && showSearch && (\n
    \n sendMessage('search.change', e.target.value)}\n onKeyDown={(e) => {\n if (e.key === 'Escape') sendMessage('search.escape');\n if (e.key === 'ArrowUp') sendMessage('search.arrowUp');\n if (e.key === 'ArrowDown') sendMessage('search.arrowDown');\n if (e.key === 'Enter') sendMessage('search.enter');\n }}\n />\n
    \n )}\n {values.length > 0 && (\n
      \n {Boolean(selectAll) && (\n renderSelectAllOption()\n )}\n {values.map(renderItem)}\n
    \n )}\n \n );\n}\n\nList.propTypes = {\n listRef: PropTypes.instanceOf(Object),\n tags: PropTypes.bool,\n values: PropTypes.instanceOf(Array),\n searchValue: PropTypes.string,\n activeItem: PropTypes.instanceOf(Object),\n onMessage: PropTypes.func,\n renderListItem: PropTypes.func,\n selectAll: PropTypes.oneOfType([\n PropTypes.bool,\n PropTypes.shape({\n label: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.func,\n PropTypes.string,\n ]),\n mode: PropTypes.oneOf(['select', 'unselect']),\n show: PropTypes.oneOf(['always', 'notSameState']),\n render: PropTypes.func,\n }),\n ]),\n showSearch: PropTypes.bool,\n};\n\nexport default List;\n","import React, { useState, useRef, useEffect } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Icon from '../../../components/Icon';\nimport FloatingContainer from '../../../components/FloatingContainer';\n\nimport Value from './js/Value';\nimport List from './js/List';\n\nfunction normalizeValue(value, values) {\n let v = value;\n if (typeof value === 'string') v = { id: value, name: value };\n else if (!value.hasOwnProperty('name')) v = { ...value, name: value.id }; // eslint-disable-line no-prototype-builtins\n if (!values) return v;\n const existingVal = values.find((ev) => ev.id === v.id);\n return existingVal ? { ...v, ...existingVal } : v;\n}\n\nfunction getValueFromProp(value, values) {\n if (!value) return [];\n if (Array.isArray(value)) return value.map((v) => normalizeValue(v, values));\n return [normalizeValue(value, values)];\n}\n\n/**\n * Dropdown-like component that can display selected values as regular text,\n * tags, or in a custom way.\n * You can select values from a list or type in new ones.\n */\nfunction Combobox2({\n value: propValue,\n values: propValues = [],\n valueOverflow = 'single',\n label = '',\n labelwidth,\n tags = false,\n tagSeparators = [' ', 'Enter'],\n addTagOnBlur = false,\n max: maxProp,\n multiple = false,\n placeholder = '',\n theme,\n note = '',\n error = '',\n disabled = false,\n readOnly = false,\n allowCustomValues = true,\n searchItem: matchItemFn,\n renderValue,\n renderListItem,\n renderList: renderListProp,\n CustomListComponent,\n onBeforeChange = () => true,\n onChange = () => {},\n floatingContainerConfig,\n expandMode,\n infiniteScrollerConfig,\n displayDropdownTrigger = true,\n selectAll,\n closeOnSelect,\n showSearch = false,\n required = false,\n validateOnChange = () => {},\n wrapperClassName = '',\n ...restProps\n}) {\n const max = multiple ? Infinity : maxProp || (tags ? Infinity : 1);\n const renderList = CustomListComponent\n ? (values, { sendMessage }) => (\n sendMessage('value.select', { item: values[index] })}\n getListItemCssClasses={() => {}}\n />\n )\n : renderListProp;\n\n const rootRef = useRef(null);\n const comboboxControlRef = useRef(null);\n const dropdownRef = useRef(null);\n const listRef = useRef(null);\n\n const [value, setValue] = useState(getValueFromProp(propValue, propValues));\n const [values, setValues] = useState(propValues.map((v) => normalizeValue(v)));\n const [searchValue, setSearchValue] = useState('');\n const [activeItem, setActiveItem] = useState(null);\n const [isOpened, setIsOpened] = useState(false);\n const [valuesExpanded, setValuesExpanded] = useState(false);\n const [localValidationError, setLocalValidationError] = useState('');\n\n function getThemeClasses() {\n const themes = theme ? theme.split(' ') : [];\n return themes.map((iTheme) => `tyk-form-group--${iTheme}`);\n }\n\n function getCssClasses() {\n return [\n wrapperClassName,\n 'tyk-form-group',\n 'tyk-combobox2',\n ...getThemeClasses(),\n (error || localValidationError) && 'has-error',\n labelwidth && 'tyk-form-group--label-has-width',\n disabled && 'disabled',\n expandMode && 'is-expand-mode',\n ].filter(Boolean).join(' ');\n }\n\n function getFilteredValues() {\n const defaultFn = (v, s) => v?.name?.toLowerCase()?.includes(s);\n const fn = matchItemFn || defaultFn;\n const filteredValues = values.filter((v) => fn(v, searchValue.toLowerCase()));\n return filteredValues;\n }\n\n function openDropdown() {\n setIsOpened(true);\n }\n\n function closeDropdown() {\n setIsOpened(false);\n if (!tags) updateSearchValue('');\n setActiveItem(null);\n }\n\n function updateSearchValue(newSearchValue) {\n setSearchValue(newSearchValue);\n if (activeItem && getFilteredValues().every((fv) => fv.id !== activeItem.id)) {\n setActiveItem(null);\n }\n if (newSearchValue && !isOpened) openDropdown();\n }\n\n function isValidValue(newValues, lastValue) {\n const localError = validateOnChange(newValues, lastValue);\n setLocalValidationError(localError);\n return localError === undefined;\n }\n\n function updateValue(newValues) {\n setValue(newValues);\n onChange(max === 1 && !tags ? (newValues[0] || null) : newValues);\n }\n\n function addTag(val) {\n if (!val) return;\n if (value.length >= max) return;\n if (value.some(({ name }) => name === val)) return;\n\n const listValueIndex = values.findIndex((lv) => lv.name === val);\n let newValue;\n let finalValue = [...value];\n let selectedValues;\n\n if (listValueIndex === -1) {\n if (allowCustomValues) {\n newValue = { id: val, name: val };\n finalValue = [...value, newValue];\n }\n } else {\n selectedValues = [\n ...values.slice(0, listValueIndex),\n { ...values[listValueIndex], selected: true },\n ...values.slice(listValueIndex + 1),\n ];\n newValue = values[listValueIndex];\n finalValue = [...value, values[listValueIndex]];\n }\n\n if (isValidValue(finalValue, newValue) && onBeforeChange(value, finalValue)) {\n if (selectedValues) {\n setValues(selectedValues);\n }\n updateValue(finalValue);\n }\n }\n\n function removeTag(id) {\n if (required && max === 1) return;\n\n const listValueIndex = values.findIndex((lv) => lv.id === id);\n const newValue = value.filter((v) => v.id !== id);\n\n if (!onBeforeChange(value, newValue)) return;\n\n if (listValueIndex !== -1) {\n setValues([\n ...values.slice(0, listValueIndex),\n { ...values[listValueIndex], selected: false },\n ...values.slice(listValueIndex + 1),\n ]);\n }\n updateValue(newValue);\n }\n\n function selectValue({ id }) {\n const val = values.find((v) => v.id === id);\n let finalValue = value;\n let selectedValues = values;\n\n if (val.selected) {\n if (!required || max !== 1) {\n finalValue = value.filter((v) => v.id !== val.id);\n selectedValues = values.map((v) => (v.id === val.id ? { ...v, selected: false } : v));\n }\n } else if (value.length < max) {\n finalValue = [...value, val];\n selectedValues = values.map((v) => (v.id === val.id ? { ...v, selected: true } : v));\n } else if (max === 1) {\n finalValue = [val];\n selectedValues = values.map((v) => ({ ...v, selected: v.id === val.id }));\n }\n\n if (isValidValue(finalValue, val) && onBeforeChange(value, finalValue)) {\n updateValue(finalValue);\n setValues(selectedValues);\n }\n\n if (max === 1 || closeOnSelect) {\n closeDropdown();\n }\n }\n\n function selectAllValues(selected) {\n if (values.length > max) return;\n const newValue = selected ? [...values] : [];\n\n if (!onBeforeChange(value, newValue)) return;\n\n updateValue(newValue);\n setValues(values.map((v) => ({ ...v, selected })));\n if (closeOnSelect) closeDropdown();\n }\n\n function moveUpActiveItem() {\n const visibleItems = getFilteredValues().filter((v) => !v.disabled);\n if (visibleItems.length === 0) return;\n if (activeItem === null || visibleItems.length === 1) {\n setActiveItem(visibleItems[visibleItems.length - 1]);\n return;\n }\n const activeIndex = visibleItems.findIndex((v) => v.id === activeItem.id);\n setActiveItem(visibleItems[activeIndex > 0 ? activeIndex - 1 : visibleItems.length - 1]);\n }\n\n function moveDownActiveItem() {\n const visibleItems = getFilteredValues().filter((v) => !v.disabled);\n if (visibleItems.length === 0) return;\n if (activeItem === null || visibleItems.length === 1) {\n setActiveItem(visibleItems[0]);\n return;\n }\n const activeIndex = visibleItems.findIndex((v) => v.id === activeItem.id);\n setActiveItem(visibleItems[activeIndex < visibleItems.length - 1 ? activeIndex + 1 : 0]);\n }\n\n function executeTriggerAction() {\n if (expandMode) {\n setValuesExpanded(!valuesExpanded);\n } else {\n openDropdown();\n }\n }\n\n function handleDocumentClick(e) {\n const isClickInside = (rootRef.current && rootRef.current.contains(e.target))\n || (dropdownRef.current && dropdownRef.current.contains(e.target));\n if (!isClickInside) {\n closeDropdown();\n }\n }\n\n function onClickCapture(e) {\n if (!disabled) return;\n if (!expandMode) {\n e.stopPropagation();\n return;\n }\n\n const triggerElement = rootRef.current.querySelector('.tyk-combobox2__values-container-trigger');\n if (!triggerElement) return;\n\n const isClickOnTrigger = triggerElement === e.target || triggerElement.contains(e.target);\n if (!isClickOnTrigger) e.stopPropagation();\n }\n\n function onTagMessage(message, data) {\n if (message === 'add') {\n addTag(data);\n updateSearchValue('');\n }\n\n if (message === 'remove') removeTag(data);\n\n if (message === 'input.change') updateSearchValue(data);\n\n if (message === 'input.enter') {\n if (activeItem) {\n selectValue(activeItem);\n } else if (tagSeparators.includes('Enter')) {\n addTag(data);\n updateSearchValue('');\n }\n }\n\n if (message === 'input.arrowUp') {\n openDropdown();\n moveUpActiveItem();\n }\n\n if (message === 'input.arrowDown') {\n openDropdown();\n moveDownActiveItem();\n }\n\n if (message === 'input.escape') closeDropdown();\n\n if (message === 'input.blur' && addTagOnBlur) {\n addTag(data);\n updateSearchValue('');\n }\n\n if (message === 'input.focus') {\n openDropdown();\n }\n }\n\n function onMessage(message, data) {\n if (message.startsWith('tag.')) onTagMessage(message.slice(4), data);\n\n if (message === 'value.select') selectValue(data.item);\n\n if (message === 'value.select-all') selectAllValues(data);\n\n if (message === 'text-value.click') openDropdown();\n\n if (message === 'search.change') updateSearchValue(data);\n\n if (message === 'search.escape') closeDropdown();\n\n if (message === 'search.arrowUp') moveUpActiveItem();\n\n if (message === 'search.arrowDown') moveDownActiveItem();\n\n if (message === 'search.enter') {\n if (activeItem) selectValue(activeItem);\n }\n }\n\n useEffect(() => {\n window.addEventListener('click', handleDocumentClick, true);\n return () => window.removeEventListener('click', handleDocumentClick, true);\n }, []);\n\n useEffect(() => {\n if (propValues.length) {\n const newValues = propValues.map((v) => ({\n ...normalizeValue(v),\n selected: value.some((sv) => sv.id === v.id),\n }));\n setValues(newValues);\n setValue((val) => val.map((v) => newValues.find((nv) => nv.id === v.id) || v));\n } else if (values.length) {\n setValues([]);\n }\n }, [propValues]);\n\n useEffect(() => {\n const newValue = getValueFromProp(propValue, values);\n setValue(newValue);\n setValues((vals) => vals.map((v) => ({\n ...normalizeValue(v),\n selected: newValue.some((nv) => nv.id === v.id),\n })));\n }, [propValue]);\n\n useEffect(() => {\n if (!expandMode) return () => {};\n\n const valuesElement = comboboxControlRef.current.querySelector('.tyk-combobox2__current-values');\n const updateScroll = () => {\n valuesElement.scrollTop = valuesElement.scrollHeight;\n };\n /* eslint-disable-next-line no-undef */\n const mobserver = new MutationObserver(updateScroll);\n const robserver = new ResizeObserver(updateScroll);\n\n mobserver.observe(valuesElement, { attributes: true, childList: true, subtree: true });\n robserver.observe(valuesElement);\n\n return () => {\n mobserver.disconnect();\n robserver.disconnect();\n };\n });\n\n const filteredValues = getFilteredValues();\n const currentValuesClasses = [\n 'tyk-combobox2__current-values',\n expandMode && 'expand-mode',\n `tyk-combobox2__current-values--${valuesExpanded ? 'expanded' : 'collapsed'}`,\n ].join(' ');\n return (\n \n {label && (\n \n )}\n {!readOnly && (\n \n
    \n \n \n
    \n {displayDropdownTrigger && (\n \n {expandMode\n ? (\n \n )\n : (\n \n )}\n \n )}\n \n {isOpened && (!tags || filteredValues.length > 0) && (\n \n {renderList ? (\n renderList(filteredValues, {\n tags,\n searchValue,\n activeItem,\n listRef,\n sendMessage: onMessage,\n })\n ) : (\n \n )}\n \n )}\n {note && (\n

    {note}

    \n )}\n {((error && error !== 'true' && error !== 'false') || Boolean(localValidationError)) && (\n

    {error || localValidationError}

    \n )}\n \n )}\n {readOnly && (\n
    \n \n
    \n )}\n \n );\n}\n\nCombobox2.propTypes = {\n /** If `true` it allows entering values that are not in the list. */\n allowCustomValues: PropTypes.bool,\n /** Alias for `renderList`\n * used for backwards compatibility with the old Combobox component. */\n CustomListComponent: PropTypes.elementType,\n /** A function used for filtering elements displayed in the list when typing in. */\n searchItem: PropTypes.func,\n /** A custom component that will be used to display a value. */\n renderValue: PropTypes.func,\n /** A custom component that will be used to display an item in the dropdown list. */\n renderListItem: PropTypes.func,\n /** A custom component that will be used to display the entire content of the dropdown. */\n renderList: PropTypes.func,\n disabled: PropTypes.bool,\n /** hides the UI form element and displayes just the value as text */\n readOnly: PropTypes.bool,\n error: PropTypes.string,\n label: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.func,\n PropTypes.string,\n ]),\n labelwidth: PropTypes.string,\n /** The maximum number of values that can be selected/added. */\n max: PropTypes.number,\n /** Shorthand for max=Infinity */\n multiple: PropTypes.bool,\n note: PropTypes.oneOfType([\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n /**\n * Callback called before changing the value of the component.\n * The value change will succeed only if the callback's return value is truthy.\n * The callback is called with two arguments: 1) the previous value, 2) the next value */\n onBeforeChange: PropTypes.func,\n onChange: PropTypes.func,\n placeholder: PropTypes.string,\n /** Enables the display of values as `Pill` components that can be\n * removed without opening the dropdown. */\n tags: PropTypes.bool,\n /** A list of characters that will trigger the creation of a tag when typed. */\n tagSeparators: PropTypes.arrayOf(PropTypes.string),\n /** If set to true a tag will be created whenever the component loses focus\n * and there is something typed in. */\n addTagOnBlur: PropTypes.bool,\n theme: PropTypes.string,\n /** The value of the component. It can be a string, an array,\n * or an object with an `id` property. */\n value: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.instanceOf(Array),\n PropTypes.instanceOf(Object),\n ]),\n /** An array of selectable values. */\n values: PropTypes.instanceOf(Array),\n /** Config object passed to the internal floating container component. */\n floatingContainerConfig: PropTypes.instanceOf(Object),\n /** If set to `single` it will display the values on a single line\n * with an ellipsis at the end. */\n valueOverflow: PropTypes.oneOf(['single', 'multiple']),\n /**\n * If set to `true` whenever the user clicks on the dropdown trigger\n * the selected values container\n * will expand to show all selected values instead of opening the dropdown.\n */\n expandMode: PropTypes.bool,\n /** Config object passed to the internal infinite scroller component. */\n infiniteScrollerConfig: PropTypes.instanceOf(Object),\n /** Toggles the display of the dropdown trigger. */\n displayDropdownTrigger: PropTypes.bool,\n /**\n * If a boolean it will toggle the select all functionality from the dropdown.\n * It can also be an object with the shape `{ label, show, mode, render }`.\n * label - A string displayed as the select all option\n * show - It can be one of `['always', 'notSameState']`.\n * `always` means the option will always be displayed.\n * `notSameState` means it will be displayed only if the list items are\n * not all with the same state (depending on the `mode` value)\n * mode - It can be one of `['select', 'unselect']` and makes sense only\n * when the `show` property is `notSameState`\n * `select` means the select all option will only be displayed if not all\n * items are selected\n * `unselect` means the option will be displayed if no items are selected\n */\n selectAll: PropTypes.oneOfType([\n PropTypes.bool,\n PropTypes.shape({\n label: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.func,\n PropTypes.string,\n ]),\n mode: PropTypes.oneOf(['select', 'unselect']),\n show: PropTypes.oneOf(['always', 'notSameState']),\n render: PropTypes.func,\n }),\n ]),\n /** It `true` the dropdown will close after selecting a value. */\n closeOnSelect: PropTypes.bool,\n /** Toggles the display of the search input from the dropdown. */\n showSearch: PropTypes.bool,\n /** If it is required and can only select one value once you have something\n * selected you will not be able to deselect */\n required: PropTypes.bool,\n /** Validates newly added value before adding it to the selected values.\n * Returns an error string in case of error otherwise it returns undefined\n */\n validateOnChange: PropTypes.func,\n wrapperClassName: PropTypes.string,\n};\n\nexport default Combobox2;\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"flatpickr\");","\n import API from \"!../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../css-loader/dist/cjs.js!./flatpickr.min.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../css-loader/dist/cjs.js!./flatpickr.min.css\";\n export default content && content.locals ? content.locals : undefined;\n","import React, {\n useEffect, useState, useRef, useCallback,\n} from 'react';\nimport PropTypes from 'prop-types';\nimport flatpickr from 'flatpickr';\nimport 'flatpickr/dist/flatpickr.min.css';\n\nimport Icon from '../../../components/Icon';\nimport { usePrevious } from '../../../hooks';\n\nfunction DatePicker({\n children,\n disabled,\n readOnly = false,\n error,\n id,\n label,\n labelwidth,\n note,\n onClose,\n onChange,\n onOpen,\n theme,\n config = {},\n value,\n wrapperClassName = '',\n}) {\n const [pickerInstance, setPickerInstance] = useState(null);\n const dateRef = useRef(null);\n\n const prevValue = usePrevious(value);\n\n const hasValueChanged = useCallback((prevDate, currentDate) => {\n if (!prevDate) return true;\n if (!Array.isArray(currentDate)) return prevDate.getTime() !== currentDate.getTime();\n\n let diffDates = currentDate;\n\n if (prevDate && currentDate.length && prevDate.length) {\n diffDates = currentDate.filter((date, index) => date.getTime() !== prevDate[index].getTime());\n\n return diffDates.length > 0;\n }\n\n return currentDate.length > 0;\n }, []);\n\n const onDateChange = useCallback((dateValue) => {\n const finalValue = config.mode === 'range' ? dateValue : dateValue[0] || null;\n\n if (!onChange) return;\n\n if (config.mode === 'range') {\n if (finalValue.length === 2 && hasValueChanged(prevValue, finalValue)) {\n onChange(finalValue);\n }\n } else {\n onChange(finalValue);\n }\n }, [prevValue, onChange, hasValueChanged]);\n\n useEffect(() => {\n if (dateRef && dateRef.current && !pickerInstance) {\n const instance = flatpickr(dateRef.current, {\n ...config, defaultDate: value, onChange: onDateChange, onClose, onOpen,\n });\n setPickerInstance(instance);\n }\n\n return () => {\n if (pickerInstance) {\n pickerInstance.destroy();\n }\n };\n }, [dateRef.current, pickerInstance]);\n\n useEffect(() => {\n if (pickerInstance) {\n let tempValue = value;\n\n if (typeof value === 'string') {\n tempValue = new Date(value);\n } else if (Array.isArray(value)) {\n tempValue = value.map((date) => (typeof date === 'string' ? new Date(date) : date));\n }\n\n if (hasValueChanged(prevValue, tempValue)) {\n pickerInstance.set('onChange', onDateChange);\n if (config.mode === 'range') {\n if (tempValue && tempValue.length === 2) {\n pickerInstance.setDate(tempValue, true);\n }\n } else {\n pickerInstance.setDate(tempValue, true);\n }\n }\n }\n }, [prevValue, value, pickerInstance]);\n\n const classes = [\n 'tyk-form-group',\n 'tyk-form-group--addon-right',\n wrapperClassName,\n ...(theme ? theme.split(' ').map((t) => `tyk-form-group--${t}`) : []),\n labelwidth && 'tyk-form-group--label-has-width',\n error && 'has-error',\n ].filter(Boolean).join(' ');\n\n const getLabelStyles = () => {\n if (labelwidth) return { flexBasis: labelwidth };\n return {};\n };\n\n const getNonLabelWidth = () => {\n if (labelwidth) return { flexBasis: `calc(100% - ${labelwidth} - 20px)` };\n return {};\n };\n\n const openCalendar = useCallback(() => {\n if (!pickerInstance) return;\n\n pickerInstance.open();\n }, [pickerInstance]);\n\n const getInputError = () => (\n (error && error !== 'true' && error !== 'false')\n ? (\n

    \n { error }\n

    \n )\n : null\n );\n\n const getInputField = () => {\n let inputStyle = {};\n let addonStyle = {};\n\n if (config && config.inline) {\n inputStyle = {\n height: 0,\n padding: 0,\n width: 0,\n visibility: 'hidden',\n };\n\n addonStyle = {\n display: 'none',\n };\n }\n return (\n <>\n \n {}}\n tabIndex={0}\n style={addonStyle}\n >\n \n \n \n );\n };\n\n return (\n <>\n {\n children && children.length\n ? children({ openCalendar, ref: dateRef })\n : (\n
    \n {\n label\n ? \n : null\n }\n {!readOnly && (\n \n
    \n {getInputField()}\n
    \n {\n note\n ?

    { note }

    \n : null\n }\n { getInputError() }\n
    \n )}\n \n )\n }\n
    \n {readOnly && !value && '-'}\n {readOnly && value && flatpickr.formatDate(value, config.dateFormat || 'd/m/Y')}\n
    \n \n );\n}\n\nDatePicker.propTypes = {\n config: PropTypes.instanceOf(Object),\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n PropTypes.func,\n ]),\n disabled: PropTypes.bool,\n readOnly: PropTypes.bool,\n id: PropTypes.string,\n label: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.func,\n PropTypes.string,\n ]),\n labelwidth: PropTypes.string,\n note: PropTypes.string,\n onChange: PropTypes.oneOfType([\n PropTypes.func,\n PropTypes.instanceOf(Array),\n ]),\n onClose: PropTypes.oneOfType([\n PropTypes.func,\n PropTypes.instanceOf(Array),\n ]),\n onOpen: PropTypes.oneOfType([\n PropTypes.func,\n PropTypes.instanceOf(Array),\n ]),\n theme: PropTypes.string,\n error: PropTypes.string,\n value: PropTypes.oneOfType([\n PropTypes.instanceOf(Array),\n PropTypes.instanceOf(Object),\n PropTypes.string,\n ]),\n wrapperClassName: PropTypes.string,\n};\n\nexport default DatePicker;\n","export default function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}","export default function requiredArgs(required, args) {\n if (args.length < required) {\n throw new TypeError(required + ' argument' + (required > 1 ? 's' : '') + ' required, but only ' + args.length + ' present');\n }\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isDate\n * @category Common Helpers\n * @summary Is the given value a date?\n *\n * @description\n * Returns true if the given value is an instance of Date. The function works for dates transferred across iframes.\n *\n * @param {*} value - the value to check\n * @returns {boolean} true if the given value is a date\n * @throws {TypeError} 1 arguments required\n *\n * @example\n * // For a valid date:\n * const result = isDate(new Date())\n * //=> true\n *\n * @example\n * // For an invalid date:\n * const result = isDate(new Date(NaN))\n * //=> true\n *\n * @example\n * // For some value:\n * const result = isDate('2014-02-31')\n * //=> false\n *\n * @example\n * // For an object:\n * const result = isDate({})\n * //=> false\n */\nexport default function isDate(value) {\n requiredArgs(1, arguments);\n return value instanceof Date || _typeof(value) === 'object' && Object.prototype.toString.call(value) === '[object Date]';\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n *\n * @param {Date|Number} argument - the value to convert\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Clone the date:\n * const result = toDate(new Date(2014, 1, 11, 11, 30, 30))\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert the timestamp to date:\n * const result = toDate(1392098430000)\n * //=> Tue Feb 11 2014 11:30:30\n */\nexport default function toDate(argument) {\n requiredArgs(1, arguments);\n var argStr = Object.prototype.toString.call(argument);\n\n // Clone the date\n if (argument instanceof Date || _typeof(argument) === 'object' && argStr === '[object Date]') {\n // Prevent the date to lose the milliseconds when passed to new Date() in IE10\n return new Date(argument.getTime());\n } else if (typeof argument === 'number' || argStr === '[object Number]') {\n return new Date(argument);\n } else {\n if ((typeof argument === 'string' || argStr === '[object String]') && typeof console !== 'undefined') {\n // eslint-disable-next-line no-console\n console.warn(\"Starting with v2.0.0-beta.1 date-fns doesn't accept strings as date arguments. Please use `parseISO` to parse strings. See: https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#string-arguments\");\n // eslint-disable-next-line no-console\n console.warn(new Error().stack);\n }\n return new Date(NaN);\n }\n}","export default function toInteger(dirtyNumber) {\n if (dirtyNumber === null || dirtyNumber === true || dirtyNumber === false) {\n return NaN;\n }\n var number = Number(dirtyNumber);\n if (isNaN(number)) {\n return number;\n }\n return number < 0 ? Math.ceil(number) : Math.floor(number);\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nexport default function startOfUTCISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n var weekStartsOn = 1;\n var date = toDate(dirtyDate);\n var day = date.getUTCDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setUTCDate(date.getUTCDate() - diff);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nexport default function getUTCISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getUTCFullYear();\n var fourthOfJanuaryOfNextYear = new Date(0);\n fourthOfJanuaryOfNextYear.setUTCFullYear(year + 1, 0, 4);\n fourthOfJanuaryOfNextYear.setUTCHours(0, 0, 0, 0);\n var startOfNextYear = startOfUTCISOWeek(fourthOfJanuaryOfNextYear);\n var fourthOfJanuaryOfThisYear = new Date(0);\n fourthOfJanuaryOfThisYear.setUTCFullYear(year, 0, 4);\n fourthOfJanuaryOfThisYear.setUTCHours(0, 0, 0, 0);\n var startOfThisYear = startOfUTCISOWeek(fourthOfJanuaryOfThisYear);\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}","var defaultOptions = {};\nexport function getDefaultOptions() {\n return defaultOptions;\n}\nexport function setDefaultOptions(newOptions) {\n defaultOptions = newOptions;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nimport { getDefaultOptions } from \"../defaultOptions/index.js\";\nexport default function startOfUTCWeek(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$weekStartsOn, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(1, arguments);\n var defaultOptions = getDefaultOptions();\n var weekStartsOn = toInteger((_ref = (_ref2 = (_ref3 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.weekStartsOn) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.weekStartsOn) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.weekStartsOn) !== null && _ref !== void 0 ? _ref : 0);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n var date = toDate(dirtyDate);\n var day = date.getUTCDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setUTCDate(date.getUTCDate() - diff);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nimport { getDefaultOptions } from \"../defaultOptions/index.js\";\nexport default function getUTCWeekYear(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$firstWeekCon, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getUTCFullYear();\n var defaultOptions = getDefaultOptions();\n var firstWeekContainsDate = toInteger((_ref = (_ref2 = (_ref3 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref !== void 0 ? _ref : 1);\n\n // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n var firstWeekOfNextYear = new Date(0);\n firstWeekOfNextYear.setUTCFullYear(year + 1, 0, firstWeekContainsDate);\n firstWeekOfNextYear.setUTCHours(0, 0, 0, 0);\n var startOfNextYear = startOfUTCWeek(firstWeekOfNextYear, options);\n var firstWeekOfThisYear = new Date(0);\n firstWeekOfThisYear.setUTCFullYear(year, 0, firstWeekContainsDate);\n firstWeekOfThisYear.setUTCHours(0, 0, 0, 0);\n var startOfThisYear = startOfUTCWeek(firstWeekOfThisYear, options);\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}","export default function addLeadingZeros(number, targetLength) {\n var sign = number < 0 ? '-' : '';\n var output = Math.abs(number).toString();\n while (output.length < targetLength) {\n output = '0' + output;\n }\n return sign + output;\n}","import addLeadingZeros from \"../../addLeadingZeros/index.js\";\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | |\n * | d | Day of month | D | |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | m | Minute | M | Month |\n * | s | Second | S | Fraction of second |\n * | y | Year (abs) | Y | |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n */\nvar formatters = {\n // Year\n y: function y(date, token) {\n // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_tokens\n // | Year | y | yy | yyy | yyyy | yyyyy |\n // |----------|-------|----|-------|-------|-------|\n // | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n // | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n // | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n // | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n\n var signedYear = date.getUTCFullYear();\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n var year = signedYear > 0 ? signedYear : 1 - signedYear;\n return addLeadingZeros(token === 'yy' ? year % 100 : year, token.length);\n },\n // Month\n M: function M(date, token) {\n var month = date.getUTCMonth();\n return token === 'M' ? String(month + 1) : addLeadingZeros(month + 1, 2);\n },\n // Day of the month\n d: function d(date, token) {\n return addLeadingZeros(date.getUTCDate(), token.length);\n },\n // AM or PM\n a: function a(date, token) {\n var dayPeriodEnumValue = date.getUTCHours() / 12 >= 1 ? 'pm' : 'am';\n switch (token) {\n case 'a':\n case 'aa':\n return dayPeriodEnumValue.toUpperCase();\n case 'aaa':\n return dayPeriodEnumValue;\n case 'aaaaa':\n return dayPeriodEnumValue[0];\n case 'aaaa':\n default:\n return dayPeriodEnumValue === 'am' ? 'a.m.' : 'p.m.';\n }\n },\n // Hour [1-12]\n h: function h(date, token) {\n return addLeadingZeros(date.getUTCHours() % 12 || 12, token.length);\n },\n // Hour [0-23]\n H: function H(date, token) {\n return addLeadingZeros(date.getUTCHours(), token.length);\n },\n // Minute\n m: function m(date, token) {\n return addLeadingZeros(date.getUTCMinutes(), token.length);\n },\n // Second\n s: function s(date, token) {\n return addLeadingZeros(date.getUTCSeconds(), token.length);\n },\n // Fraction of second\n S: function S(date, token) {\n var numberOfDigits = token.length;\n var milliseconds = date.getUTCMilliseconds();\n var fractionalSeconds = Math.floor(milliseconds * Math.pow(10, numberOfDigits - 3));\n return addLeadingZeros(fractionalSeconds, token.length);\n }\n};\nexport default formatters;","import getUTCDayOfYear from \"../../../_lib/getUTCDayOfYear/index.js\";\nimport getUTCISOWeek from \"../../../_lib/getUTCISOWeek/index.js\";\nimport getUTCISOWeekYear from \"../../../_lib/getUTCISOWeekYear/index.js\";\nimport getUTCWeek from \"../../../_lib/getUTCWeek/index.js\";\nimport getUTCWeekYear from \"../../../_lib/getUTCWeekYear/index.js\";\nimport addLeadingZeros from \"../../addLeadingZeros/index.js\";\nimport lightFormatters from \"../lightFormatters/index.js\";\nvar dayPeriodEnum = {\n am: 'am',\n pm: 'pm',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n};\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O | Timezone (GMT) |\n * | p! | Long localized time | P! | Long localized date |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `format` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n * - `P` is long localized date format\n * - `p` is long localized time format\n */\n\nvar formatters = {\n // Era\n G: function G(date, token, localize) {\n var era = date.getUTCFullYear() > 0 ? 1 : 0;\n switch (token) {\n // AD, BC\n case 'G':\n case 'GG':\n case 'GGG':\n return localize.era(era, {\n width: 'abbreviated'\n });\n // A, B\n case 'GGGGG':\n return localize.era(era, {\n width: 'narrow'\n });\n // Anno Domini, Before Christ\n case 'GGGG':\n default:\n return localize.era(era, {\n width: 'wide'\n });\n }\n },\n // Year\n y: function y(date, token, localize) {\n // Ordinal number\n if (token === 'yo') {\n var signedYear = date.getUTCFullYear();\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n var year = signedYear > 0 ? signedYear : 1 - signedYear;\n return localize.ordinalNumber(year, {\n unit: 'year'\n });\n }\n return lightFormatters.y(date, token);\n },\n // Local week-numbering year\n Y: function Y(date, token, localize, options) {\n var signedWeekYear = getUTCWeekYear(date, options);\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n var weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear;\n\n // Two digit year\n if (token === 'YY') {\n var twoDigitYear = weekYear % 100;\n return addLeadingZeros(twoDigitYear, 2);\n }\n\n // Ordinal number\n if (token === 'Yo') {\n return localize.ordinalNumber(weekYear, {\n unit: 'year'\n });\n }\n\n // Padding\n return addLeadingZeros(weekYear, token.length);\n },\n // ISO week-numbering year\n R: function R(date, token) {\n var isoWeekYear = getUTCISOWeekYear(date);\n\n // Padding\n return addLeadingZeros(isoWeekYear, token.length);\n },\n // Extended year. This is a single number designating the year of this calendar system.\n // The main difference between `y` and `u` localizers are B.C. years:\n // | Year | `y` | `u` |\n // |------|-----|-----|\n // | AC 1 | 1 | 1 |\n // | BC 1 | 1 | 0 |\n // | BC 2 | 2 | -1 |\n // Also `yy` always returns the last two digits of a year,\n // while `uu` pads single digit years to 2 characters and returns other years unchanged.\n u: function u(date, token) {\n var year = date.getUTCFullYear();\n return addLeadingZeros(year, token.length);\n },\n // Quarter\n Q: function Q(date, token, localize) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case 'Q':\n return String(quarter);\n // 01, 02, 03, 04\n case 'QQ':\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n case 'Qo':\n return localize.ordinalNumber(quarter, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n case 'QQQ':\n return localize.quarter(quarter, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case 'QQQQQ':\n return localize.quarter(quarter, {\n width: 'narrow',\n context: 'formatting'\n });\n // 1st quarter, 2nd quarter, ...\n case 'QQQQ':\n default:\n return localize.quarter(quarter, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone quarter\n q: function q(date, token, localize) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case 'q':\n return String(quarter);\n // 01, 02, 03, 04\n case 'qq':\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n case 'qo':\n return localize.ordinalNumber(quarter, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n case 'qqq':\n return localize.quarter(quarter, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case 'qqqqq':\n return localize.quarter(quarter, {\n width: 'narrow',\n context: 'standalone'\n });\n // 1st quarter, 2nd quarter, ...\n case 'qqqq':\n default:\n return localize.quarter(quarter, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // Month\n M: function M(date, token, localize) {\n var month = date.getUTCMonth();\n switch (token) {\n case 'M':\n case 'MM':\n return lightFormatters.M(date, token);\n // 1st, 2nd, ..., 12th\n case 'Mo':\n return localize.ordinalNumber(month + 1, {\n unit: 'month'\n });\n // Jan, Feb, ..., Dec\n case 'MMM':\n return localize.month(month, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // J, F, ..., D\n case 'MMMMM':\n return localize.month(month, {\n width: 'narrow',\n context: 'formatting'\n });\n // January, February, ..., December\n case 'MMMM':\n default:\n return localize.month(month, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone month\n L: function L(date, token, localize) {\n var month = date.getUTCMonth();\n switch (token) {\n // 1, 2, ..., 12\n case 'L':\n return String(month + 1);\n // 01, 02, ..., 12\n case 'LL':\n return addLeadingZeros(month + 1, 2);\n // 1st, 2nd, ..., 12th\n case 'Lo':\n return localize.ordinalNumber(month + 1, {\n unit: 'month'\n });\n // Jan, Feb, ..., Dec\n case 'LLL':\n return localize.month(month, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // J, F, ..., D\n case 'LLLLL':\n return localize.month(month, {\n width: 'narrow',\n context: 'standalone'\n });\n // January, February, ..., December\n case 'LLLL':\n default:\n return localize.month(month, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // Local week of year\n w: function w(date, token, localize, options) {\n var week = getUTCWeek(date, options);\n if (token === 'wo') {\n return localize.ordinalNumber(week, {\n unit: 'week'\n });\n }\n return addLeadingZeros(week, token.length);\n },\n // ISO week of year\n I: function I(date, token, localize) {\n var isoWeek = getUTCISOWeek(date);\n if (token === 'Io') {\n return localize.ordinalNumber(isoWeek, {\n unit: 'week'\n });\n }\n return addLeadingZeros(isoWeek, token.length);\n },\n // Day of the month\n d: function d(date, token, localize) {\n if (token === 'do') {\n return localize.ordinalNumber(date.getUTCDate(), {\n unit: 'date'\n });\n }\n return lightFormatters.d(date, token);\n },\n // Day of year\n D: function D(date, token, localize) {\n var dayOfYear = getUTCDayOfYear(date);\n if (token === 'Do') {\n return localize.ordinalNumber(dayOfYear, {\n unit: 'dayOfYear'\n });\n }\n return addLeadingZeros(dayOfYear, token.length);\n },\n // Day of week\n E: function E(date, token, localize) {\n var dayOfWeek = date.getUTCDay();\n switch (token) {\n // Tue\n case 'E':\n case 'EE':\n case 'EEE':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n case 'EEEEE':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n case 'EEEEEE':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n case 'EEEE':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Local day of week\n e: function e(date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n switch (token) {\n // Numerical value (Nth day of week with current locale or weekStartsOn)\n case 'e':\n return String(localDayOfWeek);\n // Padded numerical value\n case 'ee':\n return addLeadingZeros(localDayOfWeek, 2);\n // 1st, 2nd, ..., 7th\n case 'eo':\n return localize.ordinalNumber(localDayOfWeek, {\n unit: 'day'\n });\n case 'eee':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n case 'eeeee':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n case 'eeeeee':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n case 'eeee':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone local day of week\n c: function c(date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n switch (token) {\n // Numerical value (same as in `e`)\n case 'c':\n return String(localDayOfWeek);\n // Padded numerical value\n case 'cc':\n return addLeadingZeros(localDayOfWeek, token.length);\n // 1st, 2nd, ..., 7th\n case 'co':\n return localize.ordinalNumber(localDayOfWeek, {\n unit: 'day'\n });\n case 'ccc':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // T\n case 'ccccc':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'standalone'\n });\n // Tu\n case 'cccccc':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'standalone'\n });\n // Tuesday\n case 'cccc':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // ISO day of week\n i: function i(date, token, localize) {\n var dayOfWeek = date.getUTCDay();\n var isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek;\n switch (token) {\n // 2\n case 'i':\n return String(isoDayOfWeek);\n // 02\n case 'ii':\n return addLeadingZeros(isoDayOfWeek, token.length);\n // 2nd\n case 'io':\n return localize.ordinalNumber(isoDayOfWeek, {\n unit: 'day'\n });\n // Tue\n case 'iii':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n case 'iiiii':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n case 'iiiiii':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n case 'iiii':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // AM or PM\n a: function a(date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n switch (token) {\n case 'a':\n case 'aa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n case 'aaa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n }).toLowerCase();\n case 'aaaaa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'aaaa':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // AM, PM, midnight, noon\n b: function b(date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue;\n if (hours === 12) {\n dayPeriodEnumValue = dayPeriodEnum.noon;\n } else if (hours === 0) {\n dayPeriodEnumValue = dayPeriodEnum.midnight;\n } else {\n dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n }\n switch (token) {\n case 'b':\n case 'bb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n case 'bbb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n }).toLowerCase();\n case 'bbbbb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'bbbb':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // in the morning, in the afternoon, in the evening, at night\n B: function B(date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue;\n if (hours >= 17) {\n dayPeriodEnumValue = dayPeriodEnum.evening;\n } else if (hours >= 12) {\n dayPeriodEnumValue = dayPeriodEnum.afternoon;\n } else if (hours >= 4) {\n dayPeriodEnumValue = dayPeriodEnum.morning;\n } else {\n dayPeriodEnumValue = dayPeriodEnum.night;\n }\n switch (token) {\n case 'B':\n case 'BB':\n case 'BBB':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n case 'BBBBB':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'BBBB':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Hour [1-12]\n h: function h(date, token, localize) {\n if (token === 'ho') {\n var hours = date.getUTCHours() % 12;\n if (hours === 0) hours = 12;\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n return lightFormatters.h(date, token);\n },\n // Hour [0-23]\n H: function H(date, token, localize) {\n if (token === 'Ho') {\n return localize.ordinalNumber(date.getUTCHours(), {\n unit: 'hour'\n });\n }\n return lightFormatters.H(date, token);\n },\n // Hour [0-11]\n K: function K(date, token, localize) {\n var hours = date.getUTCHours() % 12;\n if (token === 'Ko') {\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n return addLeadingZeros(hours, token.length);\n },\n // Hour [1-24]\n k: function k(date, token, localize) {\n var hours = date.getUTCHours();\n if (hours === 0) hours = 24;\n if (token === 'ko') {\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n return addLeadingZeros(hours, token.length);\n },\n // Minute\n m: function m(date, token, localize) {\n if (token === 'mo') {\n return localize.ordinalNumber(date.getUTCMinutes(), {\n unit: 'minute'\n });\n }\n return lightFormatters.m(date, token);\n },\n // Second\n s: function s(date, token, localize) {\n if (token === 'so') {\n return localize.ordinalNumber(date.getUTCSeconds(), {\n unit: 'second'\n });\n }\n return lightFormatters.s(date, token);\n },\n // Fraction of second\n S: function S(date, token) {\n return lightFormatters.S(date, token);\n },\n // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)\n X: function X(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n if (timezoneOffset === 0) {\n return 'Z';\n }\n switch (token) {\n // Hours and optional minutes\n case 'X':\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XX`\n case 'XXXX':\n case 'XX':\n // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XXX`\n case 'XXXXX':\n case 'XXX': // Hours and minutes with `:` delimiter\n default:\n return formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)\n x: function x(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n switch (token) {\n // Hours and optional minutes\n case 'x':\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xx`\n case 'xxxx':\n case 'xx':\n // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xxx`\n case 'xxxxx':\n case 'xxx': // Hours and minutes with `:` delimiter\n default:\n return formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (GMT)\n O: function O(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n switch (token) {\n // Short\n case 'O':\n case 'OO':\n case 'OOO':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n // Long\n case 'OOOO':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (specific non-location)\n z: function z(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n switch (token) {\n // Short\n case 'z':\n case 'zz':\n case 'zzz':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n // Long\n case 'zzzz':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':');\n }\n },\n // Seconds timestamp\n t: function t(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timestamp = Math.floor(originalDate.getTime() / 1000);\n return addLeadingZeros(timestamp, token.length);\n },\n // Milliseconds timestamp\n T: function T(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timestamp = originalDate.getTime();\n return addLeadingZeros(timestamp, token.length);\n }\n};\nfunction formatTimezoneShort(offset, dirtyDelimiter) {\n var sign = offset > 0 ? '-' : '+';\n var absOffset = Math.abs(offset);\n var hours = Math.floor(absOffset / 60);\n var minutes = absOffset % 60;\n if (minutes === 0) {\n return sign + String(hours);\n }\n var delimiter = dirtyDelimiter || '';\n return sign + String(hours) + delimiter + addLeadingZeros(minutes, 2);\n}\nfunction formatTimezoneWithOptionalMinutes(offset, dirtyDelimiter) {\n if (offset % 60 === 0) {\n var sign = offset > 0 ? '-' : '+';\n return sign + addLeadingZeros(Math.abs(offset) / 60, 2);\n }\n return formatTimezone(offset, dirtyDelimiter);\n}\nfunction formatTimezone(offset, dirtyDelimiter) {\n var delimiter = dirtyDelimiter || '';\n var sign = offset > 0 ? '-' : '+';\n var absOffset = Math.abs(offset);\n var hours = addLeadingZeros(Math.floor(absOffset / 60), 2);\n var minutes = addLeadingZeros(absOffset % 60, 2);\n return sign + hours + delimiter + minutes;\n}\nexport default formatters;","import toDate from \"../../toDate/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport startOfUTCWeekYear from \"../startOfUTCWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000;\nexport default function getUTCWeek(dirtyDate, options) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var diff = startOfUTCWeek(date, options).getTime() - startOfUTCWeekYear(date, options).getTime();\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","import getUTCWeekYear from \"../getUTCWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nimport { getDefaultOptions } from \"../defaultOptions/index.js\";\nexport default function startOfUTCWeekYear(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$firstWeekCon, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(1, arguments);\n var defaultOptions = getDefaultOptions();\n var firstWeekContainsDate = toInteger((_ref = (_ref2 = (_ref3 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref !== void 0 ? _ref : 1);\n var year = getUTCWeekYear(dirtyDate, options);\n var firstWeek = new Date(0);\n firstWeek.setUTCFullYear(year, 0, firstWeekContainsDate);\n firstWeek.setUTCHours(0, 0, 0, 0);\n var date = startOfUTCWeek(firstWeek, options);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nimport startOfUTCISOWeekYear from \"../startOfUTCISOWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000;\nexport default function getUTCISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var diff = startOfUTCISOWeek(date).getTime() - startOfUTCISOWeekYear(date).getTime();\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","import getUTCISOWeekYear from \"../getUTCISOWeekYear/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nexport default function startOfUTCISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var year = getUTCISOWeekYear(dirtyDate);\n var fourthOfJanuary = new Date(0);\n fourthOfJanuary.setUTCFullYear(year, 0, 4);\n fourthOfJanuary.setUTCHours(0, 0, 0, 0);\n var date = startOfUTCISOWeek(fourthOfJanuary);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_DAY = 86400000;\nexport default function getUTCDayOfYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var timestamp = date.getTime();\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n var startOfYearTimestamp = date.getTime();\n var difference = timestamp - startOfYearTimestamp;\n return Math.floor(difference / MILLISECONDS_IN_DAY) + 1;\n}","var dateLongFormatter = function dateLongFormatter(pattern, formatLong) {\n switch (pattern) {\n case 'P':\n return formatLong.date({\n width: 'short'\n });\n case 'PP':\n return formatLong.date({\n width: 'medium'\n });\n case 'PPP':\n return formatLong.date({\n width: 'long'\n });\n case 'PPPP':\n default:\n return formatLong.date({\n width: 'full'\n });\n }\n};\nvar timeLongFormatter = function timeLongFormatter(pattern, formatLong) {\n switch (pattern) {\n case 'p':\n return formatLong.time({\n width: 'short'\n });\n case 'pp':\n return formatLong.time({\n width: 'medium'\n });\n case 'ppp':\n return formatLong.time({\n width: 'long'\n });\n case 'pppp':\n default:\n return formatLong.time({\n width: 'full'\n });\n }\n};\nvar dateTimeLongFormatter = function dateTimeLongFormatter(pattern, formatLong) {\n var matchResult = pattern.match(/(P+)(p+)?/) || [];\n var datePattern = matchResult[1];\n var timePattern = matchResult[2];\n if (!timePattern) {\n return dateLongFormatter(pattern, formatLong);\n }\n var dateTimeFormat;\n switch (datePattern) {\n case 'P':\n dateTimeFormat = formatLong.dateTime({\n width: 'short'\n });\n break;\n case 'PP':\n dateTimeFormat = formatLong.dateTime({\n width: 'medium'\n });\n break;\n case 'PPP':\n dateTimeFormat = formatLong.dateTime({\n width: 'long'\n });\n break;\n case 'PPPP':\n default:\n dateTimeFormat = formatLong.dateTime({\n width: 'full'\n });\n break;\n }\n return dateTimeFormat.replace('{{date}}', dateLongFormatter(datePattern, formatLong)).replace('{{time}}', timeLongFormatter(timePattern, formatLong));\n};\nvar longFormatters = {\n p: timeLongFormatter,\n P: dateTimeLongFormatter\n};\nexport default longFormatters;","var protectedDayOfYearTokens = ['D', 'DD'];\nvar protectedWeekYearTokens = ['YY', 'YYYY'];\nexport function isProtectedDayOfYearToken(token) {\n return protectedDayOfYearTokens.indexOf(token) !== -1;\n}\nexport function isProtectedWeekYearToken(token) {\n return protectedWeekYearTokens.indexOf(token) !== -1;\n}\nexport function throwProtectedError(token, format, input) {\n if (token === 'YYYY') {\n throw new RangeError(\"Use `yyyy` instead of `YYYY` (in `\".concat(format, \"`) for formatting years to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n } else if (token === 'YY') {\n throw new RangeError(\"Use `yy` instead of `YY` (in `\".concat(format, \"`) for formatting years to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n } else if (token === 'D') {\n throw new RangeError(\"Use `d` instead of `D` (in `\".concat(format, \"`) for formatting days of the month to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n } else if (token === 'DD') {\n throw new RangeError(\"Use `dd` instead of `DD` (in `\".concat(format, \"`) for formatting days of the month to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n }\n}","var formatDistanceLocale = {\n lessThanXSeconds: {\n one: 'less than a second',\n other: 'less than {{count}} seconds'\n },\n xSeconds: {\n one: '1 second',\n other: '{{count}} seconds'\n },\n halfAMinute: 'half a minute',\n lessThanXMinutes: {\n one: 'less than a minute',\n other: 'less than {{count}} minutes'\n },\n xMinutes: {\n one: '1 minute',\n other: '{{count}} minutes'\n },\n aboutXHours: {\n one: 'about 1 hour',\n other: 'about {{count}} hours'\n },\n xHours: {\n one: '1 hour',\n other: '{{count}} hours'\n },\n xDays: {\n one: '1 day',\n other: '{{count}} days'\n },\n aboutXWeeks: {\n one: 'about 1 week',\n other: 'about {{count}} weeks'\n },\n xWeeks: {\n one: '1 week',\n other: '{{count}} weeks'\n },\n aboutXMonths: {\n one: 'about 1 month',\n other: 'about {{count}} months'\n },\n xMonths: {\n one: '1 month',\n other: '{{count}} months'\n },\n aboutXYears: {\n one: 'about 1 year',\n other: 'about {{count}} years'\n },\n xYears: {\n one: '1 year',\n other: '{{count}} years'\n },\n overXYears: {\n one: 'over 1 year',\n other: 'over {{count}} years'\n },\n almostXYears: {\n one: 'almost 1 year',\n other: 'almost {{count}} years'\n }\n};\nvar formatDistance = function formatDistance(token, count, options) {\n var result;\n var tokenValue = formatDistanceLocale[token];\n if (typeof tokenValue === 'string') {\n result = tokenValue;\n } else if (count === 1) {\n result = tokenValue.one;\n } else {\n result = tokenValue.other.replace('{{count}}', count.toString());\n }\n if (options !== null && options !== void 0 && options.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return 'in ' + result;\n } else {\n return result + ' ago';\n }\n }\n return result;\n};\nexport default formatDistance;","export default function buildFormatLongFn(args) {\n return function () {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n // TODO: Remove String()\n var width = options.width ? String(options.width) : args.defaultWidth;\n var format = args.formats[width] || args.formats[args.defaultWidth];\n return format;\n };\n}","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\nvar dateFormats = {\n full: 'EEEE, MMMM do, y',\n long: 'MMMM do, y',\n medium: 'MMM d, y',\n short: 'MM/dd/yyyy'\n};\nvar timeFormats = {\n full: 'h:mm:ss a zzzz',\n long: 'h:mm:ss a z',\n medium: 'h:mm:ss a',\n short: 'h:mm a'\n};\nvar dateTimeFormats = {\n full: \"{{date}} 'at' {{time}}\",\n long: \"{{date}} 'at' {{time}}\",\n medium: '{{date}}, {{time}}',\n short: '{{date}}, {{time}}'\n};\nvar formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: 'full'\n }),\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: 'full'\n }),\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: 'full'\n })\n};\nexport default formatLong;","var formatRelativeLocale = {\n lastWeek: \"'last' eeee 'at' p\",\n yesterday: \"'yesterday at' p\",\n today: \"'today at' p\",\n tomorrow: \"'tomorrow at' p\",\n nextWeek: \"eeee 'at' p\",\n other: 'P'\n};\nvar formatRelative = function formatRelative(token, _date, _baseDate, _options) {\n return formatRelativeLocale[token];\n};\nexport default formatRelative;","export default function buildLocalizeFn(args) {\n return function (dirtyIndex, options) {\n var context = options !== null && options !== void 0 && options.context ? String(options.context) : 'standalone';\n var valuesArray;\n if (context === 'formatting' && args.formattingValues) {\n var defaultWidth = args.defaultFormattingWidth || args.defaultWidth;\n var width = options !== null && options !== void 0 && options.width ? String(options.width) : defaultWidth;\n valuesArray = args.formattingValues[width] || args.formattingValues[defaultWidth];\n } else {\n var _defaultWidth = args.defaultWidth;\n var _width = options !== null && options !== void 0 && options.width ? String(options.width) : args.defaultWidth;\n valuesArray = args.values[_width] || args.values[_defaultWidth];\n }\n var index = args.argumentCallback ? args.argumentCallback(dirtyIndex) : dirtyIndex;\n // @ts-ignore: For some reason TypeScript just don't want to match it, no matter how hard we try. I challenge you to try to remove it!\n return valuesArray[index];\n };\n}","import buildLocalizeFn from \"../../../_lib/buildLocalizeFn/index.js\";\nvar eraValues = {\n narrow: ['B', 'A'],\n abbreviated: ['BC', 'AD'],\n wide: ['Before Christ', 'Anno Domini']\n};\nvar quarterValues = {\n narrow: ['1', '2', '3', '4'],\n abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'],\n wide: ['1st quarter', '2nd quarter', '3rd quarter', '4th quarter']\n};\n\n// Note: in English, the names of days of the week and months are capitalized.\n// If you are making a new locale based on this one, check if the same is true for the language you're working on.\n// Generally, formatted dates should look like they are in the middle of a sentence,\n// e.g. in Spanish language the weekdays and months should be in the lowercase.\nvar monthValues = {\n narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],\n abbreviated: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n wide: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']\n};\nvar dayValues = {\n narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],\n short: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n abbreviated: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n wide: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']\n};\nvar dayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n }\n};\nvar formattingDayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n }\n};\nvar ordinalNumber = function ordinalNumber(dirtyNumber, _options) {\n var number = Number(dirtyNumber);\n\n // If ordinal numbers depend on context, for example,\n // if they are different for different grammatical genders,\n // use `options.unit`.\n //\n // `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',\n // 'day', 'hour', 'minute', 'second'.\n\n var rem100 = number % 100;\n if (rem100 > 20 || rem100 < 10) {\n switch (rem100 % 10) {\n case 1:\n return number + 'st';\n case 2:\n return number + 'nd';\n case 3:\n return number + 'rd';\n }\n }\n return number + 'th';\n};\nvar localize = {\n ordinalNumber: ordinalNumber,\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: 'wide'\n }),\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: 'wide',\n argumentCallback: function argumentCallback(quarter) {\n return quarter - 1;\n }\n }),\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: 'wide'\n }),\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: 'wide'\n }),\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: 'wide',\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: 'wide'\n })\n};\nexport default localize;","export default function buildMatchFn(args) {\n return function (string) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var width = options.width;\n var matchPattern = width && args.matchPatterns[width] || args.matchPatterns[args.defaultMatchWidth];\n var matchResult = string.match(matchPattern);\n if (!matchResult) {\n return null;\n }\n var matchedString = matchResult[0];\n var parsePatterns = width && args.parsePatterns[width] || args.parsePatterns[args.defaultParseWidth];\n var key = Array.isArray(parsePatterns) ? findIndex(parsePatterns, function (pattern) {\n return pattern.test(matchedString);\n }) : findKey(parsePatterns, function (pattern) {\n return pattern.test(matchedString);\n });\n var value;\n value = args.valueCallback ? args.valueCallback(key) : key;\n value = options.valueCallback ? options.valueCallback(value) : value;\n var rest = string.slice(matchedString.length);\n return {\n value: value,\n rest: rest\n };\n };\n}\nfunction findKey(object, predicate) {\n for (var key in object) {\n if (object.hasOwnProperty(key) && predicate(object[key])) {\n return key;\n }\n }\n return undefined;\n}\nfunction findIndex(array, predicate) {\n for (var key = 0; key < array.length; key++) {\n if (predicate(array[key])) {\n return key;\n }\n }\n return undefined;\n}","import buildMatchFn from \"../../../_lib/buildMatchFn/index.js\";\nimport buildMatchPatternFn from \"../../../_lib/buildMatchPatternFn/index.js\";\nvar matchOrdinalNumberPattern = /^(\\d+)(th|st|nd|rd)?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n narrow: /^(b|a)/i,\n abbreviated: /^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)/i,\n wide: /^(before christ|before common era|anno domini|common era)/i\n};\nvar parseEraPatterns = {\n any: [/^b/i, /^(a|c)/i]\n};\nvar matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^q[1234]/i,\n wide: /^[1234](th|st|nd|rd)? quarter/i\n};\nvar parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i]\n};\nvar matchMonthPatterns = {\n narrow: /^[jfmasond]/i,\n abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,\n wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i\n};\nvar parseMonthPatterns = {\n narrow: [/^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],\n any: [/^ja/i, /^f/i, /^mar/i, /^ap/i, /^may/i, /^jun/i, /^jul/i, /^au/i, /^s/i, /^o/i, /^n/i, /^d/i]\n};\nvar matchDayPatterns = {\n narrow: /^[smtwf]/i,\n short: /^(su|mo|tu|we|th|fr|sa)/i,\n abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,\n wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i\n};\nvar parseDayPatterns = {\n narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],\n any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i]\n};\nvar matchDayPeriodPatterns = {\n narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,\n any: /^([ap]\\.?\\s?m\\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i\n};\nvar parseDayPeriodPatterns = {\n any: {\n am: /^a/i,\n pm: /^p/i,\n midnight: /^mi/i,\n noon: /^no/i,\n morning: /morning/i,\n afternoon: /afternoon/i,\n evening: /evening/i,\n night: /night/i\n }\n};\nvar match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: function valueCallback(value) {\n return parseInt(value, 10);\n }\n }),\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseEraPatterns,\n defaultParseWidth: 'any'\n }),\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: 'any',\n valueCallback: function valueCallback(index) {\n return index + 1;\n }\n }),\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: 'any'\n }),\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseDayPatterns,\n defaultParseWidth: 'any'\n }),\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: 'any',\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: 'any'\n })\n};\nexport default match;","export default function buildMatchPatternFn(args) {\n return function (string) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var matchResult = string.match(args.matchPattern);\n if (!matchResult) return null;\n var matchedString = matchResult[0];\n var parseResult = string.match(args.parsePattern);\n if (!parseResult) return null;\n var value = args.valueCallback ? args.valueCallback(parseResult[0]) : parseResult[0];\n value = options.valueCallback ? options.valueCallback(value) : value;\n var rest = string.slice(matchedString.length);\n return {\n value: value,\n rest: rest\n };\n };\n}","import formatDistance from \"./_lib/formatDistance/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\nimport formatRelative from \"./_lib/formatRelative/index.js\";\nimport localize from \"./_lib/localize/index.js\";\nimport match from \"./_lib/match/index.js\";\n/**\n * @type {Locale}\n * @category Locales\n * @summary English locale (United States).\n * @language English\n * @iso-639-2 eng\n * @author Sasha Koss [@kossnocorp]{@link https://github.com/kossnocorp}\n * @author Lesha Koss [@leshakoss]{@link https://github.com/leshakoss}\n */\nvar locale = {\n code: 'en-US',\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 0 /* Sunday */,\n firstWeekContainsDate: 1\n }\n};\nexport default locale;","import defaultLocale from \"../../locale/en-US/index.js\";\nexport default defaultLocale;","import isValid from \"../isValid/index.js\";\nimport subMilliseconds from \"../subMilliseconds/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport formatters from \"../_lib/format/formatters/index.js\";\nimport longFormatters from \"../_lib/format/longFormatters/index.js\";\nimport getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport { isProtectedDayOfYearToken, isProtectedWeekYearToken, throwProtectedError } from \"../_lib/protectedTokens/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getDefaultOptions } from \"../_lib/defaultOptions/index.js\";\nimport defaultLocale from \"../_lib/defaultLocale/index.js\"; // This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\nvar formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g;\n\n// This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\nvar longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\nvar escapedStringRegExp = /^'([^]*?)'?$/;\nvar doubleQuoteRegExp = /''/g;\nvar unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n\n/**\n * @name format\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format. The result may vary by locale.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * The characters wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n * (see the last example)\n *\n * Format of the string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 7 below the table).\n *\n * Accepted patterns:\n * | Unit | Pattern | Result examples | Notes |\n * |---------------------------------|---------|-----------------------------------|-------|\n * | Era | G..GGG | AD, BC | |\n * | | GGGG | Anno Domini, Before Christ | 2 |\n * | | GGGGG | A, B | |\n * | Calendar year | y | 44, 1, 1900, 2017 | 5 |\n * | | yo | 44th, 1st, 0th, 17th | 5,7 |\n * | | yy | 44, 01, 00, 17 | 5 |\n * | | yyy | 044, 001, 1900, 2017 | 5 |\n * | | yyyy | 0044, 0001, 1900, 2017 | 5 |\n * | | yyyyy | ... | 3,5 |\n * | Local week-numbering year | Y | 44, 1, 1900, 2017 | 5 |\n * | | Yo | 44th, 1st, 1900th, 2017th | 5,7 |\n * | | YY | 44, 01, 00, 17 | 5,8 |\n * | | YYY | 044, 001, 1900, 2017 | 5 |\n * | | YYYY | 0044, 0001, 1900, 2017 | 5,8 |\n * | | YYYYY | ... | 3,5 |\n * | ISO week-numbering year | R | -43, 0, 1, 1900, 2017 | 5,7 |\n * | | RR | -43, 00, 01, 1900, 2017 | 5,7 |\n * | | RRR | -043, 000, 001, 1900, 2017 | 5,7 |\n * | | RRRR | -0043, 0000, 0001, 1900, 2017 | 5,7 |\n * | | RRRRR | ... | 3,5,7 |\n * | Extended year | u | -43, 0, 1, 1900, 2017 | 5 |\n * | | uu | -43, 01, 1900, 2017 | 5 |\n * | | uuu | -043, 001, 1900, 2017 | 5 |\n * | | uuuu | -0043, 0001, 1900, 2017 | 5 |\n * | | uuuuu | ... | 3,5 |\n * | Quarter (formatting) | Q | 1, 2, 3, 4 | |\n * | | Qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | QQ | 01, 02, 03, 04 | |\n * | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | q | 1, 2, 3, 4 | |\n * | | qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | qq | 01, 02, 03, 04 | |\n * | | qqq | Q1, Q2, Q3, Q4 | |\n * | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | qqqqq | 1, 2, 3, 4 | 4 |\n * | Month (formatting) | M | 1, 2, ..., 12 | |\n * | | Mo | 1st, 2nd, ..., 12th | 7 |\n * | | MM | 01, 02, ..., 12 | |\n * | | MMM | Jan, Feb, ..., Dec | |\n * | | MMMM | January, February, ..., December | 2 |\n * | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | L | 1, 2, ..., 12 | |\n * | | Lo | 1st, 2nd, ..., 12th | 7 |\n * | | LL | 01, 02, ..., 12 | |\n * | | LLL | Jan, Feb, ..., Dec | |\n * | | LLLL | January, February, ..., December | 2 |\n * | | LLLLL | J, F, ..., D | |\n * | Local week of year | w | 1, 2, ..., 53 | |\n * | | wo | 1st, 2nd, ..., 53th | 7 |\n * | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | I | 1, 2, ..., 53 | 7 |\n * | | Io | 1st, 2nd, ..., 53th | 7 |\n * | | II | 01, 02, ..., 53 | 7 |\n * | Day of month | d | 1, 2, ..., 31 | |\n * | | do | 1st, 2nd, ..., 31st | 7 |\n * | | dd | 01, 02, ..., 31 | |\n * | Day of year | D | 1, 2, ..., 365, 366 | 9 |\n * | | Do | 1st, 2nd, ..., 365th, 366th | 7 |\n * | | DD | 01, 02, ..., 365, 366 | 9 |\n * | | DDD | 001, 002, ..., 365, 366 | |\n * | | DDDD | ... | 3 |\n * | Day of week (formatting) | E..EEE | Mon, Tue, Wed, ..., Sun | |\n * | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | EEEEE | M, T, W, T, F, S, S | |\n * | | EEEEEE | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | ISO day of week (formatting) | i | 1, 2, 3, ..., 7 | 7 |\n * | | io | 1st, 2nd, ..., 7th | 7 |\n * | | ii | 01, 02, ..., 07 | 7 |\n * | | iii | Mon, Tue, Wed, ..., Sun | 7 |\n * | | iiii | Monday, Tuesday, ..., Sunday | 2,7 |\n * | | iiiii | M, T, W, T, F, S, S | 7 |\n * | | iiiiii | Mo, Tu, We, Th, Fr, Sa, Su | 7 |\n * | Local day of week (formatting) | e | 2, 3, 4, ..., 1 | |\n * | | eo | 2nd, 3rd, ..., 1st | 7 |\n * | | ee | 02, 03, ..., 01 | |\n * | | eee | Mon, Tue, Wed, ..., Sun | |\n * | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | eeeee | M, T, W, T, F, S, S | |\n * | | eeeeee | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | Local day of week (stand-alone) | c | 2, 3, 4, ..., 1 | |\n * | | co | 2nd, 3rd, ..., 1st | 7 |\n * | | cc | 02, 03, ..., 01 | |\n * | | ccc | Mon, Tue, Wed, ..., Sun | |\n * | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | ccccc | M, T, W, T, F, S, S | |\n * | | cccccc | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | AM, PM | a..aa | AM, PM | |\n * | | aaa | am, pm | |\n * | | aaaa | a.m., p.m. | 2 |\n * | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | b..bb | AM, PM, noon, midnight | |\n * | | bbb | am, pm, noon, midnight | |\n * | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | bbbbb | a, p, n, mi | |\n * | Flexible day period | B..BBB | at night, in the morning, ... | |\n * | | BBBB | at night, in the morning, ... | 2 |\n * | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | h | 1, 2, ..., 11, 12 | |\n * | | ho | 1st, 2nd, ..., 11th, 12th | 7 |\n * | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | H | 0, 1, 2, ..., 23 | |\n * | | Ho | 0th, 1st, 2nd, ..., 23rd | 7 |\n * | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | K | 1, 2, ..., 11, 0 | |\n * | | Ko | 1st, 2nd, ..., 11th, 0th | 7 |\n * | | KK | 01, 02, ..., 11, 00 | |\n * | Hour [1-24] | k | 24, 1, 2, ..., 23 | |\n * | | ko | 24th, 1st, 2nd, ..., 23rd | 7 |\n * | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | m | 0, 1, ..., 59 | |\n * | | mo | 0th, 1st, ..., 59th | 7 |\n * | | mm | 00, 01, ..., 59 | |\n * | Second | s | 0, 1, ..., 59 | |\n * | | so | 0th, 1st, ..., 59th | 7 |\n * | | ss | 00, 01, ..., 59 | |\n * | Fraction of second | S | 0, 1, ..., 9 | |\n * | | SS | 00, 01, ..., 99 | |\n * | | SSS | 000, 001, ..., 999 | |\n * | | SSSS | ... | 3 |\n * | Timezone (ISO-8601 w/ Z) | X | -08, +0530, Z | |\n * | | XX | -0800, +0530, Z | |\n * | | XXX | -08:00, +05:30, Z | |\n * | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | x | -08, +0530, +00 | |\n * | | xx | -0800, +0530, +0000 | |\n * | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Timezone (GMT) | O...OOO | GMT-8, GMT+5:30, GMT+0 | |\n * | | OOOO | GMT-08:00, GMT+05:30, GMT+00:00 | 2 |\n * | Timezone (specific non-locat.) | z...zzz | GMT-8, GMT+5:30, GMT+0 | 6 |\n * | | zzzz | GMT-08:00, GMT+05:30, GMT+00:00 | 2,6 |\n * | Seconds timestamp | t | 512969520 | 7 |\n * | | tt | ... | 3,7 |\n * | Milliseconds timestamp | T | 512969520900 | 7 |\n * | | TT | ... | 3,7 |\n * | Long localized date | P | 04/29/1453 | 7 |\n * | | PP | Apr 29, 1453 | 7 |\n * | | PPP | April 29th, 1453 | 7 |\n * | | PPPP | Friday, April 29th, 1453 | 2,7 |\n * | Long localized time | p | 12:00 AM | 7 |\n * | | pp | 12:00:00 AM | 7 |\n * | | ppp | 12:00:00 AM GMT+2 | 7 |\n * | | pppp | 12:00:00 AM GMT+02:00 | 2,7 |\n * | Combination of date and time | Pp | 04/29/1453, 12:00 AM | 7 |\n * | | PPpp | Apr 29, 1453, 12:00:00 AM | 7 |\n * | | PPPppp | April 29th, 1453 at ... | 7 |\n * | | PPPPpppp| Friday, April 29th, 1453 at ... | 2,7 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table (e.g. `EEEEEEEEEEE`)\n * the output will be the same as default pattern for this unit, usually\n * the longest one (in case of ISO weekdays, `EEEE`). Default patterns for units\n * are marked with \"2\" in the last column of the table.\n *\n * `format(new Date(2017, 10, 6), 'MMM') //=> 'Nov'`\n *\n * `format(new Date(2017, 10, 6), 'MMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMM') //=> 'N'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMMM') //=> 'November'`\n *\n * 3. Some patterns could be unlimited length (such as `yyyyyyyy`).\n * The output will be padded with zeros to match the length of the pattern.\n *\n * `format(new Date(2017, 10, 6), 'yyyyyyyy') //=> '00002017'`\n *\n * 4. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 5. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` always returns the last two digits of a year,\n * while `uu` pads single digit years to 2 characters and returns other years unchanged:\n *\n * | Year | `yy` | `uu` |\n * |------|------|------|\n * | 1 | 01 | 01 |\n * | 14 | 14 | 14 |\n * | 376 | 76 | 376 |\n * | 1453 | 53 | 1453 |\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [getISOWeekYear]{@link https://date-fns.org/docs/getISOWeekYear}\n * and [getWeekYear]{@link https://date-fns.org/docs/getWeekYear}).\n *\n * 6. Specific non-location timezones are currently unavailable in `date-fns`,\n * so right now these tokens fall back to GMT timezones.\n *\n * 7. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `t`: seconds timestamp\n * - `T`: milliseconds timestamp\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 8. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n * You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 9. `D` and `DD` tokens represent days of the year but they are often confused with days of the month.\n * You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * @param {Date|Number} date - the original date\n * @param {String} format - the string of tokens\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {Number} [options.firstWeekContainsDate=1] - the day of January, which is\n * @param {Boolean} [options.useAdditionalWeekYearTokens=false] - if true, allows usage of the week-numbering year tokens `YY` and `YYYY`;\n * see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @param {Boolean} [options.useAdditionalDayOfYearTokens=false] - if true, allows usage of the day of year tokens `D` and `DD`;\n * see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @returns {String} the formatted date string\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `options.locale` must contain `localize` property\n * @throws {RangeError} `options.locale` must contain `formatLong` property\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} format string contains an unescaped latin alphabet character\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * const result = format(new Date(2014, 1, 11), 'MM/dd/yyyy')\n * //=> '02/11/2014'\n *\n * @example\n * // Represent 2 July 2014 in Esperanto:\n * import { eoLocale } from 'date-fns/locale/eo'\n * const result = format(new Date(2014, 6, 2), \"do 'de' MMMM yyyy\", {\n * locale: eoLocale\n * })\n * //=> '2-a de julio 2014'\n *\n * @example\n * // Escape string by single quote characters:\n * const result = format(new Date(2014, 6, 2, 15), \"h 'o''clock'\")\n * //=> \"3 o'clock\"\n */\n\nexport default function format(dirtyDate, dirtyFormatStr, options) {\n var _ref, _options$locale, _ref2, _ref3, _ref4, _options$firstWeekCon, _options$locale2, _options$locale2$opti, _defaultOptions$local, _defaultOptions$local2, _ref5, _ref6, _ref7, _options$weekStartsOn, _options$locale3, _options$locale3$opti, _defaultOptions$local3, _defaultOptions$local4;\n requiredArgs(2, arguments);\n var formatStr = String(dirtyFormatStr);\n var defaultOptions = getDefaultOptions();\n var locale = (_ref = (_options$locale = options === null || options === void 0 ? void 0 : options.locale) !== null && _options$locale !== void 0 ? _options$locale : defaultOptions.locale) !== null && _ref !== void 0 ? _ref : defaultLocale;\n var firstWeekContainsDate = toInteger((_ref2 = (_ref3 = (_ref4 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale2 = options.locale) === null || _options$locale2 === void 0 ? void 0 : (_options$locale2$opti = _options$locale2.options) === null || _options$locale2$opti === void 0 ? void 0 : _options$locale2$opti.firstWeekContainsDate) !== null && _ref4 !== void 0 ? _ref4 : defaultOptions.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : 1);\n\n // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n var weekStartsOn = toInteger((_ref5 = (_ref6 = (_ref7 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale3 = options.locale) === null || _options$locale3 === void 0 ? void 0 : (_options$locale3$opti = _options$locale3.options) === null || _options$locale3$opti === void 0 ? void 0 : _options$locale3$opti.weekStartsOn) !== null && _ref7 !== void 0 ? _ref7 : defaultOptions.weekStartsOn) !== null && _ref6 !== void 0 ? _ref6 : (_defaultOptions$local3 = defaultOptions.locale) === null || _defaultOptions$local3 === void 0 ? void 0 : (_defaultOptions$local4 = _defaultOptions$local3.options) === null || _defaultOptions$local4 === void 0 ? void 0 : _defaultOptions$local4.weekStartsOn) !== null && _ref5 !== void 0 ? _ref5 : 0);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n if (!locale.localize) {\n throw new RangeError('locale must contain localize property');\n }\n if (!locale.formatLong) {\n throw new RangeError('locale must contain formatLong property');\n }\n var originalDate = toDate(dirtyDate);\n if (!isValid(originalDate)) {\n throw new RangeError('Invalid time value');\n }\n\n // Convert the date in system timezone to the same date in UTC+00:00 timezone.\n // This ensures that when UTC functions will be implemented, locales will be compatible with them.\n // See an issue about UTC functions: https://github.com/date-fns/date-fns/issues/376\n var timezoneOffset = getTimezoneOffsetInMilliseconds(originalDate);\n var utcDate = subMilliseconds(originalDate, timezoneOffset);\n var formatterOptions = {\n firstWeekContainsDate: firstWeekContainsDate,\n weekStartsOn: weekStartsOn,\n locale: locale,\n _originalDate: originalDate\n };\n var result = formatStr.match(longFormattingTokensRegExp).map(function (substring) {\n var firstCharacter = substring[0];\n if (firstCharacter === 'p' || firstCharacter === 'P') {\n var longFormatter = longFormatters[firstCharacter];\n return longFormatter(substring, locale.formatLong);\n }\n return substring;\n }).join('').match(formattingTokensRegExp).map(function (substring) {\n // Replace two single quote characters with one single quote character\n if (substring === \"''\") {\n return \"'\";\n }\n var firstCharacter = substring[0];\n if (firstCharacter === \"'\") {\n return cleanEscapedString(substring);\n }\n var formatter = formatters[firstCharacter];\n if (formatter) {\n if (!(options !== null && options !== void 0 && options.useAdditionalWeekYearTokens) && isProtectedWeekYearToken(substring)) {\n throwProtectedError(substring, dirtyFormatStr, String(dirtyDate));\n }\n if (!(options !== null && options !== void 0 && options.useAdditionalDayOfYearTokens) && isProtectedDayOfYearToken(substring)) {\n throwProtectedError(substring, dirtyFormatStr, String(dirtyDate));\n }\n return formatter(utcDate, substring, locale.localize, formatterOptions);\n }\n if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n throw new RangeError('Format string contains an unescaped latin alphabet character `' + firstCharacter + '`');\n }\n return substring;\n }).join('');\n return result;\n}\nfunction cleanEscapedString(input) {\n var matched = input.match(escapedStringRegExp);\n if (!matched) {\n return input;\n }\n return matched[1].replace(doubleQuoteRegExp, \"'\");\n}","import isDate from \"../isDate/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isValid\n * @category Common Helpers\n * @summary Is the given date valid?\n *\n * @description\n * Returns false if argument is Invalid Date and true otherwise.\n * Argument is converted to Date using `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * Invalid Date is a Date, whose time value is NaN.\n *\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @param {*} date - the date to check\n * @returns {Boolean} the date is valid\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // For the valid date:\n * const result = isValid(new Date(2014, 1, 31))\n * //=> true\n *\n * @example\n * // For the value, convertable into a date:\n * const result = isValid(1393804800000)\n * //=> true\n *\n * @example\n * // For the invalid date:\n * const result = isValid(new Date(''))\n * //=> false\n */\nexport default function isValid(dirtyDate) {\n requiredArgs(1, arguments);\n if (!isDate(dirtyDate) && typeof dirtyDate !== 'number') {\n return false;\n }\n var date = toDate(dirtyDate);\n return !isNaN(Number(date));\n}","/**\n * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds.\n * They usually appear for dates that denote time before the timezones were introduced\n * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891\n * and GMT+01:00:00 after that date)\n *\n * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above,\n * which would lead to incorrect calculations.\n *\n * This function returns the timezone offset in milliseconds that takes seconds in account.\n */\nexport default function getTimezoneOffsetInMilliseconds(date) {\n var utcDate = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds()));\n utcDate.setUTCFullYear(date.getFullYear());\n return date.getTime() - utcDate.getTime();\n}","import addMilliseconds from \"../addMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\n/**\n * @name subMilliseconds\n * @category Millisecond Helpers\n * @summary Subtract the specified number of milliseconds from the given date.\n *\n * @description\n * Subtract the specified number of milliseconds from the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the milliseconds subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 750 milliseconds from 10 July 2014 12:45:30.000:\n * const result = subMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:29.250\n */\nexport default function subMilliseconds(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMilliseconds(dirtyDate, -amount);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addMilliseconds\n * @category Millisecond Helpers\n * @summary Add the specified number of milliseconds to the given date.\n *\n * @description\n * Add the specified number of milliseconds to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the milliseconds added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 750 milliseconds to 10 July 2014 12:45:30.000:\n * const result = addMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:30.750\n */\nexport default function addMilliseconds(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var timestamp = toDate(dirtyDate).getTime();\n var amount = toInteger(dirtyAmount);\n return new Date(timestamp + amount);\n}","import React, { Component, createRef } from 'react';\nimport isEqual from 'react-fast-compare';\nimport PropTypes from 'prop-types';\n\nimport Column from '../../../../layout/Column';\nimport Row from '../../../../layout/Row';\nimport Button from '../../../../components/Button';\n\nexport default class EditableListForm extends Component {\n static propTypes = {\n addValueOnFieldChange: PropTypes.bool,\n noLabels: PropTypes.bool,\n buttonName: PropTypes.string,\n buttonStyle: PropTypes.string,\n components: PropTypes.instanceOf(Array),\n displayType: PropTypes.string,\n disabled: PropTypes.bool,\n getMainFormButtonWidth: PropTypes.func,\n error: PropTypes.string,\n errorPersist: PropTypes.bool,\n onSubmit: PropTypes.func,\n validate: PropTypes.func,\n validationmessage: PropTypes.string,\n };\n\n static getMainFormValue(components) {\n const mainFormValue = new Array(components.length);\n\n components.forEach((component, index) => {\n mainFormValue[index] = component.props.value || undefined;\n });\n\n return mainFormValue;\n }\n\n constructor(props) {\n super(props);\n const {\n components,\n } = props;\n\n this.submitButtonRef = createRef();\n this.handleOnChange = this.handleOnChange.bind(this);\n this.submitForm = this.submitForm.bind(this);\n\n this.state = {\n components,\n errors: {},\n mainError: null,\n mainFormValue: EditableListForm.getMainFormValue(components),\n refs: [],\n };\n }\n\n componentDidMount() {\n const {\n addValueOnFieldChange,\n getMainFormButtonWidth,\n } = this.props;\n this.createRefs();\n\n if (getMainFormButtonWidth) {\n getMainFormButtonWidth(\n !addValueOnFieldChange\n ? this.submitButtonRef.current.clientWidth\n : 0,\n );\n }\n }\n\n static getDerivedStateFromProps(nextProps, prevState) {\n const state = {};\n const {\n components: propsComponents,\n } = nextProps;\n\n const {\n components: stateComponents,\n } = prevState;\n if (\n !isEqual(propsComponents, stateComponents)\n && !isEqual(\n EditableListForm.getMainFormValue(propsComponents),\n EditableListForm.getMainFormValue(stateComponents),\n )\n ) {\n state.mainFormValue = EditableListForm.getMainFormValue(propsComponents);\n state.components = propsComponents;\n }\n\n return state;\n }\n\n getFormCssClasses() {\n const { noLabels } = this.props;\n const cssClasses = ['tyk-editable-list__form'];\n\n if (noLabels) {\n cssClasses.push('no-labels');\n }\n\n return cssClasses.join(' ');\n }\n\n getButtonClassName() {\n const { buttonStyle, displayType } = this.props;\n const cssClasses = [];\n\n if (buttonStyle) {\n cssClasses.push(buttonStyle);\n }\n\n if (displayType) {\n cssClasses.push(displayType);\n }\n\n return cssClasses.join(' ');\n }\n\n getComponentsError(component) {\n const {\n error,\n errors,\n mainError,\n } = this.state;\n\n if (error || mainError) {\n errors[component.props.name] = 'true';\n } else if (!(error || mainError) && errors[component.props.name] === 'true') {\n delete errors[component.props.name];\n }\n\n return errors[component.props.name] ? errors[component.props.name].toString() : undefined;\n }\n\n createRefs() {\n const { components } = this.props;\n const refs = [];\n\n components.forEach(() => {\n refs.push(createRef());\n });\n\n this.setState({\n refs,\n });\n }\n\n validateValue(value, props) {\n const { mainError, errors } = this.state;\n const { error, errorPersist } = this.props;\n\n const validatorsNames = props.validate ? Object.keys(props.validate) : [];\n // if there is a general form error don't take field errors into consideration\n const tempState = {\n errors: (error || mainError) ? {} : Object.assign({}, errors),\n };\n let ok = true;\n\n // if the error should stay after changing fields values don't take actions\n if (errorPersist) {\n return tempState;\n }\n\n // validate each field from the form\n for (let i = 0; i < validatorsNames.length; i += 1) {\n const validator = props.validate[validatorsNames[i]];\n if (validator(value)) {\n tempState.errors[props.name] = props.validationmessages[validatorsNames[i]];\n ok = false;\n break;\n }\n }\n\n // if the field is ok delete its error\n if (ok) {\n delete tempState.errors[props.name];\n }\n\n tempState.mainError = null;\n\n return tempState;\n }\n\n hasMainFormErrors(errors) {\n const { components, errorPersist } = this.props;\n const { mainFormValue } = this.state;\n const tempState = {\n errors: Object.assign({}, errors),\n };\n\n if (errorPersist && mainFormValue.indexOf(undefined) === -1) {\n return false;\n }\n\n if (Object.keys(tempState.errors).length > 0) {\n return true;\n }\n\n components.forEach((component, index) => {\n tempState.errors = Object.assign(\n {},\n tempState.errors,\n this.validateValue(mainFormValue[index], component.props).errors,\n );\n });\n\n return Object.keys(tempState.errors).length > 0;\n }\n\n handleOnChange(component, index, value) {\n const { addValueOnFieldChange } = this.props;\n let tempState = this.state;\n\n tempState = Object.assign({}, tempState, this.validateValue(value, component.props));\n\n if (!tempState.errors[component.props.name]) {\n tempState.mainFormValue[index] = value;\n\n if (component.props.onChange) {\n component.props.onChange(value);\n }\n }\n\n this.setState(previousState => Object.assign({}, previousState, tempState), () => {\n if (addValueOnFieldChange) {\n this.submitForm();\n }\n });\n }\n\n resetForm() {\n const { refs } = this.state;\n const {\n components,\n } = this.props;\n\n refs.forEach((ref) => {\n if (ref.current?.reset) {\n ref.current.reset();\n }\n });\n\n this.setState({\n errors: {},\n mainError: null,\n mainFormValue: EditableListForm.getMainFormValue(components),\n });\n }\n\n showMainError(error) {\n this.setState({\n mainError: error,\n });\n }\n\n submitForm() {\n const { errors, mainFormValue } = this.state;\n const {\n errorPersist, onSubmit, validate, validationmessage,\n } = this.props;\n\n if (errorPersist) {\n onSubmit(mainFormValue);\n this.resetForm();\n }\n\n if (\n Object.keys(errors).length === 0\n && (onSubmit && typeof onSubmit === 'function')\n ) {\n if (validate) {\n if (validate(mainFormValue)) {\n this.showMainError(validationmessage);\n } else {\n onSubmit(mainFormValue);\n this.resetForm();\n }\n } else {\n onSubmit(mainFormValue);\n this.resetForm();\n }\n }\n }\n\n render() {\n const {\n addValueOnFieldChange, components, buttonName, disabled, displayType, error,\n } = this.props;\n const {\n mainError, refs, errors,\n } = this.state;\n\n return (\n
    \n
    \n \n {\n components.map((component, index) => {\n const ComponentName = component.name;\n const {\n onChange, value, ...rest\n } = component.props;\n\n return (\n \n \n \n );\n })\n }\n \n {\n !addValueOnFieldChange\n ? (\n \n \n { buttonName || 'ADD' }\n \n \n )\n : null\n }\n
    \n {\n error || mainError\n ? (\n
    \n

    \n { error || mainError }\n

    \n
    \n )\n : null\n }\n
    \n );\n }\n}\n","import React, { Component, Fragment, createRef } from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport { fromJS } from 'immutable';\n\nimport format from 'date-fns/format';\nimport isDate from 'date-fns/isDate';\n\nimport EditableListForm from './js/EditableListForm';\nimport Column from '../../../layout/Column';\nimport Icon from '../../../components/Icon';\nimport Row from '../../../layout/Row';\n\nexport default class EditableList extends Component {\n static propTypes = {\n addValueOnFieldChange: PropTypes.bool,\n disabled: PropTypes.bool,\n error: PropTypes.string,\n config: PropTypes.instanceOf(Object),\n onChange: PropTypes.func,\n label: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.func,\n PropTypes.string,\n ]),\n value: PropTypes.oneOfType([\n PropTypes.instanceOf(Array),\n PropTypes.instanceOf(Object),\n ]),\n };\n\n static getItemListValue(itemValue) {\n let tempValue = null;\n\n if (typeof itemValue === 'string') {\n tempValue = itemValue;\n }\n\n if (Object.prototype.toString.call(itemValue) === '[object Object]') {\n tempValue = itemValue.name;\n }\n\n if (isDate(itemValue)) {\n tempValue = format(itemValue, 'dd/MM/yyyy');\n }\n\n return tempValue;\n }\n\n static getListItemCssClass(displayType) {\n const cssClasses = [];\n\n if (displayType === 'inline') {\n cssClasses.push('tyk-editable-list-item--inline');\n }\n\n return cssClasses.join(' ');\n }\n\n constructor(props) {\n super(props);\n const {\n value,\n } = this.props;\n\n this.state = {\n initialValue: value || '',\n value: value || [],\n buttonWidth: 0,\n };\n\n this.startIndex = 1;\n\n this.handleFormSubmit = this.handleFormSubmit.bind(this);\n this.getMainFormButtonWidth = this.getMainFormButtonWidth.bind(this);\n this.dropdownListItemRef = createRef();\n }\n\n static getDerivedStateFromProps(nextProps, prevState) {\n const state = {};\n\n if (\n nextProps.value && JSON.stringify(nextProps.value)\n !== JSON.stringify(prevState.initialValue)\n ) {\n state.value = nextProps.value || [];\n state.initialValue = nextProps.value || '';\n }\n\n return state.value ? state : null;\n }\n\n getListItemsCssClass(displayType) {\n const { config } = this.props;\n const cssClasses = ['tyk-editable-list-items'];\n\n cssClasses.push(config.displayType || 'table');\n\n if (displayType === 'inline') {\n cssClasses.push('tyk-editable-list-items--inline');\n }\n\n return cssClasses.join(' ');\n }\n\n getFormInputKey() {\n this.startIndex += 1;\n return this.startIndex;\n }\n\n // generate list item value's based on the display types\n // table, inline, list\n getListItemText(itemData) {\n const { config } = this.props;\n let value = null;\n\n switch (config.displayType) {\n case 'list':\n case 'inline': {\n const itemText = itemData.value.reduce((prevValue, itemValue, index) => {\n const tempValue = EditableList.getItemListValue(itemValue);\n let separator = ', ';\n\n if (index === itemData.value.length - 1) {\n separator = '';\n }\n\n return prevValue + tempValue + separator;\n }, '');\n\n value = itemText;\n\n break;\n }\n default:\n value = (\n \n {\n config.components.map((component, index) => (\n \n { EditableList.getItemListValue(itemData.value[index]) }\n \n ))\n }\n \n );\n\n break;\n }\n\n return value;\n }\n\n getMainFormButtonWidth(value) {\n this.setState({\n buttonWidth: value,\n });\n }\n\n setItemEditMode(index) {\n const newValues = this.closeListItems();\n\n this.setState((previousState) => {\n const tempState = Object.assign({}, previousState);\n tempState.value = newValues;\n tempState.value[index].editMode = !tempState.value[index].editMode;\n\n return tempState;\n });\n }\n\n isInList(index, itemValue) {\n const { value } = this.state;\n let ok = false;\n\n value.forEach((item, itemIndex) => {\n if (JSON.stringify(item.value) === JSON.stringify(itemValue)) {\n if (index >= 0 && itemIndex === index) {\n ok = false;\n } else {\n ok = true;\n }\n }\n });\n\n return ok;\n }\n\n addValues(newValue) {\n const { value } = this.state;\n const { config } = this.props;\n const itemValue = {\n editMode: false,\n value: newValue,\n };\n const tempState = {\n value: value.slice(0),\n };\n\n if (config.children) {\n itemValue.children = [];\n }\n\n tempState.value.push(itemValue);\n\n return tempState;\n }\n\n removeListItem(index) {\n let removedItem;\n this.setState((previousState) => {\n const valueArr = previousState.value.slice(0);\n removedItem = valueArr.splice(index, 1);\n\n return {\n value: valueArr,\n };\n }, () => {\n this.triggerOnChange(index, removedItem, null);\n });\n }\n\n handleFormSubmit(value) {\n const tempState = this.addValues(value);\n this.setState(previousState => Object.assign({}, previousState, tempState), () => {\n this.triggerOnChange(tempState.value.length - 1, null, value);\n });\n }\n\n handleItemUpdate(index, value) {\n let prevValue;\n this.setState((previousState) => {\n const tempState = Object.assign({}, previousState);\n prevValue = fromJS(tempState.value[index].value).toJS();\n tempState.value[index].value = value;\n tempState.value[index].editMode = false;\n\n return tempState;\n }, () => {\n this.triggerOnChange(index, prevValue, value);\n });\n }\n\n handleChildrenOnChange(index, value) {\n let prevValue;\n this.setState((previousState) => {\n const tempState = Object.assign({}, previousState);\n prevValue = fromJS(tempState.value[index].children).toJS();\n tempState.value[index].children = value;\n\n return tempState;\n }, () => {\n this.triggerOnChange(index, prevValue, value);\n });\n }\n\n closeListItems() {\n const { value } = this.state;\n\n const newValues = value.map((itemValue) => {\n const tempItemValue = Object.assign({}, itemValue);\n\n if (tempItemValue.editMode) {\n tempItemValue.editMode = false;\n return tempItemValue;\n }\n\n return tempItemValue;\n });\n\n return newValues;\n }\n\n triggerOnChange(index, prevValue, nextValue) {\n const { onChange } = this.props;\n const { value } = this.state;\n\n if (onChange && typeof onChange === 'function') {\n onChange(((value.length) ? value : null), index, prevValue, nextValue);\n }\n }\n\n genListItem(itemData, index) {\n const { config, disabled } = this.props;\n const { buttonWidth, value } = this.state;\n\n const clonedComponents = fromJS(config.components).toJS();\n\n itemData.value.forEach((itemValue, itemIndex) => {\n clonedComponents[itemIndex].props.value = itemValue;\n });\n\n return (\n \n \n {\n !itemData.editMode\n ? (\n \n { this.getListItemText(itemData, index) }\n \n \n \n \n \n )\n : (\n \n \n \n \n )\n }\n \n {\n config.children\n ? (\n \n )\n : null\n }\n \n );\n }\n\n genList() {\n const { config } = this.props;\n const { buttonWidth, value } = this.state;\n\n if (!value || value.length === 0) {\n return null;\n }\n\n return (\n \n {\n config.displayType === 'table' || !config.displayType\n ? (\n \n \n {\n config.components.map((component, index) => (\n \n { component.props.label }\n \n ))\n }\n \n \n )\n : null\n }\n
      \n {\n value.map((itemData, index) => this.genListItem(itemData, index))\n }\n
    \n
    \n );\n }\n\n render() {\n const {\n addValueOnFieldChange, config, error, disabled, label,\n } = this.props;\n const appendToElement = document.querySelector(config.appendTo) || document.querySelector('body');\n\n return (\n
    \n {\n label\n ? \n : null\n }\n \n {\n config.appendTo\n ? ReactDOM.createPortal(\n this.genList(),\n appendToElement,\n )\n : this.genList()\n }\n
    \n );\n }\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport Button from '../../../components/Button';\n\nconst Header = ({\n label, addButtonName, onAddRow, disabled, readOnly,\n}) => (\n
    \n {\n label\n ? \n : null\n }\n {!disabled && !readOnly && (\n \n {addButtonName || 'Add'}\n \n )}\n
    \n);\n\nHeader.propTypes = {\n disabled: PropTypes.bool,\n readOnly: PropTypes.bool,\n onAddRow: PropTypes.func,\n addButtonName: PropTypes.string,\n label: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.element,\n PropTypes.node,\n ]),\n};\n\nexport default Header;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nconst ListHeader = ({\n fields,\n readOnly,\n}) => (\n
  • \n {\n fields.map(field => (\n
    {field?.props?.label}
    \n ))\n }\n
    Delete
    \n
  • \n);\n\nListHeader.propTypes = {\n fields: PropTypes.instanceOf(Array),\n readOnly: PropTypes.bool,\n};\n\nexport default ListHeader;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Button from '../../../components/Button';\n\nconst FieldsList = ({\n fields,\n disabled,\n readOnly,\n errors,\n components,\n onChange,\n onDelete,\n value,\n rowIndex,\n}) => (\n
  • \n {\n components.map((Component, index) => {\n let field = fields[index];\n let tempField = typeof field === 'function' ? field(rowIndex, index) : field;\n return (\n /* eslint-disable-next-line */\n
    \n \n
    \n );\n })\n }\n
    \n \n
    \n
  • \n);\n\nFieldsList.propTypes = {\n disabled: PropTypes.bool,\n readOnly: PropTypes.bool,\n rowIndex: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number,\n ]),\n fields: PropTypes.instanceOf(Array),\n errors: PropTypes.instanceOf(Array),\n components: PropTypes.instanceOf(Array),\n value: PropTypes.instanceOf(Array),\n onChange: PropTypes.func,\n onDelete: PropTypes.func,\n};\n\nexport default FieldsList;\n","import React, { useMemo, useState } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Header from './Header';\nimport ListHeader from './ListHeader';\nimport FieldsList from './FieldsList';\nimport validateValues from './validate-values';\nimport withValidation from './with-validation';\n\nlet id = 1;\n/* eslint-disable-next-line */\nconst getUID = prefix => `${prefix}-${id++}`;\n\n/**\n * Editable list is a component, that lists rows of form elements (can have n elements on a row),\n * and stores the values of all the rows in an Array list\n */\nconst EditableList2 = ({\n addButtonName,\n disabled,\n readOnly,\n fields,\n label,\n error,\n value = [],\n onChange = () => {},\n hideOnEmpty = true,\n wrapperClassName = '',\n}) => {\n const [internalErrors, setInteranlErrors] = useState(null);\n\n const updateRowValue = (rowIndex, fieldIndex, componentValue, isValid) => {\n const tempValueArr = !value ? [] : [...value];\n\n if (!value) {\n tempValueArr[rowIndex] = [...new Array(fields.length)];\n tempValueArr[rowIndex][fieldIndex] = componentValue;\n } else {\n const tempValue = [...tempValueArr[rowIndex]];\n tempValue[fieldIndex] = componentValue;\n tempValueArr[rowIndex] = tempValue;\n tempValueArr[rowIndex].id = value[rowIndex].id;\n }\n\n if (internalErrors?.[rowIndex]?.[fieldIndex] && isValid) {\n const tempErrors = [...internalErrors];\n const tempFieldError = [...tempErrors[rowIndex]];\n tempFieldError[fieldIndex] = null;\n tempErrors[rowIndex] = tempFieldError;\n setInteranlErrors(tempErrors);\n }\n onChange(tempValueArr);\n };\n\n const hasErrors = errors => Boolean(errors?.flat()?.filter(Boolean).length);\n\n const Components = useMemo(\n () => fields.map(field => {\n let tempField = typeof field === 'function' ? field() : field;\n\n return withValidation(tempField?.component || <>)\n }),\n [],\n );\n\n const onAddRow = () => {\n const errors = validateValues(fields, value);\n\n if (hasErrors(errors)) {\n setInteranlErrors(errors);\n return;\n }\n\n const newValue = [...new Array(fields.length)];\n newValue.id = getUID('row');\n\n onChange([\n ...value && value,\n newValue,\n ]);\n };\n\n const deleteRow = (index) => {\n if (!value) {\n return;\n }\n const tempValue = [...value];\n tempValue.splice(index, 1);\n onChange(tempValue);\n };\n\n return (\n
    \n \n {value?.length || !hideOnEmpty ? (\n
      \n {(value || [[]]).map((v, i) => (\n <>\n \n \n ))}\n \n
    \n ) : null}\n {error && error !== 'true' && error !== 'false' ? (\n

    {error}

    \n ) : null}\n
    \n );\n};\n\nEditableList2.propTypes = {\n /** Sets Editable list in edit mode.\n * If enabled all fields are disabled, the add button is hidden and delete button is disabled\n * */\n disabled: PropTypes.bool,\n /** Sets Editable list in read only mode.\n * If enabled all fields are displaying just the value,\n * the add button is hidden and delete button is disabled\n */\n readOnly: PropTypes.bool,\n /** Name of the Add button. By default has 'Add value' */\n addButtonName: PropTypes.string,\n /** Label of Editable list, is displayed above the list and inline with the Add button */\n label: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.element,\n PropTypes.node,\n ]),\n /** Array of form elements that you want the list to have\n * Each field is an object points to the Form element component that you want to use,\n * the props you want to apply on it,\n * and the size (as in width, it's like columns system, between 1 and 12)\n * Example:\n * ...\n * fields={[\n {\n component: Input2,\n styles: {\n width: \"200px\",\n },\n size: 4,\n props: {\n name: 'input',\n label: 'Claim name',\n theme: 'default rounded-corners',\n placeholder: 'Enter claim name',\n validate: formikRequired('This field is required')\n }\n },\n {\n component: Combobox2,\n size: 8,\n props: comboboxProps\n }\n ]}\n */\n fields: PropTypes.instanceOf(Array),\n /** onChange function is called everytime the value of editable list changes */\n onChange: PropTypes.func,\n /** value of editable list, wich is an Array (List of row values)\n * of Arrays (List of column values,\n * each column will have the value format depending on the component type)\n */\n value: PropTypes.oneOfType([\n PropTypes.instanceOf(Object),\n PropTypes.instanceOf(Array),\n ]),\n error: PropTypes.string,\n hideOnEmpty: PropTypes.bool,\n wrapperClassName: PropTypes.string,\n};\n\nexport default EditableList2;\n","import React, { useCallback, useState } from 'react';\n\nconst withValidation = Component => ({\n onChange,\n validate,\n error,\n ...rest\n}) => {\n const [internalError, setInternalError] = useState(null);\n const onFieldChange = useCallback((event) => {\n /* eslint-disable-next-line */\n const value = event?.target\n ? ['radio', 'checkbox'].includes(event.target.type)\n ? event.target.checked\n : event?.target.value\n : event;\n\n let isValid = true;\n if (validate && typeof validate === 'function') {\n const errorMsg = validate(value);\n isValid = !errorMsg;\n setInternalError(errorMsg);\n }\n\n onChange(value, isValid);\n }, [validate, onChange]);\n\n return ;\n};\n\nexport default withValidation;\n","const validateValues = (fields, rowValues) => (rowValues || [[undefined, undefined]])?.map(\n colValue => colValue?.map(\n (value, index) => fields?.[index]?.props?.validate\n && fields[index].props.validate(value),\n ),\n);\n\nexport default validateValues;\n","import React, { Component, Fragment, createRef } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Icon from '../../../components/Icon';\n\nexport default class FileInput extends Component {\n static propTypes = {\n accept: PropTypes.string,\n disabled: PropTypes.bool,\n id: PropTypes.string,\n error: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.bool,\n ]),\n label: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.func,\n PropTypes.string,\n ]),\n labelwidth: PropTypes.string,\n name: PropTypes.string,\n note: PropTypes.string,\n onChange: PropTypes.func,\n placeholder: PropTypes.string,\n theme: PropTypes.string,\n value: PropTypes.instanceOf(Object),\n wrapperClassName: PropTypes.string,\n }\n\n constructor(props) {\n super(props);\n\n this.handleOnChange = this.handleOnChange.bind(this);\n this.clearValue = this.clearValue.bind(this);\n this.fileInputRef = createRef();\n }\n\n getCssClasses() {\n const {\n error, theme, labelwidth, wrapperClassName = '',\n } = this.props;\n const cssClasses = [wrapperClassName, 'tyk-form-group'];\n const themes = theme ? theme.split(' ') : [];\n\n if (themes.length) {\n themes.forEach((iTheme) => {\n cssClasses.push(`tyk-form-group--${iTheme}`);\n });\n }\n\n if (labelwidth) {\n cssClasses.push('tyk-form-group--label-has-width');\n }\n\n if (error) {\n cssClasses.push('has-error');\n }\n\n return cssClasses.join(' ');\n }\n\n getLabelStyles() {\n const { labelwidth } = this.props;\n const styles = {};\n\n if (labelwidth) {\n styles.flexBasis = labelwidth;\n }\n\n return styles;\n }\n\n getNonLabelWidth() {\n const { labelwidth } = this.props;\n const styles = {};\n\n if (labelwidth) {\n styles.flexBasis = `calc(100% - ${labelwidth} - 20px)`;\n }\n\n return styles;\n }\n\n getFileInputError() {\n const { error } = this.props;\n\n return (error && error !== 'true' && error !== 'false')\n ? (\n \n { error }\n

    \n )\n : null;\n }\n\n getFileInputComponent() {\n const {\n accept, value: omitValue, onChange, ...rest\n } = this.props;\n\n return (\n \n \n {\n this.fileInputRef.current && this.fileInputRef.current.files.length > 0\n ? (\n \n \n \n )\n : null\n }\n \n );\n }\n\n clearValue() {\n const { onChange } = this.props;\n this.fileInputRef.current.value = '';\n onChange('');\n }\n\n handleOnChange(e) {\n const { onChange } = this.props;\n\n onChange(e.target.files);\n }\n\n // eslint-disable-next-line class-methods-use-this\n reset() {}\n\n render() {\n const {\n id,\n label,\n note,\n } = this.props;\n\n return (\n \n
    \n {\n label\n ? \n : null\n }\n
    \n { this.getFileInputComponent() }\n {\n note\n ?

    { note }

    \n : null\n }\n
    \n { this.getFileInputError() }\n
    \n
    \n );\n }\n}\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\nexport default class Input extends Component {\n static propTypes = {\n disabled: PropTypes.bool,\n readOnly: PropTypes.bool,\n id: PropTypes.string,\n isfield: PropTypes.bool,\n error: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.bool,\n ]),\n inputgroupaddonleft: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]),\n inputgroupaddonright: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]),\n label: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.element,\n PropTypes.node,\n ]),\n labelwidth: PropTypes.string,\n name: PropTypes.string,\n note: PropTypes.string,\n onChange: PropTypes.func,\n placeholder: PropTypes.string,\n theme: PropTypes.string,\n value: PropTypes.oneOfType([\n PropTypes.number,\n PropTypes.string,\n ]),\n }\n\n static getAddon(content) {\n return (\n
    \n { content }\n
    \n );\n }\n\n constructor(props) {\n super(props);\n const {\n value,\n } = this.props;\n\n this.state = {\n initValue: value,\n stateValue: value,\n };\n\n this.handleOnChange = this.handleOnChange.bind(this);\n }\n\n componentDidUpdate(prevProps) {\n const {\n isfield,\n value,\n onChange,\n } = this.props;\n\n if (!isfield && prevProps.value !== value) {\n /* eslint-disable react/no-did-update-set-state */\n this.setState({\n stateValue: value,\n }, () => {\n if (onChange) {\n onChange(value);\n }\n });\n }\n }\n\n getLabelStyles() {\n const { labelwidth } = this.props;\n const styles = {};\n\n if (labelwidth) {\n styles.flexBasis = labelwidth;\n }\n\n return styles;\n }\n\n getNonLabelWidth() {\n const { labelwidth } = this.props;\n const styles = {};\n\n if (labelwidth) {\n styles.flexBasis = `calc(100% - ${labelwidth} - 20px)`;\n }\n\n return styles;\n }\n\n getInputError() {\n const { error } = this.props;\n\n return (error && error !== 'true' && error !== 'false')\n ? (\n \n { error }\n

    \n )\n : null;\n }\n\n getCssClasses() {\n const {\n error,\n theme,\n labelwidth,\n inputgroupaddonleft,\n inputgroupaddonright,\n } = this.props;\n const cssClasses = ['tyk-form-group'];\n const themes = theme ? theme.split(' ') : [];\n\n if (themes.length) {\n themes.forEach((iTheme) => {\n cssClasses.push(`tyk-form-group--${iTheme}`);\n });\n }\n\n if (inputgroupaddonleft) {\n cssClasses.push('tyk-form-group--addon-left');\n }\n\n if (inputgroupaddonright) {\n cssClasses.push('tyk-form-group--addon-right');\n }\n\n if (labelwidth) {\n cssClasses.push('tyk-form-group--label-has-width');\n }\n\n if (error) {\n cssClasses.push('has-error');\n }\n\n return cssClasses.join(' ');\n }\n\n getInputGroupAddon() {\n const {\n inputgroupaddonleft,\n inputgroupaddonright,\n } = this.props;\n\n return (\n
    \n {\n inputgroupaddonleft\n ? Input.getAddon(inputgroupaddonleft)\n : null\n }\n { this.getInputComponent() }\n {\n inputgroupaddonright\n ? Input.getAddon(inputgroupaddonright)\n : null\n }\n
    \n );\n }\n\n getInputComponent() {\n const {\n isfield, onChange, value, ...rest\n } = this.props;\n const { stateValue } = this.state;\n return (\n \n );\n }\n\n reset() {\n const { initValue } = this.state;\n\n this.setState({\n stateValue: initValue,\n });\n }\n\n handleOnChange(e) {\n const { onChange, isfield } = this.props;\n const inputValue = e.target.value;\n\n if (!isfield) {\n this.setState({\n stateValue: inputValue,\n }, () => {\n if (onChange) {\n onChange(inputValue);\n }\n });\n } else {\n onChange(inputValue);\n }\n }\n\n render() {\n const {\n label,\n id,\n inputgroupaddonleft,\n inputgroupaddonright,\n note,\n readOnly,\n value,\n } = this.props;\n\n return (\n
    \n {\n label\n ? \n : null\n }\n {!readOnly && (\n \n {\n inputgroupaddonleft || inputgroupaddonright\n ? this.getInputGroupAddon()\n : this.getInputComponent()\n }\n {\n note\n ?

    { note }

    \n : null\n }\n { this.getInputError() }\n
    \n )}\n {\n readOnly &&
    {value || '-'}
    \n }\n \n );\n }\n}\n","import React, { useImperativeHandle, useRef, forwardRef } from 'react';\nimport PropTypes from 'prop-types';\n\nconst Input2 = forwardRef(({\n error,\n onChange,\n readOnly,\n id,\n inputgroupaddonleft,\n inputgroupaddonright,\n label,\n labelwidth,\n note,\n theme,\n value,\n wrapperClassName = '',\n ...rest\n}, ref) => {\n const inputRef = useRef();\n\n useImperativeHandle(ref, () => ({\n focus: () => {\n inputRef.current.focus();\n },\n }));\n\n const getAddon = content => (\n
    \n { content }\n
    \n );\n\n const getLabelStyles = () => ({\n ...labelwidth && {\n flexBasis: labelwidth,\n },\n });\n\n const getNonLabelWidth = () => ({\n ...labelwidth && {\n flexBasis: `calc(100% - ${labelwidth} - 20px)`,\n },\n });\n\n const getInputError = () => (\n (error && error !== 'true' && error !== 'false')\n ? (\n \n { error }\n

    \n )\n : null\n );\n\n const getCssClasses = () => {\n const cssClasses = [wrapperClassName, 'tyk-form-group'];\n const themes = theme ? theme.split(' ') : [];\n\n if (themes.length) {\n themes.forEach((iTheme) => {\n cssClasses.push(`tyk-form-group--${iTheme}`);\n });\n }\n\n if (inputgroupaddonleft) {\n cssClasses.push('tyk-form-group--addon-left');\n }\n\n if (inputgroupaddonright) {\n cssClasses.push('tyk-form-group--addon-right');\n }\n\n if (labelwidth) {\n cssClasses.push('tyk-form-group--label-has-width');\n }\n\n if (error) {\n cssClasses.push('has-error');\n }\n\n return cssClasses.join(' ');\n };\n\n const handleOnChange = (e) => {\n onChange(e, e.target.value);\n };\n\n const getInputElement = () => (\n \n );\n\n const getInputGroupAddon = () => (\n
    \n {\n inputgroupaddonleft\n ? getAddon(inputgroupaddonleft)\n : null\n }\n { getInputElement() }\n {\n inputgroupaddonright\n ? getAddon(inputgroupaddonright)\n : null\n }\n
    \n );\n\n return (\n
    \n {\n label\n ? \n : null\n }\n {!readOnly && (\n \n {\n inputgroupaddonleft || inputgroupaddonright\n ? getInputGroupAddon()\n : getInputElement()\n }\n {\n note\n ?

    { note }

    \n : null\n }\n { getInputError() }\n
    \n )}\n {\n readOnly && (\n
    \n {value || '-'}\n
    \n )\n }\n \n );\n});\n\nInput2.propTypes = {\n disabled: PropTypes.bool,\n readOnly: PropTypes.bool,\n id: PropTypes.string,\n error: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.bool,\n ]),\n inputgroupaddonleft: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]),\n inputgroupaddonright: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node,\n PropTypes.string,\n ]),\n label: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.element,\n PropTypes.node,\n ]),\n labelwidth: PropTypes.string,\n name: PropTypes.string,\n note: PropTypes.string,\n onChange: PropTypes.func,\n placeholder: PropTypes.string,\n theme: PropTypes.string,\n value: PropTypes.oneOfType([\n PropTypes.number,\n PropTypes.string,\n ]),\n wrapperClassName: PropTypes.string,\n};\n\nexport default Input2;\n","import { createContext } from 'react';\n\nconst MultiselectContext = createContext();\n\nexport default MultiselectContext;\n","import React, { Component, Fragment } from 'react';\nimport PropTypes from 'prop-types';\n\nimport MultiselectContext from './MultiselectContext';\nimport Button from '../../../../components/Button';\nimport Collapsible from '../../../../components/Collapsible';\nimport Loader from '../../../../components/Loader';\n\nconst getItemContent = (context, item) => (\n context.detailsDisplayTemplate\n ? context.detailsDisplayTemplate(item)\n : JSON.stringify(item.details)\n);\n\nconst getItemLoader = (context, item) => {\n const { opened } = context;\n\n return opened[item.id]\n ? \n : null;\n};\n\nclass MultiselectItem extends Component {\n static propTypes = {\n item: PropTypes.instanceOf(Object),\n itemType: PropTypes.string,\n searchValue: PropTypes.string,\n onChange: PropTypes.func,\n };\n\n isInSearchValue(fieldsToSearchOn) {\n const { searchValue, item } = this.props;\n\n if (fieldsToSearchOn && fieldsToSearchOn.length > 0) {\n let fields = fieldsToSearchOn.slice(0);\n\n fields = fields.filter(key => item[key] && item[key].search(searchValue) > -1);\n\n return fields.length > 0;\n }\n\n return JSON.stringify(item).search(searchValue) > -1;\n }\n\n render() {\n const {\n item,\n itemType,\n onChange,\n } = this.props;\n\n return (\n \n \n {\n context => (\n this.isInSearchValue(context.fieldsToSearchOn)\n ? (\n
  • \n
    \n \n {\n context.itemDisplayTemplate\n ? context.itemDisplayTemplate(item)\n : JSON.stringify(item)\n }\n \n \n \n \n \n
    \n {\n item.details\n ? (\n \n {getItemContent(context, item)}\n \n )\n : getItemLoader(context, item)\n }\n
  • \n )\n : null\n )\n }\n
    \n
    \n );\n }\n}\n\nexport default MultiselectItem;\n","import React, { Component, createRef } from 'react';\nimport PropTypes from 'prop-types';\nimport { fromJS } from 'immutable';\n\nimport Input from '../../Input';\nimport Icon from '../../../../components/Icon';\nimport Message from '../../../../components/Message';\nimport InfiniteScroller from '../../../../components/InfiniteScroller';\nimport MultiselectItem from './MultiselectItem';\n\nclass MultiselectPanel extends Component {\n static propTypes = {\n customSearch: PropTypes.bool,\n onCustomSearch: PropTypes.func,\n panelType: PropTypes.string,\n onChange: PropTypes.func,\n items: PropTypes.instanceOf(Array),\n itemsPageNumber: PropTypes.number,\n itemsNrPages: PropTypes.number,\n inputPlaceholder: PropTypes.string,\n loadMoreItems: PropTypes.func,\n noItemsMessage: PropTypes.string,\n serverLoad: PropTypes.bool,\n };\n\n state = {\n searchValue: '',\n };\n\n constructor(props) {\n super(props);\n\n this.searchOnChange = this.searchOnChange.bind(this);\n this.itemChanged = this.itemChanged.bind(this);\n this.itemIndex = 0;\n this.itemsListRef = createRef();\n }\n\n getItemIndex() {\n this.itemIndex += 1;\n\n return this.itemIndex;\n }\n\n getItemsList() {\n const {\n itemsPageNumber,\n itemsNrPages,\n loadMoreItems,\n serverLoad,\n } = this.props;\n\n return (\n serverLoad\n ? (\n itemsPageNumber}\n loadMore={loadMoreItems}\n pageNumber={itemsPageNumber}\n >\n { this.renderListItems() }\n \n )\n : this.renderListItems()\n );\n }\n\n searchOnChange(value) {\n const { onCustomSearch } = this.props;\n\n if (!onCustomSearch) {\n this.setState({\n searchValue: value,\n });\n } else {\n onCustomSearch(value);\n }\n }\n\n itemChanged(item) {\n const { items, onChange } = this.props;\n\n let cloneItems = fromJS(items).toJS();\n cloneItems = cloneItems.filter(clonedItem => item.id !== clonedItem.id);\n\n onChange(cloneItems, item);\n }\n\n renderListItems() {\n const {\n customSearch, items, panelType, serverLoad,\n } = this.props;\n const { searchValue } = this.state;\n return (\n \n {\n items.map(item => (\n \n ))\n }\n \n );\n }\n\n render() {\n const {\n inputPlaceholder,\n noItemsMessage,\n items,\n } = this.props;\n const { searchValue } = this.state;\n\n return (\n
    \n \n }\n name=\"search\"\n onChange={this.searchOnChange}\n placeholder={inputPlaceholder}\n value={searchValue}\n />\n {\n items.length\n ? this.getItemsList()\n : (\n \n { noItemsMessage }\n \n )\n }\n
    \n );\n }\n}\n\nexport default MultiselectPanel;\n","import React, { Component, Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport { fromJS } from 'immutable';\n\nimport MultiselectPanel from './js/MultiselectPanel';\nimport MultiselectContext from './js/MultiselectContext';\n\nconst diffObjects = (value, items) => {\n const newItems = items.filter((item) => {\n const isCommon = value.filter(selectedItem => selectedItem.id === item.id).length > 0;\n\n return !isCommon;\n });\n\n return newItems;\n};\n\nclass Multiselect extends Component {\n static propTypes = {\n customSearch: PropTypes.func,\n disabled: PropTypes.bool,\n error: PropTypes.string,\n entityNamePlural: PropTypes.string,\n items: PropTypes.instanceOf(Array),\n itemDisplayTemplate: PropTypes.func,\n detailsDisplayTemplate: PropTypes.func,\n fieldsToSearchOn: PropTypes.instanceOf(Array),\n onChange: PropTypes.func,\n getItemDetails: PropTypes.func,\n itemsPageNumber: PropTypes.number,\n itemsNrPages: PropTypes.number,\n loadMoreItems: PropTypes.func,\n note: PropTypes.string,\n maxSelections: PropTypes.number,\n value: PropTypes.instanceOf(Array),\n wrapperClassName: PropTypes.string,\n };\n\n state = {\n opened: {},\n };\n\n constructor(props) {\n super(props);\n\n this.valueChange = this.valueChange.bind(this);\n this.itemsChange = this.itemsChange.bind(this);\n }\n\n onGetItemDetails(item) {\n const { getItemDetails } = this.props;\n\n this.setState((prevState) => {\n const tempState = Object.assign({}, prevState);\n tempState.opened[item.id] = !tempState.opened[item.id];\n\n return tempState;\n }, () => {\n if (getItemDetails) {\n getItemDetails(item);\n }\n });\n }\n\n getMultiselectError() {\n const { error } = this.props;\n\n return (error && error !== 'true' && error !== 'false')\n ? (\n \n { error }\n

    \n )\n : null;\n }\n\n getCssClasses() {\n const { error, wrapperClassName = '' } = this.props;\n const cssClasses = [wrapperClassName, 'tyk-multiselect'];\n\n if (error) {\n cssClasses.push('has-error');\n }\n\n return cssClasses.join(' ');\n }\n\n itemsChange(allItems, item) {\n const { value, onChange } = this.props;\n const valueClone = fromJS(value).toJS();\n\n valueClone.unshift(item);\n\n onChange(valueClone, item, 'added');\n }\n\n valueChange(value, item) {\n const { items, onChange } = this.props;\n const allItemsClone = fromJS(items).toJS();\n\n allItemsClone.unshift(item);\n\n onChange(value, item, 'removed');\n }\n\n render() {\n const {\n customSearch,\n entityNamePlural,\n disabled,\n itemDisplayTemplate,\n detailsDisplayTemplate,\n fieldsToSearchOn,\n items,\n itemsPageNumber,\n itemsNrPages,\n loadMoreItems,\n maxSelections,\n note,\n value,\n } = this.props;\n const { opened } = this.state;\n\n return (\n \n
    \n \n
    \n
    \n { value.length }\n {' '}\n Selected\n {' '}\n { entityNamePlural }\n
    \n
    \n Select from existing\n { entityNamePlural }\n
    \n
    \n
    \n \n \n
    \n \n
    \n
    \n {\n note\n ?

    { note }

    \n : null\n }\n
    \n { this.getMultiselectError() }\n
    \n );\n }\n}\n\nexport default Multiselect;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\n\n/**\n * Radio can be used when a user needs to select at most one value from a multiple options.\n */\nexport default class Radio extends Component {\n static propTypes = {\n /** Used to disable the element */\n disabled: PropTypes.bool,\n /** Readonly prop behaves the same as disabled on radio elements */\n readOnly: PropTypes.bool,\n /** Align radio with in same line with other elements */\n inline: PropTypes.bool,\n /** Set a theme for radio */\n theme: PropTypes.string,\n input: PropTypes.instanceOf(Object),\n /** Adds label to the radio input */\n label: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.func,\n PropTypes.string,\n ]),\n /** Set name for the radio input */\n name: PropTypes.string,\n /** If set to true removes margin by adding `no-margin` class */\n nospace: PropTypes.bool,\n /** Set initial value for the radio input */\n value: PropTypes.string,\n /** Add note at the bottom of the radio input */\n note: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.element,\n PropTypes.node,\n ]),\n wrapperClassName: PropTypes.string,\n };\n\n getCssClasses() {\n const {\n inline, nospace, theme = '', disabled, readOnly, wrapperClassName = '',\n } = this.props;\n const cssClasses = [wrapperClassName];\n\n if (inline) {\n cssClasses.push('tyk-radio--inline');\n } else {\n cssClasses.push('tyk-radio');\n }\n\n if (nospace) {\n cssClasses.push('no-margin');\n }\n\n if (theme.trim()) {\n cssClasses.push(...theme.split(' ').map(t => `tyk-radio--theme-${t}`));\n }\n\n if (readOnly || disabled) {\n cssClasses.push('tyk-radio--is-disabled');\n }\n\n return cssClasses.join(' ');\n }\n\n render() {\n const {\n input, label, note, disabled, readOnly, ...rest\n } = this.props;\n return (\n \n \n

    {note}

    \n \n );\n }\n}\n","import React, { Component, Fragment } from 'react';\nimport PropTypes from 'prop-types';\n\nexport default class Select extends Component {\n static propTypes = {\n disabled: PropTypes.bool,\n readOnly: PropTypes.bool,\n id: PropTypes.string,\n isfield: PropTypes.bool,\n error: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.bool,\n ]),\n options: PropTypes.instanceOf(Array),\n label: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.func,\n PropTypes.string,\n ]),\n labelwidth: PropTypes.string,\n name: PropTypes.string,\n note: PropTypes.string,\n onBlur: PropTypes.func,\n onChange: PropTypes.func,\n placeholder: PropTypes.string,\n theme: PropTypes.string,\n value: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.object,\n ]),\n wrapperClassName: PropTypes.string,\n }\n\n constructor(props) {\n super(props);\n const {\n value,\n } = this.props;\n\n this.state = {\n initValue: value,\n stateValue: value,\n };\n\n this.handleOnChange = this.handleOnChange.bind(this);\n this.handleOnBlur = this.handleOnBlur.bind(this);\n }\n\n componentDidUpdate(prevProps) {\n const {\n isfield,\n value,\n onChange,\n } = this.props;\n\n if (!isfield && prevProps.value !== value) {\n /* eslint-disable react/no-did-update-set-state */\n this.setState({\n stateValue: value,\n }, () => {\n if (onChange) {\n onChange(value);\n }\n });\n }\n }\n\n getSelectComponent() {\n const {\n isfield, options, onChange, onBlur, value, ...rest\n } = this.props;\n const {\n stateValue,\n } = this.state;\n\n let selectValue = '';\n\n if (isfield && value) {\n selectValue = value;\n } else if (stateValue) {\n selectValue = stateValue;\n }\n\n return (\n \n {\n options.map(option => )\n }\n \n );\n }\n\n getSelectError() {\n const { error } = this.props;\n\n return (error && error !== 'true' && error !== 'false')\n ? (\n \n { error }\n

    \n )\n : null;\n }\n\n getCssClasses() {\n const {\n error, labelwidth, theme, wrapperClassName = '',\n } = this.props;\n const cssClasses = [wrapperClassName, 'tyk-form-group'];\n const themes = theme ? theme.split(' ') : [];\n\n if (themes.length) {\n themes.forEach((iTheme) => {\n cssClasses.push(`tyk-form-group--${iTheme}`);\n });\n }\n\n if (labelwidth) {\n cssClasses.push('tyk-form-group--label-has-width');\n }\n\n if (error) {\n cssClasses.push('has-error');\n }\n\n return cssClasses.join(' ');\n }\n\n getLabelStyles() {\n const { labelwidth } = this.props;\n const styles = {};\n\n if (labelwidth) {\n styles.flexBasis = labelwidth;\n }\n\n return styles;\n }\n\n getNonLabelWidth() {\n const { labelwidth } = this.props;\n const styles = {};\n\n if (labelwidth) {\n styles.flexBasis = `calc(100% - ${labelwidth} - 20px)`;\n }\n\n return styles;\n }\n\n handleOnBlur() {\n const { value, onBlur } = this.props;\n\n if (onBlur) {\n onBlur(value);\n }\n }\n\n handleOnChange(e) {\n const {\n onChange,\n isfield,\n options,\n } = this.props;\n let selectedValue = null;\n\n selectedValue = options.filter(option => option.id === e.target.value);\n [selectedValue] = selectedValue;\n\n if (!isfield) {\n this.setState({\n stateValue: selectedValue,\n }, () => {\n onChange(selectedValue.id ? selectedValue : null);\n });\n } else {\n onChange(selectedValue.id ? selectedValue : null);\n }\n }\n\n reset() {\n const { initValue } = this.state;\n\n this.setState({\n stateValue: initValue,\n });\n }\n\n render() {\n const {\n label,\n id,\n note,\n readOnly,\n value,\n } = this.props;\n\n return (\n \n
    \n {\n label\n ? \n : null\n }\n {!readOnly && (\n \n {\n this.getSelectComponent()\n }\n {\n note\n ?

    { note }

    \n : null\n }\n { this.getSelectError() }\n
    \n )}\n {readOnly &&
    {value || '-'}
    }\n \n
    \n );\n }\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport Message from '../../../components/Message';\nimport List from '../../../components/List';\nimport Icon from '../../../components/Icon';\n\nfunction SelectableList(props) {\n const {\n checkboxalticon,\n items,\n itemTemplate,\n value,\n noItemsMessage = 'No items in the list',\n onChange,\n theme,\n primaryKey,\n wrapperClassName = '',\n } = props;\n\n const handleOnSelect = (event) => {\n const newSelectedItems = structuredClone(value);\n const elemPosition = newSelectedItems.findIndex(\n (id) => JSON.stringify(id) === JSON.stringify(\n Array.isArray(id)\n ? event.target.value.split(',')\n : event.target.value,\n ),\n );\n\n if (event.target.checked && elemPosition === -1) {\n const tempValue = event.target.value.split(',');\n const finalValue = tempValue.length > 1 ? tempValue : event.target.value;\n\n newSelectedItems.push(finalValue);\n } else if (!event.target.checked && elemPosition > -1) {\n newSelectedItems.splice(elemPosition, 1);\n }\n\n if (onChange) {\n onChange(newSelectedItems);\n }\n };\n\n const getListItemCssClassName = (isActive) => {\n const cssClasses = [];\n\n if (checkboxalticon) {\n cssClasses.push('tyk-selectable-list__item--with-icon');\n }\n\n if (isActive) {\n cssClasses.push('tyk-selectable-list__item--active');\n }\n\n return cssClasses.join(' ');\n };\n\n const isChecked = (inputValue, itemValue) => Boolean(\n inputValue.find((tvalue) => JSON.stringify(itemValue) === JSON.stringify(tvalue)),\n );\n\n return (\n \n {\n !items.length\n ? (\n
  • \n \n {noItemsMessage}\n \n
  • \n )\n : items.map((item, index) => (\n \n \n \n ))\n }\n
    \n );\n}\n\nSelectableList.propTypes = {\n items: PropTypes.instanceOf(Array),\n itemTemplate: PropTypes.oneOfType([\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n PropTypes.func,\n ]),\n value: PropTypes.instanceOf(Array),\n onChange: PropTypes.func,\n primaryKey: PropTypes.string,\n noItemsMessage: PropTypes.string,\n checkboxalticon: PropTypes.oneOfType([\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n theme: PropTypes.string,\n wrapperClassName: PropTypes.string,\n};\n\nSelectableList.defaultProps = {\n items: [],\n primaryKey: 'id',\n value: [],\n};\n\nexport default SelectableList;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nfunction Textarea({\n id,\n input,\n label,\n note,\n error,\n theme,\n labelwidth,\n value,\n readOnly,\n wrapperClassName,\n ...rest\n}) {\n const classes = [\n 'tyk-form-group',\n wrapperClassName,\n ...(theme ? theme.split(' ').map((t) => `tyk-form-group--${t}`) : []),\n labelwidth && 'tyk-form-group--label-has-width',\n error && 'has-error',\n ].filter(Boolean).join(' ');\n\n const getLabelStyles = () => {\n if (labelwidth) return { flexBasis: labelwidth };\n return {};\n };\n\n const getNonLabelWidth = () => {\n if (labelwidth) return { flexBasis: `calc(100% - ${labelwidth} - 20px)` };\n return {};\n };\n\n function getTextareaError() {\n return (error && error !== 'true' && error !== 'false')\n ? (\n

    \n { error }\n

    \n )\n : null;\n }\n\n return (\n
    \n {\n label\n ? \n : null\n }\n {!readOnly && (\n \n \n { value }\n \n {\n note\n ?

    { note }

    \n : null\n }\n {getTextareaError()}\n
    \n )}\n {readOnly &&
    {value || '-'}
    }\n \n );\n}\n\nTextarea.propTypes = {\n /** Disable the component */\n disabled: PropTypes.bool,\n /** Displays only the text value of the component, or \"-\" if no value is set */\n readOnly: PropTypes.bool,\n input: PropTypes.instanceOf(Object),\n /** Set an error message for the component and the component is rendered in the error state */\n error: PropTypes.string,\n /** Adds a label to the component */\n label: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.func,\n PropTypes.string,\n ]),\n /** Sets the width of the label */\n labelwidth: PropTypes.string,\n /** Set a name for the component */\n name: PropTypes.string,\n /** Adds additional information under the component */\n note: PropTypes.string,\n /** Callback function executed on value change */\n onChange: PropTypes.func,\n id: PropTypes.string,\n /** Set a theme for the component */\n theme: PropTypes.string,\n /** Set the value of the component */\n value: PropTypes.string,\n /** CSS classes added to the wrapper of the component */\n wrapperClassName: PropTypes.string,\n};\n\nexport default Textarea;\n","import { createContext } from 'react';\n\nconst ToggleContext = createContext();\n\nexport default ToggleContext;\n","import React, { Component, createRef } from 'react';\nimport PropTypes from 'prop-types';\n\nclass ToggleItem extends Component {\n static getNotchCssClasses(context) {\n return ['tyk-toggle__item-notch', `tyk-toggle__item-notch--${context.type}`].join(' ');\n }\n\n constructor(props) {\n super(props);\n\n this.itemRef = createRef();\n }\n\n componentDidMount() {\n const { context, value } = this.props;\n\n if (context.value === value) {\n context.saveSelectedRef(this.itemRef);\n }\n }\n\n componentDidUpdate(prevProps) {\n const { context, value } = this.props;\n\n if (prevProps.context.value !== context.value && context.value === value) {\n context.saveSelectedRef(this.itemRef);\n }\n }\n\n onChange(event) {\n const { context, value } = this.props;\n const { disabled, readOnly } = context;\n\n if (disabled || readOnly) {\n return;\n }\n\n context.onItemSelected(context.type === 'single' ? !context.value : value, event);\n }\n\n render() {\n const {\n context, label, name, value,\n } = this.props;\n return (\n
  • \n \n
  • \n );\n }\n}\n\nToggleItem.propTypes = {\n context: PropTypes.instanceOf(Object),\n label: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.func,\n PropTypes.string,\n ]),\n name: PropTypes.string,\n value: PropTypes.string,\n};\n\nexport default ToggleItem;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport ToggleContext from './ToggleContext';\nimport ToggleItem from './ToggleItem';\n\nconst ToggleItemWrapper = React.forwardRef((props, ref) => (\n \n {(context) => (\n \n {props.children}\n \n )}\n \n));\n\nToggleItemWrapper.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n};\n\nexport default ToggleItemWrapper;\n","import React, {\n useCallback, useMemo, useRef, useState,\n} from 'react';\nimport PropTypes from 'prop-types';\n\nimport ToggleContext from './js/ToggleContext';\nimport ToggleItemWrapper from './js/ToggleItemWrapper';\n\nfunction Toggle({\n className,\n disabled,\n readOnly,\n size,\n theme,\n direction,\n onDark,\n wrapperClassName = '',\n onChange,\n labelwidth,\n label,\n separated,\n children,\n type,\n value,\n error,\n}) {\n const [selectedRef, setSelectedRef] = useState(null);\n const notchRef = useRef();\n const toggleRef = useRef();\n\n const classes = [\n wrapperClassName,\n className,\n 'tyk-toggle',\n `tyk-toggle--disabled-${readOnly || disabled}`,\n `tyk-toggle--${size || 'md'}`,\n `tyk-toggle--${theme}`,\n `tyk-toggle--${direction}`,\n onDark && 'tyk-toggle--on-dark',\n ].filter(Boolean).join(' ');\n\n const onItemSelected = useCallback((itemValue, event) => {\n if (!onChange) return;\n onChange(itemValue, event);\n }, [onChange]);\n\n const getLabelStyles = useCallback(() => {\n if (labelwidth) return { flexBasis: labelwidth };\n return {};\n }, [labelwidth]);\n\n const positionNotch = useCallback(() => {\n if (!selectedRef || separated) {\n return {};\n }\n\n const selectedWidth = selectedRef.current.offsetWidth;\n const selectedOffset = selectedRef.current.getBoundingClientRect().left;\n const toggleOffset = toggleRef.current.getBoundingClientRect().left;\n const left = selectedOffset - toggleOffset;\n\n return {\n left: `${left + 4}px`,\n width: `${selectedWidth - 8}px`,\n };\n }, [selectedRef, separated]);\n\n const contextValue = useMemo(() => ({\n disabled,\n readOnly,\n onItemSelected,\n saveSelectedRef: setSelectedRef,\n separated,\n type,\n value,\n }), [disabled, readOnly, onItemSelected, separated, type, value]);\n\n return (\n <>\n
    \n \n {\n label\n ? \n : null\n }\n
      \n { children }\n {\n type === 'multiple' && !separated\n ?
    • \n : null\n }\n
    \n \n
    \n {\n error && (\n

    \n { error }\n

    \n )\n }\n \n );\n}\n\nToggle.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n className: PropTypes.string,\n disabled: PropTypes.bool,\n readOnly: PropTypes.bool,\n error: PropTypes.string,\n onChange: PropTypes.func,\n label: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.func,\n PropTypes.string,\n ]),\n labelwidth: PropTypes.string,\n theme: PropTypes.string,\n type: PropTypes.string, // single || multiple\n size: PropTypes.string,\n separated: PropTypes.bool,\n direction: PropTypes.string,\n value: PropTypes.oneOfType([\n PropTypes.bool,\n PropTypes.string,\n ]),\n onDark: PropTypes.bool,\n wrapperClassName: PropTypes.string,\n};\n\nToggle.defaultProps = {\n separated: false,\n theme: 'primary',\n type: 'single',\n direction: 'row',\n};\n\nToggle.Item = ToggleItemWrapper;\n\nexport default Toggle;\n","export const stringToTokenString = (value, options) => {\n let tempStr = value;\n options.forEach((option) => {\n tempStr = tempStr.replaceAll(option.id, `__TOKEN__${option.id}__TOKEN__`);\n });\n return tempStr;\n};\n\n\nexport const setCursorPos = (ref, pos) => {\n setTimeout(() => {\n ref.current.setSelectionRange(pos, pos);\n }, 20);\n};\n","import React, { useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { stringToTokenString, setCursorPos } from './service';\n\nfunction StringInput({\n setShowOptions,\n tokenValue,\n disabled,\n placeholder,\n tokens,\n dropdownTriggerKey,\n setStringBuilderHeight,\n stringBuilderHeight,\n setTokenString,\n tokenString,\n showOptions,\n options,\n setTokenValue,\n inputRef,\n setInputInFocus,\n invalidTokenRegex,\n name,\n contextMaxLength,\n}) {\n const [isPasteEvent, setIsPasteEvent] = useState(false);\n\n useEffect(() => {\n // Set height if initial value exists\n if (tokenValue) {\n const tokenLen = tokenValue.length > 50 ? tokenValue.length / 5 : 0;\n setStringBuilderHeight(inputRef.current.scrollHeight + tokenLen);\n }\n }, []);\n\n /**\n *\n * @param {*} e : Event\n * Handle delete event (fn + delete on mac)\n */\n\n const handleDelete = (e) => {\n const { selectionEnd } = e.target;\n if (selectionEnd === tokenValue.length) {\n // - Cursor is at the end of input\n return;\n }\n\n const stringBeforeCursor = tokenValue.substring(0, selectionEnd);\n const stringAfterCursor = tokenValue.slice(selectionEnd);\n\n const tokenStringForStringAfterCursor = stringToTokenString(\n stringAfterCursor,\n options,\n );\n if (tokenStringForStringAfterCursor.startsWith('__TOKEN__')) {\n // If string before delete is a token\n const splitTokens = tokenStringForStringAfterCursor.split(/__TOKEN__(.*?)__TOKEN__/g).filter((t) => t !== '');\n const firstToken = splitTokens[0];\n const newTokenValue = `${stringBeforeCursor}${stringAfterCursor.substr(firstToken.length)}`;\n const newTokenizedString = stringToTokenString(newTokenValue, options);\n setTokenString(newTokenizedString);\n setCursorPos(inputRef, selectionEnd);\n return;\n }\n const newTokenValue = `${stringBeforeCursor}${stringAfterCursor.substr(1)}`;\n const newTokenizedString = stringToTokenString(newTokenValue, options);\n setTokenString(newTokenizedString);\n setCursorPos(inputRef, selectionEnd);\n };\n\n /**\n *\n * @param {*} e : Event\n * Handle backspace event\n * - If the last thing added by user was a token prevent default and\n * remove the entire token instead of single character, else continue with default behaviour\n * - Also handles if the string is manipulated from middle\n */\n const handleBackSpace = (e) => {\n const { selectionEnd } = e.target;\n\n // -- START :: Handle backspacing when cursor is at the end of the string\n if (selectionEnd === tokenValue.length) {\n const lastToken = tokens[tokens?.length - 2];\n const lastCharsInString = tokenValue.slice(-lastToken?.length);\n if (lastToken === lastCharsInString) {\n e.preventDefault();\n setTokenString(\n tokenString.slice(0, -`__TOKEN__${lastCharsInString}__TOKEN__`.length),\n );\n return;\n }\n if (tokenValue.endsWith(' ')) {\n const invalidToken = tokenValue.match(invalidTokenRegex);\n const newTokenValue = tokenValue.slice(0, -` ${invalidToken[invalidToken.length - 1]} `.length);\n const newTokenStr = stringToTokenString(newTokenValue, options);\n setTokenString(newTokenStr);\n return;\n }\n setTokenString(tokenString.slice(0, -1));\n return;\n }\n // -- END :: Handle backspacing when cursor is at the end of the string\n\n // -- START :: Handle backspacing when cursor is in between\n const stringBeforeCursor = tokenValue.substring(0, selectionEnd);\n const stringAfterCursor = tokenValue.slice(selectionEnd);\n\n const tokenStringForStringBeforeCursor = stringToTokenString(stringBeforeCursor, options);\n\n // -- IF the string before cursor is a token\n if (tokenStringForStringBeforeCursor.endsWith('__TOKEN__')) {\n e.preventDefault();\n const splitTokens = tokenStringForStringBeforeCursor.split(/__TOKEN__(.*?)__TOKEN__/g);\n const lastToken = splitTokens[splitTokens.length - 2];\n const newTokenValue = `${stringBeforeCursor.slice(0, -(lastToken.length))}${stringAfterCursor}`;\n const newTokenizedString = stringToTokenString(newTokenValue, options);\n setTokenString(newTokenizedString);\n setCursorPos(inputRef, selectionEnd - lastToken.length);\n return;\n }\n\n const invalidToken = stringBeforeCursor.match(invalidTokenRegex);\n // If Token is Invalid Token\n if (invalidToken?.[0] && invalidToken.length === 1) {\n e.preventDefault();\n const newTokenValue = `${stringBeforeCursor.replaceAll(invalidTokenRegex, '').trim()}${stringAfterCursor}`;\n const newTokenizedString = stringToTokenString(newTokenValue, options);\n setTokenString(newTokenizedString);\n setCursorPos(inputRef, selectionEnd - ` ${invalidToken[0]} `.length);\n return;\n }\n\n const newTokenValue = `${stringBeforeCursor.slice(\n 0,\n -1,\n )}${stringAfterCursor}`;\n const newTokenizedString = stringToTokenString(newTokenValue, options);\n setTokenString(newTokenizedString);\n setCursorPos(inputRef, selectionEnd - 1);\n // -- END :: Handle backspacing when cursor is in between\n };\n\n const addCharacterToTokenString = (text, selectionStart) => {\n // Cursor is at end\n if (selectionStart - 1 === tokenValue.length) {\n setTokenString(`${tokenString}${text}`);\n return;\n }\n\n // Cursor is in middle of string\n const newTokenValue = tokenValue.slice(0, selectionStart - 1)\n + text\n + tokenValue.slice(selectionStart - 1);\n\n const newTokenizedString = stringToTokenString(newTokenValue, options);\n setTokenString(newTokenizedString);\n };\n\n // -- START :: Handle highlighted text deletion / replacement\n const handleTextSelection = (e, selectedText, key) => {\n const allowedKeys = ['Delete', 'Backspace'];\n if (key.length > 1 && allowedKeys.indexOf(key) === -1) {\n return;\n }\n const { selectionEnd, selectionStart } = e.target;\n const substitute = key.length > 1 ? '' : key;\n if (selectedText.length > 1) {\n const newStr = tokenValue.substring(0, selectionStart)\n + substitute\n + tokenValue.substring(selectionEnd);\n const newTokenStr = stringToTokenString(newStr, options);\n setTokenString(newTokenStr);\n setCursorPos(inputRef, substitute.length ? selectionStart + 1 : selectionStart);\n }\n };\n // -- END :: Handle highlighted text deletion / replacement\n\n const handleKeyDown = (e) => {\n const { key } = e;\n const { selectionEnd, selectionStart, value } = e.target;\n const selectedText = value.substring(selectionStart, selectionEnd);\n\n if (key === dropdownTriggerKey && !showOptions) {\n e.preventDefault();\n setShowOptions(true);\n return;\n }\n if (key === 'Enter') {\n e.preventDefault();\n return;\n }\n if (key === 'Backspace') {\n e.preventDefault();\n handleBackSpace(e);\n }\n if (key === 'Delete') {\n e.preventDefault();\n handleDelete(e);\n }\n if (e.metaKey && key === 'x') {\n setTokenString('');\n }\n if (selectedText) {\n e.preventDefault();\n handleTextSelection(e, selectedText, key);\n }\n };\n\n const handleOnChange = (e) => {\n const { target } = e;\n const { selectionStart, value } = target;\n\n if (showOptions) {\n setShowOptions(false);\n }\n setTokenValue(value);\n if (value && !isPasteEvent) {\n const text = value.charAt(selectionStart - 1);\n addCharacterToTokenString(text, selectionStart);\n }\n setIsPasteEvent(false);\n };\n\n const handlePasteEvent = (e) => {\n e.preventDefault();\n const { clipboardData } = e;\n const { selectionStart, selectionEnd } = e.target;\n setIsPasteEvent(true);\n let pasteString = clipboardData.getData('text/plain');\n if (selectionStart !== selectionEnd) {\n pasteString = tokenValue.slice(0, selectionStart)\n + pasteString\n + tokenValue.slice(selectionEnd, tokenValue.length);\n const newTokenString = stringToTokenString(pasteString, options);\n setTokenString(newTokenString);\n return;\n }\n const newTokenString = stringToTokenString(pasteString, options);\n addCharacterToTokenString(newTokenString, selectionStart);\n };\n\n const handleOnFocus = () => {\n setInputInFocus(true);\n };\n\n return (\n handleOnChange(e)}\n onKeyDown={(e) => handleKeyDown(e)}\n placeholder={placeholder}\n name={name}\n ref={inputRef}\n style={{ height: `${stringBuilderHeight}px` }}\n maxLength={contextMaxLength}\n onPaste={handlePasteEvent}\n onFocus={handleOnFocus}\n onBlur={() => setInputInFocus(false)}\n />\n );\n}\n\nStringInput.propTypes = {\n setShowOptions: PropTypes.func,\n tokenValue: PropTypes.string,\n disabled: PropTypes.bool,\n placeholder: PropTypes.string,\n tokenString: PropTypes.string,\n stringBuilderHeight: PropTypes.number,\n dropdownTriggerKey: PropTypes.string,\n setStringBuilderHeight: PropTypes.func,\n setTokenString: PropTypes.func,\n setTokenValue: PropTypes.func,\n setInputInFocus: PropTypes.func,\n showOptions: PropTypes.bool,\n tokens: PropTypes.arrayOf(PropTypes.string),\n options: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.string.isRequired,\n name: PropTypes.string.isRequired,\n className: PropTypes.string,\n desc: PropTypes.string,\n }),\n ),\n inputRef: PropTypes.instanceOf(Object),\n invalidTokenRegex: PropTypes.instanceOf(RegExp),\n name: PropTypes.string,\n contextMaxLength: PropTypes.number,\n};\n\nexport { StringInput };\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Tooltip from '../../../../components/Tooltip';\nimport Icon from '../../../../components/Icon';\n\n\nconst InvalidToken = (props) => {\n const { token, findInvalidTokenSubstitute } = props;\n return (\n findInvalidTokenSubstitute(token)}\n onKeyDown={() => {}}\n >\n \n \n {`${token}`}\n \n \n \n \n );\n};\n\nInvalidToken.propTypes = {\n token: PropTypes.string,\n findInvalidTokenSubstitute: PropTypes.func,\n};\n\nexport default InvalidToken;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport InvalidToken from './invalid-token';\n\nexport const TokenizedString = (props) => {\n const {\n tokens,\n options,\n disabled,\n invalidTokenRegex,\n findInvalidTokenSubstitute,\n } = props;\n\n /**\n * hasDuplicates : used to avoid duplicate keys in map :\n * having duplicate tokens causes invalid unpredictable react renders.\n * eg: http://alpaha.com/{{.agruments.id}}/id={{.arguments.id}}\n * `{{.arguments.id}}` is repeated twice : maybe edge case but quite possible\n */\n\n const hasDuplicates = new Set(tokens).size !== tokens.length;\n\n const allTokens = tokens\n && tokens.map((token) => {\n if (options) {\n const matchedOption = options.find(option => option.id === token);\n // if invalid token\n if (invalidTokenRegex && !matchedOption) {\n const matchedTokens = token.replaceAll(' ', '').split(invalidTokenRegex);\n if (matchedTokens?.length > 1) {\n return (\n \n {matchedTokens.map((tkn) => {\n if (tkn.match(invalidTokenRegex)) {\n return (\n \n );\n }\n return ({`${tkn} `});\n })}\n \n );\n }\n }\n // if token matches option\n\n if (matchedOption) {\n return (\n \n {matchedOption.id}\n \n );\n }\n }\n return (\n {token}\n );\n });\n return (\n \n {allTokens}\n \n );\n};\n\nTokenizedString.propTypes = {\n tokens: PropTypes.arrayOf(PropTypes.string),\n options: PropTypes.arrayOf(PropTypes.instanceOf(Object)),\n disabled: PropTypes.bool,\n invalidTokenRegex: PropTypes.instanceOf(RegExp),\n findInvalidTokenSubstitute: PropTypes.func,\n};\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\n\nimport FloatingContainer from '../../../../components/FloatingContainer';\n\nexport const OptionsList = ({\n options,\n showOptions,\n handleOptionSelection,\n containerRef,\n getThemeClasses,\n setShowOptions,\n allowSearch,\n initialSearchValue,\n}) => {\n const [filterValue, setFilterValue] = useState(initialSearchValue);\n const [filteredOptions, setFilteredOptions] = useState(options);\n\n useEffect(() => {\n setFilterValue(initialSearchValue);\n }, [initialSearchValue]);\n\n useEffect(() => {\n if (filterValue === '') {\n setFilteredOptions(options);\n return;\n }\n const newFilteredOptions = options.filter(\n option => option.name.toLowerCase().includes(filterValue.toLowerCase()),\n );\n setFilteredOptions(newFilteredOptions);\n }, [filterValue]);\n\n useEffect(() => {\n setFilteredOptions(options);\n }, [options]);\n\n if (!showOptions) {\n return null;\n }\n\n return (\n <>\n \n {allowSearch && (\n
    \n {\n setFilterValue(e.target.value);\n }}\n onKeyDown={(e) => {\n if (\n e.key === 'Escape'\n || e.key === 'ArrowUp'\n // || e.key === 'ArrowDown'\n || e.key === 'Enter'\n ) {\n setShowOptions(false);\n }\n }}\n />\n
    \n )}\n
      \n {filteredOptions.map(option => (\n handleOptionSelection(option)}\n >\n \n {option.name}\n \n {option.desc && (\n \n   :  \n {option.desc}\n \n )}\n \n ))}\n
    \n \n \n );\n};\n\nOptionsList.propTypes = {\n options: PropTypes.arrayOf(Object),\n showOptions: PropTypes.bool,\n handleOptionSelection: PropTypes.func,\n getThemeClasses: PropTypes.func,\n setShowOptions: PropTypes.func,\n containerRef: PropTypes.instanceOf(Object),\n allowSearch: PropTypes.bool,\n initialSearchValue: PropTypes.string,\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nexport const StringBuilderFooter = (props) => {\n const {\n note, error, inputInFocus, stringBuilderHeight, dropdownTriggerKey,\n } = props;\n return (\n \n {inputInFocus && !error && (\n

    \n \n Enter\n {dropdownTriggerKey}\n to add any parameter\n \n

    \n )}\n {note &&

    {note}

    }\n {error && error !== 'true' && error !== 'false' && (\n

    {error}

    \n )}\n \n );\n};\n\nStringBuilderFooter.propTypes = {\n note: PropTypes.string,\n error: PropTypes.string,\n dropdownTriggerKey: PropTypes.string,\n inputInFocus: PropTypes.bool,\n stringBuilderHeight: PropTypes.number,\n};\n","import React, { useEffect, useState, useRef } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { usePrevious } from '../../../hooks';\n\nimport { StringInput } from './js/string-input';\nimport { TokenizedString } from './js/tokenized-string';\nimport { OptionsList } from './js/options-list';\nimport { StringBuilderFooter } from './js/string-builder-footer';\nimport { stringToTokenString, setCursorPos } from './js/service';\n\n/**\n * - String builder component used to build one single string using the given options.\n * - This component can be useful from UX perspective,\n * when user needs to build any string which might contain complex values which are error prone.\n * - `` abstracts the complex values by supplying them\n * as selectable options in more user friendly format with description for user.\n * - Wire-frames : https://miro.com/app/board/o9J_kipLWwA=/\n */\n\nfunction StringBuilder(props) {\n const {\n options,\n onChange,\n value,\n theme,\n error,\n disabled,\n readOnly,\n note,\n label,\n labelwidth,\n placeholder,\n allowSearch,\n dropdownTriggerKey,\n invalidTokenRegex,\n name,\n wrapperClassName = '',\n } = props;\n const [tokenValue, setTokenValue] = useState(value);\n const [stringBuilderHeight, setStringBuilderHeight] = useState();\n const [showOptions, setShowOptions] = useState(false);\n const [tokenString, setTokenString] = useState(stringToTokenString(value, options));\n const [contextMaxLength, setContentMaxLength] = useState(\n tokenValue.length + 5,\n );\n const [tokens, setTokens] = useState([]);\n const [prevTokenValue, setPrevTokenValue] = useState();\n const [inputInFocus, setInputInFocus] = useState(false);\n const [initialSearchValue, setInitialSearchValue] = useState('');\n const [selectedInvalidToken, setSelectedInvalidToken] = useState(null);\n\n const prevTokenString = usePrevious(tokenString);\n\n const containerRef = useRef();\n const inputRef = useRef();\n\n // Execute callback on value change\n useEffect(() => {\n if (onChange) {\n onChange(tokenValue.replaceAll(' ', ''));\n }\n }, [tokenValue]);\n\n useEffect(() => {\n const tempVal = invalidTokenRegex ? value.replaceAll(invalidTokenRegex, ' $& ') : value;\n setTokenValue(() => tempVal);\n setTokenString(() => stringToTokenString(tempVal, options));\n }, [value]);\n\n /**\n * Split string into tokens and set string value w/o __TOKEN__\n * Tokens are used to render a styled tokens using ``\n */\n useEffect(() => {\n const splitTokens = tokenString.split(/__TOKEN__(.*?)__TOKEN__/g);\n const splitTokensStr = splitTokens.join('');\n setTokens(() => splitTokens);\n setTokenValue(() => splitTokensStr);\n setPrevTokenValue(() => splitTokensStr);\n }, [tokenString]);\n\n useEffect(() => {\n // Auto Grow Input\n if (contextMaxLength - 3 < tokenValue.length) {\n const newHeight = inputRef.current.scrollHeight + 3;\n setStringBuilderHeight(() => newHeight);\n setContentMaxLength(() => contextMaxLength + 25);\n }\n }, [tokenString, tokenValue]);\n\n /**\n *\n * @param {*} option : Option object for selected option from dropdown\n * When user selects an option append and prepend `__TOKEN__` to detect the token,\n * so they can be styled or manipulated later\n */\n const handleOptionSelection = (option) => {\n let newInput = '';\n const { selectionStart } = inputRef.current;\n if (prevTokenString && prevTokenString !== value && !selectedInvalidToken) {\n /* eslint prefer-destructuring: [\"error\", {VariableDeclarator: {object: true}}] */\n newInput = prevTokenString + tokenValue.split(prevTokenValue)[1];\n }\n let tokenizedString = '';\n // Adding token in Middle\n if (selectionStart !== tokenValue.length && !selectedInvalidToken) {\n const newTokenValue = tokenValue.slice(0, selectionStart)\n + option.id\n + tokenValue.slice(selectionStart);\n tokenizedString = stringToTokenString(newTokenValue, options);\n setCursorPos(inputRef, selectionStart + option.id.length);\n } else {\n tokenizedString = `${newInput || tokenValue}__TOKEN__${\n option.id\n }__TOKEN__`;\n }\n if (selectedInvalidToken) {\n tokenizedString = tokenString.replace(\n ` ${selectedInvalidToken} `,\n `__TOKEN__${option.id}__TOKEN__`,\n );\n setSelectedInvalidToken(() => null);\n setInitialSearchValue(() => '');\n }\n setTokenString(() => tokenizedString);\n setShowOptions(() => false);\n setTimeout(() => {\n inputRef.current.focus();\n }, 20);\n };\n\n const getThemeClasses = () => {\n const themes = theme ? theme.split(' ') : [];\n return themes.map((iTheme) => `tyk-form-group--${iTheme}`);\n };\n\n const getCssClasses = () => [\n 'tyk-form-group',\n ...getThemeClasses(),\n error && 'has-error',\n disabled && 'disabled',\n ]\n .filter(Boolean)\n .join(' ');\n\n const findInvalidTokenSubstitute = (invalidToken) => {\n setSelectedInvalidToken(() => invalidToken);\n setInitialSearchValue(() => invalidToken.replace(/[^a-zA-Z ]/g, ''));\n setShowOptions(() => true);\n };\n\n return (\n
    \n
    \n {label && (\n \n )}\n {!readOnly && (\n
    \n \n \n \n \n \n
    \n
    \n )}\n {\n readOnly &&
    {value || '-'}
    \n }\n
    \n \n );\n}\n\nStringBuilder.propTypes = {\n /** Options to render in the list */\n options: PropTypes.arrayOf(\n PropTypes.shape({\n /** id is the value that will be appended to the string on selection */\n id: PropTypes.string.isRequired,\n /** name of option (view) */\n name: PropTypes.string.isRequired,\n /** to style / highlight the token */\n className: PropTypes.string,\n /** description of option */\n desc: PropTypes.string,\n }),\n ),\n /** Callback executed on change of string value */\n onChange: PropTypes.func,\n /** Initial value */\n value: PropTypes.string,\n /** Disable input */\n disabled: PropTypes.bool,\n /** Read Only prop removes the form element and displays just the value */\n readOnly: PropTypes.bool,\n /** Show error state (w/ or w/o message) */\n error: PropTypes.string,\n /** Component theme */\n theme: PropTypes.string,\n /** Footnote for component */\n note: PropTypes.string,\n /** Label for component */\n label: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.func,\n PropTypes.string,\n ]),\n /** Label Width for component */\n labelwidth: PropTypes.string,\n /** Placeholder for component */\n placeholder: PropTypes.string,\n /** Key To trigger dropdown */\n dropdownTriggerKey: PropTypes.string,\n /** Regex to detect invalid tokens in the value */\n invalidTokenRegex: PropTypes.instanceOf(RegExp),\n /** Allow users to search from options */\n allowSearch: PropTypes.bool,\n name: PropTypes.string,\n wrapperClassName: PropTypes.string,\n};\n\nStringBuilder.defaultProps = {\n onChange: null,\n value: '',\n options: [],\n theme: 'default',\n};\n\nexport default StringBuilder;\n","const config = {\n FORM_DEBOUNCE: 200,\n};\n\nexport function setConfig(key, val) {\n config[key] = val;\n}\n\nexport default config;\n","import React, { useCallback, useEffect, useState } from 'react';\n\nimport config from '../config/config';\n\nfunction getValueFromPath(obj, path) {\n // turn 'aaa.qqq[2].bbb[5][3].mmm' into ['aaa', 'qqq', '2', 'bbb', '5', '3', 'mmm']\n const indexes = path.split(/[\\][.]/).filter(Boolean);\n return indexes.reduce((acc, v) => (acc ? acc[v] : acc), obj);\n}\n\nfunction debounce(f, limit) {\n let timeoutId;\n return (...args) => {\n clearTimeout(timeoutId);\n timeoutId = setTimeout(f, limit, ...args);\n };\n}\n\n/* eslint-disable react/prop-types, react/function-component-definition */\n/**\n * A wrapper function that \"prepares\" a tyk-ui form component to be used with the formik library.\n * It handles things like setting the value of the component, change events, error state,\n * and also has a default debounce time for when the change event is triggered.\n */\nconst wrapper = (Component, options) => ({ field, form, ...properties }) => {\n const DEFAULT_DEBOUNCE_TIME_MS = typeof config.FORM_DEBOUNCE === 'number' ? config.FORM_DEBOUNCE : 200;\n const [myValue, setMyValue] = useState(field.value);\n const opts = {\n getOnChangeProps: () => ({}),\n hasIsFieldProp: false,\n ...options,\n };\n\n const executeDebounced = useCallback((() => {\n const fn = (f) => f();\n if (\n properties.debounce === false\n || (config.FORM_DEBOUNCE === false && !properties.debounce)\n ) {\n return fn;\n }\n const timeout = typeof properties.debounce === 'number'\n ? properties.debounce\n : DEFAULT_DEBOUNCE_TIME_MS;\n return debounce(fn, timeout);\n })(), []);\n\n const getValue = (v) => {\n if (v && v.target) {\n if (v.target.nodeName === 'INPUT' && (v.target.type === 'checkbox' || v.target.type === 'radio')) {\n return v.target.checked;\n }\n return v.target.value;\n }\n return v;\n };\n\n const onChange = (valueOrEvent) => {\n const value = getValue(valueOrEvent);\n const onChangeProps = opts.getOnChangeProps(value, field, form, properties);\n\n const newValue = onChangeProps.value || properties.value || value;\n executeDebounced(() => {\n if (typeof properties.onChange === 'function') {\n properties.onChange(newValue);\n }\n field.onChange({ target: { name: field.name, value: newValue, ...onChangeProps } });\n });\n setMyValue(newValue);\n };\n\n const formError = (getValueFromPath(form.touched, field.name) || Boolean(form.submitCount))\n && getValueFromPath(form.errors, field.name);\n const error = typeof formError === 'string' ? formError : '';\n\n useEffect(() => {\n setMyValue(field.value);\n }, [field.value]);\n\n // eslint-disable-next-line no-param-reassign\n if (form.status?.disabled) properties.disabled = true;\n\n const componentProps = { ...properties };\n delete componentProps.debounce;\n\n return (\n \n );\n};\n\nexport default wrapper;\n","import wrapper from '../../../utils/formik';\nimport Checkbox from '../../components/Checkbox';\n\nexport default wrapper(Checkbox, {\n getOnChangeProps: (value) => ({\n checked: value,\n }),\n});\n","import wrapper from '../../../utils/formik';\nimport CodeEditor from '../../components/CodeEditor';\n\nexport default wrapper(CodeEditor);\n","import wrapper from '../../../utils/formik';\nimport Combobox from '../../components/Combobox';\n\nexport default wrapper(Combobox);\n","import wrapper from '../../../utils/formik';\nimport Combobox2 from '../../components/Combobox2';\n\nexport default wrapper(Combobox2);\n","import wrapper from '../../../utils/formik';\nimport DatePicker from '../../components/DatePicker';\n\nexport default wrapper(DatePicker);\n","import wrapper from '../../../utils/formik';\nimport EditableList from '../../components/EditableList';\n\nexport default wrapper(EditableList, {\n getOnChangeProps: value => ({ value: value || [] }),\n});\n","import wrapper from '../../../utils/formik';\nimport EditableList2 from '../../components/EditableList2';\n\nexport default wrapper(EditableList2);\n","import wrapper from '../../../utils/formik';\nimport FileInput from '../../components/FileInput';\n\nexport default wrapper(FileInput);\n","import wrapper from '../../../utils/formik';\nimport Input from '../../components/Input';\n\nexport default wrapper(Input, { hasIsFieldProp: true });\n","import wrapper from '../../../utils/formik';\nimport Input2 from '../../components/Input2';\n\nexport default wrapper(Input2);\n","import wrapper from '../../../utils/formik';\nimport MultiSelect from '../../components/Multiselect';\n\nexport default wrapper(MultiSelect);\n","import wrapper from '../../../utils/formik';\nimport Radio from '../../components/Radio';\n\nexport default wrapper(Radio, {\n getOnChangeProps: (value, field, form, properties) => ({\n checked: value === properties.value,\n value: properties.value,\n }),\n});\n","import wrapper from '../../../utils/formik';\nimport Select from '../../components/Select';\n\nexport default wrapper(Select, { hasIsFieldProp: true });\n","import wrapper from '../../../utils/formik';\nimport SelectableList from '../../components/SelectableList';\n\nexport default wrapper(SelectableList);\n","import wrapper from '../../../utils/formik';\nimport Textarea from '../../components/Textarea';\n\nexport default wrapper(Textarea);\n","import wrapper from '../../../utils/formik';\nimport Toggle from '../../components/Toggle';\n\nexport default wrapper(Toggle);\n","import wrapper from '../../../utils/formik';\nimport StringBuilder from '../../components/StringBuilder';\n\nexport default wrapper(StringBuilder);\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { fromJS } from 'immutable';\n\nimport CodeEditor from '../../components/CodeEditor';\n\nexport default class FieldCodeEditor extends Component {\n static propTypes = {\n input: PropTypes.instanceOf(Object),\n meta: PropTypes.instanceOf(Object),\n validationmessages: PropTypes.instanceOf(Object),\n };\n\n constructor(props) {\n super(props);\n\n this.handleOnChange = this.handleOnChange.bind(this);\n }\n\n getInputError() {\n const { meta, validationmessages } = this.props;\n const { touched, error, warning } = meta;\n let message = null;\n\n if (touched && error && validationmessages[error]) {\n message = validationmessages[error];\n } else if (touched && warning) {\n message = 'warning';\n }\n\n return message;\n }\n\n handleOnChange(value) {\n const { input } = this.prop;\n const { onChange } = input;\n\n onChange(fromJS(value));\n }\n\n render() {\n const { input, ...rest } = this.props;\n\n return (\n \n );\n }\n}\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { fromJS } from 'immutable';\n\nimport Combobox from '../../components/Combobox';\n\nexport default class FieldCombobox extends Component {\n static propTypes = {\n meta: PropTypes.instanceOf(Object),\n input: PropTypes.instanceOf(Object),\n validationmessages: PropTypes.instanceOf(Object),\n }\n\n constructor(props) {\n super(props);\n\n this.handleOnChange = this.handleOnChange.bind(this);\n }\n\n getComboboxError() {\n const { meta, validationmessages } = this.props;\n const { touched, error, warning } = meta;\n let message = null;\n\n if (touched && error && validationmessages[error]) {\n message = validationmessages[error];\n } else if (touched && warning) {\n message = 'warning';\n }\n\n return message;\n }\n\n handleOnChange(value) {\n const { input } = this.props;\n const { onChange } = input;\n\n onChange(fromJS(value));\n }\n\n render() {\n const { ...props } = this.props;\n\n return (\n \n );\n }\n}\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { fromJS } from 'immutable';\n\nimport Dropdown from '../../components/Dropdown';\n\nexport default class FieldDropdown extends Component {\n static propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.string,\n ]),\n input: PropTypes.instanceOf(Object),\n };\n\n constructor(props) {\n super(props);\n\n this.handleOnChange = this.handleOnChange.bind(this);\n }\n\n handleOnChange(value) {\n const { input } = this.props;\n const { onChange } = input;\n\n onChange(fromJS(value));\n }\n\n render() {\n const {\n children,\n input,\n ...rest\n } = this.props;\n\n return (\n \n {children}\n \n );\n }\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport Pagination from '../../components/Pagination';\n\nconst FieldPagination = (props) => {\n const { input, ...rest } = props;\n\n return (\n \n );\n};\n\nFieldPagination.propTypes = {\n input: PropTypes.instanceOf(Object),\n};\n\nexport default FieldPagination;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { fromJS } from 'immutable';\n\nimport Combobox2 from '../../components/Combobox2';\n\nconst FieldCombobox2 = (props) => {\n const { input, meta, validationmessages } = props;\n\n const getComboboxError = () => {\n const { touched, error, warning } = meta;\n let message = null;\n\n if (touched && error && validationmessages[error]) {\n message = validationmessages[error];\n } else if (touched && warning) {\n message = 'warning';\n }\n return message;\n };\n\n const handleOnChange = (value) => {\n const { onChange } = input;\n onChange(fromJS(value));\n };\n\n return (\n \n );\n};\n\nFieldCombobox2.propTypes = {\n meta: PropTypes.instanceOf(Object),\n input: PropTypes.instanceOf(Object),\n validationmessages: PropTypes.instanceOf(Object),\n};\n\nexport default FieldCombobox2;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { fromJS } from 'immutable';\n\nimport DatePicker from '../../components/DatePicker';\n\nconst FormDatePicker = (props) => {\n const {\n input,\n meta,\n validationmessages,\n ...rest\n } = props;\n\n const getDatePickerError = () => {\n const { touched, error } = meta;\n let message = null;\n\n if (touched && error && validationmessages[error]) {\n message = validationmessages[error];\n }\n\n return message;\n };\n\n const handleOnChange = (value) => {\n const { onChange } = input;\n\n onChange(fromJS(value));\n };\n\n return (\n \n );\n};\n\nFormDatePicker.propTypes = {\n meta: PropTypes.instanceOf(Object),\n input: PropTypes.instanceOf(Object),\n validationmessages: PropTypes.instanceOf(Object),\n};\n\nexport default FormDatePicker;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { fromJS } from 'immutable';\n\nimport EditableList from '../../components/EditableList';\n\nexport default class FieldEditableList extends Component {\n static propTypes = {\n input: PropTypes.instanceOf(Object),\n meta: PropTypes.instanceOf(Object),\n validationmessages: PropTypes.instanceOf(Object),\n };\n\n constructor(props) {\n super(props);\n\n this.handleOnChange = this.handleOnChange.bind(this);\n }\n\n getEditableListError() {\n const { meta, validationmessages } = this.props;\n const { touched, error } = meta;\n let message = null;\n\n if (touched && error && validationmessages[error]) {\n message = validationmessages[error];\n }\n\n return message;\n }\n\n handleOnChange(value) {\n const { input } = this.props;\n const { onChange } = input;\n\n onChange(fromJS(value));\n }\n\n render() {\n const { ...props } = this.props;\n\n return (\n \n );\n }\n}\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\nimport FileInput from '../../components/FileInput';\n\nexport default class FieldFileInput extends Component {\n static propTypes = {\n input: PropTypes.instanceOf(Object),\n meta: PropTypes.instanceOf(Object),\n validationmessages: PropTypes.instanceOf(Object),\n };\n\n getInputError() {\n const { meta, validationmessages } = this.props;\n const { touched, error, warning } = meta;\n let message = null;\n\n if (touched && error && validationmessages[error]) {\n message = validationmessages[error];\n } else if (touched && warning) {\n message = 'warning';\n }\n\n return message;\n }\n\n render() {\n const { input, ...rest } = this.props;\n\n return (\n \n );\n }\n}\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Input from '../../components/Input';\n\nexport default class FieldInput extends Component {\n static propTypes = {\n meta: PropTypes.instanceOf(Object),\n input: PropTypes.instanceOf(Object),\n validationmessages: PropTypes.instanceOf(Object),\n }\n\n getInputError() {\n const { meta, validationmessages } = this.props;\n const { touched, error, warning } = meta;\n let message = null;\n\n if (touched && error && validationmessages[error]) {\n message = validationmessages[error];\n } else if (touched && warning) {\n message = 'warning';\n }\n\n return message;\n }\n\n render() {\n const { input, ...rest } = this.props;\n\n return (\n \n );\n }\n}\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { fromJS } from 'immutable';\n\nimport Multiselect from '../../components/Multiselect';\n\nexport default class FieldMultiselect extends Component {\n static propTypes = {\n input: PropTypes.instanceOf(Object),\n meta: PropTypes.instanceOf(Object),\n validationmessages: PropTypes.instanceOf(Object),\n }\n\n constructor(props) {\n super(props);\n\n this.handleOnChange = this.handleOnChange.bind(this);\n }\n\n getMultiselectError() {\n const { meta, validationmessages } = this.props;\n const { touched, error, warning } = meta;\n let message = null;\n\n if (touched && error && validationmessages[error]) {\n message = validationmessages[error];\n } else if (touched && warning) {\n message = 'warning';\n }\n\n return message;\n }\n\n handleOnChange(value) {\n const { input } = this.props;\n const { onChange } = input;\n\n onChange(fromJS(value));\n }\n\n render() {\n const { ...props } = this.props;\n\n return (\n \n );\n }\n}\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { fromJS } from 'immutable';\n\nimport Select from '../../components/Select';\n\nexport default class FieldSelect extends Component {\n static propTypes = {\n input: PropTypes.instanceOf(Object),\n meta: PropTypes.instanceOf(Object),\n validationmessages: PropTypes.instanceOf(Object),\n };\n\n constructor(props) {\n super(props);\n\n this.handleEvent = this.handleEvent.bind(this);\n }\n\n getSelectError() {\n const { meta, validationmessages } = this.props;\n const { touched, error, warning } = meta;\n let message = null;\n\n if (touched && error && validationmessages[error]) {\n message = validationmessages[error];\n } else if (touched && warning) {\n message = 'warning';\n }\n\n return message;\n }\n\n handleEvent(selectValue) {\n const { input } = this.props;\n const { onChange, value } = input;\n\n onChange(fromJS(selectValue !== undefined ? selectValue : value));\n }\n\n render() {\n const { input, ...rest } = this.props;\n\n return (\n \n );\n }\n}\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { fromJS } from 'immutable';\n\nimport SelectableList from '../../components/SelectableList';\n\nexport default class FieldSelectableList extends Component {\n static propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.node,\n ]),\n onChange: PropTypes.func,\n input: PropTypes.instanceOf(Object),\n };\n\n constructor(props) {\n super(props);\n\n this.handleOnChange = this.handleOnChange.bind(this);\n }\n\n handleOnChange(value) {\n const { input } = this.props;\n\n input.onChange(fromJS(value));\n }\n\n render() {\n const { children, ...props } = this.props;\n\n return (\n \n );\n }\n}\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { fromJS } from 'immutable';\n\nimport Toggle from '../../components/Toggle';\n\nexport default class FieldToggle extends Component {\n static propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.node,\n ]),\n onChange: PropTypes.func,\n input: PropTypes.instanceOf(Object),\n };\n\n constructor(props) {\n super(props);\n\n this.handleOnChange = this.handleOnChange.bind(this);\n }\n\n handleOnChange(value) {\n const { input } = this.props;\n\n input.onChange(fromJS(value));\n }\n\n render() {\n const { children, ...props } = this.props;\n\n return (\n \n {children}\n \n );\n }\n}\n"],"names":["global","this","window","define","module","deps","payload","arguments","length","modules","payloads","original","apply","console","error","trace","ns","root","_require","parentId","callback","lookup","undefined","Object","prototype","toString","call","params","i","l","dep","require","push","packagedModule","normalizeModule","moduleName","indexOf","chunks","split","charAt","slice","join","previous","replace","exports","mod","id","uri","packaged","ace","defineProp","obj","name","val","defineProperty","value","enumerable","writable","configurable","String","startsWith","searchString","position","lastIndexOf","endsWith","subjectString","lastIndex","repeat","count","result","string","includes","str","assign","target","TypeError","output","index","source","keys","forEach","key","values","o","map","k","Array","find","predicate","len","thisArg","kValue","findIndex","item","fill","O","relativeStart","Math","max","min","end","relativeEnd","final","of","deepCopy","copy","isArray","last","a","stringReverse","reverse","stringRepeat","trimBeginRegexp","trimEndRegexp","stringTrimLeft","stringTrimRight","copyObject","copyArray","array","arrayToMap","arr","createMap","props","create","arrayRemove","splice","escapeRegExp","escapeHTML","getMatchOffsets","regExp","matches","offset","deferredCall","fcn","timer","deferred","timeout","cancel","setTimeout","schedule","clearTimeout","isPending","delayedCall","defaultTimeout","_self","delay","supportsLookbehind","RegExp","e","skipEmptyMatch","line","supportsUnicodeFlag","codePointAt","OS","LINUX","MAC","WINDOWS","getOS","isMac","isLinux","_navigator","navigator","os","exec","platform","toLowerCase","ua","userAgent","appName","isWin","isIE","parseFloat","match","isOldIE","isGecko","isMozilla","isOpera","opera","isWebKit","isChrome","isSafari","isEdge","isAIR","isAndroid","isChromeOS","isIOS","test","MSStream","isMobile","strictCSP","useragent","buildDom","parent","refs","txt","document","createTextNode","appendChild","els","ch","el","createElement","options","childIndex","n","className","style","cssText","setAttribute","getDocumentHead","doc","head","getElementsByTagName","documentElement","tag","createElementNS","removeChildren","element","innerHTML","textContent","ownerDocument","createFragment","createDocumentFragment","hasCssClass","addCssClass","removeCssClass","classes","toggleCssClass","add","setCssClass","node","include","hasCssString","sheets","querySelectorAll","removeElementById","getElementById","remove","cssCache","insertPendingStyles","cache","importCssString","container","getRootNode","insertBefore","firstChild","useStrictCSP","importCssStylsheet","rel","href","scrollbarWidth","inner","width","minWidth","height","display","outer","left","overflow","body","noScrollbar","offsetWidth","withScrollbar","clientWidth","removeChild","computedStyle","getComputedStyle","setStyle","styles","property","HAS_CSS_ANIMATION","HAS_CSS_TRANSFORMS","HI_DPI","devicePixelRatio","div","transform","animationName","translate","tx","ty","round","top","dom","get","url","xhr","XMLHttpRequest","open","onreadystatechange","readyState","responseText","send","loadScript","path","s","src","onload","_","isAbort","qualifyURL","inherits","ctor","superCtor","super_","constructor","mixin","implement","proto","EventEmitter","stopPropagation","propagationStopped","preventDefault","defaultPrevented","_emit","_dispatchEvent","eventName","_eventRegistry","_defaultHandlers","listeners","defaultHandler","type","_signal","once","on","newCallback","off","Promise","resolve","setDefaultHandler","handlers","_disabled_","old","disabled","removeDefaultHandler","pop","addEventListener","capturing","removeListener","removeEventListener","removeAllListeners","reportError","msg","data","Error","messages","oop","optionsProvider","setOptions","optList","setOption","getOptions","optionNames","$options","filter","hidden","getOption","opt","warn","forwardTo","handlesSet","set","message","AppConfig","$defaultOptions","defineOptions","initialValue","resetOptions","setDefaultValue","opts","setDefaultValues","optionHash","setMessages","nls","translated","isDark","cssClass","$id","lang","net","customLoader","workerPath","modePath","themePath","basePath","suffix","$moduleUrls","loadWorkerFromBlob","sharedPopups","hasOwnProperty","all","$modes","moduleUrl","component","parts","sep","base","re","setModuleUrl","subst","setLoader","cb","dynamicModules","$loading","$loaded","loadModule","onLoad","loadedModule","moduleType","load","afterLoad","loader","err","reportErrorIfPathIsNotConfigured","then","default","$require","setModuleLoader","version","config","init","scriptOptions","scriptUrl","currentScript","_currentScript","currentDocument","scripts","script","getAttribute","attributes","j","attr","m","m1","toUpperCase","Range","startRow","startColumn","endRow","endColumn","start","row","column","isEqual","range","contains","compare","compareRange","cmp","comparePoint","p","containsRange","intersects","isEnd","isStart","setStart","setEnd","inside","insideStart","insideEnd","isMultiLine","compareStart","compareEnd","compareInside","clipRows","firstRow","lastRow","fromPoints","extend","isEmpty","clone","collapseRows","toScreenRange","session","screenPosStart","documentToScreenPosition","screenPosEnd","moveBy","comparePoints","p1","p2","Keys","ret","MODIFIER_KEYS","KEY_MODS","FUNCTION_KEYS","PRINTABLE_KEYS","parseInt","enter","escape","esc","del","mods","pow","x","keyCodeToString","keyCode","keyString","fromCharCode","activeListenerOptions","pressedKeys","ts","getListenerOptions","createComment","passive","detectListenerOptionsSupport","EventListener","elem","destroy","addListener","destroyer","$toDestroy","stopEvent","getButton","ctrlKey","altKey","shiftKey","button","capture","eventHandler","releaseCaptureHandler","onMouseUp","addMouseWheelListener","deltaX","deltaY","deltaMode","DOM_DELTA_PIXEL","wheelX","wheelY","DOM_DELTA_LINE","DOM_DELTA_PAGE","addMultiMouseDownListener","elements","timeouts","callbackName","startX","startY","clicks","eventNames","onMousedown","detail","isNewClick","abs","clientX","clientY","_clicks","getModifierHash","metaKey","normalizeCommandKeys","hashId","getModifierState","altGr","location","keyLocation","timeStamp","resetPressedKeys","getModifierString","addCommandKeyListener","isOldGecko","lastKeyDownKeyCode","lastDefaultPrevented","postMessage","postMessageId","nextTick","win","messageName","listener","$idleBlocked","onIdle","handler","$idleBlockId","blockIdle","nextFrame","requestAnimationFrame","mozRequestAnimationFrame","webkitRequestAnimationFrame","msRequestAnimationFrame","oRequestAnimationFrame","bind","$cancelT","lineMode","pasteCancelled","Date","now","event","clipboard","BROKEN_SETDATA","USE_IE_MIME_TYPE","HAS_FOCUS_ARGS","MAX_LINE_LENGTH","KEYS","MODS","valueResetRegex","TextInput","parentNode","host","text","opacity","copied","pasted","inComposition","sendingText","tempStyle","fontSize","commandMode","ignoreFocusEvents","lastValue","lastSelectionStart","lastSelectionEnd","lastRestoreEnd","rowStart","Number","MAX_SAFE_INTEGER","rowEnd","MIN_SAFE_INTEGER","numberOfExtraLines","isFocused","activeElement","setNumberOfExtraLines","number","setAriaOptions","activeDescendant","inline","removeAttribute","role","setLabel","selection","cursor","onBlur","hasFocus","onFocus","resetSelection","$focusScroll","focus","renderer","enableKeyboardAccessibility","preventScroll","isTransformed","getBoundingClientRect","ancestors","t","parentElement","nodeType","blur","curOp","commandName","command","isUserAction","docChanged","selectionChanged","onCompositionEnd","positionToSelection","getLine","newValue","selectionEnd","setSelectionRange","afterContextMenu","selectionStart","getRange","lines","prevLine","nextLine","inputHandler","setInputHandler","getInputHandler","sendText","fromInput","onPaste","extendLeft","extendRight","inserted","restoreStart","restoreEnd","endIndex","shouldReset","onTextInput","onInput","onCompositionUpdate","inputType","execCommand","handleClipboardData","forceIEMime","clipboardData","mime","setData","getData","doCopy","isCut","getCopyText","onCut","onCopy","select","onCommandKey","isAllSelected","selectAll","$readOnly","cancelComposition","useTextareaForIME","markerRange","context","compositionStartOffset","closeTimeout","syncComposition","onContextMenuClose","$isMousePressed","$keepTextAreaAtCursor","$moveTextAreaToCursor","onCompositionStart","getSelectionRange","msGetInputContext","getInputContext","getElement","setCommandMode","readOnly","setReadOnly","setCopyWithEmptySelection","onContextMenu","domEvent","moveToMouse","bringToFront","characterWidth","rect","borderTopWidth","borderLeftWidth","maxTop","bottom","clientHeight","move","textInput","scroller","typingResetTimeout","typing","detectArrowKeys","$mouseHandler","isMousePressed","modifier","up","home","option","down","right","shift","commands","findKeyCommand","addIosSelectionHandler","$setUserAgentForTests","_isMobile","_isIOS","DefaultHandlers","mouseHandler","$clickSelection","editor","onMouseDown","onDoubleClick","onTripleClick","onQuadClick","onMouseWheel","selectByLines","extendSelectionBy","selectByWords","ev","inSelection","pos","getDocumentPosition","mousedownEvent","moveToPosition","time","$focusTimeout","inMultiSelectMode","captureMouse","startSelect","setState","waitForClickSelection","screenToTextCoordinates","y","getShiftKey","selectToPosition","anchor","orientedRange","calcRangeOrientation","setSelectionAnchor","scrollCursorIntoView","unitName","cmpStart","cmpEnd","selectByLinesEnd","unsetStyle","focusWait","ax","ay","bx","by","distance","sqrt","getBracketRange","getWordRange","getLineRange","getAccelKey","$lastScroll","vx","vy","allowed","prevScroll","dt","direction","canScroll","isScrollableBy","speed","scrollBy","stop","selectEnd","selectAllEnd","selectByWordsEnd","extendStatics","__extends","d","b","setPrototypeOf","__proto__","__","__values","Symbol","iterator","next","done","CLASSNAME","Tooltip","isOpen","$element","$parentNode","$init","setText","setHtml","html","setPosition","setClassName","setTheme","theme","show","hide","getHeight","offsetHeight","getWidth","popupManager","PopupManager","popups","addPopup","popup","updatePopups","removePopup","e_1","_a","e_2","_b","sort","priority","visiblepopups","_c","_d","shouldDisplay","visiblepopups_1","visiblepopups_1_1","visiblePopup","doPopupsOverlap","e_2_1","return","e_1_1","popupA","popupB","rectA","rectB","HoverTooltip","_super","_this","lastT","idleTime","lastEvent","onMouseOut","onMouseMove","waitForHover","whiteSpace","pointerEvents","tabIndex","addToEditor","getMouseEventTarget","removeFromEditor","isOutsideOfText","$gatherData","docPos","screenPos","pixelToScreenCoordinates","clippedPos","setDataProvider","showForRange","domNode","startingEvent","$registerCloseEvents","addMarker","textToScreenCoordinates","pageX","maxHeight","labelHeight","labelWidth","spaceBelow","innerHeight","pageY","lineHeight","isAbove","innerWidth","marker","$markerSession","removeMarker","$removeCloseEvents","relatedTarget","currentTarget","classList","GutterHandler","tooltipTimeout","mouseEvent","gutter","$gutterLayer","tooltip","GutterTooltip","hideTooltip","moveTooltip","getRegion","selectTo","srcElement","$tooltipFollowsMouse","getLength","screenRow","$pos","documentToScreenRow","showTooltip","gutterRow","getGutterRow","gutterCell","$lines","querySelector","$gutter","windowWidth","windowHeight","singular","plural","warning","info","annotation","annotationsInRow","$annotations","from","fold","getFoldLine","$showFoldedAnnotations","mostSevereAnnotationInFoldType","annotationsInFold","annotationType","summaryFoldedAnnotations","concat","annotationsToSummaryString","annotationMessages","iconClassName","$useSvgGutterIcons","annotationLabels","tooltipContent","annotations","summary","annotationTypes_1","annotationTypes_1_1","label","MouseEvent","$inSelection","documentRow","selectionRange","DragdropHandler","dragImage","dragSelectionMarker","timerId","dragCursor","dragOperation","isInternal","autoScrollStartTime","cursorMovedTime","cursorPointOnCaretMoved","mouseTarget","counter","onDragInterval","prevCursor","vMovement","hMovement","moveCursorToPosition","calcDistance","layerConfig","editorRect","offsets","nearestXOffset","nearestYOffset","scrollCursor","vScroll","hScroll","autoScroll","addDragMarker","toOrientedRange","getSelectionStyle","clearSelection","$cursorLayer","setBlinking","clearInterval","setInterval","clearDragMarker","fromOrientedRange","$resetCursorStyle","onDragStart","cancelDrag","draggable","self","dataTransfer","effectAllowed","getReadOnly","setDragImage","clearData","getTextRange","onDragEnd","dropEffect","setCursorStyle","onDragEnter","canAccept","getDropEffect","onDragOver","onMouseMoveTimer","onDragLeave","onDrop","moveText","dropData","insert","types","some","copyAllowed","copyModifierState","dragWait","getDragDelay","startDrag","dragWaitEnd","dragReadyEnd","cursorStyle","onMouseDrag","state","dragDrop","$dragEnabled","eventTarget","unselectable","addTouchListeners","touchStartT","longTouchTimer","animationTimer","pressed","contextMenu","mode","animationSteps","clickCount","vX","vY","showContextMenu","handleClick","selected","hasUndo","action","getUndoManager","replaceChild","class","readText","writeText","ontouchstart","ontouchend","onclick","pagePos","leftOffset","scrollLeft","hideContextMenu","handleLongTap","selectWord","touches","h","w","touchObj","setRange","switchToSelectionMode","cursorPos","getPixelPosition","anchorPos","offsetTop","offsetLeft","weightedDistance","diff1","diff2","oldScrollTop","getScrollTop","DefaultGutterHandler","MouseHandler","focusEditor","onMouseEvent","scrollBarV","scrollBarH","Boolean","gutterEl","$dragDelay","character","mousemove","$scrollSpeed","mouseMoveHandler","which","releaseMouse","$mouseMoved","onCaptureEnd","onOperationEnd","onCaptureInterval","$onCaptureMouseMove","endOperation","startOperation","cancelContextMenu","scrollSpeed","dragDelay","dragEnabled","focusTimeout","tooltipFollowsMouse","FoldHandler","getFoldAt","removeFold","expandFold","getUseWrapMode","foldWidgets","onFoldWidgetClick","getParentFoldRangeData","firstRange","addFold","keyUtil","KeyBinding","$editor","$data","$handlers","kb","removeKeyboardHandler","$defaultHandler","addKeyboardHandler","setKeyboardHandler","handleKeyboard","attach","detach","getKeyboardHandler","getStatusText","$callKeyboardHandlers","toExecute","success","args","passEvent","dir","hiLevel","lastArabic","hasUBAT_B","hasUBAT_S","impTab_LTR","impTab_RTL","ET","BN","UnicodeTBL00","UnicodeTBL20","_invertLevel","lev","levels","_array","lo","hi","tmp","_getCharClass","chars","ix","wType","nType","cType","c","rtlCandidate","_getCharacterType","uc","charCodeAt","L","R","EN","ON_R","AN","R_H","B","RLE","DOT","doBidiReorder","textCharTypes","isRtl","logicalFromVisual","bidiLevels","charTypes","impTab","prevState","newClass","newLevel","newState","condPos","_computeLevels","hasBidiCharacters","getVisualFromLogicalIdx","logIdx","rowMap","bidiUtil","bidiRE","BidiHandler","bidiMap","currentRow","charWidths","EOL","showInvisibles","isRtlDir","$isRtl","wrapIndent","EOF","contentWidth","fontMetrics","rtlLineOffset","wrapOffset","isMoveLeftOperation","seenBidi","getValue","isBidiRow","docRow","splitIndex","updateRowLine","updateBidiMap","onChange","delta","getDocumentRow","rowCache","$screenRowCache","$getRowCacheIndex","$docRowCache","getSplitIndex","currentIndex","prevIndex","endOfLine","$useWrapMode","splits","$wrapData","indent","substring","size","isFullWidth","getScreenTabSize","$main","substr","markAsDirty","updateCharacterWidths","$characterSize","bidiCharWidth","$measureCharWidth","setShowInvisibles","setEolChar","eolChar","setContentWidth","isRtlLine","setRtlDirection","getCursorPosition","getSelectionAnchor","$bidiHandler","removeInLine","getPosLeft","col","leftBoundary","logicalIdx","getOverwrite","visualIdx","getSelections","startCol","endCol","level","selections","selColMin","selColMax","isSelected","isSelectedPrev","visIdx","offsetToCol","posX","charWidth","Selection","getDocument","lead","createAnchor","$silent","$cursorChanged","$isEmpty","$keepDesiredColumnOnChange","$desiredColumn","$anchorChanged","getCursor","getPosition","setAnchor","getAnchor","getSelectionLead","isBackwards","$setSelection","MAX_VALUE","anchorRow","anchorColumn","cursorRow","cursorColumn","wasEmpty","wasMultiselect","$moveSelection","mover","moveCursorTo","moveTo","selectUp","moveCursorUp","selectDown","moveCursorDown","selectRight","moveCursorRight","selectLeft","moveCursorLeft","selectLineStart","moveCursorLineStart","selectLineEnd","moveCursorLineEnd","selectFileEnd","moveCursorFileEnd","selectFileStart","moveCursorFileStart","selectWordRight","moveCursorWordRight","selectWordLeft","moveCursorWordLeft","selectAWord","getAWordRange","excludeLastChar","foldLine","selectLine","moveCursorBy","wouldMoveIntoSoftTab","tabSize","isTabStop","getTabSize","getNavigateWithinSoftTabs","firstColumnPosition","screenToDocumentPosition","leadingSpace","getDisplayLine","$useEmacsStyleLineStart","lineEnd","getDocumentLastRowColumnPosition","textEnd","search","moveCursorLongWordRight","rightOfCursor","nonTokenRe","tokenRe","moveCursorLongWordLeft","getFoldStringAt","leftOfCursor","$shortWordEndIndex","whitespaceRe","moveCursorShortWordRight","moveCursorShortWordLeft","$selectLongWords","rows","offsetX","lineWidgets","widget","rowsAbove","rowCount","keepDesiredColumn","moveCursorToScreen","desiredColumn","r","getRangeOfMovements","func","toJSON","rangeCount","ranges","r1","fromJSON","rangeList","toSingleRange","addRange","MAX_TOKEN_COUNT","Tokenizer","rules","states","regExps","matchMappings","ruleRegExps","matchTotal","mapping","defaultToken","flag","splitterRurles","rule","caseInsensitive","unicode","regex","adjustedregex","matchcount","token","groupCount","tokenArray","onMatch","$arrayTokens","$applyToken","digit","removeCapturingGroups","splitRegex","createSplitterRegexp","$setMaxTokenCount","tokens","stack","inChClass","lastCapture","parenOpen","parenClose","square","getLineTokens","startState","currentState","matchAttempts","skipped","consumeLineEnd","merge","unshift","TextHighlightRules","$rules","addRules","prefix","nextState","getRules","embedRules","HighlightRules","escapeRules","append","$embeds","getEmbeds","pushState","popState","normalizeRules","processState","processed","toInsert","stateName","includeName","noEscape","keywordMap","createKeywordMapper","ignoreCase","splitChar","keywords","$keywordList","list","word","getKeywords","$keywords","Behaviour","$behaviours","addBehaviours","behaviours","inherit","getBehaviours","TokenIterator","initialRow","initialColumn","$session","$row","$rowTokens","getTokens","getTokenAt","$tokenIndex","stepBackward","stepForward","getCurrentToken","getCurrentTokenRow","getCurrentTokenColumn","rowTokens","tokenIndex","getCurrentTokenPosition","getCurrentTokenRange","SAFE_INSERT_IN_TOKENS","SAFE_INSERT_BEFORE_TOKENS","contextCache","defaultQuotes","initContext","multiSelect","autoInsertedBrackets","autoInsertedRow","autoInsertedLineEnd","maybeInsertedBrackets","maybeInsertedRow","maybeInsertedLineStart","maybeInsertedLineEnd","getWrapped","opening","closing","rowDiff","CstyleBehaviour","getWrapBehavioursEnabled","isSaneInsertion","braces","recordAutoInsert","recordMaybeInsert","$findOpeningBracket","isAutoInsertedClosing","popAutoInsertedClosing","isMaybeInsertedClosing","clearMaybeInsertedClosing","openBracePos","findMatchingBracket","next_indent","$getIndent","getTabString","quotes","$mode","$quotes","lineCommentStart","quote","leftChar","rightChar","rightToken","pair","stringBefore","stringAfter","wordRe","isWordBefore","isWordAfter","pairQuotesAfter","$pairQuotesAfter","charBefore","closeDocComment","$matchTokenType","iterator2","bracket","wordChars","code","Mode","$defaultBehaviour","getTokenizer","$tokenizer","$highlightRules","$highlightRuleConfig","blockComment","toggleCommentLines","ignoreBlankLines","shouldRemove","minIndent","Infinity","insertAtTabStop","regexpStart","getUseSoftTabs","uncomment","shouldInsertSpace","commentWithSpace","comment","insertInLine","testRemove","before","after","spaces","lineCommentEnd","regexpEnd","iter","fun","minEmptyLength","floor","toggleBlockComment","colDiff","initialRange","startRange","endRange","getNextLineIndent","tab","checkOutdent","input","autoOutdent","createWorker","createModeDelegates","delegations","scope","functionName","$delegator","method","language","transformAction","param","$behaviour","completionKeywords","ruleItr","aLength","$createKeywordList","getCompletions","score","meta","applyDelta","docLines","doNotValidate","Anchor","$onChange","$clipPositionToDocument","point","moveIfEqual","deltaIsInsert","deltaRowShift","deltaColShift","deltaStart","deltaEnd","$pointsInOrder","$getTransformedPoint","$insertRight","noClip","point1","point2","equalPointsInOrder","bColIsAfter","Document","textOrLines","insertMergedLines","setValue","getAllLines","getNewLineCharacter","$detectNewLine","$autoNewLine","$newLineMode","setNewLineMode","newLineMode","getNewLineMode","isNewLine","getLines","getLinesForRange","insertLines","insertFullLines","removeLines","removeFullLines","insertNewLine","$split","clonePos","$clipPosition","deleteFirstNewLine","deleteLastNewLine","deletedLines","removeNewLine","applyDeltas","deltas","revertDeltas","revertDelta","isInsert","$splitAndapplyLargeDelta","$safeApplyDelta","docLength","MAX","to","chunk","indexToPosition","newlineLength","positionToIndex","BackgroundTokenizer","tokenizer","running","currentLine","$worker","workerStart","endLine","startLine","processedLines","$tokenizeRow","fireUpdateEvent","setTokenizer","setDocument","first","scheduleStart","$updateOnChange","getState","cleanup","SearchHighlight","clazz","setRegexp","update","markerLayer","renderedMarkerRanges","MAX_RANGES","rangeToAddMarkerTo","rangeAsString","drawSingleLineMarker","UndoManager","$maxRev","$fromUndo","$undoDepth","reset","addSession","allowMerge","$lastDelta","$keepRedoStack","$redoStack","lastDeltas","undoStackLength","$undoStack","$rev","addSelection","rev","startNewGroup","markIgnored","ignore","getSelection","getRevision","getDeltas","getChangedRanges","getChangedLines","undo","dontSelect","deltaSet","swapped","swapGroups","rearrangeUndoStack","$redoStackBaseRev","undoSelectionRange","undoChanges","$syncRev","redo","diff","redoStack","deltaSets","moveDeltasByOne","rebaseRedoStack","redoSelectionRange","redoChanges","nextDelta","mark","canUndo","canRedo","bookmark","isAtBookmark","json","$prettyPrint","stringifyDelta","hasRedo","isClean","markClean","stringifyRange","swap","d1","d2","i1","i2","ds1","ds2","selectionBefore","selectionAfter","xform","c1","splitDelta","shiftPos","rowsBefore","otherLines","cloneDelta","xformed","FoldLine","foldData","folds","setFoldLine","shiftRow","sameRow","containsRow","walk","lastEnd","isNewRow","placeholder","getNextFoldTo","kind","addRemoveChars","log","foldBefore","newFoldLine","foldLineNext","idxToPosition","idx","lastFoldEndColumn","RangeList","$bias","pointIndex","excludeEdges","startIndex","addList","removed","substractPoint","containsPoint","rangeAtPoint","clipped","removeAll","lineDif","Fold","subFolds","subFold","collapseChildren","addSubFold","consumePoint","afterStart","firstConsumed","consumedFolds","restoreRange","restorePoint","Folding","side","getFoldsInRange","foldLines","$foldData","foundFolds","getFoldsInRangeList","getAllFolds","trim","lastFold","startFoldLine","getNextFoldLine","getFoldedRowCount","$addFoldLine","added","$clipRangeToDocument","startFold","endFold","removeFolds","$updateWrapData","$updateRowLengthCache","$modified","addFolds","$updating","cloneFolds","foldAll","expandFolds","unfold","expandInner","outermostFolds","isRowFolded","startFoldRow","getRowFoldEnd","getRowFoldStart","getFoldDisplayLine","textLine","lastColumn","$cloneFoldData","fd","toggleFold","tryToUnfold","bracketPos","getCommentFoldRange","depth","getFoldWidget","getFoldWidgetRange","foldToLevel","foldAllComments","$foldStyles","$foldStyle","setFoldStyle","$foldMode","$setFolding","foldMode","$updateFoldWidgets","$tokenizerUpdateFoldWidgets","updateFoldWidgets","tokenizerUpdateFoldWidgets","ignoreCurrent","fw","children","siblings","$toggleFoldWidget","toggleFoldWidget","toggleParent","BracketMatch","chr","charBeforeCursor","$findClosingBracket","getMatchingBracketRanges","bracketsRegExp","$brackets","typeRe","openBracket","valueIndex","closingBracket","valueLength","getMatchingTags","$findTagName","$findClosingTag","$findOpeningTag","found","backward","prevToken","currentTag","openTagStart","openTagName","foundOpenTagEnd","openTagEnd","closeTagStart","closeTagName","closeTagEnd","openTag","closeTag","stepCount","tmpToken","TextMode","EditSession","$breakpoints","$decorations","$frontMarkers","$backMarkers","$markerId","$undoSelect","$uid","bgTokenizer","onChangeFold","setMode","destroyed","resetCaches","$resetRowCache","cacheArray","low","mid","$rowLengthCache","removedFolds","$updateInternalDataOnChange","$undoManager","mergeUndoDeltas","$informUndoManager","setUndoManager","JSON","parse","undoManager","history","editSession","setAnnotations","setBreakpoints","breakpoints","setScrollLeft","setScrollTop","scrollTop","$scrollLeft","$scrollTop","$syncInformUndoManager","markUndoGroup","$defaultUndoManager","setUseSoftTabs","$useSoftTabs","$indentWithTabs","setTabSize","$tabSize","setNavigateWithinSoftTabs","navigateWithinSoftTabs","$navigateWithinSoftTabs","setOverwrite","overwrite","$overwrite","toggleOverwrite","addGutterDecoration","removeGutterDecoration","getBreakpoints","clearBreakpoints","setBreakpoint","clearBreakpoint","inFront","addDynamicMarker","markerId","getMarkers","highlight","$searchHighlight","highlightLines","getAnnotations","clearAnnotations","inToken","wordRange","setUseWorker","useWorker","getUseWorker","$useWorker","onReloadTokenizer","$onChangeMode","$modeId","$isPlaceholder","oldMode","$stopWorker","$startWorker","attachToSession","wrapMethod","$wrapMethod","foldingRules","terminate","getMode","isNaN","getScrollLeft","getScreenWidth","$computeWidth","getLineWidgetMaxWidth","screenWidth","lineWidgetsWidth","lineWidgetWidth","force","$wrapLimit","longestScreenLine","foldIndex","foldStart","$getStringScreenWidth","$getUndoSelection","setUndoSelect","enable","isUndo","fromRange","toPosition","toRange","collDiff","oldStart","newStart","indentRows","indentString","outdentRows","rowRange","deleteRange","$moveLines","$clipRowToDocument","moveLinesUp","moveLinesDown","duplicateLines","$clipColumnToRow","setUseWrapMode","useWrapMode","setWrapLimitRange","$wrapLimitRange","adjustWrapLimit","desiredLimit","$printMargin","limits","wrapLimit","$constrainWrapLimit","getWrapLimit","setWrapLimit","limit","getWrapLimitRange","foldLineBefore","wrapData","walkTokens","$getDisplayTokens","PLACEHOLDER_START","PLACEHOLDER_BODY","$computeWrapSplits","displayLength","lastSplit","lastDocSplit","isCode","$wrapAsCode","indentedSoftWrap","$indentedSoftWrap","maxIndent","addSplit","indentation","SPACE","TAB","TAB_SPACE","getWrapIndent","minSplit","PUNCTUATION","CHAR_EXT","CHAR","maxScreenColumn","screenColumn","getRowLength","getRowLineCount","getRowWrapIndent","getScreenLastRowColumn","documentToScreenColumn","getDocumentLastRowColumn","docColumn","getRowSplitData","screenToDocumentRow","screenToDocumentColumn","rowLength","doCache","maxRow","foldStartRow","wrapRow","screenRowOffset","getScreenLength","screenRows","$getWidgetScreenLength","$setFontMetrics","fm","$enableVarChar","getCharacterWidth","wrap","$wrap","firstLineNumber","useSoftTabs","foldStyle","Search","$matchIterator","sr","sc","er","ec","skipCurrent","findAll","needle","$assembleRegExp","$isMultiLine","prevRange","replacement","preserveCase","$disableFakeMultiline","caseSensitive","$supportsUnicodeFlag","wholeWord","wordBoundary","firstChar","needleArray","lastChar","addWordBoundary","$assembleMultilineRegExp","backwards","forEachInLine","MultiHashHandler","$singleCommand","commandKeyBinding","addCommands","addCommand","removeCommand","bindKey","_buildKeyHash","keepCommand","ckb","keyId","cmdGroup","keyPart","chain","binding","parseKeys","_addCommandToBinding","removeCommands","bindKeys","keyList","$keyChain","isDefault","HashHandler","CommandManager","byName","$checkCommandState","isAvailable","returnValue","toggleRecording","$inReplay","recording","macro","$addCommandToMacro","oldMacro","replay","trimMacro","mac","description","showSettingsMenu","showErrorMarker","scrollIntoView","centerSelection","gotoLine","prompt","$type","multiSelectAction","getAllRanges","findNext","findPrevious","aceCommandGroup","navigateFileStart","navigateUp","times","navigateFileEnd","navigateDown","navigateWordLeft","navigateLineStart","navigateLeft","navigateWordRight","navigateLineEnd","navigateRight","selectPageDown","scrollPageDown","gotoPageDown","selectPageUp","scrollPageUp","gotoPageUp","jumpToMatching","$copyWithEmptySelection","$handlePaste","duplicateSelection","sortLines","modifyNumber","copyLinesUp","copyLinesDown","removeToLineStart","removeToLineEnd","removeWordLeft","removeWordRight","blockOutdent","blockIndent","splitLine","transposeLetters","transposeSelections","autoIndent","openLink","firstLineEndCol","selectedCount","insertLine","curLine","newRanges","exitMultiSelectMode","LineWidgets","widgetManager","updateOnChange","renderWidgets","measureWidgets","_changedWidgets","$onChangeEditor","updateOnFold","_inDocument","removeLineWidget","$updateRows","noWidgets","$oldWidget","$registerLineWidget","addLineWidget","zIndex","coverGutter","pixelHeight","$fold","onWidgetChanged","w1","getWidgetsAtRow","updateFull","changedWidgets","fixedWidth","ceil","coverLine","gutterWidth","fullWidth","padding","scrollBar","GutterKeyboardHandler","gutterLayer","activeRowIndex","activeLane","annotationTooltip","$onGutterKeyDown","$blurGutter","isRowVisible","scrollToLine","$rowToRowIndex","$cursorCell","nearestFoldIndex","$findNearestFoldWidget","nearestAnnotationIndex","$findNearestAnnotation","$focusAnnotation","$focusFoldWidget","$handleGutterKeyboardInteraction","GutterKeyboardEvent","lane","$switchLane","$rowIndexToRow","rowFoldingWidget","$blurFoldWidget","cells","childNodes","$moveFoldWidgetDown","$moveAnnotationDown","$moveFoldWidgetUp","$moveAnnotationUp","$blurAnnotation","$isFoldWidgetVisible","isRowFullyVisible","isIconVisible","$getFoldWidget","$isAnnotationVisible","$getAnnotation","foldWidget","keyboardFocusClassName","desinationLane","annotationIndex","foldWidgetIndex","cell","gutterKeyboardHandler","getKey","getRow","isInAnnotationLane","isInFoldLane","defaultCommands","Editor","getContainerElement","getTextAreaContainer","textarea","keyBinding","$search","$historyTracker","$initOperationListeners","_$emitInputEvent","setSession","$opResetTimer","$lastSel","commandEvent","prevOp","previousCommand","scrollSelectionIntoView","animateScrolling","sel","$mergeUndoDeltas","prev","mergeableCommands","$mergeableCommands","shouldMerge","mergeNextCommand","sequenceStartTime","keyboardHandler","$keybindingId","oldSession","$onDocumentChange","$onTokenizerUpdate","$onChangeTabSize","$onChangeWrapLimit","$onChangeWrapMode","$onChangeFold","$onChangeFrontMarker","$onChangeBackMarker","$onChangeBreakpoint","$onChangeAnnotation","$onCursorChange","$onScrollTopChange","$onScrollLeftChange","$onSelectionChange","onDocumentChange","onChangeMode","onTokenizerUpdate","onChangeTabSize","onChangeWrapLimit","onChangeWrapMode","onChangeFrontMarker","onChangeBackMarker","onChangeBreakpoint","onChangeAnnotation","onCursorChange","onScrollTopChange","onScrollLeftChange","onSelectionChange","oldEditor","getSession","resize","onResize","getTheme","getFontSize","setFontSize","$highlightBrackets","$highlightPending","$bracketHighlight","markerIds","$getDirectionForHighlight","tagNamesRanges","getMatching","markerType","getHighlightIndentGuides","$textLayer","$highlightIndentGuide","$isFocused","showCursor","visualizeFocus","hideCursor","visualizeBlur","$cursorChange","updateCursor","$updateHighlightActiveLine","updateLines","scrollToY","scrollToX","$highlightActiveLine","$selectionStyle","$selectionColorConflict","$maxLines","$minLines","$highlightLineMarker","$selectionMarker","$highlightSelectedWord","$getSelectionHighLightRegexp","wordWithBoundary","updateFrontMarkers","updateBackMarkers","updateBreakpoints","updateText","getSelectedText","nl","copyLine","inVirtualSelectionMode","isFullLine","getBehavioursEnabled","lineState","shouldOutdent","$enableAutoIndent","lineIndent","selectedRange","currIndent","prevLineState","composition","applyComposition","forEachSelection","setScrollSpeed","getScrollSpeed","setDragDelay","setSelectionStyle","setHighlightActiveLine","shouldHighlight","getHighlightActiveLine","setHighlightGutterLine","getHighlightGutterLine","setHighlightSelectedWord","getHighlightSelectedWord","setAnimatedScroll","shouldAnimate","getAnimatedScroll","getShowInvisibles","setDisplayIndentGuides","getDisplayIndentGuides","setHighlightIndentGuides","setShowPrintMargin","showPrintMargin","getShowPrintMargin","setPrintMarginColumn","getPrintMarginColumn","setBehavioursEnabled","enabled","setWrapBehavioursEnabled","setShowFoldWidgets","getShowFoldWidgets","setFadeFoldWidgets","fade","getFadeFoldWidgets","new_range","setGhostText","removeGhostText","originalRange","$getSelectedRows","getNumberAt","_numberRx","amount","charRange","isFinite","nr","fp","decimals","nnr","toFixed","replaceRange","toggleWord","currWordStart","wordParts","curLength","itLength","that","reg","wordPairs","$toggleWordPairs","negate","firstCondition","res","findLinkAt","columnPosition","previousPosition","currentPosition","wordParts_1","wordParts_1_1","endPoint","moved","totalDiff","rangeIndex","subRows","compositionState","showComposition","setCompositionText","hideComposition","getFirstVisibleRow","getLastVisibleRow","getFirstFullyVisibleRow","getLastFullyVisibleRow","$getVisibleRowCount","getScrollBottomRow","getScrollTopRow","$moveByPage","scrollToRow","center","animate","alignCursor","getCursorPositionScreen","expand","tokenCount","matchType","bracketType","brackets","tagsRanges","lineNumber","navigateTo","replaced","$tryReplace","replaceAll","getLastSearchOptions","newRange","revealRange","setAutoScrollEditorIntoView","shouldScroll","$scrollAnchor","scrollAnchor","onChangeSelection","onBeforeRender","onAfterRender","searchBox","$pixelPos","$cursorStyle","cursorLayer","setSmoothBlinking","isBlinking","selectionStyle","highlightActiveLine","highlightSelectedWord","copyWithEmptySelection","behavioursEnabled","wrapBehavioursEnabled","enableAutoIndent","autoScrollEditorIntoView","showLineNumbers","setShowLineNumbers","$loop","CHANGE_GUTTER","$relativeLineNumbers","relativeNumberRenderer","relativeLineNumbers","$showLineNumbers","$updatePlaceholder","hasValue","$composition","placeholderNode","$placeholder","content","blurCommand","focusOnEnterKeyup","customScrollbar","hScrollBarAlwaysVisible","vScrollBarAlwaysVisible","highlightGutterLine","animatedScroll","printMarginColumn","printMargin","fadeFoldWidgets","showFoldWidgets","displayIndentGuides","highlightIndentGuides","showGutter","fontFamily","maxLines","minLines","scrollPastEnd","fixedWidthGutter","hasCssTransforms","maxPixelHeight","useResizeObserver","useSvgGutterIcons","showFoldedAnnotations","getText","lastLineNumber","$renderer","Lines","canvasHeight","cellCache","$offsetCoefficient","moveContainer","firstRowScreen","pageChanged","oldConfig","newConfig","computeLineTop","screenTop","screenPage","computeLineHeight","$cacheCell","fragment","insertAdjacentElement","createCell","initElement","Gutter","parentEl","$showFoldWidgets","$updateAnnotations","rowInfo","annoText","annoType","gutterOffset","oldLastRow","$updateCursorRow","onCreateCell","$renderCell","$updateGutterWidth","gutterRenderer","$firstLineNumber","lastLineText","$fixedWidth","$padding","$computePadding","$highlightGutterLine","$cursorRow","updateLineHighlight","scrollLines","$renderLines","textNode","annotationNode","annotationIconNode","decorations","rowText","foldClass","isClosedFold","foldAnnotationClass","annotationInFold","foldRange","getShowLineNumbers","paddingLeft","borderRightWidth","paddingRight","Marker","setPadding","setMarkers","markers","elt","css","$getTop","drawFullLineMarker","drawScreenLineMarker","drawTextMarker","drawMultiLineMarker","childElementCount","lastChild","stringBuilder","extraStyle","curr","lineRange","range1","drawBidiSingleLineMarker","radiusClass","extraLength","textTokens","Set","isTextToken","tokenType","has","Text","$updateEolChar","EOL_CHAR","EOL_CHAR_LF","EOL_CHAR_CRLF","margin","getLineHeight","$fontMetrics","measure","$pollSizeChanges","checkForSizeChanges","$pollSizeChangesTimer","$computeTabString","showSpaces","showTabs","showEOL","$highlightIndentGuides","tabStr","$tabStrings","span","TAB_CHAR","$indentGuideRe","spaceClass","spaceContent","SPACE_CHAR","tabClass","tabContent","lineElements","lineElementsIdx","heightChanged","lineElement","$renderLine","$renderLinesFragment","lineEl","$useLineGroups","$renderToken","valueFragment","simpleSpace","controlCharacter","cjkSpace","cjk","cloneNode","renderIndentGuide","cols","$highlightIndentGuideMarker","indentLevel","initialIndent","elementIndentLevel","currentIndent","$renderHighlightIndentGuide","$clearActiveIndentGuide","$setIndentGuideActive","$createLineElement","$renderWrappedLine","splitChars","$renderOverflowMessage","$renderSimpleLine","overflowEl","$getFoldLineTokens","lastLineEl","invisibleEl","EOF_CHAR","renderTokens","addTokens","Cursor","isVisible","blinkInterval","smoothBlinking","cursors","addCursor","$updateCursors","$updateOpacity","$startCssAnimation","animationDuration","$isAnimating","$stopCssAnimation","blinking","restartTimer","setBlinkInterval","removeCursor","intervalId","timeoutId","$isSmoothBlinking","blink","onScreen","isCursorInView","pixelPos","$selectionMarkers","cursorIndex","drawCursor","$setOverwrite","MAX_SCROLL_H","Scrollbar","classSuffix","setVisible","skipEvent","onScroll","coeff","VScrollBar","scrollHeight","$scrollbarWidth","$minWidth","setHeight","setScrollHeight","setInnerHeight","HScrollBar","setWidth","setInnerWidth","setScrollWidth","ScrollBar","ScrollBarV","ScrollBarH","VScrollWidth","HScrollHeight","eType","mousePageY","startTop","thumbTop","scrollTopFromThumbTop","thumbHeight","pageHeight","viewHeight","slideHeight","scrollWidth","mousePageX","startLeft","thumbLeft","scrollLeftFromThumbLeft","thumbWidth","pageWidth","viewWidth","slideWidth","RenderLoop","onRender","pending","changes","$recursionLimit","_flush","change","clear","CHAR_COUNT","USE_OBSERVER","ResizeObserver","FontMetrics","$setMeasureNodeStyles","$measureNode","$addObserver","isRoot","visibility","font","$measureSizes","fontWeight","boldSize","charSizes","allowBoldFonts","$observer","observe","setPolling","disconnect","$getZoom","zoom","$initTransformMeasureNodes","transformCoordinates","clientPos","elPos","solve","l1","l2","det","sub","mul","m2","ut","u","f","Decorator","canvas","pixelRatio","heightRatio","canvasWidth","minDecorationHeight","halfMinDecorationHeight","colors","dark","light","$updateDecorators","ctx","getContext","clearRect","priorities","compensateFold","compensateFoldRows","currentY","y1","y2","yCenter","fillStyle","fillRect","GutterLayer","MarkerLayer","TextLayer","CursorLayer","HScrollBarCustom","VScrollBarCustom","editorCss","VirtualRenderer","onGutterResize","$markerBack","textLayer","$markerFront","$horizScroll","$vScroll","$scrollAnimation","scrollMargin","updateCharacterSize","$size","scrollerHeight","scrollerWidth","$dirty","minHeight","v","$renderChanges","defaultView","CHANGE_FULL","$addResizeObserver","$allowBoldFonts","$updatePrintMargin","onChangeNewLineMode","$changedLines","CHANGE_LINES","CHANGE_TEXT","CHANGE_MARKER","updateFontSize","$updateSizeAsync","resizing","$updateCachedSize","$resizeTimer","$changes","$customScrollbar","$updateCustomScrollbar","$extraHeight","oldSize","CHANGE_SIZE","CHANGE_SCROLL","$showGutter","$computeLayerConfig","availableWidth","$showPrintMargin","$printMarginColumn","$animatedScroll","getShowGutter","setShowGutter","$printMarginEl","containerEl","posTop","posLeft","setScrollMargin","sm","setMargin","getHScrollBarAlwaysVisible","$hScrollBarAlwaysVisible","setHScrollBarAlwaysVisible","alwaysVisible","getVScrollBarAlwaysVisible","$vScrollBarAlwaysVisible","setVScrollBarAlwaysVisible","$updateScrollBarV","$scrollPastEnd","$updateScrollBarH","freeze","$frozen","unfreeze","CHANGE_H_SCROLL","st","$scrollDecorator","$updateLines","CHANGE_CURSOR","CHANGE_MARKER_FRONT","CHANGE_MARKER_BACK","$autosize","desiredHeight","$maxPixelHeight","$gutterWidth","hideScrollbars","longestLine","$getLongestLine","horizScroll","hScrollChanged","vScrollBefore","vScrollChanged","firstRowHeight","lineCount","charCount","$viewMargin","newLeft","newTop","topMargin","bottomMargin","$stopAnimation","currentTop","currentLeft","twoCharsWidth","alignment","$calcSteps","fromValue","toValue","x_min","STEPS","steps","initialScroll","oldSteps","$timer","endAnimation","scrollTo","canvasPos","$hasCssTransforms","$blockCursor","$useTextareaForIME","addToken","removeExtraToken","insertPosition","textLines","$ghostText","$ghostTextWidget","pixelPosition","ghostTextHeight","newToken","$themeId","$theme","setMouseCursor","attachToShadowRoot","$resizeObserver","contentRect","workerUrl","Worker","blob","Blob","blobBuilder","BlobBuilder","WebKitBlobBuilder","MozBlobBuilder","getBlob","$workerBlob","blobURL","URL","webkitURL","createObjectURL","WorkerClient","worker","$createWorkerFromOldConfig","$sendDeltaQueue","changeListener","onMessage","callbackId","callbacks","onmessage","topLevelNamespaces","classname","importScripts","nameToUrl","toUrl","normalizePath","$normalizePath","tlns","deltaQueue","onerror","$doc","cmd","emit","ex","attachToDocument","q","UIWorkerClient","main","emitSync","sender","messageBuffer","workerClient","processNext","setEmitSync","Main","PlaceHolder","others","mainClass","othersClass","$onUpdate","onUpdate","$others","undoStack","$undostack","$undoStackDepth","setup","other","showOtherMarkers","othersActive","hideOtherMarkers","updateAnchors","lengthDiff","inMainRange","distanceFromStart","newPos","otherPos","updateMarkers","updateMarker","undosRequired","isSamePoint","alt","ctrl","accel","selectionMode","isMultiSelect","mouseX","mouseY","screenAnchor","screenCursor","$enableJumpToDef","$blockSelectEnabled","addSelectionMarker","oldRange","removeSelectionMarker","tmpSel","rectSel","blockSelect","newCursor","removeSelectionMarkers","rectangularRangeBlock","updateSelectionMarkers","onSelectionInterval","selectMoreLines","selectMore","joinSelections","splitIntoLines","alignCursors","multiSelectCommands","getSelectionMarkers","$blockChangeEvents","$onAddRange","$onRemoveRange","mergeOverlappingRanges","lastRange","$initRangeList","toggleBlockSelection","includeEmptyLines","xBackwards","startOffsetX","endOffsetX","docEnd","yBackwards","MultiSelect","$multiselectOnSessionChange","$onMultiSelect","$onSingleSelect","onSessionChange","$checkMultiselectChange","altCursor","altDown","addAltCursorListeners","selectionMarkerCount","markerList","$onMultiSelectExec","inVirtualMode","keepOrder","$byLines","cmdResult","anim","buf","additive","skip","screenLead","toRemove","words","stopAtFirst","sameRowRanges","maxCol","minSpace","spaceOffsets","spaceOffset","fr","lr","guessRange","$reAlignText","forceLeft","startW","textW","endW","isLeftAligned","isRightAligned","alignLeft","enableMultiselect","enableBlockSelect","FoldMode","foldingStartMarker","foldingStopMarker","indentationBlock","startLevel","openingBracketBlock","closingBracketBlock","oldWidget","gutterAnno","comparator","binarySearch","matched","findAnnotations","arrow","onmousedown","Renderer","edit","_id","env","tagName","oldNode","createEditSession","is","singletonTags","blockTags","formatOptions","lineBreaksAfterCommasInCurlyBlock","beautify","nextToken","tabString","breakBefore","spaceBefore","spaceAfter","lastDepth","lastIndent","unindent","roundDepth","curlyDepth","curRow","rowsToAdd","indentNextLine","inTag","inCSS","inBlock","parents","caseBody","trimNext","trimLine","trimCode","trimRight","trimLeft","searchboxCss","SearchBox","showReplaceForm","spellcheck","title","setEditor","searchRange","$syncOptions","$initElements","sb","replaceBox","searchOption","replaceOption","regExpOption","caseSensitiveOption","wholeWordOption","searchInput","replaceInput","searchCounter","activeInput","$searchBarKb","setSearchRange","searchRangeMarker","checked","noMatch","updateCounter","MAX_COUNT","findPrev","replaceAndFindNext","active","$closeSearchBarKb","isReplace","supportType","supportFunction","supportConstant","supportConstantColor","supportConstantFonts","numRe","pseudoElements","pseudoClasses","CssHighlightRules","keywordMapper","strings","escapes","MatchingBraceOutdent","propertyMap","CssCompletions","completionsDefined","defineCompletions","inParens","getPropertyValueCompletions","getPropertyCompletions","skipSemicolon","caption","snippet","CssBehaviour","BaseFoldMode","commentRegex","singleLineBlockCommentRe","tripleStarBlockCommentRe","startRegionRe","_getFoldWidgetBase","forceMultiline","getCommentRegionBlock","getSectionRange","startIndent","subRange","CStyleFoldMode","$outdent","$completer","snippetFileId","DocCommentHighlightRules","getTagRule","getStartRule","getEndRule","GolangHighlightRules","stringEscapeRe","tokenizedLine","JsDocCommentHighlightRules","identifierRe","JavaScriptHighlightRules","escapedRe","comments","noES6","no_regex","jsx","JSX","tagRegex","jsxTag","jsxJsRule","jsxAttributes","reference","endState","results","JsonHighlightRules","JsxHighlightRules","buildinConstants","reserved","PythonHighlightRules","strPre","strRawPre","strFormatPre","strRawFormatPre","integer","intPart","pointFloat","floatNumber","stringEscape","PythonFoldMode","outdents","XmlHighlightRules","normalize","processing_instruction","doctype","int_subset","cdata","attr_reference","tag_whitespace","whitespace","attribute_value","embedTagRules","XmlBehaviour","rightSpace","tokenEndColumn","tokenRow","tokenColumn","voidElements","nextIndent","optionalEndTags","Tag","selfClosing","_getFirstTagInLine","_findEndTagInLine","getCommentFoldWidget","tags","XmlFoldMode","___CSS_LOADER_EXPORT___","cssWithMappingToString","needLayer","media","dedupe","supports","layer","alreadyImportedModules","_k","cssMapping","btoa","base64","unescape","encodeURIComponent","stringify","sourceMapping","createRoot","hydrateRoot","hasElementType","Element","hasMap","Map","hasSet","hasArrayBuffer","ArrayBuffer","isView","equal","it","entries","flags","valueOf","$$typeof","stylesInDOM","getIndexByIdentifier","identifier","modulesToDom","idCountMap","identifiers","indexByIdentifier","sourceMap","references","updater","addElementStyle","byIndex","api","domAPI","newObj","lastIdentifiers","newList","newLastIdentifiers","_i","_index","memo","styleTarget","HTMLIFrameElement","contentDocument","getTarget","setAttributes","styleElement","nonce","insertStyleElement","styleTagTransform","removeStyleElement","styleSheet","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","loaded","__webpack_modules__","amdD","getter","__esModule","definition","prop","toStringTag","nmd","paths","nc","createContext","Icon","family","rest","getCSSClasses","propTypes","isRequired","ItemTrigger","collapsed","toggleChange","useContext","iconType","trigger","onClick","AccordionItem","collapsedProp","ref","setCollapsed","useState","useMemo","expandToContent","contextValue","Provider","defaultProps","forwardRef","AccordionItemHeader","usearrowastrigger","useRef","useEffect","current","savedCallback","useInterval","savedHandler","eventListener","getSize","ComponentSize","setComponentSize","handleResize","useCallback","useLayoutEffect","resizeObserver","Collapsible","contentContainer","collapseWrapper","refContainerSize","contentContainerStyle","setContentContainerStyle","onWindowResize","CSSTransition","onEnter","onExit","in","classNames","AccordionItemContent","Accordion","Item","Header","Content","Button","customButton","iconFamily","iconPosition","iconOnly","noStyle","getCssClasses","cssClasses","sizeClass","disabledClass","displayClass","themeClass","iconOnlyClass","noStyleClass","getButtonIcon","buttonType","Fragment","cloneElement","getButtonType","ButtonGroup","wait","immediate","callNow","Loader","withbackground","Message","onClose","noMargin","Chart","areaStyleColors","dataLoaded","hasData","series","zoomStart","zoomEnd","seriesConfig","noDataComponent","zoomColors","tykChartInstance","setTykChartInstance","chartWrapperRef","lineBarChart","defaultOpts","fromJS","color","toolbox","orient","itemSize","showTitle","feature","dataZoom","dataBackground","lineStyle","areaStyle","handleStyle","textStyle","borderColor","fillerColor","legend","axisPointer","grid","containLabel","xAxis","boundaryGap","axisLine","axisTick","yAxis","axisLabel","animationEasing","seriesDefault","LinearGradient","smooth","symbolSize","pieChart","formatter","radius","avoidLabelOverlap","animationType","labelLine","normal","length2","geoChart","dispose","eventCallBack","debouncedMethod","debounce","getZr","prevInstance","prevOption","prevType","prevSeries","equals","selectedType","selectedOptions","selectedSeries","finalOpts","mergeDeep","toJS","entry","seriesData","buildChartOptions","dispatchAction","dataZoomSelectActive","seriesIndex","dataIndex","prevZoomStart","prevZoomEnd","startValue","endValue","chartHasData","getStyle","ToastMessage","handleClose","itemIndex","ToastContainer","notify","updateNotifications","msgID","random","prevMessages","onMessageClosed","messageToBeRemoved","toast","fn","createNotification","render","bindNotify","danger","CopyToClipboard","txtRef","createRef","onKeyUp","ModalFooter","ModalBody","Modal","disableCloseCommands","opened","showBackdrop","restProps","modalClasses","backdropClasses","themeIcon","onKeyDown","Body","Footer","Title","Confirm","confirmBtnText","cancelBtnText","setOpen","setCallback","cancelCallback","setCancelCallback","callbackFunc","cancelCallbackFunc","beforeCallback","FixedWrapper","showShadow","fixedWrapperRef","attachShadow","scrollY","debouncedAttachShadow","InfiniteScroller","hasMore","initialLoad","loadMore","pageNumber","refChild","showLoader","setShowLoader","containerRef","refChildSize","shouldLoad","loadMoreData","prevPageNumber","scrollHandler","prevRefChildSize","PropTypes","oneOfType","arrayOf","bool","instanceOf","FloatingContainer","forceDisplay","displayAxis","preferredPosition","infiniteScrollerConfig","localRef","floatingContainerRef","contentWrapperRef","schedulePositionUpdate","topSpace","bottomSpace","leftSpace","hasTopSpace","hasBottomSpace","hasLeftSpace","hasRightSpace","positionedVerticallyFitsInViewport","positionedHorizontallyFitsInViewport","determineDisplay","targetPosition","topPos","maxWidth","adjustPosition","createPortal","InfoNote","ListItem","List","labelwidth","flexBasis","styleCopy","getListStyle","NavBar","align","pre","subtitle","withTabs","subtitleContent","NavigationItem","Navigation","PortalContext","PanelBody","noPadding","Consumer","portalContext","collapsable","PanelFooter","PanelHeader","Component","HeaderTag","onToggle","collapsibleIconPosition","Panel","onToggleCollapse","collapsedState","setCollapsedState","handleToggle","panelTheme","collapsbleIconPosition","toggleCollapse","Pill","RevealPanelService","setRefs","wrapper","panel","unbindEvents","bindEvents","ensureRefs","mouseDown","initialRect","initialEvent","isPrimaryMouseButtonDown","newY","finalHeight","notifyListeners","buttons","heightVal","reason","isHidden","deinit","RevealPanelHeaderLeft","RevealPanelHeaderRight","mergeClasses","RevealPanel","onHeightChange","parentSelector","contentStyle","contentClassName","gutterClassName","wrapperClassName","panelRef","gutterRef","wrapperRef","panelService","useImperativeHandle","headerLeft","headerRight","contents","child","HeaderLeft","HeaderRight","TabsContext","TabContent","addTab","hideTab","updateTab","showTab","selectedPath","tabData","tabsId","tabExists","rendered","hideTabContent","tabs","tempTabData","prevTabData","TabContext","Tab","tabsContext","tabContext","setPath","tempPath","Tabs","onTabChange","setTabs","setSelectedPath","setRendered","initialPath","setInitialPath","setCurrentSelectedPath","tempRendered","collapsible","prevTabs","tempTabs","tabsState","tempTabsState","toggleTab","getTabCssClass","tabId","genTabs","currentTabs","updateTabsList","icon","closable","isOpened","additionalClickParents","isActive","setIsActive","tooltipRef","activeEvents","onMouseEnter","onMouseLeave","handleDocumentClick","TextEllipsis","getPagesArr","nrOfPages","selectedPage","pagesArr","currentNr","pageNr","totalNrOfPages","Pagination","super","prevProps","pagesArray","pageKey","getDerivedStateFromProps","nextProps","getPageCssClass","getPageKey","goToPage","tableContext","HeaderCell","sortable","sortOrder","setSortOrder","sendMessage","setSelectAll","columns","selectable","generateSelectable","allowSelectAll","Checkbox","displayError","displayNote","note","Cell","styling","events","Row","SelectableCheckbox","defaultChecked","Table","noDataMessage","loading","infiniteScrolling","onChangeMsg","setOnChangeMsg","itemsListRef","selectAllRows","order","selectedRow","selectRow","pagination","setPagination","getTable","totalPages","num","nrItemsOnPage","perPage","Column","PureComponent","colSize","colOffsets","cSize","cOffset","nogutters","DropdownContext","DropdownItem","customdropdownitem","eventKey","dropdownItemCLick","dropdownContext","itemProps","onSelectItem","selectedItem","showCheckmark","Dropdown","isElemInRightView","dropdownWidth","isElemInBottomView","dropdownHeight","elHeight","dropdownRef","dropdownListRef","dropdownButtonRef","toggleDropdown","handleClickOutside","componentDidMount","getStyles","componentDidUpdate","closeDropdown","componentWillUnmount","itemId","closeOnSelect","onSelect","selectedItemProps","dropdownEl","offsetPosition","customTop","customLeft","getWrapperCssClasses","btnGroup","btnGroupSize","btnTheme","hasCustomContent","listclassnames","getBtnTitle","btnTitle","stopButtonTextChange","appendTo","btnClassName","btnSize","customBtnTitle","showDropdownIcon","showTriggerButton","DropdownWrapperTag","CodeEditor","disableValidation","finalSetOptions","getCodeEditorError","getLabelStyles","getNonLabelWidth","handleOnChange","handleOnBlur","htmlFor","editorProps","$blockScrolling","editorInstance","getStateSelectedValues","multiple","closeList","openList","filterByName","itemValue","inputValue","stateSelectedValues","searchText","comboboxRef","valuesListRef","inputRef","textRef","focusInput","handleItemsNavigation","handleComboboxDropdownClick","handleListItemClick","handlePillRemoveClick","manageSelectedTags","setInputWidth","unBindEvents","allowCustomValues","filteredValues","filterValues","tempState","getSearchText","methodName","previousState","getSelectedIndex","getListItemCssClasses","getComboboxListCssClass","themes","iTheme","getInputError","elWidth","getComboboxDisplayData","reduce","prevValue","tempValue","selectedIndex","selectedValues","isInInitialValues","removeSelectedValue","addSelectedValue","manageSelectedValues","tempSelectedValues","tempStateSelectedValues","ok","searchItem","cursorNext","CustomListComponent","onKeyPress","visbility","autoFocus","Combobox","tagSeparators","addTagOnBlur","renderValue","valueOverflow","dummyElementRef","setInputValue","inputWidth","entryFieldOnChange","dummy","triggerAction","textValue","isPlaceholder","renderCustomValue","entryFieldOnKeyDown","listRef","searchValue","activeItem","renderListItem","showSearch","block","every","isNoneSelected","renderSelectAllOption","normalizeValue","existingVal","getValueFromProp","Combobox2","propValue","propValues","maxProp","matchItemFn","renderList","renderListProp","onBeforeChange","floatingContainerConfig","expandMode","displayDropdownTrigger","required","validateOnChange","rootRef","comboboxControlRef","setValues","setSearchValue","setActiveItem","setIsOpened","valuesExpanded","setValuesExpanded","localValidationError","setLocalValidationError","getThemeClasses","getFilteredValues","openDropdown","updateSearchValue","newSearchValue","fv","isValidValue","newValues","localError","updateValue","addTag","listValueIndex","lv","finalValue","selectValue","moveUpActiveItem","visibleItems","activeIndex","moveDownActiveItem","executeTriggerAction","removeTag","onTagMessage","selectAllValues","sv","nv","vals","valuesElement","updateScroll","mobserver","MutationObserver","robserver","childList","subtree","currentValuesClasses","onClickCapture","triggerElement","locals","DatePicker","onOpen","pickerInstance","setPickerInstance","dateRef","hasValueChanged","prevDate","currentDate","getTime","diffDates","date","onDateChange","dateValue","instance","defaultDate","setDate","openCalendar","inputStyle","addonStyle","getInputField","dateFormat","_typeof","requiredArgs","isDate","toDate","argument","argStr","NaN","toInteger","dirtyNumber","startOfUTCISOWeek","dirtyDate","day","getUTCDay","setUTCDate","getUTCDate","setUTCHours","getUTCISOWeekYear","year","getUTCFullYear","fourthOfJanuaryOfNextYear","setUTCFullYear","startOfNextYear","fourthOfJanuaryOfThisYear","startOfThisYear","defaultOptions","getDefaultOptions","startOfUTCWeek","_ref","_ref2","_ref3","_options$weekStartsOn","_options$locale","_options$locale$optio","_defaultOptions$local","_defaultOptions$local2","weekStartsOn","locale","RangeError","getUTCWeekYear","_options$firstWeekCon","firstWeekContainsDate","firstWeekOfNextYear","firstWeekOfThisYear","addLeadingZeros","targetLength","sign","signedYear","month","getUTCMonth","getUTCHours","getUTCMinutes","getUTCSeconds","numberOfDigits","milliseconds","getUTCMilliseconds","G","localize","era","ordinalNumber","unit","lightFormatters","Y","signedWeekYear","weekYear","Q","quarter","M","week","firstWeek","startOfUTCWeekYear","getUTCWeek","I","isoWeek","fourthOfJanuary","startOfUTCISOWeekYear","getUTCISOWeek","D","dayOfYear","timestamp","setUTCMonth","difference","getUTCDayOfYear","E","dayOfWeek","localDayOfWeek","isoDayOfWeek","dayPeriodEnumValue","dayPeriod","hours","H","K","S","X","_localize","timezoneOffset","_originalDate","getTimezoneOffset","formatTimezoneWithOptionalMinutes","formatTimezone","formatTimezoneShort","z","originalDate","T","dirtyDelimiter","absOffset","minutes","delimiter","dateLongFormatter","pattern","formatLong","timeLongFormatter","P","dateTimeFormat","matchResult","datePattern","timePattern","dateTime","protectedDayOfYearTokens","protectedWeekYearTokens","throwProtectedError","format","formatDistanceLocale","lessThanXSeconds","one","xSeconds","halfAMinute","lessThanXMinutes","xMinutes","aboutXHours","xHours","xDays","aboutXWeeks","xWeeks","aboutXMonths","xMonths","aboutXYears","xYears","overXYears","almostXYears","buildFormatLongFn","defaultWidth","formats","full","long","medium","short","formatRelativeLocale","lastWeek","yesterday","today","tomorrow","nextWeek","buildLocalizeFn","dirtyIndex","valuesArray","formattingValues","defaultFormattingWidth","_defaultWidth","_width","argumentCallback","_options","rem100","narrow","abbreviated","wide","am","pm","midnight","noon","morning","afternoon","evening","night","buildMatchFn","matchPattern","matchPatterns","defaultMatchWidth","matchedString","parsePatterns","defaultParseWidth","object","findKey","valueCallback","parsePattern","parseResult","any","formatDistance","tokenValue","addSuffix","comparison","formatRelative","_date","_baseDate","formattingTokensRegExp","longFormattingTokensRegExp","escapedStringRegExp","doubleQuoteRegExp","unescapedLatinCharacterRegExp","dirtyFormatStr","_ref4","_options$locale2","_options$locale2$opti","_ref5","_ref6","_ref7","_options$locale3","_options$locale3$opti","_defaultOptions$local3","_defaultOptions$local4","formatStr","defaultLocale","isValid","utcDate","UTC","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","getMilliseconds","getTimezoneOffsetInMilliseconds","dirtyAmount","addMilliseconds","subMilliseconds","formatterOptions","firstCharacter","longFormatter","useAdditionalWeekYearTokens","useAdditionalDayOfYearTokens","isProtectedDayOfYearToken","getMainFormValue","components","mainFormValue","submitButtonRef","submitForm","errors","mainError","addValueOnFieldChange","getMainFormButtonWidth","createRefs","propsComponents","stateComponents","getFormCssClasses","noLabels","getButtonClassName","buttonStyle","displayType","getComponentsError","validateValue","errorPersist","validatorsNames","validate","validator","validationmessages","hasMainFormErrors","resetForm","showMainError","onSubmit","validationmessage","buttonName","ComponentName","EditableListForm","getItemListValue","getListItemCssClass","buttonWidth","handleFormSubmit","dropdownListItemRef","getListItemsCssClass","getFormInputKey","getListItemText","itemData","separator","setItemEditMode","closeListItems","editMode","isInList","addValues","removeListItem","removedItem","valueArr","triggerOnChange","handleItemUpdate","handleChildrenOnChange","tempItemValue","nextValue","genListItem","clonedComponents","genList","appendToElement","formButtonTitle","formButtonStyle","EditableList","addButtonName","onAddRow","ListHeader","fields","field","FieldsList","onDelete","rowIndex","tempField","EditableList2","hideOnEmpty","internalErrors","setInteranlErrors","updateRowValue","fieldIndex","componentValue","tempValueArr","tempErrors","tempFieldError","Components","internalError","setInternalError","onFieldChange","errorMsg","deleteRow","rowValues","colValue","flat","hasErrors","FileInput","clearValue","fileInputRef","getFileInputError","getFileInputComponent","accept","omitValue","files","getAddon","initValue","stateValue","isfield","inputgroupaddonleft","inputgroupaddonright","getInputGroupAddon","getInputComponent","autoComplete","Input","Input2","getInputElement","MultiselectItem","isInSearchValue","fieldsToSearchOn","itemType","itemDisplayTemplate","maxSelections","nrSelectedItems","onGetItemDetails","parentContext","details","detailsDisplayTemplate","getItemContent","getItemLoader","MultiselectPanel","searchOnChange","itemChanged","getItemIndex","getItemsList","itemsPageNumber","itemsNrPages","loadMoreItems","serverLoad","renderListItems","onCustomSearch","items","cloneItems","clonedItem","customSearch","panelType","inputPlaceholder","noItemsMessage","diffObjects","Multiselect","valueChange","itemsChange","getItemDetails","getMultiselectError","allItems","valueClone","entityNamePlural","Radio","nospace","Select","getSelectComponent","getSelectError","selectedValue","SelectableList","checkboxalticon","itemTemplate","primaryKey","handleOnSelect","newSelectedItems","structuredClone","elemPosition","getListItemCssClassName","tvalue","Textarea","ToggleItem","getNotchCssClasses","itemRef","saveSelectedRef","onItemSelected","ToggleItemWrapper","Toggle","onDark","separated","selectedRef","setSelectedRef","notchRef","toggleRef","positionNotch","selectedWidth","stringToTokenString","tempStr","setCursorPos","StringInput","setShowOptions","dropdownTriggerKey","setStringBuilderHeight","stringBuilderHeight","setTokenString","tokenString","showOptions","setTokenValue","setInputInFocus","invalidTokenRegex","contextMaxLength","isPasteEvent","setIsPasteEvent","tokenLen","addCharacterToTokenString","newTokenValue","newTokenizedString","spellCheck","selectedText","lastToken","lastCharsInString","invalidToken","newTokenStr","stringBeforeCursor","stringAfterCursor","tokenStringForStringBeforeCursor","splitTokens","handleBackSpace","tokenStringForStringAfterCursor","firstToken","handleDelete","substitute","newStr","handleTextSelection","handleKeyDown","maxLength","pasteString","newTokenString","desc","InvalidToken","findInvalidTokenSubstitute","TokenizedString","hasDuplicates","allTokens","matchedOption","matchedTokens","tkn","OptionsList","handleOptionSelection","allowSearch","initialSearchValue","filterValue","setFilterValue","filteredOptions","setFilteredOptions","newFilteredOptions","StringBuilderFooter","inputInFocus","marginTop","StringBuilder","setContentMaxLength","setTokens","prevTokenValue","setPrevTokenValue","setInitialSearchValue","selectedInvalidToken","setSelectedInvalidToken","prevTokenString","tempVal","splitTokensStr","newHeight","newInput","tokenizedString","FORM_DEBOUNCE","setConfig","getValueFromPath","acc","form","properties","DEFAULT_DEBOUNCE_TIME_MS","myValue","setMyValue","getOnChangeProps","hasIsFieldProp","executeDebounced","valueOrEvent","nodeName","onChangeProps","formError","touched","submitCount","status","componentProps","FieldCodeEditor","FieldCombobox","getComboboxError","FieldDropdown","FieldPagination","FieldCombobox2","FormDatePicker","getDatePickerError","FieldEditableList","getEditableListError","FieldFileInput","FieldInput","FieldMultiselect","FieldSelect","handleEvent","FieldSelectableList","FieldToggle"],"sourceRoot":""} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index d19aaa31..6dfcce0c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -206,17 +206,17 @@ } }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.15.tgz", - "integrity": "sha512-jKkwA59IXcvSaiK2UN45kKwSC9o+KuoXsBDvHvU/7BecYIp8GQ2UwrVvFgJASUT+hBnwJx6MhvMCuMzwZZ7jlg==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.23.5.tgz", + "integrity": "sha512-QELlRWxSpgdwdJzSJn4WAhKC+hvw/AtHbbrIoncKHkhKKR/luAlKkgBDcri1EzWAo8f8VvYVryEHN4tax/V67A==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-function-name": "^7.22.5", - "@babel/helper-member-expression-to-functions": "^7.22.15", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-member-expression-to-functions": "^7.23.0", "@babel/helper-optimise-call-expression": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.9", + "@babel/helper-replace-supers": "^7.22.20", "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", "@babel/helper-split-export-declaration": "^7.22.6", "semver": "^6.3.1" @@ -1792,9 +1792,9 @@ "dev": true }, "node_modules/@babel/runtime": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.4.tgz", - "integrity": "sha512-2Yv65nlWnWlSpe3fXEyX5i7fx5kIKo4Qbcj+hMO0odwaneFjfXw5fdum+4yL20O0QiaHpia0cYQ9xpNMqrBwHg==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.5.tgz", + "integrity": "sha512-NdUTHcPe4C99WxPub+K9l9tK5/lV4UXIoaHSYgzco9BCyjKAAwzdBI+wWtYqHt7LJdbo74ZjRPJgzVweq1sz0w==", "dependencies": { "regenerator-runtime": "^0.14.0" }, @@ -2994,9 +2994,9 @@ } }, "node_modules/@types/eslint": { - "version": "8.44.7", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.44.7.tgz", - "integrity": "sha512-f5ORu2hcBbKei97U73mf+l9t4zTGl74IqZ0GQk4oVea/VS8tQZYkUveSYojk+frraAVYId0V2WC9O4PTNru2FQ==", + "version": "8.44.8", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.44.8.tgz", + "integrity": "sha512-4K8GavROwhrYl2QXDXm0Rv9epkA8GBFu0EI+XrrnnuCl7u8CWBRusX7fXJfanhZTDWSAL24gDI/UqXyUM0Injw==", "dev": true, "dependencies": { "@types/estree": "*", @@ -3145,9 +3145,9 @@ "dev": true }, "node_modules/@types/node": { - "version": "18.18.13", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.13.tgz", - "integrity": "sha512-vXYZGRrSCreZmq1rEjMRLXJhiy8MrIeVasx+PCVlP414N7CJLHnMf+juVvjdprHyH+XRy3zKZLHeNueOpJCn0g==", + "version": "18.19.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.3.tgz", + "integrity": "sha512-k5fggr14DwAytoA/t8rPrIz++lXK7/DqckthCmoZOKNsEbJkId4Z//BqgApXBUGrGddrigYa1oqheo/7YmW4rg==", "dev": true, "dependencies": { "undici-types": "~5.26.4" @@ -3187,9 +3187,9 @@ "dev": true }, "node_modules/@types/react": { - "version": "17.0.71", - "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.71.tgz", - "integrity": "sha512-lfqOu9mp16nmaGRrS8deS2Taqhd5Ih0o92Te5Ws6I1py4ytHBcXLqh0YIqVsViqwVI5f+haiFM6hju814BzcmA==", + "version": "18.2.42", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.42.tgz", + "integrity": "sha512-c1zEr96MjakLYus/wPnuWDo1/zErfdU9rNsIGmE+NV71nx88FG9Ttgo5dqorXTu/LImX2f63WBP986gJkMPNbA==", "devOptional": true, "dependencies": { "@types/prop-types": "*", @@ -4457,9 +4457,9 @@ } }, "node_modules/browserslist": { - "version": "4.22.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.1.tgz", - "integrity": "sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ==", + "version": "4.22.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.2.tgz", + "integrity": "sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==", "dev": true, "funding": [ { @@ -4476,9 +4476,9 @@ } ], "dependencies": { - "caniuse-lite": "^1.0.30001541", - "electron-to-chromium": "^1.4.535", - "node-releases": "^2.0.13", + "caniuse-lite": "^1.0.30001565", + "electron-to-chromium": "^1.4.601", + "node-releases": "^2.0.14", "update-browserslist-db": "^1.0.13" }, "bin": { @@ -4719,15 +4719,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/c8/node_modules/istanbul-lib-coverage": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", - "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/c8/node_modules/locate-path": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", @@ -4888,9 +4879,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001565", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001565.tgz", - "integrity": "sha512-xrE//a3O7TP0vaJ8ikzkD2c2NgcVUvsEe2IvFTntV4Yd1Z9FVzh+gW+enX96L0psrbaFMcVcH2l90xNuGDWc8w==", + "version": "1.0.30001566", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001566.tgz", + "integrity": "sha512-ggIhCsTxmITBAMmK8yZjEhCO5/47jKXPu6Dha/wuCS4JePVL+3uiDEBuhu2aIoT+bqTOR8L76Ip1ARL9xYsEJA==", "dev": true, "funding": [ { @@ -5028,9 +5019,9 @@ } }, "node_modules/clean-css": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.2.tgz", - "integrity": "sha512-JVJbM+f3d3Q704rF4bqQ5UUyTtuJ0JRKNbTKVEeujCCBoMdkEi+V+e8oktO9qGQNSvHrFTM6JZRXrUvGR1czww==", + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.3.tgz", + "integrity": "sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==", "dev": true, "dependencies": { "source-map": "~0.6.0" @@ -5544,9 +5535,9 @@ } }, "node_modules/core-js": { - "version": "3.33.3", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.33.3.tgz", - "integrity": "sha512-lo0kOocUlLKmm6kv/FswQL8zbkH7mVsLJ/FULClOhv8WRVmKLVcs6XPNQAzstfeJTCHMyButEwG+z1kHxHoDZw==", + "version": "3.34.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.34.0.tgz", + "integrity": "sha512-aDdvlDder8QmY91H88GzNi9EtQi2TjvQhpCX6B1v/dAZHU1AuLgHvRh54RiOerpEhEW46Tkf+vgAViB/CWC0ag==", "dev": true, "hasInstallScript": true, "funding": { @@ -5555,12 +5546,12 @@ } }, "node_modules/core-js-compat": { - "version": "3.33.3", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.33.3.tgz", - "integrity": "sha512-cNzGqFsh3Ot+529GIXacjTJ7kegdt5fPXxCBVS1G0iaZpuo/tBz399ymceLJveQhFFZ8qThHiP3fzuoQjKN2ow==", + "version": "3.34.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.34.0.tgz", + "integrity": "sha512-4ZIyeNbW/Cn1wkMMDy+mvrRUxrwFNjKwbhCfQpDd+eLgYipDqp8oGFGtLmhh18EDPKA0g3VUBYOxQGGwvWLVpA==", "dev": true, "dependencies": { - "browserslist": "^4.22.1" + "browserslist": "^4.22.2" }, "funding": { "type": "opencollective", @@ -5709,9 +5700,9 @@ } }, "node_modules/csstype": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", - "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==" + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" }, "node_modules/cypress": { "version": "13.6.1", @@ -6433,9 +6424,9 @@ "dev": true }, "node_modules/electron-to-chromium": { - "version": "1.4.595", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.595.tgz", - "integrity": "sha512-+ozvXuamBhDOKvMNUQvecxfbyICmIAwS4GpLmR0bsiSBlGnLaOcs2Cj7J8XSbW+YEaN3Xl3ffgpm+srTUWFwFQ==", + "version": "1.4.607", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.607.tgz", + "integrity": "sha512-YUlnPwE6eYxzwBnFmawA8LiLRfm70R2aJRIUv0n03uHt/cUzzYACOogmvk8M2+hVzt/kB80KJXx7d5f5JofPvQ==", "dev": true }, "node_modules/emoji-regex": { @@ -9131,9 +9122,9 @@ }, "node_modules/html-webpack-plugin-5": { "name": "html-webpack-plugin", - "version": "5.5.3", - "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.5.3.tgz", - "integrity": "sha512-6YrDKTuqaP/TquFH7h4srYWsZx+x6k6+FbsTm0ziCwGHDP78Unr1r9F/H4+sGmMbX08GQcJ+K64x55b+7VM/jg==", + "version": "5.5.4", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.5.4.tgz", + "integrity": "sha512-3wNSaVVxdxcu0jd4FpQFoICdqgxs4zIQQvj+2yQKFfBOnLETQ6X5CDWdeasuGlSsooFlMkEioWDTqBv1wvw5Iw==", "dev": true, "dependencies": { "@types/html-minifier-terser": "^6.0.0", @@ -10152,9 +10143,9 @@ "dev": true }, "node_modules/istanbul-lib-coverage": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz", - "integrity": "sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg==", + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", "dev": true, "engines": { "node": ">=8" @@ -10204,15 +10195,6 @@ "node": ">=8" } }, - "node_modules/istanbul-lib-processinfo/node_modules/istanbul-lib-coverage": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", - "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/istanbul-lib-processinfo/node_modules/p-map": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", @@ -11607,9 +11589,9 @@ } }, "node_modules/node-releases": { - "version": "2.0.13", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", - "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==", + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", + "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", "dev": true }, "node_modules/normalize-path": { @@ -11829,13 +11811,13 @@ } }, "node_modules/object.assign": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", - "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", "has-symbols": "^1.0.3", "object-keys": "^1.1.1" }, @@ -12554,9 +12536,9 @@ } }, "node_modules/postcss": { - "version": "8.4.31", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", - "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", + "version": "8.4.32", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.32.tgz", + "integrity": "sha512-D/kj5JNu6oo2EIy+XL/26JEDTlIbB8hw85G8StOE6L74RQAVVP5rej6wxCNqyMbR4RkPfqvezVbPw81Ngd6Kcw==", "dev": true, "funding": [ { @@ -12573,7 +12555,7 @@ } ], "dependencies": { - "nanoid": "^3.3.6", + "nanoid": "^3.3.7", "picocolors": "^1.0.0", "source-map-js": "^1.0.2" }, @@ -14981,9 +14963,9 @@ } }, "node_modules/terser": { - "version": "5.24.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.24.0.tgz", - "integrity": "sha512-ZpGR4Hy3+wBEzVEnHvstMvqpD/nABNelQn/z2r0fjVWGQsN3bpOLzQlqDxmb4CDZnXq5lpjnQ+mHQLAOpfM5iw==", + "version": "5.26.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.26.0.tgz", + "integrity": "sha512-dytTGoE2oHgbNV9nTzgBEPaqAWvcJNl66VZ0BkJqlvp71IjO8CxdBx/ykCNb47cLnCmCvRZ6ZR0tLkqvZCdVBQ==", "dev": true, "dependencies": { "@jridgewell/source-map": "^0.3.3", @@ -15434,9 +15416,9 @@ } }, "node_modules/typescript": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.2.tgz", - "integrity": "sha512-6l+RyNy7oAHDfxC4FzSJcz9vnjTKxrLpDG5M2Vu4SHRVNg6xzqZp6LYSR9zjqQTu8DU/f5xwxUdADOkbrIX2gQ==", + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", + "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==", "dev": true, "peer": true, "bin": { diff --git a/webpack.config.js b/webpack.config.js index 725865bb..05d17de3 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -1,7 +1,6 @@ const path = require('path'); const MiniCssExtractPlugin = require('mini-css-extract-plugin'); const CopyWebpackPlugin = require('copy-webpack-plugin'); -const { EsbuildPlugin } = require('esbuild-loader'); const ESLintPlugin = require('eslint-webpack-plugin'); module.exports = { @@ -87,16 +86,8 @@ module.exports = { ], }, optimization: { - minimize: false, + minimize: true, }, - // optimization: { - // minimizer: [ - // new EsbuildPlugin({ - // target: 'es2015', - // css: true, - // }), - // ], - // }, plugins: [ new MiniCssExtractPlugin({ filename: '[name].css',